summaryrefslogtreecommitdiffstats
path: root/Modules/almodule.c
blob: 6621b9c024f31763f82dd5042738fac9441b5088 (plain)
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

#define OLD_INTERFACE		/* define for pre-Irix 6 interface */

#include "Python.h"
#include "stringobject.h"
#include <audio.h>
#include <stdarg.h>

#ifndef AL_NO_ELEM
#ifndef OLD_INTERFACE
#define OLD_INTERFACE
#endif /* OLD_INTERFACE */
#endif /* AL_NO_ELEM */

static PyObject *ErrorObject;

/* ----------------------------------------------------- */

/* Declarations for objects of type port */

typedef struct {
	PyObject_HEAD
	/* XXXX Add your own stuff here */
	ALport port;
} alpobject;

staticforward PyTypeObject Alptype;



/* ---------------------------------------------------------------- */

/* Declarations for objects of type config */

typedef struct {
	PyObject_HEAD
	/* XXXX Add your own stuff here */
	ALconfig config;
} alcobject;

staticforward PyTypeObject Alctype;


static void
ErrorHandler(long code, const char *fmt, ...)
{
	va_list args;
	char buf[128];

	va_start(args, fmt);
	vsprintf(buf, fmt, args);
	va_end(args);
	PyErr_SetString(ErrorObject, buf);
}

#ifdef AL_NO_ELEM		/* IRIX 6 */

static PyObject *
param2python(int resource, int param, ALvalue value, ALparamInfo *pinfo)
{
	ALparamInfo info;
	PyObject *v;

	if (pinfo == NULL) {
		pinfo = &info;
		if (alGetParamInfo(resource, param, &info) < 0)
			return NULL;
	}
	switch (pinfo->elementType) {
	case AL_PTR_ELEM:
		/* XXXX don't know how to handle this */
	case AL_NO_ELEM:
		Py_INCREF(Py_None);
		return Py_None;
	case AL_INT32_ELEM:
	case AL_RESOURCE_ELEM:
	case AL_ENUM_ELEM:
		return PyInt_FromLong((long) value.i);
	case AL_INT64_ELEM:
		return PyLong_FromLongLong(value.ll);
	case AL_FIXED_ELEM:
		return PyFloat_FromDouble(alFixedToDouble(value.ll));
	case AL_CHAR_ELEM:
		if (value.ptr == NULL) {
			Py_INCREF(Py_None);
			return Py_None;
		}
		return PyString_FromString((char *) value.ptr);
	default:
		PyErr_SetString(ErrorObject, "unknown element type");
		return NULL;
	}
}

static int
python2elem(PyObject *item, void *ptr, int elementType)
{
	switch (elementType) {
	case AL_INT32_ELEM:
	case AL_RESOURCE_ELEM:
	case AL_ENUM_ELEM:
		if (!PyInt_Check(item)) {
			PyErr_BadArgument();
			return -1;
		}
		*((int *) ptr) = PyInt_AsLong(item);
		break;
	case AL_INT64_ELEM:
		if (PyInt_Check(item))
			*((long long *) ptr) = PyInt_AsLong(item);
		else if (PyLong_Check(item))
			*((long long *) ptr) = PyLong_AsLongLong(item);
		else {
			PyErr_BadArgument();
			return -1;
		}
		break;
	case AL_FIXED_ELEM:
		if (PyInt_Check(item))
			*((long long *) ptr) = alDoubleToFixed((double) PyInt_AsLong(item));
		else if (PyFloat_Check(item))
			*((long long *) ptr) = alDoubleToFixed(PyFloat_AsDouble(item));
		else {
			PyErr_BadArgument();
			return -1;
		}
		break;
	default:
		PyErr_SetString(ErrorObject, "unknown element type");
		return -1;
	}
	return 0;
}

static int
python2param(int resource, ALpv *param, PyObject *value, ALparamInfo *pinfo)
{
	ALparamInfo info;
	int i, stepsize;
	PyObject *item;

	if (pinfo == NULL) {
		pinfo = &info;
		if (alGetParamInfo(resource, param->param, &info) < 0)
			return -1;
	}
	switch (pinfo->valueType) {
	case AL_STRING_VAL:
		if (pinfo->elementType != AL_CHAR_ELEM) {
			PyErr_SetString(ErrorObject, "unknown element type");
			return -1;
		}
		if (!PyString_Check(value)) {
			PyErr_BadArgument();
			return -1;
		}
		param->value.ptr = PyString_AS_STRING(value);
		param->sizeIn = PyString_GET_SIZE(value)+1; /*account for NUL*/
		break;
	case AL_SET_VAL:
	case AL_VECTOR_VAL:
		if (!PyList_Check(value) && !PyTuple_Check(value)) {
			PyErr_BadArgument();
			return -1;
		}
		switch (pinfo->elementType) {
		case AL_INT32_ELEM:
		case AL_RESOURCE_ELEM:
		case AL_ENUM_ELEM:
			param->sizeIn = PySequence_Size(value);
			param->value.ptr = PyMem_NEW(int, param->sizeIn);
			stepsize = sizeof(int);
			break;
		case AL_INT64_ELEM:
		case AL_FIXED_ELEM:
			param->sizeIn = PySequence_Size(value);
			param->value.ptr = PyMem_NEW(long long, param->sizeIn);
			stepsize = sizeof(long long);
			break;
		}
		for (i = 0; i < param->sizeIn; i++) {
			item = PySequence_GetItem(value, i);
			if (python2elem(item, (void *) ((char *) param->value.ptr + i*stepsize), pinfo->elementType) < 0) {
				PyMem_DEL(param->value.ptr);
				return -1;
			}
		}
		break;
	case AL_SCALAR_VAL:
		switch (pinfo->elementType) {
		case AL_INT32_ELEM:
		case AL_RESOURCE_ELEM:
		case AL_ENUM_ELEM:
			return python2elem(value, (void *) &param->value.i,
					   pinfo->elementType);
		case AL_INT64_ELEM:
		case AL_FIXED_ELEM:
			return python2elem(value, (void *) &param->value.ll,
					   pinfo->elementType);
		default:
			PyErr_SetString(ErrorObject, "unknown element type");
			return -1;
		}
	}
	return 0;
}

static int
python2params(int resource1, int resource2, PyObject *list, ALpv **pvsp, ALparamInfo **pinfop)
{
	PyObject *item;
	ALpv *pvs;
	ALparamInfo *pinfo;
	int npvs, i;

	npvs = PyList_Size(list);
	pvs = PyMem_NEW(ALpv, npvs);
	pinfo = PyMem_NEW(ALparamInfo, npvs);
	for (i = 0; i < npvs; i++) {
		item = PyList_GetItem(list, i);
		if (!PyArg_ParseTuple(item, "iO", &pvs[i].param, &item))
			goto error;
		if (alGetParamInfo(resource1, pvs[i].param, &pinfo[i]) < 0 &&
		    alGetParamInfo(resource2, pvs[i].param, &pinfo[i]) < 0)
			goto error;
		if (python2param(resource1, &pvs[i], item, &pinfo[i]) < 0)
			goto error;
	}

	*pvsp = pvs;
	*pinfop = pinfo;
	return npvs;

  error:
	/* XXXX we should clean up everything */
	if (pvs)
		PyMem_DEL(pvs);
	if (pinfo)
		PyMem_DEL(pinfo);
	return -1;
}

/* -------------------------------------------------------- */


static PyObject *
SetConfig(alcobject *self, PyObject *args, int (*func)(ALconfig, int))
{
	int par;

	if (!PyArg_ParseTuple(args, "i:SetConfig", &par))
		return NULL;

	if ((*func)(self->config, par) == -1)
		return NULL;

	Py_INCREF(Py_None);
	return Py_None;
}

static PyObject *
GetConfig(alcobject *self, PyObject *args, int (*func)(ALconfig))
{	
	int par;

	if (!PyArg_ParseTuple(args, ":GetConfig"))
		return NULL;
	
	if ((par = (*func)(self->config)) == -1)
		return NULL;

	return PyInt_FromLong((long) par);
}

static char alc_SetWidth__doc__[] = 
"alSetWidth: set the wordsize for integer audio data."
;

static PyObject *
alc_SetWidth(alcobject *self, PyObject *args)
{
	return SetConfig(self, args, alSetWidth);
}


static char alc_GetWidth__doc__[] = 
"alGetWidth: get the wordsize for integer audio data."
;

static PyObject *
alc_GetWidth(alcobject *self, PyObject *args)
{
	return GetConfig(self, args, alGetWidth);
}


static char alc_SetSampFmt__doc__[] = 
"alSetSampFmt: set the sample format setting in an audio ALconfig structure."
;

static PyObject *
alc_SetSampFmt(alcobject *self, PyObject *args)
{
	return SetConfig(self, args, alSetSampFmt);
}


static char alc_GetSampFmt__doc__[] = 
"alGetSampFmt: get the sample format setting in an audio ALconfig structure."
;

static PyObject *
alc_GetSampFmt(alcobject *self, PyObject *args)
{
	return GetConfig(self, args, alGetSampFmt);
}


static char alc_SetChannels__doc__[] = 
"alSetChannels: set the channel settings in an audio ALconfig."
;

static PyObject *
alc_SetChannels(alcobject *self, PyObject *args)
{
	return SetConfig(self, args, alSetChannels);
}


static char alc_GetChannels__doc__[] = 
"alGetChannels: get the channel settings in an audio ALconfig."
;

static PyObject *
alc_GetChannels(alcobject *self, PyObject *args)
{
	return GetConfig(self, args, alGetChannels);
}


static char alc_SetFloatMax__doc__[] = 
"alSetFloatMax: set the maximum value of floating point sample data."
;

static PyObject *
alc_SetFloatMax(alcobject *self, PyObject *args)
{
	double maximum_value;

	if (!PyArg_ParseTuple(args, "d:SetFloatMax", &maximum_value))
		return NULL;
	if (alSetFloatMax(self->config, maximum_value) < 0)
		return NULL;
	Py_INCREF(Py_None);
	return Py_None;
}


static char alc_GetFloatMax__doc__[] = 
"alGetFloatMax: get the maximum value of floating point sample data."
;

static PyObject *
alc_GetFloatMax(alcobject *self, PyObject *args)
{
	double maximum_value;

	if (!PyArg_ParseTuple(args, ":GetFloatMax"))
		return NULL;
	if ((maximum_value = alGetFloatMax(self->config)) == 0)
		return NULL;
	return PyFloat_FromDouble(maximum_value);
}


static char alc_SetDevice__doc__[] = 
"alSetDevice: set the device setting in an audio ALconfig structure."
;

static PyObject *
alc_SetDevice(alcobject *self, PyObject *args)
{
	return SetConfig(self, args, alSetDevice);
}


static char alc_GetDevice__doc__[] = 
"alGetDevice: get the device setting in an audio ALconfig structure."
;

static PyObject *
alc_GetDevice(alcobject *self, PyObject *args)
{
	return GetConfig(self, args, alGetDevice);
}


static char alc_SetQueueSize__doc__[] = 
"alSetQueueSize: set audio port buffer size."
;

static PyObject *
alc_SetQueueSize(alcobject *self, PyObject *args)
{
	return SetConfig(self, args, alSetQueueSize);
}


static char alc_GetQueueSize__doc__[] = 
"alGetQueueSize: get audio port buffer size."
;

static PyObject *
alc_GetQueueSize(alcobject *self, PyObject *args)
{
	return GetConfig(self, args, alGetQueueSize);
}

#endif /* AL_NO_ELEM */

static PyObject *
setconfig(alcobject *self, PyObject *args, int (*func)(ALconfig, long))
{
	long par;

	if (!PyArg_ParseTuple(args, "l:SetConfig", &par))
		return NULL;

	if ((*func)(self->config, par) == -1)
		return NULL;

	Py_INCREF(Py_None);
	return Py_None;
}

static PyObject *
getconfig(alcobject *self, PyObject *args, long (*func)(ALconfig))
{	
	long par;

	if (!PyArg_ParseTuple(args, ":GetConfig"))
		return NULL;
	
	if ((par = (*func)(self->config)) == -1)
		return NULL;

	return PyInt_FromLong((long) par);
}

static PyObject *
alc_setqueuesize (alcobject *self, PyObject *args)
{
	return setconfig(self, args, ALsetqueuesize);
}

static PyObject *
alc_getqueuesize (alcobject *self, PyObject *args)
{
	return getconfig(self, args, ALgetqueuesize);
}

static PyObject *
alc_setwidth (alcobject *self, PyObject *args)
{
	return setconfig(self, args, ALsetwidth);
}

static PyObject *
alc_getwidth (alcobject *self, PyObject *args)
{
	return getconfig(self, args, ALgetwidth);	
}

static PyObject *
alc_getchannels (alcobject *self, PyObject *args)
{
	return getconfig(self, args, ALgetchannels);	
}

static PyObject *
alc_setchannels (alcobject *self, PyObject *args)
{
	return setconfig(self, args, ALsetchannels);
}

#ifdef AL_405

static PyObject *
alc_getsampfmt (alcobject *self, PyObject *args)
{
	return getconfig(self, args, ALgetsampfmt);	
}

static PyObject *
alc_setsampfmt (alcobject *self, PyObject *args)
{
	return setconfig(self, args, ALsetsampfmt);
}

static PyObject *
alc_getfloatmax(alcobject *self, PyObject *args)
{
	double arg;

	if (!PyArg_ParseTuple(args, ":GetFloatMax"))
		return 0;
	if ((arg = ALgetfloatmax(self->config)) == 0)
		return NULL;
	return PyFloat_FromDouble(arg);
}

static PyObject *
alc_setfloatmax(alcobject *self, PyObject *args)
{
	double arg;

	if (!PyArg_ParseTuple(args, "d:SetFloatMax", &arg))
		return 0;
	if (ALsetfloatmax(self->config, arg) == -1)
		return NULL;
	Py_INCREF(Py_None);
	return Py_None;
}
#endif /* AL_405 */
	
static struct PyMethodDef alc_methods[] = {
#ifdef AL_NO_ELEM		/* IRIX 6 */
	{"SetWidth",	(PyCFunction)alc_SetWidth,	METH_VARARGS,	alc_SetWidth__doc__},
	{"GetWidth",	(PyCFunction)alc_GetWidth,	METH_VARARGS,	alc_GetWidth__doc__},
	{"SetSampFmt",	(PyCFunction)alc_SetSampFmt,	METH_VARARGS,	alc_SetSampFmt__doc__},
	{"GetSampFmt",	(PyCFunction)alc_GetSampFmt,	METH_VARARGS,	alc_GetSampFmt__doc__},
	{"SetChannels",	(PyCFunction)alc_SetChannels,	METH_VARARGS,	alc_SetChannels__doc__},
	{"GetChannels",	(PyCFunction)alc_GetChannels,	METH_VARARGS,	alc_GetChannels__doc__},
	{"SetFloatMax",	(PyCFunction)alc_SetFloatMax,	METH_VARARGS,	alc_SetFloatMax__doc__},
	{"GetFloatMax",	(PyCFunction)alc_GetFloatMax,	METH_VARARGS,	alc_GetFloatMax__doc__},
	{"SetDevice",	(PyCFunction)alc_SetDevice,	METH_VARARGS,	alc_SetDevice__doc__},
	{"GetDevice",	(PyCFunction)alc_GetDevice,	METH_VARARGS,	alc_GetDevice__doc__},
	{"SetQueueSize",	(PyCFunction)alc_SetQueueSize,	METH_VARARGS,	alc_SetQueueSize__doc__},
	{"GetQueueSize",	(PyCFunction)alc_GetQueueSize,	METH_VARARGS,	alc_GetQueueSize__doc__},
#endif /* AL_NO_ELEM */
	{"getqueuesize",	(PyCFunction)alc_getqueuesize,	METH_VARARGS},
	{"setqueuesize",	(PyCFunction)alc_setqueuesize,	METH_VARARGS},
	{"getwidth",		(PyCFunction)alc_getwidth,	METH_VARARGS},
	{"setwidth",		(PyCFunction)alc_setwidth,	METH_VARARGS},
	{"getchannels",		(PyCFunction)alc_getchannels,	METH_VARARGS},
	{"setchannels",		(PyCFunction)alc_setchannels,	METH_VARARGS},
#ifdef AL_405
	{"getsampfmt",		(PyCFunction)alc_getsampfmt,	METH_VARARGS},
	{"setsampfmt",		(PyCFunction)alc_setsampfmt,	METH_VARARGS},
	{"getfloatmax",		(PyCFunction)alc_getfloatmax,	METH_VARARGS},
	{"setfloatmax",		(PyCFunction)alc_setfloatmax,	METH_VARARGS},
#endif /* AL_405 */

	{NULL,		NULL}		/* sentinel */
};

/* ---------- */


static PyObject *
newalcobject(ALconfig config)
{
	alcobject *self;
	
	self = PyObject_New(alcobject, &Alctype);
	if (self == NULL)
		return NULL;
	/* XXXX Add your own initializers here */
	self->config = config;
	return (PyObject *) self;
}


static void
alc_dealloc(alcobject *self)
{
	/* XXXX Add your own cleanup code here */
#ifdef AL_NO_ELEM		/* IRIX 6 */
	(void) alFreeConfig(self->config);	/* ignore errors */
#else
	(void) ALfreeconfig(self->config);	/* ignore errors */
#endif
	PyObject_Del(self);
}

static PyObject *
alc_getattr(alcobject *self, char *name)
{
	/* XXXX Add your own getattr code here */
	return Py_FindMethod(alc_methods, (PyObject *)self, name);
}

static char Alctype__doc__[] = 
""
;

static PyTypeObject Alctype = {
	PyObject_HEAD_INIT(&PyType_Type)
	0,				/*ob_size*/
	"config",			/*tp_name*/
	sizeof(alcobject),		/*tp_basicsize*/
	0,				/*tp_itemsize*/
	/* methods */
	(destructor)alc_dealloc,	/*tp_dealloc*/
	(printfunc)0,		/*tp_print*/
	(getattrfunc)alc_getattr,	/*tp_getattr*/
	(setattrfunc)0,	/*tp_setattr*/
	(cmpfunc)0,		/*tp_compare*/
	(reprfunc)0,		/*tp_repr*/
	0,			/*tp_as_number*/
	0,		/*tp_as_sequence*/
	0,		/*tp_as_mapping*/
	(hashfunc)0,		/*tp_hash*/
	(ternaryfunc)0,		/*tp_call*/
	(reprfunc)0,		/*tp_str*/

	/* Space for future expansion */
	0L,0L,0L,0L,
	Alctype__doc__ /* Documentation string */
};

/* End of code for config objects */
/* ---------------------------------------------------------------- */

#ifdef AL_NO_ELEM		/* IRIX 6 */

static char alp_SetConfig__doc__[] = 
"alSetConfig: set the ALconfig of an audio ALport."
;

static PyObject *
alp_SetConfig(alpobject *self, PyObject *args)
{
	alcobject *config;
	if (!PyArg_ParseTuple(args, "O!:SetConfig", &Alctype, &config))
		return NULL;
	if (alSetConfig(self->port, config->config) < 0)
		return NULL;
	Py_INCREF(Py_None);
	return Py_None;
}


static char alp_GetConfig__doc__[] = 
"alGetConfig: get the ALconfig of an audio ALport."
;

static PyObject *
alp_GetConfig(alpobject *self, PyObject *args)
{
	ALconfig config;
	if (!PyArg_ParseTuple(args, ":GetConfig"))
		return NULL;
	if ((config = alGetConfig(self->port)) == NULL)
		return NULL;
	return newalcobject(config);
}


static char alp_GetResource__doc__[] = 
"alGetResource: get the resource associated with an audio port."
;

static PyObject *
alp_GetResource(alpobject *self, PyObject *args)
{
	int resource;

	if (!PyArg_ParseTuple(args, ":GetResource"))
		return NULL;
	if ((resource = alGetResource(self->port)) == 0)
		return NULL;
	return PyInt_FromLong((long) resource);
}


static char alp_GetFD__doc__[] = 
"alGetFD: get the file descriptor for an audio port."
;

static PyObject *
alp_GetFD(alpobject *self, PyObject *args)
{
	int fd;

	if (!PyArg_ParseTuple(args, ":GetFD"))
		return NULL;

	if ((fd = alGetFD(self->port)) < 0)
		return NULL;

	return PyInt_FromLong((long) fd);
}


static char alp_GetFilled__doc__[] = 
"alGetFilled: return the number of filled sample frames in an audio port."
;

static PyObject *
alp_GetFilled(alpobject *self, PyObject *args)
{
	int filled;

	if (!PyArg_ParseTuple(args, ":GetFilled"))
		return NULL;
	if ((filled = alGetFilled(self->port)) < 0)
		return NULL;
	return PyInt_FromLong((long) filled);
}


static char alp_GetFillable__doc__[] = 
"alGetFillable: report the number of unfilled sample frames in an audio port."
;

static PyObject *
alp_GetFillable(alpobject *self, PyObject *args)
{
	int fillable;

	if (!PyArg_ParseTuple(args, ":GetFillable"))
		return NULL;
	if ((fillable = alGetFillable(self->port)) < 0)
		return NULL;
	return PyInt_FromLong((long) fillable);
}


static char alp_ReadFrames__doc__[] = 
"alReadFrames: read sample frames from an audio port."
;

static PyObject *
alp_ReadFrames(alpobject *self, PyObject *args)
{
	void *samples;
	int framecount;
	PyObject *v;
	int size;
	int ch;
	ALconfig c;

	if (!PyArg_ParseTuple(args, "i:ReadFrames", &framecount))
		return NULL;
	if (framecount < 0) {
		PyErr_SetString(ErrorObject, "negative framecount");
		return NULL;
	}
	c = alGetConfig(self->port);
	switch (alGetSampFmt(c)) {
	case AL_SAMPFMT_TWOSCOMP:
		switch (alGetWidth(c)) {
		case AL_SAMPLE_8:
			size = 1;
			break;
		case AL_SAMPLE_16:
			size = 2;
			break;
		case AL_SAMPLE_24:
			size = 4;
			break;
		default:
			PyErr_SetString(ErrorObject, "can't determine width");
			alFreeConfig(c);
			return NULL;
		}
		break;
	case AL_SAMPFMT_FLOAT:
		size = 4;
		break;
	case AL_SAMPFMT_DOUBLE:
		size = 8;
		break;
	default:
		PyErr_SetString(ErrorObject, "can't determine format");
		alFreeConfig(c);
		return NULL;
	}
	ch = alGetChannels(c);
	alFreeConfig(c);
	if (ch < 0) {
		PyErr_SetString(ErrorObject, "can't determine # of channels");
		return NULL;
	}
	size *= ch;
	v = PyString_FromStringAndSize((char *) NULL, size * framecount);
	if (v == NULL)
		return NULL;

	Py_BEGIN_ALLOW_THREADS
	alReadFrames(self->port, (void *) PyString_AS_STRING(v), framecount);
	Py_END_ALLOW_THREADS

	return v;
}


static char alp_DiscardFrames__doc__[] = 
"alDiscardFrames: discard audio from an audio port."
;

static PyObject *
alp_DiscardFrames(alpobject *self, PyObject *args)
{
	int framecount;

	if (!PyArg_ParseTuple(args, "i:DiscardFrames", &framecount))
		return NULL;

	Py_BEGIN_ALLOW_THREADS
	framecount = alDiscardFrames(self->port, framecount);
	Py_END_ALLOW_THREADS

	if (framecount < 0)
		return NULL;

	return PyInt_FromLong((long) framecount);
}


static char alp_ZeroFrames__doc__[] = 
"alZeroFrames: write zero-valued sample frames to an audio port."
;

static PyObject *
alp_ZeroFrames(alpobject *self, PyObject *args)
{
	int framecount;

	if (!PyArg_ParseTuple(args, "i:ZeroFrames", &framecount))
		return NULL;

	if (framecount < 0) {
		PyErr_SetString(ErrorObject, "negative framecount");
		return NULL;
	}

	Py_BEGIN_ALLOW_THREADS
	alZeroFrames(self->port, framecount);
	Py_END_ALLOW_THREADS

	Py_INCREF(Py_None);
	return Py_None;
}


static char alp_SetFillPoint__doc__[] = 
"alSetFillPoint: set low- or high-water mark for an audio port."
;

static PyObject *
alp_SetFillPoint(alpobject *self, PyObject *args)
{
	int fillpoint;

	if (!PyArg_ParseTuple(args, "i:SetFillPoint", &fillpoint))
		return NULL;

	if (alSetFillPoint(self->port, fillpoint) < 0)
		return NULL;

	Py_INCREF(Py_None);
	return Py_None;
}


static char alp_GetFillPoint__doc__[] = 
"alGetFillPoint: get low- or high-water mark for an audio port."
;

static PyObject *
alp_GetFillPoint(alpobject *self, PyObject *args)
{
	int fillpoint;

	if (!PyArg_ParseTuple(args, ":GetFillPoint"))
		return NULL;

	if ((fillpoint = alGetFillPoint(self->port)) < 0)
		return NULL;

	return PyInt_FromLong((long) fillpoint);
}


static char alp_GetFrameNumber__doc__[] = 
"alGetFrameNumber: get the absolute sample frame number associated with a port."
;

static PyObject *
alp_GetFrameNumber(alpobject *self, PyObject *args)
{
	stamp_t fnum;

	if (!PyArg_ParseTuple(args, ":GetFrameNumber"))
		return NULL;

	if (alGetFrameNumber(self->port, &fnum) < 0)
		return NULL;

	return PyLong_FromLongLong((long long) fnum);
}


static char alp_GetFrameTime__doc__[] = 
"alGetFrameTime: get the time at which a sample frame came in or will go out."
;

static PyObject *
alp_GetFrameTime(alpobject *self, PyObject *args)
{
	stamp_t fnum, time;
	PyObject *ret, *v0, *v1;

	if (!PyArg_ParseTuple(args, ":GetFrameTime"))
		return NULL;
	if (alGetFrameTime(self->port, &fnum, &time) < 0)
		return NULL;
	v0 = PyLong_FromLongLong((long long) fnum);
	v1 = PyLong_FromLongLong((long long) time);
	if (PyErr_Occurred()) {
		Py_XDECREF(v0);
		Py_XDECREF(v1);
		return NULL;
	}
	ret = Py_BuildValue("(OO)", v0, v1);
	Py_DECREF(v0);
	Py_DECREF(v1);
	return ret;
}


static char alp_WriteFrames__doc__[] = 
"alWriteFrames: write sample frames to an audio port."
;

static PyObject *
alp_WriteFrames(alpobject *self, PyObject *args)
{
	char *samples;
	int length;
	int size, ch;
	ALconfig c;

	if (!PyArg_ParseTuple(args, "s#:WriteFrames", &samples, &length))
		return NULL;
	c = alGetConfig(self->port);
	switch (alGetSampFmt(c)) {
	case AL_SAMPFMT_TWOSCOMP:
		switch (alGetWidth(c)) {
		case AL_SAMPLE_8:
			size = 1;
			break;
		case AL_SAMPLE_16:
			size = 2;
			break;
		case AL_SAMPLE_24:
			size = 4;
			break;
		default:
			PyErr_SetString(ErrorObject, "can't determine width");
			alFreeConfig(c);
			return NULL;
		}
		break;
	case AL_SAMPFMT_FLOAT:
		size = 4;
		break;
	case AL_SAMPFMT_DOUBLE:
		size = 8;
		break;
	default:
		PyErr_SetString(ErrorObject, "can't determine format");
		alFreeConfig(c);
		return NULL;
	}
	ch = alGetChannels(c);
	alFreeConfig(c);
	if (ch < 0) {
		PyErr_SetString(ErrorObject, "can't determine # of channels");
		return NULL;
	}
	size *= ch;
	if (length % size != 0) {
		PyErr_SetString(ErrorObject,
				"buffer length not whole number of frames");
		return NULL;
	}

	Py_BEGIN_ALLOW_THREADS
	alWriteFrames(self->port, (void *) samples, length / size);
	Py_END_ALLOW_THREADS

	Py_INCREF(Py_None);
	return Py_None;
}


static char alp_ClosePort__doc__[] = 
"alClosePort: close an audio port."
;

static PyObject *
alp_ClosePort(alpobject *self, PyObject *args)
{
	if (!PyArg_ParseTuple(args, ":ClosePort"))
		return NULL;
	if (alClosePort(self->port) < 0)
		return NULL;
	self->port = NULL;
	Py_INCREF(Py_None);
	return Py_None;
}

#endif /* AL_NO_ELEM */

#ifdef OLD_INTERFACE
static PyObject *
alp_closeport(alpobject *self, PyObject *args)
{
	if (!PyArg_ParseTuple(args, ":ClosePort"))
		return NULL;
	if (ALcloseport(self->port) < 0)
		return NULL;
	self->port = NULL;
	Py_INCREF(Py_None);
	return Py_None;
}

static PyObject *
alp_getfd(alpobject *self, PyObject *args)
{
	int fd;

	if (!PyArg_ParseTuple(args, ":GetFD"))
		return NULL;
	if ((fd = ALgetfd(self-> port)) == -1)
		return NULL;
	return PyInt_FromLong(fd);
}

static PyObject *
alp_getfilled(alpobject *self, PyObject *args)
{
	long count;

	if (!PyArg_ParseTuple(args, ":GetFilled"))
		return NULL;
	if ((count = ALgetfilled(self-> port)) == -1)
		return NULL;
	return PyInt_FromLong(count);
}

static PyObject *
alp_getfillable(alpobject *self, PyObject *args)
{
	long count;

	if (!PyArg_ParseTuple(args, ":GetFillable"))
		return NULL;
	if ((count = ALgetfillable(self-> port)) == -1)
		return NULL;
	return PyInt_FromLong (count);
}

static PyObject *
alp_readsamps(alpobject *self, PyObject *args)
{
	long count;
	PyObject *v;
	ALconfig c;
	int width;
	int ret;

	if (!PyArg_ParseTuple(args, "l:readsamps", &count))
		return NULL;

	if (count <= 0) {
		PyErr_SetString(ErrorObject, "al.readsamps : arg <= 0");
		return NULL;
	}

	c = ALgetconfig(self->port);
#ifdef AL_405
	width = ALgetsampfmt(c);
	if (width == AL_SAMPFMT_FLOAT)
		width = sizeof(float);
	else if (width == AL_SAMPFMT_DOUBLE)
		width = sizeof(double);
	else
		width = ALgetwidth(c);
#else
	width = ALgetwidth(c);
#endif /* AL_405 */
	ALfreeconfig(c);
	v = PyString_FromStringAndSize((char *)NULL, width * count);
	if (v == NULL)
		return NULL;

	Py_BEGIN_ALLOW_THREADS
	ret = ALreadsamps(self->port, (void *) PyString_AsString(v), count);
	Py_END_ALLOW_THREADS
	if (ret == -1) {
		Py_DECREF(v);
		return NULL;
	}

	return (v);
}

static PyObject *
alp_writesamps(alpobject *self, PyObject *args)
{
	char *buf;
	int size, width;
	ALconfig c;
	int ret;

	if (!PyArg_ParseTuple(args, "s#:writesamps", &buf, &size))
		return NULL;

	c = ALgetconfig(self->port);
#ifdef AL_405
	width = ALgetsampfmt(c);
	if (width == AL_SAMPFMT_FLOAT)
		width = sizeof(float);
	else if (width == AL_SAMPFMT_DOUBLE)
		width = sizeof(double);
	else
		width = ALgetwidth(c);
#else
	width = ALgetwidth(c);
#endif /* AL_405 */
	ALfreeconfig(c);
	Py_BEGIN_ALLOW_THREADS
	ret = ALwritesamps (self->port, (void *) buf, (long) size / width);
	Py_END_ALLOW_THREADS
	if (ret == -1)
		return NULL;

	Py_INCREF(Py_None);
	return Py_None;
}

static PyObject *
alp_getfillpoint(alpobject *self, PyObject *args)
{
	long count;

	if (!PyArg_ParseTuple(args, ":GetFillPoint"))
		return NULL;
	if ((count = ALgetfillpoint(self->port)) == -1)
		return NULL;
	return PyInt_FromLong(count);
}

static PyObject *
alp_setfillpoint(alpobject *self, PyObject *args)
{
	long count;

	if (!PyArg_ParseTuple(args, "l:SetFillPoint", &count))
		return NULL;
	if (ALsetfillpoint(self->port, count) == -1)
		return NULL;
	Py_INCREF(Py_None);
	return Py_None;
}

static PyObject *
alp_setconfig(alpobject *self, PyObject *args)
{
	alcobject *config;

	if (!PyArg_ParseTuple(args, "O!:SetConfig", &Alctype, &config))
		return NULL;
	if (ALsetconfig(self->port, config->config) == -1)
		return NULL;
	Py_INCREF(Py_None);
	return Py_None;
}

static PyObject *
alp_getconfig(alpobject *self, PyObject *args)
{
	ALconfig config;

	if (!PyArg_ParseTuple(args, ":GetConfig"))
		return NULL;
	config = ALgetconfig(self->port);
	if (config == NULL)
		return NULL;
	return newalcobject(config);
}

#ifdef AL_405
static PyObject *
alp_getstatus(alpobject *self, PyObject *args)
{
	PyObject *list, *v;
	long *PVbuffer;
	long length;
	int i;
	
	if (!PyArg_Parse(args, "O!", &PyList_Type, &list))
		return NULL;
	length = PyList_Size(list);
	PVbuffer = PyMem_NEW(long, length);
	if (PVbuffer == NULL)
		return PyErr_NoMemory();
	for (i = 0; i < length; i++) {
		v = PyList_GetItem(list, i);
		if (!PyInt_Check(v)) {
			PyMem_DEL(PVbuffer);
			PyErr_BadArgument();
			return NULL;
		}
		PVbuffer[i] = PyInt_AsLong(v);
	}

	if (ALgetstatus(self->port, PVbuffer, length) == -1)
		return NULL;

	for (i = 0; i < length; i++)
		PyList_SetItem(list, i, PyInt_FromLong(PVbuffer[i]));

	PyMem_DEL(PVbuffer);

	Py_INCREF(Py_None);
	return Py_None;
}
#endif /* AL_405 */

#endif /* OLD_INTERFACE */

static struct PyMethodDef alp_methods[] = {
#ifdef AL_NO_ELEM		/* IRIX 6 */
	{"SetConfig",	(PyCFunction)alp_SetConfig,	METH_VARARGS,	alp_SetConfig__doc__},
	{"GetConfig",	(PyCFunction)alp_GetConfig,	METH_VARARGS,	alp_GetConfig__doc__},
	{"GetResource",	(PyCFunction)alp_GetResource,	METH_VARARGS,	alp_GetResource__doc__},
	{"GetFD",	(PyCFunction)alp_GetFD,	METH_VARARGS,	alp_GetFD__doc__},
	{"GetFilled",	(PyCFunction)alp_GetFilled,	METH_VARARGS,	alp_GetFilled__doc__},
	{"GetFillable",	(PyCFunction)alp_GetFillable,	METH_VARARGS,	alp_GetFillable__doc__},
	{"ReadFrames",	(PyCFunction)alp_ReadFrames,	METH_VARARGS,	alp_ReadFrames__doc__},
	{"DiscardFrames",	(PyCFunction)alp_DiscardFrames,	METH_VARARGS,	alp_DiscardFrames__doc__},
	{"ZeroFrames",	(PyCFunction)alp_ZeroFrames,	METH_VARARGS,	alp_ZeroFrames__doc__},
	{"SetFillPoint",	(PyCFunction)alp_SetFillPoint,	METH_VARARGS,	alp_SetFillPoint__doc__},
	{"GetFillPoint",	(PyCFunction)alp_GetFillPoint,	METH_VARARGS,	alp_GetFillPoint__doc__},
	{"GetFrameNumber",	(PyCFunction)alp_GetFrameNumber,	METH_VARARGS,	alp_GetFrameNumber__doc__},
	{"GetFrameTime",	(PyCFunction)alp_GetFrameTime,	METH_VARARGS,	alp_GetFrameTime__doc__},
	{"WriteFrames",	(PyCFunction)alp_WriteFrames,	METH_VARARGS,	alp_WriteFrames__doc__},
	{"ClosePort",	(PyCFunction)alp_ClosePort,	METH_VARARGS,	alp_ClosePort__doc__},
#endif /* AL_NO_ELEM */
#ifdef OLD_INTERFACE
	{"closeport",		(PyCFunction)alp_closeport,	METH_VARARGS},
	{"getfd",		(PyCFunction)alp_getfd,	METH_VARARGS},
        {"fileno",		(PyCFunction)alp_getfd,	METH_VARARGS},
	{"getfilled",		(PyCFunction)alp_getfilled,	METH_VARARGS},
	{"getfillable",		(PyCFunction)alp_getfillable,	METH_VARARGS},
	{"readsamps",		(PyCFunction)alp_readsamps,	METH_VARARGS},
	{"writesamps",		(PyCFunction)alp_writesamps,	METH_VARARGS},
	{"setfillpoint",	(PyCFunction)alp_setfillpoint,	METH_VARARGS},
	{"getfillpoint",	(PyCFunction)alp_getfillpoint,	METH_VARARGS},
	{"setconfig",		(PyCFunction)alp_setconfig,	METH_VARARGS},
	{"getconfig",		(PyCFunction)alp_getconfig,	METH_VARARGS},
#ifdef AL_405
	{"getstatus",		(PyCFunction)alp_getstatus,	METH_VARARGS},
#endif /* AL_405 */	    
#endif /* OLD_INTERFACE */
 
	{NULL,		NULL}		/* sentinel */
};

/* ---------- */


static PyObject *
newalpobject(ALport port)
{
	alpobject *self;
	
	self = PyObject_New(alpobject, &Alptype);
	if (self == NULL)
		return NULL;
	/* XXXX Add your own initializers here */
	self->port = port;
	return (PyObject *) self;
}


static void
alp_dealloc(alpobject *self)
{
	/* XXXX Add your own cleanup code here */
	if (self->port) {
#ifdef AL_NO_ELEM		/* IRIX 6 */
		alClosePort(self->port);
#else
		ALcloseport(self->port);
#endif
	}
	PyObject_Del(self);
}

static PyObject *
alp_getattr(alpobject *self, char *name)
{
	/* XXXX Add your own getattr code here */
	if (self->port == NULL) {
		PyErr_SetString(ErrorObject, "port already closed");
		return NULL;
	}
	return Py_FindMethod(alp_methods, (PyObject *)self, name);
}

static char Alptype__doc__[] = 
""
;

static PyTypeObject Alptype = {
	PyObject_HEAD_INIT(&PyType_Type)
	0,				/*ob_size*/
	"port",			/*tp_name*/
	sizeof(alpobject),		/*tp_basicsize*/
	0,				/*tp_itemsize*/
	/* methods */
	(destructor)alp_dealloc,	/*tp_dealloc*/
	(printfunc)0,		/*tp_print*/
	(getattrfunc)alp_getattr,	/*tp_getattr*/
	(setattrfunc)0,	/*tp_setattr*/
	(cmpfunc)0,		/*tp_compare*/
	(reprfunc)0,		/*tp_repr*/
	0,			/*tp_as_number*/
	0,		/*tp_as_sequence*/
	0,		/*tp_as_mapping*/
	(hashfunc)0,		/*tp_hash*/
	(ternaryfunc)0,		/*tp_call*/
	(reprfunc)0,		/*tp_str*/

	/* Space for future expansion */
	0L,0L,0L,0L,
	Alptype__doc__ /* Documentation string */
};

/* End of code for port objects */
/* -------------------------------------------------------- */


#ifdef AL_NO_ELEM		/* IRIX 6 */

static char al_NewConfig__doc__[] =
"alNewConfig: create and initialize an audio ALconfig structure."
;

static PyObject *
al_NewConfig(PyObject *self, PyObject *args)
{
	ALconfig config;

	if (!PyArg_ParseTuple(args, ":NewConfig"))
		return NULL;
	if ((config = alNewConfig()) == NULL)
		return NULL;
	return newalcobject(config);
}

static char al_OpenPort__doc__[] =
"alOpenPort: open an audio port."
;

static PyObject *
al_OpenPort(PyObject *self, PyObject *args)
{
	ALport port;
	char *name, *dir;
	alcobject *config = NULL;

	if (!PyArg_ParseTuple(args, "ss|O!:OpenPort", &name, &dir, &Alctype, &config))
		return NULL;
	if ((port = alOpenPort(name, dir, config ? config->config : NULL)) == NULL)
		return NULL;
	return newalpobject(port);
}

static char al_Connect__doc__[] =
"alConnect: connect two audio I/O resources."
;

static PyObject *
al_Connect(PyObject *self, PyObject *args)
{
	int source, dest, nprops = 0, id, i;
	ALpv *props = NULL;
	ALparamInfo *propinfo = NULL;
	PyObject *propobj = NULL;

	if (!PyArg_ParseTuple(args, "ii|O!:Connect", &source, &dest, &PyList_Type, &propobj))
		return NULL;
	if (propobj != NULL) {
		nprops = python2params(source, dest, propobj, &props, &propinfo);
		if (nprops < 0)
			return NULL;
	}

	id = alConnect(source, dest, props, nprops);

	if (props) {
		for (i = 0; i < nprops; i++) {
			switch (propinfo[i].valueType) {
			case AL_SET_VAL:
			case AL_VECTOR_VAL:
				PyMem_DEL(props[i].value.ptr);
				break;
			}
		}
		PyMem_DEL(props);
		PyMem_DEL(propinfo);
	}

	if (id < 0)
		return NULL;
	return PyInt_FromLong((long) id);
}

static char al_Disconnect__doc__[] =
"alDisconnect: delete a connection between two audio I/O resources."
;

static PyObject *
al_Disconnect(PyObject *self, PyObject *args)
{
	int res;

	if (!PyArg_ParseTuple(args, "i:Disconnect", &res))
		return NULL;
	if (alDisconnect(res) < 0)
		return NULL;
	Py_INCREF(Py_None);
	return Py_None;
}

static char al_GetParams__doc__[] =
"alGetParams: get the values of audio resource parameters."
;

static PyObject *
al_GetParams(PyObject *self, PyObject *args)
{
	int resource;
	PyObject *pvslist, *item = NULL, *v = NULL;
	ALpv *pvs;
	int i, j, npvs;
	ALparamInfo *pinfo;

	if (!PyArg_ParseTuple(args, "iO!:GetParams", &resource, &PyList_Type, &pvslist))
		return NULL;
	npvs = PyList_Size(pvslist);
	pvs = PyMem_NEW(ALpv, npvs);
	pinfo = PyMem_NEW(ALparamInfo, npvs);
	for (i = 0; i < npvs; i++) {
		item = PyList_GetItem(pvslist, i);
		if (!PyInt_Check(item)) {
			item = NULL;
			PyErr_SetString(ErrorObject, "list of integers expected");
			goto error;
		}
		pvs[i].param = (int) PyInt_AsLong(item);
		item = NULL;	/* not needed anymore */
		if (alGetParamInfo(resource, pvs[i].param, &pinfo[i]) < 0)
			goto error;
		switch (pinfo[i].valueType) {
		case AL_NO_VAL:
			break;
		case AL_MATRIX_VAL:
			pinfo[i].maxElems *= pinfo[i].maxElems2;
			/* fall through */
		case AL_STRING_VAL:
		case AL_SET_VAL:
		case AL_VECTOR_VAL:
			switch (pinfo[i].elementType) {
			case AL_INT32_ELEM:
			case AL_RESOURCE_ELEM:
			case AL_ENUM_ELEM:
				pvs[i].value.ptr = PyMem_NEW(int, pinfo[i].maxElems);
				pvs[i].sizeIn = pinfo[i].maxElems;
				break;
			case AL_INT64_ELEM:
			case AL_FIXED_ELEM:
				pvs[i].value.ptr = PyMem_NEW(long long, pinfo[i].maxElems);
				pvs[i].sizeIn = pinfo[i].maxElems;
				break;
			case AL_CHAR_ELEM:
				pvs[i].value.ptr = PyMem_NEW(char, 32);
				pvs[i].sizeIn = 32;
				break;
			case AL_NO_ELEM:
			case AL_PTR_ELEM:
			default:
				PyErr_SetString(ErrorObject, "internal error");
				goto error;
			}
			break;
		case AL_SCALAR_VAL:
			break;
		default:
			PyErr_SetString(ErrorObject, "internal error");
			goto error;
		}
		if (pinfo[i].valueType == AL_MATRIX_VAL) {
			pinfo[i].maxElems /= pinfo[i].maxElems2;
			pvs[i].sizeIn /= pinfo[i].maxElems2;
			pvs[i].size2In = pinfo[i].maxElems2;
		}
	}
	if (alGetParams(resource, pvs, npvs) < 0)
		goto error;
	v = PyList_New(npvs);
	for (i = 0; i < npvs; i++) {
		if (pvs[i].sizeOut < 0) {
			char buf[32];
			sprintf(buf, "problem with param %d", i);
			PyErr_SetString(ErrorObject, buf);
			goto error;
		}
		switch (pinfo[i].valueType) {
		case AL_NO_VAL:
			item = Py_None;
			Py_INCREF(item);
			break;
		case AL_STRING_VAL:
			item = PyString_FromString(pvs[i].value.ptr);
			PyMem_DEL(pvs[i].value.ptr);
			break;
		case AL_MATRIX_VAL:
			/* XXXX this is not right */
			pvs[i].sizeOut *= pvs[i].size2Out;
			/* fall through */
		case AL_SET_VAL:
		case AL_VECTOR_VAL:
			item = PyList_New(pvs[i].sizeOut);
			for (j = 0; j < pvs[i].sizeOut; j++) {
				switch (pinfo[i].elementType) {
				case AL_INT32_ELEM:
				case AL_RESOURCE_ELEM:
				case AL_ENUM_ELEM:
					PyList_SetItem(item, j, PyInt_FromLong((long) ((int *) pvs[i].value.ptr)[j]));
					break;
				case AL_INT64_ELEM:
					PyList_SetItem(item, j, PyLong_FromLongLong(((long long *) pvs[i].value.ptr)[j]));
					break;
				case AL_FIXED_ELEM:
					PyList_SetItem(item, j, PyFloat_FromDouble(alFixedToDouble(((long long *) pvs[i].value.ptr)[j])));
					break;
				default:
					PyErr_SetString(ErrorObject, "internal error");
					goto error;
				}
			}
			PyMem_DEL(pvs[i].value.ptr);
			break;
		case AL_SCALAR_VAL:
			item = param2python(resource, pvs[i].param, pvs[i].value, &pinfo[i]);
			break;
		}
		if (PyErr_Occurred() ||
		    PyList_SetItem(v, i, Py_BuildValue("(iO)", pvs[i].param,
						       item)) < 0 ||
		    PyErr_Occurred())
			goto error;
		Py_DECREF(item);
	}
	PyMem_DEL(pvs);
	PyMem_DEL(pinfo);
	return v;

  error:
	Py_XDECREF(v);
	Py_XDECREF(item);
	if (pvs)
		PyMem_DEL(pvs);
	if (pinfo)
		PyMem_DEL(pinfo);
	return NULL;
}

static char al_SetParams__doc__[] =
"alSetParams: set the values of audio resource parameters."
;

static PyObject *
al_SetParams(PyObject *self, PyObject *args)
{
	int resource;
	PyObject *pvslist, *item;
	ALpv *pvs;
	ALparamInfo *pinfo;
	int npvs, i;

	if (!PyArg_ParseTuple(args, "iO!:SetParams", &resource, &PyList_Type, &pvslist))
		return NULL;
	npvs = python2params(resource, -1, pvslist, &pvs, &pinfo);
	if (npvs < 0)
		return NULL;

	if (alSetParams(resource, pvs, npvs) < 0)
		goto error;

	/* cleanup */
	for (i = 0; i < npvs; i++) {
		switch (pinfo[i].valueType) {
		case AL_SET_VAL:
		case AL_VECTOR_VAL:
			PyMem_DEL(pvs[i].value.ptr);
			break;
		}
	}
	PyMem_DEL(pvs);
	PyMem_DEL(pinfo);

	Py_INCREF(Py_None);
	return Py_None;

  error:
	/* XXXX we should clean up everything */
	if (pvs)
		PyMem_DEL(pvs);
	if (pinfo)
		PyMem_DEL(pinfo);
	return NULL;
}

static char al_QueryValues__doc__[] =
"alQueryValues: get the set of possible values for a parameter."
;

static PyObject *
al_QueryValues(PyObject *self, PyObject *args)
{
	int resource, param;
	ALvalue *return_set = NULL;
	int setsize = 32, qualsize = 0, nvals, i;
	ALpv *quals = NULL;
	ALparamInfo pinfo;
	ALparamInfo *qualinfo = NULL;
	PyObject *qualobj = NULL;
	PyObject *res = NULL, *item;

	if (!PyArg_ParseTuple(args, "ii|O!:QueryValues", &resource, &param,
			      &PyList_Type, &qualobj))
		return NULL;
	if (qualobj != NULL) {
		qualsize = python2params(resource, param, qualobj, &quals, &qualinfo);
		if (qualsize < 0)
			return NULL;
	}
	setsize = 32;
	return_set = PyMem_NEW(ALvalue, setsize);
	if (return_set == NULL) {
		PyErr_NoMemory();
		goto cleanup;
	}

  retry:
	nvals = alQueryValues(resource, param, return_set, setsize, quals, qualsize);
	if (nvals < 0)
		goto cleanup;
	if (nvals > setsize) {
		setsize = nvals;
		PyMem_RESIZE(return_set, ALvalue, setsize);
		if (return_set == NULL) {
			PyErr_NoMemory();
			goto cleanup;
		}
		goto retry;
	}

	if (alGetParamInfo(resource, param, &pinfo) < 0)
		goto cleanup;

	res = PyList_New(nvals);
	if (res == NULL)
		goto cleanup;
	for (i = 0; i < nvals; i++) {
		item = param2python(resource, param, return_set[i], &pinfo);
		if (item == NULL ||
		    PyList_SetItem(res, i, item) < 0) {
			Py_DECREF(res);
			res = NULL;
			goto cleanup;
		}
	}

  cleanup:
	if (return_set)
		PyMem_DEL(return_set);
	if (quals) {
		for (i = 0; i < qualsize; i++) {
			switch (qualinfo[i].valueType) {
			case AL_SET_VAL:
			case AL_VECTOR_VAL:
				PyMem_DEL(quals[i].value.ptr);
				break;
			}
		}
		PyMem_DEL(quals);
		PyMem_DEL(qualinfo);
	}

	return res;
}

static char al_GetParamInfo__doc__[] =
"alGetParamInfo: get information about a parameter on a particular audio resource."
;

static PyObject *
al_GetParamInfo(PyObject *self, PyObject *args)
{
	int res, param;
	ALparamInfo pinfo;
	PyObject *v, *item;;

	if (!PyArg_ParseTuple(args, "ii:GetParamInfo", &res, &param))
		return NULL;
	if (alGetParamInfo(res, param, &pinfo) < 0)
		return NULL;
	v = PyDict_New();

	item = PyInt_FromLong((long) pinfo.resource);
	PyDict_SetItemString(v, "resource", item);
	Py_DECREF(item);

	item = PyInt_FromLong((long) pinfo.param);
	PyDict_SetItemString(v, "param", item);
	Py_DECREF(item);

	item = PyInt_FromLong((long) pinfo.valueType);
	PyDict_SetItemString(v, "valueType", item);
	Py_DECREF(item);

	if (pinfo.valueType != AL_NO_VAL && pinfo.valueType != AL_SCALAR_VAL) {
		/* multiple values */
		item = PyInt_FromLong((long) pinfo.maxElems);
		PyDict_SetItemString(v, "maxElems", item);
		Py_DECREF(item);

		if (pinfo.valueType == AL_MATRIX_VAL) {
			/* 2 dimensional */
			item = PyInt_FromLong((long) pinfo.maxElems2);
			PyDict_SetItemString(v, "maxElems2", item);
			Py_DECREF(item);
		}
	}

	item = PyInt_FromLong((long) pinfo.elementType);
	PyDict_SetItemString(v, "elementType", item);
	Py_DECREF(item);

	item = PyString_FromString(pinfo.name);
	PyDict_SetItemString(v, "name", item);
	Py_DECREF(item);

	item = param2python(res, param, pinfo.initial, &pinfo);
	PyDict_SetItemString(v, "initial", item);
	Py_DECREF(item);

	if (pinfo.elementType != AL_ENUM_ELEM &&
	    pinfo.elementType != AL_RESOURCE_ELEM &&
	    pinfo.elementType != AL_CHAR_ELEM) {
		/* range param */
		item = param2python(res, param, pinfo.min, &pinfo);
		PyDict_SetItemString(v, "min", item);
		Py_DECREF(item);

		item = param2python(res, param, pinfo.max, &pinfo);
		PyDict_SetItemString(v, "max", item);
		Py_DECREF(item);

		item = param2python(res, param, pinfo.minDelta, &pinfo);
		PyDict_SetItemString(v, "minDelta", item);
		Py_DECREF(item);

		item = param2python(res, param, pinfo.maxDelta, &pinfo);
		PyDict_SetItemString(v, "maxDelta", item);
		Py_DECREF(item);

		item = PyInt_FromLong((long) pinfo.specialVals);
		PyDict_SetItemString(v, "specialVals", item);
		Py_DECREF(item);
	}

	return v;
}

static char al_GetResourceByName__doc__[] =
"alGetResourceByName: find an audio resource by name."
;

static PyObject *
al_GetResourceByName(PyObject *self, PyObject *args)
{
	int res, start_res, type;
	char *name;

	if (!PyArg_ParseTuple(args, "isi:GetResourceByName", &start_res, &name, &type))
		return NULL;
	if ((res = alGetResourceByName(start_res, name, type)) == 0)
		return NULL;
	return PyInt_FromLong((long) res);
}

static char al_IsSubtype__doc__[] =
"alIsSubtype: indicate if one resource type is a subtype of another."
;

static PyObject *
al_IsSubtype(PyObject *self, PyObject *args)
{
	int type, subtype;

	if (!PyArg_ParseTuple(args, "ii:IsSubtype", &type, &subtype))
		return NULL;
	return PyInt_FromLong((long) alIsSubtype(type, subtype));
}

static char al_SetErrorHandler__doc__[] =
""
;

static PyObject *
al_SetErrorHandler(PyObject *self, PyObject *args)
{

	if (!PyArg_ParseTuple(args, ":SetErrorHandler"))
		return NULL;
	Py_INCREF(Py_None);
	return Py_None;
}

#endif /* AL_NO_ELEM */

#ifdef OLD_INTERFACE

static PyObject *
al_openport(PyObject *self, PyObject *args)
{
	char *name, *dir;
	ALport port;
	alcobject *config = NULL;

	if (!PyArg_ParseTuple(args, "ss|O!:OpenPort", &name, &dir, &Alctype, &config))
		return NULL;
	if ((port = ALopenport(name, dir, config ? config->config : NULL)) == NULL)
		return NULL;
	return newalpobject(port);
}

static PyObject *
al_newconfig(PyObject *self, PyObject *args)
{
	ALconfig config;

	if (!PyArg_ParseTuple(args, ":NewConfig"))
		return NULL;
	if ((config = ALnewconfig ()) == NULL)
		return NULL;
	return newalcobject(config);
}

static PyObject *
al_queryparams(PyObject *self, PyObject *args)
{
	long device;
	long length;
	long *PVbuffer;
	long PVdummy[2];
	PyObject *v = NULL;
	int i;

	if (!PyArg_ParseTuple(args, "l:queryparams", &device))
		return NULL;
	if ((length = ALqueryparams(device, PVdummy, 2L)) == -1)
		return NULL;
	if ((PVbuffer = PyMem_NEW(long, length)) == NULL)
		return PyErr_NoMemory();
	if (ALqueryparams(device, PVbuffer, length) >= 0 &&
	    (v = PyList_New((int)length)) != NULL) {
		for (i = 0; i < length; i++)
			PyList_SetItem(v, i, PyInt_FromLong(PVbuffer[i]));
	}
	PyMem_DEL(PVbuffer);
	return v;
}

static PyObject *
doParams(PyObject *args, int (*func)(long, long *, long), int modified)
{
	long device;
	PyObject *list, *v;
	long *PVbuffer;
	long length;
	int i;
	
	if (!PyArg_ParseTuple(args, "lO!", &device, &PyList_Type, &list))
		return NULL;
	length = PyList_Size(list);
	PVbuffer = PyMem_NEW(long, length);
	if (PVbuffer == NULL)
		return PyErr_NoMemory();
	for (i = 0; i < length; i++) {
		v = PyList_GetItem(list, i);
		if (!PyInt_Check(v)) {
			PyMem_DEL(PVbuffer);
			PyErr_BadArgument();
			return NULL;
		}
		PVbuffer[i] = PyInt_AsLong(v);
	}

	if ((*func)(device, PVbuffer, length) == -1) {
		PyMem_DEL(PVbuffer);
		return NULL;
	}

	if (modified) {
		for (i = 0; i < length; i++)
			PyList_SetItem(list, i, PyInt_FromLong(PVbuffer[i]));
	}

	PyMem_DEL(PVbuffer);

	Py_INCREF(Py_None);
	return Py_None;
}

static PyObject *
al_getparams(PyObject *self, PyObject *args)
{
	return doParams(args, ALgetparams, 1);
}

static PyObject *
al_setparams(PyObject *self, PyObject *args)
{
	return doParams(args, ALsetparams, 0);
}

static PyObject *
al_getname(PyObject *self, PyObject *args)
{
	long device, descriptor;
	char *name;

	if (!PyArg_ParseTuple(args, "ll:getname", &device, &descriptor))
		return NULL;
	if ((name = ALgetname(device, descriptor)) == NULL)
		return NULL;
	return PyString_FromString(name);
}

static PyObject *
al_getdefault(PyObject *self, PyObject *args)
{
	long device, descriptor, value;

	if (!PyArg_ParseTuple(args, "ll:getdefault", &device, &descriptor))
		return NULL;
	if ((value = ALgetdefault(device, descriptor)) == -1)
		return NULL;
	return PyLong_FromLong(value);
}

static PyObject *
al_getminmax(PyObject *self, PyObject *args)
{
	long device, descriptor, min, max;

	if (!PyArg_ParseTuple(args, "ll:getminmax", &device, &descriptor))
		return NULL;
	min = -1;
	max = -1;
	if (ALgetminmax(device, descriptor, &min, &max) == -1)
		return NULL;
	return Py_BuildValue("ll", min, max);
}

#endif /* OLD_INTERFACE */

/* List of methods defined in the module */

static struct PyMethodDef al_methods[] = {
#ifdef AL_NO_ELEM		/* IRIX 6 */
	{"NewConfig",	(PyCFunction)al_NewConfig,	METH_VARARGS,	al_NewConfig__doc__},
	{"OpenPort",	(PyCFunction)al_OpenPort,	METH_VARARGS,	al_OpenPort__doc__},
	{"Connect",	(PyCFunction)al_Connect,	METH_VARARGS,	al_Connect__doc__},
	{"Disconnect",	(PyCFunction)al_Disconnect,	METH_VARARGS,	al_Disconnect__doc__},
	{"GetParams",	(PyCFunction)al_GetParams,	METH_VARARGS,	al_GetParams__doc__},
	{"SetParams",	(PyCFunction)al_SetParams,	METH_VARARGS,	al_SetParams__doc__},
	{"QueryValues",	(PyCFunction)al_QueryValues,	METH_VARARGS,	al_QueryValues__doc__},
	{"GetParamInfo",	(PyCFunction)al_GetParamInfo,	METH_VARARGS,	al_GetParamInfo__doc__},
	{"GetResourceByName",	(PyCFunction)al_GetResourceByName,	METH_VARARGS,	al_GetResourceByName__doc__},
	{"IsSubtype",	(PyCFunction)al_IsSubtype,	METH_VARARGS,	al_IsSubtype__doc__},
#if 0
	/* this one not supported */
	{"SetErrorHandler",	(PyCFunction)al_SetErrorHandler,	METH_VARARGS,	al_SetErrorHandler__doc__},
#endif
#endif /* AL_NO_ELEM */
#ifdef OLD_INTERFACE
	{"openport",		(PyCFunction)al_openport,	METH_VARARGS},
	{"newconfig",		(PyCFunction)al_newconfig,	METH_VARARGS},
	{"queryparams",		(PyCFunction)al_queryparams,	METH_VARARGS},
	{"getparams",		(PyCFunction)al_getparams,	METH_VARARGS},
	{"setparams",		(PyCFunction)al_setparams,	METH_VARARGS},
	{"getname",		(PyCFunction)al_getname,	METH_VARARGS},
	{"getdefault",		(PyCFunction)al_getdefault,	METH_VARARGS},
	{"getminmax",		(PyCFunction)al_getminmax,	METH_VARARGS},
#endif /* OLD_INTERFACE */

	{NULL,	 (PyCFunction)NULL, 0, NULL}		/* sentinel */
};


/* Initialization function for the module (*must* be called inital) */

static char al_module_documentation[] = 
""
;

void
inital(void)
{
	PyObject *m, *d, *x;

	/* Create the module and add the functions */
	m = Py_InitModule4("al", al_methods,
		al_module_documentation,
		(PyObject*)NULL,PYTHON_API_VERSION);

	/* Add some symbolic constants to the module */
	d = PyModule_GetDict(m);
	ErrorObject = PyErr_NewException("al.error", NULL, NULL);
	PyDict_SetItemString(d, "error", ErrorObject);

	/* XXXX Add constants here */
#ifdef AL_4CHANNEL
	x =  PyInt_FromLong((long) AL_4CHANNEL);
	if (x == NULL || PyDict_SetItemString(d, "FOURCHANNEL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ADAT_IF_TYPE
	x =  PyInt_FromLong((long) AL_ADAT_IF_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "ADAT_IF_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ADAT_MCLK_TYPE
	x =  PyInt_FromLong((long) AL_ADAT_MCLK_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "ADAT_MCLK_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_AES_IF_TYPE
	x =  PyInt_FromLong((long) AL_AES_IF_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "AES_IF_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_AES_MCLK_TYPE
	x =  PyInt_FromLong((long) AL_AES_MCLK_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "AES_MCLK_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ANALOG_IF_TYPE
	x =  PyInt_FromLong((long) AL_ANALOG_IF_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "ANALOG_IF_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ASSOCIATE
	x =  PyInt_FromLong((long) AL_ASSOCIATE);
	if (x == NULL || PyDict_SetItemString(d, "ASSOCIATE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_BUFFER_NULL
	x =  PyInt_FromLong((long) AL_BAD_BUFFER_NULL);
	if (x == NULL || PyDict_SetItemString(d, "BAD_BUFFER_NULL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_BUFFERLENGTH
	x =  PyInt_FromLong((long) AL_BAD_BUFFERLENGTH);
	if (x == NULL || PyDict_SetItemString(d, "BAD_BUFFERLENGTH", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_BUFFERLENGTH_NEG
	x =  PyInt_FromLong((long) AL_BAD_BUFFERLENGTH_NEG);
	if (x == NULL || PyDict_SetItemString(d, "BAD_BUFFERLENGTH_NEG", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_BUFFERLENGTH_ODD
	x =  PyInt_FromLong((long) AL_BAD_BUFFERLENGTH_ODD);
	if (x == NULL || PyDict_SetItemString(d, "BAD_BUFFERLENGTH_ODD", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_CHANNELS
	x =  PyInt_FromLong((long) AL_BAD_CHANNELS);
	if (x == NULL || PyDict_SetItemString(d, "BAD_CHANNELS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_CONFIG
	x =  PyInt_FromLong((long) AL_BAD_CONFIG);
	if (x == NULL || PyDict_SetItemString(d, "BAD_CONFIG", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_COUNT_NEG
	x =  PyInt_FromLong((long) AL_BAD_COUNT_NEG);
	if (x == NULL || PyDict_SetItemString(d, "BAD_COUNT_NEG", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_DEVICE
	x =  PyInt_FromLong((long) AL_BAD_DEVICE);
	if (x == NULL || PyDict_SetItemString(d, "BAD_DEVICE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_DEVICE_ACCESS
	x =  PyInt_FromLong((long) AL_BAD_DEVICE_ACCESS);
	if (x == NULL || PyDict_SetItemString(d, "BAD_DEVICE_ACCESS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_DIRECTION
	x =  PyInt_FromLong((long) AL_BAD_DIRECTION);
	if (x == NULL || PyDict_SetItemString(d, "BAD_DIRECTION", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_FILLPOINT
	x =  PyInt_FromLong((long) AL_BAD_FILLPOINT);
	if (x == NULL || PyDict_SetItemString(d, "BAD_FILLPOINT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_FLOATMAX
	x =  PyInt_FromLong((long) AL_BAD_FLOATMAX);
	if (x == NULL || PyDict_SetItemString(d, "BAD_FLOATMAX", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_ILLEGAL_STATE
	x =  PyInt_FromLong((long) AL_BAD_ILLEGAL_STATE);
	if (x == NULL || PyDict_SetItemString(d, "BAD_ILLEGAL_STATE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_NO_PORTS
	x =  PyInt_FromLong((long) AL_BAD_NO_PORTS);
	if (x == NULL || PyDict_SetItemString(d, "BAD_NO_PORTS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_NOT_FOUND
	x =  PyInt_FromLong((long) AL_BAD_NOT_FOUND);
	if (x == NULL || PyDict_SetItemString(d, "BAD_NOT_FOUND", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_NOT_IMPLEMENTED
	x =  PyInt_FromLong((long) AL_BAD_NOT_IMPLEMENTED);
	if (x == NULL || PyDict_SetItemString(d, "BAD_NOT_IMPLEMENTED", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_OUT_OF_MEM
	x =  PyInt_FromLong((long) AL_BAD_OUT_OF_MEM);
	if (x == NULL || PyDict_SetItemString(d, "BAD_OUT_OF_MEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_PARAM
	x =  PyInt_FromLong((long) AL_BAD_PARAM);
	if (x == NULL || PyDict_SetItemString(d, "BAD_PARAM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_PERMISSIONS
	x =  PyInt_FromLong((long) AL_BAD_PERMISSIONS);
	if (x == NULL || PyDict_SetItemString(d, "BAD_PERMISSIONS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_PORT
	x =  PyInt_FromLong((long) AL_BAD_PORT);
	if (x == NULL || PyDict_SetItemString(d, "BAD_PORT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_PORTSTYLE
	x =  PyInt_FromLong((long) AL_BAD_PORTSTYLE);
	if (x == NULL || PyDict_SetItemString(d, "BAD_PORTSTYLE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_PVBUFFER
	x =  PyInt_FromLong((long) AL_BAD_PVBUFFER);
	if (x == NULL || PyDict_SetItemString(d, "BAD_PVBUFFER", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_QSIZE
	x =  PyInt_FromLong((long) AL_BAD_QSIZE);
	if (x == NULL || PyDict_SetItemString(d, "BAD_QSIZE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_RATE
	x =  PyInt_FromLong((long) AL_BAD_RATE);
	if (x == NULL || PyDict_SetItemString(d, "BAD_RATE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_RESOURCE
	x =  PyInt_FromLong((long) AL_BAD_RESOURCE);
	if (x == NULL || PyDict_SetItemString(d, "BAD_RESOURCE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_SAMPFMT
	x =  PyInt_FromLong((long) AL_BAD_SAMPFMT);
	if (x == NULL || PyDict_SetItemString(d, "BAD_SAMPFMT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_TRANSFER_SIZE
	x =  PyInt_FromLong((long) AL_BAD_TRANSFER_SIZE);
	if (x == NULL || PyDict_SetItemString(d, "BAD_TRANSFER_SIZE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_BAD_WIDTH
	x =  PyInt_FromLong((long) AL_BAD_WIDTH);
	if (x == NULL || PyDict_SetItemString(d, "BAD_WIDTH", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_CHANNEL_MODE
	x =  PyInt_FromLong((long) AL_CHANNEL_MODE);
	if (x == NULL || PyDict_SetItemString(d, "CHANNEL_MODE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_CHANNELS
	x =  PyInt_FromLong((long) AL_CHANNELS);
	if (x == NULL || PyDict_SetItemString(d, "CHANNELS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_CHAR_ELEM
	x =  PyInt_FromLong((long) AL_CHAR_ELEM);
	if (x == NULL || PyDict_SetItemString(d, "CHAR_ELEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_CLOCK_GEN
	x =  PyInt_FromLong((long) AL_CLOCK_GEN);
	if (x == NULL || PyDict_SetItemString(d, "CLOCK_GEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_CLOCKGEN_TYPE
	x =  PyInt_FromLong((long) AL_CLOCKGEN_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "CLOCKGEN_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_CONNECT
	x =  PyInt_FromLong((long) AL_CONNECT);
	if (x == NULL || PyDict_SetItemString(d, "CONNECT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_CONNECTION_TYPE
	x =  PyInt_FromLong((long) AL_CONNECTION_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "CONNECTION_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_CONNECTIONS
	x =  PyInt_FromLong((long) AL_CONNECTIONS);
	if (x == NULL || PyDict_SetItemString(d, "CONNECTIONS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_CRYSTAL_MCLK_TYPE
	x =  PyInt_FromLong((long) AL_CRYSTAL_MCLK_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "CRYSTAL_MCLK_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_DEFAULT_DEVICE
	x =  PyInt_FromLong((long) AL_DEFAULT_DEVICE);
	if (x == NULL || PyDict_SetItemString(d, "DEFAULT_DEVICE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_DEFAULT_INPUT
	x =  PyInt_FromLong((long) AL_DEFAULT_INPUT);
	if (x == NULL || PyDict_SetItemString(d, "DEFAULT_INPUT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_DEFAULT_OUTPUT
	x =  PyInt_FromLong((long) AL_DEFAULT_OUTPUT);
	if (x == NULL || PyDict_SetItemString(d, "DEFAULT_OUTPUT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_DEST
	x =  PyInt_FromLong((long) AL_DEST);
	if (x == NULL || PyDict_SetItemString(d, "DEST", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_DEVICE_TYPE
	x =  PyInt_FromLong((long) AL_DEVICE_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "DEVICE_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_DEVICES
	x =  PyInt_FromLong((long) AL_DEVICES);
	if (x == NULL || PyDict_SetItemString(d, "DEVICES", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_DIGITAL_IF_TYPE
	x =  PyInt_FromLong((long) AL_DIGITAL_IF_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "DIGITAL_IF_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_DIGITAL_INPUT_RATE
	x =  PyInt_FromLong((long) AL_DIGITAL_INPUT_RATE);
	if (x == NULL || PyDict_SetItemString(d, "DIGITAL_INPUT_RATE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_DISCONNECT
	x =  PyInt_FromLong((long) AL_DISCONNECT);
	if (x == NULL || PyDict_SetItemString(d, "DISCONNECT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ENUM_ELEM
	x =  PyInt_FromLong((long) AL_ENUM_ELEM);
	if (x == NULL || PyDict_SetItemString(d, "ENUM_ELEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ENUM_VALUE
	x =  PyInt_FromLong((long) AL_ENUM_VALUE);
	if (x == NULL || PyDict_SetItemString(d, "ENUM_VALUE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ERROR_INPUT_OVERFLOW
	x =  PyInt_FromLong((long) AL_ERROR_INPUT_OVERFLOW);
	if (x == NULL || PyDict_SetItemString(d, "ERROR_INPUT_OVERFLOW", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ERROR_LENGTH
	x =  PyInt_FromLong((long) AL_ERROR_LENGTH);
	if (x == NULL || PyDict_SetItemString(d, "ERROR_LENGTH", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ERROR_LOCATION_LSP
	x =  PyInt_FromLong((long) AL_ERROR_LOCATION_LSP);
	if (x == NULL || PyDict_SetItemString(d, "ERROR_LOCATION_LSP", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ERROR_LOCATION_MSP
	x =  PyInt_FromLong((long) AL_ERROR_LOCATION_MSP);
	if (x == NULL || PyDict_SetItemString(d, "ERROR_LOCATION_MSP", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ERROR_NUMBER
	x =  PyInt_FromLong((long) AL_ERROR_NUMBER);
	if (x == NULL || PyDict_SetItemString(d, "ERROR_NUMBER", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ERROR_OUTPUT_UNDERFLOW
	x =  PyInt_FromLong((long) AL_ERROR_OUTPUT_UNDERFLOW);
	if (x == NULL || PyDict_SetItemString(d, "ERROR_OUTPUT_UNDERFLOW", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_ERROR_TYPE
	x =  PyInt_FromLong((long) AL_ERROR_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "ERROR_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_FIXED_ELEM
	x =  PyInt_FromLong((long) AL_FIXED_ELEM);
	if (x == NULL || PyDict_SetItemString(d, "FIXED_ELEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_FIXED_MCLK_TYPE
	x =  PyInt_FromLong((long) AL_FIXED_MCLK_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "FIXED_MCLK_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_GAIN
	x =  PyInt_FromLong((long) AL_GAIN);
	if (x == NULL || PyDict_SetItemString(d, "GAIN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_GAIN_REF
	x =  PyInt_FromLong((long) AL_GAIN_REF);
	if (x == NULL || PyDict_SetItemString(d, "GAIN_REF", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_HRB_TYPE
	x =  PyInt_FromLong((long) AL_HRB_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "HRB_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INPUT_COUNT
	x =  PyInt_FromLong((long) AL_INPUT_COUNT);
	if (x == NULL || PyDict_SetItemString(d, "INPUT_COUNT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INPUT_DEVICE_TYPE
	x =  PyInt_FromLong((long) AL_INPUT_DEVICE_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "INPUT_DEVICE_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INPUT_DIGITAL
	x =  PyInt_FromLong((long) AL_INPUT_DIGITAL);
	if (x == NULL || PyDict_SetItemString(d, "INPUT_DIGITAL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INPUT_HRB_TYPE
	x =  PyInt_FromLong((long) AL_INPUT_HRB_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "INPUT_HRB_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INPUT_LINE
	x =  PyInt_FromLong((long) AL_INPUT_LINE);
	if (x == NULL || PyDict_SetItemString(d, "INPUT_LINE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INPUT_MIC
	x =  PyInt_FromLong((long) AL_INPUT_MIC);
	if (x == NULL || PyDict_SetItemString(d, "INPUT_MIC", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INPUT_PORT_TYPE
	x =  PyInt_FromLong((long) AL_INPUT_PORT_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "INPUT_PORT_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INPUT_RATE
	x =  PyInt_FromLong((long) AL_INPUT_RATE);
	if (x == NULL || PyDict_SetItemString(d, "INPUT_RATE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INPUT_SOURCE
	x =  PyInt_FromLong((long) AL_INPUT_SOURCE);
	if (x == NULL || PyDict_SetItemString(d, "INPUT_SOURCE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INT32_ELEM
	x =  PyInt_FromLong((long) AL_INT32_ELEM);
	if (x == NULL || PyDict_SetItemString(d, "INT32_ELEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INT64_ELEM
	x =  PyInt_FromLong((long) AL_INT64_ELEM);
	if (x == NULL || PyDict_SetItemString(d, "INT64_ELEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INTERFACE
	x =  PyInt_FromLong((long) AL_INTERFACE);
	if (x == NULL || PyDict_SetItemString(d, "INTERFACE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INTERFACE_TYPE
	x =  PyInt_FromLong((long) AL_INTERFACE_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "INTERFACE_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INVALID_PARAM
	x =  PyInt_FromLong((long) AL_INVALID_PARAM);
	if (x == NULL || PyDict_SetItemString(d, "INVALID_PARAM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_INVALID_VALUE
	x =  PyInt_FromLong((long) AL_INVALID_VALUE);
	if (x == NULL || PyDict_SetItemString(d, "INVALID_VALUE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_JITTER
	x =  PyInt_FromLong((long) AL_JITTER);
	if (x == NULL || PyDict_SetItemString(d, "JITTER", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_LABEL
	x =  PyInt_FromLong((long) AL_LABEL);
	if (x == NULL || PyDict_SetItemString(d, "LABEL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_LEFT_INPUT_ATTEN
	x =  PyInt_FromLong((long) AL_LEFT_INPUT_ATTEN);
	if (x == NULL || PyDict_SetItemString(d, "LEFT_INPUT_ATTEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_LEFT_MONITOR_ATTEN
	x =  PyInt_FromLong((long) AL_LEFT_MONITOR_ATTEN);
	if (x == NULL || PyDict_SetItemString(d, "LEFT_MONITOR_ATTEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_LEFT_SPEAKER_GAIN
	x =  PyInt_FromLong((long) AL_LEFT_SPEAKER_GAIN);
	if (x == NULL || PyDict_SetItemString(d, "LEFT_SPEAKER_GAIN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_LEFT1_INPUT_ATTEN
	x =  PyInt_FromLong((long) AL_LEFT1_INPUT_ATTEN);
	if (x == NULL || PyDict_SetItemString(d, "LEFT1_INPUT_ATTEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_LEFT2_INPUT_ATTEN
	x =  PyInt_FromLong((long) AL_LEFT2_INPUT_ATTEN);
	if (x == NULL || PyDict_SetItemString(d, "LEFT2_INPUT_ATTEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_LINE_IF_TYPE
	x =  PyInt_FromLong((long) AL_LINE_IF_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "LINE_IF_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MASTER_CLOCK
	x =  PyInt_FromLong((long) AL_MASTER_CLOCK);
	if (x == NULL || PyDict_SetItemString(d, "MASTER_CLOCK", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MATRIX_VAL
	x =  PyInt_FromLong((long) AL_MATRIX_VAL);
	if (x == NULL || PyDict_SetItemString(d, "MATRIX_VAL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MAX_ERROR
	x =  PyInt_FromLong((long) AL_MAX_ERROR);
	if (x == NULL || PyDict_SetItemString(d, "MAX_ERROR", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MAX_EVENT_PARAM
	x =  PyInt_FromLong((long) AL_MAX_EVENT_PARAM);
	if (x == NULL || PyDict_SetItemString(d, "MAX_EVENT_PARAM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MAX_PBUFSIZE
	x =  PyInt_FromLong((long) AL_MAX_PBUFSIZE);
	if (x == NULL || PyDict_SetItemString(d, "MAX_PBUFSIZE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MAX_PORTS
	x =  PyInt_FromLong((long) AL_MAX_PORTS);
	if (x == NULL || PyDict_SetItemString(d, "MAX_PORTS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MAX_RESOURCE_ID
	x =  PyInt_FromLong((long) AL_MAX_RESOURCE_ID);
	if (x == NULL || PyDict_SetItemString(d, "MAX_RESOURCE_ID", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MAX_SETSIZE
	x =  PyInt_FromLong((long) AL_MAX_SETSIZE);
	if (x == NULL || PyDict_SetItemString(d, "MAX_SETSIZE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MAX_STRLEN
	x =  PyInt_FromLong((long) AL_MAX_STRLEN);
	if (x == NULL || PyDict_SetItemString(d, "MAX_STRLEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MCLK_TYPE
	x =  PyInt_FromLong((long) AL_MCLK_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "MCLK_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MIC_IF_TYPE
	x =  PyInt_FromLong((long) AL_MIC_IF_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "MIC_IF_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MONITOR_CTL
	x =  PyInt_FromLong((long) AL_MONITOR_CTL);
	if (x == NULL || PyDict_SetItemString(d, "MONITOR_CTL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MONITOR_OFF
	x =  PyInt_FromLong((long) AL_MONITOR_OFF);
	if (x == NULL || PyDict_SetItemString(d, "MONITOR_OFF", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MONITOR_ON
	x =  PyInt_FromLong((long) AL_MONITOR_ON);
	if (x == NULL || PyDict_SetItemString(d, "MONITOR_ON", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MONO
	x =  PyInt_FromLong((long) AL_MONO);
	if (x == NULL || PyDict_SetItemString(d, "MONO", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_MUTE
	x =  PyInt_FromLong((long) AL_MUTE);
	if (x == NULL || PyDict_SetItemString(d, "MUTE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NAME
	x =  PyInt_FromLong((long) AL_NAME);
	if (x == NULL || PyDict_SetItemString(d, "NAME", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NEG_INFINITY
	x =  PyInt_FromLong((long) AL_NEG_INFINITY);
	if (x == NULL || PyDict_SetItemString(d, "NEG_INFINITY", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NEG_INFINITY_BIT
	x =  PyInt_FromLong((long) AL_NEG_INFINITY_BIT);
	if (x == NULL || PyDict_SetItemString(d, "NEG_INFINITY_BIT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NO_CHANGE
	x =  PyInt_FromLong((long) AL_NO_CHANGE);
	if (x == NULL || PyDict_SetItemString(d, "NO_CHANGE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NO_CHANGE_BIT
	x =  PyInt_FromLong((long) AL_NO_CHANGE_BIT);
	if (x == NULL || PyDict_SetItemString(d, "NO_CHANGE_BIT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NO_ELEM
	x =  PyInt_FromLong((long) AL_NO_ELEM);
	if (x == NULL || PyDict_SetItemString(d, "NO_ELEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NO_ERRORS
	x =  PyInt_FromLong((long) AL_NO_ERRORS);
	if (x == NULL || PyDict_SetItemString(d, "NO_ERRORS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NO_OP
	x =  PyInt_FromLong((long) AL_NO_OP);
	if (x == NULL || PyDict_SetItemString(d, "NO_OP", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NO_VAL
	x =  PyInt_FromLong((long) AL_NO_VAL);
	if (x == NULL || PyDict_SetItemString(d, "NO_VAL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_NULL_RESOURCE
	x =  PyInt_FromLong((long) AL_NULL_RESOURCE);
	if (x == NULL || PyDict_SetItemString(d, "NULL_RESOURCE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_OUTPUT_COUNT
	x =  PyInt_FromLong((long) AL_OUTPUT_COUNT);
	if (x == NULL || PyDict_SetItemString(d, "OUTPUT_COUNT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_OUTPUT_DEVICE_TYPE
	x =  PyInt_FromLong((long) AL_OUTPUT_DEVICE_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "OUTPUT_DEVICE_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_OUTPUT_HRB_TYPE
	x =  PyInt_FromLong((long) AL_OUTPUT_HRB_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "OUTPUT_HRB_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_OUTPUT_PORT_TYPE
	x =  PyInt_FromLong((long) AL_OUTPUT_PORT_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "OUTPUT_PORT_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_OUTPUT_RATE
	x =  PyInt_FromLong((long) AL_OUTPUT_RATE);
	if (x == NULL || PyDict_SetItemString(d, "OUTPUT_RATE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_PARAM_BIT
	x =  PyInt_FromLong((long) AL_PARAM_BIT);
	if (x == NULL || PyDict_SetItemString(d, "PARAM_BIT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_PARAMS
	x =  PyInt_FromLong((long) AL_PARAMS);
	if (x == NULL || PyDict_SetItemString(d, "PARAMS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_PORT_COUNT
	x =  PyInt_FromLong((long) AL_PORT_COUNT);
	if (x == NULL || PyDict_SetItemString(d, "PORT_COUNT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_PORT_TYPE
	x =  PyInt_FromLong((long) AL_PORT_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "PORT_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_PORTS
	x =  PyInt_FromLong((long) AL_PORTS);
	if (x == NULL || PyDict_SetItemString(d, "PORTS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_PORTSTYLE_DIRECT
	x =  PyInt_FromLong((long) AL_PORTSTYLE_DIRECT);
	if (x == NULL || PyDict_SetItemString(d, "PORTSTYLE_DIRECT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_PORTSTYLE_SERIAL
	x =  PyInt_FromLong((long) AL_PORTSTYLE_SERIAL);
	if (x == NULL || PyDict_SetItemString(d, "PORTSTYLE_SERIAL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_PRINT_ERRORS
	x =  PyInt_FromLong((long) AL_PRINT_ERRORS);
	if (x == NULL || PyDict_SetItemString(d, "PRINT_ERRORS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_PTR_ELEM
	x =  PyInt_FromLong((long) AL_PTR_ELEM);
	if (x == NULL || PyDict_SetItemString(d, "PTR_ELEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RANGE_VALUE
	x =  PyInt_FromLong((long) AL_RANGE_VALUE);
	if (x == NULL || PyDict_SetItemString(d, "RANGE_VALUE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE
	x =  PyInt_FromLong((long) AL_RATE);
	if (x == NULL || PyDict_SetItemString(d, "RATE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_11025
	x =  PyInt_FromLong((long) AL_RATE_11025);
	if (x == NULL || PyDict_SetItemString(d, "RATE_11025", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_16000
	x =  PyInt_FromLong((long) AL_RATE_16000);
	if (x == NULL || PyDict_SetItemString(d, "RATE_16000", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_22050
	x =  PyInt_FromLong((long) AL_RATE_22050);
	if (x == NULL || PyDict_SetItemString(d, "RATE_22050", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_32000
	x =  PyInt_FromLong((long) AL_RATE_32000);
	if (x == NULL || PyDict_SetItemString(d, "RATE_32000", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_44100
	x =  PyInt_FromLong((long) AL_RATE_44100);
	if (x == NULL || PyDict_SetItemString(d, "RATE_44100", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_48000
	x =  PyInt_FromLong((long) AL_RATE_48000);
	if (x == NULL || PyDict_SetItemString(d, "RATE_48000", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_8000
	x =  PyInt_FromLong((long) AL_RATE_8000);
	if (x == NULL || PyDict_SetItemString(d, "RATE_8000", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_AES_1
	x =  PyInt_FromLong((long) AL_RATE_AES_1);
	if (x == NULL || PyDict_SetItemString(d, "RATE_AES_1", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_AES_1s
	x =  PyInt_FromLong((long) AL_RATE_AES_1s);
	if (x == NULL || PyDict_SetItemString(d, "RATE_AES_1s", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_AES_2
	x =  PyInt_FromLong((long) AL_RATE_AES_2);
	if (x == NULL || PyDict_SetItemString(d, "RATE_AES_2", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_AES_3
	x =  PyInt_FromLong((long) AL_RATE_AES_3);
	if (x == NULL || PyDict_SetItemString(d, "RATE_AES_3", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_AES_4
	x =  PyInt_FromLong((long) AL_RATE_AES_4);
	if (x == NULL || PyDict_SetItemString(d, "RATE_AES_4", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_AES_6
	x =  PyInt_FromLong((long) AL_RATE_AES_6);
	if (x == NULL || PyDict_SetItemString(d, "RATE_AES_6", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_FRACTION_D
	x =  PyInt_FromLong((long) AL_RATE_FRACTION_D);
	if (x == NULL || PyDict_SetItemString(d, "RATE_FRACTION_D", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_FRACTION_N
	x =  PyInt_FromLong((long) AL_RATE_FRACTION_N);
	if (x == NULL || PyDict_SetItemString(d, "RATE_FRACTION_N", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_INPUTRATE
	x =  PyInt_FromLong((long) AL_RATE_INPUTRATE);
	if (x == NULL || PyDict_SetItemString(d, "RATE_INPUTRATE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_NO_DIGITAL_INPUT
	x =  PyInt_FromLong((long) AL_RATE_NO_DIGITAL_INPUT);
	if (x == NULL || PyDict_SetItemString(d, "RATE_NO_DIGITAL_INPUT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_UNACQUIRED
	x =  PyInt_FromLong((long) AL_RATE_UNACQUIRED);
	if (x == NULL || PyDict_SetItemString(d, "RATE_UNACQUIRED", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RATE_UNDEFINED
	x =  PyInt_FromLong((long) AL_RATE_UNDEFINED);
	if (x == NULL || PyDict_SetItemString(d, "RATE_UNDEFINED", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_REF_0DBV
	x =  PyInt_FromLong((long) AL_REF_0DBV);
	if (x == NULL || PyDict_SetItemString(d, "REF_0DBV", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_REF_NONE
	x =  PyInt_FromLong((long) AL_REF_NONE);
	if (x == NULL || PyDict_SetItemString(d, "REF_NONE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RESERVED1_TYPE
	x =  PyInt_FromLong((long) AL_RESERVED1_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "RESERVED1_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RESERVED2_TYPE
	x =  PyInt_FromLong((long) AL_RESERVED2_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "RESERVED2_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RESERVED3_TYPE
	x =  PyInt_FromLong((long) AL_RESERVED3_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "RESERVED3_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RESERVED4_TYPE
	x =  PyInt_FromLong((long) AL_RESERVED4_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "RESERVED4_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RESOURCE
	x =  PyInt_FromLong((long) AL_RESOURCE);
	if (x == NULL || PyDict_SetItemString(d, "RESOURCE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RESOURCE_ELEM
	x =  PyInt_FromLong((long) AL_RESOURCE_ELEM);
	if (x == NULL || PyDict_SetItemString(d, "RESOURCE_ELEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RESOURCE_TYPE
	x =  PyInt_FromLong((long) AL_RESOURCE_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "RESOURCE_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RIGHT_INPUT_ATTEN
	x =  PyInt_FromLong((long) AL_RIGHT_INPUT_ATTEN);
	if (x == NULL || PyDict_SetItemString(d, "RIGHT_INPUT_ATTEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RIGHT_MONITOR_ATTEN
	x =  PyInt_FromLong((long) AL_RIGHT_MONITOR_ATTEN);
	if (x == NULL || PyDict_SetItemString(d, "RIGHT_MONITOR_ATTEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RIGHT_SPEAKER_GAIN
	x =  PyInt_FromLong((long) AL_RIGHT_SPEAKER_GAIN);
	if (x == NULL || PyDict_SetItemString(d, "RIGHT_SPEAKER_GAIN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RIGHT1_INPUT_ATTEN
	x =  PyInt_FromLong((long) AL_RIGHT1_INPUT_ATTEN);
	if (x == NULL || PyDict_SetItemString(d, "RIGHT1_INPUT_ATTEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_RIGHT2_INPUT_ATTEN
	x =  PyInt_FromLong((long) AL_RIGHT2_INPUT_ATTEN);
	if (x == NULL || PyDict_SetItemString(d, "RIGHT2_INPUT_ATTEN", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SAMPFMT_DOUBLE
	x =  PyInt_FromLong((long) AL_SAMPFMT_DOUBLE);
	if (x == NULL || PyDict_SetItemString(d, "SAMPFMT_DOUBLE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SAMPFMT_FLOAT
	x =  PyInt_FromLong((long) AL_SAMPFMT_FLOAT);
	if (x == NULL || PyDict_SetItemString(d, "SAMPFMT_FLOAT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SAMPFMT_TWOSCOMP
	x =  PyInt_FromLong((long) AL_SAMPFMT_TWOSCOMP);
	if (x == NULL || PyDict_SetItemString(d, "SAMPFMT_TWOSCOMP", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SAMPLE_16
	x =  PyInt_FromLong((long) AL_SAMPLE_16);
	if (x == NULL || PyDict_SetItemString(d, "SAMPLE_16", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SAMPLE_24
	x =  PyInt_FromLong((long) AL_SAMPLE_24);
	if (x == NULL || PyDict_SetItemString(d, "SAMPLE_24", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SAMPLE_8
	x =  PyInt_FromLong((long) AL_SAMPLE_8);
	if (x == NULL || PyDict_SetItemString(d, "SAMPLE_8", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SCALAR_VAL
	x =  PyInt_FromLong((long) AL_SCALAR_VAL);
	if (x == NULL || PyDict_SetItemString(d, "SCALAR_VAL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SET_VAL
	x =  PyInt_FromLong((long) AL_SET_VAL);
	if (x == NULL || PyDict_SetItemString(d, "SET_VAL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SHORT_NAME
	x =  PyInt_FromLong((long) AL_SHORT_NAME);
	if (x == NULL || PyDict_SetItemString(d, "SHORT_NAME", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SOURCE
	x =  PyInt_FromLong((long) AL_SOURCE);
	if (x == NULL || PyDict_SetItemString(d, "SOURCE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SPEAKER_IF_TYPE
	x =  PyInt_FromLong((long) AL_SPEAKER_IF_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "SPEAKER_IF_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SPEAKER_MUTE_CTL
	x =  PyInt_FromLong((long) AL_SPEAKER_MUTE_CTL);
	if (x == NULL || PyDict_SetItemString(d, "SPEAKER_MUTE_CTL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SPEAKER_MUTE_OFF
	x =  PyInt_FromLong((long) AL_SPEAKER_MUTE_OFF);
	if (x == NULL || PyDict_SetItemString(d, "SPEAKER_MUTE_OFF", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SPEAKER_MUTE_ON
	x =  PyInt_FromLong((long) AL_SPEAKER_MUTE_ON);
	if (x == NULL || PyDict_SetItemString(d, "SPEAKER_MUTE_ON", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SPEAKER_PLUS_LINE_IF_TYPE
	x =  PyInt_FromLong((long) AL_SPEAKER_PLUS_LINE_IF_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "SPEAKER_PLUS_LINE_IF_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_STEREO
	x =  PyInt_FromLong((long) AL_STEREO);
	if (x == NULL || PyDict_SetItemString(d, "STEREO", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_STRING_VAL
	x =  PyInt_FromLong((long) AL_STRING_VAL);
	if (x == NULL || PyDict_SetItemString(d, "STRING_VAL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SUBSYSTEM
	x =  PyInt_FromLong((long) AL_SUBSYSTEM);
	if (x == NULL || PyDict_SetItemString(d, "SUBSYSTEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SUBSYSTEM_TYPE
	x =  PyInt_FromLong((long) AL_SUBSYSTEM_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "SUBSYSTEM_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SYNC_INPUT_TO_AES
	x =  PyInt_FromLong((long) AL_SYNC_INPUT_TO_AES);
	if (x == NULL || PyDict_SetItemString(d, "SYNC_INPUT_TO_AES", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SYNC_OUTPUT_TO_AES
	x =  PyInt_FromLong((long) AL_SYNC_OUTPUT_TO_AES);
	if (x == NULL || PyDict_SetItemString(d, "SYNC_OUTPUT_TO_AES", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SYSTEM
	x =  PyInt_FromLong((long) AL_SYSTEM);
	if (x == NULL || PyDict_SetItemString(d, "SYSTEM", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_SYSTEM_TYPE
	x =  PyInt_FromLong((long) AL_SYSTEM_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "SYSTEM_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_TEST_IF_TYPE
	x =  PyInt_FromLong((long) AL_TEST_IF_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "TEST_IF_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_TYPE
	x =  PyInt_FromLong((long) AL_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_TYPE_BIT
	x =  PyInt_FromLong((long) AL_TYPE_BIT);
	if (x == NULL || PyDict_SetItemString(d, "TYPE_BIT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_UNUSED_COUNT
	x =  PyInt_FromLong((long) AL_UNUSED_COUNT);
	if (x == NULL || PyDict_SetItemString(d, "UNUSED_COUNT", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_UNUSED_PORTS
	x =  PyInt_FromLong((long) AL_UNUSED_PORTS);
	if (x == NULL || PyDict_SetItemString(d, "UNUSED_PORTS", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_VARIABLE_MCLK_TYPE
	x =  PyInt_FromLong((long) AL_VARIABLE_MCLK_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "VARIABLE_MCLK_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_VECTOR_VAL
	x =  PyInt_FromLong((long) AL_VECTOR_VAL);
	if (x == NULL || PyDict_SetItemString(d, "VECTOR_VAL", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_VIDEO_MCLK_TYPE
	x =  PyInt_FromLong((long) AL_VIDEO_MCLK_TYPE);
	if (x == NULL || PyDict_SetItemString(d, "VIDEO_MCLK_TYPE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif
#ifdef AL_WORDSIZE
	x =  PyInt_FromLong((long) AL_WORDSIZE);
	if (x == NULL || PyDict_SetItemString(d, "WORDSIZE", x) < 0)
		goto error;
	Py_DECREF(x);
#endif

#ifdef AL_NO_ELEM		/* IRIX 6 */
	(void) alSetErrorHandler(ErrorHandler);
#endif /* AL_NO_ELEM */
#ifdef OLD_INTERFACE
	(void) ALseterrorhandler(ErrorHandler);
#endif /* OLD_INTERFACE */
	
  error:
	return;
}
tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.1 2003/03/26 22:56:09 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.2 2003/04/21 20:41:55 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -2009,11 +2009,17 @@ proc tcltest::test {name description args} { } } + # check if the return code matched the expected return code + set codeFailure 0 + if {!$setupFailure && [lsearch -exact $returnCodes $returnCode] == -1} { + set codeFailure 1 + } + # If expected output/error strings exist, we have to compare # them. If the comparison fails, then so did the test. set outputFailure 0 variable outData - if {[info exists output]} { + if {[info exists output] && !$codeFailure} { if {[set outputCompare [catch { CompareStrings $outData $output $match } outputMatch]] == 0} { @@ -2025,7 +2031,7 @@ proc tcltest::test {name description args} { set errorFailure 0 variable errData - if {[info exists errorOutput]} { + if {[info exists errorOutput] && !$codeFailure} { if {[set errorCompare [catch { CompareStrings $errData $errorOutput $match } errorMatch]] == 0} { @@ -2035,15 +2041,9 @@ proc tcltest::test {name description args} { } } - # check if the return code matched the expected return code - set codeFailure 0 - if {!$setupFailure && [lsearch -exact $returnCodes $returnCode] == -1} { - set codeFailure 1 - } - # check if the answer matched the expected answer # Only check if we ran the body of the test (no setup failure) - if {$setupFailure} { + if {$setupFailure || $codeFailure} { set scriptFailure 0 } elseif {[set scriptCompare [catch { CompareStrings $actualAnswer $result $match -- cgit v0.12 From bb1ae65db1a29d83933c869fec4200fddf6c615a Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 25 Apr 2003 20:02:36 +0000 Subject: * win/tclWinThrd.c: Applied SF patch #727271. This patch changes the code to catch any errors returned by the windows functions handling TLS ASAP instead of waiting to get some mysterious crash later on due to bogus pointers. Patch provided by Joe Mistachkin. This is a stop-gap measure to deal with the low number of ?TLS slots provided by some of the variants of Windows (60-80). --- ChangeLog | 11 ++++++++++ win/tclWinThrd.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 65 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index b063674..4461127 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2003-04-25 Andreas Kupries + + * win/tclWinThrd.c: Applied SF patch #727271. This patch changes + the code to catch any errors returned by the windows functions + handling TLS ASAP instead of waiting to get some mysterious + crash later on due to bogus pointers. Patch provided by Joe + Mistachkin. + + This is a stop-gap measure to deal with the low number of ?TLS + slots provided by some of the variants of Windows (60-80). + 2003-04-21 Don Porter * library/tcltest/tcltest.tcl: When the return code of a test does diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index f0ee02c..b8c045e 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24 2003/01/14 02:06:11 mdejong Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.1 2003/04/25 20:02:39 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -539,11 +539,17 @@ TclpThreadDataKeyInit(keyPtr) * really (DWORD **) */ { DWORD *indexPtr; + DWORD newKey; MASTER_LOCK; if (*keyPtr == NULL) { indexPtr = (DWORD *)ckalloc(sizeof(DWORD)); - *indexPtr = TlsAlloc(); + newKey = TlsAlloc(); + if (newKey != TLS_OUT_OF_INDEXES) { + *indexPtr = newKey; + } else { + panic("TlsAlloc failed from TclpThreadDataKeyInit!"); /* this should be a fatal error */ + } *keyPtr = (Tcl_ThreadDataKey)indexPtr; TclRememberDataKey(keyPtr); } @@ -573,10 +579,15 @@ TclpThreadDataKeyGet(keyPtr) * really (DWORD **) */ { DWORD *indexPtr = *(DWORD **)keyPtr; + LPVOID result; if (indexPtr == NULL) { return NULL; } else { - return (VOID *) TlsGetValue(*indexPtr); + result = TlsGetValue(*indexPtr); + if ((result == NULL) && (GetLastError() != NO_ERROR)) { + panic("TlsGetValue failed from TclpThreadDataKeyGet!"); + } + return result; } } @@ -604,7 +615,11 @@ TclpThreadDataKeySet(keyPtr, data) VOID *data; /* Thread local storage */ { DWORD *indexPtr = *(DWORD **)keyPtr; - TlsSetValue(*indexPtr, (void *)data); + BOOL success; + success = TlsSetValue(*indexPtr, (void *)data); + if (!success) { + panic("TlsSetValue failed from TclpThreadDataKeySet!"); + } } /* @@ -630,6 +645,7 @@ TclpFinalizeThreadData(keyPtr) { VOID *result; DWORD *indexPtr; + BOOL success; #ifdef USE_THREAD_ALLOC TclWinFreeAllocCache(); @@ -639,7 +655,14 @@ TclpFinalizeThreadData(keyPtr) result = (VOID *)TlsGetValue(*indexPtr); if (result != NULL) { ckfree((char *)result); - TlsSetValue(*indexPtr, (void *)NULL); + success = TlsSetValue(*indexPtr, (void *)NULL); + if (!success) { + panic("TlsSetValue failed from TclpFinalizeThreadData!"); + } + } else { + if (GetLastError() != NO_ERROR) { + panic("TlsGetValue failed from TclpFinalizeThreadData!"); + } } } } @@ -669,9 +692,13 @@ TclpFinalizeThreadDataKey(keyPtr) Tcl_ThreadDataKey *keyPtr; { DWORD *indexPtr; + BOOL success; if (*keyPtr != NULL) { indexPtr = *(DWORD **)keyPtr; - TlsFree(*indexPtr); + success = TlsFree(*indexPtr); + if (!success) { + panic("TlsFree failed from TclpFinalizeThreadDataKey!"); + } ckfree((char *)indexPtr); *keyPtr = NULL; } @@ -1001,6 +1028,7 @@ void * TclpGetAllocCache(void) { static int once = 0; + VOID *result; if (!once) { /* @@ -1014,24 +1042,41 @@ TclpGetAllocCache(void) panic("could not allocate thread local storage"); } } - return TlsGetValue(key); + + result = TlsGetValue(key); + if ((result == NULL) && (GetLastError() != NO_ERROR)) { + panic("TlsGetValue failed from TclpGetAllocCache!"); + } + return result; } void TclpSetAllocCache(void *ptr) { - TlsSetValue(key, ptr); + BOOL success; + success = TlsSetValue(key, ptr); + if (!success) { + panic("TlsSetValue failed from TclpSetAllocCache!"); + } } void TclWinFreeAllocCache(void) { void *ptr; + BOOL success; ptr = TlsGetValue(key); if (ptr != NULL) { - TlsSetValue(key, NULL); + success = TlsSetValue(key, NULL); + if (!success) { + panic("TlsSetValue failed from TclWinFreeAllocCache!"); + } TclFreeAllocCache(ptr); + } else { + if (GetLastError() != NO_ERROR) { + panic("TlsGetValue failed from TclWinFreeAllocCache!"); + } } } -- cgit v0.12 From 9e3a21b5ebf1b620acfd51cef82cd549b83ed815 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 25 Apr 2003 21:21:07 +0000 Subject: * generic/tclBasic.c: Tcl_EvalObjv() failed to honor the TCL_EVAL_GLOBAL flag when resolving command names. Tcl_EvalEx passed a string rep including leading whitespace and comments to TclEvalObjvInternal(). --- ChangeLog | 7 +++++++ generic/tclBasic.c | 12 ++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4461127..4e9c664 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-04-25 Don Porter + + * generic/tclBasic.c: Tcl_EvalObjv() failed to honor the + TCL_EVAL_GLOBAL flag when resolving command names. Tcl_EvalEx + passed a string rep including leading whitespace and comments + to TclEvalObjvInternal(). + 2003-04-25 Andreas Kupries * win/tclWinThrd.c: Applied SF patch #727271. This patch changes diff --git a/generic/tclBasic.c b/generic/tclBasic.c index cf9df21..6605ed7 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75 2003/02/18 02:37:52 msofer Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.1 2003/04/25 21:21:25 dgp Exp $ */ #include "tclInt.h" @@ -3003,10 +3003,14 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) * word array with "unknown" as the first word and the original * command words as arguments. Then call ourselves recursively * to execute it. + * + * If caller requests, or if we're resolving the target end of + * an interpeter alias (TCL_EVAL_INVOKE), be sure to do command + * name resolution in the global namespace. */ savedVarFramePtr = iPtr->varFramePtr; - if (flags & TCL_EVAL_INVOKE) { + if (flags & (TCL_EVAL_INVOKE | TCL_EVAL_GLOBAL)) { iPtr->varFramePtr = NULL; } cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, objv[0]); @@ -3667,8 +3671,8 @@ Tcl_EvalEx(interp, script, numBytes, flags) code = TCL_ERROR; } else { iPtr->numLevels++; - code = TclEvalObjvInternal(interp, objectsUsed, objv, p, - parse.commandStart + parse.commandSize - p, 0); + code = TclEvalObjvInternal(interp, objectsUsed, objv, + parse.commandStart, parse.commandSize, 0); iPtr->numLevels--; } if (code != TCL_OK) { -- cgit v0.12 From 8fb4b544191b41c53d33158bd500989d683eae03 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Tue, 29 Apr 2003 11:45:22 +0000 Subject: glob and square brackets fix --- ChangeLog | 10 ++++++++++ generic/tclFileName.c | 17 ++++++++++++++--- tests/fileName.test | 9 ++++++++- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4e9c664..33d332f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2003-04-29 Vince Darley + + * generic/tclFileName.c: fix to bug reported privately by + Jeff where, for example, 'glob -path {[tcl]} *' gets confused + by the leading special character (which is escaped internally), + and instead lists files in '/'. Bug only occurs on Windows + where '\' is also a directory separator. (Bug has been around + at least since Tcl 8.3). + * tests/fileName.test: added test for the above bug. + 2003-04-25 Don Porter * generic/tclBasic.c: Tcl_EvalObjv() failed to honor the diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 16bf9d0..4a9a0b6 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40 2003/01/09 10:01:59 vincentdarley Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.1 2003/04/29 11:45:24 vincentdarley Exp $ */ #include "tclInt.h" @@ -2330,8 +2330,19 @@ TclDoGlob(interp, separators, headPtr, tail, types) count = 0; name = tail; for (; *tail != '\0'; tail++) { - if ((*tail == '\\') && (strchr(separators, tail[1]) != NULL)) { - tail++; + if (*tail == '\\') { + /* + * If the first character is escaped, either we have a directory + * separator, or we have any other character. In the latter case + * the rest of tail is a pattern, and we must break from the loop. + * This is particularly important on Windows where '\' is both + * the escaping character and a directory separator. + */ + if (strchr(separators, tail[1]) != NULL) { + tail++; + } else { + break; + } } else if (strchr(separators, *tail) == NULL) { break; } diff --git a/tests/fileName.test b/tests/fileName.test index 01b67ef..6247fb9 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30 2003/02/12 18:57:51 vincentdarley Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.1 2003/04/29 11:45:24 vincentdarley Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1333,6 +1333,13 @@ test filename-11.21 {Tcl_GlobCmd} { list [catch {lsort [glob -type d -path $globname *]} msg] $msg } [list 0 [lsort [list $globname]]] +test filename-11.21.1 {Tcl_GlobCmd} { + close [open {[tcl].testremains} w] + set res [list [catch {lsort [glob -path {[tcl]} *]} msg] $msg] + file delete -force {[tcl].testremains} + set res +} [list 0 {{[tcl].testremains}}] + # Get rid of file/dir if it exists, since it will have # been left behind by a previous failed run. if {[file exists $horribleglobname]} { -- cgit v0.12 From 805d2851fd086d66ae78c4a69446463105d1cba9 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 5 May 2003 16:52:31 +0000 Subject: Corrected error message for grammar and spelling. --- ChangeLog | 5 +++++ generic/tclBasic.c | 6 +++--- tests/basic.test | 4 ++-- tests/interp.test | 8 ++++---- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 33d332f..b94fd0a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-05-05 Donal K. Fellows + + * generic/tclBasic.c (Tcl_HideCommand): Fixed error message + grammar and spelling. + 2003-04-29 Vince Darley * generic/tclFileName.c: fix to bug reported privately by diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 6605ed7..0ad0818 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.1 2003/04/25 21:21:25 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.2 2003/05/05 16:52:33 dkf Exp $ */ #include "tclInt.h" @@ -1166,8 +1166,8 @@ Tcl_HideCommand(interp, cmdName, hiddenCmdToken) if (strstr(hiddenCmdToken, "::") != NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), - "cannot use namespace qualifiers as hidden command", - "token (rename)", (char *) NULL); + "cannot use namespace qualifiers in hidden command", + " token (rename)", (char *) NULL); return TCL_ERROR; } diff --git a/tests/basic.test b/tests/basic.test index c45a763..11b7bed 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.25 2003/02/16 01:36:32 msofer Exp $ +# RCS: @(#) $Id: basic.test,v 1.25.2.1 2003/05/05 16:52:33 dkf Exp $ # package require tcltest 2 @@ -132,7 +132,7 @@ test basic-12.1 {Tcl_HideCommand, names of hidden cmds can't have namespace qual list [catch {test_interp hide test_ns_basic::p x} msg] $msg \ [catch {test_interp hide x test_ns_basic::p} msg1] $msg1 \ [interp delete test_interp] -} {1 {can only hide global namespace commands (use rename then hide)} 1 {cannot use namespace qualifiers as hidden commandtoken (rename)} {}} +} {1 {can only hide global namespace commands (use rename then hide)} 1 {cannot use namespace qualifiers in hidden command token (rename)} {}} test basic-12.2 {Tcl_HideCommand, a hidden cmd remembers its containing namespace} { catch {namespace delete test_ns_basic} diff --git a/tests/interp.test b/tests/interp.test index eda883f..a9b9e65 100644 --- a/tests/interp.test +++ b/tests/interp.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: interp.test,v 1.19.2.1 2003/03/12 17:51:33 dgp Exp $ +# RCS: @(#) $Id: interp.test,v 1.19.2.2 2003/05/05 16:52:33 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -1498,7 +1498,7 @@ test interp-20.45 {interp hide vs namespaces} { set l [list [catch {interp hide a foo::x} msg] $msg] interp delete a set l -} {1 {cannot use namespace qualifiers as hidden commandtoken (rename)}} +} {1 {cannot use namespace qualifiers in hidden command token (rename)}} test interp-20.46 {interp hide vs namespaces} { catch {interp delete a} interp create a @@ -1519,7 +1519,7 @@ test interp-20.47 {interp hide vs namespaces} { set l [list [catch {interp hide a x foo::x} msg] $msg] interp delete a set l -} {1 {cannot use namespace qualifiers as hidden commandtoken (rename)}} +} {1 {cannot use namespace qualifiers in hidden command token (rename)}} test interp-20.48 {interp hide vs namespaces} { catch {interp delete a} interp create a @@ -1530,7 +1530,7 @@ test interp-20.48 {interp hide vs namespaces} { set l [list [catch {interp hide a foo::x bar::x} msg] $msg] interp delete a set l -} {1 {cannot use namespace qualifiers as hidden commandtoken (rename)}} +} {1 {cannot use namespace qualifiers in hidden command token (rename)}} test interp-21.1 {interp hidden} { interp hidden {} -- cgit v0.12 From f078556e548f07a9a211e161b1526adc5bee0a15 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 5 May 2003 16:59:49 +0000 Subject: * library/tcltest/tcltest.tcl: The -returnCodes option to [test] failed to recognize the symbolic name "ok" for return code 0. --- ChangeLog | 5 +++++ library/tcltest/tcltest.tcl | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b94fd0a..e54a630 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-05-05 Don Porter + + * library/tcltest/tcltest.tcl: The -returnCodes option to [test] + failed to recognize the symbolic name "ok" for return code 0. + 2003-05-05 Donal K. Fellows * generic/tclBasic.c (Tcl_HideCommand): Fixed error message diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 43ca8e7..7c237e6 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.2 2003/04/21 20:41:55 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.3 2003/05/05 16:59:50 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -1919,7 +1919,7 @@ proc tcltest::test {name description args} { } # Replace symbolic valies supplied for -returnCodes - foreach {strcode numcode} {normal 0 error 1 return 2 break 3 continue 4} { + foreach {strcode numcode} {ok 0 normal 0 error 1 return 2 break 3 continue 4} { set returnCodes [string map -nocase [list $strcode $numcode] $returnCodes] } } else { -- cgit v0.12 From 30b8cb623523687d9bf4ed2bf1f61e289038df74 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sat, 10 May 2003 00:09:08 +0000 Subject: fix for [Bug 731754] --- generic/tclThreadAlloc.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index 8f702f4..eac2afc 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4 2002/08/26 13:05:56 msofer Exp $ */ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.1 2003/05/10 00:09:08 mistachkin Exp $ */ #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) @@ -276,11 +276,7 @@ TclFreeAllocCache(void *arg) *nextPtrPtr = cachePtr->nextPtr; cachePtr->nextPtr = NULL; Tcl_MutexUnlock(listLockPtr); -#ifdef WIN32 - TlsFree((DWORD) cachePtr); -#else free(cachePtr); -#endif } -- cgit v0.12 From bd23f3d38d90df4d13ed707fec50e231ce016152 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sat, 10 May 2003 04:57:40 +0000 Subject: fix bad cvs lf conversion --- generic/tclThreadAlloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index eac2afc..0023e35 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,8 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.1 2003/05/10 00:09:08 mistachkin Exp $ */ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.2 2003/05/10 04:57:40 mistachkin Exp $ + */ #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) -- cgit v0.12 From 1a9fd777ca966fd412d3d0149ad3d4529ff76ea7 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sat, 10 May 2003 05:00:11 +0000 Subject: fix for [Bugs 733221, 733156] --- win/tclAppInit.c | 91 +++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 21 deletions(-) diff --git a/win/tclAppInit.c b/win/tclAppInit.c index 864f59a..bed9ea8 100644 --- a/win/tclAppInit.c +++ b/win/tclAppInit.c @@ -1,4 +1,4 @@ -/* +/* * tclAppInit.c -- * * Provides a default version of the main program and Tcl_AppInit @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAppInit.c,v 1.11 2002/12/04 03:59:17 davygrvy Exp $ + * RCS: @(#) $Id: tclAppInit.c,v 1.11.2.1 2003/05/10 05:00:11 mistachkin Exp $ */ #include "tcl.h" @@ -31,9 +31,11 @@ extern int TclThread_Init _ANSI_ARGS_((Tcl_Interp *interp)); static void setargv _ANSI_ARGS_((int *argcPtr, char ***argvPtr)); static BOOL __stdcall sigHandler (DWORD fdwCtrlType); static Tcl_AsyncProc asyncExit; +static void AppInitExitHandler(ClientData clientData); -Tcl_AsyncHandler exitToken; -DWORD exitErrorCode; +static char ** argvSave = NULL; +static Tcl_AsyncHandler exitToken = NULL; +static DWORD exitErrorCode = 0; /* @@ -64,18 +66,18 @@ main(argc, argv) * of rewriting this entire file. The #if checks for that * #define and uses Tcl_AppInit if it doesn't exist. */ - + #ifndef TCL_LOCAL_APPINIT -#define TCL_LOCAL_APPINIT Tcl_AppInit +#define TCL_LOCAL_APPINIT Tcl_AppInit #endif extern int TCL_LOCAL_APPINIT _ANSI_ARGS_((Tcl_Interp *interp)); - + /* * The following #if block allows you to change how Tcl finds the startup * script, prime the library or encoding paths, fiddle with the argv, * etc., without needing to rewrite Tcl_Main() */ - + #ifdef TCL_LOCAL_MAIN_HOOK extern int TCL_LOCAL_MAIN_HOOK _ANSI_ARGS_((int *argc, char ***argv)); #endif @@ -91,6 +93,11 @@ main(argc, argv) setargv(&argc, &argv); /* + * Save this for later, so we can free it. + */ + argvSave = argv; + + /* * Replace argv[0] with full pathname of executable, and forward * slashes substituted for backslashes. */ @@ -143,8 +150,14 @@ Tcl_AppInit(interp) /* * Install a signal handler to the win32 console tclsh is running in. */ - SetConsoleCtrlHandler(sigHandler, TRUE); - exitToken = Tcl_AsyncCreate(asyncExit, NULL); + SetConsoleCtrlHandler(sigHandler, TRUE); + exitToken = Tcl_AsyncCreate(asyncExit, NULL); + + /* + * This exit handler will be used to free the + * resources allocated in this file. + */ + Tcl_CreateExitHandler(AppInitExitHandler, NULL); #ifdef TCL_TEST if (Tcltest_Init(interp) == TCL_ERROR) { @@ -212,12 +225,48 @@ Tcl_AppInit(interp) } /* + *---------------------------------------------------------------------- + * + * AppInitExitHandler -- + * + * This function is called to cleanup the app init resources before + * Tcl is unloaded. + * + * Results: + * None. + * + * Side effects: + * Frees the saved argv and deletes the async exit handler. + * + *---------------------------------------------------------------------- + */ + +static void +AppInitExitHandler( + ClientData clientData) +{ + if (argvSave != NULL) { + ckfree((char *)argvSave); + argvSave = NULL; + } + + if (exitToken != NULL) { + /* + * This should be safe to do even if we + * are in an async exit right now. + */ + Tcl_AsyncDelete(exitToken); + exitToken = NULL; + } +} + +/* *------------------------------------------------------------------------- * * setargv -- * * Parse the Windows command line string into argc/argv. Done here - * because we don't trust the builtin argument parser in crt0. + * because we don't trust the builtin argument parser in crt0. * Windows applications are responsible for breaking their command * line into arguments. * @@ -246,7 +295,7 @@ setargv(argcPtr, argvPtr) char *cmdLine, *p, *arg, *argSpace; char **argv; int argc, size, inquote, copy, slashes; - + cmdLine = GetCommandLine(); /* INTL: BUG */ /* @@ -327,7 +376,7 @@ setargv(argcPtr, argvPtr) *argcPtr = argc; *argvPtr = argv; } - + /* *---------------------------------------------------------------------- * @@ -352,7 +401,7 @@ asyncExit (ClientData clientData, Tcl_Interp *interp, int code) /* NOTREACHED */ return code; } - + /* *---------------------------------------------------------------------- * @@ -385,16 +434,16 @@ sigHandler(DWORD fdwCtrlType) exitErrorCode = fdwCtrlType; Tcl_AsyncMark(exitToken); - /* - * This will cause Tcl_Gets in Tcl_Main() to drop-out with an - * should it be blocked on input and our Tcl_AsyncMark didn't grab - * the attention of the interpreter. + /* + * This will cause Tcl_Gets in Tcl_Main() to drop-out with an + * should it be blocked on input and our Tcl_AsyncMark didn't grab + * the attention of the interpreter. */ hStdIn = GetStdHandle(STD_INPUT_HANDLE); if (hStdIn) { CloseHandle(hStdIn); } - /* indicate to the OS not to call the default terminator */ - return TRUE; -} + /* indicate to the OS not to call the default terminator */ + return TRUE; +} -- cgit v0.12 From 80ce402c2de0bb3494b97e738563fb4c94b7311f Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sat, 10 May 2003 07:43:17 +0000 Subject: fix for [Bug 733221] --- tools/encoding/txt2enc.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tools/encoding/txt2enc.c b/tools/encoding/txt2enc.c index 73870bf..7ce85ef 100644 --- a/tools/encoding/txt2enc.c +++ b/tools/encoding/txt2enc.c @@ -92,7 +92,7 @@ main(int argc, char **argv) case 'm': fixmissing = 0; break; - + default: goto usage; } @@ -174,7 +174,7 @@ main(int argc, char **argv) if (enc < 32 || uni < 32) { continue; } - + hi = enc >> 8; lo = enc & 0xff; if (toUnicode[hi] == NULL) { @@ -183,7 +183,7 @@ main(int argc, char **argv) } toUnicode[hi][lo] = uni; } - + fclose(fp); dot = strrchr(argv[argc - 1], '.'); @@ -228,7 +228,7 @@ main(int argc, char **argv) } } printf("%c\n%04X %d %d\n", "SDM"[type], fallbackChar, symbol, used); - + for (hi = 0; hi < 256; hi++) { if (toUnicode[hi] != NULL) { printf("%02X\n", hi); @@ -240,5 +240,12 @@ main(int argc, char **argv) } } } + + for (hi = 0; hi < 256; hi++) { + if (toUnicode[hi] != NULL) { + free(toUnicode[hi]); + toUnicode[hi] = NULL; + } + } return 0; } -- cgit v0.12 From a1a89f3a0b9f77e6761a98f7abb6fd2a18bdaed4 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sat, 10 May 2003 08:20:55 +0000 Subject: fix for [Bugs 733156, 733221] --- ChangeLog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ChangeLog b/ChangeLog index e54a630..e327063 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2003-05-09 Joe Mistachkin + + * generic/tclThreadAlloc.c (TclFreeAllocCache): Fixed memory leak + caused by treating cachePtr as a TLS index [Bug 731754]. + + * win/tclAppInit.c (Tcl_AppInit): Fixed memory leaks caused by not + freeing the memory allocated by setargv and the async handler created + by Tcl_AppInit. An exit handler has been created that takes care of + both leaks. In addition, Tcl_AppInit now uses ckalloc instead of + Tcl_Alloc to allow for easier leak tracking and to be more consistent + with the rest of the Tcl core [Bugs 733156, 733221]. + + * tools/encoding/txt2enc.c (main): Fixed memory leak caused by failing + to free the memory used by the toUnicode array of strings [Bug 733221]. + 2003-05-05 Don Porter * library/tcltest/tcltest.tcl: The -returnCodes option to [test] -- cgit v0.12 From ca7a5fa3513866dc5af04d659b7a2303c6191088 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sat, 10 May 2003 23:55:07 +0000 Subject: * generic/tclCmdMZ.c (Tcl_StringObjCmd): prevent string repeat crash when overflow sizes were given (throws error). [Bug #714106] --- ChangeLog | 39 ++++++++++++++++++++++----------------- generic/tclCmdMZ.c | 11 ++++++++++- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index e327063..037a034 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-05-10 Jeff Hobbs + + * generic/tclCmdMZ.c (Tcl_StringObjCmd): prevent string repeat + crash when overflow sizes were given (throws error). [Bug #714106] + 2003-05-09 Joe Mistachkin * generic/tclThreadAlloc.c (TclFreeAllocCache): Fixed memory leak @@ -184,10 +189,10 @@ test guarding Tcl_AddObjErrorInfo to take this into account. [Bug reported by Don Porter; no bug-id.] -2003-04-07 Don Porter +2003-04-07 Don Porter - * generic/tclCompCmds.c (TclCompileIfCmd): Corrected string limits of - arguments interpolated in error messages. [Bug 711371] + * generic/tclCompCmds.c (TclCompileIfCmd): Corrected string limits of + arguments interpolated in error messages. [Bug 711371] * generic/tclCmdMZ.c (TraceExecutionProc): Added missing Tcl_DiscardResult() call to avoid memory leak. @@ -210,11 +215,11 @@ -ltclstub85 instead of -ltclstub85s when configured with --disable-shared. -2003-04-01 Don Porter +2003-04-01 Don Porter - * tests/README: Direct [source] of *.test files is no longer - recommended. The tests/*.test files should only be evaluated under - the control of the [runAllTests] command in tests/all.tcl. + * tests/README: Direct [source] of *.test files is no longer + recommended. The tests/*.test files should only be evaluated under + the control of the [runAllTests] command in tests/all.tcl. 2003-03-27 Miguel Sofer @@ -240,22 +245,22 @@ * tests/format.test: * tests/foreach.test: -2003-03-26 Don Porter +2003-03-26 Don Porter * doc/tcltest.n: - * library/tcltest/tcltest.tcl: Added reporting during + * library/tcltest/tcltest.tcl: Added reporting during [configure -debug 1] operations to warn about multiple uses of the same test name. [FR 576693] Replaced [regexp] and [regsub] with [string map] where possible. Thanks to David Welton. [Bugs 667456,667558] - * library/tcltest/pkgIndex.tcl: Bumped to tcltest 2.2.3 + * library/tcltest/pkgIndex.tcl: Bumped to tcltest 2.2.3 * tests/msgcat.test (msgcat-2.2.1): changed test name to avoid duplication. [Bug 710356] - * unix/dltest/pkg?.c: Changed all Tcl_InitStubs calls to pass - argument exact = 0, so that rebuilds are not required when Tcl - bumps to a new version. [Bug 701926] + * unix/dltest/pkg?.c: Changed all Tcl_InitStubs calls to pass + argument exact = 0, so that rebuilds are not required when Tcl + bumps to a new version. [Bug 701926] 2003-03-24 Miguel Sofer @@ -373,11 +378,11 @@ * win/makefile.vc: Added two missing uses of $(DBGX) so that tclpip8x.dll loads without panicking on Win9x. - -2003-03-08 Don Porter - * doc/tcltest.n: Added missing "-body" to example. Thanks to - Helmut Giese. [Bug 700011] +2003-03-08 Don Porter + + * doc/tcltest.n: Added missing "-body" to example. Thanks to + Helmut Giese. [Bug 700011] 2003-03-06 Don Porter diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 8c4a951..5a1751e 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.3 2003/04/11 20:49:53 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.4 2003/05/10 23:55:08 hobbs Exp $ */ #include "tclInt.h" @@ -2104,8 +2104,17 @@ Tcl_StringObjCmd(dummy, interp, objc, objv) * Only build up a string that has data. Instead of * building it up with repeated appends, we just allocate * the necessary space once and copy the string value in. + * Check for overflow with back-division. [Bug #714106] */ length2 = length1 * count; + if ((length2 / count) != length1) { + char buf[TCL_INTEGER_SPACE+1]; + sprintf(buf, "%d", INT_MAX); + Tcl_AppendStringsToObj(resultPtr, + "string size overflow, must be less than ", + buf, (char *) NULL); + return TCL_ERROR; + } /* * Include space for the NULL */ -- cgit v0.12 From 6582ac0a0d302dd8664f42edc0336906c7752569 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sun, 11 May 2003 00:31:41 +0000 Subject: * win/tclWinSerial.c (SerialCloseProc): correct mem leak on closing a Windows serial port [Bug #718002] (schroedter) --- ChangeLog | 3 +++ win/tclWinSerial.c | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 037a034..28b8f5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-05-10 Jeff Hobbs + * win/tclWinSerial.c (SerialCloseProc): correct mem leak on + closing a Windows serial port [Bug #718002] (schroedter) + * generic/tclCmdMZ.c (Tcl_StringObjCmd): prevent string repeat crash when overflow sizes were given (throws error). [Bug #714106] diff --git a/win/tclWinSerial.c b/win/tclWinSerial.c index fb819a2..17678f2 100644 --- a/win/tclWinSerial.c +++ b/win/tclWinSerial.c @@ -11,7 +11,7 @@ * * Serial functionality implemented by Rolf.Schroedter@dlr.de * - * RCS: @(#) $Id: tclWinSerial.c,v 1.25 2003/01/16 20:55:53 hobbs Exp $ + * RCS: @(#) $Id: tclWinSerial.c,v 1.25.2.1 2003/05/11 00:31:41 hobbs Exp $ */ #include "tclWinInt.h" @@ -647,6 +647,8 @@ SerialCloseProc( } CloseHandle(serialPtr->writeThread); + CloseHandle(serialPtr->osWrite.hEvent); + DeleteCriticalSection(&serialPtr->csWrite); CloseHandle(serialPtr->evWritable); CloseHandle(serialPtr->evStartWriter); CloseHandle(serialPtr->evStopWriter); -- cgit v0.12 From 1df1a5e7e8cd46a3c9858b816e3f8836f6f39c18 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sun, 11 May 2003 01:23:12 +0000 Subject: * generic/tclIOUtil.c: ensure cd is thread-safe. [Bug #710642] (vasiljevic) --- ChangeLog | 3 + generic/tclIOUtil.c | 170 +++++++++++++++++++++++++++++++--------------------- 2 files changed, 105 insertions(+), 68 deletions(-) diff --git a/ChangeLog b/ChangeLog index 28b8f5c..cc7f5c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-05-10 Jeff Hobbs + * generic/tclIOUtil.c: ensure cd is thread-safe. + [Bug #710642] (vasiljevic) + * win/tclWinSerial.c (SerialCloseProc): correct mem leak on closing a Windows serial port [Bug #718002] (schroedter) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 6464a5b..840c431 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.2 2003/04/14 15:45:49 vincentdarley Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.3 2003/05/11 01:23:13 hobbs Exp $ */ #include "tclInt.h" @@ -488,8 +488,21 @@ TCL_DECLARE_MUTEX(filesystemMutex) * This is protected by the cwdMutex below. */ static Tcl_Obj* cwdPathPtr = NULL; +static int cwdPathEpoch = 0; TCL_DECLARE_MUTEX(cwdMutex) +/* + * This structure holds per-thread private copy of the + * current directory maintained by the global cwdPathPtr. + */ +typedef struct ThreadSpecificData { + int initialized; + int cwdPathEpoch; + Tcl_Obj *cwdPathPtr; +} ThreadSpecificData; + +Tcl_ThreadDataKey dataKey; + /* * Declare fallback support function and * information for Tcl_FSLoadFile @@ -514,21 +527,48 @@ typedef struct FsDivertLoad { /* Now move on to the basic filesystem implementation */ +static void +FsThrExitProc(cd) + ClientData cd; +{ + ThreadSpecificData *tsdPtr = (ThreadSpecificData*)cd; + if (tsdPtr->cwdPathPtr != NULL) { + Tcl_DecrRefCount(tsdPtr->cwdPathPtr); + } +} int TclFSCwdPointerEquals(objPtr) Tcl_Obj* objPtr; { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + Tcl_MutexLock(&cwdMutex); - if (cwdPathPtr == objPtr) { - Tcl_MutexUnlock(&cwdMutex); - return 1; - } else { - Tcl_MutexUnlock(&cwdMutex); - return 0; + if (tsdPtr->initialized == 0) { + Tcl_CreateThreadExitHandler(FsThrExitProc, (ClientData)tsdPtr); + tsdPtr->initialized = 1; + } + if (tsdPtr->cwdPathPtr == NULL) { + if (cwdPathPtr == NULL) { + tsdPtr->cwdPathPtr = NULL; + } else { + tsdPtr->cwdPathPtr = Tcl_DuplicateObj(cwdPathPtr); + Tcl_IncrRefCount(tsdPtr->cwdPathPtr); + } + tsdPtr->cwdPathEpoch = cwdPathEpoch; + } else if (tsdPtr->cwdPathEpoch != cwdPathEpoch) { + Tcl_DecrRefCount(tsdPtr->cwdPathPtr); + if (cwdPathPtr == NULL) { + tsdPtr->cwdPathPtr = NULL; + } else { + tsdPtr->cwdPathPtr = Tcl_DuplicateObj(cwdPathPtr); + Tcl_IncrRefCount(tsdPtr->cwdPathPtr); + } } -} + Tcl_MutexUnlock(&cwdMutex); + return (tsdPtr->cwdPathPtr == objPtr); +} static FilesystemRecord* FsGetIterator(void) { @@ -552,6 +592,44 @@ FsReleaseIterator(void) { Tcl_MutexUnlock(&filesystemMutex); } +static void +FsUpdateCwd(cwdObj) + Tcl_Obj *cwdObj; +{ + int len; + char *str = NULL; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + if (cwdObj != NULL) { + str = Tcl_GetStringFromObj(cwdObj, &len); + } + + Tcl_MutexLock(&cwdMutex); + if (cwdPathPtr != NULL) { + Tcl_DecrRefCount(cwdPathPtr); + } + if (cwdObj == NULL) { + cwdPathPtr = NULL; + } else { + /* This must be stored as string obj! */ + cwdPathPtr = Tcl_NewStringObj(str, len); + Tcl_IncrRefCount(cwdPathPtr); + } + cwdPathEpoch++; + tsdPtr->cwdPathEpoch = cwdPathEpoch; + Tcl_MutexUnlock(&cwdMutex); + + if (tsdPtr->cwdPathPtr) { + Tcl_DecrRefCount(tsdPtr->cwdPathPtr); + } + if (cwdObj == NULL) { + tsdPtr->cwdPathPtr = NULL; + } else { + tsdPtr->cwdPathPtr = Tcl_NewStringObj(str, len); + Tcl_IncrRefCount(tsdPtr->cwdPathPtr); + } +} + /* *---------------------------------------------------------------------- * @@ -583,6 +661,7 @@ TclFinalizeFilesystem() if (cwdPathPtr != NULL) { Tcl_DecrRefCount(cwdPathPtr); cwdPathPtr = NULL; + cwdPathEpoch = 0; } /* @@ -2203,8 +2282,10 @@ Tcl_FSFileAttrsSet(interp, index, pathPtr, objPtr) * should therefore ensure they only access the cwd through this * function to avoid confusion. * - * If a global cwdPathPtr already exists, it is returned, subject - * to a synchronisation attempt in that cwdPathPtr's fs. + * If a global cwdPathPtr already exists, it is cached in the thread's + * private data structures and reference to the cached copy is returned, + * subject to a synchronisation attempt in that cwdPathPtr's fs. + * * Otherwise, the chain of functions that have been "inserted" * into the filesystem will be called in succession until either a * value other than NULL is returned, or the entire list is @@ -2218,13 +2299,6 @@ Tcl_FSFileAttrsSet(interp, index, pathPtr, objPtr) * * The result already has its refCount incremented for the caller. * When it is no longer needed, that refCount should be decremented. - * This is needed for thread-safety purposes, to allow multiple - * threads to access this and related functions, while ensuring the - * results are always valid. - * - * Of course it is probably a bad idea for multiple threads to - * be *setting* the cwd anyway, but we can at least try to - * help the case of multiple reads with occasional sets. * * Side effects: * Various objects may be freed and allocated. @@ -2236,7 +2310,7 @@ Tcl_Obj* Tcl_FSGetCwd(interp) Tcl_Interp *interp; { - Tcl_Obj *cwdToReturn; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); if (TclFSCwdPointerEquals(NULL)) { FilesystemRecord *fsRecPtr; @@ -2282,14 +2356,7 @@ Tcl_FSGetCwd(interp) * we'll always be in the 'else' branch below which * is simpler. */ - Tcl_MutexLock(&cwdMutex); - /* Just in case the pointer has been set by another - * thread between now and the test above */ - if (cwdPathPtr != NULL) { - Tcl_DecrRefCount(cwdPathPtr); - } - cwdPathPtr = norm; - Tcl_MutexUnlock(&cwdMutex); + FsUpdateCwd(norm); } Tcl_DecrRefCount(retVal); } @@ -2301,7 +2368,7 @@ Tcl_FSGetCwd(interp) * allows an error to be thrown if, say, the permissions on * that directory have changed. */ - Tcl_Filesystem *fsPtr = Tcl_FSGetFileSystemForPath(cwdPathPtr); + Tcl_Filesystem *fsPtr = Tcl_FSGetFileSystemForPath(tsdPtr->cwdPathPtr); /* * If the filesystem couldn't be found, or if no cwd function * exists for this filesystem, then we simply assume the cached @@ -2324,7 +2391,7 @@ Tcl_FSGetCwd(interp) */ if (norm == NULL) { /* Do nothing */ - } else if (Tcl_FSEqualPaths(cwdPathPtr, norm)) { + } else if (Tcl_FSEqualPaths(tsdPtr->cwdPathPtr, norm)) { /* * If the paths were equal, we can be more * efficient and retain the old path object @@ -2334,42 +2401,22 @@ Tcl_FSGetCwd(interp) */ Tcl_DecrRefCount(norm); } else { - /* The cwd has in fact changed, so we must - * lock down the cwdMutex to modify. */ - Tcl_MutexLock(&cwdMutex); - Tcl_DecrRefCount(cwdPathPtr); - cwdPathPtr = norm; - Tcl_MutexUnlock(&cwdMutex); + FsUpdateCwd(norm); } Tcl_DecrRefCount(retVal); } else { - /* The 'cwd' function returned an error, so we - * reset the cwd after locking down the mutex. */ - Tcl_MutexLock(&cwdMutex); - Tcl_DecrRefCount(cwdPathPtr); - cwdPathPtr = NULL; - Tcl_MutexUnlock(&cwdMutex); + /* The 'cwd' function returned an error; reset the cwd */ + FsUpdateCwd(NULL); } } } } - /* - * The paths all eventually fall through to here. Note that - * we use a bunch of separate mutex locks throughout this - * code to help prevent deadlocks between threads. Really - * the only weirdness will arise if multiple threads are setting - * and reading the cwd, and that behaviour is always going to be - * a little suspect. - */ - Tcl_MutexLock(&cwdMutex); - cwdToReturn = cwdPathPtr; - if (cwdToReturn != NULL) { - Tcl_IncrRefCount(cwdToReturn); + if (tsdPtr->cwdPathPtr != NULL) { + Tcl_IncrRefCount(tsdPtr->cwdPathPtr); } - Tcl_MutexUnlock(&cwdMutex); - return (cwdToReturn); + return tsdPtr->cwdPathPtr; } /* @@ -2446,20 +2493,7 @@ Tcl_FSChdir(pathPtr) if (normDirName == NULL) { return TCL_ERROR; } - /* - * We will be adding a reference to this object when - * we store it in the cwdPathPtr. - */ - Tcl_IncrRefCount(normDirName); - /* Get a lock on the cwd while we modify it */ - Tcl_MutexLock(&cwdMutex); - /* Free up the previous cwd we stored */ - if (cwdPathPtr != NULL) { - Tcl_DecrRefCount(cwdPathPtr); - } - /* Now remember the current cwd */ - cwdPathPtr = normDirName; - Tcl_MutexUnlock(&cwdMutex); + FsUpdateCwd(normDirName); } } else { Tcl_SetErrno(ENOENT); -- cgit v0.12 From ec182fda6d0885ae2ff8cb248e20fbc6605754f5 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Mon, 12 May 2003 08:41:15 +0000 Subject: Corrected the Tcl bug #723502 --- unix/tclUnixThrd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index ebfd322..d5f1e54 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -819,7 +819,7 @@ TclpReaddir(DIR * dir) # endif /* HAVE_STRUCT_DIRENT64 */ if (ent != NULL) { memcpy((VOID *) &tsdPtr->rdbuf.ent, (VOID *) ent, - sizeof(&tsdPtr->rdbuf)); + sizeof(tsdPtr->rdbuf)); ent = &tsdPtr->rdbuf.ent; } Tcl_MutexUnlock(&rdMutex); -- cgit v0.12 From b95a9126f621fbe906c1e61a45a571d044973e91 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Mon, 12 May 2003 08:46:51 +0000 Subject: Added comment about correcting the #723502 bug. --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index cc7f5c4..5ed7890 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-05-10 Zoran Vasiljevic + + * unix/tclUnixThrd.c: corrected Tcl Bug #723502 + 2003-05-10 Jeff Hobbs * generic/tclIOUtil.c: ensure cd is thread-safe. -- cgit v0.12 From 88277cfbf1cceab46833ba93902ebb9fe1da8133 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 12 May 2003 17:31:50 +0000 Subject: * generic/tclVar.c (TclObjLookupVar): [Bug 735335] temporary fix, disabling usage of tclNsVarNameType. * tests/var.test (var-15.1): test for [Bug 735335] --- ChangeLog | 6 ++++++ generic/tclVar.c | 14 +++++++++++++- tests/var.test | 16 +++++++++++++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5ed7890..77051a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-05-12 Miguel Sofer + + * generic/tclVar.c (TclObjLookupVar): [Bug 735335] temporary fix, + disabling usage of tclNsVarNameType. + * tests/var.test (var-15.1): test for [Bug 735335] + 2003-05-10 Zoran Vasiljevic * unix/tclUnixThrd.c: corrected Tcl Bug #723502 diff --git a/generic/tclVar.c b/generic/tclVar.c index f9957fe..a46b2d3 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.2 2003/04/16 23:31:47 dgp Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.3 2003/05/12 17:31:51 msofer Exp $ */ #include "tclInt.h" @@ -551,6 +551,17 @@ TclObjLookupVar(interp, part1Ptr, part2, flags, msg, createPart1, createPart2, procPtr->refCount++; part1Ptr->internalRep.twoPtrValue.ptr1 = (VOID *) procPtr; part1Ptr->internalRep.twoPtrValue.ptr2 = (VOID *) index; +#if 0 + /* + * TEMPORARYLY DISABLED tclNsVarNameType + * + * This is a stop-gap fix for [Bug 735335]; it may not address the + * real issue (which I haven't pinned down yet), but it avoids the + * segfault in the test case. + * This optimisation will hopefully be turned back on soon. + * Miguel Sofer, 2003-05-12 + */ + } else if (index > -3) { Namespace *nsPtr; @@ -559,6 +570,7 @@ TclObjLookupVar(interp, part1Ptr, part2, flags, msg, createPart1, createPart2, part1Ptr->typePtr = &tclNsVarNameType; part1Ptr->internalRep.twoPtrValue.ptr1 = (VOID *) nsPtr; part1Ptr->internalRep.twoPtrValue.ptr2 = (VOID *) varPtr; +#endif } else { /* * At least mark part1Ptr as already parsed. diff --git a/tests/var.test b/tests/var.test index c8e57d8..2f0c1df 100644 --- a/tests/var.test +++ b/tests/var.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: var.test,v 1.20.2.1 2003/03/24 00:55:16 msofer Exp $ +# RCS: @(#) $Id: var.test,v 1.20.2.2 2003/05/12 17:31:51 msofer Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -680,6 +680,20 @@ test var-14.1 {array names syntax} -body { array names foo bar baz snafu } -returnCodes 1 -match glob -result * +test var-15.1 {segfault in [unset], [Bug 735335]} { + proc A { name } { + upvar $name var + set var $name + } + # + # Note that the variable name has to be + # unused previously for the segfault to + # be triggered. + # + namespace eval test A useSomeUnlikelyNameHere + namespace eval test unset useSomeUnlikelyNameHere +} {} + catch {namespace delete ns} catch {unset arr} catch {unset v} -- cgit v0.12 From 4d371261ae296c76cb1784f1c9a183b24bd3840f Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 12 May 2003 17:35:42 +0000 Subject: * doc/Eval.3: Corrected prototype for Tcl_GlobalEvalObj [Bug 727622]. --- ChangeLog | 4 ++++ doc/Eval.3 | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 77051a2..907edf0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-05-12 Don Porter + + * doc/Eval.3: Corrected prototype for Tcl_GlobalEvalObj [Bug 727622]. + 2003-05-12 Miguel Sofer * generic/tclVar.c (TclObjLookupVar): [Bug 735335] temporary fix, diff --git a/doc/Eval.3 b/doc/Eval.3 index 774aa55..f6edb2f 100644 --- a/doc/Eval.3 +++ b/doc/Eval.3 @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Eval.3,v 1.12.2.1 2003/03/19 20:06:50 dgp Exp $ +'\" RCS: @(#) $Id: Eval.3,v 1.12.2.2 2003/05/12 17:35:43 dgp Exp $ '\" .so man.macros .TH Tcl_Eval 3 8.1 Tcl "Tcl Library Procedures" @@ -37,7 +37,7 @@ int \fBTcl_GlobalEval\fR(\fIinterp, script\fR) .sp int -\fBTcl_GlobalEvalObj\fR(\fIinterp, objPtr, flags\fR) +\fBTcl_GlobalEvalObj\fR(\fIinterp, objPtr\fR) .sp int \fBTcl_VarEval\fR(\fIinterp, string, string, ... \fB(char *) NULL\fR) -- cgit v0.12 From 78a425544eec8223eb72dbc5a1c1f13536a440ef Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 12 May 2003 19:29:48 +0000 Subject: * generic/tclObj.c (tclCmdNameType): Corrected variable use of the otherValuePtr or the twoPtrValue.ptr1 fields to store a (ResolvedCmdName *) as the internal rep. [Bug 726018]. --- ChangeLog | 4 ++++ generic/tclObj.c | 11 ++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 907edf0..bfed5e5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2003-05-12 Don Porter + * generic/tclObj.c (tclCmdNameType): Corrected variable use of the + otherValuePtr or the twoPtrValue.ptr1 fields to store a + (ResolvedCmdName *) as the internal rep. [Bug 726018]. + * doc/Eval.3: Corrected prototype for Tcl_GlobalEvalObj [Bug 727622]. 2003-05-12 Miguel Sofer diff --git a/generic/tclObj.c b/generic/tclObj.c index 050dfb6..bf496ec 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.2 2003/04/16 23:31:45 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.3 2003/05/12 19:29:50 dgp Exp $ */ #include "tclInt.h" @@ -2991,8 +2991,7 @@ TclSetCmdNameObj(interp, objPtr, cmdPtr) if ((oldTypePtr != NULL) && (oldTypePtr->freeIntRepProc != NULL)) { oldTypePtr->freeIntRepProc(objPtr); } - objPtr->internalRep.twoPtrValue.ptr1 = (VOID *) resPtr; - objPtr->internalRep.twoPtrValue.ptr2 = NULL; + objPtr->internalRep.otherValuePtr = (VOID *) resPtr; objPtr->typePtr = &tclCmdNameType; } @@ -3074,8 +3073,7 @@ DupCmdNameInternalRep(srcPtr, copyPtr) register ResolvedCmdName *resPtr = (ResolvedCmdName *) srcPtr->internalRep.otherValuePtr; - copyPtr->internalRep.twoPtrValue.ptr1 = (VOID *) resPtr; - copyPtr->internalRep.twoPtrValue.ptr2 = NULL; + copyPtr->internalRep.otherValuePtr = (VOID *) resPtr; if (resPtr != NULL) { resPtr->refCount++; } @@ -3170,8 +3168,7 @@ SetCmdNameFromAny(interp, objPtr) objPtr->typePtr->freeIntRepProc(objPtr); } - objPtr->internalRep.twoPtrValue.ptr1 = (VOID *) resPtr; - objPtr->internalRep.twoPtrValue.ptr2 = NULL; + objPtr->internalRep.otherValuePtr = (VOID *) resPtr; objPtr->typePtr = &tclCmdNameType; return TCL_OK; } -- cgit v0.12 From 2a26062f73b0c5e421d2c02d7781b2848b1d0e53 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 12 May 2003 20:16:07 +0000 Subject: * generic/tclBasic.c (TclInvokeObjectCommand): objv[argc] is no longer set to NULL (Tcl_CreateObjCommand docs already say that it should not be accessed). --- ChangeLog | 4 ++++ generic/tclBasic.c | 7 +++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index bfed5e5..ebb70a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2003-05-12 Don Porter + * generic/tclBasic.c (TclInvokeObjectCommand): objv[argc] is no + longer set to NULL (Tcl_CreateObjCommand docs already say that it + should not be accessed). + * generic/tclObj.c (tclCmdNameType): Corrected variable use of the otherValuePtr or the twoPtrValue.ptr1 fields to store a (ResolvedCmdName *) as the internal rep. [Bug 726018]. diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 0ad0818..8eda27e 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.2 2003/05/05 16:52:33 dkf Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.3 2003/05/12 20:16:08 dgp Exp $ */ #include "tclInt.h" @@ -1837,9 +1837,9 @@ TclInvokeObjectCommand(clientData, interp, argc, argv) * end-of-objv word. */ - if ((argc + 1) > NUM_ARGS) { + if (argc > NUM_ARGS) { objv = (Tcl_Obj **) - ckalloc((unsigned)(argc + 1) * sizeof(Tcl_Obj *)); + ckalloc((unsigned)(argc * sizeof(Tcl_Obj *))); } for (i = 0; i < argc; i++) { @@ -1849,7 +1849,6 @@ TclInvokeObjectCommand(clientData, interp, argc, argv) Tcl_IncrRefCount(objPtr); objv[i] = objPtr; } - objv[argc] = 0; /* * Invoke the command's object-based Tcl_ObjCmdProc. -- cgit v0.12 From a41f586cbbb2bccd146270743f2479e007b12cb9 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 12 May 2003 22:35:38 +0000 Subject: * generic/tclInterp.c: (AliasObjCmd): Added refCounting of the words * tests/interp.test (interp-33.1): of the target of an interp alias during its execution. Also added test. [Bug 730244]. --- ChangeLog | 4 ++++ generic/tclInterp.c | 10 ++++++++-- tests/interp.test | 11 ++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ebb70a9..f5ee8f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2003-05-12 Don Porter + * generic/tclInterp.c: (AliasObjCmd): Added refCounting of the words + * tests/interp.test (interp-33.1): of the target of an interp + alias during its execution. Also added test. [Bug 730244]. + * generic/tclBasic.c (TclInvokeObjectCommand): objv[argc] is no longer set to NULL (Tcl_CreateObjCommand docs already say that it should not be accessed). diff --git a/generic/tclInterp.c b/generic/tclInterp.c index 8d49791..851123d 100644 --- a/generic/tclInterp.c +++ b/generic/tclInterp.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInterp.c,v 1.20.2.1 2003/03/12 17:51:33 dgp Exp $ + * RCS: @(#) $Id: tclInterp.c,v 1.20.2.2 2003/05/12 22:35:40 dgp Exp $ */ #include "tclInt.h" @@ -1446,7 +1446,7 @@ AliasObjCmd(clientData, interp, objc, objv) #define ALIAS_CMDV_PREALLOC 10 Tcl_Interp *targetInterp; Alias *aliasPtr; - int result, prefc, cmdc; + int result, prefc, cmdc, i; Tcl_Obj **prefv, **cmdv; Tcl_Obj *cmdArr[ALIAS_CMDV_PREALLOC]; aliasPtr = (Alias *) clientData; @@ -1474,6 +1474,9 @@ AliasObjCmd(clientData, interp, objc, objv) Tcl_ResetResult(targetInterp); + for (i=0; i Date: Tue, 13 May 2003 08:41:26 +0000 Subject: * generic/tcl.decls: * macosx/tclMacOSXBundle.c: added extended version of the Tcl_MacOSXOpenBundleResources() API taking an extra version number argument: Tcl_MacOSXOpenVersionedBundleResources(). This is needed to be able to access bundle resources in versioned frameworks such as Tcl and Tk, otherwise if multiple versions were installed, only the latest version's resources could be accessed. [Bug 736774] * unix/tclUnixInit.c (Tcl_MacOSXGetLibraryPath): use new versioned bundle resource API to get tcl runtime library for TCL_VERSION. [Bug 736774] * generic/tclPlatDecls.h: * generic/tclStubInit.c: regen. * unix/tclUnixPort.h: worked around the issue of realpath() not being thread-safe on Mac OS X by defining NO_REALPATH for threaded builds on Mac OS X. [Bug 711232] --- ChangeLog | 28 +++++++++++++++-- generic/tcl.decls | 10 +++++- generic/tclPlatDecls.h | 13 +++++++- generic/tclStubInit.c | 3 +- macosx/tclMacOSXBundle.c | 82 +++++++++++++++++++++++++++++++++++++++++------- unix/tclUnixInit.c | 8 ++--- unix/tclUnixPort.h | 9 +++++- 7 files changed, 130 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index f5ee8f4..eca2217 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,34 @@ +2003-05-13 Daniel Steffen + + * generic/tcl.decls: + * macosx/tclMacOSXBundle.c: added extended version of the + Tcl_MacOSXOpenBundleResources() API taking an extra version number + argument: Tcl_MacOSXOpenVersionedBundleResources(). + This is needed to be able to access bundle resources in versioned + frameworks such as Tcl and Tk, otherwise if multiple versions were + installed, only the latest version's resources could be accessed. + [Bug 736774] + + * unix/tclUnixInit.c (Tcl_MacOSXGetLibraryPath): use new versioned + bundle resource API to get tcl runtime library for TCL_VERSION. + [Bug 736774] + + * generic/tclPlatDecls.h: + * generic/tclStubInit.c: regen. + + * unix/tclUnixPort.h: worked around the issue of realpath() not + being thread-safe on Mac OS X by defining NO_REALPATH for threaded + builds on Mac OS X. [Bug 711232] + 2003-05-12 Don Porter * generic/tclInterp.c: (AliasObjCmd): Added refCounting of the words * tests/interp.test (interp-33.1): of the target of an interp alias during its execution. Also added test. [Bug 730244]. - * generic/tclBasic.c (TclInvokeObjectCommand): objv[argc] is no - longer set to NULL (Tcl_CreateObjCommand docs already say that it - should not be accessed). + * generic/tclBasic.c (TclInvokeObjectCommand): objv[argc] is no + longer set to NULL (Tcl_CreateObjCommand docs already say that it + should not be accessed). * generic/tclObj.c (tclCmdNameType): Corrected variable use of the otherValuePtr or the twoPtrValue.ptr1 fields to store a diff --git a/generic/tcl.decls b/generic/tcl.decls index 2dbc2c5..ff94f2f 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tcl.decls,v 1.94 2002/08/31 06:09:45 das Exp $ +# RCS: @(#) $Id: tcl.decls,v 1.94.2.1 2003/05/13 08:41:26 das Exp $ library tcl @@ -1833,3 +1833,11 @@ declare 0 macosx { int maxPathLen, char *libraryPath) } +declare 1 macosx { + int Tcl_MacOSXOpenVersionedBundleResources(Tcl_Interp *interp, + CONST char *bundleName, + CONST char *bundleVersion, + int hasResourceFile, + int maxPathLen, + char *libraryPath) +} diff --git a/generic/tclPlatDecls.h b/generic/tclPlatDecls.h index 3404542..6067217 100644 --- a/generic/tclPlatDecls.h +++ b/generic/tclPlatDecls.h @@ -6,7 +6,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclPlatDecls.h,v 1.18 2002/09/27 00:50:10 hobbs Exp $ + * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.1 2003/05/13 08:41:26 das Exp $ */ #ifndef _TCLPLATDECLS @@ -82,6 +82,12 @@ EXTERN int Tcl_MacOSXOpenBundleResources _ANSI_ARGS_(( Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); +/* 1 */ +EXTERN int Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * bundleName, + CONST char * bundleVersion, + int hasResourceFile, int maxPathLen, + char * libraryPath)); #endif /* MAC_OSX_TCL */ typedef struct TclPlatStubs { @@ -105,6 +111,7 @@ typedef struct TclPlatStubs { #endif /* MAC_TCL */ #ifdef MAC_OSX_TCL int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */ + int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */ #endif /* MAC_OSX_TCL */ } TclPlatStubs; @@ -175,6 +182,10 @@ extern TclPlatStubs *tclPlatStubsPtr; #define Tcl_MacOSXOpenBundleResources \ (tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */ #endif +#ifndef Tcl_MacOSXOpenVersionedBundleResources +#define Tcl_MacOSXOpenVersionedBundleResources \ + (tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */ +#endif #endif /* MAC_OSX_TCL */ #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index f70c479..c1ed1df 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.1 2003/03/21 03:24:08 dgp Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.2 2003/05/13 08:41:26 das Exp $ */ #include "tclInt.h" @@ -371,6 +371,7 @@ TclPlatStubs tclPlatStubs = { #endif /* MAC_TCL */ #ifdef MAC_OSX_TCL Tcl_MacOSXOpenBundleResources, /* 0 */ + Tcl_MacOSXOpenVersionedBundleResources, /* 1 */ #endif /* MAC_OSX_TCL */ }; diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 7e3dfe7..88def57 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -83,8 +83,44 @@ Tcl_MacOSXOpenBundleResources( int maxPathLen, char *libraryPath) { + return Tcl_MacOSXOpenVersionedBundleResources(interp, bundleName, + NULL, hasResourceFile, maxPathLen, libraryPath); +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_MacOSXOpenVersionedBundleResources -- + * + * Given the bundle and version name for a shared library (version + * name can be NULL to indicate latest version), this routine sets + * libraryPath to the Resources/Scripts directory in the framework + * package. If hasResourceFile is true, it will also open the main + * resource file for the bundle. + * + * + * Results: + * TCL_OK if the bundle could be opened, and the Scripts folder found. + * TCL_ERROR otherwise. + * + * Side effects: + * libraryVariableName may be set, and the resource file opened. + * + *---------------------------------------------------------------------- + */ + +int +Tcl_MacOSXOpenVersionedBundleResources( + Tcl_Interp *interp, + CONST char *bundleName, + CONST char *bundleVersion, + int hasResourceFile, + int maxPathLen, + char *libraryPath) +{ CFBundleRef bundleRef; CFStringRef bundleNameRef; + CFURLRef libURL; libraryPath[0] = '\0'; @@ -94,11 +130,32 @@ Tcl_MacOSXOpenBundleResources( bundleRef = CFBundleGetBundleWithIdentifier(bundleNameRef); CFRelease(bundleNameRef); - if (bundleRef == 0) { - return TCL_ERROR; - } else { - CFURLRef libURL; + if (bundleVersion && bundleRef) { + /* create bundle from bundleVersion subdirectory of 'Versions' */ + CFBundleRef versionedBundleRef = NULL; + CFURLRef versionedBundleURL = NULL; + CFStringRef bundleVersionRef = CFStringCreateWithCString(NULL, + bundleVersion, kCFStringEncodingUTF8); + CFURLRef bundleURL = CFBundleCopyBundleURL(bundleRef); + if (bundleURL) { + CFURLRef versURL = CFURLCreateCopyAppendingPathComponent(NULL, + bundleURL, CFSTR("Versions"), TRUE); + if (versURL) { + versionedBundleURL = CFURLCreateCopyAppendingPathComponent( + NULL, versURL, bundleVersionRef, TRUE); + CFRelease(versURL); + } + CFRelease(bundleURL); + } + CFRelease(bundleVersionRef); + if (versionedBundleURL) { + versionedBundleRef = CFBundleCreate(NULL, versionedBundleURL); + CFRelease(versionedBundleURL); + } + bundleRef = versionedBundleRef; + } + if (bundleRef) { if (hasResourceFile) { short refNum; refNum = CFBundleOpenBundleResourceMap(bundleRef); @@ -107,20 +164,21 @@ Tcl_MacOSXOpenBundleResources( libURL = CFBundleCopyResourceURL(bundleRef, CFSTR("Scripts"), NULL, NULL); - if (libURL != NULL) { + if (libURL) { /* * FIXME: This is a quick fix, it is probably not right * for internationalization. */ - if (CFURLGetFileSystemRepresentation(libURL, true, - libraryPath, maxPathLen)) { - } + CFURLGetFileSystemRepresentation(libURL, TRUE, + libraryPath, maxPathLen); CFRelease(libURL); - } else { - return TCL_ERROR; } } - - return TCL_OK; + + if (libraryPath[0]) { + return TCL_OK; + } else { + return TCL_ERROR; + } } diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 5be58f5..ae3d2a3 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34 2002/10/22 16:41:28 das Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.1 2003/05/13 08:41:26 das Exp $ */ #if defined(HAVE_CFBUNDLE) @@ -1027,7 +1027,7 @@ TclpCheckStackSpace() * TCL_OK if we have found the tcl library; TCL_ERROR otherwise. * * Side effects: - * Same as for Tcl_MacOSXOpenBundleResources. + * Same as for Tcl_MacOSXOpenVersionedBundleResources. * *---------------------------------------------------------------------- */ @@ -1035,8 +1035,8 @@ static int Tcl_MacOSXGetLibraryPath(Tcl_Interp *interp, int maxPathLen, char *tc { int foundInFramework = TCL_ERROR; if (strcmp(defaultLibraryDir, "@TCL_IN_FRAMEWORK@") == 0) { - foundInFramework = Tcl_MacOSXOpenBundleResources(interp, - "com.tcltk.tcllibrary", 0, maxPathLen, tclLibPath); + foundInFramework = Tcl_MacOSXOpenVersionedBundleResources(interp, + "com.tcltk.tcllibrary", TCL_VERSION, 0, maxPathLen, tclLibPath); } return foundInFramework; } diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 511e09b..8574bfa 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27 2003/02/20 00:34:09 hobbs Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.1 2003/05/13 08:41:26 das Exp $ */ #ifndef _TCLUNIXPORT @@ -571,6 +571,13 @@ EXTERN char * TclpInetNtoa(struct in_addr); #define inet_ntoa(x) TclpInetNtoa(x) #undef TclOSreaddir #define TclOSreaddir(x) TclpReaddir(x) +#ifdef MAC_OSX_TCL +/* + * On Mac OS X, realpath is currently not + * thread safe, c.f. SF bug # 711232. + */ +#define NO_REALPATH +#endif #else typedef int TclpMutex; #define TclpMutexInit(a) -- cgit v0.12 From da2585a3986e433ef3d2fc269b67e6958499203f Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Tue, 13 May 2003 09:57:38 +0000 Subject: fix for [Bug 732477] --- ChangeLog | 8 ++++++++ generic/tcl.decls | 4 ++-- generic/tclDecls.h | 6 +++--- mac/tclMacThrd.c | 12 ++++++------ unix/tclUnixThrd.c | 12 ++++++------ win/tclWinThrd.c | 14 +++++++------- 6 files changed, 32 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index eca2217..c83cdda 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-05-13 Joe Mistachkin + + * generic/tcl.decls: Changed Tcl_JoinThread parameter name from + * generic/tclDecls.h: "id" to "threadId". [Bug 732477] + * unix/tclUnixThrd.c: + * win/tclWinThrd.c: + * mac/tclMacThrd.c: + 2003-05-13 Daniel Steffen * generic/tcl.decls: diff --git a/generic/tcl.decls b/generic/tcl.decls index ff94f2f..86151b0 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tcl.decls,v 1.94.2.1 2003/05/13 08:41:26 das Exp $ +# RCS: @(#) $Id: tcl.decls,v 1.94.2.2 2003/05/13 09:57:40 mistachkin Exp $ library tcl @@ -1457,7 +1457,7 @@ declare 411 generic { # Introduced in 8.4a2 declare 412 generic { - int Tcl_JoinThread(Tcl_ThreadId id, int* result) + int Tcl_JoinThread(Tcl_ThreadId threadId, int* result) } declare 413 generic { int Tcl_IsChannelShared(Tcl_Channel channel) diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 10ff07a..37d7a4a 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDecls.h,v 1.93 2002/08/05 15:01:04 dgp Exp $ + * RCS: @(#) $Id: tclDecls.h,v 1.93.2.1 2003/05/13 09:57:40 mistachkin Exp $ */ #ifndef _TCLDECLS @@ -1305,7 +1305,7 @@ EXTERN Tcl_DriverFlushProc * Tcl_ChannelFlushProc _ANSI_ARGS_(( EXTERN Tcl_DriverHandlerProc * Tcl_ChannelHandlerProc _ANSI_ARGS_(( Tcl_ChannelType * chanTypePtr)); /* 412 */ -EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId id, +EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 413 */ EXTERN int Tcl_IsChannelShared _ANSI_ARGS_((Tcl_Channel channel)); @@ -2035,7 +2035,7 @@ typedef struct TclStubs { Tcl_DriverGetHandleProc * (*tcl_ChannelGetHandleProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 409 */ Tcl_DriverFlushProc * (*tcl_ChannelFlushProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 410 */ Tcl_DriverHandlerProc * (*tcl_ChannelHandlerProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 411 */ - int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId id, int* result)); /* 412 */ + int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 412 */ int (*tcl_IsChannelShared) _ANSI_ARGS_((Tcl_Channel channel)); /* 413 */ int (*tcl_IsChannelRegistered) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 414 */ void (*tcl_CutChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 415 */ diff --git a/mac/tclMacThrd.c b/mac/tclMacThrd.c index 3fdafe3..dec4842 100644 --- a/mac/tclMacThrd.c +++ b/mac/tclMacThrd.c @@ -168,17 +168,17 @@ Tcl_CreateThread(idPtr, proc, clientData, stackSize, flags) */ int -Tcl_JoinThread(id, result) - Tcl_ThreadId id; /* Id of the thread to wait upon */ - int* result; /* Reference to the storage the result - * of the thread we wait upon will be - * written into. */ +Tcl_JoinThread(threadId, result) + Tcl_ThreadId threadId; /* Id of the thread to wait upon */ + int* result; /* Reference to the storage the result + * of the thread we wait upon will be + * written into. */ { if (!TclMacHaveThreads()) { return TCL_ERROR; } - return TclJoinThread (id, result); + return TclJoinThread (threadId, result); } /* diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index d5f1e54..427a974 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -161,16 +161,16 @@ Tcl_CreateThread(idPtr, proc, clientData, stackSize, flags) */ int -Tcl_JoinThread(id, state) - Tcl_ThreadId id; /* Id of the thread to wait upon */ - int* state; /* Reference to the storage the result - * of the thread we wait upon will be - * written into. */ +Tcl_JoinThread(threadId, state) + Tcl_ThreadId threadId; /* Id of the thread to wait upon */ + int* state; /* Reference to the storage the result + * of the thread we wait upon will be + * written into. */ { #ifdef TCL_THREADS int result; - result = pthread_join ((pthread_t) id, (VOID**) state); + result = pthread_join ((pthread_t) threadId, (VOID**) state); return (result == 0) ? TCL_OK : TCL_ERROR; #else return TCL_ERROR; diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index b8c045e..208f066 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.1 2003/04/25 20:02:39 andreas_kupries Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.2 2003/05/13 09:57:40 mistachkin Exp $ */ #include "tclWinInt.h" @@ -187,13 +187,13 @@ Tcl_CreateThread(idPtr, proc, clientData, stackSize, flags) */ int -Tcl_JoinThread(id, result) - Tcl_ThreadId id; /* Id of the thread to wait upon */ - int* result; /* Reference to the storage the result - * of the thread we wait upon will be - * written into. */ +Tcl_JoinThread(threadId, result) + Tcl_ThreadId threadId; /* Id of the thread to wait upon */ + int* result; /* Reference to the storage the result + * of the thread we wait upon will be + * written into. */ { - return TclJoinThread (id, result); + return TclJoinThread (threadId, result); } /* -- cgit v0.12 From 19640d138b057a8250b163bb5dcd1f7131bd682a Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 13 May 2003 12:44:07 +0000 Subject: Removed unused variable to reduce compiler warnings. [Bug 664745] --- ChangeLog | 47 ++++++++++++++++++++++++++--------------------- generic/tclEvent.c | 10 +++++++--- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index c83cdda..f6445ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,15 @@ +2003-05-13 Donal K. Fellows + + * generic/tclEvent.c (Tcl_Finalize): Removed unused variable to + reduce compiler warnings. [Bug 664745] + 2003-05-13 Joe Mistachkin - * generic/tcl.decls: Changed Tcl_JoinThread parameter name from - * generic/tclDecls.h: "id" to "threadId". [Bug 732477] - * unix/tclUnixThrd.c: - * win/tclWinThrd.c: - * mac/tclMacThrd.c: + * generic/tcl.decls: Changed Tcl_JoinThread parameter name from + * generic/tclDecls.h: "id" to "threadId". [Bug 732477] + * unix/tclUnixThrd.c: + * win/tclWinThrd.c: + * mac/tclMacThrd.c: 2003-05-13 Daniel Steffen @@ -68,17 +73,17 @@ 2003-05-09 Joe Mistachkin * generic/tclThreadAlloc.c (TclFreeAllocCache): Fixed memory leak - caused by treating cachePtr as a TLS index [Bug 731754]. + caused by treating cachePtr as a TLS index [Bug 731754]. * win/tclAppInit.c (Tcl_AppInit): Fixed memory leaks caused by not - freeing the memory allocated by setargv and the async handler created - by Tcl_AppInit. An exit handler has been created that takes care of - both leaks. In addition, Tcl_AppInit now uses ckalloc instead of - Tcl_Alloc to allow for easier leak tracking and to be more consistent - with the rest of the Tcl core [Bugs 733156, 733221]. + freeing the memory allocated by setargv and the async handler created + by Tcl_AppInit. An exit handler has been created that takes care of + both leaks. In addition, Tcl_AppInit now uses ckalloc instead of + Tcl_Alloc to allow for easier leak tracking and to be more consistent + with the rest of the Tcl core [Bugs 733156, 733221]. * tools/encoding/txt2enc.c (main): Fixed memory leak caused by failing - to free the memory used by the toUnicode array of strings [Bug 733221]. + to free the memory used by the toUnicode array of strings [Bug 733221]. 2003-05-05 Don Porter @@ -308,7 +313,7 @@ * tests/foreach.test: 2003-03-26 Don Porter - + * doc/tcltest.n: * library/tcltest/tcltest.tcl: Added reporting during [configure -debug 1] operations to warn about multiple uses of @@ -816,7 +821,7 @@ does not build and people are filing bug reports under the mistaken impression that someone is actually maintaining the Cygwin port. A post to - comp.lang.tcl asking someone to volunteer as an + comp.lang.tcl asking someone to volunteer as an area maintainer has generated no results. Closing bugs 680840, 630199, and 634772 and marking as "Won't fix". @@ -1021,7 +1026,7 @@ mysterious error that would show up when exec'ing a 16 bit application under Win95 or Win98 when Tcl was compiled with symbols. - The error seemed to indicate that the executable + The error seemed to indicate that the executable could not be found, but it was actually the Tcl pipe dll that could not be found. @@ -1108,7 +1113,7 @@ * generic/tclIO.c: Add 'Tcl_GetString()' to ensure the object has a valid 'objPtr->bytes' field before manipulating it directly. - This fixes [Bug 635200] and [Bug 671138], but may reduce performance + This fixes [Bug 635200] and [Bug 671138], but may reduce performance of Unicode string handling in some cases. A further patch will be applied to address this, once the code is known to be correct. @@ -2610,14 +2615,14 @@ 2002-07-29 Reinhard Max * unix/tcl.m4 (SC_SERIAL_PORT): Fixed detection for cases when - configure's stdin is not a tty. + configure's stdin is not a tty. * unix/tclUnixPort.h: - * generic/tclIOSock.c: Changed size_t to socklen_t in - socket-related function calls. + * generic/tclIOSock.c: Changed size_t to socklen_t in + socket-related function calls. - * unix/configure.in: Added test and fallback definition - for socklen_t. + * unix/configure.in: Added test and fallback definition + for socklen_t. * unix/configure: generated. diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 60b7d7f..305a1e4 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28 2003/02/22 09:23:16 vasiljevic Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.1 2003/05/13 12:44:07 dkf Exp $ */ #include "tclInt.h" @@ -763,13 +763,17 @@ void Tcl_Finalize() { ExitHandler *exitPtr; - ThreadSpecificData *tsdPtr; TclpInitLock(); if (subsystemsInitialized != 0) { subsystemsInitialized = 0; - tsdPtr = TCL_TSD_INIT(&dataKey); + /* + * Ensure the thread-specific data is initialised as it is + * used in Tcl_FinalizeThread() + */ + + (void) TCL_TSD_INIT(&dataKey); /* * Invoke exit handlers first. -- cgit v0.12 From 332fa168c0765b816430af658ef8d160761130cb Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 13 May 2003 22:55:50 +0000 Subject: * generic/tclIOUtil.c: add decl for FsThrExitProc to suppress warnings. --- ChangeLog | 5 +++++ generic/tclIOUtil.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f6445ff..c176361 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-05-13 Jeff Hobbs + + * generic/tclIOUtil.c: add decl for FsThrExitProc to suppress + warnings. + 2003-05-13 Donal K. Fellows * generic/tclEvent.c (Tcl_Finalize): Removed unused variable to diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 840c431..42f73bd 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.3 2003/05/11 01:23:13 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.4 2003/05/13 22:55:50 hobbs Exp $ */ #include "tclInt.h" @@ -100,7 +100,7 @@ static Tcl_Obj* TclFSNormalizeAbsolutePath static FilesystemRecord* FsGetIterator(void); static void FsReleaseIterator(void); - +static void FsThrExitProc(ClientData cd); /* * These form part of the native filesystem support. They are needed -- cgit v0.12 From ce858db219c96d88c5d3d612832c4003e2154c8d Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 14 May 2003 17:17:44 +0000 Subject: * generic/tclEnv.c (TclUnsetEnv): Another putenv() copy behavior problem repaired when compiling on windows and using microsoft's runtime. [Bug 736421] (gravereaux) --- ChangeLog | 6 ++++++ generic/tclEnv.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c176361..664929a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-05-14 Jeff Hobbs + + * generic/tclEnv.c (TclUnsetEnv): Another putenv() copy behavior + problem repaired when compiling on windows and using microsoft's + runtime. [Bug 736421] (gravereaux) + 2003-05-13 Jeff Hobbs * generic/tclIOUtil.c: add decl for FsThrExitProc to suppress diff --git a/generic/tclEnv.c b/generic/tclEnv.c index 1d6e66f..1e171ff 100644 --- a/generic/tclEnv.c +++ b/generic/tclEnv.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEnv.c,v 1.20 2003/01/14 02:06:11 mdejong Exp $ + * RCS: @(#) $Id: tclEnv.c,v 1.20.2.1 2003/05/14 17:17:46 hobbs Exp $ */ #include "tclInt.h" @@ -429,6 +429,11 @@ TclUnsetEnv(name) if (environ[index] == string) { ReplaceString(oldValue, string); +#ifdef HAVE_PUTENV_THAT_COPIES + } else { + /* This putenv() copies instead of taking ownership */ + ckfree(string); +#endif } #else for (envPtr = environ+index+1; ; envPtr++) { -- cgit v0.12 From 750c72292478ff1c587134fe363497ff9c006a5d Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 14 May 2003 20:40:58 +0000 Subject: * library/encoding/gb2312.enc: copy euc-cn.enc over original gb2312.enc. gb2312.enc appeared to not work as expected, and most uses of gb2312 really mean euc-cn (which may be the cause of the problem). [Bug 557030] --- ChangeLog | 5 ++ library/encoding/gb2312.enc | 201 ++++++++++++++++++++++++-------------------- 2 files changed, 114 insertions(+), 92 deletions(-) diff --git a/ChangeLog b/ChangeLog index 664929a..d5c1b64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2003-05-14 Jeff Hobbs + * library/encoding/gb2312.enc: copy euc-cn.enc over original + gb2312.enc. gb2312.enc appeared to not work as expected, and most + uses of gb2312 really mean euc-cn (which may be the cause of the + problem). [Bug 557030] + * generic/tclEnv.c (TclUnsetEnv): Another putenv() copy behavior problem repaired when compiling on windows and using microsoft's runtime. [Bug 736421] (gravereaux) diff --git a/library/encoding/gb2312.enc b/library/encoding/gb2312.enc index 813d7a6..4b2f8c7 100644 --- a/library/encoding/gb2312.enc +++ b/library/encoding/gb2312.enc @@ -1,7 +1,32 @@ -# Encoding file: gb2312, double-byte -D -233F 0 81 -21 +# Encoding file: euc-cn, multi-byte +M +003F 0 82 +00 +0000000100020003000400050006000700080009000A000B000C000D000E000F +0010001100120013001400150016001700180019001A001B001C001D001E001F +0020002100220023002400250026002700280029002A002B002C002D002E002F +0030003100320033003400350036003700380039003A003B003C003D003E003F +0040004100420043004400450046004700480049004A004B004C004D004E004F +0050005100520053005400550056005700580059005A005B005C005D005E005F +0060006100620063006400650066006700680069006A006B006C006D006E006F +0070007100720073007400750076007700780079007A007B007C007D007E007F +0080008100820083008400850086008700880089008A008B008C008D008E008F +0090009100920093009400950096009700980099009A009B009C009D009E009F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +A1 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000030003001300230FB02C902C700A8300330052015FF5E2225202620182019 @@ -10,6 +35,7 @@ D 23122299222B222E2261224C2248223D221D2260226E226F22642265221E2235 22342642264000B0203220332103FF0400A4FFE0FFE1203000A7211626062605 25CB25CF25CE25C725C625A125A025B325B2203B219221902191219330130000 +A2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -18,7 +44,6 @@ D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -22 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -27,6 +52,7 @@ D 247F248024812482248324842485248624872460246124622463246424652466 2467246824690000000032203221322232233224322532263227322832290000 00002160216121622163216421652166216721682169216A216B000000000000 +A3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -35,7 +61,6 @@ D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -23 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000FF01FF02FF03FFE5FF05FF06FF07FF08FF09FF0AFF0BFF0CFF0DFF0EFF0F @@ -44,6 +69,7 @@ FF20FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF3BFF3CFF3DFF3EFF3F FF40FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 +A4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -52,7 +78,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -24 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000304130423043304430453046304730483049304A304B304C304D304E304F @@ -61,6 +86,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 3070307130723073307430753076307730783079307A307B307C307D307E307F 3080308130823083308430853086308730883089308A308B308C308D308E308F 3090309130923093000000000000000000000000000000000000000000000000 +A5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -69,7 +95,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -25 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000030A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF @@ -78,6 +103,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 30D030D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF 30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF 30F030F130F230F330F430F530F6000000000000000000000000000000000000 +A6 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -86,7 +112,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -26 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000039103920393039403950396039703980399039A039B039C039D039E039F @@ -95,6 +120,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 03C003C103C303C403C503C603C703C803C90000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 +A7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -103,7 +129,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -27 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000004100411041204130414041504010416041704180419041A041B041C041D @@ -112,6 +137,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 000004300431043204330434043504510436043704380439043A043B043C043D 043E043F0440044104420443044404450446044704480449044A044B044C044D 044E044F00000000000000000000000000000000000000000000000000000000 +A8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -120,7 +146,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -28 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000010100E101CE00E0011300E9011B00E8012B00ED01D000EC014D00F301D2 @@ -129,6 +154,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 3110311131123113311431153116311731183119311A311B311C311D311E311F 3120312131223123312431253126312731283129000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 +A9 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -137,7 +163,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -29 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000002500250125022503250425052506250725082509250A250B @@ -146,6 +171,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 252C252D252E252F2530253125322533253425352536253725382539253A253B 253C253D253E253F2540254125422543254425452546254725482549254A254B 0000000000000000000000000000000000000000000000000000000000000000 +B0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -154,7 +180,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -30 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000554A963F57C3632854CE550954C07691764C853C77EE827E788D72319698 @@ -163,6 +188,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 9776628A8019575D97387F627238767D67CF767E64464F708D2562DC7A176591 73ED642C6273822C9881677F7248626E62CC4F3474E3534A529E7ECA90A65E2E 6886699C81807ED168D278C5868C9551508D8C2482DE80DE5305891252650000 +B1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -171,7 +197,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -31 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000858496F94FDD582199715B9D62B162A566B48C799C8D7206676F789160B2 @@ -180,6 +205,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 6BD96BD65E015E8775F995ED655D5F0A5FC58F9F58C181C2907F965B97AD8FB9 7F168D2C62414FBF53D8535E8FA88FA98FAB904D68075F6A819888689CD6618B 522B762A5F6C658C6FD26EE85BBE6448517551B067C44E1979C9997C70B30000 +B2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -188,7 +214,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -32 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000075C55E7673BB83E064AD62E894B56CE2535A52C3640F94C27B944F2F5E1B @@ -197,6 +222,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 6B8B60ED60E8707F82CD82314ED36CA785CF64CD7CD969FD66F9834953957B56 4FA7518C6D4B5C428E6D63D253C9832C833667E578B4643D5BDF5C945DEE8BE7 62C667F48C7A640063BA8749998B8C177F2094F24EA7961098A4660C73160000 +B3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -205,7 +231,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -33 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000573A5C1D5E38957F507F80A05382655E7545553150218D856284949E671D @@ -214,6 +239,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 627F901E9A8B79E4540375F4630153196C608FDF5F1B9A70803B9F7F4F885C3A 8D647FC565A570BD514551B2866B5D075BA062BD916C75748E0C7A2061017B79 4EC77EF877854E1181ED521D51FA6A7153A88E87950496CF6EC19664695A0000 +B4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -222,7 +248,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -34 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000784050A877D7641089E6590463E35DDD7A7F693D4F20823955984E3275AE @@ -231,6 +256,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 847156F153064ECE4E1B51D17C97918B7C074FC38E7F7BE17A9C64675D1450AC 810676017CB96DEC7FE067515B585BF878CB64AE641363AA632B9519642D8FBE 7B5476296253592754466B7950A362345E266B864EE38D37888B5F85902E0000 +B5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -239,7 +265,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -35 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00006020803D62C54E39535590F863B880C665E66C2E4F4660EE6DE18BDE5F39 @@ -248,6 +273,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 654C7B1B72C46DA47FDF5AE162B55E95573084827B2C5E1D5F1F90127F1498A0 63826EC7789870B95178975B57AB75354F4375385E9760E659606DC06BBF7889 53FC96D551CB52016389540A94938C038DCC7239789F87768FED8C0D53E00000 +B6 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -256,7 +282,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -36 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00004E0176EF53EE948998769F0E952D5B9A8BA24E224E1C51AC846361C252A8 @@ -265,6 +290,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 7F0E58065151961F5BF958A954288E726566987F56E4949D76FE9041638754C6 591A593A579B8EB267358DFA8235524160F0581586FE5CE89E454FC4989D8BB9 5A2560765384627C904F9102997F6069800C513F80335C1499756D314E8C0000 +B7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -273,7 +299,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -37 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00008D3053D17F5A7B4F4F104E4F96006CD573D085E95E06756A7FFB6A0A77FE @@ -282,6 +307,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 6CB88D3982AC915A54296C1B52067EB7575F711A6C7E7C89594B4EFD5FFF6124 7CAA4E305C0167AB87025CF0950B98CE75AF70FD902251AF7F1D8BBD594951E4 4F5B5426592B657780A45B75627662C28F905E456C1F7B264F0F4FD8670D0000 +B8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -290,7 +316,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -38 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00006D6E6DAA798F88B15F17752B629A8F854FEF91DC65A7812F81515E9C8150 @@ -299,6 +324,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 611F79C665628D635188521A94A27F38809B7EB25C976E2F67607BD9768B9AD8 818F7F947CD5641E95507A3F544A54E56B4C640162089E3D80F3759952729769 845B683C86E49601969494EC4E2A54047ED968398DDF801566F45E9A7FB90000 +B9 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -307,7 +333,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -39 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000057C2803F68975DE5653B529F606D9F9A4F9B8EAC516C5BAB5F135DE96C5E @@ -316,6 +341,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 52505BE1630289024E5662D0602A68FA51735B9851A089C27BA199867F5060EF 704C8D2F51495E7F901B747089C4572D78455F529F9F95FA8F689B3C8BE17678 684267DC8DEA8D35523D8F8A6EDA68CD950590ED56FD679C88F98FC754C80000 +BA 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -324,7 +350,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -3A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00009AB85B696D776C264EA55BB39A87916361A890AF97E9542B6DB55BD251FD @@ -333,6 +358,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 76D28C8996026CB36DB88D6B89109E648D3A563F9ED175D55F8872E0606854FC 4EA86A2A886160528F7054C470D886799E3F6D2A5B8F5F187EA255894FAF7334 543C539A5019540E547C4E4E5FFD745A58F6846B80E1877472D07CCA6E560000 +BB 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -341,7 +367,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -3B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00005F27864E552C62A44E926CAA623782B154D7534E733E6ED1753B52125316 @@ -350,6 +375,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 604D8C0E707063258F895FBD606286D456DE6BC160946167534960E066668D3F 79FD4F1A70E96C478BB38BF27ED88364660F5A5A9B426D516DF78C416D3B4F19 706B83B7621660D1970D8D27797851FB573E57FA673A75787A3D79EF7B950000 +BC 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -358,7 +384,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -3C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000808C99658FF96FC08BA59E2159EC7EE97F095409678168D88F917C4D96C6 @@ -367,6 +392,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 59394F735BB652A0835A988A8D3E753294BE50477A3C4EF767B69A7E5AC16B7C 76D1575A5C167B3A95F4714E517C80A9827059787F04832768C067EC78B17877 62E363617B804FED526A51CF835069DB92748DF58D3189C1952E7BAD4EF60000 +BD 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -375,7 +401,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -3D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000506582305251996F6E106E856DA75EFA50F559DC5C066D466C5F7586848B @@ -384,6 +409,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 53EB7A9663ED63A5768679F888579636622A52AB8282685467706377776B7AED 6D017ED389E359D0621285C982A5754C501F4ECB75A58BEB5C4A5DFE7B4B65A4 91D14ECA6D25895F7D2795264EC58C288FDB9773664B79818FD170EC6D780000 +BE 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -392,7 +418,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -3E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00005C3D52B283465162830E775B66769CB84EAC60CA7CBE7CB37ECF4E958B66 @@ -401,6 +426,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 62D872D975BD5C459A7983CA5C40548077E94E3E6CAE805A62D2636E5DE85177 8DDD8E1E952F4FF153E560E770AC526763509E435A1F5026773753777EE26485 652B628963985014723589C951B38BC07EDD574783CC94A7519B541B5CFB0000 +BF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -409,7 +435,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -3F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00004FCA7AE36D5A90E19A8F55805496536154AF5F0063E9697751EF6168520A @@ -418,6 +443,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 554357A660735751542D7A7A60505B5463A762A053E362635BC767AF54ED7A9F 82E691775E9388E4593857AE630E8DE880EF57577B774FA95FEB5BBD6B3E5321 7B5072C2684677FF773665F751B54E8F76D45CBF7AA58475594E9B4150800000 +C0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -426,7 +452,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -40 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000998861276E8357646606634656F062EC62695ED39614578362C955878721 @@ -435,6 +460,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 4F6C59E5916A70D96D9D52D24E5096F7956D857E78CA7D2F5121579264C2808B 7C7B6CEA68F1695E51B7539868A872819ECE7BF172F879BB6F137406674E91CC 9CA4793C83898354540F68174E3D538952B1783E5386522950884F8B4FD00000 +C1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -443,7 +469,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -41 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000075E27ACB7C926CA596B6529B748354E94FE9805483B28FDE95705EC9601C @@ -452,6 +477,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 521788C270C852A3730E7433679778F797164E3490BB9CDE6DCB51DB8D41541D 62CE73B283F196F69F8494C34F367F9A51CC707596755CAD988653E64EE46E9C 740969B4786B998F7559521876246D4167F3516D9F99804B54997B3C7ABF0000 +C2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -460,7 +486,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -42 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00009686578462E29647697C5A0464027BD36F0F964B82A6536298855E907089 @@ -469,6 +494,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 6EE653754E7163A0756562A18F6E4F264ED16CA67EB68BBA841D87BA7F57903B 95237BA99AA188F8843D6D1B9A867EDC59889EBB739B780186829A6C9A82561B 541757CB4E709EA653568FC881097792999286EE6EE1851366FC61626F2B0000 +C3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -477,7 +503,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -43 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00008C298292832B76F26C135FD983BD732B8305951A6BDB77DB94C6536F8302 @@ -486,6 +511,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 772F919A97617CDC8FF78C1C5F257C7379D889C56CCC871C5BC65E4268C97720 7EF55195514D52C95A297F05976282D763CF778485D079D26E3A5E9959998511 706D6C1162BF76BF654F60AF95FD660E879F9E2394ED540D547D8C2C64780000 +C4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -494,7 +520,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -44 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000647986116A21819C78E864699B5462B9672B83AB58A89ED86CAB6F205BDE @@ -503,6 +528,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 753796BE56CA63208111607C95F96DD65462998151855AE980FD59AE9713502A 6CE55C3C62DF4F60533F817B90066EBA852B62C85E7478BE64B5637B5FF55A18 917F9E1F5C3F634F80425B7D556E954A954D6D8560A867E072DE51DD5B810000 +C5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -511,7 +537,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -45 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000062E76CDE725B626D94AE7EBD81136D53519C5F04597452AA601259736696 @@ -520,6 +545,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 522453DB4E535E9E65C1802A80D6629B5486522870AE888D8DD16CE1547880DA 57F988F48D54966A914D4F696C9B55B776C6783062A870F96F8E5F6D84EC68DA 787C7BF781A8670B9E4F636778B0576F78129739627962AB528874356BD70000 +C6 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -528,7 +554,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -46 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00005564813E75B276AE533975DE50FB5C418B6C7BC7504F72479A9798D86F02 @@ -537,6 +562,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 83E984B257D467345703666E6D668C3166DD7011671F6B3A6816621A59BB4E03 51C46F0667D26C8F517668CB59476B6775665D0E81109F5065D7794879419A91 8D775C824E5E4F01542F5951780C56686C148FC45F036C7D6CE38BAB63900000 +C7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -545,7 +571,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -47 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000060706D3D72756266948E94C553438FC17B7E4EDF8C264E7E9ED494B194B3 @@ -554,6 +579,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 520783044E14602F7A8394A64FB54EB279E6743452E482B964D279BD5BDD6C81 97528F7B6C22503E537F6E0564CE66746C3060C598778BF75E86743C7A7779CB 4E1890B174036C4256DA914B6CC58D8B533A86C666F28EAF5C489A716E200000 +C8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -562,7 +588,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -48 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000053D65A369F8B8DA353BB570898A76743919B6CC9516875CA62F372AC5238 @@ -571,6 +596,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 5203598A7EAB62544ECD65E5620E833884C98363878D71946EB65BB97ED25197 63C967D480898339881551125B7A59828FB14E736C5D516589258F6F962E854A 745E951095F06DA682E55F3164926D128428816E9CC3585E8D5B4E0953C10000 +C9 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -579,7 +605,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -49 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00004F1E6563685155D34E2764149A9A626B5AC2745F82726DA968EE50E7838E @@ -588,6 +613,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 5C1A88F368A2634E7A0D70E7828D52FA97F65C1154E890B57ECD59628D4A86C7 820C820D8D6664445C0461516D89793E8BBE78377533547B4F388EAB6DF15A20 7EC5795E6C885BA15A76751A80BE614E6E1758F0751F7525727253477EF30000 +CA 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -596,7 +622,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -4A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000770176DB526980DC57235E08593172EE65BD6E7F8BD75C388671534177F3 @@ -605,6 +630,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 5E0260435BA489C68BD56536624B99965B885BFF6388552E53D77626517D852C 67A268B36B8A62928F9353D482126DD1758F4E668D4E5B70719F85AF669166D9 7F7287009ECD9F205C5E672F8FF06811675F620D7AD658855EB665706F310000 +CB 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -613,7 +639,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -4B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000060555237800D6454887075295E05681362F4971C53CC723D8C016C347761 @@ -622,6 +647,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 8BF5641C825864DE55FD82CF91654FD77D20901F7C9F50F358516EAF5BBF8BC9 80839178849C7B97867D968B968F7EE59AD3788E5C817A57904296A7795F5B59 635F7B0B84D168AD55067F2974107D2295016240584C4ED65B83597958540000 +CC 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -630,7 +656,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -4C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000736D631E8E4B8E0F80CE82D462AC53F06CF0915E592A60016C70574D644A @@ -639,6 +664,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 7EE68404684390036DD896768BA85957727985E4817E75BC8A8A68AF52548E22 951163D098988E44557C4F5366FF568F60D56D9552435C4959296DFB586B7530 751C606C82148146631167618FE2773A8DF38D3494C15E165385542C70C30000 +CD 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -647,7 +673,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -4D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00006C405EF7505C4EAD5EAD633A8247901A6850916E77B3540C94DC5F647AE5 @@ -656,6 +681,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 625881319E3596409A6E9A7C692D59A562D3553E631654C786D96D3C5A0374E6 889C6B6A59168C4C5F2F6E7E73A9987D4E3870F75B8C7897633D665A769660CB 5B9B5A494E0781556C6A738B4EA167897F515F8065FA671B5FD859845A010000 +CE 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -664,7 +690,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -4E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00005DCD5FAE537197E68FDD684556F4552F60DF4E3A6F4D7EF482C7840E59D4 @@ -673,6 +698,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 6DA17A9D621165A1536763E16C835DEB545C94A84E4C6C618BEC5C4B65E0829C 68A7543E54346BCB6B664E9463425348821E4F0D4FAE575E620A96FE66647269 52FF52A1609F8BEF661471996790897F785277FD6670563B54389521727A0000 +CF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -681,7 +707,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -4F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00007A00606F5E0C6089819D591560DC718470EF6EAA6C5072806A8488AD5E2D @@ -690,6 +715,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 95F26D8E5F265ACC663E966973B0732E53BF817A99857FA15BAA967796507EBF 76F853A2957699997BB189446E584E617FD479658BE660F354CD4EAB98795DF7 6A6150CF54118C618427785D9704524A54EE56A395006D885BB56DC666530000 +D0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -698,7 +724,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -50 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00005C0F5B5D6821809655787B11654869544E9B6B47874E978B534F631F643A @@ -707,6 +732,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 884C91925E78674F602759D3514451F680F853086C7996C4718A4F114FEE7F9E 673D55C5950879C088967EE3589F620C9700865A5618987B5F908BB884C49157 53D965ED5E8F755C60647D6E5A7F7EEA7EED8F6955A75BA360AC65CB73840000 +D1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -715,7 +741,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -51 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00009009766377297EDA9774859B5B667A7496EA884052CB718F5FAA65EC8BE2 @@ -724,6 +749,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 781487125CA95EF68A00989C960E708E6CBF594463A9773C884D6F1482735830 71D5538C781A96C155015F6671305BB48C1A9A8C6B83592E9E2F79E76768626C 4F6F75A17F8A6D0B96336C274EF075D2517B68376F3E90808170599674760000 +D2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -732,7 +758,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -52 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000064475C2790657A918C2359DA54AC8200836F898180006930564E80367237 @@ -741,6 +766,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 501A5DF24E5977E34EE5827A6291661390915C794EBF5F7981C69038808475AB 4EA688D4610F6BC55FC64E4976CA6EA28BE38BAE8C0A8BD15F027FFC7FCC7ECE 8335836B56E06BB797F3963459FB541F94F66DEB5BC5996E5C395F1596900000 +D3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -749,7 +775,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -53 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000537082F16A315A749E705E947F2883B984248425836787478FCE8D6276C8 @@ -758,6 +783,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 670953CB53F34F5191C98BF153C85E7C8FC26DE44E8E76C26986865E611A8206 4F594FDE903E9C7C61096E1D6E1496854E885A3196E84E0E5C7F79B95B878BED 7FBD738957DF828B90C15401904755BB5CEA5FA161086B3272F180B28A890000 +D4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -766,7 +792,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -54 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00006D745BD388D598848C6B9A6D9E336E0A51A4514357A38881539F63F48F95 @@ -775,6 +800,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 5B55531D78386742683D54C9707E5BB08F7D518D572854B1651266828D5E8D43 810F846C906D7CDF51FF85FB67A365E96FA186A48E81566A90207682707671E5 8D2362E952196CFD8D3C600E589E618E66FE8D60624E55B36E23672D8F670000 +D5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -783,7 +809,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -55 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000094E195F87728680569A8548B4E4D70B88BC86458658B5B857A84503A5BE8 @@ -792,6 +817,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 62DB662D627E6CBC8D7571677F695146808753EC906E629854F286F08F998005 951785178FD96D5973CD659F771F7504782781FB8D1E94884FA6679575B98BCA 9707632F9547963584B8632377415F8172F04E896014657462EF6B63653F0000 +D6 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -800,7 +826,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -56 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00005E2775C790D18BC1829D679D652F5431871877E580A281026C414E4B7EC7 @@ -809,6 +834,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 4E2D76C55FE0949F88777EC879CD80BF91CD4EF24F17821F54685DDE6D328BCC 7CA58F7480985E1A549276B15B99663C9AA473E0682A86DB6731732A8BF88BDB 90107AF970DB716E62C477A956314E3B845767F152A986C08D2E94F87B510000 +D7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -817,7 +843,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -57 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00004F4F6CE8795D9A7B6293722A62FD4E1378168F6C64B08D5A7BC668695E84 @@ -826,6 +851,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 4ED47C7D6ED35B5081EA6E0D5B579B0368D58E2A5B977EFC603B7EB590B98D70 594F63CD79DF8DB3535265CF79568BC5963B7EC494BB7E825634918967007F6A 5C0A907566285DE64F5067DE505A4F5C57505EA7000000000000000000000000 +D8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -834,7 +860,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -58 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00004E8D4E0C51404E105EFF53454E154E984E1E9B325B6C56694E2879BA4E3F @@ -843,6 +868,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 5326532E533E8D5C5366536352025208520E522D5233523F5240524C525E5261 525C84AF527D528252815290529351827F544EBB4EC34EC94EC24EE84EE14EEB 4EDE4F1B4EF34F224F644EF54F254F274F094F2B4F5E4F6765384F5A4F5D0000 +D9 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -851,7 +877,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -59 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00004F5F4F574F324F3D4F764F744F914F894F834F8F4F7E4F7B4FAA4F7C4FAC @@ -860,6 +885,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 50A950BA50D6510650ED50EC50E650EE5107510B4EDD6C3D4F584F654FCE9FA0 6C467C74516E5DFD9EC999985181591452F9530D8A07531051EB591951554EA0 51564EB3886E88A44EB5811488D279805B3488037FB851AB51B151BD51BC0000 +DA 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -868,7 +894,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -5A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000051C7519651A251A58BA08BA68BA78BAA8BB48BB58BB78BC28BC38BCB8BCF @@ -877,6 +902,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 8C1B8C188C1D8C1F8C208C218C258C278C2A8C2B8C2E8C2F8C328C338C358C36 5369537A961D962296219631962A963D963C964296499654965F9667966C9672 96749688968D969796B09097909B909D909990AC90A190B490B390B690BA0000 +DB 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -885,7 +911,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -5B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000090B890B090CF90C590BE90D090C490C790D390E690E290DC90D790DB90EB @@ -894,6 +919,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 574C57A957A1587E58BC58C558D15729572C572A57335739572E572F575C573B 574257695785576B5786577C577B5768576D5776577357AD57A4578C57B257CF 57A757B4579357A057D557D857DA57D957D257B857F457EF57F857E457DD0000 +DC 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -902,7 +928,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -5C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000580B580D57FD57ED5800581E5819584458205865586C58815889589A5880 @@ -911,6 +936,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 82C482CE82A482E1830982F782E4830F830782DC82F482D282D8830C82FB82D3 8311831A83068314831582E082D5831C8351835B835C83088392833C83348331 839B835E832F834F83478343835F834083178360832D833A8333836683650000 +DD 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -919,7 +945,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -5D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00008368831B8369836C836A836D836E83B0837883B383B483A083AA8393839C @@ -928,6 +953,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 83EA83C583C0842683F083E1845C8451845A8459847384878488847A84898478 843C844684698476848C848E8431846D84C184CD84D084E684BD84D384CA84BF 84BA84E084A184B984B4849784E584E3850C750D853884F08539851F853A0000 +DE 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -936,7 +962,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -5E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00008556853B84FF84FC8559854885688564855E857A77A285438572857B85A4 @@ -945,6 +970,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 624C626A629F62BB62CA62DA62D762EE632262F66339634B634363AD63F66371 637A638E63B4636D63AC638A636963AE63BC63F263F863E063FF63C463DE63CE 645263C663BE64456441640B641B6420640C64266421645E6484646D64960000 +DF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -953,7 +979,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -5F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000647A64B764B8649964BA64C064D064D764E464E265096525652E5F0B5FD2 @@ -962,6 +987,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 549D54D054AD54C254B454D254A754A654D354D4547254A354D554BB54BF54CC 54D954DA54DC54A954AA54A454DD54CF54DE551B54E7552054FD551454F35522 5523550F55115527552A5567558F55B55549556D55415555553F5550553C0000 +E0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -970,7 +996,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -60 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00005537555655755576557755335530555C558B55D2558355B155B955885581 @@ -979,6 +1004,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 5608560C56015624562355FE56005627562D565856395657562C564D56625659 565C564C5654568656645671566B567B567C5685569356AF56D456D756DD56E1 56F556EB56F956FF5704570A5709571C5E0F5E195E145E115E315E3B5E3C0000 +E1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -987,7 +1013,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -61 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00005E375E445E545E5B5E5E5E615C8C5C7A5C8D5C905C965C885C985C995C91 @@ -996,6 +1021,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 5D5D5D6B5D4B5D4A5D695D745D825D995D9D8C735DB75DC55F735F775F825F87 5F895F8C5F955F995F9C5FA85FAD5FB55FBC88625F6172AD72B072B472B772B8 72C372C172CE72CD72D272E872EF72E972F272F472F7730172F3730372FA0000 +E2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1004,7 +1030,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -62 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000072FB731773137321730A731E731D7315732273397325732C733873317350 @@ -1013,6 +1038,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 5E915E8B5E965EA55EA05EB95EB55EBE5EB38D535ED25ED15EDB5EE85EEA81BA 5FC45FC95FD65FCF60035FEE60045FE15FE45FFE600560065FEA5FED5FF86019 60356026601B600F600D6029602B600A603F602160786079607B607A60420000 +E3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1021,7 +1047,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -63 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000606A607D6096609A60AD609D60836092608C609B60EC60BB60B160DD60D8 @@ -1030,6 +1055,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 9608960A960B960C960D960F96129615961696179619961A4E2C723F62156C35 6C546C5C6C4A6CA36C856C906C946C8C6C686C696C746C766C866CA96CD06CD4 6CAD6CF76CF86CF16CD76CB26CE06CD66CFA6CEB6CEE6CB16CD36CEF6CFE0000 +E4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1038,7 +1064,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -64 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00006D396D276D0C6D436D486D076D046D196D0E6D2B6D4D6D2E6D356D1A6D4F @@ -1047,6 +1072,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 6E6B6EB26E5F6E866E536E546E326E256E446EDF6EB16E986EE06F2D6EE26EA5 6EA76EBD6EBB6EB76ED76EB46ECF6E8F6EC26E9F6F626F466F476F246F156EF9 6F2F6F366F4B6F746F2A6F096F296F896F8D6F8C6F786F726F7C6F7A6FD10000 +E5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1055,7 +1081,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -65 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00006FC96FA76FB96FB66FC26FE16FEE6FDE6FE06FEF701A7023701B70397035 @@ -1064,6 +1089,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 900D9016902190359036902D902F9044905190529050906890589062905B66B9 9074907D908290889083908B5F505F575F565F585C3B54AB5C505C595B715C63 5C667FBC5F2A5F295F2D82745F3C9B3B5C6E59815983598D59A959AA59A30000 +E6 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1072,7 +1098,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -66 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000599759CA59AB599E59A459D259B259AF59D759BE5A055A0659DD5A0859E3 @@ -1081,6 +1106,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 5AD85ADC5B095B175B165B325B375B405C155C1C5B5A5B655B735B515B535B62 9A759A779A789A7A9A7F9A7D9A809A819A859A889A8A9A909A929A939A969A98 9A9B9A9C9A9D9A9F9AA09AA29AA39AA59AA77E9F7EA17EA37EA57EA87EA90000 +E7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1089,7 +1115,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -67 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00007EAD7EB07EBE7EC07EC17EC27EC97ECB7ECC7ED07ED47ED77EDB7EE07EE1 @@ -1098,6 +1123,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 7F277F2A7F2B7F2C7F2D7F2F7F307F317F327F337F355E7A757F5DDB753E9095 738E739173AE73A2739F73CF73C273D173B773B373C073C973C873E573D9987C 740A73E973E773DE73BA73F2740F742A745B7426742574287430742E742C0000 +E8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1106,7 +1132,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -68 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000741B741A7441745C7457745574597477746D747E749C748E748074817487 @@ -1115,6 +1140,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 680A67E967B0680C67D967B567DA67B367DD680067C367B867E2680E67C167FD 6832683368606861684E6862684468646883681D68556866684168676840683E 684A6849682968B5688F687468776893686B68C2696E68FC691F692068F90000 +E9 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1123,7 +1149,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -69 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000692468F0690B6901695768E369106971693969606942695D6984696B6980 @@ -1132,6 +1157,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 6A3E6AA06A506A5B6A356A8E6A796A3D6A286A586A7C6A916A906AA96A976AAB 733773526B816B826B876B846B926B936B8D6B9A6B9B6BA16BAA8F6B8F6D8F71 8F728F738F758F768F788F778F798F7A8F7C8F7E8F818F828F848F878F8B0000 +EA 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1140,7 +1166,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -6A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00008F8D8F8E8F8F8F988F9A8ECE620B6217621B621F6222622162256224622C @@ -1149,6 +1174,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 66776684668C66A7669D66BE66DB66DC66E666E98D328D338D368D3B8D3D8D40 8D458D468D488D498D478D4D8D558D5989C789CA89CB89CC89CE89CF89D089D1 726E729F725D7266726F727E727F7284728B728D728F72926308633263B00000 +EB 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1157,7 +1183,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -6B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000643F64D880046BEA6BF36BFD6BF56BF96C056C076C066C0D6C156C186C19 @@ -1166,6 +1191,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 80C480D980CD80D7671080DD80EB80F180F480ED810D810E80F280FC67158112 8C5A8136811E812C811881328148814C815381748159815A817181608169817C 817D816D8167584D5AB58188818281916ED581A381AA81CC672681CA81BB0000 +EC 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1174,7 +1200,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -6C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000081C181A66B246B376B396B436B466B5998D198D298D398D598D998DA6BB3 @@ -1183,6 +1208,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 716871457172714A7178717A719871B371B571A871A071E071D471E771F9721D 7228706C7118716671B9623E623D624362486249793B794079467949795B795C 7953795A796279577960796F7967797A7985798A799A79A779B35FD15FD00000 +ED 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1191,7 +1217,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -6D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000603C605D605A606760416059606360AB6106610D615D61A9619D61CB61D1 @@ -1200,6 +1225,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 7847784C786A789B7893789A7887789C78A178A378B278B978A578D478D978C9 78EC78F2790578F479137924791E79349F9B9EF99EFB9EFC76F17704770D76F9 77077708771A77227719772D7726773577387750775177477743775A77680000 +EE 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1208,7 +1234,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -6E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000077627765777F778D777D7780778C7791779F77A077B077B577BD753A7540 @@ -1217,6 +1242,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 949A949B949C94A394A494AB94AA94AD94AC94AF94B094B294B494B694B794B8 94B994BA94BC94BD94BF94C494C894C994CA94CB94CC94CD94CE94D094D194D2 94D594D694D794D994D894DB94DE94DF94E094E294E494E594E794E894EA0000 +EF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1225,7 +1251,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -6F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000094E994EB94EE94EF94F394F494F594F794F994FC94FD94FF950395029506 @@ -1234,6 +1259,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 9544954595469549954C954E954F9552955395549556955795589559955B955E 955F955D95619562956495659566956795689569956A956B956C956F95719572 9573953A77E777EC96C979D579ED79E379EB7A065D477A037A027A1E7A140000 +F0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1242,7 +1268,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -70 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00007A397A377A519ECF99A57A707688768E7693769976A474DE74E0752C9E20 @@ -1251,6 +1276,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 9E669E679E689E699E6A9E6B9E6C9E719E6D9E7375927594759675A0759D75AC 75A375B375B475B875C475B175B075C375C275D675CD75E375E875E675E475EB 75E7760375F175FC75FF761076007605760C7617760A76257618761576190000 +F1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1259,7 +1285,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -71 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000761B763C762276207640762D7630763F76357643763E7633764D765E7654 @@ -1268,6 +1293,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 88E588F1891A88FC88E888FE88F0892189198913891B890A8934892B89368941 8966897B758B80E576B276B477DC801280148016801C80208022802580268027 802980288031800B803580438046804D80528069807189839878988098830000 +F2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1276,7 +1302,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -72 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00009889988C988D988F9894989A989B989E989F98A198A298A598A6864D8654 @@ -1285,6 +1310,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 86D0871386DE86F486DF86D886D18703870786F88708870A870D87098723873B 871E8725872E871A873E87488734873187298737873F87828722877D877E877B 87608770874C876E878B87538763877C876487598765879387AF87A887D20000 +F3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1293,7 +1319,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -73 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000087C68788878587AD8797878387AB87E587AC87B587B387CB87D387BD87D1 @@ -1302,6 +1327,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 7B2E7B317B207B257B247B337B3E7B1E7B587B5A7B457B757B4C7B5D7B607B6E 7B7B7B627B727B717B907BA67BA77BB87BAC7B9D7BA87B857BAA7B9C7BA27BAB 7BB47BD17BC17BCC7BDD7BDA7BE57BE67BEA7C0C7BFE7BFC7C0F7C167C0B0000 +F4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1310,7 +1336,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -74 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00007C1F7C2A7C267C387C417C4081FE82018202820481EC8844822182228223 @@ -1319,6 +1344,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 7C9C7C9E7CA27CB27CBC7CBD7CC17CC77CCC7CCD7CC87CC57CD77CE8826E66A8 7FBF7FCE7FD57FE57FE17FE67FE97FEE7FF37CF87D777DA67DAE7E477E9B9EB8 9EB48D738D848D948D918DB18D678D6D8C478C49914A9150914E914F91640000 +F5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1327,7 +1353,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -75 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00009162916191709169916F917D917E917291749179918C91859190918D9191 @@ -1336,6 +1361,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 8DE38DF98DFB8DE48E098DFD8E148E1D8E1F8E2C8E2E8E238E2F8E3A8E408E39 8E358E3D8E318E498E418E428E518E528E4A8E708E768E7C8E6F8E748E858E8F 8E948E908E9C8E9E8C788C828C8A8C858C988C94659B89D689DE89DA89DC0000 +F6 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1344,7 +1370,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -76 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000089E589EB89EF8A3E8B26975396E996F396EF970697019708970F970E972A @@ -1353,6 +1378,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 9C829C859C869C879C887A239C8B9C8E9C909C919C929C949C959C9A9C9B9C9E 9C9F9CA09CA19CA29CA39CA59CA69CA79CA89CA99CAB9CAD9CAE9CB09CB19CB2 9CB39CB49CB59CB69CB79CBA9CBB9CBC9CBD9CC49CC59CC69CC79CCA9CCB0000 +F7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1361,7 +1387,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 -77 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00009CCC9CCD9CCE9CCF9CD09CD39CD49CD59CD79CD89CD99CDC9CDD9CDF9CE2 @@ -1370,11 +1395,3 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 990D992E995599549ADF9AE19AE69AEF9AEB9AFB9AED9AF99B089B0F9B139B1F 9B239EBD9EBE7E3B9E829E879E889E8B9E9293D69E9D9E9F9EDB9EDC9EDD9EE0 9EDF9EE29EE99EE79EE59EEA9EEF9F229F2C9F2F9F399F379F3D9F3E9F440000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -- cgit v0.12 From 9b9b51c2fab5fd17f252834c55be6dfbbc1c286a Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 14 May 2003 23:01:55 +0000 Subject: Consequent fixes from [Bug 699060]; [format] should not be too eager to demote wides to ints, and should throw errors when appropriate. --- ChangeLog | 6 ++++++ generic/tclCmdAH.c | 11 +++++++++-- tests/format.test | 25 ++++++++++++++++++++++++- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index d5c1b64..26b30f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-05-14 Donal K. Fellows + + * generic/tclCmdAH.c (Tcl_FormatObjCmd): Values which can't be + anything but wide shouldn't be demoted to long. [consequence of + HEAD fixes for Bug 699060] + 2003-05-14 Jeff Hobbs * library/encoding/gb2312.enc: copy euc-cn.enc over original diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 596795a..2e6ba99 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.5 2003/04/16 23:31:42 dgp Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.6 2003/05/14 23:01:56 dkf Exp $ */ #include "tclInt.h" @@ -2203,7 +2203,14 @@ Tcl_FormatObjCmd(dummy, interp, objc, objv) break; } else { whichValue = INT_VALUE; - intValue = (int) Tcl_WideAsLong(wideValue); + if (wideValue>ULONG_MAX || wideValuetypePtr == &tclIntType) { Tcl_GetLongFromObj(NULL, objv[objIndex], &intValue); diff --git a/tests/format.test b/tests/format.test index 909c993..487f6c5 100644 --- a/tests/format.test +++ b/tests/format.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: format.test,v 1.11.2.3 2003/03/27 13:11:11 dkf Exp $ +# RCS: @(#) $Id: format.test,v 1.11.2.4 2003/05/14 23:01:56 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -512,6 +512,29 @@ test format-17.5 {type conversions with wides} { lappend result [expr {$a == $b}] } {1 1} +test format-18.1 {do not demote existing numeric values} { + set a 0xaaaaaaaa + # Ensure $a and $b are separate objects + set b 0xaaaa + append b aaaa + + set result [expr {$a == $b}] + format %08lx $b + lappend result [expr {$a == $b}] + + set b 0xaaaa + append b aaaa + + lappend result [expr {$a == $b}] + format %08x $b + lappend result [expr {$a == $b}] +} {1 1 1 1} +test format-18.2 {do not demote existing numeric values} {wideIntExpressions} { + set a [expr {0xaaaaaaaaaa + 1}] + set b 0xaaaaaaaaab + list [catch {format %08x $a} msg] $msg [expr {$a == $b}] +} {1 {integer value too large to represent} 1} + # cleanup catch {unset a} catch {unset b} -- cgit v0.12 From c2df9ed4279858a966003e3f548d080001369805 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 15 May 2003 18:10:22 +0000 Subject: * library/encoding/gb2312-raw.enc (new): This is the original gb2312.enc renamed to allow for it to still be used. This is needed by Tk (unix) because X fonts with gb2312* charsets really do want the original gb2312 encoding. [Bug 557030] --- ChangeLog | 7 + library/encoding/gb2312-raw.enc | 1380 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 1387 insertions(+) create mode 100644 library/encoding/gb2312-raw.enc diff --git a/ChangeLog b/ChangeLog index 26b30f5..ecbbd93 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-05-15 Jeff Hobbs + + * library/encoding/gb2312-raw.enc (new): This is the original + gb2312.enc renamed to allow for it to still be used. This is + needed by Tk (unix) because X fonts with gb2312* charsets really + do want the original gb2312 encoding. [Bug 557030] + 2003-05-14 Donal K. Fellows * generic/tclCmdAH.c (Tcl_FormatObjCmd): Values which can't be diff --git a/library/encoding/gb2312-raw.enc b/library/encoding/gb2312-raw.enc new file mode 100644 index 0000000..813d7a6 --- /dev/null +++ b/library/encoding/gb2312-raw.enc @@ -0,0 +1,1380 @@ +# Encoding file: gb2312, double-byte +D +233F 0 81 +21 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000030003001300230FB02C902C700A8300330052015FF5E2225202620182019 +201C201D3014301530083009300A300B300C300D300E300F3016301730103011 +00B100D700F72236222722282211220F222A222922082237221A22A522252220 +23122299222B222E2261224C2248223D221D2260226E226F22642265221E2235 +22342642264000B0203220332103FF0400A4FFE0FFE1203000A7211626062605 +25CB25CF25CE25C725C625A125A025B325B2203B219221902191219330130000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +22 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000024882489248A248B248C248D248E248F2490249124922493249424952496 +249724982499249A249B247424752476247724782479247A247B247C247D247E +247F248024812482248324842485248624872460246124622463246424652466 +2467246824690000000032203221322232233224322532263227322832290000 +00002160216121622163216421652166216721682169216A216B000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +23 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000FF01FF02FF03FFE5FF05FF06FF07FF08FF09FF0AFF0BFF0CFF0DFF0EFF0F +FF10FF11FF12FF13FF14FF15FF16FF17FF18FF19FF1AFF1BFF1CFF1DFF1EFF1F +FF20FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F +FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF3BFF3CFF3DFF3EFF3F +FF40FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F +FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +24 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000304130423043304430453046304730483049304A304B304C304D304E304F +3050305130523053305430553056305730583059305A305B305C305D305E305F +3060306130623063306430653066306730683069306A306B306C306D306E306F +3070307130723073307430753076307730783079307A307B307C307D307E307F +3080308130823083308430853086308730883089308A308B308C308D308E308F +3090309130923093000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +25 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000030A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF +30B030B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF +30C030C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF +30D030D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF +30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF +30F030F130F230F330F430F530F6000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +26 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000039103920393039403950396039703980399039A039B039C039D039E039F +03A003A103A303A403A503A603A703A803A90000000000000000000000000000 +000003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF +03C003C103C303C403C503C603C703C803C90000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +27 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000004100411041204130414041504010416041704180419041A041B041C041D +041E041F0420042104220423042404250426042704280429042A042B042C042D +042E042F00000000000000000000000000000000000000000000000000000000 +000004300431043204330434043504510436043704380439043A043B043C043D +043E043F0440044104420443044404450446044704480449044A044B044C044D +044E044F00000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +28 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000010100E101CE00E0011300E9011B00E8012B00ED01D000EC014D00F301D2 +00F2016B00FA01D400F901D601D801DA01DC00FC00EA00000000000000000000 +0000000000000000000031053106310731083109310A310B310C310D310E310F +3110311131123113311431153116311731183119311A311B311C311D311E311F +3120312131223123312431253126312731283129000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +29 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000002500250125022503250425052506250725082509250A250B +250C250D250E250F2510251125122513251425152516251725182519251A251B +251C251D251E251F2520252125222523252425252526252725282529252A252B +252C252D252E252F2530253125322533253425352536253725382539253A253B +253C253D253E253F2540254125422543254425452546254725482549254A254B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +30 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000554A963F57C3632854CE550954C07691764C853C77EE827E788D72319698 +978D6C285B894FFA630966975CB880FA684880AE660276CE51F9655671AC7FF1 +888450B2596561CA6FB382AD634C625253ED54277B06516B75A45DF462D48DCB +9776628A8019575D97387F627238767D67CF767E64464F708D2562DC7A176591 +73ED642C6273822C9881677F7248626E62CC4F3474E3534A529E7ECA90A65E2E +6886699C81807ED168D278C5868C9551508D8C2482DE80DE5305891252650000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +31 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000858496F94FDD582199715B9D62B162A566B48C799C8D7206676F789160B2 +535153178F8880CC8D1D94A1500D72C8590760EB711988AB595482EF672C7B28 +5D297EF7752D6CF58E668FF8903C9F3B6BD491197B145F7C78A784D6853D6BD5 +6BD96BD65E015E8775F995ED655D5F0A5FC58F9F58C181C2907F965B97AD8FB9 +7F168D2C62414FBF53D8535E8FA88FA98FAB904D68075F6A819888689CD6618B +522B762A5F6C658C6FD26EE85BBE6448517551B067C44E1979C9997C70B30000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +32 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000075C55E7673BB83E064AD62E894B56CE2535A52C3640F94C27B944F2F5E1B +82368116818A6E246CCA9A736355535C54FA886557E04E0D5E036B657C3F90E8 +601664E6731C88C16750624D8D22776C8E2991C75F6983DC8521991053C28695 +6B8B60ED60E8707F82CD82314ED36CA785CF64CD7CD969FD66F9834953957B56 +4FA7518C6D4B5C428E6D63D253C9832C833667E578B4643D5BDF5C945DEE8BE7 +62C667F48C7A640063BA8749998B8C177F2094F24EA7961098A4660C73160000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +33 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000573A5C1D5E38957F507F80A05382655E7545553150218D856284949E671D +56326F6E5DE2543570928F66626F64A463A35F7B6F8890F481E38FB05C186668 +5FF16C8996488D81886C649179F057CE6A59621054484E587A0B60E96F848BDA +627F901E9A8B79E4540375F4630153196C608FDF5F1B9A70803B9F7F4F885C3A +8D647FC565A570BD514551B2866B5D075BA062BD916C75748E0C7A2061017B79 +4EC77EF877854E1181ED521D51FA6A7153A88E87950496CF6EC19664695A0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +34 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000784050A877D7641089E6590463E35DDD7A7F693D4F20823955984E3275AE +7A975E625E8A95EF521B5439708A6376952457826625693F918755076DF37EAF +882262337EF075B5832878C196CC8F9E614874F78BCD6B64523A8D506B21806A +847156F153064ECE4E1B51D17C97918B7C074FC38E7F7BE17A9C64675D1450AC +810676017CB96DEC7FE067515B585BF878CB64AE641363AA632B9519642D8FBE +7B5476296253592754466B7950A362345E266B864EE38D37888B5F85902E0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +35 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00006020803D62C54E39535590F863B880C665E66C2E4F4660EE6DE18BDE5F39 +86CB5F536321515A83616863520063638E4850125C9B79775BFC52307A3B60BC +905376D75FB75F9776848E6C706F767B7B4977AA51F3909358244F4E6EF48FEA +654C7B1B72C46DA47FDF5AE162B55E95573084827B2C5E1D5F1F90127F1498A0 +63826EC7789870B95178975B57AB75354F4375385E9760E659606DC06BBF7889 +53FC96D551CB52016389540A94938C038DCC7239789F87768FED8C0D53E00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +36 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00004E0176EF53EE948998769F0E952D5B9A8BA24E224E1C51AC846361C252A8 +680B4F97606B51BB6D1E515C6296659796618C46901775D890FD77636BD2728A +72EC8BFB583577798D4C675C9540809A5EA66E2159927AEF77ED953B6BB565AD +7F0E58065151961F5BF958A954288E726566987F56E4949D76FE9041638754C6 +591A593A579B8EB267358DFA8235524160F0581586FE5CE89E454FC4989D8BB9 +5A2560765384627C904F9102997F6069800C513F80335C1499756D314E8C0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +37 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00008D3053D17F5A7B4F4F104E4F96006CD573D085E95E06756A7FFB6A0A77FE +94927E4151E170E653CD8FD483038D2972AF996D6CDB574A82B365B980AA623F +963259A84EFF8BBF7EBA653E83F2975E556198DE80A5532A8BFD542080BA5E9F +6CB88D3982AC915A54296C1B52067EB7575F711A6C7E7C89594B4EFD5FFF6124 +7CAA4E305C0167AB87025CF0950B98CE75AF70FD902251AF7F1D8BBD594951E4 +4F5B5426592B657780A45B75627662C28F905E456C1F7B264F0F4FD8670D0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +38 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00006D6E6DAA798F88B15F17752B629A8F854FEF91DC65A7812F81515E9C8150 +8D74526F89868D4B590D50854ED8961C723681798D1F5BCC8BA3964459877F1A +54905676560E8BE565396982949976D66E895E727518674667D17AFF809D8D76 +611F79C665628D635188521A94A27F38809B7EB25C976E2F67607BD9768B9AD8 +818F7F947CD5641E95507A3F544A54E56B4C640162089E3D80F3759952729769 +845B683C86E49601969494EC4E2A54047ED968398DDF801566F45E9A7FB90000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +39 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000057C2803F68975DE5653B529F606D9F9A4F9B8EAC516C5BAB5F135DE96C5E +62F18D21517194A952FE6C9F82DF72D757A267848D2D591F8F9C83C754957B8D +4F306CBD5B6459D19F1353E486CA9AA88C3780A16545987E56FA96C7522E74DC +52505BE1630289024E5662D0602A68FA51735B9851A089C27BA199867F5060EF +704C8D2F51495E7F901B747089C4572D78455F529F9F95FA8F689B3C8BE17678 +684267DC8DEA8D35523D8F8A6EDA68CD950590ED56FD679C88F98FC754C80000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +3A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00009AB85B696D776C264EA55BB39A87916361A890AF97E9542B6DB55BD251FD +558A7F557FF064BC634D65F161BE608D710A6C576C49592F676D822A58D5568E +8C6A6BEB90DD597D801753F76D695475559D837783CF683879BE548C4F555408 +76D28C8996026CB36DB88D6B89109E648D3A563F9ED175D55F8872E0606854FC +4EA86A2A886160528F7054C470D886799E3F6D2A5B8F5F187EA255894FAF7334 +543C539A5019540E547C4E4E5FFD745A58F6846B80E1877472D07CCA6E560000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +3B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00005F27864E552C62A44E926CAA623782B154D7534E733E6ED1753B52125316 +8BDD69D05F8A60006DEE574F6B2273AF68538FD87F13636260A3552475EA8C62 +71156DA35BA65E7B8352614C9EC478FA87577C27768751F060F6714C66435E4C +604D8C0E707063258F895FBD606286D456DE6BC160946167534960E066668D3F +79FD4F1A70E96C478BB38BF27ED88364660F5A5A9B426D516DF78C416D3B4F19 +706B83B7621660D1970D8D27797851FB573E57FA673A75787A3D79EF7B950000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +3C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000808C99658FF96FC08BA59E2159EC7EE97F095409678168D88F917C4D96C6 +53CA602575BE6C7253735AC97EA7632451E0810A5DF184DF628051805B634F0E +796D524260B86D4E5BC45BC28BA18BB065E25FCC964559937EE77EAA560967B7 +59394F735BB652A0835A988A8D3E753294BE50477A3C4EF767B69A7E5AC16B7C +76D1575A5C167B3A95F4714E517C80A9827059787F04832768C067EC78B17877 +62E363617B804FED526A51CF835069DB92748DF58D3189C1952E7BAD4EF60000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +3D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000506582305251996F6E106E856DA75EFA50F559DC5C066D466C5F7586848B +686859568BB253209171964D854969127901712680F64EA490CA6D479A845A07 +56BC640594F077EB4FA5811A72E189D2997A7F347EDE527F655991758F7F8F83 +53EB7A9663ED63A5768679F888579636622A52AB8282685467706377776B7AED +6D017ED389E359D0621285C982A5754C501F4ECB75A58BEB5C4A5DFE7B4B65A4 +91D14ECA6D25895F7D2795264EC58C288FDB9773664B79818FD170EC6D780000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +3E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00005C3D52B283465162830E775B66769CB84EAC60CA7CBE7CB37ECF4E958B66 +666F988897595883656C955C5F8475C997567ADF7ADE51C070AF7A9863EA7A76 +7EA0739697ED4E4570784E5D915253A9655165E781FC8205548E5C31759A97A0 +62D872D975BD5C459A7983CA5C40548077E94E3E6CAE805A62D2636E5DE85177 +8DDD8E1E952F4FF153E560E770AC526763509E435A1F5026773753777EE26485 +652B628963985014723589C951B38BC07EDD574783CC94A7519B541B5CFB0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +3F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00004FCA7AE36D5A90E19A8F55805496536154AF5F0063E9697751EF6168520A +582A52D8574E780D770B5EB761777CE0625B62974EA27095800362F770E49760 +577782DB67EF68F578D5989779D158F354B353EF6E34514B523B5BA28BFE80AF +554357A660735751542D7A7A60505B5463A762A053E362635BC767AF54ED7A9F +82E691775E9388E4593857AE630E8DE880EF57577B774FA95FEB5BBD6B3E5321 +7B5072C2684677FF773665F751B54E8F76D45CBF7AA58475594E9B4150800000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +40 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000998861276E8357646606634656F062EC62695ED39614578362C955878721 +814A8FA3556683B167658D5684DD5A6A680F62E67BEE961151706F9C8C3063FD +89C861D27F0670C26EE57405699472FC5ECA90CE67176D6A635E52B372628001 +4F6C59E5916A70D96D9D52D24E5096F7956D857E78CA7D2F5121579264C2808B +7C7B6CEA68F1695E51B7539868A872819ECE7BF172F879BB6F137406674E91CC +9CA4793C83898354540F68174E3D538952B1783E5386522950884F8B4FD00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +41 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000075E27ACB7C926CA596B6529B748354E94FE9805483B28FDE95705EC9601C +6D9F5E18655B813894FE604B70BC7EC37CAE51C968817CB1826F4E248F8691CF +667E4EAE8C0564A9804A50DA759771CE5BE58FBD6F664E86648295635ED66599 +521788C270C852A3730E7433679778F797164E3490BB9CDE6DCB51DB8D41541D +62CE73B283F196F69F8494C34F367F9A51CC707596755CAD988653E64EE46E9C +740969B4786B998F7559521876246D4167F3516D9F99804B54997B3C7ABF0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +42 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00009686578462E29647697C5A0464027BD36F0F964B82A6536298855E907089 +63B35364864F9C819E93788C97328DEF8D429E7F6F5E79845F559646622E9A74 +541594DD4FA365C55C655C617F1586516C2F5F8B73876EE47EFF5CE6631B5B6A +6EE653754E7163A0756562A18F6E4F264ED16CA67EB68BBA841D87BA7F57903B +95237BA99AA188F8843D6D1B9A867EDC59889EBB739B780186829A6C9A82561B +541757CB4E709EA653568FC881097792999286EE6EE1851366FC61626F2B0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +43 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00008C298292832B76F26C135FD983BD732B8305951A6BDB77DB94C6536F8302 +51925E3D8C8C8D384E4873AB679A68859176970971646CA177095A9295416BCF +7F8E66275BD059B95A9A95E895F74EEC840C84996AAC76DF9530731B68A65B5F +772F919A97617CDC8FF78C1C5F257C7379D889C56CCC871C5BC65E4268C97720 +7EF55195514D52C95A297F05976282D763CF778485D079D26E3A5E9959998511 +706D6C1162BF76BF654F60AF95FD660E879F9E2394ED540D547D8C2C64780000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +44 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000647986116A21819C78E864699B5462B9672B83AB58A89ED86CAB6F205BDE +964C8C0B725F67D062C772614EA959C66BCD589366AE5E5552DF6155672876EE +776672677A4662FF54EA545094A090A35A1C7EB36C164E435976801059485357 +753796BE56CA63208111607C95F96DD65462998151855AE980FD59AE9713502A +6CE55C3C62DF4F60533F817B90066EBA852B62C85E7478BE64B5637B5FF55A18 +917F9E1F5C3F634F80425B7D556E954A954D6D8560A867E072DE51DD5B810000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +45 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000062E76CDE725B626D94AE7EBD81136D53519C5F04597452AA601259736696 +8650759F632A61E67CEF8BFA54E66B279E256BB485D5545550766CA4556A8DB4 +722C5E156015743662CD6392724C5F986E436D3E65006F5876D878D076FC7554 +522453DB4E535E9E65C1802A80D6629B5486522870AE888D8DD16CE1547880DA +57F988F48D54966A914D4F696C9B55B776C6783062A870F96F8E5F6D84EC68DA +787C7BF781A8670B9E4F636778B0576F78129739627962AB528874356BD70000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +46 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00005564813E75B276AE533975DE50FB5C418B6C7BC7504F72479A9798D86F02 +74E27968648777A562FC98918D2B54C180584E52576A82F9840D5E7351ED74F6 +8BC45C4F57616CFC98875A4678349B448FEB7C955256625194FA4EC683868461 +83E984B257D467345703666E6D668C3166DD7011671F6B3A6816621A59BB4E03 +51C46F0667D26C8F517668CB59476B6775665D0E81109F5065D7794879419A91 +8D775C824E5E4F01542F5951780C56686C148FC45F036C7D6CE38BAB63900000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +47 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000060706D3D72756266948E94C553438FC17B7E4EDF8C264E7E9ED494B194B3 +524D6F5C90636D458C3458115D4C6B206B4967AA545B81547F8C589985375F3A +62A26A47953965726084686577A74E544FA85DE7979864AC7FD85CED4FCF7A8D +520783044E14602F7A8394A64FB54EB279E6743452E482B964D279BD5BDD6C81 +97528F7B6C22503E537F6E0564CE66746C3060C598778BF75E86743C7A7779CB +4E1890B174036C4256DA914B6CC58D8B533A86C666F28EAF5C489A716E200000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +48 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000053D65A369F8B8DA353BB570898A76743919B6CC9516875CA62F372AC5238 +529D7F3A7094763853749E4A69B7786E96C088D97FA4713671C3518967D374E4 +58E4651856B78BA9997662707ED560F970ED58EC4EC14EBA5FCD97E74EFB8BA4 +5203598A7EAB62544ECD65E5620E833884C98363878D71946EB65BB97ED25197 +63C967D480898339881551125B7A59828FB14E736C5D516589258F6F962E854A +745E951095F06DA682E55F3164926D128428816E9CC3585E8D5B4E0953C10000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +49 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00004F1E6563685155D34E2764149A9A626B5AC2745F82726DA968EE50E7838E +7802674052396C997EB150BB5565715E7B5B665273CA82EB67495C715220717D +886B95EA965564C58D6181B355846C5562477F2E58924F2455468D4F664C4E0A +5C1A88F368A2634E7A0D70E7828D52FA97F65C1154E890B57ECD59628D4A86C7 +820C820D8D6664445C0461516D89793E8BBE78377533547B4F388EAB6DF15A20 +7EC5795E6C885BA15A76751A80BE614E6E1758F0751F7525727253477EF30000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +4A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000770176DB526980DC57235E08593172EE65BD6E7F8BD75C388671534177F3 +62FE65F64EC098DF86805B9E8BC653F277E24F7F5C4E9A7659CB5F0F793A58EB +4E1667FF4E8B62ED8A93901D52BF662F55DC566C90024ED54F8D91CA99706C0F +5E0260435BA489C68BD56536624B99965B885BFF6388552E53D77626517D852C +67A268B36B8A62928F9353D482126DD1758F4E668D4E5B70719F85AF669166D9 +7F7287009ECD9F205C5E672F8FF06811675F620D7AD658855EB665706F310000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +4B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000060555237800D6454887075295E05681362F4971C53CC723D8C016C347761 +7A0E542E77AC987A821C8BF47855671470C165AF64955636601D79C153F84E1D +6B7B80865BFA55E356DB4F3A4F3C99725DF3677E80386002988290015B8B8BBC +8BF5641C825864DE55FD82CF91654FD77D20901F7C9F50F358516EAF5BBF8BC9 +80839178849C7B97867D968B968F7EE59AD3788E5C817A57904296A7795F5B59 +635F7B0B84D168AD55067F2974107D2295016240584C4ED65B83597958540000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +4C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000736D631E8E4B8E0F80CE82D462AC53F06CF0915E592A60016C70574D644A +8D2A762B6EE9575B6A8075F06F6D8C2D8C0857666BEF889278B363A253F970AD +6C645858642A580268E0819B55107CD650188EBA6DCC8D9F70EB638F6D9B6ED4 +7EE68404684390036DD896768BA85957727985E4817E75BC8A8A68AF52548E22 +951163D098988E44557C4F5366FF568F60D56D9552435C4959296DFB586B7530 +751C606C82148146631167618FE2773A8DF38D3494C15E165385542C70C30000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +4D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00006C405EF7505C4EAD5EAD633A8247901A6850916E77B3540C94DC5F647AE5 +687663457B527EDF75DB507762955934900F51F879C37A8156FE5F9290146D82 +5C60571F541051546E4D56E263A89893817F8715892A9000541E5C6F81C062D6 +625881319E3596409A6E9A7C692D59A562D3553E631654C786D96D3C5A0374E6 +889C6B6A59168C4C5F2F6E7E73A9987D4E3870F75B8C7897633D665A769660CB +5B9B5A494E0781556C6A738B4EA167897F515F8065FA671B5FD859845A010000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +4E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00005DCD5FAE537197E68FDD684556F4552F60DF4E3A6F4D7EF482C7840E59D4 +4F1F4F2A5C3E7EAC672A851A5473754F80C355829B4F4F4D6E2D8C135C096170 +536B761F6E29868A658795FB7EB9543B7A337D0A95EE55E17FC174EE631D8717 +6DA17A9D621165A1536763E16C835DEB545C94A84E4C6C618BEC5C4B65E0829C +68A7543E54346BCB6B664E9463425348821E4F0D4FAE575E620A96FE66647269 +52FF52A1609F8BEF661471996790897F785277FD6670563B54389521727A0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +4F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00007A00606F5E0C6089819D591560DC718470EF6EAA6C5072806A8488AD5E2D +4E605AB3559C94E36D177CFB9699620F7EC6778E867E5323971E8F9666875CE1 +4FA072ED4E0B53A6590F54136380952851484ED99C9C7EA454B88D2488548237 +95F26D8E5F265ACC663E966973B0732E53BF817A99857FA15BAA967796507EBF +76F853A2957699997BB189446E584E617FD479658BE660F354CD4EAB98795DF7 +6A6150CF54118C618427785D9704524A54EE56A395006D885BB56DC666530000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +50 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00005C0F5B5D6821809655787B11654869544E9B6B47874E978B534F631F643A +90AA659C80C18C10519968B0537887F961C86CC46CFB8C225C5185AA82AF950C +6B238F9B65B05FFB5FC34FE18845661F8165732960FA51745211578B5F6290A2 +884C91925E78674F602759D3514451F680F853086C7996C4718A4F114FEE7F9E +673D55C5950879C088967EE3589F620C9700865A5618987B5F908BB884C49157 +53D965ED5E8F755C60647D6E5A7F7EEA7EED8F6955A75BA360AC65CB73840000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +51 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00009009766377297EDA9774859B5B667A7496EA884052CB718F5FAA65EC8BE2 +5BFB9A6F5DE16B896C5B8BAD8BAF900A8FC5538B62BC9E269E2D54404E2B82BD +7259869C5D1688596DAF96C554D14E9A8BB6710954BD960970DF6DF976D04E25 +781487125CA95EF68A00989C960E708E6CBF594463A9773C884D6F1482735830 +71D5538C781A96C155015F6671305BB48C1A9A8C6B83592E9E2F79E76768626C +4F6F75A17F8A6D0B96336C274EF075D2517B68376F3E90808170599674760000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +52 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000064475C2790657A918C2359DA54AC8200836F898180006930564E80367237 +91CE51B64E5F987563964E1A53F666F3814B591C6DB24E0058F9533B63D694F1 +4F9D4F0A886398905937905779FB4EEA80F075916C825B9C59E85F5D69058681 +501A5DF24E5977E34EE5827A6291661390915C794EBF5F7981C69038808475AB +4EA688D4610F6BC55FC64E4976CA6EA28BE38BAE8C0A8BD15F027FFC7FCC7ECE +8335836B56E06BB797F3963459FB541F94F66DEB5BC5996E5C395F1596900000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +53 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000537082F16A315A749E705E947F2883B984248425836787478FCE8D6276C8 +5F719896786C662054DF62E54F6381C375C85EB896CD8E0A86F9548F6CF36D8C +6C38607F52C775285E7D4F1860A05FE75C24753190AE94C072B96CB96E389149 +670953CB53F34F5191C98BF153C85E7C8FC26DE44E8E76C26986865E611A8206 +4F594FDE903E9C7C61096E1D6E1496854E885A3196E84E0E5C7F79B95B878BED +7FBD738957DF828B90C15401904755BB5CEA5FA161086B3272F180B28A890000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +54 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00006D745BD388D598848C6B9A6D9E336E0A51A4514357A38881539F63F48F95 +56ED54585706733F6E907F188FDC82D1613F6028966266F07EA68D8A8DC394A5 +5CB37CA4670860A6960580184E9190E75300966851418FD08574915D665597F5 +5B55531D78386742683D54C9707E5BB08F7D518D572854B1651266828D5E8D43 +810F846C906D7CDF51FF85FB67A365E96FA186A48E81566A90207682707671E5 +8D2362E952196CFD8D3C600E589E618E66FE8D60624E55B36E23672D8F670000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +55 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000094E195F87728680569A8548B4E4D70B88BC86458658B5B857A84503A5BE8 +77BB6BE18A797C986CBE76CF65A98F975D2D5C5586386808536062187AD96E5B +7EFD6A1F7AE05F706F335F20638C6DA867564E085E108D264ED780C07634969C +62DB662D627E6CBC8D7571677F695146808753EC906E629854F286F08F998005 +951785178FD96D5973CD659F771F7504782781FB8D1E94884FA6679575B98BCA +9707632F9547963584B8632377415F8172F04E896014657462EF6B63653F0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +56 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00005E2775C790D18BC1829D679D652F5431871877E580A281026C414E4B7EC7 +804C76F4690D6B966267503C4F84574063076B628DBE53EA65E87EB85FD7631A +63B781F381F47F6E5E1C5CD95236667A79E97A1A8D28709975D46EDE6CBB7A92 +4E2D76C55FE0949F88777EC879CD80BF91CD4EF24F17821F54685DDE6D328BCC +7CA58F7480985E1A549276B15B99663C9AA473E0682A86DB6731732A8BF88BDB +90107AF970DB716E62C477A956314E3B845767F152A986C08D2E94F87B510000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +57 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00004F4F6CE8795D9A7B6293722A62FD4E1378168F6C64B08D5A7BC668695E84 +88C55986649E58EE72B6690E95258FFD8D5857607F008C0651C6634962D95353 +684C74228301914C55447740707C6D4A517954A88D4459FF6ECB6DC45B5C7D2B +4ED47C7D6ED35B5081EA6E0D5B579B0368D58E2A5B977EFC603B7EB590B98D70 +594F63CD79DF8DB3535265CF79568BC5963B7EC494BB7E825634918967007F6A +5C0A907566285DE64F5067DE505A4F5C57505EA7000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +58 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00004E8D4E0C51404E105EFF53454E154E984E1E9B325B6C56694E2879BA4E3F +53154E47592D723B536E6C1056DF80E499976BD3777E9F174E364E9F9F104E5C +4E694E9382885B5B556C560F4EC4538D539D53A353A553AE97658D5D531A53F5 +5326532E533E8D5C5366536352025208520E522D5233523F5240524C525E5261 +525C84AF527D528252815290529351827F544EBB4EC34EC94EC24EE84EE14EEB +4EDE4F1B4EF34F224F644EF54F254F274F094F2B4F5E4F6765384F5A4F5D0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +59 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00004F5F4F574F324F3D4F764F744F914F894F834F8F4F7E4F7B4FAA4F7C4FAC +4F944FE64FE84FEA4FC54FDA4FE34FDC4FD14FDF4FF85029504C4FF3502C500F +502E502D4FFE501C500C50255028507E504350555048504E506C507B50A550A7 +50A950BA50D6510650ED50EC50E650EE5107510B4EDD6C3D4F584F654FCE9FA0 +6C467C74516E5DFD9EC999985181591452F9530D8A07531051EB591951554EA0 +51564EB3886E88A44EB5811488D279805B3488037FB851AB51B151BD51BC0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +5A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000051C7519651A251A58BA08BA68BA78BAA8BB48BB58BB78BC28BC38BCB8BCF +8BCE8BD28BD38BD48BD68BD88BD98BDC8BDF8BE08BE48BE88BE98BEE8BF08BF3 +8BF68BF98BFC8BFF8C008C028C048C078C0C8C0F8C118C128C148C158C168C19 +8C1B8C188C1D8C1F8C208C218C258C278C2A8C2B8C2E8C2F8C328C338C358C36 +5369537A961D962296219631962A963D963C964296499654965F9667966C9672 +96749688968D969796B09097909B909D909990AC90A190B490B390B690BA0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +5B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000090B890B090CF90C590BE90D090C490C790D390E690E290DC90D790DB90EB +90EF90FE91049122911E91239131912F913991439146520D594252A252AC52AD +52BE54FF52D052D652F053DF71EE77CD5EF451F551FC9B2F53B65F01755A5DEF +574C57A957A1587E58BC58C558D15729572C572A57335739572E572F575C573B +574257695785576B5786577C577B5768576D5776577357AD57A4578C57B257CF +57A757B4579357A057D557D857DA57D957D257B857F457EF57F857E457DD0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +5C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000580B580D57FD57ED5800581E5819584458205865586C58815889589A5880 +99A89F1961FF8279827D827F828F828A82A88284828E82918297829982AB82B8 +82BE82B082C882CA82E3829882B782AE82CB82CC82C182A982B482A182AA829F +82C482CE82A482E1830982F782E4830F830782DC82F482D282D8830C82FB82D3 +8311831A83068314831582E082D5831C8351835B835C83088392833C83348331 +839B835E832F834F83478343835F834083178360832D833A8333836683650000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +5D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00008368831B8369836C836A836D836E83B0837883B383B483A083AA8393839C +8385837C83B683A9837D83B8837B8398839E83A883BA83BC83C1840183E583D8 +58078418840B83DD83FD83D6841C84388411840683D483DF840F840383F883F9 +83EA83C583C0842683F083E1845C8451845A8459847384878488847A84898478 +843C844684698476848C848E8431846D84C184CD84D084E684BD84D384CA84BF +84BA84E084A184B984B4849784E584E3850C750D853884F08539851F853A0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +5E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00008556853B84FF84FC8559854885688564855E857A77A285438572857B85A4 +85A88587858F857985AE859C858585B985B785B085D385C185DC85FF86278605 +86298616863C5EFE5F08593C594180375955595A5958530F5C225C255C2C5C34 +624C626A629F62BB62CA62DA62D762EE632262F66339634B634363AD63F66371 +637A638E63B4636D63AC638A636963AE63BC63F263F863E063FF63C463DE63CE +645263C663BE64456441640B641B6420640C64266421645E6484646D64960000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +5F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000647A64B764B8649964BA64C064D064D764E464E265096525652E5F0B5FD2 +75195F11535F53F153FD53E953E853FB541254165406544B5452545354545456 +54435421545754595423543254825494547754715464549A549B548454765466 +549D54D054AD54C254B454D254A754A654D354D4547254A354D554BB54BF54CC +54D954DA54DC54A954AA54A454DD54CF54DE551B54E7552054FD551454F35522 +5523550F55115527552A5567558F55B55549556D55415555553F5550553C0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +60 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00005537555655755576557755335530555C558B55D2558355B155B955885581 +559F557E55D65591557B55DF55BD55BE5594559955EA55F755C9561F55D155EB +55EC55D455E655DD55C455EF55E555F255F355CC55CD55E855F555E48F94561E +5608560C56015624562355FE56005627562D565856395657562C564D56625659 +565C564C5654568656645671566B567B567C5685569356AF56D456D756DD56E1 +56F556EB56F956FF5704570A5709571C5E0F5E195E145E115E315E3B5E3C0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +61 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00005E375E445E545E5B5E5E5E615C8C5C7A5C8D5C905C965C885C985C995C91 +5C9A5C9C5CB55CA25CBD5CAC5CAB5CB15CA35CC15CB75CC45CD25CE45CCB5CE5 +5D025D035D275D265D2E5D245D1E5D065D1B5D585D3E5D345D3D5D6C5D5B5D6F +5D5D5D6B5D4B5D4A5D695D745D825D995D9D8C735DB75DC55F735F775F825F87 +5F895F8C5F955F995F9C5FA85FAD5FB55FBC88625F6172AD72B072B472B772B8 +72C372C172CE72CD72D272E872EF72E972F272F472F7730172F3730372FA0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +62 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000072FB731773137321730A731E731D7315732273397325732C733873317350 +734D73577360736C736F737E821B592598E7592459029963996799689969996A +996B996C99749977997D998099849987998A998D999099919993999499955E80 +5E915E8B5E965EA55EA05EB95EB55EBE5EB38D535ED25ED15EDB5EE85EEA81BA +5FC45FC95FD65FCF60035FEE60045FE15FE45FFE600560065FEA5FED5FF86019 +60356026601B600F600D6029602B600A603F602160786079607B607A60420000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +63 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000606A607D6096609A60AD609D60836092608C609B60EC60BB60B160DD60D8 +60C660DA60B4612061266115612360F46100610E612B614A617561AC619461A7 +61B761D461F55FDD96B395E995EB95F195F395F595F695FC95FE960396049606 +9608960A960B960C960D960F96129615961696179619961A4E2C723F62156C35 +6C546C5C6C4A6CA36C856C906C946C8C6C686C696C746C766C866CA96CD06CD4 +6CAD6CF76CF86CF16CD76CB26CE06CD66CFA6CEB6CEE6CB16CD36CEF6CFE0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +64 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00006D396D276D0C6D436D486D076D046D196D0E6D2B6D4D6D2E6D356D1A6D4F +6D526D546D336D916D6F6D9E6DA06D5E6D936D946D5C6D606D7C6D636E1A6DC7 +6DC56DDE6E0E6DBF6DE06E116DE66DDD6DD96E166DAB6E0C6DAE6E2B6E6E6E4E +6E6B6EB26E5F6E866E536E546E326E256E446EDF6EB16E986EE06F2D6EE26EA5 +6EA76EBD6EBB6EB76ED76EB46ECF6E8F6EC26E9F6F626F466F476F246F156EF9 +6F2F6F366F4B6F746F2A6F096F296F896F8D6F8C6F786F726F7C6F7A6FD10000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +65 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00006FC96FA76FB96FB66FC26FE16FEE6FDE6FE06FEF701A7023701B70397035 +704F705E5B805B845B955B935BA55BB8752F9A9E64345BE45BEE89305BF08E47 +8B078FB68FD38FD58FE58FEE8FE48FE98FE68FF38FE890059004900B90269011 +900D9016902190359036902D902F9044905190529050906890589062905B66B9 +9074907D908290889083908B5F505F575F565F585C3B54AB5C505C595B715C63 +5C667FBC5F2A5F295F2D82745F3C9B3B5C6E59815983598D59A959AA59A30000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +66 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000599759CA59AB599E59A459D259B259AF59D759BE5A055A0659DD5A0859E3 +59D859F95A0C5A095A325A345A115A235A135A405A675A4A5A555A3C5A625A75 +80EC5AAA5A9B5A775A7A5ABE5AEB5AB25AD25AD45AB85AE05AE35AF15AD65AE6 +5AD85ADC5B095B175B165B325B375B405C155C1C5B5A5B655B735B515B535B62 +9A759A779A789A7A9A7F9A7D9A809A819A859A889A8A9A909A929A939A969A98 +9A9B9A9C9A9D9A9F9AA09AA29AA39AA59AA77E9F7EA17EA37EA57EA87EA90000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +67 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00007EAD7EB07EBE7EC07EC17EC27EC97ECB7ECC7ED07ED47ED77EDB7EE07EE1 +7EE87EEB7EEE7EEF7EF17EF27F0D7EF67EFA7EFB7EFE7F017F027F037F077F08 +7F0B7F0C7F0F7F117F127F177F197F1C7F1B7F1F7F217F227F237F247F257F26 +7F277F2A7F2B7F2C7F2D7F2F7F307F317F327F337F355E7A757F5DDB753E9095 +738E739173AE73A2739F73CF73C273D173B773B373C073C973C873E573D9987C +740A73E973E773DE73BA73F2740F742A745B7426742574287430742E742C0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +68 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000741B741A7441745C7457745574597477746D747E749C748E748074817487 +748B749E74A874A9749074A774D274BA97EA97EB97EC674C6753675E67486769 +67A56787676A6773679867A7677567A8679E67AD678B6777677C67F0680967D8 +680A67E967B0680C67D967B567DA67B367DD680067C367B867E2680E67C167FD +6832683368606861684E6862684468646883681D68556866684168676840683E +684A6849682968B5688F687468776893686B68C2696E68FC691F692068F90000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +69 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000692468F0690B6901695768E369106971693969606942695D6984696B6980 +69986978693469CC6987698869CE6989696669636979699B69A769BB69AB69AD +69D469B169C169CA69DF699569E0698D69FF6A2F69ED6A176A186A6569F26A44 +6A3E6AA06A506A5B6A356A8E6A796A3D6A286A586A7C6A916A906AA96A976AAB +733773526B816B826B876B846B926B936B8D6B9A6B9B6BA16BAA8F6B8F6D8F71 +8F728F738F758F768F788F778F798F7A8F7C8F7E8F818F828F848F878F8B0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +6A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00008F8D8F8E8F8F8F988F9A8ECE620B6217621B621F6222622162256224622C +81E774EF74F474FF750F75117513653465EE65EF65F0660A6619677266036615 +6600708566F7661D66346631663666358006665F66546641664F665666616657 +66776684668C66A7669D66BE66DB66DC66E666E98D328D338D368D3B8D3D8D40 +8D458D468D488D498D478D4D8D558D5989C789CA89CB89CC89CE89CF89D089D1 +726E729F725D7266726F727E727F7284728B728D728F72926308633263B00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +6B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000643F64D880046BEA6BF36BFD6BF56BF96C056C076C066C0D6C156C186C19 +6C1A6C216C296C246C2A6C3265356555656B724D72527256723086625216809F +809C809380BC670A80BD80B180AB80AD80B480B780E780E880E980EA80DB80C2 +80C480D980CD80D7671080DD80EB80F180F480ED810D810E80F280FC67158112 +8C5A8136811E812C811881328148814C815381748159815A817181608169817C +817D816D8167584D5AB58188818281916ED581A381AA81CC672681CA81BB0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +6C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000081C181A66B246B376B396B436B466B5998D198D298D398D598D998DA6BB3 +5F406BC289F365909F51659365BC65C665C465C365CC65CE65D265D67080709C +7096709D70BB70C070B770AB70B170E870CA711071137116712F71317173715C +716871457172714A7178717A719871B371B571A871A071E071D471E771F9721D +7228706C7118716671B9623E623D624362486249793B794079467949795B795C +7953795A796279577960796F7967797A7985798A799A79A779B35FD15FD00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +6D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000603C605D605A606760416059606360AB6106610D615D61A9619D61CB61D1 +62068080807F6C936CF66DFC77F677F87800780978177818781165AB782D781C +781D7839783A783B781F783C7825782C78237829784E786D7856785778267850 +7847784C786A789B7893789A7887789C78A178A378B278B978A578D478D978C9 +78EC78F2790578F479137924791E79349F9B9EF99EFB9EFC76F17704770D76F9 +77077708771A77227719772D7726773577387750775177477743775A77680000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +6E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000077627765777F778D777D7780778C7791779F77A077B077B577BD753A7540 +754E754B7548755B7572757975837F587F617F5F8A487F687F747F717F797F81 +7F7E76CD76E58832948594869487948B948A948C948D948F9490949494979495 +949A949B949C94A394A494AB94AA94AD94AC94AF94B094B294B494B694B794B8 +94B994BA94BC94BD94BF94C494C894C994CA94CB94CC94CD94CE94D094D194D2 +94D594D694D794D994D894DB94DE94DF94E094E294E494E594E794E894EA0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +6F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000094E994EB94EE94EF94F394F494F594F794F994FC94FD94FF950395029506 +95079509950A950D950E950F951295139514951595169518951B951D951E951F +9522952A952B9529952C953195329534953695379538953C953E953F95429535 +9544954595469549954C954E954F9552955395549556955795589559955B955E +955F955D95619562956495659566956795689569956A956B956C956F95719572 +9573953A77E777EC96C979D579ED79E379EB7A065D477A037A027A1E7A140000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +70 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00007A397A377A519ECF99A57A707688768E7693769976A474DE74E0752C9E20 +9E229E289E299E2A9E2B9E2C9E329E319E369E389E379E399E3A9E3E9E419E42 +9E449E469E479E489E499E4B9E4C9E4E9E519E559E579E5A9E5B9E5C9E5E9E63 +9E669E679E689E699E6A9E6B9E6C9E719E6D9E7375927594759675A0759D75AC +75A375B375B475B875C475B175B075C375C275D675CD75E375E875E675E475EB +75E7760375F175FC75FF761076007605760C7617760A76257618761576190000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +71 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000761B763C762276207640762D7630763F76357643763E7633764D765E7654 +765C7656766B766F7FCA7AE67A787A797A807A867A887A957AA67AA07AAC7AA8 +7AAD7AB3886488698872887D887F888288A288C688B788BC88C988E288CE88E3 +88E588F1891A88FC88E888FE88F0892189198913891B890A8934892B89368941 +8966897B758B80E576B276B477DC801280148016801C80208022802580268027 +802980288031800B803580438046804D80528069807189839878988098830000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +72 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00009889988C988D988F9894989A989B989E989F98A198A298A598A6864D8654 +866C866E867F867A867C867B86A8868D868B86AC869D86A786A386AA869386A9 +86B686C486B586CE86B086BA86B186AF86C986CF86B486E986F186F286ED86F3 +86D0871386DE86F486DF86D886D18703870786F88708870A870D87098723873B +871E8725872E871A873E87488734873187298737873F87828722877D877E877B +87608770874C876E878B87538763877C876487598765879387AF87A887D20000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +73 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000087C68788878587AD8797878387AB87E587AC87B587B387CB87D387BD87D1 +87C087CA87DB87EA87E087EE8816881387FE880A881B88218839883C7F367F42 +7F447F4582107AFA7AFD7B087B037B047B157B0A7B2B7B0F7B477B387B2A7B19 +7B2E7B317B207B257B247B337B3E7B1E7B587B5A7B457B757B4C7B5D7B607B6E +7B7B7B627B727B717B907BA67BA77BB87BAC7B9D7BA87B857BAA7B9C7BA27BAB +7BB47BD17BC17BCC7BDD7BDA7BE57BE67BEA7C0C7BFE7BFC7C0F7C167C0B0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +74 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00007C1F7C2A7C267C387C417C4081FE82018202820481EC8844822182228223 +822D822F8228822B8238823B82338234823E82448249824B824F825A825F8268 +887E8885888888D888DF895E7F9D7F9F7FA77FAF7FB07FB27C7C65497C917C9D +7C9C7C9E7CA27CB27CBC7CBD7CC17CC77CCC7CCD7CC87CC57CD77CE8826E66A8 +7FBF7FCE7FD57FE57FE17FE67FE97FEE7FF37CF87D777DA67DAE7E477E9B9EB8 +9EB48D738D848D948D918DB18D678D6D8C478C49914A9150914E914F91640000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +75 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00009162916191709169916F917D917E917291749179918C91859190918D9191 +91A291A391AA91AD91AE91AF91B591B491BA8C559E7E8DB88DEB8E058E598E69 +8DB58DBF8DBC8DBA8DC48DD68DD78DDA8DDE8DCE8DCF8DDB8DC68DEC8DF78DF8 +8DE38DF98DFB8DE48E098DFD8E148E1D8E1F8E2C8E2E8E238E2F8E3A8E408E39 +8E358E3D8E318E498E418E428E518E528E4A8E708E768E7C8E6F8E748E858E8F +8E948E908E9C8E9E8C788C828C8A8C858C988C94659B89D689DE89DA89DC0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +76 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000089E589EB89EF8A3E8B26975396E996F396EF970697019708970F970E972A +972D9730973E9F809F839F859F869F879F889F899F8A9F8C9EFE9F0B9F0D96B9 +96BC96BD96CE96D277BF96E0928E92AE92C8933E936A93CA938F943E946B9C7F +9C829C859C869C879C887A239C8B9C8E9C909C919C929C949C959C9A9C9B9C9E +9C9F9CA09CA19CA29CA39CA59CA69CA79CA89CA99CAB9CAD9CAE9CB09CB19CB2 +9CB39CB49CB59CB69CB79CBA9CBB9CBC9CBD9CC49CC59CC69CC79CCA9CCB0000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +77 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00009CCC9CCD9CCE9CCF9CD09CD39CD49CD59CD79CD89CD99CDC9CDD9CDF9CE2 +977C978597919792979497AF97AB97A397B297B49AB19AB09AB79E589AB69ABA +9ABC9AC19AC09AC59AC29ACB9ACC9AD19B459B439B479B499B489B4D9B5198E8 +990D992E995599549ADF9AE19AE69AEF9AEB9AFB9AED9AF99B089B0F9B139B1F +9B239EBD9EBE7E3B9E829E879E889E8B9E9293D69E9D9E9F9EDB9EDC9EDD9EE0 +9EDF9EE29EE99EE79EE59EEA9EEF9F229F2C9F2F9F399F379F3D9F3E9F440000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 -- cgit v0.12 From 38d4bcc1bb579ff6ca7f83563e52824da1b0e811 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 15 May 2003 18:41:05 +0000 Subject: * doc/socket.n: nroff font handling correction. --- ChangeLog | 2 ++ doc/socket.n | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ecbbd93..a606ccb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2003-05-15 Jeff Hobbs + * doc/socket.n: nroff font handling correction. + * library/encoding/gb2312-raw.enc (new): This is the original gb2312.enc renamed to allow for it to still be used. This is needed by Tk (unix) because X fonts with gb2312* charsets really diff --git a/doc/socket.n b/doc/socket.n index 6d4242a..ba0feb5 100644 --- a/doc/socket.n +++ b/doc/socket.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: socket.n,v 1.7.2.1 2003/04/16 23:08:36 dkf Exp $ +'\" RCS: @(#) $Id: socket.n,v 1.7.2.2 2003/05/15 18:41:06 hobbs Exp $ .so man.macros .TH socket n 8.0 Tcl "Tcl Built-In Commands" .BS @@ -30,7 +30,7 @@ The \fBsocket\fR command may be used to open either the client or server side of a connection, depending on whether the \fB\-server\fR switch is specified. .PP -Note that the default encoding for \fIall\fB sockets is the system +Note that the default encoding for \fIall\fR sockets is the system encoding, as returned by \fBencoding system\fR. Most of the time, you will need to use \fBfconfigure\fR to alter this to something else, such as \fIutf\-8\fR (ideal for communicating with other Tcl -- cgit v0.12 From 33969c3ca84b6e9a0d12cb616bd5a28943aa911a Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 15 May 2003 18:59:35 +0000 Subject: bumped version to 8.4.3 --- ChangeLog | 11 +++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- macosx/Tcl.pbproj/project.pbxproj | 4 ++-- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 11 files changed, 29 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index a606ccb..844f83c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2003-05-15 Jeff Hobbs + * README: bumped version to 8.4.3 + * generic/tcl.h: + * macosx/Tcl.pbproj/project.pbxproj: + * tools/tcl.wse.in: + * unix/configure: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure: + * win/configure.in: + * doc/socket.n: nroff font handling correction. * library/encoding/gb2312-raw.enc (new): This is the original diff --git a/README b/README index 00262bb..e1b40c9 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.2 source distribution. + This is the Tcl 8.4.3 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49 2003/02/15 02:16:28 hobbs Exp $ +RCS: @(#) $Id: README,v 1.49.2.1 2003/05/15 18:59:36 hobbs Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index a2aaefe..f3d9dab 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.2 2003/04/16 23:31:41 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.3 2003/05/15 18:59:37 hobbs Exp $ */ #ifndef _TCL @@ -59,10 +59,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 2 +#define TCL_RELEASE_SERIAL 3 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.2" +#define TCL_PATCH_LEVEL "8.4.3" /* * The following definitions set up the proper options for Windows diff --git a/macosx/Tcl.pbproj/project.pbxproj b/macosx/Tcl.pbproj/project.pbxproj index 40a9415..3cf82a1 100644 --- a/macosx/Tcl.pbproj/project.pbxproj +++ b/macosx/Tcl.pbproj/project.pbxproj @@ -197,11 +197,11 @@ MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright CFBundlePackageType FMWK CFBundleShortVersionString - 8.4.2 + 8.4.3 CFBundleSignature Tcl CFBundleVersion - 8.4.2 + 8.4.3 "; diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 14ded57..f272cfc 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.2 + Disk Label=tcl8.4.3 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 70dcb69..6b44276 100755 --- a/unix/configure +++ b/unix/configure @@ -548,7 +548,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".2" +TCL_PATCH_LEVEL=".3" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 7c405f6..cca8bb3 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106 2003/02/15 02:16:33 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.1 2003/05/15 18:59:38 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".2" +TCL_PATCH_LEVEL=".3" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index a04cc44..b63704a 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16 2003/02/15 02:16:33 hobbs Exp $ +# $Id: tcl.spec,v 1.16.2.1 2003/05/15 18:59:39 hobbs Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.2 +%define version 8.4.3 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index 9cc5783..c47c874 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33 2003/02/15 02:16:33 hobbs Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.1 2003/05/15 18:59:39 hobbs Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.2 for +This directory contains the binary distribution of Tcl/Tk 8.4.3 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index dc9a7ec..71031de 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".2" +TCL_PATCH_LEVEL=".3" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 64f1068..e9bb332 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.1 2003/04/03 10:03:25 mdejong Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.2 2003/05/15 18:59:39 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".2" +TCL_PATCH_LEVEL=".3" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 9ea02aca22408018088e97f7a38084aed1f69af6 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 16 May 2003 01:43:00 +0000 Subject: * win/tclWinFile.c (TclpMatchInDirectory): revert glob code to r1.44 as 2003-04-14 optimizations broke Windows98 glob'ing. --- ChangeLog | 3 ++ win/tclWinFile.c | 117 ++++++++++++++++++++++--------------------------------- 2 files changed, 49 insertions(+), 71 deletions(-) diff --git a/ChangeLog b/ChangeLog index 844f83c..dba61ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-05-15 Jeff Hobbs + * win/tclWinFile.c (TclpMatchInDirectory): revert glob code to + r1.44 as 2003-04-14 optimizations broke Windows98 glob'ing. + * README: bumped version to 8.4.3 * generic/tcl.h: * macosx/Tcl.pbproj/project.pbxproj: diff --git a/win/tclWinFile.c b/win/tclWinFile.c index d120742..96ebbb2 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.3 2003/04/14 22:55:12 kennykb Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.4 2003/05/16 01:43:01 hobbs Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -775,97 +775,77 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) DWORD attr; HANDLE handle; WIN32_FIND_DATAT data; - CONST char *dirName; /* utf-8 dir name, later - * with pattern appended */ + CONST char *dirName; int dirLength; int matchSpecialDots; - Tcl_DString ds; /* native encoding of dir, also used - * temporarily for other things. */ + Tcl_DString ds; /* native encoding of dir */ Tcl_DString dsOrig; /* utf-8 encoding of dir */ + Tcl_DString dirString; /* utf-8 encoding of dir with \'s */ Tcl_Obj *fileNamePtr; - char lastChar; /* - * Get the normalized path representation - * (the main thing is we dont want any '~' sequences). + * Convert the path to normalized form since some interfaces only + * accept backslashes. Also, ensure that the directory ends with a + * separator character. */ - fileNamePtr = Tcl_FSGetNormalizedPath(interp, pathPtr); + fileNamePtr = Tcl_FSGetTranslatedPath(interp, pathPtr); if (fileNamePtr == NULL) { return TCL_ERROR; } + Tcl_DStringInit(&dsOrig); + dirName = Tcl_GetStringFromObj(fileNamePtr, &dirLength); + Tcl_DStringAppend(&dsOrig, dirName, dirLength); + + Tcl_DStringInit(&dirString); + if (dirLength == 0) { + Tcl_DStringAppend(&dirString, ".\\", 2); + } else { + char *p; + + Tcl_DStringAppend(&dirString, dirName, dirLength); + for (p = Tcl_DStringValue(&dirString); *p != '\0'; p++) { + if (*p == '/') { + *p = '\\'; + } + } + p--; + /* Make sure we have a trailing directory delimiter */ + if ((*p != '\\') && (*p != ':')) { + Tcl_DStringAppend(&dirString, "\\", 1); + Tcl_DStringAppend(&dsOrig, "/", 1); + dirLength++; + } + } + dirName = Tcl_DStringValue(&dirString); /* - * Verify that the specified path exists and - * is actually a directory. + * First verify that the specified path is actually a directory. */ - native = Tcl_FSGetNativePath(pathPtr); - if (native == NULL) { - return TCL_OK; - } + + native = Tcl_WinUtfToTChar(dirName, Tcl_DStringLength(&dirString), + &ds); attr = (*tclWinProcs->getFileAttributesProc)(native); + Tcl_DStringFree(&ds); if ((attr == 0xffffffff) || ((attr & FILE_ATTRIBUTE_DIRECTORY) == 0)) { + Tcl_DStringFree(&dirString); return TCL_OK; } - /* - * Build up the directory name for searching, including - * a trailing directory separator. - */ - - Tcl_DStringInit(&dsOrig); - dirName = Tcl_GetStringFromObj(fileNamePtr, &dirLength); - Tcl_DStringAppend(&dsOrig, dirName, dirLength); - - lastChar = dirName[dirLength -1]; - if ((lastChar != '\\') && (lastChar != '/') && (lastChar != ':')) { - Tcl_DStringAppend(&dsOrig, "/", 1); - dirLength++; - } - dirName = Tcl_DStringValue(&dsOrig); - /* - * We need to check all files in the directory, so we append - * '*.*' to the path, unless the pattern we've been given is - * rather simple, when we can use that instead. + * We need to check all files in the directory, so append a *.* + * to the path. */ - if (strpbrk(pattern, "[]\\") == NULL) { - /* - * The pattern is a simple one containing just '*' and/or '?'. - * This means we can get the OS to help us, by passing - * it the pattern. - */ - dirName = Tcl_DStringAppend(&dsOrig, pattern, -1); - } else { - dirName = Tcl_DStringAppend(&dsOrig, "*.*", 3); - } + dirName = Tcl_DStringAppend(&dirString, "*.*", 3); native = Tcl_WinUtfToTChar(dirName, -1, &ds); - if (tclWinProcs->findFirstFileExProc == NULL - || (types == NULL) - || (types->type != TCL_GLOB_TYPE_DIR)) { - handle = (*tclWinProcs->findFirstFileProc)(native, &data); - } else { - /* We can be more efficient, for pure directory requests */ - handle = (*tclWinProcs->findFirstFileExProc)(native, - FindExInfoStandard, &data, - FindExSearchLimitToDirectories, NULL, 0); - } + handle = (*tclWinProcs->findFirstFileProc)(native, &data); Tcl_DStringFree(&ds); if (handle == INVALID_HANDLE_VALUE) { - DWORD err = GetLastError(); - if (err == ERROR_FILE_NOT_FOUND) { - /* - * We used our 'pattern' above, and matched nothing - * This means we just return TCL_OK, indicating - * no results found. - */ - Tcl_DStringFree(&dsOrig); - return TCL_OK; - } - TclWinConvertError(err); + Tcl_DStringFree(&dirString); + TclWinConvertError(GetLastError()); Tcl_ResetResult(interp); Tcl_AppendResult(interp, "couldn't read directory \"", Tcl_DStringValue(&dsOrig), "\": ", @@ -874,12 +854,6 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) return TCL_ERROR; } - /* - * We may use this later, so we must restore it to its - * length including the directory delimiter - */ - Tcl_DStringSetLength(&dsOrig, dirLength); - /* * Check to see if the pattern should match the special * . and .. names, referring to the current directory, @@ -973,6 +947,7 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) } while ((*tclWinProcs->findNextFileProc)(handle, &data) == TRUE); FindClose(handle); + Tcl_DStringFree(&dirString); Tcl_DStringFree(&dsOrig); return TCL_OK; } -- cgit v0.12 From 4e465ec1624119a92f7e4f002f2a022ecfe58a3c Mon Sep 17 00:00:00 2001 From: das Date: Fri, 16 May 2003 06:03:04 +0000 Subject: 2003-05-16 Daniel Steffen * macosx/Tcl.pbproj/project.pbxproj: updated copyright year. --- ChangeLog | 4 ++++ macosx/Tcl.pbproj/project.pbxproj | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index dba61ca..8a8bf9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-05-16 Daniel Steffen + + * macosx/Tcl.pbproj/project.pbxproj: updated copyright year. + 2003-05-15 Jeff Hobbs * win/tclWinFile.c (TclpMatchInDirectory): revert glob code to diff --git a/macosx/Tcl.pbproj/project.pbxproj b/macosx/Tcl.pbproj/project.pbxproj index 3cf82a1..9505139 100644 --- a/macosx/Tcl.pbproj/project.pbxproj +++ b/macosx/Tcl.pbproj/project.pbxproj @@ -184,7 +184,7 @@ CFBundleExecutable Tcl CFBundleGetInfoString - Tcl Library 8.4, Copyright © 2002 Tcl Core Team. + Tcl Library 8.4, Copyright © 2003 Tcl Core Team. MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright © 2001-2002, Apple Computer, Inc. CFBundleIconFile -- cgit v0.12 From 7245369988760dd6b1aaaa35dd6e435cf875207c Mon Sep 17 00:00:00 2001 From: das Date: Mon, 19 May 2003 05:04:27 +0000 Subject: * macosx/Tcl.pbproj/project.pbxproj: changed tclConfig.sh location in versioned framework subdirectories to be identical to location in framework toplevel; fixed stub library symbolic links to be tcl version specific. --- ChangeLog | 7 +++++++ macosx/Tcl.pbproj/project.pbxproj | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8a8bf9e..84eb4c0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-05-19 Daniel Steffen + + * macosx/Tcl.pbproj/project.pbxproj: changed tclConfig.sh location + in versioned framework subdirectories to be identical to location + in framework toplevel; fixed stub library symbolic links to be + tcl version specific. + 2003-05-16 Daniel Steffen * macosx/Tcl.pbproj/project.pbxproj: updated copyright year. diff --git a/macosx/Tcl.pbproj/project.pbxproj b/macosx/Tcl.pbproj/project.pbxproj index 9505139..9f9fa9a 100644 --- a/macosx/Tcl.pbproj/project.pbxproj +++ b/macosx/Tcl.pbproj/project.pbxproj @@ -29,7 +29,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# fixup Framework structure\ncd \"${INSTALL_ROOT}${LIBDIR}\"\nln -fs Versions/Current/Headers ../..\nmv -f tclConfig.sh Resources\nln -fs \"Resources/tclConfig.sh\" ../..\nln -fs `ls libtclstub* | sed -e 's|.*|Versions/Current/&|'` ../..\nif [ \"${BUILD_STYLE}\" = \"Development\" ]; then\n\t# keep copy of debug library around, so that\n\t# Deployment build can be installed on top\n\t# of Development build without overwriting\n\t# the debug library\n\tcp -fp \"${PRODUCT_NAME}\" \"${PRODUCT_NAME}_debug\"\n\tln -fs \"Versions/Current/${PRODUCT_NAME}_debug\" ../..\nfi"; + shellScript = "# fixup Framework structure\ncd \"${INSTALL_ROOT}${LIBDIR}\"\nln -fs Versions/Current/Headers ../..\nln -fs \"Versions/Current/tclConfig.sh\" ../..\nln -fs `ls libtclstub* | sed -e \"s|.*|Versions/${FRAMEWORK_VERSION}/&|\"` ../..\nif [ \"${BUILD_STYLE}\" = \"Development\" ]; then\n\t# keep copy of debug library around, so that\n\t# Deployment build can be installed on top\n\t# of Development build without overwriting\n\t# the debug library\n\tcp -fp \"${PRODUCT_NAME}\" \"${PRODUCT_NAME}_debug\"\n\tln -fs \"Versions/Current/${PRODUCT_NAME}_debug\" ../..\nfi"; }; 00E2F845016E82EB0ACA28DC = { buildStyles = ( -- cgit v0.12 From 60c7cfad9d51cf349dab0d4324050432c1e68023 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 20 May 2003 17:26:25 +0000 Subject: * unix/Makefile.in: do not run autoconf during 'make dist' as the configure is now a CVS-maintained file and should be up-to-date. --- ChangeLog | 5 +++++ unix/Makefile.in | 6 ++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84eb4c0..2092dbd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-05-20 Jeff Hobbs + + * unix/Makefile.in: do not run autoconf during 'make dist' as the + configure is now a CVS-maintained file and should be up-to-date. + 2003-05-19 Daniel Steffen * macosx/Tcl.pbproj/project.pbxproj: changed tclConfig.sh location diff --git a/unix/Makefile.in b/unix/Makefile.in index f78fb22..9afd3b5 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121 2003/01/28 11:03:52 mdejong Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.1 2003/05/20 17:26:26 hobbs Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1211,10 +1211,8 @@ DISTROOT = /tmp/dist DISTNAME = tcl${VERSION}${PATCH_LEVEL} ZIPNAME = tcl${MAJOR_VERSION}${MINOR_VERSION}${PATCH_LEVEL}-src.zip DISTDIR = $(DISTROOT)/$(DISTNAME) -$(UNIX_DIR)/configure: $(UNIX_DIR)/configure.in - autoconf $(UNIX_DIR)/configure.in > $(UNIX_DIR)/configure -dist: $(UNIX_DIR)/configure mklinks +dist: mklinks rm -rf $(DISTDIR) mkdir -p $(DISTDIR)/unix cp -p $(UNIX_DIR)/*.c $(UNIX_DIR)/*.h $(DISTDIR)/unix -- cgit v0.12 From 2268c2b60a21f8fa22f1ca2a67ec80662ff196cb Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 20 May 2003 18:33:29 +0000 Subject: updated changes for 8.4.3 --- ChangeLog | 4 +++ changes | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 87 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2092dbd..b02522e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2003-05-20 Jeff Hobbs + *** 8.4.3 TAGGED FOR RELEASE *** + + * changes: updated for 8.4.3 + * unix/Makefile.in: do not run autoconf during 'make dist' as the configure is now a CVS-maintained file and should be up-to-date. diff --git a/changes b/changes index c012402..a1c593e 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79 2003/03/03 20:04:50 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.79.2.1 2003/05/20 18:33:30 hobbs Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5757,3 +5757,85 @@ packages in multiple interps. 2003-02-27 (bug fix)[694232] stop [lsearch -start 0 {} x] segfault --- Released 8.4.2, March 3, 2003 --- See ChangeLog for details --- + +2003-03-06 (bug fix)[699042] Correct case-insensitive unicode string +comparison in Tcl_UniCharNcasecmp + +2003-03-11 (bug fix) Corrected loading of tclpip8x.dll on Win9x + +2003-03-12 (bug fix)[702383] Corrected parsing of interp create -- + +2003-03-12 (bug fix)[685106] Correct Tcl_SubstObj handling of \x00 bytes + +2003-03-14 (bug fix)[702622 699060] Correct wide int issues in 'format' + +2003-03-14 (bug fix)[698146] Remove assumption that file times and longs +are the same size. + +2003-03-18 (bug fix)[697862] Allow Tcl to differentiate between reparse +points which are symlinks and mounted drives on Windows + +2003-03-19 (bug fix)[705406] Bad command count on TCL_OUT_LINE_COMPILE + +2003-03-20 (bug fix)[707174] Store pointers to notifier funcs in a struct +to work around some platform linker issues + +2003-03-22 (bug fix)[708218] Load correct (non-)debug dll for dde or +registry + +2003-03-24 (bug fix)[631741 696893] Fixing ObjMakeUpvar's lookup algorithm +for the created local variable + +2003-04-07 (bug fix)[713562] Make sure that tclWideIntType is defined and +somewhat sensible everywhere + +2003-04-07 (bug fix)[711371] Corrected string limits of arguments +interpolated in error messages for 'if' + +2003-04-11 (bug fix)[718878] Corrected inconsistent results of +[string is integer] observed on systems where sizeof(long) != sizeof(int) + +2003-04-12 (bug fix) Substantial changes to the Windows clock synch +phase-locked loop in a quest for improved loop stability + +2003-04-16 [713562] Made changes so that the "wideInt" Tcl_ObjType is +defined on all platforms, even those where TCL_WIDE_INT_IS_LONG is defined. +Also made the Tcl_Value struct have a wideValue field on all platforms. +Potential incompatibility for TCL_WIDE_INT_IS_LONG platforms because that +struct changes size. + *** POTENTIAL INCOMPATIBILITY *** + +2003-04-25 (bug fix)[727271] Catch any errors returned by the Windows +functions handling TLS ASAP instead of waiting to get some mysterious crash +later on due to bogus pointers. + +2003-04-29 (bug fix) Correct 'glob -path {[tcl]} *', where leading +special character instead lists files in '/'. Bug only occurs on Windows +where '\' is also a directory separator. + +2003-05-09 (bug fix)[731754] Fixed memory leak in threaded allocator on +Windows caused by treating cachePtr as a TLS index + +2003-05-10 (bug fix)[710642] Ensure cd is thread-safe + +2003-05-10 (bug fix)[718002] Correct mem leak on closing a Windows serial +port + +2003-05-10 (bug fix)[714106] Prevent string repeat crash when overflow +sizes were given (throws error). + +2003-05-13 (feature enhancement)[736774] Use new versioned bundle resource +API to get tcl runtime library for TCL_VERSION on Mac OS X. + +2003-05-13 (bug fix)[711232] Worked around the issue of realpath() not +being thread-safe on Mac OS X by defining NO_REALPATH for threaded builds +on Mac OS X. + +2003-05-14 (bug fix)[557030] Correct handling of the gb2312 encoding by +making it an alias of the euc-cn encoding and creating a gb2312-raw +encoding for the original. Most uses of gb2312 really mean euc-cn. + +2003-05-14 (bug fix)[736421] Corrected another putenv() copy behavior +problem when compiling on Windows and using Microsoft's runtime. + +--- Released 8.4.3, May 20, 2003 --- See ChangeLog for details --- -- cgit v0.12 From eb3219aaa38da99c46978eae1194802003a1065b Mon Sep 17 00:00:00 2001 From: das Date: Thu, 22 May 2003 01:15:33 +0000 Subject: * macosx/tclMacOSXBundle.c: fixed a problem that caused only the first call to Tcl_MacOSXOpenVersionedBundleResources() for a given bundle identifier to succeed. This caused the tcl runtime library not to be found in all interps created after the inital one. --- ChangeLog | 7 +++++++ macosx/tclMacOSXBundle.c | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/ChangeLog b/ChangeLog index b02522e..57bcbb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-05-22 Daniel Steffen + + * macosx/tclMacOSXBundle.c: fixed a problem that caused only the + first call to Tcl_MacOSXOpenVersionedBundleResources() for a given + bundle identifier to succeed. This caused the tcl runtime library + not to be found in all interps created after the inital one. + 2003-05-20 Jeff Hobbs *** 8.4.3 TAGGED FOR RELEASE *** diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 88def57..5018aa8 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -138,6 +138,16 @@ Tcl_MacOSXOpenVersionedBundleResources( bundleVersion, kCFStringEncodingUTF8); CFURLRef bundleURL = CFBundleCopyBundleURL(bundleRef); if (bundleURL) { + CFStringRef bundleTailRef = CFURLCopyLastPathComponent(bundleURL); + if (bundleTailRef) { + if (CFStringCompare(bundleTailRef,bundleVersionRef,0) + == kCFCompareEqualTo) { + versionedBundleRef = bundleRef; + } + CFRelease(bundleTailRef); + } + } + if (bundleURL && !versionedBundleRef) { CFURLRef versURL = CFURLCreateCopyAppendingPathComponent(NULL, bundleURL, CFSTR("Versions"), TRUE); if (versURL) { -- cgit v0.12 From 4964779c8dd8bfedc0ad38b3c92e2477ca36d007 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 23 May 2003 00:46:43 +0000 Subject: moved core-8-4-3 tag for macosx only fix at request of OS X maintainer --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 57bcbb1..bd6060f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2003-05-22 Daniel Steffen + *** 8.4.3 TAGGED FOR RELEASE *** + * macosx/tclMacOSXBundle.c: fixed a problem that caused only the first call to Tcl_MacOSXOpenVersionedBundleResources() for a given bundle identifier to succeed. This caused the tcl runtime library @@ -7,8 +9,6 @@ 2003-05-20 Jeff Hobbs - *** 8.4.3 TAGGED FOR RELEASE *** - * changes: updated for 8.4.3 * unix/Makefile.in: do not run autoconf during 'make dist' as the -- cgit v0.12 From ecbcfad8425538789bc6eb807d8aa815c4471d52 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 23 May 2003 21:29:10 +0000 Subject: * generic/tclObj.c (tclCmdNameType): Converted internal rep management of the cmdName Tcl_ObjType the opposite way, to always use the twoPtrValue instead of always using the otherValuePtr. Previous fix on 2003-05-12 broke several extensions that wanted to poke around with the twoPtrValue.ptr2 value of a cmdName Tcl_Obj, like TclBlend and e4graph. [Bug 726018] --- ChangeLog | 9 +++++++++ generic/tclObj.c | 26 ++++++++++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index bd6060f..1c0cca4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2003-05-23 Don Porter + + * generic/tclObj.c (tclCmdNameType): Converted internal rep + management of the cmdName Tcl_ObjType the opposite way, to always + use the twoPtrValue instead of always using the otherValuePtr. + Previous fix on 2003-05-12 broke several extensions that wanted + to poke around with the twoPtrValue.ptr2 value of a cmdName + Tcl_Obj, like TclBlend and e4graph. [Bug 726018] + 2003-05-22 Daniel Steffen *** 8.4.3 TAGGED FOR RELEASE *** diff --git a/generic/tclObj.c b/generic/tclObj.c index bf496ec..a98fe1c 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.3 2003/05/12 19:29:50 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.4 2003/05/23 21:29:11 dgp Exp $ */ #include "tclInt.h" @@ -156,6 +156,13 @@ Tcl_HashKeyType tclObjHashKeyType = { * type cache the Command pointer that results from looking up command names * in the command hashtable. Such objects appear as the zeroth ("command * name") argument in a Tcl command. + * + * NOTE: the ResolvedCmdName that gets cached is stored in the + * twoPtrValue.ptr1 field, and the twoPtrValue.ptr2 field is unused. + * You might think you could use the simpler otherValuePtr field to + * store the single ResolvedCmdName pointer, but DO NOT DO THIS. It + * seems that some extensions use the second internal pointer field + * of the twoPtrValue field for their own purposes. */ static Tcl_ObjType tclCmdNameType = { @@ -2883,7 +2890,7 @@ Tcl_GetCommandFromObj(interp, objPtr) return (Tcl_Command) NULL; } } - resPtr = (ResolvedCmdName *) objPtr->internalRep.otherValuePtr; + resPtr = (ResolvedCmdName *) objPtr->internalRep.twoPtrValue.ptr1; /* * Get the current namespace. @@ -2922,7 +2929,7 @@ Tcl_GetCommandFromObj(interp, objPtr) iPtr->varFramePtr = savedFramePtr; return (Tcl_Command) NULL; } - resPtr = (ResolvedCmdName *) objPtr->internalRep.otherValuePtr; + resPtr = (ResolvedCmdName *) objPtr->internalRep.twoPtrValue.ptr1; if (resPtr != NULL) { cmdPtr = resPtr->cmdPtr; } @@ -2991,7 +2998,8 @@ TclSetCmdNameObj(interp, objPtr, cmdPtr) if ((oldTypePtr != NULL) && (oldTypePtr->freeIntRepProc != NULL)) { oldTypePtr->freeIntRepProc(objPtr); } - objPtr->internalRep.otherValuePtr = (VOID *) resPtr; + objPtr->internalRep.twoPtrValue.ptr1 = (VOID *) resPtr; + objPtr->internalRep.twoPtrValue.ptr2 = NULL; objPtr->typePtr = &tclCmdNameType; } @@ -3022,7 +3030,7 @@ FreeCmdNameInternalRep(objPtr) * representation to free. */ { register ResolvedCmdName *resPtr = - (ResolvedCmdName *) objPtr->internalRep.otherValuePtr; + (ResolvedCmdName *) objPtr->internalRep.twoPtrValue.ptr1; if (resPtr != NULL) { /* @@ -3071,9 +3079,10 @@ DupCmdNameInternalRep(srcPtr, copyPtr) register Tcl_Obj *copyPtr; /* Object with internal rep to set. */ { register ResolvedCmdName *resPtr = - (ResolvedCmdName *) srcPtr->internalRep.otherValuePtr; + (ResolvedCmdName *) srcPtr->internalRep.twoPtrValue.ptr1; - copyPtr->internalRep.otherValuePtr = (VOID *) resPtr; + copyPtr->internalRep.twoPtrValue.ptr1 = (VOID *) resPtr; + copyPtr->internalRep.twoPtrValue.ptr2 = NULL; if (resPtr != NULL) { resPtr->refCount++; } @@ -3168,7 +3177,8 @@ SetCmdNameFromAny(interp, objPtr) objPtr->typePtr->freeIntRepProc(objPtr); } - objPtr->internalRep.otherValuePtr = (VOID *) resPtr; + objPtr->internalRep.twoPtrValue.ptr1 = (VOID *) resPtr; + objPtr->internalRep.twoPtrValue.ptr2 = NULL; objPtr->typePtr = &tclCmdNameType; return TCL_OK; } -- cgit v0.12 From 0c2fad2535129377ff0aeba08bee31cb85c08814 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 23 May 2003 21:33:36 +0000 Subject: add thanks --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 1c0cca4..1b83852 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,8 @@ Previous fix on 2003-05-12 broke several extensions that wanted to poke around with the twoPtrValue.ptr2 value of a cmdName Tcl_Obj, like TclBlend and e4graph. [Bug 726018] + Thanks to George Petasis for the bug report and Jacob Levy for + testing assistance. 2003-05-22 Daniel Steffen -- cgit v0.12 From bbd2e7af7aeb9a2e197f40113740755504716d7a Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Wed, 4 Jun 2003 23:41:14 +0000 Subject: Fix for [Bug 748700] --- ChangeLog | 6 ++++++ tools/index.tcl | 4 ++-- tools/man2help.tcl | 10 ++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1b83852..b7ebd8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-06-04 Joe Mistachkin + + * tools/man2help.tcl: Added duplicate help section checking + * tools/index.tcl: and corrected a comment typo for the + getTopics proc in index.tcl [Bug #748700]. + 2003-05-23 Don Porter * generic/tclObj.c (tclCmdNameType): Converted internal rep diff --git a/tools/index.tcl b/tools/index.tcl index f2c162f..629ceb4 100644 --- a/tools/index.tcl +++ b/tools/index.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: index.tcl,v 1.3 1998/09/14 18:40:15 stanton Exp $ +# RCS: @(#) $Id: index.tcl,v 1.3.40.1 2003/06/04 23:41:15 mistachkin Exp $ # # Global variables used by these scripts: @@ -63,7 +63,7 @@ proc getSections {pkg} { lsort [array names temp] } -# getSections -- +# getTopics -- # # Generate a sorted list of topics in the specified section of the # specified package from the topics array. diff --git a/tools/man2help.tcl b/tools/man2help.tcl index d172d1e..b0da42a 100644 --- a/tools/man2help.tcl +++ b/tools/man2help.tcl @@ -6,7 +6,7 @@ # # Copyright (c) 1996 by Sun Microsystems, Inc. # -# RCS: @(#) $Id: man2help.tcl,v 1.13 2002/08/09 00:13:54 davygrvy Exp $ +# RCS: @(#) $Id: man2help.tcl,v 1.13.2.1 2003/06/04 23:41:15 mistachkin Exp $ # # @@ -28,7 +28,13 @@ proc generateContents {basename version files} { puts $fd ":Base $basename$version.hlp" foreach package [getPackages] { foreach section [getSections $package] { - puts $fd "1 $section" + if {![info exists lastSection]} { + set lastSection {} + } + if {[string compare $lastSection $section]} { + puts $fd "1 $section" + } + set lastSection $section set lastTopic {} foreach topic [getTopics $package $section] { if {[string compare $lastTopic $topic]} { -- cgit v0.12 From 88bf24e7cb31b621f6232bbe780c1ea64a5c77cc Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 9 Jun 2003 21:51:55 +0000 Subject: * string.test (string-4.15): Added test for [string first] bug reported in Tcl 8.3, where test for all-single-byte-encoded strings was not reliable. --- ChangeLog | 6 ++++++ tests/string.test | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b7ebd8e..a05d6c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-06-09 Don Porter + + * string.test (string-4.15): Added test for [string first] bug + reported in Tcl 8.3, where test for all-single-byte-encoded strings + was not reliable. + 2003-06-04 Joe Mistachkin * tools/man2help.tcl: Added duplicate help section checking diff --git a/tests/string.test b/tests/string.test index f1ba56d..6e937f4 100644 --- a/tests/string.test +++ b/tests/string.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: string.test,v 1.36.2.1 2003/04/11 20:49:54 dgp Exp $ +# RCS: @(#) $Id: string.test,v 1.36.2.2 2003/06/09 21:51:56 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -213,6 +213,13 @@ test string-4.13 {string first, start index} { test string-4.14 {string first, negative start index} { string first b abc -1 } 1 +test string-4.15 {string first, ability to two-byte encoded utf-8 chars} { + # Test for a bug in Tcl 8.3 where test for all-single-byte-encoded + # strings was incorrect, leading to an index returned by [string first] + # which pointed past the end of the string. + set uchar \u057e ;# character with two-byte encoding in utf-8 + string first % %#$uchar$uchar#$uchar$uchar#% 3 +} 8 test string-5.1 {string index} { list [catch {string index} msg] $msg -- cgit v0.12 From eb3d0976d6642da1d58097dd0c63336427f68e3d Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Tue, 10 Jun 2003 19:58:25 +0000 Subject: * generic/tclBasic.c: * generic/tclExecute.c: let TclExecuteObjvInternal call TclInterpReady instead of relying on its callers to do so; fix for the part of [Bug 495830] that is new in 8.4. * tests/interp.test: Added tests 18.9 (knownbug) and 18.10 --- ChangeLog | 8 ++++++++ generic/tclBasic.c | 36 ++++++++++++++---------------------- generic/tclExecute.c | 9 ++++++--- tests/interp.test | 12 +++++++++++- 4 files changed, 39 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index a05d6c3..ad86d24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-06-10 Miguel Sofer + + * generic/tclBasic.c: + * generic/tclExecute.c: let TclExecuteObjvInternal call + TclInterpReady instead of relying on its callers to do so; fix for + the part of [Bug 495830] that is new in 8.4. + * tests/interp.test: Added tests 18.9 (knownbug) and 18.10 + 2003-06-09 Don Porter * string.test (string-4.15): Added test for [string first] bug diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 8eda27e..80f5bda 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.3 2003/05/12 20:16:08 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.4 2003/06/10 19:58:34 msofer Exp $ */ #include "tclInt.h" @@ -2919,7 +2919,7 @@ TclInterpReady(interp) * it's probably because of an infinite loop somewhere. */ - if (((iPtr->numLevels) >= iPtr->maxNestingDepth) + if (((iPtr->numLevels) > iPtr->maxNestingDepth) || (TclpCheckStackSpace() == 0)) { Tcl_AppendToObj(Tcl_GetObjResult(interp), "too many nested evaluations (infinite loop?)", -1); @@ -2936,9 +2936,7 @@ TclInterpReady(interp) * * This procedure evaluates a Tcl command that has already been * parsed into words, with one Tcl_Obj holding each word. The caller - * is responsible for checking that the interpreter is ready to - * evaluate (by calling TclInterpReady), and also to manage the - * iPtr->numLevels. + * is responsible for managing the iPtr->numLevels. * * Results: * The return value is a standard Tcl completion code such as @@ -2986,6 +2984,10 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) int traceCode = TCL_OK; int checkTraces = 1; + if (TclInterpReady(interp) == TCL_ERROR) { + return TCL_ERROR; + } + if (objc == 0) { return TCL_OK; } @@ -3029,8 +3031,6 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) "invalid command name \"", Tcl_GetString(objv[0]), "\"", (char *) NULL); code = TCL_ERROR; - } else if (TclInterpReady(interp) == TCL_ERROR) { - code = TCL_ERROR; } else { iPtr->numLevels++; code = TclEvalObjvInternal(interp, objc+1, newObjv, command, length, 0); @@ -3191,13 +3191,9 @@ Tcl_EvalObjv(interp, objc, objv, flags) } } - code = TclInterpReady(interp); - if (code == TCL_OK) { - iPtr->numLevels++; - code = TclEvalObjvInternal(interp, objc, objv, cmdString, cmdLen, - flags); - iPtr->numLevels--; - } + iPtr->numLevels++; + code = TclEvalObjvInternal(interp, objc, objv, cmdString, cmdLen, flags); + iPtr->numLevels--; /* * If we are again at the top level, process any unusual @@ -3666,14 +3662,10 @@ Tcl_EvalEx(interp, script, numBytes, flags) * Execute the command and free the objects for its words. */ - if (TclInterpReady(interp) == TCL_ERROR) { - code = TCL_ERROR; - } else { - iPtr->numLevels++; - code = TclEvalObjvInternal(interp, objectsUsed, objv, - parse.commandStart, parse.commandSize, 0); - iPtr->numLevels--; - } + iPtr->numLevels++; + code = TclEvalObjvInternal(interp, objectsUsed, objv, + parse.commandStart, parse.commandSize, 0); + iPtr->numLevels--; if (code != TCL_OK) { if (iPtr->numLevels == 0) { if (code == TCL_RETURN) { diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 272d939..578be7e 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.2 2003/04/18 20:06:05 hobbs Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.3 2003/06/10 19:58:35 msofer Exp $ */ #include "tclInt.h" @@ -895,7 +895,9 @@ TclCompEvalObj(interp, objPtr) * Check that the interpreter is ready to execute scripts */ + iPtr->numLevels++; if (TclInterpReady(interp) == TCL_ERROR) { + iPtr->numLevels--; return TCL_ERROR; } @@ -917,6 +919,7 @@ TclCompEvalObj(interp, objPtr) iPtr->errorLine = 1; result = tclByteCodeType.setFromAnyProc(interp, objPtr); if (result != TCL_OK) { + iPtr->numLevels--; return result; } iPtr->evalFlags = 0; @@ -976,9 +979,7 @@ TclCompEvalObj(interp, objPtr) */ codePtr->refCount++; - iPtr->numLevels++; result = TclExecuteByteCode(interp, codePtr); - iPtr->numLevels--; codePtr->refCount--; if (codePtr->refCount <= 0) { TclCleanupByteCode(codePtr); @@ -986,6 +987,8 @@ TclCompEvalObj(interp, objPtr) } else { result = TCL_OK; } + iPtr->numLevels--; + /* * If no commands at all were executed, check for asynchronous diff --git a/tests/interp.test b/tests/interp.test index f29aec6..e4b34eb 100644 --- a/tests/interp.test +++ b/tests/interp.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: interp.test,v 1.19.2.3 2003/05/12 22:35:40 dgp Exp $ +# RCS: @(#) $Id: interp.test,v 1.19.2.4 2003/06/10 19:58:37 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -759,6 +759,16 @@ if {[info commands testinterpdelete] == ""} { list [catch {a eval foo} msg] $msg } {1 {attempt to call eval in deleted interpreter}} } +test interp-18.9 {eval in deleted interp, bug 495830} {knownbug} { + interp create tst + interp alias tst suicide {} interp delete tst + list [catch {tst eval {suicide; set a 5}} msg] $msg +} {1 {attempt to call eval in deleted interpreter}} +test interp-18.10 {eval in deleted interp, bug 495830} { + interp create tst + interp alias tst suicide {} interp delete tst + list [catch {tst eval {set set set; suicide; $set a 5}} msg] $msg +} {1 {attempt to call eval in deleted interpreter}} # Test alias deletion -- cgit v0.12 From a267f6ee293c2fba8b771503ae41210a47bf3232 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Tue, 17 Jun 2003 20:42:36 +0000 Subject: backport of regsub empty string fixes --- ChangeLog | 6 ++++++ generic/tclCmdMZ.c | 22 ++++++++++++++++------ tests/regexp.test | 42 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 63 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad86d24..e858742 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-06-17 Vince Darley + + * generic/tclCmdMZ.c: + * tests/regexp.test: fixing of bugs related to regexp and regsub + matching of empty strings. Addition of a number of new tests. + 2003-06-10 Miguel Sofer * generic/tclBasic.c: diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 5a1751e..2086335 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.4 2003/05/10 23:55:08 hobbs Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.5 2003/06/17 20:42:37 vincentdarley Exp $ */ #include "tclInt.h" @@ -368,7 +368,10 @@ Tcl_RegexpObjCmd(dummy, interp, objc, objv) while (1) { match = Tcl_RegExpExecObj(interp, regExpr, objPtr, - offset /* offset */, numMatchesSaved, eflags); + offset /* offset */, numMatchesSaved, eflags + | ((offset > 0 && + (Tcl_GetUniChar(objPtr,offset-1) != (Tcl_UniChar)'\n')) + ? TCL_REG_NOTBOL : 0)); if (match < 0) { return TCL_ERROR; @@ -719,11 +722,14 @@ Tcl_RegsubObjCmd(dummy, interp, objc, objv) * The following loop is to handle multiple matches within the * same source string; each iteration handles one match and its * corresponding substitution. If "-all" hasn't been specified - * then the loop body only gets executed once. + * then the loop body only gets executed once. We must use + * 'offset <= wlen' in particular for the case where the regexp + * pattern can match the empty string - this is useful when + * doing, say, 'regsub -- ^ $str ...' when $str might be empty. */ numMatches = 0; - for ( ; offset < wlen; ) { + for ( ; offset <= wlen; ) { /* * The flags argument is set if string is part of a larger string, @@ -731,7 +737,9 @@ Tcl_RegsubObjCmd(dummy, interp, objc, objv) */ match = Tcl_RegExpExecObj(interp, regExpr, objPtr, offset, - 10 /* matches */, ((offset > 0) ? TCL_REG_NOTBOL : 0)); + 10 /* matches */, ((offset > 0 && + (Tcl_GetUniChar(objPtr,offset-1) != (Tcl_UniChar)'\n')) + ? TCL_REG_NOTBOL : 0)); if (match < 0) { result = TCL_ERROR; @@ -819,7 +827,9 @@ Tcl_RegsubObjCmd(dummy, interp, objc, objv) * in order to prevent infinite loops. */ - Tcl_AppendUnicodeToObj(resultPtr, wstring + offset, 1); + if (offset < wlen) { + Tcl_AppendUnicodeToObj(resultPtr, wstring + offset, 1); + } offset++; } else { offset += end; diff --git a/tests/regexp.test b/tests/regexp.test index 2bb017e..af27771 100644 --- a/tests/regexp.test +++ b/tests/regexp.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: regexp.test,v 1.22 2002/07/10 11:56:44 dgp Exp $ +# RCS: @(#) $Id: regexp.test,v 1.22.2.1 2003/06/17 20:42:37 vincentdarley Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -572,6 +572,46 @@ test regexp-20.2 {regsub shared object shimmering with -about} { eval regexp -about abc } {0 {}} +test regexp-21.1 {regsub works with empty string} { + regsub -- ^ {} foo +} {foo} + +test regexp-21.2 {regsub works with empty string} { + regsub -- \$ {} foo +} {foo} + +test regexp-21.3 {regsub works with empty string offset} { + regsub -start 0 -- ^ {} foo +} {foo} + +test regexp-21.4 {regsub works with empty string offset} { + regsub -start 0 -- \$ {} foo +} {foo} + +test regexp-21.5 {regsub works with empty string offset} { + regsub -start 3 -- \$ {123} foo +} {123foo} + +test regexp-21.6 {regexp works with empty string} { + regexp -- ^ {} +} {1} + +test regexp-21.7 {regexp works with empty string} { + regexp -start 0 -- ^ {} +} {1} + +test regexp-21.8 {regexp works with empty string offset} { + regexp -start 3 -- ^ {123} +} {0} + +test regexp-21.9 {regexp works with empty string offset} { + regexp -start 3 -- \$ {123} +} {1} + +test regexp-21.10 {multiple matches handle newlines} { + regsub -all -lineanchor -- {^#[^\n]*\n} "#one\n#two\n#three\n" foo\n +} "foo\nfoo\nfoo\n" + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 97af27dfed36a48c534a0e1414a74b7cea47c6a4 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Wed, 18 Jun 2003 18:34:19 +0000 Subject: 2003-06-18 Miguel Sofer * generic/tclNamesp.c (Tcl_Export): removed erroneous comments [Bug 756744] --- ChangeLog | 5 +++++ generic/tclNamesp.c | 6 ++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index e858742..7e99622 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-06-18 Miguel Sofer + + * generic/tclNamesp.c (Tcl_Export): removed erroneous comments + [Bug 756744] + 2003-06-17 Vince Darley * generic/tclCmdMZ.c: diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 32ffb2b..7fef152 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31 2002/07/15 22:18:07 msofer Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.1 2003/06/18 18:34:19 msofer Exp $ */ #include "tclInt.h" @@ -908,9 +908,7 @@ Tcl_Export(interp, namespacePtr, pattern, resetListFirst) * in the specified namespace may be * exported. */ int resetListFirst; /* If nonzero, resets the namespace's - * export list before appending. - * If 0, return an error if an imported - * cmd conflicts with an existing one. */ + * export list before appending. */ { #define INIT_EXPORT_PATTERNS 5 Namespace *nsPtr, *exportNsPtr, *dummyPtr; -- cgit v0.12 From 413f218a68dc50e3fc9d85fe2a67501baf2e7b5c Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Mon, 23 Jun 2003 10:21:15 +0000 Subject: file copy empty filename bug fix --- ChangeLog | 6 ++++++ generic/tclFCmd.c | 10 +++++++++- tests/fCmd.test | 12 +++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7e99622..afa497f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-06-23 Vince Darley + + * generic/tclFCmd.c: fix to bad error message when trying to + do 'file copy foo ""'. [Bug 756951] + * tests/fCmd.test: added two new tests for the bug. + 2003-06-18 Miguel Sofer * generic/tclNamesp.c (Tcl_Export): removed erroneous comments diff --git a/generic/tclFCmd.c b/generic/tclFCmd.c index 50bea95..a105f6e 100644 --- a/generic/tclFCmd.c +++ b/generic/tclFCmd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFCmd.c,v 1.20 2002/08/08 10:41:22 hobbs Exp $ + * RCS: @(#) $Id: tclFCmd.c,v 1.20.2.1 2003/06/23 10:21:16 vincentdarley Exp $ */ #include "tclInt.h" @@ -658,6 +658,14 @@ CopyRenameOneFile(interp, source, target, copyFlag, force) * so it should be quite clear */ errfile = target; + /* + * We now need to reset the result, because the above call, + * if it failed, may have put an error message in place. + * (Ideally we would prefer not to pass an interpreter in + * above, but the channel IO code used by + * TclCrossFilesystemCopy currently requires one) + */ + Tcl_ResetResult(interp); } } if ((copyFlag == 0) && (result == TCL_OK)) { diff --git a/tests/fCmd.test b/tests/fCmd.test index c704032..8e4d265 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.26.2.1 2003/04/14 15:45:54 vincentdarley Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.26.2.2 2003/06/23 10:21:16 vincentdarley Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -1001,6 +1001,16 @@ test fCmd-10.10 {file copy: comprehensive: source and target incompatible} \ createfile tf1 list [catch {file copy -force tf1 td1} msg] $msg } [subst {1 {can't overwrite directory "[file join td1 tf1]" with file "tf1"}}] +test fCmd-10.11 {file copy: copy to empty file name} { + cleanup + createfile tf1 + list [catch {file copy tf1 ""} msg] $msg +} {1 {error copying "tf1" to "": no such file or directory}} +test fCmd-10.12 {file rename: rename to empty file name} { + cleanup + createfile tf1 + list [catch {file rename tf1 ""} msg] $msg +} {1 {error renaming "tf1" to "": no such file or directory}} cleanup # old tests -- cgit v0.12 From b2119b24ffca4e1a1c74f423a02377dc04c323d8 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Mon, 23 Jun 2003 10:49:13 +0000 Subject: fs doc fix --- ChangeLog | 2 ++ doc/FileSystem.3 | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index afa497f..1565aaa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,8 @@ do 'file copy foo ""'. [Bug 756951] * tests/fCmd.test: added two new tests for the bug. + * doc/FileSystem.3: documentation fix [Bug 720634] + 2003-06-18 Miguel Sofer * generic/tclNamesp.c (Tcl_Export): removed erroneous comments diff --git a/doc/FileSystem.3 b/doc/FileSystem.3 index dcb92b0..010c408 100644 --- a/doc/FileSystem.3 +++ b/doc/FileSystem.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: FileSystem.3,v 1.32 2003/02/10 12:50:31 vincentdarley Exp $ +'\" RCS: @(#) $Id: FileSystem.3,v 1.32.2.1 2003/06/23 10:49:14 vincentdarley Exp $ '\" .so man.macros .TH Filesystem 3 8.4 Tcl "Tcl Library Procedures" @@ -779,18 +779,18 @@ representations. .SH PATHINFILESYSTEMPROC .PP The \fIpathInFilesystemProc\fR field contains the address of a function -which is called to determine whether a given path object belongs to -this filesystem or not. Tcl will only call the rest of the filesystem -functions with a path for which this function has returned -\fBTCL_OK\fR. If the path does not belong, \fBTCL_ERROR\fR should be -returned. If \fBTCL_OK\fR is returned, then the optional -\fBclientDataPtr\fR output parameter can be used to return an internal -(filesystem specific) representation of the path, which will be cached -inside the path object, and may be retrieved efficiently by the other -filesystem functions. Tcl will simultaneously cache the fact that this -path belongs to this filesystem. Such caches are invalidated when -filesystem structures are added or removed from Tcl's internal list of -known filesystems. +which is called to determine whether a given path object belongs to this +filesystem or not. Tcl will only call the rest of the filesystem +functions with a path for which this function has returned \fBTCL_OK\fR. +If the path does not belong, -1 should be returned (the behaviour of Tcl +for any other return value is not defined). If \fBTCL_OK\fR is returned, +then the optional \fBclientDataPtr\fR output parameter can be used to +return an internal (filesystem specific) representation of the path, +which will be cached inside the path object, and may be retrieved +efficiently by the other filesystem functions. Tcl will simultaneously +cache the fact that this path belongs to this filesystem. Such caches +are invalidated when filesystem structures are added or removed from +Tcl's internal list of known filesystems. .PP .CS typedef int Tcl_FSPathInFilesystemProc( -- cgit v0.12 From 0b3bcf782c99fda3becd1a089c4bc3265f0cddaa Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 24 Jun 2003 21:24:08 +0000 Subject: Documented that [source] always uses the system encoding. --- ChangeLog | 5 +++++ doc/encoding.n | 20 ++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1565aaa..111bd69 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-06-24 Donal K. Fellows + + * doc/encoding.n: Corrected the docs to say that [source] uses the + system encoding, which it always did anyway (since 8.1) [Bug 742100] + 2003-06-23 Vince Darley * generic/tclFCmd.c: fix to bad error message when trying to diff --git a/doc/encoding.n b/doc/encoding.n index 5fad056..f2ddbb7 100644 --- a/doc/encoding.n +++ b/doc/encoding.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: encoding.n,v 1.3 2000/09/07 14:27:47 poenitz Exp $ +'\" RCS: @(#) $Id: encoding.n,v 1.3.18.1 2003/06/24 21:24:08 dkf Exp $ '\" .so man.macros .TH encoding n "8.1" Tcl "Tcl Built-In Commands" @@ -59,13 +59,17 @@ characters as singe bytes and Japanese characters as two bytes. This makes it easy to embed literal strings that correspond to non-ASCII characters by simply typing the strings in place in the script. However, because the \fBsource\fR command always reads files using the -ISO8859-1 encoding, Tcl will treat each byte in the file as a separate -character that maps to the 00 page in Unicode. The -resulting Tcl strings will not contain the expected Japanese -characters. Instead, they will contain a sequence of Latin-1 -characters that correspond to the bytes of the original string. The -\fBencoding\fR command can be used to convert this string to the -expected Japanese Unicode characters. For example, +current system encoding, Tcl will only source such files correctly +when the encoding used to write the file is the same. This tends not +to be true in an internationalized setting. For example, if such a +file was sourced in North America (where the ISO8859-1 is normally +used), each byte in the file would be treated as a separate character +that maps to the 00 page in Unicode. The resulting Tcl strings will +not contain the expected Japanese characters. Instead, they will +contain a sequence of Latin-1 characters that correspond to the bytes +of the original string. The \fBencoding\fR command can be used to +convert this string to the expected Japanese Unicode characters. For +example, .CS set s [encoding convertfrom euc-jp "\\xA4\\xCF"] .CE -- cgit v0.12 From a9fff24dfa7b2777f886dad59e7bdc5129262a15 Mon Sep 17 00:00:00 2001 From: mdejong Date: Wed, 25 Jun 2003 21:35:25 +0000 Subject: * unix/configure: Regen. * unix/tcl.m4 (SC_CONFIG_CFLAGS): Add -ieee when compiling with cc and add -mieee when compiling with gcc under OSF1-V5 "Tru64" systems. [Bug 748957] --- ChangeLog | 8 ++++++++ unix/configure | 48 +++++++++++++++++++++++++----------------------- unix/tcl.m4 | 6 ++++-- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 111bd69..de52562 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-06-25 Mo DeJong + + * unix/configure: Regen. + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Add -ieee when + compiling with cc and add -mieee when compiling + with gcc under OSF1-V5 "Tru64" systems. + [Bug 748957] + 2003-06-24 Donal K. Fellows * doc/encoding.n: Corrected the docs to say that [source] uses the diff --git a/unix/configure b/unix/configure index 6b44276..db918ee 100755 --- a/unix/configure +++ b/unix/configure @@ -6383,8 +6383,10 @@ EOF LDFLAGS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - if test "$GCC" != "yes" ; then - EXTRA_CFLAGS="-DHAVE_TZSET -std1" + if test "$GCC" = "yes" ; then + EXTRA_CFLAGS="-mieee" + else + EXTRA_CFLAGS="-DHAVE_TZSET -std1 -ieee" fi # see pthread_intro(3) for pthread support on osf1, k.furukawa if test "${TCL_THREADS}" = "1" ; then @@ -6589,17 +6591,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:6593: checking for ld accepts -Bexport flag" >&5 +echo "configure:6595: checking for ld accepts -Bexport flag" >&5 LDFLAGS="${LDFLAGS} -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -6646,9 +6648,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:6650: checking sys/exec.h" >&5 +echo "configure:6652: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -6666,7 +6668,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6672: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -6684,9 +6686,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:6688: checking a.out.h" >&5 +echo "configure:6690: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -6704,7 +6706,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -6722,9 +6724,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:6726: checking sys/exec_aout.h" >&5 +echo "configure:6728: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -6742,7 +6744,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -6894,7 +6896,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:6898: checking for build with symbols" >&5 +echo "configure:6900: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -6961,17 +6963,17 @@ TCL_DBGX=${DBGX} do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6965: checking for $ac_hdr" >&5 +echo "configure:6967: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6975: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7001,17 +7003,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7005: checking for $ac_hdr" >&5 +echo "configure:7007: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7015: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7017: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7038,7 +7040,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7042: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7044: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7101,7 +7103,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7105: checking how to package libraries" >&5 +echo "configure:7107: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index e407792..87d8fcc 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1333,8 +1333,10 @@ dnl AC_CHECK_TOOL(AR, ar) LDFLAGS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - if test "$GCC" != "yes" ; then - EXTRA_CFLAGS="-DHAVE_TZSET -std1" + if test "$GCC" = "yes" ; then + EXTRA_CFLAGS="-mieee" + else + EXTRA_CFLAGS="-DHAVE_TZSET -std1 -ieee" fi # see pthread_intro(3) for pthread support on osf1, k.furukawa if test "${TCL_THREADS}" = "1" ; then -- cgit v0.12 From a9b4861761709cc4cb72432ca69be351b140d48a Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 4 Jul 2003 13:16:11 +0000 Subject: * tests/cmdAH.test: Made tests of [file mtime] work better on FAT filesystems. [Patch 760768] Also a little general cleanup. --- ChangeLog | 5 +++ tests/cmdAH.test | 101 ++++++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 79 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index de52562..b1bb5bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-04 Donal K. Fellows + + * tests/cmdAH.test: Made tests of [file mtime] work better on FAT + filesystems. [Patch 760768] Also a little general cleanup. + 2003-06-25 Mo DeJong * unix/configure: Regen. diff --git a/tests/cmdAH.test b/tests/cmdAH.test index 9d7dca1..51ecf99 100644 --- a/tests/cmdAH.test +++ b/tests/cmdAH.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: cmdAH.test,v 1.30.2.2 2003/04/14 15:45:51 vincentdarley Exp $ +# RCS: @(#) $Id: cmdAH.test,v 1.30.2.3 2003/07/04 13:16:13 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -183,7 +183,7 @@ test cmdAH-5.4 {Tcl_FileObjCmd} { #volume test cmdAH-6.1 {Tcl_FileObjCmd: volumes} { - list [catch {file volumes x} msg] $msg + list [catch {file volumes x} msg] $msg } {1 {wrong # args: should be "file volumes"}} test cmdAH-6.2 {Tcl_FileObjCmd: volumes} { set volumeList [file volumes] @@ -191,13 +191,13 @@ test cmdAH-6.2 {Tcl_FileObjCmd: volumes} { set result 0 } else { set result 1 - } + } } {1} test cmdAH-6.3 {Tcl_FileObjCmd: volumes} {macOrUnix} { set volumeList [file volumes] catch [list glob -nocomplain [lindex $volumeList 0]*] } {0} -test cmdAH-6.4 {Tcl_FileObjCmd: volumes} {pcOnly} { +test cmdAH-6.4 {Tcl_FileObjCmd: volumes} winOnly { set volumeList [string tolower [file volumes]] list [catch {lsearch $volumeList "c:/"} element] [expr $element != -1] [catch {list glob -nocomplain [lindex $volumeList $element]*}] } {0 1 0} @@ -1069,8 +1069,8 @@ test cmdAH-18.2 {Tcl_FileObjCmd: executable} {testchmod} { } 0 test cmdAH-18.3 {Tcl_FileObjCmd: executable} {unixOnly testchmod} { # Only on unix will setting the execute bit on a regular file - # cause that file to be executable. - + # cause that file to be executable. + testchmod 0775 $gorpfile file exe $gorpfile } 1 @@ -1078,13 +1078,13 @@ test cmdAH-18.3 {Tcl_FileObjCmd: executable} {unixOnly testchmod} { test cmdAH-18.4 {Tcl_FileObjCmd: executable} {macOnly testchmod} { # On mac, the only executable files are of type APPL. - set x [file exe $gorpfile] + set x [file exe $gorpfile] file attrib $gorpfile -type APPL lappend x [file exe $gorpfile] } {0 1} -test cmdAH-18.5 {Tcl_FileObjCmd: executable} {pcOnly testchmod} { +test cmdAH-18.5 {Tcl_FileObjCmd: executable} {winOnly testchmod} { # On pc, must be a .exe, .com, etc. - + set x [file exe $gorpfile] set gorpexe [makeFile foo gorp.exe] lappend x [file exe $gorpexe] @@ -1093,7 +1093,7 @@ test cmdAH-18.5 {Tcl_FileObjCmd: executable} {pcOnly testchmod} { } {0 1} test cmdAH-18.6 {Tcl_FileObjCmd: executable} {testchmod} { # Directories are always executable. - + file exe $dirfile } 1 @@ -1302,8 +1302,27 @@ test cmdAH-23.10 {Tcl_FileObjCmd: mkdir} { set res } {1 1} -# mtime - +# mtime + +proc waitForEvenSecondForFAT {} { + # Windows 9x uses filesystems (the FAT* family of FSes) without + # enough data in its timestamps for even per-second-accurate + # timings. :^( + # This procedure based on work by Helmut Giese + + global tcl_platform + if {$tcl_platform(platform) ne "windows"} {return} + if {[lindex [file system [temporaryDirectory]] 1] == "NTFS"} {return} + # Assume non-NTFS means FAT{12,16,32} and hence in need of special help + set start [clock seconds] + while {1} { + set now [clock seconds] + if {$now!=$start && !($now & 1)} { + return + } + after 50 + } +} set file [makeFile "data" touch.me] test cmdAH-24.1 {Tcl_FileObjCmd: mtime} { @@ -1317,20 +1336,22 @@ test cmdAH-24.1 {Tcl_FileObjCmd: mtime} { # completely horrible "keep on trying to write until you managed to do # it all in less than a second." - DKF test cmdAH-24.2 {Tcl_FileObjCmd: mtime} { + waitForEvenSecondForFAT set f [open $gorpfile w] puts $f "More text" - set localOld [clock seconds] close $f - set old [file mtime $gorpfile] + set clockOld [clock seconds] + set fileOld [file mtime $gorpfile] after 2000 set f [open $gorpfile w] puts $f "More text" - set localNew [clock seconds] close $f - set new [file mtime $gorpfile] + set clockNew [clock seconds] + set fileNew [file mtime $gorpfile] expr { - ($new > $old) && ($localNew > $localOld) && - (abs(($new-$old) - ($localNew-$localOld)) <= 1) + (($fileNew > $fileOld) && ($clockNew > $clockOld) && + (abs(($fileNew-$fileOld) - ($clockNew-$clockOld)) <= 1)) ? "1" : + "file:($fileOld=>$fileNew) clock:($clockOld=>$clockNew)" } } {1} test cmdAH-24.3 {Tcl_FileObjCmd: mtime} { @@ -1353,7 +1374,7 @@ test cmdAH-24.5 {Tcl_FileObjCmd: mtime} { set name [file join [temporaryDirectory] tf] } - # Make sure that a new file's time is correct. 10 seconds variance + # Make sure that a new file's time is correct. 10 seconds variance # is allowed used due to slow networks or clock skew on a network drive. file delete -force $name @@ -1365,14 +1386,14 @@ test cmdAH-24.5 {Tcl_FileObjCmd: mtime} { test cmdAH-24.7 {Tcl_FileObjCmd: mtime} { list [catch {file mtime $file notint} msg] $msg } {1 {expected integer but got "notint"}} -test cmdAH-24.8 {Tcl_FileObjCmd: mtime touch} { +test cmdAH-24.8 {Tcl_FileObjCmd: mtime touch} macOrUnix { set mtime [file mtime $file] after 1100; # pause a sec to notice change in mtime set newmtime [clock seconds] set modmtime [file mtime $file $newmtime] expr {$newmtime == $modmtime ? 1 : "$newmtime != $modmtime"} } 1 -test cmdAH-24.9 {Tcl_FileObjCmd: mtime touch with non-ascii chars} { +test cmdAH-24.9 {Tcl_FileObjCmd: mtime touch with non-ascii chars} macOrUnix { set oldfile $file # introduce some non-ascii characters. append file \u2022 @@ -1388,7 +1409,33 @@ test cmdAH-24.9 {Tcl_FileObjCmd: mtime touch with non-ascii chars} { } expr {$newmtime == $modmtime ? 1 : "$newmtime != $modmtime"} } 1 +test cmdAH-24.10 {Tcl_FileObjCmd: mtime touch} winOnly { + waitForEvenSecondForFAT + set mtime [file mtime $file] + after 2100; # pause two secs to notice change in mtime on FAT fs'es + set newmtime [clock seconds] + set modmtime [file mtime $file $newmtime] + expr {$newmtime == $modmtime ? 1 : "$newmtime != $modmtime"} +} 1 +test cmdAH-24.11 {Tcl_FileObjCmd: mtime touch with non-ascii chars} winOnly { + waitForEvenSecondForFAT + set oldfile $file + # introduce some non-ascii characters. + append file \u2022 + file delete -force $file + file rename $oldfile $file + set mtime [file mtime $file] + after 2100; # pause two secs to notice change in mtime on FAT fs'es + set newmtime [clock seconds] + set err [catch {file mtime $file $newmtime} modmtime] + file rename $file $oldfile + if {$err} { + error $modmtime + } + expr {$newmtime == $modmtime ? 1 : "$newmtime != $modmtime"} +} 1 removeFile touch.me +rename waitForEvenSecondForFAT {} # owned @@ -1418,7 +1465,7 @@ test cmdAH-26.4 {Tcl_FileObjCmd: readlink errors} {macOnly nonPortable} { list [catch {file readlink _bogus_} msg] [string tolower $msg] \ [string tolower $errorCode] } {1 {could not readlink "_bogus_": no such file or directory} {posix enoent {no such file or directory}}} -test cmdAH-26.5 {Tcl_FileObjCmd: readlink errors} {pcOnly nonPortable} { +test cmdAH-26.5 {Tcl_FileObjCmd: readlink errors} {winOnly nonPortable} { list [catch {file readlink _bogus_} msg] [string tolower $msg] \ [string tolower $errorCode] } {1 {could not readlink "_bogus_": invalid argument} {posix einval {invalid argument}}} @@ -1487,14 +1534,14 @@ test cmdAH-28.8 {Tcl_FileObjCmd: stat} { removeFile $filename set x } 1 -test cmdAH-28.9 {Tcl_FileObjCmd: stat} {pcOnly} { +test cmdAH-28.9 {Tcl_FileObjCmd: stat} winOnly { # stat of root directory was failing. # don't care about answer, just that test runs. # relative paths that resolve to root set old [pwd] cd c:/ - file stat c: stat + file stat c: stat file stat c:. stat file stat . stat cd $old @@ -1503,15 +1550,15 @@ test cmdAH-28.9 {Tcl_FileObjCmd: stat} {pcOnly} { file stat c:/ stat file stat c:/. stat } {} -test cmdAH-28.10 {Tcl_FileObjCmd: stat} {pcOnly nonPortable} { +test cmdAH-28.10 {Tcl_FileObjCmd: stat} {winOnly nonPortable} { # stat of root directory was failing. # don't care about answer, just that test runs. file stat //pop/$env(USERNAME) stat file stat //pop/$env(USERNAME)/ stat file stat //pop/$env(USERNAME)/. stat -} {} -test cmdAH-28.11 {Tcl_FileObjCmd: stat} {pcOnly nonPortable} { +} {} +test cmdAH-28.11 {Tcl_FileObjCmd: stat} {winOnly nonPortable} { # stat of network directory was returning id of current local drive. set old [pwd] -- cgit v0.12 From 77af51dd0040c57831f60c5addcb925dc197980b Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 4 Jul 2003 22:25:22 +0000 Subject: Tighened up wording of several expr operations to make them less inclined to misinterpretation. [Bug 758488] --- ChangeLog | 2 ++ doc/expr.n | 26 ++++++++++++++------------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index b1bb5bb..0949918 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2003-07-04 Donal K. Fellows + * doc/expr.n: Tighten up the wording of some operations. [Bug 758488] + * tests/cmdAH.test: Made tests of [file mtime] work better on FAT filesystems. [Patch 760768] Also a little general cleanup. diff --git a/doc/expr.n b/doc/expr.n index cdb6560..b43765c 100644 --- a/doc/expr.n +++ b/doc/expr.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: expr.n,v 1.10 2003/01/03 23:03:22 dgp Exp $ +'\" RCS: @(#) $Id: expr.n,v 1.10.2.1 2003/07/04 22:25:23 dkf Exp $ '\" .so man.macros .TH expr n 8.4 Tcl "Tcl Built-In Commands" @@ -194,14 +194,15 @@ the Tcl parser will evaluate both \fB[a]\fR and \fB[b]\fR before invoking the \fBexpr\fR command. .SH "MATH FUNCTIONS" .PP -Tcl supports the following mathematical functions in expressions: +Tcl supports the following mathematical functions in expressions, all +of which work solely with floating-point numbers unless otherwise noted: .DS .ta 3c 6c 9c \fBabs\fR \fBcosh\fR \fBlog\fR \fBsqrt\fR \fBacos\fR \fBdouble\fR \fBlog10\fR \fBsrand\fR \fBasin\fR \fBexp\fR \fBpow\fR \fBtan\fR \fBatan\fR \fBfloor\fR \fBrand\fR \fBtanh\fR -\fBatan2\fR \fBfmod\fR \fBround\fR +\fBatan2\fR \fBfmod\fR \fBround\fR \fBwide\fR \fBceil\fR \fBhypot\fR \fBsin\fR \fBcos\fR \fBint\fR \fBsinh\fR .DE @@ -229,7 +230,7 @@ radians. \fIx\fR and \fIy\fR cannot both be 0. If \fIx\fR is greater than \fI0\fR, this is equivalent to \fBatan(\fIy/x\fB)\fR. .TP \fBceil(\fIarg\fB)\fR -Returns the smallest integral floating point value (i.e. with a zero +Returns the smallest integral floating-point value (i.e. with a zero fractional part) not less than \fIarg\fR. .TP \fBcos(\fIarg\fB)\fR @@ -240,15 +241,15 @@ Returns the hyperbolic cosine of \fIarg\fR. If the result would cause an overflow, an error is returned. .TP \fBdouble(\fIarg\fB)\fR -If \fIarg\fR is a floating value, returns \fIarg\fR, otherwise converts -\fIarg\fR to floating and returns the converted value. +If \fIarg\fR is a floating-point value, returns \fIarg\fR, otherwise converts +\fIarg\fR to floating-point and returns the converted value. .TP \fBexp(\fIarg\fB)\fR Returns the exponential of \fIarg\fR, defined as \fIe\fR**\fIarg\fR. If the result would cause an overflow, an error is returned. .TP \fBfloor(\fIarg\fB)\fR -Returns the largest integral floating point value (i.e. with a zero +Returns the largest integral floating-point value (i.e. with a zero fractional part) not greater than \fIarg\fR. .TP \fBfmod(\fIx, y\fB)\fR @@ -261,7 +262,8 @@ Computes the length of the hypotenuse of a right-angled triangle .TP \fBint(\fIarg\fB)\fR .VS 8.4 -If \fIarg\fR is an integer value, returns \fIarg\fR, otherwise +If \fIarg\fR is an integer value of the same width as the machine +word, returns \fIarg\fR, otherwise converts \fIarg\fR to an integer (of the same size as a machine word, i.e. 32-bits on 32-bit systems, and 64-bits on 64-bit systems) by truncation and returns the converted value. @@ -280,7 +282,7 @@ Computes the value of \fIx\fR raised to the power \fIy\fR. If \fIx\fR is negative, \fIy\fR must be an integer value. .TP \fBrand()\fR -Returns a pseudo-random floating point value in the range (\fI0\fR,\fI1\fR). +Returns a pseudo-random floating-point value in the range (\fI0\fR,\fI1\fR). The generator algorithm is a simple linear congruential generator that is not cryptographically secure. Each result from \fBrand\fR completely determines all future results from subsequent calls to \fBrand\fR, so @@ -305,7 +307,7 @@ Returns the square root of \fIarg\fR. \fIArg\fR must be non-negative. \fBsrand(\fIarg\fB)\fR The \fIarg\fR, which must be an integer, is used to reset the seed for the random number generator of \fBrand\fR. Returns the first random -number from that seed. Each interpreter has its own seed. +number (see \fBrand()\fR) from that seed. Each interpreter has its own seed. .TP \fBtan(\fIarg\fB)\fR Returns the tangent of \fIarg\fR, measured in radians. @@ -315,8 +317,8 @@ Returns the hyperbolic tangent of \fIarg\fR. .TP \fBwide(\fIarg\fB)\fR .VS 8.4 -Converts \fIarg\fR to a value at least 64-bits wide (by sign-extension -if \fIarg\fR is a 32-bit number.) +Converts \fIarg\fR to an integer value at least 64-bits wide (by sign-extension +if \fIarg\fR is a 32-bit number) if it is not one already. .VE 8.4 .PP In addition to these predefined functions, applications may -- cgit v0.12 From 50e63af8e12e08f7d7e8f6808a1fe7a656d934f9 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 11 Jul 2003 18:46:25 +0000 Subject: * library/package.tcl: Corrected [pkg_mkIndex] bug reported on comp.lang.tcl. The indexer was searching for newly indexed packages instead of newly provided packages. --- ChangeLog | 6 ++++++ library/package.tcl | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0949918..77ff66d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-07-11 Don Porter + + * library/package.tcl: Corrected [pkg_mkIndex] bug reported on + comp.lang.tcl. The indexer was searching for newly indexed packages + instead of newly provided packages. + 2003-07-04 Donal K. Fellows * doc/expr.n: Tighten up the wording of some operations. [Bug 758488] diff --git a/library/package.tcl b/library/package.tcl index 96e2f00..663b84a 100644 --- a/library/package.tcl +++ b/library/package.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl which can be loaded on demand # for package management. # -# RCS: @(#) $Id: package.tcl,v 1.23 2003/02/25 23:58:09 dgp Exp $ +# RCS: @(#) $Id: package.tcl,v 1.23.2.1 2003/07/11 18:46:25 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -272,7 +272,9 @@ proc pkg_mkIndex {args} { set ::tcl::namespaces($::tcl::x) 1 } foreach ::tcl::x [package names] { - set ::tcl::packages($::tcl::x) 1 + if {[string compare [package provide $::tcl::x] ""]} { + set ::tcl::packages($::tcl::x) 1 + } } set ::tcl::origCmds [info commands] @@ -366,7 +368,9 @@ proc pkg_mkIndex {args} { set cmds [lsort [$c eval array names ::tcl::newCmds]] set pkgs [$c eval set ::tcl::newPkgs] if {$doVerbose} { - tclLog "commands provided were $cmds" + if { !$::tcl::direct } { + tclLog "commands provided were $cmds" + } tclLog "packages provided were $pkgs" } if {[llength $pkgs] > 1} { -- cgit v0.12 From c188371e379c3b139e3ddc924121ad3c64860c7e Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 11 Jul 2003 21:18:55 +0000 Subject: Documented and tested for the current behaviour of [binary format a] and [binary scan ? a]. This is what they've been doing all along. [Bug 735364] --- ChangeLog | 8 ++++++++ doc/binary.n | 14 ++++++++++++-- tests/binary.test | 24 +++++++++++++++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 77ff66d..e6e44ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-07-11 Donal K. Fellows + + * tests/binary.test (binary-46.*): Tests to help enforce the + current behaviour. + * doc/binary.n: Documented that [binary format a] and [binary scan a] + do encoding conversion by dropping high bytes, unlike the rest of + the core. [Bug 735364] + 2003-07-11 Don Porter * library/package.tcl: Corrected [pkg_mkIndex] bug reported on diff --git a/doc/binary.n b/doc/binary.n index 997963a..80a6460 100644 --- a/doc/binary.n +++ b/doc/binary.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: binary.n,v 1.11.2.2 2003/04/10 08:28:15 dkf Exp $ +'\" RCS: @(#) $Id: binary.n,v 1.11.2.3 2003/07/11 21:18:55 dkf Exp $ '\" .so man.macros .TH binary n 8.0 Tcl "Tcl Built-In Commands" @@ -65,6 +65,12 @@ position 0 at the beginning of the data. The type may be any one of the following characters: .IP \fBa\fR 5 Stores a character string of length \fIcount\fR in the output string. +Every character is taken as modulo 256 (i.e. the low byte of every +character is used, and the high byte discarded) so when storing +character strings not wholly expressible using the characters +\bu0000-\bu00ff, the \fBencoding convertto\fR command should be used +first if this truncation is not desired (i.e. if the characters are +not part of the ISO 8859-1 character set.) If \fIarg\fR has fewer than \fIcount\fR bytes, then additional zero bytes are used to pad out the field. If \fIarg\fR is longer than the specified length, the extra characters will be ignored. If @@ -383,7 +389,11 @@ the following characters: The data is a character string of length \fIcount\fR. If \fIcount\fR is \fB*\fR, then all of the remaining bytes in \fIstring\fR will be scanned into the variable. If \fIcount\fR is omitted, then one -character will be scanned. For example, +character will be scanned. +All characters scanned will be interpreted as being in the range +\bu0000-\bu00ff so the \fBencoding convertfrom\fR command might be +needed if the string is not an ISO 8859\-1 string. +For example, .RS .CS \fBbinary scan abcde\\000fghi a6a10 var1 var2\fR diff --git a/tests/binary.test b/tests/binary.test index 967fcbc..fcc6df6 100644 --- a/tests/binary.test +++ b/tests/binary.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: binary.test,v 1.11 2003/02/21 21:54:11 dkf Exp $ +# RCS: @(#) $Id: binary.test,v 1.11.2.1 2003/07/11 21:18:55 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1494,6 +1494,28 @@ test binary-45.2 {Tcl_BinaryObjCmd: combined wide int handling} { set x } {66 64 0 0 0 0 127 -1 -1 -1 65 76} +test binary-46.1 {Tcl_BinaryObjCmd: handling of non-ISO8859-1 chars} { + binary format a* \u20ac +} \u00ac +test binary-46.2 {Tcl_BinaryObjCmd: handling of non-ISO8859-1 chars} { + list [binary scan [binary format a* \u20ac\u20bd] s x] $x +} {1 -16980} +test binary-46.3 {Tcl_BinaryObjCmd: handling of non-ISO8859-1 chars} { + set x {} + set y {} + set z {} + list [binary scan [binary format a* \u20ac\u20bd] aaa x y z] $x $y $z +} "2 \u00ac \u00bd {}" +test binary-46.4 {Tcl_BinaryObjCmd: handling of non-ISO8859-1 chars} { + set x [encoding convertto iso8859-15 \u20ac] + set y [binary format a* $x] + list $x $y +} "\u00a4 \u00a4" +test binary-46.5 {Tcl_BinaryObjCmd: handling of non-ISO8859-1 chars} { + set x [binary scan \u00a4 a* y] + list $x $y [encoding convertfrom iso8859-15 $y] +} "1 \u00a4 \u20ac" + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 779dbbd3efd459db30fa317e777dccd3f631e549 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 14 Jul 2003 08:01:47 +0000 Subject: typo fixes from trunk --- doc/binary.n | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/binary.n b/doc/binary.n index 80a6460..7e7e025 100644 --- a/doc/binary.n +++ b/doc/binary.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: binary.n,v 1.11.2.3 2003/07/11 21:18:55 dkf Exp $ +'\" RCS: @(#) $Id: binary.n,v 1.11.2.4 2003/07/14 08:01:47 das Exp $ '\" .so man.macros .TH binary n 8.0 Tcl "Tcl Built-In Commands" @@ -67,8 +67,8 @@ the following characters: Stores a character string of length \fIcount\fR in the output string. Every character is taken as modulo 256 (i.e. the low byte of every character is used, and the high byte discarded) so when storing -character strings not wholly expressible using the characters -\bu0000-\bu00ff, the \fBencoding convertto\fR command should be used +character strings not wholly expressible using the characters \\u0000-\\u00ff, +the \fBencoding convertto\fR command should be used first if this truncation is not desired (i.e. if the characters are not part of the ISO 8859-1 character set.) If \fIarg\fR has fewer than \fIcount\fR bytes, then additional zero @@ -390,8 +390,8 @@ The data is a character string of length \fIcount\fR. If \fIcount\fR is \fB*\fR, then all of the remaining bytes in \fIstring\fR will be scanned into the variable. If \fIcount\fR is omitted, then one character will be scanned. -All characters scanned will be interpreted as being in the range -\bu0000-\bu00ff so the \fBencoding convertfrom\fR command might be +All characters scanned will be interpreted as being in the +range \\u0000-\\u00ff so the \fBencoding convertfrom\fR command might be needed if the string is not an ISO 8859\-1 string. For example, .RS -- cgit v0.12 From 9f325af2dabd1771fee7195f85a9b8fbc78a42e9 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 14 Jul 2003 18:26:29 +0000 Subject: missing . --- doc/binary.n | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/binary.n b/doc/binary.n index 7e7e025..320d94f 100644 --- a/doc/binary.n +++ b/doc/binary.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: binary.n,v 1.11.2.4 2003/07/14 08:01:47 das Exp $ +'\" RCS: @(#) $Id: binary.n,v 1.11.2.5 2003/07/14 18:26:29 hobbs Exp $ '\" .so man.macros .TH binary n 8.0 Tcl "Tcl Built-In Commands" @@ -55,7 +55,7 @@ specifiers and the arguments: The first argument is a list of four numbers, but because of the count of 3 for the associated field specifier, only the first three will be used. The second argument is associated with the second field -specifier. The resulting binary string contains the four numbers 10, +specifier. The resulting binary string contains the four numbers 1.0, 2.0, 3.0 and 0.1. .PP Each type-count pair moves an imaginary cursor through the binary -- cgit v0.12 From 202e286a36ddafaead632892950c3e18b3f3038b Mon Sep 17 00:00:00 2001 From: das Date: Tue, 15 Jul 2003 01:15:50 +0000 Subject: * macosx/Makefile: Rewrote buildsystem for Mac OS X framework build to be purely make driven; in order to become independent of Apple's closed-source IDE and build tool. The changes are intended to be transparent to the Makefile user, all existing make targets and cmd line variable overrides should continue to work. Changed build to only include tcl specific html help in Tcl.framework, the tk specific html help is now included in Tk.framework. * macosx/Tcl.pbproj/project.pbxproj: * macosx/Tcl.pbproj/jingham.pbxuser: Changed to purely call through to the make driven buildsystem; Tcl.framework is no longer assembled by ProjectBuilder. Set default SYMROOT in target options to simplify setting up PB (manually setting common build folder for tcl & tk no longer needed). * tools/tcltk-man2html.tcl: Added options to allow building only the tcl or tk html help files; the default behaviour with none of the new options is to build both, as before. * unix/Makefile.in: Added targets for building only the tcl or tk help. * macosx/README (new): Tcl specific excerpts of tk/macosx/README. * generic/tcl.h: Updated reminder comment about editing macosx/Tcl.pbproj/project.pbxproj when version number changes. --- ChangeLog | 28 +++ generic/tcl.h | 5 +- macosx/Makefile | 280 +++++++++++++++++------- macosx/README | 120 +++++++++++ macosx/Tcl.pbproj/jingham.pbxuser | 440 +++++--------------------------------- macosx/Tcl.pbproj/project.pbxproj | 355 +++--------------------------- tools/tcltk-man2html.tcl | 63 ++++-- unix/Makefile.in | 9 +- 8 files changed, 496 insertions(+), 804 deletions(-) create mode 100644 macosx/README diff --git a/ChangeLog b/ChangeLog index e6e44ae..53fdacc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,31 @@ +2003-07-15 Daniel Steffen + + * macosx/Makefile: Rewrote buildsystem for Mac OS X framework build + to be purely make driven; in order to become independent of Apple's + closed-source IDE and build tool. The changes are intended to be + transparent to the Makefile user, all existing make targets and + cmd line variable overrides should continue to work. + Changed build to only include tcl specific html help in Tcl.framework, + the tk specific html help is now included in Tk.framework. + + * macosx/Tcl.pbproj/project.pbxproj: + * macosx/Tcl.pbproj/jingham.pbxuser: Changed to purely call through + to the make driven buildsystem; Tcl.framework is no longer assembled + by ProjectBuilder. + Set default SYMROOT in target options to simplify setting up PB + (manually setting common build folder for tcl & tk no longer needed). + + * tools/tcltk-man2html.tcl: Added options to allow building only the + tcl or tk html help files; the default behaviour with none of the new + options is to build both, as before. + + * unix/Makefile.in: Added targets for building only the tcl or tk help. + + * macosx/README (new): Tcl specific excerpts of tk/macosx/README. + + * generic/tcl.h: Updated reminder comment about editing + macosx/Tcl.pbproj/project.pbxproj when version number changes. + 2003-07-11 Donal K. Fellows * tests/binary.test (binary-46.*): Tests to help enforce the diff --git a/generic/tcl.h b/generic/tcl.h index f3d9dab..7d671e0 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.3 2003/05/15 18:59:37 hobbs Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.4 2003/07/15 01:15:50 das Exp $ */ #ifndef _TCL @@ -46,8 +46,7 @@ extern "C" { * win/makefile.vc (not patchlevel) 2 LOC * README (sections 0 and 2) * mac/README (2 LOC, not patchlevel) - * macosx/Tcl.pbproj/project.pbxproj - * (7 LOC total, 2 LOC patch) + * macosx/Tcl.pbproj/project.pbxproj (not patchlevel) 2 LOC * win/README.binary (sections 0-4) * win/README (not patchlevel) (sections 0 and 2) * unix/tcl.spec (2 LOC Major/Minor, 1 LOC patch) diff --git a/macosx/Makefile b/macosx/Makefile index fec1e4b..3ae458a 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -1,87 +1,221 @@ -################################################################################ +######################################################################################################## # -# Simple makefile for building on Mac OS X with the -# Project Builder command line tool 'pbxbuild' +# Makefile to build Tcl on Mac OS X packaged as a Framework +# uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5 2003/02/19 16:43:29 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.1 2003/07/15 01:15:51 das Exp $ # -################################################################################ +######################################################################################################## -INSTALL_ROOT ?= +#------------------------------------------------------------------------------------------------------- +# customizable settings -BUILD_DIR ?= ${CURDIR}/../../build +DESTDIR ?= +INSTALL_ROOT ?= ${DESTDIR} -TARGET = Tcl +BUILD_DIR ?= ${CURDIR}/../../build +SYMROOT ?= ${BUILD_DIR}/${PROJECT} +OBJROOT ?= ${SYMROOT} -DEVBUILDSTYLE = Development -DEPBUILDSTYLE = Deployment +EXTRA_CONFIGURE_ARGS ?= +EXTRA_MAKE_ARGS ?= -PBXBUILD = /usr/bin/pbxbuild +INSTALL_PATH ?= /Library/Frameworks +PREFIX ?= /usr +BINDIR ?= ${PREFIX}/bin -BUILD = ${PBXBUILD} SYMROOT="${BUILD_DIR}" -target "${TARGET}" +TCL_PACKAGE_PATH ?= "~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl \ + ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks \ + /System/Library/Frameworks" -DEVBUILD = ${BUILD} -buildstyle "${DEVBUILDSTYLE}" -DEPBUILD = ${BUILD} -buildstyle "${DEPBUILDSTYLE}" +#------------------------------------------------------------------------------------------------------- +# meta targets -INSTALLOPTS = INSTALL_ROOT="${INSTALL_ROOT}" +meta := all install embedded install-embedded clean distclean -EMBEDDEDOPTS = EMBEDDED_BUILD=1 +styles := develop deploy -################################################################################ +all := ${styles} +all : ${all} -all: develop deploy - -install: install-develop install-deploy - -embedded: embedded-deploy - -install-embedded: install-embedded-deploy - -clean: clean-develop clean-deploy - -################################################################################ - -develop: - ${DEVBUILD} - -deploy: - ${DEPBUILD} - -install-develop: - ${DEVBUILD} install ${INSTALLOPTS} - -install-deploy: - ${DEPBUILD} install ${INSTALLOPTS} - -embedded-develop: - ${DEVBUILD} ${EMBEDDEDOPTS} - -embedded-deploy: - ${DEPBUILD} ${EMBEDDEDOPTS} - -install-embedded-develop: - ${DEVBUILD} install ${INSTALLOPTS} ${EMBEDDEDOPTS} - -install-embedded-deploy: - ${DEPBUILD} install ${INSTALLOPTS} ${EMBEDDEDOPTS} - -clean-develop: - ${DEVBUILD} clean - -clean-deploy: - ${DEPBUILD} clean - -################################################################################ - -forceRelink: - @-cd ${BUILD_DIR}; \ - rm -rf Tcl.framework tclsh8.4 \ - Development.build/Tcl.build/Tcl Deployment.build/Tcl.build/Tcl - -################################################################################ - -.PHONY: all install embedded clean develop deploy install-develop install-deploy \ -embedded-develop embedded-deploy install-embedded-develop install-embedded-deploy \ -clean-develop clean-deploy forceRelink \ - -################################################################################ +install := ${styles:%=install-%} +install : ${install} +install-%: action := install- + +embedded := ${styles:%=embedded-%} +embedded : embedded-deploy +install-embedded := $(embedded:%=install-%) +install-embedded : install-embedded-deploy + +clean := ${styles:%=clean-%} +clean : ${clean} +clean-%: action := clean- +distclean := ${styles:%=distclean-%} +distclean : ${distclean} +distclean-%: action := distclean- + +targets := $(foreach v,${meta},${$v}) + +#------------------------------------------------------------------------------------------------------- +# build styles + +develop_make_args := BUILD_STYLE=Development CONFIGURE_ARGS=--enable-symbols +deploy_make_args := BUILD_STYLE=Deployment \ + MAKE_ARGS=INSTALL_PROGRAM="'$$\$${INSTALL} $$\$${INSTALL_STRIP_PROGRAM}'" \ + MAKE_ARGS+=INSTALL_LIBRARY="'$$\$${INSTALL} $$\$${INSTALL_STRIP_LIBRARY}'" +embedded_make_args := EMBEDDED_BUILD=1 +install_make_args := INSTALL_BUILD=1 + +$(targets): + ${MAKE} ${action}${PROJECT} \ + $(foreach s,${styles} embedded install,$(if $(findstring $s,$@),${${s}_make_args})) + +#------------------------------------------------------------------------------------------------------- +# project specific settings + +PROJECT := tcl +PRODUCT_NAME := Tcl + +UNIX_DIR := ${CURDIR}/../unix +GENERIC_DIR := ${CURDIR}/../generic + +PRODUCT_VERSION := $(shell eval $$(grep '^TCL_VERSION=' ${UNIX_DIR}/configure.in); \ + echo "$${TCL_VERSION}") +PRODUCT_LONGVERSION := $(shell eval $$(grep '^TCL_PATCH_LEVEL=' ${UNIX_DIR}/configure.in); \ + echo "${PRODUCT_VERSION}$${TCL_PATCH_LEVEL}") + +PRIVATE_HEADERS := tclInt.h tclIntDecls.h tclIntPlatDecls.h tclMath.h +TARGETS := tclsh tcltest +TCLSH := tclsh${PRODUCT_VERSION} + +DYLIB_INSTALL_PATH ?= ${INSTALL_PATH} + +TCL_LIBRARY := @TCL_IN_FRAMEWORK@ +LIBDIR := ${INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${PRODUCT_VERSION} +DYLIB_INSTALL_DIR := ${DYLIB_INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${PRODUCT_VERSION} +INCLUDEDIR := ${LIBDIR}/Headers +PRIVATEINCLUDEDIR := ${LIBDIR}/PrivateHeaders +SCRIPTDIR := ${LIBDIR}/Resources/Scripts +DOCDIR := ${LIBDIR}/Resources/English.lproj/Documentation/Reference +INFOPLIST := ${LIBDIR}/Resources/Info.plist + +BUILD_STYLE = +OBJ_DIR = ${OBJROOT}/${BUILD_STYLE} + +${PROJECT}: override INSTALL_ROOT = ${OBJ_DIR}/ + +MAKE_VARS := INSTALL_ROOT TCL_PACKAGE_PATH TCL_LIBRARY DYLIB_INSTALL_DIR +MAKE_ARGS_V = $(foreach v,${MAKE_VARS},$v=${$v}) +export CPPROG := cp -p + +#------------------------------------------------------------------------------------------------------- +# build rules + +${PROJECT}: install-${PROJECT} + +${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure + mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && ${UNIX_DIR}/configure \ + --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} --includedir=${INCLUDEDIR} \ + --enable-threads --enable-framework ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} + cd ${OBJ_DIR} && mkdir -p ${PRODUCT_NAME}.framework && \ + ln -fs ../${PRODUCT_NAME} ${PRODUCT_NAME}.framework/${PRODUCT_NAME} + +build-${PROJECT}: ${OBJ_DIR}/Makefile + ${MAKE} -C ${OBJ_DIR} ${TARGETS} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} +# symolic link hackery to trick +# 'make install INSTALL_ROOT=${OBJ_DIR}' +# into building Tcl.framework and tclsh in ${SYMROOT} + cd ${OBJ_DIR}; mkdir -p $(dir ./${INSTALL_PATH}) $(dir ./${BINDIR}); \ + rm -f ./${INSTALL_PATH}; ln -fs ${SYMROOT} ./${INSTALL_PATH}; \ + rm -f ./${BINDIR}; ln -fs ${SYMROOT} ./${BINDIR}; \ + ln -fs ${OBJ_DIR}/tcltest ${SYMROOT} + +clean-${PROJECT}: + ${MAKE} -C ${OBJ_DIR} clean + +distclean-${PROJECT}: + ${MAKE} -C ${OBJ_DIR} distclean + rm -rf ${OBJ_DIR} ${PRODUCT_NAME}.framework tclsh${PRODUCT_VERSION} tcltest + +install-${PROJECT}: build-${PROJECT} +# install to ${INSTALL_ROOT} with optional stripping + ${MAKE} -C ${OBJ_DIR} install-binaries install-libraries \ + SCRIPT_INSTALL_DIR=${INSTALL_ROOT}${SCRIPTDIR} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} + mkdir -p ${INSTALL_ROOT}${PRIVATEINCLUDEDIR} && \ + cd ${GENERIC_DIR} && ${CPPROG} ${PRIVATE_HEADERS} ${INSTALL_ROOT}${PRIVATEINCLUDEDIR} +ifeq (${BUILD_STYLE},Development) +# keep copy of debug library around, so that +# Deployment build can be installed on top +# of Development build without overwriting +# the debug library + cd ${INSTALL_ROOT}${LIBDIR} && ln -f "${PRODUCT_NAME}" "${PRODUCT_NAME}_debug" +endif +# fixup Framework structure + cd ${INSTALL_ROOT}${LIBDIR}/.. && \ + rm -f Current && ln -fs ${PRODUCT_VERSION} Current && \ + cd .. && ln -fs Versions/Current/* . && \ + ln -fs Versions/${PRODUCT_VERSION}/lib*stub* . +ifeq (${INSTALL_BUILD},1) +ifeq (${EMBEDDED_BUILD},1) +# if we are embedding frameworks, don't install tclsh + rm -f "${INSTALL_ROOT}/${BINDIR}/${TCLSH}" + -rmdir -p "${INSTALL_ROOT}/${BINDIR}" 2>&- +else +# redo prebinding + cd ${INSTALL_ROOT}; \ + if [ ! -d usr/lib ]; then mkdir -p usr; ln -fs /usr/lib usr/; RM_USRLIB=1; fi; \ + if [ ! -d System ]; then ln -fs /System .; RM_SYSTEM=1; fi; \ + redo_prebinding -r . "./${BINDIR}/${TCLSH}"; \ + if [ -n "$${RM_USRLIB:-}" ]; then rm -f usr/lib; rmdir -p usr 2>&-; fi; \ + if [ -n "$${RM_SYSTEM:-}" ]; then rm -f System; fi +# install tclsh symbolic link + mkdir -p ${INSTALL_ROOT}/usr/bin && \ + ln -fs ${TCLSH} ${INSTALL_ROOT}/${BINDIR}/tclsh +ifeq (${BUILD_STYLE},Deployment) +# build html documentation + export DYLD_FRAMEWORK_PATH=${SYMROOT} && \ + ${MAKE} -C ${OBJ_DIR} html-tcl \ + DISTDIR=${INSTALL_ROOT}${DOCDIR} TCL_EXE=${SYMROOT}/${TCLSH} && \ + cd ${INSTALL_ROOT}${DOCDIR} && ln -fs contents.htm html/${PRODUCT_NAME}TOC.html && \ + rm -fr "${PRODUCT_NAME}" && mv -f html "${PRODUCT_NAME}" +endif +endif +endif +# write Info.plist file + @printf > ${INSTALL_ROOT}${INFOPLIST} '\ + \n\ + \n\ + \n\ + \n\ + CFBundleDevelopmentRegion\n\ + English\n\ + CFBundleExecutable\n\ + Tcl\n\ + CFBundleGetInfoString\n\ + Tcl Library ${PRODUCT_VERSION}, Copyright © 2003 Tcl Core Team.\n\ + MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright\ + © 2001-2002, Apple Computer, Inc.\n\ + CFBundleIdentifier\n\ + com.tcltk.tcllibrary\n\ + CFBundleInfoDictionaryVersion\n\ + 6.0\n\ + CFBundleName\n\ + Tcl Library ${PRODUCT_VERSION}\n\ + CFBundlePackageType\n\ + FMWK\n\ + CFBundleShortVersionString\n\ + ${PRODUCT_LONGVERSION}\n\ + CFBundleSignature\n\ + Tcl \n\ + CFBundleVersion\n\ + ${PRODUCT_LONGVERSION}\n\ + \n\ + \n' + +#------------------------------------------------------------------------------------------------------- + +.PHONY: ${meta} ${targets} ${PROJECT} build-${PROJECT} install-${PROJECT} \ + clean-${PROJECT} distclean-${PROJECT} + +#------------------------------------------------------------------------------------------------------- diff --git a/macosx/README b/macosx/README new file mode 100644 index 0000000..ced6d99 --- /dev/null +++ b/macosx/README @@ -0,0 +1,120 @@ +Tcl MacOSX README +----------------- + +RCS: @(#) $Id: README,v 1.1.2.1 2003/07/15 01:15:51 das Exp $ + +This is the README file for the Mac OS X native version of Tcl (framework build). + + +1. General +---------- + +- The tcl-mac mailing list on sourceforge is the canonical place for questions +specific to Tcl & Tk on Mac OS X: + http://lists.sourceforge.net/lists/listinfo/tcl-mac +(this page also has a link to searchable archives of the list, please check them +before asking on the list, many questions have already been answered). + +- For general tcl/tk questions, the newsgroup comp.lang.tcl is your best bet, +but also check the Tcl'ers Wiki for a wealth of information: + http://wiki.tcl.tk/ + +- The wiki has a page listing known bugs in Mac OS X Tcl/Tk (and other tips) + http://wiki.tcl.tk/MacOS%20X +as well as a page with info on building Tcl/Tk on Mac OS X + http://wiki.tcl.tk/Steps%20to%20build%20Tcl/Tk%208.4.0%20on%20MacOS%20X + +- You should report bugs to the sourceforge bug trackers as usual: + Tcl: https://sourceforge.net/tracker/?func=add&group_id=10894&atid=110894 + Tk: https://sourceforge.net/tracker/?func=add&group_id=12997&atid=112997 +please make sure that your report Tk specific bugs to the tktoolkit bug +tracker and not the tcl one. + + +2. Using Tcl on MacOSX +---------------------- + +- Mac OS X 10.1 (or higher) is required to run Tcl on MacOSX. + +- Tcl built on Mac OS X 10.2 or higher will not run on 10.1 due to missing +symbols in libSystem, however Tcl built on 10.1 will run on 10.2 (but without +prebinding and other optimizations). + +- Tcl extensions will be found in any of: + $HOME/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl + $HOME/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks + /System/Library/Frameworks (searched in that order). +Given a potential package directory $pkg, Tcl on OSX checks for the file +$pkg/Resources/Scripts/pkgIndex.tcl as well as the usual $pkg/pkgIndex.tcl. +This allows building extensions as frameworks with all script files contained +in the Resources/Scripts directory of the framework. + +- The Tcl framework contains documentation in html format in the +standard location for frameworks: + Tcl.framework/Resources/English.lproj/Documentation/Reference/Tcl +No manpages are installed by default. + +- the framework Tcl.framework can be placed in any of the system's standard +framework directories: + $HOME/Library/Frameworks /Library/Frameworks + /Network/Library/Frameworks /System/Library/Frameworks +and /usr/bin/tclsh will work. + +- the format of binary extensions expected by [load] is that of ordinary shared +libraries (.dylib) and not MachO bundles, at present loading of MachO bundles is +not supported. + + +3. Building Tcl.framework +------------------------- + +- Mac OS X 10.1.5 (or higher) is required to build Tcl on MacOSX. + +- Apple's Developer Tools CD needs to be installed (the version matching your OS +release, but no earlier than April 2002). This CD should have come with Mac OS X +retail or should be present as a disk image on new macs that came with OSX +preinstalled. It can also be downloaded from http://connect.apple.com (after you +register for free ADC membership). + +- Tcl is built as a Mac OS X framework via the Makefile in tcl/macosx, but can +also be built from Apple's ProjectBuilder IDE using the Tcl.pbproj project (which +calls through to the Makefile). + +- Unpack the tcl source release archive. + +- The following instructions assume the tcl source tree is named "tcl${ver}", +where ${ver} is a shell variable containing the tcl version number (for +example '8.4.2'). +Setup the shell variable as follows: + set ver="8.4.2" ;: if your shell is csh + ver="8.4.2" ;: if your shell is sh +The source tree will be named this way only if you are building from a release +archive, if you are building from CVS, the version numbers will be missing; so +set ${ver} to the empty string instead: + set ver="" ;: if your shell is csh + ver="" ;: if your shell is sh + +- If you're only interested in _building_ Tcl.framework and don't plan on doing +development with the ProjectBuilder projects, using the Makefile is easiest. +The following steps will build Tcl from the Terminal, assuming you are +located in the directory containing the tcl source tree: + make -C tcl${ver}/macosx +and the following will then install Tcl onto the root volume (admin password +required): + sudo make -C tcl${ver}/macosx install +if you don't have the admin password, you can install into your home directory, +instead by passing an INSTALL_ROOT argument to make: + make -C tcl${ver}/macosx install INSTALL_ROOT="${HOME}/" + +- The default Makefile targets will build _both_ debug and optimized versions of +the Tcl framework with the standard convention of naming the debug +library Tcl.framework/Tcl_debug. +This allows you to dynamically link to the debug libraries at runtime by setting + setenv DYLD_IMAGE_SUFFIX _debug +(c.f. man dyld for more details) + +If you only want to build and install the debug or optimized build, use the +'develop' or 'deploy' target variants of the Makefiles, respectively. +For example, to build and install only the optimized versions: + make -C tcl${ver}/macosx deploy + sudo make -C tcl${ver}/macosx install-deploy diff --git a/macosx/Tcl.pbproj/jingham.pbxuser b/macosx/Tcl.pbproj/jingham.pbxuser index d914578..10f0b57 100644 --- a/macosx/Tcl.pbproj/jingham.pbxuser +++ b/macosx/Tcl.pbproj/jingham.pbxuser @@ -1,405 +1,79 @@ // !$*UTF8*$! { - 005751AA02FB00930AC916F0 = { - fRef = 005751AB02FB00930AC916F0; - isa = PBXTextBookmark; - name = "DefaultsDoc.rtf: 30"; - rLen = 32; - rLoc = 2777; - rType = 0; - vrLen = 1334; - vrLoc = 2136; - }; - 005751AB02FB00930AC916F0 = { - isa = PBXFileReference; - name = DefaultsDoc.rtf; - path = "/Developer/Applications/Project Builder.app/Contents/Resources/DefaultsDoc.rtf"; - refType = 0; - }; 00E2F845016E82EB0ACA28DC = { activeBuildStyle = 00E2F847016E82EB0ACA28DC; - activeTarget = F50DC359017027D801DC9062; - addToTargets = ( - 00E2F84C016E8B780ACA28DC, - ); + activeExecutable = F9A61CCE04C2B5A8006F5A0B; + activeTarget = 00E2F84C016E8B780ACA28DC; breakpoints = ( ); + executables = ( + F9A61CCE04C2B5A8006F5A0B, + F973FC3204852E75006F146B, + ); perUserDictionary = { - PBXPerProjectTemplateStateSaveDate = 49920633; - "PBXTemplateGeometry-F5314676015831810DCA290F" = { - ContentSize = "{789, 551}"; - LeftSlideOut = { - Collapsed = NO; - Frame = "{{0, 23}, {789, 528}}"; - Split0 = { - ActiveTab = 2; - Collapsed = NO; - Frame = "{{0, 0}, {789, 528}}"; - Split0 = { - Frame = "{{0, 204}, {789, 324}}"; - }; - SplitCount = 1; - Tab0 = { - Debugger = { - Collapsed = NO; - Frame = "{{0, 0}, {952, 321}}"; - Split0 = { - Frame = "{{0, 24}, {952, 297}}"; - Split0 = { - Frame = "{{0, 0}, {468, 297}}"; - }; - Split1 = { - DebugVariablesTableConfiguration = ( - Name, - 123, - Value, - 85, - Summary, - 241.123, - ); - Frame = "{{477, 0}, {475, 297}}"; - }; - SplitCount = 2; - }; - SplitCount = 1; - Tab0 = { - Frame = "{{0, 0}, {100, 50}}"; - }; - Tab1 = { - Frame = "{{0, 0}, {100, 50}}"; - }; - TabCount = 2; - TabsVisible = YES; - }; - Frame = "{{0, 0}, {952, 321}}"; - LauncherConfigVersion = 7; - }; - Tab1 = { - Frame = "{{0, 0}, {781, 452}}"; - LauncherConfigVersion = 3; - Runner = { - Frame = "{{0, 0}, {781, 452}}"; - }; - }; - Tab2 = { - BuildMessageFrame = "{{0, 0}, {791, 191}}"; - BuildTranscriptFrame = "{{0, 200}, {791, 0}}"; - Frame = "{{0, 0}, {789, 198}}"; - }; - Tab3 = { - Frame = "{{0, 0}, {612, 295}}"; - }; - TabCount = 4; - TabsVisible = NO; - }; - SplitCount = 1; - Tab0 = { - Frame = "{{0, 0}, {300, 533}}"; - GroupTreeTableConfiguration = ( - TargetStatusColumn, - 18, - MainColumn, - 267, - ); - }; - Tab1 = { - ClassesFrame = "{{0, 0}, {280, 398}}"; - ClassesTreeTableConfiguration = ( - PBXBookColumnIdentifier, - 20, - PBXClassColumnIdentifier, - 237, - ); - Frame = "{{0, 0}, {278, 659}}"; - MembersFrame = "{{0, 407}, {280, 252}}"; - MembersTreeTableConfiguration = ( - PBXBookColumnIdentifier, - 20, - PBXMethodColumnIdentifier, - 236, - ); - }; - Tab2 = { - Frame = "{{0, 0}, {200, 100}}"; - }; - Tab3 = { - Frame = "{{0, 0}, {200, 100}}"; - TargetTableConfiguration = ( - ActiveObject, - 16, - ObjectNames, - 202.296, - ); - }; - Tab4 = { - BreakpointsTreeTableConfiguration = ( - breakpointColumn, - 197, - enabledColumn, - 31, - ); - Frame = "{{0, 0}, {250, 100}}"; - }; - TabCount = 5; - TabsVisible = NO; - }; - StatusViewVisible = YES; - Template = F5314676015831810DCA290F; - ToolbarVisible = YES; - WindowLocation = "{7, 385}"; - }; - PBXWorkspaceContents = ( - { - LeftSlideOut = { - Split0 = { - Split0 = { - NavContent0 = { - bookmark = 005751AA02FB00930AC916F0; - history = ( - F5BFE56402F8B7A901DC9062, - F5BFE56702F8B7A901DC9062, - 00F4D9CE02F9BA490AC916F0, - ); - prevStack = ( - F5BFE56A02F8B7A901DC9062, - ); - }; - NavCount = 1; - NavGeometry0 = { - Frame = "{{0, 0}, {571, 548}}"; - NavBarVisible = YES; - }; - }; - SplitCount = 1; - Tab0 = { - Debugger = { - Split0 = { - SplitCount = 2; - }; - SplitCount = 1; - TabCount = 2; - }; - LauncherConfigVersion = 7; - }; - Tab1 = { - LauncherConfigVersion = 3; - Runner = { - }; - }; - TabCount = 4; - }; - SplitCount = 1; - Tab1 = { - OptionsSetName = "Default Options"; - }; - TabCount = 5; - }; - }, - ); - PBXWorkspaceGeometries = ( - { - ContentSize = "{855, 571}"; - LeftSlideOut = { - ActiveTab = 0; - Collapsed = NO; - Frame = "{{0, 23}, {855, 548}}"; - Split0 = { - Collapsed = NO; - Frame = "{{284, 0}, {571, 548}}"; - Split0 = { - Frame = "{{0, 0}, {571, 548}}"; - }; - SplitCount = 1; - Tab0 = { - Debugger = { - Collapsed = NO; - Frame = "{{0, 0}, {681, 289}}"; - Split0 = { - Frame = "{{0, 24}, {681, 265}}"; - Split0 = { - Frame = "{{0, 0}, {333, 265}}"; - }; - Split1 = { - DebugVariablesTableConfiguration = ( - Name, - 82.80298, - Value, - 104.074, - Summary, - 126.123, - ); - Frame = "{{342, 0}, {339, 265}}"; - }; - SplitCount = 2; - }; - SplitCount = 1; - Tab0 = { - Frame = "{{0, 0}, {100, 50}}"; - }; - Tab1 = { - Frame = "{{0, 0}, {100, 50}}"; - }; - TabCount = 2; - TabsVisible = YES; - }; - Frame = "{{0, 0}, {681, 289}}"; - LauncherConfigVersion = 7; - }; - Tab1 = { - Frame = "{{0, 0}, {681, 120}}"; - LauncherConfigVersion = 3; - Runner = { - Frame = "{{0, 0}, {681, 120}}"; - }; - }; - Tab2 = { - BuildMessageFrame = "{{0, 0}, {683, 127}}"; - BuildTranscriptFrame = "{{0, 136}, {683, 100}}"; - Frame = "{{0, 0}, {681, 234}}"; - }; - Tab3 = { - Frame = "{{0, 0}, {681, 238}}"; - }; - TabCount = 4; - TabsVisible = NO; - }; - SplitCount = 1; - Tab0 = { - Frame = "{{0, 0}, {260, 548}}"; - GroupTreeTableConfiguration = ( - SCMStatusColumn, - 22, - TargetStatusColumn, - 18, - MainColumn, - 205, - ); - }; - Tab1 = { - ClassesFrame = "{{0, 0}, {250, 333}}"; - ClassesTreeTableConfiguration = ( - PBXBookColumnIdentifier, - 20, - PBXClassColumnIdentifier, - 207, - ); - Frame = "{{0, 0}, {248, 554}}"; - MembersFrame = "{{0, 342}, {250, 212}}"; - MembersTreeTableConfiguration = ( - PBXBookColumnIdentifier, - 20, - PBXMethodColumnIdentifier, - 206, - ); - }; - Tab2 = { - Frame = "{{0, 0}, {217, 554}}"; - }; - Tab3 = { - Frame = "{{0, 0}, {239, 548}}"; - TargetTableConfiguration = ( - ActiveObject, - 16, - ObjectNames, - 206, - ); - }; - Tab4 = { - BreakpointsTreeTableConfiguration = ( - breakpointColumn, - 197, - enabledColumn, - 31, - ); - Frame = "{{0, 0}, {250, 554}}"; - }; - TabCount = 5; - TabsVisible = YES; - }; - StatusViewVisible = YES; - Template = 64ABBB4501FA494900185B06; - ToolbarVisible = YES; - WindowLocation = "{77, 330}"; - }, - ); - PBXWorkspaceStateSaveDate = 49920633; - }; - perUserProjectItems = { - 005751AA02FB00930AC916F0 = 005751AA02FB00930AC916F0; - 00F4D9CE02F9BA490AC916F0 = 00F4D9CE02F9BA490AC916F0; - F5BFE56402F8B7A901DC9062 = F5BFE56402F8B7A901DC9062; - F5BFE56702F8B7A901DC9062 = F5BFE56702F8B7A901DC9062; - F5BFE56A02F8B7A901DC9062 = F5BFE56A02F8B7A901DC9062; + PBXPerProjectTemplateStateSaveDate = 79872121; }; projectwideBuildSettings = { - OBJROOT = "/Volumes/TheCloset/jingham/tcl-tk/source/tcl-merge/Objects"; - SYMROOT = "/Volumes/TheCloset/jingham/tcl-tk/source/tcl-merge/Products"; + SYMROOT = "${SRCROOT}/../../build/tcl"; }; wantsIndex = 1; - wantsSCM = 1; - }; - 00E2F84B016E8A830ACA28DC = { - activeExec = 0; + wantsSCM = -1; }; 00E2F84C016E8B780ACA28DC = { activeExec = 0; }; - 00E2F84E016E92110ACA28DC = { - activeExec = 0; - }; - 00F4D9CE02F9BA490AC916F0 = { - fRef = 00F4D9CF02F9BA4A0AC916F0; - isa = PBXTextBookmark; - name = "DefaultsDoc.rtf: 30"; - rLen = 32; - rLoc = 2777; - rType = 0; - vrLen = 1334; - vrLoc = 2136; + F973FC3204852E75006F146B = { + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + configStateDict = { + }; + debuggerPlugin = GDBDebugging; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + isa = PBXExecutable; + launchableReference = F9A61CCD04C2B5A5006F5A0B; + name = tclsh8.4; + shlibInfoDictList = ( + ); + sourceDirectories = ( + ); }; - 00F4D9CF02F9BA4A0AC916F0 = { + F9A61CCD04C2B5A5006F5A0B = { isa = PBXFileReference; - name = DefaultsDoc.rtf; - path = "/Developer/Applications/Project Builder.app/Contents/Resources/DefaultsDoc.rtf"; - refType = 0; - }; - F50DC359017027D801DC9062 = { - activeExec = 0; - }; - F5BFE56402F8B7A901DC9062 = { - fRef = F5BFE56E02F8B7AA01DC9062; - isa = PBXTextBookmark; - name = "stat.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1666; - vrLoc = 3618; - }; - F5BFE56702F8B7A901DC9062 = { - fRef = F5F24F6E016ECAA401DC9062; - isa = PBXTextBookmark; - name = "tcl.h: 397"; - rLen = 6; - rLoc = 11199; - rType = 0; - vrLen = 1293; - vrLoc = 10644; + name = tclsh8.4; + path = ../../build/tcl/tclsh8.4; + refType = 4; }; - F5BFE56A02F8B7A901DC9062 = { - fRef = F5F24F6E016ECAA401DC9062; - isa = PBXTextBookmark; - name = "tcl.h: 397"; - rLen = 6; - rLoc = 11199; - rType = 0; - vrLen = 1293; - vrLoc = 10644; + F9A61CCE04C2B5A8006F5A0B = { + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + configStateDict = { + }; + debuggerPlugin = GDBDebugging; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + isa = PBXExecutable; + launchableReference = F9A61CD104C2B5B4006F5A0B; + name = tcltest; + shlibInfoDictList = ( + ); + sourceDirectories = ( + ); }; - F5BFE56E02F8B7AA01DC9062 = { + F9A61CD104C2B5B4006F5A0B = { isa = PBXFileReference; - name = stat.h; - path = /usr/include/sys/stat.h; - refType = 0; + name = tcltest; + path = ../../build/tcl/tcltest; + refType = 4; }; } diff --git a/macosx/Tcl.pbproj/project.pbxproj b/macosx/Tcl.pbproj/project.pbxproj index 9f9fa9a..4d2b2ca 100644 --- a/macosx/Tcl.pbproj/project.pbxproj +++ b/macosx/Tcl.pbproj/project.pbxproj @@ -5,32 +5,6 @@ }; objectVersion = 38; objects = { - 00530A0D0173C8270ACA28DC = { - buildActionMask = 12; - files = ( - ); - generatedFileNames = ( - ); - isa = PBXShellScriptBuildPhase; - neededFileNames = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# install to ${INSTALL_ROOT} with optional stripping\ncd ${TEMP_DIR}/..\nif test \"${INSTALL_STRIP}\" = \"YES\"; then\nexport INSTALL_PROGRAM='${INSTALL} ${INSTALL_STRIP_PROGRAM}'\nexport INSTALL_LIBRARY='${INSTALL} ${INSTALL_STRIP_LIBRARY}'\nelse\nexport INSTALL_PROGRAM='${INSTALL}'\nexport INSTALL_LIBRARY='${INSTALL}'\nfi\nexport CPPROG='cp -p'\ngnumake install-binaries install-libraries TCL_LIBRARY=\"@TCL_IN_FRAMEWORK@\" INSTALL_ROOT=\"${INSTALL_ROOT}\" SCRIPT_INSTALL_DIR=\"${INSTALL_ROOT}${LIBDIR}/Resources/Scripts\" INSTALL_PROGRAM=\"${INSTALL_PROGRAM}\" INSTALL_LIBRARY=\"${INSTALL_LIBRARY}\""; - }; - 00530A0E0173CC960ACA28DC = { - buildActionMask = 12; - files = ( - ); - generatedFileNames = ( - ); - isa = PBXShellScriptBuildPhase; - neededFileNames = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# fixup Framework structure\ncd \"${INSTALL_ROOT}${LIBDIR}\"\nln -fs Versions/Current/Headers ../..\nln -fs \"Versions/Current/tclConfig.sh\" ../..\nln -fs `ls libtclstub* | sed -e \"s|.*|Versions/${FRAMEWORK_VERSION}/&|\"` ../..\nif [ \"${BUILD_STYLE}\" = \"Development\" ]; then\n\t# keep copy of debug library around, so that\n\t# Deployment build can be installed on top\n\t# of Development build without overwriting\n\t# the debug library\n\tcp -fp \"${PRODUCT_NAME}\" \"${PRODUCT_NAME}_debug\"\n\tln -fs \"Versions/Current/${PRODUCT_NAME}_debug\" ../..\nfi"; - }; 00E2F845016E82EB0ACA28DC = { buildStyles = ( 00E2F847016E82EB0ACA28DC, @@ -42,8 +16,6 @@ productRefGroup = 00E2F84A016E8A830ACA28DC; projectDirPath = ""; targets = ( - 00E2F84E016E92110ACA28DC, - 00E2F84B016E8A830ACA28DC, 00E2F84C016E8B780ACA28DC, ); }; @@ -65,9 +37,7 @@ buildRules = ( ); buildSettings = { - EXTRA_CONFIGURE_FLAGS = "--enable-symbols"; - INSTALL_STRIP = NO; - TEMP_DIR = "${OBJROOT}/Development.build/$(PROJECT_NAME).build/$(TARGET_NAME).build"; + MAKE_TARGET = develop; }; isa = PBXBuildStyle; name = Development; @@ -76,15 +46,14 @@ buildRules = ( ); buildSettings = { - INSTALL_STRIP = YES; - TEMP_DIR = "${OBJROOT}/Deployment.build/$(PROJECT_NAME).build/$(TARGET_NAME).build"; + MAKE_TARGET = deploy; }; isa = PBXBuildStyle; name = Deployment; }; 00E2F84A016E8A830ACA28DC = { children = ( - 00E2F84D016E92110ACA28DC, + F9A61C9D04C2B4E3006F5A0B, F53ACC5C031D9D11016F146B, F53ACC73031DA405016F146B, ); @@ -92,134 +61,31 @@ name = Products; refType = 4; }; - 00E2F84B016E8A830ACA28DC = { - buildArgumentsString = "-c \"if [ \\\"${ACTION}\\\" != \\\"clean\\\" ]; then if [ -z \\\"`find . ! \\\\( -path './*/*' -prune \\\\) -name Makefile -newer \\\"${SRCROOT}/../unix/configure\\\"`\\\" ]; then \\\"${SRCROOT}/../unix/configure\\\" --prefix=/usr --mandir=/usr/share/man --libdir=\\\"${LIBDIR}\\\" --includedir=\\\"${LIBDIR}/Headers\\\" --enable-threads --enable-framework ${EXTRA_CONFIGURE_FLAGS}; mkdir -p Tcl.framework; ln -fs ../Tcl Tcl.framework/Tcl; fi; fi\""; - buildPhases = ( - ); - buildSettings = { - EXTRA_CONFIGURE_FLAGS = ""; - FRAMEWORK_VERSION = 8.4; - INSTALL_PATH = /Library/Frameworks; - LIBDIR = "${INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${FRAMEWORK_VERSION}"; - PRODUCT_NAME = Tcl; - }; - buildToolPath = /bin/sh; - buildWorkingDirectory = "${TEMP_DIR}/.."; - dependencies = ( - ); - isa = PBXLegacyTarget; - name = Configure; - passBuildSettingsInEnvironment = 1; - productName = Configure; - settingsToExpand = 6; - settingsToPassInEnvironment = 287; - settingsToPassOnCommandLine = 280; - }; 00E2F84C016E8B780ACA28DC = { - buildArgumentsString = "-c \"if [ \\\"${ACTION}\\\" != \\\"clean\\\" ]; then gnumake tclsh tcltest TCL_LIBRARY=\\\"@TCL_IN_FRAMEWORK@\\\" TCL_PACKAGE_PATH=\\\"~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks\\\" DYLIB_INSTALL_DIR=\\\"${DYLIB_INSTALL_DIR}\\\" ${EXTRA_MAKE_FLAGS}; else gnumake distclean; fi\""; + buildArgumentsString = "-c \"if [ \\\"${ACTION}\\\" != \\\"clean\\\" ]; then if [ \\\"${ACTION}\\\" = \\\"install\\\" ]; then MAKE_ACTION=\"install-\"; fi; else MAKE_ACTION=\"distclean-\"; fi; gnumake \\${MAKE_ACTION:-}${MAKE_TARGET}"; buildPhases = ( ); buildSettings = { - DYLIB_INSTALL_DIR = "${DYLIB_INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${FRAMEWORK_VERSION}"; - DYLIB_INSTALL_PATH = "${INSTALL_PATH}"; - EXTRA_MAKE_FLAGS = ""; - FRAMEWORK_VERSION = 8.4; + EXTRA_CONFIGURE_ARGS = ""; + EXTRA_MAKE_ARGS = ""; INSTALL_PATH = /Library/Frameworks; + INSTALL_ROOT = "${DSTROOT}"; + PREFIX = /usr; PRODUCT_NAME = Tcl; + SYMROOT = "${SRCROOT}/../../build/tcl"; }; buildToolPath = /bin/sh; - buildWorkingDirectory = "${TEMP_DIR}/.."; + buildWorkingDirectory = "${SRCROOT}"; dependencies = ( - F5877EB5031F7997016F146B, ); isa = PBXLegacyTarget; - name = Make; + name = Tcl; passBuildSettingsInEnvironment = 1; - productName = Make; + productName = Tcl; settingsToExpand = 6; settingsToPassInEnvironment = 287; settingsToPassOnCommandLine = 280; }; - 00E2F84D016E92110ACA28DC = { - isa = PBXFrameworkReference; - path = Tcl.framework; - refType = 3; - }; - 00E2F84E016E92110ACA28DC = { - buildPhases = ( - F5877FB6031F97AF016F146B, - F50DC36A01703B7301DC9062, - F50DC367017033D701DC9062, - F50DC3680170344801DC9062, - 00E2F84F016E92110ACA28DC, - F5BE9BBF02FB5974016F146B, - 00530A0D0173C8270ACA28DC, - 00530A0E0173CC960ACA28DC, - F5877FBB031FA90A016F146B, - F59AE5E3017AC67A01DC9062, - ); - buildSettings = { - DSTROOT = "${TEMP_DIR}"; - EXTRA_MAKE_INSTALL_FLAGS = ""; - FRAMEWORK_VERSION = 8.4; - INSTALL_PATH = /Library/Frameworks; - LIBDIR = "${INSTALL_PATH}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}/Versions/${FRAMEWORK_VERSION}"; - PRODUCT_NAME = Tcl; - WRAPPER_EXTENSION = framework; - }; - dependencies = ( - F5877EB6031F79A4016F146B, - ); - isa = PBXFrameworkTarget; - name = Tcl; - productInstallPath = /Library/Frameworks; - productName = TclLibrary; - productReference = 00E2F84D016E92110ACA28DC; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - Tcl - CFBundleGetInfoString - Tcl Library 8.4, Copyright © 2003 Tcl Core Team. -MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright © 2001-2002, Apple Computer, Inc. - CFBundleIconFile - - CFBundleIdentifier - com.tcltk.tcllibrary - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Tcl Library 8.4 - CFBundlePackageType - FMWK - CFBundleShortVersionString - 8.4.3 - CFBundleSignature - Tcl - CFBundleVersion - 8.4.3 - - -"; - }; - 00E2F84F016E92110ACA28DC = { - buildActionMask = 2147483647; - files = ( - F59D846A0338FAA4016F146B, - F59D846B0338FAA4016F146B, - F59D846E0338FAA4016F146B, - F59D84620338F9CA016F146B, - F59D846C0338FAA4016F146B, - F59D846D0338FAA4016F146B, - F5C093BB0342F7D6016F146B, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; 00E2F854016E922C0ACA28DC = { children = ( F5F24F87016ECAFC01DC9062, @@ -409,33 +275,6 @@ MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright //F52 //F53 //F54 - F50DC367017033D701DC9062 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - F50DC3680170344801DC9062 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - F50DC36A01703B7301DC9062 = { - buildActionMask = 2147483647; - files = ( - F59D84630338F9EC016F146B, - F59D84640338F9ED016F146B, - F59D84670338FA8B016F146B, - F59D84680338FA8D016F146B, - F59D84690338FA90016F146B, - F5C093BA0342F7B4016F146B, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; F5306C9F03CAC979016F146B = { children = ( F5306CA303CAC9DE016F146B, @@ -476,171 +315,21 @@ MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright F53ACC5C031D9D11016F146B = { isa = PBXExecutableFileReference; name = tclsh8.4; - path = ../../build/tclsh8.4; + path = ../../build/tcl/tclsh8.4; refType = 2; }; F53ACC73031DA405016F146B = { isa = PBXExecutableFileReference; name = tcltest; - path = ../../build/tcltest; + path = ../../build/tcl/tcltest; refType = 2; }; - F5877EB5031F7997016F146B = { - isa = PBXTargetDependency; - target = 00E2F84B016E8A830ACA28DC; - }; - F5877EB6031F79A4016F146B = { - isa = PBXTargetDependency; - target = 00E2F84C016E8B780ACA28DC; - }; - F5877FB6031F97AF016F146B = { - buildActionMask = 8; - files = ( - ); - generatedFileNames = ( - ); - isa = PBXShellScriptBuildPhase; - neededFileNames = ( - ); - runOnlyForDeploymentPostprocessing = 1; - shellPath = /bin/sh; - shellScript = "# ensure we can overwrite a previous install\nif [ -d \"${INSTALL_ROOT}${INSTALL_PATH}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}\" ]; then\n chmod -RH u+w \"${INSTALL_ROOT}${INSTALL_PATH}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}\"\nfi"; - }; - F5877FBB031FA90A016F146B = { - buildActionMask = 8; - files = ( - ); - generatedFileNames = ( - ); - isa = PBXShellScriptBuildPhase; - neededFileNames = ( - ); - runOnlyForDeploymentPostprocessing = 1; - shellPath = /bin/sh; - shellScript = "if [ -n \"${EMBEDDED_BUILD:-}\" ]; then\n# if we are embedding frameworks, don't install tclsh\nrm -f \"${INSTALL_ROOT}/usr/bin/tclsh${FRAMEWORK_VERSION}\"\nrmdir -p \"${INSTALL_ROOT}/usr/bin\" 2>&-\ntrue\nelse\n# redo prebinding\ncd \"${INSTALL_ROOT}\"\nif [ ! -d usr/lib ]; then mkdir -p usr; ln -fs /usr/lib usr/; RM_USRLIB=1; fi\nif [ ! -d System ]; then ln -fs /System .; RM_SYSTEM=1; fi\nredo_prebinding -r . \"./usr/bin/tclsh${FRAMEWORK_VERSION}\"\nif [ -n \"${RM_USRLIB:-}\" ]; then rm -f usr/lib; rmdir -p usr 2>&-; fi\nif [ -n \"${RM_SYSTEM:-}\" ]; then rm -f System; fi\n# install tclsh symbolic link\nmkdir -p \"${INSTALL_ROOT}/usr/bin\"\nln -fs \"tclsh${FRAMEWORK_VERSION}\" \"${INSTALL_ROOT}/usr/bin/tclsh\"\nfi"; - }; - F59AE5E3017AC67A01DC9062 = { - buildActionMask = 8; - files = ( - ); - generatedFileNames = ( - ); - isa = PBXShellScriptBuildPhase; - neededFileNames = ( - ); - runOnlyForDeploymentPostprocessing = 1; - shellPath = /bin/sh; - shellScript = "if [ -z \"${EMBEDDED_BUILD:-}\" ]; then\n# build html documentation\nif [ \"${BUILD_STYLE}\" = \"Deployment\" ]; then\n cd \"${TEMP_DIR}/..\"\n export DYLD_FRAMEWORK_PATH=${SYMROOT}\n gnumake html DISTDIR=\"${INSTALL_ROOT}${LIBDIR}/Resources/English.lproj/Documentation/Reference\"\n cd \"${INSTALL_ROOT}${LIBDIR}/Resources/English.lproj/Documentation/Reference\"\n ln -fs contents.htm html/TclTOC.html\n rm -fr \"${PRODUCT_NAME}\"; mv -f html \"${PRODUCT_NAME}\"\nfi\nfi"; - }; - F59D84620338F9CA016F146B = { - fileRef = F5F24F72016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Private, - ); - }; - }; - F59D84630338F9EC016F146B = { - fileRef = F5F24F73016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - }; - }; - F59D84640338F9ED016F146B = { - fileRef = F5F24F74016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - }; - }; - F59D84670338FA8B016F146B = { - fileRef = F5F24F6E016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - }; - }; - F59D84680338FA8D016F146B = { - fileRef = F5F24F70016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - }; - }; - F59D84690338FA90016F146B = { - fileRef = F5F24F77016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - }; - }; - F59D846A0338FAA4016F146B = { - fileRef = F5F24F6E016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - }; - }; - F59D846B0338FAA4016F146B = { - fileRef = F5F24F70016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - }; - }; - F59D846C0338FAA4016F146B = { - fileRef = F5F24F73016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Private, - ); - }; - }; - F59D846D0338FAA4016F146B = { - fileRef = F5F24F74016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Private, - ); - }; - }; - F59D846E0338FAA4016F146B = { - fileRef = F5F24F77016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - }; - }; F5A1836F018242A501DC9062 = { fileEncoding = 5; isa = PBXFileReference; path = tclMacOSXBundle.c; refType = 2; }; - F5BE9BBF02FB5974016F146B = { - buildActionMask = 2147483647; - files = ( - ); - generatedFileNames = ( - ); - isa = PBXShellScriptBuildPhase; - neededFileNames = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# symolic link hackery to trick\n# 'make install INSTALL_ROOT=${TEMP_DIR}'\n# into building Tcl.framework and tclsh in ${SYMROOT}\ncd \"${TEMP_DIR}\"\nmkdir -p Library\nmkdir -p usr\nrm -f Library/Frameworks; ln -fs \"${SYMROOT}\" Library/Frameworks\nrm -f usr/bin; ln -fs \"${SYMROOT}\" usr/bin\nln -fs \"${TEMP_DIR}/../tcltest\" \"${SYMROOT}\""; - }; - F5C093BA0342F7B4016F146B = { - fileRef = F5F24F76016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - }; - }; - F5C093BB0342F7D6016F146B = { - fileRef = F5F24F76016ECAA401DC9062; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Private, - ); - }; - }; F5C88655017D604601DC9062 = { children = ( F5C88656017D604601DC9062, @@ -1560,6 +1249,22 @@ MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright path = ../library/word.tcl; refType = 2; }; +//F50 +//F51 +//F52 +//F53 +//F54 +//F90 +//F91 +//F92 +//F93 +//F94 + F9A61C9D04C2B4E3006F5A0B = { + isa = PBXFrameworkReference; + name = Tcl.framework; + path = ../../build/tcl/Tcl.framework; + refType = 2; + }; }; rootObject = 00E2F845016E82EB0ACA28DC; } diff --git a/tools/tcltk-man2html.tcl b/tools/tcltk-man2html.tcl index 42f0e58..a4babde 100755 --- a/tools/tcltk-man2html.tcl +++ b/tools/tcltk-man2html.tcl @@ -65,20 +65,22 @@ package require Tcl 8.4 # Oct 24, 1997 - moved from 8.0b1 to 8.0 release # -set Version "0.31" +set Version "0.32" proc parse_command_line {} { global argv Version # These variables determine where the man pages come from and where # the converted pages go to. - global tcltkdir tkdir tcldir webdir + global tcltkdir tkdir tcldir webdir build_tcl build_tk # Set defaults based on original code. set tcltkdir ../.. set tkdir {} set tcldir {} set webdir ../html + set build_tcl 0 + set build_tk 0 # Handle arguments a la GNU: # --version @@ -99,6 +101,8 @@ proc parse_command_line {} { puts " --version print version number, then exit" puts " --srcdir=DIR find tcl and tk source below DIR" puts " --htmldir=DIR put generated HTML in DIR" + puts " --tcl build tcl help" + puts " --tk build tk help" exit 0 } @@ -112,6 +116,14 @@ proc parse_command_line {} { set webdir [string range $option 10 end] } + --tcl { + set build_tcl 1 + } + + --tk { + set build_tk 1 + } + default { puts stderr "tcltk-man-html: unrecognized option -- `$option'" exit 1 @@ -119,6 +131,9 @@ proc parse_command_line {} { } } + if {!$build_tcl && !$build_tk} {set build_tcl 1; set build_tk 1} + + if {$build_tcl} { # Find Tcl. set tcldir [lindex [lsort [glob -nocomplain -tails -type d \ -directory $tcltkdir {tcl{,[8-9].[0-9]{,.[0-9]}}}]] end] @@ -127,7 +142,9 @@ proc parse_command_line {} { exit 1 } puts "using Tcl source directory $tcldir" + } + if {$build_tk} { # Find Tk. set tkdir [lindex [lsort [glob -nocomplain -tails -type d \ -directory $tcltkdir {tk{,[8-9].[0-9]{,.[0-9]}}}]] end] @@ -136,10 +153,15 @@ proc parse_command_line {} { exit 1 } puts "using Tk source directory $tkdir" + } # the title for the man pages overall global overall_title - set overall_title "[capitalize $tcldir]/[capitalize $tkdir] Manual" + set overall_title "" + if {$build_tcl} {append overall_title "[capitalize $tcldir]"} + if {$build_tcl && $build_tk} {append overall_title "/"} + if {$build_tk} {append overall_title "[capitalize $tkdir]"} + append overall_title " Manual" } proc capitalize {string} { @@ -656,6 +678,7 @@ proc cross-reference {ref} { foreach name {array file history info interp string trace after clipboard grab image option pack place selection tk tkwait update winfo wm} { if {[regexp "^$name \[a-z0-9]*\$" $lref] && \ + [info exists manual(name-$name)] && \ [string compare $manual(tail) "$name.n"]} { return "$ref" } @@ -1265,7 +1288,7 @@ proc makedirhier {dir} { ## specified by html. ## proc make-man-pages {html args} { - global env manual overall_title + global env manual overall_title tcltkdesc makedirhier $html set manual(short-toc-n) 1 set manual(short-toc-fp) [open $html/contents.htm w] @@ -1273,6 +1296,7 @@ proc make-man-pages {html args} { puts $manual(short-toc-fp) "

$overall_title


" set manual(merge-copyrights) {} foreach arg $args { + if {$arg == ""} {continue} set manual(wing-glob) [lindex $arg 0] set manual(wing-name) [lindex $arg 1] set manual(wing-file) [lindex $arg 2] @@ -1558,15 +1582,15 @@ proc make-man-pages {html args} { set keys [lsort -command strcasecmp [array names manual keyword-*]] makedirhier $html/Keywords catch {eval file delete -- [glob $html/Keywords/*]} - puts $manual(short-toc-fp) {
Keywords
The keywords from the Tcl/Tk man pages.} + puts $manual(short-toc-fp) "
Keywords
The keywords from the $tcltkdesc man pages." set keyfp [open $html/Keywords/contents.htm w] - puts $keyfp "Tcl/Tk Keywords" - puts $keyfp "

Tcl/Tk Keywords


" + puts $keyfp "$tcltkdesc Keywords" + puts $keyfp "

$tcltkdesc Keywords


" foreach a {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} { puts $keyfp "$a" set afp [open $html/Keywords/$a.htm w] - puts $afp "Tcl/Tk Keywords - $a" - puts $afp "

Tcl/Tk Keywords - $a


" + puts $afp "$tcltkdesc Keywords - $a" + puts $afp "

$tcltkdesc Keywords - $a


" foreach b {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} { puts $afp "$b" } @@ -1657,22 +1681,27 @@ proc make-man-pages {html args} { return {} } -set usercmddesc {The interpreters which implement Tcl and Tk.} +parse_command_line + +set tcltkdesc ""; set cmdesc ""; set appdir "" +if {$build_tcl} {append tcltkdesc "Tcl"; append cmdesc "Tcl"; append appdir "$tcldir"} +if {$build_tcl && $build_tk} {append tcltkdesc "/"; append cmdesc " and "; append appdir ","} +if {$build_tk} {append tcltkdesc "Tk"; append cmdesc "Tk"; append appdir "$tkdir"} + +set usercmddesc "The interpreters which implement $cmdesc." set tclcmddesc {The commands which the tclsh interpreter implements.} set tkcmddesc {The additional commands which the wish interpreter implements.} set tcllibdesc {The C functions which a Tcl extended C program may use.} set tklibdesc {The additional C functions which a Tk extended C program may use.} -parse_command_line - if {1} { if {[catch { make-man-pages $webdir \ - "$tcltkdir/{$tkdir,$tcldir}/doc/*.1 {Tcl/Tk Applications} UserCmd {$usercmddesc}" \ - "$tcltkdir/$tcldir/doc/*.n {Tcl Commands} TclCmd {$tclcmddesc}" \ - "$tcltkdir/$tkdir/doc/*.n {Tk Commands} TkCmd {$tkcmddesc}" \ - "$tcltkdir/$tcldir/doc/*.3 {Tcl Library} TclLib {$tcllibdesc}" \ - "$tcltkdir/$tkdir/doc/*.3 {Tk Library} TkLib {$tklibdesc}" + "$tcltkdir/{$appdir}/doc/*.1 \"$tcltkdesc Applications\" UserCmd {$usercmddesc}" \ + [expr {$build_tcl ? "$tcltkdir/$tcldir/doc/*.n {Tcl Commands} TclCmd {$tclcmddesc}" : ""}] \ + [expr {$build_tk ? "$tcltkdir/$tkdir/doc/*.n {Tk Commands} TkCmd {$tkcmddesc}" : ""}] \ + [expr {$build_tcl ? "$tcltkdir/$tcldir/doc/*.3 {Tcl Library} TclLib {$tcllibdesc}" : ""}] \ + [expr {$build_tk ? "$tcltkdir/$tkdir/doc/*.3 {Tk Library} TkLib {$tklibdesc}" : ""}] } error]} { puts $error\n$errorInfo } diff --git a/unix/Makefile.in b/unix/Makefile.in index 9afd3b5..f9853a8 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.1 2003/05/20 17:26:26 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.2 2003/07/15 01:15:51 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1343,9 +1343,12 @@ allpatch: dist # TOOL_DIR. # -html: +html-tcl: EXTRA_HTML_ARGS=--tcl +html-tk: EXTRA_HTML_ARGS=--tk + +html html-tcl html-tk: $(TCL_EXE) $(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(DISTDIR)/html \ - --srcdir=$(TOP_DIR)/.. + --srcdir=$(TOP_DIR)/.. $(EXTRA_HTML_ARGS) # # Target to create a Macintosh version of the distribution. This will -- cgit v0.12 From 8dd3ddd4e2847e9b1e950a02bc5edcd5313dc76a Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 15 Jul 2003 15:44:51 +0000 Subject: Fixed confusing error message. [Bug 771539] --- ChangeLog | 5 +++++ generic/tclCmdIL.c | 4 ++-- tests/cmdIL.test | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 53fdacc..36983de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-15 Donal K. Fellows + + * generic/tclCmdIL.c (SortCompare): Cleared up confusing error + message. [Bug 771539] + 2003-07-15 Daniel Steffen * macosx/Makefile: Rewrote buildsystem for Mac OS X framework build diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 48ddefb..d6dbccc 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.1 2003/04/16 23:31:43 dgp Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.2 2003/07/15 15:44:52 dkf Exp $ */ #include "tclInt.h" @@ -3699,7 +3699,7 @@ SortCompare(objPtr1, objPtr2, infoPtr) Tcl_GetObjResult(infoPtr->interp), &order) != TCL_OK) { Tcl_ResetResult(infoPtr->interp); Tcl_AppendToObj(Tcl_GetObjResult(infoPtr->interp), - "-compare command returned non-numeric result", -1); + "-compare command returned non-integer result", -1); infoPtr->resultCode = TCL_ERROR; return order; } diff --git a/tests/cmdIL.test b/tests/cmdIL.test index 694abbd..6376a12 100644 --- a/tests/cmdIL.test +++ b/tests/cmdIL.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: cmdIL.test,v 1.14 2001/09/28 15:32:17 dkf Exp $ +# RCS: @(#) $Id: cmdIL.test,v 1.14.6.1 2003/07/15 15:44:52 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -207,7 +207,7 @@ test cmdIL-3.17 {SortCompare procedure, -command option, non-integer result} { return foow } list [catch {lsort -command cmp {48 6}} msg] $msg -} {1 {-compare command returned non-numeric result}} +} {1 {-compare command returned non-integer result}} test cmdIL-3.18 {SortCompare procedure, -command option} { proc cmp {a b} { expr {$b - $a} -- cgit v0.12 From 15a36c2b44761be8ef9d533a938f41d2c7748ad5 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 15 Jul 2003 20:51:48 +0000 Subject: * generic/tclCompCmds.c (TclCompileIfCmd): Prior fix of Bug 711371 on 2003-04-07 introduced a buffer overflow. Corrected. [Bug 771613] --- ChangeLog | 5 +++++ generic/tclCompCmds.c | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 36983de..cbda2c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-15 Don Porter + + * generic/tclCompCmds.c (TclCompileIfCmd): Prior fix of Bug 711371 + on 2003-04-07 introduced a buffer overflow. Corrected. [Bug 771613] + 2003-07-15 Donal K. Fellows * generic/tclCmdIL.c (SortCompare): Cleared up confusing error diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 644b807..42b8448 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.1 2003/04/07 20:03:05 dgp Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.2 2003/07/15 20:51:49 dgp Exp $ */ #include "tclInt.h" @@ -1197,7 +1197,7 @@ TclCompileIfCmd(interp, parsePtr, envPtr) if (wordIdx >= numWords) { sprintf(buffer, "wrong # args: no expression after \"%.*s\" argument", - numBytes, word); + (numBytes > 50 ? 50 : numBytes), word); Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), buffer, -1); code = TCL_ERROR; @@ -1259,7 +1259,10 @@ TclCompileIfCmd(interp, parsePtr, envPtr) tokenPtr = testTokenPtr + (testTokenPtr->numComponents + 1); wordIdx++; if (wordIdx >= numWords) { - sprintf(buffer, "wrong # args: no script following \"%.*s\" argument", testTokenPtr->size, testTokenPtr->start); + sprintf(buffer, + "wrong # args: no script following \"%.*s\" argument", + (testTokenPtr->size > 50 ? 50 : testTokenPtr->size), + testTokenPtr->start); Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), buffer, -1); code = TCL_ERROR; -- cgit v0.12 From 4aa5d2c8459ece48ce92e83dedfd7a5c992aa7fa Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 15 Jul 2003 22:07:36 +0000 Subject: Added examples from David Welton [Patch 763312] --- ChangeLog | 4 ++++ doc/array.n | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index cbda2c2..549dfc6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-07-15 Donal K. Fellows + + * doc/array.n: Added some examples from David Welton [Patch 763312] + 2003-07-15 Don Porter * generic/tclCompCmds.c (TclCompileIfCmd): Prior fix of Bug 711371 diff --git a/doc/array.n b/doc/array.n index b04c89f..3839e77 100644 --- a/doc/array.n +++ b/doc/array.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: array.n,v 1.8 2000/09/07 14:27:45 poenitz Exp $ +'\" RCS: @(#) $Id: array.n,v 1.8.18.1 2003/07/15 22:07:37 dkf Exp $ '\" .so man.macros .TH array n 8.3 Tcl "Tcl Built-In Commands" @@ -115,6 +115,10 @@ The return value is a search identifier that must be used in \fBarray nextelement\fR and \fBarray donesearch\fR commands; it allows multiple searches to be underway simultaneously for the same array. +It is currently more efficient and easier to use either the \fBarray +get\fR or \fBarray names\fR, together with \fBforeach\fR, to iterate +over all but very large arrays. See the examples below for how to do +this. .VS 8.4 .TP \fBarray statistics \fIarrayName\fR @@ -134,6 +138,55 @@ an array variable, then the command unsets the entire array. The command always returns an empty string. .VE 8.3 +.SH EXAMPLES +.CS +array set colorcount { + red 1 + green 5 + blue 4 + white 9 +} + +foreach {color count} [array get colorcount] { + puts "Color: $color Count: $count" +} + => Color: blue Count: 4 + Color: white Count: 9 + Color: green Count: 5 + Color: red Count: 1 + +foreach color [array names colorcount] { + puts "Color: $color Count: $colorcount($color)" +} + => Color: blue Count: 4 + Color: white Count: 9 + Color: green Count: 5 + Color: red Count: 1 + +foreach color [lsort [array names colorcount]] { + puts "Color: $color Count: $colorcount($color)" +} + => Color: blue Count: 4 + Color: green Count: 5 + Color: red Count: 1 + Color: white Count: 9 + +array statistics colorcount + => 4 entries in table, 4 buckets + number of buckets with 0 entries: 1 + number of buckets with 1 entries: 2 + number of buckets with 2 entries: 1 + number of buckets with 3 entries: 0 + number of buckets with 4 entries: 0 + number of buckets with 5 entries: 0 + number of buckets with 6 entries: 0 + number of buckets with 7 entries: 0 + number of buckets with 8 entries: 0 + number of buckets with 9 entries: 0 + number of buckets with 10 or more entries: 0 + average search distance for entry: 1.2 +.CE + .SH "SEE ALSO" list(n), string(n), variable(n), trace(n) -- cgit v0.12 From 964320bcbce04f90f2fb64d5b5683bd62a58922a Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 15 Jul 2003 22:18:02 +0000 Subject: Missed a bit off the last checkin! <:^) --- doc/array.n | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/array.n b/doc/array.n index 3839e77..c62e772 100644 --- a/doc/array.n +++ b/doc/array.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: array.n,v 1.8.18.1 2003/07/15 22:07:37 dkf Exp $ +'\" RCS: @(#) $Id: array.n,v 1.8.18.2 2003/07/15 22:18:02 dkf Exp $ '\" .so man.macros .TH array n 8.3 Tcl "Tcl Built-In Commands" @@ -188,7 +188,7 @@ array statistics colorcount .CE .SH "SEE ALSO" -list(n), string(n), variable(n), trace(n) +list(n), string(n), variable(n), trace(n), foreach(n) .SH KEYWORDS array, element names, search -- cgit v0.12 From 570add27c459885795802baac3c2e466a4989705 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 15 Jul 2003 22:25:32 +0000 Subject: * README: Bumped patch level to 8.4.4 in anticipation * generic/tcl.h: of another patch release. * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf (2.13) * win/configure: --- ChangeLog | 11 +++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 27 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 549dfc6..2eb7de2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,17 @@ 2003-07-15 Don Porter + * README: Bumped patch level to 8.4.4 in anticipation + * generic/tcl.h: of another patch release. + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf (2.13) + * win/configure: + * generic/tclCompCmds.c (TclCompileIfCmd): Prior fix of Bug 711371 on 2003-04-07 introduced a buffer overflow. Corrected. [Bug 771613] diff --git a/README b/README index e1b40c9..7ab5f1d 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.3 source distribution. + This is the Tcl 8.4.4 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.1 2003/05/15 18:59:36 hobbs Exp $ +RCS: @(#) $Id: README,v 1.49.2.2 2003/07/15 22:25:32 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 7d671e0..ddf416d 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.4 2003/07/15 01:15:50 das Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.5 2003/07/15 22:25:32 dgp Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 3 +#define TCL_RELEASE_SERIAL 4 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.3" +#define TCL_PATCH_LEVEL "8.4.4" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index f272cfc..6c11ec9 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.3 + Disk Label=tcl8.4.4 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index db918ee..4d01535 100755 --- a/unix/configure +++ b/unix/configure @@ -548,7 +548,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".3" +TCL_PATCH_LEVEL=".4" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index cca8bb3..a2818c8 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.1 2003/05/15 18:59:38 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.2 2003/07/15 22:25:33 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".3" +TCL_PATCH_LEVEL=".4" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index b63704a..6d98793 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.1 2003/05/15 18:59:39 hobbs Exp $ +# $Id: tcl.spec,v 1.16.2.2 2003/07/15 22:25:33 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.3 +%define version 8.4.4 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index c47c874..9b27368 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.1 2003/05/15 18:59:39 hobbs Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.2 2003/07/15 22:25:33 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.3 for +This directory contains the binary distribution of Tcl/Tk 8.4.4 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 71031de..084d554 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".3" +TCL_PATCH_LEVEL=".4" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index e9bb332..56b38e3 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.2 2003/05/15 18:59:39 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.3 2003/07/15 22:25:34 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".3" +TCL_PATCH_LEVEL=".4" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 43bad74f48d8aae962fb0a46444b3982729b24d2 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 15 Jul 2003 23:54:52 +0000 Subject: * unix/dltest/pkga.c: Updated to not use Tcl_UtfNcmp and counted strings instead of strcmp (not defined in any #include'd header) and presumed NULL-terminated strings. --- ChangeLog | 4 ++++ unix/dltest/pkga.c | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2eb7de2..1f78550 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,10 @@ 2003-07-15 Don Porter + * unix/dltest/pkga.c: Updated to not use Tcl_UtfNcmp and counted + strings instead of strcmp (not defined in any #include'd header) + and presumed NULL-terminated strings. + * README: Bumped patch level to 8.4.4 in anticipation * generic/tcl.h: of another patch release. * tools/tcl.wse.in: diff --git a/unix/dltest/pkga.c b/unix/dltest/pkga.c index 35bc95c..7fb9524 100644 --- a/unix/dltest/pkga.c +++ b/unix/dltest/pkga.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: pkga.c,v 1.4 2000/04/04 08:06:07 hobbs Exp $ + * RCS: @(#) $Id: pkga.c,v 1.4.24.1 2003/07/15 23:54:53 dgp Exp $ */ #include "tcl.h" @@ -48,13 +48,21 @@ Pkga_EqObjCmd(dummy, interp, objc, objv) Tcl_Obj * CONST objv[]; /* Argument objects. */ { int result; + CONST char *str1, str2; + int len1, len2, n; if (objc != 3) { Tcl_WrongNumArgs(interp, 1, objv, "string1 string2"); return TCL_ERROR; } - result = !strcmp(Tcl_GetString(objv[1]), Tcl_GetString(objv[2])); + str1 = Tcl_GetStringFromObj(objv[1], &len1); + str2 = Tcl_GetStringFromObj(objv[2], &len2); + if (len1 == len2) { + result = (Tcl_UtfNcmp(str1, str2, len1) == 0); + } else { + result = 0; + } Tcl_SetObjResult(interp, Tcl_NewIntObj(result)); return TCL_OK; } -- cgit v0.12 From 060934f2a4132b50c68ef38c64a34a3a6ed9e82d Mon Sep 17 00:00:00 2001 From: mdejong Date: Wed, 16 Jul 2003 02:16:13 +0000 Subject: * unix/dltest/pkga.c (Pkga_EqObjCmd): Fix typo that was causing a crash in load.test. --- ChangeLog | 5 +++++ unix/dltest/pkga.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1f78550..b5587b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-15 Mo DeJong + + * unix/dltest/pkga.c (Pkga_EqObjCmd): Fix typo + that was causing a crash in load.test. + 2003-07-15 Donal K. Fellows * doc/array.n: Added some examples from David Welton [Patch 763312] diff --git a/unix/dltest/pkga.c b/unix/dltest/pkga.c index 7fb9524..8dd87ae 100644 --- a/unix/dltest/pkga.c +++ b/unix/dltest/pkga.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: pkga.c,v 1.4.24.1 2003/07/15 23:54:53 dgp Exp $ + * RCS: @(#) $Id: pkga.c,v 1.4.24.2 2003/07/16 02:16:14 mdejong Exp $ */ #include "tcl.h" @@ -48,7 +48,7 @@ Pkga_EqObjCmd(dummy, interp, objc, objv) Tcl_Obj * CONST objv[]; /* Argument objects. */ { int result; - CONST char *str1, str2; + CONST char *str1, *str2; int len1, len2, n; if (objc != 3) { -- cgit v0.12 From b8352637c0e463fcf79278998107835658c6efdb Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 16 Jul 2003 04:15:06 +0000 Subject: * doc/http.n: Updated SYNOPSIS to match actual syntax of commands. [Bug 756112] --- ChangeLog | 3 +++ doc/http.n | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index b5587b1..8b6d00b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,9 @@ 2003-07-15 Don Porter + * doc/http.n: Updated SYNOPSIS to match actual syntax of + commands. [Bug 756112] + * unix/dltest/pkga.c: Updated to not use Tcl_UtfNcmp and counted strings instead of strcmp (not defined in any #include'd header) and presumed NULL-terminated strings. diff --git a/doc/http.n b/doc/http.n index e9501b7..8cd249d 100644 --- a/doc/http.n +++ b/doc/http.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: http.n,v 1.18 2002/07/23 18:17:12 jenglish Exp $ +'\" RCS: @(#) $Id: http.n,v 1.18.2.1 2003/07/16 04:15:07 dgp Exp $ '\" .so man.macros .TH "http" n 2.4 http "Tcl Bundled Packages" @@ -20,9 +20,9 @@ http \- Client-side implementation of the HTTP/1.0 protocol. .sp \fB::http::geturl \fIurl ?options?\fR .sp -\fB::http::formatQuery \fIlist\fR +\fB::http::formatQuery\fP \fIkey value\fP ?\fIkey value\fP ...? .sp -\fB::http::reset \fItoken\fR +\fB::http::reset\fP \fItoken\fP ?\fIwhy\fP? .sp \fB::http::wait \fItoken\fR .sp -- cgit v0.12 From 935c14cb00b479bcbc41fc40394c159f2785efbd Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 16 Jul 2003 08:24:20 +0000 Subject: Removed trivially-unreachable line [Bug 771939] --- generic/tclCmdMZ.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 2086335..ca1abef 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.5 2003/06/17 20:42:37 vincentdarley Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.6 2003/07/16 08:24:20 dkf Exp $ */ #include "tclInt.h" @@ -2996,7 +2996,6 @@ Tcl_TraceObjCmd(dummy, interp, objc, objv) return TCL_ERROR; } return (traceSubCmds[typeIndex])(interp, optionIndex, objc, objv); - break; } #ifndef TCL_REMOVE_OBSOLETE_TRACES case TRACE_OLD_VARIABLE: { -- cgit v0.12 From 3bf05e9189615ea7d195ecd15f452092916d278d Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 16 Jul 2003 14:31:35 +0000 Subject: * library/tcltest/tcltest.tcl (ProcessFlags): Corrected broken call * library/tcltest/pkgIndex.tcl: to [lrange]. Bumped to version 2.2.4. [Bug 772333] --- ChangeLog | 6 ++++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 6 +++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8b6d00b..84859b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-07-16 Don Porter + + * library/tcltest/tcltest.tcl (ProcessFlags): Corrected broken call + * library/tcltest/pkgIndex.tcl: to [lrange]. Bumped + to version 2.2.4. [Bug 772333] + 2003-07-15 Mo DeJong * unix/dltest/pkga.c (Pkga_EqObjCmd): Fix typo diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index b91babd..2d9b07e 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.3]} {return} -package ifneeded tcltest 2.2.3 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.2.4 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 7c237e6..1bc0037 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.3 2003/05/05 16:59:50 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.4 2003/07/16 14:31:35 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.2.3 + variable Version 2.2.4 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -1431,7 +1431,7 @@ proc tcltest::ProcessFlags {flagArray} { # but keep going if {[llength $moreOptions]} { append msg ", " - append msg [join [lrange $moreOptions 0 end -1] ", "] + append msg [join [lrange $moreOptions 0 end-1] ", "] append msg "or [lindex $moreOptions end]" } Warn $msg -- cgit v0.12 From edcb9d3655e60d05d4774eef38d89620d0a0e6a1 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 16 Jul 2003 15:28:29 +0000 Subject: * generic/tclFileName.c (Tcl_GlobObjCmd): [Bug 771840] * generic/tclIOUtil.c (Tcl_FSConvertToPathType):[Bug 771947] * unix/tclUnixFCmd.c (GetModeFromPermString): [Bug 771949] Silence compiler warnings about unreached lines. --- ChangeLog | 5 +++++ generic/tclFileName.c | 3 +-- generic/tclIOUtil.c | 20 +------------------- unix/tclUnixFCmd.c | 4 +--- 4 files changed, 8 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84859b0..bbd888a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2003-07-16 Don Porter + * generic/tclFileName.c (Tcl_GlobObjCmd): [Bug 771840] + * generic/tclIOUtil.c (Tcl_FSConvertToPathType):[Bug 771947] + * unix/tclUnixFCmd.c (GetModeFromPermString): [Bug 771949] + Silence compiler warnings about unreached lines. + * library/tcltest/tcltest.tcl (ProcessFlags): Corrected broken call * library/tcltest/pkgIndex.tcl: to [lrange]. Bumped to version 2.2.4. [Bug 772333] diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 4a9a0b6..79acfd2 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.1 2003/04/29 11:45:24 vincentdarley Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.2 2003/07/16 15:28:29 dgp Exp $ */ #include "tclInt.h" @@ -1680,7 +1680,6 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) case GLOB_LAST: /* -- */ i++; goto endOfForLoop; - break; } } endOfForLoop: diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 42f73bd..ca250f6 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.4 2003/05/13 22:55:50 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.5 2003/07/16 15:28:29 dgp Exp $ */ #include "tclInt.h" @@ -4651,24 +4651,6 @@ Tcl_FSConvertToPathType(interp, objPtr) return Tcl_ConvertToType(interp, objPtr, &tclFsPathType); } return TCL_OK; - /* - * This code is intentionally never reached. Once fs-optimisation - * is complete, it will be removed/replaced - */ - if (fsPathPtr->cwdPtr == NULL) { - return TCL_OK; - } else { - if (TclFSCwdPointerEquals(fsPathPtr->cwdPtr)) { - return TCL_OK; - } else { - if (objPtr->bytes == NULL) { - UpdateStringOfFsPath(objPtr); - } - FreeFsPathInternalRep(objPtr); - objPtr->typePtr = NULL; - return Tcl_ConvertToType(interp, objPtr, &tclFsPathType); - } - } } else { return Tcl_ConvertToType(interp, objPtr, &tclFsPathType); } diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index bc9746f..72f6846 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28 2003/02/10 12:50:31 vincentdarley Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.1 2003/07/16 15:28:30 dgp Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -1587,7 +1587,6 @@ GetModeFromPermString(interp, modeStringPtr, modePtr) continue; default : return TCL_ERROR; - break; } } /* what */ @@ -1611,7 +1610,6 @@ GetModeFromPermString(interp, modeStringPtr, modePtr) break; default : return TCL_ERROR; - break; } if (*(modeStringPtr+n+i) == ',') { i++; -- cgit v0.12 From 807f03b48dcdb08f9acb0493b804a5b41d5bf7a0 Mon Sep 17 00:00:00 2001 From: mdejong Date: Wed, 16 Jul 2003 19:34:14 +0000 Subject: * win/Makefile.in: Don't define TCL_DBGX symbol for every compile. Instead, define TCL_PIPE_DLL only when compiling tclWinPipe.c. This will break other build systems, so they will need to remove the TCL_DBGX define and replace it with a define for TCL_PIPE_DLL. * win/makefile.vc: Ditto. * win/tclWinPipe.c (TclpCreateProcess): Remove PREFIX_IDENT and DEBUG_IDENT from top of file. Use TCL_PIPE_DLL passed in from build env instead of trying to construct the dll name from already defined symbols. This approach is more flexible and better in the long run. --- ChangeLog | 17 +++++++++++++++++ win/Makefile.in | 8 ++++++-- win/makefile.vc | 5 +++-- win/tclWinPipe.c | 9 ++------- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index bbd888a..800da69 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2003-07-16 Mo DeJong + + * win/Makefile.in: Don't define TCL_DBGX + symbol for every compile. Instead, define + TCL_PIPE_DLL only when compiling tclWinPipe.c. + This will break other build systems, so + they will need to remove the TCL_DBGX define + and replace it with a define for TCL_PIPE_DLL. + * win/makefile.vc: Ditto. + * win/tclWinPipe.c (TclpCreateProcess): + Remove PREFIX_IDENT and DEBUG_IDENT from + top of file. Use TCL_PIPE_DLL passed in + from build env instead of trying to construct + the dll name from already defined symbols. + This approach is more flexible and better + in the long run. + 2003-07-16 Don Porter * generic/tclFileName.c (Tcl_GlobObjCmd): [Bug 771840] diff --git a/win/Makefile.in b/win/Makefile.in index 929defc..d40a6f1 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.68 2003/01/28 11:03:53 mdejong Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.68.2.1 2003/07/16 19:34:14 mdejong Exp $ VERSION = @TCL_VERSION@ @@ -85,7 +85,7 @@ CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@ #CFLAGS = $(CFLAGS_DEBUG) #CFLAGS = $(CFLAGS_OPTIMIZE) #CFLAGS = $(CFLAGS_DEBUG) $(CFLAGS_OPTIMIZE) -CFLAGS = @CFLAGS@ @CFLAGS_DEFAULT@ -DTCL_DBGX=$(TCL_DBGX) +CFLAGS = @CFLAGS@ @CFLAGS_DEFAULT@ # To enable compilation debugging reverse the comment characters on # one of the following lines. @@ -383,6 +383,10 @@ ${PIPE_DLL_FILE}: ${PIPE_OBJS} tclWinInit.${OBJEXT}: tclWinInit.c $(CC) -c $(CC_SWITCHES) -DBUILD_tcl $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME) +tclWinPipe.${OBJEXT}: tclWinPipe.c + $(CC) -c $(CC_SWITCHES) -DBUILD_tcl -DTCL_PIPE_DLL=\"$(PIPE_DLL_FILE)\" \ + $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME) + testMain.${OBJEXT}: tclAppInit.c $(CC) -c $(CC_SWITCHES) -DTCL_TEST @DEPARG@ $(CC_OBJNAME) diff --git a/win/makefile.vc b/win/makefile.vc index a2d613d..029a462 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -12,7 +12,7 @@ # Copyright (c) 2001-2002 David Gravereaux. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.100.2.3 2003/03/23 03:10:13 kennykb Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.100.2.4 2003/07/16 19:34:14 mdejong Exp $ #------------------------------------------------------------------------------ !if "$(MSVCDIR)" == "" @@ -355,7 +355,8 @@ crt = -MTd !endif TCL_INCLUDES = -I"$(WINDIR)" -I"$(GENERICDIR)" -BASE_CLFAGS = $(cflags) $(cdebug) $(crt) $(TCL_INCLUDES) -DTCL_DBGX=$(DBGX) +BASE_CLFAGS = $(cflags) $(cdebug) $(crt) $(TCL_INCLUDES) \ + -DTCL_PIPE_DLL=\"$(TCLPIPEDLLNAME)\" CON_CFLAGS = $(cflags) $(cdebug) $(crt) -DCONSOLE TCL_CFLAGS = $(BASE_CLFAGS) $(OPTDEFINES) diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 9e5d7e0..875995e 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,12 +9,9 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.1 2003/03/12 19:19:32 dgp Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.2 2003/07/16 19:34:14 mdejong Exp $ */ -#define PREFIX_IDENT "" -#define DEBUG_IDENT TCL_DBGX - #include "tclWinInt.h" #include @@ -1211,9 +1208,7 @@ TclpCreateProcess( char *start,*end; Tcl_DString pipeDll; Tcl_DStringInit(&pipeDll); - Tcl_DStringAppend(&pipeDll, PREFIX_IDENT "tclpip" - STRINGIFY(TCL_MAJOR_VERSION) STRINGIFY(TCL_MINOR_VERSION) - STRINGIFY(DEBUG_IDENT) ".dll ", -1); + Tcl_DStringAppend(&pipeDll, TCL_PIPE_DLL, -1); tclExePtr = Tcl_NewStringObj(TclpFindExecutable(""), -1); start = Tcl_GetStringFromObj(tclExePtr, &i); for (end = start + (i-1); end > start; end--) { -- cgit v0.12 From 8950d01535cc68e18a799015b5bd31af5c9562c3 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 16 Jul 2003 21:25:07 +0000 Subject: * generic/tclPreserve.c: In Result and Preserve'd routines, do not * generic/tclUtil.c: assume that ckfree == free, as that is not * generic/tclResult.c: always true. [Bug 756791] (fuller) --- ChangeLog | 28 +++++++++++++++++----------- generic/tclPreserve.c | 8 +++----- generic/tclResult.c | 20 +++++++------------- generic/tclUtil.c | 5 ++--- 4 files changed, 29 insertions(+), 32 deletions(-) diff --git a/ChangeLog b/ChangeLog index 800da69..2381202 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-07-16 Jeff Hobbs + + * generic/tclPreserve.c: In Result and Preserve'd routines, do not + * generic/tclUtil.c: assume that ckfree == free, as that is not + * generic/tclResult.c: always true. [Bug 756791] (fuller) + 2003-07-16 Mo DeJong * win/Makefile.in: Don't define TCL_DBGX @@ -99,11 +105,11 @@ do encoding conversion by dropping high bytes, unlike the rest of the core. [Bug 735364] -2003-07-11 Don Porter +2003-07-11 Don Porter - * library/package.tcl: Corrected [pkg_mkIndex] bug reported on - comp.lang.tcl. The indexer was searching for newly indexed packages - instead of newly provided packages. + * library/package.tcl: Corrected [pkg_mkIndex] bug reported on + comp.lang.tcl. The indexer was searching for newly indexed packages + instead of newly provided packages. 2003-07-04 Donal K. Fellows @@ -152,17 +158,17 @@ the part of [Bug 495830] that is new in 8.4. * tests/interp.test: Added tests 18.9 (knownbug) and 18.10 -2003-06-09 Don Porter +2003-06-09 Don Porter - * string.test (string-4.15): Added test for [string first] bug - reported in Tcl 8.3, where test for all-single-byte-encoded strings - was not reliable. + * tests/string.test (string-4.15): Added test for [string first] bug + reported in Tcl 8.3, where test for all-single-byte-encoded strings + was not reliable. 2003-06-04 Joe Mistachkin - * tools/man2help.tcl: Added duplicate help section checking - * tools/index.tcl: and corrected a comment typo for the - getTopics proc in index.tcl [Bug #748700]. + * tools/man2help.tcl: Added duplicate help section checking + * tools/index.tcl: and corrected a comment typo for the + getTopics proc in index.tcl [Bug #748700]. 2003-05-23 Don Porter diff --git a/generic/tclPreserve.c b/generic/tclPreserve.c index 50dfb02..04615b7 100644 --- a/generic/tclPreserve.c +++ b/generic/tclPreserve.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPreserve.c,v 1.3 1999/04/16 00:46:52 stanton Exp $ + * RCS: @(#) $Id: tclPreserve.c,v 1.3.34.1 2003/07/16 21:25:07 hobbs Exp $ */ #include "tclInt.h" @@ -233,8 +233,7 @@ Tcl_Release(clientData) refArray[i] = refArray[inUse]; } if (mustFree) { - if ((freeProc == TCL_DYNAMIC) || - (freeProc == (Tcl_FreeProc *) free)) { + if (freeProc == TCL_DYNAMIC) { ckfree((char *) clientData); } else { Tcl_MutexUnlock(&preserveMutex); @@ -306,8 +305,7 @@ Tcl_EventuallyFree(clientData, freeProc) * No reference for this block. Free it now. */ - if ((freeProc == TCL_DYNAMIC) - || (freeProc == (Tcl_FreeProc *) free)) { + if (freeProc == TCL_DYNAMIC) { ckfree((char *) clientData); } else { (*freeProc)((char *)clientData); diff --git a/generic/tclResult.c b/generic/tclResult.c index 367ca80..9cfbd63 100644 --- a/generic/tclResult.c +++ b/generic/tclResult.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclResult.c,v 1.5 2002/01/25 20:40:55 dgp Exp $ + * RCS: @(#) $Id: tclResult.c,v 1.5.2.1 2003/07/16 21:25:07 hobbs Exp $ */ #include "tclInt.h" @@ -198,8 +198,7 @@ Tcl_DiscardResult(statePtr) if (statePtr->result == statePtr->appendResult) { ckfree(statePtr->appendResult); } else if (statePtr->freeProc) { - if ((statePtr->freeProc == TCL_DYNAMIC) - || (statePtr->freeProc == (Tcl_FreeProc *) free)) { + if (statePtr->freeProc == TCL_DYNAMIC) { ckfree(statePtr->result); } else { (*statePtr->freeProc)(statePtr->result); @@ -265,8 +264,7 @@ Tcl_SetResult(interp, string, freeProc) */ if (oldFreeProc != 0) { - if ((oldFreeProc == TCL_DYNAMIC) - || (oldFreeProc == (Tcl_FreeProc *) free)) { + if (oldFreeProc == TCL_DYNAMIC) { ckfree(oldResult); } else { (*oldFreeProc)(oldResult); @@ -359,8 +357,7 @@ Tcl_SetObjResult(interp, objPtr) */ if (iPtr->freeProc != NULL) { - if ((iPtr->freeProc == TCL_DYNAMIC) - || (iPtr->freeProc == (Tcl_FreeProc *) free)) { + if (iPtr->freeProc == TCL_DYNAMIC) { ckfree(iPtr->result); } else { (*iPtr->freeProc)(iPtr->result); @@ -413,8 +410,7 @@ Tcl_GetObjResult(interp) TclInitStringRep(objResultPtr, iPtr->result, length); if (iPtr->freeProc != NULL) { - if ((iPtr->freeProc == TCL_DYNAMIC) - || (iPtr->freeProc == (Tcl_FreeProc *) free)) { + if (iPtr->freeProc == TCL_DYNAMIC) { ckfree(iPtr->result); } else { (*iPtr->freeProc)(iPtr->result); @@ -751,8 +747,7 @@ Tcl_FreeResult(interp) register Interp *iPtr = (Interp *) interp; if (iPtr->freeProc != NULL) { - if ((iPtr->freeProc == TCL_DYNAMIC) - || (iPtr->freeProc == (Tcl_FreeProc *) free)) { + if (iPtr->freeProc == TCL_DYNAMIC) { ckfree(iPtr->result); } else { (*iPtr->freeProc)(iPtr->result); @@ -791,8 +786,7 @@ Tcl_ResetResult(interp) ResetObjResult(iPtr); if (iPtr->freeProc != NULL) { - if ((iPtr->freeProc == TCL_DYNAMIC) - || (iPtr->freeProc == (Tcl_FreeProc *) free)) { + if (iPtr->freeProc == TCL_DYNAMIC) { ckfree(iPtr->result); } else { (*iPtr->freeProc)(iPtr->result); diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 2572891..cb15ffd 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.36.2.1 2003/04/16 23:31:46 dgp Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.36.2.2 2003/07/16 21:25:07 hobbs Exp $ */ #include "tclInt.h" @@ -1744,8 +1744,7 @@ Tcl_DStringGetResult(interp, dsPtr) dsPtr->length = strlen(iPtr->result); if (iPtr->freeProc != NULL) { - if ((iPtr->freeProc == TCL_DYNAMIC) - || (iPtr->freeProc == (Tcl_FreeProc *) free)) { + if (iPtr->freeProc == TCL_DYNAMIC) { dsPtr->string = iPtr->result; dsPtr->spaceAvl = dsPtr->length+1; } else { -- cgit v0.12 From a192f58aa339e34d092729d90602e2513f1634ac Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 16 Jul 2003 21:31:50 +0000 Subject: Tcl_MakeSafe is a nasty function; document it as such. [Bug 655300] --- ChangeLog | 6 ++++++ doc/CrtSlave.3 | 16 +++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2381202..f094a7c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-07-16 Donal K. Fellows + + * doc/CrtSlave.3 (Tcl_MakeSafe): Updated documentation to strongly + discourage use. IMHO code outside the core that uses this + function is a bug... [Bug 655300] + 2003-07-16 Jeff Hobbs * generic/tclPreserve.c: In Result and Preserve'd routines, do not diff --git a/doc/CrtSlave.3 b/doc/CrtSlave.3 index 96765fd..9ad0f51 100644 --- a/doc/CrtSlave.3 +++ b/doc/CrtSlave.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtSlave.3,v 1.8 2002/08/05 03:24:39 dgp Exp $ +'\" RCS: @(#) $Id: CrtSlave.3,v 1.8.2.1 2003/07/16 21:31:52 dkf Exp $ '\" .so man.macros .TH Tcl_CreateSlave 3 7.6 Tcl "Tcl Library Procedures" @@ -140,10 +140,16 @@ If the creation of the new slave interpreter failed, \fBNULL\fR is returned. with the \fBTCL_SAFE_INTERPRETER\fR flag specified), \fB0\fR otherwise. .PP -\fBTcl_MakeSafe\fR makes \fIinterp\fR ``safe'' by removing all -non-core and core unsafe functionality. Note that if you call this after -adding some extension to an interpreter, all traces of that extension will -be removed from the interpreter. +\fBTcl_MakeSafe\fR marks \fIinterp\fR as ``safe'', so that future +calls to \fBTcl_IsSafe\fR will return 1. It also removes all known +potentially-unsafe core functionality (both commands and variables) +from \fIinterp\fR. However, it cannot know what parts of an extension +or application are safe and does not make any attempt to remove those +parts, so safety is not guaranteed after calling \fBTcl_MakeSafe\fR. +For this reason, this function should not be called by new code and is +likely to be deprecated or removed in a future version of Tcl. Safe +interpreters can be obtained by using \fBTcl_CreateSlave\fR instead, +which creates interpreters in a known-safe state. .PP \fBTcl_GetSlave\fR returns a pointer to a slave interpreter of \fIinterp\fR. The slave interpreter is identified by \fIslaveName\fR. -- cgit v0.12 From 81bbc0ba267fefbb15f6d0f7003126b1bf401ffe Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 16 Jul 2003 22:06:03 +0000 Subject: * generic/tcl.h: add recognition of -DTCL_UTF_MAX=6 on the * generic/regcustom.h: make line to support UCS-4 mode. No config arg at this time, as it is not the recommended build mode. --- ChangeLog | 4 ++++ generic/regcustom.h | 6 ++++++ generic/tcl.h | 24 ++++++++++++++++++++---- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index f094a7c..ee220d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,10 @@ 2003-07-16 Jeff Hobbs + * generic/tcl.h: add recognition of -DTCL_UTF_MAX=6 on the + * generic/regcustom.h: make line to support UCS-4 mode. No config + arg at this time, as it is not the recommended build mode. + * generic/tclPreserve.c: In Result and Preserve'd routines, do not * generic/tclUtil.c: assume that ckfree == free, as that is not * generic/tclResult.c: always true. [Bug 756791] (fuller) diff --git a/generic/regcustom.h b/generic/regcustom.h index 9f505de..e258acd 100644 --- a/generic/regcustom.h +++ b/generic/regcustom.h @@ -91,9 +91,15 @@ typedef int celt; /* type to hold chr, MCCE number, or NOCELT */ #define NOCELT (-1) /* celt value which is not valid chr or MCCE */ #define CHR(c) (UCHAR(c)) /* turn char literal into chr literal */ #define DIGITVAL(c) ((c)-'0') /* turn chr digit into its value */ +#if TCL_UTF_MAX > 3 +#define CHRBITS 32 /* bits in a chr; must not use sizeof */ +#define CHR_MIN 0x00000000 /* smallest and largest chr; the value */ +#define CHR_MAX 0xffffffff /* CHR_MAX-CHR_MIN+1 should fit in uchr */ +#else #define CHRBITS 16 /* bits in a chr; must not use sizeof */ #define CHR_MIN 0x0000 /* smallest and largest chr; the value */ #define CHR_MAX 0xffff /* CHR_MAX-CHR_MIN+1 should fit in uchr */ +#endif /* functions operating on chr */ #define iscalnum(x) Tcl_UniCharIsAlnum(x) diff --git a/generic/tcl.h b/generic/tcl.h index ddf416d..acdf4e0 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.5 2003/07/15 22:25:32 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.6 2003/07/16 22:06:04 hobbs Exp $ */ #ifndef _TCL @@ -2168,18 +2168,34 @@ typedef struct Tcl_Parse { #define TCL_CONVERT_UNKNOWN -3 #define TCL_CONVERT_NOSPACE -4 - /* * The maximum number of bytes that are necessary to represent a single - * Unicode character in UTF-8. - */ + * Unicode character in UTF-8. The valid values should be 3 or 6 (or + * perhaps 1 if we want to support a non-unicode enabled core). + * If 3, then Tcl_UniChar must be 2-bytes in size (UCS-2). (default) + * If 6, then Tcl_UniChar must be 4-bytes in size (UCS-4). + * At this time UCS-2 mode is the default and recommended mode. + * UCS-4 is experimental and not recommended. It works for the core, + * but most extensions expect UCS-2. + */ +#ifndef TCL_UTF_MAX #define TCL_UTF_MAX 3 +#endif /* * This represents a Unicode character. Any changes to this should * also be reflected in regcustom.h. */ +#if TCL_UTF_MAX > 3 + /* + * unsigned int isn't 100% accurate as it should be a strict 4-byte + * value (perhaps wchar_t). 64-bit systems may have troubles. The + * size of this value must be reflected correctly in regcustom.h. + */ +typedef unsigned int Tcl_UniChar; +#else typedef unsigned short Tcl_UniChar; +#endif /* -- cgit v0.12 From ff41d718087fa54c34bc52d7bb818a6ab93f2471 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 16 Jul 2003 22:09:47 +0000 Subject: * unix/tclUnixNotfy.c (NotifierThreadProc): correct size of found and word vars from int to long. [Bug 767578] (hgo) --- ChangeLog | 5 +++++ unix/tclUnixNotfy.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee220d4..ecbcba6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-16 Jeff Hobbs + + * unix/tclUnixNotfy.c (NotifierThreadProc): correct size of found + and word vars from int to long. [Bug 767578] (hgo) + 2003-07-16 Donal K. Fellows * doc/CrtSlave.3 (Tcl_MakeSafe): Updated documentation to strongly diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 7de3417..0cad280 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.1 2003/03/21 03:24:09 dgp Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.2 2003/07/16 22:09:48 hobbs Exp $ */ #include "tclInt.h" @@ -862,7 +862,8 @@ NotifierThreadProc(clientData) fd_mask masks[3*MASK_SIZE]; long *maskPtr = (long *)masks; /* masks[] cast to type long[] */ int fds[2]; - int i, status, index, bit, numFdBits, found, receivePipe, word; + int i, status, index, bit, numFdBits, receivePipe; + long found, word; struct timeval poll = {0., 0.}, *timePtr; int maskSize = 3 * ((MASK_SIZE) / sizeof(long)) * sizeof(fd_mask); char buf[2]; -- cgit v0.12 From 3389435994d42db2b637d34fbae876f1e36e4520 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 16 Jul 2003 22:49:31 +0000 Subject: * library/safe.tcl (FileInAccessPath): normalize paths before comparison. [Bug 759607] (myers) --- ChangeLog | 3 +++ library/safe.tcl | 12 ++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ecbcba6..4b0f585 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-07-16 Jeff Hobbs + * library/safe.tcl (FileInAccessPath): normalize paths before + comparison. [Bug 759607] (myers) + * unix/tclUnixNotfy.c (NotifierThreadProc): correct size of found and word vars from int to long. [Bug 767578] (hgo) diff --git a/library/safe.tcl b/library/safe.tcl index a259bdb..a5252d8 100644 --- a/library/safe.tcl +++ b/library/safe.tcl @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: safe.tcl,v 1.9 2003/02/08 22:03:20 hobbs Exp $ +# RCS: @(#) $Id: safe.tcl,v 1.9.2.1 2003/07/16 22:49:31 hobbs Exp $ # # The implementation is based on namespaces. These naming conventions @@ -837,7 +837,15 @@ proc ::safe::setLogCmd {args} { error "\"$file\": is a directory" } set parent [file dirname $file] - if {[lsearch -exact $access_path $parent] == -1} { + + # Normalize paths for comparison since lsearch knows nothing of + # potential pathname anomalies. + set norm_parent [file normalize $parent] + foreach path $access_path { + lappend norm_access_path [file normalize $path] + } + + if {[lsearch -exact $norm_access_path $norm_parent] == -1} { error "\"$file\": not in access_path" } } -- cgit v0.12 From fd3cca0fed42222f341474fe7ecb9843dc8fb15b Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 17 Jul 2003 00:16:03 +0000 Subject: 2003-07-16 Mumit Khan * generic/tclIOUtil.c (SetFsPathFromAny): Add Cygwin specific code to convert POSIX filename to native format. * generic/tclFileName.c (Tcl_TranslateFileName): And remove from here. (TclDoGlob): Adjust for cygwin and append / for dirs instead of \ * win/tclWinFile.c (TclpObjChdir): Use chdir on Cygwin. --- ChangeLog | 10 ++++++++++ generic/tclFileName.c | 53 +++++++++++++-------------------------------------- generic/tclIOUtil.c | 22 ++++++++++++++++++++- win/tclWinFile.c | 17 ++++++++++++++++- 4 files changed, 60 insertions(+), 42 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4b0f585..428ee21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ +2003-07-16 Mumit Khan + + * generic/tclIOUtil.c (SetFsPathFromAny): Add Cygwin specific + code to convert POSIX filename to native format. + * generic/tclFileName.c (Tcl_TranslateFileName): And remove from here. + (TclDoGlob): Adjust for cygwin and append / for dirs instead of \ + * win/tclWinFile.c (TclpObjChdir): Use chdir on Cygwin. + 2003-07-16 Jeff Hobbs + * win/tclWinFile.c (TclpObjChdir): + * library/safe.tcl (FileInAccessPath): normalize paths before comparison. [Bug 759607] (myers) diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 79acfd2..ea7ee05 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.2 2003/07/16 15:28:29 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.3 2003/07/17 00:16:04 hobbs Exp $ */ #include "tclInt.h" @@ -1398,31 +1398,12 @@ Tcl_TranslateFileName(interp, name, bufferPtr) */ if (tclPlatform == TCL_PLATFORM_WINDOWS) { -#if defined(__CYGWIN__) && defined(__WIN32__) - - extern int cygwin_conv_to_win32_path - _ANSI_ARGS_((CONST char *, char *)); - char winbuf[MAX_PATH]; - - /* - * In the Cygwin world, call conv_to_win32_path in order to use the - * mount table to translate the file name into something Windows will - * understand. Take care when converting empty strings! - */ - if (Tcl_DStringLength(bufferPtr)) { - cygwin_conv_to_win32_path(Tcl_DStringValue(bufferPtr), winbuf); - Tcl_DStringFree(bufferPtr); - Tcl_DStringAppend(bufferPtr, winbuf, -1); - } -#else /* __CYGWIN__ && __WIN32__ */ - register char *p; for (p = Tcl_DStringValue(bufferPtr); *p != '\0'; p++) { if (*p == '/') { *p = '\\'; } } -#endif /* __CYGWIN__ && __WIN32__ */ } return Tcl_DStringValue(bufferPtr); } @@ -2388,25 +2369,6 @@ TclDoGlob(interp, separators, headPtr, tail, types) * element. Add an extra slash if this is a UNC path. */ -#if defined(__CYGWIN__) && defined(__WIN32__) - { - - extern int cygwin_conv_to_win32_path - _ANSI_ARGS_((CONST char *, char *)); - char winbuf[MAX_PATH]; - - /* - * In the Cygwin world, call conv_to_win32_path in order to use - * the mount table to translate the file name into something - * Windows will understand. - */ - cygwin_conv_to_win32_path(Tcl_DStringValue(headPtr), winbuf); - Tcl_DStringFree(headPtr); - Tcl_DStringAppend(headPtr, winbuf, -1); - - } -#endif /* __CYGWIN__ && __WIN32__ */ - if (*name == ':') { Tcl_DStringAppend(headPtr, ":", 1); if (count > 1) { @@ -2619,11 +2581,22 @@ TclDoGlob(interp, separators, headPtr, tail, types) if (Tcl_DStringLength(headPtr) == 0) { if (((*name == '\\') && (name[1] == '/' || name[1] == '\\')) || (*name == '/')) { - Tcl_DStringAppend(headPtr, "\\", 1); + Tcl_DStringAppend(headPtr, "/", 1); } else { Tcl_DStringAppend(headPtr, ".", 1); } } +#if defined(__CYGWIN__) && defined(__WIN32__) + { + extern int cygwin_conv_to_win32_path + _ANSI_ARGS_((CONST char *, char *)); + char winbuf[MAX_PATH+1]; + + cygwin_conv_to_win32_path(Tcl_DStringValue(headPtr), winbuf); + Tcl_DStringFree(headPtr); + Tcl_DStringAppend(headPtr, winbuf, -1); + } +#endif /* __CYGWIN__ && __WIN32__ */ /* * Convert to forward slashes. This is required to pass * some Tcl tests. We should probably remove the conversions diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index ca250f6..0fe38e2 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.5 2003/07/16 15:28:29 dgp Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.6 2003/07/17 00:16:04 hobbs Exp $ */ #include "tclInt.h" @@ -5697,6 +5697,26 @@ SetFsPathFromAny(interp, objPtr) transPtr = Tcl_FSJoinToPath(objPtr,0,NULL); } +#if defined(__CYGWIN__) && defined(__WIN32__) + { + extern int cygwin_conv_to_win32_path + _ANSI_ARGS_((CONST char *, char *)); + char winbuf[MAX_PATH+1]; + + /* + * In the Cygwin world, call conv_to_win32_path in order to use the + * mount table to translate the file name into something Windows will + * understand. Take care when converting empty strings! + */ + name = Tcl_GetStringFromObj(transPtr, &len); + if (len > 0) { + cygwin_conv_to_win32_path(name, winbuf); + TclWinNoBackslash(winbuf); + Tcl_SetStringObj(transPtr, winbuf, -1); + } + } +#endif /* __CYGWIN__ && __WIN32__ */ + /* * Now we have a translated filename in 'transPtr'. This will have * forward slashes on Windows, and will not contain any ~user diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 96ebbb2..f1f1ffa 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.4 2003/05/16 01:43:01 hobbs Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.5 2003/07/17 00:16:04 hobbs Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -1395,9 +1395,24 @@ TclpObjChdir(pathPtr) { int result; CONST TCHAR *nativePath; +#ifdef __CYGWIN__ + extern int cygwin_conv_to_posix_path + _ANSI_ARGS_((CONST char *, char *)); + char posixPath[MAX_PATH+1]; + CONST char *path; + Tcl_DString ds; +#endif /* __CYGWIN__ */ nativePath = (CONST TCHAR *) Tcl_FSGetNativePath(pathPtr); +#ifdef __CYGWIN__ + /* Cygwin chdir only groks POSIX path. */ + path = Tcl_WinTCharToUtf(nativePath, -1, &ds); + cygwin_conv_to_posix_path(path, posixPath); + result = (chdir(posixPath) == 0 ? 1 : 0); + Tcl_DStringFree(&ds); +#else /* __CYGWIN__ */ result = (*tclWinProcs->setCurrentDirectoryProc)(nativePath); +#endif /* __CYGWIN__ */ if (result == 0) { TclWinConvertError(GetLastError()); -- cgit v0.12 From 6ad56e7d131d1c69896ded85ef8f69fcf6c446a5 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 18 Jul 2003 01:06:15 +0000 Subject: * macosx/Makefile: added var to allow overriding of tclsh used during html help building (Landon Fuller). --- ChangeLog | 5 +++++ macosx/Makefile | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 428ee21..3f56fa2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-17 Daniel Steffen + + * macosx/Makefile: added var to allow overriding of tclsh used + during html help building (Landon Fuller). + 2003-07-16 Mumit Khan * generic/tclIOUtil.c (SetFsPathFromAny): Add Cygwin specific diff --git a/macosx/Makefile b/macosx/Makefile index 3ae458a..59aa677 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -3,7 +3,7 @@ # Makefile to build Tcl on Mac OS X packaged as a Framework # uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5.2.1 2003/07/15 01:15:51 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.2 2003/07/18 01:06:16 das Exp $ # ######################################################################################################## @@ -87,6 +87,7 @@ PRODUCT_LONGVERSION := $(shell eval $$(grep '^TCL_PATCH_LEVEL=' ${UNIX_DIR}/conf PRIVATE_HEADERS := tclInt.h tclIntDecls.h tclIntPlatDecls.h tclMath.h TARGETS := tclsh tcltest TCLSH := tclsh${PRODUCT_VERSION} +TCL_EXE ?= ${SYMROOT}/${TCLSH} DYLIB_INSTALL_PATH ?= ${INSTALL_PATH} @@ -175,7 +176,7 @@ ifeq (${BUILD_STYLE},Deployment) # build html documentation export DYLD_FRAMEWORK_PATH=${SYMROOT} && \ ${MAKE} -C ${OBJ_DIR} html-tcl \ - DISTDIR=${INSTALL_ROOT}${DOCDIR} TCL_EXE=${SYMROOT}/${TCLSH} && \ + DISTDIR=${INSTALL_ROOT}${DOCDIR} TCL_EXE=${TCL_EXE} && \ cd ${INSTALL_ROOT}${DOCDIR} && ln -fs contents.htm html/${PRODUCT_NAME}TOC.html && \ rm -fr "${PRODUCT_NAME}" && mv -f html "${PRODUCT_NAME}" endif -- cgit v0.12 From 5153262cb382cf320355160b48b661e92058973c Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Jul 2003 15:20:50 +0000 Subject: * doc/CrtSlave.3 (Tcl_MakeSafe): Removed warning about possible deprecation (no TIP on that). --- ChangeLog | 9 +++++++-- doc/CrtSlave.3 | 9 ++++----- doc/CrtTrace.3 | 4 ++-- doc/GetIndex.3 | 6 +++--- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3f56fa2..3a4f05c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-18 Don Porter + + * doc/CrtSlave.3 (Tcl_MakeSafe): Removed warning about possible + deprecation (no TIP on that). + 2003-07-17 Daniel Steffen * macosx/Makefile: added var to allow overriding of tclsh used @@ -76,8 +81,8 @@ 2003-07-15 Don Porter - * doc/http.n: Updated SYNOPSIS to match actual syntax of - commands. [Bug 756112] + * doc/http.n: Updated SYNOPSIS to match actual syntax of + commands. [Bug 756112] * unix/dltest/pkga.c: Updated to not use Tcl_UtfNcmp and counted strings instead of strcmp (not defined in any #include'd header) diff --git a/doc/CrtSlave.3 b/doc/CrtSlave.3 index 9ad0f51..bb5b857 100644 --- a/doc/CrtSlave.3 +++ b/doc/CrtSlave.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtSlave.3,v 1.8.2.1 2003/07/16 21:31:52 dkf Exp $ +'\" RCS: @(#) $Id: CrtSlave.3,v 1.8.2.2 2003/07/18 15:20:51 dgp Exp $ '\" .so man.macros .TH Tcl_CreateSlave 3 7.6 Tcl "Tcl Library Procedures" @@ -146,10 +146,9 @@ potentially-unsafe core functionality (both commands and variables) from \fIinterp\fR. However, it cannot know what parts of an extension or application are safe and does not make any attempt to remove those parts, so safety is not guaranteed after calling \fBTcl_MakeSafe\fR. -For this reason, this function should not be called by new code and is -likely to be deprecated or removed in a future version of Tcl. Safe -interpreters can be obtained by using \fBTcl_CreateSlave\fR instead, -which creates interpreters in a known-safe state. +Callers will want to take care with their use of \fBTcl_MakeSafe\fR +to avoid false claims of safety. For many situations, \fBTcl_CreateSlave\fR +may be a better choice, since it creates interpreters in a known-safe state. .PP \fBTcl_GetSlave\fR returns a pointer to a slave interpreter of \fIinterp\fR. The slave interpreter is identified by \fIslaveName\fR. diff --git a/doc/CrtTrace.3 b/doc/CrtTrace.3 index 17a688d..f0d4d7a 100644 --- a/doc/CrtTrace.3 +++ b/doc/CrtTrace.3 @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtTrace.3,v 1.6 2002/08/05 03:24:39 dgp Exp $ +'\" RCS: @(#) $Id: CrtTrace.3,v 1.6.2.1 2003/07/18 15:20:51 dgp Exp $ '\" .so man.macros .TH Tcl_CreateTrace 3 "" Tcl "Tcl Library Procedures" @@ -47,7 +47,7 @@ details on the calling sequence. Arbitrary one-word value to pass to \fIobjProc\fR or \fIproc\fR. .AP Tcl_CmdObjTraceDeleteProc *deleteProc Procedure to call when the trace is deleted. See below for details of -the calling sequence. A null pointer is permissible and results in no +the calling sequence. A NULL pointer is permissible and results in no callback when the trace is deleted. .AP Tcl_Trace trace in Token for trace to be removed (return value from previous call diff --git a/doc/GetIndex.3 b/doc/GetIndex.3 index 8ac4975..82f978a 100644 --- a/doc/GetIndex.3 +++ b/doc/GetIndex.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: GetIndex.3,v 1.10 2002/02/28 05:11:25 dgp Exp $ +'\" RCS: @(#) $Id: GetIndex.3,v 1.10.2.1 2003/07/18 15:20:51 dgp Exp $ '\" .so man.macros .TH Tcl_GetIndexFromObj 3 8.1 Tcl "Tcl Library Procedures" @@ -34,11 +34,11 @@ The string value of this object is used to search through \fItablePtr\fR. The internal representation is modified to hold the index of the matching table entry. .AP "CONST char" **tablePtr in -An array of null-terminated ASCII strings. The end of the array is marked +An array of null-terminated strings. The end of the array is marked by a NULL string pointer. .AP "CONST VOID" *structTablePtr in An array of arbitrary type, typically some \fBstruct\fP type. -The first member of the structure must be a null-terminated ASCII string. +The first member of the structure must be a null-terminated string. The size of the structure is given by \fIoffset\fP. .VS .AP int offset in -- cgit v0.12 From e7fe85a9c83ac99d29c83dc003abe20abe576c57 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Jul 2003 16:56:24 +0000 Subject: * doc/AddErrInfo.3: Improved consistency of documentation * doc/CrtTrace.3: by using "null" everywhere to refer to * doc/Encoding.3: the character '\0', and using "NULL" * doc/Eval.3: everywhere to refer to the value of a * doc/GetIndex.3: pointer that points to nowhere. * doc/Hash.3: Also dropped references to ASCII that * doc/LinkVar.3: are no longer true, and standardized on * doc/Macintosh.3: the hyphenated spelling of "null-terminated". * doc/OpenFileChnl.3: * doc/SetVar.3: * doc/StringObj.3: * doc/Utf.3: --- ChangeLog | 13 +++++++++++++ doc/AddErrInfo.3 | 4 ++-- doc/Encoding.3 | 6 +++--- doc/Eval.3 | 4 ++-- doc/Hash.3 | 4 ++-- doc/LinkVar.3 | 6 +++--- doc/Macintosh.3 | 4 ++-- doc/OpenFileChnl.3 | 8 ++++---- doc/SetVar.3 | 4 ++-- doc/StringObj.3 | 4 ++-- doc/Utf.3 | 24 ++++++++++++------------ 11 files changed, 47 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3a4f05c..10dccbd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,18 @@ 2003-07-18 Don Porter + * doc/AddErrInfo.3: Improved consistency of documentation + * doc/CrtTrace.3: by using "null" everywhere to refer to + * doc/Encoding.3: the character '\0', and using "NULL" + * doc/Eval.3: everywhere to refer to the value of a + * doc/GetIndex.3: pointer that points to nowhere. + * doc/Hash.3: Also dropped references to ASCII that + * doc/LinkVar.3: are no longer true, and standardized on + * doc/Macintosh.3: the hyphenated spelling of "null-terminated". + * doc/OpenFileChnl.3: + * doc/SetVar.3: + * doc/StringObj.3: + * doc/Utf.3: + * doc/CrtSlave.3 (Tcl_MakeSafe): Removed warning about possible deprecation (no TIP on that). diff --git a/doc/AddErrInfo.3 b/doc/AddErrInfo.3 index 06fe195..58a9d0e 100644 --- a/doc/AddErrInfo.3 +++ b/doc/AddErrInfo.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: AddErrInfo.3,v 1.8 2002/07/01 18:24:38 jenglish Exp $ +'\" RCS: @(#) $Id: AddErrInfo.3,v 1.8.2.1 2003/07/18 16:56:24 dgp Exp $ '\" .so man.macros .TH Tcl_AddErrorInfo 3 8.0 Tcl "Tcl Library Procedures" @@ -60,7 +60,7 @@ Pointer to first character in script containing command (must be <= command) .AP "CONST char" *command in Pointer to first character in command that generated the error .AP int commandLength in -Number of bytes in command; -1 means use all bytes up to first NULL byte +Number of bytes in command; -1 means use all bytes up to first null byte .BE .SH DESCRIPTION diff --git a/doc/Encoding.3 b/doc/Encoding.3 index 769a059..b2cd235 100644 --- a/doc/Encoding.3 +++ b/doc/Encoding.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Encoding.3,v 1.11 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: Encoding.3,v 1.11.2.1 2003/07/18 16:56:24 dgp Exp $ '\" .so man.macros .TH Tcl_GetEncoding 3 "8.1" Tcl "Tcl Library Procedures" @@ -174,7 +174,7 @@ and delete it from the database. .PP \fBTcl_ExternalToUtfDString\fR converts a source buffer \fIsrc\fR from the specified \fIencoding\fR into UTF-8. The converted bytes are stored in -\fIdstPtr\fR, which is then NULL terminated. The caller should eventually +\fIdstPtr\fR, which is then null-terminated. The caller should eventually call \fBTcl_DStringFree\fR to free any information stored in \fIdstPtr\fR. When converting, if any of the characters in the source buffer cannot be represented in the target encoding, a default fallback character will be @@ -212,7 +212,7 @@ the target encoding and TCL_ENCODING_STOPONERROR was specified. \fBTcl_UtfToExternalDString\fR converts a source buffer \fIsrc\fR from UTF-8 into the specified \fIencoding\fR. The converted bytes are stored in \fIdstPtr\fR, which is then terminated with the appropriate encoding-specific -NULL. The caller should eventually call \fBTcl_DStringFree\fR to free any +null. The caller should eventually call \fBTcl_DStringFree\fR to free any information stored in \fIdstPtr\fR. When converting, if any of the characters in the source buffer cannot be represented in the target encoding, a default fallback character will be used. The return value is diff --git a/doc/Eval.3 b/doc/Eval.3 index f6edb2f..0956fa6 100644 --- a/doc/Eval.3 +++ b/doc/Eval.3 @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Eval.3,v 1.12.2.2 2003/05/12 17:35:43 dgp Exp $ +'\" RCS: @(#) $Id: Eval.3,v 1.12.2.3 2003/07/18 16:56:24 dgp Exp $ '\" .so man.macros .TH Tcl_Eval 3 8.1 Tcl "Tcl Library Procedures" @@ -67,7 +67,7 @@ The number of bytes in \fIscript\fR, not including any null terminating character. If \-1, then all characters up to the first null byte are used. .AP "CONST char" *script in -Points to first byte of script to execute (NULL terminated and UTF-8). +Points to first byte of script to execute (null-terminated and UTF-8). .AP char *string in String forming part of a Tcl script. .AP va_list argList in diff --git a/doc/Hash.3 b/doc/Hash.3 index 664756a..71f6c08 100644 --- a/doc/Hash.3 +++ b/doc/Hash.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Hash.3,v 1.10 2002/07/11 15:40:19 dgp Exp $ +'\" RCS: @(#) $Id: Hash.3,v 1.10.2.1 2003/07/18 16:56:24 dgp Exp $ '\" .so man.macros .TH Tcl_Hash 3 "" Tcl "Tcl Library Procedures" @@ -119,7 +119,7 @@ caller, not by the hash module. The value of \fIkeyType\fR indicates what kinds of keys will be used for all entries in the table. \fIKeyType\fR must have one of the following values: .IP \fBTCL_STRING_KEYS\fR 25 -Keys are null-terminated ASCII strings. +Keys are null-terminated strings. They are passed to hashing routines using the address of the first character of the string. .IP \fBTCL_ONE_WORD_KEYS\fR 25 diff --git a/doc/LinkVar.3 b/doc/LinkVar.3 index c344b5e..d7e7798 100644 --- a/doc/LinkVar.3 +++ b/doc/LinkVar.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: LinkVar.3,v 1.6 2002/08/05 03:24:39 dgp Exp $ +'\" RCS: @(#) $Id: LinkVar.3,v 1.6.2.1 2003/07/18 16:56:24 dgp Exp $ '\" .so man.macros .TH Tcl_LinkVar 3 7.5 Tcl "Tcl Library Procedures" @@ -95,13 +95,13 @@ Tcl errors. \fBTCL_LINK_STRING\fR The C variable is of type \fBchar *\fR. .VS -If its value is not null then it must be a pointer to a string +If its value is not NULL then it must be a pointer to a string allocated with \fBTcl_Alloc\fR or \fBckalloc\fR. .VE Whenever the Tcl variable is modified the current C string will be freed and new memory will be allocated to hold a copy of the variable's new value. -If the C variable contains a null pointer then the Tcl variable +If the C variable contains a NULL pointer then the Tcl variable will read as ``NULL''. .PP If the TCL_LINK_READ_ONLY flag is present in \fItype\fR then the diff --git a/doc/Macintosh.3 b/doc/Macintosh.3 index f8a7ee5..62faa62 100644 --- a/doc/Macintosh.3 +++ b/doc/Macintosh.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Macintosh.3,v 1.4 2002/01/25 20:40:55 dgp Exp $ +'\" RCS: @(#) $Id: Macintosh.3,v 1.4.2.1 2003/07/18 16:56:24 dgp Exp $ '\" .so man.macros .TH Tcl_MacSetEventProc 3 "8.1" Tcl "Tcl Library Procedures" @@ -79,7 +79,7 @@ at a later date. .PP \fBTcl_MacConvertTextResource\fR converts a TEXT resource into a Tcl suitable string. It mallocs the returned memory, converts ``\\r'' to -``\\n'', and appends a NULL. The caller has the responsibility for +``\\n'', and appends a null. The caller has the responsibility for freeing the memory. .PP \fBTcl_MacFindResource\fR provides a higher level interface for diff --git a/doc/OpenFileChnl.3 b/doc/OpenFileChnl.3 index 9fe8136..d8752fe 100644 --- a/doc/OpenFileChnl.3 +++ b/doc/OpenFileChnl.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: OpenFileChnl.3,v 1.20 2002/07/23 18:17:12 jenglish Exp $ +'\" RCS: @(#) $Id: OpenFileChnl.3,v 1.20.2.1 2003/07/18 16:56:24 dgp Exp $ .so man.macros .TH Tcl_OpenFileChannel 3 8.3 Tcl "Tcl Library Procedures" .BS @@ -468,7 +468,7 @@ and exists for backwards compatibility with non-internationalized Tcl extensions. It consumes bytes from \fIchannel\fR and stores them in \fIreadBuf\fR, performing end-of-line translations on the way. The return value of \fBTcl_Read\fR is the number of bytes, up to \fIbytesToRead\fR, written in -\fIreadBuf\fR. The buffer produced by \fBTcl_Read\fR is not NULL terminated. +\fIreadBuf\fR. The buffer produced by \fBTcl_Read\fR is not null-terminated. Its contents are valid from the zeroth position up to and excluding the position indicated by the return value. .PP @@ -524,7 +524,7 @@ added to the input queue. \fBTcl_Ungets\fR returns \fIinputLen\fR or \fIcharBuf\fR. The UTF-8 characters in the buffer are converted to the channel's encoding and queued for output to \fIchannel\fR. If \fIbytesToWrite\fR is negative, \fBTcl_WriteChars\fR expects \fIcharBuf\fR -to be NULL terminated and it outputs everything up to the NULL. +to be null-terminated and it outputs everything up to the null. .PP Data queued for output may not appear on the output device immediately, due to internal buffering. If the data should appear immediately, call @@ -562,7 +562,7 @@ deprecated and exists for backwards compatibility with non-internationalized Tcl extensions. It accepts \fIbytesToWrite\fR bytes of data at \fIbyteBuf\fR and queues them for output to \fIchannel\fR. If \fIbytesToWrite\fR is negative, \fBTcl_Write\fR expects \fIbyteBuf\fR to be -NULL terminated and it outputs everything up to the NULL. +null-terminated and it outputs everything up to the null. .PP \fBTcl_WriteRaw\fR is the same as \fBTcl_Write\fR but does not compensate for stacking. While \fBTcl_Write\fR (and the other diff --git a/doc/SetVar.3 b/doc/SetVar.3 index f39725e..7f22096 100644 --- a/doc/SetVar.3 +++ b/doc/SetVar.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: SetVar.3,v 1.7 2002/08/05 03:24:39 dgp Exp $ +'\" RCS: @(#) $Id: SetVar.3,v 1.7.2.1 2003/07/18 16:56:24 dgp Exp $ '\" .so man.macros .TH Tcl_SetVar 3 8.1 Tcl "Tcl Library Procedures" @@ -76,7 +76,7 @@ to specify a variable in a particular namespace. May refer to a scalar variable or an element of an array. .AP "CONST char" *newValue in -New value for variable, specified as a NULL-terminated string. +New value for variable, specified as a null-terminated string. A copy of this value is stored in the variable. .AP Tcl_Obj *part1Ptr in Points to a Tcl object containing the variable's name. diff --git a/doc/StringObj.3 b/doc/StringObj.3 index 8d43dc6..45eb7e0 100644 --- a/doc/StringObj.3 +++ b/doc/StringObj.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: StringObj.3,v 1.13 2002/10/22 12:16:53 dkf Exp $ +'\" RCS: @(#) $Id: StringObj.3,v 1.13.2.1 2003/07/18 16:56:24 dgp Exp $ '\" .so man.macros .TH Tcl_StringObj 3 8.1 Tcl "Tcl Library Procedures" @@ -118,7 +118,7 @@ An argument list which must have been initialised using \fBTCL_VARARGS_START\fR, and cleared using \fBva_end\fR. .AP int newLength in New length for the string value of \fIobjPtr\fR, not including the -final NULL character. +final null character. .AP int objc in The number of elements to concatenate. .AP Tcl_Obj *objv[] in diff --git a/doc/Utf.3 b/doc/Utf.3 index 8384412..a61a18b 100644 --- a/doc/Utf.3 +++ b/doc/Utf.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Utf.3,v 1.13 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: Utf.3,v 1.13.2.1 2003/07/18 16:56:24 dgp Exp $ '\" .so man.macros .TH Utf 3 "8.1" Tcl "Tcl Library Procedures" @@ -93,9 +93,9 @@ Filled with the Tcl_UniChar represented by the head of the UTF-8 string. .AP "CONST char" *src in Pointer to a UTF-8 string. .AP "CONST Tcl_UniChar" *uniStr in -A NULL-terminated Unicode string. +A null-terminated Unicode string. .AP "CONST Tcl_UniChar" *uniPattern in -A NULL-terminated Unicode string. +A null-terminated Unicode string. .AP int len in The length of the UTF-8 string in bytes (not UTF-8 characters). If negative, all bytes up to the first null byte are used. @@ -143,7 +143,7 @@ and stores it as a Tcl_UniChar in \fI*chPtr\fR. The return value is the number of bytes read from \fIsrc\fR.. The caller must ensure that the source buffer is long enough such that this routine does not run off the end and dereference non-existent or random memory; if the source buffer -is known to be null terminated, this will not happen. If the input is +is known to be null-terminated, this will not happen. If the input is not in proper UTF-8 format, \fBTcl_UtfToUniChar\fR will store the first byte of \fIsrc\fR in \fI*chPtr\fR as a Tcl_UniChar between 0x0000 and 0x00ff and return 1. @@ -162,15 +162,15 @@ in which case \fBTcl_UtfToUniCharDString\fR uses \fBstrlen\fR to calculate the length. The return value is a pointer to the Unicode representation of the UTF-8 string. Storage for the return value is appended to the end of the \fBTcl_DString\fR. The Unicode string -is terminated with a Unicode NULL character. +is terminated with a Unicode null character. .PP \fBTcl_UniCharLen\fR corresponds to \fBstrlen\fR for Unicode -characters. It accepts a NULL-terminated Unicode string and returns +characters. It accepts a null-terminated Unicode string and returns the number of Unicode characters (not bytes) in that string. .PP \fBTcl_UniCharNcmp\fR and \fBTcl_UniCharNcasecmp\fR correspond to \fBstrncmp\fR and \fBstrncasecmp\fR, respectively, for Unicode characters. -They accepts two NULL-terminated Unicode strings and the number of characters +They accepts two null-terminated Unicode strings and the number of characters to compare. Both strings are assumed to be at least \fIlen\fR characters long. \fBTcl_UniCharNcmp\fR compares the two strings character-by-character according to the Unicode character ordering. It returns an integer greater @@ -180,13 +180,13 @@ is the Unicode case insensitive version. .PP .VS 8.4 \fBTcl_UniCharCaseMatch\fR is the Unicode equivalent to -\fBTcl_StringCaseMatch\fR. It accepts a NULL-terminated Unicode string, +\fBTcl_StringCaseMatch\fR. It accepts a null-terminated Unicode string, a Unicode pattern, and a boolean value specifying whether the match should be case sensitive and returns whether the string matches the pattern. .VE 8.4 .PP \fBTcl_UtfNcmp\fR corresponds to \fBstrncmp\fR for UTF-8 strings. It -accepts two NULL-terminated UTF-8 strings and the number of characters +accepts two null-terminated UTF-8 strings and the number of characters to compare. (Both strings are assumed to be at least \fIlen\fR characters long.) \fBTcl_UtfNcmp\fR compares the two strings character-by-character according to the Unicode character ordering. @@ -209,16 +209,16 @@ full Tcl_UniChar has been seen. \fBTcl_NumUtfChars\fR corresponds to \fBstrlen\fR for UTF-8 strings. It returns the number of Tcl_UniChars that are represented by the UTF-8 string \fIsrc\fR. The length of the source string is \fIlen\fR bytes. If the -length is negative, all bytes up to the first NULL byte are used. +length is negative, all bytes up to the first null byte are used. .PP \fBTcl_UtfFindFirst\fR corresponds to \fBstrchr\fR for UTF-8 strings. It returns a pointer to the first occurrence of the Tcl_UniChar \fIch\fR -in the NULL-terminated UTF-8 string \fIsrc\fR. The NULL terminator is +in the null-terminated UTF-8 string \fIsrc\fR. The null terminator is considered part of the UTF-8 string. .PP \fBTcl_UtfFindLast\fR corresponds to \fBstrrchr\fR for UTF-8 strings. It returns a pointer to the last occurrence of the Tcl_UniChar \fIch\fR -in the NULL terminated UTF-8 string \fIsrc\fR. The NULL terminator is +in the null-terminated UTF-8 string \fIsrc\fR. The null terminator is considered part of the UTF-8 string. .PP Given \fIsrc\fR, a pointer to some location in a UTF-8 string, -- cgit v0.12 From f25190b7b14bee012d5f29e0cb1ebc6cedb98527 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 18 Jul 2003 19:41:15 +0000 Subject: * library/http/pkgIndex.tcl: merged to v2.4.4 from head * library/http/http.tcl: add support for user:pass info in URL. * tests/http.test: [Bug 759888] (shiobara) --- ChangeLog | 9 +++++++-- library/http/http.tcl | 23 +++++++++++++---------- library/http/pkgIndex.tcl | 2 +- tests/http.test | 8 +++++++- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 10dccbd..1847cb2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-07-18 Jeff Hobbs + + * library/http/pkgIndex.tcl: merged to v2.4.4 from head + * library/http/http.tcl: add support for user:pass info in URL. + * tests/http.test: [Bug 759888] (shiobara) + 2003-07-18 Don Porter * doc/AddErrInfo.3: Improved consistency of documentation @@ -28,11 +34,10 @@ * generic/tclFileName.c (Tcl_TranslateFileName): And remove from here. (TclDoGlob): Adjust for cygwin and append / for dirs instead of \ * win/tclWinFile.c (TclpObjChdir): Use chdir on Cygwin. + [Patch 679315] 2003-07-16 Jeff Hobbs - * win/tclWinFile.c (TclpObjChdir): - * library/safe.tcl (FileInAccessPath): normalize paths before comparison. [Bug 759607] (myers) diff --git a/library/http/http.tcl b/library/http/http.tcl index 7ae2286..2a9c8b5 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43 2002/10/03 13:34:32 dkf Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.1 2003/07/18 19:41:16 hobbs Exp $ # Rough version history: # 1.0 Old http_get interface @@ -25,7 +25,7 @@ package require Tcl 8.2 # keep this in sync with pkgIndex.tcl # and with the install directories in Makefiles -package provide http 2.4.2 +package provide http 2.4.4 namespace eval http { variable http @@ -119,7 +119,7 @@ proc http::config {args} { } return $result } - regsub -all -- - $options {} options + set options [string map {- ""} $options] set pat ^-([join $options |])$ if {[llength $args] == 1} { set flag [lindex $args 0] @@ -260,7 +260,7 @@ proc http::geturl { url args } { -progress -query -queryblocksize -querychannel -queryprogress\ -validate -timeout -type} set usage [join $options ", "] - regsub -all -- - $options {} options + set options [string map {- ""} $options] set pat ^-([join $options |])$ foreach {flag value} $args { if {[regexp $pat $flag]} { @@ -288,9 +288,11 @@ proc http::geturl { url args } { } # Validate URL, determine the server host and port, and check proxy case + # Recognize user:pass@host URLs also, although we do not do anything + # with that info yet. - if {![regexp -nocase {^(([^:]*)://)?([^/:]+)(:([0-9]+))?(/.*)?$} $url \ - x prefix proto host y port srvurl]} { + set exp {^(([^:]*)://)?([^@]+@)?([^/:]+)(:([0-9]+))?(/.*)?$} + if {![regexp -nocase $exp $url x prefix proto user host y port srvurl]} { unset $token return -code error "Unsupported URL: $url" } @@ -414,7 +416,7 @@ proc http::geturl { url args } { } puts $s "User-Agent: $http(-useragent)" foreach {key value} $state(-headers) { - regsub -all \[\n\r\] $value {} value + set value [string map [list \n "" \r ""] $value] set key [string trim $key] if {[string equal $key "Content-Length"]} { set contDone 1 @@ -678,8 +680,9 @@ proc http::Event {token} { } elseif {$n == 0} { variable encodings set state(state) body - if {$state(-binary) || ![regexp -nocase ^text $state(type)] || \ - [regexp gzip|compress $state(coding)]} { + if {$state(-binary) || ![string match -nocase text* $state(type)] + || [string match *gzip* $state(coding)] + || [string match *compress* $state(coding)]} { # Turn off conversions for non-text data fconfigure $s -translation binary if {[info exists state(-channel)]} { @@ -716,7 +719,7 @@ proc http::Event {token} { } if {[regexp -nocase {^([^:]+):(.+)$} $line x key value]} { lappend state(meta) $key [string trim $value] - } elseif {[regexp ^HTTP $line]} { + } elseif {[string match HTTP* $line]} { set state(http) $line } } diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 8461a67..82c68f5 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.2]} {return} -package ifneeded http 2.4.2 [list tclPkgSetup $dir http 2.4.2 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] +package ifneeded http 2.4.4 [list tclPkgSetup $dir http 2.4.4 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] diff --git a/tests/http.test b/tests/http.test index 4beba00..1051162 100644 --- a/tests/http.test +++ b/tests/http.test @@ -12,7 +12,7 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # -# RCS: @(#) $Id: http.test,v 1.33 2003/02/11 20:41:38 kennykb Exp $ +# RCS: @(#) $Id: http.test,v 1.33.2.1 2003/07/18 19:41:17 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -133,6 +133,7 @@ test http-3.3 {http::geturl} { set tail /a/b/c set url [info hostname]:$port/a/b/c +set fullurl http://user:pass@[info hostname]:$port/a/b/c set binurl [info hostname]:$port/binary set posturl [info hostname]:$port/post set badposturl [info hostname]:$port/droppost @@ -308,6 +309,11 @@ test http-3.13 {http::geturl socket leak test} { expr {[llength [file channels]] == $chanCount} } 1 +test http-3.14 "http::geturl $fullurl" { + set token [http::geturl $fullurl -validate 1] + http::code $token +} "HTTP/1.0 200 OK" + test http-4.1 {http::Event} { set token [http::geturl $url] upvar #0 $token data -- cgit v0.12 From 347b02938c7c7c395f06b1d0772ca323c80cd12d Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 18 Jul 2003 20:28:29 +0000 Subject: * generic/tclIOUtil.c: correct MT-safety issues with filesystem records. [Bug 753315] (vasiljevic) --- ChangeLog | 3 + generic/tclIOUtil.c | 416 ++++++++++++++++++++++++++++++---------------------- 2 files changed, 240 insertions(+), 179 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1847cb2..1fecf5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-07-18 Jeff Hobbs + * generic/tclIOUtil.c: correct MT-safety issues with filesystem + records. [Bug 753315] (vasiljevic) + * library/http/pkgIndex.tcl: merged to v2.4.4 from head * library/http/http.tcl: add support for user:pass info in URL. * tests/http.test: [Bug 759888] (shiobara) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 0fe38e2..b5bd88d 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.6 2003/07/17 00:16:04 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.7 2003/07/18 20:28:32 hobbs Exp $ */ #include "tclInt.h" @@ -49,6 +49,9 @@ typedef struct FilesystemRecord { struct FilesystemRecord *nextPtr; /* The next filesystem registered * to Tcl, or NULL if no more. */ + struct FilesystemRecord *prevPtr; + /* The previous filesystem registered + * to Tcl, or NULL if no more. */ } FilesystemRecord; /* @@ -68,12 +71,11 @@ Tcl_Obj* TclFSMakePathRelative _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Obj *cwdPtr)); Tcl_Obj* TclFSInternalToNormalized _ANSI_ARGS_(( Tcl_Filesystem *fromFilesystem, ClientData clientData, - FilesystemRecord **fsRecPtrPtr, int *epochPtr)); -int TclFSEnsureEpochOk _ANSI_ARGS_((Tcl_Obj* pathObjPtr, int theEpoch, + FilesystemRecord **fsRecPtrPtr)); +int TclFSEnsureEpochOk _ANSI_ARGS_((Tcl_Obj* pathObjPtr, Tcl_Filesystem **fsPtrPtr)); void TclFSSetPathDetails _ANSI_ARGS_((Tcl_Obj *pathObjPtr, - FilesystemRecord *fsRecPtr, ClientData clientData, - int theEpoch)); + FilesystemRecord *fsRecPtr, ClientData clientData)); /* * Private variables for use in this file @@ -98,10 +100,13 @@ static Tcl_Obj* TclFSNormalizeAbsolutePath * Prototypes for procedures defined later in this file. */ -static FilesystemRecord* FsGetIterator(void); -static void FsReleaseIterator(void); +static FilesystemRecord* FsGetFirstFilesystem(void); static void FsThrExitProc(ClientData cd); +#ifdef TCL_THREADS +static void FsRecacheFilesystemList(void); +#endif + /* * These form part of the native filesystem support. They are needed * here because we have a few native filesystem functions (which are @@ -450,55 +455,44 @@ static FilesystemRecord nativeFilesystemRecord = { }; /* - * The following few variables are protected by the - * filesystemMutex just below. - */ - -/* * This is incremented each time we modify the linked list of * filesystems. Any time it changes, all cached filesystem * representations are suspect and must be freed. + * For multithreading builds, change of the filesystem epoch + * will trigger cache cleanup in all threads. */ int theFilesystemEpoch = 0; /* - * Stores the linked list of filesystems. + * Stores the linked list of filesystems. A 1:1 copy of this + * list is also maintained in the TSD for each thread. This + * is to avoid synchronization issues. */ static FilesystemRecord *filesystemList = &nativeFilesystemRecord; -/* - * The number of loops which are currently iterating over the linked - * list. If this is greater than zero, we can't modify the list. - */ -static int filesystemIteratorsInProgress = 0; - -/* - * Someone wants to modify the list of filesystems if this is set. - */ -static int filesystemWantToModify = 0; - -#ifdef TCL_THREADS -static Tcl_Condition filesystemOkToModify = NULL; -#endif - TCL_DECLARE_MUTEX(filesystemMutex) /* * Used to implement Tcl_FSGetCwd in a file-system independent way. - * This is protected by the cwdMutex below. */ static Tcl_Obj* cwdPathPtr = NULL; static int cwdPathEpoch = 0; TCL_DECLARE_MUTEX(cwdMutex) /* - * This structure holds per-thread private copy of the - * current directory maintained by the global cwdPathPtr. + * This structure holds per-thread private copies of + * some global data. This way we avoid most of the + * synchronization calls which boosts performance, at + * cost of having to update this information each + * time the corresponding epoch counter changes. + * */ typedef struct ThreadSpecificData { int initialized; int cwdPathEpoch; + int filesystemEpoch; Tcl_Obj *cwdPathPtr; + FilesystemRecord *filesystemList; } ThreadSpecificData; Tcl_ThreadDataKey dataKey; @@ -532,9 +526,21 @@ FsThrExitProc(cd) ClientData cd; { ThreadSpecificData *tsdPtr = (ThreadSpecificData*)cd; + FilesystemRecord *fsRecPtr = NULL, *tmpFsRecPtr = NULL; + + /* Trash the cwd copy */ if (tsdPtr->cwdPathPtr != NULL) { Tcl_DecrRefCount(tsdPtr->cwdPathPtr); } + /* Trash the filesystems cache */ + fsRecPtr = tsdPtr->filesystemList; + while (fsRecPtr != NULL) { + tmpFsRecPtr = fsRecPtr->nextPtr; + if (--fsRecPtr->fileRefCount <= 0) { + ckfree((char *)fsRecPtr); + } + fsRecPtr = tmpFsRecPtr; + } } int @@ -544,52 +550,103 @@ TclFSCwdPointerEquals(objPtr) ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); Tcl_MutexLock(&cwdMutex); - if (tsdPtr->initialized == 0) { - Tcl_CreateThreadExitHandler(FsThrExitProc, (ClientData)tsdPtr); - tsdPtr->initialized = 1; - } if (tsdPtr->cwdPathPtr == NULL) { - if (cwdPathPtr == NULL) { - tsdPtr->cwdPathPtr = NULL; - } else { - tsdPtr->cwdPathPtr = Tcl_DuplicateObj(cwdPathPtr); - Tcl_IncrRefCount(tsdPtr->cwdPathPtr); - } + if (cwdPathPtr == NULL) { + tsdPtr->cwdPathPtr = NULL; + } else { + tsdPtr->cwdPathPtr = Tcl_DuplicateObj(cwdPathPtr); + Tcl_IncrRefCount(tsdPtr->cwdPathPtr); + } tsdPtr->cwdPathEpoch = cwdPathEpoch; } else if (tsdPtr->cwdPathEpoch != cwdPathEpoch) { - Tcl_DecrRefCount(tsdPtr->cwdPathPtr); - if (cwdPathPtr == NULL) { - tsdPtr->cwdPathPtr = NULL; - } else { - tsdPtr->cwdPathPtr = Tcl_DuplicateObj(cwdPathPtr); - Tcl_IncrRefCount(tsdPtr->cwdPathPtr); - } + Tcl_DecrRefCount(tsdPtr->cwdPathPtr); + if (cwdPathPtr == NULL) { + tsdPtr->cwdPathPtr = NULL; + } else { + tsdPtr->cwdPathPtr = Tcl_DuplicateObj(cwdPathPtr); + Tcl_IncrRefCount(tsdPtr->cwdPathPtr); + } } Tcl_MutexUnlock(&cwdMutex); + if (tsdPtr->initialized == 0) { + Tcl_CreateThreadExitHandler(FsThrExitProc, (ClientData)tsdPtr); + tsdPtr->initialized = 1; + } return (tsdPtr->cwdPathPtr == objPtr); } +#ifdef TCL_THREADS -static FilesystemRecord* -FsGetIterator(void) { - Tcl_MutexLock(&filesystemMutex); - filesystemIteratorsInProgress++; - Tcl_MutexUnlock(&filesystemMutex); - /* Now we know the list of filesystems cannot be modified */ - return filesystemList; +static void +FsRecacheFilesystemList(void) +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + FilesystemRecord *fsRecPtr, *tmpFsRecPtr = NULL; + + /* Trash the current cache */ + fsRecPtr = tsdPtr->filesystemList; + while (fsRecPtr != NULL) { + tmpFsRecPtr = fsRecPtr; + if (--fsRecPtr->fileRefCount <= 0) { + ckfree((char *)fsRecPtr); + } + fsRecPtr = tmpFsRecPtr->nextPtr; + } + tsdPtr->filesystemList = NULL; + + /* + * Code below operates on shared data. We + * are already called under mutex lock so + * we can safely proceede. + */ + + /* Locate tail of the global filesystem list */ + fsRecPtr = filesystemList; + while (fsRecPtr != NULL) { + tmpFsRecPtr = fsRecPtr; + fsRecPtr = fsRecPtr->nextPtr; + } + + /* Refill the cache honouring the order */ + fsRecPtr = tmpFsRecPtr; + while (fsRecPtr != NULL) { + tmpFsRecPtr = (FilesystemRecord *)ckalloc(sizeof(FilesystemRecord)); + *tmpFsRecPtr = *fsRecPtr; + tmpFsRecPtr->nextPtr = tsdPtr->filesystemList; + tmpFsRecPtr->prevPtr = NULL; + if (tsdPtr->filesystemList) { + tsdPtr->filesystemList->prevPtr = tmpFsRecPtr; + } + tsdPtr->filesystemList = tmpFsRecPtr; + fsRecPtr = fsRecPtr->prevPtr; + } + + /* Make sure the above gets released on thread exit */ + if (tsdPtr->initialized == 0) { + Tcl_CreateThreadExitHandler(FsThrExitProc, (ClientData)tsdPtr); + tsdPtr->initialized = 1; + } } +#endif -static void -FsReleaseIterator(void) { +static FilesystemRecord * +FsGetFirstFilesystem(void) { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + FilesystemRecord *fsRecPtr; +#ifndef TCL_THREADS + tsdPtr->filesystemEpoch = theFilesystemEpoch; + fsRecPtr = filesystemList; +#else Tcl_MutexLock(&filesystemMutex); - filesystemIteratorsInProgress--; - if (filesystemIteratorsInProgress == 0) { - /* Notify any waiting threads that things are ok now */ - if (filesystemWantToModify > 0) { - Tcl_ConditionNotify(&filesystemOkToModify); - } + if (tsdPtr->filesystemList == NULL + || (tsdPtr->filesystemEpoch != theFilesystemEpoch)) { + FsRecacheFilesystemList(); + tsdPtr->filesystemEpoch = theFilesystemEpoch; } Tcl_MutexUnlock(&filesystemMutex); + fsRecPtr = tsdPtr->filesystemList; +#endif + return fsRecPtr; } static void @@ -611,7 +668,7 @@ FsUpdateCwd(cwdObj) if (cwdObj == NULL) { cwdPathPtr = NULL; } else { - /* This must be stored as string obj! */ + /* This MUST be stored as string object! */ cwdPathPtr = Tcl_NewStringObj(str, len); Tcl_IncrRefCount(cwdPathPtr); } @@ -653,6 +710,8 @@ FsUpdateCwd(cwdObj) void TclFinalizeFilesystem() { + FilesystemRecord *fsRecPtr, *tmpFsRecPtr; + /* * Assumption that only one thread is active now. Otherwise * we would need to put various mutexes around this code. @@ -668,27 +727,25 @@ TclFinalizeFilesystem() * Remove all filesystems, freeing any allocated memory * that is no longer needed */ - while (filesystemList != NULL) { - FilesystemRecord *tmpFsRecPtr = filesystemList->nextPtr; - if (filesystemList->fileRefCount > 0) { - /* - * This filesystem must have some path objects still - * around which will be freed later (e.g. when unloading - * any shared libraries). If not, then someone is - * causing us to leak memory. - */ - } else { + + fsRecPtr = filesystemList; + while (fsRecPtr != NULL) { + tmpFsRecPtr = filesystemList->nextPtr; + if (fsRecPtr->fileRefCount <= 0) { /* The native filesystem is static, so we don't free it */ - if (filesystemList != &nativeFilesystemRecord) { - ckfree((char *)filesystemList); + if (fsRecPtr != &nativeFilesystemRecord) { + ckfree((char *)fsRecPtr); } } - filesystemList = tmpFsRecPtr; + fsRecPtr = tmpFsRecPtr; } + filesystemList = NULL; + /* * Now filesystemList is NULL. This means that any attempt * to use the filesystem is likely to fail. */ + statProcList = NULL; accessProcList = NULL; openFileChannelProcList = NULL; @@ -717,17 +774,13 @@ void TclResetFilesystem() { filesystemList = &nativeFilesystemRecord; + /* * Note, at this point, I believe nativeFilesystemRecord -> * fileRefCount should equal 1 and if not, we should try to track * down the cause. */ - filesystemIteratorsInProgress = 0; - filesystemWantToModify = 0; -#ifdef TCL_THREADS - filesystemOkToModify = NULL; -#endif #ifdef __WIN32__ /* * Cleans up the win32 API filesystem proc lookup table. This must @@ -804,14 +857,14 @@ Tcl_FSRegister(clientData, fsPtr) * a very rare action, this is not a very important point. */ Tcl_MutexLock(&filesystemMutex); - if (filesystemIteratorsInProgress) { - filesystemWantToModify++; - Tcl_ConditionWait(&filesystemOkToModify, &filesystemMutex, NULL); - filesystemWantToModify--; - } newFilesystemPtr->nextPtr = filesystemList; + newFilesystemPtr->prevPtr = NULL; + if (filesystemList) { + filesystemList->prevPtr = newFilesystemPtr; + } filesystemList = newFilesystemPtr; + /* * Increment the filesystem epoch counter, since existing paths * might conceivably now belong to different filesystems. @@ -852,28 +905,26 @@ Tcl_FSUnregister(fsPtr) Tcl_Filesystem *fsPtr; /* The filesystem record to remove. */ { int retVal = TCL_ERROR; - FilesystemRecord *tmpFsRecPtr; - FilesystemRecord *prevFsRecPtr = NULL; + FilesystemRecord *fsRecPtr; Tcl_MutexLock(&filesystemMutex); - if (filesystemIteratorsInProgress) { - filesystemWantToModify++; - Tcl_ConditionWait(&filesystemOkToModify, &filesystemMutex, NULL); - filesystemWantToModify--; - } - tmpFsRecPtr = filesystemList; + /* * Traverse the 'filesystemList' looking for the particular node * whose 'fsPtr' member matches 'fsPtr' and remove that one from * the list. Ensure that the "default" node cannot be removed. */ - while ((retVal == TCL_ERROR) && (tmpFsRecPtr != &nativeFilesystemRecord)) { - if (tmpFsRecPtr->fsPtr == fsPtr) { - if (prevFsRecPtr == NULL) { - filesystemList = filesystemList->nextPtr; + fsRecPtr = filesystemList; + while ((retVal == TCL_ERROR) && (fsRecPtr != &nativeFilesystemRecord)) { + if (fsRecPtr->fsPtr == fsPtr) { + if (fsRecPtr->prevPtr) { + fsRecPtr->prevPtr->nextPtr = fsRecPtr->nextPtr; } else { - prevFsRecPtr->nextPtr = tmpFsRecPtr->nextPtr; + filesystemList = fsRecPtr->nextPtr; + } + if (fsRecPtr->nextPtr) { + fsRecPtr->nextPtr->prevPtr = fsRecPtr->prevPtr; } /* * Increment the filesystem epoch counter, since existing @@ -885,15 +936,14 @@ Tcl_FSUnregister(fsPtr) */ theFilesystemEpoch++; - tmpFsRecPtr->fileRefCount--; - if (tmpFsRecPtr->fileRefCount <= 0) { - ckfree((char *)tmpFsRecPtr); + fsRecPtr->fileRefCount--; + if (fsRecPtr->fileRefCount <= 0) { + ckfree((char *)fsRecPtr); } retVal = TCL_OK; } else { - prevFsRecPtr = tmpFsRecPtr; - tmpFsRecPtr = tmpFsRecPtr->nextPtr; + fsRecPtr = fsRecPtr->nextPtr; } } @@ -1119,24 +1169,22 @@ Tcl_FSData(fsPtr) Tcl_Filesystem *fsPtr; /* The filesystem record to query. */ { ClientData retVal = NULL; - FilesystemRecord *tmpFsRecPtr; + FilesystemRecord *fsRecPtr = FsGetFirstFilesystem(); - tmpFsRecPtr = FsGetIterator(); /* * Traverse the 'filesystemList' looking for the particular node * whose 'fsPtr' member matches 'fsPtr' and remove that one from * the list. Ensure that the "default" node cannot be removed. */ - while ((retVal == NULL) && (tmpFsRecPtr != NULL)) { - if (tmpFsRecPtr->fsPtr == fsPtr) { - retVal = tmpFsRecPtr->clientData; + while ((retVal == NULL) && (fsRecPtr != NULL)) { + if (fsRecPtr->fsPtr == fsPtr) { + retVal = fsRecPtr->clientData; } - tmpFsRecPtr = tmpFsRecPtr->nextPtr; + fsRecPtr = fsRecPtr->nextPtr; } - FsReleaseIterator(); - return (retVal); + return retVal; } /* @@ -1299,7 +1347,7 @@ TclFSNormalizeToUniquePath(interp, pathPtr, startAt, clientDataPtr) int startAt; ClientData *clientDataPtr; { - FilesystemRecord *fsRecPtr; + FilesystemRecord *fsRecPtr, *firstFsRecPtr; /* Ignore this variable */ (void)clientDataPtr; @@ -1310,7 +1358,9 @@ TclFSNormalizeToUniquePath(interp, pathPtr, startAt, clientDataPtr) * is always a native filesystem (i.e. '/' on unix is native). */ - fsRecPtr = FsGetIterator(); + firstFsRecPtr = FsGetFirstFilesystem(); + + fsRecPtr = firstFsRecPtr; while (fsRecPtr != NULL) { if (fsRecPtr == &nativeFilesystemRecord) { Tcl_FSNormalizePathProc *proc = fsRecPtr->fsPtr->normalizePathProc; @@ -1321,9 +1371,8 @@ TclFSNormalizeToUniquePath(interp, pathPtr, startAt, clientDataPtr) } fsRecPtr = fsRecPtr->nextPtr; } - FsReleaseIterator(); - fsRecPtr = FsGetIterator(); + fsRecPtr = firstFsRecPtr; while (fsRecPtr != NULL) { /* Skip the native system next time through */ if (fsRecPtr != &nativeFilesystemRecord) { @@ -1341,9 +1390,8 @@ TclFSNormalizeToUniquePath(interp, pathPtr, startAt, clientDataPtr) } fsRecPtr = fsRecPtr->nextPtr; } - FsReleaseIterator(); - return (startAt); + return startAt; } /* @@ -2323,7 +2371,7 @@ Tcl_FSGetCwd(interp) * succeeded. */ - fsRecPtr = FsGetIterator(); + fsRecPtr = FsGetFirstFilesystem(); while ((retVal == NULL) && (fsRecPtr != NULL)) { Tcl_FSGetCwdProc *proc = fsRecPtr->fsPtr->getCwdProc; if (proc != NULL) { @@ -2331,7 +2379,6 @@ Tcl_FSGetCwd(interp) } fsRecPtr = fsRecPtr->nextPtr; } - FsReleaseIterator(); /* * Now the 'cwd' may NOT be normalized, at least on some * platforms. For the sake of efficiency, we want a completely @@ -2345,8 +2392,7 @@ Tcl_FSGetCwd(interp) if (norm != NULL) { /* * We found a cwd, which is now in our global storage. - * We must make a copy. Norm already has a refCount of - * 1. + * We must make a copy. Norm already has a refCount of 1. * * Threading issue: note that multiple threads at system * startup could in principle call this procedure @@ -2953,7 +2999,7 @@ Tcl_FSListVolumes(void) * a list of all drives from all filesystems. */ - fsRecPtr = FsGetIterator(); + fsRecPtr = FsGetFirstFilesystem(); while (fsRecPtr != NULL) { Tcl_FSListVolumesProc *proc = fsRecPtr->fsPtr->listVolumesProc; if (proc != NULL) { @@ -2965,7 +3011,6 @@ Tcl_FSListVolumes(void) } fsRecPtr = fsRecPtr->nextPtr; } - FsReleaseIterator(); return resultPtr; } @@ -3069,22 +3114,20 @@ Tcl_FSSplitPath(pathPtr, lenPtr) /* Simple helper function */ Tcl_Obj* -TclFSInternalToNormalized(fromFilesystem, clientData, fsRecPtrPtr, epochPtr) +TclFSInternalToNormalized(fromFilesystem, clientData, fsRecPtrPtr) Tcl_Filesystem *fromFilesystem; ClientData clientData; FilesystemRecord **fsRecPtrPtr; - int *epochPtr; { - FilesystemRecord *fsRecPtr = FsGetIterator(); + FilesystemRecord *fsRecPtr = FsGetFirstFilesystem(); + while (fsRecPtr != NULL) { if (fsRecPtr->fsPtr == fromFilesystem) { - *epochPtr = theFilesystemEpoch; *fsRecPtrPtr = fsRecPtr; break; } fsRecPtr = fsRecPtr->nextPtr; } - FsReleaseIterator(); if ((fsRecPtr != NULL) && (fromFilesystem->internalToNormalizedProc != NULL)) { @@ -3134,7 +3177,7 @@ GetPathType(pathObjPtr, filesystemPtrPtr, driveNameLengthPtr, driveNameRef) * matches). */ - fsRecPtr = FsGetIterator(); + fsRecPtr = FsGetFirstFilesystem(); while (fsRecPtr != NULL) { Tcl_FSListVolumesProc *proc = fsRecPtr->fsPtr->listVolumesProc; /* @@ -3208,7 +3251,6 @@ GetPathType(pathObjPtr, filesystemPtrPtr, driveNameLengthPtr, driveNameRef) } fsRecPtr = fsRecPtr->nextPtr; } - FsReleaseIterator(); if (type != TCL_PATH_ABSOLUTE) { type = TclpGetNativePathType(pathObjPtr, driveNameLengthPtr, @@ -3588,8 +3630,7 @@ Tcl_FSGetFileSystemForPath(pathObjPtr) * Check if the filesystem has changed in some way since * this object's internal representation was calculated. */ - if (TclFSEnsureEpochOk(pathObjPtr, theFilesystemEpoch, - &retVal) != TCL_OK) { + if (TclFSEnsureEpochOk(pathObjPtr, &retVal) != TCL_OK) { return NULL; } @@ -3599,7 +3640,7 @@ Tcl_FSGetFileSystemForPath(pathObjPtr) * succeeded. */ - fsRecPtr = FsGetIterator(); + fsRecPtr = FsGetFirstFilesystem(); while ((retVal == NULL) && (fsRecPtr != NULL)) { Tcl_FSPathInFilesystemProc *proc = fsRecPtr->fsPtr->pathInFilesystemProc; if (proc != NULL) { @@ -3610,14 +3651,12 @@ Tcl_FSGetFileSystemForPath(pathObjPtr) * We assume the type of pathObjPtr hasn't been changed * by the above call to the pathInFilesystemProc. */ - TclFSSetPathDetails(pathObjPtr, fsRecPtr, clientData, - theFilesystemEpoch); + TclFSSetPathDetails(pathObjPtr, fsRecPtr, clientData); retVal = fsRecPtr->fsPtr; } } fsRecPtr = fsRecPtr->nextPtr; } - FsReleaseIterator(); return retVal; } @@ -3995,7 +4034,7 @@ TclStatInsertProc (proc) } } - return (retVal); + return retVal; } /* @@ -4051,7 +4090,8 @@ TclStatDeleteProc (proc) } Tcl_MutexUnlock(&obsoleteFsHookMutex); - return (retVal); + + return retVal; } /* @@ -4099,7 +4139,7 @@ TclAccessInsertProc(proc) } } - return (retVal); + return retVal; } /* @@ -4155,7 +4195,7 @@ TclAccessDeleteProc(proc) } Tcl_MutexUnlock(&obsoleteFsHookMutex); - return (retVal); + return retVal; } /* @@ -4204,7 +4244,7 @@ TclOpenFileChannelInsertProc(proc) } } - return (retVal); + return retVal; } /* @@ -4262,7 +4302,7 @@ TclOpenFileChannelDeleteProc(proc) } Tcl_MutexUnlock(&obsoleteFsHookMutex); - return (retVal); + return retVal; } #endif /* USE_OBSOLETE_FS_HOOKS */ @@ -4631,6 +4671,8 @@ Tcl_FSConvertToPathType(interp, objPtr) Tcl_Obj *objPtr; /* Object to convert to a valid, current * path type. */ { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + /* * While it is bad practice to examine an object's type directly, * this is actually the best thing to do here. The reason is that @@ -4642,7 +4684,7 @@ Tcl_FSConvertToPathType(interp, objPtr) */ if (objPtr->typePtr == &tclFsPathType) { FsPath *fsPathPtr = (FsPath*) PATHOBJ(objPtr); - if (fsPathPtr->filesystemEpoch != theFilesystemEpoch) { + if (fsPathPtr->filesystemEpoch != tsdPtr->filesystemEpoch) { if (objPtr->bytes == NULL) { UpdateStringOfFsPath(objPtr); } @@ -4716,6 +4758,7 @@ TclNewFSPathObj(Tcl_Obj *dirPtr, CONST char *addStrRep, int len) { FsPath *fsPathPtr; Tcl_Obj *objPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); objPtr = Tcl_NewObj(); fsPathPtr = (FsPath*)ckalloc((unsigned)sizeof(FsPath)); @@ -4740,13 +4783,14 @@ TclNewFSPathObj(Tcl_Obj *dirPtr, CONST char *addStrRep, int len) Tcl_IncrRefCount(dirPtr); fsPathPtr->nativePathPtr = NULL; fsPathPtr->fsRecPtr = NULL; - fsPathPtr->filesystemEpoch = theFilesystemEpoch; + fsPathPtr->filesystemEpoch = tsdPtr->filesystemEpoch; PATHOBJ(objPtr) = (VOID *) fsPathPtr; PATHFLAGS(objPtr) = TCLPATH_RELATIVE | TCLPATH_APPENDED; objPtr->typePtr = &tclFsPathType; objPtr->bytes = NULL; objPtr->length = 0; + return objPtr; } @@ -4775,9 +4819,10 @@ TclFSMakePathRelative(interp, objPtr, cwdPtr) { int cwdLen, len; CONST char *tempStr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); if (objPtr->typePtr == &tclFsPathType) { - FsPath* fsPathPtr = (FsPath*) PATHOBJ(objPtr); + FsPath *fsPathPtr = (FsPath*) PATHOBJ(objPtr); if (PATHFLAGS(objPtr) != 0 && fsPathPtr->cwdPtr == cwdPtr) { objPtr = fsPathPtr->normPathPtr; @@ -4808,7 +4853,7 @@ TclFSMakePathRelative(interp, objPtr, cwdPtr) Tcl_IncrRefCount(cwdPtr); fsPathPtr->nativePathPtr = NULL; fsPathPtr->fsRecPtr = NULL; - fsPathPtr->filesystemEpoch = theFilesystemEpoch; + fsPathPtr->filesystemEpoch = tsdPtr->filesystemEpoch; PATHOBJ(objPtr) = (VOID *) fsPathPtr; PATHFLAGS(objPtr) = 0; @@ -4855,6 +4900,7 @@ TclFSMakePathRelative(interp, objPtr, cwdPtr) break; } tempStr = Tcl_GetStringFromObj(objPtr, &len); + return Tcl_NewStringObj(tempStr + cwdLen, len - cwdLen); } @@ -4883,6 +4929,7 @@ TclFSMakePathFromNormalized(interp, objPtr, nativeRep) * else NULL. */ { FsPath *fsPathPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); if (objPtr->typePtr == &tclFsPathType) { return TCL_OK; @@ -4913,7 +4960,7 @@ TclFSMakePathFromNormalized(interp, objPtr, nativeRep) fsPathPtr->cwdPtr = NULL; fsPathPtr->nativePathPtr = nativeRep; fsPathPtr->fsRecPtr = NULL; - fsPathPtr->filesystemEpoch = theFilesystemEpoch; + fsPathPtr->filesystemEpoch = tsdPtr->filesystemEpoch; PATHOBJ(objPtr) = (VOID *) fsPathPtr; PATHFLAGS(objPtr) = 0; @@ -4957,11 +5004,9 @@ Tcl_FSNewNativePath(fromFilesystem, clientData) FsPath *fsPathPtr; FilesystemRecord *fsFromPtr; - int epoch; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - objPtr = TclFSInternalToNormalized(fromFilesystem, clientData, - &fsFromPtr, &epoch); - + objPtr = TclFSInternalToNormalized(fromFilesystem, clientData, &fsFromPtr); if (objPtr == NULL) { return NULL; } @@ -4983,19 +5028,20 @@ Tcl_FSNewNativePath(fromFilesystem, clientData) } fsPathPtr = (FsPath*)ckalloc((unsigned)sizeof(FsPath)); + fsPathPtr->translatedPathPtr = NULL; /* Circular reference, by design */ fsPathPtr->normPathPtr = objPtr; fsPathPtr->cwdPtr = NULL; fsPathPtr->nativePathPtr = clientData; fsPathPtr->fsRecPtr = fsFromPtr; - /* We must increase the refCount for this filesystem. */ fsPathPtr->fsRecPtr->fileRefCount++; - fsPathPtr->filesystemEpoch = epoch; + fsPathPtr->filesystemEpoch = tsdPtr->filesystemEpoch; PATHOBJ(objPtr) = (VOID *) fsPathPtr; PATHFLAGS(objPtr) = 0; objPtr->typePtr = &tclFsPathType; + return objPtr; } @@ -5024,7 +5070,9 @@ Tcl_FSGetTranslatedPath(interp, pathPtr) Tcl_Interp *interp; Tcl_Obj* pathPtr; { - register FsPath* srcFsPathPtr; + Tcl_Obj *retObj = NULL; + FsPath *srcFsPathPtr; + if (Tcl_FSConvertToPathType(interp, pathPtr) != TCL_OK) { return NULL; } @@ -5039,11 +5087,13 @@ Tcl_FSGetTranslatedPath(interp, pathPtr) * object's string, translatedPath and normalizedPath * are all identical. */ - return srcFsPathPtr->normPathPtr; + retObj = srcFsPathPtr->normPathPtr; } else { /* It is an ordinary path object */ - return srcFsPathPtr->translatedPathPtr; + retObj = srcFsPathPtr->translatedPathPtr; } + + return retObj; } /* @@ -5071,11 +5121,12 @@ Tcl_FSGetTranslatedStringPath(interp, pathPtr) Tcl_Obj* pathPtr; { Tcl_Obj *transPtr = Tcl_FSGetTranslatedPath(interp, pathPtr); - if (transPtr == NULL) { - return NULL; - } else { + + if (transPtr != NULL) { return Tcl_GetString(transPtr); } + + return NULL; } /* @@ -5102,7 +5153,8 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) Tcl_Interp *interp; Tcl_Obj* pathObjPtr; { - register FsPath* fsPathPtr; + FsPath *fsPathPtr; + if (Tcl_FSConvertToPathType(interp, pathObjPtr) != TCL_OK) { return NULL; } @@ -5174,7 +5226,7 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) /* Now we need to construct the new path object */ if (pathType == TCL_PATH_RELATIVE) { - register FsPath* origDirFsPathPtr; + FsPath* origDirFsPathPtr; Tcl_Obj *origDir = fsPathPtr->cwdPtr; origDirFsPathPtr = (FsPath*) PATHOBJ(origDir); @@ -5316,6 +5368,7 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) fsPathPtr->cwdPtr = useThisCwd; } } + return fsPathPtr->normPathPtr; } @@ -5346,7 +5399,7 @@ Tcl_FSGetInternalRep(pathObjPtr, fsPtr) Tcl_Obj* pathObjPtr; Tcl_Filesystem *fsPtr; { - register FsPath* srcFsPathPtr; + FsPath *srcFsPathPtr; if (Tcl_FSConvertToPathType(NULL, pathObjPtr) != TCL_OK) { return NULL; @@ -5416,6 +5469,7 @@ Tcl_FSGetInternalRep(pathObjPtr, fsPtr) } srcFsPathPtr->nativePathPtr = (*proc)(pathObjPtr); } + return srcFsPathPtr->nativePathPtr; } @@ -5439,12 +5493,12 @@ Tcl_FSGetInternalRep(pathObjPtr, fsPtr) */ int -TclFSEnsureEpochOk(pathObjPtr, theEpoch, fsPtrPtr) +TclFSEnsureEpochOk(pathObjPtr, fsPtrPtr) Tcl_Obj* pathObjPtr; - int theEpoch; Tcl_Filesystem **fsPtrPtr; { - FsPath* srcFsPathPtr; + FsPath *srcFsPathPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); /* * SHOULD BE ABLE TO IMPROVE EFFICIENCY HERE. @@ -5460,7 +5514,7 @@ TclFSEnsureEpochOk(pathObjPtr, theEpoch, fsPtrPtr) * Check if the filesystem has changed in some way since * this object's internal representation was calculated. */ - if (srcFsPathPtr->filesystemEpoch != theEpoch) { + if (srcFsPathPtr->filesystemEpoch != tsdPtr->filesystemEpoch) { /* * We have to discard the stale representation and * recalculate it @@ -5479,23 +5533,24 @@ TclFSEnsureEpochOk(pathObjPtr, theEpoch, fsPtrPtr) if (srcFsPathPtr->fsRecPtr != NULL) { *fsPtrPtr = srcFsPathPtr->fsRecPtr->fsPtr; } + return TCL_OK; } void -TclFSSetPathDetails(pathObjPtr, fsRecPtr, clientData, theEpoch) +TclFSSetPathDetails(pathObjPtr, fsRecPtr, clientData) Tcl_Obj *pathObjPtr; FilesystemRecord *fsRecPtr; ClientData clientData; - int theEpoch; { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); /* We assume pathObjPtr is already of the correct type */ - FsPath* srcFsPathPtr; + FsPath *srcFsPathPtr; srcFsPathPtr = (FsPath*) PATHOBJ(pathObjPtr); srcFsPathPtr->fsRecPtr = fsRecPtr; srcFsPathPtr->nativePathPtr = clientData; - srcFsPathPtr->filesystemEpoch = theEpoch; + srcFsPathPtr->filesystemEpoch = tsdPtr->filesystemEpoch; fsRecPtr->fileRefCount++; } @@ -5554,6 +5609,7 @@ Tcl_FSEqualPaths(firstPtr, secondPtr) return 1; } } + return 0; } @@ -5587,6 +5643,7 @@ SetFsPathFromAny(interp, objPtr) FsPath *fsPathPtr; Tcl_Obj *transPtr; char *name; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); if (objPtr->typePtr == &tclFsPathType) { return TCL_OK; @@ -5724,13 +5781,14 @@ SetFsPathFromAny(interp, objPtr) */ fsPathPtr = (FsPath*)ckalloc((unsigned)sizeof(FsPath)); + fsPathPtr->translatedPathPtr = transPtr; Tcl_IncrRefCount(fsPathPtr->translatedPathPtr); fsPathPtr->normPathPtr = NULL; fsPathPtr->cwdPtr = NULL; fsPathPtr->nativePathPtr = NULL; fsPathPtr->fsRecPtr = NULL; - fsPathPtr->filesystemEpoch = theFilesystemEpoch; + fsPathPtr->filesystemEpoch = tsdPtr->filesystemEpoch; /* * Free old representation before installing our new one. @@ -5749,7 +5807,7 @@ static void FreeFsPathInternalRep(pathObjPtr) Tcl_Obj *pathObjPtr; /* Path object with internal rep to free. */ { - register FsPath* fsPathPtr = (FsPath*) PATHOBJ(pathObjPtr); + FsPath *fsPathPtr = (FsPath*) PATHOBJ(pathObjPtr); if (fsPathPtr->translatedPathPtr != NULL) { if (fsPathPtr->translatedPathPtr != pathObjPtr) { @@ -5777,7 +5835,7 @@ FreeFsPathInternalRep(pathObjPtr) if (fsPathPtr->fsRecPtr != NULL) { fsPathPtr->fsRecPtr->fileRefCount--; if (fsPathPtr->fsRecPtr->fileRefCount <= 0) { - /* It has been unregistered already */ + /* It has been unregistered already, so simply free it */ ckfree((char *)fsPathPtr->fsRecPtr); } } @@ -5791,9 +5849,9 @@ DupFsPathInternalRep(srcPtr, copyPtr) Tcl_Obj *srcPtr; /* Path obj with internal rep to copy. */ Tcl_Obj *copyPtr; /* Path obj with internal rep to set. */ { - register FsPath* srcFsPathPtr = (FsPath*) PATHOBJ(srcPtr); - register FsPath* copyFsPathPtr = - (FsPath*) ckalloc((unsigned)sizeof(FsPath)); + FsPath *srcFsPathPtr = (FsPath*) PATHOBJ(srcPtr); + FsPath *copyFsPathPtr = (FsPath*) ckalloc((unsigned)sizeof(FsPath)); + Tcl_FSDupInternalRepProc *dupProc; PATHOBJ(copyPtr) = (VOID *) copyFsPathPtr; @@ -5866,7 +5924,7 @@ static void UpdateStringOfFsPath(objPtr) register Tcl_Obj *objPtr; /* path obj with string rep to update. */ { - register FsPath* fsPathPtr = (FsPath*) PATHOBJ(objPtr); + FsPath *fsPathPtr = (FsPath*) PATHOBJ(objPtr); CONST char *cwdStr; int cwdLen; Tcl_Obj *copy; -- cgit v0.12 From b25c5f06f00da440388032287bc5c7149f8f7f81 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Jul 2003 21:01:32 +0000 Subject: * doc/tcltest.n: Restored the [Eval] proc to replace * library/tcltest/tcltest.tcl: the [::puts] command when either the -output or -error option for [test] is in use, in order to capture data written to the output or error channels for comparison against what is expected. This is easier to document and agrees better with most user expectations than the previous attempt to replace [puts] only in the caller's namespace. Documentation made more precise on the subject. [Bug 706359] --- ChangeLog | 9 +++++++++ doc/tcltest.n | 14 +++++++------- library/tcltest/tcltest.tcl | 22 ++++++---------------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1fecf5d..9376de0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,15 @@ 2003-07-18 Don Porter + * doc/tcltest.n: Restored the [Eval] proc to replace + * library/tcltest/tcltest.tcl: the [::puts] command when either the + -output or -error option for [test] is in use, in order to capture + data written to the output or error channels for comparison against + what is expected. This is easier to document and agrees better with + most user expectations than the previous attempt to replace [puts] + only in the caller's namespace. Documentation made more precise on + the subject. [Bug 706359] + * doc/AddErrInfo.3: Improved consistency of documentation * doc/CrtTrace.3: by using "null" everywhere to refer to * doc/Encoding.3: the character '\0', and using "NULL" diff --git a/doc/tcltest.n b/doc/tcltest.n index 86af612..f6067ee 100644 --- a/doc/tcltest.n +++ b/doc/tcltest.n @@ -8,7 +8,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tcltest.n,v 1.38.2.2 2003/03/26 23:51:25 dgp Exp $ +'\" RCS: @(#) $Id: tcltest.n,v 1.38.2.3 2003/07/18 21:01:32 dgp Exp $ '\" .so man.macros .TH "tcltest" n 2.2 tcltest "Tcl Bundled Packages" @@ -476,7 +476,7 @@ an empty string. The \fB-output\fR attribute supplies the \fIexpectedValue\fR against which any output sent to \fBstdout\fR or [\fBoutputChannel\fR] during evaluation of the script(s) will be compared. Note that only output printed using -[\fBputs\fR] is used for comparison. If \fB-output\fR is not specified, +[\fB::puts\fR] is used for comparison. If \fB-output\fR is not specified, output sent to \fBstdout\fR and [\fBoutputChannel\fR] is not processed for comparison. .TP @@ -484,7 +484,7 @@ comparison. The \fB-errorOutput\fR attribute supplies the \fIexpectedValue\fR against which any output sent to \fBstderr\fR or [\fBerrorChannel\fR] during evaluation of the script(s) will be compared. Note that only output -printed using [\fBputs\fR] is used for comparison. If \fB-errorOutput\fR +printed using [\fB::puts\fR] is used for comparison. If \fB-errorOutput\fR is not specified, output sent to \fBstderr\fR and [\fBerrorChannel\fR] is not processed for comparison. .TP @@ -512,7 +512,7 @@ In default operation, a successful test produces no output. The output messages produced by [\fBtest\fR] are controlled by the [\fBconfigure -verbose\fR] option as described in \fBCONFIGURABLE OPTIONS\fR below. Any output produced by the test scripts themselves should be -produced using [\fBputs\fR] to [\fBoutputChannel\fR] or +produced using [\fB::puts\fR] to [\fBoutputChannel\fR] or [\fBerrorChannel\fR], so that users of the test suite may easily capture output with the [\fBconfigure -outfile\fR] and [\fBconfigure -errfile\fR] options, and so that the \fB-output\fR @@ -1050,13 +1050,13 @@ where 'm', 'n', 'o', and 'p' refer to tests that were run at the same test level as test level-1.1. .PP Implementation of output and error comparison in the test command -depends on usage of puts in your application code. Output is -intercepted by redefining the puts command while the defined test +depends on usage of ::puts in your application code. Output is +intercepted by redefining the ::puts command while the defined test script is being run. Errors thrown by C procedures or printed directly from C applications will not be caught by the test command. Therefore, usage of the \fB-output\fR and \fB-errorOuput\fR options to [\fBtest\fR] is useful only for pure Tcl applications -that use [\fBputs\fR] to produce output. +that use [\fB::puts\fR] to produce output. .SH KEYWORDS test, test harness, test suite diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 1bc0037..934f8f0 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.4 2003/07/16 14:31:35 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.5 2003/07/18 21:01:32 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -1605,26 +1605,16 @@ proc tcltest::Eval {script {ignoreOutput 1}} { if {!$ignoreOutput} { set outData {} set errData {} - set callerHasPuts [llength [uplevel 1 { - ::info commands [::namespace current]::puts - }]] - if {$callerHasPuts} { - uplevel 1 [list ::rename puts [namespace current]::Replace::Puts] - } else { - interp alias {} [namespace current]::Replace::Puts {} ::puts - } - uplevel 1 [list ::namespace import [namespace origin Replace::puts]] + rename ::puts [namespace current]::Replace::Puts + namespace eval :: \ + [list namespace import [namespace origin Replace::puts]] namespace import Replace::puts } set result [uplevel 1 $script] if {!$ignoreOutput} { namespace forget puts - uplevel 1 ::namespace forget puts - if {$callerHasPuts} { - uplevel 1 [list ::rename [namespace current]::Replace::Puts puts] - } else { - interp alias {} [namespace current]::Replace::Puts {} - } + namespace eval :: namespace forget puts + rename [namespace current]::Replace::Puts ::puts } return $result } -- cgit v0.12 From 7265d5487c6af7a62eb6a02dbb439f996b49e826 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 18 Jul 2003 22:15:45 +0000 Subject: Tightened up Tcl_Utf{Next,Prev} docs. [Bug 769895] --- ChangeLog | 5 +++++ doc/Utf.3 | 13 ++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9376de0..71a314b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-18 Donal K. Fellows + + * doc/Utf.3: Tightened up documentation of Tcl_UtfNext and + Tcl_UtfPrev to better match the behaviour. [Bug 769895] + 2003-07-18 Jeff Hobbs * generic/tclIOUtil.c: correct MT-safety issues with filesystem diff --git a/doc/Utf.3 b/doc/Utf.3 index a61a18b..0299450 100644 --- a/doc/Utf.3 +++ b/doc/Utf.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Utf.3,v 1.13.2.1 2003/07/18 16:56:24 dgp Exp $ +'\" RCS: @(#) $Id: Utf.3,v 1.13.2.2 2003/07/18 22:15:45 dkf Exp $ '\" .so man.macros .TH Utf 3 "8.1" Tcl "Tcl Library Procedures" @@ -224,11 +224,14 @@ considered part of the UTF-8 string. Given \fIsrc\fR, a pointer to some location in a UTF-8 string, \fBTcl_UtfNext\fR returns a pointer to the next UTF-8 character in the string. The caller must not ask for the next character after the last -character in the string. +character in the string if the string is not terminated by a null +character. .PP -Given \fIsrc\fR, a pointer to some location in a UTF-8 string, -\fBTcl_UtfPrev\fR returns a pointer to the previous UTF-8 character in the -string. This function will not back up to a position before \fIstart\fR, +Given \fIsrc\fR, a pointer to some location in a UTF-8 string (or to a +null byte immediately following such a string), \fBTcl_UtfPrev\fR +returns a pointer to the closest preceding byte that starts a UTF-8 +character. +This function will not back up to a position before \fIstart\fR, the start of the UTF-8 string. If \fIsrc\fR was already at \fIstart\fR, the return value will be \fIstart\fR. .PP -- cgit v0.12 From b48c6ea6c1f6c8a6cf870c15799cf33cb88d0b7d Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Jul 2003 23:35:37 +0000 Subject: * generic/tclBasic.c: Corrected several instances of unsafe * generic/tclCompile.c: truncation of UTF-8 strings that might * generic/tclProc.c: break apart a multi-byte character. * library/init.tcl: [Bug 760872] * tests/init.test: --- ChangeLog | 6 ++++++ generic/tclBasic.c | 59 ++++++++++++++++++++++++++++++++++------------------ generic/tclCompile.c | 10 ++++++++- generic/tclProc.c | 18 +++++++++++++++- library/init.tcl | 10 +++++---- tests/init.test | 12 +++++------ 6 files changed, 82 insertions(+), 33 deletions(-) diff --git a/ChangeLog b/ChangeLog index 71a314b..bc64fd4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,6 +14,12 @@ 2003-07-18 Don Porter + * generic/tclBasic.c: Corrected several instances of unsafe + * generic/tclCompile.c: truncation of UTF-8 strings that might + * generic/tclProc.c: break apart a multi-byte character. + * library/init.tcl: [Bug 760872] + * tests/init.test: + * doc/tcltest.n: Restored the [Eval] proc to replace * library/tcltest/tcltest.tcl: the [::puts] command when either the -output or -error option for [test] is in use, in order to capture diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 80f5bda..629293f 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.4 2003/06/10 19:58:34 msofer Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.5 2003/07/18 23:35:38 dgp Exp $ */ #include "tclInt.h" @@ -3304,6 +3304,14 @@ Tcl_LogCommandInfo(interp, script, command, length) length = 150; ellipsis = "..."; } + while ( (command[length] & 0xC0) == 0x80 ) { + /* + * Back up truncation point so that we don't truncate in the + * middle of a multi-byte character (in UTF-8) + */ + length--; + ellipsis = "..."; + } if (!(iPtr->flags & ERR_IN_PROGRESS)) { sprintf(buffer, "\n while executing\n\"%.*s%s\"", length, command, ellipsis); @@ -4562,8 +4570,7 @@ TclObjInvoke(interp, objc, objv, flags) int localObjc; /* Used to invoke "unknown" if the */ Tcl_Obj **localObjv = NULL; /* command is not found. */ register int i; - int length, result; - char *bytes; + int result; if (interp == (Tcl_Interp *) NULL) { return TCL_ERROR; @@ -4656,29 +4663,41 @@ TclObjInvoke(interp, objc, objv, flags) if ((result == TCL_ERROR) && ((flags & TCL_INVOKE_NO_TRACEBACK) == 0) && ((iPtr->flags & ERR_ALREADY_LOGGED) == 0)) { - Tcl_DString ds; + Tcl_Obj *msg; - Tcl_DStringInit(&ds); if (!(iPtr->flags & ERR_IN_PROGRESS)) { - Tcl_DStringAppend(&ds, "\n while invoking\n\"", -1); + msg = Tcl_NewStringObj("\n while invoking\n\"", -1); } else { - Tcl_DStringAppend(&ds, "\n invoked from within\n\"", -1); + msg = Tcl_NewStringObj("\n invoked from within\n\"", -1); } + Tcl_IncrRefCount(msg); for (i = 0; i < objc; i++) { - bytes = Tcl_GetStringFromObj(objv[i], &length); - Tcl_DStringAppend(&ds, bytes, length); - if (i < (objc - 1)) { - Tcl_DStringAppend(&ds, " ", -1); - } else if (Tcl_DStringLength(&ds) > 100) { - Tcl_DStringSetLength(&ds, 100); - Tcl_DStringAppend(&ds, "...", -1); - break; - } + CONST char *bytes; + int length; + + Tcl_AppendObjToObj(msg, objv[i]); + bytes = Tcl_GetStringFromObj(msg, &length); + if (length > 100) { + /* + * Back up truncation point so that we don't truncate + * in the middle of a multi-byte character. + */ + length = 100; + while ( (bytes[length] & 0xC0) == 0x80 ) { + length--; + } + Tcl_SetObjLength(msg, length); + Tcl_AppendToObj(msg, "...", -1); + break; + } + if (i != (objc - 1)) { + Tcl_AppendToObj(msg, " ", -1); + } } - - Tcl_DStringAppend(&ds, "\"", -1); - Tcl_AddObjErrorInfo(interp, Tcl_DStringValue(&ds), -1); - Tcl_DStringFree(&ds); + + Tcl_AppendToObj(msg, "\"", -1); + Tcl_AddObjErrorInfo(interp, Tcl_GetString(msg), -1); + Tcl_DecrRefCount(msg); iPtr->flags &= ~ERR_ALREADY_LOGGED; } diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 46628b1..6c619e9 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.2 2003/04/18 21:54:24 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.3 2003/07/18 23:35:38 dgp Exp $ */ #include "tclInt.h" @@ -1727,6 +1727,14 @@ LogCompilationInfo(interp, script, command, length) length = 150; ellipsis = "..."; } + while ( (command[length] & 0xC0) == 0x80 ) { + /* + * Back up truncation point so that we don't truncate in the + * middle of a multi-byte character (in UTF-8) + */ + length--; + ellipsis = "..."; + } sprintf(buffer, "\n while compiling\n\"%.*s%s\"", length, command, ellipsis); Tcl_AddObjErrorInfo(interp, buffer, -1); diff --git a/generic/tclProc.c b/generic/tclProc.c index 4e3d4b8..1ec50f1 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44 2002/12/11 21:29:52 dgp Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.1 2003/07/18 23:35:39 dgp Exp $ */ #include "tclInt.h" @@ -1229,6 +1229,14 @@ TclProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, procName) numChars = 50; ellipsis = "..."; } + while ( (procName[numChars] & 0xC0) == 0x80 ) { + /* + * Back up truncation point so that we don't truncate + * in the middle of a multi-byte character (in UTF-8) + */ + numChars--; + ellipsis = "..."; + } sprintf(buf, "\n (compiling %s \"%.*s%s\", line %d)", description, numChars, procName, ellipsis, interp->errorLine); @@ -1313,6 +1321,14 @@ ProcessProcResultCode(interp, procName, nameLen, returnCode) nameLen = 60; ellipsis = "..."; } + while ( (procName[nameLen] & 0xC0) == 0x80 ) { + /* + * Back up truncation point so that we don't truncate in the + * middle of a multi-byte character (in UTF-8) + */ + nameLen--; + ellipsis = "..."; + } sprintf(msg, "\n (procedure \"%.*s%s\" line %d)", nameLen, procName, ellipsis, iPtr->errorLine); Tcl_AddObjErrorInfo(interp, msg, -1); diff --git a/library/init.tcl b/library/init.tcl index e5a5d0f..8ad26f9 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.55 2002/11/23 01:41:35 hobbs Exp $ +# RCS: @(#) $Id: init.tcl,v 1.55.2.1 2003/07/18 23:35:39 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -220,10 +220,12 @@ proc unknown args { # construct the stack trace. # set cinfo $args - if {[string length $cinfo] > 150} { - set cinfo "[string range $cinfo 0 149]..." + set ellipsis "" + while {[string bytelength $cinfo] > 150} { + set cinfo [string range $cinfo 0 end-1] + set ellipsis "..." } - append cinfo "\"\n (\"uplevel\" body line 1)" + append cinfo $ellipsis "\"\n (\"uplevel\" body line 1)" append cinfo "\n invoked from within" append cinfo "\n\"uplevel 1 \$args\"" # diff --git a/tests/init.test b/tests/init.test index 6881c93..67a23a6 100644 --- a/tests/init.test +++ b/tests/init.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: init.test,v 1.9 2002/06/05 01:12:38 dgp Exp $ +# RCS: @(#) $Id: init.test,v 1.9.2.1 2003/07/18 23:35:39 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -67,10 +67,6 @@ interp eval $testInterp [list namespace import -force ::tcltest::*] interp eval $testInterp { -if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest -} - auto_reset catch {rename parray {}} @@ -154,7 +150,7 @@ test init-3.0 {random stuff in the auto_index, should still work} { # should be the same. set count 0 -foreach arg { +foreach arg [subst -nocommands -novariables { c {argument which spans @@ -174,7 +170,8 @@ foreach arg { error stack cannot be uniquely determined. foo bar "} - } { + {argument that contains non-ASCII character, \u20ac, and which is of such great length that it will be longer than 150 bytes so it will be truncated by the Tcl C library} + }] { test init-4.$count.0 {::errorInfo produced by [unknown]} { auto_reset @@ -200,6 +197,7 @@ foreach arg { incr count } +cleanupTests } ;# End of [interp eval $testInterp] # cleanup -- cgit v0.12 From bfa7d8aa0f1d453d28fc616d8450be2c6072f080 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 19 Jul 2003 01:35:01 +0000 Subject: * macosx/Makefile: added option to allow installing manpages in addition to default html help. --- ChangeLog | 5 +++++ macosx/Makefile | 21 +++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index bc64fd4..3798e44 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-18 Daniel Steffen + + * macosx/Makefile: added option to allow installing manpages + in addition to default html help. + 2003-07-18 Donal K. Fellows * doc/Utf.3: Tightened up documentation of Tcl_UtfNext and diff --git a/macosx/Makefile b/macosx/Makefile index 59aa677..781a19d 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -3,7 +3,7 @@ # Makefile to build Tcl on Mac OS X packaged as a Framework # uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5.2.2 2003/07/18 01:06:16 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.3 2003/07/19 01:35:01 das Exp $ # ######################################################################################################## @@ -23,6 +23,10 @@ EXTRA_MAKE_ARGS ?= INSTALL_PATH ?= /Library/Frameworks PREFIX ?= /usr BINDIR ?= ${PREFIX}/bin +MANDIR ?= ${PREFIX}/man + +# set to non-empty value to install manpages in addition to html help: +INSTALL_MANPAGES ?= TCL_PACKAGE_PATH ?= "~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl \ ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks \ @@ -116,8 +120,9 @@ ${PROJECT}: install-${PROJECT} ${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && ${UNIX_DIR}/configure \ - --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} --includedir=${INCLUDEDIR} \ - --enable-threads --enable-framework ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} + --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} \ + --includedir=${INCLUDEDIR} --mandir=${MANDIR} --enable-threads \ + --enable-framework ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} cd ${OBJ_DIR} && mkdir -p ${PRODUCT_NAME}.framework && \ ln -fs ../${PRODUCT_NAME} ${PRODUCT_NAME}.framework/${PRODUCT_NAME} @@ -132,10 +137,10 @@ build-${PROJECT}: ${OBJ_DIR}/Makefile ln -fs ${OBJ_DIR}/tcltest ${SYMROOT} clean-${PROJECT}: - ${MAKE} -C ${OBJ_DIR} clean + ${MAKE} -C ${OBJ_DIR} clean ${EXTRA_MAKE_ARGS} distclean-${PROJECT}: - ${MAKE} -C ${OBJ_DIR} distclean + ${MAKE} -C ${OBJ_DIR} distclean ${EXTRA_MAKE_ARGS} rm -rf ${OBJ_DIR} ${PRODUCT_NAME}.framework tclsh${PRODUCT_VERSION} tcltest install-${PROJECT}: build-${PROJECT} @@ -173,9 +178,13 @@ else mkdir -p ${INSTALL_ROOT}/usr/bin && \ ln -fs ${TCLSH} ${INSTALL_ROOT}/${BINDIR}/tclsh ifeq (${BUILD_STYLE},Deployment) +ifneq (${INSTALL_MANPAGES},) +# install manpages + ${MAKE} -C ${OBJ_DIR} install-doc ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} +endif # build html documentation export DYLD_FRAMEWORK_PATH=${SYMROOT} && \ - ${MAKE} -C ${OBJ_DIR} html-tcl \ + ${MAKE} -C ${OBJ_DIR} html-tcl ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} \ DISTDIR=${INSTALL_ROOT}${DOCDIR} TCL_EXE=${TCL_EXE} && \ cd ${INSTALL_ROOT}${DOCDIR} && ln -fs contents.htm html/${PRODUCT_NAME}TOC.html && \ rm -fr "${PRODUCT_NAME}" && mv -f html "${PRODUCT_NAME}" -- cgit v0.12 From 8d503268994d3ca23ae633208914c87f2d2f22e3 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 21 Jul 2003 17:30:46 +0000 Subject: Updated changes for 8.4.4 release --- ChangeLog | 2 +- changes | 43 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3798e44..28a396a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -237,7 +237,7 @@ 2003-06-10 Miguel Sofer * generic/tclBasic.c: - * generic/tclExecute.c: let TclExecuteObjvInternal call + * generic/tclExecute.c: let TclEvalObjvInternal call TclInterpReady instead of relying on its callers to do so; fix for the part of [Bug 495830] that is new in 8.4. * tests/interp.test: Added tests 18.9 (knownbug) and 18.10 diff --git a/changes b/changes index a1c593e..2871d4d 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.1 2003/05/20 18:33:30 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.79.2.2 2003/07/21 17:30:46 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5839,3 +5839,44 @@ encoding for the original. Most uses of gb2312 really mean euc-cn. problem when compiling on Windows and using Microsoft's runtime. --- Released 8.4.3, May 20, 2003 --- See ChangeLog for details --- + +2003-05-23 (bug fix)[726018] reverted internals change to the +'cmdName' Tcl_ObjType that broke several extensions (TclBlend, e4graph...) +in the 8.4.3 release. + +2003-06-10 (bug fix)[495830] stop eval of bytecode in deleted interp. + +2003-06-17 (bug fix) corrections to regexp when matching emtpy string. + +2003-06-25 (bug fix)[748957] -*ieee compiler flags for Tru64 builds. + +2003-07-11 (bug fix) [pkg_mkIndex] indexes provided packages, not indexed ones. + +2003-07-15 (feature enhancment) MacOSX build system rewrite. + +2003-07-15 (bug fix)[771613] corrected segfault in [if] (buffer overflow) + +2003-07-16 (bug fix)[756791] corrected assumption that Tcl_Free == free + +2003-07-16 (feature enhancment) -DTCL_UTF_MAX=6 compile option forces +internal UCS-4 representation of Unicode. + +2003-07-16 (bug fix)[767578] 64-bit corrections in thread notifier. + +2003-07-16 (bug fix)[759607] Safe Base tests normalized paths. + +2003-07-16 (feature enhancement)[Patch 679315] improved Cygwin path support + +2003-07-18 (bug fix)[706359] corrected broken -output option of [tcltest::test] +=> tcltest 2.4.4 + +2003-07-18 (bug fix)[753315] MT-safety of VFS records. + +2003-07-18 (bug fix)[759888] support for user:pass in URL by [http::geturl] +=> http 2.4.4 + +Improved documentation, new tests, and some code cleanup. +[655300, 720634, 735364, 748700, 756112, 756744, 756951, 758488, 760768, +763312, 769895, 771539, 771840, 771947, 771949, 772333] + +--- Released 8.4.4, July 22, 2003 --- See ChangeLog for details --- -- cgit v0.12 From b97d67a34a4654e6a0c00df64e11361e4c4d4ca5 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 21 Jul 2003 22:12:54 +0000 Subject: typo corrections --- changes | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/changes b/changes index 2871d4d..df75e57 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.2 2003/07/21 17:30:46 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.3 2003/07/21 22:12:54 hobbs Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5852,14 +5852,14 @@ in the 8.4.3 release. 2003-07-11 (bug fix) [pkg_mkIndex] indexes provided packages, not indexed ones. -2003-07-15 (feature enhancment) MacOSX build system rewrite. +2003-07-15 (feature enhancement) MacOSX build system rewrite. 2003-07-15 (bug fix)[771613] corrected segfault in [if] (buffer overflow) 2003-07-16 (bug fix)[756791] corrected assumption that Tcl_Free == free -2003-07-16 (feature enhancment) -DTCL_UTF_MAX=6 compile option forces -internal UCS-4 representation of Unicode. +2003-07-16 (feature enhancement) -DTCL_UTF_MAX=6 compile option forces +internal UCS-4 representation of Unicode (default is recommended UCS-2). 2003-07-16 (bug fix)[767578] 64-bit corrections in thread notifier. -- cgit v0.12 From 89212c6e7322ff64c4b8b3b0faaf459d9371e464 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 21 Jul 2003 22:36:50 +0000 Subject: note 8.4.4 tag date --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 28a396a..fe50573 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-07-21 Jeff Hobbs + + *** 8.4.4 TAGGED FOR RELEASE *** + + * changes: updated for 8.4.4 release + 2003-07-18 Daniel Steffen * macosx/Makefile: added option to allow installing manpages -- cgit v0.12 From 357da0177eba27ebbbe1423533bcbc8e30cd2e52 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Tue, 22 Jul 2003 23:50:16 +0000 Subject: * win/tclWinReg.c (OpenSubKey): Backported fix for bug 775976 which causes the registry set command to fail when built with VC7. --- ChangeLog | 5 +++++ win/tclWinReg.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index fe50573..c319ad7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-23 Pat Thoyts + + * win/tclWinReg.c (OpenSubKey): Backported fix for bug 775976 + which causes the registry set command to fail when built with VC7. + 2003-07-21 Jeff Hobbs *** 8.4.4 TAGGED FOR RELEASE *** diff --git a/win/tclWinReg.c b/win/tclWinReg.c index 50aa8e6..9ae0b73 100644 --- a/win/tclWinReg.c +++ b/win/tclWinReg.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinReg.c,v 1.21 2003/03/03 17:12:49 dgp Exp $ + * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.1 2003/07/22 23:50:17 patthoyts Exp $ */ #include @@ -982,7 +982,7 @@ OpenSubKey( keyName = (char *) Tcl_WinUtfToTChar(keyName, -1, &buf); if (flags & REG_CREATE) { DWORD create; - result = (*regWinProcs->regCreateKeyExProc)(rootKey, keyName, 0, "", + result = (*regWinProcs->regCreateKeyExProc)(rootKey, keyName, 0, NULL, REG_OPTION_NON_VOLATILE, mode, NULL, keyPtr, &create); } else { if (rootKey == HKEY_PERFORMANCE_DATA) { -- cgit v0.12 From 8ec43e75e59a28d15ca560fc3cae5fd50d93d334 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 23 Jul 2003 05:53:58 +0000 Subject: * unix/Makefile.in: added macosx/README to dist target. --- ChangeLog | 4 ++++ unix/Makefile.in | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c319ad7..d4666c0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-07-23 Daniel Steffen + + * unix/Makefile.in: added macosx/README to dist target. + 2003-07-23 Pat Thoyts * win/tclWinReg.c (OpenSubKey): Backported fix for bug 775976 diff --git a/unix/Makefile.in b/unix/Makefile.in index f9853a8..bbcf604 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.2 2003/07/15 01:15:51 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.3 2003/07/23 05:53:58 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1294,6 +1294,7 @@ dist: mklinks $(DISTDIR)/macosx mkdir $(DISTDIR)/macosx/Tcl.pbproj cp -p $(TOP_DIR)/macosx/Tcl.pbproj/*.pbx* $(DISTDIR)/macosx/Tcl.pbproj + cp -p $(TOP_DIR)/macosx/README $(DISTDIR)/macosx mkdir $(DISTDIR)/unix/dltest cp -p $(UNIX_DIR)/dltest/*.c $(UNIX_DIR)/dltest/Makefile.in \ $(UNIX_DIR)/dltest/README \ -- cgit v0.12 From 5cc61e2eb64eeec7fe4d7da197a6044781805915 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 23 Jul 2003 15:40:39 +0000 Subject: * unix/Makefile.in: changes to html-tcl & html-tk targets for compatibility with non-gnu makes. --- ChangeLog | 3 +++ unix/Makefile.in | 14 +++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index d4666c0..2a309c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-07-23 Daniel Steffen + * unix/Makefile.in: changes to html-tcl & html-tk + targets for compatibility with non-gnu makes. + * unix/Makefile.in: added macosx/README to dist target. 2003-07-23 Pat Thoyts diff --git a/unix/Makefile.in b/unix/Makefile.in index bbcf604..1da4b77 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.3 2003/07/23 05:53:58 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.4 2003/07/23 15:40:39 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1344,12 +1344,16 @@ allpatch: dist # TOOL_DIR. # -html-tcl: EXTRA_HTML_ARGS=--tcl -html-tk: EXTRA_HTML_ARGS=--tk +html: + $(BUILD_HTML) +html-tcl: + $(BUILD_HTML) --tcl +html-tk: + $(BUILD_HTML) --tk -html html-tcl html-tk: +BUILD_HTML = \ $(TCL_EXE) $(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(DISTDIR)/html \ - --srcdir=$(TOP_DIR)/.. $(EXTRA_HTML_ARGS) + --srcdir=$(TOP_DIR)/.. # # Target to create a Macintosh version of the distribution. This will -- cgit v0.12 From 6248e23e7c565a5d6a254cf61caea7a49365cb2d Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 23 Jul 2003 20:57:56 +0000 Subject: * win/tclWinReg.c: Incremented the version to 1.1.2. * library/reg/pkgIndex.tcl: --- ChangeLog | 1 + library/reg/pkgIndex.tcl | 4 ++-- win/tclWinReg.c | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2a309c6..b9acee6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ * win/tclWinReg.c (OpenSubKey): Backported fix for bug 775976 which causes the registry set command to fail when built with VC7. + * library/reg/pkgIndex.tcl: Incremented the version to 1.1.2. 2003-07-21 Jeff Hobbs diff --git a/library/reg/pkgIndex.tcl b/library/reg/pkgIndex.tcl index 230d120..ad9a54b 100755 --- a/library/reg/pkgIndex.tcl +++ b/library/reg/pkgIndex.tcl @@ -1,8 +1,8 @@ if {![package vsatisfies [package provide Tcl] 8]} {return} if {[info exists ::tcl_platform(debug)]} { - package ifneeded registry 1.1.1 \ + package ifneeded registry 1.1.2 \ [list load [file join $dir tclreg11g.dll] registry] } else { - package ifneeded registry 1.1.1 \ + package ifneeded registry 1.1.2 \ [list load [file join $dir tclreg11.dll] registry] } diff --git a/win/tclWinReg.c b/win/tclWinReg.c index 9ae0b73..75fc12b 100644 --- a/win/tclWinReg.c +++ b/win/tclWinReg.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.1 2003/07/22 23:50:17 patthoyts Exp $ + * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.2 2003/07/23 20:57:57 patthoyts Exp $ */ #include @@ -228,7 +228,7 @@ Registry_Init( } Tcl_CreateObjCommand(interp, "registry", RegistryObjCmd, NULL, NULL); - return Tcl_PkgProvide(interp, "registry", "1.1.1"); + return Tcl_PkgProvide(interp, "registry", "1.1.2"); } /* -- cgit v0.12 From ecdb9c008496decbaa68719d08c1c22522fa87af Mon Sep 17 00:00:00 2001 From: rmax Date: Thu, 24 Jul 2003 08:23:17 +0000 Subject: * library/package.tcl: Fixed a typo that broke pkg_mkIndex -verbose. --- library/package.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/package.tcl b/library/package.tcl index 663b84a..fa6f445 100644 --- a/library/package.tcl +++ b/library/package.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl which can be loaded on demand # for package management. # -# RCS: @(#) $Id: package.tcl,v 1.23.2.1 2003/07/11 18:46:25 dgp Exp $ +# RCS: @(#) $Id: package.tcl,v 1.23.2.2 2003/07/24 08:23:17 rmax Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -368,7 +368,7 @@ proc pkg_mkIndex {args} { set cmds [lsort [$c eval array names ::tcl::newCmds]] set pkgs [$c eval set ::tcl::newPkgs] if {$doVerbose} { - if { !$::tcl::direct } { + if { !$direct } { tclLog "commands provided were $cmds" } tclLog "packages provided were $pkgs" -- cgit v0.12 From 81543609e0daf5bb8903f0212a4010db7f41ea6d Mon Sep 17 00:00:00 2001 From: rmax Date: Thu, 24 Jul 2003 08:23:39 +0000 Subject: * tests/pkgMkIndex.test: Added a test for [pkg_mkIndex -verbose]. --- tests/pkgMkIndex.test | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/pkgMkIndex.test b/tests/pkgMkIndex.test index 104ef8b..985ba47 100644 --- a/tests/pkgMkIndex.test +++ b/tests/pkgMkIndex.test @@ -8,7 +8,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: pkgMkIndex.test,v 1.23 2002/07/06 18:19:46 dgp Exp $ +# RCS: @(#) $Id: pkgMkIndex.test,v 1.23.2.1 2003/07/24 08:23:39 rmax Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -285,6 +285,14 @@ test pkgMkIndex-2.3 {simple package - direct loading is default} { pkgtest::runIndex $fullPkgPath simple.tcl } "0 {{simple:1.0 {[list source [file join $fullPkgPath simple.tcl]]}}}" +test pkgMkIndex-2.4 {simple package - use -verbose} -body { + pkgtest::runIndex -verbose $fullPkgPath simple.tcl +} -result "0 {{simple:1.0 {[list source [file join $fullPkgPath simple.tcl]]}}}" \ + -errorOutput {successful sourcing of simple.tcl +packages provided were {simple 1.0} +processed simple.tcl +} + removeFile [file join pkg simple.tcl] makeFile { -- cgit v0.12 From 8bf71aefeb2605b9a52a0ad26abdcbd2cca773d6 Mon Sep 17 00:00:00 2001 From: rmax Date: Thu, 24 Jul 2003 08:23:52 +0000 Subject: *** empty log message *** --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index b9acee6..4069f46 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-07-24 Reinhard Max + + * library/package.tcl: Fixed a typo that broke pkg_mkIndex -verbose. + + * tests/pkgMkIndex.test: Added a test for [pkg_mkIndex -verbose]. + 2003-07-23 Daniel Steffen * unix/Makefile.in: changes to html-tcl & html-tk -- cgit v0.12 From bd39475b4139a926053be2ef84d90bb43ac8fe80 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Tue, 5 Aug 2003 16:19:54 +0000 Subject: * generic/tclExecute.c (INST_INVOKE, INST_EVAL, INST_PUSH_RESULT): added a Tcl_ResetResult(interp) at each point where the interp's result is pushed onto the stack, to avoid keeping an extra reference that may cause costly Tcl_Obj duplication [Bug 781585] Detected by Franco Violi, analyzed by Peter Spjuth and Donal Fellows. --- ChangeLog | 9 +++++++++ generic/tclExecute.c | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4069f46..79b722f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2003-08-05 Miguel Sofer + + * generic/tclExecute.c (INST_INVOKE, INST_EVAL, INST_PUSH_RESULT): + added a Tcl_ResetResult(interp) at each point where the interp's + result is pushed onto the stack, to avoid keeping an extra + reference that may cause costly Tcl_Obj duplication [Bug 781585] + Detected by Franco Violi, analyzed by Peter Spjuth and Donal + Fellows. + 2003-07-24 Reinhard Max * library/package.tcl: Fixed a typo that broke pkg_mkIndex -verbose. diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 578be7e..15a5c7a 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.3 2003/06/10 19:58:35 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.4 2003/08/05 16:19:54 msofer Exp $ */ #include "tclInt.h" @@ -1425,7 +1425,16 @@ TclExecuteByteCode(interp, codePtr) objc, cmdNameBuf), Tcl_GetObjResult(interp)); objResultPtr = Tcl_GetObjResult(interp); - NEXT_INST_V(pcAdjustment, opnd, 1); + + /* + * Reset the interp's result to avoid possible duplications + * of large objects [Bug 781585]; be careful to increase its + * refCount before resetting the result. + */ + + Tcl_IncrRefCount(objResultPtr); + Tcl_ResetResult(interp); + NEXT_INST_V(pcAdjustment, opnd, -1); } else { cleanup = opnd; goto processExceptionReturn; @@ -1451,7 +1460,16 @@ TclExecuteByteCode(interp, codePtr) objResultPtr = Tcl_GetObjResult(interp); TRACE_WITH_OBJ(("\"%.30s\" => ", O2S(objPtr)), Tcl_GetObjResult(interp)); - NEXT_INST_F(1, 1, 1); + + /* + * Reset the interp's result to avoid possible duplications + * of large objects [Bug 781585]; be careful to increase its + * refCount before resetting the result. + */ + + Tcl_IncrRefCount(objResultPtr); + Tcl_ResetResult(interp); + NEXT_INST_F(1, 1, -1); } else { cleanup = 1; goto processExceptionReturn; @@ -3931,7 +3949,15 @@ TclExecuteByteCode(interp, codePtr) case INST_PUSH_RESULT: objResultPtr = Tcl_GetObjResult(interp); TRACE_WITH_OBJ(("=> "), Tcl_GetObjResult(interp)); - NEXT_INST_F(1, 0, 1); + /* + * Reset the interp's result to avoid possible duplications + * of large objects [Bug 781585]; be careful to increase its + * refCount before resetting the result. + */ + + Tcl_IncrRefCount(objResultPtr); + Tcl_ResetResult(interp); + NEXT_INST_F(1, 0, -1); case INST_PUSH_RETURN_CODE: objResultPtr = Tcl_NewLongObj(result); -- cgit v0.12 From 19a49f579c4a8e2fb5c4cc8da333de09e8f11395 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 6 Aug 2003 23:02:40 +0000 Subject: * library/msgcat/msgcat.tcl: Added escape so that non-Windows * library/msgcat/pkgIndex.tcl: platforms do not try to use the registry package. This can save a costly and pointless package search. Bumped to 1.3.1. Thanks to "imdave1". [Bug 781609]. --- ChangeLog | 7 +++++++ library/msgcat/msgcat.tcl | 15 +++++++++++---- library/msgcat/pkgIndex.tcl | 2 +- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 79b722f..d9592e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-08-06 Don Porter + + * library/msgcat/msgcat.tcl: Added escape so that non-Windows + * library/msgcat/pkgIndex.tcl: platforms do not try to use the + registry package. This can save a costly and pointless package + search. Bumped to 1.3.1. Thanks to "imdave1". [Bug 781609]. + 2003-08-05 Miguel Sofer * generic/tclExecute.c (INST_INVOKE, INST_EVAL, INST_PUSH_RESULT): diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl index 13bf10d..ab47299 100644 --- a/library/msgcat/msgcat.tcl +++ b/library/msgcat/msgcat.tcl @@ -10,12 +10,12 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: msgcat.tcl,v 1.17 2002/08/20 15:33:32 dgp Exp $ +# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.1 2003/08/06 23:02:41 dgp Exp $ package require Tcl 8.2 # When the version number changes, be sure to update the pkgIndex.tcl file, # and the installation directory in the Makefiles. -package provide msgcat 1.3 +package provide msgcat 1.3.1 namespace eval msgcat { namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \ @@ -422,9 +422,16 @@ proc msgcat::Init {} { } } # + # The rest of this routine is special processing for Windows; + # all other platforms, get out now. + # + if { ![string equal $::tcl_platform(platform) windows] } { + mclocale C + return + } + # # On Windows, try to set locale depending on registry settings, - # or fall back on locale of "C". Other platforms will return - # when they fail to load the registry package. + # or fall back on locale of "C". # set key {HKEY_CURRENT_USER\Control Panel\International} if {[catch {package require registry}] \ diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl index 9d16a19..90198df 100644 --- a/library/msgcat/pkgIndex.tcl +++ b/library/msgcat/pkgIndex.tcl @@ -1,2 +1,2 @@ if {![package vsatisfies [package provide Tcl] 8.2]} {return} -package ifneeded msgcat 1.3 [list source [file join $dir msgcat.tcl]] +package ifneeded msgcat 1.3.1 [list source [file join $dir msgcat.tcl]] -- cgit v0.12 From 3f8d9162c4a63b45762caa5a49356411f606678c Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 6 Aug 2003 23:50:06 +0000 Subject: * win/tclWinInit.c: recognize amd64 and ia32_on_win64 cpus and Windows CE platform. --- ChangeLog | 13 +++++++++---- win/tclWinInit.c | 17 ++++++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index d9592e2..cf21146 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,14 @@ +2003-08-06 Jeff Hobbs + + * win/tclWinInit.c: recognize amd64 and ia32_on_win64 cpus and + Windows CE platform. + 2003-08-06 Don Porter - * library/msgcat/msgcat.tcl: Added escape so that non-Windows - * library/msgcat/pkgIndex.tcl: platforms do not try to use the - registry package. This can save a costly and pointless package - search. Bumped to 1.3.1. Thanks to "imdave1". [Bug 781609]. + * library/msgcat/msgcat.tcl: Added escape so that non-Windows + * library/msgcat/pkgIndex.tcl: platforms do not try to use the + registry package. This can save a costly and pointless package + search. Bumped to 1.3.1. Thanks to "imdave1". [Bug 781609]. 2003-08-05 Miguel Sofer diff --git a/win/tclWinInit.c b/win/tclWinInit.c index 2ab64a3..f3f0865 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclWinInit.c,v 1.40 2003/02/27 03:47:09 chengyemao Exp $ + * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.1 2003/08/06 23:50:06 hobbs Exp $ */ #include "tclWinInt.h" @@ -58,6 +58,12 @@ typedef struct { #ifndef PROCESSOR_ARCHITECTURE_MSIL #define PROCESSOR_ARCHITECTURE_MSIL 8 #endif +#ifndef PROCESSOR_ARCHITECTURE_AMD64 +#define PROCESSOR_ARCHITECTURE_AMD64 9 +#endif +#ifndef PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 +#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 +#endif #ifndef PROCESSOR_ARCHITECTURE_UNKNOWN #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF #endif @@ -68,14 +74,15 @@ typedef struct { */ -#define NUMPLATFORMS 3 +#define NUMPLATFORMS 4 static char* platforms[NUMPLATFORMS] = { - "Win32s", "Windows 95", "Windows NT" + "Win32s", "Windows 95", "Windows NT", "Windows CE" }; -#define NUMPROCESSORS 9 +#define NUMPROCESSORS 11 static char* processors[NUMPROCESSORS] = { - "intel", "mips", "alpha", "ppc", "shx", "arm", "ia64", "alpha64", "msil" + "intel", "mips", "alpha", "ppc", "shx", "arm", "ia64", "alpha64", "msil", + "amd64", "ia32_on_win64" }; /* Used to store the encoding used for binary files */ -- cgit v0.12 From d5b3a83348608a67789570a2a477e0f204681bfd Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 27 Aug 2003 17:56:46 +0000 Subject: * tests/util.test: Added new tests for remaining TclNeedSpace() bugs discussed in [Bug 411825]. --- ChangeLog | 5 +++++ tests/util.test | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index cf21146..62186a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-08-27 Don Porter + + * tests/util.test: Added new tests for remaining TclNeedSpace() + bugs discussed in [Bug 411825]. + 2003-08-06 Jeff Hobbs * win/tclWinInit.c: recognize amd64 and ia32_on_win64 cpus and diff --git a/tests/util.test b/tests/util.test index fe94732..9341047 100644 --- a/tests/util.test +++ b/tests/util.test @@ -7,7 +7,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: util.test,v 1.10 2002/01/02 13:52:04 dkf Exp $ +# RCS: @(#) $Id: util.test,v 1.10.4.1 2003/08/27 17:56:46 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -300,6 +300,12 @@ set tcl_precision 12 # This test always succeeded in the C locale anyway... test util-8.1 {TclNeedSpace - correct UTF8 handling} { + # Bug 411825 + # Note that this test relies on the fact that + # [interp target] calls on Tcl_AppendElement() + # which calls on TclNeedSpace(). If [interp target] + # is ever updated, this test will no longer test + # TclNeedSpace. interp create \u5420 interp create [list \u5420 foo] interp alias {} fooset [list \u5420 foo] set @@ -308,6 +314,35 @@ test util-8.1 {TclNeedSpace - correct UTF8 handling} { set result } "\u5420 foo" +set ::tcltest::testConstraints(testdstring) \ + [expr {[info commands testdstring] != {}}] + +test util-8.2 {TclNeedSpace - correct UTF8 handling} testdstring { + # Bug 411825 + # This tests the same bug as the previous test, but + # should be more future-proof, as the DString + # operations will likely continue to call TclNeedSpace + testdstring free + testdstring append \u5420 -1 + testdstring element foo + llength [testdstring get] +} 2 +test util-8.3 {TclNeedSpace - correct UTF8 handling} testdstring { + # Bug 411825 - new variant reported by Dossy Shiobara + testdstring free + testdstring append \u00A0 -1 + testdstring element foo + llength [testdstring get] +} 2 +test util-8.4 {TclNeedSpace - correct UTF8 handling} testdstring { + # Another bug uncovered while fixing 411825 + testdstring free + testdstring append {\ } -1 + testdstring append \{ -1 + testdstring element foo + llength [testdstring get] +} 2 + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 758447b224c0281798e3ea384b40d6deaa74902b Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 27 Aug 2003 20:09:49 +0000 Subject: * generic/tclUtil.c: Corrected [Bug 411825] and other bugs in TclNeedSpace() where non-breaking space (\u00A0) and backslash-escaped spaces were handled incorrectly. * tests/util.test: Added new tests util-8.[2-6]. --- ChangeLog | 6 ++++-- generic/tclUtil.c | 61 ++++++++++++++++++++++++++++++++----------------------- tests/util.test | 22 +++++++++++++++++++- 3 files changed, 61 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index 62186a2..9a4bf74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,9 @@ 2003-08-27 Don Porter - * tests/util.test: Added new tests for remaining TclNeedSpace() - bugs discussed in [Bug 411825]. + * generic/tclUtil.c: Corrected [Bug 411825] and other bugs in + TclNeedSpace() where non-breaking space (\u00A0) and backslash-escaped + spaces were handled incorrectly. + * tests/util.test: Added new tests util-8.[2-6]. 2003-08-06 Jeff Hobbs diff --git a/generic/tclUtil.c b/generic/tclUtil.c index cb15ffd..fb86a03 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.36.2.2 2003/07/16 21:25:07 hobbs Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.36.2.3 2003/08/27 20:09:49 dgp Exp $ */ #include "tclInt.h" @@ -2001,42 +2001,53 @@ TclNeedSpace(start, end) CONST char *end; /* End of string (place where space will * be added, if appropriate). */ { - Tcl_UniChar ch; - /* * A space is needed unless either * (a) we're at the start of the string, or - * (b) the trailing characters of the string consist of one or more - * open curly braces preceded by a space or extending back to - * the beginning of the string. - * (c) the trailing characters of the string consist of a space - * preceded by a character other than backslash. */ - if (end == start) { return 0; } + + /* + * (b) we're at the start of a nested list-element, quoted with an + * open curly brace; we can be nested arbitrarily deep, so long + * as the first curly brace starts an element, so backtrack over + * open curly braces that are trailing characters of the string; and + */ + end = Tcl_UtfPrev(end, start); - if (*end != '{') { - Tcl_UtfToUniChar(end, &ch); - /* - * Direct char comparison on next line is safe as it is with - * a character in the ASCII subset, and so single-byte in UTF8. - */ - if (Tcl_UniCharIsSpace(ch) && ((end == start) || (end[-1] != '\\'))) { - return 0; - } - return 1; - } - do { + while (*end == '{') { if (end == start) { return 0; } end = Tcl_UtfPrev(end, start); - } while (*end == '{'); - Tcl_UtfToUniChar(end, &ch); - if (Tcl_UniCharIsSpace(ch)) { - return 0; + } + + /* + * (c) the trailing character of the string is already a list-element + * separator (according to TclFindElement); that is, one of these + * characters: + * \u0009 \t TAB + * \u000A \n NEWLINE + * \u000B \v VERTICAL TAB + * \u000C \f FORM FEED + * \u000D \r CARRIAGE RETURN + * \u0020 SPACE + * with the condition that the penultimate character is not a + * backslash. + */ + + switch (*end) { + case ' ': + case '\f': + case '\n': + case '\r': + case '\t': + case '\v': + if ((end == start) || (end[-1] != '\\')) { + return 0; + } } return 1; } diff --git a/tests/util.test b/tests/util.test index 9341047..a3d181c 100644 --- a/tests/util.test +++ b/tests/util.test @@ -7,7 +7,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: util.test,v 1.10.4.1 2003/08/27 17:56:46 dgp Exp $ +# RCS: @(#) $Id: util.test,v 1.10.4.2 2003/08/27 20:09:49 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -342,6 +342,26 @@ test util-8.4 {TclNeedSpace - correct UTF8 handling} testdstring { testdstring element foo llength [testdstring get] } 2 +test util-8.5 {TclNeedSpace - correct UTF8 handling} testdstring { + # Note that in this test TclNeedSpace actually gets it wrong, + # claiming we need a space when we really do not. Extra space + # between list elements is harmless though, and better to have + # extra space in really weird string reps of lists, than to + # invest the effort required to make TclNeedSpace foolproof. + testdstring free + testdstring append {\\ } -1 + testdstring element foo + list [llength [testdstring get]] [string length [testdstring get]] +} {2 7} +test util-8.6 {TclNeedSpace - correct UTF8 handling} testdstring { + # Another example of TclNeedSpace harmlessly getting it wrong. + testdstring free + testdstring append {\\ } -1 + testdstring append \{ -1 + testdstring element foo + testdstring append \} -1 + list [llength [testdstring get]] [string length [testdstring get]] +} {2 9} # cleanup ::tcltest::cleanupTests -- cgit v0.12 From bb5652ca9a3aa78ddc0ea024835007253fcd5249 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 27 Aug 2003 21:31:53 +0000 Subject: additinal performance tweak to last commit --- generic/tclUtil.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/generic/tclUtil.c b/generic/tclUtil.c index fb86a03..8dfe0d9 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.36.2.3 2003/08/27 20:09:49 dgp Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.36.2.4 2003/08/27 21:31:53 dgp Exp $ */ #include "tclInt.h" @@ -2038,13 +2038,24 @@ TclNeedSpace(start, end) * backslash. */ + if (*end > 0x20) { + /* + * Performance tweak. All ASCII spaces are <= 0x20. So get + * a quick answer for most characters before comparing against + * all spaces in the switch below. + * + * NOTE: Remove this if other Unicode spaces ever get accepted + * as list-element separators. + */ + return 1; + } switch (*end) { case ' ': - case '\f': + case '\t': case '\n': case '\r': - case '\t': case '\v': + case '\f': if ((end == start) || (end[-1] != '\\')) { return 0; } -- cgit v0.12 From 6df292f4e80bfc89e813c03f93dd233e5f3ff988 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Mon, 1 Sep 2003 12:30:38 +0000 Subject: Backported fix from HEAD for Bug 788780 --- ChangeLog | 4 ++++ generic/tclIOUtil.c | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9a4bf74..04d12eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-09-01 Zoran Vasiljevic + + * generic/tclIOUtil.c: backported fix from HEAD [Bug 788780] + 2003-08-27 Don Porter * generic/tclUtil.c: Corrected [Bug 411825] and other bugs in diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index b5bd88d..bfe08b4 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.7 2003/07/18 20:28:32 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.8 2003/09/01 12:30:38 vasiljevic Exp $ */ #include "tclInt.h" @@ -586,11 +586,11 @@ FsRecacheFilesystemList(void) /* Trash the current cache */ fsRecPtr = tsdPtr->filesystemList; while (fsRecPtr != NULL) { - tmpFsRecPtr = fsRecPtr; + tmpFsRecPtr = fsRecPtr->nextPtr; if (--fsRecPtr->fileRefCount <= 0) { ckfree((char *)fsRecPtr); } - fsRecPtr = tmpFsRecPtr->nextPtr; + fsRecPtr = tmpFsRecPtr; } tsdPtr->filesystemList = NULL; -- cgit v0.12 From 07d33a36a1114cc2bb2b5b97ae0da95209fff8eb Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 4 Sep 2003 17:36:50 +0000 Subject: Typo correction: knownbug -> knownBug --- tests/interp.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/interp.test b/tests/interp.test index e4b34eb..769f32f 100644 --- a/tests/interp.test +++ b/tests/interp.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: interp.test,v 1.19.2.4 2003/06/10 19:58:37 msofer Exp $ +# RCS: @(#) $Id: interp.test,v 1.19.2.5 2003/09/04 17:36:50 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -759,7 +759,7 @@ if {[info commands testinterpdelete] == ""} { list [catch {a eval foo} msg] $msg } {1 {attempt to call eval in deleted interpreter}} } -test interp-18.9 {eval in deleted interp, bug 495830} {knownbug} { +test interp-18.9 {eval in deleted interp, bug 495830} {knownBug} { interp create tst interp alias tst suicide {} interp delete tst list [catch {tst eval {suicide; set a 5}} msg] $msg -- cgit v0.12 From 97cdcb952880738c92e1f619b72198f43f3008cf Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 4 Sep 2003 17:50:41 +0000 Subject: && of the constraints is the default; need not be specified. --- tests/unixNotfy.test | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unixNotfy.test b/tests/unixNotfy.test index 8e776cc..c9cda63 100644 --- a/tests/unixNotfy.test +++ b/tests/unixNotfy.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixNotfy.test,v 1.11 2003/02/01 21:07:28 kennykb Exp $ +# RCS: @(#) $Id: unixNotfy.test,v 1.11.2.1 2003/09/04 17:50:41 dgp Exp $ # The tests should not be run if you have a notifier which is unable to # detect infinite vwaits, as the tests below will hang. The presence of @@ -73,7 +73,7 @@ test unixNotfy-1.2 {Tcl_DeleteFileHandler} \ } test unixNotfy-2.1 {Tcl_DeleteFileHandler} \ - -constraints {unixOnly && testthread} \ + -constraints {unixOnly testthread} \ -body { update set f [open [makeFile "" foo] w] @@ -93,7 +93,7 @@ test unixNotfy-2.1 {Tcl_DeleteFileHandler} \ } test unixNotfy-2.2 {Tcl_DeleteFileHandler} \ - -constraints {unixOnly && testthread} \ + -constraints {unixOnly testthread} \ -body { update set f1 [open [makeFile "" foo] w] -- cgit v0.12 From 12cb56c96a1573c7c267898f9134285e1ed96a47 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 8 Sep 2003 15:00:24 +0000 Subject: credit update --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 04d12eb..e178595 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19,7 +19,7 @@ * library/msgcat/msgcat.tcl: Added escape so that non-Windows * library/msgcat/pkgIndex.tcl: platforms do not try to use the registry package. This can save a costly and pointless package - search. Bumped to 1.3.1. Thanks to "imdave1". [Bug 781609]. + search. Bumped to 1.3.1. Thanks to Dave Bodenstab. [Bug 781609]. 2003-08-05 Miguel Sofer -- cgit v0.12 From 1acf9b7241eaddbf7682f4985b33b9c5eaf5b4a6 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 10 Sep 2003 20:29:59 +0000 Subject: * library/opt/optparse.tcl: Overlooked dependence of opt 0.4.4 * library/opt/pkgIndex.tcl: on Tcl 8.2. Bumped to opt 0.4.4.1. --- ChangeLog | 5 +++++ library/opt/optparse.tcl | 6 +++--- library/opt/pkgIndex.tcl | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index e178595..f4e8199 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-09-10 Don Porter + + * library/opt/optparse.tcl: Overlooked dependence of opt 0.4.4 + * library/opt/pkgIndex.tcl: on Tcl 8.2. Bumped to opt 0.4.4.1. + 2003-09-01 Zoran Vasiljevic * generic/tclIOUtil.c: backported fix from HEAD [Bug 788780] diff --git a/library/opt/optparse.tcl b/library/opt/optparse.tcl index 8a86dfe..43e9b48 100644 --- a/library/opt/optparse.tcl +++ b/library/opt/optparse.tcl @@ -8,12 +8,12 @@ # on it. If your code does rely on this package you # may directly incorporate this code into your application. # -# RCS: @(#) $Id: optparse.tcl,v 1.8 2002/11/23 01:41:35 hobbs Exp $ +# RCS: @(#) $Id: optparse.tcl,v 1.8.2.1 2003/09/10 20:29:59 dgp Exp $ -package require Tcl 8 +package require Tcl 8.2 # When this version number changes, update the pkgIndex.tcl file # and the install directory in the Makefiles. -package provide opt 0.4.4 +package provide opt 0.4.4.1 namespace eval ::tcl { diff --git a/library/opt/pkgIndex.tcl b/library/opt/pkgIndex.tcl index 252cab5..754d2ee 100644 --- a/library/opt/pkgIndex.tcl +++ b/library/opt/pkgIndex.tcl @@ -8,5 +8,5 @@ # script is sourced, the variable $dir must contain the # full path name of this file's directory. -if {![package vsatisfies [package provide Tcl] 8]} {return} -package ifneeded opt 0.4.4 [list source [file join $dir optparse.tcl]] +if {![package vsatisfies [package provide Tcl] 8.2]} {return} +package ifneeded opt 0.4.4.1 [list source [file join $dir optparse.tcl]] -- cgit v0.12 From 20f6ea1d4ca61eeffeec277217f46727bb825841 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Fri, 19 Sep 2003 18:42:59 +0000 Subject: * generic/tclExecute.c: adding (DE)CACHE_STACK_INFO() pairs to protect all calls that may cause traces on ::errorInfo or ::errorCode to corrupt the stack [Bug 804681] --- ChangeLog | 6 ++++ generic/tclExecute.c | 92 ++++++++++++++++++++++++++++++++++++++++++---------- tests/execute.test | 10 +++++- 3 files changed, 90 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index f4e8199..fa45934 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-09-19 Miguel Sofer + + * generic/tclExecute.c: adding (DE)CACHE_STACK_INFO() pairs to + protect all calls that may cause traces on ::errorInfo or + ::errorCode to corrupt the stack [Bug 804681] + 2003-09-10 Don Porter * library/opt/optparse.tcl: Overlooked dependence of opt 0.4.4 diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 15a5c7a..10980db 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.4 2003/08/05 16:19:54 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.5 2003/09/19 18:43:00 msofer Exp $ */ #include "tclInt.h" @@ -1399,8 +1399,8 @@ TclExecuteByteCode(interp, codePtr) * Finally, let TclEvalObjvInternal handle the command. */ - Tcl_ResetResult(interp); DECACHE_STACK_INFO(); + Tcl_ResetResult(interp); result = TclEvalObjvInternal(interp, objc, objv, bytes, length, 0); CACHE_STACK_INFO(); @@ -1428,12 +1428,22 @@ TclExecuteByteCode(interp, codePtr) /* * Reset the interp's result to avoid possible duplications - * of large objects [Bug 781585]; be careful to increase its - * refCount before resetting the result. + * of large objects [Bug 781585]. We do not call + * Tcl_ResetResult() to avoid any side effects caused by + * the resetting of errorInfo and errorCode [Bug 804681], + * which are not needed here. We chose instead to manipulate + * the interp's object result directly. + * + * Note that the result object is now in objResultPtr, it + * keeps the refCount it had in its role of iPtr->objResultPtr. */ + { + Tcl_Obj *newObjResultPtr; + TclNewObj(newObjResultPtr); + Tcl_IncrRefCount(newObjResultPtr); + iPtr->objResultPtr = newObjResultPtr; + } - Tcl_IncrRefCount(objResultPtr); - Tcl_ResetResult(interp); NEXT_INST_V(pcAdjustment, opnd, -1); } else { cleanup = opnd; @@ -1463,12 +1473,22 @@ TclExecuteByteCode(interp, codePtr) /* * Reset the interp's result to avoid possible duplications - * of large objects [Bug 781585]; be careful to increase its - * refCount before resetting the result. + * of large objects [Bug 781585]. We do not call + * Tcl_ResetResult() to avoid any side effects caused by + * the resetting of errorInfo and errorCode [Bug 804681], + * which are not needed here. We chose instead to manipulate + * the interp's object result directly. + * + * Note that the result object is now in objResultPtr, it + * keeps the refCount it had in its role of iPtr->objResultPtr. */ - - Tcl_IncrRefCount(objResultPtr); - Tcl_ResetResult(interp); + { + Tcl_Obj *newObjResultPtr; + TclNewObj(newObjResultPtr); + Tcl_IncrRefCount(newObjResultPtr); + iPtr->objResultPtr = newObjResultPtr; + } + NEXT_INST_F(1, 1, -1); } else { cleanup = 1; @@ -1477,8 +1497,8 @@ TclExecuteByteCode(interp, codePtr) case INST_EXPR_STK: objPtr = stackPtr[stackTop]; - Tcl_ResetResult(interp); DECACHE_STACK_INFO(); + Tcl_ResetResult(interp); result = Tcl_ExprObj(interp, objPtr, &valuePtr); CACHE_STACK_INFO(); if (result != TCL_OK) { @@ -1907,7 +1927,9 @@ TclExecuteByteCode(interp, codePtr) if (result != TCL_OK) { TRACE_WITH_OBJ(("%u (by %s) => ERROR converting increment amount to int: ", opnd, O2S(valuePtr)), Tcl_GetObjResult(interp)); + DECACHE_STACK_INFO(); Tcl_AddErrorInfo(interp, "\n (reading increment)"); + CACHE_STACK_INFO(); goto checkForCatch; } FORCE_LONG(valuePtr, i, w); @@ -1949,8 +1971,10 @@ TclExecuteByteCode(interp, codePtr) varPtr = TclObjLookupVar(interp, objPtr, part2, TCL_LEAVE_ERR_MSG, "read", 0, 1, &arrayPtr); if (varPtr == NULL) { + DECACHE_STACK_INFO(); Tcl_AddObjErrorInfo(interp, "\n (reading value of variable to increment)", -1); + CACHE_STACK_INFO(); TRACE_APPEND(("ERROR: %.30s\n", O2S(Tcl_GetObjResult(interp)))); result = TCL_ERROR; goto checkForCatch; @@ -2164,7 +2188,9 @@ TclExecuteByteCode(interp, codePtr) if (result != TCL_OK) { TRACE(("\"%.20s\" => ILLEGAL TYPE %s \n", O2S(valuePtr), (t1Ptr? t1Ptr->name : "null"))); + DECACHE_STACK_INFO(); IllegalExprOperandType(interp, pc, valuePtr); + CACHE_STACK_INFO(); goto checkForCatch; } } @@ -2191,7 +2217,9 @@ TclExecuteByteCode(interp, codePtr) if (result != TCL_OK) { TRACE(("\"%.20s\" => ILLEGAL TYPE %s \n", O2S(value2Ptr), (t2Ptr? t2Ptr->name : "null"))); + DECACHE_STACK_INFO(); IllegalExprOperandType(interp, pc, value2Ptr); + CACHE_STACK_INFO(); goto checkForCatch; } } @@ -2917,7 +2945,9 @@ TclExecuteByteCode(interp, codePtr) O2S(valuePtr), O2S(value2Ptr), (valuePtr->typePtr? valuePtr->typePtr->name : "null"))); + DECACHE_STACK_INFO(); IllegalExprOperandType(interp, pc, valuePtr); + CACHE_STACK_INFO(); goto checkForCatch; } } @@ -2932,7 +2962,9 @@ TclExecuteByteCode(interp, codePtr) O2S(valuePtr), O2S(value2Ptr), (value2Ptr->typePtr? value2Ptr->typePtr->name : "null"))); + DECACHE_STACK_INFO(); IllegalExprOperandType(interp, pc, value2Ptr); + CACHE_STACK_INFO(); goto checkForCatch; } } @@ -3175,7 +3207,9 @@ TclExecuteByteCode(interp, codePtr) s, O2S(valuePtr), (valuePtr->typePtr? valuePtr->typePtr->name : "null"))); + DECACHE_STACK_INFO(); IllegalExprOperandType(interp, pc, valuePtr); + CACHE_STACK_INFO(); goto checkForCatch; } t1Ptr = valuePtr->typePtr; @@ -3207,7 +3241,9 @@ TclExecuteByteCode(interp, codePtr) O2S(value2Ptr), s, (value2Ptr->typePtr? value2Ptr->typePtr->name : "null"))); + DECACHE_STACK_INFO(); IllegalExprOperandType(interp, pc, value2Ptr); + CACHE_STACK_INFO(); goto checkForCatch; } t2Ptr = value2Ptr->typePtr; @@ -3253,7 +3289,9 @@ TclExecuteByteCode(interp, codePtr) if (IS_NAN(dResult) || IS_INF(dResult)) { TRACE(("%.20s %.20s => IEEE FLOATING PT ERROR\n", O2S(valuePtr), O2S(value2Ptr))); + DECACHE_STACK_INFO(); TclExprFloatError(interp, dResult); + CACHE_STACK_INFO(); result = TCL_ERROR; goto checkForCatch; } @@ -3393,7 +3431,9 @@ TclExecuteByteCode(interp, codePtr) if (result != TCL_OK) { TRACE(("\"%.20s\" => ILLEGAL TYPE %s \n", s, (tPtr? tPtr->name : "null"))); + DECACHE_STACK_INFO(); IllegalExprOperandType(interp, pc, valuePtr); + CACHE_STACK_INFO(); goto checkForCatch; } tPtr = valuePtr->typePtr; @@ -3466,7 +3506,9 @@ TclExecuteByteCode(interp, codePtr) if (result != TCL_OK) { TRACE(("\"%.20s\" => ILLEGAL TYPE %s\n", s, (tPtr? tPtr->name : "null"))); + DECACHE_STACK_INFO(); IllegalExprOperandType(interp, pc, valuePtr); + CACHE_STACK_INFO(); goto checkForCatch; } } @@ -3556,7 +3598,9 @@ TclExecuteByteCode(interp, codePtr) if (result != TCL_OK) { /* try to convert to double */ TRACE(("\"%.20s\" => ILLEGAL TYPE %s\n", O2S(valuePtr), (tPtr? tPtr->name : "null"))); + DECACHE_STACK_INFO(); IllegalExprOperandType(interp, pc, valuePtr); + CACHE_STACK_INFO(); goto checkForCatch; } } @@ -3721,7 +3765,9 @@ TclExecuteByteCode(interp, codePtr) if (IS_NAN(d) || IS_INF(d)) { TRACE(("\"%.20s\" => IEEE FLOATING PT ERROR\n", O2S(objResultPtr))); + DECACHE_STACK_INFO(); TclExprFloatError(interp, d); + CACHE_STACK_INFO(); result = TCL_ERROR; goto checkForCatch; } @@ -3741,13 +3787,17 @@ TclExecuteByteCode(interp, codePtr) } case INST_BREAK: + DECACHE_STACK_INFO(); Tcl_ResetResult(interp); + CACHE_STACK_INFO(); result = TCL_BREAK; cleanup = 0; goto processExceptionReturn; case INST_CONTINUE: + DECACHE_STACK_INFO(); Tcl_ResetResult(interp); + CACHE_STACK_INFO(); result = TCL_CONTINUE; cleanup = 0; goto processExceptionReturn; @@ -3949,14 +3999,17 @@ TclExecuteByteCode(interp, codePtr) case INST_PUSH_RESULT: objResultPtr = Tcl_GetObjResult(interp); TRACE_WITH_OBJ(("=> "), Tcl_GetObjResult(interp)); + /* - * Reset the interp's result to avoid possible duplications - * of large objects [Bug 781585]; be careful to increase its - * refCount before resetting the result. + * See the comments at INST_INVOKE_STK */ + { + Tcl_Obj *newObjResultPtr; + TclNewObj(newObjResultPtr); + Tcl_IncrRefCount(newObjResultPtr); + iPtr->objResultPtr = newObjResultPtr; + } - Tcl_IncrRefCount(objResultPtr); - Tcl_ResetResult(interp); NEXT_INST_F(1, 0, -1); case INST_PUSH_RETURN_CODE: @@ -3974,10 +4027,13 @@ TclExecuteByteCode(interp, codePtr) */ divideByZero: + DECACHE_STACK_INFO(); Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), "divide by zero", -1); Tcl_SetErrorCode(interp, "ARITH", "DIVZERO", "divide by zero", (char *) NULL); + CACHE_STACK_INFO(); + result = TCL_ERROR; goto checkForCatch; @@ -4067,7 +4123,9 @@ TclExecuteByteCode(interp, codePtr) if ((result == TCL_ERROR) && !(iPtr->flags & ERR_ALREADY_LOGGED)) { bytes = GetSrcInfoForPc(pc, codePtr, &length); if (bytes != NULL) { + DECACHE_STACK_INFO(); Tcl_LogCommandInfo(interp, codePtr->source, bytes, length); + CACHE_STACK_INFO(); iPtr->flags |= ERR_ALREADY_LOGGED; } } diff --git a/tests/execute.test b/tests/execute.test index ab51d1a..2f7363c 100644 --- a/tests/execute.test +++ b/tests/execute.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: execute.test,v 1.13 2003/02/25 16:18:54 msofer Exp $ +# RCS: @(#) $Id: execute.test,v 1.13.2.1 2003/09/19 18:43:00 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -713,6 +713,14 @@ test execute-7.34 {Wide int handling} {longIs32bit} { expr {wide(0x1) * 1024 * 1024 * 1024 * 1024} } 1099511627776 +test execute-8.1 {Stack protection} { + # If [Bug #804681] has not been properly + # taken care of, this should segfault + proc whatever args {llength $args} + trace add variable ::errorInfo {write unset} whatever + catch {expr {1+9/0}} +} 1 + # cleanup if {[info commands testobj] != {}} { testobj freeallvars -- cgit v0.12 From c9ac0de4ba3254bc18fb2222cf61c5e40813fd97 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 23 Sep 2003 04:49:10 +0000 Subject: * library/init.tcl (auto_load, auto_import): Expanded Eric Melski's 2000-01-28 fix for [Bug 218871] to all potentially troubled uses of [info commands] on input data, where glob-special characters could cause problems. --- ChangeLog | 7 +++++++ library/init.tcl | 33 +++++++++++++++++---------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index fa45934..eabd7ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-09-23 Don Porter + + * library/init.tcl (auto_load, auto_import): Expanded Eric Melski's + 2000-01-28 fix for [Bug 218871] to all potentially troubled uses of + [info commands] on input data, where glob-special characters could + cause problems. + 2003-09-19 Miguel Sofer * generic/tclExecute.c: adding (DE)CACHE_STACK_INFO() pairs to diff --git a/library/init.tcl b/library/init.tcl index 8ad26f9..b1d2b09 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.55.2.1 2003/07/18 23:35:39 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.55.2.2 2003/09/23 04:49:12 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -342,8 +342,17 @@ proc auto_load {cmd {namespace {}}} { lappend nameList $cmd foreach name $nameList { if {[info exists auto_index($name)]} { - uplevel #0 $auto_index($name) - return [expr {[info commands $name] != ""}] + namespace eval :: $auto_index($name) + # There's a couple of ways to look for a command of a given + # name. One is to use + # info commands $name + # Unfortunately, if the name has glob-magic chars in it like * + # or [], it may not match. For our purposes here, a better + # route is to use + # namespace which -command $name + if {[namespace which -command $name] ne ""} { + return 1 + } } } if {![info exists auto_path]} { @@ -355,15 +364,8 @@ proc auto_load {cmd {namespace {}}} { } foreach name $nameList { if {[info exists auto_index($name)]} { - uplevel #0 $auto_index($name) - # There's a couple of ways to look for a command of a given - # name. One is to use - # info commands $name - # Unfortunately, if the name has glob-magic chars in it like * - # or [], it may not match. For our purposes here, a better - # route is to use - # namespace which -command $name - if { ![string equal [namespace which -command $name] ""] } { + namespace eval :: $auto_index($name) + if {[namespace which -command $name] ne ""} { return 1 } } @@ -516,10 +518,9 @@ proc auto_import {pattern} { foreach pattern $patternList { foreach name [array names auto_index $pattern] { - if {[string equal "" [info commands $name]] - && [string equal [namespace qualifiers $pattern] \ - [namespace qualifiers $name]]} { - uplevel #0 $auto_index($name) + if {([namespace which -command $name] eq "") + && ([namespace qualifiers $pattern] eq [namespace qualifiers $name])} { + namespace eval :: $auto_index($name) } } } -- cgit v0.12 From b5d80dadf08263e6780d1038b46fdbb4eaa4829c Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 24 Sep 2003 02:17:09 +0000 Subject: * generic/tclCmdMZ.c (): Fixed [Bug 807243] where * tests/trace.test (trace-31,32.*): the introspection results of both [trace info command] and [trace info execution] were getting co-mingled. Thanks to Mark Saye for the report. --- ChangeLog | 5 +++++ generic/tclCmdMZ.c | 18 +++++++++++++++++- tests/trace.test | 38 +++++++++++++++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index eabd7ab..fc7ebba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2003-09-23 Don Porter + * generic/tclCmdMZ.c (): Fixed [Bug 807243] where + * tests/trace.test (trace-31,32.*): the introspection results + of both [trace info command] and [trace info execution] were getting + co-mingled. + * library/init.tcl (auto_load, auto_import): Expanded Eric Melski's 2000-01-28 fix for [Bug 218871] to all potentially troubled uses of [info commands] on input data, where glob-special characters could diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index ca1abef..a3dc03a 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.6 2003/07/16 08:24:20 dkf Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.7 2003/09/24 02:17:10 dgp Exp $ */ #include "tclInt.h" @@ -3350,6 +3350,7 @@ TclTraceExecutionObjCmd(interp, optionIndex, objc, objv) resultListPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); while ((clientData = Tcl_CommandTraceInfo(interp, name, 0, TraceCommandProc, clientData)) != NULL) { + int numOps = 0; TraceCommandInfo *tcmdPtr = (TraceCommandInfo *) clientData; @@ -3363,6 +3364,7 @@ TclTraceExecutionObjCmd(interp, optionIndex, objc, objv) */ elemObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); + Tcl_IncrRefCount(elemObjPtr); if (tcmdPtr->flags & TCL_TRACE_ENTER_EXEC) { Tcl_ListObjAppendElement(NULL, elemObjPtr, Tcl_NewStringObj("enter",5)); @@ -3379,7 +3381,13 @@ TclTraceExecutionObjCmd(interp, optionIndex, objc, objv) Tcl_ListObjAppendElement(NULL, elemObjPtr, Tcl_NewStringObj("leavestep",9)); } + Tcl_ListObjLength(NULL, elemObjPtr, &numOps); + if (0 == numOps) { + Tcl_DecrRefCount(elemObjPtr); + continue; + } Tcl_ListObjAppendElement(NULL, eachTraceObjPtr, elemObjPtr); + Tcl_DecrRefCount(elemObjPtr); elemObjPtr = NULL; Tcl_ListObjAppendElement(NULL, eachTraceObjPtr, @@ -3545,6 +3553,7 @@ TclTraceCommandObjCmd(interp, optionIndex, objc, objv) resultListPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); while ((clientData = Tcl_CommandTraceInfo(interp, name, 0, TraceCommandProc, clientData)) != NULL) { + int numOps = 0; TraceCommandInfo *tcmdPtr = (TraceCommandInfo *) clientData; @@ -3558,6 +3567,7 @@ TclTraceCommandObjCmd(interp, optionIndex, objc, objv) */ elemObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); + Tcl_IncrRefCount(elemObjPtr); if (tcmdPtr->flags & TCL_TRACE_RENAME) { Tcl_ListObjAppendElement(NULL, elemObjPtr, Tcl_NewStringObj("rename",6)); @@ -3566,7 +3576,13 @@ TclTraceCommandObjCmd(interp, optionIndex, objc, objv) Tcl_ListObjAppendElement(NULL, elemObjPtr, Tcl_NewStringObj("delete",6)); } + Tcl_ListObjLength(NULL, elemObjPtr, &numOps); + if (0 == numOps) { + Tcl_DecrRefCount(elemObjPtr); + continue; + } Tcl_ListObjAppendElement(NULL, eachTraceObjPtr, elemObjPtr); + Tcl_DecrRefCount(elemObjPtr); elemObjPtr = Tcl_NewStringObj(tcmdPtr->command, -1); Tcl_ListObjAppendElement(NULL, eachTraceObjPtr, elemObjPtr); diff --git a/tests/trace.test b/tests/trace.test index cedb7ba..4e010e9 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.1 2003/03/27 13:11:17 dkf Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.2 2003/09/24 02:17:10 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -2093,6 +2093,42 @@ test trace-28.10 {exec trace info nonsense} { list [catch {trace remove execution} res] $res } {1 {wrong # args: should be "trace remove execution name opList command"}} +# Missing test number to keep in sync with the 8.5 branch +# (want to backport those tests?) + +test trace-31.1 {command and execution traces shared struct} { + # Tcl Bug 807243 + proc foo {} {} + trace add command foo delete foo + trace add execution foo enter foo + set result [trace info command foo] + trace remove command foo delete foo + trace remove execution foo enter foo + rename foo {} + set result +} [list [list delete foo]] +test trace-31.2 {command and execution traces shared struct} { + # Tcl Bug 807243 + proc foo {} {} + trace add command foo delete foo + trace add execution foo enter foo + set result [trace info execution foo] + trace remove command foo delete foo + trace remove execution foo enter foo + rename foo {} + set result +} [list [list enter foo]] + +test trace-32.1 {mystery memory corruption} knownBug { + # Tcl Bug 811483 + proc foo {} {} + trace add command foo delete foo + trace add execution foo enter foo + set result [trace info command foo] + rename foo {} + set result +} [list [list delete foo]] + # Delete procedures when done, so we don't clash with other tests # (e.g. foobar will clash with 'unknown' tests). catch {rename foobar {}} -- cgit v0.12 From b4ecd54d6899c7a925bc9ba36b5b8079074a3594 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 24 Sep 2003 02:27:42 +0000 Subject: add thanks --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index fc7ebba..e0c280c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,7 +3,7 @@ * generic/tclCmdMZ.c (): Fixed [Bug 807243] where * tests/trace.test (trace-31,32.*): the introspection results of both [trace info command] and [trace info execution] were getting - co-mingled. + co-mingled. Thanks to Mark Saye for the report. * library/init.tcl (auto_load, auto_import): Expanded Eric Melski's 2000-01-28 fix for [Bug 218871] to all potentially troubled uses of -- cgit v0.12 From 20105d8fee7ad158025085192b3a3b57340b9135 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 25 Sep 2003 05:34:18 +0000 Subject: * macosx/Makefile: ensure SYMROOT exists if OBJROOT is overridden on command line. Replaced explict use of /usr/bin by ${BINDIR}. --- ChangeLog | 13 +++++++++---- macosx/Makefile | 11 +++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0c280c..41ec0ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-09-25 Daniel Steffen + + * macosx/Makefile: ensure SYMROOT exists if OBJROOT is overridden + on command line. Replaced explict use of /usr/bin by ${BINDIR}. + 2003-09-23 Don Porter * generic/tclCmdMZ.c (): Fixed [Bug 807243] where @@ -5,10 +10,10 @@ of both [trace info command] and [trace info execution] were getting co-mingled. Thanks to Mark Saye for the report. - * library/init.tcl (auto_load, auto_import): Expanded Eric Melski's - 2000-01-28 fix for [Bug 218871] to all potentially troubled uses of - [info commands] on input data, where glob-special characters could - cause problems. + * library/init.tcl (auto_load, auto_import): Expanded Eric Melski's + 2000-01-28 fix for [Bug 218871] to all potentially troubled uses of + [info commands] on input data, where glob-special characters could + cause problems. 2003-09-19 Miguel Sofer diff --git a/macosx/Makefile b/macosx/Makefile index 781a19d..5be4a84 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -3,7 +3,7 @@ # Makefile to build Tcl on Mac OS X packaged as a Framework # uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5.2.3 2003/07/19 01:35:01 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.4 2003/09/25 05:34:18 das Exp $ # ######################################################################################################## @@ -131,7 +131,7 @@ build-${PROJECT}: ${OBJ_DIR}/Makefile # symolic link hackery to trick # 'make install INSTALL_ROOT=${OBJ_DIR}' # into building Tcl.framework and tclsh in ${SYMROOT} - cd ${OBJ_DIR}; mkdir -p $(dir ./${INSTALL_PATH}) $(dir ./${BINDIR}); \ + cd ${OBJ_DIR}; mkdir -p $(dir ./${INSTALL_PATH}) $(dir ./${BINDIR}) ${SYMROOT}; \ rm -f ./${INSTALL_PATH}; ln -fs ${SYMROOT} ./${INSTALL_PATH}; \ rm -f ./${BINDIR}; ln -fs ${SYMROOT} ./${BINDIR}; \ ln -fs ${OBJ_DIR}/tcltest ${SYMROOT} @@ -164,8 +164,8 @@ endif ifeq (${INSTALL_BUILD},1) ifeq (${EMBEDDED_BUILD},1) # if we are embedding frameworks, don't install tclsh - rm -f "${INSTALL_ROOT}/${BINDIR}/${TCLSH}" - -rmdir -p "${INSTALL_ROOT}/${BINDIR}" 2>&- + rm -f "${INSTALL_ROOT}${BINDIR}/${TCLSH}" + -rmdir -p "${INSTALL_ROOT}${BINDIR}" 2>&- else # redo prebinding cd ${INSTALL_ROOT}; \ @@ -175,8 +175,7 @@ else if [ -n "$${RM_USRLIB:-}" ]; then rm -f usr/lib; rmdir -p usr 2>&-; fi; \ if [ -n "$${RM_SYSTEM:-}" ]; then rm -f System; fi # install tclsh symbolic link - mkdir -p ${INSTALL_ROOT}/usr/bin && \ - ln -fs ${TCLSH} ${INSTALL_ROOT}/${BINDIR}/tclsh + ln -fs ${TCLSH} ${INSTALL_ROOT}${BINDIR}/tclsh ifeq (${BUILD_STYLE},Deployment) ifneq (${INSTALL_MANPAGES},) # install manpages -- cgit v0.12 From b8a0cfd4829cfb7c33064dbc04719a12cd67bc69 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Sun, 28 Sep 2003 10:29:52 +0000 Subject: The windows port of expect can call TclWinAddProcess before any of the other pipe functions. Added a missing PipeInit() call to make sure the initialization happens. --- win/tclWinPipe.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 875995e..1fc5fa1 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.2 2003/07/16 19:34:14 mdejong Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.3 2003/09/28 10:29:52 davygrvy Exp $ */ #include "tclWinInt.h" @@ -2629,6 +2629,9 @@ TclWinAddProcess(hProcess, id) DWORD id; /* Global process identifier */ { ProcInfo *procPtr = (ProcInfo *) ckalloc(sizeof(ProcInfo)); + + PipeInit(); + procPtr->hProcess = hProcess; procPtr->dwProcessId = id; Tcl_MutexLock(&pipeMutex); -- cgit v0.12 From 0d0f75efddc1a77a4d446b809ea5a00640088988 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Sun, 28 Sep 2003 10:32:50 +0000 Subject: no message --- ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 41ec0ff..4bbc13b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-10-28 David Gravereaux + + * win/tclWinPipe.c: The windows port of expect can call + TclWinAddProcess before any of the other pipe functions. + Added a missing PipeInit() call to make sure the + initialization happens. + 2003-09-25 Daniel Steffen * macosx/Makefile: ensure SYMROOT exists if OBJROOT is overridden -- cgit v0.12 From f1be55f6de840bd3061fffee0790dbe08a9ebf35 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Sun, 28 Sep 2003 10:48:25 +0000 Subject: no message --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4bbc13b..4defe10 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2003-10-28 David Gravereaux +2003-09-28 David Gravereaux * win/tclWinPipe.c: The windows port of expect can call TclWinAddProcess before any of the other pipe functions. -- cgit v0.12 From 8cc43294204e947957e5d02b2886ef3b90f47926 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 29 Sep 2003 09:17:32 +0000 Subject: Added note to make it clearer that frameworks are an OSX feature [Bug 619440] --- ChangeLog | 5 +++++ unix/configure | 2 +- unix/tcl.m4 | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4defe10..f3726e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-09-29 Donal K. Fellows + + * unix/tcl.m4 (SC_ENABLE_FRAMEWORK): Added note to make it clearer + that this is an OSX feature, not a general Unix feature. [Bug 619440] + 2003-09-28 David Gravereaux * win/tclWinPipe.c: The windows port of expect can call diff --git a/unix/configure b/unix/configure index 4d01535..b917a44 100755 --- a/unix/configure +++ b/unix/configure @@ -32,7 +32,7 @@ ac_help="$ac_help ac_help="$ac_help --enable-symbols build with debugging symbols [--disable-symbols]" ac_help="$ac_help - --enable-framework package shared libraries in frameworks [--disable-framework]" + --enable-framework package shared libraries in MacOSX frameworks [--disable-framework]" # Initialize some variables set by options. # The variables have the same names as the options, with diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 87d8fcc..728b03c 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -354,7 +354,7 @@ AC_DEFUN(SC_ENABLE_SHARED, [ AC_DEFUN(SC_ENABLE_FRAMEWORK, [ AC_MSG_CHECKING([how to package libraries]) AC_ARG_ENABLE(framework, - [ --enable-framework package shared libraries in frameworks [--disable-framework]], + [ --enable-framework package shared libraries in MacOSX frameworks [--disable-framework]], [tcl_ok=$enableval], [tcl_ok=no]) if test "${enable_framework+set}" = set; then -- cgit v0.12 From d6fa269907f590d521bdbc7aa2c2225f3beb3526 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 29 Sep 2003 10:04:52 +0000 Subject: Correctly check the types of boolean options to http::geturl [Bug 811170] --- ChangeLog | 3 +++ library/http/http.tcl | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index f3726e7..c7bfd12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-09-29 Donal K. Fellows + * library/http/http.tcl (geturl): Correctly check the type of + boolean-valued options. [Bug 811170] + * unix/tcl.m4 (SC_ENABLE_FRAMEWORK): Added note to make it clearer that this is an OSX feature, not a general Unix feature. [Bug 619440] diff --git a/library/http/http.tcl b/library/http/http.tcl index 2a9c8b5..50ecdef 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.1 2003/07/18 19:41:16 hobbs Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.2 2003/09/29 10:04:53 dkf Exp $ # Rough version history: # 1.0 Old http_get interface @@ -255,6 +255,14 @@ proc http::geturl { url args } { status "" http "" } + # These flags have their types verified [Bug 811170] + array set type { + -binary boolean + -blocksize integer + -queryblocksize integer + -validate boolean + -timeout integer + } set state(charset) $defaultCharset set options {-binary -blocksize -channel -command -handler -headers \ -progress -query -queryblocksize -querychannel -queryprogress\ @@ -265,11 +273,10 @@ proc http::geturl { url args } { foreach {flag value} $args { if {[regexp $pat $flag]} { # Validate numbers - if {[info exists state($flag)] && \ - [string is integer -strict $state($flag)] && \ - ![string is integer -strict $value]} { + if {[info exists type($flag)] && \ + ![string is $type($flag) -strict $value]} { unset $token - return -code error "Bad value for $flag ($value), must be integer" + return -code error "Bad value for $flag ($value), must be $type($flag)" } set state($flag) $value } else { -- cgit v0.12 From 727cc7ed58601550160c4b3dbc91bec67fec705f Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 29 Sep 2003 22:03:43 +0000 Subject: * generic/tclBasic.c (CallCommandTraces): Added safety bit * tests/trace.test: masking to prevent any of the bit values TCL_TRACE_*_EXEC from leaking into the flags field of any Command struct. This does not fix [Bug 811483] but helps to contain some of its worst symptoms. Also backported the corrections to test trace-28.4 from Vince Darley. --- ChangeLog | 11 ++++++++++- generic/tclBasic.c | 13 +++++++++---- tests/trace.test | 29 ++++++++++++++++------------- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index c7bfd12..281d24f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2003-09-29 Don Porter + + * generic/tclBasic.c (CallCommandTraces): Added safety bit + * tests/trace.test: masking to prevent any of the bit values + TCL_TRACE_*_EXEC from leaking into the flags field of any + Command struct. This does not fix [Bug 811483] but helps to + contain some of its worst symptoms. Also backported the corrections + to test trace-28.4 from Vince Darley. + 2003-09-29 Donal K. Fellows * library/http/http.tcl (geturl): Correctly check the type of @@ -20,7 +29,7 @@ 2003-09-23 Don Porter - * generic/tclCmdMZ.c (): Fixed [Bug 807243] where + * generic/tclCmdMZ.c: Fixed [Bug 807243] where * tests/trace.test (trace-31,32.*): the introspection results of both [trace info command] and [trace info execution] were getting co-mingled. Thanks to Mark Saye for the report. diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 629293f..50f80d4 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.5 2003/07/18 23:35:38 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.6 2003/09/29 22:03:44 dgp Exp $ */ #include "tclInt.h" @@ -2560,6 +2560,9 @@ CallCommandTraces(iPtr, cmdPtr, oldName, newName, flags) ActiveCommandTrace active; char *result; Tcl_Obj *oldNamePtr = NULL; + int mask = (TCL_TRACE_DELETE | TCL_TRACE_RENAME); /* Safety */ + + flags &= mask; if (cmdPtr->flags & CMD_TRACE_ACTIVE) { /* @@ -2595,11 +2598,13 @@ CallCommandTraces(iPtr, cmdPtr, oldName, newName, flags) for (tracePtr = cmdPtr->tracePtr; tracePtr != NULL; tracePtr = active.nextTracePtr) { + int traceFlags = (tracePtr->flags & mask); + active.nextTracePtr = tracePtr->nextPtr; - if (!(tracePtr->flags & flags)) { + if (!(traceFlags & flags)) { continue; } - cmdPtr->flags |= tracePtr->flags; + cmdPtr->flags |= traceFlags; if (oldName == NULL) { TclNewObj(oldNamePtr); Tcl_IncrRefCount(oldNamePtr); @@ -2610,7 +2615,7 @@ CallCommandTraces(iPtr, cmdPtr, oldName, newName, flags) tracePtr->refCount++; (*tracePtr->traceProc)(tracePtr->clientData, (Tcl_Interp *) iPtr, oldName, newName, flags); - cmdPtr->flags &= ~tracePtr->flags; + cmdPtr->flags &= ~traceFlags; if ((--tracePtr->refCount) <= 0) { ckfree((char*)tracePtr); } diff --git a/tests/trace.test b/tests/trace.test index 4e010e9..6475aed 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.2 2003/09/24 02:17:10 dgp Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.3 2003/09/29 22:03:44 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1980,9 +1980,10 @@ foo {if {[catch {bar}]} { }} 2 error leavestep foo foo 0 error leave}} -test trace-28.4 {exec traces in slave with 'return -code error'} {knownBug} { +test trace-28.4 {exec traces in slave with 'return -code error'} { interp create slave interp alias slave traceExecute {} traceExecute + set info {} set res [interp eval slave { set info {} set res {} @@ -2009,16 +2010,16 @@ test trace-28.4 {exec traces in slave with 'return -code error'} {knownBug} { trace remove execution foo {enter enterstep leave leavestep} \ [list traceExecute foo] - list $res [join $info \n] + list $res }] interp delete slave - set res + lappend res [join $info \n] } {{error error} {foo foo enter foo {if {[catch {bar}]} { - return "error" - } else { - return "ok" - }} enterstep + return "error" + } else { + return "ok" + }} enterstep foo {catch bar} enterstep foo bar enterstep foo {return -code error msg} enterstep @@ -2028,10 +2029,10 @@ foo {catch bar} 0 1 leavestep foo {return error} enterstep foo {return error} 2 error leavestep foo {if {[catch {bar}]} { - return "error" - } else { - return "ok" - }} 2 error leavestep + return "error" + } else { + return "ok" + }} 2 error leavestep foo foo 0 error leave}} test trace-28.5 {exec traces} { @@ -2119,7 +2120,9 @@ test trace-31.2 {command and execution traces shared struct} { set result } [list [list enter foo]] -test trace-32.1 {mystery memory corruption} knownBug { +test trace-32.1 { + TraceCommandInfo refcount decr in TraceCommandProc w/o loss of reference +} { # Tcl Bug 811483 proc foo {} {} trace add command foo delete foo -- cgit v0.12 From 7328a9cb5e4258e7fe66cf504a51a6f177e1c927 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 1 Oct 2003 14:34:16 +0000 Subject: * macosx/Makefile: fixed redo prebinding bug when DESTDIR="". * mac/tclMacResource.c: fixed possible NULL dereference (bdesgraupes). --- ChangeLog | 5 +++++ mac/tclMacResource.c | 4 ++-- macosx/Makefile | 6 +++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 281d24f..385ecec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-10-01 Daniel Steffen + + * macosx/Makefile: fixed redo prebinding bug when DESTDIR="". + * mac/tclMacResource.c: fixed possible NULL dereference (bdesgraupes). + 2003-09-29 Don Porter * generic/tclBasic.c (CallCommandTraces): Added safety bit diff --git a/mac/tclMacResource.c b/mac/tclMacResource.c index 78f0bc5..b4e9df4 100644 --- a/mac/tclMacResource.c +++ b/mac/tclMacResource.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacResource.c,v 1.14 2002/06/05 11:59:49 das Exp $ + * RCS: @(#) $Id: tclMacResource.c,v 1.14.2.1 2003/10/01 14:34:16 das Exp $ */ #include @@ -1486,7 +1486,7 @@ Tcl_MacFindResource( Tcl_DStringFree(&ds); } - if (*resource == NULL) { + if (resource != NULL && *resource == NULL) { *releaseIt = 1; LoadResource(resource); } else { diff --git a/macosx/Makefile b/macosx/Makefile index 5be4a84..f3c8e02 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -3,7 +3,7 @@ # Makefile to build Tcl on Mac OS X packaged as a Framework # uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5.2.4 2003/09/25 05:34:18 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.5 2003/10/01 14:34:16 das Exp $ # ######################################################################################################## @@ -26,7 +26,7 @@ BINDIR ?= ${PREFIX}/bin MANDIR ?= ${PREFIX}/man # set to non-empty value to install manpages in addition to html help: -INSTALL_MANPAGES ?= +INSTALL_MANPAGES ?= TCL_PACKAGE_PATH ?= "~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl \ ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks \ @@ -168,7 +168,7 @@ ifeq (${EMBEDDED_BUILD},1) -rmdir -p "${INSTALL_ROOT}${BINDIR}" 2>&- else # redo prebinding - cd ${INSTALL_ROOT}; \ + cd ${INSTALL_ROOT}/; \ if [ ! -d usr/lib ]; then mkdir -p usr; ln -fs /usr/lib usr/; RM_USRLIB=1; fi; \ if [ ! -d System ]; then ln -fs /System .; RM_SYSTEM=1; fi; \ redo_prebinding -r . "./${BINDIR}/${TCLSH}"; \ -- cgit v0.12 From 8f5d265bec5699a1ad5c0e196b2867fcef19ea4c Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 2 Oct 2003 23:07:32 +0000 Subject: * README: Bumped patch level to 8.4.5 to prepare * generic/tcl.h: for next patch release. * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf (2.13) * win/configure: * library/http/http.tcl: Bumped to http 2.4.5 * library/http/pkgIndex.tcl: --- ChangeLog | 16 ++++++ README | 4 +- generic/tcl.h | 6 +-- library/http/http.tcl | 4 +- library/http/pkgIndex.tcl | 2 +- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 +- unix/tcl.spec | 4 +- win/README.binary | 4 +- win/configure | 128 ++++++++++++++++++++++------------------------ win/configure.in | 8 +-- 12 files changed, 95 insertions(+), 89 deletions(-) diff --git a/ChangeLog b/ChangeLog index 385ecec..eed0f6b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2003-10-02 Don Porter + + * README: Bumped patch level to 8.4.5 to prepare + * generic/tcl.h: for next patch release. + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf (2.13) + * win/configure: + + * library/http/http.tcl: Bumped to http 2.4.5 + * library/http/pkgIndex.tcl: + 2003-10-01 Daniel Steffen * macosx/Makefile: fixed redo prebinding bug when DESTDIR="". diff --git a/README b/README index 7ab5f1d..6e1584d 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.4 source distribution. + This is the Tcl 8.4.5 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.2 2003/07/15 22:25:32 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.3 2003/10/02 23:07:33 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index acdf4e0..7d39feb 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.6 2003/07/16 22:06:04 hobbs Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.7 2003/10/02 23:07:33 dgp Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 4 +#define TCL_RELEASE_SERIAL 5 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.4" +#define TCL_PATCH_LEVEL "8.4.5" /* * The following definitions set up the proper options for Windows diff --git a/library/http/http.tcl b/library/http/http.tcl index 50ecdef..d0cf058 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.2 2003/09/29 10:04:53 dkf Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.3 2003/10/02 23:07:33 dgp Exp $ # Rough version history: # 1.0 Old http_get interface @@ -25,7 +25,7 @@ package require Tcl 8.2 # keep this in sync with pkgIndex.tcl # and with the install directories in Makefiles -package provide http 2.4.4 +package provide http 2.4.5 namespace eval http { variable http diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 82c68f5..e114a44 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.2]} {return} -package ifneeded http 2.4.4 [list tclPkgSetup $dir http 2.4.4 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] +package ifneeded http 2.4.5 [list tclPkgSetup $dir http 2.4.5 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 6c11ec9..9efd1f1 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.4 + Disk Label=tcl8.4.5 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index b917a44..26656fa 100755 --- a/unix/configure +++ b/unix/configure @@ -548,7 +548,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".4" +TCL_PATCH_LEVEL=".5" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index a2818c8..5f94cf0 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.2 2003/07/15 22:25:33 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.3 2003/10/02 23:07:34 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".4" +TCL_PATCH_LEVEL=".5" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 6d98793..4d2aa0d 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.2 2003/07/15 22:25:33 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.3 2003/10/02 23:07:34 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.4 +%define version 8.4.5 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index 9b27368..dc296b5 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.2 2003/07/15 22:25:33 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.3 2003/10/02 23:07:34 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.4 for +This directory contains the binary distribution of Tcl/Tk 8.4.5 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 084d554..4990733 100755 --- a/win/configure +++ b/win/configure @@ -534,19 +534,17 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".4" +TCL_PATCH_LEVEL=".5" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 TCL_DDE_MAJOR_VERSION=1 TCL_DDE_MINOR_VERSION=2 -TCL_DDE_PATCH_LEVEL="" DDEVER=$TCL_DDE_MAJOR_VERSION$TCL_DDE_MINOR_VERSION TCL_REG_VERSION=1.1 TCL_REG_MAJOR_VERSION=1 TCL_REG_MINOR_VERSION=1 -TCL_REG_PATCH_LEVEL="" REGVER=$TCL_REG_MAJOR_VERSION$TCL_REG_MINOR_VERSION #------------------------------------------------------------------------ @@ -575,7 +573,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:579: checking for $ac_word" >&5 +echo "configure:577: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -605,7 +603,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:609: checking for $ac_word" >&5 +echo "configure:607: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -656,7 +654,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:660: checking for $ac_word" >&5 +echo "configure:658: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -688,7 +686,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:692: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:690: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -699,12 +697,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 703 "configure" +#line 701 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -730,12 +728,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:734: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:732: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:739: checking whether we are using GNU C" >&5 +echo "configure:737: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -744,7 +742,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:748: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -763,7 +761,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:767: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:765: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -806,7 +804,7 @@ if test "${GCC}" = "yes" ; then # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:810: checking for $ac_word" >&5 +echo "configure:808: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -835,7 +833,7 @@ fi # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:839: checking for $ac_word" >&5 +echo "configure:837: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -864,7 +862,7 @@ fi # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:868: checking for $ac_word" >&5 +echo "configure:866: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -907,7 +905,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:911: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:909: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -939,12 +937,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:943: checking for Cygwin environment" >&5 +echo "configure:941: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:957: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -980,7 +978,7 @@ fi echo $ac_n "checking for SEH support in compiler""... $ac_c" 1>&6 -echo "configure:984: checking for SEH support in compiler" >&5 +echo "configure:982: checking for SEH support in compiler" >&5 if eval "test \"`echo '$''{'tcl_cv_seh'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -988,7 +986,7 @@ else tcl_cv_seh=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_seh=yes else @@ -1037,12 +1035,12 @@ fi # sufficient for getting the current code to work. # echo $ac_n "checking for EXCEPTION_DISPOSITION support in include files""... $ac_c" 1>&6 -echo "configure:1041: checking for EXCEPTION_DISPOSITION support in include files" >&5 +echo "configure:1039: checking for EXCEPTION_DISPOSITION support in include files" >&5 if eval "test \"`echo '$''{'tcl_cv_eh_disposition'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1057: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_eh_disposition=yes else @@ -1081,12 +1079,12 @@ fi # typedefs like LPFN_ACCEPT and friends. # echo $ac_n "checking for LPFN_ACCEPT support in winsock2.h""... $ac_c" 1>&6 -echo "configure:1085: checking for LPFN_ACCEPT support in winsock2.h" >&5 +echo "configure:1083: checking for LPFN_ACCEPT support in winsock2.h" >&5 if eval "test \"`echo '$''{'tcl_cv_lpfn_decls'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1102: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_lpfn_decls=yes else @@ -1126,12 +1124,12 @@ fi # used by mingw and cygwin is known to do this. echo $ac_n "checking for winnt.h that ignores VOID define""... $ac_c" 1>&6 -echo "configure:1130: checking for winnt.h that ignores VOID define" >&5 +echo "configure:1128: checking for winnt.h that ignores VOID define" >&5 if eval "test \"`echo '$''{'tcl_cv_winnt_ignore_void'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_winnt_ignore_void=yes else @@ -1179,12 +1177,12 @@ fi # call it from inline asm code. echo $ac_n "checking for alloca declaration in malloc.h""... $ac_c" 1>&6 -echo "configure:1183: checking for alloca declaration in malloc.h" >&5 +echo "configure:1181: checking for alloca declaration in malloc.h" >&5 if eval "test \"`echo '$''{'tcl_cv_malloc_decl_alloca'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -1198,7 +1196,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:1202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1200: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_malloc_decl_alloca=yes else @@ -1225,12 +1223,12 @@ fi # warning when initializing a union member. echo $ac_n "checking for cast to union support""... $ac_c" 1>&6 -echo "configure:1229: checking for cast to union support" >&5 +echo "configure:1227: checking for cast to union support" >&5 if eval "test \"`echo '$''{'tcl_cv_cast_to_union'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1242: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_cast_to_union=yes else @@ -1267,13 +1265,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for object suffix""... $ac_c" 1>&6 -echo "configure:1271: checking for object suffix" >&5 +echo "configure:1269: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext -if { (eval echo configure:1277: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1275: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -1291,19 +1289,19 @@ OBJEXT=$ac_cv_objext ac_objext=$ac_cv_objext echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 -echo "configure:1295: checking for mingw32 environment" >&5 +echo "configure:1293: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -1322,7 +1320,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1326: checking for executable suffix" >&5 +echo "configure:1324: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1332,7 +1330,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:1336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:1334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -1359,7 +1357,7 @@ ac_exeext=$EXEEXT echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:1363: checking for building with threads" >&5 +echo "configure:1361: checking for building with threads" >&5 # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then enableval="$enable_threads" @@ -1396,7 +1394,7 @@ EOF echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:1400: checking how to build libraries" >&5 +echo "configure:1398: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -1437,7 +1435,7 @@ EOF # Step 0: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:1441: checking if 64bit support is requested" >&5 +echo "configure:1439: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -1454,7 +1452,7 @@ fi # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1458: checking for $ac_word" >&5 +echo "configure:1456: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CYGPATH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1498,9 +1496,9 @@ fi echo "END" >> $conftest echo $ac_n "checking for Windows native path bug in windres""... $ac_c" 1>&6 -echo "configure:1502: checking for Windows native path bug in windres" >&5 +echo "configure:1500: checking for Windows native path bug in windres" >&5 cyg_conftest=`$CYGPATH $conftest` - if { ac_try='$RC -o conftest.res.o $cyg_conftest'; { (eval echo configure:1504: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } ; then + if { ac_try='$RC -o conftest.res.o $cyg_conftest'; { (eval echo configure:1502: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } ; then echo "$ac_t""no" 1>&6 else echo "$ac_t""yes" 1>&6 @@ -1519,7 +1517,7 @@ echo "configure:1502: checking for Windows native path bug in windres" >&5 # set various compiler flags depending on whether we are using gcc or cl echo $ac_n "checking compiler flags""... $ac_c" 1>&6 -echo "configure:1523: checking compiler flags" >&5 +echo "configure:1521: checking compiler flags" >&5 if test "${GCC}" = "yes" ; then if test "$do64bit" = "yes" ; then echo "configure: warning: "64bit mode not supported with GCC on Windows"" 1>&2 @@ -1739,7 +1737,7 @@ echo "configure:1523: checking compiler flags" >&5 echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:1743: checking for build with symbols" >&5 +echo "configure:1741: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -1799,7 +1797,7 @@ TCL_DBGX=${DBGX} #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1803: checking how to run the C preprocessor" >&5 +echo "configure:1801: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1814,13 +1812,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1824: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1822: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1831,13 +1829,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1841: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1839: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1848,13 +1846,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1858: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1856: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1880,17 +1878,17 @@ echo "$ac_t""$CPP" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1884: checking for errno.h" >&5 +echo "configure:1882: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1894: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2066,8 +2064,6 @@ fi - - trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure @@ -2285,11 +2281,9 @@ s%@TCL_PACKAGE_PATH@%$TCL_PACKAGE_PATH%g s%@TCL_DDE_VERSION@%$TCL_DDE_VERSION%g s%@TCL_DDE_MAJOR_VERSION@%$TCL_DDE_MAJOR_VERSION%g s%@TCL_DDE_MINOR_VERSION@%$TCL_DDE_MINOR_VERSION%g -s%@TCL_DDE_PATCH_LEVEL@%$TCL_DDE_PATCH_LEVEL%g s%@TCL_REG_VERSION@%$TCL_REG_VERSION%g s%@TCL_REG_MAJOR_VERSION@%$TCL_REG_MAJOR_VERSION%g s%@TCL_REG_MINOR_VERSION@%$TCL_REG_MINOR_VERSION%g -s%@TCL_REG_PATCH_LEVEL@%$TCL_REG_PATCH_LEVEL%g s%@RC_OUT@%$RC_OUT%g s%@RC_TYPE@%$RC_TYPE%g s%@RC_INCLUDE@%$RC_INCLUDE%g diff --git a/win/configure.in b/win/configure.in index 56b38e3..398238f 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.3 2003/07/15 22:25:34 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.4 2003/10/02 23:07:35 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,19 +11,17 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".4" +TCL_PATCH_LEVEL=".5" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 TCL_DDE_MAJOR_VERSION=1 TCL_DDE_MINOR_VERSION=2 -TCL_DDE_PATCH_LEVEL="" DDEVER=$TCL_DDE_MAJOR_VERSION$TCL_DDE_MINOR_VERSION TCL_REG_VERSION=1.1 TCL_REG_MAJOR_VERSION=1 TCL_REG_MINOR_VERSION=1 -TCL_REG_PATCH_LEVEL="" REGVER=$TCL_REG_MAJOR_VERSION$TCL_REG_MINOR_VERSION #------------------------------------------------------------------------ @@ -430,11 +428,9 @@ AC_SUBST(TCL_PACKAGE_PATH) AC_SUBST(TCL_DDE_VERSION) AC_SUBST(TCL_DDE_MAJOR_VERSION) AC_SUBST(TCL_DDE_MINOR_VERSION) -AC_SUBST(TCL_DDE_PATCH_LEVEL) AC_SUBST(TCL_REG_VERSION) AC_SUBST(TCL_REG_MAJOR_VERSION) AC_SUBST(TCL_REG_MINOR_VERSION) -AC_SUBST(TCL_REG_PATCH_LEVEL) AC_SUBST(RC) AC_SUBST(RC_OUT) -- cgit v0.12 From 7874bbbf7780a2d50f99f77b4d0590e5b4e6fcbf Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Fri, 3 Oct 2003 17:24:34 +0000 Subject: FileSystem.3 --- doc/FileSystem.3 | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/doc/FileSystem.3 b/doc/FileSystem.3 index 010c408..8cc70b0 100644 --- a/doc/FileSystem.3 +++ b/doc/FileSystem.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: FileSystem.3,v 1.32.2.1 2003/06/23 10:49:14 vincentdarley Exp $ +'\" RCS: @(#) $Id: FileSystem.3,v 1.32.2.2 2003/10/03 17:24:34 vincentdarley Exp $ '\" .so man.macros .TH Filesystem 3 8.4 Tcl "Tcl Library Procedures" @@ -546,14 +546,22 @@ not require additional conversions. \fBTcl_FSGetTranslatedPath\fR attempts to extract the translated path from the given Tcl_Obj. .PP -If the translation succeeds (i.e. the object is a valid path), then it -is returned. Otherwise NULL will be returned, and an error message may -be left in the interpreter. A "translated" path is one which -contains no "~" or "~user" sequences (these have been expanded to -their current representation in the filesystem). -.PP -\fBTcl_FSGetTranslatedStringPath\fR does the same as +If the translation succeeds (i.e. the object is a valid path), then it is +returned. Otherwise NULL will be returned, and an error message may be +left in the interpreter. A "translated" path is one which contains no +"~" or "~user" sequences (these have been expanded to their current +representation in the filesystem). The object returned is owned by the +caller, which must store it or call Tcl_DecrRefCount to ensure memory is +freed. This function is of little practical use, and +\fBTcl_FSGetNormalizedPath\fR or \fBTcl_GetNativePath\fR are usually +better functions to use for most purposes. +.PP +\fBTcl_FSGetTranslatedStringPath\fR does the same as \fBTcl_FSGetTranslatedPath\fR, but returns a character string or NULL. +The string returned is dynamically allocated and owned by the caller, +which must store it or call ckfree to ensure it is freed. Again, +\fBTcl_FSGetNormalizedPath\fR or \fBTcl_GetNativePath\fR are usually +better functions to use for most purposes. .PP \fBTcl_FSNewNativePath\fR performs something like that reverse of the usual obj->path->nativerep conversions. If some code retrieves a path -- cgit v0.12 From 5e610d838ab3c6b8398b2ae540ca3d73f2025e8a Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Fri, 3 Oct 2003 17:25:22 +0000 Subject: new tests for reported problems, fixes to follow --- tests/fileName.test | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++- tests/winFCmd.test | 46 ++++++++++++++++++++++++++++++++--- 2 files changed, 112 insertions(+), 4 deletions(-) diff --git a/tests/fileName.test b/tests/fileName.test index 6247fb9..e858caa 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.1 2003/04/29 11:45:24 vincentdarley Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.2 2003/10/03 17:25:22 vincentdarley Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -895,6 +895,74 @@ test filename-9.18 {Tcl_JoinPath: win} {testsetplatform} { testsetplatform win file join foo/./bar } {foo/./bar} +test filename-9.19 {Tcl_JoinPath: win} {testsetplatform} { + testsetplatform win + set res {} + lappend res \ + [file join {C:\foo\bar}] \ + [file join C:/blah {C:\foo\bar}] \ + [file join C:/blah C:/blah {C:\foo\bar}] +} {C:/foo/bar C:/foo/bar C:/foo/bar} +test filename-9.20 {Tcl_JoinPath: unix} {testsetplatform} { + testsetplatform unix + set res {} + lappend res \ + [file join {/foo/bar}] \ + [file join /x {/foo/bar}] \ + [file join /x /x {/foo/bar}] +} {/foo/bar /foo/bar /foo/bar} +test filename-9.21 {Tcl_JoinPath: mac} {testsetplatform} { + testsetplatform mac + set res {} + lappend res \ + [file join {/foo/bar}] \ + [file join drive: {/foo/bar}] \ + [file join drive: drive: {/foo/bar}] +} {foo:bar foo:bar foo:bar} +test filename-9.22 {Tcl_JoinPath: mac} {testsetplatform} { + testsetplatform mac + set res {} + lappend res \ + [file join {foo:bar}] \ + [file join drive: {foo:bar}] \ + [file join drive: drive: {foo:bar}] +} {foo:bar foo:bar foo:bar} +test filename-9.23 {Tcl_JoinPath: win} {testsetplatform} { + testsetplatform win + set res {} + lappend res \ + [file join {foo\bar}] \ + [file join C:/blah {foo\bar}] \ + [file join C:/blah C:/blah {foo\bar}] + string map [list C:/blah ""] $res +} {foo/bar /foo/bar /foo/bar} +test filename-9.24 {Tcl_JoinPath: unix} {testsetplatform} { + testsetplatform unix + set res {} + lappend res \ + [file join {foo/bar}] \ + [file join /x {foo/bar}] \ + [file join /x /x {foo/bar}] + string map [list /x ""] $res +} {foo/bar /foo/bar /foo/bar} +test filename-9.25 {Tcl_JoinPath: mac} {testsetplatform} { + testsetplatform mac + set res {} + lappend res \ + [file join {foo/bar}] \ + [file join drive: {foo/bar}] \ + [file join drive: drive: {foo/bar}] + string map [list drive: ""] $res +} {:foo:bar foo:bar foo:bar} +test filename-9.26 {Tcl_JoinPath: mac} {testsetplatform} { + testsetplatform mac + set res {} + lappend res \ + [file join {:foo:bar}] \ + [file join drive: {:foo:bar}] \ + [file join drive: drive: {:foo:bar}] + string map [list drive: ""] $res +} {:foo:bar foo:bar foo:bar} test filename-10.1 {Tcl_TranslateFileName} {testsetplatform} { testsetplatform unix diff --git a/tests/winFCmd.test b/tests/winFCmd.test index 0dcb46a..58d6f67 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.20 2002/10/04 08:25:14 dkf Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.20.2.1 2003/10/03 17:25:22 vincentdarley Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -598,8 +598,11 @@ test winFCmd-6.10 {TclpRemoveDirectory: attr == -1} {pcOnly 95} { } {1 {nul EACCES}} test winFCmd-6.11 {TclpRemoveDirectory: attr == -1} {pcOnly nt} { cleanup - list [catch {testfile rmdir /} msg] $msg -} {1 {/ EACCES}} + set res [list [catch {testfile rmdir /} msg] $msg] + # WinXP returns EEXIST, WinNT seems to return EACCES. No policy + # decision has been made as to which is correct. + regsub {E(ACCES|EXIST)} $res "EACCES or EEXIST" +} {1 {C:/ EACCES or EEXIST}} test winFCmd-6.12 {TclpRemoveDirectory: errno == EACCES} {pcOnly 95} { cleanup createfile tf1 @@ -968,6 +971,43 @@ test winFCmd-15.10 {SetWinFileAttributes - failing} {pcOnly cdrom} { test winFCmd-16.1 {Windows file normalization} {pcOnly} { list [file normalize c:/] [file normalize C:/] } {C:/ C:/} +test winFCmd-16.2 {Windows file normalization} {pcOnly} { + close [open td1... w] + set res [file tail [file normalize td1]] + file delete td1... + set res +} {td1} + +set pwd [pwd] +set d [string index $pwd 0] + +test winFCmd-16.3 {Windows file normalization} {pcOnly} { + file norm ${d}:foo +} [file join $pwd foo] +test winFCmd-16.4 {Windows file normalization} {pcOnly} { + file norm [string tolower ${d}]:foo +} [file join $pwd foo] +test winFCmd-16.5 {Windows file normalization} {pcOnly} { + file norm ${d}:foo/bar +} [file join $pwd foo/bar] +test winFCmd-16.6 {Windows file normalization} {pcOnly} { + file norm ${d}:foo\\bar +} [file join $pwd foo/bar] +test winFCmd-16.7 {Windows file normalization} {pcOnly} { + file norm /bar +} "${d}:/bar" +test winFCmd-16.8 {Windows file normalization} {pcOnly} { + file norm ///bar +} "${d}:/bar" +test winFCmd-16.9 {Windows file normalization} {pcOnly} { + file norm /bar/foo +} "${d}:/bar/foo" +test winFCmd-16.10 {Windows file normalization} {pcOnly knownBug} { + if {$d eq "C"} { set dd "D" } else { set dd "C" } + file norm ${dd}:foo +} {Tcl doesn't know about a drive-specific cwd} + +unset d pwd # This block of code used to occur after the "return" call, so I'm # commenting it out and assuming that this code is still under construction. -- cgit v0.12 From 961ab79192fe2d6378d8903dca25ceaa6d4a97b8 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Fri, 3 Oct 2003 17:45:36 +0000 Subject: backporting of filesystem tests, docs --- ChangeLog | 7 ++++ generic/tclFileName.c | 11 ++++--- generic/tclIOUtil.c | 90 ++++++++++++++++++++++++++++++++++++++++++++------- mac/tclMacFile.c | 7 +++- unix/tclUnixFCmd.c | 24 +++++++++++--- unix/tclUnixFile.c | 13 +++++--- win/tclWinFCmd.c | 31 ++++++++++++------ win/tclWinFile.c | 9 ++++-- 8 files changed, 155 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index eed0f6b..b435ddc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-10-03 Vince Darley + + * tests/fileName.test: + * tests/winFCmd.test: + * doc/FileSystem.3: backported various test and documentation + changes from HEAD. Backport of actual code fixes to follow. + 2003-10-02 Don Porter * README: Bumped patch level to 8.4.5 to prepare diff --git a/generic/tclFileName.c b/generic/tclFileName.c index ea7ee05..be689af 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.3 2003/07/17 00:16:04 hobbs Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.4 2003/10/03 17:45:37 vincentdarley Exp $ */ #include "tclInt.h" @@ -1380,16 +1380,17 @@ Tcl_TranslateFileName(interp, name, bufferPtr) * with name after tilde substitution. */ { Tcl_Obj *path = Tcl_NewStringObj(name, -1); - CONST char *result; + Tcl_Obj *transPtr; Tcl_IncrRefCount(path); - result = Tcl_FSGetTranslatedStringPath(interp, path); - if (result == NULL) { + transPtr = Tcl_FSGetTranslatedPath(interp, path); + if (transPtr == NULL) { Tcl_DecrRefCount(path); return NULL; } + Tcl_DStringInit(bufferPtr); - Tcl_DStringAppend(bufferPtr, result, -1); + Tcl_DStringAppend(bufferPtr, Tcl_GetString(transPtr), -1); Tcl_DecrRefCount(path); /* diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index bfe08b4..c59348a 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.8 2003/09/01 12:30:38 vasiljevic Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.9 2003/10/03 17:45:37 vincentdarley Exp $ */ #include "tclInt.h" @@ -1810,6 +1810,9 @@ Tcl_FSStat(pathPtr, buf) retVal = (*statProcPtr->proc)(path, &oldStyleStatBuffer); statProcPtr = statProcPtr->nextPtr; } + if (transPtr != NULL) { + Tcl_DecrRefCount(transPtr); + } } Tcl_MutexUnlock(&obsoleteFsHookMutex); @@ -1937,6 +1940,9 @@ Tcl_FSAccess(pathPtr, mode) retVal = (*accessProcPtr->proc)(path, mode); accessProcPtr = accessProcPtr->nextPtr; } + if (transPtr != NULL) { + Tcl_DecrRefCount(transPtr); + } } Tcl_MutexUnlock(&obsoleteFsHookMutex); @@ -2014,6 +2020,9 @@ Tcl_FSOpenFileChannel(interp, pathPtr, modeString, permissions) modeString, permissions); openFileChannelProcPtr = openFileChannelProcPtr->nextPtr; } + if (transPtr != NULL) { + Tcl_DecrRefCount(transPtr); + } } Tcl_MutexUnlock(&obsoleteFsHookMutex); if (retVal != NULL) { @@ -5093,6 +5102,7 @@ Tcl_FSGetTranslatedPath(interp, pathPtr) retObj = srcFsPathPtr->translatedPathPtr; } + Tcl_IncrRefCount(retObj); return retObj; } @@ -5123,7 +5133,13 @@ Tcl_FSGetTranslatedStringPath(interp, pathPtr) Tcl_Obj *transPtr = Tcl_FSGetTranslatedPath(interp, pathPtr); if (transPtr != NULL) { - return Tcl_GetString(transPtr); + int len; + CONST char *result, *orig; + orig = Tcl_GetStringFromObj(transPtr, &len); + result = (char*) ckalloc((unsigned)(len+1)); + memcpy((VOID*) result, (VOID*) orig, (size_t) (len+1)); + Tcl_DecrRefCount(transPtr); + return result; } return NULL; @@ -5330,17 +5346,69 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) * that call can actually result in a lot of other filesystem * action, which might loop back through here. */ - if ((path[0] != '\0') && - (Tcl_FSGetPathType(pathObjPtr) == TCL_PATH_RELATIVE)) { - useThisCwd = Tcl_FSGetCwd(interp); + if (path[0] != '\0') { + Tcl_PathType type = Tcl_FSGetPathType(pathObjPtr); + if (type == TCL_PATH_RELATIVE) { + useThisCwd = Tcl_FSGetCwd(interp); - if (useThisCwd == NULL) { - return NULL; - } + if (useThisCwd == NULL) return NULL; - absolutePath = Tcl_FSJoinToPath(useThisCwd, 1, &absolutePath); - Tcl_IncrRefCount(absolutePath); - /* We have a refCount on the cwd */ + absolutePath = Tcl_FSJoinToPath(useThisCwd, 1, &absolutePath); + Tcl_IncrRefCount(absolutePath); + /* We have a refCount on the cwd */ +#ifdef __WIN32__ + } else if (type == TCL_PATH_VOLUME_RELATIVE) { + /* + * Only Windows has volume-relative paths. These + * paths are rather rare, but is is nice if Tcl can + * handle them. It is much better if we can + * handle them here, rather than in the native fs code, + * because we really need to have a real absolute path + * just below. + * + * We do not let this block compile on non-Windows + * platforms because the test suite's manual forcing + * of tclPlatform can otherwise cause this code path + * to be executed, causing various errors because + * volume-relative paths really do not exist. + */ + useThisCwd = Tcl_FSGetCwd(interp); + if (useThisCwd == NULL) return NULL; + + if (path[0] == '/') { + /* + * Path of form /foo/bar which is a path in the + * root directory of the current volume. + */ + CONST char *drive = Tcl_GetString(useThisCwd); + absolutePath = Tcl_NewStringObj(drive,2); + Tcl_AppendToObj(absolutePath, path, -1); + Tcl_IncrRefCount(absolutePath); + /* We have a refCount on the cwd */ + } else { + /* + * Path of form C:foo/bar, but this only makes + * sense if the cwd is also on drive C. + */ + CONST char *drive = Tcl_GetString(useThisCwd); + char drive_c = path[0]; + if (drive_c >= 'a') { + drive_c -= ('a' - 'A'); + } + if (drive[0] == drive_c) { + absolutePath = Tcl_DuplicateObj(useThisCwd); + Tcl_IncrRefCount(absolutePath); + Tcl_AppendToObj(absolutePath, "/", 1); + Tcl_AppendToObj(absolutePath, path+2, -1); + /* We have a refCount on the cwd */ + } else { + /* We just can't handle it correctly here */ + Tcl_DecrRefCount(useThisCwd); + useThisCwd = NULL; + } + } +#endif /* __WIN32__ */ + } } /* Already has refCount incremented */ fsPathPtr->normPathPtr = TclFSNormalizeAbsolutePath(interp, absolutePath, diff --git a/mac/tclMacFile.c b/mac/tclMacFile.c index 0311ecd..2c6526a 100644 --- a/mac/tclMacFile.c +++ b/mac/tclMacFile.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacFile.c,v 1.27 2003/03/03 20:22:43 das Exp $ + * RCS: @(#) $Id: tclMacFile.c,v 1.27.2.1 2003/10/03 17:45:37 vincentdarley Exp $ */ /* @@ -178,6 +178,7 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) if (TclpObjLstat(fileNamePtr, &buf) != 0) { /* File doesn't exist */ + Tcl_DecrRefCount(fileNamePtr); return TCL_OK; } @@ -202,6 +203,7 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) Tcl_ListObjAppendElement(interp, resultPtr, pathPtr); } } + Tcl_DecrRefCount(fileNamePtr); return TCL_OK; } else { char *fname; @@ -258,6 +260,7 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) if ((err != noErr) || !isDirectory) { Tcl_DStringFree(&dsOrig); + Tcl_DecrRefCount(fileNamePtr); return TCL_OK; } } @@ -326,6 +329,7 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) } Tcl_DStringFree(&dsOrig); + Tcl_DecrRefCount(fileNamePtr); return result; } } @@ -1211,6 +1215,7 @@ TclpObjLink(pathPtr, toPtr, linkAction) Tcl_IncrRefCount(link); Tcl_DStringFree(&ds); } + Tcl_DecrRefCount(transPtr); } return link; } diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index 72f6846..a439511 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.1 2003/07/16 15:28:30 dgp Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.2 2003/10/03 17:45:37 vincentdarley Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -624,13 +624,22 @@ TclpObjCopyDirectory(srcPathPtr, destPathPtr, errorPtr) Tcl_DString ds; Tcl_DString srcString, dstString; int ret; - + Tcl_Obj *transPtr; + + transPtr = Tcl_FSGetTranslatedPath(NULL,srcPathPtr); Tcl_UtfToExternalDString(NULL, - Tcl_FSGetTranslatedStringPath(NULL,srcPathPtr), + (transPtr != NULL ? Tcl_GetString(transPtr) : NULL), -1, &srcString); + if (transPtr != NULL) { + Tcl_DecrRefCount(transPtr); + } + transPtr = Tcl_FSGetTranslatedPath(NULL,destPathPtr); Tcl_UtfToExternalDString(NULL, - Tcl_FSGetTranslatedStringPath(NULL,destPathPtr), + (transPtr != NULL ? Tcl_GetString(transPtr) : NULL), -1, &dstString); + if (transPtr != NULL) { + Tcl_DecrRefCount(transPtr); + } ret = TraverseUnixTree(TraversalCopy, &srcString, &dstString, &ds); @@ -681,9 +690,14 @@ TclpObjRemoveDirectory(pathPtr, recursive, errorPtr) Tcl_DString ds; Tcl_DString pathString; int ret; + Tcl_Obj *transPtr = Tcl_FSGetTranslatedPath(NULL, pathPtr); - Tcl_UtfToExternalDString(NULL, Tcl_FSGetTranslatedStringPath(NULL, pathPtr), + Tcl_UtfToExternalDString(NULL, + (transPtr != NULL ? Tcl_GetString(transPtr) : NULL), -1, &pathString); + if (transPtr != NULL) { + Tcl_DecrRefCount(transPtr); + } ret = DoRemoveDirectory(&pathString, recursive, &ds); Tcl_DStringFree(&pathString); diff --git a/unix/tclUnixFile.c b/unix/tclUnixFile.c index 3e74d16..fe9f067 100644 --- a/unix/tclUnixFile.c +++ b/unix/tclUnixFile.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFile.c,v 1.32 2003/02/12 18:57:52 vincentdarley Exp $ + * RCS: @(#) $Id: tclUnixFile.c,v 1.32.2.1 2003/10/03 17:45:37 vincentdarley Exp $ */ #include "tclInt.h" @@ -255,7 +255,8 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) dirLength++; } } - + Tcl_DecrRefCount(fileNamePtr); + /* * Now open the directory for reading and iterate over the contents. */ @@ -745,10 +746,14 @@ TclpObjLink(pathPtr, toPtr, linkAction) char link[MAXPATHLEN]; int length; Tcl_DString ds; - - if (Tcl_FSGetTranslatedPath(NULL, pathPtr) == NULL) { + Tcl_Obj *transPtr; + + transPtr = Tcl_FSGetTranslatedPath(NULL, pathPtr); + if (transPtr == NULL) { return NULL; } + Tcl_DecrRefCount(transPtr); + length = readlink(Tcl_FSGetNativePath(pathPtr), link, sizeof(link)); if (length < 0) { return NULL; diff --git a/win/tclWinFCmd.c b/win/tclWinFCmd.c index 621d352..3992fb2 100644 --- a/win/tclWinFCmd.c +++ b/win/tclWinFCmd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFCmd.c,v 1.35 2003/02/07 15:29:33 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinFCmd.c,v 1.35.2.1 2003/10/03 17:45:37 vincentdarley Exp $ */ #include "tclWinInt.h" @@ -854,12 +854,13 @@ TclpObjCopyDirectory(srcPathPtr, destPathPtr, errorPtr) { Tcl_DString ds; Tcl_DString srcString, dstString; + Tcl_Obj *normSrcPtr, *normDestPtr; int ret; - Tcl_WinUtfToTChar(Tcl_FSGetTranslatedStringPath(NULL,srcPathPtr), - -1, &srcString); - Tcl_WinUtfToTChar(Tcl_FSGetTranslatedStringPath(NULL,destPathPtr), - -1, &dstString); + normSrcPtr = Tcl_FSGetNormalizedPath(NULL,srcPathPtr); + Tcl_WinUtfToTChar(Tcl_GetString(normSrcPtr), -1, &srcString); + normDestPtr = Tcl_FSGetNormalizedPath(NULL,destPathPtr); + Tcl_WinUtfToTChar(Tcl_GetString(normDestPtr), -1, &dstString); ret = TraverseWinTree(TraversalCopy, &srcString, &dstString, &ds); @@ -867,7 +868,13 @@ TclpObjCopyDirectory(srcPathPtr, destPathPtr, errorPtr) Tcl_DStringFree(&dstString); if (ret != TCL_OK) { - *errorPtr = Tcl_NewStringObj(Tcl_DStringValue(&ds), -1); + if (!strcmp(Tcl_DStringValue(&ds), Tcl_GetString(normSrcPtr))) { + *errorPtr = srcPathPtr; + } else if (!strcmp(Tcl_DStringValue(&ds), Tcl_GetString(normDestPtr))) { + *errorPtr = destPathPtr; + } else { + *errorPtr = Tcl_NewStringObj(Tcl_DStringValue(&ds), -1); + } Tcl_DStringFree(&ds); Tcl_IncrRefCount(*errorPtr); } @@ -910,6 +917,7 @@ TclpObjRemoveDirectory(pathPtr, recursive, errorPtr) Tcl_Obj **errorPtr; { Tcl_DString ds; + Tcl_Obj *normPtr = NULL; int ret; if (recursive) { /* @@ -918,8 +926,8 @@ TclpObjRemoveDirectory(pathPtr, recursive, errorPtr) * optimize this case easily. */ Tcl_DString native; - Tcl_WinUtfToTChar(Tcl_FSGetTranslatedStringPath(NULL, pathPtr), - -1, &native); + normPtr = Tcl_FSGetNormalizedPath(NULL, pathPtr); + Tcl_WinUtfToTChar(Tcl_GetString(normPtr), -1, &native); ret = DoRemoveDirectory(&native, recursive, &ds); Tcl_DStringFree(&native); } else { @@ -929,7 +937,12 @@ TclpObjRemoveDirectory(pathPtr, recursive, errorPtr) if (ret != TCL_OK) { int len = Tcl_DStringLength(&ds); if (len > 0) { - *errorPtr = Tcl_NewStringObj(Tcl_DStringValue(&ds), -1); + if (normPtr != NULL + && !strcmp(Tcl_DStringValue(&ds), Tcl_GetString(normPtr))) { + *errorPtr = pathPtr; + } else { + *errorPtr = Tcl_NewStringObj(Tcl_DStringValue(&ds), -1); + } Tcl_IncrRefCount(*errorPtr); } Tcl_DStringFree(&ds); diff --git a/win/tclWinFile.c b/win/tclWinFile.c index f1f1ffa..13a2c48 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.5 2003/07/17 00:16:04 hobbs Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.6 2003/10/03 17:45:37 vincentdarley Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -818,7 +818,8 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) } } dirName = Tcl_DStringValue(&dirString); - + Tcl_DecrRefCount(fileNamePtr); + /* * First verify that the specified path is actually a directory. */ @@ -1556,9 +1557,13 @@ TclpObjStat(pathPtr, statPtr) transPtr = Tcl_FSGetTranslatedPath(NULL, pathPtr); if (transPtr == NULL || (strpbrk(Tcl_GetString(transPtr), "?*") != NULL)) { + if (transPtr != NULL) { + Tcl_DecrRefCount(transPtr); + } Tcl_SetErrno(ENOENT); return -1; } + Tcl_DecrRefCount(transPtr); #endif /* -- cgit v0.12 From f6514cb20593a23726967be44adf8f2176e18185 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 3 Oct 2003 20:31:23 +0000 Subject: * generic/tclBasic.c: Fixed error in ref count management of command * generic/tclCmdMZ.c: and execution traces that caused access to freed memory in trace-32.1. [Bug 811483]. --- ChangeLog | 6 ++++ generic/tclBasic.c | 10 +++---- generic/tclCmdMZ.c | 81 +++++++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 75 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index b435ddc..798c208 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-10-03 Don Porter + + * generic/tclBasic.c: Fixed error in ref count management of command + * generic/tclCmdMZ.c: and execution traces that caused access to + freed memory in trace-32.1. [Bug 811483]. + 2003-10-03 Vince Darley * tests/fileName.test: diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 50f80d4..dc4fe90 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.6 2003/09/29 22:03:44 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.7 2003/10/03 20:31:23 dgp Exp $ */ #include "tclInt.h" @@ -2550,11 +2550,9 @@ CallCommandTraces(iPtr, cmdPtr, oldName, newName, flags) * must get the name from cmdPtr */ CONST char *newName; /* Command's new name, or NULL if * the command is not being renamed */ - int flags; /* Flags passed to trace procedures: - * indicates what's happening to command, - * plus other stuff like TCL_GLOBAL_ONLY, - * TCL_NAMESPACE_ONLY, and - * TCL_INTERP_DESTROYED. */ + int flags; /* Flags indicating the type of traces + * to trigger, either TCL_TRACE_DELETE + * or TCL_TRACE_RENAME. */ { register CommandTrace *tracePtr; ActiveCommandTrace active; diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index a3dc03a..eac4bda 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.7 2003/09/24 02:17:10 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.8 2003/10/03 20:31:24 dgp Exp $ */ #include "tclInt.h" @@ -3257,8 +3257,10 @@ TclTraceExecutionObjCmd(interp, optionIndex, objc, objv) tcmdPtr->length = length; tcmdPtr->refCount = 1; flags |= TCL_TRACE_DELETE; - if (flags & (TRACE_EXEC_ENTER_STEP | TRACE_EXEC_LEAVE_STEP)) { - flags |= (TCL_TRACE_ENTER_EXEC | TCL_TRACE_LEAVE_EXEC); + if (flags & (TCL_TRACE_ENTER_DURING_EXEC | + TCL_TRACE_LEAVE_DURING_EXEC)) { + flags |= (TCL_TRACE_ENTER_EXEC | + TCL_TRACE_LEAVE_EXEC); } strcpy(tcmdPtr->command, command); name = Tcl_GetString(objv[3]); @@ -3299,8 +3301,8 @@ TclTraceExecutionObjCmd(interp, optionIndex, objc, objv) && (strncmp(command, tcmdPtr->command, (size_t) length) == 0)) { flags |= TCL_TRACE_DELETE; - if (flags & (TRACE_EXEC_ENTER_STEP | - TRACE_EXEC_LEAVE_STEP)) { + if (flags & (TCL_TRACE_ENTER_DURING_EXEC | + TCL_TRACE_LEAVE_DURING_EXEC)) { flags |= (TCL_TRACE_ENTER_EXEC | TCL_TRACE_LEAVE_EXEC); } @@ -3321,7 +3323,11 @@ TclTraceExecutionObjCmd(interp, optionIndex, objc, objv) /* Postpone deletion */ tcmdPtr->flags = 0; } - if ((--tcmdPtr->refCount) <= 0) { + tcmdPtr->refCount--; + if (tcmdPtr->refCount < 0) { + Tcl_Panic("TclTraceExecutionObjCmd: negative TraceCommandInfo refCount"); + } + if (tcmdPtr->refCount == 0) { ckfree((char*)tcmdPtr); } break; @@ -3524,7 +3530,11 @@ TclTraceCommandObjCmd(interp, optionIndex, objc, objv) flags | TCL_TRACE_DELETE, TraceCommandProc, clientData); tcmdPtr->flags |= TCL_TRACE_DESTROYED; - if ((--tcmdPtr->refCount) <= 0) { + tcmdPtr->refCount--; + if (tcmdPtr->refCount < 0) { + Tcl_Panic("TclTraceCommandObjCmd: negative TraceCommandInfo refCount"); + } + if (tcmdPtr->refCount == 0) { ckfree((char *) tcmdPtr); } break; @@ -4096,6 +4106,8 @@ TraceCommandProc(clientData, interp, oldName, newName, flags) * because command deletes are unconditional, so the trace must go away. */ if (flags & (TCL_TRACE_DESTROYED | TCL_TRACE_DELETE)) { + int untraceFlags = tcmdPtr->flags; + if (tcmdPtr->stepTrace != NULL) { Tcl_DeleteTrace(interp, tcmdPtr->stepTrace); tcmdPtr->stepTrace = NULL; @@ -4107,13 +4119,38 @@ TraceCommandProc(clientData, interp, oldName, newName, flags) /* Postpone deletion, until exec trace returns */ tcmdPtr->flags = 0; } + + /* + * We need to construct the same flags for Tcl_UntraceCommand + * as were passed to Tcl_TraceCommand. Reproduce the processing + * of [trace add execution/command]. Be careful to keep this + * code in sync with that. + */ + + if (untraceFlags & TCL_TRACE_ANY_EXEC) { + untraceFlags |= TCL_TRACE_DELETE; + if (untraceFlags & (TCL_TRACE_ENTER_DURING_EXEC + | TCL_TRACE_LEAVE_DURING_EXEC)) { + untraceFlags |= (TCL_TRACE_ENTER_EXEC | TCL_TRACE_LEAVE_EXEC); + } + } else if (untraceFlags & TCL_TRACE_RENAME) { + untraceFlags |= TCL_TRACE_DELETE; + } + /* - * Decrement the refCount since the command which held our - * reference (ever since we were created) has just gone away + * Remove the trace since TCL_TRACE_DESTROYED tells us to, or the + * command we're tracing has just gone away. Then decrement the + * clientData refCount that was set up by trace creation. */ + Tcl_UntraceCommand(interp, oldName, untraceFlags, + TraceCommandProc, clientData); tcmdPtr->refCount--; } - if ((--tcmdPtr->refCount) <= 0) { + tcmdPtr->refCount--; + if (tcmdPtr->refCount < 0) { + Tcl_Panic("TraceCommandProc: negative TraceCommandInfo refCount"); + } + if (tcmdPtr->refCount == 0) { ckfree((char*)tcmdPtr); } return; @@ -4197,7 +4234,11 @@ TclCheckExecutionTraces(interp, command, numChars, cmdPtr, code, tcmdPtr->refCount++; traceCode = TraceExecutionProc((ClientData)tcmdPtr, interp, curLevel, command, (Tcl_Command)cmdPtr, objc, objv); - if ((--tcmdPtr->refCount) <= 0) { + tcmdPtr->refCount--; + if (tcmdPtr->refCount < 0) { + Tcl_Panic("TclCheckExecutionTraces: negative TraceCommandInfo refCount"); + } + if (tcmdPtr->refCount == 0) { ckfree((char*)tcmdPtr); } } @@ -4404,8 +4445,12 @@ CallTraceProcedure(interp, tracePtr, cmdPtr, command, numChars, objc, objv) static void CommandObjTraceDeleted(ClientData clientData) { TraceCommandInfo* tcmdPtr = (TraceCommandInfo*)clientData; - if ((--tcmdPtr->refCount) <= 0) { - ckfree((char*)tcmdPtr); + tcmdPtr->refCount--; + if (tcmdPtr->refCount < 0) { + Tcl_Panic("CommandObjTraceDeleted: negative TraceCommandInfo refCount"); + } + if (tcmdPtr->refCount == 0) { + ckfree((char*)tcmdPtr); } } @@ -4464,8 +4509,8 @@ TraceExecutionProc(ClientData clientData, Tcl_Interp *interp, * operations, but with either of the step operations. */ if (flags & TCL_TRACE_EXEC_DIRECT) { - call = flags & tcmdPtr->flags & (TCL_TRACE_ENTER_EXEC | - TCL_TRACE_LEAVE_EXEC); + call = flags & tcmdPtr->flags + & (TCL_TRACE_ENTER_EXEC | TCL_TRACE_LEAVE_EXEC); } else { call = 1; } @@ -4605,7 +4650,11 @@ TraceExecutionProc(ClientData clientData, Tcl_Interp *interp, } } if (call) { - if ((--tcmdPtr->refCount) <= 0) { + tcmdPtr->refCount--; + if (tcmdPtr->refCount < 0) { + Tcl_Panic("TraceExecutionProc: negative TraceCommandInfo refCount"); + } + if (tcmdPtr->refCount == 0) { ckfree((char*)tcmdPtr); } } -- cgit v0.12 From ce5f8d3fdff40fbd42079a7d4c6acf2671e42c62 Mon Sep 17 00:00:00 2001 From: mdejong Date: Sat, 4 Oct 2003 18:59:26 +0000 Subject: * win/tclWinPipe.c: fixed a bug in BuildCommandLine. This bug built a command line with a missing space between tclpipe.dll and the following arguments. It caused error in Windows 98 when exec command.com (e.g. dir) [Bug 789040] --- ChangeLog | 7 +++++++ win/tclWinPipe.c | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 798c208..71beb68 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-10-04 Chengye Mao + + * win/tclWinPipe.c: fixed a bug in BuildCommandLine. + This bug built a command line with a missing space between + tclpipe.dll and the following arguments. It caused error + in Windows 98 when exec command.com (e.g. dir) [Bug 789040] + 2003-10-03 Don Porter * generic/tclBasic.c: Fixed error in ref count management of command diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 1fc5fa1..a21d29c 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.3 2003/09/28 10:29:52 davygrvy Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.4 2003/10/04 18:59:27 mdejong Exp $ */ #include "tclWinInt.h" @@ -1577,9 +1577,10 @@ BuildCommandLine( arg = executable; } else { arg = argv[i]; - Tcl_DStringAppend(&ds, " ", 1); } + if(Tcl_DStringLength(&ds) > 0) Tcl_DStringAppend(&ds, " ", 1); + quote = 0; if (arg[0] == '\0') { quote = 1; -- cgit v0.12 From 667a4aad934603ef865cba2b5b15f4c5687dc0c4 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Mon, 6 Oct 2003 09:49:19 +0000 Subject: filesystem bug fixes: volumerelative normalization, file join inconsistency --- ChangeLog | 6 ++++ generic/tclFileName.c | 5 +-- generic/tclIOUtil.c | 92 ++++++++++++++++++++++++++++++++------------------- tests/fileName.test | 19 ++++++++++- 4 files changed, 85 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index 71beb68..460690c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-10-06 Vince Darley + + * generic/tclFileName.c: + * generic/tclIOUtil.c: backport of volumerelative file normalization + and 'file join' inconsistency fixes [Bug 767834, 813273]. + 2003-10-04 Chengye Mao * win/tclWinPipe.c: fixed a bug in BuildCommandLine. diff --git a/generic/tclFileName.c b/generic/tclFileName.c index be689af..6d7a41c 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.4 2003/10/03 17:45:37 vincentdarley Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.5 2003/10/06 09:49:19 vincentdarley Exp $ */ #include "tclInt.h" @@ -1392,7 +1392,8 @@ Tcl_TranslateFileName(interp, name, bufferPtr) Tcl_DStringInit(bufferPtr); Tcl_DStringAppend(bufferPtr, Tcl_GetString(transPtr), -1); Tcl_DecrRefCount(path); - + Tcl_DecrRefCount(transPtr); + /* * Convert forward slashes to backslashes in Windows paths because * some system interfaces don't accept forward slashes. diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index c59348a..8de62f1 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.9 2003/10/03 17:45:37 vincentdarley Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.10 2003/10/06 09:49:20 vincentdarley Exp $ */ #include "tclInt.h" @@ -4515,25 +4515,34 @@ Tcl_FSJoinPath(listObj, elements) } } - if (elements == 2) { - /* - * This is a special case where we can be much more - * efficient - */ - Tcl_Obj *base; + res = Tcl_NewObj(); + + for (i = 0; i < elements; i++) { + Tcl_Obj *elt; + int driveNameLength; + Tcl_PathType type; + char *strElt; + int strEltLen; + int length; + char *ptr; + Tcl_Obj *driveName = NULL; + + Tcl_ListObjIndex(NULL, listObj, i, &elt); - Tcl_ListObjIndex(NULL, listObj, 0, &base); /* - * There is only any value in doing this if the first object is - * of path type, otherwise we'll never actually get any - * efficiency benefit elsewhere in the code (from re-using the - * normalized representation of the base object). + * This is a special case where we can be much more + * efficient, where we are joining a single relative path + * onto an object that is already of path type. The + * 'TclNewFSPathObj' call below creates an object which + * can be normalized more efficiently. Currently we only + * use the special case when we have exactly two elements, + * but we could expand that in the future. */ - if (base->typePtr == &tclFsPathType - && !(base->bytes != NULL && base->bytes[0] == '\0')) { + if ((i == (elements-2)) && (i == 0) && (elt->typePtr == &tclFsPathType) + && !(elt->bytes != NULL && (elt->bytes[0] == '\0'))) { Tcl_Obj *tail; Tcl_PathType type; - Tcl_ListObjIndex(NULL, listObj, 1, &tail); + Tcl_ListObjIndex(NULL, listObj, i+1, &tail); type = GetPathType(tail, NULL, NULL, NULL); if (type == TCL_PATH_RELATIVE) { CONST char *str; @@ -4545,10 +4554,22 @@ Tcl_FSJoinPath(listObj, elements) * '/'. There's no need to return a special path * object, when the base itself is just fine! */ - return base; + Tcl_DecrRefCount(res); + return elt; } - if (str[0] != '.') { - return TclNewFSPathObj(base, str, len); + /* + * If it doesn't begin with '.' and is a mac or unix + * path or it a windows path without backslashes, then we + * can be very efficient here. (In fact even a windows + * path with backslashes can be joined efficiently, but + * the path object would not have forward slashes only, + * and this would therefore contradict our 'file join' + * documentation). + */ + if (str[0] != '.' && ((tclPlatform != TCL_PLATFORM_WINDOWS) + || (strchr(str, '\\') == NULL))) { + Tcl_DecrRefCount(res); + return TclNewFSPathObj(elt, str, len); } /* * Otherwise we don't have an easy join, and @@ -4556,24 +4577,27 @@ Tcl_FSJoinPath(listObj, elements) * things */ } else { - return tail; + if (tclPlatform == TCL_PLATFORM_UNIX) { + Tcl_DecrRefCount(res); + return tail; + } else { + CONST char *str; + int len; + str = Tcl_GetStringFromObj(tail,&len); + if (tclPlatform == TCL_PLATFORM_WINDOWS) { + if (strchr(str, '\\') == NULL) { + Tcl_DecrRefCount(res); + return tail; + } + } else if (tclPlatform == TCL_PLATFORM_MAC) { + if (strchr(str, '/') == NULL) { + Tcl_DecrRefCount(res); + return tail; + } + } + } } } - } - - res = Tcl_NewObj(); - - for (i = 0; i < elements; i++) { - Tcl_Obj *elt; - int driveNameLength; - Tcl_PathType type; - char *strElt; - int strEltLen; - int length; - char *ptr; - Tcl_Obj *driveName = NULL; - - Tcl_ListObjIndex(NULL, listObj, i, &elt); strElt = Tcl_GetStringFromObj(elt, &strEltLen); type = GetPathType(elt, &fsPtr, &driveNameLength, &driveName); if (type != TCL_PATH_RELATIVE) { diff --git a/tests/fileName.test b/tests/fileName.test index e858caa..830618b 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.2 2003/10/03 17:25:22 vincentdarley Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.3 2003/10/06 09:49:20 vincentdarley Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -903,6 +903,23 @@ test filename-9.19 {Tcl_JoinPath: win} {testsetplatform} { [file join C:/blah {C:\foo\bar}] \ [file join C:/blah C:/blah {C:\foo\bar}] } {C:/foo/bar C:/foo/bar C:/foo/bar} +test filename-9.19.1 {Tcl_JoinPath: win} {testsetplatform} { + testsetplatform win + set res {} + lappend res \ + [file join {foo\bar}] \ + [file join C:/blah {foo\bar}] \ + [file join C:/blah C:/blah {foo\bar}] +} {foo/bar C:/blah/foo/bar C:/blah/foo/bar} +test filename-9.19.2 {Tcl_JoinPath: win} {testsetplatform winOnly} { + testsetplatform win + set res {} + lappend res \ + [file join {foo\bar}] \ + [file join [pwd] {foo\bar}] \ + [file join [pwd] [pwd] {foo\bar}] + string map [list [pwd] pwd] $res +} {foo/bar pwd/foo/bar pwd/foo/bar} test filename-9.20 {Tcl_JoinPath: unix} {testsetplatform} { testsetplatform unix set res {} -- cgit v0.12 From 78fbe7e16e6796847893e608e886b3e779a6e98e Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 6 Oct 2003 13:55:34 +0000 Subject: * tests/cmdMZ.test: Updated [package require tcltest] lines to * tests/fileSystem.test: indiciate that these test files * tests/notify.test: use features of tcltest 2. [Bug 706114] * tests/parseExpr.test: * tests/unixNotfy.test: --- ChangeLog | 8 ++++++++ tests/cmdMZ.test | 4 ++-- tests/fileSystem.test | 2 +- tests/notify.test | 4 ++-- tests/parseExpr.test | 4 ++-- tests/unixNotfy.test | 4 ++-- 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 460690c..ccf73e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-10-06 Don Porter + + * tests/cmdMZ.test: Updated [package require tcltest] lines to + * tests/fileSystem.test: indiciate that these test files + * tests/notify.test: use features of tcltest 2. [Bug 706114] + * tests/parseExpr.test: + * tests/unixNotfy.test: + 2003-10-06 Vince Darley * generic/tclFileName.c: diff --git a/tests/cmdMZ.test b/tests/cmdMZ.test index 0e65229..ac2f72d 100644 --- a/tests/cmdMZ.test +++ b/tests/cmdMZ.test @@ -11,10 +11,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: cmdMZ.test,v 1.13 2002/07/19 08:52:27 dkf Exp $ +# RCS: @(#) $Id: cmdMZ.test,v 1.13.2.1 2003/10/06 13:55:37 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } set tcltest::testConstraints(nonLinuxOnly) \ diff --git a/tests/fileSystem.test b/tests/fileSystem.test index f35eae1..6e25de7 100644 --- a/tests/fileSystem.test +++ b/tests/fileSystem.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. -package require tcltest +package require tcltest 2 namespace eval ::tcl::test::fileSystem { catch { diff --git a/tests/notify.test b/tests/notify.test index db2a60d..d85eba2 100755 --- a/tests/notify.test +++ b/tests/notify.test @@ -13,10 +13,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: notify.test,v 1.2 2003/02/17 17:23:57 kennykb Exp $ +# RCS: @(#) $Id: notify.test,v 1.2.2.1 2003/10/06 13:55:38 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } diff --git a/tests/parseExpr.test b/tests/parseExpr.test index 7b87b85..0f6aa27 100644 --- a/tests/parseExpr.test +++ b/tests/parseExpr.test @@ -8,10 +8,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parseExpr.test,v 1.10 2003/02/16 01:36:32 msofer Exp $ +# RCS: @(#) $Id: parseExpr.test,v 1.10.2.1 2003/10/06 13:55:39 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } diff --git a/tests/unixNotfy.test b/tests/unixNotfy.test index c9cda63..d39828e 100644 --- a/tests/unixNotfy.test +++ b/tests/unixNotfy.test @@ -10,14 +10,14 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixNotfy.test,v 1.11.2.1 2003/09/04 17:50:41 dgp Exp $ +# RCS: @(#) $Id: unixNotfy.test,v 1.11.2.2 2003/10/06 13:55:39 dgp Exp $ # The tests should not be run if you have a notifier which is unable to # detect infinite vwaits, as the tests below will hang. The presence of # the "testthread" command indicates that this is the case. if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } -- cgit v0.12 From ab075d4de6e44ed1a638b47cb4a287b5d9c47580 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 6 Oct 2003 14:30:03 +0000 Subject: * tests/reg.test: Corrected duplicate test names. * tests/resource.test: [Bugs 710370, 710358] --- ChangeLog | 3 +++ tests/reg.test | 4 ++-- tests/resource.test | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ccf73e8..8244993 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-10-06 Don Porter + * tests/reg.test: Corrected duplicate test names. + * tests/resource.test: [Bugs 710370, 710358] + * tests/cmdMZ.test: Updated [package require tcltest] lines to * tests/fileSystem.test: indiciate that these test files * tests/notify.test: use features of tcltest 2. [Bug 706114] diff --git a/tests/reg.test b/tests/reg.test index 86f0098..a4f5bea 100644 --- a/tests/reg.test +++ b/tests/reg.test @@ -9,7 +9,7 @@ # # Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. # -# RCS: @(#) $Id: reg.test,v 1.16 2002/07/29 12:28:35 dkf Exp $ +# RCS: @(#) $Id: reg.test,v 1.16.2.1 2003/10/06 14:30:06 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -138,7 +138,7 @@ proc doing {major desc} { # build test number (internal) proc tno {testid} { - return [lindex $testid 0] + return [join $testid .] } # build description, with possible modifiers (internal) diff --git a/tests/resource.test b/tests/resource.test index efacda0..ba6a403 100644 --- a/tests/resource.test +++ b/tests/resource.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: resource.test,v 1.7 2000/04/10 17:19:03 ericm Exp $ +# RCS: @(#) $Id: resource.test,v 1.7.24.1 2003/10/06 14:30:06 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -273,7 +273,7 @@ test resource-8.5 {resource delete tests} {macOnly} { file delete rsrc2.file lappend result $mssg } {1 {expected Macintosh OS type but got "_bad_type_"}} -test resource-8.5 {resource delete tests} {macOnly} { +test resource-8.5.1 {resource delete tests} {macOnly} { catch {file delete rsrc2.file} set id [resource open rsrc2.file w] set result [catch {resource delete -id 128 -file $id TEXT} mssg] -- cgit v0.12 From f0b3bab433064ab445e23607e9486f419e3ab8b5 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 6 Oct 2003 17:26:59 +0000 Subject: * tests/fCmd.test (fCmd-8.2): Test only that tilde-substitution happens, not for any particular result. [Bug 685991] * unix/tcl.m4 (SC_PATH_TCLCONFIG): Corrected search path so that alpha and beta releases of Tcl are not favored. [Bug 608698] --- ChangeLog | 6 ++++++ tests/fCmd.test | 9 ++++----- unix/tcl.m4 | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8244993..190c24c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2003-10-06 Don Porter + * tests/fCmd.test (fCmd-8.2): Test only that tilde-substitution + happens, not for any particular result. [Bug 685991] + + * unix/tcl.m4 (SC_PATH_TCLCONFIG): Corrected search path so + that alpha and beta releases of Tcl are not favored. [Bug 608698] + * tests/reg.test: Corrected duplicate test names. * tests/resource.test: [Bugs 710370, 710358] diff --git a/tests/fCmd.test b/tests/fCmd.test index 8e4d265..cc293f4 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.26.2.2 2003/06/23 10:21:16 vincentdarley Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.26.2.3 2003/10/06 17:27:00 dgp Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -669,10 +669,9 @@ test fCmd-8.1 {FileBasename: basename of ~user: argc == 1 && *path == ~} \ file delete -force td1 set result } "1 {error renaming \"~$user\" to \"td1/[file tail ~$user]\": permission denied}" -test fCmd-8.2 {FileBasename: basename of ~user: argc == 1 && *path == ~} \ - {unixOnly notRoot} { - file tail ~$user -} "$user" +test fCmd-8.2 {FileBasename: basename of ~user: argc == 1 && *path == ~} { + string equal [file tail ~$user] ~$user +} 0 test fCmd-8.3 {file copy and path translation: ensure correct error} { list [catch {file copy ~ [file join this file doesnt exist]} res] $res } [list 1 \ diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 728b03c..53a4615 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -44,10 +44,16 @@ AC_DEFUN(SC_PATH_TCLCONFIG, [ if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ../tcl \ + `ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ + `ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \ ../../tcl \ + `ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ + `ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \ ../../../tcl \ + `ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ + `ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig=`(cd $i/unix; pwd)` @@ -74,6 +80,8 @@ AC_DEFUN(SC_PATH_TCLCONFIG, [ if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ${srcdir}/../tcl \ + `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ + `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig=`(cd $i/unix; pwd)` @@ -140,10 +148,16 @@ AC_DEFUN(SC_PATH_TKCONFIG, [ if test x"${ac_cv_c_tkconfig}" = x ; then for i in \ ../tk \ + `ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ + `ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \ ../../tk \ + `ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ + `ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \ ../../../tk \ + `ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ + `ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do if test -f "$i/unix/tkConfig.sh" ; then ac_cv_c_tkconfig=`(cd $i/unix; pwd)` @@ -168,6 +182,8 @@ AC_DEFUN(SC_PATH_TKCONFIG, [ if test x"${ac_cv_c_tkconfig}" = x ; then for i in \ ${srcdir}/../tk \ + `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ + `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do if test -f "$i/unix/tkConfig.sh" ; then ac_cv_c_tkconfig=`(cd $i/unix; pwd)` -- cgit v0.12 From cc08946ddcd033c47f905e13d9be46cb1ef0b385 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Oct 2003 04:48:07 +0000 Subject: * tests/regexp.test: Matched [makeFile] with [removeFile]. * tests/regexpComp.test: [Bug 675652] --- ChangeLog | 3 +++ tests/regexp.test | 16 ++++++++++------ tests/regexpComp.test | 14 +++++++++----- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 190c24c..07dd267 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-10-06 Don Porter + * tests/regexp.test: Matched [makeFile] with [removeFile]. + * tests/regexpComp.test: [Bug 675652] + * tests/fCmd.test (fCmd-8.2): Test only that tilde-substitution happens, not for any particular result. [Bug 685991] diff --git a/tests/regexp.test b/tests/regexp.test index af27771..08ec147 100644 --- a/tests/regexp.test +++ b/tests/regexp.test @@ -11,10 +11,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: regexp.test,v 1.22.2.1 2003/06/17 20:42:37 vincentdarley Exp $ +# RCS: @(#) $Id: regexp.test,v 1.22.2.2 2003/10/07 04:48:07 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -434,11 +434,15 @@ test regexp-14.2 {CompileRegexp: regexp cache, different flags} { } 1 testConstraint exec [llength [info commands exec]] -test regexp-14.3 {CompileRegexp: regexp cache, empty regexp and empty cache} { +test regexp-14.3 {CompileRegexp: regexp cache, empty regexp and empty cache} -constraints { exec -} { - exec [interpreter] [makeFile {puts [regexp {} foo]} junk.tcl] -} 1 +} -setup { + set junk [makeFile {puts [regexp {} foo]} junk.tcl] +} -body { + exec [interpreter] $junk +} -cleanup { + removeFile junk.tcl +} -result 1 test regexp-15.1 {regexp -start} { catch {unset x} diff --git a/tests/regexpComp.test b/tests/regexpComp.test index 6665e63..b8600dd 100644 --- a/tests/regexpComp.test +++ b/tests/regexpComp.test @@ -14,7 +14,7 @@ # RCS: @(#) $Id$ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -593,11 +593,15 @@ test regexp-14.2 {CompileRegexp: regexp cache, different flags} { } 1 testConstraint exec [llength [info commands exec]] -test regexp-14.3 {CompileRegexp: regexp cache, empty regexp and empty cache} { +test regexp-14.3 {CompileRegexp: regexp cache, empty regexp and empty cache} -constraints { exec -} { - exec [interpreter] [makeFile {puts [regexp {} foo]} junk.tcl] -} 1 +} -setup { + set junk [makeFile {puts [regexp {} foo]} junk.tcl] +} -body { + exec [interpreter] $junk +} -cleanup { + removeFile junk.tcl +} -result 1 test regexp-15.1 {regexp -start} { catch {unset x} -- cgit v0.12 From 39607280d269b07ad3246008d55e4fbe8f9b42ce Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Oct 2003 14:55:48 +0000 Subject: * tests/io.test: Corrected several tests that failed when paths * tests/ioCmd.test: included regexp-special chars. [Bug 775394] --- ChangeLog | 5 +++++ tests/io.test | 35 +++++++++++++---------------------- tests/ioCmd.test | 26 ++++++++++---------------- 3 files changed, 28 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index 07dd267..a781ec1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2003-10-06 Don Porter + * tests/io.test: Corrected several tests that failed when paths + * tests/ioCmd.test: included regexp-special chars. [Bug 775394] + +2003-10-06 Don Porter + * tests/regexp.test: Matched [makeFile] with [removeFile]. * tests/regexpComp.test: [Bug 675652] diff --git a/tests/io.test b/tests/io.test index d74fa9d..7d39138 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40 2003/02/25 22:03:38 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.1 2003/10/07 14:55:49 dgp Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -5217,16 +5217,13 @@ test io-40.5 {POSIX open access modes: APPEND} { close $f set x } {{new line} abc} -test io-40.6 {POSIX open access modes: EXCL} { +test io-40.6 {POSIX open access modes: EXCL} -match regexp -body { removeFile test3 set f [open $path(test3) w] puts $f xyzzy close $f - set msg [list [catch {open $path(test3) {WRONLY CREAT EXCL}} msg] $msg] - regsub " already " $msg " " msg - regsub [file join {} $path(test3)] $msg "test3" msg - string tolower $msg -} {1 {couldn't open "test3": file exists}} + open $path(test3) {WRONLY CREAT EXCL} +} -returnCodes error -result {(?i)couldn't open ".*test3": file (already )?exists} test io-40.7 {POSIX open access modes: EXCL} { removeFile test3 set f [open $path(test3) {WRONLY CREAT EXCL}] @@ -5270,18 +5267,14 @@ test io-40.10 {POSIX open access modes: RDONLY} { [list {two lines: this one} 1 \ [format "channel \"%s\" wasn't opened for writing" $f]] } 0 -test io-40.11 {POSIX open access modes: RDONLY} { +test io-40.11 {POSIX open access modes: RDONLY} -match regexp -body { removeFile test3 - set msg [list [catch {open $path(test3) RDONLY} msg] $msg] - regsub [file join {} $path(test3)] $msg "test3" msg - string tolower $msg -} {1 {couldn't open "test3": no such file or directory}} -test io-40.12 {POSIX open access modes: WRONLY} { + open $path(test3) RDONLY +} -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} +test io-40.12 {POSIX open access modes: WRONLY} -match regexp -body { removeFile test3 - set msg [list [catch {open $path(test3) WRONLY} msg] $msg] - regsub [file join {} $path(test3)] $msg "test3" msg - string tolower $msg -} {1 {couldn't open "test3": no such file or directory}} + open $path(test3) WRONLY +} -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} test io-40.13 {POSIX open access modes: WRONLY} { makeFile xyzzy test3 set f [open $path(test3) WRONLY] @@ -5294,12 +5287,10 @@ test io-40.13 {POSIX open access modes: WRONLY} { string compare [string tolower $x] \ [list 1 "channel \"$f\" wasn't opened for reading" abzzy] } 0 -test io-40.14 {POSIX open access modes: RDWR} { +test io-40.14 {POSIX open access modes: RDWR} -match regexp -body { removeFile test3 - set msg [list [catch {open $path(test3) RDWR} msg] $msg] - regsub [file join {} $path(test3)] $msg "test3" msg - string tolower $msg -} {1 {couldn't open "test3": no such file or directory}} + open $path(test3) RDWR +} -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} test io-40.15 {POSIX open access modes: RDWR} { makeFile xyzzy test3 set f [open $path(test3) RDWR] diff --git a/tests/ioCmd.test b/tests/ioCmd.test index 9e721e7..a9b7ac6 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.16 2003/02/19 16:43:30 das Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.16.2.1 2003/10/07 14:55:49 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -390,18 +390,14 @@ test iocmd-12.1 {POSIX open access modes: RDONLY} { string compare $x \ "{Two lines: this one} 1 [list [format "channel \"%s\" wasn't opened for writing" $f]]" } 0 -test iocmd-12.2 {POSIX open access modes: RDONLY} { +test iocmd-12.2 {POSIX open access modes: RDONLY} -match regexp -body { removeFile test3 - set msg [list [catch {open $path(test3) RDONLY} msg] $msg] - regsub [file join {} $path(test3)] $msg "test3" msg - string tolower $msg -} {1 {couldn't open "test3": no such file or directory}} -test iocmd-12.3 {POSIX open access modes: WRONLY} { + open $path(test3) RDONLY +} -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} +test iocmd-12.3 {POSIX open access modes: WRONLY} -match regexp -body { removeFile test3 - set msg [list [catch {open $path(test3) WRONLY} msg] $msg] - regsub [file join {} $path(test3)] $msg "test3" msg - string tolower $msg -} {1 {couldn't open "test3": no such file or directory}} + open $path(test3) WRONLY +} -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} # # Test 13.4 relies on assigning the same channel name twice. # @@ -424,12 +420,10 @@ test iocmd-12.4 {POSIX open access modes: WRONLY} {unixOnly} { set y [list 1 [format "channel \"%s\" wasn't opened for reading" $f] abzzy] string compare $x $y } 0 -test iocmd-12.5 {POSIX open access modes: RDWR} { +test iocmd-12.5 {POSIX open access modes: RDWR} -match regexp -body { removeFile test3 - set msg [list [catch {open $path(test3) RDWR} msg] $msg] - regsub [file join {} $path(test3)] $msg "test3" msg - string tolower $msg -} {1 {couldn't open "test3": no such file or directory}} + open $path(test3) RDWR +} -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} test iocmd-12.6 {POSIX open access modes: errors} { concat [catch {open $path(test3) "FOO \{BAR BAZ"} msg] $msg\n$errorInfo } "1 unmatched open brace in list -- cgit v0.12 From 1cc76982fe544d5ce535b2e30c68efb7332cc3ef Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Oct 2003 14:57:55 +0000 Subject: typo --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a781ec1..828e069 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2003-10-06 Don Porter +2003-10-07 Don Porter * tests/io.test: Corrected several tests that failed when paths * tests/ioCmd.test: included regexp-special chars. [Bug 775394] -- cgit v0.12 From e100b43202b4173582eb9825c987c53bd0a85c2a Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Oct 2003 15:25:46 +0000 Subject: * doc/OpenFileChnl.3: Updated Tcl_Tell and Tcl_Seek documentation to reflect that they now return Tcl_WideInt (TIP 72) [Bug 787537] --- ChangeLog | 3 +++ doc/OpenFileChnl.3 | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 828e069..8fac291 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-10-07 Don Porter + * doc/OpenFileChnl.3: Updated Tcl_Tell and Tcl_Seek documentation + to reflect that they now return Tcl_WideInt (TIP 72) [Bug 787537] + * tests/io.test: Corrected several tests that failed when paths * tests/ioCmd.test: included regexp-special chars. [Bug 775394] diff --git a/doc/OpenFileChnl.3 b/doc/OpenFileChnl.3 index d8752fe..4eaf0a6 100644 --- a/doc/OpenFileChnl.3 +++ b/doc/OpenFileChnl.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: OpenFileChnl.3,v 1.20.2.1 2003/07/18 16:56:24 dgp Exp $ +'\" RCS: @(#) $Id: OpenFileChnl.3,v 1.20.2.2 2003/10/07 15:25:46 dgp Exp $ .so man.macros .TH Tcl_OpenFileChannel 3 8.3 Tcl "Tcl Library Procedures" .BS @@ -101,11 +101,13 @@ int \fBTcl_OutputBuffered\fR(\fIchannel\fR) .VE .sp -int +.VS 8.4 +Tcl_WideInt \fBTcl_Seek\fR(\fIchannel, offset, seekMode\fR) .sp -int +Tcl_WideInt \fBTcl_Tell\fR(\fIchannel\fR) +.VE 8.4 .sp int \fBTcl_GetChannelOption\fR(\fIinterp, channel, optionName, optionValue\fR) -- cgit v0.12 From 3b21dd18dca159cc96a291b3591e9526460646de Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Oct 2003 15:57:36 +0000 Subject: * tests/fCmd.test: Run tests with the [temporaryDirectory] as the current directory, so that tests can depend on ability to write files. [Bug 575837] --- ChangeLog | 4 ++++ tests/fCmd.test | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8fac291..d9df326 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2003-10-07 Don Porter + * tests/fCmd.test: Run tests with the [temporaryDirectory] as + the current directory, so that tests can depend on ability to write + files. [Bug 575837] + * doc/OpenFileChnl.3: Updated Tcl_Tell and Tcl_Seek documentation to reflect that they now return Tcl_WideInt (TIP 72) [Bug 787537] diff --git a/tests/fCmd.test b/tests/fCmd.test index cc293f4..0b1de7e 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.26.2.3 2003/10/06 17:27:00 dgp Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.26.2.4 2003/10/07 15:57:36 dgp Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -95,6 +95,8 @@ proc contents {file} { set r } +cd [temporaryDirectory] + set ::tcltest::testConstraints(fileSharing) 0 set ::tcltest::testConstraints(notFileSharing) 1 @@ -2225,6 +2227,7 @@ test fCmd-28.3 {file link} { test fCmd-28.4 {file link} { list [catch {file link -abc b c} msg] $msg } {1 {bad switch "-abc": must be -symbolic or -hard}} +cd [workingDirectory] makeDirectory abc.dir makeDirectory abc2.dir -- cgit v0.12 From a5c5a8a5df910708a4414fed2bf1e96fa1eee7bc Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Oct 2003 18:53:22 +0000 Subject: * tests/exec.test: Corrected temporary file management * tests/fileSystem.test: issues uncovered by -debug 1 test * tests/ioCmd.test: operations. Also backported some * tests/pid.test: other fixes from the HEAD. * tests/socket.test: [Bugs 675605, 675655] * tests/source.test: --- ChangeLog | 3 + tests/exec.test | 8 +- tests/fileSystem.test | 9 +- tests/ioCmd.test | 60 ++++----- tests/pid.test | 27 ++-- tests/socket.test | 64 +++++----- tests/source.test | 339 +++++++++++++++++++++++++++++++++----------------- 7 files changed, 320 insertions(+), 190 deletions(-) diff --git a/ChangeLog b/ChangeLog index d9df326..72917d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-10-07 Don Porter + * tests/pid.test: Corrected temporary file management issues + uncovered by -debug 1 test operations. [Bug 675655] + * tests/fCmd.test: Run tests with the [temporaryDirectory] as the current directory, so that tests can depend on ability to write files. [Bug 575837] diff --git a/tests/exec.test b/tests/exec.test index fd80dcf..c5223aa 100644 --- a/tests/exec.test +++ b/tests/exec.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: exec.test,v 1.16 2003/02/04 18:23:35 vincentdarley Exp $ +# RCS: @(#) $Id: exec.test,v 1.16.2.1 2003/10/07 18:53:23 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -138,7 +138,7 @@ test exec-2.6 {redirecting input from immediate source, with UTF} {exec} { # I/O redirection: output to file. set path(gorp.file) [makeFile {} gorp.file] -removeFile gorp.file +file delete $path(gorp.file) test exec-3.1 {redirecting output to file} {exec} { exec [interpreter] $path(echo) "Some simple words" > $path(gorp.file) @@ -179,7 +179,7 @@ test exec-3.7 {redirecting output to file} {exec} { # I/O redirection: output and stderr to file. -removeFile gorp.file +file delete $path(gorp.file) test exec-4.1 {redirecting output and stderr to file} {exec} { exec [interpreter] "$path(echo)" "test output" >& $path(gorp.file) @@ -264,7 +264,7 @@ test exec-6.3 {redirecting stderr through a pipeline} {exec stdio} { # I/O redirection: combinations. set path(gorp.file2) [makeFile {} gorp.file2] -removeFile gorp.file2 +file delete $path(gorp.file2) test exec-7.1 {multiple I/O redirections} {exec} { exec << "command input" > $path(gorp.file2) [interpreter] $path(cat) < $path(gorp.file) diff --git a/tests/fileSystem.test b/tests/fileSystem.test index 6e25de7..b934aed 100644 --- a/tests/fileSystem.test +++ b/tests/fileSystem.test @@ -43,6 +43,9 @@ if {[catch { tcltest::testConstraint hasLinks 1 } +tcltest::testConstraint testsimplefilesystem \ + [string equal testsimplefilesystem [info commands testsimplefilesystem]] + test filesystem-1.0 {link normalisation} {hasLinks} { string equal [file normalize gorp.file] [file normalize link.file] } {0} @@ -389,7 +392,7 @@ test filesystem-6.33 {empty file name} { while {![catch {testfilesystem 0}]} {} } -test filesystem-7.1 {load from vfs} {win} { +test filesystem-7.1 {load from vfs} {win testsimplefilesystem} { # This may cause a crash on exit set dir [pwd] cd [file dirname [info nameof]] @@ -403,7 +406,8 @@ test filesystem-7.1 {load from vfs} {win} { # The real result of this test is what happens when Tcl exits. } {ok} -test filesystem-7.2 {cross-filesystem copy from vfs maintains mtime} { +test filesystem-7.2 {cross-filesystem copy from vfs maintains mtime} \ + {testsimplefilesystem} { set dir [pwd] cd [tcltest::temporaryDirectory] # We created this file several tests ago. @@ -455,7 +459,6 @@ test filesystem-8.2 {relative path objects and use of pwd} { cd .. removeFile [file join abc foo] removeDirectory abc - removeDirectory def cd $origdir set res } {1} diff --git a/tests/ioCmd.test b/tests/ioCmd.test index a9b7ac6..448b222 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -12,15 +12,14 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.16.2.1 2003/10/07 14:55:49 dgp Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.16.2.2 2003/10/07 18:53:23 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import -force ::tcltest::* } -removeFile test1 -removeFile pipe +testConstraint fcopy [llength [info commands fcopy]] test iocmd-1.1 {puts command} { list [catch {puts} msg] $msg @@ -122,7 +121,7 @@ test iocmd-4.7 {read command} { list [catch {read -nonewline stdout} msg] $msg } {1 {channel "stdout" wasn't opened for reading}} test iocmd-4.8 {read command with incorrect combination of arguments} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f "Two lines: this one" puts $f "and this one" @@ -198,7 +197,7 @@ test iocmd-8.3 {fconfigure command} { list [catch {fconfigure a b} msg] $msg } {1 {can not find channel named "a"}} test iocmd-8.4 {fconfigure command} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] set x [list [catch {fconfigure $f1 froboz} msg] $msg] close $f1 @@ -211,7 +210,7 @@ test iocmd-8.6 {fconfigure command} { list [catch {fconfigure stdin -translation froboz} msg] $msg } {1 {bad value for -translation: must be one of auto, binary, cr, lf, crlf, or platform}} test iocmd-8.7 {fconfigure command} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} -encoding unicode set x [fconfigure $f1] @@ -219,7 +218,7 @@ test iocmd-8.7 {fconfigure command} { set x } {-blocking 1 -buffering full -buffersize 4096 -encoding unicode -eofchar {} -translation lf} test iocmd-8.8 {fconfigure command} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -buffering line -buffersize 3030 \ -eofchar {} -encoding unicode @@ -230,7 +229,7 @@ test iocmd-8.8 {fconfigure command} { set x } {line {-blocking 1 -buffering line -buffersize 3030 -encoding unicode -eofchar {} -translation lf}} test iocmd-8.9 {fconfigure command} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation binary -buffering none -buffersize 4040 \ -eofchar {} -encoding binary @@ -365,7 +364,7 @@ test iocmd-10.5 {fblocked command} { set path(test4) [makeFile {} test4] set path(test5) [makeFile {} test5] -removeFile test5 +file delete $path(test5) test iocmd-11.1 {I/O to command pipelines} {unixOrPc unixExecs} { set f [open $path(test4) w] close $f @@ -379,7 +378,7 @@ test iocmd-11.3 {I/O to command pipelines} {unixOrPc unixExecs} { } {1 {can't read output from command: standard output was redirected} NONE} test iocmd-12.1 {POSIX open access modes: RDONLY} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f "Two lines: this one" puts $f "and this one" @@ -391,18 +390,18 @@ test iocmd-12.1 {POSIX open access modes: RDONLY} { "{Two lines: this one} 1 [list [format "channel \"%s\" wasn't opened for writing" $f]]" } 0 test iocmd-12.2 {POSIX open access modes: RDONLY} -match regexp -body { - removeFile test3 + file delete $path(test3) open $path(test3) RDONLY } -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} test iocmd-12.3 {POSIX open access modes: WRONLY} -match regexp -body { - removeFile test3 + file delete $path(test3) open $path(test3) WRONLY } -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} # # Test 13.4 relies on assigning the same channel name twice. # test iocmd-12.4 {POSIX open access modes: WRONLY} {unixOnly} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] fconfigure $f -eofchar {} puts $f xyzzy @@ -421,7 +420,7 @@ test iocmd-12.4 {POSIX open access modes: WRONLY} {unixOnly} { string compare $x $y } 0 test iocmd-12.5 {POSIX open access modes: RDWR} -match regexp -body { - removeFile test3 + file delete $path(test3) open $path(test3) RDWR } -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} test iocmd-12.6 {POSIX open access modes: errors} { @@ -437,6 +436,7 @@ test iocmd-12.7 {POSIX open access modes: errors} { test iocmd-12.8 {POSIX open access modes: errors} { list [catch {open $path(test3) {TRUNC CREAT}} msg] $msg } {1 {access mode must include either RDONLY, WRONLY, or RDWR}} +close [open $path(test3) w] test iocmd-13.1 {errors in open command} { list [catch {open} msg] $msg @@ -495,19 +495,19 @@ test iocmd-14.10 {file id parsing errors} { list [catch {eof $f} msg] $msg } $expect -test iocmd-15.1 {Tcl_FcopyObjCmd} { +test iocmd-15.1 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy} msg] $msg } {1 {wrong # args: should be "fcopy input output ?-size size? ?-command callback?"}} -test iocmd-15.2 {Tcl_FcopyObjCmd} { +test iocmd-15.2 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy 1} msg] $msg } {1 {wrong # args: should be "fcopy input output ?-size size? ?-command callback?"}} -test iocmd-15.3 {Tcl_FcopyObjCmd} { +test iocmd-15.3 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy 1 2 3 4 5 6 7} msg] $msg } {1 {wrong # args: should be "fcopy input output ?-size size? ?-command callback?"}} -test iocmd-15.4 {Tcl_FcopyObjCmd} { +test iocmd-15.4 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy 1 2 3} msg] $msg } {1 {wrong # args: should be "fcopy input output ?-size size? ?-command callback?"}} -test iocmd-15.5 {Tcl_FcopyObjCmd} { +test iocmd-15.5 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy 1 2 3 4 5} msg] $msg } {1 {wrong # args: should be "fcopy input output ?-size size? ?-command callback?"}} @@ -519,25 +519,25 @@ close $f set rfile [open $path(test1) r] set wfile [open $path(test2) w] -test iocmd-15.6 {Tcl_FcopyObjCmd} { +test iocmd-15.6 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy foo $wfile} msg] $msg } {1 {can not find channel named "foo"}} -test iocmd-15.7 {Tcl_FcopyObjCmd} { +test iocmd-15.7 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile foo} msg] $msg } {1 {can not find channel named "foo"}} -test iocmd-15.8 {Tcl_FcopyObjCmd} { +test iocmd-15.8 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $wfile $wfile} msg] $msg } "1 {channel \"$wfile\" wasn't opened for reading}" -test iocmd-15.9 {Tcl_FcopyObjCmd} { +test iocmd-15.9 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile $rfile} msg] $msg } "1 {channel \"$rfile\" wasn't opened for writing}" -test iocmd-15.10 {Tcl_FcopyObjCmd} { +test iocmd-15.10 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile $wfile foo bar} msg] $msg } {1 {bad switch "foo": must be -size or -command}} -test iocmd-15.11 {Tcl_FcopyObjCmd} { +test iocmd-15.11 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile $wfile -size foo} msg] $msg } {1 {expected integer but got "foo"}} -test iocmd-15.12 {Tcl_FcopyObjCmd} { +test iocmd-15.12 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile $wfile -command bar -size foo} msg] $msg } {1 {expected integer but got "foo"}} @@ -546,12 +546,12 @@ close $wfile # cleanup foreach file [list test1 test2 test3 test4] { - catch {::tcltest::removeFile $file} + removeFile $file } # delay long enough for background processes to finish after 500 -foreach file [list test5 pipe output] { - catch {::tcltest::removeFile $file} +foreach file [list test5] { + removeFile $file } -::tcltest::cleanupTests +cleanupTests return diff --git a/tests/pid.test b/tests/pid.test index 0bc3d24..9e8fcce 100644 --- a/tests/pid.test +++ b/tests/pid.test @@ -11,10 +11,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pid.test,v 1.8 2003/02/25 22:03:45 andreas_kupries Exp $ +# RCS: @(#) $Id: pid.test,v 1.8.2.1 2003/10/07 18:53:23 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -26,27 +26,33 @@ if {[info commands pid] == ""} { return } -catch {removeFile test1} -set path(test1) [makeFile {} test1] - test pid-1.1 {pid command} { regexp {(^[0-9]+$)|(^0x[0-9a-fA-F]+$)} [pid] } 1 -test pid-1.2 {pid command} {unixOrPc unixExecs} { +test pid-1.2 {pid command} -constraints {unixOrPc unixExecs} -setup { + set path(test1) [makeFile {} test1] + file delete $path(test1) +} -body { set f [open [format {| echo foo | cat {>%s}} $path(test1)] w] set pids [pid $f] close $f - catch {removeFile test1} list [llength $pids] [regexp {^[0-9]+$} [lindex $pids 0]] \ [regexp {^[0-9]+$} [lindex $pids 1]] \ [expr {[lindex $pids 0] == [lindex $pids 1]}] -} {2 1 1 0} -test pid-1.3 {pid command} { +} -cleanup { + removeFile test1 +} -result {2 1 1 0} +test pid-1.3 {pid command} -setup { + set path(test1) [makeFile {} test1] + file delete $path(test1) +} -body { set f [open $path(test1) w] set pids [pid $f] close $f set pids -} {} +} -cleanup { + removeFile test1 +} -result {} test pid-1.4 {pid command} { list [catch {pid a b} msg] $msg } {1 {wrong # args: should be "pid ?channelId?"}} @@ -55,7 +61,6 @@ test pid-1.5 {pid command} { } {1 {can not find channel named "gorp"}} # cleanup -catch {::tcltest::removeFile test1} ::tcltest::cleanupTests return diff --git a/tests/socket.test b/tests/socket.test index 1f95749..61d461d 100644 --- a/tests/socket.test +++ b/tests/socket.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: socket.test,v 1.26 2002/07/10 11:56:45 dgp Exp $ +# RCS: @(#) $Id: socket.test,v 1.26.2.1 2003/10/07 18:53:23 dgp Exp $ # Running socket tests with a remote server: # ------------------------------------------ @@ -246,7 +246,7 @@ test socket-1.12 {arg parsing for socket command} {socket} { set path(script) [makeFile {} script] test socket-2.1 {tcp connection} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set timer [after 10000 "set x timed_out"] @@ -284,7 +284,7 @@ if [info exists port] { set port [expr 2048 + [pid]%1024] } test socket-2.2 {tcp connection with client port specified} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set timer [after 10000 "set x timeout"] @@ -320,7 +320,7 @@ test socket-2.2 {tcp connection with client port specified} {socket stdio} { set x } [list ready "hello $port"] test socket-2.3 {tcp connection with client interface specified} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set timer [after 2000 "set x done"] @@ -351,7 +351,7 @@ test socket-2.3 {tcp connection with client interface specified} {socket stdio} set x } {ready {hello 127.0.0.1}} test socket-2.4 {tcp connection with server interface specified} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set timer [after 2000 "set x done"] @@ -384,7 +384,7 @@ test socket-2.4 {tcp connection with server interface specified} {socket stdio} set x } {ready hello} test socket-2.5 {tcp connection with redundant server port} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set timer [after 10000 "set x timeout"] @@ -427,7 +427,7 @@ test socket-2.6 {tcp connection} {socket} { set status } ok test socket-2.7 {echo server, one line} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set timer [after 10000 "set x timeout"] @@ -467,8 +467,9 @@ test socket-2.7 {echo server, one line} {socket stdio} { close $f list $x $y } {{hello abcdefghijklmnop} done} -test socket-2.8 {echo server, loop 50 times, single connection} {socket stdio} { - makeFile { +removeFile script +test socket-2.8 {echo server, loop 50 times, single connection} -constraints {socket stdio} -setup { + set path(script) [makeFile { set f [socket -server accept 0] proc accept {s a p} { fileevent $s readable [list echo $s] @@ -494,7 +495,8 @@ test socket-2.8 {echo server, loop 50 times, single connection} {socket stdio} { after cancel $timer close $f puts "done $i" - } script + } script] +} -body { set f [open "|[list [interpreter] $path(script)]" r] gets $f gets $f listen @@ -510,10 +512,13 @@ test socket-2.8 {echo server, loop 50 times, single connection} {socket stdio} { catch {set x [gets $f]} close $f set x -} {done 50} +} -cleanup { + removeFile script +} -result {done 50} +set path(script) [makeFile {} script] test socket-2.9 {socket conflict} {socket stdio} { set s [socket -server accept 0] - removeFile script + file delete $path(script) set f [open $path(script) w] puts -nonewline $f "socket -server accept [lindex [fconfigure $s -sockname] 2]" close $f @@ -579,7 +584,7 @@ test socket-2.11 {detecting new data} {socket} { test socket-3.1 {socket conflict} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set f [socket -server accept 0] @@ -599,7 +604,7 @@ test socket-3.1 {socket conflict} {socket stdio} { set x } {1 {couldn't open socket: address already in use}} test socket-3.2 {server with several clients} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set t1 [after 30000 "set x timed_out"] @@ -659,7 +664,7 @@ test socket-3.2 {server with several clients} {socket stdio} { } {ready done} test socket-4.1 {server with several clients} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set port [gets stdin] @@ -759,7 +764,7 @@ test socket-5.3 {byte order problems, socket numbers, htons} \ } {couldn't open socket: not owner} test socket-6.1 {accept callback error} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { gets stdin port @@ -784,7 +789,7 @@ test socket-6.1 {accept callback error} {socket stdio} { } {{divide by zero}} test socket-7.1 {testing socket specific options} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set ss [socket -server accept 0] @@ -812,7 +817,7 @@ test socket-7.1 {testing socket specific options} {socket stdio} { lappend l [llength $p] } {0 0 3} test socket-7.2 {testing socket specific options} {socket stdio} { - removeFile script + file delete $path(script) set f [open $path(script) w] puts $f { set ss [socket -server accept 2821] @@ -1391,8 +1396,8 @@ set path(script1) [makeFile {} script1] set path(script2) [makeFile {} script2] test socket-12.1 {testing inheritance of server sockets} {socket stdio exec} { - removeFile script1 - removeFile script2 + file delete $path(script1) + file delete $path(script2) # Script1 is just a 10 second delay. If the server socket # is inherited, it will be held open for 10 seconds @@ -1441,14 +1446,12 @@ test socket-12.1 {testing inheritance of server sockets} {socket stdio exec} { set x {server socket was inherited} } - removeFile script1 - removeFile script2 close $p set x } {server socket was not inherited} test socket-12.2 {testing inheritance of client sockets} {socket stdio exec} { - removeFile script1 - removeFile script2 + file delete $path(script1) + file delete $path(script2) # Script1 is just a 20 second delay. If the server socket # is inherited, it will be held open for 10 seconds @@ -1528,14 +1531,12 @@ test socket-12.2 {testing inheritance of client sockets} {socket stdio exec} { if {!$failed} { vwait failed } - removeFile script1 - removeFile script2 close $p set x } {client socket was not inherited} test socket-12.3 {testing inheritance of accepted sockets} {socket stdio exec} { - removeFile script1 - removeFile script2 + file delete $path(script1) + file delete $path(script2) set f [open $path(script1) w] puts $f { @@ -1605,8 +1606,6 @@ test socket-12.3 {testing inheritance of accepted sockets} {socket stdio exec} { vwait x - removeFile script1 - removeFile script2 close $p set x } {accepted socket was not inherited} @@ -1614,7 +1613,7 @@ test socket-12.3 {testing inheritance of accepted sockets} {socket stdio exec} { test socket-13.1 {Testing use of shared socket between two threads} \ {socket testthread} { - removeFile script + file delete $path(script1) threadReap makeFile { @@ -1668,6 +1667,9 @@ test socket-13.1 {Testing use of shared socket between two threads} \ } {hello 1} +removeFile script1 +removeFile script2 + # cleanup if {[string match sock* $commandSocket] == 1} { puts $commandSocket exit diff --git a/tests/source.test b/tests/source.test index f245d05..c603c1b 100644 --- a/tests/source.test +++ b/tests/source.test @@ -7,187 +7,304 @@ # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. # Copyright (c) 1998-2000 by Scriptics Corporation. +# Contributions from Don Porter, NIST, 2003. (not subject to US copyright) # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: source.test,v 1.8 2002/07/05 10:38:43 dkf Exp $ +# RCS: @(#) $Id: source.test,v 1.8.2.1 2003/10/07 18:53:23 dgp Exp $ -if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest - namespace import -force ::tcltest::* +if {[catch {package require tcltest 2.0.2}]} { + puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." + return } -set sourcefile [makeFile "" source.file] -test source-1.1 {source command} { +namespace eval ::tcl::test::source { + namespace import ::tcltest::test + namespace import ::tcltest::testConstraint + namespace import ::tcltest::cleanupTests + namespace import ::tcltest::makeFile + namespace import ::tcltest::removeFile + +test source-1.1 {source command} -setup { set x "old x value" set y "old y value" set z "old z value" - makeFile { + set sourcefile [makeFile { set x 22 set y 33 set z 44 - } source.file + } source.file] +} -body { source $sourcefile list $x $y $z -} {22 33 44} -test source-1.2 {source command} { - makeFile {list result} source.file +} -cleanup { + removeFile source.file +} -result {22 33 44} + +test source-1.2 {source command} -setup { + set sourcefile [makeFile {list result} source.file] +} -body { source $sourcefile -} result -test source-1.3 {source command} { - set y {\ } +} -cleanup { + removeFile source.file +} -result result +test source-1.3 {source command} -setup { + set sourcefile [makeFile {} source.file] set fd [open $sourcefile w] fconfigure $fd -translation lf - puts -nonewline $fd "list a b c " - puts $fd [string index $y 0] + puts $fd "list a b c \\" puts $fd "d e f" close $fd - +} -body { source $sourcefile -} {a b c d e f} +} -cleanup { + removeFile source.file +} -result {a b c d e f} -test source-2.3 {source error conditions} { - makeFile { + +test source-2.3 {source error conditions} -setup { + set sourcefile [makeFile { set x 146 error "error in sourced file" set y $x - } source.file - list [catch {source $sourcefile} msg] $msg $errorInfo -} [list 1 {error in sourced file} "error in sourced file + } source.file] +} -body { + list [catch {source $sourcefile} msg] $msg $::errorInfo +} -cleanup { + removeFile source.file +} -match glob -result [list 1 {error in sourced file} \ + {error in sourced file while executing -\"error \"error in sourced file\"\" - (file \"$sourcefile\" line 3) +"error "error in sourced file"" + (file "*source.file" line 3) invoked from within -\"source \$sourcefile\""] -test source-2.4 {source error conditions} { - makeFile {break} source.file - catch {source $sourcefile} -} 3 -test source-2.5 {source error conditions} { - makeFile {continue} source.file - catch {source $sourcefile} -} 4 -test source-2.6 {source error conditions} { - normalizeMsg [list [catch {source _non_existent_} msg] $msg $errorCode] -} {1 {couldn't read file "_non_existent_": no such file or directory} {posix enoent {no such file or directory}}} - -test source-3.1 {return in middle of source file} { - makeFile { +"source $sourcefile"}] + +test source-2.4 {source error conditions} -setup { + set sourcefile [makeFile {break} source.file] +} -body { + source $sourcefile +} -cleanup { + removeFile source.file +} -returnCodes break + +test source-2.5 {source error conditions} -setup { + set sourcefile [makeFile {continue} source.file] +} -body { + source $sourcefile +} -cleanup { + removeFile source.file +} -returnCodes continue + +test source-2.6 {source error conditions} -setup { + set sourcefile [makeFile {} _non_existent_] + removeFile _non_existent_ +} -body { + list [catch {source $sourcefile} msg] $msg $::errorCode +} -match glob -result [list 1 \ + {couldn't read file "*_non_existent_": no such file or directory} \ + {POSIX ENOENT {no such file or directory}}] + + +test source-3.1 {return in middle of source file} -setup { + set sourcefile [makeFile { set x new-x return allDone set y new-y - } source.file + } source.file] +} -body { set x old-x set y old-y set z [source $sourcefile] list $x $y $z -} {new-x old-y allDone} -test source-3.2 {return with special code etc.} { - makeFile { +} -cleanup { + removeFile source.file +} -result {new-x old-y allDone} + +test source-3.2 {return with special code etc.} -setup { + set sourcefile [makeFile { set x new-x return -code break "Silly result" set y new-y - } source.file - list [catch {source $sourcefile} msg] $msg -} {3 {Silly result}} -test source-3.3 {return with special code etc.} { - makeFile { + } source.file] +} -body { + source $sourcefile +} -cleanup { + removeFile source.file +} -returnCodes break -result {Silly result} + +test source-3.3 {return with special code etc.} -setup { + set sourcefile [makeFile { set x new-x return -code error "Simulated error" set y new-y - } source.file - list [catch {source $sourcefile} msg] $msg $errorInfo $errorCode -} {1 {Simulated error} {Simulated error + } source.file] +} -body { + list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode +} -cleanup { + removeFile source.file +} -result {1 {Simulated error} {Simulated error while executing "source $sourcefile"} NONE} -test source-3.4 {return with special code etc.} { - makeFile { + +test source-3.4 {return with special code etc.} -setup { + set sourcefile [makeFile { set x new-x return -code error -errorinfo "Simulated errorInfo stuff" set y new-y - } source.file - list [catch {source $sourcefile} msg] $msg $errorInfo $errorCode -} {1 {} {Simulated errorInfo stuff + } source.file] +} -body { + list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode +} -cleanup { + removeFile source.file +} -result {1 {} {Simulated errorInfo stuff invoked from within "source $sourcefile"} NONE} -test source-3.5 {return with special code etc.} { - makeFile { + +test source-3.5 {return with special code etc.} -setup { + set sourcefile [makeFile { set x new-x return -code error -errorinfo "Simulated errorInfo stuff" \ -errorcode {a b c} set y new-y - } source.file - list [catch {source $sourcefile} msg] $msg $errorInfo $errorCode -} {1 {} {Simulated errorInfo stuff + } source.file] +} -body { + list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode +} -cleanup { + removeFile source.file +} -result {1 {} {Simulated errorInfo stuff invoked from within "source $sourcefile"} {a b c}} + # Test for the Macintosh specfic features of the source command -test source-4.1 {source error conditions} {macOnly} { - list [catch {source -rsrc _no_exist_} msg] $msg -} [list 1 "The resource \"_no_exist_\" could not be loaded from application."] -test source-4.2 {source error conditions} {macOnly} { - list [catch {source -rsrcid bad_id} msg] $msg -} [list 1 "expected integer but got \"bad_id\""] -test source-4.3 {source error conditions} {macOnly} { - list [catch {source -rsrc rsrcName fileName extra} msg] $msg -} {1 {wrong # args: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?"}} -test source-4.4 {source error conditions} {macOnly} { - list [catch {source non_switch rsrcName} msg] $msg -} {1 {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?"}} -test source-4.5 {source error conditions} {macOnly} { - list [catch {source -bad_switch argument} msg] $msg -} {1 {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?"}} -test source-5.1 {source resource files} {macOnly} { - list [catch {source -rsrc rsrcName bad_file} msg] $msg -} [list 1 "Error finding the file: \"bad_file\"."] -test source-5.2 {source resource files} {macOnly} { - makeFile {return} source.file - list [catch {source -rsrc rsrcName $sourcefile} msg] $msg -} [list 1 "Error reading the file: \"$sourcefile\"."] -test source-5.3 {source resource files} {macOnly} { - testWriteTextResource -rsrc rsrcName -file rsrc.file {set msg2 ok; return} - set result [catch {source -rsrc rsrcName rsrc.file} msg] +test source-4.1 {source error conditions} -constraints macOnly -body { + source -rsrc _no_exist_ +} -result {The resource "_no_exist_" could not be loaded from application.} \ + -returnCodes error + +test source-4.2 {source error conditions} -constraints macOnly -body { + source -rsrcid bad_id +} -returnCodes error -result {expected integer but got "bad_id"} + +test source-4.3 {source error conditions} -constraints macOnly -body { + source -rsrc rsrcName fileName extra +} -returnCodes error -result {wrong # args: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"} + +test source-4.4 {source error conditions} -constraints macOnly -body { + source non_switch rsrcName +} -returnCodes error -result {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"} + +test source-4.5 {source error conditions} -constraints macOnly -body { + source -bad_switch argument +} -returnCodes error -result {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"} + + +testConstraint testWriteTextResource \ + [llength [info commands testWriteTextResource]] + +test source-5.1 {source resource files} -constraints macOnly -setup { + set sourcefile [makeFile {} bad_file] + removeFile bad_file +} -body { + source -rsrc rsrcName $sourcefile +} -returnCodes error -match glob -result {Error finding the file: "*bad_file".} + +test source-5.2 {source resource files} -constraints macOnly -setup { + set sourcefile [makeFile {return} source.file] +} -body { + source -rsrc rsrcName $sourcefile +} -cleanup { + removeFile source.file +} -returnCodes error -match glob \ + -result {Error reading the file: "*source.file".} + +test source-5.3 {source resource files} -constraints { + macOnly testWriteTextResource +} -setup { + set msg2 unset + set rsrcFile [makeFile {} rsrc.file] removeFile rsrc.file + testWriteTextResource -rsrc rsrcName -file $rsrc.file {set msg2 ok; return} +} -body { + set result [catch {source -rsrc rsrcName rsrc.file} msg] list $msg2 $result $msg -} [list ok 0 {}] -test source-5.4 {source resource files} {macOnly} { - catch {unset msg2} - testWriteTextResource -rsrc fileRsrcName -file rsrc.file {set msg2 ok; return} - source -rsrc fileRsrcName rsrc.file - set result [catch {source -rsrc fileRsrcName} msg] +} -cleanup { + removeFile rsrc.file +} -result [list ok 0 {}] + +test source-5.4 {source resource files} -constraints { + macOnly testWriteTextResource +} -setup { + set msg2 unset + set rsrsFile [makeFile {} rsrc.file] removeFile rsrc.file + testWriteTextResource -rsrc fileRsrcName \ + -file $rsrcFile {set msg2 ok; return} +} -body { + source -rsrc fileRsrcName $rsrcFile + set result [catch {source -rsrc fileRsrcName} msg] list $msg2 $result $msg -} [list ok 1 {The resource "fileRsrcName" could not be loaded from application.}] -test source-5.5 {source resource files} {macOnly} { - testWriteTextResource -rsrcid 200 -file rsrc.file {set msg2 hello; set msg3 bye} - set result [catch {source -rsrcid 200 rsrc.file} msg] +} -cleanup { removeFile rsrc.file +} -result [list ok 1 {The resource "fileRsrcName" could not be loaded from application.}] + +test source-5.5 {source resource files} -constraints { + macOnly testWriteTextResource +} -setup { + set msg2 unset + set rsrcFile [makeFile {} rsrc.file] + removeFile rsrc.file + testWriteTextResource -rsrcid 200 \ + -file $rsrcFile {set msg2 hello; set msg3 bye} +} -body { + set result [catch {source -rsrcid 200 $rsrcFile} msg] list $msg2 $result $msg -} [list hello 0 bye] -test source-5.6 {source resource files} {macOnly} { - testWriteTextResource -rsrcid 200 -file rsrc.file {set msg2 hello; error bad; set msg3 bye} - set result [catch {source -rsrcid 200 rsrc.file} msg] +} -cleanup { + removeFile rsrc.file +} -result [list hello 0 bye] + +test source-5.6 {source resource files} -constraints { + macOnly testWriteTextResource +} -setup { + set msg2 unset + set rsrcFile [makeFile {} rsrc.file] removeFile rsrc.file + testWriteTextResource -rsrcid 200 \ + -file $rsrcFile {set msg2 hello; error bad; set msg3 bye} +} -body { + set result [catch {source -rsrcid 200 rsrc.file} msg] list $msg2 $result $msg -} [list hello 1 bad] +} -cleanup { + removeFile rsrc.file +} -result [list hello 1 bad] + -test source-6.1 {source is binary ok} { +test source-6.1 {source is binary ok} -setup { + # Note [makeFile] writes in the system encoding. + # [source] defaults to reading in the system encoding. + set sourcefile [makeFile [list set x "a b\0c"] source.file] +} -body { set x {} - makeFile [list set x "a b\0c"] source.file source $sourcefile string length $x -} 5 -test source-6.2 {source skips everything after Ctrl-Z: Bug 2040} { +} -cleanup { + removeFile source.file +} -result 5 + +test source-6.2 {source skips everything after Ctrl-Z: Bug 2040} -setup { + set sourcefile [makeFile "set x ab\32c" source.file] +} -body { set x {} - makeFile [list set x "ab\32c"] source.file source $sourcefile string length $x -} 2 +} -cleanup { + removeFile source.file +} -result 2 -# cleanup -catch {::tcltest::removeFile source.file} -::tcltest::cleanupTests +cleanupTests +} +namespace delete ::tcl::test::source return -- cgit v0.12 From f059df89b95417f3ad16cc0a51261e86d3e4e8f4 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Oct 2003 20:15:44 +0000 Subject: sync --- ChangeLog | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 72917d5..7ab547b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,11 @@ 2003-10-07 Don Porter - * tests/pid.test: Corrected temporary file management issues - uncovered by -debug 1 test operations. [Bug 675655] + * tests/exec.test: Corrected temporary file management + * tests/fileSystem.test: issues uncovered by -debug 1 test + * tests/ioCmd.test: operations. Also backported some + * tests/pid.test: other fixes from the HEAD. + * tests/socket.test: [Bugs 675605, 675655] + * tests/source.test: * tests/fCmd.test: Run tests with the [temporaryDirectory] as the current directory, so that tests can depend on ability to write -- cgit v0.12 From 1cf2d1bce788d1be36ad8372e2c5c194c88921ba Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Oct 2003 21:37:46 +0000 Subject: * tests/exec.test: Corrected temporary file management * tests/fileSystem.test: issues uncovered by -debug 1 test * tests/io.test: operations. Also backported some * tests/ioCmd.test: other fixes from the HEAD. * tests/pid.test: [Bugs 675605, 675655, 675659] * tests/socket.test: * tests/source.test: --- ChangeLog | 7 +- tests/io.test | 730 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 368 insertions(+), 369 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ab547b..27e95d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,9 +2,10 @@ * tests/exec.test: Corrected temporary file management * tests/fileSystem.test: issues uncovered by -debug 1 test - * tests/ioCmd.test: operations. Also backported some - * tests/pid.test: other fixes from the HEAD. - * tests/socket.test: [Bugs 675605, 675655] + * tests/io.test: operations. Also backported some + * tests/ioCmd.test: other fixes from the HEAD. + * tests/pid.test: [Bugs 675605, 675655, 675659] + * tests/socket.test: * tests/source.test: * tests/fCmd.test: Run tests with the [temporaryDirectory] as diff --git a/tests/io.test b/tests/io.test index 7d39138..e9531e1 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.1 2003/10/07 14:55:49 dgp Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.2 2003/10/07 21:37:48 dgp Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -30,14 +30,14 @@ namespace eval ::tcl::test::io { testConstraint testchannel [llength [info commands testchannel]] testConstraint exec [llength [info commands exec]] +testConstraint openpipe 1 +testConstraint fileevent [llength [info commands fileevent]] +testConstraint fcopy [llength [info commands fcopy]] # You need a *very* special environment to do some tests. In # particular, many file systems do not support large-files... testConstraint largefileSupport 0 -removeFile test1 -removeFile pipe - # set up a long data file for some of the following tests set path(longfile) [makeFile {} longfile] @@ -407,7 +407,7 @@ test io-6.6 {Tcl_GetsObj: loop test} { close $f set x } [list 256 $a] -test io-6.7 {Tcl_GetsObj: error in input} {stdio} { +test io-6.7 {Tcl_GetsObj: error in input} {stdio openpipe} { # if (FilterInputBytes(chanPtr, &gs) != 0) set f [open "|[list [interpreter] cat]" w+] @@ -669,7 +669,7 @@ test io-6.30 {Tcl_GetsObj: crlf mode: buffer exhausted} {testchannel} { close $f set x } [list 15 "123456789012345" 15] -test io-6.31 {Tcl_GetsObj: crlf mode: buffer exhausted, blocked} {stdio testchannel} { +test io-6.31 {Tcl_GetsObj: crlf mode: buffer exhausted, blocked} {stdio testchannel openpipe fileevent} { # (FilterInputBytes() != 0) set f [open "|[list [interpreter] $path(cat)]" w+] @@ -808,7 +808,7 @@ test io-6.42 {Tcl_GetsObj: auto mode: several chars} { close $f set x } [list 4 "abcd" 4 "efgh" 4 "ijkl" 4 "mnop" -1 ""] -test io-6.43 {Tcl_GetsObj: input saw cr} {stdio testchannel} { +test io-6.43 {Tcl_GetsObj: input saw cr} {stdio testchannel openpipe fileevent} { # if (chanPtr->flags & INPUT_SAW_CR) set f [open "|[list [interpreter] $path(cat)]" w+] @@ -825,7 +825,7 @@ test io-6.43 {Tcl_GetsObj: input saw cr} {stdio testchannel} { close $f set x } [list "bbbbbbbbbbbbbbb" 15 "123456789abcdef" 1 4 "abcd" 0 3 "efg"] -test io-6.44 {Tcl_GetsObj: input saw cr, not followed by cr} {stdio testchannel} { +test io-6.44 {Tcl_GetsObj: input saw cr, not followed by cr} {stdio testchannel openpipe fileevent} { # not (*eol == '\n') set f [open "|[list [interpreter] $path(cat)]" w+] @@ -842,7 +842,7 @@ test io-6.44 {Tcl_GetsObj: input saw cr, not followed by cr} {stdio testchannel} close $f set x } [list "bbbbbbbbbbbbbbb" 15 "123456789abcdef" 1 4 "abcd" 0 3 "efg"] -test io-6.45 {Tcl_GetsObj: input saw cr, skip right number of bytes} {stdio testchannel} { +test io-6.45 {Tcl_GetsObj: input saw cr, skip right number of bytes} {stdio testchannel openpipe fileevent} { # Tcl_ExternalToUtf() set f [open "|[list [interpreter] $path(cat)]" w+] @@ -859,7 +859,7 @@ test io-6.45 {Tcl_GetsObj: input saw cr, skip right number of bytes} {stdio test close $f set x } [list 15 "123456789abcdef" 1 4 "abcd" 0] -test io-6.46 {Tcl_GetsObj: input saw cr, followed by just \n should give eof} {stdio testchannel} { +test io-6.46 {Tcl_GetsObj: input saw cr, followed by just \n should give eof} {stdio testchannel openpipe fileevent} { # memmove() set f [open "|[list [interpreter] $path(cat)]" w+] @@ -984,7 +984,7 @@ test io-6.55 {Tcl_GetsObj: overconverted} { close $f set x } [list 8 "there\u4e00ok" 11 "\u4e01more bytes" 4 "here"] -test io-6.56 {Tcl_GetsObj: incomplete lines should disable file events} {stdio} { +test io-6.56 {Tcl_GetsObj: incomplete lines should disable file events} {stdio openpipe fileevent} { update set f [open "|[list [interpreter] $path(cat)]" w+] fconfigure $f -buffering none @@ -1044,7 +1044,7 @@ test io-7.3 {FilterInputBytes: split up character at EOF} {testchannel} { close $f set x } [list 15 "1234567890123\uff10\uff11" 18 0 1 -1 ""] -test io-7.4 {FilterInputBytes: recover from split up character} {stdio} { +test io-7.4 {FilterInputBytes: recover from split up character} {stdio openpipe fileevent} { set f [open "|[list [interpreter] $path(cat)]" w+] fconfigure $f -encoding binary -buffering none puts -nonewline $f "1234567890123\x82\x4f\x82\x50\x82" @@ -1079,7 +1079,7 @@ test io-8.1 {PeekAhead: only go to device if no more cached data} {testchannel} close $f set x } "7" -test io-8.2 {PeekAhead: only go to device if no more cached data} {stdio testchannel} { +test io-8.2 {PeekAhead: only go to device if no more cached data} {stdio testchannel openpipe fileevent} { # not (bufPtr->nextPtr == NULL) set f [open "|[list [interpreter] $path(cat)]" w+] @@ -1099,7 +1099,7 @@ test io-8.2 {PeekAhead: only go to device if no more cached data} {stdio testcha close $f set x } [list -1 "" 42 15 "123456789012345" 25] -test io-8.3 {PeekAhead: no cached data available} {stdio testchannel} { +test io-8.3 {PeekAhead: no cached data available} {stdio testchannel openpipe fileevent} { # (bytesLeft == 0) set f [open "|[list [interpreter] $path(cat)]" w+] @@ -1132,7 +1132,7 @@ test io-8.4 {PeekAhead: cached data available in this buffer} { set x } $a unset a -test io-8.5 {PeekAhead: don't peek if last read was short} {stdio testchannel} { +test io-8.5 {PeekAhead: don't peek if last read was short} {stdio testchannel openpipe fileevent} { # (bufPtr->nextAdded < bufPtr->length) set f [open "|[list [interpreter] $path(cat)]" w+] @@ -1144,7 +1144,7 @@ test io-8.5 {PeekAhead: don't peek if last read was short} {stdio testchannel} { close $f set x } {15 abcdefghijklmno 1} -test io-8.6 {PeekAhead: change to non-blocking mode} {stdio testchannel} { +test io-8.6 {PeekAhead: change to non-blocking mode} {stdio testchannel openpipe fileevent} { # ((chanPtr->flags & CHANNEL_NONBLOCKING) == 0) set f [open "|[list [interpreter] $path(cat)]" w+] @@ -1156,7 +1156,7 @@ test io-8.6 {PeekAhead: change to non-blocking mode} {stdio testchannel} { close $f set x } {15 abcdefghijklmno 1} -test io-8.7 {PeekAhead: cleanup} {stdio testchannel} { +test io-8.7 {PeekAhead: cleanup} {stdio testchannel openpipe fileevent} { # Make sure bytes are removed from buffer. set f [open "|[list [interpreter] $path(cat)]" w+] @@ -1322,7 +1322,7 @@ test io-12.3 {ReadChars: allocate more space} { close $f set x } {abcdefghijklmnopqrstuvwxyz} -test io-12.4 {ReadChars: split-up char} {stdio testchannel} { +test io-12.4 {ReadChars: split-up char} {stdio testchannel openpipe fileevent} { # (srcRead == 0) set f [open "|[list [interpreter] $path(cat)]" w+] @@ -1347,7 +1347,7 @@ test io-12.4 {ReadChars: split-up char} {stdio testchannel} { close $f set x } [list "123456789012345" 1 "\u672c" 0] -test io-12.5 {ReadChars: fileevents on partial characters} {stdio} { +test io-12.5 {ReadChars: fileevents on partial characters} {stdio openpipe fileevent} { set path(test1) [makeFile { fconfigure stdout -encoding binary -buffering none gets stdin; puts -nonewline "\xe7" @@ -1442,7 +1442,7 @@ test io-13.5 {TranslateInputEOL: crlf mode: naked lf} { close $f set x } "abcd\ndef\nfgh" -test io-13.6 {TranslateInputEOL: auto mode: saw cr in last segment} {stdio testchannel} { +test io-13.6 {TranslateInputEOL: auto mode: saw cr in last segment} {stdio testchannel openpipe fileevent} { # (chanPtr->flags & INPUT_SAW_CR) # This test may fail on slower machines. @@ -1468,7 +1468,7 @@ test io-13.6 {TranslateInputEOL: auto mode: saw cr in last segment} {stdio testc close $f set x } [list "abcdefghj\n" 1 "01234" 0] -test io-13.7 {TranslateInputEOL: auto mode: naked \r} {testchannel} { +test io-13.7 {TranslateInputEOL: auto mode: naked \r} {testchannel openpipe} { # (src >= srcMax) set f [open $path(test1) w] @@ -1580,7 +1580,7 @@ test io-14.2 {Tcl_SetStdChannel and Tcl_GetStdChannel} { set path(test3) [makeFile {} test3] -test io-14.3 {Tcl_SetStdChannel & Tcl_GetStdChannel} {exec} { +test io-14.3 {Tcl_SetStdChannel & Tcl_GetStdChannel} {exec openpipe} { set f [open $path(test1) w] puts $f [format { close stdin @@ -1670,9 +1670,9 @@ test io-14.7 {Tcl_GetChannel: stdio name translation} { set path(script) [makeFile {} script] -test io-14.8 {reuse of stdio special channels} {stdio} { - removeFile script - removeFile test1 +test io-14.8 {reuse of stdio special channels} {stdio openpipe} { + file delete $path(script) + file delete $path(test1) set f [open $path(script) w] puts $f [format { close stderr @@ -1689,9 +1689,9 @@ test io-14.8 {reuse of stdio special channels} {stdio} { set c } hello -test io-14.9 {reuse of stdio special channels} {stdio} { - removeFile script - removeFile test1 +test io-14.9 {reuse of stdio special channels} {stdio openpipe fileevent} { + file delete $path(script) + file delete $path(test1) set f [open $path(script) w] puts $f { array set path [lindex $argv 0] @@ -1760,7 +1760,7 @@ test io-17.3 {GetChannelTable, DeleteChannelTable on std handles} {testchannel} } {0 1 0} test io-18.1 {Tcl_RegisterChannel, Tcl_UnregisterChannel} {testchannel} { - removeFile test1 + file delete $path(test1) set l "" set f [open $path(test1) w] lappend l [lindex [testchannel info $f] 15] @@ -1774,7 +1774,7 @@ test io-18.1 {Tcl_RegisterChannel, Tcl_UnregisterChannel} {testchannel} { [list 1 [format "can not find channel named \"%s\"" $f]] } 0 test io-18.2 {Tcl_RegisterChannel, Tcl_UnregisterChannel} {testchannel} { - removeFile test1 + file delete $path(test1) set l "" set f [open $path(test1) w] lappend l [lindex [testchannel info $f] 15] @@ -1795,7 +1795,7 @@ test io-18.2 {Tcl_RegisterChannel, Tcl_UnregisterChannel} {testchannel} { [list 1 2 1 1 [format "can not find channel named \"%s\"" $f]] } 0 test io-18.3 {Tcl_RegisterChannel, Tcl_UnregisterChannel} {testchannel} { - removeFile test1 + file delete $path(test1) set l "" set f [open $path(test1) w] lappend l [lindex [testchannel info $f] 15] @@ -1818,7 +1818,7 @@ test io-19.1 {Tcl_GetChannel->Tcl_GetStdChannel, standard handles} { eof stdin } 0 test io-19.2 {testing Tcl_GetChannel, user opened handle} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] set x [eof $f] close $f @@ -1828,7 +1828,7 @@ test io-19.3 {Tcl_GetChannel, channel not found} { list [catch {eof file34} msg] $msg } {1 {can not find channel named "file34"}} test io-19.4 {Tcl_CreateChannel, insertion into channel table} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] set l "" lappend l [eof $f] @@ -1874,7 +1874,7 @@ test io-20.4 {Tcl_CreateChannel: initial settings} {macOnly} { set path(stdout) [makeFile {} stdout] -test io-20.5 {Tcl_CreateChannel: install channel in empty slot} {stdio} { +test io-20.5 {Tcl_CreateChannel: install channel in empty slot} {stdio openpipe} { set f [open $path(script) w] puts $f [format { close stdout @@ -1902,7 +1902,7 @@ test io-22.1 {Tcl_GetChannelMode} { } {} test io-23.1 {Tcl_GetChannelName} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] set n [testchannel name $f] close $f @@ -1910,7 +1910,7 @@ test io-23.1 {Tcl_GetChannelName} {testchannel} { } 0 test io-24.1 {Tcl_GetChannelType} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] set t [testchannel type $f] close $f @@ -1931,7 +1931,7 @@ test io-25.1 {Tcl_GetChannelHandle, input} {testchannel} { set l } {10 11} test io-25.2 {Tcl_GetChannelHandle, output} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello @@ -1942,11 +1942,11 @@ test io-25.2 {Tcl_GetChannelHandle, output} {testchannel} { lappend l [testchannel outputbuffered $f] lappend l [tell $f] close $f - removeFile test1 + file delete $path(test1) set l } {6 6 0 6} -test io-26.1 {Tcl_GetChannelInstanceData} {stdio} { +test io-26.1 {Tcl_GetChannelInstanceData} {stdio openpipe} { # "pid" command uses Tcl_GetChannelInstanceData # Don't care what pid is (but must be a number), just want to exercise it. @@ -1958,7 +1958,7 @@ test io-26.1 {Tcl_GetChannelInstanceData} {stdio} { # Test flushing. The functions tested here are FlushChannel. test io-27.1 {FlushChannel, no output buffered} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] flush $f set s [file size $path(test1)] @@ -1966,7 +1966,7 @@ test io-27.1 {FlushChannel, no output buffered} { set s } 0 test io-27.2 {FlushChannel, some output buffered} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} set l "" @@ -1979,7 +1979,7 @@ test io-27.2 {FlushChannel, some output buffered} { set l } {0 6 6} test io-27.3 {FlushChannel, implicit flush on close} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} set l "" @@ -1990,7 +1990,7 @@ test io-27.3 {FlushChannel, implicit flush on close} { set l } {0 6} test io-27.4 {FlushChannel, implicit flush when buffer fills} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} fconfigure $f -buffersize 60 @@ -2007,7 +2007,7 @@ test io-27.4 {FlushChannel, implicit flush when buffer fills} { } {0 60 72} test io-27.5 {FlushChannel, implicit flush when buffer fills and on close} \ {unixOrPc} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -buffersize 60 -eofchar {} set l "" @@ -2025,9 +2025,9 @@ set path(pipe) [makeFile {} pipe] set path(output) [makeFile {} output] test io-27.6 {FlushChannel, async flushing, async close} \ - {stdio asyncPipeClose } { - removeFile pipe - removeFile output + {stdio asyncPipeClose openpipe} { + file delete $path(pipe) + file delete $path(output) set f [open $path(pipe) w] puts $f [format { set f [open "%s" w] @@ -2065,7 +2065,7 @@ test io-27.6 {FlushChannel, async flushing, async close} \ # Tests closing a channel. The functions tested are CloseChannel and Tcl_Close. test io-28.1 {CloseChannel called when all references are dropped} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] interp create x interp share "" $f x @@ -2078,7 +2078,7 @@ test io-28.1 {CloseChannel called when all references are dropped} {testchannel} set l } {2 1} test io-28.2 {CloseChannel called when all references are dropped} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] interp create x interp share "" $f x @@ -2093,9 +2093,9 @@ test io-28.2 {CloseChannel called when all references are dropped} { set l } abcdef test io-28.3 {CloseChannel, not called before output queue is empty} \ - {stdio asyncPipeClose nonPortable} { - removeFile pipe - removeFile output + {stdio asyncPipeClose nonPortable openpipe} { + file delete $path(pipe) + file delete $path(output) set f [open $path(pipe) w] puts $f { @@ -2139,7 +2139,7 @@ test io-28.3 {CloseChannel, not called before output queue is empty} \ } } ok test io-28.4 {Tcl_Close} {testchannel} { - removeFile test1 + file delete $path(test1) set l "" lappend l [lsort [testchannel open]] set f [open $path(test1) w] @@ -2151,8 +2151,8 @@ test io-28.4 {Tcl_Close} {testchannel} { $consoleFileNames] string compare $l $x } 0 -test io-28.5 {Tcl_Close vs standard handles} {stdio unixOnly testchannel} { - removeFile script +test io-28.5 {Tcl_Close vs standard handles} {stdio unixOnly testchannel openpipe} { + file delete $path(script) set f [open $path(script) w] puts $f { close stdin @@ -2169,7 +2169,7 @@ test io-29.1 {Tcl_WriteChars, channel not writable} { list [catch {puts stdin hello} msg] $msg } {1 {channel "stdin" wasn't opened for writing}} test io-29.2 {Tcl_WriteChars, empty string} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -eofchar {} puts -nonewline $f "" @@ -2177,7 +2177,7 @@ test io-29.2 {Tcl_WriteChars, empty string} { file size $path(test1) } 0 test io-29.3 {Tcl_WriteChars, nonempty string} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -eofchar {} puts -nonewline $f hello @@ -2185,7 +2185,7 @@ test io-29.3 {Tcl_WriteChars, nonempty string} { file size $path(test1) } 5 test io-29.4 {Tcl_WriteChars, buffering in full buffering mode} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -buffering full -eofchar {} puts $f hello @@ -2199,7 +2199,7 @@ test io-29.4 {Tcl_WriteChars, buffering in full buffering mode} {testchannel} { set l } {6 0 0 6} test io-29.5 {Tcl_WriteChars, buffering in line buffering mode} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -buffering line -eofchar {} puts -nonewline $f hello @@ -2213,7 +2213,7 @@ test io-29.5 {Tcl_WriteChars, buffering in line buffering mode} {testchannel} { set l } {5 0 0 11} test io-29.6 {Tcl_WriteChars, buffering in no buffering mode} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -buffering none -eofchar {} puts -nonewline $f hello @@ -2228,7 +2228,7 @@ test io-29.6 {Tcl_WriteChars, buffering in no buffering mode} {testchannel} { } {0 5 0 11} test io-29.7 {Tcl_Flush, full buffering} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -buffering full -eofchar {} puts -nonewline $f hello @@ -2245,7 +2245,7 @@ test io-29.7 {Tcl_Flush, full buffering} {testchannel} { set l } {5 0 11 0 0 11} test io-29.8 {Tcl_Flush, full buffering} {testchannel} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -buffering line puts -nonewline $f hello @@ -2268,7 +2268,7 @@ test io-29.9 {Tcl_Flush, channel not writable} { list [catch {flush stdin} msg] $msg } {1 {channel "stdin" wasn't opened for writing}} test io-29.10 {Tcl_WriteChars, looping and buffering} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} set f2 [open $path(longfile) r] @@ -2280,7 +2280,7 @@ test io-29.10 {Tcl_WriteChars, looping and buffering} { file size $path(test1) } 387 test io-29.11 {Tcl_WriteChars, no newline, implicit flush} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -eofchar {} set f2 [open $path(longfile) r] @@ -2291,9 +2291,9 @@ test io-29.11 {Tcl_WriteChars, no newline, implicit flush} { close $f2 file size $path(test1) } 377 -test io-29.12 {Tcl_WriteChars on a pipe} {stdio} { - removeFile test1 - removeFile pipe +test io-29.12 {Tcl_WriteChars on a pipe} {stdio openpipe} { + file delete $path(test1) + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 [format { set f1 [open "%s" r] @@ -2316,9 +2316,9 @@ test io-29.12 {Tcl_WriteChars on a pipe} {stdio} { close $f2 set y } ok -test io-29.13 {Tcl_WriteChars to a pipe, line buffered} {stdio} { - removeFile test1 - removeFile pipe +test io-29.13 {Tcl_WriteChars to a pipe, line buffered} {stdio openpipe} { + file delete $path(test1) + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 { puts [gets stdin] @@ -2346,7 +2346,7 @@ test io-29.13 {Tcl_WriteChars to a pipe, line buffered} {stdio} { set y } ok test io-29.14 {Tcl_WriteChars, buffering and implicit flush at close} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] puts -nonewline $f "Text1" puts -nonewline $f " Text 2" @@ -2358,7 +2358,7 @@ test io-29.14 {Tcl_WriteChars, buffering and implicit flush at close} { set x } {Text1 Text 2 Text 3} test io-29.15 {Tcl_Flush, channel not open for writing} { - removeFile test1 + file delete $path(test1) set fd [open $path(test1) w] close $fd set fd [open $path(test1) r] @@ -2367,7 +2367,7 @@ test io-29.15 {Tcl_Flush, channel not open for writing} { string compare $x \ [list 1 "channel \"$fd\" wasn't opened for writing"] } 0 -test io-29.16 {Tcl_Flush on pipe opened only for reading} {stdio} { +test io-29.16 {Tcl_Flush on pipe opened only for reading} {stdio openpipe} { set fd [open "|[list [interpreter] cat longfile]" r] set x [list [catch {flush $fd} msg] $msg] catch {close $fd} @@ -2375,7 +2375,7 @@ test io-29.16 {Tcl_Flush on pipe opened only for reading} {stdio} { [list 1 "channel \"$fd\" wasn't opened for writing"] } 0 test io-29.17 {Tcl_WriteChars buffers, then Tcl_Flush flushes} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf puts $f1 hello @@ -2387,7 +2387,7 @@ test io-29.17 {Tcl_WriteChars buffers, then Tcl_Flush flushes} { set x } 18 test io-29.18 {Tcl_WriteChars and Tcl_Flush intermixed} { - removeFile test1 + file delete $path(test1) set x "" set f1 [open $path(test1) w] fconfigure $f1 -translation lf @@ -2406,7 +2406,7 @@ test io-29.18 {Tcl_WriteChars and Tcl_Flush intermixed} { set x } {18 24 30} test io-29.19 {Explicit and implicit flushes} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} set x "" @@ -2424,7 +2424,7 @@ test io-29.19 {Explicit and implicit flushes} { set x } {18 24 30} test io-29.20 {Implicit flush when buffer is full} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} set line "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" @@ -2441,8 +2441,8 @@ test io-29.20 {Implicit flush when buffer is full} { lappend z [file size $path(test1)] set z } {4096 12288 12600} -test io-29.21 {Tcl_Flush to pipe} {stdio} { - removeFile pipe +test io-29.21 {Tcl_Flush to pipe} {stdio openpipe} { + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 {set x [read stdin 6]} puts $f1 {set cnt [string length $x]} @@ -2455,8 +2455,8 @@ test io-29.21 {Tcl_Flush to pipe} {stdio} { catch {close $f1} set x } "read 6 characters" -test io-29.22 {Tcl_Flush called at other end of pipe} {stdio} { - removeFile pipe +test io-29.22 {Tcl_Flush called at other end of pipe} {stdio openpipe} { + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 { fconfigure stdout -buffering full @@ -2478,8 +2478,8 @@ test io-29.22 {Tcl_Flush called at other end of pipe} {stdio} { close $f1 set x } {hello hello bye} -test io-29.23 {Tcl_Flush and line buffering at end of pipe} {stdio} { - removeFile pipe +test io-29.23 {Tcl_Flush and line buffering at end of pipe} {stdio openpipe} { + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 { puts hello @@ -2513,8 +2513,8 @@ test io-29.24 {Tcl_WriteChars and Tcl_Flush move end of file} { close $f set x } "{} {Line 1\nLine 2}" -test io-29.25 {Implicit flush with Tcl_Flush to command pipelines} {stdio} { - removeFile test3 +test io-29.25 {Implicit flush with Tcl_Flush to command pipelines} {stdio openpipe fileevent} { + file delete $path(test3) set f [open "|[list [interpreter] $path(cat) | [interpreter] $path(cat) > $path(test3)]" w] puts $f "Line 1" puts $f "Line 2" @@ -2525,7 +2525,7 @@ test io-29.25 {Implicit flush with Tcl_Flush to command pipelines} {stdio} { close $f set x } "Line 1\nLine 2\n" -test io-29.26 {Tcl_Flush, Tcl_Write on bidirectional pipelines} {stdio unixExecs} { +test io-29.26 {Tcl_Flush, Tcl_Write on bidirectional pipelines} {stdio unixExecs openpipe} { set f [open "|[list cat -u]" r+] puts $f "Line1" flush $f @@ -2533,8 +2533,8 @@ test io-29.26 {Tcl_Flush, Tcl_Write on bidirectional pipelines} {stdio unixExecs close $f set x } {Line1} -test io-29.27 {Tcl_Flush on closed pipeline} {stdio} { - removeFile pipe +test io-29.27 {Tcl_Flush on closed pipeline} {stdio openpipe} { + file delete $path(pipe) set f [open $path(pipe) w] puts $f {exit} close $f @@ -2562,7 +2562,7 @@ test io-29.27 {Tcl_Flush on closed pipeline} {stdio} { string tolower $x } {1 {error flushing "": broken pipe} {posix epipe {broken pipe}}} test io-29.28 {Tcl_WriteChars, lf mode} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} puts $f hello\nthere\nand\nhere @@ -2572,7 +2572,7 @@ test io-29.28 {Tcl_WriteChars, lf mode} { set s } 21 test io-29.29 {Tcl_WriteChars, cr mode} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr -eofchar {} puts $f hello\nthere\nand\nhere @@ -2580,16 +2580,16 @@ test io-29.29 {Tcl_WriteChars, cr mode} { file size $path(test1) } 21 test io-29.30 {Tcl_WriteChars, crlf mode} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf -eofchar {} puts $f hello\nthere\nand\nhere close $f file size $path(test1) } 25 -test io-29.31 {Tcl_WriteChars, background flush} {stdio} { - removeFile pipe - removeFile output +test io-29.31 {Tcl_WriteChars, background flush} {stdio openpipe} { + file delete $path(pipe) + file delete $path(output) set f [open $path(pipe) w] puts $f [format {set f [open "%s" w]} $path(output)] puts $f {fconfigure $f -translation lf} @@ -2624,9 +2624,9 @@ test io-29.31 {Tcl_WriteChars, background flush} {stdio} { } } ok test io-29.32 {Tcl_WriteChars, background flush to slow reader} \ - {stdio asyncPipeClose} { - catch {removeFile pipe} - catch {removeFile output} + {stdio asyncPipeClose openpipe} { + file delete $path(pipe) + file delete $path(output) set f [open $path(pipe) w] puts $f [format {set f [open {%s} w]} $path(output)] puts $f {fconfigure $f -translation lf} @@ -2677,7 +2677,7 @@ test io-29.33 {Tcl_Flush, implicit flush on exit} {exec} { close $f set r } "hello\nbye\nstrange\n" -test io-29.34 {Tcl_Close, async flush on close, using sockets} {socket tempNotMac} { +test io-29.34 {Tcl_Close, async flush on close, using sockets} {socket tempNotMac fileevent} { set c 0 variable x running set l abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz @@ -2714,7 +2714,7 @@ test io-29.34 {Tcl_Close, async flush on close, using sockets} {socket tempNotMa vwait [namespace which -variable x] set c } 2000 -test io-29.35 {Tcl_Close vs fileevent vs multiple interpreters} {socket tempNotMac} { +test io-29.35 {Tcl_Close vs fileevent vs multiple interpreters} {socket tempNotMac fileevent} { # On Mac, this test screws up sockets such that subsequent tests using port 2828 # either cause errors or panic(). @@ -2759,7 +2759,7 @@ test io-29.35 {Tcl_Close vs fileevent vs multiple interpreters} {socket tempNotM # Test end of line translations. Procedures tested are Tcl_Write, Tcl_Read. test io-30.1 {Tcl_Write lf, Tcl_Read lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\nand\nhere @@ -2771,7 +2771,7 @@ test io-30.1 {Tcl_Write lf, Tcl_Read lf} { set x } "hello\nthere\nand\nhere\n" test io-30.2 {Tcl_Write lf, Tcl_Read cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\nand\nhere @@ -2783,7 +2783,7 @@ test io-30.2 {Tcl_Write lf, Tcl_Read cr} { set x } "hello\nthere\nand\nhere\n" test io-30.3 {Tcl_Write lf, Tcl_Read crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\nand\nhere @@ -2795,7 +2795,7 @@ test io-30.3 {Tcl_Write lf, Tcl_Read crlf} { set x } "hello\nthere\nand\nhere\n" test io-30.4 {Tcl_Write cr, Tcl_Read cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr puts $f hello\nthere\nand\nhere @@ -2807,7 +2807,7 @@ test io-30.4 {Tcl_Write cr, Tcl_Read cr} { set x } "hello\nthere\nand\nhere\n" test io-30.5 {Tcl_Write cr, Tcl_Read lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr puts $f hello\nthere\nand\nhere @@ -2819,7 +2819,7 @@ test io-30.5 {Tcl_Write cr, Tcl_Read lf} { set x } "hello\rthere\rand\rhere\r" test io-30.6 {Tcl_Write cr, Tcl_Read crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr puts $f hello\nthere\nand\nhere @@ -2831,7 +2831,7 @@ test io-30.6 {Tcl_Write cr, Tcl_Read crlf} { set x } "hello\rthere\rand\rhere\r" test io-30.7 {Tcl_Write crlf, Tcl_Read crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf puts $f hello\nthere\nand\nhere @@ -2843,7 +2843,7 @@ test io-30.7 {Tcl_Write crlf, Tcl_Read crlf} { set x } "hello\nthere\nand\nhere\n" test io-30.8 {Tcl_Write crlf, Tcl_Read lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf puts $f hello\nthere\nand\nhere @@ -2855,7 +2855,7 @@ test io-30.8 {Tcl_Write crlf, Tcl_Read lf} { set x } "hello\r\nthere\r\nand\r\nhere\r\n" test io-30.9 {Tcl_Write crlf, Tcl_Read cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf puts $f hello\nthere\nand\nhere @@ -2867,7 +2867,7 @@ test io-30.9 {Tcl_Write crlf, Tcl_Read cr} { set x } "hello\n\nthere\n\nand\n\nhere\n\n" test io-30.10 {Tcl_Write lf, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\nand\nhere @@ -2883,7 +2883,7 @@ and here } auto} test io-30.11 {Tcl_Write cr, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr puts $f hello\nthere\nand\nhere @@ -2899,7 +2899,7 @@ and here } auto} test io-30.12 {Tcl_Write crlf, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf puts $f hello\nthere\nand\nhere @@ -2916,7 +2916,7 @@ here } auto} test io-30.13 {Tcl_Write crlf on block boundary, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set line "123456789ABCDE" ;# 14 char plus crlf @@ -2933,7 +2933,7 @@ test io-30.13 {Tcl_Write crlf on block boundary, Tcl_Read auto} { } [expr 700*15+1] test io-30.14 {Tcl_Write crlf on block boundary, Tcl_Read crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set line "123456789ABCDE" ;# 14 char plus crlf @@ -2950,7 +2950,7 @@ test io-30.14 {Tcl_Write crlf on block boundary, Tcl_Read crlf} { } [expr 700*15+1] test io-30.15 {Tcl_Write mixed, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\nand\rhere @@ -2966,7 +2966,7 @@ and here } test io-30.16 {Tcl_Write ^Z at end, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts -nonewline $f hello\nthere\nand\rhere\n\x1a @@ -2982,7 +2982,7 @@ and here } test io-30.17 {Tcl_Write, implicit ^Z at end, Tcl_Read auto} {pcOnly} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -eofchar \x1a -translation lf puts $f hello\nthere\nand\rhere @@ -2998,7 +2998,7 @@ and here } test io-30.18 {Tcl_Write, ^Z in middle, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set s [format "abc\ndef\n%cghi\nqrs" 26] @@ -3018,7 +3018,7 @@ test io-30.18 {Tcl_Write, ^Z in middle, Tcl_Read auto} { set l } {abc def 0 {} 1 {} 1} test io-30.19 {Tcl_Write, ^Z no newline in middle, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set s [format "abc\ndef\n%cghi\nqrs" 26] @@ -3038,7 +3038,7 @@ test io-30.19 {Tcl_Write, ^Z no newline in middle, Tcl_Read auto} { set l } {abc def 0 {} 1 {} 1} test io-30.20 {Tcl_Write, ^Z in middle ignored, Tcl_Read lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} set s [format "abc\ndef\n%cghi\nqrs" 26] @@ -3060,7 +3060,7 @@ test io-30.20 {Tcl_Write, ^Z in middle ignored, Tcl_Read lf} { set l } "abc def 0 \x1aghi 0 qrs 0 {} 1" test io-30.21 {Tcl_Write, ^Z in middle ignored, Tcl_Read cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} set s [format "abc\ndef\n%cghi\nqrs" 26] @@ -3078,7 +3078,7 @@ test io-30.21 {Tcl_Write, ^Z in middle ignored, Tcl_Read cr} { set l } {0 1 {} 1} test io-30.22 {Tcl_Write, ^Z in middle ignored, Tcl_Read crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} set s [format "abc\ndef\n%cghi\nqrs" 26] @@ -3096,7 +3096,7 @@ test io-30.22 {Tcl_Write, ^Z in middle ignored, Tcl_Read crlf} { set l } {0 1 {} 1} test io-30.23 {Tcl_Write lf, ^Z in middle, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set c [format abc\ndef\n%cqrs\ntuv 26] @@ -3110,7 +3110,7 @@ test io-30.23 {Tcl_Write lf, ^Z in middle, Tcl_Read auto} { list $c $e } {8 1} test io-30.24 {Tcl_Write lf, ^Z in middle, Tcl_Read lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set c [format abc\ndef\n%cqrs\ntuv 26] @@ -3124,7 +3124,7 @@ test io-30.24 {Tcl_Write lf, ^Z in middle, Tcl_Read lf} { list $c $e } {8 1} test io-30.25 {Tcl_Write cr, ^Z in middle, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr set c [format abc\ndef\n%cqrs\ntuv 26] @@ -3138,7 +3138,7 @@ test io-30.25 {Tcl_Write cr, ^Z in middle, Tcl_Read auto} { list $c $e } {8 1} test io-30.26 {Tcl_Write cr, ^Z in middle, Tcl_Read cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr set c [format abc\ndef\n%cqrs\ntuv 26] @@ -3152,7 +3152,7 @@ test io-30.26 {Tcl_Write cr, ^Z in middle, Tcl_Read cr} { list $c $e } {8 1} test io-30.27 {Tcl_Write crlf, ^Z in middle, Tcl_Read auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set c [format abc\ndef\n%cqrs\ntuv 26] @@ -3166,7 +3166,7 @@ test io-30.27 {Tcl_Write crlf, ^Z in middle, Tcl_Read auto} { list $c $e } {8 1} test io-30.28 {Tcl_Write crlf, ^Z in middle, Tcl_Read crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set c [format abc\ndef\n%cqrs\ntuv 26] @@ -3183,7 +3183,7 @@ test io-30.28 {Tcl_Write crlf, ^Z in middle, Tcl_Read crlf} { # Test end of line translations. Functions tested are Tcl_Write and Tcl_Gets. test io-31.1 {Tcl_Write lf, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\nand\nhere @@ -3200,7 +3200,7 @@ test io-31.1 {Tcl_Write lf, Tcl_Gets auto} { set l } {hello 6 auto there 12 auto} test io-31.2 {Tcl_Write cr, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr puts $f hello\nthere\nand\nhere @@ -3217,7 +3217,7 @@ test io-31.2 {Tcl_Write cr, Tcl_Gets auto} { set l } {hello 6 auto there 12 auto} test io-31.3 {Tcl_Write crlf, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf puts $f hello\nthere\nand\nhere @@ -3234,7 +3234,7 @@ test io-31.3 {Tcl_Write crlf, Tcl_Gets auto} { set l } {hello 7 auto there 14 auto} test io-31.4 {Tcl_Write lf, Tcl_Gets lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\nand\nhere @@ -3252,7 +3252,7 @@ test io-31.4 {Tcl_Write lf, Tcl_Gets lf} { set l } {hello 6 lf there 12 lf} test io-31.5 {Tcl_Write lf, Tcl_Gets cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\nand\nhere @@ -3272,7 +3272,7 @@ test io-31.5 {Tcl_Write lf, Tcl_Gets cr} { set l } {21 21 cr 1 {} 21 cr 1} test io-31.6 {Tcl_Write lf, Tcl_Gets crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\nand\nhere @@ -3292,7 +3292,7 @@ test io-31.6 {Tcl_Write lf, Tcl_Gets crlf} { set l } {21 21 crlf 1 {} 21 crlf 1} test io-31.7 {Tcl_Write cr, Tcl_Gets cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr puts $f hello\nthere\nand\nhere @@ -3312,7 +3312,7 @@ test io-31.7 {Tcl_Write cr, Tcl_Gets cr} { set l } {hello 6 cr 0 there 12 cr 0} test io-31.8 {Tcl_Write cr, Tcl_Gets lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr puts $f hello\nthere\nand\nhere @@ -3332,7 +3332,7 @@ test io-31.8 {Tcl_Write cr, Tcl_Gets lf} { set l } {21 21 lf 1 {} 21 lf 1} test io-31.9 {Tcl_Write cr, Tcl_Gets crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr puts $f hello\nthere\nand\nhere @@ -3352,7 +3352,7 @@ test io-31.9 {Tcl_Write cr, Tcl_Gets crlf} { set l } {21 21 crlf 1 {} 21 crlf 1} test io-31.10 {Tcl_Write crlf, Tcl_Gets crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf puts $f hello\nthere\nand\nhere @@ -3372,7 +3372,7 @@ test io-31.10 {Tcl_Write crlf, Tcl_Gets crlf} { set l } {hello 7 crlf 0 there 14 crlf 0} test io-31.11 {Tcl_Write crlf, Tcl_Gets cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf puts $f hello\nthere\nand\nhere @@ -3392,7 +3392,7 @@ test io-31.11 {Tcl_Write crlf, Tcl_Gets cr} { set l } {hello 6 cr 0 6 13 cr 0} test io-31.12 {Tcl_Write crlf, Tcl_Gets lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf puts $f hello\nthere\nand\nhere @@ -3412,7 +3412,7 @@ test io-31.12 {Tcl_Write crlf, Tcl_Gets lf} { set l } {6 7 lf 0 6 14 lf 0} test io-31.13 {binary mode is synonym of lf mode} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation binary set x [fconfigure $f -translation] @@ -3424,7 +3424,7 @@ test io-31.13 {binary mode is synonym of lf mode} { # not supoprted. # test io-31.14 {Tcl_Write mixed, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts $f hello\nthere\rand\r\nhere @@ -3443,7 +3443,7 @@ test io-31.14 {Tcl_Write mixed, Tcl_Gets auto} { set l } {hello there and here 0 {} 1} test io-31.15 {Tcl_Write mixed, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts -nonewline $f hello\nthere\rand\r\nhere\r @@ -3462,7 +3462,7 @@ test io-31.15 {Tcl_Write mixed, Tcl_Gets auto} { set l } {hello there and here 0 {} 1} test io-31.16 {Tcl_Write mixed, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts -nonewline $f hello\nthere\rand\r\nhere\n @@ -3480,7 +3480,7 @@ test io-31.16 {Tcl_Write mixed, Tcl_Gets auto} { set l } {hello there and here 0 {} 1} test io-31.17 {Tcl_Write mixed, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts -nonewline $f hello\nthere\rand\r\nhere\r\n @@ -3499,7 +3499,7 @@ test io-31.17 {Tcl_Write mixed, Tcl_Gets auto} { set l } {hello there and here 0 {} 1} test io-31.18 {Tcl_Write ^Z at end, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set s [format "hello\nthere\nand\rhere\n\%c" 26] @@ -3519,7 +3519,7 @@ test io-31.18 {Tcl_Write ^Z at end, Tcl_Gets auto} { set l } {hello there and here 0 {} 1} test io-31.19 {Tcl_Write, implicit ^Z at end, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -eofchar \x1a -translation lf puts $f hello\nthere\nand\rhere @@ -3538,7 +3538,7 @@ test io-31.19 {Tcl_Write, implicit ^Z at end, Tcl_Gets auto} { set l } {hello there and here 0 {} 1} test io-31.20 {Tcl_Write, ^Z in middle, Tcl_Gets auto, eofChar} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3557,7 +3557,7 @@ test io-31.20 {Tcl_Write, ^Z in middle, Tcl_Gets auto, eofChar} { set l } {abc def 0 {} 1} test io-31.21 {Tcl_Write, no newline ^Z in middle, Tcl_Gets auto, eofChar} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3575,7 +3575,7 @@ test io-31.21 {Tcl_Write, no newline ^Z in middle, Tcl_Gets auto, eofChar} { set l } {abc def 0 {} 1} test io-31.22 {Tcl_Write, ^Z in middle ignored, Tcl_Gets lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3597,7 +3597,7 @@ test io-31.22 {Tcl_Write, ^Z in middle ignored, Tcl_Gets lf} { set l } "abc def 0 \x1aqrs 0 tuv 0 {} 1" test io-31.23 {Tcl_Write, ^Z in middle ignored, Tcl_Gets cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr -eofchar {} set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3619,7 +3619,7 @@ test io-31.23 {Tcl_Write, ^Z in middle ignored, Tcl_Gets cr} { set l } "abc def 0 \x1aqrs 0 tuv 0 {} 1" test io-31.24 {Tcl_Write, ^Z in middle ignored, Tcl_Gets crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf -eofchar {} set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3641,7 +3641,7 @@ test io-31.24 {Tcl_Write, ^Z in middle ignored, Tcl_Gets crlf} { set l } "abc def 0 \x1aqrs 0 tuv 0 {} 1" test io-31.25 {Tcl_Write lf, ^Z in middle, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3659,7 +3659,7 @@ test io-31.25 {Tcl_Write lf, ^Z in middle, Tcl_Gets auto} { set l } {abc def 0 {} 1} test io-31.26 {Tcl_Write lf, ^Z in middle, Tcl_Gets lf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3677,7 +3677,7 @@ test io-31.26 {Tcl_Write lf, ^Z in middle, Tcl_Gets lf} { set l } {abc def 0 {} 1} test io-31.27 {Tcl_Write cr, ^Z in middle, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr -eofchar {} set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3695,7 +3695,7 @@ test io-31.27 {Tcl_Write cr, ^Z in middle, Tcl_Gets auto} { set l } {abc def 0 {} 1} test io-31.28 {Tcl_Write cr, ^Z in middle, Tcl_Gets cr} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr -eofchar {} set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3713,7 +3713,7 @@ test io-31.28 {Tcl_Write cr, ^Z in middle, Tcl_Gets cr} { set l } {abc def 0 {} 1} test io-31.29 {Tcl_Write crlf, ^Z in middle, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf -eofchar {} set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3731,7 +3731,7 @@ test io-31.29 {Tcl_Write crlf, ^Z in middle, Tcl_Gets auto} { set l } {abc def 0 {} 1} test io-31.30 {Tcl_Write crlf, ^Z in middle, Tcl_Gets crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf -eofchar {} set s [format "abc\ndef\n%cqrs\ntuv" 26] @@ -3749,7 +3749,7 @@ test io-31.30 {Tcl_Write crlf, ^Z in middle, Tcl_Gets crlf} { set l } {abc def 0 {} 1} test io-31.31 {Tcl_Write crlf on block boundary, Tcl_Gets crlf} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set line "123456789ABCDE" ;# 14 char plus crlf @@ -3768,7 +3768,7 @@ test io-31.31 {Tcl_Write crlf on block boundary, Tcl_Gets crlf} { string length $c } [expr 700*15+1] test io-31.32 {Tcl_Write crlf on block boundary, Tcl_Gets auto} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set line "123456789ABCDE" ;# 14 char plus crlf @@ -3868,8 +3868,8 @@ test io-32.9 {Tcl_Read, read to end of file} { } set x } ok -test io-32.10 {Tcl_Read from a pipe} {stdio} { - removeFile pipe +test io-32.10 {Tcl_Read from a pipe} {stdio openpipe} { + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 {puts [gets stdin]} close $f1 @@ -3880,8 +3880,8 @@ test io-32.10 {Tcl_Read from a pipe} {stdio} { close $f1 set x } "hello\n" -test io-32.11 {Tcl_Read from a pipe} {stdio} { - removeFile pipe +test io-32.11 {Tcl_Read from a pipe} {stdio openpipe} { + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 {puts [gets stdin]} puts $f1 {puts [gets stdin]} @@ -3900,7 +3900,7 @@ test io-32.11 {Tcl_Read from a pipe} {stdio} { } {hello }} test io-32.12 {Tcl_Read, -nonewline} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] puts $f1 hello puts $f1 bye @@ -3912,7 +3912,7 @@ test io-32.12 {Tcl_Read, -nonewline} { } {hello bye} test io-32.13 {Tcl_Read, -nonewline} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] puts $f1 hello puts $f1 bye @@ -3924,7 +3924,7 @@ test io-32.13 {Tcl_Read, -nonewline} { } {9 {hello bye}} test io-32.14 {Tcl_Read, reading in small chunks} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f "Two lines: this one" puts $f "and this one" @@ -3937,7 +3937,7 @@ test io-32.14 {Tcl_Read, reading in small chunks} { and this one }} test io-32.15 {Tcl_Read, asking for more input than available} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f "Two lines: this one" puts $f "and this one" @@ -3950,7 +3950,7 @@ test io-32.15 {Tcl_Read, asking for more input than available} { and this one } test io-32.16 {Tcl_Read, read to end of file with -nonewline} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f "Two lines: this one" puts $f "and this one" @@ -3965,7 +3965,7 @@ and this one} # Test Tcl_Gets. test io-33.1 {Tcl_Gets, reading what was written} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] set y "first line" puts $f1 $y @@ -3990,8 +3990,8 @@ test io-33.2 {Tcl_Gets into variable} { close $f1 set z } ok -test io-33.3 {Tcl_Gets from pipe} {stdio} { - removeFile pipe +test io-33.3 {Tcl_Gets from pipe} {stdio openpipe} { + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 {puts [gets stdin]} close $f1 @@ -4007,7 +4007,7 @@ test io-33.3 {Tcl_Gets from pipe} {stdio} { set z } ok test io-33.4 {Tcl_Gets with long line} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" @@ -4027,7 +4027,7 @@ test io-33.5 {Tcl_Gets with long line} { list $x $y } {260 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ} test io-33.6 {Tcl_Gets and end of file} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] puts -nonewline $f "Test1\nTest2" close $f @@ -4104,7 +4104,7 @@ test io-34.1 {Tcl_Seek to current position at start of file} { set c } 0 test io-34.2 {Tcl_Seek to offset from start} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} puts $f1 "abcdefghijklmnopqrstuvwxyz" @@ -4117,7 +4117,7 @@ test io-34.2 {Tcl_Seek to offset from start} { set c } 10 test io-34.3 {Tcl_Seek to end of file} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} puts $f1 "abcdefghijklmnopqrstuvwxyz" @@ -4130,7 +4130,7 @@ test io-34.3 {Tcl_Seek to end of file} { set c } 54 test io-34.4 {Tcl_Seek to offset from end of file} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} puts $f1 "abcdefghijklmnopqrstuvwxyz" @@ -4143,7 +4143,7 @@ test io-34.4 {Tcl_Seek to offset from end of file} { set c } 44 test io-34.5 {Tcl_Seek to offset from current position} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} puts $f1 "abcdefghijklmnopqrstuvwxyz" @@ -4157,7 +4157,7 @@ test io-34.5 {Tcl_Seek to offset from current position} { set c } 20 test io-34.6 {Tcl_Seek to offset from end of file} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} puts $f1 "abcdefghijklmnopqrstuvwxyz" @@ -4172,7 +4172,7 @@ test io-34.6 {Tcl_Seek to offset from end of file} { } {44 {rstuvwxyz }} test io-34.7 {Tcl_Seek to offset from end of file, then to current position} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} puts $f1 "abcdefghijklmnopqrstuvwxyz" @@ -4187,7 +4187,7 @@ test io-34.7 {Tcl_Seek to offset from end of file, then to current position} { close $f1 list $c1 $r1 $c2 } {44 rstuv 49} -test io-34.8 {Tcl_Seek on pipes: not supported} {stdio} { +test io-34.8 {Tcl_Seek on pipes: not supported} {stdio openpipe} { set f1 [open "|[list [interpreter]]" r+] set x [list [catch {seek $f1 0 current} msg] $msg] close $f1 @@ -4195,7 +4195,7 @@ test io-34.8 {Tcl_Seek on pipes: not supported} {stdio} { string tolower $x } {1 {error during seek on "": invalid argument}} test io-34.9 {Tcl_Seek, testing buffered input flushing} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] fconfigure $f -eofchar {} puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" @@ -4263,14 +4263,14 @@ test io-34.12 {Tcl_Seek testing combination of write, seek back and read} { 123 xyzzy} zzy} test io-34.13 {Tcl_Tell at start of file} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] set p [tell $f1] close $f1 set p } 0 test io-34.14 {Tcl_Tell after seek to end of file} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} puts $f1 "abcdefghijklmnopqrstuvwxyz" @@ -4283,7 +4283,7 @@ test io-34.14 {Tcl_Tell after seek to end of file} { set c1 } 54 test io-34.15 {Tcl_Tell combined with seeking} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -eofchar {} puts $f1 "abcdefghijklmnopqrstuvwxyz" @@ -4297,13 +4297,13 @@ test io-34.15 {Tcl_Tell combined with seeking} { close $f1 list $c1 $c2 } {10 20} -test io-34.16 {Tcl_tell on pipe: always -1} {stdio} { +test io-34.16 {Tcl_tell on pipe: always -1} {stdio openpipe} { set f1 [open "|[list [interpreter]]" r+] set c [tell $f1] close $f1 set c } -1 -test io-34.17 {Tcl_Tell on pipe: always -1} {stdio} { +test io-34.17 {Tcl_Tell on pipe: always -1} {stdio openpipe} { set f1 [open "|[list [interpreter]]" r+] puts $f1 {puts hello} flush $f1 @@ -4313,7 +4313,7 @@ test io-34.17 {Tcl_Tell on pipe: always -1} {stdio} { set c } -1 test io-34.18 {Tcl_Tell combined with seeking and reading} { - removeFile test2 + file delete $path(test2) set f [open $path(test2) w] fconfigure $f -translation lf -eofchar {} puts -nonewline $f "line1\nline2\nline3\nline4\nline5\n" @@ -4359,7 +4359,7 @@ test io-34.20 {Tcl_Tell combined with writing} { set l } {29 39 40 447} test io-34.21 {Tcl_Seek and Tcl_Tell on large files} {largefileSupport} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] fconfigure $f -encoding binary set l "" @@ -4384,7 +4384,7 @@ test io-34.21 {Tcl_Seek and Tcl_Tell on large files} {largefileSupport} { # Test Tcl_Eof test io-35.1 {Tcl_Eof} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f hello puts $f hello @@ -4402,8 +4402,8 @@ test io-35.1 {Tcl_Eof} { close $f set x } {0 0 0 0 1 1} -test io-35.2 {Tcl_Eof with pipe} {stdio} { - removeFile pipe +test io-35.2 {Tcl_Eof with pipe} {stdio openpipe} { + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 {gets stdin} puts $f1 {puts hello} @@ -4420,8 +4420,8 @@ test io-35.2 {Tcl_Eof with pipe} {stdio} { close $f1 set x } {0 0 0 1} -test io-35.3 {Tcl_Eof with pipe} {stdio} { - removeFile pipe +test io-35.3 {Tcl_Eof with pipe} {stdio openpipe} { + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 {gets stdin} puts $f1 {puts hello} @@ -4443,7 +4443,7 @@ test io-35.3 {Tcl_Eof with pipe} {stdio} { set x } {0 0 0 1 1 1} test io-35.4 {Tcl_Eof, eof detection on nonblocking file} {nonBlockFiles} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] close $f set f [open $path(test1) r] @@ -4454,8 +4454,8 @@ test io-35.4 {Tcl_Eof, eof detection on nonblocking file} {nonBlockFiles} { close $f set l } {{} 1} -test io-35.5 {Tcl_Eof, eof detection on nonblocking pipe} {stdio} { - removeFile pipe +test io-35.5 {Tcl_Eof, eof detection on nonblocking pipe} {stdio openpipe} { + file delete $path(pipe) set f [open $path(pipe) w] puts $f { exit @@ -4469,7 +4469,7 @@ test io-35.5 {Tcl_Eof, eof detection on nonblocking pipe} {stdio} { set l } {{} 1} test io-35.6 {Tcl_Eof, eof char, lf write, auto read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar \x1a puts $f abc\ndef @@ -4483,7 +4483,7 @@ test io-35.6 {Tcl_Eof, eof char, lf write, auto read} { list $s $l $e } {9 8 1} test io-35.7 {Tcl_Eof, eof char, lf write, lf read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar \x1a puts $f abc\ndef @@ -4497,7 +4497,7 @@ test io-35.7 {Tcl_Eof, eof char, lf write, lf read} { list $s $l $e } {9 8 1} test io-35.8 {Tcl_Eof, eof char, cr write, auto read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr -eofchar \x1a puts $f abc\ndef @@ -4511,7 +4511,7 @@ test io-35.8 {Tcl_Eof, eof char, cr write, auto read} { list $s $l $e } {9 8 1} test io-35.9 {Tcl_Eof, eof char, cr write, cr read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr -eofchar \x1a puts $f abc\ndef @@ -4525,7 +4525,7 @@ test io-35.9 {Tcl_Eof, eof char, cr write, cr read} { list $s $l $e } {9 8 1} test io-35.10 {Tcl_Eof, eof char, crlf write, auto read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf -eofchar \x1a puts $f abc\ndef @@ -4539,7 +4539,7 @@ test io-35.10 {Tcl_Eof, eof char, crlf write, auto read} { list $s $l $e } {11 8 1} test io-35.11 {Tcl_Eof, eof char, crlf write, crlf read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf -eofchar \x1a puts $f abc\ndef @@ -4553,7 +4553,7 @@ test io-35.11 {Tcl_Eof, eof char, crlf write, crlf read} { list $s $l $e } {11 8 1} test io-35.12 {Tcl_Eof, eof char in middle, lf write, auto read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} set i [format abc\ndef\n%cqrs\nuvw 26] @@ -4568,7 +4568,7 @@ test io-35.12 {Tcl_Eof, eof char in middle, lf write, auto read} { list $c $l $e } {17 8 1} test io-35.13 {Tcl_Eof, eof char in middle, lf write, lf read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf -eofchar {} set i [format abc\ndef\n%cqrs\nuvw 26] @@ -4583,7 +4583,7 @@ test io-35.13 {Tcl_Eof, eof char in middle, lf write, lf read} { list $c $l $e } {17 8 1} test io-35.14 {Tcl_Eof, eof char in middle, cr write, auto read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr -eofchar {} set i [format abc\ndef\n%cqrs\nuvw 26] @@ -4598,7 +4598,7 @@ test io-35.14 {Tcl_Eof, eof char in middle, cr write, auto read} { list $c $l $e } {17 8 1} test io-35.15 {Tcl_Eof, eof char in middle, cr write, cr read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr -eofchar {} set i [format abc\ndef\n%cqrs\nuvw 26] @@ -4613,7 +4613,7 @@ test io-35.15 {Tcl_Eof, eof char in middle, cr write, cr read} { list $c $l $e } {17 8 1} test io-35.16 {Tcl_Eof, eof char in middle, crlf write, auto read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf -eofchar {} set i [format abc\ndef\n%cqrs\nuvw 26] @@ -4628,7 +4628,7 @@ test io-35.16 {Tcl_Eof, eof char in middle, crlf write, auto read} { list $c $l $e } {21 8 1} test io-35.17 {Tcl_Eof, eof char in middle, crlf write, crlf read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf -eofchar {} set i [format abc\ndef\n%cqrs\nuvw 26] @@ -4645,7 +4645,7 @@ test io-35.17 {Tcl_Eof, eof char in middle, crlf write, crlf read} { # Test Tcl_InputBlocked -test io-36.1 {Tcl_InputBlocked on nonblocking pipe} {stdio} { +test io-36.1 {Tcl_InputBlocked on nonblocking pipe} {stdio openpipe} { set f1 [open "|[list [interpreter]]" r+] puts $f1 {puts hello_from_pipe} flush $f1 @@ -4664,7 +4664,7 @@ test io-36.1 {Tcl_InputBlocked on nonblocking pipe} {stdio} { close $f1 set x } {{} 1 hello 0 {} 1} -test io-36.2 {Tcl_InputBlocked on blocking pipe} {stdio} { +test io-36.2 {Tcl_InputBlocked on blocking pipe} {stdio openpipe} { set f1 [open "|[list [interpreter]]" r+] fconfigure $f1 -buffering line puts $f1 {puts hello_from_pipe} @@ -4679,7 +4679,7 @@ test io-36.2 {Tcl_InputBlocked on blocking pipe} {stdio} { set x } {hello_from_pipe 0 {} 0 1} test io-36.3 {Tcl_InputBlocked vs files, short read} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f abcdefghijklmnop close $f @@ -4694,14 +4694,14 @@ test io-36.3 {Tcl_InputBlocked vs files, short read} { close $f set l } {0 abc 0 defghijklmnop 0 1} -test io-36.4 {Tcl_InputBlocked vs files, event driven read} { +test io-36.4 {Tcl_InputBlocked vs files, event driven read} {fileevent} { proc in {f} { variable l variable x lappend l [read $f 3] if {[eof $f]} {lappend l eof; close $f; set x done} } - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f abcdefghijklmnop close $f @@ -4714,7 +4714,7 @@ test io-36.4 {Tcl_InputBlocked vs files, event driven read} { } {abc def ghi jkl mno {p } eof} test io-36.5 {Tcl_InputBlocked vs files, short read, nonblocking} {nonBlockFiles} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f abcdefghijklmnop close $f @@ -4730,14 +4730,14 @@ test io-36.5 {Tcl_InputBlocked vs files, short read, nonblocking} {nonBlockFiles close $f set l } {0 abc 0 defghijklmnop 0 1} -test io-36.6 {Tcl_InputBlocked vs files, event driven read} {nonBlockFiles} { +test io-36.6 {Tcl_InputBlocked vs files, event driven read} {nonBlockFiles fileevent} { proc in {f} { variable l variable x lappend l [read $f 3] if {[eof $f]} {lappend l eof; close $f; set x done} } - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] puts $f abcdefghijklmnop close $f @@ -4819,7 +4819,7 @@ test io-38.3 {Tcl_SetChannelBufferSize, changing buffersize between reads} { # Test Tcl_SetChannelOption, Tcl_GetChannelOption test io-39.1 {Tcl_GetChannelOption} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] set x [fconfigure $f1 -blocking] close $f1 @@ -4829,14 +4829,14 @@ test io-39.1 {Tcl_GetChannelOption} { # Test 17.2 was removed. # test io-39.2 {Tcl_GetChannelOption} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] set x [fconfigure $f1 -buffering] close $f1 set x } full test io-39.3 {Tcl_GetChannelOption} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -buffering line set x [fconfigure $f1 -buffering] @@ -4844,7 +4844,7 @@ test io-39.3 {Tcl_GetChannelOption} { set x } line test io-39.4 {Tcl_GetChannelOption, Tcl_SetChannelOption} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] set l "" lappend l [fconfigure $f1 -buffering] @@ -4860,7 +4860,7 @@ test io-39.4 {Tcl_GetChannelOption, Tcl_SetChannelOption} { set l } {full line none line full} test io-39.5 {Tcl_GetChannelOption, invariance} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] set l "" lappend l [fconfigure $f1 -buffering] @@ -4870,7 +4870,7 @@ test io-39.5 {Tcl_GetChannelOption, invariance} { set l } {full {1 {bad value for -buffering: must be one of full, line, or none}} full} test io-39.6 {Tcl_SetChannelOption, multiple options} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf -buffering line puts $f1 hello @@ -4880,7 +4880,7 @@ test io-39.6 {Tcl_SetChannelOption, multiple options} { set x } 10 test io-39.7 {Tcl_SetChannelOption, buffering, translation} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] fconfigure $f1 -translation lf puts $f1 hello @@ -4894,7 +4894,7 @@ test io-39.7 {Tcl_SetChannelOption, buffering, translation} { set x } {0 21} test io-39.8 {Tcl_SetChannelOption, different buffering options} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] set l "" fconfigure $f1 -translation lf -buffering none -eofchar {} @@ -4914,7 +4914,7 @@ test io-39.8 {Tcl_SetChannelOption, different buffering options} { set l } {5 10 10 10 20 20} test io-39.9 {Tcl_SetChannelOption, blocking mode} {nonBlockFiles} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w] close $f1 set f1 [open $path(test1) r] @@ -4929,8 +4929,8 @@ test io-39.9 {Tcl_SetChannelOption, blocking mode} {nonBlockFiles} { close $f1 set x } {1 0 {} {} 0 1} -test io-39.10 {Tcl_SetChannelOption, blocking mode} {stdio} { - removeFile pipe +test io-39.10 {Tcl_SetChannelOption, blocking mode} {stdio openpipe} { + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 { gets stdin @@ -4966,7 +4966,7 @@ test io-39.10 {Tcl_SetChannelOption, blocking mode} {stdio} { set x } {0 {} 1 {} 1 {} 1 1 hi 0 0 {} 1} test io-39.11 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -buffersize -10 set x [fconfigure $f -buffersize] @@ -4974,7 +4974,7 @@ test io-39.11 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { set x } 4096 test io-39.12 {Tcl_SetChannelOption, Tcl_GetChannelOption buffer size} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -buffersize 10000000 set x [fconfigure $f -buffersize] @@ -4982,7 +4982,7 @@ test io-39.12 {Tcl_SetChannelOption, Tcl_GetChannelOption buffer size} { set x } 4096 test io-39.13 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -buffersize 40000 set x [fconfigure $f -buffersize] @@ -4990,7 +4990,7 @@ test io-39.13 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { set x } 40000 test io-39.14 {Tcl_SetChannelOption: -encoding, binary & utf-8} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -encoding {} puts -nonewline $f \xe7\x89\xa6 @@ -5002,7 +5002,7 @@ test io-39.14 {Tcl_SetChannelOption: -encoding, binary & utf-8} { set x } \u7266 test io-39.15 {Tcl_SetChannelOption: -encoding, binary & utf-8} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -encoding binary puts -nonewline $f \xe7\x89\xa6 @@ -5014,13 +5014,13 @@ test io-39.15 {Tcl_SetChannelOption: -encoding, binary & utf-8} { set x } \u7266 test io-39.16 {Tcl_SetChannelOption: -encoding, errors} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] set result [list [catch {fconfigure $f -encoding foobar} msg] $msg] close $f set result } {1 {unknown encoding "foobar"}} -test io-39.17 {Tcl_SetChannelOption: -encoding, clearing CHANNEL_NEED_MORE_DATA} {stdio} { +test io-39.17 {Tcl_SetChannelOption: -encoding, clearing CHANNEL_NEED_MORE_DATA} {stdio openpipe fileevent} { set f [open "|[list [interpreter] $path(cat)]" r+] fconfigure $f -encoding binary puts -nonewline $f "\xe7" @@ -5097,7 +5097,7 @@ test io-39.21 {Tcl_SetChannelOption, setting read mode independently} \ } {auto crlf} test io-39.22 {Tcl_SetChannelOption, invariance} {unixOnly} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w+] set l "" lappend l [fconfigure $f1 -eofchar] @@ -5110,7 +5110,7 @@ test io-39.22 {Tcl_SetChannelOption, invariance} {unixOnly} { } {{{} {}} {O G} {D D}} test io-39.22a {Tcl_SetChannelOption, invariance} { - removeFile test1 + file delete $path(test1) set f1 [open $path(test1) w+] set l [list] fconfigure $f1 -eofchar {ON GO} @@ -5142,7 +5142,7 @@ test io-39.24 {Tcl_SetChannelOption, server socket is not readable or } {{{}} auto} test io-40.1 {POSIX open access modes: RDWR} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] puts $f xyzzy close $f @@ -5157,7 +5157,7 @@ test io-40.1 {POSIX open access modes: RDWR} { set x } {zzy abzzy} test io-40.2 {POSIX open access modes: CREAT} {unixOnly} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) {WRONLY CREAT} 0600] file stat $path(test3) stats set x [format "0%o" [expr $stats(mode)&0777]] @@ -5175,14 +5175,14 @@ catch {testConstraint umask2 [expr {[exec umask] == 2}]} test io-40.3 {POSIX open access modes: CREAT} {unixOnly umask2} { # This test only works if your umask is 2, like ouster's. - removeFile test3 + file delete $path(test3) set f [open $path(test3) {WRONLY CREAT}] close $f file stat test3 stats format "0%o" [expr $stats(mode)&0777] } 0664 test io-40.4 {POSIX open access modes: CREAT} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] fconfigure $f -eofchar {} puts $f xyzzy @@ -5197,7 +5197,7 @@ test io-40.4 {POSIX open access modes: CREAT} { set x } abzzy test io-40.5 {POSIX open access modes: APPEND} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] fconfigure $f -translation lf -eofchar {} puts $f xyzzy @@ -5218,14 +5218,14 @@ test io-40.5 {POSIX open access modes: APPEND} { set x } {{new line} abc} test io-40.6 {POSIX open access modes: EXCL} -match regexp -body { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] puts $f xyzzy close $f open $path(test3) {WRONLY CREAT EXCL} } -returnCodes error -result {(?i)couldn't open ".*test3": file (already )?exists} test io-40.7 {POSIX open access modes: EXCL} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) {WRONLY CREAT EXCL}] fconfigure $f -eofchar {} puts $f "A test line" @@ -5233,7 +5233,7 @@ test io-40.7 {POSIX open access modes: EXCL} { viewFile test3 } {A test line} test io-40.8 {POSIX open access modes: TRUNC} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) w] puts $f xyzzy close $f @@ -5246,7 +5246,7 @@ test io-40.8 {POSIX open access modes: TRUNC} { set x } abc test io-40.9 {POSIX open access modes: NONBLOCK} {nonPortable macOrUnix} { - removeFile test3 + file delete $path(test3) set f [open $path(test3) {WRONLY NONBLOCK CREAT}] puts $f "NONBLOCK test" close $f @@ -5268,11 +5268,11 @@ test io-40.10 {POSIX open access modes: RDONLY} { [format "channel \"%s\" wasn't opened for writing" $f]] } 0 test io-40.11 {POSIX open access modes: RDONLY} -match regexp -body { - removeFile test3 + file delete $path(test3) open $path(test3) RDONLY } -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} test io-40.12 {POSIX open access modes: WRONLY} -match regexp -body { - removeFile test3 + file delete $path(test3) open $path(test3) WRONLY } -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} test io-40.13 {POSIX open access modes: WRONLY} { @@ -5288,7 +5288,7 @@ test io-40.13 {POSIX open access modes: WRONLY} { [list 1 "channel \"$f\" wasn't opened for reading" abzzy] } 0 test io-40.14 {POSIX open access modes: RDWR} -match regexp -body { - removeFile test3 + file delete $path(test3) open $path(test3) RDWR } -returnCodes error -result {(?i)couldn't open ".*test3": no such file or directory} test io-40.15 {POSIX open access modes: RDWR} { @@ -5301,14 +5301,13 @@ test io-40.15 {POSIX open access modes: RDWR} { lappend x [viewFile test3] } {zzy abzzy} if {![file exists ~/_test_] && [file writable ~]} { - test io-40.16 {tilde substitution in open} { - set f [open ~/_test_ w] - puts $f "Some text" - close $f - set x [file exists [file join $env(HOME) _test_]] - removeFile [file join $env(HOME) _test_] - set x - } 1 + test io-40.16 {tilde substitution in open} -setup { + makeFile {Some text} _test_ ~ + } -body { + file exists [file join $env(HOME) _test_] + } -cleanup { + removeFile _test_ ~ + } -result 1 } test io-40.17 {tilde substitution in open} { set home $env(HOME) @@ -5318,19 +5317,19 @@ test io-40.17 {tilde substitution in open} { set x } {1 {couldn't find HOME environment variable to expand path}} -test io-41.1 {Tcl_FileeventCmd: errors} { +test io-41.1 {Tcl_FileeventCmd: errors} {fileevent} { list [catch {fileevent foo} msg] $msg } {1 {wrong # args: should be "fileevent channelId event ?script?"}} -test io-41.2 {Tcl_FileeventCmd: errors} { +test io-41.2 {Tcl_FileeventCmd: errors} {fileevent} { list [catch {fileevent foo bar baz q} msg] $msg } {1 {wrong # args: should be "fileevent channelId event ?script?"}} -test io-41.3 {Tcl_FileeventCmd: errors} { +test io-41.3 {Tcl_FileeventCmd: errors} {fileevent} { list [catch {fileevent gorp readable} msg] $msg } {1 {can not find channel named "gorp"}} -test io-41.4 {Tcl_FileeventCmd: errors} { +test io-41.4 {Tcl_FileeventCmd: errors} {fileevent} { list [catch {fileevent gorp writable} msg] $msg } {1 {can not find channel named "gorp"}} -test io-41.5 {Tcl_FileeventCmd: errors} { +test io-41.5 {Tcl_FileeventCmd: errors} {fileevent} { list [catch {fileevent gorp who-knows} msg] $msg } {1 {bad event name "who-knows": must be readable or writable}} @@ -5341,10 +5340,10 @@ test io-41.5 {Tcl_FileeventCmd: errors} { set path(foo) [makeFile {} foo] set f [open $path(foo) w+] -test io-42.1 {Tcl_FileeventCmd: creating, deleting, querying} { +test io-42.1 {Tcl_FileeventCmd: creating, deleting, querying} {fileevent} { list [fileevent $f readable] [fileevent $f writable] } {{} {}} -test io-42.2 {Tcl_FileeventCmd: replacing} { +test io-42.2 {Tcl_FileeventCmd: replacing} {fileevent} { set result {} fileevent $f r "first script" lappend result [fileevent $f readable] @@ -5355,7 +5354,7 @@ test io-42.2 {Tcl_FileeventCmd: replacing} { fileevent $f r "" lappend result [fileevent $f readable] } {{first script} {new script} {yet another} {}} -test io-42.3 {Tcl_FileeventCmd: replacing, with NULL chars in script} { +test io-42.3 {Tcl_FileeventCmd: replacing, with NULL chars in script} {fileevent} { set result {} fileevent $f r "first scr\0ipt" lappend result [string length [fileevent $f readable]] @@ -5370,11 +5369,12 @@ test io-42.3 {Tcl_FileeventCmd: replacing, with NULL chars in script} { # # Test fileevent on a pipe # - +if {[testConstraint openpipe]} { catch {set f2 [open "|[list cat -u]" r+]} catch {set f3 [open "|[list cat -u]" r+]} +} -test io-43.1 {Tcl_FileeventCmd: creating, deleting, querying} {stdio unixExecs} { +test io-43.1 {Tcl_FileeventCmd: creating, deleting, querying} {stdio unixExecs fileevent} { set result {} fileevent $f readable "script 1" lappend result [fileevent $f readable] [fileevent $f writable] @@ -5385,7 +5385,7 @@ test io-43.1 {Tcl_FileeventCmd: creating, deleting, querying} {stdio unixExecs} fileevent $f writable {} lappend result [fileevent $f readable] [fileevent $f writable] } {{script 1} {} {script 1} {write script} {} {write script} {} {}} -test io-43.2 {Tcl_FileeventCmd: deleting when many present} {stdio unixExecs} { +test io-43.2 {Tcl_FileeventCmd: deleting when many present} {stdio unixExecs fileevent} { set result {} lappend result [fileevent $f r] [fileevent $f2 r] [fileevent $f3 r] fileevent $f r "read f" @@ -5400,7 +5400,7 @@ test io-43.2 {Tcl_FileeventCmd: deleting when many present} {stdio unixExecs} { lappend result [fileevent $f r] [fileevent $f2 r] [fileevent $f3 r] } {{} {} {} {read f} {read f2} {read f3} {read f} {} {read f3} {read f} {} {} {} {} {}} -test io-44.1 {FileEventProc procedure: normal read event} {stdio unixExecs} { +test io-44.1 {FileEventProc procedure: normal read event} {stdio unixExecs fileevent} { fileevent $f2 readable [namespace code { set x [gets $f2]; fileevent $f2 readable {} }] @@ -5409,7 +5409,7 @@ test io-44.1 {FileEventProc procedure: normal read event} {stdio unixExecs} { vwait [namespace which -variable x] set x } {text} -test io-44.2 {FileEventProc procedure: error in read event} {stdio unixExecs} { +test io-44.2 {FileEventProc procedure: error in read event} {stdio unixExecs fileevent} { proc ::bgerror args "set [namespace which -variable x] \$args" fileevent $f2 readable {error bogus} puts $f2 text; flush $f2 @@ -5418,7 +5418,7 @@ test io-44.2 {FileEventProc procedure: error in read event} {stdio unixExecs} { rename ::bgerror {} list $x [fileevent $f2 readable] } {bogus {}} -test io-44.3 {FileEventProc procedure: normal write event} {stdio unixExecs} { +test io-44.3 {FileEventProc procedure: normal write event} {stdio unixExecs fileevent} { fileevent $f2 writable [namespace code { lappend x "triggered" incr count -1 @@ -5433,7 +5433,7 @@ test io-44.3 {FileEventProc procedure: normal write event} {stdio unixExecs} { vwait [namespace which -variable x] set x } {initial triggered triggered triggered} -test io-44.4 {FileEventProc procedure: eror in write event} {stdio unixExecs} { +test io-44.4 {FileEventProc procedure: eror in write event} {stdio unixExecs fileevent} { proc ::bgerror args "set [namespace which -variable x] \$args" fileevent $f2 writable {error bad-write} variable x initial @@ -5441,7 +5441,7 @@ test io-44.4 {FileEventProc procedure: eror in write event} {stdio unixExecs} { rename ::bgerror {} list $x [fileevent $f2 writable] } {bad-write {}} -test io-44.5 {FileEventProc procedure: end of file} {stdio unixExecs} { +test io-44.5 {FileEventProc procedure: end of file} {stdio unixExecs openpipe fileevent} { set f4 [open "|[list [interpreter] $path(cat) << foo]" r] fileevent $f4 readable [namespace code { if {[gets $f4 line] < 0} { @@ -5464,7 +5464,7 @@ catch {close $f3} close $f makeFile "foo bar" foo -test io-45.1 {DeleteFileEvent, cleanup on close} { +test io-45.1 {DeleteFileEvent, cleanup on close} {fileevent} { set f [open $path(foo) r] fileevent $f readable [namespace code { lappend x "binding triggered: \"[gets $f]\"" @@ -5477,7 +5477,7 @@ test io-45.1 {DeleteFileEvent, cleanup on close} { vwait [namespace which -variable y] set x } {initial} -test io-45.2 {DeleteFileEvent, cleanup on close} { +test io-45.2 {DeleteFileEvent, cleanup on close} {fileevent} { set f [open $path(foo) r] set f2 [open $path(foo) r] fileevent $f readable [namespace code { @@ -5494,7 +5494,7 @@ test io-45.2 {DeleteFileEvent, cleanup on close} { close $f2 set x } {initial {f2 triggered: "foo bar"}} -test io-45.3 {DeleteFileEvent, cleanup on close} { +test io-45.3 {DeleteFileEvent, cleanup on close} {fileevent} { set f [open $path(foo) r] set f2 [open $path(foo) r] set f3 [open $path(foo) r] @@ -5519,7 +5519,7 @@ test io-45.3 {DeleteFileEvent, cleanup on close} { # Execute these tests only if the "testfevent" command is present. testConstraint testfevent [llength [info commands testfevent]] -test io-46.1 {Tcl event loop vs multiple interpreters} {testfevent} { +test io-46.1 {Tcl event loop vs multiple interpreters} {testfevent fileevent} { testfevent create testfevent cmd [format { set f [open {%s} r] @@ -5557,7 +5557,7 @@ test io-46.3 {Tcl event loop vs multiple interpreters} testfevent { } } {0 0 {0 timer}} -test io-47.1 {fileevent vs multiple interpreters} testfevent { +test io-47.1 {fileevent vs multiple interpreters} {testfevent fileevent} { set f [open $path(foo) r] set f2 [open $path(foo) r] set f3 [open $path(foo) r] @@ -5576,7 +5576,7 @@ test io-47.1 {fileevent vs multiple interpreters} testfevent { close $f3 set x } {{} {script 1} {} {sript 3}} -test io-47.2 {deleting fileevent on interpreter delete} testfevent { +test io-47.2 {deleting fileevent on interpreter delete} {testfevent fileevent} { set f [open $path(foo) r] set f2 [open $path(foo) r] set f3 [open $path(foo) r] @@ -5597,7 +5597,7 @@ test io-47.2 {deleting fileevent on interpreter delete} testfevent { close $f4 set x } {{script 1} {} {} {script 4}} -test io-47.3 {deleting fileevent on interpreter delete} testfevent { +test io-47.3 {deleting fileevent on interpreter delete} {testfevent fileevent} { set f [open $path(foo) r] set f2 [open $path(foo) r] set f3 [open $path(foo) r] @@ -5618,7 +5618,7 @@ test io-47.3 {deleting fileevent on interpreter delete} testfevent { close $f4 set x } {{script 1} {script 2} {} {}} -test io-47.4 {file events on shared files and multiple interpreters} testfevent { +test io-47.4 {file events on shared files and multiple interpreters} {testfevent fileevent} { set f [open $path(foo) r] set f2 [open $path(foo) r] testfevent create @@ -5634,7 +5634,7 @@ test io-47.4 {file events on shared files and multiple interpreters} testfevent close $f2 set x } {{script 3} {script 1} {script 2}} -test io-47.5 {file events on shared files, deleting file events} testfevent { +test io-47.5 {file events on shared files, deleting file events} {testfevent fileevent} { set f [open $path(foo) r] testfevent create testfevent share $f @@ -5647,7 +5647,7 @@ test io-47.5 {file events on shared files, deleting file events} testfevent { close $f set x } {{} {script 2}} -test io-47.6 {file events on shared files, deleting file events} testfevent { +test io-47.6 {file events on shared files, deleting file events} {testfevent fileevent} { set f [open $path(foo) r] testfevent create testfevent share $f @@ -5663,7 +5663,7 @@ test io-47.6 {file events on shared files, deleting file events} testfevent { set path(bar) [makeFile {} bar] -test io-48.1 {testing readability conditions} { +test io-48.1 {testing readability conditions} {fileevent} { set f [open $path(bar) w] puts $f abcdefg puts $f abcdefg @@ -5689,7 +5689,7 @@ test io-48.1 {testing readability conditions} { vwait [namespace which -variable x] list $x $l } {done {called called called called called called called}} -test io-48.2 {testing readability conditions} {nonBlockFiles} { +test io-48.2 {testing readability conditions} {nonBlockFiles fileevent} { set f [open $path(bar) w] puts $f abcdefg puts $f abcdefg @@ -5719,7 +5719,7 @@ test io-48.2 {testing readability conditions} {nonBlockFiles} { set path(my_script) [makeFile {} my_script] -test io-48.3 {testing readability conditions} {stdio unixOnly nonBlockFiles} { +test io-48.3 {testing readability conditions} {stdio unixOnly nonBlockFiles openpipe fileevent} { set f [open $path(bar) w] puts $f abcdefg puts $f abcdefg @@ -5764,8 +5764,8 @@ test io-48.3 {testing readability conditions} {stdio unixOnly nonBlockFiles} { close $f list $x $l } {done {0 1 0 1 0 1 0 1 0 1 0 1 0 0}} -test io-48.4 {lf write, testing readability, ^Z termination, auto read mode} { - removeFile test1 +test io-48.4 {lf write, testing readability, ^Z termination, auto read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set c [format "abc\ndef\n%c" 26] @@ -5792,8 +5792,8 @@ test io-48.4 {lf write, testing readability, ^Z termination, auto read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.5 {lf write, testing readability, ^Z in middle, auto read mode} { - removeFile test1 +test io-48.5 {lf write, testing readability, ^Z in middle, auto read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set c [format "abc\ndef\n%cfoo\nbar\n" 26] @@ -5820,8 +5820,8 @@ test io-48.5 {lf write, testing readability, ^Z in middle, auto read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.6 {cr write, testing readability, ^Z termination, auto read mode} { - removeFile test1 +test io-48.6 {cr write, testing readability, ^Z termination, auto read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr set c [format "abc\ndef\n%c" 26] @@ -5848,8 +5848,8 @@ test io-48.6 {cr write, testing readability, ^Z termination, auto read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.7 {cr write, testing readability, ^Z in middle, auto read mode} { - removeFile test1 +test io-48.7 {cr write, testing readability, ^Z in middle, auto read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr set c [format "abc\ndef\n%cfoo\nbar\n" 26] @@ -5876,8 +5876,8 @@ test io-48.7 {cr write, testing readability, ^Z in middle, auto read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.8 {crlf write, testing readability, ^Z termination, auto read mode} { - removeFile test1 +test io-48.8 {crlf write, testing readability, ^Z termination, auto read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set c [format "abc\ndef\n%c" 26] @@ -5904,8 +5904,8 @@ test io-48.8 {crlf write, testing readability, ^Z termination, auto read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.9 {crlf write, testing readability, ^Z in middle, auto read mode} { - removeFile test1 +test io-48.9 {crlf write, testing readability, ^Z in middle, auto read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set c [format "abc\ndef\n%cfoo\nbar\n" 26] @@ -5932,8 +5932,8 @@ test io-48.9 {crlf write, testing readability, ^Z in middle, auto read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.10 {lf write, testing readability, ^Z in middle, lf read mode} { - removeFile test1 +test io-48.10 {lf write, testing readability, ^Z in middle, lf read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set c [format "abc\ndef\n%cfoo\nbar\n" 26] @@ -5960,8 +5960,8 @@ test io-48.10 {lf write, testing readability, ^Z in middle, lf read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.11 {lf write, testing readability, ^Z termination, lf read mode} { - removeFile test1 +test io-48.11 {lf write, testing readability, ^Z termination, lf read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf set c [format "abc\ndef\n%c" 26] @@ -5988,8 +5988,8 @@ test io-48.11 {lf write, testing readability, ^Z termination, lf read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.12 {cr write, testing readability, ^Z in middle, cr read mode} { - removeFile test1 +test io-48.12 {cr write, testing readability, ^Z in middle, cr read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr set c [format "abc\ndef\n%cfoo\nbar\n" 26] @@ -6016,8 +6016,8 @@ test io-48.12 {cr write, testing readability, ^Z in middle, cr read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.13 {cr write, testing readability, ^Z termination, cr read mode} { - removeFile test1 +test io-48.13 {cr write, testing readability, ^Z termination, cr read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation cr set c [format "abc\ndef\n%c" 26] @@ -6044,8 +6044,8 @@ test io-48.13 {cr write, testing readability, ^Z termination, cr read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.14 {crlf write, testing readability, ^Z in middle, crlf read mode} { - removeFile test1 +test io-48.14 {crlf write, testing readability, ^Z in middle, crlf read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set c [format "abc\ndef\n%cfoo\nbar\n" 26] @@ -6072,8 +6072,8 @@ test io-48.14 {crlf write, testing readability, ^Z in middle, crlf read mode} { vwait [namespace which -variable x] list $c $l } {3 {abc def {}}} -test io-48.15 {crlf write, testing readability, ^Z termi, crlf read mode} { - removeFile test1 +test io-48.15 {crlf write, testing readability, ^Z termi, crlf read mode} {fileevent} { + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation crlf set c [format "abc\ndef\n%c" 26] @@ -6102,7 +6102,7 @@ test io-48.15 {crlf write, testing readability, ^Z termi, crlf read mode} { } {3 {abc def {}}} test io-49.1 {testing crlf reading, leftover cr disgorgment} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts -nonewline $f "a\rb\rc\r\n" @@ -6131,7 +6131,7 @@ test io-49.1 {testing crlf reading, leftover cr disgorgment} { } "7 a 1 [list \r] 2 b 3 [list \r] 4 c 5 { } 7 0 {} 1" test io-49.2 {testing crlf reading, leftover cr disgorgment} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts -nonewline $f "a\rb\rc\r\n" @@ -6154,7 +6154,7 @@ test io-49.2 {testing crlf reading, leftover cr disgorgment} { set l } "7 [list a\r] 2 [list b\r] 4 [list c\n] 7 0 {} 7 1" test io-49.3 {testing crlf reading, leftover cr disgorgment} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts -nonewline $f "a\rb\rc\r\n" @@ -6175,7 +6175,7 @@ test io-49.3 {testing crlf reading, leftover cr disgorgment} { set l } "7 [list a\rb] 3 [list \rc\n] 7 0 {} 7 1" test io-49.4 {testing crlf reading, leftover cr disgorgment} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts -nonewline $f "a\rb\rc\r\n" @@ -6196,7 +6196,7 @@ test io-49.4 {testing crlf reading, leftover cr disgorgment} { set l } "7 [list a\rb] 3 [list \rc] 7 0 {} 7 1" test io-49.5 {testing crlf reading, leftover cr disgorgment} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf puts -nonewline $f "a\rb\rc\r\n" @@ -6216,7 +6216,7 @@ test io-49.5 {testing crlf reading, leftover cr disgorgment} { testConstraint testchannelevent [llength [info commands testchannelevent]] test io-50.1 {testing handler deletion} {testchannelevent} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] close $f set f [open $path(test1) r] @@ -6232,7 +6232,7 @@ test io-50.1 {testing handler deletion} {testchannelevent} { set z } called test io-50.2 {testing handler deletion with multiple handlers} {testchannelevent} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] close $f set f [open $path(test1) r] @@ -6250,7 +6250,7 @@ test io-50.2 {testing handler deletion with multiple handlers} {testchannelevent [list [list called delhandler $f 0] [list called delhandler $f 1]] } 0 test io-50.3 {testing handler deletion with multiple handlers} {testchannelevent} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] close $f set f [open $path(test1) r] @@ -6276,7 +6276,7 @@ test io-50.3 {testing handler deletion with multiple handlers} {testchannelevent [list delhandler $f 0 deleted myself]] } 0 test io-50.4 {testing handler deletion vs reentrant calls} {testchannelevent} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] close $f set f [open $path(test1) r] @@ -6301,7 +6301,7 @@ test io-50.4 {testing handler deletion vs reentrant calls} {testchannelevent} { {{delrecursive calling recursive} {delrecursive deleting recursive}} } 0 test io-50.5 {testing handler deletion vs reentrant calls} {testchannelevent} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] close $f set f [open $path(test1) r] @@ -6335,7 +6335,7 @@ test io-50.5 {testing handler deletion vs reentrant calls} {testchannelevent} { {del deleted myself} {del after update}] } 0 test io-50.6 {testing handler deletion vs reentrant calls} {testchannelevent} { - removeFile test1 + file delete $path(test1) set f [open $path(test1) w] close $f set f [open $path(test1) r] @@ -6417,8 +6417,8 @@ test io-51.1 {Test old socket deletion on Macintosh} {socket} { set result } {sock1 sock2 sock3 sock4} -test io-52.1 {TclCopyChannel} { - removeFile test1 +test io-52.1 {TclCopyChannel} {fcopy} { + file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fcopy $f1 $f2 -command { # } @@ -6427,8 +6427,8 @@ test io-52.1 {TclCopyChannel} { close $f2 string compare $msg "channel \"$f1\" is busy" } {0} -test io-52.2 {TclCopyChannel} { - removeFile test1 +test io-52.2 {TclCopyChannel} {fcopy} { + file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] set f3 [open $thisScript] @@ -6439,8 +6439,8 @@ test io-52.2 {TclCopyChannel} { close $f3 string compare $msg "channel \"$f2\" is busy" } {0} -test io-52.3 {TclCopyChannel} { - removeFile test1 +test io-52.3 {TclCopyChannel} {fcopy} { + file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 @@ -6456,8 +6456,8 @@ test io-52.3 {TclCopyChannel} { } set result } {0 0 ok} -test io-52.4 {TclCopyChannel} { - removeFile test1 +test io-52.4 {TclCopyChannel} {fcopy} { + file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 @@ -6468,8 +6468,8 @@ test io-52.4 {TclCopyChannel} { close $f2 lappend result [file size $path(test1)] } {0 0 40} -test io-52.5 {TclCopyChannel} { - removeFile test1 +test io-52.5 {TclCopyChannel} {fcopy} { + file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 @@ -6485,8 +6485,8 @@ test io-52.5 {TclCopyChannel} { } set result } {0 0 ok} -test io-52.6 {TclCopyChannel} { - removeFile test1 +test io-52.6 {TclCopyChannel} {fcopy} { + file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 @@ -6502,8 +6502,8 @@ test io-52.6 {TclCopyChannel} { } set result } {0 0 ok} -test io-52.7 {TclCopyChannel} { - removeFile test1 +test io-52.7 {TclCopyChannel} {fcopy} { + file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 @@ -6519,9 +6519,9 @@ test io-52.7 {TclCopyChannel} { } set result } {0 0 ok} -test io-52.8 {TclCopyChannel} {stdio} { - removeFile test1 - removeFile pipe +test io-52.8 {TclCopyChannel} {stdio openpipe fcopy} { + file delete $path(test1) + file delete $path(pipe) set f1 [open $path(pipe) w] fconfigure $f1 -translation lf puts $f1 " @@ -6557,7 +6557,7 @@ fconfigure $out -encoding koi8-r -translation lf puts $out "\u0410\u0410" close $out -test io-52.9 {TclCopyChannel & encodings} { +test io-52.9 {TclCopyChannel & encodings} {fcopy} { # Copy kyrillic to UTF-8, using fcopy. set in [open $path(kyrillic.txt) r] @@ -6588,7 +6588,7 @@ test io-52.9 {TclCopyChannel & encodings} { [file size $path(utf8-rp.txt)] } {3 5 5} -test io-52.10 {TclCopyChannel & encodings} { +test io-52.10 {TclCopyChannel & encodings} {fcopy} { # encoding to binary (=> implies that the # internal utf-8 is written) @@ -6606,7 +6606,7 @@ test io-52.10 {TclCopyChannel & encodings} { file size $path(utf8-fcopy.txt) } 5 -test io-52.11 {TclCopyChannel & encodings} { +test io-52.11 {TclCopyChannel & encodings} {fcopy} { # binary to encoding => the input has to be # in utf-8 to make sense to the encoder @@ -6624,9 +6624,8 @@ test io-52.11 {TclCopyChannel & encodings} { file size $path(kyrillic.txt) } 3 - -test io-53.1 {CopyData} { - removeFile test1 +test io-53.1 {CopyData} {fcopy} { + file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 @@ -6637,8 +6636,8 @@ test io-53.1 {CopyData} { close $f2 lappend result [file size $path(test1)] } {0 0 0} -test io-53.2 {CopyData} { - removeFile test1 +test io-53.2 {CopyData} {fcopy} { + file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 @@ -6656,9 +6655,9 @@ test io-53.2 {CopyData} { } set result } {0 0 ok} -test io-53.3 {CopyData: background read underflow} {stdio unixOnly} { - removeFile test1 - removeFile pipe +test io-53.3 {CopyData: background read underflow} {stdio unixOnly openpipe fcopy} { + file delete $path(test1) + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 [format { puts ready @@ -6686,14 +6685,14 @@ test io-53.3 {CopyData: background read underflow} {stdio unixOnly} { close $f set result } "ready line1 line2 {done\n}" -test io-53.4 {CopyData: background write overflow} {stdio unixOnly} { +test io-53.4 {CopyData: background write overflow} {stdio unixOnly openpipe fileevent fcopy} { set big bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n variable x for {set x 0} {$x < 12} {incr x} { append big $big } - removeFile test1 - removeFile pipe + file delete $path(test1) + file delete $path(pipe) set f1 [open $path(pipe) w] puts $f1 { puts ready @@ -6737,7 +6736,7 @@ proc FcopyTestDone {bytes {error {}}} { } } -test io-53.5 {CopyData: error during fcopy} {socket} { +test io-53.5 {CopyData: error during fcopy} {socket fcopy} { variable fcopyTestDone set listen [socket -server [namespace code FcopyTestAccept] 0] set in [open $thisScript] ;# 126 K @@ -6753,10 +6752,10 @@ test io-53.5 {CopyData: error during fcopy} {socket} { close $out set fcopyTestDone ;# 1 for error condition } 1 -test io-53.6 {CopyData: error during fcopy} {stdio} { +test io-53.6 {CopyData: error during fcopy} {stdio openpipe fcopy} { variable fcopyTestDone - removeFile pipe - removeFile test1 + file delete $path(pipe) + file delete $path(test1) catch {unset fcopyTestDone} set f1 [open $path(pipe) w] puts $f1 "exit 1" @@ -6790,10 +6789,9 @@ proc doFcopy {in out {bytes 0} {error {}}} { } } -test io-53.7 {CopyData: Flooding fcopy from pipe} {stdio} { +test io-53.7 {CopyData: Flooding fcopy from pipe} {stdio openpipe fcopy} { variable fcopyTestDone - removeFile pipe - removeFile test1 + file delete $path(pipe) catch {unset fcopyTestDone} set fcopyTestCount 0 set f1 [open $path(pipe) w] @@ -6826,7 +6824,7 @@ test io-53.7 {CopyData: Flooding fcopy from pipe} {stdio} { expr ($fcopyTestDone == 0) ? $fcopyTestCount : -1 } {3450} -test io-54.1 {Recursive channel events} {socket} { +test io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive # event loops when there is buffered data on the channel. @@ -6880,7 +6878,7 @@ test io-54.1 {Recursive channel events} {socket} { close $cs list $result $x } {{{line 1} 1 2} 2} -test io-54.2 {Testing for busy-wait in recursive channel events} {socket} { +test io-54.2 {Testing for busy-wait in recursive channel events} {socket fileevent} { set accept {} set after {} variable s [socket -server [namespace code accept] 0] @@ -6942,7 +6940,7 @@ test io-54.2 {Testing for busy-wait in recursive channel events} {socket} { set path(fooBar) [makeFile {} fooBar] -test io-55.1 {ChannelEventScriptInvoker: deletion} { +test io-55.1 {ChannelEventScriptInvoker: deletion} {fileevent} { variable x proc eventScript {fd} { variable x @@ -6979,7 +6977,7 @@ test io-56.1 {ChannelTimerProc} {testchannelevent} { lappend result $y } {2 done} -test io-57.1 {buffered data and file events, gets} { +test io-57.1 {buffered data and file events, gets} {fileevent} { proc accept {sock args} { variable s2 set s2 $sock @@ -7002,7 +7000,7 @@ test io-57.1 {buffered data and file events, gets} { close $server set result } {12 readable 34567890 timer} -test io-57.2 {buffered data and file events, read} { +test io-57.2 {buffered data and file events, read} {fileevent} { proc accept {sock args} { variable s2 set s2 $sock @@ -7026,7 +7024,7 @@ test io-57.2 {buffered data and file events, read} { set result } {1 readable 234567890 timer} -test io-58.1 {Tcl_NotifyChannel and error when closing} {stdio unixOrPc} { +test io-58.1 {Tcl_NotifyChannel and error when closing} {stdio unixOrPc openpipe fileevent} { set out [open $path(script) w] puts $out { puts "normal message from pipe" @@ -7069,7 +7067,7 @@ test io-59.1 {Thread reference of channels} {testmainthread testchannel} { } {1} -test io-60.1 {writing illegal utf sequences} { +test io-60.1 {writing illegal utf sequences} {openpipe fileevent} { # This test will hang in older revisions of the core. set out [open $path(script) w] @@ -7105,7 +7103,7 @@ test io-60.1 {writing illegal utf sequences} { # cleanup foreach file [list fooBar longfile script output test1 pipe my_script foo \ - bar test2 test3 cat stdout] { + bar test2 test3 cat stdout kyrillic.txt utf8-fcopy.txt utf8-rp.txt] { removeFile $file } cleanupTests -- cgit v0.12 From c523c442ea40722320430dc7ba32673b7b191a90 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 8 Oct 2003 14:21:18 +0000 Subject: Made Tcl_NumUtfChars do the right thing with \u0000 when guessing the length because of a negative 'length' parameter. [Bug 769812] --- ChangeLog | 8 ++++++++ generic/tclTest.c | 30 ++++++++++++++++++++++++++++-- generic/tclUtf.c | 7 ++----- tests/utf.test | 23 +++++++++++++++++++---- 4 files changed, 57 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 27e95d4..3d8855f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-10-08 Donal K. Fellows + + * generic/tclTest.c (TestNumUtfCharsCmd): Command to allow finer + access to Tcl_NumUtfChars for testing. + * generic/tclUtf.c (Tcl_NumUtfChars): Corrected string length + determining when the length parameter is negative; the terminator + is a zero byte, not (necessarily) a \u0000 character. [Bug 769812] + 2003-10-07 Don Porter * tests/exec.test: Corrected temporary file management diff --git a/generic/tclTest.c b/generic/tclTest.c index 327c470..d3abdfb 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.1 2003/04/16 23:31:46 dgp Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.2 2003/10/08 14:21:20 dkf Exp $ */ #define TCL_TEST @@ -420,6 +420,9 @@ static Tcl_Obj* SimpleListVolumes _ANSI_ARGS_ ((void)); static int SimplePathInFilesystem _ANSI_ARGS_ (( Tcl_Obj *pathPtr, ClientData *clientDataPtr)); static Tcl_Obj* SimpleCopy _ANSI_ARGS_ ((Tcl_Obj *pathPtr)); +static int TestNumUtfCharsCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[])); static Tcl_Filesystem testReportingFilesystem = { "reporting", @@ -654,6 +657,9 @@ Tcltest_Init(interp) Tcl_CreateObjCommand(interp, "testsetobjerrorcode", TestsetobjerrorcodeCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); + Tcl_CreateObjCommand(interp, "testnumutfchars", + TestNumUtfCharsCmd, (ClientData) 0, + (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testsetplatform", TestsetplatformCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "teststaticpkg", TeststaticpkgCmd, @@ -6423,4 +6429,24 @@ SimpleListVolumes(void) Tcl_IncrRefCount(retVal); return retVal; } - + +/* + * Used to check correct string-length determining in Tcl_NumUtfChars + */ +static int +TestNumUtfCharsCmd(clientData, interp, objc, objv) + ClientData clientData; + Tcl_Interp *interp; + int objc; + Tcl_Obj *CONST objv[]; +{ + if (objc > 1) { + int len = -1; + if (objc > 2) { + (void) Tcl_GetStringFromObj(objv[1], &len); + } + len = Tcl_NumUtfChars(Tcl_GetString(objv[1]), len); + Tcl_SetObjResult(interp, Tcl_NewIntObj(len)); + } + return TCL_OK; +} diff --git a/generic/tclUtf.c b/generic/tclUtf.c index cc8c3c7..b7a6277 100644 --- a/generic/tclUtf.c +++ b/generic/tclUtf.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtf.c,v 1.30.2.1 2003/03/06 23:24:17 dgp Exp $ + * RCS: @(#) $Id: tclUtf.c,v 1.30.2.2 2003/10/08 14:21:20 dkf Exp $ */ #include "tclInt.h" @@ -501,11 +501,8 @@ Tcl_NumUtfChars(str, len) i = 0; if (len < 0) { - while (1) { + while (*str != '\0') { str += TclUtfToUniChar(str, chPtr); - if (ch == '\0') { - break; - } i++; } } else { diff --git a/tests/utf.test b/tests/utf.test index 56e1b5f..cd4803c 100644 --- a/tests/utf.test +++ b/tests/utf.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: utf.test,v 1.8.14.2 2003/03/27 13:11:18 dkf Exp $ +# RCS: @(#) $Id: utf.test,v 1.8.14.3 2003/10/08 14:21:21 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -59,14 +59,29 @@ test utf-3.1 {Tcl_UtfCharComplete} { } {} test utf-4.1 {Tcl_NumUtfChars: zero length} { - string length "" + testnumutfchars "" } {0} test utf-4.2 {Tcl_NumUtfChars: length 1} { - string length [bytestring "\xC2\xA2"] + testnumutfchars [bytestring "\xC2\xA2"] } {1} test utf-4.3 {Tcl_NumUtfChars: long string} { - string length [bytestring "abc\xC2\xA2\xe4\xb9\x8e\uA2\u4e4e"] + testnumutfchars [bytestring "abc\xC2\xA2\xe4\xb9\x8e\uA2\u4e4e"] } {7} +test utf-4.4 {Tcl_NumUtfChars: #u0000} { + testnumutfchars [bytestring "\xC0\x80"] +} {1} +test utf-4.5 {Tcl_NumUtfChars: zero length, calc len} { + testnumutfchars "" 1 +} {0} +test utf-4.6 {Tcl_NumUtfChars: length 1, calc len} { + testnumutfchars [bytestring "\xC2\xA2"] 1 +} {1} +test utf-4.7 {Tcl_NumUtfChars: long string, calc len} { + testnumutfchars [bytestring "abc\xC2\xA2\xe4\xb9\x8e\uA2\u4e4e"] 1 +} {7} +test utf-4.8 {Tcl_NumUtfChars: #u0000, calc len} { + testnumutfchars [bytestring "\xC0\x80"] 1 +} {1} test utf-5.1 {Tcl_UtfFindFirsts} { } {} -- cgit v0.12 From cd7817b826f5ce1382830ddcc7ccc650501c8848 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 8 Oct 2003 15:24:01 +0000 Subject: Added constraint to the new tests. --- tests/utf.test | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/tests/utf.test b/tests/utf.test index cd4803c..7e4adf0 100644 --- a/tests/utf.test +++ b/tests/utf.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: utf.test,v 1.8.14.3 2003/10/08 14:21:21 dkf Exp $ +# RCS: @(#) $Id: utf.test,v 1.8.14.4 2003/10/08 15:24:01 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -58,28 +58,29 @@ test utf-2.8 {Tcl_UtfToUniChar: longer UTF sequences not supported} { test utf-3.1 {Tcl_UtfCharComplete} { } {} -test utf-4.1 {Tcl_NumUtfChars: zero length} { +testConstraint testnumutfchars [llength [info commands testnumutfchars]] +test utf-4.1 {Tcl_NumUtfChars: zero length} testnumutfchars { testnumutfchars "" } {0} -test utf-4.2 {Tcl_NumUtfChars: length 1} { +test utf-4.2 {Tcl_NumUtfChars: length 1} testnumutfchars { testnumutfchars [bytestring "\xC2\xA2"] } {1} -test utf-4.3 {Tcl_NumUtfChars: long string} { +test utf-4.3 {Tcl_NumUtfChars: long string} testnumutfchars { testnumutfchars [bytestring "abc\xC2\xA2\xe4\xb9\x8e\uA2\u4e4e"] } {7} -test utf-4.4 {Tcl_NumUtfChars: #u0000} { +test utf-4.4 {Tcl_NumUtfChars: #u0000} testnumutfchars { testnumutfchars [bytestring "\xC0\x80"] } {1} -test utf-4.5 {Tcl_NumUtfChars: zero length, calc len} { +test utf-4.5 {Tcl_NumUtfChars: zero length, calc len} testnumutfchars { testnumutfchars "" 1 } {0} -test utf-4.6 {Tcl_NumUtfChars: length 1, calc len} { +test utf-4.6 {Tcl_NumUtfChars: length 1, calc len} testnumutfchars { testnumutfchars [bytestring "\xC2\xA2"] 1 } {1} -test utf-4.7 {Tcl_NumUtfChars: long string, calc len} { +test utf-4.7 {Tcl_NumUtfChars: long string, calc len} testnumutfchars { testnumutfchars [bytestring "abc\xC2\xA2\xe4\xb9\x8e\uA2\u4e4e"] 1 } {7} -test utf-4.8 {Tcl_NumUtfChars: #u0000, calc len} { +test utf-4.8 {Tcl_NumUtfChars: #u0000, calc len} testnumutfchars { testnumutfchars [bytestring "\xC0\x80"] 1 } {1} -- cgit v0.12 From a17766024b1d018e9dd4bc4831eca9fa6b56500d Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 8 Oct 2003 17:51:07 +0000 Subject: format correction and clarification backport --- doc/trace.n | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/trace.n b/doc/trace.n index 01c0327..b81d275 100644 --- a/doc/trace.n +++ b/doc/trace.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: trace.n,v 1.13 2003/02/04 00:56:20 hobbs Exp $ +'\" RCS: @(#) $Id: trace.n,v 1.13.2.1 2003/10/08 17:51:07 dgp Exp $ '\" .so man.macros .TH trace n "8.4" Tcl "Tcl Built-In Commands" @@ -72,7 +72,8 @@ in which they appear. .TP \fBtrace add execution\fR \fIname ops command\fR Arrange for \fIcommand\fR to be executed whenever command \fIname\fR -is modified in one of the ways given by the list \fIops\fR. \fIName\fR will be +is executed, with traces occurring at the points indicated by the list +\fIops\fR. \fIName\fR will be resolved using the usual namespace resolution rules used by procedures. If the command does not exist, an error will be thrown. .RS @@ -153,7 +154,7 @@ While \fIcommand\fR is executing during an execution trace, traces on \fIname\fR are temporarily disabled. This allows the \fIcommand\fR to execute \fIname\fR in its body without invoking any other traces again. If an error occurs while executing the \fIcommand\fR body, then the -\fIcommand\fR name as a whole will return that same error. +command \fIname\fR as a whole will return that same error. When multiple traces are set on \fIname\fR, then for \fIenter\fR and \fIenterstep\fR operations, the traced commands are invoked -- cgit v0.12 From eca4664d01909a7882167002ee5f451dc982076e Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 8 Oct 2003 23:18:16 +0000 Subject: * generic/tclBasic.c: Save and restore the iPtr->flag bits that control the state of errorCode and errorInfo management when calling "leave" execution traces, so that all error information of the traced command is still available whether traced or not. [Bug 760947] Thanks to Yahalom Emet. --- ChangeLog | 8 ++++++++ generic/tclBasic.c | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3d8855f..180b267 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-10-08 Don Porter + + * generic/tclBasic.c: Save and restore the iPtr->flag bits that + control the state of errorCode and errorInfo management when calling + "leave" execution traces, so that all error information of the traced + command is still available whether traced or not. [Bug 760947] + Thanks to Yahalom Emet. + 2003-10-08 Donal K. Fellows * generic/tclTest.c (TestNumUtfCharsCmd): Command to allow finer diff --git a/generic/tclBasic.c b/generic/tclBasic.c index dc4fe90..0a32cbf 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.7 2003/10/03 20:31:23 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.8 2003/10/08 23:18:17 dgp Exp $ */ #include "tclInt.h" @@ -3095,6 +3095,8 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) * Call 'leave' command traces */ if (!(cmdPtr->flags & CMD_IS_DELETED)) { + int saveErrFlags = iPtr->flags + & (ERR_IN_PROGRESS | ERR_ALREADY_LOGGED | ERROR_CODE_SET); if ((cmdPtr->flags & CMD_HAS_EXEC_TRACES) && (traceCode == TCL_OK)) { traceCode = TclCheckExecutionTraces (interp, command, length, cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); @@ -3103,6 +3105,9 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) traceCode = TclCheckInterpTraces(interp, command, length, cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); } + if (traceCode == TCL_OK) { + iPtr->flags |= saveErrFlags; + } } TclCleanupCommand(cmdPtr); -- cgit v0.12 From c18947675711693a12a4d8f933281f357bbab984 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 13 Oct 2003 01:00:37 +0000 Subject: * unix/tclUnixTest.c (TestalarmCmd): don't bother checking return value of alarm. [Bug #664755] (english) --- ChangeLog | 9 +++++++-- unix/tclUnixTest.c | 7 ++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 180b267..9bd668d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-10-12 Jeff Hobbs + + * unix/tclUnixTest.c (TestalarmCmd): don't bother checking return + value of alarm. [Bug #664755] (english) + 2003-10-08 Don Porter * generic/tclBasic.c: Save and restore the iPtr->flag bits that @@ -77,8 +82,8 @@ * tests/fileName.test: * tests/winFCmd.test: - * doc/FileSystem.3: backported various test and documentation - changes from HEAD. Backport of actual code fixes to follow. + * doc/FileSystem.3: backported various test and documentation + changes from HEAD. Backport of actual code fixes to follow. 2003-10-02 Don Porter diff --git a/unix/tclUnixTest.c b/unix/tclUnixTest.c index 2b636b4..e4c5662 100644 --- a/unix/tclUnixTest.c +++ b/unix/tclUnixTest.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTest.c,v 1.14 2003/02/15 22:30:29 kennykb Exp $ + * RCS: @(#) $Id: tclUnixTest.c,v 1.14.2.1 2003/10/13 01:00:38 hobbs Exp $ */ #include "tclInt.h" @@ -647,10 +647,7 @@ TestalarmCmd(clientData, interp, argc, argv) Tcl_AppendResult(interp, "sigaction: ", Tcl_PosixError(interp), NULL); return TCL_ERROR; } - if (alarm(sec) < 0) { - Tcl_AppendResult(interp, "alarm: ", Tcl_PosixError(interp), NULL); - return TCL_ERROR; - } + (void)alarm(sec); return TCL_OK; #else Tcl_AppendResult(interp, "warning: sigaction SA_RESTART not support on this platform", NULL); -- cgit v0.12 From 0281176be42fbf8cd519c17208041ba5fcf8b193 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Tue, 14 Oct 2003 18:21:59 +0000 Subject: regsub fix --- ChangeLog | 6 ++++++ generic/tclCmdMZ.c | 15 +++++++++++++-- tests/regexp.test | 14 +++++++++++++- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9bd668d..74c119d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-10-13 Vince Darley + + * generic/tclCmdMZ.c: + * tests/regexp.test: fix to [Bug 823524] in regsub; added three + new tests. + 2003-10-12 Jeff Hobbs * unix/tclUnixTest.c (TestalarmCmd): don't bother checking return diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index eac4bda..45f375b 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.8 2003/10/03 20:31:24 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.9 2003/10/14 18:21:59 vincentdarley Exp $ */ #include "tclInt.h" @@ -738,7 +738,7 @@ Tcl_RegsubObjCmd(dummy, interp, objc, objv) match = Tcl_RegExpExecObj(interp, regExpr, objPtr, offset, 10 /* matches */, ((offset > 0 && - (Tcl_GetUniChar(objPtr,offset-1) != (Tcl_UniChar)'\n')) + (wstring[offset-1] != (Tcl_UniChar)'\n')) ? TCL_REG_NOTBOL : 0)); if (match < 0) { @@ -833,6 +833,17 @@ Tcl_RegsubObjCmd(dummy, interp, objc, objv) offset++; } else { offset += end; + if (start == end) { + /* + * We matched an empty string, which means we must go + * forward one more step so we don't match again at the + * same spot. + */ + if (offset < wlen) { + Tcl_AppendUnicodeToObj(resultPtr, wstring + offset, 1); + } + offset++; + } } if (!all) { break; diff --git a/tests/regexp.test b/tests/regexp.test index 08ec147..1403e9d 100644 --- a/tests/regexp.test +++ b/tests/regexp.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: regexp.test,v 1.22.2.2 2003/10/07 04:48:07 dgp Exp $ +# RCS: @(#) $Id: regexp.test,v 1.22.2.3 2003/10/14 18:22:10 vincentdarley Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -616,6 +616,18 @@ test regexp-21.10 {multiple matches handle newlines} { regsub -all -lineanchor -- {^#[^\n]*\n} "#one\n#two\n#three\n" foo\n } "foo\nfoo\nfoo\n" +test regexp-21.11 {multiple matches handle newlines} { + regsub -all -line -- ^ "a\nb\nc" \# +} "\#a\n\#b\n\#c" + +test regexp-21.12 {multiple matches handle newlines} { + regsub -all -line -- ^ "\n\n" \# +} "\#\n\#\n\#" + +test regexp-21.13 {multiple matches handle newlines} { + regexp -all -inline -indices -line -- ^ "a\nb\nc" +} {{0 -1} {2 1} {4 3}} + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From e18615b1888dbd8278403746478b974e5fcc1d2d Mon Sep 17 00:00:00 2001 From: davygrvy Date: Tue, 14 Oct 2003 22:41:42 +0000 Subject: Punt gracefully if exitToken was already destroyed. --- win/tclAppInit.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/win/tclAppInit.c b/win/tclAppInit.c index bed9ea8..cc2c1de 100644 --- a/win/tclAppInit.c +++ b/win/tclAppInit.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAppInit.c,v 1.11.2.1 2003/05/10 05:00:11 mistachkin Exp $ + * RCS: @(#) $Id: tclAppInit.c,v 1.11.2.2 2003/10/14 22:41:42 davygrvy Exp $ */ #include "tcl.h" @@ -426,6 +426,12 @@ BOOL __stdcall sigHandler(DWORD fdwCtrlType) { HANDLE hStdIn; + + if (!exitToken) { + /* Async token must have been destroyed, punt gracefully. */ + return FALSE; + } + /* * If Tcl is currently executing some bytecode or in the eventloop, * this will cause Tcl to enter asyncExit at the next command -- cgit v0.12 From 0eaecb58f47298d9f01ce51c2bd78ac1e47ba2ad Mon Sep 17 00:00:00 2001 From: davygrvy Date: Tue, 14 Oct 2003 22:44:48 +0000 Subject: no message --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 74c119d..437a1da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-10-14 David Gravereaux + + * win/tclAppInit.c (sigHandler): Punt gracefully if exitToken + has already been destroyed. + 2003-10-13 Vince Darley * generic/tclCmdMZ.c: -- cgit v0.12 From 95eb7edeb1e37ebd0497c92022ceb063a21ae06f Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 21 Oct 2003 22:57:17 +0000 Subject: * win/tclWinPipe.c (BuildCommandLine): Applied the patch coming with [Bug 805605] to the code, fixing the incorrect use of ispace noted by Ronald Dauster . --- ChangeLog | 6 ++++++ win/tclWinPipe.c | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 437a1da..2e59813 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-10-21 Andreas Kupries + + * win/tclWinPipe.c (BuildCommandLine): Applied the patch coming + with [Bug 805605] to the code, fixing the incorrect use of + ispace noted by Ronald Dauster . + 2003-10-14 David Gravereaux * win/tclAppInit.c (sigHandler): Punt gracefully if exitToken diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index a21d29c..320f99e 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.4 2003/10/04 18:59:27 mdejong Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.5 2003/10/21 22:57:18 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -1585,8 +1585,11 @@ BuildCommandLine( if (arg[0] == '\0') { quote = 1; } else { - for (start = arg; *start != '\0'; start++) { - if (isspace(*start)) { /* INTL: ISO space. */ + int count; + Tcl_UniChar ch; + for (start = arg; *start != '\0'; start += count) { + count = Tcl_UtfToUniChar(start, &ch); + if (Tcl_UniCharIsSpace(ch)) { /* INTL: ISO space. */ quote = 1; break; } -- cgit v0.12 From 4babd9463cca124b608680aceabf2132b40d7c26 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 21 Oct 2003 23:39:52 +0000 Subject: * tools/tcltk-man2html.tcl: fixed incorrect html generated for .IP/.TP lists, now use
...
...

...
...
instead of illegal

...
...

...
...
. Added skipping of directives directly after .TP to avoid them being used as item descriptions, e.g. .TP\n.VS in clock.n. --- ChangeLog | 8 ++++++++ tools/tcltk-man2html.tcl | 19 ++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e59813..7a901ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-10-21 Daniel Steffen + + * tools/tcltk-man2html.tcl: fixed incorrect html generated for + .IP/.TP lists, now use
...
...

...
...
+ instead of illegal

...
...

...
...
. + Added skipping of directives directly after .TP to avoid them + being used as item descriptions, e.g. .TP\n.VS in clock.n. + 2003-10-21 Andreas Kupries * win/tclWinPipe.c (BuildCommandLine): Applied the patch coming diff --git a/tools/tcltk-man2html.tcl b/tools/tcltk-man2html.tcl index a4babde..30e11d3 100755 --- a/tools/tcltk-man2html.tcl +++ b/tools/tcltk-man2html.tcl @@ -479,7 +479,7 @@ proc output-RS-list {} { return } } - man-puts

+ man-puts
while {[more-text]} { set line [next-text] if {[is-a-directive $line]} { @@ -512,7 +512,7 @@ proc output-IP-list {context code rest} { global manual if {![string length $rest]} { # blank label, plain indent, no contents entry - man-puts

+ man-puts
while {[more-text]} { set line [next-text] if {[is-a-directive $line]} { @@ -541,6 +541,7 @@ proc output-IP-list {context code rest} { lappend manual(section-toc)
backup-text 1 set accept_RE 0 + set para {} while {[more-text]} { set line [next-text] if {[is-a-directive $line]} { @@ -553,9 +554,9 @@ proc output-IP-list {context code rest} { } if {[string equal $manual(section) "ARGUMENTS"] || \ [regexp {^\[\d+\]$} $rest]} { - man-puts "

$rest
" + man-puts "$para
$rest
" } else { - man-puts "

[long-toc $rest]
" + man-puts "$para
[long-toc $rest]
" } if {[string equal $manual(name):$manual(section) \ "selection:DESCRIPTION"]} { @@ -590,7 +591,7 @@ proc output-IP-list {context code rest} { .PP { if {[match-text @rest1 .br @rest2 .RS]} { # yet another nroff kludge as above - man-puts "

[long-toc $rest1]" + man-puts "$para
[long-toc $rest1]" man-puts "
[long-toc $rest2]
" incr accept_RE 1 } elseif {[match-text @rest .RE]} { @@ -598,6 +599,7 @@ proc output-IP-list {context code rest} { if {!$accept_RE} { man-puts "

$rest

" backup-text 1 + set para {} break } else { man-puts "

$rest" @@ -625,8 +627,9 @@ proc output-IP-list {context code rest} { } else { man-puts $line } + set para

} - man-puts

+ man-puts "$para
" lappend manual(section-toc)
if {$accept_RE} { manerror "missing .RE in output-IP-list" @@ -1402,7 +1405,9 @@ proc make-man-pages {html args} { lappend manual(text) ".IP [process-text [unquote [string trim $rest]]]" } .TP { - set next [gets $manual(infp)] + while {[is-a-directive [set next [gets $manual(infp)]]]} { + manerror "ignoring $next after .TP" + } if {"$next" != {'}} { lappend manual(text) ".IP [process-text $next]" } -- cgit v0.12 From fcd9762272f467238addbbfcc715432865d64ae6 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 22 Oct 2003 08:21:14 +0000 Subject: Changed FILE_ to FCMD_ to prevent symbol/#def collisions. [Bug 822528] --- ChangeLog | 6 ++++ generic/tclCmdAH.c | 90 +++++++++++++++++++++++++++--------------------------- 2 files changed, 51 insertions(+), 45 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7a901ce..3626613 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-10-22 Donal K. Fellows + + * generic/tclCmdAH.c (Tcl_FileObjCmd): Changed FILE_ prefix for + option enumeration to FCMD_ to prevent collision with symbols + defined by Cygwin/Mingw32 on NT. [Bug 822528] + 2003-10-21 Daniel Steffen * tools/tcltk-man2html.tcl: fixed incorrect html generated for diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 2e6ba99..8f4ec9b 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.6 2003/05/14 23:01:56 dkf Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.7 2003/10/22 08:21:15 dkf Exp $ */ #include "tclInt.h" @@ -763,7 +763,7 @@ Tcl_ExprObjCmd(dummy, interp, objc, objv) * EMBEDDED NULLS, WHICH COULD THEORETICALLY HAPPEN ON A MAC. * With the object-based Tcl_FS APIs, the above NOTE may no * longer be true. In any case this assertion should be tested. - * + * * Results: * A standard Tcl result. * @@ -801,16 +801,16 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) (char *) NULL }; enum options { - FILE_ATIME, FILE_ATTRIBUTES, FILE_CHANNELS, FILE_COPY, - FILE_DELETE, - FILE_DIRNAME, FILE_EXECUTABLE, FILE_EXISTS, FILE_EXTENSION, - FILE_ISDIRECTORY, FILE_ISFILE, FILE_JOIN, FILE_LINK, - FILE_LSTAT, FILE_MTIME, FILE_MKDIR, FILE_NATIVENAME, - FILE_NORMALIZE, FILE_OWNED, - FILE_PATHTYPE, FILE_READABLE, FILE_READLINK, FILE_RENAME, - FILE_ROOTNAME, FILE_SEPARATOR, FILE_SIZE, FILE_SPLIT, - FILE_STAT, FILE_SYSTEM, - FILE_TAIL, FILE_TYPE, FILE_VOLUMES, FILE_WRITABLE + FCMD_ATIME, FCMD_ATTRIBUTES, FCMD_CHANNELS, FCMD_COPY, + FCMD_DELETE, + FCMD_DIRNAME, FCMD_EXECUTABLE, FCMD_EXISTS, FCMD_EXTENSION, + FCMD_ISDIRECTORY, FCMD_ISFILE, FCMD_JOIN, FCMD_LINK, + FCMD_LSTAT, FCMD_MTIME, FCMD_MKDIR, FCMD_NATIVENAME, + FCMD_NORMALIZE, FCMD_OWNED, + FCMD_PATHTYPE, FCMD_READABLE, FCMD_READLINK, FCMD_RENAME, + FCMD_ROOTNAME, FCMD_SEPARATOR, FCMD_SIZE, FCMD_SPLIT, + FCMD_STAT, FCMD_SYSTEM, + FCMD_TAIL, FCMD_TYPE, FCMD_VOLUMES, FCMD_WRITABLE }; if (objc < 2) { @@ -823,7 +823,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) } switch ((enum options) index) { - case FILE_ATIME: { + case FCMD_ATIME: { Tcl_StatBuf buf; struct utimbuf tval; @@ -862,10 +862,10 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_SetLongObj(Tcl_GetObjResult(interp), (long) buf.st_atime); return TCL_OK; } - case FILE_ATTRIBUTES: { + case FCMD_ATTRIBUTES: { return TclFileAttrsCmd(interp, objc, objv); } - case FILE_CHANNELS: { + case FCMD_CHANNELS: { if ((objc < 2) || (objc > 3)) { Tcl_WrongNumArgs(interp, 2, objv, "?pattern?"); return TCL_ERROR; @@ -873,13 +873,13 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) return Tcl_GetChannelNamesEx(interp, ((objc == 2) ? NULL : Tcl_GetString(objv[2]))); } - case FILE_COPY: { + case FCMD_COPY: { return TclFileCopyCmd(interp, objc, objv); } - case FILE_DELETE: { + case FCMD_DELETE: { return TclFileDeleteCmd(interp, objc, objv); } - case FILE_DIRNAME: { + case FCMD_DIRNAME: { Tcl_Obj *dirPtr; if (objc != 3) { goto only3Args; @@ -893,19 +893,19 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) return TCL_OK; } } - case FILE_EXECUTABLE: { + case FCMD_EXECUTABLE: { if (objc != 3) { goto only3Args; } return CheckAccess(interp, objv[2], X_OK); } - case FILE_EXISTS: { + case FCMD_EXISTS: { if (objc != 3) { goto only3Args; } return CheckAccess(interp, objv[2], F_OK); } - case FILE_EXTENSION: { + case FCMD_EXTENSION: { char *fileName, *extension; if (objc != 3) { goto only3Args; @@ -917,7 +917,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) } return TCL_OK; } - case FILE_ISDIRECTORY: { + case FCMD_ISDIRECTORY: { int value; Tcl_StatBuf buf; @@ -931,7 +931,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_SetBooleanObj(Tcl_GetObjResult(interp), value); return TCL_OK; } - case FILE_ISFILE: { + case FCMD_ISFILE: { int value; Tcl_StatBuf buf; @@ -945,7 +945,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_SetBooleanObj(Tcl_GetObjResult(interp), value); return TCL_OK; } - case FILE_JOIN: { + case FCMD_JOIN: { Tcl_Obj *resObj; if (objc < 3) { @@ -956,7 +956,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_SetObjResult(interp, resObj); return TCL_OK; } - case FILE_LINK: { + case FCMD_LINK: { Tcl_Obj *contents; int index; @@ -1046,7 +1046,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) } return TCL_OK; } - case FILE_LSTAT: { + case FCMD_LSTAT: { char *varName; Tcl_StatBuf buf; @@ -1060,7 +1060,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) varName = Tcl_GetString(objv[3]); return StoreStatData(interp, varName, &buf); } - case FILE_MTIME: { + case FCMD_MTIME: { Tcl_StatBuf buf; struct utimbuf tval; @@ -1099,14 +1099,14 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_SetLongObj(Tcl_GetObjResult(interp), (long) buf.st_mtime); return TCL_OK; } - case FILE_MKDIR: { + case FCMD_MKDIR: { if (objc < 3) { Tcl_WrongNumArgs(interp, 2, objv, "name ?name ...?"); return TCL_ERROR; } return TclFileMakeDirsCmd(interp, objc, objv); } - case FILE_NATIVENAME: { + case FCMD_NATIVENAME: { CONST char *fileName; Tcl_DString ds; @@ -1123,7 +1123,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_DStringFree(&ds); return TCL_OK; } - case FILE_NORMALIZE: { + case FCMD_NORMALIZE: { Tcl_Obj *fileName; if (objc != 3) { @@ -1135,7 +1135,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_SetObjResult(interp, fileName); return TCL_OK; } - case FILE_OWNED: { + case FCMD_OWNED: { int value; Tcl_StatBuf buf; @@ -1158,7 +1158,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_SetBooleanObj(Tcl_GetObjResult(interp), value); return TCL_OK; } - case FILE_PATHTYPE: { + case FCMD_PATHTYPE: { if (objc != 3) { goto only3Args; } @@ -1176,13 +1176,13 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) } return TCL_OK; } - case FILE_READABLE: { + case FCMD_READABLE: { if (objc != 3) { goto only3Args; } return CheckAccess(interp, objv[2], R_OK); } - case FILE_READLINK: { + case FCMD_READLINK: { Tcl_Obj *contents; if (objc != 3) { @@ -1205,10 +1205,10 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_DecrRefCount(contents); return TCL_OK; } - case FILE_RENAME: { + case FCMD_RENAME: { return TclFileRenameCmd(interp, objc, objv); } - case FILE_ROOTNAME: { + case FCMD_ROOTNAME: { int length; char *fileName, *extension; @@ -1225,7 +1225,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) } return TCL_OK; } - case FILE_SEPARATOR: { + case FCMD_SEPARATOR: { if ((objc < 2) || (objc > 3)) { Tcl_WrongNumArgs(interp, 2, objv, "?name?"); return TCL_ERROR; @@ -1256,7 +1256,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) } return TCL_OK; } - case FILE_SIZE: { + case FCMD_SIZE: { Tcl_StatBuf buf; if (objc != 3) { @@ -1269,14 +1269,14 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) (Tcl_WideInt) buf.st_size); return TCL_OK; } - case FILE_SPLIT: { + case FCMD_SPLIT: { if (objc != 3) { goto only3Args; } Tcl_SetObjResult(interp, Tcl_FSSplitPath(objv[2], NULL)); return TCL_OK; } - case FILE_STAT: { + case FCMD_STAT: { char *varName; Tcl_StatBuf buf; @@ -1290,7 +1290,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) varName = Tcl_GetString(objv[3]); return StoreStatData(interp, varName, &buf); } - case FILE_SYSTEM: { + case FCMD_SYSTEM: { Tcl_Obj* fsInfo; if (objc != 3) { goto only3Args; @@ -1305,7 +1305,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) return TCL_ERROR; } } - case FILE_TAIL: { + case FCMD_TAIL: { int splitElements; Tcl_Obj *splitPtr; @@ -1346,7 +1346,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_DecrRefCount(splitPtr); return TCL_OK; } - case FILE_TYPE: { + case FCMD_TYPE: { Tcl_StatBuf buf; if (objc != 3) { @@ -1359,7 +1359,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) GetTypeFromMode((unsigned short) buf.st_mode), -1); return TCL_OK; } - case FILE_VOLUMES: { + case FCMD_VOLUMES: { if (objc != 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; @@ -1367,7 +1367,7 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) Tcl_SetObjResult(interp, Tcl_FSListVolumes()); return TCL_OK; } - case FILE_WRITABLE: { + case FCMD_WRITABLE: { if (objc != 3) { goto only3Args; } -- cgit v0.12 From 1be328e65c44844c92b1d464ec916f1d2097e5db Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 22 Oct 2003 22:35:45 +0000 Subject: * generic/tclIOUtil.c (FsListMounts, FsAddMountsToGlobResult): New functions. See below for context. (Tcl_FSMatchInDirectory): Modified to call on the new functions (above) to handle the mountpoints in the glob'bed directory correctly. Part of the patch by Vincent Darly to solve the [Bug 800106] for the 8.4.x series. * generic/tcl.h (TCL_GLOB_TYPE_MOUNT): New definition. Part of the patch by Vincent Darly to solve [Bug 800106] for the 8.4.x series. --- ChangeLog | 16 +++++- generic/tcl.h | 3 +- generic/tclIOUtil.c | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclTest.c | 17 ++++-- 4 files changed, 180 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3626613..41e9b35 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2003-10-22 Andreas Kupries + + * generic/tclIOUtil.c (FsListMounts, FsAddMountsToGlobResult): New + functions. See below for context. + (Tcl_FSMatchInDirectory): Modified to call on the new functions + (above) to handle the mountpoints in the glob'bed directory + correctly. Part of the patch by Vincent Darly to solve the + [Bug 800106] for the 8.4.x series. + + * generic/tcl.h (TCL_GLOB_TYPE_MOUNT): New definition. Part of the + patch by Vincent Darly to solve [Bug 800106] for the 8.4.x series. + 2003-10-22 Donal K. Fellows * generic/tclCmdAH.c (Tcl_FileObjCmd): Changed FILE_ prefix for @@ -12,7 +24,7 @@ Added skipping of directives directly after .TP to avoid them being used as item descriptions, e.g. .TP\n.VS in clock.n. -2003-10-21 Andreas Kupries +2003-10-21 Andreas Kupries * win/tclWinPipe.c (BuildCommandLine): Applied the patch coming with [Bug 805605] to the code, fixing the incorrect use of @@ -1120,7 +1132,7 @@ common user errors due to confusion between [package names] names and [info loaded] names. -2003-02-25 Andreas Kupries +2003-02-25 Andreas Kupries * tests/pid.test: See below [Bug #678412]. * tests/io.test: Made more robust against spaces in paths diff --git a/generic/tcl.h b/generic/tcl.h index 7d39feb..7d9afde 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.7 2003/10/02 23:07:33 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.8 2003/10/22 22:35:46 andreas_kupries Exp $ */ #ifndef _TCL @@ -1591,6 +1591,7 @@ typedef struct Tcl_GlobTypeData { #define TCL_GLOB_TYPE_FILE (1<<4) #define TCL_GLOB_TYPE_LINK (1<<5) #define TCL_GLOB_TYPE_SOCK (1<<6) +#define TCL_GLOB_TYPE_MOUNT (1<<7) #define TCL_GLOB_PERM_RONLY (1<<0) #define TCL_GLOB_PERM_HIDDEN (1<<1) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 8de62f1..2da3666 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.10 2003/10/06 09:49:20 vincentdarley Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.11 2003/10/22 22:35:46 andreas_kupries Exp $ */ #include "tclInt.h" @@ -102,6 +102,10 @@ static Tcl_Obj* TclFSNormalizeAbsolutePath static FilesystemRecord* FsGetFirstFilesystem(void); static void FsThrExitProc(ClientData cd); +static Tcl_Obj* FsListMounts _ANSI_ARGS_((Tcl_Obj *pathPtr, + CONST char *pattern)); +static Tcl_Obj* FsAddMountsToGlobResult _ANSI_ARGS_((Tcl_Obj *result, + Tcl_Obj *pathPtr, CONST char *pattern, Tcl_GlobTypeData *types)); #ifdef TCL_THREADS static void FsRecacheFilesystemList(void); @@ -1008,7 +1012,12 @@ Tcl_FSMatchInDirectory(interp, result, pathPtr, pattern, types) if (fsPtr != NULL) { Tcl_FSMatchInDirectoryProc *proc = fsPtr->matchInDirectoryProc; if (proc != NULL) { - return (*proc)(interp, result, pathPtr, pattern, types); + int ret = (*proc)(interp, result, pathPtr, pattern, types); + if (ret == TCL_OK && pattern != NULL) { + result = FsAddMountsToGlobResult(result, pathPtr, + pattern, types); + } + return ret; } } else { Tcl_Obj* cwd; @@ -1053,6 +1062,9 @@ Tcl_FSMatchInDirectory(interp, result, pathPtr, pattern, types) if (ret == TCL_OK) { int resLength; + tmpResultPtr = FsAddMountsToGlobResult(tmpResultPtr, cwd, + pattern, types); + ret = Tcl_ListObjLength(interp, tmpResultPtr, &resLength); if (ret == TCL_OK) { int i; @@ -1079,6 +1091,92 @@ Tcl_FSMatchInDirectory(interp, result, pathPtr, pattern, types) /* *---------------------------------------------------------------------- * + * FsAddMountsToGlobResult -- + * + * This routine is used by the globbing code to take the results + * of a directory listing and add any mounted paths to that + * listing. This is required so that simple things like + * 'glob *' merge mounts and listings correctly. + * + * Results: + * + * The passed in 'result' may be modified (in place, if + * necessary), and the correct list is returned. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ +static Tcl_Obj* +FsAddMountsToGlobResult(result, pathPtr, pattern, types) + Tcl_Obj *result; /* The current list of matching paths */ + Tcl_Obj *pathPtr; /* The directory in question */ + CONST char *pattern; + Tcl_GlobTypeData *types; +{ + int mLength, gLength, i; + int dir = (types == NULL || (types->type & TCL_GLOB_TYPE_DIR)); + Tcl_Obj *mounts = FsListMounts(pathPtr, pattern); + + if (mounts == NULL) return result; + + if (Tcl_ListObjLength(NULL, mounts, &mLength) != TCL_OK || mLength == 0) { + goto endOfMounts; + } + if (Tcl_ListObjLength(NULL, result, &gLength) != TCL_OK) { + goto endOfMounts; + } + for (i = 0; i < mLength; i++) { + Tcl_Obj *mElt; + int j; + int found = 0; + + Tcl_ListObjIndex(NULL, mounts, i, &mElt); + + for (j = 0; j < gLength; j++) { + Tcl_Obj *gElt; + Tcl_ListObjIndex(NULL, result, j, &gElt); + if (Tcl_FSEqualPaths(mElt, gElt)) { + found = 1; + if (!dir) { + /* We don't want to list this */ + if (Tcl_IsShared(result)) { + Tcl_Obj *newList; + newList = Tcl_DuplicateObj(result); + Tcl_DecrRefCount(result); + result = newList; + } + Tcl_ListObjReplace(NULL, result, j, 1, 0, NULL); + gLength--; + } + /* Break out of for loop */ + break; + } + } + if (!found && dir) { + if (Tcl_IsShared(result)) { + Tcl_Obj *newList; + newList = Tcl_DuplicateObj(result); + Tcl_DecrRefCount(result); + result = newList; + } + Tcl_ListObjAppendElement(NULL, result, mElt); + /* + * No need to increment gLength, since we + * don't want to compare mounts against + * mounts. + */ + } + } + endOfMounts: + Tcl_DecrRefCount(mounts); + return result; +} + +/* + *---------------------------------------------------------------------- + * * Tcl_FSMountsChanged -- * * Notify the filesystem that the available mounted filesystems @@ -3027,6 +3125,59 @@ Tcl_FSListVolumes(void) /* *--------------------------------------------------------------------------- * + * FsListMounts -- + * + * List all mounts within the given directory, which match the + * given pattern. + * + * Results: + * The list of mounts, in a list object which has refCount 0, or + * NULL if we didn't even find any filesystems to try to list + * mounts. + * + * Side effects: + * None + * + *--------------------------------------------------------------------------- + */ + +static Tcl_Obj* +FsListMounts(pathPtr, pattern) + Tcl_Obj *pathPtr; /* Contains path to directory to search. */ + CONST char *pattern; /* Pattern to match against. */ +{ + FilesystemRecord *fsRecPtr; + Tcl_GlobTypeData mountsOnly = { TCL_GLOB_TYPE_MOUNT, 0, NULL, NULL }; + Tcl_Obj *resultPtr = NULL; + + /* + * Call each of the "listMounts" functions in succession. + * A non-NULL return value indicates the particular function has + * succeeded. We call all the functions registered, since we want + * a list from each filesystems. + */ + + fsRecPtr = FsGetFirstFilesystem(); + while (fsRecPtr != NULL) { + if (fsRecPtr != &nativeFilesystemRecord) { + Tcl_FSMatchInDirectoryProc *proc = + fsRecPtr->fsPtr->matchInDirectoryProc; + if (proc != NULL) { + if (resultPtr == NULL) { + resultPtr = Tcl_NewObj(); + } + (*proc)(NULL, resultPtr, pathPtr, pattern, &mountsOnly); + } + } + fsRecPtr = fsRecPtr->nextPtr; + } + + return resultPtr; +} + +/* + *--------------------------------------------------------------------------- + * * Tcl_FSSplitPath -- * * This function takes the given Tcl_Obj, which should be a valid diff --git a/generic/tclTest.c b/generic/tclTest.c index d3abdfb..4ce051d 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.2 2003/10/08 14:21:20 dkf Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.3 2003/10/22 22:35:46 andreas_kupries Exp $ */ #define TCL_TEST @@ -6091,16 +6091,21 @@ TestReportOpenFileChannel(interp, fileName, mode, permissions) static int TestReportMatchInDirectory(interp, resultPtr, dirPtr, pattern, types) Tcl_Interp *interp; /* Interpreter to receive results. */ - Tcl_Obj *resultPtr; /* Directory separators to pass to TclDoGlob. */ + Tcl_Obj *resultPtr; /* Object to lappend results. */ Tcl_Obj *dirPtr; /* Contains path to directory to search. */ CONST char *pattern; /* Pattern to match against. */ Tcl_GlobTypeData *types; /* Object containing list of acceptable types. * May be NULL. */ { - TestReport("matchindirectory",dirPtr, NULL); - return Tcl_FSMatchInDirectory(interp, resultPtr, - TestReportGetNativePath(dirPtr), pattern, - types); + if (types != NULL && types->type & TCL_GLOB_TYPE_MOUNT) { + TestReport("matchmounts",dirPtr, NULL); + return TCL_OK; + } else { + TestReport("matchindirectory",dirPtr, NULL); + return Tcl_FSMatchInDirectory(interp, resultPtr, + TestReportGetNativePath(dirPtr), pattern, + types); + } } static int TestReportChdir(dirName) -- cgit v0.12 From 9a534e8f58925ff9438f439c31b0513530c6c4c3 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Thu, 23 Oct 2003 09:40:56 +0000 Subject: typo --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 41e9b35..7d48b12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,11 +4,11 @@ functions. See below for context. (Tcl_FSMatchInDirectory): Modified to call on the new functions (above) to handle the mountpoints in the glob'bed directory - correctly. Part of the patch by Vincent Darly to solve the + correctly. Part of the patch by Vincent Darley to solve the [Bug 800106] for the 8.4.x series. * generic/tcl.h (TCL_GLOB_TYPE_MOUNT): New definition. Part of the - patch by Vincent Darly to solve [Bug 800106] for the 8.4.x series. + patch by Vincent Darley to solve [Bug 800106] for the 8.4.x series. 2003-10-22 Donal K. Fellows -- cgit v0.12 From 30812e7dd017c24c6fe9087088d51216f735512a Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 23 Oct 2003 16:24:41 +0000 Subject: * win/tclWinSock.c (TcpWatchProc): Watch for FD_CLOSE too when asked for writable events by the generic layer. (SocketEventProc): Generate a writable event too when a close is detected. Together the changes fix [Bug 599468]. --- ChangeLog | 9 +++++++++ win/tclWinSock.c | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d48b12..39a33cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2003-10-22 Andreas Kupries + * win/tclWinSock.c (TcpWatchProc): Watch for FD_CLOSE too when + asked for writable events by the generic layer. + (SocketEventProc): Generate a writable event too when a close is + detected. + + Together the changes fix [Bug 599468]. + +2003-10-22 Andreas Kupries + * generic/tclIOUtil.c (FsListMounts, FsAddMountsToGlobResult): New functions. See below for context. (Tcl_FSMatchInDirectory): Modified to call on the new functions diff --git a/win/tclWinSock.c b/win/tclWinSock.c index b92109b..4586698 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36 2003/01/16 19:02:00 mdejong Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.1 2003/10/23 16:24:42 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -869,7 +869,7 @@ SocketEventProc(evPtr, flags) Tcl_Time blockTime = { 0, 0 }; Tcl_SetMaxBlockTime(&blockTime); - mask |= TCL_READABLE; + mask |= TCL_READABLE|TCL_WRITABLE; } else if (events & FD_READ) { fd_set readFds; struct timeval timeout; @@ -2254,7 +2254,7 @@ TcpWatchProc(instanceData, mask) infoPtr->watchEvents |= (FD_READ|FD_CLOSE|FD_ACCEPT); } if (mask & TCL_WRITABLE) { - infoPtr->watchEvents |= (FD_WRITE|FD_CONNECT); + infoPtr->watchEvents |= (FD_WRITE|FD_CLOSE|FD_CONNECT); } /* -- cgit v0.12 From 8fe5b2fcac7044adea04de99718e6edecdc109b4 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 23 Oct 2003 17:49:05 +0000 Subject: * unix/tclUnixChan.c (Tcl_MakeFileChannel): Applied [Patch 813606] fixing [Bug 813087]. Detection of sockets was off for Mac OS X which implements pipes as local sockets. The new code ensures that only IP sockets are detected as such. --- ChangeLog | 7 +++++++ unix/tclUnixChan.c | 21 ++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 39a33cb..5037c26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-10-23 Andreas Kupries + + * unix/tclUnixChan.c (Tcl_MakeFileChannel): Applied [Patch 813606] + fixing [Bug 813087]. Detection of sockets was off for Mac OS X + which implements pipes as local sockets. The new code ensures + that only IP sockets are detected as such. + 2003-10-22 Andreas Kupries * win/tclWinSock.c (TcpWatchProc): Watch for FD_CLOSE too when diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 133e44f..7b6f59f 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42 2003/02/21 02:36:27 hobbs Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.1 2003/10/23 17:49:06 andreas_kupries Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -1889,8 +1889,8 @@ Tcl_MakeFileChannel(handle, mode) #ifdef DEPRECATED ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #endif /* DEPRECATED */ - int socketType = 0; - socklen_t argLength = sizeof(int); + struct sockaddr sockaddr; + socklen_t sockaddrLen = sizeof(sockaddr); if (mode == 0) { return NULL; @@ -1911,6 +1911,8 @@ Tcl_MakeFileChannel(handle, mode) } #endif /* DEPRECATED */ + sockaddr.sa_family = AF_UNSPEC; + #ifdef SUPPORTS_TTY if (isatty(fd)) { fsPtr = TtyInit(fd, 0); @@ -1918,13 +1920,14 @@ Tcl_MakeFileChannel(handle, mode) sprintf(channelName, "serial%d", fd); } else #endif /* SUPPORTS_TTY */ - if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (VOID *)&socketType, - &argLength) == 0 && socketType == SOCK_STREAM) { - return MakeTcpClientChannelMode((ClientData) fd, mode); + if (getsockname(fd, (struct sockaddr *)&sockaddr, &sockaddrLen) == 0 + && sockaddrLen > 0 + && sockaddr.sa_family == AF_INET) { + return MakeTcpClientChannelMode((ClientData) fd, mode); } else { - channelTypePtr = &fileChannelType; - fsPtr = (FileState *) ckalloc((unsigned) sizeof(FileState)); - sprintf(channelName, "file%d", fd); + channelTypePtr = &fileChannelType; + fsPtr = (FileState *) ckalloc((unsigned) sizeof(FileState)); + sprintf(channelName, "file%d", fd); } #ifdef DEPRECATED -- cgit v0.12 From 594ea92437e8a4065f0553a01de137852074177d Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Fri, 31 Oct 2003 08:46:41 +0000 Subject: ensure translated path is freed --- ChangeLog | 5 +++++ unix/tclUnixFile.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5037c26..d092f14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-10-31 Vince Darley + + * unix/tclUnixFile.c: ensure translated path (required for + correct error messages) is freed in both code paths. + 2003-10-23 Andreas Kupries * unix/tclUnixChan.c (Tcl_MakeFileChannel): Applied [Patch 813606] diff --git a/unix/tclUnixFile.c b/unix/tclUnixFile.c index fe9f067..af6b5fe 100644 --- a/unix/tclUnixFile.c +++ b/unix/tclUnixFile.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFile.c,v 1.32.2.1 2003/10/03 17:45:37 vincentdarley Exp $ + * RCS: @(#) $Id: tclUnixFile.c,v 1.32.2.2 2003/10/31 08:46:41 vincentdarley Exp $ */ #include "tclInt.h" @@ -221,6 +221,7 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) if (NativeMatchType(native, types)) { Tcl_ListObjAppendElement(interp, resultPtr, pathPtr); } + Tcl_DecrRefCount(fileNamePtr); return TCL_OK; } else { DIR *d; -- cgit v0.12 From 1c422c27c0056e5bcbaa9aa8778554fd83675239 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Fri, 31 Oct 2003 13:33:36 +0000 Subject: fix testsuite backport error --- ChangeLog | 1 + generic/tclTest.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d092f14..32299c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 2003-10-31 Vince Darley + * generic/tclTest.c: fix test suite memory leak (backport error) * unix/tclUnixFile.c: ensure translated path (required for correct error messages) is freed in both code paths. diff --git a/generic/tclTest.c b/generic/tclTest.c index 4ce051d..3a23941 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.3 2003/10/22 22:35:46 andreas_kupries Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.4 2003/10/31 13:33:40 vincentdarley Exp $ */ #define TCL_TEST @@ -4014,7 +4014,7 @@ TestfileCmd(dummy, interp, argc, argv) } for (j = i; j < argc; j++) { - if (Tcl_FSGetTranslatedPath(interp, argv[j]) == NULL) { + if (Tcl_FSGetNormalizedPath(interp, argv[j]) == NULL) { return TCL_ERROR; } } -- cgit v0.12 From 27b9197dbd4ae5800d5d7745077b33b95a610160 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 4 Nov 2003 09:36:30 +0000 Subject: * macosx/Makefile: added 'test' target. --- ChangeLog | 4 ++++ macosx/Makefile | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 32299c3..5ecf22e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-11-04 Daniel Steffen + + * macosx/Makefile: added 'test' target. + 2003-10-31 Vince Darley * generic/tclTest.c: fix test suite memory leak (backport error) diff --git a/macosx/Makefile b/macosx/Makefile index f3c8e02..79b6659 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -3,7 +3,7 @@ # Makefile to build Tcl on Mac OS X packaged as a Framework # uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5.2.5 2003/10/01 14:34:16 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.6 2003/11/04 09:36:30 das Exp $ # ######################################################################################################## @@ -35,7 +35,7 @@ TCL_PACKAGE_PATH ?= "~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Lib #------------------------------------------------------------------------------------------------------- # meta targets -meta := all install embedded install-embedded clean distclean +meta := all install embedded install-embedded clean distclean test styles := develop deploy @@ -58,6 +58,10 @@ distclean := ${styles:%=distclean-%} distclean : ${distclean} distclean-%: action := distclean- +test := ${styles:%=test-%} +test : ${test} +test-%: action := test- + targets := $(foreach v,${meta},${$v}) #------------------------------------------------------------------------------------------------------- @@ -143,6 +147,9 @@ distclean-${PROJECT}: ${MAKE} -C ${OBJ_DIR} distclean ${EXTRA_MAKE_ARGS} rm -rf ${OBJ_DIR} ${PRODUCT_NAME}.framework tclsh${PRODUCT_VERSION} tcltest +test-${PROJECT}: build-${PROJECT} + ${MAKE} -C ${OBJ_DIR} test ${EXTRA_MAKE_ARGS} + install-${PROJECT}: build-${PROJECT} # install to ${INSTALL_ROOT} with optional stripping ${MAKE} -C ${OBJ_DIR} install-binaries install-libraries \ -- cgit v0.12 From e5199821f0f325aaab89027b511707191fbe2b67 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 Nov 2003 20:52:38 +0000 Subject: * generic/tclEncoding.c (TclFindEncodings): Normalize the path of the executable before passing to TclpInitLibraryPath() to avoid buggy handling of paths containing "..". [Bug 832657] * tests/unixInit.test (unixInit-2.10): New test for fixed bug. --- ChangeLog | 7 +++++++ generic/tclEncoding.c | 14 +++++++++----- tests/unixInit.test | 36 +++++++++++++++++++++++++++++++++++- 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5ecf22e..e01160f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-11-05 Don Porter + + * generic/tclEncoding.c (TclFindEncodings): Normalize the path + of the executable before passing to TclpInitLibraryPath() to avoid + buggy handling of paths containing "..". [Bug 832657] + * tests/unixInit.test (unixInit-2.10): New test for fixed bug. + 2003-11-04 Daniel Steffen * macosx/Makefile: added 'test' target. diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 576a479..87f4669 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16 2003/02/21 02:40:58 hobbs Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.1 2003/11/05 20:52:39 dgp Exp $ */ #include "tclInt.h" @@ -2827,8 +2827,7 @@ TclFindEncodings(argv0) CONST char *argv0; /* Name of executable from argv[0] to main() * in native multi-byte encoding. */ { - char *native; - Tcl_Obj *pathPtr; + Tcl_Obj *pathPtr, *normPtr; Tcl_DString libPath, buffer; if (encodingsInitialized == 0) { @@ -2846,8 +2845,13 @@ TclFindEncodings(argv0) encodingsInitialized = 1; - native = TclpFindExecutable(argv0); - TclpInitLibraryPath(native); + pathPtr = Tcl_NewStringObj(TclpFindExecutable(argv0), -1); + Tcl_IncrRefCount(pathPtr); + normPtr = Tcl_FSGetNormalizedPath(NULL, pathPtr); + Tcl_IncrRefCount(normPtr); + Tcl_DecrRefCount(pathPtr); + TclpInitLibraryPath(Tcl_GetString(normPtr)); + Tcl_DecrRefCount(normPtr); /* * The library path was set in the TclpInitLibraryPath routine. diff --git a/tests/unixInit.test b/tests/unixInit.test index 0f01943..4c1b37e 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30 2002/12/04 07:07:40 hobbs Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.1 2003/11/05 20:52:39 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -266,6 +266,40 @@ test unixInit-2.9 {TclpInitLibraryPath: paths relative to executable} {unix noSp set x } [list /tmp/lib/tcl[info tclversion] /lib/tcl[info tclversion] \ /tmp/library /library /tcl[info patchlevel]/library] + +test unixInit-2.10 {TclpInitLibraryPath: executable relative} -constraints { + unixOnly stdio +} -setup { + set tmpDir [makeDirectory tmp] + set sparklyDir [makeDirectory sparkly $tmpDir] + set execPath [file join [makeDirectory bin $sparklyDir] tcltest] + file copy [interpreter] $execPath + set libDir [makeDirectory lib $sparklyDir] + set scriptDir [makeDirectory tcl[info tclversion] $libDir] + makeFile {} init.tcl $scriptDir + set saveDir [pwd] + cd $libDir +} -body { + # Checking for Bug 832657 + lrange [getlibpath [file join .. bin tcltest]] 2 3 +} -cleanup { + cd $saveDir + unset saveDir + removeFile init.tcl $scriptDir + unset scriptDir + removeDirectory tcl[info tclversion] $libDir + unset libDir + file delete $execPath + unset execPath + removeDirectory bin $sparklyDir + removeDirectory lib $sparklyDir + unset sparklyDir + removeDirectory sparkly $tmpDir + unset tmpDir + removeDirectory tmp +} -result [list [file join [temporaryDirectory] tmp sparkly library] \ + [file join [temporaryDirectory] tmp library] ] + test unixInit-3.1 {TclpSetInitialEncodings} -constraints { unixOnly stdio } -body { -- cgit v0.12 From 3361d6ad5280072793769743494feecf91d1c3fc Mon Sep 17 00:00:00 2001 From: das Date: Thu, 6 Nov 2003 13:12:23 +0000 Subject: * macosx/Makefile: optimized builds define NDEBUG to turn off ThreadAlloc range checking. --- ChangeLog | 5 +++++ macosx/Makefile | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e01160f..c650222 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-11-07 Daniel Steffen + + * macosx/Makefile: optimized builds define NDEBUG to turn off + ThreadAlloc range checking. + 2003-11-05 Don Porter * generic/tclEncoding.c (TclFindEncodings): Normalize the path diff --git a/macosx/Makefile b/macosx/Makefile index 79b6659..96a3d14 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -3,7 +3,7 @@ # Makefile to build Tcl on Mac OS X packaged as a Framework # uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5.2.6 2003/11/04 09:36:30 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.7 2003/11/06 13:12:23 das Exp $ # ######################################################################################################## @@ -70,7 +70,8 @@ targets := $(foreach v,${meta},${$v}) develop_make_args := BUILD_STYLE=Development CONFIGURE_ARGS=--enable-symbols deploy_make_args := BUILD_STYLE=Deployment \ MAKE_ARGS=INSTALL_PROGRAM="'$$\$${INSTALL} $$\$${INSTALL_STRIP_PROGRAM}'" \ - MAKE_ARGS+=INSTALL_LIBRARY="'$$\$${INSTALL} $$\$${INSTALL_STRIP_LIBRARY}'" + MAKE_ARGS+=INSTALL_LIBRARY="'$$\$${INSTALL} $$\$${INSTALL_STRIP_LIBRARY}'" \ + MAKE_ARGS+=MEM_DEBUG_FLAGS="-DNDEBUG" embedded_make_args := EMBEDDED_BUILD=1 install_make_args := INSTALL_BUILD=1 -- cgit v0.12 From c5930f8386355d42d6789a95167916d37b975b72 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 6 Nov 2003 21:47:32 +0000 Subject: * tests/unixInit.test (unixInit-2.10): mark as knownBug * generic/tclEncoding.c (TclFindEncodings): revert patch from 2003-11-05. It wasn't valid in the sensitive startup init phase and broke Windows from working at all. --- ChangeLog | 7 +++++++ generic/tclEncoding.c | 20 +++++++------------- tests/unixInit.test | 8 ++++---- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index c650222..1fe8fa3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-11-06 Jeff Hobbs + + * tests/unixInit.test (unixInit-2.10): mark as knownBug + * generic/tclEncoding.c (TclFindEncodings): revert patch from + 2003-11-05. It wasn't valid in the sensitive startup init phase + and broke Windows from working at all. + 2003-11-07 Daniel Steffen * macosx/Makefile: optimized builds define NDEBUG to turn off diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 87f4669..7f27ab8 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.1 2003/11/05 20:52:39 dgp Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.2 2003/11/06 21:47:33 hobbs Exp $ */ #include "tclInt.h" @@ -2801,7 +2801,6 @@ unilen(src) } return (char *) p - src; } - /* *------------------------------------------------------------------------- @@ -2827,9 +2826,6 @@ TclFindEncodings(argv0) CONST char *argv0; /* Name of executable from argv[0] to main() * in native multi-byte encoding. */ { - Tcl_Obj *pathPtr, *normPtr; - Tcl_DString libPath, buffer; - if (encodingsInitialized == 0) { /* * Double check inside the mutex. There may be calls @@ -2838,6 +2834,10 @@ TclFindEncodings(argv0) TclpInitLock(); if (encodingsInitialized == 0) { + char *native; + Tcl_Obj *pathPtr; + Tcl_DString libPath, buffer; + /* * Have to set this bit here to avoid deadlock with the * routines below us that call into TclInitSubsystems. @@ -2845,13 +2845,8 @@ TclFindEncodings(argv0) encodingsInitialized = 1; - pathPtr = Tcl_NewStringObj(TclpFindExecutable(argv0), -1); - Tcl_IncrRefCount(pathPtr); - normPtr = Tcl_FSGetNormalizedPath(NULL, pathPtr); - Tcl_IncrRefCount(normPtr); - Tcl_DecrRefCount(pathPtr); - TclpInitLibraryPath(Tcl_GetString(normPtr)); - Tcl_DecrRefCount(normPtr); + native = TclpFindExecutable(argv0); + TclpInitLibraryPath(native); /* * The library path was set in the TclpInitLibraryPath routine. @@ -2885,4 +2880,3 @@ TclFindEncodings(argv0) TclpInitUnlock(); } } - diff --git a/tests/unixInit.test b/tests/unixInit.test index 4c1b37e..cf2b1b2 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.1 2003/11/05 20:52:39 dgp Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.2 2003/11/06 21:47:33 hobbs Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -268,7 +268,7 @@ test unixInit-2.9 {TclpInitLibraryPath: paths relative to executable} {unix noSp /tmp/library /library /tcl[info patchlevel]/library] test unixInit-2.10 {TclpInitLibraryPath: executable relative} -constraints { - unixOnly stdio + unixOnly stdio knownBug } -setup { set tmpDir [makeDirectory tmp] set sparklyDir [makeDirectory sparkly $tmpDir] @@ -281,6 +281,7 @@ test unixInit-2.10 {TclpInitLibraryPath: executable relative} -constraints { cd $libDir } -body { # Checking for Bug 832657 + # The proposed patch in TclFindEncodings was not correct x-platform. lrange [getlibpath [file join .. bin tcltest]] 2 3 } -cleanup { cd $saveDir @@ -337,7 +338,7 @@ test unixInit-3.2 {TclpSetInitialEncodings} {unixOnly stdio} { } expr {[lsearch -exact $validEncodings $enc] < 0} } 0 - + test unixInit-4.1 {TclpSetVariables} {unixOnly} { # just make sure they exist @@ -361,4 +362,3 @@ catch {unset env(LANG)} catch {set env(LANG) $oldlang} ::tcltest::cleanupTests return - -- cgit v0.12 From 32aba931e84dea723663e8d37fa621e161e4b50e Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 10 Nov 2003 20:32:32 +0000 Subject: * tests/unixInit.test (unixInit-2.10): re-enabled. * unix/tclUnixInit.c (TclpInitLibraryPath): Alternative fix * win/tclWinInit.c (TclpInitLibraryPath): for [Bug 832657] that should not run afoul of startup constraints. --- ChangeLog | 7 +++++++ tests/unixInit.test | 4 ++-- unix/tclUnixInit.c | 23 +++++++++++++++++++++-- win/tclWinInit.c | 25 ++++++++++++++++++++++--- 4 files changed, 52 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1fe8fa3..09e18cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-11-10 Don Porter + + * tests/unixInit.test (unixInit-2.10): re-enabled. + * unix/tclUnixInit.c (TclpInitLibraryPath): Alternative fix + * win/tclWinInit.c (TclpInitLibraryPath): for [Bug 832657] + that should not run afoul of startup constraints. + 2003-11-06 Jeff Hobbs * tests/unixInit.test (unixInit-2.10): mark as knownBug diff --git a/tests/unixInit.test b/tests/unixInit.test index cf2b1b2..f7b5a39 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.2 2003/11/06 21:47:33 hobbs Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.3 2003/11/10 20:32:34 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -268,7 +268,7 @@ test unixInit-2.9 {TclpInitLibraryPath: paths relative to executable} {unix noSp /tmp/library /library /tcl[info patchlevel]/library] test unixInit-2.10 {TclpInitLibraryPath: executable relative} -constraints { - unixOnly stdio knownBug + unixOnly stdio } -setup { set tmpDir [makeDirectory tmp] set sparklyDir [makeDirectory sparkly $tmpDir] diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index ae3d2a3..ff033ee 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.1 2003/05/13 08:41:26 das Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.2 2003/11/10 20:32:34 dgp Exp $ */ #if defined(HAVE_CFBUNDLE) @@ -338,7 +338,25 @@ CONST char *path; /* Path to the executable in native */ if (path != NULL) { - Tcl_SplitPath(path, &pathc, &pathv); + int i, origc; + CONST char **origv; + + Tcl_SplitPath(path, &origc, &origv); + pathc = 0; + pathv = (CONST char **) ckalloc((unsigned int)(origc * sizeof(char *))); + for (i=0; i< origc; i++) { + if (origv[i][0] == '.') { + if (strcmp(origv[i], ".") == 0) { + /* do nothing */ + } else if (strcmp(origv[i], "..") == 0) { + pathc--; + } else { + pathv[pathc++] = origv[i]; + } + } else { + pathv[pathc++] = origv[i]; + } + } if (pathc > 2) { str = pathv[pathc - 2]; pathv[pathc - 2] = installLib; @@ -393,6 +411,7 @@ CONST char *path; /* Path to the executable in native Tcl_ListObjAppendElement(NULL, pathPtr, objPtr); Tcl_DStringFree(&ds); } + ckfree((char *) origv); ckfree((char *) pathv); } diff --git a/win/tclWinInit.c b/win/tclWinInit.c index f3f0865..2a87937 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.1 2003/08/06 23:50:06 hobbs Exp $ + * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.2 2003/11/10 20:32:34 dgp Exp $ */ #include "tclWinInt.h" @@ -197,7 +197,7 @@ TclpInitLibraryPath(path) */ sprintf(installLib, "lib/tcl%s", TCL_VERSION); - sprintf(developLib, "../tcl%s/library", TCL_PATCH_LEVEL); + sprintf(developLib, "tcl%s/library", TCL_PATCH_LEVEL); /* * Look for the library relative to default encoding dir. @@ -252,7 +252,25 @@ TclpInitLibraryPath(path) */ if (path != NULL) { - Tcl_SplitPath(path, &pathc, &pathv); + int i, origc; + CONST char **origv; + + Tcl_SplitPath(path, &origc, &origv); + pathc = 0; + pathv = (CONST char **) ckalloc((unsigned int)(origc * sizeof(char *))); + for (i=0; i< origc; i++) { + if (origv[i][0] == '.') { + if (strcmp(origv[i], ".") == 0) { + /* do nothing */ + } else if (strcmp(origv[i], "..") == 0) { + pathc--; + } else { + pathv[pathc++] = origv[i]; + } + } else { + pathv[pathc++] = origv[i]; + } + } if (pathc > 2) { str = pathv[pathc - 2]; pathv[pathc - 2] = installLib; @@ -307,6 +325,7 @@ TclpInitLibraryPath(path) Tcl_ListObjAppendElement(NULL, pathPtr, objPtr); Tcl_DStringFree(&ds); } + ckfree((char *) origv); ckfree((char *) pathv); } -- cgit v0.12 From d081bdaefdd5c97a2957145ea3f0ed540aa55942 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 10 Nov 2003 22:42:06 +0000 Subject: * library/dde/pkgIndex.tcl: Added safeguards so that registry * library/reg/pkgIndex.tcl: and dde packages are not offered * win/tclWinDde.c: on non-Windows platforms. Bumped to * win/tclWinReg.c: registry 1.1.3 and dde 1.2.2. --- ChangeLog | 5 +++++ library/dde/pkgIndex.tcl | 5 +++-- library/reg/pkgIndex.tcl | 5 +++-- win/tclWinDde.c | 4 ++-- win/tclWinReg.c | 4 ++-- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 09e18cc..1eeecfa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,11 @@ * win/tclWinInit.c (TclpInitLibraryPath): for [Bug 832657] that should not run afoul of startup constraints. + * library/dde/pkgIndex.tcl: Added safeguards so that registry + * library/reg/pkgIndex.tcl: and dde packages are not offered + * win/tclWinDde.c: on non-Windows platforms. Bumped to + * win/tclWinReg.c: registry 1.1.3 and dde 1.2.2. + 2003-11-06 Jeff Hobbs * tests/unixInit.test (unixInit-2.10): mark as knownBug diff --git a/library/dde/pkgIndex.tcl b/library/dde/pkgIndex.tcl index 49201f4..b293134 100644 --- a/library/dde/pkgIndex.tcl +++ b/library/dde/pkgIndex.tcl @@ -1,6 +1,7 @@ if {![package vsatisfies [package provide Tcl] 8]} {return} +if {[string compare $::tcl_platform(platform) windows]} {return} if {[info exists ::tcl_platform(debug)]} { - package ifneeded dde 1.2.1 [list load [file join $dir tcldde12g.dll] dde] + package ifneeded dde 1.2.2 [list load [file join $dir tcldde12g.dll] dde] } else { - package ifneeded dde 1.2.1 [list load [file join $dir tcldde12.dll] dde] + package ifneeded dde 1.2.2 [list load [file join $dir tcldde12.dll] dde] } diff --git a/library/reg/pkgIndex.tcl b/library/reg/pkgIndex.tcl index ad9a54b..55775f2 100755 --- a/library/reg/pkgIndex.tcl +++ b/library/reg/pkgIndex.tcl @@ -1,8 +1,9 @@ if {![package vsatisfies [package provide Tcl] 8]} {return} +if {[string compare $::tcl_platform(platform) windows]} {return} if {[info exists ::tcl_platform(debug)]} { - package ifneeded registry 1.1.2 \ + package ifneeded registry 1.1.3 \ [list load [file join $dir tclreg11g.dll] registry] } else { - package ifneeded registry 1.1.2 \ + package ifneeded registry 1.1.3 \ [list load [file join $dir tclreg11.dll] registry] } diff --git a/win/tclWinDde.c b/win/tclWinDde.c index 8244b99..e8bf139 100644 --- a/win/tclWinDde.c +++ b/win/tclWinDde.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinDde.c,v 1.13 2003/03/03 17:12:48 dgp Exp $ + * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.1 2003/11/10 22:42:07 dgp Exp $ */ #include "tclPort.h" @@ -69,7 +69,7 @@ static DWORD ddeInstance; /* The application instance handle given * to us by DdeInitialize. */ static int ddeIsServer = 0; -#define TCL_DDE_VERSION "1.2.1" +#define TCL_DDE_VERSION "1.2.2" #define TCL_DDE_PACKAGE_NAME "dde" #define TCL_DDE_SERVICE_NAME "TclEval" diff --git a/win/tclWinReg.c b/win/tclWinReg.c index 75fc12b..424cb44 100644 --- a/win/tclWinReg.c +++ b/win/tclWinReg.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.2 2003/07/23 20:57:57 patthoyts Exp $ + * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.3 2003/11/10 22:42:07 dgp Exp $ */ #include @@ -228,7 +228,7 @@ Registry_Init( } Tcl_CreateObjCommand(interp, "registry", RegistryObjCmd, NULL, NULL); - return Tcl_PkgProvide(interp, "registry", "1.1.2"); + return Tcl_PkgProvide(interp, "registry", "1.1.3"); } /* -- cgit v0.12 From 97930d8cb1af6c7eb851a9ce66f9f16b6a596000 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 12 Nov 2003 01:05:34 +0000 Subject: improve AIX --enable-64bit handling --- ChangeLog | 5 ++++ unix/configure | 80 +++++++++++++++++++++++++++++----------------------------- unix/tcl.m4 | 74 ++++++++++++++++++++++++++--------------------------- 3 files changed, 82 insertions(+), 77 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1eeecfa..1cf140c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-11-11 Jeff Hobbs + + * unix/configure: + * unix/tcl.m4: improve AIX --enable-64bit handling + 2003-11-10 Don Porter * tests/unixInit.test (unixInit-2.10): re-enabled. diff --git a/unix/configure b/unix/configure index 26656fa..0131989 100755 --- a/unix/configure +++ b/unix/configure @@ -5621,30 +5621,10 @@ fi LIBS="$LIBS -lc" # AIX-5 uses ELF style dynamic libraries SHLIB_CFLAGS="" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - if test "`uname -m`" = "ia64" ; then - # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC - SHLIB_LD="/usr/ccs/bin/ld -G -z text" - # AIX-5 has dl* in libc.so - DL_LIBS="" - if test "$GCC" = "yes" ; then - CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' - else - CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' - fi - LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' - else - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - TCL_NEEDS_EXP_FILE=1 - TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' - fi - # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" LDFLAGS="" @@ -5664,6 +5644,26 @@ fi SHLIB_LD_FLAGS="-b64" fi fi + + if test "`uname -m`" = "ia64" ; then + # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC + SHLIB_LD="/usr/ccs/bin/ld -G -z text" + # AIX-5 has dl* in libc.so + DL_LIBS="" + if test "$GCC" = "yes" ; then + CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + else + CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' + fi + LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' + else + SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + TCL_NEEDS_EXP_FILE=1 + TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' + fi ;; AIX-*) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then @@ -5675,7 +5675,6 @@ fi fi LIBS="$LIBS -lc" SHLIB_CFLAGS="" - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" @@ -5693,6 +5692,21 @@ fi DL_LIBS="-lld" fi + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 + else + do64bit_ok=yes + EXTRA_CFLAGS="-q64" + LDFLAGS="-q64" + RANLIB="${RANLIB} -X64" + AR="${AR} -X64" + SHLIB_LD_FLAGS="-b64" + fi + fi + SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" + # On AIX <=v4 systems, libbsd.a has to be linked in to support # non-blocking file IO. This library has to be linked in after # the MATH_LIBS or it breaks the pow() function. The way to @@ -5706,7 +5720,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:5710: checking for gettimeofday in -lbsd" >&5 +echo "configure:5724: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5714,7 +5728,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5753,20 +5767,6 @@ fi EOF fi - - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 - else - do64bit_ok=yes - EXTRA_CFLAGS="-q64" - LDFLAGS="-q64" - RANLIB="${RANLIB} -X64" - AR="${AR} -X64" - SHLIB_LD_FLAGS="-b64" - fi - fi ;; BSD/OS-2.1*|BSD/OS-3*) SHLIB_CFLAGS="" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 53a4615..5b4ed48 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -832,30 +832,10 @@ dnl AC_CHECK_TOOL(AR, ar) LIBS="$LIBS -lc" # AIX-5 uses ELF style dynamic libraries SHLIB_CFLAGS="" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - if test "`uname -m`" = "ia64" ; then - # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC - SHLIB_LD="/usr/ccs/bin/ld -G -z text" - # AIX-5 has dl* in libc.so - DL_LIBS="" - if test "$GCC" = "yes" ; then - CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' - else - CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' - fi - LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' - else - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - TCL_NEEDS_EXP_FILE=1 - TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' - fi - # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" LDFLAGS="" @@ -875,6 +855,26 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD_FLAGS="-b64" fi fi + + if test "`uname -m`" = "ia64" ; then + # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC + SHLIB_LD="/usr/ccs/bin/ld -G -z text" + # AIX-5 has dl* in libc.so + DL_LIBS="" + if test "$GCC" = "yes" ; then + CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + else + CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' + fi + LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' + else + SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + TCL_NEEDS_EXP_FILE=1 + TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' + fi ;; AIX-*) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then @@ -886,7 +886,6 @@ dnl AC_CHECK_TOOL(AR, ar) fi LIBS="$LIBS -lc" SHLIB_CFLAGS="" - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" @@ -904,6 +903,21 @@ dnl AC_CHECK_TOOL(AR, ar) DL_LIBS="-lld" fi + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + AC_MSG_WARN("64bit mode not supported with GCC on $system") + else + do64bit_ok=yes + EXTRA_CFLAGS="-q64" + LDFLAGS="-q64" + RANLIB="${RANLIB} -X64" + AR="${AR} -X64" + SHLIB_LD_FLAGS="-b64" + fi + fi + SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" + # On AIX <=v4 systems, libbsd.a has to be linked in to support # non-blocking file IO. This library has to be linked in after # the MATH_LIBS or it breaks the pow() function. The way to @@ -921,20 +935,6 @@ dnl AC_CHECK_TOOL(AR, ar) MATH_LIBS="$MATH_LIBS -lbsd" AC_DEFINE(USE_DELTA_FOR_TZ) fi - - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - AC_MSG_WARN("64bit mode not supported with GCC on $system") - else - do64bit_ok=yes - EXTRA_CFLAGS="-q64" - LDFLAGS="-q64" - RANLIB="${RANLIB} -X64" - AR="${AR} -X64" - SHLIB_LD_FLAGS="-b64" - fi - fi ;; BSD/OS-2.1*|BSD/OS-3*) SHLIB_CFLAGS="" -- cgit v0.12 From 8a337db141701521a51b0fbdeed2ec76f4557129 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 12 Nov 2003 17:29:09 +0000 Subject: * tests/cmdMZ.test (cmdMZ-1.4): change to nonPortable as more systems are using permissions caching, and this isn't really a Tcl controlled issue. --- ChangeLog | 6 ++++++ tests/cmdMZ.test | 12 +++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1cf140c..822adbf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-11-12 Jeff Hobbs + + * tests/cmdMZ.test (cmdMZ-1.4): change to nonPortable as more + systems are using permissions caching, and this isn't really a Tcl + controlled issue. + 2003-11-11 Jeff Hobbs * unix/configure: diff --git a/tests/cmdMZ.test b/tests/cmdMZ.test index ac2f72d..8835764 100644 --- a/tests/cmdMZ.test +++ b/tests/cmdMZ.test @@ -11,14 +11,12 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: cmdMZ.test,v 1.13.2.1 2003/10/06 13:55:37 dgp Exp $ +# RCS: @(#) $Id: cmdMZ.test,v 1.13.2.2 2003/11/12 17:29:10 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import -force ::tcltest::* } -set tcltest::testConstraints(nonLinuxOnly) \ - [expr {![string equal Linux $tcl_platform(os)]}] # Tcl_PwdObjCmd @@ -31,10 +29,10 @@ test cmdMZ-1.2 {Tcl_PwdObjCmd: simple pwd} { test cmdMZ-1.3 {Tcl_PwdObjCmd: simple pwd} { expr [string length pwd]>0 } 1 -test cmdMZ-1.4 {Tcl_PwdObjCmd: failure} {unixOnly nonLinuxOnly} { - # We don't want this test to run on Linux because they do a - # permissions caching trick which causes this to fail. The - # caching is incorrect, but we have no control over that. +test cmdMZ-1.4 {Tcl_PwdObjCmd: failure} {unixOnly nonPortable} { + # This test fails on various unix platforms (eg Linux) where + # permissions caching causes this to fail. The caching is strictly + # incorrect, but we have no control over that. set foodir [file join [temporaryDirectory] foo] file delete -force $foodir file mkdir $foodir -- cgit v0.12 From fa21483afb1b8a95e33287eaa28f20f0bb319d40 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 17 Nov 2003 18:12:07 +0000 Subject: * generic/regcomp.c: Backported regexp bug fixes and tests. Thanks * generic/tclTest.c: to Pavel Goran and Vince Darley. * tests/reg.test: [Bugs 230589, 504785, 505048, 703709, 840258] --- ChangeLog | 6 +++ generic/regcomp.c | 8 +++- generic/tclTest.c | 26 +++++++++-- tests/reg.test | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 170 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 822adbf..b650269 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-11-17 Don Porter + + * generic/regcomp.c: Backported regexp bug fixes and tests. Thanks + * generic/tclTest.c: to Pavel Goran and Vince Darley. + * tests/reg.test: [Bugs 230589, 504785, 505048, 703709, 840258] + 2003-11-12 Jeff Hobbs * tests/cmdMZ.test (cmdMZ-1.4): change to nonPortable as more diff --git a/generic/regcomp.c b/generic/regcomp.c index 4aba629..2a7fd6e 100644 --- a/generic/regcomp.c +++ b/generic/regcomp.c @@ -553,8 +553,12 @@ struct nfa *nfa; if (b->from != pre) break; if (b != NULL) { /* must be split */ - s->tmp = slist; - slist = s; + if (s->tmp == NULL) { /* if not already in the list */ + /* (fixes bugs 505048, 230589, */ + /* 840258, 504785) */ + s->tmp = slist; + slist = s; + } } } diff --git a/generic/tclTest.c b/generic/tclTest.c index 3a23941..835c602 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.4 2003/10/31 13:33:40 vincentdarley Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.5 2003/11/17 18:12:08 dgp Exp $ */ #define TCL_TEST @@ -3339,12 +3339,26 @@ TestregexpObjCmd(dummy, interp, objc, objv) char *varName; CONST char *value; int start, end; - char info[TCL_INTEGER_SPACE * 2]; + char resinfo[TCL_INTEGER_SPACE * 2]; varName = Tcl_GetString(objv[2]); TclRegExpRangeUniChar(regExpr, -1, &start, &end); - sprintf(info, "%d %d", start, end-1); - value = Tcl_SetVar(interp, varName, info, 0); + sprintf(resinfo, "%d %d", start, end-1); + value = Tcl_SetVar(interp, varName, resinfo, 0); + if (value == NULL) { + Tcl_AppendResult(interp, "couldn't set variable \"", + varName, "\"", (char *) NULL); + return TCL_ERROR; + } + } else if (cflags & TCL_REG_CANMATCH) { + char *varName; + CONST char *value; + char resinfo[TCL_INTEGER_SPACE * 2]; + + Tcl_RegExpGetInfo(regExpr, &info); + varName = Tcl_GetString(objv[2]); + sprintf(resinfo, "%d", info.extendStart); + value = Tcl_SetVar(interp, varName, resinfo, 0); if (value == NULL) { Tcl_AppendResult(interp, "couldn't set variable \"", varName, "\"", (char *) NULL); @@ -3463,6 +3477,10 @@ TestregexpXflags(string, length, cflagsPtr, eflagsPtr) cflags &= ~REG_ADVANCED; break; } + case 'c': { + cflags |= TCL_REG_CANMATCH; + break; + } case 'e': { cflags &= ~REG_ADVANCED; cflags |= REG_EXTENDED; diff --git a/tests/reg.test b/tests/reg.test index a4f5bea..66c3768 100644 --- a/tests/reg.test +++ b/tests/reg.test @@ -9,7 +9,7 @@ # # Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. # -# RCS: @(#) $Id: reg.test,v 1.16.2.1 2003/10/06 14:30:06 dgp Exp $ +# RCS: @(#) $Id: reg.test,v 1.16.2.2 2003/11/17 18:12:09 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -995,6 +995,141 @@ test reg-31.1 {[[:xdigit:]] behaves correctly when followed by [[:space:]]} { # Code used to produce {1 2:::DebugWin32 2 :::DebugWin32} !!! } {1 2 2 {}} +test reg-32.1 {canmatch functionality -- at end} { + set pat {blah} + set line "asd asd" + # can match at the final d, if '%' follows + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 7} + +test reg-32.2 {canmatch functionality -- at end} { + set pat {s%$} + set line "asd asd" + # can only match after the end of the string + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 7} + +test reg-32.3 {canmatch functionality -- not last char} { + set pat {[^d]%$} + set line "asd asd" + # can only match after the end of the string + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 7} + +test reg-32.3.1 {canmatch functionality -- no match} { + set pat {\Zx} + set line "asd asd" + # can match the last char, if followed by x + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 -1} + +test reg-32.4 {canmatch functionality -- last char} {knownBug} { + set pat {.x} + set line "asd asd" + # can match the last char, if followed by x + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 6} + +test reg-32.4.1 {canmatch functionality -- last char} {knownBug} { + set pat {.x$} + set line "asd asd" + # can match the last char, if followed by x + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 6} + +test reg-32.5 {canmatch functionality -- last char} {knownBug} { + set pat {.[^d]x$} + set line "asd asd" + # can match the last char, if followed by not-d and x. + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 6} + +test reg-32.6 {canmatch functionality -- last char} {knownBug} { + set pat {[^a]%[^\r\n]*$} + set line "asd asd" + # can match at the final d, if '%' follows + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 6} + +test reg-32.7 {canmatch functionality -- last char} {knownBug} { + set pat {[^a]%$} + set line "asd asd" + # can match at the final d, if '%' follows + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 6} + +test reg-32.8 {canmatch functionality -- last char} {knownBug} { + set pat {[^x]%$} + set line "asd asd" + # can match at the final d, if '%' follows + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 6} + +test reg-32.9 {canmatch functionality -- more complex case} {knownBug} { + set pat {((\B\B|\Bh+line)[ \t]*|[^\B]%[^\r\n]*)$} + set line "asd asd" + # can match at the final d, if '%' follows + set res [testregexp -xflags -- c $pat $line resvar] + lappend res $resvar +} {0 6} + +# Tests reg-33.*: Checks for bug fixes + +test reg-33.1 {Bug 230589} { + regexp {[ ]*(^|[^%])%V} "*%V2" m s +} 1 + +test reg-33.2 {Bug 504785} { + regexp -inline {([^_.]*)([^.]*)\.(..)(.).*} bbcos_001_c01.q1la +} {bbcos_001_c01.q1la bbcos _001_c01 q1 l} + +test reg-33.3 {Bug 505048} { + regexp {\A\s*[^<]*\s*<([^>]+)>} a +} 1 + +test reg-33.4 {Bug 505048} { + regexp {\A\s*([^b]*)b} ab +} 1 + +test reg-33.5 {Bug 505048} { + regexp {\A\s*[^b]*(b)} ab +} 1 + +test reg-33.6 {Bug 505048} { + regexp {\A(\s*)[^b]*(b)} ab +} 1 + +test reg-33.7 {Bug 505048} { + regexp {\A\s*[^b]*b} ab +} 1 + +test reg-33.8 {Bug 505048} { + regexp -inline {\A\s*[^b]*b} ab +} ab + +test reg-33.9 {Bug 505048} { + regexp -indices -inline {\A\s*[^b]*b} ab +} {{0 1}} + +test reg-33.10 {Bug 840258} { + regsub {(^|\n)+\.*b} \n.b {} tmp +} 1 + +test reg-33.11 {Bug 840258} { + regsub {(^|[\n\r]+)\.*\?<.*?(\n|\r)+} \ + "TQ\r\n.?<5000267>Test already stopped\r\n" {} tmp +} 1 + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 49d7731ac71dff31988ed094ce4c7c72dc5353f1 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 18 Nov 2003 23:35:52 +0000 Subject: updated for 8.4.5 release --- ChangeLog | 10 ++++++++-- changes | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index b650269..0cc9bae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-11-18 Jeff Hobbs + + *** 8.4.5 TAGGED FOR RELEASE *** + + * changes: updated for 8.4.5 release + 2003-11-17 Don Porter * generic/regcomp.c: Backported regexp bug fixes and tests. Thanks @@ -161,8 +167,8 @@ * tests/regexp.test: Matched [makeFile] with [removeFile]. * tests/regexpComp.test: [Bug 675652] - * tests/fCmd.test (fCmd-8.2): Test only that tilde-substitution - happens, not for any particular result. [Bug 685991] + * tests/fCmd.test (fCmd-8.2): Test only that tilde-substitution + happens, not for any particular result. [Bug 685991] * unix/tcl.m4 (SC_PATH_TCLCONFIG): Corrected search path so that alpha and beta releases of Tcl are not favored. [Bug 608698] diff --git a/changes b/changes index df75e57..829ddc4 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.3 2003/07/21 22:12:54 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.79.2.4 2003/11/18 23:35:53 hobbs Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5880,3 +5880,49 @@ Improved documentation, new tests, and some code cleanup. 763312, 769895, 771539, 771840, 771947, 771949, 772333] --- Released 8.4.4, July 22, 2003 --- See ChangeLog for details --- + +2003-07-23 (bug fix)[775976] fix registry compilation for VC7. + +2003-08-05 (enhancement)[781585] Use Tcl_ResetResult in bytecodes to +prevent potential costly Tcl_Obj duplication. + +2003-08-06 (bug fix)[781609] prevent non-Windows platforms from trying to +use the registry package inside msgcat. + +2003-08-27 (bug fix)[411825] Fix TclNeedSpace to handle non-breaking space +(\u00A0) and backslash escapes correctly. + +2003-09-01 (bug fix)[788780] Fix thread-safety issues in filesystem records. + +2003-09-19 (bug fix)[804681] Protect ::errorInfo and ::errorCode traces +from corrupting stack. + +2003-09-23 (bug fix)[218871] Fix handling of glob-sensitive chars in +auto_load and auto_import. + +2003-10-03 (bug fix)[811483] Fixed refcount management for command and +execution traces. + +2003-10-04 (bug fix)[789040] Fixed exec command.com error for Win9x. + +2003-10-06 (bug fix)[767834, 813273] Fixed volumerelative file +normalization and 'file join' inconsistencies. + +2003-10-08 (bug fix)[769812] Fix Tcl_NumUtfChars string length calculation +when negative parameter is given. + +2003-10-22 (bug fix)[800106] Handle VFS mountpoints inside glob'd dirs. + +2003-10-22 (bug fix)[599468] Watch for FD_CLOSE too on Windows when +asked for writable events by the generic layer. + +2003-10-23 (bug fix)[813606] Detect OS X pipes correctly. + +2003-11-05 (bug fix)[832657] Allow .. in libpath initialization. + +2003-11-11 (bug fix) Improve AIX-64 build configuration. + +2003-11-17 (bug fix)[230589, 504785, 505048, 703709, 840258] fixed to +various odd regexp "can't happen" bugs. + +--- Released 8.4.5, November 20, 2003 --- See ChangeLog for details --- -- cgit v0.12 From 9285e260b4b455996aedbde9d1bda9c2bceca579 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 19 Nov 2003 16:29:30 +0000 Subject: typo correction --- changes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changes b/changes index 829ddc4..e32af6c 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.4 2003/11/18 23:35:53 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.79.2.5 2003/11/19 16:29:30 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5922,7 +5922,7 @@ asked for writable events by the generic layer. 2003-11-11 (bug fix) Improve AIX-64 build configuration. -2003-11-17 (bug fix)[230589, 504785, 505048, 703709, 840258] fixed to +2003-11-17 (bug fix)[230589, 504785, 505048, 703709, 840258] fixes to various odd regexp "can't happen" bugs. --- Released 8.4.5, November 20, 2003 --- See ChangeLog for details --- -- cgit v0.12 From baea4220439866995f3c1a6cf225b0fe75bfb4bc Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Thu, 20 Nov 2003 19:05:43 +0000 Subject: fix to 'cd' infinite recursion bug on Windows --- ChangeLog | 6 ++++++ generic/tclIOUtil.c | 17 ++++++++++++----- tests/winFCmd.test | 18 +++++++++++++----- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0cc9bae..8da3d2f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-11-20 Vince Darley + + * generic/tclIOUtil.c: + * tests/winFCmd.test: fix to [Bug 845778] - Infinite recursion + on [cd] (Windows only bug). + 2003-11-18 Jeff Hobbs *** 8.4.5 TAGGED FOR RELEASE *** diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 2da3666..de12596 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.11 2003/10/22 22:35:46 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.12 2003/11/20 19:05:44 vincentdarley Exp $ */ #include "tclInt.h" @@ -5572,15 +5572,22 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) } if (drive[0] == drive_c) { absolutePath = Tcl_DuplicateObj(useThisCwd); - Tcl_IncrRefCount(absolutePath); - Tcl_AppendToObj(absolutePath, "/", 1); - Tcl_AppendToObj(absolutePath, path+2, -1); /* We have a refCount on the cwd */ } else { - /* We just can't handle it correctly here */ Tcl_DecrRefCount(useThisCwd); useThisCwd = NULL; + /* + * The path is not in the current drive, but + * is volume-relative. The way Tcl 8.3 handles + * this is that it treats such a path as + * relative to the root of the drive. We + * therefore behave the same here. + */ + absolutePath = Tcl_NewStringObj(path, 2); } + Tcl_IncrRefCount(absolutePath); + Tcl_AppendToObj(absolutePath, "/", 1); + Tcl_AppendToObj(absolutePath, path+2, -1); } #endif /* __WIN32__ */ } diff --git a/tests/winFCmd.test b/tests/winFCmd.test index 58d6f67..be2cc85 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.20.2.1 2003/10/03 17:25:22 vincentdarley Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.20.2.2 2003/11/20 19:05:45 vincentdarley Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -1002,12 +1002,20 @@ test winFCmd-16.8 {Windows file normalization} {pcOnly} { test winFCmd-16.9 {Windows file normalization} {pcOnly} { file norm /bar/foo } "${d}:/bar/foo" -test winFCmd-16.10 {Windows file normalization} {pcOnly knownBug} { - if {$d eq "C"} { set dd "D" } else { set dd "C" } +test winFCmd-16.10 {Windows file normalization} {pcOnly} { file norm ${dd}:foo -} {Tcl doesn't know about a drive-specific cwd} +} "${dd}:/foo" +test winFCmd-16.11 {Windows file normalization} {pcOnly cdrom} { + cd ${d}: + cd $cdrom + cd ${d}: + cd $cdrom + # Must not crash + set result "no crash" +} {no crash} -unset d pwd +cd $pwd +unset d dd pwd # This block of code used to occur after the "return" call, so I'm # commenting it out and assuming that this code is still under construction. -- cgit v0.12 From 6f505b809fd5917dcd361127daa178c70946135c Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Thu, 20 Nov 2003 19:19:00 +0000 Subject: * generic/tclVar.c: fix flag bit collision between LOOKUP_FOR_UPVAR and TCL_PARSE_PART1 (deprecated) [Bug 835020] --- ChangeLog | 5 +++++ generic/tclVar.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8da3d2f..5746f87 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-11-20 Miguel Sofer + + * generic/tclVar.c: fix flag bit collision between + LOOKUP_FOR_UPVAR and TCL_PARSE_PART1 (deprecated) [Bug 835020] + 2003-11-20 Vince Darley * generic/tclIOUtil.c: diff --git a/generic/tclVar.c b/generic/tclVar.c index a46b2d3..80089b6 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.3 2003/05/12 17:31:51 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.4 2003/11/20 19:19:03 msofer Exp $ */ #include "tclInt.h" @@ -616,7 +616,7 @@ TclObjLookupVar(interp, part1Ptr, part2, flags, msg, createPart1, createPart2, * namespace; never follow the second (global) resolution path * - Bug #631741 - do not use special namespace or interp resolvers */ -#define LOOKUP_FOR_UPVAR 0x400 +#define LOOKUP_FOR_UPVAR 0x40000 /* *---------------------------------------------------------------------- -- cgit v0.12 From c453280968357ec32f98ecd6be97b5d7e58c4098 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 21 Nov 2003 00:18:51 +0000 Subject: moved 8.4.5 tag --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5746f87..73d435d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2003-11-20 Miguel Sofer + *** 8.4.5 TAGGED FOR RELEASE *** + * generic/tclVar.c: fix flag bit collision between LOOKUP_FOR_UPVAR and TCL_PARSE_PART1 (deprecated) [Bug 835020] @@ -11,8 +13,6 @@ 2003-11-18 Jeff Hobbs - *** 8.4.5 TAGGED FOR RELEASE *** - * changes: updated for 8.4.5 release 2003-11-17 Don Porter -- cgit v0.12 From 90ca0a1e90bb0be97e3b63c92c6b85c4f64a6f6a Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 21 Nov 2003 16:19:15 +0000 Subject: * tests/windFCmd.test (winFCmd-16.10): Corrected failure to initialize variable $dd that caused test suite failure. --- ChangeLog | 5 +++++ tests/winFCmd.test | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 73d435d..4bd5086 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-11-21 Don Porter + + * tests/windFCmd.test (winFCmd-16.10): Corrected failure to + initialize variable $dd that caused test suite failure. + 2003-11-20 Miguel Sofer *** 8.4.5 TAGGED FOR RELEASE *** diff --git a/tests/winFCmd.test b/tests/winFCmd.test index be2cc85..78d85c9 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.20.2.2 2003/11/20 19:05:45 vincentdarley Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.20.2.3 2003/11/21 16:19:15 dgp Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -1002,6 +1002,7 @@ test winFCmd-16.8 {Windows file normalization} {pcOnly} { test winFCmd-16.9 {Windows file normalization} {pcOnly} { file norm /bar/foo } "${d}:/bar/foo" +if {$d eq "C"} { set dd "D" } else { set dd "C" } test winFCmd-16.10 {Windows file normalization} {pcOnly} { file norm ${dd}:foo } "${dd}:/foo" -- cgit v0.12 From 984b37018da21e9a5d5f716e9677c6a67ac8f4cf Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 21 Nov 2003 18:18:34 +0000 Subject: moved core-8-4-5 tag to include las test correction --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4bd5086..a958e96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,12 @@ 2003-11-21 Don Porter + *** 8.4.5 TAGGED FOR RELEASE *** + * tests/windFCmd.test (winFCmd-16.10): Corrected failure to initialize variable $dd that caused test suite failure. 2003-11-20 Miguel Sofer - *** 8.4.5 TAGGED FOR RELEASE *** - * generic/tclVar.c: fix flag bit collision between LOOKUP_FOR_UPVAR and TCL_PARSE_PART1 (deprecated) [Bug 835020] -- cgit v0.12 From 481bf0fb0bdd82a1f9b5a287dbe7c06de435804e Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 1 Dec 2003 21:29:32 +0000 Subject: * doc/lset.n: fix typo [Bug 852224] --- ChangeLog | 4 ++++ doc/lset.n | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a958e96..c67aa9b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-12-01 Miguel Sofer + + * doc/lset.n: fix typo [Bug 852224] + 2003-11-21 Don Porter *** 8.4.5 TAGGED FOR RELEASE *** diff --git a/doc/lset.n b/doc/lset.n index 1e7c725..97a9895 100755 --- a/doc/lset.n +++ b/doc/lset.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lset.n,v 1.6 2003/01/23 14:18:33 dkf Exp $ +'\" RCS: @(#) $Id: lset.n,v 1.6.2.1 2003/12/01 21:29:34 msofer Exp $ '\" .so man.macros .TH lset n 8.4 Tcl "Tcl Built-In Commands" @@ -37,7 +37,7 @@ In this case, \fInewValue\fR replaces the old value of the variable \fIvarName\fR. .PP When presented with a single index, the \fBlset\fR command -treats the content of the \fIvarBane\fR variable as a Tcl list. +treats the content of the \fIvarName\fR variable as a Tcl list. It addresses the \fIindex\fR'th element in it (0 refers to the first element of the list). When interpreting the list, \fBlset\fR observes the same rules -- cgit v0.12 From f7f2bef7e0fed017b7ed43ce94cf1154e791188c Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 2 Dec 2003 09:31:54 +0000 Subject: Stop losing references when variables are repeated in [binary scan]. [851747] --- ChangeLog | 7 ++++ generic/tclBinary.c | 111 +++++++++++++++++++++++++++++++++------------------- tests/binary.test | 10 ++++- 3 files changed, 87 insertions(+), 41 deletions(-) diff --git a/ChangeLog b/ChangeLog index c67aa9b..16d6f60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-12-02 Donal K. Fellows + + * generic/tclBinary.c (DeleteScanNumberCache, ScanNumber): Made + the numeric scan-value cache have proper references to the objects + within it so strange patterns of writes won't cause references to + freed objects. [Bug 851747] + 2003-12-01 Miguel Sofer * doc/lset.n: fix typo [Bug 852224] diff --git a/generic/tclBinary.c b/generic/tclBinary.c index 4dfb505..6769b4e 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBinary.c,v 1.13 2003/02/21 21:54:11 dkf Exp $ + * RCS: @(#) $Id: tclBinary.c,v 1.13.2.1 2003/12/02 09:31:54 dkf Exp $ */ #include "tclInt.h" @@ -61,7 +61,8 @@ static Tcl_Obj * ScanNumber _ANSI_ARGS_((unsigned char *buffer, static int SetByteArrayFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); static void UpdateStringOfByteArray _ANSI_ARGS_((Tcl_Obj *listPtr)); - +static void DeleteScanNumberCache _ANSI_ARGS_(( + Tcl_HashTable *numberCachePtr)); /* * The following object type represents an array of bytes. An array of @@ -751,7 +752,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) } default: { errorString = str; - goto badfield; + goto badField; } } } @@ -1050,9 +1051,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) unsigned char *src; if (arg >= objc) { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); goto badIndex; } if (count == BINARY_ALL) { @@ -1086,9 +1085,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) NULL, valuePtr, TCL_LEAVE_ERR_MSG); arg++; if (resultPtr == NULL) { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); Tcl_DecrRefCount(valuePtr); /* unneeded */ return TCL_ERROR; } @@ -1101,9 +1098,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) char *dest; if (arg >= objc) { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); goto badIndex; } if (count == BINARY_ALL) { @@ -1145,9 +1140,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) NULL, valuePtr, TCL_LEAVE_ERR_MSG); arg++; if (resultPtr == NULL) { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); Tcl_DecrRefCount(valuePtr); /* unneeded */ return TCL_ERROR; } @@ -1162,9 +1155,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) static char hexdigit[] = "0123456789abcdef"; if (arg >= objc) { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); goto badIndex; } if (count == BINARY_ALL) { @@ -1206,9 +1197,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) NULL, valuePtr, TCL_LEAVE_ERR_MSG); arg++; if (resultPtr == NULL) { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); Tcl_DecrRefCount(valuePtr); /* unneeded */ return TCL_ERROR; } @@ -1246,9 +1235,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) scanNumber: if (arg >= objc) { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); goto badIndex; } if (count == BINARY_NOCOUNT) { @@ -1281,9 +1268,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) NULL, valuePtr, TCL_LEAVE_ERR_MSG); arg++; if (resultPtr == NULL) { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); Tcl_DecrRefCount(valuePtr); /* unneeded */ return TCL_ERROR; } @@ -1314,9 +1299,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) } case '@': { if (count == BINARY_NOCOUNT) { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); goto badCount; } if ((count == BINARY_ALL) || (count > length)) { @@ -1327,11 +1310,9 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) break; } default: { - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); errorString = str; - goto badfield; + goto badField; } } } @@ -1343,9 +1324,7 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) done: Tcl_ResetResult(interp); Tcl_SetLongObj(Tcl_GetObjResult(interp), arg - 4); - if (numberCachePtr != NULL) { - Tcl_DeleteHashTable(numberCachePtr); - } + DeleteScanNumberCache(numberCachePtr); break; } } @@ -1365,7 +1344,8 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) errorString = "not enough arguments for all format specifiers"; goto error; - badfield: { + badField: + { Tcl_UniChar ch; char buf[TCL_UTF_MAX + 1]; @@ -1667,16 +1647,22 @@ ScanNumber(buffer, type, numberCachePtrPtr) * Note that anyone just using the 'c' conversion * (for bytes) cannot trigger this. */ - Tcl_DeleteHashTable(tablePtr); + DeleteScanNumberCache(tablePtr); *numberCachePtrPtr = NULL; return Tcl_NewLongObj(value); } else { register Tcl_Obj *objPtr = Tcl_NewLongObj(value); - /* Don't need to fiddle with refcount... */ + + Tcl_IncrRefCount(objPtr); Tcl_SetHashValue(hPtr, (ClientData) objPtr); return objPtr; } } + + /* + * Do not cache wide values; they are already too large to + * use as keys. + */ case 'w': uwvalue = ((Tcl_WideUInt) buffer[0]) | (((Tcl_WideUInt) buffer[1]) << 8) @@ -1697,6 +1683,12 @@ ScanNumber(buffer, type, numberCachePtrPtr) | (((Tcl_WideUInt) buffer[1]) << 48) | (((Tcl_WideUInt) buffer[0]) << 56); return Tcl_NewWideIntObj((Tcl_WideInt) uwvalue); + + /* + * Do not cache double values; they are already too large + * to use as keys and the values stored are utterly + * incompatible too. + */ case 'f': { float fvalue; memcpy((VOID *) &fvalue, (VOID *) buffer, sizeof(float)); @@ -1710,3 +1702,42 @@ ScanNumber(buffer, type, numberCachePtrPtr) } return NULL; } + +/* + *---------------------------------------------------------------------- + * + * DeleteScanNumberCache -- + * + * Deletes the hash table acting as a scan number cache. + * + * Results: + * None + * + * Side effects: + * Decrements the reference counts of the objects in the cache. + * + *---------------------------------------------------------------------- + */ + +static void +DeleteScanNumberCache(numberCachePtr) + Tcl_HashTable *numberCachePtr; /* Pointer to the hash table, or + * NULL (when the cache has already + * been deleted due to overflow.) */ +{ + Tcl_HashEntry *hEntry; + Tcl_HashSearch search; + + if (numberCachePtr == NULL) { + return; + } + + hEntry = Tcl_FirstHashEntry(numberCachePtr, &search); + while (hEntry != NULL) { + register Tcl_Obj *value = (Tcl_Obj *) Tcl_GetHashValue(hEntry); + + Tcl_DecrRefCount(value); + hEntry = Tcl_NextHashEntry(&search); + } + Tcl_DeleteHashTable(numberCachePtr); +} diff --git a/tests/binary.test b/tests/binary.test index fcc6df6..98eb4fc 100644 --- a/tests/binary.test +++ b/tests/binary.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: binary.test,v 1.11.2.1 2003/07/11 21:18:55 dkf Exp $ +# RCS: @(#) $Id: binary.test,v 1.11.2.2 2003/12/02 09:31:54 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1516,6 +1516,14 @@ test binary-46.5 {Tcl_BinaryObjCmd: handling of non-ISO8859-1 chars} { list $x $y [encoding convertfrom iso8859-15 $y] } "1 \u00a4 \u20ac" +test binary-47.1 {Tcl_BinaryObjCmd: number cache reference count handling} { + # This test is only reliable when memory debugging is turned on, + # but without even memory debugging it should still generate the + # expected answers and might therefore still pick up memory corruption + # caused by [Bug 851747]. + list [binary scan aba ccc x x x] $x +} {3 97} + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From af5cc40bce476bea0d0db7fab744be9543c5bf4d Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 2 Dec 2003 17:36:20 +0000 Subject: * README: Bumped patch level to 8.4.6 to distinguish * generic/tcl.h: CVS snapshots from the 8.4.5 release. * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf (2.13) * win/configure: --- ChangeLog | 13 +++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 16d6f60..ff42981 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2003-12-02 Don Porter + + * README: Bumped patch level to 8.4.6 to distinguish + * generic/tcl.h: CVS snapshots from the 8.4.5 release. + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf (2.13) + * win/configure: + 2003-12-02 Donal K. Fellows * generic/tclBinary.c (DeleteScanNumberCache, ScanNumber): Made diff --git a/README b/README index 6e1584d..92792e5 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.5 source distribution. + This is the Tcl 8.4.6 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.3 2003/10/02 23:07:33 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.4 2003/12/02 17:36:20 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 7d9afde..bc3d7c1 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.8 2003/10/22 22:35:46 andreas_kupries Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.9 2003/12/02 17:36:20 dgp Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 5 +#define TCL_RELEASE_SERIAL 6 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.5" +#define TCL_PATCH_LEVEL "8.4.6" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 9efd1f1..37858a5 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.5 + Disk Label=tcl8.4.6 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 0131989..5aaba8a 100755 --- a/unix/configure +++ b/unix/configure @@ -548,7 +548,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".5" +TCL_PATCH_LEVEL=".6" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 5f94cf0..1a5dfab 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.3 2003/10/02 23:07:34 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.4 2003/12/02 17:36:30 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".5" +TCL_PATCH_LEVEL=".6" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 4d2aa0d..893f187 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.3 2003/10/02 23:07:34 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.4 2003/12/02 17:36:31 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.5 +%define version 8.4.6 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index dc296b5..5758f6c 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.3 2003/10/02 23:07:34 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.4 2003/12/02 17:36:31 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.5 for +This directory contains the binary distribution of Tcl/Tk 8.4.6 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 4990733..d42a9f3 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".5" +TCL_PATCH_LEVEL=".6" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 398238f..29a1d91 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.4 2003/10/02 23:07:35 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.5 2003/12/02 17:36:32 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".5" +TCL_PATCH_LEVEL=".6" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 51aefc5291128249b16968dfa9a4f8cc9779d9d8 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 3 Dec 2003 17:39:51 +0000 Subject: * generic/tcl.h: Bumped patch level to 8.4.5.1 to distinguish * unix/configure.in: CVS snapshots from 8.4.5 release. * unix/tcl.spec: * win/configure.in: * unix/configure: autoconf (2.13) * win/configure: --- ChangeLog | 9 +++------ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 19 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index ff42981..19d266e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,8 @@ -2003-12-02 Don Porter +2003-12-03 Don Porter - * README: Bumped patch level to 8.4.6 to distinguish - * generic/tcl.h: CVS snapshots from the 8.4.5 release. - * tools/tcl.wse.in: - * unix/configure.in: + * generic/tcl.h: Bumped patch level to 8.4.5.1 to distinguish + * unix/configure.in: CVS snapshots from 8.4.5 release. * unix/tcl.spec: - * win/README.binary: * win/configure.in: * unix/configure: autoconf (2.13) diff --git a/README b/README index 92792e5..8edc6fb 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.6 source distribution. + This is the Tcl 8.4.5 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.4 2003/12/02 17:36:20 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.5 2003/12/03 17:39:52 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index bc3d7c1..c275ce6 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.9 2003/12/02 17:36:20 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.10 2003/12/03 17:39:52 dgp Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 6 +#define TCL_RELEASE_SERIAL 5 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.6" +#define TCL_PATCH_LEVEL "8.4.5.1" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 37858a5..9efd1f1 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.6 + Disk Label=tcl8.4.5 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 5aaba8a..15a7307 100755 --- a/unix/configure +++ b/unix/configure @@ -548,7 +548,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".5.1" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 1a5dfab..82a695d 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.4 2003/12/02 17:36:30 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.5 2003/12/03 17:39:53 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".5.1" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 893f187..fb80344 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.4 2003/12/02 17:36:31 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.5 2003/12/03 17:39:53 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.6 +%define version 8.4.5.1 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index 5758f6c..a49d4cf 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.4 2003/12/02 17:36:31 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.5 2003/12/03 17:39:53 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.6 for +This directory contains the binary distribution of Tcl/Tk 8.4.5 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index d42a9f3..7eaf350 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".5.1" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 29a1d91..5db44ca 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.5 2003/12/02 17:36:32 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.6 2003/12/03 17:39:53 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".5.1" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From fbbfaea5fca1f1d6c39d4d126ffae9d71f4eb8e6 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 9 Dec 2003 15:32:19 +0000 Subject: #ifdef'd out errno declarations; incompatible with recent glibc. [Bug 852369] --- ChangeLog | 6 ++++++ tools/man2tcl.c | 9 ++++++++- unix/tclUnixPort.h | 4 +++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 19d266e..4e99530 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-12-09 Donal K. Fellows + + * unix/tclUnixPort.h: #ifdef'd out declarations of errno which + * tools/man2tcl.c: are known to cause problems with recent + glibc. [Bug 852369] + 2003-12-03 Don Porter * generic/tcl.h: Bumped patch level to 8.4.5.1 to distinguish diff --git a/tools/man2tcl.c b/tools/man2tcl.c index f7e5356..9cf16ca 100644 --- a/tools/man2tcl.c +++ b/tools/man2tcl.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: man2tcl.c,v 1.7 2002/05/08 23:48:13 davygrvy Exp $ + * RCS: @(#) $Id: man2tcl.c,v 1.7.2.1 2003/12/09 15:32:20 dkf Exp $ */ static char sccsid[] = "@(#) man2tcl.c 1.3 95/08/12 17:34:08"; @@ -32,7 +32,14 @@ static char sccsid[] = "@(#) man2tcl.c 1.3 95/08/12 17:34:08"; * Imported things that aren't defined in header files: */ +/* + * Some define errno to be something complex and + * thread-aware; in that case we definitely do not want to declare + * errno ourselves! + */ +#ifndef errno extern int errno; +#endif /* * Current line number, used for error messages. diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 8574bfa..d694488 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.1 2003/05/13 08:41:26 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.2 2003/12/09 15:32:21 dkf Exp $ */ #ifndef _TCLUNIXPORT @@ -464,7 +464,9 @@ EXTERN int gettimeofday _ANSI_ARGS_((struct timeval *tp, * isn't generally declared in a header file anywhere. */ +#ifdef NO_ERRNO extern int errno; +#endif /* * Not all systems declare all the errors that Tcl uses! Provide some -- cgit v0.12 From a66b2e3e357d9ae474819710a99a0a12afbf3a79 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Fri, 12 Dec 2003 16:47:47 +0000 Subject: fix to 'file normalize ~nobody' crash --- ChangeLog | 5 +++++ generic/tclCmdAH.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4e99530..b3800ac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-12-12 Vince Darley + + * generic/tclCmdAH.c: fix to normalization of non-existent user + name ('file normalize ~nobody') [Bug 858937] + 2003-12-09 Donal K. Fellows * unix/tclUnixPort.h: #ifdef'd out declarations of errno which diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 8f4ec9b..4bb76d2 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.7 2003/10/22 08:21:15 dkf Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.8 2003/12/12 16:47:47 vincentdarley Exp $ */ #include "tclInt.h" @@ -1132,6 +1132,9 @@ Tcl_FileObjCmd(dummy, interp, objc, objv) } fileName = Tcl_FSGetNormalizedPath(interp, objv[2]); + if (fileName == NULL) { + return TCL_ERROR; + } Tcl_SetObjResult(interp, fileName); return TCL_OK; } -- cgit v0.12 From e6755ddde4faa78aa7f831e7be20021a2ea1565a Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Wed, 17 Dec 2003 09:32:35 +0000 Subject: Merged fixes for Tcl Bug #839519 and Tcl Bug #861515. Those are already applied to the head. --- generic/tclIOUtil.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index de12596..3dcb564 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.12 2003/11/20 19:05:44 vincentdarley Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.13 2003/12/17 09:32:35 vasiljevic Exp $ */ #include "tclInt.h" @@ -499,7 +499,7 @@ typedef struct ThreadSpecificData { FilesystemRecord *filesystemList; } ThreadSpecificData; -Tcl_ThreadDataKey dataKey; +static Tcl_ThreadDataKey dataKey; /* * Declare fallback support function and @@ -2509,7 +2509,8 @@ Tcl_FSGetCwd(interp) * we'll always be in the 'else' branch below which * is simpler. */ - FsUpdateCwd(norm); + FsUpdateCwd(norm); + Tcl_DecrRefCount(norm); } Tcl_DecrRefCount(retVal); } @@ -2555,6 +2556,7 @@ Tcl_FSGetCwd(interp) Tcl_DecrRefCount(norm); } else { FsUpdateCwd(norm); + Tcl_DecrRefCount(norm); } Tcl_DecrRefCount(retVal); } else { @@ -5263,15 +5265,16 @@ Tcl_FSGetTranslatedPath(interp, pathPtr) srcFsPathPtr = (FsPath*) PATHOBJ(pathPtr); if (srcFsPathPtr->translatedPathPtr == NULL) { if (PATHFLAGS(pathPtr) != 0) { - return Tcl_FSGetNormalizedPath(interp, pathPtr); + retObj = Tcl_FSGetNormalizedPath(interp, pathPtr); + } else { + /* + * It is a pure absolute, normalized path object. + * This is something like being a 'pure list'. The + * object's string, translatedPath and normalizedPath + * are all identical. + */ + retObj = srcFsPathPtr->normPathPtr; } - /* - * It is a pure absolute, normalized path object. - * This is something like being a 'pure list'. The - * object's string, translatedPath and normalizedPath - * are all identical. - */ - retObj = srcFsPathPtr->normPathPtr; } else { /* It is an ordinary path object */ retObj = srcFsPathPtr->translatedPathPtr; -- cgit v0.12 From 6909c4462beaf6bfe020c7c2edf0a8d4d0f8e79d Mon Sep 17 00:00:00 2001 From: das Date: Wed, 17 Dec 2003 18:38:28 +0000 Subject: * generic/tclBinary.c (DeleteScanNumberCache): fixed crashing bug when numeric scan-value cache contains NULL value. --- ChangeLog | 5 +++++ generic/tclBinary.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b3800ac..3dfbacf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-12-17 Daniel Steffen + + * generic/tclBinary.c (DeleteScanNumberCache): fixed crashing bug + when numeric scan-value cache contains NULL value. + 2003-12-12 Vince Darley * generic/tclCmdAH.c: fix to normalization of non-existent user diff --git a/generic/tclBinary.c b/generic/tclBinary.c index 6769b4e..546a35b 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBinary.c,v 1.13.2.1 2003/12/02 09:31:54 dkf Exp $ + * RCS: @(#) $Id: tclBinary.c,v 1.13.2.2 2003/12/17 18:38:28 das Exp $ */ #include "tclInt.h" @@ -1736,7 +1736,9 @@ DeleteScanNumberCache(numberCachePtr) while (hEntry != NULL) { register Tcl_Obj *value = (Tcl_Obj *) Tcl_GetHashValue(hEntry); - Tcl_DecrRefCount(value); + if (value != NULL) { + Tcl_DecrRefCount(value); + } hEntry = Tcl_NextHashEntry(&search); } Tcl_DeleteHashTable(numberCachePtr); -- cgit v0.12 From 76b1e24ed77f737f4f52f13fa752a6e3d1f2a04a Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 17 Dec 2003 22:11:30 +0000 Subject: backported changelog entry to document backported bug fix --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 3dfbacf..1c33865 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,11 @@ * generic/tclBinary.c (DeleteScanNumberCache): fixed crashing bug when numeric scan-value cache contains NULL value. +2003-12-17 Zoran Vasiljevic + + * generic/tclIOUtil.c: fixed 2 memory (object) leaks. + This fixes Tcl Bug #839519. + 2003-12-12 Vince Darley * generic/tclCmdAH.c: fix to normalization of non-existent user -- cgit v0.12 From cad6d20809446ccdea12285a5e4e611558e8c7dd Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Fri, 9 Jan 2004 13:19:41 +0000 Subject: vfs code tclfinalizefilesystem fix --- ChangeLog | 5 +++++ generic/tclIOUtil.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1c33865..76af10e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-01-09 Vince Darley + + * generic/tclIOUtil.c: fix to infinite loop in + TclFinalizeFilesystem [Bug 873311] + 2003-12-17 Daniel Steffen * generic/tclBinary.c (DeleteScanNumberCache): fixed crashing bug diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 3dcb564..0ca497f 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.13 2003/12/17 09:32:35 vasiljevic Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.14 2004/01/09 13:19:42 vincentdarley Exp $ */ #include "tclInt.h" @@ -714,7 +714,7 @@ FsUpdateCwd(cwdObj) void TclFinalizeFilesystem() { - FilesystemRecord *fsRecPtr, *tmpFsRecPtr; + FilesystemRecord *fsRecPtr; /* * Assumption that only one thread is active now. Otherwise @@ -734,7 +734,7 @@ TclFinalizeFilesystem() fsRecPtr = filesystemList; while (fsRecPtr != NULL) { - tmpFsRecPtr = filesystemList->nextPtr; + FilesystemRecord *tmpFsRecPtr = fsRecPtr->nextPtr; if (fsRecPtr->fileRefCount <= 0) { /* The native filesystem is static, so we don't free it */ if (fsRecPtr != &nativeFilesystemRecord) { -- cgit v0.12 From 4a96ede4a93fe75a322f20b2b761871e0aa7abd7 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 13 Jan 2004 09:45:29 +0000 Subject: Fix shared object panics. [Bug 875395] --- ChangeLog | 8 ++++++++ generic/tclIndexObj.c | 9 ++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 76af10e..e6d0be0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-01-13 Donal K. Fellows + + * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct, Tcl_WrongNumArgs): + Create fresh objects instead of using the one currently in the + interpreter, which isn't guaranteed to be fresh and unshared. The + cost for the core will be minimal because of the object cache, and + this fixes [Bug 875395]. + 2004-01-09 Vince Darley * generic/tclIOUtil.c: fix to infinite loop in diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index 5891aeb..60d4931 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIndexObj.c,v 1.16 2002/02/28 05:11:25 dgp Exp $ + * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.1 2004/01/13 09:45:30 dkf Exp $ */ #include "tclInt.h" @@ -271,7 +271,9 @@ Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, * Produce a fancy error message. */ int count; - resultPtr = Tcl_GetObjResult(interp); + + TclNewObj(resultPtr); + Tcl_SetObjResult(interp, resultPtr); Tcl_AppendStringsToObj(resultPtr, (numAbbrev > 1) ? "ambiguous " : "bad ", msg, " \"", key, "\": must be ", STRING_AT(tablePtr,offset,0), (char*)NULL); @@ -450,7 +452,8 @@ Tcl_WrongNumArgs(interp, objc, objv, message) int i; register IndexRep *indexRep; - objPtr = Tcl_GetObjResult(interp); + TclNewObj(objPtr); + Tcl_SetObjResult(interp, objPtr); Tcl_AppendToObj(objPtr, "wrong # args: should be \"", -1); for (i = 0; i < objc; i++) { /* -- cgit v0.12 From 20830f1de990be20541f5a22ef27c99aeeb0174d Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 13 Jan 2004 17:26:42 +0000 Subject: * generic/tclFileName.c (Tcl_GlobObjCmd): Latest changes to management of the interp result by Tcl_GetIndexFromObj() exposed improper interp result management in the [glob] command procedure. Corrected by adopting the Tcl_SetObjResult(Tcl_NewStringObj) pattern. This stopped a segfault in test filename-11.36. --- ChangeLog | 8 ++++++++ generic/tclFileName.c | 40 ++++++++++++++++------------------------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index e6d0be0..984d917 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-01-13 Don Porter + + * generic/tclFileName.c (Tcl_GlobObjCmd): Latest changes to + management of the interp result by Tcl_GetIndexFromObj() exposed + improper interp result management in the [glob] command procedure. + Corrected by adopting the Tcl_SetObjResult(Tcl_NewStringObj) pattern. + This stopped a segfault in test filename-11.36. + 2004-01-13 Donal K. Fellows * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct, Tcl_WrongNumArgs): diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 6d7a41c..bc314cf 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.5 2003/10/06 09:49:19 vincentdarley Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.6 2004/01/13 17:26:42 dgp Exp $ */ #include "tclInt.h" @@ -1585,7 +1585,6 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) join = 0; dir = PATH_NONE; typePtr = NULL; - resultPtr = Tcl_GetObjResult(interp); for (i = 1; i < objc; i++) { if (Tcl_GetIndexFromObj(interp, objv[i], options, "option", 0, &index) != TCL_OK) { @@ -1611,14 +1610,14 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) break; case GLOB_DIR: /* -dir */ if (i == (objc-1)) { - Tcl_AppendToObj(resultPtr, - "missing argument to \"-directory\"", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "missing argument to \"-directory\"", -1)); return TCL_ERROR; } if (dir != PATH_NONE) { - Tcl_AppendToObj(resultPtr, + Tcl_SetObjResult(interp, Tcl_NewStringObj( "\"-directory\" cannot be used with \"-path\"", - -1); + -1)); return TCL_ERROR; } dir = PATH_DIR; @@ -1634,14 +1633,14 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) break; case GLOB_PATH: /* -path */ if (i == (objc-1)) { - Tcl_AppendToObj(resultPtr, - "missing argument to \"-path\"", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "missing argument to \"-path\"", -1)); return TCL_ERROR; } if (dir != PATH_NONE) { - Tcl_AppendToObj(resultPtr, + Tcl_SetObjResult(interp, Tcl_NewStringObj( "\"-path\" cannot be used with \"-directory\"", - -1); + -1)); return TCL_ERROR; } dir = PATH_GENERAL; @@ -1650,8 +1649,8 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) break; case GLOB_TYPE: /* -types */ if (i == (objc-1)) { - Tcl_AppendToObj(resultPtr, - "missing argument to \"-types\"", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "missing argument to \"-types\"", -1)); return TCL_ERROR; } typePtr = objv[i+1]; @@ -1671,9 +1670,9 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) return TCL_ERROR; } if ((globFlags & TCL_GLOBMODE_TAILS) && (pathOrDir == NULL)) { - Tcl_AppendToObj(resultPtr, + Tcl_SetObjResult(interp, Tcl_NewStringObj( "\"-tails\" must be used with either \"-directory\" or \"-path\"", - -1); + -1)); return TCL_ERROR; } @@ -1832,8 +1831,7 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) } } /* - * Error cases. We re-get the interpreter's result, - * just to be sure it hasn't changed, and we reset + * Error cases. We reset * the 'join' flag to zero, since we haven't yet * made use of it. */ @@ -1845,10 +1843,9 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) join = 0; goto endOfGlob; badMacTypesArg: - resultPtr = Tcl_GetObjResult(interp); - Tcl_AppendToObj(resultPtr, + Tcl_SetObjResult(interp, Tcl_NewStringObj( "only one MacOS type or creator argument" - " to \"-types\" allowed", -1); + " to \"-types\" allowed", -1)); result = TCL_ERROR; join = 0; goto endOfGlob; @@ -1864,11 +1861,6 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) */ objc -= i; objv += i; - /* - * We re-retrieve this, in case it was changed in - * the Tcl_ResetResult above - */ - resultPtr = Tcl_GetObjResult(interp); result = TCL_OK; if (join) { if (dir != PATH_GENERAL) { -- cgit v0.12 From 8d1e9cca9040816aaa0ffc543e47181085c3f9a2 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Mon, 2 Feb 2004 22:00:30 +0000 Subject: * generic/tclIO.c (Tcl_Ungets): fixes improper filling of the channel buffer. [Bug 405995] --- generic/tclIO.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/generic/tclIO.c b/generic/tclIO.c index 6ef2b5e..51a105b 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.2 2003/04/11 17:35:33 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.3 2004/02/02 22:00:30 davygrvy Exp $ */ #include "tclInt.h" @@ -5041,9 +5041,8 @@ Tcl_Ungets(chan, str, len, atEnd) bufPtr = AllocChannelBuffer(len); for (i = 0; i < len; i++) { - bufPtr->buf[i] = str[i]; + bufPtr->buf[bufPtr->nextAdded++] = str[i]; } - bufPtr->nextAdded += len; if (statePtr->inQueueHead == (ChannelBuffer *) NULL) { bufPtr->nextPtr = (ChannelBuffer *) NULL; -- cgit v0.12 From e9d41aed5e14535c3df8a908df831cc5aec2e824 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Mon, 2 Feb 2004 22:01:41 +0000 Subject: no message --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 984d917..75bc9aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-02-02 David Gravereaux + + * generic/tclIO.c (Tcl_Ungets): fixes improper filling of the + channel buffer. [Bug 405995] + 2004-01-13 Don Porter * generic/tclFileName.c (Tcl_GlobObjCmd): Latest changes to -- cgit v0.12 From 43a088efac279c73beb59101d02601958875ccbc Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 3 Feb 2004 18:49:13 +0000 Subject: * library/tcltest/tcltest.tcl: Corrected parsing of single command line argument (option with missing value) [Bug 833910] * library/tcltest/pkgIndex.tcl: Bump to version 2.2.5. --- ChangeLog | 6 ++++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 11 ++++++++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 75bc9aa..c7d5f1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-02-03 Don Porter + + * library/tcltest/tcltest.tcl: Corrected parsing of single + command line argument (option with missing value) [Bug 833910] + * library/tcltest/pkgIndex.tcl: Bump to version 2.2.5. + 2004-02-02 David Gravereaux * generic/tclIO.c (Tcl_Ungets): fixes improper filling of the diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index 2d9b07e..5ddc69c 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.3]} {return} -package ifneeded tcltest 2.2.4 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.2.5 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 934f8f0..ffdc9d9 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.5 2003/07/18 21:01:32 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.6 2004/02/03 18:49:29 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.2.4 + variable Version 2.2.5 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -1419,7 +1419,7 @@ proc tcltest::ProcessFlags {flagArray} { RemoveAutoConfigureTraces } else { set args $flagArray - while {[llength $args] && [catch {eval configure $args} msg]} { + while {[llength $args]>1 && [catch {eval configure $args} msg]} { # Something went wrong parsing $args for tcltest options # Check whether the problem is "unknown option" @@ -1450,6 +1450,11 @@ proc tcltest::ProcessFlags {flagArray} { } set args [lrange $args 2 end] } + if {[llength $args] == 1} { + puts [errorChannel] \ + "missing value for option [lindex $args 0]" + exit 1 + } } # Call the hook -- cgit v0.12 From 73801d22e6c196cc5f2b033467ab9258e88acb5f Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 4 Feb 2004 06:14:49 +0000 Subject: * library/tcltest/tcltest.tcl: Corrected references to non-existent $name variable in [cleanupTests]. [Bug 833637] --- ChangeLog | 5 +++++ library/tcltest/tcltest.tcl | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c7d5f1d..ff0a253 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-02-04 Don Porter + + * library/tcltest/tcltest.tcl: Corrected references to + non-existent $name variable in [cleanupTests]. [Bug 833637] + 2004-02-03 Don Porter * library/tcltest/tcltest.tcl: Corrected parsing of single diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index ffdc9d9..db4f8fb 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.6 2004/02/03 18:49:29 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.7 2004/02/04 06:14:50 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -2479,10 +2479,10 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { puts "rename core file (> 1)" puts [outputChannel] "produced core file! \ Moving file to: \ - [file join [temporaryDirectory] core-$name]" + [file join [temporaryDirectory] core-$testFileName]" catch {file rename -force \ [file join [workingDirectory] core] \ - [file join [temporaryDirectory] core-$name] + [file join [temporaryDirectory] core-$testFileName] } msg if {[string length $msg] > 0} { PrintError "Problem renaming file: $msg" -- cgit v0.12 From 4dc1c95428667fd892e348d3e5a8bc2e7d6a3d7c Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 6 Feb 2004 16:47:52 +0000 Subject: * doc/clock.n: Removed reference to non-existent [file ctime]. --- ChangeLog | 4 ++++ doc/clock.n | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ff0a253..efedde8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-02-06 Don Porter + + * doc/clock.n: Removed reference to non-existent [file ctime]. + 2004-02-04 Don Porter * library/tcltest/tcltest.tcl: Corrected references to diff --git a/doc/clock.n b/doc/clock.n index e609e3c..de2baa2 100644 --- a/doc/clock.n +++ b/doc/clock.n @@ -10,7 +10,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: clock.n,v 1.11 2002/04/22 22:41:46 hobbs Exp $ +'\" RCS: @(#) $Id: clock.n,v 1.11.2.1 2004/02/06 16:47:53 dgp Exp $ '\" .so man.macros .TH clock n 8.4 Tcl "Tcl Built-In Commands" @@ -43,8 +43,8 @@ of elapsed time. .TP \fBclock format \fIclockValue\fR ?\fB\-format \fIstring\fR? ?\fB\-gmt \fIboolean\fR? Converts an integer time value, typically returned by -\fBclock seconds\fR, \fBclock scan\fR, or the \fBatime\fR, \fBmtime\fR, -or \fBctime\fR options of the \fBfile\fR command, to human-readable +\fBclock seconds\fR, \fBclock scan\fR, or the \fBatime\fR or \fBmtime\fR +options of the \fBfile\fR command, to human-readable form. If the \fB\-format\fR argument is present the next argument is a string that describes how the date and time are to be formatted. Field descriptors consist of a \fB%\fR followed by a field -- cgit v0.12 From 570771be866c0c9094970dfae00a7a3361c66812 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 13 Feb 2004 01:29:16 +0000 Subject: minor clarification in exists vs vars return list --- doc/info.n | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/info.n b/doc/info.n index ab78347..7f66d39 100644 --- a/doc/info.n +++ b/doc/info.n @@ -7,7 +7,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: info.n,v 1.8 2002/06/11 13:22:35 msofer Exp $ +'\" RCS: @(#) $Id: info.n,v 1.8.2.1 2004/02/13 01:29:16 hobbs Exp $ '\" .so man.macros .TH info n 8.4 Tcl "Tcl Built-In Commands" @@ -200,6 +200,8 @@ If \fIpattern\fR is a qualified name, the resulting list of variable names has each matching namespace variable qualified with the name of its namespace. +Note that a currently-visible variable may not yet "exist" if it has not +been set (e.g. a variable declared but not set by \fBvariable\fR). .SH "SEE ALSO" global(n), proc(n) -- cgit v0.12 From 44fa33cef414be69039aaefa10bf1b241d8031ba Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 13 Feb 2004 01:37:09 +0000 Subject: update HP-11 build libs setup --- unix/tcl.m4 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 5b4ed48..db85ff9 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -469,6 +469,7 @@ AC_DEFUN(SC_ENABLE_THREADS, [ ac_saved_libs=$LIBS LIBS="$LIBS $THREADS_LIBS" AC_CHECK_FUNCS(pthread_attr_setstacksize) + AC_CHECK_FUNCS(pthread_atfork) LIBS=$ac_saved_libs AC_CHECK_FUNCS(readdir_r) else @@ -988,6 +989,12 @@ dnl AC_CHECK_TOOL(AR, ar) LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' LD_LIBRARY_PATH_VAR="SHLIB_PATH" fi + if test "$GCC" = "yes" ; then + SHLIB_LD="gcc -shared" + SHLIB_LD_LIBS='${LIBS}' + LD_SEARCH_FLAGS='' + CC_SEARCH_FLAGS='' + fi # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc #EXTRA_CFLAGS="+DAportable" @@ -1001,7 +1008,7 @@ dnl AC_CHECK_TOOL(AR, ar) # 64-bit gcc in use. Fix flags for GNU ld. do64bit_ok=yes SHLIB_LD="gcc -shared" - SHLIB_LD_LIBS="" + SHLIB_LD_LIBS='${LIBS}' LD_SEARCH_FLAGS='' CC_SEARCH_FLAGS='' ;; -- cgit v0.12 From 89386ecbf29b87f5469b0119d7241d2c33789c81 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 13 Feb 2004 01:37:59 +0000 Subject: update patchlevel to 8.4.6 --- ChangeLog | 34 ++- README | 4 +- generic/tcl.h | 6 +- tools/tcl.wse.in | 2 +- unix/configure | 691 +++++++++++++++++++++++++++++------------------------- unix/configure.in | 4 +- unix/tcl.spec | 4 +- win/README.binary | 4 +- win/configure | 2 +- win/configure.in | 4 +- 10 files changed, 413 insertions(+), 342 deletions(-) diff --git a/ChangeLog b/ChangeLog index efedde8..7cdd2cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-02-12 Jeff Hobbs + + * README: update patchlevel to 8.4.6 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure, unix/configure.in, unix/tcl.spec: + * win/README.binary, win/configure, win/configure.in: + + * unix/tcl.m4: update HP-11 build libs setup + 2004-02-06 Don Porter * doc/clock.n: Removed reference to non-existent [file ctime]. @@ -7,24 +17,24 @@ * library/tcltest/tcltest.tcl: Corrected references to non-existent $name variable in [cleanupTests]. [Bug 833637] -2004-02-03 Don Porter +2004-02-03 Don Porter - * library/tcltest/tcltest.tcl: Corrected parsing of single - command line argument (option with missing value) [Bug 833910] - * library/tcltest/pkgIndex.tcl: Bump to version 2.2.5. + * library/tcltest/tcltest.tcl: Corrected parsing of single + command line argument (option with missing value) [Bug 833910] + * library/tcltest/pkgIndex.tcl: Bump to version 2.2.5. 2004-02-02 David Gravereaux * generic/tclIO.c (Tcl_Ungets): fixes improper filling of the channel buffer. [Bug 405995] -2004-01-13 Don Porter +2004-01-13 Don Porter - * generic/tclFileName.c (Tcl_GlobObjCmd): Latest changes to - management of the interp result by Tcl_GetIndexFromObj() exposed - improper interp result management in the [glob] command procedure. - Corrected by adopting the Tcl_SetObjResult(Tcl_NewStringObj) pattern. - This stopped a segfault in test filename-11.36. + * generic/tclFileName.c (Tcl_GlobObjCmd): Latest changes to + management of the interp result by Tcl_GetIndexFromObj() exposed + improper interp result management in the [glob] command procedure. + Corrected by adopting the Tcl_SetObjResult(Tcl_NewStringObj) pattern. + This stopped a segfault in test filename-11.36. 2004-01-13 Donal K. Fellows @@ -46,8 +56,8 @@ 2003-12-17 Zoran Vasiljevic - * generic/tclIOUtil.c: fixed 2 memory (object) leaks. - This fixes Tcl Bug #839519. + * generic/tclIOUtil.c: fixed 2 memory (object) leaks. + This fixes Tcl Bug #839519. 2003-12-12 Vince Darley diff --git a/README b/README index 8edc6fb..3c926f0 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.5 source distribution. + This is the Tcl 8.4.6 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.5 2003/12/03 17:39:52 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.6 2004/02/13 01:38:00 hobbs Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index c275ce6..68f9ee6 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.10 2003/12/03 17:39:52 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.11 2004/02/13 01:38:00 hobbs Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 5 +#define TCL_RELEASE_SERIAL 6 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.5.1" +#define TCL_PATCH_LEVEL "8.4.6" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 9efd1f1..37858a5 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.5 + Disk Label=tcl8.4.6 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 15a7307..9fcf264 100755 --- a/unix/configure +++ b/unix/configure @@ -548,7 +548,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".5.1" +TCL_PATCH_LEVEL=".6" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ @@ -1281,16 +1281,71 @@ else fi done + for ac_func in pthread_atfork +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1288: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + LIBS=$ac_saved_libs for ac_func in readdir_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1289: checking for $ac_func" >&5 +echo "configure:1344: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1352,18 +1407,18 @@ done if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1356: checking if the compiler understands -pipe" >&5 +echo "configure:1411: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1383,21 +1438,21 @@ fi echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:1387: checking for required early compiler flags" >&5 +echo "configure:1442: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:1401: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -1405,7 +1460,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -1413,7 +1468,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:1417: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -1439,14 +1494,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:1450: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1505: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -1454,7 +1509,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -1462,7 +1517,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:1466: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1521: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -1491,7 +1546,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:1495: checking for 64-bit integer type" >&5 +echo "configure:1550: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1499,14 +1554,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -1523,13 +1578,13 @@ rm -f conftest* : else cat > conftest.$ac_ext < int main() {exit(!(sizeof(${tcl_type_64bit}) > sizeof(long)));} EOF -if { (eval echo configure:1533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_type_64bit=${tcl_type_64bit} else @@ -1558,13 +1613,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:1562: checking for struct dirent64" >&5 +echo "configure:1617: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1572,7 +1627,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:1576: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1631: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -1593,13 +1648,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:1597: checking for struct stat64" >&5 +echo "configure:1652: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -1607,7 +1662,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:1611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -1628,13 +1683,13 @@ EOF echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:1632: checking for off64_t" >&5 +echo "configure:1687: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -1642,7 +1697,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:1646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -1669,14 +1724,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:1673: checking whether byte ordering is bigendian" >&5 +echo "configure:1728: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -1687,11 +1742,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:1691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -1702,7 +1757,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:1706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1761: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -1722,7 +1777,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -1768,12 +1823,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1772: checking for $ac_func" >&5 +echo "configure:1827: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1830,12 +1885,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1834: checking for $ac_func" >&5 +echo "configure:1889: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1888,12 +1943,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1892: checking for $ac_func" >&5 +echo "configure:1947: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1943,12 +1998,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:1947: checking for strerror" >&5 +echo "configure:2002: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -1995,12 +2050,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:1999: checking for getwd" >&5 +echo "configure:2054: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -2047,12 +2102,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:2051: checking for wait3" >&5 +echo "configure:2106: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -2099,12 +2154,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:2103: checking for uname" >&5 +echo "configure:2158: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -2151,12 +2206,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:2155: checking for realpath" >&5 +echo "configure:2210: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -2214,9 +2269,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:2218: checking dirent.h" >&5 +echo "configure:2273: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -2242,7 +2297,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -2263,17 +2318,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:2267: checking for errno.h" >&5 +echo "configure:2322: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2277: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2300,17 +2355,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:2304: checking for float.h" >&5 +echo "configure:2359: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2314: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2337,17 +2392,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:2341: checking for values.h" >&5 +echo "configure:2396: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2374,17 +2429,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:2378: checking for limits.h" >&5 +echo "configure:2433: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2388: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2443: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2411,17 +2466,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:2415: checking for stdlib.h" >&5 +echo "configure:2470: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2480: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2444,7 +2499,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -2458,7 +2513,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -2472,7 +2527,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -2493,17 +2548,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:2497: checking for string.h" >&5 +echo "configure:2552: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2507: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2526,7 +2581,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -2540,7 +2595,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -2566,17 +2621,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:2570: checking for sys/wait.h" >&5 +echo "configure:2625: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2580: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2635: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2603,17 +2658,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2607: checking for dlfcn.h" >&5 +echo "configure:2662: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2645,17 +2700,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2649: checking for $ac_hdr" >&5 +echo "configure:2704: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2659: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2695,17 +2750,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2699: checking for $ac_hdr" >&5 +echo "configure:2754: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2709: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2764: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2732,7 +2787,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:2736: checking termios vs. termio vs. sgtty" >&5 +echo "configure:2791: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2741,7 +2796,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -2756,7 +2811,7 @@ int main() { return 1; } EOF -if { (eval echo configure:2760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -2773,7 +2828,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -2787,7 +2842,7 @@ int main() { return 1; } EOF -if { (eval echo configure:2791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -2805,7 +2860,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -2820,7 +2875,7 @@ int main() { return 1; } EOF -if { (eval echo configure:2824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -2838,7 +2893,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -2855,7 +2910,7 @@ int main() { return 1; } EOF -if { (eval echo configure:2859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -2873,7 +2928,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -2889,7 +2944,7 @@ int main() { return 1; } EOF -if { (eval echo configure:2893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -2907,7 +2962,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -2924,7 +2979,7 @@ int main() { return 1; } EOF -if { (eval echo configure:2928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -2967,19 +3022,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:2971: checking for fd_set in sys/types" >&5 +echo "configure:3026: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:2983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3038: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -2995,12 +3050,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:2999: checking for fd_mask in sys/select" >&5 +echo "configure:3054: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -3037,12 +3092,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:3041: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:3096: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3050,7 +3105,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:3054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3109: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -3075,17 +3130,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3079: checking for $ac_hdr" >&5 +echo "configure:3134: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3089: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3144: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3112,12 +3167,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3116: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3171: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3126,7 +3181,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:3130: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3147,12 +3202,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:3151: checking for tm_zone in struct tm" >&5 +echo "configure:3206: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -3160,7 +3215,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:3164: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3219: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -3180,12 +3235,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:3184: checking for tzname" >&5 +echo "configure:3239: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -3195,7 +3250,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:3199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -3220,12 +3275,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3224: checking for $ac_func" >&5 +echo "configure:3279: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3274,19 +3329,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:3278: checking tm_tzadj in struct tm" >&5 +echo "configure:3333: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:3290: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -3307,19 +3362,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:3311: checking tm_gmtoff in struct tm" >&5 +echo "configure:3366: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:3323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -3344,12 +3399,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:3348: checking long timezone variable" >&5 +echo "configure:3403: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3358,7 +3413,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:3362: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3417: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -3381,12 +3436,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:3385: checking time_t timezone variable" >&5 +echo "configure:3440: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3395,7 +3450,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:3399: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -3422,12 +3477,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:3426: checking for st_blksize in struct stat" >&5 +echo "configure:3481: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3435,7 +3490,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:3439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3494: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -3456,12 +3511,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:3460: checking for fstatfs" >&5 +echo "configure:3515: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -3513,7 +3568,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:3517: checking for 8-bit clean memcmp" >&5 +echo "configure:3572: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3521,7 +3576,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -3555,12 +3610,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:3559: checking for memmove" >&5 +echo "configure:3614: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -3616,12 +3671,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:3620: checking proper strstr implementation" >&5 +echo "configure:3675: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -3657,12 +3712,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:3661: checking for strtoul" >&5 +echo "configure:3716: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -3709,7 +3764,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3748,12 +3803,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:3752: checking for strtod" >&5 +echo "configure:3807: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -3800,7 +3855,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3842,12 +3897,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:3846: checking for strtod" >&5 +echo "configure:3901: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -3892,7 +3947,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:3896: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:3951: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3901,7 +3956,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -3957,12 +4012,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3961: checking for ANSI C header files" >&5 +echo "configure:4016: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3970,7 +4025,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3974: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3987,7 +4042,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -4005,7 +4060,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -4026,7 +4081,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -4037,7 +4092,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:4041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -4061,12 +4116,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:4065: checking for mode_t" >&5 +echo "configure:4120: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4094,12 +4149,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:4098: checking for pid_t" >&5 +echo "configure:4153: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4127,12 +4182,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:4131: checking for size_t" >&5 +echo "configure:4186: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4160,12 +4215,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:4164: checking for uid_t in sys/types.h" >&5 +echo "configure:4219: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -4195,12 +4250,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:4199: checking for socklen_t" >&5 +echo "configure:4254: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4239,12 +4294,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:4243: checking for opendir" >&5 +echo "configure:4298: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -4300,12 +4355,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:4304: checking union wait" >&5 +echo "configure:4359: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4317,7 +4372,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:4321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -4344,12 +4399,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:4348: checking for strncasecmp" >&5 +echo "configure:4403: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -4394,7 +4449,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:4398: checking for strncasecmp in -lsocket" >&5 +echo "configure:4453: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4402,7 +4457,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4437,7 +4492,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:4441: checking for strncasecmp in -linet" >&5 +echo "configure:4496: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4445,7 +4500,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4494,12 +4549,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:4498: checking for BSDgettimeofday" >&5 +echo "configure:4553: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -4544,12 +4599,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:4548: checking for gettimeofday" >&5 +echo "configure:4603: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -4599,12 +4654,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:4603: checking for gettimeofday declaration" >&5 +echo "configure:4658: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -4635,14 +4690,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:4639: checking whether char is unsigned" >&5 +echo "configure:4694: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -4698,12 +4753,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:4702: checking signed char declarations" >&5 +echo "configure:4757: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4772: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -4738,7 +4793,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:4742: checking for a putenv() that copies the buffer" >&5 +echo "configure:4797: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4746,7 +4801,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -4768,7 +4823,7 @@ else } EOF -if { (eval echo configure:4772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -4810,17 +4865,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:4814: checking for langinfo.h" >&5 +echo "configure:4869: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4824: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4879: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4845,17 +4900,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:4849: checking whether to use nl_langinfo" >&5 +echo "configure:4904: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:4859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4914: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -4891,12 +4946,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:4895: checking for sin" >&5 +echo "configure:4950: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -4940,7 +4995,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:4944: checking for main in -lieee" >&5 +echo "configure:4999: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4948,14 +5003,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4982,7 +5037,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:4986: checking for main in -linet" >&5 +echo "configure:5041: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4990,14 +5045,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5019,17 +5074,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:5023: checking for net/errno.h" >&5 +echo "configure:5078: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5033: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5088: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5074,12 +5129,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:5078: checking for connect" >&5 +echo "configure:5133: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -5124,12 +5179,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:5128: checking for setsockopt" >&5 +echo "configure:5183: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -5170,7 +5225,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:5174: checking for setsockopt in -lsocket" >&5 +echo "configure:5229: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5178,7 +5233,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5217,12 +5272,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:5221: checking for accept" >&5 +echo "configure:5276: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -5267,12 +5322,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:5271: checking for gethostbyname" >&5 +echo "configure:5326: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -5313,7 +5368,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:5317: checking for gethostbyname in -lnsl" >&5 +echo "configure:5372: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5321,7 +5376,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5369,7 +5424,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:5373: checking how to build libraries" >&5 +echo "configure:5428: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -5408,7 +5463,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5412: checking for $ac_word" >&5 +echo "configure:5467: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5440,7 +5495,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:5444: checking if 64bit support is requested" >&5 +echo "configure:5499: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -5460,7 +5515,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:5464: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:5519: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -5484,7 +5539,7 @@ fi # there are a few systems, like Next, where this doesn't work. echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:5488: checking system version (for dynamic loading)" >&5 +echo "configure:5543: checking system version (for dynamic loading)" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -5510,7 +5565,7 @@ echo "configure:5488: checking system version (for dynamic loading)" >&5 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:5514: checking for dlopen in -ldl" >&5 +echo "configure:5569: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5518,7 +5573,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5577,7 +5632,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5581: checking for $ac_word" >&5 +echo "configure:5636: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5720,7 +5775,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:5724: checking for gettimeofday in -lbsd" >&5 +echo "configure:5779: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5728,7 +5783,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5815,7 +5870,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:5819: checking for shl_load in -ldld" >&5 +echo "configure:5874: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5823,7 +5878,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5866,6 +5921,12 @@ fi LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' LD_LIBRARY_PATH_VAR="SHLIB_PATH" fi + if test "$GCC" = "yes" ; then + SHLIB_LD="gcc -shared" + SHLIB_LD_LIBS='${LIBS}' + LD_SEARCH_FLAGS='' + CC_SEARCH_FLAGS='' + fi # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc #EXTRA_CFLAGS="+DAportable" @@ -5879,7 +5940,7 @@ fi # 64-bit gcc in use. Fix flags for GNU ld. do64bit_ok=yes SHLIB_LD="gcc -shared" - SHLIB_LD_LIBS="" + SHLIB_LD_LIBS='${LIBS}' LD_SEARCH_FLAGS='' CC_SEARCH_FLAGS='' ;; @@ -5902,7 +5963,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:5906: checking for shl_load in -ldld" >&5 +echo "configure:5967: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5910,7 +5971,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6048,17 +6109,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:6052: checking for dld.h" >&5 +echo "configure:6113: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6123: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6123,17 +6184,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:6127: checking for dld.h" >&5 +echo "configure:6188: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6198: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6191,17 +6252,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:6195: checking for dlfcn.h" >&5 +echo "configure:6256: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6205: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6266: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6229,9 +6290,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:6233: checking for ELF" >&5 +echo "configure:6294: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:6595: checking for ld accepts -Bexport flag" >&5 +echo "configure:6656: checking for ld accepts -Bexport flag" >&5 LDFLAGS="${LDFLAGS} -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -6648,9 +6709,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:6652: checking sys/exec.h" >&5 +echo "configure:6713: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -6668,7 +6729,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6672: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -6686,9 +6747,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:6690: checking a.out.h" >&5 +echo "configure:6751: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -6706,7 +6767,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -6724,9 +6785,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:6728: checking sys/exec_aout.h" >&5 +echo "configure:6789: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -6744,7 +6805,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6809: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -6896,7 +6957,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:6900: checking for build with symbols" >&5 +echo "configure:6961: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -6963,17 +7024,17 @@ TCL_DBGX=${DBGX} do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6967: checking for $ac_hdr" >&5 +echo "configure:7028: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7003,17 +7064,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7007: checking for $ac_hdr" >&5 +echo "configure:7068: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7017: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7040,7 +7101,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7044: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7105: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7103,7 +7164,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7107: checking how to package libraries" >&5 +echo "configure:7168: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/configure.in b/unix/configure.in index 82a695d..371615f 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.5 2003/12/03 17:39:53 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.6 2004/02/13 01:38:02 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".5.1" +TCL_PATCH_LEVEL=".6" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index fb80344..2c3b778 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.5 2003/12/03 17:39:53 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.6 2004/02/13 01:38:02 hobbs Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.5.1 +%define version 8.4.6 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index a49d4cf..38360eb 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.5 2003/12/03 17:39:53 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.6 2004/02/13 01:38:02 hobbs Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.5 for +This directory contains the binary distribution of Tcl/Tk 8.4.6 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 7eaf350..d42a9f3 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".5.1" +TCL_PATCH_LEVEL=".6" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 5db44ca..04752a9 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.6 2003/12/03 17:39:53 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.7 2004/02/13 01:38:02 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".5.1" +TCL_PATCH_LEVEL=".6" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 36fd8f61b581d7e997b9d65e92656fe72ce59230 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 17 Feb 2004 04:54:50 +0000 Subject: * generic/tclCmdMZ.c (TclTraceExecutionObjCmd) (TclTraceCommandObjCmd): fix possible mem leak in trace info. --- ChangeLog | 5 +++++ generic/tclCmdMZ.c | 10 ++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7cdd2cd..026141e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-02-16 Jeff Hobbs + + * generic/tclCmdMZ.c (TclTraceExecutionObjCmd) + (TclTraceCommandObjCmd): fix possible mem leak in trace info. + 2004-02-12 Jeff Hobbs * README: update patchlevel to 8.4.6 diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 45f375b..53f9cb1 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.9 2003/10/14 18:21:59 vincentdarley Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.10 2004/02/17 04:54:51 hobbs Exp $ */ #include "tclInt.h" @@ -3371,8 +3371,6 @@ TclTraceExecutionObjCmd(interp, optionIndex, objc, objv) TraceCommandInfo *tcmdPtr = (TraceCommandInfo *) clientData; - eachTraceObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); - /* * Build a list with the ops list as the first obj * element and the tcmdPtr->command string as the @@ -3403,6 +3401,7 @@ TclTraceExecutionObjCmd(interp, optionIndex, objc, objv) Tcl_DecrRefCount(elemObjPtr); continue; } + eachTraceObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); Tcl_ListObjAppendElement(NULL, eachTraceObjPtr, elemObjPtr); Tcl_DecrRefCount(elemObjPtr); elemObjPtr = NULL; @@ -3578,8 +3577,6 @@ TclTraceCommandObjCmd(interp, optionIndex, objc, objv) TraceCommandInfo *tcmdPtr = (TraceCommandInfo *) clientData; - eachTraceObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); - /* * Build a list with the ops list as * the first obj element and the tcmdPtr->command string @@ -3602,6 +3599,7 @@ TclTraceCommandObjCmd(interp, optionIndex, objc, objv) Tcl_DecrRefCount(elemObjPtr); continue; } + eachTraceObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); Tcl_ListObjAppendElement(NULL, eachTraceObjPtr, elemObjPtr); Tcl_DecrRefCount(elemObjPtr); @@ -3759,7 +3757,6 @@ TclTraceVariableObjCmd(interp, optionIndex, objc, objv) TraceVarInfo *tvarPtr = (TraceVarInfo *) clientData; - eachTraceObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); /* * Build a list with the ops list as * the first obj element and the tcmdPtr->command string @@ -3784,6 +3781,7 @@ TclTraceVariableObjCmd(interp, optionIndex, objc, objv) Tcl_ListObjAppendElement(NULL, elemObjPtr, Tcl_NewStringObj("unset", 5)); } + eachTraceObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); Tcl_ListObjAppendElement(NULL, eachTraceObjPtr, elemObjPtr); elemObjPtr = Tcl_NewStringObj(tvarPtr->command, -1); -- cgit v0.12 From 57bfc576f44e79000d9d4b77974c6b4dbad662d4 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 17 Feb 2004 23:46:52 +0000 Subject: * tests/unixInit.test: unixInit-7.1 * unix/tclUnixInit.c (TclpInitPlatform): ensure the std fds exist to prevent crash condition [Bug #772288] --- ChangeLog | 6 ++++++ tests/unixInit.test | 15 ++++++++++++++- unix/tclUnixInit.c | 15 ++++++++++++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 026141e..fec8f4c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-02-17 Jeff Hobbs + + * tests/unixInit.test: unixInit-7.1 + * unix/tclUnixInit.c (TclpInitPlatform): ensure the std fds exist + to prevent crash condition [Bug #772288] + 2004-02-16 Jeff Hobbs * generic/tclCmdMZ.c (TclTraceExecutionObjCmd) diff --git a/tests/unixInit.test b/tests/unixInit.test index f7b5a39..0225e3c 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.3 2003/11/10 20:32:34 dgp Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.4 2004/02/17 23:46:53 hobbs Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -354,6 +354,19 @@ test unixInit-5.1 {Tcl_Init} {emptyTest unixOnly} { test unixInit-6.1 {Tcl_SourceRCFile} {emptyTest unixOnly} { } {} +test unixInit-7.1 {closed standard channel: Bug 772288} -body { + set tclsh [interpreter] + makeFile {puts [open /dev/null]} crash.tcl + makeFile [subst -nocommands { + close stdin + exec $tclsh crash.tcl + }] crashtest.tcl + exec $tclsh crashtest.tcl +} -cleanup { + removeFile crash.tcl + removeFile crashtest.tcl +} -returnCodes 0 + # cleanup if {[info exists oldlibrary]} { set env(TCL_LIBRARY) $oldlibrary diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index ff033ee..d0dfd28 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.2 2003/11/10 20:32:34 dgp Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.3 2004/02/17 23:46:54 hobbs Exp $ */ #if defined(HAVE_CFBUNDLE) @@ -170,6 +170,19 @@ TclpInitPlatform() tclPlatform = TCL_PLATFORM_UNIX; /* + * Make sure, that the standard FDs exist. [Bug 772288] + */ + if (TclOSseek(0, (Tcl_SeekOffset) 0, SEEK_CUR) == -1 && errno == EBADF) { + open("/dev/null", O_RDONLY); + } + if (TclOSseek(1, (Tcl_SeekOffset) 0, SEEK_CUR) == -1 && errno == EBADF) { + open("/dev/null", O_WRONLY); + } + if (TclOSseek(2, (Tcl_SeekOffset) 0, SEEK_CUR) == -1 && errno == EBADF) { + open("/dev/null", O_WRONLY); + } + + /* * The code below causes SIGPIPE (broken pipe) errors to * be ignored. This is needed so that Tcl processes don't * die if they create child processes (e.g. using "exec" or -- cgit v0.12 From 214a51e8c22207e234d23e35db3defd6e28799bd Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 18 Feb 2004 01:30:14 +0000 Subject: add constraints to unixInit-7.1 --- tests/unixInit.test | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/unixInit.test b/tests/unixInit.test index 0225e3c..27f10b9 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.4 2004/02/17 23:46:53 hobbs Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.5 2004/02/18 01:30:14 hobbs Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -354,7 +354,9 @@ test unixInit-5.1 {Tcl_Init} {emptyTest unixOnly} { test unixInit-6.1 {Tcl_SourceRCFile} {emptyTest unixOnly} { } {} -test unixInit-7.1 {closed standard channel: Bug 772288} -body { +test unixInit-7.1 {closed standard channel: Bug 772288} -constraints { + unixOnly stdio +} -body { set tclsh [interpreter] makeFile {puts [open /dev/null]} crash.tcl makeFile [subst -nocommands { -- cgit v0.12 From 374952d506554eb9fb5d42ec6636cf286f6af93c Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 18 Feb 2004 01:34:03 +0000 Subject: * generic/tclIOUtil.c: backport of rewrite of generic file normalization code to cope with links followed by '..'. [Bug 849514], and parts of [859251] --- ChangeLog | 4 + generic/tclIOUtil.c | 307 +++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 226 insertions(+), 85 deletions(-) diff --git a/ChangeLog b/ChangeLog index fec8f4c..53698f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-02-17 Jeff Hobbs + * generic/tclIOUtil.c: backport of rewrite of generic file + normalization code to cope with links followed by '..'. + [Bug 849514], and parts of [859251] + * tests/unixInit.test: unixInit-7.1 * unix/tclUnixInit.c (TclpInitPlatform): ensure the std fds exist to prevent crash condition [Bug #772288] diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 0ca497f..0f8999f 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.14 2004/01/09 13:19:42 vincentdarley Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.15 2004/02/18 01:34:04 hobbs Exp $ */ #include "tclInt.h" @@ -96,6 +96,11 @@ Tcl_FSPathInFilesystemProc NativePathInFilesystem; static Tcl_Obj* TclFSNormalizeAbsolutePath _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj *pathPtr, ClientData *clientDataPtr)); + +static int FindSplitPos _ANSI_ARGS_((CONST char *path, + int separator)); +static int IsSeparatorOrNull _ANSI_ARGS_((int ch)); + /* * Prototypes for procedures defined later in this file. */ @@ -1303,6 +1308,9 @@ Tcl_FSData(fsPtr) * * The behaviour of this function if passed a non-absolute path * is NOT defined. + * + * pathPtr may have a refCount of zero, or may be a shared + * object. * * Results: * The result is returned in a Tcl_Obj with a refCount of 1, @@ -1313,93 +1321,195 @@ Tcl_FSData(fsPtr) * None (beyond the memory allocation for the result). * * Special note: - * This code is based on code from Matt Newman and Jean-Claude - * Wippler, with additions from Vince Darley and is copyright - * those respective authors. + * This code was originally based on code from Matt Newman and + * Jean-Claude Wippler, but has since been totally rewritten by + * Vince Darley to deal with symbolic links. * *--------------------------------------------------------------------------- */ Tcl_Obj* TclFSNormalizeAbsolutePath(interp, pathPtr, clientDataPtr) - Tcl_Interp* interp; /* Interpreter to use */ - Tcl_Obj *pathPtr; /* Absolute path to normalize */ - ClientData *clientDataPtr; + Tcl_Interp* interp; /* Interpreter to use */ + Tcl_Obj *pathPtr; /* Absolute path to normalize */ + ClientData *clientDataPtr; /* If non-NULL, then may be set to the + * fs-specific clientData for this path. + * This will happen when that extra + * information can be calculated efficiently + * as a side-effect of normalization. */ { - int splen = 0, nplen, eltLen, i; - char *eltName; - Tcl_Obj *retVal; - Tcl_Obj *split; - Tcl_Obj *elt; + ClientData clientData = NULL; + CONST char *dirSep, *oldDirSep; + int first = 1; /* Set to zero once we've passed the first + * directory separator - we can't use '..' to + * remove the volume in a path. */ + Tcl_Obj *retVal = NULL; + dirSep = Tcl_GetString(pathPtr); - /* Split has refCount zero */ - split = Tcl_FSSplitPath(pathPtr, &splen); + if (tclPlatform == TCL_PLATFORM_WINDOWS) { + if (dirSep[0] != 0 && dirSep[1] == ':' && + (dirSep[2] == '/' || dirSep[2] == '\\')) { + /* Do nothing */ + } else if ((dirSep[0] == '/' || dirSep[0] == '\\') + && (dirSep[1] == '/' || dirSep[1] == '\\')) { + /* + * UNC style path, where we must skip over the + * first separator, since the first two segments + * are actually inseparable. + */ + dirSep += 2; + dirSep += FindSplitPos(dirSep, '/'); + if (*dirSep != 0) { + dirSep++; + } + } + } /* - * Modify the list of entries in place, by removing '.', and - * removing '..' and the entry before -- unless that entry before - * is the top-level entry, i.e. the name of a volume. + * Scan forward from one directory separator to the next, + * checking for '..' and '.' sequences which must be handled + * specially. In particular handling of '..' can be complicated + * if the directory before is a link, since we will have to + * expand the link to be able to back up one level. */ - nplen = 0; - for (i = 0; i < splen; i++) { - Tcl_ListObjIndex(NULL, split, nplen, &elt); - eltName = Tcl_GetStringFromObj(elt, &eltLen); - - if ((eltLen == 1) && (eltName[0] == '.')) { - Tcl_ListObjReplace(NULL, split, nplen, 1, 0, NULL); - } else if ((eltLen == 2) - && (eltName[0] == '.') && (eltName[1] == '.')) { - if (nplen > 1) { - nplen--; - Tcl_ListObjReplace(NULL, split, nplen, 2, 0, NULL); - } else { - Tcl_ListObjReplace(NULL, split, nplen, 1, 0, NULL); + while (*dirSep != 0) { + oldDirSep = dirSep; + dirSep += 1+FindSplitPos(dirSep+1, '/'); + if (dirSep[0] == 0 || dirSep[1] == 0) { + if (retVal != NULL) { + Tcl_AppendToObj(retVal, oldDirSep, dirSep - oldDirSep); } - } else { - nplen++; + break; + } + if (dirSep[1] == '.') { + if (retVal != NULL) { + Tcl_AppendToObj(retVal, oldDirSep, dirSep - oldDirSep); + } + again: + if (IsSeparatorOrNull(dirSep[2])) { + /* Need to skip '.' in the path */ + if (retVal == NULL) { + CONST char *path = Tcl_GetString(pathPtr); + retVal = Tcl_NewStringObj(path, dirSep - path); + Tcl_IncrRefCount(retVal); + } + dirSep += 2; + if (dirSep[0] != 0 && dirSep[1] == '.') { + goto again; + } + continue; + } + if (dirSep[2] == '.' && IsSeparatorOrNull(dirSep[3])) { + Tcl_Obj *link; + int curLen; + char *linkStr; + /* Have '..' so need to skip previous directory */ + if (retVal == NULL) { + CONST char *path = Tcl_GetString(pathPtr); + retVal = Tcl_NewStringObj(path, dirSep - path); + Tcl_IncrRefCount(retVal); + } + if (!first) { + link = Tcl_FSLink(retVal, NULL, 0); + if (link != NULL) { + /* Got a link */ + Tcl_DecrRefCount(retVal); + retVal = link; + linkStr = Tcl_GetStringFromObj(retVal, &curLen); + /* Convert to forward-slashes on windows */ + if (tclPlatform == TCL_PLATFORM_WINDOWS) { + int i; + for (i = 0; i < curLen; i++) { + if (linkStr[i] == '\\') { + linkStr[i] = '/'; + } + } + } + } else { + linkStr = Tcl_GetStringFromObj(retVal, &curLen); + } + /* Either way, we now remove the last path element */ + while (--curLen > 0) { + if (IsSeparatorOrNull(linkStr[curLen])) { + Tcl_SetObjLength(retVal, curLen); + break; + } + } + } + dirSep += 3; + if (dirSep[0] != 0 && dirSep[1] == '.') { + goto again; + } + continue; + } + } + first = 0; + if (retVal != NULL) { + Tcl_AppendToObj(retVal, oldDirSep, dirSep - oldDirSep); } } - if (nplen > 0) { - ClientData clientData = NULL; - - retVal = Tcl_FSJoinPath(split, nplen); - /* - * Now we have an absolute path, with no '..', '.' sequences, - * but it still may not be in 'unique' form, depending on the - * platform. For instance, Unix is case-sensitive, so the - * path is ok. Windows is case-insensitive, and also has the - * weird 'longname/shortname' thing (e.g. C:/Program Files/ and - * C:/Progra~1/ are equivalent). MacOS is case-insensitive. - * - * Virtual file systems which may be registered may have - * other criteria for normalizing a path. - */ + + /* + * If we didn't make any changes, just use the input path + */ + if (retVal == NULL) { + retVal = pathPtr; Tcl_IncrRefCount(retVal); - TclFSNormalizeToUniquePath(interp, retVal, 0, &clientData); - /* - * Since we know it is a normalized path, we can - * actually convert this object into an "path" object for - * greater efficiency - */ - TclFSMakePathFromNormalized(interp, retVal, clientData); - if (clientDataPtr != NULL) { - *clientDataPtr = clientData; + + if (Tcl_IsShared(retVal)) { + /* + * Unfortunately, the platform-specific normalization code + * which will be called below has no way of dealing with the + * case where an object is shared. It is expecting to + * modify an object in place. So, we must duplicate this + * here to ensure an object with a single ref-count. + * + * If that changes in the future (e.g. the normalize proc is + * given one object and is able to return a different one), + * then we could remove this code. + */ + Tcl_DecrRefCount(retVal); + retVal = Tcl_DuplicateObj(pathPtr); + Tcl_IncrRefCount(retVal); } - } else { - /* Init to an empty string */ - retVal = Tcl_NewStringObj("",0); - Tcl_IncrRefCount(retVal); } + + /* + * Ensure a windows drive like C:/ has a trailing separator + */ + if (tclPlatform == TCL_PLATFORM_WINDOWS) { + int len; + CONST char *path = Tcl_GetStringFromObj(retVal, &len); + if (len == 2 && path[0] != 0 && path[1] == ':') { + if (Tcl_IsShared(retVal)) { + Tcl_DecrRefCount(retVal); + retVal = Tcl_DuplicateObj(retVal); + Tcl_IncrRefCount(retVal); + } + Tcl_AppendToObj(retVal, "/", 1); + } + } + + /* + * Now we have an absolute path, with no '..', '.' sequences, + * but it still may not be in 'unique' form, depending on the + * platform. For instance, Unix is case-sensitive, so the + * path is ok. Windows is case-insensitive, and also has the + * weird 'longname/shortname' thing (e.g. C:/Program Files/ and + * C:/Progra~1/ are equivalent). MacOS is case-insensitive. + * + * Virtual file systems which may be registered may have + * other criteria for normalizing a path. + */ + TclFSNormalizeToUniquePath(interp, retVal, 0, &clientData); /* - * We increment and then decrement the refCount of split to free - * it. We do this right at the end, in case there are - * optimisations in Tcl_FSJoinPath(split, nplen) above which would - * let it make use of split more effectively if it has a refCount - * of zero. Also we can't just decrement the ref count, in case - * 'split' was actually returned by the join call above, in a - * single-element optimisation when nplen == 1. + * Since we know it is a normalized path, we can + * actually convert this object into an FsPath for + * greater efficiency */ - Tcl_IncrRefCount(split); - Tcl_DecrRefCount(split); + TclFSMakePathFromNormalized(interp, retVal, clientData); + if (clientDataPtr != NULL) { + *clientDataPtr = clientData; + } /* This has a refCount of 1 for the caller */ return retVal; @@ -4479,9 +4589,6 @@ static void FreeFsPathInternalRep _ANSI_ARGS_((Tcl_Obj *listPtr)); static void UpdateStringOfFsPath _ANSI_ARGS_((Tcl_Obj *objPtr)); static int SetFsPathFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); -static int FindSplitPos _ANSI_ARGS_((char *path, char *separator)); - - /* * Define the 'path' object type, which Tcl uses to represent @@ -4885,20 +4992,45 @@ Tcl_FSConvertToPathType(interp, objPtr) } /* + * Helper function for normalization. + */ +static int +IsSeparatorOrNull(ch) + int ch; +{ + if (ch == 0) { + return 1; + } + switch (tclPlatform) { + case TCL_PLATFORM_UNIX: { + return (ch == '/' ? 1 : 0); + } + case TCL_PLATFORM_MAC: { + return (ch == ':' ? 1 : 0); + } + case TCL_PLATFORM_WINDOWS: { + return ((ch == '/' || ch == '\\') ? 1 : 0); + } + } + return 0; +} + +/* * Helper function for SetFsPathFromAny. Returns position of first - * directory delimiter in the path. + * directory delimiter in the path. If no separator is found, then + * returns the position of the end of the string. */ static int FindSplitPos(path, separator) - char *path; - char *separator; + CONST char *path; + int separator; { int count = 0; switch (tclPlatform) { case TCL_PLATFORM_UNIX: case TCL_PLATFORM_MAC: while (path[count] != 0) { - if (path[count] == *separator) { + if (path[count] == separator) { return count; } count++; @@ -4907,7 +5039,7 @@ FindSplitPos(path, separator) case TCL_PLATFORM_WINDOWS: while (path[count] != 0) { - if (path[count] == *separator || path[count] == '\\') { + if (path[count] == separator || path[count] == '\\') { return count; } count++; @@ -5568,12 +5700,14 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) * Path of form C:foo/bar, but this only makes * sense if the cwd is also on drive C. */ - CONST char *drive = Tcl_GetString(useThisCwd); - char drive_c = path[0]; - if (drive_c >= 'a') { - drive_c -= ('a' - 'A'); + int cwdLen; + CONST char *drive = Tcl_GetStringFromObj(useThisCwd, + &cwdLen); + char drive_cur = path[0]; + if (drive_cur >= 'a') { + drive_cur -= ('a' - 'A'); } - if (drive[0] == drive_c) { + if (drive[0] == drive_cur) { absolutePath = Tcl_DuplicateObj(useThisCwd); /* We have a refCount on the cwd */ } else { @@ -5589,7 +5723,10 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) absolutePath = Tcl_NewStringObj(path, 2); } Tcl_IncrRefCount(absolutePath); - Tcl_AppendToObj(absolutePath, "/", 1); + if (drive[cwdLen-1] != '/') { + /* Only add a trailing '/' if needed */ + Tcl_AppendToObj(absolutePath, "/", 1); + } Tcl_AppendToObj(absolutePath, path+2, -1); } #endif /* __WIN32__ */ @@ -5932,7 +6069,7 @@ SetFsPathFromAny(interp, objPtr) if (strchr(name, ':') != NULL) separator = ':'; } - split = FindSplitPos(name, &separator); + split = FindSplitPos(name, separator); if (split != len) { /* We have multiple pieces '~user/foo/bar...' */ name[split] = '\0'; -- cgit v0.12 From 90df58bc06b4ac799c87b53d146a350624292ad5 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 18 Feb 2004 01:43:49 +0000 Subject: * doc/tcltest.n: * library/tcltest/tcltest.tcl: Changed -verbose default value to {body error} so that detailed information on unexpected errors in tests is provided by default, even after the fix for [Bug 725253] --- ChangeLog | 7 +++++++ doc/tcltest.n | 7 ++++--- library/tcltest/tcltest.tcl | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 53698f0..05fc873 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-02-17 Don Porter + + * doc/tcltest.n: + * library/tcltest/tcltest.tcl: Changed -verbose default value to + {body error} so that detailed information on unexpected errors in + tests is provided by default, even after the fix for [Bug 725253] + 2004-02-17 Jeff Hobbs * generic/tclIOUtil.c: backport of rewrite of generic file diff --git a/doc/tcltest.n b/doc/tcltest.n index f6067ee..b019def 100644 --- a/doc/tcltest.n +++ b/doc/tcltest.n @@ -8,7 +8,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tcltest.n,v 1.38.2.3 2003/07/18 21:01:32 dgp Exp $ +'\" RCS: @(#) $Id: tcltest.n,v 1.38.2.4 2004/02/18 01:43:49 dgp Exp $ '\" .so man.macros .TH "tcltest" n 2.2 tcltest "Tcl Bundled Packages" @@ -18,7 +18,7 @@ tcltest \- Test harness support code and utilities .SH SYNOPSIS .nf -\fBpackage require tcltest ?2.2.3?\fR +\fBpackage require tcltest ?2.2.5?\fR .sp \fBtcltest::test \fIname description ?option value ...?\fR \fBtcltest::test \fIname description ?constraints? body result\fR @@ -763,7 +763,8 @@ harness are doing. \fB-verbose \fIlevel\fR Sets the type of output verbosity desired to \fIlevel\fR, a list of zero or more of the elements \fBbody\fR, \fBpass\fR, -\fBskip\fR, \fBstart\fR, and \fBerror\fR. Default value is \fBbody\fR. +\fBskip\fR, \fBstart\fR, and \fBerror\fR. Default value +is \fB{body error}\fR. Levels are defined as: .RS .IP "body (b)" diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index db4f8fb..b5e2eda 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.7 2004/02/04 06:14:50 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.8 2004/02/18 01:43:49 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -630,7 +630,7 @@ namespace eval tcltest { } # Default verbosity is to show bodies of failed tests - Option -verbose body { + Option -verbose {body error} { Takes any combination of the values 'p', 's', 'b', 't' and 'e'. Test suite will display all passed tests if 'p' is specified, all skipped tests if 's' is specified, the bodies of failed tests if -- cgit v0.12 From aab02d56000ebdb2478100f8dc41065193d271ed Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 18 Feb 2004 01:59:08 +0000 Subject: reverted file norm .. fixes because 8.5 had much more extensive changes across the board --- ChangeLog | 3 +- generic/tclIOUtil.c | 307 +++++++++++++++------------------------------------- 2 files changed, 87 insertions(+), 223 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05fc873..ee65d7d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,10 +7,11 @@ 2004-02-17 Jeff Hobbs + (reverted due to test failures on Solaris, but not Win/Lin :/) * generic/tclIOUtil.c: backport of rewrite of generic file normalization code to cope with links followed by '..'. [Bug 849514], and parts of [859251] - + * tests/unixInit.test: unixInit-7.1 * unix/tclUnixInit.c (TclpInitPlatform): ensure the std fds exist to prevent crash condition [Bug #772288] diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 0f8999f..f91a2b6 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.15 2004/02/18 01:34:04 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.16 2004/02/18 01:59:09 hobbs Exp $ */ #include "tclInt.h" @@ -96,11 +96,6 @@ Tcl_FSPathInFilesystemProc NativePathInFilesystem; static Tcl_Obj* TclFSNormalizeAbsolutePath _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj *pathPtr, ClientData *clientDataPtr)); - -static int FindSplitPos _ANSI_ARGS_((CONST char *path, - int separator)); -static int IsSeparatorOrNull _ANSI_ARGS_((int ch)); - /* * Prototypes for procedures defined later in this file. */ @@ -1308,9 +1303,6 @@ Tcl_FSData(fsPtr) * * The behaviour of this function if passed a non-absolute path * is NOT defined. - * - * pathPtr may have a refCount of zero, or may be a shared - * object. * * Results: * The result is returned in a Tcl_Obj with a refCount of 1, @@ -1321,195 +1313,93 @@ Tcl_FSData(fsPtr) * None (beyond the memory allocation for the result). * * Special note: - * This code was originally based on code from Matt Newman and - * Jean-Claude Wippler, but has since been totally rewritten by - * Vince Darley to deal with symbolic links. + * This code is based on code from Matt Newman and Jean-Claude + * Wippler, with additions from Vince Darley and is copyright + * those respective authors. * *--------------------------------------------------------------------------- */ Tcl_Obj* TclFSNormalizeAbsolutePath(interp, pathPtr, clientDataPtr) - Tcl_Interp* interp; /* Interpreter to use */ - Tcl_Obj *pathPtr; /* Absolute path to normalize */ - ClientData *clientDataPtr; /* If non-NULL, then may be set to the - * fs-specific clientData for this path. - * This will happen when that extra - * information can be calculated efficiently - * as a side-effect of normalization. */ + Tcl_Interp* interp; /* Interpreter to use */ + Tcl_Obj *pathPtr; /* Absolute path to normalize */ + ClientData *clientDataPtr; { - ClientData clientData = NULL; - CONST char *dirSep, *oldDirSep; - int first = 1; /* Set to zero once we've passed the first - * directory separator - we can't use '..' to - * remove the volume in a path. */ - Tcl_Obj *retVal = NULL; - dirSep = Tcl_GetString(pathPtr); + int splen = 0, nplen, eltLen, i; + char *eltName; + Tcl_Obj *retVal; + Tcl_Obj *split; + Tcl_Obj *elt; - if (tclPlatform == TCL_PLATFORM_WINDOWS) { - if (dirSep[0] != 0 && dirSep[1] == ':' && - (dirSep[2] == '/' || dirSep[2] == '\\')) { - /* Do nothing */ - } else if ((dirSep[0] == '/' || dirSep[0] == '\\') - && (dirSep[1] == '/' || dirSep[1] == '\\')) { - /* - * UNC style path, where we must skip over the - * first separator, since the first two segments - * are actually inseparable. - */ - dirSep += 2; - dirSep += FindSplitPos(dirSep, '/'); - if (*dirSep != 0) { - dirSep++; - } - } - } + /* Split has refCount zero */ + split = Tcl_FSSplitPath(pathPtr, &splen); /* - * Scan forward from one directory separator to the next, - * checking for '..' and '.' sequences which must be handled - * specially. In particular handling of '..' can be complicated - * if the directory before is a link, since we will have to - * expand the link to be able to back up one level. + * Modify the list of entries in place, by removing '.', and + * removing '..' and the entry before -- unless that entry before + * is the top-level entry, i.e. the name of a volume. */ - while (*dirSep != 0) { - oldDirSep = dirSep; - dirSep += 1+FindSplitPos(dirSep+1, '/'); - if (dirSep[0] == 0 || dirSep[1] == 0) { - if (retVal != NULL) { - Tcl_AppendToObj(retVal, oldDirSep, dirSep - oldDirSep); - } - break; - } - if (dirSep[1] == '.') { - if (retVal != NULL) { - Tcl_AppendToObj(retVal, oldDirSep, dirSep - oldDirSep); - } - again: - if (IsSeparatorOrNull(dirSep[2])) { - /* Need to skip '.' in the path */ - if (retVal == NULL) { - CONST char *path = Tcl_GetString(pathPtr); - retVal = Tcl_NewStringObj(path, dirSep - path); - Tcl_IncrRefCount(retVal); - } - dirSep += 2; - if (dirSep[0] != 0 && dirSep[1] == '.') { - goto again; - } - continue; - } - if (dirSep[2] == '.' && IsSeparatorOrNull(dirSep[3])) { - Tcl_Obj *link; - int curLen; - char *linkStr; - /* Have '..' so need to skip previous directory */ - if (retVal == NULL) { - CONST char *path = Tcl_GetString(pathPtr); - retVal = Tcl_NewStringObj(path, dirSep - path); - Tcl_IncrRefCount(retVal); - } - if (!first) { - link = Tcl_FSLink(retVal, NULL, 0); - if (link != NULL) { - /* Got a link */ - Tcl_DecrRefCount(retVal); - retVal = link; - linkStr = Tcl_GetStringFromObj(retVal, &curLen); - /* Convert to forward-slashes on windows */ - if (tclPlatform == TCL_PLATFORM_WINDOWS) { - int i; - for (i = 0; i < curLen; i++) { - if (linkStr[i] == '\\') { - linkStr[i] = '/'; - } - } - } - } else { - linkStr = Tcl_GetStringFromObj(retVal, &curLen); - } - /* Either way, we now remove the last path element */ - while (--curLen > 0) { - if (IsSeparatorOrNull(linkStr[curLen])) { - Tcl_SetObjLength(retVal, curLen); - break; - } - } - } - dirSep += 3; - if (dirSep[0] != 0 && dirSep[1] == '.') { - goto again; - } - continue; + nplen = 0; + for (i = 0; i < splen; i++) { + Tcl_ListObjIndex(NULL, split, nplen, &elt); + eltName = Tcl_GetStringFromObj(elt, &eltLen); + + if ((eltLen == 1) && (eltName[0] == '.')) { + Tcl_ListObjReplace(NULL, split, nplen, 1, 0, NULL); + } else if ((eltLen == 2) + && (eltName[0] == '.') && (eltName[1] == '.')) { + if (nplen > 1) { + nplen--; + Tcl_ListObjReplace(NULL, split, nplen, 2, 0, NULL); + } else { + Tcl_ListObjReplace(NULL, split, nplen, 1, 0, NULL); } - } - first = 0; - if (retVal != NULL) { - Tcl_AppendToObj(retVal, oldDirSep, dirSep - oldDirSep); + } else { + nplen++; } } - - /* - * If we didn't make any changes, just use the input path - */ - if (retVal == NULL) { - retVal = pathPtr; - Tcl_IncrRefCount(retVal); + if (nplen > 0) { + ClientData clientData = NULL; - if (Tcl_IsShared(retVal)) { - /* - * Unfortunately, the platform-specific normalization code - * which will be called below has no way of dealing with the - * case where an object is shared. It is expecting to - * modify an object in place. So, we must duplicate this - * here to ensure an object with a single ref-count. - * - * If that changes in the future (e.g. the normalize proc is - * given one object and is able to return a different one), - * then we could remove this code. - */ - Tcl_DecrRefCount(retVal); - retVal = Tcl_DuplicateObj(pathPtr); - Tcl_IncrRefCount(retVal); - } - } - - /* - * Ensure a windows drive like C:/ has a trailing separator - */ - if (tclPlatform == TCL_PLATFORM_WINDOWS) { - int len; - CONST char *path = Tcl_GetStringFromObj(retVal, &len); - if (len == 2 && path[0] != 0 && path[1] == ':') { - if (Tcl_IsShared(retVal)) { - Tcl_DecrRefCount(retVal); - retVal = Tcl_DuplicateObj(retVal); - Tcl_IncrRefCount(retVal); - } - Tcl_AppendToObj(retVal, "/", 1); + retVal = Tcl_FSJoinPath(split, nplen); + /* + * Now we have an absolute path, with no '..', '.' sequences, + * but it still may not be in 'unique' form, depending on the + * platform. For instance, Unix is case-sensitive, so the + * path is ok. Windows is case-insensitive, and also has the + * weird 'longname/shortname' thing (e.g. C:/Program Files/ and + * C:/Progra~1/ are equivalent). MacOS is case-insensitive. + * + * Virtual file systems which may be registered may have + * other criteria for normalizing a path. + */ + Tcl_IncrRefCount(retVal); + TclFSNormalizeToUniquePath(interp, retVal, 0, &clientData); + /* + * Since we know it is a normalized path, we can + * actually convert this object into an "path" object for + * greater efficiency + */ + TclFSMakePathFromNormalized(interp, retVal, clientData); + if (clientDataPtr != NULL) { + *clientDataPtr = clientData; } + } else { + /* Init to an empty string */ + retVal = Tcl_NewStringObj("",0); + Tcl_IncrRefCount(retVal); } - - /* - * Now we have an absolute path, with no '..', '.' sequences, - * but it still may not be in 'unique' form, depending on the - * platform. For instance, Unix is case-sensitive, so the - * path is ok. Windows is case-insensitive, and also has the - * weird 'longname/shortname' thing (e.g. C:/Program Files/ and - * C:/Progra~1/ are equivalent). MacOS is case-insensitive. - * - * Virtual file systems which may be registered may have - * other criteria for normalizing a path. - */ - TclFSNormalizeToUniquePath(interp, retVal, 0, &clientData); /* - * Since we know it is a normalized path, we can - * actually convert this object into an FsPath for - * greater efficiency + * We increment and then decrement the refCount of split to free + * it. We do this right at the end, in case there are + * optimisations in Tcl_FSJoinPath(split, nplen) above which would + * let it make use of split more effectively if it has a refCount + * of zero. Also we can't just decrement the ref count, in case + * 'split' was actually returned by the join call above, in a + * single-element optimisation when nplen == 1. */ - TclFSMakePathFromNormalized(interp, retVal, clientData); - if (clientDataPtr != NULL) { - *clientDataPtr = clientData; - } + Tcl_IncrRefCount(split); + Tcl_DecrRefCount(split); /* This has a refCount of 1 for the caller */ return retVal; @@ -4589,6 +4479,9 @@ static void FreeFsPathInternalRep _ANSI_ARGS_((Tcl_Obj *listPtr)); static void UpdateStringOfFsPath _ANSI_ARGS_((Tcl_Obj *objPtr)); static int SetFsPathFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); +static int FindSplitPos _ANSI_ARGS_((char *path, char *separator)); + + /* * Define the 'path' object type, which Tcl uses to represent @@ -4992,45 +4885,20 @@ Tcl_FSConvertToPathType(interp, objPtr) } /* - * Helper function for normalization. - */ -static int -IsSeparatorOrNull(ch) - int ch; -{ - if (ch == 0) { - return 1; - } - switch (tclPlatform) { - case TCL_PLATFORM_UNIX: { - return (ch == '/' ? 1 : 0); - } - case TCL_PLATFORM_MAC: { - return (ch == ':' ? 1 : 0); - } - case TCL_PLATFORM_WINDOWS: { - return ((ch == '/' || ch == '\\') ? 1 : 0); - } - } - return 0; -} - -/* * Helper function for SetFsPathFromAny. Returns position of first - * directory delimiter in the path. If no separator is found, then - * returns the position of the end of the string. + * directory delimiter in the path. */ static int FindSplitPos(path, separator) - CONST char *path; - int separator; + char *path; + char *separator; { int count = 0; switch (tclPlatform) { case TCL_PLATFORM_UNIX: case TCL_PLATFORM_MAC: while (path[count] != 0) { - if (path[count] == separator) { + if (path[count] == *separator) { return count; } count++; @@ -5039,7 +4907,7 @@ FindSplitPos(path, separator) case TCL_PLATFORM_WINDOWS: while (path[count] != 0) { - if (path[count] == separator || path[count] == '\\') { + if (path[count] == *separator || path[count] == '\\') { return count; } count++; @@ -5700,14 +5568,12 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) * Path of form C:foo/bar, but this only makes * sense if the cwd is also on drive C. */ - int cwdLen; - CONST char *drive = Tcl_GetStringFromObj(useThisCwd, - &cwdLen); - char drive_cur = path[0]; - if (drive_cur >= 'a') { - drive_cur -= ('a' - 'A'); + CONST char *drive = Tcl_GetString(useThisCwd); + char drive_c = path[0]; + if (drive_c >= 'a') { + drive_c -= ('a' - 'A'); } - if (drive[0] == drive_cur) { + if (drive[0] == drive_c) { absolutePath = Tcl_DuplicateObj(useThisCwd); /* We have a refCount on the cwd */ } else { @@ -5723,10 +5589,7 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) absolutePath = Tcl_NewStringObj(path, 2); } Tcl_IncrRefCount(absolutePath); - if (drive[cwdLen-1] != '/') { - /* Only add a trailing '/' if needed */ - Tcl_AppendToObj(absolutePath, "/", 1); - } + Tcl_AppendToObj(absolutePath, "/", 1); Tcl_AppendToObj(absolutePath, path+2, -1); } #endif /* __WIN32__ */ @@ -6069,7 +5932,7 @@ SetFsPathFromAny(interp, objPtr) if (strchr(name, ':') != NULL) separator = ':'; } - split = FindSplitPos(name, separator); + split = FindSplitPos(name, &separator); if (split != len) { /* We have multiple pieces '~user/foo/bar...' */ name[split] = '\0'; -- cgit v0.12 From 1b45f8297f0b2cab2a3b775fb404ff655774243e Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 18 Feb 2004 02:05:13 +0000 Subject: note 8.4.6 tag --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index ee65d7d..309b6dd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-02-17 Jeff Hobbs + + *** 8.4.6 TAGGED FOR RELEASE *** + 2004-02-17 Don Porter * doc/tcltest.n: -- cgit v0.12 From b113aaa0fbe796a63f7df34aa5cb900cc3cdfe60 Mon Sep 17 00:00:00 2001 From: mdejong Date: Fri, 20 Feb 2004 05:27:16 +0000 Subject: * win/tclWinInit.c (AppendEnvironment): Use the tail component of the passed in lib path instead of just blindly using lib+4. That worked when lib was "lib/..." but fails for other values. Thanks go to Patrick Samson for pointing this out. --- ChangeLog | 9 +++++++++ win/tclWinInit.c | 27 +++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 309b6dd..77860a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-02-19 Mo DeJong + + * win/tclWinInit.c (AppendEnvironment): + Use the tail component of the passed in + lib path instead of just blindly using + lib+4. That worked when lib was "lib/..." + but fails for other values. Thanks go to + Patrick Samson for pointing this out. + 2004-02-17 Jeff Hobbs *** 8.4.6 TAGGED FOR RELEASE *** diff --git a/win/tclWinInit.c b/win/tclWinInit.c index 2a87937..96d6980 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.2 2003/11/10 20:32:34 dgp Exp $ + * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.3 2004/02/20 05:27:17 mdejong Exp $ */ #include "tclWinInt.h" @@ -362,6 +362,25 @@ AppendEnvironment( Tcl_Obj *objPtr; Tcl_DString ds; CONST char **pathv; + char *shortlib; + + /* + * The shortlib value needs to be the tail component of the + * lib path. For example, "lib/tcl8.4" -> "tcl8.4" while + * "usr/share/tcl8.5" -> "tcl8.5". + */ + for (shortlib = (char *) (lib + strlen(lib) - 1); shortlib > lib ; shortlib--) { + if (*shortlib == '/') { + if (shortlib == (lib + strlen(lib) - 1)) { + Tcl_Panic("last character in lib cannot be '/'"); + } + shortlib++; + break; + } + } + if (shortlib == lib) { + Tcl_Panic("no '/' character found in lib"); + } /* * The "L" preceeding the TCL_LIBRARY string is used to tell VC++ @@ -384,10 +403,10 @@ AppendEnvironment( /* * The lstrcmpi() will work even if pathv[pathc - 1] is random - * UTF-8 chars because I know lib is ascii. + * UTF-8 chars because I know shortlib is ascii. */ - if ((pathc > 0) && (lstrcmpiA(lib + 4, pathv[pathc - 1]) != 0)) { + if ((pathc > 0) && (lstrcmpiA(shortlib, pathv[pathc - 1]) != 0)) { CONST char *str; /* * TCL_LIBRARY is set but refers to a different tcl @@ -397,7 +416,7 @@ AppendEnvironment( * version string. */ - pathv[pathc - 1] = (lib + 4); + pathv[pathc - 1] = shortlib; Tcl_DStringInit(&ds); str = Tcl_JoinPath(pathc, pathv, &ds); objPtr = Tcl_NewStringObj(str, Tcl_DStringLength(&ds)); -- cgit v0.12 From e5310bc68d8feb471731e234e10536ef6828ffe0 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 Feb 2004 18:35:45 +0000 Subject: update changes for 8.4.6 release --- ChangeLog | 2 +- changes | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 77860a8..125f37c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -121,7 +121,7 @@ * generic/tclBinary.c (DeleteScanNumberCache, ScanNumber): Made the numeric scan-value cache have proper references to the objects within it so strange patterns of writes won't cause references to - freed objects. [Bug 851747] + freed objects. Thanks to Paul Obermeier for the report. [Bug 851747] 2003-12-01 Miguel Sofer diff --git a/changes b/changes index e32af6c..6c40281 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.5 2003/11/19 16:29:30 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.6 2004/02/20 18:35:48 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5926,3 +5926,30 @@ asked for writable events by the generic layer. various odd regexp "can't happen" bugs. --- Released 8.4.5, November 20, 2003 --- See ChangeLog for details --- + +2003-12-02 (bug fix)[851747] object sharing fix in [binary scan] + +2003-12-09 (platform support)[852369] update errno usage for recent glibc + +2003-12-12 (bug fix)[858937] fix for [file normalize ~nobody] + +2003-12-17 (bug fix)[839519] fixed two memory leaks (vasiljevic) + +2004-01-09 (bug fix)[873311] fixed infinite loop in TclFinalizeFilesystem + +2004-02-02 (bug fix)[405995] Tcl_Ungets buffer filling fix + +2004-02-04 (bug fix)[833910] tcltest command line option parsing error +=> tcltest 2.4.5 + +2004-02-04 (bug fix)[833637] code error in tcltest -preservecore operation + +2004-02-12 (feature enhancement) update HP-11 build libs setup + +2004-02-17 (bug fix)[849514,859251] corrected [file normailze] of $link/.. + +2004-02-17 (bug fix)[772288] Unix std channels forced to exist at startup. + +2004-02-17 (new default) tcltest::configure -verbose {body error} + +--- Released 8.4.6, February 27, 2004 --- See ChangeLog for details --- -- cgit v0.12 From 50a0199fe10d0229bca2a3a82c4399d1544e3f11 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 Feb 2004 20:44:47 +0000 Subject: stop compiler warning --- generic/tclTest.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclTest.c b/generic/tclTest.c index 835c602..d0b2bab 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.5 2003/11/17 18:12:08 dgp Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.6 2004/02/20 20:44:47 dgp Exp $ */ #define TCL_TEST @@ -3357,7 +3357,7 @@ TestregexpObjCmd(dummy, interp, objc, objv) Tcl_RegExpGetInfo(regExpr, &info); varName = Tcl_GetString(objv[2]); - sprintf(resinfo, "%d", info.extendStart); + sprintf(resinfo, "%ld", info.extendStart); value = Tcl_SetVar(interp, varName, resinfo, 0); if (value == NULL) { Tcl_AppendResult(interp, "couldn't set variable \"", -- cgit v0.12 From 8858a0f2c933c07a3c497ac705e2e06463a04ff3 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Wed, 25 Feb 2004 07:56:11 +0000 Subject: backport of BuildCommandLine changes to mirror msvcrt's parse_cmdline() rules of quoting --- tests/winPipe.test | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++--- win/tclWinPipe.c | 26 +++++------- 2 files changed, 125 insertions(+), 21 deletions(-) diff --git a/tests/winPipe.test b/tests/winPipe.test index 26a7e33..60e7dd5 100644 --- a/tests/winPipe.test +++ b/tests/winPipe.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winPipe.test,v 1.22 2002/12/17 02:47:39 davygrvy Exp $ +# RCS: @(#) $Id: winPipe.test,v 1.22.2.1 2004/02/25 07:56:11 davygrvy Exp $ package require tcltest namespace import -force ::tcltest::* @@ -315,12 +315,122 @@ set path(echoArgs.tcl) [makeFile { puts "[list $argv0 $argv]" } echoArgs.tcl] +### validate the raw output of BuildCommandLine(). +### test winpipe-7.1 {BuildCommandLine: null arguments} {pcOnly exec} { - exec [interpreter] $path(echoArgs.tcl) foo "" bar -} [list $path(echoArgs.tcl) {foo {} bar}] + exec $env(COMSPEC) /c echo foo "" bar +} {foo "" bar} test winpipe-7.2 {BuildCommandLine: null arguments} {pcOnly exec} { - exec [interpreter] $path(echoArgs.tcl) foo \" bar -} [list $path(echoArgs.tcl) {foo {"} bar}] + exec $env(COMSPEC) /c echo foo {} bar +} {foo "" bar} +test winpipe-7.3 {BuildCommandLine: dbl quote quoting #1} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo {"} bar +} {foo \" bar} +test winpipe-7.4 {BuildCommandLine: dbl quote quoting #2} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo {""} bar +} {foo \"\" bar} +test winpipe-7.5 {BuildCommandLine: dbl quote quoting #3} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo {" } bar +} {foo "\" " bar} +test winpipe-7.6 {BuildCommandLine: dbl quote quoting #4} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo {a="b"} bar +} {foo a=\"b\" bar} +test winpipe-7.7 {BuildCommandLine: dbl quote quoting #5} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo {a = "b"} bar +} {foo "a = \"b\"" bar} +test winpipe-7.8 {BuildCommandLine: dbl quote quoting #6} {pcOnly exec} { + exec $env(COMSPEC) /c echo {"hello"} {""hello""} {"""hello"""} {"\"hello\""} {he llo} {he " llo} +} {\"hello\" \"\"hello\"\" \"\"\"hello\"\"\" \"\\\"hello\\\"\" "he llo" "he \" llo"} +test winpipe-7.9 {BuildCommandLine: N backslashes followed a quote rule #1} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \\ bar +} {foo \ bar} +test winpipe-7.10 {BuildCommandLine: N backslashes followed a quote rule #2} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \\\\ bar +} {foo \\ bar} +test winpipe-7.11 {BuildCommandLine: N backslashes followed a quote rule #3} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \\\ \\ bar +} {foo "\ \\" bar} +test winpipe-7.12 {BuildCommandLine: N backslashes followed a quote rule #4} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \\\ \\\\ bar +} {foo "\ \\\\" bar} +test winpipe-7.13 {BuildCommandLine: N backslashes followed a quote rule #5} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \\\ \\\\\\ bar +} {foo "\ \\\\\\" bar} +test winpipe-7.14 {BuildCommandLine: N backslashes followed a quote rule #6} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \\\ \\\" bar +} {foo "\ \\\"" bar} +test winpipe-7.15 {BuildCommandLine: N backslashes followed a quote rule #7} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \\\ \\\\\" bar +} {foo "\ \\\\\"" bar} +test winpipe-7.16 {BuildCommandLine: N backslashes followed a quote rule #8} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \\\ \\\\\\\" bar +} {foo "\ \\\\\\\"" bar} +test winpipe-7.17 {BuildCommandLine: special chars #4} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \{ bar +} "foo \{ bar" +test winpipe-7.18 {BuildCommandLine: special chars #5} {pcOnly exec} { + exec $env(COMSPEC) /c echo foo \} bar +} "foo \} bar" + +### validate the pass-thru from BuildCommandLine() to the crt's parse_cmdline(). +### +test winpipe-8.1 {BuildCommandLine/parse_cmdline pass-thru: null arguments} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo "" bar +} [list $path(echoArgs.tcl) [list foo {} bar]] +test winpipe-8.2 {BuildCommandLine/parse_cmdline pass-thru: null arguments} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo {} bar +} [list $path(echoArgs.tcl) [list foo {} bar]] +test winpipe-8.3 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #1} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo {"} bar +} [list $path(echoArgs.tcl) [list foo {"} bar]] +test winpipe-8.4 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #2} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo {""} bar +} [list $path(echoArgs.tcl) [list foo {""} bar]] +test winpipe-8.5 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #3} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo {" } bar +} [list $path(echoArgs.tcl) [list foo {" } bar]] +test winpipe-8.6 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #4} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo {a="b"} bar +} [list $path(echoArgs.tcl) [list foo {a="b"} bar]] +test winpipe-8.7 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #5} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo {a = "b"} bar +} [list $path(echoArgs.tcl) [list foo {a = "b"} bar]] +test winpipe-8.8 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #6} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) {"hello"} {""hello""} {"""hello"""} {"\"hello\""} {he llo} {he " llo} +} [list $path(echoArgs.tcl) [list {"hello"} {""hello""} {"""hello"""} {"\"hello\""} {he llo} {he " llo}]] +test winpipe-8.9 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #1} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \\ bar +} [list $path(echoArgs.tcl) [list foo \\ bar]] +test winpipe-8.10 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #2} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \\\\ bar +} [list $path(echoArgs.tcl) [list foo \\\\ bar]] +test winpipe-8.11 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #3} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \\\ \\ bar +} [list $path(echoArgs.tcl) [list foo \\\ \\ bar]] +test winpipe-8.12 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #4} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \\\ \\\\ bar +} [list $path(echoArgs.tcl) [list foo \\\ \\\\ bar]] +test winpipe-8.13 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #5} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \\\ \\\\\\ bar +} [list $path(echoArgs.tcl) [list foo \\\ \\\\\\ bar]] +test winpipe-8.14 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #6} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \\\ \\\" bar +} [list $path(echoArgs.tcl) [list foo \\\ \\\" bar]] +test winpipe-8.15 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #7} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \\\ \\\\\" bar +} [list $path(echoArgs.tcl) [list foo \\\ \\\\\" bar]] +test winpipe-8.16 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #8} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \\\ \\\\\\\" bar +} [list $path(echoArgs.tcl) [list foo \\\ \\\\\\\" bar]] +test winpipe-8.17 {BuildCommandLine/parse_cmdline pass-thru: special chars #1} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \{ bar +} [list $path(echoArgs.tcl) [list foo \{ bar]] +test winpipe-8.18 {BuildCommandLine/parse_cmdline pass-thru: special chars #2} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo \} bar +} [list $path(echoArgs.tcl) [list foo \} bar]] +test winpipe-8.19 {ensure parse_cmdline isn't doing wildcard replacement} {pcOnly exec} { + exec [interpreter] $path(echoArgs.tcl) foo * makefile.?c bar +} [list $path(echoArgs.tcl) [list foo * makefile.?c bar]] # restore old values for env(TMP) and env(TEMP) diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 320f99e..ffc6429 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.5 2003/10/21 22:57:18 andreas_kupries Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.6 2004/02/25 07:56:21 davygrvy Exp $ */ #include "tclWinInt.h" @@ -1577,10 +1577,9 @@ BuildCommandLine( arg = executable; } else { arg = argv[i]; + Tcl_DStringAppend(&ds, " ", 1); } - if(Tcl_DStringLength(&ds) > 0) Tcl_DStringAppend(&ds, " ", 1); - quote = 0; if (arg[0] == '\0') { quote = 1; @@ -1598,47 +1597,42 @@ BuildCommandLine( if (quote) { Tcl_DStringAppend(&ds, "\"", 1); } - start = arg; for (special = arg; ; ) { if ((*special == '\\') && - (special[1] == '\\' || special[1] == '"')) { - Tcl_DStringAppend(&ds, start, special - start); + (special[1] == '\\' || special[1] == '"' || (quote && special[1] == '\0'))) { + Tcl_DStringAppend(&ds, start, (int) (special - start)); start = special; while (1) { special++; - if (*special == '"') { + if (*special == '"' || (quote && *special == '\0')) { /* * N backslashes followed a quote -> insert * N * 2 + 1 backslashes then a quote. */ - Tcl_DStringAppend(&ds, start, special - start); + Tcl_DStringAppend(&ds, start, + (int) (special - start)); break; } if (*special != '\\') { break; } } - Tcl_DStringAppend(&ds, start, special - start); + Tcl_DStringAppend(&ds, start, (int) (special - start)); start = special; } if (*special == '"') { - Tcl_DStringAppend(&ds, start, special - start); + Tcl_DStringAppend(&ds, start, (int) (special - start)); Tcl_DStringAppend(&ds, "\\\"", 2); start = special + 1; } - if (*special == '{') { - Tcl_DStringAppend(&ds, start, special - start); - Tcl_DStringAppend(&ds, "\\{", 2); - start = special + 1; - } if (*special == '\0') { break; } special++; } - Tcl_DStringAppend(&ds, start, special - start); + Tcl_DStringAppend(&ds, start, (int) (special - start)); if (quote) { Tcl_DStringAppend(&ds, "\"", 1); } -- cgit v0.12 From 1e76f7624f6d210e8c35bcdd7cb8d060a5d1d9d2 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Wed, 25 Feb 2004 07:58:39 +0000 Subject: no message --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 125f37c..5a9c7ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-02-25 David Gravereaux + + * tests/winPipe.test: + * win/tclWinPipe.c: backport of BuildCommandLine changes to mirror + msvcrt's parse_cmdline() rules of quoting. + 2004-02-19 Mo DeJong * win/tclWinInit.c (AppendEnvironment): -- cgit v0.12 From 55a84d83113bfd6b1c28779a61f92ea760695a96 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 25 Feb 2004 14:54:36 +0000 Subject: Fix memleak with long hostnames. [Bug 888777] --- ChangeLog | 5 +++++ unix/tclUnixChan.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5a9c7ed..c87f02f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-02-25 Donal K. Fellows + + * unix/tclUnixChan.c (TcpGetOptionProc): Stop memory leak with + very long hostnames. [Bug 888777] + 2004-02-25 David Gravereaux * tests/winPipe.test: diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 7b6f59f..794e8dd 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.1 2003/10/23 17:49:06 andreas_kupries Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.2 2004/02/25 14:54:52 dkf Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -2289,6 +2289,7 @@ TcpGetOptionProc(instanceData, interp, optionName, dsPtr) Tcl_ExternalToUtfDString(NULL, hostEntPtr->h_name, -1, &ds); Tcl_DStringAppendElement(dsPtr, Tcl_DStringValue(&ds)); + Tcl_DStringFree(&ds); } else { Tcl_DStringAppendElement(dsPtr, inet_ntoa(peername.sin_addr)); } @@ -2335,6 +2336,7 @@ TcpGetOptionProc(instanceData, interp, optionName, dsPtr) Tcl_ExternalToUtfDString(NULL, hostEntPtr->h_name, -1, &ds); Tcl_DStringAppendElement(dsPtr, Tcl_DStringValue(&ds)); + Tcl_DStringFree(&ds); } else { Tcl_DStringAppendElement(dsPtr, inet_ntoa(sockname.sin_addr)); } -- cgit v0.12 From ef0b541994832ec80dd874d09c0887d2f55716aa Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 25 Feb 2004 23:38:14 +0000 Subject: * tests/basic.test: Made several tests more robust to the * tests/cmdMZ.test: list-quoting of path names that might * tests/exec.test: contain Tcl-special chars like { or [. * tests/io.test: Should help us sort out Tcl Bug 554068. * tests/pid.test: * tests/socket.test: * tests/source.test: * tests/unixInit.test: --- ChangeLog | 11 +++++++ tests/basic.test | 60 +++++++++++++++++++---------------- tests/cmdMZ.test | 27 ++++++++++++---- tests/exec.test | 17 +++++----- tests/io.test | 90 +++++++++++++++++++++++++++++------------------------ tests/pid.test | 4 +-- tests/socket.test | 32 ++++++++++++------- tests/source.test | 23 +++++++++++--- tests/unixInit.test | 8 ++--- 9 files changed, 170 insertions(+), 102 deletions(-) diff --git a/ChangeLog b/ChangeLog index c87f02f..84920be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2004-02-25 Don Porter + + * tests/basic.test: Made several tests more robust to the + * tests/cmdMZ.test: list-quoting of path names that might + * tests/exec.test: contain Tcl-special chars like { or [. + * tests/io.test: Should help us sort out Tcl Bug 554068. + * tests/pid.test: + * tests/socket.test: + * tests/source.test: + * tests/unixInit.test: + 2004-02-25 Donal K. Fellows * unix/tclUnixChan.c (TcpGetOptionProc): Stop memory leak with diff --git a/tests/basic.test b/tests/basic.test index 11b7bed..c86111c 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.25.2.1 2003/05/05 16:52:33 dkf Exp $ +# RCS: @(#) $Id: basic.test,v 1.25.2.2 2004/02/25 23:38:15 dgp Exp $ # package require tcltest 2 @@ -580,63 +580,71 @@ test basic-46.1 {Tcl_AllowExceptions: exception return not allowed} {stdio} { DONE }} -test basic-46.2 {Tcl_AllowExceptions: exception return not allowed} {exec} { +test basic-46.2 {Tcl_AllowExceptions: exception return not allowed} -setup { set fName [makeFile { puts hello break } BREAKtest] - set res [list [catch {exec [interpreter] $fName} msg] $msg] +} -constraints { + exec +} -body { + exec [interpreter] $fName +} -cleanup { removeFile BREAKtest - regsub {file ".*BREAKtest"} $res {file "BREAKtest"} res - set res -} {1 {hello +} -returnCodes error -match glob -result {hello invoked "break" outside of a loop while executing "break" - (file "BREAKtest" line 3)}} + (file "*BREAKtest" line 3)} -test basic-46.3 {Tcl_AllowExceptions: exception return not allowed} {exec} { +test basic-46.3 {Tcl_AllowExceptions: exception return not allowed} -setup { set fName [makeFile { interp alias {} patch {} info patchlevel patch break } BREAKtest] - set res [list [catch {exec [interpreter] $fName} msg] $msg] +} -constraints { + exec +} -body { + exec [interpreter] $fName +} -cleanup { removeFile BREAKtest - regsub {file ".*BREAKtest"} $res {file "BREAKtest"} res - set res -} {1 {invoked "break" outside of a loop +} -returnCodes error -match glob -result {invoked "break" outside of a loop while executing "break" - (file "BREAKtest" line 4)}} + (file "*BREAKtest" line 4)} -test basic-46.4 {Tcl_AllowExceptions: exception return not allowed} {exec} { +test basic-46.4 {Tcl_AllowExceptions: exception return not allowed} -setup { set fName [makeFile { foo [set a 1] [break] } BREAKtest] - set res [list [catch {exec [interpreter] $fName} msg] $msg] +} -constraints { + exec +} -body { + exec [interpreter] $fName +} -cleanup { removeFile BREAKtest - regsub {file ".*BREAKtest"} $res {file "BREAKtest"} res - set res -} {1 {invoked "break" outside of a loop +} -returnCodes error -match glob -result {invoked "break" outside of a loop while executing "break" invoked from within -"foo [set a 1] [break]" - (file "BREAKtest" line 2)}} +"foo \[set a 1] \[break]" + (file "*BREAKtest" line 2)} -test basic-46.5 {Tcl_AllowExceptions: exception return not allowed} {exec} { +test basic-46.5 {Tcl_AllowExceptions: exception return not allowed} -setup { set fName [makeFile { return -code return } BREAKtest] - set res [list [catch {exec [interpreter] $fName} msg] $msg] +} -constraints { + exec +} -body { + exec [interpreter] $fName +} -cleanup { removeFile BREAKtest - regsub {file ".*BREAKtest"} $res {file "BREAKtest"} res - set res -} {1 {command returned bad code: 2 +} -returnCodes error -match glob -result {command returned bad code: 2 while executing "return -code return" - (file "BREAKtest" line 2)}} + (file "*BREAKtest" line 2)} test basic-47.1 {Tcl_EvalEx: check for missing close-bracket} -body { subst {a[set b [format cd]} diff --git a/tests/cmdMZ.test b/tests/cmdMZ.test index 8835764..1e9a58a 100644 --- a/tests/cmdMZ.test +++ b/tests/cmdMZ.test @@ -11,10 +11,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: cmdMZ.test,v 1.13.2.2 2003/11/12 17:29:10 hobbs Exp $ +# RCS: @(#) $Id: cmdMZ.test,v 1.13.2.3 2004/02/25 23:38:16 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest 2 + package require tcltest 2.1 namespace import -force ::tcltest::* } @@ -84,16 +84,31 @@ test cmdMZ-3.3 {Tcl_SourceObjCmd: error conditions} {unixOrPc} { test cmdMZ-3.4 {Tcl_SourceObjCmd: error conditions} {unixOrPc} { list [catch {source a b} msg] $msg } {1 {wrong # args: should be "source fileName"}} -test cmdMZ-3.5 {Tcl_SourceObjCmd: error in script} -body { + +proc ListGlobMatch {expected actual} { + if {[llength $expected] != [llength $actual]} { + return 0 + } + foreach e $expected a $actual { + if {![string match $e $a]} { + return 0 + } + } + return 1 +} +customMatch listGlob ListGlobMatch + +test cmdMZ-3.5 {Tcl_SourceObjCmd: error in script} -setup { set file [makeFile { set x 146 error "error in sourced file" set y $x } source.file] - set result [list [catch {source $file} msg] $msg $errorInfo] +} -body { + list [catch {source $file} msg] $msg $errorInfo +} -cleanup { removeFile source.file - set result -} -match glob -result {1 {error in sourced file} {error in sourced file +} -match listGlob -result {1 {error in sourced file} {error in sourced file while executing "error "error in sourced file"" (file "*" line 3) diff --git a/tests/exec.test b/tests/exec.test index c5223aa..2da0b7e 100644 --- a/tests/exec.test +++ b/tests/exec.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: exec.test,v 1.16.2.1 2003/10/07 18:53:23 dgp Exp $ +# RCS: @(#) $Id: exec.test,v 1.16.2.2 2004/02/25 23:38:16 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -420,7 +420,7 @@ test exec-11.4 {commands in background} {exec stdio} { } 3 test exec-11.5 {commands in background} {exec} { set f [open $path(gorp.file) w] - puts $f [format { catch { exec [info nameofexecutable] {%s} foo & } } $path(echo)] + puts $f [list catch [list exec [info nameofexecutable] $path(echo) foo &]] close $f string compare "foo" [exec [interpreter] $path(gorp.file)] } 0 @@ -567,12 +567,13 @@ set path(script) [makeFile {} script] test exec-17.1 { inheriting standard I/O } {exec} { set f [open $path(script) w] - puts $f [format {close stdout - set f [open {%s} w] - catch {exec [info nameofexecutable] {%s} foobar &} - exec [info nameofexecutable] {%s} 2 - close $f - } $path(gorp.file) $path(echo) $path(sleep)] + puts -nonewline $f {close stdout + set f [} + puts $f [list open $path(gorp.file) w]] + puts $f [list catch \ + [list exec [info nameofexecutable] $path(echo) foobar &]] + puts $f [list exec [info nameofexecutable] $path(sleep) 2] + puts $f {close $f} close $f catch {exec [interpreter] $path(script)} result set f [open $path(gorp.file) r] diff --git a/tests/io.test b/tests/io.test index e9531e1..8ce7f4e 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.2 2003/10/07 21:37:48 dgp Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.3 2004/02/25 23:38:16 dgp Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -1582,20 +1582,21 @@ set path(test3) [makeFile {} test3] test io-14.3 {Tcl_SetStdChannel & Tcl_GetStdChannel} {exec openpipe} { set f [open $path(test1) w] - puts $f [format { + puts -nonewline $f { close stdin close stdout close stderr - set f [open "%s" r] - set f2 [open "%s" w] - set f3 [open "%s" w] - puts stdout [gets stdin] + set f [} + puts $f [list open $path(test1) r]] + puts $f "set f2 \[[list open $path(test2) w]]" + puts $f "set f3 \[[list open $path(test3) w]]" + puts $f { puts stdout [gets stdin] puts stdout out puts stderr err close $f close $f2 close $f3 - } $path(test1) $path(test2) $path(test3)] + } close $f set result [exec [interpreter] $path(test1)] set f [open $path(test2) r] @@ -1611,19 +1612,20 @@ out # This test relies on the fact that the smallest available fd is used first. test io-14.4 {Tcl_SetStdChannel & Tcl_GetStdChannel} {exec unixOnly} { set f [open $path(test1) w] - puts $f [format { close stdin + puts -nonewline $f { close stdin close stdout close stderr - set f [open "%s" r] - set f2 [open "%s" w] - set f3 [open "%s" w] - puts stdout [gets stdin] + set f [} + puts $f [list open $path(test1) r]] + puts $f "set f2 \[[list open $path(test2) w]]" + puts $f "set f3 \[[list open $path(test3) w]]" + puts $f { puts stdout [gets stdin] puts stdout $f2 puts stderr $f3 close $f close $f2 close $f3 - } $path(test1) $path(test2) $path(test3)] + } close $f set result [exec [interpreter] $path(test1)] set f [open $path(test2) r] @@ -1674,14 +1676,18 @@ test io-14.8 {reuse of stdio special channels} {stdio openpipe} { file delete $path(script) file delete $path(test1) set f [open $path(script) w] - puts $f [format { + puts -nonewline $f { close stderr - set f [open "%s" w] + set f [} + puts $f [list open $path(test1) w]] + puts -nonewline $f { puts stderr hello close $f - set f [open "%s" r] + set f [} + puts $f [list open $path(test1) r]] + puts $f { puts [gets $f] - } $path(test1) $path(test1)] + } close $f set f [open "|[list [interpreter] $path(script)]" r] set c [gets $f] @@ -1876,12 +1882,14 @@ set path(stdout) [makeFile {} stdout] test io-20.5 {Tcl_CreateChannel: install channel in empty slot} {stdio openpipe} { set f [open $path(script) w] - puts $f [format { + puts -nonewline $f { close stdout - set f1 [open "%s" w] + set f1 [} + puts $f [list open $path(stdout) w]] + puts $f { fconfigure $f1 -buffersize 777 puts stderr [fconfigure stdout -buffersize] - } $path(stdout)] + } close $f set f [open "|[list [interpreter] $path(script)]"] catch {close $f} msg @@ -2029,15 +2037,15 @@ test io-27.6 {FlushChannel, async flushing, async close} \ file delete $path(pipe) file delete $path(output) set f [open $path(pipe) w] - puts $f [format { - set f [open "%s" w] + puts $f "set f \[[list open $path(output) w]]" + puts $f { fconfigure $f -translation lf -buffering none -eofchar {} while {![eof stdin]} { after 20 puts -nonewline $f [read stdin 1024] } close $f - } $path(output)] + } close $f set x 01234567890123456789012345678901 for {set i 0} {$i < 11} {incr i} { @@ -2295,12 +2303,12 @@ test io-29.12 {Tcl_WriteChars on a pipe} {stdio openpipe} { file delete $path(test1) file delete $path(pipe) set f1 [open $path(pipe) w] - puts $f1 [format { - set f1 [open "%s" r] + puts $f1 "set f1 \[[list open $path(longfile) r]]" + puts $f1 { for {set x 0} {$x < 10} {incr x} { puts [gets $f1] } - } $path(longfile)] + } close $f1 set f1 [open "|[list [interpreter] $path(pipe)]" r] set f2 [open $path(longfile) r] @@ -2591,7 +2599,7 @@ test io-29.31 {Tcl_WriteChars, background flush} {stdio openpipe} { file delete $path(pipe) file delete $path(output) set f [open $path(pipe) w] - puts $f [format {set f [open "%s" w]} $path(output)] + puts $f "set f \[[list open $path(output) w]]" puts $f {fconfigure $f -translation lf} set x [list while {![eof stdin]}] set x "$x {" @@ -2628,7 +2636,7 @@ test io-29.32 {Tcl_WriteChars, background flush to slow reader} \ file delete $path(pipe) file delete $path(output) set f [open $path(pipe) w] - puts $f [format {set f [open {%s} w]} $path(output)] + puts $f "set f \[[list open $path(output) w]]" puts $f {fconfigure $f -translation lf} set x [list while {![eof stdin]}] set x "$x \{" @@ -2663,13 +2671,12 @@ test io-29.32 {Tcl_WriteChars, background flush to slow reader} \ } ok test io-29.33 {Tcl_Flush, implicit flush on exit} {exec} { set f [open $path(script) w] - puts $f [format { - set f [open "%s" w] - fconfigure $f -translation lf + puts $f "set f \[[list open $path(test1) w]]" + puts $f {fconfigure $f -translation lf puts $f hello puts $f bye puts $f strange - } $path(test1)] + } close $f exec [interpreter] $path(script) set f [open $path(test1) r] @@ -5521,14 +5528,15 @@ testConstraint testfevent [llength [info commands testfevent]] test io-46.1 {Tcl event loop vs multiple interpreters} {testfevent fileevent} { testfevent create - testfevent cmd [format { - set f [open {%s} r] + set script "set f \[[list open $path(foo) r]]\n" + append script { set x "no event" fileevent $f readable [namespace code { set x "f triggered: [gets $f]" fileevent $f readable {} }] - } $path(foo)] + } + testfevent cmd $script after 1 ;# We must delay because Windows takes a little time to notice update testfevent cmd {close $f} @@ -5756,8 +5764,8 @@ test io-48.3 {testing readability conditions} {stdio unixOnly nonBlockFiles open } set l "" variable x not_done - puts $f [format {source {%s}} $path(my_script)] - puts $f [format {set f [open {%s} r]} $path(bar)] + puts $f [list source $path(my_script)] + puts $f "set f \[[list open $path(bar) r]]" puts $f {copy_slowly $f} puts $f {exit} vwait [namespace which -variable x] @@ -6659,16 +6667,18 @@ test io-53.3 {CopyData: background read underflow} {stdio unixOnly openpipe fcop file delete $path(test1) file delete $path(pipe) set f1 [open $path(pipe) w] - puts $f1 [format { + puts -nonewline $f1 { puts ready flush stdout ;# Don't assume line buffered! fcopy stdin stdout -command { set x } vwait x - set f [open "%s" w] + set f [} + puts $f1 [list open $path(test1) w]] + puts $f1 { fconfigure $f -translation lf puts $f "done" close $f - } $path(test1)] + } close $f1 set f1 [open "|[list [interpreter] $path(pipe)]" r+] set result [gets $f1] diff --git a/tests/pid.test b/tests/pid.test index 9e8fcce..45c1278 100644 --- a/tests/pid.test +++ b/tests/pid.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pid.test,v 1.8.2.1 2003/10/07 18:53:23 dgp Exp $ +# RCS: @(#) $Id: pid.test,v 1.8.2.2 2004/02/25 23:38:17 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -33,7 +33,7 @@ test pid-1.2 {pid command} -constraints {unixOrPc unixExecs} -setup { set path(test1) [makeFile {} test1] file delete $path(test1) } -body { - set f [open [format {| echo foo | cat {>%s}} $path(test1)] w] + set f [open |[list echo foo | cat >$path(test1)] w] set pids [pid $f] close $f list [llength $pids] [regexp {^[0-9]+$} [lindex $pids 0]] \ diff --git a/tests/socket.test b/tests/socket.test index 61d461d..63e7a26 100644 --- a/tests/socket.test +++ b/tests/socket.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: socket.test,v 1.26.2.1 2003/10/07 18:53:23 dgp Exp $ +# RCS: @(#) $Id: socket.test,v 1.26.2.2 2004/02/25 23:38:17 dgp Exp $ # Running socket tests with a remote server: # ------------------------------------------ @@ -1415,17 +1415,19 @@ test socket-12.1 {testing inheritance of server sockets} {socket stdio exec} { set f [open $path(script2) w] puts $f [list set tcltest [interpreter]] - puts $f [format { + puts -nonewline $f { set f [socket -server accept 0] puts [lindex [fconfigure $f -sockname] 2] proc accept { file addr port } { close $file } - exec $tcltest "%s" & + exec $tcltest } + puts $f [list $path(script1) &] + puts $f { close $f after 1000 exit vwait forever - } $path(script1)] + } close $f # Launch script2 and wait 5 seconds @@ -1469,15 +1471,17 @@ test socket-12.2 {testing inheritance of client sockets} {socket stdio exec} { set f [open $path(script2) w] puts $f [list set tcltest [interpreter]] - puts $f [format { + puts -nonewline $f { gets stdin port set f [socket 127.0.0.1 $port] - exec $tcltest "%s" & + exec $tcltest } + puts $f [list $path(script1) &] + puts $f { puts $f testing flush $f after 1000 exit vwait forever - } $path(script1)] + } close $f # Create the server socket @@ -1547,17 +1551,23 @@ test socket-12.3 {testing inheritance of accepted sockets} {socket stdio exec} { set f [open $path(script2) w] puts $f [list set tcltest [interpreter]] - puts $f [format { + puts -nonewline $f { set server [socket -server accept 0] puts stdout [lindex [fconfigure $server -sockname] 2] - proc accept { file host port } { + proc accept { file host port } } + puts $f \{ + puts -nonewline $f { global tcltest puts $file {test data on socket} - exec $tcltest "%s" & + exec $tcltest } + puts $f [list $path(script1) &] + puts $f { after 1000 exit } + puts $f \} + puts $f { vwait forever - } $path(script1)] + } close $f # Launch the script2 process and connect to it. See how long diff --git a/tests/source.test b/tests/source.test index c603c1b..6417af7 100644 --- a/tests/source.test +++ b/tests/source.test @@ -12,10 +12,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: source.test,v 1.8.2.1 2003/10/07 18:53:23 dgp Exp $ +# RCS: @(#) $Id: source.test,v 1.8.2.2 2004/02/25 23:38:17 dgp Exp $ -if {[catch {package require tcltest 2.0.2}]} { - puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." +if {[catch {package require tcltest 2.1}]} { + puts stderr "Skipping tests in [info script]. tcltest 2.1 required." return } @@ -25,6 +25,7 @@ namespace eval ::tcl::test::source { namespace import ::tcltest::cleanupTests namespace import ::tcltest::makeFile namespace import ::tcltest::removeFile + namespace import ::tcltest::customMatch test source-1.1 {source command} -setup { set x "old x value" @@ -63,6 +64,18 @@ test source-1.3 {source command} -setup { removeFile source.file } -result {a b c d e f} +proc ListGlobMatch {expected actual} { + if {[llength $expected] != [llength $actual]} { + return 0 + } + foreach e $expected a $actual { + if {![string match $e $a]} { + return 0 + } + } + return 1 +} +customMatch listGlob [namespace which ListGlobMatch] test source-2.3 {source error conditions} -setup { set sourcefile [makeFile { @@ -74,7 +87,7 @@ test source-2.3 {source error conditions} -setup { list [catch {source $sourcefile} msg] $msg $::errorInfo } -cleanup { removeFile source.file -} -match glob -result [list 1 {error in sourced file} \ +} -match listGlob -result [list 1 {error in sourced file} \ {error in sourced file while executing "error "error in sourced file"" @@ -103,7 +116,7 @@ test source-2.6 {source error conditions} -setup { removeFile _non_existent_ } -body { list [catch {source $sourcefile} msg] $msg $::errorCode -} -match glob -result [list 1 \ +} -match listGlob -result [list 1 \ {couldn't read file "*_non_existent_": no such file or directory} \ {POSIX ENOENT {no such file or directory}}] diff --git a/tests/unixInit.test b/tests/unixInit.test index 27f10b9..8560a1e 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.5 2004/02/18 01:30:14 hobbs Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.6 2004/02/25 23:38:17 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -359,10 +359,10 @@ test unixInit-7.1 {closed standard channel: Bug 772288} -constraints { } -body { set tclsh [interpreter] makeFile {puts [open /dev/null]} crash.tcl - makeFile [subst -nocommands { + makeFile " close stdin - exec $tclsh crash.tcl - }] crashtest.tcl + [list exec $tclsh crash.tcl] + " crashtest.tcl exec $tclsh crashtest.tcl } -cleanup { removeFile crash.tcl -- cgit v0.12 From 04c0b11f75a9f5f3c0e1071888e36223d3117a1a Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 26 Feb 2004 00:30:51 +0000 Subject: moved core-8-4-6 release tag --- ChangeLog | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84920be..60fbdc7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-02-25 Don Porter + *** 8.4.6 TAGGED FOR RELEASE *** + * tests/basic.test: Made several tests more robust to the * tests/cmdMZ.test: list-quoting of path names that might * tests/exec.test: contain Tcl-special chars like { or [. @@ -29,10 +31,6 @@ but fails for other values. Thanks go to Patrick Samson for pointing this out. -2004-02-17 Jeff Hobbs - - *** 8.4.6 TAGGED FOR RELEASE *** - 2004-02-17 Don Porter * doc/tcltest.n: -- cgit v0.12 From 754c0852ab501fec0150360756a06d3918a9cc25 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 26 Feb 2004 09:10:40 +0000 Subject: * macosx/Makefile: fixed copyright year in Tcl.framework Info.plist --- ChangeLog | 6 +++++- macosx/Makefile | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 60fbdc7..bef0d58 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,11 @@ -2004-02-25 Don Porter +2004-02-26 Daniel Steffen *** 8.4.6 TAGGED FOR RELEASE *** + * macosx/Makefile: fixed copyright year in Tcl.framework Info.plist + +2004-02-25 Don Porter + * tests/basic.test: Made several tests more robust to the * tests/cmdMZ.test: list-quoting of path names that might * tests/exec.test: contain Tcl-special chars like { or [. diff --git a/macosx/Makefile b/macosx/Makefile index 96a3d14..eee15af 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -3,7 +3,7 @@ # Makefile to build Tcl on Mac OS X packaged as a Framework # uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5.2.7 2003/11/06 13:12:23 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.8 2004/02/26 09:10:40 das Exp $ # ######################################################################################################## @@ -92,6 +92,7 @@ PRODUCT_VERSION := $(shell eval $$(grep '^TCL_VERSION=' ${UNIX_DIR}/configure.i echo "$${TCL_VERSION}") PRODUCT_LONGVERSION := $(shell eval $$(grep '^TCL_PATCH_LEVEL=' ${UNIX_DIR}/configure.in); \ echo "${PRODUCT_VERSION}$${TCL_PATCH_LEVEL}") +YEAR := $(shell date +%Y) PRIVATE_HEADERS := tclInt.h tclIntDecls.h tclIntPlatDecls.h tclMath.h TARGETS := tclsh tcltest @@ -210,7 +211,7 @@ endif CFBundleExecutable\n\ Tcl\n\ CFBundleGetInfoString\n\ - Tcl Library ${PRODUCT_VERSION}, Copyright © 2003 Tcl Core Team.\n\ + Tcl Library ${PRODUCT_VERSION}, Copyright © ${YEAR} Tcl Core Team.\n\ MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright\ © 2001-2002, Apple Computer, Inc.\n\ CFBundleIdentifier\n\ -- cgit v0.12 From 533cffb36c60635f6401dd91acb3ce4ca0013d07 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 1 Mar 2004 17:33:20 +0000 Subject: * generic/tclCmdMZ.c (TclCheckInterpTraces): The TIP 62 * generic/tclTest.c (TestcmdtraceCmd): implementation introduced a * tests/basic.test (basic-39.10): bug by testing the CallFrame level instead of the iPtr->numLevels level when deciding what traces created by Tcl_Create(Obj)Trace to call. Added test to expose the error, and made fix. [Request 462580] --- ChangeLog | 9 +++++++++ generic/tclCmdMZ.c | 4 ++-- generic/tclTest.c | 14 +++++++++++++- tests/basic.test | 11 ++++++++++- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index bef0d58..363ec88 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-03-01 Don Porter + + * generic/tclCmdMZ.c (TclCheckInterpTraces): The TIP 62 + * generic/tclTest.c (TestcmdtraceCmd): implementation introduced a + * tests/basic.test (basic-39.10): bug by testing the CallFrame + level instead of the iPtr->numLevels level when deciding what traces + created by Tcl_Create(Obj)Trace to call. Added test to expose the + error, and made fix. [Request 462580] + 2004-02-26 Daniel Steffen *** 8.4.6 TAGGED FOR RELEASE *** diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 53f9cb1..09c3853 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.10 2004/02/17 04:54:51 hobbs Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.11 2004/03/01 17:33:21 dgp Exp $ */ #include "tclInt.h" @@ -4305,7 +4305,7 @@ TclCheckInterpTraces(interp, command, numChars, cmdPtr, code, return(traceCode); } - curLevel = ((iPtr->varFramePtr == NULL) ? 0 : iPtr->varFramePtr->level); + curLevel = iPtr->numLevels; active.nextPtr = iPtr->activeInterpTracePtr; iPtr->activeInterpTracePtr = &active; diff --git a/generic/tclTest.c b/generic/tclTest.c index d0b2bab..2695920 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.6 2004/02/20 20:44:47 dgp Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.7 2004/03/01 17:33:21 dgp Exp $ */ #define TCL_TEST @@ -1129,6 +1129,18 @@ TestcmdtraceCmd(dummy, interp, argc, argv) cmdTrace = Tcl_CreateTrace(interp, 50000, (Tcl_CmdTraceProc *) CmdTraceDeleteProc, (ClientData) NULL); Tcl_Eval(interp, argv[2]); + } else if (strcmp(argv[1], "leveltest") == 0) { + Interp *iPtr = (Interp *) interp; + Tcl_DStringInit(&buffer); + cmdTrace = Tcl_CreateTrace(interp, iPtr->numLevels + 4, + (Tcl_CmdTraceProc *) CmdTraceProc, (ClientData) &buffer); + result = Tcl_Eval(interp, argv[2]); + if (result == TCL_OK) { + Tcl_ResetResult(interp); + Tcl_AppendResult(interp, Tcl_DStringValue(&buffer), NULL); + } + Tcl_DeleteTrace(interp, cmdTrace); + Tcl_DStringFree(&buffer); } else if ( strcmp(argv[1], "resulttest" ) == 0 ) { /* Create an object-based trace, then eval a script. This is used * to test return codes other than TCL_OK from the trace engine. diff --git a/tests/basic.test b/tests/basic.test index c86111c..cc35cbe 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.25.2.2 2004/02/25 23:38:15 dgp Exp $ +# RCS: @(#) $Id: basic.test,v 1.25.2.3 2004/03/01 17:33:22 dgp Exp $ # package require tcltest 2 @@ -536,6 +536,15 @@ test basic-39.9 {Tcl_CreateObjTrace, status return unknown} {testcmdtrace} { list [catch {testcmdtrace resulttest {OtherStatus $x}} result] [set result] } {6 {}} +test basic-39.10 {Tcl_CreateTrace, correct level interpretation} {testcmdtrace} { + proc foo {} {uplevel 1 bar} + proc bar {} {uplevel 1 grok} + proc grok {} {uplevel 1 spock} + proc spock {} {uplevel 1 fascinating} + proc fascinating {} {} + testcmdtrace leveltest {foo} +} {foo {foo} {uplevel 1 bar} {uplevel 1 bar} bar {bar} {uplevel 1 grok} {uplevel 1 grok}} + test basic-40.1 {Tcl_DeleteTrace} {emptyTest} { # the above tests have tested Tcl_DeleteTrace } {} -- cgit v0.12 From fa9272d4b37328eddeeff3f647a4eecfedcc8c53 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 1 Mar 2004 17:48:02 +0000 Subject: * unix/tcl.m4 (SC_CONFIG_CFLAGS): Allow 64-bit enabling on IRIX64-6.5* systems. [Bug 218561] * unix/configure: autoconf-2.13 --- ChangeLog | 4 ++++ unix/configure | 2 +- unix/tcl.m4 | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 363ec88..ebaa97a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-03-01 Don Porter + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Allow 64-bit enabling on + IRIX64-6.5* systems. [Bug 218561] + * unix/configure: autoconf-2.13 + * generic/tclCmdMZ.c (TclCheckInterpTraces): The TIP 62 * generic/tclTest.c (TestcmdtraceCmd): implementation introduced a * tests/basic.test (basic-39.10): bug by testing the CallFrame diff --git a/unix/configure b/unix/configure index 9fcf264..4f11656 100755 --- a/unix/configure +++ b/unix/configure @@ -6039,7 +6039,7 @@ fi EXTRA_CFLAGS="" LDFLAGS="" ;; - IRIX-6.*|IRIX64-6.5*) + IRIX-6.*) SHLIB_CFLAGS="" SHLIB_LD="ld -n32 -shared -rdata_shared" SHLIB_LD_LIBS='${LIBS}' diff --git a/unix/tcl.m4 b/unix/tcl.m4 index db85ff9..f5f8d72 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1067,7 +1067,7 @@ dnl AC_CHECK_TOOL(AR, ar) EXTRA_CFLAGS="" LDFLAGS="" ;; - IRIX-6.*|IRIX64-6.5*) + IRIX-6.*) SHLIB_CFLAGS="" SHLIB_LD="ld -n32 -shared -rdata_shared" SHLIB_LD_LIBS='${LIBS}' -- cgit v0.12 From e1afee6bb276d510ee7b22252af4662652500d75 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 1 Mar 2004 18:22:58 +0000 Subject: updated release note files for 8.4.6 --- ChangeLog | 4 ++-- changes | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ebaa97a..7ac0f03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-03-01 Don Porter + *** 8.4.6 TAGGED FOR RELEASE *** + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Allow 64-bit enabling on IRIX64-6.5* systems. [Bug 218561] * unix/configure: autoconf-2.13 @@ -13,8 +15,6 @@ 2004-02-26 Daniel Steffen - *** 8.4.6 TAGGED FOR RELEASE *** - * macosx/Makefile: fixed copyright year in Tcl.framework Info.plist 2004-02-25 Don Porter diff --git a/changes b/changes index 6c40281..b49c76a 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.6 2004/02/20 18:35:48 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.7 2004/03/01 18:22:59 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5952,4 +5952,14 @@ various odd regexp "can't happen" bugs. 2004-02-17 (new default) tcltest::configure -verbose {body error} ---- Released 8.4.6, February 27, 2004 --- See ChangeLog for details --- +2004-02-19 (bug fix) init.tcl search path with unusual --libdir (samson) + +2004-02-25 (bug fix)[554068] stopped broken [exec] quoting of { (gravereaux) + +2004-02-25 (bug fix)[888777] plugged memory leak with long host names (cassoff) + +2004-03-01 (bug fix)[462580] corrected level interpretation of Tcl_CreateTrace + +2004-03-01 (platform support)[218561] Allow 64-bit configure on IRIX64-6.5* + +--- Released 8.4.6, March 1, 2004 --- See ChangeLog for details --- -- cgit v0.12 From 074f543ea2e37afc36c7f281e75575d211bde796 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Tue, 9 Mar 2004 12:56:58 +0000 Subject: glob -path fix for near filesystem root --- ChangeLog | 5 +++++ generic/tclFileName.c | 12 +++++++++++- tests/fileName.test | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ac0f03..7d97710 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-03-08 Vince Darley + + * generic/tclFileName.c: Fix to 'glob -path' near the root + * tests/fileName.test: of the filesystem. [Bug 910525] + 2004-03-01 Don Porter *** 8.4.6 TAGGED FOR RELEASE *** diff --git a/generic/tclFileName.c b/generic/tclFileName.c index bc314cf..7fbfb7f 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.6 2004/01/13 17:26:42 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.7 2004/03/09 12:56:59 vincentdarley Exp $ */ #include "tclInt.h" @@ -1717,6 +1717,16 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) /* Have to split off the end */ Tcl_DStringAppend(&pref, last, first+pathlength-last); pathOrDir = Tcl_NewStringObj(first, last-first-1); + /* + * We must ensure that we haven't cut off too much, + * and turned a valid path like '/' or 'C:/' into + * an incorrect path like '' or 'C:'. The way we + * do this is to add a separator if there are none + * presently in the prefix. + */ + if (strpbrk(Tcl_GetString(pathOrDir), "\\/") == NULL) { + Tcl_AppendToObj(pathOrDir, last-1, 1); + } } /* Need to quote 'prefix' */ Tcl_DStringInit(&prefix); diff --git a/tests/fileName.test b/tests/fileName.test index 830618b..db431fc 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.3 2003/10/06 09:49:20 vincentdarley Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.4 2004/03/09 12:56:59 vincentdarley Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1648,6 +1648,37 @@ test filename-12.5 {simple globbing} { test filename-12.6 {simple globbing} { list [catch {glob globTest\\/\\x1.c} msg] $msg } "0 $globPreResult$x1" +test filename-12.7 {globbing at filesystem root} {unixOnly} { + set res1 [glob -nocomplain /*] + set res2 [glob -path / *] + set equal [string equal $res1 $res2] + if {!$equal} { + lappend equal "not equal" $res1 $res2 + } + set equal +} {1} +test filename-12.8 {globbing at filesystem root} {unixOnly} { + set dir [lindex [glob -type d /*] 0] + set first [string range $dir 0 1] + set res1 [glob -nocomplain ${first}*] + set res2 [glob -path $first *] + set equal [string equal $res1 $res2] + if {!$equal} { + lappend equal "not equal" $res1 $res2 + } + set equal +} {1} +test filename-12.9 {globbing at filesystem root} {winOnly} { + set dir [lindex [glob -type d [lindex [file volumes] 0]*] 0] + set first [string range $dir 0 3] + set res1 [glob -nocomplain ${first}*] + set res2 [glob -path $first *] + set equal [string equal $res1 $res2] + if {!$equal} { + lappend equal "not equal" $res1 $res2 + } + set equal +} {1} test filename-13.1 {globbing with brace substitution} { list [catch {glob globTest/\{\}} msg] $msg -- cgit v0.12 From 121105e0ad2f6051d2936d793833b2c263c9b1b4 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 15 Mar 2004 20:34:11 +0000 Subject: * generic/tclCompile.c (TclCompileScript): * tests/compile.test (compile-3.5): corrected wrong test and behaviour in the earlier fix for [Bug 705406]; Don Porter reported this as [Bug 735055], and provided the solution. Fixed in HEAD on 2003-05-09, but backport to 8-4-branch was wrongly omitted; re-reported as [Bug 916795] by Roy Terry, diagnosed by dgp. --- ChangeLog | 10 ++++++++++ generic/tclCompile.c | 10 ++++++---- tests/compile.test | 4 ++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d97710..789b19c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-03-15 Miguel Sofer + + * generic/tclCompile.c (TclCompileScript): + * tests/compile.test (compile-3.5): corrected wrong test and + behaviour in the earlier fix for [Bug 705406]; Don Porter reported + this as [Bug 735055], and provided the solution. + Fixed in HEAD on 2003-05-09, but backport to 8-4-branch was + wrongly omitted; re-reported as [Bug 916795] by Roy Terry, + diagnosed by dgp. + 2004-03-08 Vince Darley * generic/tclFileName.c: Fix to 'glob -path' near the root diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 6c619e9..a244be9 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.3 2003/07/18 23:35:38 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.4 2004/03/15 20:34:13 msofer Exp $ */ #include "tclInt.h" @@ -990,6 +990,7 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) && !(cmdPtr->flags & CMD_HAS_EXEC_TRACES) && !(iPtr->flags & DONT_COMPILE_CMDS_INLINE)) { int savedNumCmds = envPtr->numCommands; + unsigned char *savedCodeNext = envPtr->codeNext; code = (*(cmdPtr->compileProc))(interp, &parse, envPtr); @@ -997,11 +998,12 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) goto finishCommand; } else if (code == TCL_OUT_LINE_COMPILE) { /* - * Restore numCommands to its correct value, removing - * any commands compiled before TCL_OUT_LINE_COMPILE - * [Bug 705406] + * Restore numCommands and codeNext to their correct + * values, removing any commands compiled before + * TCL_OUT_LINE_COMPILE [Bugs 705406 and 735055] */ envPtr->numCommands = savedNumCmds; + envPtr->codeNext = savedCodeNext; } else { /* an error */ /* * There was a compilation error, the last diff --git a/tests/compile.test b/tests/compile.test index 1d2ae72..9a7b3b8 100644 --- a/tests/compile.test +++ b/tests/compile.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: compile.test,v 1.24.2.1 2003/03/19 22:53:16 msofer Exp $ +# RCS: @(#) $Id: compile.test,v 1.24.2.2 2004/03/15 20:34:13 msofer Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -124,7 +124,7 @@ test compile-3.5 {TclCompileCatchCmd: recover from error, [Bug 705406]} { } } list [catch foo msg] $msg -} {1 {invalid command name "a"}} +} {0 1} test compile-4.1 {TclCompileForCmd: command substituted test expression} { set i 0 -- cgit v0.12 From ccb560364793a1f26ccad8d6d538bc0469c2e230 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sun, 21 Mar 2004 20:59:28 +0000 Subject: define WIN32_CE platform info --- win/tclWinInt.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/win/tclWinInt.h b/win/tclWinInt.h index b7299eb..ce09ce3 100644 --- a/win/tclWinInt.h +++ b/win/tclWinInt.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.1 2003/04/14 15:46:01 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.2 2004/03/21 20:59:28 hobbs Exp $ */ #ifndef _TCLWININT @@ -37,11 +37,15 @@ /* * Some versions of Borland C have a define for the OSVERSIONINFO for * Win32s and for NT, but not for Windows 95. + * Define VER_PLATFORM_WIN32_CE for those without newer headers. */ #ifndef VER_PLATFORM_WIN32_WINDOWS #define VER_PLATFORM_WIN32_WINDOWS 1 #endif +#ifndef VER_PLATFORM_WIN32_CE +#define VER_PLATFORM_WIN32_CE 3 +#endif /* * The following structure keeps track of whether we are using the -- cgit v0.12 From a2a94771f68b17613c897f5b4ab91dfb979c85d3 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sun, 21 Mar 2004 21:03:35 +0000 Subject: * win/tclWinInit.c (TclpSetInitialEncodings): recognize WIN32_CE as a unicode (WCHAR) platform. --- ChangeLog | 6 ++++++ win/tclWinInit.c | 13 ++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 789b19c..72c08d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-03-21 Jeff Hobbs + + * win/tclWinInt.h: define VER_PLATFORM_WIN32_CE if not already set. + * win/tclWinInit.c (TclpSetInitialEncodings): recognize WIN32_CE + as a unicode (WCHAR) platform. + 2004-03-15 Miguel Sofer * generic/tclCompile.c (TclCompileScript): diff --git a/win/tclWinInit.c b/win/tclWinInit.c index 96d6980..a65c970 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.3 2004/02/20 05:27:17 mdejong Exp $ + * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.4 2004/03/21 21:03:37 hobbs Exp $ */ #include "tclWinInt.h" @@ -569,14 +569,17 @@ TclpSetInitialEncodings() char buf[4 + TCL_INTEGER_SPACE]; if (libraryPathEncodingFixed == 0) { - int platformId; + int platformId, useWide; + platformId = TclWinGetPlatformId(); - TclWinSetInterfaces(platformId == VER_PLATFORM_WIN32_NT); - + useWide = ((platformId == VER_PLATFORM_WIN32_NT) + || (platformId == VER_PLATFORM_WIN32_CE)); + TclWinSetInterfaces(useWide); + wsprintfA(buf, "cp%d", GetACP()); Tcl_SetSystemEncoding(NULL, buf); - if (platformId != VER_PLATFORM_WIN32_NT) { + if (!useWide) { Tcl_Obj *pathPtr = TclGetLibraryPath(); if (pathPtr != NULL) { int i, objc; -- cgit v0.12 From 8f0d403b02d42ece1a2f24a9bf1327837480fd4e Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 29 Mar 2004 02:17:58 +0000 Subject: * generic/tclCompile.c (TclCompileScript): corrected possible segfault when a compilation returns TCL_OUTLINE_COMPILE after having grown the compile environment [Bug 925121]. --- ChangeLog | 6 ++++++ generic/tclCompile.c | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 72c08d4..1661a03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-03-28 Miguel Sofer + + * generic/tclCompile.c (TclCompileScript): corrected possible + segfault when a compilation returns TCL_OUTLINE_COMPILE after + having grown the compile environment [Bug 925121]. + 2004-03-21 Jeff Hobbs * win/tclWinInt.h: define VER_PLATFORM_WIN32_CE if not already set. diff --git a/generic/tclCompile.c b/generic/tclCompile.c index a244be9..b1bd38e 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.4 2004/03/15 20:34:13 msofer Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.5 2004/03/29 02:17:59 msofer Exp $ */ #include "tclInt.h" @@ -990,7 +990,8 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) && !(cmdPtr->flags & CMD_HAS_EXEC_TRACES) && !(iPtr->flags & DONT_COMPILE_CMDS_INLINE)) { int savedNumCmds = envPtr->numCommands; - unsigned char *savedCodeNext = envPtr->codeNext; + unsigned int savedCodeNext = + envPtr->codeNext - envPtr->codeStart; code = (*(cmdPtr->compileProc))(interp, &parse, envPtr); @@ -1003,7 +1004,7 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) * TCL_OUT_LINE_COMPILE [Bugs 705406 and 735055] */ envPtr->numCommands = savedNumCmds; - envPtr->codeNext = savedCodeNext; + envPtr->codeNext = envPtr->codeStart + savedCodeNext; } else { /* an error */ /* * There was a compilation error, the last -- cgit v0.12 From fc35db336cf80ba5d03d87e2d0c86edf1670d8fc Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 29 Mar 2004 18:49:19 +0000 Subject: * generic/tclInt.h: * generic/tclEncoding.c (TclFindEncodings, Tcl_FindExecutable): * mac/tclMacInit.c (TclpInitLibraryPath): Correct handling of UTF * unix/tclUnixInit.c (TclpInitLibraryPath): data that is actually * win/tclWinFile.c (TclpFindExecutable): "clean", allowing the * win/tclWinInit.c (TclpInitLibraryPath): loading of Tcl from paths that contain multi-byte chars on Windows [Bug 920667] --- ChangeLog | 10 ++++++++++ generic/tclEncoding.c | 53 +++++++++++++++++++++++++++++++++------------------ generic/tclInt.h | 5 ++--- mac/tclMacInit.c | 9 ++++++--- unix/tclUnixInit.c | 9 ++++++--- win/tclWinFile.c | 28 ++++++++++++++------------- win/tclWinInit.c | 8 +++++--- 7 files changed, 78 insertions(+), 44 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1661a03..718571c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-03-29 Jeff Hobbs + + * generic/tclInt.h: + * generic/tclEncoding.c (TclFindEncodings, Tcl_FindExecutable): + * mac/tclMacInit.c (TclpInitLibraryPath): Correct handling of UTF + * unix/tclUnixInit.c (TclpInitLibraryPath): data that is actually + * win/tclWinFile.c (TclpFindExecutable): "clean", allowing the + * win/tclWinInit.c (TclpInitLibraryPath): loading of Tcl from + paths that contain multi-byte chars on Windows [Bug 920667] + 2004-03-28 Miguel Sofer * generic/tclCompile.c (TclCompileScript): corrected possible diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 7f27ab8..870d587 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.2 2003/11/06 21:47:33 hobbs Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.3 2004/03/29 18:49:35 hobbs Exp $ */ #include "tclInt.h" @@ -227,6 +227,7 @@ static int UtfToUtfProc _ANSI_ARGS_((ClientData clientData, Tcl_EncodingState *statePtr, char *dst, int dstLen, int *srcReadPtr, int *dstWrotePtr, int *dstCharsPtr)); +static int TclFindEncodings _ANSI_ARGS_((CONST char *argv0)); /* @@ -1111,6 +1112,7 @@ Tcl_FindExecutable(argv0) CONST char *argv0; /* The value of the application's argv[0] * (native). */ { + int mustCleanUtf; CONST char *name; Tcl_DString buffer, nameString; @@ -1129,32 +1131,40 @@ Tcl_FindExecutable(argv0) /* * The value returned from TclpNameOfExecutable is a UTF string that - * is possibly dirty depending on when it was initialized. To assure - * that the UTF string is a properly encoded native string for this - * system, convert the UTF string to the default native encoding - * before the default encoding is initialized. Then, convert it back - * to UTF after the system encoding is loaded. + * is possibly dirty depending on when it was initialized. + * TclFindEncodings will indicate whether we must "clean" the UTF (as + * reported by the underlying system). To assure that the UTF string + * is a properly encoded native string for this system, convert the + * UTF string to the default native encoding before the default + * encoding is initialized. Then, convert it back to UTF after the + * system encoding is loaded. */ Tcl_UtfToExternalDString(NULL, name, -1, &buffer); - TclFindEncodings(argv0); + mustCleanUtf = TclFindEncodings(argv0); /* * Now it is OK to convert the native string back to UTF and set * the value of the tclExecutableName. */ - Tcl_ExternalToUtfDString(NULL, Tcl_DStringValue(&buffer), -1, &nameString); - tclExecutableName = (char *) - ckalloc((unsigned) (Tcl_DStringLength(&nameString) + 1)); - strcpy(tclExecutableName, Tcl_DStringValue(&nameString)); - + if (mustCleanUtf) { + Tcl_ExternalToUtfDString(NULL, Tcl_DStringValue(&buffer), -1, + &nameString); + tclExecutableName = (char *) + ckalloc((unsigned) (Tcl_DStringLength(&nameString) + 1)); + strcpy(tclExecutableName, Tcl_DStringValue(&nameString)); + + Tcl_DStringFree(&nameString); + } else { + tclExecutableName = (char *) ckalloc((unsigned) (strlen(name) + 1)); + strcpy(tclExecutableName, name); + } Tcl_DStringFree(&buffer); - Tcl_DStringFree(&nameString); return; done: - TclFindEncodings(argv0); + (void) TclFindEncodings(argv0); } /* @@ -2813,7 +2823,8 @@ unilen(src) * assured. * * Results: - * None. + * Return result of TclpInitLibraryPath, which reports whether the + * path is clean (0) or dirty (1) UTF. * * Side effects: * Varied, see the respective initialization routines. @@ -2821,11 +2832,13 @@ unilen(src) *------------------------------------------------------------------------- */ -void +int TclFindEncodings(argv0) CONST char *argv0; /* Name of executable from argv[0] to main() * in native multi-byte encoding. */ { + int mustCleanUtf = 0; + if (encodingsInitialized == 0) { /* * Double check inside the mutex. There may be calls @@ -2846,7 +2859,7 @@ TclFindEncodings(argv0) encodingsInitialized = 1; native = TclpFindExecutable(argv0); - TclpInitLibraryPath(native); + mustCleanUtf = TclpInitLibraryPath(native); /* * The library path was set in the TclpInitLibraryPath routine. @@ -2856,7 +2869,7 @@ TclFindEncodings(argv0) */ pathPtr = TclGetLibraryPath(); - if (pathPtr != NULL) { + if ((pathPtr != NULL) && mustCleanUtf) { Tcl_UtfToExternalDString(NULL, Tcl_GetString(pathPtr), -1, &libPath); } @@ -2867,7 +2880,7 @@ TclFindEncodings(argv0) * Now convert the native string back to UTF. */ - if (pathPtr != NULL) { + if ((pathPtr != NULL) && mustCleanUtf) { Tcl_ExternalToUtfDString(NULL, Tcl_DStringValue(&libPath), -1, &buffer); pathPtr = Tcl_NewStringObj(Tcl_DStringValue(&buffer), -1); @@ -2879,4 +2892,6 @@ TclFindEncodings(argv0) } TclpInitUnlock(); } + + return mustCleanUtf; } diff --git a/generic/tclInt.h b/generic/tclInt.h index 39343aa..18438e2 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.3 2003/04/16 23:31:44 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.4 2004/03/29 18:49:36 hobbs Exp $ */ #ifndef _TCLINT @@ -1636,7 +1636,6 @@ EXTERN void TclFinalizeNotifier _ANSI_ARGS_((void)); EXTERN void TclFinalizeAsync _ANSI_ARGS_((void)); EXTERN void TclFinalizeSynchronization _ANSI_ARGS_((void)); EXTERN void TclFinalizeThreadData _ANSI_ARGS_((void)); -EXTERN void TclFindEncodings _ANSI_ARGS_((CONST char *argv0)); EXTERN int TclGlob _ANSI_ARGS_((Tcl_Interp *interp, char *pattern, Tcl_Obj *unquotedPrefix, int globFlags, Tcl_GlobTypeData* types)); @@ -1699,7 +1698,7 @@ EXTERN char * TclpFindExecutable _ANSI_ARGS_(( CONST char *argv0)); EXTERN int TclpFindVariable _ANSI_ARGS_((CONST char *name, int *lengthPtr)); -EXTERN void TclpInitLibraryPath _ANSI_ARGS_((CONST char *argv0)); +EXTERN int TclpInitLibraryPath _ANSI_ARGS_((CONST char *argv0)); EXTERN void TclpInitLock _ANSI_ARGS_((void)); EXTERN void TclpInitPlatform _ANSI_ARGS_((void)); EXTERN void TclpInitUnlock _ANSI_ARGS_((void)); diff --git a/mac/tclMacInit.c b/mac/tclMacInit.c index f132577..a319713 100644 --- a/mac/tclMacInit.c +++ b/mac/tclMacInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacInit.c,v 1.9 2002/02/08 02:52:54 dgp Exp $ + * RCS: @(#) $Id: tclMacInit.c,v 1.9.2.1 2004/03/29 18:49:36 hobbs Exp $ */ #include @@ -339,7 +339,8 @@ TclpInitPlatform() * Called at process initialization time. * * Results: - * None. + * Return 1, indicating that the UTF may be dirty and require "cleanup" + * after encodings are initialized. * * Side effects: * None. @@ -347,7 +348,7 @@ TclpInitPlatform() *--------------------------------------------------------------------------- */ -void +int TclpInitLibraryPath(argv0) CONST char *argv0; /* Name of executable from argv[0] to main(). * Not used because we can determine the name @@ -411,6 +412,8 @@ TclpInitLibraryPath(argv0) Tcl_DStringFree(&path); } TclSetLibraryPath(pathPtr); + + return 1; /* 1 indicates that pathPtr may be dirty utf (needs cleaning) */ } /* diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index d0dfd28..a51124e 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.3 2004/02/17 23:46:54 hobbs Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.4 2004/03/29 18:49:36 hobbs Exp $ */ #if defined(HAVE_CFBUNDLE) @@ -242,7 +242,8 @@ TclpInitPlatform() * Called at process initialization time. * * Results: - * None. + * Return 1, indicating that the UTF may be dirty and require "cleanup" + * after encodings are initialized. * * Side effects: * None. @@ -250,7 +251,7 @@ TclpInitPlatform() *--------------------------------------------------------------------------- */ -void +int TclpInitLibraryPath(path) CONST char *path; /* Path to the executable in native * multi-byte encoding. */ @@ -453,6 +454,8 @@ CONST char *path; /* Path to the executable in native TclSetLibraryPath(pathPtr); Tcl_DStringFree(&buffer); + + return 1; /* 1 indicates that pathPtr may be dirty utf (needs cleaning) */ } /* diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 13a2c48..6e1dde1 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.6 2003/10/03 17:45:37 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.7 2004/03/29 18:49:36 hobbs Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -665,12 +665,11 @@ NativeWriteReparse(LinkDirectory, buffer) * application, given its argv[0] value. * * Results: - * A dirty UTF string that is the path to the executable. At this - * point we may not know the system encoding. Convert the native - * string value to UTF using the default encoding. The assumption - * is that we will still be able to parse the path given the path - * name contains ASCII string and '/' chars do not conflict with - * other UTF chars. + * A clean UTF string that is the path to the executable. At this + * point we may not know the system encoding, but we convert the + * string value to UTF-8 using core Windows functions. The path name + * contains ASCII string and '/' chars do not conflict with other UTF + * chars. * * Side effects: * The variable tclNativeExecutableName gets filled in with the file @@ -685,8 +684,8 @@ TclpFindExecutable(argv0) CONST char *argv0; /* The value of the application's argv[0] * (native). */ { - Tcl_DString ds; WCHAR wName[MAX_PATH]; + char name[MAX_PATH * TCL_UTF_MAX]; if (argv0 == NULL) { return NULL; @@ -700,12 +699,15 @@ TclpFindExecutable(argv0) * create this process. */ - (*tclWinProcs->getModuleFileNameProc)(NULL, wName, MAX_PATH); - Tcl_WinTCharToUtf((CONST TCHAR *) wName, -1, &ds); + if (GetModuleFileNameW(NULL, wName, MAX_PATH) == 0) { + GetModuleFileNameA(NULL, name, sizeof(name)); + } else { + WideCharToMultiByte(CP_UTF8, 0, wName, -1, + name, sizeof(name), NULL, NULL); + } - tclNativeExecutableName = ckalloc((unsigned) (Tcl_DStringLength(&ds) + 1)); - strcpy(tclNativeExecutableName, Tcl_DStringValue(&ds)); - Tcl_DStringFree(&ds); + tclNativeExecutableName = ckalloc((unsigned) (strlen(name) + 1)); + strcpy(tclNativeExecutableName, name); TclWinNoBackslash(tclNativeExecutableName); return tclNativeExecutableName; diff --git a/win/tclWinInit.c b/win/tclWinInit.c index a65c970..d7ddbb5 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.4 2004/03/21 21:03:37 hobbs Exp $ + * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.5 2004/03/29 18:49:36 hobbs Exp $ */ #include "tclWinInt.h" @@ -165,7 +165,7 @@ TclpInitPlatform() * Called at process initialization time. * * Results: - * None. + * Return 0, indicating that the UTF is clean. * * Side effects: * None. @@ -173,7 +173,7 @@ TclpInitPlatform() *--------------------------------------------------------------------------- */ -void +int TclpInitLibraryPath(path) CONST char *path; /* Potentially dirty UTF string that is */ /* the path to the executable name. */ @@ -330,6 +330,8 @@ TclpInitLibraryPath(path) } TclSetLibraryPath(pathPtr); + + return 0; /* 0 indicates that pathPtr is clean (true) utf */ } /* -- cgit v0.12 From d6dc5f9be580f37147098a4354643545002a63ee Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 30 Mar 2004 23:34:21 +0000 Subject: Backport of fixes to make HashObjKey hash the whole object... --- ChangeLog | 5 +++++ generic/tclObj.c | 27 +++++++++------------------ 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 718571c..5d205c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-03-31 Donal K. Fellows + + * generic/tclObj.c (HashObjKey): Make sure this hashes the whole + string rep of the object, instead of missing the last character. + 2004-03-29 Jeff Hobbs * generic/tclInt.h: diff --git a/generic/tclObj.c b/generic/tclObj.c index a98fe1c..b1183c3 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.4 2003/05/23 21:29:11 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.5 2004/03/30 23:34:21 dkf Exp $ */ #include "tclInt.h" @@ -2717,9 +2717,9 @@ CompareObjKeys(keyPtr, hPtr) * Don't use Tcl_GetStringFromObj as it would prevent l1 and l2 being * in a register. */ - p1 = Tcl_GetString (objPtr1); + p1 = TclGetString(objPtr1); l1 = objPtr1->length; - p2 = Tcl_GetString (objPtr2); + p2 = TclGetString(objPtr2); l2 = objPtr2->length; /* @@ -2789,14 +2789,11 @@ HashObjKey(tablePtr, keyPtr) VOID *keyPtr; /* Key from which to compute hash value. */ { Tcl_Obj *objPtr = (Tcl_Obj *) keyPtr; - register CONST char *string; - register int length; - register unsigned int result; - register int c; + CONST char *string = TclGetString(objPtr); + int length = objPtr->length; + unsigned int result; + int i; - string = Tcl_GetString (objPtr); - length = objPtr->length; - /* * I tried a zillion different hash functions and asked many other * people for advice. Many people had their own favorite functions, @@ -2814,14 +2811,8 @@ HashObjKey(tablePtr, keyPtr) */ result = 0; - while (length) { - c = *string; - string++; - length--; - if (length == 0) { - break; - } - result += (result<<3) + c; + for (i=0 ; i Date: Wed, 31 Mar 2004 01:55:20 +0000 Subject: * library/msgcat/msgcat.tcl ([mcset]): Corrected [mcset] to be able * library/msgcat/pkgIndex.tcl: to successfully set a translation to the empty string. [mcset $loc $src {}] was incorrectly set the $loc translation of $src back to $src. Bump to msgcat 1.3.2. --- ChangeLog | 7 +++++++ library/msgcat/msgcat.tcl | 8 ++++---- library/msgcat/pkgIndex.tcl | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5d205c3..38bd5b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-03-31 Don Porter + + * library/msgcat/msgcat.tcl ([mcset]): Corrected [mcset] to be able + * library/msgcat/pkgIndex.tcl: to successfully set a translation to + the empty string. [mcset $loc $src {}] was incorrectly set the + $loc translation of $src back to $src. Bump to msgcat 1.3.2. + 2004-03-31 Donal K. Fellows * generic/tclObj.c (HashObjKey): Make sure this hashes the whole diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl index ab47299..2180129 100644 --- a/library/msgcat/msgcat.tcl +++ b/library/msgcat/msgcat.tcl @@ -10,12 +10,12 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.1 2003/08/06 23:02:41 dgp Exp $ +# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.2 2004/03/31 01:55:21 dgp Exp $ package require Tcl 8.2 # When the version number changes, be sure to update the pkgIndex.tcl file, # and the installation directory in the Makefiles. -package provide msgcat 1.3.1 +package provide msgcat 1.3.2 namespace eval msgcat { namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \ @@ -295,8 +295,8 @@ proc msgcat::mcload {langdir} { proc msgcat::mcset {locale src {dest ""}} { variable Msgs - if {[string equal $dest ""]} { - set dest $src + if {[llength [info level 0]] == 3} { ;# dest not specified + set dest $src } set ns [uplevel 1 [list ::namespace current]] diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl index 90198df..a048de1 100644 --- a/library/msgcat/pkgIndex.tcl +++ b/library/msgcat/pkgIndex.tcl @@ -1,2 +1,2 @@ if {![package vsatisfies [package provide Tcl] 8.2]} {return} -package ifneeded msgcat 1.3.1 [list source [file join $dir msgcat.tcl]] +package ifneeded msgcat 1.3.2 [list source [file join $dir msgcat.tcl]] -- cgit v0.12 From 58bab1bd72fa6605e743045b7ea04a4f646d068c Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 31 Mar 2004 18:50:58 +0000 Subject: * doc/msgcat.n: Clarified message catalog file encodings. [Bug 811457] * library/msgcat/msgcat.tcl ([mcset], [ConvertLocale], [Init]): Corrected [mcset] to be able to successfully set a translation to the empty string. [mcset $loc $src {}] was incorrectly set the $loc translation of $src back to $src. Also changed [ConvertLocale] to minimally require a non-empty "language" part in the locale value. If not, an error raised prompts [Init] to keep looking for a valid locale value, or ultimately fall back on the "C" locale. [Bug 811461]. * library/msgcat/pkgIndex.tcl: Bump to msgcat 1.3.2. --- ChangeLog | 11 ++++++++--- doc/msgcat.n | 2 +- library/msgcat/msgcat.tcl | 13 ++++++++----- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 38bd5b0..e892310 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,14 @@ 2004-03-31 Don Porter - * library/msgcat/msgcat.tcl ([mcset]): Corrected [mcset] to be able - * library/msgcat/pkgIndex.tcl: to successfully set a translation to + * doc/msgcat.n: Clarified message catalog file encodings. [Bug 811457] + * library/msgcat/msgcat.tcl ([mcset], [ConvertLocale], [Init]): + Corrected [mcset] to be able to successfully set a translation to the empty string. [mcset $loc $src {}] was incorrectly set the - $loc translation of $src back to $src. Bump to msgcat 1.3.2. + $loc translation of $src back to $src. Also changed [ConvertLocale] + to minimally require a non-empty "language" part in the locale value. + If not, an error raised prompts [Init] to keep looking for a valid + locale value, or ultimately fall back on the "C" locale. [Bug 811461]. + * library/msgcat/pkgIndex.tcl: Bump to msgcat 1.3.2. 2004-03-31 Donal K. Fellows diff --git a/doc/msgcat.n b/doc/msgcat.n index 1c11f17..f7ba2fc 100644 --- a/doc/msgcat.n +++ b/doc/msgcat.n @@ -102,7 +102,7 @@ the language specifications returned by \fB::msgcat::mcpreferences\fR (note that these are all lowercase), extended by the file extension ``.msg''. Each matching file is read in order, assuming a UTF-8 encoding. The file contents are -then evaluated as a Tcl script. This means that non-Latin characters +then evaluated as a Tcl script. This means that Unicode characters may be present in the message file either directly in their UTF-8 encoded form, or by use of the backslash-u quoting recognized by Tcl evaluation. The number of message files which matched the specification diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl index 2180129..044dcbb 100644 --- a/library/msgcat/msgcat.tcl +++ b/library/msgcat/msgcat.tcl @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.2 2004/03/31 01:55:21 dgp Exp $ +# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.3 2004/03/31 18:51:01 dgp Exp $ package require Tcl 8.2 # When the version number changes, be sure to update the pkgIndex.tcl file, @@ -397,8 +397,10 @@ proc msgcat::ConvertLocale {value} { # (@(.*))? # Match (optional) "modifier"; starts with @ # $ # Match all the way to the end # } $value -> language _ territory _ codeset _ modifier - regexp {^([^_.@]*)(_([^.@]*))?([.]([^@]*))?(@(.*))?$} $value \ - -> language _ territory _ codeset _ modifier + if {![regexp {^([^_.@]+)(_([^.@]*))?([.]([^@]*))?(@(.*))?$} $value \ + -> language _ territory _ codeset _ modifier]} { + return -code error "invalid locale '$value': empty language part" + } set ret $language if {[string length $territory]} { append ret _$territory @@ -417,8 +419,9 @@ proc msgcat::Init {} { foreach varName {LC_ALL LC_MESSAGES LANG} { if {[info exists ::env($varName)] && ![string equal "" $::env($varName)]} { - mclocale [ConvertLocale $::env($varName)] - return + if {![catch {mclocale [ConvertLocale $::env($varName)]}]} { + return + } } } # -- cgit v0.12 From 8af9f205c9029437292444493662dc078b2265e6 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 2 Apr 2004 17:39:05 +0000 Subject: * tests/tcltest.test: Corrected constraint typos: "nonRoot" -> "notRoot". [Bug 928353] --- ChangeLog | 5 +++++ tests/tcltest.test | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index e892310..8529526 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-04-02 Don Porter + + * tests/tcltest.test: Corrected constraint typos: "nonRoot" -> + "notRoot". [Bug 928353] + 2004-03-31 Don Porter * doc/msgcat.n: Clarified message catalog file encodings. [Bug 811457] diff --git a/tests/tcltest.test b/tests/tcltest.test index 09f713d..2413cca 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37 2003/01/31 22:19:30 dgp Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.1 2004/04/02 17:39:08 dgp Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -563,12 +563,12 @@ switch $tcl_platform(platform) { } } -test tcltest-8.3 {tcltest a.tcl -tmpdir notReadableDir} {unixOnly nonRoot} { +test tcltest-8.3 {tcltest a.tcl -tmpdir notReadableDir} {unixOnly notRoot} { slave msg $a -tmpdir $notReadableDir string match {*not readable*} $msg } {1} -test tcltest-8.4 {tcltest a.tcl -tmpdir notWriteableDir} {unixOrPc nonRoot} { +test tcltest-8.4 {tcltest a.tcl -tmpdir notWriteableDir} {unixOrPc notRoot} { slave msg $a -tmpdir $notWriteableDir string match {*not writeable*} $msg } {1} @@ -623,7 +623,7 @@ test tcltest-8.11 {tcltest a.tcl -testdir thisdirectoryisafile} {unixOrPc} { string match "*not a directory*" $msg } {1} -test tcltest-8.12 {tcltest a.tcl -testdir notReadableDir} {unixOnly nonRoot} { +test tcltest-8.12 {tcltest a.tcl -testdir notReadableDir} {unixOnly notRoot} { slave msg $a -testdir $notReadableDir string match {*not readable*} $msg } {1} -- cgit v0.12 From 2eed96f72727d081436d3f8b20a0f014bcefd078 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 2 Apr 2004 20:56:33 +0000 Subject: add thanks --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8529526..51bda4b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ 2004-04-02 Don Porter * tests/tcltest.test: Corrected constraint typos: "nonRoot" -> - "notRoot". [Bug 928353] + "notRoot". Thanks to Steven Abner (tauvan). [Bug 928353] 2004-03-31 Don Porter -- cgit v0.12 From 14da1fa7d49f60c7ca1a74bb9018edf2c8d88c6c Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 6 Apr 2004 08:47:01 +0000 Subject: root interacts badly with access(...,X_OK) [Bug 929892] --- ChangeLog | 6 ++++++ tests/cmdAH.test | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 51bda4b..b101738 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-04-06 Donal K. Fellows + + * tests/cmdAH.test (cmdAH-18.2): Added constraint because + access(...,X_OK) is defined to be permitted to be meaningless when + running as root, and OSX exhibits this. [Bug 929892] + 2004-04-02 Don Porter * tests/tcltest.test: Corrected constraint typos: "nonRoot" -> diff --git a/tests/cmdAH.test b/tests/cmdAH.test index 51ecf99..cbd8947 100644 --- a/tests/cmdAH.test +++ b/tests/cmdAH.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: cmdAH.test,v 1.30.2.3 2003/07/04 13:16:13 dkf Exp $ +# RCS: @(#) $Id: cmdAH.test,v 1.30.2.4 2004/04/06 08:47:01 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -1064,7 +1064,7 @@ set gorpfile [makeFile abcde gorp.file] test cmdAH-18.1 {Tcl_FileObjCmd: executable} {testchmod} { list [catch {file executable a b} msg] $msg } {1 {wrong # args: should be "file executable name"}} -test cmdAH-18.2 {Tcl_FileObjCmd: executable} {testchmod} { +test cmdAH-18.2 {Tcl_FileObjCmd: executable} {testchmod notRoot} { file executable $gorpfile } 0 test cmdAH-18.3 {Tcl_FileObjCmd: executable} {unixOnly testchmod} { -- cgit v0.12 From bd25b5076fe69103b8dc106ff6930f61c702eda0 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 6 Apr 2004 14:39:16 +0000 Subject: * tests/unixInit.test (unixInit-3.1): Default encoding on Darwin systems is utf-8. Thanks to Steven Abner (tauvan). [Bug 928808] --- ChangeLog | 5 +++++ tests/unixInit.test | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b101738..6fb73e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-04-06 Don Porter + + * tests/unixInit.test (unixInit-3.1): Default encoding on Darwin + systems is utf-8. Thanks to Steven Abner (tauvan). [Bug 928808] + 2004-04-06 Donal K. Fellows * tests/cmdAH.test (cmdAH-18.2): Added constraint because diff --git a/tests/unixInit.test b/tests/unixInit.test index 8560a1e..880ea54 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.6 2004/02/25 23:38:17 dgp Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.7 2004/04/06 14:39:16 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -314,7 +314,9 @@ test unixInit-3.1 {TclpSetInitialEncodings} -constraints { unset env(LANG) set enc -} -match regexp -result ^iso8859-15?$ +} -match regexp -result [expr { + ($tcl_platform(os) eq "Darwin") ? "^utf-8$" : "^iso8859-15?$"}] + test unixInit-3.2 {TclpSetInitialEncodings} {unixOnly stdio} { set env(LANG) japanese catch {set oldlc_all $env(LC_ALL)} -- cgit v0.12 From 2446d3e4c19bc8727f648e7fe66136a97247fcc5 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 7 Apr 2004 21:06:40 +0000 Subject: * win/configure: * win/configure.in: define TCL_LIB_FLAG, TCL_BUILD_LIB_SPEC, TCL_LIB_SPEC and TCL_PACKAGE_PATH in tclConfig.sh. --- ChangeLog | 6 ++++++ win/configure | 20 ++++++++++++++++---- win/configure.in | 22 +++++++++++++++++----- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6fb73e0..a0aa961 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-04-07 Jeff Hobbs + + * win/configure: + * win/configure.in: define TCL_LIB_FLAG, TCL_BUILD_LIB_SPEC, + TCL_LIB_SPEC and TCL_PACKAGE_PATH in tclConfig.sh. + 2004-04-06 Don Porter * tests/unixInit.test (unixInit-3.1): Default encoding on Darwin diff --git a/win/configure b/win/configure index d42a9f3..73899c7 100755 --- a/win/configure +++ b/win/configure @@ -1931,10 +1931,10 @@ eval "TCL_SRC_DIR=\"`cd $srcdir/..; pwd`\"" eval "TCL_DLL_FILE=tcl${VER}${DLLSUFFIX}" eval "TCL_LIB_FILE=${LIBPREFIX}tcl$VER${LIBSUFFIX}" -# FIMXE: These variables decls are missing -#TCL_LIB_FLAG -#TCL_BUILD_LIB_SPEC -#TCL_LIB_SPEC + +eval "TCL_LIB_FLAG=\"-ltcl${VER}${LIBFLAGSUFFIX}\"" +eval "TCL_BUILD_LIB_SPEC=\"-L`pwd` ${TCL_LIB_FLAG}\"" +eval "TCL_LIB_SPEC=\"-L${libdir} ${TCL_LIB_FLAG}\"" eval "TCL_STUB_LIB_FILE=\"${LIBPREFIX}tclstub${VER}${LIBSUFFIX}\"" eval "TCL_STUB_LIB_FLAG=\"-ltclstub${VER}${LIBFLAGSUFFIX}\"" @@ -1975,6 +1975,18 @@ else fi fi +#-------------------------------------------------------------------- +# The statements below define the symbol TCL_PACKAGE_PATH, which +# gives a list of directories that may contain packages. The list +# consists of one directory for machine-dependent binaries and +# another for platform-independent scripts. +#-------------------------------------------------------------------- + +if test "$prefix" != "$exec_prefix"; then + TCL_PACKAGE_PATH="${libdir} ${prefix}/lib" +else + TCL_PACKAGE_PATH="${prefix}/lib" +fi diff --git a/win/configure.in b/win/configure.in index 04752a9..8638586 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.7 2004/02/13 01:38:02 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.8 2004/04/07 21:06:41 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -307,10 +307,10 @@ eval "TCL_SRC_DIR=\"`cd $srcdir/..; pwd`\"" eval "TCL_DLL_FILE=tcl${VER}${DLLSUFFIX}" eval "TCL_LIB_FILE=${LIBPREFIX}tcl$VER${LIBSUFFIX}" -# FIMXE: These variables decls are missing -#TCL_LIB_FLAG -#TCL_BUILD_LIB_SPEC -#TCL_LIB_SPEC + +eval "TCL_LIB_FLAG=\"-ltcl${VER}${LIBFLAGSUFFIX}\"" +eval "TCL_BUILD_LIB_SPEC=\"-L`pwd` ${TCL_LIB_FLAG}\"" +eval "TCL_LIB_SPEC=\"-L${libdir} ${TCL_LIB_FLAG}\"" eval "TCL_STUB_LIB_FILE=\"${LIBPREFIX}tclstub${VER}${LIBSUFFIX}\"" eval "TCL_STUB_LIB_FLAG=\"-ltclstub${VER}${LIBFLAGSUFFIX}\"" @@ -351,6 +351,18 @@ else fi fi +#-------------------------------------------------------------------- +# The statements below define the symbol TCL_PACKAGE_PATH, which +# gives a list of directories that may contain packages. The list +# consists of one directory for machine-dependent binaries and +# another for platform-independent scripts. +#-------------------------------------------------------------------- + +if test "$prefix" != "$exec_prefix"; then + TCL_PACKAGE_PATH="${libdir} ${prefix}/lib" +else + TCL_PACKAGE_PATH="${prefix}/lib" +fi AC_SUBST(TCL_VERSION) AC_SUBST(TCL_MAJOR_VERSION) -- cgit v0.12 From 5b91da692e931bb424e837c60a0841b1d38b5dac Mon Sep 17 00:00:00 2001 From: davygrvy Date: Fri, 23 Apr 2004 07:11:26 +0000 Subject: * win/tclWinTime.c: If the Tcl_ExitProc (StopCalibration) is called from the stack frame of DllMain's PROCESS_DETACH, the wait operation should timeout and continue. --- win/tclWinThrd.c | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index 208f066..8d738b3 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.2 2003/05/13 09:57:40 mistachkin Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.3 2004/04/23 07:11:26 davygrvy Exp $ */ #include "tclWinInt.h" @@ -25,6 +25,7 @@ static CRITICAL_SECTION masterLock; static int init = 0; +static int allocOnce = 0; #define MASTER_LOCK EnterCriticalSection(&masterLock) #define MASTER_UNLOCK LeaveCriticalSection(&masterLock) @@ -393,18 +394,46 @@ Tcl_Mutex * Tcl_GetAllocMutex() { #ifdef TCL_THREADS - static int once = 0; - - if (!once) { + if (!allocOnce) { InitializeCriticalSection(&allocLock); - once = 1; + allocOnce = 1; } return &allocLockPtr; #else return NULL; #endif } + +/* + *---------------------------------------------------------------------- + * + * TclpFinalizeLock + * + * This procedure is used to destroy all private resources used in + * this file. + * + * Results: + * None. + * + * Side effects: + * Destroys everything private. TclpInitLock must be held + * entering this function. + * + *---------------------------------------------------------------------- + */ +void +TclFinalizeLock () +{ + MASTER_LOCK; + DeleteCriticalSection(&joinLock); + DeleteCriticalSection(&masterLock); + init = 0; + DeleteCriticalSection(&allocLock); + allocOnce = 0; + /* Destroy the critical section that we are holding. */ + DeleteCriticalSection(&initLock); +} #ifdef TCL_THREADS -- cgit v0.12 From e4357f99416ff3c38085702ce9524e7d0cca56e1 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Fri, 23 Apr 2004 07:17:39 +0000 Subject: revert back to 1.24.2.2 from prior mistaken commit. --- win/tclWinThrd.c | 39 +++++---------------------------------- 1 file changed, 5 insertions(+), 34 deletions(-) diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index 8d738b3..e09d327 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.3 2004/04/23 07:11:26 davygrvy Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.4 2004/04/23 07:17:39 davygrvy Exp $ */ #include "tclWinInt.h" @@ -25,7 +25,6 @@ static CRITICAL_SECTION masterLock; static int init = 0; -static int allocOnce = 0; #define MASTER_LOCK EnterCriticalSection(&masterLock) #define MASTER_UNLOCK LeaveCriticalSection(&masterLock) @@ -394,46 +393,18 @@ Tcl_Mutex * Tcl_GetAllocMutex() { #ifdef TCL_THREADS - if (!allocOnce) { + static int once = 0; + + if (!once) { InitializeCriticalSection(&allocLock); - allocOnce = 1; + once = 1; } return &allocLockPtr; #else return NULL; #endif } - -/* - *---------------------------------------------------------------------- - * - * TclpFinalizeLock - * - * This procedure is used to destroy all private resources used in - * this file. - * - * Results: - * None. - * - * Side effects: - * Destroys everything private. TclpInitLock must be held - * entering this function. - * - *---------------------------------------------------------------------- - */ -void -TclFinalizeLock () -{ - MASTER_LOCK; - DeleteCriticalSection(&joinLock); - DeleteCriticalSection(&masterLock); - init = 0; - DeleteCriticalSection(&allocLock); - allocOnce = 0; - /* Destroy the critical section that we are holding. */ - DeleteCriticalSection(&initLock); -} #ifdef TCL_THREADS -- cgit v0.12 From 3c6bff5072deff3c93b25e7093a21e84b788df3f Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 23 Apr 2004 23:40:58 +0000 Subject: * generic/tclIO.c (Tcl_SetChannelOption): Fixed [SF Tcl Bug 930851]. When changing the eofchar we have to zap the related flags to prevent them from prematurely aborting the next read. --- ChangeLog | 6 + generic/tclIO.c | 11 +- tests/eofchar.data | 846 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/io.test | 19 +- 4 files changed, 880 insertions(+), 2 deletions(-) create mode 100644 tests/eofchar.data diff --git a/ChangeLog b/ChangeLog index a0aa961..7d2b475 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-04-23 Andreas Kupries + + * generic/tclIO.c (Tcl_SetChannelOption): Fixed [SF Tcl Bug + 930851]. When changing the eofchar we have to zap the related + flags to prevent them from prematurely aborting the next read. + 2004-04-07 Jeff Hobbs * win/configure: diff --git a/generic/tclIO.c b/generic/tclIO.c index 51a105b..2e10b99 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.3 2004/02/02 22:00:30 davygrvy Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.4 2004/04/23 23:40:58 andreas_kupries Exp $ */ #include "tclInt.h" @@ -6459,6 +6459,15 @@ Tcl_SetChannelOption(interp, chan, optionName, newValue) if (argv != NULL) { ckfree((char *) argv); } + + /* + * [SF Tcl Bug 930851] Reset EOF and BLOCKED flags. Changing + * the character which signals eof can transform a current eof + * condition into a 'go ahead'. Ditto for blocked. + */ + + statePtr->flags &= (~(CHANNEL_EOF | CHANNEL_STICKY_EOF | CHANNEL_BLOCKED)); + return TCL_OK; } else if ((len > 1) && (optionName[1] == 't') && (strncmp(optionName, "-translation", len) == 0)) { diff --git a/tests/eofchar.data b/tests/eofchar.data new file mode 100644 index 0000000..4aa3d70 --- /dev/null +++ b/tests/eofchar.data @@ -0,0 +1,846 @@ +Ho hum +Ho hum +Ho hum +Ho hum +Ho hum +Ho hum +Ho hum +Ho hum +Ho hum +Ho hum +Ho hum += +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla +Ge gla Ge gla Ge gla Ge gla diff --git a/tests/io.test b/tests/io.test index 8ce7f4e..59d6b72 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.3 2004/02/25 23:38:16 dgp Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.4 2004/04/23 23:40:59 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7109,6 +7109,23 @@ test io-60.1 {writing illegal utf sequences} {openpipe fileevent} { } {1 {gets {} catch {error writing "stdout": invalid argument}}} +set datafile [file join $::tcltest::testsDirectory eofchar.data] + +test io-61.1 {Reset eof state after changing the eof char} { + set f [open $datafile r] + fconfigure $f -eofchar = + lappend res [read $f; tell $f] + fconfigure $f -eofchar {} + lappend res [read $f 1] + lappend res [read $f; tell $f] + # Any seek zaps the internals into a good state. + #seek $f 0 start + #seek $f 0 current + #lappend res [read $f; tell $f] + close $f + set res +} {77 = 23431} + # cleanup -- cgit v0.12 From 0ecdf938ca2b533273751a770d7c794e89faa9d3 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sun, 2 May 2004 21:07:16 +0000 Subject: * generic/tclProc.c (TclObjInvokeProc): * tests/proc.test (proc-3.6): fix for bad quoting of multi-word proc names in error messages [Bug 942757] --- ChangeLog | 6 ++++++ generic/tclProc.c | 26 ++++++++++++++++++++++---- tests/proc.test | 8 +++++++- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d2b475..af3f478 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-05-02 Miguel Sofer + + * generic/tclProc.c (TclObjInvokeProc): + * tests/proc.test (proc-3.6): fix for bad quoting of multi-word + proc names in error messages [Bug 942757] + 2004-04-23 Andreas Kupries * generic/tclIO.c (Tcl_SetChannelOption): Fixed [SF Tcl Bug diff --git a/generic/tclProc.c b/generic/tclProc.c index 1ec50f1..40c8ceb 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.1 2003/07/18 23:35:39 dgp Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.2 2004/05/02 21:07:16 msofer Exp $ */ #include "tclInt.h" @@ -910,7 +910,6 @@ TclObjInterpProc(clientData, interp, objc, objv) register CompiledLocal *localPtr; char *procName; int nameLen, localCt, numArgs, argCt, i, result; - Tcl_Obj *objResult = Tcl_GetObjResult(interp); /* * This procedure generates an array "compiledLocals" that holds the @@ -1037,13 +1036,32 @@ TclObjInterpProc(clientData, interp, objc, objv) localPtr = localPtr->nextPtr; } if (argCt > 0) { + Tcl_Obj *objResult; + int len, flags; + incorrectArgs: /* * Build up equivalent to Tcl_WrongNumArgs message for proc */ + Tcl_ResetResult(interp); - Tcl_AppendStringsToObj(objResult, - "wrong # args: should be \"", procName, (char *) NULL); + objResult = Tcl_GetObjResult(interp); + Tcl_AppendToObj(objResult, "wrong # args: should be \"", -1); + + /* + * Quote the proc name if it contains spaces (Bug 942757). + */ + + len = Tcl_ScanCountedElement(procName, nameLen, &flags); + if (len != nameLen) { + char *procName1 = ckalloc((unsigned) len); + len = Tcl_ConvertCountedElement(procName, nameLen, procName1, flags); + Tcl_AppendToObj(objResult, procName1, len); + ckfree(procName1); + } else { + Tcl_AppendToObj(objResult, procName, len); + } + localPtr = procPtr->firstLocalPtr; for (i = 1; i <= numArgs; i++) { if (localPtr->defValuePtr != NULL) { diff --git a/tests/proc.test b/tests/proc.test index ce07e88..222a31f 100644 --- a/tests/proc.test +++ b/tests/proc.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: proc.test,v 1.11 2002/12/11 21:29:52 dgp Exp $ +# RCS: @(#) $Id: proc.test,v 1.11.2.1 2004/05/02 21:07:16 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -166,9 +166,15 @@ test proc-3.5 {TclObjInterpProc, any old result is reset before appending error list [catch {p} msg] $msg } {1 {wrong # args: should be "p x"}} +test proc-3.6 {TclObjInterpProc, proper quoting of proc name, Bug 942757} { + proc {a b c} {x} {info commands 3m} + list [catch {{a b c}} msg] $msg +} {1 {wrong # args: should be "{a b c} x"}} + catch {eval namespace delete [namespace children :: test_ns_*]} catch {rename p ""} catch {rename {} ""} +catch {rename {a b c} {}} catch {unset msg} if {[catch {package require procbodytest}]} { -- cgit v0.12 From 9326437245bec03c6f439aa79c3c9db762056d16 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 3 May 2004 14:28:59 +0000 Subject: * library/init.tcl: Corrected unique prefix matching of interactive command completion in [unknown]. [Bug 946952] --- ChangeLog | 5 +++++ library/init.tcl | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index af3f478..47bf86f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-05-03 Don Porter + + * library/init.tcl: Corrected unique prefix matching of + interactive command completion in [unknown]. [Bug 946952] + 2004-05-02 Miguel Sofer * generic/tclProc.c (TclObjInvokeProc): diff --git a/library/init.tcl b/library/init.tcl index b1d2b09..b669d6a 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.55.2.2 2003/09/23 04:49:12 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.55.2.3 2004/05/03 14:28:59 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -295,13 +295,22 @@ proc unknown args { return [uplevel 1 $newcmd] } - set ret [catch {set cmds [info commands $name*]} msg] + set ret [catch {set candidates [info commands $name*]} msg] if {[string equal $name "::"]} { set name "" } if {$ret != 0} { return -code $ret -errorcode $errorCode \ - "error in unknown while checking if \"$name\" is a unique command abbreviation: $msg" + "error in unknown while checking if \"$name\" is\ + a unique command abbreviation:\n$msg" + } + # Filter out bogus matches when $name contained + # a glob-special char [Bug 946952] + set cmds [list] + foreach x $candidates { + if {[string range $x 0 [expr [string length $name]-1]] eq $name} { + lappend cmds $x + } } if {[llength $cmds] == 1} { return [uplevel 1 [lreplace $args 0 0 $cmds]] -- cgit v0.12 From fdd38d24fb5bcfd5779ed198bc00b3e9ff5d7840 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 3 May 2004 18:01:21 +0000 Subject: * win/tclWin32Dll.c (TclpCheckStackSpace): * tests/stack.test (stack-3.1): Fix for undetected stack overflow in TclReExec on Windows. [Bug 947070] --- ChangeLog | 6 ++++++ tests/stack.test | 32 +++++++++++++++++++++++++++++++- win/tclWinInt.h | 4 ++-- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 47bf86f..13d21b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-05-03 Kevin Kenny + + * win/tclWin32Dll.c (TclpCheckStackSpace): + * tests/stack.test (stack-3.1): Fix for undetected stack + overflow in TclReExec on Windows. [Bug 947070] + 2004-05-03 Don Porter * library/init.tcl: Corrected unique prefix matching of diff --git a/tests/stack.test b/tests/stack.test index 828352b..f5d849b 100644 --- a/tests/stack.test +++ b/tests/stack.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: stack.test,v 1.15 2002/07/29 00:25:49 msofer Exp $ +# RCS: @(#) $Id: stack.test,v 1.15.2.1 2004/05/03 18:01:36 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -55,6 +55,36 @@ test stack-2.1 {maxNestingDepth reached on infinite recursion} {minStack2400} { set msg } {too many nested evaluations (infinite loop?)} +# Make sure that there is enough stack to run regexp even if we're +# close to the recursion limit. [Bug 947070] + +test stack-3.1 {enough room for regexp near recursion limit} \ + -constraints { win } \ + -setup { + set ::limit [interp recursionlimit {} 10000] + set ::depth 0 + proc a { max } { + if { [info level] < $max } { + set ::depth [info level] + a $max + } else { + regexp {^ ?} x + } + } + list [catch { a 10001 }] + incr depth -3 + set depth2 $depth + } -body { + list [catch { a $::depth } result] \ + $result [expr { $::depth2 - $::depth }] + } -cleanup { + interp recursionlimit {} $::limit + } -result {0 1 1} + # cleanup ::tcltest::cleanupTests return + +# Local Variables: +# mode: tcl +# End: diff --git a/win/tclWinInt.h b/win/tclWinInt.h index ce09ce3..7ff2775 100644 --- a/win/tclWinInt.h +++ b/win/tclWinInt.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.2 2004/03/21 20:59:28 hobbs Exp $ + * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.3 2004/05/03 18:01:37 kennykb Exp $ */ #ifndef _TCLWININT @@ -27,7 +27,7 @@ * to help avoid overflowing the stack in the case of infinite recursion. */ -#define TCL_WIN_STACK_THRESHOLD 0x2000 +#define TCL_WIN_STACK_THRESHOLD 0x8000 #ifdef BUILD_tcl # undef TCL_STORAGE_CLASS -- cgit v0.12 From 96113217ca1796f998db2554ab115ccbde07a1d2 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 4 May 2004 03:50:59 +0000 Subject: * Applied [SF Tcl Patch 868853], fixing a mem leak in TtySetOptionProc. Report and Patch provided by Stuart Cassoff . --- ChangeLog | 6 ++++++ unix/tclUnixChan.c | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 13d21b4..d2a4792 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-05-03 Andreas Kupries + + * Applied [SF Tcl Patch 868853], fixing a mem leak in + TtySetOptionProc. Report and Patch provided by Stuart + Cassoff . + 2004-05-03 Kevin Kenny * win/tclWin32Dll.c (TclpCheckStackSpace): diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 794e8dd..b7f0339 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.2 2004/02/25 14:54:52 dkf Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.3 2004/05/04 03:50:59 andreas_kupries Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -969,9 +969,11 @@ TtySetOptionProc(instanceData, interp, optionName, value) "bad value for -xchar: should be a list of two elements", (char *) NULL); } + ckfree((char *) argv); return TCL_ERROR; } SETIOSTATE(fsPtr->fd, &iostate); + ckfree((char *) argv); return TCL_OK; } @@ -1004,12 +1006,14 @@ TtySetOptionProc(instanceData, interp, optionName, value) "bad value for -ttycontrol: should be a list of", "signal,value pairs", (char *) NULL); } + ckfree((char *) argv); return TCL_ERROR; } GETCONTROL(fsPtr->fd, &control); while (argc > 1) { if (Tcl_GetBoolean(interp, argv[1], &flag) == TCL_ERROR) { + ckfree((char *) argv); return TCL_ERROR; } if (strncasecmp(argv[0], "DTR", strlen(argv[0])) == 0) { @@ -1021,6 +1025,7 @@ TtySetOptionProc(instanceData, interp, optionName, value) } #else /* !TIOCM_DTR */ UNSUPPORTED_OPTION("-ttycontrol DTR"); + ckfree((char *) argv); return TCL_ERROR; #endif /* TIOCM_DTR */ } else if (strncasecmp(argv[0], "RTS", strlen(argv[0])) == 0) { @@ -1032,6 +1037,7 @@ TtySetOptionProc(instanceData, interp, optionName, value) } #else /* !TIOCM_RTS*/ UNSUPPORTED_OPTION("-ttycontrol RTS"); + ckfree((char *) argv); return TCL_ERROR; #endif /* TIOCM_RTS*/ } else if (strncasecmp(argv[0], "BREAK", strlen(argv[0])) == 0) { @@ -1039,6 +1045,7 @@ TtySetOptionProc(instanceData, interp, optionName, value) SETBREAK(fsPtr->fd, flag); #else /* !SETBREAK */ UNSUPPORTED_OPTION("-ttycontrol BREAK"); + ckfree((char *) argv); return TCL_ERROR; #endif /* SETBREAK */ } else { @@ -1047,12 +1054,14 @@ TtySetOptionProc(instanceData, interp, optionName, value) "bad signal for -ttycontrol: must be ", "DTR, RTS or BREAK", (char *) NULL); } + ckfree((char *) argv); return TCL_ERROR; } argc -= 2, argv += 2; } /* while (argc > 1) */ SETCONTROL(fsPtr->fd, &control); + ckfree((char *) argv); return TCL_OK; } -- cgit v0.12 From c8d75bda613025d7582de9ffe5d86969708b2984 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 4 May 2004 19:50:40 +0000 Subject: * tests/tcltest.test: Test corrections for Mac OSX. Thanks to Steven Abner (tauvan). [Bug 947440] --- ChangeLog | 5 +++++ tests/tcltest.test | 29 +++++++++++++++++++---------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index d2a4792..d034205 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-05-04 Don Porter + + * tests/tcltest.test: Test corrections for Mac OSX. Thanks + to Steven Abner (tauvan). [Bug 947440] + 2004-05-03 Andreas Kupries * Applied [SF Tcl Patch 868853], fixing a mem leak in diff --git a/tests/tcltest.test b/tests/tcltest.test index 2413cca..165e070 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.1 2004/04/02 17:39:08 dgp Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.2 2004/05/04 19:50:41 dgp Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -525,9 +525,7 @@ set a [makeFile { set tdiaf [makeFile {} thisdirectoryisafile] set normaldirectory [makeDirectory normaldirectory] -if {$::tcl_platform(platform) == "macintosh"} { -set normaldirectory [file normalize $normaldirectory] -} +normalizePath normaldirectory # -tmpdir, [temporaryDirectory] test tcltest-8.1 {tcltest a.tcl -tmpdir a} {unixOrPc} { @@ -701,15 +699,26 @@ removeFile thisdirectoryisafile removeDirectory normaldirectory # -file, -notfile, [matchFiles], [skipFiles] -test tcltest-9.1 {-file a*.tcl} {unixOrPc} { +test tcltest-9.1 {-file a*.tcl} -constraints {unixOrPc} -setup { + set old [testsDirectory] + testsDirectory [file dirname [info script]] +} -body { slave msg [file join [testsDirectory] all.tcl] -file a*.test - list [regexp assocd\.test $msg] -} {1} -test tcltest-9.2 {-file a*.tcl} {unixOrPc} { + set msg +} -cleanup { + testsDirectory $old +} -match regexp -result {assocd\.test} + +test tcltest-9.2 {-file a*.tcl} -constraints {unixOrPc} -setup { + set old [testsDirectory] + testsDirectory [file dirname [info script]] +} -body { slave msg [file join [testsDirectory] all.tcl] \ -file a*.test -notfile assocd* - list [regexp assocd\.test $msg] -} {0} + regexp {assocd\.test} $msg +} -cleanup { + testsDirectory $old +} -result 0 test tcltest-9.3 {matchFiles} { -body { -- cgit v0.12 From 4b1a1e33963081c4ba6472f189981a395d4d6577 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 4 May 2004 22:12:47 +0000 Subject: * tests/fileName.test (filename-12.9): use C:/ instead of the first item in file volumes - that's usually A:/, which for most will have nothing in it. --- ChangeLog | 6 ++++++ tests/fileName.test | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d034205..7632d76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-05-04 Jeff Hobbs + + * tests/fileName.test (filename-12.9): use C:/ instead of the + first item in file volumes - that's usually A:/, which for most + will have nothing in it. + 2004-05-04 Don Porter * tests/tcltest.test: Test corrections for Mac OSX. Thanks diff --git a/tests/fileName.test b/tests/fileName.test index db431fc..19b08ec 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.4 2004/03/09 12:56:59 vincentdarley Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.5 2004/05/04 22:12:49 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1669,7 +1669,9 @@ test filename-12.8 {globbing at filesystem root} {unixOnly} { set equal } {1} test filename-12.9 {globbing at filesystem root} {winOnly} { - set dir [lindex [glob -type d [lindex [file volumes] 0]*] 0] + # Can't grab just anything from 'file volumes' because we need a dir + # that has subdirs - assume that C:/ exists across Windows machines. + set dir [lindex [glob -type d C:/*] 0] set first [string range $dir 0 3] set res1 [glob -nocomplain ${first}*] set res2 [glob -path $first *] -- cgit v0.12 From 7aa7d273bd92aa42ff8db0b007538b7619edcc95 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 4 May 2004 22:25:50 +0000 Subject: * generic/tclIOUtil.c (Tcl_FSChdir): Work-around crash condition * tests/winFCmd.test (winFCmd-16.12): triggered when $HOME is volumerelative (ie 'C:'). --- ChangeLog | 18 +++++++++++------- generic/tclIOUtil.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- tests/winFCmd.test | 11 ++++++++++- 3 files changed, 69 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7632d76..a2d3791 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-05-04 Jeff Hobbs + * generic/tclIOUtil.c (Tcl_FSChdir): Work-around crash condition + * tests/winFCmd.test (winFCmd-16.12): triggered when $HOME is + volumerelative (ie 'C:'). + * tests/fileName.test (filename-12.9): use C:/ instead of the first item in file volumes - that's usually A:/, which for most will have nothing in it. @@ -15,16 +19,16 @@ TtySetOptionProc. Report and Patch provided by Stuart Cassoff . -2004-05-03 Kevin Kenny +2004-05-03 Kevin Kenny * win/tclWin32Dll.c (TclpCheckStackSpace): * tests/stack.test (stack-3.1): Fix for undetected stack overflow in TclReExec on Windows. [Bug 947070] - -2004-05-03 Don Porter - * library/init.tcl: Corrected unique prefix matching of - interactive command completion in [unknown]. [Bug 946952] +2004-05-03 Don Porter + + * library/init.tcl: Corrected unique prefix matching of + interactive command completion in [unknown]. [Bug 946952] 2004-05-02 Miguel Sofer @@ -57,8 +61,8 @@ 2004-04-02 Don Porter - * tests/tcltest.test: Corrected constraint typos: "nonRoot" -> - "notRoot". Thanks to Steven Abner (tauvan). [Bug 928353] + * tests/tcltest.test: Corrected constraint typos: "nonRoot" -> + "notRoot". Thanks to Steven Abner (tauvan). [Bug 928353] 2004-03-31 Don Porter diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index f91a2b6..046039e 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.16 2004/02/18 01:59:09 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.17 2004/05/04 22:26:00 hobbs Exp $ */ #include "tclInt.h" @@ -2602,7 +2602,48 @@ Tcl_FSChdir(pathPtr) Tcl_Filesystem *fsPtr; int retVal = -1; +#ifdef WIN32 + /* + * This complete hack addresses the bug tested in winFCmd-16.12, + * where having your HOME as "C:" (IOW, a seemingly path relative + * dir) would cause a crash when you cd'd to it and requested 'pwd'. + * The work-around is to force such a dir into an absolute path by + * tacking on '/'. + * + * We check for '~' specifically because that's what Tcl_CdObjCmd + * passes in that triggers the bug. A direct 'cd C:' call will not + * because that gets the volumerelative pwd. + * + * This is not an issue for 8.5 as that has a more elaborate change + * that requires the use of TCL_FILESYSTEM_VERSION_2. + */ + Tcl_Obj *objPtr = NULL; + if (pathPtr->bytes && pathPtr->length == 1 && pathPtr->bytes[0] == '~') { + int len; + char *str; + + objPtr = Tcl_FSGetTranslatedPath(NULL, pathPtr); + if (objPtr == NULL) { + return TCL_ERROR; + } + Tcl_IncrRefCount(objPtr); + str = Tcl_GetStringFromObj(objPtr, &len); + if (len == 2 && str[1] == ':') { + pathPtr = Tcl_NewStringObj(str, len); + Tcl_AppendToObj(pathPtr, "/", 1); + Tcl_IncrRefCount(pathPtr); + Tcl_DecrRefCount(objPtr); + objPtr = pathPtr; + } else { + Tcl_DecrRefCount(objPtr); + objPtr = NULL; + } + } +#endif if (Tcl_FSGetNormalizedPath(NULL, pathPtr) == NULL) { +#ifdef WIN32 + if (objPtr) { Tcl_DecrRefCount(objPtr); } +#endif return TCL_ERROR; } @@ -2646,6 +2687,9 @@ Tcl_FSChdir(pathPtr) */ Tcl_Obj *normDirName = Tcl_FSGetNormalizedPath(NULL, pathPtr); if (normDirName == NULL) { +#ifdef WIN32 + if (objPtr) { Tcl_DecrRefCount(objPtr); } +#endif return TCL_ERROR; } FsUpdateCwd(normDirName); @@ -2654,6 +2698,9 @@ Tcl_FSChdir(pathPtr) Tcl_SetErrno(ENOENT); } +#ifdef WIN32 + if (objPtr) { Tcl_DecrRefCount(objPtr); } +#endif return (retVal); } diff --git a/tests/winFCmd.test b/tests/winFCmd.test index 78d85c9..0b1fdf0 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.20.2.3 2003/11/21 16:19:15 dgp Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.20.2.4 2004/05/04 22:26:00 hobbs Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -1014,6 +1014,15 @@ test winFCmd-16.11 {Windows file normalization} {pcOnly cdrom} { # Must not crash set result "no crash" } {no crash} +test winFCmd-16.12 {Windows file normalization} {pcOnly} { + set oldhome "" + catch {set oldhome $::env(HOME)} + set ::env(HOME) ${d}: + cd + set result [pwd]; # <- Must not crash + set ::env(HOME) $oldhome + set result +} ${d}:/ cd $pwd unset d dd pwd -- cgit v0.12 From 5fcc82ee3020de5dcf7ff55a086f396c0ddba39e Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 5 May 2004 20:54:47 +0000 Subject: Remove reference to totally non-existant API. [Bug 848440] --- ChangeLog | 5 +++++ doc/CrtObjCmd.3 | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a2d3791..641d8c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-05-05 Donal K. Fellows + + * doc/CrtObjCmd.3: Remove reference to Tcl_RenameCommand; there is + no such API. [Bug 848440] + 2004-05-04 Jeff Hobbs * generic/tclIOUtil.c (Tcl_FSChdir): Work-around crash condition diff --git a/doc/CrtObjCmd.3 b/doc/CrtObjCmd.3 index 669a655..90cdab6 100644 --- a/doc/CrtObjCmd.3 +++ b/doc/CrtObjCmd.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtObjCmd.3,v 1.7 2002/05/17 00:26:53 jenglish Exp $ +'\" RCS: @(#) $Id: CrtObjCmd.3,v 1.7.2.1 2004/05/05 20:54:47 dkf Exp $ '\" .so man.macros .TH Tcl_CreateObjCommand 3 8.0 Tcl "Tcl Library Procedures" @@ -275,7 +275,7 @@ ClientData for its command procedure. .PP Note that neither \fBTcl_SetCommandInfo\fR nor \fBTcl_SetCommandInfoFromToken\fR will change a command's namespace. -You must use \fBTcl_RenameCommand\fR to do that. +Use \fBTcl_Eval\fR to call the \fBrename\fR command to do that. .PP \fBTcl_GetCommandName\fR provides a mechanism for tracking commands that have been renamed. -- cgit v0.12 From b57cecd3c68da0bfa3bde7795d505fd29bbd8ca8 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 May 2004 21:34:50 +0000 Subject: * tests/unixInit.test (unixInit-2.10): Test correction for Mac OSX. Be sure to consistently compare normalized path names. Thanks to Steven Abner (tauvan). [Bug 948177] --- ChangeLog | 6 ++++++ tests/unixInit.test | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 641d8c4..7b9f4ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-05-05 Don Porter + + * tests/unixInit.test (unixInit-2.10): Test correction for Mac OSX. + Be sure to consistently compare normalized path names. Thanks to + Steven Abner (tauvan). [Bug 948177] + 2004-05-05 Donal K. Fellows * doc/CrtObjCmd.3: Remove reference to Tcl_RenameCommand; there is diff --git a/tests/unixInit.test b/tests/unixInit.test index 880ea54..4523ee3 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.7 2004/04/06 14:39:16 dgp Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.8 2004/05/05 21:34:52 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -281,8 +281,11 @@ test unixInit-2.10 {TclpInitLibraryPath: executable relative} -constraints { cd $libDir } -body { # Checking for Bug 832657 - # The proposed patch in TclFindEncodings was not correct x-platform. - lrange [getlibpath [file join .. bin tcltest]] 2 3 + set x [lrange [getlibpath [file join .. bin tcltest]] 2 3] + foreach p $x { + lappend y [file normalize $p] + } + set y } -cleanup { cd $saveDir unset saveDir @@ -298,6 +301,7 @@ test unixInit-2.10 {TclpInitLibraryPath: executable relative} -constraints { removeDirectory sparkly $tmpDir unset tmpDir removeDirectory tmp + unset x p y } -result [list [file join [temporaryDirectory] tmp sparkly library] \ [file join [temporaryDirectory] tmp library] ] -- cgit v0.12 From 67c13e8ce843ef9594171c0789af6bbce954ab5c Mon Sep 17 00:00:00 2001 From: davygrvy Date: Thu, 6 May 2004 01:02:18 +0000 Subject: * generic/tclEvent.c: TclSetLibraryPath's use of caching the stringrep of the pathPtr object to TclGetLibraryPath called from another thread was ineffective if the original's stringrep had been invalidated as what happens when it gets muted to a list. * generic/tclInt.h: * generic/tclThread.c: * generic/tclEvent.c: * unix/tclUnixThrd.c: * win/tclWinThrd.c: Provisions made so masterLock, initLock, allocLock and joinLock mutexes can be recovered during Tcl_Finalize. --- generic/tclEvent.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 305a1e4..fb40447 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.1 2003/05/13 12:44:07 dkf Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.2 2004/05/06 01:02:18 davygrvy Exp $ */ #include "tclInt.h" @@ -100,8 +100,9 @@ static Tcl_ThreadDataKey dataKey; /* * Common string for the library path for sharing across threads. + * This is ckalloc'd and cleared in Tcl_Finalize. */ -char *tclLibraryPathStr; +static char *tclLibraryPathStr = NULL; /* * Prototypes for procedures referenced only in this file: @@ -593,6 +594,8 @@ TclSetLibraryPath(pathPtr) * the new library path. */ { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + const char *toDupe; + int size; if (pathPtr != NULL) { Tcl_IncrRefCount(pathPtr); @@ -606,7 +609,12 @@ TclSetLibraryPath(pathPtr) * No mutex locking is needed here as up the stack we're within * TclpInitLock(). */ - tclLibraryPathStr = Tcl_GetStringFromObj(pathPtr, NULL); + if (tclLibraryPathStr != NULL) { + ckfree(tclLibraryPathStr); + } + toDupe = Tcl_GetStringFromObj(pathPtr, &size); + tclLibraryPathStr = ckalloc(size+1); + strcpy(tclLibraryPathStr, toDupe); } /* @@ -842,6 +850,10 @@ Tcl_Finalize() ckfree(tclDefaultEncodingDir); tclDefaultEncodingDir = NULL; } + if (tclLibraryPathStr != NULL) { + ckfree(tclLibraryPathStr); + tclLibraryPathStr = NULL; + } Tcl_SetPanicProc(NULL); @@ -877,7 +889,7 @@ Tcl_Finalize() TclFinalizeMemorySubsystem(); inFinalize = 0; } - TclpInitUnlock(); + TclFinalizeLock(); } /* -- cgit v0.12 From 84a75075141136a76e5f65c8e3c322704de6b830 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Thu, 6 May 2004 01:02:58 +0000 Subject: * generic/tclInt.h: * generic/tclThread.c: * generic/tclEvent.c: * unix/tclUnixThrd.c: * win/tclWinThrd.c: Provisions made so masterLock, initLock, allocLock and joinLock mutexes can be recovered during Tcl_Finalize. --- generic/tclInt.h | 3 ++- generic/tclThread.c | 8 ++++---- unix/tclUnixThrd.c | 30 ++++++++++++++++++++++++++++++ win/tclWinThrd.c | 41 ++++++++++++++++++++++++++++++++++++----- 4 files changed, 72 insertions(+), 10 deletions(-) diff --git a/generic/tclInt.h b/generic/tclInt.h index 18438e2..7282343 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.4 2004/03/29 18:49:36 hobbs Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.5 2004/05/06 01:02:58 davygrvy Exp $ */ #ifndef _TCLINT @@ -1635,6 +1635,7 @@ EXTERN void TclFinalizeMemorySubsystem _ANSI_ARGS_((void)); EXTERN void TclFinalizeNotifier _ANSI_ARGS_((void)); EXTERN void TclFinalizeAsync _ANSI_ARGS_((void)); EXTERN void TclFinalizeSynchronization _ANSI_ARGS_((void)); +EXTERN void TclFinalizeLock _ANSI_ARGS_((void)); EXTERN void TclFinalizeThreadData _ANSI_ARGS_((void)); EXTERN int TclGlob _ANSI_ARGS_((Tcl_Interp *interp, char *pattern, Tcl_Obj *unquotedPrefix, diff --git a/generic/tclThread.c b/generic/tclThread.c index 5ddbb91..b0b2300 100644 --- a/generic/tclThread.c +++ b/generic/tclThread.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThread.c,v 1.6 2002/12/10 00:34:15 hobbs Exp $ + * RCS: @(#) $Id: tclThread.c,v 1.6.2.1 2004/05/06 01:02:59 davygrvy Exp $ */ #include "tclInt.h" @@ -30,9 +30,9 @@ typedef struct { char **list; /* List of pointers */ } SyncObjRecord; -static SyncObjRecord keyRecord; -static SyncObjRecord mutexRecord; -static SyncObjRecord condRecord; +static SyncObjRecord keyRecord = {0, 0, NULL}; +static SyncObjRecord mutexRecord = {0, 0, NULL}; +static SyncObjRecord condRecord = {0, 0, NULL}; /* * Prototypes of functions used only in this file diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 427a974..aa26c51 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -255,7 +255,37 @@ TclpInitLock() pthread_mutex_lock(&initLock); #endif } + +/* + *---------------------------------------------------------------------- + * + * TclpFinalizeLock + * + * This procedure is used to destroy all private resources used in + * this file. + * + * Results: + * None. + * + * Side effects: + * Destroys everything private. TclpInitLock must be held + * entering this function. + * + *---------------------------------------------------------------------- + */ +void +TclFinalizeLock () +{ +#ifdef TCL_THREADS + /* + * You do not need to destroy mutexes that were created with the + * PTHREAD_MUTEX_INITIALIZER macro. These mutexes do not need + * any destruction: masterLock, allocLock, and initLock. + */ + pthread_mutex_unlock(&initLock); +#endif +} /* *---------------------------------------------------------------------- diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index e09d327..558cee4 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.4 2004/04/23 07:17:39 davygrvy Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.5 2004/05/06 01:03:14 davygrvy Exp $ */ #include "tclWinInt.h" @@ -44,6 +44,7 @@ static CRITICAL_SECTION initLock; static CRITICAL_SECTION allocLock; static Tcl_Mutex allocLockPtr = (Tcl_Mutex) &allocLock; +static int allocOnce = 0; #endif /* TCL_THREADS */ @@ -393,18 +394,48 @@ Tcl_Mutex * Tcl_GetAllocMutex() { #ifdef TCL_THREADS - static int once = 0; - - if (!once) { + if (!allocOnce) { InitializeCriticalSection(&allocLock); - once = 1; + allocOnce = 1; } return &allocLockPtr; #else return NULL; #endif } + +/* + *---------------------------------------------------------------------- + * + * TclpFinalizeLock + * + * This procedure is used to destroy all private resources used in + * this file. + * + * Results: + * None. + * + * Side effects: + * Destroys everything private. TclpInitLock must be held + * entering this function. + * + *---------------------------------------------------------------------- + */ +void +TclFinalizeLock () +{ + MASTER_LOCK; + DeleteCriticalSection(&joinLock); + DeleteCriticalSection(&masterLock); + init = 0; +#ifdef TCL_THREADS + DeleteCriticalSection(&allocLock); + allocOnce = 0; +#endif + /* Destroy the critical section that we are holding. */ + DeleteCriticalSection(&initLock); +} #ifdef TCL_THREADS -- cgit v0.12 From e166c0cd095d11af250326255dc2a976cd87ea58 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Thu, 6 May 2004 01:03:33 +0000 Subject: * win/coffbase.txt: Added the tls extension to the list of preferred load addresses. --- win/coffbase.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/win/coffbase.txt b/win/coffbase.txt index 42d40d1..c14485e 100644 --- a/win/coffbase.txt +++ b/win/coffbase.txt @@ -12,7 +12,7 @@ ; they're mutually exclusive. This info is placed in the DLL's PE header by the ; linker with the `-base:@$(TCLDIR)\win\coffbase.txt,` option. ; -; RCS: @(#) $Id: coffbase.txt,v 1.5 2002/09/12 22:31:27 davygrvy Exp $ +; RCS: @(#) $Id: coffbase.txt,v 1.5.2.1 2004/05/06 01:03:33 davygrvy Exp $ tcl 0x10000000 0x00200000 tcldde 0x10200000 0x00010000 @@ -23,3 +23,5 @@ itcl 0x10500000 0x00080000 itk 0x10580000 0x00080000 bltlite 0x10600000 0x00080000 blt 0x10680000 0x00080000 +iocpsock 0x10700000 0x00080000 +tls 0x10780000 0x00080000 -- cgit v0.12 From e545850e9721d9936caa3475993a988c63f3ec65 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Thu, 6 May 2004 01:03:56 +0000 Subject: * win/tclWinSock.c: (SocketThreadExitHandler): Don't call TerminateThread when WaitForSingleObject returns a timeout. Tcl_Finalize called from DllMain will pause all threads. Trust that the thread will get the close notice at a later time if it does ever wake up before being cleaned up by the system anyway. (SocketEventProc) : connect errors should fire both the readable and writable handlers because this is how it works on UNIX [Bug 794839] --- win/tclWinSock.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/win/tclWinSock.c b/win/tclWinSock.c index 4586698..3d0d5f0 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.1 2003/10/23 16:24:42 andreas_kupries Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.2 2004/05/06 01:03:56 davygrvy Exp $ */ #include "tclWinInt.h" @@ -627,13 +627,14 @@ SocketThreadExitHandler(clientData) GetExitCodeThread(tsdPtr->socketThread, &exitCode); if (exitCode == STILL_ACTIVE) { PostMessage(tsdPtr->hwnd, SOCKET_TERMINATE, 0, 0); - /* * Wait for the thread to close. This ensures that we are - * completely cleaned up before we leave this function. + * completely cleaned up before we leave this function. + * If Tcl_Finalize was called from DllMain, the thread + * is in a paused state so we need to timeout and continue. */ - WaitForSingleObject(tsdPtr->socketThread, INFINITE); + WaitForSingleObject(tsdPtr->socketThread, 100); } CloseHandle(tsdPtr->socketThread); tsdPtr->socketThread = NULL; @@ -900,6 +901,10 @@ SocketEventProc(evPtr, flags) } if (events & (FD_WRITE | FD_CONNECT)) { mask |= TCL_WRITABLE; + if (events & FD_CONNECT && infoPtr->lastError != NO_ERROR) { + /* connect errors should also fire the readable handler. */ + mask |= TCL_READABLE; + } } if (mask) { -- cgit v0.12 From 2cdf4d07e53202f69d06d9c388f89198b0f16f5f Mon Sep 17 00:00:00 2001 From: davygrvy Date: Thu, 6 May 2004 01:04:32 +0000 Subject: * win/tclWin32Dll.c: Structured Exception Handling added around Tcl_Finalize called from DllMain's DLL_PROCESS_DETACH. We can't be 100% assured that Tcl is being unloaded by the OS in a stable condition and we need to protect the exit handlers should the stack be in a hosed state. AT&T style assembly for SEH under MinGW included, too. [Patch 858493] Also added DisableThreadLibraryCalls() for the DLL_PROCESS_ATTACH case. We're not interested in knowing about DLL_THREAD_ATTACH, so disable the notices. --- win/tclWin32Dll.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 3 deletions(-) diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index 2e341bc..2e3368c 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.1 2003/04/14 15:45:59 vincentdarley Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.2 2004/05/06 01:04:32 davygrvy Exp $ */ #include "tclWinInt.h" @@ -239,19 +239,98 @@ DllMain(hInst, reason, reserved) { switch (reason) { case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(hInst); TclWinInit(hInst); return TRUE; case DLL_PROCESS_DETACH: - if (hInst == hInstance) { - Tcl_Finalize(); + /* + * Protect the call to Tcl_Finalize. The OS could be unloading + * us from an exception handler and the state of the stack might + * be unstable. + */ +#ifdef HAVE_NO_SEH +# ifdef TCL_MEM_DEBUG + __asm__ __volatile__ ( + "movl %%esp, %0" "\n\t" + "movl %%ebp, %1" "\n\t" + "movl %%fs:0, %2" "\n\t" + : "=m"(INITIAL_ESP), + "=m"(INITIAL_EBP), + "=r"(INITIAL_HANDLER) ); +# endif /* TCL_MEM_DEBUG */ + + __asm__ __volatile__ ( + "pushl %ebp" "\n\t" + "pushl $__except_dllmain_detach_handler" "\n\t" + "pushl %fs:0" "\n\t" + "movl %esp, %fs:0"); +#else + __try { +#endif /* HAVE_NO_SEH */ + + Tcl_Finalize(); + +#ifdef HAVE_NO_SEH + __asm__ __volatile__ ( + "jmp dllmain_detach_pop" "\n" + "dllmain_detach_reentry:" "\n\t" + "movl %%fs:0, %%eax" "\n\t" + "movl 0x8(%%eax), %%esp" "\n\t" + "movl 0x8(%%esp), %%ebp" "\n" + "dllmain_detach_pop:" "\n\t" + "movl (%%esp), %%eax" "\n\t" + "movl %%eax, %%fs:0" "\n\t" + "add $12, %%esp" "\n\t" + : + : + : "%eax"); + +# ifdef TCL_MEM_DEBUG + __asm__ __volatile__ ( + "movl %%esp, %0" "\n\t" + "movl %%ebp, %1" "\n\t" + "movl %%fs:0, %2" "\n\t" + : "=m"(RESTORED_ESP), + "=m"(RESTORED_EBP), + "=r"(RESTORED_HANDLER) ); + + if (INITIAL_ESP != RESTORED_ESP) + Tcl_Panic("ESP restored incorrectly"); + if (INITIAL_EBP != RESTORED_EBP) + Tcl_Panic("EBP restored incorrectly"); + if (INITIAL_HANDLER != RESTORED_HANDLER) + Tcl_Panic("HANDLER restored incorrectly"); +# endif /* TCL_MEM_DEBUG */ +#else + } __except (EXCEPTION_EXECUTE_HANDLER) { + /* empty handler body. */ } +#endif /* HAVE_NO_SEH */ break; } return TRUE; } +#ifdef HAVE_NO_SEH +static +__attribute__ ((cdecl)) +EXCEPTION_DISPOSITION +_except_dllmain_detach_handler( + struct _EXCEPTION_RECORD *ExceptionRecord, + void *EstablisherFrame, + struct _CONTEXT *ContextRecord, + void *DispatcherContext) +{ + __asm__ __volatile__ ( + "jmp dllmain_detach_reentry"); + /* Nuke compiler warning about unused static function */ + _except_dllmain_detach_handler(NULL, NULL, NULL, NULL); + return 0; /* Function does not return */ +} +#endif /* HAVE_NO_SEH */ + #endif /* !STATIC_BUILD */ #endif /* __WIN32__ */ -- cgit v0.12 From 7396c2e38ab6095aa40c23412309ecb4387f55b4 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Thu, 6 May 2004 01:04:53 +0000 Subject: * generic/tclEncoding.c: Added FreeEncoding(systemEncoding) in TclFinalizeEncodingSubsystem because its ref count was incremented in TclInitEncodingSubsystem. --- generic/tclEncoding.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 870d587..c596911 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.3 2004/03/29 18:49:35 hobbs Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.4 2004/05/06 01:04:53 davygrvy Exp $ */ #include "tclInt.h" @@ -314,6 +314,7 @@ TclFinalizeEncodingSubsystem() Tcl_MutexLock(&encodingMutex); encodingsInitialized = 0; + FreeEncoding(systemEncoding); hPtr = Tcl_FirstHashEntry(&encodingTable, &search); while (hPtr != NULL) { /* -- cgit v0.12 From 6b122c571bfed83a90a1eb24ae1be59a815ea5bb Mon Sep 17 00:00:00 2001 From: davygrvy Date: Thu, 6 May 2004 01:05:15 +0000 Subject: no message --- ChangeLog | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7b9f4ec..e970fc6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,46 @@ +2004-05-05 David Gravereaux + + * generic/tclEvent.c: TclSetLibraryPath's use of caching the + stringrep of the pathPtr object to TclGetLibraryPath called from + another thread was ineffective if the original's stringrep had + been invalidated as what happens when it gets muted to a list. + + * generic/tclEncoding.c: Added FreeEncoding(systemEncoding) in + TclFinalizeEncodingSubsystem because its ref count was incremented + in TclInitEncodingSubsystem. + + * win/tclWin32Dll.c: Structured Exception Handling added around + Tcl_Finalize called from DllMain's DLL_PROCESS_DETACH. We can't + be 100% assured that Tcl is being unloaded by the OS in a stable + condition and we need to protect the exit handlers should the + stack be in a hosed state. AT&T style assembly for SEH under + MinGW included, too. [Patch 858493] + + Also added DisableThreadLibraryCalls() for the DLL_PROCESS_ATTACH + case. We're not interested in knowing about DLL_THREAD_ATTACH, so + disable the notices. + + * generic/tclInt.h: + * generic/tclThread.c: + * generic/tclEvent.c: + * unix/tclUnixThrd.c: + * win/tclWinThrd.c: Provisions made so masterLock, initLock, + allocLock and joinLock mutexes can be recovered during + Tcl_Finalize. + + * win/tclWinSock.c: + (SocketThreadExitHandler): Don't call TerminateThread when + WaitForSingleObject returns a timeout. Tcl_Finalize called from + DllMain will pause all threads. Trust that the thread will get + the close notice at a later time if it does ever wake up before + being cleaned up by the system anyway. + (SocketEventProc) : connect errors should fire both the readable + and writable handlers because this is how it works on UNIX + [Bug 794839] + + * win/coffbase.txt: Added the tls extension to the list of + preferred load addresses. + 2004-05-05 Don Porter * tests/unixInit.test (unixInit-2.10): Test correction for Mac OSX. -- cgit v0.12 From 34e09fc657aec886bd9de4a6ae9716faca4d7212 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Thu, 6 May 2004 01:17:41 +0000 Subject: (TclSetLibraryPath): Suppress a warning [from DKF] --- generic/tclEvent.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index fb40447..eacf41b 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.2 2004/05/06 01:02:18 davygrvy Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.3 2004/05/06 01:17:41 davygrvy Exp $ */ #include "tclInt.h" @@ -613,8 +613,8 @@ TclSetLibraryPath(pathPtr) ckfree(tclLibraryPathStr); } toDupe = Tcl_GetStringFromObj(pathPtr, &size); - tclLibraryPathStr = ckalloc(size+1); - strcpy(tclLibraryPathStr, toDupe); + tclLibraryPathStr = ckalloc((unsigned)size+1); + memcpy(tclLibraryPathStr, toDupe, (unsigned)size+1); } /* -- cgit v0.12 From 1df96a777425a0e36efe2b1ec343e467aca12c7b Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Fri, 7 May 2004 22:29:03 +0000 Subject: * doc/unset.n: added upvar.n to the "see also" list --- ChangeLog | 4 ++++ doc/unset.n | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e970fc6..20aab4e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-05-07 Miguel Sofer + + * doc/unset.n: added upvar.n to the "see also" list + 2004-05-05 David Gravereaux * generic/tclEvent.c: TclSetLibraryPath's use of caching the diff --git a/doc/unset.n b/doc/unset.n index ed73434..e68c3f2 100644 --- a/doc/unset.n +++ b/doc/unset.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: unset.n,v 1.5 2001/03/06 14:45:03 dkf Exp $ +'\" RCS: @(#) $Id: unset.n,v 1.5.18.1 2004/05/07 22:29:05 msofer Exp $ '\" .so man.macros .TH unset n 8.4 Tcl "Tcl Built-In Commands" @@ -41,7 +41,7 @@ name refers to an array element but the variable is a scalar, or the name refers to a variable in a non-existent namespace. .SH "SEE ALSO" -set(n), trace(n) +set(n), trace(n), unset(n) .SH KEYWORDS remove, variable -- cgit v0.12 From b7e7d09b15ebb73969021b844119ca076f674483 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Mon, 10 May 2004 19:10:49 +0000 Subject: (BuildCommandLine): Append a space when the path got primed. --- win/tclWinPipe.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index ffc6429..9e08780 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.6 2004/02/25 07:56:21 davygrvy Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.7 2004/05/10 19:10:49 davygrvy Exp $ */ #include "tclWinInt.h" @@ -1567,11 +1567,13 @@ BuildCommandLine( Tcl_DStringInit(&ds); /* - * Prime the path. + * Prime the path. Add a space separator if we were primed with + * something. */ - + Tcl_DStringAppend(&ds, Tcl_DStringValue(linePtr), -1); - + if (Tcl_DStringLength(&ds) > 0) Tcl_DStringAppend(&ds, " ", 1); + for (i = 0; i < argc; i++) { if (i == 0) { arg = executable; -- cgit v0.12 From 110fac29dc3761c798b87ec58c3242a1a2c1047e Mon Sep 17 00:00:00 2001 From: davygrvy Date: Mon, 10 May 2004 19:11:28 +0000 Subject: no message --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 20aab4e..b51be1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-05-10 David Gravereaux + + * win/tclWinPipe.c (BuildCommandLine): Append a space when the + path got primed. + 2004-05-07 Miguel Sofer * doc/unset.n: added upvar.n to the "see also" list -- cgit v0.12 From d3b1b056f69d57af2f8f45d100162c7f9e54ffee Mon Sep 17 00:00:00 2001 From: davygrvy Date: Mon, 10 May 2004 20:55:44 +0000 Subject: (TclpCreateProcess): When under NT, with no console, and executing a DOS application, the path priming does not need an ending space as BuildCommandLine() will do this for us. --- win/tclWinPipe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 9e08780..aa54a29 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.7 2004/05/10 19:10:49 davygrvy Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.8 2004/05/10 20:55:44 davygrvy Exp $ */ #include "tclWinInt.h" @@ -1156,7 +1156,7 @@ TclpCreateProcess( startInfo.wShowWindow = SW_HIDE; startInfo.dwFlags |= STARTF_USESHOWWINDOW; createFlags = CREATE_NEW_CONSOLE; - Tcl_DStringAppend(&cmdLine, "cmd.exe /c ", -1); + Tcl_DStringAppend(&cmdLine, "cmd.exe /c", -1); } else { createFlags = DETACHED_PROCESS; } -- cgit v0.12 From b8fec065a49ccae81c772930a794083e9fb8fc10 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Mon, 10 May 2004 20:57:51 +0000 Subject: no message --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index b51be1d..d5b7a57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ * win/tclWinPipe.c (BuildCommandLine): Append a space when the path got primed. + (TclpCreateProcess): When under NT, with no console, and executing a + DOS application, the path priming does not need an ending space as + BuildCommandLine() will append one for us. 2004-05-07 Miguel Sofer -- cgit v0.12 From 1f09368b39073bc30f3957f2f70911a722f5c781 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 14 May 2004 21:41:04 +0000 Subject: 2004-05-14 Kevin B. Kenny * generic/tclInt.decls: Promoted TclpLocaltime and TclpGmtime * generic/tclIntDecls.h: from Unix-specific stubs to the generic * generic/tclIntPlatDecls.h: internal Stubs table. Reran 'genstubs' * generic/tclStubInit.c: * unix/tclUnixPort.h: * generic/tclClock.c: Changed a buggy 'GMT' timezone specification to the correct 'GMT0'. [Bug #922848] * unix/tclUnixThrd.c: Moved TclpGmtime and TclpLocaltime to unix/tclUnixTime.c where they belong. * unix/tclUnixTime.c (TclpGmtime, TclpLocaltime, TclpGetTimeZone, ThreadSafeGMTime [removed], ThreadSafeLocalTime [removed], SetTZIfNecessary, CleanupMemory): Restructured to make sure that the same mutex protects all calls to localtime, gmtime, and tzset. Added a check in front of those calls to make sure that the TZ env var hasn't changed since the last call to tzset, and repeat tzset if necessary. [Bug #942078] Removed a buggy test of the Daylight Saving Time information in 'gettimeofday' in favor of applying 'localtime' to a known value. [Bug #922848] * tests/clock.test (clock-3.14): Added test to make sure that changes to $env(TZ) take effect immediately. * win/tclWinTime.c (TclpLocaltime, TclpGmtime): Added porting layer for 'localtime' and 'gmtime' calls. --- ChangeLog | 33 +++++++ generic/tclClock.c | 4 +- generic/tclInt.decls | 18 +++- generic/tclIntDecls.h | 40 +++++++- generic/tclIntPlatDecls.h | 22 ++--- generic/tclStubInit.c | 16 ++- tests/clock.test | 24 ++++- unix/tclUnixPort.h | 12 ++- unix/tclUnixThrd.c | 47 --------- unix/tclUnixTime.c | 247 ++++++++++++++++++++++++++++++---------------- win/tclWinTime.c | 64 +++++++++++- 11 files changed, 366 insertions(+), 161 deletions(-) diff --git a/ChangeLog b/ChangeLog index d5b7a57..1529f9c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,36 @@ +2004-05-14 Kevin B. Kenny + + * generic/tclInt.decls: Promoted TclpLocaltime and TclpGmtime + * generic/tclIntDecls.h: from Unix-specific stubs to the generic + * generic/tclIntPlatDecls.h: internal Stubs table. Reran 'genstubs' + * generic/tclStubInit.c: + * unix/tclUnixPort.h: + + * generic/tclClock.c: Changed a buggy 'GMT' timezone specification + to the correct 'GMT0'. [Bug #922848] + + * unix/tclUnixThrd.c: Moved TclpGmtime and TclpLocaltime to + unix/tclUnixTime.c where they belong. + + * unix/tclUnixTime.c (TclpGmtime, TclpLocaltime, TclpGetTimeZone, + ThreadSafeGMTime [removed], + ThreadSafeLocalTime [removed], + SetTZIfNecessary, CleanupMemory): + Restructured to make sure that the same mutex protects + all calls to localtime, gmtime, and tzset. Added a check + in front of those calls to make sure that the TZ env var + hasn't changed since the last call to tzset, and repeat + tzset if necessary. [Bug #942078] Removed a buggy test + of the Daylight Saving Time information in 'gettimeofday' + in favor of applying 'localtime' to a known value. + [Bug #922848] + + * tests/clock.test (clock-3.14): Added test to make sure that + changes to $env(TZ) take effect immediately. + + * win/tclWinTime.c (TclpLocaltime, TclpGmtime): + Added porting layer for 'localtime' and 'gmtime' calls. + 2004-05-10 David Gravereaux * win/tclWinPipe.c (BuildCommandLine): Append a space when the diff --git a/generic/tclClock.c b/generic/tclClock.c index 55c3bab..9683abb 100644 --- a/generic/tclClock.c +++ b/generic/tclClock.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclClock.c,v 1.20 2003/02/01 21:27:55 kennykb Exp $ + * RCS: @(#) $Id: tclClock.c,v 1.20.2.1 2004/05/14 21:41:11 kennykb Exp $ */ #include "tcl.h" @@ -310,7 +310,7 @@ FormatClock(interp, clockVal, useGMT, format) } else { savedTZEnv = NULL; } - Tcl_SetVar2(interp, "env", "TZ", "GMT", TCL_GLOBAL_ONLY); + Tcl_SetVar2(interp, "env", "TZ", "GMT0", TCL_GLOBAL_ONLY); savedTimeZone = timezone; timezone = 0; tzset(); diff --git a/generic/tclInt.decls b/generic/tclInt.decls index 8a68f70..927e65c 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.59 2003/02/18 02:25:45 hobbs Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.59.2.1 2004/05/14 21:41:11 kennykb Exp $ library tcl @@ -697,6 +697,15 @@ declare 173 generic { CONST Tcl_UniChar *pattern, int ptnLen, int nocase) } +# TclpGmtime and TclpLocaltime promoted to the generic interface from unix + +declare 182 generic { + struct tm *TclpLocaltime(CONST time_t *clock) +} +declare 183 generic { + struct tm *TclpGmtime(CONST time_t *clock) +} + ############################################################################## # Define the platform specific internal Tcl interface. These functions are @@ -977,12 +986,15 @@ declare 10 unix { Tcl_DirEntry * TclpReaddir(DIR * dir) } +# Slots 11 and 12 are forwarders for functions that were promoted to +# generic Stubs + declare 11 unix { - struct tm * TclpLocaltime(time_t * clock) + struct tm * TclpLocaltime_unix(CONST time_t * clock) } declare 12 unix { - struct tm * TclpGmtime(time_t * clock) + struct tm * TclpGmtime_unix(CONST time_t * clock) } declare 13 unix { diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index e41dca6..d706a37 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIntDecls.h,v 1.49 2003/02/18 02:25:45 hobbs Exp $ + * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.1 2004/05/14 21:41:11 kennykb Exp $ */ #ifndef _TCLINTDECLS @@ -503,6 +503,18 @@ EXTERN int TclUniCharMatch _ANSI_ARGS_(( CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +/* 182 */ +EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((CONST time_t * clock)); +/* 183 */ +EXTERN struct tm * TclpGmtime _ANSI_ARGS_((CONST time_t * clock)); typedef struct TclIntStubs { int magic; @@ -706,6 +718,16 @@ typedef struct TclIntStubs { int (*tclCheckExecutionTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 171 */ int (*tclInThreadExit) _ANSI_ARGS_((void)); /* 172 */ int (*tclUniCharMatch) _ANSI_ARGS_((CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); /* 173 */ + void *reserved174; + void *reserved175; + void *reserved176; + void *reserved177; + void *reserved178; + void *reserved179; + void *reserved180; + void *reserved181; + struct tm * (*tclpLocaltime) _ANSI_ARGS_((CONST time_t * clock)); /* 182 */ + struct tm * (*tclpGmtime) _ANSI_ARGS_((CONST time_t * clock)); /* 183 */ } TclIntStubs; #ifdef __cplusplus @@ -1316,6 +1338,22 @@ extern TclIntStubs *tclIntStubsPtr; #define TclUniCharMatch \ (tclIntStubsPtr->tclUniCharMatch) /* 173 */ #endif +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +#ifndef TclpLocaltime +#define TclpLocaltime \ + (tclIntStubsPtr->tclpLocaltime) /* 182 */ +#endif +#ifndef TclpGmtime +#define TclpGmtime \ + (tclIntStubsPtr->tclpGmtime) /* 183 */ +#endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclIntPlatDecls.h b/generic/tclIntPlatDecls.h index 09c1226..c349486 100644 --- a/generic/tclIntPlatDecls.h +++ b/generic/tclIntPlatDecls.h @@ -9,7 +9,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19 2002/12/06 23:22:59 hobbs Exp $ + * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.1 2004/05/14 21:41:11 kennykb Exp $ */ #ifndef _TCLINTPLATDECLS @@ -62,9 +62,9 @@ EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( /* 10 */ EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); /* 11 */ -EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((time_t * clock)); +EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((CONST time_t * clock)); /* 12 */ -EXTERN struct tm * TclpGmtime _ANSI_ARGS_((time_t * clock)); +EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((CONST time_t * clock)); /* 13 */ EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); #endif /* UNIX */ @@ -229,8 +229,8 @@ typedef struct TclIntPlatStubs { int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ - struct tm * (*tclpLocaltime) _ANSI_ARGS_((time_t * clock)); /* 11 */ - struct tm * (*tclpGmtime) _ANSI_ARGS_((time_t * clock)); /* 12 */ + struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((CONST time_t * clock)); /* 11 */ + struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((CONST time_t * clock)); /* 12 */ char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ #endif /* UNIX */ #ifdef __WIN32__ @@ -351,13 +351,13 @@ extern TclIntPlatStubs *tclIntPlatStubsPtr; #define TclpReaddir \ (tclIntPlatStubsPtr->tclpReaddir) /* 10 */ #endif -#ifndef TclpLocaltime -#define TclpLocaltime \ - (tclIntPlatStubsPtr->tclpLocaltime) /* 11 */ +#ifndef TclpLocaltime_unix +#define TclpLocaltime_unix \ + (tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */ #endif -#ifndef TclpGmtime -#define TclpGmtime \ - (tclIntPlatStubsPtr->tclpGmtime) /* 12 */ +#ifndef TclpGmtime_unix +#define TclpGmtime_unix \ + (tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */ #endif #ifndef TclpInetNtoa #define TclpInetNtoa \ diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index c1ed1df..238a559 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.2 2003/05/13 08:41:26 das Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.3 2004/05/14 21:41:11 kennykb Exp $ */ #include "tclInt.h" @@ -268,6 +268,16 @@ TclIntStubs tclIntStubs = { TclCheckExecutionTraces, /* 171 */ TclInThreadExit, /* 172 */ TclUniCharMatch, /* 173 */ + NULL, /* 174 */ + NULL, /* 175 */ + NULL, /* 176 */ + NULL, /* 177 */ + NULL, /* 178 */ + NULL, /* 179 */ + NULL, /* 180 */ + NULL, /* 181 */ + TclpLocaltime, /* 182 */ + TclpGmtime, /* 183 */ }; TclIntPlatStubs tclIntPlatStubs = { @@ -285,8 +295,8 @@ TclIntPlatStubs tclIntPlatStubs = { TclUnixWaitForFile, /* 8 */ TclpCreateTempFile, /* 9 */ TclpReaddir, /* 10 */ - TclpLocaltime, /* 11 */ - TclpGmtime, /* 12 */ + TclpLocaltime_unix, /* 11 */ + TclpGmtime_unix, /* 12 */ TclpInetNtoa, /* 13 */ #endif /* UNIX */ #ifdef __WIN32__ diff --git a/tests/clock.test b/tests/clock.test index 3b2ad27..72c254e 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.22.2.1 2003/04/12 20:11:34 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.22.2.2 2004/05/14 21:41:11 kennykb Exp $ set env(LC_TIME) POSIX @@ -129,6 +129,28 @@ test clock-3.13 {clock format with non-ASCII character in the format string} { set res } "\u00c4" +# Bug 942078 + +test clock-3.14 {change of time zone} -setup { + catch { unset oldTZ } + if { [info exists env(TZ)] } { + set oldTZ $env(TZ) + } +} -body { + set env(TZ) PST8PDT + set s [clock format 0 -format %H%M] + set env(TZ) GMT0 + append s -[clock format 0 -format %H%M] +} -cleanup { + if { [info exists oldTZ] } { + set env(TZ) $oldTZ + unset oldTZ + } else { + unset env(TZ) + } +} -result {1600-0000} + + # clock scan test clock-4.1 {clock scan tests} { list [catch {clock scan} msg] $msg diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index d694488..c183985 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.2 2003/12/09 15:32:21 dkf Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.3 2004/05/14 21:41:12 kennykb Exp $ */ #ifndef _TCLUNIXPORT @@ -564,12 +564,14 @@ EXTERN void TclpMutexInit _ANSI_ARGS_((TclpMutex *mPtr)); EXTERN void TclpMutexLock _ANSI_ARGS_((TclpMutex *mPtr)); EXTERN void TclpMutexUnlock _ANSI_ARGS_((TclpMutex *mPtr)); EXTERN Tcl_DirEntry * TclpReaddir(DIR *); -EXTERN struct tm * TclpLocaltime(time_t *); -EXTERN struct tm * TclpGmtime(time_t *); +#ifndef TclpLocaltime +EXTERN struct tm * TclpLocaltime(CONST time_t *); +#endif +#ifndef TclpGmtime +EXTERN struct tm * TclpGmtime(CONST time_t *); +#endif EXTERN char * TclpInetNtoa(struct in_addr); #define readdir(x) TclpReaddir(x) -#define localtime(x) TclpLocaltime(x) -#define gmtime(x) TclpGmtime(x) #define inet_ntoa(x) TclpInetNtoa(x) #undef TclOSreaddir #define TclOSreaddir(x) TclpReaddir(x) diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index aa26c51..04eacf4 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -21,8 +21,6 @@ typedef struct ThreadSpecificData { char nabuf[16]; - struct tm gtbuf; - struct tm ltbuf; struct { Tcl_DirEntry ent; char name[MAXNAMLEN+1]; @@ -864,51 +862,6 @@ TclpReaddir(DIR * dir) #endif return ent; } - -#if defined(TCL_THREADS) && (!defined(HAVE_GMTIME_R) || !defined(HAVE_LOCALTIME_R)) -TCL_DECLARE_MUTEX( tmMutex ) -#undef localtime -#undef gmtime -#endif - -struct tm * -TclpLocaltime(time_t * clock) -{ -#ifdef TCL_THREADS - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - -#ifdef HAVE_LOCALTIME_R - return localtime_r(clock, &tsdPtr->ltbuf); -#else - Tcl_MutexLock( &tmMutex ); - memcpy( (VOID *) &tsdPtr->ltbuf, (VOID *) localtime( clock ), sizeof (struct tm) ); - Tcl_MutexUnlock( &tmMutex ); - return &tsdPtr->ltbuf; -#endif -#else - return localtime(clock); -#endif -} - -struct tm * -TclpGmtime(time_t * clock) -{ -#ifdef TCL_THREADS - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - -#ifdef HAVE_GMTIME_R - return gmtime_r(clock, &tsdPtr->gtbuf); -#else - Tcl_MutexLock( &tmMutex ); - memcpy( (VOID *) &tsdPtr->gtbuf, (VOID *) gmtime( clock ), sizeof (struct tm) ); - Tcl_MutexUnlock( &tmMutex ); - return &tsdPtr->gtbuf; -#endif -#else - return gmtime(clock); -#endif -} - char * TclpInetNtoa(struct in_addr addr) { diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c index fc72f35..4f99801 100644 --- a/unix/tclUnixTime.c +++ b/unix/tclUnixTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTime.c,v 1.15 2002/07/19 12:31:10 dkf Exp $ + * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.1 2004/05/14 21:41:12 kennykb Exp $ */ #include "tclInt.h" @@ -25,22 +25,27 @@ */ static Tcl_ThreadDataKey tmKey; +typedef struct ThreadSpecificData { + struct tm gmtime_buf; + struct tm localtime_buf; +} ThreadSpecificData; /* * If we fall back on the thread-unsafe versions of gmtime and localtime, * use this mutex to try to protect them. */ -#if !defined(HAVE_GMTIME_R) || !defined(HAVE_LOCALTIME_R) TCL_DECLARE_MUTEX(tmMutex) -#endif -/* - * Forward declarations for procedures defined later in this file. - */ +static char* lastTZ = NULL; /* Holds the last setting of the + * TZ environment variable, or an + * empty string if the variable was + * not set. */ + +/* Static functions declared in this file */ -static struct tm *ThreadSafeGMTime _ANSI_ARGS_(( CONST time_t* )); -static struct tm *ThreadSafeLocalTime _ANSI_ARGS_(( CONST time_t* )); +static void SetTZIfNecessary _ANSI_ARGS_((void)); +static void CleanupMemory _ANSI_ARGS_((ClientData)); /* *----------------------------------------------------------------------------- @@ -129,18 +134,22 @@ TclpGetTimeZone (currentTime) unsigned long currentTime; { /* - * Determine how a timezone is obtained from "struct tm". If there is no - * time zone in this struct (very lame) then use the timezone variable. - * This is done in a way to make the timezone variable the method of last - * resort, as some systems have it in addition to a field in "struct tm". - * The gettimeofday system call can also be used to determine the time - * zone. + * We prefer first to use the time zone in "struct tm" if the + * structure contains such a member. Following that, we try + * to locate the external 'timezone' variable and use its value. + * If both of those methods fail, we attempt to convert a known + * time to local time and use the difference from UTC as the local + * time zone. In all cases, we need to undo any Daylight Saving Time + * adjustment. */ #if defined(HAVE_TM_TZADJ) # define TCL_GOT_TIMEZONE + + /* Struct tm contains tm_tzadj - that value may be used. */ + time_t curTime = (time_t) currentTime; - struct tm *timeDataPtr = ThreadSafeLocalTime(&curTime); + struct tm *timeDataPtr = TclpLocaltime(&curTime); int timeZone; timeZone = timeDataPtr->tm_tzadj / 60; @@ -149,12 +158,16 @@ TclpGetTimeZone (currentTime) } return timeZone; + #endif #if defined(HAVE_TM_GMTOFF) && !defined (TCL_GOT_TIMEZONE) # define TCL_GOT_TIMEZONE + + /* Struct tm contains tm_gmtoff - that value may be used. */ + time_t curTime = (time_t) currentTime; - struct tm *timeDataPtr = ThreadSafeLocalTime(&curTime); + struct tm *timeDataPtr = TclpLocaltime(&curTime); int timeZone; timeZone = -(timeDataPtr->tm_gmtoff / 60); @@ -163,46 +176,17 @@ TclpGetTimeZone (currentTime) } return timeZone; -#endif -#if defined(USE_DELTA_FOR_TZ) -#define TCL_GOT_TIMEZONE 1 - /* - * This hack replaces using global var timezone or gettimeofday - * in situations where they are buggy such as on AIX when libbsd.a - * is linked in. - */ - - int timeZone; - time_t tt; - struct tm *stm; - tt = 849268800L; /* 1996-11-29 12:00:00 GMT */ - stm = ThreadSafeLocalTime(&tt); /* eg 1996-11-29 6:00:00 CST6CDT */ - /* The calculation below assumes a max of +12 or -12 hours from GMT */ - timeZone = (12 - stm->tm_hour)*60 + (0 - stm->tm_min); - return timeZone; /* eg +360 for CST6CDT */ #endif - /* - * Must prefer timezone variable over gettimeofday, as gettimeofday does - * not return timezone information on many systems that have moved this - * information outside of the kernel. - */ - -#if defined(HAVE_TIMEZONE_VAR) && !defined (TCL_GOT_TIMEZONE) +#if defined(HAVE_TIMEZONE_VAR) && !defined(TCL_GOT_TIMEZONE) && !defined(USE_DELTA_FOR_TZ) # define TCL_GOT_TIMEZONE - static int setTZ = 0; -#ifdef TCL_THREADS - static Tcl_Mutex tzMutex; -#endif + int timeZone; - Tcl_MutexLock(&tzMutex); - if (!setTZ) { - tzset(); - setTZ = 1; - } - Tcl_MutexUnlock(&tzMutex); + /* The 'timezone' external var is present and may be used. */ + + SetTZIfNecessary(); /* * Note: this is not a typo in "timezone" below! See tzset @@ -210,30 +194,36 @@ TclpGetTimeZone (currentTime) */ timeZone = timezone / 60; - return timeZone; + #endif -#if !defined(NO_GETTOD) && !defined (TCL_GOT_TIMEZONE) -# define TCL_GOT_TIMEZONE - struct timeval tv; - struct timezone tz; - int timeZone; +#if !defined(TCL_GOT_TIMEZONE) +#define TCL_GOT_TIMEZONE 1 + /* + * Fallback - determine time zone with a known reference time. + */ - gettimeofday(&tv, &tz); - timeZone = tz.tz_minuteswest; - if (tz.tz_dsttime) { + int timeZone; + time_t tt; + struct tm *stm; + tt = 849268800L; /* 1996-11-29 12:00:00 GMT */ + stm = TclpLocaltime(&tt); /* eg 1996-11-29 6:00:00 CST6CDT */ + /* The calculation below assumes a max of +12 or -12 hours from GMT */ + timeZone = (12 - stm->tm_hour)*60 + (0 - stm->tm_min); + if ( stm -> tm_isdst ) { timeZone += 60; } - - return timeZone; + return timeZone; /* eg +360 for CST6CDT */ #endif #ifndef TCL_GOT_TIMEZONE /* * Cause compile error, we don't know how to get timezone. */ - error: autoconf did not figure out how to determine the timezone. + +#error autoconf did not figure out how to determine the timezone. + #endif } @@ -293,9 +283,9 @@ TclpGetDate(time, useGMT) CONST time_t *tp = (CONST time_t *)time; if (useGMT) { - return ThreadSafeGMTime(tp); + return TclpGmtime(tp); } else { - return ThreadSafeLocalTime(tp); + return TclpLocaltime(tp); } } @@ -340,7 +330,7 @@ TclpStrftime(s, maxsize, format, t, useGMT) /* *---------------------------------------------------------------------- * - * ThreadSafeGMTime -- + * TclpGmtime -- * * Wrapper around the 'gmtime' library function to make it thread * safe. @@ -354,33 +344,42 @@ TclpStrftime(s, maxsize, format, t, useGMT) *---------------------------------------------------------------------- */ -static struct tm * -ThreadSafeGMTime(timePtr) +struct tm * +TclpGmtime( timePtr ) CONST time_t *timePtr; /* Pointer to the number of seconds - * since the local system's epoch - */ + * since the local system's epoch */ { /* * Get a thread-local buffer to hold the returned time. */ - struct tm *tmPtr = (struct tm *) - Tcl_GetThreadData(&tmKey, sizeof(struct tm)); + ThreadSpecificData *tsdPtr = TCL_TSD_INIT( &tmKey ); #ifdef HAVE_GMTIME_R - gmtime_r(timePtr, tmPtr); + gmtime_r(timePtr, &( tsdPtr->gmtime_buf )); #else - Tcl_MutexLock(&tmMutex); - memcpy((VOID *) tmPtr, (VOID *) gmtime(timePtr), sizeof(struct tm)); - Tcl_MutexUnlock(&tmMutex); + Tcl_MutexLock( &tmMutex ); + memcpy( (VOID *) &( tsdPtr->gmtime_buf ), + (VOID *) gmtime( timePtr ), + sizeof( struct tm ) ); + Tcl_MutexUnlock( &tmMutex ); #endif - return tmPtr; + return &( tsdPtr->gmtime_buf ); +} +/* + * Forwarder for obsolete item in Stubs + */ +struct tm* +TclpGmtime_unix( timePtr ) + CONST time_t* timePtr; +{ + return TclpGmtime( timePtr ); } /* *---------------------------------------------------------------------- * - * ThreadSafeLocalTime -- + * TclpLocaltime -- * * Wrapper around the 'localtime' library function to make it thread * safe. @@ -394,25 +393,99 @@ ThreadSafeGMTime(timePtr) *---------------------------------------------------------------------- */ -static struct tm * -ThreadSafeLocalTime(timePtr) +struct tm * +TclpLocaltime(timePtr) CONST time_t *timePtr; /* Pointer to the number of seconds - * since the local system's epoch - */ + * since the local system's epoch */ { /* * Get a thread-local buffer to hold the returned time. */ - struct tm *tmPtr = (struct tm *) - Tcl_GetThreadData(&tmKey, sizeof(struct tm)); + ThreadSpecificData *tsdPtr = TCL_TSD_INIT( &tmKey ); + SetTZIfNecessary(); #ifdef HAVE_LOCALTIME_R - localtime_r(timePtr, tmPtr); + localtime_r( timePtr, &( tsdPtr->localtime_buf ) ); #else + Tcl_MutexLock( &tmMutex ); + memcpy( (VOID *) &( tsdPtr -> localtime_buf ), + (VOID *) localtime( timePtr ), + sizeof( struct tm ) ); + Tcl_MutexUnlock( &tmMutex ); +#endif + return &( tsdPtr->localtime_buf ); +} +/* + * Forwarder for obsolete item in Stubs + */ +struct tm* +TclpLocaltime_unix( timePtr ) + CONST time_t* timePtr; +{ + return TclpLocaltime( timePtr ); +} + +/* + *---------------------------------------------------------------------- + * + * SetTZIfNecessary -- + * + * Determines whether a call to 'tzset' is needed prior to the + * next call to 'localtime' or examination of the 'timezone' variable. + * + * Results: + * None. + * + * Side effects: + * If 'tzset' has never been called in the current process, or if + * the value of the environment variable TZ has changed since the + * last call to 'tzset', then 'tzset' is called again. + * + *---------------------------------------------------------------------- + */ + +static void +SetTZIfNecessary() { + + CONST char* newTZ = getenv( "TZ" ); Tcl_MutexLock(&tmMutex); - memcpy((VOID *) tmPtr, (VOID *) localtime(timePtr), sizeof(struct tm)); + if ( newTZ == NULL ) { + newTZ = ""; + } + if ( lastTZ == NULL || strcmp( lastTZ, newTZ ) ) { + tzset(); + if ( lastTZ == NULL ) { + Tcl_CreateExitHandler( CleanupMemory, (ClientData) NULL ); + } else { + Tcl_Free( lastTZ ); + } + lastTZ = Tcl_Alloc( strlen( newTZ ) + 1 ); + strcpy( lastTZ, newTZ ); + } Tcl_MutexUnlock(&tmMutex); -#endif - return tmPtr; + +} + +/* + *---------------------------------------------------------------------- + * + * CleanupMemory -- + * + * Releases the private copy of the TZ environment variable + * upon exit from Tcl. + * + * Results: + * None. + * + * Side effects: + * Frees allocated memory. + * + *---------------------------------------------------------------------- + */ + +static void +CleanupMemory( ClientData ignored ) +{ + Tcl_Free( lastTZ ); } diff --git a/win/tclWinTime.c b/win/tclWinTime.c index 6bc7b10..539dd6c 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.2 2003/04/15 21:06:36 kennykb Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.3 2004/05/14 21:41:12 kennykb Exp $ */ #include "tclWinInt.h" @@ -1053,3 +1053,65 @@ AccumulateSample( Tcl_WideInt perfCounter, return estFreq; } } + +/* + *---------------------------------------------------------------------- + * + * TclpGmtime -- + * + * Wrapper around the 'gmtime' library function to make it thread + * safe. + * + * Results: + * Returns a pointer to a 'struct tm' in thread-specific data. + * + * Side effects: + * Invokes gmtime or gmtime_r as appropriate. + * + *---------------------------------------------------------------------- + */ + +struct tm * +TclpGmtime( timePtr ) + CONST time_t *timePtr; /* Pointer to the number of seconds + * since the local system's epoch */ + +{ + /* + * The MS implementation of gmtime is thread safe because + * it returns the time in a block of thread-local storage, + * and Windows does not provide a Posix gmtime_r function. + */ + return gmtime( timePtr ); +} + +/* + *---------------------------------------------------------------------- + * + * TclpLocaltime -- + * + * Wrapper around the 'localtime' library function to make it thread + * safe. + * + * Results: + * Returns a pointer to a 'struct tm' in thread-specific data. + * + * Side effects: + * Invokes localtime or localtime_r as appropriate. + * + *---------------------------------------------------------------------- + */ + +struct tm * +TclpLocaltime( timePtr ) + CONST time_t *timePtr; /* Pointer to the number of seconds + * since the local system's epoch */ + +{ + /* + * The MS implementation of localtime is thread safe because + * it returns the time in a block of thread-local storage, + * and Windows does not provide a Posix localtime_r function. + */ + return localtime( timePtr ); +} -- cgit v0.12 From aeeb2dda569d75a5f5162a97de263878e7136478 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 17 May 2004 09:22:10 +0000 Subject: Docbug. [Bug 953374] --- ChangeLog | 5 +++++ doc/OpenFileChnl.3 | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1529f9c..b26e33d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-05-17 Donal K. Fellows + + * doc/OpenFileChnl.3: Documented type of 'offset' argument to + Tcl_Seek was wrong. [Bug 953374] + 2004-05-14 Kevin B. Kenny * generic/tclInt.decls: Promoted TclpLocaltime and TclpGmtime diff --git a/doc/OpenFileChnl.3 b/doc/OpenFileChnl.3 index 4eaf0a6..e54972f 100644 --- a/doc/OpenFileChnl.3 +++ b/doc/OpenFileChnl.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: OpenFileChnl.3,v 1.20.2.2 2003/10/07 15:25:46 dgp Exp $ +'\" RCS: @(#) $Id: OpenFileChnl.3,v 1.20.2.3 2004/05/17 09:22:11 dkf Exp $ .so man.macros .TH Tcl_OpenFileChannel 3 8.3 Tcl "Tcl Library Procedures" .BS @@ -204,7 +204,7 @@ A buffer containing the bytes to output to the channel. The number of bytes to consume from \fIcharBuf\fR or \fIbyteBuf\fR and output to the channel. .VE -.AP int offset in +.AP Tcl_WideInt offset in How far to move the access point in the channel at which the next input or output operation will be applied, measured in bytes from the position given by \fIseekMode\fR. May be either positive or negative. -- cgit v0.12 From 02328b407284a12dc2109146c3f29cae15d45a28 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 17 May 2004 14:26:31 +0000 Subject: * generic/tclInt.decls: Restored TclpTime_t kludge to all * generic/tclIntPlatDecls.h: places where it appeared before the * unix/tclUnixPort.h changes of 14 May, because use of * unix/tclUnixTime.h native time_t in its place requires * win/tclWinTime.h: the 8.5 header reforms. [Bug #955146] --- ChangeLog | 8 + generic/tclDecls.h | 8284 ++++++++++++++++++++++----------------------- generic/tclInt.decls | 10 +- generic/tclIntDecls.h | 2724 +++++++-------- generic/tclIntPlatDecls.h | 1170 +++---- generic/tclPlatDecls.h | 394 +-- generic/tclStubInit.c | 1882 +++++----- unix/tclUnixPort.h | 6 +- unix/tclUnixTime.c | 35 +- win/tclWinTime.c | 19 +- 10 files changed, 7272 insertions(+), 7260 deletions(-) diff --git a/ChangeLog b/ChangeLog index b26e33d..3179038 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-05-17 Kevin B. Kenny + + * generic/tclInt.decls: Restored TclpTime_t kludge to all + * generic/tclIntPlatDecls.h: places where it appeared before the + * unix/tclUnixPort.h changes of 14 May, because use of + * unix/tclUnixTime.h native time_t in its place requires + * win/tclWinTime.h: the 8.5 header reforms. [Bug #955146] + 2004-05-17 Donal K. Fellows * doc/OpenFileChnl.3: Documented type of 'offset' argument to diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 37d7a4a..f4bf977 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -1,4142 +1,4142 @@ -/* - * tclDecls.h -- - * - * Declarations of functions in the platform independent public Tcl API. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclDecls.h,v 1.93.2.1 2003/05/13 09:57:40 mistachkin Exp $ - */ - -#ifndef _TCLDECLS -#define _TCLDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tcl.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -/* 0 */ -EXTERN int Tcl_PkgProvideEx _ANSI_ARGS_((Tcl_Interp* interp, - CONST char* name, CONST char* version, - ClientData clientData)); -/* 1 */ -EXTERN CONST84_RETURN char * Tcl_PkgRequireEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - CONST char * version, int exact, - ClientData * clientDataPtr)); -/* 2 */ -EXTERN void Tcl_Panic _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); -/* 3 */ -EXTERN char * Tcl_Alloc _ANSI_ARGS_((unsigned int size)); -/* 4 */ -EXTERN void Tcl_Free _ANSI_ARGS_((char * ptr)); -/* 5 */ -EXTERN char * Tcl_Realloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* 6 */ -EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, - CONST char * file, int line)); -/* 7 */ -EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char * ptr, - CONST char * file, int line)); -/* 8 */ -EXTERN char * Tcl_DbCkrealloc _ANSI_ARGS_((char * ptr, - unsigned int size, CONST char * file, - int line)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 9 */ -EXTERN void Tcl_CreateFileHandler _ANSI_ARGS_((int fd, int mask, - Tcl_FileProc * proc, ClientData clientData)); -#endif /* UNIX */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 10 */ -EXTERN void Tcl_DeleteFileHandler _ANSI_ARGS_((int fd)); -#endif /* UNIX */ -/* 11 */ -EXTERN void Tcl_SetTimer _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 12 */ -EXTERN void Tcl_Sleep _ANSI_ARGS_((int ms)); -/* 13 */ -EXTERN int Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 14 */ -EXTERN int Tcl_AppendAllObjTypes _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr)); -/* 15 */ -EXTERN void Tcl_AppendStringsToObj _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); -/* 16 */ -EXTERN void Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj* objPtr, - CONST char* bytes, int length)); -/* 17 */ -EXTERN Tcl_Obj * Tcl_ConcatObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST objv[])); -/* 18 */ -EXTERN int Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); -/* 19 */ -EXTERN void Tcl_DbDecrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 20 */ -EXTERN void Tcl_DbIncrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 21 */ -EXTERN int Tcl_DbIsShared _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 22 */ -EXTERN Tcl_Obj * Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue, - CONST char * file, int line)); -/* 23 */ -EXTERN Tcl_Obj * Tcl_DbNewByteArrayObj _ANSI_ARGS_(( - CONST unsigned char * bytes, int length, - CONST char * file, int line)); -/* 24 */ -EXTERN Tcl_Obj * Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue, - CONST char * file, int line)); -/* 25 */ -EXTERN Tcl_Obj * Tcl_DbNewListObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST * objv, CONST char * file, - int line)); -/* 26 */ -EXTERN Tcl_Obj * Tcl_DbNewLongObj _ANSI_ARGS_((long longValue, - CONST char * file, int line)); -/* 27 */ -EXTERN Tcl_Obj * Tcl_DbNewObj _ANSI_ARGS_((CONST char * file, - int line)); -/* 28 */ -EXTERN Tcl_Obj * Tcl_DbNewStringObj _ANSI_ARGS_((CONST char * bytes, - int length, CONST char * file, int line)); -/* 29 */ -EXTERN Tcl_Obj * Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 30 */ -EXTERN void TclFreeObj _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 31 */ -EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * boolPtr)); -/* 32 */ -EXTERN int Tcl_GetBooleanFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - int * boolPtr)); -/* 33 */ -EXTERN unsigned char * Tcl_GetByteArrayFromObj _ANSI_ARGS_(( - Tcl_Obj * objPtr, int * lengthPtr)); -/* 34 */ -EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, double * doublePtr)); -/* 35 */ -EXTERN int Tcl_GetDoubleFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - double * doublePtr)); -/* 36 */ -EXTERN int Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, CONST84 char ** tablePtr, - CONST char * msg, int flags, int * indexPtr)); -/* 37 */ -EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * intPtr)); -/* 38 */ -EXTERN int Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int * intPtr)); -/* 39 */ -EXTERN int Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, long * longPtr)); -/* 40 */ -EXTERN Tcl_ObjType * Tcl_GetObjType _ANSI_ARGS_((CONST char * typeName)); -/* 41 */ -EXTERN char * Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int * lengthPtr)); -/* 42 */ -EXTERN void Tcl_InvalidateStringRep _ANSI_ARGS_(( - Tcl_Obj * objPtr)); -/* 43 */ -EXTERN int Tcl_ListObjAppendList _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - Tcl_Obj * elemListPtr)); -/* 44 */ -EXTERN int Tcl_ListObjAppendElement _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - Tcl_Obj * objPtr)); -/* 45 */ -EXTERN int Tcl_ListObjGetElements _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - int * objcPtr, Tcl_Obj *** objvPtr)); -/* 46 */ -EXTERN int Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int index, - Tcl_Obj ** objPtrPtr)); -/* 47 */ -EXTERN int Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int * lengthPtr)); -/* 48 */ -EXTERN int Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int first, int count, - int objc, Tcl_Obj *CONST objv[])); -/* 49 */ -EXTERN Tcl_Obj * Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue)); -/* 50 */ -EXTERN Tcl_Obj * Tcl_NewByteArrayObj _ANSI_ARGS_(( - CONST unsigned char* bytes, int length)); -/* 51 */ -EXTERN Tcl_Obj * Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue)); -/* 52 */ -EXTERN Tcl_Obj * Tcl_NewIntObj _ANSI_ARGS_((int intValue)); -/* 53 */ -EXTERN Tcl_Obj * Tcl_NewListObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST objv[])); -/* 54 */ -EXTERN Tcl_Obj * Tcl_NewLongObj _ANSI_ARGS_((long longValue)); -/* 55 */ -EXTERN Tcl_Obj * Tcl_NewObj _ANSI_ARGS_((void)); -/* 56 */ -EXTERN Tcl_Obj * Tcl_NewStringObj _ANSI_ARGS_((CONST char * bytes, - int length)); -/* 57 */ -EXTERN void Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int boolValue)); -/* 58 */ -EXTERN unsigned char * Tcl_SetByteArrayLength _ANSI_ARGS_((Tcl_Obj * objPtr, - int length)); -/* 59 */ -EXTERN void Tcl_SetByteArrayObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST unsigned char * bytes, int length)); -/* 60 */ -EXTERN void Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj * objPtr, - double doubleValue)); -/* 61 */ -EXTERN void Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int intValue)); -/* 62 */ -EXTERN void Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int objc, Tcl_Obj *CONST objv[])); -/* 63 */ -EXTERN void Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj * objPtr, - long longValue)); -/* 64 */ -EXTERN void Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj * objPtr, - int length)); -/* 65 */ -EXTERN void Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj* objPtr, - CONST char* bytes, int length)); -/* 66 */ -EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * message)); -/* 67 */ -EXTERN void Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * message, int length)); -/* 68 */ -EXTERN void Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp * interp)); -/* 69 */ -EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 70 */ -EXTERN void Tcl_AppendResult _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 71 */ -EXTERN Tcl_AsyncHandler Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc * proc, - ClientData clientData)); -/* 72 */ -EXTERN void Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async)); -/* 73 */ -EXTERN int Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int code)); -/* 74 */ -EXTERN void Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async)); -/* 75 */ -EXTERN int Tcl_AsyncReady _ANSI_ARGS_((void)); -/* 76 */ -EXTERN void Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp * interp)); -/* 77 */ -EXTERN char Tcl_Backslash _ANSI_ARGS_((CONST char * src, - int * readPtr)); -/* 78 */ -EXTERN int Tcl_BadChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * optionName, - CONST char * optionList)); -/* 79 */ -EXTERN void Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 80 */ -EXTERN void Tcl_CancelIdleCall _ANSI_ARGS_(( - Tcl_IdleProc * idleProc, - ClientData clientData)); -/* 81 */ -EXTERN int Tcl_Close _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 82 */ -EXTERN int Tcl_CommandComplete _ANSI_ARGS_((CONST char * cmd)); -/* 83 */ -EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv)); -/* 84 */ -EXTERN int Tcl_ConvertElement _ANSI_ARGS_((CONST char * src, - char * dst, int flags)); -/* 85 */ -EXTERN int Tcl_ConvertCountedElement _ANSI_ARGS_(( - CONST char * src, int length, char * dst, - int flags)); -/* 86 */ -EXTERN int Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp * slave, - CONST char * slaveCmd, Tcl_Interp * target, - CONST char * targetCmd, int argc, - CONST84 char * CONST * argv)); -/* 87 */ -EXTERN int Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp * slave, - CONST char * slaveCmd, Tcl_Interp * target, - CONST char * targetCmd, int objc, - Tcl_Obj *CONST objv[])); -/* 88 */ -EXTERN Tcl_Channel Tcl_CreateChannel _ANSI_ARGS_(( - Tcl_ChannelType * typePtr, - CONST char * chanName, - ClientData instanceData, int mask)); -/* 89 */ -EXTERN void Tcl_CreateChannelHandler _ANSI_ARGS_(( - Tcl_Channel chan, int mask, - Tcl_ChannelProc * proc, - ClientData clientData)); -/* 90 */ -EXTERN void Tcl_CreateCloseHandler _ANSI_ARGS_((Tcl_Channel chan, - Tcl_CloseProc * proc, ClientData clientData)); -/* 91 */ -EXTERN Tcl_Command Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, Tcl_CmdProc * proc, - ClientData clientData, - Tcl_CmdDeleteProc * deleteProc)); -/* 92 */ -EXTERN void Tcl_CreateEventSource _ANSI_ARGS_(( - Tcl_EventSetupProc * setupProc, - Tcl_EventCheckProc * checkProc, - ClientData clientData)); -/* 93 */ -EXTERN void Tcl_CreateExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 94 */ -EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); -/* 95 */ -EXTERN void Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, int numArgs, - Tcl_ValueType * argTypes, - Tcl_MathProc * proc, ClientData clientData)); -/* 96 */ -EXTERN Tcl_Command Tcl_CreateObjCommand _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * cmdName, - Tcl_ObjCmdProc * proc, ClientData clientData, - Tcl_CmdDeleteProc * deleteProc)); -/* 97 */ -EXTERN Tcl_Interp * Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveName, int isSafe)); -/* 98 */ -EXTERN Tcl_TimerToken Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds, - Tcl_TimerProc * proc, ClientData clientData)); -/* 99 */ -EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp * interp, - int level, Tcl_CmdTraceProc * proc, - ClientData clientData)); -/* 100 */ -EXTERN void Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name)); -/* 101 */ -EXTERN void Tcl_DeleteChannelHandler _ANSI_ARGS_(( - Tcl_Channel chan, Tcl_ChannelProc * proc, - ClientData clientData)); -/* 102 */ -EXTERN void Tcl_DeleteCloseHandler _ANSI_ARGS_((Tcl_Channel chan, - Tcl_CloseProc * proc, ClientData clientData)); -/* 103 */ -EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName)); -/* 104 */ -EXTERN int Tcl_DeleteCommandFromToken _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command)); -/* 105 */ -EXTERN void Tcl_DeleteEvents _ANSI_ARGS_(( - Tcl_EventDeleteProc * proc, - ClientData clientData)); -/* 106 */ -EXTERN void Tcl_DeleteEventSource _ANSI_ARGS_(( - Tcl_EventSetupProc * setupProc, - Tcl_EventCheckProc * checkProc, - ClientData clientData)); -/* 107 */ -EXTERN void Tcl_DeleteExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 108 */ -EXTERN void Tcl_DeleteHashEntry _ANSI_ARGS_(( - Tcl_HashEntry * entryPtr)); -/* 109 */ -EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 110 */ -EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp * interp)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 111 */ -EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, - Tcl_Pid * pidPtr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 111 */ -EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, - Tcl_Pid * pidPtr)); -#endif /* __WIN32__ */ -/* 112 */ -EXTERN void Tcl_DeleteTimerHandler _ANSI_ARGS_(( - Tcl_TimerToken token)); -/* 113 */ -EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Trace trace)); -/* 114 */ -EXTERN void Tcl_DontCallWhenDeleted _ANSI_ARGS_(( - Tcl_Interp * interp, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 115 */ -EXTERN int Tcl_DoOneEvent _ANSI_ARGS_((int flags)); -/* 116 */ -EXTERN void Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc * proc, - ClientData clientData)); -/* 117 */ -EXTERN char * Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString * dsPtr, - CONST char * str, int length)); -/* 118 */ -EXTERN char * Tcl_DStringAppendElement _ANSI_ARGS_(( - Tcl_DString * dsPtr, CONST char * string)); -/* 119 */ -EXTERN void Tcl_DStringEndSublist _ANSI_ARGS_(( - Tcl_DString * dsPtr)); -/* 120 */ -EXTERN void Tcl_DStringFree _ANSI_ARGS_((Tcl_DString * dsPtr)); -/* 121 */ -EXTERN void Tcl_DStringGetResult _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_DString * dsPtr)); -/* 122 */ -EXTERN void Tcl_DStringInit _ANSI_ARGS_((Tcl_DString * dsPtr)); -/* 123 */ -EXTERN void Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * dsPtr)); -/* 124 */ -EXTERN void Tcl_DStringSetLength _ANSI_ARGS_(( - Tcl_DString * dsPtr, int length)); -/* 125 */ -EXTERN void Tcl_DStringStartSublist _ANSI_ARGS_(( - Tcl_DString * dsPtr)); -/* 126 */ -EXTERN int Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan)); -/* 127 */ -EXTERN CONST84_RETURN char * Tcl_ErrnoId _ANSI_ARGS_((void)); -/* 128 */ -EXTERN CONST84_RETURN char * Tcl_ErrnoMsg _ANSI_ARGS_((int err)); -/* 129 */ -EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 130 */ -EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * fileName)); -/* 131 */ -EXTERN int Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr)); -/* 132 */ -EXTERN void Tcl_EventuallyFree _ANSI_ARGS_(( - ClientData clientData, - Tcl_FreeProc * freeProc)); -/* 133 */ -EXTERN void Tcl_Exit _ANSI_ARGS_((int status)); -/* 134 */ -EXTERN int Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * hiddenCmdToken, - CONST char * cmdName)); -/* 135 */ -EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * ptr)); -/* 136 */ -EXTERN int Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int * ptr)); -/* 137 */ -EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, double * ptr)); -/* 138 */ -EXTERN int Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, double * ptr)); -/* 139 */ -EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, long * ptr)); -/* 140 */ -EXTERN int Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, long * ptr)); -/* 141 */ -EXTERN int Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); -/* 142 */ -EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 143 */ -EXTERN void Tcl_Finalize _ANSI_ARGS_((void)); -/* 144 */ -EXTERN void Tcl_FindExecutable _ANSI_ARGS_((CONST char * argv0)); -/* 145 */ -EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, - Tcl_HashSearch * searchPtr)); -/* 146 */ -EXTERN int Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan)); -/* 147 */ -EXTERN void Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp * interp)); -/* 148 */ -EXTERN int Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveCmd, - Tcl_Interp ** targetInterpPtr, - CONST84 char ** targetCmdPtr, int * argcPtr, - CONST84 char *** argvPtr)); -/* 149 */ -EXTERN int Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveCmd, - Tcl_Interp ** targetInterpPtr, - CONST84 char ** targetCmdPtr, int * objcPtr, - Tcl_Obj *** objv)); -/* 150 */ -EXTERN ClientData Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_InterpDeleteProc ** procPtr)); -/* 151 */ -EXTERN Tcl_Channel Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * chanName, int * modePtr)); -/* 152 */ -EXTERN int Tcl_GetChannelBufferSize _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 153 */ -EXTERN int Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan, - int direction, ClientData * handlePtr)); -/* 154 */ -EXTERN ClientData Tcl_GetChannelInstanceData _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 155 */ -EXTERN int Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan)); -/* 156 */ -EXTERN CONST84_RETURN char * Tcl_GetChannelName _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 157 */ -EXTERN int Tcl_GetChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan, - CONST char * optionName, Tcl_DString * dsPtr)); -/* 158 */ -EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan)); -/* 159 */ -EXTERN int Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, Tcl_CmdInfo * infoPtr)); -/* 160 */ -EXTERN CONST84_RETURN char * Tcl_GetCommandName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command)); -/* 161 */ -EXTERN int Tcl_GetErrno _ANSI_ARGS_((void)); -/* 162 */ -EXTERN CONST84_RETURN char * Tcl_GetHostName _ANSI_ARGS_((void)); -/* 163 */ -EXTERN int Tcl_GetInterpPath _ANSI_ARGS_(( - Tcl_Interp * askInterp, - Tcl_Interp * slaveInterp)); -/* 164 */ -EXTERN Tcl_Interp * Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp * interp)); -/* 165 */ -EXTERN CONST char * Tcl_GetNameOfExecutable _ANSI_ARGS_((void)); -/* 166 */ -EXTERN Tcl_Obj * Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp * interp)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 167 */ -EXTERN int Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int forWriting, - int checkUsage, ClientData * filePtr)); -#endif /* UNIX */ -/* 168 */ -EXTERN Tcl_PathType Tcl_GetPathType _ANSI_ARGS_((CONST char * path)); -/* 169 */ -EXTERN int Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan, - Tcl_DString * dsPtr)); -/* 170 */ -EXTERN int Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan, - Tcl_Obj * objPtr)); -/* 171 */ -EXTERN int Tcl_GetServiceMode _ANSI_ARGS_((void)); -/* 172 */ -EXTERN Tcl_Interp * Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveName)); -/* 173 */ -EXTERN Tcl_Channel Tcl_GetStdChannel _ANSI_ARGS_((int type)); -/* 174 */ -EXTERN CONST84_RETURN char * Tcl_GetStringResult _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 175 */ -EXTERN CONST84_RETURN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags)); -/* 176 */ -EXTERN CONST84_RETURN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 177 */ -EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * command)); -/* 178 */ -EXTERN int Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr)); -/* 179 */ -EXTERN int Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, - CONST char * hiddenCmdToken)); -/* 180 */ -EXTERN int Tcl_Init _ANSI_ARGS_((Tcl_Interp * interp)); -/* 181 */ -EXTERN void Tcl_InitHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, int keyType)); -/* 182 */ -EXTERN int Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan)); -/* 183 */ -EXTERN int Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 184 */ -EXTERN int Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp * interp)); -/* 185 */ -EXTERN int Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp * interp)); -/* 186 */ -EXTERN char * Tcl_JoinPath _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv, - Tcl_DString * resultPtr)); -/* 187 */ -EXTERN int Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, char * addr, int type)); -/* Slot 188 is reserved */ -/* 189 */ -EXTERN Tcl_Channel Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle, - int mode)); -/* 190 */ -EXTERN int Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp * interp)); -/* 191 */ -EXTERN Tcl_Channel Tcl_MakeTcpClientChannel _ANSI_ARGS_(( - ClientData tcpSocket)); -/* 192 */ -EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv)); -/* 193 */ -EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( - Tcl_HashSearch * searchPtr)); -/* 194 */ -EXTERN void Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel, - int mask)); -/* 195 */ -EXTERN Tcl_Obj * Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - int flags)); -/* 196 */ -EXTERN Tcl_Obj * Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - Tcl_Obj * newValuePtr, int flags)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 197 */ -EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( - Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 197 */ -EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( - Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -#endif /* __WIN32__ */ -/* 198 */ -EXTERN Tcl_Channel Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * fileName, - CONST char * modeString, int permissions)); -/* 199 */ -EXTERN Tcl_Channel Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp * interp, - int port, CONST char * address, - CONST char * myaddr, int myport, int async)); -/* 200 */ -EXTERN Tcl_Channel Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp * interp, - int port, CONST char * host, - Tcl_TcpAcceptProc * acceptProc, - ClientData callbackData)); -/* 201 */ -EXTERN void Tcl_Preserve _ANSI_ARGS_((ClientData data)); -/* 202 */ -EXTERN void Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp * interp, - double value, char * dst)); -/* 203 */ -EXTERN int Tcl_PutEnv _ANSI_ARGS_((CONST char * string)); -/* 204 */ -EXTERN CONST84_RETURN char * Tcl_PosixError _ANSI_ARGS_((Tcl_Interp * interp)); -/* 205 */ -EXTERN void Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event * evPtr, - Tcl_QueuePosition position)); -/* 206 */ -EXTERN int Tcl_Read _ANSI_ARGS_((Tcl_Channel chan, - char * bufPtr, int toRead)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 207 */ -EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 207 */ -EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); -#endif /* __WIN32__ */ -/* 208 */ -EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmd, int flags)); -/* 209 */ -EXTERN int Tcl_RecordAndEvalObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * cmdPtr, - int flags)); -/* 210 */ -EXTERN void Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 211 */ -EXTERN void Tcl_RegisterObjType _ANSI_ARGS_(( - Tcl_ObjType * typePtr)); -/* 212 */ -EXTERN Tcl_RegExp Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 213 */ -EXTERN int Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp regexp, CONST char * str, - CONST char * start)); -/* 214 */ -EXTERN int Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CONST char * pattern)); -/* 215 */ -EXTERN void Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp, - int index, CONST84 char ** startPtr, - CONST84 char ** endPtr)); -/* 216 */ -EXTERN void Tcl_Release _ANSI_ARGS_((ClientData clientData)); -/* 217 */ -EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp * interp)); -/* 218 */ -EXTERN int Tcl_ScanElement _ANSI_ARGS_((CONST char * str, - int * flagPtr)); -/* 219 */ -EXTERN int Tcl_ScanCountedElement _ANSI_ARGS_((CONST char * str, - int length, int * flagPtr)); -/* 220 */ -EXTERN int Tcl_SeekOld _ANSI_ARGS_((Tcl_Channel chan, - int offset, int mode)); -/* 221 */ -EXTERN int Tcl_ServiceAll _ANSI_ARGS_((void)); -/* 222 */ -EXTERN int Tcl_ServiceEvent _ANSI_ARGS_((int flags)); -/* 223 */ -EXTERN void Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 224 */ -EXTERN void Tcl_SetChannelBufferSize _ANSI_ARGS_(( - Tcl_Channel chan, int sz)); -/* 225 */ -EXTERN int Tcl_SetChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan, - CONST char * optionName, - CONST char * newValue)); -/* 226 */ -EXTERN int Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, - CONST Tcl_CmdInfo * infoPtr)); -/* 227 */ -EXTERN void Tcl_SetErrno _ANSI_ARGS_((int err)); -/* 228 */ -EXTERN void Tcl_SetErrorCode _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 229 */ -EXTERN void Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 230 */ -EXTERN void Tcl_SetPanicProc _ANSI_ARGS_(( - Tcl_PanicProc * panicProc)); -/* 231 */ -EXTERN int Tcl_SetRecursionLimit _ANSI_ARGS_(( - Tcl_Interp * interp, int depth)); -/* 232 */ -EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp * interp, - char * str, Tcl_FreeProc * freeProc)); -/* 233 */ -EXTERN int Tcl_SetServiceMode _ANSI_ARGS_((int mode)); -/* 234 */ -EXTERN void Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * errorObjPtr)); -/* 235 */ -EXTERN void Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * resultObjPtr)); -/* 236 */ -EXTERN void Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel, - int type)); -/* 237 */ -EXTERN CONST84_RETURN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, CONST char * newValue, - int flags)); -/* 238 */ -EXTERN CONST84_RETURN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - CONST char * newValue, int flags)); -/* 239 */ -EXTERN CONST84_RETURN char * Tcl_SignalId _ANSI_ARGS_((int sig)); -/* 240 */ -EXTERN CONST84_RETURN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); -/* 241 */ -EXTERN void Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp * interp)); -/* 242 */ -EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * listStr, int * argcPtr, - CONST84 char *** argvPtr)); -/* 243 */ -EXTERN void Tcl_SplitPath _ANSI_ARGS_((CONST char * path, - int * argcPtr, CONST84 char *** argvPtr)); -/* 244 */ -EXTERN void Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * pkgName, - Tcl_PackageInitProc * initProc, - Tcl_PackageInitProc * safeInitProc)); -/* 245 */ -EXTERN int Tcl_StringMatch _ANSI_ARGS_((CONST char * str, - CONST char * pattern)); -/* 246 */ -EXTERN int Tcl_TellOld _ANSI_ARGS_((Tcl_Channel chan)); -/* 247 */ -EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 248 */ -EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 249 */ -EXTERN char * Tcl_TranslateFileName _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_DString * bufferPtr)); -/* 250 */ -EXTERN int Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, - CONST char * str, int len, int atHead)); -/* 251 */ -EXTERN void Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 252 */ -EXTERN int Tcl_UnregisterChannel _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan)); -/* 253 */ -EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags)); -/* 254 */ -EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 255 */ -EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 256 */ -EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 257 */ -EXTERN void Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 258 */ -EXTERN int Tcl_UpVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * frameName, CONST char * varName, - CONST char * localName, int flags)); -/* 259 */ -EXTERN int Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * frameName, CONST char * part1, - CONST char * part2, CONST char * localName, - int flags)); -/* 260 */ -EXTERN int Tcl_VarEval _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 261 */ -EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * procPtr, - ClientData prevClientData)); -/* 262 */ -EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * procPtr, - ClientData prevClientData)); -/* 263 */ -EXTERN int Tcl_Write _ANSI_ARGS_((Tcl_Channel chan, - CONST char * s, int slen)); -/* 264 */ -EXTERN void Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], - CONST char * message)); -/* 265 */ -EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_(( - CONST char * fileName)); -/* 266 */ -EXTERN void Tcl_ValidateAllMemory _ANSI_ARGS_((CONST char * file, - int line)); -/* 267 */ -EXTERN void Tcl_AppendResultVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 268 */ -EXTERN void Tcl_AppendStringsToObjVA _ANSI_ARGS_(( - Tcl_Obj * objPtr, va_list argList)); -/* 269 */ -EXTERN CONST84_RETURN char * Tcl_HashStats _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 270 */ -EXTERN CONST84_RETURN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CONST84 char ** termPtr)); -/* 271 */ -EXTERN CONST84_RETURN char * Tcl_PkgPresent _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version, - int exact)); -/* 272 */ -EXTERN CONST84_RETURN char * Tcl_PkgPresentEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - CONST char * version, int exact, - ClientData * clientDataPtr)); -/* 273 */ -EXTERN int Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version)); -/* 274 */ -EXTERN CONST84_RETURN char * Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version, - int exact)); -/* 275 */ -EXTERN void Tcl_SetErrorCodeVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 276 */ -EXTERN int Tcl_VarEvalVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 277 */ -EXTERN Tcl_Pid Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, - int options)); -/* 278 */ -EXTERN void Tcl_PanicVA _ANSI_ARGS_((CONST char * format, - va_list argList)); -/* 279 */ -EXTERN void Tcl_GetVersion _ANSI_ARGS_((int * major, int * minor, - int * patchLevel, int * type)); -/* 280 */ -EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp * interp)); -/* 281 */ -EXTERN Tcl_Channel Tcl_StackChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_ChannelType * typePtr, - ClientData instanceData, int mask, - Tcl_Channel prevChan)); -/* 282 */ -EXTERN int Tcl_UnstackChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 283 */ -EXTERN Tcl_Channel Tcl_GetStackedChannel _ANSI_ARGS_((Tcl_Channel chan)); -/* 284 */ -EXTERN void Tcl_SetMainLoop _ANSI_ARGS_((Tcl_MainLoopProc * proc)); -/* Slot 285 is reserved */ -/* 286 */ -EXTERN void Tcl_AppendObjToObj _ANSI_ARGS_((Tcl_Obj * objPtr, - Tcl_Obj * appendObjPtr)); -/* 287 */ -EXTERN Tcl_Encoding Tcl_CreateEncoding _ANSI_ARGS_(( - Tcl_EncodingType * typePtr)); -/* 288 */ -EXTERN void Tcl_CreateThreadExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 289 */ -EXTERN void Tcl_DeleteThreadExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 290 */ -EXTERN void Tcl_DiscardResult _ANSI_ARGS_(( - Tcl_SavedResult * statePtr)); -/* 291 */ -EXTERN int Tcl_EvalEx _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * script, int numBytes, int flags)); -/* 292 */ -EXTERN int Tcl_EvalObjv _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 293 */ -EXTERN int Tcl_EvalObjEx _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int flags)); -/* 294 */ -EXTERN void Tcl_ExitThread _ANSI_ARGS_((int status)); -/* 295 */ -EXTERN int Tcl_ExternalToUtf _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Encoding encoding, CONST char * src, - int srcLen, int flags, - Tcl_EncodingState * statePtr, char * dst, - int dstLen, int * srcReadPtr, - int * dstWrotePtr, int * dstCharsPtr)); -/* 296 */ -EXTERN char * Tcl_ExternalToUtfDString _ANSI_ARGS_(( - Tcl_Encoding encoding, CONST char * src, - int srcLen, Tcl_DString * dsPtr)); -/* 297 */ -EXTERN void Tcl_FinalizeThread _ANSI_ARGS_((void)); -/* 298 */ -EXTERN void Tcl_FinalizeNotifier _ANSI_ARGS_(( - ClientData clientData)); -/* 299 */ -EXTERN void Tcl_FreeEncoding _ANSI_ARGS_((Tcl_Encoding encoding)); -/* 300 */ -EXTERN Tcl_ThreadId Tcl_GetCurrentThread _ANSI_ARGS_((void)); -/* 301 */ -EXTERN Tcl_Encoding Tcl_GetEncoding _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name)); -/* 302 */ -EXTERN CONST84_RETURN char * Tcl_GetEncodingName _ANSI_ARGS_(( - Tcl_Encoding encoding)); -/* 303 */ -EXTERN void Tcl_GetEncodingNames _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 304 */ -EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - CONST VOID * tablePtr, int offset, - CONST char * msg, int flags, int * indexPtr)); -/* 305 */ -EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_(( - Tcl_ThreadDataKey * keyPtr, int size)); -/* 306 */ -EXTERN Tcl_Obj * Tcl_GetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 307 */ -EXTERN ClientData Tcl_InitNotifier _ANSI_ARGS_((void)); -/* 308 */ -EXTERN void Tcl_MutexLock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); -/* 309 */ -EXTERN void Tcl_MutexUnlock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); -/* 310 */ -EXTERN void Tcl_ConditionNotify _ANSI_ARGS_(( - Tcl_Condition * condPtr)); -/* 311 */ -EXTERN void Tcl_ConditionWait _ANSI_ARGS_(( - Tcl_Condition * condPtr, - Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); -/* 312 */ -EXTERN int Tcl_NumUtfChars _ANSI_ARGS_((CONST char * src, - int len)); -/* 313 */ -EXTERN int Tcl_ReadChars _ANSI_ARGS_((Tcl_Channel channel, - Tcl_Obj * objPtr, int charsToRead, - int appendFlag)); -/* 314 */ -EXTERN void Tcl_RestoreResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_SavedResult * statePtr)); -/* 315 */ -EXTERN void Tcl_SaveResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_SavedResult * statePtr)); -/* 316 */ -EXTERN int Tcl_SetSystemEncoding _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name)); -/* 317 */ -EXTERN Tcl_Obj * Tcl_SetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - Tcl_Obj * newValuePtr, int flags)); -/* 318 */ -EXTERN void Tcl_ThreadAlert _ANSI_ARGS_((Tcl_ThreadId threadId)); -/* 319 */ -EXTERN void Tcl_ThreadQueueEvent _ANSI_ARGS_(( - Tcl_ThreadId threadId, Tcl_Event* evPtr, - Tcl_QueuePosition position)); -/* 320 */ -EXTERN Tcl_UniChar Tcl_UniCharAtIndex _ANSI_ARGS_((CONST char * src, - int index)); -/* 321 */ -EXTERN Tcl_UniChar Tcl_UniCharToLower _ANSI_ARGS_((int ch)); -/* 322 */ -EXTERN Tcl_UniChar Tcl_UniCharToTitle _ANSI_ARGS_((int ch)); -/* 323 */ -EXTERN Tcl_UniChar Tcl_UniCharToUpper _ANSI_ARGS_((int ch)); -/* 324 */ -EXTERN int Tcl_UniCharToUtf _ANSI_ARGS_((int ch, char * buf)); -/* 325 */ -EXTERN CONST84_RETURN char * Tcl_UtfAtIndex _ANSI_ARGS_((CONST char * src, - int index)); -/* 326 */ -EXTERN int Tcl_UtfCharComplete _ANSI_ARGS_((CONST char * src, - int len)); -/* 327 */ -EXTERN int Tcl_UtfBackslash _ANSI_ARGS_((CONST char * src, - int * readPtr, char * dst)); -/* 328 */ -EXTERN CONST84_RETURN char * Tcl_UtfFindFirst _ANSI_ARGS_((CONST char * src, - int ch)); -/* 329 */ -EXTERN CONST84_RETURN char * Tcl_UtfFindLast _ANSI_ARGS_((CONST char * src, - int ch)); -/* 330 */ -EXTERN CONST84_RETURN char * Tcl_UtfNext _ANSI_ARGS_((CONST char * src)); -/* 331 */ -EXTERN CONST84_RETURN char * Tcl_UtfPrev _ANSI_ARGS_((CONST char * src, - CONST char * start)); -/* 332 */ -EXTERN int Tcl_UtfToExternal _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Encoding encoding, CONST char * src, - int srcLen, int flags, - Tcl_EncodingState * statePtr, char * dst, - int dstLen, int * srcReadPtr, - int * dstWrotePtr, int * dstCharsPtr)); -/* 333 */ -EXTERN char * Tcl_UtfToExternalDString _ANSI_ARGS_(( - Tcl_Encoding encoding, CONST char * src, - int srcLen, Tcl_DString * dsPtr)); -/* 334 */ -EXTERN int Tcl_UtfToLower _ANSI_ARGS_((char * src)); -/* 335 */ -EXTERN int Tcl_UtfToTitle _ANSI_ARGS_((char * src)); -/* 336 */ -EXTERN int Tcl_UtfToUniChar _ANSI_ARGS_((CONST char * src, - Tcl_UniChar * chPtr)); -/* 337 */ -EXTERN int Tcl_UtfToUpper _ANSI_ARGS_((char * src)); -/* 338 */ -EXTERN int Tcl_WriteChars _ANSI_ARGS_((Tcl_Channel chan, - CONST char * src, int srcLen)); -/* 339 */ -EXTERN int Tcl_WriteObj _ANSI_ARGS_((Tcl_Channel chan, - Tcl_Obj * objPtr)); -/* 340 */ -EXTERN char * Tcl_GetString _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 341 */ -EXTERN CONST84_RETURN char * Tcl_GetDefaultEncodingDir _ANSI_ARGS_((void)); -/* 342 */ -EXTERN void Tcl_SetDefaultEncodingDir _ANSI_ARGS_(( - CONST char * path)); -/* 343 */ -EXTERN void Tcl_AlertNotifier _ANSI_ARGS_((ClientData clientData)); -/* 344 */ -EXTERN void Tcl_ServiceModeHook _ANSI_ARGS_((int mode)); -/* 345 */ -EXTERN int Tcl_UniCharIsAlnum _ANSI_ARGS_((int ch)); -/* 346 */ -EXTERN int Tcl_UniCharIsAlpha _ANSI_ARGS_((int ch)); -/* 347 */ -EXTERN int Tcl_UniCharIsDigit _ANSI_ARGS_((int ch)); -/* 348 */ -EXTERN int Tcl_UniCharIsLower _ANSI_ARGS_((int ch)); -/* 349 */ -EXTERN int Tcl_UniCharIsSpace _ANSI_ARGS_((int ch)); -/* 350 */ -EXTERN int Tcl_UniCharIsUpper _ANSI_ARGS_((int ch)); -/* 351 */ -EXTERN int Tcl_UniCharIsWordChar _ANSI_ARGS_((int ch)); -/* 352 */ -EXTERN int Tcl_UniCharLen _ANSI_ARGS_((CONST Tcl_UniChar * str)); -/* 353 */ -EXTERN int Tcl_UniCharNcmp _ANSI_ARGS_((CONST Tcl_UniChar * cs, - CONST Tcl_UniChar * ct, unsigned long n)); -/* 354 */ -EXTERN char * Tcl_UniCharToUtfDString _ANSI_ARGS_(( - CONST Tcl_UniChar * string, int numChars, - Tcl_DString * dsPtr)); -/* 355 */ -EXTERN Tcl_UniChar * Tcl_UtfToUniCharDString _ANSI_ARGS_(( - CONST char * string, int length, - Tcl_DString * dsPtr)); -/* 356 */ -EXTERN Tcl_RegExp Tcl_GetRegExpFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * patObj, - int flags)); -/* 357 */ -EXTERN Tcl_Obj * Tcl_EvalTokens _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Token * tokenPtr, int count)); -/* 358 */ -EXTERN void Tcl_FreeParse _ANSI_ARGS_((Tcl_Parse * parsePtr)); -/* 359 */ -EXTERN void Tcl_LogCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * script, CONST char * command, - int length)); -/* 360 */ -EXTERN int Tcl_ParseBraces _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr, int append, - CONST84 char ** termPtr)); -/* 361 */ -EXTERN int Tcl_ParseCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - int nested, Tcl_Parse * parsePtr)); -/* 362 */ -EXTERN int Tcl_ParseExpr _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr)); -/* 363 */ -EXTERN int Tcl_ParseQuotedString _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * string, - int numBytes, Tcl_Parse * parsePtr, - int append, CONST84 char ** termPtr)); -/* 364 */ -EXTERN int Tcl_ParseVarName _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr, int append)); -/* 365 */ -EXTERN char * Tcl_GetCwd _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * cwdPtr)); -/* 366 */ -EXTERN int Tcl_Chdir _ANSI_ARGS_((CONST char * dirName)); -/* 367 */ -EXTERN int Tcl_Access _ANSI_ARGS_((CONST char * path, int mode)); -/* 368 */ -EXTERN int Tcl_Stat _ANSI_ARGS_((CONST char * path, - struct stat * bufPtr)); -/* 369 */ -EXTERN int Tcl_UtfNcmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 370 */ -EXTERN int Tcl_UtfNcasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 371 */ -EXTERN int Tcl_StringCaseMatch _ANSI_ARGS_((CONST char * str, - CONST char * pattern, int nocase)); -/* 372 */ -EXTERN int Tcl_UniCharIsControl _ANSI_ARGS_((int ch)); -/* 373 */ -EXTERN int Tcl_UniCharIsGraph _ANSI_ARGS_((int ch)); -/* 374 */ -EXTERN int Tcl_UniCharIsPrint _ANSI_ARGS_((int ch)); -/* 375 */ -EXTERN int Tcl_UniCharIsPunct _ANSI_ARGS_((int ch)); -/* 376 */ -EXTERN int Tcl_RegExpExecObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp regexp, Tcl_Obj * objPtr, - int offset, int nmatches, int flags)); -/* 377 */ -EXTERN void Tcl_RegExpGetInfo _ANSI_ARGS_((Tcl_RegExp regexp, - Tcl_RegExpInfo * infoPtr)); -/* 378 */ -EXTERN Tcl_Obj * Tcl_NewUnicodeObj _ANSI_ARGS_(( - CONST Tcl_UniChar * unicode, int numChars)); -/* 379 */ -EXTERN void Tcl_SetUnicodeObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST Tcl_UniChar * unicode, int numChars)); -/* 380 */ -EXTERN int Tcl_GetCharLength _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 381 */ -EXTERN Tcl_UniChar Tcl_GetUniChar _ANSI_ARGS_((Tcl_Obj * objPtr, - int index)); -/* 382 */ -EXTERN Tcl_UniChar * Tcl_GetUnicode _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 383 */ -EXTERN Tcl_Obj * Tcl_GetRange _ANSI_ARGS_((Tcl_Obj * objPtr, - int first, int last)); -/* 384 */ -EXTERN void Tcl_AppendUnicodeToObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST Tcl_UniChar * unicode, int length)); -/* 385 */ -EXTERN int Tcl_RegExpMatchObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * stringObj, Tcl_Obj * patternObj)); -/* 386 */ -EXTERN void Tcl_SetNotifier _ANSI_ARGS_(( - Tcl_NotifierProcs * notifierProcPtr)); -/* 387 */ -EXTERN Tcl_Mutex * Tcl_GetAllocMutex _ANSI_ARGS_((void)); -/* 388 */ -EXTERN int Tcl_GetChannelNames _ANSI_ARGS_((Tcl_Interp * interp)); -/* 389 */ -EXTERN int Tcl_GetChannelNamesEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * pattern)); -/* 390 */ -EXTERN int Tcl_ProcObjCmd _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int objc, - Tcl_Obj *CONST objv[])); -/* 391 */ -EXTERN void Tcl_ConditionFinalize _ANSI_ARGS_(( - Tcl_Condition * condPtr)); -/* 392 */ -EXTERN void Tcl_MutexFinalize _ANSI_ARGS_((Tcl_Mutex * mutex)); -/* 393 */ -EXTERN int Tcl_CreateThread _ANSI_ARGS_((Tcl_ThreadId * idPtr, - Tcl_ThreadCreateProc proc, - ClientData clientData, int stackSize, - int flags)); -/* 394 */ -EXTERN int Tcl_ReadRaw _ANSI_ARGS_((Tcl_Channel chan, - char * dst, int bytesToRead)); -/* 395 */ -EXTERN int Tcl_WriteRaw _ANSI_ARGS_((Tcl_Channel chan, - CONST char * src, int srcLen)); -/* 396 */ -EXTERN Tcl_Channel Tcl_GetTopChannel _ANSI_ARGS_((Tcl_Channel chan)); -/* 397 */ -EXTERN int Tcl_ChannelBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 398 */ -EXTERN CONST84_RETURN char * Tcl_ChannelName _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 399 */ -EXTERN Tcl_ChannelTypeVersion Tcl_ChannelVersion _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 400 */ -EXTERN Tcl_DriverBlockModeProc * Tcl_ChannelBlockModeProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 401 */ -EXTERN Tcl_DriverCloseProc * Tcl_ChannelCloseProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 402 */ -EXTERN Tcl_DriverClose2Proc * Tcl_ChannelClose2Proc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 403 */ -EXTERN Tcl_DriverInputProc * Tcl_ChannelInputProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 404 */ -EXTERN Tcl_DriverOutputProc * Tcl_ChannelOutputProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 405 */ -EXTERN Tcl_DriverSeekProc * Tcl_ChannelSeekProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 406 */ -EXTERN Tcl_DriverSetOptionProc * Tcl_ChannelSetOptionProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 407 */ -EXTERN Tcl_DriverGetOptionProc * Tcl_ChannelGetOptionProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 408 */ -EXTERN Tcl_DriverWatchProc * Tcl_ChannelWatchProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 409 */ -EXTERN Tcl_DriverGetHandleProc * Tcl_ChannelGetHandleProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 410 */ -EXTERN Tcl_DriverFlushProc * Tcl_ChannelFlushProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 411 */ -EXTERN Tcl_DriverHandlerProc * Tcl_ChannelHandlerProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 412 */ -EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId threadId, - int* result)); -/* 413 */ -EXTERN int Tcl_IsChannelShared _ANSI_ARGS_((Tcl_Channel channel)); -/* 414 */ -EXTERN int Tcl_IsChannelRegistered _ANSI_ARGS_(( - Tcl_Interp* interp, Tcl_Channel channel)); -/* 415 */ -EXTERN void Tcl_CutChannel _ANSI_ARGS_((Tcl_Channel channel)); -/* 416 */ -EXTERN void Tcl_SpliceChannel _ANSI_ARGS_((Tcl_Channel channel)); -/* 417 */ -EXTERN void Tcl_ClearChannelHandlers _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 418 */ -EXTERN int Tcl_IsChannelExisting _ANSI_ARGS_(( - CONST char* channelName)); -/* 419 */ -EXTERN int Tcl_UniCharNcasecmp _ANSI_ARGS_(( - CONST Tcl_UniChar * cs, - CONST Tcl_UniChar * ct, unsigned long n)); -/* 420 */ -EXTERN int Tcl_UniCharCaseMatch _ANSI_ARGS_(( - CONST Tcl_UniChar * ustr, - CONST Tcl_UniChar * pattern, int nocase)); -/* 421 */ -EXTERN Tcl_HashEntry * Tcl_FindHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, CONST char * key)); -/* 422 */ -EXTERN Tcl_HashEntry * Tcl_CreateHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, CONST char * key, - int * newPtr)); -/* 423 */ -EXTERN void Tcl_InitCustomHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, int keyType, - Tcl_HashKeyType * typePtr)); -/* 424 */ -EXTERN void Tcl_InitObjHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 425 */ -EXTERN ClientData Tcl_CommandTraceInfo _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * varName, - int flags, Tcl_CommandTraceProc * procPtr, - ClientData prevClientData)); -/* 426 */ -EXTERN int Tcl_TraceCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_CommandTraceProc * proc, - ClientData clientData)); -/* 427 */ -EXTERN void Tcl_UntraceCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_CommandTraceProc * proc, - ClientData clientData)); -/* 428 */ -EXTERN char * Tcl_AttemptAlloc _ANSI_ARGS_((unsigned int size)); -/* 429 */ -EXTERN char * Tcl_AttemptDbCkalloc _ANSI_ARGS_((unsigned int size, - CONST char * file, int line)); -/* 430 */ -EXTERN char * Tcl_AttemptRealloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* 431 */ -EXTERN char * Tcl_AttemptDbCkrealloc _ANSI_ARGS_((char * ptr, - unsigned int size, CONST char * file, - int line)); -/* 432 */ -EXTERN int Tcl_AttemptSetObjLength _ANSI_ARGS_(( - Tcl_Obj * objPtr, int length)); -/* 433 */ -EXTERN Tcl_ThreadId Tcl_GetChannelThread _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 434 */ -EXTERN Tcl_UniChar * Tcl_GetUnicodeFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int * lengthPtr)); -/* 435 */ -EXTERN int Tcl_GetMathFuncInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, int * numArgsPtr, - Tcl_ValueType ** argTypesPtr, - Tcl_MathProc ** procPtr, - ClientData * clientDataPtr)); -/* 436 */ -EXTERN Tcl_Obj * Tcl_ListMathFuncs _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * pattern)); -/* 437 */ -EXTERN Tcl_Obj * Tcl_SubstObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int flags)); -/* 438 */ -EXTERN int Tcl_DetachChannel _ANSI_ARGS_((Tcl_Interp* interp, - Tcl_Channel channel)); -/* 439 */ -EXTERN int Tcl_IsStandardChannel _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 440 */ -EXTERN int Tcl_FSCopyFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, - Tcl_Obj * destPathPtr)); -/* 441 */ -EXTERN int Tcl_FSCopyDirectory _ANSI_ARGS_(( - Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, - Tcl_Obj ** errorPtr)); -/* 442 */ -EXTERN int Tcl_FSCreateDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 443 */ -EXTERN int Tcl_FSDeleteFile _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 444 */ -EXTERN int Tcl_FSLoadFile _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * pathPtr, CONST char * sym1, - CONST char * sym2, - Tcl_PackageInitProc ** proc1Ptr, - Tcl_PackageInitProc ** proc2Ptr, - Tcl_LoadHandle * handlePtr, - Tcl_FSUnloadFileProc ** unloadProcPtr)); -/* 445 */ -EXTERN int Tcl_FSMatchInDirectory _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * result, - Tcl_Obj * pathPtr, CONST char * pattern, - Tcl_GlobTypeData * types)); -/* 446 */ -EXTERN Tcl_Obj * Tcl_FSLink _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_Obj * toPtr, int linkAction)); -/* 447 */ -EXTERN int Tcl_FSRemoveDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr, - int recursive, Tcl_Obj ** errorPtr)); -/* 448 */ -EXTERN int Tcl_FSRenameFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, - Tcl_Obj * destPathPtr)); -/* 449 */ -EXTERN int Tcl_FSLstat _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_StatBuf * buf)); -/* 450 */ -EXTERN int Tcl_FSUtime _ANSI_ARGS_((Tcl_Obj * pathPtr, - struct utimbuf * tval)); -/* 451 */ -EXTERN int Tcl_FSFileAttrsGet _ANSI_ARGS_((Tcl_Interp * interp, - int index, Tcl_Obj * pathPtr, - Tcl_Obj ** objPtrRef)); -/* 452 */ -EXTERN int Tcl_FSFileAttrsSet _ANSI_ARGS_((Tcl_Interp * interp, - int index, Tcl_Obj * pathPtr, - Tcl_Obj * objPtr)); -/* 453 */ -EXTERN CONST char ** Tcl_FSFileAttrStrings _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_Obj ** objPtrRef)); -/* 454 */ -EXTERN int Tcl_FSStat _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_StatBuf * buf)); -/* 455 */ -EXTERN int Tcl_FSAccess _ANSI_ARGS_((Tcl_Obj * pathPtr, - int mode)); -/* 456 */ -EXTERN Tcl_Channel Tcl_FSOpenFileChannel _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * pathPtr, - CONST char * modeString, int permissions)); -/* 457 */ -EXTERN Tcl_Obj* Tcl_FSGetCwd _ANSI_ARGS_((Tcl_Interp * interp)); -/* 458 */ -EXTERN int Tcl_FSChdir _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 459 */ -EXTERN int Tcl_FSConvertToPathType _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * pathPtr)); -/* 460 */ -EXTERN Tcl_Obj* Tcl_FSJoinPath _ANSI_ARGS_((Tcl_Obj * listObj, - int elements)); -/* 461 */ -EXTERN Tcl_Obj* Tcl_FSSplitPath _ANSI_ARGS_((Tcl_Obj* pathPtr, - int * lenPtr)); -/* 462 */ -EXTERN int Tcl_FSEqualPaths _ANSI_ARGS_((Tcl_Obj* firstPtr, - Tcl_Obj* secondPtr)); -/* 463 */ -EXTERN Tcl_Obj* Tcl_FSGetNormalizedPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); -/* 464 */ -EXTERN Tcl_Obj* Tcl_FSJoinToPath _ANSI_ARGS_((Tcl_Obj * basePtr, - int objc, Tcl_Obj *CONST objv[])); -/* 465 */ -EXTERN ClientData Tcl_FSGetInternalRep _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); -/* 466 */ -EXTERN Tcl_Obj* Tcl_FSGetTranslatedPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathPtr)); -/* 467 */ -EXTERN int Tcl_FSEvalFile _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * fileName)); -/* 468 */ -EXTERN Tcl_Obj* Tcl_FSNewNativePath _ANSI_ARGS_(( - Tcl_Filesystem* fromFilesystem, - ClientData clientData)); -/* 469 */ -EXTERN CONST char* Tcl_FSGetNativePath _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); -/* 470 */ -EXTERN Tcl_Obj* Tcl_FSFileSystemInfo _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr)); -/* 471 */ -EXTERN Tcl_Obj* Tcl_FSPathSeparator _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); -/* 472 */ -EXTERN Tcl_Obj* Tcl_FSListVolumes _ANSI_ARGS_((void)); -/* 473 */ -EXTERN int Tcl_FSRegister _ANSI_ARGS_((ClientData clientData, - Tcl_Filesystem * fsPtr)); -/* 474 */ -EXTERN int Tcl_FSUnregister _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); -/* 475 */ -EXTERN ClientData Tcl_FSData _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); -/* 476 */ -EXTERN CONST char* Tcl_FSGetTranslatedStringPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathPtr)); -/* 477 */ -EXTERN Tcl_Filesystem* Tcl_FSGetFileSystemForPath _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr)); -/* 478 */ -EXTERN Tcl_PathType Tcl_FSGetPathType _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); -/* 479 */ -EXTERN int Tcl_OutputBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 480 */ -EXTERN void Tcl_FSMountsChanged _ANSI_ARGS_(( - Tcl_Filesystem * fsPtr)); -/* 481 */ -EXTERN int Tcl_EvalTokensStandard _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Token * tokenPtr, - int count)); -/* 482 */ -EXTERN void Tcl_GetTime _ANSI_ARGS_((Tcl_Time* timeBuf)); -/* 483 */ -EXTERN Tcl_Trace Tcl_CreateObjTrace _ANSI_ARGS_((Tcl_Interp* interp, - int level, int flags, - Tcl_CmdObjTraceProc* objProc, - ClientData clientData, - Tcl_CmdObjTraceDeleteProc* delProc)); -/* 484 */ -EXTERN int Tcl_GetCommandInfoFromToken _ANSI_ARGS_(( - Tcl_Command token, Tcl_CmdInfo* infoPtr)); -/* 485 */ -EXTERN int Tcl_SetCommandInfoFromToken _ANSI_ARGS_(( - Tcl_Command token, - CONST Tcl_CmdInfo* infoPtr)); -/* 486 */ -EXTERN Tcl_Obj * Tcl_DbNewWideIntObj _ANSI_ARGS_(( - Tcl_WideInt wideValue, CONST char * file, - int line)); -/* 487 */ -EXTERN int Tcl_GetWideIntFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - Tcl_WideInt * widePtr)); -/* 488 */ -EXTERN Tcl_Obj * Tcl_NewWideIntObj _ANSI_ARGS_((Tcl_WideInt wideValue)); -/* 489 */ -EXTERN void Tcl_SetWideIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, - Tcl_WideInt wideValue)); -/* 490 */ -EXTERN Tcl_StatBuf * Tcl_AllocStatBuf _ANSI_ARGS_((void)); -/* 491 */ -EXTERN Tcl_WideInt Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan, - Tcl_WideInt offset, int mode)); -/* 492 */ -EXTERN Tcl_WideInt Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); -/* 493 */ -EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); - -typedef struct TclStubHooks { - struct TclPlatStubs *tclPlatStubs; - struct TclIntStubs *tclIntStubs; - struct TclIntPlatStubs *tclIntPlatStubs; -} TclStubHooks; - -typedef struct TclStubs { - int magic; - struct TclStubHooks *hooks; - - int (*tcl_PkgProvideEx) _ANSI_ARGS_((Tcl_Interp* interp, CONST char* name, CONST char* version, ClientData clientData)); /* 0 */ - CONST84_RETURN char * (*tcl_PkgRequireEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 1 */ - void (*tcl_Panic) _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); /* 2 */ - char * (*tcl_Alloc) _ANSI_ARGS_((unsigned int size)); /* 3 */ - void (*tcl_Free) _ANSI_ARGS_((char * ptr)); /* 4 */ - char * (*tcl_Realloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 5 */ - char * (*tcl_DbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 6 */ - int (*tcl_DbCkfree) _ANSI_ARGS_((char * ptr, CONST char * file, int line)); /* 7 */ - char * (*tcl_DbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_CreateFileHandler) _ANSI_ARGS_((int fd, int mask, Tcl_FileProc * proc, ClientData clientData)); /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved9; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved9; -#endif /* MAC_TCL */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_DeleteFileHandler) _ANSI_ARGS_((int fd)); /* 10 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved10; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved10; -#endif /* MAC_TCL */ - void (*tcl_SetTimer) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 11 */ - void (*tcl_Sleep) _ANSI_ARGS_((int ms)); /* 12 */ - int (*tcl_WaitForEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 13 */ - int (*tcl_AppendAllObjTypes) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 14 */ - void (*tcl_AppendStringsToObj) _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); /* 15 */ - void (*tcl_AppendToObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 16 */ - Tcl_Obj * (*tcl_ConcatObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 17 */ - int (*tcl_ConvertToType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); /* 18 */ - void (*tcl_DbDecrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 19 */ - void (*tcl_DbIncrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 20 */ - int (*tcl_DbIsShared) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 21 */ - Tcl_Obj * (*tcl_DbNewBooleanObj) _ANSI_ARGS_((int boolValue, CONST char * file, int line)); /* 22 */ - Tcl_Obj * (*tcl_DbNewByteArrayObj) _ANSI_ARGS_((CONST unsigned char * bytes, int length, CONST char * file, int line)); /* 23 */ - Tcl_Obj * (*tcl_DbNewDoubleObj) _ANSI_ARGS_((double doubleValue, CONST char * file, int line)); /* 24 */ - Tcl_Obj * (*tcl_DbNewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST * objv, CONST char * file, int line)); /* 25 */ - Tcl_Obj * (*tcl_DbNewLongObj) _ANSI_ARGS_((long longValue, CONST char * file, int line)); /* 26 */ - Tcl_Obj * (*tcl_DbNewObj) _ANSI_ARGS_((CONST char * file, int line)); /* 27 */ - Tcl_Obj * (*tcl_DbNewStringObj) _ANSI_ARGS_((CONST char * bytes, int length, CONST char * file, int line)); /* 28 */ - Tcl_Obj * (*tcl_DuplicateObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 29 */ - void (*tclFreeObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 30 */ - int (*tcl_GetBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * boolPtr)); /* 31 */ - int (*tcl_GetBooleanFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * boolPtr)); /* 32 */ - unsigned char * (*tcl_GetByteArrayFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 33 */ - int (*tcl_GetDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * doublePtr)); /* 34 */ - int (*tcl_GetDoubleFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * doublePtr)); /* 35 */ - int (*tcl_GetIndexFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST84 char ** tablePtr, CONST char * msg, int flags, int * indexPtr)); /* 36 */ - int (*tcl_GetInt) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * intPtr)); /* 37 */ - int (*tcl_GetIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * intPtr)); /* 38 */ - int (*tcl_GetLongFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * longPtr)); /* 39 */ - Tcl_ObjType * (*tcl_GetObjType) _ANSI_ARGS_((CONST char * typeName)); /* 40 */ - char * (*tcl_GetStringFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 41 */ - void (*tcl_InvalidateStringRep) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 42 */ - int (*tcl_ListObjAppendList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * elemListPtr)); /* 43 */ - int (*tcl_ListObjAppendElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * objPtr)); /* 44 */ - int (*tcl_ListObjGetElements) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * objcPtr, Tcl_Obj *** objvPtr)); /* 45 */ - int (*tcl_ListObjIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj ** objPtrPtr)); /* 46 */ - int (*tcl_ListObjLength) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * lengthPtr)); /* 47 */ - int (*tcl_ListObjReplace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int first, int count, int objc, Tcl_Obj *CONST objv[])); /* 48 */ - Tcl_Obj * (*tcl_NewBooleanObj) _ANSI_ARGS_((int boolValue)); /* 49 */ - Tcl_Obj * (*tcl_NewByteArrayObj) _ANSI_ARGS_((CONST unsigned char* bytes, int length)); /* 50 */ - Tcl_Obj * (*tcl_NewDoubleObj) _ANSI_ARGS_((double doubleValue)); /* 51 */ - Tcl_Obj * (*tcl_NewIntObj) _ANSI_ARGS_((int intValue)); /* 52 */ - Tcl_Obj * (*tcl_NewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 53 */ - Tcl_Obj * (*tcl_NewLongObj) _ANSI_ARGS_((long longValue)); /* 54 */ - Tcl_Obj * (*tcl_NewObj) _ANSI_ARGS_((void)); /* 55 */ - Tcl_Obj * (*tcl_NewStringObj) _ANSI_ARGS_((CONST char * bytes, int length)); /* 56 */ - void (*tcl_SetBooleanObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int boolValue)); /* 57 */ - unsigned char * (*tcl_SetByteArrayLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 58 */ - void (*tcl_SetByteArrayObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST unsigned char * bytes, int length)); /* 59 */ - void (*tcl_SetDoubleObj) _ANSI_ARGS_((Tcl_Obj * objPtr, double doubleValue)); /* 60 */ - void (*tcl_SetIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int intValue)); /* 61 */ - void (*tcl_SetListObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int objc, Tcl_Obj *CONST objv[])); /* 62 */ - void (*tcl_SetLongObj) _ANSI_ARGS_((Tcl_Obj * objPtr, long longValue)); /* 63 */ - void (*tcl_SetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 64 */ - void (*tcl_SetStringObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 65 */ - void (*tcl_AddErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message)); /* 66 */ - void (*tcl_AddObjErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message, int length)); /* 67 */ - void (*tcl_AllowExceptions) _ANSI_ARGS_((Tcl_Interp * interp)); /* 68 */ - void (*tcl_AppendElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 69 */ - void (*tcl_AppendResult) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 70 */ - Tcl_AsyncHandler (*tcl_AsyncCreate) _ANSI_ARGS_((Tcl_AsyncProc * proc, ClientData clientData)); /* 71 */ - void (*tcl_AsyncDelete) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 72 */ - int (*tcl_AsyncInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int code)); /* 73 */ - void (*tcl_AsyncMark) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 74 */ - int (*tcl_AsyncReady) _ANSI_ARGS_((void)); /* 75 */ - void (*tcl_BackgroundError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 76 */ - char (*tcl_Backslash) _ANSI_ARGS_((CONST char * src, int * readPtr)); /* 77 */ - int (*tcl_BadChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * optionName, CONST char * optionList)); /* 78 */ - void (*tcl_CallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 79 */ - void (*tcl_CancelIdleCall) _ANSI_ARGS_((Tcl_IdleProc * idleProc, ClientData clientData)); /* 80 */ - int (*tcl_Close) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 81 */ - int (*tcl_CommandComplete) _ANSI_ARGS_((CONST char * cmd)); /* 82 */ - char * (*tcl_Concat) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 83 */ - int (*tcl_ConvertElement) _ANSI_ARGS_((CONST char * src, char * dst, int flags)); /* 84 */ - int (*tcl_ConvertCountedElement) _ANSI_ARGS_((CONST char * src, int length, char * dst, int flags)); /* 85 */ - int (*tcl_CreateAlias) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int argc, CONST84 char * CONST * argv)); /* 86 */ - int (*tcl_CreateAliasObj) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int objc, Tcl_Obj *CONST objv[])); /* 87 */ - Tcl_Channel (*tcl_CreateChannel) _ANSI_ARGS_((Tcl_ChannelType * typePtr, CONST char * chanName, ClientData instanceData, int mask)); /* 88 */ - void (*tcl_CreateChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, int mask, Tcl_ChannelProc * proc, ClientData clientData)); /* 89 */ - void (*tcl_CreateCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 90 */ - Tcl_Command (*tcl_CreateCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 91 */ - void (*tcl_CreateEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 92 */ - void (*tcl_CreateExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 93 */ - Tcl_Interp * (*tcl_CreateInterp) _ANSI_ARGS_((void)); /* 94 */ - void (*tcl_CreateMathFunc) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int numArgs, Tcl_ValueType * argTypes, Tcl_MathProc * proc, ClientData clientData)); /* 95 */ - Tcl_Command (*tcl_CreateObjCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_ObjCmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 96 */ - Tcl_Interp * (*tcl_CreateSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName, int isSafe)); /* 97 */ - Tcl_TimerToken (*tcl_CreateTimerHandler) _ANSI_ARGS_((int milliseconds, Tcl_TimerProc * proc, ClientData clientData)); /* 98 */ - Tcl_Trace (*tcl_CreateTrace) _ANSI_ARGS_((Tcl_Interp * interp, int level, Tcl_CmdTraceProc * proc, ClientData clientData)); /* 99 */ - void (*tcl_DeleteAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 100 */ - void (*tcl_DeleteChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_ChannelProc * proc, ClientData clientData)); /* 101 */ - void (*tcl_DeleteCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 102 */ - int (*tcl_DeleteCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName)); /* 103 */ - int (*tcl_DeleteCommandFromToken) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 104 */ - void (*tcl_DeleteEvents) _ANSI_ARGS_((Tcl_EventDeleteProc * proc, ClientData clientData)); /* 105 */ - void (*tcl_DeleteEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 106 */ - void (*tcl_DeleteExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 107 */ - void (*tcl_DeleteHashEntry) _ANSI_ARGS_((Tcl_HashEntry * entryPtr)); /* 108 */ - void (*tcl_DeleteHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 109 */ - void (*tcl_DeleteInterp) _ANSI_ARGS_((Tcl_Interp * interp)); /* 110 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved111; -#endif /* MAC_TCL */ - void (*tcl_DeleteTimerHandler) _ANSI_ARGS_((Tcl_TimerToken token)); /* 112 */ - void (*tcl_DeleteTrace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Trace trace)); /* 113 */ - void (*tcl_DontCallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 114 */ - int (*tcl_DoOneEvent) _ANSI_ARGS_((int flags)); /* 115 */ - void (*tcl_DoWhenIdle) _ANSI_ARGS_((Tcl_IdleProc * proc, ClientData clientData)); /* 116 */ - char * (*tcl_DStringAppend) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * str, int length)); /* 117 */ - char * (*tcl_DStringAppendElement) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * string)); /* 118 */ - void (*tcl_DStringEndSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 119 */ - void (*tcl_DStringFree) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 120 */ - void (*tcl_DStringGetResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 121 */ - void (*tcl_DStringInit) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 122 */ - void (*tcl_DStringResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 123 */ - void (*tcl_DStringSetLength) _ANSI_ARGS_((Tcl_DString * dsPtr, int length)); /* 124 */ - void (*tcl_DStringStartSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 125 */ - int (*tcl_Eof) _ANSI_ARGS_((Tcl_Channel chan)); /* 126 */ - CONST84_RETURN char * (*tcl_ErrnoId) _ANSI_ARGS_((void)); /* 127 */ - CONST84_RETURN char * (*tcl_ErrnoMsg) _ANSI_ARGS_((int err)); /* 128 */ - int (*tcl_Eval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 129 */ - int (*tcl_EvalFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName)); /* 130 */ - int (*tcl_EvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 131 */ - void (*tcl_EventuallyFree) _ANSI_ARGS_((ClientData clientData, Tcl_FreeProc * freeProc)); /* 132 */ - void (*tcl_Exit) _ANSI_ARGS_((int status)); /* 133 */ - int (*tcl_ExposeCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * hiddenCmdToken, CONST char * cmdName)); /* 134 */ - int (*tcl_ExprBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * ptr)); /* 135 */ - int (*tcl_ExprBooleanObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * ptr)); /* 136 */ - int (*tcl_ExprDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * ptr)); /* 137 */ - int (*tcl_ExprDoubleObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * ptr)); /* 138 */ - int (*tcl_ExprLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * ptr)); /* 139 */ - int (*tcl_ExprLongObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * ptr)); /* 140 */ - int (*tcl_ExprObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); /* 141 */ - int (*tcl_ExprString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 142 */ - void (*tcl_Finalize) _ANSI_ARGS_((void)); /* 143 */ - void (*tcl_FindExecutable) _ANSI_ARGS_((CONST char * argv0)); /* 144 */ - Tcl_HashEntry * (*tcl_FirstHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, Tcl_HashSearch * searchPtr)); /* 145 */ - int (*tcl_Flush) _ANSI_ARGS_((Tcl_Channel chan)); /* 146 */ - void (*tcl_FreeResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 147 */ - int (*tcl_GetAlias) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * argcPtr, CONST84 char *** argvPtr)); /* 148 */ - int (*tcl_GetAliasObj) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * objcPtr, Tcl_Obj *** objv)); /* 149 */ - ClientData (*tcl_GetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc ** procPtr)); /* 150 */ - Tcl_Channel (*tcl_GetChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * chanName, int * modePtr)); /* 151 */ - int (*tcl_GetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan)); /* 152 */ - int (*tcl_GetChannelHandle) _ANSI_ARGS_((Tcl_Channel chan, int direction, ClientData * handlePtr)); /* 153 */ - ClientData (*tcl_GetChannelInstanceData) _ANSI_ARGS_((Tcl_Channel chan)); /* 154 */ - int (*tcl_GetChannelMode) _ANSI_ARGS_((Tcl_Channel chan)); /* 155 */ - CONST84_RETURN char * (*tcl_GetChannelName) _ANSI_ARGS_((Tcl_Channel chan)); /* 156 */ - int (*tcl_GetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, Tcl_DString * dsPtr)); /* 157 */ - Tcl_ChannelType * (*tcl_GetChannelType) _ANSI_ARGS_((Tcl_Channel chan)); /* 158 */ - int (*tcl_GetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdInfo * infoPtr)); /* 159 */ - CONST84_RETURN char * (*tcl_GetCommandName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 160 */ - int (*tcl_GetErrno) _ANSI_ARGS_((void)); /* 161 */ - CONST84_RETURN char * (*tcl_GetHostName) _ANSI_ARGS_((void)); /* 162 */ - int (*tcl_GetInterpPath) _ANSI_ARGS_((Tcl_Interp * askInterp, Tcl_Interp * slaveInterp)); /* 163 */ - Tcl_Interp * (*tcl_GetMaster) _ANSI_ARGS_((Tcl_Interp * interp)); /* 164 */ - CONST char * (*tcl_GetNameOfExecutable) _ANSI_ARGS_((void)); /* 165 */ - Tcl_Obj * (*tcl_GetObjResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 166 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tcl_GetOpenFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int forWriting, int checkUsage, ClientData * filePtr)); /* 167 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved167; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved167; -#endif /* MAC_TCL */ - Tcl_PathType (*tcl_GetPathType) _ANSI_ARGS_((CONST char * path)); /* 168 */ - int (*tcl_Gets) _ANSI_ARGS_((Tcl_Channel chan, Tcl_DString * dsPtr)); /* 169 */ - int (*tcl_GetsObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 170 */ - int (*tcl_GetServiceMode) _ANSI_ARGS_((void)); /* 171 */ - Tcl_Interp * (*tcl_GetSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName)); /* 172 */ - Tcl_Channel (*tcl_GetStdChannel) _ANSI_ARGS_((int type)); /* 173 */ - CONST84_RETURN char * (*tcl_GetStringResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 174 */ - CONST84_RETURN char * (*tcl_GetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 175 */ - CONST84_RETURN char * (*tcl_GetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 176 */ - int (*tcl_GlobalEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command)); /* 177 */ - int (*tcl_GlobalEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 178 */ - int (*tcl_HideCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST char * hiddenCmdToken)); /* 179 */ - int (*tcl_Init) _ANSI_ARGS_((Tcl_Interp * interp)); /* 180 */ - void (*tcl_InitHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType)); /* 181 */ - int (*tcl_InputBlocked) _ANSI_ARGS_((Tcl_Channel chan)); /* 182 */ - int (*tcl_InputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 183 */ - int (*tcl_InterpDeleted) _ANSI_ARGS_((Tcl_Interp * interp)); /* 184 */ - int (*tcl_IsSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 185 */ - char * (*tcl_JoinPath) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv, Tcl_DString * resultPtr)); /* 186 */ - int (*tcl_LinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, char * addr, int type)); /* 187 */ - void *reserved188; - Tcl_Channel (*tcl_MakeFileChannel) _ANSI_ARGS_((ClientData handle, int mode)); /* 189 */ - int (*tcl_MakeSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 190 */ - Tcl_Channel (*tcl_MakeTcpClientChannel) _ANSI_ARGS_((ClientData tcpSocket)); /* 191 */ - char * (*tcl_Merge) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 192 */ - Tcl_HashEntry * (*tcl_NextHashEntry) _ANSI_ARGS_((Tcl_HashSearch * searchPtr)); /* 193 */ - void (*tcl_NotifyChannel) _ANSI_ARGS_((Tcl_Channel channel, int mask)); /* 194 */ - Tcl_Obj * (*tcl_ObjGetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, int flags)); /* 195 */ - Tcl_Obj * (*tcl_ObjSetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, Tcl_Obj * newValuePtr, int flags)); /* 196 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved197; -#endif /* MAC_TCL */ - Tcl_Channel (*tcl_OpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName, CONST char * modeString, int permissions)); /* 198 */ - Tcl_Channel (*tcl_OpenTcpClient) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * address, CONST char * myaddr, int myport, int async)); /* 199 */ - Tcl_Channel (*tcl_OpenTcpServer) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * host, Tcl_TcpAcceptProc * acceptProc, ClientData callbackData)); /* 200 */ - void (*tcl_Preserve) _ANSI_ARGS_((ClientData data)); /* 201 */ - void (*tcl_PrintDouble) _ANSI_ARGS_((Tcl_Interp * interp, double value, char * dst)); /* 202 */ - int (*tcl_PutEnv) _ANSI_ARGS_((CONST char * string)); /* 203 */ - CONST84_RETURN char * (*tcl_PosixError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 204 */ - void (*tcl_QueueEvent) _ANSI_ARGS_((Tcl_Event * evPtr, Tcl_QueuePosition position)); /* 205 */ - int (*tcl_Read) _ANSI_ARGS_((Tcl_Channel chan, char * bufPtr, int toRead)); /* 206 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved207; -#endif /* MAC_TCL */ - int (*tcl_RecordAndEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmd, int flags)); /* 208 */ - int (*tcl_RecordAndEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * cmdPtr, int flags)); /* 209 */ - void (*tcl_RegisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 210 */ - void (*tcl_RegisterObjType) _ANSI_ARGS_((Tcl_ObjType * typePtr)); /* 211 */ - Tcl_RegExp (*tcl_RegExpCompile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 212 */ - int (*tcl_RegExpExec) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, CONST char * str, CONST char * start)); /* 213 */ - int (*tcl_RegExpMatch) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST char * pattern)); /* 214 */ - void (*tcl_RegExpRange) _ANSI_ARGS_((Tcl_RegExp regexp, int index, CONST84 char ** startPtr, CONST84 char ** endPtr)); /* 215 */ - void (*tcl_Release) _ANSI_ARGS_((ClientData clientData)); /* 216 */ - void (*tcl_ResetResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 217 */ - int (*tcl_ScanElement) _ANSI_ARGS_((CONST char * str, int * flagPtr)); /* 218 */ - int (*tcl_ScanCountedElement) _ANSI_ARGS_((CONST char * str, int length, int * flagPtr)); /* 219 */ - int (*tcl_SeekOld) _ANSI_ARGS_((Tcl_Channel chan, int offset, int mode)); /* 220 */ - int (*tcl_ServiceAll) _ANSI_ARGS_((void)); /* 221 */ - int (*tcl_ServiceEvent) _ANSI_ARGS_((int flags)); /* 222 */ - void (*tcl_SetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 223 */ - void (*tcl_SetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan, int sz)); /* 224 */ - int (*tcl_SetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, CONST char * newValue)); /* 225 */ - int (*tcl_SetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST Tcl_CmdInfo * infoPtr)); /* 226 */ - void (*tcl_SetErrno) _ANSI_ARGS_((int err)); /* 227 */ - void (*tcl_SetErrorCode) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 228 */ - void (*tcl_SetMaxBlockTime) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 229 */ - void (*tcl_SetPanicProc) _ANSI_ARGS_((Tcl_PanicProc * panicProc)); /* 230 */ - int (*tcl_SetRecursionLimit) _ANSI_ARGS_((Tcl_Interp * interp, int depth)); /* 231 */ - void (*tcl_SetResult) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tcl_FreeProc * freeProc)); /* 232 */ - int (*tcl_SetServiceMode) _ANSI_ARGS_((int mode)); /* 233 */ - void (*tcl_SetObjErrorCode) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * errorObjPtr)); /* 234 */ - void (*tcl_SetObjResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * resultObjPtr)); /* 235 */ - void (*tcl_SetStdChannel) _ANSI_ARGS_((Tcl_Channel channel, int type)); /* 236 */ - CONST84_RETURN char * (*tcl_SetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, CONST char * newValue, int flags)); /* 237 */ - CONST84_RETURN char * (*tcl_SetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, CONST char * newValue, int flags)); /* 238 */ - CONST84_RETURN char * (*tcl_SignalId) _ANSI_ARGS_((int sig)); /* 239 */ - CONST84_RETURN char * (*tcl_SignalMsg) _ANSI_ARGS_((int sig)); /* 240 */ - void (*tcl_SourceRCFile) _ANSI_ARGS_((Tcl_Interp * interp)); /* 241 */ - int (*tcl_SplitList) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int * argcPtr, CONST84 char *** argvPtr)); /* 242 */ - void (*tcl_SplitPath) _ANSI_ARGS_((CONST char * path, int * argcPtr, CONST84 char *** argvPtr)); /* 243 */ - void (*tcl_StaticPackage) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pkgName, Tcl_PackageInitProc * initProc, Tcl_PackageInitProc * safeInitProc)); /* 244 */ - int (*tcl_StringMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern)); /* 245 */ - int (*tcl_TellOld) _ANSI_ARGS_((Tcl_Channel chan)); /* 246 */ - int (*tcl_TraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 247 */ - int (*tcl_TraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 248 */ - char * (*tcl_TranslateFileName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_DString * bufferPtr)); /* 249 */ - int (*tcl_Ungets) _ANSI_ARGS_((Tcl_Channel chan, CONST char * str, int len, int atHead)); /* 250 */ - void (*tcl_UnlinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 251 */ - int (*tcl_UnregisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 252 */ - int (*tcl_UnsetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 253 */ - int (*tcl_UnsetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 254 */ - void (*tcl_UntraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 255 */ - void (*tcl_UntraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 256 */ - void (*tcl_UpdateLinkedVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 257 */ - int (*tcl_UpVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * varName, CONST char * localName, int flags)); /* 258 */ - int (*tcl_UpVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * part1, CONST char * part2, CONST char * localName, int flags)); /* 259 */ - int (*tcl_VarEval) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 260 */ - ClientData (*tcl_VarTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 261 */ - ClientData (*tcl_VarTraceInfo2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 262 */ - int (*tcl_Write) _ANSI_ARGS_((Tcl_Channel chan, CONST char * s, int slen)); /* 263 */ - void (*tcl_WrongNumArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], CONST char * message)); /* 264 */ - int (*tcl_DumpActiveMemory) _ANSI_ARGS_((CONST char * fileName)); /* 265 */ - void (*tcl_ValidateAllMemory) _ANSI_ARGS_((CONST char * file, int line)); /* 266 */ - void (*tcl_AppendResultVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 267 */ - void (*tcl_AppendStringsToObjVA) _ANSI_ARGS_((Tcl_Obj * objPtr, va_list argList)); /* 268 */ - CONST84_RETURN char * (*tcl_HashStats) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 269 */ - CONST84_RETURN char * (*tcl_ParseVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST84 char ** termPtr)); /* 270 */ - CONST84_RETURN char * (*tcl_PkgPresent) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 271 */ - CONST84_RETURN char * (*tcl_PkgPresentEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 272 */ - int (*tcl_PkgProvide) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version)); /* 273 */ - CONST84_RETURN char * (*tcl_PkgRequire) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 274 */ - void (*tcl_SetErrorCodeVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 275 */ - int (*tcl_VarEvalVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 276 */ - Tcl_Pid (*tcl_WaitPid) _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, int options)); /* 277 */ - void (*tcl_PanicVA) _ANSI_ARGS_((CONST char * format, va_list argList)); /* 278 */ - void (*tcl_GetVersion) _ANSI_ARGS_((int * major, int * minor, int * patchLevel, int * type)); /* 279 */ - void (*tcl_InitMemory) _ANSI_ARGS_((Tcl_Interp * interp)); /* 280 */ - Tcl_Channel (*tcl_StackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_ChannelType * typePtr, ClientData instanceData, int mask, Tcl_Channel prevChan)); /* 281 */ - int (*tcl_UnstackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 282 */ - Tcl_Channel (*tcl_GetStackedChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 283 */ - void (*tcl_SetMainLoop) _ANSI_ARGS_((Tcl_MainLoopProc * proc)); /* 284 */ - void *reserved285; - void (*tcl_AppendObjToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_Obj * appendObjPtr)); /* 286 */ - Tcl_Encoding (*tcl_CreateEncoding) _ANSI_ARGS_((Tcl_EncodingType * typePtr)); /* 287 */ - void (*tcl_CreateThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 288 */ - void (*tcl_DeleteThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 289 */ - void (*tcl_DiscardResult) _ANSI_ARGS_((Tcl_SavedResult * statePtr)); /* 290 */ - int (*tcl_EvalEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, int numBytes, int flags)); /* 291 */ - int (*tcl_EvalObjv) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 292 */ - int (*tcl_EvalObjEx) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 293 */ - void (*tcl_ExitThread) _ANSI_ARGS_((int status)); /* 294 */ - int (*tcl_ExternalToUtf) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 295 */ - char * (*tcl_ExternalToUtfDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 296 */ - void (*tcl_FinalizeThread) _ANSI_ARGS_((void)); /* 297 */ - void (*tcl_FinalizeNotifier) _ANSI_ARGS_((ClientData clientData)); /* 298 */ - void (*tcl_FreeEncoding) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 299 */ - Tcl_ThreadId (*tcl_GetCurrentThread) _ANSI_ARGS_((void)); /* 300 */ - Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */ - CONST84_RETURN char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */ - void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */ - int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST VOID * tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */ - VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */ - Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 306 */ - ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */ - void (*tcl_MutexLock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 308 */ - void (*tcl_MutexUnlock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 309 */ - void (*tcl_ConditionNotify) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 310 */ - void (*tcl_ConditionWait) _ANSI_ARGS_((Tcl_Condition * condPtr, Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); /* 311 */ - int (*tcl_NumUtfChars) _ANSI_ARGS_((CONST char * src, int len)); /* 312 */ - int (*tcl_ReadChars) _ANSI_ARGS_((Tcl_Channel channel, Tcl_Obj * objPtr, int charsToRead, int appendFlag)); /* 313 */ - void (*tcl_RestoreResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 314 */ - void (*tcl_SaveResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 315 */ - int (*tcl_SetSystemEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 316 */ - Tcl_Obj * (*tcl_SetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, Tcl_Obj * newValuePtr, int flags)); /* 317 */ - void (*tcl_ThreadAlert) _ANSI_ARGS_((Tcl_ThreadId threadId)); /* 318 */ - void (*tcl_ThreadQueueEvent) _ANSI_ARGS_((Tcl_ThreadId threadId, Tcl_Event* evPtr, Tcl_QueuePosition position)); /* 319 */ - Tcl_UniChar (*tcl_UniCharAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 320 */ - Tcl_UniChar (*tcl_UniCharToLower) _ANSI_ARGS_((int ch)); /* 321 */ - Tcl_UniChar (*tcl_UniCharToTitle) _ANSI_ARGS_((int ch)); /* 322 */ - Tcl_UniChar (*tcl_UniCharToUpper) _ANSI_ARGS_((int ch)); /* 323 */ - int (*tcl_UniCharToUtf) _ANSI_ARGS_((int ch, char * buf)); /* 324 */ - CONST84_RETURN char * (*tcl_UtfAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 325 */ - int (*tcl_UtfCharComplete) _ANSI_ARGS_((CONST char * src, int len)); /* 326 */ - int (*tcl_UtfBackslash) _ANSI_ARGS_((CONST char * src, int * readPtr, char * dst)); /* 327 */ - CONST84_RETURN char * (*tcl_UtfFindFirst) _ANSI_ARGS_((CONST char * src, int ch)); /* 328 */ - CONST84_RETURN char * (*tcl_UtfFindLast) _ANSI_ARGS_((CONST char * src, int ch)); /* 329 */ - CONST84_RETURN char * (*tcl_UtfNext) _ANSI_ARGS_((CONST char * src)); /* 330 */ - CONST84_RETURN char * (*tcl_UtfPrev) _ANSI_ARGS_((CONST char * src, CONST char * start)); /* 331 */ - int (*tcl_UtfToExternal) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 332 */ - char * (*tcl_UtfToExternalDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 333 */ - int (*tcl_UtfToLower) _ANSI_ARGS_((char * src)); /* 334 */ - int (*tcl_UtfToTitle) _ANSI_ARGS_((char * src)); /* 335 */ - int (*tcl_UtfToUniChar) _ANSI_ARGS_((CONST char * src, Tcl_UniChar * chPtr)); /* 336 */ - int (*tcl_UtfToUpper) _ANSI_ARGS_((char * src)); /* 337 */ - int (*tcl_WriteChars) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 338 */ - int (*tcl_WriteObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 339 */ - char * (*tcl_GetString) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 340 */ - CONST84_RETURN char * (*tcl_GetDefaultEncodingDir) _ANSI_ARGS_((void)); /* 341 */ - void (*tcl_SetDefaultEncodingDir) _ANSI_ARGS_((CONST char * path)); /* 342 */ - void (*tcl_AlertNotifier) _ANSI_ARGS_((ClientData clientData)); /* 343 */ - void (*tcl_ServiceModeHook) _ANSI_ARGS_((int mode)); /* 344 */ - int (*tcl_UniCharIsAlnum) _ANSI_ARGS_((int ch)); /* 345 */ - int (*tcl_UniCharIsAlpha) _ANSI_ARGS_((int ch)); /* 346 */ - int (*tcl_UniCharIsDigit) _ANSI_ARGS_((int ch)); /* 347 */ - int (*tcl_UniCharIsLower) _ANSI_ARGS_((int ch)); /* 348 */ - int (*tcl_UniCharIsSpace) _ANSI_ARGS_((int ch)); /* 349 */ - int (*tcl_UniCharIsUpper) _ANSI_ARGS_((int ch)); /* 350 */ - int (*tcl_UniCharIsWordChar) _ANSI_ARGS_((int ch)); /* 351 */ - int (*tcl_UniCharLen) _ANSI_ARGS_((CONST Tcl_UniChar * str)); /* 352 */ - int (*tcl_UniCharNcmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 353 */ - char * (*tcl_UniCharToUtfDString) _ANSI_ARGS_((CONST Tcl_UniChar * string, int numChars, Tcl_DString * dsPtr)); /* 354 */ - Tcl_UniChar * (*tcl_UtfToUniCharDString) _ANSI_ARGS_((CONST char * string, int length, Tcl_DString * dsPtr)); /* 355 */ - Tcl_RegExp (*tcl_GetRegExpFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * patObj, int flags)); /* 356 */ - Tcl_Obj * (*tcl_EvalTokens) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 357 */ - void (*tcl_FreeParse) _ANSI_ARGS_((Tcl_Parse * parsePtr)); /* 358 */ - void (*tcl_LogCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, CONST char * command, int length)); /* 359 */ - int (*tcl_ParseBraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 360 */ - int (*tcl_ParseCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, int nested, Tcl_Parse * parsePtr)); /* 361 */ - int (*tcl_ParseExpr) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr)); /* 362 */ - int (*tcl_ParseQuotedString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 363 */ - int (*tcl_ParseVarName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append)); /* 364 */ - char * (*tcl_GetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 365 */ - int (*tcl_Chdir) _ANSI_ARGS_((CONST char * dirName)); /* 366 */ - int (*tcl_Access) _ANSI_ARGS_((CONST char * path, int mode)); /* 367 */ - int (*tcl_Stat) _ANSI_ARGS_((CONST char * path, struct stat * bufPtr)); /* 368 */ - int (*tcl_UtfNcmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 369 */ - int (*tcl_UtfNcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 370 */ - int (*tcl_StringCaseMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern, int nocase)); /* 371 */ - int (*tcl_UniCharIsControl) _ANSI_ARGS_((int ch)); /* 372 */ - int (*tcl_UniCharIsGraph) _ANSI_ARGS_((int ch)); /* 373 */ - int (*tcl_UniCharIsPrint) _ANSI_ARGS_((int ch)); /* 374 */ - int (*tcl_UniCharIsPunct) _ANSI_ARGS_((int ch)); /* 375 */ - int (*tcl_RegExpExecObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, Tcl_Obj * objPtr, int offset, int nmatches, int flags)); /* 376 */ - void (*tcl_RegExpGetInfo) _ANSI_ARGS_((Tcl_RegExp regexp, Tcl_RegExpInfo * infoPtr)); /* 377 */ - Tcl_Obj * (*tcl_NewUnicodeObj) _ANSI_ARGS_((CONST Tcl_UniChar * unicode, int numChars)); /* 378 */ - void (*tcl_SetUnicodeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int numChars)); /* 379 */ - int (*tcl_GetCharLength) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 380 */ - Tcl_UniChar (*tcl_GetUniChar) _ANSI_ARGS_((Tcl_Obj * objPtr, int index)); /* 381 */ - Tcl_UniChar * (*tcl_GetUnicode) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 382 */ - Tcl_Obj * (*tcl_GetRange) _ANSI_ARGS_((Tcl_Obj * objPtr, int first, int last)); /* 383 */ - void (*tcl_AppendUnicodeToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int length)); /* 384 */ - int (*tcl_RegExpMatchObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * stringObj, Tcl_Obj * patternObj)); /* 385 */ - void (*tcl_SetNotifier) _ANSI_ARGS_((Tcl_NotifierProcs * notifierProcPtr)); /* 386 */ - Tcl_Mutex * (*tcl_GetAllocMutex) _ANSI_ARGS_((void)); /* 387 */ - int (*tcl_GetChannelNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 388 */ - int (*tcl_GetChannelNamesEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 389 */ - int (*tcl_ProcObjCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 390 */ - void (*tcl_ConditionFinalize) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 391 */ - void (*tcl_MutexFinalize) _ANSI_ARGS_((Tcl_Mutex * mutex)); /* 392 */ - int (*tcl_CreateThread) _ANSI_ARGS_((Tcl_ThreadId * idPtr, Tcl_ThreadCreateProc proc, ClientData clientData, int stackSize, int flags)); /* 393 */ - int (*tcl_ReadRaw) _ANSI_ARGS_((Tcl_Channel chan, char * dst, int bytesToRead)); /* 394 */ - int (*tcl_WriteRaw) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 395 */ - Tcl_Channel (*tcl_GetTopChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 396 */ - int (*tcl_ChannelBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 397 */ - CONST84_RETURN char * (*tcl_ChannelName) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 398 */ - Tcl_ChannelTypeVersion (*tcl_ChannelVersion) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 399 */ - Tcl_DriverBlockModeProc * (*tcl_ChannelBlockModeProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 400 */ - Tcl_DriverCloseProc * (*tcl_ChannelCloseProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 401 */ - Tcl_DriverClose2Proc * (*tcl_ChannelClose2Proc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 402 */ - Tcl_DriverInputProc * (*tcl_ChannelInputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 403 */ - Tcl_DriverOutputProc * (*tcl_ChannelOutputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 404 */ - Tcl_DriverSeekProc * (*tcl_ChannelSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 405 */ - Tcl_DriverSetOptionProc * (*tcl_ChannelSetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 406 */ - Tcl_DriverGetOptionProc * (*tcl_ChannelGetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 407 */ - Tcl_DriverWatchProc * (*tcl_ChannelWatchProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 408 */ - Tcl_DriverGetHandleProc * (*tcl_ChannelGetHandleProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 409 */ - Tcl_DriverFlushProc * (*tcl_ChannelFlushProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 410 */ - Tcl_DriverHandlerProc * (*tcl_ChannelHandlerProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 411 */ - int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 412 */ - int (*tcl_IsChannelShared) _ANSI_ARGS_((Tcl_Channel channel)); /* 413 */ - int (*tcl_IsChannelRegistered) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 414 */ - void (*tcl_CutChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 415 */ - void (*tcl_SpliceChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 416 */ - void (*tcl_ClearChannelHandlers) _ANSI_ARGS_((Tcl_Channel channel)); /* 417 */ - int (*tcl_IsChannelExisting) _ANSI_ARGS_((CONST char* channelName)); /* 418 */ - int (*tcl_UniCharNcasecmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 419 */ - int (*tcl_UniCharCaseMatch) _ANSI_ARGS_((CONST Tcl_UniChar * ustr, CONST Tcl_UniChar * pattern, int nocase)); /* 420 */ - Tcl_HashEntry * (*tcl_FindHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key)); /* 421 */ - Tcl_HashEntry * (*tcl_CreateHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key, int * newPtr)); /* 422 */ - void (*tcl_InitCustomHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType, Tcl_HashKeyType * typePtr)); /* 423 */ - void (*tcl_InitObjHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 424 */ - ClientData (*tcl_CommandTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * procPtr, ClientData prevClientData)); /* 425 */ - int (*tcl_TraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 426 */ - void (*tcl_UntraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 427 */ - char * (*tcl_AttemptAlloc) _ANSI_ARGS_((unsigned int size)); /* 428 */ - char * (*tcl_AttemptDbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 429 */ - char * (*tcl_AttemptRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 430 */ - char * (*tcl_AttemptDbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 431 */ - int (*tcl_AttemptSetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 432 */ - Tcl_ThreadId (*tcl_GetChannelThread) _ANSI_ARGS_((Tcl_Channel channel)); /* 433 */ - Tcl_UniChar * (*tcl_GetUnicodeFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 434 */ - int (*tcl_GetMathFuncInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int * numArgsPtr, Tcl_ValueType ** argTypesPtr, Tcl_MathProc ** procPtr, ClientData * clientDataPtr)); /* 435 */ - Tcl_Obj * (*tcl_ListMathFuncs) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 436 */ - Tcl_Obj * (*tcl_SubstObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 437 */ - int (*tcl_DetachChannel) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 438 */ - int (*tcl_IsStandardChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 439 */ - int (*tcl_FSCopyFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 440 */ - int (*tcl_FSCopyDirectory) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, Tcl_Obj ** errorPtr)); /* 441 */ - int (*tcl_FSCreateDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 442 */ - int (*tcl_FSDeleteFile) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 443 */ - int (*tcl_FSLoadFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * sym1, CONST char * sym2, Tcl_PackageInitProc ** proc1Ptr, Tcl_PackageInitProc ** proc2Ptr, Tcl_LoadHandle * handlePtr, Tcl_FSUnloadFileProc ** unloadProcPtr)); /* 444 */ - int (*tcl_FSMatchInDirectory) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * result, Tcl_Obj * pathPtr, CONST char * pattern, Tcl_GlobTypeData * types)); /* 445 */ - Tcl_Obj * (*tcl_FSLink) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj * toPtr, int linkAction)); /* 446 */ - int (*tcl_FSRemoveDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr, int recursive, Tcl_Obj ** errorPtr)); /* 447 */ - int (*tcl_FSRenameFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 448 */ - int (*tcl_FSLstat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 449 */ - int (*tcl_FSUtime) _ANSI_ARGS_((Tcl_Obj * pathPtr, struct utimbuf * tval)); /* 450 */ - int (*tcl_FSFileAttrsGet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 451 */ - int (*tcl_FSFileAttrsSet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj * objPtr)); /* 452 */ - CONST char ** (*tcl_FSFileAttrStrings) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 453 */ - int (*tcl_FSStat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 454 */ - int (*tcl_FSAccess) _ANSI_ARGS_((Tcl_Obj * pathPtr, int mode)); /* 455 */ - Tcl_Channel (*tcl_FSOpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * modeString, int permissions)); /* 456 */ - Tcl_Obj* (*tcl_FSGetCwd) _ANSI_ARGS_((Tcl_Interp * interp)); /* 457 */ - int (*tcl_FSChdir) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 458 */ - int (*tcl_FSConvertToPathType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr)); /* 459 */ - Tcl_Obj* (*tcl_FSJoinPath) _ANSI_ARGS_((Tcl_Obj * listObj, int elements)); /* 460 */ - Tcl_Obj* (*tcl_FSSplitPath) _ANSI_ARGS_((Tcl_Obj* pathPtr, int * lenPtr)); /* 461 */ - int (*tcl_FSEqualPaths) _ANSI_ARGS_((Tcl_Obj* firstPtr, Tcl_Obj* secondPtr)); /* 462 */ - Tcl_Obj* (*tcl_FSGetNormalizedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); /* 463 */ - Tcl_Obj* (*tcl_FSJoinToPath) _ANSI_ARGS_((Tcl_Obj * basePtr, int objc, Tcl_Obj *CONST objv[])); /* 464 */ - ClientData (*tcl_FSGetInternalRep) _ANSI_ARGS_((Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); /* 465 */ - Tcl_Obj* (*tcl_FSGetTranslatedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 466 */ - int (*tcl_FSEvalFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * fileName)); /* 467 */ - Tcl_Obj* (*tcl_FSNewNativePath) _ANSI_ARGS_((Tcl_Filesystem* fromFilesystem, ClientData clientData)); /* 468 */ - CONST char* (*tcl_FSGetNativePath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 469 */ - Tcl_Obj* (*tcl_FSFileSystemInfo) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 470 */ - Tcl_Obj* (*tcl_FSPathSeparator) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 471 */ - Tcl_Obj* (*tcl_FSListVolumes) _ANSI_ARGS_((void)); /* 472 */ - int (*tcl_FSRegister) _ANSI_ARGS_((ClientData clientData, Tcl_Filesystem * fsPtr)); /* 473 */ - int (*tcl_FSUnregister) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 474 */ - ClientData (*tcl_FSData) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 475 */ - CONST char* (*tcl_FSGetTranslatedStringPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 476 */ - Tcl_Filesystem* (*tcl_FSGetFileSystemForPath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 477 */ - Tcl_PathType (*tcl_FSGetPathType) _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); /* 478 */ - int (*tcl_OutputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 479 */ - void (*tcl_FSMountsChanged) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 480 */ - int (*tcl_EvalTokensStandard) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 481 */ - void (*tcl_GetTime) _ANSI_ARGS_((Tcl_Time* timeBuf)); /* 482 */ - Tcl_Trace (*tcl_CreateObjTrace) _ANSI_ARGS_((Tcl_Interp* interp, int level, int flags, Tcl_CmdObjTraceProc* objProc, ClientData clientData, Tcl_CmdObjTraceDeleteProc* delProc)); /* 483 */ - int (*tcl_GetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, Tcl_CmdInfo* infoPtr)); /* 484 */ - int (*tcl_SetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, CONST Tcl_CmdInfo* infoPtr)); /* 485 */ - Tcl_Obj * (*tcl_DbNewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue, CONST char * file, int line)); /* 486 */ - int (*tcl_GetWideIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_WideInt * widePtr)); /* 487 */ - Tcl_Obj * (*tcl_NewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue)); /* 488 */ - void (*tcl_SetWideIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_WideInt wideValue)); /* 489 */ - Tcl_StatBuf * (*tcl_AllocStatBuf) _ANSI_ARGS_((void)); /* 490 */ - Tcl_WideInt (*tcl_Seek) _ANSI_ARGS_((Tcl_Channel chan, Tcl_WideInt offset, int mode)); /* 491 */ - Tcl_WideInt (*tcl_Tell) _ANSI_ARGS_((Tcl_Channel chan)); /* 492 */ - Tcl_DriverWideSeekProc * (*tcl_ChannelWideSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 493 */ -} TclStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclStubs *tclStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#ifndef Tcl_PkgProvideEx -#define Tcl_PkgProvideEx \ - (tclStubsPtr->tcl_PkgProvideEx) /* 0 */ -#endif -#ifndef Tcl_PkgRequireEx -#define Tcl_PkgRequireEx \ - (tclStubsPtr->tcl_PkgRequireEx) /* 1 */ -#endif -#ifndef Tcl_Panic -#define Tcl_Panic \ - (tclStubsPtr->tcl_Panic) /* 2 */ -#endif -#ifndef Tcl_Alloc -#define Tcl_Alloc \ - (tclStubsPtr->tcl_Alloc) /* 3 */ -#endif -#ifndef Tcl_Free -#define Tcl_Free \ - (tclStubsPtr->tcl_Free) /* 4 */ -#endif -#ifndef Tcl_Realloc -#define Tcl_Realloc \ - (tclStubsPtr->tcl_Realloc) /* 5 */ -#endif -#ifndef Tcl_DbCkalloc -#define Tcl_DbCkalloc \ - (tclStubsPtr->tcl_DbCkalloc) /* 6 */ -#endif -#ifndef Tcl_DbCkfree -#define Tcl_DbCkfree \ - (tclStubsPtr->tcl_DbCkfree) /* 7 */ -#endif -#ifndef Tcl_DbCkrealloc -#define Tcl_DbCkrealloc \ - (tclStubsPtr->tcl_DbCkrealloc) /* 8 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_CreateFileHandler -#define Tcl_CreateFileHandler \ - (tclStubsPtr->tcl_CreateFileHandler) /* 9 */ -#endif -#endif /* UNIX */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_DeleteFileHandler -#define Tcl_DeleteFileHandler \ - (tclStubsPtr->tcl_DeleteFileHandler) /* 10 */ -#endif -#endif /* UNIX */ -#ifndef Tcl_SetTimer -#define Tcl_SetTimer \ - (tclStubsPtr->tcl_SetTimer) /* 11 */ -#endif -#ifndef Tcl_Sleep -#define Tcl_Sleep \ - (tclStubsPtr->tcl_Sleep) /* 12 */ -#endif -#ifndef Tcl_WaitForEvent -#define Tcl_WaitForEvent \ - (tclStubsPtr->tcl_WaitForEvent) /* 13 */ -#endif -#ifndef Tcl_AppendAllObjTypes -#define Tcl_AppendAllObjTypes \ - (tclStubsPtr->tcl_AppendAllObjTypes) /* 14 */ -#endif -#ifndef Tcl_AppendStringsToObj -#define Tcl_AppendStringsToObj \ - (tclStubsPtr->tcl_AppendStringsToObj) /* 15 */ -#endif -#ifndef Tcl_AppendToObj -#define Tcl_AppendToObj \ - (tclStubsPtr->tcl_AppendToObj) /* 16 */ -#endif -#ifndef Tcl_ConcatObj -#define Tcl_ConcatObj \ - (tclStubsPtr->tcl_ConcatObj) /* 17 */ -#endif -#ifndef Tcl_ConvertToType -#define Tcl_ConvertToType \ - (tclStubsPtr->tcl_ConvertToType) /* 18 */ -#endif -#ifndef Tcl_DbDecrRefCount -#define Tcl_DbDecrRefCount \ - (tclStubsPtr->tcl_DbDecrRefCount) /* 19 */ -#endif -#ifndef Tcl_DbIncrRefCount -#define Tcl_DbIncrRefCount \ - (tclStubsPtr->tcl_DbIncrRefCount) /* 20 */ -#endif -#ifndef Tcl_DbIsShared -#define Tcl_DbIsShared \ - (tclStubsPtr->tcl_DbIsShared) /* 21 */ -#endif -#ifndef Tcl_DbNewBooleanObj -#define Tcl_DbNewBooleanObj \ - (tclStubsPtr->tcl_DbNewBooleanObj) /* 22 */ -#endif -#ifndef Tcl_DbNewByteArrayObj -#define Tcl_DbNewByteArrayObj \ - (tclStubsPtr->tcl_DbNewByteArrayObj) /* 23 */ -#endif -#ifndef Tcl_DbNewDoubleObj -#define Tcl_DbNewDoubleObj \ - (tclStubsPtr->tcl_DbNewDoubleObj) /* 24 */ -#endif -#ifndef Tcl_DbNewListObj -#define Tcl_DbNewListObj \ - (tclStubsPtr->tcl_DbNewListObj) /* 25 */ -#endif -#ifndef Tcl_DbNewLongObj -#define Tcl_DbNewLongObj \ - (tclStubsPtr->tcl_DbNewLongObj) /* 26 */ -#endif -#ifndef Tcl_DbNewObj -#define Tcl_DbNewObj \ - (tclStubsPtr->tcl_DbNewObj) /* 27 */ -#endif -#ifndef Tcl_DbNewStringObj -#define Tcl_DbNewStringObj \ - (tclStubsPtr->tcl_DbNewStringObj) /* 28 */ -#endif -#ifndef Tcl_DuplicateObj -#define Tcl_DuplicateObj \ - (tclStubsPtr->tcl_DuplicateObj) /* 29 */ -#endif -#ifndef TclFreeObj -#define TclFreeObj \ - (tclStubsPtr->tclFreeObj) /* 30 */ -#endif -#ifndef Tcl_GetBoolean -#define Tcl_GetBoolean \ - (tclStubsPtr->tcl_GetBoolean) /* 31 */ -#endif -#ifndef Tcl_GetBooleanFromObj -#define Tcl_GetBooleanFromObj \ - (tclStubsPtr->tcl_GetBooleanFromObj) /* 32 */ -#endif -#ifndef Tcl_GetByteArrayFromObj -#define Tcl_GetByteArrayFromObj \ - (tclStubsPtr->tcl_GetByteArrayFromObj) /* 33 */ -#endif -#ifndef Tcl_GetDouble -#define Tcl_GetDouble \ - (tclStubsPtr->tcl_GetDouble) /* 34 */ -#endif -#ifndef Tcl_GetDoubleFromObj -#define Tcl_GetDoubleFromObj \ - (tclStubsPtr->tcl_GetDoubleFromObj) /* 35 */ -#endif -#ifndef Tcl_GetIndexFromObj -#define Tcl_GetIndexFromObj \ - (tclStubsPtr->tcl_GetIndexFromObj) /* 36 */ -#endif -#ifndef Tcl_GetInt -#define Tcl_GetInt \ - (tclStubsPtr->tcl_GetInt) /* 37 */ -#endif -#ifndef Tcl_GetIntFromObj -#define Tcl_GetIntFromObj \ - (tclStubsPtr->tcl_GetIntFromObj) /* 38 */ -#endif -#ifndef Tcl_GetLongFromObj -#define Tcl_GetLongFromObj \ - (tclStubsPtr->tcl_GetLongFromObj) /* 39 */ -#endif -#ifndef Tcl_GetObjType -#define Tcl_GetObjType \ - (tclStubsPtr->tcl_GetObjType) /* 40 */ -#endif -#ifndef Tcl_GetStringFromObj -#define Tcl_GetStringFromObj \ - (tclStubsPtr->tcl_GetStringFromObj) /* 41 */ -#endif -#ifndef Tcl_InvalidateStringRep -#define Tcl_InvalidateStringRep \ - (tclStubsPtr->tcl_InvalidateStringRep) /* 42 */ -#endif -#ifndef Tcl_ListObjAppendList -#define Tcl_ListObjAppendList \ - (tclStubsPtr->tcl_ListObjAppendList) /* 43 */ -#endif -#ifndef Tcl_ListObjAppendElement -#define Tcl_ListObjAppendElement \ - (tclStubsPtr->tcl_ListObjAppendElement) /* 44 */ -#endif -#ifndef Tcl_ListObjGetElements -#define Tcl_ListObjGetElements \ - (tclStubsPtr->tcl_ListObjGetElements) /* 45 */ -#endif -#ifndef Tcl_ListObjIndex -#define Tcl_ListObjIndex \ - (tclStubsPtr->tcl_ListObjIndex) /* 46 */ -#endif -#ifndef Tcl_ListObjLength -#define Tcl_ListObjLength \ - (tclStubsPtr->tcl_ListObjLength) /* 47 */ -#endif -#ifndef Tcl_ListObjReplace -#define Tcl_ListObjReplace \ - (tclStubsPtr->tcl_ListObjReplace) /* 48 */ -#endif -#ifndef Tcl_NewBooleanObj -#define Tcl_NewBooleanObj \ - (tclStubsPtr->tcl_NewBooleanObj) /* 49 */ -#endif -#ifndef Tcl_NewByteArrayObj -#define Tcl_NewByteArrayObj \ - (tclStubsPtr->tcl_NewByteArrayObj) /* 50 */ -#endif -#ifndef Tcl_NewDoubleObj -#define Tcl_NewDoubleObj \ - (tclStubsPtr->tcl_NewDoubleObj) /* 51 */ -#endif -#ifndef Tcl_NewIntObj -#define Tcl_NewIntObj \ - (tclStubsPtr->tcl_NewIntObj) /* 52 */ -#endif -#ifndef Tcl_NewListObj -#define Tcl_NewListObj \ - (tclStubsPtr->tcl_NewListObj) /* 53 */ -#endif -#ifndef Tcl_NewLongObj -#define Tcl_NewLongObj \ - (tclStubsPtr->tcl_NewLongObj) /* 54 */ -#endif -#ifndef Tcl_NewObj -#define Tcl_NewObj \ - (tclStubsPtr->tcl_NewObj) /* 55 */ -#endif -#ifndef Tcl_NewStringObj -#define Tcl_NewStringObj \ - (tclStubsPtr->tcl_NewStringObj) /* 56 */ -#endif -#ifndef Tcl_SetBooleanObj -#define Tcl_SetBooleanObj \ - (tclStubsPtr->tcl_SetBooleanObj) /* 57 */ -#endif -#ifndef Tcl_SetByteArrayLength -#define Tcl_SetByteArrayLength \ - (tclStubsPtr->tcl_SetByteArrayLength) /* 58 */ -#endif -#ifndef Tcl_SetByteArrayObj -#define Tcl_SetByteArrayObj \ - (tclStubsPtr->tcl_SetByteArrayObj) /* 59 */ -#endif -#ifndef Tcl_SetDoubleObj -#define Tcl_SetDoubleObj \ - (tclStubsPtr->tcl_SetDoubleObj) /* 60 */ -#endif -#ifndef Tcl_SetIntObj -#define Tcl_SetIntObj \ - (tclStubsPtr->tcl_SetIntObj) /* 61 */ -#endif -#ifndef Tcl_SetListObj -#define Tcl_SetListObj \ - (tclStubsPtr->tcl_SetListObj) /* 62 */ -#endif -#ifndef Tcl_SetLongObj -#define Tcl_SetLongObj \ - (tclStubsPtr->tcl_SetLongObj) /* 63 */ -#endif -#ifndef Tcl_SetObjLength -#define Tcl_SetObjLength \ - (tclStubsPtr->tcl_SetObjLength) /* 64 */ -#endif -#ifndef Tcl_SetStringObj -#define Tcl_SetStringObj \ - (tclStubsPtr->tcl_SetStringObj) /* 65 */ -#endif -#ifndef Tcl_AddErrorInfo -#define Tcl_AddErrorInfo \ - (tclStubsPtr->tcl_AddErrorInfo) /* 66 */ -#endif -#ifndef Tcl_AddObjErrorInfo -#define Tcl_AddObjErrorInfo \ - (tclStubsPtr->tcl_AddObjErrorInfo) /* 67 */ -#endif -#ifndef Tcl_AllowExceptions -#define Tcl_AllowExceptions \ - (tclStubsPtr->tcl_AllowExceptions) /* 68 */ -#endif -#ifndef Tcl_AppendElement -#define Tcl_AppendElement \ - (tclStubsPtr->tcl_AppendElement) /* 69 */ -#endif -#ifndef Tcl_AppendResult -#define Tcl_AppendResult \ - (tclStubsPtr->tcl_AppendResult) /* 70 */ -#endif -#ifndef Tcl_AsyncCreate -#define Tcl_AsyncCreate \ - (tclStubsPtr->tcl_AsyncCreate) /* 71 */ -#endif -#ifndef Tcl_AsyncDelete -#define Tcl_AsyncDelete \ - (tclStubsPtr->tcl_AsyncDelete) /* 72 */ -#endif -#ifndef Tcl_AsyncInvoke -#define Tcl_AsyncInvoke \ - (tclStubsPtr->tcl_AsyncInvoke) /* 73 */ -#endif -#ifndef Tcl_AsyncMark -#define Tcl_AsyncMark \ - (tclStubsPtr->tcl_AsyncMark) /* 74 */ -#endif -#ifndef Tcl_AsyncReady -#define Tcl_AsyncReady \ - (tclStubsPtr->tcl_AsyncReady) /* 75 */ -#endif -#ifndef Tcl_BackgroundError -#define Tcl_BackgroundError \ - (tclStubsPtr->tcl_BackgroundError) /* 76 */ -#endif -#ifndef Tcl_Backslash -#define Tcl_Backslash \ - (tclStubsPtr->tcl_Backslash) /* 77 */ -#endif -#ifndef Tcl_BadChannelOption -#define Tcl_BadChannelOption \ - (tclStubsPtr->tcl_BadChannelOption) /* 78 */ -#endif -#ifndef Tcl_CallWhenDeleted -#define Tcl_CallWhenDeleted \ - (tclStubsPtr->tcl_CallWhenDeleted) /* 79 */ -#endif -#ifndef Tcl_CancelIdleCall -#define Tcl_CancelIdleCall \ - (tclStubsPtr->tcl_CancelIdleCall) /* 80 */ -#endif -#ifndef Tcl_Close -#define Tcl_Close \ - (tclStubsPtr->tcl_Close) /* 81 */ -#endif -#ifndef Tcl_CommandComplete -#define Tcl_CommandComplete \ - (tclStubsPtr->tcl_CommandComplete) /* 82 */ -#endif -#ifndef Tcl_Concat -#define Tcl_Concat \ - (tclStubsPtr->tcl_Concat) /* 83 */ -#endif -#ifndef Tcl_ConvertElement -#define Tcl_ConvertElement \ - (tclStubsPtr->tcl_ConvertElement) /* 84 */ -#endif -#ifndef Tcl_ConvertCountedElement -#define Tcl_ConvertCountedElement \ - (tclStubsPtr->tcl_ConvertCountedElement) /* 85 */ -#endif -#ifndef Tcl_CreateAlias -#define Tcl_CreateAlias \ - (tclStubsPtr->tcl_CreateAlias) /* 86 */ -#endif -#ifndef Tcl_CreateAliasObj -#define Tcl_CreateAliasObj \ - (tclStubsPtr->tcl_CreateAliasObj) /* 87 */ -#endif -#ifndef Tcl_CreateChannel -#define Tcl_CreateChannel \ - (tclStubsPtr->tcl_CreateChannel) /* 88 */ -#endif -#ifndef Tcl_CreateChannelHandler -#define Tcl_CreateChannelHandler \ - (tclStubsPtr->tcl_CreateChannelHandler) /* 89 */ -#endif -#ifndef Tcl_CreateCloseHandler -#define Tcl_CreateCloseHandler \ - (tclStubsPtr->tcl_CreateCloseHandler) /* 90 */ -#endif -#ifndef Tcl_CreateCommand -#define Tcl_CreateCommand \ - (tclStubsPtr->tcl_CreateCommand) /* 91 */ -#endif -#ifndef Tcl_CreateEventSource -#define Tcl_CreateEventSource \ - (tclStubsPtr->tcl_CreateEventSource) /* 92 */ -#endif -#ifndef Tcl_CreateExitHandler -#define Tcl_CreateExitHandler \ - (tclStubsPtr->tcl_CreateExitHandler) /* 93 */ -#endif -#ifndef Tcl_CreateInterp -#define Tcl_CreateInterp \ - (tclStubsPtr->tcl_CreateInterp) /* 94 */ -#endif -#ifndef Tcl_CreateMathFunc -#define Tcl_CreateMathFunc \ - (tclStubsPtr->tcl_CreateMathFunc) /* 95 */ -#endif -#ifndef Tcl_CreateObjCommand -#define Tcl_CreateObjCommand \ - (tclStubsPtr->tcl_CreateObjCommand) /* 96 */ -#endif -#ifndef Tcl_CreateSlave -#define Tcl_CreateSlave \ - (tclStubsPtr->tcl_CreateSlave) /* 97 */ -#endif -#ifndef Tcl_CreateTimerHandler -#define Tcl_CreateTimerHandler \ - (tclStubsPtr->tcl_CreateTimerHandler) /* 98 */ -#endif -#ifndef Tcl_CreateTrace -#define Tcl_CreateTrace \ - (tclStubsPtr->tcl_CreateTrace) /* 99 */ -#endif -#ifndef Tcl_DeleteAssocData -#define Tcl_DeleteAssocData \ - (tclStubsPtr->tcl_DeleteAssocData) /* 100 */ -#endif -#ifndef Tcl_DeleteChannelHandler -#define Tcl_DeleteChannelHandler \ - (tclStubsPtr->tcl_DeleteChannelHandler) /* 101 */ -#endif -#ifndef Tcl_DeleteCloseHandler -#define Tcl_DeleteCloseHandler \ - (tclStubsPtr->tcl_DeleteCloseHandler) /* 102 */ -#endif -#ifndef Tcl_DeleteCommand -#define Tcl_DeleteCommand \ - (tclStubsPtr->tcl_DeleteCommand) /* 103 */ -#endif -#ifndef Tcl_DeleteCommandFromToken -#define Tcl_DeleteCommandFromToken \ - (tclStubsPtr->tcl_DeleteCommandFromToken) /* 104 */ -#endif -#ifndef Tcl_DeleteEvents -#define Tcl_DeleteEvents \ - (tclStubsPtr->tcl_DeleteEvents) /* 105 */ -#endif -#ifndef Tcl_DeleteEventSource -#define Tcl_DeleteEventSource \ - (tclStubsPtr->tcl_DeleteEventSource) /* 106 */ -#endif -#ifndef Tcl_DeleteExitHandler -#define Tcl_DeleteExitHandler \ - (tclStubsPtr->tcl_DeleteExitHandler) /* 107 */ -#endif -#ifndef Tcl_DeleteHashEntry -#define Tcl_DeleteHashEntry \ - (tclStubsPtr->tcl_DeleteHashEntry) /* 108 */ -#endif -#ifndef Tcl_DeleteHashTable -#define Tcl_DeleteHashTable \ - (tclStubsPtr->tcl_DeleteHashTable) /* 109 */ -#endif -#ifndef Tcl_DeleteInterp -#define Tcl_DeleteInterp \ - (tclStubsPtr->tcl_DeleteInterp) /* 110 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_DetachPids -#define Tcl_DetachPids \ - (tclStubsPtr->tcl_DetachPids) /* 111 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_DetachPids -#define Tcl_DetachPids \ - (tclStubsPtr->tcl_DetachPids) /* 111 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_DeleteTimerHandler -#define Tcl_DeleteTimerHandler \ - (tclStubsPtr->tcl_DeleteTimerHandler) /* 112 */ -#endif -#ifndef Tcl_DeleteTrace -#define Tcl_DeleteTrace \ - (tclStubsPtr->tcl_DeleteTrace) /* 113 */ -#endif -#ifndef Tcl_DontCallWhenDeleted -#define Tcl_DontCallWhenDeleted \ - (tclStubsPtr->tcl_DontCallWhenDeleted) /* 114 */ -#endif -#ifndef Tcl_DoOneEvent -#define Tcl_DoOneEvent \ - (tclStubsPtr->tcl_DoOneEvent) /* 115 */ -#endif -#ifndef Tcl_DoWhenIdle -#define Tcl_DoWhenIdle \ - (tclStubsPtr->tcl_DoWhenIdle) /* 116 */ -#endif -#ifndef Tcl_DStringAppend -#define Tcl_DStringAppend \ - (tclStubsPtr->tcl_DStringAppend) /* 117 */ -#endif -#ifndef Tcl_DStringAppendElement -#define Tcl_DStringAppendElement \ - (tclStubsPtr->tcl_DStringAppendElement) /* 118 */ -#endif -#ifndef Tcl_DStringEndSublist -#define Tcl_DStringEndSublist \ - (tclStubsPtr->tcl_DStringEndSublist) /* 119 */ -#endif -#ifndef Tcl_DStringFree -#define Tcl_DStringFree \ - (tclStubsPtr->tcl_DStringFree) /* 120 */ -#endif -#ifndef Tcl_DStringGetResult -#define Tcl_DStringGetResult \ - (tclStubsPtr->tcl_DStringGetResult) /* 121 */ -#endif -#ifndef Tcl_DStringInit -#define Tcl_DStringInit \ - (tclStubsPtr->tcl_DStringInit) /* 122 */ -#endif -#ifndef Tcl_DStringResult -#define Tcl_DStringResult \ - (tclStubsPtr->tcl_DStringResult) /* 123 */ -#endif -#ifndef Tcl_DStringSetLength -#define Tcl_DStringSetLength \ - (tclStubsPtr->tcl_DStringSetLength) /* 124 */ -#endif -#ifndef Tcl_DStringStartSublist -#define Tcl_DStringStartSublist \ - (tclStubsPtr->tcl_DStringStartSublist) /* 125 */ -#endif -#ifndef Tcl_Eof -#define Tcl_Eof \ - (tclStubsPtr->tcl_Eof) /* 126 */ -#endif -#ifndef Tcl_ErrnoId -#define Tcl_ErrnoId \ - (tclStubsPtr->tcl_ErrnoId) /* 127 */ -#endif -#ifndef Tcl_ErrnoMsg -#define Tcl_ErrnoMsg \ - (tclStubsPtr->tcl_ErrnoMsg) /* 128 */ -#endif -#ifndef Tcl_Eval -#define Tcl_Eval \ - (tclStubsPtr->tcl_Eval) /* 129 */ -#endif -#ifndef Tcl_EvalFile -#define Tcl_EvalFile \ - (tclStubsPtr->tcl_EvalFile) /* 130 */ -#endif -#ifndef Tcl_EvalObj -#define Tcl_EvalObj \ - (tclStubsPtr->tcl_EvalObj) /* 131 */ -#endif -#ifndef Tcl_EventuallyFree -#define Tcl_EventuallyFree \ - (tclStubsPtr->tcl_EventuallyFree) /* 132 */ -#endif -#ifndef Tcl_Exit -#define Tcl_Exit \ - (tclStubsPtr->tcl_Exit) /* 133 */ -#endif -#ifndef Tcl_ExposeCommand -#define Tcl_ExposeCommand \ - (tclStubsPtr->tcl_ExposeCommand) /* 134 */ -#endif -#ifndef Tcl_ExprBoolean -#define Tcl_ExprBoolean \ - (tclStubsPtr->tcl_ExprBoolean) /* 135 */ -#endif -#ifndef Tcl_ExprBooleanObj -#define Tcl_ExprBooleanObj \ - (tclStubsPtr->tcl_ExprBooleanObj) /* 136 */ -#endif -#ifndef Tcl_ExprDouble -#define Tcl_ExprDouble \ - (tclStubsPtr->tcl_ExprDouble) /* 137 */ -#endif -#ifndef Tcl_ExprDoubleObj -#define Tcl_ExprDoubleObj \ - (tclStubsPtr->tcl_ExprDoubleObj) /* 138 */ -#endif -#ifndef Tcl_ExprLong -#define Tcl_ExprLong \ - (tclStubsPtr->tcl_ExprLong) /* 139 */ -#endif -#ifndef Tcl_ExprLongObj -#define Tcl_ExprLongObj \ - (tclStubsPtr->tcl_ExprLongObj) /* 140 */ -#endif -#ifndef Tcl_ExprObj -#define Tcl_ExprObj \ - (tclStubsPtr->tcl_ExprObj) /* 141 */ -#endif -#ifndef Tcl_ExprString -#define Tcl_ExprString \ - (tclStubsPtr->tcl_ExprString) /* 142 */ -#endif -#ifndef Tcl_Finalize -#define Tcl_Finalize \ - (tclStubsPtr->tcl_Finalize) /* 143 */ -#endif -#ifndef Tcl_FindExecutable -#define Tcl_FindExecutable \ - (tclStubsPtr->tcl_FindExecutable) /* 144 */ -#endif -#ifndef Tcl_FirstHashEntry -#define Tcl_FirstHashEntry \ - (tclStubsPtr->tcl_FirstHashEntry) /* 145 */ -#endif -#ifndef Tcl_Flush -#define Tcl_Flush \ - (tclStubsPtr->tcl_Flush) /* 146 */ -#endif -#ifndef Tcl_FreeResult -#define Tcl_FreeResult \ - (tclStubsPtr->tcl_FreeResult) /* 147 */ -#endif -#ifndef Tcl_GetAlias -#define Tcl_GetAlias \ - (tclStubsPtr->tcl_GetAlias) /* 148 */ -#endif -#ifndef Tcl_GetAliasObj -#define Tcl_GetAliasObj \ - (tclStubsPtr->tcl_GetAliasObj) /* 149 */ -#endif -#ifndef Tcl_GetAssocData -#define Tcl_GetAssocData \ - (tclStubsPtr->tcl_GetAssocData) /* 150 */ -#endif -#ifndef Tcl_GetChannel -#define Tcl_GetChannel \ - (tclStubsPtr->tcl_GetChannel) /* 151 */ -#endif -#ifndef Tcl_GetChannelBufferSize -#define Tcl_GetChannelBufferSize \ - (tclStubsPtr->tcl_GetChannelBufferSize) /* 152 */ -#endif -#ifndef Tcl_GetChannelHandle -#define Tcl_GetChannelHandle \ - (tclStubsPtr->tcl_GetChannelHandle) /* 153 */ -#endif -#ifndef Tcl_GetChannelInstanceData -#define Tcl_GetChannelInstanceData \ - (tclStubsPtr->tcl_GetChannelInstanceData) /* 154 */ -#endif -#ifndef Tcl_GetChannelMode -#define Tcl_GetChannelMode \ - (tclStubsPtr->tcl_GetChannelMode) /* 155 */ -#endif -#ifndef Tcl_GetChannelName -#define Tcl_GetChannelName \ - (tclStubsPtr->tcl_GetChannelName) /* 156 */ -#endif -#ifndef Tcl_GetChannelOption -#define Tcl_GetChannelOption \ - (tclStubsPtr->tcl_GetChannelOption) /* 157 */ -#endif -#ifndef Tcl_GetChannelType -#define Tcl_GetChannelType \ - (tclStubsPtr->tcl_GetChannelType) /* 158 */ -#endif -#ifndef Tcl_GetCommandInfo -#define Tcl_GetCommandInfo \ - (tclStubsPtr->tcl_GetCommandInfo) /* 159 */ -#endif -#ifndef Tcl_GetCommandName -#define Tcl_GetCommandName \ - (tclStubsPtr->tcl_GetCommandName) /* 160 */ -#endif -#ifndef Tcl_GetErrno -#define Tcl_GetErrno \ - (tclStubsPtr->tcl_GetErrno) /* 161 */ -#endif -#ifndef Tcl_GetHostName -#define Tcl_GetHostName \ - (tclStubsPtr->tcl_GetHostName) /* 162 */ -#endif -#ifndef Tcl_GetInterpPath -#define Tcl_GetInterpPath \ - (tclStubsPtr->tcl_GetInterpPath) /* 163 */ -#endif -#ifndef Tcl_GetMaster -#define Tcl_GetMaster \ - (tclStubsPtr->tcl_GetMaster) /* 164 */ -#endif -#ifndef Tcl_GetNameOfExecutable -#define Tcl_GetNameOfExecutable \ - (tclStubsPtr->tcl_GetNameOfExecutable) /* 165 */ -#endif -#ifndef Tcl_GetObjResult -#define Tcl_GetObjResult \ - (tclStubsPtr->tcl_GetObjResult) /* 166 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_GetOpenFile -#define Tcl_GetOpenFile \ - (tclStubsPtr->tcl_GetOpenFile) /* 167 */ -#endif -#endif /* UNIX */ -#ifndef Tcl_GetPathType -#define Tcl_GetPathType \ - (tclStubsPtr->tcl_GetPathType) /* 168 */ -#endif -#ifndef Tcl_Gets -#define Tcl_Gets \ - (tclStubsPtr->tcl_Gets) /* 169 */ -#endif -#ifndef Tcl_GetsObj -#define Tcl_GetsObj \ - (tclStubsPtr->tcl_GetsObj) /* 170 */ -#endif -#ifndef Tcl_GetServiceMode -#define Tcl_GetServiceMode \ - (tclStubsPtr->tcl_GetServiceMode) /* 171 */ -#endif -#ifndef Tcl_GetSlave -#define Tcl_GetSlave \ - (tclStubsPtr->tcl_GetSlave) /* 172 */ -#endif -#ifndef Tcl_GetStdChannel -#define Tcl_GetStdChannel \ - (tclStubsPtr->tcl_GetStdChannel) /* 173 */ -#endif -#ifndef Tcl_GetStringResult -#define Tcl_GetStringResult \ - (tclStubsPtr->tcl_GetStringResult) /* 174 */ -#endif -#ifndef Tcl_GetVar -#define Tcl_GetVar \ - (tclStubsPtr->tcl_GetVar) /* 175 */ -#endif -#ifndef Tcl_GetVar2 -#define Tcl_GetVar2 \ - (tclStubsPtr->tcl_GetVar2) /* 176 */ -#endif -#ifndef Tcl_GlobalEval -#define Tcl_GlobalEval \ - (tclStubsPtr->tcl_GlobalEval) /* 177 */ -#endif -#ifndef Tcl_GlobalEvalObj -#define Tcl_GlobalEvalObj \ - (tclStubsPtr->tcl_GlobalEvalObj) /* 178 */ -#endif -#ifndef Tcl_HideCommand -#define Tcl_HideCommand \ - (tclStubsPtr->tcl_HideCommand) /* 179 */ -#endif -#ifndef Tcl_Init -#define Tcl_Init \ - (tclStubsPtr->tcl_Init) /* 180 */ -#endif -#ifndef Tcl_InitHashTable -#define Tcl_InitHashTable \ - (tclStubsPtr->tcl_InitHashTable) /* 181 */ -#endif -#ifndef Tcl_InputBlocked -#define Tcl_InputBlocked \ - (tclStubsPtr->tcl_InputBlocked) /* 182 */ -#endif -#ifndef Tcl_InputBuffered -#define Tcl_InputBuffered \ - (tclStubsPtr->tcl_InputBuffered) /* 183 */ -#endif -#ifndef Tcl_InterpDeleted -#define Tcl_InterpDeleted \ - (tclStubsPtr->tcl_InterpDeleted) /* 184 */ -#endif -#ifndef Tcl_IsSafe -#define Tcl_IsSafe \ - (tclStubsPtr->tcl_IsSafe) /* 185 */ -#endif -#ifndef Tcl_JoinPath -#define Tcl_JoinPath \ - (tclStubsPtr->tcl_JoinPath) /* 186 */ -#endif -#ifndef Tcl_LinkVar -#define Tcl_LinkVar \ - (tclStubsPtr->tcl_LinkVar) /* 187 */ -#endif -/* Slot 188 is reserved */ -#ifndef Tcl_MakeFileChannel -#define Tcl_MakeFileChannel \ - (tclStubsPtr->tcl_MakeFileChannel) /* 189 */ -#endif -#ifndef Tcl_MakeSafe -#define Tcl_MakeSafe \ - (tclStubsPtr->tcl_MakeSafe) /* 190 */ -#endif -#ifndef Tcl_MakeTcpClientChannel -#define Tcl_MakeTcpClientChannel \ - (tclStubsPtr->tcl_MakeTcpClientChannel) /* 191 */ -#endif -#ifndef Tcl_Merge -#define Tcl_Merge \ - (tclStubsPtr->tcl_Merge) /* 192 */ -#endif -#ifndef Tcl_NextHashEntry -#define Tcl_NextHashEntry \ - (tclStubsPtr->tcl_NextHashEntry) /* 193 */ -#endif -#ifndef Tcl_NotifyChannel -#define Tcl_NotifyChannel \ - (tclStubsPtr->tcl_NotifyChannel) /* 194 */ -#endif -#ifndef Tcl_ObjGetVar2 -#define Tcl_ObjGetVar2 \ - (tclStubsPtr->tcl_ObjGetVar2) /* 195 */ -#endif -#ifndef Tcl_ObjSetVar2 -#define Tcl_ObjSetVar2 \ - (tclStubsPtr->tcl_ObjSetVar2) /* 196 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_OpenCommandChannel -#define Tcl_OpenCommandChannel \ - (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_OpenCommandChannel -#define Tcl_OpenCommandChannel \ - (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_OpenFileChannel -#define Tcl_OpenFileChannel \ - (tclStubsPtr->tcl_OpenFileChannel) /* 198 */ -#endif -#ifndef Tcl_OpenTcpClient -#define Tcl_OpenTcpClient \ - (tclStubsPtr->tcl_OpenTcpClient) /* 199 */ -#endif -#ifndef Tcl_OpenTcpServer -#define Tcl_OpenTcpServer \ - (tclStubsPtr->tcl_OpenTcpServer) /* 200 */ -#endif -#ifndef Tcl_Preserve -#define Tcl_Preserve \ - (tclStubsPtr->tcl_Preserve) /* 201 */ -#endif -#ifndef Tcl_PrintDouble -#define Tcl_PrintDouble \ - (tclStubsPtr->tcl_PrintDouble) /* 202 */ -#endif -#ifndef Tcl_PutEnv -#define Tcl_PutEnv \ - (tclStubsPtr->tcl_PutEnv) /* 203 */ -#endif -#ifndef Tcl_PosixError -#define Tcl_PosixError \ - (tclStubsPtr->tcl_PosixError) /* 204 */ -#endif -#ifndef Tcl_QueueEvent -#define Tcl_QueueEvent \ - (tclStubsPtr->tcl_QueueEvent) /* 205 */ -#endif -#ifndef Tcl_Read -#define Tcl_Read \ - (tclStubsPtr->tcl_Read) /* 206 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_ReapDetachedProcs -#define Tcl_ReapDetachedProcs \ - (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_ReapDetachedProcs -#define Tcl_ReapDetachedProcs \ - (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_RecordAndEval -#define Tcl_RecordAndEval \ - (tclStubsPtr->tcl_RecordAndEval) /* 208 */ -#endif -#ifndef Tcl_RecordAndEvalObj -#define Tcl_RecordAndEvalObj \ - (tclStubsPtr->tcl_RecordAndEvalObj) /* 209 */ -#endif -#ifndef Tcl_RegisterChannel -#define Tcl_RegisterChannel \ - (tclStubsPtr->tcl_RegisterChannel) /* 210 */ -#endif -#ifndef Tcl_RegisterObjType -#define Tcl_RegisterObjType \ - (tclStubsPtr->tcl_RegisterObjType) /* 211 */ -#endif -#ifndef Tcl_RegExpCompile -#define Tcl_RegExpCompile \ - (tclStubsPtr->tcl_RegExpCompile) /* 212 */ -#endif -#ifndef Tcl_RegExpExec -#define Tcl_RegExpExec \ - (tclStubsPtr->tcl_RegExpExec) /* 213 */ -#endif -#ifndef Tcl_RegExpMatch -#define Tcl_RegExpMatch \ - (tclStubsPtr->tcl_RegExpMatch) /* 214 */ -#endif -#ifndef Tcl_RegExpRange -#define Tcl_RegExpRange \ - (tclStubsPtr->tcl_RegExpRange) /* 215 */ -#endif -#ifndef Tcl_Release -#define Tcl_Release \ - (tclStubsPtr->tcl_Release) /* 216 */ -#endif -#ifndef Tcl_ResetResult -#define Tcl_ResetResult \ - (tclStubsPtr->tcl_ResetResult) /* 217 */ -#endif -#ifndef Tcl_ScanElement -#define Tcl_ScanElement \ - (tclStubsPtr->tcl_ScanElement) /* 218 */ -#endif -#ifndef Tcl_ScanCountedElement -#define Tcl_ScanCountedElement \ - (tclStubsPtr->tcl_ScanCountedElement) /* 219 */ -#endif -#ifndef Tcl_SeekOld -#define Tcl_SeekOld \ - (tclStubsPtr->tcl_SeekOld) /* 220 */ -#endif -#ifndef Tcl_ServiceAll -#define Tcl_ServiceAll \ - (tclStubsPtr->tcl_ServiceAll) /* 221 */ -#endif -#ifndef Tcl_ServiceEvent -#define Tcl_ServiceEvent \ - (tclStubsPtr->tcl_ServiceEvent) /* 222 */ -#endif -#ifndef Tcl_SetAssocData -#define Tcl_SetAssocData \ - (tclStubsPtr->tcl_SetAssocData) /* 223 */ -#endif -#ifndef Tcl_SetChannelBufferSize -#define Tcl_SetChannelBufferSize \ - (tclStubsPtr->tcl_SetChannelBufferSize) /* 224 */ -#endif -#ifndef Tcl_SetChannelOption -#define Tcl_SetChannelOption \ - (tclStubsPtr->tcl_SetChannelOption) /* 225 */ -#endif -#ifndef Tcl_SetCommandInfo -#define Tcl_SetCommandInfo \ - (tclStubsPtr->tcl_SetCommandInfo) /* 226 */ -#endif -#ifndef Tcl_SetErrno -#define Tcl_SetErrno \ - (tclStubsPtr->tcl_SetErrno) /* 227 */ -#endif -#ifndef Tcl_SetErrorCode -#define Tcl_SetErrorCode \ - (tclStubsPtr->tcl_SetErrorCode) /* 228 */ -#endif -#ifndef Tcl_SetMaxBlockTime -#define Tcl_SetMaxBlockTime \ - (tclStubsPtr->tcl_SetMaxBlockTime) /* 229 */ -#endif -#ifndef Tcl_SetPanicProc -#define Tcl_SetPanicProc \ - (tclStubsPtr->tcl_SetPanicProc) /* 230 */ -#endif -#ifndef Tcl_SetRecursionLimit -#define Tcl_SetRecursionLimit \ - (tclStubsPtr->tcl_SetRecursionLimit) /* 231 */ -#endif -#ifndef Tcl_SetResult -#define Tcl_SetResult \ - (tclStubsPtr->tcl_SetResult) /* 232 */ -#endif -#ifndef Tcl_SetServiceMode -#define Tcl_SetServiceMode \ - (tclStubsPtr->tcl_SetServiceMode) /* 233 */ -#endif -#ifndef Tcl_SetObjErrorCode -#define Tcl_SetObjErrorCode \ - (tclStubsPtr->tcl_SetObjErrorCode) /* 234 */ -#endif -#ifndef Tcl_SetObjResult -#define Tcl_SetObjResult \ - (tclStubsPtr->tcl_SetObjResult) /* 235 */ -#endif -#ifndef Tcl_SetStdChannel -#define Tcl_SetStdChannel \ - (tclStubsPtr->tcl_SetStdChannel) /* 236 */ -#endif -#ifndef Tcl_SetVar -#define Tcl_SetVar \ - (tclStubsPtr->tcl_SetVar) /* 237 */ -#endif -#ifndef Tcl_SetVar2 -#define Tcl_SetVar2 \ - (tclStubsPtr->tcl_SetVar2) /* 238 */ -#endif -#ifndef Tcl_SignalId -#define Tcl_SignalId \ - (tclStubsPtr->tcl_SignalId) /* 239 */ -#endif -#ifndef Tcl_SignalMsg -#define Tcl_SignalMsg \ - (tclStubsPtr->tcl_SignalMsg) /* 240 */ -#endif -#ifndef Tcl_SourceRCFile -#define Tcl_SourceRCFile \ - (tclStubsPtr->tcl_SourceRCFile) /* 241 */ -#endif -#ifndef Tcl_SplitList -#define Tcl_SplitList \ - (tclStubsPtr->tcl_SplitList) /* 242 */ -#endif -#ifndef Tcl_SplitPath -#define Tcl_SplitPath \ - (tclStubsPtr->tcl_SplitPath) /* 243 */ -#endif -#ifndef Tcl_StaticPackage -#define Tcl_StaticPackage \ - (tclStubsPtr->tcl_StaticPackage) /* 244 */ -#endif -#ifndef Tcl_StringMatch -#define Tcl_StringMatch \ - (tclStubsPtr->tcl_StringMatch) /* 245 */ -#endif -#ifndef Tcl_TellOld -#define Tcl_TellOld \ - (tclStubsPtr->tcl_TellOld) /* 246 */ -#endif -#ifndef Tcl_TraceVar -#define Tcl_TraceVar \ - (tclStubsPtr->tcl_TraceVar) /* 247 */ -#endif -#ifndef Tcl_TraceVar2 -#define Tcl_TraceVar2 \ - (tclStubsPtr->tcl_TraceVar2) /* 248 */ -#endif -#ifndef Tcl_TranslateFileName -#define Tcl_TranslateFileName \ - (tclStubsPtr->tcl_TranslateFileName) /* 249 */ -#endif -#ifndef Tcl_Ungets -#define Tcl_Ungets \ - (tclStubsPtr->tcl_Ungets) /* 250 */ -#endif -#ifndef Tcl_UnlinkVar -#define Tcl_UnlinkVar \ - (tclStubsPtr->tcl_UnlinkVar) /* 251 */ -#endif -#ifndef Tcl_UnregisterChannel -#define Tcl_UnregisterChannel \ - (tclStubsPtr->tcl_UnregisterChannel) /* 252 */ -#endif -#ifndef Tcl_UnsetVar -#define Tcl_UnsetVar \ - (tclStubsPtr->tcl_UnsetVar) /* 253 */ -#endif -#ifndef Tcl_UnsetVar2 -#define Tcl_UnsetVar2 \ - (tclStubsPtr->tcl_UnsetVar2) /* 254 */ -#endif -#ifndef Tcl_UntraceVar -#define Tcl_UntraceVar \ - (tclStubsPtr->tcl_UntraceVar) /* 255 */ -#endif -#ifndef Tcl_UntraceVar2 -#define Tcl_UntraceVar2 \ - (tclStubsPtr->tcl_UntraceVar2) /* 256 */ -#endif -#ifndef Tcl_UpdateLinkedVar -#define Tcl_UpdateLinkedVar \ - (tclStubsPtr->tcl_UpdateLinkedVar) /* 257 */ -#endif -#ifndef Tcl_UpVar -#define Tcl_UpVar \ - (tclStubsPtr->tcl_UpVar) /* 258 */ -#endif -#ifndef Tcl_UpVar2 -#define Tcl_UpVar2 \ - (tclStubsPtr->tcl_UpVar2) /* 259 */ -#endif -#ifndef Tcl_VarEval -#define Tcl_VarEval \ - (tclStubsPtr->tcl_VarEval) /* 260 */ -#endif -#ifndef Tcl_VarTraceInfo -#define Tcl_VarTraceInfo \ - (tclStubsPtr->tcl_VarTraceInfo) /* 261 */ -#endif -#ifndef Tcl_VarTraceInfo2 -#define Tcl_VarTraceInfo2 \ - (tclStubsPtr->tcl_VarTraceInfo2) /* 262 */ -#endif -#ifndef Tcl_Write -#define Tcl_Write \ - (tclStubsPtr->tcl_Write) /* 263 */ -#endif -#ifndef Tcl_WrongNumArgs -#define Tcl_WrongNumArgs \ - (tclStubsPtr->tcl_WrongNumArgs) /* 264 */ -#endif -#ifndef Tcl_DumpActiveMemory -#define Tcl_DumpActiveMemory \ - (tclStubsPtr->tcl_DumpActiveMemory) /* 265 */ -#endif -#ifndef Tcl_ValidateAllMemory -#define Tcl_ValidateAllMemory \ - (tclStubsPtr->tcl_ValidateAllMemory) /* 266 */ -#endif -#ifndef Tcl_AppendResultVA -#define Tcl_AppendResultVA \ - (tclStubsPtr->tcl_AppendResultVA) /* 267 */ -#endif -#ifndef Tcl_AppendStringsToObjVA -#define Tcl_AppendStringsToObjVA \ - (tclStubsPtr->tcl_AppendStringsToObjVA) /* 268 */ -#endif -#ifndef Tcl_HashStats -#define Tcl_HashStats \ - (tclStubsPtr->tcl_HashStats) /* 269 */ -#endif -#ifndef Tcl_ParseVar -#define Tcl_ParseVar \ - (tclStubsPtr->tcl_ParseVar) /* 270 */ -#endif -#ifndef Tcl_PkgPresent -#define Tcl_PkgPresent \ - (tclStubsPtr->tcl_PkgPresent) /* 271 */ -#endif -#ifndef Tcl_PkgPresentEx -#define Tcl_PkgPresentEx \ - (tclStubsPtr->tcl_PkgPresentEx) /* 272 */ -#endif -#ifndef Tcl_PkgProvide -#define Tcl_PkgProvide \ - (tclStubsPtr->tcl_PkgProvide) /* 273 */ -#endif -#ifndef Tcl_PkgRequire -#define Tcl_PkgRequire \ - (tclStubsPtr->tcl_PkgRequire) /* 274 */ -#endif -#ifndef Tcl_SetErrorCodeVA -#define Tcl_SetErrorCodeVA \ - (tclStubsPtr->tcl_SetErrorCodeVA) /* 275 */ -#endif -#ifndef Tcl_VarEvalVA -#define Tcl_VarEvalVA \ - (tclStubsPtr->tcl_VarEvalVA) /* 276 */ -#endif -#ifndef Tcl_WaitPid -#define Tcl_WaitPid \ - (tclStubsPtr->tcl_WaitPid) /* 277 */ -#endif -#ifndef Tcl_PanicVA -#define Tcl_PanicVA \ - (tclStubsPtr->tcl_PanicVA) /* 278 */ -#endif -#ifndef Tcl_GetVersion -#define Tcl_GetVersion \ - (tclStubsPtr->tcl_GetVersion) /* 279 */ -#endif -#ifndef Tcl_InitMemory -#define Tcl_InitMemory \ - (tclStubsPtr->tcl_InitMemory) /* 280 */ -#endif -#ifndef Tcl_StackChannel -#define Tcl_StackChannel \ - (tclStubsPtr->tcl_StackChannel) /* 281 */ -#endif -#ifndef Tcl_UnstackChannel -#define Tcl_UnstackChannel \ - (tclStubsPtr->tcl_UnstackChannel) /* 282 */ -#endif -#ifndef Tcl_GetStackedChannel -#define Tcl_GetStackedChannel \ - (tclStubsPtr->tcl_GetStackedChannel) /* 283 */ -#endif -#ifndef Tcl_SetMainLoop -#define Tcl_SetMainLoop \ - (tclStubsPtr->tcl_SetMainLoop) /* 284 */ -#endif -/* Slot 285 is reserved */ -#ifndef Tcl_AppendObjToObj -#define Tcl_AppendObjToObj \ - (tclStubsPtr->tcl_AppendObjToObj) /* 286 */ -#endif -#ifndef Tcl_CreateEncoding -#define Tcl_CreateEncoding \ - (tclStubsPtr->tcl_CreateEncoding) /* 287 */ -#endif -#ifndef Tcl_CreateThreadExitHandler -#define Tcl_CreateThreadExitHandler \ - (tclStubsPtr->tcl_CreateThreadExitHandler) /* 288 */ -#endif -#ifndef Tcl_DeleteThreadExitHandler -#define Tcl_DeleteThreadExitHandler \ - (tclStubsPtr->tcl_DeleteThreadExitHandler) /* 289 */ -#endif -#ifndef Tcl_DiscardResult -#define Tcl_DiscardResult \ - (tclStubsPtr->tcl_DiscardResult) /* 290 */ -#endif -#ifndef Tcl_EvalEx -#define Tcl_EvalEx \ - (tclStubsPtr->tcl_EvalEx) /* 291 */ -#endif -#ifndef Tcl_EvalObjv -#define Tcl_EvalObjv \ - (tclStubsPtr->tcl_EvalObjv) /* 292 */ -#endif -#ifndef Tcl_EvalObjEx -#define Tcl_EvalObjEx \ - (tclStubsPtr->tcl_EvalObjEx) /* 293 */ -#endif -#ifndef Tcl_ExitThread -#define Tcl_ExitThread \ - (tclStubsPtr->tcl_ExitThread) /* 294 */ -#endif -#ifndef Tcl_ExternalToUtf -#define Tcl_ExternalToUtf \ - (tclStubsPtr->tcl_ExternalToUtf) /* 295 */ -#endif -#ifndef Tcl_ExternalToUtfDString -#define Tcl_ExternalToUtfDString \ - (tclStubsPtr->tcl_ExternalToUtfDString) /* 296 */ -#endif -#ifndef Tcl_FinalizeThread -#define Tcl_FinalizeThread \ - (tclStubsPtr->tcl_FinalizeThread) /* 297 */ -#endif -#ifndef Tcl_FinalizeNotifier -#define Tcl_FinalizeNotifier \ - (tclStubsPtr->tcl_FinalizeNotifier) /* 298 */ -#endif -#ifndef Tcl_FreeEncoding -#define Tcl_FreeEncoding \ - (tclStubsPtr->tcl_FreeEncoding) /* 299 */ -#endif -#ifndef Tcl_GetCurrentThread -#define Tcl_GetCurrentThread \ - (tclStubsPtr->tcl_GetCurrentThread) /* 300 */ -#endif -#ifndef Tcl_GetEncoding -#define Tcl_GetEncoding \ - (tclStubsPtr->tcl_GetEncoding) /* 301 */ -#endif -#ifndef Tcl_GetEncodingName -#define Tcl_GetEncodingName \ - (tclStubsPtr->tcl_GetEncodingName) /* 302 */ -#endif -#ifndef Tcl_GetEncodingNames -#define Tcl_GetEncodingNames \ - (tclStubsPtr->tcl_GetEncodingNames) /* 303 */ -#endif -#ifndef Tcl_GetIndexFromObjStruct -#define Tcl_GetIndexFromObjStruct \ - (tclStubsPtr->tcl_GetIndexFromObjStruct) /* 304 */ -#endif -#ifndef Tcl_GetThreadData -#define Tcl_GetThreadData \ - (tclStubsPtr->tcl_GetThreadData) /* 305 */ -#endif -#ifndef Tcl_GetVar2Ex -#define Tcl_GetVar2Ex \ - (tclStubsPtr->tcl_GetVar2Ex) /* 306 */ -#endif -#ifndef Tcl_InitNotifier -#define Tcl_InitNotifier \ - (tclStubsPtr->tcl_InitNotifier) /* 307 */ -#endif -#ifndef Tcl_MutexLock -#define Tcl_MutexLock \ - (tclStubsPtr->tcl_MutexLock) /* 308 */ -#endif -#ifndef Tcl_MutexUnlock -#define Tcl_MutexUnlock \ - (tclStubsPtr->tcl_MutexUnlock) /* 309 */ -#endif -#ifndef Tcl_ConditionNotify -#define Tcl_ConditionNotify \ - (tclStubsPtr->tcl_ConditionNotify) /* 310 */ -#endif -#ifndef Tcl_ConditionWait -#define Tcl_ConditionWait \ - (tclStubsPtr->tcl_ConditionWait) /* 311 */ -#endif -#ifndef Tcl_NumUtfChars -#define Tcl_NumUtfChars \ - (tclStubsPtr->tcl_NumUtfChars) /* 312 */ -#endif -#ifndef Tcl_ReadChars -#define Tcl_ReadChars \ - (tclStubsPtr->tcl_ReadChars) /* 313 */ -#endif -#ifndef Tcl_RestoreResult -#define Tcl_RestoreResult \ - (tclStubsPtr->tcl_RestoreResult) /* 314 */ -#endif -#ifndef Tcl_SaveResult -#define Tcl_SaveResult \ - (tclStubsPtr->tcl_SaveResult) /* 315 */ -#endif -#ifndef Tcl_SetSystemEncoding -#define Tcl_SetSystemEncoding \ - (tclStubsPtr->tcl_SetSystemEncoding) /* 316 */ -#endif -#ifndef Tcl_SetVar2Ex -#define Tcl_SetVar2Ex \ - (tclStubsPtr->tcl_SetVar2Ex) /* 317 */ -#endif -#ifndef Tcl_ThreadAlert -#define Tcl_ThreadAlert \ - (tclStubsPtr->tcl_ThreadAlert) /* 318 */ -#endif -#ifndef Tcl_ThreadQueueEvent -#define Tcl_ThreadQueueEvent \ - (tclStubsPtr->tcl_ThreadQueueEvent) /* 319 */ -#endif -#ifndef Tcl_UniCharAtIndex -#define Tcl_UniCharAtIndex \ - (tclStubsPtr->tcl_UniCharAtIndex) /* 320 */ -#endif -#ifndef Tcl_UniCharToLower -#define Tcl_UniCharToLower \ - (tclStubsPtr->tcl_UniCharToLower) /* 321 */ -#endif -#ifndef Tcl_UniCharToTitle -#define Tcl_UniCharToTitle \ - (tclStubsPtr->tcl_UniCharToTitle) /* 322 */ -#endif -#ifndef Tcl_UniCharToUpper -#define Tcl_UniCharToUpper \ - (tclStubsPtr->tcl_UniCharToUpper) /* 323 */ -#endif -#ifndef Tcl_UniCharToUtf -#define Tcl_UniCharToUtf \ - (tclStubsPtr->tcl_UniCharToUtf) /* 324 */ -#endif -#ifndef Tcl_UtfAtIndex -#define Tcl_UtfAtIndex \ - (tclStubsPtr->tcl_UtfAtIndex) /* 325 */ -#endif -#ifndef Tcl_UtfCharComplete -#define Tcl_UtfCharComplete \ - (tclStubsPtr->tcl_UtfCharComplete) /* 326 */ -#endif -#ifndef Tcl_UtfBackslash -#define Tcl_UtfBackslash \ - (tclStubsPtr->tcl_UtfBackslash) /* 327 */ -#endif -#ifndef Tcl_UtfFindFirst -#define Tcl_UtfFindFirst \ - (tclStubsPtr->tcl_UtfFindFirst) /* 328 */ -#endif -#ifndef Tcl_UtfFindLast -#define Tcl_UtfFindLast \ - (tclStubsPtr->tcl_UtfFindLast) /* 329 */ -#endif -#ifndef Tcl_UtfNext -#define Tcl_UtfNext \ - (tclStubsPtr->tcl_UtfNext) /* 330 */ -#endif -#ifndef Tcl_UtfPrev -#define Tcl_UtfPrev \ - (tclStubsPtr->tcl_UtfPrev) /* 331 */ -#endif -#ifndef Tcl_UtfToExternal -#define Tcl_UtfToExternal \ - (tclStubsPtr->tcl_UtfToExternal) /* 332 */ -#endif -#ifndef Tcl_UtfToExternalDString -#define Tcl_UtfToExternalDString \ - (tclStubsPtr->tcl_UtfToExternalDString) /* 333 */ -#endif -#ifndef Tcl_UtfToLower -#define Tcl_UtfToLower \ - (tclStubsPtr->tcl_UtfToLower) /* 334 */ -#endif -#ifndef Tcl_UtfToTitle -#define Tcl_UtfToTitle \ - (tclStubsPtr->tcl_UtfToTitle) /* 335 */ -#endif -#ifndef Tcl_UtfToUniChar -#define Tcl_UtfToUniChar \ - (tclStubsPtr->tcl_UtfToUniChar) /* 336 */ -#endif -#ifndef Tcl_UtfToUpper -#define Tcl_UtfToUpper \ - (tclStubsPtr->tcl_UtfToUpper) /* 337 */ -#endif -#ifndef Tcl_WriteChars -#define Tcl_WriteChars \ - (tclStubsPtr->tcl_WriteChars) /* 338 */ -#endif -#ifndef Tcl_WriteObj -#define Tcl_WriteObj \ - (tclStubsPtr->tcl_WriteObj) /* 339 */ -#endif -#ifndef Tcl_GetString -#define Tcl_GetString \ - (tclStubsPtr->tcl_GetString) /* 340 */ -#endif -#ifndef Tcl_GetDefaultEncodingDir -#define Tcl_GetDefaultEncodingDir \ - (tclStubsPtr->tcl_GetDefaultEncodingDir) /* 341 */ -#endif -#ifndef Tcl_SetDefaultEncodingDir -#define Tcl_SetDefaultEncodingDir \ - (tclStubsPtr->tcl_SetDefaultEncodingDir) /* 342 */ -#endif -#ifndef Tcl_AlertNotifier -#define Tcl_AlertNotifier \ - (tclStubsPtr->tcl_AlertNotifier) /* 343 */ -#endif -#ifndef Tcl_ServiceModeHook -#define Tcl_ServiceModeHook \ - (tclStubsPtr->tcl_ServiceModeHook) /* 344 */ -#endif -#ifndef Tcl_UniCharIsAlnum -#define Tcl_UniCharIsAlnum \ - (tclStubsPtr->tcl_UniCharIsAlnum) /* 345 */ -#endif -#ifndef Tcl_UniCharIsAlpha -#define Tcl_UniCharIsAlpha \ - (tclStubsPtr->tcl_UniCharIsAlpha) /* 346 */ -#endif -#ifndef Tcl_UniCharIsDigit -#define Tcl_UniCharIsDigit \ - (tclStubsPtr->tcl_UniCharIsDigit) /* 347 */ -#endif -#ifndef Tcl_UniCharIsLower -#define Tcl_UniCharIsLower \ - (tclStubsPtr->tcl_UniCharIsLower) /* 348 */ -#endif -#ifndef Tcl_UniCharIsSpace -#define Tcl_UniCharIsSpace \ - (tclStubsPtr->tcl_UniCharIsSpace) /* 349 */ -#endif -#ifndef Tcl_UniCharIsUpper -#define Tcl_UniCharIsUpper \ - (tclStubsPtr->tcl_UniCharIsUpper) /* 350 */ -#endif -#ifndef Tcl_UniCharIsWordChar -#define Tcl_UniCharIsWordChar \ - (tclStubsPtr->tcl_UniCharIsWordChar) /* 351 */ -#endif -#ifndef Tcl_UniCharLen -#define Tcl_UniCharLen \ - (tclStubsPtr->tcl_UniCharLen) /* 352 */ -#endif -#ifndef Tcl_UniCharNcmp -#define Tcl_UniCharNcmp \ - (tclStubsPtr->tcl_UniCharNcmp) /* 353 */ -#endif -#ifndef Tcl_UniCharToUtfDString -#define Tcl_UniCharToUtfDString \ - (tclStubsPtr->tcl_UniCharToUtfDString) /* 354 */ -#endif -#ifndef Tcl_UtfToUniCharDString -#define Tcl_UtfToUniCharDString \ - (tclStubsPtr->tcl_UtfToUniCharDString) /* 355 */ -#endif -#ifndef Tcl_GetRegExpFromObj -#define Tcl_GetRegExpFromObj \ - (tclStubsPtr->tcl_GetRegExpFromObj) /* 356 */ -#endif -#ifndef Tcl_EvalTokens -#define Tcl_EvalTokens \ - (tclStubsPtr->tcl_EvalTokens) /* 357 */ -#endif -#ifndef Tcl_FreeParse -#define Tcl_FreeParse \ - (tclStubsPtr->tcl_FreeParse) /* 358 */ -#endif -#ifndef Tcl_LogCommandInfo -#define Tcl_LogCommandInfo \ - (tclStubsPtr->tcl_LogCommandInfo) /* 359 */ -#endif -#ifndef Tcl_ParseBraces -#define Tcl_ParseBraces \ - (tclStubsPtr->tcl_ParseBraces) /* 360 */ -#endif -#ifndef Tcl_ParseCommand -#define Tcl_ParseCommand \ - (tclStubsPtr->tcl_ParseCommand) /* 361 */ -#endif -#ifndef Tcl_ParseExpr -#define Tcl_ParseExpr \ - (tclStubsPtr->tcl_ParseExpr) /* 362 */ -#endif -#ifndef Tcl_ParseQuotedString -#define Tcl_ParseQuotedString \ - (tclStubsPtr->tcl_ParseQuotedString) /* 363 */ -#endif -#ifndef Tcl_ParseVarName -#define Tcl_ParseVarName \ - (tclStubsPtr->tcl_ParseVarName) /* 364 */ -#endif -#ifndef Tcl_GetCwd -#define Tcl_GetCwd \ - (tclStubsPtr->tcl_GetCwd) /* 365 */ -#endif -#ifndef Tcl_Chdir -#define Tcl_Chdir \ - (tclStubsPtr->tcl_Chdir) /* 366 */ -#endif -#ifndef Tcl_Access -#define Tcl_Access \ - (tclStubsPtr->tcl_Access) /* 367 */ -#endif -#ifndef Tcl_Stat -#define Tcl_Stat \ - (tclStubsPtr->tcl_Stat) /* 368 */ -#endif -#ifndef Tcl_UtfNcmp -#define Tcl_UtfNcmp \ - (tclStubsPtr->tcl_UtfNcmp) /* 369 */ -#endif -#ifndef Tcl_UtfNcasecmp -#define Tcl_UtfNcasecmp \ - (tclStubsPtr->tcl_UtfNcasecmp) /* 370 */ -#endif -#ifndef Tcl_StringCaseMatch -#define Tcl_StringCaseMatch \ - (tclStubsPtr->tcl_StringCaseMatch) /* 371 */ -#endif -#ifndef Tcl_UniCharIsControl -#define Tcl_UniCharIsControl \ - (tclStubsPtr->tcl_UniCharIsControl) /* 372 */ -#endif -#ifndef Tcl_UniCharIsGraph -#define Tcl_UniCharIsGraph \ - (tclStubsPtr->tcl_UniCharIsGraph) /* 373 */ -#endif -#ifndef Tcl_UniCharIsPrint -#define Tcl_UniCharIsPrint \ - (tclStubsPtr->tcl_UniCharIsPrint) /* 374 */ -#endif -#ifndef Tcl_UniCharIsPunct -#define Tcl_UniCharIsPunct \ - (tclStubsPtr->tcl_UniCharIsPunct) /* 375 */ -#endif -#ifndef Tcl_RegExpExecObj -#define Tcl_RegExpExecObj \ - (tclStubsPtr->tcl_RegExpExecObj) /* 376 */ -#endif -#ifndef Tcl_RegExpGetInfo -#define Tcl_RegExpGetInfo \ - (tclStubsPtr->tcl_RegExpGetInfo) /* 377 */ -#endif -#ifndef Tcl_NewUnicodeObj -#define Tcl_NewUnicodeObj \ - (tclStubsPtr->tcl_NewUnicodeObj) /* 378 */ -#endif -#ifndef Tcl_SetUnicodeObj -#define Tcl_SetUnicodeObj \ - (tclStubsPtr->tcl_SetUnicodeObj) /* 379 */ -#endif -#ifndef Tcl_GetCharLength -#define Tcl_GetCharLength \ - (tclStubsPtr->tcl_GetCharLength) /* 380 */ -#endif -#ifndef Tcl_GetUniChar -#define Tcl_GetUniChar \ - (tclStubsPtr->tcl_GetUniChar) /* 381 */ -#endif -#ifndef Tcl_GetUnicode -#define Tcl_GetUnicode \ - (tclStubsPtr->tcl_GetUnicode) /* 382 */ -#endif -#ifndef Tcl_GetRange -#define Tcl_GetRange \ - (tclStubsPtr->tcl_GetRange) /* 383 */ -#endif -#ifndef Tcl_AppendUnicodeToObj -#define Tcl_AppendUnicodeToObj \ - (tclStubsPtr->tcl_AppendUnicodeToObj) /* 384 */ -#endif -#ifndef Tcl_RegExpMatchObj -#define Tcl_RegExpMatchObj \ - (tclStubsPtr->tcl_RegExpMatchObj) /* 385 */ -#endif -#ifndef Tcl_SetNotifier -#define Tcl_SetNotifier \ - (tclStubsPtr->tcl_SetNotifier) /* 386 */ -#endif -#ifndef Tcl_GetAllocMutex -#define Tcl_GetAllocMutex \ - (tclStubsPtr->tcl_GetAllocMutex) /* 387 */ -#endif -#ifndef Tcl_GetChannelNames -#define Tcl_GetChannelNames \ - (tclStubsPtr->tcl_GetChannelNames) /* 388 */ -#endif -#ifndef Tcl_GetChannelNamesEx -#define Tcl_GetChannelNamesEx \ - (tclStubsPtr->tcl_GetChannelNamesEx) /* 389 */ -#endif -#ifndef Tcl_ProcObjCmd -#define Tcl_ProcObjCmd \ - (tclStubsPtr->tcl_ProcObjCmd) /* 390 */ -#endif -#ifndef Tcl_ConditionFinalize -#define Tcl_ConditionFinalize \ - (tclStubsPtr->tcl_ConditionFinalize) /* 391 */ -#endif -#ifndef Tcl_MutexFinalize -#define Tcl_MutexFinalize \ - (tclStubsPtr->tcl_MutexFinalize) /* 392 */ -#endif -#ifndef Tcl_CreateThread -#define Tcl_CreateThread \ - (tclStubsPtr->tcl_CreateThread) /* 393 */ -#endif -#ifndef Tcl_ReadRaw -#define Tcl_ReadRaw \ - (tclStubsPtr->tcl_ReadRaw) /* 394 */ -#endif -#ifndef Tcl_WriteRaw -#define Tcl_WriteRaw \ - (tclStubsPtr->tcl_WriteRaw) /* 395 */ -#endif -#ifndef Tcl_GetTopChannel -#define Tcl_GetTopChannel \ - (tclStubsPtr->tcl_GetTopChannel) /* 396 */ -#endif -#ifndef Tcl_ChannelBuffered -#define Tcl_ChannelBuffered \ - (tclStubsPtr->tcl_ChannelBuffered) /* 397 */ -#endif -#ifndef Tcl_ChannelName -#define Tcl_ChannelName \ - (tclStubsPtr->tcl_ChannelName) /* 398 */ -#endif -#ifndef Tcl_ChannelVersion -#define Tcl_ChannelVersion \ - (tclStubsPtr->tcl_ChannelVersion) /* 399 */ -#endif -#ifndef Tcl_ChannelBlockModeProc -#define Tcl_ChannelBlockModeProc \ - (tclStubsPtr->tcl_ChannelBlockModeProc) /* 400 */ -#endif -#ifndef Tcl_ChannelCloseProc -#define Tcl_ChannelCloseProc \ - (tclStubsPtr->tcl_ChannelCloseProc) /* 401 */ -#endif -#ifndef Tcl_ChannelClose2Proc -#define Tcl_ChannelClose2Proc \ - (tclStubsPtr->tcl_ChannelClose2Proc) /* 402 */ -#endif -#ifndef Tcl_ChannelInputProc -#define Tcl_ChannelInputProc \ - (tclStubsPtr->tcl_ChannelInputProc) /* 403 */ -#endif -#ifndef Tcl_ChannelOutputProc -#define Tcl_ChannelOutputProc \ - (tclStubsPtr->tcl_ChannelOutputProc) /* 404 */ -#endif -#ifndef Tcl_ChannelSeekProc -#define Tcl_ChannelSeekProc \ - (tclStubsPtr->tcl_ChannelSeekProc) /* 405 */ -#endif -#ifndef Tcl_ChannelSetOptionProc -#define Tcl_ChannelSetOptionProc \ - (tclStubsPtr->tcl_ChannelSetOptionProc) /* 406 */ -#endif -#ifndef Tcl_ChannelGetOptionProc -#define Tcl_ChannelGetOptionProc \ - (tclStubsPtr->tcl_ChannelGetOptionProc) /* 407 */ -#endif -#ifndef Tcl_ChannelWatchProc -#define Tcl_ChannelWatchProc \ - (tclStubsPtr->tcl_ChannelWatchProc) /* 408 */ -#endif -#ifndef Tcl_ChannelGetHandleProc -#define Tcl_ChannelGetHandleProc \ - (tclStubsPtr->tcl_ChannelGetHandleProc) /* 409 */ -#endif -#ifndef Tcl_ChannelFlushProc -#define Tcl_ChannelFlushProc \ - (tclStubsPtr->tcl_ChannelFlushProc) /* 410 */ -#endif -#ifndef Tcl_ChannelHandlerProc -#define Tcl_ChannelHandlerProc \ - (tclStubsPtr->tcl_ChannelHandlerProc) /* 411 */ -#endif -#ifndef Tcl_JoinThread -#define Tcl_JoinThread \ - (tclStubsPtr->tcl_JoinThread) /* 412 */ -#endif -#ifndef Tcl_IsChannelShared -#define Tcl_IsChannelShared \ - (tclStubsPtr->tcl_IsChannelShared) /* 413 */ -#endif -#ifndef Tcl_IsChannelRegistered -#define Tcl_IsChannelRegistered \ - (tclStubsPtr->tcl_IsChannelRegistered) /* 414 */ -#endif -#ifndef Tcl_CutChannel -#define Tcl_CutChannel \ - (tclStubsPtr->tcl_CutChannel) /* 415 */ -#endif -#ifndef Tcl_SpliceChannel -#define Tcl_SpliceChannel \ - (tclStubsPtr->tcl_SpliceChannel) /* 416 */ -#endif -#ifndef Tcl_ClearChannelHandlers -#define Tcl_ClearChannelHandlers \ - (tclStubsPtr->tcl_ClearChannelHandlers) /* 417 */ -#endif -#ifndef Tcl_IsChannelExisting -#define Tcl_IsChannelExisting \ - (tclStubsPtr->tcl_IsChannelExisting) /* 418 */ -#endif -#ifndef Tcl_UniCharNcasecmp -#define Tcl_UniCharNcasecmp \ - (tclStubsPtr->tcl_UniCharNcasecmp) /* 419 */ -#endif -#ifndef Tcl_UniCharCaseMatch -#define Tcl_UniCharCaseMatch \ - (tclStubsPtr->tcl_UniCharCaseMatch) /* 420 */ -#endif -#ifndef Tcl_FindHashEntry -#define Tcl_FindHashEntry \ - (tclStubsPtr->tcl_FindHashEntry) /* 421 */ -#endif -#ifndef Tcl_CreateHashEntry -#define Tcl_CreateHashEntry \ - (tclStubsPtr->tcl_CreateHashEntry) /* 422 */ -#endif -#ifndef Tcl_InitCustomHashTable -#define Tcl_InitCustomHashTable \ - (tclStubsPtr->tcl_InitCustomHashTable) /* 423 */ -#endif -#ifndef Tcl_InitObjHashTable -#define Tcl_InitObjHashTable \ - (tclStubsPtr->tcl_InitObjHashTable) /* 424 */ -#endif -#ifndef Tcl_CommandTraceInfo -#define Tcl_CommandTraceInfo \ - (tclStubsPtr->tcl_CommandTraceInfo) /* 425 */ -#endif -#ifndef Tcl_TraceCommand -#define Tcl_TraceCommand \ - (tclStubsPtr->tcl_TraceCommand) /* 426 */ -#endif -#ifndef Tcl_UntraceCommand -#define Tcl_UntraceCommand \ - (tclStubsPtr->tcl_UntraceCommand) /* 427 */ -#endif -#ifndef Tcl_AttemptAlloc -#define Tcl_AttemptAlloc \ - (tclStubsPtr->tcl_AttemptAlloc) /* 428 */ -#endif -#ifndef Tcl_AttemptDbCkalloc -#define Tcl_AttemptDbCkalloc \ - (tclStubsPtr->tcl_AttemptDbCkalloc) /* 429 */ -#endif -#ifndef Tcl_AttemptRealloc -#define Tcl_AttemptRealloc \ - (tclStubsPtr->tcl_AttemptRealloc) /* 430 */ -#endif -#ifndef Tcl_AttemptDbCkrealloc -#define Tcl_AttemptDbCkrealloc \ - (tclStubsPtr->tcl_AttemptDbCkrealloc) /* 431 */ -#endif -#ifndef Tcl_AttemptSetObjLength -#define Tcl_AttemptSetObjLength \ - (tclStubsPtr->tcl_AttemptSetObjLength) /* 432 */ -#endif -#ifndef Tcl_GetChannelThread -#define Tcl_GetChannelThread \ - (tclStubsPtr->tcl_GetChannelThread) /* 433 */ -#endif -#ifndef Tcl_GetUnicodeFromObj -#define Tcl_GetUnicodeFromObj \ - (tclStubsPtr->tcl_GetUnicodeFromObj) /* 434 */ -#endif -#ifndef Tcl_GetMathFuncInfo -#define Tcl_GetMathFuncInfo \ - (tclStubsPtr->tcl_GetMathFuncInfo) /* 435 */ -#endif -#ifndef Tcl_ListMathFuncs -#define Tcl_ListMathFuncs \ - (tclStubsPtr->tcl_ListMathFuncs) /* 436 */ -#endif -#ifndef Tcl_SubstObj -#define Tcl_SubstObj \ - (tclStubsPtr->tcl_SubstObj) /* 437 */ -#endif -#ifndef Tcl_DetachChannel -#define Tcl_DetachChannel \ - (tclStubsPtr->tcl_DetachChannel) /* 438 */ -#endif -#ifndef Tcl_IsStandardChannel -#define Tcl_IsStandardChannel \ - (tclStubsPtr->tcl_IsStandardChannel) /* 439 */ -#endif -#ifndef Tcl_FSCopyFile -#define Tcl_FSCopyFile \ - (tclStubsPtr->tcl_FSCopyFile) /* 440 */ -#endif -#ifndef Tcl_FSCopyDirectory -#define Tcl_FSCopyDirectory \ - (tclStubsPtr->tcl_FSCopyDirectory) /* 441 */ -#endif -#ifndef Tcl_FSCreateDirectory -#define Tcl_FSCreateDirectory \ - (tclStubsPtr->tcl_FSCreateDirectory) /* 442 */ -#endif -#ifndef Tcl_FSDeleteFile -#define Tcl_FSDeleteFile \ - (tclStubsPtr->tcl_FSDeleteFile) /* 443 */ -#endif -#ifndef Tcl_FSLoadFile -#define Tcl_FSLoadFile \ - (tclStubsPtr->tcl_FSLoadFile) /* 444 */ -#endif -#ifndef Tcl_FSMatchInDirectory -#define Tcl_FSMatchInDirectory \ - (tclStubsPtr->tcl_FSMatchInDirectory) /* 445 */ -#endif -#ifndef Tcl_FSLink -#define Tcl_FSLink \ - (tclStubsPtr->tcl_FSLink) /* 446 */ -#endif -#ifndef Tcl_FSRemoveDirectory -#define Tcl_FSRemoveDirectory \ - (tclStubsPtr->tcl_FSRemoveDirectory) /* 447 */ -#endif -#ifndef Tcl_FSRenameFile -#define Tcl_FSRenameFile \ - (tclStubsPtr->tcl_FSRenameFile) /* 448 */ -#endif -#ifndef Tcl_FSLstat -#define Tcl_FSLstat \ - (tclStubsPtr->tcl_FSLstat) /* 449 */ -#endif -#ifndef Tcl_FSUtime -#define Tcl_FSUtime \ - (tclStubsPtr->tcl_FSUtime) /* 450 */ -#endif -#ifndef Tcl_FSFileAttrsGet -#define Tcl_FSFileAttrsGet \ - (tclStubsPtr->tcl_FSFileAttrsGet) /* 451 */ -#endif -#ifndef Tcl_FSFileAttrsSet -#define Tcl_FSFileAttrsSet \ - (tclStubsPtr->tcl_FSFileAttrsSet) /* 452 */ -#endif -#ifndef Tcl_FSFileAttrStrings -#define Tcl_FSFileAttrStrings \ - (tclStubsPtr->tcl_FSFileAttrStrings) /* 453 */ -#endif -#ifndef Tcl_FSStat -#define Tcl_FSStat \ - (tclStubsPtr->tcl_FSStat) /* 454 */ -#endif -#ifndef Tcl_FSAccess -#define Tcl_FSAccess \ - (tclStubsPtr->tcl_FSAccess) /* 455 */ -#endif -#ifndef Tcl_FSOpenFileChannel -#define Tcl_FSOpenFileChannel \ - (tclStubsPtr->tcl_FSOpenFileChannel) /* 456 */ -#endif -#ifndef Tcl_FSGetCwd -#define Tcl_FSGetCwd \ - (tclStubsPtr->tcl_FSGetCwd) /* 457 */ -#endif -#ifndef Tcl_FSChdir -#define Tcl_FSChdir \ - (tclStubsPtr->tcl_FSChdir) /* 458 */ -#endif -#ifndef Tcl_FSConvertToPathType -#define Tcl_FSConvertToPathType \ - (tclStubsPtr->tcl_FSConvertToPathType) /* 459 */ -#endif -#ifndef Tcl_FSJoinPath -#define Tcl_FSJoinPath \ - (tclStubsPtr->tcl_FSJoinPath) /* 460 */ -#endif -#ifndef Tcl_FSSplitPath -#define Tcl_FSSplitPath \ - (tclStubsPtr->tcl_FSSplitPath) /* 461 */ -#endif -#ifndef Tcl_FSEqualPaths -#define Tcl_FSEqualPaths \ - (tclStubsPtr->tcl_FSEqualPaths) /* 462 */ -#endif -#ifndef Tcl_FSGetNormalizedPath -#define Tcl_FSGetNormalizedPath \ - (tclStubsPtr->tcl_FSGetNormalizedPath) /* 463 */ -#endif -#ifndef Tcl_FSJoinToPath -#define Tcl_FSJoinToPath \ - (tclStubsPtr->tcl_FSJoinToPath) /* 464 */ -#endif -#ifndef Tcl_FSGetInternalRep -#define Tcl_FSGetInternalRep \ - (tclStubsPtr->tcl_FSGetInternalRep) /* 465 */ -#endif -#ifndef Tcl_FSGetTranslatedPath -#define Tcl_FSGetTranslatedPath \ - (tclStubsPtr->tcl_FSGetTranslatedPath) /* 466 */ -#endif -#ifndef Tcl_FSEvalFile -#define Tcl_FSEvalFile \ - (tclStubsPtr->tcl_FSEvalFile) /* 467 */ -#endif -#ifndef Tcl_FSNewNativePath -#define Tcl_FSNewNativePath \ - (tclStubsPtr->tcl_FSNewNativePath) /* 468 */ -#endif -#ifndef Tcl_FSGetNativePath -#define Tcl_FSGetNativePath \ - (tclStubsPtr->tcl_FSGetNativePath) /* 469 */ -#endif -#ifndef Tcl_FSFileSystemInfo -#define Tcl_FSFileSystemInfo \ - (tclStubsPtr->tcl_FSFileSystemInfo) /* 470 */ -#endif -#ifndef Tcl_FSPathSeparator -#define Tcl_FSPathSeparator \ - (tclStubsPtr->tcl_FSPathSeparator) /* 471 */ -#endif -#ifndef Tcl_FSListVolumes -#define Tcl_FSListVolumes \ - (tclStubsPtr->tcl_FSListVolumes) /* 472 */ -#endif -#ifndef Tcl_FSRegister -#define Tcl_FSRegister \ - (tclStubsPtr->tcl_FSRegister) /* 473 */ -#endif -#ifndef Tcl_FSUnregister -#define Tcl_FSUnregister \ - (tclStubsPtr->tcl_FSUnregister) /* 474 */ -#endif -#ifndef Tcl_FSData -#define Tcl_FSData \ - (tclStubsPtr->tcl_FSData) /* 475 */ -#endif -#ifndef Tcl_FSGetTranslatedStringPath -#define Tcl_FSGetTranslatedStringPath \ - (tclStubsPtr->tcl_FSGetTranslatedStringPath) /* 476 */ -#endif -#ifndef Tcl_FSGetFileSystemForPath -#define Tcl_FSGetFileSystemForPath \ - (tclStubsPtr->tcl_FSGetFileSystemForPath) /* 477 */ -#endif -#ifndef Tcl_FSGetPathType -#define Tcl_FSGetPathType \ - (tclStubsPtr->tcl_FSGetPathType) /* 478 */ -#endif -#ifndef Tcl_OutputBuffered -#define Tcl_OutputBuffered \ - (tclStubsPtr->tcl_OutputBuffered) /* 479 */ -#endif -#ifndef Tcl_FSMountsChanged -#define Tcl_FSMountsChanged \ - (tclStubsPtr->tcl_FSMountsChanged) /* 480 */ -#endif -#ifndef Tcl_EvalTokensStandard -#define Tcl_EvalTokensStandard \ - (tclStubsPtr->tcl_EvalTokensStandard) /* 481 */ -#endif -#ifndef Tcl_GetTime -#define Tcl_GetTime \ - (tclStubsPtr->tcl_GetTime) /* 482 */ -#endif -#ifndef Tcl_CreateObjTrace -#define Tcl_CreateObjTrace \ - (tclStubsPtr->tcl_CreateObjTrace) /* 483 */ -#endif -#ifndef Tcl_GetCommandInfoFromToken -#define Tcl_GetCommandInfoFromToken \ - (tclStubsPtr->tcl_GetCommandInfoFromToken) /* 484 */ -#endif -#ifndef Tcl_SetCommandInfoFromToken -#define Tcl_SetCommandInfoFromToken \ - (tclStubsPtr->tcl_SetCommandInfoFromToken) /* 485 */ -#endif -#ifndef Tcl_DbNewWideIntObj -#define Tcl_DbNewWideIntObj \ - (tclStubsPtr->tcl_DbNewWideIntObj) /* 486 */ -#endif -#ifndef Tcl_GetWideIntFromObj -#define Tcl_GetWideIntFromObj \ - (tclStubsPtr->tcl_GetWideIntFromObj) /* 487 */ -#endif -#ifndef Tcl_NewWideIntObj -#define Tcl_NewWideIntObj \ - (tclStubsPtr->tcl_NewWideIntObj) /* 488 */ -#endif -#ifndef Tcl_SetWideIntObj -#define Tcl_SetWideIntObj \ - (tclStubsPtr->tcl_SetWideIntObj) /* 489 */ -#endif -#ifndef Tcl_AllocStatBuf -#define Tcl_AllocStatBuf \ - (tclStubsPtr->tcl_AllocStatBuf) /* 490 */ -#endif -#ifndef Tcl_Seek -#define Tcl_Seek \ - (tclStubsPtr->tcl_Seek) /* 491 */ -#endif -#ifndef Tcl_Tell -#define Tcl_Tell \ - (tclStubsPtr->tcl_Tell) /* 492 */ -#endif -#ifndef Tcl_ChannelWideSeekProc -#define Tcl_ChannelWideSeekProc \ - (tclStubsPtr->tcl_ChannelWideSeekProc) /* 493 */ -#endif - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLDECLS */ - +/* + * tclDecls.h -- + * + * Declarations of functions in the platform independent public Tcl API. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclDecls.h,v 1.93.2.2 2004/05/17 14:26:47 kennykb Exp $ + */ + +#ifndef _TCLDECLS +#define _TCLDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tcl.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +/* 0 */ +EXTERN int Tcl_PkgProvideEx _ANSI_ARGS_((Tcl_Interp* interp, + CONST char* name, CONST char* version, + ClientData clientData)); +/* 1 */ +EXTERN CONST84_RETURN char * Tcl_PkgRequireEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + CONST char * version, int exact, + ClientData * clientDataPtr)); +/* 2 */ +EXTERN void Tcl_Panic _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); +/* 3 */ +EXTERN char * Tcl_Alloc _ANSI_ARGS_((unsigned int size)); +/* 4 */ +EXTERN void Tcl_Free _ANSI_ARGS_((char * ptr)); +/* 5 */ +EXTERN char * Tcl_Realloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* 6 */ +EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, + CONST char * file, int line)); +/* 7 */ +EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char * ptr, + CONST char * file, int line)); +/* 8 */ +EXTERN char * Tcl_DbCkrealloc _ANSI_ARGS_((char * ptr, + unsigned int size, CONST char * file, + int line)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 9 */ +EXTERN void Tcl_CreateFileHandler _ANSI_ARGS_((int fd, int mask, + Tcl_FileProc * proc, ClientData clientData)); +#endif /* UNIX */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 10 */ +EXTERN void Tcl_DeleteFileHandler _ANSI_ARGS_((int fd)); +#endif /* UNIX */ +/* 11 */ +EXTERN void Tcl_SetTimer _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 12 */ +EXTERN void Tcl_Sleep _ANSI_ARGS_((int ms)); +/* 13 */ +EXTERN int Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 14 */ +EXTERN int Tcl_AppendAllObjTypes _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr)); +/* 15 */ +EXTERN void Tcl_AppendStringsToObj _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); +/* 16 */ +EXTERN void Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj* objPtr, + CONST char* bytes, int length)); +/* 17 */ +EXTERN Tcl_Obj * Tcl_ConcatObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST objv[])); +/* 18 */ +EXTERN int Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); +/* 19 */ +EXTERN void Tcl_DbDecrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 20 */ +EXTERN void Tcl_DbIncrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 21 */ +EXTERN int Tcl_DbIsShared _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 22 */ +EXTERN Tcl_Obj * Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue, + CONST char * file, int line)); +/* 23 */ +EXTERN Tcl_Obj * Tcl_DbNewByteArrayObj _ANSI_ARGS_(( + CONST unsigned char * bytes, int length, + CONST char * file, int line)); +/* 24 */ +EXTERN Tcl_Obj * Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue, + CONST char * file, int line)); +/* 25 */ +EXTERN Tcl_Obj * Tcl_DbNewListObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST * objv, CONST char * file, + int line)); +/* 26 */ +EXTERN Tcl_Obj * Tcl_DbNewLongObj _ANSI_ARGS_((long longValue, + CONST char * file, int line)); +/* 27 */ +EXTERN Tcl_Obj * Tcl_DbNewObj _ANSI_ARGS_((CONST char * file, + int line)); +/* 28 */ +EXTERN Tcl_Obj * Tcl_DbNewStringObj _ANSI_ARGS_((CONST char * bytes, + int length, CONST char * file, int line)); +/* 29 */ +EXTERN Tcl_Obj * Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 30 */ +EXTERN void TclFreeObj _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 31 */ +EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * boolPtr)); +/* 32 */ +EXTERN int Tcl_GetBooleanFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + int * boolPtr)); +/* 33 */ +EXTERN unsigned char * Tcl_GetByteArrayFromObj _ANSI_ARGS_(( + Tcl_Obj * objPtr, int * lengthPtr)); +/* 34 */ +EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, double * doublePtr)); +/* 35 */ +EXTERN int Tcl_GetDoubleFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + double * doublePtr)); +/* 36 */ +EXTERN int Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, CONST84 char ** tablePtr, + CONST char * msg, int flags, int * indexPtr)); +/* 37 */ +EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * intPtr)); +/* 38 */ +EXTERN int Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int * intPtr)); +/* 39 */ +EXTERN int Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, long * longPtr)); +/* 40 */ +EXTERN Tcl_ObjType * Tcl_GetObjType _ANSI_ARGS_((CONST char * typeName)); +/* 41 */ +EXTERN char * Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int * lengthPtr)); +/* 42 */ +EXTERN void Tcl_InvalidateStringRep _ANSI_ARGS_(( + Tcl_Obj * objPtr)); +/* 43 */ +EXTERN int Tcl_ListObjAppendList _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + Tcl_Obj * elemListPtr)); +/* 44 */ +EXTERN int Tcl_ListObjAppendElement _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + Tcl_Obj * objPtr)); +/* 45 */ +EXTERN int Tcl_ListObjGetElements _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + int * objcPtr, Tcl_Obj *** objvPtr)); +/* 46 */ +EXTERN int Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int index, + Tcl_Obj ** objPtrPtr)); +/* 47 */ +EXTERN int Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int * lengthPtr)); +/* 48 */ +EXTERN int Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int first, int count, + int objc, Tcl_Obj *CONST objv[])); +/* 49 */ +EXTERN Tcl_Obj * Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue)); +/* 50 */ +EXTERN Tcl_Obj * Tcl_NewByteArrayObj _ANSI_ARGS_(( + CONST unsigned char* bytes, int length)); +/* 51 */ +EXTERN Tcl_Obj * Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue)); +/* 52 */ +EXTERN Tcl_Obj * Tcl_NewIntObj _ANSI_ARGS_((int intValue)); +/* 53 */ +EXTERN Tcl_Obj * Tcl_NewListObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST objv[])); +/* 54 */ +EXTERN Tcl_Obj * Tcl_NewLongObj _ANSI_ARGS_((long longValue)); +/* 55 */ +EXTERN Tcl_Obj * Tcl_NewObj _ANSI_ARGS_((void)); +/* 56 */ +EXTERN Tcl_Obj * Tcl_NewStringObj _ANSI_ARGS_((CONST char * bytes, + int length)); +/* 57 */ +EXTERN void Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int boolValue)); +/* 58 */ +EXTERN unsigned char * Tcl_SetByteArrayLength _ANSI_ARGS_((Tcl_Obj * objPtr, + int length)); +/* 59 */ +EXTERN void Tcl_SetByteArrayObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST unsigned char * bytes, int length)); +/* 60 */ +EXTERN void Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj * objPtr, + double doubleValue)); +/* 61 */ +EXTERN void Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int intValue)); +/* 62 */ +EXTERN void Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int objc, Tcl_Obj *CONST objv[])); +/* 63 */ +EXTERN void Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj * objPtr, + long longValue)); +/* 64 */ +EXTERN void Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj * objPtr, + int length)); +/* 65 */ +EXTERN void Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj* objPtr, + CONST char* bytes, int length)); +/* 66 */ +EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * message)); +/* 67 */ +EXTERN void Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * message, int length)); +/* 68 */ +EXTERN void Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp * interp)); +/* 69 */ +EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 70 */ +EXTERN void Tcl_AppendResult _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 71 */ +EXTERN Tcl_AsyncHandler Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc * proc, + ClientData clientData)); +/* 72 */ +EXTERN void Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async)); +/* 73 */ +EXTERN int Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int code)); +/* 74 */ +EXTERN void Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async)); +/* 75 */ +EXTERN int Tcl_AsyncReady _ANSI_ARGS_((void)); +/* 76 */ +EXTERN void Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp * interp)); +/* 77 */ +EXTERN char Tcl_Backslash _ANSI_ARGS_((CONST char * src, + int * readPtr)); +/* 78 */ +EXTERN int Tcl_BadChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * optionName, + CONST char * optionList)); +/* 79 */ +EXTERN void Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 80 */ +EXTERN void Tcl_CancelIdleCall _ANSI_ARGS_(( + Tcl_IdleProc * idleProc, + ClientData clientData)); +/* 81 */ +EXTERN int Tcl_Close _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 82 */ +EXTERN int Tcl_CommandComplete _ANSI_ARGS_((CONST char * cmd)); +/* 83 */ +EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv)); +/* 84 */ +EXTERN int Tcl_ConvertElement _ANSI_ARGS_((CONST char * src, + char * dst, int flags)); +/* 85 */ +EXTERN int Tcl_ConvertCountedElement _ANSI_ARGS_(( + CONST char * src, int length, char * dst, + int flags)); +/* 86 */ +EXTERN int Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp * slave, + CONST char * slaveCmd, Tcl_Interp * target, + CONST char * targetCmd, int argc, + CONST84 char * CONST * argv)); +/* 87 */ +EXTERN int Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp * slave, + CONST char * slaveCmd, Tcl_Interp * target, + CONST char * targetCmd, int objc, + Tcl_Obj *CONST objv[])); +/* 88 */ +EXTERN Tcl_Channel Tcl_CreateChannel _ANSI_ARGS_(( + Tcl_ChannelType * typePtr, + CONST char * chanName, + ClientData instanceData, int mask)); +/* 89 */ +EXTERN void Tcl_CreateChannelHandler _ANSI_ARGS_(( + Tcl_Channel chan, int mask, + Tcl_ChannelProc * proc, + ClientData clientData)); +/* 90 */ +EXTERN void Tcl_CreateCloseHandler _ANSI_ARGS_((Tcl_Channel chan, + Tcl_CloseProc * proc, ClientData clientData)); +/* 91 */ +EXTERN Tcl_Command Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, Tcl_CmdProc * proc, + ClientData clientData, + Tcl_CmdDeleteProc * deleteProc)); +/* 92 */ +EXTERN void Tcl_CreateEventSource _ANSI_ARGS_(( + Tcl_EventSetupProc * setupProc, + Tcl_EventCheckProc * checkProc, + ClientData clientData)); +/* 93 */ +EXTERN void Tcl_CreateExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 94 */ +EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); +/* 95 */ +EXTERN void Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, int numArgs, + Tcl_ValueType * argTypes, + Tcl_MathProc * proc, ClientData clientData)); +/* 96 */ +EXTERN Tcl_Command Tcl_CreateObjCommand _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * cmdName, + Tcl_ObjCmdProc * proc, ClientData clientData, + Tcl_CmdDeleteProc * deleteProc)); +/* 97 */ +EXTERN Tcl_Interp * Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveName, int isSafe)); +/* 98 */ +EXTERN Tcl_TimerToken Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds, + Tcl_TimerProc * proc, ClientData clientData)); +/* 99 */ +EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp * interp, + int level, Tcl_CmdTraceProc * proc, + ClientData clientData)); +/* 100 */ +EXTERN void Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name)); +/* 101 */ +EXTERN void Tcl_DeleteChannelHandler _ANSI_ARGS_(( + Tcl_Channel chan, Tcl_ChannelProc * proc, + ClientData clientData)); +/* 102 */ +EXTERN void Tcl_DeleteCloseHandler _ANSI_ARGS_((Tcl_Channel chan, + Tcl_CloseProc * proc, ClientData clientData)); +/* 103 */ +EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName)); +/* 104 */ +EXTERN int Tcl_DeleteCommandFromToken _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command)); +/* 105 */ +EXTERN void Tcl_DeleteEvents _ANSI_ARGS_(( + Tcl_EventDeleteProc * proc, + ClientData clientData)); +/* 106 */ +EXTERN void Tcl_DeleteEventSource _ANSI_ARGS_(( + Tcl_EventSetupProc * setupProc, + Tcl_EventCheckProc * checkProc, + ClientData clientData)); +/* 107 */ +EXTERN void Tcl_DeleteExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 108 */ +EXTERN void Tcl_DeleteHashEntry _ANSI_ARGS_(( + Tcl_HashEntry * entryPtr)); +/* 109 */ +EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 110 */ +EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp * interp)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 111 */ +EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, + Tcl_Pid * pidPtr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 111 */ +EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, + Tcl_Pid * pidPtr)); +#endif /* __WIN32__ */ +/* 112 */ +EXTERN void Tcl_DeleteTimerHandler _ANSI_ARGS_(( + Tcl_TimerToken token)); +/* 113 */ +EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Trace trace)); +/* 114 */ +EXTERN void Tcl_DontCallWhenDeleted _ANSI_ARGS_(( + Tcl_Interp * interp, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 115 */ +EXTERN int Tcl_DoOneEvent _ANSI_ARGS_((int flags)); +/* 116 */ +EXTERN void Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc * proc, + ClientData clientData)); +/* 117 */ +EXTERN char * Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString * dsPtr, + CONST char * str, int length)); +/* 118 */ +EXTERN char * Tcl_DStringAppendElement _ANSI_ARGS_(( + Tcl_DString * dsPtr, CONST char * string)); +/* 119 */ +EXTERN void Tcl_DStringEndSublist _ANSI_ARGS_(( + Tcl_DString * dsPtr)); +/* 120 */ +EXTERN void Tcl_DStringFree _ANSI_ARGS_((Tcl_DString * dsPtr)); +/* 121 */ +EXTERN void Tcl_DStringGetResult _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_DString * dsPtr)); +/* 122 */ +EXTERN void Tcl_DStringInit _ANSI_ARGS_((Tcl_DString * dsPtr)); +/* 123 */ +EXTERN void Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * dsPtr)); +/* 124 */ +EXTERN void Tcl_DStringSetLength _ANSI_ARGS_(( + Tcl_DString * dsPtr, int length)); +/* 125 */ +EXTERN void Tcl_DStringStartSublist _ANSI_ARGS_(( + Tcl_DString * dsPtr)); +/* 126 */ +EXTERN int Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan)); +/* 127 */ +EXTERN CONST84_RETURN char * Tcl_ErrnoId _ANSI_ARGS_((void)); +/* 128 */ +EXTERN CONST84_RETURN char * Tcl_ErrnoMsg _ANSI_ARGS_((int err)); +/* 129 */ +EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 130 */ +EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * fileName)); +/* 131 */ +EXTERN int Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr)); +/* 132 */ +EXTERN void Tcl_EventuallyFree _ANSI_ARGS_(( + ClientData clientData, + Tcl_FreeProc * freeProc)); +/* 133 */ +EXTERN void Tcl_Exit _ANSI_ARGS_((int status)); +/* 134 */ +EXTERN int Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * hiddenCmdToken, + CONST char * cmdName)); +/* 135 */ +EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * ptr)); +/* 136 */ +EXTERN int Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int * ptr)); +/* 137 */ +EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, double * ptr)); +/* 138 */ +EXTERN int Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, double * ptr)); +/* 139 */ +EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, long * ptr)); +/* 140 */ +EXTERN int Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, long * ptr)); +/* 141 */ +EXTERN int Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); +/* 142 */ +EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 143 */ +EXTERN void Tcl_Finalize _ANSI_ARGS_((void)); +/* 144 */ +EXTERN void Tcl_FindExecutable _ANSI_ARGS_((CONST char * argv0)); +/* 145 */ +EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, + Tcl_HashSearch * searchPtr)); +/* 146 */ +EXTERN int Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan)); +/* 147 */ +EXTERN void Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp * interp)); +/* 148 */ +EXTERN int Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveCmd, + Tcl_Interp ** targetInterpPtr, + CONST84 char ** targetCmdPtr, int * argcPtr, + CONST84 char *** argvPtr)); +/* 149 */ +EXTERN int Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveCmd, + Tcl_Interp ** targetInterpPtr, + CONST84 char ** targetCmdPtr, int * objcPtr, + Tcl_Obj *** objv)); +/* 150 */ +EXTERN ClientData Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_InterpDeleteProc ** procPtr)); +/* 151 */ +EXTERN Tcl_Channel Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * chanName, int * modePtr)); +/* 152 */ +EXTERN int Tcl_GetChannelBufferSize _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 153 */ +EXTERN int Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan, + int direction, ClientData * handlePtr)); +/* 154 */ +EXTERN ClientData Tcl_GetChannelInstanceData _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 155 */ +EXTERN int Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan)); +/* 156 */ +EXTERN CONST84_RETURN char * Tcl_GetChannelName _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 157 */ +EXTERN int Tcl_GetChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan, + CONST char * optionName, Tcl_DString * dsPtr)); +/* 158 */ +EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan)); +/* 159 */ +EXTERN int Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, Tcl_CmdInfo * infoPtr)); +/* 160 */ +EXTERN CONST84_RETURN char * Tcl_GetCommandName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command)); +/* 161 */ +EXTERN int Tcl_GetErrno _ANSI_ARGS_((void)); +/* 162 */ +EXTERN CONST84_RETURN char * Tcl_GetHostName _ANSI_ARGS_((void)); +/* 163 */ +EXTERN int Tcl_GetInterpPath _ANSI_ARGS_(( + Tcl_Interp * askInterp, + Tcl_Interp * slaveInterp)); +/* 164 */ +EXTERN Tcl_Interp * Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp * interp)); +/* 165 */ +EXTERN CONST char * Tcl_GetNameOfExecutable _ANSI_ARGS_((void)); +/* 166 */ +EXTERN Tcl_Obj * Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp * interp)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 167 */ +EXTERN int Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int forWriting, + int checkUsage, ClientData * filePtr)); +#endif /* UNIX */ +/* 168 */ +EXTERN Tcl_PathType Tcl_GetPathType _ANSI_ARGS_((CONST char * path)); +/* 169 */ +EXTERN int Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan, + Tcl_DString * dsPtr)); +/* 170 */ +EXTERN int Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan, + Tcl_Obj * objPtr)); +/* 171 */ +EXTERN int Tcl_GetServiceMode _ANSI_ARGS_((void)); +/* 172 */ +EXTERN Tcl_Interp * Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveName)); +/* 173 */ +EXTERN Tcl_Channel Tcl_GetStdChannel _ANSI_ARGS_((int type)); +/* 174 */ +EXTERN CONST84_RETURN char * Tcl_GetStringResult _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 175 */ +EXTERN CONST84_RETURN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags)); +/* 176 */ +EXTERN CONST84_RETURN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 177 */ +EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * command)); +/* 178 */ +EXTERN int Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr)); +/* 179 */ +EXTERN int Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, + CONST char * hiddenCmdToken)); +/* 180 */ +EXTERN int Tcl_Init _ANSI_ARGS_((Tcl_Interp * interp)); +/* 181 */ +EXTERN void Tcl_InitHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, int keyType)); +/* 182 */ +EXTERN int Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan)); +/* 183 */ +EXTERN int Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 184 */ +EXTERN int Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp * interp)); +/* 185 */ +EXTERN int Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp * interp)); +/* 186 */ +EXTERN char * Tcl_JoinPath _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv, + Tcl_DString * resultPtr)); +/* 187 */ +EXTERN int Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, char * addr, int type)); +/* Slot 188 is reserved */ +/* 189 */ +EXTERN Tcl_Channel Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle, + int mode)); +/* 190 */ +EXTERN int Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp * interp)); +/* 191 */ +EXTERN Tcl_Channel Tcl_MakeTcpClientChannel _ANSI_ARGS_(( + ClientData tcpSocket)); +/* 192 */ +EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv)); +/* 193 */ +EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( + Tcl_HashSearch * searchPtr)); +/* 194 */ +EXTERN void Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel, + int mask)); +/* 195 */ +EXTERN Tcl_Obj * Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + int flags)); +/* 196 */ +EXTERN Tcl_Obj * Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + Tcl_Obj * newValuePtr, int flags)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 197 */ +EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( + Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 197 */ +EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( + Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +#endif /* __WIN32__ */ +/* 198 */ +EXTERN Tcl_Channel Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * fileName, + CONST char * modeString, int permissions)); +/* 199 */ +EXTERN Tcl_Channel Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp * interp, + int port, CONST char * address, + CONST char * myaddr, int myport, int async)); +/* 200 */ +EXTERN Tcl_Channel Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp * interp, + int port, CONST char * host, + Tcl_TcpAcceptProc * acceptProc, + ClientData callbackData)); +/* 201 */ +EXTERN void Tcl_Preserve _ANSI_ARGS_((ClientData data)); +/* 202 */ +EXTERN void Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp * interp, + double value, char * dst)); +/* 203 */ +EXTERN int Tcl_PutEnv _ANSI_ARGS_((CONST char * string)); +/* 204 */ +EXTERN CONST84_RETURN char * Tcl_PosixError _ANSI_ARGS_((Tcl_Interp * interp)); +/* 205 */ +EXTERN void Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event * evPtr, + Tcl_QueuePosition position)); +/* 206 */ +EXTERN int Tcl_Read _ANSI_ARGS_((Tcl_Channel chan, + char * bufPtr, int toRead)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 207 */ +EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 207 */ +EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); +#endif /* __WIN32__ */ +/* 208 */ +EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmd, int flags)); +/* 209 */ +EXTERN int Tcl_RecordAndEvalObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * cmdPtr, + int flags)); +/* 210 */ +EXTERN void Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 211 */ +EXTERN void Tcl_RegisterObjType _ANSI_ARGS_(( + Tcl_ObjType * typePtr)); +/* 212 */ +EXTERN Tcl_RegExp Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 213 */ +EXTERN int Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp regexp, CONST char * str, + CONST char * start)); +/* 214 */ +EXTERN int Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CONST char * pattern)); +/* 215 */ +EXTERN void Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp, + int index, CONST84 char ** startPtr, + CONST84 char ** endPtr)); +/* 216 */ +EXTERN void Tcl_Release _ANSI_ARGS_((ClientData clientData)); +/* 217 */ +EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp * interp)); +/* 218 */ +EXTERN int Tcl_ScanElement _ANSI_ARGS_((CONST char * str, + int * flagPtr)); +/* 219 */ +EXTERN int Tcl_ScanCountedElement _ANSI_ARGS_((CONST char * str, + int length, int * flagPtr)); +/* 220 */ +EXTERN int Tcl_SeekOld _ANSI_ARGS_((Tcl_Channel chan, + int offset, int mode)); +/* 221 */ +EXTERN int Tcl_ServiceAll _ANSI_ARGS_((void)); +/* 222 */ +EXTERN int Tcl_ServiceEvent _ANSI_ARGS_((int flags)); +/* 223 */ +EXTERN void Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 224 */ +EXTERN void Tcl_SetChannelBufferSize _ANSI_ARGS_(( + Tcl_Channel chan, int sz)); +/* 225 */ +EXTERN int Tcl_SetChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan, + CONST char * optionName, + CONST char * newValue)); +/* 226 */ +EXTERN int Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, + CONST Tcl_CmdInfo * infoPtr)); +/* 227 */ +EXTERN void Tcl_SetErrno _ANSI_ARGS_((int err)); +/* 228 */ +EXTERN void Tcl_SetErrorCode _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 229 */ +EXTERN void Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 230 */ +EXTERN void Tcl_SetPanicProc _ANSI_ARGS_(( + Tcl_PanicProc * panicProc)); +/* 231 */ +EXTERN int Tcl_SetRecursionLimit _ANSI_ARGS_(( + Tcl_Interp * interp, int depth)); +/* 232 */ +EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp * interp, + char * str, Tcl_FreeProc * freeProc)); +/* 233 */ +EXTERN int Tcl_SetServiceMode _ANSI_ARGS_((int mode)); +/* 234 */ +EXTERN void Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * errorObjPtr)); +/* 235 */ +EXTERN void Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * resultObjPtr)); +/* 236 */ +EXTERN void Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel, + int type)); +/* 237 */ +EXTERN CONST84_RETURN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, CONST char * newValue, + int flags)); +/* 238 */ +EXTERN CONST84_RETURN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + CONST char * newValue, int flags)); +/* 239 */ +EXTERN CONST84_RETURN char * Tcl_SignalId _ANSI_ARGS_((int sig)); +/* 240 */ +EXTERN CONST84_RETURN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); +/* 241 */ +EXTERN void Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp * interp)); +/* 242 */ +EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * listStr, int * argcPtr, + CONST84 char *** argvPtr)); +/* 243 */ +EXTERN void Tcl_SplitPath _ANSI_ARGS_((CONST char * path, + int * argcPtr, CONST84 char *** argvPtr)); +/* 244 */ +EXTERN void Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * pkgName, + Tcl_PackageInitProc * initProc, + Tcl_PackageInitProc * safeInitProc)); +/* 245 */ +EXTERN int Tcl_StringMatch _ANSI_ARGS_((CONST char * str, + CONST char * pattern)); +/* 246 */ +EXTERN int Tcl_TellOld _ANSI_ARGS_((Tcl_Channel chan)); +/* 247 */ +EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 248 */ +EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 249 */ +EXTERN char * Tcl_TranslateFileName _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_DString * bufferPtr)); +/* 250 */ +EXTERN int Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, + CONST char * str, int len, int atHead)); +/* 251 */ +EXTERN void Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 252 */ +EXTERN int Tcl_UnregisterChannel _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan)); +/* 253 */ +EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags)); +/* 254 */ +EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 255 */ +EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 256 */ +EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 257 */ +EXTERN void Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 258 */ +EXTERN int Tcl_UpVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * frameName, CONST char * varName, + CONST char * localName, int flags)); +/* 259 */ +EXTERN int Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * frameName, CONST char * part1, + CONST char * part2, CONST char * localName, + int flags)); +/* 260 */ +EXTERN int Tcl_VarEval _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 261 */ +EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * procPtr, + ClientData prevClientData)); +/* 262 */ +EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * procPtr, + ClientData prevClientData)); +/* 263 */ +EXTERN int Tcl_Write _ANSI_ARGS_((Tcl_Channel chan, + CONST char * s, int slen)); +/* 264 */ +EXTERN void Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], + CONST char * message)); +/* 265 */ +EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_(( + CONST char * fileName)); +/* 266 */ +EXTERN void Tcl_ValidateAllMemory _ANSI_ARGS_((CONST char * file, + int line)); +/* 267 */ +EXTERN void Tcl_AppendResultVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 268 */ +EXTERN void Tcl_AppendStringsToObjVA _ANSI_ARGS_(( + Tcl_Obj * objPtr, va_list argList)); +/* 269 */ +EXTERN CONST84_RETURN char * Tcl_HashStats _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 270 */ +EXTERN CONST84_RETURN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CONST84 char ** termPtr)); +/* 271 */ +EXTERN CONST84_RETURN char * Tcl_PkgPresent _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version, + int exact)); +/* 272 */ +EXTERN CONST84_RETURN char * Tcl_PkgPresentEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + CONST char * version, int exact, + ClientData * clientDataPtr)); +/* 273 */ +EXTERN int Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version)); +/* 274 */ +EXTERN CONST84_RETURN char * Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version, + int exact)); +/* 275 */ +EXTERN void Tcl_SetErrorCodeVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 276 */ +EXTERN int Tcl_VarEvalVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 277 */ +EXTERN Tcl_Pid Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, + int options)); +/* 278 */ +EXTERN void Tcl_PanicVA _ANSI_ARGS_((CONST char * format, + va_list argList)); +/* 279 */ +EXTERN void Tcl_GetVersion _ANSI_ARGS_((int * major, int * minor, + int * patchLevel, int * type)); +/* 280 */ +EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp * interp)); +/* 281 */ +EXTERN Tcl_Channel Tcl_StackChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_ChannelType * typePtr, + ClientData instanceData, int mask, + Tcl_Channel prevChan)); +/* 282 */ +EXTERN int Tcl_UnstackChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 283 */ +EXTERN Tcl_Channel Tcl_GetStackedChannel _ANSI_ARGS_((Tcl_Channel chan)); +/* 284 */ +EXTERN void Tcl_SetMainLoop _ANSI_ARGS_((Tcl_MainLoopProc * proc)); +/* Slot 285 is reserved */ +/* 286 */ +EXTERN void Tcl_AppendObjToObj _ANSI_ARGS_((Tcl_Obj * objPtr, + Tcl_Obj * appendObjPtr)); +/* 287 */ +EXTERN Tcl_Encoding Tcl_CreateEncoding _ANSI_ARGS_(( + Tcl_EncodingType * typePtr)); +/* 288 */ +EXTERN void Tcl_CreateThreadExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 289 */ +EXTERN void Tcl_DeleteThreadExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 290 */ +EXTERN void Tcl_DiscardResult _ANSI_ARGS_(( + Tcl_SavedResult * statePtr)); +/* 291 */ +EXTERN int Tcl_EvalEx _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * script, int numBytes, int flags)); +/* 292 */ +EXTERN int Tcl_EvalObjv _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 293 */ +EXTERN int Tcl_EvalObjEx _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int flags)); +/* 294 */ +EXTERN void Tcl_ExitThread _ANSI_ARGS_((int status)); +/* 295 */ +EXTERN int Tcl_ExternalToUtf _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Encoding encoding, CONST char * src, + int srcLen, int flags, + Tcl_EncodingState * statePtr, char * dst, + int dstLen, int * srcReadPtr, + int * dstWrotePtr, int * dstCharsPtr)); +/* 296 */ +EXTERN char * Tcl_ExternalToUtfDString _ANSI_ARGS_(( + Tcl_Encoding encoding, CONST char * src, + int srcLen, Tcl_DString * dsPtr)); +/* 297 */ +EXTERN void Tcl_FinalizeThread _ANSI_ARGS_((void)); +/* 298 */ +EXTERN void Tcl_FinalizeNotifier _ANSI_ARGS_(( + ClientData clientData)); +/* 299 */ +EXTERN void Tcl_FreeEncoding _ANSI_ARGS_((Tcl_Encoding encoding)); +/* 300 */ +EXTERN Tcl_ThreadId Tcl_GetCurrentThread _ANSI_ARGS_((void)); +/* 301 */ +EXTERN Tcl_Encoding Tcl_GetEncoding _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name)); +/* 302 */ +EXTERN CONST84_RETURN char * Tcl_GetEncodingName _ANSI_ARGS_(( + Tcl_Encoding encoding)); +/* 303 */ +EXTERN void Tcl_GetEncodingNames _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 304 */ +EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + CONST VOID * tablePtr, int offset, + CONST char * msg, int flags, int * indexPtr)); +/* 305 */ +EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_(( + Tcl_ThreadDataKey * keyPtr, int size)); +/* 306 */ +EXTERN Tcl_Obj * Tcl_GetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 307 */ +EXTERN ClientData Tcl_InitNotifier _ANSI_ARGS_((void)); +/* 308 */ +EXTERN void Tcl_MutexLock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); +/* 309 */ +EXTERN void Tcl_MutexUnlock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); +/* 310 */ +EXTERN void Tcl_ConditionNotify _ANSI_ARGS_(( + Tcl_Condition * condPtr)); +/* 311 */ +EXTERN void Tcl_ConditionWait _ANSI_ARGS_(( + Tcl_Condition * condPtr, + Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); +/* 312 */ +EXTERN int Tcl_NumUtfChars _ANSI_ARGS_((CONST char * src, + int len)); +/* 313 */ +EXTERN int Tcl_ReadChars _ANSI_ARGS_((Tcl_Channel channel, + Tcl_Obj * objPtr, int charsToRead, + int appendFlag)); +/* 314 */ +EXTERN void Tcl_RestoreResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_SavedResult * statePtr)); +/* 315 */ +EXTERN void Tcl_SaveResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_SavedResult * statePtr)); +/* 316 */ +EXTERN int Tcl_SetSystemEncoding _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name)); +/* 317 */ +EXTERN Tcl_Obj * Tcl_SetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + Tcl_Obj * newValuePtr, int flags)); +/* 318 */ +EXTERN void Tcl_ThreadAlert _ANSI_ARGS_((Tcl_ThreadId threadId)); +/* 319 */ +EXTERN void Tcl_ThreadQueueEvent _ANSI_ARGS_(( + Tcl_ThreadId threadId, Tcl_Event* evPtr, + Tcl_QueuePosition position)); +/* 320 */ +EXTERN Tcl_UniChar Tcl_UniCharAtIndex _ANSI_ARGS_((CONST char * src, + int index)); +/* 321 */ +EXTERN Tcl_UniChar Tcl_UniCharToLower _ANSI_ARGS_((int ch)); +/* 322 */ +EXTERN Tcl_UniChar Tcl_UniCharToTitle _ANSI_ARGS_((int ch)); +/* 323 */ +EXTERN Tcl_UniChar Tcl_UniCharToUpper _ANSI_ARGS_((int ch)); +/* 324 */ +EXTERN int Tcl_UniCharToUtf _ANSI_ARGS_((int ch, char * buf)); +/* 325 */ +EXTERN CONST84_RETURN char * Tcl_UtfAtIndex _ANSI_ARGS_((CONST char * src, + int index)); +/* 326 */ +EXTERN int Tcl_UtfCharComplete _ANSI_ARGS_((CONST char * src, + int len)); +/* 327 */ +EXTERN int Tcl_UtfBackslash _ANSI_ARGS_((CONST char * src, + int * readPtr, char * dst)); +/* 328 */ +EXTERN CONST84_RETURN char * Tcl_UtfFindFirst _ANSI_ARGS_((CONST char * src, + int ch)); +/* 329 */ +EXTERN CONST84_RETURN char * Tcl_UtfFindLast _ANSI_ARGS_((CONST char * src, + int ch)); +/* 330 */ +EXTERN CONST84_RETURN char * Tcl_UtfNext _ANSI_ARGS_((CONST char * src)); +/* 331 */ +EXTERN CONST84_RETURN char * Tcl_UtfPrev _ANSI_ARGS_((CONST char * src, + CONST char * start)); +/* 332 */ +EXTERN int Tcl_UtfToExternal _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Encoding encoding, CONST char * src, + int srcLen, int flags, + Tcl_EncodingState * statePtr, char * dst, + int dstLen, int * srcReadPtr, + int * dstWrotePtr, int * dstCharsPtr)); +/* 333 */ +EXTERN char * Tcl_UtfToExternalDString _ANSI_ARGS_(( + Tcl_Encoding encoding, CONST char * src, + int srcLen, Tcl_DString * dsPtr)); +/* 334 */ +EXTERN int Tcl_UtfToLower _ANSI_ARGS_((char * src)); +/* 335 */ +EXTERN int Tcl_UtfToTitle _ANSI_ARGS_((char * src)); +/* 336 */ +EXTERN int Tcl_UtfToUniChar _ANSI_ARGS_((CONST char * src, + Tcl_UniChar * chPtr)); +/* 337 */ +EXTERN int Tcl_UtfToUpper _ANSI_ARGS_((char * src)); +/* 338 */ +EXTERN int Tcl_WriteChars _ANSI_ARGS_((Tcl_Channel chan, + CONST char * src, int srcLen)); +/* 339 */ +EXTERN int Tcl_WriteObj _ANSI_ARGS_((Tcl_Channel chan, + Tcl_Obj * objPtr)); +/* 340 */ +EXTERN char * Tcl_GetString _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 341 */ +EXTERN CONST84_RETURN char * Tcl_GetDefaultEncodingDir _ANSI_ARGS_((void)); +/* 342 */ +EXTERN void Tcl_SetDefaultEncodingDir _ANSI_ARGS_(( + CONST char * path)); +/* 343 */ +EXTERN void Tcl_AlertNotifier _ANSI_ARGS_((ClientData clientData)); +/* 344 */ +EXTERN void Tcl_ServiceModeHook _ANSI_ARGS_((int mode)); +/* 345 */ +EXTERN int Tcl_UniCharIsAlnum _ANSI_ARGS_((int ch)); +/* 346 */ +EXTERN int Tcl_UniCharIsAlpha _ANSI_ARGS_((int ch)); +/* 347 */ +EXTERN int Tcl_UniCharIsDigit _ANSI_ARGS_((int ch)); +/* 348 */ +EXTERN int Tcl_UniCharIsLower _ANSI_ARGS_((int ch)); +/* 349 */ +EXTERN int Tcl_UniCharIsSpace _ANSI_ARGS_((int ch)); +/* 350 */ +EXTERN int Tcl_UniCharIsUpper _ANSI_ARGS_((int ch)); +/* 351 */ +EXTERN int Tcl_UniCharIsWordChar _ANSI_ARGS_((int ch)); +/* 352 */ +EXTERN int Tcl_UniCharLen _ANSI_ARGS_((CONST Tcl_UniChar * str)); +/* 353 */ +EXTERN int Tcl_UniCharNcmp _ANSI_ARGS_((CONST Tcl_UniChar * cs, + CONST Tcl_UniChar * ct, unsigned long n)); +/* 354 */ +EXTERN char * Tcl_UniCharToUtfDString _ANSI_ARGS_(( + CONST Tcl_UniChar * string, int numChars, + Tcl_DString * dsPtr)); +/* 355 */ +EXTERN Tcl_UniChar * Tcl_UtfToUniCharDString _ANSI_ARGS_(( + CONST char * string, int length, + Tcl_DString * dsPtr)); +/* 356 */ +EXTERN Tcl_RegExp Tcl_GetRegExpFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * patObj, + int flags)); +/* 357 */ +EXTERN Tcl_Obj * Tcl_EvalTokens _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Token * tokenPtr, int count)); +/* 358 */ +EXTERN void Tcl_FreeParse _ANSI_ARGS_((Tcl_Parse * parsePtr)); +/* 359 */ +EXTERN void Tcl_LogCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * script, CONST char * command, + int length)); +/* 360 */ +EXTERN int Tcl_ParseBraces _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr, int append, + CONST84 char ** termPtr)); +/* 361 */ +EXTERN int Tcl_ParseCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + int nested, Tcl_Parse * parsePtr)); +/* 362 */ +EXTERN int Tcl_ParseExpr _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr)); +/* 363 */ +EXTERN int Tcl_ParseQuotedString _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * string, + int numBytes, Tcl_Parse * parsePtr, + int append, CONST84 char ** termPtr)); +/* 364 */ +EXTERN int Tcl_ParseVarName _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr, int append)); +/* 365 */ +EXTERN char * Tcl_GetCwd _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * cwdPtr)); +/* 366 */ +EXTERN int Tcl_Chdir _ANSI_ARGS_((CONST char * dirName)); +/* 367 */ +EXTERN int Tcl_Access _ANSI_ARGS_((CONST char * path, int mode)); +/* 368 */ +EXTERN int Tcl_Stat _ANSI_ARGS_((CONST char * path, + struct stat * bufPtr)); +/* 369 */ +EXTERN int Tcl_UtfNcmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 370 */ +EXTERN int Tcl_UtfNcasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 371 */ +EXTERN int Tcl_StringCaseMatch _ANSI_ARGS_((CONST char * str, + CONST char * pattern, int nocase)); +/* 372 */ +EXTERN int Tcl_UniCharIsControl _ANSI_ARGS_((int ch)); +/* 373 */ +EXTERN int Tcl_UniCharIsGraph _ANSI_ARGS_((int ch)); +/* 374 */ +EXTERN int Tcl_UniCharIsPrint _ANSI_ARGS_((int ch)); +/* 375 */ +EXTERN int Tcl_UniCharIsPunct _ANSI_ARGS_((int ch)); +/* 376 */ +EXTERN int Tcl_RegExpExecObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp regexp, Tcl_Obj * objPtr, + int offset, int nmatches, int flags)); +/* 377 */ +EXTERN void Tcl_RegExpGetInfo _ANSI_ARGS_((Tcl_RegExp regexp, + Tcl_RegExpInfo * infoPtr)); +/* 378 */ +EXTERN Tcl_Obj * Tcl_NewUnicodeObj _ANSI_ARGS_(( + CONST Tcl_UniChar * unicode, int numChars)); +/* 379 */ +EXTERN void Tcl_SetUnicodeObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST Tcl_UniChar * unicode, int numChars)); +/* 380 */ +EXTERN int Tcl_GetCharLength _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 381 */ +EXTERN Tcl_UniChar Tcl_GetUniChar _ANSI_ARGS_((Tcl_Obj * objPtr, + int index)); +/* 382 */ +EXTERN Tcl_UniChar * Tcl_GetUnicode _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 383 */ +EXTERN Tcl_Obj * Tcl_GetRange _ANSI_ARGS_((Tcl_Obj * objPtr, + int first, int last)); +/* 384 */ +EXTERN void Tcl_AppendUnicodeToObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST Tcl_UniChar * unicode, int length)); +/* 385 */ +EXTERN int Tcl_RegExpMatchObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * stringObj, Tcl_Obj * patternObj)); +/* 386 */ +EXTERN void Tcl_SetNotifier _ANSI_ARGS_(( + Tcl_NotifierProcs * notifierProcPtr)); +/* 387 */ +EXTERN Tcl_Mutex * Tcl_GetAllocMutex _ANSI_ARGS_((void)); +/* 388 */ +EXTERN int Tcl_GetChannelNames _ANSI_ARGS_((Tcl_Interp * interp)); +/* 389 */ +EXTERN int Tcl_GetChannelNamesEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * pattern)); +/* 390 */ +EXTERN int Tcl_ProcObjCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int objc, + Tcl_Obj *CONST objv[])); +/* 391 */ +EXTERN void Tcl_ConditionFinalize _ANSI_ARGS_(( + Tcl_Condition * condPtr)); +/* 392 */ +EXTERN void Tcl_MutexFinalize _ANSI_ARGS_((Tcl_Mutex * mutex)); +/* 393 */ +EXTERN int Tcl_CreateThread _ANSI_ARGS_((Tcl_ThreadId * idPtr, + Tcl_ThreadCreateProc proc, + ClientData clientData, int stackSize, + int flags)); +/* 394 */ +EXTERN int Tcl_ReadRaw _ANSI_ARGS_((Tcl_Channel chan, + char * dst, int bytesToRead)); +/* 395 */ +EXTERN int Tcl_WriteRaw _ANSI_ARGS_((Tcl_Channel chan, + CONST char * src, int srcLen)); +/* 396 */ +EXTERN Tcl_Channel Tcl_GetTopChannel _ANSI_ARGS_((Tcl_Channel chan)); +/* 397 */ +EXTERN int Tcl_ChannelBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 398 */ +EXTERN CONST84_RETURN char * Tcl_ChannelName _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 399 */ +EXTERN Tcl_ChannelTypeVersion Tcl_ChannelVersion _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 400 */ +EXTERN Tcl_DriverBlockModeProc * Tcl_ChannelBlockModeProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 401 */ +EXTERN Tcl_DriverCloseProc * Tcl_ChannelCloseProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 402 */ +EXTERN Tcl_DriverClose2Proc * Tcl_ChannelClose2Proc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 403 */ +EXTERN Tcl_DriverInputProc * Tcl_ChannelInputProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 404 */ +EXTERN Tcl_DriverOutputProc * Tcl_ChannelOutputProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 405 */ +EXTERN Tcl_DriverSeekProc * Tcl_ChannelSeekProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 406 */ +EXTERN Tcl_DriverSetOptionProc * Tcl_ChannelSetOptionProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 407 */ +EXTERN Tcl_DriverGetOptionProc * Tcl_ChannelGetOptionProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 408 */ +EXTERN Tcl_DriverWatchProc * Tcl_ChannelWatchProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 409 */ +EXTERN Tcl_DriverGetHandleProc * Tcl_ChannelGetHandleProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 410 */ +EXTERN Tcl_DriverFlushProc * Tcl_ChannelFlushProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 411 */ +EXTERN Tcl_DriverHandlerProc * Tcl_ChannelHandlerProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 412 */ +EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId threadId, + int* result)); +/* 413 */ +EXTERN int Tcl_IsChannelShared _ANSI_ARGS_((Tcl_Channel channel)); +/* 414 */ +EXTERN int Tcl_IsChannelRegistered _ANSI_ARGS_(( + Tcl_Interp* interp, Tcl_Channel channel)); +/* 415 */ +EXTERN void Tcl_CutChannel _ANSI_ARGS_((Tcl_Channel channel)); +/* 416 */ +EXTERN void Tcl_SpliceChannel _ANSI_ARGS_((Tcl_Channel channel)); +/* 417 */ +EXTERN void Tcl_ClearChannelHandlers _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 418 */ +EXTERN int Tcl_IsChannelExisting _ANSI_ARGS_(( + CONST char* channelName)); +/* 419 */ +EXTERN int Tcl_UniCharNcasecmp _ANSI_ARGS_(( + CONST Tcl_UniChar * cs, + CONST Tcl_UniChar * ct, unsigned long n)); +/* 420 */ +EXTERN int Tcl_UniCharCaseMatch _ANSI_ARGS_(( + CONST Tcl_UniChar * ustr, + CONST Tcl_UniChar * pattern, int nocase)); +/* 421 */ +EXTERN Tcl_HashEntry * Tcl_FindHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, CONST char * key)); +/* 422 */ +EXTERN Tcl_HashEntry * Tcl_CreateHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, CONST char * key, + int * newPtr)); +/* 423 */ +EXTERN void Tcl_InitCustomHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, int keyType, + Tcl_HashKeyType * typePtr)); +/* 424 */ +EXTERN void Tcl_InitObjHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 425 */ +EXTERN ClientData Tcl_CommandTraceInfo _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * varName, + int flags, Tcl_CommandTraceProc * procPtr, + ClientData prevClientData)); +/* 426 */ +EXTERN int Tcl_TraceCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_CommandTraceProc * proc, + ClientData clientData)); +/* 427 */ +EXTERN void Tcl_UntraceCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_CommandTraceProc * proc, + ClientData clientData)); +/* 428 */ +EXTERN char * Tcl_AttemptAlloc _ANSI_ARGS_((unsigned int size)); +/* 429 */ +EXTERN char * Tcl_AttemptDbCkalloc _ANSI_ARGS_((unsigned int size, + CONST char * file, int line)); +/* 430 */ +EXTERN char * Tcl_AttemptRealloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* 431 */ +EXTERN char * Tcl_AttemptDbCkrealloc _ANSI_ARGS_((char * ptr, + unsigned int size, CONST char * file, + int line)); +/* 432 */ +EXTERN int Tcl_AttemptSetObjLength _ANSI_ARGS_(( + Tcl_Obj * objPtr, int length)); +/* 433 */ +EXTERN Tcl_ThreadId Tcl_GetChannelThread _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 434 */ +EXTERN Tcl_UniChar * Tcl_GetUnicodeFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int * lengthPtr)); +/* 435 */ +EXTERN int Tcl_GetMathFuncInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, int * numArgsPtr, + Tcl_ValueType ** argTypesPtr, + Tcl_MathProc ** procPtr, + ClientData * clientDataPtr)); +/* 436 */ +EXTERN Tcl_Obj * Tcl_ListMathFuncs _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * pattern)); +/* 437 */ +EXTERN Tcl_Obj * Tcl_SubstObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int flags)); +/* 438 */ +EXTERN int Tcl_DetachChannel _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_Channel channel)); +/* 439 */ +EXTERN int Tcl_IsStandardChannel _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 440 */ +EXTERN int Tcl_FSCopyFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +/* 441 */ +EXTERN int Tcl_FSCopyDirectory _ANSI_ARGS_(( + Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, + Tcl_Obj ** errorPtr)); +/* 442 */ +EXTERN int Tcl_FSCreateDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 443 */ +EXTERN int Tcl_FSDeleteFile _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 444 */ +EXTERN int Tcl_FSLoadFile _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * pathPtr, CONST char * sym1, + CONST char * sym2, + Tcl_PackageInitProc ** proc1Ptr, + Tcl_PackageInitProc ** proc2Ptr, + Tcl_LoadHandle * handlePtr, + Tcl_FSUnloadFileProc ** unloadProcPtr)); +/* 445 */ +EXTERN int Tcl_FSMatchInDirectory _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * result, + Tcl_Obj * pathPtr, CONST char * pattern, + Tcl_GlobTypeData * types)); +/* 446 */ +EXTERN Tcl_Obj * Tcl_FSLink _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_Obj * toPtr, int linkAction)); +/* 447 */ +EXTERN int Tcl_FSRemoveDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr, + int recursive, Tcl_Obj ** errorPtr)); +/* 448 */ +EXTERN int Tcl_FSRenameFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +/* 449 */ +EXTERN int Tcl_FSLstat _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_StatBuf * buf)); +/* 450 */ +EXTERN int Tcl_FSUtime _ANSI_ARGS_((Tcl_Obj * pathPtr, + struct utimbuf * tval)); +/* 451 */ +EXTERN int Tcl_FSFileAttrsGet _ANSI_ARGS_((Tcl_Interp * interp, + int index, Tcl_Obj * pathPtr, + Tcl_Obj ** objPtrRef)); +/* 452 */ +EXTERN int Tcl_FSFileAttrsSet _ANSI_ARGS_((Tcl_Interp * interp, + int index, Tcl_Obj * pathPtr, + Tcl_Obj * objPtr)); +/* 453 */ +EXTERN CONST char ** Tcl_FSFileAttrStrings _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_Obj ** objPtrRef)); +/* 454 */ +EXTERN int Tcl_FSStat _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_StatBuf * buf)); +/* 455 */ +EXTERN int Tcl_FSAccess _ANSI_ARGS_((Tcl_Obj * pathPtr, + int mode)); +/* 456 */ +EXTERN Tcl_Channel Tcl_FSOpenFileChannel _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * pathPtr, + CONST char * modeString, int permissions)); +/* 457 */ +EXTERN Tcl_Obj* Tcl_FSGetCwd _ANSI_ARGS_((Tcl_Interp * interp)); +/* 458 */ +EXTERN int Tcl_FSChdir _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 459 */ +EXTERN int Tcl_FSConvertToPathType _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * pathPtr)); +/* 460 */ +EXTERN Tcl_Obj* Tcl_FSJoinPath _ANSI_ARGS_((Tcl_Obj * listObj, + int elements)); +/* 461 */ +EXTERN Tcl_Obj* Tcl_FSSplitPath _ANSI_ARGS_((Tcl_Obj* pathPtr, + int * lenPtr)); +/* 462 */ +EXTERN int Tcl_FSEqualPaths _ANSI_ARGS_((Tcl_Obj* firstPtr, + Tcl_Obj* secondPtr)); +/* 463 */ +EXTERN Tcl_Obj* Tcl_FSGetNormalizedPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); +/* 464 */ +EXTERN Tcl_Obj* Tcl_FSJoinToPath _ANSI_ARGS_((Tcl_Obj * basePtr, + int objc, Tcl_Obj *CONST objv[])); +/* 465 */ +EXTERN ClientData Tcl_FSGetInternalRep _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); +/* 466 */ +EXTERN Tcl_Obj* Tcl_FSGetTranslatedPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathPtr)); +/* 467 */ +EXTERN int Tcl_FSEvalFile _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * fileName)); +/* 468 */ +EXTERN Tcl_Obj* Tcl_FSNewNativePath _ANSI_ARGS_(( + Tcl_Filesystem* fromFilesystem, + ClientData clientData)); +/* 469 */ +EXTERN CONST char* Tcl_FSGetNativePath _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); +/* 470 */ +EXTERN Tcl_Obj* Tcl_FSFileSystemInfo _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr)); +/* 471 */ +EXTERN Tcl_Obj* Tcl_FSPathSeparator _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); +/* 472 */ +EXTERN Tcl_Obj* Tcl_FSListVolumes _ANSI_ARGS_((void)); +/* 473 */ +EXTERN int Tcl_FSRegister _ANSI_ARGS_((ClientData clientData, + Tcl_Filesystem * fsPtr)); +/* 474 */ +EXTERN int Tcl_FSUnregister _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); +/* 475 */ +EXTERN ClientData Tcl_FSData _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); +/* 476 */ +EXTERN CONST char* Tcl_FSGetTranslatedStringPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathPtr)); +/* 477 */ +EXTERN Tcl_Filesystem* Tcl_FSGetFileSystemForPath _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr)); +/* 478 */ +EXTERN Tcl_PathType Tcl_FSGetPathType _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); +/* 479 */ +EXTERN int Tcl_OutputBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 480 */ +EXTERN void Tcl_FSMountsChanged _ANSI_ARGS_(( + Tcl_Filesystem * fsPtr)); +/* 481 */ +EXTERN int Tcl_EvalTokensStandard _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Token * tokenPtr, + int count)); +/* 482 */ +EXTERN void Tcl_GetTime _ANSI_ARGS_((Tcl_Time* timeBuf)); +/* 483 */ +EXTERN Tcl_Trace Tcl_CreateObjTrace _ANSI_ARGS_((Tcl_Interp* interp, + int level, int flags, + Tcl_CmdObjTraceProc* objProc, + ClientData clientData, + Tcl_CmdObjTraceDeleteProc* delProc)); +/* 484 */ +EXTERN int Tcl_GetCommandInfoFromToken _ANSI_ARGS_(( + Tcl_Command token, Tcl_CmdInfo* infoPtr)); +/* 485 */ +EXTERN int Tcl_SetCommandInfoFromToken _ANSI_ARGS_(( + Tcl_Command token, + CONST Tcl_CmdInfo* infoPtr)); +/* 486 */ +EXTERN Tcl_Obj * Tcl_DbNewWideIntObj _ANSI_ARGS_(( + Tcl_WideInt wideValue, CONST char * file, + int line)); +/* 487 */ +EXTERN int Tcl_GetWideIntFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + Tcl_WideInt * widePtr)); +/* 488 */ +EXTERN Tcl_Obj * Tcl_NewWideIntObj _ANSI_ARGS_((Tcl_WideInt wideValue)); +/* 489 */ +EXTERN void Tcl_SetWideIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, + Tcl_WideInt wideValue)); +/* 490 */ +EXTERN Tcl_StatBuf * Tcl_AllocStatBuf _ANSI_ARGS_((void)); +/* 491 */ +EXTERN Tcl_WideInt Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan, + Tcl_WideInt offset, int mode)); +/* 492 */ +EXTERN Tcl_WideInt Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); +/* 493 */ +EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); + +typedef struct TclStubHooks { + struct TclPlatStubs *tclPlatStubs; + struct TclIntStubs *tclIntStubs; + struct TclIntPlatStubs *tclIntPlatStubs; +} TclStubHooks; + +typedef struct TclStubs { + int magic; + struct TclStubHooks *hooks; + + int (*tcl_PkgProvideEx) _ANSI_ARGS_((Tcl_Interp* interp, CONST char* name, CONST char* version, ClientData clientData)); /* 0 */ + CONST84_RETURN char * (*tcl_PkgRequireEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 1 */ + void (*tcl_Panic) _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); /* 2 */ + char * (*tcl_Alloc) _ANSI_ARGS_((unsigned int size)); /* 3 */ + void (*tcl_Free) _ANSI_ARGS_((char * ptr)); /* 4 */ + char * (*tcl_Realloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 5 */ + char * (*tcl_DbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 6 */ + int (*tcl_DbCkfree) _ANSI_ARGS_((char * ptr, CONST char * file, int line)); /* 7 */ + char * (*tcl_DbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_CreateFileHandler) _ANSI_ARGS_((int fd, int mask, Tcl_FileProc * proc, ClientData clientData)); /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved9; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved9; +#endif /* MAC_TCL */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_DeleteFileHandler) _ANSI_ARGS_((int fd)); /* 10 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved10; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved10; +#endif /* MAC_TCL */ + void (*tcl_SetTimer) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 11 */ + void (*tcl_Sleep) _ANSI_ARGS_((int ms)); /* 12 */ + int (*tcl_WaitForEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 13 */ + int (*tcl_AppendAllObjTypes) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 14 */ + void (*tcl_AppendStringsToObj) _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); /* 15 */ + void (*tcl_AppendToObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 16 */ + Tcl_Obj * (*tcl_ConcatObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 17 */ + int (*tcl_ConvertToType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); /* 18 */ + void (*tcl_DbDecrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 19 */ + void (*tcl_DbIncrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 20 */ + int (*tcl_DbIsShared) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 21 */ + Tcl_Obj * (*tcl_DbNewBooleanObj) _ANSI_ARGS_((int boolValue, CONST char * file, int line)); /* 22 */ + Tcl_Obj * (*tcl_DbNewByteArrayObj) _ANSI_ARGS_((CONST unsigned char * bytes, int length, CONST char * file, int line)); /* 23 */ + Tcl_Obj * (*tcl_DbNewDoubleObj) _ANSI_ARGS_((double doubleValue, CONST char * file, int line)); /* 24 */ + Tcl_Obj * (*tcl_DbNewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST * objv, CONST char * file, int line)); /* 25 */ + Tcl_Obj * (*tcl_DbNewLongObj) _ANSI_ARGS_((long longValue, CONST char * file, int line)); /* 26 */ + Tcl_Obj * (*tcl_DbNewObj) _ANSI_ARGS_((CONST char * file, int line)); /* 27 */ + Tcl_Obj * (*tcl_DbNewStringObj) _ANSI_ARGS_((CONST char * bytes, int length, CONST char * file, int line)); /* 28 */ + Tcl_Obj * (*tcl_DuplicateObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 29 */ + void (*tclFreeObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 30 */ + int (*tcl_GetBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * boolPtr)); /* 31 */ + int (*tcl_GetBooleanFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * boolPtr)); /* 32 */ + unsigned char * (*tcl_GetByteArrayFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 33 */ + int (*tcl_GetDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * doublePtr)); /* 34 */ + int (*tcl_GetDoubleFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * doublePtr)); /* 35 */ + int (*tcl_GetIndexFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST84 char ** tablePtr, CONST char * msg, int flags, int * indexPtr)); /* 36 */ + int (*tcl_GetInt) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * intPtr)); /* 37 */ + int (*tcl_GetIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * intPtr)); /* 38 */ + int (*tcl_GetLongFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * longPtr)); /* 39 */ + Tcl_ObjType * (*tcl_GetObjType) _ANSI_ARGS_((CONST char * typeName)); /* 40 */ + char * (*tcl_GetStringFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 41 */ + void (*tcl_InvalidateStringRep) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 42 */ + int (*tcl_ListObjAppendList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * elemListPtr)); /* 43 */ + int (*tcl_ListObjAppendElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * objPtr)); /* 44 */ + int (*tcl_ListObjGetElements) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * objcPtr, Tcl_Obj *** objvPtr)); /* 45 */ + int (*tcl_ListObjIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj ** objPtrPtr)); /* 46 */ + int (*tcl_ListObjLength) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * lengthPtr)); /* 47 */ + int (*tcl_ListObjReplace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int first, int count, int objc, Tcl_Obj *CONST objv[])); /* 48 */ + Tcl_Obj * (*tcl_NewBooleanObj) _ANSI_ARGS_((int boolValue)); /* 49 */ + Tcl_Obj * (*tcl_NewByteArrayObj) _ANSI_ARGS_((CONST unsigned char* bytes, int length)); /* 50 */ + Tcl_Obj * (*tcl_NewDoubleObj) _ANSI_ARGS_((double doubleValue)); /* 51 */ + Tcl_Obj * (*tcl_NewIntObj) _ANSI_ARGS_((int intValue)); /* 52 */ + Tcl_Obj * (*tcl_NewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 53 */ + Tcl_Obj * (*tcl_NewLongObj) _ANSI_ARGS_((long longValue)); /* 54 */ + Tcl_Obj * (*tcl_NewObj) _ANSI_ARGS_((void)); /* 55 */ + Tcl_Obj * (*tcl_NewStringObj) _ANSI_ARGS_((CONST char * bytes, int length)); /* 56 */ + void (*tcl_SetBooleanObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int boolValue)); /* 57 */ + unsigned char * (*tcl_SetByteArrayLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 58 */ + void (*tcl_SetByteArrayObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST unsigned char * bytes, int length)); /* 59 */ + void (*tcl_SetDoubleObj) _ANSI_ARGS_((Tcl_Obj * objPtr, double doubleValue)); /* 60 */ + void (*tcl_SetIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int intValue)); /* 61 */ + void (*tcl_SetListObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int objc, Tcl_Obj *CONST objv[])); /* 62 */ + void (*tcl_SetLongObj) _ANSI_ARGS_((Tcl_Obj * objPtr, long longValue)); /* 63 */ + void (*tcl_SetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 64 */ + void (*tcl_SetStringObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 65 */ + void (*tcl_AddErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message)); /* 66 */ + void (*tcl_AddObjErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message, int length)); /* 67 */ + void (*tcl_AllowExceptions) _ANSI_ARGS_((Tcl_Interp * interp)); /* 68 */ + void (*tcl_AppendElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 69 */ + void (*tcl_AppendResult) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 70 */ + Tcl_AsyncHandler (*tcl_AsyncCreate) _ANSI_ARGS_((Tcl_AsyncProc * proc, ClientData clientData)); /* 71 */ + void (*tcl_AsyncDelete) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 72 */ + int (*tcl_AsyncInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int code)); /* 73 */ + void (*tcl_AsyncMark) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 74 */ + int (*tcl_AsyncReady) _ANSI_ARGS_((void)); /* 75 */ + void (*tcl_BackgroundError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 76 */ + char (*tcl_Backslash) _ANSI_ARGS_((CONST char * src, int * readPtr)); /* 77 */ + int (*tcl_BadChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * optionName, CONST char * optionList)); /* 78 */ + void (*tcl_CallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 79 */ + void (*tcl_CancelIdleCall) _ANSI_ARGS_((Tcl_IdleProc * idleProc, ClientData clientData)); /* 80 */ + int (*tcl_Close) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 81 */ + int (*tcl_CommandComplete) _ANSI_ARGS_((CONST char * cmd)); /* 82 */ + char * (*tcl_Concat) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 83 */ + int (*tcl_ConvertElement) _ANSI_ARGS_((CONST char * src, char * dst, int flags)); /* 84 */ + int (*tcl_ConvertCountedElement) _ANSI_ARGS_((CONST char * src, int length, char * dst, int flags)); /* 85 */ + int (*tcl_CreateAlias) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int argc, CONST84 char * CONST * argv)); /* 86 */ + int (*tcl_CreateAliasObj) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int objc, Tcl_Obj *CONST objv[])); /* 87 */ + Tcl_Channel (*tcl_CreateChannel) _ANSI_ARGS_((Tcl_ChannelType * typePtr, CONST char * chanName, ClientData instanceData, int mask)); /* 88 */ + void (*tcl_CreateChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, int mask, Tcl_ChannelProc * proc, ClientData clientData)); /* 89 */ + void (*tcl_CreateCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 90 */ + Tcl_Command (*tcl_CreateCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 91 */ + void (*tcl_CreateEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 92 */ + void (*tcl_CreateExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 93 */ + Tcl_Interp * (*tcl_CreateInterp) _ANSI_ARGS_((void)); /* 94 */ + void (*tcl_CreateMathFunc) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int numArgs, Tcl_ValueType * argTypes, Tcl_MathProc * proc, ClientData clientData)); /* 95 */ + Tcl_Command (*tcl_CreateObjCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_ObjCmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 96 */ + Tcl_Interp * (*tcl_CreateSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName, int isSafe)); /* 97 */ + Tcl_TimerToken (*tcl_CreateTimerHandler) _ANSI_ARGS_((int milliseconds, Tcl_TimerProc * proc, ClientData clientData)); /* 98 */ + Tcl_Trace (*tcl_CreateTrace) _ANSI_ARGS_((Tcl_Interp * interp, int level, Tcl_CmdTraceProc * proc, ClientData clientData)); /* 99 */ + void (*tcl_DeleteAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 100 */ + void (*tcl_DeleteChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_ChannelProc * proc, ClientData clientData)); /* 101 */ + void (*tcl_DeleteCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 102 */ + int (*tcl_DeleteCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName)); /* 103 */ + int (*tcl_DeleteCommandFromToken) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 104 */ + void (*tcl_DeleteEvents) _ANSI_ARGS_((Tcl_EventDeleteProc * proc, ClientData clientData)); /* 105 */ + void (*tcl_DeleteEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 106 */ + void (*tcl_DeleteExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 107 */ + void (*tcl_DeleteHashEntry) _ANSI_ARGS_((Tcl_HashEntry * entryPtr)); /* 108 */ + void (*tcl_DeleteHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 109 */ + void (*tcl_DeleteInterp) _ANSI_ARGS_((Tcl_Interp * interp)); /* 110 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved111; +#endif /* MAC_TCL */ + void (*tcl_DeleteTimerHandler) _ANSI_ARGS_((Tcl_TimerToken token)); /* 112 */ + void (*tcl_DeleteTrace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Trace trace)); /* 113 */ + void (*tcl_DontCallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 114 */ + int (*tcl_DoOneEvent) _ANSI_ARGS_((int flags)); /* 115 */ + void (*tcl_DoWhenIdle) _ANSI_ARGS_((Tcl_IdleProc * proc, ClientData clientData)); /* 116 */ + char * (*tcl_DStringAppend) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * str, int length)); /* 117 */ + char * (*tcl_DStringAppendElement) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * string)); /* 118 */ + void (*tcl_DStringEndSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 119 */ + void (*tcl_DStringFree) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 120 */ + void (*tcl_DStringGetResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 121 */ + void (*tcl_DStringInit) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 122 */ + void (*tcl_DStringResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 123 */ + void (*tcl_DStringSetLength) _ANSI_ARGS_((Tcl_DString * dsPtr, int length)); /* 124 */ + void (*tcl_DStringStartSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 125 */ + int (*tcl_Eof) _ANSI_ARGS_((Tcl_Channel chan)); /* 126 */ + CONST84_RETURN char * (*tcl_ErrnoId) _ANSI_ARGS_((void)); /* 127 */ + CONST84_RETURN char * (*tcl_ErrnoMsg) _ANSI_ARGS_((int err)); /* 128 */ + int (*tcl_Eval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 129 */ + int (*tcl_EvalFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName)); /* 130 */ + int (*tcl_EvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 131 */ + void (*tcl_EventuallyFree) _ANSI_ARGS_((ClientData clientData, Tcl_FreeProc * freeProc)); /* 132 */ + void (*tcl_Exit) _ANSI_ARGS_((int status)); /* 133 */ + int (*tcl_ExposeCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * hiddenCmdToken, CONST char * cmdName)); /* 134 */ + int (*tcl_ExprBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * ptr)); /* 135 */ + int (*tcl_ExprBooleanObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * ptr)); /* 136 */ + int (*tcl_ExprDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * ptr)); /* 137 */ + int (*tcl_ExprDoubleObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * ptr)); /* 138 */ + int (*tcl_ExprLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * ptr)); /* 139 */ + int (*tcl_ExprLongObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * ptr)); /* 140 */ + int (*tcl_ExprObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); /* 141 */ + int (*tcl_ExprString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 142 */ + void (*tcl_Finalize) _ANSI_ARGS_((void)); /* 143 */ + void (*tcl_FindExecutable) _ANSI_ARGS_((CONST char * argv0)); /* 144 */ + Tcl_HashEntry * (*tcl_FirstHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, Tcl_HashSearch * searchPtr)); /* 145 */ + int (*tcl_Flush) _ANSI_ARGS_((Tcl_Channel chan)); /* 146 */ + void (*tcl_FreeResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 147 */ + int (*tcl_GetAlias) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * argcPtr, CONST84 char *** argvPtr)); /* 148 */ + int (*tcl_GetAliasObj) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * objcPtr, Tcl_Obj *** objv)); /* 149 */ + ClientData (*tcl_GetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc ** procPtr)); /* 150 */ + Tcl_Channel (*tcl_GetChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * chanName, int * modePtr)); /* 151 */ + int (*tcl_GetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan)); /* 152 */ + int (*tcl_GetChannelHandle) _ANSI_ARGS_((Tcl_Channel chan, int direction, ClientData * handlePtr)); /* 153 */ + ClientData (*tcl_GetChannelInstanceData) _ANSI_ARGS_((Tcl_Channel chan)); /* 154 */ + int (*tcl_GetChannelMode) _ANSI_ARGS_((Tcl_Channel chan)); /* 155 */ + CONST84_RETURN char * (*tcl_GetChannelName) _ANSI_ARGS_((Tcl_Channel chan)); /* 156 */ + int (*tcl_GetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, Tcl_DString * dsPtr)); /* 157 */ + Tcl_ChannelType * (*tcl_GetChannelType) _ANSI_ARGS_((Tcl_Channel chan)); /* 158 */ + int (*tcl_GetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdInfo * infoPtr)); /* 159 */ + CONST84_RETURN char * (*tcl_GetCommandName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 160 */ + int (*tcl_GetErrno) _ANSI_ARGS_((void)); /* 161 */ + CONST84_RETURN char * (*tcl_GetHostName) _ANSI_ARGS_((void)); /* 162 */ + int (*tcl_GetInterpPath) _ANSI_ARGS_((Tcl_Interp * askInterp, Tcl_Interp * slaveInterp)); /* 163 */ + Tcl_Interp * (*tcl_GetMaster) _ANSI_ARGS_((Tcl_Interp * interp)); /* 164 */ + CONST char * (*tcl_GetNameOfExecutable) _ANSI_ARGS_((void)); /* 165 */ + Tcl_Obj * (*tcl_GetObjResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 166 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tcl_GetOpenFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int forWriting, int checkUsage, ClientData * filePtr)); /* 167 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved167; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved167; +#endif /* MAC_TCL */ + Tcl_PathType (*tcl_GetPathType) _ANSI_ARGS_((CONST char * path)); /* 168 */ + int (*tcl_Gets) _ANSI_ARGS_((Tcl_Channel chan, Tcl_DString * dsPtr)); /* 169 */ + int (*tcl_GetsObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 170 */ + int (*tcl_GetServiceMode) _ANSI_ARGS_((void)); /* 171 */ + Tcl_Interp * (*tcl_GetSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName)); /* 172 */ + Tcl_Channel (*tcl_GetStdChannel) _ANSI_ARGS_((int type)); /* 173 */ + CONST84_RETURN char * (*tcl_GetStringResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 174 */ + CONST84_RETURN char * (*tcl_GetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 175 */ + CONST84_RETURN char * (*tcl_GetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 176 */ + int (*tcl_GlobalEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command)); /* 177 */ + int (*tcl_GlobalEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 178 */ + int (*tcl_HideCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST char * hiddenCmdToken)); /* 179 */ + int (*tcl_Init) _ANSI_ARGS_((Tcl_Interp * interp)); /* 180 */ + void (*tcl_InitHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType)); /* 181 */ + int (*tcl_InputBlocked) _ANSI_ARGS_((Tcl_Channel chan)); /* 182 */ + int (*tcl_InputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 183 */ + int (*tcl_InterpDeleted) _ANSI_ARGS_((Tcl_Interp * interp)); /* 184 */ + int (*tcl_IsSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 185 */ + char * (*tcl_JoinPath) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv, Tcl_DString * resultPtr)); /* 186 */ + int (*tcl_LinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, char * addr, int type)); /* 187 */ + void *reserved188; + Tcl_Channel (*tcl_MakeFileChannel) _ANSI_ARGS_((ClientData handle, int mode)); /* 189 */ + int (*tcl_MakeSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 190 */ + Tcl_Channel (*tcl_MakeTcpClientChannel) _ANSI_ARGS_((ClientData tcpSocket)); /* 191 */ + char * (*tcl_Merge) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 192 */ + Tcl_HashEntry * (*tcl_NextHashEntry) _ANSI_ARGS_((Tcl_HashSearch * searchPtr)); /* 193 */ + void (*tcl_NotifyChannel) _ANSI_ARGS_((Tcl_Channel channel, int mask)); /* 194 */ + Tcl_Obj * (*tcl_ObjGetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, int flags)); /* 195 */ + Tcl_Obj * (*tcl_ObjSetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, Tcl_Obj * newValuePtr, int flags)); /* 196 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved197; +#endif /* MAC_TCL */ + Tcl_Channel (*tcl_OpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName, CONST char * modeString, int permissions)); /* 198 */ + Tcl_Channel (*tcl_OpenTcpClient) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * address, CONST char * myaddr, int myport, int async)); /* 199 */ + Tcl_Channel (*tcl_OpenTcpServer) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * host, Tcl_TcpAcceptProc * acceptProc, ClientData callbackData)); /* 200 */ + void (*tcl_Preserve) _ANSI_ARGS_((ClientData data)); /* 201 */ + void (*tcl_PrintDouble) _ANSI_ARGS_((Tcl_Interp * interp, double value, char * dst)); /* 202 */ + int (*tcl_PutEnv) _ANSI_ARGS_((CONST char * string)); /* 203 */ + CONST84_RETURN char * (*tcl_PosixError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 204 */ + void (*tcl_QueueEvent) _ANSI_ARGS_((Tcl_Event * evPtr, Tcl_QueuePosition position)); /* 205 */ + int (*tcl_Read) _ANSI_ARGS_((Tcl_Channel chan, char * bufPtr, int toRead)); /* 206 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved207; +#endif /* MAC_TCL */ + int (*tcl_RecordAndEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmd, int flags)); /* 208 */ + int (*tcl_RecordAndEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * cmdPtr, int flags)); /* 209 */ + void (*tcl_RegisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 210 */ + void (*tcl_RegisterObjType) _ANSI_ARGS_((Tcl_ObjType * typePtr)); /* 211 */ + Tcl_RegExp (*tcl_RegExpCompile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 212 */ + int (*tcl_RegExpExec) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, CONST char * str, CONST char * start)); /* 213 */ + int (*tcl_RegExpMatch) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST char * pattern)); /* 214 */ + void (*tcl_RegExpRange) _ANSI_ARGS_((Tcl_RegExp regexp, int index, CONST84 char ** startPtr, CONST84 char ** endPtr)); /* 215 */ + void (*tcl_Release) _ANSI_ARGS_((ClientData clientData)); /* 216 */ + void (*tcl_ResetResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 217 */ + int (*tcl_ScanElement) _ANSI_ARGS_((CONST char * str, int * flagPtr)); /* 218 */ + int (*tcl_ScanCountedElement) _ANSI_ARGS_((CONST char * str, int length, int * flagPtr)); /* 219 */ + int (*tcl_SeekOld) _ANSI_ARGS_((Tcl_Channel chan, int offset, int mode)); /* 220 */ + int (*tcl_ServiceAll) _ANSI_ARGS_((void)); /* 221 */ + int (*tcl_ServiceEvent) _ANSI_ARGS_((int flags)); /* 222 */ + void (*tcl_SetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 223 */ + void (*tcl_SetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan, int sz)); /* 224 */ + int (*tcl_SetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, CONST char * newValue)); /* 225 */ + int (*tcl_SetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST Tcl_CmdInfo * infoPtr)); /* 226 */ + void (*tcl_SetErrno) _ANSI_ARGS_((int err)); /* 227 */ + void (*tcl_SetErrorCode) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 228 */ + void (*tcl_SetMaxBlockTime) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 229 */ + void (*tcl_SetPanicProc) _ANSI_ARGS_((Tcl_PanicProc * panicProc)); /* 230 */ + int (*tcl_SetRecursionLimit) _ANSI_ARGS_((Tcl_Interp * interp, int depth)); /* 231 */ + void (*tcl_SetResult) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tcl_FreeProc * freeProc)); /* 232 */ + int (*tcl_SetServiceMode) _ANSI_ARGS_((int mode)); /* 233 */ + void (*tcl_SetObjErrorCode) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * errorObjPtr)); /* 234 */ + void (*tcl_SetObjResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * resultObjPtr)); /* 235 */ + void (*tcl_SetStdChannel) _ANSI_ARGS_((Tcl_Channel channel, int type)); /* 236 */ + CONST84_RETURN char * (*tcl_SetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, CONST char * newValue, int flags)); /* 237 */ + CONST84_RETURN char * (*tcl_SetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, CONST char * newValue, int flags)); /* 238 */ + CONST84_RETURN char * (*tcl_SignalId) _ANSI_ARGS_((int sig)); /* 239 */ + CONST84_RETURN char * (*tcl_SignalMsg) _ANSI_ARGS_((int sig)); /* 240 */ + void (*tcl_SourceRCFile) _ANSI_ARGS_((Tcl_Interp * interp)); /* 241 */ + int (*tcl_SplitList) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int * argcPtr, CONST84 char *** argvPtr)); /* 242 */ + void (*tcl_SplitPath) _ANSI_ARGS_((CONST char * path, int * argcPtr, CONST84 char *** argvPtr)); /* 243 */ + void (*tcl_StaticPackage) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pkgName, Tcl_PackageInitProc * initProc, Tcl_PackageInitProc * safeInitProc)); /* 244 */ + int (*tcl_StringMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern)); /* 245 */ + int (*tcl_TellOld) _ANSI_ARGS_((Tcl_Channel chan)); /* 246 */ + int (*tcl_TraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 247 */ + int (*tcl_TraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 248 */ + char * (*tcl_TranslateFileName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_DString * bufferPtr)); /* 249 */ + int (*tcl_Ungets) _ANSI_ARGS_((Tcl_Channel chan, CONST char * str, int len, int atHead)); /* 250 */ + void (*tcl_UnlinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 251 */ + int (*tcl_UnregisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 252 */ + int (*tcl_UnsetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 253 */ + int (*tcl_UnsetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 254 */ + void (*tcl_UntraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 255 */ + void (*tcl_UntraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 256 */ + void (*tcl_UpdateLinkedVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 257 */ + int (*tcl_UpVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * varName, CONST char * localName, int flags)); /* 258 */ + int (*tcl_UpVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * part1, CONST char * part2, CONST char * localName, int flags)); /* 259 */ + int (*tcl_VarEval) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 260 */ + ClientData (*tcl_VarTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 261 */ + ClientData (*tcl_VarTraceInfo2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 262 */ + int (*tcl_Write) _ANSI_ARGS_((Tcl_Channel chan, CONST char * s, int slen)); /* 263 */ + void (*tcl_WrongNumArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], CONST char * message)); /* 264 */ + int (*tcl_DumpActiveMemory) _ANSI_ARGS_((CONST char * fileName)); /* 265 */ + void (*tcl_ValidateAllMemory) _ANSI_ARGS_((CONST char * file, int line)); /* 266 */ + void (*tcl_AppendResultVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 267 */ + void (*tcl_AppendStringsToObjVA) _ANSI_ARGS_((Tcl_Obj * objPtr, va_list argList)); /* 268 */ + CONST84_RETURN char * (*tcl_HashStats) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 269 */ + CONST84_RETURN char * (*tcl_ParseVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST84 char ** termPtr)); /* 270 */ + CONST84_RETURN char * (*tcl_PkgPresent) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 271 */ + CONST84_RETURN char * (*tcl_PkgPresentEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 272 */ + int (*tcl_PkgProvide) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version)); /* 273 */ + CONST84_RETURN char * (*tcl_PkgRequire) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 274 */ + void (*tcl_SetErrorCodeVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 275 */ + int (*tcl_VarEvalVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 276 */ + Tcl_Pid (*tcl_WaitPid) _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, int options)); /* 277 */ + void (*tcl_PanicVA) _ANSI_ARGS_((CONST char * format, va_list argList)); /* 278 */ + void (*tcl_GetVersion) _ANSI_ARGS_((int * major, int * minor, int * patchLevel, int * type)); /* 279 */ + void (*tcl_InitMemory) _ANSI_ARGS_((Tcl_Interp * interp)); /* 280 */ + Tcl_Channel (*tcl_StackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_ChannelType * typePtr, ClientData instanceData, int mask, Tcl_Channel prevChan)); /* 281 */ + int (*tcl_UnstackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 282 */ + Tcl_Channel (*tcl_GetStackedChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 283 */ + void (*tcl_SetMainLoop) _ANSI_ARGS_((Tcl_MainLoopProc * proc)); /* 284 */ + void *reserved285; + void (*tcl_AppendObjToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_Obj * appendObjPtr)); /* 286 */ + Tcl_Encoding (*tcl_CreateEncoding) _ANSI_ARGS_((Tcl_EncodingType * typePtr)); /* 287 */ + void (*tcl_CreateThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 288 */ + void (*tcl_DeleteThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 289 */ + void (*tcl_DiscardResult) _ANSI_ARGS_((Tcl_SavedResult * statePtr)); /* 290 */ + int (*tcl_EvalEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, int numBytes, int flags)); /* 291 */ + int (*tcl_EvalObjv) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 292 */ + int (*tcl_EvalObjEx) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 293 */ + void (*tcl_ExitThread) _ANSI_ARGS_((int status)); /* 294 */ + int (*tcl_ExternalToUtf) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 295 */ + char * (*tcl_ExternalToUtfDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 296 */ + void (*tcl_FinalizeThread) _ANSI_ARGS_((void)); /* 297 */ + void (*tcl_FinalizeNotifier) _ANSI_ARGS_((ClientData clientData)); /* 298 */ + void (*tcl_FreeEncoding) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 299 */ + Tcl_ThreadId (*tcl_GetCurrentThread) _ANSI_ARGS_((void)); /* 300 */ + Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */ + CONST84_RETURN char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */ + void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */ + int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST VOID * tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */ + VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */ + Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 306 */ + ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */ + void (*tcl_MutexLock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 308 */ + void (*tcl_MutexUnlock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 309 */ + void (*tcl_ConditionNotify) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 310 */ + void (*tcl_ConditionWait) _ANSI_ARGS_((Tcl_Condition * condPtr, Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); /* 311 */ + int (*tcl_NumUtfChars) _ANSI_ARGS_((CONST char * src, int len)); /* 312 */ + int (*tcl_ReadChars) _ANSI_ARGS_((Tcl_Channel channel, Tcl_Obj * objPtr, int charsToRead, int appendFlag)); /* 313 */ + void (*tcl_RestoreResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 314 */ + void (*tcl_SaveResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 315 */ + int (*tcl_SetSystemEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 316 */ + Tcl_Obj * (*tcl_SetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, Tcl_Obj * newValuePtr, int flags)); /* 317 */ + void (*tcl_ThreadAlert) _ANSI_ARGS_((Tcl_ThreadId threadId)); /* 318 */ + void (*tcl_ThreadQueueEvent) _ANSI_ARGS_((Tcl_ThreadId threadId, Tcl_Event* evPtr, Tcl_QueuePosition position)); /* 319 */ + Tcl_UniChar (*tcl_UniCharAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 320 */ + Tcl_UniChar (*tcl_UniCharToLower) _ANSI_ARGS_((int ch)); /* 321 */ + Tcl_UniChar (*tcl_UniCharToTitle) _ANSI_ARGS_((int ch)); /* 322 */ + Tcl_UniChar (*tcl_UniCharToUpper) _ANSI_ARGS_((int ch)); /* 323 */ + int (*tcl_UniCharToUtf) _ANSI_ARGS_((int ch, char * buf)); /* 324 */ + CONST84_RETURN char * (*tcl_UtfAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 325 */ + int (*tcl_UtfCharComplete) _ANSI_ARGS_((CONST char * src, int len)); /* 326 */ + int (*tcl_UtfBackslash) _ANSI_ARGS_((CONST char * src, int * readPtr, char * dst)); /* 327 */ + CONST84_RETURN char * (*tcl_UtfFindFirst) _ANSI_ARGS_((CONST char * src, int ch)); /* 328 */ + CONST84_RETURN char * (*tcl_UtfFindLast) _ANSI_ARGS_((CONST char * src, int ch)); /* 329 */ + CONST84_RETURN char * (*tcl_UtfNext) _ANSI_ARGS_((CONST char * src)); /* 330 */ + CONST84_RETURN char * (*tcl_UtfPrev) _ANSI_ARGS_((CONST char * src, CONST char * start)); /* 331 */ + int (*tcl_UtfToExternal) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 332 */ + char * (*tcl_UtfToExternalDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 333 */ + int (*tcl_UtfToLower) _ANSI_ARGS_((char * src)); /* 334 */ + int (*tcl_UtfToTitle) _ANSI_ARGS_((char * src)); /* 335 */ + int (*tcl_UtfToUniChar) _ANSI_ARGS_((CONST char * src, Tcl_UniChar * chPtr)); /* 336 */ + int (*tcl_UtfToUpper) _ANSI_ARGS_((char * src)); /* 337 */ + int (*tcl_WriteChars) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 338 */ + int (*tcl_WriteObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 339 */ + char * (*tcl_GetString) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 340 */ + CONST84_RETURN char * (*tcl_GetDefaultEncodingDir) _ANSI_ARGS_((void)); /* 341 */ + void (*tcl_SetDefaultEncodingDir) _ANSI_ARGS_((CONST char * path)); /* 342 */ + void (*tcl_AlertNotifier) _ANSI_ARGS_((ClientData clientData)); /* 343 */ + void (*tcl_ServiceModeHook) _ANSI_ARGS_((int mode)); /* 344 */ + int (*tcl_UniCharIsAlnum) _ANSI_ARGS_((int ch)); /* 345 */ + int (*tcl_UniCharIsAlpha) _ANSI_ARGS_((int ch)); /* 346 */ + int (*tcl_UniCharIsDigit) _ANSI_ARGS_((int ch)); /* 347 */ + int (*tcl_UniCharIsLower) _ANSI_ARGS_((int ch)); /* 348 */ + int (*tcl_UniCharIsSpace) _ANSI_ARGS_((int ch)); /* 349 */ + int (*tcl_UniCharIsUpper) _ANSI_ARGS_((int ch)); /* 350 */ + int (*tcl_UniCharIsWordChar) _ANSI_ARGS_((int ch)); /* 351 */ + int (*tcl_UniCharLen) _ANSI_ARGS_((CONST Tcl_UniChar * str)); /* 352 */ + int (*tcl_UniCharNcmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 353 */ + char * (*tcl_UniCharToUtfDString) _ANSI_ARGS_((CONST Tcl_UniChar * string, int numChars, Tcl_DString * dsPtr)); /* 354 */ + Tcl_UniChar * (*tcl_UtfToUniCharDString) _ANSI_ARGS_((CONST char * string, int length, Tcl_DString * dsPtr)); /* 355 */ + Tcl_RegExp (*tcl_GetRegExpFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * patObj, int flags)); /* 356 */ + Tcl_Obj * (*tcl_EvalTokens) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 357 */ + void (*tcl_FreeParse) _ANSI_ARGS_((Tcl_Parse * parsePtr)); /* 358 */ + void (*tcl_LogCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, CONST char * command, int length)); /* 359 */ + int (*tcl_ParseBraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 360 */ + int (*tcl_ParseCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, int nested, Tcl_Parse * parsePtr)); /* 361 */ + int (*tcl_ParseExpr) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr)); /* 362 */ + int (*tcl_ParseQuotedString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 363 */ + int (*tcl_ParseVarName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append)); /* 364 */ + char * (*tcl_GetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 365 */ + int (*tcl_Chdir) _ANSI_ARGS_((CONST char * dirName)); /* 366 */ + int (*tcl_Access) _ANSI_ARGS_((CONST char * path, int mode)); /* 367 */ + int (*tcl_Stat) _ANSI_ARGS_((CONST char * path, struct stat * bufPtr)); /* 368 */ + int (*tcl_UtfNcmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 369 */ + int (*tcl_UtfNcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 370 */ + int (*tcl_StringCaseMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern, int nocase)); /* 371 */ + int (*tcl_UniCharIsControl) _ANSI_ARGS_((int ch)); /* 372 */ + int (*tcl_UniCharIsGraph) _ANSI_ARGS_((int ch)); /* 373 */ + int (*tcl_UniCharIsPrint) _ANSI_ARGS_((int ch)); /* 374 */ + int (*tcl_UniCharIsPunct) _ANSI_ARGS_((int ch)); /* 375 */ + int (*tcl_RegExpExecObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, Tcl_Obj * objPtr, int offset, int nmatches, int flags)); /* 376 */ + void (*tcl_RegExpGetInfo) _ANSI_ARGS_((Tcl_RegExp regexp, Tcl_RegExpInfo * infoPtr)); /* 377 */ + Tcl_Obj * (*tcl_NewUnicodeObj) _ANSI_ARGS_((CONST Tcl_UniChar * unicode, int numChars)); /* 378 */ + void (*tcl_SetUnicodeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int numChars)); /* 379 */ + int (*tcl_GetCharLength) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 380 */ + Tcl_UniChar (*tcl_GetUniChar) _ANSI_ARGS_((Tcl_Obj * objPtr, int index)); /* 381 */ + Tcl_UniChar * (*tcl_GetUnicode) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 382 */ + Tcl_Obj * (*tcl_GetRange) _ANSI_ARGS_((Tcl_Obj * objPtr, int first, int last)); /* 383 */ + void (*tcl_AppendUnicodeToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int length)); /* 384 */ + int (*tcl_RegExpMatchObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * stringObj, Tcl_Obj * patternObj)); /* 385 */ + void (*tcl_SetNotifier) _ANSI_ARGS_((Tcl_NotifierProcs * notifierProcPtr)); /* 386 */ + Tcl_Mutex * (*tcl_GetAllocMutex) _ANSI_ARGS_((void)); /* 387 */ + int (*tcl_GetChannelNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 388 */ + int (*tcl_GetChannelNamesEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 389 */ + int (*tcl_ProcObjCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 390 */ + void (*tcl_ConditionFinalize) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 391 */ + void (*tcl_MutexFinalize) _ANSI_ARGS_((Tcl_Mutex * mutex)); /* 392 */ + int (*tcl_CreateThread) _ANSI_ARGS_((Tcl_ThreadId * idPtr, Tcl_ThreadCreateProc proc, ClientData clientData, int stackSize, int flags)); /* 393 */ + int (*tcl_ReadRaw) _ANSI_ARGS_((Tcl_Channel chan, char * dst, int bytesToRead)); /* 394 */ + int (*tcl_WriteRaw) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 395 */ + Tcl_Channel (*tcl_GetTopChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 396 */ + int (*tcl_ChannelBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 397 */ + CONST84_RETURN char * (*tcl_ChannelName) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 398 */ + Tcl_ChannelTypeVersion (*tcl_ChannelVersion) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 399 */ + Tcl_DriverBlockModeProc * (*tcl_ChannelBlockModeProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 400 */ + Tcl_DriverCloseProc * (*tcl_ChannelCloseProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 401 */ + Tcl_DriverClose2Proc * (*tcl_ChannelClose2Proc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 402 */ + Tcl_DriverInputProc * (*tcl_ChannelInputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 403 */ + Tcl_DriverOutputProc * (*tcl_ChannelOutputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 404 */ + Tcl_DriverSeekProc * (*tcl_ChannelSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 405 */ + Tcl_DriverSetOptionProc * (*tcl_ChannelSetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 406 */ + Tcl_DriverGetOptionProc * (*tcl_ChannelGetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 407 */ + Tcl_DriverWatchProc * (*tcl_ChannelWatchProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 408 */ + Tcl_DriverGetHandleProc * (*tcl_ChannelGetHandleProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 409 */ + Tcl_DriverFlushProc * (*tcl_ChannelFlushProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 410 */ + Tcl_DriverHandlerProc * (*tcl_ChannelHandlerProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 411 */ + int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 412 */ + int (*tcl_IsChannelShared) _ANSI_ARGS_((Tcl_Channel channel)); /* 413 */ + int (*tcl_IsChannelRegistered) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 414 */ + void (*tcl_CutChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 415 */ + void (*tcl_SpliceChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 416 */ + void (*tcl_ClearChannelHandlers) _ANSI_ARGS_((Tcl_Channel channel)); /* 417 */ + int (*tcl_IsChannelExisting) _ANSI_ARGS_((CONST char* channelName)); /* 418 */ + int (*tcl_UniCharNcasecmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 419 */ + int (*tcl_UniCharCaseMatch) _ANSI_ARGS_((CONST Tcl_UniChar * ustr, CONST Tcl_UniChar * pattern, int nocase)); /* 420 */ + Tcl_HashEntry * (*tcl_FindHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key)); /* 421 */ + Tcl_HashEntry * (*tcl_CreateHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key, int * newPtr)); /* 422 */ + void (*tcl_InitCustomHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType, Tcl_HashKeyType * typePtr)); /* 423 */ + void (*tcl_InitObjHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 424 */ + ClientData (*tcl_CommandTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * procPtr, ClientData prevClientData)); /* 425 */ + int (*tcl_TraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 426 */ + void (*tcl_UntraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 427 */ + char * (*tcl_AttemptAlloc) _ANSI_ARGS_((unsigned int size)); /* 428 */ + char * (*tcl_AttemptDbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 429 */ + char * (*tcl_AttemptRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 430 */ + char * (*tcl_AttemptDbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 431 */ + int (*tcl_AttemptSetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 432 */ + Tcl_ThreadId (*tcl_GetChannelThread) _ANSI_ARGS_((Tcl_Channel channel)); /* 433 */ + Tcl_UniChar * (*tcl_GetUnicodeFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 434 */ + int (*tcl_GetMathFuncInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int * numArgsPtr, Tcl_ValueType ** argTypesPtr, Tcl_MathProc ** procPtr, ClientData * clientDataPtr)); /* 435 */ + Tcl_Obj * (*tcl_ListMathFuncs) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 436 */ + Tcl_Obj * (*tcl_SubstObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 437 */ + int (*tcl_DetachChannel) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 438 */ + int (*tcl_IsStandardChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 439 */ + int (*tcl_FSCopyFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 440 */ + int (*tcl_FSCopyDirectory) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, Tcl_Obj ** errorPtr)); /* 441 */ + int (*tcl_FSCreateDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 442 */ + int (*tcl_FSDeleteFile) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 443 */ + int (*tcl_FSLoadFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * sym1, CONST char * sym2, Tcl_PackageInitProc ** proc1Ptr, Tcl_PackageInitProc ** proc2Ptr, Tcl_LoadHandle * handlePtr, Tcl_FSUnloadFileProc ** unloadProcPtr)); /* 444 */ + int (*tcl_FSMatchInDirectory) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * result, Tcl_Obj * pathPtr, CONST char * pattern, Tcl_GlobTypeData * types)); /* 445 */ + Tcl_Obj * (*tcl_FSLink) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj * toPtr, int linkAction)); /* 446 */ + int (*tcl_FSRemoveDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr, int recursive, Tcl_Obj ** errorPtr)); /* 447 */ + int (*tcl_FSRenameFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 448 */ + int (*tcl_FSLstat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 449 */ + int (*tcl_FSUtime) _ANSI_ARGS_((Tcl_Obj * pathPtr, struct utimbuf * tval)); /* 450 */ + int (*tcl_FSFileAttrsGet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 451 */ + int (*tcl_FSFileAttrsSet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj * objPtr)); /* 452 */ + CONST char ** (*tcl_FSFileAttrStrings) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 453 */ + int (*tcl_FSStat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 454 */ + int (*tcl_FSAccess) _ANSI_ARGS_((Tcl_Obj * pathPtr, int mode)); /* 455 */ + Tcl_Channel (*tcl_FSOpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * modeString, int permissions)); /* 456 */ + Tcl_Obj* (*tcl_FSGetCwd) _ANSI_ARGS_((Tcl_Interp * interp)); /* 457 */ + int (*tcl_FSChdir) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 458 */ + int (*tcl_FSConvertToPathType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr)); /* 459 */ + Tcl_Obj* (*tcl_FSJoinPath) _ANSI_ARGS_((Tcl_Obj * listObj, int elements)); /* 460 */ + Tcl_Obj* (*tcl_FSSplitPath) _ANSI_ARGS_((Tcl_Obj* pathPtr, int * lenPtr)); /* 461 */ + int (*tcl_FSEqualPaths) _ANSI_ARGS_((Tcl_Obj* firstPtr, Tcl_Obj* secondPtr)); /* 462 */ + Tcl_Obj* (*tcl_FSGetNormalizedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); /* 463 */ + Tcl_Obj* (*tcl_FSJoinToPath) _ANSI_ARGS_((Tcl_Obj * basePtr, int objc, Tcl_Obj *CONST objv[])); /* 464 */ + ClientData (*tcl_FSGetInternalRep) _ANSI_ARGS_((Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); /* 465 */ + Tcl_Obj* (*tcl_FSGetTranslatedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 466 */ + int (*tcl_FSEvalFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * fileName)); /* 467 */ + Tcl_Obj* (*tcl_FSNewNativePath) _ANSI_ARGS_((Tcl_Filesystem* fromFilesystem, ClientData clientData)); /* 468 */ + CONST char* (*tcl_FSGetNativePath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 469 */ + Tcl_Obj* (*tcl_FSFileSystemInfo) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 470 */ + Tcl_Obj* (*tcl_FSPathSeparator) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 471 */ + Tcl_Obj* (*tcl_FSListVolumes) _ANSI_ARGS_((void)); /* 472 */ + int (*tcl_FSRegister) _ANSI_ARGS_((ClientData clientData, Tcl_Filesystem * fsPtr)); /* 473 */ + int (*tcl_FSUnregister) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 474 */ + ClientData (*tcl_FSData) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 475 */ + CONST char* (*tcl_FSGetTranslatedStringPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 476 */ + Tcl_Filesystem* (*tcl_FSGetFileSystemForPath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 477 */ + Tcl_PathType (*tcl_FSGetPathType) _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); /* 478 */ + int (*tcl_OutputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 479 */ + void (*tcl_FSMountsChanged) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 480 */ + int (*tcl_EvalTokensStandard) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 481 */ + void (*tcl_GetTime) _ANSI_ARGS_((Tcl_Time* timeBuf)); /* 482 */ + Tcl_Trace (*tcl_CreateObjTrace) _ANSI_ARGS_((Tcl_Interp* interp, int level, int flags, Tcl_CmdObjTraceProc* objProc, ClientData clientData, Tcl_CmdObjTraceDeleteProc* delProc)); /* 483 */ + int (*tcl_GetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, Tcl_CmdInfo* infoPtr)); /* 484 */ + int (*tcl_SetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, CONST Tcl_CmdInfo* infoPtr)); /* 485 */ + Tcl_Obj * (*tcl_DbNewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue, CONST char * file, int line)); /* 486 */ + int (*tcl_GetWideIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_WideInt * widePtr)); /* 487 */ + Tcl_Obj * (*tcl_NewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue)); /* 488 */ + void (*tcl_SetWideIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_WideInt wideValue)); /* 489 */ + Tcl_StatBuf * (*tcl_AllocStatBuf) _ANSI_ARGS_((void)); /* 490 */ + Tcl_WideInt (*tcl_Seek) _ANSI_ARGS_((Tcl_Channel chan, Tcl_WideInt offset, int mode)); /* 491 */ + Tcl_WideInt (*tcl_Tell) _ANSI_ARGS_((Tcl_Channel chan)); /* 492 */ + Tcl_DriverWideSeekProc * (*tcl_ChannelWideSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 493 */ +} TclStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclStubs *tclStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#ifndef Tcl_PkgProvideEx +#define Tcl_PkgProvideEx \ + (tclStubsPtr->tcl_PkgProvideEx) /* 0 */ +#endif +#ifndef Tcl_PkgRequireEx +#define Tcl_PkgRequireEx \ + (tclStubsPtr->tcl_PkgRequireEx) /* 1 */ +#endif +#ifndef Tcl_Panic +#define Tcl_Panic \ + (tclStubsPtr->tcl_Panic) /* 2 */ +#endif +#ifndef Tcl_Alloc +#define Tcl_Alloc \ + (tclStubsPtr->tcl_Alloc) /* 3 */ +#endif +#ifndef Tcl_Free +#define Tcl_Free \ + (tclStubsPtr->tcl_Free) /* 4 */ +#endif +#ifndef Tcl_Realloc +#define Tcl_Realloc \ + (tclStubsPtr->tcl_Realloc) /* 5 */ +#endif +#ifndef Tcl_DbCkalloc +#define Tcl_DbCkalloc \ + (tclStubsPtr->tcl_DbCkalloc) /* 6 */ +#endif +#ifndef Tcl_DbCkfree +#define Tcl_DbCkfree \ + (tclStubsPtr->tcl_DbCkfree) /* 7 */ +#endif +#ifndef Tcl_DbCkrealloc +#define Tcl_DbCkrealloc \ + (tclStubsPtr->tcl_DbCkrealloc) /* 8 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_CreateFileHandler +#define Tcl_CreateFileHandler \ + (tclStubsPtr->tcl_CreateFileHandler) /* 9 */ +#endif +#endif /* UNIX */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_DeleteFileHandler +#define Tcl_DeleteFileHandler \ + (tclStubsPtr->tcl_DeleteFileHandler) /* 10 */ +#endif +#endif /* UNIX */ +#ifndef Tcl_SetTimer +#define Tcl_SetTimer \ + (tclStubsPtr->tcl_SetTimer) /* 11 */ +#endif +#ifndef Tcl_Sleep +#define Tcl_Sleep \ + (tclStubsPtr->tcl_Sleep) /* 12 */ +#endif +#ifndef Tcl_WaitForEvent +#define Tcl_WaitForEvent \ + (tclStubsPtr->tcl_WaitForEvent) /* 13 */ +#endif +#ifndef Tcl_AppendAllObjTypes +#define Tcl_AppendAllObjTypes \ + (tclStubsPtr->tcl_AppendAllObjTypes) /* 14 */ +#endif +#ifndef Tcl_AppendStringsToObj +#define Tcl_AppendStringsToObj \ + (tclStubsPtr->tcl_AppendStringsToObj) /* 15 */ +#endif +#ifndef Tcl_AppendToObj +#define Tcl_AppendToObj \ + (tclStubsPtr->tcl_AppendToObj) /* 16 */ +#endif +#ifndef Tcl_ConcatObj +#define Tcl_ConcatObj \ + (tclStubsPtr->tcl_ConcatObj) /* 17 */ +#endif +#ifndef Tcl_ConvertToType +#define Tcl_ConvertToType \ + (tclStubsPtr->tcl_ConvertToType) /* 18 */ +#endif +#ifndef Tcl_DbDecrRefCount +#define Tcl_DbDecrRefCount \ + (tclStubsPtr->tcl_DbDecrRefCount) /* 19 */ +#endif +#ifndef Tcl_DbIncrRefCount +#define Tcl_DbIncrRefCount \ + (tclStubsPtr->tcl_DbIncrRefCount) /* 20 */ +#endif +#ifndef Tcl_DbIsShared +#define Tcl_DbIsShared \ + (tclStubsPtr->tcl_DbIsShared) /* 21 */ +#endif +#ifndef Tcl_DbNewBooleanObj +#define Tcl_DbNewBooleanObj \ + (tclStubsPtr->tcl_DbNewBooleanObj) /* 22 */ +#endif +#ifndef Tcl_DbNewByteArrayObj +#define Tcl_DbNewByteArrayObj \ + (tclStubsPtr->tcl_DbNewByteArrayObj) /* 23 */ +#endif +#ifndef Tcl_DbNewDoubleObj +#define Tcl_DbNewDoubleObj \ + (tclStubsPtr->tcl_DbNewDoubleObj) /* 24 */ +#endif +#ifndef Tcl_DbNewListObj +#define Tcl_DbNewListObj \ + (tclStubsPtr->tcl_DbNewListObj) /* 25 */ +#endif +#ifndef Tcl_DbNewLongObj +#define Tcl_DbNewLongObj \ + (tclStubsPtr->tcl_DbNewLongObj) /* 26 */ +#endif +#ifndef Tcl_DbNewObj +#define Tcl_DbNewObj \ + (tclStubsPtr->tcl_DbNewObj) /* 27 */ +#endif +#ifndef Tcl_DbNewStringObj +#define Tcl_DbNewStringObj \ + (tclStubsPtr->tcl_DbNewStringObj) /* 28 */ +#endif +#ifndef Tcl_DuplicateObj +#define Tcl_DuplicateObj \ + (tclStubsPtr->tcl_DuplicateObj) /* 29 */ +#endif +#ifndef TclFreeObj +#define TclFreeObj \ + (tclStubsPtr->tclFreeObj) /* 30 */ +#endif +#ifndef Tcl_GetBoolean +#define Tcl_GetBoolean \ + (tclStubsPtr->tcl_GetBoolean) /* 31 */ +#endif +#ifndef Tcl_GetBooleanFromObj +#define Tcl_GetBooleanFromObj \ + (tclStubsPtr->tcl_GetBooleanFromObj) /* 32 */ +#endif +#ifndef Tcl_GetByteArrayFromObj +#define Tcl_GetByteArrayFromObj \ + (tclStubsPtr->tcl_GetByteArrayFromObj) /* 33 */ +#endif +#ifndef Tcl_GetDouble +#define Tcl_GetDouble \ + (tclStubsPtr->tcl_GetDouble) /* 34 */ +#endif +#ifndef Tcl_GetDoubleFromObj +#define Tcl_GetDoubleFromObj \ + (tclStubsPtr->tcl_GetDoubleFromObj) /* 35 */ +#endif +#ifndef Tcl_GetIndexFromObj +#define Tcl_GetIndexFromObj \ + (tclStubsPtr->tcl_GetIndexFromObj) /* 36 */ +#endif +#ifndef Tcl_GetInt +#define Tcl_GetInt \ + (tclStubsPtr->tcl_GetInt) /* 37 */ +#endif +#ifndef Tcl_GetIntFromObj +#define Tcl_GetIntFromObj \ + (tclStubsPtr->tcl_GetIntFromObj) /* 38 */ +#endif +#ifndef Tcl_GetLongFromObj +#define Tcl_GetLongFromObj \ + (tclStubsPtr->tcl_GetLongFromObj) /* 39 */ +#endif +#ifndef Tcl_GetObjType +#define Tcl_GetObjType \ + (tclStubsPtr->tcl_GetObjType) /* 40 */ +#endif +#ifndef Tcl_GetStringFromObj +#define Tcl_GetStringFromObj \ + (tclStubsPtr->tcl_GetStringFromObj) /* 41 */ +#endif +#ifndef Tcl_InvalidateStringRep +#define Tcl_InvalidateStringRep \ + (tclStubsPtr->tcl_InvalidateStringRep) /* 42 */ +#endif +#ifndef Tcl_ListObjAppendList +#define Tcl_ListObjAppendList \ + (tclStubsPtr->tcl_ListObjAppendList) /* 43 */ +#endif +#ifndef Tcl_ListObjAppendElement +#define Tcl_ListObjAppendElement \ + (tclStubsPtr->tcl_ListObjAppendElement) /* 44 */ +#endif +#ifndef Tcl_ListObjGetElements +#define Tcl_ListObjGetElements \ + (tclStubsPtr->tcl_ListObjGetElements) /* 45 */ +#endif +#ifndef Tcl_ListObjIndex +#define Tcl_ListObjIndex \ + (tclStubsPtr->tcl_ListObjIndex) /* 46 */ +#endif +#ifndef Tcl_ListObjLength +#define Tcl_ListObjLength \ + (tclStubsPtr->tcl_ListObjLength) /* 47 */ +#endif +#ifndef Tcl_ListObjReplace +#define Tcl_ListObjReplace \ + (tclStubsPtr->tcl_ListObjReplace) /* 48 */ +#endif +#ifndef Tcl_NewBooleanObj +#define Tcl_NewBooleanObj \ + (tclStubsPtr->tcl_NewBooleanObj) /* 49 */ +#endif +#ifndef Tcl_NewByteArrayObj +#define Tcl_NewByteArrayObj \ + (tclStubsPtr->tcl_NewByteArrayObj) /* 50 */ +#endif +#ifndef Tcl_NewDoubleObj +#define Tcl_NewDoubleObj \ + (tclStubsPtr->tcl_NewDoubleObj) /* 51 */ +#endif +#ifndef Tcl_NewIntObj +#define Tcl_NewIntObj \ + (tclStubsPtr->tcl_NewIntObj) /* 52 */ +#endif +#ifndef Tcl_NewListObj +#define Tcl_NewListObj \ + (tclStubsPtr->tcl_NewListObj) /* 53 */ +#endif +#ifndef Tcl_NewLongObj +#define Tcl_NewLongObj \ + (tclStubsPtr->tcl_NewLongObj) /* 54 */ +#endif +#ifndef Tcl_NewObj +#define Tcl_NewObj \ + (tclStubsPtr->tcl_NewObj) /* 55 */ +#endif +#ifndef Tcl_NewStringObj +#define Tcl_NewStringObj \ + (tclStubsPtr->tcl_NewStringObj) /* 56 */ +#endif +#ifndef Tcl_SetBooleanObj +#define Tcl_SetBooleanObj \ + (tclStubsPtr->tcl_SetBooleanObj) /* 57 */ +#endif +#ifndef Tcl_SetByteArrayLength +#define Tcl_SetByteArrayLength \ + (tclStubsPtr->tcl_SetByteArrayLength) /* 58 */ +#endif +#ifndef Tcl_SetByteArrayObj +#define Tcl_SetByteArrayObj \ + (tclStubsPtr->tcl_SetByteArrayObj) /* 59 */ +#endif +#ifndef Tcl_SetDoubleObj +#define Tcl_SetDoubleObj \ + (tclStubsPtr->tcl_SetDoubleObj) /* 60 */ +#endif +#ifndef Tcl_SetIntObj +#define Tcl_SetIntObj \ + (tclStubsPtr->tcl_SetIntObj) /* 61 */ +#endif +#ifndef Tcl_SetListObj +#define Tcl_SetListObj \ + (tclStubsPtr->tcl_SetListObj) /* 62 */ +#endif +#ifndef Tcl_SetLongObj +#define Tcl_SetLongObj \ + (tclStubsPtr->tcl_SetLongObj) /* 63 */ +#endif +#ifndef Tcl_SetObjLength +#define Tcl_SetObjLength \ + (tclStubsPtr->tcl_SetObjLength) /* 64 */ +#endif +#ifndef Tcl_SetStringObj +#define Tcl_SetStringObj \ + (tclStubsPtr->tcl_SetStringObj) /* 65 */ +#endif +#ifndef Tcl_AddErrorInfo +#define Tcl_AddErrorInfo \ + (tclStubsPtr->tcl_AddErrorInfo) /* 66 */ +#endif +#ifndef Tcl_AddObjErrorInfo +#define Tcl_AddObjErrorInfo \ + (tclStubsPtr->tcl_AddObjErrorInfo) /* 67 */ +#endif +#ifndef Tcl_AllowExceptions +#define Tcl_AllowExceptions \ + (tclStubsPtr->tcl_AllowExceptions) /* 68 */ +#endif +#ifndef Tcl_AppendElement +#define Tcl_AppendElement \ + (tclStubsPtr->tcl_AppendElement) /* 69 */ +#endif +#ifndef Tcl_AppendResult +#define Tcl_AppendResult \ + (tclStubsPtr->tcl_AppendResult) /* 70 */ +#endif +#ifndef Tcl_AsyncCreate +#define Tcl_AsyncCreate \ + (tclStubsPtr->tcl_AsyncCreate) /* 71 */ +#endif +#ifndef Tcl_AsyncDelete +#define Tcl_AsyncDelete \ + (tclStubsPtr->tcl_AsyncDelete) /* 72 */ +#endif +#ifndef Tcl_AsyncInvoke +#define Tcl_AsyncInvoke \ + (tclStubsPtr->tcl_AsyncInvoke) /* 73 */ +#endif +#ifndef Tcl_AsyncMark +#define Tcl_AsyncMark \ + (tclStubsPtr->tcl_AsyncMark) /* 74 */ +#endif +#ifndef Tcl_AsyncReady +#define Tcl_AsyncReady \ + (tclStubsPtr->tcl_AsyncReady) /* 75 */ +#endif +#ifndef Tcl_BackgroundError +#define Tcl_BackgroundError \ + (tclStubsPtr->tcl_BackgroundError) /* 76 */ +#endif +#ifndef Tcl_Backslash +#define Tcl_Backslash \ + (tclStubsPtr->tcl_Backslash) /* 77 */ +#endif +#ifndef Tcl_BadChannelOption +#define Tcl_BadChannelOption \ + (tclStubsPtr->tcl_BadChannelOption) /* 78 */ +#endif +#ifndef Tcl_CallWhenDeleted +#define Tcl_CallWhenDeleted \ + (tclStubsPtr->tcl_CallWhenDeleted) /* 79 */ +#endif +#ifndef Tcl_CancelIdleCall +#define Tcl_CancelIdleCall \ + (tclStubsPtr->tcl_CancelIdleCall) /* 80 */ +#endif +#ifndef Tcl_Close +#define Tcl_Close \ + (tclStubsPtr->tcl_Close) /* 81 */ +#endif +#ifndef Tcl_CommandComplete +#define Tcl_CommandComplete \ + (tclStubsPtr->tcl_CommandComplete) /* 82 */ +#endif +#ifndef Tcl_Concat +#define Tcl_Concat \ + (tclStubsPtr->tcl_Concat) /* 83 */ +#endif +#ifndef Tcl_ConvertElement +#define Tcl_ConvertElement \ + (tclStubsPtr->tcl_ConvertElement) /* 84 */ +#endif +#ifndef Tcl_ConvertCountedElement +#define Tcl_ConvertCountedElement \ + (tclStubsPtr->tcl_ConvertCountedElement) /* 85 */ +#endif +#ifndef Tcl_CreateAlias +#define Tcl_CreateAlias \ + (tclStubsPtr->tcl_CreateAlias) /* 86 */ +#endif +#ifndef Tcl_CreateAliasObj +#define Tcl_CreateAliasObj \ + (tclStubsPtr->tcl_CreateAliasObj) /* 87 */ +#endif +#ifndef Tcl_CreateChannel +#define Tcl_CreateChannel \ + (tclStubsPtr->tcl_CreateChannel) /* 88 */ +#endif +#ifndef Tcl_CreateChannelHandler +#define Tcl_CreateChannelHandler \ + (tclStubsPtr->tcl_CreateChannelHandler) /* 89 */ +#endif +#ifndef Tcl_CreateCloseHandler +#define Tcl_CreateCloseHandler \ + (tclStubsPtr->tcl_CreateCloseHandler) /* 90 */ +#endif +#ifndef Tcl_CreateCommand +#define Tcl_CreateCommand \ + (tclStubsPtr->tcl_CreateCommand) /* 91 */ +#endif +#ifndef Tcl_CreateEventSource +#define Tcl_CreateEventSource \ + (tclStubsPtr->tcl_CreateEventSource) /* 92 */ +#endif +#ifndef Tcl_CreateExitHandler +#define Tcl_CreateExitHandler \ + (tclStubsPtr->tcl_CreateExitHandler) /* 93 */ +#endif +#ifndef Tcl_CreateInterp +#define Tcl_CreateInterp \ + (tclStubsPtr->tcl_CreateInterp) /* 94 */ +#endif +#ifndef Tcl_CreateMathFunc +#define Tcl_CreateMathFunc \ + (tclStubsPtr->tcl_CreateMathFunc) /* 95 */ +#endif +#ifndef Tcl_CreateObjCommand +#define Tcl_CreateObjCommand \ + (tclStubsPtr->tcl_CreateObjCommand) /* 96 */ +#endif +#ifndef Tcl_CreateSlave +#define Tcl_CreateSlave \ + (tclStubsPtr->tcl_CreateSlave) /* 97 */ +#endif +#ifndef Tcl_CreateTimerHandler +#define Tcl_CreateTimerHandler \ + (tclStubsPtr->tcl_CreateTimerHandler) /* 98 */ +#endif +#ifndef Tcl_CreateTrace +#define Tcl_CreateTrace \ + (tclStubsPtr->tcl_CreateTrace) /* 99 */ +#endif +#ifndef Tcl_DeleteAssocData +#define Tcl_DeleteAssocData \ + (tclStubsPtr->tcl_DeleteAssocData) /* 100 */ +#endif +#ifndef Tcl_DeleteChannelHandler +#define Tcl_DeleteChannelHandler \ + (tclStubsPtr->tcl_DeleteChannelHandler) /* 101 */ +#endif +#ifndef Tcl_DeleteCloseHandler +#define Tcl_DeleteCloseHandler \ + (tclStubsPtr->tcl_DeleteCloseHandler) /* 102 */ +#endif +#ifndef Tcl_DeleteCommand +#define Tcl_DeleteCommand \ + (tclStubsPtr->tcl_DeleteCommand) /* 103 */ +#endif +#ifndef Tcl_DeleteCommandFromToken +#define Tcl_DeleteCommandFromToken \ + (tclStubsPtr->tcl_DeleteCommandFromToken) /* 104 */ +#endif +#ifndef Tcl_DeleteEvents +#define Tcl_DeleteEvents \ + (tclStubsPtr->tcl_DeleteEvents) /* 105 */ +#endif +#ifndef Tcl_DeleteEventSource +#define Tcl_DeleteEventSource \ + (tclStubsPtr->tcl_DeleteEventSource) /* 106 */ +#endif +#ifndef Tcl_DeleteExitHandler +#define Tcl_DeleteExitHandler \ + (tclStubsPtr->tcl_DeleteExitHandler) /* 107 */ +#endif +#ifndef Tcl_DeleteHashEntry +#define Tcl_DeleteHashEntry \ + (tclStubsPtr->tcl_DeleteHashEntry) /* 108 */ +#endif +#ifndef Tcl_DeleteHashTable +#define Tcl_DeleteHashTable \ + (tclStubsPtr->tcl_DeleteHashTable) /* 109 */ +#endif +#ifndef Tcl_DeleteInterp +#define Tcl_DeleteInterp \ + (tclStubsPtr->tcl_DeleteInterp) /* 110 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_DetachPids +#define Tcl_DetachPids \ + (tclStubsPtr->tcl_DetachPids) /* 111 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_DetachPids +#define Tcl_DetachPids \ + (tclStubsPtr->tcl_DetachPids) /* 111 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_DeleteTimerHandler +#define Tcl_DeleteTimerHandler \ + (tclStubsPtr->tcl_DeleteTimerHandler) /* 112 */ +#endif +#ifndef Tcl_DeleteTrace +#define Tcl_DeleteTrace \ + (tclStubsPtr->tcl_DeleteTrace) /* 113 */ +#endif +#ifndef Tcl_DontCallWhenDeleted +#define Tcl_DontCallWhenDeleted \ + (tclStubsPtr->tcl_DontCallWhenDeleted) /* 114 */ +#endif +#ifndef Tcl_DoOneEvent +#define Tcl_DoOneEvent \ + (tclStubsPtr->tcl_DoOneEvent) /* 115 */ +#endif +#ifndef Tcl_DoWhenIdle +#define Tcl_DoWhenIdle \ + (tclStubsPtr->tcl_DoWhenIdle) /* 116 */ +#endif +#ifndef Tcl_DStringAppend +#define Tcl_DStringAppend \ + (tclStubsPtr->tcl_DStringAppend) /* 117 */ +#endif +#ifndef Tcl_DStringAppendElement +#define Tcl_DStringAppendElement \ + (tclStubsPtr->tcl_DStringAppendElement) /* 118 */ +#endif +#ifndef Tcl_DStringEndSublist +#define Tcl_DStringEndSublist \ + (tclStubsPtr->tcl_DStringEndSublist) /* 119 */ +#endif +#ifndef Tcl_DStringFree +#define Tcl_DStringFree \ + (tclStubsPtr->tcl_DStringFree) /* 120 */ +#endif +#ifndef Tcl_DStringGetResult +#define Tcl_DStringGetResult \ + (tclStubsPtr->tcl_DStringGetResult) /* 121 */ +#endif +#ifndef Tcl_DStringInit +#define Tcl_DStringInit \ + (tclStubsPtr->tcl_DStringInit) /* 122 */ +#endif +#ifndef Tcl_DStringResult +#define Tcl_DStringResult \ + (tclStubsPtr->tcl_DStringResult) /* 123 */ +#endif +#ifndef Tcl_DStringSetLength +#define Tcl_DStringSetLength \ + (tclStubsPtr->tcl_DStringSetLength) /* 124 */ +#endif +#ifndef Tcl_DStringStartSublist +#define Tcl_DStringStartSublist \ + (tclStubsPtr->tcl_DStringStartSublist) /* 125 */ +#endif +#ifndef Tcl_Eof +#define Tcl_Eof \ + (tclStubsPtr->tcl_Eof) /* 126 */ +#endif +#ifndef Tcl_ErrnoId +#define Tcl_ErrnoId \ + (tclStubsPtr->tcl_ErrnoId) /* 127 */ +#endif +#ifndef Tcl_ErrnoMsg +#define Tcl_ErrnoMsg \ + (tclStubsPtr->tcl_ErrnoMsg) /* 128 */ +#endif +#ifndef Tcl_Eval +#define Tcl_Eval \ + (tclStubsPtr->tcl_Eval) /* 129 */ +#endif +#ifndef Tcl_EvalFile +#define Tcl_EvalFile \ + (tclStubsPtr->tcl_EvalFile) /* 130 */ +#endif +#ifndef Tcl_EvalObj +#define Tcl_EvalObj \ + (tclStubsPtr->tcl_EvalObj) /* 131 */ +#endif +#ifndef Tcl_EventuallyFree +#define Tcl_EventuallyFree \ + (tclStubsPtr->tcl_EventuallyFree) /* 132 */ +#endif +#ifndef Tcl_Exit +#define Tcl_Exit \ + (tclStubsPtr->tcl_Exit) /* 133 */ +#endif +#ifndef Tcl_ExposeCommand +#define Tcl_ExposeCommand \ + (tclStubsPtr->tcl_ExposeCommand) /* 134 */ +#endif +#ifndef Tcl_ExprBoolean +#define Tcl_ExprBoolean \ + (tclStubsPtr->tcl_ExprBoolean) /* 135 */ +#endif +#ifndef Tcl_ExprBooleanObj +#define Tcl_ExprBooleanObj \ + (tclStubsPtr->tcl_ExprBooleanObj) /* 136 */ +#endif +#ifndef Tcl_ExprDouble +#define Tcl_ExprDouble \ + (tclStubsPtr->tcl_ExprDouble) /* 137 */ +#endif +#ifndef Tcl_ExprDoubleObj +#define Tcl_ExprDoubleObj \ + (tclStubsPtr->tcl_ExprDoubleObj) /* 138 */ +#endif +#ifndef Tcl_ExprLong +#define Tcl_ExprLong \ + (tclStubsPtr->tcl_ExprLong) /* 139 */ +#endif +#ifndef Tcl_ExprLongObj +#define Tcl_ExprLongObj \ + (tclStubsPtr->tcl_ExprLongObj) /* 140 */ +#endif +#ifndef Tcl_ExprObj +#define Tcl_ExprObj \ + (tclStubsPtr->tcl_ExprObj) /* 141 */ +#endif +#ifndef Tcl_ExprString +#define Tcl_ExprString \ + (tclStubsPtr->tcl_ExprString) /* 142 */ +#endif +#ifndef Tcl_Finalize +#define Tcl_Finalize \ + (tclStubsPtr->tcl_Finalize) /* 143 */ +#endif +#ifndef Tcl_FindExecutable +#define Tcl_FindExecutable \ + (tclStubsPtr->tcl_FindExecutable) /* 144 */ +#endif +#ifndef Tcl_FirstHashEntry +#define Tcl_FirstHashEntry \ + (tclStubsPtr->tcl_FirstHashEntry) /* 145 */ +#endif +#ifndef Tcl_Flush +#define Tcl_Flush \ + (tclStubsPtr->tcl_Flush) /* 146 */ +#endif +#ifndef Tcl_FreeResult +#define Tcl_FreeResult \ + (tclStubsPtr->tcl_FreeResult) /* 147 */ +#endif +#ifndef Tcl_GetAlias +#define Tcl_GetAlias \ + (tclStubsPtr->tcl_GetAlias) /* 148 */ +#endif +#ifndef Tcl_GetAliasObj +#define Tcl_GetAliasObj \ + (tclStubsPtr->tcl_GetAliasObj) /* 149 */ +#endif +#ifndef Tcl_GetAssocData +#define Tcl_GetAssocData \ + (tclStubsPtr->tcl_GetAssocData) /* 150 */ +#endif +#ifndef Tcl_GetChannel +#define Tcl_GetChannel \ + (tclStubsPtr->tcl_GetChannel) /* 151 */ +#endif +#ifndef Tcl_GetChannelBufferSize +#define Tcl_GetChannelBufferSize \ + (tclStubsPtr->tcl_GetChannelBufferSize) /* 152 */ +#endif +#ifndef Tcl_GetChannelHandle +#define Tcl_GetChannelHandle \ + (tclStubsPtr->tcl_GetChannelHandle) /* 153 */ +#endif +#ifndef Tcl_GetChannelInstanceData +#define Tcl_GetChannelInstanceData \ + (tclStubsPtr->tcl_GetChannelInstanceData) /* 154 */ +#endif +#ifndef Tcl_GetChannelMode +#define Tcl_GetChannelMode \ + (tclStubsPtr->tcl_GetChannelMode) /* 155 */ +#endif +#ifndef Tcl_GetChannelName +#define Tcl_GetChannelName \ + (tclStubsPtr->tcl_GetChannelName) /* 156 */ +#endif +#ifndef Tcl_GetChannelOption +#define Tcl_GetChannelOption \ + (tclStubsPtr->tcl_GetChannelOption) /* 157 */ +#endif +#ifndef Tcl_GetChannelType +#define Tcl_GetChannelType \ + (tclStubsPtr->tcl_GetChannelType) /* 158 */ +#endif +#ifndef Tcl_GetCommandInfo +#define Tcl_GetCommandInfo \ + (tclStubsPtr->tcl_GetCommandInfo) /* 159 */ +#endif +#ifndef Tcl_GetCommandName +#define Tcl_GetCommandName \ + (tclStubsPtr->tcl_GetCommandName) /* 160 */ +#endif +#ifndef Tcl_GetErrno +#define Tcl_GetErrno \ + (tclStubsPtr->tcl_GetErrno) /* 161 */ +#endif +#ifndef Tcl_GetHostName +#define Tcl_GetHostName \ + (tclStubsPtr->tcl_GetHostName) /* 162 */ +#endif +#ifndef Tcl_GetInterpPath +#define Tcl_GetInterpPath \ + (tclStubsPtr->tcl_GetInterpPath) /* 163 */ +#endif +#ifndef Tcl_GetMaster +#define Tcl_GetMaster \ + (tclStubsPtr->tcl_GetMaster) /* 164 */ +#endif +#ifndef Tcl_GetNameOfExecutable +#define Tcl_GetNameOfExecutable \ + (tclStubsPtr->tcl_GetNameOfExecutable) /* 165 */ +#endif +#ifndef Tcl_GetObjResult +#define Tcl_GetObjResult \ + (tclStubsPtr->tcl_GetObjResult) /* 166 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_GetOpenFile +#define Tcl_GetOpenFile \ + (tclStubsPtr->tcl_GetOpenFile) /* 167 */ +#endif +#endif /* UNIX */ +#ifndef Tcl_GetPathType +#define Tcl_GetPathType \ + (tclStubsPtr->tcl_GetPathType) /* 168 */ +#endif +#ifndef Tcl_Gets +#define Tcl_Gets \ + (tclStubsPtr->tcl_Gets) /* 169 */ +#endif +#ifndef Tcl_GetsObj +#define Tcl_GetsObj \ + (tclStubsPtr->tcl_GetsObj) /* 170 */ +#endif +#ifndef Tcl_GetServiceMode +#define Tcl_GetServiceMode \ + (tclStubsPtr->tcl_GetServiceMode) /* 171 */ +#endif +#ifndef Tcl_GetSlave +#define Tcl_GetSlave \ + (tclStubsPtr->tcl_GetSlave) /* 172 */ +#endif +#ifndef Tcl_GetStdChannel +#define Tcl_GetStdChannel \ + (tclStubsPtr->tcl_GetStdChannel) /* 173 */ +#endif +#ifndef Tcl_GetStringResult +#define Tcl_GetStringResult \ + (tclStubsPtr->tcl_GetStringResult) /* 174 */ +#endif +#ifndef Tcl_GetVar +#define Tcl_GetVar \ + (tclStubsPtr->tcl_GetVar) /* 175 */ +#endif +#ifndef Tcl_GetVar2 +#define Tcl_GetVar2 \ + (tclStubsPtr->tcl_GetVar2) /* 176 */ +#endif +#ifndef Tcl_GlobalEval +#define Tcl_GlobalEval \ + (tclStubsPtr->tcl_GlobalEval) /* 177 */ +#endif +#ifndef Tcl_GlobalEvalObj +#define Tcl_GlobalEvalObj \ + (tclStubsPtr->tcl_GlobalEvalObj) /* 178 */ +#endif +#ifndef Tcl_HideCommand +#define Tcl_HideCommand \ + (tclStubsPtr->tcl_HideCommand) /* 179 */ +#endif +#ifndef Tcl_Init +#define Tcl_Init \ + (tclStubsPtr->tcl_Init) /* 180 */ +#endif +#ifndef Tcl_InitHashTable +#define Tcl_InitHashTable \ + (tclStubsPtr->tcl_InitHashTable) /* 181 */ +#endif +#ifndef Tcl_InputBlocked +#define Tcl_InputBlocked \ + (tclStubsPtr->tcl_InputBlocked) /* 182 */ +#endif +#ifndef Tcl_InputBuffered +#define Tcl_InputBuffered \ + (tclStubsPtr->tcl_InputBuffered) /* 183 */ +#endif +#ifndef Tcl_InterpDeleted +#define Tcl_InterpDeleted \ + (tclStubsPtr->tcl_InterpDeleted) /* 184 */ +#endif +#ifndef Tcl_IsSafe +#define Tcl_IsSafe \ + (tclStubsPtr->tcl_IsSafe) /* 185 */ +#endif +#ifndef Tcl_JoinPath +#define Tcl_JoinPath \ + (tclStubsPtr->tcl_JoinPath) /* 186 */ +#endif +#ifndef Tcl_LinkVar +#define Tcl_LinkVar \ + (tclStubsPtr->tcl_LinkVar) /* 187 */ +#endif +/* Slot 188 is reserved */ +#ifndef Tcl_MakeFileChannel +#define Tcl_MakeFileChannel \ + (tclStubsPtr->tcl_MakeFileChannel) /* 189 */ +#endif +#ifndef Tcl_MakeSafe +#define Tcl_MakeSafe \ + (tclStubsPtr->tcl_MakeSafe) /* 190 */ +#endif +#ifndef Tcl_MakeTcpClientChannel +#define Tcl_MakeTcpClientChannel \ + (tclStubsPtr->tcl_MakeTcpClientChannel) /* 191 */ +#endif +#ifndef Tcl_Merge +#define Tcl_Merge \ + (tclStubsPtr->tcl_Merge) /* 192 */ +#endif +#ifndef Tcl_NextHashEntry +#define Tcl_NextHashEntry \ + (tclStubsPtr->tcl_NextHashEntry) /* 193 */ +#endif +#ifndef Tcl_NotifyChannel +#define Tcl_NotifyChannel \ + (tclStubsPtr->tcl_NotifyChannel) /* 194 */ +#endif +#ifndef Tcl_ObjGetVar2 +#define Tcl_ObjGetVar2 \ + (tclStubsPtr->tcl_ObjGetVar2) /* 195 */ +#endif +#ifndef Tcl_ObjSetVar2 +#define Tcl_ObjSetVar2 \ + (tclStubsPtr->tcl_ObjSetVar2) /* 196 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_OpenCommandChannel +#define Tcl_OpenCommandChannel \ + (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_OpenCommandChannel +#define Tcl_OpenCommandChannel \ + (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_OpenFileChannel +#define Tcl_OpenFileChannel \ + (tclStubsPtr->tcl_OpenFileChannel) /* 198 */ +#endif +#ifndef Tcl_OpenTcpClient +#define Tcl_OpenTcpClient \ + (tclStubsPtr->tcl_OpenTcpClient) /* 199 */ +#endif +#ifndef Tcl_OpenTcpServer +#define Tcl_OpenTcpServer \ + (tclStubsPtr->tcl_OpenTcpServer) /* 200 */ +#endif +#ifndef Tcl_Preserve +#define Tcl_Preserve \ + (tclStubsPtr->tcl_Preserve) /* 201 */ +#endif +#ifndef Tcl_PrintDouble +#define Tcl_PrintDouble \ + (tclStubsPtr->tcl_PrintDouble) /* 202 */ +#endif +#ifndef Tcl_PutEnv +#define Tcl_PutEnv \ + (tclStubsPtr->tcl_PutEnv) /* 203 */ +#endif +#ifndef Tcl_PosixError +#define Tcl_PosixError \ + (tclStubsPtr->tcl_PosixError) /* 204 */ +#endif +#ifndef Tcl_QueueEvent +#define Tcl_QueueEvent \ + (tclStubsPtr->tcl_QueueEvent) /* 205 */ +#endif +#ifndef Tcl_Read +#define Tcl_Read \ + (tclStubsPtr->tcl_Read) /* 206 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_ReapDetachedProcs +#define Tcl_ReapDetachedProcs \ + (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_ReapDetachedProcs +#define Tcl_ReapDetachedProcs \ + (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_RecordAndEval +#define Tcl_RecordAndEval \ + (tclStubsPtr->tcl_RecordAndEval) /* 208 */ +#endif +#ifndef Tcl_RecordAndEvalObj +#define Tcl_RecordAndEvalObj \ + (tclStubsPtr->tcl_RecordAndEvalObj) /* 209 */ +#endif +#ifndef Tcl_RegisterChannel +#define Tcl_RegisterChannel \ + (tclStubsPtr->tcl_RegisterChannel) /* 210 */ +#endif +#ifndef Tcl_RegisterObjType +#define Tcl_RegisterObjType \ + (tclStubsPtr->tcl_RegisterObjType) /* 211 */ +#endif +#ifndef Tcl_RegExpCompile +#define Tcl_RegExpCompile \ + (tclStubsPtr->tcl_RegExpCompile) /* 212 */ +#endif +#ifndef Tcl_RegExpExec +#define Tcl_RegExpExec \ + (tclStubsPtr->tcl_RegExpExec) /* 213 */ +#endif +#ifndef Tcl_RegExpMatch +#define Tcl_RegExpMatch \ + (tclStubsPtr->tcl_RegExpMatch) /* 214 */ +#endif +#ifndef Tcl_RegExpRange +#define Tcl_RegExpRange \ + (tclStubsPtr->tcl_RegExpRange) /* 215 */ +#endif +#ifndef Tcl_Release +#define Tcl_Release \ + (tclStubsPtr->tcl_Release) /* 216 */ +#endif +#ifndef Tcl_ResetResult +#define Tcl_ResetResult \ + (tclStubsPtr->tcl_ResetResult) /* 217 */ +#endif +#ifndef Tcl_ScanElement +#define Tcl_ScanElement \ + (tclStubsPtr->tcl_ScanElement) /* 218 */ +#endif +#ifndef Tcl_ScanCountedElement +#define Tcl_ScanCountedElement \ + (tclStubsPtr->tcl_ScanCountedElement) /* 219 */ +#endif +#ifndef Tcl_SeekOld +#define Tcl_SeekOld \ + (tclStubsPtr->tcl_SeekOld) /* 220 */ +#endif +#ifndef Tcl_ServiceAll +#define Tcl_ServiceAll \ + (tclStubsPtr->tcl_ServiceAll) /* 221 */ +#endif +#ifndef Tcl_ServiceEvent +#define Tcl_ServiceEvent \ + (tclStubsPtr->tcl_ServiceEvent) /* 222 */ +#endif +#ifndef Tcl_SetAssocData +#define Tcl_SetAssocData \ + (tclStubsPtr->tcl_SetAssocData) /* 223 */ +#endif +#ifndef Tcl_SetChannelBufferSize +#define Tcl_SetChannelBufferSize \ + (tclStubsPtr->tcl_SetChannelBufferSize) /* 224 */ +#endif +#ifndef Tcl_SetChannelOption +#define Tcl_SetChannelOption \ + (tclStubsPtr->tcl_SetChannelOption) /* 225 */ +#endif +#ifndef Tcl_SetCommandInfo +#define Tcl_SetCommandInfo \ + (tclStubsPtr->tcl_SetCommandInfo) /* 226 */ +#endif +#ifndef Tcl_SetErrno +#define Tcl_SetErrno \ + (tclStubsPtr->tcl_SetErrno) /* 227 */ +#endif +#ifndef Tcl_SetErrorCode +#define Tcl_SetErrorCode \ + (tclStubsPtr->tcl_SetErrorCode) /* 228 */ +#endif +#ifndef Tcl_SetMaxBlockTime +#define Tcl_SetMaxBlockTime \ + (tclStubsPtr->tcl_SetMaxBlockTime) /* 229 */ +#endif +#ifndef Tcl_SetPanicProc +#define Tcl_SetPanicProc \ + (tclStubsPtr->tcl_SetPanicProc) /* 230 */ +#endif +#ifndef Tcl_SetRecursionLimit +#define Tcl_SetRecursionLimit \ + (tclStubsPtr->tcl_SetRecursionLimit) /* 231 */ +#endif +#ifndef Tcl_SetResult +#define Tcl_SetResult \ + (tclStubsPtr->tcl_SetResult) /* 232 */ +#endif +#ifndef Tcl_SetServiceMode +#define Tcl_SetServiceMode \ + (tclStubsPtr->tcl_SetServiceMode) /* 233 */ +#endif +#ifndef Tcl_SetObjErrorCode +#define Tcl_SetObjErrorCode \ + (tclStubsPtr->tcl_SetObjErrorCode) /* 234 */ +#endif +#ifndef Tcl_SetObjResult +#define Tcl_SetObjResult \ + (tclStubsPtr->tcl_SetObjResult) /* 235 */ +#endif +#ifndef Tcl_SetStdChannel +#define Tcl_SetStdChannel \ + (tclStubsPtr->tcl_SetStdChannel) /* 236 */ +#endif +#ifndef Tcl_SetVar +#define Tcl_SetVar \ + (tclStubsPtr->tcl_SetVar) /* 237 */ +#endif +#ifndef Tcl_SetVar2 +#define Tcl_SetVar2 \ + (tclStubsPtr->tcl_SetVar2) /* 238 */ +#endif +#ifndef Tcl_SignalId +#define Tcl_SignalId \ + (tclStubsPtr->tcl_SignalId) /* 239 */ +#endif +#ifndef Tcl_SignalMsg +#define Tcl_SignalMsg \ + (tclStubsPtr->tcl_SignalMsg) /* 240 */ +#endif +#ifndef Tcl_SourceRCFile +#define Tcl_SourceRCFile \ + (tclStubsPtr->tcl_SourceRCFile) /* 241 */ +#endif +#ifndef Tcl_SplitList +#define Tcl_SplitList \ + (tclStubsPtr->tcl_SplitList) /* 242 */ +#endif +#ifndef Tcl_SplitPath +#define Tcl_SplitPath \ + (tclStubsPtr->tcl_SplitPath) /* 243 */ +#endif +#ifndef Tcl_StaticPackage +#define Tcl_StaticPackage \ + (tclStubsPtr->tcl_StaticPackage) /* 244 */ +#endif +#ifndef Tcl_StringMatch +#define Tcl_StringMatch \ + (tclStubsPtr->tcl_StringMatch) /* 245 */ +#endif +#ifndef Tcl_TellOld +#define Tcl_TellOld \ + (tclStubsPtr->tcl_TellOld) /* 246 */ +#endif +#ifndef Tcl_TraceVar +#define Tcl_TraceVar \ + (tclStubsPtr->tcl_TraceVar) /* 247 */ +#endif +#ifndef Tcl_TraceVar2 +#define Tcl_TraceVar2 \ + (tclStubsPtr->tcl_TraceVar2) /* 248 */ +#endif +#ifndef Tcl_TranslateFileName +#define Tcl_TranslateFileName \ + (tclStubsPtr->tcl_TranslateFileName) /* 249 */ +#endif +#ifndef Tcl_Ungets +#define Tcl_Ungets \ + (tclStubsPtr->tcl_Ungets) /* 250 */ +#endif +#ifndef Tcl_UnlinkVar +#define Tcl_UnlinkVar \ + (tclStubsPtr->tcl_UnlinkVar) /* 251 */ +#endif +#ifndef Tcl_UnregisterChannel +#define Tcl_UnregisterChannel \ + (tclStubsPtr->tcl_UnregisterChannel) /* 252 */ +#endif +#ifndef Tcl_UnsetVar +#define Tcl_UnsetVar \ + (tclStubsPtr->tcl_UnsetVar) /* 253 */ +#endif +#ifndef Tcl_UnsetVar2 +#define Tcl_UnsetVar2 \ + (tclStubsPtr->tcl_UnsetVar2) /* 254 */ +#endif +#ifndef Tcl_UntraceVar +#define Tcl_UntraceVar \ + (tclStubsPtr->tcl_UntraceVar) /* 255 */ +#endif +#ifndef Tcl_UntraceVar2 +#define Tcl_UntraceVar2 \ + (tclStubsPtr->tcl_UntraceVar2) /* 256 */ +#endif +#ifndef Tcl_UpdateLinkedVar +#define Tcl_UpdateLinkedVar \ + (tclStubsPtr->tcl_UpdateLinkedVar) /* 257 */ +#endif +#ifndef Tcl_UpVar +#define Tcl_UpVar \ + (tclStubsPtr->tcl_UpVar) /* 258 */ +#endif +#ifndef Tcl_UpVar2 +#define Tcl_UpVar2 \ + (tclStubsPtr->tcl_UpVar2) /* 259 */ +#endif +#ifndef Tcl_VarEval +#define Tcl_VarEval \ + (tclStubsPtr->tcl_VarEval) /* 260 */ +#endif +#ifndef Tcl_VarTraceInfo +#define Tcl_VarTraceInfo \ + (tclStubsPtr->tcl_VarTraceInfo) /* 261 */ +#endif +#ifndef Tcl_VarTraceInfo2 +#define Tcl_VarTraceInfo2 \ + (tclStubsPtr->tcl_VarTraceInfo2) /* 262 */ +#endif +#ifndef Tcl_Write +#define Tcl_Write \ + (tclStubsPtr->tcl_Write) /* 263 */ +#endif +#ifndef Tcl_WrongNumArgs +#define Tcl_WrongNumArgs \ + (tclStubsPtr->tcl_WrongNumArgs) /* 264 */ +#endif +#ifndef Tcl_DumpActiveMemory +#define Tcl_DumpActiveMemory \ + (tclStubsPtr->tcl_DumpActiveMemory) /* 265 */ +#endif +#ifndef Tcl_ValidateAllMemory +#define Tcl_ValidateAllMemory \ + (tclStubsPtr->tcl_ValidateAllMemory) /* 266 */ +#endif +#ifndef Tcl_AppendResultVA +#define Tcl_AppendResultVA \ + (tclStubsPtr->tcl_AppendResultVA) /* 267 */ +#endif +#ifndef Tcl_AppendStringsToObjVA +#define Tcl_AppendStringsToObjVA \ + (tclStubsPtr->tcl_AppendStringsToObjVA) /* 268 */ +#endif +#ifndef Tcl_HashStats +#define Tcl_HashStats \ + (tclStubsPtr->tcl_HashStats) /* 269 */ +#endif +#ifndef Tcl_ParseVar +#define Tcl_ParseVar \ + (tclStubsPtr->tcl_ParseVar) /* 270 */ +#endif +#ifndef Tcl_PkgPresent +#define Tcl_PkgPresent \ + (tclStubsPtr->tcl_PkgPresent) /* 271 */ +#endif +#ifndef Tcl_PkgPresentEx +#define Tcl_PkgPresentEx \ + (tclStubsPtr->tcl_PkgPresentEx) /* 272 */ +#endif +#ifndef Tcl_PkgProvide +#define Tcl_PkgProvide \ + (tclStubsPtr->tcl_PkgProvide) /* 273 */ +#endif +#ifndef Tcl_PkgRequire +#define Tcl_PkgRequire \ + (tclStubsPtr->tcl_PkgRequire) /* 274 */ +#endif +#ifndef Tcl_SetErrorCodeVA +#define Tcl_SetErrorCodeVA \ + (tclStubsPtr->tcl_SetErrorCodeVA) /* 275 */ +#endif +#ifndef Tcl_VarEvalVA +#define Tcl_VarEvalVA \ + (tclStubsPtr->tcl_VarEvalVA) /* 276 */ +#endif +#ifndef Tcl_WaitPid +#define Tcl_WaitPid \ + (tclStubsPtr->tcl_WaitPid) /* 277 */ +#endif +#ifndef Tcl_PanicVA +#define Tcl_PanicVA \ + (tclStubsPtr->tcl_PanicVA) /* 278 */ +#endif +#ifndef Tcl_GetVersion +#define Tcl_GetVersion \ + (tclStubsPtr->tcl_GetVersion) /* 279 */ +#endif +#ifndef Tcl_InitMemory +#define Tcl_InitMemory \ + (tclStubsPtr->tcl_InitMemory) /* 280 */ +#endif +#ifndef Tcl_StackChannel +#define Tcl_StackChannel \ + (tclStubsPtr->tcl_StackChannel) /* 281 */ +#endif +#ifndef Tcl_UnstackChannel +#define Tcl_UnstackChannel \ + (tclStubsPtr->tcl_UnstackChannel) /* 282 */ +#endif +#ifndef Tcl_GetStackedChannel +#define Tcl_GetStackedChannel \ + (tclStubsPtr->tcl_GetStackedChannel) /* 283 */ +#endif +#ifndef Tcl_SetMainLoop +#define Tcl_SetMainLoop \ + (tclStubsPtr->tcl_SetMainLoop) /* 284 */ +#endif +/* Slot 285 is reserved */ +#ifndef Tcl_AppendObjToObj +#define Tcl_AppendObjToObj \ + (tclStubsPtr->tcl_AppendObjToObj) /* 286 */ +#endif +#ifndef Tcl_CreateEncoding +#define Tcl_CreateEncoding \ + (tclStubsPtr->tcl_CreateEncoding) /* 287 */ +#endif +#ifndef Tcl_CreateThreadExitHandler +#define Tcl_CreateThreadExitHandler \ + (tclStubsPtr->tcl_CreateThreadExitHandler) /* 288 */ +#endif +#ifndef Tcl_DeleteThreadExitHandler +#define Tcl_DeleteThreadExitHandler \ + (tclStubsPtr->tcl_DeleteThreadExitHandler) /* 289 */ +#endif +#ifndef Tcl_DiscardResult +#define Tcl_DiscardResult \ + (tclStubsPtr->tcl_DiscardResult) /* 290 */ +#endif +#ifndef Tcl_EvalEx +#define Tcl_EvalEx \ + (tclStubsPtr->tcl_EvalEx) /* 291 */ +#endif +#ifndef Tcl_EvalObjv +#define Tcl_EvalObjv \ + (tclStubsPtr->tcl_EvalObjv) /* 292 */ +#endif +#ifndef Tcl_EvalObjEx +#define Tcl_EvalObjEx \ + (tclStubsPtr->tcl_EvalObjEx) /* 293 */ +#endif +#ifndef Tcl_ExitThread +#define Tcl_ExitThread \ + (tclStubsPtr->tcl_ExitThread) /* 294 */ +#endif +#ifndef Tcl_ExternalToUtf +#define Tcl_ExternalToUtf \ + (tclStubsPtr->tcl_ExternalToUtf) /* 295 */ +#endif +#ifndef Tcl_ExternalToUtfDString +#define Tcl_ExternalToUtfDString \ + (tclStubsPtr->tcl_ExternalToUtfDString) /* 296 */ +#endif +#ifndef Tcl_FinalizeThread +#define Tcl_FinalizeThread \ + (tclStubsPtr->tcl_FinalizeThread) /* 297 */ +#endif +#ifndef Tcl_FinalizeNotifier +#define Tcl_FinalizeNotifier \ + (tclStubsPtr->tcl_FinalizeNotifier) /* 298 */ +#endif +#ifndef Tcl_FreeEncoding +#define Tcl_FreeEncoding \ + (tclStubsPtr->tcl_FreeEncoding) /* 299 */ +#endif +#ifndef Tcl_GetCurrentThread +#define Tcl_GetCurrentThread \ + (tclStubsPtr->tcl_GetCurrentThread) /* 300 */ +#endif +#ifndef Tcl_GetEncoding +#define Tcl_GetEncoding \ + (tclStubsPtr->tcl_GetEncoding) /* 301 */ +#endif +#ifndef Tcl_GetEncodingName +#define Tcl_GetEncodingName \ + (tclStubsPtr->tcl_GetEncodingName) /* 302 */ +#endif +#ifndef Tcl_GetEncodingNames +#define Tcl_GetEncodingNames \ + (tclStubsPtr->tcl_GetEncodingNames) /* 303 */ +#endif +#ifndef Tcl_GetIndexFromObjStruct +#define Tcl_GetIndexFromObjStruct \ + (tclStubsPtr->tcl_GetIndexFromObjStruct) /* 304 */ +#endif +#ifndef Tcl_GetThreadData +#define Tcl_GetThreadData \ + (tclStubsPtr->tcl_GetThreadData) /* 305 */ +#endif +#ifndef Tcl_GetVar2Ex +#define Tcl_GetVar2Ex \ + (tclStubsPtr->tcl_GetVar2Ex) /* 306 */ +#endif +#ifndef Tcl_InitNotifier +#define Tcl_InitNotifier \ + (tclStubsPtr->tcl_InitNotifier) /* 307 */ +#endif +#ifndef Tcl_MutexLock +#define Tcl_MutexLock \ + (tclStubsPtr->tcl_MutexLock) /* 308 */ +#endif +#ifndef Tcl_MutexUnlock +#define Tcl_MutexUnlock \ + (tclStubsPtr->tcl_MutexUnlock) /* 309 */ +#endif +#ifndef Tcl_ConditionNotify +#define Tcl_ConditionNotify \ + (tclStubsPtr->tcl_ConditionNotify) /* 310 */ +#endif +#ifndef Tcl_ConditionWait +#define Tcl_ConditionWait \ + (tclStubsPtr->tcl_ConditionWait) /* 311 */ +#endif +#ifndef Tcl_NumUtfChars +#define Tcl_NumUtfChars \ + (tclStubsPtr->tcl_NumUtfChars) /* 312 */ +#endif +#ifndef Tcl_ReadChars +#define Tcl_ReadChars \ + (tclStubsPtr->tcl_ReadChars) /* 313 */ +#endif +#ifndef Tcl_RestoreResult +#define Tcl_RestoreResult \ + (tclStubsPtr->tcl_RestoreResult) /* 314 */ +#endif +#ifndef Tcl_SaveResult +#define Tcl_SaveResult \ + (tclStubsPtr->tcl_SaveResult) /* 315 */ +#endif +#ifndef Tcl_SetSystemEncoding +#define Tcl_SetSystemEncoding \ + (tclStubsPtr->tcl_SetSystemEncoding) /* 316 */ +#endif +#ifndef Tcl_SetVar2Ex +#define Tcl_SetVar2Ex \ + (tclStubsPtr->tcl_SetVar2Ex) /* 317 */ +#endif +#ifndef Tcl_ThreadAlert +#define Tcl_ThreadAlert \ + (tclStubsPtr->tcl_ThreadAlert) /* 318 */ +#endif +#ifndef Tcl_ThreadQueueEvent +#define Tcl_ThreadQueueEvent \ + (tclStubsPtr->tcl_ThreadQueueEvent) /* 319 */ +#endif +#ifndef Tcl_UniCharAtIndex +#define Tcl_UniCharAtIndex \ + (tclStubsPtr->tcl_UniCharAtIndex) /* 320 */ +#endif +#ifndef Tcl_UniCharToLower +#define Tcl_UniCharToLower \ + (tclStubsPtr->tcl_UniCharToLower) /* 321 */ +#endif +#ifndef Tcl_UniCharToTitle +#define Tcl_UniCharToTitle \ + (tclStubsPtr->tcl_UniCharToTitle) /* 322 */ +#endif +#ifndef Tcl_UniCharToUpper +#define Tcl_UniCharToUpper \ + (tclStubsPtr->tcl_UniCharToUpper) /* 323 */ +#endif +#ifndef Tcl_UniCharToUtf +#define Tcl_UniCharToUtf \ + (tclStubsPtr->tcl_UniCharToUtf) /* 324 */ +#endif +#ifndef Tcl_UtfAtIndex +#define Tcl_UtfAtIndex \ + (tclStubsPtr->tcl_UtfAtIndex) /* 325 */ +#endif +#ifndef Tcl_UtfCharComplete +#define Tcl_UtfCharComplete \ + (tclStubsPtr->tcl_UtfCharComplete) /* 326 */ +#endif +#ifndef Tcl_UtfBackslash +#define Tcl_UtfBackslash \ + (tclStubsPtr->tcl_UtfBackslash) /* 327 */ +#endif +#ifndef Tcl_UtfFindFirst +#define Tcl_UtfFindFirst \ + (tclStubsPtr->tcl_UtfFindFirst) /* 328 */ +#endif +#ifndef Tcl_UtfFindLast +#define Tcl_UtfFindLast \ + (tclStubsPtr->tcl_UtfFindLast) /* 329 */ +#endif +#ifndef Tcl_UtfNext +#define Tcl_UtfNext \ + (tclStubsPtr->tcl_UtfNext) /* 330 */ +#endif +#ifndef Tcl_UtfPrev +#define Tcl_UtfPrev \ + (tclStubsPtr->tcl_UtfPrev) /* 331 */ +#endif +#ifndef Tcl_UtfToExternal +#define Tcl_UtfToExternal \ + (tclStubsPtr->tcl_UtfToExternal) /* 332 */ +#endif +#ifndef Tcl_UtfToExternalDString +#define Tcl_UtfToExternalDString \ + (tclStubsPtr->tcl_UtfToExternalDString) /* 333 */ +#endif +#ifndef Tcl_UtfToLower +#define Tcl_UtfToLower \ + (tclStubsPtr->tcl_UtfToLower) /* 334 */ +#endif +#ifndef Tcl_UtfToTitle +#define Tcl_UtfToTitle \ + (tclStubsPtr->tcl_UtfToTitle) /* 335 */ +#endif +#ifndef Tcl_UtfToUniChar +#define Tcl_UtfToUniChar \ + (tclStubsPtr->tcl_UtfToUniChar) /* 336 */ +#endif +#ifndef Tcl_UtfToUpper +#define Tcl_UtfToUpper \ + (tclStubsPtr->tcl_UtfToUpper) /* 337 */ +#endif +#ifndef Tcl_WriteChars +#define Tcl_WriteChars \ + (tclStubsPtr->tcl_WriteChars) /* 338 */ +#endif +#ifndef Tcl_WriteObj +#define Tcl_WriteObj \ + (tclStubsPtr->tcl_WriteObj) /* 339 */ +#endif +#ifndef Tcl_GetString +#define Tcl_GetString \ + (tclStubsPtr->tcl_GetString) /* 340 */ +#endif +#ifndef Tcl_GetDefaultEncodingDir +#define Tcl_GetDefaultEncodingDir \ + (tclStubsPtr->tcl_GetDefaultEncodingDir) /* 341 */ +#endif +#ifndef Tcl_SetDefaultEncodingDir +#define Tcl_SetDefaultEncodingDir \ + (tclStubsPtr->tcl_SetDefaultEncodingDir) /* 342 */ +#endif +#ifndef Tcl_AlertNotifier +#define Tcl_AlertNotifier \ + (tclStubsPtr->tcl_AlertNotifier) /* 343 */ +#endif +#ifndef Tcl_ServiceModeHook +#define Tcl_ServiceModeHook \ + (tclStubsPtr->tcl_ServiceModeHook) /* 344 */ +#endif +#ifndef Tcl_UniCharIsAlnum +#define Tcl_UniCharIsAlnum \ + (tclStubsPtr->tcl_UniCharIsAlnum) /* 345 */ +#endif +#ifndef Tcl_UniCharIsAlpha +#define Tcl_UniCharIsAlpha \ + (tclStubsPtr->tcl_UniCharIsAlpha) /* 346 */ +#endif +#ifndef Tcl_UniCharIsDigit +#define Tcl_UniCharIsDigit \ + (tclStubsPtr->tcl_UniCharIsDigit) /* 347 */ +#endif +#ifndef Tcl_UniCharIsLower +#define Tcl_UniCharIsLower \ + (tclStubsPtr->tcl_UniCharIsLower) /* 348 */ +#endif +#ifndef Tcl_UniCharIsSpace +#define Tcl_UniCharIsSpace \ + (tclStubsPtr->tcl_UniCharIsSpace) /* 349 */ +#endif +#ifndef Tcl_UniCharIsUpper +#define Tcl_UniCharIsUpper \ + (tclStubsPtr->tcl_UniCharIsUpper) /* 350 */ +#endif +#ifndef Tcl_UniCharIsWordChar +#define Tcl_UniCharIsWordChar \ + (tclStubsPtr->tcl_UniCharIsWordChar) /* 351 */ +#endif +#ifndef Tcl_UniCharLen +#define Tcl_UniCharLen \ + (tclStubsPtr->tcl_UniCharLen) /* 352 */ +#endif +#ifndef Tcl_UniCharNcmp +#define Tcl_UniCharNcmp \ + (tclStubsPtr->tcl_UniCharNcmp) /* 353 */ +#endif +#ifndef Tcl_UniCharToUtfDString +#define Tcl_UniCharToUtfDString \ + (tclStubsPtr->tcl_UniCharToUtfDString) /* 354 */ +#endif +#ifndef Tcl_UtfToUniCharDString +#define Tcl_UtfToUniCharDString \ + (tclStubsPtr->tcl_UtfToUniCharDString) /* 355 */ +#endif +#ifndef Tcl_GetRegExpFromObj +#define Tcl_GetRegExpFromObj \ + (tclStubsPtr->tcl_GetRegExpFromObj) /* 356 */ +#endif +#ifndef Tcl_EvalTokens +#define Tcl_EvalTokens \ + (tclStubsPtr->tcl_EvalTokens) /* 357 */ +#endif +#ifndef Tcl_FreeParse +#define Tcl_FreeParse \ + (tclStubsPtr->tcl_FreeParse) /* 358 */ +#endif +#ifndef Tcl_LogCommandInfo +#define Tcl_LogCommandInfo \ + (tclStubsPtr->tcl_LogCommandInfo) /* 359 */ +#endif +#ifndef Tcl_ParseBraces +#define Tcl_ParseBraces \ + (tclStubsPtr->tcl_ParseBraces) /* 360 */ +#endif +#ifndef Tcl_ParseCommand +#define Tcl_ParseCommand \ + (tclStubsPtr->tcl_ParseCommand) /* 361 */ +#endif +#ifndef Tcl_ParseExpr +#define Tcl_ParseExpr \ + (tclStubsPtr->tcl_ParseExpr) /* 362 */ +#endif +#ifndef Tcl_ParseQuotedString +#define Tcl_ParseQuotedString \ + (tclStubsPtr->tcl_ParseQuotedString) /* 363 */ +#endif +#ifndef Tcl_ParseVarName +#define Tcl_ParseVarName \ + (tclStubsPtr->tcl_ParseVarName) /* 364 */ +#endif +#ifndef Tcl_GetCwd +#define Tcl_GetCwd \ + (tclStubsPtr->tcl_GetCwd) /* 365 */ +#endif +#ifndef Tcl_Chdir +#define Tcl_Chdir \ + (tclStubsPtr->tcl_Chdir) /* 366 */ +#endif +#ifndef Tcl_Access +#define Tcl_Access \ + (tclStubsPtr->tcl_Access) /* 367 */ +#endif +#ifndef Tcl_Stat +#define Tcl_Stat \ + (tclStubsPtr->tcl_Stat) /* 368 */ +#endif +#ifndef Tcl_UtfNcmp +#define Tcl_UtfNcmp \ + (tclStubsPtr->tcl_UtfNcmp) /* 369 */ +#endif +#ifndef Tcl_UtfNcasecmp +#define Tcl_UtfNcasecmp \ + (tclStubsPtr->tcl_UtfNcasecmp) /* 370 */ +#endif +#ifndef Tcl_StringCaseMatch +#define Tcl_StringCaseMatch \ + (tclStubsPtr->tcl_StringCaseMatch) /* 371 */ +#endif +#ifndef Tcl_UniCharIsControl +#define Tcl_UniCharIsControl \ + (tclStubsPtr->tcl_UniCharIsControl) /* 372 */ +#endif +#ifndef Tcl_UniCharIsGraph +#define Tcl_UniCharIsGraph \ + (tclStubsPtr->tcl_UniCharIsGraph) /* 373 */ +#endif +#ifndef Tcl_UniCharIsPrint +#define Tcl_UniCharIsPrint \ + (tclStubsPtr->tcl_UniCharIsPrint) /* 374 */ +#endif +#ifndef Tcl_UniCharIsPunct +#define Tcl_UniCharIsPunct \ + (tclStubsPtr->tcl_UniCharIsPunct) /* 375 */ +#endif +#ifndef Tcl_RegExpExecObj +#define Tcl_RegExpExecObj \ + (tclStubsPtr->tcl_RegExpExecObj) /* 376 */ +#endif +#ifndef Tcl_RegExpGetInfo +#define Tcl_RegExpGetInfo \ + (tclStubsPtr->tcl_RegExpGetInfo) /* 377 */ +#endif +#ifndef Tcl_NewUnicodeObj +#define Tcl_NewUnicodeObj \ + (tclStubsPtr->tcl_NewUnicodeObj) /* 378 */ +#endif +#ifndef Tcl_SetUnicodeObj +#define Tcl_SetUnicodeObj \ + (tclStubsPtr->tcl_SetUnicodeObj) /* 379 */ +#endif +#ifndef Tcl_GetCharLength +#define Tcl_GetCharLength \ + (tclStubsPtr->tcl_GetCharLength) /* 380 */ +#endif +#ifndef Tcl_GetUniChar +#define Tcl_GetUniChar \ + (tclStubsPtr->tcl_GetUniChar) /* 381 */ +#endif +#ifndef Tcl_GetUnicode +#define Tcl_GetUnicode \ + (tclStubsPtr->tcl_GetUnicode) /* 382 */ +#endif +#ifndef Tcl_GetRange +#define Tcl_GetRange \ + (tclStubsPtr->tcl_GetRange) /* 383 */ +#endif +#ifndef Tcl_AppendUnicodeToObj +#define Tcl_AppendUnicodeToObj \ + (tclStubsPtr->tcl_AppendUnicodeToObj) /* 384 */ +#endif +#ifndef Tcl_RegExpMatchObj +#define Tcl_RegExpMatchObj \ + (tclStubsPtr->tcl_RegExpMatchObj) /* 385 */ +#endif +#ifndef Tcl_SetNotifier +#define Tcl_SetNotifier \ + (tclStubsPtr->tcl_SetNotifier) /* 386 */ +#endif +#ifndef Tcl_GetAllocMutex +#define Tcl_GetAllocMutex \ + (tclStubsPtr->tcl_GetAllocMutex) /* 387 */ +#endif +#ifndef Tcl_GetChannelNames +#define Tcl_GetChannelNames \ + (tclStubsPtr->tcl_GetChannelNames) /* 388 */ +#endif +#ifndef Tcl_GetChannelNamesEx +#define Tcl_GetChannelNamesEx \ + (tclStubsPtr->tcl_GetChannelNamesEx) /* 389 */ +#endif +#ifndef Tcl_ProcObjCmd +#define Tcl_ProcObjCmd \ + (tclStubsPtr->tcl_ProcObjCmd) /* 390 */ +#endif +#ifndef Tcl_ConditionFinalize +#define Tcl_ConditionFinalize \ + (tclStubsPtr->tcl_ConditionFinalize) /* 391 */ +#endif +#ifndef Tcl_MutexFinalize +#define Tcl_MutexFinalize \ + (tclStubsPtr->tcl_MutexFinalize) /* 392 */ +#endif +#ifndef Tcl_CreateThread +#define Tcl_CreateThread \ + (tclStubsPtr->tcl_CreateThread) /* 393 */ +#endif +#ifndef Tcl_ReadRaw +#define Tcl_ReadRaw \ + (tclStubsPtr->tcl_ReadRaw) /* 394 */ +#endif +#ifndef Tcl_WriteRaw +#define Tcl_WriteRaw \ + (tclStubsPtr->tcl_WriteRaw) /* 395 */ +#endif +#ifndef Tcl_GetTopChannel +#define Tcl_GetTopChannel \ + (tclStubsPtr->tcl_GetTopChannel) /* 396 */ +#endif +#ifndef Tcl_ChannelBuffered +#define Tcl_ChannelBuffered \ + (tclStubsPtr->tcl_ChannelBuffered) /* 397 */ +#endif +#ifndef Tcl_ChannelName +#define Tcl_ChannelName \ + (tclStubsPtr->tcl_ChannelName) /* 398 */ +#endif +#ifndef Tcl_ChannelVersion +#define Tcl_ChannelVersion \ + (tclStubsPtr->tcl_ChannelVersion) /* 399 */ +#endif +#ifndef Tcl_ChannelBlockModeProc +#define Tcl_ChannelBlockModeProc \ + (tclStubsPtr->tcl_ChannelBlockModeProc) /* 400 */ +#endif +#ifndef Tcl_ChannelCloseProc +#define Tcl_ChannelCloseProc \ + (tclStubsPtr->tcl_ChannelCloseProc) /* 401 */ +#endif +#ifndef Tcl_ChannelClose2Proc +#define Tcl_ChannelClose2Proc \ + (tclStubsPtr->tcl_ChannelClose2Proc) /* 402 */ +#endif +#ifndef Tcl_ChannelInputProc +#define Tcl_ChannelInputProc \ + (tclStubsPtr->tcl_ChannelInputProc) /* 403 */ +#endif +#ifndef Tcl_ChannelOutputProc +#define Tcl_ChannelOutputProc \ + (tclStubsPtr->tcl_ChannelOutputProc) /* 404 */ +#endif +#ifndef Tcl_ChannelSeekProc +#define Tcl_ChannelSeekProc \ + (tclStubsPtr->tcl_ChannelSeekProc) /* 405 */ +#endif +#ifndef Tcl_ChannelSetOptionProc +#define Tcl_ChannelSetOptionProc \ + (tclStubsPtr->tcl_ChannelSetOptionProc) /* 406 */ +#endif +#ifndef Tcl_ChannelGetOptionProc +#define Tcl_ChannelGetOptionProc \ + (tclStubsPtr->tcl_ChannelGetOptionProc) /* 407 */ +#endif +#ifndef Tcl_ChannelWatchProc +#define Tcl_ChannelWatchProc \ + (tclStubsPtr->tcl_ChannelWatchProc) /* 408 */ +#endif +#ifndef Tcl_ChannelGetHandleProc +#define Tcl_ChannelGetHandleProc \ + (tclStubsPtr->tcl_ChannelGetHandleProc) /* 409 */ +#endif +#ifndef Tcl_ChannelFlushProc +#define Tcl_ChannelFlushProc \ + (tclStubsPtr->tcl_ChannelFlushProc) /* 410 */ +#endif +#ifndef Tcl_ChannelHandlerProc +#define Tcl_ChannelHandlerProc \ + (tclStubsPtr->tcl_ChannelHandlerProc) /* 411 */ +#endif +#ifndef Tcl_JoinThread +#define Tcl_JoinThread \ + (tclStubsPtr->tcl_JoinThread) /* 412 */ +#endif +#ifndef Tcl_IsChannelShared +#define Tcl_IsChannelShared \ + (tclStubsPtr->tcl_IsChannelShared) /* 413 */ +#endif +#ifndef Tcl_IsChannelRegistered +#define Tcl_IsChannelRegistered \ + (tclStubsPtr->tcl_IsChannelRegistered) /* 414 */ +#endif +#ifndef Tcl_CutChannel +#define Tcl_CutChannel \ + (tclStubsPtr->tcl_CutChannel) /* 415 */ +#endif +#ifndef Tcl_SpliceChannel +#define Tcl_SpliceChannel \ + (tclStubsPtr->tcl_SpliceChannel) /* 416 */ +#endif +#ifndef Tcl_ClearChannelHandlers +#define Tcl_ClearChannelHandlers \ + (tclStubsPtr->tcl_ClearChannelHandlers) /* 417 */ +#endif +#ifndef Tcl_IsChannelExisting +#define Tcl_IsChannelExisting \ + (tclStubsPtr->tcl_IsChannelExisting) /* 418 */ +#endif +#ifndef Tcl_UniCharNcasecmp +#define Tcl_UniCharNcasecmp \ + (tclStubsPtr->tcl_UniCharNcasecmp) /* 419 */ +#endif +#ifndef Tcl_UniCharCaseMatch +#define Tcl_UniCharCaseMatch \ + (tclStubsPtr->tcl_UniCharCaseMatch) /* 420 */ +#endif +#ifndef Tcl_FindHashEntry +#define Tcl_FindHashEntry \ + (tclStubsPtr->tcl_FindHashEntry) /* 421 */ +#endif +#ifndef Tcl_CreateHashEntry +#define Tcl_CreateHashEntry \ + (tclStubsPtr->tcl_CreateHashEntry) /* 422 */ +#endif +#ifndef Tcl_InitCustomHashTable +#define Tcl_InitCustomHashTable \ + (tclStubsPtr->tcl_InitCustomHashTable) /* 423 */ +#endif +#ifndef Tcl_InitObjHashTable +#define Tcl_InitObjHashTable \ + (tclStubsPtr->tcl_InitObjHashTable) /* 424 */ +#endif +#ifndef Tcl_CommandTraceInfo +#define Tcl_CommandTraceInfo \ + (tclStubsPtr->tcl_CommandTraceInfo) /* 425 */ +#endif +#ifndef Tcl_TraceCommand +#define Tcl_TraceCommand \ + (tclStubsPtr->tcl_TraceCommand) /* 426 */ +#endif +#ifndef Tcl_UntraceCommand +#define Tcl_UntraceCommand \ + (tclStubsPtr->tcl_UntraceCommand) /* 427 */ +#endif +#ifndef Tcl_AttemptAlloc +#define Tcl_AttemptAlloc \ + (tclStubsPtr->tcl_AttemptAlloc) /* 428 */ +#endif +#ifndef Tcl_AttemptDbCkalloc +#define Tcl_AttemptDbCkalloc \ + (tclStubsPtr->tcl_AttemptDbCkalloc) /* 429 */ +#endif +#ifndef Tcl_AttemptRealloc +#define Tcl_AttemptRealloc \ + (tclStubsPtr->tcl_AttemptRealloc) /* 430 */ +#endif +#ifndef Tcl_AttemptDbCkrealloc +#define Tcl_AttemptDbCkrealloc \ + (tclStubsPtr->tcl_AttemptDbCkrealloc) /* 431 */ +#endif +#ifndef Tcl_AttemptSetObjLength +#define Tcl_AttemptSetObjLength \ + (tclStubsPtr->tcl_AttemptSetObjLength) /* 432 */ +#endif +#ifndef Tcl_GetChannelThread +#define Tcl_GetChannelThread \ + (tclStubsPtr->tcl_GetChannelThread) /* 433 */ +#endif +#ifndef Tcl_GetUnicodeFromObj +#define Tcl_GetUnicodeFromObj \ + (tclStubsPtr->tcl_GetUnicodeFromObj) /* 434 */ +#endif +#ifndef Tcl_GetMathFuncInfo +#define Tcl_GetMathFuncInfo \ + (tclStubsPtr->tcl_GetMathFuncInfo) /* 435 */ +#endif +#ifndef Tcl_ListMathFuncs +#define Tcl_ListMathFuncs \ + (tclStubsPtr->tcl_ListMathFuncs) /* 436 */ +#endif +#ifndef Tcl_SubstObj +#define Tcl_SubstObj \ + (tclStubsPtr->tcl_SubstObj) /* 437 */ +#endif +#ifndef Tcl_DetachChannel +#define Tcl_DetachChannel \ + (tclStubsPtr->tcl_DetachChannel) /* 438 */ +#endif +#ifndef Tcl_IsStandardChannel +#define Tcl_IsStandardChannel \ + (tclStubsPtr->tcl_IsStandardChannel) /* 439 */ +#endif +#ifndef Tcl_FSCopyFile +#define Tcl_FSCopyFile \ + (tclStubsPtr->tcl_FSCopyFile) /* 440 */ +#endif +#ifndef Tcl_FSCopyDirectory +#define Tcl_FSCopyDirectory \ + (tclStubsPtr->tcl_FSCopyDirectory) /* 441 */ +#endif +#ifndef Tcl_FSCreateDirectory +#define Tcl_FSCreateDirectory \ + (tclStubsPtr->tcl_FSCreateDirectory) /* 442 */ +#endif +#ifndef Tcl_FSDeleteFile +#define Tcl_FSDeleteFile \ + (tclStubsPtr->tcl_FSDeleteFile) /* 443 */ +#endif +#ifndef Tcl_FSLoadFile +#define Tcl_FSLoadFile \ + (tclStubsPtr->tcl_FSLoadFile) /* 444 */ +#endif +#ifndef Tcl_FSMatchInDirectory +#define Tcl_FSMatchInDirectory \ + (tclStubsPtr->tcl_FSMatchInDirectory) /* 445 */ +#endif +#ifndef Tcl_FSLink +#define Tcl_FSLink \ + (tclStubsPtr->tcl_FSLink) /* 446 */ +#endif +#ifndef Tcl_FSRemoveDirectory +#define Tcl_FSRemoveDirectory \ + (tclStubsPtr->tcl_FSRemoveDirectory) /* 447 */ +#endif +#ifndef Tcl_FSRenameFile +#define Tcl_FSRenameFile \ + (tclStubsPtr->tcl_FSRenameFile) /* 448 */ +#endif +#ifndef Tcl_FSLstat +#define Tcl_FSLstat \ + (tclStubsPtr->tcl_FSLstat) /* 449 */ +#endif +#ifndef Tcl_FSUtime +#define Tcl_FSUtime \ + (tclStubsPtr->tcl_FSUtime) /* 450 */ +#endif +#ifndef Tcl_FSFileAttrsGet +#define Tcl_FSFileAttrsGet \ + (tclStubsPtr->tcl_FSFileAttrsGet) /* 451 */ +#endif +#ifndef Tcl_FSFileAttrsSet +#define Tcl_FSFileAttrsSet \ + (tclStubsPtr->tcl_FSFileAttrsSet) /* 452 */ +#endif +#ifndef Tcl_FSFileAttrStrings +#define Tcl_FSFileAttrStrings \ + (tclStubsPtr->tcl_FSFileAttrStrings) /* 453 */ +#endif +#ifndef Tcl_FSStat +#define Tcl_FSStat \ + (tclStubsPtr->tcl_FSStat) /* 454 */ +#endif +#ifndef Tcl_FSAccess +#define Tcl_FSAccess \ + (tclStubsPtr->tcl_FSAccess) /* 455 */ +#endif +#ifndef Tcl_FSOpenFileChannel +#define Tcl_FSOpenFileChannel \ + (tclStubsPtr->tcl_FSOpenFileChannel) /* 456 */ +#endif +#ifndef Tcl_FSGetCwd +#define Tcl_FSGetCwd \ + (tclStubsPtr->tcl_FSGetCwd) /* 457 */ +#endif +#ifndef Tcl_FSChdir +#define Tcl_FSChdir \ + (tclStubsPtr->tcl_FSChdir) /* 458 */ +#endif +#ifndef Tcl_FSConvertToPathType +#define Tcl_FSConvertToPathType \ + (tclStubsPtr->tcl_FSConvertToPathType) /* 459 */ +#endif +#ifndef Tcl_FSJoinPath +#define Tcl_FSJoinPath \ + (tclStubsPtr->tcl_FSJoinPath) /* 460 */ +#endif +#ifndef Tcl_FSSplitPath +#define Tcl_FSSplitPath \ + (tclStubsPtr->tcl_FSSplitPath) /* 461 */ +#endif +#ifndef Tcl_FSEqualPaths +#define Tcl_FSEqualPaths \ + (tclStubsPtr->tcl_FSEqualPaths) /* 462 */ +#endif +#ifndef Tcl_FSGetNormalizedPath +#define Tcl_FSGetNormalizedPath \ + (tclStubsPtr->tcl_FSGetNormalizedPath) /* 463 */ +#endif +#ifndef Tcl_FSJoinToPath +#define Tcl_FSJoinToPath \ + (tclStubsPtr->tcl_FSJoinToPath) /* 464 */ +#endif +#ifndef Tcl_FSGetInternalRep +#define Tcl_FSGetInternalRep \ + (tclStubsPtr->tcl_FSGetInternalRep) /* 465 */ +#endif +#ifndef Tcl_FSGetTranslatedPath +#define Tcl_FSGetTranslatedPath \ + (tclStubsPtr->tcl_FSGetTranslatedPath) /* 466 */ +#endif +#ifndef Tcl_FSEvalFile +#define Tcl_FSEvalFile \ + (tclStubsPtr->tcl_FSEvalFile) /* 467 */ +#endif +#ifndef Tcl_FSNewNativePath +#define Tcl_FSNewNativePath \ + (tclStubsPtr->tcl_FSNewNativePath) /* 468 */ +#endif +#ifndef Tcl_FSGetNativePath +#define Tcl_FSGetNativePath \ + (tclStubsPtr->tcl_FSGetNativePath) /* 469 */ +#endif +#ifndef Tcl_FSFileSystemInfo +#define Tcl_FSFileSystemInfo \ + (tclStubsPtr->tcl_FSFileSystemInfo) /* 470 */ +#endif +#ifndef Tcl_FSPathSeparator +#define Tcl_FSPathSeparator \ + (tclStubsPtr->tcl_FSPathSeparator) /* 471 */ +#endif +#ifndef Tcl_FSListVolumes +#define Tcl_FSListVolumes \ + (tclStubsPtr->tcl_FSListVolumes) /* 472 */ +#endif +#ifndef Tcl_FSRegister +#define Tcl_FSRegister \ + (tclStubsPtr->tcl_FSRegister) /* 473 */ +#endif +#ifndef Tcl_FSUnregister +#define Tcl_FSUnregister \ + (tclStubsPtr->tcl_FSUnregister) /* 474 */ +#endif +#ifndef Tcl_FSData +#define Tcl_FSData \ + (tclStubsPtr->tcl_FSData) /* 475 */ +#endif +#ifndef Tcl_FSGetTranslatedStringPath +#define Tcl_FSGetTranslatedStringPath \ + (tclStubsPtr->tcl_FSGetTranslatedStringPath) /* 476 */ +#endif +#ifndef Tcl_FSGetFileSystemForPath +#define Tcl_FSGetFileSystemForPath \ + (tclStubsPtr->tcl_FSGetFileSystemForPath) /* 477 */ +#endif +#ifndef Tcl_FSGetPathType +#define Tcl_FSGetPathType \ + (tclStubsPtr->tcl_FSGetPathType) /* 478 */ +#endif +#ifndef Tcl_OutputBuffered +#define Tcl_OutputBuffered \ + (tclStubsPtr->tcl_OutputBuffered) /* 479 */ +#endif +#ifndef Tcl_FSMountsChanged +#define Tcl_FSMountsChanged \ + (tclStubsPtr->tcl_FSMountsChanged) /* 480 */ +#endif +#ifndef Tcl_EvalTokensStandard +#define Tcl_EvalTokensStandard \ + (tclStubsPtr->tcl_EvalTokensStandard) /* 481 */ +#endif +#ifndef Tcl_GetTime +#define Tcl_GetTime \ + (tclStubsPtr->tcl_GetTime) /* 482 */ +#endif +#ifndef Tcl_CreateObjTrace +#define Tcl_CreateObjTrace \ + (tclStubsPtr->tcl_CreateObjTrace) /* 483 */ +#endif +#ifndef Tcl_GetCommandInfoFromToken +#define Tcl_GetCommandInfoFromToken \ + (tclStubsPtr->tcl_GetCommandInfoFromToken) /* 484 */ +#endif +#ifndef Tcl_SetCommandInfoFromToken +#define Tcl_SetCommandInfoFromToken \ + (tclStubsPtr->tcl_SetCommandInfoFromToken) /* 485 */ +#endif +#ifndef Tcl_DbNewWideIntObj +#define Tcl_DbNewWideIntObj \ + (tclStubsPtr->tcl_DbNewWideIntObj) /* 486 */ +#endif +#ifndef Tcl_GetWideIntFromObj +#define Tcl_GetWideIntFromObj \ + (tclStubsPtr->tcl_GetWideIntFromObj) /* 487 */ +#endif +#ifndef Tcl_NewWideIntObj +#define Tcl_NewWideIntObj \ + (tclStubsPtr->tcl_NewWideIntObj) /* 488 */ +#endif +#ifndef Tcl_SetWideIntObj +#define Tcl_SetWideIntObj \ + (tclStubsPtr->tcl_SetWideIntObj) /* 489 */ +#endif +#ifndef Tcl_AllocStatBuf +#define Tcl_AllocStatBuf \ + (tclStubsPtr->tcl_AllocStatBuf) /* 490 */ +#endif +#ifndef Tcl_Seek +#define Tcl_Seek \ + (tclStubsPtr->tcl_Seek) /* 491 */ +#endif +#ifndef Tcl_Tell +#define Tcl_Tell \ + (tclStubsPtr->tcl_Tell) /* 492 */ +#endif +#ifndef Tcl_ChannelWideSeekProc +#define Tcl_ChannelWideSeekProc \ + (tclStubsPtr->tcl_ChannelWideSeekProc) /* 493 */ +#endif + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLDECLS */ + diff --git a/generic/tclInt.decls b/generic/tclInt.decls index 927e65c..d1dfc9b 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.59.2.1 2004/05/14 21:41:11 kennykb Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.59.2.2 2004/05/17 14:26:49 kennykb Exp $ library tcl @@ -700,10 +700,10 @@ declare 173 generic { # TclpGmtime and TclpLocaltime promoted to the generic interface from unix declare 182 generic { - struct tm *TclpLocaltime(CONST time_t *clock) + struct tm *TclpLocaltime(TclpTime_t clock) } declare 183 generic { - struct tm *TclpGmtime(CONST time_t *clock) + struct tm *TclpGmtime(TclpTime_t clock) } ############################################################################## @@ -990,11 +990,11 @@ declare 10 unix { # generic Stubs declare 11 unix { - struct tm * TclpLocaltime_unix(CONST time_t * clock) + struct tm * TclpLocaltime_unix(TclpTime_t clock) } declare 12 unix { - struct tm * TclpGmtime_unix(CONST time_t * clock) + struct tm * TclpGmtime_unix(TclpTime_t clock) } declare 13 unix { diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index d706a37..9bb472d 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -1,1362 +1,1362 @@ -/* - * tclIntDecls.h -- - * - * This file contains the declarations for all unsupported - * functions that are exported by the Tcl library. These - * interfaces are not guaranteed to remain the same between - * versions. Use at your own risk. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.1 2004/05/14 21:41:11 kennykb Exp $ - */ - -#ifndef _TCLINTDECLS -#define _TCLINTDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tclInt.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -/* Slot 0 is reserved */ -/* 1 */ -EXTERN int TclAccessDeleteProc _ANSI_ARGS_(( - TclAccessProc_ * proc)); -/* 2 */ -EXTERN int TclAccessInsertProc _ANSI_ARGS_(( - TclAccessProc_ * proc)); -/* 3 */ -EXTERN void TclAllocateFreeObjects _ANSI_ARGS_((void)); -/* Slot 4 is reserved */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 5 */ -EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, - int numPids, Tcl_Pid * pidPtr, - Tcl_Channel errorChan)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 5 */ -EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, - int numPids, Tcl_Pid * pidPtr, - Tcl_Channel errorChan)); -#endif /* __WIN32__ */ -/* 6 */ -EXTERN void TclCleanupCommand _ANSI_ARGS_((Command * cmdPtr)); -/* 7 */ -EXTERN int TclCopyAndCollapse _ANSI_ARGS_((int count, - CONST char * src, char * dst)); -/* 8 */ -EXTERN int TclCopyChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel inChan, Tcl_Channel outChan, - int toRead, Tcl_Obj * cmdPtr)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 9 */ -EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, - TclFile * outPipePtr, TclFile * errFilePtr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 9 */ -EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, - TclFile * outPipePtr, TclFile * errFilePtr)); -#endif /* __WIN32__ */ -/* 10 */ -EXTERN int TclCreateProc _ANSI_ARGS_((Tcl_Interp * interp, - Namespace * nsPtr, CONST char * procName, - Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, - Proc ** procPtrPtr)); -/* 11 */ -EXTERN void TclDeleteCompiledLocalVars _ANSI_ARGS_(( - Interp * iPtr, CallFrame * framePtr)); -/* 12 */ -EXTERN void TclDeleteVars _ANSI_ARGS_((Interp * iPtr, - Tcl_HashTable * tablePtr)); -/* 13 */ -EXTERN int TclDoGlob _ANSI_ARGS_((Tcl_Interp * interp, - char * separators, Tcl_DString * headPtr, - char * tail, Tcl_GlobTypeData * types)); -/* 14 */ -EXTERN void TclDumpMemoryInfo _ANSI_ARGS_((FILE * outFile)); -/* Slot 15 is reserved */ -/* 16 */ -EXTERN void TclExprFloatError _ANSI_ARGS_((Tcl_Interp * interp, - double value)); -/* Slot 17 is reserved */ -/* Slot 18 is reserved */ -/* Slot 19 is reserved */ -/* Slot 20 is reserved */ -/* Slot 21 is reserved */ -/* 22 */ -EXTERN int TclFindElement _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * listStr, int listLength, - CONST char ** elementPtr, - CONST char ** nextPtr, int * sizePtr, - int * bracePtr)); -/* 23 */ -EXTERN Proc * TclFindProc _ANSI_ARGS_((Interp * iPtr, - CONST char * procName)); -/* 24 */ -EXTERN int TclFormatInt _ANSI_ARGS_((char * buffer, long n)); -/* 25 */ -EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp * iPtr)); -/* Slot 26 is reserved */ -/* 27 */ -EXTERN int TclGetDate _ANSI_ARGS_((char * p, unsigned long now, - long zone, unsigned long * timePtr)); -/* 28 */ -EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type)); -/* Slot 29 is reserved */ -/* Slot 30 is reserved */ -/* 31 */ -EXTERN char * TclGetExtension _ANSI_ARGS_((char * name)); -/* 32 */ -EXTERN int TclGetFrame _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CallFrame ** framePtrPtr)); -/* 33 */ -EXTERN TclCmdProcType TclGetInterpProc _ANSI_ARGS_((void)); -/* 34 */ -EXTERN int TclGetIntForIndex _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int endValue, - int * indexPtr)); -/* Slot 35 is reserved */ -/* 36 */ -EXTERN int TclGetLong _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, long * longPtr)); -/* 37 */ -EXTERN int TclGetLoadedPackages _ANSI_ARGS_(( - Tcl_Interp * interp, char * targetName)); -/* 38 */ -EXTERN int TclGetNamespaceForQualName _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * qualName, - Namespace * cxtNsPtr, int flags, - Namespace ** nsPtrPtr, - Namespace ** altNsPtrPtr, - Namespace ** actualCxtPtrPtr, - CONST char ** simpleNamePtr)); -/* 39 */ -EXTERN TclObjCmdProcType TclGetObjInterpProc _ANSI_ARGS_((void)); -/* 40 */ -EXTERN int TclGetOpenMode _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * seekFlagPtr)); -/* 41 */ -EXTERN Tcl_Command TclGetOriginalCommand _ANSI_ARGS_(( - Tcl_Command command)); -/* 42 */ -EXTERN char * TclpGetUserHome _ANSI_ARGS_((CONST char * name, - Tcl_DString * bufferPtr)); -/* 43 */ -EXTERN int TclGlobalInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST84 char ** argv, int flags)); -/* 44 */ -EXTERN int TclGuessPackageName _ANSI_ARGS_(( - CONST char * fileName, Tcl_DString * bufPtr)); -/* 45 */ -EXTERN int TclHideUnsafeCommands _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 46 */ -EXTERN int TclInExit _ANSI_ARGS_((void)); -/* Slot 47 is reserved */ -/* Slot 48 is reserved */ -/* 49 */ -EXTERN Tcl_Obj * TclIncrVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - long incrAmount, int part1NotParsed)); -/* 50 */ -EXTERN void TclInitCompiledLocals _ANSI_ARGS_(( - Tcl_Interp * interp, CallFrame * framePtr, - Namespace * nsPtr)); -/* 51 */ -EXTERN int TclInterpInit _ANSI_ARGS_((Tcl_Interp * interp)); -/* 52 */ -EXTERN int TclInvoke _ANSI_ARGS_((Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -/* 53 */ -EXTERN int TclInvokeObjectCommand _ANSI_ARGS_(( - ClientData clientData, Tcl_Interp * interp, - int argc, CONST84 char ** argv)); -/* 54 */ -EXTERN int TclInvokeStringCommand _ANSI_ARGS_(( - ClientData clientData, Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[])); -/* 55 */ -EXTERN Proc * TclIsProc _ANSI_ARGS_((Command * cmdPtr)); -/* Slot 56 is reserved */ -/* Slot 57 is reserved */ -/* 58 */ -EXTERN Var * TclLookupVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, CONST char * msg, int createPart1, - int createPart2, Var ** arrayPtrPtr)); -/* Slot 59 is reserved */ -/* 60 */ -EXTERN int TclNeedSpace _ANSI_ARGS_((CONST char * start, - CONST char * end)); -/* 61 */ -EXTERN Tcl_Obj * TclNewProcBodyObj _ANSI_ARGS_((Proc * procPtr)); -/* 62 */ -EXTERN int TclObjCommandComplete _ANSI_ARGS_((Tcl_Obj * cmdPtr)); -/* 63 */ -EXTERN int TclObjInterpProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int objc, - Tcl_Obj *CONST objv[])); -/* 64 */ -EXTERN int TclObjInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 65 */ -EXTERN int TclObjInvokeGlobal _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 66 */ -EXTERN int TclOpenFileChannelDeleteProc _ANSI_ARGS_(( - TclOpenFileChannelProc_ * proc)); -/* 67 */ -EXTERN int TclOpenFileChannelInsertProc _ANSI_ARGS_(( - TclOpenFileChannelProc_ * proc)); -/* Slot 68 is reserved */ -/* 69 */ -EXTERN char * TclpAlloc _ANSI_ARGS_((unsigned int size)); -/* Slot 70 is reserved */ -/* Slot 71 is reserved */ -/* Slot 72 is reserved */ -/* Slot 73 is reserved */ -/* 74 */ -EXTERN void TclpFree _ANSI_ARGS_((char * ptr)); -/* 75 */ -EXTERN unsigned long TclpGetClicks _ANSI_ARGS_((void)); -/* 76 */ -EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void)); -/* 77 */ -EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time * time)); -/* 78 */ -EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time)); -/* Slot 79 is reserved */ -/* Slot 80 is reserved */ -/* 81 */ -EXTERN char * TclpRealloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* Slot 82 is reserved */ -/* Slot 83 is reserved */ -/* Slot 84 is reserved */ -/* Slot 85 is reserved */ -/* Slot 86 is reserved */ -/* Slot 87 is reserved */ -/* 88 */ -EXTERN char * TclPrecTraceProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, CONST char * name1, - CONST char * name2, int flags)); -/* 89 */ -EXTERN int TclPreventAliasLoop _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Interp * cmdInterp, Tcl_Command cmd)); -/* Slot 90 is reserved */ -/* 91 */ -EXTERN void TclProcCleanupProc _ANSI_ARGS_((Proc * procPtr)); -/* 92 */ -EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp * interp, - Proc * procPtr, Tcl_Obj * bodyPtr, - Namespace * nsPtr, CONST char * description, - CONST char * procName)); -/* 93 */ -EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData)); -/* 94 */ -EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int argc, - CONST84 char ** argv)); -/* Slot 95 is reserved */ -/* 96 */ -EXTERN int TclRenameCommand _ANSI_ARGS_((Tcl_Interp * interp, - char * oldName, char * newName)); -/* 97 */ -EXTERN void TclResetShadowedCmdRefs _ANSI_ARGS_(( - Tcl_Interp * interp, Command * newCmdPtr)); -/* 98 */ -EXTERN int TclServiceIdle _ANSI_ARGS_((void)); -/* Slot 99 is reserved */ -/* Slot 100 is reserved */ -/* 101 */ -EXTERN char * TclSetPreInitScript _ANSI_ARGS_((char * string)); -/* 102 */ -EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp * interp)); -/* 103 */ -EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp * interp, - char * str, char * proto, int * portPtr)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 104 */ -EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, - int size)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 104 */ -EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, - int size)); -#endif /* __WIN32__ */ -/* Slot 105 is reserved */ -/* 106 */ -EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ * proc)); -/* 107 */ -EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ * proc)); -/* 108 */ -EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace * nsPtr)); -/* 109 */ -EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp * iPtr)); -/* Slot 110 is reserved */ -/* 111 */ -EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_ResolveCmdProc * cmdProc, - Tcl_ResolveVarProc * varProc, - Tcl_ResolveCompiledVarProc * compiledVarProc)); -/* 112 */ -EXTERN int Tcl_AppendExportList _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Namespace * nsPtr, - Tcl_Obj * objPtr)); -/* 113 */ -EXTERN Tcl_Namespace * Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, ClientData clientData, - Tcl_NamespaceDeleteProc * deleteProc)); -/* 114 */ -EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_(( - Tcl_Namespace * nsPtr)); -/* 115 */ -EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern, - int resetListFirst)); -/* 116 */ -EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 117 */ -EXTERN Tcl_Namespace * Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 118 */ -EXTERN int Tcl_GetInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_ResolverInfo * resInfo)); -/* 119 */ -EXTERN int Tcl_GetNamespaceResolvers _ANSI_ARGS_(( - Tcl_Namespace * namespacePtr, - Tcl_ResolverInfo * resInfo)); -/* 120 */ -EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 121 */ -EXTERN int Tcl_ForgetImport _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern)); -/* 122 */ -EXTERN Tcl_Command Tcl_GetCommandFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr)); -/* 123 */ -EXTERN void Tcl_GetCommandFullName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command, - Tcl_Obj * objPtr)); -/* 124 */ -EXTERN Tcl_Namespace * Tcl_GetCurrentNamespace _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 125 */ -EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 126 */ -EXTERN void Tcl_GetVariableFullName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Var variable, - Tcl_Obj * objPtr)); -/* 127 */ -EXTERN int Tcl_Import _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern, - int allowOverwrite)); -/* 128 */ -EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp* interp)); -/* 129 */ -EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp* interp, - Tcl_CallFrame * framePtr, - Tcl_Namespace * nsPtr, int isProcCallFrame)); -/* 130 */ -EXTERN int Tcl_RemoveInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name)); -/* 131 */ -EXTERN void Tcl_SetNamespaceResolvers _ANSI_ARGS_(( - Tcl_Namespace * namespacePtr, - Tcl_ResolveCmdProc * cmdProc, - Tcl_ResolveVarProc * varProc, - Tcl_ResolveCompiledVarProc * compiledVarProc)); -/* 132 */ -EXTERN int TclpHasSockets _ANSI_ARGS_((Tcl_Interp * interp)); -/* 133 */ -EXTERN struct tm * TclpGetDate _ANSI_ARGS_((TclpTime_t time, int useGMT)); -/* 134 */ -EXTERN size_t TclpStrftime _ANSI_ARGS_((char * s, size_t maxsize, - CONST char * format, CONST struct tm * t, - int useGMT)); -/* 135 */ -EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void)); -/* Slot 136 is reserved */ -/* Slot 137 is reserved */ -/* 138 */ -EXTERN CONST84_RETURN char * TclGetEnv _ANSI_ARGS_((CONST char * name, - Tcl_DString * valuePtr)); -/* Slot 139 is reserved */ -/* 140 */ -EXTERN int TclLooksLikeInt _ANSI_ARGS_((CONST char * bytes, - int length)); -/* 141 */ -EXTERN CONST84_RETURN char * TclpGetCwd _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * cwdPtr)); -/* 142 */ -EXTERN int TclSetByteCodeFromAny _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - CompileHookProc * hookProc, - ClientData clientData)); -/* 143 */ -EXTERN int TclAddLiteralObj _ANSI_ARGS_(( - struct CompileEnv * envPtr, Tcl_Obj * objPtr, - LiteralEntry ** litPtrPtr)); -/* 144 */ -EXTERN void TclHideLiteral _ANSI_ARGS_((Tcl_Interp * interp, - struct CompileEnv * envPtr, int index)); -/* 145 */ -EXTERN struct AuxDataType * TclGetAuxDataType _ANSI_ARGS_((char * typeName)); -/* 146 */ -EXTERN TclHandle TclHandleCreate _ANSI_ARGS_((VOID * ptr)); -/* 147 */ -EXTERN void TclHandleFree _ANSI_ARGS_((TclHandle handle)); -/* 148 */ -EXTERN TclHandle TclHandlePreserve _ANSI_ARGS_((TclHandle handle)); -/* 149 */ -EXTERN void TclHandleRelease _ANSI_ARGS_((TclHandle handle)); -/* 150 */ -EXTERN int TclRegAbout _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp re)); -/* 151 */ -EXTERN void TclRegExpRangeUniChar _ANSI_ARGS_((Tcl_RegExp re, - int index, int * startPtr, int * endPtr)); -/* 152 */ -EXTERN void TclSetLibraryPath _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 153 */ -EXTERN Tcl_Obj * TclGetLibraryPath _ANSI_ARGS_((void)); -/* Slot 154 is reserved */ -/* Slot 155 is reserved */ -/* 156 */ -EXTERN void TclRegError _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * msg, int status)); -/* 157 */ -EXTERN Var * TclVarTraceExists _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 158 */ -EXTERN void TclSetStartupScriptFileName _ANSI_ARGS_(( - CONST char * filename)); -/* 159 */ -EXTERN CONST84_RETURN char * TclGetStartupScriptFileName _ANSI_ARGS_((void)); -/* Slot 160 is reserved */ -/* 161 */ -EXTERN int TclChannelTransform _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); -/* 162 */ -EXTERN void TclChannelEventScriptInvoker _ANSI_ARGS_(( - ClientData clientData, int flags)); -/* 163 */ -EXTERN void * TclGetInstructionTable _ANSI_ARGS_((void)); -/* 164 */ -EXTERN void TclExpandCodeArray _ANSI_ARGS_((void * envPtr)); -/* 165 */ -EXTERN void TclpSetInitialEncodings _ANSI_ARGS_((void)); -/* 166 */ -EXTERN int TclListObjSetElement _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - int index, Tcl_Obj * valuePtr)); -/* 167 */ -EXTERN void TclSetStartupScriptPath _ANSI_ARGS_(( - Tcl_Obj * pathPtr)); -/* 168 */ -EXTERN Tcl_Obj * TclGetStartupScriptPath _ANSI_ARGS_((void)); -/* 169 */ -EXTERN int TclpUtfNcmp2 _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 170 */ -EXTERN int TclCheckInterpTraces _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * command, - int numChars, Command * cmdPtr, int result, - int traceFlags, int objc, - Tcl_Obj *CONST objv[])); -/* 171 */ -EXTERN int TclCheckExecutionTraces _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * command, - int numChars, Command * cmdPtr, int result, - int traceFlags, int objc, - Tcl_Obj *CONST objv[])); -/* 172 */ -EXTERN int TclInThreadExit _ANSI_ARGS_((void)); -/* 173 */ -EXTERN int TclUniCharMatch _ANSI_ARGS_(( - CONST Tcl_UniChar * string, int strLen, - CONST Tcl_UniChar * pattern, int ptnLen, - int nocase)); -/* Slot 174 is reserved */ -/* Slot 175 is reserved */ -/* Slot 176 is reserved */ -/* Slot 177 is reserved */ -/* Slot 178 is reserved */ -/* Slot 179 is reserved */ -/* Slot 180 is reserved */ -/* Slot 181 is reserved */ -/* 182 */ -EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((CONST time_t * clock)); -/* 183 */ -EXTERN struct tm * TclpGmtime _ANSI_ARGS_((CONST time_t * clock)); - -typedef struct TclIntStubs { - int magic; - struct TclIntStubHooks *hooks; - - void *reserved0; - int (*tclAccessDeleteProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 1 */ - int (*tclAccessInsertProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 2 */ - void (*tclAllocateFreeObjects) _ANSI_ARGS_((void)); /* 3 */ - void *reserved4; -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved5; -#endif /* MAC_TCL */ - void (*tclCleanupCommand) _ANSI_ARGS_((Command * cmdPtr)); /* 6 */ - int (*tclCopyAndCollapse) _ANSI_ARGS_((int count, CONST char * src, char * dst)); /* 7 */ - int (*tclCopyChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel inChan, Tcl_Channel outChan, int toRead, Tcl_Obj * cmdPtr)); /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved9; -#endif /* MAC_TCL */ - int (*tclCreateProc) _ANSI_ARGS_((Tcl_Interp * interp, Namespace * nsPtr, CONST char * procName, Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, Proc ** procPtrPtr)); /* 10 */ - void (*tclDeleteCompiledLocalVars) _ANSI_ARGS_((Interp * iPtr, CallFrame * framePtr)); /* 11 */ - void (*tclDeleteVars) _ANSI_ARGS_((Interp * iPtr, Tcl_HashTable * tablePtr)); /* 12 */ - int (*tclDoGlob) _ANSI_ARGS_((Tcl_Interp * interp, char * separators, Tcl_DString * headPtr, char * tail, Tcl_GlobTypeData * types)); /* 13 */ - void (*tclDumpMemoryInfo) _ANSI_ARGS_((FILE * outFile)); /* 14 */ - void *reserved15; - void (*tclExprFloatError) _ANSI_ARGS_((Tcl_Interp * interp, double value)); /* 16 */ - void *reserved17; - void *reserved18; - void *reserved19; - void *reserved20; - void *reserved21; - int (*tclFindElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int listLength, CONST char ** elementPtr, CONST char ** nextPtr, int * sizePtr, int * bracePtr)); /* 22 */ - Proc * (*tclFindProc) _ANSI_ARGS_((Interp * iPtr, CONST char * procName)); /* 23 */ - int (*tclFormatInt) _ANSI_ARGS_((char * buffer, long n)); /* 24 */ - void (*tclFreePackageInfo) _ANSI_ARGS_((Interp * iPtr)); /* 25 */ - void *reserved26; - int (*tclGetDate) _ANSI_ARGS_((char * p, unsigned long now, long zone, unsigned long * timePtr)); /* 27 */ - Tcl_Channel (*tclpGetDefaultStdChannel) _ANSI_ARGS_((int type)); /* 28 */ - void *reserved29; - void *reserved30; - char * (*tclGetExtension) _ANSI_ARGS_((char * name)); /* 31 */ - int (*tclGetFrame) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CallFrame ** framePtrPtr)); /* 32 */ - TclCmdProcType (*tclGetInterpProc) _ANSI_ARGS_((void)); /* 33 */ - int (*tclGetIntForIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int endValue, int * indexPtr)); /* 34 */ - void *reserved35; - int (*tclGetLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * longPtr)); /* 36 */ - int (*tclGetLoadedPackages) _ANSI_ARGS_((Tcl_Interp * interp, char * targetName)); /* 37 */ - int (*tclGetNamespaceForQualName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * qualName, Namespace * cxtNsPtr, int flags, Namespace ** nsPtrPtr, Namespace ** altNsPtrPtr, Namespace ** actualCxtPtrPtr, CONST char ** simpleNamePtr)); /* 38 */ - TclObjCmdProcType (*tclGetObjInterpProc) _ANSI_ARGS_((void)); /* 39 */ - int (*tclGetOpenMode) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * seekFlagPtr)); /* 40 */ - Tcl_Command (*tclGetOriginalCommand) _ANSI_ARGS_((Tcl_Command command)); /* 41 */ - char * (*tclpGetUserHome) _ANSI_ARGS_((CONST char * name, Tcl_DString * bufferPtr)); /* 42 */ - int (*tclGlobalInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 43 */ - int (*tclGuessPackageName) _ANSI_ARGS_((CONST char * fileName, Tcl_DString * bufPtr)); /* 44 */ - int (*tclHideUnsafeCommands) _ANSI_ARGS_((Tcl_Interp * interp)); /* 45 */ - int (*tclInExit) _ANSI_ARGS_((void)); /* 46 */ - void *reserved47; - void *reserved48; - Tcl_Obj * (*tclIncrVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, long incrAmount, int part1NotParsed)); /* 49 */ - void (*tclInitCompiledLocals) _ANSI_ARGS_((Tcl_Interp * interp, CallFrame * framePtr, Namespace * nsPtr)); /* 50 */ - int (*tclInterpInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 51 */ - int (*tclInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 52 */ - int (*tclInvokeObjectCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 53 */ - int (*tclInvokeStringCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 54 */ - Proc * (*tclIsProc) _ANSI_ARGS_((Command * cmdPtr)); /* 55 */ - void *reserved56; - void *reserved57; - Var * (*tclLookupVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, CONST char * msg, int createPart1, int createPart2, Var ** arrayPtrPtr)); /* 58 */ - void *reserved59; - int (*tclNeedSpace) _ANSI_ARGS_((CONST char * start, CONST char * end)); /* 60 */ - Tcl_Obj * (*tclNewProcBodyObj) _ANSI_ARGS_((Proc * procPtr)); /* 61 */ - int (*tclObjCommandComplete) _ANSI_ARGS_((Tcl_Obj * cmdPtr)); /* 62 */ - int (*tclObjInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 63 */ - int (*tclObjInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 64 */ - int (*tclObjInvokeGlobal) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 65 */ - int (*tclOpenFileChannelDeleteProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 66 */ - int (*tclOpenFileChannelInsertProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 67 */ - void *reserved68; - char * (*tclpAlloc) _ANSI_ARGS_((unsigned int size)); /* 69 */ - void *reserved70; - void *reserved71; - void *reserved72; - void *reserved73; - void (*tclpFree) _ANSI_ARGS_((char * ptr)); /* 74 */ - unsigned long (*tclpGetClicks) _ANSI_ARGS_((void)); /* 75 */ - unsigned long (*tclpGetSeconds) _ANSI_ARGS_((void)); /* 76 */ - void (*tclpGetTime) _ANSI_ARGS_((Tcl_Time * time)); /* 77 */ - int (*tclpGetTimeZone) _ANSI_ARGS_((unsigned long time)); /* 78 */ - void *reserved79; - void *reserved80; - char * (*tclpRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 81 */ - void *reserved82; - void *reserved83; - void *reserved84; - void *reserved85; - void *reserved86; - void *reserved87; - char * (*tclPrecTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, CONST char * name1, CONST char * name2, int flags)); /* 88 */ - int (*tclPreventAliasLoop) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Interp * cmdInterp, Tcl_Command cmd)); /* 89 */ - void *reserved90; - void (*tclProcCleanupProc) _ANSI_ARGS_((Proc * procPtr)); /* 91 */ - int (*tclProcCompileProc) _ANSI_ARGS_((Tcl_Interp * interp, Proc * procPtr, Tcl_Obj * bodyPtr, Namespace * nsPtr, CONST char * description, CONST char * procName)); /* 92 */ - void (*tclProcDeleteProc) _ANSI_ARGS_((ClientData clientData)); /* 93 */ - int (*tclProcInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 94 */ - void *reserved95; - int (*tclRenameCommand) _ANSI_ARGS_((Tcl_Interp * interp, char * oldName, char * newName)); /* 96 */ - void (*tclResetShadowedCmdRefs) _ANSI_ARGS_((Tcl_Interp * interp, Command * newCmdPtr)); /* 97 */ - int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ - void *reserved99; - void *reserved100; - char * (*tclSetPreInitScript) _ANSI_ARGS_((char * string)); /* 101 */ - void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp * interp)); /* 102 */ - int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp * interp, char * str, char * proto, int * portPtr)); /* 103 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved104; -#endif /* MAC_TCL */ - void *reserved105; - int (*tclStatDeleteProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 106 */ - int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 107 */ - void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace * nsPtr)); /* 108 */ - int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp * iPtr)); /* 109 */ - void *reserved110; - void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 111 */ - int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, Tcl_Obj * objPtr)); /* 112 */ - Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, ClientData clientData, Tcl_NamespaceDeleteProc * deleteProc)); /* 113 */ - void (*tcl_DeleteNamespace) _ANSI_ARGS_((Tcl_Namespace * nsPtr)); /* 114 */ - int (*tcl_Export) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int resetListFirst)); /* 115 */ - Tcl_Command (*tcl_FindCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 116 */ - Tcl_Namespace * (*tcl_FindNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 117 */ - int (*tcl_GetInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolverInfo * resInfo)); /* 118 */ - int (*tcl_GetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolverInfo * resInfo)); /* 119 */ - Tcl_Var (*tcl_FindNamespaceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 120 */ - int (*tcl_ForgetImport) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern)); /* 121 */ - Tcl_Command (*tcl_GetCommandFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 122 */ - void (*tcl_GetCommandFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command, Tcl_Obj * objPtr)); /* 123 */ - Tcl_Namespace * (*tcl_GetCurrentNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 124 */ - Tcl_Namespace * (*tcl_GetGlobalNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 125 */ - void (*tcl_GetVariableFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Var variable, Tcl_Obj * objPtr)); /* 126 */ - int (*tcl_Import) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int allowOverwrite)); /* 127 */ - void (*tcl_PopCallFrame) _ANSI_ARGS_((Tcl_Interp* interp)); /* 128 */ - int (*tcl_PushCallFrame) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_CallFrame * framePtr, Tcl_Namespace * nsPtr, int isProcCallFrame)); /* 129 */ - int (*tcl_RemoveInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 130 */ - void (*tcl_SetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 131 */ - int (*tclpHasSockets) _ANSI_ARGS_((Tcl_Interp * interp)); /* 132 */ - struct tm * (*tclpGetDate) _ANSI_ARGS_((TclpTime_t time, int useGMT)); /* 133 */ - size_t (*tclpStrftime) _ANSI_ARGS_((char * s, size_t maxsize, CONST char * format, CONST struct tm * t, int useGMT)); /* 134 */ - int (*tclpCheckStackSpace) _ANSI_ARGS_((void)); /* 135 */ - void *reserved136; - void *reserved137; - CONST84_RETURN char * (*tclGetEnv) _ANSI_ARGS_((CONST char * name, Tcl_DString * valuePtr)); /* 138 */ - void *reserved139; - int (*tclLooksLikeInt) _ANSI_ARGS_((CONST char * bytes, int length)); /* 140 */ - CONST84_RETURN char * (*tclpGetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 141 */ - int (*tclSetByteCodeFromAny) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CompileHookProc * hookProc, ClientData clientData)); /* 142 */ - int (*tclAddLiteralObj) _ANSI_ARGS_((struct CompileEnv * envPtr, Tcl_Obj * objPtr, LiteralEntry ** litPtrPtr)); /* 143 */ - void (*tclHideLiteral) _ANSI_ARGS_((Tcl_Interp * interp, struct CompileEnv * envPtr, int index)); /* 144 */ - struct AuxDataType * (*tclGetAuxDataType) _ANSI_ARGS_((char * typeName)); /* 145 */ - TclHandle (*tclHandleCreate) _ANSI_ARGS_((VOID * ptr)); /* 146 */ - void (*tclHandleFree) _ANSI_ARGS_((TclHandle handle)); /* 147 */ - TclHandle (*tclHandlePreserve) _ANSI_ARGS_((TclHandle handle)); /* 148 */ - void (*tclHandleRelease) _ANSI_ARGS_((TclHandle handle)); /* 149 */ - int (*tclRegAbout) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp re)); /* 150 */ - void (*tclRegExpRangeUniChar) _ANSI_ARGS_((Tcl_RegExp re, int index, int * startPtr, int * endPtr)); /* 151 */ - void (*tclSetLibraryPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 152 */ - Tcl_Obj * (*tclGetLibraryPath) _ANSI_ARGS_((void)); /* 153 */ - void *reserved154; - void *reserved155; - void (*tclRegError) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * msg, int status)); /* 156 */ - Var * (*tclVarTraceExists) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 157 */ - void (*tclSetStartupScriptFileName) _ANSI_ARGS_((CONST char * filename)); /* 158 */ - CONST84_RETURN char * (*tclGetStartupScriptFileName) _ANSI_ARGS_((void)); /* 159 */ - void *reserved160; - int (*tclChannelTransform) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); /* 161 */ - void (*tclChannelEventScriptInvoker) _ANSI_ARGS_((ClientData clientData, int flags)); /* 162 */ - void * (*tclGetInstructionTable) _ANSI_ARGS_((void)); /* 163 */ - void (*tclExpandCodeArray) _ANSI_ARGS_((void * envPtr)); /* 164 */ - void (*tclpSetInitialEncodings) _ANSI_ARGS_((void)); /* 165 */ - int (*tclListObjSetElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj * valuePtr)); /* 166 */ - void (*tclSetStartupScriptPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 167 */ - Tcl_Obj * (*tclGetStartupScriptPath) _ANSI_ARGS_((void)); /* 168 */ - int (*tclpUtfNcmp2) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 169 */ - int (*tclCheckInterpTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 170 */ - int (*tclCheckExecutionTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 171 */ - int (*tclInThreadExit) _ANSI_ARGS_((void)); /* 172 */ - int (*tclUniCharMatch) _ANSI_ARGS_((CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); /* 173 */ - void *reserved174; - void *reserved175; - void *reserved176; - void *reserved177; - void *reserved178; - void *reserved179; - void *reserved180; - void *reserved181; - struct tm * (*tclpLocaltime) _ANSI_ARGS_((CONST time_t * clock)); /* 182 */ - struct tm * (*tclpGmtime) _ANSI_ARGS_((CONST time_t * clock)); /* 183 */ -} TclIntStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclIntStubs *tclIntStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -/* Slot 0 is reserved */ -#ifndef TclAccessDeleteProc -#define TclAccessDeleteProc \ - (tclIntStubsPtr->tclAccessDeleteProc) /* 1 */ -#endif -#ifndef TclAccessInsertProc -#define TclAccessInsertProc \ - (tclIntStubsPtr->tclAccessInsertProc) /* 2 */ -#endif -#ifndef TclAllocateFreeObjects -#define TclAllocateFreeObjects \ - (tclIntStubsPtr->tclAllocateFreeObjects) /* 3 */ -#endif -/* Slot 4 is reserved */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclCleanupChildren -#define TclCleanupChildren \ - (tclIntStubsPtr->tclCleanupChildren) /* 5 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclCleanupChildren -#define TclCleanupChildren \ - (tclIntStubsPtr->tclCleanupChildren) /* 5 */ -#endif -#endif /* __WIN32__ */ -#ifndef TclCleanupCommand -#define TclCleanupCommand \ - (tclIntStubsPtr->tclCleanupCommand) /* 6 */ -#endif -#ifndef TclCopyAndCollapse -#define TclCopyAndCollapse \ - (tclIntStubsPtr->tclCopyAndCollapse) /* 7 */ -#endif -#ifndef TclCopyChannel -#define TclCopyChannel \ - (tclIntStubsPtr->tclCopyChannel) /* 8 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclCreatePipeline -#define TclCreatePipeline \ - (tclIntStubsPtr->tclCreatePipeline) /* 9 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclCreatePipeline -#define TclCreatePipeline \ - (tclIntStubsPtr->tclCreatePipeline) /* 9 */ -#endif -#endif /* __WIN32__ */ -#ifndef TclCreateProc -#define TclCreateProc \ - (tclIntStubsPtr->tclCreateProc) /* 10 */ -#endif -#ifndef TclDeleteCompiledLocalVars -#define TclDeleteCompiledLocalVars \ - (tclIntStubsPtr->tclDeleteCompiledLocalVars) /* 11 */ -#endif -#ifndef TclDeleteVars -#define TclDeleteVars \ - (tclIntStubsPtr->tclDeleteVars) /* 12 */ -#endif -#ifndef TclDoGlob -#define TclDoGlob \ - (tclIntStubsPtr->tclDoGlob) /* 13 */ -#endif -#ifndef TclDumpMemoryInfo -#define TclDumpMemoryInfo \ - (tclIntStubsPtr->tclDumpMemoryInfo) /* 14 */ -#endif -/* Slot 15 is reserved */ -#ifndef TclExprFloatError -#define TclExprFloatError \ - (tclIntStubsPtr->tclExprFloatError) /* 16 */ -#endif -/* Slot 17 is reserved */ -/* Slot 18 is reserved */ -/* Slot 19 is reserved */ -/* Slot 20 is reserved */ -/* Slot 21 is reserved */ -#ifndef TclFindElement -#define TclFindElement \ - (tclIntStubsPtr->tclFindElement) /* 22 */ -#endif -#ifndef TclFindProc -#define TclFindProc \ - (tclIntStubsPtr->tclFindProc) /* 23 */ -#endif -#ifndef TclFormatInt -#define TclFormatInt \ - (tclIntStubsPtr->tclFormatInt) /* 24 */ -#endif -#ifndef TclFreePackageInfo -#define TclFreePackageInfo \ - (tclIntStubsPtr->tclFreePackageInfo) /* 25 */ -#endif -/* Slot 26 is reserved */ -#ifndef TclGetDate -#define TclGetDate \ - (tclIntStubsPtr->tclGetDate) /* 27 */ -#endif -#ifndef TclpGetDefaultStdChannel -#define TclpGetDefaultStdChannel \ - (tclIntStubsPtr->tclpGetDefaultStdChannel) /* 28 */ -#endif -/* Slot 29 is reserved */ -/* Slot 30 is reserved */ -#ifndef TclGetExtension -#define TclGetExtension \ - (tclIntStubsPtr->tclGetExtension) /* 31 */ -#endif -#ifndef TclGetFrame -#define TclGetFrame \ - (tclIntStubsPtr->tclGetFrame) /* 32 */ -#endif -#ifndef TclGetInterpProc -#define TclGetInterpProc \ - (tclIntStubsPtr->tclGetInterpProc) /* 33 */ -#endif -#ifndef TclGetIntForIndex -#define TclGetIntForIndex \ - (tclIntStubsPtr->tclGetIntForIndex) /* 34 */ -#endif -/* Slot 35 is reserved */ -#ifndef TclGetLong -#define TclGetLong \ - (tclIntStubsPtr->tclGetLong) /* 36 */ -#endif -#ifndef TclGetLoadedPackages -#define TclGetLoadedPackages \ - (tclIntStubsPtr->tclGetLoadedPackages) /* 37 */ -#endif -#ifndef TclGetNamespaceForQualName -#define TclGetNamespaceForQualName \ - (tclIntStubsPtr->tclGetNamespaceForQualName) /* 38 */ -#endif -#ifndef TclGetObjInterpProc -#define TclGetObjInterpProc \ - (tclIntStubsPtr->tclGetObjInterpProc) /* 39 */ -#endif -#ifndef TclGetOpenMode -#define TclGetOpenMode \ - (tclIntStubsPtr->tclGetOpenMode) /* 40 */ -#endif -#ifndef TclGetOriginalCommand -#define TclGetOriginalCommand \ - (tclIntStubsPtr->tclGetOriginalCommand) /* 41 */ -#endif -#ifndef TclpGetUserHome -#define TclpGetUserHome \ - (tclIntStubsPtr->tclpGetUserHome) /* 42 */ -#endif -#ifndef TclGlobalInvoke -#define TclGlobalInvoke \ - (tclIntStubsPtr->tclGlobalInvoke) /* 43 */ -#endif -#ifndef TclGuessPackageName -#define TclGuessPackageName \ - (tclIntStubsPtr->tclGuessPackageName) /* 44 */ -#endif -#ifndef TclHideUnsafeCommands -#define TclHideUnsafeCommands \ - (tclIntStubsPtr->tclHideUnsafeCommands) /* 45 */ -#endif -#ifndef TclInExit -#define TclInExit \ - (tclIntStubsPtr->tclInExit) /* 46 */ -#endif -/* Slot 47 is reserved */ -/* Slot 48 is reserved */ -#ifndef TclIncrVar2 -#define TclIncrVar2 \ - (tclIntStubsPtr->tclIncrVar2) /* 49 */ -#endif -#ifndef TclInitCompiledLocals -#define TclInitCompiledLocals \ - (tclIntStubsPtr->tclInitCompiledLocals) /* 50 */ -#endif -#ifndef TclInterpInit -#define TclInterpInit \ - (tclIntStubsPtr->tclInterpInit) /* 51 */ -#endif -#ifndef TclInvoke -#define TclInvoke \ - (tclIntStubsPtr->tclInvoke) /* 52 */ -#endif -#ifndef TclInvokeObjectCommand -#define TclInvokeObjectCommand \ - (tclIntStubsPtr->tclInvokeObjectCommand) /* 53 */ -#endif -#ifndef TclInvokeStringCommand -#define TclInvokeStringCommand \ - (tclIntStubsPtr->tclInvokeStringCommand) /* 54 */ -#endif -#ifndef TclIsProc -#define TclIsProc \ - (tclIntStubsPtr->tclIsProc) /* 55 */ -#endif -/* Slot 56 is reserved */ -/* Slot 57 is reserved */ -#ifndef TclLookupVar -#define TclLookupVar \ - (tclIntStubsPtr->tclLookupVar) /* 58 */ -#endif -/* Slot 59 is reserved */ -#ifndef TclNeedSpace -#define TclNeedSpace \ - (tclIntStubsPtr->tclNeedSpace) /* 60 */ -#endif -#ifndef TclNewProcBodyObj -#define TclNewProcBodyObj \ - (tclIntStubsPtr->tclNewProcBodyObj) /* 61 */ -#endif -#ifndef TclObjCommandComplete -#define TclObjCommandComplete \ - (tclIntStubsPtr->tclObjCommandComplete) /* 62 */ -#endif -#ifndef TclObjInterpProc -#define TclObjInterpProc \ - (tclIntStubsPtr->tclObjInterpProc) /* 63 */ -#endif -#ifndef TclObjInvoke -#define TclObjInvoke \ - (tclIntStubsPtr->tclObjInvoke) /* 64 */ -#endif -#ifndef TclObjInvokeGlobal -#define TclObjInvokeGlobal \ - (tclIntStubsPtr->tclObjInvokeGlobal) /* 65 */ -#endif -#ifndef TclOpenFileChannelDeleteProc -#define TclOpenFileChannelDeleteProc \ - (tclIntStubsPtr->tclOpenFileChannelDeleteProc) /* 66 */ -#endif -#ifndef TclOpenFileChannelInsertProc -#define TclOpenFileChannelInsertProc \ - (tclIntStubsPtr->tclOpenFileChannelInsertProc) /* 67 */ -#endif -/* Slot 68 is reserved */ -#ifndef TclpAlloc -#define TclpAlloc \ - (tclIntStubsPtr->tclpAlloc) /* 69 */ -#endif -/* Slot 70 is reserved */ -/* Slot 71 is reserved */ -/* Slot 72 is reserved */ -/* Slot 73 is reserved */ -#ifndef TclpFree -#define TclpFree \ - (tclIntStubsPtr->tclpFree) /* 74 */ -#endif -#ifndef TclpGetClicks -#define TclpGetClicks \ - (tclIntStubsPtr->tclpGetClicks) /* 75 */ -#endif -#ifndef TclpGetSeconds -#define TclpGetSeconds \ - (tclIntStubsPtr->tclpGetSeconds) /* 76 */ -#endif -#ifndef TclpGetTime -#define TclpGetTime \ - (tclIntStubsPtr->tclpGetTime) /* 77 */ -#endif -#ifndef TclpGetTimeZone -#define TclpGetTimeZone \ - (tclIntStubsPtr->tclpGetTimeZone) /* 78 */ -#endif -/* Slot 79 is reserved */ -/* Slot 80 is reserved */ -#ifndef TclpRealloc -#define TclpRealloc \ - (tclIntStubsPtr->tclpRealloc) /* 81 */ -#endif -/* Slot 82 is reserved */ -/* Slot 83 is reserved */ -/* Slot 84 is reserved */ -/* Slot 85 is reserved */ -/* Slot 86 is reserved */ -/* Slot 87 is reserved */ -#ifndef TclPrecTraceProc -#define TclPrecTraceProc \ - (tclIntStubsPtr->tclPrecTraceProc) /* 88 */ -#endif -#ifndef TclPreventAliasLoop -#define TclPreventAliasLoop \ - (tclIntStubsPtr->tclPreventAliasLoop) /* 89 */ -#endif -/* Slot 90 is reserved */ -#ifndef TclProcCleanupProc -#define TclProcCleanupProc \ - (tclIntStubsPtr->tclProcCleanupProc) /* 91 */ -#endif -#ifndef TclProcCompileProc -#define TclProcCompileProc \ - (tclIntStubsPtr->tclProcCompileProc) /* 92 */ -#endif -#ifndef TclProcDeleteProc -#define TclProcDeleteProc \ - (tclIntStubsPtr->tclProcDeleteProc) /* 93 */ -#endif -#ifndef TclProcInterpProc -#define TclProcInterpProc \ - (tclIntStubsPtr->tclProcInterpProc) /* 94 */ -#endif -/* Slot 95 is reserved */ -#ifndef TclRenameCommand -#define TclRenameCommand \ - (tclIntStubsPtr->tclRenameCommand) /* 96 */ -#endif -#ifndef TclResetShadowedCmdRefs -#define TclResetShadowedCmdRefs \ - (tclIntStubsPtr->tclResetShadowedCmdRefs) /* 97 */ -#endif -#ifndef TclServiceIdle -#define TclServiceIdle \ - (tclIntStubsPtr->tclServiceIdle) /* 98 */ -#endif -/* Slot 99 is reserved */ -/* Slot 100 is reserved */ -#ifndef TclSetPreInitScript -#define TclSetPreInitScript \ - (tclIntStubsPtr->tclSetPreInitScript) /* 101 */ -#endif -#ifndef TclSetupEnv -#define TclSetupEnv \ - (tclIntStubsPtr->tclSetupEnv) /* 102 */ -#endif -#ifndef TclSockGetPort -#define TclSockGetPort \ - (tclIntStubsPtr->tclSockGetPort) /* 103 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclSockMinimumBuffers -#define TclSockMinimumBuffers \ - (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclSockMinimumBuffers -#define TclSockMinimumBuffers \ - (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ -#endif -#endif /* __WIN32__ */ -/* Slot 105 is reserved */ -#ifndef TclStatDeleteProc -#define TclStatDeleteProc \ - (tclIntStubsPtr->tclStatDeleteProc) /* 106 */ -#endif -#ifndef TclStatInsertProc -#define TclStatInsertProc \ - (tclIntStubsPtr->tclStatInsertProc) /* 107 */ -#endif -#ifndef TclTeardownNamespace -#define TclTeardownNamespace \ - (tclIntStubsPtr->tclTeardownNamespace) /* 108 */ -#endif -#ifndef TclUpdateReturnInfo -#define TclUpdateReturnInfo \ - (tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */ -#endif -/* Slot 110 is reserved */ -#ifndef Tcl_AddInterpResolvers -#define Tcl_AddInterpResolvers \ - (tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */ -#endif -#ifndef Tcl_AppendExportList -#define Tcl_AppendExportList \ - (tclIntStubsPtr->tcl_AppendExportList) /* 112 */ -#endif -#ifndef Tcl_CreateNamespace -#define Tcl_CreateNamespace \ - (tclIntStubsPtr->tcl_CreateNamespace) /* 113 */ -#endif -#ifndef Tcl_DeleteNamespace -#define Tcl_DeleteNamespace \ - (tclIntStubsPtr->tcl_DeleteNamespace) /* 114 */ -#endif -#ifndef Tcl_Export -#define Tcl_Export \ - (tclIntStubsPtr->tcl_Export) /* 115 */ -#endif -#ifndef Tcl_FindCommand -#define Tcl_FindCommand \ - (tclIntStubsPtr->tcl_FindCommand) /* 116 */ -#endif -#ifndef Tcl_FindNamespace -#define Tcl_FindNamespace \ - (tclIntStubsPtr->tcl_FindNamespace) /* 117 */ -#endif -#ifndef Tcl_GetInterpResolvers -#define Tcl_GetInterpResolvers \ - (tclIntStubsPtr->tcl_GetInterpResolvers) /* 118 */ -#endif -#ifndef Tcl_GetNamespaceResolvers -#define Tcl_GetNamespaceResolvers \ - (tclIntStubsPtr->tcl_GetNamespaceResolvers) /* 119 */ -#endif -#ifndef Tcl_FindNamespaceVar -#define Tcl_FindNamespaceVar \ - (tclIntStubsPtr->tcl_FindNamespaceVar) /* 120 */ -#endif -#ifndef Tcl_ForgetImport -#define Tcl_ForgetImport \ - (tclIntStubsPtr->tcl_ForgetImport) /* 121 */ -#endif -#ifndef Tcl_GetCommandFromObj -#define Tcl_GetCommandFromObj \ - (tclIntStubsPtr->tcl_GetCommandFromObj) /* 122 */ -#endif -#ifndef Tcl_GetCommandFullName -#define Tcl_GetCommandFullName \ - (tclIntStubsPtr->tcl_GetCommandFullName) /* 123 */ -#endif -#ifndef Tcl_GetCurrentNamespace -#define Tcl_GetCurrentNamespace \ - (tclIntStubsPtr->tcl_GetCurrentNamespace) /* 124 */ -#endif -#ifndef Tcl_GetGlobalNamespace -#define Tcl_GetGlobalNamespace \ - (tclIntStubsPtr->tcl_GetGlobalNamespace) /* 125 */ -#endif -#ifndef Tcl_GetVariableFullName -#define Tcl_GetVariableFullName \ - (tclIntStubsPtr->tcl_GetVariableFullName) /* 126 */ -#endif -#ifndef Tcl_Import -#define Tcl_Import \ - (tclIntStubsPtr->tcl_Import) /* 127 */ -#endif -#ifndef Tcl_PopCallFrame -#define Tcl_PopCallFrame \ - (tclIntStubsPtr->tcl_PopCallFrame) /* 128 */ -#endif -#ifndef Tcl_PushCallFrame -#define Tcl_PushCallFrame \ - (tclIntStubsPtr->tcl_PushCallFrame) /* 129 */ -#endif -#ifndef Tcl_RemoveInterpResolvers -#define Tcl_RemoveInterpResolvers \ - (tclIntStubsPtr->tcl_RemoveInterpResolvers) /* 130 */ -#endif -#ifndef Tcl_SetNamespaceResolvers -#define Tcl_SetNamespaceResolvers \ - (tclIntStubsPtr->tcl_SetNamespaceResolvers) /* 131 */ -#endif -#ifndef TclpHasSockets -#define TclpHasSockets \ - (tclIntStubsPtr->tclpHasSockets) /* 132 */ -#endif -#ifndef TclpGetDate -#define TclpGetDate \ - (tclIntStubsPtr->tclpGetDate) /* 133 */ -#endif -#ifndef TclpStrftime -#define TclpStrftime \ - (tclIntStubsPtr->tclpStrftime) /* 134 */ -#endif -#ifndef TclpCheckStackSpace -#define TclpCheckStackSpace \ - (tclIntStubsPtr->tclpCheckStackSpace) /* 135 */ -#endif -/* Slot 136 is reserved */ -/* Slot 137 is reserved */ -#ifndef TclGetEnv -#define TclGetEnv \ - (tclIntStubsPtr->tclGetEnv) /* 138 */ -#endif -/* Slot 139 is reserved */ -#ifndef TclLooksLikeInt -#define TclLooksLikeInt \ - (tclIntStubsPtr->tclLooksLikeInt) /* 140 */ -#endif -#ifndef TclpGetCwd -#define TclpGetCwd \ - (tclIntStubsPtr->tclpGetCwd) /* 141 */ -#endif -#ifndef TclSetByteCodeFromAny -#define TclSetByteCodeFromAny \ - (tclIntStubsPtr->tclSetByteCodeFromAny) /* 142 */ -#endif -#ifndef TclAddLiteralObj -#define TclAddLiteralObj \ - (tclIntStubsPtr->tclAddLiteralObj) /* 143 */ -#endif -#ifndef TclHideLiteral -#define TclHideLiteral \ - (tclIntStubsPtr->tclHideLiteral) /* 144 */ -#endif -#ifndef TclGetAuxDataType -#define TclGetAuxDataType \ - (tclIntStubsPtr->tclGetAuxDataType) /* 145 */ -#endif -#ifndef TclHandleCreate -#define TclHandleCreate \ - (tclIntStubsPtr->tclHandleCreate) /* 146 */ -#endif -#ifndef TclHandleFree -#define TclHandleFree \ - (tclIntStubsPtr->tclHandleFree) /* 147 */ -#endif -#ifndef TclHandlePreserve -#define TclHandlePreserve \ - (tclIntStubsPtr->tclHandlePreserve) /* 148 */ -#endif -#ifndef TclHandleRelease -#define TclHandleRelease \ - (tclIntStubsPtr->tclHandleRelease) /* 149 */ -#endif -#ifndef TclRegAbout -#define TclRegAbout \ - (tclIntStubsPtr->tclRegAbout) /* 150 */ -#endif -#ifndef TclRegExpRangeUniChar -#define TclRegExpRangeUniChar \ - (tclIntStubsPtr->tclRegExpRangeUniChar) /* 151 */ -#endif -#ifndef TclSetLibraryPath -#define TclSetLibraryPath \ - (tclIntStubsPtr->tclSetLibraryPath) /* 152 */ -#endif -#ifndef TclGetLibraryPath -#define TclGetLibraryPath \ - (tclIntStubsPtr->tclGetLibraryPath) /* 153 */ -#endif -/* Slot 154 is reserved */ -/* Slot 155 is reserved */ -#ifndef TclRegError -#define TclRegError \ - (tclIntStubsPtr->tclRegError) /* 156 */ -#endif -#ifndef TclVarTraceExists -#define TclVarTraceExists \ - (tclIntStubsPtr->tclVarTraceExists) /* 157 */ -#endif -#ifndef TclSetStartupScriptFileName -#define TclSetStartupScriptFileName \ - (tclIntStubsPtr->tclSetStartupScriptFileName) /* 158 */ -#endif -#ifndef TclGetStartupScriptFileName -#define TclGetStartupScriptFileName \ - (tclIntStubsPtr->tclGetStartupScriptFileName) /* 159 */ -#endif -/* Slot 160 is reserved */ -#ifndef TclChannelTransform -#define TclChannelTransform \ - (tclIntStubsPtr->tclChannelTransform) /* 161 */ -#endif -#ifndef TclChannelEventScriptInvoker -#define TclChannelEventScriptInvoker \ - (tclIntStubsPtr->tclChannelEventScriptInvoker) /* 162 */ -#endif -#ifndef TclGetInstructionTable -#define TclGetInstructionTable \ - (tclIntStubsPtr->tclGetInstructionTable) /* 163 */ -#endif -#ifndef TclExpandCodeArray -#define TclExpandCodeArray \ - (tclIntStubsPtr->tclExpandCodeArray) /* 164 */ -#endif -#ifndef TclpSetInitialEncodings -#define TclpSetInitialEncodings \ - (tclIntStubsPtr->tclpSetInitialEncodings) /* 165 */ -#endif -#ifndef TclListObjSetElement -#define TclListObjSetElement \ - (tclIntStubsPtr->tclListObjSetElement) /* 166 */ -#endif -#ifndef TclSetStartupScriptPath -#define TclSetStartupScriptPath \ - (tclIntStubsPtr->tclSetStartupScriptPath) /* 167 */ -#endif -#ifndef TclGetStartupScriptPath -#define TclGetStartupScriptPath \ - (tclIntStubsPtr->tclGetStartupScriptPath) /* 168 */ -#endif -#ifndef TclpUtfNcmp2 -#define TclpUtfNcmp2 \ - (tclIntStubsPtr->tclpUtfNcmp2) /* 169 */ -#endif -#ifndef TclCheckInterpTraces -#define TclCheckInterpTraces \ - (tclIntStubsPtr->tclCheckInterpTraces) /* 170 */ -#endif -#ifndef TclCheckExecutionTraces -#define TclCheckExecutionTraces \ - (tclIntStubsPtr->tclCheckExecutionTraces) /* 171 */ -#endif -#ifndef TclInThreadExit -#define TclInThreadExit \ - (tclIntStubsPtr->tclInThreadExit) /* 172 */ -#endif -#ifndef TclUniCharMatch -#define TclUniCharMatch \ - (tclIntStubsPtr->tclUniCharMatch) /* 173 */ -#endif -/* Slot 174 is reserved */ -/* Slot 175 is reserved */ -/* Slot 176 is reserved */ -/* Slot 177 is reserved */ -/* Slot 178 is reserved */ -/* Slot 179 is reserved */ -/* Slot 180 is reserved */ -/* Slot 181 is reserved */ -#ifndef TclpLocaltime -#define TclpLocaltime \ - (tclIntStubsPtr->tclpLocaltime) /* 182 */ -#endif -#ifndef TclpGmtime -#define TclpGmtime \ - (tclIntStubsPtr->tclpGmtime) /* 183 */ -#endif - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLINTDECLS */ +/* + * tclIntDecls.h -- + * + * This file contains the declarations for all unsupported + * functions that are exported by the Tcl library. These + * interfaces are not guaranteed to remain the same between + * versions. Use at your own risk. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.2 2004/05/17 14:26:49 kennykb Exp $ + */ + +#ifndef _TCLINTDECLS +#define _TCLINTDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tclInt.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +/* Slot 0 is reserved */ +/* 1 */ +EXTERN int TclAccessDeleteProc _ANSI_ARGS_(( + TclAccessProc_ * proc)); +/* 2 */ +EXTERN int TclAccessInsertProc _ANSI_ARGS_(( + TclAccessProc_ * proc)); +/* 3 */ +EXTERN void TclAllocateFreeObjects _ANSI_ARGS_((void)); +/* Slot 4 is reserved */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 5 */ +EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, + int numPids, Tcl_Pid * pidPtr, + Tcl_Channel errorChan)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 5 */ +EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, + int numPids, Tcl_Pid * pidPtr, + Tcl_Channel errorChan)); +#endif /* __WIN32__ */ +/* 6 */ +EXTERN void TclCleanupCommand _ANSI_ARGS_((Command * cmdPtr)); +/* 7 */ +EXTERN int TclCopyAndCollapse _ANSI_ARGS_((int count, + CONST char * src, char * dst)); +/* 8 */ +EXTERN int TclCopyChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel inChan, Tcl_Channel outChan, + int toRead, Tcl_Obj * cmdPtr)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 9 */ +EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, + TclFile * outPipePtr, TclFile * errFilePtr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 9 */ +EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, + TclFile * outPipePtr, TclFile * errFilePtr)); +#endif /* __WIN32__ */ +/* 10 */ +EXTERN int TclCreateProc _ANSI_ARGS_((Tcl_Interp * interp, + Namespace * nsPtr, CONST char * procName, + Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, + Proc ** procPtrPtr)); +/* 11 */ +EXTERN void TclDeleteCompiledLocalVars _ANSI_ARGS_(( + Interp * iPtr, CallFrame * framePtr)); +/* 12 */ +EXTERN void TclDeleteVars _ANSI_ARGS_((Interp * iPtr, + Tcl_HashTable * tablePtr)); +/* 13 */ +EXTERN int TclDoGlob _ANSI_ARGS_((Tcl_Interp * interp, + char * separators, Tcl_DString * headPtr, + char * tail, Tcl_GlobTypeData * types)); +/* 14 */ +EXTERN void TclDumpMemoryInfo _ANSI_ARGS_((FILE * outFile)); +/* Slot 15 is reserved */ +/* 16 */ +EXTERN void TclExprFloatError _ANSI_ARGS_((Tcl_Interp * interp, + double value)); +/* Slot 17 is reserved */ +/* Slot 18 is reserved */ +/* Slot 19 is reserved */ +/* Slot 20 is reserved */ +/* Slot 21 is reserved */ +/* 22 */ +EXTERN int TclFindElement _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * listStr, int listLength, + CONST char ** elementPtr, + CONST char ** nextPtr, int * sizePtr, + int * bracePtr)); +/* 23 */ +EXTERN Proc * TclFindProc _ANSI_ARGS_((Interp * iPtr, + CONST char * procName)); +/* 24 */ +EXTERN int TclFormatInt _ANSI_ARGS_((char * buffer, long n)); +/* 25 */ +EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp * iPtr)); +/* Slot 26 is reserved */ +/* 27 */ +EXTERN int TclGetDate _ANSI_ARGS_((char * p, unsigned long now, + long zone, unsigned long * timePtr)); +/* 28 */ +EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type)); +/* Slot 29 is reserved */ +/* Slot 30 is reserved */ +/* 31 */ +EXTERN char * TclGetExtension _ANSI_ARGS_((char * name)); +/* 32 */ +EXTERN int TclGetFrame _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CallFrame ** framePtrPtr)); +/* 33 */ +EXTERN TclCmdProcType TclGetInterpProc _ANSI_ARGS_((void)); +/* 34 */ +EXTERN int TclGetIntForIndex _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int endValue, + int * indexPtr)); +/* Slot 35 is reserved */ +/* 36 */ +EXTERN int TclGetLong _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, long * longPtr)); +/* 37 */ +EXTERN int TclGetLoadedPackages _ANSI_ARGS_(( + Tcl_Interp * interp, char * targetName)); +/* 38 */ +EXTERN int TclGetNamespaceForQualName _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * qualName, + Namespace * cxtNsPtr, int flags, + Namespace ** nsPtrPtr, + Namespace ** altNsPtrPtr, + Namespace ** actualCxtPtrPtr, + CONST char ** simpleNamePtr)); +/* 39 */ +EXTERN TclObjCmdProcType TclGetObjInterpProc _ANSI_ARGS_((void)); +/* 40 */ +EXTERN int TclGetOpenMode _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * seekFlagPtr)); +/* 41 */ +EXTERN Tcl_Command TclGetOriginalCommand _ANSI_ARGS_(( + Tcl_Command command)); +/* 42 */ +EXTERN char * TclpGetUserHome _ANSI_ARGS_((CONST char * name, + Tcl_DString * bufferPtr)); +/* 43 */ +EXTERN int TclGlobalInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST84 char ** argv, int flags)); +/* 44 */ +EXTERN int TclGuessPackageName _ANSI_ARGS_(( + CONST char * fileName, Tcl_DString * bufPtr)); +/* 45 */ +EXTERN int TclHideUnsafeCommands _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 46 */ +EXTERN int TclInExit _ANSI_ARGS_((void)); +/* Slot 47 is reserved */ +/* Slot 48 is reserved */ +/* 49 */ +EXTERN Tcl_Obj * TclIncrVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + long incrAmount, int part1NotParsed)); +/* 50 */ +EXTERN void TclInitCompiledLocals _ANSI_ARGS_(( + Tcl_Interp * interp, CallFrame * framePtr, + Namespace * nsPtr)); +/* 51 */ +EXTERN int TclInterpInit _ANSI_ARGS_((Tcl_Interp * interp)); +/* 52 */ +EXTERN int TclInvoke _ANSI_ARGS_((Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +/* 53 */ +EXTERN int TclInvokeObjectCommand _ANSI_ARGS_(( + ClientData clientData, Tcl_Interp * interp, + int argc, CONST84 char ** argv)); +/* 54 */ +EXTERN int TclInvokeStringCommand _ANSI_ARGS_(( + ClientData clientData, Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[])); +/* 55 */ +EXTERN Proc * TclIsProc _ANSI_ARGS_((Command * cmdPtr)); +/* Slot 56 is reserved */ +/* Slot 57 is reserved */ +/* 58 */ +EXTERN Var * TclLookupVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, CONST char * msg, int createPart1, + int createPart2, Var ** arrayPtrPtr)); +/* Slot 59 is reserved */ +/* 60 */ +EXTERN int TclNeedSpace _ANSI_ARGS_((CONST char * start, + CONST char * end)); +/* 61 */ +EXTERN Tcl_Obj * TclNewProcBodyObj _ANSI_ARGS_((Proc * procPtr)); +/* 62 */ +EXTERN int TclObjCommandComplete _ANSI_ARGS_((Tcl_Obj * cmdPtr)); +/* 63 */ +EXTERN int TclObjInterpProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int objc, + Tcl_Obj *CONST objv[])); +/* 64 */ +EXTERN int TclObjInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 65 */ +EXTERN int TclObjInvokeGlobal _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 66 */ +EXTERN int TclOpenFileChannelDeleteProc _ANSI_ARGS_(( + TclOpenFileChannelProc_ * proc)); +/* 67 */ +EXTERN int TclOpenFileChannelInsertProc _ANSI_ARGS_(( + TclOpenFileChannelProc_ * proc)); +/* Slot 68 is reserved */ +/* 69 */ +EXTERN char * TclpAlloc _ANSI_ARGS_((unsigned int size)); +/* Slot 70 is reserved */ +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +/* 74 */ +EXTERN void TclpFree _ANSI_ARGS_((char * ptr)); +/* 75 */ +EXTERN unsigned long TclpGetClicks _ANSI_ARGS_((void)); +/* 76 */ +EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void)); +/* 77 */ +EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time * time)); +/* 78 */ +EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time)); +/* Slot 79 is reserved */ +/* Slot 80 is reserved */ +/* 81 */ +EXTERN char * TclpRealloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* Slot 82 is reserved */ +/* Slot 83 is reserved */ +/* Slot 84 is reserved */ +/* Slot 85 is reserved */ +/* Slot 86 is reserved */ +/* Slot 87 is reserved */ +/* 88 */ +EXTERN char * TclPrecTraceProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, CONST char * name1, + CONST char * name2, int flags)); +/* 89 */ +EXTERN int TclPreventAliasLoop _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Interp * cmdInterp, Tcl_Command cmd)); +/* Slot 90 is reserved */ +/* 91 */ +EXTERN void TclProcCleanupProc _ANSI_ARGS_((Proc * procPtr)); +/* 92 */ +EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp * interp, + Proc * procPtr, Tcl_Obj * bodyPtr, + Namespace * nsPtr, CONST char * description, + CONST char * procName)); +/* 93 */ +EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData)); +/* 94 */ +EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int argc, + CONST84 char ** argv)); +/* Slot 95 is reserved */ +/* 96 */ +EXTERN int TclRenameCommand _ANSI_ARGS_((Tcl_Interp * interp, + char * oldName, char * newName)); +/* 97 */ +EXTERN void TclResetShadowedCmdRefs _ANSI_ARGS_(( + Tcl_Interp * interp, Command * newCmdPtr)); +/* 98 */ +EXTERN int TclServiceIdle _ANSI_ARGS_((void)); +/* Slot 99 is reserved */ +/* Slot 100 is reserved */ +/* 101 */ +EXTERN char * TclSetPreInitScript _ANSI_ARGS_((char * string)); +/* 102 */ +EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp * interp)); +/* 103 */ +EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp * interp, + char * str, char * proto, int * portPtr)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 104 */ +EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, + int size)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 104 */ +EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, + int size)); +#endif /* __WIN32__ */ +/* Slot 105 is reserved */ +/* 106 */ +EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ * proc)); +/* 107 */ +EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ * proc)); +/* 108 */ +EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace * nsPtr)); +/* 109 */ +EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp * iPtr)); +/* Slot 110 is reserved */ +/* 111 */ +EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_ResolveCmdProc * cmdProc, + Tcl_ResolveVarProc * varProc, + Tcl_ResolveCompiledVarProc * compiledVarProc)); +/* 112 */ +EXTERN int Tcl_AppendExportList _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Namespace * nsPtr, + Tcl_Obj * objPtr)); +/* 113 */ +EXTERN Tcl_Namespace * Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, ClientData clientData, + Tcl_NamespaceDeleteProc * deleteProc)); +/* 114 */ +EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_(( + Tcl_Namespace * nsPtr)); +/* 115 */ +EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern, + int resetListFirst)); +/* 116 */ +EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 117 */ +EXTERN Tcl_Namespace * Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 118 */ +EXTERN int Tcl_GetInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_ResolverInfo * resInfo)); +/* 119 */ +EXTERN int Tcl_GetNamespaceResolvers _ANSI_ARGS_(( + Tcl_Namespace * namespacePtr, + Tcl_ResolverInfo * resInfo)); +/* 120 */ +EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 121 */ +EXTERN int Tcl_ForgetImport _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern)); +/* 122 */ +EXTERN Tcl_Command Tcl_GetCommandFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr)); +/* 123 */ +EXTERN void Tcl_GetCommandFullName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command, + Tcl_Obj * objPtr)); +/* 124 */ +EXTERN Tcl_Namespace * Tcl_GetCurrentNamespace _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 125 */ +EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 126 */ +EXTERN void Tcl_GetVariableFullName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Var variable, + Tcl_Obj * objPtr)); +/* 127 */ +EXTERN int Tcl_Import _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern, + int allowOverwrite)); +/* 128 */ +EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp* interp)); +/* 129 */ +EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_CallFrame * framePtr, + Tcl_Namespace * nsPtr, int isProcCallFrame)); +/* 130 */ +EXTERN int Tcl_RemoveInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name)); +/* 131 */ +EXTERN void Tcl_SetNamespaceResolvers _ANSI_ARGS_(( + Tcl_Namespace * namespacePtr, + Tcl_ResolveCmdProc * cmdProc, + Tcl_ResolveVarProc * varProc, + Tcl_ResolveCompiledVarProc * compiledVarProc)); +/* 132 */ +EXTERN int TclpHasSockets _ANSI_ARGS_((Tcl_Interp * interp)); +/* 133 */ +EXTERN struct tm * TclpGetDate _ANSI_ARGS_((TclpTime_t time, int useGMT)); +/* 134 */ +EXTERN size_t TclpStrftime _ANSI_ARGS_((char * s, size_t maxsize, + CONST char * format, CONST struct tm * t, + int useGMT)); +/* 135 */ +EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void)); +/* Slot 136 is reserved */ +/* Slot 137 is reserved */ +/* 138 */ +EXTERN CONST84_RETURN char * TclGetEnv _ANSI_ARGS_((CONST char * name, + Tcl_DString * valuePtr)); +/* Slot 139 is reserved */ +/* 140 */ +EXTERN int TclLooksLikeInt _ANSI_ARGS_((CONST char * bytes, + int length)); +/* 141 */ +EXTERN CONST84_RETURN char * TclpGetCwd _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * cwdPtr)); +/* 142 */ +EXTERN int TclSetByteCodeFromAny _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + CompileHookProc * hookProc, + ClientData clientData)); +/* 143 */ +EXTERN int TclAddLiteralObj _ANSI_ARGS_(( + struct CompileEnv * envPtr, Tcl_Obj * objPtr, + LiteralEntry ** litPtrPtr)); +/* 144 */ +EXTERN void TclHideLiteral _ANSI_ARGS_((Tcl_Interp * interp, + struct CompileEnv * envPtr, int index)); +/* 145 */ +EXTERN struct AuxDataType * TclGetAuxDataType _ANSI_ARGS_((char * typeName)); +/* 146 */ +EXTERN TclHandle TclHandleCreate _ANSI_ARGS_((VOID * ptr)); +/* 147 */ +EXTERN void TclHandleFree _ANSI_ARGS_((TclHandle handle)); +/* 148 */ +EXTERN TclHandle TclHandlePreserve _ANSI_ARGS_((TclHandle handle)); +/* 149 */ +EXTERN void TclHandleRelease _ANSI_ARGS_((TclHandle handle)); +/* 150 */ +EXTERN int TclRegAbout _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp re)); +/* 151 */ +EXTERN void TclRegExpRangeUniChar _ANSI_ARGS_((Tcl_RegExp re, + int index, int * startPtr, int * endPtr)); +/* 152 */ +EXTERN void TclSetLibraryPath _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 153 */ +EXTERN Tcl_Obj * TclGetLibraryPath _ANSI_ARGS_((void)); +/* Slot 154 is reserved */ +/* Slot 155 is reserved */ +/* 156 */ +EXTERN void TclRegError _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * msg, int status)); +/* 157 */ +EXTERN Var * TclVarTraceExists _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 158 */ +EXTERN void TclSetStartupScriptFileName _ANSI_ARGS_(( + CONST char * filename)); +/* 159 */ +EXTERN CONST84_RETURN char * TclGetStartupScriptFileName _ANSI_ARGS_((void)); +/* Slot 160 is reserved */ +/* 161 */ +EXTERN int TclChannelTransform _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); +/* 162 */ +EXTERN void TclChannelEventScriptInvoker _ANSI_ARGS_(( + ClientData clientData, int flags)); +/* 163 */ +EXTERN void * TclGetInstructionTable _ANSI_ARGS_((void)); +/* 164 */ +EXTERN void TclExpandCodeArray _ANSI_ARGS_((void * envPtr)); +/* 165 */ +EXTERN void TclpSetInitialEncodings _ANSI_ARGS_((void)); +/* 166 */ +EXTERN int TclListObjSetElement _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + int index, Tcl_Obj * valuePtr)); +/* 167 */ +EXTERN void TclSetStartupScriptPath _ANSI_ARGS_(( + Tcl_Obj * pathPtr)); +/* 168 */ +EXTERN Tcl_Obj * TclGetStartupScriptPath _ANSI_ARGS_((void)); +/* 169 */ +EXTERN int TclpUtfNcmp2 _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 170 */ +EXTERN int TclCheckInterpTraces _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * command, + int numChars, Command * cmdPtr, int result, + int traceFlags, int objc, + Tcl_Obj *CONST objv[])); +/* 171 */ +EXTERN int TclCheckExecutionTraces _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * command, + int numChars, Command * cmdPtr, int result, + int traceFlags, int objc, + Tcl_Obj *CONST objv[])); +/* 172 */ +EXTERN int TclInThreadExit _ANSI_ARGS_((void)); +/* 173 */ +EXTERN int TclUniCharMatch _ANSI_ARGS_(( + CONST Tcl_UniChar * string, int strLen, + CONST Tcl_UniChar * pattern, int ptnLen, + int nocase)); +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +/* 182 */ +EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t clock)); +/* 183 */ +EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t clock)); + +typedef struct TclIntStubs { + int magic; + struct TclIntStubHooks *hooks; + + void *reserved0; + int (*tclAccessDeleteProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 1 */ + int (*tclAccessInsertProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 2 */ + void (*tclAllocateFreeObjects) _ANSI_ARGS_((void)); /* 3 */ + void *reserved4; +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved5; +#endif /* MAC_TCL */ + void (*tclCleanupCommand) _ANSI_ARGS_((Command * cmdPtr)); /* 6 */ + int (*tclCopyAndCollapse) _ANSI_ARGS_((int count, CONST char * src, char * dst)); /* 7 */ + int (*tclCopyChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel inChan, Tcl_Channel outChan, int toRead, Tcl_Obj * cmdPtr)); /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved9; +#endif /* MAC_TCL */ + int (*tclCreateProc) _ANSI_ARGS_((Tcl_Interp * interp, Namespace * nsPtr, CONST char * procName, Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, Proc ** procPtrPtr)); /* 10 */ + void (*tclDeleteCompiledLocalVars) _ANSI_ARGS_((Interp * iPtr, CallFrame * framePtr)); /* 11 */ + void (*tclDeleteVars) _ANSI_ARGS_((Interp * iPtr, Tcl_HashTable * tablePtr)); /* 12 */ + int (*tclDoGlob) _ANSI_ARGS_((Tcl_Interp * interp, char * separators, Tcl_DString * headPtr, char * tail, Tcl_GlobTypeData * types)); /* 13 */ + void (*tclDumpMemoryInfo) _ANSI_ARGS_((FILE * outFile)); /* 14 */ + void *reserved15; + void (*tclExprFloatError) _ANSI_ARGS_((Tcl_Interp * interp, double value)); /* 16 */ + void *reserved17; + void *reserved18; + void *reserved19; + void *reserved20; + void *reserved21; + int (*tclFindElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int listLength, CONST char ** elementPtr, CONST char ** nextPtr, int * sizePtr, int * bracePtr)); /* 22 */ + Proc * (*tclFindProc) _ANSI_ARGS_((Interp * iPtr, CONST char * procName)); /* 23 */ + int (*tclFormatInt) _ANSI_ARGS_((char * buffer, long n)); /* 24 */ + void (*tclFreePackageInfo) _ANSI_ARGS_((Interp * iPtr)); /* 25 */ + void *reserved26; + int (*tclGetDate) _ANSI_ARGS_((char * p, unsigned long now, long zone, unsigned long * timePtr)); /* 27 */ + Tcl_Channel (*tclpGetDefaultStdChannel) _ANSI_ARGS_((int type)); /* 28 */ + void *reserved29; + void *reserved30; + char * (*tclGetExtension) _ANSI_ARGS_((char * name)); /* 31 */ + int (*tclGetFrame) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CallFrame ** framePtrPtr)); /* 32 */ + TclCmdProcType (*tclGetInterpProc) _ANSI_ARGS_((void)); /* 33 */ + int (*tclGetIntForIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int endValue, int * indexPtr)); /* 34 */ + void *reserved35; + int (*tclGetLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * longPtr)); /* 36 */ + int (*tclGetLoadedPackages) _ANSI_ARGS_((Tcl_Interp * interp, char * targetName)); /* 37 */ + int (*tclGetNamespaceForQualName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * qualName, Namespace * cxtNsPtr, int flags, Namespace ** nsPtrPtr, Namespace ** altNsPtrPtr, Namespace ** actualCxtPtrPtr, CONST char ** simpleNamePtr)); /* 38 */ + TclObjCmdProcType (*tclGetObjInterpProc) _ANSI_ARGS_((void)); /* 39 */ + int (*tclGetOpenMode) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * seekFlagPtr)); /* 40 */ + Tcl_Command (*tclGetOriginalCommand) _ANSI_ARGS_((Tcl_Command command)); /* 41 */ + char * (*tclpGetUserHome) _ANSI_ARGS_((CONST char * name, Tcl_DString * bufferPtr)); /* 42 */ + int (*tclGlobalInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 43 */ + int (*tclGuessPackageName) _ANSI_ARGS_((CONST char * fileName, Tcl_DString * bufPtr)); /* 44 */ + int (*tclHideUnsafeCommands) _ANSI_ARGS_((Tcl_Interp * interp)); /* 45 */ + int (*tclInExit) _ANSI_ARGS_((void)); /* 46 */ + void *reserved47; + void *reserved48; + Tcl_Obj * (*tclIncrVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, long incrAmount, int part1NotParsed)); /* 49 */ + void (*tclInitCompiledLocals) _ANSI_ARGS_((Tcl_Interp * interp, CallFrame * framePtr, Namespace * nsPtr)); /* 50 */ + int (*tclInterpInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 51 */ + int (*tclInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 52 */ + int (*tclInvokeObjectCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 53 */ + int (*tclInvokeStringCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 54 */ + Proc * (*tclIsProc) _ANSI_ARGS_((Command * cmdPtr)); /* 55 */ + void *reserved56; + void *reserved57; + Var * (*tclLookupVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, CONST char * msg, int createPart1, int createPart2, Var ** arrayPtrPtr)); /* 58 */ + void *reserved59; + int (*tclNeedSpace) _ANSI_ARGS_((CONST char * start, CONST char * end)); /* 60 */ + Tcl_Obj * (*tclNewProcBodyObj) _ANSI_ARGS_((Proc * procPtr)); /* 61 */ + int (*tclObjCommandComplete) _ANSI_ARGS_((Tcl_Obj * cmdPtr)); /* 62 */ + int (*tclObjInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 63 */ + int (*tclObjInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 64 */ + int (*tclObjInvokeGlobal) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 65 */ + int (*tclOpenFileChannelDeleteProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 66 */ + int (*tclOpenFileChannelInsertProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 67 */ + void *reserved68; + char * (*tclpAlloc) _ANSI_ARGS_((unsigned int size)); /* 69 */ + void *reserved70; + void *reserved71; + void *reserved72; + void *reserved73; + void (*tclpFree) _ANSI_ARGS_((char * ptr)); /* 74 */ + unsigned long (*tclpGetClicks) _ANSI_ARGS_((void)); /* 75 */ + unsigned long (*tclpGetSeconds) _ANSI_ARGS_((void)); /* 76 */ + void (*tclpGetTime) _ANSI_ARGS_((Tcl_Time * time)); /* 77 */ + int (*tclpGetTimeZone) _ANSI_ARGS_((unsigned long time)); /* 78 */ + void *reserved79; + void *reserved80; + char * (*tclpRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 81 */ + void *reserved82; + void *reserved83; + void *reserved84; + void *reserved85; + void *reserved86; + void *reserved87; + char * (*tclPrecTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, CONST char * name1, CONST char * name2, int flags)); /* 88 */ + int (*tclPreventAliasLoop) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Interp * cmdInterp, Tcl_Command cmd)); /* 89 */ + void *reserved90; + void (*tclProcCleanupProc) _ANSI_ARGS_((Proc * procPtr)); /* 91 */ + int (*tclProcCompileProc) _ANSI_ARGS_((Tcl_Interp * interp, Proc * procPtr, Tcl_Obj * bodyPtr, Namespace * nsPtr, CONST char * description, CONST char * procName)); /* 92 */ + void (*tclProcDeleteProc) _ANSI_ARGS_((ClientData clientData)); /* 93 */ + int (*tclProcInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 94 */ + void *reserved95; + int (*tclRenameCommand) _ANSI_ARGS_((Tcl_Interp * interp, char * oldName, char * newName)); /* 96 */ + void (*tclResetShadowedCmdRefs) _ANSI_ARGS_((Tcl_Interp * interp, Command * newCmdPtr)); /* 97 */ + int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ + void *reserved99; + void *reserved100; + char * (*tclSetPreInitScript) _ANSI_ARGS_((char * string)); /* 101 */ + void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp * interp)); /* 102 */ + int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp * interp, char * str, char * proto, int * portPtr)); /* 103 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved104; +#endif /* MAC_TCL */ + void *reserved105; + int (*tclStatDeleteProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 106 */ + int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 107 */ + void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace * nsPtr)); /* 108 */ + int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp * iPtr)); /* 109 */ + void *reserved110; + void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 111 */ + int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, Tcl_Obj * objPtr)); /* 112 */ + Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, ClientData clientData, Tcl_NamespaceDeleteProc * deleteProc)); /* 113 */ + void (*tcl_DeleteNamespace) _ANSI_ARGS_((Tcl_Namespace * nsPtr)); /* 114 */ + int (*tcl_Export) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int resetListFirst)); /* 115 */ + Tcl_Command (*tcl_FindCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 116 */ + Tcl_Namespace * (*tcl_FindNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 117 */ + int (*tcl_GetInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolverInfo * resInfo)); /* 118 */ + int (*tcl_GetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolverInfo * resInfo)); /* 119 */ + Tcl_Var (*tcl_FindNamespaceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 120 */ + int (*tcl_ForgetImport) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern)); /* 121 */ + Tcl_Command (*tcl_GetCommandFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 122 */ + void (*tcl_GetCommandFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command, Tcl_Obj * objPtr)); /* 123 */ + Tcl_Namespace * (*tcl_GetCurrentNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 124 */ + Tcl_Namespace * (*tcl_GetGlobalNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 125 */ + void (*tcl_GetVariableFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Var variable, Tcl_Obj * objPtr)); /* 126 */ + int (*tcl_Import) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int allowOverwrite)); /* 127 */ + void (*tcl_PopCallFrame) _ANSI_ARGS_((Tcl_Interp* interp)); /* 128 */ + int (*tcl_PushCallFrame) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_CallFrame * framePtr, Tcl_Namespace * nsPtr, int isProcCallFrame)); /* 129 */ + int (*tcl_RemoveInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 130 */ + void (*tcl_SetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 131 */ + int (*tclpHasSockets) _ANSI_ARGS_((Tcl_Interp * interp)); /* 132 */ + struct tm * (*tclpGetDate) _ANSI_ARGS_((TclpTime_t time, int useGMT)); /* 133 */ + size_t (*tclpStrftime) _ANSI_ARGS_((char * s, size_t maxsize, CONST char * format, CONST struct tm * t, int useGMT)); /* 134 */ + int (*tclpCheckStackSpace) _ANSI_ARGS_((void)); /* 135 */ + void *reserved136; + void *reserved137; + CONST84_RETURN char * (*tclGetEnv) _ANSI_ARGS_((CONST char * name, Tcl_DString * valuePtr)); /* 138 */ + void *reserved139; + int (*tclLooksLikeInt) _ANSI_ARGS_((CONST char * bytes, int length)); /* 140 */ + CONST84_RETURN char * (*tclpGetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 141 */ + int (*tclSetByteCodeFromAny) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CompileHookProc * hookProc, ClientData clientData)); /* 142 */ + int (*tclAddLiteralObj) _ANSI_ARGS_((struct CompileEnv * envPtr, Tcl_Obj * objPtr, LiteralEntry ** litPtrPtr)); /* 143 */ + void (*tclHideLiteral) _ANSI_ARGS_((Tcl_Interp * interp, struct CompileEnv * envPtr, int index)); /* 144 */ + struct AuxDataType * (*tclGetAuxDataType) _ANSI_ARGS_((char * typeName)); /* 145 */ + TclHandle (*tclHandleCreate) _ANSI_ARGS_((VOID * ptr)); /* 146 */ + void (*tclHandleFree) _ANSI_ARGS_((TclHandle handle)); /* 147 */ + TclHandle (*tclHandlePreserve) _ANSI_ARGS_((TclHandle handle)); /* 148 */ + void (*tclHandleRelease) _ANSI_ARGS_((TclHandle handle)); /* 149 */ + int (*tclRegAbout) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp re)); /* 150 */ + void (*tclRegExpRangeUniChar) _ANSI_ARGS_((Tcl_RegExp re, int index, int * startPtr, int * endPtr)); /* 151 */ + void (*tclSetLibraryPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 152 */ + Tcl_Obj * (*tclGetLibraryPath) _ANSI_ARGS_((void)); /* 153 */ + void *reserved154; + void *reserved155; + void (*tclRegError) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * msg, int status)); /* 156 */ + Var * (*tclVarTraceExists) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 157 */ + void (*tclSetStartupScriptFileName) _ANSI_ARGS_((CONST char * filename)); /* 158 */ + CONST84_RETURN char * (*tclGetStartupScriptFileName) _ANSI_ARGS_((void)); /* 159 */ + void *reserved160; + int (*tclChannelTransform) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); /* 161 */ + void (*tclChannelEventScriptInvoker) _ANSI_ARGS_((ClientData clientData, int flags)); /* 162 */ + void * (*tclGetInstructionTable) _ANSI_ARGS_((void)); /* 163 */ + void (*tclExpandCodeArray) _ANSI_ARGS_((void * envPtr)); /* 164 */ + void (*tclpSetInitialEncodings) _ANSI_ARGS_((void)); /* 165 */ + int (*tclListObjSetElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj * valuePtr)); /* 166 */ + void (*tclSetStartupScriptPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 167 */ + Tcl_Obj * (*tclGetStartupScriptPath) _ANSI_ARGS_((void)); /* 168 */ + int (*tclpUtfNcmp2) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 169 */ + int (*tclCheckInterpTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 170 */ + int (*tclCheckExecutionTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 171 */ + int (*tclInThreadExit) _ANSI_ARGS_((void)); /* 172 */ + int (*tclUniCharMatch) _ANSI_ARGS_((CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); /* 173 */ + void *reserved174; + void *reserved175; + void *reserved176; + void *reserved177; + void *reserved178; + void *reserved179; + void *reserved180; + void *reserved181; + struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t clock)); /* 182 */ + struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ +} TclIntStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclIntStubs *tclIntStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +/* Slot 0 is reserved */ +#ifndef TclAccessDeleteProc +#define TclAccessDeleteProc \ + (tclIntStubsPtr->tclAccessDeleteProc) /* 1 */ +#endif +#ifndef TclAccessInsertProc +#define TclAccessInsertProc \ + (tclIntStubsPtr->tclAccessInsertProc) /* 2 */ +#endif +#ifndef TclAllocateFreeObjects +#define TclAllocateFreeObjects \ + (tclIntStubsPtr->tclAllocateFreeObjects) /* 3 */ +#endif +/* Slot 4 is reserved */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclCleanupChildren +#define TclCleanupChildren \ + (tclIntStubsPtr->tclCleanupChildren) /* 5 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclCleanupChildren +#define TclCleanupChildren \ + (tclIntStubsPtr->tclCleanupChildren) /* 5 */ +#endif +#endif /* __WIN32__ */ +#ifndef TclCleanupCommand +#define TclCleanupCommand \ + (tclIntStubsPtr->tclCleanupCommand) /* 6 */ +#endif +#ifndef TclCopyAndCollapse +#define TclCopyAndCollapse \ + (tclIntStubsPtr->tclCopyAndCollapse) /* 7 */ +#endif +#ifndef TclCopyChannel +#define TclCopyChannel \ + (tclIntStubsPtr->tclCopyChannel) /* 8 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclCreatePipeline +#define TclCreatePipeline \ + (tclIntStubsPtr->tclCreatePipeline) /* 9 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclCreatePipeline +#define TclCreatePipeline \ + (tclIntStubsPtr->tclCreatePipeline) /* 9 */ +#endif +#endif /* __WIN32__ */ +#ifndef TclCreateProc +#define TclCreateProc \ + (tclIntStubsPtr->tclCreateProc) /* 10 */ +#endif +#ifndef TclDeleteCompiledLocalVars +#define TclDeleteCompiledLocalVars \ + (tclIntStubsPtr->tclDeleteCompiledLocalVars) /* 11 */ +#endif +#ifndef TclDeleteVars +#define TclDeleteVars \ + (tclIntStubsPtr->tclDeleteVars) /* 12 */ +#endif +#ifndef TclDoGlob +#define TclDoGlob \ + (tclIntStubsPtr->tclDoGlob) /* 13 */ +#endif +#ifndef TclDumpMemoryInfo +#define TclDumpMemoryInfo \ + (tclIntStubsPtr->tclDumpMemoryInfo) /* 14 */ +#endif +/* Slot 15 is reserved */ +#ifndef TclExprFloatError +#define TclExprFloatError \ + (tclIntStubsPtr->tclExprFloatError) /* 16 */ +#endif +/* Slot 17 is reserved */ +/* Slot 18 is reserved */ +/* Slot 19 is reserved */ +/* Slot 20 is reserved */ +/* Slot 21 is reserved */ +#ifndef TclFindElement +#define TclFindElement \ + (tclIntStubsPtr->tclFindElement) /* 22 */ +#endif +#ifndef TclFindProc +#define TclFindProc \ + (tclIntStubsPtr->tclFindProc) /* 23 */ +#endif +#ifndef TclFormatInt +#define TclFormatInt \ + (tclIntStubsPtr->tclFormatInt) /* 24 */ +#endif +#ifndef TclFreePackageInfo +#define TclFreePackageInfo \ + (tclIntStubsPtr->tclFreePackageInfo) /* 25 */ +#endif +/* Slot 26 is reserved */ +#ifndef TclGetDate +#define TclGetDate \ + (tclIntStubsPtr->tclGetDate) /* 27 */ +#endif +#ifndef TclpGetDefaultStdChannel +#define TclpGetDefaultStdChannel \ + (tclIntStubsPtr->tclpGetDefaultStdChannel) /* 28 */ +#endif +/* Slot 29 is reserved */ +/* Slot 30 is reserved */ +#ifndef TclGetExtension +#define TclGetExtension \ + (tclIntStubsPtr->tclGetExtension) /* 31 */ +#endif +#ifndef TclGetFrame +#define TclGetFrame \ + (tclIntStubsPtr->tclGetFrame) /* 32 */ +#endif +#ifndef TclGetInterpProc +#define TclGetInterpProc \ + (tclIntStubsPtr->tclGetInterpProc) /* 33 */ +#endif +#ifndef TclGetIntForIndex +#define TclGetIntForIndex \ + (tclIntStubsPtr->tclGetIntForIndex) /* 34 */ +#endif +/* Slot 35 is reserved */ +#ifndef TclGetLong +#define TclGetLong \ + (tclIntStubsPtr->tclGetLong) /* 36 */ +#endif +#ifndef TclGetLoadedPackages +#define TclGetLoadedPackages \ + (tclIntStubsPtr->tclGetLoadedPackages) /* 37 */ +#endif +#ifndef TclGetNamespaceForQualName +#define TclGetNamespaceForQualName \ + (tclIntStubsPtr->tclGetNamespaceForQualName) /* 38 */ +#endif +#ifndef TclGetObjInterpProc +#define TclGetObjInterpProc \ + (tclIntStubsPtr->tclGetObjInterpProc) /* 39 */ +#endif +#ifndef TclGetOpenMode +#define TclGetOpenMode \ + (tclIntStubsPtr->tclGetOpenMode) /* 40 */ +#endif +#ifndef TclGetOriginalCommand +#define TclGetOriginalCommand \ + (tclIntStubsPtr->tclGetOriginalCommand) /* 41 */ +#endif +#ifndef TclpGetUserHome +#define TclpGetUserHome \ + (tclIntStubsPtr->tclpGetUserHome) /* 42 */ +#endif +#ifndef TclGlobalInvoke +#define TclGlobalInvoke \ + (tclIntStubsPtr->tclGlobalInvoke) /* 43 */ +#endif +#ifndef TclGuessPackageName +#define TclGuessPackageName \ + (tclIntStubsPtr->tclGuessPackageName) /* 44 */ +#endif +#ifndef TclHideUnsafeCommands +#define TclHideUnsafeCommands \ + (tclIntStubsPtr->tclHideUnsafeCommands) /* 45 */ +#endif +#ifndef TclInExit +#define TclInExit \ + (tclIntStubsPtr->tclInExit) /* 46 */ +#endif +/* Slot 47 is reserved */ +/* Slot 48 is reserved */ +#ifndef TclIncrVar2 +#define TclIncrVar2 \ + (tclIntStubsPtr->tclIncrVar2) /* 49 */ +#endif +#ifndef TclInitCompiledLocals +#define TclInitCompiledLocals \ + (tclIntStubsPtr->tclInitCompiledLocals) /* 50 */ +#endif +#ifndef TclInterpInit +#define TclInterpInit \ + (tclIntStubsPtr->tclInterpInit) /* 51 */ +#endif +#ifndef TclInvoke +#define TclInvoke \ + (tclIntStubsPtr->tclInvoke) /* 52 */ +#endif +#ifndef TclInvokeObjectCommand +#define TclInvokeObjectCommand \ + (tclIntStubsPtr->tclInvokeObjectCommand) /* 53 */ +#endif +#ifndef TclInvokeStringCommand +#define TclInvokeStringCommand \ + (tclIntStubsPtr->tclInvokeStringCommand) /* 54 */ +#endif +#ifndef TclIsProc +#define TclIsProc \ + (tclIntStubsPtr->tclIsProc) /* 55 */ +#endif +/* Slot 56 is reserved */ +/* Slot 57 is reserved */ +#ifndef TclLookupVar +#define TclLookupVar \ + (tclIntStubsPtr->tclLookupVar) /* 58 */ +#endif +/* Slot 59 is reserved */ +#ifndef TclNeedSpace +#define TclNeedSpace \ + (tclIntStubsPtr->tclNeedSpace) /* 60 */ +#endif +#ifndef TclNewProcBodyObj +#define TclNewProcBodyObj \ + (tclIntStubsPtr->tclNewProcBodyObj) /* 61 */ +#endif +#ifndef TclObjCommandComplete +#define TclObjCommandComplete \ + (tclIntStubsPtr->tclObjCommandComplete) /* 62 */ +#endif +#ifndef TclObjInterpProc +#define TclObjInterpProc \ + (tclIntStubsPtr->tclObjInterpProc) /* 63 */ +#endif +#ifndef TclObjInvoke +#define TclObjInvoke \ + (tclIntStubsPtr->tclObjInvoke) /* 64 */ +#endif +#ifndef TclObjInvokeGlobal +#define TclObjInvokeGlobal \ + (tclIntStubsPtr->tclObjInvokeGlobal) /* 65 */ +#endif +#ifndef TclOpenFileChannelDeleteProc +#define TclOpenFileChannelDeleteProc \ + (tclIntStubsPtr->tclOpenFileChannelDeleteProc) /* 66 */ +#endif +#ifndef TclOpenFileChannelInsertProc +#define TclOpenFileChannelInsertProc \ + (tclIntStubsPtr->tclOpenFileChannelInsertProc) /* 67 */ +#endif +/* Slot 68 is reserved */ +#ifndef TclpAlloc +#define TclpAlloc \ + (tclIntStubsPtr->tclpAlloc) /* 69 */ +#endif +/* Slot 70 is reserved */ +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +#ifndef TclpFree +#define TclpFree \ + (tclIntStubsPtr->tclpFree) /* 74 */ +#endif +#ifndef TclpGetClicks +#define TclpGetClicks \ + (tclIntStubsPtr->tclpGetClicks) /* 75 */ +#endif +#ifndef TclpGetSeconds +#define TclpGetSeconds \ + (tclIntStubsPtr->tclpGetSeconds) /* 76 */ +#endif +#ifndef TclpGetTime +#define TclpGetTime \ + (tclIntStubsPtr->tclpGetTime) /* 77 */ +#endif +#ifndef TclpGetTimeZone +#define TclpGetTimeZone \ + (tclIntStubsPtr->tclpGetTimeZone) /* 78 */ +#endif +/* Slot 79 is reserved */ +/* Slot 80 is reserved */ +#ifndef TclpRealloc +#define TclpRealloc \ + (tclIntStubsPtr->tclpRealloc) /* 81 */ +#endif +/* Slot 82 is reserved */ +/* Slot 83 is reserved */ +/* Slot 84 is reserved */ +/* Slot 85 is reserved */ +/* Slot 86 is reserved */ +/* Slot 87 is reserved */ +#ifndef TclPrecTraceProc +#define TclPrecTraceProc \ + (tclIntStubsPtr->tclPrecTraceProc) /* 88 */ +#endif +#ifndef TclPreventAliasLoop +#define TclPreventAliasLoop \ + (tclIntStubsPtr->tclPreventAliasLoop) /* 89 */ +#endif +/* Slot 90 is reserved */ +#ifndef TclProcCleanupProc +#define TclProcCleanupProc \ + (tclIntStubsPtr->tclProcCleanupProc) /* 91 */ +#endif +#ifndef TclProcCompileProc +#define TclProcCompileProc \ + (tclIntStubsPtr->tclProcCompileProc) /* 92 */ +#endif +#ifndef TclProcDeleteProc +#define TclProcDeleteProc \ + (tclIntStubsPtr->tclProcDeleteProc) /* 93 */ +#endif +#ifndef TclProcInterpProc +#define TclProcInterpProc \ + (tclIntStubsPtr->tclProcInterpProc) /* 94 */ +#endif +/* Slot 95 is reserved */ +#ifndef TclRenameCommand +#define TclRenameCommand \ + (tclIntStubsPtr->tclRenameCommand) /* 96 */ +#endif +#ifndef TclResetShadowedCmdRefs +#define TclResetShadowedCmdRefs \ + (tclIntStubsPtr->tclResetShadowedCmdRefs) /* 97 */ +#endif +#ifndef TclServiceIdle +#define TclServiceIdle \ + (tclIntStubsPtr->tclServiceIdle) /* 98 */ +#endif +/* Slot 99 is reserved */ +/* Slot 100 is reserved */ +#ifndef TclSetPreInitScript +#define TclSetPreInitScript \ + (tclIntStubsPtr->tclSetPreInitScript) /* 101 */ +#endif +#ifndef TclSetupEnv +#define TclSetupEnv \ + (tclIntStubsPtr->tclSetupEnv) /* 102 */ +#endif +#ifndef TclSockGetPort +#define TclSockGetPort \ + (tclIntStubsPtr->tclSockGetPort) /* 103 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclSockMinimumBuffers +#define TclSockMinimumBuffers \ + (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclSockMinimumBuffers +#define TclSockMinimumBuffers \ + (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ +#endif +#endif /* __WIN32__ */ +/* Slot 105 is reserved */ +#ifndef TclStatDeleteProc +#define TclStatDeleteProc \ + (tclIntStubsPtr->tclStatDeleteProc) /* 106 */ +#endif +#ifndef TclStatInsertProc +#define TclStatInsertProc \ + (tclIntStubsPtr->tclStatInsertProc) /* 107 */ +#endif +#ifndef TclTeardownNamespace +#define TclTeardownNamespace \ + (tclIntStubsPtr->tclTeardownNamespace) /* 108 */ +#endif +#ifndef TclUpdateReturnInfo +#define TclUpdateReturnInfo \ + (tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */ +#endif +/* Slot 110 is reserved */ +#ifndef Tcl_AddInterpResolvers +#define Tcl_AddInterpResolvers \ + (tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */ +#endif +#ifndef Tcl_AppendExportList +#define Tcl_AppendExportList \ + (tclIntStubsPtr->tcl_AppendExportList) /* 112 */ +#endif +#ifndef Tcl_CreateNamespace +#define Tcl_CreateNamespace \ + (tclIntStubsPtr->tcl_CreateNamespace) /* 113 */ +#endif +#ifndef Tcl_DeleteNamespace +#define Tcl_DeleteNamespace \ + (tclIntStubsPtr->tcl_DeleteNamespace) /* 114 */ +#endif +#ifndef Tcl_Export +#define Tcl_Export \ + (tclIntStubsPtr->tcl_Export) /* 115 */ +#endif +#ifndef Tcl_FindCommand +#define Tcl_FindCommand \ + (tclIntStubsPtr->tcl_FindCommand) /* 116 */ +#endif +#ifndef Tcl_FindNamespace +#define Tcl_FindNamespace \ + (tclIntStubsPtr->tcl_FindNamespace) /* 117 */ +#endif +#ifndef Tcl_GetInterpResolvers +#define Tcl_GetInterpResolvers \ + (tclIntStubsPtr->tcl_GetInterpResolvers) /* 118 */ +#endif +#ifndef Tcl_GetNamespaceResolvers +#define Tcl_GetNamespaceResolvers \ + (tclIntStubsPtr->tcl_GetNamespaceResolvers) /* 119 */ +#endif +#ifndef Tcl_FindNamespaceVar +#define Tcl_FindNamespaceVar \ + (tclIntStubsPtr->tcl_FindNamespaceVar) /* 120 */ +#endif +#ifndef Tcl_ForgetImport +#define Tcl_ForgetImport \ + (tclIntStubsPtr->tcl_ForgetImport) /* 121 */ +#endif +#ifndef Tcl_GetCommandFromObj +#define Tcl_GetCommandFromObj \ + (tclIntStubsPtr->tcl_GetCommandFromObj) /* 122 */ +#endif +#ifndef Tcl_GetCommandFullName +#define Tcl_GetCommandFullName \ + (tclIntStubsPtr->tcl_GetCommandFullName) /* 123 */ +#endif +#ifndef Tcl_GetCurrentNamespace +#define Tcl_GetCurrentNamespace \ + (tclIntStubsPtr->tcl_GetCurrentNamespace) /* 124 */ +#endif +#ifndef Tcl_GetGlobalNamespace +#define Tcl_GetGlobalNamespace \ + (tclIntStubsPtr->tcl_GetGlobalNamespace) /* 125 */ +#endif +#ifndef Tcl_GetVariableFullName +#define Tcl_GetVariableFullName \ + (tclIntStubsPtr->tcl_GetVariableFullName) /* 126 */ +#endif +#ifndef Tcl_Import +#define Tcl_Import \ + (tclIntStubsPtr->tcl_Import) /* 127 */ +#endif +#ifndef Tcl_PopCallFrame +#define Tcl_PopCallFrame \ + (tclIntStubsPtr->tcl_PopCallFrame) /* 128 */ +#endif +#ifndef Tcl_PushCallFrame +#define Tcl_PushCallFrame \ + (tclIntStubsPtr->tcl_PushCallFrame) /* 129 */ +#endif +#ifndef Tcl_RemoveInterpResolvers +#define Tcl_RemoveInterpResolvers \ + (tclIntStubsPtr->tcl_RemoveInterpResolvers) /* 130 */ +#endif +#ifndef Tcl_SetNamespaceResolvers +#define Tcl_SetNamespaceResolvers \ + (tclIntStubsPtr->tcl_SetNamespaceResolvers) /* 131 */ +#endif +#ifndef TclpHasSockets +#define TclpHasSockets \ + (tclIntStubsPtr->tclpHasSockets) /* 132 */ +#endif +#ifndef TclpGetDate +#define TclpGetDate \ + (tclIntStubsPtr->tclpGetDate) /* 133 */ +#endif +#ifndef TclpStrftime +#define TclpStrftime \ + (tclIntStubsPtr->tclpStrftime) /* 134 */ +#endif +#ifndef TclpCheckStackSpace +#define TclpCheckStackSpace \ + (tclIntStubsPtr->tclpCheckStackSpace) /* 135 */ +#endif +/* Slot 136 is reserved */ +/* Slot 137 is reserved */ +#ifndef TclGetEnv +#define TclGetEnv \ + (tclIntStubsPtr->tclGetEnv) /* 138 */ +#endif +/* Slot 139 is reserved */ +#ifndef TclLooksLikeInt +#define TclLooksLikeInt \ + (tclIntStubsPtr->tclLooksLikeInt) /* 140 */ +#endif +#ifndef TclpGetCwd +#define TclpGetCwd \ + (tclIntStubsPtr->tclpGetCwd) /* 141 */ +#endif +#ifndef TclSetByteCodeFromAny +#define TclSetByteCodeFromAny \ + (tclIntStubsPtr->tclSetByteCodeFromAny) /* 142 */ +#endif +#ifndef TclAddLiteralObj +#define TclAddLiteralObj \ + (tclIntStubsPtr->tclAddLiteralObj) /* 143 */ +#endif +#ifndef TclHideLiteral +#define TclHideLiteral \ + (tclIntStubsPtr->tclHideLiteral) /* 144 */ +#endif +#ifndef TclGetAuxDataType +#define TclGetAuxDataType \ + (tclIntStubsPtr->tclGetAuxDataType) /* 145 */ +#endif +#ifndef TclHandleCreate +#define TclHandleCreate \ + (tclIntStubsPtr->tclHandleCreate) /* 146 */ +#endif +#ifndef TclHandleFree +#define TclHandleFree \ + (tclIntStubsPtr->tclHandleFree) /* 147 */ +#endif +#ifndef TclHandlePreserve +#define TclHandlePreserve \ + (tclIntStubsPtr->tclHandlePreserve) /* 148 */ +#endif +#ifndef TclHandleRelease +#define TclHandleRelease \ + (tclIntStubsPtr->tclHandleRelease) /* 149 */ +#endif +#ifndef TclRegAbout +#define TclRegAbout \ + (tclIntStubsPtr->tclRegAbout) /* 150 */ +#endif +#ifndef TclRegExpRangeUniChar +#define TclRegExpRangeUniChar \ + (tclIntStubsPtr->tclRegExpRangeUniChar) /* 151 */ +#endif +#ifndef TclSetLibraryPath +#define TclSetLibraryPath \ + (tclIntStubsPtr->tclSetLibraryPath) /* 152 */ +#endif +#ifndef TclGetLibraryPath +#define TclGetLibraryPath \ + (tclIntStubsPtr->tclGetLibraryPath) /* 153 */ +#endif +/* Slot 154 is reserved */ +/* Slot 155 is reserved */ +#ifndef TclRegError +#define TclRegError \ + (tclIntStubsPtr->tclRegError) /* 156 */ +#endif +#ifndef TclVarTraceExists +#define TclVarTraceExists \ + (tclIntStubsPtr->tclVarTraceExists) /* 157 */ +#endif +#ifndef TclSetStartupScriptFileName +#define TclSetStartupScriptFileName \ + (tclIntStubsPtr->tclSetStartupScriptFileName) /* 158 */ +#endif +#ifndef TclGetStartupScriptFileName +#define TclGetStartupScriptFileName \ + (tclIntStubsPtr->tclGetStartupScriptFileName) /* 159 */ +#endif +/* Slot 160 is reserved */ +#ifndef TclChannelTransform +#define TclChannelTransform \ + (tclIntStubsPtr->tclChannelTransform) /* 161 */ +#endif +#ifndef TclChannelEventScriptInvoker +#define TclChannelEventScriptInvoker \ + (tclIntStubsPtr->tclChannelEventScriptInvoker) /* 162 */ +#endif +#ifndef TclGetInstructionTable +#define TclGetInstructionTable \ + (tclIntStubsPtr->tclGetInstructionTable) /* 163 */ +#endif +#ifndef TclExpandCodeArray +#define TclExpandCodeArray \ + (tclIntStubsPtr->tclExpandCodeArray) /* 164 */ +#endif +#ifndef TclpSetInitialEncodings +#define TclpSetInitialEncodings \ + (tclIntStubsPtr->tclpSetInitialEncodings) /* 165 */ +#endif +#ifndef TclListObjSetElement +#define TclListObjSetElement \ + (tclIntStubsPtr->tclListObjSetElement) /* 166 */ +#endif +#ifndef TclSetStartupScriptPath +#define TclSetStartupScriptPath \ + (tclIntStubsPtr->tclSetStartupScriptPath) /* 167 */ +#endif +#ifndef TclGetStartupScriptPath +#define TclGetStartupScriptPath \ + (tclIntStubsPtr->tclGetStartupScriptPath) /* 168 */ +#endif +#ifndef TclpUtfNcmp2 +#define TclpUtfNcmp2 \ + (tclIntStubsPtr->tclpUtfNcmp2) /* 169 */ +#endif +#ifndef TclCheckInterpTraces +#define TclCheckInterpTraces \ + (tclIntStubsPtr->tclCheckInterpTraces) /* 170 */ +#endif +#ifndef TclCheckExecutionTraces +#define TclCheckExecutionTraces \ + (tclIntStubsPtr->tclCheckExecutionTraces) /* 171 */ +#endif +#ifndef TclInThreadExit +#define TclInThreadExit \ + (tclIntStubsPtr->tclInThreadExit) /* 172 */ +#endif +#ifndef TclUniCharMatch +#define TclUniCharMatch \ + (tclIntStubsPtr->tclUniCharMatch) /* 173 */ +#endif +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +#ifndef TclpLocaltime +#define TclpLocaltime \ + (tclIntStubsPtr->tclpLocaltime) /* 182 */ +#endif +#ifndef TclpGmtime +#define TclpGmtime \ + (tclIntStubsPtr->tclpGmtime) /* 183 */ +#endif + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLINTDECLS */ diff --git a/generic/tclIntPlatDecls.h b/generic/tclIntPlatDecls.h index c349486..7e5110e 100644 --- a/generic/tclIntPlatDecls.h +++ b/generic/tclIntPlatDecls.h @@ -1,585 +1,585 @@ -/* - * tclIntPlatDecls.h -- - * - * This file contains the declarations for all platform dependent - * unsupported functions that are exported by the Tcl library. These - * interfaces are not guaranteed to remain the same between - * versions. Use at your own risk. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * All rights reserved. - * - * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.1 2004/05/14 21:41:11 kennykb Exp $ - */ - -#ifndef _TCLINTPLATDECLS -#define _TCLINTPLATDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tclInt.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 0 */ -EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 1 */ -EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); -/* 2 */ -EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( - TclFile readFile, TclFile writeFile, - TclFile errorFile, int numPids, - Tcl_Pid * pidPtr)); -/* 3 */ -EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, - TclFile * writePipe)); -/* 4 */ -EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - TclFile inputFile, TclFile outputFile, - TclFile errorFile, Tcl_Pid * pidPtr)); -/* Slot 5 is reserved */ -/* 6 */ -EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, - int direction)); -/* 7 */ -EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, - int mode)); -/* 8 */ -EXTERN int TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask, - int timeout)); -/* 9 */ -EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( - CONST char * contents)); -/* 10 */ -EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); -/* 11 */ -EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((CONST time_t * clock)); -/* 12 */ -EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((CONST time_t * clock)); -/* 13 */ -EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 0 */ -EXTERN void TclWinConvertError _ANSI_ARGS_((DWORD errCode)); -/* 1 */ -EXTERN void TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode)); -/* 2 */ -EXTERN struct servent * TclWinGetServByName _ANSI_ARGS_((CONST char * nm, - CONST char * proto)); -/* 3 */ -EXTERN int TclWinGetSockOpt _ANSI_ARGS_((SOCKET s, int level, - int optname, char FAR * optval, - int FAR * optlen)); -/* 4 */ -EXTERN HINSTANCE TclWinGetTclInstance _ANSI_ARGS_((void)); -/* Slot 5 is reserved */ -/* 6 */ -EXTERN u_short TclWinNToHS _ANSI_ARGS_((u_short ns)); -/* 7 */ -EXTERN int TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level, - int optname, CONST char FAR * optval, - int optlen)); -/* 8 */ -EXTERN unsigned long TclpGetPid _ANSI_ARGS_((Tcl_Pid pid)); -/* 9 */ -EXTERN int TclWinGetPlatformId _ANSI_ARGS_((void)); -/* Slot 10 is reserved */ -/* 11 */ -EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 12 */ -EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); -/* 13 */ -EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( - TclFile readFile, TclFile writeFile, - TclFile errorFile, int numPids, - Tcl_Pid * pidPtr)); -/* 14 */ -EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, - TclFile * writePipe)); -/* 15 */ -EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - TclFile inputFile, TclFile outputFile, - TclFile errorFile, Tcl_Pid * pidPtr)); -/* Slot 16 is reserved */ -/* Slot 17 is reserved */ -/* 18 */ -EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, - int direction)); -/* 19 */ -EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, - int mode)); -/* 20 */ -EXTERN void TclWinAddProcess _ANSI_ARGS_((HANDLE hProcess, - DWORD id)); -/* Slot 21 is reserved */ -/* 22 */ -EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( - CONST char * contents)); -/* 23 */ -EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); -/* 24 */ -EXTERN char * TclWinNoBackslash _ANSI_ARGS_((char * path)); -/* 25 */ -EXTERN TclPlatformType * TclWinGetPlatform _ANSI_ARGS_((void)); -/* 26 */ -EXTERN void TclWinSetInterfaces _ANSI_ARGS_((int wide)); -/* 27 */ -EXTERN void TclWinFlushDirtyChannels _ANSI_ARGS_((void)); -/* 28 */ -EXTERN void TclWinResetInterfaces _ANSI_ARGS_((void)); -#endif /* __WIN32__ */ -#ifdef MAC_TCL -/* 0 */ -EXTERN VOID * TclpSysAlloc _ANSI_ARGS_((long size, int isBin)); -/* 1 */ -EXTERN void TclpSysFree _ANSI_ARGS_((VOID * ptr)); -/* 2 */ -EXTERN VOID * TclpSysRealloc _ANSI_ARGS_((VOID * cp, - unsigned int size)); -/* 3 */ -EXTERN void TclpExit _ANSI_ARGS_((int status)); -/* 4 */ -EXTERN int FSpGetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); -/* 5 */ -EXTERN int FSpSetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); -/* 6 */ -EXTERN OSErr FSpFindFolder _ANSI_ARGS_((short vRefNum, - OSType folderType, Boolean createFolder, - FSSpec * spec)); -/* 7 */ -EXTERN void GetGlobalMouseTcl _ANSI_ARGS_((Point * mouse)); -/* 8 */ -EXTERN pascal OSErr FSpGetDirectoryIDTcl _ANSI_ARGS_(( - CONST FSSpec * spec, long * theDirID, - Boolean * isDirectory)); -/* 9 */ -EXTERN pascal short FSpOpenResFileCompatTcl _ANSI_ARGS_(( - CONST FSSpec * spec, SignedByte permission)); -/* 10 */ -EXTERN pascal void FSpCreateResFileCompatTcl _ANSI_ARGS_(( - CONST FSSpec * spec, OSType creator, - OSType fileType, ScriptCode scriptTag)); -/* 11 */ -EXTERN int FSpLocationFromPath _ANSI_ARGS_((int length, - CONST char * path, FSSpecPtr theSpec)); -/* 12 */ -EXTERN OSErr FSpPathFromLocation _ANSI_ARGS_((FSSpecPtr theSpec, - int * length, Handle * fullPath)); -/* 13 */ -EXTERN void TclMacExitHandler _ANSI_ARGS_((void)); -/* 14 */ -EXTERN void TclMacInitExitToShell _ANSI_ARGS_((int usePatch)); -/* 15 */ -EXTERN OSErr TclMacInstallExitToShellPatch _ANSI_ARGS_(( - ExitToShellProcPtr newProc)); -/* 16 */ -EXTERN int TclMacOSErrorToPosixError _ANSI_ARGS_((int error)); -/* 17 */ -EXTERN void TclMacRemoveTimer _ANSI_ARGS_((void * timerToken)); -/* 18 */ -EXTERN void * TclMacStartTimer _ANSI_ARGS_((long ms)); -/* 19 */ -EXTERN int TclMacTimerExpired _ANSI_ARGS_((void * timerToken)); -/* 20 */ -EXTERN int TclMacRegisterResourceFork _ANSI_ARGS_(( - short fileRef, Tcl_Obj * tokenPtr, - int insert)); -/* 21 */ -EXTERN short TclMacUnRegisterResourceFork _ANSI_ARGS_(( - char * tokenPtr, Tcl_Obj * resultPtr)); -/* 22 */ -EXTERN int TclMacCreateEnv _ANSI_ARGS_((void)); -/* 23 */ -EXTERN FILE * TclMacFOpenHack _ANSI_ARGS_((CONST char * path, - CONST char * mode)); -/* 24 */ -EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); -/* 25 */ -EXTERN int TclMacChmod _ANSI_ARGS_((CONST char * path, int mode)); -/* 26 */ -EXTERN int FSpLLocationFromPath _ANSI_ARGS_((int length, - CONST char * path, FSSpecPtr theSpec)); -#endif /* MAC_TCL */ - -typedef struct TclIntPlatStubs { - int magic; - struct TclIntPlatStubHooks *hooks; - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 0 */ - int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 1 */ - Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 2 */ - int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 3 */ - int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 4 */ - void *reserved5; - TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 6 */ - TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 7 */ - int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ - TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ - Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ - struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((CONST time_t * clock)); /* 11 */ - struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((CONST time_t * clock)); /* 12 */ - char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */ - void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */ - struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char * nm, CONST char * proto)); /* 2 */ - int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char FAR * optval, int FAR * optlen)); /* 3 */ - HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */ - void *reserved5; - u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */ - int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char FAR * optval, int optlen)); /* 7 */ - unsigned long (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */ - int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */ - void *reserved10; - void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 11 */ - int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */ - Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 13 */ - int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 14 */ - int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 15 */ - void *reserved16; - void *reserved17; - TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 18 */ - TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 19 */ - void (*tclWinAddProcess) _ANSI_ARGS_((HANDLE hProcess, DWORD id)); /* 20 */ - void *reserved21; - TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 22 */ - char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 23 */ - char * (*tclWinNoBackslash) _ANSI_ARGS_((char * path)); /* 24 */ - TclPlatformType * (*tclWinGetPlatform) _ANSI_ARGS_((void)); /* 25 */ - void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */ - void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */ - void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - VOID * (*tclpSysAlloc) _ANSI_ARGS_((long size, int isBin)); /* 0 */ - void (*tclpSysFree) _ANSI_ARGS_((VOID * ptr)); /* 1 */ - VOID * (*tclpSysRealloc) _ANSI_ARGS_((VOID * cp, unsigned int size)); /* 2 */ - void (*tclpExit) _ANSI_ARGS_((int status)); /* 3 */ - int (*fSpGetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 4 */ - int (*fSpSetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 5 */ - OSErr (*fSpFindFolder) _ANSI_ARGS_((short vRefNum, OSType folderType, Boolean createFolder, FSSpec * spec)); /* 6 */ - void (*getGlobalMouseTcl) _ANSI_ARGS_((Point * mouse)); /* 7 */ - pascal OSErr (*fSpGetDirectoryIDTcl) _ANSI_ARGS_((CONST FSSpec * spec, long * theDirID, Boolean * isDirectory)); /* 8 */ - pascal short (*fSpOpenResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, SignedByte permission)); /* 9 */ - pascal void (*fSpCreateResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, OSType creator, OSType fileType, ScriptCode scriptTag)); /* 10 */ - int (*fSpLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 11 */ - OSErr (*fSpPathFromLocation) _ANSI_ARGS_((FSSpecPtr theSpec, int * length, Handle * fullPath)); /* 12 */ - void (*tclMacExitHandler) _ANSI_ARGS_((void)); /* 13 */ - void (*tclMacInitExitToShell) _ANSI_ARGS_((int usePatch)); /* 14 */ - OSErr (*tclMacInstallExitToShellPatch) _ANSI_ARGS_((ExitToShellProcPtr newProc)); /* 15 */ - int (*tclMacOSErrorToPosixError) _ANSI_ARGS_((int error)); /* 16 */ - void (*tclMacRemoveTimer) _ANSI_ARGS_((void * timerToken)); /* 17 */ - void * (*tclMacStartTimer) _ANSI_ARGS_((long ms)); /* 18 */ - int (*tclMacTimerExpired) _ANSI_ARGS_((void * timerToken)); /* 19 */ - int (*tclMacRegisterResourceFork) _ANSI_ARGS_((short fileRef, Tcl_Obj * tokenPtr, int insert)); /* 20 */ - short (*tclMacUnRegisterResourceFork) _ANSI_ARGS_((char * tokenPtr, Tcl_Obj * resultPtr)); /* 21 */ - int (*tclMacCreateEnv) _ANSI_ARGS_((void)); /* 22 */ - FILE * (*tclMacFOpenHack) _ANSI_ARGS_((CONST char * path, CONST char * mode)); /* 23 */ - char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 24 */ - int (*tclMacChmod) _ANSI_ARGS_((CONST char * path, int mode)); /* 25 */ - int (*fSpLLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 26 */ -#endif /* MAC_TCL */ -} TclIntPlatStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclIntPlatStubs *tclIntPlatStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclGetAndDetachPids -#define TclGetAndDetachPids \ - (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 0 */ -#endif -#ifndef TclpCloseFile -#define TclpCloseFile \ - (tclIntPlatStubsPtr->tclpCloseFile) /* 1 */ -#endif -#ifndef TclpCreateCommandChannel -#define TclpCreateCommandChannel \ - (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 2 */ -#endif -#ifndef TclpCreatePipe -#define TclpCreatePipe \ - (tclIntPlatStubsPtr->tclpCreatePipe) /* 3 */ -#endif -#ifndef TclpCreateProcess -#define TclpCreateProcess \ - (tclIntPlatStubsPtr->tclpCreateProcess) /* 4 */ -#endif -/* Slot 5 is reserved */ -#ifndef TclpMakeFile -#define TclpMakeFile \ - (tclIntPlatStubsPtr->tclpMakeFile) /* 6 */ -#endif -#ifndef TclpOpenFile -#define TclpOpenFile \ - (tclIntPlatStubsPtr->tclpOpenFile) /* 7 */ -#endif -#ifndef TclUnixWaitForFile -#define TclUnixWaitForFile \ - (tclIntPlatStubsPtr->tclUnixWaitForFile) /* 8 */ -#endif -#ifndef TclpCreateTempFile -#define TclpCreateTempFile \ - (tclIntPlatStubsPtr->tclpCreateTempFile) /* 9 */ -#endif -#ifndef TclpReaddir -#define TclpReaddir \ - (tclIntPlatStubsPtr->tclpReaddir) /* 10 */ -#endif -#ifndef TclpLocaltime_unix -#define TclpLocaltime_unix \ - (tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */ -#endif -#ifndef TclpGmtime_unix -#define TclpGmtime_unix \ - (tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */ -#endif -#ifndef TclpInetNtoa -#define TclpInetNtoa \ - (tclIntPlatStubsPtr->tclpInetNtoa) /* 13 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclWinConvertError -#define TclWinConvertError \ - (tclIntPlatStubsPtr->tclWinConvertError) /* 0 */ -#endif -#ifndef TclWinConvertWSAError -#define TclWinConvertWSAError \ - (tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */ -#endif -#ifndef TclWinGetServByName -#define TclWinGetServByName \ - (tclIntPlatStubsPtr->tclWinGetServByName) /* 2 */ -#endif -#ifndef TclWinGetSockOpt -#define TclWinGetSockOpt \ - (tclIntPlatStubsPtr->tclWinGetSockOpt) /* 3 */ -#endif -#ifndef TclWinGetTclInstance -#define TclWinGetTclInstance \ - (tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */ -#endif -/* Slot 5 is reserved */ -#ifndef TclWinNToHS -#define TclWinNToHS \ - (tclIntPlatStubsPtr->tclWinNToHS) /* 6 */ -#endif -#ifndef TclWinSetSockOpt -#define TclWinSetSockOpt \ - (tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */ -#endif -#ifndef TclpGetPid -#define TclpGetPid \ - (tclIntPlatStubsPtr->tclpGetPid) /* 8 */ -#endif -#ifndef TclWinGetPlatformId -#define TclWinGetPlatformId \ - (tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */ -#endif -/* Slot 10 is reserved */ -#ifndef TclGetAndDetachPids -#define TclGetAndDetachPids \ - (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 11 */ -#endif -#ifndef TclpCloseFile -#define TclpCloseFile \ - (tclIntPlatStubsPtr->tclpCloseFile) /* 12 */ -#endif -#ifndef TclpCreateCommandChannel -#define TclpCreateCommandChannel \ - (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 13 */ -#endif -#ifndef TclpCreatePipe -#define TclpCreatePipe \ - (tclIntPlatStubsPtr->tclpCreatePipe) /* 14 */ -#endif -#ifndef TclpCreateProcess -#define TclpCreateProcess \ - (tclIntPlatStubsPtr->tclpCreateProcess) /* 15 */ -#endif -/* Slot 16 is reserved */ -/* Slot 17 is reserved */ -#ifndef TclpMakeFile -#define TclpMakeFile \ - (tclIntPlatStubsPtr->tclpMakeFile) /* 18 */ -#endif -#ifndef TclpOpenFile -#define TclpOpenFile \ - (tclIntPlatStubsPtr->tclpOpenFile) /* 19 */ -#endif -#ifndef TclWinAddProcess -#define TclWinAddProcess \ - (tclIntPlatStubsPtr->tclWinAddProcess) /* 20 */ -#endif -/* Slot 21 is reserved */ -#ifndef TclpCreateTempFile -#define TclpCreateTempFile \ - (tclIntPlatStubsPtr->tclpCreateTempFile) /* 22 */ -#endif -#ifndef TclpGetTZName -#define TclpGetTZName \ - (tclIntPlatStubsPtr->tclpGetTZName) /* 23 */ -#endif -#ifndef TclWinNoBackslash -#define TclWinNoBackslash \ - (tclIntPlatStubsPtr->tclWinNoBackslash) /* 24 */ -#endif -#ifndef TclWinGetPlatform -#define TclWinGetPlatform \ - (tclIntPlatStubsPtr->tclWinGetPlatform) /* 25 */ -#endif -#ifndef TclWinSetInterfaces -#define TclWinSetInterfaces \ - (tclIntPlatStubsPtr->tclWinSetInterfaces) /* 26 */ -#endif -#ifndef TclWinFlushDirtyChannels -#define TclWinFlushDirtyChannels \ - (tclIntPlatStubsPtr->tclWinFlushDirtyChannels) /* 27 */ -#endif -#ifndef TclWinResetInterfaces -#define TclWinResetInterfaces \ - (tclIntPlatStubsPtr->tclWinResetInterfaces) /* 28 */ -#endif -#endif /* __WIN32__ */ -#ifdef MAC_TCL -#ifndef TclpSysAlloc -#define TclpSysAlloc \ - (tclIntPlatStubsPtr->tclpSysAlloc) /* 0 */ -#endif -#ifndef TclpSysFree -#define TclpSysFree \ - (tclIntPlatStubsPtr->tclpSysFree) /* 1 */ -#endif -#ifndef TclpSysRealloc -#define TclpSysRealloc \ - (tclIntPlatStubsPtr->tclpSysRealloc) /* 2 */ -#endif -#ifndef TclpExit -#define TclpExit \ - (tclIntPlatStubsPtr->tclpExit) /* 3 */ -#endif -#ifndef FSpGetDefaultDir -#define FSpGetDefaultDir \ - (tclIntPlatStubsPtr->fSpGetDefaultDir) /* 4 */ -#endif -#ifndef FSpSetDefaultDir -#define FSpSetDefaultDir \ - (tclIntPlatStubsPtr->fSpSetDefaultDir) /* 5 */ -#endif -#ifndef FSpFindFolder -#define FSpFindFolder \ - (tclIntPlatStubsPtr->fSpFindFolder) /* 6 */ -#endif -#ifndef GetGlobalMouseTcl -#define GetGlobalMouseTcl \ - (tclIntPlatStubsPtr->getGlobalMouseTcl) /* 7 */ -#endif -#ifndef FSpGetDirectoryIDTcl -#define FSpGetDirectoryIDTcl \ - (tclIntPlatStubsPtr->fSpGetDirectoryIDTcl) /* 8 */ -#endif -#ifndef FSpOpenResFileCompatTcl -#define FSpOpenResFileCompatTcl \ - (tclIntPlatStubsPtr->fSpOpenResFileCompatTcl) /* 9 */ -#endif -#ifndef FSpCreateResFileCompatTcl -#define FSpCreateResFileCompatTcl \ - (tclIntPlatStubsPtr->fSpCreateResFileCompatTcl) /* 10 */ -#endif -#ifndef FSpLocationFromPath -#define FSpLocationFromPath \ - (tclIntPlatStubsPtr->fSpLocationFromPath) /* 11 */ -#endif -#ifndef FSpPathFromLocation -#define FSpPathFromLocation \ - (tclIntPlatStubsPtr->fSpPathFromLocation) /* 12 */ -#endif -#ifndef TclMacExitHandler -#define TclMacExitHandler \ - (tclIntPlatStubsPtr->tclMacExitHandler) /* 13 */ -#endif -#ifndef TclMacInitExitToShell -#define TclMacInitExitToShell \ - (tclIntPlatStubsPtr->tclMacInitExitToShell) /* 14 */ -#endif -#ifndef TclMacInstallExitToShellPatch -#define TclMacInstallExitToShellPatch \ - (tclIntPlatStubsPtr->tclMacInstallExitToShellPatch) /* 15 */ -#endif -#ifndef TclMacOSErrorToPosixError -#define TclMacOSErrorToPosixError \ - (tclIntPlatStubsPtr->tclMacOSErrorToPosixError) /* 16 */ -#endif -#ifndef TclMacRemoveTimer -#define TclMacRemoveTimer \ - (tclIntPlatStubsPtr->tclMacRemoveTimer) /* 17 */ -#endif -#ifndef TclMacStartTimer -#define TclMacStartTimer \ - (tclIntPlatStubsPtr->tclMacStartTimer) /* 18 */ -#endif -#ifndef TclMacTimerExpired -#define TclMacTimerExpired \ - (tclIntPlatStubsPtr->tclMacTimerExpired) /* 19 */ -#endif -#ifndef TclMacRegisterResourceFork -#define TclMacRegisterResourceFork \ - (tclIntPlatStubsPtr->tclMacRegisterResourceFork) /* 20 */ -#endif -#ifndef TclMacUnRegisterResourceFork -#define TclMacUnRegisterResourceFork \ - (tclIntPlatStubsPtr->tclMacUnRegisterResourceFork) /* 21 */ -#endif -#ifndef TclMacCreateEnv -#define TclMacCreateEnv \ - (tclIntPlatStubsPtr->tclMacCreateEnv) /* 22 */ -#endif -#ifndef TclMacFOpenHack -#define TclMacFOpenHack \ - (tclIntPlatStubsPtr->tclMacFOpenHack) /* 23 */ -#endif -#ifndef TclpGetTZName -#define TclpGetTZName \ - (tclIntPlatStubsPtr->tclpGetTZName) /* 24 */ -#endif -#ifndef TclMacChmod -#define TclMacChmod \ - (tclIntPlatStubsPtr->tclMacChmod) /* 25 */ -#endif -#ifndef FSpLLocationFromPath -#define FSpLLocationFromPath \ - (tclIntPlatStubsPtr->fSpLLocationFromPath) /* 26 */ -#endif -#endif /* MAC_TCL */ - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLINTPLATDECLS */ +/* + * tclIntPlatDecls.h -- + * + * This file contains the declarations for all platform dependent + * unsupported functions that are exported by the Tcl library. These + * interfaces are not guaranteed to remain the same between + * versions. Use at your own risk. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * All rights reserved. + * + * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.2 2004/05/17 14:26:49 kennykb Exp $ + */ + +#ifndef _TCLINTPLATDECLS +#define _TCLINTPLATDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tclInt.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 0 */ +EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 1 */ +EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); +/* 2 */ +EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( + TclFile readFile, TclFile writeFile, + TclFile errorFile, int numPids, + Tcl_Pid * pidPtr)); +/* 3 */ +EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, + TclFile * writePipe)); +/* 4 */ +EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + TclFile inputFile, TclFile outputFile, + TclFile errorFile, Tcl_Pid * pidPtr)); +/* Slot 5 is reserved */ +/* 6 */ +EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, + int direction)); +/* 7 */ +EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, + int mode)); +/* 8 */ +EXTERN int TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask, + int timeout)); +/* 9 */ +EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( + CONST char * contents)); +/* 10 */ +EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); +/* 11 */ +EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((TclpTime_t clock)); +/* 12 */ +EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((TclpTime_t clock)); +/* 13 */ +EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 0 */ +EXTERN void TclWinConvertError _ANSI_ARGS_((DWORD errCode)); +/* 1 */ +EXTERN void TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode)); +/* 2 */ +EXTERN struct servent * TclWinGetServByName _ANSI_ARGS_((CONST char * nm, + CONST char * proto)); +/* 3 */ +EXTERN int TclWinGetSockOpt _ANSI_ARGS_((SOCKET s, int level, + int optname, char FAR * optval, + int FAR * optlen)); +/* 4 */ +EXTERN HINSTANCE TclWinGetTclInstance _ANSI_ARGS_((void)); +/* Slot 5 is reserved */ +/* 6 */ +EXTERN u_short TclWinNToHS _ANSI_ARGS_((u_short ns)); +/* 7 */ +EXTERN int TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level, + int optname, CONST char FAR * optval, + int optlen)); +/* 8 */ +EXTERN unsigned long TclpGetPid _ANSI_ARGS_((Tcl_Pid pid)); +/* 9 */ +EXTERN int TclWinGetPlatformId _ANSI_ARGS_((void)); +/* Slot 10 is reserved */ +/* 11 */ +EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 12 */ +EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); +/* 13 */ +EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( + TclFile readFile, TclFile writeFile, + TclFile errorFile, int numPids, + Tcl_Pid * pidPtr)); +/* 14 */ +EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, + TclFile * writePipe)); +/* 15 */ +EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + TclFile inputFile, TclFile outputFile, + TclFile errorFile, Tcl_Pid * pidPtr)); +/* Slot 16 is reserved */ +/* Slot 17 is reserved */ +/* 18 */ +EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, + int direction)); +/* 19 */ +EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, + int mode)); +/* 20 */ +EXTERN void TclWinAddProcess _ANSI_ARGS_((HANDLE hProcess, + DWORD id)); +/* Slot 21 is reserved */ +/* 22 */ +EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( + CONST char * contents)); +/* 23 */ +EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); +/* 24 */ +EXTERN char * TclWinNoBackslash _ANSI_ARGS_((char * path)); +/* 25 */ +EXTERN TclPlatformType * TclWinGetPlatform _ANSI_ARGS_((void)); +/* 26 */ +EXTERN void TclWinSetInterfaces _ANSI_ARGS_((int wide)); +/* 27 */ +EXTERN void TclWinFlushDirtyChannels _ANSI_ARGS_((void)); +/* 28 */ +EXTERN void TclWinResetInterfaces _ANSI_ARGS_((void)); +#endif /* __WIN32__ */ +#ifdef MAC_TCL +/* 0 */ +EXTERN VOID * TclpSysAlloc _ANSI_ARGS_((long size, int isBin)); +/* 1 */ +EXTERN void TclpSysFree _ANSI_ARGS_((VOID * ptr)); +/* 2 */ +EXTERN VOID * TclpSysRealloc _ANSI_ARGS_((VOID * cp, + unsigned int size)); +/* 3 */ +EXTERN void TclpExit _ANSI_ARGS_((int status)); +/* 4 */ +EXTERN int FSpGetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); +/* 5 */ +EXTERN int FSpSetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); +/* 6 */ +EXTERN OSErr FSpFindFolder _ANSI_ARGS_((short vRefNum, + OSType folderType, Boolean createFolder, + FSSpec * spec)); +/* 7 */ +EXTERN void GetGlobalMouseTcl _ANSI_ARGS_((Point * mouse)); +/* 8 */ +EXTERN pascal OSErr FSpGetDirectoryIDTcl _ANSI_ARGS_(( + CONST FSSpec * spec, long * theDirID, + Boolean * isDirectory)); +/* 9 */ +EXTERN pascal short FSpOpenResFileCompatTcl _ANSI_ARGS_(( + CONST FSSpec * spec, SignedByte permission)); +/* 10 */ +EXTERN pascal void FSpCreateResFileCompatTcl _ANSI_ARGS_(( + CONST FSSpec * spec, OSType creator, + OSType fileType, ScriptCode scriptTag)); +/* 11 */ +EXTERN int FSpLocationFromPath _ANSI_ARGS_((int length, + CONST char * path, FSSpecPtr theSpec)); +/* 12 */ +EXTERN OSErr FSpPathFromLocation _ANSI_ARGS_((FSSpecPtr theSpec, + int * length, Handle * fullPath)); +/* 13 */ +EXTERN void TclMacExitHandler _ANSI_ARGS_((void)); +/* 14 */ +EXTERN void TclMacInitExitToShell _ANSI_ARGS_((int usePatch)); +/* 15 */ +EXTERN OSErr TclMacInstallExitToShellPatch _ANSI_ARGS_(( + ExitToShellProcPtr newProc)); +/* 16 */ +EXTERN int TclMacOSErrorToPosixError _ANSI_ARGS_((int error)); +/* 17 */ +EXTERN void TclMacRemoveTimer _ANSI_ARGS_((void * timerToken)); +/* 18 */ +EXTERN void * TclMacStartTimer _ANSI_ARGS_((long ms)); +/* 19 */ +EXTERN int TclMacTimerExpired _ANSI_ARGS_((void * timerToken)); +/* 20 */ +EXTERN int TclMacRegisterResourceFork _ANSI_ARGS_(( + short fileRef, Tcl_Obj * tokenPtr, + int insert)); +/* 21 */ +EXTERN short TclMacUnRegisterResourceFork _ANSI_ARGS_(( + char * tokenPtr, Tcl_Obj * resultPtr)); +/* 22 */ +EXTERN int TclMacCreateEnv _ANSI_ARGS_((void)); +/* 23 */ +EXTERN FILE * TclMacFOpenHack _ANSI_ARGS_((CONST char * path, + CONST char * mode)); +/* 24 */ +EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); +/* 25 */ +EXTERN int TclMacChmod _ANSI_ARGS_((CONST char * path, int mode)); +/* 26 */ +EXTERN int FSpLLocationFromPath _ANSI_ARGS_((int length, + CONST char * path, FSSpecPtr theSpec)); +#endif /* MAC_TCL */ + +typedef struct TclIntPlatStubs { + int magic; + struct TclIntPlatStubHooks *hooks; + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 0 */ + int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 1 */ + Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 2 */ + int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 3 */ + int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 4 */ + void *reserved5; + TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 6 */ + TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 7 */ + int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ + TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ + Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ + struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 11 */ + struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 12 */ + char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */ + void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */ + struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char * nm, CONST char * proto)); /* 2 */ + int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char FAR * optval, int FAR * optlen)); /* 3 */ + HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */ + void *reserved5; + u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */ + int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char FAR * optval, int optlen)); /* 7 */ + unsigned long (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */ + int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */ + void *reserved10; + void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 11 */ + int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */ + Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 13 */ + int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 14 */ + int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 15 */ + void *reserved16; + void *reserved17; + TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 18 */ + TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 19 */ + void (*tclWinAddProcess) _ANSI_ARGS_((HANDLE hProcess, DWORD id)); /* 20 */ + void *reserved21; + TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 22 */ + char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 23 */ + char * (*tclWinNoBackslash) _ANSI_ARGS_((char * path)); /* 24 */ + TclPlatformType * (*tclWinGetPlatform) _ANSI_ARGS_((void)); /* 25 */ + void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */ + void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */ + void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + VOID * (*tclpSysAlloc) _ANSI_ARGS_((long size, int isBin)); /* 0 */ + void (*tclpSysFree) _ANSI_ARGS_((VOID * ptr)); /* 1 */ + VOID * (*tclpSysRealloc) _ANSI_ARGS_((VOID * cp, unsigned int size)); /* 2 */ + void (*tclpExit) _ANSI_ARGS_((int status)); /* 3 */ + int (*fSpGetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 4 */ + int (*fSpSetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 5 */ + OSErr (*fSpFindFolder) _ANSI_ARGS_((short vRefNum, OSType folderType, Boolean createFolder, FSSpec * spec)); /* 6 */ + void (*getGlobalMouseTcl) _ANSI_ARGS_((Point * mouse)); /* 7 */ + pascal OSErr (*fSpGetDirectoryIDTcl) _ANSI_ARGS_((CONST FSSpec * spec, long * theDirID, Boolean * isDirectory)); /* 8 */ + pascal short (*fSpOpenResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, SignedByte permission)); /* 9 */ + pascal void (*fSpCreateResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, OSType creator, OSType fileType, ScriptCode scriptTag)); /* 10 */ + int (*fSpLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 11 */ + OSErr (*fSpPathFromLocation) _ANSI_ARGS_((FSSpecPtr theSpec, int * length, Handle * fullPath)); /* 12 */ + void (*tclMacExitHandler) _ANSI_ARGS_((void)); /* 13 */ + void (*tclMacInitExitToShell) _ANSI_ARGS_((int usePatch)); /* 14 */ + OSErr (*tclMacInstallExitToShellPatch) _ANSI_ARGS_((ExitToShellProcPtr newProc)); /* 15 */ + int (*tclMacOSErrorToPosixError) _ANSI_ARGS_((int error)); /* 16 */ + void (*tclMacRemoveTimer) _ANSI_ARGS_((void * timerToken)); /* 17 */ + void * (*tclMacStartTimer) _ANSI_ARGS_((long ms)); /* 18 */ + int (*tclMacTimerExpired) _ANSI_ARGS_((void * timerToken)); /* 19 */ + int (*tclMacRegisterResourceFork) _ANSI_ARGS_((short fileRef, Tcl_Obj * tokenPtr, int insert)); /* 20 */ + short (*tclMacUnRegisterResourceFork) _ANSI_ARGS_((char * tokenPtr, Tcl_Obj * resultPtr)); /* 21 */ + int (*tclMacCreateEnv) _ANSI_ARGS_((void)); /* 22 */ + FILE * (*tclMacFOpenHack) _ANSI_ARGS_((CONST char * path, CONST char * mode)); /* 23 */ + char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 24 */ + int (*tclMacChmod) _ANSI_ARGS_((CONST char * path, int mode)); /* 25 */ + int (*fSpLLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 26 */ +#endif /* MAC_TCL */ +} TclIntPlatStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclIntPlatStubs *tclIntPlatStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclGetAndDetachPids +#define TclGetAndDetachPids \ + (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 0 */ +#endif +#ifndef TclpCloseFile +#define TclpCloseFile \ + (tclIntPlatStubsPtr->tclpCloseFile) /* 1 */ +#endif +#ifndef TclpCreateCommandChannel +#define TclpCreateCommandChannel \ + (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 2 */ +#endif +#ifndef TclpCreatePipe +#define TclpCreatePipe \ + (tclIntPlatStubsPtr->tclpCreatePipe) /* 3 */ +#endif +#ifndef TclpCreateProcess +#define TclpCreateProcess \ + (tclIntPlatStubsPtr->tclpCreateProcess) /* 4 */ +#endif +/* Slot 5 is reserved */ +#ifndef TclpMakeFile +#define TclpMakeFile \ + (tclIntPlatStubsPtr->tclpMakeFile) /* 6 */ +#endif +#ifndef TclpOpenFile +#define TclpOpenFile \ + (tclIntPlatStubsPtr->tclpOpenFile) /* 7 */ +#endif +#ifndef TclUnixWaitForFile +#define TclUnixWaitForFile \ + (tclIntPlatStubsPtr->tclUnixWaitForFile) /* 8 */ +#endif +#ifndef TclpCreateTempFile +#define TclpCreateTempFile \ + (tclIntPlatStubsPtr->tclpCreateTempFile) /* 9 */ +#endif +#ifndef TclpReaddir +#define TclpReaddir \ + (tclIntPlatStubsPtr->tclpReaddir) /* 10 */ +#endif +#ifndef TclpLocaltime_unix +#define TclpLocaltime_unix \ + (tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */ +#endif +#ifndef TclpGmtime_unix +#define TclpGmtime_unix \ + (tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */ +#endif +#ifndef TclpInetNtoa +#define TclpInetNtoa \ + (tclIntPlatStubsPtr->tclpInetNtoa) /* 13 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclWinConvertError +#define TclWinConvertError \ + (tclIntPlatStubsPtr->tclWinConvertError) /* 0 */ +#endif +#ifndef TclWinConvertWSAError +#define TclWinConvertWSAError \ + (tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */ +#endif +#ifndef TclWinGetServByName +#define TclWinGetServByName \ + (tclIntPlatStubsPtr->tclWinGetServByName) /* 2 */ +#endif +#ifndef TclWinGetSockOpt +#define TclWinGetSockOpt \ + (tclIntPlatStubsPtr->tclWinGetSockOpt) /* 3 */ +#endif +#ifndef TclWinGetTclInstance +#define TclWinGetTclInstance \ + (tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */ +#endif +/* Slot 5 is reserved */ +#ifndef TclWinNToHS +#define TclWinNToHS \ + (tclIntPlatStubsPtr->tclWinNToHS) /* 6 */ +#endif +#ifndef TclWinSetSockOpt +#define TclWinSetSockOpt \ + (tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */ +#endif +#ifndef TclpGetPid +#define TclpGetPid \ + (tclIntPlatStubsPtr->tclpGetPid) /* 8 */ +#endif +#ifndef TclWinGetPlatformId +#define TclWinGetPlatformId \ + (tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */ +#endif +/* Slot 10 is reserved */ +#ifndef TclGetAndDetachPids +#define TclGetAndDetachPids \ + (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 11 */ +#endif +#ifndef TclpCloseFile +#define TclpCloseFile \ + (tclIntPlatStubsPtr->tclpCloseFile) /* 12 */ +#endif +#ifndef TclpCreateCommandChannel +#define TclpCreateCommandChannel \ + (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 13 */ +#endif +#ifndef TclpCreatePipe +#define TclpCreatePipe \ + (tclIntPlatStubsPtr->tclpCreatePipe) /* 14 */ +#endif +#ifndef TclpCreateProcess +#define TclpCreateProcess \ + (tclIntPlatStubsPtr->tclpCreateProcess) /* 15 */ +#endif +/* Slot 16 is reserved */ +/* Slot 17 is reserved */ +#ifndef TclpMakeFile +#define TclpMakeFile \ + (tclIntPlatStubsPtr->tclpMakeFile) /* 18 */ +#endif +#ifndef TclpOpenFile +#define TclpOpenFile \ + (tclIntPlatStubsPtr->tclpOpenFile) /* 19 */ +#endif +#ifndef TclWinAddProcess +#define TclWinAddProcess \ + (tclIntPlatStubsPtr->tclWinAddProcess) /* 20 */ +#endif +/* Slot 21 is reserved */ +#ifndef TclpCreateTempFile +#define TclpCreateTempFile \ + (tclIntPlatStubsPtr->tclpCreateTempFile) /* 22 */ +#endif +#ifndef TclpGetTZName +#define TclpGetTZName \ + (tclIntPlatStubsPtr->tclpGetTZName) /* 23 */ +#endif +#ifndef TclWinNoBackslash +#define TclWinNoBackslash \ + (tclIntPlatStubsPtr->tclWinNoBackslash) /* 24 */ +#endif +#ifndef TclWinGetPlatform +#define TclWinGetPlatform \ + (tclIntPlatStubsPtr->tclWinGetPlatform) /* 25 */ +#endif +#ifndef TclWinSetInterfaces +#define TclWinSetInterfaces \ + (tclIntPlatStubsPtr->tclWinSetInterfaces) /* 26 */ +#endif +#ifndef TclWinFlushDirtyChannels +#define TclWinFlushDirtyChannels \ + (tclIntPlatStubsPtr->tclWinFlushDirtyChannels) /* 27 */ +#endif +#ifndef TclWinResetInterfaces +#define TclWinResetInterfaces \ + (tclIntPlatStubsPtr->tclWinResetInterfaces) /* 28 */ +#endif +#endif /* __WIN32__ */ +#ifdef MAC_TCL +#ifndef TclpSysAlloc +#define TclpSysAlloc \ + (tclIntPlatStubsPtr->tclpSysAlloc) /* 0 */ +#endif +#ifndef TclpSysFree +#define TclpSysFree \ + (tclIntPlatStubsPtr->tclpSysFree) /* 1 */ +#endif +#ifndef TclpSysRealloc +#define TclpSysRealloc \ + (tclIntPlatStubsPtr->tclpSysRealloc) /* 2 */ +#endif +#ifndef TclpExit +#define TclpExit \ + (tclIntPlatStubsPtr->tclpExit) /* 3 */ +#endif +#ifndef FSpGetDefaultDir +#define FSpGetDefaultDir \ + (tclIntPlatStubsPtr->fSpGetDefaultDir) /* 4 */ +#endif +#ifndef FSpSetDefaultDir +#define FSpSetDefaultDir \ + (tclIntPlatStubsPtr->fSpSetDefaultDir) /* 5 */ +#endif +#ifndef FSpFindFolder +#define FSpFindFolder \ + (tclIntPlatStubsPtr->fSpFindFolder) /* 6 */ +#endif +#ifndef GetGlobalMouseTcl +#define GetGlobalMouseTcl \ + (tclIntPlatStubsPtr->getGlobalMouseTcl) /* 7 */ +#endif +#ifndef FSpGetDirectoryIDTcl +#define FSpGetDirectoryIDTcl \ + (tclIntPlatStubsPtr->fSpGetDirectoryIDTcl) /* 8 */ +#endif +#ifndef FSpOpenResFileCompatTcl +#define FSpOpenResFileCompatTcl \ + (tclIntPlatStubsPtr->fSpOpenResFileCompatTcl) /* 9 */ +#endif +#ifndef FSpCreateResFileCompatTcl +#define FSpCreateResFileCompatTcl \ + (tclIntPlatStubsPtr->fSpCreateResFileCompatTcl) /* 10 */ +#endif +#ifndef FSpLocationFromPath +#define FSpLocationFromPath \ + (tclIntPlatStubsPtr->fSpLocationFromPath) /* 11 */ +#endif +#ifndef FSpPathFromLocation +#define FSpPathFromLocation \ + (tclIntPlatStubsPtr->fSpPathFromLocation) /* 12 */ +#endif +#ifndef TclMacExitHandler +#define TclMacExitHandler \ + (tclIntPlatStubsPtr->tclMacExitHandler) /* 13 */ +#endif +#ifndef TclMacInitExitToShell +#define TclMacInitExitToShell \ + (tclIntPlatStubsPtr->tclMacInitExitToShell) /* 14 */ +#endif +#ifndef TclMacInstallExitToShellPatch +#define TclMacInstallExitToShellPatch \ + (tclIntPlatStubsPtr->tclMacInstallExitToShellPatch) /* 15 */ +#endif +#ifndef TclMacOSErrorToPosixError +#define TclMacOSErrorToPosixError \ + (tclIntPlatStubsPtr->tclMacOSErrorToPosixError) /* 16 */ +#endif +#ifndef TclMacRemoveTimer +#define TclMacRemoveTimer \ + (tclIntPlatStubsPtr->tclMacRemoveTimer) /* 17 */ +#endif +#ifndef TclMacStartTimer +#define TclMacStartTimer \ + (tclIntPlatStubsPtr->tclMacStartTimer) /* 18 */ +#endif +#ifndef TclMacTimerExpired +#define TclMacTimerExpired \ + (tclIntPlatStubsPtr->tclMacTimerExpired) /* 19 */ +#endif +#ifndef TclMacRegisterResourceFork +#define TclMacRegisterResourceFork \ + (tclIntPlatStubsPtr->tclMacRegisterResourceFork) /* 20 */ +#endif +#ifndef TclMacUnRegisterResourceFork +#define TclMacUnRegisterResourceFork \ + (tclIntPlatStubsPtr->tclMacUnRegisterResourceFork) /* 21 */ +#endif +#ifndef TclMacCreateEnv +#define TclMacCreateEnv \ + (tclIntPlatStubsPtr->tclMacCreateEnv) /* 22 */ +#endif +#ifndef TclMacFOpenHack +#define TclMacFOpenHack \ + (tclIntPlatStubsPtr->tclMacFOpenHack) /* 23 */ +#endif +#ifndef TclpGetTZName +#define TclpGetTZName \ + (tclIntPlatStubsPtr->tclpGetTZName) /* 24 */ +#endif +#ifndef TclMacChmod +#define TclMacChmod \ + (tclIntPlatStubsPtr->tclMacChmod) /* 25 */ +#endif +#ifndef FSpLLocationFromPath +#define FSpLLocationFromPath \ + (tclIntPlatStubsPtr->fSpLLocationFromPath) /* 26 */ +#endif +#endif /* MAC_TCL */ + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLINTPLATDECLS */ diff --git a/generic/tclPlatDecls.h b/generic/tclPlatDecls.h index 6067217..d621b7d 100644 --- a/generic/tclPlatDecls.h +++ b/generic/tclPlatDecls.h @@ -1,197 +1,197 @@ -/* - * tclPlatDecls.h -- - * - * Declarations of platform specific Tcl APIs. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * All rights reserved. - * - * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.1 2003/05/13 08:41:26 das Exp $ - */ - -#ifndef _TCLPLATDECLS -#define _TCLPLATDECLS - -/* - * Pull in the typedef of TCHAR for windows. - */ -#if defined(__CYGWIN__) - typedef char TCHAR; -#elif defined(__WIN32__) && !defined(_TCHAR_DEFINED) -# include -# ifndef _TCHAR_DEFINED - /* Borland seems to forget to set this. */ - typedef _TCHAR TCHAR; -# define _TCHAR_DEFINED -# endif -# if defined(_MSC_VER) && defined(__STDC__) - /* MSVC++ misses this. */ - typedef _TCHAR TCHAR; -# endif -#endif - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -#ifdef __WIN32__ -/* 0 */ -EXTERN TCHAR * Tcl_WinUtfToTChar _ANSI_ARGS_((CONST char * str, - int len, Tcl_DString * dsPtr)); -/* 1 */ -EXTERN char * Tcl_WinTCharToUtf _ANSI_ARGS_((CONST TCHAR * str, - int len, Tcl_DString * dsPtr)); -#endif /* __WIN32__ */ -#ifdef MAC_TCL -/* 0 */ -EXTERN void Tcl_MacSetEventProc _ANSI_ARGS_(( - Tcl_MacConvertEventPtr procPtr)); -/* 1 */ -EXTERN char * Tcl_MacConvertTextResource _ANSI_ARGS_(( - Handle resource)); -/* 2 */ -EXTERN int Tcl_MacEvalResource _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * resourceName, - int resourceNumber, CONST char * fileName)); -/* 3 */ -EXTERN Handle Tcl_MacFindResource _ANSI_ARGS_((Tcl_Interp * interp, - long resourceType, CONST char * resourceName, - int resourceNumber, CONST char * resFileRef, - int * releaseIt)); -/* 4 */ -EXTERN int Tcl_GetOSTypeFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - OSType * osTypePtr)); -/* 5 */ -EXTERN void Tcl_SetOSTypeObj _ANSI_ARGS_((Tcl_Obj * objPtr, - OSType osType)); -/* 6 */ -EXTERN Tcl_Obj * Tcl_NewOSTypeObj _ANSI_ARGS_((OSType osType)); -/* 7 */ -EXTERN int strncasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, size_t n)); -/* 8 */ -EXTERN int strcasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2)); -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL -/* 0 */ -EXTERN int Tcl_MacOSXOpenBundleResources _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * bundleName, - int hasResourceFile, int maxPathLen, - char * libraryPath)); -/* 1 */ -EXTERN int Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * bundleName, - CONST char * bundleVersion, - int hasResourceFile, int maxPathLen, - char * libraryPath)); -#endif /* MAC_OSX_TCL */ - -typedef struct TclPlatStubs { - int magic; - struct TclPlatStubHooks *hooks; - -#ifdef __WIN32__ - TCHAR * (*tcl_WinUtfToTChar) _ANSI_ARGS_((CONST char * str, int len, Tcl_DString * dsPtr)); /* 0 */ - char * (*tcl_WinTCharToUtf) _ANSI_ARGS_((CONST TCHAR * str, int len, Tcl_DString * dsPtr)); /* 1 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void (*tcl_MacSetEventProc) _ANSI_ARGS_((Tcl_MacConvertEventPtr procPtr)); /* 0 */ - char * (*tcl_MacConvertTextResource) _ANSI_ARGS_((Handle resource)); /* 1 */ - int (*tcl_MacEvalResource) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * resourceName, int resourceNumber, CONST char * fileName)); /* 2 */ - Handle (*tcl_MacFindResource) _ANSI_ARGS_((Tcl_Interp * interp, long resourceType, CONST char * resourceName, int resourceNumber, CONST char * resFileRef, int * releaseIt)); /* 3 */ - int (*tcl_GetOSTypeFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, OSType * osTypePtr)); /* 4 */ - void (*tcl_SetOSTypeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, OSType osType)); /* 5 */ - Tcl_Obj * (*tcl_NewOSTypeObj) _ANSI_ARGS_((OSType osType)); /* 6 */ - int (*strncasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, size_t n)); /* 7 */ - int (*strcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2)); /* 8 */ -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL - int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */ - int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */ -#endif /* MAC_OSX_TCL */ -} TclPlatStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclPlatStubs *tclPlatStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#ifdef __WIN32__ -#ifndef Tcl_WinUtfToTChar -#define Tcl_WinUtfToTChar \ - (tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */ -#endif -#ifndef Tcl_WinTCharToUtf -#define Tcl_WinTCharToUtf \ - (tclPlatStubsPtr->tcl_WinTCharToUtf) /* 1 */ -#endif -#endif /* __WIN32__ */ -#ifdef MAC_TCL -#ifndef Tcl_MacSetEventProc -#define Tcl_MacSetEventProc \ - (tclPlatStubsPtr->tcl_MacSetEventProc) /* 0 */ -#endif -#ifndef Tcl_MacConvertTextResource -#define Tcl_MacConvertTextResource \ - (tclPlatStubsPtr->tcl_MacConvertTextResource) /* 1 */ -#endif -#ifndef Tcl_MacEvalResource -#define Tcl_MacEvalResource \ - (tclPlatStubsPtr->tcl_MacEvalResource) /* 2 */ -#endif -#ifndef Tcl_MacFindResource -#define Tcl_MacFindResource \ - (tclPlatStubsPtr->tcl_MacFindResource) /* 3 */ -#endif -#ifndef Tcl_GetOSTypeFromObj -#define Tcl_GetOSTypeFromObj \ - (tclPlatStubsPtr->tcl_GetOSTypeFromObj) /* 4 */ -#endif -#ifndef Tcl_SetOSTypeObj -#define Tcl_SetOSTypeObj \ - (tclPlatStubsPtr->tcl_SetOSTypeObj) /* 5 */ -#endif -#ifndef Tcl_NewOSTypeObj -#define Tcl_NewOSTypeObj \ - (tclPlatStubsPtr->tcl_NewOSTypeObj) /* 6 */ -#endif -#ifndef strncasecmp -#define strncasecmp \ - (tclPlatStubsPtr->strncasecmp) /* 7 */ -#endif -#ifndef strcasecmp -#define strcasecmp \ - (tclPlatStubsPtr->strcasecmp) /* 8 */ -#endif -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL -#ifndef Tcl_MacOSXOpenBundleResources -#define Tcl_MacOSXOpenBundleResources \ - (tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */ -#endif -#ifndef Tcl_MacOSXOpenVersionedBundleResources -#define Tcl_MacOSXOpenVersionedBundleResources \ - (tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */ -#endif -#endif /* MAC_OSX_TCL */ - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLPLATDECLS */ - - +/* + * tclPlatDecls.h -- + * + * Declarations of platform specific Tcl APIs. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * All rights reserved. + * + * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.2 2004/05/17 14:26:49 kennykb Exp $ + */ + +#ifndef _TCLPLATDECLS +#define _TCLPLATDECLS + +/* + * Pull in the typedef of TCHAR for windows. + */ +#if defined(__CYGWIN__) + typedef char TCHAR; +#elif defined(__WIN32__) && !defined(_TCHAR_DEFINED) +# include +# ifndef _TCHAR_DEFINED + /* Borland seems to forget to set this. */ + typedef _TCHAR TCHAR; +# define _TCHAR_DEFINED +# endif +# if defined(_MSC_VER) && defined(__STDC__) + /* MSVC++ misses this. */ + typedef _TCHAR TCHAR; +# endif +#endif + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +#ifdef __WIN32__ +/* 0 */ +EXTERN TCHAR * Tcl_WinUtfToTChar _ANSI_ARGS_((CONST char * str, + int len, Tcl_DString * dsPtr)); +/* 1 */ +EXTERN char * Tcl_WinTCharToUtf _ANSI_ARGS_((CONST TCHAR * str, + int len, Tcl_DString * dsPtr)); +#endif /* __WIN32__ */ +#ifdef MAC_TCL +/* 0 */ +EXTERN void Tcl_MacSetEventProc _ANSI_ARGS_(( + Tcl_MacConvertEventPtr procPtr)); +/* 1 */ +EXTERN char * Tcl_MacConvertTextResource _ANSI_ARGS_(( + Handle resource)); +/* 2 */ +EXTERN int Tcl_MacEvalResource _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * resourceName, + int resourceNumber, CONST char * fileName)); +/* 3 */ +EXTERN Handle Tcl_MacFindResource _ANSI_ARGS_((Tcl_Interp * interp, + long resourceType, CONST char * resourceName, + int resourceNumber, CONST char * resFileRef, + int * releaseIt)); +/* 4 */ +EXTERN int Tcl_GetOSTypeFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + OSType * osTypePtr)); +/* 5 */ +EXTERN void Tcl_SetOSTypeObj _ANSI_ARGS_((Tcl_Obj * objPtr, + OSType osType)); +/* 6 */ +EXTERN Tcl_Obj * Tcl_NewOSTypeObj _ANSI_ARGS_((OSType osType)); +/* 7 */ +EXTERN int strncasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, size_t n)); +/* 8 */ +EXTERN int strcasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2)); +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL +/* 0 */ +EXTERN int Tcl_MacOSXOpenBundleResources _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * bundleName, + int hasResourceFile, int maxPathLen, + char * libraryPath)); +/* 1 */ +EXTERN int Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * bundleName, + CONST char * bundleVersion, + int hasResourceFile, int maxPathLen, + char * libraryPath)); +#endif /* MAC_OSX_TCL */ + +typedef struct TclPlatStubs { + int magic; + struct TclPlatStubHooks *hooks; + +#ifdef __WIN32__ + TCHAR * (*tcl_WinUtfToTChar) _ANSI_ARGS_((CONST char * str, int len, Tcl_DString * dsPtr)); /* 0 */ + char * (*tcl_WinTCharToUtf) _ANSI_ARGS_((CONST TCHAR * str, int len, Tcl_DString * dsPtr)); /* 1 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void (*tcl_MacSetEventProc) _ANSI_ARGS_((Tcl_MacConvertEventPtr procPtr)); /* 0 */ + char * (*tcl_MacConvertTextResource) _ANSI_ARGS_((Handle resource)); /* 1 */ + int (*tcl_MacEvalResource) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * resourceName, int resourceNumber, CONST char * fileName)); /* 2 */ + Handle (*tcl_MacFindResource) _ANSI_ARGS_((Tcl_Interp * interp, long resourceType, CONST char * resourceName, int resourceNumber, CONST char * resFileRef, int * releaseIt)); /* 3 */ + int (*tcl_GetOSTypeFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, OSType * osTypePtr)); /* 4 */ + void (*tcl_SetOSTypeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, OSType osType)); /* 5 */ + Tcl_Obj * (*tcl_NewOSTypeObj) _ANSI_ARGS_((OSType osType)); /* 6 */ + int (*strncasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, size_t n)); /* 7 */ + int (*strcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2)); /* 8 */ +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL + int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */ + int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */ +#endif /* MAC_OSX_TCL */ +} TclPlatStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclPlatStubs *tclPlatStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#ifdef __WIN32__ +#ifndef Tcl_WinUtfToTChar +#define Tcl_WinUtfToTChar \ + (tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */ +#endif +#ifndef Tcl_WinTCharToUtf +#define Tcl_WinTCharToUtf \ + (tclPlatStubsPtr->tcl_WinTCharToUtf) /* 1 */ +#endif +#endif /* __WIN32__ */ +#ifdef MAC_TCL +#ifndef Tcl_MacSetEventProc +#define Tcl_MacSetEventProc \ + (tclPlatStubsPtr->tcl_MacSetEventProc) /* 0 */ +#endif +#ifndef Tcl_MacConvertTextResource +#define Tcl_MacConvertTextResource \ + (tclPlatStubsPtr->tcl_MacConvertTextResource) /* 1 */ +#endif +#ifndef Tcl_MacEvalResource +#define Tcl_MacEvalResource \ + (tclPlatStubsPtr->tcl_MacEvalResource) /* 2 */ +#endif +#ifndef Tcl_MacFindResource +#define Tcl_MacFindResource \ + (tclPlatStubsPtr->tcl_MacFindResource) /* 3 */ +#endif +#ifndef Tcl_GetOSTypeFromObj +#define Tcl_GetOSTypeFromObj \ + (tclPlatStubsPtr->tcl_GetOSTypeFromObj) /* 4 */ +#endif +#ifndef Tcl_SetOSTypeObj +#define Tcl_SetOSTypeObj \ + (tclPlatStubsPtr->tcl_SetOSTypeObj) /* 5 */ +#endif +#ifndef Tcl_NewOSTypeObj +#define Tcl_NewOSTypeObj \ + (tclPlatStubsPtr->tcl_NewOSTypeObj) /* 6 */ +#endif +#ifndef strncasecmp +#define strncasecmp \ + (tclPlatStubsPtr->strncasecmp) /* 7 */ +#endif +#ifndef strcasecmp +#define strcasecmp \ + (tclPlatStubsPtr->strcasecmp) /* 8 */ +#endif +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL +#ifndef Tcl_MacOSXOpenBundleResources +#define Tcl_MacOSXOpenBundleResources \ + (tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */ +#endif +#ifndef Tcl_MacOSXOpenVersionedBundleResources +#define Tcl_MacOSXOpenVersionedBundleResources \ + (tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */ +#endif +#endif /* MAC_OSX_TCL */ + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLPLATDECLS */ + + diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index 238a559..ef8bbb3 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -1,941 +1,941 @@ -/* - * tclStubInit.c -- - * - * This file contains the initializers for the Tcl stub vectors. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.3 2004/05/14 21:41:11 kennykb Exp $ - */ - -#include "tclInt.h" -#include "tclPort.h" - -/* - * Remove macros that will interfere with the definitions below. - */ - -#undef Tcl_Alloc -#undef Tcl_Free -#undef Tcl_Realloc -#undef Tcl_NewBooleanObj -#undef Tcl_NewByteArrayObj -#undef Tcl_NewDoubleObj -#undef Tcl_NewIntObj -#undef Tcl_NewListObj -#undef Tcl_NewLongObj -#undef Tcl_NewObj -#undef Tcl_NewStringObj -#undef Tcl_DumpActiveMemory -#undef Tcl_ValidateAllMemory -#if TCL_PRESERVE_BINARY_COMPATABILITY -# undef Tcl_FindHashEntry -# undef Tcl_CreateHashEntry -#endif - -/* - * Keep a record of the original Notifier procedures, created in the - * same compilation unit as the stub tables so we can later do reliable, - * portable comparisons to see whether a Tcl_SetNotifier() call swapped - * new routines into the stub table. - */ - -Tcl_NotifierProcs tclOriginalNotifier = { - Tcl_SetTimer, - Tcl_WaitForEvent, -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_CreateFileHandler, - Tcl_DeleteFileHandler, -#else - NULL, - NULL, -#endif - NULL, - NULL, - NULL, - NULL -}; - -/* - * WARNING: The contents of this file is automatically generated by the - * tools/genStubs.tcl script. Any modifications to the function declarations - * below should be made in the generic/tcl.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -TclIntStubs tclIntStubs = { - TCL_STUB_MAGIC, - NULL, - NULL, /* 0 */ - TclAccessDeleteProc, /* 1 */ - TclAccessInsertProc, /* 2 */ - TclAllocateFreeObjects, /* 3 */ - NULL, /* 4 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclCleanupChildren, /* 5 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclCleanupChildren, /* 5 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 5 */ -#endif /* MAC_TCL */ - TclCleanupCommand, /* 6 */ - TclCopyAndCollapse, /* 7 */ - TclCopyChannel, /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclCreatePipeline, /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclCreatePipeline, /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 9 */ -#endif /* MAC_TCL */ - TclCreateProc, /* 10 */ - TclDeleteCompiledLocalVars, /* 11 */ - TclDeleteVars, /* 12 */ - TclDoGlob, /* 13 */ - TclDumpMemoryInfo, /* 14 */ - NULL, /* 15 */ - TclExprFloatError, /* 16 */ - NULL, /* 17 */ - NULL, /* 18 */ - NULL, /* 19 */ - NULL, /* 20 */ - NULL, /* 21 */ - TclFindElement, /* 22 */ - TclFindProc, /* 23 */ - TclFormatInt, /* 24 */ - TclFreePackageInfo, /* 25 */ - NULL, /* 26 */ - TclGetDate, /* 27 */ - TclpGetDefaultStdChannel, /* 28 */ - NULL, /* 29 */ - NULL, /* 30 */ - TclGetExtension, /* 31 */ - TclGetFrame, /* 32 */ - TclGetInterpProc, /* 33 */ - TclGetIntForIndex, /* 34 */ - NULL, /* 35 */ - TclGetLong, /* 36 */ - TclGetLoadedPackages, /* 37 */ - TclGetNamespaceForQualName, /* 38 */ - TclGetObjInterpProc, /* 39 */ - TclGetOpenMode, /* 40 */ - TclGetOriginalCommand, /* 41 */ - TclpGetUserHome, /* 42 */ - TclGlobalInvoke, /* 43 */ - TclGuessPackageName, /* 44 */ - TclHideUnsafeCommands, /* 45 */ - TclInExit, /* 46 */ - NULL, /* 47 */ - NULL, /* 48 */ - TclIncrVar2, /* 49 */ - TclInitCompiledLocals, /* 50 */ - TclInterpInit, /* 51 */ - TclInvoke, /* 52 */ - TclInvokeObjectCommand, /* 53 */ - TclInvokeStringCommand, /* 54 */ - TclIsProc, /* 55 */ - NULL, /* 56 */ - NULL, /* 57 */ - TclLookupVar, /* 58 */ - NULL, /* 59 */ - TclNeedSpace, /* 60 */ - TclNewProcBodyObj, /* 61 */ - TclObjCommandComplete, /* 62 */ - TclObjInterpProc, /* 63 */ - TclObjInvoke, /* 64 */ - TclObjInvokeGlobal, /* 65 */ - TclOpenFileChannelDeleteProc, /* 66 */ - TclOpenFileChannelInsertProc, /* 67 */ - NULL, /* 68 */ - TclpAlloc, /* 69 */ - NULL, /* 70 */ - NULL, /* 71 */ - NULL, /* 72 */ - NULL, /* 73 */ - TclpFree, /* 74 */ - TclpGetClicks, /* 75 */ - TclpGetSeconds, /* 76 */ - TclpGetTime, /* 77 */ - TclpGetTimeZone, /* 78 */ - NULL, /* 79 */ - NULL, /* 80 */ - TclpRealloc, /* 81 */ - NULL, /* 82 */ - NULL, /* 83 */ - NULL, /* 84 */ - NULL, /* 85 */ - NULL, /* 86 */ - NULL, /* 87 */ - TclPrecTraceProc, /* 88 */ - TclPreventAliasLoop, /* 89 */ - NULL, /* 90 */ - TclProcCleanupProc, /* 91 */ - TclProcCompileProc, /* 92 */ - TclProcDeleteProc, /* 93 */ - TclProcInterpProc, /* 94 */ - NULL, /* 95 */ - TclRenameCommand, /* 96 */ - TclResetShadowedCmdRefs, /* 97 */ - TclServiceIdle, /* 98 */ - NULL, /* 99 */ - NULL, /* 100 */ - TclSetPreInitScript, /* 101 */ - TclSetupEnv, /* 102 */ - TclSockGetPort, /* 103 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclSockMinimumBuffers, /* 104 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclSockMinimumBuffers, /* 104 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 104 */ -#endif /* MAC_TCL */ - NULL, /* 105 */ - TclStatDeleteProc, /* 106 */ - TclStatInsertProc, /* 107 */ - TclTeardownNamespace, /* 108 */ - TclUpdateReturnInfo, /* 109 */ - NULL, /* 110 */ - Tcl_AddInterpResolvers, /* 111 */ - Tcl_AppendExportList, /* 112 */ - Tcl_CreateNamespace, /* 113 */ - Tcl_DeleteNamespace, /* 114 */ - Tcl_Export, /* 115 */ - Tcl_FindCommand, /* 116 */ - Tcl_FindNamespace, /* 117 */ - Tcl_GetInterpResolvers, /* 118 */ - Tcl_GetNamespaceResolvers, /* 119 */ - Tcl_FindNamespaceVar, /* 120 */ - Tcl_ForgetImport, /* 121 */ - Tcl_GetCommandFromObj, /* 122 */ - Tcl_GetCommandFullName, /* 123 */ - Tcl_GetCurrentNamespace, /* 124 */ - Tcl_GetGlobalNamespace, /* 125 */ - Tcl_GetVariableFullName, /* 126 */ - Tcl_Import, /* 127 */ - Tcl_PopCallFrame, /* 128 */ - Tcl_PushCallFrame, /* 129 */ - Tcl_RemoveInterpResolvers, /* 130 */ - Tcl_SetNamespaceResolvers, /* 131 */ - TclpHasSockets, /* 132 */ - TclpGetDate, /* 133 */ - TclpStrftime, /* 134 */ - TclpCheckStackSpace, /* 135 */ - NULL, /* 136 */ - NULL, /* 137 */ - TclGetEnv, /* 138 */ - NULL, /* 139 */ - TclLooksLikeInt, /* 140 */ - TclpGetCwd, /* 141 */ - TclSetByteCodeFromAny, /* 142 */ - TclAddLiteralObj, /* 143 */ - TclHideLiteral, /* 144 */ - TclGetAuxDataType, /* 145 */ - TclHandleCreate, /* 146 */ - TclHandleFree, /* 147 */ - TclHandlePreserve, /* 148 */ - TclHandleRelease, /* 149 */ - TclRegAbout, /* 150 */ - TclRegExpRangeUniChar, /* 151 */ - TclSetLibraryPath, /* 152 */ - TclGetLibraryPath, /* 153 */ - NULL, /* 154 */ - NULL, /* 155 */ - TclRegError, /* 156 */ - TclVarTraceExists, /* 157 */ - TclSetStartupScriptFileName, /* 158 */ - TclGetStartupScriptFileName, /* 159 */ - NULL, /* 160 */ - TclChannelTransform, /* 161 */ - TclChannelEventScriptInvoker, /* 162 */ - TclGetInstructionTable, /* 163 */ - TclExpandCodeArray, /* 164 */ - TclpSetInitialEncodings, /* 165 */ - TclListObjSetElement, /* 166 */ - TclSetStartupScriptPath, /* 167 */ - TclGetStartupScriptPath, /* 168 */ - TclpUtfNcmp2, /* 169 */ - TclCheckInterpTraces, /* 170 */ - TclCheckExecutionTraces, /* 171 */ - TclInThreadExit, /* 172 */ - TclUniCharMatch, /* 173 */ - NULL, /* 174 */ - NULL, /* 175 */ - NULL, /* 176 */ - NULL, /* 177 */ - NULL, /* 178 */ - NULL, /* 179 */ - NULL, /* 180 */ - NULL, /* 181 */ - TclpLocaltime, /* 182 */ - TclpGmtime, /* 183 */ -}; - -TclIntPlatStubs tclIntPlatStubs = { - TCL_STUB_MAGIC, - NULL, -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclGetAndDetachPids, /* 0 */ - TclpCloseFile, /* 1 */ - TclpCreateCommandChannel, /* 2 */ - TclpCreatePipe, /* 3 */ - TclpCreateProcess, /* 4 */ - NULL, /* 5 */ - TclpMakeFile, /* 6 */ - TclpOpenFile, /* 7 */ - TclUnixWaitForFile, /* 8 */ - TclpCreateTempFile, /* 9 */ - TclpReaddir, /* 10 */ - TclpLocaltime_unix, /* 11 */ - TclpGmtime_unix, /* 12 */ - TclpInetNtoa, /* 13 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclWinConvertError, /* 0 */ - TclWinConvertWSAError, /* 1 */ - TclWinGetServByName, /* 2 */ - TclWinGetSockOpt, /* 3 */ - TclWinGetTclInstance, /* 4 */ - NULL, /* 5 */ - TclWinNToHS, /* 6 */ - TclWinSetSockOpt, /* 7 */ - TclpGetPid, /* 8 */ - TclWinGetPlatformId, /* 9 */ - NULL, /* 10 */ - TclGetAndDetachPids, /* 11 */ - TclpCloseFile, /* 12 */ - TclpCreateCommandChannel, /* 13 */ - TclpCreatePipe, /* 14 */ - TclpCreateProcess, /* 15 */ - NULL, /* 16 */ - NULL, /* 17 */ - TclpMakeFile, /* 18 */ - TclpOpenFile, /* 19 */ - TclWinAddProcess, /* 20 */ - NULL, /* 21 */ - TclpCreateTempFile, /* 22 */ - TclpGetTZName, /* 23 */ - TclWinNoBackslash, /* 24 */ - TclWinGetPlatform, /* 25 */ - TclWinSetInterfaces, /* 26 */ - TclWinFlushDirtyChannels, /* 27 */ - TclWinResetInterfaces, /* 28 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - TclpSysAlloc, /* 0 */ - TclpSysFree, /* 1 */ - TclpSysRealloc, /* 2 */ - TclpExit, /* 3 */ - FSpGetDefaultDir, /* 4 */ - FSpSetDefaultDir, /* 5 */ - FSpFindFolder, /* 6 */ - GetGlobalMouseTcl, /* 7 */ - FSpGetDirectoryIDTcl, /* 8 */ - FSpOpenResFileCompatTcl, /* 9 */ - FSpCreateResFileCompatTcl, /* 10 */ - FSpLocationFromPath, /* 11 */ - FSpPathFromLocation, /* 12 */ - TclMacExitHandler, /* 13 */ - TclMacInitExitToShell, /* 14 */ - TclMacInstallExitToShellPatch, /* 15 */ - TclMacOSErrorToPosixError, /* 16 */ - TclMacRemoveTimer, /* 17 */ - TclMacStartTimer, /* 18 */ - TclMacTimerExpired, /* 19 */ - TclMacRegisterResourceFork, /* 20 */ - TclMacUnRegisterResourceFork, /* 21 */ - TclMacCreateEnv, /* 22 */ - TclMacFOpenHack, /* 23 */ - TclpGetTZName, /* 24 */ - TclMacChmod, /* 25 */ - FSpLLocationFromPath, /* 26 */ -#endif /* MAC_TCL */ -}; - -TclPlatStubs tclPlatStubs = { - TCL_STUB_MAGIC, - NULL, -#ifdef __WIN32__ - Tcl_WinUtfToTChar, /* 0 */ - Tcl_WinTCharToUtf, /* 1 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - Tcl_MacSetEventProc, /* 0 */ - Tcl_MacConvertTextResource, /* 1 */ - Tcl_MacEvalResource, /* 2 */ - Tcl_MacFindResource, /* 3 */ - Tcl_GetOSTypeFromObj, /* 4 */ - Tcl_SetOSTypeObj, /* 5 */ - Tcl_NewOSTypeObj, /* 6 */ - strncasecmp, /* 7 */ - strcasecmp, /* 8 */ -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL - Tcl_MacOSXOpenBundleResources, /* 0 */ - Tcl_MacOSXOpenVersionedBundleResources, /* 1 */ -#endif /* MAC_OSX_TCL */ -}; - -static TclStubHooks tclStubHooks = { - &tclPlatStubs, - &tclIntStubs, - &tclIntPlatStubs -}; - -TclStubs tclStubs = { - TCL_STUB_MAGIC, - &tclStubHooks, - Tcl_PkgProvideEx, /* 0 */ - Tcl_PkgRequireEx, /* 1 */ - Tcl_Panic, /* 2 */ - Tcl_Alloc, /* 3 */ - Tcl_Free, /* 4 */ - Tcl_Realloc, /* 5 */ - Tcl_DbCkalloc, /* 6 */ - Tcl_DbCkfree, /* 7 */ - Tcl_DbCkrealloc, /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_CreateFileHandler, /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 9 */ -#endif /* MAC_TCL */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_DeleteFileHandler, /* 10 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 10 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 10 */ -#endif /* MAC_TCL */ - Tcl_SetTimer, /* 11 */ - Tcl_Sleep, /* 12 */ - Tcl_WaitForEvent, /* 13 */ - Tcl_AppendAllObjTypes, /* 14 */ - Tcl_AppendStringsToObj, /* 15 */ - Tcl_AppendToObj, /* 16 */ - Tcl_ConcatObj, /* 17 */ - Tcl_ConvertToType, /* 18 */ - Tcl_DbDecrRefCount, /* 19 */ - Tcl_DbIncrRefCount, /* 20 */ - Tcl_DbIsShared, /* 21 */ - Tcl_DbNewBooleanObj, /* 22 */ - Tcl_DbNewByteArrayObj, /* 23 */ - Tcl_DbNewDoubleObj, /* 24 */ - Tcl_DbNewListObj, /* 25 */ - Tcl_DbNewLongObj, /* 26 */ - Tcl_DbNewObj, /* 27 */ - Tcl_DbNewStringObj, /* 28 */ - Tcl_DuplicateObj, /* 29 */ - TclFreeObj, /* 30 */ - Tcl_GetBoolean, /* 31 */ - Tcl_GetBooleanFromObj, /* 32 */ - Tcl_GetByteArrayFromObj, /* 33 */ - Tcl_GetDouble, /* 34 */ - Tcl_GetDoubleFromObj, /* 35 */ - Tcl_GetIndexFromObj, /* 36 */ - Tcl_GetInt, /* 37 */ - Tcl_GetIntFromObj, /* 38 */ - Tcl_GetLongFromObj, /* 39 */ - Tcl_GetObjType, /* 40 */ - Tcl_GetStringFromObj, /* 41 */ - Tcl_InvalidateStringRep, /* 42 */ - Tcl_ListObjAppendList, /* 43 */ - Tcl_ListObjAppendElement, /* 44 */ - Tcl_ListObjGetElements, /* 45 */ - Tcl_ListObjIndex, /* 46 */ - Tcl_ListObjLength, /* 47 */ - Tcl_ListObjReplace, /* 48 */ - Tcl_NewBooleanObj, /* 49 */ - Tcl_NewByteArrayObj, /* 50 */ - Tcl_NewDoubleObj, /* 51 */ - Tcl_NewIntObj, /* 52 */ - Tcl_NewListObj, /* 53 */ - Tcl_NewLongObj, /* 54 */ - Tcl_NewObj, /* 55 */ - Tcl_NewStringObj, /* 56 */ - Tcl_SetBooleanObj, /* 57 */ - Tcl_SetByteArrayLength, /* 58 */ - Tcl_SetByteArrayObj, /* 59 */ - Tcl_SetDoubleObj, /* 60 */ - Tcl_SetIntObj, /* 61 */ - Tcl_SetListObj, /* 62 */ - Tcl_SetLongObj, /* 63 */ - Tcl_SetObjLength, /* 64 */ - Tcl_SetStringObj, /* 65 */ - Tcl_AddErrorInfo, /* 66 */ - Tcl_AddObjErrorInfo, /* 67 */ - Tcl_AllowExceptions, /* 68 */ - Tcl_AppendElement, /* 69 */ - Tcl_AppendResult, /* 70 */ - Tcl_AsyncCreate, /* 71 */ - Tcl_AsyncDelete, /* 72 */ - Tcl_AsyncInvoke, /* 73 */ - Tcl_AsyncMark, /* 74 */ - Tcl_AsyncReady, /* 75 */ - Tcl_BackgroundError, /* 76 */ - Tcl_Backslash, /* 77 */ - Tcl_BadChannelOption, /* 78 */ - Tcl_CallWhenDeleted, /* 79 */ - Tcl_CancelIdleCall, /* 80 */ - Tcl_Close, /* 81 */ - Tcl_CommandComplete, /* 82 */ - Tcl_Concat, /* 83 */ - Tcl_ConvertElement, /* 84 */ - Tcl_ConvertCountedElement, /* 85 */ - Tcl_CreateAlias, /* 86 */ - Tcl_CreateAliasObj, /* 87 */ - Tcl_CreateChannel, /* 88 */ - Tcl_CreateChannelHandler, /* 89 */ - Tcl_CreateCloseHandler, /* 90 */ - Tcl_CreateCommand, /* 91 */ - Tcl_CreateEventSource, /* 92 */ - Tcl_CreateExitHandler, /* 93 */ - Tcl_CreateInterp, /* 94 */ - Tcl_CreateMathFunc, /* 95 */ - Tcl_CreateObjCommand, /* 96 */ - Tcl_CreateSlave, /* 97 */ - Tcl_CreateTimerHandler, /* 98 */ - Tcl_CreateTrace, /* 99 */ - Tcl_DeleteAssocData, /* 100 */ - Tcl_DeleteChannelHandler, /* 101 */ - Tcl_DeleteCloseHandler, /* 102 */ - Tcl_DeleteCommand, /* 103 */ - Tcl_DeleteCommandFromToken, /* 104 */ - Tcl_DeleteEvents, /* 105 */ - Tcl_DeleteEventSource, /* 106 */ - Tcl_DeleteExitHandler, /* 107 */ - Tcl_DeleteHashEntry, /* 108 */ - Tcl_DeleteHashTable, /* 109 */ - Tcl_DeleteInterp, /* 110 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_DetachPids, /* 111 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_DetachPids, /* 111 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 111 */ -#endif /* MAC_TCL */ - Tcl_DeleteTimerHandler, /* 112 */ - Tcl_DeleteTrace, /* 113 */ - Tcl_DontCallWhenDeleted, /* 114 */ - Tcl_DoOneEvent, /* 115 */ - Tcl_DoWhenIdle, /* 116 */ - Tcl_DStringAppend, /* 117 */ - Tcl_DStringAppendElement, /* 118 */ - Tcl_DStringEndSublist, /* 119 */ - Tcl_DStringFree, /* 120 */ - Tcl_DStringGetResult, /* 121 */ - Tcl_DStringInit, /* 122 */ - Tcl_DStringResult, /* 123 */ - Tcl_DStringSetLength, /* 124 */ - Tcl_DStringStartSublist, /* 125 */ - Tcl_Eof, /* 126 */ - Tcl_ErrnoId, /* 127 */ - Tcl_ErrnoMsg, /* 128 */ - Tcl_Eval, /* 129 */ - Tcl_EvalFile, /* 130 */ - Tcl_EvalObj, /* 131 */ - Tcl_EventuallyFree, /* 132 */ - Tcl_Exit, /* 133 */ - Tcl_ExposeCommand, /* 134 */ - Tcl_ExprBoolean, /* 135 */ - Tcl_ExprBooleanObj, /* 136 */ - Tcl_ExprDouble, /* 137 */ - Tcl_ExprDoubleObj, /* 138 */ - Tcl_ExprLong, /* 139 */ - Tcl_ExprLongObj, /* 140 */ - Tcl_ExprObj, /* 141 */ - Tcl_ExprString, /* 142 */ - Tcl_Finalize, /* 143 */ - Tcl_FindExecutable, /* 144 */ - Tcl_FirstHashEntry, /* 145 */ - Tcl_Flush, /* 146 */ - Tcl_FreeResult, /* 147 */ - Tcl_GetAlias, /* 148 */ - Tcl_GetAliasObj, /* 149 */ - Tcl_GetAssocData, /* 150 */ - Tcl_GetChannel, /* 151 */ - Tcl_GetChannelBufferSize, /* 152 */ - Tcl_GetChannelHandle, /* 153 */ - Tcl_GetChannelInstanceData, /* 154 */ - Tcl_GetChannelMode, /* 155 */ - Tcl_GetChannelName, /* 156 */ - Tcl_GetChannelOption, /* 157 */ - Tcl_GetChannelType, /* 158 */ - Tcl_GetCommandInfo, /* 159 */ - Tcl_GetCommandName, /* 160 */ - Tcl_GetErrno, /* 161 */ - Tcl_GetHostName, /* 162 */ - Tcl_GetInterpPath, /* 163 */ - Tcl_GetMaster, /* 164 */ - Tcl_GetNameOfExecutable, /* 165 */ - Tcl_GetObjResult, /* 166 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_GetOpenFile, /* 167 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 167 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 167 */ -#endif /* MAC_TCL */ - Tcl_GetPathType, /* 168 */ - Tcl_Gets, /* 169 */ - Tcl_GetsObj, /* 170 */ - Tcl_GetServiceMode, /* 171 */ - Tcl_GetSlave, /* 172 */ - Tcl_GetStdChannel, /* 173 */ - Tcl_GetStringResult, /* 174 */ - Tcl_GetVar, /* 175 */ - Tcl_GetVar2, /* 176 */ - Tcl_GlobalEval, /* 177 */ - Tcl_GlobalEvalObj, /* 178 */ - Tcl_HideCommand, /* 179 */ - Tcl_Init, /* 180 */ - Tcl_InitHashTable, /* 181 */ - Tcl_InputBlocked, /* 182 */ - Tcl_InputBuffered, /* 183 */ - Tcl_InterpDeleted, /* 184 */ - Tcl_IsSafe, /* 185 */ - Tcl_JoinPath, /* 186 */ - Tcl_LinkVar, /* 187 */ - NULL, /* 188 */ - Tcl_MakeFileChannel, /* 189 */ - Tcl_MakeSafe, /* 190 */ - Tcl_MakeTcpClientChannel, /* 191 */ - Tcl_Merge, /* 192 */ - Tcl_NextHashEntry, /* 193 */ - Tcl_NotifyChannel, /* 194 */ - Tcl_ObjGetVar2, /* 195 */ - Tcl_ObjSetVar2, /* 196 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_OpenCommandChannel, /* 197 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_OpenCommandChannel, /* 197 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 197 */ -#endif /* MAC_TCL */ - Tcl_OpenFileChannel, /* 198 */ - Tcl_OpenTcpClient, /* 199 */ - Tcl_OpenTcpServer, /* 200 */ - Tcl_Preserve, /* 201 */ - Tcl_PrintDouble, /* 202 */ - Tcl_PutEnv, /* 203 */ - Tcl_PosixError, /* 204 */ - Tcl_QueueEvent, /* 205 */ - Tcl_Read, /* 206 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_ReapDetachedProcs, /* 207 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_ReapDetachedProcs, /* 207 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 207 */ -#endif /* MAC_TCL */ - Tcl_RecordAndEval, /* 208 */ - Tcl_RecordAndEvalObj, /* 209 */ - Tcl_RegisterChannel, /* 210 */ - Tcl_RegisterObjType, /* 211 */ - Tcl_RegExpCompile, /* 212 */ - Tcl_RegExpExec, /* 213 */ - Tcl_RegExpMatch, /* 214 */ - Tcl_RegExpRange, /* 215 */ - Tcl_Release, /* 216 */ - Tcl_ResetResult, /* 217 */ - Tcl_ScanElement, /* 218 */ - Tcl_ScanCountedElement, /* 219 */ - Tcl_SeekOld, /* 220 */ - Tcl_ServiceAll, /* 221 */ - Tcl_ServiceEvent, /* 222 */ - Tcl_SetAssocData, /* 223 */ - Tcl_SetChannelBufferSize, /* 224 */ - Tcl_SetChannelOption, /* 225 */ - Tcl_SetCommandInfo, /* 226 */ - Tcl_SetErrno, /* 227 */ - Tcl_SetErrorCode, /* 228 */ - Tcl_SetMaxBlockTime, /* 229 */ - Tcl_SetPanicProc, /* 230 */ - Tcl_SetRecursionLimit, /* 231 */ - Tcl_SetResult, /* 232 */ - Tcl_SetServiceMode, /* 233 */ - Tcl_SetObjErrorCode, /* 234 */ - Tcl_SetObjResult, /* 235 */ - Tcl_SetStdChannel, /* 236 */ - Tcl_SetVar, /* 237 */ - Tcl_SetVar2, /* 238 */ - Tcl_SignalId, /* 239 */ - Tcl_SignalMsg, /* 240 */ - Tcl_SourceRCFile, /* 241 */ - Tcl_SplitList, /* 242 */ - Tcl_SplitPath, /* 243 */ - Tcl_StaticPackage, /* 244 */ - Tcl_StringMatch, /* 245 */ - Tcl_TellOld, /* 246 */ - Tcl_TraceVar, /* 247 */ - Tcl_TraceVar2, /* 248 */ - Tcl_TranslateFileName, /* 249 */ - Tcl_Ungets, /* 250 */ - Tcl_UnlinkVar, /* 251 */ - Tcl_UnregisterChannel, /* 252 */ - Tcl_UnsetVar, /* 253 */ - Tcl_UnsetVar2, /* 254 */ - Tcl_UntraceVar, /* 255 */ - Tcl_UntraceVar2, /* 256 */ - Tcl_UpdateLinkedVar, /* 257 */ - Tcl_UpVar, /* 258 */ - Tcl_UpVar2, /* 259 */ - Tcl_VarEval, /* 260 */ - Tcl_VarTraceInfo, /* 261 */ - Tcl_VarTraceInfo2, /* 262 */ - Tcl_Write, /* 263 */ - Tcl_WrongNumArgs, /* 264 */ - Tcl_DumpActiveMemory, /* 265 */ - Tcl_ValidateAllMemory, /* 266 */ - Tcl_AppendResultVA, /* 267 */ - Tcl_AppendStringsToObjVA, /* 268 */ - Tcl_HashStats, /* 269 */ - Tcl_ParseVar, /* 270 */ - Tcl_PkgPresent, /* 271 */ - Tcl_PkgPresentEx, /* 272 */ - Tcl_PkgProvide, /* 273 */ - Tcl_PkgRequire, /* 274 */ - Tcl_SetErrorCodeVA, /* 275 */ - Tcl_VarEvalVA, /* 276 */ - Tcl_WaitPid, /* 277 */ - Tcl_PanicVA, /* 278 */ - Tcl_GetVersion, /* 279 */ - Tcl_InitMemory, /* 280 */ - Tcl_StackChannel, /* 281 */ - Tcl_UnstackChannel, /* 282 */ - Tcl_GetStackedChannel, /* 283 */ - Tcl_SetMainLoop, /* 284 */ - NULL, /* 285 */ - Tcl_AppendObjToObj, /* 286 */ - Tcl_CreateEncoding, /* 287 */ - Tcl_CreateThreadExitHandler, /* 288 */ - Tcl_DeleteThreadExitHandler, /* 289 */ - Tcl_DiscardResult, /* 290 */ - Tcl_EvalEx, /* 291 */ - Tcl_EvalObjv, /* 292 */ - Tcl_EvalObjEx, /* 293 */ - Tcl_ExitThread, /* 294 */ - Tcl_ExternalToUtf, /* 295 */ - Tcl_ExternalToUtfDString, /* 296 */ - Tcl_FinalizeThread, /* 297 */ - Tcl_FinalizeNotifier, /* 298 */ - Tcl_FreeEncoding, /* 299 */ - Tcl_GetCurrentThread, /* 300 */ - Tcl_GetEncoding, /* 301 */ - Tcl_GetEncodingName, /* 302 */ - Tcl_GetEncodingNames, /* 303 */ - Tcl_GetIndexFromObjStruct, /* 304 */ - Tcl_GetThreadData, /* 305 */ - Tcl_GetVar2Ex, /* 306 */ - Tcl_InitNotifier, /* 307 */ - Tcl_MutexLock, /* 308 */ - Tcl_MutexUnlock, /* 309 */ - Tcl_ConditionNotify, /* 310 */ - Tcl_ConditionWait, /* 311 */ - Tcl_NumUtfChars, /* 312 */ - Tcl_ReadChars, /* 313 */ - Tcl_RestoreResult, /* 314 */ - Tcl_SaveResult, /* 315 */ - Tcl_SetSystemEncoding, /* 316 */ - Tcl_SetVar2Ex, /* 317 */ - Tcl_ThreadAlert, /* 318 */ - Tcl_ThreadQueueEvent, /* 319 */ - Tcl_UniCharAtIndex, /* 320 */ - Tcl_UniCharToLower, /* 321 */ - Tcl_UniCharToTitle, /* 322 */ - Tcl_UniCharToUpper, /* 323 */ - Tcl_UniCharToUtf, /* 324 */ - Tcl_UtfAtIndex, /* 325 */ - Tcl_UtfCharComplete, /* 326 */ - Tcl_UtfBackslash, /* 327 */ - Tcl_UtfFindFirst, /* 328 */ - Tcl_UtfFindLast, /* 329 */ - Tcl_UtfNext, /* 330 */ - Tcl_UtfPrev, /* 331 */ - Tcl_UtfToExternal, /* 332 */ - Tcl_UtfToExternalDString, /* 333 */ - Tcl_UtfToLower, /* 334 */ - Tcl_UtfToTitle, /* 335 */ - Tcl_UtfToUniChar, /* 336 */ - Tcl_UtfToUpper, /* 337 */ - Tcl_WriteChars, /* 338 */ - Tcl_WriteObj, /* 339 */ - Tcl_GetString, /* 340 */ - Tcl_GetDefaultEncodingDir, /* 341 */ - Tcl_SetDefaultEncodingDir, /* 342 */ - Tcl_AlertNotifier, /* 343 */ - Tcl_ServiceModeHook, /* 344 */ - Tcl_UniCharIsAlnum, /* 345 */ - Tcl_UniCharIsAlpha, /* 346 */ - Tcl_UniCharIsDigit, /* 347 */ - Tcl_UniCharIsLower, /* 348 */ - Tcl_UniCharIsSpace, /* 349 */ - Tcl_UniCharIsUpper, /* 350 */ - Tcl_UniCharIsWordChar, /* 351 */ - Tcl_UniCharLen, /* 352 */ - Tcl_UniCharNcmp, /* 353 */ - Tcl_UniCharToUtfDString, /* 354 */ - Tcl_UtfToUniCharDString, /* 355 */ - Tcl_GetRegExpFromObj, /* 356 */ - Tcl_EvalTokens, /* 357 */ - Tcl_FreeParse, /* 358 */ - Tcl_LogCommandInfo, /* 359 */ - Tcl_ParseBraces, /* 360 */ - Tcl_ParseCommand, /* 361 */ - Tcl_ParseExpr, /* 362 */ - Tcl_ParseQuotedString, /* 363 */ - Tcl_ParseVarName, /* 364 */ - Tcl_GetCwd, /* 365 */ - Tcl_Chdir, /* 366 */ - Tcl_Access, /* 367 */ - Tcl_Stat, /* 368 */ - Tcl_UtfNcmp, /* 369 */ - Tcl_UtfNcasecmp, /* 370 */ - Tcl_StringCaseMatch, /* 371 */ - Tcl_UniCharIsControl, /* 372 */ - Tcl_UniCharIsGraph, /* 373 */ - Tcl_UniCharIsPrint, /* 374 */ - Tcl_UniCharIsPunct, /* 375 */ - Tcl_RegExpExecObj, /* 376 */ - Tcl_RegExpGetInfo, /* 377 */ - Tcl_NewUnicodeObj, /* 378 */ - Tcl_SetUnicodeObj, /* 379 */ - Tcl_GetCharLength, /* 380 */ - Tcl_GetUniChar, /* 381 */ - Tcl_GetUnicode, /* 382 */ - Tcl_GetRange, /* 383 */ - Tcl_AppendUnicodeToObj, /* 384 */ - Tcl_RegExpMatchObj, /* 385 */ - Tcl_SetNotifier, /* 386 */ - Tcl_GetAllocMutex, /* 387 */ - Tcl_GetChannelNames, /* 388 */ - Tcl_GetChannelNamesEx, /* 389 */ - Tcl_ProcObjCmd, /* 390 */ - Tcl_ConditionFinalize, /* 391 */ - Tcl_MutexFinalize, /* 392 */ - Tcl_CreateThread, /* 393 */ - Tcl_ReadRaw, /* 394 */ - Tcl_WriteRaw, /* 395 */ - Tcl_GetTopChannel, /* 396 */ - Tcl_ChannelBuffered, /* 397 */ - Tcl_ChannelName, /* 398 */ - Tcl_ChannelVersion, /* 399 */ - Tcl_ChannelBlockModeProc, /* 400 */ - Tcl_ChannelCloseProc, /* 401 */ - Tcl_ChannelClose2Proc, /* 402 */ - Tcl_ChannelInputProc, /* 403 */ - Tcl_ChannelOutputProc, /* 404 */ - Tcl_ChannelSeekProc, /* 405 */ - Tcl_ChannelSetOptionProc, /* 406 */ - Tcl_ChannelGetOptionProc, /* 407 */ - Tcl_ChannelWatchProc, /* 408 */ - Tcl_ChannelGetHandleProc, /* 409 */ - Tcl_ChannelFlushProc, /* 410 */ - Tcl_ChannelHandlerProc, /* 411 */ - Tcl_JoinThread, /* 412 */ - Tcl_IsChannelShared, /* 413 */ - Tcl_IsChannelRegistered, /* 414 */ - Tcl_CutChannel, /* 415 */ - Tcl_SpliceChannel, /* 416 */ - Tcl_ClearChannelHandlers, /* 417 */ - Tcl_IsChannelExisting, /* 418 */ - Tcl_UniCharNcasecmp, /* 419 */ - Tcl_UniCharCaseMatch, /* 420 */ - Tcl_FindHashEntry, /* 421 */ - Tcl_CreateHashEntry, /* 422 */ - Tcl_InitCustomHashTable, /* 423 */ - Tcl_InitObjHashTable, /* 424 */ - Tcl_CommandTraceInfo, /* 425 */ - Tcl_TraceCommand, /* 426 */ - Tcl_UntraceCommand, /* 427 */ - Tcl_AttemptAlloc, /* 428 */ - Tcl_AttemptDbCkalloc, /* 429 */ - Tcl_AttemptRealloc, /* 430 */ - Tcl_AttemptDbCkrealloc, /* 431 */ - Tcl_AttemptSetObjLength, /* 432 */ - Tcl_GetChannelThread, /* 433 */ - Tcl_GetUnicodeFromObj, /* 434 */ - Tcl_GetMathFuncInfo, /* 435 */ - Tcl_ListMathFuncs, /* 436 */ - Tcl_SubstObj, /* 437 */ - Tcl_DetachChannel, /* 438 */ - Tcl_IsStandardChannel, /* 439 */ - Tcl_FSCopyFile, /* 440 */ - Tcl_FSCopyDirectory, /* 441 */ - Tcl_FSCreateDirectory, /* 442 */ - Tcl_FSDeleteFile, /* 443 */ - Tcl_FSLoadFile, /* 444 */ - Tcl_FSMatchInDirectory, /* 445 */ - Tcl_FSLink, /* 446 */ - Tcl_FSRemoveDirectory, /* 447 */ - Tcl_FSRenameFile, /* 448 */ - Tcl_FSLstat, /* 449 */ - Tcl_FSUtime, /* 450 */ - Tcl_FSFileAttrsGet, /* 451 */ - Tcl_FSFileAttrsSet, /* 452 */ - Tcl_FSFileAttrStrings, /* 453 */ - Tcl_FSStat, /* 454 */ - Tcl_FSAccess, /* 455 */ - Tcl_FSOpenFileChannel, /* 456 */ - Tcl_FSGetCwd, /* 457 */ - Tcl_FSChdir, /* 458 */ - Tcl_FSConvertToPathType, /* 459 */ - Tcl_FSJoinPath, /* 460 */ - Tcl_FSSplitPath, /* 461 */ - Tcl_FSEqualPaths, /* 462 */ - Tcl_FSGetNormalizedPath, /* 463 */ - Tcl_FSJoinToPath, /* 464 */ - Tcl_FSGetInternalRep, /* 465 */ - Tcl_FSGetTranslatedPath, /* 466 */ - Tcl_FSEvalFile, /* 467 */ - Tcl_FSNewNativePath, /* 468 */ - Tcl_FSGetNativePath, /* 469 */ - Tcl_FSFileSystemInfo, /* 470 */ - Tcl_FSPathSeparator, /* 471 */ - Tcl_FSListVolumes, /* 472 */ - Tcl_FSRegister, /* 473 */ - Tcl_FSUnregister, /* 474 */ - Tcl_FSData, /* 475 */ - Tcl_FSGetTranslatedStringPath, /* 476 */ - Tcl_FSGetFileSystemForPath, /* 477 */ - Tcl_FSGetPathType, /* 478 */ - Tcl_OutputBuffered, /* 479 */ - Tcl_FSMountsChanged, /* 480 */ - Tcl_EvalTokensStandard, /* 481 */ - Tcl_GetTime, /* 482 */ - Tcl_CreateObjTrace, /* 483 */ - Tcl_GetCommandInfoFromToken, /* 484 */ - Tcl_SetCommandInfoFromToken, /* 485 */ - Tcl_DbNewWideIntObj, /* 486 */ - Tcl_GetWideIntFromObj, /* 487 */ - Tcl_NewWideIntObj, /* 488 */ - Tcl_SetWideIntObj, /* 489 */ - Tcl_AllocStatBuf, /* 490 */ - Tcl_Seek, /* 491 */ - Tcl_Tell, /* 492 */ - Tcl_ChannelWideSeekProc, /* 493 */ -}; - -/* !END!: Do not edit above this line. */ +/* + * tclStubInit.c -- + * + * This file contains the initializers for the Tcl stub vectors. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.4 2004/05/17 14:26:50 kennykb Exp $ + */ + +#include "tclInt.h" +#include "tclPort.h" + +/* + * Remove macros that will interfere with the definitions below. + */ + +#undef Tcl_Alloc +#undef Tcl_Free +#undef Tcl_Realloc +#undef Tcl_NewBooleanObj +#undef Tcl_NewByteArrayObj +#undef Tcl_NewDoubleObj +#undef Tcl_NewIntObj +#undef Tcl_NewListObj +#undef Tcl_NewLongObj +#undef Tcl_NewObj +#undef Tcl_NewStringObj +#undef Tcl_DumpActiveMemory +#undef Tcl_ValidateAllMemory +#if TCL_PRESERVE_BINARY_COMPATABILITY +# undef Tcl_FindHashEntry +# undef Tcl_CreateHashEntry +#endif + +/* + * Keep a record of the original Notifier procedures, created in the + * same compilation unit as the stub tables so we can later do reliable, + * portable comparisons to see whether a Tcl_SetNotifier() call swapped + * new routines into the stub table. + */ + +Tcl_NotifierProcs tclOriginalNotifier = { + Tcl_SetTimer, + Tcl_WaitForEvent, +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_CreateFileHandler, + Tcl_DeleteFileHandler, +#else + NULL, + NULL, +#endif + NULL, + NULL, + NULL, + NULL +}; + +/* + * WARNING: The contents of this file is automatically generated by the + * tools/genStubs.tcl script. Any modifications to the function declarations + * below should be made in the generic/tcl.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +TclIntStubs tclIntStubs = { + TCL_STUB_MAGIC, + NULL, + NULL, /* 0 */ + TclAccessDeleteProc, /* 1 */ + TclAccessInsertProc, /* 2 */ + TclAllocateFreeObjects, /* 3 */ + NULL, /* 4 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclCleanupChildren, /* 5 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclCleanupChildren, /* 5 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 5 */ +#endif /* MAC_TCL */ + TclCleanupCommand, /* 6 */ + TclCopyAndCollapse, /* 7 */ + TclCopyChannel, /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclCreatePipeline, /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclCreatePipeline, /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 9 */ +#endif /* MAC_TCL */ + TclCreateProc, /* 10 */ + TclDeleteCompiledLocalVars, /* 11 */ + TclDeleteVars, /* 12 */ + TclDoGlob, /* 13 */ + TclDumpMemoryInfo, /* 14 */ + NULL, /* 15 */ + TclExprFloatError, /* 16 */ + NULL, /* 17 */ + NULL, /* 18 */ + NULL, /* 19 */ + NULL, /* 20 */ + NULL, /* 21 */ + TclFindElement, /* 22 */ + TclFindProc, /* 23 */ + TclFormatInt, /* 24 */ + TclFreePackageInfo, /* 25 */ + NULL, /* 26 */ + TclGetDate, /* 27 */ + TclpGetDefaultStdChannel, /* 28 */ + NULL, /* 29 */ + NULL, /* 30 */ + TclGetExtension, /* 31 */ + TclGetFrame, /* 32 */ + TclGetInterpProc, /* 33 */ + TclGetIntForIndex, /* 34 */ + NULL, /* 35 */ + TclGetLong, /* 36 */ + TclGetLoadedPackages, /* 37 */ + TclGetNamespaceForQualName, /* 38 */ + TclGetObjInterpProc, /* 39 */ + TclGetOpenMode, /* 40 */ + TclGetOriginalCommand, /* 41 */ + TclpGetUserHome, /* 42 */ + TclGlobalInvoke, /* 43 */ + TclGuessPackageName, /* 44 */ + TclHideUnsafeCommands, /* 45 */ + TclInExit, /* 46 */ + NULL, /* 47 */ + NULL, /* 48 */ + TclIncrVar2, /* 49 */ + TclInitCompiledLocals, /* 50 */ + TclInterpInit, /* 51 */ + TclInvoke, /* 52 */ + TclInvokeObjectCommand, /* 53 */ + TclInvokeStringCommand, /* 54 */ + TclIsProc, /* 55 */ + NULL, /* 56 */ + NULL, /* 57 */ + TclLookupVar, /* 58 */ + NULL, /* 59 */ + TclNeedSpace, /* 60 */ + TclNewProcBodyObj, /* 61 */ + TclObjCommandComplete, /* 62 */ + TclObjInterpProc, /* 63 */ + TclObjInvoke, /* 64 */ + TclObjInvokeGlobal, /* 65 */ + TclOpenFileChannelDeleteProc, /* 66 */ + TclOpenFileChannelInsertProc, /* 67 */ + NULL, /* 68 */ + TclpAlloc, /* 69 */ + NULL, /* 70 */ + NULL, /* 71 */ + NULL, /* 72 */ + NULL, /* 73 */ + TclpFree, /* 74 */ + TclpGetClicks, /* 75 */ + TclpGetSeconds, /* 76 */ + TclpGetTime, /* 77 */ + TclpGetTimeZone, /* 78 */ + NULL, /* 79 */ + NULL, /* 80 */ + TclpRealloc, /* 81 */ + NULL, /* 82 */ + NULL, /* 83 */ + NULL, /* 84 */ + NULL, /* 85 */ + NULL, /* 86 */ + NULL, /* 87 */ + TclPrecTraceProc, /* 88 */ + TclPreventAliasLoop, /* 89 */ + NULL, /* 90 */ + TclProcCleanupProc, /* 91 */ + TclProcCompileProc, /* 92 */ + TclProcDeleteProc, /* 93 */ + TclProcInterpProc, /* 94 */ + NULL, /* 95 */ + TclRenameCommand, /* 96 */ + TclResetShadowedCmdRefs, /* 97 */ + TclServiceIdle, /* 98 */ + NULL, /* 99 */ + NULL, /* 100 */ + TclSetPreInitScript, /* 101 */ + TclSetupEnv, /* 102 */ + TclSockGetPort, /* 103 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclSockMinimumBuffers, /* 104 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclSockMinimumBuffers, /* 104 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 104 */ +#endif /* MAC_TCL */ + NULL, /* 105 */ + TclStatDeleteProc, /* 106 */ + TclStatInsertProc, /* 107 */ + TclTeardownNamespace, /* 108 */ + TclUpdateReturnInfo, /* 109 */ + NULL, /* 110 */ + Tcl_AddInterpResolvers, /* 111 */ + Tcl_AppendExportList, /* 112 */ + Tcl_CreateNamespace, /* 113 */ + Tcl_DeleteNamespace, /* 114 */ + Tcl_Export, /* 115 */ + Tcl_FindCommand, /* 116 */ + Tcl_FindNamespace, /* 117 */ + Tcl_GetInterpResolvers, /* 118 */ + Tcl_GetNamespaceResolvers, /* 119 */ + Tcl_FindNamespaceVar, /* 120 */ + Tcl_ForgetImport, /* 121 */ + Tcl_GetCommandFromObj, /* 122 */ + Tcl_GetCommandFullName, /* 123 */ + Tcl_GetCurrentNamespace, /* 124 */ + Tcl_GetGlobalNamespace, /* 125 */ + Tcl_GetVariableFullName, /* 126 */ + Tcl_Import, /* 127 */ + Tcl_PopCallFrame, /* 128 */ + Tcl_PushCallFrame, /* 129 */ + Tcl_RemoveInterpResolvers, /* 130 */ + Tcl_SetNamespaceResolvers, /* 131 */ + TclpHasSockets, /* 132 */ + TclpGetDate, /* 133 */ + TclpStrftime, /* 134 */ + TclpCheckStackSpace, /* 135 */ + NULL, /* 136 */ + NULL, /* 137 */ + TclGetEnv, /* 138 */ + NULL, /* 139 */ + TclLooksLikeInt, /* 140 */ + TclpGetCwd, /* 141 */ + TclSetByteCodeFromAny, /* 142 */ + TclAddLiteralObj, /* 143 */ + TclHideLiteral, /* 144 */ + TclGetAuxDataType, /* 145 */ + TclHandleCreate, /* 146 */ + TclHandleFree, /* 147 */ + TclHandlePreserve, /* 148 */ + TclHandleRelease, /* 149 */ + TclRegAbout, /* 150 */ + TclRegExpRangeUniChar, /* 151 */ + TclSetLibraryPath, /* 152 */ + TclGetLibraryPath, /* 153 */ + NULL, /* 154 */ + NULL, /* 155 */ + TclRegError, /* 156 */ + TclVarTraceExists, /* 157 */ + TclSetStartupScriptFileName, /* 158 */ + TclGetStartupScriptFileName, /* 159 */ + NULL, /* 160 */ + TclChannelTransform, /* 161 */ + TclChannelEventScriptInvoker, /* 162 */ + TclGetInstructionTable, /* 163 */ + TclExpandCodeArray, /* 164 */ + TclpSetInitialEncodings, /* 165 */ + TclListObjSetElement, /* 166 */ + TclSetStartupScriptPath, /* 167 */ + TclGetStartupScriptPath, /* 168 */ + TclpUtfNcmp2, /* 169 */ + TclCheckInterpTraces, /* 170 */ + TclCheckExecutionTraces, /* 171 */ + TclInThreadExit, /* 172 */ + TclUniCharMatch, /* 173 */ + NULL, /* 174 */ + NULL, /* 175 */ + NULL, /* 176 */ + NULL, /* 177 */ + NULL, /* 178 */ + NULL, /* 179 */ + NULL, /* 180 */ + NULL, /* 181 */ + TclpLocaltime, /* 182 */ + TclpGmtime, /* 183 */ +}; + +TclIntPlatStubs tclIntPlatStubs = { + TCL_STUB_MAGIC, + NULL, +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclGetAndDetachPids, /* 0 */ + TclpCloseFile, /* 1 */ + TclpCreateCommandChannel, /* 2 */ + TclpCreatePipe, /* 3 */ + TclpCreateProcess, /* 4 */ + NULL, /* 5 */ + TclpMakeFile, /* 6 */ + TclpOpenFile, /* 7 */ + TclUnixWaitForFile, /* 8 */ + TclpCreateTempFile, /* 9 */ + TclpReaddir, /* 10 */ + TclpLocaltime_unix, /* 11 */ + TclpGmtime_unix, /* 12 */ + TclpInetNtoa, /* 13 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclWinConvertError, /* 0 */ + TclWinConvertWSAError, /* 1 */ + TclWinGetServByName, /* 2 */ + TclWinGetSockOpt, /* 3 */ + TclWinGetTclInstance, /* 4 */ + NULL, /* 5 */ + TclWinNToHS, /* 6 */ + TclWinSetSockOpt, /* 7 */ + TclpGetPid, /* 8 */ + TclWinGetPlatformId, /* 9 */ + NULL, /* 10 */ + TclGetAndDetachPids, /* 11 */ + TclpCloseFile, /* 12 */ + TclpCreateCommandChannel, /* 13 */ + TclpCreatePipe, /* 14 */ + TclpCreateProcess, /* 15 */ + NULL, /* 16 */ + NULL, /* 17 */ + TclpMakeFile, /* 18 */ + TclpOpenFile, /* 19 */ + TclWinAddProcess, /* 20 */ + NULL, /* 21 */ + TclpCreateTempFile, /* 22 */ + TclpGetTZName, /* 23 */ + TclWinNoBackslash, /* 24 */ + TclWinGetPlatform, /* 25 */ + TclWinSetInterfaces, /* 26 */ + TclWinFlushDirtyChannels, /* 27 */ + TclWinResetInterfaces, /* 28 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + TclpSysAlloc, /* 0 */ + TclpSysFree, /* 1 */ + TclpSysRealloc, /* 2 */ + TclpExit, /* 3 */ + FSpGetDefaultDir, /* 4 */ + FSpSetDefaultDir, /* 5 */ + FSpFindFolder, /* 6 */ + GetGlobalMouseTcl, /* 7 */ + FSpGetDirectoryIDTcl, /* 8 */ + FSpOpenResFileCompatTcl, /* 9 */ + FSpCreateResFileCompatTcl, /* 10 */ + FSpLocationFromPath, /* 11 */ + FSpPathFromLocation, /* 12 */ + TclMacExitHandler, /* 13 */ + TclMacInitExitToShell, /* 14 */ + TclMacInstallExitToShellPatch, /* 15 */ + TclMacOSErrorToPosixError, /* 16 */ + TclMacRemoveTimer, /* 17 */ + TclMacStartTimer, /* 18 */ + TclMacTimerExpired, /* 19 */ + TclMacRegisterResourceFork, /* 20 */ + TclMacUnRegisterResourceFork, /* 21 */ + TclMacCreateEnv, /* 22 */ + TclMacFOpenHack, /* 23 */ + TclpGetTZName, /* 24 */ + TclMacChmod, /* 25 */ + FSpLLocationFromPath, /* 26 */ +#endif /* MAC_TCL */ +}; + +TclPlatStubs tclPlatStubs = { + TCL_STUB_MAGIC, + NULL, +#ifdef __WIN32__ + Tcl_WinUtfToTChar, /* 0 */ + Tcl_WinTCharToUtf, /* 1 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + Tcl_MacSetEventProc, /* 0 */ + Tcl_MacConvertTextResource, /* 1 */ + Tcl_MacEvalResource, /* 2 */ + Tcl_MacFindResource, /* 3 */ + Tcl_GetOSTypeFromObj, /* 4 */ + Tcl_SetOSTypeObj, /* 5 */ + Tcl_NewOSTypeObj, /* 6 */ + strncasecmp, /* 7 */ + strcasecmp, /* 8 */ +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL + Tcl_MacOSXOpenBundleResources, /* 0 */ + Tcl_MacOSXOpenVersionedBundleResources, /* 1 */ +#endif /* MAC_OSX_TCL */ +}; + +static TclStubHooks tclStubHooks = { + &tclPlatStubs, + &tclIntStubs, + &tclIntPlatStubs +}; + +TclStubs tclStubs = { + TCL_STUB_MAGIC, + &tclStubHooks, + Tcl_PkgProvideEx, /* 0 */ + Tcl_PkgRequireEx, /* 1 */ + Tcl_Panic, /* 2 */ + Tcl_Alloc, /* 3 */ + Tcl_Free, /* 4 */ + Tcl_Realloc, /* 5 */ + Tcl_DbCkalloc, /* 6 */ + Tcl_DbCkfree, /* 7 */ + Tcl_DbCkrealloc, /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_CreateFileHandler, /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 9 */ +#endif /* MAC_TCL */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_DeleteFileHandler, /* 10 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 10 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 10 */ +#endif /* MAC_TCL */ + Tcl_SetTimer, /* 11 */ + Tcl_Sleep, /* 12 */ + Tcl_WaitForEvent, /* 13 */ + Tcl_AppendAllObjTypes, /* 14 */ + Tcl_AppendStringsToObj, /* 15 */ + Tcl_AppendToObj, /* 16 */ + Tcl_ConcatObj, /* 17 */ + Tcl_ConvertToType, /* 18 */ + Tcl_DbDecrRefCount, /* 19 */ + Tcl_DbIncrRefCount, /* 20 */ + Tcl_DbIsShared, /* 21 */ + Tcl_DbNewBooleanObj, /* 22 */ + Tcl_DbNewByteArrayObj, /* 23 */ + Tcl_DbNewDoubleObj, /* 24 */ + Tcl_DbNewListObj, /* 25 */ + Tcl_DbNewLongObj, /* 26 */ + Tcl_DbNewObj, /* 27 */ + Tcl_DbNewStringObj, /* 28 */ + Tcl_DuplicateObj, /* 29 */ + TclFreeObj, /* 30 */ + Tcl_GetBoolean, /* 31 */ + Tcl_GetBooleanFromObj, /* 32 */ + Tcl_GetByteArrayFromObj, /* 33 */ + Tcl_GetDouble, /* 34 */ + Tcl_GetDoubleFromObj, /* 35 */ + Tcl_GetIndexFromObj, /* 36 */ + Tcl_GetInt, /* 37 */ + Tcl_GetIntFromObj, /* 38 */ + Tcl_GetLongFromObj, /* 39 */ + Tcl_GetObjType, /* 40 */ + Tcl_GetStringFromObj, /* 41 */ + Tcl_InvalidateStringRep, /* 42 */ + Tcl_ListObjAppendList, /* 43 */ + Tcl_ListObjAppendElement, /* 44 */ + Tcl_ListObjGetElements, /* 45 */ + Tcl_ListObjIndex, /* 46 */ + Tcl_ListObjLength, /* 47 */ + Tcl_ListObjReplace, /* 48 */ + Tcl_NewBooleanObj, /* 49 */ + Tcl_NewByteArrayObj, /* 50 */ + Tcl_NewDoubleObj, /* 51 */ + Tcl_NewIntObj, /* 52 */ + Tcl_NewListObj, /* 53 */ + Tcl_NewLongObj, /* 54 */ + Tcl_NewObj, /* 55 */ + Tcl_NewStringObj, /* 56 */ + Tcl_SetBooleanObj, /* 57 */ + Tcl_SetByteArrayLength, /* 58 */ + Tcl_SetByteArrayObj, /* 59 */ + Tcl_SetDoubleObj, /* 60 */ + Tcl_SetIntObj, /* 61 */ + Tcl_SetListObj, /* 62 */ + Tcl_SetLongObj, /* 63 */ + Tcl_SetObjLength, /* 64 */ + Tcl_SetStringObj, /* 65 */ + Tcl_AddErrorInfo, /* 66 */ + Tcl_AddObjErrorInfo, /* 67 */ + Tcl_AllowExceptions, /* 68 */ + Tcl_AppendElement, /* 69 */ + Tcl_AppendResult, /* 70 */ + Tcl_AsyncCreate, /* 71 */ + Tcl_AsyncDelete, /* 72 */ + Tcl_AsyncInvoke, /* 73 */ + Tcl_AsyncMark, /* 74 */ + Tcl_AsyncReady, /* 75 */ + Tcl_BackgroundError, /* 76 */ + Tcl_Backslash, /* 77 */ + Tcl_BadChannelOption, /* 78 */ + Tcl_CallWhenDeleted, /* 79 */ + Tcl_CancelIdleCall, /* 80 */ + Tcl_Close, /* 81 */ + Tcl_CommandComplete, /* 82 */ + Tcl_Concat, /* 83 */ + Tcl_ConvertElement, /* 84 */ + Tcl_ConvertCountedElement, /* 85 */ + Tcl_CreateAlias, /* 86 */ + Tcl_CreateAliasObj, /* 87 */ + Tcl_CreateChannel, /* 88 */ + Tcl_CreateChannelHandler, /* 89 */ + Tcl_CreateCloseHandler, /* 90 */ + Tcl_CreateCommand, /* 91 */ + Tcl_CreateEventSource, /* 92 */ + Tcl_CreateExitHandler, /* 93 */ + Tcl_CreateInterp, /* 94 */ + Tcl_CreateMathFunc, /* 95 */ + Tcl_CreateObjCommand, /* 96 */ + Tcl_CreateSlave, /* 97 */ + Tcl_CreateTimerHandler, /* 98 */ + Tcl_CreateTrace, /* 99 */ + Tcl_DeleteAssocData, /* 100 */ + Tcl_DeleteChannelHandler, /* 101 */ + Tcl_DeleteCloseHandler, /* 102 */ + Tcl_DeleteCommand, /* 103 */ + Tcl_DeleteCommandFromToken, /* 104 */ + Tcl_DeleteEvents, /* 105 */ + Tcl_DeleteEventSource, /* 106 */ + Tcl_DeleteExitHandler, /* 107 */ + Tcl_DeleteHashEntry, /* 108 */ + Tcl_DeleteHashTable, /* 109 */ + Tcl_DeleteInterp, /* 110 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_DetachPids, /* 111 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_DetachPids, /* 111 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 111 */ +#endif /* MAC_TCL */ + Tcl_DeleteTimerHandler, /* 112 */ + Tcl_DeleteTrace, /* 113 */ + Tcl_DontCallWhenDeleted, /* 114 */ + Tcl_DoOneEvent, /* 115 */ + Tcl_DoWhenIdle, /* 116 */ + Tcl_DStringAppend, /* 117 */ + Tcl_DStringAppendElement, /* 118 */ + Tcl_DStringEndSublist, /* 119 */ + Tcl_DStringFree, /* 120 */ + Tcl_DStringGetResult, /* 121 */ + Tcl_DStringInit, /* 122 */ + Tcl_DStringResult, /* 123 */ + Tcl_DStringSetLength, /* 124 */ + Tcl_DStringStartSublist, /* 125 */ + Tcl_Eof, /* 126 */ + Tcl_ErrnoId, /* 127 */ + Tcl_ErrnoMsg, /* 128 */ + Tcl_Eval, /* 129 */ + Tcl_EvalFile, /* 130 */ + Tcl_EvalObj, /* 131 */ + Tcl_EventuallyFree, /* 132 */ + Tcl_Exit, /* 133 */ + Tcl_ExposeCommand, /* 134 */ + Tcl_ExprBoolean, /* 135 */ + Tcl_ExprBooleanObj, /* 136 */ + Tcl_ExprDouble, /* 137 */ + Tcl_ExprDoubleObj, /* 138 */ + Tcl_ExprLong, /* 139 */ + Tcl_ExprLongObj, /* 140 */ + Tcl_ExprObj, /* 141 */ + Tcl_ExprString, /* 142 */ + Tcl_Finalize, /* 143 */ + Tcl_FindExecutable, /* 144 */ + Tcl_FirstHashEntry, /* 145 */ + Tcl_Flush, /* 146 */ + Tcl_FreeResult, /* 147 */ + Tcl_GetAlias, /* 148 */ + Tcl_GetAliasObj, /* 149 */ + Tcl_GetAssocData, /* 150 */ + Tcl_GetChannel, /* 151 */ + Tcl_GetChannelBufferSize, /* 152 */ + Tcl_GetChannelHandle, /* 153 */ + Tcl_GetChannelInstanceData, /* 154 */ + Tcl_GetChannelMode, /* 155 */ + Tcl_GetChannelName, /* 156 */ + Tcl_GetChannelOption, /* 157 */ + Tcl_GetChannelType, /* 158 */ + Tcl_GetCommandInfo, /* 159 */ + Tcl_GetCommandName, /* 160 */ + Tcl_GetErrno, /* 161 */ + Tcl_GetHostName, /* 162 */ + Tcl_GetInterpPath, /* 163 */ + Tcl_GetMaster, /* 164 */ + Tcl_GetNameOfExecutable, /* 165 */ + Tcl_GetObjResult, /* 166 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_GetOpenFile, /* 167 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 167 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 167 */ +#endif /* MAC_TCL */ + Tcl_GetPathType, /* 168 */ + Tcl_Gets, /* 169 */ + Tcl_GetsObj, /* 170 */ + Tcl_GetServiceMode, /* 171 */ + Tcl_GetSlave, /* 172 */ + Tcl_GetStdChannel, /* 173 */ + Tcl_GetStringResult, /* 174 */ + Tcl_GetVar, /* 175 */ + Tcl_GetVar2, /* 176 */ + Tcl_GlobalEval, /* 177 */ + Tcl_GlobalEvalObj, /* 178 */ + Tcl_HideCommand, /* 179 */ + Tcl_Init, /* 180 */ + Tcl_InitHashTable, /* 181 */ + Tcl_InputBlocked, /* 182 */ + Tcl_InputBuffered, /* 183 */ + Tcl_InterpDeleted, /* 184 */ + Tcl_IsSafe, /* 185 */ + Tcl_JoinPath, /* 186 */ + Tcl_LinkVar, /* 187 */ + NULL, /* 188 */ + Tcl_MakeFileChannel, /* 189 */ + Tcl_MakeSafe, /* 190 */ + Tcl_MakeTcpClientChannel, /* 191 */ + Tcl_Merge, /* 192 */ + Tcl_NextHashEntry, /* 193 */ + Tcl_NotifyChannel, /* 194 */ + Tcl_ObjGetVar2, /* 195 */ + Tcl_ObjSetVar2, /* 196 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_OpenCommandChannel, /* 197 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_OpenCommandChannel, /* 197 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 197 */ +#endif /* MAC_TCL */ + Tcl_OpenFileChannel, /* 198 */ + Tcl_OpenTcpClient, /* 199 */ + Tcl_OpenTcpServer, /* 200 */ + Tcl_Preserve, /* 201 */ + Tcl_PrintDouble, /* 202 */ + Tcl_PutEnv, /* 203 */ + Tcl_PosixError, /* 204 */ + Tcl_QueueEvent, /* 205 */ + Tcl_Read, /* 206 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_ReapDetachedProcs, /* 207 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_ReapDetachedProcs, /* 207 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 207 */ +#endif /* MAC_TCL */ + Tcl_RecordAndEval, /* 208 */ + Tcl_RecordAndEvalObj, /* 209 */ + Tcl_RegisterChannel, /* 210 */ + Tcl_RegisterObjType, /* 211 */ + Tcl_RegExpCompile, /* 212 */ + Tcl_RegExpExec, /* 213 */ + Tcl_RegExpMatch, /* 214 */ + Tcl_RegExpRange, /* 215 */ + Tcl_Release, /* 216 */ + Tcl_ResetResult, /* 217 */ + Tcl_ScanElement, /* 218 */ + Tcl_ScanCountedElement, /* 219 */ + Tcl_SeekOld, /* 220 */ + Tcl_ServiceAll, /* 221 */ + Tcl_ServiceEvent, /* 222 */ + Tcl_SetAssocData, /* 223 */ + Tcl_SetChannelBufferSize, /* 224 */ + Tcl_SetChannelOption, /* 225 */ + Tcl_SetCommandInfo, /* 226 */ + Tcl_SetErrno, /* 227 */ + Tcl_SetErrorCode, /* 228 */ + Tcl_SetMaxBlockTime, /* 229 */ + Tcl_SetPanicProc, /* 230 */ + Tcl_SetRecursionLimit, /* 231 */ + Tcl_SetResult, /* 232 */ + Tcl_SetServiceMode, /* 233 */ + Tcl_SetObjErrorCode, /* 234 */ + Tcl_SetObjResult, /* 235 */ + Tcl_SetStdChannel, /* 236 */ + Tcl_SetVar, /* 237 */ + Tcl_SetVar2, /* 238 */ + Tcl_SignalId, /* 239 */ + Tcl_SignalMsg, /* 240 */ + Tcl_SourceRCFile, /* 241 */ + Tcl_SplitList, /* 242 */ + Tcl_SplitPath, /* 243 */ + Tcl_StaticPackage, /* 244 */ + Tcl_StringMatch, /* 245 */ + Tcl_TellOld, /* 246 */ + Tcl_TraceVar, /* 247 */ + Tcl_TraceVar2, /* 248 */ + Tcl_TranslateFileName, /* 249 */ + Tcl_Ungets, /* 250 */ + Tcl_UnlinkVar, /* 251 */ + Tcl_UnregisterChannel, /* 252 */ + Tcl_UnsetVar, /* 253 */ + Tcl_UnsetVar2, /* 254 */ + Tcl_UntraceVar, /* 255 */ + Tcl_UntraceVar2, /* 256 */ + Tcl_UpdateLinkedVar, /* 257 */ + Tcl_UpVar, /* 258 */ + Tcl_UpVar2, /* 259 */ + Tcl_VarEval, /* 260 */ + Tcl_VarTraceInfo, /* 261 */ + Tcl_VarTraceInfo2, /* 262 */ + Tcl_Write, /* 263 */ + Tcl_WrongNumArgs, /* 264 */ + Tcl_DumpActiveMemory, /* 265 */ + Tcl_ValidateAllMemory, /* 266 */ + Tcl_AppendResultVA, /* 267 */ + Tcl_AppendStringsToObjVA, /* 268 */ + Tcl_HashStats, /* 269 */ + Tcl_ParseVar, /* 270 */ + Tcl_PkgPresent, /* 271 */ + Tcl_PkgPresentEx, /* 272 */ + Tcl_PkgProvide, /* 273 */ + Tcl_PkgRequire, /* 274 */ + Tcl_SetErrorCodeVA, /* 275 */ + Tcl_VarEvalVA, /* 276 */ + Tcl_WaitPid, /* 277 */ + Tcl_PanicVA, /* 278 */ + Tcl_GetVersion, /* 279 */ + Tcl_InitMemory, /* 280 */ + Tcl_StackChannel, /* 281 */ + Tcl_UnstackChannel, /* 282 */ + Tcl_GetStackedChannel, /* 283 */ + Tcl_SetMainLoop, /* 284 */ + NULL, /* 285 */ + Tcl_AppendObjToObj, /* 286 */ + Tcl_CreateEncoding, /* 287 */ + Tcl_CreateThreadExitHandler, /* 288 */ + Tcl_DeleteThreadExitHandler, /* 289 */ + Tcl_DiscardResult, /* 290 */ + Tcl_EvalEx, /* 291 */ + Tcl_EvalObjv, /* 292 */ + Tcl_EvalObjEx, /* 293 */ + Tcl_ExitThread, /* 294 */ + Tcl_ExternalToUtf, /* 295 */ + Tcl_ExternalToUtfDString, /* 296 */ + Tcl_FinalizeThread, /* 297 */ + Tcl_FinalizeNotifier, /* 298 */ + Tcl_FreeEncoding, /* 299 */ + Tcl_GetCurrentThread, /* 300 */ + Tcl_GetEncoding, /* 301 */ + Tcl_GetEncodingName, /* 302 */ + Tcl_GetEncodingNames, /* 303 */ + Tcl_GetIndexFromObjStruct, /* 304 */ + Tcl_GetThreadData, /* 305 */ + Tcl_GetVar2Ex, /* 306 */ + Tcl_InitNotifier, /* 307 */ + Tcl_MutexLock, /* 308 */ + Tcl_MutexUnlock, /* 309 */ + Tcl_ConditionNotify, /* 310 */ + Tcl_ConditionWait, /* 311 */ + Tcl_NumUtfChars, /* 312 */ + Tcl_ReadChars, /* 313 */ + Tcl_RestoreResult, /* 314 */ + Tcl_SaveResult, /* 315 */ + Tcl_SetSystemEncoding, /* 316 */ + Tcl_SetVar2Ex, /* 317 */ + Tcl_ThreadAlert, /* 318 */ + Tcl_ThreadQueueEvent, /* 319 */ + Tcl_UniCharAtIndex, /* 320 */ + Tcl_UniCharToLower, /* 321 */ + Tcl_UniCharToTitle, /* 322 */ + Tcl_UniCharToUpper, /* 323 */ + Tcl_UniCharToUtf, /* 324 */ + Tcl_UtfAtIndex, /* 325 */ + Tcl_UtfCharComplete, /* 326 */ + Tcl_UtfBackslash, /* 327 */ + Tcl_UtfFindFirst, /* 328 */ + Tcl_UtfFindLast, /* 329 */ + Tcl_UtfNext, /* 330 */ + Tcl_UtfPrev, /* 331 */ + Tcl_UtfToExternal, /* 332 */ + Tcl_UtfToExternalDString, /* 333 */ + Tcl_UtfToLower, /* 334 */ + Tcl_UtfToTitle, /* 335 */ + Tcl_UtfToUniChar, /* 336 */ + Tcl_UtfToUpper, /* 337 */ + Tcl_WriteChars, /* 338 */ + Tcl_WriteObj, /* 339 */ + Tcl_GetString, /* 340 */ + Tcl_GetDefaultEncodingDir, /* 341 */ + Tcl_SetDefaultEncodingDir, /* 342 */ + Tcl_AlertNotifier, /* 343 */ + Tcl_ServiceModeHook, /* 344 */ + Tcl_UniCharIsAlnum, /* 345 */ + Tcl_UniCharIsAlpha, /* 346 */ + Tcl_UniCharIsDigit, /* 347 */ + Tcl_UniCharIsLower, /* 348 */ + Tcl_UniCharIsSpace, /* 349 */ + Tcl_UniCharIsUpper, /* 350 */ + Tcl_UniCharIsWordChar, /* 351 */ + Tcl_UniCharLen, /* 352 */ + Tcl_UniCharNcmp, /* 353 */ + Tcl_UniCharToUtfDString, /* 354 */ + Tcl_UtfToUniCharDString, /* 355 */ + Tcl_GetRegExpFromObj, /* 356 */ + Tcl_EvalTokens, /* 357 */ + Tcl_FreeParse, /* 358 */ + Tcl_LogCommandInfo, /* 359 */ + Tcl_ParseBraces, /* 360 */ + Tcl_ParseCommand, /* 361 */ + Tcl_ParseExpr, /* 362 */ + Tcl_ParseQuotedString, /* 363 */ + Tcl_ParseVarName, /* 364 */ + Tcl_GetCwd, /* 365 */ + Tcl_Chdir, /* 366 */ + Tcl_Access, /* 367 */ + Tcl_Stat, /* 368 */ + Tcl_UtfNcmp, /* 369 */ + Tcl_UtfNcasecmp, /* 370 */ + Tcl_StringCaseMatch, /* 371 */ + Tcl_UniCharIsControl, /* 372 */ + Tcl_UniCharIsGraph, /* 373 */ + Tcl_UniCharIsPrint, /* 374 */ + Tcl_UniCharIsPunct, /* 375 */ + Tcl_RegExpExecObj, /* 376 */ + Tcl_RegExpGetInfo, /* 377 */ + Tcl_NewUnicodeObj, /* 378 */ + Tcl_SetUnicodeObj, /* 379 */ + Tcl_GetCharLength, /* 380 */ + Tcl_GetUniChar, /* 381 */ + Tcl_GetUnicode, /* 382 */ + Tcl_GetRange, /* 383 */ + Tcl_AppendUnicodeToObj, /* 384 */ + Tcl_RegExpMatchObj, /* 385 */ + Tcl_SetNotifier, /* 386 */ + Tcl_GetAllocMutex, /* 387 */ + Tcl_GetChannelNames, /* 388 */ + Tcl_GetChannelNamesEx, /* 389 */ + Tcl_ProcObjCmd, /* 390 */ + Tcl_ConditionFinalize, /* 391 */ + Tcl_MutexFinalize, /* 392 */ + Tcl_CreateThread, /* 393 */ + Tcl_ReadRaw, /* 394 */ + Tcl_WriteRaw, /* 395 */ + Tcl_GetTopChannel, /* 396 */ + Tcl_ChannelBuffered, /* 397 */ + Tcl_ChannelName, /* 398 */ + Tcl_ChannelVersion, /* 399 */ + Tcl_ChannelBlockModeProc, /* 400 */ + Tcl_ChannelCloseProc, /* 401 */ + Tcl_ChannelClose2Proc, /* 402 */ + Tcl_ChannelInputProc, /* 403 */ + Tcl_ChannelOutputProc, /* 404 */ + Tcl_ChannelSeekProc, /* 405 */ + Tcl_ChannelSetOptionProc, /* 406 */ + Tcl_ChannelGetOptionProc, /* 407 */ + Tcl_ChannelWatchProc, /* 408 */ + Tcl_ChannelGetHandleProc, /* 409 */ + Tcl_ChannelFlushProc, /* 410 */ + Tcl_ChannelHandlerProc, /* 411 */ + Tcl_JoinThread, /* 412 */ + Tcl_IsChannelShared, /* 413 */ + Tcl_IsChannelRegistered, /* 414 */ + Tcl_CutChannel, /* 415 */ + Tcl_SpliceChannel, /* 416 */ + Tcl_ClearChannelHandlers, /* 417 */ + Tcl_IsChannelExisting, /* 418 */ + Tcl_UniCharNcasecmp, /* 419 */ + Tcl_UniCharCaseMatch, /* 420 */ + Tcl_FindHashEntry, /* 421 */ + Tcl_CreateHashEntry, /* 422 */ + Tcl_InitCustomHashTable, /* 423 */ + Tcl_InitObjHashTable, /* 424 */ + Tcl_CommandTraceInfo, /* 425 */ + Tcl_TraceCommand, /* 426 */ + Tcl_UntraceCommand, /* 427 */ + Tcl_AttemptAlloc, /* 428 */ + Tcl_AttemptDbCkalloc, /* 429 */ + Tcl_AttemptRealloc, /* 430 */ + Tcl_AttemptDbCkrealloc, /* 431 */ + Tcl_AttemptSetObjLength, /* 432 */ + Tcl_GetChannelThread, /* 433 */ + Tcl_GetUnicodeFromObj, /* 434 */ + Tcl_GetMathFuncInfo, /* 435 */ + Tcl_ListMathFuncs, /* 436 */ + Tcl_SubstObj, /* 437 */ + Tcl_DetachChannel, /* 438 */ + Tcl_IsStandardChannel, /* 439 */ + Tcl_FSCopyFile, /* 440 */ + Tcl_FSCopyDirectory, /* 441 */ + Tcl_FSCreateDirectory, /* 442 */ + Tcl_FSDeleteFile, /* 443 */ + Tcl_FSLoadFile, /* 444 */ + Tcl_FSMatchInDirectory, /* 445 */ + Tcl_FSLink, /* 446 */ + Tcl_FSRemoveDirectory, /* 447 */ + Tcl_FSRenameFile, /* 448 */ + Tcl_FSLstat, /* 449 */ + Tcl_FSUtime, /* 450 */ + Tcl_FSFileAttrsGet, /* 451 */ + Tcl_FSFileAttrsSet, /* 452 */ + Tcl_FSFileAttrStrings, /* 453 */ + Tcl_FSStat, /* 454 */ + Tcl_FSAccess, /* 455 */ + Tcl_FSOpenFileChannel, /* 456 */ + Tcl_FSGetCwd, /* 457 */ + Tcl_FSChdir, /* 458 */ + Tcl_FSConvertToPathType, /* 459 */ + Tcl_FSJoinPath, /* 460 */ + Tcl_FSSplitPath, /* 461 */ + Tcl_FSEqualPaths, /* 462 */ + Tcl_FSGetNormalizedPath, /* 463 */ + Tcl_FSJoinToPath, /* 464 */ + Tcl_FSGetInternalRep, /* 465 */ + Tcl_FSGetTranslatedPath, /* 466 */ + Tcl_FSEvalFile, /* 467 */ + Tcl_FSNewNativePath, /* 468 */ + Tcl_FSGetNativePath, /* 469 */ + Tcl_FSFileSystemInfo, /* 470 */ + Tcl_FSPathSeparator, /* 471 */ + Tcl_FSListVolumes, /* 472 */ + Tcl_FSRegister, /* 473 */ + Tcl_FSUnregister, /* 474 */ + Tcl_FSData, /* 475 */ + Tcl_FSGetTranslatedStringPath, /* 476 */ + Tcl_FSGetFileSystemForPath, /* 477 */ + Tcl_FSGetPathType, /* 478 */ + Tcl_OutputBuffered, /* 479 */ + Tcl_FSMountsChanged, /* 480 */ + Tcl_EvalTokensStandard, /* 481 */ + Tcl_GetTime, /* 482 */ + Tcl_CreateObjTrace, /* 483 */ + Tcl_GetCommandInfoFromToken, /* 484 */ + Tcl_SetCommandInfoFromToken, /* 485 */ + Tcl_DbNewWideIntObj, /* 486 */ + Tcl_GetWideIntFromObj, /* 487 */ + Tcl_NewWideIntObj, /* 488 */ + Tcl_SetWideIntObj, /* 489 */ + Tcl_AllocStatBuf, /* 490 */ + Tcl_Seek, /* 491 */ + Tcl_Tell, /* 492 */ + Tcl_ChannelWideSeekProc, /* 493 */ +}; + +/* !END!: Do not edit above this line. */ diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index c183985..0c1d9b7 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.3 2004/05/14 21:41:12 kennykb Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.4 2004/05/17 14:26:50 kennykb Exp $ */ #ifndef _TCLUNIXPORT @@ -565,10 +565,10 @@ EXTERN void TclpMutexLock _ANSI_ARGS_((TclpMutex *mPtr)); EXTERN void TclpMutexUnlock _ANSI_ARGS_((TclpMutex *mPtr)); EXTERN Tcl_DirEntry * TclpReaddir(DIR *); #ifndef TclpLocaltime -EXTERN struct tm * TclpLocaltime(CONST time_t *); +EXTERN struct tm * TclpLocaltime(CONST TclpTime_t); #endif #ifndef TclpGmtime -EXTERN struct tm * TclpGmtime(CONST time_t *); +EXTERN struct tm * TclpGmtime(CONST TclpTime_t); #endif EXTERN char * TclpInetNtoa(struct in_addr); #define readdir(x) TclpReaddir(x) diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c index 4f99801..47492e9 100644 --- a/unix/tclUnixTime.c +++ b/unix/tclUnixTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.1 2004/05/14 21:41:12 kennykb Exp $ + * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.2 2004/05/17 14:26:50 kennykb Exp $ */ #include "tclInt.h" @@ -149,7 +149,7 @@ TclpGetTimeZone (currentTime) /* Struct tm contains tm_tzadj - that value may be used. */ time_t curTime = (time_t) currentTime; - struct tm *timeDataPtr = TclpLocaltime(&curTime); + struct tm *timeDataPtr = TclpLocaltime((TclpTime_t) &curTime); int timeZone; timeZone = timeDataPtr->tm_tzadj / 60; @@ -167,7 +167,7 @@ TclpGetTimeZone (currentTime) /* Struct tm contains tm_gmtoff - that value may be used. */ time_t curTime = (time_t) currentTime; - struct tm *timeDataPtr = TclpLocaltime(&curTime); + struct tm *timeDataPtr = TclpLocaltime((TclpTime_t) &curTime); int timeZone; timeZone = -(timeDataPtr->tm_gmtoff / 60); @@ -208,7 +208,7 @@ TclpGetTimeZone (currentTime) time_t tt; struct tm *stm; tt = 849268800L; /* 1996-11-29 12:00:00 GMT */ - stm = TclpLocaltime(&tt); /* eg 1996-11-29 6:00:00 CST6CDT */ + stm = TclpLocaltime((TclpTime_t) &tt); /* eg 1996-11-29 6:00:00 CST6CDT */ /* The calculation below assumes a max of +12 or -12 hours from GMT */ timeZone = (12 - stm->tm_hour)*60 + (0 - stm->tm_min); if ( stm -> tm_isdst ) { @@ -280,12 +280,10 @@ TclpGetDate(time, useGMT) TclpTime_t time; int useGMT; { - CONST time_t *tp = (CONST time_t *)time; - if (useGMT) { - return TclpGmtime(tp); + return TclpGmtime(time); } else { - return TclpLocaltime(tp); + return TclpLocaltime(time); } } @@ -345,11 +343,13 @@ TclpStrftime(s, maxsize, format, t, useGMT) */ struct tm * -TclpGmtime( timePtr ) - CONST time_t *timePtr; /* Pointer to the number of seconds +TclpGmtime( tt ) + TclpTime_t tt; +{ + CONST time_t *timePtr = (CONST time_t *) tt; + /* Pointer to the number of seconds * since the local system's epoch */ -{ /* * Get a thread-local buffer to hold the returned time. */ @@ -371,7 +371,7 @@ TclpGmtime( timePtr ) */ struct tm* TclpGmtime_unix( timePtr ) - CONST time_t* timePtr; + TclpTime_t timePtr; { return TclpGmtime( timePtr ); } @@ -394,11 +394,12 @@ TclpGmtime_unix( timePtr ) */ struct tm * -TclpLocaltime(timePtr) - CONST time_t *timePtr; /* Pointer to the number of seconds - * since the local system's epoch */ - +TclpLocaltime( tt ) + TclpTime_t tt; { + CONST time_t *timePtr = (CONST time_t *) tt; + /* Pointer to the number of seconds + * since the local system's epoch */ /* * Get a thread-local buffer to hold the returned time. */ @@ -421,7 +422,7 @@ TclpLocaltime(timePtr) */ struct tm* TclpLocaltime_unix( timePtr ) - CONST time_t* timePtr; + TclpTime_t timePtr; { return TclpLocaltime( timePtr ); } diff --git a/win/tclWinTime.c b/win/tclWinTime.c index 539dd6c..faa7a3c 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.3 2004/05/14 21:41:12 kennykb Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.4 2004/05/17 14:26:50 kennykb Exp $ */ #include "tclWinInt.h" @@ -1072,11 +1072,12 @@ AccumulateSample( Tcl_WideInt perfCounter, */ struct tm * -TclpGmtime( timePtr ) - CONST time_t *timePtr; /* Pointer to the number of seconds - * since the local system's epoch */ - +TclpGmtime( tt ) + TclpTime_t tt; { + CONST time_t *timePtr = (CONST time_t *) tt; + /* Pointer to the number of seconds + * since the local system's epoch */ /* * The MS implementation of gmtime is thread safe because * it returns the time in a block of thread-local storage, @@ -1103,11 +1104,13 @@ TclpGmtime( timePtr ) */ struct tm * -TclpLocaltime( timePtr ) - CONST time_t *timePtr; /* Pointer to the number of seconds +TclpLocaltime( tt ) + TclpTime_t tt; +{ + CONST time_t *timePtr = (CONST time_t *) tt; + /* Pointer to the number of seconds * since the local system's epoch */ -{ /* * The MS implementation of localtime is thread safe because * it returns the time in a block of thread-local storage, -- cgit v0.12 From 796e34e6aaf5f3b99f1c0e9d7906567eeb2ad087 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 17 May 2004 16:25:12 +0000 Subject: commit genstubs generated files with unix line endings --- generic/tclDecls.h | 8284 ++++++++++++++++++++++----------------------- generic/tclIntDecls.h | 2724 +++++++-------- generic/tclIntPlatDecls.h | 1170 +++---- generic/tclPlatDecls.h | 394 +-- generic/tclStubInit.c | 1882 +++++----- 5 files changed, 7227 insertions(+), 7227 deletions(-) diff --git a/generic/tclDecls.h b/generic/tclDecls.h index f4bf977..27f36b4 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -1,4142 +1,4142 @@ -/* - * tclDecls.h -- - * - * Declarations of functions in the platform independent public Tcl API. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclDecls.h,v 1.93.2.2 2004/05/17 14:26:47 kennykb Exp $ - */ - -#ifndef _TCLDECLS -#define _TCLDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tcl.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -/* 0 */ -EXTERN int Tcl_PkgProvideEx _ANSI_ARGS_((Tcl_Interp* interp, - CONST char* name, CONST char* version, - ClientData clientData)); -/* 1 */ -EXTERN CONST84_RETURN char * Tcl_PkgRequireEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - CONST char * version, int exact, - ClientData * clientDataPtr)); -/* 2 */ -EXTERN void Tcl_Panic _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); -/* 3 */ -EXTERN char * Tcl_Alloc _ANSI_ARGS_((unsigned int size)); -/* 4 */ -EXTERN void Tcl_Free _ANSI_ARGS_((char * ptr)); -/* 5 */ -EXTERN char * Tcl_Realloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* 6 */ -EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, - CONST char * file, int line)); -/* 7 */ -EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char * ptr, - CONST char * file, int line)); -/* 8 */ -EXTERN char * Tcl_DbCkrealloc _ANSI_ARGS_((char * ptr, - unsigned int size, CONST char * file, - int line)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 9 */ -EXTERN void Tcl_CreateFileHandler _ANSI_ARGS_((int fd, int mask, - Tcl_FileProc * proc, ClientData clientData)); -#endif /* UNIX */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 10 */ -EXTERN void Tcl_DeleteFileHandler _ANSI_ARGS_((int fd)); -#endif /* UNIX */ -/* 11 */ -EXTERN void Tcl_SetTimer _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 12 */ -EXTERN void Tcl_Sleep _ANSI_ARGS_((int ms)); -/* 13 */ -EXTERN int Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 14 */ -EXTERN int Tcl_AppendAllObjTypes _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr)); -/* 15 */ -EXTERN void Tcl_AppendStringsToObj _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); -/* 16 */ -EXTERN void Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj* objPtr, - CONST char* bytes, int length)); -/* 17 */ -EXTERN Tcl_Obj * Tcl_ConcatObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST objv[])); -/* 18 */ -EXTERN int Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); -/* 19 */ -EXTERN void Tcl_DbDecrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 20 */ -EXTERN void Tcl_DbIncrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 21 */ -EXTERN int Tcl_DbIsShared _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 22 */ -EXTERN Tcl_Obj * Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue, - CONST char * file, int line)); -/* 23 */ -EXTERN Tcl_Obj * Tcl_DbNewByteArrayObj _ANSI_ARGS_(( - CONST unsigned char * bytes, int length, - CONST char * file, int line)); -/* 24 */ -EXTERN Tcl_Obj * Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue, - CONST char * file, int line)); -/* 25 */ -EXTERN Tcl_Obj * Tcl_DbNewListObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST * objv, CONST char * file, - int line)); -/* 26 */ -EXTERN Tcl_Obj * Tcl_DbNewLongObj _ANSI_ARGS_((long longValue, - CONST char * file, int line)); -/* 27 */ -EXTERN Tcl_Obj * Tcl_DbNewObj _ANSI_ARGS_((CONST char * file, - int line)); -/* 28 */ -EXTERN Tcl_Obj * Tcl_DbNewStringObj _ANSI_ARGS_((CONST char * bytes, - int length, CONST char * file, int line)); -/* 29 */ -EXTERN Tcl_Obj * Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 30 */ -EXTERN void TclFreeObj _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 31 */ -EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * boolPtr)); -/* 32 */ -EXTERN int Tcl_GetBooleanFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - int * boolPtr)); -/* 33 */ -EXTERN unsigned char * Tcl_GetByteArrayFromObj _ANSI_ARGS_(( - Tcl_Obj * objPtr, int * lengthPtr)); -/* 34 */ -EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, double * doublePtr)); -/* 35 */ -EXTERN int Tcl_GetDoubleFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - double * doublePtr)); -/* 36 */ -EXTERN int Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, CONST84 char ** tablePtr, - CONST char * msg, int flags, int * indexPtr)); -/* 37 */ -EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * intPtr)); -/* 38 */ -EXTERN int Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int * intPtr)); -/* 39 */ -EXTERN int Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, long * longPtr)); -/* 40 */ -EXTERN Tcl_ObjType * Tcl_GetObjType _ANSI_ARGS_((CONST char * typeName)); -/* 41 */ -EXTERN char * Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int * lengthPtr)); -/* 42 */ -EXTERN void Tcl_InvalidateStringRep _ANSI_ARGS_(( - Tcl_Obj * objPtr)); -/* 43 */ -EXTERN int Tcl_ListObjAppendList _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - Tcl_Obj * elemListPtr)); -/* 44 */ -EXTERN int Tcl_ListObjAppendElement _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - Tcl_Obj * objPtr)); -/* 45 */ -EXTERN int Tcl_ListObjGetElements _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - int * objcPtr, Tcl_Obj *** objvPtr)); -/* 46 */ -EXTERN int Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int index, - Tcl_Obj ** objPtrPtr)); -/* 47 */ -EXTERN int Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int * lengthPtr)); -/* 48 */ -EXTERN int Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int first, int count, - int objc, Tcl_Obj *CONST objv[])); -/* 49 */ -EXTERN Tcl_Obj * Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue)); -/* 50 */ -EXTERN Tcl_Obj * Tcl_NewByteArrayObj _ANSI_ARGS_(( - CONST unsigned char* bytes, int length)); -/* 51 */ -EXTERN Tcl_Obj * Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue)); -/* 52 */ -EXTERN Tcl_Obj * Tcl_NewIntObj _ANSI_ARGS_((int intValue)); -/* 53 */ -EXTERN Tcl_Obj * Tcl_NewListObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST objv[])); -/* 54 */ -EXTERN Tcl_Obj * Tcl_NewLongObj _ANSI_ARGS_((long longValue)); -/* 55 */ -EXTERN Tcl_Obj * Tcl_NewObj _ANSI_ARGS_((void)); -/* 56 */ -EXTERN Tcl_Obj * Tcl_NewStringObj _ANSI_ARGS_((CONST char * bytes, - int length)); -/* 57 */ -EXTERN void Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int boolValue)); -/* 58 */ -EXTERN unsigned char * Tcl_SetByteArrayLength _ANSI_ARGS_((Tcl_Obj * objPtr, - int length)); -/* 59 */ -EXTERN void Tcl_SetByteArrayObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST unsigned char * bytes, int length)); -/* 60 */ -EXTERN void Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj * objPtr, - double doubleValue)); -/* 61 */ -EXTERN void Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int intValue)); -/* 62 */ -EXTERN void Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int objc, Tcl_Obj *CONST objv[])); -/* 63 */ -EXTERN void Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj * objPtr, - long longValue)); -/* 64 */ -EXTERN void Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj * objPtr, - int length)); -/* 65 */ -EXTERN void Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj* objPtr, - CONST char* bytes, int length)); -/* 66 */ -EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * message)); -/* 67 */ -EXTERN void Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * message, int length)); -/* 68 */ -EXTERN void Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp * interp)); -/* 69 */ -EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 70 */ -EXTERN void Tcl_AppendResult _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 71 */ -EXTERN Tcl_AsyncHandler Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc * proc, - ClientData clientData)); -/* 72 */ -EXTERN void Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async)); -/* 73 */ -EXTERN int Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int code)); -/* 74 */ -EXTERN void Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async)); -/* 75 */ -EXTERN int Tcl_AsyncReady _ANSI_ARGS_((void)); -/* 76 */ -EXTERN void Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp * interp)); -/* 77 */ -EXTERN char Tcl_Backslash _ANSI_ARGS_((CONST char * src, - int * readPtr)); -/* 78 */ -EXTERN int Tcl_BadChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * optionName, - CONST char * optionList)); -/* 79 */ -EXTERN void Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 80 */ -EXTERN void Tcl_CancelIdleCall _ANSI_ARGS_(( - Tcl_IdleProc * idleProc, - ClientData clientData)); -/* 81 */ -EXTERN int Tcl_Close _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 82 */ -EXTERN int Tcl_CommandComplete _ANSI_ARGS_((CONST char * cmd)); -/* 83 */ -EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv)); -/* 84 */ -EXTERN int Tcl_ConvertElement _ANSI_ARGS_((CONST char * src, - char * dst, int flags)); -/* 85 */ -EXTERN int Tcl_ConvertCountedElement _ANSI_ARGS_(( - CONST char * src, int length, char * dst, - int flags)); -/* 86 */ -EXTERN int Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp * slave, - CONST char * slaveCmd, Tcl_Interp * target, - CONST char * targetCmd, int argc, - CONST84 char * CONST * argv)); -/* 87 */ -EXTERN int Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp * slave, - CONST char * slaveCmd, Tcl_Interp * target, - CONST char * targetCmd, int objc, - Tcl_Obj *CONST objv[])); -/* 88 */ -EXTERN Tcl_Channel Tcl_CreateChannel _ANSI_ARGS_(( - Tcl_ChannelType * typePtr, - CONST char * chanName, - ClientData instanceData, int mask)); -/* 89 */ -EXTERN void Tcl_CreateChannelHandler _ANSI_ARGS_(( - Tcl_Channel chan, int mask, - Tcl_ChannelProc * proc, - ClientData clientData)); -/* 90 */ -EXTERN void Tcl_CreateCloseHandler _ANSI_ARGS_((Tcl_Channel chan, - Tcl_CloseProc * proc, ClientData clientData)); -/* 91 */ -EXTERN Tcl_Command Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, Tcl_CmdProc * proc, - ClientData clientData, - Tcl_CmdDeleteProc * deleteProc)); -/* 92 */ -EXTERN void Tcl_CreateEventSource _ANSI_ARGS_(( - Tcl_EventSetupProc * setupProc, - Tcl_EventCheckProc * checkProc, - ClientData clientData)); -/* 93 */ -EXTERN void Tcl_CreateExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 94 */ -EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); -/* 95 */ -EXTERN void Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, int numArgs, - Tcl_ValueType * argTypes, - Tcl_MathProc * proc, ClientData clientData)); -/* 96 */ -EXTERN Tcl_Command Tcl_CreateObjCommand _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * cmdName, - Tcl_ObjCmdProc * proc, ClientData clientData, - Tcl_CmdDeleteProc * deleteProc)); -/* 97 */ -EXTERN Tcl_Interp * Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveName, int isSafe)); -/* 98 */ -EXTERN Tcl_TimerToken Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds, - Tcl_TimerProc * proc, ClientData clientData)); -/* 99 */ -EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp * interp, - int level, Tcl_CmdTraceProc * proc, - ClientData clientData)); -/* 100 */ -EXTERN void Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name)); -/* 101 */ -EXTERN void Tcl_DeleteChannelHandler _ANSI_ARGS_(( - Tcl_Channel chan, Tcl_ChannelProc * proc, - ClientData clientData)); -/* 102 */ -EXTERN void Tcl_DeleteCloseHandler _ANSI_ARGS_((Tcl_Channel chan, - Tcl_CloseProc * proc, ClientData clientData)); -/* 103 */ -EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName)); -/* 104 */ -EXTERN int Tcl_DeleteCommandFromToken _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command)); -/* 105 */ -EXTERN void Tcl_DeleteEvents _ANSI_ARGS_(( - Tcl_EventDeleteProc * proc, - ClientData clientData)); -/* 106 */ -EXTERN void Tcl_DeleteEventSource _ANSI_ARGS_(( - Tcl_EventSetupProc * setupProc, - Tcl_EventCheckProc * checkProc, - ClientData clientData)); -/* 107 */ -EXTERN void Tcl_DeleteExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 108 */ -EXTERN void Tcl_DeleteHashEntry _ANSI_ARGS_(( - Tcl_HashEntry * entryPtr)); -/* 109 */ -EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 110 */ -EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp * interp)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 111 */ -EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, - Tcl_Pid * pidPtr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 111 */ -EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, - Tcl_Pid * pidPtr)); -#endif /* __WIN32__ */ -/* 112 */ -EXTERN void Tcl_DeleteTimerHandler _ANSI_ARGS_(( - Tcl_TimerToken token)); -/* 113 */ -EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Trace trace)); -/* 114 */ -EXTERN void Tcl_DontCallWhenDeleted _ANSI_ARGS_(( - Tcl_Interp * interp, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 115 */ -EXTERN int Tcl_DoOneEvent _ANSI_ARGS_((int flags)); -/* 116 */ -EXTERN void Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc * proc, - ClientData clientData)); -/* 117 */ -EXTERN char * Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString * dsPtr, - CONST char * str, int length)); -/* 118 */ -EXTERN char * Tcl_DStringAppendElement _ANSI_ARGS_(( - Tcl_DString * dsPtr, CONST char * string)); -/* 119 */ -EXTERN void Tcl_DStringEndSublist _ANSI_ARGS_(( - Tcl_DString * dsPtr)); -/* 120 */ -EXTERN void Tcl_DStringFree _ANSI_ARGS_((Tcl_DString * dsPtr)); -/* 121 */ -EXTERN void Tcl_DStringGetResult _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_DString * dsPtr)); -/* 122 */ -EXTERN void Tcl_DStringInit _ANSI_ARGS_((Tcl_DString * dsPtr)); -/* 123 */ -EXTERN void Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * dsPtr)); -/* 124 */ -EXTERN void Tcl_DStringSetLength _ANSI_ARGS_(( - Tcl_DString * dsPtr, int length)); -/* 125 */ -EXTERN void Tcl_DStringStartSublist _ANSI_ARGS_(( - Tcl_DString * dsPtr)); -/* 126 */ -EXTERN int Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan)); -/* 127 */ -EXTERN CONST84_RETURN char * Tcl_ErrnoId _ANSI_ARGS_((void)); -/* 128 */ -EXTERN CONST84_RETURN char * Tcl_ErrnoMsg _ANSI_ARGS_((int err)); -/* 129 */ -EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 130 */ -EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * fileName)); -/* 131 */ -EXTERN int Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr)); -/* 132 */ -EXTERN void Tcl_EventuallyFree _ANSI_ARGS_(( - ClientData clientData, - Tcl_FreeProc * freeProc)); -/* 133 */ -EXTERN void Tcl_Exit _ANSI_ARGS_((int status)); -/* 134 */ -EXTERN int Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * hiddenCmdToken, - CONST char * cmdName)); -/* 135 */ -EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * ptr)); -/* 136 */ -EXTERN int Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int * ptr)); -/* 137 */ -EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, double * ptr)); -/* 138 */ -EXTERN int Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, double * ptr)); -/* 139 */ -EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, long * ptr)); -/* 140 */ -EXTERN int Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, long * ptr)); -/* 141 */ -EXTERN int Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); -/* 142 */ -EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 143 */ -EXTERN void Tcl_Finalize _ANSI_ARGS_((void)); -/* 144 */ -EXTERN void Tcl_FindExecutable _ANSI_ARGS_((CONST char * argv0)); -/* 145 */ -EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, - Tcl_HashSearch * searchPtr)); -/* 146 */ -EXTERN int Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan)); -/* 147 */ -EXTERN void Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp * interp)); -/* 148 */ -EXTERN int Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveCmd, - Tcl_Interp ** targetInterpPtr, - CONST84 char ** targetCmdPtr, int * argcPtr, - CONST84 char *** argvPtr)); -/* 149 */ -EXTERN int Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveCmd, - Tcl_Interp ** targetInterpPtr, - CONST84 char ** targetCmdPtr, int * objcPtr, - Tcl_Obj *** objv)); -/* 150 */ -EXTERN ClientData Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_InterpDeleteProc ** procPtr)); -/* 151 */ -EXTERN Tcl_Channel Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * chanName, int * modePtr)); -/* 152 */ -EXTERN int Tcl_GetChannelBufferSize _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 153 */ -EXTERN int Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan, - int direction, ClientData * handlePtr)); -/* 154 */ -EXTERN ClientData Tcl_GetChannelInstanceData _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 155 */ -EXTERN int Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan)); -/* 156 */ -EXTERN CONST84_RETURN char * Tcl_GetChannelName _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 157 */ -EXTERN int Tcl_GetChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan, - CONST char * optionName, Tcl_DString * dsPtr)); -/* 158 */ -EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan)); -/* 159 */ -EXTERN int Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, Tcl_CmdInfo * infoPtr)); -/* 160 */ -EXTERN CONST84_RETURN char * Tcl_GetCommandName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command)); -/* 161 */ -EXTERN int Tcl_GetErrno _ANSI_ARGS_((void)); -/* 162 */ -EXTERN CONST84_RETURN char * Tcl_GetHostName _ANSI_ARGS_((void)); -/* 163 */ -EXTERN int Tcl_GetInterpPath _ANSI_ARGS_(( - Tcl_Interp * askInterp, - Tcl_Interp * slaveInterp)); -/* 164 */ -EXTERN Tcl_Interp * Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp * interp)); -/* 165 */ -EXTERN CONST char * Tcl_GetNameOfExecutable _ANSI_ARGS_((void)); -/* 166 */ -EXTERN Tcl_Obj * Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp * interp)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 167 */ -EXTERN int Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int forWriting, - int checkUsage, ClientData * filePtr)); -#endif /* UNIX */ -/* 168 */ -EXTERN Tcl_PathType Tcl_GetPathType _ANSI_ARGS_((CONST char * path)); -/* 169 */ -EXTERN int Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan, - Tcl_DString * dsPtr)); -/* 170 */ -EXTERN int Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan, - Tcl_Obj * objPtr)); -/* 171 */ -EXTERN int Tcl_GetServiceMode _ANSI_ARGS_((void)); -/* 172 */ -EXTERN Tcl_Interp * Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveName)); -/* 173 */ -EXTERN Tcl_Channel Tcl_GetStdChannel _ANSI_ARGS_((int type)); -/* 174 */ -EXTERN CONST84_RETURN char * Tcl_GetStringResult _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 175 */ -EXTERN CONST84_RETURN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags)); -/* 176 */ -EXTERN CONST84_RETURN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 177 */ -EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * command)); -/* 178 */ -EXTERN int Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr)); -/* 179 */ -EXTERN int Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, - CONST char * hiddenCmdToken)); -/* 180 */ -EXTERN int Tcl_Init _ANSI_ARGS_((Tcl_Interp * interp)); -/* 181 */ -EXTERN void Tcl_InitHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, int keyType)); -/* 182 */ -EXTERN int Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan)); -/* 183 */ -EXTERN int Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 184 */ -EXTERN int Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp * interp)); -/* 185 */ -EXTERN int Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp * interp)); -/* 186 */ -EXTERN char * Tcl_JoinPath _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv, - Tcl_DString * resultPtr)); -/* 187 */ -EXTERN int Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, char * addr, int type)); -/* Slot 188 is reserved */ -/* 189 */ -EXTERN Tcl_Channel Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle, - int mode)); -/* 190 */ -EXTERN int Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp * interp)); -/* 191 */ -EXTERN Tcl_Channel Tcl_MakeTcpClientChannel _ANSI_ARGS_(( - ClientData tcpSocket)); -/* 192 */ -EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv)); -/* 193 */ -EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( - Tcl_HashSearch * searchPtr)); -/* 194 */ -EXTERN void Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel, - int mask)); -/* 195 */ -EXTERN Tcl_Obj * Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - int flags)); -/* 196 */ -EXTERN Tcl_Obj * Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - Tcl_Obj * newValuePtr, int flags)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 197 */ -EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( - Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 197 */ -EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( - Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -#endif /* __WIN32__ */ -/* 198 */ -EXTERN Tcl_Channel Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * fileName, - CONST char * modeString, int permissions)); -/* 199 */ -EXTERN Tcl_Channel Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp * interp, - int port, CONST char * address, - CONST char * myaddr, int myport, int async)); -/* 200 */ -EXTERN Tcl_Channel Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp * interp, - int port, CONST char * host, - Tcl_TcpAcceptProc * acceptProc, - ClientData callbackData)); -/* 201 */ -EXTERN void Tcl_Preserve _ANSI_ARGS_((ClientData data)); -/* 202 */ -EXTERN void Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp * interp, - double value, char * dst)); -/* 203 */ -EXTERN int Tcl_PutEnv _ANSI_ARGS_((CONST char * string)); -/* 204 */ -EXTERN CONST84_RETURN char * Tcl_PosixError _ANSI_ARGS_((Tcl_Interp * interp)); -/* 205 */ -EXTERN void Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event * evPtr, - Tcl_QueuePosition position)); -/* 206 */ -EXTERN int Tcl_Read _ANSI_ARGS_((Tcl_Channel chan, - char * bufPtr, int toRead)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 207 */ -EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 207 */ -EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); -#endif /* __WIN32__ */ -/* 208 */ -EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmd, int flags)); -/* 209 */ -EXTERN int Tcl_RecordAndEvalObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * cmdPtr, - int flags)); -/* 210 */ -EXTERN void Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 211 */ -EXTERN void Tcl_RegisterObjType _ANSI_ARGS_(( - Tcl_ObjType * typePtr)); -/* 212 */ -EXTERN Tcl_RegExp Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 213 */ -EXTERN int Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp regexp, CONST char * str, - CONST char * start)); -/* 214 */ -EXTERN int Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CONST char * pattern)); -/* 215 */ -EXTERN void Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp, - int index, CONST84 char ** startPtr, - CONST84 char ** endPtr)); -/* 216 */ -EXTERN void Tcl_Release _ANSI_ARGS_((ClientData clientData)); -/* 217 */ -EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp * interp)); -/* 218 */ -EXTERN int Tcl_ScanElement _ANSI_ARGS_((CONST char * str, - int * flagPtr)); -/* 219 */ -EXTERN int Tcl_ScanCountedElement _ANSI_ARGS_((CONST char * str, - int length, int * flagPtr)); -/* 220 */ -EXTERN int Tcl_SeekOld _ANSI_ARGS_((Tcl_Channel chan, - int offset, int mode)); -/* 221 */ -EXTERN int Tcl_ServiceAll _ANSI_ARGS_((void)); -/* 222 */ -EXTERN int Tcl_ServiceEvent _ANSI_ARGS_((int flags)); -/* 223 */ -EXTERN void Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 224 */ -EXTERN void Tcl_SetChannelBufferSize _ANSI_ARGS_(( - Tcl_Channel chan, int sz)); -/* 225 */ -EXTERN int Tcl_SetChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan, - CONST char * optionName, - CONST char * newValue)); -/* 226 */ -EXTERN int Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, - CONST Tcl_CmdInfo * infoPtr)); -/* 227 */ -EXTERN void Tcl_SetErrno _ANSI_ARGS_((int err)); -/* 228 */ -EXTERN void Tcl_SetErrorCode _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 229 */ -EXTERN void Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 230 */ -EXTERN void Tcl_SetPanicProc _ANSI_ARGS_(( - Tcl_PanicProc * panicProc)); -/* 231 */ -EXTERN int Tcl_SetRecursionLimit _ANSI_ARGS_(( - Tcl_Interp * interp, int depth)); -/* 232 */ -EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp * interp, - char * str, Tcl_FreeProc * freeProc)); -/* 233 */ -EXTERN int Tcl_SetServiceMode _ANSI_ARGS_((int mode)); -/* 234 */ -EXTERN void Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * errorObjPtr)); -/* 235 */ -EXTERN void Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * resultObjPtr)); -/* 236 */ -EXTERN void Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel, - int type)); -/* 237 */ -EXTERN CONST84_RETURN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, CONST char * newValue, - int flags)); -/* 238 */ -EXTERN CONST84_RETURN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - CONST char * newValue, int flags)); -/* 239 */ -EXTERN CONST84_RETURN char * Tcl_SignalId _ANSI_ARGS_((int sig)); -/* 240 */ -EXTERN CONST84_RETURN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); -/* 241 */ -EXTERN void Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp * interp)); -/* 242 */ -EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * listStr, int * argcPtr, - CONST84 char *** argvPtr)); -/* 243 */ -EXTERN void Tcl_SplitPath _ANSI_ARGS_((CONST char * path, - int * argcPtr, CONST84 char *** argvPtr)); -/* 244 */ -EXTERN void Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * pkgName, - Tcl_PackageInitProc * initProc, - Tcl_PackageInitProc * safeInitProc)); -/* 245 */ -EXTERN int Tcl_StringMatch _ANSI_ARGS_((CONST char * str, - CONST char * pattern)); -/* 246 */ -EXTERN int Tcl_TellOld _ANSI_ARGS_((Tcl_Channel chan)); -/* 247 */ -EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 248 */ -EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 249 */ -EXTERN char * Tcl_TranslateFileName _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_DString * bufferPtr)); -/* 250 */ -EXTERN int Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, - CONST char * str, int len, int atHead)); -/* 251 */ -EXTERN void Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 252 */ -EXTERN int Tcl_UnregisterChannel _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan)); -/* 253 */ -EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags)); -/* 254 */ -EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 255 */ -EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 256 */ -EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 257 */ -EXTERN void Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 258 */ -EXTERN int Tcl_UpVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * frameName, CONST char * varName, - CONST char * localName, int flags)); -/* 259 */ -EXTERN int Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * frameName, CONST char * part1, - CONST char * part2, CONST char * localName, - int flags)); -/* 260 */ -EXTERN int Tcl_VarEval _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 261 */ -EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * procPtr, - ClientData prevClientData)); -/* 262 */ -EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * procPtr, - ClientData prevClientData)); -/* 263 */ -EXTERN int Tcl_Write _ANSI_ARGS_((Tcl_Channel chan, - CONST char * s, int slen)); -/* 264 */ -EXTERN void Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], - CONST char * message)); -/* 265 */ -EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_(( - CONST char * fileName)); -/* 266 */ -EXTERN void Tcl_ValidateAllMemory _ANSI_ARGS_((CONST char * file, - int line)); -/* 267 */ -EXTERN void Tcl_AppendResultVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 268 */ -EXTERN void Tcl_AppendStringsToObjVA _ANSI_ARGS_(( - Tcl_Obj * objPtr, va_list argList)); -/* 269 */ -EXTERN CONST84_RETURN char * Tcl_HashStats _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 270 */ -EXTERN CONST84_RETURN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CONST84 char ** termPtr)); -/* 271 */ -EXTERN CONST84_RETURN char * Tcl_PkgPresent _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version, - int exact)); -/* 272 */ -EXTERN CONST84_RETURN char * Tcl_PkgPresentEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - CONST char * version, int exact, - ClientData * clientDataPtr)); -/* 273 */ -EXTERN int Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version)); -/* 274 */ -EXTERN CONST84_RETURN char * Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version, - int exact)); -/* 275 */ -EXTERN void Tcl_SetErrorCodeVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 276 */ -EXTERN int Tcl_VarEvalVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 277 */ -EXTERN Tcl_Pid Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, - int options)); -/* 278 */ -EXTERN void Tcl_PanicVA _ANSI_ARGS_((CONST char * format, - va_list argList)); -/* 279 */ -EXTERN void Tcl_GetVersion _ANSI_ARGS_((int * major, int * minor, - int * patchLevel, int * type)); -/* 280 */ -EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp * interp)); -/* 281 */ -EXTERN Tcl_Channel Tcl_StackChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_ChannelType * typePtr, - ClientData instanceData, int mask, - Tcl_Channel prevChan)); -/* 282 */ -EXTERN int Tcl_UnstackChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 283 */ -EXTERN Tcl_Channel Tcl_GetStackedChannel _ANSI_ARGS_((Tcl_Channel chan)); -/* 284 */ -EXTERN void Tcl_SetMainLoop _ANSI_ARGS_((Tcl_MainLoopProc * proc)); -/* Slot 285 is reserved */ -/* 286 */ -EXTERN void Tcl_AppendObjToObj _ANSI_ARGS_((Tcl_Obj * objPtr, - Tcl_Obj * appendObjPtr)); -/* 287 */ -EXTERN Tcl_Encoding Tcl_CreateEncoding _ANSI_ARGS_(( - Tcl_EncodingType * typePtr)); -/* 288 */ -EXTERN void Tcl_CreateThreadExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 289 */ -EXTERN void Tcl_DeleteThreadExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 290 */ -EXTERN void Tcl_DiscardResult _ANSI_ARGS_(( - Tcl_SavedResult * statePtr)); -/* 291 */ -EXTERN int Tcl_EvalEx _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * script, int numBytes, int flags)); -/* 292 */ -EXTERN int Tcl_EvalObjv _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 293 */ -EXTERN int Tcl_EvalObjEx _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int flags)); -/* 294 */ -EXTERN void Tcl_ExitThread _ANSI_ARGS_((int status)); -/* 295 */ -EXTERN int Tcl_ExternalToUtf _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Encoding encoding, CONST char * src, - int srcLen, int flags, - Tcl_EncodingState * statePtr, char * dst, - int dstLen, int * srcReadPtr, - int * dstWrotePtr, int * dstCharsPtr)); -/* 296 */ -EXTERN char * Tcl_ExternalToUtfDString _ANSI_ARGS_(( - Tcl_Encoding encoding, CONST char * src, - int srcLen, Tcl_DString * dsPtr)); -/* 297 */ -EXTERN void Tcl_FinalizeThread _ANSI_ARGS_((void)); -/* 298 */ -EXTERN void Tcl_FinalizeNotifier _ANSI_ARGS_(( - ClientData clientData)); -/* 299 */ -EXTERN void Tcl_FreeEncoding _ANSI_ARGS_((Tcl_Encoding encoding)); -/* 300 */ -EXTERN Tcl_ThreadId Tcl_GetCurrentThread _ANSI_ARGS_((void)); -/* 301 */ -EXTERN Tcl_Encoding Tcl_GetEncoding _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name)); -/* 302 */ -EXTERN CONST84_RETURN char * Tcl_GetEncodingName _ANSI_ARGS_(( - Tcl_Encoding encoding)); -/* 303 */ -EXTERN void Tcl_GetEncodingNames _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 304 */ -EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - CONST VOID * tablePtr, int offset, - CONST char * msg, int flags, int * indexPtr)); -/* 305 */ -EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_(( - Tcl_ThreadDataKey * keyPtr, int size)); -/* 306 */ -EXTERN Tcl_Obj * Tcl_GetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 307 */ -EXTERN ClientData Tcl_InitNotifier _ANSI_ARGS_((void)); -/* 308 */ -EXTERN void Tcl_MutexLock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); -/* 309 */ -EXTERN void Tcl_MutexUnlock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); -/* 310 */ -EXTERN void Tcl_ConditionNotify _ANSI_ARGS_(( - Tcl_Condition * condPtr)); -/* 311 */ -EXTERN void Tcl_ConditionWait _ANSI_ARGS_(( - Tcl_Condition * condPtr, - Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); -/* 312 */ -EXTERN int Tcl_NumUtfChars _ANSI_ARGS_((CONST char * src, - int len)); -/* 313 */ -EXTERN int Tcl_ReadChars _ANSI_ARGS_((Tcl_Channel channel, - Tcl_Obj * objPtr, int charsToRead, - int appendFlag)); -/* 314 */ -EXTERN void Tcl_RestoreResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_SavedResult * statePtr)); -/* 315 */ -EXTERN void Tcl_SaveResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_SavedResult * statePtr)); -/* 316 */ -EXTERN int Tcl_SetSystemEncoding _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name)); -/* 317 */ -EXTERN Tcl_Obj * Tcl_SetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - Tcl_Obj * newValuePtr, int flags)); -/* 318 */ -EXTERN void Tcl_ThreadAlert _ANSI_ARGS_((Tcl_ThreadId threadId)); -/* 319 */ -EXTERN void Tcl_ThreadQueueEvent _ANSI_ARGS_(( - Tcl_ThreadId threadId, Tcl_Event* evPtr, - Tcl_QueuePosition position)); -/* 320 */ -EXTERN Tcl_UniChar Tcl_UniCharAtIndex _ANSI_ARGS_((CONST char * src, - int index)); -/* 321 */ -EXTERN Tcl_UniChar Tcl_UniCharToLower _ANSI_ARGS_((int ch)); -/* 322 */ -EXTERN Tcl_UniChar Tcl_UniCharToTitle _ANSI_ARGS_((int ch)); -/* 323 */ -EXTERN Tcl_UniChar Tcl_UniCharToUpper _ANSI_ARGS_((int ch)); -/* 324 */ -EXTERN int Tcl_UniCharToUtf _ANSI_ARGS_((int ch, char * buf)); -/* 325 */ -EXTERN CONST84_RETURN char * Tcl_UtfAtIndex _ANSI_ARGS_((CONST char * src, - int index)); -/* 326 */ -EXTERN int Tcl_UtfCharComplete _ANSI_ARGS_((CONST char * src, - int len)); -/* 327 */ -EXTERN int Tcl_UtfBackslash _ANSI_ARGS_((CONST char * src, - int * readPtr, char * dst)); -/* 328 */ -EXTERN CONST84_RETURN char * Tcl_UtfFindFirst _ANSI_ARGS_((CONST char * src, - int ch)); -/* 329 */ -EXTERN CONST84_RETURN char * Tcl_UtfFindLast _ANSI_ARGS_((CONST char * src, - int ch)); -/* 330 */ -EXTERN CONST84_RETURN char * Tcl_UtfNext _ANSI_ARGS_((CONST char * src)); -/* 331 */ -EXTERN CONST84_RETURN char * Tcl_UtfPrev _ANSI_ARGS_((CONST char * src, - CONST char * start)); -/* 332 */ -EXTERN int Tcl_UtfToExternal _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Encoding encoding, CONST char * src, - int srcLen, int flags, - Tcl_EncodingState * statePtr, char * dst, - int dstLen, int * srcReadPtr, - int * dstWrotePtr, int * dstCharsPtr)); -/* 333 */ -EXTERN char * Tcl_UtfToExternalDString _ANSI_ARGS_(( - Tcl_Encoding encoding, CONST char * src, - int srcLen, Tcl_DString * dsPtr)); -/* 334 */ -EXTERN int Tcl_UtfToLower _ANSI_ARGS_((char * src)); -/* 335 */ -EXTERN int Tcl_UtfToTitle _ANSI_ARGS_((char * src)); -/* 336 */ -EXTERN int Tcl_UtfToUniChar _ANSI_ARGS_((CONST char * src, - Tcl_UniChar * chPtr)); -/* 337 */ -EXTERN int Tcl_UtfToUpper _ANSI_ARGS_((char * src)); -/* 338 */ -EXTERN int Tcl_WriteChars _ANSI_ARGS_((Tcl_Channel chan, - CONST char * src, int srcLen)); -/* 339 */ -EXTERN int Tcl_WriteObj _ANSI_ARGS_((Tcl_Channel chan, - Tcl_Obj * objPtr)); -/* 340 */ -EXTERN char * Tcl_GetString _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 341 */ -EXTERN CONST84_RETURN char * Tcl_GetDefaultEncodingDir _ANSI_ARGS_((void)); -/* 342 */ -EXTERN void Tcl_SetDefaultEncodingDir _ANSI_ARGS_(( - CONST char * path)); -/* 343 */ -EXTERN void Tcl_AlertNotifier _ANSI_ARGS_((ClientData clientData)); -/* 344 */ -EXTERN void Tcl_ServiceModeHook _ANSI_ARGS_((int mode)); -/* 345 */ -EXTERN int Tcl_UniCharIsAlnum _ANSI_ARGS_((int ch)); -/* 346 */ -EXTERN int Tcl_UniCharIsAlpha _ANSI_ARGS_((int ch)); -/* 347 */ -EXTERN int Tcl_UniCharIsDigit _ANSI_ARGS_((int ch)); -/* 348 */ -EXTERN int Tcl_UniCharIsLower _ANSI_ARGS_((int ch)); -/* 349 */ -EXTERN int Tcl_UniCharIsSpace _ANSI_ARGS_((int ch)); -/* 350 */ -EXTERN int Tcl_UniCharIsUpper _ANSI_ARGS_((int ch)); -/* 351 */ -EXTERN int Tcl_UniCharIsWordChar _ANSI_ARGS_((int ch)); -/* 352 */ -EXTERN int Tcl_UniCharLen _ANSI_ARGS_((CONST Tcl_UniChar * str)); -/* 353 */ -EXTERN int Tcl_UniCharNcmp _ANSI_ARGS_((CONST Tcl_UniChar * cs, - CONST Tcl_UniChar * ct, unsigned long n)); -/* 354 */ -EXTERN char * Tcl_UniCharToUtfDString _ANSI_ARGS_(( - CONST Tcl_UniChar * string, int numChars, - Tcl_DString * dsPtr)); -/* 355 */ -EXTERN Tcl_UniChar * Tcl_UtfToUniCharDString _ANSI_ARGS_(( - CONST char * string, int length, - Tcl_DString * dsPtr)); -/* 356 */ -EXTERN Tcl_RegExp Tcl_GetRegExpFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * patObj, - int flags)); -/* 357 */ -EXTERN Tcl_Obj * Tcl_EvalTokens _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Token * tokenPtr, int count)); -/* 358 */ -EXTERN void Tcl_FreeParse _ANSI_ARGS_((Tcl_Parse * parsePtr)); -/* 359 */ -EXTERN void Tcl_LogCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * script, CONST char * command, - int length)); -/* 360 */ -EXTERN int Tcl_ParseBraces _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr, int append, - CONST84 char ** termPtr)); -/* 361 */ -EXTERN int Tcl_ParseCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - int nested, Tcl_Parse * parsePtr)); -/* 362 */ -EXTERN int Tcl_ParseExpr _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr)); -/* 363 */ -EXTERN int Tcl_ParseQuotedString _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * string, - int numBytes, Tcl_Parse * parsePtr, - int append, CONST84 char ** termPtr)); -/* 364 */ -EXTERN int Tcl_ParseVarName _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr, int append)); -/* 365 */ -EXTERN char * Tcl_GetCwd _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * cwdPtr)); -/* 366 */ -EXTERN int Tcl_Chdir _ANSI_ARGS_((CONST char * dirName)); -/* 367 */ -EXTERN int Tcl_Access _ANSI_ARGS_((CONST char * path, int mode)); -/* 368 */ -EXTERN int Tcl_Stat _ANSI_ARGS_((CONST char * path, - struct stat * bufPtr)); -/* 369 */ -EXTERN int Tcl_UtfNcmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 370 */ -EXTERN int Tcl_UtfNcasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 371 */ -EXTERN int Tcl_StringCaseMatch _ANSI_ARGS_((CONST char * str, - CONST char * pattern, int nocase)); -/* 372 */ -EXTERN int Tcl_UniCharIsControl _ANSI_ARGS_((int ch)); -/* 373 */ -EXTERN int Tcl_UniCharIsGraph _ANSI_ARGS_((int ch)); -/* 374 */ -EXTERN int Tcl_UniCharIsPrint _ANSI_ARGS_((int ch)); -/* 375 */ -EXTERN int Tcl_UniCharIsPunct _ANSI_ARGS_((int ch)); -/* 376 */ -EXTERN int Tcl_RegExpExecObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp regexp, Tcl_Obj * objPtr, - int offset, int nmatches, int flags)); -/* 377 */ -EXTERN void Tcl_RegExpGetInfo _ANSI_ARGS_((Tcl_RegExp regexp, - Tcl_RegExpInfo * infoPtr)); -/* 378 */ -EXTERN Tcl_Obj * Tcl_NewUnicodeObj _ANSI_ARGS_(( - CONST Tcl_UniChar * unicode, int numChars)); -/* 379 */ -EXTERN void Tcl_SetUnicodeObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST Tcl_UniChar * unicode, int numChars)); -/* 380 */ -EXTERN int Tcl_GetCharLength _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 381 */ -EXTERN Tcl_UniChar Tcl_GetUniChar _ANSI_ARGS_((Tcl_Obj * objPtr, - int index)); -/* 382 */ -EXTERN Tcl_UniChar * Tcl_GetUnicode _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 383 */ -EXTERN Tcl_Obj * Tcl_GetRange _ANSI_ARGS_((Tcl_Obj * objPtr, - int first, int last)); -/* 384 */ -EXTERN void Tcl_AppendUnicodeToObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST Tcl_UniChar * unicode, int length)); -/* 385 */ -EXTERN int Tcl_RegExpMatchObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * stringObj, Tcl_Obj * patternObj)); -/* 386 */ -EXTERN void Tcl_SetNotifier _ANSI_ARGS_(( - Tcl_NotifierProcs * notifierProcPtr)); -/* 387 */ -EXTERN Tcl_Mutex * Tcl_GetAllocMutex _ANSI_ARGS_((void)); -/* 388 */ -EXTERN int Tcl_GetChannelNames _ANSI_ARGS_((Tcl_Interp * interp)); -/* 389 */ -EXTERN int Tcl_GetChannelNamesEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * pattern)); -/* 390 */ -EXTERN int Tcl_ProcObjCmd _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int objc, - Tcl_Obj *CONST objv[])); -/* 391 */ -EXTERN void Tcl_ConditionFinalize _ANSI_ARGS_(( - Tcl_Condition * condPtr)); -/* 392 */ -EXTERN void Tcl_MutexFinalize _ANSI_ARGS_((Tcl_Mutex * mutex)); -/* 393 */ -EXTERN int Tcl_CreateThread _ANSI_ARGS_((Tcl_ThreadId * idPtr, - Tcl_ThreadCreateProc proc, - ClientData clientData, int stackSize, - int flags)); -/* 394 */ -EXTERN int Tcl_ReadRaw _ANSI_ARGS_((Tcl_Channel chan, - char * dst, int bytesToRead)); -/* 395 */ -EXTERN int Tcl_WriteRaw _ANSI_ARGS_((Tcl_Channel chan, - CONST char * src, int srcLen)); -/* 396 */ -EXTERN Tcl_Channel Tcl_GetTopChannel _ANSI_ARGS_((Tcl_Channel chan)); -/* 397 */ -EXTERN int Tcl_ChannelBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 398 */ -EXTERN CONST84_RETURN char * Tcl_ChannelName _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 399 */ -EXTERN Tcl_ChannelTypeVersion Tcl_ChannelVersion _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 400 */ -EXTERN Tcl_DriverBlockModeProc * Tcl_ChannelBlockModeProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 401 */ -EXTERN Tcl_DriverCloseProc * Tcl_ChannelCloseProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 402 */ -EXTERN Tcl_DriverClose2Proc * Tcl_ChannelClose2Proc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 403 */ -EXTERN Tcl_DriverInputProc * Tcl_ChannelInputProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 404 */ -EXTERN Tcl_DriverOutputProc * Tcl_ChannelOutputProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 405 */ -EXTERN Tcl_DriverSeekProc * Tcl_ChannelSeekProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 406 */ -EXTERN Tcl_DriverSetOptionProc * Tcl_ChannelSetOptionProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 407 */ -EXTERN Tcl_DriverGetOptionProc * Tcl_ChannelGetOptionProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 408 */ -EXTERN Tcl_DriverWatchProc * Tcl_ChannelWatchProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 409 */ -EXTERN Tcl_DriverGetHandleProc * Tcl_ChannelGetHandleProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 410 */ -EXTERN Tcl_DriverFlushProc * Tcl_ChannelFlushProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 411 */ -EXTERN Tcl_DriverHandlerProc * Tcl_ChannelHandlerProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 412 */ -EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId threadId, - int* result)); -/* 413 */ -EXTERN int Tcl_IsChannelShared _ANSI_ARGS_((Tcl_Channel channel)); -/* 414 */ -EXTERN int Tcl_IsChannelRegistered _ANSI_ARGS_(( - Tcl_Interp* interp, Tcl_Channel channel)); -/* 415 */ -EXTERN void Tcl_CutChannel _ANSI_ARGS_((Tcl_Channel channel)); -/* 416 */ -EXTERN void Tcl_SpliceChannel _ANSI_ARGS_((Tcl_Channel channel)); -/* 417 */ -EXTERN void Tcl_ClearChannelHandlers _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 418 */ -EXTERN int Tcl_IsChannelExisting _ANSI_ARGS_(( - CONST char* channelName)); -/* 419 */ -EXTERN int Tcl_UniCharNcasecmp _ANSI_ARGS_(( - CONST Tcl_UniChar * cs, - CONST Tcl_UniChar * ct, unsigned long n)); -/* 420 */ -EXTERN int Tcl_UniCharCaseMatch _ANSI_ARGS_(( - CONST Tcl_UniChar * ustr, - CONST Tcl_UniChar * pattern, int nocase)); -/* 421 */ -EXTERN Tcl_HashEntry * Tcl_FindHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, CONST char * key)); -/* 422 */ -EXTERN Tcl_HashEntry * Tcl_CreateHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, CONST char * key, - int * newPtr)); -/* 423 */ -EXTERN void Tcl_InitCustomHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, int keyType, - Tcl_HashKeyType * typePtr)); -/* 424 */ -EXTERN void Tcl_InitObjHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 425 */ -EXTERN ClientData Tcl_CommandTraceInfo _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * varName, - int flags, Tcl_CommandTraceProc * procPtr, - ClientData prevClientData)); -/* 426 */ -EXTERN int Tcl_TraceCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_CommandTraceProc * proc, - ClientData clientData)); -/* 427 */ -EXTERN void Tcl_UntraceCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_CommandTraceProc * proc, - ClientData clientData)); -/* 428 */ -EXTERN char * Tcl_AttemptAlloc _ANSI_ARGS_((unsigned int size)); -/* 429 */ -EXTERN char * Tcl_AttemptDbCkalloc _ANSI_ARGS_((unsigned int size, - CONST char * file, int line)); -/* 430 */ -EXTERN char * Tcl_AttemptRealloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* 431 */ -EXTERN char * Tcl_AttemptDbCkrealloc _ANSI_ARGS_((char * ptr, - unsigned int size, CONST char * file, - int line)); -/* 432 */ -EXTERN int Tcl_AttemptSetObjLength _ANSI_ARGS_(( - Tcl_Obj * objPtr, int length)); -/* 433 */ -EXTERN Tcl_ThreadId Tcl_GetChannelThread _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 434 */ -EXTERN Tcl_UniChar * Tcl_GetUnicodeFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int * lengthPtr)); -/* 435 */ -EXTERN int Tcl_GetMathFuncInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, int * numArgsPtr, - Tcl_ValueType ** argTypesPtr, - Tcl_MathProc ** procPtr, - ClientData * clientDataPtr)); -/* 436 */ -EXTERN Tcl_Obj * Tcl_ListMathFuncs _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * pattern)); -/* 437 */ -EXTERN Tcl_Obj * Tcl_SubstObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int flags)); -/* 438 */ -EXTERN int Tcl_DetachChannel _ANSI_ARGS_((Tcl_Interp* interp, - Tcl_Channel channel)); -/* 439 */ -EXTERN int Tcl_IsStandardChannel _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 440 */ -EXTERN int Tcl_FSCopyFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, - Tcl_Obj * destPathPtr)); -/* 441 */ -EXTERN int Tcl_FSCopyDirectory _ANSI_ARGS_(( - Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, - Tcl_Obj ** errorPtr)); -/* 442 */ -EXTERN int Tcl_FSCreateDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 443 */ -EXTERN int Tcl_FSDeleteFile _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 444 */ -EXTERN int Tcl_FSLoadFile _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * pathPtr, CONST char * sym1, - CONST char * sym2, - Tcl_PackageInitProc ** proc1Ptr, - Tcl_PackageInitProc ** proc2Ptr, - Tcl_LoadHandle * handlePtr, - Tcl_FSUnloadFileProc ** unloadProcPtr)); -/* 445 */ -EXTERN int Tcl_FSMatchInDirectory _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * result, - Tcl_Obj * pathPtr, CONST char * pattern, - Tcl_GlobTypeData * types)); -/* 446 */ -EXTERN Tcl_Obj * Tcl_FSLink _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_Obj * toPtr, int linkAction)); -/* 447 */ -EXTERN int Tcl_FSRemoveDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr, - int recursive, Tcl_Obj ** errorPtr)); -/* 448 */ -EXTERN int Tcl_FSRenameFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, - Tcl_Obj * destPathPtr)); -/* 449 */ -EXTERN int Tcl_FSLstat _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_StatBuf * buf)); -/* 450 */ -EXTERN int Tcl_FSUtime _ANSI_ARGS_((Tcl_Obj * pathPtr, - struct utimbuf * tval)); -/* 451 */ -EXTERN int Tcl_FSFileAttrsGet _ANSI_ARGS_((Tcl_Interp * interp, - int index, Tcl_Obj * pathPtr, - Tcl_Obj ** objPtrRef)); -/* 452 */ -EXTERN int Tcl_FSFileAttrsSet _ANSI_ARGS_((Tcl_Interp * interp, - int index, Tcl_Obj * pathPtr, - Tcl_Obj * objPtr)); -/* 453 */ -EXTERN CONST char ** Tcl_FSFileAttrStrings _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_Obj ** objPtrRef)); -/* 454 */ -EXTERN int Tcl_FSStat _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_StatBuf * buf)); -/* 455 */ -EXTERN int Tcl_FSAccess _ANSI_ARGS_((Tcl_Obj * pathPtr, - int mode)); -/* 456 */ -EXTERN Tcl_Channel Tcl_FSOpenFileChannel _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * pathPtr, - CONST char * modeString, int permissions)); -/* 457 */ -EXTERN Tcl_Obj* Tcl_FSGetCwd _ANSI_ARGS_((Tcl_Interp * interp)); -/* 458 */ -EXTERN int Tcl_FSChdir _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 459 */ -EXTERN int Tcl_FSConvertToPathType _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * pathPtr)); -/* 460 */ -EXTERN Tcl_Obj* Tcl_FSJoinPath _ANSI_ARGS_((Tcl_Obj * listObj, - int elements)); -/* 461 */ -EXTERN Tcl_Obj* Tcl_FSSplitPath _ANSI_ARGS_((Tcl_Obj* pathPtr, - int * lenPtr)); -/* 462 */ -EXTERN int Tcl_FSEqualPaths _ANSI_ARGS_((Tcl_Obj* firstPtr, - Tcl_Obj* secondPtr)); -/* 463 */ -EXTERN Tcl_Obj* Tcl_FSGetNormalizedPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); -/* 464 */ -EXTERN Tcl_Obj* Tcl_FSJoinToPath _ANSI_ARGS_((Tcl_Obj * basePtr, - int objc, Tcl_Obj *CONST objv[])); -/* 465 */ -EXTERN ClientData Tcl_FSGetInternalRep _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); -/* 466 */ -EXTERN Tcl_Obj* Tcl_FSGetTranslatedPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathPtr)); -/* 467 */ -EXTERN int Tcl_FSEvalFile _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * fileName)); -/* 468 */ -EXTERN Tcl_Obj* Tcl_FSNewNativePath _ANSI_ARGS_(( - Tcl_Filesystem* fromFilesystem, - ClientData clientData)); -/* 469 */ -EXTERN CONST char* Tcl_FSGetNativePath _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); -/* 470 */ -EXTERN Tcl_Obj* Tcl_FSFileSystemInfo _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr)); -/* 471 */ -EXTERN Tcl_Obj* Tcl_FSPathSeparator _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); -/* 472 */ -EXTERN Tcl_Obj* Tcl_FSListVolumes _ANSI_ARGS_((void)); -/* 473 */ -EXTERN int Tcl_FSRegister _ANSI_ARGS_((ClientData clientData, - Tcl_Filesystem * fsPtr)); -/* 474 */ -EXTERN int Tcl_FSUnregister _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); -/* 475 */ -EXTERN ClientData Tcl_FSData _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); -/* 476 */ -EXTERN CONST char* Tcl_FSGetTranslatedStringPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathPtr)); -/* 477 */ -EXTERN Tcl_Filesystem* Tcl_FSGetFileSystemForPath _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr)); -/* 478 */ -EXTERN Tcl_PathType Tcl_FSGetPathType _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); -/* 479 */ -EXTERN int Tcl_OutputBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 480 */ -EXTERN void Tcl_FSMountsChanged _ANSI_ARGS_(( - Tcl_Filesystem * fsPtr)); -/* 481 */ -EXTERN int Tcl_EvalTokensStandard _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Token * tokenPtr, - int count)); -/* 482 */ -EXTERN void Tcl_GetTime _ANSI_ARGS_((Tcl_Time* timeBuf)); -/* 483 */ -EXTERN Tcl_Trace Tcl_CreateObjTrace _ANSI_ARGS_((Tcl_Interp* interp, - int level, int flags, - Tcl_CmdObjTraceProc* objProc, - ClientData clientData, - Tcl_CmdObjTraceDeleteProc* delProc)); -/* 484 */ -EXTERN int Tcl_GetCommandInfoFromToken _ANSI_ARGS_(( - Tcl_Command token, Tcl_CmdInfo* infoPtr)); -/* 485 */ -EXTERN int Tcl_SetCommandInfoFromToken _ANSI_ARGS_(( - Tcl_Command token, - CONST Tcl_CmdInfo* infoPtr)); -/* 486 */ -EXTERN Tcl_Obj * Tcl_DbNewWideIntObj _ANSI_ARGS_(( - Tcl_WideInt wideValue, CONST char * file, - int line)); -/* 487 */ -EXTERN int Tcl_GetWideIntFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - Tcl_WideInt * widePtr)); -/* 488 */ -EXTERN Tcl_Obj * Tcl_NewWideIntObj _ANSI_ARGS_((Tcl_WideInt wideValue)); -/* 489 */ -EXTERN void Tcl_SetWideIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, - Tcl_WideInt wideValue)); -/* 490 */ -EXTERN Tcl_StatBuf * Tcl_AllocStatBuf _ANSI_ARGS_((void)); -/* 491 */ -EXTERN Tcl_WideInt Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan, - Tcl_WideInt offset, int mode)); -/* 492 */ -EXTERN Tcl_WideInt Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); -/* 493 */ -EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); - -typedef struct TclStubHooks { - struct TclPlatStubs *tclPlatStubs; - struct TclIntStubs *tclIntStubs; - struct TclIntPlatStubs *tclIntPlatStubs; -} TclStubHooks; - -typedef struct TclStubs { - int magic; - struct TclStubHooks *hooks; - - int (*tcl_PkgProvideEx) _ANSI_ARGS_((Tcl_Interp* interp, CONST char* name, CONST char* version, ClientData clientData)); /* 0 */ - CONST84_RETURN char * (*tcl_PkgRequireEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 1 */ - void (*tcl_Panic) _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); /* 2 */ - char * (*tcl_Alloc) _ANSI_ARGS_((unsigned int size)); /* 3 */ - void (*tcl_Free) _ANSI_ARGS_((char * ptr)); /* 4 */ - char * (*tcl_Realloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 5 */ - char * (*tcl_DbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 6 */ - int (*tcl_DbCkfree) _ANSI_ARGS_((char * ptr, CONST char * file, int line)); /* 7 */ - char * (*tcl_DbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_CreateFileHandler) _ANSI_ARGS_((int fd, int mask, Tcl_FileProc * proc, ClientData clientData)); /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved9; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved9; -#endif /* MAC_TCL */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_DeleteFileHandler) _ANSI_ARGS_((int fd)); /* 10 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved10; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved10; -#endif /* MAC_TCL */ - void (*tcl_SetTimer) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 11 */ - void (*tcl_Sleep) _ANSI_ARGS_((int ms)); /* 12 */ - int (*tcl_WaitForEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 13 */ - int (*tcl_AppendAllObjTypes) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 14 */ - void (*tcl_AppendStringsToObj) _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); /* 15 */ - void (*tcl_AppendToObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 16 */ - Tcl_Obj * (*tcl_ConcatObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 17 */ - int (*tcl_ConvertToType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); /* 18 */ - void (*tcl_DbDecrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 19 */ - void (*tcl_DbIncrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 20 */ - int (*tcl_DbIsShared) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 21 */ - Tcl_Obj * (*tcl_DbNewBooleanObj) _ANSI_ARGS_((int boolValue, CONST char * file, int line)); /* 22 */ - Tcl_Obj * (*tcl_DbNewByteArrayObj) _ANSI_ARGS_((CONST unsigned char * bytes, int length, CONST char * file, int line)); /* 23 */ - Tcl_Obj * (*tcl_DbNewDoubleObj) _ANSI_ARGS_((double doubleValue, CONST char * file, int line)); /* 24 */ - Tcl_Obj * (*tcl_DbNewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST * objv, CONST char * file, int line)); /* 25 */ - Tcl_Obj * (*tcl_DbNewLongObj) _ANSI_ARGS_((long longValue, CONST char * file, int line)); /* 26 */ - Tcl_Obj * (*tcl_DbNewObj) _ANSI_ARGS_((CONST char * file, int line)); /* 27 */ - Tcl_Obj * (*tcl_DbNewStringObj) _ANSI_ARGS_((CONST char * bytes, int length, CONST char * file, int line)); /* 28 */ - Tcl_Obj * (*tcl_DuplicateObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 29 */ - void (*tclFreeObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 30 */ - int (*tcl_GetBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * boolPtr)); /* 31 */ - int (*tcl_GetBooleanFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * boolPtr)); /* 32 */ - unsigned char * (*tcl_GetByteArrayFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 33 */ - int (*tcl_GetDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * doublePtr)); /* 34 */ - int (*tcl_GetDoubleFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * doublePtr)); /* 35 */ - int (*tcl_GetIndexFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST84 char ** tablePtr, CONST char * msg, int flags, int * indexPtr)); /* 36 */ - int (*tcl_GetInt) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * intPtr)); /* 37 */ - int (*tcl_GetIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * intPtr)); /* 38 */ - int (*tcl_GetLongFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * longPtr)); /* 39 */ - Tcl_ObjType * (*tcl_GetObjType) _ANSI_ARGS_((CONST char * typeName)); /* 40 */ - char * (*tcl_GetStringFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 41 */ - void (*tcl_InvalidateStringRep) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 42 */ - int (*tcl_ListObjAppendList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * elemListPtr)); /* 43 */ - int (*tcl_ListObjAppendElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * objPtr)); /* 44 */ - int (*tcl_ListObjGetElements) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * objcPtr, Tcl_Obj *** objvPtr)); /* 45 */ - int (*tcl_ListObjIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj ** objPtrPtr)); /* 46 */ - int (*tcl_ListObjLength) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * lengthPtr)); /* 47 */ - int (*tcl_ListObjReplace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int first, int count, int objc, Tcl_Obj *CONST objv[])); /* 48 */ - Tcl_Obj * (*tcl_NewBooleanObj) _ANSI_ARGS_((int boolValue)); /* 49 */ - Tcl_Obj * (*tcl_NewByteArrayObj) _ANSI_ARGS_((CONST unsigned char* bytes, int length)); /* 50 */ - Tcl_Obj * (*tcl_NewDoubleObj) _ANSI_ARGS_((double doubleValue)); /* 51 */ - Tcl_Obj * (*tcl_NewIntObj) _ANSI_ARGS_((int intValue)); /* 52 */ - Tcl_Obj * (*tcl_NewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 53 */ - Tcl_Obj * (*tcl_NewLongObj) _ANSI_ARGS_((long longValue)); /* 54 */ - Tcl_Obj * (*tcl_NewObj) _ANSI_ARGS_((void)); /* 55 */ - Tcl_Obj * (*tcl_NewStringObj) _ANSI_ARGS_((CONST char * bytes, int length)); /* 56 */ - void (*tcl_SetBooleanObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int boolValue)); /* 57 */ - unsigned char * (*tcl_SetByteArrayLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 58 */ - void (*tcl_SetByteArrayObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST unsigned char * bytes, int length)); /* 59 */ - void (*tcl_SetDoubleObj) _ANSI_ARGS_((Tcl_Obj * objPtr, double doubleValue)); /* 60 */ - void (*tcl_SetIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int intValue)); /* 61 */ - void (*tcl_SetListObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int objc, Tcl_Obj *CONST objv[])); /* 62 */ - void (*tcl_SetLongObj) _ANSI_ARGS_((Tcl_Obj * objPtr, long longValue)); /* 63 */ - void (*tcl_SetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 64 */ - void (*tcl_SetStringObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 65 */ - void (*tcl_AddErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message)); /* 66 */ - void (*tcl_AddObjErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message, int length)); /* 67 */ - void (*tcl_AllowExceptions) _ANSI_ARGS_((Tcl_Interp * interp)); /* 68 */ - void (*tcl_AppendElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 69 */ - void (*tcl_AppendResult) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 70 */ - Tcl_AsyncHandler (*tcl_AsyncCreate) _ANSI_ARGS_((Tcl_AsyncProc * proc, ClientData clientData)); /* 71 */ - void (*tcl_AsyncDelete) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 72 */ - int (*tcl_AsyncInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int code)); /* 73 */ - void (*tcl_AsyncMark) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 74 */ - int (*tcl_AsyncReady) _ANSI_ARGS_((void)); /* 75 */ - void (*tcl_BackgroundError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 76 */ - char (*tcl_Backslash) _ANSI_ARGS_((CONST char * src, int * readPtr)); /* 77 */ - int (*tcl_BadChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * optionName, CONST char * optionList)); /* 78 */ - void (*tcl_CallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 79 */ - void (*tcl_CancelIdleCall) _ANSI_ARGS_((Tcl_IdleProc * idleProc, ClientData clientData)); /* 80 */ - int (*tcl_Close) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 81 */ - int (*tcl_CommandComplete) _ANSI_ARGS_((CONST char * cmd)); /* 82 */ - char * (*tcl_Concat) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 83 */ - int (*tcl_ConvertElement) _ANSI_ARGS_((CONST char * src, char * dst, int flags)); /* 84 */ - int (*tcl_ConvertCountedElement) _ANSI_ARGS_((CONST char * src, int length, char * dst, int flags)); /* 85 */ - int (*tcl_CreateAlias) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int argc, CONST84 char * CONST * argv)); /* 86 */ - int (*tcl_CreateAliasObj) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int objc, Tcl_Obj *CONST objv[])); /* 87 */ - Tcl_Channel (*tcl_CreateChannel) _ANSI_ARGS_((Tcl_ChannelType * typePtr, CONST char * chanName, ClientData instanceData, int mask)); /* 88 */ - void (*tcl_CreateChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, int mask, Tcl_ChannelProc * proc, ClientData clientData)); /* 89 */ - void (*tcl_CreateCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 90 */ - Tcl_Command (*tcl_CreateCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 91 */ - void (*tcl_CreateEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 92 */ - void (*tcl_CreateExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 93 */ - Tcl_Interp * (*tcl_CreateInterp) _ANSI_ARGS_((void)); /* 94 */ - void (*tcl_CreateMathFunc) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int numArgs, Tcl_ValueType * argTypes, Tcl_MathProc * proc, ClientData clientData)); /* 95 */ - Tcl_Command (*tcl_CreateObjCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_ObjCmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 96 */ - Tcl_Interp * (*tcl_CreateSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName, int isSafe)); /* 97 */ - Tcl_TimerToken (*tcl_CreateTimerHandler) _ANSI_ARGS_((int milliseconds, Tcl_TimerProc * proc, ClientData clientData)); /* 98 */ - Tcl_Trace (*tcl_CreateTrace) _ANSI_ARGS_((Tcl_Interp * interp, int level, Tcl_CmdTraceProc * proc, ClientData clientData)); /* 99 */ - void (*tcl_DeleteAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 100 */ - void (*tcl_DeleteChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_ChannelProc * proc, ClientData clientData)); /* 101 */ - void (*tcl_DeleteCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 102 */ - int (*tcl_DeleteCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName)); /* 103 */ - int (*tcl_DeleteCommandFromToken) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 104 */ - void (*tcl_DeleteEvents) _ANSI_ARGS_((Tcl_EventDeleteProc * proc, ClientData clientData)); /* 105 */ - void (*tcl_DeleteEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 106 */ - void (*tcl_DeleteExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 107 */ - void (*tcl_DeleteHashEntry) _ANSI_ARGS_((Tcl_HashEntry * entryPtr)); /* 108 */ - void (*tcl_DeleteHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 109 */ - void (*tcl_DeleteInterp) _ANSI_ARGS_((Tcl_Interp * interp)); /* 110 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved111; -#endif /* MAC_TCL */ - void (*tcl_DeleteTimerHandler) _ANSI_ARGS_((Tcl_TimerToken token)); /* 112 */ - void (*tcl_DeleteTrace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Trace trace)); /* 113 */ - void (*tcl_DontCallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 114 */ - int (*tcl_DoOneEvent) _ANSI_ARGS_((int flags)); /* 115 */ - void (*tcl_DoWhenIdle) _ANSI_ARGS_((Tcl_IdleProc * proc, ClientData clientData)); /* 116 */ - char * (*tcl_DStringAppend) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * str, int length)); /* 117 */ - char * (*tcl_DStringAppendElement) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * string)); /* 118 */ - void (*tcl_DStringEndSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 119 */ - void (*tcl_DStringFree) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 120 */ - void (*tcl_DStringGetResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 121 */ - void (*tcl_DStringInit) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 122 */ - void (*tcl_DStringResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 123 */ - void (*tcl_DStringSetLength) _ANSI_ARGS_((Tcl_DString * dsPtr, int length)); /* 124 */ - void (*tcl_DStringStartSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 125 */ - int (*tcl_Eof) _ANSI_ARGS_((Tcl_Channel chan)); /* 126 */ - CONST84_RETURN char * (*tcl_ErrnoId) _ANSI_ARGS_((void)); /* 127 */ - CONST84_RETURN char * (*tcl_ErrnoMsg) _ANSI_ARGS_((int err)); /* 128 */ - int (*tcl_Eval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 129 */ - int (*tcl_EvalFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName)); /* 130 */ - int (*tcl_EvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 131 */ - void (*tcl_EventuallyFree) _ANSI_ARGS_((ClientData clientData, Tcl_FreeProc * freeProc)); /* 132 */ - void (*tcl_Exit) _ANSI_ARGS_((int status)); /* 133 */ - int (*tcl_ExposeCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * hiddenCmdToken, CONST char * cmdName)); /* 134 */ - int (*tcl_ExprBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * ptr)); /* 135 */ - int (*tcl_ExprBooleanObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * ptr)); /* 136 */ - int (*tcl_ExprDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * ptr)); /* 137 */ - int (*tcl_ExprDoubleObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * ptr)); /* 138 */ - int (*tcl_ExprLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * ptr)); /* 139 */ - int (*tcl_ExprLongObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * ptr)); /* 140 */ - int (*tcl_ExprObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); /* 141 */ - int (*tcl_ExprString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 142 */ - void (*tcl_Finalize) _ANSI_ARGS_((void)); /* 143 */ - void (*tcl_FindExecutable) _ANSI_ARGS_((CONST char * argv0)); /* 144 */ - Tcl_HashEntry * (*tcl_FirstHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, Tcl_HashSearch * searchPtr)); /* 145 */ - int (*tcl_Flush) _ANSI_ARGS_((Tcl_Channel chan)); /* 146 */ - void (*tcl_FreeResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 147 */ - int (*tcl_GetAlias) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * argcPtr, CONST84 char *** argvPtr)); /* 148 */ - int (*tcl_GetAliasObj) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * objcPtr, Tcl_Obj *** objv)); /* 149 */ - ClientData (*tcl_GetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc ** procPtr)); /* 150 */ - Tcl_Channel (*tcl_GetChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * chanName, int * modePtr)); /* 151 */ - int (*tcl_GetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan)); /* 152 */ - int (*tcl_GetChannelHandle) _ANSI_ARGS_((Tcl_Channel chan, int direction, ClientData * handlePtr)); /* 153 */ - ClientData (*tcl_GetChannelInstanceData) _ANSI_ARGS_((Tcl_Channel chan)); /* 154 */ - int (*tcl_GetChannelMode) _ANSI_ARGS_((Tcl_Channel chan)); /* 155 */ - CONST84_RETURN char * (*tcl_GetChannelName) _ANSI_ARGS_((Tcl_Channel chan)); /* 156 */ - int (*tcl_GetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, Tcl_DString * dsPtr)); /* 157 */ - Tcl_ChannelType * (*tcl_GetChannelType) _ANSI_ARGS_((Tcl_Channel chan)); /* 158 */ - int (*tcl_GetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdInfo * infoPtr)); /* 159 */ - CONST84_RETURN char * (*tcl_GetCommandName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 160 */ - int (*tcl_GetErrno) _ANSI_ARGS_((void)); /* 161 */ - CONST84_RETURN char * (*tcl_GetHostName) _ANSI_ARGS_((void)); /* 162 */ - int (*tcl_GetInterpPath) _ANSI_ARGS_((Tcl_Interp * askInterp, Tcl_Interp * slaveInterp)); /* 163 */ - Tcl_Interp * (*tcl_GetMaster) _ANSI_ARGS_((Tcl_Interp * interp)); /* 164 */ - CONST char * (*tcl_GetNameOfExecutable) _ANSI_ARGS_((void)); /* 165 */ - Tcl_Obj * (*tcl_GetObjResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 166 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tcl_GetOpenFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int forWriting, int checkUsage, ClientData * filePtr)); /* 167 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved167; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved167; -#endif /* MAC_TCL */ - Tcl_PathType (*tcl_GetPathType) _ANSI_ARGS_((CONST char * path)); /* 168 */ - int (*tcl_Gets) _ANSI_ARGS_((Tcl_Channel chan, Tcl_DString * dsPtr)); /* 169 */ - int (*tcl_GetsObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 170 */ - int (*tcl_GetServiceMode) _ANSI_ARGS_((void)); /* 171 */ - Tcl_Interp * (*tcl_GetSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName)); /* 172 */ - Tcl_Channel (*tcl_GetStdChannel) _ANSI_ARGS_((int type)); /* 173 */ - CONST84_RETURN char * (*tcl_GetStringResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 174 */ - CONST84_RETURN char * (*tcl_GetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 175 */ - CONST84_RETURN char * (*tcl_GetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 176 */ - int (*tcl_GlobalEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command)); /* 177 */ - int (*tcl_GlobalEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 178 */ - int (*tcl_HideCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST char * hiddenCmdToken)); /* 179 */ - int (*tcl_Init) _ANSI_ARGS_((Tcl_Interp * interp)); /* 180 */ - void (*tcl_InitHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType)); /* 181 */ - int (*tcl_InputBlocked) _ANSI_ARGS_((Tcl_Channel chan)); /* 182 */ - int (*tcl_InputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 183 */ - int (*tcl_InterpDeleted) _ANSI_ARGS_((Tcl_Interp * interp)); /* 184 */ - int (*tcl_IsSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 185 */ - char * (*tcl_JoinPath) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv, Tcl_DString * resultPtr)); /* 186 */ - int (*tcl_LinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, char * addr, int type)); /* 187 */ - void *reserved188; - Tcl_Channel (*tcl_MakeFileChannel) _ANSI_ARGS_((ClientData handle, int mode)); /* 189 */ - int (*tcl_MakeSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 190 */ - Tcl_Channel (*tcl_MakeTcpClientChannel) _ANSI_ARGS_((ClientData tcpSocket)); /* 191 */ - char * (*tcl_Merge) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 192 */ - Tcl_HashEntry * (*tcl_NextHashEntry) _ANSI_ARGS_((Tcl_HashSearch * searchPtr)); /* 193 */ - void (*tcl_NotifyChannel) _ANSI_ARGS_((Tcl_Channel channel, int mask)); /* 194 */ - Tcl_Obj * (*tcl_ObjGetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, int flags)); /* 195 */ - Tcl_Obj * (*tcl_ObjSetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, Tcl_Obj * newValuePtr, int flags)); /* 196 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved197; -#endif /* MAC_TCL */ - Tcl_Channel (*tcl_OpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName, CONST char * modeString, int permissions)); /* 198 */ - Tcl_Channel (*tcl_OpenTcpClient) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * address, CONST char * myaddr, int myport, int async)); /* 199 */ - Tcl_Channel (*tcl_OpenTcpServer) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * host, Tcl_TcpAcceptProc * acceptProc, ClientData callbackData)); /* 200 */ - void (*tcl_Preserve) _ANSI_ARGS_((ClientData data)); /* 201 */ - void (*tcl_PrintDouble) _ANSI_ARGS_((Tcl_Interp * interp, double value, char * dst)); /* 202 */ - int (*tcl_PutEnv) _ANSI_ARGS_((CONST char * string)); /* 203 */ - CONST84_RETURN char * (*tcl_PosixError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 204 */ - void (*tcl_QueueEvent) _ANSI_ARGS_((Tcl_Event * evPtr, Tcl_QueuePosition position)); /* 205 */ - int (*tcl_Read) _ANSI_ARGS_((Tcl_Channel chan, char * bufPtr, int toRead)); /* 206 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved207; -#endif /* MAC_TCL */ - int (*tcl_RecordAndEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmd, int flags)); /* 208 */ - int (*tcl_RecordAndEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * cmdPtr, int flags)); /* 209 */ - void (*tcl_RegisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 210 */ - void (*tcl_RegisterObjType) _ANSI_ARGS_((Tcl_ObjType * typePtr)); /* 211 */ - Tcl_RegExp (*tcl_RegExpCompile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 212 */ - int (*tcl_RegExpExec) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, CONST char * str, CONST char * start)); /* 213 */ - int (*tcl_RegExpMatch) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST char * pattern)); /* 214 */ - void (*tcl_RegExpRange) _ANSI_ARGS_((Tcl_RegExp regexp, int index, CONST84 char ** startPtr, CONST84 char ** endPtr)); /* 215 */ - void (*tcl_Release) _ANSI_ARGS_((ClientData clientData)); /* 216 */ - void (*tcl_ResetResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 217 */ - int (*tcl_ScanElement) _ANSI_ARGS_((CONST char * str, int * flagPtr)); /* 218 */ - int (*tcl_ScanCountedElement) _ANSI_ARGS_((CONST char * str, int length, int * flagPtr)); /* 219 */ - int (*tcl_SeekOld) _ANSI_ARGS_((Tcl_Channel chan, int offset, int mode)); /* 220 */ - int (*tcl_ServiceAll) _ANSI_ARGS_((void)); /* 221 */ - int (*tcl_ServiceEvent) _ANSI_ARGS_((int flags)); /* 222 */ - void (*tcl_SetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 223 */ - void (*tcl_SetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan, int sz)); /* 224 */ - int (*tcl_SetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, CONST char * newValue)); /* 225 */ - int (*tcl_SetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST Tcl_CmdInfo * infoPtr)); /* 226 */ - void (*tcl_SetErrno) _ANSI_ARGS_((int err)); /* 227 */ - void (*tcl_SetErrorCode) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 228 */ - void (*tcl_SetMaxBlockTime) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 229 */ - void (*tcl_SetPanicProc) _ANSI_ARGS_((Tcl_PanicProc * panicProc)); /* 230 */ - int (*tcl_SetRecursionLimit) _ANSI_ARGS_((Tcl_Interp * interp, int depth)); /* 231 */ - void (*tcl_SetResult) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tcl_FreeProc * freeProc)); /* 232 */ - int (*tcl_SetServiceMode) _ANSI_ARGS_((int mode)); /* 233 */ - void (*tcl_SetObjErrorCode) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * errorObjPtr)); /* 234 */ - void (*tcl_SetObjResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * resultObjPtr)); /* 235 */ - void (*tcl_SetStdChannel) _ANSI_ARGS_((Tcl_Channel channel, int type)); /* 236 */ - CONST84_RETURN char * (*tcl_SetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, CONST char * newValue, int flags)); /* 237 */ - CONST84_RETURN char * (*tcl_SetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, CONST char * newValue, int flags)); /* 238 */ - CONST84_RETURN char * (*tcl_SignalId) _ANSI_ARGS_((int sig)); /* 239 */ - CONST84_RETURN char * (*tcl_SignalMsg) _ANSI_ARGS_((int sig)); /* 240 */ - void (*tcl_SourceRCFile) _ANSI_ARGS_((Tcl_Interp * interp)); /* 241 */ - int (*tcl_SplitList) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int * argcPtr, CONST84 char *** argvPtr)); /* 242 */ - void (*tcl_SplitPath) _ANSI_ARGS_((CONST char * path, int * argcPtr, CONST84 char *** argvPtr)); /* 243 */ - void (*tcl_StaticPackage) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pkgName, Tcl_PackageInitProc * initProc, Tcl_PackageInitProc * safeInitProc)); /* 244 */ - int (*tcl_StringMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern)); /* 245 */ - int (*tcl_TellOld) _ANSI_ARGS_((Tcl_Channel chan)); /* 246 */ - int (*tcl_TraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 247 */ - int (*tcl_TraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 248 */ - char * (*tcl_TranslateFileName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_DString * bufferPtr)); /* 249 */ - int (*tcl_Ungets) _ANSI_ARGS_((Tcl_Channel chan, CONST char * str, int len, int atHead)); /* 250 */ - void (*tcl_UnlinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 251 */ - int (*tcl_UnregisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 252 */ - int (*tcl_UnsetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 253 */ - int (*tcl_UnsetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 254 */ - void (*tcl_UntraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 255 */ - void (*tcl_UntraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 256 */ - void (*tcl_UpdateLinkedVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 257 */ - int (*tcl_UpVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * varName, CONST char * localName, int flags)); /* 258 */ - int (*tcl_UpVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * part1, CONST char * part2, CONST char * localName, int flags)); /* 259 */ - int (*tcl_VarEval) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 260 */ - ClientData (*tcl_VarTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 261 */ - ClientData (*tcl_VarTraceInfo2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 262 */ - int (*tcl_Write) _ANSI_ARGS_((Tcl_Channel chan, CONST char * s, int slen)); /* 263 */ - void (*tcl_WrongNumArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], CONST char * message)); /* 264 */ - int (*tcl_DumpActiveMemory) _ANSI_ARGS_((CONST char * fileName)); /* 265 */ - void (*tcl_ValidateAllMemory) _ANSI_ARGS_((CONST char * file, int line)); /* 266 */ - void (*tcl_AppendResultVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 267 */ - void (*tcl_AppendStringsToObjVA) _ANSI_ARGS_((Tcl_Obj * objPtr, va_list argList)); /* 268 */ - CONST84_RETURN char * (*tcl_HashStats) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 269 */ - CONST84_RETURN char * (*tcl_ParseVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST84 char ** termPtr)); /* 270 */ - CONST84_RETURN char * (*tcl_PkgPresent) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 271 */ - CONST84_RETURN char * (*tcl_PkgPresentEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 272 */ - int (*tcl_PkgProvide) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version)); /* 273 */ - CONST84_RETURN char * (*tcl_PkgRequire) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 274 */ - void (*tcl_SetErrorCodeVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 275 */ - int (*tcl_VarEvalVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 276 */ - Tcl_Pid (*tcl_WaitPid) _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, int options)); /* 277 */ - void (*tcl_PanicVA) _ANSI_ARGS_((CONST char * format, va_list argList)); /* 278 */ - void (*tcl_GetVersion) _ANSI_ARGS_((int * major, int * minor, int * patchLevel, int * type)); /* 279 */ - void (*tcl_InitMemory) _ANSI_ARGS_((Tcl_Interp * interp)); /* 280 */ - Tcl_Channel (*tcl_StackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_ChannelType * typePtr, ClientData instanceData, int mask, Tcl_Channel prevChan)); /* 281 */ - int (*tcl_UnstackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 282 */ - Tcl_Channel (*tcl_GetStackedChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 283 */ - void (*tcl_SetMainLoop) _ANSI_ARGS_((Tcl_MainLoopProc * proc)); /* 284 */ - void *reserved285; - void (*tcl_AppendObjToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_Obj * appendObjPtr)); /* 286 */ - Tcl_Encoding (*tcl_CreateEncoding) _ANSI_ARGS_((Tcl_EncodingType * typePtr)); /* 287 */ - void (*tcl_CreateThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 288 */ - void (*tcl_DeleteThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 289 */ - void (*tcl_DiscardResult) _ANSI_ARGS_((Tcl_SavedResult * statePtr)); /* 290 */ - int (*tcl_EvalEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, int numBytes, int flags)); /* 291 */ - int (*tcl_EvalObjv) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 292 */ - int (*tcl_EvalObjEx) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 293 */ - void (*tcl_ExitThread) _ANSI_ARGS_((int status)); /* 294 */ - int (*tcl_ExternalToUtf) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 295 */ - char * (*tcl_ExternalToUtfDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 296 */ - void (*tcl_FinalizeThread) _ANSI_ARGS_((void)); /* 297 */ - void (*tcl_FinalizeNotifier) _ANSI_ARGS_((ClientData clientData)); /* 298 */ - void (*tcl_FreeEncoding) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 299 */ - Tcl_ThreadId (*tcl_GetCurrentThread) _ANSI_ARGS_((void)); /* 300 */ - Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */ - CONST84_RETURN char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */ - void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */ - int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST VOID * tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */ - VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */ - Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 306 */ - ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */ - void (*tcl_MutexLock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 308 */ - void (*tcl_MutexUnlock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 309 */ - void (*tcl_ConditionNotify) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 310 */ - void (*tcl_ConditionWait) _ANSI_ARGS_((Tcl_Condition * condPtr, Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); /* 311 */ - int (*tcl_NumUtfChars) _ANSI_ARGS_((CONST char * src, int len)); /* 312 */ - int (*tcl_ReadChars) _ANSI_ARGS_((Tcl_Channel channel, Tcl_Obj * objPtr, int charsToRead, int appendFlag)); /* 313 */ - void (*tcl_RestoreResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 314 */ - void (*tcl_SaveResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 315 */ - int (*tcl_SetSystemEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 316 */ - Tcl_Obj * (*tcl_SetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, Tcl_Obj * newValuePtr, int flags)); /* 317 */ - void (*tcl_ThreadAlert) _ANSI_ARGS_((Tcl_ThreadId threadId)); /* 318 */ - void (*tcl_ThreadQueueEvent) _ANSI_ARGS_((Tcl_ThreadId threadId, Tcl_Event* evPtr, Tcl_QueuePosition position)); /* 319 */ - Tcl_UniChar (*tcl_UniCharAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 320 */ - Tcl_UniChar (*tcl_UniCharToLower) _ANSI_ARGS_((int ch)); /* 321 */ - Tcl_UniChar (*tcl_UniCharToTitle) _ANSI_ARGS_((int ch)); /* 322 */ - Tcl_UniChar (*tcl_UniCharToUpper) _ANSI_ARGS_((int ch)); /* 323 */ - int (*tcl_UniCharToUtf) _ANSI_ARGS_((int ch, char * buf)); /* 324 */ - CONST84_RETURN char * (*tcl_UtfAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 325 */ - int (*tcl_UtfCharComplete) _ANSI_ARGS_((CONST char * src, int len)); /* 326 */ - int (*tcl_UtfBackslash) _ANSI_ARGS_((CONST char * src, int * readPtr, char * dst)); /* 327 */ - CONST84_RETURN char * (*tcl_UtfFindFirst) _ANSI_ARGS_((CONST char * src, int ch)); /* 328 */ - CONST84_RETURN char * (*tcl_UtfFindLast) _ANSI_ARGS_((CONST char * src, int ch)); /* 329 */ - CONST84_RETURN char * (*tcl_UtfNext) _ANSI_ARGS_((CONST char * src)); /* 330 */ - CONST84_RETURN char * (*tcl_UtfPrev) _ANSI_ARGS_((CONST char * src, CONST char * start)); /* 331 */ - int (*tcl_UtfToExternal) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 332 */ - char * (*tcl_UtfToExternalDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 333 */ - int (*tcl_UtfToLower) _ANSI_ARGS_((char * src)); /* 334 */ - int (*tcl_UtfToTitle) _ANSI_ARGS_((char * src)); /* 335 */ - int (*tcl_UtfToUniChar) _ANSI_ARGS_((CONST char * src, Tcl_UniChar * chPtr)); /* 336 */ - int (*tcl_UtfToUpper) _ANSI_ARGS_((char * src)); /* 337 */ - int (*tcl_WriteChars) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 338 */ - int (*tcl_WriteObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 339 */ - char * (*tcl_GetString) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 340 */ - CONST84_RETURN char * (*tcl_GetDefaultEncodingDir) _ANSI_ARGS_((void)); /* 341 */ - void (*tcl_SetDefaultEncodingDir) _ANSI_ARGS_((CONST char * path)); /* 342 */ - void (*tcl_AlertNotifier) _ANSI_ARGS_((ClientData clientData)); /* 343 */ - void (*tcl_ServiceModeHook) _ANSI_ARGS_((int mode)); /* 344 */ - int (*tcl_UniCharIsAlnum) _ANSI_ARGS_((int ch)); /* 345 */ - int (*tcl_UniCharIsAlpha) _ANSI_ARGS_((int ch)); /* 346 */ - int (*tcl_UniCharIsDigit) _ANSI_ARGS_((int ch)); /* 347 */ - int (*tcl_UniCharIsLower) _ANSI_ARGS_((int ch)); /* 348 */ - int (*tcl_UniCharIsSpace) _ANSI_ARGS_((int ch)); /* 349 */ - int (*tcl_UniCharIsUpper) _ANSI_ARGS_((int ch)); /* 350 */ - int (*tcl_UniCharIsWordChar) _ANSI_ARGS_((int ch)); /* 351 */ - int (*tcl_UniCharLen) _ANSI_ARGS_((CONST Tcl_UniChar * str)); /* 352 */ - int (*tcl_UniCharNcmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 353 */ - char * (*tcl_UniCharToUtfDString) _ANSI_ARGS_((CONST Tcl_UniChar * string, int numChars, Tcl_DString * dsPtr)); /* 354 */ - Tcl_UniChar * (*tcl_UtfToUniCharDString) _ANSI_ARGS_((CONST char * string, int length, Tcl_DString * dsPtr)); /* 355 */ - Tcl_RegExp (*tcl_GetRegExpFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * patObj, int flags)); /* 356 */ - Tcl_Obj * (*tcl_EvalTokens) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 357 */ - void (*tcl_FreeParse) _ANSI_ARGS_((Tcl_Parse * parsePtr)); /* 358 */ - void (*tcl_LogCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, CONST char * command, int length)); /* 359 */ - int (*tcl_ParseBraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 360 */ - int (*tcl_ParseCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, int nested, Tcl_Parse * parsePtr)); /* 361 */ - int (*tcl_ParseExpr) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr)); /* 362 */ - int (*tcl_ParseQuotedString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 363 */ - int (*tcl_ParseVarName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append)); /* 364 */ - char * (*tcl_GetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 365 */ - int (*tcl_Chdir) _ANSI_ARGS_((CONST char * dirName)); /* 366 */ - int (*tcl_Access) _ANSI_ARGS_((CONST char * path, int mode)); /* 367 */ - int (*tcl_Stat) _ANSI_ARGS_((CONST char * path, struct stat * bufPtr)); /* 368 */ - int (*tcl_UtfNcmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 369 */ - int (*tcl_UtfNcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 370 */ - int (*tcl_StringCaseMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern, int nocase)); /* 371 */ - int (*tcl_UniCharIsControl) _ANSI_ARGS_((int ch)); /* 372 */ - int (*tcl_UniCharIsGraph) _ANSI_ARGS_((int ch)); /* 373 */ - int (*tcl_UniCharIsPrint) _ANSI_ARGS_((int ch)); /* 374 */ - int (*tcl_UniCharIsPunct) _ANSI_ARGS_((int ch)); /* 375 */ - int (*tcl_RegExpExecObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, Tcl_Obj * objPtr, int offset, int nmatches, int flags)); /* 376 */ - void (*tcl_RegExpGetInfo) _ANSI_ARGS_((Tcl_RegExp regexp, Tcl_RegExpInfo * infoPtr)); /* 377 */ - Tcl_Obj * (*tcl_NewUnicodeObj) _ANSI_ARGS_((CONST Tcl_UniChar * unicode, int numChars)); /* 378 */ - void (*tcl_SetUnicodeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int numChars)); /* 379 */ - int (*tcl_GetCharLength) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 380 */ - Tcl_UniChar (*tcl_GetUniChar) _ANSI_ARGS_((Tcl_Obj * objPtr, int index)); /* 381 */ - Tcl_UniChar * (*tcl_GetUnicode) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 382 */ - Tcl_Obj * (*tcl_GetRange) _ANSI_ARGS_((Tcl_Obj * objPtr, int first, int last)); /* 383 */ - void (*tcl_AppendUnicodeToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int length)); /* 384 */ - int (*tcl_RegExpMatchObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * stringObj, Tcl_Obj * patternObj)); /* 385 */ - void (*tcl_SetNotifier) _ANSI_ARGS_((Tcl_NotifierProcs * notifierProcPtr)); /* 386 */ - Tcl_Mutex * (*tcl_GetAllocMutex) _ANSI_ARGS_((void)); /* 387 */ - int (*tcl_GetChannelNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 388 */ - int (*tcl_GetChannelNamesEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 389 */ - int (*tcl_ProcObjCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 390 */ - void (*tcl_ConditionFinalize) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 391 */ - void (*tcl_MutexFinalize) _ANSI_ARGS_((Tcl_Mutex * mutex)); /* 392 */ - int (*tcl_CreateThread) _ANSI_ARGS_((Tcl_ThreadId * idPtr, Tcl_ThreadCreateProc proc, ClientData clientData, int stackSize, int flags)); /* 393 */ - int (*tcl_ReadRaw) _ANSI_ARGS_((Tcl_Channel chan, char * dst, int bytesToRead)); /* 394 */ - int (*tcl_WriteRaw) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 395 */ - Tcl_Channel (*tcl_GetTopChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 396 */ - int (*tcl_ChannelBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 397 */ - CONST84_RETURN char * (*tcl_ChannelName) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 398 */ - Tcl_ChannelTypeVersion (*tcl_ChannelVersion) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 399 */ - Tcl_DriverBlockModeProc * (*tcl_ChannelBlockModeProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 400 */ - Tcl_DriverCloseProc * (*tcl_ChannelCloseProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 401 */ - Tcl_DriverClose2Proc * (*tcl_ChannelClose2Proc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 402 */ - Tcl_DriverInputProc * (*tcl_ChannelInputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 403 */ - Tcl_DriverOutputProc * (*tcl_ChannelOutputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 404 */ - Tcl_DriverSeekProc * (*tcl_ChannelSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 405 */ - Tcl_DriverSetOptionProc * (*tcl_ChannelSetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 406 */ - Tcl_DriverGetOptionProc * (*tcl_ChannelGetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 407 */ - Tcl_DriverWatchProc * (*tcl_ChannelWatchProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 408 */ - Tcl_DriverGetHandleProc * (*tcl_ChannelGetHandleProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 409 */ - Tcl_DriverFlushProc * (*tcl_ChannelFlushProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 410 */ - Tcl_DriverHandlerProc * (*tcl_ChannelHandlerProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 411 */ - int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 412 */ - int (*tcl_IsChannelShared) _ANSI_ARGS_((Tcl_Channel channel)); /* 413 */ - int (*tcl_IsChannelRegistered) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 414 */ - void (*tcl_CutChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 415 */ - void (*tcl_SpliceChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 416 */ - void (*tcl_ClearChannelHandlers) _ANSI_ARGS_((Tcl_Channel channel)); /* 417 */ - int (*tcl_IsChannelExisting) _ANSI_ARGS_((CONST char* channelName)); /* 418 */ - int (*tcl_UniCharNcasecmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 419 */ - int (*tcl_UniCharCaseMatch) _ANSI_ARGS_((CONST Tcl_UniChar * ustr, CONST Tcl_UniChar * pattern, int nocase)); /* 420 */ - Tcl_HashEntry * (*tcl_FindHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key)); /* 421 */ - Tcl_HashEntry * (*tcl_CreateHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key, int * newPtr)); /* 422 */ - void (*tcl_InitCustomHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType, Tcl_HashKeyType * typePtr)); /* 423 */ - void (*tcl_InitObjHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 424 */ - ClientData (*tcl_CommandTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * procPtr, ClientData prevClientData)); /* 425 */ - int (*tcl_TraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 426 */ - void (*tcl_UntraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 427 */ - char * (*tcl_AttemptAlloc) _ANSI_ARGS_((unsigned int size)); /* 428 */ - char * (*tcl_AttemptDbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 429 */ - char * (*tcl_AttemptRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 430 */ - char * (*tcl_AttemptDbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 431 */ - int (*tcl_AttemptSetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 432 */ - Tcl_ThreadId (*tcl_GetChannelThread) _ANSI_ARGS_((Tcl_Channel channel)); /* 433 */ - Tcl_UniChar * (*tcl_GetUnicodeFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 434 */ - int (*tcl_GetMathFuncInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int * numArgsPtr, Tcl_ValueType ** argTypesPtr, Tcl_MathProc ** procPtr, ClientData * clientDataPtr)); /* 435 */ - Tcl_Obj * (*tcl_ListMathFuncs) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 436 */ - Tcl_Obj * (*tcl_SubstObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 437 */ - int (*tcl_DetachChannel) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 438 */ - int (*tcl_IsStandardChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 439 */ - int (*tcl_FSCopyFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 440 */ - int (*tcl_FSCopyDirectory) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, Tcl_Obj ** errorPtr)); /* 441 */ - int (*tcl_FSCreateDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 442 */ - int (*tcl_FSDeleteFile) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 443 */ - int (*tcl_FSLoadFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * sym1, CONST char * sym2, Tcl_PackageInitProc ** proc1Ptr, Tcl_PackageInitProc ** proc2Ptr, Tcl_LoadHandle * handlePtr, Tcl_FSUnloadFileProc ** unloadProcPtr)); /* 444 */ - int (*tcl_FSMatchInDirectory) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * result, Tcl_Obj * pathPtr, CONST char * pattern, Tcl_GlobTypeData * types)); /* 445 */ - Tcl_Obj * (*tcl_FSLink) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj * toPtr, int linkAction)); /* 446 */ - int (*tcl_FSRemoveDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr, int recursive, Tcl_Obj ** errorPtr)); /* 447 */ - int (*tcl_FSRenameFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 448 */ - int (*tcl_FSLstat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 449 */ - int (*tcl_FSUtime) _ANSI_ARGS_((Tcl_Obj * pathPtr, struct utimbuf * tval)); /* 450 */ - int (*tcl_FSFileAttrsGet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 451 */ - int (*tcl_FSFileAttrsSet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj * objPtr)); /* 452 */ - CONST char ** (*tcl_FSFileAttrStrings) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 453 */ - int (*tcl_FSStat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 454 */ - int (*tcl_FSAccess) _ANSI_ARGS_((Tcl_Obj * pathPtr, int mode)); /* 455 */ - Tcl_Channel (*tcl_FSOpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * modeString, int permissions)); /* 456 */ - Tcl_Obj* (*tcl_FSGetCwd) _ANSI_ARGS_((Tcl_Interp * interp)); /* 457 */ - int (*tcl_FSChdir) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 458 */ - int (*tcl_FSConvertToPathType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr)); /* 459 */ - Tcl_Obj* (*tcl_FSJoinPath) _ANSI_ARGS_((Tcl_Obj * listObj, int elements)); /* 460 */ - Tcl_Obj* (*tcl_FSSplitPath) _ANSI_ARGS_((Tcl_Obj* pathPtr, int * lenPtr)); /* 461 */ - int (*tcl_FSEqualPaths) _ANSI_ARGS_((Tcl_Obj* firstPtr, Tcl_Obj* secondPtr)); /* 462 */ - Tcl_Obj* (*tcl_FSGetNormalizedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); /* 463 */ - Tcl_Obj* (*tcl_FSJoinToPath) _ANSI_ARGS_((Tcl_Obj * basePtr, int objc, Tcl_Obj *CONST objv[])); /* 464 */ - ClientData (*tcl_FSGetInternalRep) _ANSI_ARGS_((Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); /* 465 */ - Tcl_Obj* (*tcl_FSGetTranslatedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 466 */ - int (*tcl_FSEvalFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * fileName)); /* 467 */ - Tcl_Obj* (*tcl_FSNewNativePath) _ANSI_ARGS_((Tcl_Filesystem* fromFilesystem, ClientData clientData)); /* 468 */ - CONST char* (*tcl_FSGetNativePath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 469 */ - Tcl_Obj* (*tcl_FSFileSystemInfo) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 470 */ - Tcl_Obj* (*tcl_FSPathSeparator) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 471 */ - Tcl_Obj* (*tcl_FSListVolumes) _ANSI_ARGS_((void)); /* 472 */ - int (*tcl_FSRegister) _ANSI_ARGS_((ClientData clientData, Tcl_Filesystem * fsPtr)); /* 473 */ - int (*tcl_FSUnregister) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 474 */ - ClientData (*tcl_FSData) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 475 */ - CONST char* (*tcl_FSGetTranslatedStringPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 476 */ - Tcl_Filesystem* (*tcl_FSGetFileSystemForPath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 477 */ - Tcl_PathType (*tcl_FSGetPathType) _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); /* 478 */ - int (*tcl_OutputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 479 */ - void (*tcl_FSMountsChanged) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 480 */ - int (*tcl_EvalTokensStandard) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 481 */ - void (*tcl_GetTime) _ANSI_ARGS_((Tcl_Time* timeBuf)); /* 482 */ - Tcl_Trace (*tcl_CreateObjTrace) _ANSI_ARGS_((Tcl_Interp* interp, int level, int flags, Tcl_CmdObjTraceProc* objProc, ClientData clientData, Tcl_CmdObjTraceDeleteProc* delProc)); /* 483 */ - int (*tcl_GetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, Tcl_CmdInfo* infoPtr)); /* 484 */ - int (*tcl_SetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, CONST Tcl_CmdInfo* infoPtr)); /* 485 */ - Tcl_Obj * (*tcl_DbNewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue, CONST char * file, int line)); /* 486 */ - int (*tcl_GetWideIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_WideInt * widePtr)); /* 487 */ - Tcl_Obj * (*tcl_NewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue)); /* 488 */ - void (*tcl_SetWideIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_WideInt wideValue)); /* 489 */ - Tcl_StatBuf * (*tcl_AllocStatBuf) _ANSI_ARGS_((void)); /* 490 */ - Tcl_WideInt (*tcl_Seek) _ANSI_ARGS_((Tcl_Channel chan, Tcl_WideInt offset, int mode)); /* 491 */ - Tcl_WideInt (*tcl_Tell) _ANSI_ARGS_((Tcl_Channel chan)); /* 492 */ - Tcl_DriverWideSeekProc * (*tcl_ChannelWideSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 493 */ -} TclStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclStubs *tclStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#ifndef Tcl_PkgProvideEx -#define Tcl_PkgProvideEx \ - (tclStubsPtr->tcl_PkgProvideEx) /* 0 */ -#endif -#ifndef Tcl_PkgRequireEx -#define Tcl_PkgRequireEx \ - (tclStubsPtr->tcl_PkgRequireEx) /* 1 */ -#endif -#ifndef Tcl_Panic -#define Tcl_Panic \ - (tclStubsPtr->tcl_Panic) /* 2 */ -#endif -#ifndef Tcl_Alloc -#define Tcl_Alloc \ - (tclStubsPtr->tcl_Alloc) /* 3 */ -#endif -#ifndef Tcl_Free -#define Tcl_Free \ - (tclStubsPtr->tcl_Free) /* 4 */ -#endif -#ifndef Tcl_Realloc -#define Tcl_Realloc \ - (tclStubsPtr->tcl_Realloc) /* 5 */ -#endif -#ifndef Tcl_DbCkalloc -#define Tcl_DbCkalloc \ - (tclStubsPtr->tcl_DbCkalloc) /* 6 */ -#endif -#ifndef Tcl_DbCkfree -#define Tcl_DbCkfree \ - (tclStubsPtr->tcl_DbCkfree) /* 7 */ -#endif -#ifndef Tcl_DbCkrealloc -#define Tcl_DbCkrealloc \ - (tclStubsPtr->tcl_DbCkrealloc) /* 8 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_CreateFileHandler -#define Tcl_CreateFileHandler \ - (tclStubsPtr->tcl_CreateFileHandler) /* 9 */ -#endif -#endif /* UNIX */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_DeleteFileHandler -#define Tcl_DeleteFileHandler \ - (tclStubsPtr->tcl_DeleteFileHandler) /* 10 */ -#endif -#endif /* UNIX */ -#ifndef Tcl_SetTimer -#define Tcl_SetTimer \ - (tclStubsPtr->tcl_SetTimer) /* 11 */ -#endif -#ifndef Tcl_Sleep -#define Tcl_Sleep \ - (tclStubsPtr->tcl_Sleep) /* 12 */ -#endif -#ifndef Tcl_WaitForEvent -#define Tcl_WaitForEvent \ - (tclStubsPtr->tcl_WaitForEvent) /* 13 */ -#endif -#ifndef Tcl_AppendAllObjTypes -#define Tcl_AppendAllObjTypes \ - (tclStubsPtr->tcl_AppendAllObjTypes) /* 14 */ -#endif -#ifndef Tcl_AppendStringsToObj -#define Tcl_AppendStringsToObj \ - (tclStubsPtr->tcl_AppendStringsToObj) /* 15 */ -#endif -#ifndef Tcl_AppendToObj -#define Tcl_AppendToObj \ - (tclStubsPtr->tcl_AppendToObj) /* 16 */ -#endif -#ifndef Tcl_ConcatObj -#define Tcl_ConcatObj \ - (tclStubsPtr->tcl_ConcatObj) /* 17 */ -#endif -#ifndef Tcl_ConvertToType -#define Tcl_ConvertToType \ - (tclStubsPtr->tcl_ConvertToType) /* 18 */ -#endif -#ifndef Tcl_DbDecrRefCount -#define Tcl_DbDecrRefCount \ - (tclStubsPtr->tcl_DbDecrRefCount) /* 19 */ -#endif -#ifndef Tcl_DbIncrRefCount -#define Tcl_DbIncrRefCount \ - (tclStubsPtr->tcl_DbIncrRefCount) /* 20 */ -#endif -#ifndef Tcl_DbIsShared -#define Tcl_DbIsShared \ - (tclStubsPtr->tcl_DbIsShared) /* 21 */ -#endif -#ifndef Tcl_DbNewBooleanObj -#define Tcl_DbNewBooleanObj \ - (tclStubsPtr->tcl_DbNewBooleanObj) /* 22 */ -#endif -#ifndef Tcl_DbNewByteArrayObj -#define Tcl_DbNewByteArrayObj \ - (tclStubsPtr->tcl_DbNewByteArrayObj) /* 23 */ -#endif -#ifndef Tcl_DbNewDoubleObj -#define Tcl_DbNewDoubleObj \ - (tclStubsPtr->tcl_DbNewDoubleObj) /* 24 */ -#endif -#ifndef Tcl_DbNewListObj -#define Tcl_DbNewListObj \ - (tclStubsPtr->tcl_DbNewListObj) /* 25 */ -#endif -#ifndef Tcl_DbNewLongObj -#define Tcl_DbNewLongObj \ - (tclStubsPtr->tcl_DbNewLongObj) /* 26 */ -#endif -#ifndef Tcl_DbNewObj -#define Tcl_DbNewObj \ - (tclStubsPtr->tcl_DbNewObj) /* 27 */ -#endif -#ifndef Tcl_DbNewStringObj -#define Tcl_DbNewStringObj \ - (tclStubsPtr->tcl_DbNewStringObj) /* 28 */ -#endif -#ifndef Tcl_DuplicateObj -#define Tcl_DuplicateObj \ - (tclStubsPtr->tcl_DuplicateObj) /* 29 */ -#endif -#ifndef TclFreeObj -#define TclFreeObj \ - (tclStubsPtr->tclFreeObj) /* 30 */ -#endif -#ifndef Tcl_GetBoolean -#define Tcl_GetBoolean \ - (tclStubsPtr->tcl_GetBoolean) /* 31 */ -#endif -#ifndef Tcl_GetBooleanFromObj -#define Tcl_GetBooleanFromObj \ - (tclStubsPtr->tcl_GetBooleanFromObj) /* 32 */ -#endif -#ifndef Tcl_GetByteArrayFromObj -#define Tcl_GetByteArrayFromObj \ - (tclStubsPtr->tcl_GetByteArrayFromObj) /* 33 */ -#endif -#ifndef Tcl_GetDouble -#define Tcl_GetDouble \ - (tclStubsPtr->tcl_GetDouble) /* 34 */ -#endif -#ifndef Tcl_GetDoubleFromObj -#define Tcl_GetDoubleFromObj \ - (tclStubsPtr->tcl_GetDoubleFromObj) /* 35 */ -#endif -#ifndef Tcl_GetIndexFromObj -#define Tcl_GetIndexFromObj \ - (tclStubsPtr->tcl_GetIndexFromObj) /* 36 */ -#endif -#ifndef Tcl_GetInt -#define Tcl_GetInt \ - (tclStubsPtr->tcl_GetInt) /* 37 */ -#endif -#ifndef Tcl_GetIntFromObj -#define Tcl_GetIntFromObj \ - (tclStubsPtr->tcl_GetIntFromObj) /* 38 */ -#endif -#ifndef Tcl_GetLongFromObj -#define Tcl_GetLongFromObj \ - (tclStubsPtr->tcl_GetLongFromObj) /* 39 */ -#endif -#ifndef Tcl_GetObjType -#define Tcl_GetObjType \ - (tclStubsPtr->tcl_GetObjType) /* 40 */ -#endif -#ifndef Tcl_GetStringFromObj -#define Tcl_GetStringFromObj \ - (tclStubsPtr->tcl_GetStringFromObj) /* 41 */ -#endif -#ifndef Tcl_InvalidateStringRep -#define Tcl_InvalidateStringRep \ - (tclStubsPtr->tcl_InvalidateStringRep) /* 42 */ -#endif -#ifndef Tcl_ListObjAppendList -#define Tcl_ListObjAppendList \ - (tclStubsPtr->tcl_ListObjAppendList) /* 43 */ -#endif -#ifndef Tcl_ListObjAppendElement -#define Tcl_ListObjAppendElement \ - (tclStubsPtr->tcl_ListObjAppendElement) /* 44 */ -#endif -#ifndef Tcl_ListObjGetElements -#define Tcl_ListObjGetElements \ - (tclStubsPtr->tcl_ListObjGetElements) /* 45 */ -#endif -#ifndef Tcl_ListObjIndex -#define Tcl_ListObjIndex \ - (tclStubsPtr->tcl_ListObjIndex) /* 46 */ -#endif -#ifndef Tcl_ListObjLength -#define Tcl_ListObjLength \ - (tclStubsPtr->tcl_ListObjLength) /* 47 */ -#endif -#ifndef Tcl_ListObjReplace -#define Tcl_ListObjReplace \ - (tclStubsPtr->tcl_ListObjReplace) /* 48 */ -#endif -#ifndef Tcl_NewBooleanObj -#define Tcl_NewBooleanObj \ - (tclStubsPtr->tcl_NewBooleanObj) /* 49 */ -#endif -#ifndef Tcl_NewByteArrayObj -#define Tcl_NewByteArrayObj \ - (tclStubsPtr->tcl_NewByteArrayObj) /* 50 */ -#endif -#ifndef Tcl_NewDoubleObj -#define Tcl_NewDoubleObj \ - (tclStubsPtr->tcl_NewDoubleObj) /* 51 */ -#endif -#ifndef Tcl_NewIntObj -#define Tcl_NewIntObj \ - (tclStubsPtr->tcl_NewIntObj) /* 52 */ -#endif -#ifndef Tcl_NewListObj -#define Tcl_NewListObj \ - (tclStubsPtr->tcl_NewListObj) /* 53 */ -#endif -#ifndef Tcl_NewLongObj -#define Tcl_NewLongObj \ - (tclStubsPtr->tcl_NewLongObj) /* 54 */ -#endif -#ifndef Tcl_NewObj -#define Tcl_NewObj \ - (tclStubsPtr->tcl_NewObj) /* 55 */ -#endif -#ifndef Tcl_NewStringObj -#define Tcl_NewStringObj \ - (tclStubsPtr->tcl_NewStringObj) /* 56 */ -#endif -#ifndef Tcl_SetBooleanObj -#define Tcl_SetBooleanObj \ - (tclStubsPtr->tcl_SetBooleanObj) /* 57 */ -#endif -#ifndef Tcl_SetByteArrayLength -#define Tcl_SetByteArrayLength \ - (tclStubsPtr->tcl_SetByteArrayLength) /* 58 */ -#endif -#ifndef Tcl_SetByteArrayObj -#define Tcl_SetByteArrayObj \ - (tclStubsPtr->tcl_SetByteArrayObj) /* 59 */ -#endif -#ifndef Tcl_SetDoubleObj -#define Tcl_SetDoubleObj \ - (tclStubsPtr->tcl_SetDoubleObj) /* 60 */ -#endif -#ifndef Tcl_SetIntObj -#define Tcl_SetIntObj \ - (tclStubsPtr->tcl_SetIntObj) /* 61 */ -#endif -#ifndef Tcl_SetListObj -#define Tcl_SetListObj \ - (tclStubsPtr->tcl_SetListObj) /* 62 */ -#endif -#ifndef Tcl_SetLongObj -#define Tcl_SetLongObj \ - (tclStubsPtr->tcl_SetLongObj) /* 63 */ -#endif -#ifndef Tcl_SetObjLength -#define Tcl_SetObjLength \ - (tclStubsPtr->tcl_SetObjLength) /* 64 */ -#endif -#ifndef Tcl_SetStringObj -#define Tcl_SetStringObj \ - (tclStubsPtr->tcl_SetStringObj) /* 65 */ -#endif -#ifndef Tcl_AddErrorInfo -#define Tcl_AddErrorInfo \ - (tclStubsPtr->tcl_AddErrorInfo) /* 66 */ -#endif -#ifndef Tcl_AddObjErrorInfo -#define Tcl_AddObjErrorInfo \ - (tclStubsPtr->tcl_AddObjErrorInfo) /* 67 */ -#endif -#ifndef Tcl_AllowExceptions -#define Tcl_AllowExceptions \ - (tclStubsPtr->tcl_AllowExceptions) /* 68 */ -#endif -#ifndef Tcl_AppendElement -#define Tcl_AppendElement \ - (tclStubsPtr->tcl_AppendElement) /* 69 */ -#endif -#ifndef Tcl_AppendResult -#define Tcl_AppendResult \ - (tclStubsPtr->tcl_AppendResult) /* 70 */ -#endif -#ifndef Tcl_AsyncCreate -#define Tcl_AsyncCreate \ - (tclStubsPtr->tcl_AsyncCreate) /* 71 */ -#endif -#ifndef Tcl_AsyncDelete -#define Tcl_AsyncDelete \ - (tclStubsPtr->tcl_AsyncDelete) /* 72 */ -#endif -#ifndef Tcl_AsyncInvoke -#define Tcl_AsyncInvoke \ - (tclStubsPtr->tcl_AsyncInvoke) /* 73 */ -#endif -#ifndef Tcl_AsyncMark -#define Tcl_AsyncMark \ - (tclStubsPtr->tcl_AsyncMark) /* 74 */ -#endif -#ifndef Tcl_AsyncReady -#define Tcl_AsyncReady \ - (tclStubsPtr->tcl_AsyncReady) /* 75 */ -#endif -#ifndef Tcl_BackgroundError -#define Tcl_BackgroundError \ - (tclStubsPtr->tcl_BackgroundError) /* 76 */ -#endif -#ifndef Tcl_Backslash -#define Tcl_Backslash \ - (tclStubsPtr->tcl_Backslash) /* 77 */ -#endif -#ifndef Tcl_BadChannelOption -#define Tcl_BadChannelOption \ - (tclStubsPtr->tcl_BadChannelOption) /* 78 */ -#endif -#ifndef Tcl_CallWhenDeleted -#define Tcl_CallWhenDeleted \ - (tclStubsPtr->tcl_CallWhenDeleted) /* 79 */ -#endif -#ifndef Tcl_CancelIdleCall -#define Tcl_CancelIdleCall \ - (tclStubsPtr->tcl_CancelIdleCall) /* 80 */ -#endif -#ifndef Tcl_Close -#define Tcl_Close \ - (tclStubsPtr->tcl_Close) /* 81 */ -#endif -#ifndef Tcl_CommandComplete -#define Tcl_CommandComplete \ - (tclStubsPtr->tcl_CommandComplete) /* 82 */ -#endif -#ifndef Tcl_Concat -#define Tcl_Concat \ - (tclStubsPtr->tcl_Concat) /* 83 */ -#endif -#ifndef Tcl_ConvertElement -#define Tcl_ConvertElement \ - (tclStubsPtr->tcl_ConvertElement) /* 84 */ -#endif -#ifndef Tcl_ConvertCountedElement -#define Tcl_ConvertCountedElement \ - (tclStubsPtr->tcl_ConvertCountedElement) /* 85 */ -#endif -#ifndef Tcl_CreateAlias -#define Tcl_CreateAlias \ - (tclStubsPtr->tcl_CreateAlias) /* 86 */ -#endif -#ifndef Tcl_CreateAliasObj -#define Tcl_CreateAliasObj \ - (tclStubsPtr->tcl_CreateAliasObj) /* 87 */ -#endif -#ifndef Tcl_CreateChannel -#define Tcl_CreateChannel \ - (tclStubsPtr->tcl_CreateChannel) /* 88 */ -#endif -#ifndef Tcl_CreateChannelHandler -#define Tcl_CreateChannelHandler \ - (tclStubsPtr->tcl_CreateChannelHandler) /* 89 */ -#endif -#ifndef Tcl_CreateCloseHandler -#define Tcl_CreateCloseHandler \ - (tclStubsPtr->tcl_CreateCloseHandler) /* 90 */ -#endif -#ifndef Tcl_CreateCommand -#define Tcl_CreateCommand \ - (tclStubsPtr->tcl_CreateCommand) /* 91 */ -#endif -#ifndef Tcl_CreateEventSource -#define Tcl_CreateEventSource \ - (tclStubsPtr->tcl_CreateEventSource) /* 92 */ -#endif -#ifndef Tcl_CreateExitHandler -#define Tcl_CreateExitHandler \ - (tclStubsPtr->tcl_CreateExitHandler) /* 93 */ -#endif -#ifndef Tcl_CreateInterp -#define Tcl_CreateInterp \ - (tclStubsPtr->tcl_CreateInterp) /* 94 */ -#endif -#ifndef Tcl_CreateMathFunc -#define Tcl_CreateMathFunc \ - (tclStubsPtr->tcl_CreateMathFunc) /* 95 */ -#endif -#ifndef Tcl_CreateObjCommand -#define Tcl_CreateObjCommand \ - (tclStubsPtr->tcl_CreateObjCommand) /* 96 */ -#endif -#ifndef Tcl_CreateSlave -#define Tcl_CreateSlave \ - (tclStubsPtr->tcl_CreateSlave) /* 97 */ -#endif -#ifndef Tcl_CreateTimerHandler -#define Tcl_CreateTimerHandler \ - (tclStubsPtr->tcl_CreateTimerHandler) /* 98 */ -#endif -#ifndef Tcl_CreateTrace -#define Tcl_CreateTrace \ - (tclStubsPtr->tcl_CreateTrace) /* 99 */ -#endif -#ifndef Tcl_DeleteAssocData -#define Tcl_DeleteAssocData \ - (tclStubsPtr->tcl_DeleteAssocData) /* 100 */ -#endif -#ifndef Tcl_DeleteChannelHandler -#define Tcl_DeleteChannelHandler \ - (tclStubsPtr->tcl_DeleteChannelHandler) /* 101 */ -#endif -#ifndef Tcl_DeleteCloseHandler -#define Tcl_DeleteCloseHandler \ - (tclStubsPtr->tcl_DeleteCloseHandler) /* 102 */ -#endif -#ifndef Tcl_DeleteCommand -#define Tcl_DeleteCommand \ - (tclStubsPtr->tcl_DeleteCommand) /* 103 */ -#endif -#ifndef Tcl_DeleteCommandFromToken -#define Tcl_DeleteCommandFromToken \ - (tclStubsPtr->tcl_DeleteCommandFromToken) /* 104 */ -#endif -#ifndef Tcl_DeleteEvents -#define Tcl_DeleteEvents \ - (tclStubsPtr->tcl_DeleteEvents) /* 105 */ -#endif -#ifndef Tcl_DeleteEventSource -#define Tcl_DeleteEventSource \ - (tclStubsPtr->tcl_DeleteEventSource) /* 106 */ -#endif -#ifndef Tcl_DeleteExitHandler -#define Tcl_DeleteExitHandler \ - (tclStubsPtr->tcl_DeleteExitHandler) /* 107 */ -#endif -#ifndef Tcl_DeleteHashEntry -#define Tcl_DeleteHashEntry \ - (tclStubsPtr->tcl_DeleteHashEntry) /* 108 */ -#endif -#ifndef Tcl_DeleteHashTable -#define Tcl_DeleteHashTable \ - (tclStubsPtr->tcl_DeleteHashTable) /* 109 */ -#endif -#ifndef Tcl_DeleteInterp -#define Tcl_DeleteInterp \ - (tclStubsPtr->tcl_DeleteInterp) /* 110 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_DetachPids -#define Tcl_DetachPids \ - (tclStubsPtr->tcl_DetachPids) /* 111 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_DetachPids -#define Tcl_DetachPids \ - (tclStubsPtr->tcl_DetachPids) /* 111 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_DeleteTimerHandler -#define Tcl_DeleteTimerHandler \ - (tclStubsPtr->tcl_DeleteTimerHandler) /* 112 */ -#endif -#ifndef Tcl_DeleteTrace -#define Tcl_DeleteTrace \ - (tclStubsPtr->tcl_DeleteTrace) /* 113 */ -#endif -#ifndef Tcl_DontCallWhenDeleted -#define Tcl_DontCallWhenDeleted \ - (tclStubsPtr->tcl_DontCallWhenDeleted) /* 114 */ -#endif -#ifndef Tcl_DoOneEvent -#define Tcl_DoOneEvent \ - (tclStubsPtr->tcl_DoOneEvent) /* 115 */ -#endif -#ifndef Tcl_DoWhenIdle -#define Tcl_DoWhenIdle \ - (tclStubsPtr->tcl_DoWhenIdle) /* 116 */ -#endif -#ifndef Tcl_DStringAppend -#define Tcl_DStringAppend \ - (tclStubsPtr->tcl_DStringAppend) /* 117 */ -#endif -#ifndef Tcl_DStringAppendElement -#define Tcl_DStringAppendElement \ - (tclStubsPtr->tcl_DStringAppendElement) /* 118 */ -#endif -#ifndef Tcl_DStringEndSublist -#define Tcl_DStringEndSublist \ - (tclStubsPtr->tcl_DStringEndSublist) /* 119 */ -#endif -#ifndef Tcl_DStringFree -#define Tcl_DStringFree \ - (tclStubsPtr->tcl_DStringFree) /* 120 */ -#endif -#ifndef Tcl_DStringGetResult -#define Tcl_DStringGetResult \ - (tclStubsPtr->tcl_DStringGetResult) /* 121 */ -#endif -#ifndef Tcl_DStringInit -#define Tcl_DStringInit \ - (tclStubsPtr->tcl_DStringInit) /* 122 */ -#endif -#ifndef Tcl_DStringResult -#define Tcl_DStringResult \ - (tclStubsPtr->tcl_DStringResult) /* 123 */ -#endif -#ifndef Tcl_DStringSetLength -#define Tcl_DStringSetLength \ - (tclStubsPtr->tcl_DStringSetLength) /* 124 */ -#endif -#ifndef Tcl_DStringStartSublist -#define Tcl_DStringStartSublist \ - (tclStubsPtr->tcl_DStringStartSublist) /* 125 */ -#endif -#ifndef Tcl_Eof -#define Tcl_Eof \ - (tclStubsPtr->tcl_Eof) /* 126 */ -#endif -#ifndef Tcl_ErrnoId -#define Tcl_ErrnoId \ - (tclStubsPtr->tcl_ErrnoId) /* 127 */ -#endif -#ifndef Tcl_ErrnoMsg -#define Tcl_ErrnoMsg \ - (tclStubsPtr->tcl_ErrnoMsg) /* 128 */ -#endif -#ifndef Tcl_Eval -#define Tcl_Eval \ - (tclStubsPtr->tcl_Eval) /* 129 */ -#endif -#ifndef Tcl_EvalFile -#define Tcl_EvalFile \ - (tclStubsPtr->tcl_EvalFile) /* 130 */ -#endif -#ifndef Tcl_EvalObj -#define Tcl_EvalObj \ - (tclStubsPtr->tcl_EvalObj) /* 131 */ -#endif -#ifndef Tcl_EventuallyFree -#define Tcl_EventuallyFree \ - (tclStubsPtr->tcl_EventuallyFree) /* 132 */ -#endif -#ifndef Tcl_Exit -#define Tcl_Exit \ - (tclStubsPtr->tcl_Exit) /* 133 */ -#endif -#ifndef Tcl_ExposeCommand -#define Tcl_ExposeCommand \ - (tclStubsPtr->tcl_ExposeCommand) /* 134 */ -#endif -#ifndef Tcl_ExprBoolean -#define Tcl_ExprBoolean \ - (tclStubsPtr->tcl_ExprBoolean) /* 135 */ -#endif -#ifndef Tcl_ExprBooleanObj -#define Tcl_ExprBooleanObj \ - (tclStubsPtr->tcl_ExprBooleanObj) /* 136 */ -#endif -#ifndef Tcl_ExprDouble -#define Tcl_ExprDouble \ - (tclStubsPtr->tcl_ExprDouble) /* 137 */ -#endif -#ifndef Tcl_ExprDoubleObj -#define Tcl_ExprDoubleObj \ - (tclStubsPtr->tcl_ExprDoubleObj) /* 138 */ -#endif -#ifndef Tcl_ExprLong -#define Tcl_ExprLong \ - (tclStubsPtr->tcl_ExprLong) /* 139 */ -#endif -#ifndef Tcl_ExprLongObj -#define Tcl_ExprLongObj \ - (tclStubsPtr->tcl_ExprLongObj) /* 140 */ -#endif -#ifndef Tcl_ExprObj -#define Tcl_ExprObj \ - (tclStubsPtr->tcl_ExprObj) /* 141 */ -#endif -#ifndef Tcl_ExprString -#define Tcl_ExprString \ - (tclStubsPtr->tcl_ExprString) /* 142 */ -#endif -#ifndef Tcl_Finalize -#define Tcl_Finalize \ - (tclStubsPtr->tcl_Finalize) /* 143 */ -#endif -#ifndef Tcl_FindExecutable -#define Tcl_FindExecutable \ - (tclStubsPtr->tcl_FindExecutable) /* 144 */ -#endif -#ifndef Tcl_FirstHashEntry -#define Tcl_FirstHashEntry \ - (tclStubsPtr->tcl_FirstHashEntry) /* 145 */ -#endif -#ifndef Tcl_Flush -#define Tcl_Flush \ - (tclStubsPtr->tcl_Flush) /* 146 */ -#endif -#ifndef Tcl_FreeResult -#define Tcl_FreeResult \ - (tclStubsPtr->tcl_FreeResult) /* 147 */ -#endif -#ifndef Tcl_GetAlias -#define Tcl_GetAlias \ - (tclStubsPtr->tcl_GetAlias) /* 148 */ -#endif -#ifndef Tcl_GetAliasObj -#define Tcl_GetAliasObj \ - (tclStubsPtr->tcl_GetAliasObj) /* 149 */ -#endif -#ifndef Tcl_GetAssocData -#define Tcl_GetAssocData \ - (tclStubsPtr->tcl_GetAssocData) /* 150 */ -#endif -#ifndef Tcl_GetChannel -#define Tcl_GetChannel \ - (tclStubsPtr->tcl_GetChannel) /* 151 */ -#endif -#ifndef Tcl_GetChannelBufferSize -#define Tcl_GetChannelBufferSize \ - (tclStubsPtr->tcl_GetChannelBufferSize) /* 152 */ -#endif -#ifndef Tcl_GetChannelHandle -#define Tcl_GetChannelHandle \ - (tclStubsPtr->tcl_GetChannelHandle) /* 153 */ -#endif -#ifndef Tcl_GetChannelInstanceData -#define Tcl_GetChannelInstanceData \ - (tclStubsPtr->tcl_GetChannelInstanceData) /* 154 */ -#endif -#ifndef Tcl_GetChannelMode -#define Tcl_GetChannelMode \ - (tclStubsPtr->tcl_GetChannelMode) /* 155 */ -#endif -#ifndef Tcl_GetChannelName -#define Tcl_GetChannelName \ - (tclStubsPtr->tcl_GetChannelName) /* 156 */ -#endif -#ifndef Tcl_GetChannelOption -#define Tcl_GetChannelOption \ - (tclStubsPtr->tcl_GetChannelOption) /* 157 */ -#endif -#ifndef Tcl_GetChannelType -#define Tcl_GetChannelType \ - (tclStubsPtr->tcl_GetChannelType) /* 158 */ -#endif -#ifndef Tcl_GetCommandInfo -#define Tcl_GetCommandInfo \ - (tclStubsPtr->tcl_GetCommandInfo) /* 159 */ -#endif -#ifndef Tcl_GetCommandName -#define Tcl_GetCommandName \ - (tclStubsPtr->tcl_GetCommandName) /* 160 */ -#endif -#ifndef Tcl_GetErrno -#define Tcl_GetErrno \ - (tclStubsPtr->tcl_GetErrno) /* 161 */ -#endif -#ifndef Tcl_GetHostName -#define Tcl_GetHostName \ - (tclStubsPtr->tcl_GetHostName) /* 162 */ -#endif -#ifndef Tcl_GetInterpPath -#define Tcl_GetInterpPath \ - (tclStubsPtr->tcl_GetInterpPath) /* 163 */ -#endif -#ifndef Tcl_GetMaster -#define Tcl_GetMaster \ - (tclStubsPtr->tcl_GetMaster) /* 164 */ -#endif -#ifndef Tcl_GetNameOfExecutable -#define Tcl_GetNameOfExecutable \ - (tclStubsPtr->tcl_GetNameOfExecutable) /* 165 */ -#endif -#ifndef Tcl_GetObjResult -#define Tcl_GetObjResult \ - (tclStubsPtr->tcl_GetObjResult) /* 166 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_GetOpenFile -#define Tcl_GetOpenFile \ - (tclStubsPtr->tcl_GetOpenFile) /* 167 */ -#endif -#endif /* UNIX */ -#ifndef Tcl_GetPathType -#define Tcl_GetPathType \ - (tclStubsPtr->tcl_GetPathType) /* 168 */ -#endif -#ifndef Tcl_Gets -#define Tcl_Gets \ - (tclStubsPtr->tcl_Gets) /* 169 */ -#endif -#ifndef Tcl_GetsObj -#define Tcl_GetsObj \ - (tclStubsPtr->tcl_GetsObj) /* 170 */ -#endif -#ifndef Tcl_GetServiceMode -#define Tcl_GetServiceMode \ - (tclStubsPtr->tcl_GetServiceMode) /* 171 */ -#endif -#ifndef Tcl_GetSlave -#define Tcl_GetSlave \ - (tclStubsPtr->tcl_GetSlave) /* 172 */ -#endif -#ifndef Tcl_GetStdChannel -#define Tcl_GetStdChannel \ - (tclStubsPtr->tcl_GetStdChannel) /* 173 */ -#endif -#ifndef Tcl_GetStringResult -#define Tcl_GetStringResult \ - (tclStubsPtr->tcl_GetStringResult) /* 174 */ -#endif -#ifndef Tcl_GetVar -#define Tcl_GetVar \ - (tclStubsPtr->tcl_GetVar) /* 175 */ -#endif -#ifndef Tcl_GetVar2 -#define Tcl_GetVar2 \ - (tclStubsPtr->tcl_GetVar2) /* 176 */ -#endif -#ifndef Tcl_GlobalEval -#define Tcl_GlobalEval \ - (tclStubsPtr->tcl_GlobalEval) /* 177 */ -#endif -#ifndef Tcl_GlobalEvalObj -#define Tcl_GlobalEvalObj \ - (tclStubsPtr->tcl_GlobalEvalObj) /* 178 */ -#endif -#ifndef Tcl_HideCommand -#define Tcl_HideCommand \ - (tclStubsPtr->tcl_HideCommand) /* 179 */ -#endif -#ifndef Tcl_Init -#define Tcl_Init \ - (tclStubsPtr->tcl_Init) /* 180 */ -#endif -#ifndef Tcl_InitHashTable -#define Tcl_InitHashTable \ - (tclStubsPtr->tcl_InitHashTable) /* 181 */ -#endif -#ifndef Tcl_InputBlocked -#define Tcl_InputBlocked \ - (tclStubsPtr->tcl_InputBlocked) /* 182 */ -#endif -#ifndef Tcl_InputBuffered -#define Tcl_InputBuffered \ - (tclStubsPtr->tcl_InputBuffered) /* 183 */ -#endif -#ifndef Tcl_InterpDeleted -#define Tcl_InterpDeleted \ - (tclStubsPtr->tcl_InterpDeleted) /* 184 */ -#endif -#ifndef Tcl_IsSafe -#define Tcl_IsSafe \ - (tclStubsPtr->tcl_IsSafe) /* 185 */ -#endif -#ifndef Tcl_JoinPath -#define Tcl_JoinPath \ - (tclStubsPtr->tcl_JoinPath) /* 186 */ -#endif -#ifndef Tcl_LinkVar -#define Tcl_LinkVar \ - (tclStubsPtr->tcl_LinkVar) /* 187 */ -#endif -/* Slot 188 is reserved */ -#ifndef Tcl_MakeFileChannel -#define Tcl_MakeFileChannel \ - (tclStubsPtr->tcl_MakeFileChannel) /* 189 */ -#endif -#ifndef Tcl_MakeSafe -#define Tcl_MakeSafe \ - (tclStubsPtr->tcl_MakeSafe) /* 190 */ -#endif -#ifndef Tcl_MakeTcpClientChannel -#define Tcl_MakeTcpClientChannel \ - (tclStubsPtr->tcl_MakeTcpClientChannel) /* 191 */ -#endif -#ifndef Tcl_Merge -#define Tcl_Merge \ - (tclStubsPtr->tcl_Merge) /* 192 */ -#endif -#ifndef Tcl_NextHashEntry -#define Tcl_NextHashEntry \ - (tclStubsPtr->tcl_NextHashEntry) /* 193 */ -#endif -#ifndef Tcl_NotifyChannel -#define Tcl_NotifyChannel \ - (tclStubsPtr->tcl_NotifyChannel) /* 194 */ -#endif -#ifndef Tcl_ObjGetVar2 -#define Tcl_ObjGetVar2 \ - (tclStubsPtr->tcl_ObjGetVar2) /* 195 */ -#endif -#ifndef Tcl_ObjSetVar2 -#define Tcl_ObjSetVar2 \ - (tclStubsPtr->tcl_ObjSetVar2) /* 196 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_OpenCommandChannel -#define Tcl_OpenCommandChannel \ - (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_OpenCommandChannel -#define Tcl_OpenCommandChannel \ - (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_OpenFileChannel -#define Tcl_OpenFileChannel \ - (tclStubsPtr->tcl_OpenFileChannel) /* 198 */ -#endif -#ifndef Tcl_OpenTcpClient -#define Tcl_OpenTcpClient \ - (tclStubsPtr->tcl_OpenTcpClient) /* 199 */ -#endif -#ifndef Tcl_OpenTcpServer -#define Tcl_OpenTcpServer \ - (tclStubsPtr->tcl_OpenTcpServer) /* 200 */ -#endif -#ifndef Tcl_Preserve -#define Tcl_Preserve \ - (tclStubsPtr->tcl_Preserve) /* 201 */ -#endif -#ifndef Tcl_PrintDouble -#define Tcl_PrintDouble \ - (tclStubsPtr->tcl_PrintDouble) /* 202 */ -#endif -#ifndef Tcl_PutEnv -#define Tcl_PutEnv \ - (tclStubsPtr->tcl_PutEnv) /* 203 */ -#endif -#ifndef Tcl_PosixError -#define Tcl_PosixError \ - (tclStubsPtr->tcl_PosixError) /* 204 */ -#endif -#ifndef Tcl_QueueEvent -#define Tcl_QueueEvent \ - (tclStubsPtr->tcl_QueueEvent) /* 205 */ -#endif -#ifndef Tcl_Read -#define Tcl_Read \ - (tclStubsPtr->tcl_Read) /* 206 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_ReapDetachedProcs -#define Tcl_ReapDetachedProcs \ - (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_ReapDetachedProcs -#define Tcl_ReapDetachedProcs \ - (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_RecordAndEval -#define Tcl_RecordAndEval \ - (tclStubsPtr->tcl_RecordAndEval) /* 208 */ -#endif -#ifndef Tcl_RecordAndEvalObj -#define Tcl_RecordAndEvalObj \ - (tclStubsPtr->tcl_RecordAndEvalObj) /* 209 */ -#endif -#ifndef Tcl_RegisterChannel -#define Tcl_RegisterChannel \ - (tclStubsPtr->tcl_RegisterChannel) /* 210 */ -#endif -#ifndef Tcl_RegisterObjType -#define Tcl_RegisterObjType \ - (tclStubsPtr->tcl_RegisterObjType) /* 211 */ -#endif -#ifndef Tcl_RegExpCompile -#define Tcl_RegExpCompile \ - (tclStubsPtr->tcl_RegExpCompile) /* 212 */ -#endif -#ifndef Tcl_RegExpExec -#define Tcl_RegExpExec \ - (tclStubsPtr->tcl_RegExpExec) /* 213 */ -#endif -#ifndef Tcl_RegExpMatch -#define Tcl_RegExpMatch \ - (tclStubsPtr->tcl_RegExpMatch) /* 214 */ -#endif -#ifndef Tcl_RegExpRange -#define Tcl_RegExpRange \ - (tclStubsPtr->tcl_RegExpRange) /* 215 */ -#endif -#ifndef Tcl_Release -#define Tcl_Release \ - (tclStubsPtr->tcl_Release) /* 216 */ -#endif -#ifndef Tcl_ResetResult -#define Tcl_ResetResult \ - (tclStubsPtr->tcl_ResetResult) /* 217 */ -#endif -#ifndef Tcl_ScanElement -#define Tcl_ScanElement \ - (tclStubsPtr->tcl_ScanElement) /* 218 */ -#endif -#ifndef Tcl_ScanCountedElement -#define Tcl_ScanCountedElement \ - (tclStubsPtr->tcl_ScanCountedElement) /* 219 */ -#endif -#ifndef Tcl_SeekOld -#define Tcl_SeekOld \ - (tclStubsPtr->tcl_SeekOld) /* 220 */ -#endif -#ifndef Tcl_ServiceAll -#define Tcl_ServiceAll \ - (tclStubsPtr->tcl_ServiceAll) /* 221 */ -#endif -#ifndef Tcl_ServiceEvent -#define Tcl_ServiceEvent \ - (tclStubsPtr->tcl_ServiceEvent) /* 222 */ -#endif -#ifndef Tcl_SetAssocData -#define Tcl_SetAssocData \ - (tclStubsPtr->tcl_SetAssocData) /* 223 */ -#endif -#ifndef Tcl_SetChannelBufferSize -#define Tcl_SetChannelBufferSize \ - (tclStubsPtr->tcl_SetChannelBufferSize) /* 224 */ -#endif -#ifndef Tcl_SetChannelOption -#define Tcl_SetChannelOption \ - (tclStubsPtr->tcl_SetChannelOption) /* 225 */ -#endif -#ifndef Tcl_SetCommandInfo -#define Tcl_SetCommandInfo \ - (tclStubsPtr->tcl_SetCommandInfo) /* 226 */ -#endif -#ifndef Tcl_SetErrno -#define Tcl_SetErrno \ - (tclStubsPtr->tcl_SetErrno) /* 227 */ -#endif -#ifndef Tcl_SetErrorCode -#define Tcl_SetErrorCode \ - (tclStubsPtr->tcl_SetErrorCode) /* 228 */ -#endif -#ifndef Tcl_SetMaxBlockTime -#define Tcl_SetMaxBlockTime \ - (tclStubsPtr->tcl_SetMaxBlockTime) /* 229 */ -#endif -#ifndef Tcl_SetPanicProc -#define Tcl_SetPanicProc \ - (tclStubsPtr->tcl_SetPanicProc) /* 230 */ -#endif -#ifndef Tcl_SetRecursionLimit -#define Tcl_SetRecursionLimit \ - (tclStubsPtr->tcl_SetRecursionLimit) /* 231 */ -#endif -#ifndef Tcl_SetResult -#define Tcl_SetResult \ - (tclStubsPtr->tcl_SetResult) /* 232 */ -#endif -#ifndef Tcl_SetServiceMode -#define Tcl_SetServiceMode \ - (tclStubsPtr->tcl_SetServiceMode) /* 233 */ -#endif -#ifndef Tcl_SetObjErrorCode -#define Tcl_SetObjErrorCode \ - (tclStubsPtr->tcl_SetObjErrorCode) /* 234 */ -#endif -#ifndef Tcl_SetObjResult -#define Tcl_SetObjResult \ - (tclStubsPtr->tcl_SetObjResult) /* 235 */ -#endif -#ifndef Tcl_SetStdChannel -#define Tcl_SetStdChannel \ - (tclStubsPtr->tcl_SetStdChannel) /* 236 */ -#endif -#ifndef Tcl_SetVar -#define Tcl_SetVar \ - (tclStubsPtr->tcl_SetVar) /* 237 */ -#endif -#ifndef Tcl_SetVar2 -#define Tcl_SetVar2 \ - (tclStubsPtr->tcl_SetVar2) /* 238 */ -#endif -#ifndef Tcl_SignalId -#define Tcl_SignalId \ - (tclStubsPtr->tcl_SignalId) /* 239 */ -#endif -#ifndef Tcl_SignalMsg -#define Tcl_SignalMsg \ - (tclStubsPtr->tcl_SignalMsg) /* 240 */ -#endif -#ifndef Tcl_SourceRCFile -#define Tcl_SourceRCFile \ - (tclStubsPtr->tcl_SourceRCFile) /* 241 */ -#endif -#ifndef Tcl_SplitList -#define Tcl_SplitList \ - (tclStubsPtr->tcl_SplitList) /* 242 */ -#endif -#ifndef Tcl_SplitPath -#define Tcl_SplitPath \ - (tclStubsPtr->tcl_SplitPath) /* 243 */ -#endif -#ifndef Tcl_StaticPackage -#define Tcl_StaticPackage \ - (tclStubsPtr->tcl_StaticPackage) /* 244 */ -#endif -#ifndef Tcl_StringMatch -#define Tcl_StringMatch \ - (tclStubsPtr->tcl_StringMatch) /* 245 */ -#endif -#ifndef Tcl_TellOld -#define Tcl_TellOld \ - (tclStubsPtr->tcl_TellOld) /* 246 */ -#endif -#ifndef Tcl_TraceVar -#define Tcl_TraceVar \ - (tclStubsPtr->tcl_TraceVar) /* 247 */ -#endif -#ifndef Tcl_TraceVar2 -#define Tcl_TraceVar2 \ - (tclStubsPtr->tcl_TraceVar2) /* 248 */ -#endif -#ifndef Tcl_TranslateFileName -#define Tcl_TranslateFileName \ - (tclStubsPtr->tcl_TranslateFileName) /* 249 */ -#endif -#ifndef Tcl_Ungets -#define Tcl_Ungets \ - (tclStubsPtr->tcl_Ungets) /* 250 */ -#endif -#ifndef Tcl_UnlinkVar -#define Tcl_UnlinkVar \ - (tclStubsPtr->tcl_UnlinkVar) /* 251 */ -#endif -#ifndef Tcl_UnregisterChannel -#define Tcl_UnregisterChannel \ - (tclStubsPtr->tcl_UnregisterChannel) /* 252 */ -#endif -#ifndef Tcl_UnsetVar -#define Tcl_UnsetVar \ - (tclStubsPtr->tcl_UnsetVar) /* 253 */ -#endif -#ifndef Tcl_UnsetVar2 -#define Tcl_UnsetVar2 \ - (tclStubsPtr->tcl_UnsetVar2) /* 254 */ -#endif -#ifndef Tcl_UntraceVar -#define Tcl_UntraceVar \ - (tclStubsPtr->tcl_UntraceVar) /* 255 */ -#endif -#ifndef Tcl_UntraceVar2 -#define Tcl_UntraceVar2 \ - (tclStubsPtr->tcl_UntraceVar2) /* 256 */ -#endif -#ifndef Tcl_UpdateLinkedVar -#define Tcl_UpdateLinkedVar \ - (tclStubsPtr->tcl_UpdateLinkedVar) /* 257 */ -#endif -#ifndef Tcl_UpVar -#define Tcl_UpVar \ - (tclStubsPtr->tcl_UpVar) /* 258 */ -#endif -#ifndef Tcl_UpVar2 -#define Tcl_UpVar2 \ - (tclStubsPtr->tcl_UpVar2) /* 259 */ -#endif -#ifndef Tcl_VarEval -#define Tcl_VarEval \ - (tclStubsPtr->tcl_VarEval) /* 260 */ -#endif -#ifndef Tcl_VarTraceInfo -#define Tcl_VarTraceInfo \ - (tclStubsPtr->tcl_VarTraceInfo) /* 261 */ -#endif -#ifndef Tcl_VarTraceInfo2 -#define Tcl_VarTraceInfo2 \ - (tclStubsPtr->tcl_VarTraceInfo2) /* 262 */ -#endif -#ifndef Tcl_Write -#define Tcl_Write \ - (tclStubsPtr->tcl_Write) /* 263 */ -#endif -#ifndef Tcl_WrongNumArgs -#define Tcl_WrongNumArgs \ - (tclStubsPtr->tcl_WrongNumArgs) /* 264 */ -#endif -#ifndef Tcl_DumpActiveMemory -#define Tcl_DumpActiveMemory \ - (tclStubsPtr->tcl_DumpActiveMemory) /* 265 */ -#endif -#ifndef Tcl_ValidateAllMemory -#define Tcl_ValidateAllMemory \ - (tclStubsPtr->tcl_ValidateAllMemory) /* 266 */ -#endif -#ifndef Tcl_AppendResultVA -#define Tcl_AppendResultVA \ - (tclStubsPtr->tcl_AppendResultVA) /* 267 */ -#endif -#ifndef Tcl_AppendStringsToObjVA -#define Tcl_AppendStringsToObjVA \ - (tclStubsPtr->tcl_AppendStringsToObjVA) /* 268 */ -#endif -#ifndef Tcl_HashStats -#define Tcl_HashStats \ - (tclStubsPtr->tcl_HashStats) /* 269 */ -#endif -#ifndef Tcl_ParseVar -#define Tcl_ParseVar \ - (tclStubsPtr->tcl_ParseVar) /* 270 */ -#endif -#ifndef Tcl_PkgPresent -#define Tcl_PkgPresent \ - (tclStubsPtr->tcl_PkgPresent) /* 271 */ -#endif -#ifndef Tcl_PkgPresentEx -#define Tcl_PkgPresentEx \ - (tclStubsPtr->tcl_PkgPresentEx) /* 272 */ -#endif -#ifndef Tcl_PkgProvide -#define Tcl_PkgProvide \ - (tclStubsPtr->tcl_PkgProvide) /* 273 */ -#endif -#ifndef Tcl_PkgRequire -#define Tcl_PkgRequire \ - (tclStubsPtr->tcl_PkgRequire) /* 274 */ -#endif -#ifndef Tcl_SetErrorCodeVA -#define Tcl_SetErrorCodeVA \ - (tclStubsPtr->tcl_SetErrorCodeVA) /* 275 */ -#endif -#ifndef Tcl_VarEvalVA -#define Tcl_VarEvalVA \ - (tclStubsPtr->tcl_VarEvalVA) /* 276 */ -#endif -#ifndef Tcl_WaitPid -#define Tcl_WaitPid \ - (tclStubsPtr->tcl_WaitPid) /* 277 */ -#endif -#ifndef Tcl_PanicVA -#define Tcl_PanicVA \ - (tclStubsPtr->tcl_PanicVA) /* 278 */ -#endif -#ifndef Tcl_GetVersion -#define Tcl_GetVersion \ - (tclStubsPtr->tcl_GetVersion) /* 279 */ -#endif -#ifndef Tcl_InitMemory -#define Tcl_InitMemory \ - (tclStubsPtr->tcl_InitMemory) /* 280 */ -#endif -#ifndef Tcl_StackChannel -#define Tcl_StackChannel \ - (tclStubsPtr->tcl_StackChannel) /* 281 */ -#endif -#ifndef Tcl_UnstackChannel -#define Tcl_UnstackChannel \ - (tclStubsPtr->tcl_UnstackChannel) /* 282 */ -#endif -#ifndef Tcl_GetStackedChannel -#define Tcl_GetStackedChannel \ - (tclStubsPtr->tcl_GetStackedChannel) /* 283 */ -#endif -#ifndef Tcl_SetMainLoop -#define Tcl_SetMainLoop \ - (tclStubsPtr->tcl_SetMainLoop) /* 284 */ -#endif -/* Slot 285 is reserved */ -#ifndef Tcl_AppendObjToObj -#define Tcl_AppendObjToObj \ - (tclStubsPtr->tcl_AppendObjToObj) /* 286 */ -#endif -#ifndef Tcl_CreateEncoding -#define Tcl_CreateEncoding \ - (tclStubsPtr->tcl_CreateEncoding) /* 287 */ -#endif -#ifndef Tcl_CreateThreadExitHandler -#define Tcl_CreateThreadExitHandler \ - (tclStubsPtr->tcl_CreateThreadExitHandler) /* 288 */ -#endif -#ifndef Tcl_DeleteThreadExitHandler -#define Tcl_DeleteThreadExitHandler \ - (tclStubsPtr->tcl_DeleteThreadExitHandler) /* 289 */ -#endif -#ifndef Tcl_DiscardResult -#define Tcl_DiscardResult \ - (tclStubsPtr->tcl_DiscardResult) /* 290 */ -#endif -#ifndef Tcl_EvalEx -#define Tcl_EvalEx \ - (tclStubsPtr->tcl_EvalEx) /* 291 */ -#endif -#ifndef Tcl_EvalObjv -#define Tcl_EvalObjv \ - (tclStubsPtr->tcl_EvalObjv) /* 292 */ -#endif -#ifndef Tcl_EvalObjEx -#define Tcl_EvalObjEx \ - (tclStubsPtr->tcl_EvalObjEx) /* 293 */ -#endif -#ifndef Tcl_ExitThread -#define Tcl_ExitThread \ - (tclStubsPtr->tcl_ExitThread) /* 294 */ -#endif -#ifndef Tcl_ExternalToUtf -#define Tcl_ExternalToUtf \ - (tclStubsPtr->tcl_ExternalToUtf) /* 295 */ -#endif -#ifndef Tcl_ExternalToUtfDString -#define Tcl_ExternalToUtfDString \ - (tclStubsPtr->tcl_ExternalToUtfDString) /* 296 */ -#endif -#ifndef Tcl_FinalizeThread -#define Tcl_FinalizeThread \ - (tclStubsPtr->tcl_FinalizeThread) /* 297 */ -#endif -#ifndef Tcl_FinalizeNotifier -#define Tcl_FinalizeNotifier \ - (tclStubsPtr->tcl_FinalizeNotifier) /* 298 */ -#endif -#ifndef Tcl_FreeEncoding -#define Tcl_FreeEncoding \ - (tclStubsPtr->tcl_FreeEncoding) /* 299 */ -#endif -#ifndef Tcl_GetCurrentThread -#define Tcl_GetCurrentThread \ - (tclStubsPtr->tcl_GetCurrentThread) /* 300 */ -#endif -#ifndef Tcl_GetEncoding -#define Tcl_GetEncoding \ - (tclStubsPtr->tcl_GetEncoding) /* 301 */ -#endif -#ifndef Tcl_GetEncodingName -#define Tcl_GetEncodingName \ - (tclStubsPtr->tcl_GetEncodingName) /* 302 */ -#endif -#ifndef Tcl_GetEncodingNames -#define Tcl_GetEncodingNames \ - (tclStubsPtr->tcl_GetEncodingNames) /* 303 */ -#endif -#ifndef Tcl_GetIndexFromObjStruct -#define Tcl_GetIndexFromObjStruct \ - (tclStubsPtr->tcl_GetIndexFromObjStruct) /* 304 */ -#endif -#ifndef Tcl_GetThreadData -#define Tcl_GetThreadData \ - (tclStubsPtr->tcl_GetThreadData) /* 305 */ -#endif -#ifndef Tcl_GetVar2Ex -#define Tcl_GetVar2Ex \ - (tclStubsPtr->tcl_GetVar2Ex) /* 306 */ -#endif -#ifndef Tcl_InitNotifier -#define Tcl_InitNotifier \ - (tclStubsPtr->tcl_InitNotifier) /* 307 */ -#endif -#ifndef Tcl_MutexLock -#define Tcl_MutexLock \ - (tclStubsPtr->tcl_MutexLock) /* 308 */ -#endif -#ifndef Tcl_MutexUnlock -#define Tcl_MutexUnlock \ - (tclStubsPtr->tcl_MutexUnlock) /* 309 */ -#endif -#ifndef Tcl_ConditionNotify -#define Tcl_ConditionNotify \ - (tclStubsPtr->tcl_ConditionNotify) /* 310 */ -#endif -#ifndef Tcl_ConditionWait -#define Tcl_ConditionWait \ - (tclStubsPtr->tcl_ConditionWait) /* 311 */ -#endif -#ifndef Tcl_NumUtfChars -#define Tcl_NumUtfChars \ - (tclStubsPtr->tcl_NumUtfChars) /* 312 */ -#endif -#ifndef Tcl_ReadChars -#define Tcl_ReadChars \ - (tclStubsPtr->tcl_ReadChars) /* 313 */ -#endif -#ifndef Tcl_RestoreResult -#define Tcl_RestoreResult \ - (tclStubsPtr->tcl_RestoreResult) /* 314 */ -#endif -#ifndef Tcl_SaveResult -#define Tcl_SaveResult \ - (tclStubsPtr->tcl_SaveResult) /* 315 */ -#endif -#ifndef Tcl_SetSystemEncoding -#define Tcl_SetSystemEncoding \ - (tclStubsPtr->tcl_SetSystemEncoding) /* 316 */ -#endif -#ifndef Tcl_SetVar2Ex -#define Tcl_SetVar2Ex \ - (tclStubsPtr->tcl_SetVar2Ex) /* 317 */ -#endif -#ifndef Tcl_ThreadAlert -#define Tcl_ThreadAlert \ - (tclStubsPtr->tcl_ThreadAlert) /* 318 */ -#endif -#ifndef Tcl_ThreadQueueEvent -#define Tcl_ThreadQueueEvent \ - (tclStubsPtr->tcl_ThreadQueueEvent) /* 319 */ -#endif -#ifndef Tcl_UniCharAtIndex -#define Tcl_UniCharAtIndex \ - (tclStubsPtr->tcl_UniCharAtIndex) /* 320 */ -#endif -#ifndef Tcl_UniCharToLower -#define Tcl_UniCharToLower \ - (tclStubsPtr->tcl_UniCharToLower) /* 321 */ -#endif -#ifndef Tcl_UniCharToTitle -#define Tcl_UniCharToTitle \ - (tclStubsPtr->tcl_UniCharToTitle) /* 322 */ -#endif -#ifndef Tcl_UniCharToUpper -#define Tcl_UniCharToUpper \ - (tclStubsPtr->tcl_UniCharToUpper) /* 323 */ -#endif -#ifndef Tcl_UniCharToUtf -#define Tcl_UniCharToUtf \ - (tclStubsPtr->tcl_UniCharToUtf) /* 324 */ -#endif -#ifndef Tcl_UtfAtIndex -#define Tcl_UtfAtIndex \ - (tclStubsPtr->tcl_UtfAtIndex) /* 325 */ -#endif -#ifndef Tcl_UtfCharComplete -#define Tcl_UtfCharComplete \ - (tclStubsPtr->tcl_UtfCharComplete) /* 326 */ -#endif -#ifndef Tcl_UtfBackslash -#define Tcl_UtfBackslash \ - (tclStubsPtr->tcl_UtfBackslash) /* 327 */ -#endif -#ifndef Tcl_UtfFindFirst -#define Tcl_UtfFindFirst \ - (tclStubsPtr->tcl_UtfFindFirst) /* 328 */ -#endif -#ifndef Tcl_UtfFindLast -#define Tcl_UtfFindLast \ - (tclStubsPtr->tcl_UtfFindLast) /* 329 */ -#endif -#ifndef Tcl_UtfNext -#define Tcl_UtfNext \ - (tclStubsPtr->tcl_UtfNext) /* 330 */ -#endif -#ifndef Tcl_UtfPrev -#define Tcl_UtfPrev \ - (tclStubsPtr->tcl_UtfPrev) /* 331 */ -#endif -#ifndef Tcl_UtfToExternal -#define Tcl_UtfToExternal \ - (tclStubsPtr->tcl_UtfToExternal) /* 332 */ -#endif -#ifndef Tcl_UtfToExternalDString -#define Tcl_UtfToExternalDString \ - (tclStubsPtr->tcl_UtfToExternalDString) /* 333 */ -#endif -#ifndef Tcl_UtfToLower -#define Tcl_UtfToLower \ - (tclStubsPtr->tcl_UtfToLower) /* 334 */ -#endif -#ifndef Tcl_UtfToTitle -#define Tcl_UtfToTitle \ - (tclStubsPtr->tcl_UtfToTitle) /* 335 */ -#endif -#ifndef Tcl_UtfToUniChar -#define Tcl_UtfToUniChar \ - (tclStubsPtr->tcl_UtfToUniChar) /* 336 */ -#endif -#ifndef Tcl_UtfToUpper -#define Tcl_UtfToUpper \ - (tclStubsPtr->tcl_UtfToUpper) /* 337 */ -#endif -#ifndef Tcl_WriteChars -#define Tcl_WriteChars \ - (tclStubsPtr->tcl_WriteChars) /* 338 */ -#endif -#ifndef Tcl_WriteObj -#define Tcl_WriteObj \ - (tclStubsPtr->tcl_WriteObj) /* 339 */ -#endif -#ifndef Tcl_GetString -#define Tcl_GetString \ - (tclStubsPtr->tcl_GetString) /* 340 */ -#endif -#ifndef Tcl_GetDefaultEncodingDir -#define Tcl_GetDefaultEncodingDir \ - (tclStubsPtr->tcl_GetDefaultEncodingDir) /* 341 */ -#endif -#ifndef Tcl_SetDefaultEncodingDir -#define Tcl_SetDefaultEncodingDir \ - (tclStubsPtr->tcl_SetDefaultEncodingDir) /* 342 */ -#endif -#ifndef Tcl_AlertNotifier -#define Tcl_AlertNotifier \ - (tclStubsPtr->tcl_AlertNotifier) /* 343 */ -#endif -#ifndef Tcl_ServiceModeHook -#define Tcl_ServiceModeHook \ - (tclStubsPtr->tcl_ServiceModeHook) /* 344 */ -#endif -#ifndef Tcl_UniCharIsAlnum -#define Tcl_UniCharIsAlnum \ - (tclStubsPtr->tcl_UniCharIsAlnum) /* 345 */ -#endif -#ifndef Tcl_UniCharIsAlpha -#define Tcl_UniCharIsAlpha \ - (tclStubsPtr->tcl_UniCharIsAlpha) /* 346 */ -#endif -#ifndef Tcl_UniCharIsDigit -#define Tcl_UniCharIsDigit \ - (tclStubsPtr->tcl_UniCharIsDigit) /* 347 */ -#endif -#ifndef Tcl_UniCharIsLower -#define Tcl_UniCharIsLower \ - (tclStubsPtr->tcl_UniCharIsLower) /* 348 */ -#endif -#ifndef Tcl_UniCharIsSpace -#define Tcl_UniCharIsSpace \ - (tclStubsPtr->tcl_UniCharIsSpace) /* 349 */ -#endif -#ifndef Tcl_UniCharIsUpper -#define Tcl_UniCharIsUpper \ - (tclStubsPtr->tcl_UniCharIsUpper) /* 350 */ -#endif -#ifndef Tcl_UniCharIsWordChar -#define Tcl_UniCharIsWordChar \ - (tclStubsPtr->tcl_UniCharIsWordChar) /* 351 */ -#endif -#ifndef Tcl_UniCharLen -#define Tcl_UniCharLen \ - (tclStubsPtr->tcl_UniCharLen) /* 352 */ -#endif -#ifndef Tcl_UniCharNcmp -#define Tcl_UniCharNcmp \ - (tclStubsPtr->tcl_UniCharNcmp) /* 353 */ -#endif -#ifndef Tcl_UniCharToUtfDString -#define Tcl_UniCharToUtfDString \ - (tclStubsPtr->tcl_UniCharToUtfDString) /* 354 */ -#endif -#ifndef Tcl_UtfToUniCharDString -#define Tcl_UtfToUniCharDString \ - (tclStubsPtr->tcl_UtfToUniCharDString) /* 355 */ -#endif -#ifndef Tcl_GetRegExpFromObj -#define Tcl_GetRegExpFromObj \ - (tclStubsPtr->tcl_GetRegExpFromObj) /* 356 */ -#endif -#ifndef Tcl_EvalTokens -#define Tcl_EvalTokens \ - (tclStubsPtr->tcl_EvalTokens) /* 357 */ -#endif -#ifndef Tcl_FreeParse -#define Tcl_FreeParse \ - (tclStubsPtr->tcl_FreeParse) /* 358 */ -#endif -#ifndef Tcl_LogCommandInfo -#define Tcl_LogCommandInfo \ - (tclStubsPtr->tcl_LogCommandInfo) /* 359 */ -#endif -#ifndef Tcl_ParseBraces -#define Tcl_ParseBraces \ - (tclStubsPtr->tcl_ParseBraces) /* 360 */ -#endif -#ifndef Tcl_ParseCommand -#define Tcl_ParseCommand \ - (tclStubsPtr->tcl_ParseCommand) /* 361 */ -#endif -#ifndef Tcl_ParseExpr -#define Tcl_ParseExpr \ - (tclStubsPtr->tcl_ParseExpr) /* 362 */ -#endif -#ifndef Tcl_ParseQuotedString -#define Tcl_ParseQuotedString \ - (tclStubsPtr->tcl_ParseQuotedString) /* 363 */ -#endif -#ifndef Tcl_ParseVarName -#define Tcl_ParseVarName \ - (tclStubsPtr->tcl_ParseVarName) /* 364 */ -#endif -#ifndef Tcl_GetCwd -#define Tcl_GetCwd \ - (tclStubsPtr->tcl_GetCwd) /* 365 */ -#endif -#ifndef Tcl_Chdir -#define Tcl_Chdir \ - (tclStubsPtr->tcl_Chdir) /* 366 */ -#endif -#ifndef Tcl_Access -#define Tcl_Access \ - (tclStubsPtr->tcl_Access) /* 367 */ -#endif -#ifndef Tcl_Stat -#define Tcl_Stat \ - (tclStubsPtr->tcl_Stat) /* 368 */ -#endif -#ifndef Tcl_UtfNcmp -#define Tcl_UtfNcmp \ - (tclStubsPtr->tcl_UtfNcmp) /* 369 */ -#endif -#ifndef Tcl_UtfNcasecmp -#define Tcl_UtfNcasecmp \ - (tclStubsPtr->tcl_UtfNcasecmp) /* 370 */ -#endif -#ifndef Tcl_StringCaseMatch -#define Tcl_StringCaseMatch \ - (tclStubsPtr->tcl_StringCaseMatch) /* 371 */ -#endif -#ifndef Tcl_UniCharIsControl -#define Tcl_UniCharIsControl \ - (tclStubsPtr->tcl_UniCharIsControl) /* 372 */ -#endif -#ifndef Tcl_UniCharIsGraph -#define Tcl_UniCharIsGraph \ - (tclStubsPtr->tcl_UniCharIsGraph) /* 373 */ -#endif -#ifndef Tcl_UniCharIsPrint -#define Tcl_UniCharIsPrint \ - (tclStubsPtr->tcl_UniCharIsPrint) /* 374 */ -#endif -#ifndef Tcl_UniCharIsPunct -#define Tcl_UniCharIsPunct \ - (tclStubsPtr->tcl_UniCharIsPunct) /* 375 */ -#endif -#ifndef Tcl_RegExpExecObj -#define Tcl_RegExpExecObj \ - (tclStubsPtr->tcl_RegExpExecObj) /* 376 */ -#endif -#ifndef Tcl_RegExpGetInfo -#define Tcl_RegExpGetInfo \ - (tclStubsPtr->tcl_RegExpGetInfo) /* 377 */ -#endif -#ifndef Tcl_NewUnicodeObj -#define Tcl_NewUnicodeObj \ - (tclStubsPtr->tcl_NewUnicodeObj) /* 378 */ -#endif -#ifndef Tcl_SetUnicodeObj -#define Tcl_SetUnicodeObj \ - (tclStubsPtr->tcl_SetUnicodeObj) /* 379 */ -#endif -#ifndef Tcl_GetCharLength -#define Tcl_GetCharLength \ - (tclStubsPtr->tcl_GetCharLength) /* 380 */ -#endif -#ifndef Tcl_GetUniChar -#define Tcl_GetUniChar \ - (tclStubsPtr->tcl_GetUniChar) /* 381 */ -#endif -#ifndef Tcl_GetUnicode -#define Tcl_GetUnicode \ - (tclStubsPtr->tcl_GetUnicode) /* 382 */ -#endif -#ifndef Tcl_GetRange -#define Tcl_GetRange \ - (tclStubsPtr->tcl_GetRange) /* 383 */ -#endif -#ifndef Tcl_AppendUnicodeToObj -#define Tcl_AppendUnicodeToObj \ - (tclStubsPtr->tcl_AppendUnicodeToObj) /* 384 */ -#endif -#ifndef Tcl_RegExpMatchObj -#define Tcl_RegExpMatchObj \ - (tclStubsPtr->tcl_RegExpMatchObj) /* 385 */ -#endif -#ifndef Tcl_SetNotifier -#define Tcl_SetNotifier \ - (tclStubsPtr->tcl_SetNotifier) /* 386 */ -#endif -#ifndef Tcl_GetAllocMutex -#define Tcl_GetAllocMutex \ - (tclStubsPtr->tcl_GetAllocMutex) /* 387 */ -#endif -#ifndef Tcl_GetChannelNames -#define Tcl_GetChannelNames \ - (tclStubsPtr->tcl_GetChannelNames) /* 388 */ -#endif -#ifndef Tcl_GetChannelNamesEx -#define Tcl_GetChannelNamesEx \ - (tclStubsPtr->tcl_GetChannelNamesEx) /* 389 */ -#endif -#ifndef Tcl_ProcObjCmd -#define Tcl_ProcObjCmd \ - (tclStubsPtr->tcl_ProcObjCmd) /* 390 */ -#endif -#ifndef Tcl_ConditionFinalize -#define Tcl_ConditionFinalize \ - (tclStubsPtr->tcl_ConditionFinalize) /* 391 */ -#endif -#ifndef Tcl_MutexFinalize -#define Tcl_MutexFinalize \ - (tclStubsPtr->tcl_MutexFinalize) /* 392 */ -#endif -#ifndef Tcl_CreateThread -#define Tcl_CreateThread \ - (tclStubsPtr->tcl_CreateThread) /* 393 */ -#endif -#ifndef Tcl_ReadRaw -#define Tcl_ReadRaw \ - (tclStubsPtr->tcl_ReadRaw) /* 394 */ -#endif -#ifndef Tcl_WriteRaw -#define Tcl_WriteRaw \ - (tclStubsPtr->tcl_WriteRaw) /* 395 */ -#endif -#ifndef Tcl_GetTopChannel -#define Tcl_GetTopChannel \ - (tclStubsPtr->tcl_GetTopChannel) /* 396 */ -#endif -#ifndef Tcl_ChannelBuffered -#define Tcl_ChannelBuffered \ - (tclStubsPtr->tcl_ChannelBuffered) /* 397 */ -#endif -#ifndef Tcl_ChannelName -#define Tcl_ChannelName \ - (tclStubsPtr->tcl_ChannelName) /* 398 */ -#endif -#ifndef Tcl_ChannelVersion -#define Tcl_ChannelVersion \ - (tclStubsPtr->tcl_ChannelVersion) /* 399 */ -#endif -#ifndef Tcl_ChannelBlockModeProc -#define Tcl_ChannelBlockModeProc \ - (tclStubsPtr->tcl_ChannelBlockModeProc) /* 400 */ -#endif -#ifndef Tcl_ChannelCloseProc -#define Tcl_ChannelCloseProc \ - (tclStubsPtr->tcl_ChannelCloseProc) /* 401 */ -#endif -#ifndef Tcl_ChannelClose2Proc -#define Tcl_ChannelClose2Proc \ - (tclStubsPtr->tcl_ChannelClose2Proc) /* 402 */ -#endif -#ifndef Tcl_ChannelInputProc -#define Tcl_ChannelInputProc \ - (tclStubsPtr->tcl_ChannelInputProc) /* 403 */ -#endif -#ifndef Tcl_ChannelOutputProc -#define Tcl_ChannelOutputProc \ - (tclStubsPtr->tcl_ChannelOutputProc) /* 404 */ -#endif -#ifndef Tcl_ChannelSeekProc -#define Tcl_ChannelSeekProc \ - (tclStubsPtr->tcl_ChannelSeekProc) /* 405 */ -#endif -#ifndef Tcl_ChannelSetOptionProc -#define Tcl_ChannelSetOptionProc \ - (tclStubsPtr->tcl_ChannelSetOptionProc) /* 406 */ -#endif -#ifndef Tcl_ChannelGetOptionProc -#define Tcl_ChannelGetOptionProc \ - (tclStubsPtr->tcl_ChannelGetOptionProc) /* 407 */ -#endif -#ifndef Tcl_ChannelWatchProc -#define Tcl_ChannelWatchProc \ - (tclStubsPtr->tcl_ChannelWatchProc) /* 408 */ -#endif -#ifndef Tcl_ChannelGetHandleProc -#define Tcl_ChannelGetHandleProc \ - (tclStubsPtr->tcl_ChannelGetHandleProc) /* 409 */ -#endif -#ifndef Tcl_ChannelFlushProc -#define Tcl_ChannelFlushProc \ - (tclStubsPtr->tcl_ChannelFlushProc) /* 410 */ -#endif -#ifndef Tcl_ChannelHandlerProc -#define Tcl_ChannelHandlerProc \ - (tclStubsPtr->tcl_ChannelHandlerProc) /* 411 */ -#endif -#ifndef Tcl_JoinThread -#define Tcl_JoinThread \ - (tclStubsPtr->tcl_JoinThread) /* 412 */ -#endif -#ifndef Tcl_IsChannelShared -#define Tcl_IsChannelShared \ - (tclStubsPtr->tcl_IsChannelShared) /* 413 */ -#endif -#ifndef Tcl_IsChannelRegistered -#define Tcl_IsChannelRegistered \ - (tclStubsPtr->tcl_IsChannelRegistered) /* 414 */ -#endif -#ifndef Tcl_CutChannel -#define Tcl_CutChannel \ - (tclStubsPtr->tcl_CutChannel) /* 415 */ -#endif -#ifndef Tcl_SpliceChannel -#define Tcl_SpliceChannel \ - (tclStubsPtr->tcl_SpliceChannel) /* 416 */ -#endif -#ifndef Tcl_ClearChannelHandlers -#define Tcl_ClearChannelHandlers \ - (tclStubsPtr->tcl_ClearChannelHandlers) /* 417 */ -#endif -#ifndef Tcl_IsChannelExisting -#define Tcl_IsChannelExisting \ - (tclStubsPtr->tcl_IsChannelExisting) /* 418 */ -#endif -#ifndef Tcl_UniCharNcasecmp -#define Tcl_UniCharNcasecmp \ - (tclStubsPtr->tcl_UniCharNcasecmp) /* 419 */ -#endif -#ifndef Tcl_UniCharCaseMatch -#define Tcl_UniCharCaseMatch \ - (tclStubsPtr->tcl_UniCharCaseMatch) /* 420 */ -#endif -#ifndef Tcl_FindHashEntry -#define Tcl_FindHashEntry \ - (tclStubsPtr->tcl_FindHashEntry) /* 421 */ -#endif -#ifndef Tcl_CreateHashEntry -#define Tcl_CreateHashEntry \ - (tclStubsPtr->tcl_CreateHashEntry) /* 422 */ -#endif -#ifndef Tcl_InitCustomHashTable -#define Tcl_InitCustomHashTable \ - (tclStubsPtr->tcl_InitCustomHashTable) /* 423 */ -#endif -#ifndef Tcl_InitObjHashTable -#define Tcl_InitObjHashTable \ - (tclStubsPtr->tcl_InitObjHashTable) /* 424 */ -#endif -#ifndef Tcl_CommandTraceInfo -#define Tcl_CommandTraceInfo \ - (tclStubsPtr->tcl_CommandTraceInfo) /* 425 */ -#endif -#ifndef Tcl_TraceCommand -#define Tcl_TraceCommand \ - (tclStubsPtr->tcl_TraceCommand) /* 426 */ -#endif -#ifndef Tcl_UntraceCommand -#define Tcl_UntraceCommand \ - (tclStubsPtr->tcl_UntraceCommand) /* 427 */ -#endif -#ifndef Tcl_AttemptAlloc -#define Tcl_AttemptAlloc \ - (tclStubsPtr->tcl_AttemptAlloc) /* 428 */ -#endif -#ifndef Tcl_AttemptDbCkalloc -#define Tcl_AttemptDbCkalloc \ - (tclStubsPtr->tcl_AttemptDbCkalloc) /* 429 */ -#endif -#ifndef Tcl_AttemptRealloc -#define Tcl_AttemptRealloc \ - (tclStubsPtr->tcl_AttemptRealloc) /* 430 */ -#endif -#ifndef Tcl_AttemptDbCkrealloc -#define Tcl_AttemptDbCkrealloc \ - (tclStubsPtr->tcl_AttemptDbCkrealloc) /* 431 */ -#endif -#ifndef Tcl_AttemptSetObjLength -#define Tcl_AttemptSetObjLength \ - (tclStubsPtr->tcl_AttemptSetObjLength) /* 432 */ -#endif -#ifndef Tcl_GetChannelThread -#define Tcl_GetChannelThread \ - (tclStubsPtr->tcl_GetChannelThread) /* 433 */ -#endif -#ifndef Tcl_GetUnicodeFromObj -#define Tcl_GetUnicodeFromObj \ - (tclStubsPtr->tcl_GetUnicodeFromObj) /* 434 */ -#endif -#ifndef Tcl_GetMathFuncInfo -#define Tcl_GetMathFuncInfo \ - (tclStubsPtr->tcl_GetMathFuncInfo) /* 435 */ -#endif -#ifndef Tcl_ListMathFuncs -#define Tcl_ListMathFuncs \ - (tclStubsPtr->tcl_ListMathFuncs) /* 436 */ -#endif -#ifndef Tcl_SubstObj -#define Tcl_SubstObj \ - (tclStubsPtr->tcl_SubstObj) /* 437 */ -#endif -#ifndef Tcl_DetachChannel -#define Tcl_DetachChannel \ - (tclStubsPtr->tcl_DetachChannel) /* 438 */ -#endif -#ifndef Tcl_IsStandardChannel -#define Tcl_IsStandardChannel \ - (tclStubsPtr->tcl_IsStandardChannel) /* 439 */ -#endif -#ifndef Tcl_FSCopyFile -#define Tcl_FSCopyFile \ - (tclStubsPtr->tcl_FSCopyFile) /* 440 */ -#endif -#ifndef Tcl_FSCopyDirectory -#define Tcl_FSCopyDirectory \ - (tclStubsPtr->tcl_FSCopyDirectory) /* 441 */ -#endif -#ifndef Tcl_FSCreateDirectory -#define Tcl_FSCreateDirectory \ - (tclStubsPtr->tcl_FSCreateDirectory) /* 442 */ -#endif -#ifndef Tcl_FSDeleteFile -#define Tcl_FSDeleteFile \ - (tclStubsPtr->tcl_FSDeleteFile) /* 443 */ -#endif -#ifndef Tcl_FSLoadFile -#define Tcl_FSLoadFile \ - (tclStubsPtr->tcl_FSLoadFile) /* 444 */ -#endif -#ifndef Tcl_FSMatchInDirectory -#define Tcl_FSMatchInDirectory \ - (tclStubsPtr->tcl_FSMatchInDirectory) /* 445 */ -#endif -#ifndef Tcl_FSLink -#define Tcl_FSLink \ - (tclStubsPtr->tcl_FSLink) /* 446 */ -#endif -#ifndef Tcl_FSRemoveDirectory -#define Tcl_FSRemoveDirectory \ - (tclStubsPtr->tcl_FSRemoveDirectory) /* 447 */ -#endif -#ifndef Tcl_FSRenameFile -#define Tcl_FSRenameFile \ - (tclStubsPtr->tcl_FSRenameFile) /* 448 */ -#endif -#ifndef Tcl_FSLstat -#define Tcl_FSLstat \ - (tclStubsPtr->tcl_FSLstat) /* 449 */ -#endif -#ifndef Tcl_FSUtime -#define Tcl_FSUtime \ - (tclStubsPtr->tcl_FSUtime) /* 450 */ -#endif -#ifndef Tcl_FSFileAttrsGet -#define Tcl_FSFileAttrsGet \ - (tclStubsPtr->tcl_FSFileAttrsGet) /* 451 */ -#endif -#ifndef Tcl_FSFileAttrsSet -#define Tcl_FSFileAttrsSet \ - (tclStubsPtr->tcl_FSFileAttrsSet) /* 452 */ -#endif -#ifndef Tcl_FSFileAttrStrings -#define Tcl_FSFileAttrStrings \ - (tclStubsPtr->tcl_FSFileAttrStrings) /* 453 */ -#endif -#ifndef Tcl_FSStat -#define Tcl_FSStat \ - (tclStubsPtr->tcl_FSStat) /* 454 */ -#endif -#ifndef Tcl_FSAccess -#define Tcl_FSAccess \ - (tclStubsPtr->tcl_FSAccess) /* 455 */ -#endif -#ifndef Tcl_FSOpenFileChannel -#define Tcl_FSOpenFileChannel \ - (tclStubsPtr->tcl_FSOpenFileChannel) /* 456 */ -#endif -#ifndef Tcl_FSGetCwd -#define Tcl_FSGetCwd \ - (tclStubsPtr->tcl_FSGetCwd) /* 457 */ -#endif -#ifndef Tcl_FSChdir -#define Tcl_FSChdir \ - (tclStubsPtr->tcl_FSChdir) /* 458 */ -#endif -#ifndef Tcl_FSConvertToPathType -#define Tcl_FSConvertToPathType \ - (tclStubsPtr->tcl_FSConvertToPathType) /* 459 */ -#endif -#ifndef Tcl_FSJoinPath -#define Tcl_FSJoinPath \ - (tclStubsPtr->tcl_FSJoinPath) /* 460 */ -#endif -#ifndef Tcl_FSSplitPath -#define Tcl_FSSplitPath \ - (tclStubsPtr->tcl_FSSplitPath) /* 461 */ -#endif -#ifndef Tcl_FSEqualPaths -#define Tcl_FSEqualPaths \ - (tclStubsPtr->tcl_FSEqualPaths) /* 462 */ -#endif -#ifndef Tcl_FSGetNormalizedPath -#define Tcl_FSGetNormalizedPath \ - (tclStubsPtr->tcl_FSGetNormalizedPath) /* 463 */ -#endif -#ifndef Tcl_FSJoinToPath -#define Tcl_FSJoinToPath \ - (tclStubsPtr->tcl_FSJoinToPath) /* 464 */ -#endif -#ifndef Tcl_FSGetInternalRep -#define Tcl_FSGetInternalRep \ - (tclStubsPtr->tcl_FSGetInternalRep) /* 465 */ -#endif -#ifndef Tcl_FSGetTranslatedPath -#define Tcl_FSGetTranslatedPath \ - (tclStubsPtr->tcl_FSGetTranslatedPath) /* 466 */ -#endif -#ifndef Tcl_FSEvalFile -#define Tcl_FSEvalFile \ - (tclStubsPtr->tcl_FSEvalFile) /* 467 */ -#endif -#ifndef Tcl_FSNewNativePath -#define Tcl_FSNewNativePath \ - (tclStubsPtr->tcl_FSNewNativePath) /* 468 */ -#endif -#ifndef Tcl_FSGetNativePath -#define Tcl_FSGetNativePath \ - (tclStubsPtr->tcl_FSGetNativePath) /* 469 */ -#endif -#ifndef Tcl_FSFileSystemInfo -#define Tcl_FSFileSystemInfo \ - (tclStubsPtr->tcl_FSFileSystemInfo) /* 470 */ -#endif -#ifndef Tcl_FSPathSeparator -#define Tcl_FSPathSeparator \ - (tclStubsPtr->tcl_FSPathSeparator) /* 471 */ -#endif -#ifndef Tcl_FSListVolumes -#define Tcl_FSListVolumes \ - (tclStubsPtr->tcl_FSListVolumes) /* 472 */ -#endif -#ifndef Tcl_FSRegister -#define Tcl_FSRegister \ - (tclStubsPtr->tcl_FSRegister) /* 473 */ -#endif -#ifndef Tcl_FSUnregister -#define Tcl_FSUnregister \ - (tclStubsPtr->tcl_FSUnregister) /* 474 */ -#endif -#ifndef Tcl_FSData -#define Tcl_FSData \ - (tclStubsPtr->tcl_FSData) /* 475 */ -#endif -#ifndef Tcl_FSGetTranslatedStringPath -#define Tcl_FSGetTranslatedStringPath \ - (tclStubsPtr->tcl_FSGetTranslatedStringPath) /* 476 */ -#endif -#ifndef Tcl_FSGetFileSystemForPath -#define Tcl_FSGetFileSystemForPath \ - (tclStubsPtr->tcl_FSGetFileSystemForPath) /* 477 */ -#endif -#ifndef Tcl_FSGetPathType -#define Tcl_FSGetPathType \ - (tclStubsPtr->tcl_FSGetPathType) /* 478 */ -#endif -#ifndef Tcl_OutputBuffered -#define Tcl_OutputBuffered \ - (tclStubsPtr->tcl_OutputBuffered) /* 479 */ -#endif -#ifndef Tcl_FSMountsChanged -#define Tcl_FSMountsChanged \ - (tclStubsPtr->tcl_FSMountsChanged) /* 480 */ -#endif -#ifndef Tcl_EvalTokensStandard -#define Tcl_EvalTokensStandard \ - (tclStubsPtr->tcl_EvalTokensStandard) /* 481 */ -#endif -#ifndef Tcl_GetTime -#define Tcl_GetTime \ - (tclStubsPtr->tcl_GetTime) /* 482 */ -#endif -#ifndef Tcl_CreateObjTrace -#define Tcl_CreateObjTrace \ - (tclStubsPtr->tcl_CreateObjTrace) /* 483 */ -#endif -#ifndef Tcl_GetCommandInfoFromToken -#define Tcl_GetCommandInfoFromToken \ - (tclStubsPtr->tcl_GetCommandInfoFromToken) /* 484 */ -#endif -#ifndef Tcl_SetCommandInfoFromToken -#define Tcl_SetCommandInfoFromToken \ - (tclStubsPtr->tcl_SetCommandInfoFromToken) /* 485 */ -#endif -#ifndef Tcl_DbNewWideIntObj -#define Tcl_DbNewWideIntObj \ - (tclStubsPtr->tcl_DbNewWideIntObj) /* 486 */ -#endif -#ifndef Tcl_GetWideIntFromObj -#define Tcl_GetWideIntFromObj \ - (tclStubsPtr->tcl_GetWideIntFromObj) /* 487 */ -#endif -#ifndef Tcl_NewWideIntObj -#define Tcl_NewWideIntObj \ - (tclStubsPtr->tcl_NewWideIntObj) /* 488 */ -#endif -#ifndef Tcl_SetWideIntObj -#define Tcl_SetWideIntObj \ - (tclStubsPtr->tcl_SetWideIntObj) /* 489 */ -#endif -#ifndef Tcl_AllocStatBuf -#define Tcl_AllocStatBuf \ - (tclStubsPtr->tcl_AllocStatBuf) /* 490 */ -#endif -#ifndef Tcl_Seek -#define Tcl_Seek \ - (tclStubsPtr->tcl_Seek) /* 491 */ -#endif -#ifndef Tcl_Tell -#define Tcl_Tell \ - (tclStubsPtr->tcl_Tell) /* 492 */ -#endif -#ifndef Tcl_ChannelWideSeekProc -#define Tcl_ChannelWideSeekProc \ - (tclStubsPtr->tcl_ChannelWideSeekProc) /* 493 */ -#endif - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLDECLS */ - +/* + * tclDecls.h -- + * + * Declarations of functions in the platform independent public Tcl API. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclDecls.h,v 1.93.2.3 2004/05/17 16:25:12 dgp Exp $ + */ + +#ifndef _TCLDECLS +#define _TCLDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tcl.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +/* 0 */ +EXTERN int Tcl_PkgProvideEx _ANSI_ARGS_((Tcl_Interp* interp, + CONST char* name, CONST char* version, + ClientData clientData)); +/* 1 */ +EXTERN CONST84_RETURN char * Tcl_PkgRequireEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + CONST char * version, int exact, + ClientData * clientDataPtr)); +/* 2 */ +EXTERN void Tcl_Panic _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); +/* 3 */ +EXTERN char * Tcl_Alloc _ANSI_ARGS_((unsigned int size)); +/* 4 */ +EXTERN void Tcl_Free _ANSI_ARGS_((char * ptr)); +/* 5 */ +EXTERN char * Tcl_Realloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* 6 */ +EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, + CONST char * file, int line)); +/* 7 */ +EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char * ptr, + CONST char * file, int line)); +/* 8 */ +EXTERN char * Tcl_DbCkrealloc _ANSI_ARGS_((char * ptr, + unsigned int size, CONST char * file, + int line)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 9 */ +EXTERN void Tcl_CreateFileHandler _ANSI_ARGS_((int fd, int mask, + Tcl_FileProc * proc, ClientData clientData)); +#endif /* UNIX */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 10 */ +EXTERN void Tcl_DeleteFileHandler _ANSI_ARGS_((int fd)); +#endif /* UNIX */ +/* 11 */ +EXTERN void Tcl_SetTimer _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 12 */ +EXTERN void Tcl_Sleep _ANSI_ARGS_((int ms)); +/* 13 */ +EXTERN int Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 14 */ +EXTERN int Tcl_AppendAllObjTypes _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr)); +/* 15 */ +EXTERN void Tcl_AppendStringsToObj _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); +/* 16 */ +EXTERN void Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj* objPtr, + CONST char* bytes, int length)); +/* 17 */ +EXTERN Tcl_Obj * Tcl_ConcatObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST objv[])); +/* 18 */ +EXTERN int Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); +/* 19 */ +EXTERN void Tcl_DbDecrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 20 */ +EXTERN void Tcl_DbIncrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 21 */ +EXTERN int Tcl_DbIsShared _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 22 */ +EXTERN Tcl_Obj * Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue, + CONST char * file, int line)); +/* 23 */ +EXTERN Tcl_Obj * Tcl_DbNewByteArrayObj _ANSI_ARGS_(( + CONST unsigned char * bytes, int length, + CONST char * file, int line)); +/* 24 */ +EXTERN Tcl_Obj * Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue, + CONST char * file, int line)); +/* 25 */ +EXTERN Tcl_Obj * Tcl_DbNewListObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST * objv, CONST char * file, + int line)); +/* 26 */ +EXTERN Tcl_Obj * Tcl_DbNewLongObj _ANSI_ARGS_((long longValue, + CONST char * file, int line)); +/* 27 */ +EXTERN Tcl_Obj * Tcl_DbNewObj _ANSI_ARGS_((CONST char * file, + int line)); +/* 28 */ +EXTERN Tcl_Obj * Tcl_DbNewStringObj _ANSI_ARGS_((CONST char * bytes, + int length, CONST char * file, int line)); +/* 29 */ +EXTERN Tcl_Obj * Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 30 */ +EXTERN void TclFreeObj _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 31 */ +EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * boolPtr)); +/* 32 */ +EXTERN int Tcl_GetBooleanFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + int * boolPtr)); +/* 33 */ +EXTERN unsigned char * Tcl_GetByteArrayFromObj _ANSI_ARGS_(( + Tcl_Obj * objPtr, int * lengthPtr)); +/* 34 */ +EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, double * doublePtr)); +/* 35 */ +EXTERN int Tcl_GetDoubleFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + double * doublePtr)); +/* 36 */ +EXTERN int Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, CONST84 char ** tablePtr, + CONST char * msg, int flags, int * indexPtr)); +/* 37 */ +EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * intPtr)); +/* 38 */ +EXTERN int Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int * intPtr)); +/* 39 */ +EXTERN int Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, long * longPtr)); +/* 40 */ +EXTERN Tcl_ObjType * Tcl_GetObjType _ANSI_ARGS_((CONST char * typeName)); +/* 41 */ +EXTERN char * Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int * lengthPtr)); +/* 42 */ +EXTERN void Tcl_InvalidateStringRep _ANSI_ARGS_(( + Tcl_Obj * objPtr)); +/* 43 */ +EXTERN int Tcl_ListObjAppendList _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + Tcl_Obj * elemListPtr)); +/* 44 */ +EXTERN int Tcl_ListObjAppendElement _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + Tcl_Obj * objPtr)); +/* 45 */ +EXTERN int Tcl_ListObjGetElements _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + int * objcPtr, Tcl_Obj *** objvPtr)); +/* 46 */ +EXTERN int Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int index, + Tcl_Obj ** objPtrPtr)); +/* 47 */ +EXTERN int Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int * lengthPtr)); +/* 48 */ +EXTERN int Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int first, int count, + int objc, Tcl_Obj *CONST objv[])); +/* 49 */ +EXTERN Tcl_Obj * Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue)); +/* 50 */ +EXTERN Tcl_Obj * Tcl_NewByteArrayObj _ANSI_ARGS_(( + CONST unsigned char* bytes, int length)); +/* 51 */ +EXTERN Tcl_Obj * Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue)); +/* 52 */ +EXTERN Tcl_Obj * Tcl_NewIntObj _ANSI_ARGS_((int intValue)); +/* 53 */ +EXTERN Tcl_Obj * Tcl_NewListObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST objv[])); +/* 54 */ +EXTERN Tcl_Obj * Tcl_NewLongObj _ANSI_ARGS_((long longValue)); +/* 55 */ +EXTERN Tcl_Obj * Tcl_NewObj _ANSI_ARGS_((void)); +/* 56 */ +EXTERN Tcl_Obj * Tcl_NewStringObj _ANSI_ARGS_((CONST char * bytes, + int length)); +/* 57 */ +EXTERN void Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int boolValue)); +/* 58 */ +EXTERN unsigned char * Tcl_SetByteArrayLength _ANSI_ARGS_((Tcl_Obj * objPtr, + int length)); +/* 59 */ +EXTERN void Tcl_SetByteArrayObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST unsigned char * bytes, int length)); +/* 60 */ +EXTERN void Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj * objPtr, + double doubleValue)); +/* 61 */ +EXTERN void Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int intValue)); +/* 62 */ +EXTERN void Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int objc, Tcl_Obj *CONST objv[])); +/* 63 */ +EXTERN void Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj * objPtr, + long longValue)); +/* 64 */ +EXTERN void Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj * objPtr, + int length)); +/* 65 */ +EXTERN void Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj* objPtr, + CONST char* bytes, int length)); +/* 66 */ +EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * message)); +/* 67 */ +EXTERN void Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * message, int length)); +/* 68 */ +EXTERN void Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp * interp)); +/* 69 */ +EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 70 */ +EXTERN void Tcl_AppendResult _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 71 */ +EXTERN Tcl_AsyncHandler Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc * proc, + ClientData clientData)); +/* 72 */ +EXTERN void Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async)); +/* 73 */ +EXTERN int Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int code)); +/* 74 */ +EXTERN void Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async)); +/* 75 */ +EXTERN int Tcl_AsyncReady _ANSI_ARGS_((void)); +/* 76 */ +EXTERN void Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp * interp)); +/* 77 */ +EXTERN char Tcl_Backslash _ANSI_ARGS_((CONST char * src, + int * readPtr)); +/* 78 */ +EXTERN int Tcl_BadChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * optionName, + CONST char * optionList)); +/* 79 */ +EXTERN void Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 80 */ +EXTERN void Tcl_CancelIdleCall _ANSI_ARGS_(( + Tcl_IdleProc * idleProc, + ClientData clientData)); +/* 81 */ +EXTERN int Tcl_Close _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 82 */ +EXTERN int Tcl_CommandComplete _ANSI_ARGS_((CONST char * cmd)); +/* 83 */ +EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv)); +/* 84 */ +EXTERN int Tcl_ConvertElement _ANSI_ARGS_((CONST char * src, + char * dst, int flags)); +/* 85 */ +EXTERN int Tcl_ConvertCountedElement _ANSI_ARGS_(( + CONST char * src, int length, char * dst, + int flags)); +/* 86 */ +EXTERN int Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp * slave, + CONST char * slaveCmd, Tcl_Interp * target, + CONST char * targetCmd, int argc, + CONST84 char * CONST * argv)); +/* 87 */ +EXTERN int Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp * slave, + CONST char * slaveCmd, Tcl_Interp * target, + CONST char * targetCmd, int objc, + Tcl_Obj *CONST objv[])); +/* 88 */ +EXTERN Tcl_Channel Tcl_CreateChannel _ANSI_ARGS_(( + Tcl_ChannelType * typePtr, + CONST char * chanName, + ClientData instanceData, int mask)); +/* 89 */ +EXTERN void Tcl_CreateChannelHandler _ANSI_ARGS_(( + Tcl_Channel chan, int mask, + Tcl_ChannelProc * proc, + ClientData clientData)); +/* 90 */ +EXTERN void Tcl_CreateCloseHandler _ANSI_ARGS_((Tcl_Channel chan, + Tcl_CloseProc * proc, ClientData clientData)); +/* 91 */ +EXTERN Tcl_Command Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, Tcl_CmdProc * proc, + ClientData clientData, + Tcl_CmdDeleteProc * deleteProc)); +/* 92 */ +EXTERN void Tcl_CreateEventSource _ANSI_ARGS_(( + Tcl_EventSetupProc * setupProc, + Tcl_EventCheckProc * checkProc, + ClientData clientData)); +/* 93 */ +EXTERN void Tcl_CreateExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 94 */ +EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); +/* 95 */ +EXTERN void Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, int numArgs, + Tcl_ValueType * argTypes, + Tcl_MathProc * proc, ClientData clientData)); +/* 96 */ +EXTERN Tcl_Command Tcl_CreateObjCommand _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * cmdName, + Tcl_ObjCmdProc * proc, ClientData clientData, + Tcl_CmdDeleteProc * deleteProc)); +/* 97 */ +EXTERN Tcl_Interp * Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveName, int isSafe)); +/* 98 */ +EXTERN Tcl_TimerToken Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds, + Tcl_TimerProc * proc, ClientData clientData)); +/* 99 */ +EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp * interp, + int level, Tcl_CmdTraceProc * proc, + ClientData clientData)); +/* 100 */ +EXTERN void Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name)); +/* 101 */ +EXTERN void Tcl_DeleteChannelHandler _ANSI_ARGS_(( + Tcl_Channel chan, Tcl_ChannelProc * proc, + ClientData clientData)); +/* 102 */ +EXTERN void Tcl_DeleteCloseHandler _ANSI_ARGS_((Tcl_Channel chan, + Tcl_CloseProc * proc, ClientData clientData)); +/* 103 */ +EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName)); +/* 104 */ +EXTERN int Tcl_DeleteCommandFromToken _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command)); +/* 105 */ +EXTERN void Tcl_DeleteEvents _ANSI_ARGS_(( + Tcl_EventDeleteProc * proc, + ClientData clientData)); +/* 106 */ +EXTERN void Tcl_DeleteEventSource _ANSI_ARGS_(( + Tcl_EventSetupProc * setupProc, + Tcl_EventCheckProc * checkProc, + ClientData clientData)); +/* 107 */ +EXTERN void Tcl_DeleteExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 108 */ +EXTERN void Tcl_DeleteHashEntry _ANSI_ARGS_(( + Tcl_HashEntry * entryPtr)); +/* 109 */ +EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 110 */ +EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp * interp)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 111 */ +EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, + Tcl_Pid * pidPtr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 111 */ +EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, + Tcl_Pid * pidPtr)); +#endif /* __WIN32__ */ +/* 112 */ +EXTERN void Tcl_DeleteTimerHandler _ANSI_ARGS_(( + Tcl_TimerToken token)); +/* 113 */ +EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Trace trace)); +/* 114 */ +EXTERN void Tcl_DontCallWhenDeleted _ANSI_ARGS_(( + Tcl_Interp * interp, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 115 */ +EXTERN int Tcl_DoOneEvent _ANSI_ARGS_((int flags)); +/* 116 */ +EXTERN void Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc * proc, + ClientData clientData)); +/* 117 */ +EXTERN char * Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString * dsPtr, + CONST char * str, int length)); +/* 118 */ +EXTERN char * Tcl_DStringAppendElement _ANSI_ARGS_(( + Tcl_DString * dsPtr, CONST char * string)); +/* 119 */ +EXTERN void Tcl_DStringEndSublist _ANSI_ARGS_(( + Tcl_DString * dsPtr)); +/* 120 */ +EXTERN void Tcl_DStringFree _ANSI_ARGS_((Tcl_DString * dsPtr)); +/* 121 */ +EXTERN void Tcl_DStringGetResult _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_DString * dsPtr)); +/* 122 */ +EXTERN void Tcl_DStringInit _ANSI_ARGS_((Tcl_DString * dsPtr)); +/* 123 */ +EXTERN void Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * dsPtr)); +/* 124 */ +EXTERN void Tcl_DStringSetLength _ANSI_ARGS_(( + Tcl_DString * dsPtr, int length)); +/* 125 */ +EXTERN void Tcl_DStringStartSublist _ANSI_ARGS_(( + Tcl_DString * dsPtr)); +/* 126 */ +EXTERN int Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan)); +/* 127 */ +EXTERN CONST84_RETURN char * Tcl_ErrnoId _ANSI_ARGS_((void)); +/* 128 */ +EXTERN CONST84_RETURN char * Tcl_ErrnoMsg _ANSI_ARGS_((int err)); +/* 129 */ +EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 130 */ +EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * fileName)); +/* 131 */ +EXTERN int Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr)); +/* 132 */ +EXTERN void Tcl_EventuallyFree _ANSI_ARGS_(( + ClientData clientData, + Tcl_FreeProc * freeProc)); +/* 133 */ +EXTERN void Tcl_Exit _ANSI_ARGS_((int status)); +/* 134 */ +EXTERN int Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * hiddenCmdToken, + CONST char * cmdName)); +/* 135 */ +EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * ptr)); +/* 136 */ +EXTERN int Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int * ptr)); +/* 137 */ +EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, double * ptr)); +/* 138 */ +EXTERN int Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, double * ptr)); +/* 139 */ +EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, long * ptr)); +/* 140 */ +EXTERN int Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, long * ptr)); +/* 141 */ +EXTERN int Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); +/* 142 */ +EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 143 */ +EXTERN void Tcl_Finalize _ANSI_ARGS_((void)); +/* 144 */ +EXTERN void Tcl_FindExecutable _ANSI_ARGS_((CONST char * argv0)); +/* 145 */ +EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, + Tcl_HashSearch * searchPtr)); +/* 146 */ +EXTERN int Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan)); +/* 147 */ +EXTERN void Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp * interp)); +/* 148 */ +EXTERN int Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveCmd, + Tcl_Interp ** targetInterpPtr, + CONST84 char ** targetCmdPtr, int * argcPtr, + CONST84 char *** argvPtr)); +/* 149 */ +EXTERN int Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveCmd, + Tcl_Interp ** targetInterpPtr, + CONST84 char ** targetCmdPtr, int * objcPtr, + Tcl_Obj *** objv)); +/* 150 */ +EXTERN ClientData Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_InterpDeleteProc ** procPtr)); +/* 151 */ +EXTERN Tcl_Channel Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * chanName, int * modePtr)); +/* 152 */ +EXTERN int Tcl_GetChannelBufferSize _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 153 */ +EXTERN int Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan, + int direction, ClientData * handlePtr)); +/* 154 */ +EXTERN ClientData Tcl_GetChannelInstanceData _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 155 */ +EXTERN int Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan)); +/* 156 */ +EXTERN CONST84_RETURN char * Tcl_GetChannelName _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 157 */ +EXTERN int Tcl_GetChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan, + CONST char * optionName, Tcl_DString * dsPtr)); +/* 158 */ +EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan)); +/* 159 */ +EXTERN int Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, Tcl_CmdInfo * infoPtr)); +/* 160 */ +EXTERN CONST84_RETURN char * Tcl_GetCommandName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command)); +/* 161 */ +EXTERN int Tcl_GetErrno _ANSI_ARGS_((void)); +/* 162 */ +EXTERN CONST84_RETURN char * Tcl_GetHostName _ANSI_ARGS_((void)); +/* 163 */ +EXTERN int Tcl_GetInterpPath _ANSI_ARGS_(( + Tcl_Interp * askInterp, + Tcl_Interp * slaveInterp)); +/* 164 */ +EXTERN Tcl_Interp * Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp * interp)); +/* 165 */ +EXTERN CONST char * Tcl_GetNameOfExecutable _ANSI_ARGS_((void)); +/* 166 */ +EXTERN Tcl_Obj * Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp * interp)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 167 */ +EXTERN int Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int forWriting, + int checkUsage, ClientData * filePtr)); +#endif /* UNIX */ +/* 168 */ +EXTERN Tcl_PathType Tcl_GetPathType _ANSI_ARGS_((CONST char * path)); +/* 169 */ +EXTERN int Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan, + Tcl_DString * dsPtr)); +/* 170 */ +EXTERN int Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan, + Tcl_Obj * objPtr)); +/* 171 */ +EXTERN int Tcl_GetServiceMode _ANSI_ARGS_((void)); +/* 172 */ +EXTERN Tcl_Interp * Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveName)); +/* 173 */ +EXTERN Tcl_Channel Tcl_GetStdChannel _ANSI_ARGS_((int type)); +/* 174 */ +EXTERN CONST84_RETURN char * Tcl_GetStringResult _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 175 */ +EXTERN CONST84_RETURN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags)); +/* 176 */ +EXTERN CONST84_RETURN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 177 */ +EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * command)); +/* 178 */ +EXTERN int Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr)); +/* 179 */ +EXTERN int Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, + CONST char * hiddenCmdToken)); +/* 180 */ +EXTERN int Tcl_Init _ANSI_ARGS_((Tcl_Interp * interp)); +/* 181 */ +EXTERN void Tcl_InitHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, int keyType)); +/* 182 */ +EXTERN int Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan)); +/* 183 */ +EXTERN int Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 184 */ +EXTERN int Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp * interp)); +/* 185 */ +EXTERN int Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp * interp)); +/* 186 */ +EXTERN char * Tcl_JoinPath _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv, + Tcl_DString * resultPtr)); +/* 187 */ +EXTERN int Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, char * addr, int type)); +/* Slot 188 is reserved */ +/* 189 */ +EXTERN Tcl_Channel Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle, + int mode)); +/* 190 */ +EXTERN int Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp * interp)); +/* 191 */ +EXTERN Tcl_Channel Tcl_MakeTcpClientChannel _ANSI_ARGS_(( + ClientData tcpSocket)); +/* 192 */ +EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv)); +/* 193 */ +EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( + Tcl_HashSearch * searchPtr)); +/* 194 */ +EXTERN void Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel, + int mask)); +/* 195 */ +EXTERN Tcl_Obj * Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + int flags)); +/* 196 */ +EXTERN Tcl_Obj * Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + Tcl_Obj * newValuePtr, int flags)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 197 */ +EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( + Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 197 */ +EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( + Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +#endif /* __WIN32__ */ +/* 198 */ +EXTERN Tcl_Channel Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * fileName, + CONST char * modeString, int permissions)); +/* 199 */ +EXTERN Tcl_Channel Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp * interp, + int port, CONST char * address, + CONST char * myaddr, int myport, int async)); +/* 200 */ +EXTERN Tcl_Channel Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp * interp, + int port, CONST char * host, + Tcl_TcpAcceptProc * acceptProc, + ClientData callbackData)); +/* 201 */ +EXTERN void Tcl_Preserve _ANSI_ARGS_((ClientData data)); +/* 202 */ +EXTERN void Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp * interp, + double value, char * dst)); +/* 203 */ +EXTERN int Tcl_PutEnv _ANSI_ARGS_((CONST char * string)); +/* 204 */ +EXTERN CONST84_RETURN char * Tcl_PosixError _ANSI_ARGS_((Tcl_Interp * interp)); +/* 205 */ +EXTERN void Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event * evPtr, + Tcl_QueuePosition position)); +/* 206 */ +EXTERN int Tcl_Read _ANSI_ARGS_((Tcl_Channel chan, + char * bufPtr, int toRead)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 207 */ +EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 207 */ +EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); +#endif /* __WIN32__ */ +/* 208 */ +EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmd, int flags)); +/* 209 */ +EXTERN int Tcl_RecordAndEvalObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * cmdPtr, + int flags)); +/* 210 */ +EXTERN void Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 211 */ +EXTERN void Tcl_RegisterObjType _ANSI_ARGS_(( + Tcl_ObjType * typePtr)); +/* 212 */ +EXTERN Tcl_RegExp Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 213 */ +EXTERN int Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp regexp, CONST char * str, + CONST char * start)); +/* 214 */ +EXTERN int Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CONST char * pattern)); +/* 215 */ +EXTERN void Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp, + int index, CONST84 char ** startPtr, + CONST84 char ** endPtr)); +/* 216 */ +EXTERN void Tcl_Release _ANSI_ARGS_((ClientData clientData)); +/* 217 */ +EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp * interp)); +/* 218 */ +EXTERN int Tcl_ScanElement _ANSI_ARGS_((CONST char * str, + int * flagPtr)); +/* 219 */ +EXTERN int Tcl_ScanCountedElement _ANSI_ARGS_((CONST char * str, + int length, int * flagPtr)); +/* 220 */ +EXTERN int Tcl_SeekOld _ANSI_ARGS_((Tcl_Channel chan, + int offset, int mode)); +/* 221 */ +EXTERN int Tcl_ServiceAll _ANSI_ARGS_((void)); +/* 222 */ +EXTERN int Tcl_ServiceEvent _ANSI_ARGS_((int flags)); +/* 223 */ +EXTERN void Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 224 */ +EXTERN void Tcl_SetChannelBufferSize _ANSI_ARGS_(( + Tcl_Channel chan, int sz)); +/* 225 */ +EXTERN int Tcl_SetChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan, + CONST char * optionName, + CONST char * newValue)); +/* 226 */ +EXTERN int Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, + CONST Tcl_CmdInfo * infoPtr)); +/* 227 */ +EXTERN void Tcl_SetErrno _ANSI_ARGS_((int err)); +/* 228 */ +EXTERN void Tcl_SetErrorCode _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 229 */ +EXTERN void Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 230 */ +EXTERN void Tcl_SetPanicProc _ANSI_ARGS_(( + Tcl_PanicProc * panicProc)); +/* 231 */ +EXTERN int Tcl_SetRecursionLimit _ANSI_ARGS_(( + Tcl_Interp * interp, int depth)); +/* 232 */ +EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp * interp, + char * str, Tcl_FreeProc * freeProc)); +/* 233 */ +EXTERN int Tcl_SetServiceMode _ANSI_ARGS_((int mode)); +/* 234 */ +EXTERN void Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * errorObjPtr)); +/* 235 */ +EXTERN void Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * resultObjPtr)); +/* 236 */ +EXTERN void Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel, + int type)); +/* 237 */ +EXTERN CONST84_RETURN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, CONST char * newValue, + int flags)); +/* 238 */ +EXTERN CONST84_RETURN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + CONST char * newValue, int flags)); +/* 239 */ +EXTERN CONST84_RETURN char * Tcl_SignalId _ANSI_ARGS_((int sig)); +/* 240 */ +EXTERN CONST84_RETURN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); +/* 241 */ +EXTERN void Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp * interp)); +/* 242 */ +EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * listStr, int * argcPtr, + CONST84 char *** argvPtr)); +/* 243 */ +EXTERN void Tcl_SplitPath _ANSI_ARGS_((CONST char * path, + int * argcPtr, CONST84 char *** argvPtr)); +/* 244 */ +EXTERN void Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * pkgName, + Tcl_PackageInitProc * initProc, + Tcl_PackageInitProc * safeInitProc)); +/* 245 */ +EXTERN int Tcl_StringMatch _ANSI_ARGS_((CONST char * str, + CONST char * pattern)); +/* 246 */ +EXTERN int Tcl_TellOld _ANSI_ARGS_((Tcl_Channel chan)); +/* 247 */ +EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 248 */ +EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 249 */ +EXTERN char * Tcl_TranslateFileName _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_DString * bufferPtr)); +/* 250 */ +EXTERN int Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, + CONST char * str, int len, int atHead)); +/* 251 */ +EXTERN void Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 252 */ +EXTERN int Tcl_UnregisterChannel _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan)); +/* 253 */ +EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags)); +/* 254 */ +EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 255 */ +EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 256 */ +EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 257 */ +EXTERN void Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 258 */ +EXTERN int Tcl_UpVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * frameName, CONST char * varName, + CONST char * localName, int flags)); +/* 259 */ +EXTERN int Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * frameName, CONST char * part1, + CONST char * part2, CONST char * localName, + int flags)); +/* 260 */ +EXTERN int Tcl_VarEval _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 261 */ +EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * procPtr, + ClientData prevClientData)); +/* 262 */ +EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * procPtr, + ClientData prevClientData)); +/* 263 */ +EXTERN int Tcl_Write _ANSI_ARGS_((Tcl_Channel chan, + CONST char * s, int slen)); +/* 264 */ +EXTERN void Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], + CONST char * message)); +/* 265 */ +EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_(( + CONST char * fileName)); +/* 266 */ +EXTERN void Tcl_ValidateAllMemory _ANSI_ARGS_((CONST char * file, + int line)); +/* 267 */ +EXTERN void Tcl_AppendResultVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 268 */ +EXTERN void Tcl_AppendStringsToObjVA _ANSI_ARGS_(( + Tcl_Obj * objPtr, va_list argList)); +/* 269 */ +EXTERN CONST84_RETURN char * Tcl_HashStats _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 270 */ +EXTERN CONST84_RETURN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CONST84 char ** termPtr)); +/* 271 */ +EXTERN CONST84_RETURN char * Tcl_PkgPresent _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version, + int exact)); +/* 272 */ +EXTERN CONST84_RETURN char * Tcl_PkgPresentEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + CONST char * version, int exact, + ClientData * clientDataPtr)); +/* 273 */ +EXTERN int Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version)); +/* 274 */ +EXTERN CONST84_RETURN char * Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version, + int exact)); +/* 275 */ +EXTERN void Tcl_SetErrorCodeVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 276 */ +EXTERN int Tcl_VarEvalVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 277 */ +EXTERN Tcl_Pid Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, + int options)); +/* 278 */ +EXTERN void Tcl_PanicVA _ANSI_ARGS_((CONST char * format, + va_list argList)); +/* 279 */ +EXTERN void Tcl_GetVersion _ANSI_ARGS_((int * major, int * minor, + int * patchLevel, int * type)); +/* 280 */ +EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp * interp)); +/* 281 */ +EXTERN Tcl_Channel Tcl_StackChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_ChannelType * typePtr, + ClientData instanceData, int mask, + Tcl_Channel prevChan)); +/* 282 */ +EXTERN int Tcl_UnstackChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 283 */ +EXTERN Tcl_Channel Tcl_GetStackedChannel _ANSI_ARGS_((Tcl_Channel chan)); +/* 284 */ +EXTERN void Tcl_SetMainLoop _ANSI_ARGS_((Tcl_MainLoopProc * proc)); +/* Slot 285 is reserved */ +/* 286 */ +EXTERN void Tcl_AppendObjToObj _ANSI_ARGS_((Tcl_Obj * objPtr, + Tcl_Obj * appendObjPtr)); +/* 287 */ +EXTERN Tcl_Encoding Tcl_CreateEncoding _ANSI_ARGS_(( + Tcl_EncodingType * typePtr)); +/* 288 */ +EXTERN void Tcl_CreateThreadExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 289 */ +EXTERN void Tcl_DeleteThreadExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 290 */ +EXTERN void Tcl_DiscardResult _ANSI_ARGS_(( + Tcl_SavedResult * statePtr)); +/* 291 */ +EXTERN int Tcl_EvalEx _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * script, int numBytes, int flags)); +/* 292 */ +EXTERN int Tcl_EvalObjv _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 293 */ +EXTERN int Tcl_EvalObjEx _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int flags)); +/* 294 */ +EXTERN void Tcl_ExitThread _ANSI_ARGS_((int status)); +/* 295 */ +EXTERN int Tcl_ExternalToUtf _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Encoding encoding, CONST char * src, + int srcLen, int flags, + Tcl_EncodingState * statePtr, char * dst, + int dstLen, int * srcReadPtr, + int * dstWrotePtr, int * dstCharsPtr)); +/* 296 */ +EXTERN char * Tcl_ExternalToUtfDString _ANSI_ARGS_(( + Tcl_Encoding encoding, CONST char * src, + int srcLen, Tcl_DString * dsPtr)); +/* 297 */ +EXTERN void Tcl_FinalizeThread _ANSI_ARGS_((void)); +/* 298 */ +EXTERN void Tcl_FinalizeNotifier _ANSI_ARGS_(( + ClientData clientData)); +/* 299 */ +EXTERN void Tcl_FreeEncoding _ANSI_ARGS_((Tcl_Encoding encoding)); +/* 300 */ +EXTERN Tcl_ThreadId Tcl_GetCurrentThread _ANSI_ARGS_((void)); +/* 301 */ +EXTERN Tcl_Encoding Tcl_GetEncoding _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name)); +/* 302 */ +EXTERN CONST84_RETURN char * Tcl_GetEncodingName _ANSI_ARGS_(( + Tcl_Encoding encoding)); +/* 303 */ +EXTERN void Tcl_GetEncodingNames _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 304 */ +EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + CONST VOID * tablePtr, int offset, + CONST char * msg, int flags, int * indexPtr)); +/* 305 */ +EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_(( + Tcl_ThreadDataKey * keyPtr, int size)); +/* 306 */ +EXTERN Tcl_Obj * Tcl_GetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 307 */ +EXTERN ClientData Tcl_InitNotifier _ANSI_ARGS_((void)); +/* 308 */ +EXTERN void Tcl_MutexLock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); +/* 309 */ +EXTERN void Tcl_MutexUnlock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); +/* 310 */ +EXTERN void Tcl_ConditionNotify _ANSI_ARGS_(( + Tcl_Condition * condPtr)); +/* 311 */ +EXTERN void Tcl_ConditionWait _ANSI_ARGS_(( + Tcl_Condition * condPtr, + Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); +/* 312 */ +EXTERN int Tcl_NumUtfChars _ANSI_ARGS_((CONST char * src, + int len)); +/* 313 */ +EXTERN int Tcl_ReadChars _ANSI_ARGS_((Tcl_Channel channel, + Tcl_Obj * objPtr, int charsToRead, + int appendFlag)); +/* 314 */ +EXTERN void Tcl_RestoreResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_SavedResult * statePtr)); +/* 315 */ +EXTERN void Tcl_SaveResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_SavedResult * statePtr)); +/* 316 */ +EXTERN int Tcl_SetSystemEncoding _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name)); +/* 317 */ +EXTERN Tcl_Obj * Tcl_SetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + Tcl_Obj * newValuePtr, int flags)); +/* 318 */ +EXTERN void Tcl_ThreadAlert _ANSI_ARGS_((Tcl_ThreadId threadId)); +/* 319 */ +EXTERN void Tcl_ThreadQueueEvent _ANSI_ARGS_(( + Tcl_ThreadId threadId, Tcl_Event* evPtr, + Tcl_QueuePosition position)); +/* 320 */ +EXTERN Tcl_UniChar Tcl_UniCharAtIndex _ANSI_ARGS_((CONST char * src, + int index)); +/* 321 */ +EXTERN Tcl_UniChar Tcl_UniCharToLower _ANSI_ARGS_((int ch)); +/* 322 */ +EXTERN Tcl_UniChar Tcl_UniCharToTitle _ANSI_ARGS_((int ch)); +/* 323 */ +EXTERN Tcl_UniChar Tcl_UniCharToUpper _ANSI_ARGS_((int ch)); +/* 324 */ +EXTERN int Tcl_UniCharToUtf _ANSI_ARGS_((int ch, char * buf)); +/* 325 */ +EXTERN CONST84_RETURN char * Tcl_UtfAtIndex _ANSI_ARGS_((CONST char * src, + int index)); +/* 326 */ +EXTERN int Tcl_UtfCharComplete _ANSI_ARGS_((CONST char * src, + int len)); +/* 327 */ +EXTERN int Tcl_UtfBackslash _ANSI_ARGS_((CONST char * src, + int * readPtr, char * dst)); +/* 328 */ +EXTERN CONST84_RETURN char * Tcl_UtfFindFirst _ANSI_ARGS_((CONST char * src, + int ch)); +/* 329 */ +EXTERN CONST84_RETURN char * Tcl_UtfFindLast _ANSI_ARGS_((CONST char * src, + int ch)); +/* 330 */ +EXTERN CONST84_RETURN char * Tcl_UtfNext _ANSI_ARGS_((CONST char * src)); +/* 331 */ +EXTERN CONST84_RETURN char * Tcl_UtfPrev _ANSI_ARGS_((CONST char * src, + CONST char * start)); +/* 332 */ +EXTERN int Tcl_UtfToExternal _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Encoding encoding, CONST char * src, + int srcLen, int flags, + Tcl_EncodingState * statePtr, char * dst, + int dstLen, int * srcReadPtr, + int * dstWrotePtr, int * dstCharsPtr)); +/* 333 */ +EXTERN char * Tcl_UtfToExternalDString _ANSI_ARGS_(( + Tcl_Encoding encoding, CONST char * src, + int srcLen, Tcl_DString * dsPtr)); +/* 334 */ +EXTERN int Tcl_UtfToLower _ANSI_ARGS_((char * src)); +/* 335 */ +EXTERN int Tcl_UtfToTitle _ANSI_ARGS_((char * src)); +/* 336 */ +EXTERN int Tcl_UtfToUniChar _ANSI_ARGS_((CONST char * src, + Tcl_UniChar * chPtr)); +/* 337 */ +EXTERN int Tcl_UtfToUpper _ANSI_ARGS_((char * src)); +/* 338 */ +EXTERN int Tcl_WriteChars _ANSI_ARGS_((Tcl_Channel chan, + CONST char * src, int srcLen)); +/* 339 */ +EXTERN int Tcl_WriteObj _ANSI_ARGS_((Tcl_Channel chan, + Tcl_Obj * objPtr)); +/* 340 */ +EXTERN char * Tcl_GetString _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 341 */ +EXTERN CONST84_RETURN char * Tcl_GetDefaultEncodingDir _ANSI_ARGS_((void)); +/* 342 */ +EXTERN void Tcl_SetDefaultEncodingDir _ANSI_ARGS_(( + CONST char * path)); +/* 343 */ +EXTERN void Tcl_AlertNotifier _ANSI_ARGS_((ClientData clientData)); +/* 344 */ +EXTERN void Tcl_ServiceModeHook _ANSI_ARGS_((int mode)); +/* 345 */ +EXTERN int Tcl_UniCharIsAlnum _ANSI_ARGS_((int ch)); +/* 346 */ +EXTERN int Tcl_UniCharIsAlpha _ANSI_ARGS_((int ch)); +/* 347 */ +EXTERN int Tcl_UniCharIsDigit _ANSI_ARGS_((int ch)); +/* 348 */ +EXTERN int Tcl_UniCharIsLower _ANSI_ARGS_((int ch)); +/* 349 */ +EXTERN int Tcl_UniCharIsSpace _ANSI_ARGS_((int ch)); +/* 350 */ +EXTERN int Tcl_UniCharIsUpper _ANSI_ARGS_((int ch)); +/* 351 */ +EXTERN int Tcl_UniCharIsWordChar _ANSI_ARGS_((int ch)); +/* 352 */ +EXTERN int Tcl_UniCharLen _ANSI_ARGS_((CONST Tcl_UniChar * str)); +/* 353 */ +EXTERN int Tcl_UniCharNcmp _ANSI_ARGS_((CONST Tcl_UniChar * cs, + CONST Tcl_UniChar * ct, unsigned long n)); +/* 354 */ +EXTERN char * Tcl_UniCharToUtfDString _ANSI_ARGS_(( + CONST Tcl_UniChar * string, int numChars, + Tcl_DString * dsPtr)); +/* 355 */ +EXTERN Tcl_UniChar * Tcl_UtfToUniCharDString _ANSI_ARGS_(( + CONST char * string, int length, + Tcl_DString * dsPtr)); +/* 356 */ +EXTERN Tcl_RegExp Tcl_GetRegExpFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * patObj, + int flags)); +/* 357 */ +EXTERN Tcl_Obj * Tcl_EvalTokens _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Token * tokenPtr, int count)); +/* 358 */ +EXTERN void Tcl_FreeParse _ANSI_ARGS_((Tcl_Parse * parsePtr)); +/* 359 */ +EXTERN void Tcl_LogCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * script, CONST char * command, + int length)); +/* 360 */ +EXTERN int Tcl_ParseBraces _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr, int append, + CONST84 char ** termPtr)); +/* 361 */ +EXTERN int Tcl_ParseCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + int nested, Tcl_Parse * parsePtr)); +/* 362 */ +EXTERN int Tcl_ParseExpr _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr)); +/* 363 */ +EXTERN int Tcl_ParseQuotedString _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * string, + int numBytes, Tcl_Parse * parsePtr, + int append, CONST84 char ** termPtr)); +/* 364 */ +EXTERN int Tcl_ParseVarName _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr, int append)); +/* 365 */ +EXTERN char * Tcl_GetCwd _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * cwdPtr)); +/* 366 */ +EXTERN int Tcl_Chdir _ANSI_ARGS_((CONST char * dirName)); +/* 367 */ +EXTERN int Tcl_Access _ANSI_ARGS_((CONST char * path, int mode)); +/* 368 */ +EXTERN int Tcl_Stat _ANSI_ARGS_((CONST char * path, + struct stat * bufPtr)); +/* 369 */ +EXTERN int Tcl_UtfNcmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 370 */ +EXTERN int Tcl_UtfNcasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 371 */ +EXTERN int Tcl_StringCaseMatch _ANSI_ARGS_((CONST char * str, + CONST char * pattern, int nocase)); +/* 372 */ +EXTERN int Tcl_UniCharIsControl _ANSI_ARGS_((int ch)); +/* 373 */ +EXTERN int Tcl_UniCharIsGraph _ANSI_ARGS_((int ch)); +/* 374 */ +EXTERN int Tcl_UniCharIsPrint _ANSI_ARGS_((int ch)); +/* 375 */ +EXTERN int Tcl_UniCharIsPunct _ANSI_ARGS_((int ch)); +/* 376 */ +EXTERN int Tcl_RegExpExecObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp regexp, Tcl_Obj * objPtr, + int offset, int nmatches, int flags)); +/* 377 */ +EXTERN void Tcl_RegExpGetInfo _ANSI_ARGS_((Tcl_RegExp regexp, + Tcl_RegExpInfo * infoPtr)); +/* 378 */ +EXTERN Tcl_Obj * Tcl_NewUnicodeObj _ANSI_ARGS_(( + CONST Tcl_UniChar * unicode, int numChars)); +/* 379 */ +EXTERN void Tcl_SetUnicodeObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST Tcl_UniChar * unicode, int numChars)); +/* 380 */ +EXTERN int Tcl_GetCharLength _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 381 */ +EXTERN Tcl_UniChar Tcl_GetUniChar _ANSI_ARGS_((Tcl_Obj * objPtr, + int index)); +/* 382 */ +EXTERN Tcl_UniChar * Tcl_GetUnicode _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 383 */ +EXTERN Tcl_Obj * Tcl_GetRange _ANSI_ARGS_((Tcl_Obj * objPtr, + int first, int last)); +/* 384 */ +EXTERN void Tcl_AppendUnicodeToObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST Tcl_UniChar * unicode, int length)); +/* 385 */ +EXTERN int Tcl_RegExpMatchObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * stringObj, Tcl_Obj * patternObj)); +/* 386 */ +EXTERN void Tcl_SetNotifier _ANSI_ARGS_(( + Tcl_NotifierProcs * notifierProcPtr)); +/* 387 */ +EXTERN Tcl_Mutex * Tcl_GetAllocMutex _ANSI_ARGS_((void)); +/* 388 */ +EXTERN int Tcl_GetChannelNames _ANSI_ARGS_((Tcl_Interp * interp)); +/* 389 */ +EXTERN int Tcl_GetChannelNamesEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * pattern)); +/* 390 */ +EXTERN int Tcl_ProcObjCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int objc, + Tcl_Obj *CONST objv[])); +/* 391 */ +EXTERN void Tcl_ConditionFinalize _ANSI_ARGS_(( + Tcl_Condition * condPtr)); +/* 392 */ +EXTERN void Tcl_MutexFinalize _ANSI_ARGS_((Tcl_Mutex * mutex)); +/* 393 */ +EXTERN int Tcl_CreateThread _ANSI_ARGS_((Tcl_ThreadId * idPtr, + Tcl_ThreadCreateProc proc, + ClientData clientData, int stackSize, + int flags)); +/* 394 */ +EXTERN int Tcl_ReadRaw _ANSI_ARGS_((Tcl_Channel chan, + char * dst, int bytesToRead)); +/* 395 */ +EXTERN int Tcl_WriteRaw _ANSI_ARGS_((Tcl_Channel chan, + CONST char * src, int srcLen)); +/* 396 */ +EXTERN Tcl_Channel Tcl_GetTopChannel _ANSI_ARGS_((Tcl_Channel chan)); +/* 397 */ +EXTERN int Tcl_ChannelBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 398 */ +EXTERN CONST84_RETURN char * Tcl_ChannelName _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 399 */ +EXTERN Tcl_ChannelTypeVersion Tcl_ChannelVersion _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 400 */ +EXTERN Tcl_DriverBlockModeProc * Tcl_ChannelBlockModeProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 401 */ +EXTERN Tcl_DriverCloseProc * Tcl_ChannelCloseProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 402 */ +EXTERN Tcl_DriverClose2Proc * Tcl_ChannelClose2Proc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 403 */ +EXTERN Tcl_DriverInputProc * Tcl_ChannelInputProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 404 */ +EXTERN Tcl_DriverOutputProc * Tcl_ChannelOutputProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 405 */ +EXTERN Tcl_DriverSeekProc * Tcl_ChannelSeekProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 406 */ +EXTERN Tcl_DriverSetOptionProc * Tcl_ChannelSetOptionProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 407 */ +EXTERN Tcl_DriverGetOptionProc * Tcl_ChannelGetOptionProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 408 */ +EXTERN Tcl_DriverWatchProc * Tcl_ChannelWatchProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 409 */ +EXTERN Tcl_DriverGetHandleProc * Tcl_ChannelGetHandleProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 410 */ +EXTERN Tcl_DriverFlushProc * Tcl_ChannelFlushProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 411 */ +EXTERN Tcl_DriverHandlerProc * Tcl_ChannelHandlerProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 412 */ +EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId threadId, + int* result)); +/* 413 */ +EXTERN int Tcl_IsChannelShared _ANSI_ARGS_((Tcl_Channel channel)); +/* 414 */ +EXTERN int Tcl_IsChannelRegistered _ANSI_ARGS_(( + Tcl_Interp* interp, Tcl_Channel channel)); +/* 415 */ +EXTERN void Tcl_CutChannel _ANSI_ARGS_((Tcl_Channel channel)); +/* 416 */ +EXTERN void Tcl_SpliceChannel _ANSI_ARGS_((Tcl_Channel channel)); +/* 417 */ +EXTERN void Tcl_ClearChannelHandlers _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 418 */ +EXTERN int Tcl_IsChannelExisting _ANSI_ARGS_(( + CONST char* channelName)); +/* 419 */ +EXTERN int Tcl_UniCharNcasecmp _ANSI_ARGS_(( + CONST Tcl_UniChar * cs, + CONST Tcl_UniChar * ct, unsigned long n)); +/* 420 */ +EXTERN int Tcl_UniCharCaseMatch _ANSI_ARGS_(( + CONST Tcl_UniChar * ustr, + CONST Tcl_UniChar * pattern, int nocase)); +/* 421 */ +EXTERN Tcl_HashEntry * Tcl_FindHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, CONST char * key)); +/* 422 */ +EXTERN Tcl_HashEntry * Tcl_CreateHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, CONST char * key, + int * newPtr)); +/* 423 */ +EXTERN void Tcl_InitCustomHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, int keyType, + Tcl_HashKeyType * typePtr)); +/* 424 */ +EXTERN void Tcl_InitObjHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 425 */ +EXTERN ClientData Tcl_CommandTraceInfo _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * varName, + int flags, Tcl_CommandTraceProc * procPtr, + ClientData prevClientData)); +/* 426 */ +EXTERN int Tcl_TraceCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_CommandTraceProc * proc, + ClientData clientData)); +/* 427 */ +EXTERN void Tcl_UntraceCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_CommandTraceProc * proc, + ClientData clientData)); +/* 428 */ +EXTERN char * Tcl_AttemptAlloc _ANSI_ARGS_((unsigned int size)); +/* 429 */ +EXTERN char * Tcl_AttemptDbCkalloc _ANSI_ARGS_((unsigned int size, + CONST char * file, int line)); +/* 430 */ +EXTERN char * Tcl_AttemptRealloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* 431 */ +EXTERN char * Tcl_AttemptDbCkrealloc _ANSI_ARGS_((char * ptr, + unsigned int size, CONST char * file, + int line)); +/* 432 */ +EXTERN int Tcl_AttemptSetObjLength _ANSI_ARGS_(( + Tcl_Obj * objPtr, int length)); +/* 433 */ +EXTERN Tcl_ThreadId Tcl_GetChannelThread _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 434 */ +EXTERN Tcl_UniChar * Tcl_GetUnicodeFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int * lengthPtr)); +/* 435 */ +EXTERN int Tcl_GetMathFuncInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, int * numArgsPtr, + Tcl_ValueType ** argTypesPtr, + Tcl_MathProc ** procPtr, + ClientData * clientDataPtr)); +/* 436 */ +EXTERN Tcl_Obj * Tcl_ListMathFuncs _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * pattern)); +/* 437 */ +EXTERN Tcl_Obj * Tcl_SubstObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int flags)); +/* 438 */ +EXTERN int Tcl_DetachChannel _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_Channel channel)); +/* 439 */ +EXTERN int Tcl_IsStandardChannel _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 440 */ +EXTERN int Tcl_FSCopyFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +/* 441 */ +EXTERN int Tcl_FSCopyDirectory _ANSI_ARGS_(( + Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, + Tcl_Obj ** errorPtr)); +/* 442 */ +EXTERN int Tcl_FSCreateDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 443 */ +EXTERN int Tcl_FSDeleteFile _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 444 */ +EXTERN int Tcl_FSLoadFile _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * pathPtr, CONST char * sym1, + CONST char * sym2, + Tcl_PackageInitProc ** proc1Ptr, + Tcl_PackageInitProc ** proc2Ptr, + Tcl_LoadHandle * handlePtr, + Tcl_FSUnloadFileProc ** unloadProcPtr)); +/* 445 */ +EXTERN int Tcl_FSMatchInDirectory _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * result, + Tcl_Obj * pathPtr, CONST char * pattern, + Tcl_GlobTypeData * types)); +/* 446 */ +EXTERN Tcl_Obj * Tcl_FSLink _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_Obj * toPtr, int linkAction)); +/* 447 */ +EXTERN int Tcl_FSRemoveDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr, + int recursive, Tcl_Obj ** errorPtr)); +/* 448 */ +EXTERN int Tcl_FSRenameFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +/* 449 */ +EXTERN int Tcl_FSLstat _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_StatBuf * buf)); +/* 450 */ +EXTERN int Tcl_FSUtime _ANSI_ARGS_((Tcl_Obj * pathPtr, + struct utimbuf * tval)); +/* 451 */ +EXTERN int Tcl_FSFileAttrsGet _ANSI_ARGS_((Tcl_Interp * interp, + int index, Tcl_Obj * pathPtr, + Tcl_Obj ** objPtrRef)); +/* 452 */ +EXTERN int Tcl_FSFileAttrsSet _ANSI_ARGS_((Tcl_Interp * interp, + int index, Tcl_Obj * pathPtr, + Tcl_Obj * objPtr)); +/* 453 */ +EXTERN CONST char ** Tcl_FSFileAttrStrings _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_Obj ** objPtrRef)); +/* 454 */ +EXTERN int Tcl_FSStat _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_StatBuf * buf)); +/* 455 */ +EXTERN int Tcl_FSAccess _ANSI_ARGS_((Tcl_Obj * pathPtr, + int mode)); +/* 456 */ +EXTERN Tcl_Channel Tcl_FSOpenFileChannel _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * pathPtr, + CONST char * modeString, int permissions)); +/* 457 */ +EXTERN Tcl_Obj* Tcl_FSGetCwd _ANSI_ARGS_((Tcl_Interp * interp)); +/* 458 */ +EXTERN int Tcl_FSChdir _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 459 */ +EXTERN int Tcl_FSConvertToPathType _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * pathPtr)); +/* 460 */ +EXTERN Tcl_Obj* Tcl_FSJoinPath _ANSI_ARGS_((Tcl_Obj * listObj, + int elements)); +/* 461 */ +EXTERN Tcl_Obj* Tcl_FSSplitPath _ANSI_ARGS_((Tcl_Obj* pathPtr, + int * lenPtr)); +/* 462 */ +EXTERN int Tcl_FSEqualPaths _ANSI_ARGS_((Tcl_Obj* firstPtr, + Tcl_Obj* secondPtr)); +/* 463 */ +EXTERN Tcl_Obj* Tcl_FSGetNormalizedPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); +/* 464 */ +EXTERN Tcl_Obj* Tcl_FSJoinToPath _ANSI_ARGS_((Tcl_Obj * basePtr, + int objc, Tcl_Obj *CONST objv[])); +/* 465 */ +EXTERN ClientData Tcl_FSGetInternalRep _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); +/* 466 */ +EXTERN Tcl_Obj* Tcl_FSGetTranslatedPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathPtr)); +/* 467 */ +EXTERN int Tcl_FSEvalFile _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * fileName)); +/* 468 */ +EXTERN Tcl_Obj* Tcl_FSNewNativePath _ANSI_ARGS_(( + Tcl_Filesystem* fromFilesystem, + ClientData clientData)); +/* 469 */ +EXTERN CONST char* Tcl_FSGetNativePath _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); +/* 470 */ +EXTERN Tcl_Obj* Tcl_FSFileSystemInfo _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr)); +/* 471 */ +EXTERN Tcl_Obj* Tcl_FSPathSeparator _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); +/* 472 */ +EXTERN Tcl_Obj* Tcl_FSListVolumes _ANSI_ARGS_((void)); +/* 473 */ +EXTERN int Tcl_FSRegister _ANSI_ARGS_((ClientData clientData, + Tcl_Filesystem * fsPtr)); +/* 474 */ +EXTERN int Tcl_FSUnregister _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); +/* 475 */ +EXTERN ClientData Tcl_FSData _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); +/* 476 */ +EXTERN CONST char* Tcl_FSGetTranslatedStringPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathPtr)); +/* 477 */ +EXTERN Tcl_Filesystem* Tcl_FSGetFileSystemForPath _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr)); +/* 478 */ +EXTERN Tcl_PathType Tcl_FSGetPathType _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); +/* 479 */ +EXTERN int Tcl_OutputBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 480 */ +EXTERN void Tcl_FSMountsChanged _ANSI_ARGS_(( + Tcl_Filesystem * fsPtr)); +/* 481 */ +EXTERN int Tcl_EvalTokensStandard _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Token * tokenPtr, + int count)); +/* 482 */ +EXTERN void Tcl_GetTime _ANSI_ARGS_((Tcl_Time* timeBuf)); +/* 483 */ +EXTERN Tcl_Trace Tcl_CreateObjTrace _ANSI_ARGS_((Tcl_Interp* interp, + int level, int flags, + Tcl_CmdObjTraceProc* objProc, + ClientData clientData, + Tcl_CmdObjTraceDeleteProc* delProc)); +/* 484 */ +EXTERN int Tcl_GetCommandInfoFromToken _ANSI_ARGS_(( + Tcl_Command token, Tcl_CmdInfo* infoPtr)); +/* 485 */ +EXTERN int Tcl_SetCommandInfoFromToken _ANSI_ARGS_(( + Tcl_Command token, + CONST Tcl_CmdInfo* infoPtr)); +/* 486 */ +EXTERN Tcl_Obj * Tcl_DbNewWideIntObj _ANSI_ARGS_(( + Tcl_WideInt wideValue, CONST char * file, + int line)); +/* 487 */ +EXTERN int Tcl_GetWideIntFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + Tcl_WideInt * widePtr)); +/* 488 */ +EXTERN Tcl_Obj * Tcl_NewWideIntObj _ANSI_ARGS_((Tcl_WideInt wideValue)); +/* 489 */ +EXTERN void Tcl_SetWideIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, + Tcl_WideInt wideValue)); +/* 490 */ +EXTERN Tcl_StatBuf * Tcl_AllocStatBuf _ANSI_ARGS_((void)); +/* 491 */ +EXTERN Tcl_WideInt Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan, + Tcl_WideInt offset, int mode)); +/* 492 */ +EXTERN Tcl_WideInt Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); +/* 493 */ +EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); + +typedef struct TclStubHooks { + struct TclPlatStubs *tclPlatStubs; + struct TclIntStubs *tclIntStubs; + struct TclIntPlatStubs *tclIntPlatStubs; +} TclStubHooks; + +typedef struct TclStubs { + int magic; + struct TclStubHooks *hooks; + + int (*tcl_PkgProvideEx) _ANSI_ARGS_((Tcl_Interp* interp, CONST char* name, CONST char* version, ClientData clientData)); /* 0 */ + CONST84_RETURN char * (*tcl_PkgRequireEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 1 */ + void (*tcl_Panic) _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); /* 2 */ + char * (*tcl_Alloc) _ANSI_ARGS_((unsigned int size)); /* 3 */ + void (*tcl_Free) _ANSI_ARGS_((char * ptr)); /* 4 */ + char * (*tcl_Realloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 5 */ + char * (*tcl_DbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 6 */ + int (*tcl_DbCkfree) _ANSI_ARGS_((char * ptr, CONST char * file, int line)); /* 7 */ + char * (*tcl_DbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_CreateFileHandler) _ANSI_ARGS_((int fd, int mask, Tcl_FileProc * proc, ClientData clientData)); /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved9; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved9; +#endif /* MAC_TCL */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_DeleteFileHandler) _ANSI_ARGS_((int fd)); /* 10 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved10; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved10; +#endif /* MAC_TCL */ + void (*tcl_SetTimer) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 11 */ + void (*tcl_Sleep) _ANSI_ARGS_((int ms)); /* 12 */ + int (*tcl_WaitForEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 13 */ + int (*tcl_AppendAllObjTypes) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 14 */ + void (*tcl_AppendStringsToObj) _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); /* 15 */ + void (*tcl_AppendToObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 16 */ + Tcl_Obj * (*tcl_ConcatObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 17 */ + int (*tcl_ConvertToType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); /* 18 */ + void (*tcl_DbDecrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 19 */ + void (*tcl_DbIncrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 20 */ + int (*tcl_DbIsShared) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 21 */ + Tcl_Obj * (*tcl_DbNewBooleanObj) _ANSI_ARGS_((int boolValue, CONST char * file, int line)); /* 22 */ + Tcl_Obj * (*tcl_DbNewByteArrayObj) _ANSI_ARGS_((CONST unsigned char * bytes, int length, CONST char * file, int line)); /* 23 */ + Tcl_Obj * (*tcl_DbNewDoubleObj) _ANSI_ARGS_((double doubleValue, CONST char * file, int line)); /* 24 */ + Tcl_Obj * (*tcl_DbNewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST * objv, CONST char * file, int line)); /* 25 */ + Tcl_Obj * (*tcl_DbNewLongObj) _ANSI_ARGS_((long longValue, CONST char * file, int line)); /* 26 */ + Tcl_Obj * (*tcl_DbNewObj) _ANSI_ARGS_((CONST char * file, int line)); /* 27 */ + Tcl_Obj * (*tcl_DbNewStringObj) _ANSI_ARGS_((CONST char * bytes, int length, CONST char * file, int line)); /* 28 */ + Tcl_Obj * (*tcl_DuplicateObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 29 */ + void (*tclFreeObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 30 */ + int (*tcl_GetBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * boolPtr)); /* 31 */ + int (*tcl_GetBooleanFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * boolPtr)); /* 32 */ + unsigned char * (*tcl_GetByteArrayFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 33 */ + int (*tcl_GetDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * doublePtr)); /* 34 */ + int (*tcl_GetDoubleFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * doublePtr)); /* 35 */ + int (*tcl_GetIndexFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST84 char ** tablePtr, CONST char * msg, int flags, int * indexPtr)); /* 36 */ + int (*tcl_GetInt) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * intPtr)); /* 37 */ + int (*tcl_GetIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * intPtr)); /* 38 */ + int (*tcl_GetLongFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * longPtr)); /* 39 */ + Tcl_ObjType * (*tcl_GetObjType) _ANSI_ARGS_((CONST char * typeName)); /* 40 */ + char * (*tcl_GetStringFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 41 */ + void (*tcl_InvalidateStringRep) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 42 */ + int (*tcl_ListObjAppendList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * elemListPtr)); /* 43 */ + int (*tcl_ListObjAppendElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * objPtr)); /* 44 */ + int (*tcl_ListObjGetElements) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * objcPtr, Tcl_Obj *** objvPtr)); /* 45 */ + int (*tcl_ListObjIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj ** objPtrPtr)); /* 46 */ + int (*tcl_ListObjLength) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * lengthPtr)); /* 47 */ + int (*tcl_ListObjReplace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int first, int count, int objc, Tcl_Obj *CONST objv[])); /* 48 */ + Tcl_Obj * (*tcl_NewBooleanObj) _ANSI_ARGS_((int boolValue)); /* 49 */ + Tcl_Obj * (*tcl_NewByteArrayObj) _ANSI_ARGS_((CONST unsigned char* bytes, int length)); /* 50 */ + Tcl_Obj * (*tcl_NewDoubleObj) _ANSI_ARGS_((double doubleValue)); /* 51 */ + Tcl_Obj * (*tcl_NewIntObj) _ANSI_ARGS_((int intValue)); /* 52 */ + Tcl_Obj * (*tcl_NewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 53 */ + Tcl_Obj * (*tcl_NewLongObj) _ANSI_ARGS_((long longValue)); /* 54 */ + Tcl_Obj * (*tcl_NewObj) _ANSI_ARGS_((void)); /* 55 */ + Tcl_Obj * (*tcl_NewStringObj) _ANSI_ARGS_((CONST char * bytes, int length)); /* 56 */ + void (*tcl_SetBooleanObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int boolValue)); /* 57 */ + unsigned char * (*tcl_SetByteArrayLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 58 */ + void (*tcl_SetByteArrayObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST unsigned char * bytes, int length)); /* 59 */ + void (*tcl_SetDoubleObj) _ANSI_ARGS_((Tcl_Obj * objPtr, double doubleValue)); /* 60 */ + void (*tcl_SetIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int intValue)); /* 61 */ + void (*tcl_SetListObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int objc, Tcl_Obj *CONST objv[])); /* 62 */ + void (*tcl_SetLongObj) _ANSI_ARGS_((Tcl_Obj * objPtr, long longValue)); /* 63 */ + void (*tcl_SetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 64 */ + void (*tcl_SetStringObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 65 */ + void (*tcl_AddErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message)); /* 66 */ + void (*tcl_AddObjErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message, int length)); /* 67 */ + void (*tcl_AllowExceptions) _ANSI_ARGS_((Tcl_Interp * interp)); /* 68 */ + void (*tcl_AppendElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 69 */ + void (*tcl_AppendResult) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 70 */ + Tcl_AsyncHandler (*tcl_AsyncCreate) _ANSI_ARGS_((Tcl_AsyncProc * proc, ClientData clientData)); /* 71 */ + void (*tcl_AsyncDelete) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 72 */ + int (*tcl_AsyncInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int code)); /* 73 */ + void (*tcl_AsyncMark) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 74 */ + int (*tcl_AsyncReady) _ANSI_ARGS_((void)); /* 75 */ + void (*tcl_BackgroundError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 76 */ + char (*tcl_Backslash) _ANSI_ARGS_((CONST char * src, int * readPtr)); /* 77 */ + int (*tcl_BadChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * optionName, CONST char * optionList)); /* 78 */ + void (*tcl_CallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 79 */ + void (*tcl_CancelIdleCall) _ANSI_ARGS_((Tcl_IdleProc * idleProc, ClientData clientData)); /* 80 */ + int (*tcl_Close) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 81 */ + int (*tcl_CommandComplete) _ANSI_ARGS_((CONST char * cmd)); /* 82 */ + char * (*tcl_Concat) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 83 */ + int (*tcl_ConvertElement) _ANSI_ARGS_((CONST char * src, char * dst, int flags)); /* 84 */ + int (*tcl_ConvertCountedElement) _ANSI_ARGS_((CONST char * src, int length, char * dst, int flags)); /* 85 */ + int (*tcl_CreateAlias) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int argc, CONST84 char * CONST * argv)); /* 86 */ + int (*tcl_CreateAliasObj) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int objc, Tcl_Obj *CONST objv[])); /* 87 */ + Tcl_Channel (*tcl_CreateChannel) _ANSI_ARGS_((Tcl_ChannelType * typePtr, CONST char * chanName, ClientData instanceData, int mask)); /* 88 */ + void (*tcl_CreateChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, int mask, Tcl_ChannelProc * proc, ClientData clientData)); /* 89 */ + void (*tcl_CreateCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 90 */ + Tcl_Command (*tcl_CreateCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 91 */ + void (*tcl_CreateEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 92 */ + void (*tcl_CreateExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 93 */ + Tcl_Interp * (*tcl_CreateInterp) _ANSI_ARGS_((void)); /* 94 */ + void (*tcl_CreateMathFunc) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int numArgs, Tcl_ValueType * argTypes, Tcl_MathProc * proc, ClientData clientData)); /* 95 */ + Tcl_Command (*tcl_CreateObjCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_ObjCmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 96 */ + Tcl_Interp * (*tcl_CreateSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName, int isSafe)); /* 97 */ + Tcl_TimerToken (*tcl_CreateTimerHandler) _ANSI_ARGS_((int milliseconds, Tcl_TimerProc * proc, ClientData clientData)); /* 98 */ + Tcl_Trace (*tcl_CreateTrace) _ANSI_ARGS_((Tcl_Interp * interp, int level, Tcl_CmdTraceProc * proc, ClientData clientData)); /* 99 */ + void (*tcl_DeleteAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 100 */ + void (*tcl_DeleteChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_ChannelProc * proc, ClientData clientData)); /* 101 */ + void (*tcl_DeleteCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 102 */ + int (*tcl_DeleteCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName)); /* 103 */ + int (*tcl_DeleteCommandFromToken) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 104 */ + void (*tcl_DeleteEvents) _ANSI_ARGS_((Tcl_EventDeleteProc * proc, ClientData clientData)); /* 105 */ + void (*tcl_DeleteEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 106 */ + void (*tcl_DeleteExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 107 */ + void (*tcl_DeleteHashEntry) _ANSI_ARGS_((Tcl_HashEntry * entryPtr)); /* 108 */ + void (*tcl_DeleteHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 109 */ + void (*tcl_DeleteInterp) _ANSI_ARGS_((Tcl_Interp * interp)); /* 110 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved111; +#endif /* MAC_TCL */ + void (*tcl_DeleteTimerHandler) _ANSI_ARGS_((Tcl_TimerToken token)); /* 112 */ + void (*tcl_DeleteTrace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Trace trace)); /* 113 */ + void (*tcl_DontCallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 114 */ + int (*tcl_DoOneEvent) _ANSI_ARGS_((int flags)); /* 115 */ + void (*tcl_DoWhenIdle) _ANSI_ARGS_((Tcl_IdleProc * proc, ClientData clientData)); /* 116 */ + char * (*tcl_DStringAppend) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * str, int length)); /* 117 */ + char * (*tcl_DStringAppendElement) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * string)); /* 118 */ + void (*tcl_DStringEndSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 119 */ + void (*tcl_DStringFree) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 120 */ + void (*tcl_DStringGetResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 121 */ + void (*tcl_DStringInit) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 122 */ + void (*tcl_DStringResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 123 */ + void (*tcl_DStringSetLength) _ANSI_ARGS_((Tcl_DString * dsPtr, int length)); /* 124 */ + void (*tcl_DStringStartSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 125 */ + int (*tcl_Eof) _ANSI_ARGS_((Tcl_Channel chan)); /* 126 */ + CONST84_RETURN char * (*tcl_ErrnoId) _ANSI_ARGS_((void)); /* 127 */ + CONST84_RETURN char * (*tcl_ErrnoMsg) _ANSI_ARGS_((int err)); /* 128 */ + int (*tcl_Eval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 129 */ + int (*tcl_EvalFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName)); /* 130 */ + int (*tcl_EvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 131 */ + void (*tcl_EventuallyFree) _ANSI_ARGS_((ClientData clientData, Tcl_FreeProc * freeProc)); /* 132 */ + void (*tcl_Exit) _ANSI_ARGS_((int status)); /* 133 */ + int (*tcl_ExposeCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * hiddenCmdToken, CONST char * cmdName)); /* 134 */ + int (*tcl_ExprBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * ptr)); /* 135 */ + int (*tcl_ExprBooleanObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * ptr)); /* 136 */ + int (*tcl_ExprDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * ptr)); /* 137 */ + int (*tcl_ExprDoubleObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * ptr)); /* 138 */ + int (*tcl_ExprLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * ptr)); /* 139 */ + int (*tcl_ExprLongObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * ptr)); /* 140 */ + int (*tcl_ExprObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); /* 141 */ + int (*tcl_ExprString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 142 */ + void (*tcl_Finalize) _ANSI_ARGS_((void)); /* 143 */ + void (*tcl_FindExecutable) _ANSI_ARGS_((CONST char * argv0)); /* 144 */ + Tcl_HashEntry * (*tcl_FirstHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, Tcl_HashSearch * searchPtr)); /* 145 */ + int (*tcl_Flush) _ANSI_ARGS_((Tcl_Channel chan)); /* 146 */ + void (*tcl_FreeResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 147 */ + int (*tcl_GetAlias) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * argcPtr, CONST84 char *** argvPtr)); /* 148 */ + int (*tcl_GetAliasObj) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * objcPtr, Tcl_Obj *** objv)); /* 149 */ + ClientData (*tcl_GetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc ** procPtr)); /* 150 */ + Tcl_Channel (*tcl_GetChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * chanName, int * modePtr)); /* 151 */ + int (*tcl_GetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan)); /* 152 */ + int (*tcl_GetChannelHandle) _ANSI_ARGS_((Tcl_Channel chan, int direction, ClientData * handlePtr)); /* 153 */ + ClientData (*tcl_GetChannelInstanceData) _ANSI_ARGS_((Tcl_Channel chan)); /* 154 */ + int (*tcl_GetChannelMode) _ANSI_ARGS_((Tcl_Channel chan)); /* 155 */ + CONST84_RETURN char * (*tcl_GetChannelName) _ANSI_ARGS_((Tcl_Channel chan)); /* 156 */ + int (*tcl_GetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, Tcl_DString * dsPtr)); /* 157 */ + Tcl_ChannelType * (*tcl_GetChannelType) _ANSI_ARGS_((Tcl_Channel chan)); /* 158 */ + int (*tcl_GetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdInfo * infoPtr)); /* 159 */ + CONST84_RETURN char * (*tcl_GetCommandName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 160 */ + int (*tcl_GetErrno) _ANSI_ARGS_((void)); /* 161 */ + CONST84_RETURN char * (*tcl_GetHostName) _ANSI_ARGS_((void)); /* 162 */ + int (*tcl_GetInterpPath) _ANSI_ARGS_((Tcl_Interp * askInterp, Tcl_Interp * slaveInterp)); /* 163 */ + Tcl_Interp * (*tcl_GetMaster) _ANSI_ARGS_((Tcl_Interp * interp)); /* 164 */ + CONST char * (*tcl_GetNameOfExecutable) _ANSI_ARGS_((void)); /* 165 */ + Tcl_Obj * (*tcl_GetObjResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 166 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tcl_GetOpenFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int forWriting, int checkUsage, ClientData * filePtr)); /* 167 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved167; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved167; +#endif /* MAC_TCL */ + Tcl_PathType (*tcl_GetPathType) _ANSI_ARGS_((CONST char * path)); /* 168 */ + int (*tcl_Gets) _ANSI_ARGS_((Tcl_Channel chan, Tcl_DString * dsPtr)); /* 169 */ + int (*tcl_GetsObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 170 */ + int (*tcl_GetServiceMode) _ANSI_ARGS_((void)); /* 171 */ + Tcl_Interp * (*tcl_GetSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName)); /* 172 */ + Tcl_Channel (*tcl_GetStdChannel) _ANSI_ARGS_((int type)); /* 173 */ + CONST84_RETURN char * (*tcl_GetStringResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 174 */ + CONST84_RETURN char * (*tcl_GetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 175 */ + CONST84_RETURN char * (*tcl_GetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 176 */ + int (*tcl_GlobalEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command)); /* 177 */ + int (*tcl_GlobalEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 178 */ + int (*tcl_HideCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST char * hiddenCmdToken)); /* 179 */ + int (*tcl_Init) _ANSI_ARGS_((Tcl_Interp * interp)); /* 180 */ + void (*tcl_InitHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType)); /* 181 */ + int (*tcl_InputBlocked) _ANSI_ARGS_((Tcl_Channel chan)); /* 182 */ + int (*tcl_InputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 183 */ + int (*tcl_InterpDeleted) _ANSI_ARGS_((Tcl_Interp * interp)); /* 184 */ + int (*tcl_IsSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 185 */ + char * (*tcl_JoinPath) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv, Tcl_DString * resultPtr)); /* 186 */ + int (*tcl_LinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, char * addr, int type)); /* 187 */ + void *reserved188; + Tcl_Channel (*tcl_MakeFileChannel) _ANSI_ARGS_((ClientData handle, int mode)); /* 189 */ + int (*tcl_MakeSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 190 */ + Tcl_Channel (*tcl_MakeTcpClientChannel) _ANSI_ARGS_((ClientData tcpSocket)); /* 191 */ + char * (*tcl_Merge) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 192 */ + Tcl_HashEntry * (*tcl_NextHashEntry) _ANSI_ARGS_((Tcl_HashSearch * searchPtr)); /* 193 */ + void (*tcl_NotifyChannel) _ANSI_ARGS_((Tcl_Channel channel, int mask)); /* 194 */ + Tcl_Obj * (*tcl_ObjGetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, int flags)); /* 195 */ + Tcl_Obj * (*tcl_ObjSetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, Tcl_Obj * newValuePtr, int flags)); /* 196 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved197; +#endif /* MAC_TCL */ + Tcl_Channel (*tcl_OpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName, CONST char * modeString, int permissions)); /* 198 */ + Tcl_Channel (*tcl_OpenTcpClient) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * address, CONST char * myaddr, int myport, int async)); /* 199 */ + Tcl_Channel (*tcl_OpenTcpServer) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * host, Tcl_TcpAcceptProc * acceptProc, ClientData callbackData)); /* 200 */ + void (*tcl_Preserve) _ANSI_ARGS_((ClientData data)); /* 201 */ + void (*tcl_PrintDouble) _ANSI_ARGS_((Tcl_Interp * interp, double value, char * dst)); /* 202 */ + int (*tcl_PutEnv) _ANSI_ARGS_((CONST char * string)); /* 203 */ + CONST84_RETURN char * (*tcl_PosixError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 204 */ + void (*tcl_QueueEvent) _ANSI_ARGS_((Tcl_Event * evPtr, Tcl_QueuePosition position)); /* 205 */ + int (*tcl_Read) _ANSI_ARGS_((Tcl_Channel chan, char * bufPtr, int toRead)); /* 206 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved207; +#endif /* MAC_TCL */ + int (*tcl_RecordAndEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmd, int flags)); /* 208 */ + int (*tcl_RecordAndEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * cmdPtr, int flags)); /* 209 */ + void (*tcl_RegisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 210 */ + void (*tcl_RegisterObjType) _ANSI_ARGS_((Tcl_ObjType * typePtr)); /* 211 */ + Tcl_RegExp (*tcl_RegExpCompile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 212 */ + int (*tcl_RegExpExec) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, CONST char * str, CONST char * start)); /* 213 */ + int (*tcl_RegExpMatch) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST char * pattern)); /* 214 */ + void (*tcl_RegExpRange) _ANSI_ARGS_((Tcl_RegExp regexp, int index, CONST84 char ** startPtr, CONST84 char ** endPtr)); /* 215 */ + void (*tcl_Release) _ANSI_ARGS_((ClientData clientData)); /* 216 */ + void (*tcl_ResetResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 217 */ + int (*tcl_ScanElement) _ANSI_ARGS_((CONST char * str, int * flagPtr)); /* 218 */ + int (*tcl_ScanCountedElement) _ANSI_ARGS_((CONST char * str, int length, int * flagPtr)); /* 219 */ + int (*tcl_SeekOld) _ANSI_ARGS_((Tcl_Channel chan, int offset, int mode)); /* 220 */ + int (*tcl_ServiceAll) _ANSI_ARGS_((void)); /* 221 */ + int (*tcl_ServiceEvent) _ANSI_ARGS_((int flags)); /* 222 */ + void (*tcl_SetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 223 */ + void (*tcl_SetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan, int sz)); /* 224 */ + int (*tcl_SetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, CONST char * newValue)); /* 225 */ + int (*tcl_SetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST Tcl_CmdInfo * infoPtr)); /* 226 */ + void (*tcl_SetErrno) _ANSI_ARGS_((int err)); /* 227 */ + void (*tcl_SetErrorCode) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 228 */ + void (*tcl_SetMaxBlockTime) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 229 */ + void (*tcl_SetPanicProc) _ANSI_ARGS_((Tcl_PanicProc * panicProc)); /* 230 */ + int (*tcl_SetRecursionLimit) _ANSI_ARGS_((Tcl_Interp * interp, int depth)); /* 231 */ + void (*tcl_SetResult) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tcl_FreeProc * freeProc)); /* 232 */ + int (*tcl_SetServiceMode) _ANSI_ARGS_((int mode)); /* 233 */ + void (*tcl_SetObjErrorCode) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * errorObjPtr)); /* 234 */ + void (*tcl_SetObjResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * resultObjPtr)); /* 235 */ + void (*tcl_SetStdChannel) _ANSI_ARGS_((Tcl_Channel channel, int type)); /* 236 */ + CONST84_RETURN char * (*tcl_SetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, CONST char * newValue, int flags)); /* 237 */ + CONST84_RETURN char * (*tcl_SetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, CONST char * newValue, int flags)); /* 238 */ + CONST84_RETURN char * (*tcl_SignalId) _ANSI_ARGS_((int sig)); /* 239 */ + CONST84_RETURN char * (*tcl_SignalMsg) _ANSI_ARGS_((int sig)); /* 240 */ + void (*tcl_SourceRCFile) _ANSI_ARGS_((Tcl_Interp * interp)); /* 241 */ + int (*tcl_SplitList) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int * argcPtr, CONST84 char *** argvPtr)); /* 242 */ + void (*tcl_SplitPath) _ANSI_ARGS_((CONST char * path, int * argcPtr, CONST84 char *** argvPtr)); /* 243 */ + void (*tcl_StaticPackage) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pkgName, Tcl_PackageInitProc * initProc, Tcl_PackageInitProc * safeInitProc)); /* 244 */ + int (*tcl_StringMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern)); /* 245 */ + int (*tcl_TellOld) _ANSI_ARGS_((Tcl_Channel chan)); /* 246 */ + int (*tcl_TraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 247 */ + int (*tcl_TraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 248 */ + char * (*tcl_TranslateFileName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_DString * bufferPtr)); /* 249 */ + int (*tcl_Ungets) _ANSI_ARGS_((Tcl_Channel chan, CONST char * str, int len, int atHead)); /* 250 */ + void (*tcl_UnlinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 251 */ + int (*tcl_UnregisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 252 */ + int (*tcl_UnsetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 253 */ + int (*tcl_UnsetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 254 */ + void (*tcl_UntraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 255 */ + void (*tcl_UntraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 256 */ + void (*tcl_UpdateLinkedVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 257 */ + int (*tcl_UpVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * varName, CONST char * localName, int flags)); /* 258 */ + int (*tcl_UpVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * part1, CONST char * part2, CONST char * localName, int flags)); /* 259 */ + int (*tcl_VarEval) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 260 */ + ClientData (*tcl_VarTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 261 */ + ClientData (*tcl_VarTraceInfo2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 262 */ + int (*tcl_Write) _ANSI_ARGS_((Tcl_Channel chan, CONST char * s, int slen)); /* 263 */ + void (*tcl_WrongNumArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], CONST char * message)); /* 264 */ + int (*tcl_DumpActiveMemory) _ANSI_ARGS_((CONST char * fileName)); /* 265 */ + void (*tcl_ValidateAllMemory) _ANSI_ARGS_((CONST char * file, int line)); /* 266 */ + void (*tcl_AppendResultVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 267 */ + void (*tcl_AppendStringsToObjVA) _ANSI_ARGS_((Tcl_Obj * objPtr, va_list argList)); /* 268 */ + CONST84_RETURN char * (*tcl_HashStats) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 269 */ + CONST84_RETURN char * (*tcl_ParseVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST84 char ** termPtr)); /* 270 */ + CONST84_RETURN char * (*tcl_PkgPresent) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 271 */ + CONST84_RETURN char * (*tcl_PkgPresentEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 272 */ + int (*tcl_PkgProvide) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version)); /* 273 */ + CONST84_RETURN char * (*tcl_PkgRequire) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 274 */ + void (*tcl_SetErrorCodeVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 275 */ + int (*tcl_VarEvalVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 276 */ + Tcl_Pid (*tcl_WaitPid) _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, int options)); /* 277 */ + void (*tcl_PanicVA) _ANSI_ARGS_((CONST char * format, va_list argList)); /* 278 */ + void (*tcl_GetVersion) _ANSI_ARGS_((int * major, int * minor, int * patchLevel, int * type)); /* 279 */ + void (*tcl_InitMemory) _ANSI_ARGS_((Tcl_Interp * interp)); /* 280 */ + Tcl_Channel (*tcl_StackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_ChannelType * typePtr, ClientData instanceData, int mask, Tcl_Channel prevChan)); /* 281 */ + int (*tcl_UnstackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 282 */ + Tcl_Channel (*tcl_GetStackedChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 283 */ + void (*tcl_SetMainLoop) _ANSI_ARGS_((Tcl_MainLoopProc * proc)); /* 284 */ + void *reserved285; + void (*tcl_AppendObjToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_Obj * appendObjPtr)); /* 286 */ + Tcl_Encoding (*tcl_CreateEncoding) _ANSI_ARGS_((Tcl_EncodingType * typePtr)); /* 287 */ + void (*tcl_CreateThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 288 */ + void (*tcl_DeleteThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 289 */ + void (*tcl_DiscardResult) _ANSI_ARGS_((Tcl_SavedResult * statePtr)); /* 290 */ + int (*tcl_EvalEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, int numBytes, int flags)); /* 291 */ + int (*tcl_EvalObjv) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 292 */ + int (*tcl_EvalObjEx) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 293 */ + void (*tcl_ExitThread) _ANSI_ARGS_((int status)); /* 294 */ + int (*tcl_ExternalToUtf) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 295 */ + char * (*tcl_ExternalToUtfDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 296 */ + void (*tcl_FinalizeThread) _ANSI_ARGS_((void)); /* 297 */ + void (*tcl_FinalizeNotifier) _ANSI_ARGS_((ClientData clientData)); /* 298 */ + void (*tcl_FreeEncoding) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 299 */ + Tcl_ThreadId (*tcl_GetCurrentThread) _ANSI_ARGS_((void)); /* 300 */ + Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */ + CONST84_RETURN char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */ + void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */ + int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST VOID * tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */ + VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */ + Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 306 */ + ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */ + void (*tcl_MutexLock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 308 */ + void (*tcl_MutexUnlock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 309 */ + void (*tcl_ConditionNotify) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 310 */ + void (*tcl_ConditionWait) _ANSI_ARGS_((Tcl_Condition * condPtr, Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); /* 311 */ + int (*tcl_NumUtfChars) _ANSI_ARGS_((CONST char * src, int len)); /* 312 */ + int (*tcl_ReadChars) _ANSI_ARGS_((Tcl_Channel channel, Tcl_Obj * objPtr, int charsToRead, int appendFlag)); /* 313 */ + void (*tcl_RestoreResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 314 */ + void (*tcl_SaveResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 315 */ + int (*tcl_SetSystemEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 316 */ + Tcl_Obj * (*tcl_SetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, Tcl_Obj * newValuePtr, int flags)); /* 317 */ + void (*tcl_ThreadAlert) _ANSI_ARGS_((Tcl_ThreadId threadId)); /* 318 */ + void (*tcl_ThreadQueueEvent) _ANSI_ARGS_((Tcl_ThreadId threadId, Tcl_Event* evPtr, Tcl_QueuePosition position)); /* 319 */ + Tcl_UniChar (*tcl_UniCharAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 320 */ + Tcl_UniChar (*tcl_UniCharToLower) _ANSI_ARGS_((int ch)); /* 321 */ + Tcl_UniChar (*tcl_UniCharToTitle) _ANSI_ARGS_((int ch)); /* 322 */ + Tcl_UniChar (*tcl_UniCharToUpper) _ANSI_ARGS_((int ch)); /* 323 */ + int (*tcl_UniCharToUtf) _ANSI_ARGS_((int ch, char * buf)); /* 324 */ + CONST84_RETURN char * (*tcl_UtfAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 325 */ + int (*tcl_UtfCharComplete) _ANSI_ARGS_((CONST char * src, int len)); /* 326 */ + int (*tcl_UtfBackslash) _ANSI_ARGS_((CONST char * src, int * readPtr, char * dst)); /* 327 */ + CONST84_RETURN char * (*tcl_UtfFindFirst) _ANSI_ARGS_((CONST char * src, int ch)); /* 328 */ + CONST84_RETURN char * (*tcl_UtfFindLast) _ANSI_ARGS_((CONST char * src, int ch)); /* 329 */ + CONST84_RETURN char * (*tcl_UtfNext) _ANSI_ARGS_((CONST char * src)); /* 330 */ + CONST84_RETURN char * (*tcl_UtfPrev) _ANSI_ARGS_((CONST char * src, CONST char * start)); /* 331 */ + int (*tcl_UtfToExternal) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 332 */ + char * (*tcl_UtfToExternalDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 333 */ + int (*tcl_UtfToLower) _ANSI_ARGS_((char * src)); /* 334 */ + int (*tcl_UtfToTitle) _ANSI_ARGS_((char * src)); /* 335 */ + int (*tcl_UtfToUniChar) _ANSI_ARGS_((CONST char * src, Tcl_UniChar * chPtr)); /* 336 */ + int (*tcl_UtfToUpper) _ANSI_ARGS_((char * src)); /* 337 */ + int (*tcl_WriteChars) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 338 */ + int (*tcl_WriteObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 339 */ + char * (*tcl_GetString) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 340 */ + CONST84_RETURN char * (*tcl_GetDefaultEncodingDir) _ANSI_ARGS_((void)); /* 341 */ + void (*tcl_SetDefaultEncodingDir) _ANSI_ARGS_((CONST char * path)); /* 342 */ + void (*tcl_AlertNotifier) _ANSI_ARGS_((ClientData clientData)); /* 343 */ + void (*tcl_ServiceModeHook) _ANSI_ARGS_((int mode)); /* 344 */ + int (*tcl_UniCharIsAlnum) _ANSI_ARGS_((int ch)); /* 345 */ + int (*tcl_UniCharIsAlpha) _ANSI_ARGS_((int ch)); /* 346 */ + int (*tcl_UniCharIsDigit) _ANSI_ARGS_((int ch)); /* 347 */ + int (*tcl_UniCharIsLower) _ANSI_ARGS_((int ch)); /* 348 */ + int (*tcl_UniCharIsSpace) _ANSI_ARGS_((int ch)); /* 349 */ + int (*tcl_UniCharIsUpper) _ANSI_ARGS_((int ch)); /* 350 */ + int (*tcl_UniCharIsWordChar) _ANSI_ARGS_((int ch)); /* 351 */ + int (*tcl_UniCharLen) _ANSI_ARGS_((CONST Tcl_UniChar * str)); /* 352 */ + int (*tcl_UniCharNcmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 353 */ + char * (*tcl_UniCharToUtfDString) _ANSI_ARGS_((CONST Tcl_UniChar * string, int numChars, Tcl_DString * dsPtr)); /* 354 */ + Tcl_UniChar * (*tcl_UtfToUniCharDString) _ANSI_ARGS_((CONST char * string, int length, Tcl_DString * dsPtr)); /* 355 */ + Tcl_RegExp (*tcl_GetRegExpFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * patObj, int flags)); /* 356 */ + Tcl_Obj * (*tcl_EvalTokens) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 357 */ + void (*tcl_FreeParse) _ANSI_ARGS_((Tcl_Parse * parsePtr)); /* 358 */ + void (*tcl_LogCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, CONST char * command, int length)); /* 359 */ + int (*tcl_ParseBraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 360 */ + int (*tcl_ParseCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, int nested, Tcl_Parse * parsePtr)); /* 361 */ + int (*tcl_ParseExpr) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr)); /* 362 */ + int (*tcl_ParseQuotedString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 363 */ + int (*tcl_ParseVarName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append)); /* 364 */ + char * (*tcl_GetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 365 */ + int (*tcl_Chdir) _ANSI_ARGS_((CONST char * dirName)); /* 366 */ + int (*tcl_Access) _ANSI_ARGS_((CONST char * path, int mode)); /* 367 */ + int (*tcl_Stat) _ANSI_ARGS_((CONST char * path, struct stat * bufPtr)); /* 368 */ + int (*tcl_UtfNcmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 369 */ + int (*tcl_UtfNcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 370 */ + int (*tcl_StringCaseMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern, int nocase)); /* 371 */ + int (*tcl_UniCharIsControl) _ANSI_ARGS_((int ch)); /* 372 */ + int (*tcl_UniCharIsGraph) _ANSI_ARGS_((int ch)); /* 373 */ + int (*tcl_UniCharIsPrint) _ANSI_ARGS_((int ch)); /* 374 */ + int (*tcl_UniCharIsPunct) _ANSI_ARGS_((int ch)); /* 375 */ + int (*tcl_RegExpExecObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, Tcl_Obj * objPtr, int offset, int nmatches, int flags)); /* 376 */ + void (*tcl_RegExpGetInfo) _ANSI_ARGS_((Tcl_RegExp regexp, Tcl_RegExpInfo * infoPtr)); /* 377 */ + Tcl_Obj * (*tcl_NewUnicodeObj) _ANSI_ARGS_((CONST Tcl_UniChar * unicode, int numChars)); /* 378 */ + void (*tcl_SetUnicodeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int numChars)); /* 379 */ + int (*tcl_GetCharLength) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 380 */ + Tcl_UniChar (*tcl_GetUniChar) _ANSI_ARGS_((Tcl_Obj * objPtr, int index)); /* 381 */ + Tcl_UniChar * (*tcl_GetUnicode) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 382 */ + Tcl_Obj * (*tcl_GetRange) _ANSI_ARGS_((Tcl_Obj * objPtr, int first, int last)); /* 383 */ + void (*tcl_AppendUnicodeToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int length)); /* 384 */ + int (*tcl_RegExpMatchObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * stringObj, Tcl_Obj * patternObj)); /* 385 */ + void (*tcl_SetNotifier) _ANSI_ARGS_((Tcl_NotifierProcs * notifierProcPtr)); /* 386 */ + Tcl_Mutex * (*tcl_GetAllocMutex) _ANSI_ARGS_((void)); /* 387 */ + int (*tcl_GetChannelNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 388 */ + int (*tcl_GetChannelNamesEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 389 */ + int (*tcl_ProcObjCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 390 */ + void (*tcl_ConditionFinalize) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 391 */ + void (*tcl_MutexFinalize) _ANSI_ARGS_((Tcl_Mutex * mutex)); /* 392 */ + int (*tcl_CreateThread) _ANSI_ARGS_((Tcl_ThreadId * idPtr, Tcl_ThreadCreateProc proc, ClientData clientData, int stackSize, int flags)); /* 393 */ + int (*tcl_ReadRaw) _ANSI_ARGS_((Tcl_Channel chan, char * dst, int bytesToRead)); /* 394 */ + int (*tcl_WriteRaw) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 395 */ + Tcl_Channel (*tcl_GetTopChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 396 */ + int (*tcl_ChannelBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 397 */ + CONST84_RETURN char * (*tcl_ChannelName) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 398 */ + Tcl_ChannelTypeVersion (*tcl_ChannelVersion) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 399 */ + Tcl_DriverBlockModeProc * (*tcl_ChannelBlockModeProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 400 */ + Tcl_DriverCloseProc * (*tcl_ChannelCloseProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 401 */ + Tcl_DriverClose2Proc * (*tcl_ChannelClose2Proc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 402 */ + Tcl_DriverInputProc * (*tcl_ChannelInputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 403 */ + Tcl_DriverOutputProc * (*tcl_ChannelOutputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 404 */ + Tcl_DriverSeekProc * (*tcl_ChannelSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 405 */ + Tcl_DriverSetOptionProc * (*tcl_ChannelSetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 406 */ + Tcl_DriverGetOptionProc * (*tcl_ChannelGetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 407 */ + Tcl_DriverWatchProc * (*tcl_ChannelWatchProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 408 */ + Tcl_DriverGetHandleProc * (*tcl_ChannelGetHandleProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 409 */ + Tcl_DriverFlushProc * (*tcl_ChannelFlushProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 410 */ + Tcl_DriverHandlerProc * (*tcl_ChannelHandlerProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 411 */ + int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 412 */ + int (*tcl_IsChannelShared) _ANSI_ARGS_((Tcl_Channel channel)); /* 413 */ + int (*tcl_IsChannelRegistered) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 414 */ + void (*tcl_CutChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 415 */ + void (*tcl_SpliceChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 416 */ + void (*tcl_ClearChannelHandlers) _ANSI_ARGS_((Tcl_Channel channel)); /* 417 */ + int (*tcl_IsChannelExisting) _ANSI_ARGS_((CONST char* channelName)); /* 418 */ + int (*tcl_UniCharNcasecmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 419 */ + int (*tcl_UniCharCaseMatch) _ANSI_ARGS_((CONST Tcl_UniChar * ustr, CONST Tcl_UniChar * pattern, int nocase)); /* 420 */ + Tcl_HashEntry * (*tcl_FindHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key)); /* 421 */ + Tcl_HashEntry * (*tcl_CreateHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key, int * newPtr)); /* 422 */ + void (*tcl_InitCustomHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType, Tcl_HashKeyType * typePtr)); /* 423 */ + void (*tcl_InitObjHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 424 */ + ClientData (*tcl_CommandTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * procPtr, ClientData prevClientData)); /* 425 */ + int (*tcl_TraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 426 */ + void (*tcl_UntraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 427 */ + char * (*tcl_AttemptAlloc) _ANSI_ARGS_((unsigned int size)); /* 428 */ + char * (*tcl_AttemptDbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 429 */ + char * (*tcl_AttemptRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 430 */ + char * (*tcl_AttemptDbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 431 */ + int (*tcl_AttemptSetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 432 */ + Tcl_ThreadId (*tcl_GetChannelThread) _ANSI_ARGS_((Tcl_Channel channel)); /* 433 */ + Tcl_UniChar * (*tcl_GetUnicodeFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 434 */ + int (*tcl_GetMathFuncInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int * numArgsPtr, Tcl_ValueType ** argTypesPtr, Tcl_MathProc ** procPtr, ClientData * clientDataPtr)); /* 435 */ + Tcl_Obj * (*tcl_ListMathFuncs) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 436 */ + Tcl_Obj * (*tcl_SubstObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 437 */ + int (*tcl_DetachChannel) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 438 */ + int (*tcl_IsStandardChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 439 */ + int (*tcl_FSCopyFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 440 */ + int (*tcl_FSCopyDirectory) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, Tcl_Obj ** errorPtr)); /* 441 */ + int (*tcl_FSCreateDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 442 */ + int (*tcl_FSDeleteFile) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 443 */ + int (*tcl_FSLoadFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * sym1, CONST char * sym2, Tcl_PackageInitProc ** proc1Ptr, Tcl_PackageInitProc ** proc2Ptr, Tcl_LoadHandle * handlePtr, Tcl_FSUnloadFileProc ** unloadProcPtr)); /* 444 */ + int (*tcl_FSMatchInDirectory) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * result, Tcl_Obj * pathPtr, CONST char * pattern, Tcl_GlobTypeData * types)); /* 445 */ + Tcl_Obj * (*tcl_FSLink) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj * toPtr, int linkAction)); /* 446 */ + int (*tcl_FSRemoveDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr, int recursive, Tcl_Obj ** errorPtr)); /* 447 */ + int (*tcl_FSRenameFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 448 */ + int (*tcl_FSLstat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 449 */ + int (*tcl_FSUtime) _ANSI_ARGS_((Tcl_Obj * pathPtr, struct utimbuf * tval)); /* 450 */ + int (*tcl_FSFileAttrsGet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 451 */ + int (*tcl_FSFileAttrsSet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj * objPtr)); /* 452 */ + CONST char ** (*tcl_FSFileAttrStrings) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 453 */ + int (*tcl_FSStat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 454 */ + int (*tcl_FSAccess) _ANSI_ARGS_((Tcl_Obj * pathPtr, int mode)); /* 455 */ + Tcl_Channel (*tcl_FSOpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * modeString, int permissions)); /* 456 */ + Tcl_Obj* (*tcl_FSGetCwd) _ANSI_ARGS_((Tcl_Interp * interp)); /* 457 */ + int (*tcl_FSChdir) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 458 */ + int (*tcl_FSConvertToPathType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr)); /* 459 */ + Tcl_Obj* (*tcl_FSJoinPath) _ANSI_ARGS_((Tcl_Obj * listObj, int elements)); /* 460 */ + Tcl_Obj* (*tcl_FSSplitPath) _ANSI_ARGS_((Tcl_Obj* pathPtr, int * lenPtr)); /* 461 */ + int (*tcl_FSEqualPaths) _ANSI_ARGS_((Tcl_Obj* firstPtr, Tcl_Obj* secondPtr)); /* 462 */ + Tcl_Obj* (*tcl_FSGetNormalizedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); /* 463 */ + Tcl_Obj* (*tcl_FSJoinToPath) _ANSI_ARGS_((Tcl_Obj * basePtr, int objc, Tcl_Obj *CONST objv[])); /* 464 */ + ClientData (*tcl_FSGetInternalRep) _ANSI_ARGS_((Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); /* 465 */ + Tcl_Obj* (*tcl_FSGetTranslatedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 466 */ + int (*tcl_FSEvalFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * fileName)); /* 467 */ + Tcl_Obj* (*tcl_FSNewNativePath) _ANSI_ARGS_((Tcl_Filesystem* fromFilesystem, ClientData clientData)); /* 468 */ + CONST char* (*tcl_FSGetNativePath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 469 */ + Tcl_Obj* (*tcl_FSFileSystemInfo) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 470 */ + Tcl_Obj* (*tcl_FSPathSeparator) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 471 */ + Tcl_Obj* (*tcl_FSListVolumes) _ANSI_ARGS_((void)); /* 472 */ + int (*tcl_FSRegister) _ANSI_ARGS_((ClientData clientData, Tcl_Filesystem * fsPtr)); /* 473 */ + int (*tcl_FSUnregister) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 474 */ + ClientData (*tcl_FSData) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 475 */ + CONST char* (*tcl_FSGetTranslatedStringPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 476 */ + Tcl_Filesystem* (*tcl_FSGetFileSystemForPath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 477 */ + Tcl_PathType (*tcl_FSGetPathType) _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); /* 478 */ + int (*tcl_OutputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 479 */ + void (*tcl_FSMountsChanged) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 480 */ + int (*tcl_EvalTokensStandard) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 481 */ + void (*tcl_GetTime) _ANSI_ARGS_((Tcl_Time* timeBuf)); /* 482 */ + Tcl_Trace (*tcl_CreateObjTrace) _ANSI_ARGS_((Tcl_Interp* interp, int level, int flags, Tcl_CmdObjTraceProc* objProc, ClientData clientData, Tcl_CmdObjTraceDeleteProc* delProc)); /* 483 */ + int (*tcl_GetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, Tcl_CmdInfo* infoPtr)); /* 484 */ + int (*tcl_SetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, CONST Tcl_CmdInfo* infoPtr)); /* 485 */ + Tcl_Obj * (*tcl_DbNewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue, CONST char * file, int line)); /* 486 */ + int (*tcl_GetWideIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_WideInt * widePtr)); /* 487 */ + Tcl_Obj * (*tcl_NewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue)); /* 488 */ + void (*tcl_SetWideIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_WideInt wideValue)); /* 489 */ + Tcl_StatBuf * (*tcl_AllocStatBuf) _ANSI_ARGS_((void)); /* 490 */ + Tcl_WideInt (*tcl_Seek) _ANSI_ARGS_((Tcl_Channel chan, Tcl_WideInt offset, int mode)); /* 491 */ + Tcl_WideInt (*tcl_Tell) _ANSI_ARGS_((Tcl_Channel chan)); /* 492 */ + Tcl_DriverWideSeekProc * (*tcl_ChannelWideSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 493 */ +} TclStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclStubs *tclStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#ifndef Tcl_PkgProvideEx +#define Tcl_PkgProvideEx \ + (tclStubsPtr->tcl_PkgProvideEx) /* 0 */ +#endif +#ifndef Tcl_PkgRequireEx +#define Tcl_PkgRequireEx \ + (tclStubsPtr->tcl_PkgRequireEx) /* 1 */ +#endif +#ifndef Tcl_Panic +#define Tcl_Panic \ + (tclStubsPtr->tcl_Panic) /* 2 */ +#endif +#ifndef Tcl_Alloc +#define Tcl_Alloc \ + (tclStubsPtr->tcl_Alloc) /* 3 */ +#endif +#ifndef Tcl_Free +#define Tcl_Free \ + (tclStubsPtr->tcl_Free) /* 4 */ +#endif +#ifndef Tcl_Realloc +#define Tcl_Realloc \ + (tclStubsPtr->tcl_Realloc) /* 5 */ +#endif +#ifndef Tcl_DbCkalloc +#define Tcl_DbCkalloc \ + (tclStubsPtr->tcl_DbCkalloc) /* 6 */ +#endif +#ifndef Tcl_DbCkfree +#define Tcl_DbCkfree \ + (tclStubsPtr->tcl_DbCkfree) /* 7 */ +#endif +#ifndef Tcl_DbCkrealloc +#define Tcl_DbCkrealloc \ + (tclStubsPtr->tcl_DbCkrealloc) /* 8 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_CreateFileHandler +#define Tcl_CreateFileHandler \ + (tclStubsPtr->tcl_CreateFileHandler) /* 9 */ +#endif +#endif /* UNIX */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_DeleteFileHandler +#define Tcl_DeleteFileHandler \ + (tclStubsPtr->tcl_DeleteFileHandler) /* 10 */ +#endif +#endif /* UNIX */ +#ifndef Tcl_SetTimer +#define Tcl_SetTimer \ + (tclStubsPtr->tcl_SetTimer) /* 11 */ +#endif +#ifndef Tcl_Sleep +#define Tcl_Sleep \ + (tclStubsPtr->tcl_Sleep) /* 12 */ +#endif +#ifndef Tcl_WaitForEvent +#define Tcl_WaitForEvent \ + (tclStubsPtr->tcl_WaitForEvent) /* 13 */ +#endif +#ifndef Tcl_AppendAllObjTypes +#define Tcl_AppendAllObjTypes \ + (tclStubsPtr->tcl_AppendAllObjTypes) /* 14 */ +#endif +#ifndef Tcl_AppendStringsToObj +#define Tcl_AppendStringsToObj \ + (tclStubsPtr->tcl_AppendStringsToObj) /* 15 */ +#endif +#ifndef Tcl_AppendToObj +#define Tcl_AppendToObj \ + (tclStubsPtr->tcl_AppendToObj) /* 16 */ +#endif +#ifndef Tcl_ConcatObj +#define Tcl_ConcatObj \ + (tclStubsPtr->tcl_ConcatObj) /* 17 */ +#endif +#ifndef Tcl_ConvertToType +#define Tcl_ConvertToType \ + (tclStubsPtr->tcl_ConvertToType) /* 18 */ +#endif +#ifndef Tcl_DbDecrRefCount +#define Tcl_DbDecrRefCount \ + (tclStubsPtr->tcl_DbDecrRefCount) /* 19 */ +#endif +#ifndef Tcl_DbIncrRefCount +#define Tcl_DbIncrRefCount \ + (tclStubsPtr->tcl_DbIncrRefCount) /* 20 */ +#endif +#ifndef Tcl_DbIsShared +#define Tcl_DbIsShared \ + (tclStubsPtr->tcl_DbIsShared) /* 21 */ +#endif +#ifndef Tcl_DbNewBooleanObj +#define Tcl_DbNewBooleanObj \ + (tclStubsPtr->tcl_DbNewBooleanObj) /* 22 */ +#endif +#ifndef Tcl_DbNewByteArrayObj +#define Tcl_DbNewByteArrayObj \ + (tclStubsPtr->tcl_DbNewByteArrayObj) /* 23 */ +#endif +#ifndef Tcl_DbNewDoubleObj +#define Tcl_DbNewDoubleObj \ + (tclStubsPtr->tcl_DbNewDoubleObj) /* 24 */ +#endif +#ifndef Tcl_DbNewListObj +#define Tcl_DbNewListObj \ + (tclStubsPtr->tcl_DbNewListObj) /* 25 */ +#endif +#ifndef Tcl_DbNewLongObj +#define Tcl_DbNewLongObj \ + (tclStubsPtr->tcl_DbNewLongObj) /* 26 */ +#endif +#ifndef Tcl_DbNewObj +#define Tcl_DbNewObj \ + (tclStubsPtr->tcl_DbNewObj) /* 27 */ +#endif +#ifndef Tcl_DbNewStringObj +#define Tcl_DbNewStringObj \ + (tclStubsPtr->tcl_DbNewStringObj) /* 28 */ +#endif +#ifndef Tcl_DuplicateObj +#define Tcl_DuplicateObj \ + (tclStubsPtr->tcl_DuplicateObj) /* 29 */ +#endif +#ifndef TclFreeObj +#define TclFreeObj \ + (tclStubsPtr->tclFreeObj) /* 30 */ +#endif +#ifndef Tcl_GetBoolean +#define Tcl_GetBoolean \ + (tclStubsPtr->tcl_GetBoolean) /* 31 */ +#endif +#ifndef Tcl_GetBooleanFromObj +#define Tcl_GetBooleanFromObj \ + (tclStubsPtr->tcl_GetBooleanFromObj) /* 32 */ +#endif +#ifndef Tcl_GetByteArrayFromObj +#define Tcl_GetByteArrayFromObj \ + (tclStubsPtr->tcl_GetByteArrayFromObj) /* 33 */ +#endif +#ifndef Tcl_GetDouble +#define Tcl_GetDouble \ + (tclStubsPtr->tcl_GetDouble) /* 34 */ +#endif +#ifndef Tcl_GetDoubleFromObj +#define Tcl_GetDoubleFromObj \ + (tclStubsPtr->tcl_GetDoubleFromObj) /* 35 */ +#endif +#ifndef Tcl_GetIndexFromObj +#define Tcl_GetIndexFromObj \ + (tclStubsPtr->tcl_GetIndexFromObj) /* 36 */ +#endif +#ifndef Tcl_GetInt +#define Tcl_GetInt \ + (tclStubsPtr->tcl_GetInt) /* 37 */ +#endif +#ifndef Tcl_GetIntFromObj +#define Tcl_GetIntFromObj \ + (tclStubsPtr->tcl_GetIntFromObj) /* 38 */ +#endif +#ifndef Tcl_GetLongFromObj +#define Tcl_GetLongFromObj \ + (tclStubsPtr->tcl_GetLongFromObj) /* 39 */ +#endif +#ifndef Tcl_GetObjType +#define Tcl_GetObjType \ + (tclStubsPtr->tcl_GetObjType) /* 40 */ +#endif +#ifndef Tcl_GetStringFromObj +#define Tcl_GetStringFromObj \ + (tclStubsPtr->tcl_GetStringFromObj) /* 41 */ +#endif +#ifndef Tcl_InvalidateStringRep +#define Tcl_InvalidateStringRep \ + (tclStubsPtr->tcl_InvalidateStringRep) /* 42 */ +#endif +#ifndef Tcl_ListObjAppendList +#define Tcl_ListObjAppendList \ + (tclStubsPtr->tcl_ListObjAppendList) /* 43 */ +#endif +#ifndef Tcl_ListObjAppendElement +#define Tcl_ListObjAppendElement \ + (tclStubsPtr->tcl_ListObjAppendElement) /* 44 */ +#endif +#ifndef Tcl_ListObjGetElements +#define Tcl_ListObjGetElements \ + (tclStubsPtr->tcl_ListObjGetElements) /* 45 */ +#endif +#ifndef Tcl_ListObjIndex +#define Tcl_ListObjIndex \ + (tclStubsPtr->tcl_ListObjIndex) /* 46 */ +#endif +#ifndef Tcl_ListObjLength +#define Tcl_ListObjLength \ + (tclStubsPtr->tcl_ListObjLength) /* 47 */ +#endif +#ifndef Tcl_ListObjReplace +#define Tcl_ListObjReplace \ + (tclStubsPtr->tcl_ListObjReplace) /* 48 */ +#endif +#ifndef Tcl_NewBooleanObj +#define Tcl_NewBooleanObj \ + (tclStubsPtr->tcl_NewBooleanObj) /* 49 */ +#endif +#ifndef Tcl_NewByteArrayObj +#define Tcl_NewByteArrayObj \ + (tclStubsPtr->tcl_NewByteArrayObj) /* 50 */ +#endif +#ifndef Tcl_NewDoubleObj +#define Tcl_NewDoubleObj \ + (tclStubsPtr->tcl_NewDoubleObj) /* 51 */ +#endif +#ifndef Tcl_NewIntObj +#define Tcl_NewIntObj \ + (tclStubsPtr->tcl_NewIntObj) /* 52 */ +#endif +#ifndef Tcl_NewListObj +#define Tcl_NewListObj \ + (tclStubsPtr->tcl_NewListObj) /* 53 */ +#endif +#ifndef Tcl_NewLongObj +#define Tcl_NewLongObj \ + (tclStubsPtr->tcl_NewLongObj) /* 54 */ +#endif +#ifndef Tcl_NewObj +#define Tcl_NewObj \ + (tclStubsPtr->tcl_NewObj) /* 55 */ +#endif +#ifndef Tcl_NewStringObj +#define Tcl_NewStringObj \ + (tclStubsPtr->tcl_NewStringObj) /* 56 */ +#endif +#ifndef Tcl_SetBooleanObj +#define Tcl_SetBooleanObj \ + (tclStubsPtr->tcl_SetBooleanObj) /* 57 */ +#endif +#ifndef Tcl_SetByteArrayLength +#define Tcl_SetByteArrayLength \ + (tclStubsPtr->tcl_SetByteArrayLength) /* 58 */ +#endif +#ifndef Tcl_SetByteArrayObj +#define Tcl_SetByteArrayObj \ + (tclStubsPtr->tcl_SetByteArrayObj) /* 59 */ +#endif +#ifndef Tcl_SetDoubleObj +#define Tcl_SetDoubleObj \ + (tclStubsPtr->tcl_SetDoubleObj) /* 60 */ +#endif +#ifndef Tcl_SetIntObj +#define Tcl_SetIntObj \ + (tclStubsPtr->tcl_SetIntObj) /* 61 */ +#endif +#ifndef Tcl_SetListObj +#define Tcl_SetListObj \ + (tclStubsPtr->tcl_SetListObj) /* 62 */ +#endif +#ifndef Tcl_SetLongObj +#define Tcl_SetLongObj \ + (tclStubsPtr->tcl_SetLongObj) /* 63 */ +#endif +#ifndef Tcl_SetObjLength +#define Tcl_SetObjLength \ + (tclStubsPtr->tcl_SetObjLength) /* 64 */ +#endif +#ifndef Tcl_SetStringObj +#define Tcl_SetStringObj \ + (tclStubsPtr->tcl_SetStringObj) /* 65 */ +#endif +#ifndef Tcl_AddErrorInfo +#define Tcl_AddErrorInfo \ + (tclStubsPtr->tcl_AddErrorInfo) /* 66 */ +#endif +#ifndef Tcl_AddObjErrorInfo +#define Tcl_AddObjErrorInfo \ + (tclStubsPtr->tcl_AddObjErrorInfo) /* 67 */ +#endif +#ifndef Tcl_AllowExceptions +#define Tcl_AllowExceptions \ + (tclStubsPtr->tcl_AllowExceptions) /* 68 */ +#endif +#ifndef Tcl_AppendElement +#define Tcl_AppendElement \ + (tclStubsPtr->tcl_AppendElement) /* 69 */ +#endif +#ifndef Tcl_AppendResult +#define Tcl_AppendResult \ + (tclStubsPtr->tcl_AppendResult) /* 70 */ +#endif +#ifndef Tcl_AsyncCreate +#define Tcl_AsyncCreate \ + (tclStubsPtr->tcl_AsyncCreate) /* 71 */ +#endif +#ifndef Tcl_AsyncDelete +#define Tcl_AsyncDelete \ + (tclStubsPtr->tcl_AsyncDelete) /* 72 */ +#endif +#ifndef Tcl_AsyncInvoke +#define Tcl_AsyncInvoke \ + (tclStubsPtr->tcl_AsyncInvoke) /* 73 */ +#endif +#ifndef Tcl_AsyncMark +#define Tcl_AsyncMark \ + (tclStubsPtr->tcl_AsyncMark) /* 74 */ +#endif +#ifndef Tcl_AsyncReady +#define Tcl_AsyncReady \ + (tclStubsPtr->tcl_AsyncReady) /* 75 */ +#endif +#ifndef Tcl_BackgroundError +#define Tcl_BackgroundError \ + (tclStubsPtr->tcl_BackgroundError) /* 76 */ +#endif +#ifndef Tcl_Backslash +#define Tcl_Backslash \ + (tclStubsPtr->tcl_Backslash) /* 77 */ +#endif +#ifndef Tcl_BadChannelOption +#define Tcl_BadChannelOption \ + (tclStubsPtr->tcl_BadChannelOption) /* 78 */ +#endif +#ifndef Tcl_CallWhenDeleted +#define Tcl_CallWhenDeleted \ + (tclStubsPtr->tcl_CallWhenDeleted) /* 79 */ +#endif +#ifndef Tcl_CancelIdleCall +#define Tcl_CancelIdleCall \ + (tclStubsPtr->tcl_CancelIdleCall) /* 80 */ +#endif +#ifndef Tcl_Close +#define Tcl_Close \ + (tclStubsPtr->tcl_Close) /* 81 */ +#endif +#ifndef Tcl_CommandComplete +#define Tcl_CommandComplete \ + (tclStubsPtr->tcl_CommandComplete) /* 82 */ +#endif +#ifndef Tcl_Concat +#define Tcl_Concat \ + (tclStubsPtr->tcl_Concat) /* 83 */ +#endif +#ifndef Tcl_ConvertElement +#define Tcl_ConvertElement \ + (tclStubsPtr->tcl_ConvertElement) /* 84 */ +#endif +#ifndef Tcl_ConvertCountedElement +#define Tcl_ConvertCountedElement \ + (tclStubsPtr->tcl_ConvertCountedElement) /* 85 */ +#endif +#ifndef Tcl_CreateAlias +#define Tcl_CreateAlias \ + (tclStubsPtr->tcl_CreateAlias) /* 86 */ +#endif +#ifndef Tcl_CreateAliasObj +#define Tcl_CreateAliasObj \ + (tclStubsPtr->tcl_CreateAliasObj) /* 87 */ +#endif +#ifndef Tcl_CreateChannel +#define Tcl_CreateChannel \ + (tclStubsPtr->tcl_CreateChannel) /* 88 */ +#endif +#ifndef Tcl_CreateChannelHandler +#define Tcl_CreateChannelHandler \ + (tclStubsPtr->tcl_CreateChannelHandler) /* 89 */ +#endif +#ifndef Tcl_CreateCloseHandler +#define Tcl_CreateCloseHandler \ + (tclStubsPtr->tcl_CreateCloseHandler) /* 90 */ +#endif +#ifndef Tcl_CreateCommand +#define Tcl_CreateCommand \ + (tclStubsPtr->tcl_CreateCommand) /* 91 */ +#endif +#ifndef Tcl_CreateEventSource +#define Tcl_CreateEventSource \ + (tclStubsPtr->tcl_CreateEventSource) /* 92 */ +#endif +#ifndef Tcl_CreateExitHandler +#define Tcl_CreateExitHandler \ + (tclStubsPtr->tcl_CreateExitHandler) /* 93 */ +#endif +#ifndef Tcl_CreateInterp +#define Tcl_CreateInterp \ + (tclStubsPtr->tcl_CreateInterp) /* 94 */ +#endif +#ifndef Tcl_CreateMathFunc +#define Tcl_CreateMathFunc \ + (tclStubsPtr->tcl_CreateMathFunc) /* 95 */ +#endif +#ifndef Tcl_CreateObjCommand +#define Tcl_CreateObjCommand \ + (tclStubsPtr->tcl_CreateObjCommand) /* 96 */ +#endif +#ifndef Tcl_CreateSlave +#define Tcl_CreateSlave \ + (tclStubsPtr->tcl_CreateSlave) /* 97 */ +#endif +#ifndef Tcl_CreateTimerHandler +#define Tcl_CreateTimerHandler \ + (tclStubsPtr->tcl_CreateTimerHandler) /* 98 */ +#endif +#ifndef Tcl_CreateTrace +#define Tcl_CreateTrace \ + (tclStubsPtr->tcl_CreateTrace) /* 99 */ +#endif +#ifndef Tcl_DeleteAssocData +#define Tcl_DeleteAssocData \ + (tclStubsPtr->tcl_DeleteAssocData) /* 100 */ +#endif +#ifndef Tcl_DeleteChannelHandler +#define Tcl_DeleteChannelHandler \ + (tclStubsPtr->tcl_DeleteChannelHandler) /* 101 */ +#endif +#ifndef Tcl_DeleteCloseHandler +#define Tcl_DeleteCloseHandler \ + (tclStubsPtr->tcl_DeleteCloseHandler) /* 102 */ +#endif +#ifndef Tcl_DeleteCommand +#define Tcl_DeleteCommand \ + (tclStubsPtr->tcl_DeleteCommand) /* 103 */ +#endif +#ifndef Tcl_DeleteCommandFromToken +#define Tcl_DeleteCommandFromToken \ + (tclStubsPtr->tcl_DeleteCommandFromToken) /* 104 */ +#endif +#ifndef Tcl_DeleteEvents +#define Tcl_DeleteEvents \ + (tclStubsPtr->tcl_DeleteEvents) /* 105 */ +#endif +#ifndef Tcl_DeleteEventSource +#define Tcl_DeleteEventSource \ + (tclStubsPtr->tcl_DeleteEventSource) /* 106 */ +#endif +#ifndef Tcl_DeleteExitHandler +#define Tcl_DeleteExitHandler \ + (tclStubsPtr->tcl_DeleteExitHandler) /* 107 */ +#endif +#ifndef Tcl_DeleteHashEntry +#define Tcl_DeleteHashEntry \ + (tclStubsPtr->tcl_DeleteHashEntry) /* 108 */ +#endif +#ifndef Tcl_DeleteHashTable +#define Tcl_DeleteHashTable \ + (tclStubsPtr->tcl_DeleteHashTable) /* 109 */ +#endif +#ifndef Tcl_DeleteInterp +#define Tcl_DeleteInterp \ + (tclStubsPtr->tcl_DeleteInterp) /* 110 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_DetachPids +#define Tcl_DetachPids \ + (tclStubsPtr->tcl_DetachPids) /* 111 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_DetachPids +#define Tcl_DetachPids \ + (tclStubsPtr->tcl_DetachPids) /* 111 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_DeleteTimerHandler +#define Tcl_DeleteTimerHandler \ + (tclStubsPtr->tcl_DeleteTimerHandler) /* 112 */ +#endif +#ifndef Tcl_DeleteTrace +#define Tcl_DeleteTrace \ + (tclStubsPtr->tcl_DeleteTrace) /* 113 */ +#endif +#ifndef Tcl_DontCallWhenDeleted +#define Tcl_DontCallWhenDeleted \ + (tclStubsPtr->tcl_DontCallWhenDeleted) /* 114 */ +#endif +#ifndef Tcl_DoOneEvent +#define Tcl_DoOneEvent \ + (tclStubsPtr->tcl_DoOneEvent) /* 115 */ +#endif +#ifndef Tcl_DoWhenIdle +#define Tcl_DoWhenIdle \ + (tclStubsPtr->tcl_DoWhenIdle) /* 116 */ +#endif +#ifndef Tcl_DStringAppend +#define Tcl_DStringAppend \ + (tclStubsPtr->tcl_DStringAppend) /* 117 */ +#endif +#ifndef Tcl_DStringAppendElement +#define Tcl_DStringAppendElement \ + (tclStubsPtr->tcl_DStringAppendElement) /* 118 */ +#endif +#ifndef Tcl_DStringEndSublist +#define Tcl_DStringEndSublist \ + (tclStubsPtr->tcl_DStringEndSublist) /* 119 */ +#endif +#ifndef Tcl_DStringFree +#define Tcl_DStringFree \ + (tclStubsPtr->tcl_DStringFree) /* 120 */ +#endif +#ifndef Tcl_DStringGetResult +#define Tcl_DStringGetResult \ + (tclStubsPtr->tcl_DStringGetResult) /* 121 */ +#endif +#ifndef Tcl_DStringInit +#define Tcl_DStringInit \ + (tclStubsPtr->tcl_DStringInit) /* 122 */ +#endif +#ifndef Tcl_DStringResult +#define Tcl_DStringResult \ + (tclStubsPtr->tcl_DStringResult) /* 123 */ +#endif +#ifndef Tcl_DStringSetLength +#define Tcl_DStringSetLength \ + (tclStubsPtr->tcl_DStringSetLength) /* 124 */ +#endif +#ifndef Tcl_DStringStartSublist +#define Tcl_DStringStartSublist \ + (tclStubsPtr->tcl_DStringStartSublist) /* 125 */ +#endif +#ifndef Tcl_Eof +#define Tcl_Eof \ + (tclStubsPtr->tcl_Eof) /* 126 */ +#endif +#ifndef Tcl_ErrnoId +#define Tcl_ErrnoId \ + (tclStubsPtr->tcl_ErrnoId) /* 127 */ +#endif +#ifndef Tcl_ErrnoMsg +#define Tcl_ErrnoMsg \ + (tclStubsPtr->tcl_ErrnoMsg) /* 128 */ +#endif +#ifndef Tcl_Eval +#define Tcl_Eval \ + (tclStubsPtr->tcl_Eval) /* 129 */ +#endif +#ifndef Tcl_EvalFile +#define Tcl_EvalFile \ + (tclStubsPtr->tcl_EvalFile) /* 130 */ +#endif +#ifndef Tcl_EvalObj +#define Tcl_EvalObj \ + (tclStubsPtr->tcl_EvalObj) /* 131 */ +#endif +#ifndef Tcl_EventuallyFree +#define Tcl_EventuallyFree \ + (tclStubsPtr->tcl_EventuallyFree) /* 132 */ +#endif +#ifndef Tcl_Exit +#define Tcl_Exit \ + (tclStubsPtr->tcl_Exit) /* 133 */ +#endif +#ifndef Tcl_ExposeCommand +#define Tcl_ExposeCommand \ + (tclStubsPtr->tcl_ExposeCommand) /* 134 */ +#endif +#ifndef Tcl_ExprBoolean +#define Tcl_ExprBoolean \ + (tclStubsPtr->tcl_ExprBoolean) /* 135 */ +#endif +#ifndef Tcl_ExprBooleanObj +#define Tcl_ExprBooleanObj \ + (tclStubsPtr->tcl_ExprBooleanObj) /* 136 */ +#endif +#ifndef Tcl_ExprDouble +#define Tcl_ExprDouble \ + (tclStubsPtr->tcl_ExprDouble) /* 137 */ +#endif +#ifndef Tcl_ExprDoubleObj +#define Tcl_ExprDoubleObj \ + (tclStubsPtr->tcl_ExprDoubleObj) /* 138 */ +#endif +#ifndef Tcl_ExprLong +#define Tcl_ExprLong \ + (tclStubsPtr->tcl_ExprLong) /* 139 */ +#endif +#ifndef Tcl_ExprLongObj +#define Tcl_ExprLongObj \ + (tclStubsPtr->tcl_ExprLongObj) /* 140 */ +#endif +#ifndef Tcl_ExprObj +#define Tcl_ExprObj \ + (tclStubsPtr->tcl_ExprObj) /* 141 */ +#endif +#ifndef Tcl_ExprString +#define Tcl_ExprString \ + (tclStubsPtr->tcl_ExprString) /* 142 */ +#endif +#ifndef Tcl_Finalize +#define Tcl_Finalize \ + (tclStubsPtr->tcl_Finalize) /* 143 */ +#endif +#ifndef Tcl_FindExecutable +#define Tcl_FindExecutable \ + (tclStubsPtr->tcl_FindExecutable) /* 144 */ +#endif +#ifndef Tcl_FirstHashEntry +#define Tcl_FirstHashEntry \ + (tclStubsPtr->tcl_FirstHashEntry) /* 145 */ +#endif +#ifndef Tcl_Flush +#define Tcl_Flush \ + (tclStubsPtr->tcl_Flush) /* 146 */ +#endif +#ifndef Tcl_FreeResult +#define Tcl_FreeResult \ + (tclStubsPtr->tcl_FreeResult) /* 147 */ +#endif +#ifndef Tcl_GetAlias +#define Tcl_GetAlias \ + (tclStubsPtr->tcl_GetAlias) /* 148 */ +#endif +#ifndef Tcl_GetAliasObj +#define Tcl_GetAliasObj \ + (tclStubsPtr->tcl_GetAliasObj) /* 149 */ +#endif +#ifndef Tcl_GetAssocData +#define Tcl_GetAssocData \ + (tclStubsPtr->tcl_GetAssocData) /* 150 */ +#endif +#ifndef Tcl_GetChannel +#define Tcl_GetChannel \ + (tclStubsPtr->tcl_GetChannel) /* 151 */ +#endif +#ifndef Tcl_GetChannelBufferSize +#define Tcl_GetChannelBufferSize \ + (tclStubsPtr->tcl_GetChannelBufferSize) /* 152 */ +#endif +#ifndef Tcl_GetChannelHandle +#define Tcl_GetChannelHandle \ + (tclStubsPtr->tcl_GetChannelHandle) /* 153 */ +#endif +#ifndef Tcl_GetChannelInstanceData +#define Tcl_GetChannelInstanceData \ + (tclStubsPtr->tcl_GetChannelInstanceData) /* 154 */ +#endif +#ifndef Tcl_GetChannelMode +#define Tcl_GetChannelMode \ + (tclStubsPtr->tcl_GetChannelMode) /* 155 */ +#endif +#ifndef Tcl_GetChannelName +#define Tcl_GetChannelName \ + (tclStubsPtr->tcl_GetChannelName) /* 156 */ +#endif +#ifndef Tcl_GetChannelOption +#define Tcl_GetChannelOption \ + (tclStubsPtr->tcl_GetChannelOption) /* 157 */ +#endif +#ifndef Tcl_GetChannelType +#define Tcl_GetChannelType \ + (tclStubsPtr->tcl_GetChannelType) /* 158 */ +#endif +#ifndef Tcl_GetCommandInfo +#define Tcl_GetCommandInfo \ + (tclStubsPtr->tcl_GetCommandInfo) /* 159 */ +#endif +#ifndef Tcl_GetCommandName +#define Tcl_GetCommandName \ + (tclStubsPtr->tcl_GetCommandName) /* 160 */ +#endif +#ifndef Tcl_GetErrno +#define Tcl_GetErrno \ + (tclStubsPtr->tcl_GetErrno) /* 161 */ +#endif +#ifndef Tcl_GetHostName +#define Tcl_GetHostName \ + (tclStubsPtr->tcl_GetHostName) /* 162 */ +#endif +#ifndef Tcl_GetInterpPath +#define Tcl_GetInterpPath \ + (tclStubsPtr->tcl_GetInterpPath) /* 163 */ +#endif +#ifndef Tcl_GetMaster +#define Tcl_GetMaster \ + (tclStubsPtr->tcl_GetMaster) /* 164 */ +#endif +#ifndef Tcl_GetNameOfExecutable +#define Tcl_GetNameOfExecutable \ + (tclStubsPtr->tcl_GetNameOfExecutable) /* 165 */ +#endif +#ifndef Tcl_GetObjResult +#define Tcl_GetObjResult \ + (tclStubsPtr->tcl_GetObjResult) /* 166 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_GetOpenFile +#define Tcl_GetOpenFile \ + (tclStubsPtr->tcl_GetOpenFile) /* 167 */ +#endif +#endif /* UNIX */ +#ifndef Tcl_GetPathType +#define Tcl_GetPathType \ + (tclStubsPtr->tcl_GetPathType) /* 168 */ +#endif +#ifndef Tcl_Gets +#define Tcl_Gets \ + (tclStubsPtr->tcl_Gets) /* 169 */ +#endif +#ifndef Tcl_GetsObj +#define Tcl_GetsObj \ + (tclStubsPtr->tcl_GetsObj) /* 170 */ +#endif +#ifndef Tcl_GetServiceMode +#define Tcl_GetServiceMode \ + (tclStubsPtr->tcl_GetServiceMode) /* 171 */ +#endif +#ifndef Tcl_GetSlave +#define Tcl_GetSlave \ + (tclStubsPtr->tcl_GetSlave) /* 172 */ +#endif +#ifndef Tcl_GetStdChannel +#define Tcl_GetStdChannel \ + (tclStubsPtr->tcl_GetStdChannel) /* 173 */ +#endif +#ifndef Tcl_GetStringResult +#define Tcl_GetStringResult \ + (tclStubsPtr->tcl_GetStringResult) /* 174 */ +#endif +#ifndef Tcl_GetVar +#define Tcl_GetVar \ + (tclStubsPtr->tcl_GetVar) /* 175 */ +#endif +#ifndef Tcl_GetVar2 +#define Tcl_GetVar2 \ + (tclStubsPtr->tcl_GetVar2) /* 176 */ +#endif +#ifndef Tcl_GlobalEval +#define Tcl_GlobalEval \ + (tclStubsPtr->tcl_GlobalEval) /* 177 */ +#endif +#ifndef Tcl_GlobalEvalObj +#define Tcl_GlobalEvalObj \ + (tclStubsPtr->tcl_GlobalEvalObj) /* 178 */ +#endif +#ifndef Tcl_HideCommand +#define Tcl_HideCommand \ + (tclStubsPtr->tcl_HideCommand) /* 179 */ +#endif +#ifndef Tcl_Init +#define Tcl_Init \ + (tclStubsPtr->tcl_Init) /* 180 */ +#endif +#ifndef Tcl_InitHashTable +#define Tcl_InitHashTable \ + (tclStubsPtr->tcl_InitHashTable) /* 181 */ +#endif +#ifndef Tcl_InputBlocked +#define Tcl_InputBlocked \ + (tclStubsPtr->tcl_InputBlocked) /* 182 */ +#endif +#ifndef Tcl_InputBuffered +#define Tcl_InputBuffered \ + (tclStubsPtr->tcl_InputBuffered) /* 183 */ +#endif +#ifndef Tcl_InterpDeleted +#define Tcl_InterpDeleted \ + (tclStubsPtr->tcl_InterpDeleted) /* 184 */ +#endif +#ifndef Tcl_IsSafe +#define Tcl_IsSafe \ + (tclStubsPtr->tcl_IsSafe) /* 185 */ +#endif +#ifndef Tcl_JoinPath +#define Tcl_JoinPath \ + (tclStubsPtr->tcl_JoinPath) /* 186 */ +#endif +#ifndef Tcl_LinkVar +#define Tcl_LinkVar \ + (tclStubsPtr->tcl_LinkVar) /* 187 */ +#endif +/* Slot 188 is reserved */ +#ifndef Tcl_MakeFileChannel +#define Tcl_MakeFileChannel \ + (tclStubsPtr->tcl_MakeFileChannel) /* 189 */ +#endif +#ifndef Tcl_MakeSafe +#define Tcl_MakeSafe \ + (tclStubsPtr->tcl_MakeSafe) /* 190 */ +#endif +#ifndef Tcl_MakeTcpClientChannel +#define Tcl_MakeTcpClientChannel \ + (tclStubsPtr->tcl_MakeTcpClientChannel) /* 191 */ +#endif +#ifndef Tcl_Merge +#define Tcl_Merge \ + (tclStubsPtr->tcl_Merge) /* 192 */ +#endif +#ifndef Tcl_NextHashEntry +#define Tcl_NextHashEntry \ + (tclStubsPtr->tcl_NextHashEntry) /* 193 */ +#endif +#ifndef Tcl_NotifyChannel +#define Tcl_NotifyChannel \ + (tclStubsPtr->tcl_NotifyChannel) /* 194 */ +#endif +#ifndef Tcl_ObjGetVar2 +#define Tcl_ObjGetVar2 \ + (tclStubsPtr->tcl_ObjGetVar2) /* 195 */ +#endif +#ifndef Tcl_ObjSetVar2 +#define Tcl_ObjSetVar2 \ + (tclStubsPtr->tcl_ObjSetVar2) /* 196 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_OpenCommandChannel +#define Tcl_OpenCommandChannel \ + (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_OpenCommandChannel +#define Tcl_OpenCommandChannel \ + (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_OpenFileChannel +#define Tcl_OpenFileChannel \ + (tclStubsPtr->tcl_OpenFileChannel) /* 198 */ +#endif +#ifndef Tcl_OpenTcpClient +#define Tcl_OpenTcpClient \ + (tclStubsPtr->tcl_OpenTcpClient) /* 199 */ +#endif +#ifndef Tcl_OpenTcpServer +#define Tcl_OpenTcpServer \ + (tclStubsPtr->tcl_OpenTcpServer) /* 200 */ +#endif +#ifndef Tcl_Preserve +#define Tcl_Preserve \ + (tclStubsPtr->tcl_Preserve) /* 201 */ +#endif +#ifndef Tcl_PrintDouble +#define Tcl_PrintDouble \ + (tclStubsPtr->tcl_PrintDouble) /* 202 */ +#endif +#ifndef Tcl_PutEnv +#define Tcl_PutEnv \ + (tclStubsPtr->tcl_PutEnv) /* 203 */ +#endif +#ifndef Tcl_PosixError +#define Tcl_PosixError \ + (tclStubsPtr->tcl_PosixError) /* 204 */ +#endif +#ifndef Tcl_QueueEvent +#define Tcl_QueueEvent \ + (tclStubsPtr->tcl_QueueEvent) /* 205 */ +#endif +#ifndef Tcl_Read +#define Tcl_Read \ + (tclStubsPtr->tcl_Read) /* 206 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_ReapDetachedProcs +#define Tcl_ReapDetachedProcs \ + (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_ReapDetachedProcs +#define Tcl_ReapDetachedProcs \ + (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_RecordAndEval +#define Tcl_RecordAndEval \ + (tclStubsPtr->tcl_RecordAndEval) /* 208 */ +#endif +#ifndef Tcl_RecordAndEvalObj +#define Tcl_RecordAndEvalObj \ + (tclStubsPtr->tcl_RecordAndEvalObj) /* 209 */ +#endif +#ifndef Tcl_RegisterChannel +#define Tcl_RegisterChannel \ + (tclStubsPtr->tcl_RegisterChannel) /* 210 */ +#endif +#ifndef Tcl_RegisterObjType +#define Tcl_RegisterObjType \ + (tclStubsPtr->tcl_RegisterObjType) /* 211 */ +#endif +#ifndef Tcl_RegExpCompile +#define Tcl_RegExpCompile \ + (tclStubsPtr->tcl_RegExpCompile) /* 212 */ +#endif +#ifndef Tcl_RegExpExec +#define Tcl_RegExpExec \ + (tclStubsPtr->tcl_RegExpExec) /* 213 */ +#endif +#ifndef Tcl_RegExpMatch +#define Tcl_RegExpMatch \ + (tclStubsPtr->tcl_RegExpMatch) /* 214 */ +#endif +#ifndef Tcl_RegExpRange +#define Tcl_RegExpRange \ + (tclStubsPtr->tcl_RegExpRange) /* 215 */ +#endif +#ifndef Tcl_Release +#define Tcl_Release \ + (tclStubsPtr->tcl_Release) /* 216 */ +#endif +#ifndef Tcl_ResetResult +#define Tcl_ResetResult \ + (tclStubsPtr->tcl_ResetResult) /* 217 */ +#endif +#ifndef Tcl_ScanElement +#define Tcl_ScanElement \ + (tclStubsPtr->tcl_ScanElement) /* 218 */ +#endif +#ifndef Tcl_ScanCountedElement +#define Tcl_ScanCountedElement \ + (tclStubsPtr->tcl_ScanCountedElement) /* 219 */ +#endif +#ifndef Tcl_SeekOld +#define Tcl_SeekOld \ + (tclStubsPtr->tcl_SeekOld) /* 220 */ +#endif +#ifndef Tcl_ServiceAll +#define Tcl_ServiceAll \ + (tclStubsPtr->tcl_ServiceAll) /* 221 */ +#endif +#ifndef Tcl_ServiceEvent +#define Tcl_ServiceEvent \ + (tclStubsPtr->tcl_ServiceEvent) /* 222 */ +#endif +#ifndef Tcl_SetAssocData +#define Tcl_SetAssocData \ + (tclStubsPtr->tcl_SetAssocData) /* 223 */ +#endif +#ifndef Tcl_SetChannelBufferSize +#define Tcl_SetChannelBufferSize \ + (tclStubsPtr->tcl_SetChannelBufferSize) /* 224 */ +#endif +#ifndef Tcl_SetChannelOption +#define Tcl_SetChannelOption \ + (tclStubsPtr->tcl_SetChannelOption) /* 225 */ +#endif +#ifndef Tcl_SetCommandInfo +#define Tcl_SetCommandInfo \ + (tclStubsPtr->tcl_SetCommandInfo) /* 226 */ +#endif +#ifndef Tcl_SetErrno +#define Tcl_SetErrno \ + (tclStubsPtr->tcl_SetErrno) /* 227 */ +#endif +#ifndef Tcl_SetErrorCode +#define Tcl_SetErrorCode \ + (tclStubsPtr->tcl_SetErrorCode) /* 228 */ +#endif +#ifndef Tcl_SetMaxBlockTime +#define Tcl_SetMaxBlockTime \ + (tclStubsPtr->tcl_SetMaxBlockTime) /* 229 */ +#endif +#ifndef Tcl_SetPanicProc +#define Tcl_SetPanicProc \ + (tclStubsPtr->tcl_SetPanicProc) /* 230 */ +#endif +#ifndef Tcl_SetRecursionLimit +#define Tcl_SetRecursionLimit \ + (tclStubsPtr->tcl_SetRecursionLimit) /* 231 */ +#endif +#ifndef Tcl_SetResult +#define Tcl_SetResult \ + (tclStubsPtr->tcl_SetResult) /* 232 */ +#endif +#ifndef Tcl_SetServiceMode +#define Tcl_SetServiceMode \ + (tclStubsPtr->tcl_SetServiceMode) /* 233 */ +#endif +#ifndef Tcl_SetObjErrorCode +#define Tcl_SetObjErrorCode \ + (tclStubsPtr->tcl_SetObjErrorCode) /* 234 */ +#endif +#ifndef Tcl_SetObjResult +#define Tcl_SetObjResult \ + (tclStubsPtr->tcl_SetObjResult) /* 235 */ +#endif +#ifndef Tcl_SetStdChannel +#define Tcl_SetStdChannel \ + (tclStubsPtr->tcl_SetStdChannel) /* 236 */ +#endif +#ifndef Tcl_SetVar +#define Tcl_SetVar \ + (tclStubsPtr->tcl_SetVar) /* 237 */ +#endif +#ifndef Tcl_SetVar2 +#define Tcl_SetVar2 \ + (tclStubsPtr->tcl_SetVar2) /* 238 */ +#endif +#ifndef Tcl_SignalId +#define Tcl_SignalId \ + (tclStubsPtr->tcl_SignalId) /* 239 */ +#endif +#ifndef Tcl_SignalMsg +#define Tcl_SignalMsg \ + (tclStubsPtr->tcl_SignalMsg) /* 240 */ +#endif +#ifndef Tcl_SourceRCFile +#define Tcl_SourceRCFile \ + (tclStubsPtr->tcl_SourceRCFile) /* 241 */ +#endif +#ifndef Tcl_SplitList +#define Tcl_SplitList \ + (tclStubsPtr->tcl_SplitList) /* 242 */ +#endif +#ifndef Tcl_SplitPath +#define Tcl_SplitPath \ + (tclStubsPtr->tcl_SplitPath) /* 243 */ +#endif +#ifndef Tcl_StaticPackage +#define Tcl_StaticPackage \ + (tclStubsPtr->tcl_StaticPackage) /* 244 */ +#endif +#ifndef Tcl_StringMatch +#define Tcl_StringMatch \ + (tclStubsPtr->tcl_StringMatch) /* 245 */ +#endif +#ifndef Tcl_TellOld +#define Tcl_TellOld \ + (tclStubsPtr->tcl_TellOld) /* 246 */ +#endif +#ifndef Tcl_TraceVar +#define Tcl_TraceVar \ + (tclStubsPtr->tcl_TraceVar) /* 247 */ +#endif +#ifndef Tcl_TraceVar2 +#define Tcl_TraceVar2 \ + (tclStubsPtr->tcl_TraceVar2) /* 248 */ +#endif +#ifndef Tcl_TranslateFileName +#define Tcl_TranslateFileName \ + (tclStubsPtr->tcl_TranslateFileName) /* 249 */ +#endif +#ifndef Tcl_Ungets +#define Tcl_Ungets \ + (tclStubsPtr->tcl_Ungets) /* 250 */ +#endif +#ifndef Tcl_UnlinkVar +#define Tcl_UnlinkVar \ + (tclStubsPtr->tcl_UnlinkVar) /* 251 */ +#endif +#ifndef Tcl_UnregisterChannel +#define Tcl_UnregisterChannel \ + (tclStubsPtr->tcl_UnregisterChannel) /* 252 */ +#endif +#ifndef Tcl_UnsetVar +#define Tcl_UnsetVar \ + (tclStubsPtr->tcl_UnsetVar) /* 253 */ +#endif +#ifndef Tcl_UnsetVar2 +#define Tcl_UnsetVar2 \ + (tclStubsPtr->tcl_UnsetVar2) /* 254 */ +#endif +#ifndef Tcl_UntraceVar +#define Tcl_UntraceVar \ + (tclStubsPtr->tcl_UntraceVar) /* 255 */ +#endif +#ifndef Tcl_UntraceVar2 +#define Tcl_UntraceVar2 \ + (tclStubsPtr->tcl_UntraceVar2) /* 256 */ +#endif +#ifndef Tcl_UpdateLinkedVar +#define Tcl_UpdateLinkedVar \ + (tclStubsPtr->tcl_UpdateLinkedVar) /* 257 */ +#endif +#ifndef Tcl_UpVar +#define Tcl_UpVar \ + (tclStubsPtr->tcl_UpVar) /* 258 */ +#endif +#ifndef Tcl_UpVar2 +#define Tcl_UpVar2 \ + (tclStubsPtr->tcl_UpVar2) /* 259 */ +#endif +#ifndef Tcl_VarEval +#define Tcl_VarEval \ + (tclStubsPtr->tcl_VarEval) /* 260 */ +#endif +#ifndef Tcl_VarTraceInfo +#define Tcl_VarTraceInfo \ + (tclStubsPtr->tcl_VarTraceInfo) /* 261 */ +#endif +#ifndef Tcl_VarTraceInfo2 +#define Tcl_VarTraceInfo2 \ + (tclStubsPtr->tcl_VarTraceInfo2) /* 262 */ +#endif +#ifndef Tcl_Write +#define Tcl_Write \ + (tclStubsPtr->tcl_Write) /* 263 */ +#endif +#ifndef Tcl_WrongNumArgs +#define Tcl_WrongNumArgs \ + (tclStubsPtr->tcl_WrongNumArgs) /* 264 */ +#endif +#ifndef Tcl_DumpActiveMemory +#define Tcl_DumpActiveMemory \ + (tclStubsPtr->tcl_DumpActiveMemory) /* 265 */ +#endif +#ifndef Tcl_ValidateAllMemory +#define Tcl_ValidateAllMemory \ + (tclStubsPtr->tcl_ValidateAllMemory) /* 266 */ +#endif +#ifndef Tcl_AppendResultVA +#define Tcl_AppendResultVA \ + (tclStubsPtr->tcl_AppendResultVA) /* 267 */ +#endif +#ifndef Tcl_AppendStringsToObjVA +#define Tcl_AppendStringsToObjVA \ + (tclStubsPtr->tcl_AppendStringsToObjVA) /* 268 */ +#endif +#ifndef Tcl_HashStats +#define Tcl_HashStats \ + (tclStubsPtr->tcl_HashStats) /* 269 */ +#endif +#ifndef Tcl_ParseVar +#define Tcl_ParseVar \ + (tclStubsPtr->tcl_ParseVar) /* 270 */ +#endif +#ifndef Tcl_PkgPresent +#define Tcl_PkgPresent \ + (tclStubsPtr->tcl_PkgPresent) /* 271 */ +#endif +#ifndef Tcl_PkgPresentEx +#define Tcl_PkgPresentEx \ + (tclStubsPtr->tcl_PkgPresentEx) /* 272 */ +#endif +#ifndef Tcl_PkgProvide +#define Tcl_PkgProvide \ + (tclStubsPtr->tcl_PkgProvide) /* 273 */ +#endif +#ifndef Tcl_PkgRequire +#define Tcl_PkgRequire \ + (tclStubsPtr->tcl_PkgRequire) /* 274 */ +#endif +#ifndef Tcl_SetErrorCodeVA +#define Tcl_SetErrorCodeVA \ + (tclStubsPtr->tcl_SetErrorCodeVA) /* 275 */ +#endif +#ifndef Tcl_VarEvalVA +#define Tcl_VarEvalVA \ + (tclStubsPtr->tcl_VarEvalVA) /* 276 */ +#endif +#ifndef Tcl_WaitPid +#define Tcl_WaitPid \ + (tclStubsPtr->tcl_WaitPid) /* 277 */ +#endif +#ifndef Tcl_PanicVA +#define Tcl_PanicVA \ + (tclStubsPtr->tcl_PanicVA) /* 278 */ +#endif +#ifndef Tcl_GetVersion +#define Tcl_GetVersion \ + (tclStubsPtr->tcl_GetVersion) /* 279 */ +#endif +#ifndef Tcl_InitMemory +#define Tcl_InitMemory \ + (tclStubsPtr->tcl_InitMemory) /* 280 */ +#endif +#ifndef Tcl_StackChannel +#define Tcl_StackChannel \ + (tclStubsPtr->tcl_StackChannel) /* 281 */ +#endif +#ifndef Tcl_UnstackChannel +#define Tcl_UnstackChannel \ + (tclStubsPtr->tcl_UnstackChannel) /* 282 */ +#endif +#ifndef Tcl_GetStackedChannel +#define Tcl_GetStackedChannel \ + (tclStubsPtr->tcl_GetStackedChannel) /* 283 */ +#endif +#ifndef Tcl_SetMainLoop +#define Tcl_SetMainLoop \ + (tclStubsPtr->tcl_SetMainLoop) /* 284 */ +#endif +/* Slot 285 is reserved */ +#ifndef Tcl_AppendObjToObj +#define Tcl_AppendObjToObj \ + (tclStubsPtr->tcl_AppendObjToObj) /* 286 */ +#endif +#ifndef Tcl_CreateEncoding +#define Tcl_CreateEncoding \ + (tclStubsPtr->tcl_CreateEncoding) /* 287 */ +#endif +#ifndef Tcl_CreateThreadExitHandler +#define Tcl_CreateThreadExitHandler \ + (tclStubsPtr->tcl_CreateThreadExitHandler) /* 288 */ +#endif +#ifndef Tcl_DeleteThreadExitHandler +#define Tcl_DeleteThreadExitHandler \ + (tclStubsPtr->tcl_DeleteThreadExitHandler) /* 289 */ +#endif +#ifndef Tcl_DiscardResult +#define Tcl_DiscardResult \ + (tclStubsPtr->tcl_DiscardResult) /* 290 */ +#endif +#ifndef Tcl_EvalEx +#define Tcl_EvalEx \ + (tclStubsPtr->tcl_EvalEx) /* 291 */ +#endif +#ifndef Tcl_EvalObjv +#define Tcl_EvalObjv \ + (tclStubsPtr->tcl_EvalObjv) /* 292 */ +#endif +#ifndef Tcl_EvalObjEx +#define Tcl_EvalObjEx \ + (tclStubsPtr->tcl_EvalObjEx) /* 293 */ +#endif +#ifndef Tcl_ExitThread +#define Tcl_ExitThread \ + (tclStubsPtr->tcl_ExitThread) /* 294 */ +#endif +#ifndef Tcl_ExternalToUtf +#define Tcl_ExternalToUtf \ + (tclStubsPtr->tcl_ExternalToUtf) /* 295 */ +#endif +#ifndef Tcl_ExternalToUtfDString +#define Tcl_ExternalToUtfDString \ + (tclStubsPtr->tcl_ExternalToUtfDString) /* 296 */ +#endif +#ifndef Tcl_FinalizeThread +#define Tcl_FinalizeThread \ + (tclStubsPtr->tcl_FinalizeThread) /* 297 */ +#endif +#ifndef Tcl_FinalizeNotifier +#define Tcl_FinalizeNotifier \ + (tclStubsPtr->tcl_FinalizeNotifier) /* 298 */ +#endif +#ifndef Tcl_FreeEncoding +#define Tcl_FreeEncoding \ + (tclStubsPtr->tcl_FreeEncoding) /* 299 */ +#endif +#ifndef Tcl_GetCurrentThread +#define Tcl_GetCurrentThread \ + (tclStubsPtr->tcl_GetCurrentThread) /* 300 */ +#endif +#ifndef Tcl_GetEncoding +#define Tcl_GetEncoding \ + (tclStubsPtr->tcl_GetEncoding) /* 301 */ +#endif +#ifndef Tcl_GetEncodingName +#define Tcl_GetEncodingName \ + (tclStubsPtr->tcl_GetEncodingName) /* 302 */ +#endif +#ifndef Tcl_GetEncodingNames +#define Tcl_GetEncodingNames \ + (tclStubsPtr->tcl_GetEncodingNames) /* 303 */ +#endif +#ifndef Tcl_GetIndexFromObjStruct +#define Tcl_GetIndexFromObjStruct \ + (tclStubsPtr->tcl_GetIndexFromObjStruct) /* 304 */ +#endif +#ifndef Tcl_GetThreadData +#define Tcl_GetThreadData \ + (tclStubsPtr->tcl_GetThreadData) /* 305 */ +#endif +#ifndef Tcl_GetVar2Ex +#define Tcl_GetVar2Ex \ + (tclStubsPtr->tcl_GetVar2Ex) /* 306 */ +#endif +#ifndef Tcl_InitNotifier +#define Tcl_InitNotifier \ + (tclStubsPtr->tcl_InitNotifier) /* 307 */ +#endif +#ifndef Tcl_MutexLock +#define Tcl_MutexLock \ + (tclStubsPtr->tcl_MutexLock) /* 308 */ +#endif +#ifndef Tcl_MutexUnlock +#define Tcl_MutexUnlock \ + (tclStubsPtr->tcl_MutexUnlock) /* 309 */ +#endif +#ifndef Tcl_ConditionNotify +#define Tcl_ConditionNotify \ + (tclStubsPtr->tcl_ConditionNotify) /* 310 */ +#endif +#ifndef Tcl_ConditionWait +#define Tcl_ConditionWait \ + (tclStubsPtr->tcl_ConditionWait) /* 311 */ +#endif +#ifndef Tcl_NumUtfChars +#define Tcl_NumUtfChars \ + (tclStubsPtr->tcl_NumUtfChars) /* 312 */ +#endif +#ifndef Tcl_ReadChars +#define Tcl_ReadChars \ + (tclStubsPtr->tcl_ReadChars) /* 313 */ +#endif +#ifndef Tcl_RestoreResult +#define Tcl_RestoreResult \ + (tclStubsPtr->tcl_RestoreResult) /* 314 */ +#endif +#ifndef Tcl_SaveResult +#define Tcl_SaveResult \ + (tclStubsPtr->tcl_SaveResult) /* 315 */ +#endif +#ifndef Tcl_SetSystemEncoding +#define Tcl_SetSystemEncoding \ + (tclStubsPtr->tcl_SetSystemEncoding) /* 316 */ +#endif +#ifndef Tcl_SetVar2Ex +#define Tcl_SetVar2Ex \ + (tclStubsPtr->tcl_SetVar2Ex) /* 317 */ +#endif +#ifndef Tcl_ThreadAlert +#define Tcl_ThreadAlert \ + (tclStubsPtr->tcl_ThreadAlert) /* 318 */ +#endif +#ifndef Tcl_ThreadQueueEvent +#define Tcl_ThreadQueueEvent \ + (tclStubsPtr->tcl_ThreadQueueEvent) /* 319 */ +#endif +#ifndef Tcl_UniCharAtIndex +#define Tcl_UniCharAtIndex \ + (tclStubsPtr->tcl_UniCharAtIndex) /* 320 */ +#endif +#ifndef Tcl_UniCharToLower +#define Tcl_UniCharToLower \ + (tclStubsPtr->tcl_UniCharToLower) /* 321 */ +#endif +#ifndef Tcl_UniCharToTitle +#define Tcl_UniCharToTitle \ + (tclStubsPtr->tcl_UniCharToTitle) /* 322 */ +#endif +#ifndef Tcl_UniCharToUpper +#define Tcl_UniCharToUpper \ + (tclStubsPtr->tcl_UniCharToUpper) /* 323 */ +#endif +#ifndef Tcl_UniCharToUtf +#define Tcl_UniCharToUtf \ + (tclStubsPtr->tcl_UniCharToUtf) /* 324 */ +#endif +#ifndef Tcl_UtfAtIndex +#define Tcl_UtfAtIndex \ + (tclStubsPtr->tcl_UtfAtIndex) /* 325 */ +#endif +#ifndef Tcl_UtfCharComplete +#define Tcl_UtfCharComplete \ + (tclStubsPtr->tcl_UtfCharComplete) /* 326 */ +#endif +#ifndef Tcl_UtfBackslash +#define Tcl_UtfBackslash \ + (tclStubsPtr->tcl_UtfBackslash) /* 327 */ +#endif +#ifndef Tcl_UtfFindFirst +#define Tcl_UtfFindFirst \ + (tclStubsPtr->tcl_UtfFindFirst) /* 328 */ +#endif +#ifndef Tcl_UtfFindLast +#define Tcl_UtfFindLast \ + (tclStubsPtr->tcl_UtfFindLast) /* 329 */ +#endif +#ifndef Tcl_UtfNext +#define Tcl_UtfNext \ + (tclStubsPtr->tcl_UtfNext) /* 330 */ +#endif +#ifndef Tcl_UtfPrev +#define Tcl_UtfPrev \ + (tclStubsPtr->tcl_UtfPrev) /* 331 */ +#endif +#ifndef Tcl_UtfToExternal +#define Tcl_UtfToExternal \ + (tclStubsPtr->tcl_UtfToExternal) /* 332 */ +#endif +#ifndef Tcl_UtfToExternalDString +#define Tcl_UtfToExternalDString \ + (tclStubsPtr->tcl_UtfToExternalDString) /* 333 */ +#endif +#ifndef Tcl_UtfToLower +#define Tcl_UtfToLower \ + (tclStubsPtr->tcl_UtfToLower) /* 334 */ +#endif +#ifndef Tcl_UtfToTitle +#define Tcl_UtfToTitle \ + (tclStubsPtr->tcl_UtfToTitle) /* 335 */ +#endif +#ifndef Tcl_UtfToUniChar +#define Tcl_UtfToUniChar \ + (tclStubsPtr->tcl_UtfToUniChar) /* 336 */ +#endif +#ifndef Tcl_UtfToUpper +#define Tcl_UtfToUpper \ + (tclStubsPtr->tcl_UtfToUpper) /* 337 */ +#endif +#ifndef Tcl_WriteChars +#define Tcl_WriteChars \ + (tclStubsPtr->tcl_WriteChars) /* 338 */ +#endif +#ifndef Tcl_WriteObj +#define Tcl_WriteObj \ + (tclStubsPtr->tcl_WriteObj) /* 339 */ +#endif +#ifndef Tcl_GetString +#define Tcl_GetString \ + (tclStubsPtr->tcl_GetString) /* 340 */ +#endif +#ifndef Tcl_GetDefaultEncodingDir +#define Tcl_GetDefaultEncodingDir \ + (tclStubsPtr->tcl_GetDefaultEncodingDir) /* 341 */ +#endif +#ifndef Tcl_SetDefaultEncodingDir +#define Tcl_SetDefaultEncodingDir \ + (tclStubsPtr->tcl_SetDefaultEncodingDir) /* 342 */ +#endif +#ifndef Tcl_AlertNotifier +#define Tcl_AlertNotifier \ + (tclStubsPtr->tcl_AlertNotifier) /* 343 */ +#endif +#ifndef Tcl_ServiceModeHook +#define Tcl_ServiceModeHook \ + (tclStubsPtr->tcl_ServiceModeHook) /* 344 */ +#endif +#ifndef Tcl_UniCharIsAlnum +#define Tcl_UniCharIsAlnum \ + (tclStubsPtr->tcl_UniCharIsAlnum) /* 345 */ +#endif +#ifndef Tcl_UniCharIsAlpha +#define Tcl_UniCharIsAlpha \ + (tclStubsPtr->tcl_UniCharIsAlpha) /* 346 */ +#endif +#ifndef Tcl_UniCharIsDigit +#define Tcl_UniCharIsDigit \ + (tclStubsPtr->tcl_UniCharIsDigit) /* 347 */ +#endif +#ifndef Tcl_UniCharIsLower +#define Tcl_UniCharIsLower \ + (tclStubsPtr->tcl_UniCharIsLower) /* 348 */ +#endif +#ifndef Tcl_UniCharIsSpace +#define Tcl_UniCharIsSpace \ + (tclStubsPtr->tcl_UniCharIsSpace) /* 349 */ +#endif +#ifndef Tcl_UniCharIsUpper +#define Tcl_UniCharIsUpper \ + (tclStubsPtr->tcl_UniCharIsUpper) /* 350 */ +#endif +#ifndef Tcl_UniCharIsWordChar +#define Tcl_UniCharIsWordChar \ + (tclStubsPtr->tcl_UniCharIsWordChar) /* 351 */ +#endif +#ifndef Tcl_UniCharLen +#define Tcl_UniCharLen \ + (tclStubsPtr->tcl_UniCharLen) /* 352 */ +#endif +#ifndef Tcl_UniCharNcmp +#define Tcl_UniCharNcmp \ + (tclStubsPtr->tcl_UniCharNcmp) /* 353 */ +#endif +#ifndef Tcl_UniCharToUtfDString +#define Tcl_UniCharToUtfDString \ + (tclStubsPtr->tcl_UniCharToUtfDString) /* 354 */ +#endif +#ifndef Tcl_UtfToUniCharDString +#define Tcl_UtfToUniCharDString \ + (tclStubsPtr->tcl_UtfToUniCharDString) /* 355 */ +#endif +#ifndef Tcl_GetRegExpFromObj +#define Tcl_GetRegExpFromObj \ + (tclStubsPtr->tcl_GetRegExpFromObj) /* 356 */ +#endif +#ifndef Tcl_EvalTokens +#define Tcl_EvalTokens \ + (tclStubsPtr->tcl_EvalTokens) /* 357 */ +#endif +#ifndef Tcl_FreeParse +#define Tcl_FreeParse \ + (tclStubsPtr->tcl_FreeParse) /* 358 */ +#endif +#ifndef Tcl_LogCommandInfo +#define Tcl_LogCommandInfo \ + (tclStubsPtr->tcl_LogCommandInfo) /* 359 */ +#endif +#ifndef Tcl_ParseBraces +#define Tcl_ParseBraces \ + (tclStubsPtr->tcl_ParseBraces) /* 360 */ +#endif +#ifndef Tcl_ParseCommand +#define Tcl_ParseCommand \ + (tclStubsPtr->tcl_ParseCommand) /* 361 */ +#endif +#ifndef Tcl_ParseExpr +#define Tcl_ParseExpr \ + (tclStubsPtr->tcl_ParseExpr) /* 362 */ +#endif +#ifndef Tcl_ParseQuotedString +#define Tcl_ParseQuotedString \ + (tclStubsPtr->tcl_ParseQuotedString) /* 363 */ +#endif +#ifndef Tcl_ParseVarName +#define Tcl_ParseVarName \ + (tclStubsPtr->tcl_ParseVarName) /* 364 */ +#endif +#ifndef Tcl_GetCwd +#define Tcl_GetCwd \ + (tclStubsPtr->tcl_GetCwd) /* 365 */ +#endif +#ifndef Tcl_Chdir +#define Tcl_Chdir \ + (tclStubsPtr->tcl_Chdir) /* 366 */ +#endif +#ifndef Tcl_Access +#define Tcl_Access \ + (tclStubsPtr->tcl_Access) /* 367 */ +#endif +#ifndef Tcl_Stat +#define Tcl_Stat \ + (tclStubsPtr->tcl_Stat) /* 368 */ +#endif +#ifndef Tcl_UtfNcmp +#define Tcl_UtfNcmp \ + (tclStubsPtr->tcl_UtfNcmp) /* 369 */ +#endif +#ifndef Tcl_UtfNcasecmp +#define Tcl_UtfNcasecmp \ + (tclStubsPtr->tcl_UtfNcasecmp) /* 370 */ +#endif +#ifndef Tcl_StringCaseMatch +#define Tcl_StringCaseMatch \ + (tclStubsPtr->tcl_StringCaseMatch) /* 371 */ +#endif +#ifndef Tcl_UniCharIsControl +#define Tcl_UniCharIsControl \ + (tclStubsPtr->tcl_UniCharIsControl) /* 372 */ +#endif +#ifndef Tcl_UniCharIsGraph +#define Tcl_UniCharIsGraph \ + (tclStubsPtr->tcl_UniCharIsGraph) /* 373 */ +#endif +#ifndef Tcl_UniCharIsPrint +#define Tcl_UniCharIsPrint \ + (tclStubsPtr->tcl_UniCharIsPrint) /* 374 */ +#endif +#ifndef Tcl_UniCharIsPunct +#define Tcl_UniCharIsPunct \ + (tclStubsPtr->tcl_UniCharIsPunct) /* 375 */ +#endif +#ifndef Tcl_RegExpExecObj +#define Tcl_RegExpExecObj \ + (tclStubsPtr->tcl_RegExpExecObj) /* 376 */ +#endif +#ifndef Tcl_RegExpGetInfo +#define Tcl_RegExpGetInfo \ + (tclStubsPtr->tcl_RegExpGetInfo) /* 377 */ +#endif +#ifndef Tcl_NewUnicodeObj +#define Tcl_NewUnicodeObj \ + (tclStubsPtr->tcl_NewUnicodeObj) /* 378 */ +#endif +#ifndef Tcl_SetUnicodeObj +#define Tcl_SetUnicodeObj \ + (tclStubsPtr->tcl_SetUnicodeObj) /* 379 */ +#endif +#ifndef Tcl_GetCharLength +#define Tcl_GetCharLength \ + (tclStubsPtr->tcl_GetCharLength) /* 380 */ +#endif +#ifndef Tcl_GetUniChar +#define Tcl_GetUniChar \ + (tclStubsPtr->tcl_GetUniChar) /* 381 */ +#endif +#ifndef Tcl_GetUnicode +#define Tcl_GetUnicode \ + (tclStubsPtr->tcl_GetUnicode) /* 382 */ +#endif +#ifndef Tcl_GetRange +#define Tcl_GetRange \ + (tclStubsPtr->tcl_GetRange) /* 383 */ +#endif +#ifndef Tcl_AppendUnicodeToObj +#define Tcl_AppendUnicodeToObj \ + (tclStubsPtr->tcl_AppendUnicodeToObj) /* 384 */ +#endif +#ifndef Tcl_RegExpMatchObj +#define Tcl_RegExpMatchObj \ + (tclStubsPtr->tcl_RegExpMatchObj) /* 385 */ +#endif +#ifndef Tcl_SetNotifier +#define Tcl_SetNotifier \ + (tclStubsPtr->tcl_SetNotifier) /* 386 */ +#endif +#ifndef Tcl_GetAllocMutex +#define Tcl_GetAllocMutex \ + (tclStubsPtr->tcl_GetAllocMutex) /* 387 */ +#endif +#ifndef Tcl_GetChannelNames +#define Tcl_GetChannelNames \ + (tclStubsPtr->tcl_GetChannelNames) /* 388 */ +#endif +#ifndef Tcl_GetChannelNamesEx +#define Tcl_GetChannelNamesEx \ + (tclStubsPtr->tcl_GetChannelNamesEx) /* 389 */ +#endif +#ifndef Tcl_ProcObjCmd +#define Tcl_ProcObjCmd \ + (tclStubsPtr->tcl_ProcObjCmd) /* 390 */ +#endif +#ifndef Tcl_ConditionFinalize +#define Tcl_ConditionFinalize \ + (tclStubsPtr->tcl_ConditionFinalize) /* 391 */ +#endif +#ifndef Tcl_MutexFinalize +#define Tcl_MutexFinalize \ + (tclStubsPtr->tcl_MutexFinalize) /* 392 */ +#endif +#ifndef Tcl_CreateThread +#define Tcl_CreateThread \ + (tclStubsPtr->tcl_CreateThread) /* 393 */ +#endif +#ifndef Tcl_ReadRaw +#define Tcl_ReadRaw \ + (tclStubsPtr->tcl_ReadRaw) /* 394 */ +#endif +#ifndef Tcl_WriteRaw +#define Tcl_WriteRaw \ + (tclStubsPtr->tcl_WriteRaw) /* 395 */ +#endif +#ifndef Tcl_GetTopChannel +#define Tcl_GetTopChannel \ + (tclStubsPtr->tcl_GetTopChannel) /* 396 */ +#endif +#ifndef Tcl_ChannelBuffered +#define Tcl_ChannelBuffered \ + (tclStubsPtr->tcl_ChannelBuffered) /* 397 */ +#endif +#ifndef Tcl_ChannelName +#define Tcl_ChannelName \ + (tclStubsPtr->tcl_ChannelName) /* 398 */ +#endif +#ifndef Tcl_ChannelVersion +#define Tcl_ChannelVersion \ + (tclStubsPtr->tcl_ChannelVersion) /* 399 */ +#endif +#ifndef Tcl_ChannelBlockModeProc +#define Tcl_ChannelBlockModeProc \ + (tclStubsPtr->tcl_ChannelBlockModeProc) /* 400 */ +#endif +#ifndef Tcl_ChannelCloseProc +#define Tcl_ChannelCloseProc \ + (tclStubsPtr->tcl_ChannelCloseProc) /* 401 */ +#endif +#ifndef Tcl_ChannelClose2Proc +#define Tcl_ChannelClose2Proc \ + (tclStubsPtr->tcl_ChannelClose2Proc) /* 402 */ +#endif +#ifndef Tcl_ChannelInputProc +#define Tcl_ChannelInputProc \ + (tclStubsPtr->tcl_ChannelInputProc) /* 403 */ +#endif +#ifndef Tcl_ChannelOutputProc +#define Tcl_ChannelOutputProc \ + (tclStubsPtr->tcl_ChannelOutputProc) /* 404 */ +#endif +#ifndef Tcl_ChannelSeekProc +#define Tcl_ChannelSeekProc \ + (tclStubsPtr->tcl_ChannelSeekProc) /* 405 */ +#endif +#ifndef Tcl_ChannelSetOptionProc +#define Tcl_ChannelSetOptionProc \ + (tclStubsPtr->tcl_ChannelSetOptionProc) /* 406 */ +#endif +#ifndef Tcl_ChannelGetOptionProc +#define Tcl_ChannelGetOptionProc \ + (tclStubsPtr->tcl_ChannelGetOptionProc) /* 407 */ +#endif +#ifndef Tcl_ChannelWatchProc +#define Tcl_ChannelWatchProc \ + (tclStubsPtr->tcl_ChannelWatchProc) /* 408 */ +#endif +#ifndef Tcl_ChannelGetHandleProc +#define Tcl_ChannelGetHandleProc \ + (tclStubsPtr->tcl_ChannelGetHandleProc) /* 409 */ +#endif +#ifndef Tcl_ChannelFlushProc +#define Tcl_ChannelFlushProc \ + (tclStubsPtr->tcl_ChannelFlushProc) /* 410 */ +#endif +#ifndef Tcl_ChannelHandlerProc +#define Tcl_ChannelHandlerProc \ + (tclStubsPtr->tcl_ChannelHandlerProc) /* 411 */ +#endif +#ifndef Tcl_JoinThread +#define Tcl_JoinThread \ + (tclStubsPtr->tcl_JoinThread) /* 412 */ +#endif +#ifndef Tcl_IsChannelShared +#define Tcl_IsChannelShared \ + (tclStubsPtr->tcl_IsChannelShared) /* 413 */ +#endif +#ifndef Tcl_IsChannelRegistered +#define Tcl_IsChannelRegistered \ + (tclStubsPtr->tcl_IsChannelRegistered) /* 414 */ +#endif +#ifndef Tcl_CutChannel +#define Tcl_CutChannel \ + (tclStubsPtr->tcl_CutChannel) /* 415 */ +#endif +#ifndef Tcl_SpliceChannel +#define Tcl_SpliceChannel \ + (tclStubsPtr->tcl_SpliceChannel) /* 416 */ +#endif +#ifndef Tcl_ClearChannelHandlers +#define Tcl_ClearChannelHandlers \ + (tclStubsPtr->tcl_ClearChannelHandlers) /* 417 */ +#endif +#ifndef Tcl_IsChannelExisting +#define Tcl_IsChannelExisting \ + (tclStubsPtr->tcl_IsChannelExisting) /* 418 */ +#endif +#ifndef Tcl_UniCharNcasecmp +#define Tcl_UniCharNcasecmp \ + (tclStubsPtr->tcl_UniCharNcasecmp) /* 419 */ +#endif +#ifndef Tcl_UniCharCaseMatch +#define Tcl_UniCharCaseMatch \ + (tclStubsPtr->tcl_UniCharCaseMatch) /* 420 */ +#endif +#ifndef Tcl_FindHashEntry +#define Tcl_FindHashEntry \ + (tclStubsPtr->tcl_FindHashEntry) /* 421 */ +#endif +#ifndef Tcl_CreateHashEntry +#define Tcl_CreateHashEntry \ + (tclStubsPtr->tcl_CreateHashEntry) /* 422 */ +#endif +#ifndef Tcl_InitCustomHashTable +#define Tcl_InitCustomHashTable \ + (tclStubsPtr->tcl_InitCustomHashTable) /* 423 */ +#endif +#ifndef Tcl_InitObjHashTable +#define Tcl_InitObjHashTable \ + (tclStubsPtr->tcl_InitObjHashTable) /* 424 */ +#endif +#ifndef Tcl_CommandTraceInfo +#define Tcl_CommandTraceInfo \ + (tclStubsPtr->tcl_CommandTraceInfo) /* 425 */ +#endif +#ifndef Tcl_TraceCommand +#define Tcl_TraceCommand \ + (tclStubsPtr->tcl_TraceCommand) /* 426 */ +#endif +#ifndef Tcl_UntraceCommand +#define Tcl_UntraceCommand \ + (tclStubsPtr->tcl_UntraceCommand) /* 427 */ +#endif +#ifndef Tcl_AttemptAlloc +#define Tcl_AttemptAlloc \ + (tclStubsPtr->tcl_AttemptAlloc) /* 428 */ +#endif +#ifndef Tcl_AttemptDbCkalloc +#define Tcl_AttemptDbCkalloc \ + (tclStubsPtr->tcl_AttemptDbCkalloc) /* 429 */ +#endif +#ifndef Tcl_AttemptRealloc +#define Tcl_AttemptRealloc \ + (tclStubsPtr->tcl_AttemptRealloc) /* 430 */ +#endif +#ifndef Tcl_AttemptDbCkrealloc +#define Tcl_AttemptDbCkrealloc \ + (tclStubsPtr->tcl_AttemptDbCkrealloc) /* 431 */ +#endif +#ifndef Tcl_AttemptSetObjLength +#define Tcl_AttemptSetObjLength \ + (tclStubsPtr->tcl_AttemptSetObjLength) /* 432 */ +#endif +#ifndef Tcl_GetChannelThread +#define Tcl_GetChannelThread \ + (tclStubsPtr->tcl_GetChannelThread) /* 433 */ +#endif +#ifndef Tcl_GetUnicodeFromObj +#define Tcl_GetUnicodeFromObj \ + (tclStubsPtr->tcl_GetUnicodeFromObj) /* 434 */ +#endif +#ifndef Tcl_GetMathFuncInfo +#define Tcl_GetMathFuncInfo \ + (tclStubsPtr->tcl_GetMathFuncInfo) /* 435 */ +#endif +#ifndef Tcl_ListMathFuncs +#define Tcl_ListMathFuncs \ + (tclStubsPtr->tcl_ListMathFuncs) /* 436 */ +#endif +#ifndef Tcl_SubstObj +#define Tcl_SubstObj \ + (tclStubsPtr->tcl_SubstObj) /* 437 */ +#endif +#ifndef Tcl_DetachChannel +#define Tcl_DetachChannel \ + (tclStubsPtr->tcl_DetachChannel) /* 438 */ +#endif +#ifndef Tcl_IsStandardChannel +#define Tcl_IsStandardChannel \ + (tclStubsPtr->tcl_IsStandardChannel) /* 439 */ +#endif +#ifndef Tcl_FSCopyFile +#define Tcl_FSCopyFile \ + (tclStubsPtr->tcl_FSCopyFile) /* 440 */ +#endif +#ifndef Tcl_FSCopyDirectory +#define Tcl_FSCopyDirectory \ + (tclStubsPtr->tcl_FSCopyDirectory) /* 441 */ +#endif +#ifndef Tcl_FSCreateDirectory +#define Tcl_FSCreateDirectory \ + (tclStubsPtr->tcl_FSCreateDirectory) /* 442 */ +#endif +#ifndef Tcl_FSDeleteFile +#define Tcl_FSDeleteFile \ + (tclStubsPtr->tcl_FSDeleteFile) /* 443 */ +#endif +#ifndef Tcl_FSLoadFile +#define Tcl_FSLoadFile \ + (tclStubsPtr->tcl_FSLoadFile) /* 444 */ +#endif +#ifndef Tcl_FSMatchInDirectory +#define Tcl_FSMatchInDirectory \ + (tclStubsPtr->tcl_FSMatchInDirectory) /* 445 */ +#endif +#ifndef Tcl_FSLink +#define Tcl_FSLink \ + (tclStubsPtr->tcl_FSLink) /* 446 */ +#endif +#ifndef Tcl_FSRemoveDirectory +#define Tcl_FSRemoveDirectory \ + (tclStubsPtr->tcl_FSRemoveDirectory) /* 447 */ +#endif +#ifndef Tcl_FSRenameFile +#define Tcl_FSRenameFile \ + (tclStubsPtr->tcl_FSRenameFile) /* 448 */ +#endif +#ifndef Tcl_FSLstat +#define Tcl_FSLstat \ + (tclStubsPtr->tcl_FSLstat) /* 449 */ +#endif +#ifndef Tcl_FSUtime +#define Tcl_FSUtime \ + (tclStubsPtr->tcl_FSUtime) /* 450 */ +#endif +#ifndef Tcl_FSFileAttrsGet +#define Tcl_FSFileAttrsGet \ + (tclStubsPtr->tcl_FSFileAttrsGet) /* 451 */ +#endif +#ifndef Tcl_FSFileAttrsSet +#define Tcl_FSFileAttrsSet \ + (tclStubsPtr->tcl_FSFileAttrsSet) /* 452 */ +#endif +#ifndef Tcl_FSFileAttrStrings +#define Tcl_FSFileAttrStrings \ + (tclStubsPtr->tcl_FSFileAttrStrings) /* 453 */ +#endif +#ifndef Tcl_FSStat +#define Tcl_FSStat \ + (tclStubsPtr->tcl_FSStat) /* 454 */ +#endif +#ifndef Tcl_FSAccess +#define Tcl_FSAccess \ + (tclStubsPtr->tcl_FSAccess) /* 455 */ +#endif +#ifndef Tcl_FSOpenFileChannel +#define Tcl_FSOpenFileChannel \ + (tclStubsPtr->tcl_FSOpenFileChannel) /* 456 */ +#endif +#ifndef Tcl_FSGetCwd +#define Tcl_FSGetCwd \ + (tclStubsPtr->tcl_FSGetCwd) /* 457 */ +#endif +#ifndef Tcl_FSChdir +#define Tcl_FSChdir \ + (tclStubsPtr->tcl_FSChdir) /* 458 */ +#endif +#ifndef Tcl_FSConvertToPathType +#define Tcl_FSConvertToPathType \ + (tclStubsPtr->tcl_FSConvertToPathType) /* 459 */ +#endif +#ifndef Tcl_FSJoinPath +#define Tcl_FSJoinPath \ + (tclStubsPtr->tcl_FSJoinPath) /* 460 */ +#endif +#ifndef Tcl_FSSplitPath +#define Tcl_FSSplitPath \ + (tclStubsPtr->tcl_FSSplitPath) /* 461 */ +#endif +#ifndef Tcl_FSEqualPaths +#define Tcl_FSEqualPaths \ + (tclStubsPtr->tcl_FSEqualPaths) /* 462 */ +#endif +#ifndef Tcl_FSGetNormalizedPath +#define Tcl_FSGetNormalizedPath \ + (tclStubsPtr->tcl_FSGetNormalizedPath) /* 463 */ +#endif +#ifndef Tcl_FSJoinToPath +#define Tcl_FSJoinToPath \ + (tclStubsPtr->tcl_FSJoinToPath) /* 464 */ +#endif +#ifndef Tcl_FSGetInternalRep +#define Tcl_FSGetInternalRep \ + (tclStubsPtr->tcl_FSGetInternalRep) /* 465 */ +#endif +#ifndef Tcl_FSGetTranslatedPath +#define Tcl_FSGetTranslatedPath \ + (tclStubsPtr->tcl_FSGetTranslatedPath) /* 466 */ +#endif +#ifndef Tcl_FSEvalFile +#define Tcl_FSEvalFile \ + (tclStubsPtr->tcl_FSEvalFile) /* 467 */ +#endif +#ifndef Tcl_FSNewNativePath +#define Tcl_FSNewNativePath \ + (tclStubsPtr->tcl_FSNewNativePath) /* 468 */ +#endif +#ifndef Tcl_FSGetNativePath +#define Tcl_FSGetNativePath \ + (tclStubsPtr->tcl_FSGetNativePath) /* 469 */ +#endif +#ifndef Tcl_FSFileSystemInfo +#define Tcl_FSFileSystemInfo \ + (tclStubsPtr->tcl_FSFileSystemInfo) /* 470 */ +#endif +#ifndef Tcl_FSPathSeparator +#define Tcl_FSPathSeparator \ + (tclStubsPtr->tcl_FSPathSeparator) /* 471 */ +#endif +#ifndef Tcl_FSListVolumes +#define Tcl_FSListVolumes \ + (tclStubsPtr->tcl_FSListVolumes) /* 472 */ +#endif +#ifndef Tcl_FSRegister +#define Tcl_FSRegister \ + (tclStubsPtr->tcl_FSRegister) /* 473 */ +#endif +#ifndef Tcl_FSUnregister +#define Tcl_FSUnregister \ + (tclStubsPtr->tcl_FSUnregister) /* 474 */ +#endif +#ifndef Tcl_FSData +#define Tcl_FSData \ + (tclStubsPtr->tcl_FSData) /* 475 */ +#endif +#ifndef Tcl_FSGetTranslatedStringPath +#define Tcl_FSGetTranslatedStringPath \ + (tclStubsPtr->tcl_FSGetTranslatedStringPath) /* 476 */ +#endif +#ifndef Tcl_FSGetFileSystemForPath +#define Tcl_FSGetFileSystemForPath \ + (tclStubsPtr->tcl_FSGetFileSystemForPath) /* 477 */ +#endif +#ifndef Tcl_FSGetPathType +#define Tcl_FSGetPathType \ + (tclStubsPtr->tcl_FSGetPathType) /* 478 */ +#endif +#ifndef Tcl_OutputBuffered +#define Tcl_OutputBuffered \ + (tclStubsPtr->tcl_OutputBuffered) /* 479 */ +#endif +#ifndef Tcl_FSMountsChanged +#define Tcl_FSMountsChanged \ + (tclStubsPtr->tcl_FSMountsChanged) /* 480 */ +#endif +#ifndef Tcl_EvalTokensStandard +#define Tcl_EvalTokensStandard \ + (tclStubsPtr->tcl_EvalTokensStandard) /* 481 */ +#endif +#ifndef Tcl_GetTime +#define Tcl_GetTime \ + (tclStubsPtr->tcl_GetTime) /* 482 */ +#endif +#ifndef Tcl_CreateObjTrace +#define Tcl_CreateObjTrace \ + (tclStubsPtr->tcl_CreateObjTrace) /* 483 */ +#endif +#ifndef Tcl_GetCommandInfoFromToken +#define Tcl_GetCommandInfoFromToken \ + (tclStubsPtr->tcl_GetCommandInfoFromToken) /* 484 */ +#endif +#ifndef Tcl_SetCommandInfoFromToken +#define Tcl_SetCommandInfoFromToken \ + (tclStubsPtr->tcl_SetCommandInfoFromToken) /* 485 */ +#endif +#ifndef Tcl_DbNewWideIntObj +#define Tcl_DbNewWideIntObj \ + (tclStubsPtr->tcl_DbNewWideIntObj) /* 486 */ +#endif +#ifndef Tcl_GetWideIntFromObj +#define Tcl_GetWideIntFromObj \ + (tclStubsPtr->tcl_GetWideIntFromObj) /* 487 */ +#endif +#ifndef Tcl_NewWideIntObj +#define Tcl_NewWideIntObj \ + (tclStubsPtr->tcl_NewWideIntObj) /* 488 */ +#endif +#ifndef Tcl_SetWideIntObj +#define Tcl_SetWideIntObj \ + (tclStubsPtr->tcl_SetWideIntObj) /* 489 */ +#endif +#ifndef Tcl_AllocStatBuf +#define Tcl_AllocStatBuf \ + (tclStubsPtr->tcl_AllocStatBuf) /* 490 */ +#endif +#ifndef Tcl_Seek +#define Tcl_Seek \ + (tclStubsPtr->tcl_Seek) /* 491 */ +#endif +#ifndef Tcl_Tell +#define Tcl_Tell \ + (tclStubsPtr->tcl_Tell) /* 492 */ +#endif +#ifndef Tcl_ChannelWideSeekProc +#define Tcl_ChannelWideSeekProc \ + (tclStubsPtr->tcl_ChannelWideSeekProc) /* 493 */ +#endif + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLDECLS */ + diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index 9bb472d..291371e 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -1,1362 +1,1362 @@ -/* - * tclIntDecls.h -- - * - * This file contains the declarations for all unsupported - * functions that are exported by the Tcl library. These - * interfaces are not guaranteed to remain the same between - * versions. Use at your own risk. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.2 2004/05/17 14:26:49 kennykb Exp $ - */ - -#ifndef _TCLINTDECLS -#define _TCLINTDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tclInt.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -/* Slot 0 is reserved */ -/* 1 */ -EXTERN int TclAccessDeleteProc _ANSI_ARGS_(( - TclAccessProc_ * proc)); -/* 2 */ -EXTERN int TclAccessInsertProc _ANSI_ARGS_(( - TclAccessProc_ * proc)); -/* 3 */ -EXTERN void TclAllocateFreeObjects _ANSI_ARGS_((void)); -/* Slot 4 is reserved */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 5 */ -EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, - int numPids, Tcl_Pid * pidPtr, - Tcl_Channel errorChan)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 5 */ -EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, - int numPids, Tcl_Pid * pidPtr, - Tcl_Channel errorChan)); -#endif /* __WIN32__ */ -/* 6 */ -EXTERN void TclCleanupCommand _ANSI_ARGS_((Command * cmdPtr)); -/* 7 */ -EXTERN int TclCopyAndCollapse _ANSI_ARGS_((int count, - CONST char * src, char * dst)); -/* 8 */ -EXTERN int TclCopyChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel inChan, Tcl_Channel outChan, - int toRead, Tcl_Obj * cmdPtr)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 9 */ -EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, - TclFile * outPipePtr, TclFile * errFilePtr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 9 */ -EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, - TclFile * outPipePtr, TclFile * errFilePtr)); -#endif /* __WIN32__ */ -/* 10 */ -EXTERN int TclCreateProc _ANSI_ARGS_((Tcl_Interp * interp, - Namespace * nsPtr, CONST char * procName, - Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, - Proc ** procPtrPtr)); -/* 11 */ -EXTERN void TclDeleteCompiledLocalVars _ANSI_ARGS_(( - Interp * iPtr, CallFrame * framePtr)); -/* 12 */ -EXTERN void TclDeleteVars _ANSI_ARGS_((Interp * iPtr, - Tcl_HashTable * tablePtr)); -/* 13 */ -EXTERN int TclDoGlob _ANSI_ARGS_((Tcl_Interp * interp, - char * separators, Tcl_DString * headPtr, - char * tail, Tcl_GlobTypeData * types)); -/* 14 */ -EXTERN void TclDumpMemoryInfo _ANSI_ARGS_((FILE * outFile)); -/* Slot 15 is reserved */ -/* 16 */ -EXTERN void TclExprFloatError _ANSI_ARGS_((Tcl_Interp * interp, - double value)); -/* Slot 17 is reserved */ -/* Slot 18 is reserved */ -/* Slot 19 is reserved */ -/* Slot 20 is reserved */ -/* Slot 21 is reserved */ -/* 22 */ -EXTERN int TclFindElement _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * listStr, int listLength, - CONST char ** elementPtr, - CONST char ** nextPtr, int * sizePtr, - int * bracePtr)); -/* 23 */ -EXTERN Proc * TclFindProc _ANSI_ARGS_((Interp * iPtr, - CONST char * procName)); -/* 24 */ -EXTERN int TclFormatInt _ANSI_ARGS_((char * buffer, long n)); -/* 25 */ -EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp * iPtr)); -/* Slot 26 is reserved */ -/* 27 */ -EXTERN int TclGetDate _ANSI_ARGS_((char * p, unsigned long now, - long zone, unsigned long * timePtr)); -/* 28 */ -EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type)); -/* Slot 29 is reserved */ -/* Slot 30 is reserved */ -/* 31 */ -EXTERN char * TclGetExtension _ANSI_ARGS_((char * name)); -/* 32 */ -EXTERN int TclGetFrame _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CallFrame ** framePtrPtr)); -/* 33 */ -EXTERN TclCmdProcType TclGetInterpProc _ANSI_ARGS_((void)); -/* 34 */ -EXTERN int TclGetIntForIndex _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int endValue, - int * indexPtr)); -/* Slot 35 is reserved */ -/* 36 */ -EXTERN int TclGetLong _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, long * longPtr)); -/* 37 */ -EXTERN int TclGetLoadedPackages _ANSI_ARGS_(( - Tcl_Interp * interp, char * targetName)); -/* 38 */ -EXTERN int TclGetNamespaceForQualName _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * qualName, - Namespace * cxtNsPtr, int flags, - Namespace ** nsPtrPtr, - Namespace ** altNsPtrPtr, - Namespace ** actualCxtPtrPtr, - CONST char ** simpleNamePtr)); -/* 39 */ -EXTERN TclObjCmdProcType TclGetObjInterpProc _ANSI_ARGS_((void)); -/* 40 */ -EXTERN int TclGetOpenMode _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * seekFlagPtr)); -/* 41 */ -EXTERN Tcl_Command TclGetOriginalCommand _ANSI_ARGS_(( - Tcl_Command command)); -/* 42 */ -EXTERN char * TclpGetUserHome _ANSI_ARGS_((CONST char * name, - Tcl_DString * bufferPtr)); -/* 43 */ -EXTERN int TclGlobalInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST84 char ** argv, int flags)); -/* 44 */ -EXTERN int TclGuessPackageName _ANSI_ARGS_(( - CONST char * fileName, Tcl_DString * bufPtr)); -/* 45 */ -EXTERN int TclHideUnsafeCommands _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 46 */ -EXTERN int TclInExit _ANSI_ARGS_((void)); -/* Slot 47 is reserved */ -/* Slot 48 is reserved */ -/* 49 */ -EXTERN Tcl_Obj * TclIncrVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - long incrAmount, int part1NotParsed)); -/* 50 */ -EXTERN void TclInitCompiledLocals _ANSI_ARGS_(( - Tcl_Interp * interp, CallFrame * framePtr, - Namespace * nsPtr)); -/* 51 */ -EXTERN int TclInterpInit _ANSI_ARGS_((Tcl_Interp * interp)); -/* 52 */ -EXTERN int TclInvoke _ANSI_ARGS_((Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -/* 53 */ -EXTERN int TclInvokeObjectCommand _ANSI_ARGS_(( - ClientData clientData, Tcl_Interp * interp, - int argc, CONST84 char ** argv)); -/* 54 */ -EXTERN int TclInvokeStringCommand _ANSI_ARGS_(( - ClientData clientData, Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[])); -/* 55 */ -EXTERN Proc * TclIsProc _ANSI_ARGS_((Command * cmdPtr)); -/* Slot 56 is reserved */ -/* Slot 57 is reserved */ -/* 58 */ -EXTERN Var * TclLookupVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, CONST char * msg, int createPart1, - int createPart2, Var ** arrayPtrPtr)); -/* Slot 59 is reserved */ -/* 60 */ -EXTERN int TclNeedSpace _ANSI_ARGS_((CONST char * start, - CONST char * end)); -/* 61 */ -EXTERN Tcl_Obj * TclNewProcBodyObj _ANSI_ARGS_((Proc * procPtr)); -/* 62 */ -EXTERN int TclObjCommandComplete _ANSI_ARGS_((Tcl_Obj * cmdPtr)); -/* 63 */ -EXTERN int TclObjInterpProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int objc, - Tcl_Obj *CONST objv[])); -/* 64 */ -EXTERN int TclObjInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 65 */ -EXTERN int TclObjInvokeGlobal _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 66 */ -EXTERN int TclOpenFileChannelDeleteProc _ANSI_ARGS_(( - TclOpenFileChannelProc_ * proc)); -/* 67 */ -EXTERN int TclOpenFileChannelInsertProc _ANSI_ARGS_(( - TclOpenFileChannelProc_ * proc)); -/* Slot 68 is reserved */ -/* 69 */ -EXTERN char * TclpAlloc _ANSI_ARGS_((unsigned int size)); -/* Slot 70 is reserved */ -/* Slot 71 is reserved */ -/* Slot 72 is reserved */ -/* Slot 73 is reserved */ -/* 74 */ -EXTERN void TclpFree _ANSI_ARGS_((char * ptr)); -/* 75 */ -EXTERN unsigned long TclpGetClicks _ANSI_ARGS_((void)); -/* 76 */ -EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void)); -/* 77 */ -EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time * time)); -/* 78 */ -EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time)); -/* Slot 79 is reserved */ -/* Slot 80 is reserved */ -/* 81 */ -EXTERN char * TclpRealloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* Slot 82 is reserved */ -/* Slot 83 is reserved */ -/* Slot 84 is reserved */ -/* Slot 85 is reserved */ -/* Slot 86 is reserved */ -/* Slot 87 is reserved */ -/* 88 */ -EXTERN char * TclPrecTraceProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, CONST char * name1, - CONST char * name2, int flags)); -/* 89 */ -EXTERN int TclPreventAliasLoop _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Interp * cmdInterp, Tcl_Command cmd)); -/* Slot 90 is reserved */ -/* 91 */ -EXTERN void TclProcCleanupProc _ANSI_ARGS_((Proc * procPtr)); -/* 92 */ -EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp * interp, - Proc * procPtr, Tcl_Obj * bodyPtr, - Namespace * nsPtr, CONST char * description, - CONST char * procName)); -/* 93 */ -EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData)); -/* 94 */ -EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int argc, - CONST84 char ** argv)); -/* Slot 95 is reserved */ -/* 96 */ -EXTERN int TclRenameCommand _ANSI_ARGS_((Tcl_Interp * interp, - char * oldName, char * newName)); -/* 97 */ -EXTERN void TclResetShadowedCmdRefs _ANSI_ARGS_(( - Tcl_Interp * interp, Command * newCmdPtr)); -/* 98 */ -EXTERN int TclServiceIdle _ANSI_ARGS_((void)); -/* Slot 99 is reserved */ -/* Slot 100 is reserved */ -/* 101 */ -EXTERN char * TclSetPreInitScript _ANSI_ARGS_((char * string)); -/* 102 */ -EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp * interp)); -/* 103 */ -EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp * interp, - char * str, char * proto, int * portPtr)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 104 */ -EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, - int size)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 104 */ -EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, - int size)); -#endif /* __WIN32__ */ -/* Slot 105 is reserved */ -/* 106 */ -EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ * proc)); -/* 107 */ -EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ * proc)); -/* 108 */ -EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace * nsPtr)); -/* 109 */ -EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp * iPtr)); -/* Slot 110 is reserved */ -/* 111 */ -EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_ResolveCmdProc * cmdProc, - Tcl_ResolveVarProc * varProc, - Tcl_ResolveCompiledVarProc * compiledVarProc)); -/* 112 */ -EXTERN int Tcl_AppendExportList _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Namespace * nsPtr, - Tcl_Obj * objPtr)); -/* 113 */ -EXTERN Tcl_Namespace * Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, ClientData clientData, - Tcl_NamespaceDeleteProc * deleteProc)); -/* 114 */ -EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_(( - Tcl_Namespace * nsPtr)); -/* 115 */ -EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern, - int resetListFirst)); -/* 116 */ -EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 117 */ -EXTERN Tcl_Namespace * Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 118 */ -EXTERN int Tcl_GetInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_ResolverInfo * resInfo)); -/* 119 */ -EXTERN int Tcl_GetNamespaceResolvers _ANSI_ARGS_(( - Tcl_Namespace * namespacePtr, - Tcl_ResolverInfo * resInfo)); -/* 120 */ -EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 121 */ -EXTERN int Tcl_ForgetImport _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern)); -/* 122 */ -EXTERN Tcl_Command Tcl_GetCommandFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr)); -/* 123 */ -EXTERN void Tcl_GetCommandFullName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command, - Tcl_Obj * objPtr)); -/* 124 */ -EXTERN Tcl_Namespace * Tcl_GetCurrentNamespace _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 125 */ -EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 126 */ -EXTERN void Tcl_GetVariableFullName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Var variable, - Tcl_Obj * objPtr)); -/* 127 */ -EXTERN int Tcl_Import _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern, - int allowOverwrite)); -/* 128 */ -EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp* interp)); -/* 129 */ -EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp* interp, - Tcl_CallFrame * framePtr, - Tcl_Namespace * nsPtr, int isProcCallFrame)); -/* 130 */ -EXTERN int Tcl_RemoveInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name)); -/* 131 */ -EXTERN void Tcl_SetNamespaceResolvers _ANSI_ARGS_(( - Tcl_Namespace * namespacePtr, - Tcl_ResolveCmdProc * cmdProc, - Tcl_ResolveVarProc * varProc, - Tcl_ResolveCompiledVarProc * compiledVarProc)); -/* 132 */ -EXTERN int TclpHasSockets _ANSI_ARGS_((Tcl_Interp * interp)); -/* 133 */ -EXTERN struct tm * TclpGetDate _ANSI_ARGS_((TclpTime_t time, int useGMT)); -/* 134 */ -EXTERN size_t TclpStrftime _ANSI_ARGS_((char * s, size_t maxsize, - CONST char * format, CONST struct tm * t, - int useGMT)); -/* 135 */ -EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void)); -/* Slot 136 is reserved */ -/* Slot 137 is reserved */ -/* 138 */ -EXTERN CONST84_RETURN char * TclGetEnv _ANSI_ARGS_((CONST char * name, - Tcl_DString * valuePtr)); -/* Slot 139 is reserved */ -/* 140 */ -EXTERN int TclLooksLikeInt _ANSI_ARGS_((CONST char * bytes, - int length)); -/* 141 */ -EXTERN CONST84_RETURN char * TclpGetCwd _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * cwdPtr)); -/* 142 */ -EXTERN int TclSetByteCodeFromAny _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - CompileHookProc * hookProc, - ClientData clientData)); -/* 143 */ -EXTERN int TclAddLiteralObj _ANSI_ARGS_(( - struct CompileEnv * envPtr, Tcl_Obj * objPtr, - LiteralEntry ** litPtrPtr)); -/* 144 */ -EXTERN void TclHideLiteral _ANSI_ARGS_((Tcl_Interp * interp, - struct CompileEnv * envPtr, int index)); -/* 145 */ -EXTERN struct AuxDataType * TclGetAuxDataType _ANSI_ARGS_((char * typeName)); -/* 146 */ -EXTERN TclHandle TclHandleCreate _ANSI_ARGS_((VOID * ptr)); -/* 147 */ -EXTERN void TclHandleFree _ANSI_ARGS_((TclHandle handle)); -/* 148 */ -EXTERN TclHandle TclHandlePreserve _ANSI_ARGS_((TclHandle handle)); -/* 149 */ -EXTERN void TclHandleRelease _ANSI_ARGS_((TclHandle handle)); -/* 150 */ -EXTERN int TclRegAbout _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp re)); -/* 151 */ -EXTERN void TclRegExpRangeUniChar _ANSI_ARGS_((Tcl_RegExp re, - int index, int * startPtr, int * endPtr)); -/* 152 */ -EXTERN void TclSetLibraryPath _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 153 */ -EXTERN Tcl_Obj * TclGetLibraryPath _ANSI_ARGS_((void)); -/* Slot 154 is reserved */ -/* Slot 155 is reserved */ -/* 156 */ -EXTERN void TclRegError _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * msg, int status)); -/* 157 */ -EXTERN Var * TclVarTraceExists _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 158 */ -EXTERN void TclSetStartupScriptFileName _ANSI_ARGS_(( - CONST char * filename)); -/* 159 */ -EXTERN CONST84_RETURN char * TclGetStartupScriptFileName _ANSI_ARGS_((void)); -/* Slot 160 is reserved */ -/* 161 */ -EXTERN int TclChannelTransform _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); -/* 162 */ -EXTERN void TclChannelEventScriptInvoker _ANSI_ARGS_(( - ClientData clientData, int flags)); -/* 163 */ -EXTERN void * TclGetInstructionTable _ANSI_ARGS_((void)); -/* 164 */ -EXTERN void TclExpandCodeArray _ANSI_ARGS_((void * envPtr)); -/* 165 */ -EXTERN void TclpSetInitialEncodings _ANSI_ARGS_((void)); -/* 166 */ -EXTERN int TclListObjSetElement _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - int index, Tcl_Obj * valuePtr)); -/* 167 */ -EXTERN void TclSetStartupScriptPath _ANSI_ARGS_(( - Tcl_Obj * pathPtr)); -/* 168 */ -EXTERN Tcl_Obj * TclGetStartupScriptPath _ANSI_ARGS_((void)); -/* 169 */ -EXTERN int TclpUtfNcmp2 _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 170 */ -EXTERN int TclCheckInterpTraces _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * command, - int numChars, Command * cmdPtr, int result, - int traceFlags, int objc, - Tcl_Obj *CONST objv[])); -/* 171 */ -EXTERN int TclCheckExecutionTraces _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * command, - int numChars, Command * cmdPtr, int result, - int traceFlags, int objc, - Tcl_Obj *CONST objv[])); -/* 172 */ -EXTERN int TclInThreadExit _ANSI_ARGS_((void)); -/* 173 */ -EXTERN int TclUniCharMatch _ANSI_ARGS_(( - CONST Tcl_UniChar * string, int strLen, - CONST Tcl_UniChar * pattern, int ptnLen, - int nocase)); -/* Slot 174 is reserved */ -/* Slot 175 is reserved */ -/* Slot 176 is reserved */ -/* Slot 177 is reserved */ -/* Slot 178 is reserved */ -/* Slot 179 is reserved */ -/* Slot 180 is reserved */ -/* Slot 181 is reserved */ -/* 182 */ -EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t clock)); -/* 183 */ -EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t clock)); - -typedef struct TclIntStubs { - int magic; - struct TclIntStubHooks *hooks; - - void *reserved0; - int (*tclAccessDeleteProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 1 */ - int (*tclAccessInsertProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 2 */ - void (*tclAllocateFreeObjects) _ANSI_ARGS_((void)); /* 3 */ - void *reserved4; -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved5; -#endif /* MAC_TCL */ - void (*tclCleanupCommand) _ANSI_ARGS_((Command * cmdPtr)); /* 6 */ - int (*tclCopyAndCollapse) _ANSI_ARGS_((int count, CONST char * src, char * dst)); /* 7 */ - int (*tclCopyChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel inChan, Tcl_Channel outChan, int toRead, Tcl_Obj * cmdPtr)); /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved9; -#endif /* MAC_TCL */ - int (*tclCreateProc) _ANSI_ARGS_((Tcl_Interp * interp, Namespace * nsPtr, CONST char * procName, Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, Proc ** procPtrPtr)); /* 10 */ - void (*tclDeleteCompiledLocalVars) _ANSI_ARGS_((Interp * iPtr, CallFrame * framePtr)); /* 11 */ - void (*tclDeleteVars) _ANSI_ARGS_((Interp * iPtr, Tcl_HashTable * tablePtr)); /* 12 */ - int (*tclDoGlob) _ANSI_ARGS_((Tcl_Interp * interp, char * separators, Tcl_DString * headPtr, char * tail, Tcl_GlobTypeData * types)); /* 13 */ - void (*tclDumpMemoryInfo) _ANSI_ARGS_((FILE * outFile)); /* 14 */ - void *reserved15; - void (*tclExprFloatError) _ANSI_ARGS_((Tcl_Interp * interp, double value)); /* 16 */ - void *reserved17; - void *reserved18; - void *reserved19; - void *reserved20; - void *reserved21; - int (*tclFindElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int listLength, CONST char ** elementPtr, CONST char ** nextPtr, int * sizePtr, int * bracePtr)); /* 22 */ - Proc * (*tclFindProc) _ANSI_ARGS_((Interp * iPtr, CONST char * procName)); /* 23 */ - int (*tclFormatInt) _ANSI_ARGS_((char * buffer, long n)); /* 24 */ - void (*tclFreePackageInfo) _ANSI_ARGS_((Interp * iPtr)); /* 25 */ - void *reserved26; - int (*tclGetDate) _ANSI_ARGS_((char * p, unsigned long now, long zone, unsigned long * timePtr)); /* 27 */ - Tcl_Channel (*tclpGetDefaultStdChannel) _ANSI_ARGS_((int type)); /* 28 */ - void *reserved29; - void *reserved30; - char * (*tclGetExtension) _ANSI_ARGS_((char * name)); /* 31 */ - int (*tclGetFrame) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CallFrame ** framePtrPtr)); /* 32 */ - TclCmdProcType (*tclGetInterpProc) _ANSI_ARGS_((void)); /* 33 */ - int (*tclGetIntForIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int endValue, int * indexPtr)); /* 34 */ - void *reserved35; - int (*tclGetLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * longPtr)); /* 36 */ - int (*tclGetLoadedPackages) _ANSI_ARGS_((Tcl_Interp * interp, char * targetName)); /* 37 */ - int (*tclGetNamespaceForQualName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * qualName, Namespace * cxtNsPtr, int flags, Namespace ** nsPtrPtr, Namespace ** altNsPtrPtr, Namespace ** actualCxtPtrPtr, CONST char ** simpleNamePtr)); /* 38 */ - TclObjCmdProcType (*tclGetObjInterpProc) _ANSI_ARGS_((void)); /* 39 */ - int (*tclGetOpenMode) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * seekFlagPtr)); /* 40 */ - Tcl_Command (*tclGetOriginalCommand) _ANSI_ARGS_((Tcl_Command command)); /* 41 */ - char * (*tclpGetUserHome) _ANSI_ARGS_((CONST char * name, Tcl_DString * bufferPtr)); /* 42 */ - int (*tclGlobalInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 43 */ - int (*tclGuessPackageName) _ANSI_ARGS_((CONST char * fileName, Tcl_DString * bufPtr)); /* 44 */ - int (*tclHideUnsafeCommands) _ANSI_ARGS_((Tcl_Interp * interp)); /* 45 */ - int (*tclInExit) _ANSI_ARGS_((void)); /* 46 */ - void *reserved47; - void *reserved48; - Tcl_Obj * (*tclIncrVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, long incrAmount, int part1NotParsed)); /* 49 */ - void (*tclInitCompiledLocals) _ANSI_ARGS_((Tcl_Interp * interp, CallFrame * framePtr, Namespace * nsPtr)); /* 50 */ - int (*tclInterpInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 51 */ - int (*tclInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 52 */ - int (*tclInvokeObjectCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 53 */ - int (*tclInvokeStringCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 54 */ - Proc * (*tclIsProc) _ANSI_ARGS_((Command * cmdPtr)); /* 55 */ - void *reserved56; - void *reserved57; - Var * (*tclLookupVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, CONST char * msg, int createPart1, int createPart2, Var ** arrayPtrPtr)); /* 58 */ - void *reserved59; - int (*tclNeedSpace) _ANSI_ARGS_((CONST char * start, CONST char * end)); /* 60 */ - Tcl_Obj * (*tclNewProcBodyObj) _ANSI_ARGS_((Proc * procPtr)); /* 61 */ - int (*tclObjCommandComplete) _ANSI_ARGS_((Tcl_Obj * cmdPtr)); /* 62 */ - int (*tclObjInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 63 */ - int (*tclObjInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 64 */ - int (*tclObjInvokeGlobal) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 65 */ - int (*tclOpenFileChannelDeleteProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 66 */ - int (*tclOpenFileChannelInsertProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 67 */ - void *reserved68; - char * (*tclpAlloc) _ANSI_ARGS_((unsigned int size)); /* 69 */ - void *reserved70; - void *reserved71; - void *reserved72; - void *reserved73; - void (*tclpFree) _ANSI_ARGS_((char * ptr)); /* 74 */ - unsigned long (*tclpGetClicks) _ANSI_ARGS_((void)); /* 75 */ - unsigned long (*tclpGetSeconds) _ANSI_ARGS_((void)); /* 76 */ - void (*tclpGetTime) _ANSI_ARGS_((Tcl_Time * time)); /* 77 */ - int (*tclpGetTimeZone) _ANSI_ARGS_((unsigned long time)); /* 78 */ - void *reserved79; - void *reserved80; - char * (*tclpRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 81 */ - void *reserved82; - void *reserved83; - void *reserved84; - void *reserved85; - void *reserved86; - void *reserved87; - char * (*tclPrecTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, CONST char * name1, CONST char * name2, int flags)); /* 88 */ - int (*tclPreventAliasLoop) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Interp * cmdInterp, Tcl_Command cmd)); /* 89 */ - void *reserved90; - void (*tclProcCleanupProc) _ANSI_ARGS_((Proc * procPtr)); /* 91 */ - int (*tclProcCompileProc) _ANSI_ARGS_((Tcl_Interp * interp, Proc * procPtr, Tcl_Obj * bodyPtr, Namespace * nsPtr, CONST char * description, CONST char * procName)); /* 92 */ - void (*tclProcDeleteProc) _ANSI_ARGS_((ClientData clientData)); /* 93 */ - int (*tclProcInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 94 */ - void *reserved95; - int (*tclRenameCommand) _ANSI_ARGS_((Tcl_Interp * interp, char * oldName, char * newName)); /* 96 */ - void (*tclResetShadowedCmdRefs) _ANSI_ARGS_((Tcl_Interp * interp, Command * newCmdPtr)); /* 97 */ - int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ - void *reserved99; - void *reserved100; - char * (*tclSetPreInitScript) _ANSI_ARGS_((char * string)); /* 101 */ - void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp * interp)); /* 102 */ - int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp * interp, char * str, char * proto, int * portPtr)); /* 103 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved104; -#endif /* MAC_TCL */ - void *reserved105; - int (*tclStatDeleteProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 106 */ - int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 107 */ - void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace * nsPtr)); /* 108 */ - int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp * iPtr)); /* 109 */ - void *reserved110; - void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 111 */ - int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, Tcl_Obj * objPtr)); /* 112 */ - Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, ClientData clientData, Tcl_NamespaceDeleteProc * deleteProc)); /* 113 */ - void (*tcl_DeleteNamespace) _ANSI_ARGS_((Tcl_Namespace * nsPtr)); /* 114 */ - int (*tcl_Export) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int resetListFirst)); /* 115 */ - Tcl_Command (*tcl_FindCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 116 */ - Tcl_Namespace * (*tcl_FindNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 117 */ - int (*tcl_GetInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolverInfo * resInfo)); /* 118 */ - int (*tcl_GetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolverInfo * resInfo)); /* 119 */ - Tcl_Var (*tcl_FindNamespaceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 120 */ - int (*tcl_ForgetImport) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern)); /* 121 */ - Tcl_Command (*tcl_GetCommandFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 122 */ - void (*tcl_GetCommandFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command, Tcl_Obj * objPtr)); /* 123 */ - Tcl_Namespace * (*tcl_GetCurrentNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 124 */ - Tcl_Namespace * (*tcl_GetGlobalNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 125 */ - void (*tcl_GetVariableFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Var variable, Tcl_Obj * objPtr)); /* 126 */ - int (*tcl_Import) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int allowOverwrite)); /* 127 */ - void (*tcl_PopCallFrame) _ANSI_ARGS_((Tcl_Interp* interp)); /* 128 */ - int (*tcl_PushCallFrame) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_CallFrame * framePtr, Tcl_Namespace * nsPtr, int isProcCallFrame)); /* 129 */ - int (*tcl_RemoveInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 130 */ - void (*tcl_SetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 131 */ - int (*tclpHasSockets) _ANSI_ARGS_((Tcl_Interp * interp)); /* 132 */ - struct tm * (*tclpGetDate) _ANSI_ARGS_((TclpTime_t time, int useGMT)); /* 133 */ - size_t (*tclpStrftime) _ANSI_ARGS_((char * s, size_t maxsize, CONST char * format, CONST struct tm * t, int useGMT)); /* 134 */ - int (*tclpCheckStackSpace) _ANSI_ARGS_((void)); /* 135 */ - void *reserved136; - void *reserved137; - CONST84_RETURN char * (*tclGetEnv) _ANSI_ARGS_((CONST char * name, Tcl_DString * valuePtr)); /* 138 */ - void *reserved139; - int (*tclLooksLikeInt) _ANSI_ARGS_((CONST char * bytes, int length)); /* 140 */ - CONST84_RETURN char * (*tclpGetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 141 */ - int (*tclSetByteCodeFromAny) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CompileHookProc * hookProc, ClientData clientData)); /* 142 */ - int (*tclAddLiteralObj) _ANSI_ARGS_((struct CompileEnv * envPtr, Tcl_Obj * objPtr, LiteralEntry ** litPtrPtr)); /* 143 */ - void (*tclHideLiteral) _ANSI_ARGS_((Tcl_Interp * interp, struct CompileEnv * envPtr, int index)); /* 144 */ - struct AuxDataType * (*tclGetAuxDataType) _ANSI_ARGS_((char * typeName)); /* 145 */ - TclHandle (*tclHandleCreate) _ANSI_ARGS_((VOID * ptr)); /* 146 */ - void (*tclHandleFree) _ANSI_ARGS_((TclHandle handle)); /* 147 */ - TclHandle (*tclHandlePreserve) _ANSI_ARGS_((TclHandle handle)); /* 148 */ - void (*tclHandleRelease) _ANSI_ARGS_((TclHandle handle)); /* 149 */ - int (*tclRegAbout) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp re)); /* 150 */ - void (*tclRegExpRangeUniChar) _ANSI_ARGS_((Tcl_RegExp re, int index, int * startPtr, int * endPtr)); /* 151 */ - void (*tclSetLibraryPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 152 */ - Tcl_Obj * (*tclGetLibraryPath) _ANSI_ARGS_((void)); /* 153 */ - void *reserved154; - void *reserved155; - void (*tclRegError) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * msg, int status)); /* 156 */ - Var * (*tclVarTraceExists) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 157 */ - void (*tclSetStartupScriptFileName) _ANSI_ARGS_((CONST char * filename)); /* 158 */ - CONST84_RETURN char * (*tclGetStartupScriptFileName) _ANSI_ARGS_((void)); /* 159 */ - void *reserved160; - int (*tclChannelTransform) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); /* 161 */ - void (*tclChannelEventScriptInvoker) _ANSI_ARGS_((ClientData clientData, int flags)); /* 162 */ - void * (*tclGetInstructionTable) _ANSI_ARGS_((void)); /* 163 */ - void (*tclExpandCodeArray) _ANSI_ARGS_((void * envPtr)); /* 164 */ - void (*tclpSetInitialEncodings) _ANSI_ARGS_((void)); /* 165 */ - int (*tclListObjSetElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj * valuePtr)); /* 166 */ - void (*tclSetStartupScriptPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 167 */ - Tcl_Obj * (*tclGetStartupScriptPath) _ANSI_ARGS_((void)); /* 168 */ - int (*tclpUtfNcmp2) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 169 */ - int (*tclCheckInterpTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 170 */ - int (*tclCheckExecutionTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 171 */ - int (*tclInThreadExit) _ANSI_ARGS_((void)); /* 172 */ - int (*tclUniCharMatch) _ANSI_ARGS_((CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); /* 173 */ - void *reserved174; - void *reserved175; - void *reserved176; - void *reserved177; - void *reserved178; - void *reserved179; - void *reserved180; - void *reserved181; - struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t clock)); /* 182 */ - struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ -} TclIntStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclIntStubs *tclIntStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -/* Slot 0 is reserved */ -#ifndef TclAccessDeleteProc -#define TclAccessDeleteProc \ - (tclIntStubsPtr->tclAccessDeleteProc) /* 1 */ -#endif -#ifndef TclAccessInsertProc -#define TclAccessInsertProc \ - (tclIntStubsPtr->tclAccessInsertProc) /* 2 */ -#endif -#ifndef TclAllocateFreeObjects -#define TclAllocateFreeObjects \ - (tclIntStubsPtr->tclAllocateFreeObjects) /* 3 */ -#endif -/* Slot 4 is reserved */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclCleanupChildren -#define TclCleanupChildren \ - (tclIntStubsPtr->tclCleanupChildren) /* 5 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclCleanupChildren -#define TclCleanupChildren \ - (tclIntStubsPtr->tclCleanupChildren) /* 5 */ -#endif -#endif /* __WIN32__ */ -#ifndef TclCleanupCommand -#define TclCleanupCommand \ - (tclIntStubsPtr->tclCleanupCommand) /* 6 */ -#endif -#ifndef TclCopyAndCollapse -#define TclCopyAndCollapse \ - (tclIntStubsPtr->tclCopyAndCollapse) /* 7 */ -#endif -#ifndef TclCopyChannel -#define TclCopyChannel \ - (tclIntStubsPtr->tclCopyChannel) /* 8 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclCreatePipeline -#define TclCreatePipeline \ - (tclIntStubsPtr->tclCreatePipeline) /* 9 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclCreatePipeline -#define TclCreatePipeline \ - (tclIntStubsPtr->tclCreatePipeline) /* 9 */ -#endif -#endif /* __WIN32__ */ -#ifndef TclCreateProc -#define TclCreateProc \ - (tclIntStubsPtr->tclCreateProc) /* 10 */ -#endif -#ifndef TclDeleteCompiledLocalVars -#define TclDeleteCompiledLocalVars \ - (tclIntStubsPtr->tclDeleteCompiledLocalVars) /* 11 */ -#endif -#ifndef TclDeleteVars -#define TclDeleteVars \ - (tclIntStubsPtr->tclDeleteVars) /* 12 */ -#endif -#ifndef TclDoGlob -#define TclDoGlob \ - (tclIntStubsPtr->tclDoGlob) /* 13 */ -#endif -#ifndef TclDumpMemoryInfo -#define TclDumpMemoryInfo \ - (tclIntStubsPtr->tclDumpMemoryInfo) /* 14 */ -#endif -/* Slot 15 is reserved */ -#ifndef TclExprFloatError -#define TclExprFloatError \ - (tclIntStubsPtr->tclExprFloatError) /* 16 */ -#endif -/* Slot 17 is reserved */ -/* Slot 18 is reserved */ -/* Slot 19 is reserved */ -/* Slot 20 is reserved */ -/* Slot 21 is reserved */ -#ifndef TclFindElement -#define TclFindElement \ - (tclIntStubsPtr->tclFindElement) /* 22 */ -#endif -#ifndef TclFindProc -#define TclFindProc \ - (tclIntStubsPtr->tclFindProc) /* 23 */ -#endif -#ifndef TclFormatInt -#define TclFormatInt \ - (tclIntStubsPtr->tclFormatInt) /* 24 */ -#endif -#ifndef TclFreePackageInfo -#define TclFreePackageInfo \ - (tclIntStubsPtr->tclFreePackageInfo) /* 25 */ -#endif -/* Slot 26 is reserved */ -#ifndef TclGetDate -#define TclGetDate \ - (tclIntStubsPtr->tclGetDate) /* 27 */ -#endif -#ifndef TclpGetDefaultStdChannel -#define TclpGetDefaultStdChannel \ - (tclIntStubsPtr->tclpGetDefaultStdChannel) /* 28 */ -#endif -/* Slot 29 is reserved */ -/* Slot 30 is reserved */ -#ifndef TclGetExtension -#define TclGetExtension \ - (tclIntStubsPtr->tclGetExtension) /* 31 */ -#endif -#ifndef TclGetFrame -#define TclGetFrame \ - (tclIntStubsPtr->tclGetFrame) /* 32 */ -#endif -#ifndef TclGetInterpProc -#define TclGetInterpProc \ - (tclIntStubsPtr->tclGetInterpProc) /* 33 */ -#endif -#ifndef TclGetIntForIndex -#define TclGetIntForIndex \ - (tclIntStubsPtr->tclGetIntForIndex) /* 34 */ -#endif -/* Slot 35 is reserved */ -#ifndef TclGetLong -#define TclGetLong \ - (tclIntStubsPtr->tclGetLong) /* 36 */ -#endif -#ifndef TclGetLoadedPackages -#define TclGetLoadedPackages \ - (tclIntStubsPtr->tclGetLoadedPackages) /* 37 */ -#endif -#ifndef TclGetNamespaceForQualName -#define TclGetNamespaceForQualName \ - (tclIntStubsPtr->tclGetNamespaceForQualName) /* 38 */ -#endif -#ifndef TclGetObjInterpProc -#define TclGetObjInterpProc \ - (tclIntStubsPtr->tclGetObjInterpProc) /* 39 */ -#endif -#ifndef TclGetOpenMode -#define TclGetOpenMode \ - (tclIntStubsPtr->tclGetOpenMode) /* 40 */ -#endif -#ifndef TclGetOriginalCommand -#define TclGetOriginalCommand \ - (tclIntStubsPtr->tclGetOriginalCommand) /* 41 */ -#endif -#ifndef TclpGetUserHome -#define TclpGetUserHome \ - (tclIntStubsPtr->tclpGetUserHome) /* 42 */ -#endif -#ifndef TclGlobalInvoke -#define TclGlobalInvoke \ - (tclIntStubsPtr->tclGlobalInvoke) /* 43 */ -#endif -#ifndef TclGuessPackageName -#define TclGuessPackageName \ - (tclIntStubsPtr->tclGuessPackageName) /* 44 */ -#endif -#ifndef TclHideUnsafeCommands -#define TclHideUnsafeCommands \ - (tclIntStubsPtr->tclHideUnsafeCommands) /* 45 */ -#endif -#ifndef TclInExit -#define TclInExit \ - (tclIntStubsPtr->tclInExit) /* 46 */ -#endif -/* Slot 47 is reserved */ -/* Slot 48 is reserved */ -#ifndef TclIncrVar2 -#define TclIncrVar2 \ - (tclIntStubsPtr->tclIncrVar2) /* 49 */ -#endif -#ifndef TclInitCompiledLocals -#define TclInitCompiledLocals \ - (tclIntStubsPtr->tclInitCompiledLocals) /* 50 */ -#endif -#ifndef TclInterpInit -#define TclInterpInit \ - (tclIntStubsPtr->tclInterpInit) /* 51 */ -#endif -#ifndef TclInvoke -#define TclInvoke \ - (tclIntStubsPtr->tclInvoke) /* 52 */ -#endif -#ifndef TclInvokeObjectCommand -#define TclInvokeObjectCommand \ - (tclIntStubsPtr->tclInvokeObjectCommand) /* 53 */ -#endif -#ifndef TclInvokeStringCommand -#define TclInvokeStringCommand \ - (tclIntStubsPtr->tclInvokeStringCommand) /* 54 */ -#endif -#ifndef TclIsProc -#define TclIsProc \ - (tclIntStubsPtr->tclIsProc) /* 55 */ -#endif -/* Slot 56 is reserved */ -/* Slot 57 is reserved */ -#ifndef TclLookupVar -#define TclLookupVar \ - (tclIntStubsPtr->tclLookupVar) /* 58 */ -#endif -/* Slot 59 is reserved */ -#ifndef TclNeedSpace -#define TclNeedSpace \ - (tclIntStubsPtr->tclNeedSpace) /* 60 */ -#endif -#ifndef TclNewProcBodyObj -#define TclNewProcBodyObj \ - (tclIntStubsPtr->tclNewProcBodyObj) /* 61 */ -#endif -#ifndef TclObjCommandComplete -#define TclObjCommandComplete \ - (tclIntStubsPtr->tclObjCommandComplete) /* 62 */ -#endif -#ifndef TclObjInterpProc -#define TclObjInterpProc \ - (tclIntStubsPtr->tclObjInterpProc) /* 63 */ -#endif -#ifndef TclObjInvoke -#define TclObjInvoke \ - (tclIntStubsPtr->tclObjInvoke) /* 64 */ -#endif -#ifndef TclObjInvokeGlobal -#define TclObjInvokeGlobal \ - (tclIntStubsPtr->tclObjInvokeGlobal) /* 65 */ -#endif -#ifndef TclOpenFileChannelDeleteProc -#define TclOpenFileChannelDeleteProc \ - (tclIntStubsPtr->tclOpenFileChannelDeleteProc) /* 66 */ -#endif -#ifndef TclOpenFileChannelInsertProc -#define TclOpenFileChannelInsertProc \ - (tclIntStubsPtr->tclOpenFileChannelInsertProc) /* 67 */ -#endif -/* Slot 68 is reserved */ -#ifndef TclpAlloc -#define TclpAlloc \ - (tclIntStubsPtr->tclpAlloc) /* 69 */ -#endif -/* Slot 70 is reserved */ -/* Slot 71 is reserved */ -/* Slot 72 is reserved */ -/* Slot 73 is reserved */ -#ifndef TclpFree -#define TclpFree \ - (tclIntStubsPtr->tclpFree) /* 74 */ -#endif -#ifndef TclpGetClicks -#define TclpGetClicks \ - (tclIntStubsPtr->tclpGetClicks) /* 75 */ -#endif -#ifndef TclpGetSeconds -#define TclpGetSeconds \ - (tclIntStubsPtr->tclpGetSeconds) /* 76 */ -#endif -#ifndef TclpGetTime -#define TclpGetTime \ - (tclIntStubsPtr->tclpGetTime) /* 77 */ -#endif -#ifndef TclpGetTimeZone -#define TclpGetTimeZone \ - (tclIntStubsPtr->tclpGetTimeZone) /* 78 */ -#endif -/* Slot 79 is reserved */ -/* Slot 80 is reserved */ -#ifndef TclpRealloc -#define TclpRealloc \ - (tclIntStubsPtr->tclpRealloc) /* 81 */ -#endif -/* Slot 82 is reserved */ -/* Slot 83 is reserved */ -/* Slot 84 is reserved */ -/* Slot 85 is reserved */ -/* Slot 86 is reserved */ -/* Slot 87 is reserved */ -#ifndef TclPrecTraceProc -#define TclPrecTraceProc \ - (tclIntStubsPtr->tclPrecTraceProc) /* 88 */ -#endif -#ifndef TclPreventAliasLoop -#define TclPreventAliasLoop \ - (tclIntStubsPtr->tclPreventAliasLoop) /* 89 */ -#endif -/* Slot 90 is reserved */ -#ifndef TclProcCleanupProc -#define TclProcCleanupProc \ - (tclIntStubsPtr->tclProcCleanupProc) /* 91 */ -#endif -#ifndef TclProcCompileProc -#define TclProcCompileProc \ - (tclIntStubsPtr->tclProcCompileProc) /* 92 */ -#endif -#ifndef TclProcDeleteProc -#define TclProcDeleteProc \ - (tclIntStubsPtr->tclProcDeleteProc) /* 93 */ -#endif -#ifndef TclProcInterpProc -#define TclProcInterpProc \ - (tclIntStubsPtr->tclProcInterpProc) /* 94 */ -#endif -/* Slot 95 is reserved */ -#ifndef TclRenameCommand -#define TclRenameCommand \ - (tclIntStubsPtr->tclRenameCommand) /* 96 */ -#endif -#ifndef TclResetShadowedCmdRefs -#define TclResetShadowedCmdRefs \ - (tclIntStubsPtr->tclResetShadowedCmdRefs) /* 97 */ -#endif -#ifndef TclServiceIdle -#define TclServiceIdle \ - (tclIntStubsPtr->tclServiceIdle) /* 98 */ -#endif -/* Slot 99 is reserved */ -/* Slot 100 is reserved */ -#ifndef TclSetPreInitScript -#define TclSetPreInitScript \ - (tclIntStubsPtr->tclSetPreInitScript) /* 101 */ -#endif -#ifndef TclSetupEnv -#define TclSetupEnv \ - (tclIntStubsPtr->tclSetupEnv) /* 102 */ -#endif -#ifndef TclSockGetPort -#define TclSockGetPort \ - (tclIntStubsPtr->tclSockGetPort) /* 103 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclSockMinimumBuffers -#define TclSockMinimumBuffers \ - (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclSockMinimumBuffers -#define TclSockMinimumBuffers \ - (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ -#endif -#endif /* __WIN32__ */ -/* Slot 105 is reserved */ -#ifndef TclStatDeleteProc -#define TclStatDeleteProc \ - (tclIntStubsPtr->tclStatDeleteProc) /* 106 */ -#endif -#ifndef TclStatInsertProc -#define TclStatInsertProc \ - (tclIntStubsPtr->tclStatInsertProc) /* 107 */ -#endif -#ifndef TclTeardownNamespace -#define TclTeardownNamespace \ - (tclIntStubsPtr->tclTeardownNamespace) /* 108 */ -#endif -#ifndef TclUpdateReturnInfo -#define TclUpdateReturnInfo \ - (tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */ -#endif -/* Slot 110 is reserved */ -#ifndef Tcl_AddInterpResolvers -#define Tcl_AddInterpResolvers \ - (tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */ -#endif -#ifndef Tcl_AppendExportList -#define Tcl_AppendExportList \ - (tclIntStubsPtr->tcl_AppendExportList) /* 112 */ -#endif -#ifndef Tcl_CreateNamespace -#define Tcl_CreateNamespace \ - (tclIntStubsPtr->tcl_CreateNamespace) /* 113 */ -#endif -#ifndef Tcl_DeleteNamespace -#define Tcl_DeleteNamespace \ - (tclIntStubsPtr->tcl_DeleteNamespace) /* 114 */ -#endif -#ifndef Tcl_Export -#define Tcl_Export \ - (tclIntStubsPtr->tcl_Export) /* 115 */ -#endif -#ifndef Tcl_FindCommand -#define Tcl_FindCommand \ - (tclIntStubsPtr->tcl_FindCommand) /* 116 */ -#endif -#ifndef Tcl_FindNamespace -#define Tcl_FindNamespace \ - (tclIntStubsPtr->tcl_FindNamespace) /* 117 */ -#endif -#ifndef Tcl_GetInterpResolvers -#define Tcl_GetInterpResolvers \ - (tclIntStubsPtr->tcl_GetInterpResolvers) /* 118 */ -#endif -#ifndef Tcl_GetNamespaceResolvers -#define Tcl_GetNamespaceResolvers \ - (tclIntStubsPtr->tcl_GetNamespaceResolvers) /* 119 */ -#endif -#ifndef Tcl_FindNamespaceVar -#define Tcl_FindNamespaceVar \ - (tclIntStubsPtr->tcl_FindNamespaceVar) /* 120 */ -#endif -#ifndef Tcl_ForgetImport -#define Tcl_ForgetImport \ - (tclIntStubsPtr->tcl_ForgetImport) /* 121 */ -#endif -#ifndef Tcl_GetCommandFromObj -#define Tcl_GetCommandFromObj \ - (tclIntStubsPtr->tcl_GetCommandFromObj) /* 122 */ -#endif -#ifndef Tcl_GetCommandFullName -#define Tcl_GetCommandFullName \ - (tclIntStubsPtr->tcl_GetCommandFullName) /* 123 */ -#endif -#ifndef Tcl_GetCurrentNamespace -#define Tcl_GetCurrentNamespace \ - (tclIntStubsPtr->tcl_GetCurrentNamespace) /* 124 */ -#endif -#ifndef Tcl_GetGlobalNamespace -#define Tcl_GetGlobalNamespace \ - (tclIntStubsPtr->tcl_GetGlobalNamespace) /* 125 */ -#endif -#ifndef Tcl_GetVariableFullName -#define Tcl_GetVariableFullName \ - (tclIntStubsPtr->tcl_GetVariableFullName) /* 126 */ -#endif -#ifndef Tcl_Import -#define Tcl_Import \ - (tclIntStubsPtr->tcl_Import) /* 127 */ -#endif -#ifndef Tcl_PopCallFrame -#define Tcl_PopCallFrame \ - (tclIntStubsPtr->tcl_PopCallFrame) /* 128 */ -#endif -#ifndef Tcl_PushCallFrame -#define Tcl_PushCallFrame \ - (tclIntStubsPtr->tcl_PushCallFrame) /* 129 */ -#endif -#ifndef Tcl_RemoveInterpResolvers -#define Tcl_RemoveInterpResolvers \ - (tclIntStubsPtr->tcl_RemoveInterpResolvers) /* 130 */ -#endif -#ifndef Tcl_SetNamespaceResolvers -#define Tcl_SetNamespaceResolvers \ - (tclIntStubsPtr->tcl_SetNamespaceResolvers) /* 131 */ -#endif -#ifndef TclpHasSockets -#define TclpHasSockets \ - (tclIntStubsPtr->tclpHasSockets) /* 132 */ -#endif -#ifndef TclpGetDate -#define TclpGetDate \ - (tclIntStubsPtr->tclpGetDate) /* 133 */ -#endif -#ifndef TclpStrftime -#define TclpStrftime \ - (tclIntStubsPtr->tclpStrftime) /* 134 */ -#endif -#ifndef TclpCheckStackSpace -#define TclpCheckStackSpace \ - (tclIntStubsPtr->tclpCheckStackSpace) /* 135 */ -#endif -/* Slot 136 is reserved */ -/* Slot 137 is reserved */ -#ifndef TclGetEnv -#define TclGetEnv \ - (tclIntStubsPtr->tclGetEnv) /* 138 */ -#endif -/* Slot 139 is reserved */ -#ifndef TclLooksLikeInt -#define TclLooksLikeInt \ - (tclIntStubsPtr->tclLooksLikeInt) /* 140 */ -#endif -#ifndef TclpGetCwd -#define TclpGetCwd \ - (tclIntStubsPtr->tclpGetCwd) /* 141 */ -#endif -#ifndef TclSetByteCodeFromAny -#define TclSetByteCodeFromAny \ - (tclIntStubsPtr->tclSetByteCodeFromAny) /* 142 */ -#endif -#ifndef TclAddLiteralObj -#define TclAddLiteralObj \ - (tclIntStubsPtr->tclAddLiteralObj) /* 143 */ -#endif -#ifndef TclHideLiteral -#define TclHideLiteral \ - (tclIntStubsPtr->tclHideLiteral) /* 144 */ -#endif -#ifndef TclGetAuxDataType -#define TclGetAuxDataType \ - (tclIntStubsPtr->tclGetAuxDataType) /* 145 */ -#endif -#ifndef TclHandleCreate -#define TclHandleCreate \ - (tclIntStubsPtr->tclHandleCreate) /* 146 */ -#endif -#ifndef TclHandleFree -#define TclHandleFree \ - (tclIntStubsPtr->tclHandleFree) /* 147 */ -#endif -#ifndef TclHandlePreserve -#define TclHandlePreserve \ - (tclIntStubsPtr->tclHandlePreserve) /* 148 */ -#endif -#ifndef TclHandleRelease -#define TclHandleRelease \ - (tclIntStubsPtr->tclHandleRelease) /* 149 */ -#endif -#ifndef TclRegAbout -#define TclRegAbout \ - (tclIntStubsPtr->tclRegAbout) /* 150 */ -#endif -#ifndef TclRegExpRangeUniChar -#define TclRegExpRangeUniChar \ - (tclIntStubsPtr->tclRegExpRangeUniChar) /* 151 */ -#endif -#ifndef TclSetLibraryPath -#define TclSetLibraryPath \ - (tclIntStubsPtr->tclSetLibraryPath) /* 152 */ -#endif -#ifndef TclGetLibraryPath -#define TclGetLibraryPath \ - (tclIntStubsPtr->tclGetLibraryPath) /* 153 */ -#endif -/* Slot 154 is reserved */ -/* Slot 155 is reserved */ -#ifndef TclRegError -#define TclRegError \ - (tclIntStubsPtr->tclRegError) /* 156 */ -#endif -#ifndef TclVarTraceExists -#define TclVarTraceExists \ - (tclIntStubsPtr->tclVarTraceExists) /* 157 */ -#endif -#ifndef TclSetStartupScriptFileName -#define TclSetStartupScriptFileName \ - (tclIntStubsPtr->tclSetStartupScriptFileName) /* 158 */ -#endif -#ifndef TclGetStartupScriptFileName -#define TclGetStartupScriptFileName \ - (tclIntStubsPtr->tclGetStartupScriptFileName) /* 159 */ -#endif -/* Slot 160 is reserved */ -#ifndef TclChannelTransform -#define TclChannelTransform \ - (tclIntStubsPtr->tclChannelTransform) /* 161 */ -#endif -#ifndef TclChannelEventScriptInvoker -#define TclChannelEventScriptInvoker \ - (tclIntStubsPtr->tclChannelEventScriptInvoker) /* 162 */ -#endif -#ifndef TclGetInstructionTable -#define TclGetInstructionTable \ - (tclIntStubsPtr->tclGetInstructionTable) /* 163 */ -#endif -#ifndef TclExpandCodeArray -#define TclExpandCodeArray \ - (tclIntStubsPtr->tclExpandCodeArray) /* 164 */ -#endif -#ifndef TclpSetInitialEncodings -#define TclpSetInitialEncodings \ - (tclIntStubsPtr->tclpSetInitialEncodings) /* 165 */ -#endif -#ifndef TclListObjSetElement -#define TclListObjSetElement \ - (tclIntStubsPtr->tclListObjSetElement) /* 166 */ -#endif -#ifndef TclSetStartupScriptPath -#define TclSetStartupScriptPath \ - (tclIntStubsPtr->tclSetStartupScriptPath) /* 167 */ -#endif -#ifndef TclGetStartupScriptPath -#define TclGetStartupScriptPath \ - (tclIntStubsPtr->tclGetStartupScriptPath) /* 168 */ -#endif -#ifndef TclpUtfNcmp2 -#define TclpUtfNcmp2 \ - (tclIntStubsPtr->tclpUtfNcmp2) /* 169 */ -#endif -#ifndef TclCheckInterpTraces -#define TclCheckInterpTraces \ - (tclIntStubsPtr->tclCheckInterpTraces) /* 170 */ -#endif -#ifndef TclCheckExecutionTraces -#define TclCheckExecutionTraces \ - (tclIntStubsPtr->tclCheckExecutionTraces) /* 171 */ -#endif -#ifndef TclInThreadExit -#define TclInThreadExit \ - (tclIntStubsPtr->tclInThreadExit) /* 172 */ -#endif -#ifndef TclUniCharMatch -#define TclUniCharMatch \ - (tclIntStubsPtr->tclUniCharMatch) /* 173 */ -#endif -/* Slot 174 is reserved */ -/* Slot 175 is reserved */ -/* Slot 176 is reserved */ -/* Slot 177 is reserved */ -/* Slot 178 is reserved */ -/* Slot 179 is reserved */ -/* Slot 180 is reserved */ -/* Slot 181 is reserved */ -#ifndef TclpLocaltime -#define TclpLocaltime \ - (tclIntStubsPtr->tclpLocaltime) /* 182 */ -#endif -#ifndef TclpGmtime -#define TclpGmtime \ - (tclIntStubsPtr->tclpGmtime) /* 183 */ -#endif - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLINTDECLS */ +/* + * tclIntDecls.h -- + * + * This file contains the declarations for all unsupported + * functions that are exported by the Tcl library. These + * interfaces are not guaranteed to remain the same between + * versions. Use at your own risk. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.3 2004/05/17 16:25:14 dgp Exp $ + */ + +#ifndef _TCLINTDECLS +#define _TCLINTDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tclInt.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +/* Slot 0 is reserved */ +/* 1 */ +EXTERN int TclAccessDeleteProc _ANSI_ARGS_(( + TclAccessProc_ * proc)); +/* 2 */ +EXTERN int TclAccessInsertProc _ANSI_ARGS_(( + TclAccessProc_ * proc)); +/* 3 */ +EXTERN void TclAllocateFreeObjects _ANSI_ARGS_((void)); +/* Slot 4 is reserved */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 5 */ +EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, + int numPids, Tcl_Pid * pidPtr, + Tcl_Channel errorChan)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 5 */ +EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, + int numPids, Tcl_Pid * pidPtr, + Tcl_Channel errorChan)); +#endif /* __WIN32__ */ +/* 6 */ +EXTERN void TclCleanupCommand _ANSI_ARGS_((Command * cmdPtr)); +/* 7 */ +EXTERN int TclCopyAndCollapse _ANSI_ARGS_((int count, + CONST char * src, char * dst)); +/* 8 */ +EXTERN int TclCopyChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel inChan, Tcl_Channel outChan, + int toRead, Tcl_Obj * cmdPtr)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 9 */ +EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, + TclFile * outPipePtr, TclFile * errFilePtr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 9 */ +EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, + TclFile * outPipePtr, TclFile * errFilePtr)); +#endif /* __WIN32__ */ +/* 10 */ +EXTERN int TclCreateProc _ANSI_ARGS_((Tcl_Interp * interp, + Namespace * nsPtr, CONST char * procName, + Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, + Proc ** procPtrPtr)); +/* 11 */ +EXTERN void TclDeleteCompiledLocalVars _ANSI_ARGS_(( + Interp * iPtr, CallFrame * framePtr)); +/* 12 */ +EXTERN void TclDeleteVars _ANSI_ARGS_((Interp * iPtr, + Tcl_HashTable * tablePtr)); +/* 13 */ +EXTERN int TclDoGlob _ANSI_ARGS_((Tcl_Interp * interp, + char * separators, Tcl_DString * headPtr, + char * tail, Tcl_GlobTypeData * types)); +/* 14 */ +EXTERN void TclDumpMemoryInfo _ANSI_ARGS_((FILE * outFile)); +/* Slot 15 is reserved */ +/* 16 */ +EXTERN void TclExprFloatError _ANSI_ARGS_((Tcl_Interp * interp, + double value)); +/* Slot 17 is reserved */ +/* Slot 18 is reserved */ +/* Slot 19 is reserved */ +/* Slot 20 is reserved */ +/* Slot 21 is reserved */ +/* 22 */ +EXTERN int TclFindElement _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * listStr, int listLength, + CONST char ** elementPtr, + CONST char ** nextPtr, int * sizePtr, + int * bracePtr)); +/* 23 */ +EXTERN Proc * TclFindProc _ANSI_ARGS_((Interp * iPtr, + CONST char * procName)); +/* 24 */ +EXTERN int TclFormatInt _ANSI_ARGS_((char * buffer, long n)); +/* 25 */ +EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp * iPtr)); +/* Slot 26 is reserved */ +/* 27 */ +EXTERN int TclGetDate _ANSI_ARGS_((char * p, unsigned long now, + long zone, unsigned long * timePtr)); +/* 28 */ +EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type)); +/* Slot 29 is reserved */ +/* Slot 30 is reserved */ +/* 31 */ +EXTERN char * TclGetExtension _ANSI_ARGS_((char * name)); +/* 32 */ +EXTERN int TclGetFrame _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CallFrame ** framePtrPtr)); +/* 33 */ +EXTERN TclCmdProcType TclGetInterpProc _ANSI_ARGS_((void)); +/* 34 */ +EXTERN int TclGetIntForIndex _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int endValue, + int * indexPtr)); +/* Slot 35 is reserved */ +/* 36 */ +EXTERN int TclGetLong _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, long * longPtr)); +/* 37 */ +EXTERN int TclGetLoadedPackages _ANSI_ARGS_(( + Tcl_Interp * interp, char * targetName)); +/* 38 */ +EXTERN int TclGetNamespaceForQualName _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * qualName, + Namespace * cxtNsPtr, int flags, + Namespace ** nsPtrPtr, + Namespace ** altNsPtrPtr, + Namespace ** actualCxtPtrPtr, + CONST char ** simpleNamePtr)); +/* 39 */ +EXTERN TclObjCmdProcType TclGetObjInterpProc _ANSI_ARGS_((void)); +/* 40 */ +EXTERN int TclGetOpenMode _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * seekFlagPtr)); +/* 41 */ +EXTERN Tcl_Command TclGetOriginalCommand _ANSI_ARGS_(( + Tcl_Command command)); +/* 42 */ +EXTERN char * TclpGetUserHome _ANSI_ARGS_((CONST char * name, + Tcl_DString * bufferPtr)); +/* 43 */ +EXTERN int TclGlobalInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST84 char ** argv, int flags)); +/* 44 */ +EXTERN int TclGuessPackageName _ANSI_ARGS_(( + CONST char * fileName, Tcl_DString * bufPtr)); +/* 45 */ +EXTERN int TclHideUnsafeCommands _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 46 */ +EXTERN int TclInExit _ANSI_ARGS_((void)); +/* Slot 47 is reserved */ +/* Slot 48 is reserved */ +/* 49 */ +EXTERN Tcl_Obj * TclIncrVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + long incrAmount, int part1NotParsed)); +/* 50 */ +EXTERN void TclInitCompiledLocals _ANSI_ARGS_(( + Tcl_Interp * interp, CallFrame * framePtr, + Namespace * nsPtr)); +/* 51 */ +EXTERN int TclInterpInit _ANSI_ARGS_((Tcl_Interp * interp)); +/* 52 */ +EXTERN int TclInvoke _ANSI_ARGS_((Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +/* 53 */ +EXTERN int TclInvokeObjectCommand _ANSI_ARGS_(( + ClientData clientData, Tcl_Interp * interp, + int argc, CONST84 char ** argv)); +/* 54 */ +EXTERN int TclInvokeStringCommand _ANSI_ARGS_(( + ClientData clientData, Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[])); +/* 55 */ +EXTERN Proc * TclIsProc _ANSI_ARGS_((Command * cmdPtr)); +/* Slot 56 is reserved */ +/* Slot 57 is reserved */ +/* 58 */ +EXTERN Var * TclLookupVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, CONST char * msg, int createPart1, + int createPart2, Var ** arrayPtrPtr)); +/* Slot 59 is reserved */ +/* 60 */ +EXTERN int TclNeedSpace _ANSI_ARGS_((CONST char * start, + CONST char * end)); +/* 61 */ +EXTERN Tcl_Obj * TclNewProcBodyObj _ANSI_ARGS_((Proc * procPtr)); +/* 62 */ +EXTERN int TclObjCommandComplete _ANSI_ARGS_((Tcl_Obj * cmdPtr)); +/* 63 */ +EXTERN int TclObjInterpProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int objc, + Tcl_Obj *CONST objv[])); +/* 64 */ +EXTERN int TclObjInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 65 */ +EXTERN int TclObjInvokeGlobal _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 66 */ +EXTERN int TclOpenFileChannelDeleteProc _ANSI_ARGS_(( + TclOpenFileChannelProc_ * proc)); +/* 67 */ +EXTERN int TclOpenFileChannelInsertProc _ANSI_ARGS_(( + TclOpenFileChannelProc_ * proc)); +/* Slot 68 is reserved */ +/* 69 */ +EXTERN char * TclpAlloc _ANSI_ARGS_((unsigned int size)); +/* Slot 70 is reserved */ +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +/* 74 */ +EXTERN void TclpFree _ANSI_ARGS_((char * ptr)); +/* 75 */ +EXTERN unsigned long TclpGetClicks _ANSI_ARGS_((void)); +/* 76 */ +EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void)); +/* 77 */ +EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time * time)); +/* 78 */ +EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time)); +/* Slot 79 is reserved */ +/* Slot 80 is reserved */ +/* 81 */ +EXTERN char * TclpRealloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* Slot 82 is reserved */ +/* Slot 83 is reserved */ +/* Slot 84 is reserved */ +/* Slot 85 is reserved */ +/* Slot 86 is reserved */ +/* Slot 87 is reserved */ +/* 88 */ +EXTERN char * TclPrecTraceProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, CONST char * name1, + CONST char * name2, int flags)); +/* 89 */ +EXTERN int TclPreventAliasLoop _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Interp * cmdInterp, Tcl_Command cmd)); +/* Slot 90 is reserved */ +/* 91 */ +EXTERN void TclProcCleanupProc _ANSI_ARGS_((Proc * procPtr)); +/* 92 */ +EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp * interp, + Proc * procPtr, Tcl_Obj * bodyPtr, + Namespace * nsPtr, CONST char * description, + CONST char * procName)); +/* 93 */ +EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData)); +/* 94 */ +EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int argc, + CONST84 char ** argv)); +/* Slot 95 is reserved */ +/* 96 */ +EXTERN int TclRenameCommand _ANSI_ARGS_((Tcl_Interp * interp, + char * oldName, char * newName)); +/* 97 */ +EXTERN void TclResetShadowedCmdRefs _ANSI_ARGS_(( + Tcl_Interp * interp, Command * newCmdPtr)); +/* 98 */ +EXTERN int TclServiceIdle _ANSI_ARGS_((void)); +/* Slot 99 is reserved */ +/* Slot 100 is reserved */ +/* 101 */ +EXTERN char * TclSetPreInitScript _ANSI_ARGS_((char * string)); +/* 102 */ +EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp * interp)); +/* 103 */ +EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp * interp, + char * str, char * proto, int * portPtr)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 104 */ +EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, + int size)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 104 */ +EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, + int size)); +#endif /* __WIN32__ */ +/* Slot 105 is reserved */ +/* 106 */ +EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ * proc)); +/* 107 */ +EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ * proc)); +/* 108 */ +EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace * nsPtr)); +/* 109 */ +EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp * iPtr)); +/* Slot 110 is reserved */ +/* 111 */ +EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_ResolveCmdProc * cmdProc, + Tcl_ResolveVarProc * varProc, + Tcl_ResolveCompiledVarProc * compiledVarProc)); +/* 112 */ +EXTERN int Tcl_AppendExportList _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Namespace * nsPtr, + Tcl_Obj * objPtr)); +/* 113 */ +EXTERN Tcl_Namespace * Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, ClientData clientData, + Tcl_NamespaceDeleteProc * deleteProc)); +/* 114 */ +EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_(( + Tcl_Namespace * nsPtr)); +/* 115 */ +EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern, + int resetListFirst)); +/* 116 */ +EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 117 */ +EXTERN Tcl_Namespace * Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 118 */ +EXTERN int Tcl_GetInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_ResolverInfo * resInfo)); +/* 119 */ +EXTERN int Tcl_GetNamespaceResolvers _ANSI_ARGS_(( + Tcl_Namespace * namespacePtr, + Tcl_ResolverInfo * resInfo)); +/* 120 */ +EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 121 */ +EXTERN int Tcl_ForgetImport _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern)); +/* 122 */ +EXTERN Tcl_Command Tcl_GetCommandFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr)); +/* 123 */ +EXTERN void Tcl_GetCommandFullName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command, + Tcl_Obj * objPtr)); +/* 124 */ +EXTERN Tcl_Namespace * Tcl_GetCurrentNamespace _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 125 */ +EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 126 */ +EXTERN void Tcl_GetVariableFullName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Var variable, + Tcl_Obj * objPtr)); +/* 127 */ +EXTERN int Tcl_Import _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern, + int allowOverwrite)); +/* 128 */ +EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp* interp)); +/* 129 */ +EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_CallFrame * framePtr, + Tcl_Namespace * nsPtr, int isProcCallFrame)); +/* 130 */ +EXTERN int Tcl_RemoveInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name)); +/* 131 */ +EXTERN void Tcl_SetNamespaceResolvers _ANSI_ARGS_(( + Tcl_Namespace * namespacePtr, + Tcl_ResolveCmdProc * cmdProc, + Tcl_ResolveVarProc * varProc, + Tcl_ResolveCompiledVarProc * compiledVarProc)); +/* 132 */ +EXTERN int TclpHasSockets _ANSI_ARGS_((Tcl_Interp * interp)); +/* 133 */ +EXTERN struct tm * TclpGetDate _ANSI_ARGS_((TclpTime_t time, int useGMT)); +/* 134 */ +EXTERN size_t TclpStrftime _ANSI_ARGS_((char * s, size_t maxsize, + CONST char * format, CONST struct tm * t, + int useGMT)); +/* 135 */ +EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void)); +/* Slot 136 is reserved */ +/* Slot 137 is reserved */ +/* 138 */ +EXTERN CONST84_RETURN char * TclGetEnv _ANSI_ARGS_((CONST char * name, + Tcl_DString * valuePtr)); +/* Slot 139 is reserved */ +/* 140 */ +EXTERN int TclLooksLikeInt _ANSI_ARGS_((CONST char * bytes, + int length)); +/* 141 */ +EXTERN CONST84_RETURN char * TclpGetCwd _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * cwdPtr)); +/* 142 */ +EXTERN int TclSetByteCodeFromAny _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + CompileHookProc * hookProc, + ClientData clientData)); +/* 143 */ +EXTERN int TclAddLiteralObj _ANSI_ARGS_(( + struct CompileEnv * envPtr, Tcl_Obj * objPtr, + LiteralEntry ** litPtrPtr)); +/* 144 */ +EXTERN void TclHideLiteral _ANSI_ARGS_((Tcl_Interp * interp, + struct CompileEnv * envPtr, int index)); +/* 145 */ +EXTERN struct AuxDataType * TclGetAuxDataType _ANSI_ARGS_((char * typeName)); +/* 146 */ +EXTERN TclHandle TclHandleCreate _ANSI_ARGS_((VOID * ptr)); +/* 147 */ +EXTERN void TclHandleFree _ANSI_ARGS_((TclHandle handle)); +/* 148 */ +EXTERN TclHandle TclHandlePreserve _ANSI_ARGS_((TclHandle handle)); +/* 149 */ +EXTERN void TclHandleRelease _ANSI_ARGS_((TclHandle handle)); +/* 150 */ +EXTERN int TclRegAbout _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp re)); +/* 151 */ +EXTERN void TclRegExpRangeUniChar _ANSI_ARGS_((Tcl_RegExp re, + int index, int * startPtr, int * endPtr)); +/* 152 */ +EXTERN void TclSetLibraryPath _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 153 */ +EXTERN Tcl_Obj * TclGetLibraryPath _ANSI_ARGS_((void)); +/* Slot 154 is reserved */ +/* Slot 155 is reserved */ +/* 156 */ +EXTERN void TclRegError _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * msg, int status)); +/* 157 */ +EXTERN Var * TclVarTraceExists _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 158 */ +EXTERN void TclSetStartupScriptFileName _ANSI_ARGS_(( + CONST char * filename)); +/* 159 */ +EXTERN CONST84_RETURN char * TclGetStartupScriptFileName _ANSI_ARGS_((void)); +/* Slot 160 is reserved */ +/* 161 */ +EXTERN int TclChannelTransform _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); +/* 162 */ +EXTERN void TclChannelEventScriptInvoker _ANSI_ARGS_(( + ClientData clientData, int flags)); +/* 163 */ +EXTERN void * TclGetInstructionTable _ANSI_ARGS_((void)); +/* 164 */ +EXTERN void TclExpandCodeArray _ANSI_ARGS_((void * envPtr)); +/* 165 */ +EXTERN void TclpSetInitialEncodings _ANSI_ARGS_((void)); +/* 166 */ +EXTERN int TclListObjSetElement _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + int index, Tcl_Obj * valuePtr)); +/* 167 */ +EXTERN void TclSetStartupScriptPath _ANSI_ARGS_(( + Tcl_Obj * pathPtr)); +/* 168 */ +EXTERN Tcl_Obj * TclGetStartupScriptPath _ANSI_ARGS_((void)); +/* 169 */ +EXTERN int TclpUtfNcmp2 _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 170 */ +EXTERN int TclCheckInterpTraces _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * command, + int numChars, Command * cmdPtr, int result, + int traceFlags, int objc, + Tcl_Obj *CONST objv[])); +/* 171 */ +EXTERN int TclCheckExecutionTraces _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * command, + int numChars, Command * cmdPtr, int result, + int traceFlags, int objc, + Tcl_Obj *CONST objv[])); +/* 172 */ +EXTERN int TclInThreadExit _ANSI_ARGS_((void)); +/* 173 */ +EXTERN int TclUniCharMatch _ANSI_ARGS_(( + CONST Tcl_UniChar * string, int strLen, + CONST Tcl_UniChar * pattern, int ptnLen, + int nocase)); +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +/* 182 */ +EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t clock)); +/* 183 */ +EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t clock)); + +typedef struct TclIntStubs { + int magic; + struct TclIntStubHooks *hooks; + + void *reserved0; + int (*tclAccessDeleteProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 1 */ + int (*tclAccessInsertProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 2 */ + void (*tclAllocateFreeObjects) _ANSI_ARGS_((void)); /* 3 */ + void *reserved4; +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved5; +#endif /* MAC_TCL */ + void (*tclCleanupCommand) _ANSI_ARGS_((Command * cmdPtr)); /* 6 */ + int (*tclCopyAndCollapse) _ANSI_ARGS_((int count, CONST char * src, char * dst)); /* 7 */ + int (*tclCopyChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel inChan, Tcl_Channel outChan, int toRead, Tcl_Obj * cmdPtr)); /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved9; +#endif /* MAC_TCL */ + int (*tclCreateProc) _ANSI_ARGS_((Tcl_Interp * interp, Namespace * nsPtr, CONST char * procName, Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, Proc ** procPtrPtr)); /* 10 */ + void (*tclDeleteCompiledLocalVars) _ANSI_ARGS_((Interp * iPtr, CallFrame * framePtr)); /* 11 */ + void (*tclDeleteVars) _ANSI_ARGS_((Interp * iPtr, Tcl_HashTable * tablePtr)); /* 12 */ + int (*tclDoGlob) _ANSI_ARGS_((Tcl_Interp * interp, char * separators, Tcl_DString * headPtr, char * tail, Tcl_GlobTypeData * types)); /* 13 */ + void (*tclDumpMemoryInfo) _ANSI_ARGS_((FILE * outFile)); /* 14 */ + void *reserved15; + void (*tclExprFloatError) _ANSI_ARGS_((Tcl_Interp * interp, double value)); /* 16 */ + void *reserved17; + void *reserved18; + void *reserved19; + void *reserved20; + void *reserved21; + int (*tclFindElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int listLength, CONST char ** elementPtr, CONST char ** nextPtr, int * sizePtr, int * bracePtr)); /* 22 */ + Proc * (*tclFindProc) _ANSI_ARGS_((Interp * iPtr, CONST char * procName)); /* 23 */ + int (*tclFormatInt) _ANSI_ARGS_((char * buffer, long n)); /* 24 */ + void (*tclFreePackageInfo) _ANSI_ARGS_((Interp * iPtr)); /* 25 */ + void *reserved26; + int (*tclGetDate) _ANSI_ARGS_((char * p, unsigned long now, long zone, unsigned long * timePtr)); /* 27 */ + Tcl_Channel (*tclpGetDefaultStdChannel) _ANSI_ARGS_((int type)); /* 28 */ + void *reserved29; + void *reserved30; + char * (*tclGetExtension) _ANSI_ARGS_((char * name)); /* 31 */ + int (*tclGetFrame) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CallFrame ** framePtrPtr)); /* 32 */ + TclCmdProcType (*tclGetInterpProc) _ANSI_ARGS_((void)); /* 33 */ + int (*tclGetIntForIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int endValue, int * indexPtr)); /* 34 */ + void *reserved35; + int (*tclGetLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * longPtr)); /* 36 */ + int (*tclGetLoadedPackages) _ANSI_ARGS_((Tcl_Interp * interp, char * targetName)); /* 37 */ + int (*tclGetNamespaceForQualName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * qualName, Namespace * cxtNsPtr, int flags, Namespace ** nsPtrPtr, Namespace ** altNsPtrPtr, Namespace ** actualCxtPtrPtr, CONST char ** simpleNamePtr)); /* 38 */ + TclObjCmdProcType (*tclGetObjInterpProc) _ANSI_ARGS_((void)); /* 39 */ + int (*tclGetOpenMode) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * seekFlagPtr)); /* 40 */ + Tcl_Command (*tclGetOriginalCommand) _ANSI_ARGS_((Tcl_Command command)); /* 41 */ + char * (*tclpGetUserHome) _ANSI_ARGS_((CONST char * name, Tcl_DString * bufferPtr)); /* 42 */ + int (*tclGlobalInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 43 */ + int (*tclGuessPackageName) _ANSI_ARGS_((CONST char * fileName, Tcl_DString * bufPtr)); /* 44 */ + int (*tclHideUnsafeCommands) _ANSI_ARGS_((Tcl_Interp * interp)); /* 45 */ + int (*tclInExit) _ANSI_ARGS_((void)); /* 46 */ + void *reserved47; + void *reserved48; + Tcl_Obj * (*tclIncrVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, long incrAmount, int part1NotParsed)); /* 49 */ + void (*tclInitCompiledLocals) _ANSI_ARGS_((Tcl_Interp * interp, CallFrame * framePtr, Namespace * nsPtr)); /* 50 */ + int (*tclInterpInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 51 */ + int (*tclInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 52 */ + int (*tclInvokeObjectCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 53 */ + int (*tclInvokeStringCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 54 */ + Proc * (*tclIsProc) _ANSI_ARGS_((Command * cmdPtr)); /* 55 */ + void *reserved56; + void *reserved57; + Var * (*tclLookupVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, CONST char * msg, int createPart1, int createPart2, Var ** arrayPtrPtr)); /* 58 */ + void *reserved59; + int (*tclNeedSpace) _ANSI_ARGS_((CONST char * start, CONST char * end)); /* 60 */ + Tcl_Obj * (*tclNewProcBodyObj) _ANSI_ARGS_((Proc * procPtr)); /* 61 */ + int (*tclObjCommandComplete) _ANSI_ARGS_((Tcl_Obj * cmdPtr)); /* 62 */ + int (*tclObjInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 63 */ + int (*tclObjInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 64 */ + int (*tclObjInvokeGlobal) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 65 */ + int (*tclOpenFileChannelDeleteProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 66 */ + int (*tclOpenFileChannelInsertProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 67 */ + void *reserved68; + char * (*tclpAlloc) _ANSI_ARGS_((unsigned int size)); /* 69 */ + void *reserved70; + void *reserved71; + void *reserved72; + void *reserved73; + void (*tclpFree) _ANSI_ARGS_((char * ptr)); /* 74 */ + unsigned long (*tclpGetClicks) _ANSI_ARGS_((void)); /* 75 */ + unsigned long (*tclpGetSeconds) _ANSI_ARGS_((void)); /* 76 */ + void (*tclpGetTime) _ANSI_ARGS_((Tcl_Time * time)); /* 77 */ + int (*tclpGetTimeZone) _ANSI_ARGS_((unsigned long time)); /* 78 */ + void *reserved79; + void *reserved80; + char * (*tclpRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 81 */ + void *reserved82; + void *reserved83; + void *reserved84; + void *reserved85; + void *reserved86; + void *reserved87; + char * (*tclPrecTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, CONST char * name1, CONST char * name2, int flags)); /* 88 */ + int (*tclPreventAliasLoop) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Interp * cmdInterp, Tcl_Command cmd)); /* 89 */ + void *reserved90; + void (*tclProcCleanupProc) _ANSI_ARGS_((Proc * procPtr)); /* 91 */ + int (*tclProcCompileProc) _ANSI_ARGS_((Tcl_Interp * interp, Proc * procPtr, Tcl_Obj * bodyPtr, Namespace * nsPtr, CONST char * description, CONST char * procName)); /* 92 */ + void (*tclProcDeleteProc) _ANSI_ARGS_((ClientData clientData)); /* 93 */ + int (*tclProcInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 94 */ + void *reserved95; + int (*tclRenameCommand) _ANSI_ARGS_((Tcl_Interp * interp, char * oldName, char * newName)); /* 96 */ + void (*tclResetShadowedCmdRefs) _ANSI_ARGS_((Tcl_Interp * interp, Command * newCmdPtr)); /* 97 */ + int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ + void *reserved99; + void *reserved100; + char * (*tclSetPreInitScript) _ANSI_ARGS_((char * string)); /* 101 */ + void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp * interp)); /* 102 */ + int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp * interp, char * str, char * proto, int * portPtr)); /* 103 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved104; +#endif /* MAC_TCL */ + void *reserved105; + int (*tclStatDeleteProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 106 */ + int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 107 */ + void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace * nsPtr)); /* 108 */ + int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp * iPtr)); /* 109 */ + void *reserved110; + void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 111 */ + int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, Tcl_Obj * objPtr)); /* 112 */ + Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, ClientData clientData, Tcl_NamespaceDeleteProc * deleteProc)); /* 113 */ + void (*tcl_DeleteNamespace) _ANSI_ARGS_((Tcl_Namespace * nsPtr)); /* 114 */ + int (*tcl_Export) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int resetListFirst)); /* 115 */ + Tcl_Command (*tcl_FindCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 116 */ + Tcl_Namespace * (*tcl_FindNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 117 */ + int (*tcl_GetInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolverInfo * resInfo)); /* 118 */ + int (*tcl_GetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolverInfo * resInfo)); /* 119 */ + Tcl_Var (*tcl_FindNamespaceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 120 */ + int (*tcl_ForgetImport) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern)); /* 121 */ + Tcl_Command (*tcl_GetCommandFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 122 */ + void (*tcl_GetCommandFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command, Tcl_Obj * objPtr)); /* 123 */ + Tcl_Namespace * (*tcl_GetCurrentNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 124 */ + Tcl_Namespace * (*tcl_GetGlobalNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 125 */ + void (*tcl_GetVariableFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Var variable, Tcl_Obj * objPtr)); /* 126 */ + int (*tcl_Import) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int allowOverwrite)); /* 127 */ + void (*tcl_PopCallFrame) _ANSI_ARGS_((Tcl_Interp* interp)); /* 128 */ + int (*tcl_PushCallFrame) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_CallFrame * framePtr, Tcl_Namespace * nsPtr, int isProcCallFrame)); /* 129 */ + int (*tcl_RemoveInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 130 */ + void (*tcl_SetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 131 */ + int (*tclpHasSockets) _ANSI_ARGS_((Tcl_Interp * interp)); /* 132 */ + struct tm * (*tclpGetDate) _ANSI_ARGS_((TclpTime_t time, int useGMT)); /* 133 */ + size_t (*tclpStrftime) _ANSI_ARGS_((char * s, size_t maxsize, CONST char * format, CONST struct tm * t, int useGMT)); /* 134 */ + int (*tclpCheckStackSpace) _ANSI_ARGS_((void)); /* 135 */ + void *reserved136; + void *reserved137; + CONST84_RETURN char * (*tclGetEnv) _ANSI_ARGS_((CONST char * name, Tcl_DString * valuePtr)); /* 138 */ + void *reserved139; + int (*tclLooksLikeInt) _ANSI_ARGS_((CONST char * bytes, int length)); /* 140 */ + CONST84_RETURN char * (*tclpGetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 141 */ + int (*tclSetByteCodeFromAny) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CompileHookProc * hookProc, ClientData clientData)); /* 142 */ + int (*tclAddLiteralObj) _ANSI_ARGS_((struct CompileEnv * envPtr, Tcl_Obj * objPtr, LiteralEntry ** litPtrPtr)); /* 143 */ + void (*tclHideLiteral) _ANSI_ARGS_((Tcl_Interp * interp, struct CompileEnv * envPtr, int index)); /* 144 */ + struct AuxDataType * (*tclGetAuxDataType) _ANSI_ARGS_((char * typeName)); /* 145 */ + TclHandle (*tclHandleCreate) _ANSI_ARGS_((VOID * ptr)); /* 146 */ + void (*tclHandleFree) _ANSI_ARGS_((TclHandle handle)); /* 147 */ + TclHandle (*tclHandlePreserve) _ANSI_ARGS_((TclHandle handle)); /* 148 */ + void (*tclHandleRelease) _ANSI_ARGS_((TclHandle handle)); /* 149 */ + int (*tclRegAbout) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp re)); /* 150 */ + void (*tclRegExpRangeUniChar) _ANSI_ARGS_((Tcl_RegExp re, int index, int * startPtr, int * endPtr)); /* 151 */ + void (*tclSetLibraryPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 152 */ + Tcl_Obj * (*tclGetLibraryPath) _ANSI_ARGS_((void)); /* 153 */ + void *reserved154; + void *reserved155; + void (*tclRegError) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * msg, int status)); /* 156 */ + Var * (*tclVarTraceExists) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 157 */ + void (*tclSetStartupScriptFileName) _ANSI_ARGS_((CONST char * filename)); /* 158 */ + CONST84_RETURN char * (*tclGetStartupScriptFileName) _ANSI_ARGS_((void)); /* 159 */ + void *reserved160; + int (*tclChannelTransform) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); /* 161 */ + void (*tclChannelEventScriptInvoker) _ANSI_ARGS_((ClientData clientData, int flags)); /* 162 */ + void * (*tclGetInstructionTable) _ANSI_ARGS_((void)); /* 163 */ + void (*tclExpandCodeArray) _ANSI_ARGS_((void * envPtr)); /* 164 */ + void (*tclpSetInitialEncodings) _ANSI_ARGS_((void)); /* 165 */ + int (*tclListObjSetElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj * valuePtr)); /* 166 */ + void (*tclSetStartupScriptPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 167 */ + Tcl_Obj * (*tclGetStartupScriptPath) _ANSI_ARGS_((void)); /* 168 */ + int (*tclpUtfNcmp2) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 169 */ + int (*tclCheckInterpTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 170 */ + int (*tclCheckExecutionTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 171 */ + int (*tclInThreadExit) _ANSI_ARGS_((void)); /* 172 */ + int (*tclUniCharMatch) _ANSI_ARGS_((CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); /* 173 */ + void *reserved174; + void *reserved175; + void *reserved176; + void *reserved177; + void *reserved178; + void *reserved179; + void *reserved180; + void *reserved181; + struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t clock)); /* 182 */ + struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ +} TclIntStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclIntStubs *tclIntStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +/* Slot 0 is reserved */ +#ifndef TclAccessDeleteProc +#define TclAccessDeleteProc \ + (tclIntStubsPtr->tclAccessDeleteProc) /* 1 */ +#endif +#ifndef TclAccessInsertProc +#define TclAccessInsertProc \ + (tclIntStubsPtr->tclAccessInsertProc) /* 2 */ +#endif +#ifndef TclAllocateFreeObjects +#define TclAllocateFreeObjects \ + (tclIntStubsPtr->tclAllocateFreeObjects) /* 3 */ +#endif +/* Slot 4 is reserved */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclCleanupChildren +#define TclCleanupChildren \ + (tclIntStubsPtr->tclCleanupChildren) /* 5 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclCleanupChildren +#define TclCleanupChildren \ + (tclIntStubsPtr->tclCleanupChildren) /* 5 */ +#endif +#endif /* __WIN32__ */ +#ifndef TclCleanupCommand +#define TclCleanupCommand \ + (tclIntStubsPtr->tclCleanupCommand) /* 6 */ +#endif +#ifndef TclCopyAndCollapse +#define TclCopyAndCollapse \ + (tclIntStubsPtr->tclCopyAndCollapse) /* 7 */ +#endif +#ifndef TclCopyChannel +#define TclCopyChannel \ + (tclIntStubsPtr->tclCopyChannel) /* 8 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclCreatePipeline +#define TclCreatePipeline \ + (tclIntStubsPtr->tclCreatePipeline) /* 9 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclCreatePipeline +#define TclCreatePipeline \ + (tclIntStubsPtr->tclCreatePipeline) /* 9 */ +#endif +#endif /* __WIN32__ */ +#ifndef TclCreateProc +#define TclCreateProc \ + (tclIntStubsPtr->tclCreateProc) /* 10 */ +#endif +#ifndef TclDeleteCompiledLocalVars +#define TclDeleteCompiledLocalVars \ + (tclIntStubsPtr->tclDeleteCompiledLocalVars) /* 11 */ +#endif +#ifndef TclDeleteVars +#define TclDeleteVars \ + (tclIntStubsPtr->tclDeleteVars) /* 12 */ +#endif +#ifndef TclDoGlob +#define TclDoGlob \ + (tclIntStubsPtr->tclDoGlob) /* 13 */ +#endif +#ifndef TclDumpMemoryInfo +#define TclDumpMemoryInfo \ + (tclIntStubsPtr->tclDumpMemoryInfo) /* 14 */ +#endif +/* Slot 15 is reserved */ +#ifndef TclExprFloatError +#define TclExprFloatError \ + (tclIntStubsPtr->tclExprFloatError) /* 16 */ +#endif +/* Slot 17 is reserved */ +/* Slot 18 is reserved */ +/* Slot 19 is reserved */ +/* Slot 20 is reserved */ +/* Slot 21 is reserved */ +#ifndef TclFindElement +#define TclFindElement \ + (tclIntStubsPtr->tclFindElement) /* 22 */ +#endif +#ifndef TclFindProc +#define TclFindProc \ + (tclIntStubsPtr->tclFindProc) /* 23 */ +#endif +#ifndef TclFormatInt +#define TclFormatInt \ + (tclIntStubsPtr->tclFormatInt) /* 24 */ +#endif +#ifndef TclFreePackageInfo +#define TclFreePackageInfo \ + (tclIntStubsPtr->tclFreePackageInfo) /* 25 */ +#endif +/* Slot 26 is reserved */ +#ifndef TclGetDate +#define TclGetDate \ + (tclIntStubsPtr->tclGetDate) /* 27 */ +#endif +#ifndef TclpGetDefaultStdChannel +#define TclpGetDefaultStdChannel \ + (tclIntStubsPtr->tclpGetDefaultStdChannel) /* 28 */ +#endif +/* Slot 29 is reserved */ +/* Slot 30 is reserved */ +#ifndef TclGetExtension +#define TclGetExtension \ + (tclIntStubsPtr->tclGetExtension) /* 31 */ +#endif +#ifndef TclGetFrame +#define TclGetFrame \ + (tclIntStubsPtr->tclGetFrame) /* 32 */ +#endif +#ifndef TclGetInterpProc +#define TclGetInterpProc \ + (tclIntStubsPtr->tclGetInterpProc) /* 33 */ +#endif +#ifndef TclGetIntForIndex +#define TclGetIntForIndex \ + (tclIntStubsPtr->tclGetIntForIndex) /* 34 */ +#endif +/* Slot 35 is reserved */ +#ifndef TclGetLong +#define TclGetLong \ + (tclIntStubsPtr->tclGetLong) /* 36 */ +#endif +#ifndef TclGetLoadedPackages +#define TclGetLoadedPackages \ + (tclIntStubsPtr->tclGetLoadedPackages) /* 37 */ +#endif +#ifndef TclGetNamespaceForQualName +#define TclGetNamespaceForQualName \ + (tclIntStubsPtr->tclGetNamespaceForQualName) /* 38 */ +#endif +#ifndef TclGetObjInterpProc +#define TclGetObjInterpProc \ + (tclIntStubsPtr->tclGetObjInterpProc) /* 39 */ +#endif +#ifndef TclGetOpenMode +#define TclGetOpenMode \ + (tclIntStubsPtr->tclGetOpenMode) /* 40 */ +#endif +#ifndef TclGetOriginalCommand +#define TclGetOriginalCommand \ + (tclIntStubsPtr->tclGetOriginalCommand) /* 41 */ +#endif +#ifndef TclpGetUserHome +#define TclpGetUserHome \ + (tclIntStubsPtr->tclpGetUserHome) /* 42 */ +#endif +#ifndef TclGlobalInvoke +#define TclGlobalInvoke \ + (tclIntStubsPtr->tclGlobalInvoke) /* 43 */ +#endif +#ifndef TclGuessPackageName +#define TclGuessPackageName \ + (tclIntStubsPtr->tclGuessPackageName) /* 44 */ +#endif +#ifndef TclHideUnsafeCommands +#define TclHideUnsafeCommands \ + (tclIntStubsPtr->tclHideUnsafeCommands) /* 45 */ +#endif +#ifndef TclInExit +#define TclInExit \ + (tclIntStubsPtr->tclInExit) /* 46 */ +#endif +/* Slot 47 is reserved */ +/* Slot 48 is reserved */ +#ifndef TclIncrVar2 +#define TclIncrVar2 \ + (tclIntStubsPtr->tclIncrVar2) /* 49 */ +#endif +#ifndef TclInitCompiledLocals +#define TclInitCompiledLocals \ + (tclIntStubsPtr->tclInitCompiledLocals) /* 50 */ +#endif +#ifndef TclInterpInit +#define TclInterpInit \ + (tclIntStubsPtr->tclInterpInit) /* 51 */ +#endif +#ifndef TclInvoke +#define TclInvoke \ + (tclIntStubsPtr->tclInvoke) /* 52 */ +#endif +#ifndef TclInvokeObjectCommand +#define TclInvokeObjectCommand \ + (tclIntStubsPtr->tclInvokeObjectCommand) /* 53 */ +#endif +#ifndef TclInvokeStringCommand +#define TclInvokeStringCommand \ + (tclIntStubsPtr->tclInvokeStringCommand) /* 54 */ +#endif +#ifndef TclIsProc +#define TclIsProc \ + (tclIntStubsPtr->tclIsProc) /* 55 */ +#endif +/* Slot 56 is reserved */ +/* Slot 57 is reserved */ +#ifndef TclLookupVar +#define TclLookupVar \ + (tclIntStubsPtr->tclLookupVar) /* 58 */ +#endif +/* Slot 59 is reserved */ +#ifndef TclNeedSpace +#define TclNeedSpace \ + (tclIntStubsPtr->tclNeedSpace) /* 60 */ +#endif +#ifndef TclNewProcBodyObj +#define TclNewProcBodyObj \ + (tclIntStubsPtr->tclNewProcBodyObj) /* 61 */ +#endif +#ifndef TclObjCommandComplete +#define TclObjCommandComplete \ + (tclIntStubsPtr->tclObjCommandComplete) /* 62 */ +#endif +#ifndef TclObjInterpProc +#define TclObjInterpProc \ + (tclIntStubsPtr->tclObjInterpProc) /* 63 */ +#endif +#ifndef TclObjInvoke +#define TclObjInvoke \ + (tclIntStubsPtr->tclObjInvoke) /* 64 */ +#endif +#ifndef TclObjInvokeGlobal +#define TclObjInvokeGlobal \ + (tclIntStubsPtr->tclObjInvokeGlobal) /* 65 */ +#endif +#ifndef TclOpenFileChannelDeleteProc +#define TclOpenFileChannelDeleteProc \ + (tclIntStubsPtr->tclOpenFileChannelDeleteProc) /* 66 */ +#endif +#ifndef TclOpenFileChannelInsertProc +#define TclOpenFileChannelInsertProc \ + (tclIntStubsPtr->tclOpenFileChannelInsertProc) /* 67 */ +#endif +/* Slot 68 is reserved */ +#ifndef TclpAlloc +#define TclpAlloc \ + (tclIntStubsPtr->tclpAlloc) /* 69 */ +#endif +/* Slot 70 is reserved */ +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +#ifndef TclpFree +#define TclpFree \ + (tclIntStubsPtr->tclpFree) /* 74 */ +#endif +#ifndef TclpGetClicks +#define TclpGetClicks \ + (tclIntStubsPtr->tclpGetClicks) /* 75 */ +#endif +#ifndef TclpGetSeconds +#define TclpGetSeconds \ + (tclIntStubsPtr->tclpGetSeconds) /* 76 */ +#endif +#ifndef TclpGetTime +#define TclpGetTime \ + (tclIntStubsPtr->tclpGetTime) /* 77 */ +#endif +#ifndef TclpGetTimeZone +#define TclpGetTimeZone \ + (tclIntStubsPtr->tclpGetTimeZone) /* 78 */ +#endif +/* Slot 79 is reserved */ +/* Slot 80 is reserved */ +#ifndef TclpRealloc +#define TclpRealloc \ + (tclIntStubsPtr->tclpRealloc) /* 81 */ +#endif +/* Slot 82 is reserved */ +/* Slot 83 is reserved */ +/* Slot 84 is reserved */ +/* Slot 85 is reserved */ +/* Slot 86 is reserved */ +/* Slot 87 is reserved */ +#ifndef TclPrecTraceProc +#define TclPrecTraceProc \ + (tclIntStubsPtr->tclPrecTraceProc) /* 88 */ +#endif +#ifndef TclPreventAliasLoop +#define TclPreventAliasLoop \ + (tclIntStubsPtr->tclPreventAliasLoop) /* 89 */ +#endif +/* Slot 90 is reserved */ +#ifndef TclProcCleanupProc +#define TclProcCleanupProc \ + (tclIntStubsPtr->tclProcCleanupProc) /* 91 */ +#endif +#ifndef TclProcCompileProc +#define TclProcCompileProc \ + (tclIntStubsPtr->tclProcCompileProc) /* 92 */ +#endif +#ifndef TclProcDeleteProc +#define TclProcDeleteProc \ + (tclIntStubsPtr->tclProcDeleteProc) /* 93 */ +#endif +#ifndef TclProcInterpProc +#define TclProcInterpProc \ + (tclIntStubsPtr->tclProcInterpProc) /* 94 */ +#endif +/* Slot 95 is reserved */ +#ifndef TclRenameCommand +#define TclRenameCommand \ + (tclIntStubsPtr->tclRenameCommand) /* 96 */ +#endif +#ifndef TclResetShadowedCmdRefs +#define TclResetShadowedCmdRefs \ + (tclIntStubsPtr->tclResetShadowedCmdRefs) /* 97 */ +#endif +#ifndef TclServiceIdle +#define TclServiceIdle \ + (tclIntStubsPtr->tclServiceIdle) /* 98 */ +#endif +/* Slot 99 is reserved */ +/* Slot 100 is reserved */ +#ifndef TclSetPreInitScript +#define TclSetPreInitScript \ + (tclIntStubsPtr->tclSetPreInitScript) /* 101 */ +#endif +#ifndef TclSetupEnv +#define TclSetupEnv \ + (tclIntStubsPtr->tclSetupEnv) /* 102 */ +#endif +#ifndef TclSockGetPort +#define TclSockGetPort \ + (tclIntStubsPtr->tclSockGetPort) /* 103 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclSockMinimumBuffers +#define TclSockMinimumBuffers \ + (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclSockMinimumBuffers +#define TclSockMinimumBuffers \ + (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ +#endif +#endif /* __WIN32__ */ +/* Slot 105 is reserved */ +#ifndef TclStatDeleteProc +#define TclStatDeleteProc \ + (tclIntStubsPtr->tclStatDeleteProc) /* 106 */ +#endif +#ifndef TclStatInsertProc +#define TclStatInsertProc \ + (tclIntStubsPtr->tclStatInsertProc) /* 107 */ +#endif +#ifndef TclTeardownNamespace +#define TclTeardownNamespace \ + (tclIntStubsPtr->tclTeardownNamespace) /* 108 */ +#endif +#ifndef TclUpdateReturnInfo +#define TclUpdateReturnInfo \ + (tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */ +#endif +/* Slot 110 is reserved */ +#ifndef Tcl_AddInterpResolvers +#define Tcl_AddInterpResolvers \ + (tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */ +#endif +#ifndef Tcl_AppendExportList +#define Tcl_AppendExportList \ + (tclIntStubsPtr->tcl_AppendExportList) /* 112 */ +#endif +#ifndef Tcl_CreateNamespace +#define Tcl_CreateNamespace \ + (tclIntStubsPtr->tcl_CreateNamespace) /* 113 */ +#endif +#ifndef Tcl_DeleteNamespace +#define Tcl_DeleteNamespace \ + (tclIntStubsPtr->tcl_DeleteNamespace) /* 114 */ +#endif +#ifndef Tcl_Export +#define Tcl_Export \ + (tclIntStubsPtr->tcl_Export) /* 115 */ +#endif +#ifndef Tcl_FindCommand +#define Tcl_FindCommand \ + (tclIntStubsPtr->tcl_FindCommand) /* 116 */ +#endif +#ifndef Tcl_FindNamespace +#define Tcl_FindNamespace \ + (tclIntStubsPtr->tcl_FindNamespace) /* 117 */ +#endif +#ifndef Tcl_GetInterpResolvers +#define Tcl_GetInterpResolvers \ + (tclIntStubsPtr->tcl_GetInterpResolvers) /* 118 */ +#endif +#ifndef Tcl_GetNamespaceResolvers +#define Tcl_GetNamespaceResolvers \ + (tclIntStubsPtr->tcl_GetNamespaceResolvers) /* 119 */ +#endif +#ifndef Tcl_FindNamespaceVar +#define Tcl_FindNamespaceVar \ + (tclIntStubsPtr->tcl_FindNamespaceVar) /* 120 */ +#endif +#ifndef Tcl_ForgetImport +#define Tcl_ForgetImport \ + (tclIntStubsPtr->tcl_ForgetImport) /* 121 */ +#endif +#ifndef Tcl_GetCommandFromObj +#define Tcl_GetCommandFromObj \ + (tclIntStubsPtr->tcl_GetCommandFromObj) /* 122 */ +#endif +#ifndef Tcl_GetCommandFullName +#define Tcl_GetCommandFullName \ + (tclIntStubsPtr->tcl_GetCommandFullName) /* 123 */ +#endif +#ifndef Tcl_GetCurrentNamespace +#define Tcl_GetCurrentNamespace \ + (tclIntStubsPtr->tcl_GetCurrentNamespace) /* 124 */ +#endif +#ifndef Tcl_GetGlobalNamespace +#define Tcl_GetGlobalNamespace \ + (tclIntStubsPtr->tcl_GetGlobalNamespace) /* 125 */ +#endif +#ifndef Tcl_GetVariableFullName +#define Tcl_GetVariableFullName \ + (tclIntStubsPtr->tcl_GetVariableFullName) /* 126 */ +#endif +#ifndef Tcl_Import +#define Tcl_Import \ + (tclIntStubsPtr->tcl_Import) /* 127 */ +#endif +#ifndef Tcl_PopCallFrame +#define Tcl_PopCallFrame \ + (tclIntStubsPtr->tcl_PopCallFrame) /* 128 */ +#endif +#ifndef Tcl_PushCallFrame +#define Tcl_PushCallFrame \ + (tclIntStubsPtr->tcl_PushCallFrame) /* 129 */ +#endif +#ifndef Tcl_RemoveInterpResolvers +#define Tcl_RemoveInterpResolvers \ + (tclIntStubsPtr->tcl_RemoveInterpResolvers) /* 130 */ +#endif +#ifndef Tcl_SetNamespaceResolvers +#define Tcl_SetNamespaceResolvers \ + (tclIntStubsPtr->tcl_SetNamespaceResolvers) /* 131 */ +#endif +#ifndef TclpHasSockets +#define TclpHasSockets \ + (tclIntStubsPtr->tclpHasSockets) /* 132 */ +#endif +#ifndef TclpGetDate +#define TclpGetDate \ + (tclIntStubsPtr->tclpGetDate) /* 133 */ +#endif +#ifndef TclpStrftime +#define TclpStrftime \ + (tclIntStubsPtr->tclpStrftime) /* 134 */ +#endif +#ifndef TclpCheckStackSpace +#define TclpCheckStackSpace \ + (tclIntStubsPtr->tclpCheckStackSpace) /* 135 */ +#endif +/* Slot 136 is reserved */ +/* Slot 137 is reserved */ +#ifndef TclGetEnv +#define TclGetEnv \ + (tclIntStubsPtr->tclGetEnv) /* 138 */ +#endif +/* Slot 139 is reserved */ +#ifndef TclLooksLikeInt +#define TclLooksLikeInt \ + (tclIntStubsPtr->tclLooksLikeInt) /* 140 */ +#endif +#ifndef TclpGetCwd +#define TclpGetCwd \ + (tclIntStubsPtr->tclpGetCwd) /* 141 */ +#endif +#ifndef TclSetByteCodeFromAny +#define TclSetByteCodeFromAny \ + (tclIntStubsPtr->tclSetByteCodeFromAny) /* 142 */ +#endif +#ifndef TclAddLiteralObj +#define TclAddLiteralObj \ + (tclIntStubsPtr->tclAddLiteralObj) /* 143 */ +#endif +#ifndef TclHideLiteral +#define TclHideLiteral \ + (tclIntStubsPtr->tclHideLiteral) /* 144 */ +#endif +#ifndef TclGetAuxDataType +#define TclGetAuxDataType \ + (tclIntStubsPtr->tclGetAuxDataType) /* 145 */ +#endif +#ifndef TclHandleCreate +#define TclHandleCreate \ + (tclIntStubsPtr->tclHandleCreate) /* 146 */ +#endif +#ifndef TclHandleFree +#define TclHandleFree \ + (tclIntStubsPtr->tclHandleFree) /* 147 */ +#endif +#ifndef TclHandlePreserve +#define TclHandlePreserve \ + (tclIntStubsPtr->tclHandlePreserve) /* 148 */ +#endif +#ifndef TclHandleRelease +#define TclHandleRelease \ + (tclIntStubsPtr->tclHandleRelease) /* 149 */ +#endif +#ifndef TclRegAbout +#define TclRegAbout \ + (tclIntStubsPtr->tclRegAbout) /* 150 */ +#endif +#ifndef TclRegExpRangeUniChar +#define TclRegExpRangeUniChar \ + (tclIntStubsPtr->tclRegExpRangeUniChar) /* 151 */ +#endif +#ifndef TclSetLibraryPath +#define TclSetLibraryPath \ + (tclIntStubsPtr->tclSetLibraryPath) /* 152 */ +#endif +#ifndef TclGetLibraryPath +#define TclGetLibraryPath \ + (tclIntStubsPtr->tclGetLibraryPath) /* 153 */ +#endif +/* Slot 154 is reserved */ +/* Slot 155 is reserved */ +#ifndef TclRegError +#define TclRegError \ + (tclIntStubsPtr->tclRegError) /* 156 */ +#endif +#ifndef TclVarTraceExists +#define TclVarTraceExists \ + (tclIntStubsPtr->tclVarTraceExists) /* 157 */ +#endif +#ifndef TclSetStartupScriptFileName +#define TclSetStartupScriptFileName \ + (tclIntStubsPtr->tclSetStartupScriptFileName) /* 158 */ +#endif +#ifndef TclGetStartupScriptFileName +#define TclGetStartupScriptFileName \ + (tclIntStubsPtr->tclGetStartupScriptFileName) /* 159 */ +#endif +/* Slot 160 is reserved */ +#ifndef TclChannelTransform +#define TclChannelTransform \ + (tclIntStubsPtr->tclChannelTransform) /* 161 */ +#endif +#ifndef TclChannelEventScriptInvoker +#define TclChannelEventScriptInvoker \ + (tclIntStubsPtr->tclChannelEventScriptInvoker) /* 162 */ +#endif +#ifndef TclGetInstructionTable +#define TclGetInstructionTable \ + (tclIntStubsPtr->tclGetInstructionTable) /* 163 */ +#endif +#ifndef TclExpandCodeArray +#define TclExpandCodeArray \ + (tclIntStubsPtr->tclExpandCodeArray) /* 164 */ +#endif +#ifndef TclpSetInitialEncodings +#define TclpSetInitialEncodings \ + (tclIntStubsPtr->tclpSetInitialEncodings) /* 165 */ +#endif +#ifndef TclListObjSetElement +#define TclListObjSetElement \ + (tclIntStubsPtr->tclListObjSetElement) /* 166 */ +#endif +#ifndef TclSetStartupScriptPath +#define TclSetStartupScriptPath \ + (tclIntStubsPtr->tclSetStartupScriptPath) /* 167 */ +#endif +#ifndef TclGetStartupScriptPath +#define TclGetStartupScriptPath \ + (tclIntStubsPtr->tclGetStartupScriptPath) /* 168 */ +#endif +#ifndef TclpUtfNcmp2 +#define TclpUtfNcmp2 \ + (tclIntStubsPtr->tclpUtfNcmp2) /* 169 */ +#endif +#ifndef TclCheckInterpTraces +#define TclCheckInterpTraces \ + (tclIntStubsPtr->tclCheckInterpTraces) /* 170 */ +#endif +#ifndef TclCheckExecutionTraces +#define TclCheckExecutionTraces \ + (tclIntStubsPtr->tclCheckExecutionTraces) /* 171 */ +#endif +#ifndef TclInThreadExit +#define TclInThreadExit \ + (tclIntStubsPtr->tclInThreadExit) /* 172 */ +#endif +#ifndef TclUniCharMatch +#define TclUniCharMatch \ + (tclIntStubsPtr->tclUniCharMatch) /* 173 */ +#endif +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +#ifndef TclpLocaltime +#define TclpLocaltime \ + (tclIntStubsPtr->tclpLocaltime) /* 182 */ +#endif +#ifndef TclpGmtime +#define TclpGmtime \ + (tclIntStubsPtr->tclpGmtime) /* 183 */ +#endif + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLINTDECLS */ diff --git a/generic/tclIntPlatDecls.h b/generic/tclIntPlatDecls.h index 7e5110e..6942a94 100644 --- a/generic/tclIntPlatDecls.h +++ b/generic/tclIntPlatDecls.h @@ -1,585 +1,585 @@ -/* - * tclIntPlatDecls.h -- - * - * This file contains the declarations for all platform dependent - * unsupported functions that are exported by the Tcl library. These - * interfaces are not guaranteed to remain the same between - * versions. Use at your own risk. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * All rights reserved. - * - * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.2 2004/05/17 14:26:49 kennykb Exp $ - */ - -#ifndef _TCLINTPLATDECLS -#define _TCLINTPLATDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tclInt.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 0 */ -EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 1 */ -EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); -/* 2 */ -EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( - TclFile readFile, TclFile writeFile, - TclFile errorFile, int numPids, - Tcl_Pid * pidPtr)); -/* 3 */ -EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, - TclFile * writePipe)); -/* 4 */ -EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - TclFile inputFile, TclFile outputFile, - TclFile errorFile, Tcl_Pid * pidPtr)); -/* Slot 5 is reserved */ -/* 6 */ -EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, - int direction)); -/* 7 */ -EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, - int mode)); -/* 8 */ -EXTERN int TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask, - int timeout)); -/* 9 */ -EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( - CONST char * contents)); -/* 10 */ -EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); -/* 11 */ -EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((TclpTime_t clock)); -/* 12 */ -EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((TclpTime_t clock)); -/* 13 */ -EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 0 */ -EXTERN void TclWinConvertError _ANSI_ARGS_((DWORD errCode)); -/* 1 */ -EXTERN void TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode)); -/* 2 */ -EXTERN struct servent * TclWinGetServByName _ANSI_ARGS_((CONST char * nm, - CONST char * proto)); -/* 3 */ -EXTERN int TclWinGetSockOpt _ANSI_ARGS_((SOCKET s, int level, - int optname, char FAR * optval, - int FAR * optlen)); -/* 4 */ -EXTERN HINSTANCE TclWinGetTclInstance _ANSI_ARGS_((void)); -/* Slot 5 is reserved */ -/* 6 */ -EXTERN u_short TclWinNToHS _ANSI_ARGS_((u_short ns)); -/* 7 */ -EXTERN int TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level, - int optname, CONST char FAR * optval, - int optlen)); -/* 8 */ -EXTERN unsigned long TclpGetPid _ANSI_ARGS_((Tcl_Pid pid)); -/* 9 */ -EXTERN int TclWinGetPlatformId _ANSI_ARGS_((void)); -/* Slot 10 is reserved */ -/* 11 */ -EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 12 */ -EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); -/* 13 */ -EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( - TclFile readFile, TclFile writeFile, - TclFile errorFile, int numPids, - Tcl_Pid * pidPtr)); -/* 14 */ -EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, - TclFile * writePipe)); -/* 15 */ -EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - TclFile inputFile, TclFile outputFile, - TclFile errorFile, Tcl_Pid * pidPtr)); -/* Slot 16 is reserved */ -/* Slot 17 is reserved */ -/* 18 */ -EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, - int direction)); -/* 19 */ -EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, - int mode)); -/* 20 */ -EXTERN void TclWinAddProcess _ANSI_ARGS_((HANDLE hProcess, - DWORD id)); -/* Slot 21 is reserved */ -/* 22 */ -EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( - CONST char * contents)); -/* 23 */ -EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); -/* 24 */ -EXTERN char * TclWinNoBackslash _ANSI_ARGS_((char * path)); -/* 25 */ -EXTERN TclPlatformType * TclWinGetPlatform _ANSI_ARGS_((void)); -/* 26 */ -EXTERN void TclWinSetInterfaces _ANSI_ARGS_((int wide)); -/* 27 */ -EXTERN void TclWinFlushDirtyChannels _ANSI_ARGS_((void)); -/* 28 */ -EXTERN void TclWinResetInterfaces _ANSI_ARGS_((void)); -#endif /* __WIN32__ */ -#ifdef MAC_TCL -/* 0 */ -EXTERN VOID * TclpSysAlloc _ANSI_ARGS_((long size, int isBin)); -/* 1 */ -EXTERN void TclpSysFree _ANSI_ARGS_((VOID * ptr)); -/* 2 */ -EXTERN VOID * TclpSysRealloc _ANSI_ARGS_((VOID * cp, - unsigned int size)); -/* 3 */ -EXTERN void TclpExit _ANSI_ARGS_((int status)); -/* 4 */ -EXTERN int FSpGetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); -/* 5 */ -EXTERN int FSpSetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); -/* 6 */ -EXTERN OSErr FSpFindFolder _ANSI_ARGS_((short vRefNum, - OSType folderType, Boolean createFolder, - FSSpec * spec)); -/* 7 */ -EXTERN void GetGlobalMouseTcl _ANSI_ARGS_((Point * mouse)); -/* 8 */ -EXTERN pascal OSErr FSpGetDirectoryIDTcl _ANSI_ARGS_(( - CONST FSSpec * spec, long * theDirID, - Boolean * isDirectory)); -/* 9 */ -EXTERN pascal short FSpOpenResFileCompatTcl _ANSI_ARGS_(( - CONST FSSpec * spec, SignedByte permission)); -/* 10 */ -EXTERN pascal void FSpCreateResFileCompatTcl _ANSI_ARGS_(( - CONST FSSpec * spec, OSType creator, - OSType fileType, ScriptCode scriptTag)); -/* 11 */ -EXTERN int FSpLocationFromPath _ANSI_ARGS_((int length, - CONST char * path, FSSpecPtr theSpec)); -/* 12 */ -EXTERN OSErr FSpPathFromLocation _ANSI_ARGS_((FSSpecPtr theSpec, - int * length, Handle * fullPath)); -/* 13 */ -EXTERN void TclMacExitHandler _ANSI_ARGS_((void)); -/* 14 */ -EXTERN void TclMacInitExitToShell _ANSI_ARGS_((int usePatch)); -/* 15 */ -EXTERN OSErr TclMacInstallExitToShellPatch _ANSI_ARGS_(( - ExitToShellProcPtr newProc)); -/* 16 */ -EXTERN int TclMacOSErrorToPosixError _ANSI_ARGS_((int error)); -/* 17 */ -EXTERN void TclMacRemoveTimer _ANSI_ARGS_((void * timerToken)); -/* 18 */ -EXTERN void * TclMacStartTimer _ANSI_ARGS_((long ms)); -/* 19 */ -EXTERN int TclMacTimerExpired _ANSI_ARGS_((void * timerToken)); -/* 20 */ -EXTERN int TclMacRegisterResourceFork _ANSI_ARGS_(( - short fileRef, Tcl_Obj * tokenPtr, - int insert)); -/* 21 */ -EXTERN short TclMacUnRegisterResourceFork _ANSI_ARGS_(( - char * tokenPtr, Tcl_Obj * resultPtr)); -/* 22 */ -EXTERN int TclMacCreateEnv _ANSI_ARGS_((void)); -/* 23 */ -EXTERN FILE * TclMacFOpenHack _ANSI_ARGS_((CONST char * path, - CONST char * mode)); -/* 24 */ -EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); -/* 25 */ -EXTERN int TclMacChmod _ANSI_ARGS_((CONST char * path, int mode)); -/* 26 */ -EXTERN int FSpLLocationFromPath _ANSI_ARGS_((int length, - CONST char * path, FSSpecPtr theSpec)); -#endif /* MAC_TCL */ - -typedef struct TclIntPlatStubs { - int magic; - struct TclIntPlatStubHooks *hooks; - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 0 */ - int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 1 */ - Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 2 */ - int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 3 */ - int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 4 */ - void *reserved5; - TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 6 */ - TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 7 */ - int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ - TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ - Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ - struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 11 */ - struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 12 */ - char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */ - void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */ - struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char * nm, CONST char * proto)); /* 2 */ - int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char FAR * optval, int FAR * optlen)); /* 3 */ - HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */ - void *reserved5; - u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */ - int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char FAR * optval, int optlen)); /* 7 */ - unsigned long (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */ - int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */ - void *reserved10; - void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 11 */ - int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */ - Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 13 */ - int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 14 */ - int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 15 */ - void *reserved16; - void *reserved17; - TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 18 */ - TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 19 */ - void (*tclWinAddProcess) _ANSI_ARGS_((HANDLE hProcess, DWORD id)); /* 20 */ - void *reserved21; - TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 22 */ - char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 23 */ - char * (*tclWinNoBackslash) _ANSI_ARGS_((char * path)); /* 24 */ - TclPlatformType * (*tclWinGetPlatform) _ANSI_ARGS_((void)); /* 25 */ - void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */ - void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */ - void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - VOID * (*tclpSysAlloc) _ANSI_ARGS_((long size, int isBin)); /* 0 */ - void (*tclpSysFree) _ANSI_ARGS_((VOID * ptr)); /* 1 */ - VOID * (*tclpSysRealloc) _ANSI_ARGS_((VOID * cp, unsigned int size)); /* 2 */ - void (*tclpExit) _ANSI_ARGS_((int status)); /* 3 */ - int (*fSpGetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 4 */ - int (*fSpSetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 5 */ - OSErr (*fSpFindFolder) _ANSI_ARGS_((short vRefNum, OSType folderType, Boolean createFolder, FSSpec * spec)); /* 6 */ - void (*getGlobalMouseTcl) _ANSI_ARGS_((Point * mouse)); /* 7 */ - pascal OSErr (*fSpGetDirectoryIDTcl) _ANSI_ARGS_((CONST FSSpec * spec, long * theDirID, Boolean * isDirectory)); /* 8 */ - pascal short (*fSpOpenResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, SignedByte permission)); /* 9 */ - pascal void (*fSpCreateResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, OSType creator, OSType fileType, ScriptCode scriptTag)); /* 10 */ - int (*fSpLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 11 */ - OSErr (*fSpPathFromLocation) _ANSI_ARGS_((FSSpecPtr theSpec, int * length, Handle * fullPath)); /* 12 */ - void (*tclMacExitHandler) _ANSI_ARGS_((void)); /* 13 */ - void (*tclMacInitExitToShell) _ANSI_ARGS_((int usePatch)); /* 14 */ - OSErr (*tclMacInstallExitToShellPatch) _ANSI_ARGS_((ExitToShellProcPtr newProc)); /* 15 */ - int (*tclMacOSErrorToPosixError) _ANSI_ARGS_((int error)); /* 16 */ - void (*tclMacRemoveTimer) _ANSI_ARGS_((void * timerToken)); /* 17 */ - void * (*tclMacStartTimer) _ANSI_ARGS_((long ms)); /* 18 */ - int (*tclMacTimerExpired) _ANSI_ARGS_((void * timerToken)); /* 19 */ - int (*tclMacRegisterResourceFork) _ANSI_ARGS_((short fileRef, Tcl_Obj * tokenPtr, int insert)); /* 20 */ - short (*tclMacUnRegisterResourceFork) _ANSI_ARGS_((char * tokenPtr, Tcl_Obj * resultPtr)); /* 21 */ - int (*tclMacCreateEnv) _ANSI_ARGS_((void)); /* 22 */ - FILE * (*tclMacFOpenHack) _ANSI_ARGS_((CONST char * path, CONST char * mode)); /* 23 */ - char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 24 */ - int (*tclMacChmod) _ANSI_ARGS_((CONST char * path, int mode)); /* 25 */ - int (*fSpLLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 26 */ -#endif /* MAC_TCL */ -} TclIntPlatStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclIntPlatStubs *tclIntPlatStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclGetAndDetachPids -#define TclGetAndDetachPids \ - (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 0 */ -#endif -#ifndef TclpCloseFile -#define TclpCloseFile \ - (tclIntPlatStubsPtr->tclpCloseFile) /* 1 */ -#endif -#ifndef TclpCreateCommandChannel -#define TclpCreateCommandChannel \ - (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 2 */ -#endif -#ifndef TclpCreatePipe -#define TclpCreatePipe \ - (tclIntPlatStubsPtr->tclpCreatePipe) /* 3 */ -#endif -#ifndef TclpCreateProcess -#define TclpCreateProcess \ - (tclIntPlatStubsPtr->tclpCreateProcess) /* 4 */ -#endif -/* Slot 5 is reserved */ -#ifndef TclpMakeFile -#define TclpMakeFile \ - (tclIntPlatStubsPtr->tclpMakeFile) /* 6 */ -#endif -#ifndef TclpOpenFile -#define TclpOpenFile \ - (tclIntPlatStubsPtr->tclpOpenFile) /* 7 */ -#endif -#ifndef TclUnixWaitForFile -#define TclUnixWaitForFile \ - (tclIntPlatStubsPtr->tclUnixWaitForFile) /* 8 */ -#endif -#ifndef TclpCreateTempFile -#define TclpCreateTempFile \ - (tclIntPlatStubsPtr->tclpCreateTempFile) /* 9 */ -#endif -#ifndef TclpReaddir -#define TclpReaddir \ - (tclIntPlatStubsPtr->tclpReaddir) /* 10 */ -#endif -#ifndef TclpLocaltime_unix -#define TclpLocaltime_unix \ - (tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */ -#endif -#ifndef TclpGmtime_unix -#define TclpGmtime_unix \ - (tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */ -#endif -#ifndef TclpInetNtoa -#define TclpInetNtoa \ - (tclIntPlatStubsPtr->tclpInetNtoa) /* 13 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclWinConvertError -#define TclWinConvertError \ - (tclIntPlatStubsPtr->tclWinConvertError) /* 0 */ -#endif -#ifndef TclWinConvertWSAError -#define TclWinConvertWSAError \ - (tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */ -#endif -#ifndef TclWinGetServByName -#define TclWinGetServByName \ - (tclIntPlatStubsPtr->tclWinGetServByName) /* 2 */ -#endif -#ifndef TclWinGetSockOpt -#define TclWinGetSockOpt \ - (tclIntPlatStubsPtr->tclWinGetSockOpt) /* 3 */ -#endif -#ifndef TclWinGetTclInstance -#define TclWinGetTclInstance \ - (tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */ -#endif -/* Slot 5 is reserved */ -#ifndef TclWinNToHS -#define TclWinNToHS \ - (tclIntPlatStubsPtr->tclWinNToHS) /* 6 */ -#endif -#ifndef TclWinSetSockOpt -#define TclWinSetSockOpt \ - (tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */ -#endif -#ifndef TclpGetPid -#define TclpGetPid \ - (tclIntPlatStubsPtr->tclpGetPid) /* 8 */ -#endif -#ifndef TclWinGetPlatformId -#define TclWinGetPlatformId \ - (tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */ -#endif -/* Slot 10 is reserved */ -#ifndef TclGetAndDetachPids -#define TclGetAndDetachPids \ - (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 11 */ -#endif -#ifndef TclpCloseFile -#define TclpCloseFile \ - (tclIntPlatStubsPtr->tclpCloseFile) /* 12 */ -#endif -#ifndef TclpCreateCommandChannel -#define TclpCreateCommandChannel \ - (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 13 */ -#endif -#ifndef TclpCreatePipe -#define TclpCreatePipe \ - (tclIntPlatStubsPtr->tclpCreatePipe) /* 14 */ -#endif -#ifndef TclpCreateProcess -#define TclpCreateProcess \ - (tclIntPlatStubsPtr->tclpCreateProcess) /* 15 */ -#endif -/* Slot 16 is reserved */ -/* Slot 17 is reserved */ -#ifndef TclpMakeFile -#define TclpMakeFile \ - (tclIntPlatStubsPtr->tclpMakeFile) /* 18 */ -#endif -#ifndef TclpOpenFile -#define TclpOpenFile \ - (tclIntPlatStubsPtr->tclpOpenFile) /* 19 */ -#endif -#ifndef TclWinAddProcess -#define TclWinAddProcess \ - (tclIntPlatStubsPtr->tclWinAddProcess) /* 20 */ -#endif -/* Slot 21 is reserved */ -#ifndef TclpCreateTempFile -#define TclpCreateTempFile \ - (tclIntPlatStubsPtr->tclpCreateTempFile) /* 22 */ -#endif -#ifndef TclpGetTZName -#define TclpGetTZName \ - (tclIntPlatStubsPtr->tclpGetTZName) /* 23 */ -#endif -#ifndef TclWinNoBackslash -#define TclWinNoBackslash \ - (tclIntPlatStubsPtr->tclWinNoBackslash) /* 24 */ -#endif -#ifndef TclWinGetPlatform -#define TclWinGetPlatform \ - (tclIntPlatStubsPtr->tclWinGetPlatform) /* 25 */ -#endif -#ifndef TclWinSetInterfaces -#define TclWinSetInterfaces \ - (tclIntPlatStubsPtr->tclWinSetInterfaces) /* 26 */ -#endif -#ifndef TclWinFlushDirtyChannels -#define TclWinFlushDirtyChannels \ - (tclIntPlatStubsPtr->tclWinFlushDirtyChannels) /* 27 */ -#endif -#ifndef TclWinResetInterfaces -#define TclWinResetInterfaces \ - (tclIntPlatStubsPtr->tclWinResetInterfaces) /* 28 */ -#endif -#endif /* __WIN32__ */ -#ifdef MAC_TCL -#ifndef TclpSysAlloc -#define TclpSysAlloc \ - (tclIntPlatStubsPtr->tclpSysAlloc) /* 0 */ -#endif -#ifndef TclpSysFree -#define TclpSysFree \ - (tclIntPlatStubsPtr->tclpSysFree) /* 1 */ -#endif -#ifndef TclpSysRealloc -#define TclpSysRealloc \ - (tclIntPlatStubsPtr->tclpSysRealloc) /* 2 */ -#endif -#ifndef TclpExit -#define TclpExit \ - (tclIntPlatStubsPtr->tclpExit) /* 3 */ -#endif -#ifndef FSpGetDefaultDir -#define FSpGetDefaultDir \ - (tclIntPlatStubsPtr->fSpGetDefaultDir) /* 4 */ -#endif -#ifndef FSpSetDefaultDir -#define FSpSetDefaultDir \ - (tclIntPlatStubsPtr->fSpSetDefaultDir) /* 5 */ -#endif -#ifndef FSpFindFolder -#define FSpFindFolder \ - (tclIntPlatStubsPtr->fSpFindFolder) /* 6 */ -#endif -#ifndef GetGlobalMouseTcl -#define GetGlobalMouseTcl \ - (tclIntPlatStubsPtr->getGlobalMouseTcl) /* 7 */ -#endif -#ifndef FSpGetDirectoryIDTcl -#define FSpGetDirectoryIDTcl \ - (tclIntPlatStubsPtr->fSpGetDirectoryIDTcl) /* 8 */ -#endif -#ifndef FSpOpenResFileCompatTcl -#define FSpOpenResFileCompatTcl \ - (tclIntPlatStubsPtr->fSpOpenResFileCompatTcl) /* 9 */ -#endif -#ifndef FSpCreateResFileCompatTcl -#define FSpCreateResFileCompatTcl \ - (tclIntPlatStubsPtr->fSpCreateResFileCompatTcl) /* 10 */ -#endif -#ifndef FSpLocationFromPath -#define FSpLocationFromPath \ - (tclIntPlatStubsPtr->fSpLocationFromPath) /* 11 */ -#endif -#ifndef FSpPathFromLocation -#define FSpPathFromLocation \ - (tclIntPlatStubsPtr->fSpPathFromLocation) /* 12 */ -#endif -#ifndef TclMacExitHandler -#define TclMacExitHandler \ - (tclIntPlatStubsPtr->tclMacExitHandler) /* 13 */ -#endif -#ifndef TclMacInitExitToShell -#define TclMacInitExitToShell \ - (tclIntPlatStubsPtr->tclMacInitExitToShell) /* 14 */ -#endif -#ifndef TclMacInstallExitToShellPatch -#define TclMacInstallExitToShellPatch \ - (tclIntPlatStubsPtr->tclMacInstallExitToShellPatch) /* 15 */ -#endif -#ifndef TclMacOSErrorToPosixError -#define TclMacOSErrorToPosixError \ - (tclIntPlatStubsPtr->tclMacOSErrorToPosixError) /* 16 */ -#endif -#ifndef TclMacRemoveTimer -#define TclMacRemoveTimer \ - (tclIntPlatStubsPtr->tclMacRemoveTimer) /* 17 */ -#endif -#ifndef TclMacStartTimer -#define TclMacStartTimer \ - (tclIntPlatStubsPtr->tclMacStartTimer) /* 18 */ -#endif -#ifndef TclMacTimerExpired -#define TclMacTimerExpired \ - (tclIntPlatStubsPtr->tclMacTimerExpired) /* 19 */ -#endif -#ifndef TclMacRegisterResourceFork -#define TclMacRegisterResourceFork \ - (tclIntPlatStubsPtr->tclMacRegisterResourceFork) /* 20 */ -#endif -#ifndef TclMacUnRegisterResourceFork -#define TclMacUnRegisterResourceFork \ - (tclIntPlatStubsPtr->tclMacUnRegisterResourceFork) /* 21 */ -#endif -#ifndef TclMacCreateEnv -#define TclMacCreateEnv \ - (tclIntPlatStubsPtr->tclMacCreateEnv) /* 22 */ -#endif -#ifndef TclMacFOpenHack -#define TclMacFOpenHack \ - (tclIntPlatStubsPtr->tclMacFOpenHack) /* 23 */ -#endif -#ifndef TclpGetTZName -#define TclpGetTZName \ - (tclIntPlatStubsPtr->tclpGetTZName) /* 24 */ -#endif -#ifndef TclMacChmod -#define TclMacChmod \ - (tclIntPlatStubsPtr->tclMacChmod) /* 25 */ -#endif -#ifndef FSpLLocationFromPath -#define FSpLLocationFromPath \ - (tclIntPlatStubsPtr->fSpLLocationFromPath) /* 26 */ -#endif -#endif /* MAC_TCL */ - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLINTPLATDECLS */ +/* + * tclIntPlatDecls.h -- + * + * This file contains the declarations for all platform dependent + * unsupported functions that are exported by the Tcl library. These + * interfaces are not guaranteed to remain the same between + * versions. Use at your own risk. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * All rights reserved. + * + * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.3 2004/05/17 16:25:14 dgp Exp $ + */ + +#ifndef _TCLINTPLATDECLS +#define _TCLINTPLATDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tclInt.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 0 */ +EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 1 */ +EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); +/* 2 */ +EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( + TclFile readFile, TclFile writeFile, + TclFile errorFile, int numPids, + Tcl_Pid * pidPtr)); +/* 3 */ +EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, + TclFile * writePipe)); +/* 4 */ +EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + TclFile inputFile, TclFile outputFile, + TclFile errorFile, Tcl_Pid * pidPtr)); +/* Slot 5 is reserved */ +/* 6 */ +EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, + int direction)); +/* 7 */ +EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, + int mode)); +/* 8 */ +EXTERN int TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask, + int timeout)); +/* 9 */ +EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( + CONST char * contents)); +/* 10 */ +EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); +/* 11 */ +EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((TclpTime_t clock)); +/* 12 */ +EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((TclpTime_t clock)); +/* 13 */ +EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 0 */ +EXTERN void TclWinConvertError _ANSI_ARGS_((DWORD errCode)); +/* 1 */ +EXTERN void TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode)); +/* 2 */ +EXTERN struct servent * TclWinGetServByName _ANSI_ARGS_((CONST char * nm, + CONST char * proto)); +/* 3 */ +EXTERN int TclWinGetSockOpt _ANSI_ARGS_((SOCKET s, int level, + int optname, char FAR * optval, + int FAR * optlen)); +/* 4 */ +EXTERN HINSTANCE TclWinGetTclInstance _ANSI_ARGS_((void)); +/* Slot 5 is reserved */ +/* 6 */ +EXTERN u_short TclWinNToHS _ANSI_ARGS_((u_short ns)); +/* 7 */ +EXTERN int TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level, + int optname, CONST char FAR * optval, + int optlen)); +/* 8 */ +EXTERN unsigned long TclpGetPid _ANSI_ARGS_((Tcl_Pid pid)); +/* 9 */ +EXTERN int TclWinGetPlatformId _ANSI_ARGS_((void)); +/* Slot 10 is reserved */ +/* 11 */ +EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 12 */ +EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); +/* 13 */ +EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( + TclFile readFile, TclFile writeFile, + TclFile errorFile, int numPids, + Tcl_Pid * pidPtr)); +/* 14 */ +EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, + TclFile * writePipe)); +/* 15 */ +EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + TclFile inputFile, TclFile outputFile, + TclFile errorFile, Tcl_Pid * pidPtr)); +/* Slot 16 is reserved */ +/* Slot 17 is reserved */ +/* 18 */ +EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, + int direction)); +/* 19 */ +EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, + int mode)); +/* 20 */ +EXTERN void TclWinAddProcess _ANSI_ARGS_((HANDLE hProcess, + DWORD id)); +/* Slot 21 is reserved */ +/* 22 */ +EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( + CONST char * contents)); +/* 23 */ +EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); +/* 24 */ +EXTERN char * TclWinNoBackslash _ANSI_ARGS_((char * path)); +/* 25 */ +EXTERN TclPlatformType * TclWinGetPlatform _ANSI_ARGS_((void)); +/* 26 */ +EXTERN void TclWinSetInterfaces _ANSI_ARGS_((int wide)); +/* 27 */ +EXTERN void TclWinFlushDirtyChannels _ANSI_ARGS_((void)); +/* 28 */ +EXTERN void TclWinResetInterfaces _ANSI_ARGS_((void)); +#endif /* __WIN32__ */ +#ifdef MAC_TCL +/* 0 */ +EXTERN VOID * TclpSysAlloc _ANSI_ARGS_((long size, int isBin)); +/* 1 */ +EXTERN void TclpSysFree _ANSI_ARGS_((VOID * ptr)); +/* 2 */ +EXTERN VOID * TclpSysRealloc _ANSI_ARGS_((VOID * cp, + unsigned int size)); +/* 3 */ +EXTERN void TclpExit _ANSI_ARGS_((int status)); +/* 4 */ +EXTERN int FSpGetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); +/* 5 */ +EXTERN int FSpSetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); +/* 6 */ +EXTERN OSErr FSpFindFolder _ANSI_ARGS_((short vRefNum, + OSType folderType, Boolean createFolder, + FSSpec * spec)); +/* 7 */ +EXTERN void GetGlobalMouseTcl _ANSI_ARGS_((Point * mouse)); +/* 8 */ +EXTERN pascal OSErr FSpGetDirectoryIDTcl _ANSI_ARGS_(( + CONST FSSpec * spec, long * theDirID, + Boolean * isDirectory)); +/* 9 */ +EXTERN pascal short FSpOpenResFileCompatTcl _ANSI_ARGS_(( + CONST FSSpec * spec, SignedByte permission)); +/* 10 */ +EXTERN pascal void FSpCreateResFileCompatTcl _ANSI_ARGS_(( + CONST FSSpec * spec, OSType creator, + OSType fileType, ScriptCode scriptTag)); +/* 11 */ +EXTERN int FSpLocationFromPath _ANSI_ARGS_((int length, + CONST char * path, FSSpecPtr theSpec)); +/* 12 */ +EXTERN OSErr FSpPathFromLocation _ANSI_ARGS_((FSSpecPtr theSpec, + int * length, Handle * fullPath)); +/* 13 */ +EXTERN void TclMacExitHandler _ANSI_ARGS_((void)); +/* 14 */ +EXTERN void TclMacInitExitToShell _ANSI_ARGS_((int usePatch)); +/* 15 */ +EXTERN OSErr TclMacInstallExitToShellPatch _ANSI_ARGS_(( + ExitToShellProcPtr newProc)); +/* 16 */ +EXTERN int TclMacOSErrorToPosixError _ANSI_ARGS_((int error)); +/* 17 */ +EXTERN void TclMacRemoveTimer _ANSI_ARGS_((void * timerToken)); +/* 18 */ +EXTERN void * TclMacStartTimer _ANSI_ARGS_((long ms)); +/* 19 */ +EXTERN int TclMacTimerExpired _ANSI_ARGS_((void * timerToken)); +/* 20 */ +EXTERN int TclMacRegisterResourceFork _ANSI_ARGS_(( + short fileRef, Tcl_Obj * tokenPtr, + int insert)); +/* 21 */ +EXTERN short TclMacUnRegisterResourceFork _ANSI_ARGS_(( + char * tokenPtr, Tcl_Obj * resultPtr)); +/* 22 */ +EXTERN int TclMacCreateEnv _ANSI_ARGS_((void)); +/* 23 */ +EXTERN FILE * TclMacFOpenHack _ANSI_ARGS_((CONST char * path, + CONST char * mode)); +/* 24 */ +EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); +/* 25 */ +EXTERN int TclMacChmod _ANSI_ARGS_((CONST char * path, int mode)); +/* 26 */ +EXTERN int FSpLLocationFromPath _ANSI_ARGS_((int length, + CONST char * path, FSSpecPtr theSpec)); +#endif /* MAC_TCL */ + +typedef struct TclIntPlatStubs { + int magic; + struct TclIntPlatStubHooks *hooks; + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 0 */ + int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 1 */ + Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 2 */ + int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 3 */ + int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 4 */ + void *reserved5; + TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 6 */ + TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 7 */ + int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ + TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ + Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ + struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 11 */ + struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 12 */ + char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */ + void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */ + struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char * nm, CONST char * proto)); /* 2 */ + int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char FAR * optval, int FAR * optlen)); /* 3 */ + HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */ + void *reserved5; + u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */ + int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char FAR * optval, int optlen)); /* 7 */ + unsigned long (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */ + int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */ + void *reserved10; + void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 11 */ + int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */ + Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 13 */ + int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 14 */ + int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 15 */ + void *reserved16; + void *reserved17; + TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 18 */ + TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 19 */ + void (*tclWinAddProcess) _ANSI_ARGS_((HANDLE hProcess, DWORD id)); /* 20 */ + void *reserved21; + TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 22 */ + char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 23 */ + char * (*tclWinNoBackslash) _ANSI_ARGS_((char * path)); /* 24 */ + TclPlatformType * (*tclWinGetPlatform) _ANSI_ARGS_((void)); /* 25 */ + void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */ + void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */ + void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + VOID * (*tclpSysAlloc) _ANSI_ARGS_((long size, int isBin)); /* 0 */ + void (*tclpSysFree) _ANSI_ARGS_((VOID * ptr)); /* 1 */ + VOID * (*tclpSysRealloc) _ANSI_ARGS_((VOID * cp, unsigned int size)); /* 2 */ + void (*tclpExit) _ANSI_ARGS_((int status)); /* 3 */ + int (*fSpGetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 4 */ + int (*fSpSetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 5 */ + OSErr (*fSpFindFolder) _ANSI_ARGS_((short vRefNum, OSType folderType, Boolean createFolder, FSSpec * spec)); /* 6 */ + void (*getGlobalMouseTcl) _ANSI_ARGS_((Point * mouse)); /* 7 */ + pascal OSErr (*fSpGetDirectoryIDTcl) _ANSI_ARGS_((CONST FSSpec * spec, long * theDirID, Boolean * isDirectory)); /* 8 */ + pascal short (*fSpOpenResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, SignedByte permission)); /* 9 */ + pascal void (*fSpCreateResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, OSType creator, OSType fileType, ScriptCode scriptTag)); /* 10 */ + int (*fSpLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 11 */ + OSErr (*fSpPathFromLocation) _ANSI_ARGS_((FSSpecPtr theSpec, int * length, Handle * fullPath)); /* 12 */ + void (*tclMacExitHandler) _ANSI_ARGS_((void)); /* 13 */ + void (*tclMacInitExitToShell) _ANSI_ARGS_((int usePatch)); /* 14 */ + OSErr (*tclMacInstallExitToShellPatch) _ANSI_ARGS_((ExitToShellProcPtr newProc)); /* 15 */ + int (*tclMacOSErrorToPosixError) _ANSI_ARGS_((int error)); /* 16 */ + void (*tclMacRemoveTimer) _ANSI_ARGS_((void * timerToken)); /* 17 */ + void * (*tclMacStartTimer) _ANSI_ARGS_((long ms)); /* 18 */ + int (*tclMacTimerExpired) _ANSI_ARGS_((void * timerToken)); /* 19 */ + int (*tclMacRegisterResourceFork) _ANSI_ARGS_((short fileRef, Tcl_Obj * tokenPtr, int insert)); /* 20 */ + short (*tclMacUnRegisterResourceFork) _ANSI_ARGS_((char * tokenPtr, Tcl_Obj * resultPtr)); /* 21 */ + int (*tclMacCreateEnv) _ANSI_ARGS_((void)); /* 22 */ + FILE * (*tclMacFOpenHack) _ANSI_ARGS_((CONST char * path, CONST char * mode)); /* 23 */ + char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 24 */ + int (*tclMacChmod) _ANSI_ARGS_((CONST char * path, int mode)); /* 25 */ + int (*fSpLLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 26 */ +#endif /* MAC_TCL */ +} TclIntPlatStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclIntPlatStubs *tclIntPlatStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclGetAndDetachPids +#define TclGetAndDetachPids \ + (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 0 */ +#endif +#ifndef TclpCloseFile +#define TclpCloseFile \ + (tclIntPlatStubsPtr->tclpCloseFile) /* 1 */ +#endif +#ifndef TclpCreateCommandChannel +#define TclpCreateCommandChannel \ + (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 2 */ +#endif +#ifndef TclpCreatePipe +#define TclpCreatePipe \ + (tclIntPlatStubsPtr->tclpCreatePipe) /* 3 */ +#endif +#ifndef TclpCreateProcess +#define TclpCreateProcess \ + (tclIntPlatStubsPtr->tclpCreateProcess) /* 4 */ +#endif +/* Slot 5 is reserved */ +#ifndef TclpMakeFile +#define TclpMakeFile \ + (tclIntPlatStubsPtr->tclpMakeFile) /* 6 */ +#endif +#ifndef TclpOpenFile +#define TclpOpenFile \ + (tclIntPlatStubsPtr->tclpOpenFile) /* 7 */ +#endif +#ifndef TclUnixWaitForFile +#define TclUnixWaitForFile \ + (tclIntPlatStubsPtr->tclUnixWaitForFile) /* 8 */ +#endif +#ifndef TclpCreateTempFile +#define TclpCreateTempFile \ + (tclIntPlatStubsPtr->tclpCreateTempFile) /* 9 */ +#endif +#ifndef TclpReaddir +#define TclpReaddir \ + (tclIntPlatStubsPtr->tclpReaddir) /* 10 */ +#endif +#ifndef TclpLocaltime_unix +#define TclpLocaltime_unix \ + (tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */ +#endif +#ifndef TclpGmtime_unix +#define TclpGmtime_unix \ + (tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */ +#endif +#ifndef TclpInetNtoa +#define TclpInetNtoa \ + (tclIntPlatStubsPtr->tclpInetNtoa) /* 13 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclWinConvertError +#define TclWinConvertError \ + (tclIntPlatStubsPtr->tclWinConvertError) /* 0 */ +#endif +#ifndef TclWinConvertWSAError +#define TclWinConvertWSAError \ + (tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */ +#endif +#ifndef TclWinGetServByName +#define TclWinGetServByName \ + (tclIntPlatStubsPtr->tclWinGetServByName) /* 2 */ +#endif +#ifndef TclWinGetSockOpt +#define TclWinGetSockOpt \ + (tclIntPlatStubsPtr->tclWinGetSockOpt) /* 3 */ +#endif +#ifndef TclWinGetTclInstance +#define TclWinGetTclInstance \ + (tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */ +#endif +/* Slot 5 is reserved */ +#ifndef TclWinNToHS +#define TclWinNToHS \ + (tclIntPlatStubsPtr->tclWinNToHS) /* 6 */ +#endif +#ifndef TclWinSetSockOpt +#define TclWinSetSockOpt \ + (tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */ +#endif +#ifndef TclpGetPid +#define TclpGetPid \ + (tclIntPlatStubsPtr->tclpGetPid) /* 8 */ +#endif +#ifndef TclWinGetPlatformId +#define TclWinGetPlatformId \ + (tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */ +#endif +/* Slot 10 is reserved */ +#ifndef TclGetAndDetachPids +#define TclGetAndDetachPids \ + (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 11 */ +#endif +#ifndef TclpCloseFile +#define TclpCloseFile \ + (tclIntPlatStubsPtr->tclpCloseFile) /* 12 */ +#endif +#ifndef TclpCreateCommandChannel +#define TclpCreateCommandChannel \ + (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 13 */ +#endif +#ifndef TclpCreatePipe +#define TclpCreatePipe \ + (tclIntPlatStubsPtr->tclpCreatePipe) /* 14 */ +#endif +#ifndef TclpCreateProcess +#define TclpCreateProcess \ + (tclIntPlatStubsPtr->tclpCreateProcess) /* 15 */ +#endif +/* Slot 16 is reserved */ +/* Slot 17 is reserved */ +#ifndef TclpMakeFile +#define TclpMakeFile \ + (tclIntPlatStubsPtr->tclpMakeFile) /* 18 */ +#endif +#ifndef TclpOpenFile +#define TclpOpenFile \ + (tclIntPlatStubsPtr->tclpOpenFile) /* 19 */ +#endif +#ifndef TclWinAddProcess +#define TclWinAddProcess \ + (tclIntPlatStubsPtr->tclWinAddProcess) /* 20 */ +#endif +/* Slot 21 is reserved */ +#ifndef TclpCreateTempFile +#define TclpCreateTempFile \ + (tclIntPlatStubsPtr->tclpCreateTempFile) /* 22 */ +#endif +#ifndef TclpGetTZName +#define TclpGetTZName \ + (tclIntPlatStubsPtr->tclpGetTZName) /* 23 */ +#endif +#ifndef TclWinNoBackslash +#define TclWinNoBackslash \ + (tclIntPlatStubsPtr->tclWinNoBackslash) /* 24 */ +#endif +#ifndef TclWinGetPlatform +#define TclWinGetPlatform \ + (tclIntPlatStubsPtr->tclWinGetPlatform) /* 25 */ +#endif +#ifndef TclWinSetInterfaces +#define TclWinSetInterfaces \ + (tclIntPlatStubsPtr->tclWinSetInterfaces) /* 26 */ +#endif +#ifndef TclWinFlushDirtyChannels +#define TclWinFlushDirtyChannels \ + (tclIntPlatStubsPtr->tclWinFlushDirtyChannels) /* 27 */ +#endif +#ifndef TclWinResetInterfaces +#define TclWinResetInterfaces \ + (tclIntPlatStubsPtr->tclWinResetInterfaces) /* 28 */ +#endif +#endif /* __WIN32__ */ +#ifdef MAC_TCL +#ifndef TclpSysAlloc +#define TclpSysAlloc \ + (tclIntPlatStubsPtr->tclpSysAlloc) /* 0 */ +#endif +#ifndef TclpSysFree +#define TclpSysFree \ + (tclIntPlatStubsPtr->tclpSysFree) /* 1 */ +#endif +#ifndef TclpSysRealloc +#define TclpSysRealloc \ + (tclIntPlatStubsPtr->tclpSysRealloc) /* 2 */ +#endif +#ifndef TclpExit +#define TclpExit \ + (tclIntPlatStubsPtr->tclpExit) /* 3 */ +#endif +#ifndef FSpGetDefaultDir +#define FSpGetDefaultDir \ + (tclIntPlatStubsPtr->fSpGetDefaultDir) /* 4 */ +#endif +#ifndef FSpSetDefaultDir +#define FSpSetDefaultDir \ + (tclIntPlatStubsPtr->fSpSetDefaultDir) /* 5 */ +#endif +#ifndef FSpFindFolder +#define FSpFindFolder \ + (tclIntPlatStubsPtr->fSpFindFolder) /* 6 */ +#endif +#ifndef GetGlobalMouseTcl +#define GetGlobalMouseTcl \ + (tclIntPlatStubsPtr->getGlobalMouseTcl) /* 7 */ +#endif +#ifndef FSpGetDirectoryIDTcl +#define FSpGetDirectoryIDTcl \ + (tclIntPlatStubsPtr->fSpGetDirectoryIDTcl) /* 8 */ +#endif +#ifndef FSpOpenResFileCompatTcl +#define FSpOpenResFileCompatTcl \ + (tclIntPlatStubsPtr->fSpOpenResFileCompatTcl) /* 9 */ +#endif +#ifndef FSpCreateResFileCompatTcl +#define FSpCreateResFileCompatTcl \ + (tclIntPlatStubsPtr->fSpCreateResFileCompatTcl) /* 10 */ +#endif +#ifndef FSpLocationFromPath +#define FSpLocationFromPath \ + (tclIntPlatStubsPtr->fSpLocationFromPath) /* 11 */ +#endif +#ifndef FSpPathFromLocation +#define FSpPathFromLocation \ + (tclIntPlatStubsPtr->fSpPathFromLocation) /* 12 */ +#endif +#ifndef TclMacExitHandler +#define TclMacExitHandler \ + (tclIntPlatStubsPtr->tclMacExitHandler) /* 13 */ +#endif +#ifndef TclMacInitExitToShell +#define TclMacInitExitToShell \ + (tclIntPlatStubsPtr->tclMacInitExitToShell) /* 14 */ +#endif +#ifndef TclMacInstallExitToShellPatch +#define TclMacInstallExitToShellPatch \ + (tclIntPlatStubsPtr->tclMacInstallExitToShellPatch) /* 15 */ +#endif +#ifndef TclMacOSErrorToPosixError +#define TclMacOSErrorToPosixError \ + (tclIntPlatStubsPtr->tclMacOSErrorToPosixError) /* 16 */ +#endif +#ifndef TclMacRemoveTimer +#define TclMacRemoveTimer \ + (tclIntPlatStubsPtr->tclMacRemoveTimer) /* 17 */ +#endif +#ifndef TclMacStartTimer +#define TclMacStartTimer \ + (tclIntPlatStubsPtr->tclMacStartTimer) /* 18 */ +#endif +#ifndef TclMacTimerExpired +#define TclMacTimerExpired \ + (tclIntPlatStubsPtr->tclMacTimerExpired) /* 19 */ +#endif +#ifndef TclMacRegisterResourceFork +#define TclMacRegisterResourceFork \ + (tclIntPlatStubsPtr->tclMacRegisterResourceFork) /* 20 */ +#endif +#ifndef TclMacUnRegisterResourceFork +#define TclMacUnRegisterResourceFork \ + (tclIntPlatStubsPtr->tclMacUnRegisterResourceFork) /* 21 */ +#endif +#ifndef TclMacCreateEnv +#define TclMacCreateEnv \ + (tclIntPlatStubsPtr->tclMacCreateEnv) /* 22 */ +#endif +#ifndef TclMacFOpenHack +#define TclMacFOpenHack \ + (tclIntPlatStubsPtr->tclMacFOpenHack) /* 23 */ +#endif +#ifndef TclpGetTZName +#define TclpGetTZName \ + (tclIntPlatStubsPtr->tclpGetTZName) /* 24 */ +#endif +#ifndef TclMacChmod +#define TclMacChmod \ + (tclIntPlatStubsPtr->tclMacChmod) /* 25 */ +#endif +#ifndef FSpLLocationFromPath +#define FSpLLocationFromPath \ + (tclIntPlatStubsPtr->fSpLLocationFromPath) /* 26 */ +#endif +#endif /* MAC_TCL */ + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLINTPLATDECLS */ diff --git a/generic/tclPlatDecls.h b/generic/tclPlatDecls.h index d621b7d..fef6817 100644 --- a/generic/tclPlatDecls.h +++ b/generic/tclPlatDecls.h @@ -1,197 +1,197 @@ -/* - * tclPlatDecls.h -- - * - * Declarations of platform specific Tcl APIs. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * All rights reserved. - * - * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.2 2004/05/17 14:26:49 kennykb Exp $ - */ - -#ifndef _TCLPLATDECLS -#define _TCLPLATDECLS - -/* - * Pull in the typedef of TCHAR for windows. - */ -#if defined(__CYGWIN__) - typedef char TCHAR; -#elif defined(__WIN32__) && !defined(_TCHAR_DEFINED) -# include -# ifndef _TCHAR_DEFINED - /* Borland seems to forget to set this. */ - typedef _TCHAR TCHAR; -# define _TCHAR_DEFINED -# endif -# if defined(_MSC_VER) && defined(__STDC__) - /* MSVC++ misses this. */ - typedef _TCHAR TCHAR; -# endif -#endif - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -#ifdef __WIN32__ -/* 0 */ -EXTERN TCHAR * Tcl_WinUtfToTChar _ANSI_ARGS_((CONST char * str, - int len, Tcl_DString * dsPtr)); -/* 1 */ -EXTERN char * Tcl_WinTCharToUtf _ANSI_ARGS_((CONST TCHAR * str, - int len, Tcl_DString * dsPtr)); -#endif /* __WIN32__ */ -#ifdef MAC_TCL -/* 0 */ -EXTERN void Tcl_MacSetEventProc _ANSI_ARGS_(( - Tcl_MacConvertEventPtr procPtr)); -/* 1 */ -EXTERN char * Tcl_MacConvertTextResource _ANSI_ARGS_(( - Handle resource)); -/* 2 */ -EXTERN int Tcl_MacEvalResource _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * resourceName, - int resourceNumber, CONST char * fileName)); -/* 3 */ -EXTERN Handle Tcl_MacFindResource _ANSI_ARGS_((Tcl_Interp * interp, - long resourceType, CONST char * resourceName, - int resourceNumber, CONST char * resFileRef, - int * releaseIt)); -/* 4 */ -EXTERN int Tcl_GetOSTypeFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - OSType * osTypePtr)); -/* 5 */ -EXTERN void Tcl_SetOSTypeObj _ANSI_ARGS_((Tcl_Obj * objPtr, - OSType osType)); -/* 6 */ -EXTERN Tcl_Obj * Tcl_NewOSTypeObj _ANSI_ARGS_((OSType osType)); -/* 7 */ -EXTERN int strncasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, size_t n)); -/* 8 */ -EXTERN int strcasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2)); -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL -/* 0 */ -EXTERN int Tcl_MacOSXOpenBundleResources _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * bundleName, - int hasResourceFile, int maxPathLen, - char * libraryPath)); -/* 1 */ -EXTERN int Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * bundleName, - CONST char * bundleVersion, - int hasResourceFile, int maxPathLen, - char * libraryPath)); -#endif /* MAC_OSX_TCL */ - -typedef struct TclPlatStubs { - int magic; - struct TclPlatStubHooks *hooks; - -#ifdef __WIN32__ - TCHAR * (*tcl_WinUtfToTChar) _ANSI_ARGS_((CONST char * str, int len, Tcl_DString * dsPtr)); /* 0 */ - char * (*tcl_WinTCharToUtf) _ANSI_ARGS_((CONST TCHAR * str, int len, Tcl_DString * dsPtr)); /* 1 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void (*tcl_MacSetEventProc) _ANSI_ARGS_((Tcl_MacConvertEventPtr procPtr)); /* 0 */ - char * (*tcl_MacConvertTextResource) _ANSI_ARGS_((Handle resource)); /* 1 */ - int (*tcl_MacEvalResource) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * resourceName, int resourceNumber, CONST char * fileName)); /* 2 */ - Handle (*tcl_MacFindResource) _ANSI_ARGS_((Tcl_Interp * interp, long resourceType, CONST char * resourceName, int resourceNumber, CONST char * resFileRef, int * releaseIt)); /* 3 */ - int (*tcl_GetOSTypeFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, OSType * osTypePtr)); /* 4 */ - void (*tcl_SetOSTypeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, OSType osType)); /* 5 */ - Tcl_Obj * (*tcl_NewOSTypeObj) _ANSI_ARGS_((OSType osType)); /* 6 */ - int (*strncasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, size_t n)); /* 7 */ - int (*strcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2)); /* 8 */ -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL - int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */ - int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */ -#endif /* MAC_OSX_TCL */ -} TclPlatStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclPlatStubs *tclPlatStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#ifdef __WIN32__ -#ifndef Tcl_WinUtfToTChar -#define Tcl_WinUtfToTChar \ - (tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */ -#endif -#ifndef Tcl_WinTCharToUtf -#define Tcl_WinTCharToUtf \ - (tclPlatStubsPtr->tcl_WinTCharToUtf) /* 1 */ -#endif -#endif /* __WIN32__ */ -#ifdef MAC_TCL -#ifndef Tcl_MacSetEventProc -#define Tcl_MacSetEventProc \ - (tclPlatStubsPtr->tcl_MacSetEventProc) /* 0 */ -#endif -#ifndef Tcl_MacConvertTextResource -#define Tcl_MacConvertTextResource \ - (tclPlatStubsPtr->tcl_MacConvertTextResource) /* 1 */ -#endif -#ifndef Tcl_MacEvalResource -#define Tcl_MacEvalResource \ - (tclPlatStubsPtr->tcl_MacEvalResource) /* 2 */ -#endif -#ifndef Tcl_MacFindResource -#define Tcl_MacFindResource \ - (tclPlatStubsPtr->tcl_MacFindResource) /* 3 */ -#endif -#ifndef Tcl_GetOSTypeFromObj -#define Tcl_GetOSTypeFromObj \ - (tclPlatStubsPtr->tcl_GetOSTypeFromObj) /* 4 */ -#endif -#ifndef Tcl_SetOSTypeObj -#define Tcl_SetOSTypeObj \ - (tclPlatStubsPtr->tcl_SetOSTypeObj) /* 5 */ -#endif -#ifndef Tcl_NewOSTypeObj -#define Tcl_NewOSTypeObj \ - (tclPlatStubsPtr->tcl_NewOSTypeObj) /* 6 */ -#endif -#ifndef strncasecmp -#define strncasecmp \ - (tclPlatStubsPtr->strncasecmp) /* 7 */ -#endif -#ifndef strcasecmp -#define strcasecmp \ - (tclPlatStubsPtr->strcasecmp) /* 8 */ -#endif -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL -#ifndef Tcl_MacOSXOpenBundleResources -#define Tcl_MacOSXOpenBundleResources \ - (tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */ -#endif -#ifndef Tcl_MacOSXOpenVersionedBundleResources -#define Tcl_MacOSXOpenVersionedBundleResources \ - (tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */ -#endif -#endif /* MAC_OSX_TCL */ - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLPLATDECLS */ - - +/* + * tclPlatDecls.h -- + * + * Declarations of platform specific Tcl APIs. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * All rights reserved. + * + * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.3 2004/05/17 16:25:14 dgp Exp $ + */ + +#ifndef _TCLPLATDECLS +#define _TCLPLATDECLS + +/* + * Pull in the typedef of TCHAR for windows. + */ +#if defined(__CYGWIN__) + typedef char TCHAR; +#elif defined(__WIN32__) && !defined(_TCHAR_DEFINED) +# include +# ifndef _TCHAR_DEFINED + /* Borland seems to forget to set this. */ + typedef _TCHAR TCHAR; +# define _TCHAR_DEFINED +# endif +# if defined(_MSC_VER) && defined(__STDC__) + /* MSVC++ misses this. */ + typedef _TCHAR TCHAR; +# endif +#endif + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +#ifdef __WIN32__ +/* 0 */ +EXTERN TCHAR * Tcl_WinUtfToTChar _ANSI_ARGS_((CONST char * str, + int len, Tcl_DString * dsPtr)); +/* 1 */ +EXTERN char * Tcl_WinTCharToUtf _ANSI_ARGS_((CONST TCHAR * str, + int len, Tcl_DString * dsPtr)); +#endif /* __WIN32__ */ +#ifdef MAC_TCL +/* 0 */ +EXTERN void Tcl_MacSetEventProc _ANSI_ARGS_(( + Tcl_MacConvertEventPtr procPtr)); +/* 1 */ +EXTERN char * Tcl_MacConvertTextResource _ANSI_ARGS_(( + Handle resource)); +/* 2 */ +EXTERN int Tcl_MacEvalResource _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * resourceName, + int resourceNumber, CONST char * fileName)); +/* 3 */ +EXTERN Handle Tcl_MacFindResource _ANSI_ARGS_((Tcl_Interp * interp, + long resourceType, CONST char * resourceName, + int resourceNumber, CONST char * resFileRef, + int * releaseIt)); +/* 4 */ +EXTERN int Tcl_GetOSTypeFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + OSType * osTypePtr)); +/* 5 */ +EXTERN void Tcl_SetOSTypeObj _ANSI_ARGS_((Tcl_Obj * objPtr, + OSType osType)); +/* 6 */ +EXTERN Tcl_Obj * Tcl_NewOSTypeObj _ANSI_ARGS_((OSType osType)); +/* 7 */ +EXTERN int strncasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, size_t n)); +/* 8 */ +EXTERN int strcasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2)); +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL +/* 0 */ +EXTERN int Tcl_MacOSXOpenBundleResources _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * bundleName, + int hasResourceFile, int maxPathLen, + char * libraryPath)); +/* 1 */ +EXTERN int Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * bundleName, + CONST char * bundleVersion, + int hasResourceFile, int maxPathLen, + char * libraryPath)); +#endif /* MAC_OSX_TCL */ + +typedef struct TclPlatStubs { + int magic; + struct TclPlatStubHooks *hooks; + +#ifdef __WIN32__ + TCHAR * (*tcl_WinUtfToTChar) _ANSI_ARGS_((CONST char * str, int len, Tcl_DString * dsPtr)); /* 0 */ + char * (*tcl_WinTCharToUtf) _ANSI_ARGS_((CONST TCHAR * str, int len, Tcl_DString * dsPtr)); /* 1 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void (*tcl_MacSetEventProc) _ANSI_ARGS_((Tcl_MacConvertEventPtr procPtr)); /* 0 */ + char * (*tcl_MacConvertTextResource) _ANSI_ARGS_((Handle resource)); /* 1 */ + int (*tcl_MacEvalResource) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * resourceName, int resourceNumber, CONST char * fileName)); /* 2 */ + Handle (*tcl_MacFindResource) _ANSI_ARGS_((Tcl_Interp * interp, long resourceType, CONST char * resourceName, int resourceNumber, CONST char * resFileRef, int * releaseIt)); /* 3 */ + int (*tcl_GetOSTypeFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, OSType * osTypePtr)); /* 4 */ + void (*tcl_SetOSTypeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, OSType osType)); /* 5 */ + Tcl_Obj * (*tcl_NewOSTypeObj) _ANSI_ARGS_((OSType osType)); /* 6 */ + int (*strncasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, size_t n)); /* 7 */ + int (*strcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2)); /* 8 */ +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL + int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */ + int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */ +#endif /* MAC_OSX_TCL */ +} TclPlatStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclPlatStubs *tclPlatStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#ifdef __WIN32__ +#ifndef Tcl_WinUtfToTChar +#define Tcl_WinUtfToTChar \ + (tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */ +#endif +#ifndef Tcl_WinTCharToUtf +#define Tcl_WinTCharToUtf \ + (tclPlatStubsPtr->tcl_WinTCharToUtf) /* 1 */ +#endif +#endif /* __WIN32__ */ +#ifdef MAC_TCL +#ifndef Tcl_MacSetEventProc +#define Tcl_MacSetEventProc \ + (tclPlatStubsPtr->tcl_MacSetEventProc) /* 0 */ +#endif +#ifndef Tcl_MacConvertTextResource +#define Tcl_MacConvertTextResource \ + (tclPlatStubsPtr->tcl_MacConvertTextResource) /* 1 */ +#endif +#ifndef Tcl_MacEvalResource +#define Tcl_MacEvalResource \ + (tclPlatStubsPtr->tcl_MacEvalResource) /* 2 */ +#endif +#ifndef Tcl_MacFindResource +#define Tcl_MacFindResource \ + (tclPlatStubsPtr->tcl_MacFindResource) /* 3 */ +#endif +#ifndef Tcl_GetOSTypeFromObj +#define Tcl_GetOSTypeFromObj \ + (tclPlatStubsPtr->tcl_GetOSTypeFromObj) /* 4 */ +#endif +#ifndef Tcl_SetOSTypeObj +#define Tcl_SetOSTypeObj \ + (tclPlatStubsPtr->tcl_SetOSTypeObj) /* 5 */ +#endif +#ifndef Tcl_NewOSTypeObj +#define Tcl_NewOSTypeObj \ + (tclPlatStubsPtr->tcl_NewOSTypeObj) /* 6 */ +#endif +#ifndef strncasecmp +#define strncasecmp \ + (tclPlatStubsPtr->strncasecmp) /* 7 */ +#endif +#ifndef strcasecmp +#define strcasecmp \ + (tclPlatStubsPtr->strcasecmp) /* 8 */ +#endif +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL +#ifndef Tcl_MacOSXOpenBundleResources +#define Tcl_MacOSXOpenBundleResources \ + (tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */ +#endif +#ifndef Tcl_MacOSXOpenVersionedBundleResources +#define Tcl_MacOSXOpenVersionedBundleResources \ + (tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */ +#endif +#endif /* MAC_OSX_TCL */ + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLPLATDECLS */ + + diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index ef8bbb3..9f758a1 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -1,941 +1,941 @@ -/* - * tclStubInit.c -- - * - * This file contains the initializers for the Tcl stub vectors. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.4 2004/05/17 14:26:50 kennykb Exp $ - */ - -#include "tclInt.h" -#include "tclPort.h" - -/* - * Remove macros that will interfere with the definitions below. - */ - -#undef Tcl_Alloc -#undef Tcl_Free -#undef Tcl_Realloc -#undef Tcl_NewBooleanObj -#undef Tcl_NewByteArrayObj -#undef Tcl_NewDoubleObj -#undef Tcl_NewIntObj -#undef Tcl_NewListObj -#undef Tcl_NewLongObj -#undef Tcl_NewObj -#undef Tcl_NewStringObj -#undef Tcl_DumpActiveMemory -#undef Tcl_ValidateAllMemory -#if TCL_PRESERVE_BINARY_COMPATABILITY -# undef Tcl_FindHashEntry -# undef Tcl_CreateHashEntry -#endif - -/* - * Keep a record of the original Notifier procedures, created in the - * same compilation unit as the stub tables so we can later do reliable, - * portable comparisons to see whether a Tcl_SetNotifier() call swapped - * new routines into the stub table. - */ - -Tcl_NotifierProcs tclOriginalNotifier = { - Tcl_SetTimer, - Tcl_WaitForEvent, -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_CreateFileHandler, - Tcl_DeleteFileHandler, -#else - NULL, - NULL, -#endif - NULL, - NULL, - NULL, - NULL -}; - -/* - * WARNING: The contents of this file is automatically generated by the - * tools/genStubs.tcl script. Any modifications to the function declarations - * below should be made in the generic/tcl.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -TclIntStubs tclIntStubs = { - TCL_STUB_MAGIC, - NULL, - NULL, /* 0 */ - TclAccessDeleteProc, /* 1 */ - TclAccessInsertProc, /* 2 */ - TclAllocateFreeObjects, /* 3 */ - NULL, /* 4 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclCleanupChildren, /* 5 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclCleanupChildren, /* 5 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 5 */ -#endif /* MAC_TCL */ - TclCleanupCommand, /* 6 */ - TclCopyAndCollapse, /* 7 */ - TclCopyChannel, /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclCreatePipeline, /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclCreatePipeline, /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 9 */ -#endif /* MAC_TCL */ - TclCreateProc, /* 10 */ - TclDeleteCompiledLocalVars, /* 11 */ - TclDeleteVars, /* 12 */ - TclDoGlob, /* 13 */ - TclDumpMemoryInfo, /* 14 */ - NULL, /* 15 */ - TclExprFloatError, /* 16 */ - NULL, /* 17 */ - NULL, /* 18 */ - NULL, /* 19 */ - NULL, /* 20 */ - NULL, /* 21 */ - TclFindElement, /* 22 */ - TclFindProc, /* 23 */ - TclFormatInt, /* 24 */ - TclFreePackageInfo, /* 25 */ - NULL, /* 26 */ - TclGetDate, /* 27 */ - TclpGetDefaultStdChannel, /* 28 */ - NULL, /* 29 */ - NULL, /* 30 */ - TclGetExtension, /* 31 */ - TclGetFrame, /* 32 */ - TclGetInterpProc, /* 33 */ - TclGetIntForIndex, /* 34 */ - NULL, /* 35 */ - TclGetLong, /* 36 */ - TclGetLoadedPackages, /* 37 */ - TclGetNamespaceForQualName, /* 38 */ - TclGetObjInterpProc, /* 39 */ - TclGetOpenMode, /* 40 */ - TclGetOriginalCommand, /* 41 */ - TclpGetUserHome, /* 42 */ - TclGlobalInvoke, /* 43 */ - TclGuessPackageName, /* 44 */ - TclHideUnsafeCommands, /* 45 */ - TclInExit, /* 46 */ - NULL, /* 47 */ - NULL, /* 48 */ - TclIncrVar2, /* 49 */ - TclInitCompiledLocals, /* 50 */ - TclInterpInit, /* 51 */ - TclInvoke, /* 52 */ - TclInvokeObjectCommand, /* 53 */ - TclInvokeStringCommand, /* 54 */ - TclIsProc, /* 55 */ - NULL, /* 56 */ - NULL, /* 57 */ - TclLookupVar, /* 58 */ - NULL, /* 59 */ - TclNeedSpace, /* 60 */ - TclNewProcBodyObj, /* 61 */ - TclObjCommandComplete, /* 62 */ - TclObjInterpProc, /* 63 */ - TclObjInvoke, /* 64 */ - TclObjInvokeGlobal, /* 65 */ - TclOpenFileChannelDeleteProc, /* 66 */ - TclOpenFileChannelInsertProc, /* 67 */ - NULL, /* 68 */ - TclpAlloc, /* 69 */ - NULL, /* 70 */ - NULL, /* 71 */ - NULL, /* 72 */ - NULL, /* 73 */ - TclpFree, /* 74 */ - TclpGetClicks, /* 75 */ - TclpGetSeconds, /* 76 */ - TclpGetTime, /* 77 */ - TclpGetTimeZone, /* 78 */ - NULL, /* 79 */ - NULL, /* 80 */ - TclpRealloc, /* 81 */ - NULL, /* 82 */ - NULL, /* 83 */ - NULL, /* 84 */ - NULL, /* 85 */ - NULL, /* 86 */ - NULL, /* 87 */ - TclPrecTraceProc, /* 88 */ - TclPreventAliasLoop, /* 89 */ - NULL, /* 90 */ - TclProcCleanupProc, /* 91 */ - TclProcCompileProc, /* 92 */ - TclProcDeleteProc, /* 93 */ - TclProcInterpProc, /* 94 */ - NULL, /* 95 */ - TclRenameCommand, /* 96 */ - TclResetShadowedCmdRefs, /* 97 */ - TclServiceIdle, /* 98 */ - NULL, /* 99 */ - NULL, /* 100 */ - TclSetPreInitScript, /* 101 */ - TclSetupEnv, /* 102 */ - TclSockGetPort, /* 103 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclSockMinimumBuffers, /* 104 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclSockMinimumBuffers, /* 104 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 104 */ -#endif /* MAC_TCL */ - NULL, /* 105 */ - TclStatDeleteProc, /* 106 */ - TclStatInsertProc, /* 107 */ - TclTeardownNamespace, /* 108 */ - TclUpdateReturnInfo, /* 109 */ - NULL, /* 110 */ - Tcl_AddInterpResolvers, /* 111 */ - Tcl_AppendExportList, /* 112 */ - Tcl_CreateNamespace, /* 113 */ - Tcl_DeleteNamespace, /* 114 */ - Tcl_Export, /* 115 */ - Tcl_FindCommand, /* 116 */ - Tcl_FindNamespace, /* 117 */ - Tcl_GetInterpResolvers, /* 118 */ - Tcl_GetNamespaceResolvers, /* 119 */ - Tcl_FindNamespaceVar, /* 120 */ - Tcl_ForgetImport, /* 121 */ - Tcl_GetCommandFromObj, /* 122 */ - Tcl_GetCommandFullName, /* 123 */ - Tcl_GetCurrentNamespace, /* 124 */ - Tcl_GetGlobalNamespace, /* 125 */ - Tcl_GetVariableFullName, /* 126 */ - Tcl_Import, /* 127 */ - Tcl_PopCallFrame, /* 128 */ - Tcl_PushCallFrame, /* 129 */ - Tcl_RemoveInterpResolvers, /* 130 */ - Tcl_SetNamespaceResolvers, /* 131 */ - TclpHasSockets, /* 132 */ - TclpGetDate, /* 133 */ - TclpStrftime, /* 134 */ - TclpCheckStackSpace, /* 135 */ - NULL, /* 136 */ - NULL, /* 137 */ - TclGetEnv, /* 138 */ - NULL, /* 139 */ - TclLooksLikeInt, /* 140 */ - TclpGetCwd, /* 141 */ - TclSetByteCodeFromAny, /* 142 */ - TclAddLiteralObj, /* 143 */ - TclHideLiteral, /* 144 */ - TclGetAuxDataType, /* 145 */ - TclHandleCreate, /* 146 */ - TclHandleFree, /* 147 */ - TclHandlePreserve, /* 148 */ - TclHandleRelease, /* 149 */ - TclRegAbout, /* 150 */ - TclRegExpRangeUniChar, /* 151 */ - TclSetLibraryPath, /* 152 */ - TclGetLibraryPath, /* 153 */ - NULL, /* 154 */ - NULL, /* 155 */ - TclRegError, /* 156 */ - TclVarTraceExists, /* 157 */ - TclSetStartupScriptFileName, /* 158 */ - TclGetStartupScriptFileName, /* 159 */ - NULL, /* 160 */ - TclChannelTransform, /* 161 */ - TclChannelEventScriptInvoker, /* 162 */ - TclGetInstructionTable, /* 163 */ - TclExpandCodeArray, /* 164 */ - TclpSetInitialEncodings, /* 165 */ - TclListObjSetElement, /* 166 */ - TclSetStartupScriptPath, /* 167 */ - TclGetStartupScriptPath, /* 168 */ - TclpUtfNcmp2, /* 169 */ - TclCheckInterpTraces, /* 170 */ - TclCheckExecutionTraces, /* 171 */ - TclInThreadExit, /* 172 */ - TclUniCharMatch, /* 173 */ - NULL, /* 174 */ - NULL, /* 175 */ - NULL, /* 176 */ - NULL, /* 177 */ - NULL, /* 178 */ - NULL, /* 179 */ - NULL, /* 180 */ - NULL, /* 181 */ - TclpLocaltime, /* 182 */ - TclpGmtime, /* 183 */ -}; - -TclIntPlatStubs tclIntPlatStubs = { - TCL_STUB_MAGIC, - NULL, -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclGetAndDetachPids, /* 0 */ - TclpCloseFile, /* 1 */ - TclpCreateCommandChannel, /* 2 */ - TclpCreatePipe, /* 3 */ - TclpCreateProcess, /* 4 */ - NULL, /* 5 */ - TclpMakeFile, /* 6 */ - TclpOpenFile, /* 7 */ - TclUnixWaitForFile, /* 8 */ - TclpCreateTempFile, /* 9 */ - TclpReaddir, /* 10 */ - TclpLocaltime_unix, /* 11 */ - TclpGmtime_unix, /* 12 */ - TclpInetNtoa, /* 13 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclWinConvertError, /* 0 */ - TclWinConvertWSAError, /* 1 */ - TclWinGetServByName, /* 2 */ - TclWinGetSockOpt, /* 3 */ - TclWinGetTclInstance, /* 4 */ - NULL, /* 5 */ - TclWinNToHS, /* 6 */ - TclWinSetSockOpt, /* 7 */ - TclpGetPid, /* 8 */ - TclWinGetPlatformId, /* 9 */ - NULL, /* 10 */ - TclGetAndDetachPids, /* 11 */ - TclpCloseFile, /* 12 */ - TclpCreateCommandChannel, /* 13 */ - TclpCreatePipe, /* 14 */ - TclpCreateProcess, /* 15 */ - NULL, /* 16 */ - NULL, /* 17 */ - TclpMakeFile, /* 18 */ - TclpOpenFile, /* 19 */ - TclWinAddProcess, /* 20 */ - NULL, /* 21 */ - TclpCreateTempFile, /* 22 */ - TclpGetTZName, /* 23 */ - TclWinNoBackslash, /* 24 */ - TclWinGetPlatform, /* 25 */ - TclWinSetInterfaces, /* 26 */ - TclWinFlushDirtyChannels, /* 27 */ - TclWinResetInterfaces, /* 28 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - TclpSysAlloc, /* 0 */ - TclpSysFree, /* 1 */ - TclpSysRealloc, /* 2 */ - TclpExit, /* 3 */ - FSpGetDefaultDir, /* 4 */ - FSpSetDefaultDir, /* 5 */ - FSpFindFolder, /* 6 */ - GetGlobalMouseTcl, /* 7 */ - FSpGetDirectoryIDTcl, /* 8 */ - FSpOpenResFileCompatTcl, /* 9 */ - FSpCreateResFileCompatTcl, /* 10 */ - FSpLocationFromPath, /* 11 */ - FSpPathFromLocation, /* 12 */ - TclMacExitHandler, /* 13 */ - TclMacInitExitToShell, /* 14 */ - TclMacInstallExitToShellPatch, /* 15 */ - TclMacOSErrorToPosixError, /* 16 */ - TclMacRemoveTimer, /* 17 */ - TclMacStartTimer, /* 18 */ - TclMacTimerExpired, /* 19 */ - TclMacRegisterResourceFork, /* 20 */ - TclMacUnRegisterResourceFork, /* 21 */ - TclMacCreateEnv, /* 22 */ - TclMacFOpenHack, /* 23 */ - TclpGetTZName, /* 24 */ - TclMacChmod, /* 25 */ - FSpLLocationFromPath, /* 26 */ -#endif /* MAC_TCL */ -}; - -TclPlatStubs tclPlatStubs = { - TCL_STUB_MAGIC, - NULL, -#ifdef __WIN32__ - Tcl_WinUtfToTChar, /* 0 */ - Tcl_WinTCharToUtf, /* 1 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - Tcl_MacSetEventProc, /* 0 */ - Tcl_MacConvertTextResource, /* 1 */ - Tcl_MacEvalResource, /* 2 */ - Tcl_MacFindResource, /* 3 */ - Tcl_GetOSTypeFromObj, /* 4 */ - Tcl_SetOSTypeObj, /* 5 */ - Tcl_NewOSTypeObj, /* 6 */ - strncasecmp, /* 7 */ - strcasecmp, /* 8 */ -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL - Tcl_MacOSXOpenBundleResources, /* 0 */ - Tcl_MacOSXOpenVersionedBundleResources, /* 1 */ -#endif /* MAC_OSX_TCL */ -}; - -static TclStubHooks tclStubHooks = { - &tclPlatStubs, - &tclIntStubs, - &tclIntPlatStubs -}; - -TclStubs tclStubs = { - TCL_STUB_MAGIC, - &tclStubHooks, - Tcl_PkgProvideEx, /* 0 */ - Tcl_PkgRequireEx, /* 1 */ - Tcl_Panic, /* 2 */ - Tcl_Alloc, /* 3 */ - Tcl_Free, /* 4 */ - Tcl_Realloc, /* 5 */ - Tcl_DbCkalloc, /* 6 */ - Tcl_DbCkfree, /* 7 */ - Tcl_DbCkrealloc, /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_CreateFileHandler, /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 9 */ -#endif /* MAC_TCL */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_DeleteFileHandler, /* 10 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 10 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 10 */ -#endif /* MAC_TCL */ - Tcl_SetTimer, /* 11 */ - Tcl_Sleep, /* 12 */ - Tcl_WaitForEvent, /* 13 */ - Tcl_AppendAllObjTypes, /* 14 */ - Tcl_AppendStringsToObj, /* 15 */ - Tcl_AppendToObj, /* 16 */ - Tcl_ConcatObj, /* 17 */ - Tcl_ConvertToType, /* 18 */ - Tcl_DbDecrRefCount, /* 19 */ - Tcl_DbIncrRefCount, /* 20 */ - Tcl_DbIsShared, /* 21 */ - Tcl_DbNewBooleanObj, /* 22 */ - Tcl_DbNewByteArrayObj, /* 23 */ - Tcl_DbNewDoubleObj, /* 24 */ - Tcl_DbNewListObj, /* 25 */ - Tcl_DbNewLongObj, /* 26 */ - Tcl_DbNewObj, /* 27 */ - Tcl_DbNewStringObj, /* 28 */ - Tcl_DuplicateObj, /* 29 */ - TclFreeObj, /* 30 */ - Tcl_GetBoolean, /* 31 */ - Tcl_GetBooleanFromObj, /* 32 */ - Tcl_GetByteArrayFromObj, /* 33 */ - Tcl_GetDouble, /* 34 */ - Tcl_GetDoubleFromObj, /* 35 */ - Tcl_GetIndexFromObj, /* 36 */ - Tcl_GetInt, /* 37 */ - Tcl_GetIntFromObj, /* 38 */ - Tcl_GetLongFromObj, /* 39 */ - Tcl_GetObjType, /* 40 */ - Tcl_GetStringFromObj, /* 41 */ - Tcl_InvalidateStringRep, /* 42 */ - Tcl_ListObjAppendList, /* 43 */ - Tcl_ListObjAppendElement, /* 44 */ - Tcl_ListObjGetElements, /* 45 */ - Tcl_ListObjIndex, /* 46 */ - Tcl_ListObjLength, /* 47 */ - Tcl_ListObjReplace, /* 48 */ - Tcl_NewBooleanObj, /* 49 */ - Tcl_NewByteArrayObj, /* 50 */ - Tcl_NewDoubleObj, /* 51 */ - Tcl_NewIntObj, /* 52 */ - Tcl_NewListObj, /* 53 */ - Tcl_NewLongObj, /* 54 */ - Tcl_NewObj, /* 55 */ - Tcl_NewStringObj, /* 56 */ - Tcl_SetBooleanObj, /* 57 */ - Tcl_SetByteArrayLength, /* 58 */ - Tcl_SetByteArrayObj, /* 59 */ - Tcl_SetDoubleObj, /* 60 */ - Tcl_SetIntObj, /* 61 */ - Tcl_SetListObj, /* 62 */ - Tcl_SetLongObj, /* 63 */ - Tcl_SetObjLength, /* 64 */ - Tcl_SetStringObj, /* 65 */ - Tcl_AddErrorInfo, /* 66 */ - Tcl_AddObjErrorInfo, /* 67 */ - Tcl_AllowExceptions, /* 68 */ - Tcl_AppendElement, /* 69 */ - Tcl_AppendResult, /* 70 */ - Tcl_AsyncCreate, /* 71 */ - Tcl_AsyncDelete, /* 72 */ - Tcl_AsyncInvoke, /* 73 */ - Tcl_AsyncMark, /* 74 */ - Tcl_AsyncReady, /* 75 */ - Tcl_BackgroundError, /* 76 */ - Tcl_Backslash, /* 77 */ - Tcl_BadChannelOption, /* 78 */ - Tcl_CallWhenDeleted, /* 79 */ - Tcl_CancelIdleCall, /* 80 */ - Tcl_Close, /* 81 */ - Tcl_CommandComplete, /* 82 */ - Tcl_Concat, /* 83 */ - Tcl_ConvertElement, /* 84 */ - Tcl_ConvertCountedElement, /* 85 */ - Tcl_CreateAlias, /* 86 */ - Tcl_CreateAliasObj, /* 87 */ - Tcl_CreateChannel, /* 88 */ - Tcl_CreateChannelHandler, /* 89 */ - Tcl_CreateCloseHandler, /* 90 */ - Tcl_CreateCommand, /* 91 */ - Tcl_CreateEventSource, /* 92 */ - Tcl_CreateExitHandler, /* 93 */ - Tcl_CreateInterp, /* 94 */ - Tcl_CreateMathFunc, /* 95 */ - Tcl_CreateObjCommand, /* 96 */ - Tcl_CreateSlave, /* 97 */ - Tcl_CreateTimerHandler, /* 98 */ - Tcl_CreateTrace, /* 99 */ - Tcl_DeleteAssocData, /* 100 */ - Tcl_DeleteChannelHandler, /* 101 */ - Tcl_DeleteCloseHandler, /* 102 */ - Tcl_DeleteCommand, /* 103 */ - Tcl_DeleteCommandFromToken, /* 104 */ - Tcl_DeleteEvents, /* 105 */ - Tcl_DeleteEventSource, /* 106 */ - Tcl_DeleteExitHandler, /* 107 */ - Tcl_DeleteHashEntry, /* 108 */ - Tcl_DeleteHashTable, /* 109 */ - Tcl_DeleteInterp, /* 110 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_DetachPids, /* 111 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_DetachPids, /* 111 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 111 */ -#endif /* MAC_TCL */ - Tcl_DeleteTimerHandler, /* 112 */ - Tcl_DeleteTrace, /* 113 */ - Tcl_DontCallWhenDeleted, /* 114 */ - Tcl_DoOneEvent, /* 115 */ - Tcl_DoWhenIdle, /* 116 */ - Tcl_DStringAppend, /* 117 */ - Tcl_DStringAppendElement, /* 118 */ - Tcl_DStringEndSublist, /* 119 */ - Tcl_DStringFree, /* 120 */ - Tcl_DStringGetResult, /* 121 */ - Tcl_DStringInit, /* 122 */ - Tcl_DStringResult, /* 123 */ - Tcl_DStringSetLength, /* 124 */ - Tcl_DStringStartSublist, /* 125 */ - Tcl_Eof, /* 126 */ - Tcl_ErrnoId, /* 127 */ - Tcl_ErrnoMsg, /* 128 */ - Tcl_Eval, /* 129 */ - Tcl_EvalFile, /* 130 */ - Tcl_EvalObj, /* 131 */ - Tcl_EventuallyFree, /* 132 */ - Tcl_Exit, /* 133 */ - Tcl_ExposeCommand, /* 134 */ - Tcl_ExprBoolean, /* 135 */ - Tcl_ExprBooleanObj, /* 136 */ - Tcl_ExprDouble, /* 137 */ - Tcl_ExprDoubleObj, /* 138 */ - Tcl_ExprLong, /* 139 */ - Tcl_ExprLongObj, /* 140 */ - Tcl_ExprObj, /* 141 */ - Tcl_ExprString, /* 142 */ - Tcl_Finalize, /* 143 */ - Tcl_FindExecutable, /* 144 */ - Tcl_FirstHashEntry, /* 145 */ - Tcl_Flush, /* 146 */ - Tcl_FreeResult, /* 147 */ - Tcl_GetAlias, /* 148 */ - Tcl_GetAliasObj, /* 149 */ - Tcl_GetAssocData, /* 150 */ - Tcl_GetChannel, /* 151 */ - Tcl_GetChannelBufferSize, /* 152 */ - Tcl_GetChannelHandle, /* 153 */ - Tcl_GetChannelInstanceData, /* 154 */ - Tcl_GetChannelMode, /* 155 */ - Tcl_GetChannelName, /* 156 */ - Tcl_GetChannelOption, /* 157 */ - Tcl_GetChannelType, /* 158 */ - Tcl_GetCommandInfo, /* 159 */ - Tcl_GetCommandName, /* 160 */ - Tcl_GetErrno, /* 161 */ - Tcl_GetHostName, /* 162 */ - Tcl_GetInterpPath, /* 163 */ - Tcl_GetMaster, /* 164 */ - Tcl_GetNameOfExecutable, /* 165 */ - Tcl_GetObjResult, /* 166 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_GetOpenFile, /* 167 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 167 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 167 */ -#endif /* MAC_TCL */ - Tcl_GetPathType, /* 168 */ - Tcl_Gets, /* 169 */ - Tcl_GetsObj, /* 170 */ - Tcl_GetServiceMode, /* 171 */ - Tcl_GetSlave, /* 172 */ - Tcl_GetStdChannel, /* 173 */ - Tcl_GetStringResult, /* 174 */ - Tcl_GetVar, /* 175 */ - Tcl_GetVar2, /* 176 */ - Tcl_GlobalEval, /* 177 */ - Tcl_GlobalEvalObj, /* 178 */ - Tcl_HideCommand, /* 179 */ - Tcl_Init, /* 180 */ - Tcl_InitHashTable, /* 181 */ - Tcl_InputBlocked, /* 182 */ - Tcl_InputBuffered, /* 183 */ - Tcl_InterpDeleted, /* 184 */ - Tcl_IsSafe, /* 185 */ - Tcl_JoinPath, /* 186 */ - Tcl_LinkVar, /* 187 */ - NULL, /* 188 */ - Tcl_MakeFileChannel, /* 189 */ - Tcl_MakeSafe, /* 190 */ - Tcl_MakeTcpClientChannel, /* 191 */ - Tcl_Merge, /* 192 */ - Tcl_NextHashEntry, /* 193 */ - Tcl_NotifyChannel, /* 194 */ - Tcl_ObjGetVar2, /* 195 */ - Tcl_ObjSetVar2, /* 196 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_OpenCommandChannel, /* 197 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_OpenCommandChannel, /* 197 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 197 */ -#endif /* MAC_TCL */ - Tcl_OpenFileChannel, /* 198 */ - Tcl_OpenTcpClient, /* 199 */ - Tcl_OpenTcpServer, /* 200 */ - Tcl_Preserve, /* 201 */ - Tcl_PrintDouble, /* 202 */ - Tcl_PutEnv, /* 203 */ - Tcl_PosixError, /* 204 */ - Tcl_QueueEvent, /* 205 */ - Tcl_Read, /* 206 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_ReapDetachedProcs, /* 207 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_ReapDetachedProcs, /* 207 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 207 */ -#endif /* MAC_TCL */ - Tcl_RecordAndEval, /* 208 */ - Tcl_RecordAndEvalObj, /* 209 */ - Tcl_RegisterChannel, /* 210 */ - Tcl_RegisterObjType, /* 211 */ - Tcl_RegExpCompile, /* 212 */ - Tcl_RegExpExec, /* 213 */ - Tcl_RegExpMatch, /* 214 */ - Tcl_RegExpRange, /* 215 */ - Tcl_Release, /* 216 */ - Tcl_ResetResult, /* 217 */ - Tcl_ScanElement, /* 218 */ - Tcl_ScanCountedElement, /* 219 */ - Tcl_SeekOld, /* 220 */ - Tcl_ServiceAll, /* 221 */ - Tcl_ServiceEvent, /* 222 */ - Tcl_SetAssocData, /* 223 */ - Tcl_SetChannelBufferSize, /* 224 */ - Tcl_SetChannelOption, /* 225 */ - Tcl_SetCommandInfo, /* 226 */ - Tcl_SetErrno, /* 227 */ - Tcl_SetErrorCode, /* 228 */ - Tcl_SetMaxBlockTime, /* 229 */ - Tcl_SetPanicProc, /* 230 */ - Tcl_SetRecursionLimit, /* 231 */ - Tcl_SetResult, /* 232 */ - Tcl_SetServiceMode, /* 233 */ - Tcl_SetObjErrorCode, /* 234 */ - Tcl_SetObjResult, /* 235 */ - Tcl_SetStdChannel, /* 236 */ - Tcl_SetVar, /* 237 */ - Tcl_SetVar2, /* 238 */ - Tcl_SignalId, /* 239 */ - Tcl_SignalMsg, /* 240 */ - Tcl_SourceRCFile, /* 241 */ - Tcl_SplitList, /* 242 */ - Tcl_SplitPath, /* 243 */ - Tcl_StaticPackage, /* 244 */ - Tcl_StringMatch, /* 245 */ - Tcl_TellOld, /* 246 */ - Tcl_TraceVar, /* 247 */ - Tcl_TraceVar2, /* 248 */ - Tcl_TranslateFileName, /* 249 */ - Tcl_Ungets, /* 250 */ - Tcl_UnlinkVar, /* 251 */ - Tcl_UnregisterChannel, /* 252 */ - Tcl_UnsetVar, /* 253 */ - Tcl_UnsetVar2, /* 254 */ - Tcl_UntraceVar, /* 255 */ - Tcl_UntraceVar2, /* 256 */ - Tcl_UpdateLinkedVar, /* 257 */ - Tcl_UpVar, /* 258 */ - Tcl_UpVar2, /* 259 */ - Tcl_VarEval, /* 260 */ - Tcl_VarTraceInfo, /* 261 */ - Tcl_VarTraceInfo2, /* 262 */ - Tcl_Write, /* 263 */ - Tcl_WrongNumArgs, /* 264 */ - Tcl_DumpActiveMemory, /* 265 */ - Tcl_ValidateAllMemory, /* 266 */ - Tcl_AppendResultVA, /* 267 */ - Tcl_AppendStringsToObjVA, /* 268 */ - Tcl_HashStats, /* 269 */ - Tcl_ParseVar, /* 270 */ - Tcl_PkgPresent, /* 271 */ - Tcl_PkgPresentEx, /* 272 */ - Tcl_PkgProvide, /* 273 */ - Tcl_PkgRequire, /* 274 */ - Tcl_SetErrorCodeVA, /* 275 */ - Tcl_VarEvalVA, /* 276 */ - Tcl_WaitPid, /* 277 */ - Tcl_PanicVA, /* 278 */ - Tcl_GetVersion, /* 279 */ - Tcl_InitMemory, /* 280 */ - Tcl_StackChannel, /* 281 */ - Tcl_UnstackChannel, /* 282 */ - Tcl_GetStackedChannel, /* 283 */ - Tcl_SetMainLoop, /* 284 */ - NULL, /* 285 */ - Tcl_AppendObjToObj, /* 286 */ - Tcl_CreateEncoding, /* 287 */ - Tcl_CreateThreadExitHandler, /* 288 */ - Tcl_DeleteThreadExitHandler, /* 289 */ - Tcl_DiscardResult, /* 290 */ - Tcl_EvalEx, /* 291 */ - Tcl_EvalObjv, /* 292 */ - Tcl_EvalObjEx, /* 293 */ - Tcl_ExitThread, /* 294 */ - Tcl_ExternalToUtf, /* 295 */ - Tcl_ExternalToUtfDString, /* 296 */ - Tcl_FinalizeThread, /* 297 */ - Tcl_FinalizeNotifier, /* 298 */ - Tcl_FreeEncoding, /* 299 */ - Tcl_GetCurrentThread, /* 300 */ - Tcl_GetEncoding, /* 301 */ - Tcl_GetEncodingName, /* 302 */ - Tcl_GetEncodingNames, /* 303 */ - Tcl_GetIndexFromObjStruct, /* 304 */ - Tcl_GetThreadData, /* 305 */ - Tcl_GetVar2Ex, /* 306 */ - Tcl_InitNotifier, /* 307 */ - Tcl_MutexLock, /* 308 */ - Tcl_MutexUnlock, /* 309 */ - Tcl_ConditionNotify, /* 310 */ - Tcl_ConditionWait, /* 311 */ - Tcl_NumUtfChars, /* 312 */ - Tcl_ReadChars, /* 313 */ - Tcl_RestoreResult, /* 314 */ - Tcl_SaveResult, /* 315 */ - Tcl_SetSystemEncoding, /* 316 */ - Tcl_SetVar2Ex, /* 317 */ - Tcl_ThreadAlert, /* 318 */ - Tcl_ThreadQueueEvent, /* 319 */ - Tcl_UniCharAtIndex, /* 320 */ - Tcl_UniCharToLower, /* 321 */ - Tcl_UniCharToTitle, /* 322 */ - Tcl_UniCharToUpper, /* 323 */ - Tcl_UniCharToUtf, /* 324 */ - Tcl_UtfAtIndex, /* 325 */ - Tcl_UtfCharComplete, /* 326 */ - Tcl_UtfBackslash, /* 327 */ - Tcl_UtfFindFirst, /* 328 */ - Tcl_UtfFindLast, /* 329 */ - Tcl_UtfNext, /* 330 */ - Tcl_UtfPrev, /* 331 */ - Tcl_UtfToExternal, /* 332 */ - Tcl_UtfToExternalDString, /* 333 */ - Tcl_UtfToLower, /* 334 */ - Tcl_UtfToTitle, /* 335 */ - Tcl_UtfToUniChar, /* 336 */ - Tcl_UtfToUpper, /* 337 */ - Tcl_WriteChars, /* 338 */ - Tcl_WriteObj, /* 339 */ - Tcl_GetString, /* 340 */ - Tcl_GetDefaultEncodingDir, /* 341 */ - Tcl_SetDefaultEncodingDir, /* 342 */ - Tcl_AlertNotifier, /* 343 */ - Tcl_ServiceModeHook, /* 344 */ - Tcl_UniCharIsAlnum, /* 345 */ - Tcl_UniCharIsAlpha, /* 346 */ - Tcl_UniCharIsDigit, /* 347 */ - Tcl_UniCharIsLower, /* 348 */ - Tcl_UniCharIsSpace, /* 349 */ - Tcl_UniCharIsUpper, /* 350 */ - Tcl_UniCharIsWordChar, /* 351 */ - Tcl_UniCharLen, /* 352 */ - Tcl_UniCharNcmp, /* 353 */ - Tcl_UniCharToUtfDString, /* 354 */ - Tcl_UtfToUniCharDString, /* 355 */ - Tcl_GetRegExpFromObj, /* 356 */ - Tcl_EvalTokens, /* 357 */ - Tcl_FreeParse, /* 358 */ - Tcl_LogCommandInfo, /* 359 */ - Tcl_ParseBraces, /* 360 */ - Tcl_ParseCommand, /* 361 */ - Tcl_ParseExpr, /* 362 */ - Tcl_ParseQuotedString, /* 363 */ - Tcl_ParseVarName, /* 364 */ - Tcl_GetCwd, /* 365 */ - Tcl_Chdir, /* 366 */ - Tcl_Access, /* 367 */ - Tcl_Stat, /* 368 */ - Tcl_UtfNcmp, /* 369 */ - Tcl_UtfNcasecmp, /* 370 */ - Tcl_StringCaseMatch, /* 371 */ - Tcl_UniCharIsControl, /* 372 */ - Tcl_UniCharIsGraph, /* 373 */ - Tcl_UniCharIsPrint, /* 374 */ - Tcl_UniCharIsPunct, /* 375 */ - Tcl_RegExpExecObj, /* 376 */ - Tcl_RegExpGetInfo, /* 377 */ - Tcl_NewUnicodeObj, /* 378 */ - Tcl_SetUnicodeObj, /* 379 */ - Tcl_GetCharLength, /* 380 */ - Tcl_GetUniChar, /* 381 */ - Tcl_GetUnicode, /* 382 */ - Tcl_GetRange, /* 383 */ - Tcl_AppendUnicodeToObj, /* 384 */ - Tcl_RegExpMatchObj, /* 385 */ - Tcl_SetNotifier, /* 386 */ - Tcl_GetAllocMutex, /* 387 */ - Tcl_GetChannelNames, /* 388 */ - Tcl_GetChannelNamesEx, /* 389 */ - Tcl_ProcObjCmd, /* 390 */ - Tcl_ConditionFinalize, /* 391 */ - Tcl_MutexFinalize, /* 392 */ - Tcl_CreateThread, /* 393 */ - Tcl_ReadRaw, /* 394 */ - Tcl_WriteRaw, /* 395 */ - Tcl_GetTopChannel, /* 396 */ - Tcl_ChannelBuffered, /* 397 */ - Tcl_ChannelName, /* 398 */ - Tcl_ChannelVersion, /* 399 */ - Tcl_ChannelBlockModeProc, /* 400 */ - Tcl_ChannelCloseProc, /* 401 */ - Tcl_ChannelClose2Proc, /* 402 */ - Tcl_ChannelInputProc, /* 403 */ - Tcl_ChannelOutputProc, /* 404 */ - Tcl_ChannelSeekProc, /* 405 */ - Tcl_ChannelSetOptionProc, /* 406 */ - Tcl_ChannelGetOptionProc, /* 407 */ - Tcl_ChannelWatchProc, /* 408 */ - Tcl_ChannelGetHandleProc, /* 409 */ - Tcl_ChannelFlushProc, /* 410 */ - Tcl_ChannelHandlerProc, /* 411 */ - Tcl_JoinThread, /* 412 */ - Tcl_IsChannelShared, /* 413 */ - Tcl_IsChannelRegistered, /* 414 */ - Tcl_CutChannel, /* 415 */ - Tcl_SpliceChannel, /* 416 */ - Tcl_ClearChannelHandlers, /* 417 */ - Tcl_IsChannelExisting, /* 418 */ - Tcl_UniCharNcasecmp, /* 419 */ - Tcl_UniCharCaseMatch, /* 420 */ - Tcl_FindHashEntry, /* 421 */ - Tcl_CreateHashEntry, /* 422 */ - Tcl_InitCustomHashTable, /* 423 */ - Tcl_InitObjHashTable, /* 424 */ - Tcl_CommandTraceInfo, /* 425 */ - Tcl_TraceCommand, /* 426 */ - Tcl_UntraceCommand, /* 427 */ - Tcl_AttemptAlloc, /* 428 */ - Tcl_AttemptDbCkalloc, /* 429 */ - Tcl_AttemptRealloc, /* 430 */ - Tcl_AttemptDbCkrealloc, /* 431 */ - Tcl_AttemptSetObjLength, /* 432 */ - Tcl_GetChannelThread, /* 433 */ - Tcl_GetUnicodeFromObj, /* 434 */ - Tcl_GetMathFuncInfo, /* 435 */ - Tcl_ListMathFuncs, /* 436 */ - Tcl_SubstObj, /* 437 */ - Tcl_DetachChannel, /* 438 */ - Tcl_IsStandardChannel, /* 439 */ - Tcl_FSCopyFile, /* 440 */ - Tcl_FSCopyDirectory, /* 441 */ - Tcl_FSCreateDirectory, /* 442 */ - Tcl_FSDeleteFile, /* 443 */ - Tcl_FSLoadFile, /* 444 */ - Tcl_FSMatchInDirectory, /* 445 */ - Tcl_FSLink, /* 446 */ - Tcl_FSRemoveDirectory, /* 447 */ - Tcl_FSRenameFile, /* 448 */ - Tcl_FSLstat, /* 449 */ - Tcl_FSUtime, /* 450 */ - Tcl_FSFileAttrsGet, /* 451 */ - Tcl_FSFileAttrsSet, /* 452 */ - Tcl_FSFileAttrStrings, /* 453 */ - Tcl_FSStat, /* 454 */ - Tcl_FSAccess, /* 455 */ - Tcl_FSOpenFileChannel, /* 456 */ - Tcl_FSGetCwd, /* 457 */ - Tcl_FSChdir, /* 458 */ - Tcl_FSConvertToPathType, /* 459 */ - Tcl_FSJoinPath, /* 460 */ - Tcl_FSSplitPath, /* 461 */ - Tcl_FSEqualPaths, /* 462 */ - Tcl_FSGetNormalizedPath, /* 463 */ - Tcl_FSJoinToPath, /* 464 */ - Tcl_FSGetInternalRep, /* 465 */ - Tcl_FSGetTranslatedPath, /* 466 */ - Tcl_FSEvalFile, /* 467 */ - Tcl_FSNewNativePath, /* 468 */ - Tcl_FSGetNativePath, /* 469 */ - Tcl_FSFileSystemInfo, /* 470 */ - Tcl_FSPathSeparator, /* 471 */ - Tcl_FSListVolumes, /* 472 */ - Tcl_FSRegister, /* 473 */ - Tcl_FSUnregister, /* 474 */ - Tcl_FSData, /* 475 */ - Tcl_FSGetTranslatedStringPath, /* 476 */ - Tcl_FSGetFileSystemForPath, /* 477 */ - Tcl_FSGetPathType, /* 478 */ - Tcl_OutputBuffered, /* 479 */ - Tcl_FSMountsChanged, /* 480 */ - Tcl_EvalTokensStandard, /* 481 */ - Tcl_GetTime, /* 482 */ - Tcl_CreateObjTrace, /* 483 */ - Tcl_GetCommandInfoFromToken, /* 484 */ - Tcl_SetCommandInfoFromToken, /* 485 */ - Tcl_DbNewWideIntObj, /* 486 */ - Tcl_GetWideIntFromObj, /* 487 */ - Tcl_NewWideIntObj, /* 488 */ - Tcl_SetWideIntObj, /* 489 */ - Tcl_AllocStatBuf, /* 490 */ - Tcl_Seek, /* 491 */ - Tcl_Tell, /* 492 */ - Tcl_ChannelWideSeekProc, /* 493 */ -}; - -/* !END!: Do not edit above this line. */ +/* + * tclStubInit.c -- + * + * This file contains the initializers for the Tcl stub vectors. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.5 2004/05/17 16:25:14 dgp Exp $ + */ + +#include "tclInt.h" +#include "tclPort.h" + +/* + * Remove macros that will interfere with the definitions below. + */ + +#undef Tcl_Alloc +#undef Tcl_Free +#undef Tcl_Realloc +#undef Tcl_NewBooleanObj +#undef Tcl_NewByteArrayObj +#undef Tcl_NewDoubleObj +#undef Tcl_NewIntObj +#undef Tcl_NewListObj +#undef Tcl_NewLongObj +#undef Tcl_NewObj +#undef Tcl_NewStringObj +#undef Tcl_DumpActiveMemory +#undef Tcl_ValidateAllMemory +#if TCL_PRESERVE_BINARY_COMPATABILITY +# undef Tcl_FindHashEntry +# undef Tcl_CreateHashEntry +#endif + +/* + * Keep a record of the original Notifier procedures, created in the + * same compilation unit as the stub tables so we can later do reliable, + * portable comparisons to see whether a Tcl_SetNotifier() call swapped + * new routines into the stub table. + */ + +Tcl_NotifierProcs tclOriginalNotifier = { + Tcl_SetTimer, + Tcl_WaitForEvent, +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_CreateFileHandler, + Tcl_DeleteFileHandler, +#else + NULL, + NULL, +#endif + NULL, + NULL, + NULL, + NULL +}; + +/* + * WARNING: The contents of this file is automatically generated by the + * tools/genStubs.tcl script. Any modifications to the function declarations + * below should be made in the generic/tcl.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +TclIntStubs tclIntStubs = { + TCL_STUB_MAGIC, + NULL, + NULL, /* 0 */ + TclAccessDeleteProc, /* 1 */ + TclAccessInsertProc, /* 2 */ + TclAllocateFreeObjects, /* 3 */ + NULL, /* 4 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclCleanupChildren, /* 5 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclCleanupChildren, /* 5 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 5 */ +#endif /* MAC_TCL */ + TclCleanupCommand, /* 6 */ + TclCopyAndCollapse, /* 7 */ + TclCopyChannel, /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclCreatePipeline, /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclCreatePipeline, /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 9 */ +#endif /* MAC_TCL */ + TclCreateProc, /* 10 */ + TclDeleteCompiledLocalVars, /* 11 */ + TclDeleteVars, /* 12 */ + TclDoGlob, /* 13 */ + TclDumpMemoryInfo, /* 14 */ + NULL, /* 15 */ + TclExprFloatError, /* 16 */ + NULL, /* 17 */ + NULL, /* 18 */ + NULL, /* 19 */ + NULL, /* 20 */ + NULL, /* 21 */ + TclFindElement, /* 22 */ + TclFindProc, /* 23 */ + TclFormatInt, /* 24 */ + TclFreePackageInfo, /* 25 */ + NULL, /* 26 */ + TclGetDate, /* 27 */ + TclpGetDefaultStdChannel, /* 28 */ + NULL, /* 29 */ + NULL, /* 30 */ + TclGetExtension, /* 31 */ + TclGetFrame, /* 32 */ + TclGetInterpProc, /* 33 */ + TclGetIntForIndex, /* 34 */ + NULL, /* 35 */ + TclGetLong, /* 36 */ + TclGetLoadedPackages, /* 37 */ + TclGetNamespaceForQualName, /* 38 */ + TclGetObjInterpProc, /* 39 */ + TclGetOpenMode, /* 40 */ + TclGetOriginalCommand, /* 41 */ + TclpGetUserHome, /* 42 */ + TclGlobalInvoke, /* 43 */ + TclGuessPackageName, /* 44 */ + TclHideUnsafeCommands, /* 45 */ + TclInExit, /* 46 */ + NULL, /* 47 */ + NULL, /* 48 */ + TclIncrVar2, /* 49 */ + TclInitCompiledLocals, /* 50 */ + TclInterpInit, /* 51 */ + TclInvoke, /* 52 */ + TclInvokeObjectCommand, /* 53 */ + TclInvokeStringCommand, /* 54 */ + TclIsProc, /* 55 */ + NULL, /* 56 */ + NULL, /* 57 */ + TclLookupVar, /* 58 */ + NULL, /* 59 */ + TclNeedSpace, /* 60 */ + TclNewProcBodyObj, /* 61 */ + TclObjCommandComplete, /* 62 */ + TclObjInterpProc, /* 63 */ + TclObjInvoke, /* 64 */ + TclObjInvokeGlobal, /* 65 */ + TclOpenFileChannelDeleteProc, /* 66 */ + TclOpenFileChannelInsertProc, /* 67 */ + NULL, /* 68 */ + TclpAlloc, /* 69 */ + NULL, /* 70 */ + NULL, /* 71 */ + NULL, /* 72 */ + NULL, /* 73 */ + TclpFree, /* 74 */ + TclpGetClicks, /* 75 */ + TclpGetSeconds, /* 76 */ + TclpGetTime, /* 77 */ + TclpGetTimeZone, /* 78 */ + NULL, /* 79 */ + NULL, /* 80 */ + TclpRealloc, /* 81 */ + NULL, /* 82 */ + NULL, /* 83 */ + NULL, /* 84 */ + NULL, /* 85 */ + NULL, /* 86 */ + NULL, /* 87 */ + TclPrecTraceProc, /* 88 */ + TclPreventAliasLoop, /* 89 */ + NULL, /* 90 */ + TclProcCleanupProc, /* 91 */ + TclProcCompileProc, /* 92 */ + TclProcDeleteProc, /* 93 */ + TclProcInterpProc, /* 94 */ + NULL, /* 95 */ + TclRenameCommand, /* 96 */ + TclResetShadowedCmdRefs, /* 97 */ + TclServiceIdle, /* 98 */ + NULL, /* 99 */ + NULL, /* 100 */ + TclSetPreInitScript, /* 101 */ + TclSetupEnv, /* 102 */ + TclSockGetPort, /* 103 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclSockMinimumBuffers, /* 104 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclSockMinimumBuffers, /* 104 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 104 */ +#endif /* MAC_TCL */ + NULL, /* 105 */ + TclStatDeleteProc, /* 106 */ + TclStatInsertProc, /* 107 */ + TclTeardownNamespace, /* 108 */ + TclUpdateReturnInfo, /* 109 */ + NULL, /* 110 */ + Tcl_AddInterpResolvers, /* 111 */ + Tcl_AppendExportList, /* 112 */ + Tcl_CreateNamespace, /* 113 */ + Tcl_DeleteNamespace, /* 114 */ + Tcl_Export, /* 115 */ + Tcl_FindCommand, /* 116 */ + Tcl_FindNamespace, /* 117 */ + Tcl_GetInterpResolvers, /* 118 */ + Tcl_GetNamespaceResolvers, /* 119 */ + Tcl_FindNamespaceVar, /* 120 */ + Tcl_ForgetImport, /* 121 */ + Tcl_GetCommandFromObj, /* 122 */ + Tcl_GetCommandFullName, /* 123 */ + Tcl_GetCurrentNamespace, /* 124 */ + Tcl_GetGlobalNamespace, /* 125 */ + Tcl_GetVariableFullName, /* 126 */ + Tcl_Import, /* 127 */ + Tcl_PopCallFrame, /* 128 */ + Tcl_PushCallFrame, /* 129 */ + Tcl_RemoveInterpResolvers, /* 130 */ + Tcl_SetNamespaceResolvers, /* 131 */ + TclpHasSockets, /* 132 */ + TclpGetDate, /* 133 */ + TclpStrftime, /* 134 */ + TclpCheckStackSpace, /* 135 */ + NULL, /* 136 */ + NULL, /* 137 */ + TclGetEnv, /* 138 */ + NULL, /* 139 */ + TclLooksLikeInt, /* 140 */ + TclpGetCwd, /* 141 */ + TclSetByteCodeFromAny, /* 142 */ + TclAddLiteralObj, /* 143 */ + TclHideLiteral, /* 144 */ + TclGetAuxDataType, /* 145 */ + TclHandleCreate, /* 146 */ + TclHandleFree, /* 147 */ + TclHandlePreserve, /* 148 */ + TclHandleRelease, /* 149 */ + TclRegAbout, /* 150 */ + TclRegExpRangeUniChar, /* 151 */ + TclSetLibraryPath, /* 152 */ + TclGetLibraryPath, /* 153 */ + NULL, /* 154 */ + NULL, /* 155 */ + TclRegError, /* 156 */ + TclVarTraceExists, /* 157 */ + TclSetStartupScriptFileName, /* 158 */ + TclGetStartupScriptFileName, /* 159 */ + NULL, /* 160 */ + TclChannelTransform, /* 161 */ + TclChannelEventScriptInvoker, /* 162 */ + TclGetInstructionTable, /* 163 */ + TclExpandCodeArray, /* 164 */ + TclpSetInitialEncodings, /* 165 */ + TclListObjSetElement, /* 166 */ + TclSetStartupScriptPath, /* 167 */ + TclGetStartupScriptPath, /* 168 */ + TclpUtfNcmp2, /* 169 */ + TclCheckInterpTraces, /* 170 */ + TclCheckExecutionTraces, /* 171 */ + TclInThreadExit, /* 172 */ + TclUniCharMatch, /* 173 */ + NULL, /* 174 */ + NULL, /* 175 */ + NULL, /* 176 */ + NULL, /* 177 */ + NULL, /* 178 */ + NULL, /* 179 */ + NULL, /* 180 */ + NULL, /* 181 */ + TclpLocaltime, /* 182 */ + TclpGmtime, /* 183 */ +}; + +TclIntPlatStubs tclIntPlatStubs = { + TCL_STUB_MAGIC, + NULL, +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclGetAndDetachPids, /* 0 */ + TclpCloseFile, /* 1 */ + TclpCreateCommandChannel, /* 2 */ + TclpCreatePipe, /* 3 */ + TclpCreateProcess, /* 4 */ + NULL, /* 5 */ + TclpMakeFile, /* 6 */ + TclpOpenFile, /* 7 */ + TclUnixWaitForFile, /* 8 */ + TclpCreateTempFile, /* 9 */ + TclpReaddir, /* 10 */ + TclpLocaltime_unix, /* 11 */ + TclpGmtime_unix, /* 12 */ + TclpInetNtoa, /* 13 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclWinConvertError, /* 0 */ + TclWinConvertWSAError, /* 1 */ + TclWinGetServByName, /* 2 */ + TclWinGetSockOpt, /* 3 */ + TclWinGetTclInstance, /* 4 */ + NULL, /* 5 */ + TclWinNToHS, /* 6 */ + TclWinSetSockOpt, /* 7 */ + TclpGetPid, /* 8 */ + TclWinGetPlatformId, /* 9 */ + NULL, /* 10 */ + TclGetAndDetachPids, /* 11 */ + TclpCloseFile, /* 12 */ + TclpCreateCommandChannel, /* 13 */ + TclpCreatePipe, /* 14 */ + TclpCreateProcess, /* 15 */ + NULL, /* 16 */ + NULL, /* 17 */ + TclpMakeFile, /* 18 */ + TclpOpenFile, /* 19 */ + TclWinAddProcess, /* 20 */ + NULL, /* 21 */ + TclpCreateTempFile, /* 22 */ + TclpGetTZName, /* 23 */ + TclWinNoBackslash, /* 24 */ + TclWinGetPlatform, /* 25 */ + TclWinSetInterfaces, /* 26 */ + TclWinFlushDirtyChannels, /* 27 */ + TclWinResetInterfaces, /* 28 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + TclpSysAlloc, /* 0 */ + TclpSysFree, /* 1 */ + TclpSysRealloc, /* 2 */ + TclpExit, /* 3 */ + FSpGetDefaultDir, /* 4 */ + FSpSetDefaultDir, /* 5 */ + FSpFindFolder, /* 6 */ + GetGlobalMouseTcl, /* 7 */ + FSpGetDirectoryIDTcl, /* 8 */ + FSpOpenResFileCompatTcl, /* 9 */ + FSpCreateResFileCompatTcl, /* 10 */ + FSpLocationFromPath, /* 11 */ + FSpPathFromLocation, /* 12 */ + TclMacExitHandler, /* 13 */ + TclMacInitExitToShell, /* 14 */ + TclMacInstallExitToShellPatch, /* 15 */ + TclMacOSErrorToPosixError, /* 16 */ + TclMacRemoveTimer, /* 17 */ + TclMacStartTimer, /* 18 */ + TclMacTimerExpired, /* 19 */ + TclMacRegisterResourceFork, /* 20 */ + TclMacUnRegisterResourceFork, /* 21 */ + TclMacCreateEnv, /* 22 */ + TclMacFOpenHack, /* 23 */ + TclpGetTZName, /* 24 */ + TclMacChmod, /* 25 */ + FSpLLocationFromPath, /* 26 */ +#endif /* MAC_TCL */ +}; + +TclPlatStubs tclPlatStubs = { + TCL_STUB_MAGIC, + NULL, +#ifdef __WIN32__ + Tcl_WinUtfToTChar, /* 0 */ + Tcl_WinTCharToUtf, /* 1 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + Tcl_MacSetEventProc, /* 0 */ + Tcl_MacConvertTextResource, /* 1 */ + Tcl_MacEvalResource, /* 2 */ + Tcl_MacFindResource, /* 3 */ + Tcl_GetOSTypeFromObj, /* 4 */ + Tcl_SetOSTypeObj, /* 5 */ + Tcl_NewOSTypeObj, /* 6 */ + strncasecmp, /* 7 */ + strcasecmp, /* 8 */ +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL + Tcl_MacOSXOpenBundleResources, /* 0 */ + Tcl_MacOSXOpenVersionedBundleResources, /* 1 */ +#endif /* MAC_OSX_TCL */ +}; + +static TclStubHooks tclStubHooks = { + &tclPlatStubs, + &tclIntStubs, + &tclIntPlatStubs +}; + +TclStubs tclStubs = { + TCL_STUB_MAGIC, + &tclStubHooks, + Tcl_PkgProvideEx, /* 0 */ + Tcl_PkgRequireEx, /* 1 */ + Tcl_Panic, /* 2 */ + Tcl_Alloc, /* 3 */ + Tcl_Free, /* 4 */ + Tcl_Realloc, /* 5 */ + Tcl_DbCkalloc, /* 6 */ + Tcl_DbCkfree, /* 7 */ + Tcl_DbCkrealloc, /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_CreateFileHandler, /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 9 */ +#endif /* MAC_TCL */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_DeleteFileHandler, /* 10 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 10 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 10 */ +#endif /* MAC_TCL */ + Tcl_SetTimer, /* 11 */ + Tcl_Sleep, /* 12 */ + Tcl_WaitForEvent, /* 13 */ + Tcl_AppendAllObjTypes, /* 14 */ + Tcl_AppendStringsToObj, /* 15 */ + Tcl_AppendToObj, /* 16 */ + Tcl_ConcatObj, /* 17 */ + Tcl_ConvertToType, /* 18 */ + Tcl_DbDecrRefCount, /* 19 */ + Tcl_DbIncrRefCount, /* 20 */ + Tcl_DbIsShared, /* 21 */ + Tcl_DbNewBooleanObj, /* 22 */ + Tcl_DbNewByteArrayObj, /* 23 */ + Tcl_DbNewDoubleObj, /* 24 */ + Tcl_DbNewListObj, /* 25 */ + Tcl_DbNewLongObj, /* 26 */ + Tcl_DbNewObj, /* 27 */ + Tcl_DbNewStringObj, /* 28 */ + Tcl_DuplicateObj, /* 29 */ + TclFreeObj, /* 30 */ + Tcl_GetBoolean, /* 31 */ + Tcl_GetBooleanFromObj, /* 32 */ + Tcl_GetByteArrayFromObj, /* 33 */ + Tcl_GetDouble, /* 34 */ + Tcl_GetDoubleFromObj, /* 35 */ + Tcl_GetIndexFromObj, /* 36 */ + Tcl_GetInt, /* 37 */ + Tcl_GetIntFromObj, /* 38 */ + Tcl_GetLongFromObj, /* 39 */ + Tcl_GetObjType, /* 40 */ + Tcl_GetStringFromObj, /* 41 */ + Tcl_InvalidateStringRep, /* 42 */ + Tcl_ListObjAppendList, /* 43 */ + Tcl_ListObjAppendElement, /* 44 */ + Tcl_ListObjGetElements, /* 45 */ + Tcl_ListObjIndex, /* 46 */ + Tcl_ListObjLength, /* 47 */ + Tcl_ListObjReplace, /* 48 */ + Tcl_NewBooleanObj, /* 49 */ + Tcl_NewByteArrayObj, /* 50 */ + Tcl_NewDoubleObj, /* 51 */ + Tcl_NewIntObj, /* 52 */ + Tcl_NewListObj, /* 53 */ + Tcl_NewLongObj, /* 54 */ + Tcl_NewObj, /* 55 */ + Tcl_NewStringObj, /* 56 */ + Tcl_SetBooleanObj, /* 57 */ + Tcl_SetByteArrayLength, /* 58 */ + Tcl_SetByteArrayObj, /* 59 */ + Tcl_SetDoubleObj, /* 60 */ + Tcl_SetIntObj, /* 61 */ + Tcl_SetListObj, /* 62 */ + Tcl_SetLongObj, /* 63 */ + Tcl_SetObjLength, /* 64 */ + Tcl_SetStringObj, /* 65 */ + Tcl_AddErrorInfo, /* 66 */ + Tcl_AddObjErrorInfo, /* 67 */ + Tcl_AllowExceptions, /* 68 */ + Tcl_AppendElement, /* 69 */ + Tcl_AppendResult, /* 70 */ + Tcl_AsyncCreate, /* 71 */ + Tcl_AsyncDelete, /* 72 */ + Tcl_AsyncInvoke, /* 73 */ + Tcl_AsyncMark, /* 74 */ + Tcl_AsyncReady, /* 75 */ + Tcl_BackgroundError, /* 76 */ + Tcl_Backslash, /* 77 */ + Tcl_BadChannelOption, /* 78 */ + Tcl_CallWhenDeleted, /* 79 */ + Tcl_CancelIdleCall, /* 80 */ + Tcl_Close, /* 81 */ + Tcl_CommandComplete, /* 82 */ + Tcl_Concat, /* 83 */ + Tcl_ConvertElement, /* 84 */ + Tcl_ConvertCountedElement, /* 85 */ + Tcl_CreateAlias, /* 86 */ + Tcl_CreateAliasObj, /* 87 */ + Tcl_CreateChannel, /* 88 */ + Tcl_CreateChannelHandler, /* 89 */ + Tcl_CreateCloseHandler, /* 90 */ + Tcl_CreateCommand, /* 91 */ + Tcl_CreateEventSource, /* 92 */ + Tcl_CreateExitHandler, /* 93 */ + Tcl_CreateInterp, /* 94 */ + Tcl_CreateMathFunc, /* 95 */ + Tcl_CreateObjCommand, /* 96 */ + Tcl_CreateSlave, /* 97 */ + Tcl_CreateTimerHandler, /* 98 */ + Tcl_CreateTrace, /* 99 */ + Tcl_DeleteAssocData, /* 100 */ + Tcl_DeleteChannelHandler, /* 101 */ + Tcl_DeleteCloseHandler, /* 102 */ + Tcl_DeleteCommand, /* 103 */ + Tcl_DeleteCommandFromToken, /* 104 */ + Tcl_DeleteEvents, /* 105 */ + Tcl_DeleteEventSource, /* 106 */ + Tcl_DeleteExitHandler, /* 107 */ + Tcl_DeleteHashEntry, /* 108 */ + Tcl_DeleteHashTable, /* 109 */ + Tcl_DeleteInterp, /* 110 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_DetachPids, /* 111 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_DetachPids, /* 111 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 111 */ +#endif /* MAC_TCL */ + Tcl_DeleteTimerHandler, /* 112 */ + Tcl_DeleteTrace, /* 113 */ + Tcl_DontCallWhenDeleted, /* 114 */ + Tcl_DoOneEvent, /* 115 */ + Tcl_DoWhenIdle, /* 116 */ + Tcl_DStringAppend, /* 117 */ + Tcl_DStringAppendElement, /* 118 */ + Tcl_DStringEndSublist, /* 119 */ + Tcl_DStringFree, /* 120 */ + Tcl_DStringGetResult, /* 121 */ + Tcl_DStringInit, /* 122 */ + Tcl_DStringResult, /* 123 */ + Tcl_DStringSetLength, /* 124 */ + Tcl_DStringStartSublist, /* 125 */ + Tcl_Eof, /* 126 */ + Tcl_ErrnoId, /* 127 */ + Tcl_ErrnoMsg, /* 128 */ + Tcl_Eval, /* 129 */ + Tcl_EvalFile, /* 130 */ + Tcl_EvalObj, /* 131 */ + Tcl_EventuallyFree, /* 132 */ + Tcl_Exit, /* 133 */ + Tcl_ExposeCommand, /* 134 */ + Tcl_ExprBoolean, /* 135 */ + Tcl_ExprBooleanObj, /* 136 */ + Tcl_ExprDouble, /* 137 */ + Tcl_ExprDoubleObj, /* 138 */ + Tcl_ExprLong, /* 139 */ + Tcl_ExprLongObj, /* 140 */ + Tcl_ExprObj, /* 141 */ + Tcl_ExprString, /* 142 */ + Tcl_Finalize, /* 143 */ + Tcl_FindExecutable, /* 144 */ + Tcl_FirstHashEntry, /* 145 */ + Tcl_Flush, /* 146 */ + Tcl_FreeResult, /* 147 */ + Tcl_GetAlias, /* 148 */ + Tcl_GetAliasObj, /* 149 */ + Tcl_GetAssocData, /* 150 */ + Tcl_GetChannel, /* 151 */ + Tcl_GetChannelBufferSize, /* 152 */ + Tcl_GetChannelHandle, /* 153 */ + Tcl_GetChannelInstanceData, /* 154 */ + Tcl_GetChannelMode, /* 155 */ + Tcl_GetChannelName, /* 156 */ + Tcl_GetChannelOption, /* 157 */ + Tcl_GetChannelType, /* 158 */ + Tcl_GetCommandInfo, /* 159 */ + Tcl_GetCommandName, /* 160 */ + Tcl_GetErrno, /* 161 */ + Tcl_GetHostName, /* 162 */ + Tcl_GetInterpPath, /* 163 */ + Tcl_GetMaster, /* 164 */ + Tcl_GetNameOfExecutable, /* 165 */ + Tcl_GetObjResult, /* 166 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_GetOpenFile, /* 167 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 167 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 167 */ +#endif /* MAC_TCL */ + Tcl_GetPathType, /* 168 */ + Tcl_Gets, /* 169 */ + Tcl_GetsObj, /* 170 */ + Tcl_GetServiceMode, /* 171 */ + Tcl_GetSlave, /* 172 */ + Tcl_GetStdChannel, /* 173 */ + Tcl_GetStringResult, /* 174 */ + Tcl_GetVar, /* 175 */ + Tcl_GetVar2, /* 176 */ + Tcl_GlobalEval, /* 177 */ + Tcl_GlobalEvalObj, /* 178 */ + Tcl_HideCommand, /* 179 */ + Tcl_Init, /* 180 */ + Tcl_InitHashTable, /* 181 */ + Tcl_InputBlocked, /* 182 */ + Tcl_InputBuffered, /* 183 */ + Tcl_InterpDeleted, /* 184 */ + Tcl_IsSafe, /* 185 */ + Tcl_JoinPath, /* 186 */ + Tcl_LinkVar, /* 187 */ + NULL, /* 188 */ + Tcl_MakeFileChannel, /* 189 */ + Tcl_MakeSafe, /* 190 */ + Tcl_MakeTcpClientChannel, /* 191 */ + Tcl_Merge, /* 192 */ + Tcl_NextHashEntry, /* 193 */ + Tcl_NotifyChannel, /* 194 */ + Tcl_ObjGetVar2, /* 195 */ + Tcl_ObjSetVar2, /* 196 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_OpenCommandChannel, /* 197 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_OpenCommandChannel, /* 197 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 197 */ +#endif /* MAC_TCL */ + Tcl_OpenFileChannel, /* 198 */ + Tcl_OpenTcpClient, /* 199 */ + Tcl_OpenTcpServer, /* 200 */ + Tcl_Preserve, /* 201 */ + Tcl_PrintDouble, /* 202 */ + Tcl_PutEnv, /* 203 */ + Tcl_PosixError, /* 204 */ + Tcl_QueueEvent, /* 205 */ + Tcl_Read, /* 206 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_ReapDetachedProcs, /* 207 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_ReapDetachedProcs, /* 207 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 207 */ +#endif /* MAC_TCL */ + Tcl_RecordAndEval, /* 208 */ + Tcl_RecordAndEvalObj, /* 209 */ + Tcl_RegisterChannel, /* 210 */ + Tcl_RegisterObjType, /* 211 */ + Tcl_RegExpCompile, /* 212 */ + Tcl_RegExpExec, /* 213 */ + Tcl_RegExpMatch, /* 214 */ + Tcl_RegExpRange, /* 215 */ + Tcl_Release, /* 216 */ + Tcl_ResetResult, /* 217 */ + Tcl_ScanElement, /* 218 */ + Tcl_ScanCountedElement, /* 219 */ + Tcl_SeekOld, /* 220 */ + Tcl_ServiceAll, /* 221 */ + Tcl_ServiceEvent, /* 222 */ + Tcl_SetAssocData, /* 223 */ + Tcl_SetChannelBufferSize, /* 224 */ + Tcl_SetChannelOption, /* 225 */ + Tcl_SetCommandInfo, /* 226 */ + Tcl_SetErrno, /* 227 */ + Tcl_SetErrorCode, /* 228 */ + Tcl_SetMaxBlockTime, /* 229 */ + Tcl_SetPanicProc, /* 230 */ + Tcl_SetRecursionLimit, /* 231 */ + Tcl_SetResult, /* 232 */ + Tcl_SetServiceMode, /* 233 */ + Tcl_SetObjErrorCode, /* 234 */ + Tcl_SetObjResult, /* 235 */ + Tcl_SetStdChannel, /* 236 */ + Tcl_SetVar, /* 237 */ + Tcl_SetVar2, /* 238 */ + Tcl_SignalId, /* 239 */ + Tcl_SignalMsg, /* 240 */ + Tcl_SourceRCFile, /* 241 */ + Tcl_SplitList, /* 242 */ + Tcl_SplitPath, /* 243 */ + Tcl_StaticPackage, /* 244 */ + Tcl_StringMatch, /* 245 */ + Tcl_TellOld, /* 246 */ + Tcl_TraceVar, /* 247 */ + Tcl_TraceVar2, /* 248 */ + Tcl_TranslateFileName, /* 249 */ + Tcl_Ungets, /* 250 */ + Tcl_UnlinkVar, /* 251 */ + Tcl_UnregisterChannel, /* 252 */ + Tcl_UnsetVar, /* 253 */ + Tcl_UnsetVar2, /* 254 */ + Tcl_UntraceVar, /* 255 */ + Tcl_UntraceVar2, /* 256 */ + Tcl_UpdateLinkedVar, /* 257 */ + Tcl_UpVar, /* 258 */ + Tcl_UpVar2, /* 259 */ + Tcl_VarEval, /* 260 */ + Tcl_VarTraceInfo, /* 261 */ + Tcl_VarTraceInfo2, /* 262 */ + Tcl_Write, /* 263 */ + Tcl_WrongNumArgs, /* 264 */ + Tcl_DumpActiveMemory, /* 265 */ + Tcl_ValidateAllMemory, /* 266 */ + Tcl_AppendResultVA, /* 267 */ + Tcl_AppendStringsToObjVA, /* 268 */ + Tcl_HashStats, /* 269 */ + Tcl_ParseVar, /* 270 */ + Tcl_PkgPresent, /* 271 */ + Tcl_PkgPresentEx, /* 272 */ + Tcl_PkgProvide, /* 273 */ + Tcl_PkgRequire, /* 274 */ + Tcl_SetErrorCodeVA, /* 275 */ + Tcl_VarEvalVA, /* 276 */ + Tcl_WaitPid, /* 277 */ + Tcl_PanicVA, /* 278 */ + Tcl_GetVersion, /* 279 */ + Tcl_InitMemory, /* 280 */ + Tcl_StackChannel, /* 281 */ + Tcl_UnstackChannel, /* 282 */ + Tcl_GetStackedChannel, /* 283 */ + Tcl_SetMainLoop, /* 284 */ + NULL, /* 285 */ + Tcl_AppendObjToObj, /* 286 */ + Tcl_CreateEncoding, /* 287 */ + Tcl_CreateThreadExitHandler, /* 288 */ + Tcl_DeleteThreadExitHandler, /* 289 */ + Tcl_DiscardResult, /* 290 */ + Tcl_EvalEx, /* 291 */ + Tcl_EvalObjv, /* 292 */ + Tcl_EvalObjEx, /* 293 */ + Tcl_ExitThread, /* 294 */ + Tcl_ExternalToUtf, /* 295 */ + Tcl_ExternalToUtfDString, /* 296 */ + Tcl_FinalizeThread, /* 297 */ + Tcl_FinalizeNotifier, /* 298 */ + Tcl_FreeEncoding, /* 299 */ + Tcl_GetCurrentThread, /* 300 */ + Tcl_GetEncoding, /* 301 */ + Tcl_GetEncodingName, /* 302 */ + Tcl_GetEncodingNames, /* 303 */ + Tcl_GetIndexFromObjStruct, /* 304 */ + Tcl_GetThreadData, /* 305 */ + Tcl_GetVar2Ex, /* 306 */ + Tcl_InitNotifier, /* 307 */ + Tcl_MutexLock, /* 308 */ + Tcl_MutexUnlock, /* 309 */ + Tcl_ConditionNotify, /* 310 */ + Tcl_ConditionWait, /* 311 */ + Tcl_NumUtfChars, /* 312 */ + Tcl_ReadChars, /* 313 */ + Tcl_RestoreResult, /* 314 */ + Tcl_SaveResult, /* 315 */ + Tcl_SetSystemEncoding, /* 316 */ + Tcl_SetVar2Ex, /* 317 */ + Tcl_ThreadAlert, /* 318 */ + Tcl_ThreadQueueEvent, /* 319 */ + Tcl_UniCharAtIndex, /* 320 */ + Tcl_UniCharToLower, /* 321 */ + Tcl_UniCharToTitle, /* 322 */ + Tcl_UniCharToUpper, /* 323 */ + Tcl_UniCharToUtf, /* 324 */ + Tcl_UtfAtIndex, /* 325 */ + Tcl_UtfCharComplete, /* 326 */ + Tcl_UtfBackslash, /* 327 */ + Tcl_UtfFindFirst, /* 328 */ + Tcl_UtfFindLast, /* 329 */ + Tcl_UtfNext, /* 330 */ + Tcl_UtfPrev, /* 331 */ + Tcl_UtfToExternal, /* 332 */ + Tcl_UtfToExternalDString, /* 333 */ + Tcl_UtfToLower, /* 334 */ + Tcl_UtfToTitle, /* 335 */ + Tcl_UtfToUniChar, /* 336 */ + Tcl_UtfToUpper, /* 337 */ + Tcl_WriteChars, /* 338 */ + Tcl_WriteObj, /* 339 */ + Tcl_GetString, /* 340 */ + Tcl_GetDefaultEncodingDir, /* 341 */ + Tcl_SetDefaultEncodingDir, /* 342 */ + Tcl_AlertNotifier, /* 343 */ + Tcl_ServiceModeHook, /* 344 */ + Tcl_UniCharIsAlnum, /* 345 */ + Tcl_UniCharIsAlpha, /* 346 */ + Tcl_UniCharIsDigit, /* 347 */ + Tcl_UniCharIsLower, /* 348 */ + Tcl_UniCharIsSpace, /* 349 */ + Tcl_UniCharIsUpper, /* 350 */ + Tcl_UniCharIsWordChar, /* 351 */ + Tcl_UniCharLen, /* 352 */ + Tcl_UniCharNcmp, /* 353 */ + Tcl_UniCharToUtfDString, /* 354 */ + Tcl_UtfToUniCharDString, /* 355 */ + Tcl_GetRegExpFromObj, /* 356 */ + Tcl_EvalTokens, /* 357 */ + Tcl_FreeParse, /* 358 */ + Tcl_LogCommandInfo, /* 359 */ + Tcl_ParseBraces, /* 360 */ + Tcl_ParseCommand, /* 361 */ + Tcl_ParseExpr, /* 362 */ + Tcl_ParseQuotedString, /* 363 */ + Tcl_ParseVarName, /* 364 */ + Tcl_GetCwd, /* 365 */ + Tcl_Chdir, /* 366 */ + Tcl_Access, /* 367 */ + Tcl_Stat, /* 368 */ + Tcl_UtfNcmp, /* 369 */ + Tcl_UtfNcasecmp, /* 370 */ + Tcl_StringCaseMatch, /* 371 */ + Tcl_UniCharIsControl, /* 372 */ + Tcl_UniCharIsGraph, /* 373 */ + Tcl_UniCharIsPrint, /* 374 */ + Tcl_UniCharIsPunct, /* 375 */ + Tcl_RegExpExecObj, /* 376 */ + Tcl_RegExpGetInfo, /* 377 */ + Tcl_NewUnicodeObj, /* 378 */ + Tcl_SetUnicodeObj, /* 379 */ + Tcl_GetCharLength, /* 380 */ + Tcl_GetUniChar, /* 381 */ + Tcl_GetUnicode, /* 382 */ + Tcl_GetRange, /* 383 */ + Tcl_AppendUnicodeToObj, /* 384 */ + Tcl_RegExpMatchObj, /* 385 */ + Tcl_SetNotifier, /* 386 */ + Tcl_GetAllocMutex, /* 387 */ + Tcl_GetChannelNames, /* 388 */ + Tcl_GetChannelNamesEx, /* 389 */ + Tcl_ProcObjCmd, /* 390 */ + Tcl_ConditionFinalize, /* 391 */ + Tcl_MutexFinalize, /* 392 */ + Tcl_CreateThread, /* 393 */ + Tcl_ReadRaw, /* 394 */ + Tcl_WriteRaw, /* 395 */ + Tcl_GetTopChannel, /* 396 */ + Tcl_ChannelBuffered, /* 397 */ + Tcl_ChannelName, /* 398 */ + Tcl_ChannelVersion, /* 399 */ + Tcl_ChannelBlockModeProc, /* 400 */ + Tcl_ChannelCloseProc, /* 401 */ + Tcl_ChannelClose2Proc, /* 402 */ + Tcl_ChannelInputProc, /* 403 */ + Tcl_ChannelOutputProc, /* 404 */ + Tcl_ChannelSeekProc, /* 405 */ + Tcl_ChannelSetOptionProc, /* 406 */ + Tcl_ChannelGetOptionProc, /* 407 */ + Tcl_ChannelWatchProc, /* 408 */ + Tcl_ChannelGetHandleProc, /* 409 */ + Tcl_ChannelFlushProc, /* 410 */ + Tcl_ChannelHandlerProc, /* 411 */ + Tcl_JoinThread, /* 412 */ + Tcl_IsChannelShared, /* 413 */ + Tcl_IsChannelRegistered, /* 414 */ + Tcl_CutChannel, /* 415 */ + Tcl_SpliceChannel, /* 416 */ + Tcl_ClearChannelHandlers, /* 417 */ + Tcl_IsChannelExisting, /* 418 */ + Tcl_UniCharNcasecmp, /* 419 */ + Tcl_UniCharCaseMatch, /* 420 */ + Tcl_FindHashEntry, /* 421 */ + Tcl_CreateHashEntry, /* 422 */ + Tcl_InitCustomHashTable, /* 423 */ + Tcl_InitObjHashTable, /* 424 */ + Tcl_CommandTraceInfo, /* 425 */ + Tcl_TraceCommand, /* 426 */ + Tcl_UntraceCommand, /* 427 */ + Tcl_AttemptAlloc, /* 428 */ + Tcl_AttemptDbCkalloc, /* 429 */ + Tcl_AttemptRealloc, /* 430 */ + Tcl_AttemptDbCkrealloc, /* 431 */ + Tcl_AttemptSetObjLength, /* 432 */ + Tcl_GetChannelThread, /* 433 */ + Tcl_GetUnicodeFromObj, /* 434 */ + Tcl_GetMathFuncInfo, /* 435 */ + Tcl_ListMathFuncs, /* 436 */ + Tcl_SubstObj, /* 437 */ + Tcl_DetachChannel, /* 438 */ + Tcl_IsStandardChannel, /* 439 */ + Tcl_FSCopyFile, /* 440 */ + Tcl_FSCopyDirectory, /* 441 */ + Tcl_FSCreateDirectory, /* 442 */ + Tcl_FSDeleteFile, /* 443 */ + Tcl_FSLoadFile, /* 444 */ + Tcl_FSMatchInDirectory, /* 445 */ + Tcl_FSLink, /* 446 */ + Tcl_FSRemoveDirectory, /* 447 */ + Tcl_FSRenameFile, /* 448 */ + Tcl_FSLstat, /* 449 */ + Tcl_FSUtime, /* 450 */ + Tcl_FSFileAttrsGet, /* 451 */ + Tcl_FSFileAttrsSet, /* 452 */ + Tcl_FSFileAttrStrings, /* 453 */ + Tcl_FSStat, /* 454 */ + Tcl_FSAccess, /* 455 */ + Tcl_FSOpenFileChannel, /* 456 */ + Tcl_FSGetCwd, /* 457 */ + Tcl_FSChdir, /* 458 */ + Tcl_FSConvertToPathType, /* 459 */ + Tcl_FSJoinPath, /* 460 */ + Tcl_FSSplitPath, /* 461 */ + Tcl_FSEqualPaths, /* 462 */ + Tcl_FSGetNormalizedPath, /* 463 */ + Tcl_FSJoinToPath, /* 464 */ + Tcl_FSGetInternalRep, /* 465 */ + Tcl_FSGetTranslatedPath, /* 466 */ + Tcl_FSEvalFile, /* 467 */ + Tcl_FSNewNativePath, /* 468 */ + Tcl_FSGetNativePath, /* 469 */ + Tcl_FSFileSystemInfo, /* 470 */ + Tcl_FSPathSeparator, /* 471 */ + Tcl_FSListVolumes, /* 472 */ + Tcl_FSRegister, /* 473 */ + Tcl_FSUnregister, /* 474 */ + Tcl_FSData, /* 475 */ + Tcl_FSGetTranslatedStringPath, /* 476 */ + Tcl_FSGetFileSystemForPath, /* 477 */ + Tcl_FSGetPathType, /* 478 */ + Tcl_OutputBuffered, /* 479 */ + Tcl_FSMountsChanged, /* 480 */ + Tcl_EvalTokensStandard, /* 481 */ + Tcl_GetTime, /* 482 */ + Tcl_CreateObjTrace, /* 483 */ + Tcl_GetCommandInfoFromToken, /* 484 */ + Tcl_SetCommandInfoFromToken, /* 485 */ + Tcl_DbNewWideIntObj, /* 486 */ + Tcl_GetWideIntFromObj, /* 487 */ + Tcl_NewWideIntObj, /* 488 */ + Tcl_SetWideIntObj, /* 489 */ + Tcl_AllocStatBuf, /* 490 */ + Tcl_Seek, /* 491 */ + Tcl_Tell, /* 492 */ + Tcl_ChannelWideSeekProc, /* 493 */ +}; + +/* !END!: Do not edit above this line. */ -- cgit v0.12 From 9952f1458ffdf3f22b1013dab019fb273dff357f Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 18 May 2004 21:52:56 +0000 Subject: * compat/strftime.c (_fmt, ISO8601Week): * doc/clock.n: * tests/clock.test: Major rework to the handling of ISO8601 week numbers. Now passes all the %G and %V test cases on Windows, Linux and Solaris [Bugs #500285, #500389, and #852944] --- ChangeLog | 8 +++ compat/strftime.c | 98 +++++++++++++++++++++++++++-------- doc/clock.n | 8 ++- tests/clock.test | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 241 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3179038..f34990d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-05-18 Kevin B. Kenny + + * compat/strftime.c (_fmt, ISO8601Week): + * doc/clock.n: + * tests/clock.test: Major rework to the handling of ISO8601 + week numbers. Now passes all the %G and %V test cases on + Windows, Linux and Solaris [Bugs #500285, #500389, and #852944] + 2004-05-17 Kevin B. Kenny * generic/tclInt.decls: Restored TclpTime_t kludge to all diff --git a/compat/strftime.c b/compat/strftime.c index 027e373..dbd7d54 100644 --- a/compat/strftime.c +++ b/compat/strftime.c @@ -10,7 +10,7 @@ * * Changes 2002 Copyright (c) 2002 ActiveState Corporation. * - * RCS: @(#) $Id: strftime.c,v 1.10 2002/05/29 00:19:39 hobbs Exp $ + * RCS: @(#) $Id: strftime.c,v 1.10.2.1 2004/05/18 21:52:56 kennykb Exp $ */ /* @@ -47,7 +47,7 @@ */ #if defined(LIBC_SCCS) -static char *rcsid = "$Id: strftime.c,v 1.10 2002/05/29 00:19:39 hobbs Exp $"; +static char *rcsid = "$Id: strftime.c,v 1.10.2.1 2004/05/18 21:52:56 kennykb Exp $"; #endif /* LIBC_SCCS */ #include @@ -113,6 +113,7 @@ static int _conv _ANSI_ARGS_((int n, int digits, int pad)); static int _secs _ANSI_ARGS_((const struct tm *t)); static size_t _fmt _ANSI_ARGS_((const char *format, const struct tm *t)); +static int ISO8601Week _ANSI_ARGS_((CONST struct tm* t, int *year )); size_t TclpStrftime(s, maxsize, format, t, useGMT) @@ -229,6 +230,24 @@ _fmt(format, t) if (!_conv(t->tm_mday, 2, ' ')) return(0); continue; + case 'g': + { + int year; + ISO8601Week( t, &year ); + if ( !_conv( year%100, 2, '0' ) ) { + return( 0 ); + } + continue; + } + case 'G': + { + int year; + ISO8601Week( t, &year ); + if ( !_conv( year, 4, '0' ) ) { + return( 0 ); + } + continue; + } case 'H': if (!_conv(t->tm_hour, 2, '0')) return(0); @@ -301,25 +320,7 @@ _fmt(format, t) continue; case 'V': { - /* ISO 8601 Week Of Year: - If the week (Monday - Sunday) containing - January 1 has four or more days in the new - year, then it is week 1; otherwise it is - week 53 of the previous year and the next - week is week one. */ - - int week = MON_WEEK(t); - - int days = (((t)->tm_yday + 7 - \ - ((t)->tm_wday ? (t)->tm_wday - 1 : 6)) % 7); - - - if (days >= 4) { - week++; - } else if (week == 0) { - week = 53; - } - + int week = ISO8601Week( t, NULL ); if (!_conv(week, 2, '0')) return(0); continue; @@ -449,3 +450,58 @@ _add(str) return(1); } } + +static int +ISO8601Week( t, year ) + CONST struct tm* t; + int* year; +{ + /* Find the day-of-year of the Thursday in + * the week in question. */ + + int ydayThursday; + int week; + if ( t->tm_wday == 0 ) { + ydayThursday = t->tm_yday - 3; + } else { + ydayThursday = t->tm_yday - t->tm_wday + 4; + } + + if ( ydayThursday < 0 ) { + + /* This is the last week of the previous year. */ + if ( IsLeapYear(( t->tm_year + TM_YEAR_BASE - 1 )) ) { + ydayThursday += 366; + } else { + ydayThursday += 365; + } + week = ydayThursday / 7 + 1; + if ( year != NULL ) { + *year = t->tm_year + 1899; + } + + } else if ( ( IsLeapYear(( t -> tm_year + TM_YEAR_BASE )) + && ydayThursday >= 366 ) + || ( !IsLeapYear(( t -> tm_year + + TM_YEAR_BASE )) + && ydayThursday >= 365 ) ) { + + /* This is week 1 of the following year */ + + week = 1; + if ( year != NULL ) { + *year = t->tm_year + 1901; + } + + } else { + + week = ydayThursday / 7 + 1; + if ( year != NULL ) { + *year = t->tm_year + 1900; + } + + } + + return week; + +} diff --git a/doc/clock.n b/doc/clock.n index de2baa2..41a1cef 100644 --- a/doc/clock.n +++ b/doc/clock.n @@ -10,7 +10,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: clock.n,v 1.11.2.1 2004/02/06 16:47:53 dgp Exp $ +'\" RCS: @(#) $Id: clock.n,v 1.11.2.2 2004/05/18 21:52:56 kennykb Exp $ '\" .so man.macros .TH clock n 8.4 Tcl "Tcl Built-In Commands" @@ -79,6 +79,12 @@ Day of month (01 - 31). Date as %m/%d/%y. .IP \fB%e\fR Day of month (1 - 31), no leading zeros. +.IP \fB%g\fR +The ISO8601 year number corresponding to the ISO8601 week (%V), expressed +as a two-digit year-of-the-century, with leading zero if necessary. +.IP \fB%G\fR +The ISO8601 year number corresponding to the ISO8601 week (%V), expressed +as a four-digit number. .IP \fB%h\fR Abbreviated month name. .VE 8.4 diff --git a/tests/clock.test b/tests/clock.test index 72c254e..8d69b72 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.22.2.2 2004/05/14 21:41:11 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.22.2.3 2004/05/18 21:52:57 kennykb Exp $ set env(LC_TIME) POSIX @@ -482,6 +482,154 @@ test clock-9.1 {%s gmt testing} {needPST} { set c [expr {$b-$a}] } {28800} +test clock-10.1 {ISO week-based calendar 2000-W52-1} { + clock format 977702400 -format {%a %A %g %G %u %V %w} -gmt true; # 2000-12-25 +} {Mon Monday 00 2000 1 52 1} +test clock-10.2 {ISO week-based calendar 2000-W52-7} { + clock format 978220800 -format {%a %A %g %G %u %V %w} -gmt true; # 2000-12-31 +} {Sun Sunday 00 2000 7 52 0} +test clock-10.3 {ISO week-based calendar 2001-W01-1} { + clock format 978307200 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-1-1 +} {Mon Monday 01 2001 1 01 1} +test clock-10.4 {ISO week-based calendar 2001-W01-7} { + clock format 978825600 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-1-7 +} {Sun Sunday 01 2001 7 01 0} +test clock-10.5 {ISO week-based calendar 2001-W02-1} { + clock format 978912000 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-1-8 +} {Mon Monday 01 2001 1 02 1} +test clock-10.6 {ISO week-based calendar 2001-W52-1} { + clock format 1009152000 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-12-24 +} {Mon Monday 01 2001 1 52 1} +test clock-10.7 {ISO week-based calendar 2001-W52-7} { + clock format 1009670400 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-12-30 +} {Sun Sunday 01 2001 7 52 0} +test clock-10.8 {ISO week-based calendar 2002-W01-1} { + clock format 1009756800 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-12-31 +} {Mon Monday 02 2002 1 01 1} +test clock-10.9 {ISO week-based calendar 2002-W01-2} { + clock format 1009843200 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-1-1 +} {Tue Tuesday 02 2002 2 01 2} +test clock-10.10 {ISO week-based calendar 2002-W01-7} { + clock format 1010275200 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-1-6 +} {Sun Sunday 02 2002 7 01 0} +test clock-10.11 {ISO week-based calendar 2002-W02-1} { + clock format 1010361600 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-1-7 +} {Mon Monday 02 2002 1 02 1} +test clock-10.12 {ISO week-based calendar 2002-W52-1} { + clock format 1040601600 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-23 +} {Mon Monday 02 2002 1 52 1} +test clock-10.13 {ISO week-based calendar 2002-W52-7} { + clock format 1041120000 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-29 +} {Sun Sunday 02 2002 7 52 0} +test clock-10.14 {ISO week-based calendar 2003-W01-1} { + clock format 1041206400 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-30 +} {Mon Monday 03 2003 1 01 1} +test clock-10.15 {ISO week-based calendar 2003-W01-2} { + clock format 1041292800 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-31 +} {Tue Tuesday 03 2003 2 01 2} +test clock-10.16 {ISO week-based calendar 2003-W01-3} { + clock format 1041379200 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-1-1 +} {Wed Wednesday 03 2003 3 01 3} +test clock-10.17 {ISO week-based calendar 2003-W01-7} { + clock format 1041724800 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-1-5 +} {Sun Sunday 03 2003 7 01 0} +test clock-10.18 {ISO week-based calendar 2003-W02-1} { + clock format 1041811200 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-1-6 +} {Mon Monday 03 2003 1 02 1} +test clock-10.19 {ISO week-based calendar 2003-W52-1} { + clock format 1072051200 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-22 +} {Mon Monday 03 2003 1 52 1} +test clock-10.20 {ISO week-based calendar 2003-W52-7} { + clock format 1072569600 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-28 +} {Sun Sunday 03 2003 7 52 0} +test clock-10.21 {ISO week-based calendar 2004-W01-1} { + clock format 1072656000 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-29 +} {Mon Monday 04 2004 1 01 1} +test clock-10.22 {ISO week-based calendar 2004-W01-3} { + clock format 1072828800 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-31 +} {Wed Wednesday 04 2004 3 01 3} +test clock-10.23 {ISO week-based calendar 2004-W01-4} { + clock format 1072915200 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-1-1 +} {Thu Thursday 04 2004 4 01 4} +test clock-10.24 {ISO week-based calendar 2004-W01-7} { + clock format 1073174400 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-1-4 +} {Sun Sunday 04 2004 7 01 0} +test clock-10.25 {ISO week-based calendar 2004-W02-1} { + clock format 1073260800 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-1-5 +} {Mon Monday 04 2004 1 02 1} +test clock-10.26 {ISO week-based calendar 2004-W52-1} { + clock format 1103500800 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-20 +} {Mon Monday 04 2004 1 52 1} +test clock-10.27 {ISO week-based calendar 2004-W52-7} { + clock format 1104019200 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-26 +} {Sun Sunday 04 2004 7 52 0} +test clock-10.28 {ISO week-based calendar 2004-W53-1} { + clock format 1104105600 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-27 +} {Mon Monday 04 2004 1 53 1} +test clock-10.29 {ISO week-based calendar 2004-W53-5} { + clock format 1104451200 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-31 +} {Fri Friday 04 2004 5 53 5} +test clock-10.30 {ISO week-based calendar 2004-W53-6} { + clock format 1104537600 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-1 +} {Sat Saturday 04 2004 6 53 6} +test clock-10.31 {ISO week-based calendar 2004-W53-7} { + clock format 1104624000 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-2 +} {Sun Sunday 04 2004 7 53 0} +test clock-10.32 {ISO week-based calendar 2005-W01-1} { + clock format 1104710400 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-3 +} {Mon Monday 05 2005 1 01 1} +test clock-10.33 {ISO week-based calendar 2005-W01-7} { + clock format 1105228800 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-9 +} {Sun Sunday 05 2005 7 01 0} +test clock-10.34 {ISO week-based calendar 2005-W02-1} { + clock format 1105315200 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-10 +} {Mon Monday 05 2005 1 02 1} +test clock-10.35 {ISO week-based calendar 2005-W52-1} { + clock format 1135555200 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-12-26 +} {Mon Monday 05 2005 1 52 1} +test clock-10.36 {ISO week-based calendar 2005-W52-6} { + clock format 1135987200 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-12-31 +} {Sat Saturday 05 2005 6 52 6} +test clock-10.37 {ISO week-based calendar 2005-W52-7} { + clock format 1136073600 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-1 +} {Sun Sunday 05 2005 7 52 0} +test clock-10.38 {ISO week-based calendar 2006-W01-1} { + clock format 1136160000 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-2 +} {Mon Monday 06 2006 1 01 1} +test clock-10.39 {ISO week-based calendar 2006-W01-7} { + clock format 1136678400 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-8 +} {Sun Sunday 06 2006 7 01 0} +test clock-10.40 {ISO week-based calendar 2006-W02-1} { + clock format 1136764800 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-9 +} {Mon Monday 06 2006 1 02 1} +test clock-10.41 {ISO week-based calendar 2009-W52-1} { + clock format 1261353600 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-21 +} {Mon Monday 09 2009 1 52 1} +test clock-10.42 {ISO week-based calendar 2009-W52-7} { + clock format 1261872000 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-27 +} {Sun Sunday 09 2009 7 52 0} +test clock-10.43 {ISO week-based calendar 2009-W53-1} { + clock format 1261958400 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-28 +} {Mon Monday 09 2009 1 53 1} +test clock-10.44 {ISO week-based calendar 2009-W53-4} { + clock format 1262217600 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-31 +} {Thu Thursday 09 2009 4 53 4} +test clock-10.45 {ISO week-based calendar 2009-W53-5} { + clock format 1262304000 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-1 +} {Fri Friday 09 2009 5 53 5} +test clock-10.46 {ISO week-based calendar 2009-W53-7} { + clock format 1262476800 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-3 +} {Sun Sunday 09 2009 7 53 0} +test clock-10.47 {ISO week-based calendar 2010-W01-1} { + clock format 1262563200 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-4 +} {Mon Monday 10 2010 1 01 1} +test clock-10.48 {ISO week-based calendar 2010-W01-7} { + clock format 1263081600 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-10 +} {Sun Sunday 10 2010 7 01 0} +test clock-10.49 {ISO week-based calendar 2010-W02-1} { + clock format 1263168000 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-11 +} {Mon Monday 10 2010 1 02 1} + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From c25b1816386cd466c534841bba77bae6e9aad5ab Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 19 May 2004 19:16:18 +0000 Subject: * tclIO.c: Fixed [SF Tcl Bug 943274]. This is the same problem as * tclIO.h: [SF Tcl Bug 462317], see ChangeLog entry 2001-09-26. The fix done at that time is incomplete. It is possible to get around it if the actual read operation is defered and not executed in the event handler itself. Instead of tracking if we are in an read caused by a synthesized fileevent we now track if the OS has delivered a true event = actual data and bypass the driver if a read finds that there is no actual data waiting. The flag is cleared by a short or full read. --- ChangeLog | 14 +++++++++ generic/tclIO.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- generic/tclIO.h | 18 ++++++++++- 3 files changed, 122 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index f34990d..74ae073 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2004-05-19 Andreas Kupries + + * tclIO.c: Fixed [SF Tcl Bug 943274]. This is the same problem as + * tclIO.h: [SF Tcl Bug 462317], see ChangeLog entry + 2001-09-26. The fix done at that time is incomplete. It + is possible to get around it if the actual read + operation is defered and not executed in the event + handler itself. Instead of tracking if we are in an + read caused by a synthesized fileevent we now track if + the OS has delivered a true event = actual data and + bypass the driver if a read finds that there is no + actual data waiting. The flag is cleared by a short or + full read. + 2004-05-18 Kevin B. Kenny * compat/strftime.c (_fmt, ISO8601Week): diff --git a/generic/tclIO.c b/generic/tclIO.c index 2e10b99..a689ca9 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.4 2004/04/23 23:40:58 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.5 2004/05/19 19:16:21 andreas_kupries Exp $ */ #include "tclInt.h" @@ -4225,8 +4225,18 @@ Tcl_ReadRaw(chan, bufPtr, bytesToRead) statePtr->flags &= (~(CHANNEL_BLOCKED)); } - if ((statePtr->flags & CHANNEL_TIMER_FEV) && - (statePtr->flags & CHANNEL_NONBLOCKING)) { + /* [SF Tcl Bug 943274]. Better emulation of non-blocking + * channels for channels without BlockModeProc, by keeping + * track of true fileevents generated by the OS == Data + * waiting and reading if and only if we are sure to have + * data. + */ + + if ((statePtr->flags & CHANNEL_NONBLOCKING) && + (Tcl_ChannelBlockModeProc(chanPtr->typePtr) == NULL) && + !(statePtr->flags & CHANNEL_HAS_MORE_DATA)) { + + /* We bypass the driver, it would block, as no data is available */ nread = -1; result = EWOULDBLOCK; } else { @@ -4254,6 +4264,12 @@ Tcl_ReadRaw(chan, bufPtr, bytesToRead) if (nread < (bytesToRead - copied)) { statePtr->flags |= CHANNEL_BLOCKED; } + + if (nread <= (bytesToRead - copied)) { + /* [SF Tcl Bug 943274] We have read the available + * data, clear flag */ + statePtr->flags &= ~CHANNEL_HAS_MORE_DATA; + } } else if (nread == 0) { statePtr->flags |= CHANNEL_EOF; statePtr->inputEncodingFlags |= TCL_ENCODING_END; @@ -4378,7 +4394,7 @@ DoReadChars(chanPtr, objPtr, toRead, appendFlag) int offset, factor, copied, copiedNow, result; Tcl_Encoding encoding; #define UTF_EXPANSION_FACTOR 1024 - + /* * This operation should occur at the top of a channel stack. */ @@ -5294,11 +5310,22 @@ GetInput(chanPtr) return 0; } - if ((statePtr->flags & CHANNEL_TIMER_FEV) && - (statePtr->flags & CHANNEL_NONBLOCKING)) { + /* [SF Tcl Bug 943274]. Better emulation of non-blocking channels + * for channels without BlockModeProc, by keeping track of true + * fileevents generated by the OS == Data waiting and reading if + * and only if we are sure to have data. + */ + + if ((statePtr->flags & CHANNEL_NONBLOCKING) && + (Tcl_ChannelBlockModeProc(chanPtr->typePtr) == NULL) && + !(statePtr->flags & CHANNEL_HAS_MORE_DATA)) { + + /* Bypass the driver, it would block, as no data is available */ nread = -1; result = EWOULDBLOCK; } else { + statePtr->flags &= ~CHANNEL_HAS_MORE_DATA; + nread = (chanPtr->typePtr->inputProc)(chanPtr->instanceData, bufPtr->buf + bufPtr->nextAdded, toRead, &result); } @@ -5316,6 +5343,13 @@ GetInput(chanPtr) if (nread < toRead) { statePtr->flags |= CHANNEL_BLOCKED; } + + if (nread <= toRead) { + /* [SF Tcl Bug 943274] We have read the available data, + * clear flag */ + statePtr->flags &= ~CHANNEL_HAS_MORE_DATA; + } + } else if (nread == 0) { statePtr->flags |= CHANNEL_EOF; statePtr->inputEncodingFlags |= TCL_ENCODING_END; @@ -6708,6 +6742,20 @@ Tcl_NotifyChannel(channel, mask) Channel* upChanPtr; Tcl_ChannelType* upTypePtr; + /* [SF Tcl Bug 943274] + * For a non-blocking channel without blockmodeproc we keep track + * of actual input coming from the OS so that we can do a credible + * imitation of non-blocking behaviour. + */ + + if ((mask & TCL_READABLE) && + (statePtr->flags & CHANNEL_NONBLOCKING) && + (Tcl_ChannelBlockModeProc(chanPtr->typePtr) == NULL) && + !(statePtr->flags & CHANNEL_TIMER_FEV)) { + + statePtr->flags |= CHANNEL_HAS_MORE_DATA; + } + /* * In contrast to the other API functions this procedure walks towards * the top of a stack and not down from it. @@ -9164,3 +9212,40 @@ Tcl_ChannelWideSeekProc(chanTypePtr) return NULL; } } + +#if 0 +/* For future debugging work, a simple function to print the flags of + * a channel in semi-readable form. + */ + +static int +DumpFlags (str, flags) + char* str; + int flags; +{ + char buf [20]; + int i = 0; + + if (flags & TCL_READABLE) {buf[i] = 'r';} else {buf [i]='_';}; i++; + if (flags & TCL_WRITABLE) {buf[i] = 'w';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_NONBLOCKING) {buf[i] = 'n';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_LINEBUFFERED) {buf[i] = 'l';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_UNBUFFERED) {buf[i] = 'u';} else {buf [i]='_';}; i++; + if (flags & BUFFER_READY) {buf[i] = 'R';} else {buf [i]='_';}; i++; + if (flags & BG_FLUSH_SCHEDULED) {buf[i] = 'F';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_CLOSED) {buf[i] = 'c';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_EOF) {buf[i] = 'E';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_STICKY_EOF) {buf[i] = 'S';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_BLOCKED) {buf[i] = 'B';} else {buf [i]='_';}; i++; + if (flags & INPUT_SAW_CR) {buf[i] = '/';} else {buf [i]='_';}; i++; + if (flags & INPUT_NEED_NL) {buf[i] = '*';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_DEAD) {buf[i] = 'D';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_RAW_MODE) {buf[i] = 'R';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_TIMER_FEV) {buf[i] = 'T';} else {buf [i]='_';}; i++; + if (flags & CHANNEL_HAS_MORE_DATA) {buf[i] = 'H';} else {buf [i]='_';}; i++; + buf [i] ='\0'; + + fprintf (stderr,"%s: %s\n", str, buf); fflush(stderr); + return 0; +} +#endif diff --git a/generic/tclIO.h b/generic/tclIO.h index 9a9c826..7f2c421 100644 --- a/generic/tclIO.h +++ b/generic/tclIO.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.h,v 1.5 2002/01/15 17:55:30 dgp Exp $ + * RCS: @(#) $Id: tclIO.h,v 1.5.4.1 2004/05/19 19:16:24 andreas_kupries Exp $ */ /* @@ -307,6 +307,22 @@ typedef struct ChannelState { * routines will simulate a * short read (0 characters * read) */ +#define CHANNEL_HAS_MORE_DATA (1<<18) /* Set by NotifyChannel for a + * channel if and only if the + * channel is configured + * non-blocking, the driver + * for said channel has no + * blockmodeproc, and data has + * arrived for reading at the + * OS level). A GetInput will + * pass reading from the + * driver if the channel is + * non-blocking, without + * blockmode proc and the flag + * has not been set. A read + * will be performed if the + * flag is set. This will + * reset the flag as well. */ /* * For each channel handler registered in a call to Tcl_CreateChannelHandler, -- cgit v0.12 From b3dc4ac2be00faaa212364b6d4f0c0e92b9255ac Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 19 May 2004 19:23:58 +0000 Subject: Removed one bogus clearance of the has-more flag. Erroneously kept after shifting the code. --- generic/tclIO.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/generic/tclIO.c b/generic/tclIO.c index a689ca9..f1a3266 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.5 2004/05/19 19:16:21 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.6 2004/05/19 19:23:58 andreas_kupries Exp $ */ #include "tclInt.h" @@ -5324,8 +5324,6 @@ GetInput(chanPtr) nread = -1; result = EWOULDBLOCK; } else { - statePtr->flags &= ~CHANNEL_HAS_MORE_DATA; - nread = (chanPtr->typePtr->inputProc)(chanPtr->instanceData, bufPtr->buf + bufPtr->nextAdded, toRead, &result); } -- cgit v0.12 From 64321856827557769e2a68ac721330f82a3c7065 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 19 May 2004 22:50:22 +0000 Subject: Backport of bizarre error-loss bug found by KBK and myself. --- ChangeLog | 10 ++++++++++ win/tclWinFile.c | 7 ++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 74ae073..65cd4f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-05-19 Donal K. Fellows + + * win/tclWinFile.c (TclpMatchInDirectory): fix for an issue + where there was a sneak path from Tcl_DStringFree to + SetErrorCode(0). The result was that the error code could + be reset between a call to FindFirstFile and the check + of its status return, leading to a bizarre error return of + {POSIX unknown {No error}}. (Found in unplanned test - + no incident logged at SourceForge.) + 2004-05-19 Andreas Kupries * tclIO.c: Fixed [SF Tcl Bug 943274]. This is the same problem as diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 6e1dde1..b29e9d1 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.7 2004/03/29 18:49:36 hobbs Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.8 2004/05/19 22:50:23 dkf Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -844,11 +844,11 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) dirName = Tcl_DStringAppend(&dirString, "*.*", 3); native = Tcl_WinUtfToTChar(dirName, -1, &ds); handle = (*tclWinProcs->findFirstFileProc)(native, &data); - Tcl_DStringFree(&ds); if (handle == INVALID_HANDLE_VALUE) { - Tcl_DStringFree(&dirString); TclWinConvertError(GetLastError()); + Tcl_DStringFree(&ds); + Tcl_DStringFree(&dirString); Tcl_ResetResult(interp); Tcl_AppendResult(interp, "couldn't read directory \"", Tcl_DStringValue(&dsOrig), "\": ", @@ -856,6 +856,7 @@ TclpMatchInDirectory(interp, resultPtr, pathPtr, pattern, types) Tcl_DStringFree(&dsOrig); return TCL_ERROR; } + Tcl_DStringFree(&ds); /* * Check to see if the pattern should match the special -- cgit v0.12 From af7d844c1eb713c44d97c7715a6ba37257973592 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sat, 22 May 2004 17:01:38 +0000 Subject: * generic/tclVar.c (TclObjUnsetVar2): backported fix [Bug 735335] and new (in tcl8.4) exteriorisations of [Bug 736729] due to the use of tclNsVarNameType obj types. The consequences of [Bug 736729] should be the same as in tcl8.3 and previous versions. The use of tclNsVarNameType objs is still disabled, pending a decision by the release manager. --- ChangeLog | 9 +++++++++ generic/tclVar.c | 35 ++++++++++++++++++++++++++--------- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 65cd4f4..8f296f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-05-22 Miguel Sofer + + * generic/tclVar.c (TclObjUnsetVar2): backported fix [Bug 735335] + and new (in tcl8.4) exteriorisations of [Bug 736729] due to the use of + tclNsVarNameType obj types. The consequences of [Bug 736729] + should be the same as in tcl8.3 and previous versions. + The use of tclNsVarNameType objs is still disabled, pending a + decision by the release manager. + 2004-05-19 Donal K. Fellows * win/tclWinFile.c (TclpMatchInDirectory): fix for an issue diff --git a/generic/tclVar.c b/generic/tclVar.c index 80089b6..e6bff11 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.4 2003/11/20 19:19:03 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.5 2004/05/22 17:01:39 msofer Exp $ */ #include "tclInt.h" @@ -555,14 +555,14 @@ TclObjLookupVar(interp, part1Ptr, part2, flags, msg, createPart1, createPart2, /* * TEMPORARYLY DISABLED tclNsVarNameType * - * This is a stop-gap fix for [Bug 735335]; it may not address the - * real issue (which I haven't pinned down yet), but it avoids the - * segfault in the test case. * This optimisation will hopefully be turned back on soon. - * Miguel Sofer, 2003-05-12 + * Miguel Sofer, 2004-05-22 */ } else if (index > -3) { + /* + * A cacheable namespace or global variable. + */ Namespace *nsPtr; nsPtr = ((index == -1)? iPtr->globalNsPtr : varFramePtr->nsPtr); @@ -2036,6 +2036,15 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) varPtr->searchPtr = NULL; /* + * Keep the variable alive until we're done with it. We used to + * increase/decrease the refCount for each operation, making it + * hard to find [Bug 735335] - caused by unsetting the variable + * whose value was the variable's name. + */ + + varPtr->refCount++; + + /* * Call trace procedures for the variable being deleted. Then delete * its traces. Be sure to abort any other traces for the variable * that are still pending. Special tricks: @@ -2047,7 +2056,6 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) if ((dummyVar.tracePtr != NULL) || ((arrayPtr != NULL) && (arrayPtr->tracePtr != NULL))) { - varPtr->refCount++; dummyVar.flags &= ~VAR_TRACE_ACTIVE; CallVarTraces(iPtr, arrayPtr, &dummyVar, part1, part2, (flags & (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY)) @@ -2063,7 +2071,6 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) activePtr->nextTracePtr = NULL; } } - varPtr->refCount--; } /* @@ -2087,12 +2094,10 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) * array are being deleted when the array still exists, but since the * array is about to be removed anyway, that shouldn't really matter. */ - varPtr->refCount++; DeleteArray(iPtr, part1, dummyVarPtr, (flags & (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY)) | TCL_TRACE_UNSETS); /* Decr ref count */ - varPtr->refCount--; } if (TclIsVarScalar(dummyVarPtr) && (dummyVarPtr->value.objPtr != NULL)) { @@ -2122,11 +2127,23 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) } /* + * Try to avoid keeping the Var struct allocated due to a tclNsVarNameType + * keeping a reference. This removes some additional exteriorisations of + * [Bug 736729], but may be a good thing independently of the bug. + */ + + if (part1Ptr->typePtr == &tclNsVarNameType) { + part1Ptr->typePtr->freeIntRepProc(part1Ptr); + part1Ptr->typePtr = NULL; + } + + /* * Finally, if the variable is truly not in use then free up its Var * structure and remove it from its hash table, if any. The ref count of * its value object, if any, was decremented above. */ + varPtr->refCount--; CleanupVar(varPtr, arrayPtr); return result; } -- cgit v0.12 From 12e64294fc3db4bba8ccacd7a75e769c759ca1ab Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 24 May 2004 19:24:36 +0000 Subject: * doc/set.n: accurate description of name resolution process, referring to namespace.n for details [Bug 959180] --- ChangeLog | 5 +++++ doc/set.n | 28 +++++++++++++--------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8f296f2..ea72ec8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-05-24 Miguel Sofer + + * doc/set.n: accurate description of name resolution process, + referring to namespace.n for details [Bug 959180] + 2004-05-22 Miguel Sofer * generic/tclVar.c (TclObjUnsetVar2): backported fix [Bug 735335] diff --git a/doc/set.n b/doc/set.n index be48036..1ab7ac5 100644 --- a/doc/set.n +++ b/doc/set.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: set.n,v 1.3 2000/09/07 14:27:51 poenitz Exp $ +'\" RCS: @(#) $Id: set.n,v 1.3.18.1 2004/05/24 19:24:37 msofer Exp $ '\" .so man.macros .TH set n "" Tcl "Tcl Built-In Commands" @@ -28,24 +28,22 @@ close parenthesis, then it refers to an array element: the characters before the first open parenthesis are the name of the array, and the characters between the parentheses are the index within the array. Otherwise \fIvarName\fR refers to a scalar variable. -Normally, \fIvarName\fR is unqualified -(does not include the names of any containing namespaces), -and the variable of that name in the current namespace is read or written. +.PP If \fIvarName\fR includes namespace qualifiers -(in the array name if it refers to an array element), -the variable in the specified namespace is read or written. +(in the array name if it refers to an array element), or if \fIvarName\fR +is unqualified (does not include the names of any containing namespaces) +but no procedure is active, +\fIvarName\fR refers to a namespace variable +resolved according to the rules described under \fBNAME RESOLUTION\fR in +the \fBnamespace\fR manual page. .PP -If no procedure is active, -then \fIvarName\fR refers to a namespace variable -(global variable if the current namespace is the global namespace). -If a procedure is active, then \fIvarName\fR refers to a parameter -or local variable of the procedure unless the \fBglobal\fR command -was invoked to declare \fIvarName\fR to be global, -or unless a \fBvariable\fR command -was invoked to declare \fIvarName\fR to be a namespace variable. +If a procedure is active and \fIvarName\fR is unqualified, then +\fIvarName\fR refers to a parameter or local variable of the procedure, +unless \fIvarName\fR was declared to resolve differently through one of the +\fBglobal\fR, \fBvariable\fR or \fBupvar\fR commands. .SH "SEE ALSO" -expr(n), proc(n), trace(n), unset(n) +expr(n), global(n), namespace(n), proc(n), trace(n), unset(n), upvar(n), variable(n) .SH KEYWORDS read, write, variable -- cgit v0.12 From 2178c51e4f47a6c6e161dc11518bfa588422d69c Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 25 May 2004 00:08:23 +0000 Subject: * generic/tclExecute.c (VerifyExprObjType): use GET_WIDE_OR_INT to properly have tclIntType used for smaller values. This corrects TclX bug 896727 and any other 3rd party extension that created math functions but was not yet WIDE_INT aware in them. --- ChangeLog | 7 +++++++ generic/tclExecute.c | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ea72ec8..9ec3292 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-05-24 Jeff Hobbs + + * generic/tclExecute.c (VerifyExprObjType): use GET_WIDE_OR_INT to + properly have tclIntType used for smaller values. This corrects + TclX bug 896727 and any other 3rd party extension that created + math functions but was not yet WIDE_INT aware in them. + 2004-05-24 Miguel Sofer * doc/set.n: accurate description of name resolution process, diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 10980db..4f3dff4 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.5 2003/09/19 18:43:00 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.6 2004/05/25 00:08:23 hobbs Exp $ */ #include "tclInt.h" @@ -4739,8 +4739,9 @@ VerifyExprObjType(interp, objPtr) char *s = Tcl_GetStringFromObj(objPtr, &length); if (TclLooksLikeInt(s, length)) { + long i; Tcl_WideInt w; - result = Tcl_GetWideIntFromObj((Tcl_Interp *) NULL, objPtr, &w); + GET_WIDE_OR_INT(result, objPtr, i, w); } else { double d; result = Tcl_GetDoubleFromObj((Tcl_Interp *) NULL, objPtr, &d); -- cgit v0.12 From f54b39a2a3db59321f0fef9bed7f1606156deb1a Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 25 May 2004 19:02:23 +0000 Subject: * tests/winFCmd.test: Correct test for the presence of a CD-ROM so that it doesn't misdetect some other sort of filesystem with a write-protected root as being a CD-ROM drive. [Bug 918267] --- ChangeLog | 7 +++++++ tests/winFCmd.test | 17 ++++------------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ec3292..4c6a816 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-05-25 Kevin Kenny + + * tests/winFCmd.test: Correct test for the presence of a CD-ROM so + that it doesn't misdetect some other sort + of filesystem with a write-protected root as + being a CD-ROM drive. [Bug 918267] + 2004-05-24 Jeff Hobbs * generic/tclExecute.c (VerifyExprObjType): use GET_WIDE_OR_INT to diff --git a/tests/winFCmd.test b/tests/winFCmd.test index 0b1fdf0..a8a05c4 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.20.2.4 2004/05/04 22:26:00 hobbs Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.20.2.5 2004/05/25 19:02:28 kennykb Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -64,20 +64,11 @@ set ::tcltest::testConstraints(exdev) 0 # find a CD-ROM so we can test read-only filesystems. set cdrom {} -set nodrive x: -foreach p {d e f g h i j k l m n o p q r s t u v w x y z} { - set name ${p}:/dummy~~.fil - if [catch {set fd [open $name w]}] { - set err [lindex $errorCode 1] - if {$cdrom == "" && $err == "EACCES"} { +if { [info commands ::testvolumetype] ne {} } { + foreach p {d e f g h i j k l m n o p q r s t u v w x y z} { + if { ! [catch { testvolumetype ${p}: } result] && $result eq {CDFS} } { set cdrom ${p}: } - if {$err == "ENOENT"} { - set nodrive ${p}: - } - } else { - close $fd - file delete $name } } -- cgit v0.12 From bde979906035bbdc9ff1001cb4a4b64a5dd6b813 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 25 May 2004 22:50:46 +0000 Subject: * doc/http.n (http::config): add -urlencoding option (default utf-8) * library/http/http.tcl: that specifies encoding conversion of * library/http/pkgIndex.tcl: args for http::formatQuery. Previously * tests/http.test: undefined, RFC 2718 says it should be utf-8. 'http::config -urlencoding {}' returns previous behavior, which will throw errors processing non-latin-1 chars. Bumped http package to 2.5.0. --- ChangeLog | 10 ++++++++ doc/http.n | 16 +++++++++--- library/http/http.tcl | 23 +++++++++-------- library/http/pkgIndex.tcl | 2 +- tests/http.test | 64 ++++++++++++++++++++++++++++++++++++++++------- 5 files changed, 91 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4c6a816..626d382 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-05-25 Jeff Hobbs + + * doc/http.n (http::config): add -urlencoding option (default utf-8) + * library/http/http.tcl: that specifies encoding conversion of + * library/http/pkgIndex.tcl: args for http::formatQuery. Previously + * tests/http.test: undefined, RFC 2718 says it should be + utf-8. 'http::config -urlencoding {}' returns previous behavior, + which will throw errors processing non-latin-1 chars. + Bumped http package to 2.5.0. + 2004-05-25 Kevin Kenny * tests/winFCmd.test: Correct test for the presence of a CD-ROM so diff --git a/doc/http.n b/doc/http.n index 8cd249d..a76e6ff 100644 --- a/doc/http.n +++ b/doc/http.n @@ -1,20 +1,21 @@ '\" '\" Copyright (c) 1995-1997 Sun Microsystems, Inc. '\" Copyright (c) 1998-2000 by Ajuba Solutions. +'\" Copyright (c) 2004 ActiveState Corporation. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: http.n,v 1.18.2.1 2003/07/16 04:15:07 dgp Exp $ +'\" RCS: @(#) $Id: http.n,v 1.18.2.2 2004/05/25 22:50:46 hobbs Exp $ '\" .so man.macros -.TH "http" n 2.4 http "Tcl Bundled Packages" +.TH "http" n 2.5 http "Tcl Bundled Packages" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME http \- Client-side implementation of the HTTP/1.0 protocol. .SH SYNOPSIS -\fBpackage require http ?2.4?\fR +\fBpackage require http ?2.5?\fR .sp \fB::http::config \fI?options?\fR .sp @@ -108,6 +109,15 @@ an empty list. The default filter returns the values of the \fB\-proxyhost\fR and \fB\-proxyport\fR settings if they are non-empty. .TP +\fB\-urlencoding\fP \fIencoding\fP +The \fIencoding\fR used for creating the x-url-encoded URLs with +\fB::http::formatQuery\fR. The default is \fButf-8\fR, as specified by RFC +2718. Prior to http 2.5 this was unspecified, and that behavior can be +returned by specifying the empty string (\fB{}\fR), although +\fIiso8859-1\fR is recommended to restore similar behavior but without the +\fB::http::formatQuery\fR throwing an error processing non-latin-1 +characters. +.TP \fB\-useragent\fP \fIstring\fP The value of the User-Agent header in the HTTP request. The default is \fB"Tcl http client package 2.4."\fR diff --git a/library/http/http.tcl b/library/http/http.tcl index d0cf058..ae2b1d4 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.3 2003/10/02 23:07:33 dgp Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.4 2004/05/25 22:50:47 hobbs Exp $ # Rough version history: # 1.0 Old http_get interface @@ -25,7 +25,7 @@ package require Tcl 8.2 # keep this in sync with pkgIndex.tcl # and with the install directories in Makefiles -package provide http 2.4.5 +package provide http 2.5.0 namespace eval http { variable http @@ -34,6 +34,7 @@ namespace eval http { -proxyhost {} -proxyport {} -proxyfilter http::ProxyRequired + -urlencoding utf-8 } set http(-useragent) "Tcl http client package [package provide http]" @@ -262,7 +263,7 @@ proc http::geturl { url args } { -queryblocksize integer -validate boolean -timeout integer - } + } set state(charset) $defaultCharset set options {-binary -blocksize -channel -command -handler -headers \ -progress -query -queryblocksize -querychannel -queryprogress\ @@ -460,7 +461,7 @@ proc http::geturl { url args } { # (among Solaris, Linux, and NT) behave the same, and none # behave all that well in any case. Servers should always read thier # POST data if they expect the client to read their response. - + if {$isQuery || $isQueryChannel} { puts $s "Content-Type: $state(-type)" if {!$contDone} { @@ -485,7 +486,7 @@ proc http::geturl { url args } { # Something went wrong, so throw the exception, and the # enclosing catch will do cleanup. return -code error [lindex $state(error) 0] - } + } } } err]} { # The socket probably was never connected, @@ -494,7 +495,7 @@ proc http::geturl { url args } { # Clean up after events and such, but DON'T call the command callback # (if available) because we're going to throw an exception from here # instead. - + # if state(status) is error, it means someone's already called Finish # to do the above-described clean up. if {[string equal $state(status) "error"]} { @@ -609,16 +610,13 @@ proc http::Write {token} { variable $token upvar 0 $token state set s $state(sock) - + # Output a block. Tcl will buffer this if the socket blocks - set done 0 if {[catch { - # Catch I/O errors on dead sockets if {[info exists state(-query)]} { - # Chop up large query strings so queryprogress callback # can give smooth feedback @@ -631,7 +629,6 @@ proc http::Write {token} { set done 1 } } else { - # Copy blocks from the query channel set outStr [read $state(-querychannel) $state(-queryblocksize)] @@ -889,6 +886,7 @@ proc http::formatQuery {args} { # The encoded string proc http::mapReply {string} { + variable http variable formMap variable alphanumeric @@ -898,6 +896,9 @@ proc http::mapReply {string} { # 3 Escape constructs that are "special" to the tcl parser # 4 "subst" the result, doing all the array substitutions + if {$http(-urlencoding) ne ""} { + set string [encoding convertto $http(-urlencoding) $string] + } regsub -all \[^$alphanumeric\] $string {$formMap(&)} string regsub -all {[][{})\\]\)} $string {\\&} string return [subst -nocommand $string] diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index e114a44..8efa64c 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.2]} {return} -package ifneeded http 2.4.5 [list tclPkgSetup $dir http 2.4.5 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] +package ifneeded http 2.5.0 [list tclPkgSetup $dir http 2.5.0 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] diff --git a/tests/http.test b/tests/http.test index 1051162..942c9a5 100644 --- a/tests/http.test +++ b/tests/http.test @@ -12,7 +12,7 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # -# RCS: @(#) $Id: http.test,v 1.33.2.1 2003/07/18 19:41:17 hobbs Exp $ +# RCS: @(#) $Id: http.test,v 1.33.2.2 2004/05/25 22:50:47 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -47,7 +47,7 @@ catch {unset data} # Ensure httpd file exists -set origFile [file join $::tcltest::testsDirectory httpd] +set origFile [file join [pwd] [file dirname [info script]] httpd] set httpdFile [file join [temporaryDirectory] httpd_[pid]] if {![file exists $httpdFile]} { makeFile "" $httpdFile @@ -85,7 +85,7 @@ if {[info commands testthread] == "testthread" && [file exists $httpdFile]} { test http-1.1 {http::config} { http::config -} [list -accept */* -proxyfilter http::ProxyRequired -proxyhost {} -proxyport {} -useragent "Tcl http client package $version"] +} [list -accept */* -proxyfilter http::ProxyRequired -proxyhost {} -proxyport {} -urlencoding utf-8 -useragent "Tcl http client package $version"] test http-1.2 {http::config} { http::config -proxyfilter @@ -97,15 +97,25 @@ test http-1.3 {http::config} { test http-1.4 {http::config} { set savedconf [http::config] - http::config -proxyhost nowhere.come -proxyport 8080 -proxyfilter myFilter -useragent "Tcl Test Suite" + http::config -proxyhost nowhere.come -proxyport 8080 \ + -proxyfilter myFilter -useragent "Tcl Test Suite" \ + -urlencoding iso8859-1 set x [http::config] eval http::config $savedconf set x -} {-accept */* -proxyfilter myFilter -proxyhost nowhere.come -proxyport 8080 -useragent {Tcl Test Suite}} +} {-accept */* -proxyfilter myFilter -proxyhost nowhere.come -proxyport 8080 -urlencoding iso8859-1 -useragent {Tcl Test Suite}} test http-1.5 {http::config} { list [catch {http::config -proxyhost {} -junk 8080} msg] $msg -} {1 {Unknown option -junk, must be: -accept, -proxyfilter, -proxyhost, -proxyport, -useragent}} +} {1 {Unknown option -junk, must be: -accept, -proxyfilter, -proxyhost, -proxyport, -urlencoding, -useragent}} + +test http-1.6 {http::config} { + set enc [list [http::config -urlencoding]] + http::config -urlencoding iso8859-1 + lappend enc [http::config -urlencoding] + http::config -urlencoding [lindex $enc 0] + set enc +} {utf-8 iso8859-1} test http-2.1 {http::reset} { @@ -465,14 +475,24 @@ test http-5.1 {http::formatQuery} { http::formatQuery name1 value1 name2 "value two" } {name1=value1&name2=value+two} -test http-5.2 {http::formatQuery} { - http::formatQuery name1 ~bwelch name2 \xa1\xa2\xa2 -} {name1=%7ebwelch&name2=%a1%a2%a2} +# test http-5.2 obsoleted by 5.4 and 5.4 with http 2.5 test http-5.3 {http::formatQuery} { http::formatQuery lines "line1\nline2\nline3" } {lines=line1%0d%0aline2%0d%0aline3} +test http-5.4 {http::formatQuery} { + http::formatQuery name1 ~bwelch name2 \xa1\xa2\xa2 +} {name1=%7ebwelch&name2=%c2%a1%c2%a2%c2%a2} + +test http-5.5 {http::formatQuery} { + set enc [http::config -urlencoding] + http::config -urlencoding iso8859-1 + set res [http::formatQuery name1 ~bwelch name2 \xa1\xa2\xa2] + http::config -urlencoding $enc + set res +} {name1=%7ebwelch&name2=%a1%a2%a2} + test http-6.1 {http::ProxyRequired} { http::config -proxyhost [info hostname] -proxyport $port set token [http::geturl $url] @@ -489,6 +509,31 @@ test http-7.1 {http::mapReply} { http::mapReply "abc\$\[\]\"\\()\}\{" } {abc%24%5b%5d%22%5c%28%29%7d%7b} +test http-7.2 {http::mapReply} { + # RFC 2718 specifies that we pass urlencoding on utf-8 chars by default, + # so make sure this gets converted to utf-8 then urlencoded. + http::mapReply "\u2208" +} {%e2%88%88} + +test http-7.3 {http::formatQuery} { + set enc [http::config -urlencoding] + # this would be reverting to http <=2.4 behavior + http::config -urlencoding "" + set res [list [catch {http::mapReply "\u2208"} msg] $msg] + http::config -urlencoding $enc + set res +} [list 1 "can't read \"formMap(\u2208)\": no such element in array"] + +test http-7.4 {http::formatQuery} { + set enc [http::config -urlencoding] + # this would be reverting to http <=2.4 behavior w/o errors + # (unknown chars become '?') + http::config -urlencoding "iso8859-1" + set res [http::mapReply "\u2208"] + http::config -urlencoding $enc + set res +} {%3f} + # cleanup catch {unset url} catch {unset badurl} @@ -506,4 +551,5 @@ if {[info exists removeHttpd]} { removeFile $httpdFile } +rename bgerror {} ::tcltest::cleanupTests -- cgit v0.12 From dc99340ce6d28dea1878ff46900fcd01528947cb Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 26 May 2004 15:13:47 +0000 Subject: * library/tcltest/tcltest.tcl: Correction to debug prints and testing * library/tcltest/pkgIndex.tcl: if TCLTEST_OPTIONS value. Updated * tests/tcltest.test: tcltest-19.1 to tcltest 2.1 behavior. Bumped to tcltest 2.2.6. --- ChangeLog | 7 +++++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 10 +++++----- tests/tcltest.test | 36 +++++++++++++++++------------------- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 626d382..f5411ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-05-26 Don Porter + + * library/tcltest/tcltest.tcl: Correction to debug prints and testing + * library/tcltest/pkgIndex.tcl: if TCLTEST_OPTIONS value. Updated + * tests/tcltest.test: tcltest-19.1 to tcltest 2.1 behavior. + Bumped to tcltest 2.2.6. + 2004-05-25 Jeff Hobbs * doc/http.n (http::config): add -urlencoding option (default utf-8) diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index 5ddc69c..6e0766e 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.3]} {return} -package ifneeded tcltest 2.2.5 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.2.6 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index b5e2eda..5af8b18 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.8 2004/02/18 01:43:49 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.9 2004/05/26 15:13:49 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.2.5 + variable Version 2.2.6 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -1499,8 +1499,8 @@ proc tcltest::ProcessCmdLineArgs {} { DebugPuts 2 \ " ::env(TCLTEST_OPTIONS): $::env(TCLTEST_OPTIONS)" } - if {[info exists argv]} { - DebugPuts 2 " argv: $argv" + if {[info exists ::argv]} { + DebugPuts 2 " argv: $::argv" } DebugPuts 2 "tcltest::debug = [debug]" DebugPuts 2 "tcltest::testsDirectory = [testsDirectory]" @@ -3287,7 +3287,7 @@ namespace eval tcltest { Tcl list: $msg" return } - if {[llength $::env(TCLTEST_OPTIONS)] < 2} { + if {[llength $::env(TCLTEST_OPTIONS)] % 2} { Warn "invalid TCLTEST_OPTIONS: \"$options\":\n should be\ -option value ?-option value ...?" return diff --git a/tests/tcltest.test b/tests/tcltest.test index 165e070..e4cfc75 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.2 2004/05/04 19:50:41 dgp Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.3 2004/05/26 15:13:50 dgp Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -1082,38 +1082,36 @@ removeDirectory dirtestdir2.1 $dtd removeDirectory dirtestdir # TCLTEST_OPTIONS -test tcltest-19.1 {TCLTEST_OPTIONS default} { - -constraints {unixOrPc singleTestInterp} - -setup { +test tcltest-19.1 {TCLTEST_OPTIONS default} -setup { if {[info exists ::env(TCLTEST_OPTIONS)]} { set oldoptions $::env(TCLTEST_OPTIONS) - unset ::env(TCLTEST_OPTIONS) } else { set oldoptions none } # set this to { } instead of just {} to get around quirk in # Windows env handling that removes empty elements from env array. set ::env(TCLTEST_OPTIONS) { } - set olddebug [debug] - debug 2 - } - -cleanup { + interp create slave1 + slave1 eval [list set argv {-debug 2}] + slave1 alias puts puts + interp create slave2 + slave2 alias puts puts + } -cleanup { + interp delete slave2 + interp delete slave1 if {$oldoptions == "none"} { unset ::env(TCLTEST_OPTIONS) } else { set ::env(TCLTEST_OPTIONS) $oldoptions } - debug $olddebug - } - -body { - ::tcltest::ProcessCmdLineArgs + } -body { + slave1 eval [package ifneeded tcltest [package provide tcltest]] + slave1 eval tcltest::debug set ::env(TCLTEST_OPTIONS) "-debug 3" - ::tcltest::ProcessCmdLineArgs - } - -result {^$} - -match regexp - -output {tcltest::debug\s+= 2.*tcltest::debug\s+= 3} -} + slave2 eval [package ifneeded tcltest [package provide tcltest]] + slave2 eval tcltest::debug + } -result {^3$} -match regexp -output\ +{tcltest::debug\s+= 2.*tcltest::debug\s+= 3} # Begin testing of tcltest procs ... -- cgit v0.12 From 9cefb7f497fab0c1e5c76c1ec4f51587c0889eb9 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 26 May 2004 16:24:32 +0000 Subject: * library/tcltest/tcltest.tcl: Correction to debug prints and testing * library/tcltest/pkgIndex.tcl: if TCLTEST_OPTIONS value. Corrected * tests/tcltest.test: double increment of numTestFiles in -singleproc 1 configurations. Updated tcltest-19.1 to tcltest 2.1 behavior. Corrected tcltest-25.3 to not falsely report a failure in tcltest.test. Bumped to tcltest 2.2.6. [Bugs 960560, 960926] --- ChangeLog | 8 +++++--- library/tcltest/tcltest.tcl | 3 +-- tests/tcltest.test | 11 ++++++++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index f5411ae..2578fd7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,11 @@ 2004-05-26 Don Porter * library/tcltest/tcltest.tcl: Correction to debug prints and testing - * library/tcltest/pkgIndex.tcl: if TCLTEST_OPTIONS value. Updated - * tests/tcltest.test: tcltest-19.1 to tcltest 2.1 behavior. - Bumped to tcltest 2.2.6. + * library/tcltest/pkgIndex.tcl: if TCLTEST_OPTIONS value. Corrected + * tests/tcltest.test: double increment of numTestFiles in + -singleproc 1 configurations. Updated tcltest-19.1 to tcltest 2.1 + behavior. Corrected tcltest-25.3 to not falsely report a failure + in tcltest.test. Bumped to tcltest 2.2.6. [Bugs 960560, 960926] 2004-05-25 Jeff Hobbs diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 5af8b18..85d86db 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.9 2004/05/26 15:13:49 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.10 2004/05/26 16:24:37 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -2418,7 +2418,6 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { # then add current file to failFile list if any tests in this # file failed - incr numTestFiles if {$currentFailure \ && ([lsearch -exact $failFiles $testFileName] == -1)} { lappend failFiles $testFileName diff --git a/tests/tcltest.test b/tests/tcltest.test index e4cfc75..42797fa 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.3 2004/05/26 15:13:50 dgp Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.4 2004/05/26 16:24:38 dgp Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -1725,14 +1725,19 @@ test tcltest-25.2 { test tcltest-25.3 { reported return code (Bug 611922) +} -setup { + set fail $::tcltest::currentFailure + set v [verbose] } -body { - # Buggy tcltest will generate result of 2 + verbose {} test tcltest-25.3.0 {} -body { error foo } +} -cleanup { + set ::tcltest::currentFailure $fail + verbose $v } -match glob -output {*generated error; Return code was: 1*} - cleanupTests } -- cgit v0.12 From 745b7fd7ab8c61fc34586c00f4cb09945292c3ea Mon Sep 17 00:00:00 2001 From: rmax Date: Thu, 27 May 2004 14:33:17 +0000 Subject: * generic/tclEncoding.c: * tests/encoding.test: added support and tests for translating embedded null characters between real nullbytes and the internal representation on input/output (Bug #949905). --- ChangeLog | 7 +++ generic/tclEncoding.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++-- tests/encoding.test | 17 ++++++- 3 files changed, 154 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2578fd7..9e3cac6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-05-27 Reinhard Max + + * generic/tclEncoding.c: + * tests/encoding.test: added support and tests for translating + embedded null characters between real nullbytes and the internal + representation on input/output (Bug #949905). + 2004-05-26 Don Porter * library/tcltest/tcltest.tcl: Correction to debug prints and testing diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index c596911..d66ce37 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.4 2004/05/06 01:04:53 davygrvy Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.5 2004/05/27 14:33:18 rmax Exp $ */ #include "tclInt.h" @@ -226,6 +226,16 @@ static int UtfToUtfProc _ANSI_ARGS_((ClientData clientData, CONST char *src, int srcLen, int flags, Tcl_EncodingState *statePtr, char *dst, int dstLen, int *srcReadPtr, int *dstWrotePtr, + int *dstCharsPtr, int pureNullMode)); +static int UtfIntToUtfExtProc _ANSI_ARGS_((ClientData clientData, + CONST char *src, int srcLen, int flags, + Tcl_EncodingState *statePtr, char *dst, int dstLen, + int *srcReadPtr, int *dstWrotePtr, + int *dstCharsPtr)); +static int UtfExtToUtfIntProc _ANSI_ARGS_((ClientData clientData, + CONST char *src, int srcLen, int flags, + Tcl_EncodingState *statePtr, char *dst, int dstLen, + int *srcReadPtr, int *dstWrotePtr, int *dstCharsPtr)); static int TclFindEncodings _ANSI_ARGS_((CONST char *argv0)); @@ -273,8 +283,8 @@ TclInitEncodingSubsystem() systemEncoding = Tcl_GetEncoding(NULL, type.encodingName); type.encodingName = "utf-8"; - type.toUtfProc = UtfToUtfProc; - type.fromUtfProc = UtfToUtfProc; + type.toUtfProc = UtfExtToUtfIntProc; + type.fromUtfProc = UtfIntToUtfExtProc; type.freeProc = NULL; type.nullSize = 1; type.clientData = NULL; @@ -1776,6 +1786,105 @@ BinaryProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, return result; } + +/* + *------------------------------------------------------------------------- + * + * UtfExtToUtfIntProc -- + * + * Convert from UTF-8 to UTF-8. While converting null-bytes from + * the Tcl's internal representation (0xc0, 0x80) to the official + * representation (0x00). See UtfToUtfProc for details. + * + * Results: + * Returns TCL_OK if conversion was successful. + * + * Side effects: + * None. + * + *------------------------------------------------------------------------- + */ +static int +UtfIntToUtfExtProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, + srcReadPtr, dstWrotePtr, dstCharsPtr) + ClientData clientData; /* Not used. */ + CONST char *src; /* Source string in UTF-8. */ + int srcLen; /* Source string length in bytes. */ + int flags; /* Conversion control flags. */ + Tcl_EncodingState *statePtr;/* Place for conversion routine to store + * state information used during a piecewise + * conversion. Contents of statePtr are + * initialized and/or reset by conversion + * routine under control of flags argument. */ + char *dst; /* Output buffer in which converted string + * is stored. */ + int dstLen; /* The maximum length of output buffer in + * bytes. */ + int *srcReadPtr; /* Filled with the number of bytes from the + * source string that were converted. This + * may be less than the original source length + * if there was a problem converting some + * source characters. */ + int *dstWrotePtr; /* Filled with the number of bytes that were + * stored in the output buffer as a result of + * the conversion. */ + int *dstCharsPtr; /* Filled with the number of characters that + * correspond to the bytes stored in the + * output buffer. */ +{ + return UtfToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, + srcReadPtr, dstWrotePtr, dstCharsPtr, 1); +} + +/* + *------------------------------------------------------------------------- + * + * UtfExtToUtfIntProc -- + * + * Convert from UTF-8 to UTF-8 while converting null-bytes from + * the official representation (0x00) to Tcl's internal + * representation (0xc0, 0x80). See UtfToUtfProc for details. + * + * Results: + * Returns TCL_OK if conversion was successful. + * + * Side effects: + * None. + * + *------------------------------------------------------------------------- + */ +static int +UtfExtToUtfIntProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, + srcReadPtr, dstWrotePtr, dstCharsPtr) + ClientData clientData; /* Not used. */ + CONST char *src; /* Source string in UTF-8. */ + int srcLen; /* Source string length in bytes. */ + int flags; /* Conversion control flags. */ + Tcl_EncodingState *statePtr;/* Place for conversion routine to store + * state information used during a piecewise + * conversion. Contents of statePtr are + * initialized and/or reset by conversion + * routine under control of flags argument. */ + char *dst; /* Output buffer in which converted string + * is stored. */ + int dstLen; /* The maximum length of output buffer in + * bytes. */ + int *srcReadPtr; /* Filled with the number of bytes from the + * source string that were converted. This + * may be less than the original source length + * if there was a problem converting some + * source characters. */ + int *dstWrotePtr; /* Filled with the number of bytes that were + * stored in the output buffer as a result of + * the conversion. */ + int *dstCharsPtr; /* Filled with the number of characters that + * correspond to the bytes stored in the + * output buffer. */ +{ + return UtfToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, + srcReadPtr, dstWrotePtr, dstCharsPtr, 0); +} + /* *------------------------------------------------------------------------- * @@ -1796,7 +1905,7 @@ BinaryProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, static int UtfToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, - srcReadPtr, dstWrotePtr, dstCharsPtr) + srcReadPtr, dstWrotePtr, dstCharsPtr, pureNullMode) ClientData clientData; /* Not used. */ CONST char *src; /* Source string in UTF-8. */ int srcLen; /* Source string length in bytes. */ @@ -1821,6 +1930,10 @@ UtfToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, int *dstCharsPtr; /* Filled with the number of characters that * correspond to the bytes stored in the * output buffer. */ + int pureNullMode; /* Convert embedded nulls from + * internal representation to real + * null-bytes or vice versa */ + { CONST char *srcStart, *srcEnd, *srcClose; char *dstStart, *dstEnd; @@ -1853,8 +1966,21 @@ UtfToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, result = TCL_CONVERT_NOSPACE; break; } - if (UCHAR(*src) < 0x80) { + if (UCHAR(*src) < 0x80 && + !(UCHAR(*src) == 0 && pureNullMode == 0)) { + /* + * Copy 7bit chatacters, but skip null-bytes when we are + * in input mode, so that they get converted to 0xc080. + */ *dst++ = *src++; + } else if (pureNullMode == 1 && + UCHAR(*src) == 0xc0 && + UCHAR(*(src+1)) == 0x80) { + /* + * Convert 0xc080 to real nulls when we are in output mode. + */ + *dst++ = 0; + src += 2; } else { src += Tcl_UtfToUniChar(src, &ch); dst += Tcl_UniCharToUtf(ch, dst); diff --git a/tests/encoding.test b/tests/encoding.test index 90ce6d4..83f5f69 100644 --- a/tests/encoding.test +++ b/tests/encoding.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: encoding.test,v 1.16.2.1 2003/03/27 21:46:32 msofer Exp $ +# RCS: @(#) $Id: encoding.test,v 1.16.2.2 2004/05/27 14:33:20 rmax Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -291,6 +291,21 @@ test encoding-15.1 {UtfToUtfProc} { encoding convertto utf-8 \xa3 } "\xc2\xa3" +test encoding-15.2 {UtfToUtfProc null character output} { + set x \u0000 + set y [encoding convertto utf-8 \u0000] + set y [encoding convertfrom identity $y] + binary scan $y H* z + list [string bytelength $x] [string bytelength $y] $z +} {2 1 00} + +test encoding-15.3 {UtfToUtfProc null character input} { + set x [encoding convertfrom identity \x00] + set y [encoding convertfrom utf-8 $x] + binary scan [encoding convertto identity $y] H* z + list [string bytelength $x] [string bytelength $y] $z +} {1 2 c080} + test encoding-16.1 {UnicodeToUtfProc} { encoding convertfrom unicode NN } "\u4e4e" -- cgit v0.12 From 548e81835d388898084e2cf99284fefa19c4887b Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Thu, 27 May 2004 18:25:44 +0000 Subject: * tests/clock.test: Added a single test for the presence of %G in [clock format], and conditioned out the clock-10.x series if they're all going to fail because of a broken strftime() call. [Bug 961714] --- ChangeLog | 7 ++++ tests/clock.test | 107 +++++++++++++++++++++++++++++-------------------------- 2 files changed, 64 insertions(+), 50 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e3cac6..41f9b16 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-05-27 Kevin B. Kenny + + * tests/clock.test: Added a single test for the presence of %G + in [clock format], and conditioned out the clock-10.x series if + they're all going to fail because of a broken strftime() call. + [Bug 961714] + 2004-05-27 Reinhard Max * generic/tclEncoding.c: diff --git a/tests/clock.test b/tests/clock.test index 8d69b72..5c01e5e 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.22.2.3 2004/05/18 21:52:57 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.22.2.4 2004/05/27 18:25:46 kennykb Exp $ set env(LC_TIME) POSIX @@ -482,151 +482,158 @@ test clock-9.1 {%s gmt testing} {needPST} { set c [expr {$b-$a}] } {28800} -test clock-10.1 {ISO week-based calendar 2000-W52-1} { +::tcltest::testConstraint percentG \ + [expr { ![catch { clock format 0 -format %G -gmt true } y1970] + && $y1970 eq {1970} }] + +test clock-10.0 {Can strftime do %G?} { + clock format 0 -format %G -gmt true +} 1970 +test clock-10.1 {ISO week-based calendar 2000-W52-1} {percentG} { clock format 977702400 -format {%a %A %g %G %u %V %w} -gmt true; # 2000-12-25 } {Mon Monday 00 2000 1 52 1} -test clock-10.2 {ISO week-based calendar 2000-W52-7} { +test clock-10.2 {ISO week-based calendar 2000-W52-7} {percentG} { clock format 978220800 -format {%a %A %g %G %u %V %w} -gmt true; # 2000-12-31 } {Sun Sunday 00 2000 7 52 0} -test clock-10.3 {ISO week-based calendar 2001-W01-1} { +test clock-10.3 {ISO week-based calendar 2001-W01-1} {percentG} { clock format 978307200 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-1-1 } {Mon Monday 01 2001 1 01 1} -test clock-10.4 {ISO week-based calendar 2001-W01-7} { +test clock-10.4 {ISO week-based calendar 2001-W01-7} {percentG} { clock format 978825600 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-1-7 } {Sun Sunday 01 2001 7 01 0} -test clock-10.5 {ISO week-based calendar 2001-W02-1} { +test clock-10.5 {ISO week-based calendar 2001-W02-1} {percentG} { clock format 978912000 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-1-8 } {Mon Monday 01 2001 1 02 1} -test clock-10.6 {ISO week-based calendar 2001-W52-1} { +test clock-10.6 {ISO week-based calendar 2001-W52-1} {percentG} { clock format 1009152000 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-12-24 } {Mon Monday 01 2001 1 52 1} -test clock-10.7 {ISO week-based calendar 2001-W52-7} { +test clock-10.7 {ISO week-based calendar 2001-W52-7} {percentG} { clock format 1009670400 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-12-30 } {Sun Sunday 01 2001 7 52 0} -test clock-10.8 {ISO week-based calendar 2002-W01-1} { +test clock-10.8 {ISO week-based calendar 2002-W01-1} {percentG} { clock format 1009756800 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-12-31 } {Mon Monday 02 2002 1 01 1} -test clock-10.9 {ISO week-based calendar 2002-W01-2} { +test clock-10.9 {ISO week-based calendar 2002-W01-2} {percentG} { clock format 1009843200 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-1-1 } {Tue Tuesday 02 2002 2 01 2} -test clock-10.10 {ISO week-based calendar 2002-W01-7} { +test clock-10.10 {ISO week-based calendar 2002-W01-7} {percentG} { clock format 1010275200 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-1-6 } {Sun Sunday 02 2002 7 01 0} -test clock-10.11 {ISO week-based calendar 2002-W02-1} { +test clock-10.11 {ISO week-based calendar 2002-W02-1} {percentG} { clock format 1010361600 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-1-7 } {Mon Monday 02 2002 1 02 1} -test clock-10.12 {ISO week-based calendar 2002-W52-1} { +test clock-10.12 {ISO week-based calendar 2002-W52-1} {percentG} { clock format 1040601600 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-23 } {Mon Monday 02 2002 1 52 1} -test clock-10.13 {ISO week-based calendar 2002-W52-7} { +test clock-10.13 {ISO week-based calendar 2002-W52-7} {percentG} { clock format 1041120000 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-29 } {Sun Sunday 02 2002 7 52 0} -test clock-10.14 {ISO week-based calendar 2003-W01-1} { +test clock-10.14 {ISO week-based calendar 2003-W01-1} {percentG} { clock format 1041206400 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-30 } {Mon Monday 03 2003 1 01 1} -test clock-10.15 {ISO week-based calendar 2003-W01-2} { +test clock-10.15 {ISO week-based calendar 2003-W01-2} {percentG} { clock format 1041292800 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-31 } {Tue Tuesday 03 2003 2 01 2} -test clock-10.16 {ISO week-based calendar 2003-W01-3} { +test clock-10.16 {ISO week-based calendar 2003-W01-3} {percentG} { clock format 1041379200 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-1-1 } {Wed Wednesday 03 2003 3 01 3} -test clock-10.17 {ISO week-based calendar 2003-W01-7} { +test clock-10.17 {ISO week-based calendar 2003-W01-7} {percentG} { clock format 1041724800 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-1-5 } {Sun Sunday 03 2003 7 01 0} -test clock-10.18 {ISO week-based calendar 2003-W02-1} { +test clock-10.18 {ISO week-based calendar 2003-W02-1} {percentG} { clock format 1041811200 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-1-6 } {Mon Monday 03 2003 1 02 1} -test clock-10.19 {ISO week-based calendar 2003-W52-1} { +test clock-10.19 {ISO week-based calendar 2003-W52-1} {percentG} { clock format 1072051200 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-22 } {Mon Monday 03 2003 1 52 1} -test clock-10.20 {ISO week-based calendar 2003-W52-7} { +test clock-10.20 {ISO week-based calendar 2003-W52-7} {percentG} { clock format 1072569600 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-28 } {Sun Sunday 03 2003 7 52 0} -test clock-10.21 {ISO week-based calendar 2004-W01-1} { +test clock-10.21 {ISO week-based calendar 2004-W01-1} {percentG} { clock format 1072656000 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-29 } {Mon Monday 04 2004 1 01 1} -test clock-10.22 {ISO week-based calendar 2004-W01-3} { +test clock-10.22 {ISO week-based calendar 2004-W01-3} {percentG} { clock format 1072828800 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-31 } {Wed Wednesday 04 2004 3 01 3} -test clock-10.23 {ISO week-based calendar 2004-W01-4} { +test clock-10.23 {ISO week-based calendar 2004-W01-4} {percentG} { clock format 1072915200 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-1-1 } {Thu Thursday 04 2004 4 01 4} -test clock-10.24 {ISO week-based calendar 2004-W01-7} { +test clock-10.24 {ISO week-based calendar 2004-W01-7} {percentG} { clock format 1073174400 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-1-4 } {Sun Sunday 04 2004 7 01 0} -test clock-10.25 {ISO week-based calendar 2004-W02-1} { +test clock-10.25 {ISO week-based calendar 2004-W02-1} {percentG} { clock format 1073260800 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-1-5 } {Mon Monday 04 2004 1 02 1} -test clock-10.26 {ISO week-based calendar 2004-W52-1} { +test clock-10.26 {ISO week-based calendar 2004-W52-1} {percentG} { clock format 1103500800 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-20 } {Mon Monday 04 2004 1 52 1} -test clock-10.27 {ISO week-based calendar 2004-W52-7} { +test clock-10.27 {ISO week-based calendar 2004-W52-7} {percentG} { clock format 1104019200 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-26 } {Sun Sunday 04 2004 7 52 0} -test clock-10.28 {ISO week-based calendar 2004-W53-1} { +test clock-10.28 {ISO week-based calendar 2004-W53-1} {percentG} { clock format 1104105600 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-27 } {Mon Monday 04 2004 1 53 1} -test clock-10.29 {ISO week-based calendar 2004-W53-5} { +test clock-10.29 {ISO week-based calendar 2004-W53-5} {percentG} { clock format 1104451200 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-31 } {Fri Friday 04 2004 5 53 5} -test clock-10.30 {ISO week-based calendar 2004-W53-6} { +test clock-10.30 {ISO week-based calendar 2004-W53-6} {percentG} { clock format 1104537600 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-1 } {Sat Saturday 04 2004 6 53 6} -test clock-10.31 {ISO week-based calendar 2004-W53-7} { +test clock-10.31 {ISO week-based calendar 2004-W53-7} {percentG} { clock format 1104624000 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-2 } {Sun Sunday 04 2004 7 53 0} -test clock-10.32 {ISO week-based calendar 2005-W01-1} { +test clock-10.32 {ISO week-based calendar 2005-W01-1} {percentG} { clock format 1104710400 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-3 } {Mon Monday 05 2005 1 01 1} -test clock-10.33 {ISO week-based calendar 2005-W01-7} { +test clock-10.33 {ISO week-based calendar 2005-W01-7} {percentG} { clock format 1105228800 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-9 } {Sun Sunday 05 2005 7 01 0} -test clock-10.34 {ISO week-based calendar 2005-W02-1} { +test clock-10.34 {ISO week-based calendar 2005-W02-1} {percentG} { clock format 1105315200 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-10 } {Mon Monday 05 2005 1 02 1} -test clock-10.35 {ISO week-based calendar 2005-W52-1} { +test clock-10.35 {ISO week-based calendar 2005-W52-1} {percentG} { clock format 1135555200 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-12-26 } {Mon Monday 05 2005 1 52 1} -test clock-10.36 {ISO week-based calendar 2005-W52-6} { +test clock-10.36 {ISO week-based calendar 2005-W52-6} {percentG} { clock format 1135987200 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-12-31 } {Sat Saturday 05 2005 6 52 6} -test clock-10.37 {ISO week-based calendar 2005-W52-7} { +test clock-10.37 {ISO week-based calendar 2005-W52-7} {percentG} { clock format 1136073600 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-1 } {Sun Sunday 05 2005 7 52 0} -test clock-10.38 {ISO week-based calendar 2006-W01-1} { +test clock-10.38 {ISO week-based calendar 2006-W01-1} {percentG} { clock format 1136160000 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-2 } {Mon Monday 06 2006 1 01 1} -test clock-10.39 {ISO week-based calendar 2006-W01-7} { +test clock-10.39 {ISO week-based calendar 2006-W01-7} {percentG} { clock format 1136678400 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-8 } {Sun Sunday 06 2006 7 01 0} -test clock-10.40 {ISO week-based calendar 2006-W02-1} { +test clock-10.40 {ISO week-based calendar 2006-W02-1} {percentG} { clock format 1136764800 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-9 } {Mon Monday 06 2006 1 02 1} -test clock-10.41 {ISO week-based calendar 2009-W52-1} { +test clock-10.41 {ISO week-based calendar 2009-W52-1} {percentG} { clock format 1261353600 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-21 } {Mon Monday 09 2009 1 52 1} -test clock-10.42 {ISO week-based calendar 2009-W52-7} { +test clock-10.42 {ISO week-based calendar 2009-W52-7} {percentG} { clock format 1261872000 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-27 } {Sun Sunday 09 2009 7 52 0} -test clock-10.43 {ISO week-based calendar 2009-W53-1} { +test clock-10.43 {ISO week-based calendar 2009-W53-1} {percentG} { clock format 1261958400 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-28 } {Mon Monday 09 2009 1 53 1} -test clock-10.44 {ISO week-based calendar 2009-W53-4} { +test clock-10.44 {ISO week-based calendar 2009-W53-4} {percentG} { clock format 1262217600 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-31 } {Thu Thursday 09 2009 4 53 4} -test clock-10.45 {ISO week-based calendar 2009-W53-5} { +test clock-10.45 {ISO week-based calendar 2009-W53-5} {percentG} { clock format 1262304000 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-1 } {Fri Friday 09 2009 5 53 5} -test clock-10.46 {ISO week-based calendar 2009-W53-7} { +test clock-10.46 {ISO week-based calendar 2009-W53-7} {percentG} { clock format 1262476800 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-3 } {Sun Sunday 09 2009 7 53 0} -test clock-10.47 {ISO week-based calendar 2010-W01-1} { +test clock-10.47 {ISO week-based calendar 2010-W01-1} {percentG} { clock format 1262563200 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-4 } {Mon Monday 10 2010 1 01 1} -test clock-10.48 {ISO week-based calendar 2010-W01-7} { +test clock-10.48 {ISO week-based calendar 2010-W01-7} {percentG} { clock format 1263081600 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-10 } {Sun Sunday 10 2010 7 01 0} -test clock-10.49 {ISO week-based calendar 2010-W02-1} { +test clock-10.49 {ISO week-based calendar 2010-W02-1} {percentG} { clock format 1263168000 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-11 } {Mon Monday 10 2010 1 02 1} -- cgit v0.12 From 7cdb9381ace2de8072be890f8225e4bbb21425bd Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Thu, 27 May 2004 18:43:19 +0000 Subject: * tests/clock.test: Commented clock-9.1 that the test will fail if strftime doesn't do %s. Modernized the use of test constraints. --- tests/clock.test | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/clock.test b/tests/clock.test index 5c01e5e..2599dd7 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.22.2.4 2004/05/27 18:25:46 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.22.2.5 2004/05/27 18:43:19 kennykb Exp $ set env(LC_TIME) POSIX @@ -465,11 +465,17 @@ test clock-8.1 {clock scan midnight/gmt range bug 413397} { [clock format [clock scan year -base $5amPST -gmt 1] -format $fmt] } {12/31 12/31} -set ::tcltest::testConstraints(needPST) [expr { +::tcltest::testConstraint needPST [expr { [regexp {^(Pacific.*|P[DS]T)$} [clock format 1 -format %Z]] && ([clock format 1 -format %s] != "%s") }] + test clock-9.1 {%s gmt testing} {needPST} { + + # Note that this test will fail if the strftime on the underlying + # system doesn't support the %s format group. Systems that are known + # to have trouble include the native C libraries on AIX and HP-UX + # We need PST to guarantee the difference value below, and %s isn't # valid on all OSes (like Solaris). set s 100000 -- cgit v0.12 From 76a3df0646c3adbd6aafd8a405b1ea67bf4df521 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 5 Jun 2004 17:25:39 +0000 Subject: * generic/tcl.h: Corrected Tcl_WideInt declarations so that the mingw build works again. * generic/tclInt.decls: Changes to the tests for * generic/tclIntPlatDecls.h: clock frequency in Tcl_WinTime * generic/tclStubInit.c: so that any clock frequency * tests/platform.test (platform-1.3): is accepted provided that * win/tclWin32Dll.c (TclWinCPUID): all CPU's in the system share * win/tclWinTest.c (TestwincpuidCmd): a common chip, and hence, * win/tclWinTime.c (Tcl_GetTime): presumably, a common clock. This change necessitated a small burst of assembly code to read CPU ID information, which was added as TclWinCPUID in the internal Stubs. To test this code in the common case of a single-processor machine, a 'testwincpuid' command was added to tclWinTest.c, and a test case in platform.test. Thanks to Jeff Godfrey and Richard Suchenwirth for reporting this bug. [Bug #976722] --- ChangeLog | 18 + generic/tcl.h | 11 +- generic/tclDecls.h | 8284 ++++++++++++++++++++++----------------------- generic/tclInt.decls | 6 +- generic/tclIntDecls.h | 2724 +++++++-------- generic/tclIntPlatDecls.h | 1178 +++---- generic/tclPlatDecls.h | 394 +-- generic/tclStubInit.c | 1883 ++++++----- tests/platform.test | 20 + win/tclWin32Dll.c | 151 +- win/tclWinTest.c | 66 +- win/tclWinTime.c | 32 +- 12 files changed, 7532 insertions(+), 7235 deletions(-) diff --git a/ChangeLog b/ChangeLog index 41f9b16..5f4f169 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2004-06-05 Kevin B. Kenny + + * generic/tcl.h: Corrected Tcl_WideInt declarations so that the mingw + build works again. + * generic/tclInt.decls: Changes to the tests for + * generic/tclIntPlatDecls.h: clock frequency in Tcl_WinTime + * generic/tclStubInit.c: so that any clock frequency + * tests/platform.test (platform-1.3): is accepted provided that + * win/tclWin32Dll.c (TclWinCPUID): all CPU's in the system share + * win/tclWinTest.c (TestwincpuidCmd): a common chip, and hence, + * win/tclWinTime.c (Tcl_GetTime): presumably, a common clock. + This change necessitated a small burst of assembly code to read CPU ID + information, which was added as TclWinCPUID in the internal Stubs. To + test this code in the common case of a single-processor machine, a + 'testwincpuid' command was added to tclWinTest.c, and a test case in + platform.test. Thanks to Jeff Godfrey and Richard Suchenwirth for + reporting this bug. [Bug #976722] + 2004-05-27 Kevin B. Kenny * tests/clock.test: Added a single test for the presence of %G diff --git a/generic/tcl.h b/generic/tcl.h index 68f9ee6..dd214de 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.11 2004/02/13 01:38:00 hobbs Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.12 2004/06/05 17:25:39 kennykb Exp $ */ #ifndef _TCL @@ -352,11 +352,16 @@ typedef long LONG; */ #if !defined(TCL_WIDE_INT_TYPE)&&!defined(TCL_WIDE_INT_IS_LONG) -# if defined(__CYGWIN__) +# if defined(__GNUC__) # define TCL_WIDE_INT_TYPE long long +# if defined(__WIN32__) && !defined(__CYGWIN__) +# define TCL_LL_MODIFIER "I64" +# define TCL_LL_MODIFIER_SIZE 3 +# else # define TCL_LL_MODIFIER "L" -typedef struct stat Tcl_StatBuf; # define TCL_LL_MODIFIER_SIZE 1 +# endif +typedef struct stat Tcl_StatBuf; # elif defined(__WIN32__) # define TCL_WIDE_INT_TYPE __int64 # ifdef __BORLANDC__ diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 27f36b4..643a044 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -1,4142 +1,4142 @@ -/* - * tclDecls.h -- - * - * Declarations of functions in the platform independent public Tcl API. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclDecls.h,v 1.93.2.3 2004/05/17 16:25:12 dgp Exp $ - */ - -#ifndef _TCLDECLS -#define _TCLDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tcl.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -/* 0 */ -EXTERN int Tcl_PkgProvideEx _ANSI_ARGS_((Tcl_Interp* interp, - CONST char* name, CONST char* version, - ClientData clientData)); -/* 1 */ -EXTERN CONST84_RETURN char * Tcl_PkgRequireEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - CONST char * version, int exact, - ClientData * clientDataPtr)); -/* 2 */ -EXTERN void Tcl_Panic _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); -/* 3 */ -EXTERN char * Tcl_Alloc _ANSI_ARGS_((unsigned int size)); -/* 4 */ -EXTERN void Tcl_Free _ANSI_ARGS_((char * ptr)); -/* 5 */ -EXTERN char * Tcl_Realloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* 6 */ -EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, - CONST char * file, int line)); -/* 7 */ -EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char * ptr, - CONST char * file, int line)); -/* 8 */ -EXTERN char * Tcl_DbCkrealloc _ANSI_ARGS_((char * ptr, - unsigned int size, CONST char * file, - int line)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 9 */ -EXTERN void Tcl_CreateFileHandler _ANSI_ARGS_((int fd, int mask, - Tcl_FileProc * proc, ClientData clientData)); -#endif /* UNIX */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 10 */ -EXTERN void Tcl_DeleteFileHandler _ANSI_ARGS_((int fd)); -#endif /* UNIX */ -/* 11 */ -EXTERN void Tcl_SetTimer _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 12 */ -EXTERN void Tcl_Sleep _ANSI_ARGS_((int ms)); -/* 13 */ -EXTERN int Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 14 */ -EXTERN int Tcl_AppendAllObjTypes _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr)); -/* 15 */ -EXTERN void Tcl_AppendStringsToObj _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); -/* 16 */ -EXTERN void Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj* objPtr, - CONST char* bytes, int length)); -/* 17 */ -EXTERN Tcl_Obj * Tcl_ConcatObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST objv[])); -/* 18 */ -EXTERN int Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); -/* 19 */ -EXTERN void Tcl_DbDecrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 20 */ -EXTERN void Tcl_DbIncrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 21 */ -EXTERN int Tcl_DbIsShared _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 22 */ -EXTERN Tcl_Obj * Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue, - CONST char * file, int line)); -/* 23 */ -EXTERN Tcl_Obj * Tcl_DbNewByteArrayObj _ANSI_ARGS_(( - CONST unsigned char * bytes, int length, - CONST char * file, int line)); -/* 24 */ -EXTERN Tcl_Obj * Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue, - CONST char * file, int line)); -/* 25 */ -EXTERN Tcl_Obj * Tcl_DbNewListObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST * objv, CONST char * file, - int line)); -/* 26 */ -EXTERN Tcl_Obj * Tcl_DbNewLongObj _ANSI_ARGS_((long longValue, - CONST char * file, int line)); -/* 27 */ -EXTERN Tcl_Obj * Tcl_DbNewObj _ANSI_ARGS_((CONST char * file, - int line)); -/* 28 */ -EXTERN Tcl_Obj * Tcl_DbNewStringObj _ANSI_ARGS_((CONST char * bytes, - int length, CONST char * file, int line)); -/* 29 */ -EXTERN Tcl_Obj * Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 30 */ -EXTERN void TclFreeObj _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 31 */ -EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * boolPtr)); -/* 32 */ -EXTERN int Tcl_GetBooleanFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - int * boolPtr)); -/* 33 */ -EXTERN unsigned char * Tcl_GetByteArrayFromObj _ANSI_ARGS_(( - Tcl_Obj * objPtr, int * lengthPtr)); -/* 34 */ -EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, double * doublePtr)); -/* 35 */ -EXTERN int Tcl_GetDoubleFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - double * doublePtr)); -/* 36 */ -EXTERN int Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, CONST84 char ** tablePtr, - CONST char * msg, int flags, int * indexPtr)); -/* 37 */ -EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * intPtr)); -/* 38 */ -EXTERN int Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int * intPtr)); -/* 39 */ -EXTERN int Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, long * longPtr)); -/* 40 */ -EXTERN Tcl_ObjType * Tcl_GetObjType _ANSI_ARGS_((CONST char * typeName)); -/* 41 */ -EXTERN char * Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int * lengthPtr)); -/* 42 */ -EXTERN void Tcl_InvalidateStringRep _ANSI_ARGS_(( - Tcl_Obj * objPtr)); -/* 43 */ -EXTERN int Tcl_ListObjAppendList _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - Tcl_Obj * elemListPtr)); -/* 44 */ -EXTERN int Tcl_ListObjAppendElement _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - Tcl_Obj * objPtr)); -/* 45 */ -EXTERN int Tcl_ListObjGetElements _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - int * objcPtr, Tcl_Obj *** objvPtr)); -/* 46 */ -EXTERN int Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int index, - Tcl_Obj ** objPtrPtr)); -/* 47 */ -EXTERN int Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int * lengthPtr)); -/* 48 */ -EXTERN int Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int first, int count, - int objc, Tcl_Obj *CONST objv[])); -/* 49 */ -EXTERN Tcl_Obj * Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue)); -/* 50 */ -EXTERN Tcl_Obj * Tcl_NewByteArrayObj _ANSI_ARGS_(( - CONST unsigned char* bytes, int length)); -/* 51 */ -EXTERN Tcl_Obj * Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue)); -/* 52 */ -EXTERN Tcl_Obj * Tcl_NewIntObj _ANSI_ARGS_((int intValue)); -/* 53 */ -EXTERN Tcl_Obj * Tcl_NewListObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST objv[])); -/* 54 */ -EXTERN Tcl_Obj * Tcl_NewLongObj _ANSI_ARGS_((long longValue)); -/* 55 */ -EXTERN Tcl_Obj * Tcl_NewObj _ANSI_ARGS_((void)); -/* 56 */ -EXTERN Tcl_Obj * Tcl_NewStringObj _ANSI_ARGS_((CONST char * bytes, - int length)); -/* 57 */ -EXTERN void Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int boolValue)); -/* 58 */ -EXTERN unsigned char * Tcl_SetByteArrayLength _ANSI_ARGS_((Tcl_Obj * objPtr, - int length)); -/* 59 */ -EXTERN void Tcl_SetByteArrayObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST unsigned char * bytes, int length)); -/* 60 */ -EXTERN void Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj * objPtr, - double doubleValue)); -/* 61 */ -EXTERN void Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int intValue)); -/* 62 */ -EXTERN void Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int objc, Tcl_Obj *CONST objv[])); -/* 63 */ -EXTERN void Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj * objPtr, - long longValue)); -/* 64 */ -EXTERN void Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj * objPtr, - int length)); -/* 65 */ -EXTERN void Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj* objPtr, - CONST char* bytes, int length)); -/* 66 */ -EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * message)); -/* 67 */ -EXTERN void Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * message, int length)); -/* 68 */ -EXTERN void Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp * interp)); -/* 69 */ -EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 70 */ -EXTERN void Tcl_AppendResult _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 71 */ -EXTERN Tcl_AsyncHandler Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc * proc, - ClientData clientData)); -/* 72 */ -EXTERN void Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async)); -/* 73 */ -EXTERN int Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int code)); -/* 74 */ -EXTERN void Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async)); -/* 75 */ -EXTERN int Tcl_AsyncReady _ANSI_ARGS_((void)); -/* 76 */ -EXTERN void Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp * interp)); -/* 77 */ -EXTERN char Tcl_Backslash _ANSI_ARGS_((CONST char * src, - int * readPtr)); -/* 78 */ -EXTERN int Tcl_BadChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * optionName, - CONST char * optionList)); -/* 79 */ -EXTERN void Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 80 */ -EXTERN void Tcl_CancelIdleCall _ANSI_ARGS_(( - Tcl_IdleProc * idleProc, - ClientData clientData)); -/* 81 */ -EXTERN int Tcl_Close _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 82 */ -EXTERN int Tcl_CommandComplete _ANSI_ARGS_((CONST char * cmd)); -/* 83 */ -EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv)); -/* 84 */ -EXTERN int Tcl_ConvertElement _ANSI_ARGS_((CONST char * src, - char * dst, int flags)); -/* 85 */ -EXTERN int Tcl_ConvertCountedElement _ANSI_ARGS_(( - CONST char * src, int length, char * dst, - int flags)); -/* 86 */ -EXTERN int Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp * slave, - CONST char * slaveCmd, Tcl_Interp * target, - CONST char * targetCmd, int argc, - CONST84 char * CONST * argv)); -/* 87 */ -EXTERN int Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp * slave, - CONST char * slaveCmd, Tcl_Interp * target, - CONST char * targetCmd, int objc, - Tcl_Obj *CONST objv[])); -/* 88 */ -EXTERN Tcl_Channel Tcl_CreateChannel _ANSI_ARGS_(( - Tcl_ChannelType * typePtr, - CONST char * chanName, - ClientData instanceData, int mask)); -/* 89 */ -EXTERN void Tcl_CreateChannelHandler _ANSI_ARGS_(( - Tcl_Channel chan, int mask, - Tcl_ChannelProc * proc, - ClientData clientData)); -/* 90 */ -EXTERN void Tcl_CreateCloseHandler _ANSI_ARGS_((Tcl_Channel chan, - Tcl_CloseProc * proc, ClientData clientData)); -/* 91 */ -EXTERN Tcl_Command Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, Tcl_CmdProc * proc, - ClientData clientData, - Tcl_CmdDeleteProc * deleteProc)); -/* 92 */ -EXTERN void Tcl_CreateEventSource _ANSI_ARGS_(( - Tcl_EventSetupProc * setupProc, - Tcl_EventCheckProc * checkProc, - ClientData clientData)); -/* 93 */ -EXTERN void Tcl_CreateExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 94 */ -EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); -/* 95 */ -EXTERN void Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, int numArgs, - Tcl_ValueType * argTypes, - Tcl_MathProc * proc, ClientData clientData)); -/* 96 */ -EXTERN Tcl_Command Tcl_CreateObjCommand _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * cmdName, - Tcl_ObjCmdProc * proc, ClientData clientData, - Tcl_CmdDeleteProc * deleteProc)); -/* 97 */ -EXTERN Tcl_Interp * Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveName, int isSafe)); -/* 98 */ -EXTERN Tcl_TimerToken Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds, - Tcl_TimerProc * proc, ClientData clientData)); -/* 99 */ -EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp * interp, - int level, Tcl_CmdTraceProc * proc, - ClientData clientData)); -/* 100 */ -EXTERN void Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name)); -/* 101 */ -EXTERN void Tcl_DeleteChannelHandler _ANSI_ARGS_(( - Tcl_Channel chan, Tcl_ChannelProc * proc, - ClientData clientData)); -/* 102 */ -EXTERN void Tcl_DeleteCloseHandler _ANSI_ARGS_((Tcl_Channel chan, - Tcl_CloseProc * proc, ClientData clientData)); -/* 103 */ -EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName)); -/* 104 */ -EXTERN int Tcl_DeleteCommandFromToken _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command)); -/* 105 */ -EXTERN void Tcl_DeleteEvents _ANSI_ARGS_(( - Tcl_EventDeleteProc * proc, - ClientData clientData)); -/* 106 */ -EXTERN void Tcl_DeleteEventSource _ANSI_ARGS_(( - Tcl_EventSetupProc * setupProc, - Tcl_EventCheckProc * checkProc, - ClientData clientData)); -/* 107 */ -EXTERN void Tcl_DeleteExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 108 */ -EXTERN void Tcl_DeleteHashEntry _ANSI_ARGS_(( - Tcl_HashEntry * entryPtr)); -/* 109 */ -EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 110 */ -EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp * interp)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 111 */ -EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, - Tcl_Pid * pidPtr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 111 */ -EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, - Tcl_Pid * pidPtr)); -#endif /* __WIN32__ */ -/* 112 */ -EXTERN void Tcl_DeleteTimerHandler _ANSI_ARGS_(( - Tcl_TimerToken token)); -/* 113 */ -EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Trace trace)); -/* 114 */ -EXTERN void Tcl_DontCallWhenDeleted _ANSI_ARGS_(( - Tcl_Interp * interp, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 115 */ -EXTERN int Tcl_DoOneEvent _ANSI_ARGS_((int flags)); -/* 116 */ -EXTERN void Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc * proc, - ClientData clientData)); -/* 117 */ -EXTERN char * Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString * dsPtr, - CONST char * str, int length)); -/* 118 */ -EXTERN char * Tcl_DStringAppendElement _ANSI_ARGS_(( - Tcl_DString * dsPtr, CONST char * string)); -/* 119 */ -EXTERN void Tcl_DStringEndSublist _ANSI_ARGS_(( - Tcl_DString * dsPtr)); -/* 120 */ -EXTERN void Tcl_DStringFree _ANSI_ARGS_((Tcl_DString * dsPtr)); -/* 121 */ -EXTERN void Tcl_DStringGetResult _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_DString * dsPtr)); -/* 122 */ -EXTERN void Tcl_DStringInit _ANSI_ARGS_((Tcl_DString * dsPtr)); -/* 123 */ -EXTERN void Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * dsPtr)); -/* 124 */ -EXTERN void Tcl_DStringSetLength _ANSI_ARGS_(( - Tcl_DString * dsPtr, int length)); -/* 125 */ -EXTERN void Tcl_DStringStartSublist _ANSI_ARGS_(( - Tcl_DString * dsPtr)); -/* 126 */ -EXTERN int Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan)); -/* 127 */ -EXTERN CONST84_RETURN char * Tcl_ErrnoId _ANSI_ARGS_((void)); -/* 128 */ -EXTERN CONST84_RETURN char * Tcl_ErrnoMsg _ANSI_ARGS_((int err)); -/* 129 */ -EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 130 */ -EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * fileName)); -/* 131 */ -EXTERN int Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr)); -/* 132 */ -EXTERN void Tcl_EventuallyFree _ANSI_ARGS_(( - ClientData clientData, - Tcl_FreeProc * freeProc)); -/* 133 */ -EXTERN void Tcl_Exit _ANSI_ARGS_((int status)); -/* 134 */ -EXTERN int Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * hiddenCmdToken, - CONST char * cmdName)); -/* 135 */ -EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * ptr)); -/* 136 */ -EXTERN int Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int * ptr)); -/* 137 */ -EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, double * ptr)); -/* 138 */ -EXTERN int Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, double * ptr)); -/* 139 */ -EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, long * ptr)); -/* 140 */ -EXTERN int Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, long * ptr)); -/* 141 */ -EXTERN int Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); -/* 142 */ -EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 143 */ -EXTERN void Tcl_Finalize _ANSI_ARGS_((void)); -/* 144 */ -EXTERN void Tcl_FindExecutable _ANSI_ARGS_((CONST char * argv0)); -/* 145 */ -EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, - Tcl_HashSearch * searchPtr)); -/* 146 */ -EXTERN int Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan)); -/* 147 */ -EXTERN void Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp * interp)); -/* 148 */ -EXTERN int Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveCmd, - Tcl_Interp ** targetInterpPtr, - CONST84 char ** targetCmdPtr, int * argcPtr, - CONST84 char *** argvPtr)); -/* 149 */ -EXTERN int Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveCmd, - Tcl_Interp ** targetInterpPtr, - CONST84 char ** targetCmdPtr, int * objcPtr, - Tcl_Obj *** objv)); -/* 150 */ -EXTERN ClientData Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_InterpDeleteProc ** procPtr)); -/* 151 */ -EXTERN Tcl_Channel Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * chanName, int * modePtr)); -/* 152 */ -EXTERN int Tcl_GetChannelBufferSize _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 153 */ -EXTERN int Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan, - int direction, ClientData * handlePtr)); -/* 154 */ -EXTERN ClientData Tcl_GetChannelInstanceData _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 155 */ -EXTERN int Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan)); -/* 156 */ -EXTERN CONST84_RETURN char * Tcl_GetChannelName _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 157 */ -EXTERN int Tcl_GetChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan, - CONST char * optionName, Tcl_DString * dsPtr)); -/* 158 */ -EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan)); -/* 159 */ -EXTERN int Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, Tcl_CmdInfo * infoPtr)); -/* 160 */ -EXTERN CONST84_RETURN char * Tcl_GetCommandName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command)); -/* 161 */ -EXTERN int Tcl_GetErrno _ANSI_ARGS_((void)); -/* 162 */ -EXTERN CONST84_RETURN char * Tcl_GetHostName _ANSI_ARGS_((void)); -/* 163 */ -EXTERN int Tcl_GetInterpPath _ANSI_ARGS_(( - Tcl_Interp * askInterp, - Tcl_Interp * slaveInterp)); -/* 164 */ -EXTERN Tcl_Interp * Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp * interp)); -/* 165 */ -EXTERN CONST char * Tcl_GetNameOfExecutable _ANSI_ARGS_((void)); -/* 166 */ -EXTERN Tcl_Obj * Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp * interp)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 167 */ -EXTERN int Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int forWriting, - int checkUsage, ClientData * filePtr)); -#endif /* UNIX */ -/* 168 */ -EXTERN Tcl_PathType Tcl_GetPathType _ANSI_ARGS_((CONST char * path)); -/* 169 */ -EXTERN int Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan, - Tcl_DString * dsPtr)); -/* 170 */ -EXTERN int Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan, - Tcl_Obj * objPtr)); -/* 171 */ -EXTERN int Tcl_GetServiceMode _ANSI_ARGS_((void)); -/* 172 */ -EXTERN Tcl_Interp * Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveName)); -/* 173 */ -EXTERN Tcl_Channel Tcl_GetStdChannel _ANSI_ARGS_((int type)); -/* 174 */ -EXTERN CONST84_RETURN char * Tcl_GetStringResult _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 175 */ -EXTERN CONST84_RETURN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags)); -/* 176 */ -EXTERN CONST84_RETURN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 177 */ -EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * command)); -/* 178 */ -EXTERN int Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr)); -/* 179 */ -EXTERN int Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, - CONST char * hiddenCmdToken)); -/* 180 */ -EXTERN int Tcl_Init _ANSI_ARGS_((Tcl_Interp * interp)); -/* 181 */ -EXTERN void Tcl_InitHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, int keyType)); -/* 182 */ -EXTERN int Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan)); -/* 183 */ -EXTERN int Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 184 */ -EXTERN int Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp * interp)); -/* 185 */ -EXTERN int Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp * interp)); -/* 186 */ -EXTERN char * Tcl_JoinPath _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv, - Tcl_DString * resultPtr)); -/* 187 */ -EXTERN int Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, char * addr, int type)); -/* Slot 188 is reserved */ -/* 189 */ -EXTERN Tcl_Channel Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle, - int mode)); -/* 190 */ -EXTERN int Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp * interp)); -/* 191 */ -EXTERN Tcl_Channel Tcl_MakeTcpClientChannel _ANSI_ARGS_(( - ClientData tcpSocket)); -/* 192 */ -EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv)); -/* 193 */ -EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( - Tcl_HashSearch * searchPtr)); -/* 194 */ -EXTERN void Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel, - int mask)); -/* 195 */ -EXTERN Tcl_Obj * Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - int flags)); -/* 196 */ -EXTERN Tcl_Obj * Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - Tcl_Obj * newValuePtr, int flags)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 197 */ -EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( - Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 197 */ -EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( - Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -#endif /* __WIN32__ */ -/* 198 */ -EXTERN Tcl_Channel Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * fileName, - CONST char * modeString, int permissions)); -/* 199 */ -EXTERN Tcl_Channel Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp * interp, - int port, CONST char * address, - CONST char * myaddr, int myport, int async)); -/* 200 */ -EXTERN Tcl_Channel Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp * interp, - int port, CONST char * host, - Tcl_TcpAcceptProc * acceptProc, - ClientData callbackData)); -/* 201 */ -EXTERN void Tcl_Preserve _ANSI_ARGS_((ClientData data)); -/* 202 */ -EXTERN void Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp * interp, - double value, char * dst)); -/* 203 */ -EXTERN int Tcl_PutEnv _ANSI_ARGS_((CONST char * string)); -/* 204 */ -EXTERN CONST84_RETURN char * Tcl_PosixError _ANSI_ARGS_((Tcl_Interp * interp)); -/* 205 */ -EXTERN void Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event * evPtr, - Tcl_QueuePosition position)); -/* 206 */ -EXTERN int Tcl_Read _ANSI_ARGS_((Tcl_Channel chan, - char * bufPtr, int toRead)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 207 */ -EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 207 */ -EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); -#endif /* __WIN32__ */ -/* 208 */ -EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmd, int flags)); -/* 209 */ -EXTERN int Tcl_RecordAndEvalObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * cmdPtr, - int flags)); -/* 210 */ -EXTERN void Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 211 */ -EXTERN void Tcl_RegisterObjType _ANSI_ARGS_(( - Tcl_ObjType * typePtr)); -/* 212 */ -EXTERN Tcl_RegExp Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 213 */ -EXTERN int Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp regexp, CONST char * str, - CONST char * start)); -/* 214 */ -EXTERN int Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CONST char * pattern)); -/* 215 */ -EXTERN void Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp, - int index, CONST84 char ** startPtr, - CONST84 char ** endPtr)); -/* 216 */ -EXTERN void Tcl_Release _ANSI_ARGS_((ClientData clientData)); -/* 217 */ -EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp * interp)); -/* 218 */ -EXTERN int Tcl_ScanElement _ANSI_ARGS_((CONST char * str, - int * flagPtr)); -/* 219 */ -EXTERN int Tcl_ScanCountedElement _ANSI_ARGS_((CONST char * str, - int length, int * flagPtr)); -/* 220 */ -EXTERN int Tcl_SeekOld _ANSI_ARGS_((Tcl_Channel chan, - int offset, int mode)); -/* 221 */ -EXTERN int Tcl_ServiceAll _ANSI_ARGS_((void)); -/* 222 */ -EXTERN int Tcl_ServiceEvent _ANSI_ARGS_((int flags)); -/* 223 */ -EXTERN void Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 224 */ -EXTERN void Tcl_SetChannelBufferSize _ANSI_ARGS_(( - Tcl_Channel chan, int sz)); -/* 225 */ -EXTERN int Tcl_SetChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan, - CONST char * optionName, - CONST char * newValue)); -/* 226 */ -EXTERN int Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, - CONST Tcl_CmdInfo * infoPtr)); -/* 227 */ -EXTERN void Tcl_SetErrno _ANSI_ARGS_((int err)); -/* 228 */ -EXTERN void Tcl_SetErrorCode _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 229 */ -EXTERN void Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 230 */ -EXTERN void Tcl_SetPanicProc _ANSI_ARGS_(( - Tcl_PanicProc * panicProc)); -/* 231 */ -EXTERN int Tcl_SetRecursionLimit _ANSI_ARGS_(( - Tcl_Interp * interp, int depth)); -/* 232 */ -EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp * interp, - char * str, Tcl_FreeProc * freeProc)); -/* 233 */ -EXTERN int Tcl_SetServiceMode _ANSI_ARGS_((int mode)); -/* 234 */ -EXTERN void Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * errorObjPtr)); -/* 235 */ -EXTERN void Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * resultObjPtr)); -/* 236 */ -EXTERN void Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel, - int type)); -/* 237 */ -EXTERN CONST84_RETURN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, CONST char * newValue, - int flags)); -/* 238 */ -EXTERN CONST84_RETURN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - CONST char * newValue, int flags)); -/* 239 */ -EXTERN CONST84_RETURN char * Tcl_SignalId _ANSI_ARGS_((int sig)); -/* 240 */ -EXTERN CONST84_RETURN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); -/* 241 */ -EXTERN void Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp * interp)); -/* 242 */ -EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * listStr, int * argcPtr, - CONST84 char *** argvPtr)); -/* 243 */ -EXTERN void Tcl_SplitPath _ANSI_ARGS_((CONST char * path, - int * argcPtr, CONST84 char *** argvPtr)); -/* 244 */ -EXTERN void Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * pkgName, - Tcl_PackageInitProc * initProc, - Tcl_PackageInitProc * safeInitProc)); -/* 245 */ -EXTERN int Tcl_StringMatch _ANSI_ARGS_((CONST char * str, - CONST char * pattern)); -/* 246 */ -EXTERN int Tcl_TellOld _ANSI_ARGS_((Tcl_Channel chan)); -/* 247 */ -EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 248 */ -EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 249 */ -EXTERN char * Tcl_TranslateFileName _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_DString * bufferPtr)); -/* 250 */ -EXTERN int Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, - CONST char * str, int len, int atHead)); -/* 251 */ -EXTERN void Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 252 */ -EXTERN int Tcl_UnregisterChannel _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan)); -/* 253 */ -EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags)); -/* 254 */ -EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 255 */ -EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 256 */ -EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 257 */ -EXTERN void Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 258 */ -EXTERN int Tcl_UpVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * frameName, CONST char * varName, - CONST char * localName, int flags)); -/* 259 */ -EXTERN int Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * frameName, CONST char * part1, - CONST char * part2, CONST char * localName, - int flags)); -/* 260 */ -EXTERN int Tcl_VarEval _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 261 */ -EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * procPtr, - ClientData prevClientData)); -/* 262 */ -EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * procPtr, - ClientData prevClientData)); -/* 263 */ -EXTERN int Tcl_Write _ANSI_ARGS_((Tcl_Channel chan, - CONST char * s, int slen)); -/* 264 */ -EXTERN void Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], - CONST char * message)); -/* 265 */ -EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_(( - CONST char * fileName)); -/* 266 */ -EXTERN void Tcl_ValidateAllMemory _ANSI_ARGS_((CONST char * file, - int line)); -/* 267 */ -EXTERN void Tcl_AppendResultVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 268 */ -EXTERN void Tcl_AppendStringsToObjVA _ANSI_ARGS_(( - Tcl_Obj * objPtr, va_list argList)); -/* 269 */ -EXTERN CONST84_RETURN char * Tcl_HashStats _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 270 */ -EXTERN CONST84_RETURN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CONST84 char ** termPtr)); -/* 271 */ -EXTERN CONST84_RETURN char * Tcl_PkgPresent _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version, - int exact)); -/* 272 */ -EXTERN CONST84_RETURN char * Tcl_PkgPresentEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - CONST char * version, int exact, - ClientData * clientDataPtr)); -/* 273 */ -EXTERN int Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version)); -/* 274 */ -EXTERN CONST84_RETURN char * Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version, - int exact)); -/* 275 */ -EXTERN void Tcl_SetErrorCodeVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 276 */ -EXTERN int Tcl_VarEvalVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 277 */ -EXTERN Tcl_Pid Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, - int options)); -/* 278 */ -EXTERN void Tcl_PanicVA _ANSI_ARGS_((CONST char * format, - va_list argList)); -/* 279 */ -EXTERN void Tcl_GetVersion _ANSI_ARGS_((int * major, int * minor, - int * patchLevel, int * type)); -/* 280 */ -EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp * interp)); -/* 281 */ -EXTERN Tcl_Channel Tcl_StackChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_ChannelType * typePtr, - ClientData instanceData, int mask, - Tcl_Channel prevChan)); -/* 282 */ -EXTERN int Tcl_UnstackChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 283 */ -EXTERN Tcl_Channel Tcl_GetStackedChannel _ANSI_ARGS_((Tcl_Channel chan)); -/* 284 */ -EXTERN void Tcl_SetMainLoop _ANSI_ARGS_((Tcl_MainLoopProc * proc)); -/* Slot 285 is reserved */ -/* 286 */ -EXTERN void Tcl_AppendObjToObj _ANSI_ARGS_((Tcl_Obj * objPtr, - Tcl_Obj * appendObjPtr)); -/* 287 */ -EXTERN Tcl_Encoding Tcl_CreateEncoding _ANSI_ARGS_(( - Tcl_EncodingType * typePtr)); -/* 288 */ -EXTERN void Tcl_CreateThreadExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 289 */ -EXTERN void Tcl_DeleteThreadExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 290 */ -EXTERN void Tcl_DiscardResult _ANSI_ARGS_(( - Tcl_SavedResult * statePtr)); -/* 291 */ -EXTERN int Tcl_EvalEx _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * script, int numBytes, int flags)); -/* 292 */ -EXTERN int Tcl_EvalObjv _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 293 */ -EXTERN int Tcl_EvalObjEx _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int flags)); -/* 294 */ -EXTERN void Tcl_ExitThread _ANSI_ARGS_((int status)); -/* 295 */ -EXTERN int Tcl_ExternalToUtf _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Encoding encoding, CONST char * src, - int srcLen, int flags, - Tcl_EncodingState * statePtr, char * dst, - int dstLen, int * srcReadPtr, - int * dstWrotePtr, int * dstCharsPtr)); -/* 296 */ -EXTERN char * Tcl_ExternalToUtfDString _ANSI_ARGS_(( - Tcl_Encoding encoding, CONST char * src, - int srcLen, Tcl_DString * dsPtr)); -/* 297 */ -EXTERN void Tcl_FinalizeThread _ANSI_ARGS_((void)); -/* 298 */ -EXTERN void Tcl_FinalizeNotifier _ANSI_ARGS_(( - ClientData clientData)); -/* 299 */ -EXTERN void Tcl_FreeEncoding _ANSI_ARGS_((Tcl_Encoding encoding)); -/* 300 */ -EXTERN Tcl_ThreadId Tcl_GetCurrentThread _ANSI_ARGS_((void)); -/* 301 */ -EXTERN Tcl_Encoding Tcl_GetEncoding _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name)); -/* 302 */ -EXTERN CONST84_RETURN char * Tcl_GetEncodingName _ANSI_ARGS_(( - Tcl_Encoding encoding)); -/* 303 */ -EXTERN void Tcl_GetEncodingNames _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 304 */ -EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - CONST VOID * tablePtr, int offset, - CONST char * msg, int flags, int * indexPtr)); -/* 305 */ -EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_(( - Tcl_ThreadDataKey * keyPtr, int size)); -/* 306 */ -EXTERN Tcl_Obj * Tcl_GetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 307 */ -EXTERN ClientData Tcl_InitNotifier _ANSI_ARGS_((void)); -/* 308 */ -EXTERN void Tcl_MutexLock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); -/* 309 */ -EXTERN void Tcl_MutexUnlock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); -/* 310 */ -EXTERN void Tcl_ConditionNotify _ANSI_ARGS_(( - Tcl_Condition * condPtr)); -/* 311 */ -EXTERN void Tcl_ConditionWait _ANSI_ARGS_(( - Tcl_Condition * condPtr, - Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); -/* 312 */ -EXTERN int Tcl_NumUtfChars _ANSI_ARGS_((CONST char * src, - int len)); -/* 313 */ -EXTERN int Tcl_ReadChars _ANSI_ARGS_((Tcl_Channel channel, - Tcl_Obj * objPtr, int charsToRead, - int appendFlag)); -/* 314 */ -EXTERN void Tcl_RestoreResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_SavedResult * statePtr)); -/* 315 */ -EXTERN void Tcl_SaveResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_SavedResult * statePtr)); -/* 316 */ -EXTERN int Tcl_SetSystemEncoding _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name)); -/* 317 */ -EXTERN Tcl_Obj * Tcl_SetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - Tcl_Obj * newValuePtr, int flags)); -/* 318 */ -EXTERN void Tcl_ThreadAlert _ANSI_ARGS_((Tcl_ThreadId threadId)); -/* 319 */ -EXTERN void Tcl_ThreadQueueEvent _ANSI_ARGS_(( - Tcl_ThreadId threadId, Tcl_Event* evPtr, - Tcl_QueuePosition position)); -/* 320 */ -EXTERN Tcl_UniChar Tcl_UniCharAtIndex _ANSI_ARGS_((CONST char * src, - int index)); -/* 321 */ -EXTERN Tcl_UniChar Tcl_UniCharToLower _ANSI_ARGS_((int ch)); -/* 322 */ -EXTERN Tcl_UniChar Tcl_UniCharToTitle _ANSI_ARGS_((int ch)); -/* 323 */ -EXTERN Tcl_UniChar Tcl_UniCharToUpper _ANSI_ARGS_((int ch)); -/* 324 */ -EXTERN int Tcl_UniCharToUtf _ANSI_ARGS_((int ch, char * buf)); -/* 325 */ -EXTERN CONST84_RETURN char * Tcl_UtfAtIndex _ANSI_ARGS_((CONST char * src, - int index)); -/* 326 */ -EXTERN int Tcl_UtfCharComplete _ANSI_ARGS_((CONST char * src, - int len)); -/* 327 */ -EXTERN int Tcl_UtfBackslash _ANSI_ARGS_((CONST char * src, - int * readPtr, char * dst)); -/* 328 */ -EXTERN CONST84_RETURN char * Tcl_UtfFindFirst _ANSI_ARGS_((CONST char * src, - int ch)); -/* 329 */ -EXTERN CONST84_RETURN char * Tcl_UtfFindLast _ANSI_ARGS_((CONST char * src, - int ch)); -/* 330 */ -EXTERN CONST84_RETURN char * Tcl_UtfNext _ANSI_ARGS_((CONST char * src)); -/* 331 */ -EXTERN CONST84_RETURN char * Tcl_UtfPrev _ANSI_ARGS_((CONST char * src, - CONST char * start)); -/* 332 */ -EXTERN int Tcl_UtfToExternal _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Encoding encoding, CONST char * src, - int srcLen, int flags, - Tcl_EncodingState * statePtr, char * dst, - int dstLen, int * srcReadPtr, - int * dstWrotePtr, int * dstCharsPtr)); -/* 333 */ -EXTERN char * Tcl_UtfToExternalDString _ANSI_ARGS_(( - Tcl_Encoding encoding, CONST char * src, - int srcLen, Tcl_DString * dsPtr)); -/* 334 */ -EXTERN int Tcl_UtfToLower _ANSI_ARGS_((char * src)); -/* 335 */ -EXTERN int Tcl_UtfToTitle _ANSI_ARGS_((char * src)); -/* 336 */ -EXTERN int Tcl_UtfToUniChar _ANSI_ARGS_((CONST char * src, - Tcl_UniChar * chPtr)); -/* 337 */ -EXTERN int Tcl_UtfToUpper _ANSI_ARGS_((char * src)); -/* 338 */ -EXTERN int Tcl_WriteChars _ANSI_ARGS_((Tcl_Channel chan, - CONST char * src, int srcLen)); -/* 339 */ -EXTERN int Tcl_WriteObj _ANSI_ARGS_((Tcl_Channel chan, - Tcl_Obj * objPtr)); -/* 340 */ -EXTERN char * Tcl_GetString _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 341 */ -EXTERN CONST84_RETURN char * Tcl_GetDefaultEncodingDir _ANSI_ARGS_((void)); -/* 342 */ -EXTERN void Tcl_SetDefaultEncodingDir _ANSI_ARGS_(( - CONST char * path)); -/* 343 */ -EXTERN void Tcl_AlertNotifier _ANSI_ARGS_((ClientData clientData)); -/* 344 */ -EXTERN void Tcl_ServiceModeHook _ANSI_ARGS_((int mode)); -/* 345 */ -EXTERN int Tcl_UniCharIsAlnum _ANSI_ARGS_((int ch)); -/* 346 */ -EXTERN int Tcl_UniCharIsAlpha _ANSI_ARGS_((int ch)); -/* 347 */ -EXTERN int Tcl_UniCharIsDigit _ANSI_ARGS_((int ch)); -/* 348 */ -EXTERN int Tcl_UniCharIsLower _ANSI_ARGS_((int ch)); -/* 349 */ -EXTERN int Tcl_UniCharIsSpace _ANSI_ARGS_((int ch)); -/* 350 */ -EXTERN int Tcl_UniCharIsUpper _ANSI_ARGS_((int ch)); -/* 351 */ -EXTERN int Tcl_UniCharIsWordChar _ANSI_ARGS_((int ch)); -/* 352 */ -EXTERN int Tcl_UniCharLen _ANSI_ARGS_((CONST Tcl_UniChar * str)); -/* 353 */ -EXTERN int Tcl_UniCharNcmp _ANSI_ARGS_((CONST Tcl_UniChar * cs, - CONST Tcl_UniChar * ct, unsigned long n)); -/* 354 */ -EXTERN char * Tcl_UniCharToUtfDString _ANSI_ARGS_(( - CONST Tcl_UniChar * string, int numChars, - Tcl_DString * dsPtr)); -/* 355 */ -EXTERN Tcl_UniChar * Tcl_UtfToUniCharDString _ANSI_ARGS_(( - CONST char * string, int length, - Tcl_DString * dsPtr)); -/* 356 */ -EXTERN Tcl_RegExp Tcl_GetRegExpFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * patObj, - int flags)); -/* 357 */ -EXTERN Tcl_Obj * Tcl_EvalTokens _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Token * tokenPtr, int count)); -/* 358 */ -EXTERN void Tcl_FreeParse _ANSI_ARGS_((Tcl_Parse * parsePtr)); -/* 359 */ -EXTERN void Tcl_LogCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * script, CONST char * command, - int length)); -/* 360 */ -EXTERN int Tcl_ParseBraces _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr, int append, - CONST84 char ** termPtr)); -/* 361 */ -EXTERN int Tcl_ParseCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - int nested, Tcl_Parse * parsePtr)); -/* 362 */ -EXTERN int Tcl_ParseExpr _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr)); -/* 363 */ -EXTERN int Tcl_ParseQuotedString _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * string, - int numBytes, Tcl_Parse * parsePtr, - int append, CONST84 char ** termPtr)); -/* 364 */ -EXTERN int Tcl_ParseVarName _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr, int append)); -/* 365 */ -EXTERN char * Tcl_GetCwd _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * cwdPtr)); -/* 366 */ -EXTERN int Tcl_Chdir _ANSI_ARGS_((CONST char * dirName)); -/* 367 */ -EXTERN int Tcl_Access _ANSI_ARGS_((CONST char * path, int mode)); -/* 368 */ -EXTERN int Tcl_Stat _ANSI_ARGS_((CONST char * path, - struct stat * bufPtr)); -/* 369 */ -EXTERN int Tcl_UtfNcmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 370 */ -EXTERN int Tcl_UtfNcasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 371 */ -EXTERN int Tcl_StringCaseMatch _ANSI_ARGS_((CONST char * str, - CONST char * pattern, int nocase)); -/* 372 */ -EXTERN int Tcl_UniCharIsControl _ANSI_ARGS_((int ch)); -/* 373 */ -EXTERN int Tcl_UniCharIsGraph _ANSI_ARGS_((int ch)); -/* 374 */ -EXTERN int Tcl_UniCharIsPrint _ANSI_ARGS_((int ch)); -/* 375 */ -EXTERN int Tcl_UniCharIsPunct _ANSI_ARGS_((int ch)); -/* 376 */ -EXTERN int Tcl_RegExpExecObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp regexp, Tcl_Obj * objPtr, - int offset, int nmatches, int flags)); -/* 377 */ -EXTERN void Tcl_RegExpGetInfo _ANSI_ARGS_((Tcl_RegExp regexp, - Tcl_RegExpInfo * infoPtr)); -/* 378 */ -EXTERN Tcl_Obj * Tcl_NewUnicodeObj _ANSI_ARGS_(( - CONST Tcl_UniChar * unicode, int numChars)); -/* 379 */ -EXTERN void Tcl_SetUnicodeObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST Tcl_UniChar * unicode, int numChars)); -/* 380 */ -EXTERN int Tcl_GetCharLength _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 381 */ -EXTERN Tcl_UniChar Tcl_GetUniChar _ANSI_ARGS_((Tcl_Obj * objPtr, - int index)); -/* 382 */ -EXTERN Tcl_UniChar * Tcl_GetUnicode _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 383 */ -EXTERN Tcl_Obj * Tcl_GetRange _ANSI_ARGS_((Tcl_Obj * objPtr, - int first, int last)); -/* 384 */ -EXTERN void Tcl_AppendUnicodeToObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST Tcl_UniChar * unicode, int length)); -/* 385 */ -EXTERN int Tcl_RegExpMatchObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * stringObj, Tcl_Obj * patternObj)); -/* 386 */ -EXTERN void Tcl_SetNotifier _ANSI_ARGS_(( - Tcl_NotifierProcs * notifierProcPtr)); -/* 387 */ -EXTERN Tcl_Mutex * Tcl_GetAllocMutex _ANSI_ARGS_((void)); -/* 388 */ -EXTERN int Tcl_GetChannelNames _ANSI_ARGS_((Tcl_Interp * interp)); -/* 389 */ -EXTERN int Tcl_GetChannelNamesEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * pattern)); -/* 390 */ -EXTERN int Tcl_ProcObjCmd _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int objc, - Tcl_Obj *CONST objv[])); -/* 391 */ -EXTERN void Tcl_ConditionFinalize _ANSI_ARGS_(( - Tcl_Condition * condPtr)); -/* 392 */ -EXTERN void Tcl_MutexFinalize _ANSI_ARGS_((Tcl_Mutex * mutex)); -/* 393 */ -EXTERN int Tcl_CreateThread _ANSI_ARGS_((Tcl_ThreadId * idPtr, - Tcl_ThreadCreateProc proc, - ClientData clientData, int stackSize, - int flags)); -/* 394 */ -EXTERN int Tcl_ReadRaw _ANSI_ARGS_((Tcl_Channel chan, - char * dst, int bytesToRead)); -/* 395 */ -EXTERN int Tcl_WriteRaw _ANSI_ARGS_((Tcl_Channel chan, - CONST char * src, int srcLen)); -/* 396 */ -EXTERN Tcl_Channel Tcl_GetTopChannel _ANSI_ARGS_((Tcl_Channel chan)); -/* 397 */ -EXTERN int Tcl_ChannelBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 398 */ -EXTERN CONST84_RETURN char * Tcl_ChannelName _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 399 */ -EXTERN Tcl_ChannelTypeVersion Tcl_ChannelVersion _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 400 */ -EXTERN Tcl_DriverBlockModeProc * Tcl_ChannelBlockModeProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 401 */ -EXTERN Tcl_DriverCloseProc * Tcl_ChannelCloseProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 402 */ -EXTERN Tcl_DriverClose2Proc * Tcl_ChannelClose2Proc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 403 */ -EXTERN Tcl_DriverInputProc * Tcl_ChannelInputProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 404 */ -EXTERN Tcl_DriverOutputProc * Tcl_ChannelOutputProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 405 */ -EXTERN Tcl_DriverSeekProc * Tcl_ChannelSeekProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 406 */ -EXTERN Tcl_DriverSetOptionProc * Tcl_ChannelSetOptionProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 407 */ -EXTERN Tcl_DriverGetOptionProc * Tcl_ChannelGetOptionProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 408 */ -EXTERN Tcl_DriverWatchProc * Tcl_ChannelWatchProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 409 */ -EXTERN Tcl_DriverGetHandleProc * Tcl_ChannelGetHandleProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 410 */ -EXTERN Tcl_DriverFlushProc * Tcl_ChannelFlushProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 411 */ -EXTERN Tcl_DriverHandlerProc * Tcl_ChannelHandlerProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 412 */ -EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId threadId, - int* result)); -/* 413 */ -EXTERN int Tcl_IsChannelShared _ANSI_ARGS_((Tcl_Channel channel)); -/* 414 */ -EXTERN int Tcl_IsChannelRegistered _ANSI_ARGS_(( - Tcl_Interp* interp, Tcl_Channel channel)); -/* 415 */ -EXTERN void Tcl_CutChannel _ANSI_ARGS_((Tcl_Channel channel)); -/* 416 */ -EXTERN void Tcl_SpliceChannel _ANSI_ARGS_((Tcl_Channel channel)); -/* 417 */ -EXTERN void Tcl_ClearChannelHandlers _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 418 */ -EXTERN int Tcl_IsChannelExisting _ANSI_ARGS_(( - CONST char* channelName)); -/* 419 */ -EXTERN int Tcl_UniCharNcasecmp _ANSI_ARGS_(( - CONST Tcl_UniChar * cs, - CONST Tcl_UniChar * ct, unsigned long n)); -/* 420 */ -EXTERN int Tcl_UniCharCaseMatch _ANSI_ARGS_(( - CONST Tcl_UniChar * ustr, - CONST Tcl_UniChar * pattern, int nocase)); -/* 421 */ -EXTERN Tcl_HashEntry * Tcl_FindHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, CONST char * key)); -/* 422 */ -EXTERN Tcl_HashEntry * Tcl_CreateHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, CONST char * key, - int * newPtr)); -/* 423 */ -EXTERN void Tcl_InitCustomHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, int keyType, - Tcl_HashKeyType * typePtr)); -/* 424 */ -EXTERN void Tcl_InitObjHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 425 */ -EXTERN ClientData Tcl_CommandTraceInfo _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * varName, - int flags, Tcl_CommandTraceProc * procPtr, - ClientData prevClientData)); -/* 426 */ -EXTERN int Tcl_TraceCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_CommandTraceProc * proc, - ClientData clientData)); -/* 427 */ -EXTERN void Tcl_UntraceCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_CommandTraceProc * proc, - ClientData clientData)); -/* 428 */ -EXTERN char * Tcl_AttemptAlloc _ANSI_ARGS_((unsigned int size)); -/* 429 */ -EXTERN char * Tcl_AttemptDbCkalloc _ANSI_ARGS_((unsigned int size, - CONST char * file, int line)); -/* 430 */ -EXTERN char * Tcl_AttemptRealloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* 431 */ -EXTERN char * Tcl_AttemptDbCkrealloc _ANSI_ARGS_((char * ptr, - unsigned int size, CONST char * file, - int line)); -/* 432 */ -EXTERN int Tcl_AttemptSetObjLength _ANSI_ARGS_(( - Tcl_Obj * objPtr, int length)); -/* 433 */ -EXTERN Tcl_ThreadId Tcl_GetChannelThread _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 434 */ -EXTERN Tcl_UniChar * Tcl_GetUnicodeFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int * lengthPtr)); -/* 435 */ -EXTERN int Tcl_GetMathFuncInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, int * numArgsPtr, - Tcl_ValueType ** argTypesPtr, - Tcl_MathProc ** procPtr, - ClientData * clientDataPtr)); -/* 436 */ -EXTERN Tcl_Obj * Tcl_ListMathFuncs _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * pattern)); -/* 437 */ -EXTERN Tcl_Obj * Tcl_SubstObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int flags)); -/* 438 */ -EXTERN int Tcl_DetachChannel _ANSI_ARGS_((Tcl_Interp* interp, - Tcl_Channel channel)); -/* 439 */ -EXTERN int Tcl_IsStandardChannel _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 440 */ -EXTERN int Tcl_FSCopyFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, - Tcl_Obj * destPathPtr)); -/* 441 */ -EXTERN int Tcl_FSCopyDirectory _ANSI_ARGS_(( - Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, - Tcl_Obj ** errorPtr)); -/* 442 */ -EXTERN int Tcl_FSCreateDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 443 */ -EXTERN int Tcl_FSDeleteFile _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 444 */ -EXTERN int Tcl_FSLoadFile _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * pathPtr, CONST char * sym1, - CONST char * sym2, - Tcl_PackageInitProc ** proc1Ptr, - Tcl_PackageInitProc ** proc2Ptr, - Tcl_LoadHandle * handlePtr, - Tcl_FSUnloadFileProc ** unloadProcPtr)); -/* 445 */ -EXTERN int Tcl_FSMatchInDirectory _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * result, - Tcl_Obj * pathPtr, CONST char * pattern, - Tcl_GlobTypeData * types)); -/* 446 */ -EXTERN Tcl_Obj * Tcl_FSLink _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_Obj * toPtr, int linkAction)); -/* 447 */ -EXTERN int Tcl_FSRemoveDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr, - int recursive, Tcl_Obj ** errorPtr)); -/* 448 */ -EXTERN int Tcl_FSRenameFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, - Tcl_Obj * destPathPtr)); -/* 449 */ -EXTERN int Tcl_FSLstat _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_StatBuf * buf)); -/* 450 */ -EXTERN int Tcl_FSUtime _ANSI_ARGS_((Tcl_Obj * pathPtr, - struct utimbuf * tval)); -/* 451 */ -EXTERN int Tcl_FSFileAttrsGet _ANSI_ARGS_((Tcl_Interp * interp, - int index, Tcl_Obj * pathPtr, - Tcl_Obj ** objPtrRef)); -/* 452 */ -EXTERN int Tcl_FSFileAttrsSet _ANSI_ARGS_((Tcl_Interp * interp, - int index, Tcl_Obj * pathPtr, - Tcl_Obj * objPtr)); -/* 453 */ -EXTERN CONST char ** Tcl_FSFileAttrStrings _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_Obj ** objPtrRef)); -/* 454 */ -EXTERN int Tcl_FSStat _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_StatBuf * buf)); -/* 455 */ -EXTERN int Tcl_FSAccess _ANSI_ARGS_((Tcl_Obj * pathPtr, - int mode)); -/* 456 */ -EXTERN Tcl_Channel Tcl_FSOpenFileChannel _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * pathPtr, - CONST char * modeString, int permissions)); -/* 457 */ -EXTERN Tcl_Obj* Tcl_FSGetCwd _ANSI_ARGS_((Tcl_Interp * interp)); -/* 458 */ -EXTERN int Tcl_FSChdir _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 459 */ -EXTERN int Tcl_FSConvertToPathType _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * pathPtr)); -/* 460 */ -EXTERN Tcl_Obj* Tcl_FSJoinPath _ANSI_ARGS_((Tcl_Obj * listObj, - int elements)); -/* 461 */ -EXTERN Tcl_Obj* Tcl_FSSplitPath _ANSI_ARGS_((Tcl_Obj* pathPtr, - int * lenPtr)); -/* 462 */ -EXTERN int Tcl_FSEqualPaths _ANSI_ARGS_((Tcl_Obj* firstPtr, - Tcl_Obj* secondPtr)); -/* 463 */ -EXTERN Tcl_Obj* Tcl_FSGetNormalizedPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); -/* 464 */ -EXTERN Tcl_Obj* Tcl_FSJoinToPath _ANSI_ARGS_((Tcl_Obj * basePtr, - int objc, Tcl_Obj *CONST objv[])); -/* 465 */ -EXTERN ClientData Tcl_FSGetInternalRep _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); -/* 466 */ -EXTERN Tcl_Obj* Tcl_FSGetTranslatedPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathPtr)); -/* 467 */ -EXTERN int Tcl_FSEvalFile _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * fileName)); -/* 468 */ -EXTERN Tcl_Obj* Tcl_FSNewNativePath _ANSI_ARGS_(( - Tcl_Filesystem* fromFilesystem, - ClientData clientData)); -/* 469 */ -EXTERN CONST char* Tcl_FSGetNativePath _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); -/* 470 */ -EXTERN Tcl_Obj* Tcl_FSFileSystemInfo _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr)); -/* 471 */ -EXTERN Tcl_Obj* Tcl_FSPathSeparator _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); -/* 472 */ -EXTERN Tcl_Obj* Tcl_FSListVolumes _ANSI_ARGS_((void)); -/* 473 */ -EXTERN int Tcl_FSRegister _ANSI_ARGS_((ClientData clientData, - Tcl_Filesystem * fsPtr)); -/* 474 */ -EXTERN int Tcl_FSUnregister _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); -/* 475 */ -EXTERN ClientData Tcl_FSData _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); -/* 476 */ -EXTERN CONST char* Tcl_FSGetTranslatedStringPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathPtr)); -/* 477 */ -EXTERN Tcl_Filesystem* Tcl_FSGetFileSystemForPath _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr)); -/* 478 */ -EXTERN Tcl_PathType Tcl_FSGetPathType _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); -/* 479 */ -EXTERN int Tcl_OutputBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 480 */ -EXTERN void Tcl_FSMountsChanged _ANSI_ARGS_(( - Tcl_Filesystem * fsPtr)); -/* 481 */ -EXTERN int Tcl_EvalTokensStandard _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Token * tokenPtr, - int count)); -/* 482 */ -EXTERN void Tcl_GetTime _ANSI_ARGS_((Tcl_Time* timeBuf)); -/* 483 */ -EXTERN Tcl_Trace Tcl_CreateObjTrace _ANSI_ARGS_((Tcl_Interp* interp, - int level, int flags, - Tcl_CmdObjTraceProc* objProc, - ClientData clientData, - Tcl_CmdObjTraceDeleteProc* delProc)); -/* 484 */ -EXTERN int Tcl_GetCommandInfoFromToken _ANSI_ARGS_(( - Tcl_Command token, Tcl_CmdInfo* infoPtr)); -/* 485 */ -EXTERN int Tcl_SetCommandInfoFromToken _ANSI_ARGS_(( - Tcl_Command token, - CONST Tcl_CmdInfo* infoPtr)); -/* 486 */ -EXTERN Tcl_Obj * Tcl_DbNewWideIntObj _ANSI_ARGS_(( - Tcl_WideInt wideValue, CONST char * file, - int line)); -/* 487 */ -EXTERN int Tcl_GetWideIntFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - Tcl_WideInt * widePtr)); -/* 488 */ -EXTERN Tcl_Obj * Tcl_NewWideIntObj _ANSI_ARGS_((Tcl_WideInt wideValue)); -/* 489 */ -EXTERN void Tcl_SetWideIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, - Tcl_WideInt wideValue)); -/* 490 */ -EXTERN Tcl_StatBuf * Tcl_AllocStatBuf _ANSI_ARGS_((void)); -/* 491 */ -EXTERN Tcl_WideInt Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan, - Tcl_WideInt offset, int mode)); -/* 492 */ -EXTERN Tcl_WideInt Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); -/* 493 */ -EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); - -typedef struct TclStubHooks { - struct TclPlatStubs *tclPlatStubs; - struct TclIntStubs *tclIntStubs; - struct TclIntPlatStubs *tclIntPlatStubs; -} TclStubHooks; - -typedef struct TclStubs { - int magic; - struct TclStubHooks *hooks; - - int (*tcl_PkgProvideEx) _ANSI_ARGS_((Tcl_Interp* interp, CONST char* name, CONST char* version, ClientData clientData)); /* 0 */ - CONST84_RETURN char * (*tcl_PkgRequireEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 1 */ - void (*tcl_Panic) _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); /* 2 */ - char * (*tcl_Alloc) _ANSI_ARGS_((unsigned int size)); /* 3 */ - void (*tcl_Free) _ANSI_ARGS_((char * ptr)); /* 4 */ - char * (*tcl_Realloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 5 */ - char * (*tcl_DbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 6 */ - int (*tcl_DbCkfree) _ANSI_ARGS_((char * ptr, CONST char * file, int line)); /* 7 */ - char * (*tcl_DbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_CreateFileHandler) _ANSI_ARGS_((int fd, int mask, Tcl_FileProc * proc, ClientData clientData)); /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved9; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved9; -#endif /* MAC_TCL */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_DeleteFileHandler) _ANSI_ARGS_((int fd)); /* 10 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved10; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved10; -#endif /* MAC_TCL */ - void (*tcl_SetTimer) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 11 */ - void (*tcl_Sleep) _ANSI_ARGS_((int ms)); /* 12 */ - int (*tcl_WaitForEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 13 */ - int (*tcl_AppendAllObjTypes) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 14 */ - void (*tcl_AppendStringsToObj) _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); /* 15 */ - void (*tcl_AppendToObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 16 */ - Tcl_Obj * (*tcl_ConcatObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 17 */ - int (*tcl_ConvertToType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); /* 18 */ - void (*tcl_DbDecrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 19 */ - void (*tcl_DbIncrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 20 */ - int (*tcl_DbIsShared) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 21 */ - Tcl_Obj * (*tcl_DbNewBooleanObj) _ANSI_ARGS_((int boolValue, CONST char * file, int line)); /* 22 */ - Tcl_Obj * (*tcl_DbNewByteArrayObj) _ANSI_ARGS_((CONST unsigned char * bytes, int length, CONST char * file, int line)); /* 23 */ - Tcl_Obj * (*tcl_DbNewDoubleObj) _ANSI_ARGS_((double doubleValue, CONST char * file, int line)); /* 24 */ - Tcl_Obj * (*tcl_DbNewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST * objv, CONST char * file, int line)); /* 25 */ - Tcl_Obj * (*tcl_DbNewLongObj) _ANSI_ARGS_((long longValue, CONST char * file, int line)); /* 26 */ - Tcl_Obj * (*tcl_DbNewObj) _ANSI_ARGS_((CONST char * file, int line)); /* 27 */ - Tcl_Obj * (*tcl_DbNewStringObj) _ANSI_ARGS_((CONST char * bytes, int length, CONST char * file, int line)); /* 28 */ - Tcl_Obj * (*tcl_DuplicateObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 29 */ - void (*tclFreeObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 30 */ - int (*tcl_GetBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * boolPtr)); /* 31 */ - int (*tcl_GetBooleanFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * boolPtr)); /* 32 */ - unsigned char * (*tcl_GetByteArrayFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 33 */ - int (*tcl_GetDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * doublePtr)); /* 34 */ - int (*tcl_GetDoubleFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * doublePtr)); /* 35 */ - int (*tcl_GetIndexFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST84 char ** tablePtr, CONST char * msg, int flags, int * indexPtr)); /* 36 */ - int (*tcl_GetInt) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * intPtr)); /* 37 */ - int (*tcl_GetIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * intPtr)); /* 38 */ - int (*tcl_GetLongFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * longPtr)); /* 39 */ - Tcl_ObjType * (*tcl_GetObjType) _ANSI_ARGS_((CONST char * typeName)); /* 40 */ - char * (*tcl_GetStringFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 41 */ - void (*tcl_InvalidateStringRep) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 42 */ - int (*tcl_ListObjAppendList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * elemListPtr)); /* 43 */ - int (*tcl_ListObjAppendElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * objPtr)); /* 44 */ - int (*tcl_ListObjGetElements) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * objcPtr, Tcl_Obj *** objvPtr)); /* 45 */ - int (*tcl_ListObjIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj ** objPtrPtr)); /* 46 */ - int (*tcl_ListObjLength) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * lengthPtr)); /* 47 */ - int (*tcl_ListObjReplace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int first, int count, int objc, Tcl_Obj *CONST objv[])); /* 48 */ - Tcl_Obj * (*tcl_NewBooleanObj) _ANSI_ARGS_((int boolValue)); /* 49 */ - Tcl_Obj * (*tcl_NewByteArrayObj) _ANSI_ARGS_((CONST unsigned char* bytes, int length)); /* 50 */ - Tcl_Obj * (*tcl_NewDoubleObj) _ANSI_ARGS_((double doubleValue)); /* 51 */ - Tcl_Obj * (*tcl_NewIntObj) _ANSI_ARGS_((int intValue)); /* 52 */ - Tcl_Obj * (*tcl_NewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 53 */ - Tcl_Obj * (*tcl_NewLongObj) _ANSI_ARGS_((long longValue)); /* 54 */ - Tcl_Obj * (*tcl_NewObj) _ANSI_ARGS_((void)); /* 55 */ - Tcl_Obj * (*tcl_NewStringObj) _ANSI_ARGS_((CONST char * bytes, int length)); /* 56 */ - void (*tcl_SetBooleanObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int boolValue)); /* 57 */ - unsigned char * (*tcl_SetByteArrayLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 58 */ - void (*tcl_SetByteArrayObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST unsigned char * bytes, int length)); /* 59 */ - void (*tcl_SetDoubleObj) _ANSI_ARGS_((Tcl_Obj * objPtr, double doubleValue)); /* 60 */ - void (*tcl_SetIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int intValue)); /* 61 */ - void (*tcl_SetListObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int objc, Tcl_Obj *CONST objv[])); /* 62 */ - void (*tcl_SetLongObj) _ANSI_ARGS_((Tcl_Obj * objPtr, long longValue)); /* 63 */ - void (*tcl_SetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 64 */ - void (*tcl_SetStringObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 65 */ - void (*tcl_AddErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message)); /* 66 */ - void (*tcl_AddObjErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message, int length)); /* 67 */ - void (*tcl_AllowExceptions) _ANSI_ARGS_((Tcl_Interp * interp)); /* 68 */ - void (*tcl_AppendElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 69 */ - void (*tcl_AppendResult) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 70 */ - Tcl_AsyncHandler (*tcl_AsyncCreate) _ANSI_ARGS_((Tcl_AsyncProc * proc, ClientData clientData)); /* 71 */ - void (*tcl_AsyncDelete) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 72 */ - int (*tcl_AsyncInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int code)); /* 73 */ - void (*tcl_AsyncMark) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 74 */ - int (*tcl_AsyncReady) _ANSI_ARGS_((void)); /* 75 */ - void (*tcl_BackgroundError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 76 */ - char (*tcl_Backslash) _ANSI_ARGS_((CONST char * src, int * readPtr)); /* 77 */ - int (*tcl_BadChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * optionName, CONST char * optionList)); /* 78 */ - void (*tcl_CallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 79 */ - void (*tcl_CancelIdleCall) _ANSI_ARGS_((Tcl_IdleProc * idleProc, ClientData clientData)); /* 80 */ - int (*tcl_Close) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 81 */ - int (*tcl_CommandComplete) _ANSI_ARGS_((CONST char * cmd)); /* 82 */ - char * (*tcl_Concat) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 83 */ - int (*tcl_ConvertElement) _ANSI_ARGS_((CONST char * src, char * dst, int flags)); /* 84 */ - int (*tcl_ConvertCountedElement) _ANSI_ARGS_((CONST char * src, int length, char * dst, int flags)); /* 85 */ - int (*tcl_CreateAlias) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int argc, CONST84 char * CONST * argv)); /* 86 */ - int (*tcl_CreateAliasObj) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int objc, Tcl_Obj *CONST objv[])); /* 87 */ - Tcl_Channel (*tcl_CreateChannel) _ANSI_ARGS_((Tcl_ChannelType * typePtr, CONST char * chanName, ClientData instanceData, int mask)); /* 88 */ - void (*tcl_CreateChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, int mask, Tcl_ChannelProc * proc, ClientData clientData)); /* 89 */ - void (*tcl_CreateCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 90 */ - Tcl_Command (*tcl_CreateCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 91 */ - void (*tcl_CreateEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 92 */ - void (*tcl_CreateExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 93 */ - Tcl_Interp * (*tcl_CreateInterp) _ANSI_ARGS_((void)); /* 94 */ - void (*tcl_CreateMathFunc) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int numArgs, Tcl_ValueType * argTypes, Tcl_MathProc * proc, ClientData clientData)); /* 95 */ - Tcl_Command (*tcl_CreateObjCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_ObjCmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 96 */ - Tcl_Interp * (*tcl_CreateSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName, int isSafe)); /* 97 */ - Tcl_TimerToken (*tcl_CreateTimerHandler) _ANSI_ARGS_((int milliseconds, Tcl_TimerProc * proc, ClientData clientData)); /* 98 */ - Tcl_Trace (*tcl_CreateTrace) _ANSI_ARGS_((Tcl_Interp * interp, int level, Tcl_CmdTraceProc * proc, ClientData clientData)); /* 99 */ - void (*tcl_DeleteAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 100 */ - void (*tcl_DeleteChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_ChannelProc * proc, ClientData clientData)); /* 101 */ - void (*tcl_DeleteCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 102 */ - int (*tcl_DeleteCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName)); /* 103 */ - int (*tcl_DeleteCommandFromToken) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 104 */ - void (*tcl_DeleteEvents) _ANSI_ARGS_((Tcl_EventDeleteProc * proc, ClientData clientData)); /* 105 */ - void (*tcl_DeleteEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 106 */ - void (*tcl_DeleteExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 107 */ - void (*tcl_DeleteHashEntry) _ANSI_ARGS_((Tcl_HashEntry * entryPtr)); /* 108 */ - void (*tcl_DeleteHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 109 */ - void (*tcl_DeleteInterp) _ANSI_ARGS_((Tcl_Interp * interp)); /* 110 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved111; -#endif /* MAC_TCL */ - void (*tcl_DeleteTimerHandler) _ANSI_ARGS_((Tcl_TimerToken token)); /* 112 */ - void (*tcl_DeleteTrace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Trace trace)); /* 113 */ - void (*tcl_DontCallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 114 */ - int (*tcl_DoOneEvent) _ANSI_ARGS_((int flags)); /* 115 */ - void (*tcl_DoWhenIdle) _ANSI_ARGS_((Tcl_IdleProc * proc, ClientData clientData)); /* 116 */ - char * (*tcl_DStringAppend) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * str, int length)); /* 117 */ - char * (*tcl_DStringAppendElement) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * string)); /* 118 */ - void (*tcl_DStringEndSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 119 */ - void (*tcl_DStringFree) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 120 */ - void (*tcl_DStringGetResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 121 */ - void (*tcl_DStringInit) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 122 */ - void (*tcl_DStringResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 123 */ - void (*tcl_DStringSetLength) _ANSI_ARGS_((Tcl_DString * dsPtr, int length)); /* 124 */ - void (*tcl_DStringStartSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 125 */ - int (*tcl_Eof) _ANSI_ARGS_((Tcl_Channel chan)); /* 126 */ - CONST84_RETURN char * (*tcl_ErrnoId) _ANSI_ARGS_((void)); /* 127 */ - CONST84_RETURN char * (*tcl_ErrnoMsg) _ANSI_ARGS_((int err)); /* 128 */ - int (*tcl_Eval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 129 */ - int (*tcl_EvalFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName)); /* 130 */ - int (*tcl_EvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 131 */ - void (*tcl_EventuallyFree) _ANSI_ARGS_((ClientData clientData, Tcl_FreeProc * freeProc)); /* 132 */ - void (*tcl_Exit) _ANSI_ARGS_((int status)); /* 133 */ - int (*tcl_ExposeCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * hiddenCmdToken, CONST char * cmdName)); /* 134 */ - int (*tcl_ExprBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * ptr)); /* 135 */ - int (*tcl_ExprBooleanObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * ptr)); /* 136 */ - int (*tcl_ExprDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * ptr)); /* 137 */ - int (*tcl_ExprDoubleObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * ptr)); /* 138 */ - int (*tcl_ExprLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * ptr)); /* 139 */ - int (*tcl_ExprLongObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * ptr)); /* 140 */ - int (*tcl_ExprObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); /* 141 */ - int (*tcl_ExprString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 142 */ - void (*tcl_Finalize) _ANSI_ARGS_((void)); /* 143 */ - void (*tcl_FindExecutable) _ANSI_ARGS_((CONST char * argv0)); /* 144 */ - Tcl_HashEntry * (*tcl_FirstHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, Tcl_HashSearch * searchPtr)); /* 145 */ - int (*tcl_Flush) _ANSI_ARGS_((Tcl_Channel chan)); /* 146 */ - void (*tcl_FreeResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 147 */ - int (*tcl_GetAlias) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * argcPtr, CONST84 char *** argvPtr)); /* 148 */ - int (*tcl_GetAliasObj) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * objcPtr, Tcl_Obj *** objv)); /* 149 */ - ClientData (*tcl_GetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc ** procPtr)); /* 150 */ - Tcl_Channel (*tcl_GetChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * chanName, int * modePtr)); /* 151 */ - int (*tcl_GetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan)); /* 152 */ - int (*tcl_GetChannelHandle) _ANSI_ARGS_((Tcl_Channel chan, int direction, ClientData * handlePtr)); /* 153 */ - ClientData (*tcl_GetChannelInstanceData) _ANSI_ARGS_((Tcl_Channel chan)); /* 154 */ - int (*tcl_GetChannelMode) _ANSI_ARGS_((Tcl_Channel chan)); /* 155 */ - CONST84_RETURN char * (*tcl_GetChannelName) _ANSI_ARGS_((Tcl_Channel chan)); /* 156 */ - int (*tcl_GetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, Tcl_DString * dsPtr)); /* 157 */ - Tcl_ChannelType * (*tcl_GetChannelType) _ANSI_ARGS_((Tcl_Channel chan)); /* 158 */ - int (*tcl_GetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdInfo * infoPtr)); /* 159 */ - CONST84_RETURN char * (*tcl_GetCommandName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 160 */ - int (*tcl_GetErrno) _ANSI_ARGS_((void)); /* 161 */ - CONST84_RETURN char * (*tcl_GetHostName) _ANSI_ARGS_((void)); /* 162 */ - int (*tcl_GetInterpPath) _ANSI_ARGS_((Tcl_Interp * askInterp, Tcl_Interp * slaveInterp)); /* 163 */ - Tcl_Interp * (*tcl_GetMaster) _ANSI_ARGS_((Tcl_Interp * interp)); /* 164 */ - CONST char * (*tcl_GetNameOfExecutable) _ANSI_ARGS_((void)); /* 165 */ - Tcl_Obj * (*tcl_GetObjResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 166 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tcl_GetOpenFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int forWriting, int checkUsage, ClientData * filePtr)); /* 167 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved167; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved167; -#endif /* MAC_TCL */ - Tcl_PathType (*tcl_GetPathType) _ANSI_ARGS_((CONST char * path)); /* 168 */ - int (*tcl_Gets) _ANSI_ARGS_((Tcl_Channel chan, Tcl_DString * dsPtr)); /* 169 */ - int (*tcl_GetsObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 170 */ - int (*tcl_GetServiceMode) _ANSI_ARGS_((void)); /* 171 */ - Tcl_Interp * (*tcl_GetSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName)); /* 172 */ - Tcl_Channel (*tcl_GetStdChannel) _ANSI_ARGS_((int type)); /* 173 */ - CONST84_RETURN char * (*tcl_GetStringResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 174 */ - CONST84_RETURN char * (*tcl_GetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 175 */ - CONST84_RETURN char * (*tcl_GetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 176 */ - int (*tcl_GlobalEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command)); /* 177 */ - int (*tcl_GlobalEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 178 */ - int (*tcl_HideCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST char * hiddenCmdToken)); /* 179 */ - int (*tcl_Init) _ANSI_ARGS_((Tcl_Interp * interp)); /* 180 */ - void (*tcl_InitHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType)); /* 181 */ - int (*tcl_InputBlocked) _ANSI_ARGS_((Tcl_Channel chan)); /* 182 */ - int (*tcl_InputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 183 */ - int (*tcl_InterpDeleted) _ANSI_ARGS_((Tcl_Interp * interp)); /* 184 */ - int (*tcl_IsSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 185 */ - char * (*tcl_JoinPath) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv, Tcl_DString * resultPtr)); /* 186 */ - int (*tcl_LinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, char * addr, int type)); /* 187 */ - void *reserved188; - Tcl_Channel (*tcl_MakeFileChannel) _ANSI_ARGS_((ClientData handle, int mode)); /* 189 */ - int (*tcl_MakeSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 190 */ - Tcl_Channel (*tcl_MakeTcpClientChannel) _ANSI_ARGS_((ClientData tcpSocket)); /* 191 */ - char * (*tcl_Merge) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 192 */ - Tcl_HashEntry * (*tcl_NextHashEntry) _ANSI_ARGS_((Tcl_HashSearch * searchPtr)); /* 193 */ - void (*tcl_NotifyChannel) _ANSI_ARGS_((Tcl_Channel channel, int mask)); /* 194 */ - Tcl_Obj * (*tcl_ObjGetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, int flags)); /* 195 */ - Tcl_Obj * (*tcl_ObjSetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, Tcl_Obj * newValuePtr, int flags)); /* 196 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved197; -#endif /* MAC_TCL */ - Tcl_Channel (*tcl_OpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName, CONST char * modeString, int permissions)); /* 198 */ - Tcl_Channel (*tcl_OpenTcpClient) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * address, CONST char * myaddr, int myport, int async)); /* 199 */ - Tcl_Channel (*tcl_OpenTcpServer) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * host, Tcl_TcpAcceptProc * acceptProc, ClientData callbackData)); /* 200 */ - void (*tcl_Preserve) _ANSI_ARGS_((ClientData data)); /* 201 */ - void (*tcl_PrintDouble) _ANSI_ARGS_((Tcl_Interp * interp, double value, char * dst)); /* 202 */ - int (*tcl_PutEnv) _ANSI_ARGS_((CONST char * string)); /* 203 */ - CONST84_RETURN char * (*tcl_PosixError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 204 */ - void (*tcl_QueueEvent) _ANSI_ARGS_((Tcl_Event * evPtr, Tcl_QueuePosition position)); /* 205 */ - int (*tcl_Read) _ANSI_ARGS_((Tcl_Channel chan, char * bufPtr, int toRead)); /* 206 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved207; -#endif /* MAC_TCL */ - int (*tcl_RecordAndEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmd, int flags)); /* 208 */ - int (*tcl_RecordAndEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * cmdPtr, int flags)); /* 209 */ - void (*tcl_RegisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 210 */ - void (*tcl_RegisterObjType) _ANSI_ARGS_((Tcl_ObjType * typePtr)); /* 211 */ - Tcl_RegExp (*tcl_RegExpCompile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 212 */ - int (*tcl_RegExpExec) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, CONST char * str, CONST char * start)); /* 213 */ - int (*tcl_RegExpMatch) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST char * pattern)); /* 214 */ - void (*tcl_RegExpRange) _ANSI_ARGS_((Tcl_RegExp regexp, int index, CONST84 char ** startPtr, CONST84 char ** endPtr)); /* 215 */ - void (*tcl_Release) _ANSI_ARGS_((ClientData clientData)); /* 216 */ - void (*tcl_ResetResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 217 */ - int (*tcl_ScanElement) _ANSI_ARGS_((CONST char * str, int * flagPtr)); /* 218 */ - int (*tcl_ScanCountedElement) _ANSI_ARGS_((CONST char * str, int length, int * flagPtr)); /* 219 */ - int (*tcl_SeekOld) _ANSI_ARGS_((Tcl_Channel chan, int offset, int mode)); /* 220 */ - int (*tcl_ServiceAll) _ANSI_ARGS_((void)); /* 221 */ - int (*tcl_ServiceEvent) _ANSI_ARGS_((int flags)); /* 222 */ - void (*tcl_SetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 223 */ - void (*tcl_SetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan, int sz)); /* 224 */ - int (*tcl_SetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, CONST char * newValue)); /* 225 */ - int (*tcl_SetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST Tcl_CmdInfo * infoPtr)); /* 226 */ - void (*tcl_SetErrno) _ANSI_ARGS_((int err)); /* 227 */ - void (*tcl_SetErrorCode) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 228 */ - void (*tcl_SetMaxBlockTime) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 229 */ - void (*tcl_SetPanicProc) _ANSI_ARGS_((Tcl_PanicProc * panicProc)); /* 230 */ - int (*tcl_SetRecursionLimit) _ANSI_ARGS_((Tcl_Interp * interp, int depth)); /* 231 */ - void (*tcl_SetResult) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tcl_FreeProc * freeProc)); /* 232 */ - int (*tcl_SetServiceMode) _ANSI_ARGS_((int mode)); /* 233 */ - void (*tcl_SetObjErrorCode) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * errorObjPtr)); /* 234 */ - void (*tcl_SetObjResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * resultObjPtr)); /* 235 */ - void (*tcl_SetStdChannel) _ANSI_ARGS_((Tcl_Channel channel, int type)); /* 236 */ - CONST84_RETURN char * (*tcl_SetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, CONST char * newValue, int flags)); /* 237 */ - CONST84_RETURN char * (*tcl_SetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, CONST char * newValue, int flags)); /* 238 */ - CONST84_RETURN char * (*tcl_SignalId) _ANSI_ARGS_((int sig)); /* 239 */ - CONST84_RETURN char * (*tcl_SignalMsg) _ANSI_ARGS_((int sig)); /* 240 */ - void (*tcl_SourceRCFile) _ANSI_ARGS_((Tcl_Interp * interp)); /* 241 */ - int (*tcl_SplitList) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int * argcPtr, CONST84 char *** argvPtr)); /* 242 */ - void (*tcl_SplitPath) _ANSI_ARGS_((CONST char * path, int * argcPtr, CONST84 char *** argvPtr)); /* 243 */ - void (*tcl_StaticPackage) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pkgName, Tcl_PackageInitProc * initProc, Tcl_PackageInitProc * safeInitProc)); /* 244 */ - int (*tcl_StringMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern)); /* 245 */ - int (*tcl_TellOld) _ANSI_ARGS_((Tcl_Channel chan)); /* 246 */ - int (*tcl_TraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 247 */ - int (*tcl_TraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 248 */ - char * (*tcl_TranslateFileName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_DString * bufferPtr)); /* 249 */ - int (*tcl_Ungets) _ANSI_ARGS_((Tcl_Channel chan, CONST char * str, int len, int atHead)); /* 250 */ - void (*tcl_UnlinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 251 */ - int (*tcl_UnregisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 252 */ - int (*tcl_UnsetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 253 */ - int (*tcl_UnsetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 254 */ - void (*tcl_UntraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 255 */ - void (*tcl_UntraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 256 */ - void (*tcl_UpdateLinkedVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 257 */ - int (*tcl_UpVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * varName, CONST char * localName, int flags)); /* 258 */ - int (*tcl_UpVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * part1, CONST char * part2, CONST char * localName, int flags)); /* 259 */ - int (*tcl_VarEval) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 260 */ - ClientData (*tcl_VarTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 261 */ - ClientData (*tcl_VarTraceInfo2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 262 */ - int (*tcl_Write) _ANSI_ARGS_((Tcl_Channel chan, CONST char * s, int slen)); /* 263 */ - void (*tcl_WrongNumArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], CONST char * message)); /* 264 */ - int (*tcl_DumpActiveMemory) _ANSI_ARGS_((CONST char * fileName)); /* 265 */ - void (*tcl_ValidateAllMemory) _ANSI_ARGS_((CONST char * file, int line)); /* 266 */ - void (*tcl_AppendResultVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 267 */ - void (*tcl_AppendStringsToObjVA) _ANSI_ARGS_((Tcl_Obj * objPtr, va_list argList)); /* 268 */ - CONST84_RETURN char * (*tcl_HashStats) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 269 */ - CONST84_RETURN char * (*tcl_ParseVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST84 char ** termPtr)); /* 270 */ - CONST84_RETURN char * (*tcl_PkgPresent) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 271 */ - CONST84_RETURN char * (*tcl_PkgPresentEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 272 */ - int (*tcl_PkgProvide) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version)); /* 273 */ - CONST84_RETURN char * (*tcl_PkgRequire) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 274 */ - void (*tcl_SetErrorCodeVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 275 */ - int (*tcl_VarEvalVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 276 */ - Tcl_Pid (*tcl_WaitPid) _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, int options)); /* 277 */ - void (*tcl_PanicVA) _ANSI_ARGS_((CONST char * format, va_list argList)); /* 278 */ - void (*tcl_GetVersion) _ANSI_ARGS_((int * major, int * minor, int * patchLevel, int * type)); /* 279 */ - void (*tcl_InitMemory) _ANSI_ARGS_((Tcl_Interp * interp)); /* 280 */ - Tcl_Channel (*tcl_StackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_ChannelType * typePtr, ClientData instanceData, int mask, Tcl_Channel prevChan)); /* 281 */ - int (*tcl_UnstackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 282 */ - Tcl_Channel (*tcl_GetStackedChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 283 */ - void (*tcl_SetMainLoop) _ANSI_ARGS_((Tcl_MainLoopProc * proc)); /* 284 */ - void *reserved285; - void (*tcl_AppendObjToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_Obj * appendObjPtr)); /* 286 */ - Tcl_Encoding (*tcl_CreateEncoding) _ANSI_ARGS_((Tcl_EncodingType * typePtr)); /* 287 */ - void (*tcl_CreateThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 288 */ - void (*tcl_DeleteThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 289 */ - void (*tcl_DiscardResult) _ANSI_ARGS_((Tcl_SavedResult * statePtr)); /* 290 */ - int (*tcl_EvalEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, int numBytes, int flags)); /* 291 */ - int (*tcl_EvalObjv) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 292 */ - int (*tcl_EvalObjEx) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 293 */ - void (*tcl_ExitThread) _ANSI_ARGS_((int status)); /* 294 */ - int (*tcl_ExternalToUtf) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 295 */ - char * (*tcl_ExternalToUtfDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 296 */ - void (*tcl_FinalizeThread) _ANSI_ARGS_((void)); /* 297 */ - void (*tcl_FinalizeNotifier) _ANSI_ARGS_((ClientData clientData)); /* 298 */ - void (*tcl_FreeEncoding) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 299 */ - Tcl_ThreadId (*tcl_GetCurrentThread) _ANSI_ARGS_((void)); /* 300 */ - Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */ - CONST84_RETURN char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */ - void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */ - int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST VOID * tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */ - VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */ - Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 306 */ - ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */ - void (*tcl_MutexLock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 308 */ - void (*tcl_MutexUnlock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 309 */ - void (*tcl_ConditionNotify) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 310 */ - void (*tcl_ConditionWait) _ANSI_ARGS_((Tcl_Condition * condPtr, Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); /* 311 */ - int (*tcl_NumUtfChars) _ANSI_ARGS_((CONST char * src, int len)); /* 312 */ - int (*tcl_ReadChars) _ANSI_ARGS_((Tcl_Channel channel, Tcl_Obj * objPtr, int charsToRead, int appendFlag)); /* 313 */ - void (*tcl_RestoreResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 314 */ - void (*tcl_SaveResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 315 */ - int (*tcl_SetSystemEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 316 */ - Tcl_Obj * (*tcl_SetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, Tcl_Obj * newValuePtr, int flags)); /* 317 */ - void (*tcl_ThreadAlert) _ANSI_ARGS_((Tcl_ThreadId threadId)); /* 318 */ - void (*tcl_ThreadQueueEvent) _ANSI_ARGS_((Tcl_ThreadId threadId, Tcl_Event* evPtr, Tcl_QueuePosition position)); /* 319 */ - Tcl_UniChar (*tcl_UniCharAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 320 */ - Tcl_UniChar (*tcl_UniCharToLower) _ANSI_ARGS_((int ch)); /* 321 */ - Tcl_UniChar (*tcl_UniCharToTitle) _ANSI_ARGS_((int ch)); /* 322 */ - Tcl_UniChar (*tcl_UniCharToUpper) _ANSI_ARGS_((int ch)); /* 323 */ - int (*tcl_UniCharToUtf) _ANSI_ARGS_((int ch, char * buf)); /* 324 */ - CONST84_RETURN char * (*tcl_UtfAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 325 */ - int (*tcl_UtfCharComplete) _ANSI_ARGS_((CONST char * src, int len)); /* 326 */ - int (*tcl_UtfBackslash) _ANSI_ARGS_((CONST char * src, int * readPtr, char * dst)); /* 327 */ - CONST84_RETURN char * (*tcl_UtfFindFirst) _ANSI_ARGS_((CONST char * src, int ch)); /* 328 */ - CONST84_RETURN char * (*tcl_UtfFindLast) _ANSI_ARGS_((CONST char * src, int ch)); /* 329 */ - CONST84_RETURN char * (*tcl_UtfNext) _ANSI_ARGS_((CONST char * src)); /* 330 */ - CONST84_RETURN char * (*tcl_UtfPrev) _ANSI_ARGS_((CONST char * src, CONST char * start)); /* 331 */ - int (*tcl_UtfToExternal) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 332 */ - char * (*tcl_UtfToExternalDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 333 */ - int (*tcl_UtfToLower) _ANSI_ARGS_((char * src)); /* 334 */ - int (*tcl_UtfToTitle) _ANSI_ARGS_((char * src)); /* 335 */ - int (*tcl_UtfToUniChar) _ANSI_ARGS_((CONST char * src, Tcl_UniChar * chPtr)); /* 336 */ - int (*tcl_UtfToUpper) _ANSI_ARGS_((char * src)); /* 337 */ - int (*tcl_WriteChars) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 338 */ - int (*tcl_WriteObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 339 */ - char * (*tcl_GetString) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 340 */ - CONST84_RETURN char * (*tcl_GetDefaultEncodingDir) _ANSI_ARGS_((void)); /* 341 */ - void (*tcl_SetDefaultEncodingDir) _ANSI_ARGS_((CONST char * path)); /* 342 */ - void (*tcl_AlertNotifier) _ANSI_ARGS_((ClientData clientData)); /* 343 */ - void (*tcl_ServiceModeHook) _ANSI_ARGS_((int mode)); /* 344 */ - int (*tcl_UniCharIsAlnum) _ANSI_ARGS_((int ch)); /* 345 */ - int (*tcl_UniCharIsAlpha) _ANSI_ARGS_((int ch)); /* 346 */ - int (*tcl_UniCharIsDigit) _ANSI_ARGS_((int ch)); /* 347 */ - int (*tcl_UniCharIsLower) _ANSI_ARGS_((int ch)); /* 348 */ - int (*tcl_UniCharIsSpace) _ANSI_ARGS_((int ch)); /* 349 */ - int (*tcl_UniCharIsUpper) _ANSI_ARGS_((int ch)); /* 350 */ - int (*tcl_UniCharIsWordChar) _ANSI_ARGS_((int ch)); /* 351 */ - int (*tcl_UniCharLen) _ANSI_ARGS_((CONST Tcl_UniChar * str)); /* 352 */ - int (*tcl_UniCharNcmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 353 */ - char * (*tcl_UniCharToUtfDString) _ANSI_ARGS_((CONST Tcl_UniChar * string, int numChars, Tcl_DString * dsPtr)); /* 354 */ - Tcl_UniChar * (*tcl_UtfToUniCharDString) _ANSI_ARGS_((CONST char * string, int length, Tcl_DString * dsPtr)); /* 355 */ - Tcl_RegExp (*tcl_GetRegExpFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * patObj, int flags)); /* 356 */ - Tcl_Obj * (*tcl_EvalTokens) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 357 */ - void (*tcl_FreeParse) _ANSI_ARGS_((Tcl_Parse * parsePtr)); /* 358 */ - void (*tcl_LogCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, CONST char * command, int length)); /* 359 */ - int (*tcl_ParseBraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 360 */ - int (*tcl_ParseCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, int nested, Tcl_Parse * parsePtr)); /* 361 */ - int (*tcl_ParseExpr) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr)); /* 362 */ - int (*tcl_ParseQuotedString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 363 */ - int (*tcl_ParseVarName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append)); /* 364 */ - char * (*tcl_GetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 365 */ - int (*tcl_Chdir) _ANSI_ARGS_((CONST char * dirName)); /* 366 */ - int (*tcl_Access) _ANSI_ARGS_((CONST char * path, int mode)); /* 367 */ - int (*tcl_Stat) _ANSI_ARGS_((CONST char * path, struct stat * bufPtr)); /* 368 */ - int (*tcl_UtfNcmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 369 */ - int (*tcl_UtfNcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 370 */ - int (*tcl_StringCaseMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern, int nocase)); /* 371 */ - int (*tcl_UniCharIsControl) _ANSI_ARGS_((int ch)); /* 372 */ - int (*tcl_UniCharIsGraph) _ANSI_ARGS_((int ch)); /* 373 */ - int (*tcl_UniCharIsPrint) _ANSI_ARGS_((int ch)); /* 374 */ - int (*tcl_UniCharIsPunct) _ANSI_ARGS_((int ch)); /* 375 */ - int (*tcl_RegExpExecObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, Tcl_Obj * objPtr, int offset, int nmatches, int flags)); /* 376 */ - void (*tcl_RegExpGetInfo) _ANSI_ARGS_((Tcl_RegExp regexp, Tcl_RegExpInfo * infoPtr)); /* 377 */ - Tcl_Obj * (*tcl_NewUnicodeObj) _ANSI_ARGS_((CONST Tcl_UniChar * unicode, int numChars)); /* 378 */ - void (*tcl_SetUnicodeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int numChars)); /* 379 */ - int (*tcl_GetCharLength) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 380 */ - Tcl_UniChar (*tcl_GetUniChar) _ANSI_ARGS_((Tcl_Obj * objPtr, int index)); /* 381 */ - Tcl_UniChar * (*tcl_GetUnicode) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 382 */ - Tcl_Obj * (*tcl_GetRange) _ANSI_ARGS_((Tcl_Obj * objPtr, int first, int last)); /* 383 */ - void (*tcl_AppendUnicodeToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int length)); /* 384 */ - int (*tcl_RegExpMatchObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * stringObj, Tcl_Obj * patternObj)); /* 385 */ - void (*tcl_SetNotifier) _ANSI_ARGS_((Tcl_NotifierProcs * notifierProcPtr)); /* 386 */ - Tcl_Mutex * (*tcl_GetAllocMutex) _ANSI_ARGS_((void)); /* 387 */ - int (*tcl_GetChannelNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 388 */ - int (*tcl_GetChannelNamesEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 389 */ - int (*tcl_ProcObjCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 390 */ - void (*tcl_ConditionFinalize) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 391 */ - void (*tcl_MutexFinalize) _ANSI_ARGS_((Tcl_Mutex * mutex)); /* 392 */ - int (*tcl_CreateThread) _ANSI_ARGS_((Tcl_ThreadId * idPtr, Tcl_ThreadCreateProc proc, ClientData clientData, int stackSize, int flags)); /* 393 */ - int (*tcl_ReadRaw) _ANSI_ARGS_((Tcl_Channel chan, char * dst, int bytesToRead)); /* 394 */ - int (*tcl_WriteRaw) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 395 */ - Tcl_Channel (*tcl_GetTopChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 396 */ - int (*tcl_ChannelBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 397 */ - CONST84_RETURN char * (*tcl_ChannelName) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 398 */ - Tcl_ChannelTypeVersion (*tcl_ChannelVersion) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 399 */ - Tcl_DriverBlockModeProc * (*tcl_ChannelBlockModeProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 400 */ - Tcl_DriverCloseProc * (*tcl_ChannelCloseProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 401 */ - Tcl_DriverClose2Proc * (*tcl_ChannelClose2Proc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 402 */ - Tcl_DriverInputProc * (*tcl_ChannelInputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 403 */ - Tcl_DriverOutputProc * (*tcl_ChannelOutputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 404 */ - Tcl_DriverSeekProc * (*tcl_ChannelSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 405 */ - Tcl_DriverSetOptionProc * (*tcl_ChannelSetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 406 */ - Tcl_DriverGetOptionProc * (*tcl_ChannelGetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 407 */ - Tcl_DriverWatchProc * (*tcl_ChannelWatchProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 408 */ - Tcl_DriverGetHandleProc * (*tcl_ChannelGetHandleProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 409 */ - Tcl_DriverFlushProc * (*tcl_ChannelFlushProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 410 */ - Tcl_DriverHandlerProc * (*tcl_ChannelHandlerProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 411 */ - int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 412 */ - int (*tcl_IsChannelShared) _ANSI_ARGS_((Tcl_Channel channel)); /* 413 */ - int (*tcl_IsChannelRegistered) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 414 */ - void (*tcl_CutChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 415 */ - void (*tcl_SpliceChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 416 */ - void (*tcl_ClearChannelHandlers) _ANSI_ARGS_((Tcl_Channel channel)); /* 417 */ - int (*tcl_IsChannelExisting) _ANSI_ARGS_((CONST char* channelName)); /* 418 */ - int (*tcl_UniCharNcasecmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 419 */ - int (*tcl_UniCharCaseMatch) _ANSI_ARGS_((CONST Tcl_UniChar * ustr, CONST Tcl_UniChar * pattern, int nocase)); /* 420 */ - Tcl_HashEntry * (*tcl_FindHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key)); /* 421 */ - Tcl_HashEntry * (*tcl_CreateHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key, int * newPtr)); /* 422 */ - void (*tcl_InitCustomHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType, Tcl_HashKeyType * typePtr)); /* 423 */ - void (*tcl_InitObjHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 424 */ - ClientData (*tcl_CommandTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * procPtr, ClientData prevClientData)); /* 425 */ - int (*tcl_TraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 426 */ - void (*tcl_UntraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 427 */ - char * (*tcl_AttemptAlloc) _ANSI_ARGS_((unsigned int size)); /* 428 */ - char * (*tcl_AttemptDbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 429 */ - char * (*tcl_AttemptRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 430 */ - char * (*tcl_AttemptDbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 431 */ - int (*tcl_AttemptSetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 432 */ - Tcl_ThreadId (*tcl_GetChannelThread) _ANSI_ARGS_((Tcl_Channel channel)); /* 433 */ - Tcl_UniChar * (*tcl_GetUnicodeFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 434 */ - int (*tcl_GetMathFuncInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int * numArgsPtr, Tcl_ValueType ** argTypesPtr, Tcl_MathProc ** procPtr, ClientData * clientDataPtr)); /* 435 */ - Tcl_Obj * (*tcl_ListMathFuncs) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 436 */ - Tcl_Obj * (*tcl_SubstObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 437 */ - int (*tcl_DetachChannel) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 438 */ - int (*tcl_IsStandardChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 439 */ - int (*tcl_FSCopyFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 440 */ - int (*tcl_FSCopyDirectory) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, Tcl_Obj ** errorPtr)); /* 441 */ - int (*tcl_FSCreateDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 442 */ - int (*tcl_FSDeleteFile) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 443 */ - int (*tcl_FSLoadFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * sym1, CONST char * sym2, Tcl_PackageInitProc ** proc1Ptr, Tcl_PackageInitProc ** proc2Ptr, Tcl_LoadHandle * handlePtr, Tcl_FSUnloadFileProc ** unloadProcPtr)); /* 444 */ - int (*tcl_FSMatchInDirectory) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * result, Tcl_Obj * pathPtr, CONST char * pattern, Tcl_GlobTypeData * types)); /* 445 */ - Tcl_Obj * (*tcl_FSLink) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj * toPtr, int linkAction)); /* 446 */ - int (*tcl_FSRemoveDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr, int recursive, Tcl_Obj ** errorPtr)); /* 447 */ - int (*tcl_FSRenameFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 448 */ - int (*tcl_FSLstat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 449 */ - int (*tcl_FSUtime) _ANSI_ARGS_((Tcl_Obj * pathPtr, struct utimbuf * tval)); /* 450 */ - int (*tcl_FSFileAttrsGet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 451 */ - int (*tcl_FSFileAttrsSet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj * objPtr)); /* 452 */ - CONST char ** (*tcl_FSFileAttrStrings) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 453 */ - int (*tcl_FSStat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 454 */ - int (*tcl_FSAccess) _ANSI_ARGS_((Tcl_Obj * pathPtr, int mode)); /* 455 */ - Tcl_Channel (*tcl_FSOpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * modeString, int permissions)); /* 456 */ - Tcl_Obj* (*tcl_FSGetCwd) _ANSI_ARGS_((Tcl_Interp * interp)); /* 457 */ - int (*tcl_FSChdir) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 458 */ - int (*tcl_FSConvertToPathType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr)); /* 459 */ - Tcl_Obj* (*tcl_FSJoinPath) _ANSI_ARGS_((Tcl_Obj * listObj, int elements)); /* 460 */ - Tcl_Obj* (*tcl_FSSplitPath) _ANSI_ARGS_((Tcl_Obj* pathPtr, int * lenPtr)); /* 461 */ - int (*tcl_FSEqualPaths) _ANSI_ARGS_((Tcl_Obj* firstPtr, Tcl_Obj* secondPtr)); /* 462 */ - Tcl_Obj* (*tcl_FSGetNormalizedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); /* 463 */ - Tcl_Obj* (*tcl_FSJoinToPath) _ANSI_ARGS_((Tcl_Obj * basePtr, int objc, Tcl_Obj *CONST objv[])); /* 464 */ - ClientData (*tcl_FSGetInternalRep) _ANSI_ARGS_((Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); /* 465 */ - Tcl_Obj* (*tcl_FSGetTranslatedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 466 */ - int (*tcl_FSEvalFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * fileName)); /* 467 */ - Tcl_Obj* (*tcl_FSNewNativePath) _ANSI_ARGS_((Tcl_Filesystem* fromFilesystem, ClientData clientData)); /* 468 */ - CONST char* (*tcl_FSGetNativePath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 469 */ - Tcl_Obj* (*tcl_FSFileSystemInfo) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 470 */ - Tcl_Obj* (*tcl_FSPathSeparator) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 471 */ - Tcl_Obj* (*tcl_FSListVolumes) _ANSI_ARGS_((void)); /* 472 */ - int (*tcl_FSRegister) _ANSI_ARGS_((ClientData clientData, Tcl_Filesystem * fsPtr)); /* 473 */ - int (*tcl_FSUnregister) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 474 */ - ClientData (*tcl_FSData) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 475 */ - CONST char* (*tcl_FSGetTranslatedStringPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 476 */ - Tcl_Filesystem* (*tcl_FSGetFileSystemForPath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 477 */ - Tcl_PathType (*tcl_FSGetPathType) _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); /* 478 */ - int (*tcl_OutputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 479 */ - void (*tcl_FSMountsChanged) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 480 */ - int (*tcl_EvalTokensStandard) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 481 */ - void (*tcl_GetTime) _ANSI_ARGS_((Tcl_Time* timeBuf)); /* 482 */ - Tcl_Trace (*tcl_CreateObjTrace) _ANSI_ARGS_((Tcl_Interp* interp, int level, int flags, Tcl_CmdObjTraceProc* objProc, ClientData clientData, Tcl_CmdObjTraceDeleteProc* delProc)); /* 483 */ - int (*tcl_GetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, Tcl_CmdInfo* infoPtr)); /* 484 */ - int (*tcl_SetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, CONST Tcl_CmdInfo* infoPtr)); /* 485 */ - Tcl_Obj * (*tcl_DbNewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue, CONST char * file, int line)); /* 486 */ - int (*tcl_GetWideIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_WideInt * widePtr)); /* 487 */ - Tcl_Obj * (*tcl_NewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue)); /* 488 */ - void (*tcl_SetWideIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_WideInt wideValue)); /* 489 */ - Tcl_StatBuf * (*tcl_AllocStatBuf) _ANSI_ARGS_((void)); /* 490 */ - Tcl_WideInt (*tcl_Seek) _ANSI_ARGS_((Tcl_Channel chan, Tcl_WideInt offset, int mode)); /* 491 */ - Tcl_WideInt (*tcl_Tell) _ANSI_ARGS_((Tcl_Channel chan)); /* 492 */ - Tcl_DriverWideSeekProc * (*tcl_ChannelWideSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 493 */ -} TclStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclStubs *tclStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#ifndef Tcl_PkgProvideEx -#define Tcl_PkgProvideEx \ - (tclStubsPtr->tcl_PkgProvideEx) /* 0 */ -#endif -#ifndef Tcl_PkgRequireEx -#define Tcl_PkgRequireEx \ - (tclStubsPtr->tcl_PkgRequireEx) /* 1 */ -#endif -#ifndef Tcl_Panic -#define Tcl_Panic \ - (tclStubsPtr->tcl_Panic) /* 2 */ -#endif -#ifndef Tcl_Alloc -#define Tcl_Alloc \ - (tclStubsPtr->tcl_Alloc) /* 3 */ -#endif -#ifndef Tcl_Free -#define Tcl_Free \ - (tclStubsPtr->tcl_Free) /* 4 */ -#endif -#ifndef Tcl_Realloc -#define Tcl_Realloc \ - (tclStubsPtr->tcl_Realloc) /* 5 */ -#endif -#ifndef Tcl_DbCkalloc -#define Tcl_DbCkalloc \ - (tclStubsPtr->tcl_DbCkalloc) /* 6 */ -#endif -#ifndef Tcl_DbCkfree -#define Tcl_DbCkfree \ - (tclStubsPtr->tcl_DbCkfree) /* 7 */ -#endif -#ifndef Tcl_DbCkrealloc -#define Tcl_DbCkrealloc \ - (tclStubsPtr->tcl_DbCkrealloc) /* 8 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_CreateFileHandler -#define Tcl_CreateFileHandler \ - (tclStubsPtr->tcl_CreateFileHandler) /* 9 */ -#endif -#endif /* UNIX */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_DeleteFileHandler -#define Tcl_DeleteFileHandler \ - (tclStubsPtr->tcl_DeleteFileHandler) /* 10 */ -#endif -#endif /* UNIX */ -#ifndef Tcl_SetTimer -#define Tcl_SetTimer \ - (tclStubsPtr->tcl_SetTimer) /* 11 */ -#endif -#ifndef Tcl_Sleep -#define Tcl_Sleep \ - (tclStubsPtr->tcl_Sleep) /* 12 */ -#endif -#ifndef Tcl_WaitForEvent -#define Tcl_WaitForEvent \ - (tclStubsPtr->tcl_WaitForEvent) /* 13 */ -#endif -#ifndef Tcl_AppendAllObjTypes -#define Tcl_AppendAllObjTypes \ - (tclStubsPtr->tcl_AppendAllObjTypes) /* 14 */ -#endif -#ifndef Tcl_AppendStringsToObj -#define Tcl_AppendStringsToObj \ - (tclStubsPtr->tcl_AppendStringsToObj) /* 15 */ -#endif -#ifndef Tcl_AppendToObj -#define Tcl_AppendToObj \ - (tclStubsPtr->tcl_AppendToObj) /* 16 */ -#endif -#ifndef Tcl_ConcatObj -#define Tcl_ConcatObj \ - (tclStubsPtr->tcl_ConcatObj) /* 17 */ -#endif -#ifndef Tcl_ConvertToType -#define Tcl_ConvertToType \ - (tclStubsPtr->tcl_ConvertToType) /* 18 */ -#endif -#ifndef Tcl_DbDecrRefCount -#define Tcl_DbDecrRefCount \ - (tclStubsPtr->tcl_DbDecrRefCount) /* 19 */ -#endif -#ifndef Tcl_DbIncrRefCount -#define Tcl_DbIncrRefCount \ - (tclStubsPtr->tcl_DbIncrRefCount) /* 20 */ -#endif -#ifndef Tcl_DbIsShared -#define Tcl_DbIsShared \ - (tclStubsPtr->tcl_DbIsShared) /* 21 */ -#endif -#ifndef Tcl_DbNewBooleanObj -#define Tcl_DbNewBooleanObj \ - (tclStubsPtr->tcl_DbNewBooleanObj) /* 22 */ -#endif -#ifndef Tcl_DbNewByteArrayObj -#define Tcl_DbNewByteArrayObj \ - (tclStubsPtr->tcl_DbNewByteArrayObj) /* 23 */ -#endif -#ifndef Tcl_DbNewDoubleObj -#define Tcl_DbNewDoubleObj \ - (tclStubsPtr->tcl_DbNewDoubleObj) /* 24 */ -#endif -#ifndef Tcl_DbNewListObj -#define Tcl_DbNewListObj \ - (tclStubsPtr->tcl_DbNewListObj) /* 25 */ -#endif -#ifndef Tcl_DbNewLongObj -#define Tcl_DbNewLongObj \ - (tclStubsPtr->tcl_DbNewLongObj) /* 26 */ -#endif -#ifndef Tcl_DbNewObj -#define Tcl_DbNewObj \ - (tclStubsPtr->tcl_DbNewObj) /* 27 */ -#endif -#ifndef Tcl_DbNewStringObj -#define Tcl_DbNewStringObj \ - (tclStubsPtr->tcl_DbNewStringObj) /* 28 */ -#endif -#ifndef Tcl_DuplicateObj -#define Tcl_DuplicateObj \ - (tclStubsPtr->tcl_DuplicateObj) /* 29 */ -#endif -#ifndef TclFreeObj -#define TclFreeObj \ - (tclStubsPtr->tclFreeObj) /* 30 */ -#endif -#ifndef Tcl_GetBoolean -#define Tcl_GetBoolean \ - (tclStubsPtr->tcl_GetBoolean) /* 31 */ -#endif -#ifndef Tcl_GetBooleanFromObj -#define Tcl_GetBooleanFromObj \ - (tclStubsPtr->tcl_GetBooleanFromObj) /* 32 */ -#endif -#ifndef Tcl_GetByteArrayFromObj -#define Tcl_GetByteArrayFromObj \ - (tclStubsPtr->tcl_GetByteArrayFromObj) /* 33 */ -#endif -#ifndef Tcl_GetDouble -#define Tcl_GetDouble \ - (tclStubsPtr->tcl_GetDouble) /* 34 */ -#endif -#ifndef Tcl_GetDoubleFromObj -#define Tcl_GetDoubleFromObj \ - (tclStubsPtr->tcl_GetDoubleFromObj) /* 35 */ -#endif -#ifndef Tcl_GetIndexFromObj -#define Tcl_GetIndexFromObj \ - (tclStubsPtr->tcl_GetIndexFromObj) /* 36 */ -#endif -#ifndef Tcl_GetInt -#define Tcl_GetInt \ - (tclStubsPtr->tcl_GetInt) /* 37 */ -#endif -#ifndef Tcl_GetIntFromObj -#define Tcl_GetIntFromObj \ - (tclStubsPtr->tcl_GetIntFromObj) /* 38 */ -#endif -#ifndef Tcl_GetLongFromObj -#define Tcl_GetLongFromObj \ - (tclStubsPtr->tcl_GetLongFromObj) /* 39 */ -#endif -#ifndef Tcl_GetObjType -#define Tcl_GetObjType \ - (tclStubsPtr->tcl_GetObjType) /* 40 */ -#endif -#ifndef Tcl_GetStringFromObj -#define Tcl_GetStringFromObj \ - (tclStubsPtr->tcl_GetStringFromObj) /* 41 */ -#endif -#ifndef Tcl_InvalidateStringRep -#define Tcl_InvalidateStringRep \ - (tclStubsPtr->tcl_InvalidateStringRep) /* 42 */ -#endif -#ifndef Tcl_ListObjAppendList -#define Tcl_ListObjAppendList \ - (tclStubsPtr->tcl_ListObjAppendList) /* 43 */ -#endif -#ifndef Tcl_ListObjAppendElement -#define Tcl_ListObjAppendElement \ - (tclStubsPtr->tcl_ListObjAppendElement) /* 44 */ -#endif -#ifndef Tcl_ListObjGetElements -#define Tcl_ListObjGetElements \ - (tclStubsPtr->tcl_ListObjGetElements) /* 45 */ -#endif -#ifndef Tcl_ListObjIndex -#define Tcl_ListObjIndex \ - (tclStubsPtr->tcl_ListObjIndex) /* 46 */ -#endif -#ifndef Tcl_ListObjLength -#define Tcl_ListObjLength \ - (tclStubsPtr->tcl_ListObjLength) /* 47 */ -#endif -#ifndef Tcl_ListObjReplace -#define Tcl_ListObjReplace \ - (tclStubsPtr->tcl_ListObjReplace) /* 48 */ -#endif -#ifndef Tcl_NewBooleanObj -#define Tcl_NewBooleanObj \ - (tclStubsPtr->tcl_NewBooleanObj) /* 49 */ -#endif -#ifndef Tcl_NewByteArrayObj -#define Tcl_NewByteArrayObj \ - (tclStubsPtr->tcl_NewByteArrayObj) /* 50 */ -#endif -#ifndef Tcl_NewDoubleObj -#define Tcl_NewDoubleObj \ - (tclStubsPtr->tcl_NewDoubleObj) /* 51 */ -#endif -#ifndef Tcl_NewIntObj -#define Tcl_NewIntObj \ - (tclStubsPtr->tcl_NewIntObj) /* 52 */ -#endif -#ifndef Tcl_NewListObj -#define Tcl_NewListObj \ - (tclStubsPtr->tcl_NewListObj) /* 53 */ -#endif -#ifndef Tcl_NewLongObj -#define Tcl_NewLongObj \ - (tclStubsPtr->tcl_NewLongObj) /* 54 */ -#endif -#ifndef Tcl_NewObj -#define Tcl_NewObj \ - (tclStubsPtr->tcl_NewObj) /* 55 */ -#endif -#ifndef Tcl_NewStringObj -#define Tcl_NewStringObj \ - (tclStubsPtr->tcl_NewStringObj) /* 56 */ -#endif -#ifndef Tcl_SetBooleanObj -#define Tcl_SetBooleanObj \ - (tclStubsPtr->tcl_SetBooleanObj) /* 57 */ -#endif -#ifndef Tcl_SetByteArrayLength -#define Tcl_SetByteArrayLength \ - (tclStubsPtr->tcl_SetByteArrayLength) /* 58 */ -#endif -#ifndef Tcl_SetByteArrayObj -#define Tcl_SetByteArrayObj \ - (tclStubsPtr->tcl_SetByteArrayObj) /* 59 */ -#endif -#ifndef Tcl_SetDoubleObj -#define Tcl_SetDoubleObj \ - (tclStubsPtr->tcl_SetDoubleObj) /* 60 */ -#endif -#ifndef Tcl_SetIntObj -#define Tcl_SetIntObj \ - (tclStubsPtr->tcl_SetIntObj) /* 61 */ -#endif -#ifndef Tcl_SetListObj -#define Tcl_SetListObj \ - (tclStubsPtr->tcl_SetListObj) /* 62 */ -#endif -#ifndef Tcl_SetLongObj -#define Tcl_SetLongObj \ - (tclStubsPtr->tcl_SetLongObj) /* 63 */ -#endif -#ifndef Tcl_SetObjLength -#define Tcl_SetObjLength \ - (tclStubsPtr->tcl_SetObjLength) /* 64 */ -#endif -#ifndef Tcl_SetStringObj -#define Tcl_SetStringObj \ - (tclStubsPtr->tcl_SetStringObj) /* 65 */ -#endif -#ifndef Tcl_AddErrorInfo -#define Tcl_AddErrorInfo \ - (tclStubsPtr->tcl_AddErrorInfo) /* 66 */ -#endif -#ifndef Tcl_AddObjErrorInfo -#define Tcl_AddObjErrorInfo \ - (tclStubsPtr->tcl_AddObjErrorInfo) /* 67 */ -#endif -#ifndef Tcl_AllowExceptions -#define Tcl_AllowExceptions \ - (tclStubsPtr->tcl_AllowExceptions) /* 68 */ -#endif -#ifndef Tcl_AppendElement -#define Tcl_AppendElement \ - (tclStubsPtr->tcl_AppendElement) /* 69 */ -#endif -#ifndef Tcl_AppendResult -#define Tcl_AppendResult \ - (tclStubsPtr->tcl_AppendResult) /* 70 */ -#endif -#ifndef Tcl_AsyncCreate -#define Tcl_AsyncCreate \ - (tclStubsPtr->tcl_AsyncCreate) /* 71 */ -#endif -#ifndef Tcl_AsyncDelete -#define Tcl_AsyncDelete \ - (tclStubsPtr->tcl_AsyncDelete) /* 72 */ -#endif -#ifndef Tcl_AsyncInvoke -#define Tcl_AsyncInvoke \ - (tclStubsPtr->tcl_AsyncInvoke) /* 73 */ -#endif -#ifndef Tcl_AsyncMark -#define Tcl_AsyncMark \ - (tclStubsPtr->tcl_AsyncMark) /* 74 */ -#endif -#ifndef Tcl_AsyncReady -#define Tcl_AsyncReady \ - (tclStubsPtr->tcl_AsyncReady) /* 75 */ -#endif -#ifndef Tcl_BackgroundError -#define Tcl_BackgroundError \ - (tclStubsPtr->tcl_BackgroundError) /* 76 */ -#endif -#ifndef Tcl_Backslash -#define Tcl_Backslash \ - (tclStubsPtr->tcl_Backslash) /* 77 */ -#endif -#ifndef Tcl_BadChannelOption -#define Tcl_BadChannelOption \ - (tclStubsPtr->tcl_BadChannelOption) /* 78 */ -#endif -#ifndef Tcl_CallWhenDeleted -#define Tcl_CallWhenDeleted \ - (tclStubsPtr->tcl_CallWhenDeleted) /* 79 */ -#endif -#ifndef Tcl_CancelIdleCall -#define Tcl_CancelIdleCall \ - (tclStubsPtr->tcl_CancelIdleCall) /* 80 */ -#endif -#ifndef Tcl_Close -#define Tcl_Close \ - (tclStubsPtr->tcl_Close) /* 81 */ -#endif -#ifndef Tcl_CommandComplete -#define Tcl_CommandComplete \ - (tclStubsPtr->tcl_CommandComplete) /* 82 */ -#endif -#ifndef Tcl_Concat -#define Tcl_Concat \ - (tclStubsPtr->tcl_Concat) /* 83 */ -#endif -#ifndef Tcl_ConvertElement -#define Tcl_ConvertElement \ - (tclStubsPtr->tcl_ConvertElement) /* 84 */ -#endif -#ifndef Tcl_ConvertCountedElement -#define Tcl_ConvertCountedElement \ - (tclStubsPtr->tcl_ConvertCountedElement) /* 85 */ -#endif -#ifndef Tcl_CreateAlias -#define Tcl_CreateAlias \ - (tclStubsPtr->tcl_CreateAlias) /* 86 */ -#endif -#ifndef Tcl_CreateAliasObj -#define Tcl_CreateAliasObj \ - (tclStubsPtr->tcl_CreateAliasObj) /* 87 */ -#endif -#ifndef Tcl_CreateChannel -#define Tcl_CreateChannel \ - (tclStubsPtr->tcl_CreateChannel) /* 88 */ -#endif -#ifndef Tcl_CreateChannelHandler -#define Tcl_CreateChannelHandler \ - (tclStubsPtr->tcl_CreateChannelHandler) /* 89 */ -#endif -#ifndef Tcl_CreateCloseHandler -#define Tcl_CreateCloseHandler \ - (tclStubsPtr->tcl_CreateCloseHandler) /* 90 */ -#endif -#ifndef Tcl_CreateCommand -#define Tcl_CreateCommand \ - (tclStubsPtr->tcl_CreateCommand) /* 91 */ -#endif -#ifndef Tcl_CreateEventSource -#define Tcl_CreateEventSource \ - (tclStubsPtr->tcl_CreateEventSource) /* 92 */ -#endif -#ifndef Tcl_CreateExitHandler -#define Tcl_CreateExitHandler \ - (tclStubsPtr->tcl_CreateExitHandler) /* 93 */ -#endif -#ifndef Tcl_CreateInterp -#define Tcl_CreateInterp \ - (tclStubsPtr->tcl_CreateInterp) /* 94 */ -#endif -#ifndef Tcl_CreateMathFunc -#define Tcl_CreateMathFunc \ - (tclStubsPtr->tcl_CreateMathFunc) /* 95 */ -#endif -#ifndef Tcl_CreateObjCommand -#define Tcl_CreateObjCommand \ - (tclStubsPtr->tcl_CreateObjCommand) /* 96 */ -#endif -#ifndef Tcl_CreateSlave -#define Tcl_CreateSlave \ - (tclStubsPtr->tcl_CreateSlave) /* 97 */ -#endif -#ifndef Tcl_CreateTimerHandler -#define Tcl_CreateTimerHandler \ - (tclStubsPtr->tcl_CreateTimerHandler) /* 98 */ -#endif -#ifndef Tcl_CreateTrace -#define Tcl_CreateTrace \ - (tclStubsPtr->tcl_CreateTrace) /* 99 */ -#endif -#ifndef Tcl_DeleteAssocData -#define Tcl_DeleteAssocData \ - (tclStubsPtr->tcl_DeleteAssocData) /* 100 */ -#endif -#ifndef Tcl_DeleteChannelHandler -#define Tcl_DeleteChannelHandler \ - (tclStubsPtr->tcl_DeleteChannelHandler) /* 101 */ -#endif -#ifndef Tcl_DeleteCloseHandler -#define Tcl_DeleteCloseHandler \ - (tclStubsPtr->tcl_DeleteCloseHandler) /* 102 */ -#endif -#ifndef Tcl_DeleteCommand -#define Tcl_DeleteCommand \ - (tclStubsPtr->tcl_DeleteCommand) /* 103 */ -#endif -#ifndef Tcl_DeleteCommandFromToken -#define Tcl_DeleteCommandFromToken \ - (tclStubsPtr->tcl_DeleteCommandFromToken) /* 104 */ -#endif -#ifndef Tcl_DeleteEvents -#define Tcl_DeleteEvents \ - (tclStubsPtr->tcl_DeleteEvents) /* 105 */ -#endif -#ifndef Tcl_DeleteEventSource -#define Tcl_DeleteEventSource \ - (tclStubsPtr->tcl_DeleteEventSource) /* 106 */ -#endif -#ifndef Tcl_DeleteExitHandler -#define Tcl_DeleteExitHandler \ - (tclStubsPtr->tcl_DeleteExitHandler) /* 107 */ -#endif -#ifndef Tcl_DeleteHashEntry -#define Tcl_DeleteHashEntry \ - (tclStubsPtr->tcl_DeleteHashEntry) /* 108 */ -#endif -#ifndef Tcl_DeleteHashTable -#define Tcl_DeleteHashTable \ - (tclStubsPtr->tcl_DeleteHashTable) /* 109 */ -#endif -#ifndef Tcl_DeleteInterp -#define Tcl_DeleteInterp \ - (tclStubsPtr->tcl_DeleteInterp) /* 110 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_DetachPids -#define Tcl_DetachPids \ - (tclStubsPtr->tcl_DetachPids) /* 111 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_DetachPids -#define Tcl_DetachPids \ - (tclStubsPtr->tcl_DetachPids) /* 111 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_DeleteTimerHandler -#define Tcl_DeleteTimerHandler \ - (tclStubsPtr->tcl_DeleteTimerHandler) /* 112 */ -#endif -#ifndef Tcl_DeleteTrace -#define Tcl_DeleteTrace \ - (tclStubsPtr->tcl_DeleteTrace) /* 113 */ -#endif -#ifndef Tcl_DontCallWhenDeleted -#define Tcl_DontCallWhenDeleted \ - (tclStubsPtr->tcl_DontCallWhenDeleted) /* 114 */ -#endif -#ifndef Tcl_DoOneEvent -#define Tcl_DoOneEvent \ - (tclStubsPtr->tcl_DoOneEvent) /* 115 */ -#endif -#ifndef Tcl_DoWhenIdle -#define Tcl_DoWhenIdle \ - (tclStubsPtr->tcl_DoWhenIdle) /* 116 */ -#endif -#ifndef Tcl_DStringAppend -#define Tcl_DStringAppend \ - (tclStubsPtr->tcl_DStringAppend) /* 117 */ -#endif -#ifndef Tcl_DStringAppendElement -#define Tcl_DStringAppendElement \ - (tclStubsPtr->tcl_DStringAppendElement) /* 118 */ -#endif -#ifndef Tcl_DStringEndSublist -#define Tcl_DStringEndSublist \ - (tclStubsPtr->tcl_DStringEndSublist) /* 119 */ -#endif -#ifndef Tcl_DStringFree -#define Tcl_DStringFree \ - (tclStubsPtr->tcl_DStringFree) /* 120 */ -#endif -#ifndef Tcl_DStringGetResult -#define Tcl_DStringGetResult \ - (tclStubsPtr->tcl_DStringGetResult) /* 121 */ -#endif -#ifndef Tcl_DStringInit -#define Tcl_DStringInit \ - (tclStubsPtr->tcl_DStringInit) /* 122 */ -#endif -#ifndef Tcl_DStringResult -#define Tcl_DStringResult \ - (tclStubsPtr->tcl_DStringResult) /* 123 */ -#endif -#ifndef Tcl_DStringSetLength -#define Tcl_DStringSetLength \ - (tclStubsPtr->tcl_DStringSetLength) /* 124 */ -#endif -#ifndef Tcl_DStringStartSublist -#define Tcl_DStringStartSublist \ - (tclStubsPtr->tcl_DStringStartSublist) /* 125 */ -#endif -#ifndef Tcl_Eof -#define Tcl_Eof \ - (tclStubsPtr->tcl_Eof) /* 126 */ -#endif -#ifndef Tcl_ErrnoId -#define Tcl_ErrnoId \ - (tclStubsPtr->tcl_ErrnoId) /* 127 */ -#endif -#ifndef Tcl_ErrnoMsg -#define Tcl_ErrnoMsg \ - (tclStubsPtr->tcl_ErrnoMsg) /* 128 */ -#endif -#ifndef Tcl_Eval -#define Tcl_Eval \ - (tclStubsPtr->tcl_Eval) /* 129 */ -#endif -#ifndef Tcl_EvalFile -#define Tcl_EvalFile \ - (tclStubsPtr->tcl_EvalFile) /* 130 */ -#endif -#ifndef Tcl_EvalObj -#define Tcl_EvalObj \ - (tclStubsPtr->tcl_EvalObj) /* 131 */ -#endif -#ifndef Tcl_EventuallyFree -#define Tcl_EventuallyFree \ - (tclStubsPtr->tcl_EventuallyFree) /* 132 */ -#endif -#ifndef Tcl_Exit -#define Tcl_Exit \ - (tclStubsPtr->tcl_Exit) /* 133 */ -#endif -#ifndef Tcl_ExposeCommand -#define Tcl_ExposeCommand \ - (tclStubsPtr->tcl_ExposeCommand) /* 134 */ -#endif -#ifndef Tcl_ExprBoolean -#define Tcl_ExprBoolean \ - (tclStubsPtr->tcl_ExprBoolean) /* 135 */ -#endif -#ifndef Tcl_ExprBooleanObj -#define Tcl_ExprBooleanObj \ - (tclStubsPtr->tcl_ExprBooleanObj) /* 136 */ -#endif -#ifndef Tcl_ExprDouble -#define Tcl_ExprDouble \ - (tclStubsPtr->tcl_ExprDouble) /* 137 */ -#endif -#ifndef Tcl_ExprDoubleObj -#define Tcl_ExprDoubleObj \ - (tclStubsPtr->tcl_ExprDoubleObj) /* 138 */ -#endif -#ifndef Tcl_ExprLong -#define Tcl_ExprLong \ - (tclStubsPtr->tcl_ExprLong) /* 139 */ -#endif -#ifndef Tcl_ExprLongObj -#define Tcl_ExprLongObj \ - (tclStubsPtr->tcl_ExprLongObj) /* 140 */ -#endif -#ifndef Tcl_ExprObj -#define Tcl_ExprObj \ - (tclStubsPtr->tcl_ExprObj) /* 141 */ -#endif -#ifndef Tcl_ExprString -#define Tcl_ExprString \ - (tclStubsPtr->tcl_ExprString) /* 142 */ -#endif -#ifndef Tcl_Finalize -#define Tcl_Finalize \ - (tclStubsPtr->tcl_Finalize) /* 143 */ -#endif -#ifndef Tcl_FindExecutable -#define Tcl_FindExecutable \ - (tclStubsPtr->tcl_FindExecutable) /* 144 */ -#endif -#ifndef Tcl_FirstHashEntry -#define Tcl_FirstHashEntry \ - (tclStubsPtr->tcl_FirstHashEntry) /* 145 */ -#endif -#ifndef Tcl_Flush -#define Tcl_Flush \ - (tclStubsPtr->tcl_Flush) /* 146 */ -#endif -#ifndef Tcl_FreeResult -#define Tcl_FreeResult \ - (tclStubsPtr->tcl_FreeResult) /* 147 */ -#endif -#ifndef Tcl_GetAlias -#define Tcl_GetAlias \ - (tclStubsPtr->tcl_GetAlias) /* 148 */ -#endif -#ifndef Tcl_GetAliasObj -#define Tcl_GetAliasObj \ - (tclStubsPtr->tcl_GetAliasObj) /* 149 */ -#endif -#ifndef Tcl_GetAssocData -#define Tcl_GetAssocData \ - (tclStubsPtr->tcl_GetAssocData) /* 150 */ -#endif -#ifndef Tcl_GetChannel -#define Tcl_GetChannel \ - (tclStubsPtr->tcl_GetChannel) /* 151 */ -#endif -#ifndef Tcl_GetChannelBufferSize -#define Tcl_GetChannelBufferSize \ - (tclStubsPtr->tcl_GetChannelBufferSize) /* 152 */ -#endif -#ifndef Tcl_GetChannelHandle -#define Tcl_GetChannelHandle \ - (tclStubsPtr->tcl_GetChannelHandle) /* 153 */ -#endif -#ifndef Tcl_GetChannelInstanceData -#define Tcl_GetChannelInstanceData \ - (tclStubsPtr->tcl_GetChannelInstanceData) /* 154 */ -#endif -#ifndef Tcl_GetChannelMode -#define Tcl_GetChannelMode \ - (tclStubsPtr->tcl_GetChannelMode) /* 155 */ -#endif -#ifndef Tcl_GetChannelName -#define Tcl_GetChannelName \ - (tclStubsPtr->tcl_GetChannelName) /* 156 */ -#endif -#ifndef Tcl_GetChannelOption -#define Tcl_GetChannelOption \ - (tclStubsPtr->tcl_GetChannelOption) /* 157 */ -#endif -#ifndef Tcl_GetChannelType -#define Tcl_GetChannelType \ - (tclStubsPtr->tcl_GetChannelType) /* 158 */ -#endif -#ifndef Tcl_GetCommandInfo -#define Tcl_GetCommandInfo \ - (tclStubsPtr->tcl_GetCommandInfo) /* 159 */ -#endif -#ifndef Tcl_GetCommandName -#define Tcl_GetCommandName \ - (tclStubsPtr->tcl_GetCommandName) /* 160 */ -#endif -#ifndef Tcl_GetErrno -#define Tcl_GetErrno \ - (tclStubsPtr->tcl_GetErrno) /* 161 */ -#endif -#ifndef Tcl_GetHostName -#define Tcl_GetHostName \ - (tclStubsPtr->tcl_GetHostName) /* 162 */ -#endif -#ifndef Tcl_GetInterpPath -#define Tcl_GetInterpPath \ - (tclStubsPtr->tcl_GetInterpPath) /* 163 */ -#endif -#ifndef Tcl_GetMaster -#define Tcl_GetMaster \ - (tclStubsPtr->tcl_GetMaster) /* 164 */ -#endif -#ifndef Tcl_GetNameOfExecutable -#define Tcl_GetNameOfExecutable \ - (tclStubsPtr->tcl_GetNameOfExecutable) /* 165 */ -#endif -#ifndef Tcl_GetObjResult -#define Tcl_GetObjResult \ - (tclStubsPtr->tcl_GetObjResult) /* 166 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_GetOpenFile -#define Tcl_GetOpenFile \ - (tclStubsPtr->tcl_GetOpenFile) /* 167 */ -#endif -#endif /* UNIX */ -#ifndef Tcl_GetPathType -#define Tcl_GetPathType \ - (tclStubsPtr->tcl_GetPathType) /* 168 */ -#endif -#ifndef Tcl_Gets -#define Tcl_Gets \ - (tclStubsPtr->tcl_Gets) /* 169 */ -#endif -#ifndef Tcl_GetsObj -#define Tcl_GetsObj \ - (tclStubsPtr->tcl_GetsObj) /* 170 */ -#endif -#ifndef Tcl_GetServiceMode -#define Tcl_GetServiceMode \ - (tclStubsPtr->tcl_GetServiceMode) /* 171 */ -#endif -#ifndef Tcl_GetSlave -#define Tcl_GetSlave \ - (tclStubsPtr->tcl_GetSlave) /* 172 */ -#endif -#ifndef Tcl_GetStdChannel -#define Tcl_GetStdChannel \ - (tclStubsPtr->tcl_GetStdChannel) /* 173 */ -#endif -#ifndef Tcl_GetStringResult -#define Tcl_GetStringResult \ - (tclStubsPtr->tcl_GetStringResult) /* 174 */ -#endif -#ifndef Tcl_GetVar -#define Tcl_GetVar \ - (tclStubsPtr->tcl_GetVar) /* 175 */ -#endif -#ifndef Tcl_GetVar2 -#define Tcl_GetVar2 \ - (tclStubsPtr->tcl_GetVar2) /* 176 */ -#endif -#ifndef Tcl_GlobalEval -#define Tcl_GlobalEval \ - (tclStubsPtr->tcl_GlobalEval) /* 177 */ -#endif -#ifndef Tcl_GlobalEvalObj -#define Tcl_GlobalEvalObj \ - (tclStubsPtr->tcl_GlobalEvalObj) /* 178 */ -#endif -#ifndef Tcl_HideCommand -#define Tcl_HideCommand \ - (tclStubsPtr->tcl_HideCommand) /* 179 */ -#endif -#ifndef Tcl_Init -#define Tcl_Init \ - (tclStubsPtr->tcl_Init) /* 180 */ -#endif -#ifndef Tcl_InitHashTable -#define Tcl_InitHashTable \ - (tclStubsPtr->tcl_InitHashTable) /* 181 */ -#endif -#ifndef Tcl_InputBlocked -#define Tcl_InputBlocked \ - (tclStubsPtr->tcl_InputBlocked) /* 182 */ -#endif -#ifndef Tcl_InputBuffered -#define Tcl_InputBuffered \ - (tclStubsPtr->tcl_InputBuffered) /* 183 */ -#endif -#ifndef Tcl_InterpDeleted -#define Tcl_InterpDeleted \ - (tclStubsPtr->tcl_InterpDeleted) /* 184 */ -#endif -#ifndef Tcl_IsSafe -#define Tcl_IsSafe \ - (tclStubsPtr->tcl_IsSafe) /* 185 */ -#endif -#ifndef Tcl_JoinPath -#define Tcl_JoinPath \ - (tclStubsPtr->tcl_JoinPath) /* 186 */ -#endif -#ifndef Tcl_LinkVar -#define Tcl_LinkVar \ - (tclStubsPtr->tcl_LinkVar) /* 187 */ -#endif -/* Slot 188 is reserved */ -#ifndef Tcl_MakeFileChannel -#define Tcl_MakeFileChannel \ - (tclStubsPtr->tcl_MakeFileChannel) /* 189 */ -#endif -#ifndef Tcl_MakeSafe -#define Tcl_MakeSafe \ - (tclStubsPtr->tcl_MakeSafe) /* 190 */ -#endif -#ifndef Tcl_MakeTcpClientChannel -#define Tcl_MakeTcpClientChannel \ - (tclStubsPtr->tcl_MakeTcpClientChannel) /* 191 */ -#endif -#ifndef Tcl_Merge -#define Tcl_Merge \ - (tclStubsPtr->tcl_Merge) /* 192 */ -#endif -#ifndef Tcl_NextHashEntry -#define Tcl_NextHashEntry \ - (tclStubsPtr->tcl_NextHashEntry) /* 193 */ -#endif -#ifndef Tcl_NotifyChannel -#define Tcl_NotifyChannel \ - (tclStubsPtr->tcl_NotifyChannel) /* 194 */ -#endif -#ifndef Tcl_ObjGetVar2 -#define Tcl_ObjGetVar2 \ - (tclStubsPtr->tcl_ObjGetVar2) /* 195 */ -#endif -#ifndef Tcl_ObjSetVar2 -#define Tcl_ObjSetVar2 \ - (tclStubsPtr->tcl_ObjSetVar2) /* 196 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_OpenCommandChannel -#define Tcl_OpenCommandChannel \ - (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_OpenCommandChannel -#define Tcl_OpenCommandChannel \ - (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_OpenFileChannel -#define Tcl_OpenFileChannel \ - (tclStubsPtr->tcl_OpenFileChannel) /* 198 */ -#endif -#ifndef Tcl_OpenTcpClient -#define Tcl_OpenTcpClient \ - (tclStubsPtr->tcl_OpenTcpClient) /* 199 */ -#endif -#ifndef Tcl_OpenTcpServer -#define Tcl_OpenTcpServer \ - (tclStubsPtr->tcl_OpenTcpServer) /* 200 */ -#endif -#ifndef Tcl_Preserve -#define Tcl_Preserve \ - (tclStubsPtr->tcl_Preserve) /* 201 */ -#endif -#ifndef Tcl_PrintDouble -#define Tcl_PrintDouble \ - (tclStubsPtr->tcl_PrintDouble) /* 202 */ -#endif -#ifndef Tcl_PutEnv -#define Tcl_PutEnv \ - (tclStubsPtr->tcl_PutEnv) /* 203 */ -#endif -#ifndef Tcl_PosixError -#define Tcl_PosixError \ - (tclStubsPtr->tcl_PosixError) /* 204 */ -#endif -#ifndef Tcl_QueueEvent -#define Tcl_QueueEvent \ - (tclStubsPtr->tcl_QueueEvent) /* 205 */ -#endif -#ifndef Tcl_Read -#define Tcl_Read \ - (tclStubsPtr->tcl_Read) /* 206 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_ReapDetachedProcs -#define Tcl_ReapDetachedProcs \ - (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_ReapDetachedProcs -#define Tcl_ReapDetachedProcs \ - (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_RecordAndEval -#define Tcl_RecordAndEval \ - (tclStubsPtr->tcl_RecordAndEval) /* 208 */ -#endif -#ifndef Tcl_RecordAndEvalObj -#define Tcl_RecordAndEvalObj \ - (tclStubsPtr->tcl_RecordAndEvalObj) /* 209 */ -#endif -#ifndef Tcl_RegisterChannel -#define Tcl_RegisterChannel \ - (tclStubsPtr->tcl_RegisterChannel) /* 210 */ -#endif -#ifndef Tcl_RegisterObjType -#define Tcl_RegisterObjType \ - (tclStubsPtr->tcl_RegisterObjType) /* 211 */ -#endif -#ifndef Tcl_RegExpCompile -#define Tcl_RegExpCompile \ - (tclStubsPtr->tcl_RegExpCompile) /* 212 */ -#endif -#ifndef Tcl_RegExpExec -#define Tcl_RegExpExec \ - (tclStubsPtr->tcl_RegExpExec) /* 213 */ -#endif -#ifndef Tcl_RegExpMatch -#define Tcl_RegExpMatch \ - (tclStubsPtr->tcl_RegExpMatch) /* 214 */ -#endif -#ifndef Tcl_RegExpRange -#define Tcl_RegExpRange \ - (tclStubsPtr->tcl_RegExpRange) /* 215 */ -#endif -#ifndef Tcl_Release -#define Tcl_Release \ - (tclStubsPtr->tcl_Release) /* 216 */ -#endif -#ifndef Tcl_ResetResult -#define Tcl_ResetResult \ - (tclStubsPtr->tcl_ResetResult) /* 217 */ -#endif -#ifndef Tcl_ScanElement -#define Tcl_ScanElement \ - (tclStubsPtr->tcl_ScanElement) /* 218 */ -#endif -#ifndef Tcl_ScanCountedElement -#define Tcl_ScanCountedElement \ - (tclStubsPtr->tcl_ScanCountedElement) /* 219 */ -#endif -#ifndef Tcl_SeekOld -#define Tcl_SeekOld \ - (tclStubsPtr->tcl_SeekOld) /* 220 */ -#endif -#ifndef Tcl_ServiceAll -#define Tcl_ServiceAll \ - (tclStubsPtr->tcl_ServiceAll) /* 221 */ -#endif -#ifndef Tcl_ServiceEvent -#define Tcl_ServiceEvent \ - (tclStubsPtr->tcl_ServiceEvent) /* 222 */ -#endif -#ifndef Tcl_SetAssocData -#define Tcl_SetAssocData \ - (tclStubsPtr->tcl_SetAssocData) /* 223 */ -#endif -#ifndef Tcl_SetChannelBufferSize -#define Tcl_SetChannelBufferSize \ - (tclStubsPtr->tcl_SetChannelBufferSize) /* 224 */ -#endif -#ifndef Tcl_SetChannelOption -#define Tcl_SetChannelOption \ - (tclStubsPtr->tcl_SetChannelOption) /* 225 */ -#endif -#ifndef Tcl_SetCommandInfo -#define Tcl_SetCommandInfo \ - (tclStubsPtr->tcl_SetCommandInfo) /* 226 */ -#endif -#ifndef Tcl_SetErrno -#define Tcl_SetErrno \ - (tclStubsPtr->tcl_SetErrno) /* 227 */ -#endif -#ifndef Tcl_SetErrorCode -#define Tcl_SetErrorCode \ - (tclStubsPtr->tcl_SetErrorCode) /* 228 */ -#endif -#ifndef Tcl_SetMaxBlockTime -#define Tcl_SetMaxBlockTime \ - (tclStubsPtr->tcl_SetMaxBlockTime) /* 229 */ -#endif -#ifndef Tcl_SetPanicProc -#define Tcl_SetPanicProc \ - (tclStubsPtr->tcl_SetPanicProc) /* 230 */ -#endif -#ifndef Tcl_SetRecursionLimit -#define Tcl_SetRecursionLimit \ - (tclStubsPtr->tcl_SetRecursionLimit) /* 231 */ -#endif -#ifndef Tcl_SetResult -#define Tcl_SetResult \ - (tclStubsPtr->tcl_SetResult) /* 232 */ -#endif -#ifndef Tcl_SetServiceMode -#define Tcl_SetServiceMode \ - (tclStubsPtr->tcl_SetServiceMode) /* 233 */ -#endif -#ifndef Tcl_SetObjErrorCode -#define Tcl_SetObjErrorCode \ - (tclStubsPtr->tcl_SetObjErrorCode) /* 234 */ -#endif -#ifndef Tcl_SetObjResult -#define Tcl_SetObjResult \ - (tclStubsPtr->tcl_SetObjResult) /* 235 */ -#endif -#ifndef Tcl_SetStdChannel -#define Tcl_SetStdChannel \ - (tclStubsPtr->tcl_SetStdChannel) /* 236 */ -#endif -#ifndef Tcl_SetVar -#define Tcl_SetVar \ - (tclStubsPtr->tcl_SetVar) /* 237 */ -#endif -#ifndef Tcl_SetVar2 -#define Tcl_SetVar2 \ - (tclStubsPtr->tcl_SetVar2) /* 238 */ -#endif -#ifndef Tcl_SignalId -#define Tcl_SignalId \ - (tclStubsPtr->tcl_SignalId) /* 239 */ -#endif -#ifndef Tcl_SignalMsg -#define Tcl_SignalMsg \ - (tclStubsPtr->tcl_SignalMsg) /* 240 */ -#endif -#ifndef Tcl_SourceRCFile -#define Tcl_SourceRCFile \ - (tclStubsPtr->tcl_SourceRCFile) /* 241 */ -#endif -#ifndef Tcl_SplitList -#define Tcl_SplitList \ - (tclStubsPtr->tcl_SplitList) /* 242 */ -#endif -#ifndef Tcl_SplitPath -#define Tcl_SplitPath \ - (tclStubsPtr->tcl_SplitPath) /* 243 */ -#endif -#ifndef Tcl_StaticPackage -#define Tcl_StaticPackage \ - (tclStubsPtr->tcl_StaticPackage) /* 244 */ -#endif -#ifndef Tcl_StringMatch -#define Tcl_StringMatch \ - (tclStubsPtr->tcl_StringMatch) /* 245 */ -#endif -#ifndef Tcl_TellOld -#define Tcl_TellOld \ - (tclStubsPtr->tcl_TellOld) /* 246 */ -#endif -#ifndef Tcl_TraceVar -#define Tcl_TraceVar \ - (tclStubsPtr->tcl_TraceVar) /* 247 */ -#endif -#ifndef Tcl_TraceVar2 -#define Tcl_TraceVar2 \ - (tclStubsPtr->tcl_TraceVar2) /* 248 */ -#endif -#ifndef Tcl_TranslateFileName -#define Tcl_TranslateFileName \ - (tclStubsPtr->tcl_TranslateFileName) /* 249 */ -#endif -#ifndef Tcl_Ungets -#define Tcl_Ungets \ - (tclStubsPtr->tcl_Ungets) /* 250 */ -#endif -#ifndef Tcl_UnlinkVar -#define Tcl_UnlinkVar \ - (tclStubsPtr->tcl_UnlinkVar) /* 251 */ -#endif -#ifndef Tcl_UnregisterChannel -#define Tcl_UnregisterChannel \ - (tclStubsPtr->tcl_UnregisterChannel) /* 252 */ -#endif -#ifndef Tcl_UnsetVar -#define Tcl_UnsetVar \ - (tclStubsPtr->tcl_UnsetVar) /* 253 */ -#endif -#ifndef Tcl_UnsetVar2 -#define Tcl_UnsetVar2 \ - (tclStubsPtr->tcl_UnsetVar2) /* 254 */ -#endif -#ifndef Tcl_UntraceVar -#define Tcl_UntraceVar \ - (tclStubsPtr->tcl_UntraceVar) /* 255 */ -#endif -#ifndef Tcl_UntraceVar2 -#define Tcl_UntraceVar2 \ - (tclStubsPtr->tcl_UntraceVar2) /* 256 */ -#endif -#ifndef Tcl_UpdateLinkedVar -#define Tcl_UpdateLinkedVar \ - (tclStubsPtr->tcl_UpdateLinkedVar) /* 257 */ -#endif -#ifndef Tcl_UpVar -#define Tcl_UpVar \ - (tclStubsPtr->tcl_UpVar) /* 258 */ -#endif -#ifndef Tcl_UpVar2 -#define Tcl_UpVar2 \ - (tclStubsPtr->tcl_UpVar2) /* 259 */ -#endif -#ifndef Tcl_VarEval -#define Tcl_VarEval \ - (tclStubsPtr->tcl_VarEval) /* 260 */ -#endif -#ifndef Tcl_VarTraceInfo -#define Tcl_VarTraceInfo \ - (tclStubsPtr->tcl_VarTraceInfo) /* 261 */ -#endif -#ifndef Tcl_VarTraceInfo2 -#define Tcl_VarTraceInfo2 \ - (tclStubsPtr->tcl_VarTraceInfo2) /* 262 */ -#endif -#ifndef Tcl_Write -#define Tcl_Write \ - (tclStubsPtr->tcl_Write) /* 263 */ -#endif -#ifndef Tcl_WrongNumArgs -#define Tcl_WrongNumArgs \ - (tclStubsPtr->tcl_WrongNumArgs) /* 264 */ -#endif -#ifndef Tcl_DumpActiveMemory -#define Tcl_DumpActiveMemory \ - (tclStubsPtr->tcl_DumpActiveMemory) /* 265 */ -#endif -#ifndef Tcl_ValidateAllMemory -#define Tcl_ValidateAllMemory \ - (tclStubsPtr->tcl_ValidateAllMemory) /* 266 */ -#endif -#ifndef Tcl_AppendResultVA -#define Tcl_AppendResultVA \ - (tclStubsPtr->tcl_AppendResultVA) /* 267 */ -#endif -#ifndef Tcl_AppendStringsToObjVA -#define Tcl_AppendStringsToObjVA \ - (tclStubsPtr->tcl_AppendStringsToObjVA) /* 268 */ -#endif -#ifndef Tcl_HashStats -#define Tcl_HashStats \ - (tclStubsPtr->tcl_HashStats) /* 269 */ -#endif -#ifndef Tcl_ParseVar -#define Tcl_ParseVar \ - (tclStubsPtr->tcl_ParseVar) /* 270 */ -#endif -#ifndef Tcl_PkgPresent -#define Tcl_PkgPresent \ - (tclStubsPtr->tcl_PkgPresent) /* 271 */ -#endif -#ifndef Tcl_PkgPresentEx -#define Tcl_PkgPresentEx \ - (tclStubsPtr->tcl_PkgPresentEx) /* 272 */ -#endif -#ifndef Tcl_PkgProvide -#define Tcl_PkgProvide \ - (tclStubsPtr->tcl_PkgProvide) /* 273 */ -#endif -#ifndef Tcl_PkgRequire -#define Tcl_PkgRequire \ - (tclStubsPtr->tcl_PkgRequire) /* 274 */ -#endif -#ifndef Tcl_SetErrorCodeVA -#define Tcl_SetErrorCodeVA \ - (tclStubsPtr->tcl_SetErrorCodeVA) /* 275 */ -#endif -#ifndef Tcl_VarEvalVA -#define Tcl_VarEvalVA \ - (tclStubsPtr->tcl_VarEvalVA) /* 276 */ -#endif -#ifndef Tcl_WaitPid -#define Tcl_WaitPid \ - (tclStubsPtr->tcl_WaitPid) /* 277 */ -#endif -#ifndef Tcl_PanicVA -#define Tcl_PanicVA \ - (tclStubsPtr->tcl_PanicVA) /* 278 */ -#endif -#ifndef Tcl_GetVersion -#define Tcl_GetVersion \ - (tclStubsPtr->tcl_GetVersion) /* 279 */ -#endif -#ifndef Tcl_InitMemory -#define Tcl_InitMemory \ - (tclStubsPtr->tcl_InitMemory) /* 280 */ -#endif -#ifndef Tcl_StackChannel -#define Tcl_StackChannel \ - (tclStubsPtr->tcl_StackChannel) /* 281 */ -#endif -#ifndef Tcl_UnstackChannel -#define Tcl_UnstackChannel \ - (tclStubsPtr->tcl_UnstackChannel) /* 282 */ -#endif -#ifndef Tcl_GetStackedChannel -#define Tcl_GetStackedChannel \ - (tclStubsPtr->tcl_GetStackedChannel) /* 283 */ -#endif -#ifndef Tcl_SetMainLoop -#define Tcl_SetMainLoop \ - (tclStubsPtr->tcl_SetMainLoop) /* 284 */ -#endif -/* Slot 285 is reserved */ -#ifndef Tcl_AppendObjToObj -#define Tcl_AppendObjToObj \ - (tclStubsPtr->tcl_AppendObjToObj) /* 286 */ -#endif -#ifndef Tcl_CreateEncoding -#define Tcl_CreateEncoding \ - (tclStubsPtr->tcl_CreateEncoding) /* 287 */ -#endif -#ifndef Tcl_CreateThreadExitHandler -#define Tcl_CreateThreadExitHandler \ - (tclStubsPtr->tcl_CreateThreadExitHandler) /* 288 */ -#endif -#ifndef Tcl_DeleteThreadExitHandler -#define Tcl_DeleteThreadExitHandler \ - (tclStubsPtr->tcl_DeleteThreadExitHandler) /* 289 */ -#endif -#ifndef Tcl_DiscardResult -#define Tcl_DiscardResult \ - (tclStubsPtr->tcl_DiscardResult) /* 290 */ -#endif -#ifndef Tcl_EvalEx -#define Tcl_EvalEx \ - (tclStubsPtr->tcl_EvalEx) /* 291 */ -#endif -#ifndef Tcl_EvalObjv -#define Tcl_EvalObjv \ - (tclStubsPtr->tcl_EvalObjv) /* 292 */ -#endif -#ifndef Tcl_EvalObjEx -#define Tcl_EvalObjEx \ - (tclStubsPtr->tcl_EvalObjEx) /* 293 */ -#endif -#ifndef Tcl_ExitThread -#define Tcl_ExitThread \ - (tclStubsPtr->tcl_ExitThread) /* 294 */ -#endif -#ifndef Tcl_ExternalToUtf -#define Tcl_ExternalToUtf \ - (tclStubsPtr->tcl_ExternalToUtf) /* 295 */ -#endif -#ifndef Tcl_ExternalToUtfDString -#define Tcl_ExternalToUtfDString \ - (tclStubsPtr->tcl_ExternalToUtfDString) /* 296 */ -#endif -#ifndef Tcl_FinalizeThread -#define Tcl_FinalizeThread \ - (tclStubsPtr->tcl_FinalizeThread) /* 297 */ -#endif -#ifndef Tcl_FinalizeNotifier -#define Tcl_FinalizeNotifier \ - (tclStubsPtr->tcl_FinalizeNotifier) /* 298 */ -#endif -#ifndef Tcl_FreeEncoding -#define Tcl_FreeEncoding \ - (tclStubsPtr->tcl_FreeEncoding) /* 299 */ -#endif -#ifndef Tcl_GetCurrentThread -#define Tcl_GetCurrentThread \ - (tclStubsPtr->tcl_GetCurrentThread) /* 300 */ -#endif -#ifndef Tcl_GetEncoding -#define Tcl_GetEncoding \ - (tclStubsPtr->tcl_GetEncoding) /* 301 */ -#endif -#ifndef Tcl_GetEncodingName -#define Tcl_GetEncodingName \ - (tclStubsPtr->tcl_GetEncodingName) /* 302 */ -#endif -#ifndef Tcl_GetEncodingNames -#define Tcl_GetEncodingNames \ - (tclStubsPtr->tcl_GetEncodingNames) /* 303 */ -#endif -#ifndef Tcl_GetIndexFromObjStruct -#define Tcl_GetIndexFromObjStruct \ - (tclStubsPtr->tcl_GetIndexFromObjStruct) /* 304 */ -#endif -#ifndef Tcl_GetThreadData -#define Tcl_GetThreadData \ - (tclStubsPtr->tcl_GetThreadData) /* 305 */ -#endif -#ifndef Tcl_GetVar2Ex -#define Tcl_GetVar2Ex \ - (tclStubsPtr->tcl_GetVar2Ex) /* 306 */ -#endif -#ifndef Tcl_InitNotifier -#define Tcl_InitNotifier \ - (tclStubsPtr->tcl_InitNotifier) /* 307 */ -#endif -#ifndef Tcl_MutexLock -#define Tcl_MutexLock \ - (tclStubsPtr->tcl_MutexLock) /* 308 */ -#endif -#ifndef Tcl_MutexUnlock -#define Tcl_MutexUnlock \ - (tclStubsPtr->tcl_MutexUnlock) /* 309 */ -#endif -#ifndef Tcl_ConditionNotify -#define Tcl_ConditionNotify \ - (tclStubsPtr->tcl_ConditionNotify) /* 310 */ -#endif -#ifndef Tcl_ConditionWait -#define Tcl_ConditionWait \ - (tclStubsPtr->tcl_ConditionWait) /* 311 */ -#endif -#ifndef Tcl_NumUtfChars -#define Tcl_NumUtfChars \ - (tclStubsPtr->tcl_NumUtfChars) /* 312 */ -#endif -#ifndef Tcl_ReadChars -#define Tcl_ReadChars \ - (tclStubsPtr->tcl_ReadChars) /* 313 */ -#endif -#ifndef Tcl_RestoreResult -#define Tcl_RestoreResult \ - (tclStubsPtr->tcl_RestoreResult) /* 314 */ -#endif -#ifndef Tcl_SaveResult -#define Tcl_SaveResult \ - (tclStubsPtr->tcl_SaveResult) /* 315 */ -#endif -#ifndef Tcl_SetSystemEncoding -#define Tcl_SetSystemEncoding \ - (tclStubsPtr->tcl_SetSystemEncoding) /* 316 */ -#endif -#ifndef Tcl_SetVar2Ex -#define Tcl_SetVar2Ex \ - (tclStubsPtr->tcl_SetVar2Ex) /* 317 */ -#endif -#ifndef Tcl_ThreadAlert -#define Tcl_ThreadAlert \ - (tclStubsPtr->tcl_ThreadAlert) /* 318 */ -#endif -#ifndef Tcl_ThreadQueueEvent -#define Tcl_ThreadQueueEvent \ - (tclStubsPtr->tcl_ThreadQueueEvent) /* 319 */ -#endif -#ifndef Tcl_UniCharAtIndex -#define Tcl_UniCharAtIndex \ - (tclStubsPtr->tcl_UniCharAtIndex) /* 320 */ -#endif -#ifndef Tcl_UniCharToLower -#define Tcl_UniCharToLower \ - (tclStubsPtr->tcl_UniCharToLower) /* 321 */ -#endif -#ifndef Tcl_UniCharToTitle -#define Tcl_UniCharToTitle \ - (tclStubsPtr->tcl_UniCharToTitle) /* 322 */ -#endif -#ifndef Tcl_UniCharToUpper -#define Tcl_UniCharToUpper \ - (tclStubsPtr->tcl_UniCharToUpper) /* 323 */ -#endif -#ifndef Tcl_UniCharToUtf -#define Tcl_UniCharToUtf \ - (tclStubsPtr->tcl_UniCharToUtf) /* 324 */ -#endif -#ifndef Tcl_UtfAtIndex -#define Tcl_UtfAtIndex \ - (tclStubsPtr->tcl_UtfAtIndex) /* 325 */ -#endif -#ifndef Tcl_UtfCharComplete -#define Tcl_UtfCharComplete \ - (tclStubsPtr->tcl_UtfCharComplete) /* 326 */ -#endif -#ifndef Tcl_UtfBackslash -#define Tcl_UtfBackslash \ - (tclStubsPtr->tcl_UtfBackslash) /* 327 */ -#endif -#ifndef Tcl_UtfFindFirst -#define Tcl_UtfFindFirst \ - (tclStubsPtr->tcl_UtfFindFirst) /* 328 */ -#endif -#ifndef Tcl_UtfFindLast -#define Tcl_UtfFindLast \ - (tclStubsPtr->tcl_UtfFindLast) /* 329 */ -#endif -#ifndef Tcl_UtfNext -#define Tcl_UtfNext \ - (tclStubsPtr->tcl_UtfNext) /* 330 */ -#endif -#ifndef Tcl_UtfPrev -#define Tcl_UtfPrev \ - (tclStubsPtr->tcl_UtfPrev) /* 331 */ -#endif -#ifndef Tcl_UtfToExternal -#define Tcl_UtfToExternal \ - (tclStubsPtr->tcl_UtfToExternal) /* 332 */ -#endif -#ifndef Tcl_UtfToExternalDString -#define Tcl_UtfToExternalDString \ - (tclStubsPtr->tcl_UtfToExternalDString) /* 333 */ -#endif -#ifndef Tcl_UtfToLower -#define Tcl_UtfToLower \ - (tclStubsPtr->tcl_UtfToLower) /* 334 */ -#endif -#ifndef Tcl_UtfToTitle -#define Tcl_UtfToTitle \ - (tclStubsPtr->tcl_UtfToTitle) /* 335 */ -#endif -#ifndef Tcl_UtfToUniChar -#define Tcl_UtfToUniChar \ - (tclStubsPtr->tcl_UtfToUniChar) /* 336 */ -#endif -#ifndef Tcl_UtfToUpper -#define Tcl_UtfToUpper \ - (tclStubsPtr->tcl_UtfToUpper) /* 337 */ -#endif -#ifndef Tcl_WriteChars -#define Tcl_WriteChars \ - (tclStubsPtr->tcl_WriteChars) /* 338 */ -#endif -#ifndef Tcl_WriteObj -#define Tcl_WriteObj \ - (tclStubsPtr->tcl_WriteObj) /* 339 */ -#endif -#ifndef Tcl_GetString -#define Tcl_GetString \ - (tclStubsPtr->tcl_GetString) /* 340 */ -#endif -#ifndef Tcl_GetDefaultEncodingDir -#define Tcl_GetDefaultEncodingDir \ - (tclStubsPtr->tcl_GetDefaultEncodingDir) /* 341 */ -#endif -#ifndef Tcl_SetDefaultEncodingDir -#define Tcl_SetDefaultEncodingDir \ - (tclStubsPtr->tcl_SetDefaultEncodingDir) /* 342 */ -#endif -#ifndef Tcl_AlertNotifier -#define Tcl_AlertNotifier \ - (tclStubsPtr->tcl_AlertNotifier) /* 343 */ -#endif -#ifndef Tcl_ServiceModeHook -#define Tcl_ServiceModeHook \ - (tclStubsPtr->tcl_ServiceModeHook) /* 344 */ -#endif -#ifndef Tcl_UniCharIsAlnum -#define Tcl_UniCharIsAlnum \ - (tclStubsPtr->tcl_UniCharIsAlnum) /* 345 */ -#endif -#ifndef Tcl_UniCharIsAlpha -#define Tcl_UniCharIsAlpha \ - (tclStubsPtr->tcl_UniCharIsAlpha) /* 346 */ -#endif -#ifndef Tcl_UniCharIsDigit -#define Tcl_UniCharIsDigit \ - (tclStubsPtr->tcl_UniCharIsDigit) /* 347 */ -#endif -#ifndef Tcl_UniCharIsLower -#define Tcl_UniCharIsLower \ - (tclStubsPtr->tcl_UniCharIsLower) /* 348 */ -#endif -#ifndef Tcl_UniCharIsSpace -#define Tcl_UniCharIsSpace \ - (tclStubsPtr->tcl_UniCharIsSpace) /* 349 */ -#endif -#ifndef Tcl_UniCharIsUpper -#define Tcl_UniCharIsUpper \ - (tclStubsPtr->tcl_UniCharIsUpper) /* 350 */ -#endif -#ifndef Tcl_UniCharIsWordChar -#define Tcl_UniCharIsWordChar \ - (tclStubsPtr->tcl_UniCharIsWordChar) /* 351 */ -#endif -#ifndef Tcl_UniCharLen -#define Tcl_UniCharLen \ - (tclStubsPtr->tcl_UniCharLen) /* 352 */ -#endif -#ifndef Tcl_UniCharNcmp -#define Tcl_UniCharNcmp \ - (tclStubsPtr->tcl_UniCharNcmp) /* 353 */ -#endif -#ifndef Tcl_UniCharToUtfDString -#define Tcl_UniCharToUtfDString \ - (tclStubsPtr->tcl_UniCharToUtfDString) /* 354 */ -#endif -#ifndef Tcl_UtfToUniCharDString -#define Tcl_UtfToUniCharDString \ - (tclStubsPtr->tcl_UtfToUniCharDString) /* 355 */ -#endif -#ifndef Tcl_GetRegExpFromObj -#define Tcl_GetRegExpFromObj \ - (tclStubsPtr->tcl_GetRegExpFromObj) /* 356 */ -#endif -#ifndef Tcl_EvalTokens -#define Tcl_EvalTokens \ - (tclStubsPtr->tcl_EvalTokens) /* 357 */ -#endif -#ifndef Tcl_FreeParse -#define Tcl_FreeParse \ - (tclStubsPtr->tcl_FreeParse) /* 358 */ -#endif -#ifndef Tcl_LogCommandInfo -#define Tcl_LogCommandInfo \ - (tclStubsPtr->tcl_LogCommandInfo) /* 359 */ -#endif -#ifndef Tcl_ParseBraces -#define Tcl_ParseBraces \ - (tclStubsPtr->tcl_ParseBraces) /* 360 */ -#endif -#ifndef Tcl_ParseCommand -#define Tcl_ParseCommand \ - (tclStubsPtr->tcl_ParseCommand) /* 361 */ -#endif -#ifndef Tcl_ParseExpr -#define Tcl_ParseExpr \ - (tclStubsPtr->tcl_ParseExpr) /* 362 */ -#endif -#ifndef Tcl_ParseQuotedString -#define Tcl_ParseQuotedString \ - (tclStubsPtr->tcl_ParseQuotedString) /* 363 */ -#endif -#ifndef Tcl_ParseVarName -#define Tcl_ParseVarName \ - (tclStubsPtr->tcl_ParseVarName) /* 364 */ -#endif -#ifndef Tcl_GetCwd -#define Tcl_GetCwd \ - (tclStubsPtr->tcl_GetCwd) /* 365 */ -#endif -#ifndef Tcl_Chdir -#define Tcl_Chdir \ - (tclStubsPtr->tcl_Chdir) /* 366 */ -#endif -#ifndef Tcl_Access -#define Tcl_Access \ - (tclStubsPtr->tcl_Access) /* 367 */ -#endif -#ifndef Tcl_Stat -#define Tcl_Stat \ - (tclStubsPtr->tcl_Stat) /* 368 */ -#endif -#ifndef Tcl_UtfNcmp -#define Tcl_UtfNcmp \ - (tclStubsPtr->tcl_UtfNcmp) /* 369 */ -#endif -#ifndef Tcl_UtfNcasecmp -#define Tcl_UtfNcasecmp \ - (tclStubsPtr->tcl_UtfNcasecmp) /* 370 */ -#endif -#ifndef Tcl_StringCaseMatch -#define Tcl_StringCaseMatch \ - (tclStubsPtr->tcl_StringCaseMatch) /* 371 */ -#endif -#ifndef Tcl_UniCharIsControl -#define Tcl_UniCharIsControl \ - (tclStubsPtr->tcl_UniCharIsControl) /* 372 */ -#endif -#ifndef Tcl_UniCharIsGraph -#define Tcl_UniCharIsGraph \ - (tclStubsPtr->tcl_UniCharIsGraph) /* 373 */ -#endif -#ifndef Tcl_UniCharIsPrint -#define Tcl_UniCharIsPrint \ - (tclStubsPtr->tcl_UniCharIsPrint) /* 374 */ -#endif -#ifndef Tcl_UniCharIsPunct -#define Tcl_UniCharIsPunct \ - (tclStubsPtr->tcl_UniCharIsPunct) /* 375 */ -#endif -#ifndef Tcl_RegExpExecObj -#define Tcl_RegExpExecObj \ - (tclStubsPtr->tcl_RegExpExecObj) /* 376 */ -#endif -#ifndef Tcl_RegExpGetInfo -#define Tcl_RegExpGetInfo \ - (tclStubsPtr->tcl_RegExpGetInfo) /* 377 */ -#endif -#ifndef Tcl_NewUnicodeObj -#define Tcl_NewUnicodeObj \ - (tclStubsPtr->tcl_NewUnicodeObj) /* 378 */ -#endif -#ifndef Tcl_SetUnicodeObj -#define Tcl_SetUnicodeObj \ - (tclStubsPtr->tcl_SetUnicodeObj) /* 379 */ -#endif -#ifndef Tcl_GetCharLength -#define Tcl_GetCharLength \ - (tclStubsPtr->tcl_GetCharLength) /* 380 */ -#endif -#ifndef Tcl_GetUniChar -#define Tcl_GetUniChar \ - (tclStubsPtr->tcl_GetUniChar) /* 381 */ -#endif -#ifndef Tcl_GetUnicode -#define Tcl_GetUnicode \ - (tclStubsPtr->tcl_GetUnicode) /* 382 */ -#endif -#ifndef Tcl_GetRange -#define Tcl_GetRange \ - (tclStubsPtr->tcl_GetRange) /* 383 */ -#endif -#ifndef Tcl_AppendUnicodeToObj -#define Tcl_AppendUnicodeToObj \ - (tclStubsPtr->tcl_AppendUnicodeToObj) /* 384 */ -#endif -#ifndef Tcl_RegExpMatchObj -#define Tcl_RegExpMatchObj \ - (tclStubsPtr->tcl_RegExpMatchObj) /* 385 */ -#endif -#ifndef Tcl_SetNotifier -#define Tcl_SetNotifier \ - (tclStubsPtr->tcl_SetNotifier) /* 386 */ -#endif -#ifndef Tcl_GetAllocMutex -#define Tcl_GetAllocMutex \ - (tclStubsPtr->tcl_GetAllocMutex) /* 387 */ -#endif -#ifndef Tcl_GetChannelNames -#define Tcl_GetChannelNames \ - (tclStubsPtr->tcl_GetChannelNames) /* 388 */ -#endif -#ifndef Tcl_GetChannelNamesEx -#define Tcl_GetChannelNamesEx \ - (tclStubsPtr->tcl_GetChannelNamesEx) /* 389 */ -#endif -#ifndef Tcl_ProcObjCmd -#define Tcl_ProcObjCmd \ - (tclStubsPtr->tcl_ProcObjCmd) /* 390 */ -#endif -#ifndef Tcl_ConditionFinalize -#define Tcl_ConditionFinalize \ - (tclStubsPtr->tcl_ConditionFinalize) /* 391 */ -#endif -#ifndef Tcl_MutexFinalize -#define Tcl_MutexFinalize \ - (tclStubsPtr->tcl_MutexFinalize) /* 392 */ -#endif -#ifndef Tcl_CreateThread -#define Tcl_CreateThread \ - (tclStubsPtr->tcl_CreateThread) /* 393 */ -#endif -#ifndef Tcl_ReadRaw -#define Tcl_ReadRaw \ - (tclStubsPtr->tcl_ReadRaw) /* 394 */ -#endif -#ifndef Tcl_WriteRaw -#define Tcl_WriteRaw \ - (tclStubsPtr->tcl_WriteRaw) /* 395 */ -#endif -#ifndef Tcl_GetTopChannel -#define Tcl_GetTopChannel \ - (tclStubsPtr->tcl_GetTopChannel) /* 396 */ -#endif -#ifndef Tcl_ChannelBuffered -#define Tcl_ChannelBuffered \ - (tclStubsPtr->tcl_ChannelBuffered) /* 397 */ -#endif -#ifndef Tcl_ChannelName -#define Tcl_ChannelName \ - (tclStubsPtr->tcl_ChannelName) /* 398 */ -#endif -#ifndef Tcl_ChannelVersion -#define Tcl_ChannelVersion \ - (tclStubsPtr->tcl_ChannelVersion) /* 399 */ -#endif -#ifndef Tcl_ChannelBlockModeProc -#define Tcl_ChannelBlockModeProc \ - (tclStubsPtr->tcl_ChannelBlockModeProc) /* 400 */ -#endif -#ifndef Tcl_ChannelCloseProc -#define Tcl_ChannelCloseProc \ - (tclStubsPtr->tcl_ChannelCloseProc) /* 401 */ -#endif -#ifndef Tcl_ChannelClose2Proc -#define Tcl_ChannelClose2Proc \ - (tclStubsPtr->tcl_ChannelClose2Proc) /* 402 */ -#endif -#ifndef Tcl_ChannelInputProc -#define Tcl_ChannelInputProc \ - (tclStubsPtr->tcl_ChannelInputProc) /* 403 */ -#endif -#ifndef Tcl_ChannelOutputProc -#define Tcl_ChannelOutputProc \ - (tclStubsPtr->tcl_ChannelOutputProc) /* 404 */ -#endif -#ifndef Tcl_ChannelSeekProc -#define Tcl_ChannelSeekProc \ - (tclStubsPtr->tcl_ChannelSeekProc) /* 405 */ -#endif -#ifndef Tcl_ChannelSetOptionProc -#define Tcl_ChannelSetOptionProc \ - (tclStubsPtr->tcl_ChannelSetOptionProc) /* 406 */ -#endif -#ifndef Tcl_ChannelGetOptionProc -#define Tcl_ChannelGetOptionProc \ - (tclStubsPtr->tcl_ChannelGetOptionProc) /* 407 */ -#endif -#ifndef Tcl_ChannelWatchProc -#define Tcl_ChannelWatchProc \ - (tclStubsPtr->tcl_ChannelWatchProc) /* 408 */ -#endif -#ifndef Tcl_ChannelGetHandleProc -#define Tcl_ChannelGetHandleProc \ - (tclStubsPtr->tcl_ChannelGetHandleProc) /* 409 */ -#endif -#ifndef Tcl_ChannelFlushProc -#define Tcl_ChannelFlushProc \ - (tclStubsPtr->tcl_ChannelFlushProc) /* 410 */ -#endif -#ifndef Tcl_ChannelHandlerProc -#define Tcl_ChannelHandlerProc \ - (tclStubsPtr->tcl_ChannelHandlerProc) /* 411 */ -#endif -#ifndef Tcl_JoinThread -#define Tcl_JoinThread \ - (tclStubsPtr->tcl_JoinThread) /* 412 */ -#endif -#ifndef Tcl_IsChannelShared -#define Tcl_IsChannelShared \ - (tclStubsPtr->tcl_IsChannelShared) /* 413 */ -#endif -#ifndef Tcl_IsChannelRegistered -#define Tcl_IsChannelRegistered \ - (tclStubsPtr->tcl_IsChannelRegistered) /* 414 */ -#endif -#ifndef Tcl_CutChannel -#define Tcl_CutChannel \ - (tclStubsPtr->tcl_CutChannel) /* 415 */ -#endif -#ifndef Tcl_SpliceChannel -#define Tcl_SpliceChannel \ - (tclStubsPtr->tcl_SpliceChannel) /* 416 */ -#endif -#ifndef Tcl_ClearChannelHandlers -#define Tcl_ClearChannelHandlers \ - (tclStubsPtr->tcl_ClearChannelHandlers) /* 417 */ -#endif -#ifndef Tcl_IsChannelExisting -#define Tcl_IsChannelExisting \ - (tclStubsPtr->tcl_IsChannelExisting) /* 418 */ -#endif -#ifndef Tcl_UniCharNcasecmp -#define Tcl_UniCharNcasecmp \ - (tclStubsPtr->tcl_UniCharNcasecmp) /* 419 */ -#endif -#ifndef Tcl_UniCharCaseMatch -#define Tcl_UniCharCaseMatch \ - (tclStubsPtr->tcl_UniCharCaseMatch) /* 420 */ -#endif -#ifndef Tcl_FindHashEntry -#define Tcl_FindHashEntry \ - (tclStubsPtr->tcl_FindHashEntry) /* 421 */ -#endif -#ifndef Tcl_CreateHashEntry -#define Tcl_CreateHashEntry \ - (tclStubsPtr->tcl_CreateHashEntry) /* 422 */ -#endif -#ifndef Tcl_InitCustomHashTable -#define Tcl_InitCustomHashTable \ - (tclStubsPtr->tcl_InitCustomHashTable) /* 423 */ -#endif -#ifndef Tcl_InitObjHashTable -#define Tcl_InitObjHashTable \ - (tclStubsPtr->tcl_InitObjHashTable) /* 424 */ -#endif -#ifndef Tcl_CommandTraceInfo -#define Tcl_CommandTraceInfo \ - (tclStubsPtr->tcl_CommandTraceInfo) /* 425 */ -#endif -#ifndef Tcl_TraceCommand -#define Tcl_TraceCommand \ - (tclStubsPtr->tcl_TraceCommand) /* 426 */ -#endif -#ifndef Tcl_UntraceCommand -#define Tcl_UntraceCommand \ - (tclStubsPtr->tcl_UntraceCommand) /* 427 */ -#endif -#ifndef Tcl_AttemptAlloc -#define Tcl_AttemptAlloc \ - (tclStubsPtr->tcl_AttemptAlloc) /* 428 */ -#endif -#ifndef Tcl_AttemptDbCkalloc -#define Tcl_AttemptDbCkalloc \ - (tclStubsPtr->tcl_AttemptDbCkalloc) /* 429 */ -#endif -#ifndef Tcl_AttemptRealloc -#define Tcl_AttemptRealloc \ - (tclStubsPtr->tcl_AttemptRealloc) /* 430 */ -#endif -#ifndef Tcl_AttemptDbCkrealloc -#define Tcl_AttemptDbCkrealloc \ - (tclStubsPtr->tcl_AttemptDbCkrealloc) /* 431 */ -#endif -#ifndef Tcl_AttemptSetObjLength -#define Tcl_AttemptSetObjLength \ - (tclStubsPtr->tcl_AttemptSetObjLength) /* 432 */ -#endif -#ifndef Tcl_GetChannelThread -#define Tcl_GetChannelThread \ - (tclStubsPtr->tcl_GetChannelThread) /* 433 */ -#endif -#ifndef Tcl_GetUnicodeFromObj -#define Tcl_GetUnicodeFromObj \ - (tclStubsPtr->tcl_GetUnicodeFromObj) /* 434 */ -#endif -#ifndef Tcl_GetMathFuncInfo -#define Tcl_GetMathFuncInfo \ - (tclStubsPtr->tcl_GetMathFuncInfo) /* 435 */ -#endif -#ifndef Tcl_ListMathFuncs -#define Tcl_ListMathFuncs \ - (tclStubsPtr->tcl_ListMathFuncs) /* 436 */ -#endif -#ifndef Tcl_SubstObj -#define Tcl_SubstObj \ - (tclStubsPtr->tcl_SubstObj) /* 437 */ -#endif -#ifndef Tcl_DetachChannel -#define Tcl_DetachChannel \ - (tclStubsPtr->tcl_DetachChannel) /* 438 */ -#endif -#ifndef Tcl_IsStandardChannel -#define Tcl_IsStandardChannel \ - (tclStubsPtr->tcl_IsStandardChannel) /* 439 */ -#endif -#ifndef Tcl_FSCopyFile -#define Tcl_FSCopyFile \ - (tclStubsPtr->tcl_FSCopyFile) /* 440 */ -#endif -#ifndef Tcl_FSCopyDirectory -#define Tcl_FSCopyDirectory \ - (tclStubsPtr->tcl_FSCopyDirectory) /* 441 */ -#endif -#ifndef Tcl_FSCreateDirectory -#define Tcl_FSCreateDirectory \ - (tclStubsPtr->tcl_FSCreateDirectory) /* 442 */ -#endif -#ifndef Tcl_FSDeleteFile -#define Tcl_FSDeleteFile \ - (tclStubsPtr->tcl_FSDeleteFile) /* 443 */ -#endif -#ifndef Tcl_FSLoadFile -#define Tcl_FSLoadFile \ - (tclStubsPtr->tcl_FSLoadFile) /* 444 */ -#endif -#ifndef Tcl_FSMatchInDirectory -#define Tcl_FSMatchInDirectory \ - (tclStubsPtr->tcl_FSMatchInDirectory) /* 445 */ -#endif -#ifndef Tcl_FSLink -#define Tcl_FSLink \ - (tclStubsPtr->tcl_FSLink) /* 446 */ -#endif -#ifndef Tcl_FSRemoveDirectory -#define Tcl_FSRemoveDirectory \ - (tclStubsPtr->tcl_FSRemoveDirectory) /* 447 */ -#endif -#ifndef Tcl_FSRenameFile -#define Tcl_FSRenameFile \ - (tclStubsPtr->tcl_FSRenameFile) /* 448 */ -#endif -#ifndef Tcl_FSLstat -#define Tcl_FSLstat \ - (tclStubsPtr->tcl_FSLstat) /* 449 */ -#endif -#ifndef Tcl_FSUtime -#define Tcl_FSUtime \ - (tclStubsPtr->tcl_FSUtime) /* 450 */ -#endif -#ifndef Tcl_FSFileAttrsGet -#define Tcl_FSFileAttrsGet \ - (tclStubsPtr->tcl_FSFileAttrsGet) /* 451 */ -#endif -#ifndef Tcl_FSFileAttrsSet -#define Tcl_FSFileAttrsSet \ - (tclStubsPtr->tcl_FSFileAttrsSet) /* 452 */ -#endif -#ifndef Tcl_FSFileAttrStrings -#define Tcl_FSFileAttrStrings \ - (tclStubsPtr->tcl_FSFileAttrStrings) /* 453 */ -#endif -#ifndef Tcl_FSStat -#define Tcl_FSStat \ - (tclStubsPtr->tcl_FSStat) /* 454 */ -#endif -#ifndef Tcl_FSAccess -#define Tcl_FSAccess \ - (tclStubsPtr->tcl_FSAccess) /* 455 */ -#endif -#ifndef Tcl_FSOpenFileChannel -#define Tcl_FSOpenFileChannel \ - (tclStubsPtr->tcl_FSOpenFileChannel) /* 456 */ -#endif -#ifndef Tcl_FSGetCwd -#define Tcl_FSGetCwd \ - (tclStubsPtr->tcl_FSGetCwd) /* 457 */ -#endif -#ifndef Tcl_FSChdir -#define Tcl_FSChdir \ - (tclStubsPtr->tcl_FSChdir) /* 458 */ -#endif -#ifndef Tcl_FSConvertToPathType -#define Tcl_FSConvertToPathType \ - (tclStubsPtr->tcl_FSConvertToPathType) /* 459 */ -#endif -#ifndef Tcl_FSJoinPath -#define Tcl_FSJoinPath \ - (tclStubsPtr->tcl_FSJoinPath) /* 460 */ -#endif -#ifndef Tcl_FSSplitPath -#define Tcl_FSSplitPath \ - (tclStubsPtr->tcl_FSSplitPath) /* 461 */ -#endif -#ifndef Tcl_FSEqualPaths -#define Tcl_FSEqualPaths \ - (tclStubsPtr->tcl_FSEqualPaths) /* 462 */ -#endif -#ifndef Tcl_FSGetNormalizedPath -#define Tcl_FSGetNormalizedPath \ - (tclStubsPtr->tcl_FSGetNormalizedPath) /* 463 */ -#endif -#ifndef Tcl_FSJoinToPath -#define Tcl_FSJoinToPath \ - (tclStubsPtr->tcl_FSJoinToPath) /* 464 */ -#endif -#ifndef Tcl_FSGetInternalRep -#define Tcl_FSGetInternalRep \ - (tclStubsPtr->tcl_FSGetInternalRep) /* 465 */ -#endif -#ifndef Tcl_FSGetTranslatedPath -#define Tcl_FSGetTranslatedPath \ - (tclStubsPtr->tcl_FSGetTranslatedPath) /* 466 */ -#endif -#ifndef Tcl_FSEvalFile -#define Tcl_FSEvalFile \ - (tclStubsPtr->tcl_FSEvalFile) /* 467 */ -#endif -#ifndef Tcl_FSNewNativePath -#define Tcl_FSNewNativePath \ - (tclStubsPtr->tcl_FSNewNativePath) /* 468 */ -#endif -#ifndef Tcl_FSGetNativePath -#define Tcl_FSGetNativePath \ - (tclStubsPtr->tcl_FSGetNativePath) /* 469 */ -#endif -#ifndef Tcl_FSFileSystemInfo -#define Tcl_FSFileSystemInfo \ - (tclStubsPtr->tcl_FSFileSystemInfo) /* 470 */ -#endif -#ifndef Tcl_FSPathSeparator -#define Tcl_FSPathSeparator \ - (tclStubsPtr->tcl_FSPathSeparator) /* 471 */ -#endif -#ifndef Tcl_FSListVolumes -#define Tcl_FSListVolumes \ - (tclStubsPtr->tcl_FSListVolumes) /* 472 */ -#endif -#ifndef Tcl_FSRegister -#define Tcl_FSRegister \ - (tclStubsPtr->tcl_FSRegister) /* 473 */ -#endif -#ifndef Tcl_FSUnregister -#define Tcl_FSUnregister \ - (tclStubsPtr->tcl_FSUnregister) /* 474 */ -#endif -#ifndef Tcl_FSData -#define Tcl_FSData \ - (tclStubsPtr->tcl_FSData) /* 475 */ -#endif -#ifndef Tcl_FSGetTranslatedStringPath -#define Tcl_FSGetTranslatedStringPath \ - (tclStubsPtr->tcl_FSGetTranslatedStringPath) /* 476 */ -#endif -#ifndef Tcl_FSGetFileSystemForPath -#define Tcl_FSGetFileSystemForPath \ - (tclStubsPtr->tcl_FSGetFileSystemForPath) /* 477 */ -#endif -#ifndef Tcl_FSGetPathType -#define Tcl_FSGetPathType \ - (tclStubsPtr->tcl_FSGetPathType) /* 478 */ -#endif -#ifndef Tcl_OutputBuffered -#define Tcl_OutputBuffered \ - (tclStubsPtr->tcl_OutputBuffered) /* 479 */ -#endif -#ifndef Tcl_FSMountsChanged -#define Tcl_FSMountsChanged \ - (tclStubsPtr->tcl_FSMountsChanged) /* 480 */ -#endif -#ifndef Tcl_EvalTokensStandard -#define Tcl_EvalTokensStandard \ - (tclStubsPtr->tcl_EvalTokensStandard) /* 481 */ -#endif -#ifndef Tcl_GetTime -#define Tcl_GetTime \ - (tclStubsPtr->tcl_GetTime) /* 482 */ -#endif -#ifndef Tcl_CreateObjTrace -#define Tcl_CreateObjTrace \ - (tclStubsPtr->tcl_CreateObjTrace) /* 483 */ -#endif -#ifndef Tcl_GetCommandInfoFromToken -#define Tcl_GetCommandInfoFromToken \ - (tclStubsPtr->tcl_GetCommandInfoFromToken) /* 484 */ -#endif -#ifndef Tcl_SetCommandInfoFromToken -#define Tcl_SetCommandInfoFromToken \ - (tclStubsPtr->tcl_SetCommandInfoFromToken) /* 485 */ -#endif -#ifndef Tcl_DbNewWideIntObj -#define Tcl_DbNewWideIntObj \ - (tclStubsPtr->tcl_DbNewWideIntObj) /* 486 */ -#endif -#ifndef Tcl_GetWideIntFromObj -#define Tcl_GetWideIntFromObj \ - (tclStubsPtr->tcl_GetWideIntFromObj) /* 487 */ -#endif -#ifndef Tcl_NewWideIntObj -#define Tcl_NewWideIntObj \ - (tclStubsPtr->tcl_NewWideIntObj) /* 488 */ -#endif -#ifndef Tcl_SetWideIntObj -#define Tcl_SetWideIntObj \ - (tclStubsPtr->tcl_SetWideIntObj) /* 489 */ -#endif -#ifndef Tcl_AllocStatBuf -#define Tcl_AllocStatBuf \ - (tclStubsPtr->tcl_AllocStatBuf) /* 490 */ -#endif -#ifndef Tcl_Seek -#define Tcl_Seek \ - (tclStubsPtr->tcl_Seek) /* 491 */ -#endif -#ifndef Tcl_Tell -#define Tcl_Tell \ - (tclStubsPtr->tcl_Tell) /* 492 */ -#endif -#ifndef Tcl_ChannelWideSeekProc -#define Tcl_ChannelWideSeekProc \ - (tclStubsPtr->tcl_ChannelWideSeekProc) /* 493 */ -#endif - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLDECLS */ - +/* + * tclDecls.h -- + * + * Declarations of functions in the platform independent public Tcl API. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclDecls.h,v 1.93.2.4 2004/06/05 17:25:39 kennykb Exp $ + */ + +#ifndef _TCLDECLS +#define _TCLDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tcl.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +/* 0 */ +EXTERN int Tcl_PkgProvideEx _ANSI_ARGS_((Tcl_Interp* interp, + CONST char* name, CONST char* version, + ClientData clientData)); +/* 1 */ +EXTERN CONST84_RETURN char * Tcl_PkgRequireEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + CONST char * version, int exact, + ClientData * clientDataPtr)); +/* 2 */ +EXTERN void Tcl_Panic _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); +/* 3 */ +EXTERN char * Tcl_Alloc _ANSI_ARGS_((unsigned int size)); +/* 4 */ +EXTERN void Tcl_Free _ANSI_ARGS_((char * ptr)); +/* 5 */ +EXTERN char * Tcl_Realloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* 6 */ +EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, + CONST char * file, int line)); +/* 7 */ +EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char * ptr, + CONST char * file, int line)); +/* 8 */ +EXTERN char * Tcl_DbCkrealloc _ANSI_ARGS_((char * ptr, + unsigned int size, CONST char * file, + int line)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 9 */ +EXTERN void Tcl_CreateFileHandler _ANSI_ARGS_((int fd, int mask, + Tcl_FileProc * proc, ClientData clientData)); +#endif /* UNIX */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 10 */ +EXTERN void Tcl_DeleteFileHandler _ANSI_ARGS_((int fd)); +#endif /* UNIX */ +/* 11 */ +EXTERN void Tcl_SetTimer _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 12 */ +EXTERN void Tcl_Sleep _ANSI_ARGS_((int ms)); +/* 13 */ +EXTERN int Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 14 */ +EXTERN int Tcl_AppendAllObjTypes _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr)); +/* 15 */ +EXTERN void Tcl_AppendStringsToObj _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); +/* 16 */ +EXTERN void Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj* objPtr, + CONST char* bytes, int length)); +/* 17 */ +EXTERN Tcl_Obj * Tcl_ConcatObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST objv[])); +/* 18 */ +EXTERN int Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); +/* 19 */ +EXTERN void Tcl_DbDecrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 20 */ +EXTERN void Tcl_DbIncrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 21 */ +EXTERN int Tcl_DbIsShared _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 22 */ +EXTERN Tcl_Obj * Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue, + CONST char * file, int line)); +/* 23 */ +EXTERN Tcl_Obj * Tcl_DbNewByteArrayObj _ANSI_ARGS_(( + CONST unsigned char * bytes, int length, + CONST char * file, int line)); +/* 24 */ +EXTERN Tcl_Obj * Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue, + CONST char * file, int line)); +/* 25 */ +EXTERN Tcl_Obj * Tcl_DbNewListObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST * objv, CONST char * file, + int line)); +/* 26 */ +EXTERN Tcl_Obj * Tcl_DbNewLongObj _ANSI_ARGS_((long longValue, + CONST char * file, int line)); +/* 27 */ +EXTERN Tcl_Obj * Tcl_DbNewObj _ANSI_ARGS_((CONST char * file, + int line)); +/* 28 */ +EXTERN Tcl_Obj * Tcl_DbNewStringObj _ANSI_ARGS_((CONST char * bytes, + int length, CONST char * file, int line)); +/* 29 */ +EXTERN Tcl_Obj * Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 30 */ +EXTERN void TclFreeObj _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 31 */ +EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * boolPtr)); +/* 32 */ +EXTERN int Tcl_GetBooleanFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + int * boolPtr)); +/* 33 */ +EXTERN unsigned char * Tcl_GetByteArrayFromObj _ANSI_ARGS_(( + Tcl_Obj * objPtr, int * lengthPtr)); +/* 34 */ +EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, double * doublePtr)); +/* 35 */ +EXTERN int Tcl_GetDoubleFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + double * doublePtr)); +/* 36 */ +EXTERN int Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, CONST84 char ** tablePtr, + CONST char * msg, int flags, int * indexPtr)); +/* 37 */ +EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * intPtr)); +/* 38 */ +EXTERN int Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int * intPtr)); +/* 39 */ +EXTERN int Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, long * longPtr)); +/* 40 */ +EXTERN Tcl_ObjType * Tcl_GetObjType _ANSI_ARGS_((CONST char * typeName)); +/* 41 */ +EXTERN char * Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int * lengthPtr)); +/* 42 */ +EXTERN void Tcl_InvalidateStringRep _ANSI_ARGS_(( + Tcl_Obj * objPtr)); +/* 43 */ +EXTERN int Tcl_ListObjAppendList _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + Tcl_Obj * elemListPtr)); +/* 44 */ +EXTERN int Tcl_ListObjAppendElement _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + Tcl_Obj * objPtr)); +/* 45 */ +EXTERN int Tcl_ListObjGetElements _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + int * objcPtr, Tcl_Obj *** objvPtr)); +/* 46 */ +EXTERN int Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int index, + Tcl_Obj ** objPtrPtr)); +/* 47 */ +EXTERN int Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int * lengthPtr)); +/* 48 */ +EXTERN int Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int first, int count, + int objc, Tcl_Obj *CONST objv[])); +/* 49 */ +EXTERN Tcl_Obj * Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue)); +/* 50 */ +EXTERN Tcl_Obj * Tcl_NewByteArrayObj _ANSI_ARGS_(( + CONST unsigned char* bytes, int length)); +/* 51 */ +EXTERN Tcl_Obj * Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue)); +/* 52 */ +EXTERN Tcl_Obj * Tcl_NewIntObj _ANSI_ARGS_((int intValue)); +/* 53 */ +EXTERN Tcl_Obj * Tcl_NewListObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST objv[])); +/* 54 */ +EXTERN Tcl_Obj * Tcl_NewLongObj _ANSI_ARGS_((long longValue)); +/* 55 */ +EXTERN Tcl_Obj * Tcl_NewObj _ANSI_ARGS_((void)); +/* 56 */ +EXTERN Tcl_Obj * Tcl_NewStringObj _ANSI_ARGS_((CONST char * bytes, + int length)); +/* 57 */ +EXTERN void Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int boolValue)); +/* 58 */ +EXTERN unsigned char * Tcl_SetByteArrayLength _ANSI_ARGS_((Tcl_Obj * objPtr, + int length)); +/* 59 */ +EXTERN void Tcl_SetByteArrayObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST unsigned char * bytes, int length)); +/* 60 */ +EXTERN void Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj * objPtr, + double doubleValue)); +/* 61 */ +EXTERN void Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int intValue)); +/* 62 */ +EXTERN void Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int objc, Tcl_Obj *CONST objv[])); +/* 63 */ +EXTERN void Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj * objPtr, + long longValue)); +/* 64 */ +EXTERN void Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj * objPtr, + int length)); +/* 65 */ +EXTERN void Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj* objPtr, + CONST char* bytes, int length)); +/* 66 */ +EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * message)); +/* 67 */ +EXTERN void Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * message, int length)); +/* 68 */ +EXTERN void Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp * interp)); +/* 69 */ +EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 70 */ +EXTERN void Tcl_AppendResult _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 71 */ +EXTERN Tcl_AsyncHandler Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc * proc, + ClientData clientData)); +/* 72 */ +EXTERN void Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async)); +/* 73 */ +EXTERN int Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int code)); +/* 74 */ +EXTERN void Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async)); +/* 75 */ +EXTERN int Tcl_AsyncReady _ANSI_ARGS_((void)); +/* 76 */ +EXTERN void Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp * interp)); +/* 77 */ +EXTERN char Tcl_Backslash _ANSI_ARGS_((CONST char * src, + int * readPtr)); +/* 78 */ +EXTERN int Tcl_BadChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * optionName, + CONST char * optionList)); +/* 79 */ +EXTERN void Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 80 */ +EXTERN void Tcl_CancelIdleCall _ANSI_ARGS_(( + Tcl_IdleProc * idleProc, + ClientData clientData)); +/* 81 */ +EXTERN int Tcl_Close _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 82 */ +EXTERN int Tcl_CommandComplete _ANSI_ARGS_((CONST char * cmd)); +/* 83 */ +EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv)); +/* 84 */ +EXTERN int Tcl_ConvertElement _ANSI_ARGS_((CONST char * src, + char * dst, int flags)); +/* 85 */ +EXTERN int Tcl_ConvertCountedElement _ANSI_ARGS_(( + CONST char * src, int length, char * dst, + int flags)); +/* 86 */ +EXTERN int Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp * slave, + CONST char * slaveCmd, Tcl_Interp * target, + CONST char * targetCmd, int argc, + CONST84 char * CONST * argv)); +/* 87 */ +EXTERN int Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp * slave, + CONST char * slaveCmd, Tcl_Interp * target, + CONST char * targetCmd, int objc, + Tcl_Obj *CONST objv[])); +/* 88 */ +EXTERN Tcl_Channel Tcl_CreateChannel _ANSI_ARGS_(( + Tcl_ChannelType * typePtr, + CONST char * chanName, + ClientData instanceData, int mask)); +/* 89 */ +EXTERN void Tcl_CreateChannelHandler _ANSI_ARGS_(( + Tcl_Channel chan, int mask, + Tcl_ChannelProc * proc, + ClientData clientData)); +/* 90 */ +EXTERN void Tcl_CreateCloseHandler _ANSI_ARGS_((Tcl_Channel chan, + Tcl_CloseProc * proc, ClientData clientData)); +/* 91 */ +EXTERN Tcl_Command Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, Tcl_CmdProc * proc, + ClientData clientData, + Tcl_CmdDeleteProc * deleteProc)); +/* 92 */ +EXTERN void Tcl_CreateEventSource _ANSI_ARGS_(( + Tcl_EventSetupProc * setupProc, + Tcl_EventCheckProc * checkProc, + ClientData clientData)); +/* 93 */ +EXTERN void Tcl_CreateExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 94 */ +EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); +/* 95 */ +EXTERN void Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, int numArgs, + Tcl_ValueType * argTypes, + Tcl_MathProc * proc, ClientData clientData)); +/* 96 */ +EXTERN Tcl_Command Tcl_CreateObjCommand _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * cmdName, + Tcl_ObjCmdProc * proc, ClientData clientData, + Tcl_CmdDeleteProc * deleteProc)); +/* 97 */ +EXTERN Tcl_Interp * Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveName, int isSafe)); +/* 98 */ +EXTERN Tcl_TimerToken Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds, + Tcl_TimerProc * proc, ClientData clientData)); +/* 99 */ +EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp * interp, + int level, Tcl_CmdTraceProc * proc, + ClientData clientData)); +/* 100 */ +EXTERN void Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name)); +/* 101 */ +EXTERN void Tcl_DeleteChannelHandler _ANSI_ARGS_(( + Tcl_Channel chan, Tcl_ChannelProc * proc, + ClientData clientData)); +/* 102 */ +EXTERN void Tcl_DeleteCloseHandler _ANSI_ARGS_((Tcl_Channel chan, + Tcl_CloseProc * proc, ClientData clientData)); +/* 103 */ +EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName)); +/* 104 */ +EXTERN int Tcl_DeleteCommandFromToken _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command)); +/* 105 */ +EXTERN void Tcl_DeleteEvents _ANSI_ARGS_(( + Tcl_EventDeleteProc * proc, + ClientData clientData)); +/* 106 */ +EXTERN void Tcl_DeleteEventSource _ANSI_ARGS_(( + Tcl_EventSetupProc * setupProc, + Tcl_EventCheckProc * checkProc, + ClientData clientData)); +/* 107 */ +EXTERN void Tcl_DeleteExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 108 */ +EXTERN void Tcl_DeleteHashEntry _ANSI_ARGS_(( + Tcl_HashEntry * entryPtr)); +/* 109 */ +EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 110 */ +EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp * interp)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 111 */ +EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, + Tcl_Pid * pidPtr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 111 */ +EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, + Tcl_Pid * pidPtr)); +#endif /* __WIN32__ */ +/* 112 */ +EXTERN void Tcl_DeleteTimerHandler _ANSI_ARGS_(( + Tcl_TimerToken token)); +/* 113 */ +EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Trace trace)); +/* 114 */ +EXTERN void Tcl_DontCallWhenDeleted _ANSI_ARGS_(( + Tcl_Interp * interp, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 115 */ +EXTERN int Tcl_DoOneEvent _ANSI_ARGS_((int flags)); +/* 116 */ +EXTERN void Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc * proc, + ClientData clientData)); +/* 117 */ +EXTERN char * Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString * dsPtr, + CONST char * str, int length)); +/* 118 */ +EXTERN char * Tcl_DStringAppendElement _ANSI_ARGS_(( + Tcl_DString * dsPtr, CONST char * string)); +/* 119 */ +EXTERN void Tcl_DStringEndSublist _ANSI_ARGS_(( + Tcl_DString * dsPtr)); +/* 120 */ +EXTERN void Tcl_DStringFree _ANSI_ARGS_((Tcl_DString * dsPtr)); +/* 121 */ +EXTERN void Tcl_DStringGetResult _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_DString * dsPtr)); +/* 122 */ +EXTERN void Tcl_DStringInit _ANSI_ARGS_((Tcl_DString * dsPtr)); +/* 123 */ +EXTERN void Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * dsPtr)); +/* 124 */ +EXTERN void Tcl_DStringSetLength _ANSI_ARGS_(( + Tcl_DString * dsPtr, int length)); +/* 125 */ +EXTERN void Tcl_DStringStartSublist _ANSI_ARGS_(( + Tcl_DString * dsPtr)); +/* 126 */ +EXTERN int Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan)); +/* 127 */ +EXTERN CONST84_RETURN char * Tcl_ErrnoId _ANSI_ARGS_((void)); +/* 128 */ +EXTERN CONST84_RETURN char * Tcl_ErrnoMsg _ANSI_ARGS_((int err)); +/* 129 */ +EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 130 */ +EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * fileName)); +/* 131 */ +EXTERN int Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr)); +/* 132 */ +EXTERN void Tcl_EventuallyFree _ANSI_ARGS_(( + ClientData clientData, + Tcl_FreeProc * freeProc)); +/* 133 */ +EXTERN void Tcl_Exit _ANSI_ARGS_((int status)); +/* 134 */ +EXTERN int Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * hiddenCmdToken, + CONST char * cmdName)); +/* 135 */ +EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * ptr)); +/* 136 */ +EXTERN int Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int * ptr)); +/* 137 */ +EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, double * ptr)); +/* 138 */ +EXTERN int Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, double * ptr)); +/* 139 */ +EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, long * ptr)); +/* 140 */ +EXTERN int Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, long * ptr)); +/* 141 */ +EXTERN int Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); +/* 142 */ +EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 143 */ +EXTERN void Tcl_Finalize _ANSI_ARGS_((void)); +/* 144 */ +EXTERN void Tcl_FindExecutable _ANSI_ARGS_((CONST char * argv0)); +/* 145 */ +EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, + Tcl_HashSearch * searchPtr)); +/* 146 */ +EXTERN int Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan)); +/* 147 */ +EXTERN void Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp * interp)); +/* 148 */ +EXTERN int Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveCmd, + Tcl_Interp ** targetInterpPtr, + CONST84 char ** targetCmdPtr, int * argcPtr, + CONST84 char *** argvPtr)); +/* 149 */ +EXTERN int Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveCmd, + Tcl_Interp ** targetInterpPtr, + CONST84 char ** targetCmdPtr, int * objcPtr, + Tcl_Obj *** objv)); +/* 150 */ +EXTERN ClientData Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_InterpDeleteProc ** procPtr)); +/* 151 */ +EXTERN Tcl_Channel Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * chanName, int * modePtr)); +/* 152 */ +EXTERN int Tcl_GetChannelBufferSize _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 153 */ +EXTERN int Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan, + int direction, ClientData * handlePtr)); +/* 154 */ +EXTERN ClientData Tcl_GetChannelInstanceData _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 155 */ +EXTERN int Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan)); +/* 156 */ +EXTERN CONST84_RETURN char * Tcl_GetChannelName _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 157 */ +EXTERN int Tcl_GetChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan, + CONST char * optionName, Tcl_DString * dsPtr)); +/* 158 */ +EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan)); +/* 159 */ +EXTERN int Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, Tcl_CmdInfo * infoPtr)); +/* 160 */ +EXTERN CONST84_RETURN char * Tcl_GetCommandName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command)); +/* 161 */ +EXTERN int Tcl_GetErrno _ANSI_ARGS_((void)); +/* 162 */ +EXTERN CONST84_RETURN char * Tcl_GetHostName _ANSI_ARGS_((void)); +/* 163 */ +EXTERN int Tcl_GetInterpPath _ANSI_ARGS_(( + Tcl_Interp * askInterp, + Tcl_Interp * slaveInterp)); +/* 164 */ +EXTERN Tcl_Interp * Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp * interp)); +/* 165 */ +EXTERN CONST char * Tcl_GetNameOfExecutable _ANSI_ARGS_((void)); +/* 166 */ +EXTERN Tcl_Obj * Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp * interp)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 167 */ +EXTERN int Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int forWriting, + int checkUsage, ClientData * filePtr)); +#endif /* UNIX */ +/* 168 */ +EXTERN Tcl_PathType Tcl_GetPathType _ANSI_ARGS_((CONST char * path)); +/* 169 */ +EXTERN int Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan, + Tcl_DString * dsPtr)); +/* 170 */ +EXTERN int Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan, + Tcl_Obj * objPtr)); +/* 171 */ +EXTERN int Tcl_GetServiceMode _ANSI_ARGS_((void)); +/* 172 */ +EXTERN Tcl_Interp * Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveName)); +/* 173 */ +EXTERN Tcl_Channel Tcl_GetStdChannel _ANSI_ARGS_((int type)); +/* 174 */ +EXTERN CONST84_RETURN char * Tcl_GetStringResult _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 175 */ +EXTERN CONST84_RETURN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags)); +/* 176 */ +EXTERN CONST84_RETURN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 177 */ +EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * command)); +/* 178 */ +EXTERN int Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr)); +/* 179 */ +EXTERN int Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, + CONST char * hiddenCmdToken)); +/* 180 */ +EXTERN int Tcl_Init _ANSI_ARGS_((Tcl_Interp * interp)); +/* 181 */ +EXTERN void Tcl_InitHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, int keyType)); +/* 182 */ +EXTERN int Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan)); +/* 183 */ +EXTERN int Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 184 */ +EXTERN int Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp * interp)); +/* 185 */ +EXTERN int Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp * interp)); +/* 186 */ +EXTERN char * Tcl_JoinPath _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv, + Tcl_DString * resultPtr)); +/* 187 */ +EXTERN int Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, char * addr, int type)); +/* Slot 188 is reserved */ +/* 189 */ +EXTERN Tcl_Channel Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle, + int mode)); +/* 190 */ +EXTERN int Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp * interp)); +/* 191 */ +EXTERN Tcl_Channel Tcl_MakeTcpClientChannel _ANSI_ARGS_(( + ClientData tcpSocket)); +/* 192 */ +EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv)); +/* 193 */ +EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( + Tcl_HashSearch * searchPtr)); +/* 194 */ +EXTERN void Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel, + int mask)); +/* 195 */ +EXTERN Tcl_Obj * Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + int flags)); +/* 196 */ +EXTERN Tcl_Obj * Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + Tcl_Obj * newValuePtr, int flags)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 197 */ +EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( + Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 197 */ +EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( + Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +#endif /* __WIN32__ */ +/* 198 */ +EXTERN Tcl_Channel Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * fileName, + CONST char * modeString, int permissions)); +/* 199 */ +EXTERN Tcl_Channel Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp * interp, + int port, CONST char * address, + CONST char * myaddr, int myport, int async)); +/* 200 */ +EXTERN Tcl_Channel Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp * interp, + int port, CONST char * host, + Tcl_TcpAcceptProc * acceptProc, + ClientData callbackData)); +/* 201 */ +EXTERN void Tcl_Preserve _ANSI_ARGS_((ClientData data)); +/* 202 */ +EXTERN void Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp * interp, + double value, char * dst)); +/* 203 */ +EXTERN int Tcl_PutEnv _ANSI_ARGS_((CONST char * string)); +/* 204 */ +EXTERN CONST84_RETURN char * Tcl_PosixError _ANSI_ARGS_((Tcl_Interp * interp)); +/* 205 */ +EXTERN void Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event * evPtr, + Tcl_QueuePosition position)); +/* 206 */ +EXTERN int Tcl_Read _ANSI_ARGS_((Tcl_Channel chan, + char * bufPtr, int toRead)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 207 */ +EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 207 */ +EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); +#endif /* __WIN32__ */ +/* 208 */ +EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmd, int flags)); +/* 209 */ +EXTERN int Tcl_RecordAndEvalObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * cmdPtr, + int flags)); +/* 210 */ +EXTERN void Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 211 */ +EXTERN void Tcl_RegisterObjType _ANSI_ARGS_(( + Tcl_ObjType * typePtr)); +/* 212 */ +EXTERN Tcl_RegExp Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 213 */ +EXTERN int Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp regexp, CONST char * str, + CONST char * start)); +/* 214 */ +EXTERN int Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CONST char * pattern)); +/* 215 */ +EXTERN void Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp, + int index, CONST84 char ** startPtr, + CONST84 char ** endPtr)); +/* 216 */ +EXTERN void Tcl_Release _ANSI_ARGS_((ClientData clientData)); +/* 217 */ +EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp * interp)); +/* 218 */ +EXTERN int Tcl_ScanElement _ANSI_ARGS_((CONST char * str, + int * flagPtr)); +/* 219 */ +EXTERN int Tcl_ScanCountedElement _ANSI_ARGS_((CONST char * str, + int length, int * flagPtr)); +/* 220 */ +EXTERN int Tcl_SeekOld _ANSI_ARGS_((Tcl_Channel chan, + int offset, int mode)); +/* 221 */ +EXTERN int Tcl_ServiceAll _ANSI_ARGS_((void)); +/* 222 */ +EXTERN int Tcl_ServiceEvent _ANSI_ARGS_((int flags)); +/* 223 */ +EXTERN void Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 224 */ +EXTERN void Tcl_SetChannelBufferSize _ANSI_ARGS_(( + Tcl_Channel chan, int sz)); +/* 225 */ +EXTERN int Tcl_SetChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan, + CONST char * optionName, + CONST char * newValue)); +/* 226 */ +EXTERN int Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, + CONST Tcl_CmdInfo * infoPtr)); +/* 227 */ +EXTERN void Tcl_SetErrno _ANSI_ARGS_((int err)); +/* 228 */ +EXTERN void Tcl_SetErrorCode _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 229 */ +EXTERN void Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 230 */ +EXTERN void Tcl_SetPanicProc _ANSI_ARGS_(( + Tcl_PanicProc * panicProc)); +/* 231 */ +EXTERN int Tcl_SetRecursionLimit _ANSI_ARGS_(( + Tcl_Interp * interp, int depth)); +/* 232 */ +EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp * interp, + char * str, Tcl_FreeProc * freeProc)); +/* 233 */ +EXTERN int Tcl_SetServiceMode _ANSI_ARGS_((int mode)); +/* 234 */ +EXTERN void Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * errorObjPtr)); +/* 235 */ +EXTERN void Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * resultObjPtr)); +/* 236 */ +EXTERN void Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel, + int type)); +/* 237 */ +EXTERN CONST84_RETURN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, CONST char * newValue, + int flags)); +/* 238 */ +EXTERN CONST84_RETURN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + CONST char * newValue, int flags)); +/* 239 */ +EXTERN CONST84_RETURN char * Tcl_SignalId _ANSI_ARGS_((int sig)); +/* 240 */ +EXTERN CONST84_RETURN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); +/* 241 */ +EXTERN void Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp * interp)); +/* 242 */ +EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * listStr, int * argcPtr, + CONST84 char *** argvPtr)); +/* 243 */ +EXTERN void Tcl_SplitPath _ANSI_ARGS_((CONST char * path, + int * argcPtr, CONST84 char *** argvPtr)); +/* 244 */ +EXTERN void Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * pkgName, + Tcl_PackageInitProc * initProc, + Tcl_PackageInitProc * safeInitProc)); +/* 245 */ +EXTERN int Tcl_StringMatch _ANSI_ARGS_((CONST char * str, + CONST char * pattern)); +/* 246 */ +EXTERN int Tcl_TellOld _ANSI_ARGS_((Tcl_Channel chan)); +/* 247 */ +EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 248 */ +EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 249 */ +EXTERN char * Tcl_TranslateFileName _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_DString * bufferPtr)); +/* 250 */ +EXTERN int Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, + CONST char * str, int len, int atHead)); +/* 251 */ +EXTERN void Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 252 */ +EXTERN int Tcl_UnregisterChannel _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan)); +/* 253 */ +EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags)); +/* 254 */ +EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 255 */ +EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 256 */ +EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 257 */ +EXTERN void Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 258 */ +EXTERN int Tcl_UpVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * frameName, CONST char * varName, + CONST char * localName, int flags)); +/* 259 */ +EXTERN int Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * frameName, CONST char * part1, + CONST char * part2, CONST char * localName, + int flags)); +/* 260 */ +EXTERN int Tcl_VarEval _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 261 */ +EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * procPtr, + ClientData prevClientData)); +/* 262 */ +EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * procPtr, + ClientData prevClientData)); +/* 263 */ +EXTERN int Tcl_Write _ANSI_ARGS_((Tcl_Channel chan, + CONST char * s, int slen)); +/* 264 */ +EXTERN void Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], + CONST char * message)); +/* 265 */ +EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_(( + CONST char * fileName)); +/* 266 */ +EXTERN void Tcl_ValidateAllMemory _ANSI_ARGS_((CONST char * file, + int line)); +/* 267 */ +EXTERN void Tcl_AppendResultVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 268 */ +EXTERN void Tcl_AppendStringsToObjVA _ANSI_ARGS_(( + Tcl_Obj * objPtr, va_list argList)); +/* 269 */ +EXTERN CONST84_RETURN char * Tcl_HashStats _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 270 */ +EXTERN CONST84_RETURN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CONST84 char ** termPtr)); +/* 271 */ +EXTERN CONST84_RETURN char * Tcl_PkgPresent _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version, + int exact)); +/* 272 */ +EXTERN CONST84_RETURN char * Tcl_PkgPresentEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + CONST char * version, int exact, + ClientData * clientDataPtr)); +/* 273 */ +EXTERN int Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version)); +/* 274 */ +EXTERN CONST84_RETURN char * Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version, + int exact)); +/* 275 */ +EXTERN void Tcl_SetErrorCodeVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 276 */ +EXTERN int Tcl_VarEvalVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 277 */ +EXTERN Tcl_Pid Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, + int options)); +/* 278 */ +EXTERN void Tcl_PanicVA _ANSI_ARGS_((CONST char * format, + va_list argList)); +/* 279 */ +EXTERN void Tcl_GetVersion _ANSI_ARGS_((int * major, int * minor, + int * patchLevel, int * type)); +/* 280 */ +EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp * interp)); +/* 281 */ +EXTERN Tcl_Channel Tcl_StackChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_ChannelType * typePtr, + ClientData instanceData, int mask, + Tcl_Channel prevChan)); +/* 282 */ +EXTERN int Tcl_UnstackChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 283 */ +EXTERN Tcl_Channel Tcl_GetStackedChannel _ANSI_ARGS_((Tcl_Channel chan)); +/* 284 */ +EXTERN void Tcl_SetMainLoop _ANSI_ARGS_((Tcl_MainLoopProc * proc)); +/* Slot 285 is reserved */ +/* 286 */ +EXTERN void Tcl_AppendObjToObj _ANSI_ARGS_((Tcl_Obj * objPtr, + Tcl_Obj * appendObjPtr)); +/* 287 */ +EXTERN Tcl_Encoding Tcl_CreateEncoding _ANSI_ARGS_(( + Tcl_EncodingType * typePtr)); +/* 288 */ +EXTERN void Tcl_CreateThreadExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 289 */ +EXTERN void Tcl_DeleteThreadExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 290 */ +EXTERN void Tcl_DiscardResult _ANSI_ARGS_(( + Tcl_SavedResult * statePtr)); +/* 291 */ +EXTERN int Tcl_EvalEx _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * script, int numBytes, int flags)); +/* 292 */ +EXTERN int Tcl_EvalObjv _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 293 */ +EXTERN int Tcl_EvalObjEx _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int flags)); +/* 294 */ +EXTERN void Tcl_ExitThread _ANSI_ARGS_((int status)); +/* 295 */ +EXTERN int Tcl_ExternalToUtf _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Encoding encoding, CONST char * src, + int srcLen, int flags, + Tcl_EncodingState * statePtr, char * dst, + int dstLen, int * srcReadPtr, + int * dstWrotePtr, int * dstCharsPtr)); +/* 296 */ +EXTERN char * Tcl_ExternalToUtfDString _ANSI_ARGS_(( + Tcl_Encoding encoding, CONST char * src, + int srcLen, Tcl_DString * dsPtr)); +/* 297 */ +EXTERN void Tcl_FinalizeThread _ANSI_ARGS_((void)); +/* 298 */ +EXTERN void Tcl_FinalizeNotifier _ANSI_ARGS_(( + ClientData clientData)); +/* 299 */ +EXTERN void Tcl_FreeEncoding _ANSI_ARGS_((Tcl_Encoding encoding)); +/* 300 */ +EXTERN Tcl_ThreadId Tcl_GetCurrentThread _ANSI_ARGS_((void)); +/* 301 */ +EXTERN Tcl_Encoding Tcl_GetEncoding _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name)); +/* 302 */ +EXTERN CONST84_RETURN char * Tcl_GetEncodingName _ANSI_ARGS_(( + Tcl_Encoding encoding)); +/* 303 */ +EXTERN void Tcl_GetEncodingNames _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 304 */ +EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + CONST VOID * tablePtr, int offset, + CONST char * msg, int flags, int * indexPtr)); +/* 305 */ +EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_(( + Tcl_ThreadDataKey * keyPtr, int size)); +/* 306 */ +EXTERN Tcl_Obj * Tcl_GetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 307 */ +EXTERN ClientData Tcl_InitNotifier _ANSI_ARGS_((void)); +/* 308 */ +EXTERN void Tcl_MutexLock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); +/* 309 */ +EXTERN void Tcl_MutexUnlock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); +/* 310 */ +EXTERN void Tcl_ConditionNotify _ANSI_ARGS_(( + Tcl_Condition * condPtr)); +/* 311 */ +EXTERN void Tcl_ConditionWait _ANSI_ARGS_(( + Tcl_Condition * condPtr, + Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); +/* 312 */ +EXTERN int Tcl_NumUtfChars _ANSI_ARGS_((CONST char * src, + int len)); +/* 313 */ +EXTERN int Tcl_ReadChars _ANSI_ARGS_((Tcl_Channel channel, + Tcl_Obj * objPtr, int charsToRead, + int appendFlag)); +/* 314 */ +EXTERN void Tcl_RestoreResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_SavedResult * statePtr)); +/* 315 */ +EXTERN void Tcl_SaveResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_SavedResult * statePtr)); +/* 316 */ +EXTERN int Tcl_SetSystemEncoding _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name)); +/* 317 */ +EXTERN Tcl_Obj * Tcl_SetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + Tcl_Obj * newValuePtr, int flags)); +/* 318 */ +EXTERN void Tcl_ThreadAlert _ANSI_ARGS_((Tcl_ThreadId threadId)); +/* 319 */ +EXTERN void Tcl_ThreadQueueEvent _ANSI_ARGS_(( + Tcl_ThreadId threadId, Tcl_Event* evPtr, + Tcl_QueuePosition position)); +/* 320 */ +EXTERN Tcl_UniChar Tcl_UniCharAtIndex _ANSI_ARGS_((CONST char * src, + int index)); +/* 321 */ +EXTERN Tcl_UniChar Tcl_UniCharToLower _ANSI_ARGS_((int ch)); +/* 322 */ +EXTERN Tcl_UniChar Tcl_UniCharToTitle _ANSI_ARGS_((int ch)); +/* 323 */ +EXTERN Tcl_UniChar Tcl_UniCharToUpper _ANSI_ARGS_((int ch)); +/* 324 */ +EXTERN int Tcl_UniCharToUtf _ANSI_ARGS_((int ch, char * buf)); +/* 325 */ +EXTERN CONST84_RETURN char * Tcl_UtfAtIndex _ANSI_ARGS_((CONST char * src, + int index)); +/* 326 */ +EXTERN int Tcl_UtfCharComplete _ANSI_ARGS_((CONST char * src, + int len)); +/* 327 */ +EXTERN int Tcl_UtfBackslash _ANSI_ARGS_((CONST char * src, + int * readPtr, char * dst)); +/* 328 */ +EXTERN CONST84_RETURN char * Tcl_UtfFindFirst _ANSI_ARGS_((CONST char * src, + int ch)); +/* 329 */ +EXTERN CONST84_RETURN char * Tcl_UtfFindLast _ANSI_ARGS_((CONST char * src, + int ch)); +/* 330 */ +EXTERN CONST84_RETURN char * Tcl_UtfNext _ANSI_ARGS_((CONST char * src)); +/* 331 */ +EXTERN CONST84_RETURN char * Tcl_UtfPrev _ANSI_ARGS_((CONST char * src, + CONST char * start)); +/* 332 */ +EXTERN int Tcl_UtfToExternal _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Encoding encoding, CONST char * src, + int srcLen, int flags, + Tcl_EncodingState * statePtr, char * dst, + int dstLen, int * srcReadPtr, + int * dstWrotePtr, int * dstCharsPtr)); +/* 333 */ +EXTERN char * Tcl_UtfToExternalDString _ANSI_ARGS_(( + Tcl_Encoding encoding, CONST char * src, + int srcLen, Tcl_DString * dsPtr)); +/* 334 */ +EXTERN int Tcl_UtfToLower _ANSI_ARGS_((char * src)); +/* 335 */ +EXTERN int Tcl_UtfToTitle _ANSI_ARGS_((char * src)); +/* 336 */ +EXTERN int Tcl_UtfToUniChar _ANSI_ARGS_((CONST char * src, + Tcl_UniChar * chPtr)); +/* 337 */ +EXTERN int Tcl_UtfToUpper _ANSI_ARGS_((char * src)); +/* 338 */ +EXTERN int Tcl_WriteChars _ANSI_ARGS_((Tcl_Channel chan, + CONST char * src, int srcLen)); +/* 339 */ +EXTERN int Tcl_WriteObj _ANSI_ARGS_((Tcl_Channel chan, + Tcl_Obj * objPtr)); +/* 340 */ +EXTERN char * Tcl_GetString _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 341 */ +EXTERN CONST84_RETURN char * Tcl_GetDefaultEncodingDir _ANSI_ARGS_((void)); +/* 342 */ +EXTERN void Tcl_SetDefaultEncodingDir _ANSI_ARGS_(( + CONST char * path)); +/* 343 */ +EXTERN void Tcl_AlertNotifier _ANSI_ARGS_((ClientData clientData)); +/* 344 */ +EXTERN void Tcl_ServiceModeHook _ANSI_ARGS_((int mode)); +/* 345 */ +EXTERN int Tcl_UniCharIsAlnum _ANSI_ARGS_((int ch)); +/* 346 */ +EXTERN int Tcl_UniCharIsAlpha _ANSI_ARGS_((int ch)); +/* 347 */ +EXTERN int Tcl_UniCharIsDigit _ANSI_ARGS_((int ch)); +/* 348 */ +EXTERN int Tcl_UniCharIsLower _ANSI_ARGS_((int ch)); +/* 349 */ +EXTERN int Tcl_UniCharIsSpace _ANSI_ARGS_((int ch)); +/* 350 */ +EXTERN int Tcl_UniCharIsUpper _ANSI_ARGS_((int ch)); +/* 351 */ +EXTERN int Tcl_UniCharIsWordChar _ANSI_ARGS_((int ch)); +/* 352 */ +EXTERN int Tcl_UniCharLen _ANSI_ARGS_((CONST Tcl_UniChar * str)); +/* 353 */ +EXTERN int Tcl_UniCharNcmp _ANSI_ARGS_((CONST Tcl_UniChar * cs, + CONST Tcl_UniChar * ct, unsigned long n)); +/* 354 */ +EXTERN char * Tcl_UniCharToUtfDString _ANSI_ARGS_(( + CONST Tcl_UniChar * string, int numChars, + Tcl_DString * dsPtr)); +/* 355 */ +EXTERN Tcl_UniChar * Tcl_UtfToUniCharDString _ANSI_ARGS_(( + CONST char * string, int length, + Tcl_DString * dsPtr)); +/* 356 */ +EXTERN Tcl_RegExp Tcl_GetRegExpFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * patObj, + int flags)); +/* 357 */ +EXTERN Tcl_Obj * Tcl_EvalTokens _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Token * tokenPtr, int count)); +/* 358 */ +EXTERN void Tcl_FreeParse _ANSI_ARGS_((Tcl_Parse * parsePtr)); +/* 359 */ +EXTERN void Tcl_LogCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * script, CONST char * command, + int length)); +/* 360 */ +EXTERN int Tcl_ParseBraces _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr, int append, + CONST84 char ** termPtr)); +/* 361 */ +EXTERN int Tcl_ParseCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + int nested, Tcl_Parse * parsePtr)); +/* 362 */ +EXTERN int Tcl_ParseExpr _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr)); +/* 363 */ +EXTERN int Tcl_ParseQuotedString _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * string, + int numBytes, Tcl_Parse * parsePtr, + int append, CONST84 char ** termPtr)); +/* 364 */ +EXTERN int Tcl_ParseVarName _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr, int append)); +/* 365 */ +EXTERN char * Tcl_GetCwd _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * cwdPtr)); +/* 366 */ +EXTERN int Tcl_Chdir _ANSI_ARGS_((CONST char * dirName)); +/* 367 */ +EXTERN int Tcl_Access _ANSI_ARGS_((CONST char * path, int mode)); +/* 368 */ +EXTERN int Tcl_Stat _ANSI_ARGS_((CONST char * path, + struct stat * bufPtr)); +/* 369 */ +EXTERN int Tcl_UtfNcmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 370 */ +EXTERN int Tcl_UtfNcasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 371 */ +EXTERN int Tcl_StringCaseMatch _ANSI_ARGS_((CONST char * str, + CONST char * pattern, int nocase)); +/* 372 */ +EXTERN int Tcl_UniCharIsControl _ANSI_ARGS_((int ch)); +/* 373 */ +EXTERN int Tcl_UniCharIsGraph _ANSI_ARGS_((int ch)); +/* 374 */ +EXTERN int Tcl_UniCharIsPrint _ANSI_ARGS_((int ch)); +/* 375 */ +EXTERN int Tcl_UniCharIsPunct _ANSI_ARGS_((int ch)); +/* 376 */ +EXTERN int Tcl_RegExpExecObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp regexp, Tcl_Obj * objPtr, + int offset, int nmatches, int flags)); +/* 377 */ +EXTERN void Tcl_RegExpGetInfo _ANSI_ARGS_((Tcl_RegExp regexp, + Tcl_RegExpInfo * infoPtr)); +/* 378 */ +EXTERN Tcl_Obj * Tcl_NewUnicodeObj _ANSI_ARGS_(( + CONST Tcl_UniChar * unicode, int numChars)); +/* 379 */ +EXTERN void Tcl_SetUnicodeObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST Tcl_UniChar * unicode, int numChars)); +/* 380 */ +EXTERN int Tcl_GetCharLength _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 381 */ +EXTERN Tcl_UniChar Tcl_GetUniChar _ANSI_ARGS_((Tcl_Obj * objPtr, + int index)); +/* 382 */ +EXTERN Tcl_UniChar * Tcl_GetUnicode _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 383 */ +EXTERN Tcl_Obj * Tcl_GetRange _ANSI_ARGS_((Tcl_Obj * objPtr, + int first, int last)); +/* 384 */ +EXTERN void Tcl_AppendUnicodeToObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST Tcl_UniChar * unicode, int length)); +/* 385 */ +EXTERN int Tcl_RegExpMatchObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * stringObj, Tcl_Obj * patternObj)); +/* 386 */ +EXTERN void Tcl_SetNotifier _ANSI_ARGS_(( + Tcl_NotifierProcs * notifierProcPtr)); +/* 387 */ +EXTERN Tcl_Mutex * Tcl_GetAllocMutex _ANSI_ARGS_((void)); +/* 388 */ +EXTERN int Tcl_GetChannelNames _ANSI_ARGS_((Tcl_Interp * interp)); +/* 389 */ +EXTERN int Tcl_GetChannelNamesEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * pattern)); +/* 390 */ +EXTERN int Tcl_ProcObjCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int objc, + Tcl_Obj *CONST objv[])); +/* 391 */ +EXTERN void Tcl_ConditionFinalize _ANSI_ARGS_(( + Tcl_Condition * condPtr)); +/* 392 */ +EXTERN void Tcl_MutexFinalize _ANSI_ARGS_((Tcl_Mutex * mutex)); +/* 393 */ +EXTERN int Tcl_CreateThread _ANSI_ARGS_((Tcl_ThreadId * idPtr, + Tcl_ThreadCreateProc proc, + ClientData clientData, int stackSize, + int flags)); +/* 394 */ +EXTERN int Tcl_ReadRaw _ANSI_ARGS_((Tcl_Channel chan, + char * dst, int bytesToRead)); +/* 395 */ +EXTERN int Tcl_WriteRaw _ANSI_ARGS_((Tcl_Channel chan, + CONST char * src, int srcLen)); +/* 396 */ +EXTERN Tcl_Channel Tcl_GetTopChannel _ANSI_ARGS_((Tcl_Channel chan)); +/* 397 */ +EXTERN int Tcl_ChannelBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 398 */ +EXTERN CONST84_RETURN char * Tcl_ChannelName _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 399 */ +EXTERN Tcl_ChannelTypeVersion Tcl_ChannelVersion _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 400 */ +EXTERN Tcl_DriverBlockModeProc * Tcl_ChannelBlockModeProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 401 */ +EXTERN Tcl_DriverCloseProc * Tcl_ChannelCloseProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 402 */ +EXTERN Tcl_DriverClose2Proc * Tcl_ChannelClose2Proc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 403 */ +EXTERN Tcl_DriverInputProc * Tcl_ChannelInputProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 404 */ +EXTERN Tcl_DriverOutputProc * Tcl_ChannelOutputProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 405 */ +EXTERN Tcl_DriverSeekProc * Tcl_ChannelSeekProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 406 */ +EXTERN Tcl_DriverSetOptionProc * Tcl_ChannelSetOptionProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 407 */ +EXTERN Tcl_DriverGetOptionProc * Tcl_ChannelGetOptionProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 408 */ +EXTERN Tcl_DriverWatchProc * Tcl_ChannelWatchProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 409 */ +EXTERN Tcl_DriverGetHandleProc * Tcl_ChannelGetHandleProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 410 */ +EXTERN Tcl_DriverFlushProc * Tcl_ChannelFlushProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 411 */ +EXTERN Tcl_DriverHandlerProc * Tcl_ChannelHandlerProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 412 */ +EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId threadId, + int* result)); +/* 413 */ +EXTERN int Tcl_IsChannelShared _ANSI_ARGS_((Tcl_Channel channel)); +/* 414 */ +EXTERN int Tcl_IsChannelRegistered _ANSI_ARGS_(( + Tcl_Interp* interp, Tcl_Channel channel)); +/* 415 */ +EXTERN void Tcl_CutChannel _ANSI_ARGS_((Tcl_Channel channel)); +/* 416 */ +EXTERN void Tcl_SpliceChannel _ANSI_ARGS_((Tcl_Channel channel)); +/* 417 */ +EXTERN void Tcl_ClearChannelHandlers _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 418 */ +EXTERN int Tcl_IsChannelExisting _ANSI_ARGS_(( + CONST char* channelName)); +/* 419 */ +EXTERN int Tcl_UniCharNcasecmp _ANSI_ARGS_(( + CONST Tcl_UniChar * cs, + CONST Tcl_UniChar * ct, unsigned long n)); +/* 420 */ +EXTERN int Tcl_UniCharCaseMatch _ANSI_ARGS_(( + CONST Tcl_UniChar * ustr, + CONST Tcl_UniChar * pattern, int nocase)); +/* 421 */ +EXTERN Tcl_HashEntry * Tcl_FindHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, CONST char * key)); +/* 422 */ +EXTERN Tcl_HashEntry * Tcl_CreateHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, CONST char * key, + int * newPtr)); +/* 423 */ +EXTERN void Tcl_InitCustomHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, int keyType, + Tcl_HashKeyType * typePtr)); +/* 424 */ +EXTERN void Tcl_InitObjHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 425 */ +EXTERN ClientData Tcl_CommandTraceInfo _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * varName, + int flags, Tcl_CommandTraceProc * procPtr, + ClientData prevClientData)); +/* 426 */ +EXTERN int Tcl_TraceCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_CommandTraceProc * proc, + ClientData clientData)); +/* 427 */ +EXTERN void Tcl_UntraceCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_CommandTraceProc * proc, + ClientData clientData)); +/* 428 */ +EXTERN char * Tcl_AttemptAlloc _ANSI_ARGS_((unsigned int size)); +/* 429 */ +EXTERN char * Tcl_AttemptDbCkalloc _ANSI_ARGS_((unsigned int size, + CONST char * file, int line)); +/* 430 */ +EXTERN char * Tcl_AttemptRealloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* 431 */ +EXTERN char * Tcl_AttemptDbCkrealloc _ANSI_ARGS_((char * ptr, + unsigned int size, CONST char * file, + int line)); +/* 432 */ +EXTERN int Tcl_AttemptSetObjLength _ANSI_ARGS_(( + Tcl_Obj * objPtr, int length)); +/* 433 */ +EXTERN Tcl_ThreadId Tcl_GetChannelThread _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 434 */ +EXTERN Tcl_UniChar * Tcl_GetUnicodeFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int * lengthPtr)); +/* 435 */ +EXTERN int Tcl_GetMathFuncInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, int * numArgsPtr, + Tcl_ValueType ** argTypesPtr, + Tcl_MathProc ** procPtr, + ClientData * clientDataPtr)); +/* 436 */ +EXTERN Tcl_Obj * Tcl_ListMathFuncs _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * pattern)); +/* 437 */ +EXTERN Tcl_Obj * Tcl_SubstObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int flags)); +/* 438 */ +EXTERN int Tcl_DetachChannel _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_Channel channel)); +/* 439 */ +EXTERN int Tcl_IsStandardChannel _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 440 */ +EXTERN int Tcl_FSCopyFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +/* 441 */ +EXTERN int Tcl_FSCopyDirectory _ANSI_ARGS_(( + Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, + Tcl_Obj ** errorPtr)); +/* 442 */ +EXTERN int Tcl_FSCreateDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 443 */ +EXTERN int Tcl_FSDeleteFile _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 444 */ +EXTERN int Tcl_FSLoadFile _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * pathPtr, CONST char * sym1, + CONST char * sym2, + Tcl_PackageInitProc ** proc1Ptr, + Tcl_PackageInitProc ** proc2Ptr, + Tcl_LoadHandle * handlePtr, + Tcl_FSUnloadFileProc ** unloadProcPtr)); +/* 445 */ +EXTERN int Tcl_FSMatchInDirectory _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * result, + Tcl_Obj * pathPtr, CONST char * pattern, + Tcl_GlobTypeData * types)); +/* 446 */ +EXTERN Tcl_Obj * Tcl_FSLink _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_Obj * toPtr, int linkAction)); +/* 447 */ +EXTERN int Tcl_FSRemoveDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr, + int recursive, Tcl_Obj ** errorPtr)); +/* 448 */ +EXTERN int Tcl_FSRenameFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +/* 449 */ +EXTERN int Tcl_FSLstat _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_StatBuf * buf)); +/* 450 */ +EXTERN int Tcl_FSUtime _ANSI_ARGS_((Tcl_Obj * pathPtr, + struct utimbuf * tval)); +/* 451 */ +EXTERN int Tcl_FSFileAttrsGet _ANSI_ARGS_((Tcl_Interp * interp, + int index, Tcl_Obj * pathPtr, + Tcl_Obj ** objPtrRef)); +/* 452 */ +EXTERN int Tcl_FSFileAttrsSet _ANSI_ARGS_((Tcl_Interp * interp, + int index, Tcl_Obj * pathPtr, + Tcl_Obj * objPtr)); +/* 453 */ +EXTERN CONST char ** Tcl_FSFileAttrStrings _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_Obj ** objPtrRef)); +/* 454 */ +EXTERN int Tcl_FSStat _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_StatBuf * buf)); +/* 455 */ +EXTERN int Tcl_FSAccess _ANSI_ARGS_((Tcl_Obj * pathPtr, + int mode)); +/* 456 */ +EXTERN Tcl_Channel Tcl_FSOpenFileChannel _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * pathPtr, + CONST char * modeString, int permissions)); +/* 457 */ +EXTERN Tcl_Obj* Tcl_FSGetCwd _ANSI_ARGS_((Tcl_Interp * interp)); +/* 458 */ +EXTERN int Tcl_FSChdir _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 459 */ +EXTERN int Tcl_FSConvertToPathType _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * pathPtr)); +/* 460 */ +EXTERN Tcl_Obj* Tcl_FSJoinPath _ANSI_ARGS_((Tcl_Obj * listObj, + int elements)); +/* 461 */ +EXTERN Tcl_Obj* Tcl_FSSplitPath _ANSI_ARGS_((Tcl_Obj* pathPtr, + int * lenPtr)); +/* 462 */ +EXTERN int Tcl_FSEqualPaths _ANSI_ARGS_((Tcl_Obj* firstPtr, + Tcl_Obj* secondPtr)); +/* 463 */ +EXTERN Tcl_Obj* Tcl_FSGetNormalizedPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); +/* 464 */ +EXTERN Tcl_Obj* Tcl_FSJoinToPath _ANSI_ARGS_((Tcl_Obj * basePtr, + int objc, Tcl_Obj *CONST objv[])); +/* 465 */ +EXTERN ClientData Tcl_FSGetInternalRep _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); +/* 466 */ +EXTERN Tcl_Obj* Tcl_FSGetTranslatedPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathPtr)); +/* 467 */ +EXTERN int Tcl_FSEvalFile _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * fileName)); +/* 468 */ +EXTERN Tcl_Obj* Tcl_FSNewNativePath _ANSI_ARGS_(( + Tcl_Filesystem* fromFilesystem, + ClientData clientData)); +/* 469 */ +EXTERN CONST char* Tcl_FSGetNativePath _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); +/* 470 */ +EXTERN Tcl_Obj* Tcl_FSFileSystemInfo _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr)); +/* 471 */ +EXTERN Tcl_Obj* Tcl_FSPathSeparator _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); +/* 472 */ +EXTERN Tcl_Obj* Tcl_FSListVolumes _ANSI_ARGS_((void)); +/* 473 */ +EXTERN int Tcl_FSRegister _ANSI_ARGS_((ClientData clientData, + Tcl_Filesystem * fsPtr)); +/* 474 */ +EXTERN int Tcl_FSUnregister _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); +/* 475 */ +EXTERN ClientData Tcl_FSData _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); +/* 476 */ +EXTERN CONST char* Tcl_FSGetTranslatedStringPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathPtr)); +/* 477 */ +EXTERN Tcl_Filesystem* Tcl_FSGetFileSystemForPath _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr)); +/* 478 */ +EXTERN Tcl_PathType Tcl_FSGetPathType _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); +/* 479 */ +EXTERN int Tcl_OutputBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 480 */ +EXTERN void Tcl_FSMountsChanged _ANSI_ARGS_(( + Tcl_Filesystem * fsPtr)); +/* 481 */ +EXTERN int Tcl_EvalTokensStandard _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Token * tokenPtr, + int count)); +/* 482 */ +EXTERN void Tcl_GetTime _ANSI_ARGS_((Tcl_Time* timeBuf)); +/* 483 */ +EXTERN Tcl_Trace Tcl_CreateObjTrace _ANSI_ARGS_((Tcl_Interp* interp, + int level, int flags, + Tcl_CmdObjTraceProc* objProc, + ClientData clientData, + Tcl_CmdObjTraceDeleteProc* delProc)); +/* 484 */ +EXTERN int Tcl_GetCommandInfoFromToken _ANSI_ARGS_(( + Tcl_Command token, Tcl_CmdInfo* infoPtr)); +/* 485 */ +EXTERN int Tcl_SetCommandInfoFromToken _ANSI_ARGS_(( + Tcl_Command token, + CONST Tcl_CmdInfo* infoPtr)); +/* 486 */ +EXTERN Tcl_Obj * Tcl_DbNewWideIntObj _ANSI_ARGS_(( + Tcl_WideInt wideValue, CONST char * file, + int line)); +/* 487 */ +EXTERN int Tcl_GetWideIntFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + Tcl_WideInt * widePtr)); +/* 488 */ +EXTERN Tcl_Obj * Tcl_NewWideIntObj _ANSI_ARGS_((Tcl_WideInt wideValue)); +/* 489 */ +EXTERN void Tcl_SetWideIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, + Tcl_WideInt wideValue)); +/* 490 */ +EXTERN Tcl_StatBuf * Tcl_AllocStatBuf _ANSI_ARGS_((void)); +/* 491 */ +EXTERN Tcl_WideInt Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan, + Tcl_WideInt offset, int mode)); +/* 492 */ +EXTERN Tcl_WideInt Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); +/* 493 */ +EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); + +typedef struct TclStubHooks { + struct TclPlatStubs *tclPlatStubs; + struct TclIntStubs *tclIntStubs; + struct TclIntPlatStubs *tclIntPlatStubs; +} TclStubHooks; + +typedef struct TclStubs { + int magic; + struct TclStubHooks *hooks; + + int (*tcl_PkgProvideEx) _ANSI_ARGS_((Tcl_Interp* interp, CONST char* name, CONST char* version, ClientData clientData)); /* 0 */ + CONST84_RETURN char * (*tcl_PkgRequireEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 1 */ + void (*tcl_Panic) _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); /* 2 */ + char * (*tcl_Alloc) _ANSI_ARGS_((unsigned int size)); /* 3 */ + void (*tcl_Free) _ANSI_ARGS_((char * ptr)); /* 4 */ + char * (*tcl_Realloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 5 */ + char * (*tcl_DbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 6 */ + int (*tcl_DbCkfree) _ANSI_ARGS_((char * ptr, CONST char * file, int line)); /* 7 */ + char * (*tcl_DbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_CreateFileHandler) _ANSI_ARGS_((int fd, int mask, Tcl_FileProc * proc, ClientData clientData)); /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved9; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved9; +#endif /* MAC_TCL */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_DeleteFileHandler) _ANSI_ARGS_((int fd)); /* 10 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved10; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved10; +#endif /* MAC_TCL */ + void (*tcl_SetTimer) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 11 */ + void (*tcl_Sleep) _ANSI_ARGS_((int ms)); /* 12 */ + int (*tcl_WaitForEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 13 */ + int (*tcl_AppendAllObjTypes) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 14 */ + void (*tcl_AppendStringsToObj) _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); /* 15 */ + void (*tcl_AppendToObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 16 */ + Tcl_Obj * (*tcl_ConcatObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 17 */ + int (*tcl_ConvertToType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); /* 18 */ + void (*tcl_DbDecrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 19 */ + void (*tcl_DbIncrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 20 */ + int (*tcl_DbIsShared) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 21 */ + Tcl_Obj * (*tcl_DbNewBooleanObj) _ANSI_ARGS_((int boolValue, CONST char * file, int line)); /* 22 */ + Tcl_Obj * (*tcl_DbNewByteArrayObj) _ANSI_ARGS_((CONST unsigned char * bytes, int length, CONST char * file, int line)); /* 23 */ + Tcl_Obj * (*tcl_DbNewDoubleObj) _ANSI_ARGS_((double doubleValue, CONST char * file, int line)); /* 24 */ + Tcl_Obj * (*tcl_DbNewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST * objv, CONST char * file, int line)); /* 25 */ + Tcl_Obj * (*tcl_DbNewLongObj) _ANSI_ARGS_((long longValue, CONST char * file, int line)); /* 26 */ + Tcl_Obj * (*tcl_DbNewObj) _ANSI_ARGS_((CONST char * file, int line)); /* 27 */ + Tcl_Obj * (*tcl_DbNewStringObj) _ANSI_ARGS_((CONST char * bytes, int length, CONST char * file, int line)); /* 28 */ + Tcl_Obj * (*tcl_DuplicateObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 29 */ + void (*tclFreeObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 30 */ + int (*tcl_GetBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * boolPtr)); /* 31 */ + int (*tcl_GetBooleanFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * boolPtr)); /* 32 */ + unsigned char * (*tcl_GetByteArrayFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 33 */ + int (*tcl_GetDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * doublePtr)); /* 34 */ + int (*tcl_GetDoubleFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * doublePtr)); /* 35 */ + int (*tcl_GetIndexFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST84 char ** tablePtr, CONST char * msg, int flags, int * indexPtr)); /* 36 */ + int (*tcl_GetInt) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * intPtr)); /* 37 */ + int (*tcl_GetIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * intPtr)); /* 38 */ + int (*tcl_GetLongFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * longPtr)); /* 39 */ + Tcl_ObjType * (*tcl_GetObjType) _ANSI_ARGS_((CONST char * typeName)); /* 40 */ + char * (*tcl_GetStringFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 41 */ + void (*tcl_InvalidateStringRep) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 42 */ + int (*tcl_ListObjAppendList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * elemListPtr)); /* 43 */ + int (*tcl_ListObjAppendElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * objPtr)); /* 44 */ + int (*tcl_ListObjGetElements) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * objcPtr, Tcl_Obj *** objvPtr)); /* 45 */ + int (*tcl_ListObjIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj ** objPtrPtr)); /* 46 */ + int (*tcl_ListObjLength) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * lengthPtr)); /* 47 */ + int (*tcl_ListObjReplace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int first, int count, int objc, Tcl_Obj *CONST objv[])); /* 48 */ + Tcl_Obj * (*tcl_NewBooleanObj) _ANSI_ARGS_((int boolValue)); /* 49 */ + Tcl_Obj * (*tcl_NewByteArrayObj) _ANSI_ARGS_((CONST unsigned char* bytes, int length)); /* 50 */ + Tcl_Obj * (*tcl_NewDoubleObj) _ANSI_ARGS_((double doubleValue)); /* 51 */ + Tcl_Obj * (*tcl_NewIntObj) _ANSI_ARGS_((int intValue)); /* 52 */ + Tcl_Obj * (*tcl_NewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 53 */ + Tcl_Obj * (*tcl_NewLongObj) _ANSI_ARGS_((long longValue)); /* 54 */ + Tcl_Obj * (*tcl_NewObj) _ANSI_ARGS_((void)); /* 55 */ + Tcl_Obj * (*tcl_NewStringObj) _ANSI_ARGS_((CONST char * bytes, int length)); /* 56 */ + void (*tcl_SetBooleanObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int boolValue)); /* 57 */ + unsigned char * (*tcl_SetByteArrayLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 58 */ + void (*tcl_SetByteArrayObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST unsigned char * bytes, int length)); /* 59 */ + void (*tcl_SetDoubleObj) _ANSI_ARGS_((Tcl_Obj * objPtr, double doubleValue)); /* 60 */ + void (*tcl_SetIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int intValue)); /* 61 */ + void (*tcl_SetListObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int objc, Tcl_Obj *CONST objv[])); /* 62 */ + void (*tcl_SetLongObj) _ANSI_ARGS_((Tcl_Obj * objPtr, long longValue)); /* 63 */ + void (*tcl_SetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 64 */ + void (*tcl_SetStringObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 65 */ + void (*tcl_AddErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message)); /* 66 */ + void (*tcl_AddObjErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message, int length)); /* 67 */ + void (*tcl_AllowExceptions) _ANSI_ARGS_((Tcl_Interp * interp)); /* 68 */ + void (*tcl_AppendElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 69 */ + void (*tcl_AppendResult) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 70 */ + Tcl_AsyncHandler (*tcl_AsyncCreate) _ANSI_ARGS_((Tcl_AsyncProc * proc, ClientData clientData)); /* 71 */ + void (*tcl_AsyncDelete) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 72 */ + int (*tcl_AsyncInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int code)); /* 73 */ + void (*tcl_AsyncMark) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 74 */ + int (*tcl_AsyncReady) _ANSI_ARGS_((void)); /* 75 */ + void (*tcl_BackgroundError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 76 */ + char (*tcl_Backslash) _ANSI_ARGS_((CONST char * src, int * readPtr)); /* 77 */ + int (*tcl_BadChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * optionName, CONST char * optionList)); /* 78 */ + void (*tcl_CallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 79 */ + void (*tcl_CancelIdleCall) _ANSI_ARGS_((Tcl_IdleProc * idleProc, ClientData clientData)); /* 80 */ + int (*tcl_Close) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 81 */ + int (*tcl_CommandComplete) _ANSI_ARGS_((CONST char * cmd)); /* 82 */ + char * (*tcl_Concat) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 83 */ + int (*tcl_ConvertElement) _ANSI_ARGS_((CONST char * src, char * dst, int flags)); /* 84 */ + int (*tcl_ConvertCountedElement) _ANSI_ARGS_((CONST char * src, int length, char * dst, int flags)); /* 85 */ + int (*tcl_CreateAlias) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int argc, CONST84 char * CONST * argv)); /* 86 */ + int (*tcl_CreateAliasObj) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int objc, Tcl_Obj *CONST objv[])); /* 87 */ + Tcl_Channel (*tcl_CreateChannel) _ANSI_ARGS_((Tcl_ChannelType * typePtr, CONST char * chanName, ClientData instanceData, int mask)); /* 88 */ + void (*tcl_CreateChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, int mask, Tcl_ChannelProc * proc, ClientData clientData)); /* 89 */ + void (*tcl_CreateCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 90 */ + Tcl_Command (*tcl_CreateCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 91 */ + void (*tcl_CreateEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 92 */ + void (*tcl_CreateExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 93 */ + Tcl_Interp * (*tcl_CreateInterp) _ANSI_ARGS_((void)); /* 94 */ + void (*tcl_CreateMathFunc) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int numArgs, Tcl_ValueType * argTypes, Tcl_MathProc * proc, ClientData clientData)); /* 95 */ + Tcl_Command (*tcl_CreateObjCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_ObjCmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 96 */ + Tcl_Interp * (*tcl_CreateSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName, int isSafe)); /* 97 */ + Tcl_TimerToken (*tcl_CreateTimerHandler) _ANSI_ARGS_((int milliseconds, Tcl_TimerProc * proc, ClientData clientData)); /* 98 */ + Tcl_Trace (*tcl_CreateTrace) _ANSI_ARGS_((Tcl_Interp * interp, int level, Tcl_CmdTraceProc * proc, ClientData clientData)); /* 99 */ + void (*tcl_DeleteAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 100 */ + void (*tcl_DeleteChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_ChannelProc * proc, ClientData clientData)); /* 101 */ + void (*tcl_DeleteCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 102 */ + int (*tcl_DeleteCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName)); /* 103 */ + int (*tcl_DeleteCommandFromToken) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 104 */ + void (*tcl_DeleteEvents) _ANSI_ARGS_((Tcl_EventDeleteProc * proc, ClientData clientData)); /* 105 */ + void (*tcl_DeleteEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 106 */ + void (*tcl_DeleteExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 107 */ + void (*tcl_DeleteHashEntry) _ANSI_ARGS_((Tcl_HashEntry * entryPtr)); /* 108 */ + void (*tcl_DeleteHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 109 */ + void (*tcl_DeleteInterp) _ANSI_ARGS_((Tcl_Interp * interp)); /* 110 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved111; +#endif /* MAC_TCL */ + void (*tcl_DeleteTimerHandler) _ANSI_ARGS_((Tcl_TimerToken token)); /* 112 */ + void (*tcl_DeleteTrace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Trace trace)); /* 113 */ + void (*tcl_DontCallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 114 */ + int (*tcl_DoOneEvent) _ANSI_ARGS_((int flags)); /* 115 */ + void (*tcl_DoWhenIdle) _ANSI_ARGS_((Tcl_IdleProc * proc, ClientData clientData)); /* 116 */ + char * (*tcl_DStringAppend) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * str, int length)); /* 117 */ + char * (*tcl_DStringAppendElement) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * string)); /* 118 */ + void (*tcl_DStringEndSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 119 */ + void (*tcl_DStringFree) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 120 */ + void (*tcl_DStringGetResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 121 */ + void (*tcl_DStringInit) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 122 */ + void (*tcl_DStringResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 123 */ + void (*tcl_DStringSetLength) _ANSI_ARGS_((Tcl_DString * dsPtr, int length)); /* 124 */ + void (*tcl_DStringStartSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 125 */ + int (*tcl_Eof) _ANSI_ARGS_((Tcl_Channel chan)); /* 126 */ + CONST84_RETURN char * (*tcl_ErrnoId) _ANSI_ARGS_((void)); /* 127 */ + CONST84_RETURN char * (*tcl_ErrnoMsg) _ANSI_ARGS_((int err)); /* 128 */ + int (*tcl_Eval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 129 */ + int (*tcl_EvalFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName)); /* 130 */ + int (*tcl_EvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 131 */ + void (*tcl_EventuallyFree) _ANSI_ARGS_((ClientData clientData, Tcl_FreeProc * freeProc)); /* 132 */ + void (*tcl_Exit) _ANSI_ARGS_((int status)); /* 133 */ + int (*tcl_ExposeCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * hiddenCmdToken, CONST char * cmdName)); /* 134 */ + int (*tcl_ExprBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * ptr)); /* 135 */ + int (*tcl_ExprBooleanObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * ptr)); /* 136 */ + int (*tcl_ExprDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * ptr)); /* 137 */ + int (*tcl_ExprDoubleObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * ptr)); /* 138 */ + int (*tcl_ExprLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * ptr)); /* 139 */ + int (*tcl_ExprLongObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * ptr)); /* 140 */ + int (*tcl_ExprObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); /* 141 */ + int (*tcl_ExprString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 142 */ + void (*tcl_Finalize) _ANSI_ARGS_((void)); /* 143 */ + void (*tcl_FindExecutable) _ANSI_ARGS_((CONST char * argv0)); /* 144 */ + Tcl_HashEntry * (*tcl_FirstHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, Tcl_HashSearch * searchPtr)); /* 145 */ + int (*tcl_Flush) _ANSI_ARGS_((Tcl_Channel chan)); /* 146 */ + void (*tcl_FreeResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 147 */ + int (*tcl_GetAlias) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * argcPtr, CONST84 char *** argvPtr)); /* 148 */ + int (*tcl_GetAliasObj) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * objcPtr, Tcl_Obj *** objv)); /* 149 */ + ClientData (*tcl_GetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc ** procPtr)); /* 150 */ + Tcl_Channel (*tcl_GetChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * chanName, int * modePtr)); /* 151 */ + int (*tcl_GetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan)); /* 152 */ + int (*tcl_GetChannelHandle) _ANSI_ARGS_((Tcl_Channel chan, int direction, ClientData * handlePtr)); /* 153 */ + ClientData (*tcl_GetChannelInstanceData) _ANSI_ARGS_((Tcl_Channel chan)); /* 154 */ + int (*tcl_GetChannelMode) _ANSI_ARGS_((Tcl_Channel chan)); /* 155 */ + CONST84_RETURN char * (*tcl_GetChannelName) _ANSI_ARGS_((Tcl_Channel chan)); /* 156 */ + int (*tcl_GetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, Tcl_DString * dsPtr)); /* 157 */ + Tcl_ChannelType * (*tcl_GetChannelType) _ANSI_ARGS_((Tcl_Channel chan)); /* 158 */ + int (*tcl_GetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdInfo * infoPtr)); /* 159 */ + CONST84_RETURN char * (*tcl_GetCommandName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 160 */ + int (*tcl_GetErrno) _ANSI_ARGS_((void)); /* 161 */ + CONST84_RETURN char * (*tcl_GetHostName) _ANSI_ARGS_((void)); /* 162 */ + int (*tcl_GetInterpPath) _ANSI_ARGS_((Tcl_Interp * askInterp, Tcl_Interp * slaveInterp)); /* 163 */ + Tcl_Interp * (*tcl_GetMaster) _ANSI_ARGS_((Tcl_Interp * interp)); /* 164 */ + CONST char * (*tcl_GetNameOfExecutable) _ANSI_ARGS_((void)); /* 165 */ + Tcl_Obj * (*tcl_GetObjResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 166 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tcl_GetOpenFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int forWriting, int checkUsage, ClientData * filePtr)); /* 167 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved167; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved167; +#endif /* MAC_TCL */ + Tcl_PathType (*tcl_GetPathType) _ANSI_ARGS_((CONST char * path)); /* 168 */ + int (*tcl_Gets) _ANSI_ARGS_((Tcl_Channel chan, Tcl_DString * dsPtr)); /* 169 */ + int (*tcl_GetsObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 170 */ + int (*tcl_GetServiceMode) _ANSI_ARGS_((void)); /* 171 */ + Tcl_Interp * (*tcl_GetSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName)); /* 172 */ + Tcl_Channel (*tcl_GetStdChannel) _ANSI_ARGS_((int type)); /* 173 */ + CONST84_RETURN char * (*tcl_GetStringResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 174 */ + CONST84_RETURN char * (*tcl_GetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 175 */ + CONST84_RETURN char * (*tcl_GetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 176 */ + int (*tcl_GlobalEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command)); /* 177 */ + int (*tcl_GlobalEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 178 */ + int (*tcl_HideCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST char * hiddenCmdToken)); /* 179 */ + int (*tcl_Init) _ANSI_ARGS_((Tcl_Interp * interp)); /* 180 */ + void (*tcl_InitHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType)); /* 181 */ + int (*tcl_InputBlocked) _ANSI_ARGS_((Tcl_Channel chan)); /* 182 */ + int (*tcl_InputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 183 */ + int (*tcl_InterpDeleted) _ANSI_ARGS_((Tcl_Interp * interp)); /* 184 */ + int (*tcl_IsSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 185 */ + char * (*tcl_JoinPath) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv, Tcl_DString * resultPtr)); /* 186 */ + int (*tcl_LinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, char * addr, int type)); /* 187 */ + void *reserved188; + Tcl_Channel (*tcl_MakeFileChannel) _ANSI_ARGS_((ClientData handle, int mode)); /* 189 */ + int (*tcl_MakeSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 190 */ + Tcl_Channel (*tcl_MakeTcpClientChannel) _ANSI_ARGS_((ClientData tcpSocket)); /* 191 */ + char * (*tcl_Merge) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 192 */ + Tcl_HashEntry * (*tcl_NextHashEntry) _ANSI_ARGS_((Tcl_HashSearch * searchPtr)); /* 193 */ + void (*tcl_NotifyChannel) _ANSI_ARGS_((Tcl_Channel channel, int mask)); /* 194 */ + Tcl_Obj * (*tcl_ObjGetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, int flags)); /* 195 */ + Tcl_Obj * (*tcl_ObjSetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, Tcl_Obj * newValuePtr, int flags)); /* 196 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved197; +#endif /* MAC_TCL */ + Tcl_Channel (*tcl_OpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName, CONST char * modeString, int permissions)); /* 198 */ + Tcl_Channel (*tcl_OpenTcpClient) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * address, CONST char * myaddr, int myport, int async)); /* 199 */ + Tcl_Channel (*tcl_OpenTcpServer) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * host, Tcl_TcpAcceptProc * acceptProc, ClientData callbackData)); /* 200 */ + void (*tcl_Preserve) _ANSI_ARGS_((ClientData data)); /* 201 */ + void (*tcl_PrintDouble) _ANSI_ARGS_((Tcl_Interp * interp, double value, char * dst)); /* 202 */ + int (*tcl_PutEnv) _ANSI_ARGS_((CONST char * string)); /* 203 */ + CONST84_RETURN char * (*tcl_PosixError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 204 */ + void (*tcl_QueueEvent) _ANSI_ARGS_((Tcl_Event * evPtr, Tcl_QueuePosition position)); /* 205 */ + int (*tcl_Read) _ANSI_ARGS_((Tcl_Channel chan, char * bufPtr, int toRead)); /* 206 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved207; +#endif /* MAC_TCL */ + int (*tcl_RecordAndEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmd, int flags)); /* 208 */ + int (*tcl_RecordAndEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * cmdPtr, int flags)); /* 209 */ + void (*tcl_RegisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 210 */ + void (*tcl_RegisterObjType) _ANSI_ARGS_((Tcl_ObjType * typePtr)); /* 211 */ + Tcl_RegExp (*tcl_RegExpCompile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 212 */ + int (*tcl_RegExpExec) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, CONST char * str, CONST char * start)); /* 213 */ + int (*tcl_RegExpMatch) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST char * pattern)); /* 214 */ + void (*tcl_RegExpRange) _ANSI_ARGS_((Tcl_RegExp regexp, int index, CONST84 char ** startPtr, CONST84 char ** endPtr)); /* 215 */ + void (*tcl_Release) _ANSI_ARGS_((ClientData clientData)); /* 216 */ + void (*tcl_ResetResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 217 */ + int (*tcl_ScanElement) _ANSI_ARGS_((CONST char * str, int * flagPtr)); /* 218 */ + int (*tcl_ScanCountedElement) _ANSI_ARGS_((CONST char * str, int length, int * flagPtr)); /* 219 */ + int (*tcl_SeekOld) _ANSI_ARGS_((Tcl_Channel chan, int offset, int mode)); /* 220 */ + int (*tcl_ServiceAll) _ANSI_ARGS_((void)); /* 221 */ + int (*tcl_ServiceEvent) _ANSI_ARGS_((int flags)); /* 222 */ + void (*tcl_SetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 223 */ + void (*tcl_SetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan, int sz)); /* 224 */ + int (*tcl_SetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, CONST char * newValue)); /* 225 */ + int (*tcl_SetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST Tcl_CmdInfo * infoPtr)); /* 226 */ + void (*tcl_SetErrno) _ANSI_ARGS_((int err)); /* 227 */ + void (*tcl_SetErrorCode) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 228 */ + void (*tcl_SetMaxBlockTime) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 229 */ + void (*tcl_SetPanicProc) _ANSI_ARGS_((Tcl_PanicProc * panicProc)); /* 230 */ + int (*tcl_SetRecursionLimit) _ANSI_ARGS_((Tcl_Interp * interp, int depth)); /* 231 */ + void (*tcl_SetResult) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tcl_FreeProc * freeProc)); /* 232 */ + int (*tcl_SetServiceMode) _ANSI_ARGS_((int mode)); /* 233 */ + void (*tcl_SetObjErrorCode) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * errorObjPtr)); /* 234 */ + void (*tcl_SetObjResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * resultObjPtr)); /* 235 */ + void (*tcl_SetStdChannel) _ANSI_ARGS_((Tcl_Channel channel, int type)); /* 236 */ + CONST84_RETURN char * (*tcl_SetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, CONST char * newValue, int flags)); /* 237 */ + CONST84_RETURN char * (*tcl_SetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, CONST char * newValue, int flags)); /* 238 */ + CONST84_RETURN char * (*tcl_SignalId) _ANSI_ARGS_((int sig)); /* 239 */ + CONST84_RETURN char * (*tcl_SignalMsg) _ANSI_ARGS_((int sig)); /* 240 */ + void (*tcl_SourceRCFile) _ANSI_ARGS_((Tcl_Interp * interp)); /* 241 */ + int (*tcl_SplitList) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int * argcPtr, CONST84 char *** argvPtr)); /* 242 */ + void (*tcl_SplitPath) _ANSI_ARGS_((CONST char * path, int * argcPtr, CONST84 char *** argvPtr)); /* 243 */ + void (*tcl_StaticPackage) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pkgName, Tcl_PackageInitProc * initProc, Tcl_PackageInitProc * safeInitProc)); /* 244 */ + int (*tcl_StringMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern)); /* 245 */ + int (*tcl_TellOld) _ANSI_ARGS_((Tcl_Channel chan)); /* 246 */ + int (*tcl_TraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 247 */ + int (*tcl_TraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 248 */ + char * (*tcl_TranslateFileName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_DString * bufferPtr)); /* 249 */ + int (*tcl_Ungets) _ANSI_ARGS_((Tcl_Channel chan, CONST char * str, int len, int atHead)); /* 250 */ + void (*tcl_UnlinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 251 */ + int (*tcl_UnregisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 252 */ + int (*tcl_UnsetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 253 */ + int (*tcl_UnsetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 254 */ + void (*tcl_UntraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 255 */ + void (*tcl_UntraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 256 */ + void (*tcl_UpdateLinkedVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 257 */ + int (*tcl_UpVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * varName, CONST char * localName, int flags)); /* 258 */ + int (*tcl_UpVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * part1, CONST char * part2, CONST char * localName, int flags)); /* 259 */ + int (*tcl_VarEval) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 260 */ + ClientData (*tcl_VarTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 261 */ + ClientData (*tcl_VarTraceInfo2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 262 */ + int (*tcl_Write) _ANSI_ARGS_((Tcl_Channel chan, CONST char * s, int slen)); /* 263 */ + void (*tcl_WrongNumArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], CONST char * message)); /* 264 */ + int (*tcl_DumpActiveMemory) _ANSI_ARGS_((CONST char * fileName)); /* 265 */ + void (*tcl_ValidateAllMemory) _ANSI_ARGS_((CONST char * file, int line)); /* 266 */ + void (*tcl_AppendResultVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 267 */ + void (*tcl_AppendStringsToObjVA) _ANSI_ARGS_((Tcl_Obj * objPtr, va_list argList)); /* 268 */ + CONST84_RETURN char * (*tcl_HashStats) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 269 */ + CONST84_RETURN char * (*tcl_ParseVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST84 char ** termPtr)); /* 270 */ + CONST84_RETURN char * (*tcl_PkgPresent) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 271 */ + CONST84_RETURN char * (*tcl_PkgPresentEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 272 */ + int (*tcl_PkgProvide) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version)); /* 273 */ + CONST84_RETURN char * (*tcl_PkgRequire) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 274 */ + void (*tcl_SetErrorCodeVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 275 */ + int (*tcl_VarEvalVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 276 */ + Tcl_Pid (*tcl_WaitPid) _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, int options)); /* 277 */ + void (*tcl_PanicVA) _ANSI_ARGS_((CONST char * format, va_list argList)); /* 278 */ + void (*tcl_GetVersion) _ANSI_ARGS_((int * major, int * minor, int * patchLevel, int * type)); /* 279 */ + void (*tcl_InitMemory) _ANSI_ARGS_((Tcl_Interp * interp)); /* 280 */ + Tcl_Channel (*tcl_StackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_ChannelType * typePtr, ClientData instanceData, int mask, Tcl_Channel prevChan)); /* 281 */ + int (*tcl_UnstackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 282 */ + Tcl_Channel (*tcl_GetStackedChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 283 */ + void (*tcl_SetMainLoop) _ANSI_ARGS_((Tcl_MainLoopProc * proc)); /* 284 */ + void *reserved285; + void (*tcl_AppendObjToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_Obj * appendObjPtr)); /* 286 */ + Tcl_Encoding (*tcl_CreateEncoding) _ANSI_ARGS_((Tcl_EncodingType * typePtr)); /* 287 */ + void (*tcl_CreateThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 288 */ + void (*tcl_DeleteThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 289 */ + void (*tcl_DiscardResult) _ANSI_ARGS_((Tcl_SavedResult * statePtr)); /* 290 */ + int (*tcl_EvalEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, int numBytes, int flags)); /* 291 */ + int (*tcl_EvalObjv) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 292 */ + int (*tcl_EvalObjEx) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 293 */ + void (*tcl_ExitThread) _ANSI_ARGS_((int status)); /* 294 */ + int (*tcl_ExternalToUtf) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 295 */ + char * (*tcl_ExternalToUtfDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 296 */ + void (*tcl_FinalizeThread) _ANSI_ARGS_((void)); /* 297 */ + void (*tcl_FinalizeNotifier) _ANSI_ARGS_((ClientData clientData)); /* 298 */ + void (*tcl_FreeEncoding) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 299 */ + Tcl_ThreadId (*tcl_GetCurrentThread) _ANSI_ARGS_((void)); /* 300 */ + Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */ + CONST84_RETURN char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */ + void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */ + int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST VOID * tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */ + VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */ + Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 306 */ + ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */ + void (*tcl_MutexLock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 308 */ + void (*tcl_MutexUnlock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 309 */ + void (*tcl_ConditionNotify) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 310 */ + void (*tcl_ConditionWait) _ANSI_ARGS_((Tcl_Condition * condPtr, Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); /* 311 */ + int (*tcl_NumUtfChars) _ANSI_ARGS_((CONST char * src, int len)); /* 312 */ + int (*tcl_ReadChars) _ANSI_ARGS_((Tcl_Channel channel, Tcl_Obj * objPtr, int charsToRead, int appendFlag)); /* 313 */ + void (*tcl_RestoreResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 314 */ + void (*tcl_SaveResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 315 */ + int (*tcl_SetSystemEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 316 */ + Tcl_Obj * (*tcl_SetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, Tcl_Obj * newValuePtr, int flags)); /* 317 */ + void (*tcl_ThreadAlert) _ANSI_ARGS_((Tcl_ThreadId threadId)); /* 318 */ + void (*tcl_ThreadQueueEvent) _ANSI_ARGS_((Tcl_ThreadId threadId, Tcl_Event* evPtr, Tcl_QueuePosition position)); /* 319 */ + Tcl_UniChar (*tcl_UniCharAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 320 */ + Tcl_UniChar (*tcl_UniCharToLower) _ANSI_ARGS_((int ch)); /* 321 */ + Tcl_UniChar (*tcl_UniCharToTitle) _ANSI_ARGS_((int ch)); /* 322 */ + Tcl_UniChar (*tcl_UniCharToUpper) _ANSI_ARGS_((int ch)); /* 323 */ + int (*tcl_UniCharToUtf) _ANSI_ARGS_((int ch, char * buf)); /* 324 */ + CONST84_RETURN char * (*tcl_UtfAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 325 */ + int (*tcl_UtfCharComplete) _ANSI_ARGS_((CONST char * src, int len)); /* 326 */ + int (*tcl_UtfBackslash) _ANSI_ARGS_((CONST char * src, int * readPtr, char * dst)); /* 327 */ + CONST84_RETURN char * (*tcl_UtfFindFirst) _ANSI_ARGS_((CONST char * src, int ch)); /* 328 */ + CONST84_RETURN char * (*tcl_UtfFindLast) _ANSI_ARGS_((CONST char * src, int ch)); /* 329 */ + CONST84_RETURN char * (*tcl_UtfNext) _ANSI_ARGS_((CONST char * src)); /* 330 */ + CONST84_RETURN char * (*tcl_UtfPrev) _ANSI_ARGS_((CONST char * src, CONST char * start)); /* 331 */ + int (*tcl_UtfToExternal) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 332 */ + char * (*tcl_UtfToExternalDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 333 */ + int (*tcl_UtfToLower) _ANSI_ARGS_((char * src)); /* 334 */ + int (*tcl_UtfToTitle) _ANSI_ARGS_((char * src)); /* 335 */ + int (*tcl_UtfToUniChar) _ANSI_ARGS_((CONST char * src, Tcl_UniChar * chPtr)); /* 336 */ + int (*tcl_UtfToUpper) _ANSI_ARGS_((char * src)); /* 337 */ + int (*tcl_WriteChars) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 338 */ + int (*tcl_WriteObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 339 */ + char * (*tcl_GetString) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 340 */ + CONST84_RETURN char * (*tcl_GetDefaultEncodingDir) _ANSI_ARGS_((void)); /* 341 */ + void (*tcl_SetDefaultEncodingDir) _ANSI_ARGS_((CONST char * path)); /* 342 */ + void (*tcl_AlertNotifier) _ANSI_ARGS_((ClientData clientData)); /* 343 */ + void (*tcl_ServiceModeHook) _ANSI_ARGS_((int mode)); /* 344 */ + int (*tcl_UniCharIsAlnum) _ANSI_ARGS_((int ch)); /* 345 */ + int (*tcl_UniCharIsAlpha) _ANSI_ARGS_((int ch)); /* 346 */ + int (*tcl_UniCharIsDigit) _ANSI_ARGS_((int ch)); /* 347 */ + int (*tcl_UniCharIsLower) _ANSI_ARGS_((int ch)); /* 348 */ + int (*tcl_UniCharIsSpace) _ANSI_ARGS_((int ch)); /* 349 */ + int (*tcl_UniCharIsUpper) _ANSI_ARGS_((int ch)); /* 350 */ + int (*tcl_UniCharIsWordChar) _ANSI_ARGS_((int ch)); /* 351 */ + int (*tcl_UniCharLen) _ANSI_ARGS_((CONST Tcl_UniChar * str)); /* 352 */ + int (*tcl_UniCharNcmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 353 */ + char * (*tcl_UniCharToUtfDString) _ANSI_ARGS_((CONST Tcl_UniChar * string, int numChars, Tcl_DString * dsPtr)); /* 354 */ + Tcl_UniChar * (*tcl_UtfToUniCharDString) _ANSI_ARGS_((CONST char * string, int length, Tcl_DString * dsPtr)); /* 355 */ + Tcl_RegExp (*tcl_GetRegExpFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * patObj, int flags)); /* 356 */ + Tcl_Obj * (*tcl_EvalTokens) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 357 */ + void (*tcl_FreeParse) _ANSI_ARGS_((Tcl_Parse * parsePtr)); /* 358 */ + void (*tcl_LogCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, CONST char * command, int length)); /* 359 */ + int (*tcl_ParseBraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 360 */ + int (*tcl_ParseCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, int nested, Tcl_Parse * parsePtr)); /* 361 */ + int (*tcl_ParseExpr) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr)); /* 362 */ + int (*tcl_ParseQuotedString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 363 */ + int (*tcl_ParseVarName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append)); /* 364 */ + char * (*tcl_GetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 365 */ + int (*tcl_Chdir) _ANSI_ARGS_((CONST char * dirName)); /* 366 */ + int (*tcl_Access) _ANSI_ARGS_((CONST char * path, int mode)); /* 367 */ + int (*tcl_Stat) _ANSI_ARGS_((CONST char * path, struct stat * bufPtr)); /* 368 */ + int (*tcl_UtfNcmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 369 */ + int (*tcl_UtfNcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 370 */ + int (*tcl_StringCaseMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern, int nocase)); /* 371 */ + int (*tcl_UniCharIsControl) _ANSI_ARGS_((int ch)); /* 372 */ + int (*tcl_UniCharIsGraph) _ANSI_ARGS_((int ch)); /* 373 */ + int (*tcl_UniCharIsPrint) _ANSI_ARGS_((int ch)); /* 374 */ + int (*tcl_UniCharIsPunct) _ANSI_ARGS_((int ch)); /* 375 */ + int (*tcl_RegExpExecObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, Tcl_Obj * objPtr, int offset, int nmatches, int flags)); /* 376 */ + void (*tcl_RegExpGetInfo) _ANSI_ARGS_((Tcl_RegExp regexp, Tcl_RegExpInfo * infoPtr)); /* 377 */ + Tcl_Obj * (*tcl_NewUnicodeObj) _ANSI_ARGS_((CONST Tcl_UniChar * unicode, int numChars)); /* 378 */ + void (*tcl_SetUnicodeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int numChars)); /* 379 */ + int (*tcl_GetCharLength) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 380 */ + Tcl_UniChar (*tcl_GetUniChar) _ANSI_ARGS_((Tcl_Obj * objPtr, int index)); /* 381 */ + Tcl_UniChar * (*tcl_GetUnicode) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 382 */ + Tcl_Obj * (*tcl_GetRange) _ANSI_ARGS_((Tcl_Obj * objPtr, int first, int last)); /* 383 */ + void (*tcl_AppendUnicodeToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int length)); /* 384 */ + int (*tcl_RegExpMatchObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * stringObj, Tcl_Obj * patternObj)); /* 385 */ + void (*tcl_SetNotifier) _ANSI_ARGS_((Tcl_NotifierProcs * notifierProcPtr)); /* 386 */ + Tcl_Mutex * (*tcl_GetAllocMutex) _ANSI_ARGS_((void)); /* 387 */ + int (*tcl_GetChannelNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 388 */ + int (*tcl_GetChannelNamesEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 389 */ + int (*tcl_ProcObjCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 390 */ + void (*tcl_ConditionFinalize) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 391 */ + void (*tcl_MutexFinalize) _ANSI_ARGS_((Tcl_Mutex * mutex)); /* 392 */ + int (*tcl_CreateThread) _ANSI_ARGS_((Tcl_ThreadId * idPtr, Tcl_ThreadCreateProc proc, ClientData clientData, int stackSize, int flags)); /* 393 */ + int (*tcl_ReadRaw) _ANSI_ARGS_((Tcl_Channel chan, char * dst, int bytesToRead)); /* 394 */ + int (*tcl_WriteRaw) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 395 */ + Tcl_Channel (*tcl_GetTopChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 396 */ + int (*tcl_ChannelBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 397 */ + CONST84_RETURN char * (*tcl_ChannelName) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 398 */ + Tcl_ChannelTypeVersion (*tcl_ChannelVersion) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 399 */ + Tcl_DriverBlockModeProc * (*tcl_ChannelBlockModeProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 400 */ + Tcl_DriverCloseProc * (*tcl_ChannelCloseProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 401 */ + Tcl_DriverClose2Proc * (*tcl_ChannelClose2Proc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 402 */ + Tcl_DriverInputProc * (*tcl_ChannelInputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 403 */ + Tcl_DriverOutputProc * (*tcl_ChannelOutputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 404 */ + Tcl_DriverSeekProc * (*tcl_ChannelSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 405 */ + Tcl_DriverSetOptionProc * (*tcl_ChannelSetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 406 */ + Tcl_DriverGetOptionProc * (*tcl_ChannelGetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 407 */ + Tcl_DriverWatchProc * (*tcl_ChannelWatchProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 408 */ + Tcl_DriverGetHandleProc * (*tcl_ChannelGetHandleProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 409 */ + Tcl_DriverFlushProc * (*tcl_ChannelFlushProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 410 */ + Tcl_DriverHandlerProc * (*tcl_ChannelHandlerProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 411 */ + int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 412 */ + int (*tcl_IsChannelShared) _ANSI_ARGS_((Tcl_Channel channel)); /* 413 */ + int (*tcl_IsChannelRegistered) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 414 */ + void (*tcl_CutChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 415 */ + void (*tcl_SpliceChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 416 */ + void (*tcl_ClearChannelHandlers) _ANSI_ARGS_((Tcl_Channel channel)); /* 417 */ + int (*tcl_IsChannelExisting) _ANSI_ARGS_((CONST char* channelName)); /* 418 */ + int (*tcl_UniCharNcasecmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 419 */ + int (*tcl_UniCharCaseMatch) _ANSI_ARGS_((CONST Tcl_UniChar * ustr, CONST Tcl_UniChar * pattern, int nocase)); /* 420 */ + Tcl_HashEntry * (*tcl_FindHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key)); /* 421 */ + Tcl_HashEntry * (*tcl_CreateHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key, int * newPtr)); /* 422 */ + void (*tcl_InitCustomHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType, Tcl_HashKeyType * typePtr)); /* 423 */ + void (*tcl_InitObjHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 424 */ + ClientData (*tcl_CommandTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * procPtr, ClientData prevClientData)); /* 425 */ + int (*tcl_TraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 426 */ + void (*tcl_UntraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 427 */ + char * (*tcl_AttemptAlloc) _ANSI_ARGS_((unsigned int size)); /* 428 */ + char * (*tcl_AttemptDbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 429 */ + char * (*tcl_AttemptRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 430 */ + char * (*tcl_AttemptDbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 431 */ + int (*tcl_AttemptSetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 432 */ + Tcl_ThreadId (*tcl_GetChannelThread) _ANSI_ARGS_((Tcl_Channel channel)); /* 433 */ + Tcl_UniChar * (*tcl_GetUnicodeFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 434 */ + int (*tcl_GetMathFuncInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int * numArgsPtr, Tcl_ValueType ** argTypesPtr, Tcl_MathProc ** procPtr, ClientData * clientDataPtr)); /* 435 */ + Tcl_Obj * (*tcl_ListMathFuncs) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 436 */ + Tcl_Obj * (*tcl_SubstObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 437 */ + int (*tcl_DetachChannel) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 438 */ + int (*tcl_IsStandardChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 439 */ + int (*tcl_FSCopyFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 440 */ + int (*tcl_FSCopyDirectory) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, Tcl_Obj ** errorPtr)); /* 441 */ + int (*tcl_FSCreateDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 442 */ + int (*tcl_FSDeleteFile) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 443 */ + int (*tcl_FSLoadFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * sym1, CONST char * sym2, Tcl_PackageInitProc ** proc1Ptr, Tcl_PackageInitProc ** proc2Ptr, Tcl_LoadHandle * handlePtr, Tcl_FSUnloadFileProc ** unloadProcPtr)); /* 444 */ + int (*tcl_FSMatchInDirectory) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * result, Tcl_Obj * pathPtr, CONST char * pattern, Tcl_GlobTypeData * types)); /* 445 */ + Tcl_Obj * (*tcl_FSLink) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj * toPtr, int linkAction)); /* 446 */ + int (*tcl_FSRemoveDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr, int recursive, Tcl_Obj ** errorPtr)); /* 447 */ + int (*tcl_FSRenameFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 448 */ + int (*tcl_FSLstat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 449 */ + int (*tcl_FSUtime) _ANSI_ARGS_((Tcl_Obj * pathPtr, struct utimbuf * tval)); /* 450 */ + int (*tcl_FSFileAttrsGet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 451 */ + int (*tcl_FSFileAttrsSet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj * objPtr)); /* 452 */ + CONST char ** (*tcl_FSFileAttrStrings) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 453 */ + int (*tcl_FSStat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 454 */ + int (*tcl_FSAccess) _ANSI_ARGS_((Tcl_Obj * pathPtr, int mode)); /* 455 */ + Tcl_Channel (*tcl_FSOpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * modeString, int permissions)); /* 456 */ + Tcl_Obj* (*tcl_FSGetCwd) _ANSI_ARGS_((Tcl_Interp * interp)); /* 457 */ + int (*tcl_FSChdir) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 458 */ + int (*tcl_FSConvertToPathType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr)); /* 459 */ + Tcl_Obj* (*tcl_FSJoinPath) _ANSI_ARGS_((Tcl_Obj * listObj, int elements)); /* 460 */ + Tcl_Obj* (*tcl_FSSplitPath) _ANSI_ARGS_((Tcl_Obj* pathPtr, int * lenPtr)); /* 461 */ + int (*tcl_FSEqualPaths) _ANSI_ARGS_((Tcl_Obj* firstPtr, Tcl_Obj* secondPtr)); /* 462 */ + Tcl_Obj* (*tcl_FSGetNormalizedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); /* 463 */ + Tcl_Obj* (*tcl_FSJoinToPath) _ANSI_ARGS_((Tcl_Obj * basePtr, int objc, Tcl_Obj *CONST objv[])); /* 464 */ + ClientData (*tcl_FSGetInternalRep) _ANSI_ARGS_((Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); /* 465 */ + Tcl_Obj* (*tcl_FSGetTranslatedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 466 */ + int (*tcl_FSEvalFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * fileName)); /* 467 */ + Tcl_Obj* (*tcl_FSNewNativePath) _ANSI_ARGS_((Tcl_Filesystem* fromFilesystem, ClientData clientData)); /* 468 */ + CONST char* (*tcl_FSGetNativePath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 469 */ + Tcl_Obj* (*tcl_FSFileSystemInfo) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 470 */ + Tcl_Obj* (*tcl_FSPathSeparator) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 471 */ + Tcl_Obj* (*tcl_FSListVolumes) _ANSI_ARGS_((void)); /* 472 */ + int (*tcl_FSRegister) _ANSI_ARGS_((ClientData clientData, Tcl_Filesystem * fsPtr)); /* 473 */ + int (*tcl_FSUnregister) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 474 */ + ClientData (*tcl_FSData) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 475 */ + CONST char* (*tcl_FSGetTranslatedStringPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 476 */ + Tcl_Filesystem* (*tcl_FSGetFileSystemForPath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 477 */ + Tcl_PathType (*tcl_FSGetPathType) _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); /* 478 */ + int (*tcl_OutputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 479 */ + void (*tcl_FSMountsChanged) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 480 */ + int (*tcl_EvalTokensStandard) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 481 */ + void (*tcl_GetTime) _ANSI_ARGS_((Tcl_Time* timeBuf)); /* 482 */ + Tcl_Trace (*tcl_CreateObjTrace) _ANSI_ARGS_((Tcl_Interp* interp, int level, int flags, Tcl_CmdObjTraceProc* objProc, ClientData clientData, Tcl_CmdObjTraceDeleteProc* delProc)); /* 483 */ + int (*tcl_GetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, Tcl_CmdInfo* infoPtr)); /* 484 */ + int (*tcl_SetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, CONST Tcl_CmdInfo* infoPtr)); /* 485 */ + Tcl_Obj * (*tcl_DbNewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue, CONST char * file, int line)); /* 486 */ + int (*tcl_GetWideIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_WideInt * widePtr)); /* 487 */ + Tcl_Obj * (*tcl_NewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue)); /* 488 */ + void (*tcl_SetWideIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_WideInt wideValue)); /* 489 */ + Tcl_StatBuf * (*tcl_AllocStatBuf) _ANSI_ARGS_((void)); /* 490 */ + Tcl_WideInt (*tcl_Seek) _ANSI_ARGS_((Tcl_Channel chan, Tcl_WideInt offset, int mode)); /* 491 */ + Tcl_WideInt (*tcl_Tell) _ANSI_ARGS_((Tcl_Channel chan)); /* 492 */ + Tcl_DriverWideSeekProc * (*tcl_ChannelWideSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 493 */ +} TclStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclStubs *tclStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#ifndef Tcl_PkgProvideEx +#define Tcl_PkgProvideEx \ + (tclStubsPtr->tcl_PkgProvideEx) /* 0 */ +#endif +#ifndef Tcl_PkgRequireEx +#define Tcl_PkgRequireEx \ + (tclStubsPtr->tcl_PkgRequireEx) /* 1 */ +#endif +#ifndef Tcl_Panic +#define Tcl_Panic \ + (tclStubsPtr->tcl_Panic) /* 2 */ +#endif +#ifndef Tcl_Alloc +#define Tcl_Alloc \ + (tclStubsPtr->tcl_Alloc) /* 3 */ +#endif +#ifndef Tcl_Free +#define Tcl_Free \ + (tclStubsPtr->tcl_Free) /* 4 */ +#endif +#ifndef Tcl_Realloc +#define Tcl_Realloc \ + (tclStubsPtr->tcl_Realloc) /* 5 */ +#endif +#ifndef Tcl_DbCkalloc +#define Tcl_DbCkalloc \ + (tclStubsPtr->tcl_DbCkalloc) /* 6 */ +#endif +#ifndef Tcl_DbCkfree +#define Tcl_DbCkfree \ + (tclStubsPtr->tcl_DbCkfree) /* 7 */ +#endif +#ifndef Tcl_DbCkrealloc +#define Tcl_DbCkrealloc \ + (tclStubsPtr->tcl_DbCkrealloc) /* 8 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_CreateFileHandler +#define Tcl_CreateFileHandler \ + (tclStubsPtr->tcl_CreateFileHandler) /* 9 */ +#endif +#endif /* UNIX */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_DeleteFileHandler +#define Tcl_DeleteFileHandler \ + (tclStubsPtr->tcl_DeleteFileHandler) /* 10 */ +#endif +#endif /* UNIX */ +#ifndef Tcl_SetTimer +#define Tcl_SetTimer \ + (tclStubsPtr->tcl_SetTimer) /* 11 */ +#endif +#ifndef Tcl_Sleep +#define Tcl_Sleep \ + (tclStubsPtr->tcl_Sleep) /* 12 */ +#endif +#ifndef Tcl_WaitForEvent +#define Tcl_WaitForEvent \ + (tclStubsPtr->tcl_WaitForEvent) /* 13 */ +#endif +#ifndef Tcl_AppendAllObjTypes +#define Tcl_AppendAllObjTypes \ + (tclStubsPtr->tcl_AppendAllObjTypes) /* 14 */ +#endif +#ifndef Tcl_AppendStringsToObj +#define Tcl_AppendStringsToObj \ + (tclStubsPtr->tcl_AppendStringsToObj) /* 15 */ +#endif +#ifndef Tcl_AppendToObj +#define Tcl_AppendToObj \ + (tclStubsPtr->tcl_AppendToObj) /* 16 */ +#endif +#ifndef Tcl_ConcatObj +#define Tcl_ConcatObj \ + (tclStubsPtr->tcl_ConcatObj) /* 17 */ +#endif +#ifndef Tcl_ConvertToType +#define Tcl_ConvertToType \ + (tclStubsPtr->tcl_ConvertToType) /* 18 */ +#endif +#ifndef Tcl_DbDecrRefCount +#define Tcl_DbDecrRefCount \ + (tclStubsPtr->tcl_DbDecrRefCount) /* 19 */ +#endif +#ifndef Tcl_DbIncrRefCount +#define Tcl_DbIncrRefCount \ + (tclStubsPtr->tcl_DbIncrRefCount) /* 20 */ +#endif +#ifndef Tcl_DbIsShared +#define Tcl_DbIsShared \ + (tclStubsPtr->tcl_DbIsShared) /* 21 */ +#endif +#ifndef Tcl_DbNewBooleanObj +#define Tcl_DbNewBooleanObj \ + (tclStubsPtr->tcl_DbNewBooleanObj) /* 22 */ +#endif +#ifndef Tcl_DbNewByteArrayObj +#define Tcl_DbNewByteArrayObj \ + (tclStubsPtr->tcl_DbNewByteArrayObj) /* 23 */ +#endif +#ifndef Tcl_DbNewDoubleObj +#define Tcl_DbNewDoubleObj \ + (tclStubsPtr->tcl_DbNewDoubleObj) /* 24 */ +#endif +#ifndef Tcl_DbNewListObj +#define Tcl_DbNewListObj \ + (tclStubsPtr->tcl_DbNewListObj) /* 25 */ +#endif +#ifndef Tcl_DbNewLongObj +#define Tcl_DbNewLongObj \ + (tclStubsPtr->tcl_DbNewLongObj) /* 26 */ +#endif +#ifndef Tcl_DbNewObj +#define Tcl_DbNewObj \ + (tclStubsPtr->tcl_DbNewObj) /* 27 */ +#endif +#ifndef Tcl_DbNewStringObj +#define Tcl_DbNewStringObj \ + (tclStubsPtr->tcl_DbNewStringObj) /* 28 */ +#endif +#ifndef Tcl_DuplicateObj +#define Tcl_DuplicateObj \ + (tclStubsPtr->tcl_DuplicateObj) /* 29 */ +#endif +#ifndef TclFreeObj +#define TclFreeObj \ + (tclStubsPtr->tclFreeObj) /* 30 */ +#endif +#ifndef Tcl_GetBoolean +#define Tcl_GetBoolean \ + (tclStubsPtr->tcl_GetBoolean) /* 31 */ +#endif +#ifndef Tcl_GetBooleanFromObj +#define Tcl_GetBooleanFromObj \ + (tclStubsPtr->tcl_GetBooleanFromObj) /* 32 */ +#endif +#ifndef Tcl_GetByteArrayFromObj +#define Tcl_GetByteArrayFromObj \ + (tclStubsPtr->tcl_GetByteArrayFromObj) /* 33 */ +#endif +#ifndef Tcl_GetDouble +#define Tcl_GetDouble \ + (tclStubsPtr->tcl_GetDouble) /* 34 */ +#endif +#ifndef Tcl_GetDoubleFromObj +#define Tcl_GetDoubleFromObj \ + (tclStubsPtr->tcl_GetDoubleFromObj) /* 35 */ +#endif +#ifndef Tcl_GetIndexFromObj +#define Tcl_GetIndexFromObj \ + (tclStubsPtr->tcl_GetIndexFromObj) /* 36 */ +#endif +#ifndef Tcl_GetInt +#define Tcl_GetInt \ + (tclStubsPtr->tcl_GetInt) /* 37 */ +#endif +#ifndef Tcl_GetIntFromObj +#define Tcl_GetIntFromObj \ + (tclStubsPtr->tcl_GetIntFromObj) /* 38 */ +#endif +#ifndef Tcl_GetLongFromObj +#define Tcl_GetLongFromObj \ + (tclStubsPtr->tcl_GetLongFromObj) /* 39 */ +#endif +#ifndef Tcl_GetObjType +#define Tcl_GetObjType \ + (tclStubsPtr->tcl_GetObjType) /* 40 */ +#endif +#ifndef Tcl_GetStringFromObj +#define Tcl_GetStringFromObj \ + (tclStubsPtr->tcl_GetStringFromObj) /* 41 */ +#endif +#ifndef Tcl_InvalidateStringRep +#define Tcl_InvalidateStringRep \ + (tclStubsPtr->tcl_InvalidateStringRep) /* 42 */ +#endif +#ifndef Tcl_ListObjAppendList +#define Tcl_ListObjAppendList \ + (tclStubsPtr->tcl_ListObjAppendList) /* 43 */ +#endif +#ifndef Tcl_ListObjAppendElement +#define Tcl_ListObjAppendElement \ + (tclStubsPtr->tcl_ListObjAppendElement) /* 44 */ +#endif +#ifndef Tcl_ListObjGetElements +#define Tcl_ListObjGetElements \ + (tclStubsPtr->tcl_ListObjGetElements) /* 45 */ +#endif +#ifndef Tcl_ListObjIndex +#define Tcl_ListObjIndex \ + (tclStubsPtr->tcl_ListObjIndex) /* 46 */ +#endif +#ifndef Tcl_ListObjLength +#define Tcl_ListObjLength \ + (tclStubsPtr->tcl_ListObjLength) /* 47 */ +#endif +#ifndef Tcl_ListObjReplace +#define Tcl_ListObjReplace \ + (tclStubsPtr->tcl_ListObjReplace) /* 48 */ +#endif +#ifndef Tcl_NewBooleanObj +#define Tcl_NewBooleanObj \ + (tclStubsPtr->tcl_NewBooleanObj) /* 49 */ +#endif +#ifndef Tcl_NewByteArrayObj +#define Tcl_NewByteArrayObj \ + (tclStubsPtr->tcl_NewByteArrayObj) /* 50 */ +#endif +#ifndef Tcl_NewDoubleObj +#define Tcl_NewDoubleObj \ + (tclStubsPtr->tcl_NewDoubleObj) /* 51 */ +#endif +#ifndef Tcl_NewIntObj +#define Tcl_NewIntObj \ + (tclStubsPtr->tcl_NewIntObj) /* 52 */ +#endif +#ifndef Tcl_NewListObj +#define Tcl_NewListObj \ + (tclStubsPtr->tcl_NewListObj) /* 53 */ +#endif +#ifndef Tcl_NewLongObj +#define Tcl_NewLongObj \ + (tclStubsPtr->tcl_NewLongObj) /* 54 */ +#endif +#ifndef Tcl_NewObj +#define Tcl_NewObj \ + (tclStubsPtr->tcl_NewObj) /* 55 */ +#endif +#ifndef Tcl_NewStringObj +#define Tcl_NewStringObj \ + (tclStubsPtr->tcl_NewStringObj) /* 56 */ +#endif +#ifndef Tcl_SetBooleanObj +#define Tcl_SetBooleanObj \ + (tclStubsPtr->tcl_SetBooleanObj) /* 57 */ +#endif +#ifndef Tcl_SetByteArrayLength +#define Tcl_SetByteArrayLength \ + (tclStubsPtr->tcl_SetByteArrayLength) /* 58 */ +#endif +#ifndef Tcl_SetByteArrayObj +#define Tcl_SetByteArrayObj \ + (tclStubsPtr->tcl_SetByteArrayObj) /* 59 */ +#endif +#ifndef Tcl_SetDoubleObj +#define Tcl_SetDoubleObj \ + (tclStubsPtr->tcl_SetDoubleObj) /* 60 */ +#endif +#ifndef Tcl_SetIntObj +#define Tcl_SetIntObj \ + (tclStubsPtr->tcl_SetIntObj) /* 61 */ +#endif +#ifndef Tcl_SetListObj +#define Tcl_SetListObj \ + (tclStubsPtr->tcl_SetListObj) /* 62 */ +#endif +#ifndef Tcl_SetLongObj +#define Tcl_SetLongObj \ + (tclStubsPtr->tcl_SetLongObj) /* 63 */ +#endif +#ifndef Tcl_SetObjLength +#define Tcl_SetObjLength \ + (tclStubsPtr->tcl_SetObjLength) /* 64 */ +#endif +#ifndef Tcl_SetStringObj +#define Tcl_SetStringObj \ + (tclStubsPtr->tcl_SetStringObj) /* 65 */ +#endif +#ifndef Tcl_AddErrorInfo +#define Tcl_AddErrorInfo \ + (tclStubsPtr->tcl_AddErrorInfo) /* 66 */ +#endif +#ifndef Tcl_AddObjErrorInfo +#define Tcl_AddObjErrorInfo \ + (tclStubsPtr->tcl_AddObjErrorInfo) /* 67 */ +#endif +#ifndef Tcl_AllowExceptions +#define Tcl_AllowExceptions \ + (tclStubsPtr->tcl_AllowExceptions) /* 68 */ +#endif +#ifndef Tcl_AppendElement +#define Tcl_AppendElement \ + (tclStubsPtr->tcl_AppendElement) /* 69 */ +#endif +#ifndef Tcl_AppendResult +#define Tcl_AppendResult \ + (tclStubsPtr->tcl_AppendResult) /* 70 */ +#endif +#ifndef Tcl_AsyncCreate +#define Tcl_AsyncCreate \ + (tclStubsPtr->tcl_AsyncCreate) /* 71 */ +#endif +#ifndef Tcl_AsyncDelete +#define Tcl_AsyncDelete \ + (tclStubsPtr->tcl_AsyncDelete) /* 72 */ +#endif +#ifndef Tcl_AsyncInvoke +#define Tcl_AsyncInvoke \ + (tclStubsPtr->tcl_AsyncInvoke) /* 73 */ +#endif +#ifndef Tcl_AsyncMark +#define Tcl_AsyncMark \ + (tclStubsPtr->tcl_AsyncMark) /* 74 */ +#endif +#ifndef Tcl_AsyncReady +#define Tcl_AsyncReady \ + (tclStubsPtr->tcl_AsyncReady) /* 75 */ +#endif +#ifndef Tcl_BackgroundError +#define Tcl_BackgroundError \ + (tclStubsPtr->tcl_BackgroundError) /* 76 */ +#endif +#ifndef Tcl_Backslash +#define Tcl_Backslash \ + (tclStubsPtr->tcl_Backslash) /* 77 */ +#endif +#ifndef Tcl_BadChannelOption +#define Tcl_BadChannelOption \ + (tclStubsPtr->tcl_BadChannelOption) /* 78 */ +#endif +#ifndef Tcl_CallWhenDeleted +#define Tcl_CallWhenDeleted \ + (tclStubsPtr->tcl_CallWhenDeleted) /* 79 */ +#endif +#ifndef Tcl_CancelIdleCall +#define Tcl_CancelIdleCall \ + (tclStubsPtr->tcl_CancelIdleCall) /* 80 */ +#endif +#ifndef Tcl_Close +#define Tcl_Close \ + (tclStubsPtr->tcl_Close) /* 81 */ +#endif +#ifndef Tcl_CommandComplete +#define Tcl_CommandComplete \ + (tclStubsPtr->tcl_CommandComplete) /* 82 */ +#endif +#ifndef Tcl_Concat +#define Tcl_Concat \ + (tclStubsPtr->tcl_Concat) /* 83 */ +#endif +#ifndef Tcl_ConvertElement +#define Tcl_ConvertElement \ + (tclStubsPtr->tcl_ConvertElement) /* 84 */ +#endif +#ifndef Tcl_ConvertCountedElement +#define Tcl_ConvertCountedElement \ + (tclStubsPtr->tcl_ConvertCountedElement) /* 85 */ +#endif +#ifndef Tcl_CreateAlias +#define Tcl_CreateAlias \ + (tclStubsPtr->tcl_CreateAlias) /* 86 */ +#endif +#ifndef Tcl_CreateAliasObj +#define Tcl_CreateAliasObj \ + (tclStubsPtr->tcl_CreateAliasObj) /* 87 */ +#endif +#ifndef Tcl_CreateChannel +#define Tcl_CreateChannel \ + (tclStubsPtr->tcl_CreateChannel) /* 88 */ +#endif +#ifndef Tcl_CreateChannelHandler +#define Tcl_CreateChannelHandler \ + (tclStubsPtr->tcl_CreateChannelHandler) /* 89 */ +#endif +#ifndef Tcl_CreateCloseHandler +#define Tcl_CreateCloseHandler \ + (tclStubsPtr->tcl_CreateCloseHandler) /* 90 */ +#endif +#ifndef Tcl_CreateCommand +#define Tcl_CreateCommand \ + (tclStubsPtr->tcl_CreateCommand) /* 91 */ +#endif +#ifndef Tcl_CreateEventSource +#define Tcl_CreateEventSource \ + (tclStubsPtr->tcl_CreateEventSource) /* 92 */ +#endif +#ifndef Tcl_CreateExitHandler +#define Tcl_CreateExitHandler \ + (tclStubsPtr->tcl_CreateExitHandler) /* 93 */ +#endif +#ifndef Tcl_CreateInterp +#define Tcl_CreateInterp \ + (tclStubsPtr->tcl_CreateInterp) /* 94 */ +#endif +#ifndef Tcl_CreateMathFunc +#define Tcl_CreateMathFunc \ + (tclStubsPtr->tcl_CreateMathFunc) /* 95 */ +#endif +#ifndef Tcl_CreateObjCommand +#define Tcl_CreateObjCommand \ + (tclStubsPtr->tcl_CreateObjCommand) /* 96 */ +#endif +#ifndef Tcl_CreateSlave +#define Tcl_CreateSlave \ + (tclStubsPtr->tcl_CreateSlave) /* 97 */ +#endif +#ifndef Tcl_CreateTimerHandler +#define Tcl_CreateTimerHandler \ + (tclStubsPtr->tcl_CreateTimerHandler) /* 98 */ +#endif +#ifndef Tcl_CreateTrace +#define Tcl_CreateTrace \ + (tclStubsPtr->tcl_CreateTrace) /* 99 */ +#endif +#ifndef Tcl_DeleteAssocData +#define Tcl_DeleteAssocData \ + (tclStubsPtr->tcl_DeleteAssocData) /* 100 */ +#endif +#ifndef Tcl_DeleteChannelHandler +#define Tcl_DeleteChannelHandler \ + (tclStubsPtr->tcl_DeleteChannelHandler) /* 101 */ +#endif +#ifndef Tcl_DeleteCloseHandler +#define Tcl_DeleteCloseHandler \ + (tclStubsPtr->tcl_DeleteCloseHandler) /* 102 */ +#endif +#ifndef Tcl_DeleteCommand +#define Tcl_DeleteCommand \ + (tclStubsPtr->tcl_DeleteCommand) /* 103 */ +#endif +#ifndef Tcl_DeleteCommandFromToken +#define Tcl_DeleteCommandFromToken \ + (tclStubsPtr->tcl_DeleteCommandFromToken) /* 104 */ +#endif +#ifndef Tcl_DeleteEvents +#define Tcl_DeleteEvents \ + (tclStubsPtr->tcl_DeleteEvents) /* 105 */ +#endif +#ifndef Tcl_DeleteEventSource +#define Tcl_DeleteEventSource \ + (tclStubsPtr->tcl_DeleteEventSource) /* 106 */ +#endif +#ifndef Tcl_DeleteExitHandler +#define Tcl_DeleteExitHandler \ + (tclStubsPtr->tcl_DeleteExitHandler) /* 107 */ +#endif +#ifndef Tcl_DeleteHashEntry +#define Tcl_DeleteHashEntry \ + (tclStubsPtr->tcl_DeleteHashEntry) /* 108 */ +#endif +#ifndef Tcl_DeleteHashTable +#define Tcl_DeleteHashTable \ + (tclStubsPtr->tcl_DeleteHashTable) /* 109 */ +#endif +#ifndef Tcl_DeleteInterp +#define Tcl_DeleteInterp \ + (tclStubsPtr->tcl_DeleteInterp) /* 110 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_DetachPids +#define Tcl_DetachPids \ + (tclStubsPtr->tcl_DetachPids) /* 111 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_DetachPids +#define Tcl_DetachPids \ + (tclStubsPtr->tcl_DetachPids) /* 111 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_DeleteTimerHandler +#define Tcl_DeleteTimerHandler \ + (tclStubsPtr->tcl_DeleteTimerHandler) /* 112 */ +#endif +#ifndef Tcl_DeleteTrace +#define Tcl_DeleteTrace \ + (tclStubsPtr->tcl_DeleteTrace) /* 113 */ +#endif +#ifndef Tcl_DontCallWhenDeleted +#define Tcl_DontCallWhenDeleted \ + (tclStubsPtr->tcl_DontCallWhenDeleted) /* 114 */ +#endif +#ifndef Tcl_DoOneEvent +#define Tcl_DoOneEvent \ + (tclStubsPtr->tcl_DoOneEvent) /* 115 */ +#endif +#ifndef Tcl_DoWhenIdle +#define Tcl_DoWhenIdle \ + (tclStubsPtr->tcl_DoWhenIdle) /* 116 */ +#endif +#ifndef Tcl_DStringAppend +#define Tcl_DStringAppend \ + (tclStubsPtr->tcl_DStringAppend) /* 117 */ +#endif +#ifndef Tcl_DStringAppendElement +#define Tcl_DStringAppendElement \ + (tclStubsPtr->tcl_DStringAppendElement) /* 118 */ +#endif +#ifndef Tcl_DStringEndSublist +#define Tcl_DStringEndSublist \ + (tclStubsPtr->tcl_DStringEndSublist) /* 119 */ +#endif +#ifndef Tcl_DStringFree +#define Tcl_DStringFree \ + (tclStubsPtr->tcl_DStringFree) /* 120 */ +#endif +#ifndef Tcl_DStringGetResult +#define Tcl_DStringGetResult \ + (tclStubsPtr->tcl_DStringGetResult) /* 121 */ +#endif +#ifndef Tcl_DStringInit +#define Tcl_DStringInit \ + (tclStubsPtr->tcl_DStringInit) /* 122 */ +#endif +#ifndef Tcl_DStringResult +#define Tcl_DStringResult \ + (tclStubsPtr->tcl_DStringResult) /* 123 */ +#endif +#ifndef Tcl_DStringSetLength +#define Tcl_DStringSetLength \ + (tclStubsPtr->tcl_DStringSetLength) /* 124 */ +#endif +#ifndef Tcl_DStringStartSublist +#define Tcl_DStringStartSublist \ + (tclStubsPtr->tcl_DStringStartSublist) /* 125 */ +#endif +#ifndef Tcl_Eof +#define Tcl_Eof \ + (tclStubsPtr->tcl_Eof) /* 126 */ +#endif +#ifndef Tcl_ErrnoId +#define Tcl_ErrnoId \ + (tclStubsPtr->tcl_ErrnoId) /* 127 */ +#endif +#ifndef Tcl_ErrnoMsg +#define Tcl_ErrnoMsg \ + (tclStubsPtr->tcl_ErrnoMsg) /* 128 */ +#endif +#ifndef Tcl_Eval +#define Tcl_Eval \ + (tclStubsPtr->tcl_Eval) /* 129 */ +#endif +#ifndef Tcl_EvalFile +#define Tcl_EvalFile \ + (tclStubsPtr->tcl_EvalFile) /* 130 */ +#endif +#ifndef Tcl_EvalObj +#define Tcl_EvalObj \ + (tclStubsPtr->tcl_EvalObj) /* 131 */ +#endif +#ifndef Tcl_EventuallyFree +#define Tcl_EventuallyFree \ + (tclStubsPtr->tcl_EventuallyFree) /* 132 */ +#endif +#ifndef Tcl_Exit +#define Tcl_Exit \ + (tclStubsPtr->tcl_Exit) /* 133 */ +#endif +#ifndef Tcl_ExposeCommand +#define Tcl_ExposeCommand \ + (tclStubsPtr->tcl_ExposeCommand) /* 134 */ +#endif +#ifndef Tcl_ExprBoolean +#define Tcl_ExprBoolean \ + (tclStubsPtr->tcl_ExprBoolean) /* 135 */ +#endif +#ifndef Tcl_ExprBooleanObj +#define Tcl_ExprBooleanObj \ + (tclStubsPtr->tcl_ExprBooleanObj) /* 136 */ +#endif +#ifndef Tcl_ExprDouble +#define Tcl_ExprDouble \ + (tclStubsPtr->tcl_ExprDouble) /* 137 */ +#endif +#ifndef Tcl_ExprDoubleObj +#define Tcl_ExprDoubleObj \ + (tclStubsPtr->tcl_ExprDoubleObj) /* 138 */ +#endif +#ifndef Tcl_ExprLong +#define Tcl_ExprLong \ + (tclStubsPtr->tcl_ExprLong) /* 139 */ +#endif +#ifndef Tcl_ExprLongObj +#define Tcl_ExprLongObj \ + (tclStubsPtr->tcl_ExprLongObj) /* 140 */ +#endif +#ifndef Tcl_ExprObj +#define Tcl_ExprObj \ + (tclStubsPtr->tcl_ExprObj) /* 141 */ +#endif +#ifndef Tcl_ExprString +#define Tcl_ExprString \ + (tclStubsPtr->tcl_ExprString) /* 142 */ +#endif +#ifndef Tcl_Finalize +#define Tcl_Finalize \ + (tclStubsPtr->tcl_Finalize) /* 143 */ +#endif +#ifndef Tcl_FindExecutable +#define Tcl_FindExecutable \ + (tclStubsPtr->tcl_FindExecutable) /* 144 */ +#endif +#ifndef Tcl_FirstHashEntry +#define Tcl_FirstHashEntry \ + (tclStubsPtr->tcl_FirstHashEntry) /* 145 */ +#endif +#ifndef Tcl_Flush +#define Tcl_Flush \ + (tclStubsPtr->tcl_Flush) /* 146 */ +#endif +#ifndef Tcl_FreeResult +#define Tcl_FreeResult \ + (tclStubsPtr->tcl_FreeResult) /* 147 */ +#endif +#ifndef Tcl_GetAlias +#define Tcl_GetAlias \ + (tclStubsPtr->tcl_GetAlias) /* 148 */ +#endif +#ifndef Tcl_GetAliasObj +#define Tcl_GetAliasObj \ + (tclStubsPtr->tcl_GetAliasObj) /* 149 */ +#endif +#ifndef Tcl_GetAssocData +#define Tcl_GetAssocData \ + (tclStubsPtr->tcl_GetAssocData) /* 150 */ +#endif +#ifndef Tcl_GetChannel +#define Tcl_GetChannel \ + (tclStubsPtr->tcl_GetChannel) /* 151 */ +#endif +#ifndef Tcl_GetChannelBufferSize +#define Tcl_GetChannelBufferSize \ + (tclStubsPtr->tcl_GetChannelBufferSize) /* 152 */ +#endif +#ifndef Tcl_GetChannelHandle +#define Tcl_GetChannelHandle \ + (tclStubsPtr->tcl_GetChannelHandle) /* 153 */ +#endif +#ifndef Tcl_GetChannelInstanceData +#define Tcl_GetChannelInstanceData \ + (tclStubsPtr->tcl_GetChannelInstanceData) /* 154 */ +#endif +#ifndef Tcl_GetChannelMode +#define Tcl_GetChannelMode \ + (tclStubsPtr->tcl_GetChannelMode) /* 155 */ +#endif +#ifndef Tcl_GetChannelName +#define Tcl_GetChannelName \ + (tclStubsPtr->tcl_GetChannelName) /* 156 */ +#endif +#ifndef Tcl_GetChannelOption +#define Tcl_GetChannelOption \ + (tclStubsPtr->tcl_GetChannelOption) /* 157 */ +#endif +#ifndef Tcl_GetChannelType +#define Tcl_GetChannelType \ + (tclStubsPtr->tcl_GetChannelType) /* 158 */ +#endif +#ifndef Tcl_GetCommandInfo +#define Tcl_GetCommandInfo \ + (tclStubsPtr->tcl_GetCommandInfo) /* 159 */ +#endif +#ifndef Tcl_GetCommandName +#define Tcl_GetCommandName \ + (tclStubsPtr->tcl_GetCommandName) /* 160 */ +#endif +#ifndef Tcl_GetErrno +#define Tcl_GetErrno \ + (tclStubsPtr->tcl_GetErrno) /* 161 */ +#endif +#ifndef Tcl_GetHostName +#define Tcl_GetHostName \ + (tclStubsPtr->tcl_GetHostName) /* 162 */ +#endif +#ifndef Tcl_GetInterpPath +#define Tcl_GetInterpPath \ + (tclStubsPtr->tcl_GetInterpPath) /* 163 */ +#endif +#ifndef Tcl_GetMaster +#define Tcl_GetMaster \ + (tclStubsPtr->tcl_GetMaster) /* 164 */ +#endif +#ifndef Tcl_GetNameOfExecutable +#define Tcl_GetNameOfExecutable \ + (tclStubsPtr->tcl_GetNameOfExecutable) /* 165 */ +#endif +#ifndef Tcl_GetObjResult +#define Tcl_GetObjResult \ + (tclStubsPtr->tcl_GetObjResult) /* 166 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_GetOpenFile +#define Tcl_GetOpenFile \ + (tclStubsPtr->tcl_GetOpenFile) /* 167 */ +#endif +#endif /* UNIX */ +#ifndef Tcl_GetPathType +#define Tcl_GetPathType \ + (tclStubsPtr->tcl_GetPathType) /* 168 */ +#endif +#ifndef Tcl_Gets +#define Tcl_Gets \ + (tclStubsPtr->tcl_Gets) /* 169 */ +#endif +#ifndef Tcl_GetsObj +#define Tcl_GetsObj \ + (tclStubsPtr->tcl_GetsObj) /* 170 */ +#endif +#ifndef Tcl_GetServiceMode +#define Tcl_GetServiceMode \ + (tclStubsPtr->tcl_GetServiceMode) /* 171 */ +#endif +#ifndef Tcl_GetSlave +#define Tcl_GetSlave \ + (tclStubsPtr->tcl_GetSlave) /* 172 */ +#endif +#ifndef Tcl_GetStdChannel +#define Tcl_GetStdChannel \ + (tclStubsPtr->tcl_GetStdChannel) /* 173 */ +#endif +#ifndef Tcl_GetStringResult +#define Tcl_GetStringResult \ + (tclStubsPtr->tcl_GetStringResult) /* 174 */ +#endif +#ifndef Tcl_GetVar +#define Tcl_GetVar \ + (tclStubsPtr->tcl_GetVar) /* 175 */ +#endif +#ifndef Tcl_GetVar2 +#define Tcl_GetVar2 \ + (tclStubsPtr->tcl_GetVar2) /* 176 */ +#endif +#ifndef Tcl_GlobalEval +#define Tcl_GlobalEval \ + (tclStubsPtr->tcl_GlobalEval) /* 177 */ +#endif +#ifndef Tcl_GlobalEvalObj +#define Tcl_GlobalEvalObj \ + (tclStubsPtr->tcl_GlobalEvalObj) /* 178 */ +#endif +#ifndef Tcl_HideCommand +#define Tcl_HideCommand \ + (tclStubsPtr->tcl_HideCommand) /* 179 */ +#endif +#ifndef Tcl_Init +#define Tcl_Init \ + (tclStubsPtr->tcl_Init) /* 180 */ +#endif +#ifndef Tcl_InitHashTable +#define Tcl_InitHashTable \ + (tclStubsPtr->tcl_InitHashTable) /* 181 */ +#endif +#ifndef Tcl_InputBlocked +#define Tcl_InputBlocked \ + (tclStubsPtr->tcl_InputBlocked) /* 182 */ +#endif +#ifndef Tcl_InputBuffered +#define Tcl_InputBuffered \ + (tclStubsPtr->tcl_InputBuffered) /* 183 */ +#endif +#ifndef Tcl_InterpDeleted +#define Tcl_InterpDeleted \ + (tclStubsPtr->tcl_InterpDeleted) /* 184 */ +#endif +#ifndef Tcl_IsSafe +#define Tcl_IsSafe \ + (tclStubsPtr->tcl_IsSafe) /* 185 */ +#endif +#ifndef Tcl_JoinPath +#define Tcl_JoinPath \ + (tclStubsPtr->tcl_JoinPath) /* 186 */ +#endif +#ifndef Tcl_LinkVar +#define Tcl_LinkVar \ + (tclStubsPtr->tcl_LinkVar) /* 187 */ +#endif +/* Slot 188 is reserved */ +#ifndef Tcl_MakeFileChannel +#define Tcl_MakeFileChannel \ + (tclStubsPtr->tcl_MakeFileChannel) /* 189 */ +#endif +#ifndef Tcl_MakeSafe +#define Tcl_MakeSafe \ + (tclStubsPtr->tcl_MakeSafe) /* 190 */ +#endif +#ifndef Tcl_MakeTcpClientChannel +#define Tcl_MakeTcpClientChannel \ + (tclStubsPtr->tcl_MakeTcpClientChannel) /* 191 */ +#endif +#ifndef Tcl_Merge +#define Tcl_Merge \ + (tclStubsPtr->tcl_Merge) /* 192 */ +#endif +#ifndef Tcl_NextHashEntry +#define Tcl_NextHashEntry \ + (tclStubsPtr->tcl_NextHashEntry) /* 193 */ +#endif +#ifndef Tcl_NotifyChannel +#define Tcl_NotifyChannel \ + (tclStubsPtr->tcl_NotifyChannel) /* 194 */ +#endif +#ifndef Tcl_ObjGetVar2 +#define Tcl_ObjGetVar2 \ + (tclStubsPtr->tcl_ObjGetVar2) /* 195 */ +#endif +#ifndef Tcl_ObjSetVar2 +#define Tcl_ObjSetVar2 \ + (tclStubsPtr->tcl_ObjSetVar2) /* 196 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_OpenCommandChannel +#define Tcl_OpenCommandChannel \ + (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_OpenCommandChannel +#define Tcl_OpenCommandChannel \ + (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_OpenFileChannel +#define Tcl_OpenFileChannel \ + (tclStubsPtr->tcl_OpenFileChannel) /* 198 */ +#endif +#ifndef Tcl_OpenTcpClient +#define Tcl_OpenTcpClient \ + (tclStubsPtr->tcl_OpenTcpClient) /* 199 */ +#endif +#ifndef Tcl_OpenTcpServer +#define Tcl_OpenTcpServer \ + (tclStubsPtr->tcl_OpenTcpServer) /* 200 */ +#endif +#ifndef Tcl_Preserve +#define Tcl_Preserve \ + (tclStubsPtr->tcl_Preserve) /* 201 */ +#endif +#ifndef Tcl_PrintDouble +#define Tcl_PrintDouble \ + (tclStubsPtr->tcl_PrintDouble) /* 202 */ +#endif +#ifndef Tcl_PutEnv +#define Tcl_PutEnv \ + (tclStubsPtr->tcl_PutEnv) /* 203 */ +#endif +#ifndef Tcl_PosixError +#define Tcl_PosixError \ + (tclStubsPtr->tcl_PosixError) /* 204 */ +#endif +#ifndef Tcl_QueueEvent +#define Tcl_QueueEvent \ + (tclStubsPtr->tcl_QueueEvent) /* 205 */ +#endif +#ifndef Tcl_Read +#define Tcl_Read \ + (tclStubsPtr->tcl_Read) /* 206 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_ReapDetachedProcs +#define Tcl_ReapDetachedProcs \ + (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_ReapDetachedProcs +#define Tcl_ReapDetachedProcs \ + (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_RecordAndEval +#define Tcl_RecordAndEval \ + (tclStubsPtr->tcl_RecordAndEval) /* 208 */ +#endif +#ifndef Tcl_RecordAndEvalObj +#define Tcl_RecordAndEvalObj \ + (tclStubsPtr->tcl_RecordAndEvalObj) /* 209 */ +#endif +#ifndef Tcl_RegisterChannel +#define Tcl_RegisterChannel \ + (tclStubsPtr->tcl_RegisterChannel) /* 210 */ +#endif +#ifndef Tcl_RegisterObjType +#define Tcl_RegisterObjType \ + (tclStubsPtr->tcl_RegisterObjType) /* 211 */ +#endif +#ifndef Tcl_RegExpCompile +#define Tcl_RegExpCompile \ + (tclStubsPtr->tcl_RegExpCompile) /* 212 */ +#endif +#ifndef Tcl_RegExpExec +#define Tcl_RegExpExec \ + (tclStubsPtr->tcl_RegExpExec) /* 213 */ +#endif +#ifndef Tcl_RegExpMatch +#define Tcl_RegExpMatch \ + (tclStubsPtr->tcl_RegExpMatch) /* 214 */ +#endif +#ifndef Tcl_RegExpRange +#define Tcl_RegExpRange \ + (tclStubsPtr->tcl_RegExpRange) /* 215 */ +#endif +#ifndef Tcl_Release +#define Tcl_Release \ + (tclStubsPtr->tcl_Release) /* 216 */ +#endif +#ifndef Tcl_ResetResult +#define Tcl_ResetResult \ + (tclStubsPtr->tcl_ResetResult) /* 217 */ +#endif +#ifndef Tcl_ScanElement +#define Tcl_ScanElement \ + (tclStubsPtr->tcl_ScanElement) /* 218 */ +#endif +#ifndef Tcl_ScanCountedElement +#define Tcl_ScanCountedElement \ + (tclStubsPtr->tcl_ScanCountedElement) /* 219 */ +#endif +#ifndef Tcl_SeekOld +#define Tcl_SeekOld \ + (tclStubsPtr->tcl_SeekOld) /* 220 */ +#endif +#ifndef Tcl_ServiceAll +#define Tcl_ServiceAll \ + (tclStubsPtr->tcl_ServiceAll) /* 221 */ +#endif +#ifndef Tcl_ServiceEvent +#define Tcl_ServiceEvent \ + (tclStubsPtr->tcl_ServiceEvent) /* 222 */ +#endif +#ifndef Tcl_SetAssocData +#define Tcl_SetAssocData \ + (tclStubsPtr->tcl_SetAssocData) /* 223 */ +#endif +#ifndef Tcl_SetChannelBufferSize +#define Tcl_SetChannelBufferSize \ + (tclStubsPtr->tcl_SetChannelBufferSize) /* 224 */ +#endif +#ifndef Tcl_SetChannelOption +#define Tcl_SetChannelOption \ + (tclStubsPtr->tcl_SetChannelOption) /* 225 */ +#endif +#ifndef Tcl_SetCommandInfo +#define Tcl_SetCommandInfo \ + (tclStubsPtr->tcl_SetCommandInfo) /* 226 */ +#endif +#ifndef Tcl_SetErrno +#define Tcl_SetErrno \ + (tclStubsPtr->tcl_SetErrno) /* 227 */ +#endif +#ifndef Tcl_SetErrorCode +#define Tcl_SetErrorCode \ + (tclStubsPtr->tcl_SetErrorCode) /* 228 */ +#endif +#ifndef Tcl_SetMaxBlockTime +#define Tcl_SetMaxBlockTime \ + (tclStubsPtr->tcl_SetMaxBlockTime) /* 229 */ +#endif +#ifndef Tcl_SetPanicProc +#define Tcl_SetPanicProc \ + (tclStubsPtr->tcl_SetPanicProc) /* 230 */ +#endif +#ifndef Tcl_SetRecursionLimit +#define Tcl_SetRecursionLimit \ + (tclStubsPtr->tcl_SetRecursionLimit) /* 231 */ +#endif +#ifndef Tcl_SetResult +#define Tcl_SetResult \ + (tclStubsPtr->tcl_SetResult) /* 232 */ +#endif +#ifndef Tcl_SetServiceMode +#define Tcl_SetServiceMode \ + (tclStubsPtr->tcl_SetServiceMode) /* 233 */ +#endif +#ifndef Tcl_SetObjErrorCode +#define Tcl_SetObjErrorCode \ + (tclStubsPtr->tcl_SetObjErrorCode) /* 234 */ +#endif +#ifndef Tcl_SetObjResult +#define Tcl_SetObjResult \ + (tclStubsPtr->tcl_SetObjResult) /* 235 */ +#endif +#ifndef Tcl_SetStdChannel +#define Tcl_SetStdChannel \ + (tclStubsPtr->tcl_SetStdChannel) /* 236 */ +#endif +#ifndef Tcl_SetVar +#define Tcl_SetVar \ + (tclStubsPtr->tcl_SetVar) /* 237 */ +#endif +#ifndef Tcl_SetVar2 +#define Tcl_SetVar2 \ + (tclStubsPtr->tcl_SetVar2) /* 238 */ +#endif +#ifndef Tcl_SignalId +#define Tcl_SignalId \ + (tclStubsPtr->tcl_SignalId) /* 239 */ +#endif +#ifndef Tcl_SignalMsg +#define Tcl_SignalMsg \ + (tclStubsPtr->tcl_SignalMsg) /* 240 */ +#endif +#ifndef Tcl_SourceRCFile +#define Tcl_SourceRCFile \ + (tclStubsPtr->tcl_SourceRCFile) /* 241 */ +#endif +#ifndef Tcl_SplitList +#define Tcl_SplitList \ + (tclStubsPtr->tcl_SplitList) /* 242 */ +#endif +#ifndef Tcl_SplitPath +#define Tcl_SplitPath \ + (tclStubsPtr->tcl_SplitPath) /* 243 */ +#endif +#ifndef Tcl_StaticPackage +#define Tcl_StaticPackage \ + (tclStubsPtr->tcl_StaticPackage) /* 244 */ +#endif +#ifndef Tcl_StringMatch +#define Tcl_StringMatch \ + (tclStubsPtr->tcl_StringMatch) /* 245 */ +#endif +#ifndef Tcl_TellOld +#define Tcl_TellOld \ + (tclStubsPtr->tcl_TellOld) /* 246 */ +#endif +#ifndef Tcl_TraceVar +#define Tcl_TraceVar \ + (tclStubsPtr->tcl_TraceVar) /* 247 */ +#endif +#ifndef Tcl_TraceVar2 +#define Tcl_TraceVar2 \ + (tclStubsPtr->tcl_TraceVar2) /* 248 */ +#endif +#ifndef Tcl_TranslateFileName +#define Tcl_TranslateFileName \ + (tclStubsPtr->tcl_TranslateFileName) /* 249 */ +#endif +#ifndef Tcl_Ungets +#define Tcl_Ungets \ + (tclStubsPtr->tcl_Ungets) /* 250 */ +#endif +#ifndef Tcl_UnlinkVar +#define Tcl_UnlinkVar \ + (tclStubsPtr->tcl_UnlinkVar) /* 251 */ +#endif +#ifndef Tcl_UnregisterChannel +#define Tcl_UnregisterChannel \ + (tclStubsPtr->tcl_UnregisterChannel) /* 252 */ +#endif +#ifndef Tcl_UnsetVar +#define Tcl_UnsetVar \ + (tclStubsPtr->tcl_UnsetVar) /* 253 */ +#endif +#ifndef Tcl_UnsetVar2 +#define Tcl_UnsetVar2 \ + (tclStubsPtr->tcl_UnsetVar2) /* 254 */ +#endif +#ifndef Tcl_UntraceVar +#define Tcl_UntraceVar \ + (tclStubsPtr->tcl_UntraceVar) /* 255 */ +#endif +#ifndef Tcl_UntraceVar2 +#define Tcl_UntraceVar2 \ + (tclStubsPtr->tcl_UntraceVar2) /* 256 */ +#endif +#ifndef Tcl_UpdateLinkedVar +#define Tcl_UpdateLinkedVar \ + (tclStubsPtr->tcl_UpdateLinkedVar) /* 257 */ +#endif +#ifndef Tcl_UpVar +#define Tcl_UpVar \ + (tclStubsPtr->tcl_UpVar) /* 258 */ +#endif +#ifndef Tcl_UpVar2 +#define Tcl_UpVar2 \ + (tclStubsPtr->tcl_UpVar2) /* 259 */ +#endif +#ifndef Tcl_VarEval +#define Tcl_VarEval \ + (tclStubsPtr->tcl_VarEval) /* 260 */ +#endif +#ifndef Tcl_VarTraceInfo +#define Tcl_VarTraceInfo \ + (tclStubsPtr->tcl_VarTraceInfo) /* 261 */ +#endif +#ifndef Tcl_VarTraceInfo2 +#define Tcl_VarTraceInfo2 \ + (tclStubsPtr->tcl_VarTraceInfo2) /* 262 */ +#endif +#ifndef Tcl_Write +#define Tcl_Write \ + (tclStubsPtr->tcl_Write) /* 263 */ +#endif +#ifndef Tcl_WrongNumArgs +#define Tcl_WrongNumArgs \ + (tclStubsPtr->tcl_WrongNumArgs) /* 264 */ +#endif +#ifndef Tcl_DumpActiveMemory +#define Tcl_DumpActiveMemory \ + (tclStubsPtr->tcl_DumpActiveMemory) /* 265 */ +#endif +#ifndef Tcl_ValidateAllMemory +#define Tcl_ValidateAllMemory \ + (tclStubsPtr->tcl_ValidateAllMemory) /* 266 */ +#endif +#ifndef Tcl_AppendResultVA +#define Tcl_AppendResultVA \ + (tclStubsPtr->tcl_AppendResultVA) /* 267 */ +#endif +#ifndef Tcl_AppendStringsToObjVA +#define Tcl_AppendStringsToObjVA \ + (tclStubsPtr->tcl_AppendStringsToObjVA) /* 268 */ +#endif +#ifndef Tcl_HashStats +#define Tcl_HashStats \ + (tclStubsPtr->tcl_HashStats) /* 269 */ +#endif +#ifndef Tcl_ParseVar +#define Tcl_ParseVar \ + (tclStubsPtr->tcl_ParseVar) /* 270 */ +#endif +#ifndef Tcl_PkgPresent +#define Tcl_PkgPresent \ + (tclStubsPtr->tcl_PkgPresent) /* 271 */ +#endif +#ifndef Tcl_PkgPresentEx +#define Tcl_PkgPresentEx \ + (tclStubsPtr->tcl_PkgPresentEx) /* 272 */ +#endif +#ifndef Tcl_PkgProvide +#define Tcl_PkgProvide \ + (tclStubsPtr->tcl_PkgProvide) /* 273 */ +#endif +#ifndef Tcl_PkgRequire +#define Tcl_PkgRequire \ + (tclStubsPtr->tcl_PkgRequire) /* 274 */ +#endif +#ifndef Tcl_SetErrorCodeVA +#define Tcl_SetErrorCodeVA \ + (tclStubsPtr->tcl_SetErrorCodeVA) /* 275 */ +#endif +#ifndef Tcl_VarEvalVA +#define Tcl_VarEvalVA \ + (tclStubsPtr->tcl_VarEvalVA) /* 276 */ +#endif +#ifndef Tcl_WaitPid +#define Tcl_WaitPid \ + (tclStubsPtr->tcl_WaitPid) /* 277 */ +#endif +#ifndef Tcl_PanicVA +#define Tcl_PanicVA \ + (tclStubsPtr->tcl_PanicVA) /* 278 */ +#endif +#ifndef Tcl_GetVersion +#define Tcl_GetVersion \ + (tclStubsPtr->tcl_GetVersion) /* 279 */ +#endif +#ifndef Tcl_InitMemory +#define Tcl_InitMemory \ + (tclStubsPtr->tcl_InitMemory) /* 280 */ +#endif +#ifndef Tcl_StackChannel +#define Tcl_StackChannel \ + (tclStubsPtr->tcl_StackChannel) /* 281 */ +#endif +#ifndef Tcl_UnstackChannel +#define Tcl_UnstackChannel \ + (tclStubsPtr->tcl_UnstackChannel) /* 282 */ +#endif +#ifndef Tcl_GetStackedChannel +#define Tcl_GetStackedChannel \ + (tclStubsPtr->tcl_GetStackedChannel) /* 283 */ +#endif +#ifndef Tcl_SetMainLoop +#define Tcl_SetMainLoop \ + (tclStubsPtr->tcl_SetMainLoop) /* 284 */ +#endif +/* Slot 285 is reserved */ +#ifndef Tcl_AppendObjToObj +#define Tcl_AppendObjToObj \ + (tclStubsPtr->tcl_AppendObjToObj) /* 286 */ +#endif +#ifndef Tcl_CreateEncoding +#define Tcl_CreateEncoding \ + (tclStubsPtr->tcl_CreateEncoding) /* 287 */ +#endif +#ifndef Tcl_CreateThreadExitHandler +#define Tcl_CreateThreadExitHandler \ + (tclStubsPtr->tcl_CreateThreadExitHandler) /* 288 */ +#endif +#ifndef Tcl_DeleteThreadExitHandler +#define Tcl_DeleteThreadExitHandler \ + (tclStubsPtr->tcl_DeleteThreadExitHandler) /* 289 */ +#endif +#ifndef Tcl_DiscardResult +#define Tcl_DiscardResult \ + (tclStubsPtr->tcl_DiscardResult) /* 290 */ +#endif +#ifndef Tcl_EvalEx +#define Tcl_EvalEx \ + (tclStubsPtr->tcl_EvalEx) /* 291 */ +#endif +#ifndef Tcl_EvalObjv +#define Tcl_EvalObjv \ + (tclStubsPtr->tcl_EvalObjv) /* 292 */ +#endif +#ifndef Tcl_EvalObjEx +#define Tcl_EvalObjEx \ + (tclStubsPtr->tcl_EvalObjEx) /* 293 */ +#endif +#ifndef Tcl_ExitThread +#define Tcl_ExitThread \ + (tclStubsPtr->tcl_ExitThread) /* 294 */ +#endif +#ifndef Tcl_ExternalToUtf +#define Tcl_ExternalToUtf \ + (tclStubsPtr->tcl_ExternalToUtf) /* 295 */ +#endif +#ifndef Tcl_ExternalToUtfDString +#define Tcl_ExternalToUtfDString \ + (tclStubsPtr->tcl_ExternalToUtfDString) /* 296 */ +#endif +#ifndef Tcl_FinalizeThread +#define Tcl_FinalizeThread \ + (tclStubsPtr->tcl_FinalizeThread) /* 297 */ +#endif +#ifndef Tcl_FinalizeNotifier +#define Tcl_FinalizeNotifier \ + (tclStubsPtr->tcl_FinalizeNotifier) /* 298 */ +#endif +#ifndef Tcl_FreeEncoding +#define Tcl_FreeEncoding \ + (tclStubsPtr->tcl_FreeEncoding) /* 299 */ +#endif +#ifndef Tcl_GetCurrentThread +#define Tcl_GetCurrentThread \ + (tclStubsPtr->tcl_GetCurrentThread) /* 300 */ +#endif +#ifndef Tcl_GetEncoding +#define Tcl_GetEncoding \ + (tclStubsPtr->tcl_GetEncoding) /* 301 */ +#endif +#ifndef Tcl_GetEncodingName +#define Tcl_GetEncodingName \ + (tclStubsPtr->tcl_GetEncodingName) /* 302 */ +#endif +#ifndef Tcl_GetEncodingNames +#define Tcl_GetEncodingNames \ + (tclStubsPtr->tcl_GetEncodingNames) /* 303 */ +#endif +#ifndef Tcl_GetIndexFromObjStruct +#define Tcl_GetIndexFromObjStruct \ + (tclStubsPtr->tcl_GetIndexFromObjStruct) /* 304 */ +#endif +#ifndef Tcl_GetThreadData +#define Tcl_GetThreadData \ + (tclStubsPtr->tcl_GetThreadData) /* 305 */ +#endif +#ifndef Tcl_GetVar2Ex +#define Tcl_GetVar2Ex \ + (tclStubsPtr->tcl_GetVar2Ex) /* 306 */ +#endif +#ifndef Tcl_InitNotifier +#define Tcl_InitNotifier \ + (tclStubsPtr->tcl_InitNotifier) /* 307 */ +#endif +#ifndef Tcl_MutexLock +#define Tcl_MutexLock \ + (tclStubsPtr->tcl_MutexLock) /* 308 */ +#endif +#ifndef Tcl_MutexUnlock +#define Tcl_MutexUnlock \ + (tclStubsPtr->tcl_MutexUnlock) /* 309 */ +#endif +#ifndef Tcl_ConditionNotify +#define Tcl_ConditionNotify \ + (tclStubsPtr->tcl_ConditionNotify) /* 310 */ +#endif +#ifndef Tcl_ConditionWait +#define Tcl_ConditionWait \ + (tclStubsPtr->tcl_ConditionWait) /* 311 */ +#endif +#ifndef Tcl_NumUtfChars +#define Tcl_NumUtfChars \ + (tclStubsPtr->tcl_NumUtfChars) /* 312 */ +#endif +#ifndef Tcl_ReadChars +#define Tcl_ReadChars \ + (tclStubsPtr->tcl_ReadChars) /* 313 */ +#endif +#ifndef Tcl_RestoreResult +#define Tcl_RestoreResult \ + (tclStubsPtr->tcl_RestoreResult) /* 314 */ +#endif +#ifndef Tcl_SaveResult +#define Tcl_SaveResult \ + (tclStubsPtr->tcl_SaveResult) /* 315 */ +#endif +#ifndef Tcl_SetSystemEncoding +#define Tcl_SetSystemEncoding \ + (tclStubsPtr->tcl_SetSystemEncoding) /* 316 */ +#endif +#ifndef Tcl_SetVar2Ex +#define Tcl_SetVar2Ex \ + (tclStubsPtr->tcl_SetVar2Ex) /* 317 */ +#endif +#ifndef Tcl_ThreadAlert +#define Tcl_ThreadAlert \ + (tclStubsPtr->tcl_ThreadAlert) /* 318 */ +#endif +#ifndef Tcl_ThreadQueueEvent +#define Tcl_ThreadQueueEvent \ + (tclStubsPtr->tcl_ThreadQueueEvent) /* 319 */ +#endif +#ifndef Tcl_UniCharAtIndex +#define Tcl_UniCharAtIndex \ + (tclStubsPtr->tcl_UniCharAtIndex) /* 320 */ +#endif +#ifndef Tcl_UniCharToLower +#define Tcl_UniCharToLower \ + (tclStubsPtr->tcl_UniCharToLower) /* 321 */ +#endif +#ifndef Tcl_UniCharToTitle +#define Tcl_UniCharToTitle \ + (tclStubsPtr->tcl_UniCharToTitle) /* 322 */ +#endif +#ifndef Tcl_UniCharToUpper +#define Tcl_UniCharToUpper \ + (tclStubsPtr->tcl_UniCharToUpper) /* 323 */ +#endif +#ifndef Tcl_UniCharToUtf +#define Tcl_UniCharToUtf \ + (tclStubsPtr->tcl_UniCharToUtf) /* 324 */ +#endif +#ifndef Tcl_UtfAtIndex +#define Tcl_UtfAtIndex \ + (tclStubsPtr->tcl_UtfAtIndex) /* 325 */ +#endif +#ifndef Tcl_UtfCharComplete +#define Tcl_UtfCharComplete \ + (tclStubsPtr->tcl_UtfCharComplete) /* 326 */ +#endif +#ifndef Tcl_UtfBackslash +#define Tcl_UtfBackslash \ + (tclStubsPtr->tcl_UtfBackslash) /* 327 */ +#endif +#ifndef Tcl_UtfFindFirst +#define Tcl_UtfFindFirst \ + (tclStubsPtr->tcl_UtfFindFirst) /* 328 */ +#endif +#ifndef Tcl_UtfFindLast +#define Tcl_UtfFindLast \ + (tclStubsPtr->tcl_UtfFindLast) /* 329 */ +#endif +#ifndef Tcl_UtfNext +#define Tcl_UtfNext \ + (tclStubsPtr->tcl_UtfNext) /* 330 */ +#endif +#ifndef Tcl_UtfPrev +#define Tcl_UtfPrev \ + (tclStubsPtr->tcl_UtfPrev) /* 331 */ +#endif +#ifndef Tcl_UtfToExternal +#define Tcl_UtfToExternal \ + (tclStubsPtr->tcl_UtfToExternal) /* 332 */ +#endif +#ifndef Tcl_UtfToExternalDString +#define Tcl_UtfToExternalDString \ + (tclStubsPtr->tcl_UtfToExternalDString) /* 333 */ +#endif +#ifndef Tcl_UtfToLower +#define Tcl_UtfToLower \ + (tclStubsPtr->tcl_UtfToLower) /* 334 */ +#endif +#ifndef Tcl_UtfToTitle +#define Tcl_UtfToTitle \ + (tclStubsPtr->tcl_UtfToTitle) /* 335 */ +#endif +#ifndef Tcl_UtfToUniChar +#define Tcl_UtfToUniChar \ + (tclStubsPtr->tcl_UtfToUniChar) /* 336 */ +#endif +#ifndef Tcl_UtfToUpper +#define Tcl_UtfToUpper \ + (tclStubsPtr->tcl_UtfToUpper) /* 337 */ +#endif +#ifndef Tcl_WriteChars +#define Tcl_WriteChars \ + (tclStubsPtr->tcl_WriteChars) /* 338 */ +#endif +#ifndef Tcl_WriteObj +#define Tcl_WriteObj \ + (tclStubsPtr->tcl_WriteObj) /* 339 */ +#endif +#ifndef Tcl_GetString +#define Tcl_GetString \ + (tclStubsPtr->tcl_GetString) /* 340 */ +#endif +#ifndef Tcl_GetDefaultEncodingDir +#define Tcl_GetDefaultEncodingDir \ + (tclStubsPtr->tcl_GetDefaultEncodingDir) /* 341 */ +#endif +#ifndef Tcl_SetDefaultEncodingDir +#define Tcl_SetDefaultEncodingDir \ + (tclStubsPtr->tcl_SetDefaultEncodingDir) /* 342 */ +#endif +#ifndef Tcl_AlertNotifier +#define Tcl_AlertNotifier \ + (tclStubsPtr->tcl_AlertNotifier) /* 343 */ +#endif +#ifndef Tcl_ServiceModeHook +#define Tcl_ServiceModeHook \ + (tclStubsPtr->tcl_ServiceModeHook) /* 344 */ +#endif +#ifndef Tcl_UniCharIsAlnum +#define Tcl_UniCharIsAlnum \ + (tclStubsPtr->tcl_UniCharIsAlnum) /* 345 */ +#endif +#ifndef Tcl_UniCharIsAlpha +#define Tcl_UniCharIsAlpha \ + (tclStubsPtr->tcl_UniCharIsAlpha) /* 346 */ +#endif +#ifndef Tcl_UniCharIsDigit +#define Tcl_UniCharIsDigit \ + (tclStubsPtr->tcl_UniCharIsDigit) /* 347 */ +#endif +#ifndef Tcl_UniCharIsLower +#define Tcl_UniCharIsLower \ + (tclStubsPtr->tcl_UniCharIsLower) /* 348 */ +#endif +#ifndef Tcl_UniCharIsSpace +#define Tcl_UniCharIsSpace \ + (tclStubsPtr->tcl_UniCharIsSpace) /* 349 */ +#endif +#ifndef Tcl_UniCharIsUpper +#define Tcl_UniCharIsUpper \ + (tclStubsPtr->tcl_UniCharIsUpper) /* 350 */ +#endif +#ifndef Tcl_UniCharIsWordChar +#define Tcl_UniCharIsWordChar \ + (tclStubsPtr->tcl_UniCharIsWordChar) /* 351 */ +#endif +#ifndef Tcl_UniCharLen +#define Tcl_UniCharLen \ + (tclStubsPtr->tcl_UniCharLen) /* 352 */ +#endif +#ifndef Tcl_UniCharNcmp +#define Tcl_UniCharNcmp \ + (tclStubsPtr->tcl_UniCharNcmp) /* 353 */ +#endif +#ifndef Tcl_UniCharToUtfDString +#define Tcl_UniCharToUtfDString \ + (tclStubsPtr->tcl_UniCharToUtfDString) /* 354 */ +#endif +#ifndef Tcl_UtfToUniCharDString +#define Tcl_UtfToUniCharDString \ + (tclStubsPtr->tcl_UtfToUniCharDString) /* 355 */ +#endif +#ifndef Tcl_GetRegExpFromObj +#define Tcl_GetRegExpFromObj \ + (tclStubsPtr->tcl_GetRegExpFromObj) /* 356 */ +#endif +#ifndef Tcl_EvalTokens +#define Tcl_EvalTokens \ + (tclStubsPtr->tcl_EvalTokens) /* 357 */ +#endif +#ifndef Tcl_FreeParse +#define Tcl_FreeParse \ + (tclStubsPtr->tcl_FreeParse) /* 358 */ +#endif +#ifndef Tcl_LogCommandInfo +#define Tcl_LogCommandInfo \ + (tclStubsPtr->tcl_LogCommandInfo) /* 359 */ +#endif +#ifndef Tcl_ParseBraces +#define Tcl_ParseBraces \ + (tclStubsPtr->tcl_ParseBraces) /* 360 */ +#endif +#ifndef Tcl_ParseCommand +#define Tcl_ParseCommand \ + (tclStubsPtr->tcl_ParseCommand) /* 361 */ +#endif +#ifndef Tcl_ParseExpr +#define Tcl_ParseExpr \ + (tclStubsPtr->tcl_ParseExpr) /* 362 */ +#endif +#ifndef Tcl_ParseQuotedString +#define Tcl_ParseQuotedString \ + (tclStubsPtr->tcl_ParseQuotedString) /* 363 */ +#endif +#ifndef Tcl_ParseVarName +#define Tcl_ParseVarName \ + (tclStubsPtr->tcl_ParseVarName) /* 364 */ +#endif +#ifndef Tcl_GetCwd +#define Tcl_GetCwd \ + (tclStubsPtr->tcl_GetCwd) /* 365 */ +#endif +#ifndef Tcl_Chdir +#define Tcl_Chdir \ + (tclStubsPtr->tcl_Chdir) /* 366 */ +#endif +#ifndef Tcl_Access +#define Tcl_Access \ + (tclStubsPtr->tcl_Access) /* 367 */ +#endif +#ifndef Tcl_Stat +#define Tcl_Stat \ + (tclStubsPtr->tcl_Stat) /* 368 */ +#endif +#ifndef Tcl_UtfNcmp +#define Tcl_UtfNcmp \ + (tclStubsPtr->tcl_UtfNcmp) /* 369 */ +#endif +#ifndef Tcl_UtfNcasecmp +#define Tcl_UtfNcasecmp \ + (tclStubsPtr->tcl_UtfNcasecmp) /* 370 */ +#endif +#ifndef Tcl_StringCaseMatch +#define Tcl_StringCaseMatch \ + (tclStubsPtr->tcl_StringCaseMatch) /* 371 */ +#endif +#ifndef Tcl_UniCharIsControl +#define Tcl_UniCharIsControl \ + (tclStubsPtr->tcl_UniCharIsControl) /* 372 */ +#endif +#ifndef Tcl_UniCharIsGraph +#define Tcl_UniCharIsGraph \ + (tclStubsPtr->tcl_UniCharIsGraph) /* 373 */ +#endif +#ifndef Tcl_UniCharIsPrint +#define Tcl_UniCharIsPrint \ + (tclStubsPtr->tcl_UniCharIsPrint) /* 374 */ +#endif +#ifndef Tcl_UniCharIsPunct +#define Tcl_UniCharIsPunct \ + (tclStubsPtr->tcl_UniCharIsPunct) /* 375 */ +#endif +#ifndef Tcl_RegExpExecObj +#define Tcl_RegExpExecObj \ + (tclStubsPtr->tcl_RegExpExecObj) /* 376 */ +#endif +#ifndef Tcl_RegExpGetInfo +#define Tcl_RegExpGetInfo \ + (tclStubsPtr->tcl_RegExpGetInfo) /* 377 */ +#endif +#ifndef Tcl_NewUnicodeObj +#define Tcl_NewUnicodeObj \ + (tclStubsPtr->tcl_NewUnicodeObj) /* 378 */ +#endif +#ifndef Tcl_SetUnicodeObj +#define Tcl_SetUnicodeObj \ + (tclStubsPtr->tcl_SetUnicodeObj) /* 379 */ +#endif +#ifndef Tcl_GetCharLength +#define Tcl_GetCharLength \ + (tclStubsPtr->tcl_GetCharLength) /* 380 */ +#endif +#ifndef Tcl_GetUniChar +#define Tcl_GetUniChar \ + (tclStubsPtr->tcl_GetUniChar) /* 381 */ +#endif +#ifndef Tcl_GetUnicode +#define Tcl_GetUnicode \ + (tclStubsPtr->tcl_GetUnicode) /* 382 */ +#endif +#ifndef Tcl_GetRange +#define Tcl_GetRange \ + (tclStubsPtr->tcl_GetRange) /* 383 */ +#endif +#ifndef Tcl_AppendUnicodeToObj +#define Tcl_AppendUnicodeToObj \ + (tclStubsPtr->tcl_AppendUnicodeToObj) /* 384 */ +#endif +#ifndef Tcl_RegExpMatchObj +#define Tcl_RegExpMatchObj \ + (tclStubsPtr->tcl_RegExpMatchObj) /* 385 */ +#endif +#ifndef Tcl_SetNotifier +#define Tcl_SetNotifier \ + (tclStubsPtr->tcl_SetNotifier) /* 386 */ +#endif +#ifndef Tcl_GetAllocMutex +#define Tcl_GetAllocMutex \ + (tclStubsPtr->tcl_GetAllocMutex) /* 387 */ +#endif +#ifndef Tcl_GetChannelNames +#define Tcl_GetChannelNames \ + (tclStubsPtr->tcl_GetChannelNames) /* 388 */ +#endif +#ifndef Tcl_GetChannelNamesEx +#define Tcl_GetChannelNamesEx \ + (tclStubsPtr->tcl_GetChannelNamesEx) /* 389 */ +#endif +#ifndef Tcl_ProcObjCmd +#define Tcl_ProcObjCmd \ + (tclStubsPtr->tcl_ProcObjCmd) /* 390 */ +#endif +#ifndef Tcl_ConditionFinalize +#define Tcl_ConditionFinalize \ + (tclStubsPtr->tcl_ConditionFinalize) /* 391 */ +#endif +#ifndef Tcl_MutexFinalize +#define Tcl_MutexFinalize \ + (tclStubsPtr->tcl_MutexFinalize) /* 392 */ +#endif +#ifndef Tcl_CreateThread +#define Tcl_CreateThread \ + (tclStubsPtr->tcl_CreateThread) /* 393 */ +#endif +#ifndef Tcl_ReadRaw +#define Tcl_ReadRaw \ + (tclStubsPtr->tcl_ReadRaw) /* 394 */ +#endif +#ifndef Tcl_WriteRaw +#define Tcl_WriteRaw \ + (tclStubsPtr->tcl_WriteRaw) /* 395 */ +#endif +#ifndef Tcl_GetTopChannel +#define Tcl_GetTopChannel \ + (tclStubsPtr->tcl_GetTopChannel) /* 396 */ +#endif +#ifndef Tcl_ChannelBuffered +#define Tcl_ChannelBuffered \ + (tclStubsPtr->tcl_ChannelBuffered) /* 397 */ +#endif +#ifndef Tcl_ChannelName +#define Tcl_ChannelName \ + (tclStubsPtr->tcl_ChannelName) /* 398 */ +#endif +#ifndef Tcl_ChannelVersion +#define Tcl_ChannelVersion \ + (tclStubsPtr->tcl_ChannelVersion) /* 399 */ +#endif +#ifndef Tcl_ChannelBlockModeProc +#define Tcl_ChannelBlockModeProc \ + (tclStubsPtr->tcl_ChannelBlockModeProc) /* 400 */ +#endif +#ifndef Tcl_ChannelCloseProc +#define Tcl_ChannelCloseProc \ + (tclStubsPtr->tcl_ChannelCloseProc) /* 401 */ +#endif +#ifndef Tcl_ChannelClose2Proc +#define Tcl_ChannelClose2Proc \ + (tclStubsPtr->tcl_ChannelClose2Proc) /* 402 */ +#endif +#ifndef Tcl_ChannelInputProc +#define Tcl_ChannelInputProc \ + (tclStubsPtr->tcl_ChannelInputProc) /* 403 */ +#endif +#ifndef Tcl_ChannelOutputProc +#define Tcl_ChannelOutputProc \ + (tclStubsPtr->tcl_ChannelOutputProc) /* 404 */ +#endif +#ifndef Tcl_ChannelSeekProc +#define Tcl_ChannelSeekProc \ + (tclStubsPtr->tcl_ChannelSeekProc) /* 405 */ +#endif +#ifndef Tcl_ChannelSetOptionProc +#define Tcl_ChannelSetOptionProc \ + (tclStubsPtr->tcl_ChannelSetOptionProc) /* 406 */ +#endif +#ifndef Tcl_ChannelGetOptionProc +#define Tcl_ChannelGetOptionProc \ + (tclStubsPtr->tcl_ChannelGetOptionProc) /* 407 */ +#endif +#ifndef Tcl_ChannelWatchProc +#define Tcl_ChannelWatchProc \ + (tclStubsPtr->tcl_ChannelWatchProc) /* 408 */ +#endif +#ifndef Tcl_ChannelGetHandleProc +#define Tcl_ChannelGetHandleProc \ + (tclStubsPtr->tcl_ChannelGetHandleProc) /* 409 */ +#endif +#ifndef Tcl_ChannelFlushProc +#define Tcl_ChannelFlushProc \ + (tclStubsPtr->tcl_ChannelFlushProc) /* 410 */ +#endif +#ifndef Tcl_ChannelHandlerProc +#define Tcl_ChannelHandlerProc \ + (tclStubsPtr->tcl_ChannelHandlerProc) /* 411 */ +#endif +#ifndef Tcl_JoinThread +#define Tcl_JoinThread \ + (tclStubsPtr->tcl_JoinThread) /* 412 */ +#endif +#ifndef Tcl_IsChannelShared +#define Tcl_IsChannelShared \ + (tclStubsPtr->tcl_IsChannelShared) /* 413 */ +#endif +#ifndef Tcl_IsChannelRegistered +#define Tcl_IsChannelRegistered \ + (tclStubsPtr->tcl_IsChannelRegistered) /* 414 */ +#endif +#ifndef Tcl_CutChannel +#define Tcl_CutChannel \ + (tclStubsPtr->tcl_CutChannel) /* 415 */ +#endif +#ifndef Tcl_SpliceChannel +#define Tcl_SpliceChannel \ + (tclStubsPtr->tcl_SpliceChannel) /* 416 */ +#endif +#ifndef Tcl_ClearChannelHandlers +#define Tcl_ClearChannelHandlers \ + (tclStubsPtr->tcl_ClearChannelHandlers) /* 417 */ +#endif +#ifndef Tcl_IsChannelExisting +#define Tcl_IsChannelExisting \ + (tclStubsPtr->tcl_IsChannelExisting) /* 418 */ +#endif +#ifndef Tcl_UniCharNcasecmp +#define Tcl_UniCharNcasecmp \ + (tclStubsPtr->tcl_UniCharNcasecmp) /* 419 */ +#endif +#ifndef Tcl_UniCharCaseMatch +#define Tcl_UniCharCaseMatch \ + (tclStubsPtr->tcl_UniCharCaseMatch) /* 420 */ +#endif +#ifndef Tcl_FindHashEntry +#define Tcl_FindHashEntry \ + (tclStubsPtr->tcl_FindHashEntry) /* 421 */ +#endif +#ifndef Tcl_CreateHashEntry +#define Tcl_CreateHashEntry \ + (tclStubsPtr->tcl_CreateHashEntry) /* 422 */ +#endif +#ifndef Tcl_InitCustomHashTable +#define Tcl_InitCustomHashTable \ + (tclStubsPtr->tcl_InitCustomHashTable) /* 423 */ +#endif +#ifndef Tcl_InitObjHashTable +#define Tcl_InitObjHashTable \ + (tclStubsPtr->tcl_InitObjHashTable) /* 424 */ +#endif +#ifndef Tcl_CommandTraceInfo +#define Tcl_CommandTraceInfo \ + (tclStubsPtr->tcl_CommandTraceInfo) /* 425 */ +#endif +#ifndef Tcl_TraceCommand +#define Tcl_TraceCommand \ + (tclStubsPtr->tcl_TraceCommand) /* 426 */ +#endif +#ifndef Tcl_UntraceCommand +#define Tcl_UntraceCommand \ + (tclStubsPtr->tcl_UntraceCommand) /* 427 */ +#endif +#ifndef Tcl_AttemptAlloc +#define Tcl_AttemptAlloc \ + (tclStubsPtr->tcl_AttemptAlloc) /* 428 */ +#endif +#ifndef Tcl_AttemptDbCkalloc +#define Tcl_AttemptDbCkalloc \ + (tclStubsPtr->tcl_AttemptDbCkalloc) /* 429 */ +#endif +#ifndef Tcl_AttemptRealloc +#define Tcl_AttemptRealloc \ + (tclStubsPtr->tcl_AttemptRealloc) /* 430 */ +#endif +#ifndef Tcl_AttemptDbCkrealloc +#define Tcl_AttemptDbCkrealloc \ + (tclStubsPtr->tcl_AttemptDbCkrealloc) /* 431 */ +#endif +#ifndef Tcl_AttemptSetObjLength +#define Tcl_AttemptSetObjLength \ + (tclStubsPtr->tcl_AttemptSetObjLength) /* 432 */ +#endif +#ifndef Tcl_GetChannelThread +#define Tcl_GetChannelThread \ + (tclStubsPtr->tcl_GetChannelThread) /* 433 */ +#endif +#ifndef Tcl_GetUnicodeFromObj +#define Tcl_GetUnicodeFromObj \ + (tclStubsPtr->tcl_GetUnicodeFromObj) /* 434 */ +#endif +#ifndef Tcl_GetMathFuncInfo +#define Tcl_GetMathFuncInfo \ + (tclStubsPtr->tcl_GetMathFuncInfo) /* 435 */ +#endif +#ifndef Tcl_ListMathFuncs +#define Tcl_ListMathFuncs \ + (tclStubsPtr->tcl_ListMathFuncs) /* 436 */ +#endif +#ifndef Tcl_SubstObj +#define Tcl_SubstObj \ + (tclStubsPtr->tcl_SubstObj) /* 437 */ +#endif +#ifndef Tcl_DetachChannel +#define Tcl_DetachChannel \ + (tclStubsPtr->tcl_DetachChannel) /* 438 */ +#endif +#ifndef Tcl_IsStandardChannel +#define Tcl_IsStandardChannel \ + (tclStubsPtr->tcl_IsStandardChannel) /* 439 */ +#endif +#ifndef Tcl_FSCopyFile +#define Tcl_FSCopyFile \ + (tclStubsPtr->tcl_FSCopyFile) /* 440 */ +#endif +#ifndef Tcl_FSCopyDirectory +#define Tcl_FSCopyDirectory \ + (tclStubsPtr->tcl_FSCopyDirectory) /* 441 */ +#endif +#ifndef Tcl_FSCreateDirectory +#define Tcl_FSCreateDirectory \ + (tclStubsPtr->tcl_FSCreateDirectory) /* 442 */ +#endif +#ifndef Tcl_FSDeleteFile +#define Tcl_FSDeleteFile \ + (tclStubsPtr->tcl_FSDeleteFile) /* 443 */ +#endif +#ifndef Tcl_FSLoadFile +#define Tcl_FSLoadFile \ + (tclStubsPtr->tcl_FSLoadFile) /* 444 */ +#endif +#ifndef Tcl_FSMatchInDirectory +#define Tcl_FSMatchInDirectory \ + (tclStubsPtr->tcl_FSMatchInDirectory) /* 445 */ +#endif +#ifndef Tcl_FSLink +#define Tcl_FSLink \ + (tclStubsPtr->tcl_FSLink) /* 446 */ +#endif +#ifndef Tcl_FSRemoveDirectory +#define Tcl_FSRemoveDirectory \ + (tclStubsPtr->tcl_FSRemoveDirectory) /* 447 */ +#endif +#ifndef Tcl_FSRenameFile +#define Tcl_FSRenameFile \ + (tclStubsPtr->tcl_FSRenameFile) /* 448 */ +#endif +#ifndef Tcl_FSLstat +#define Tcl_FSLstat \ + (tclStubsPtr->tcl_FSLstat) /* 449 */ +#endif +#ifndef Tcl_FSUtime +#define Tcl_FSUtime \ + (tclStubsPtr->tcl_FSUtime) /* 450 */ +#endif +#ifndef Tcl_FSFileAttrsGet +#define Tcl_FSFileAttrsGet \ + (tclStubsPtr->tcl_FSFileAttrsGet) /* 451 */ +#endif +#ifndef Tcl_FSFileAttrsSet +#define Tcl_FSFileAttrsSet \ + (tclStubsPtr->tcl_FSFileAttrsSet) /* 452 */ +#endif +#ifndef Tcl_FSFileAttrStrings +#define Tcl_FSFileAttrStrings \ + (tclStubsPtr->tcl_FSFileAttrStrings) /* 453 */ +#endif +#ifndef Tcl_FSStat +#define Tcl_FSStat \ + (tclStubsPtr->tcl_FSStat) /* 454 */ +#endif +#ifndef Tcl_FSAccess +#define Tcl_FSAccess \ + (tclStubsPtr->tcl_FSAccess) /* 455 */ +#endif +#ifndef Tcl_FSOpenFileChannel +#define Tcl_FSOpenFileChannel \ + (tclStubsPtr->tcl_FSOpenFileChannel) /* 456 */ +#endif +#ifndef Tcl_FSGetCwd +#define Tcl_FSGetCwd \ + (tclStubsPtr->tcl_FSGetCwd) /* 457 */ +#endif +#ifndef Tcl_FSChdir +#define Tcl_FSChdir \ + (tclStubsPtr->tcl_FSChdir) /* 458 */ +#endif +#ifndef Tcl_FSConvertToPathType +#define Tcl_FSConvertToPathType \ + (tclStubsPtr->tcl_FSConvertToPathType) /* 459 */ +#endif +#ifndef Tcl_FSJoinPath +#define Tcl_FSJoinPath \ + (tclStubsPtr->tcl_FSJoinPath) /* 460 */ +#endif +#ifndef Tcl_FSSplitPath +#define Tcl_FSSplitPath \ + (tclStubsPtr->tcl_FSSplitPath) /* 461 */ +#endif +#ifndef Tcl_FSEqualPaths +#define Tcl_FSEqualPaths \ + (tclStubsPtr->tcl_FSEqualPaths) /* 462 */ +#endif +#ifndef Tcl_FSGetNormalizedPath +#define Tcl_FSGetNormalizedPath \ + (tclStubsPtr->tcl_FSGetNormalizedPath) /* 463 */ +#endif +#ifndef Tcl_FSJoinToPath +#define Tcl_FSJoinToPath \ + (tclStubsPtr->tcl_FSJoinToPath) /* 464 */ +#endif +#ifndef Tcl_FSGetInternalRep +#define Tcl_FSGetInternalRep \ + (tclStubsPtr->tcl_FSGetInternalRep) /* 465 */ +#endif +#ifndef Tcl_FSGetTranslatedPath +#define Tcl_FSGetTranslatedPath \ + (tclStubsPtr->tcl_FSGetTranslatedPath) /* 466 */ +#endif +#ifndef Tcl_FSEvalFile +#define Tcl_FSEvalFile \ + (tclStubsPtr->tcl_FSEvalFile) /* 467 */ +#endif +#ifndef Tcl_FSNewNativePath +#define Tcl_FSNewNativePath \ + (tclStubsPtr->tcl_FSNewNativePath) /* 468 */ +#endif +#ifndef Tcl_FSGetNativePath +#define Tcl_FSGetNativePath \ + (tclStubsPtr->tcl_FSGetNativePath) /* 469 */ +#endif +#ifndef Tcl_FSFileSystemInfo +#define Tcl_FSFileSystemInfo \ + (tclStubsPtr->tcl_FSFileSystemInfo) /* 470 */ +#endif +#ifndef Tcl_FSPathSeparator +#define Tcl_FSPathSeparator \ + (tclStubsPtr->tcl_FSPathSeparator) /* 471 */ +#endif +#ifndef Tcl_FSListVolumes +#define Tcl_FSListVolumes \ + (tclStubsPtr->tcl_FSListVolumes) /* 472 */ +#endif +#ifndef Tcl_FSRegister +#define Tcl_FSRegister \ + (tclStubsPtr->tcl_FSRegister) /* 473 */ +#endif +#ifndef Tcl_FSUnregister +#define Tcl_FSUnregister \ + (tclStubsPtr->tcl_FSUnregister) /* 474 */ +#endif +#ifndef Tcl_FSData +#define Tcl_FSData \ + (tclStubsPtr->tcl_FSData) /* 475 */ +#endif +#ifndef Tcl_FSGetTranslatedStringPath +#define Tcl_FSGetTranslatedStringPath \ + (tclStubsPtr->tcl_FSGetTranslatedStringPath) /* 476 */ +#endif +#ifndef Tcl_FSGetFileSystemForPath +#define Tcl_FSGetFileSystemForPath \ + (tclStubsPtr->tcl_FSGetFileSystemForPath) /* 477 */ +#endif +#ifndef Tcl_FSGetPathType +#define Tcl_FSGetPathType \ + (tclStubsPtr->tcl_FSGetPathType) /* 478 */ +#endif +#ifndef Tcl_OutputBuffered +#define Tcl_OutputBuffered \ + (tclStubsPtr->tcl_OutputBuffered) /* 479 */ +#endif +#ifndef Tcl_FSMountsChanged +#define Tcl_FSMountsChanged \ + (tclStubsPtr->tcl_FSMountsChanged) /* 480 */ +#endif +#ifndef Tcl_EvalTokensStandard +#define Tcl_EvalTokensStandard \ + (tclStubsPtr->tcl_EvalTokensStandard) /* 481 */ +#endif +#ifndef Tcl_GetTime +#define Tcl_GetTime \ + (tclStubsPtr->tcl_GetTime) /* 482 */ +#endif +#ifndef Tcl_CreateObjTrace +#define Tcl_CreateObjTrace \ + (tclStubsPtr->tcl_CreateObjTrace) /* 483 */ +#endif +#ifndef Tcl_GetCommandInfoFromToken +#define Tcl_GetCommandInfoFromToken \ + (tclStubsPtr->tcl_GetCommandInfoFromToken) /* 484 */ +#endif +#ifndef Tcl_SetCommandInfoFromToken +#define Tcl_SetCommandInfoFromToken \ + (tclStubsPtr->tcl_SetCommandInfoFromToken) /* 485 */ +#endif +#ifndef Tcl_DbNewWideIntObj +#define Tcl_DbNewWideIntObj \ + (tclStubsPtr->tcl_DbNewWideIntObj) /* 486 */ +#endif +#ifndef Tcl_GetWideIntFromObj +#define Tcl_GetWideIntFromObj \ + (tclStubsPtr->tcl_GetWideIntFromObj) /* 487 */ +#endif +#ifndef Tcl_NewWideIntObj +#define Tcl_NewWideIntObj \ + (tclStubsPtr->tcl_NewWideIntObj) /* 488 */ +#endif +#ifndef Tcl_SetWideIntObj +#define Tcl_SetWideIntObj \ + (tclStubsPtr->tcl_SetWideIntObj) /* 489 */ +#endif +#ifndef Tcl_AllocStatBuf +#define Tcl_AllocStatBuf \ + (tclStubsPtr->tcl_AllocStatBuf) /* 490 */ +#endif +#ifndef Tcl_Seek +#define Tcl_Seek \ + (tclStubsPtr->tcl_Seek) /* 491 */ +#endif +#ifndef Tcl_Tell +#define Tcl_Tell \ + (tclStubsPtr->tcl_Tell) /* 492 */ +#endif +#ifndef Tcl_ChannelWideSeekProc +#define Tcl_ChannelWideSeekProc \ + (tclStubsPtr->tcl_ChannelWideSeekProc) /* 493 */ +#endif + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLDECLS */ + diff --git a/generic/tclInt.decls b/generic/tclInt.decls index d1dfc9b..b8a2291 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.59.2.2 2004/05/17 14:26:49 kennykb Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.59.2.3 2004/06/05 17:25:40 kennykb Exp $ library tcl @@ -937,6 +937,10 @@ declare 28 win { void TclWinResetInterfaces(void) } +declare 29 win { + int TclWinCPUID( unsigned int index, unsigned int *regs ) +} + ######################### # Unix specific internals diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index 291371e..4986f86 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -1,1362 +1,1362 @@ -/* - * tclIntDecls.h -- - * - * This file contains the declarations for all unsupported - * functions that are exported by the Tcl library. These - * interfaces are not guaranteed to remain the same between - * versions. Use at your own risk. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.3 2004/05/17 16:25:14 dgp Exp $ - */ - -#ifndef _TCLINTDECLS -#define _TCLINTDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tclInt.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -/* Slot 0 is reserved */ -/* 1 */ -EXTERN int TclAccessDeleteProc _ANSI_ARGS_(( - TclAccessProc_ * proc)); -/* 2 */ -EXTERN int TclAccessInsertProc _ANSI_ARGS_(( - TclAccessProc_ * proc)); -/* 3 */ -EXTERN void TclAllocateFreeObjects _ANSI_ARGS_((void)); -/* Slot 4 is reserved */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 5 */ -EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, - int numPids, Tcl_Pid * pidPtr, - Tcl_Channel errorChan)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 5 */ -EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, - int numPids, Tcl_Pid * pidPtr, - Tcl_Channel errorChan)); -#endif /* __WIN32__ */ -/* 6 */ -EXTERN void TclCleanupCommand _ANSI_ARGS_((Command * cmdPtr)); -/* 7 */ -EXTERN int TclCopyAndCollapse _ANSI_ARGS_((int count, - CONST char * src, char * dst)); -/* 8 */ -EXTERN int TclCopyChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel inChan, Tcl_Channel outChan, - int toRead, Tcl_Obj * cmdPtr)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 9 */ -EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, - TclFile * outPipePtr, TclFile * errFilePtr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 9 */ -EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, - TclFile * outPipePtr, TclFile * errFilePtr)); -#endif /* __WIN32__ */ -/* 10 */ -EXTERN int TclCreateProc _ANSI_ARGS_((Tcl_Interp * interp, - Namespace * nsPtr, CONST char * procName, - Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, - Proc ** procPtrPtr)); -/* 11 */ -EXTERN void TclDeleteCompiledLocalVars _ANSI_ARGS_(( - Interp * iPtr, CallFrame * framePtr)); -/* 12 */ -EXTERN void TclDeleteVars _ANSI_ARGS_((Interp * iPtr, - Tcl_HashTable * tablePtr)); -/* 13 */ -EXTERN int TclDoGlob _ANSI_ARGS_((Tcl_Interp * interp, - char * separators, Tcl_DString * headPtr, - char * tail, Tcl_GlobTypeData * types)); -/* 14 */ -EXTERN void TclDumpMemoryInfo _ANSI_ARGS_((FILE * outFile)); -/* Slot 15 is reserved */ -/* 16 */ -EXTERN void TclExprFloatError _ANSI_ARGS_((Tcl_Interp * interp, - double value)); -/* Slot 17 is reserved */ -/* Slot 18 is reserved */ -/* Slot 19 is reserved */ -/* Slot 20 is reserved */ -/* Slot 21 is reserved */ -/* 22 */ -EXTERN int TclFindElement _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * listStr, int listLength, - CONST char ** elementPtr, - CONST char ** nextPtr, int * sizePtr, - int * bracePtr)); -/* 23 */ -EXTERN Proc * TclFindProc _ANSI_ARGS_((Interp * iPtr, - CONST char * procName)); -/* 24 */ -EXTERN int TclFormatInt _ANSI_ARGS_((char * buffer, long n)); -/* 25 */ -EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp * iPtr)); -/* Slot 26 is reserved */ -/* 27 */ -EXTERN int TclGetDate _ANSI_ARGS_((char * p, unsigned long now, - long zone, unsigned long * timePtr)); -/* 28 */ -EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type)); -/* Slot 29 is reserved */ -/* Slot 30 is reserved */ -/* 31 */ -EXTERN char * TclGetExtension _ANSI_ARGS_((char * name)); -/* 32 */ -EXTERN int TclGetFrame _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CallFrame ** framePtrPtr)); -/* 33 */ -EXTERN TclCmdProcType TclGetInterpProc _ANSI_ARGS_((void)); -/* 34 */ -EXTERN int TclGetIntForIndex _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int endValue, - int * indexPtr)); -/* Slot 35 is reserved */ -/* 36 */ -EXTERN int TclGetLong _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, long * longPtr)); -/* 37 */ -EXTERN int TclGetLoadedPackages _ANSI_ARGS_(( - Tcl_Interp * interp, char * targetName)); -/* 38 */ -EXTERN int TclGetNamespaceForQualName _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * qualName, - Namespace * cxtNsPtr, int flags, - Namespace ** nsPtrPtr, - Namespace ** altNsPtrPtr, - Namespace ** actualCxtPtrPtr, - CONST char ** simpleNamePtr)); -/* 39 */ -EXTERN TclObjCmdProcType TclGetObjInterpProc _ANSI_ARGS_((void)); -/* 40 */ -EXTERN int TclGetOpenMode _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * seekFlagPtr)); -/* 41 */ -EXTERN Tcl_Command TclGetOriginalCommand _ANSI_ARGS_(( - Tcl_Command command)); -/* 42 */ -EXTERN char * TclpGetUserHome _ANSI_ARGS_((CONST char * name, - Tcl_DString * bufferPtr)); -/* 43 */ -EXTERN int TclGlobalInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST84 char ** argv, int flags)); -/* 44 */ -EXTERN int TclGuessPackageName _ANSI_ARGS_(( - CONST char * fileName, Tcl_DString * bufPtr)); -/* 45 */ -EXTERN int TclHideUnsafeCommands _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 46 */ -EXTERN int TclInExit _ANSI_ARGS_((void)); -/* Slot 47 is reserved */ -/* Slot 48 is reserved */ -/* 49 */ -EXTERN Tcl_Obj * TclIncrVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - long incrAmount, int part1NotParsed)); -/* 50 */ -EXTERN void TclInitCompiledLocals _ANSI_ARGS_(( - Tcl_Interp * interp, CallFrame * framePtr, - Namespace * nsPtr)); -/* 51 */ -EXTERN int TclInterpInit _ANSI_ARGS_((Tcl_Interp * interp)); -/* 52 */ -EXTERN int TclInvoke _ANSI_ARGS_((Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -/* 53 */ -EXTERN int TclInvokeObjectCommand _ANSI_ARGS_(( - ClientData clientData, Tcl_Interp * interp, - int argc, CONST84 char ** argv)); -/* 54 */ -EXTERN int TclInvokeStringCommand _ANSI_ARGS_(( - ClientData clientData, Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[])); -/* 55 */ -EXTERN Proc * TclIsProc _ANSI_ARGS_((Command * cmdPtr)); -/* Slot 56 is reserved */ -/* Slot 57 is reserved */ -/* 58 */ -EXTERN Var * TclLookupVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, CONST char * msg, int createPart1, - int createPart2, Var ** arrayPtrPtr)); -/* Slot 59 is reserved */ -/* 60 */ -EXTERN int TclNeedSpace _ANSI_ARGS_((CONST char * start, - CONST char * end)); -/* 61 */ -EXTERN Tcl_Obj * TclNewProcBodyObj _ANSI_ARGS_((Proc * procPtr)); -/* 62 */ -EXTERN int TclObjCommandComplete _ANSI_ARGS_((Tcl_Obj * cmdPtr)); -/* 63 */ -EXTERN int TclObjInterpProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int objc, - Tcl_Obj *CONST objv[])); -/* 64 */ -EXTERN int TclObjInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 65 */ -EXTERN int TclObjInvokeGlobal _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 66 */ -EXTERN int TclOpenFileChannelDeleteProc _ANSI_ARGS_(( - TclOpenFileChannelProc_ * proc)); -/* 67 */ -EXTERN int TclOpenFileChannelInsertProc _ANSI_ARGS_(( - TclOpenFileChannelProc_ * proc)); -/* Slot 68 is reserved */ -/* 69 */ -EXTERN char * TclpAlloc _ANSI_ARGS_((unsigned int size)); -/* Slot 70 is reserved */ -/* Slot 71 is reserved */ -/* Slot 72 is reserved */ -/* Slot 73 is reserved */ -/* 74 */ -EXTERN void TclpFree _ANSI_ARGS_((char * ptr)); -/* 75 */ -EXTERN unsigned long TclpGetClicks _ANSI_ARGS_((void)); -/* 76 */ -EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void)); -/* 77 */ -EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time * time)); -/* 78 */ -EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time)); -/* Slot 79 is reserved */ -/* Slot 80 is reserved */ -/* 81 */ -EXTERN char * TclpRealloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* Slot 82 is reserved */ -/* Slot 83 is reserved */ -/* Slot 84 is reserved */ -/* Slot 85 is reserved */ -/* Slot 86 is reserved */ -/* Slot 87 is reserved */ -/* 88 */ -EXTERN char * TclPrecTraceProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, CONST char * name1, - CONST char * name2, int flags)); -/* 89 */ -EXTERN int TclPreventAliasLoop _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Interp * cmdInterp, Tcl_Command cmd)); -/* Slot 90 is reserved */ -/* 91 */ -EXTERN void TclProcCleanupProc _ANSI_ARGS_((Proc * procPtr)); -/* 92 */ -EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp * interp, - Proc * procPtr, Tcl_Obj * bodyPtr, - Namespace * nsPtr, CONST char * description, - CONST char * procName)); -/* 93 */ -EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData)); -/* 94 */ -EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int argc, - CONST84 char ** argv)); -/* Slot 95 is reserved */ -/* 96 */ -EXTERN int TclRenameCommand _ANSI_ARGS_((Tcl_Interp * interp, - char * oldName, char * newName)); -/* 97 */ -EXTERN void TclResetShadowedCmdRefs _ANSI_ARGS_(( - Tcl_Interp * interp, Command * newCmdPtr)); -/* 98 */ -EXTERN int TclServiceIdle _ANSI_ARGS_((void)); -/* Slot 99 is reserved */ -/* Slot 100 is reserved */ -/* 101 */ -EXTERN char * TclSetPreInitScript _ANSI_ARGS_((char * string)); -/* 102 */ -EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp * interp)); -/* 103 */ -EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp * interp, - char * str, char * proto, int * portPtr)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 104 */ -EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, - int size)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 104 */ -EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, - int size)); -#endif /* __WIN32__ */ -/* Slot 105 is reserved */ -/* 106 */ -EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ * proc)); -/* 107 */ -EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ * proc)); -/* 108 */ -EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace * nsPtr)); -/* 109 */ -EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp * iPtr)); -/* Slot 110 is reserved */ -/* 111 */ -EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_ResolveCmdProc * cmdProc, - Tcl_ResolveVarProc * varProc, - Tcl_ResolveCompiledVarProc * compiledVarProc)); -/* 112 */ -EXTERN int Tcl_AppendExportList _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Namespace * nsPtr, - Tcl_Obj * objPtr)); -/* 113 */ -EXTERN Tcl_Namespace * Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, ClientData clientData, - Tcl_NamespaceDeleteProc * deleteProc)); -/* 114 */ -EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_(( - Tcl_Namespace * nsPtr)); -/* 115 */ -EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern, - int resetListFirst)); -/* 116 */ -EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 117 */ -EXTERN Tcl_Namespace * Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 118 */ -EXTERN int Tcl_GetInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_ResolverInfo * resInfo)); -/* 119 */ -EXTERN int Tcl_GetNamespaceResolvers _ANSI_ARGS_(( - Tcl_Namespace * namespacePtr, - Tcl_ResolverInfo * resInfo)); -/* 120 */ -EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 121 */ -EXTERN int Tcl_ForgetImport _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern)); -/* 122 */ -EXTERN Tcl_Command Tcl_GetCommandFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr)); -/* 123 */ -EXTERN void Tcl_GetCommandFullName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command, - Tcl_Obj * objPtr)); -/* 124 */ -EXTERN Tcl_Namespace * Tcl_GetCurrentNamespace _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 125 */ -EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 126 */ -EXTERN void Tcl_GetVariableFullName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Var variable, - Tcl_Obj * objPtr)); -/* 127 */ -EXTERN int Tcl_Import _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern, - int allowOverwrite)); -/* 128 */ -EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp* interp)); -/* 129 */ -EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp* interp, - Tcl_CallFrame * framePtr, - Tcl_Namespace * nsPtr, int isProcCallFrame)); -/* 130 */ -EXTERN int Tcl_RemoveInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name)); -/* 131 */ -EXTERN void Tcl_SetNamespaceResolvers _ANSI_ARGS_(( - Tcl_Namespace * namespacePtr, - Tcl_ResolveCmdProc * cmdProc, - Tcl_ResolveVarProc * varProc, - Tcl_ResolveCompiledVarProc * compiledVarProc)); -/* 132 */ -EXTERN int TclpHasSockets _ANSI_ARGS_((Tcl_Interp * interp)); -/* 133 */ -EXTERN struct tm * TclpGetDate _ANSI_ARGS_((TclpTime_t time, int useGMT)); -/* 134 */ -EXTERN size_t TclpStrftime _ANSI_ARGS_((char * s, size_t maxsize, - CONST char * format, CONST struct tm * t, - int useGMT)); -/* 135 */ -EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void)); -/* Slot 136 is reserved */ -/* Slot 137 is reserved */ -/* 138 */ -EXTERN CONST84_RETURN char * TclGetEnv _ANSI_ARGS_((CONST char * name, - Tcl_DString * valuePtr)); -/* Slot 139 is reserved */ -/* 140 */ -EXTERN int TclLooksLikeInt _ANSI_ARGS_((CONST char * bytes, - int length)); -/* 141 */ -EXTERN CONST84_RETURN char * TclpGetCwd _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * cwdPtr)); -/* 142 */ -EXTERN int TclSetByteCodeFromAny _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - CompileHookProc * hookProc, - ClientData clientData)); -/* 143 */ -EXTERN int TclAddLiteralObj _ANSI_ARGS_(( - struct CompileEnv * envPtr, Tcl_Obj * objPtr, - LiteralEntry ** litPtrPtr)); -/* 144 */ -EXTERN void TclHideLiteral _ANSI_ARGS_((Tcl_Interp * interp, - struct CompileEnv * envPtr, int index)); -/* 145 */ -EXTERN struct AuxDataType * TclGetAuxDataType _ANSI_ARGS_((char * typeName)); -/* 146 */ -EXTERN TclHandle TclHandleCreate _ANSI_ARGS_((VOID * ptr)); -/* 147 */ -EXTERN void TclHandleFree _ANSI_ARGS_((TclHandle handle)); -/* 148 */ -EXTERN TclHandle TclHandlePreserve _ANSI_ARGS_((TclHandle handle)); -/* 149 */ -EXTERN void TclHandleRelease _ANSI_ARGS_((TclHandle handle)); -/* 150 */ -EXTERN int TclRegAbout _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp re)); -/* 151 */ -EXTERN void TclRegExpRangeUniChar _ANSI_ARGS_((Tcl_RegExp re, - int index, int * startPtr, int * endPtr)); -/* 152 */ -EXTERN void TclSetLibraryPath _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 153 */ -EXTERN Tcl_Obj * TclGetLibraryPath _ANSI_ARGS_((void)); -/* Slot 154 is reserved */ -/* Slot 155 is reserved */ -/* 156 */ -EXTERN void TclRegError _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * msg, int status)); -/* 157 */ -EXTERN Var * TclVarTraceExists _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 158 */ -EXTERN void TclSetStartupScriptFileName _ANSI_ARGS_(( - CONST char * filename)); -/* 159 */ -EXTERN CONST84_RETURN char * TclGetStartupScriptFileName _ANSI_ARGS_((void)); -/* Slot 160 is reserved */ -/* 161 */ -EXTERN int TclChannelTransform _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); -/* 162 */ -EXTERN void TclChannelEventScriptInvoker _ANSI_ARGS_(( - ClientData clientData, int flags)); -/* 163 */ -EXTERN void * TclGetInstructionTable _ANSI_ARGS_((void)); -/* 164 */ -EXTERN void TclExpandCodeArray _ANSI_ARGS_((void * envPtr)); -/* 165 */ -EXTERN void TclpSetInitialEncodings _ANSI_ARGS_((void)); -/* 166 */ -EXTERN int TclListObjSetElement _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - int index, Tcl_Obj * valuePtr)); -/* 167 */ -EXTERN void TclSetStartupScriptPath _ANSI_ARGS_(( - Tcl_Obj * pathPtr)); -/* 168 */ -EXTERN Tcl_Obj * TclGetStartupScriptPath _ANSI_ARGS_((void)); -/* 169 */ -EXTERN int TclpUtfNcmp2 _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 170 */ -EXTERN int TclCheckInterpTraces _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * command, - int numChars, Command * cmdPtr, int result, - int traceFlags, int objc, - Tcl_Obj *CONST objv[])); -/* 171 */ -EXTERN int TclCheckExecutionTraces _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * command, - int numChars, Command * cmdPtr, int result, - int traceFlags, int objc, - Tcl_Obj *CONST objv[])); -/* 172 */ -EXTERN int TclInThreadExit _ANSI_ARGS_((void)); -/* 173 */ -EXTERN int TclUniCharMatch _ANSI_ARGS_(( - CONST Tcl_UniChar * string, int strLen, - CONST Tcl_UniChar * pattern, int ptnLen, - int nocase)); -/* Slot 174 is reserved */ -/* Slot 175 is reserved */ -/* Slot 176 is reserved */ -/* Slot 177 is reserved */ -/* Slot 178 is reserved */ -/* Slot 179 is reserved */ -/* Slot 180 is reserved */ -/* Slot 181 is reserved */ -/* 182 */ -EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t clock)); -/* 183 */ -EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t clock)); - -typedef struct TclIntStubs { - int magic; - struct TclIntStubHooks *hooks; - - void *reserved0; - int (*tclAccessDeleteProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 1 */ - int (*tclAccessInsertProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 2 */ - void (*tclAllocateFreeObjects) _ANSI_ARGS_((void)); /* 3 */ - void *reserved4; -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved5; -#endif /* MAC_TCL */ - void (*tclCleanupCommand) _ANSI_ARGS_((Command * cmdPtr)); /* 6 */ - int (*tclCopyAndCollapse) _ANSI_ARGS_((int count, CONST char * src, char * dst)); /* 7 */ - int (*tclCopyChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel inChan, Tcl_Channel outChan, int toRead, Tcl_Obj * cmdPtr)); /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved9; -#endif /* MAC_TCL */ - int (*tclCreateProc) _ANSI_ARGS_((Tcl_Interp * interp, Namespace * nsPtr, CONST char * procName, Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, Proc ** procPtrPtr)); /* 10 */ - void (*tclDeleteCompiledLocalVars) _ANSI_ARGS_((Interp * iPtr, CallFrame * framePtr)); /* 11 */ - void (*tclDeleteVars) _ANSI_ARGS_((Interp * iPtr, Tcl_HashTable * tablePtr)); /* 12 */ - int (*tclDoGlob) _ANSI_ARGS_((Tcl_Interp * interp, char * separators, Tcl_DString * headPtr, char * tail, Tcl_GlobTypeData * types)); /* 13 */ - void (*tclDumpMemoryInfo) _ANSI_ARGS_((FILE * outFile)); /* 14 */ - void *reserved15; - void (*tclExprFloatError) _ANSI_ARGS_((Tcl_Interp * interp, double value)); /* 16 */ - void *reserved17; - void *reserved18; - void *reserved19; - void *reserved20; - void *reserved21; - int (*tclFindElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int listLength, CONST char ** elementPtr, CONST char ** nextPtr, int * sizePtr, int * bracePtr)); /* 22 */ - Proc * (*tclFindProc) _ANSI_ARGS_((Interp * iPtr, CONST char * procName)); /* 23 */ - int (*tclFormatInt) _ANSI_ARGS_((char * buffer, long n)); /* 24 */ - void (*tclFreePackageInfo) _ANSI_ARGS_((Interp * iPtr)); /* 25 */ - void *reserved26; - int (*tclGetDate) _ANSI_ARGS_((char * p, unsigned long now, long zone, unsigned long * timePtr)); /* 27 */ - Tcl_Channel (*tclpGetDefaultStdChannel) _ANSI_ARGS_((int type)); /* 28 */ - void *reserved29; - void *reserved30; - char * (*tclGetExtension) _ANSI_ARGS_((char * name)); /* 31 */ - int (*tclGetFrame) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CallFrame ** framePtrPtr)); /* 32 */ - TclCmdProcType (*tclGetInterpProc) _ANSI_ARGS_((void)); /* 33 */ - int (*tclGetIntForIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int endValue, int * indexPtr)); /* 34 */ - void *reserved35; - int (*tclGetLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * longPtr)); /* 36 */ - int (*tclGetLoadedPackages) _ANSI_ARGS_((Tcl_Interp * interp, char * targetName)); /* 37 */ - int (*tclGetNamespaceForQualName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * qualName, Namespace * cxtNsPtr, int flags, Namespace ** nsPtrPtr, Namespace ** altNsPtrPtr, Namespace ** actualCxtPtrPtr, CONST char ** simpleNamePtr)); /* 38 */ - TclObjCmdProcType (*tclGetObjInterpProc) _ANSI_ARGS_((void)); /* 39 */ - int (*tclGetOpenMode) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * seekFlagPtr)); /* 40 */ - Tcl_Command (*tclGetOriginalCommand) _ANSI_ARGS_((Tcl_Command command)); /* 41 */ - char * (*tclpGetUserHome) _ANSI_ARGS_((CONST char * name, Tcl_DString * bufferPtr)); /* 42 */ - int (*tclGlobalInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 43 */ - int (*tclGuessPackageName) _ANSI_ARGS_((CONST char * fileName, Tcl_DString * bufPtr)); /* 44 */ - int (*tclHideUnsafeCommands) _ANSI_ARGS_((Tcl_Interp * interp)); /* 45 */ - int (*tclInExit) _ANSI_ARGS_((void)); /* 46 */ - void *reserved47; - void *reserved48; - Tcl_Obj * (*tclIncrVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, long incrAmount, int part1NotParsed)); /* 49 */ - void (*tclInitCompiledLocals) _ANSI_ARGS_((Tcl_Interp * interp, CallFrame * framePtr, Namespace * nsPtr)); /* 50 */ - int (*tclInterpInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 51 */ - int (*tclInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 52 */ - int (*tclInvokeObjectCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 53 */ - int (*tclInvokeStringCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 54 */ - Proc * (*tclIsProc) _ANSI_ARGS_((Command * cmdPtr)); /* 55 */ - void *reserved56; - void *reserved57; - Var * (*tclLookupVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, CONST char * msg, int createPart1, int createPart2, Var ** arrayPtrPtr)); /* 58 */ - void *reserved59; - int (*tclNeedSpace) _ANSI_ARGS_((CONST char * start, CONST char * end)); /* 60 */ - Tcl_Obj * (*tclNewProcBodyObj) _ANSI_ARGS_((Proc * procPtr)); /* 61 */ - int (*tclObjCommandComplete) _ANSI_ARGS_((Tcl_Obj * cmdPtr)); /* 62 */ - int (*tclObjInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 63 */ - int (*tclObjInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 64 */ - int (*tclObjInvokeGlobal) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 65 */ - int (*tclOpenFileChannelDeleteProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 66 */ - int (*tclOpenFileChannelInsertProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 67 */ - void *reserved68; - char * (*tclpAlloc) _ANSI_ARGS_((unsigned int size)); /* 69 */ - void *reserved70; - void *reserved71; - void *reserved72; - void *reserved73; - void (*tclpFree) _ANSI_ARGS_((char * ptr)); /* 74 */ - unsigned long (*tclpGetClicks) _ANSI_ARGS_((void)); /* 75 */ - unsigned long (*tclpGetSeconds) _ANSI_ARGS_((void)); /* 76 */ - void (*tclpGetTime) _ANSI_ARGS_((Tcl_Time * time)); /* 77 */ - int (*tclpGetTimeZone) _ANSI_ARGS_((unsigned long time)); /* 78 */ - void *reserved79; - void *reserved80; - char * (*tclpRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 81 */ - void *reserved82; - void *reserved83; - void *reserved84; - void *reserved85; - void *reserved86; - void *reserved87; - char * (*tclPrecTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, CONST char * name1, CONST char * name2, int flags)); /* 88 */ - int (*tclPreventAliasLoop) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Interp * cmdInterp, Tcl_Command cmd)); /* 89 */ - void *reserved90; - void (*tclProcCleanupProc) _ANSI_ARGS_((Proc * procPtr)); /* 91 */ - int (*tclProcCompileProc) _ANSI_ARGS_((Tcl_Interp * interp, Proc * procPtr, Tcl_Obj * bodyPtr, Namespace * nsPtr, CONST char * description, CONST char * procName)); /* 92 */ - void (*tclProcDeleteProc) _ANSI_ARGS_((ClientData clientData)); /* 93 */ - int (*tclProcInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 94 */ - void *reserved95; - int (*tclRenameCommand) _ANSI_ARGS_((Tcl_Interp * interp, char * oldName, char * newName)); /* 96 */ - void (*tclResetShadowedCmdRefs) _ANSI_ARGS_((Tcl_Interp * interp, Command * newCmdPtr)); /* 97 */ - int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ - void *reserved99; - void *reserved100; - char * (*tclSetPreInitScript) _ANSI_ARGS_((char * string)); /* 101 */ - void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp * interp)); /* 102 */ - int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp * interp, char * str, char * proto, int * portPtr)); /* 103 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved104; -#endif /* MAC_TCL */ - void *reserved105; - int (*tclStatDeleteProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 106 */ - int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 107 */ - void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace * nsPtr)); /* 108 */ - int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp * iPtr)); /* 109 */ - void *reserved110; - void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 111 */ - int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, Tcl_Obj * objPtr)); /* 112 */ - Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, ClientData clientData, Tcl_NamespaceDeleteProc * deleteProc)); /* 113 */ - void (*tcl_DeleteNamespace) _ANSI_ARGS_((Tcl_Namespace * nsPtr)); /* 114 */ - int (*tcl_Export) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int resetListFirst)); /* 115 */ - Tcl_Command (*tcl_FindCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 116 */ - Tcl_Namespace * (*tcl_FindNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 117 */ - int (*tcl_GetInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolverInfo * resInfo)); /* 118 */ - int (*tcl_GetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolverInfo * resInfo)); /* 119 */ - Tcl_Var (*tcl_FindNamespaceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 120 */ - int (*tcl_ForgetImport) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern)); /* 121 */ - Tcl_Command (*tcl_GetCommandFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 122 */ - void (*tcl_GetCommandFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command, Tcl_Obj * objPtr)); /* 123 */ - Tcl_Namespace * (*tcl_GetCurrentNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 124 */ - Tcl_Namespace * (*tcl_GetGlobalNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 125 */ - void (*tcl_GetVariableFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Var variable, Tcl_Obj * objPtr)); /* 126 */ - int (*tcl_Import) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int allowOverwrite)); /* 127 */ - void (*tcl_PopCallFrame) _ANSI_ARGS_((Tcl_Interp* interp)); /* 128 */ - int (*tcl_PushCallFrame) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_CallFrame * framePtr, Tcl_Namespace * nsPtr, int isProcCallFrame)); /* 129 */ - int (*tcl_RemoveInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 130 */ - void (*tcl_SetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 131 */ - int (*tclpHasSockets) _ANSI_ARGS_((Tcl_Interp * interp)); /* 132 */ - struct tm * (*tclpGetDate) _ANSI_ARGS_((TclpTime_t time, int useGMT)); /* 133 */ - size_t (*tclpStrftime) _ANSI_ARGS_((char * s, size_t maxsize, CONST char * format, CONST struct tm * t, int useGMT)); /* 134 */ - int (*tclpCheckStackSpace) _ANSI_ARGS_((void)); /* 135 */ - void *reserved136; - void *reserved137; - CONST84_RETURN char * (*tclGetEnv) _ANSI_ARGS_((CONST char * name, Tcl_DString * valuePtr)); /* 138 */ - void *reserved139; - int (*tclLooksLikeInt) _ANSI_ARGS_((CONST char * bytes, int length)); /* 140 */ - CONST84_RETURN char * (*tclpGetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 141 */ - int (*tclSetByteCodeFromAny) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CompileHookProc * hookProc, ClientData clientData)); /* 142 */ - int (*tclAddLiteralObj) _ANSI_ARGS_((struct CompileEnv * envPtr, Tcl_Obj * objPtr, LiteralEntry ** litPtrPtr)); /* 143 */ - void (*tclHideLiteral) _ANSI_ARGS_((Tcl_Interp * interp, struct CompileEnv * envPtr, int index)); /* 144 */ - struct AuxDataType * (*tclGetAuxDataType) _ANSI_ARGS_((char * typeName)); /* 145 */ - TclHandle (*tclHandleCreate) _ANSI_ARGS_((VOID * ptr)); /* 146 */ - void (*tclHandleFree) _ANSI_ARGS_((TclHandle handle)); /* 147 */ - TclHandle (*tclHandlePreserve) _ANSI_ARGS_((TclHandle handle)); /* 148 */ - void (*tclHandleRelease) _ANSI_ARGS_((TclHandle handle)); /* 149 */ - int (*tclRegAbout) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp re)); /* 150 */ - void (*tclRegExpRangeUniChar) _ANSI_ARGS_((Tcl_RegExp re, int index, int * startPtr, int * endPtr)); /* 151 */ - void (*tclSetLibraryPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 152 */ - Tcl_Obj * (*tclGetLibraryPath) _ANSI_ARGS_((void)); /* 153 */ - void *reserved154; - void *reserved155; - void (*tclRegError) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * msg, int status)); /* 156 */ - Var * (*tclVarTraceExists) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 157 */ - void (*tclSetStartupScriptFileName) _ANSI_ARGS_((CONST char * filename)); /* 158 */ - CONST84_RETURN char * (*tclGetStartupScriptFileName) _ANSI_ARGS_((void)); /* 159 */ - void *reserved160; - int (*tclChannelTransform) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); /* 161 */ - void (*tclChannelEventScriptInvoker) _ANSI_ARGS_((ClientData clientData, int flags)); /* 162 */ - void * (*tclGetInstructionTable) _ANSI_ARGS_((void)); /* 163 */ - void (*tclExpandCodeArray) _ANSI_ARGS_((void * envPtr)); /* 164 */ - void (*tclpSetInitialEncodings) _ANSI_ARGS_((void)); /* 165 */ - int (*tclListObjSetElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj * valuePtr)); /* 166 */ - void (*tclSetStartupScriptPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 167 */ - Tcl_Obj * (*tclGetStartupScriptPath) _ANSI_ARGS_((void)); /* 168 */ - int (*tclpUtfNcmp2) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 169 */ - int (*tclCheckInterpTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 170 */ - int (*tclCheckExecutionTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 171 */ - int (*tclInThreadExit) _ANSI_ARGS_((void)); /* 172 */ - int (*tclUniCharMatch) _ANSI_ARGS_((CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); /* 173 */ - void *reserved174; - void *reserved175; - void *reserved176; - void *reserved177; - void *reserved178; - void *reserved179; - void *reserved180; - void *reserved181; - struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t clock)); /* 182 */ - struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ -} TclIntStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclIntStubs *tclIntStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -/* Slot 0 is reserved */ -#ifndef TclAccessDeleteProc -#define TclAccessDeleteProc \ - (tclIntStubsPtr->tclAccessDeleteProc) /* 1 */ -#endif -#ifndef TclAccessInsertProc -#define TclAccessInsertProc \ - (tclIntStubsPtr->tclAccessInsertProc) /* 2 */ -#endif -#ifndef TclAllocateFreeObjects -#define TclAllocateFreeObjects \ - (tclIntStubsPtr->tclAllocateFreeObjects) /* 3 */ -#endif -/* Slot 4 is reserved */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclCleanupChildren -#define TclCleanupChildren \ - (tclIntStubsPtr->tclCleanupChildren) /* 5 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclCleanupChildren -#define TclCleanupChildren \ - (tclIntStubsPtr->tclCleanupChildren) /* 5 */ -#endif -#endif /* __WIN32__ */ -#ifndef TclCleanupCommand -#define TclCleanupCommand \ - (tclIntStubsPtr->tclCleanupCommand) /* 6 */ -#endif -#ifndef TclCopyAndCollapse -#define TclCopyAndCollapse \ - (tclIntStubsPtr->tclCopyAndCollapse) /* 7 */ -#endif -#ifndef TclCopyChannel -#define TclCopyChannel \ - (tclIntStubsPtr->tclCopyChannel) /* 8 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclCreatePipeline -#define TclCreatePipeline \ - (tclIntStubsPtr->tclCreatePipeline) /* 9 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclCreatePipeline -#define TclCreatePipeline \ - (tclIntStubsPtr->tclCreatePipeline) /* 9 */ -#endif -#endif /* __WIN32__ */ -#ifndef TclCreateProc -#define TclCreateProc \ - (tclIntStubsPtr->tclCreateProc) /* 10 */ -#endif -#ifndef TclDeleteCompiledLocalVars -#define TclDeleteCompiledLocalVars \ - (tclIntStubsPtr->tclDeleteCompiledLocalVars) /* 11 */ -#endif -#ifndef TclDeleteVars -#define TclDeleteVars \ - (tclIntStubsPtr->tclDeleteVars) /* 12 */ -#endif -#ifndef TclDoGlob -#define TclDoGlob \ - (tclIntStubsPtr->tclDoGlob) /* 13 */ -#endif -#ifndef TclDumpMemoryInfo -#define TclDumpMemoryInfo \ - (tclIntStubsPtr->tclDumpMemoryInfo) /* 14 */ -#endif -/* Slot 15 is reserved */ -#ifndef TclExprFloatError -#define TclExprFloatError \ - (tclIntStubsPtr->tclExprFloatError) /* 16 */ -#endif -/* Slot 17 is reserved */ -/* Slot 18 is reserved */ -/* Slot 19 is reserved */ -/* Slot 20 is reserved */ -/* Slot 21 is reserved */ -#ifndef TclFindElement -#define TclFindElement \ - (tclIntStubsPtr->tclFindElement) /* 22 */ -#endif -#ifndef TclFindProc -#define TclFindProc \ - (tclIntStubsPtr->tclFindProc) /* 23 */ -#endif -#ifndef TclFormatInt -#define TclFormatInt \ - (tclIntStubsPtr->tclFormatInt) /* 24 */ -#endif -#ifndef TclFreePackageInfo -#define TclFreePackageInfo \ - (tclIntStubsPtr->tclFreePackageInfo) /* 25 */ -#endif -/* Slot 26 is reserved */ -#ifndef TclGetDate -#define TclGetDate \ - (tclIntStubsPtr->tclGetDate) /* 27 */ -#endif -#ifndef TclpGetDefaultStdChannel -#define TclpGetDefaultStdChannel \ - (tclIntStubsPtr->tclpGetDefaultStdChannel) /* 28 */ -#endif -/* Slot 29 is reserved */ -/* Slot 30 is reserved */ -#ifndef TclGetExtension -#define TclGetExtension \ - (tclIntStubsPtr->tclGetExtension) /* 31 */ -#endif -#ifndef TclGetFrame -#define TclGetFrame \ - (tclIntStubsPtr->tclGetFrame) /* 32 */ -#endif -#ifndef TclGetInterpProc -#define TclGetInterpProc \ - (tclIntStubsPtr->tclGetInterpProc) /* 33 */ -#endif -#ifndef TclGetIntForIndex -#define TclGetIntForIndex \ - (tclIntStubsPtr->tclGetIntForIndex) /* 34 */ -#endif -/* Slot 35 is reserved */ -#ifndef TclGetLong -#define TclGetLong \ - (tclIntStubsPtr->tclGetLong) /* 36 */ -#endif -#ifndef TclGetLoadedPackages -#define TclGetLoadedPackages \ - (tclIntStubsPtr->tclGetLoadedPackages) /* 37 */ -#endif -#ifndef TclGetNamespaceForQualName -#define TclGetNamespaceForQualName \ - (tclIntStubsPtr->tclGetNamespaceForQualName) /* 38 */ -#endif -#ifndef TclGetObjInterpProc -#define TclGetObjInterpProc \ - (tclIntStubsPtr->tclGetObjInterpProc) /* 39 */ -#endif -#ifndef TclGetOpenMode -#define TclGetOpenMode \ - (tclIntStubsPtr->tclGetOpenMode) /* 40 */ -#endif -#ifndef TclGetOriginalCommand -#define TclGetOriginalCommand \ - (tclIntStubsPtr->tclGetOriginalCommand) /* 41 */ -#endif -#ifndef TclpGetUserHome -#define TclpGetUserHome \ - (tclIntStubsPtr->tclpGetUserHome) /* 42 */ -#endif -#ifndef TclGlobalInvoke -#define TclGlobalInvoke \ - (tclIntStubsPtr->tclGlobalInvoke) /* 43 */ -#endif -#ifndef TclGuessPackageName -#define TclGuessPackageName \ - (tclIntStubsPtr->tclGuessPackageName) /* 44 */ -#endif -#ifndef TclHideUnsafeCommands -#define TclHideUnsafeCommands \ - (tclIntStubsPtr->tclHideUnsafeCommands) /* 45 */ -#endif -#ifndef TclInExit -#define TclInExit \ - (tclIntStubsPtr->tclInExit) /* 46 */ -#endif -/* Slot 47 is reserved */ -/* Slot 48 is reserved */ -#ifndef TclIncrVar2 -#define TclIncrVar2 \ - (tclIntStubsPtr->tclIncrVar2) /* 49 */ -#endif -#ifndef TclInitCompiledLocals -#define TclInitCompiledLocals \ - (tclIntStubsPtr->tclInitCompiledLocals) /* 50 */ -#endif -#ifndef TclInterpInit -#define TclInterpInit \ - (tclIntStubsPtr->tclInterpInit) /* 51 */ -#endif -#ifndef TclInvoke -#define TclInvoke \ - (tclIntStubsPtr->tclInvoke) /* 52 */ -#endif -#ifndef TclInvokeObjectCommand -#define TclInvokeObjectCommand \ - (tclIntStubsPtr->tclInvokeObjectCommand) /* 53 */ -#endif -#ifndef TclInvokeStringCommand -#define TclInvokeStringCommand \ - (tclIntStubsPtr->tclInvokeStringCommand) /* 54 */ -#endif -#ifndef TclIsProc -#define TclIsProc \ - (tclIntStubsPtr->tclIsProc) /* 55 */ -#endif -/* Slot 56 is reserved */ -/* Slot 57 is reserved */ -#ifndef TclLookupVar -#define TclLookupVar \ - (tclIntStubsPtr->tclLookupVar) /* 58 */ -#endif -/* Slot 59 is reserved */ -#ifndef TclNeedSpace -#define TclNeedSpace \ - (tclIntStubsPtr->tclNeedSpace) /* 60 */ -#endif -#ifndef TclNewProcBodyObj -#define TclNewProcBodyObj \ - (tclIntStubsPtr->tclNewProcBodyObj) /* 61 */ -#endif -#ifndef TclObjCommandComplete -#define TclObjCommandComplete \ - (tclIntStubsPtr->tclObjCommandComplete) /* 62 */ -#endif -#ifndef TclObjInterpProc -#define TclObjInterpProc \ - (tclIntStubsPtr->tclObjInterpProc) /* 63 */ -#endif -#ifndef TclObjInvoke -#define TclObjInvoke \ - (tclIntStubsPtr->tclObjInvoke) /* 64 */ -#endif -#ifndef TclObjInvokeGlobal -#define TclObjInvokeGlobal \ - (tclIntStubsPtr->tclObjInvokeGlobal) /* 65 */ -#endif -#ifndef TclOpenFileChannelDeleteProc -#define TclOpenFileChannelDeleteProc \ - (tclIntStubsPtr->tclOpenFileChannelDeleteProc) /* 66 */ -#endif -#ifndef TclOpenFileChannelInsertProc -#define TclOpenFileChannelInsertProc \ - (tclIntStubsPtr->tclOpenFileChannelInsertProc) /* 67 */ -#endif -/* Slot 68 is reserved */ -#ifndef TclpAlloc -#define TclpAlloc \ - (tclIntStubsPtr->tclpAlloc) /* 69 */ -#endif -/* Slot 70 is reserved */ -/* Slot 71 is reserved */ -/* Slot 72 is reserved */ -/* Slot 73 is reserved */ -#ifndef TclpFree -#define TclpFree \ - (tclIntStubsPtr->tclpFree) /* 74 */ -#endif -#ifndef TclpGetClicks -#define TclpGetClicks \ - (tclIntStubsPtr->tclpGetClicks) /* 75 */ -#endif -#ifndef TclpGetSeconds -#define TclpGetSeconds \ - (tclIntStubsPtr->tclpGetSeconds) /* 76 */ -#endif -#ifndef TclpGetTime -#define TclpGetTime \ - (tclIntStubsPtr->tclpGetTime) /* 77 */ -#endif -#ifndef TclpGetTimeZone -#define TclpGetTimeZone \ - (tclIntStubsPtr->tclpGetTimeZone) /* 78 */ -#endif -/* Slot 79 is reserved */ -/* Slot 80 is reserved */ -#ifndef TclpRealloc -#define TclpRealloc \ - (tclIntStubsPtr->tclpRealloc) /* 81 */ -#endif -/* Slot 82 is reserved */ -/* Slot 83 is reserved */ -/* Slot 84 is reserved */ -/* Slot 85 is reserved */ -/* Slot 86 is reserved */ -/* Slot 87 is reserved */ -#ifndef TclPrecTraceProc -#define TclPrecTraceProc \ - (tclIntStubsPtr->tclPrecTraceProc) /* 88 */ -#endif -#ifndef TclPreventAliasLoop -#define TclPreventAliasLoop \ - (tclIntStubsPtr->tclPreventAliasLoop) /* 89 */ -#endif -/* Slot 90 is reserved */ -#ifndef TclProcCleanupProc -#define TclProcCleanupProc \ - (tclIntStubsPtr->tclProcCleanupProc) /* 91 */ -#endif -#ifndef TclProcCompileProc -#define TclProcCompileProc \ - (tclIntStubsPtr->tclProcCompileProc) /* 92 */ -#endif -#ifndef TclProcDeleteProc -#define TclProcDeleteProc \ - (tclIntStubsPtr->tclProcDeleteProc) /* 93 */ -#endif -#ifndef TclProcInterpProc -#define TclProcInterpProc \ - (tclIntStubsPtr->tclProcInterpProc) /* 94 */ -#endif -/* Slot 95 is reserved */ -#ifndef TclRenameCommand -#define TclRenameCommand \ - (tclIntStubsPtr->tclRenameCommand) /* 96 */ -#endif -#ifndef TclResetShadowedCmdRefs -#define TclResetShadowedCmdRefs \ - (tclIntStubsPtr->tclResetShadowedCmdRefs) /* 97 */ -#endif -#ifndef TclServiceIdle -#define TclServiceIdle \ - (tclIntStubsPtr->tclServiceIdle) /* 98 */ -#endif -/* Slot 99 is reserved */ -/* Slot 100 is reserved */ -#ifndef TclSetPreInitScript -#define TclSetPreInitScript \ - (tclIntStubsPtr->tclSetPreInitScript) /* 101 */ -#endif -#ifndef TclSetupEnv -#define TclSetupEnv \ - (tclIntStubsPtr->tclSetupEnv) /* 102 */ -#endif -#ifndef TclSockGetPort -#define TclSockGetPort \ - (tclIntStubsPtr->tclSockGetPort) /* 103 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclSockMinimumBuffers -#define TclSockMinimumBuffers \ - (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclSockMinimumBuffers -#define TclSockMinimumBuffers \ - (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ -#endif -#endif /* __WIN32__ */ -/* Slot 105 is reserved */ -#ifndef TclStatDeleteProc -#define TclStatDeleteProc \ - (tclIntStubsPtr->tclStatDeleteProc) /* 106 */ -#endif -#ifndef TclStatInsertProc -#define TclStatInsertProc \ - (tclIntStubsPtr->tclStatInsertProc) /* 107 */ -#endif -#ifndef TclTeardownNamespace -#define TclTeardownNamespace \ - (tclIntStubsPtr->tclTeardownNamespace) /* 108 */ -#endif -#ifndef TclUpdateReturnInfo -#define TclUpdateReturnInfo \ - (tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */ -#endif -/* Slot 110 is reserved */ -#ifndef Tcl_AddInterpResolvers -#define Tcl_AddInterpResolvers \ - (tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */ -#endif -#ifndef Tcl_AppendExportList -#define Tcl_AppendExportList \ - (tclIntStubsPtr->tcl_AppendExportList) /* 112 */ -#endif -#ifndef Tcl_CreateNamespace -#define Tcl_CreateNamespace \ - (tclIntStubsPtr->tcl_CreateNamespace) /* 113 */ -#endif -#ifndef Tcl_DeleteNamespace -#define Tcl_DeleteNamespace \ - (tclIntStubsPtr->tcl_DeleteNamespace) /* 114 */ -#endif -#ifndef Tcl_Export -#define Tcl_Export \ - (tclIntStubsPtr->tcl_Export) /* 115 */ -#endif -#ifndef Tcl_FindCommand -#define Tcl_FindCommand \ - (tclIntStubsPtr->tcl_FindCommand) /* 116 */ -#endif -#ifndef Tcl_FindNamespace -#define Tcl_FindNamespace \ - (tclIntStubsPtr->tcl_FindNamespace) /* 117 */ -#endif -#ifndef Tcl_GetInterpResolvers -#define Tcl_GetInterpResolvers \ - (tclIntStubsPtr->tcl_GetInterpResolvers) /* 118 */ -#endif -#ifndef Tcl_GetNamespaceResolvers -#define Tcl_GetNamespaceResolvers \ - (tclIntStubsPtr->tcl_GetNamespaceResolvers) /* 119 */ -#endif -#ifndef Tcl_FindNamespaceVar -#define Tcl_FindNamespaceVar \ - (tclIntStubsPtr->tcl_FindNamespaceVar) /* 120 */ -#endif -#ifndef Tcl_ForgetImport -#define Tcl_ForgetImport \ - (tclIntStubsPtr->tcl_ForgetImport) /* 121 */ -#endif -#ifndef Tcl_GetCommandFromObj -#define Tcl_GetCommandFromObj \ - (tclIntStubsPtr->tcl_GetCommandFromObj) /* 122 */ -#endif -#ifndef Tcl_GetCommandFullName -#define Tcl_GetCommandFullName \ - (tclIntStubsPtr->tcl_GetCommandFullName) /* 123 */ -#endif -#ifndef Tcl_GetCurrentNamespace -#define Tcl_GetCurrentNamespace \ - (tclIntStubsPtr->tcl_GetCurrentNamespace) /* 124 */ -#endif -#ifndef Tcl_GetGlobalNamespace -#define Tcl_GetGlobalNamespace \ - (tclIntStubsPtr->tcl_GetGlobalNamespace) /* 125 */ -#endif -#ifndef Tcl_GetVariableFullName -#define Tcl_GetVariableFullName \ - (tclIntStubsPtr->tcl_GetVariableFullName) /* 126 */ -#endif -#ifndef Tcl_Import -#define Tcl_Import \ - (tclIntStubsPtr->tcl_Import) /* 127 */ -#endif -#ifndef Tcl_PopCallFrame -#define Tcl_PopCallFrame \ - (tclIntStubsPtr->tcl_PopCallFrame) /* 128 */ -#endif -#ifndef Tcl_PushCallFrame -#define Tcl_PushCallFrame \ - (tclIntStubsPtr->tcl_PushCallFrame) /* 129 */ -#endif -#ifndef Tcl_RemoveInterpResolvers -#define Tcl_RemoveInterpResolvers \ - (tclIntStubsPtr->tcl_RemoveInterpResolvers) /* 130 */ -#endif -#ifndef Tcl_SetNamespaceResolvers -#define Tcl_SetNamespaceResolvers \ - (tclIntStubsPtr->tcl_SetNamespaceResolvers) /* 131 */ -#endif -#ifndef TclpHasSockets -#define TclpHasSockets \ - (tclIntStubsPtr->tclpHasSockets) /* 132 */ -#endif -#ifndef TclpGetDate -#define TclpGetDate \ - (tclIntStubsPtr->tclpGetDate) /* 133 */ -#endif -#ifndef TclpStrftime -#define TclpStrftime \ - (tclIntStubsPtr->tclpStrftime) /* 134 */ -#endif -#ifndef TclpCheckStackSpace -#define TclpCheckStackSpace \ - (tclIntStubsPtr->tclpCheckStackSpace) /* 135 */ -#endif -/* Slot 136 is reserved */ -/* Slot 137 is reserved */ -#ifndef TclGetEnv -#define TclGetEnv \ - (tclIntStubsPtr->tclGetEnv) /* 138 */ -#endif -/* Slot 139 is reserved */ -#ifndef TclLooksLikeInt -#define TclLooksLikeInt \ - (tclIntStubsPtr->tclLooksLikeInt) /* 140 */ -#endif -#ifndef TclpGetCwd -#define TclpGetCwd \ - (tclIntStubsPtr->tclpGetCwd) /* 141 */ -#endif -#ifndef TclSetByteCodeFromAny -#define TclSetByteCodeFromAny \ - (tclIntStubsPtr->tclSetByteCodeFromAny) /* 142 */ -#endif -#ifndef TclAddLiteralObj -#define TclAddLiteralObj \ - (tclIntStubsPtr->tclAddLiteralObj) /* 143 */ -#endif -#ifndef TclHideLiteral -#define TclHideLiteral \ - (tclIntStubsPtr->tclHideLiteral) /* 144 */ -#endif -#ifndef TclGetAuxDataType -#define TclGetAuxDataType \ - (tclIntStubsPtr->tclGetAuxDataType) /* 145 */ -#endif -#ifndef TclHandleCreate -#define TclHandleCreate \ - (tclIntStubsPtr->tclHandleCreate) /* 146 */ -#endif -#ifndef TclHandleFree -#define TclHandleFree \ - (tclIntStubsPtr->tclHandleFree) /* 147 */ -#endif -#ifndef TclHandlePreserve -#define TclHandlePreserve \ - (tclIntStubsPtr->tclHandlePreserve) /* 148 */ -#endif -#ifndef TclHandleRelease -#define TclHandleRelease \ - (tclIntStubsPtr->tclHandleRelease) /* 149 */ -#endif -#ifndef TclRegAbout -#define TclRegAbout \ - (tclIntStubsPtr->tclRegAbout) /* 150 */ -#endif -#ifndef TclRegExpRangeUniChar -#define TclRegExpRangeUniChar \ - (tclIntStubsPtr->tclRegExpRangeUniChar) /* 151 */ -#endif -#ifndef TclSetLibraryPath -#define TclSetLibraryPath \ - (tclIntStubsPtr->tclSetLibraryPath) /* 152 */ -#endif -#ifndef TclGetLibraryPath -#define TclGetLibraryPath \ - (tclIntStubsPtr->tclGetLibraryPath) /* 153 */ -#endif -/* Slot 154 is reserved */ -/* Slot 155 is reserved */ -#ifndef TclRegError -#define TclRegError \ - (tclIntStubsPtr->tclRegError) /* 156 */ -#endif -#ifndef TclVarTraceExists -#define TclVarTraceExists \ - (tclIntStubsPtr->tclVarTraceExists) /* 157 */ -#endif -#ifndef TclSetStartupScriptFileName -#define TclSetStartupScriptFileName \ - (tclIntStubsPtr->tclSetStartupScriptFileName) /* 158 */ -#endif -#ifndef TclGetStartupScriptFileName -#define TclGetStartupScriptFileName \ - (tclIntStubsPtr->tclGetStartupScriptFileName) /* 159 */ -#endif -/* Slot 160 is reserved */ -#ifndef TclChannelTransform -#define TclChannelTransform \ - (tclIntStubsPtr->tclChannelTransform) /* 161 */ -#endif -#ifndef TclChannelEventScriptInvoker -#define TclChannelEventScriptInvoker \ - (tclIntStubsPtr->tclChannelEventScriptInvoker) /* 162 */ -#endif -#ifndef TclGetInstructionTable -#define TclGetInstructionTable \ - (tclIntStubsPtr->tclGetInstructionTable) /* 163 */ -#endif -#ifndef TclExpandCodeArray -#define TclExpandCodeArray \ - (tclIntStubsPtr->tclExpandCodeArray) /* 164 */ -#endif -#ifndef TclpSetInitialEncodings -#define TclpSetInitialEncodings \ - (tclIntStubsPtr->tclpSetInitialEncodings) /* 165 */ -#endif -#ifndef TclListObjSetElement -#define TclListObjSetElement \ - (tclIntStubsPtr->tclListObjSetElement) /* 166 */ -#endif -#ifndef TclSetStartupScriptPath -#define TclSetStartupScriptPath \ - (tclIntStubsPtr->tclSetStartupScriptPath) /* 167 */ -#endif -#ifndef TclGetStartupScriptPath -#define TclGetStartupScriptPath \ - (tclIntStubsPtr->tclGetStartupScriptPath) /* 168 */ -#endif -#ifndef TclpUtfNcmp2 -#define TclpUtfNcmp2 \ - (tclIntStubsPtr->tclpUtfNcmp2) /* 169 */ -#endif -#ifndef TclCheckInterpTraces -#define TclCheckInterpTraces \ - (tclIntStubsPtr->tclCheckInterpTraces) /* 170 */ -#endif -#ifndef TclCheckExecutionTraces -#define TclCheckExecutionTraces \ - (tclIntStubsPtr->tclCheckExecutionTraces) /* 171 */ -#endif -#ifndef TclInThreadExit -#define TclInThreadExit \ - (tclIntStubsPtr->tclInThreadExit) /* 172 */ -#endif -#ifndef TclUniCharMatch -#define TclUniCharMatch \ - (tclIntStubsPtr->tclUniCharMatch) /* 173 */ -#endif -/* Slot 174 is reserved */ -/* Slot 175 is reserved */ -/* Slot 176 is reserved */ -/* Slot 177 is reserved */ -/* Slot 178 is reserved */ -/* Slot 179 is reserved */ -/* Slot 180 is reserved */ -/* Slot 181 is reserved */ -#ifndef TclpLocaltime -#define TclpLocaltime \ - (tclIntStubsPtr->tclpLocaltime) /* 182 */ -#endif -#ifndef TclpGmtime -#define TclpGmtime \ - (tclIntStubsPtr->tclpGmtime) /* 183 */ -#endif - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLINTDECLS */ +/* + * tclIntDecls.h -- + * + * This file contains the declarations for all unsupported + * functions that are exported by the Tcl library. These + * interfaces are not guaranteed to remain the same between + * versions. Use at your own risk. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.4 2004/06/05 17:25:40 kennykb Exp $ + */ + +#ifndef _TCLINTDECLS +#define _TCLINTDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tclInt.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +/* Slot 0 is reserved */ +/* 1 */ +EXTERN int TclAccessDeleteProc _ANSI_ARGS_(( + TclAccessProc_ * proc)); +/* 2 */ +EXTERN int TclAccessInsertProc _ANSI_ARGS_(( + TclAccessProc_ * proc)); +/* 3 */ +EXTERN void TclAllocateFreeObjects _ANSI_ARGS_((void)); +/* Slot 4 is reserved */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 5 */ +EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, + int numPids, Tcl_Pid * pidPtr, + Tcl_Channel errorChan)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 5 */ +EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, + int numPids, Tcl_Pid * pidPtr, + Tcl_Channel errorChan)); +#endif /* __WIN32__ */ +/* 6 */ +EXTERN void TclCleanupCommand _ANSI_ARGS_((Command * cmdPtr)); +/* 7 */ +EXTERN int TclCopyAndCollapse _ANSI_ARGS_((int count, + CONST char * src, char * dst)); +/* 8 */ +EXTERN int TclCopyChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel inChan, Tcl_Channel outChan, + int toRead, Tcl_Obj * cmdPtr)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 9 */ +EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, + TclFile * outPipePtr, TclFile * errFilePtr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 9 */ +EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, + TclFile * outPipePtr, TclFile * errFilePtr)); +#endif /* __WIN32__ */ +/* 10 */ +EXTERN int TclCreateProc _ANSI_ARGS_((Tcl_Interp * interp, + Namespace * nsPtr, CONST char * procName, + Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, + Proc ** procPtrPtr)); +/* 11 */ +EXTERN void TclDeleteCompiledLocalVars _ANSI_ARGS_(( + Interp * iPtr, CallFrame * framePtr)); +/* 12 */ +EXTERN void TclDeleteVars _ANSI_ARGS_((Interp * iPtr, + Tcl_HashTable * tablePtr)); +/* 13 */ +EXTERN int TclDoGlob _ANSI_ARGS_((Tcl_Interp * interp, + char * separators, Tcl_DString * headPtr, + char * tail, Tcl_GlobTypeData * types)); +/* 14 */ +EXTERN void TclDumpMemoryInfo _ANSI_ARGS_((FILE * outFile)); +/* Slot 15 is reserved */ +/* 16 */ +EXTERN void TclExprFloatError _ANSI_ARGS_((Tcl_Interp * interp, + double value)); +/* Slot 17 is reserved */ +/* Slot 18 is reserved */ +/* Slot 19 is reserved */ +/* Slot 20 is reserved */ +/* Slot 21 is reserved */ +/* 22 */ +EXTERN int TclFindElement _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * listStr, int listLength, + CONST char ** elementPtr, + CONST char ** nextPtr, int * sizePtr, + int * bracePtr)); +/* 23 */ +EXTERN Proc * TclFindProc _ANSI_ARGS_((Interp * iPtr, + CONST char * procName)); +/* 24 */ +EXTERN int TclFormatInt _ANSI_ARGS_((char * buffer, long n)); +/* 25 */ +EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp * iPtr)); +/* Slot 26 is reserved */ +/* 27 */ +EXTERN int TclGetDate _ANSI_ARGS_((char * p, unsigned long now, + long zone, unsigned long * timePtr)); +/* 28 */ +EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type)); +/* Slot 29 is reserved */ +/* Slot 30 is reserved */ +/* 31 */ +EXTERN char * TclGetExtension _ANSI_ARGS_((char * name)); +/* 32 */ +EXTERN int TclGetFrame _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CallFrame ** framePtrPtr)); +/* 33 */ +EXTERN TclCmdProcType TclGetInterpProc _ANSI_ARGS_((void)); +/* 34 */ +EXTERN int TclGetIntForIndex _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int endValue, + int * indexPtr)); +/* Slot 35 is reserved */ +/* 36 */ +EXTERN int TclGetLong _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, long * longPtr)); +/* 37 */ +EXTERN int TclGetLoadedPackages _ANSI_ARGS_(( + Tcl_Interp * interp, char * targetName)); +/* 38 */ +EXTERN int TclGetNamespaceForQualName _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * qualName, + Namespace * cxtNsPtr, int flags, + Namespace ** nsPtrPtr, + Namespace ** altNsPtrPtr, + Namespace ** actualCxtPtrPtr, + CONST char ** simpleNamePtr)); +/* 39 */ +EXTERN TclObjCmdProcType TclGetObjInterpProc _ANSI_ARGS_((void)); +/* 40 */ +EXTERN int TclGetOpenMode _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * seekFlagPtr)); +/* 41 */ +EXTERN Tcl_Command TclGetOriginalCommand _ANSI_ARGS_(( + Tcl_Command command)); +/* 42 */ +EXTERN char * TclpGetUserHome _ANSI_ARGS_((CONST char * name, + Tcl_DString * bufferPtr)); +/* 43 */ +EXTERN int TclGlobalInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST84 char ** argv, int flags)); +/* 44 */ +EXTERN int TclGuessPackageName _ANSI_ARGS_(( + CONST char * fileName, Tcl_DString * bufPtr)); +/* 45 */ +EXTERN int TclHideUnsafeCommands _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 46 */ +EXTERN int TclInExit _ANSI_ARGS_((void)); +/* Slot 47 is reserved */ +/* Slot 48 is reserved */ +/* 49 */ +EXTERN Tcl_Obj * TclIncrVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + long incrAmount, int part1NotParsed)); +/* 50 */ +EXTERN void TclInitCompiledLocals _ANSI_ARGS_(( + Tcl_Interp * interp, CallFrame * framePtr, + Namespace * nsPtr)); +/* 51 */ +EXTERN int TclInterpInit _ANSI_ARGS_((Tcl_Interp * interp)); +/* 52 */ +EXTERN int TclInvoke _ANSI_ARGS_((Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +/* 53 */ +EXTERN int TclInvokeObjectCommand _ANSI_ARGS_(( + ClientData clientData, Tcl_Interp * interp, + int argc, CONST84 char ** argv)); +/* 54 */ +EXTERN int TclInvokeStringCommand _ANSI_ARGS_(( + ClientData clientData, Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[])); +/* 55 */ +EXTERN Proc * TclIsProc _ANSI_ARGS_((Command * cmdPtr)); +/* Slot 56 is reserved */ +/* Slot 57 is reserved */ +/* 58 */ +EXTERN Var * TclLookupVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, CONST char * msg, int createPart1, + int createPart2, Var ** arrayPtrPtr)); +/* Slot 59 is reserved */ +/* 60 */ +EXTERN int TclNeedSpace _ANSI_ARGS_((CONST char * start, + CONST char * end)); +/* 61 */ +EXTERN Tcl_Obj * TclNewProcBodyObj _ANSI_ARGS_((Proc * procPtr)); +/* 62 */ +EXTERN int TclObjCommandComplete _ANSI_ARGS_((Tcl_Obj * cmdPtr)); +/* 63 */ +EXTERN int TclObjInterpProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int objc, + Tcl_Obj *CONST objv[])); +/* 64 */ +EXTERN int TclObjInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 65 */ +EXTERN int TclObjInvokeGlobal _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 66 */ +EXTERN int TclOpenFileChannelDeleteProc _ANSI_ARGS_(( + TclOpenFileChannelProc_ * proc)); +/* 67 */ +EXTERN int TclOpenFileChannelInsertProc _ANSI_ARGS_(( + TclOpenFileChannelProc_ * proc)); +/* Slot 68 is reserved */ +/* 69 */ +EXTERN char * TclpAlloc _ANSI_ARGS_((unsigned int size)); +/* Slot 70 is reserved */ +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +/* 74 */ +EXTERN void TclpFree _ANSI_ARGS_((char * ptr)); +/* 75 */ +EXTERN unsigned long TclpGetClicks _ANSI_ARGS_((void)); +/* 76 */ +EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void)); +/* 77 */ +EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time * time)); +/* 78 */ +EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time)); +/* Slot 79 is reserved */ +/* Slot 80 is reserved */ +/* 81 */ +EXTERN char * TclpRealloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* Slot 82 is reserved */ +/* Slot 83 is reserved */ +/* Slot 84 is reserved */ +/* Slot 85 is reserved */ +/* Slot 86 is reserved */ +/* Slot 87 is reserved */ +/* 88 */ +EXTERN char * TclPrecTraceProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, CONST char * name1, + CONST char * name2, int flags)); +/* 89 */ +EXTERN int TclPreventAliasLoop _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Interp * cmdInterp, Tcl_Command cmd)); +/* Slot 90 is reserved */ +/* 91 */ +EXTERN void TclProcCleanupProc _ANSI_ARGS_((Proc * procPtr)); +/* 92 */ +EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp * interp, + Proc * procPtr, Tcl_Obj * bodyPtr, + Namespace * nsPtr, CONST char * description, + CONST char * procName)); +/* 93 */ +EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData)); +/* 94 */ +EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int argc, + CONST84 char ** argv)); +/* Slot 95 is reserved */ +/* 96 */ +EXTERN int TclRenameCommand _ANSI_ARGS_((Tcl_Interp * interp, + char * oldName, char * newName)); +/* 97 */ +EXTERN void TclResetShadowedCmdRefs _ANSI_ARGS_(( + Tcl_Interp * interp, Command * newCmdPtr)); +/* 98 */ +EXTERN int TclServiceIdle _ANSI_ARGS_((void)); +/* Slot 99 is reserved */ +/* Slot 100 is reserved */ +/* 101 */ +EXTERN char * TclSetPreInitScript _ANSI_ARGS_((char * string)); +/* 102 */ +EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp * interp)); +/* 103 */ +EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp * interp, + char * str, char * proto, int * portPtr)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 104 */ +EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, + int size)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 104 */ +EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, + int size)); +#endif /* __WIN32__ */ +/* Slot 105 is reserved */ +/* 106 */ +EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ * proc)); +/* 107 */ +EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ * proc)); +/* 108 */ +EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace * nsPtr)); +/* 109 */ +EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp * iPtr)); +/* Slot 110 is reserved */ +/* 111 */ +EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_ResolveCmdProc * cmdProc, + Tcl_ResolveVarProc * varProc, + Tcl_ResolveCompiledVarProc * compiledVarProc)); +/* 112 */ +EXTERN int Tcl_AppendExportList _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Namespace * nsPtr, + Tcl_Obj * objPtr)); +/* 113 */ +EXTERN Tcl_Namespace * Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, ClientData clientData, + Tcl_NamespaceDeleteProc * deleteProc)); +/* 114 */ +EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_(( + Tcl_Namespace * nsPtr)); +/* 115 */ +EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern, + int resetListFirst)); +/* 116 */ +EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 117 */ +EXTERN Tcl_Namespace * Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 118 */ +EXTERN int Tcl_GetInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_ResolverInfo * resInfo)); +/* 119 */ +EXTERN int Tcl_GetNamespaceResolvers _ANSI_ARGS_(( + Tcl_Namespace * namespacePtr, + Tcl_ResolverInfo * resInfo)); +/* 120 */ +EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 121 */ +EXTERN int Tcl_ForgetImport _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern)); +/* 122 */ +EXTERN Tcl_Command Tcl_GetCommandFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr)); +/* 123 */ +EXTERN void Tcl_GetCommandFullName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command, + Tcl_Obj * objPtr)); +/* 124 */ +EXTERN Tcl_Namespace * Tcl_GetCurrentNamespace _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 125 */ +EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 126 */ +EXTERN void Tcl_GetVariableFullName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Var variable, + Tcl_Obj * objPtr)); +/* 127 */ +EXTERN int Tcl_Import _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern, + int allowOverwrite)); +/* 128 */ +EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp* interp)); +/* 129 */ +EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_CallFrame * framePtr, + Tcl_Namespace * nsPtr, int isProcCallFrame)); +/* 130 */ +EXTERN int Tcl_RemoveInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name)); +/* 131 */ +EXTERN void Tcl_SetNamespaceResolvers _ANSI_ARGS_(( + Tcl_Namespace * namespacePtr, + Tcl_ResolveCmdProc * cmdProc, + Tcl_ResolveVarProc * varProc, + Tcl_ResolveCompiledVarProc * compiledVarProc)); +/* 132 */ +EXTERN int TclpHasSockets _ANSI_ARGS_((Tcl_Interp * interp)); +/* 133 */ +EXTERN struct tm * TclpGetDate _ANSI_ARGS_((TclpTime_t time, int useGMT)); +/* 134 */ +EXTERN size_t TclpStrftime _ANSI_ARGS_((char * s, size_t maxsize, + CONST char * format, CONST struct tm * t, + int useGMT)); +/* 135 */ +EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void)); +/* Slot 136 is reserved */ +/* Slot 137 is reserved */ +/* 138 */ +EXTERN CONST84_RETURN char * TclGetEnv _ANSI_ARGS_((CONST char * name, + Tcl_DString * valuePtr)); +/* Slot 139 is reserved */ +/* 140 */ +EXTERN int TclLooksLikeInt _ANSI_ARGS_((CONST char * bytes, + int length)); +/* 141 */ +EXTERN CONST84_RETURN char * TclpGetCwd _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * cwdPtr)); +/* 142 */ +EXTERN int TclSetByteCodeFromAny _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + CompileHookProc * hookProc, + ClientData clientData)); +/* 143 */ +EXTERN int TclAddLiteralObj _ANSI_ARGS_(( + struct CompileEnv * envPtr, Tcl_Obj * objPtr, + LiteralEntry ** litPtrPtr)); +/* 144 */ +EXTERN void TclHideLiteral _ANSI_ARGS_((Tcl_Interp * interp, + struct CompileEnv * envPtr, int index)); +/* 145 */ +EXTERN struct AuxDataType * TclGetAuxDataType _ANSI_ARGS_((char * typeName)); +/* 146 */ +EXTERN TclHandle TclHandleCreate _ANSI_ARGS_((VOID * ptr)); +/* 147 */ +EXTERN void TclHandleFree _ANSI_ARGS_((TclHandle handle)); +/* 148 */ +EXTERN TclHandle TclHandlePreserve _ANSI_ARGS_((TclHandle handle)); +/* 149 */ +EXTERN void TclHandleRelease _ANSI_ARGS_((TclHandle handle)); +/* 150 */ +EXTERN int TclRegAbout _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp re)); +/* 151 */ +EXTERN void TclRegExpRangeUniChar _ANSI_ARGS_((Tcl_RegExp re, + int index, int * startPtr, int * endPtr)); +/* 152 */ +EXTERN void TclSetLibraryPath _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 153 */ +EXTERN Tcl_Obj * TclGetLibraryPath _ANSI_ARGS_((void)); +/* Slot 154 is reserved */ +/* Slot 155 is reserved */ +/* 156 */ +EXTERN void TclRegError _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * msg, int status)); +/* 157 */ +EXTERN Var * TclVarTraceExists _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 158 */ +EXTERN void TclSetStartupScriptFileName _ANSI_ARGS_(( + CONST char * filename)); +/* 159 */ +EXTERN CONST84_RETURN char * TclGetStartupScriptFileName _ANSI_ARGS_((void)); +/* Slot 160 is reserved */ +/* 161 */ +EXTERN int TclChannelTransform _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); +/* 162 */ +EXTERN void TclChannelEventScriptInvoker _ANSI_ARGS_(( + ClientData clientData, int flags)); +/* 163 */ +EXTERN void * TclGetInstructionTable _ANSI_ARGS_((void)); +/* 164 */ +EXTERN void TclExpandCodeArray _ANSI_ARGS_((void * envPtr)); +/* 165 */ +EXTERN void TclpSetInitialEncodings _ANSI_ARGS_((void)); +/* 166 */ +EXTERN int TclListObjSetElement _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + int index, Tcl_Obj * valuePtr)); +/* 167 */ +EXTERN void TclSetStartupScriptPath _ANSI_ARGS_(( + Tcl_Obj * pathPtr)); +/* 168 */ +EXTERN Tcl_Obj * TclGetStartupScriptPath _ANSI_ARGS_((void)); +/* 169 */ +EXTERN int TclpUtfNcmp2 _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 170 */ +EXTERN int TclCheckInterpTraces _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * command, + int numChars, Command * cmdPtr, int result, + int traceFlags, int objc, + Tcl_Obj *CONST objv[])); +/* 171 */ +EXTERN int TclCheckExecutionTraces _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * command, + int numChars, Command * cmdPtr, int result, + int traceFlags, int objc, + Tcl_Obj *CONST objv[])); +/* 172 */ +EXTERN int TclInThreadExit _ANSI_ARGS_((void)); +/* 173 */ +EXTERN int TclUniCharMatch _ANSI_ARGS_(( + CONST Tcl_UniChar * string, int strLen, + CONST Tcl_UniChar * pattern, int ptnLen, + int nocase)); +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +/* 182 */ +EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t clock)); +/* 183 */ +EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t clock)); + +typedef struct TclIntStubs { + int magic; + struct TclIntStubHooks *hooks; + + void *reserved0; + int (*tclAccessDeleteProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 1 */ + int (*tclAccessInsertProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 2 */ + void (*tclAllocateFreeObjects) _ANSI_ARGS_((void)); /* 3 */ + void *reserved4; +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved5; +#endif /* MAC_TCL */ + void (*tclCleanupCommand) _ANSI_ARGS_((Command * cmdPtr)); /* 6 */ + int (*tclCopyAndCollapse) _ANSI_ARGS_((int count, CONST char * src, char * dst)); /* 7 */ + int (*tclCopyChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel inChan, Tcl_Channel outChan, int toRead, Tcl_Obj * cmdPtr)); /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved9; +#endif /* MAC_TCL */ + int (*tclCreateProc) _ANSI_ARGS_((Tcl_Interp * interp, Namespace * nsPtr, CONST char * procName, Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, Proc ** procPtrPtr)); /* 10 */ + void (*tclDeleteCompiledLocalVars) _ANSI_ARGS_((Interp * iPtr, CallFrame * framePtr)); /* 11 */ + void (*tclDeleteVars) _ANSI_ARGS_((Interp * iPtr, Tcl_HashTable * tablePtr)); /* 12 */ + int (*tclDoGlob) _ANSI_ARGS_((Tcl_Interp * interp, char * separators, Tcl_DString * headPtr, char * tail, Tcl_GlobTypeData * types)); /* 13 */ + void (*tclDumpMemoryInfo) _ANSI_ARGS_((FILE * outFile)); /* 14 */ + void *reserved15; + void (*tclExprFloatError) _ANSI_ARGS_((Tcl_Interp * interp, double value)); /* 16 */ + void *reserved17; + void *reserved18; + void *reserved19; + void *reserved20; + void *reserved21; + int (*tclFindElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int listLength, CONST char ** elementPtr, CONST char ** nextPtr, int * sizePtr, int * bracePtr)); /* 22 */ + Proc * (*tclFindProc) _ANSI_ARGS_((Interp * iPtr, CONST char * procName)); /* 23 */ + int (*tclFormatInt) _ANSI_ARGS_((char * buffer, long n)); /* 24 */ + void (*tclFreePackageInfo) _ANSI_ARGS_((Interp * iPtr)); /* 25 */ + void *reserved26; + int (*tclGetDate) _ANSI_ARGS_((char * p, unsigned long now, long zone, unsigned long * timePtr)); /* 27 */ + Tcl_Channel (*tclpGetDefaultStdChannel) _ANSI_ARGS_((int type)); /* 28 */ + void *reserved29; + void *reserved30; + char * (*tclGetExtension) _ANSI_ARGS_((char * name)); /* 31 */ + int (*tclGetFrame) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CallFrame ** framePtrPtr)); /* 32 */ + TclCmdProcType (*tclGetInterpProc) _ANSI_ARGS_((void)); /* 33 */ + int (*tclGetIntForIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int endValue, int * indexPtr)); /* 34 */ + void *reserved35; + int (*tclGetLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * longPtr)); /* 36 */ + int (*tclGetLoadedPackages) _ANSI_ARGS_((Tcl_Interp * interp, char * targetName)); /* 37 */ + int (*tclGetNamespaceForQualName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * qualName, Namespace * cxtNsPtr, int flags, Namespace ** nsPtrPtr, Namespace ** altNsPtrPtr, Namespace ** actualCxtPtrPtr, CONST char ** simpleNamePtr)); /* 38 */ + TclObjCmdProcType (*tclGetObjInterpProc) _ANSI_ARGS_((void)); /* 39 */ + int (*tclGetOpenMode) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * seekFlagPtr)); /* 40 */ + Tcl_Command (*tclGetOriginalCommand) _ANSI_ARGS_((Tcl_Command command)); /* 41 */ + char * (*tclpGetUserHome) _ANSI_ARGS_((CONST char * name, Tcl_DString * bufferPtr)); /* 42 */ + int (*tclGlobalInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 43 */ + int (*tclGuessPackageName) _ANSI_ARGS_((CONST char * fileName, Tcl_DString * bufPtr)); /* 44 */ + int (*tclHideUnsafeCommands) _ANSI_ARGS_((Tcl_Interp * interp)); /* 45 */ + int (*tclInExit) _ANSI_ARGS_((void)); /* 46 */ + void *reserved47; + void *reserved48; + Tcl_Obj * (*tclIncrVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, long incrAmount, int part1NotParsed)); /* 49 */ + void (*tclInitCompiledLocals) _ANSI_ARGS_((Tcl_Interp * interp, CallFrame * framePtr, Namespace * nsPtr)); /* 50 */ + int (*tclInterpInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 51 */ + int (*tclInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 52 */ + int (*tclInvokeObjectCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 53 */ + int (*tclInvokeStringCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 54 */ + Proc * (*tclIsProc) _ANSI_ARGS_((Command * cmdPtr)); /* 55 */ + void *reserved56; + void *reserved57; + Var * (*tclLookupVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, CONST char * msg, int createPart1, int createPart2, Var ** arrayPtrPtr)); /* 58 */ + void *reserved59; + int (*tclNeedSpace) _ANSI_ARGS_((CONST char * start, CONST char * end)); /* 60 */ + Tcl_Obj * (*tclNewProcBodyObj) _ANSI_ARGS_((Proc * procPtr)); /* 61 */ + int (*tclObjCommandComplete) _ANSI_ARGS_((Tcl_Obj * cmdPtr)); /* 62 */ + int (*tclObjInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 63 */ + int (*tclObjInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 64 */ + int (*tclObjInvokeGlobal) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 65 */ + int (*tclOpenFileChannelDeleteProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 66 */ + int (*tclOpenFileChannelInsertProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 67 */ + void *reserved68; + char * (*tclpAlloc) _ANSI_ARGS_((unsigned int size)); /* 69 */ + void *reserved70; + void *reserved71; + void *reserved72; + void *reserved73; + void (*tclpFree) _ANSI_ARGS_((char * ptr)); /* 74 */ + unsigned long (*tclpGetClicks) _ANSI_ARGS_((void)); /* 75 */ + unsigned long (*tclpGetSeconds) _ANSI_ARGS_((void)); /* 76 */ + void (*tclpGetTime) _ANSI_ARGS_((Tcl_Time * time)); /* 77 */ + int (*tclpGetTimeZone) _ANSI_ARGS_((unsigned long time)); /* 78 */ + void *reserved79; + void *reserved80; + char * (*tclpRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 81 */ + void *reserved82; + void *reserved83; + void *reserved84; + void *reserved85; + void *reserved86; + void *reserved87; + char * (*tclPrecTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, CONST char * name1, CONST char * name2, int flags)); /* 88 */ + int (*tclPreventAliasLoop) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Interp * cmdInterp, Tcl_Command cmd)); /* 89 */ + void *reserved90; + void (*tclProcCleanupProc) _ANSI_ARGS_((Proc * procPtr)); /* 91 */ + int (*tclProcCompileProc) _ANSI_ARGS_((Tcl_Interp * interp, Proc * procPtr, Tcl_Obj * bodyPtr, Namespace * nsPtr, CONST char * description, CONST char * procName)); /* 92 */ + void (*tclProcDeleteProc) _ANSI_ARGS_((ClientData clientData)); /* 93 */ + int (*tclProcInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 94 */ + void *reserved95; + int (*tclRenameCommand) _ANSI_ARGS_((Tcl_Interp * interp, char * oldName, char * newName)); /* 96 */ + void (*tclResetShadowedCmdRefs) _ANSI_ARGS_((Tcl_Interp * interp, Command * newCmdPtr)); /* 97 */ + int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ + void *reserved99; + void *reserved100; + char * (*tclSetPreInitScript) _ANSI_ARGS_((char * string)); /* 101 */ + void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp * interp)); /* 102 */ + int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp * interp, char * str, char * proto, int * portPtr)); /* 103 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved104; +#endif /* MAC_TCL */ + void *reserved105; + int (*tclStatDeleteProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 106 */ + int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 107 */ + void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace * nsPtr)); /* 108 */ + int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp * iPtr)); /* 109 */ + void *reserved110; + void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 111 */ + int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, Tcl_Obj * objPtr)); /* 112 */ + Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, ClientData clientData, Tcl_NamespaceDeleteProc * deleteProc)); /* 113 */ + void (*tcl_DeleteNamespace) _ANSI_ARGS_((Tcl_Namespace * nsPtr)); /* 114 */ + int (*tcl_Export) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int resetListFirst)); /* 115 */ + Tcl_Command (*tcl_FindCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 116 */ + Tcl_Namespace * (*tcl_FindNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 117 */ + int (*tcl_GetInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolverInfo * resInfo)); /* 118 */ + int (*tcl_GetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolverInfo * resInfo)); /* 119 */ + Tcl_Var (*tcl_FindNamespaceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 120 */ + int (*tcl_ForgetImport) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern)); /* 121 */ + Tcl_Command (*tcl_GetCommandFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 122 */ + void (*tcl_GetCommandFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command, Tcl_Obj * objPtr)); /* 123 */ + Tcl_Namespace * (*tcl_GetCurrentNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 124 */ + Tcl_Namespace * (*tcl_GetGlobalNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 125 */ + void (*tcl_GetVariableFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Var variable, Tcl_Obj * objPtr)); /* 126 */ + int (*tcl_Import) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int allowOverwrite)); /* 127 */ + void (*tcl_PopCallFrame) _ANSI_ARGS_((Tcl_Interp* interp)); /* 128 */ + int (*tcl_PushCallFrame) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_CallFrame * framePtr, Tcl_Namespace * nsPtr, int isProcCallFrame)); /* 129 */ + int (*tcl_RemoveInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 130 */ + void (*tcl_SetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 131 */ + int (*tclpHasSockets) _ANSI_ARGS_((Tcl_Interp * interp)); /* 132 */ + struct tm * (*tclpGetDate) _ANSI_ARGS_((TclpTime_t time, int useGMT)); /* 133 */ + size_t (*tclpStrftime) _ANSI_ARGS_((char * s, size_t maxsize, CONST char * format, CONST struct tm * t, int useGMT)); /* 134 */ + int (*tclpCheckStackSpace) _ANSI_ARGS_((void)); /* 135 */ + void *reserved136; + void *reserved137; + CONST84_RETURN char * (*tclGetEnv) _ANSI_ARGS_((CONST char * name, Tcl_DString * valuePtr)); /* 138 */ + void *reserved139; + int (*tclLooksLikeInt) _ANSI_ARGS_((CONST char * bytes, int length)); /* 140 */ + CONST84_RETURN char * (*tclpGetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 141 */ + int (*tclSetByteCodeFromAny) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CompileHookProc * hookProc, ClientData clientData)); /* 142 */ + int (*tclAddLiteralObj) _ANSI_ARGS_((struct CompileEnv * envPtr, Tcl_Obj * objPtr, LiteralEntry ** litPtrPtr)); /* 143 */ + void (*tclHideLiteral) _ANSI_ARGS_((Tcl_Interp * interp, struct CompileEnv * envPtr, int index)); /* 144 */ + struct AuxDataType * (*tclGetAuxDataType) _ANSI_ARGS_((char * typeName)); /* 145 */ + TclHandle (*tclHandleCreate) _ANSI_ARGS_((VOID * ptr)); /* 146 */ + void (*tclHandleFree) _ANSI_ARGS_((TclHandle handle)); /* 147 */ + TclHandle (*tclHandlePreserve) _ANSI_ARGS_((TclHandle handle)); /* 148 */ + void (*tclHandleRelease) _ANSI_ARGS_((TclHandle handle)); /* 149 */ + int (*tclRegAbout) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp re)); /* 150 */ + void (*tclRegExpRangeUniChar) _ANSI_ARGS_((Tcl_RegExp re, int index, int * startPtr, int * endPtr)); /* 151 */ + void (*tclSetLibraryPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 152 */ + Tcl_Obj * (*tclGetLibraryPath) _ANSI_ARGS_((void)); /* 153 */ + void *reserved154; + void *reserved155; + void (*tclRegError) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * msg, int status)); /* 156 */ + Var * (*tclVarTraceExists) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 157 */ + void (*tclSetStartupScriptFileName) _ANSI_ARGS_((CONST char * filename)); /* 158 */ + CONST84_RETURN char * (*tclGetStartupScriptFileName) _ANSI_ARGS_((void)); /* 159 */ + void *reserved160; + int (*tclChannelTransform) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); /* 161 */ + void (*tclChannelEventScriptInvoker) _ANSI_ARGS_((ClientData clientData, int flags)); /* 162 */ + void * (*tclGetInstructionTable) _ANSI_ARGS_((void)); /* 163 */ + void (*tclExpandCodeArray) _ANSI_ARGS_((void * envPtr)); /* 164 */ + void (*tclpSetInitialEncodings) _ANSI_ARGS_((void)); /* 165 */ + int (*tclListObjSetElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj * valuePtr)); /* 166 */ + void (*tclSetStartupScriptPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 167 */ + Tcl_Obj * (*tclGetStartupScriptPath) _ANSI_ARGS_((void)); /* 168 */ + int (*tclpUtfNcmp2) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 169 */ + int (*tclCheckInterpTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 170 */ + int (*tclCheckExecutionTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 171 */ + int (*tclInThreadExit) _ANSI_ARGS_((void)); /* 172 */ + int (*tclUniCharMatch) _ANSI_ARGS_((CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); /* 173 */ + void *reserved174; + void *reserved175; + void *reserved176; + void *reserved177; + void *reserved178; + void *reserved179; + void *reserved180; + void *reserved181; + struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t clock)); /* 182 */ + struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ +} TclIntStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclIntStubs *tclIntStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +/* Slot 0 is reserved */ +#ifndef TclAccessDeleteProc +#define TclAccessDeleteProc \ + (tclIntStubsPtr->tclAccessDeleteProc) /* 1 */ +#endif +#ifndef TclAccessInsertProc +#define TclAccessInsertProc \ + (tclIntStubsPtr->tclAccessInsertProc) /* 2 */ +#endif +#ifndef TclAllocateFreeObjects +#define TclAllocateFreeObjects \ + (tclIntStubsPtr->tclAllocateFreeObjects) /* 3 */ +#endif +/* Slot 4 is reserved */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclCleanupChildren +#define TclCleanupChildren \ + (tclIntStubsPtr->tclCleanupChildren) /* 5 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclCleanupChildren +#define TclCleanupChildren \ + (tclIntStubsPtr->tclCleanupChildren) /* 5 */ +#endif +#endif /* __WIN32__ */ +#ifndef TclCleanupCommand +#define TclCleanupCommand \ + (tclIntStubsPtr->tclCleanupCommand) /* 6 */ +#endif +#ifndef TclCopyAndCollapse +#define TclCopyAndCollapse \ + (tclIntStubsPtr->tclCopyAndCollapse) /* 7 */ +#endif +#ifndef TclCopyChannel +#define TclCopyChannel \ + (tclIntStubsPtr->tclCopyChannel) /* 8 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclCreatePipeline +#define TclCreatePipeline \ + (tclIntStubsPtr->tclCreatePipeline) /* 9 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclCreatePipeline +#define TclCreatePipeline \ + (tclIntStubsPtr->tclCreatePipeline) /* 9 */ +#endif +#endif /* __WIN32__ */ +#ifndef TclCreateProc +#define TclCreateProc \ + (tclIntStubsPtr->tclCreateProc) /* 10 */ +#endif +#ifndef TclDeleteCompiledLocalVars +#define TclDeleteCompiledLocalVars \ + (tclIntStubsPtr->tclDeleteCompiledLocalVars) /* 11 */ +#endif +#ifndef TclDeleteVars +#define TclDeleteVars \ + (tclIntStubsPtr->tclDeleteVars) /* 12 */ +#endif +#ifndef TclDoGlob +#define TclDoGlob \ + (tclIntStubsPtr->tclDoGlob) /* 13 */ +#endif +#ifndef TclDumpMemoryInfo +#define TclDumpMemoryInfo \ + (tclIntStubsPtr->tclDumpMemoryInfo) /* 14 */ +#endif +/* Slot 15 is reserved */ +#ifndef TclExprFloatError +#define TclExprFloatError \ + (tclIntStubsPtr->tclExprFloatError) /* 16 */ +#endif +/* Slot 17 is reserved */ +/* Slot 18 is reserved */ +/* Slot 19 is reserved */ +/* Slot 20 is reserved */ +/* Slot 21 is reserved */ +#ifndef TclFindElement +#define TclFindElement \ + (tclIntStubsPtr->tclFindElement) /* 22 */ +#endif +#ifndef TclFindProc +#define TclFindProc \ + (tclIntStubsPtr->tclFindProc) /* 23 */ +#endif +#ifndef TclFormatInt +#define TclFormatInt \ + (tclIntStubsPtr->tclFormatInt) /* 24 */ +#endif +#ifndef TclFreePackageInfo +#define TclFreePackageInfo \ + (tclIntStubsPtr->tclFreePackageInfo) /* 25 */ +#endif +/* Slot 26 is reserved */ +#ifndef TclGetDate +#define TclGetDate \ + (tclIntStubsPtr->tclGetDate) /* 27 */ +#endif +#ifndef TclpGetDefaultStdChannel +#define TclpGetDefaultStdChannel \ + (tclIntStubsPtr->tclpGetDefaultStdChannel) /* 28 */ +#endif +/* Slot 29 is reserved */ +/* Slot 30 is reserved */ +#ifndef TclGetExtension +#define TclGetExtension \ + (tclIntStubsPtr->tclGetExtension) /* 31 */ +#endif +#ifndef TclGetFrame +#define TclGetFrame \ + (tclIntStubsPtr->tclGetFrame) /* 32 */ +#endif +#ifndef TclGetInterpProc +#define TclGetInterpProc \ + (tclIntStubsPtr->tclGetInterpProc) /* 33 */ +#endif +#ifndef TclGetIntForIndex +#define TclGetIntForIndex \ + (tclIntStubsPtr->tclGetIntForIndex) /* 34 */ +#endif +/* Slot 35 is reserved */ +#ifndef TclGetLong +#define TclGetLong \ + (tclIntStubsPtr->tclGetLong) /* 36 */ +#endif +#ifndef TclGetLoadedPackages +#define TclGetLoadedPackages \ + (tclIntStubsPtr->tclGetLoadedPackages) /* 37 */ +#endif +#ifndef TclGetNamespaceForQualName +#define TclGetNamespaceForQualName \ + (tclIntStubsPtr->tclGetNamespaceForQualName) /* 38 */ +#endif +#ifndef TclGetObjInterpProc +#define TclGetObjInterpProc \ + (tclIntStubsPtr->tclGetObjInterpProc) /* 39 */ +#endif +#ifndef TclGetOpenMode +#define TclGetOpenMode \ + (tclIntStubsPtr->tclGetOpenMode) /* 40 */ +#endif +#ifndef TclGetOriginalCommand +#define TclGetOriginalCommand \ + (tclIntStubsPtr->tclGetOriginalCommand) /* 41 */ +#endif +#ifndef TclpGetUserHome +#define TclpGetUserHome \ + (tclIntStubsPtr->tclpGetUserHome) /* 42 */ +#endif +#ifndef TclGlobalInvoke +#define TclGlobalInvoke \ + (tclIntStubsPtr->tclGlobalInvoke) /* 43 */ +#endif +#ifndef TclGuessPackageName +#define TclGuessPackageName \ + (tclIntStubsPtr->tclGuessPackageName) /* 44 */ +#endif +#ifndef TclHideUnsafeCommands +#define TclHideUnsafeCommands \ + (tclIntStubsPtr->tclHideUnsafeCommands) /* 45 */ +#endif +#ifndef TclInExit +#define TclInExit \ + (tclIntStubsPtr->tclInExit) /* 46 */ +#endif +/* Slot 47 is reserved */ +/* Slot 48 is reserved */ +#ifndef TclIncrVar2 +#define TclIncrVar2 \ + (tclIntStubsPtr->tclIncrVar2) /* 49 */ +#endif +#ifndef TclInitCompiledLocals +#define TclInitCompiledLocals \ + (tclIntStubsPtr->tclInitCompiledLocals) /* 50 */ +#endif +#ifndef TclInterpInit +#define TclInterpInit \ + (tclIntStubsPtr->tclInterpInit) /* 51 */ +#endif +#ifndef TclInvoke +#define TclInvoke \ + (tclIntStubsPtr->tclInvoke) /* 52 */ +#endif +#ifndef TclInvokeObjectCommand +#define TclInvokeObjectCommand \ + (tclIntStubsPtr->tclInvokeObjectCommand) /* 53 */ +#endif +#ifndef TclInvokeStringCommand +#define TclInvokeStringCommand \ + (tclIntStubsPtr->tclInvokeStringCommand) /* 54 */ +#endif +#ifndef TclIsProc +#define TclIsProc \ + (tclIntStubsPtr->tclIsProc) /* 55 */ +#endif +/* Slot 56 is reserved */ +/* Slot 57 is reserved */ +#ifndef TclLookupVar +#define TclLookupVar \ + (tclIntStubsPtr->tclLookupVar) /* 58 */ +#endif +/* Slot 59 is reserved */ +#ifndef TclNeedSpace +#define TclNeedSpace \ + (tclIntStubsPtr->tclNeedSpace) /* 60 */ +#endif +#ifndef TclNewProcBodyObj +#define TclNewProcBodyObj \ + (tclIntStubsPtr->tclNewProcBodyObj) /* 61 */ +#endif +#ifndef TclObjCommandComplete +#define TclObjCommandComplete \ + (tclIntStubsPtr->tclObjCommandComplete) /* 62 */ +#endif +#ifndef TclObjInterpProc +#define TclObjInterpProc \ + (tclIntStubsPtr->tclObjInterpProc) /* 63 */ +#endif +#ifndef TclObjInvoke +#define TclObjInvoke \ + (tclIntStubsPtr->tclObjInvoke) /* 64 */ +#endif +#ifndef TclObjInvokeGlobal +#define TclObjInvokeGlobal \ + (tclIntStubsPtr->tclObjInvokeGlobal) /* 65 */ +#endif +#ifndef TclOpenFileChannelDeleteProc +#define TclOpenFileChannelDeleteProc \ + (tclIntStubsPtr->tclOpenFileChannelDeleteProc) /* 66 */ +#endif +#ifndef TclOpenFileChannelInsertProc +#define TclOpenFileChannelInsertProc \ + (tclIntStubsPtr->tclOpenFileChannelInsertProc) /* 67 */ +#endif +/* Slot 68 is reserved */ +#ifndef TclpAlloc +#define TclpAlloc \ + (tclIntStubsPtr->tclpAlloc) /* 69 */ +#endif +/* Slot 70 is reserved */ +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +#ifndef TclpFree +#define TclpFree \ + (tclIntStubsPtr->tclpFree) /* 74 */ +#endif +#ifndef TclpGetClicks +#define TclpGetClicks \ + (tclIntStubsPtr->tclpGetClicks) /* 75 */ +#endif +#ifndef TclpGetSeconds +#define TclpGetSeconds \ + (tclIntStubsPtr->tclpGetSeconds) /* 76 */ +#endif +#ifndef TclpGetTime +#define TclpGetTime \ + (tclIntStubsPtr->tclpGetTime) /* 77 */ +#endif +#ifndef TclpGetTimeZone +#define TclpGetTimeZone \ + (tclIntStubsPtr->tclpGetTimeZone) /* 78 */ +#endif +/* Slot 79 is reserved */ +/* Slot 80 is reserved */ +#ifndef TclpRealloc +#define TclpRealloc \ + (tclIntStubsPtr->tclpRealloc) /* 81 */ +#endif +/* Slot 82 is reserved */ +/* Slot 83 is reserved */ +/* Slot 84 is reserved */ +/* Slot 85 is reserved */ +/* Slot 86 is reserved */ +/* Slot 87 is reserved */ +#ifndef TclPrecTraceProc +#define TclPrecTraceProc \ + (tclIntStubsPtr->tclPrecTraceProc) /* 88 */ +#endif +#ifndef TclPreventAliasLoop +#define TclPreventAliasLoop \ + (tclIntStubsPtr->tclPreventAliasLoop) /* 89 */ +#endif +/* Slot 90 is reserved */ +#ifndef TclProcCleanupProc +#define TclProcCleanupProc \ + (tclIntStubsPtr->tclProcCleanupProc) /* 91 */ +#endif +#ifndef TclProcCompileProc +#define TclProcCompileProc \ + (tclIntStubsPtr->tclProcCompileProc) /* 92 */ +#endif +#ifndef TclProcDeleteProc +#define TclProcDeleteProc \ + (tclIntStubsPtr->tclProcDeleteProc) /* 93 */ +#endif +#ifndef TclProcInterpProc +#define TclProcInterpProc \ + (tclIntStubsPtr->tclProcInterpProc) /* 94 */ +#endif +/* Slot 95 is reserved */ +#ifndef TclRenameCommand +#define TclRenameCommand \ + (tclIntStubsPtr->tclRenameCommand) /* 96 */ +#endif +#ifndef TclResetShadowedCmdRefs +#define TclResetShadowedCmdRefs \ + (tclIntStubsPtr->tclResetShadowedCmdRefs) /* 97 */ +#endif +#ifndef TclServiceIdle +#define TclServiceIdle \ + (tclIntStubsPtr->tclServiceIdle) /* 98 */ +#endif +/* Slot 99 is reserved */ +/* Slot 100 is reserved */ +#ifndef TclSetPreInitScript +#define TclSetPreInitScript \ + (tclIntStubsPtr->tclSetPreInitScript) /* 101 */ +#endif +#ifndef TclSetupEnv +#define TclSetupEnv \ + (tclIntStubsPtr->tclSetupEnv) /* 102 */ +#endif +#ifndef TclSockGetPort +#define TclSockGetPort \ + (tclIntStubsPtr->tclSockGetPort) /* 103 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclSockMinimumBuffers +#define TclSockMinimumBuffers \ + (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclSockMinimumBuffers +#define TclSockMinimumBuffers \ + (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ +#endif +#endif /* __WIN32__ */ +/* Slot 105 is reserved */ +#ifndef TclStatDeleteProc +#define TclStatDeleteProc \ + (tclIntStubsPtr->tclStatDeleteProc) /* 106 */ +#endif +#ifndef TclStatInsertProc +#define TclStatInsertProc \ + (tclIntStubsPtr->tclStatInsertProc) /* 107 */ +#endif +#ifndef TclTeardownNamespace +#define TclTeardownNamespace \ + (tclIntStubsPtr->tclTeardownNamespace) /* 108 */ +#endif +#ifndef TclUpdateReturnInfo +#define TclUpdateReturnInfo \ + (tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */ +#endif +/* Slot 110 is reserved */ +#ifndef Tcl_AddInterpResolvers +#define Tcl_AddInterpResolvers \ + (tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */ +#endif +#ifndef Tcl_AppendExportList +#define Tcl_AppendExportList \ + (tclIntStubsPtr->tcl_AppendExportList) /* 112 */ +#endif +#ifndef Tcl_CreateNamespace +#define Tcl_CreateNamespace \ + (tclIntStubsPtr->tcl_CreateNamespace) /* 113 */ +#endif +#ifndef Tcl_DeleteNamespace +#define Tcl_DeleteNamespace \ + (tclIntStubsPtr->tcl_DeleteNamespace) /* 114 */ +#endif +#ifndef Tcl_Export +#define Tcl_Export \ + (tclIntStubsPtr->tcl_Export) /* 115 */ +#endif +#ifndef Tcl_FindCommand +#define Tcl_FindCommand \ + (tclIntStubsPtr->tcl_FindCommand) /* 116 */ +#endif +#ifndef Tcl_FindNamespace +#define Tcl_FindNamespace \ + (tclIntStubsPtr->tcl_FindNamespace) /* 117 */ +#endif +#ifndef Tcl_GetInterpResolvers +#define Tcl_GetInterpResolvers \ + (tclIntStubsPtr->tcl_GetInterpResolvers) /* 118 */ +#endif +#ifndef Tcl_GetNamespaceResolvers +#define Tcl_GetNamespaceResolvers \ + (tclIntStubsPtr->tcl_GetNamespaceResolvers) /* 119 */ +#endif +#ifndef Tcl_FindNamespaceVar +#define Tcl_FindNamespaceVar \ + (tclIntStubsPtr->tcl_FindNamespaceVar) /* 120 */ +#endif +#ifndef Tcl_ForgetImport +#define Tcl_ForgetImport \ + (tclIntStubsPtr->tcl_ForgetImport) /* 121 */ +#endif +#ifndef Tcl_GetCommandFromObj +#define Tcl_GetCommandFromObj \ + (tclIntStubsPtr->tcl_GetCommandFromObj) /* 122 */ +#endif +#ifndef Tcl_GetCommandFullName +#define Tcl_GetCommandFullName \ + (tclIntStubsPtr->tcl_GetCommandFullName) /* 123 */ +#endif +#ifndef Tcl_GetCurrentNamespace +#define Tcl_GetCurrentNamespace \ + (tclIntStubsPtr->tcl_GetCurrentNamespace) /* 124 */ +#endif +#ifndef Tcl_GetGlobalNamespace +#define Tcl_GetGlobalNamespace \ + (tclIntStubsPtr->tcl_GetGlobalNamespace) /* 125 */ +#endif +#ifndef Tcl_GetVariableFullName +#define Tcl_GetVariableFullName \ + (tclIntStubsPtr->tcl_GetVariableFullName) /* 126 */ +#endif +#ifndef Tcl_Import +#define Tcl_Import \ + (tclIntStubsPtr->tcl_Import) /* 127 */ +#endif +#ifndef Tcl_PopCallFrame +#define Tcl_PopCallFrame \ + (tclIntStubsPtr->tcl_PopCallFrame) /* 128 */ +#endif +#ifndef Tcl_PushCallFrame +#define Tcl_PushCallFrame \ + (tclIntStubsPtr->tcl_PushCallFrame) /* 129 */ +#endif +#ifndef Tcl_RemoveInterpResolvers +#define Tcl_RemoveInterpResolvers \ + (tclIntStubsPtr->tcl_RemoveInterpResolvers) /* 130 */ +#endif +#ifndef Tcl_SetNamespaceResolvers +#define Tcl_SetNamespaceResolvers \ + (tclIntStubsPtr->tcl_SetNamespaceResolvers) /* 131 */ +#endif +#ifndef TclpHasSockets +#define TclpHasSockets \ + (tclIntStubsPtr->tclpHasSockets) /* 132 */ +#endif +#ifndef TclpGetDate +#define TclpGetDate \ + (tclIntStubsPtr->tclpGetDate) /* 133 */ +#endif +#ifndef TclpStrftime +#define TclpStrftime \ + (tclIntStubsPtr->tclpStrftime) /* 134 */ +#endif +#ifndef TclpCheckStackSpace +#define TclpCheckStackSpace \ + (tclIntStubsPtr->tclpCheckStackSpace) /* 135 */ +#endif +/* Slot 136 is reserved */ +/* Slot 137 is reserved */ +#ifndef TclGetEnv +#define TclGetEnv \ + (tclIntStubsPtr->tclGetEnv) /* 138 */ +#endif +/* Slot 139 is reserved */ +#ifndef TclLooksLikeInt +#define TclLooksLikeInt \ + (tclIntStubsPtr->tclLooksLikeInt) /* 140 */ +#endif +#ifndef TclpGetCwd +#define TclpGetCwd \ + (tclIntStubsPtr->tclpGetCwd) /* 141 */ +#endif +#ifndef TclSetByteCodeFromAny +#define TclSetByteCodeFromAny \ + (tclIntStubsPtr->tclSetByteCodeFromAny) /* 142 */ +#endif +#ifndef TclAddLiteralObj +#define TclAddLiteralObj \ + (tclIntStubsPtr->tclAddLiteralObj) /* 143 */ +#endif +#ifndef TclHideLiteral +#define TclHideLiteral \ + (tclIntStubsPtr->tclHideLiteral) /* 144 */ +#endif +#ifndef TclGetAuxDataType +#define TclGetAuxDataType \ + (tclIntStubsPtr->tclGetAuxDataType) /* 145 */ +#endif +#ifndef TclHandleCreate +#define TclHandleCreate \ + (tclIntStubsPtr->tclHandleCreate) /* 146 */ +#endif +#ifndef TclHandleFree +#define TclHandleFree \ + (tclIntStubsPtr->tclHandleFree) /* 147 */ +#endif +#ifndef TclHandlePreserve +#define TclHandlePreserve \ + (tclIntStubsPtr->tclHandlePreserve) /* 148 */ +#endif +#ifndef TclHandleRelease +#define TclHandleRelease \ + (tclIntStubsPtr->tclHandleRelease) /* 149 */ +#endif +#ifndef TclRegAbout +#define TclRegAbout \ + (tclIntStubsPtr->tclRegAbout) /* 150 */ +#endif +#ifndef TclRegExpRangeUniChar +#define TclRegExpRangeUniChar \ + (tclIntStubsPtr->tclRegExpRangeUniChar) /* 151 */ +#endif +#ifndef TclSetLibraryPath +#define TclSetLibraryPath \ + (tclIntStubsPtr->tclSetLibraryPath) /* 152 */ +#endif +#ifndef TclGetLibraryPath +#define TclGetLibraryPath \ + (tclIntStubsPtr->tclGetLibraryPath) /* 153 */ +#endif +/* Slot 154 is reserved */ +/* Slot 155 is reserved */ +#ifndef TclRegError +#define TclRegError \ + (tclIntStubsPtr->tclRegError) /* 156 */ +#endif +#ifndef TclVarTraceExists +#define TclVarTraceExists \ + (tclIntStubsPtr->tclVarTraceExists) /* 157 */ +#endif +#ifndef TclSetStartupScriptFileName +#define TclSetStartupScriptFileName \ + (tclIntStubsPtr->tclSetStartupScriptFileName) /* 158 */ +#endif +#ifndef TclGetStartupScriptFileName +#define TclGetStartupScriptFileName \ + (tclIntStubsPtr->tclGetStartupScriptFileName) /* 159 */ +#endif +/* Slot 160 is reserved */ +#ifndef TclChannelTransform +#define TclChannelTransform \ + (tclIntStubsPtr->tclChannelTransform) /* 161 */ +#endif +#ifndef TclChannelEventScriptInvoker +#define TclChannelEventScriptInvoker \ + (tclIntStubsPtr->tclChannelEventScriptInvoker) /* 162 */ +#endif +#ifndef TclGetInstructionTable +#define TclGetInstructionTable \ + (tclIntStubsPtr->tclGetInstructionTable) /* 163 */ +#endif +#ifndef TclExpandCodeArray +#define TclExpandCodeArray \ + (tclIntStubsPtr->tclExpandCodeArray) /* 164 */ +#endif +#ifndef TclpSetInitialEncodings +#define TclpSetInitialEncodings \ + (tclIntStubsPtr->tclpSetInitialEncodings) /* 165 */ +#endif +#ifndef TclListObjSetElement +#define TclListObjSetElement \ + (tclIntStubsPtr->tclListObjSetElement) /* 166 */ +#endif +#ifndef TclSetStartupScriptPath +#define TclSetStartupScriptPath \ + (tclIntStubsPtr->tclSetStartupScriptPath) /* 167 */ +#endif +#ifndef TclGetStartupScriptPath +#define TclGetStartupScriptPath \ + (tclIntStubsPtr->tclGetStartupScriptPath) /* 168 */ +#endif +#ifndef TclpUtfNcmp2 +#define TclpUtfNcmp2 \ + (tclIntStubsPtr->tclpUtfNcmp2) /* 169 */ +#endif +#ifndef TclCheckInterpTraces +#define TclCheckInterpTraces \ + (tclIntStubsPtr->tclCheckInterpTraces) /* 170 */ +#endif +#ifndef TclCheckExecutionTraces +#define TclCheckExecutionTraces \ + (tclIntStubsPtr->tclCheckExecutionTraces) /* 171 */ +#endif +#ifndef TclInThreadExit +#define TclInThreadExit \ + (tclIntStubsPtr->tclInThreadExit) /* 172 */ +#endif +#ifndef TclUniCharMatch +#define TclUniCharMatch \ + (tclIntStubsPtr->tclUniCharMatch) /* 173 */ +#endif +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +#ifndef TclpLocaltime +#define TclpLocaltime \ + (tclIntStubsPtr->tclpLocaltime) /* 182 */ +#endif +#ifndef TclpGmtime +#define TclpGmtime \ + (tclIntStubsPtr->tclpGmtime) /* 183 */ +#endif + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLINTDECLS */ diff --git a/generic/tclIntPlatDecls.h b/generic/tclIntPlatDecls.h index 6942a94..dfc1e41 100644 --- a/generic/tclIntPlatDecls.h +++ b/generic/tclIntPlatDecls.h @@ -1,585 +1,593 @@ -/* - * tclIntPlatDecls.h -- - * - * This file contains the declarations for all platform dependent - * unsupported functions that are exported by the Tcl library. These - * interfaces are not guaranteed to remain the same between - * versions. Use at your own risk. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * All rights reserved. - * - * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.3 2004/05/17 16:25:14 dgp Exp $ - */ - -#ifndef _TCLINTPLATDECLS -#define _TCLINTPLATDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tclInt.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 0 */ -EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 1 */ -EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); -/* 2 */ -EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( - TclFile readFile, TclFile writeFile, - TclFile errorFile, int numPids, - Tcl_Pid * pidPtr)); -/* 3 */ -EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, - TclFile * writePipe)); -/* 4 */ -EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - TclFile inputFile, TclFile outputFile, - TclFile errorFile, Tcl_Pid * pidPtr)); -/* Slot 5 is reserved */ -/* 6 */ -EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, - int direction)); -/* 7 */ -EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, - int mode)); -/* 8 */ -EXTERN int TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask, - int timeout)); -/* 9 */ -EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( - CONST char * contents)); -/* 10 */ -EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); -/* 11 */ -EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((TclpTime_t clock)); -/* 12 */ -EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((TclpTime_t clock)); -/* 13 */ -EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 0 */ -EXTERN void TclWinConvertError _ANSI_ARGS_((DWORD errCode)); -/* 1 */ -EXTERN void TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode)); -/* 2 */ -EXTERN struct servent * TclWinGetServByName _ANSI_ARGS_((CONST char * nm, - CONST char * proto)); -/* 3 */ -EXTERN int TclWinGetSockOpt _ANSI_ARGS_((SOCKET s, int level, - int optname, char FAR * optval, - int FAR * optlen)); -/* 4 */ -EXTERN HINSTANCE TclWinGetTclInstance _ANSI_ARGS_((void)); -/* Slot 5 is reserved */ -/* 6 */ -EXTERN u_short TclWinNToHS _ANSI_ARGS_((u_short ns)); -/* 7 */ -EXTERN int TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level, - int optname, CONST char FAR * optval, - int optlen)); -/* 8 */ -EXTERN unsigned long TclpGetPid _ANSI_ARGS_((Tcl_Pid pid)); -/* 9 */ -EXTERN int TclWinGetPlatformId _ANSI_ARGS_((void)); -/* Slot 10 is reserved */ -/* 11 */ -EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 12 */ -EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); -/* 13 */ -EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( - TclFile readFile, TclFile writeFile, - TclFile errorFile, int numPids, - Tcl_Pid * pidPtr)); -/* 14 */ -EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, - TclFile * writePipe)); -/* 15 */ -EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - TclFile inputFile, TclFile outputFile, - TclFile errorFile, Tcl_Pid * pidPtr)); -/* Slot 16 is reserved */ -/* Slot 17 is reserved */ -/* 18 */ -EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, - int direction)); -/* 19 */ -EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, - int mode)); -/* 20 */ -EXTERN void TclWinAddProcess _ANSI_ARGS_((HANDLE hProcess, - DWORD id)); -/* Slot 21 is reserved */ -/* 22 */ -EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( - CONST char * contents)); -/* 23 */ -EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); -/* 24 */ -EXTERN char * TclWinNoBackslash _ANSI_ARGS_((char * path)); -/* 25 */ -EXTERN TclPlatformType * TclWinGetPlatform _ANSI_ARGS_((void)); -/* 26 */ -EXTERN void TclWinSetInterfaces _ANSI_ARGS_((int wide)); -/* 27 */ -EXTERN void TclWinFlushDirtyChannels _ANSI_ARGS_((void)); -/* 28 */ -EXTERN void TclWinResetInterfaces _ANSI_ARGS_((void)); -#endif /* __WIN32__ */ -#ifdef MAC_TCL -/* 0 */ -EXTERN VOID * TclpSysAlloc _ANSI_ARGS_((long size, int isBin)); -/* 1 */ -EXTERN void TclpSysFree _ANSI_ARGS_((VOID * ptr)); -/* 2 */ -EXTERN VOID * TclpSysRealloc _ANSI_ARGS_((VOID * cp, - unsigned int size)); -/* 3 */ -EXTERN void TclpExit _ANSI_ARGS_((int status)); -/* 4 */ -EXTERN int FSpGetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); -/* 5 */ -EXTERN int FSpSetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); -/* 6 */ -EXTERN OSErr FSpFindFolder _ANSI_ARGS_((short vRefNum, - OSType folderType, Boolean createFolder, - FSSpec * spec)); -/* 7 */ -EXTERN void GetGlobalMouseTcl _ANSI_ARGS_((Point * mouse)); -/* 8 */ -EXTERN pascal OSErr FSpGetDirectoryIDTcl _ANSI_ARGS_(( - CONST FSSpec * spec, long * theDirID, - Boolean * isDirectory)); -/* 9 */ -EXTERN pascal short FSpOpenResFileCompatTcl _ANSI_ARGS_(( - CONST FSSpec * spec, SignedByte permission)); -/* 10 */ -EXTERN pascal void FSpCreateResFileCompatTcl _ANSI_ARGS_(( - CONST FSSpec * spec, OSType creator, - OSType fileType, ScriptCode scriptTag)); -/* 11 */ -EXTERN int FSpLocationFromPath _ANSI_ARGS_((int length, - CONST char * path, FSSpecPtr theSpec)); -/* 12 */ -EXTERN OSErr FSpPathFromLocation _ANSI_ARGS_((FSSpecPtr theSpec, - int * length, Handle * fullPath)); -/* 13 */ -EXTERN void TclMacExitHandler _ANSI_ARGS_((void)); -/* 14 */ -EXTERN void TclMacInitExitToShell _ANSI_ARGS_((int usePatch)); -/* 15 */ -EXTERN OSErr TclMacInstallExitToShellPatch _ANSI_ARGS_(( - ExitToShellProcPtr newProc)); -/* 16 */ -EXTERN int TclMacOSErrorToPosixError _ANSI_ARGS_((int error)); -/* 17 */ -EXTERN void TclMacRemoveTimer _ANSI_ARGS_((void * timerToken)); -/* 18 */ -EXTERN void * TclMacStartTimer _ANSI_ARGS_((long ms)); -/* 19 */ -EXTERN int TclMacTimerExpired _ANSI_ARGS_((void * timerToken)); -/* 20 */ -EXTERN int TclMacRegisterResourceFork _ANSI_ARGS_(( - short fileRef, Tcl_Obj * tokenPtr, - int insert)); -/* 21 */ -EXTERN short TclMacUnRegisterResourceFork _ANSI_ARGS_(( - char * tokenPtr, Tcl_Obj * resultPtr)); -/* 22 */ -EXTERN int TclMacCreateEnv _ANSI_ARGS_((void)); -/* 23 */ -EXTERN FILE * TclMacFOpenHack _ANSI_ARGS_((CONST char * path, - CONST char * mode)); -/* 24 */ -EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); -/* 25 */ -EXTERN int TclMacChmod _ANSI_ARGS_((CONST char * path, int mode)); -/* 26 */ -EXTERN int FSpLLocationFromPath _ANSI_ARGS_((int length, - CONST char * path, FSSpecPtr theSpec)); -#endif /* MAC_TCL */ - -typedef struct TclIntPlatStubs { - int magic; - struct TclIntPlatStubHooks *hooks; - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 0 */ - int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 1 */ - Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 2 */ - int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 3 */ - int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 4 */ - void *reserved5; - TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 6 */ - TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 7 */ - int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ - TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ - Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ - struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 11 */ - struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 12 */ - char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */ - void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */ - struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char * nm, CONST char * proto)); /* 2 */ - int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char FAR * optval, int FAR * optlen)); /* 3 */ - HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */ - void *reserved5; - u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */ - int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char FAR * optval, int optlen)); /* 7 */ - unsigned long (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */ - int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */ - void *reserved10; - void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 11 */ - int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */ - Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 13 */ - int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 14 */ - int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 15 */ - void *reserved16; - void *reserved17; - TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 18 */ - TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 19 */ - void (*tclWinAddProcess) _ANSI_ARGS_((HANDLE hProcess, DWORD id)); /* 20 */ - void *reserved21; - TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 22 */ - char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 23 */ - char * (*tclWinNoBackslash) _ANSI_ARGS_((char * path)); /* 24 */ - TclPlatformType * (*tclWinGetPlatform) _ANSI_ARGS_((void)); /* 25 */ - void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */ - void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */ - void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - VOID * (*tclpSysAlloc) _ANSI_ARGS_((long size, int isBin)); /* 0 */ - void (*tclpSysFree) _ANSI_ARGS_((VOID * ptr)); /* 1 */ - VOID * (*tclpSysRealloc) _ANSI_ARGS_((VOID * cp, unsigned int size)); /* 2 */ - void (*tclpExit) _ANSI_ARGS_((int status)); /* 3 */ - int (*fSpGetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 4 */ - int (*fSpSetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 5 */ - OSErr (*fSpFindFolder) _ANSI_ARGS_((short vRefNum, OSType folderType, Boolean createFolder, FSSpec * spec)); /* 6 */ - void (*getGlobalMouseTcl) _ANSI_ARGS_((Point * mouse)); /* 7 */ - pascal OSErr (*fSpGetDirectoryIDTcl) _ANSI_ARGS_((CONST FSSpec * spec, long * theDirID, Boolean * isDirectory)); /* 8 */ - pascal short (*fSpOpenResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, SignedByte permission)); /* 9 */ - pascal void (*fSpCreateResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, OSType creator, OSType fileType, ScriptCode scriptTag)); /* 10 */ - int (*fSpLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 11 */ - OSErr (*fSpPathFromLocation) _ANSI_ARGS_((FSSpecPtr theSpec, int * length, Handle * fullPath)); /* 12 */ - void (*tclMacExitHandler) _ANSI_ARGS_((void)); /* 13 */ - void (*tclMacInitExitToShell) _ANSI_ARGS_((int usePatch)); /* 14 */ - OSErr (*tclMacInstallExitToShellPatch) _ANSI_ARGS_((ExitToShellProcPtr newProc)); /* 15 */ - int (*tclMacOSErrorToPosixError) _ANSI_ARGS_((int error)); /* 16 */ - void (*tclMacRemoveTimer) _ANSI_ARGS_((void * timerToken)); /* 17 */ - void * (*tclMacStartTimer) _ANSI_ARGS_((long ms)); /* 18 */ - int (*tclMacTimerExpired) _ANSI_ARGS_((void * timerToken)); /* 19 */ - int (*tclMacRegisterResourceFork) _ANSI_ARGS_((short fileRef, Tcl_Obj * tokenPtr, int insert)); /* 20 */ - short (*tclMacUnRegisterResourceFork) _ANSI_ARGS_((char * tokenPtr, Tcl_Obj * resultPtr)); /* 21 */ - int (*tclMacCreateEnv) _ANSI_ARGS_((void)); /* 22 */ - FILE * (*tclMacFOpenHack) _ANSI_ARGS_((CONST char * path, CONST char * mode)); /* 23 */ - char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 24 */ - int (*tclMacChmod) _ANSI_ARGS_((CONST char * path, int mode)); /* 25 */ - int (*fSpLLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 26 */ -#endif /* MAC_TCL */ -} TclIntPlatStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclIntPlatStubs *tclIntPlatStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclGetAndDetachPids -#define TclGetAndDetachPids \ - (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 0 */ -#endif -#ifndef TclpCloseFile -#define TclpCloseFile \ - (tclIntPlatStubsPtr->tclpCloseFile) /* 1 */ -#endif -#ifndef TclpCreateCommandChannel -#define TclpCreateCommandChannel \ - (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 2 */ -#endif -#ifndef TclpCreatePipe -#define TclpCreatePipe \ - (tclIntPlatStubsPtr->tclpCreatePipe) /* 3 */ -#endif -#ifndef TclpCreateProcess -#define TclpCreateProcess \ - (tclIntPlatStubsPtr->tclpCreateProcess) /* 4 */ -#endif -/* Slot 5 is reserved */ -#ifndef TclpMakeFile -#define TclpMakeFile \ - (tclIntPlatStubsPtr->tclpMakeFile) /* 6 */ -#endif -#ifndef TclpOpenFile -#define TclpOpenFile \ - (tclIntPlatStubsPtr->tclpOpenFile) /* 7 */ -#endif -#ifndef TclUnixWaitForFile -#define TclUnixWaitForFile \ - (tclIntPlatStubsPtr->tclUnixWaitForFile) /* 8 */ -#endif -#ifndef TclpCreateTempFile -#define TclpCreateTempFile \ - (tclIntPlatStubsPtr->tclpCreateTempFile) /* 9 */ -#endif -#ifndef TclpReaddir -#define TclpReaddir \ - (tclIntPlatStubsPtr->tclpReaddir) /* 10 */ -#endif -#ifndef TclpLocaltime_unix -#define TclpLocaltime_unix \ - (tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */ -#endif -#ifndef TclpGmtime_unix -#define TclpGmtime_unix \ - (tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */ -#endif -#ifndef TclpInetNtoa -#define TclpInetNtoa \ - (tclIntPlatStubsPtr->tclpInetNtoa) /* 13 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclWinConvertError -#define TclWinConvertError \ - (tclIntPlatStubsPtr->tclWinConvertError) /* 0 */ -#endif -#ifndef TclWinConvertWSAError -#define TclWinConvertWSAError \ - (tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */ -#endif -#ifndef TclWinGetServByName -#define TclWinGetServByName \ - (tclIntPlatStubsPtr->tclWinGetServByName) /* 2 */ -#endif -#ifndef TclWinGetSockOpt -#define TclWinGetSockOpt \ - (tclIntPlatStubsPtr->tclWinGetSockOpt) /* 3 */ -#endif -#ifndef TclWinGetTclInstance -#define TclWinGetTclInstance \ - (tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */ -#endif -/* Slot 5 is reserved */ -#ifndef TclWinNToHS -#define TclWinNToHS \ - (tclIntPlatStubsPtr->tclWinNToHS) /* 6 */ -#endif -#ifndef TclWinSetSockOpt -#define TclWinSetSockOpt \ - (tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */ -#endif -#ifndef TclpGetPid -#define TclpGetPid \ - (tclIntPlatStubsPtr->tclpGetPid) /* 8 */ -#endif -#ifndef TclWinGetPlatformId -#define TclWinGetPlatformId \ - (tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */ -#endif -/* Slot 10 is reserved */ -#ifndef TclGetAndDetachPids -#define TclGetAndDetachPids \ - (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 11 */ -#endif -#ifndef TclpCloseFile -#define TclpCloseFile \ - (tclIntPlatStubsPtr->tclpCloseFile) /* 12 */ -#endif -#ifndef TclpCreateCommandChannel -#define TclpCreateCommandChannel \ - (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 13 */ -#endif -#ifndef TclpCreatePipe -#define TclpCreatePipe \ - (tclIntPlatStubsPtr->tclpCreatePipe) /* 14 */ -#endif -#ifndef TclpCreateProcess -#define TclpCreateProcess \ - (tclIntPlatStubsPtr->tclpCreateProcess) /* 15 */ -#endif -/* Slot 16 is reserved */ -/* Slot 17 is reserved */ -#ifndef TclpMakeFile -#define TclpMakeFile \ - (tclIntPlatStubsPtr->tclpMakeFile) /* 18 */ -#endif -#ifndef TclpOpenFile -#define TclpOpenFile \ - (tclIntPlatStubsPtr->tclpOpenFile) /* 19 */ -#endif -#ifndef TclWinAddProcess -#define TclWinAddProcess \ - (tclIntPlatStubsPtr->tclWinAddProcess) /* 20 */ -#endif -/* Slot 21 is reserved */ -#ifndef TclpCreateTempFile -#define TclpCreateTempFile \ - (tclIntPlatStubsPtr->tclpCreateTempFile) /* 22 */ -#endif -#ifndef TclpGetTZName -#define TclpGetTZName \ - (tclIntPlatStubsPtr->tclpGetTZName) /* 23 */ -#endif -#ifndef TclWinNoBackslash -#define TclWinNoBackslash \ - (tclIntPlatStubsPtr->tclWinNoBackslash) /* 24 */ -#endif -#ifndef TclWinGetPlatform -#define TclWinGetPlatform \ - (tclIntPlatStubsPtr->tclWinGetPlatform) /* 25 */ -#endif -#ifndef TclWinSetInterfaces -#define TclWinSetInterfaces \ - (tclIntPlatStubsPtr->tclWinSetInterfaces) /* 26 */ -#endif -#ifndef TclWinFlushDirtyChannels -#define TclWinFlushDirtyChannels \ - (tclIntPlatStubsPtr->tclWinFlushDirtyChannels) /* 27 */ -#endif -#ifndef TclWinResetInterfaces -#define TclWinResetInterfaces \ - (tclIntPlatStubsPtr->tclWinResetInterfaces) /* 28 */ -#endif -#endif /* __WIN32__ */ -#ifdef MAC_TCL -#ifndef TclpSysAlloc -#define TclpSysAlloc \ - (tclIntPlatStubsPtr->tclpSysAlloc) /* 0 */ -#endif -#ifndef TclpSysFree -#define TclpSysFree \ - (tclIntPlatStubsPtr->tclpSysFree) /* 1 */ -#endif -#ifndef TclpSysRealloc -#define TclpSysRealloc \ - (tclIntPlatStubsPtr->tclpSysRealloc) /* 2 */ -#endif -#ifndef TclpExit -#define TclpExit \ - (tclIntPlatStubsPtr->tclpExit) /* 3 */ -#endif -#ifndef FSpGetDefaultDir -#define FSpGetDefaultDir \ - (tclIntPlatStubsPtr->fSpGetDefaultDir) /* 4 */ -#endif -#ifndef FSpSetDefaultDir -#define FSpSetDefaultDir \ - (tclIntPlatStubsPtr->fSpSetDefaultDir) /* 5 */ -#endif -#ifndef FSpFindFolder -#define FSpFindFolder \ - (tclIntPlatStubsPtr->fSpFindFolder) /* 6 */ -#endif -#ifndef GetGlobalMouseTcl -#define GetGlobalMouseTcl \ - (tclIntPlatStubsPtr->getGlobalMouseTcl) /* 7 */ -#endif -#ifndef FSpGetDirectoryIDTcl -#define FSpGetDirectoryIDTcl \ - (tclIntPlatStubsPtr->fSpGetDirectoryIDTcl) /* 8 */ -#endif -#ifndef FSpOpenResFileCompatTcl -#define FSpOpenResFileCompatTcl \ - (tclIntPlatStubsPtr->fSpOpenResFileCompatTcl) /* 9 */ -#endif -#ifndef FSpCreateResFileCompatTcl -#define FSpCreateResFileCompatTcl \ - (tclIntPlatStubsPtr->fSpCreateResFileCompatTcl) /* 10 */ -#endif -#ifndef FSpLocationFromPath -#define FSpLocationFromPath \ - (tclIntPlatStubsPtr->fSpLocationFromPath) /* 11 */ -#endif -#ifndef FSpPathFromLocation -#define FSpPathFromLocation \ - (tclIntPlatStubsPtr->fSpPathFromLocation) /* 12 */ -#endif -#ifndef TclMacExitHandler -#define TclMacExitHandler \ - (tclIntPlatStubsPtr->tclMacExitHandler) /* 13 */ -#endif -#ifndef TclMacInitExitToShell -#define TclMacInitExitToShell \ - (tclIntPlatStubsPtr->tclMacInitExitToShell) /* 14 */ -#endif -#ifndef TclMacInstallExitToShellPatch -#define TclMacInstallExitToShellPatch \ - (tclIntPlatStubsPtr->tclMacInstallExitToShellPatch) /* 15 */ -#endif -#ifndef TclMacOSErrorToPosixError -#define TclMacOSErrorToPosixError \ - (tclIntPlatStubsPtr->tclMacOSErrorToPosixError) /* 16 */ -#endif -#ifndef TclMacRemoveTimer -#define TclMacRemoveTimer \ - (tclIntPlatStubsPtr->tclMacRemoveTimer) /* 17 */ -#endif -#ifndef TclMacStartTimer -#define TclMacStartTimer \ - (tclIntPlatStubsPtr->tclMacStartTimer) /* 18 */ -#endif -#ifndef TclMacTimerExpired -#define TclMacTimerExpired \ - (tclIntPlatStubsPtr->tclMacTimerExpired) /* 19 */ -#endif -#ifndef TclMacRegisterResourceFork -#define TclMacRegisterResourceFork \ - (tclIntPlatStubsPtr->tclMacRegisterResourceFork) /* 20 */ -#endif -#ifndef TclMacUnRegisterResourceFork -#define TclMacUnRegisterResourceFork \ - (tclIntPlatStubsPtr->tclMacUnRegisterResourceFork) /* 21 */ -#endif -#ifndef TclMacCreateEnv -#define TclMacCreateEnv \ - (tclIntPlatStubsPtr->tclMacCreateEnv) /* 22 */ -#endif -#ifndef TclMacFOpenHack -#define TclMacFOpenHack \ - (tclIntPlatStubsPtr->tclMacFOpenHack) /* 23 */ -#endif -#ifndef TclpGetTZName -#define TclpGetTZName \ - (tclIntPlatStubsPtr->tclpGetTZName) /* 24 */ -#endif -#ifndef TclMacChmod -#define TclMacChmod \ - (tclIntPlatStubsPtr->tclMacChmod) /* 25 */ -#endif -#ifndef FSpLLocationFromPath -#define FSpLLocationFromPath \ - (tclIntPlatStubsPtr->fSpLLocationFromPath) /* 26 */ -#endif -#endif /* MAC_TCL */ - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLINTPLATDECLS */ +/* + * tclIntPlatDecls.h -- + * + * This file contains the declarations for all platform dependent + * unsupported functions that are exported by the Tcl library. These + * interfaces are not guaranteed to remain the same between + * versions. Use at your own risk. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * All rights reserved. + * + * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.4 2004/06/05 17:25:40 kennykb Exp $ + */ + +#ifndef _TCLINTPLATDECLS +#define _TCLINTPLATDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tclInt.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 0 */ +EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 1 */ +EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); +/* 2 */ +EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( + TclFile readFile, TclFile writeFile, + TclFile errorFile, int numPids, + Tcl_Pid * pidPtr)); +/* 3 */ +EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, + TclFile * writePipe)); +/* 4 */ +EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + TclFile inputFile, TclFile outputFile, + TclFile errorFile, Tcl_Pid * pidPtr)); +/* Slot 5 is reserved */ +/* 6 */ +EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, + int direction)); +/* 7 */ +EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, + int mode)); +/* 8 */ +EXTERN int TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask, + int timeout)); +/* 9 */ +EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( + CONST char * contents)); +/* 10 */ +EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); +/* 11 */ +EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((TclpTime_t clock)); +/* 12 */ +EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((TclpTime_t clock)); +/* 13 */ +EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 0 */ +EXTERN void TclWinConvertError _ANSI_ARGS_((DWORD errCode)); +/* 1 */ +EXTERN void TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode)); +/* 2 */ +EXTERN struct servent * TclWinGetServByName _ANSI_ARGS_((CONST char * nm, + CONST char * proto)); +/* 3 */ +EXTERN int TclWinGetSockOpt _ANSI_ARGS_((SOCKET s, int level, + int optname, char FAR * optval, + int FAR * optlen)); +/* 4 */ +EXTERN HINSTANCE TclWinGetTclInstance _ANSI_ARGS_((void)); +/* Slot 5 is reserved */ +/* 6 */ +EXTERN u_short TclWinNToHS _ANSI_ARGS_((u_short ns)); +/* 7 */ +EXTERN int TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level, + int optname, CONST char FAR * optval, + int optlen)); +/* 8 */ +EXTERN unsigned long TclpGetPid _ANSI_ARGS_((Tcl_Pid pid)); +/* 9 */ +EXTERN int TclWinGetPlatformId _ANSI_ARGS_((void)); +/* Slot 10 is reserved */ +/* 11 */ +EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 12 */ +EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); +/* 13 */ +EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( + TclFile readFile, TclFile writeFile, + TclFile errorFile, int numPids, + Tcl_Pid * pidPtr)); +/* 14 */ +EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, + TclFile * writePipe)); +/* 15 */ +EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + TclFile inputFile, TclFile outputFile, + TclFile errorFile, Tcl_Pid * pidPtr)); +/* Slot 16 is reserved */ +/* Slot 17 is reserved */ +/* 18 */ +EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, + int direction)); +/* 19 */ +EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, + int mode)); +/* 20 */ +EXTERN void TclWinAddProcess _ANSI_ARGS_((HANDLE hProcess, + DWORD id)); +/* Slot 21 is reserved */ +/* 22 */ +EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( + CONST char * contents)); +/* 23 */ +EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); +/* 24 */ +EXTERN char * TclWinNoBackslash _ANSI_ARGS_((char * path)); +/* 25 */ +EXTERN TclPlatformType * TclWinGetPlatform _ANSI_ARGS_((void)); +/* 26 */ +EXTERN void TclWinSetInterfaces _ANSI_ARGS_((int wide)); +/* 27 */ +EXTERN void TclWinFlushDirtyChannels _ANSI_ARGS_((void)); +/* 28 */ +EXTERN void TclWinResetInterfaces _ANSI_ARGS_((void)); +/* 29 */ +EXTERN int TclWinCPUID _ANSI_ARGS_((unsigned int index, + unsigned int * regs)); +#endif /* __WIN32__ */ +#ifdef MAC_TCL +/* 0 */ +EXTERN VOID * TclpSysAlloc _ANSI_ARGS_((long size, int isBin)); +/* 1 */ +EXTERN void TclpSysFree _ANSI_ARGS_((VOID * ptr)); +/* 2 */ +EXTERN VOID * TclpSysRealloc _ANSI_ARGS_((VOID * cp, + unsigned int size)); +/* 3 */ +EXTERN void TclpExit _ANSI_ARGS_((int status)); +/* 4 */ +EXTERN int FSpGetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); +/* 5 */ +EXTERN int FSpSetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); +/* 6 */ +EXTERN OSErr FSpFindFolder _ANSI_ARGS_((short vRefNum, + OSType folderType, Boolean createFolder, + FSSpec * spec)); +/* 7 */ +EXTERN void GetGlobalMouseTcl _ANSI_ARGS_((Point * mouse)); +/* 8 */ +EXTERN pascal OSErr FSpGetDirectoryIDTcl _ANSI_ARGS_(( + CONST FSSpec * spec, long * theDirID, + Boolean * isDirectory)); +/* 9 */ +EXTERN pascal short FSpOpenResFileCompatTcl _ANSI_ARGS_(( + CONST FSSpec * spec, SignedByte permission)); +/* 10 */ +EXTERN pascal void FSpCreateResFileCompatTcl _ANSI_ARGS_(( + CONST FSSpec * spec, OSType creator, + OSType fileType, ScriptCode scriptTag)); +/* 11 */ +EXTERN int FSpLocationFromPath _ANSI_ARGS_((int length, + CONST char * path, FSSpecPtr theSpec)); +/* 12 */ +EXTERN OSErr FSpPathFromLocation _ANSI_ARGS_((FSSpecPtr theSpec, + int * length, Handle * fullPath)); +/* 13 */ +EXTERN void TclMacExitHandler _ANSI_ARGS_((void)); +/* 14 */ +EXTERN void TclMacInitExitToShell _ANSI_ARGS_((int usePatch)); +/* 15 */ +EXTERN OSErr TclMacInstallExitToShellPatch _ANSI_ARGS_(( + ExitToShellProcPtr newProc)); +/* 16 */ +EXTERN int TclMacOSErrorToPosixError _ANSI_ARGS_((int error)); +/* 17 */ +EXTERN void TclMacRemoveTimer _ANSI_ARGS_((void * timerToken)); +/* 18 */ +EXTERN void * TclMacStartTimer _ANSI_ARGS_((long ms)); +/* 19 */ +EXTERN int TclMacTimerExpired _ANSI_ARGS_((void * timerToken)); +/* 20 */ +EXTERN int TclMacRegisterResourceFork _ANSI_ARGS_(( + short fileRef, Tcl_Obj * tokenPtr, + int insert)); +/* 21 */ +EXTERN short TclMacUnRegisterResourceFork _ANSI_ARGS_(( + char * tokenPtr, Tcl_Obj * resultPtr)); +/* 22 */ +EXTERN int TclMacCreateEnv _ANSI_ARGS_((void)); +/* 23 */ +EXTERN FILE * TclMacFOpenHack _ANSI_ARGS_((CONST char * path, + CONST char * mode)); +/* 24 */ +EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); +/* 25 */ +EXTERN int TclMacChmod _ANSI_ARGS_((CONST char * path, int mode)); +/* 26 */ +EXTERN int FSpLLocationFromPath _ANSI_ARGS_((int length, + CONST char * path, FSSpecPtr theSpec)); +#endif /* MAC_TCL */ + +typedef struct TclIntPlatStubs { + int magic; + struct TclIntPlatStubHooks *hooks; + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 0 */ + int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 1 */ + Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 2 */ + int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 3 */ + int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 4 */ + void *reserved5; + TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 6 */ + TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 7 */ + int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ + TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ + Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ + struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 11 */ + struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 12 */ + char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */ + void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */ + struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char * nm, CONST char * proto)); /* 2 */ + int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char FAR * optval, int FAR * optlen)); /* 3 */ + HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */ + void *reserved5; + u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */ + int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char FAR * optval, int optlen)); /* 7 */ + unsigned long (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */ + int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */ + void *reserved10; + void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 11 */ + int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */ + Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 13 */ + int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 14 */ + int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 15 */ + void *reserved16; + void *reserved17; + TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 18 */ + TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 19 */ + void (*tclWinAddProcess) _ANSI_ARGS_((HANDLE hProcess, DWORD id)); /* 20 */ + void *reserved21; + TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 22 */ + char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 23 */ + char * (*tclWinNoBackslash) _ANSI_ARGS_((char * path)); /* 24 */ + TclPlatformType * (*tclWinGetPlatform) _ANSI_ARGS_((void)); /* 25 */ + void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */ + void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */ + void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */ + int (*tclWinCPUID) _ANSI_ARGS_((unsigned int index, unsigned int * regs)); /* 29 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + VOID * (*tclpSysAlloc) _ANSI_ARGS_((long size, int isBin)); /* 0 */ + void (*tclpSysFree) _ANSI_ARGS_((VOID * ptr)); /* 1 */ + VOID * (*tclpSysRealloc) _ANSI_ARGS_((VOID * cp, unsigned int size)); /* 2 */ + void (*tclpExit) _ANSI_ARGS_((int status)); /* 3 */ + int (*fSpGetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 4 */ + int (*fSpSetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 5 */ + OSErr (*fSpFindFolder) _ANSI_ARGS_((short vRefNum, OSType folderType, Boolean createFolder, FSSpec * spec)); /* 6 */ + void (*getGlobalMouseTcl) _ANSI_ARGS_((Point * mouse)); /* 7 */ + pascal OSErr (*fSpGetDirectoryIDTcl) _ANSI_ARGS_((CONST FSSpec * spec, long * theDirID, Boolean * isDirectory)); /* 8 */ + pascal short (*fSpOpenResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, SignedByte permission)); /* 9 */ + pascal void (*fSpCreateResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, OSType creator, OSType fileType, ScriptCode scriptTag)); /* 10 */ + int (*fSpLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 11 */ + OSErr (*fSpPathFromLocation) _ANSI_ARGS_((FSSpecPtr theSpec, int * length, Handle * fullPath)); /* 12 */ + void (*tclMacExitHandler) _ANSI_ARGS_((void)); /* 13 */ + void (*tclMacInitExitToShell) _ANSI_ARGS_((int usePatch)); /* 14 */ + OSErr (*tclMacInstallExitToShellPatch) _ANSI_ARGS_((ExitToShellProcPtr newProc)); /* 15 */ + int (*tclMacOSErrorToPosixError) _ANSI_ARGS_((int error)); /* 16 */ + void (*tclMacRemoveTimer) _ANSI_ARGS_((void * timerToken)); /* 17 */ + void * (*tclMacStartTimer) _ANSI_ARGS_((long ms)); /* 18 */ + int (*tclMacTimerExpired) _ANSI_ARGS_((void * timerToken)); /* 19 */ + int (*tclMacRegisterResourceFork) _ANSI_ARGS_((short fileRef, Tcl_Obj * tokenPtr, int insert)); /* 20 */ + short (*tclMacUnRegisterResourceFork) _ANSI_ARGS_((char * tokenPtr, Tcl_Obj * resultPtr)); /* 21 */ + int (*tclMacCreateEnv) _ANSI_ARGS_((void)); /* 22 */ + FILE * (*tclMacFOpenHack) _ANSI_ARGS_((CONST char * path, CONST char * mode)); /* 23 */ + char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 24 */ + int (*tclMacChmod) _ANSI_ARGS_((CONST char * path, int mode)); /* 25 */ + int (*fSpLLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 26 */ +#endif /* MAC_TCL */ +} TclIntPlatStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclIntPlatStubs *tclIntPlatStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclGetAndDetachPids +#define TclGetAndDetachPids \ + (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 0 */ +#endif +#ifndef TclpCloseFile +#define TclpCloseFile \ + (tclIntPlatStubsPtr->tclpCloseFile) /* 1 */ +#endif +#ifndef TclpCreateCommandChannel +#define TclpCreateCommandChannel \ + (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 2 */ +#endif +#ifndef TclpCreatePipe +#define TclpCreatePipe \ + (tclIntPlatStubsPtr->tclpCreatePipe) /* 3 */ +#endif +#ifndef TclpCreateProcess +#define TclpCreateProcess \ + (tclIntPlatStubsPtr->tclpCreateProcess) /* 4 */ +#endif +/* Slot 5 is reserved */ +#ifndef TclpMakeFile +#define TclpMakeFile \ + (tclIntPlatStubsPtr->tclpMakeFile) /* 6 */ +#endif +#ifndef TclpOpenFile +#define TclpOpenFile \ + (tclIntPlatStubsPtr->tclpOpenFile) /* 7 */ +#endif +#ifndef TclUnixWaitForFile +#define TclUnixWaitForFile \ + (tclIntPlatStubsPtr->tclUnixWaitForFile) /* 8 */ +#endif +#ifndef TclpCreateTempFile +#define TclpCreateTempFile \ + (tclIntPlatStubsPtr->tclpCreateTempFile) /* 9 */ +#endif +#ifndef TclpReaddir +#define TclpReaddir \ + (tclIntPlatStubsPtr->tclpReaddir) /* 10 */ +#endif +#ifndef TclpLocaltime_unix +#define TclpLocaltime_unix \ + (tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */ +#endif +#ifndef TclpGmtime_unix +#define TclpGmtime_unix \ + (tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */ +#endif +#ifndef TclpInetNtoa +#define TclpInetNtoa \ + (tclIntPlatStubsPtr->tclpInetNtoa) /* 13 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclWinConvertError +#define TclWinConvertError \ + (tclIntPlatStubsPtr->tclWinConvertError) /* 0 */ +#endif +#ifndef TclWinConvertWSAError +#define TclWinConvertWSAError \ + (tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */ +#endif +#ifndef TclWinGetServByName +#define TclWinGetServByName \ + (tclIntPlatStubsPtr->tclWinGetServByName) /* 2 */ +#endif +#ifndef TclWinGetSockOpt +#define TclWinGetSockOpt \ + (tclIntPlatStubsPtr->tclWinGetSockOpt) /* 3 */ +#endif +#ifndef TclWinGetTclInstance +#define TclWinGetTclInstance \ + (tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */ +#endif +/* Slot 5 is reserved */ +#ifndef TclWinNToHS +#define TclWinNToHS \ + (tclIntPlatStubsPtr->tclWinNToHS) /* 6 */ +#endif +#ifndef TclWinSetSockOpt +#define TclWinSetSockOpt \ + (tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */ +#endif +#ifndef TclpGetPid +#define TclpGetPid \ + (tclIntPlatStubsPtr->tclpGetPid) /* 8 */ +#endif +#ifndef TclWinGetPlatformId +#define TclWinGetPlatformId \ + (tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */ +#endif +/* Slot 10 is reserved */ +#ifndef TclGetAndDetachPids +#define TclGetAndDetachPids \ + (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 11 */ +#endif +#ifndef TclpCloseFile +#define TclpCloseFile \ + (tclIntPlatStubsPtr->tclpCloseFile) /* 12 */ +#endif +#ifndef TclpCreateCommandChannel +#define TclpCreateCommandChannel \ + (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 13 */ +#endif +#ifndef TclpCreatePipe +#define TclpCreatePipe \ + (tclIntPlatStubsPtr->tclpCreatePipe) /* 14 */ +#endif +#ifndef TclpCreateProcess +#define TclpCreateProcess \ + (tclIntPlatStubsPtr->tclpCreateProcess) /* 15 */ +#endif +/* Slot 16 is reserved */ +/* Slot 17 is reserved */ +#ifndef TclpMakeFile +#define TclpMakeFile \ + (tclIntPlatStubsPtr->tclpMakeFile) /* 18 */ +#endif +#ifndef TclpOpenFile +#define TclpOpenFile \ + (tclIntPlatStubsPtr->tclpOpenFile) /* 19 */ +#endif +#ifndef TclWinAddProcess +#define TclWinAddProcess \ + (tclIntPlatStubsPtr->tclWinAddProcess) /* 20 */ +#endif +/* Slot 21 is reserved */ +#ifndef TclpCreateTempFile +#define TclpCreateTempFile \ + (tclIntPlatStubsPtr->tclpCreateTempFile) /* 22 */ +#endif +#ifndef TclpGetTZName +#define TclpGetTZName \ + (tclIntPlatStubsPtr->tclpGetTZName) /* 23 */ +#endif +#ifndef TclWinNoBackslash +#define TclWinNoBackslash \ + (tclIntPlatStubsPtr->tclWinNoBackslash) /* 24 */ +#endif +#ifndef TclWinGetPlatform +#define TclWinGetPlatform \ + (tclIntPlatStubsPtr->tclWinGetPlatform) /* 25 */ +#endif +#ifndef TclWinSetInterfaces +#define TclWinSetInterfaces \ + (tclIntPlatStubsPtr->tclWinSetInterfaces) /* 26 */ +#endif +#ifndef TclWinFlushDirtyChannels +#define TclWinFlushDirtyChannels \ + (tclIntPlatStubsPtr->tclWinFlushDirtyChannels) /* 27 */ +#endif +#ifndef TclWinResetInterfaces +#define TclWinResetInterfaces \ + (tclIntPlatStubsPtr->tclWinResetInterfaces) /* 28 */ +#endif +#ifndef TclWinCPUID +#define TclWinCPUID \ + (tclIntPlatStubsPtr->tclWinCPUID) /* 29 */ +#endif +#endif /* __WIN32__ */ +#ifdef MAC_TCL +#ifndef TclpSysAlloc +#define TclpSysAlloc \ + (tclIntPlatStubsPtr->tclpSysAlloc) /* 0 */ +#endif +#ifndef TclpSysFree +#define TclpSysFree \ + (tclIntPlatStubsPtr->tclpSysFree) /* 1 */ +#endif +#ifndef TclpSysRealloc +#define TclpSysRealloc \ + (tclIntPlatStubsPtr->tclpSysRealloc) /* 2 */ +#endif +#ifndef TclpExit +#define TclpExit \ + (tclIntPlatStubsPtr->tclpExit) /* 3 */ +#endif +#ifndef FSpGetDefaultDir +#define FSpGetDefaultDir \ + (tclIntPlatStubsPtr->fSpGetDefaultDir) /* 4 */ +#endif +#ifndef FSpSetDefaultDir +#define FSpSetDefaultDir \ + (tclIntPlatStubsPtr->fSpSetDefaultDir) /* 5 */ +#endif +#ifndef FSpFindFolder +#define FSpFindFolder \ + (tclIntPlatStubsPtr->fSpFindFolder) /* 6 */ +#endif +#ifndef GetGlobalMouseTcl +#define GetGlobalMouseTcl \ + (tclIntPlatStubsPtr->getGlobalMouseTcl) /* 7 */ +#endif +#ifndef FSpGetDirectoryIDTcl +#define FSpGetDirectoryIDTcl \ + (tclIntPlatStubsPtr->fSpGetDirectoryIDTcl) /* 8 */ +#endif +#ifndef FSpOpenResFileCompatTcl +#define FSpOpenResFileCompatTcl \ + (tclIntPlatStubsPtr->fSpOpenResFileCompatTcl) /* 9 */ +#endif +#ifndef FSpCreateResFileCompatTcl +#define FSpCreateResFileCompatTcl \ + (tclIntPlatStubsPtr->fSpCreateResFileCompatTcl) /* 10 */ +#endif +#ifndef FSpLocationFromPath +#define FSpLocationFromPath \ + (tclIntPlatStubsPtr->fSpLocationFromPath) /* 11 */ +#endif +#ifndef FSpPathFromLocation +#define FSpPathFromLocation \ + (tclIntPlatStubsPtr->fSpPathFromLocation) /* 12 */ +#endif +#ifndef TclMacExitHandler +#define TclMacExitHandler \ + (tclIntPlatStubsPtr->tclMacExitHandler) /* 13 */ +#endif +#ifndef TclMacInitExitToShell +#define TclMacInitExitToShell \ + (tclIntPlatStubsPtr->tclMacInitExitToShell) /* 14 */ +#endif +#ifndef TclMacInstallExitToShellPatch +#define TclMacInstallExitToShellPatch \ + (tclIntPlatStubsPtr->tclMacInstallExitToShellPatch) /* 15 */ +#endif +#ifndef TclMacOSErrorToPosixError +#define TclMacOSErrorToPosixError \ + (tclIntPlatStubsPtr->tclMacOSErrorToPosixError) /* 16 */ +#endif +#ifndef TclMacRemoveTimer +#define TclMacRemoveTimer \ + (tclIntPlatStubsPtr->tclMacRemoveTimer) /* 17 */ +#endif +#ifndef TclMacStartTimer +#define TclMacStartTimer \ + (tclIntPlatStubsPtr->tclMacStartTimer) /* 18 */ +#endif +#ifndef TclMacTimerExpired +#define TclMacTimerExpired \ + (tclIntPlatStubsPtr->tclMacTimerExpired) /* 19 */ +#endif +#ifndef TclMacRegisterResourceFork +#define TclMacRegisterResourceFork \ + (tclIntPlatStubsPtr->tclMacRegisterResourceFork) /* 20 */ +#endif +#ifndef TclMacUnRegisterResourceFork +#define TclMacUnRegisterResourceFork \ + (tclIntPlatStubsPtr->tclMacUnRegisterResourceFork) /* 21 */ +#endif +#ifndef TclMacCreateEnv +#define TclMacCreateEnv \ + (tclIntPlatStubsPtr->tclMacCreateEnv) /* 22 */ +#endif +#ifndef TclMacFOpenHack +#define TclMacFOpenHack \ + (tclIntPlatStubsPtr->tclMacFOpenHack) /* 23 */ +#endif +#ifndef TclpGetTZName +#define TclpGetTZName \ + (tclIntPlatStubsPtr->tclpGetTZName) /* 24 */ +#endif +#ifndef TclMacChmod +#define TclMacChmod \ + (tclIntPlatStubsPtr->tclMacChmod) /* 25 */ +#endif +#ifndef FSpLLocationFromPath +#define FSpLLocationFromPath \ + (tclIntPlatStubsPtr->fSpLLocationFromPath) /* 26 */ +#endif +#endif /* MAC_TCL */ + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLINTPLATDECLS */ diff --git a/generic/tclPlatDecls.h b/generic/tclPlatDecls.h index fef6817..70a4c2b 100644 --- a/generic/tclPlatDecls.h +++ b/generic/tclPlatDecls.h @@ -1,197 +1,197 @@ -/* - * tclPlatDecls.h -- - * - * Declarations of platform specific Tcl APIs. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * All rights reserved. - * - * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.3 2004/05/17 16:25:14 dgp Exp $ - */ - -#ifndef _TCLPLATDECLS -#define _TCLPLATDECLS - -/* - * Pull in the typedef of TCHAR for windows. - */ -#if defined(__CYGWIN__) - typedef char TCHAR; -#elif defined(__WIN32__) && !defined(_TCHAR_DEFINED) -# include -# ifndef _TCHAR_DEFINED - /* Borland seems to forget to set this. */ - typedef _TCHAR TCHAR; -# define _TCHAR_DEFINED -# endif -# if defined(_MSC_VER) && defined(__STDC__) - /* MSVC++ misses this. */ - typedef _TCHAR TCHAR; -# endif -#endif - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -#ifdef __WIN32__ -/* 0 */ -EXTERN TCHAR * Tcl_WinUtfToTChar _ANSI_ARGS_((CONST char * str, - int len, Tcl_DString * dsPtr)); -/* 1 */ -EXTERN char * Tcl_WinTCharToUtf _ANSI_ARGS_((CONST TCHAR * str, - int len, Tcl_DString * dsPtr)); -#endif /* __WIN32__ */ -#ifdef MAC_TCL -/* 0 */ -EXTERN void Tcl_MacSetEventProc _ANSI_ARGS_(( - Tcl_MacConvertEventPtr procPtr)); -/* 1 */ -EXTERN char * Tcl_MacConvertTextResource _ANSI_ARGS_(( - Handle resource)); -/* 2 */ -EXTERN int Tcl_MacEvalResource _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * resourceName, - int resourceNumber, CONST char * fileName)); -/* 3 */ -EXTERN Handle Tcl_MacFindResource _ANSI_ARGS_((Tcl_Interp * interp, - long resourceType, CONST char * resourceName, - int resourceNumber, CONST char * resFileRef, - int * releaseIt)); -/* 4 */ -EXTERN int Tcl_GetOSTypeFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - OSType * osTypePtr)); -/* 5 */ -EXTERN void Tcl_SetOSTypeObj _ANSI_ARGS_((Tcl_Obj * objPtr, - OSType osType)); -/* 6 */ -EXTERN Tcl_Obj * Tcl_NewOSTypeObj _ANSI_ARGS_((OSType osType)); -/* 7 */ -EXTERN int strncasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, size_t n)); -/* 8 */ -EXTERN int strcasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2)); -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL -/* 0 */ -EXTERN int Tcl_MacOSXOpenBundleResources _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * bundleName, - int hasResourceFile, int maxPathLen, - char * libraryPath)); -/* 1 */ -EXTERN int Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * bundleName, - CONST char * bundleVersion, - int hasResourceFile, int maxPathLen, - char * libraryPath)); -#endif /* MAC_OSX_TCL */ - -typedef struct TclPlatStubs { - int magic; - struct TclPlatStubHooks *hooks; - -#ifdef __WIN32__ - TCHAR * (*tcl_WinUtfToTChar) _ANSI_ARGS_((CONST char * str, int len, Tcl_DString * dsPtr)); /* 0 */ - char * (*tcl_WinTCharToUtf) _ANSI_ARGS_((CONST TCHAR * str, int len, Tcl_DString * dsPtr)); /* 1 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void (*tcl_MacSetEventProc) _ANSI_ARGS_((Tcl_MacConvertEventPtr procPtr)); /* 0 */ - char * (*tcl_MacConvertTextResource) _ANSI_ARGS_((Handle resource)); /* 1 */ - int (*tcl_MacEvalResource) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * resourceName, int resourceNumber, CONST char * fileName)); /* 2 */ - Handle (*tcl_MacFindResource) _ANSI_ARGS_((Tcl_Interp * interp, long resourceType, CONST char * resourceName, int resourceNumber, CONST char * resFileRef, int * releaseIt)); /* 3 */ - int (*tcl_GetOSTypeFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, OSType * osTypePtr)); /* 4 */ - void (*tcl_SetOSTypeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, OSType osType)); /* 5 */ - Tcl_Obj * (*tcl_NewOSTypeObj) _ANSI_ARGS_((OSType osType)); /* 6 */ - int (*strncasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, size_t n)); /* 7 */ - int (*strcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2)); /* 8 */ -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL - int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */ - int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */ -#endif /* MAC_OSX_TCL */ -} TclPlatStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclPlatStubs *tclPlatStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#ifdef __WIN32__ -#ifndef Tcl_WinUtfToTChar -#define Tcl_WinUtfToTChar \ - (tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */ -#endif -#ifndef Tcl_WinTCharToUtf -#define Tcl_WinTCharToUtf \ - (tclPlatStubsPtr->tcl_WinTCharToUtf) /* 1 */ -#endif -#endif /* __WIN32__ */ -#ifdef MAC_TCL -#ifndef Tcl_MacSetEventProc -#define Tcl_MacSetEventProc \ - (tclPlatStubsPtr->tcl_MacSetEventProc) /* 0 */ -#endif -#ifndef Tcl_MacConvertTextResource -#define Tcl_MacConvertTextResource \ - (tclPlatStubsPtr->tcl_MacConvertTextResource) /* 1 */ -#endif -#ifndef Tcl_MacEvalResource -#define Tcl_MacEvalResource \ - (tclPlatStubsPtr->tcl_MacEvalResource) /* 2 */ -#endif -#ifndef Tcl_MacFindResource -#define Tcl_MacFindResource \ - (tclPlatStubsPtr->tcl_MacFindResource) /* 3 */ -#endif -#ifndef Tcl_GetOSTypeFromObj -#define Tcl_GetOSTypeFromObj \ - (tclPlatStubsPtr->tcl_GetOSTypeFromObj) /* 4 */ -#endif -#ifndef Tcl_SetOSTypeObj -#define Tcl_SetOSTypeObj \ - (tclPlatStubsPtr->tcl_SetOSTypeObj) /* 5 */ -#endif -#ifndef Tcl_NewOSTypeObj -#define Tcl_NewOSTypeObj \ - (tclPlatStubsPtr->tcl_NewOSTypeObj) /* 6 */ -#endif -#ifndef strncasecmp -#define strncasecmp \ - (tclPlatStubsPtr->strncasecmp) /* 7 */ -#endif -#ifndef strcasecmp -#define strcasecmp \ - (tclPlatStubsPtr->strcasecmp) /* 8 */ -#endif -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL -#ifndef Tcl_MacOSXOpenBundleResources -#define Tcl_MacOSXOpenBundleResources \ - (tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */ -#endif -#ifndef Tcl_MacOSXOpenVersionedBundleResources -#define Tcl_MacOSXOpenVersionedBundleResources \ - (tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */ -#endif -#endif /* MAC_OSX_TCL */ - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLPLATDECLS */ - - +/* + * tclPlatDecls.h -- + * + * Declarations of platform specific Tcl APIs. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * All rights reserved. + * + * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.4 2004/06/05 17:25:40 kennykb Exp $ + */ + +#ifndef _TCLPLATDECLS +#define _TCLPLATDECLS + +/* + * Pull in the typedef of TCHAR for windows. + */ +#if defined(__CYGWIN__) + typedef char TCHAR; +#elif defined(__WIN32__) && !defined(_TCHAR_DEFINED) +# include +# ifndef _TCHAR_DEFINED + /* Borland seems to forget to set this. */ + typedef _TCHAR TCHAR; +# define _TCHAR_DEFINED +# endif +# if defined(_MSC_VER) && defined(__STDC__) + /* MSVC++ misses this. */ + typedef _TCHAR TCHAR; +# endif +#endif + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +#ifdef __WIN32__ +/* 0 */ +EXTERN TCHAR * Tcl_WinUtfToTChar _ANSI_ARGS_((CONST char * str, + int len, Tcl_DString * dsPtr)); +/* 1 */ +EXTERN char * Tcl_WinTCharToUtf _ANSI_ARGS_((CONST TCHAR * str, + int len, Tcl_DString * dsPtr)); +#endif /* __WIN32__ */ +#ifdef MAC_TCL +/* 0 */ +EXTERN void Tcl_MacSetEventProc _ANSI_ARGS_(( + Tcl_MacConvertEventPtr procPtr)); +/* 1 */ +EXTERN char * Tcl_MacConvertTextResource _ANSI_ARGS_(( + Handle resource)); +/* 2 */ +EXTERN int Tcl_MacEvalResource _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * resourceName, + int resourceNumber, CONST char * fileName)); +/* 3 */ +EXTERN Handle Tcl_MacFindResource _ANSI_ARGS_((Tcl_Interp * interp, + long resourceType, CONST char * resourceName, + int resourceNumber, CONST char * resFileRef, + int * releaseIt)); +/* 4 */ +EXTERN int Tcl_GetOSTypeFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + OSType * osTypePtr)); +/* 5 */ +EXTERN void Tcl_SetOSTypeObj _ANSI_ARGS_((Tcl_Obj * objPtr, + OSType osType)); +/* 6 */ +EXTERN Tcl_Obj * Tcl_NewOSTypeObj _ANSI_ARGS_((OSType osType)); +/* 7 */ +EXTERN int strncasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, size_t n)); +/* 8 */ +EXTERN int strcasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2)); +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL +/* 0 */ +EXTERN int Tcl_MacOSXOpenBundleResources _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * bundleName, + int hasResourceFile, int maxPathLen, + char * libraryPath)); +/* 1 */ +EXTERN int Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * bundleName, + CONST char * bundleVersion, + int hasResourceFile, int maxPathLen, + char * libraryPath)); +#endif /* MAC_OSX_TCL */ + +typedef struct TclPlatStubs { + int magic; + struct TclPlatStubHooks *hooks; + +#ifdef __WIN32__ + TCHAR * (*tcl_WinUtfToTChar) _ANSI_ARGS_((CONST char * str, int len, Tcl_DString * dsPtr)); /* 0 */ + char * (*tcl_WinTCharToUtf) _ANSI_ARGS_((CONST TCHAR * str, int len, Tcl_DString * dsPtr)); /* 1 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void (*tcl_MacSetEventProc) _ANSI_ARGS_((Tcl_MacConvertEventPtr procPtr)); /* 0 */ + char * (*tcl_MacConvertTextResource) _ANSI_ARGS_((Handle resource)); /* 1 */ + int (*tcl_MacEvalResource) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * resourceName, int resourceNumber, CONST char * fileName)); /* 2 */ + Handle (*tcl_MacFindResource) _ANSI_ARGS_((Tcl_Interp * interp, long resourceType, CONST char * resourceName, int resourceNumber, CONST char * resFileRef, int * releaseIt)); /* 3 */ + int (*tcl_GetOSTypeFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, OSType * osTypePtr)); /* 4 */ + void (*tcl_SetOSTypeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, OSType osType)); /* 5 */ + Tcl_Obj * (*tcl_NewOSTypeObj) _ANSI_ARGS_((OSType osType)); /* 6 */ + int (*strncasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, size_t n)); /* 7 */ + int (*strcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2)); /* 8 */ +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL + int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */ + int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */ +#endif /* MAC_OSX_TCL */ +} TclPlatStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclPlatStubs *tclPlatStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#ifdef __WIN32__ +#ifndef Tcl_WinUtfToTChar +#define Tcl_WinUtfToTChar \ + (tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */ +#endif +#ifndef Tcl_WinTCharToUtf +#define Tcl_WinTCharToUtf \ + (tclPlatStubsPtr->tcl_WinTCharToUtf) /* 1 */ +#endif +#endif /* __WIN32__ */ +#ifdef MAC_TCL +#ifndef Tcl_MacSetEventProc +#define Tcl_MacSetEventProc \ + (tclPlatStubsPtr->tcl_MacSetEventProc) /* 0 */ +#endif +#ifndef Tcl_MacConvertTextResource +#define Tcl_MacConvertTextResource \ + (tclPlatStubsPtr->tcl_MacConvertTextResource) /* 1 */ +#endif +#ifndef Tcl_MacEvalResource +#define Tcl_MacEvalResource \ + (tclPlatStubsPtr->tcl_MacEvalResource) /* 2 */ +#endif +#ifndef Tcl_MacFindResource +#define Tcl_MacFindResource \ + (tclPlatStubsPtr->tcl_MacFindResource) /* 3 */ +#endif +#ifndef Tcl_GetOSTypeFromObj +#define Tcl_GetOSTypeFromObj \ + (tclPlatStubsPtr->tcl_GetOSTypeFromObj) /* 4 */ +#endif +#ifndef Tcl_SetOSTypeObj +#define Tcl_SetOSTypeObj \ + (tclPlatStubsPtr->tcl_SetOSTypeObj) /* 5 */ +#endif +#ifndef Tcl_NewOSTypeObj +#define Tcl_NewOSTypeObj \ + (tclPlatStubsPtr->tcl_NewOSTypeObj) /* 6 */ +#endif +#ifndef strncasecmp +#define strncasecmp \ + (tclPlatStubsPtr->strncasecmp) /* 7 */ +#endif +#ifndef strcasecmp +#define strcasecmp \ + (tclPlatStubsPtr->strcasecmp) /* 8 */ +#endif +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL +#ifndef Tcl_MacOSXOpenBundleResources +#define Tcl_MacOSXOpenBundleResources \ + (tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */ +#endif +#ifndef Tcl_MacOSXOpenVersionedBundleResources +#define Tcl_MacOSXOpenVersionedBundleResources \ + (tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */ +#endif +#endif /* MAC_OSX_TCL */ + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLPLATDECLS */ + + diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index 9f758a1..98f517d 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -1,941 +1,942 @@ -/* - * tclStubInit.c -- - * - * This file contains the initializers for the Tcl stub vectors. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.5 2004/05/17 16:25:14 dgp Exp $ - */ - -#include "tclInt.h" -#include "tclPort.h" - -/* - * Remove macros that will interfere with the definitions below. - */ - -#undef Tcl_Alloc -#undef Tcl_Free -#undef Tcl_Realloc -#undef Tcl_NewBooleanObj -#undef Tcl_NewByteArrayObj -#undef Tcl_NewDoubleObj -#undef Tcl_NewIntObj -#undef Tcl_NewListObj -#undef Tcl_NewLongObj -#undef Tcl_NewObj -#undef Tcl_NewStringObj -#undef Tcl_DumpActiveMemory -#undef Tcl_ValidateAllMemory -#if TCL_PRESERVE_BINARY_COMPATABILITY -# undef Tcl_FindHashEntry -# undef Tcl_CreateHashEntry -#endif - -/* - * Keep a record of the original Notifier procedures, created in the - * same compilation unit as the stub tables so we can later do reliable, - * portable comparisons to see whether a Tcl_SetNotifier() call swapped - * new routines into the stub table. - */ - -Tcl_NotifierProcs tclOriginalNotifier = { - Tcl_SetTimer, - Tcl_WaitForEvent, -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_CreateFileHandler, - Tcl_DeleteFileHandler, -#else - NULL, - NULL, -#endif - NULL, - NULL, - NULL, - NULL -}; - -/* - * WARNING: The contents of this file is automatically generated by the - * tools/genStubs.tcl script. Any modifications to the function declarations - * below should be made in the generic/tcl.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -TclIntStubs tclIntStubs = { - TCL_STUB_MAGIC, - NULL, - NULL, /* 0 */ - TclAccessDeleteProc, /* 1 */ - TclAccessInsertProc, /* 2 */ - TclAllocateFreeObjects, /* 3 */ - NULL, /* 4 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclCleanupChildren, /* 5 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclCleanupChildren, /* 5 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 5 */ -#endif /* MAC_TCL */ - TclCleanupCommand, /* 6 */ - TclCopyAndCollapse, /* 7 */ - TclCopyChannel, /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclCreatePipeline, /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclCreatePipeline, /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 9 */ -#endif /* MAC_TCL */ - TclCreateProc, /* 10 */ - TclDeleteCompiledLocalVars, /* 11 */ - TclDeleteVars, /* 12 */ - TclDoGlob, /* 13 */ - TclDumpMemoryInfo, /* 14 */ - NULL, /* 15 */ - TclExprFloatError, /* 16 */ - NULL, /* 17 */ - NULL, /* 18 */ - NULL, /* 19 */ - NULL, /* 20 */ - NULL, /* 21 */ - TclFindElement, /* 22 */ - TclFindProc, /* 23 */ - TclFormatInt, /* 24 */ - TclFreePackageInfo, /* 25 */ - NULL, /* 26 */ - TclGetDate, /* 27 */ - TclpGetDefaultStdChannel, /* 28 */ - NULL, /* 29 */ - NULL, /* 30 */ - TclGetExtension, /* 31 */ - TclGetFrame, /* 32 */ - TclGetInterpProc, /* 33 */ - TclGetIntForIndex, /* 34 */ - NULL, /* 35 */ - TclGetLong, /* 36 */ - TclGetLoadedPackages, /* 37 */ - TclGetNamespaceForQualName, /* 38 */ - TclGetObjInterpProc, /* 39 */ - TclGetOpenMode, /* 40 */ - TclGetOriginalCommand, /* 41 */ - TclpGetUserHome, /* 42 */ - TclGlobalInvoke, /* 43 */ - TclGuessPackageName, /* 44 */ - TclHideUnsafeCommands, /* 45 */ - TclInExit, /* 46 */ - NULL, /* 47 */ - NULL, /* 48 */ - TclIncrVar2, /* 49 */ - TclInitCompiledLocals, /* 50 */ - TclInterpInit, /* 51 */ - TclInvoke, /* 52 */ - TclInvokeObjectCommand, /* 53 */ - TclInvokeStringCommand, /* 54 */ - TclIsProc, /* 55 */ - NULL, /* 56 */ - NULL, /* 57 */ - TclLookupVar, /* 58 */ - NULL, /* 59 */ - TclNeedSpace, /* 60 */ - TclNewProcBodyObj, /* 61 */ - TclObjCommandComplete, /* 62 */ - TclObjInterpProc, /* 63 */ - TclObjInvoke, /* 64 */ - TclObjInvokeGlobal, /* 65 */ - TclOpenFileChannelDeleteProc, /* 66 */ - TclOpenFileChannelInsertProc, /* 67 */ - NULL, /* 68 */ - TclpAlloc, /* 69 */ - NULL, /* 70 */ - NULL, /* 71 */ - NULL, /* 72 */ - NULL, /* 73 */ - TclpFree, /* 74 */ - TclpGetClicks, /* 75 */ - TclpGetSeconds, /* 76 */ - TclpGetTime, /* 77 */ - TclpGetTimeZone, /* 78 */ - NULL, /* 79 */ - NULL, /* 80 */ - TclpRealloc, /* 81 */ - NULL, /* 82 */ - NULL, /* 83 */ - NULL, /* 84 */ - NULL, /* 85 */ - NULL, /* 86 */ - NULL, /* 87 */ - TclPrecTraceProc, /* 88 */ - TclPreventAliasLoop, /* 89 */ - NULL, /* 90 */ - TclProcCleanupProc, /* 91 */ - TclProcCompileProc, /* 92 */ - TclProcDeleteProc, /* 93 */ - TclProcInterpProc, /* 94 */ - NULL, /* 95 */ - TclRenameCommand, /* 96 */ - TclResetShadowedCmdRefs, /* 97 */ - TclServiceIdle, /* 98 */ - NULL, /* 99 */ - NULL, /* 100 */ - TclSetPreInitScript, /* 101 */ - TclSetupEnv, /* 102 */ - TclSockGetPort, /* 103 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclSockMinimumBuffers, /* 104 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclSockMinimumBuffers, /* 104 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 104 */ -#endif /* MAC_TCL */ - NULL, /* 105 */ - TclStatDeleteProc, /* 106 */ - TclStatInsertProc, /* 107 */ - TclTeardownNamespace, /* 108 */ - TclUpdateReturnInfo, /* 109 */ - NULL, /* 110 */ - Tcl_AddInterpResolvers, /* 111 */ - Tcl_AppendExportList, /* 112 */ - Tcl_CreateNamespace, /* 113 */ - Tcl_DeleteNamespace, /* 114 */ - Tcl_Export, /* 115 */ - Tcl_FindCommand, /* 116 */ - Tcl_FindNamespace, /* 117 */ - Tcl_GetInterpResolvers, /* 118 */ - Tcl_GetNamespaceResolvers, /* 119 */ - Tcl_FindNamespaceVar, /* 120 */ - Tcl_ForgetImport, /* 121 */ - Tcl_GetCommandFromObj, /* 122 */ - Tcl_GetCommandFullName, /* 123 */ - Tcl_GetCurrentNamespace, /* 124 */ - Tcl_GetGlobalNamespace, /* 125 */ - Tcl_GetVariableFullName, /* 126 */ - Tcl_Import, /* 127 */ - Tcl_PopCallFrame, /* 128 */ - Tcl_PushCallFrame, /* 129 */ - Tcl_RemoveInterpResolvers, /* 130 */ - Tcl_SetNamespaceResolvers, /* 131 */ - TclpHasSockets, /* 132 */ - TclpGetDate, /* 133 */ - TclpStrftime, /* 134 */ - TclpCheckStackSpace, /* 135 */ - NULL, /* 136 */ - NULL, /* 137 */ - TclGetEnv, /* 138 */ - NULL, /* 139 */ - TclLooksLikeInt, /* 140 */ - TclpGetCwd, /* 141 */ - TclSetByteCodeFromAny, /* 142 */ - TclAddLiteralObj, /* 143 */ - TclHideLiteral, /* 144 */ - TclGetAuxDataType, /* 145 */ - TclHandleCreate, /* 146 */ - TclHandleFree, /* 147 */ - TclHandlePreserve, /* 148 */ - TclHandleRelease, /* 149 */ - TclRegAbout, /* 150 */ - TclRegExpRangeUniChar, /* 151 */ - TclSetLibraryPath, /* 152 */ - TclGetLibraryPath, /* 153 */ - NULL, /* 154 */ - NULL, /* 155 */ - TclRegError, /* 156 */ - TclVarTraceExists, /* 157 */ - TclSetStartupScriptFileName, /* 158 */ - TclGetStartupScriptFileName, /* 159 */ - NULL, /* 160 */ - TclChannelTransform, /* 161 */ - TclChannelEventScriptInvoker, /* 162 */ - TclGetInstructionTable, /* 163 */ - TclExpandCodeArray, /* 164 */ - TclpSetInitialEncodings, /* 165 */ - TclListObjSetElement, /* 166 */ - TclSetStartupScriptPath, /* 167 */ - TclGetStartupScriptPath, /* 168 */ - TclpUtfNcmp2, /* 169 */ - TclCheckInterpTraces, /* 170 */ - TclCheckExecutionTraces, /* 171 */ - TclInThreadExit, /* 172 */ - TclUniCharMatch, /* 173 */ - NULL, /* 174 */ - NULL, /* 175 */ - NULL, /* 176 */ - NULL, /* 177 */ - NULL, /* 178 */ - NULL, /* 179 */ - NULL, /* 180 */ - NULL, /* 181 */ - TclpLocaltime, /* 182 */ - TclpGmtime, /* 183 */ -}; - -TclIntPlatStubs tclIntPlatStubs = { - TCL_STUB_MAGIC, - NULL, -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclGetAndDetachPids, /* 0 */ - TclpCloseFile, /* 1 */ - TclpCreateCommandChannel, /* 2 */ - TclpCreatePipe, /* 3 */ - TclpCreateProcess, /* 4 */ - NULL, /* 5 */ - TclpMakeFile, /* 6 */ - TclpOpenFile, /* 7 */ - TclUnixWaitForFile, /* 8 */ - TclpCreateTempFile, /* 9 */ - TclpReaddir, /* 10 */ - TclpLocaltime_unix, /* 11 */ - TclpGmtime_unix, /* 12 */ - TclpInetNtoa, /* 13 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclWinConvertError, /* 0 */ - TclWinConvertWSAError, /* 1 */ - TclWinGetServByName, /* 2 */ - TclWinGetSockOpt, /* 3 */ - TclWinGetTclInstance, /* 4 */ - NULL, /* 5 */ - TclWinNToHS, /* 6 */ - TclWinSetSockOpt, /* 7 */ - TclpGetPid, /* 8 */ - TclWinGetPlatformId, /* 9 */ - NULL, /* 10 */ - TclGetAndDetachPids, /* 11 */ - TclpCloseFile, /* 12 */ - TclpCreateCommandChannel, /* 13 */ - TclpCreatePipe, /* 14 */ - TclpCreateProcess, /* 15 */ - NULL, /* 16 */ - NULL, /* 17 */ - TclpMakeFile, /* 18 */ - TclpOpenFile, /* 19 */ - TclWinAddProcess, /* 20 */ - NULL, /* 21 */ - TclpCreateTempFile, /* 22 */ - TclpGetTZName, /* 23 */ - TclWinNoBackslash, /* 24 */ - TclWinGetPlatform, /* 25 */ - TclWinSetInterfaces, /* 26 */ - TclWinFlushDirtyChannels, /* 27 */ - TclWinResetInterfaces, /* 28 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - TclpSysAlloc, /* 0 */ - TclpSysFree, /* 1 */ - TclpSysRealloc, /* 2 */ - TclpExit, /* 3 */ - FSpGetDefaultDir, /* 4 */ - FSpSetDefaultDir, /* 5 */ - FSpFindFolder, /* 6 */ - GetGlobalMouseTcl, /* 7 */ - FSpGetDirectoryIDTcl, /* 8 */ - FSpOpenResFileCompatTcl, /* 9 */ - FSpCreateResFileCompatTcl, /* 10 */ - FSpLocationFromPath, /* 11 */ - FSpPathFromLocation, /* 12 */ - TclMacExitHandler, /* 13 */ - TclMacInitExitToShell, /* 14 */ - TclMacInstallExitToShellPatch, /* 15 */ - TclMacOSErrorToPosixError, /* 16 */ - TclMacRemoveTimer, /* 17 */ - TclMacStartTimer, /* 18 */ - TclMacTimerExpired, /* 19 */ - TclMacRegisterResourceFork, /* 20 */ - TclMacUnRegisterResourceFork, /* 21 */ - TclMacCreateEnv, /* 22 */ - TclMacFOpenHack, /* 23 */ - TclpGetTZName, /* 24 */ - TclMacChmod, /* 25 */ - FSpLLocationFromPath, /* 26 */ -#endif /* MAC_TCL */ -}; - -TclPlatStubs tclPlatStubs = { - TCL_STUB_MAGIC, - NULL, -#ifdef __WIN32__ - Tcl_WinUtfToTChar, /* 0 */ - Tcl_WinTCharToUtf, /* 1 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - Tcl_MacSetEventProc, /* 0 */ - Tcl_MacConvertTextResource, /* 1 */ - Tcl_MacEvalResource, /* 2 */ - Tcl_MacFindResource, /* 3 */ - Tcl_GetOSTypeFromObj, /* 4 */ - Tcl_SetOSTypeObj, /* 5 */ - Tcl_NewOSTypeObj, /* 6 */ - strncasecmp, /* 7 */ - strcasecmp, /* 8 */ -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL - Tcl_MacOSXOpenBundleResources, /* 0 */ - Tcl_MacOSXOpenVersionedBundleResources, /* 1 */ -#endif /* MAC_OSX_TCL */ -}; - -static TclStubHooks tclStubHooks = { - &tclPlatStubs, - &tclIntStubs, - &tclIntPlatStubs -}; - -TclStubs tclStubs = { - TCL_STUB_MAGIC, - &tclStubHooks, - Tcl_PkgProvideEx, /* 0 */ - Tcl_PkgRequireEx, /* 1 */ - Tcl_Panic, /* 2 */ - Tcl_Alloc, /* 3 */ - Tcl_Free, /* 4 */ - Tcl_Realloc, /* 5 */ - Tcl_DbCkalloc, /* 6 */ - Tcl_DbCkfree, /* 7 */ - Tcl_DbCkrealloc, /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_CreateFileHandler, /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 9 */ -#endif /* MAC_TCL */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_DeleteFileHandler, /* 10 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 10 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 10 */ -#endif /* MAC_TCL */ - Tcl_SetTimer, /* 11 */ - Tcl_Sleep, /* 12 */ - Tcl_WaitForEvent, /* 13 */ - Tcl_AppendAllObjTypes, /* 14 */ - Tcl_AppendStringsToObj, /* 15 */ - Tcl_AppendToObj, /* 16 */ - Tcl_ConcatObj, /* 17 */ - Tcl_ConvertToType, /* 18 */ - Tcl_DbDecrRefCount, /* 19 */ - Tcl_DbIncrRefCount, /* 20 */ - Tcl_DbIsShared, /* 21 */ - Tcl_DbNewBooleanObj, /* 22 */ - Tcl_DbNewByteArrayObj, /* 23 */ - Tcl_DbNewDoubleObj, /* 24 */ - Tcl_DbNewListObj, /* 25 */ - Tcl_DbNewLongObj, /* 26 */ - Tcl_DbNewObj, /* 27 */ - Tcl_DbNewStringObj, /* 28 */ - Tcl_DuplicateObj, /* 29 */ - TclFreeObj, /* 30 */ - Tcl_GetBoolean, /* 31 */ - Tcl_GetBooleanFromObj, /* 32 */ - Tcl_GetByteArrayFromObj, /* 33 */ - Tcl_GetDouble, /* 34 */ - Tcl_GetDoubleFromObj, /* 35 */ - Tcl_GetIndexFromObj, /* 36 */ - Tcl_GetInt, /* 37 */ - Tcl_GetIntFromObj, /* 38 */ - Tcl_GetLongFromObj, /* 39 */ - Tcl_GetObjType, /* 40 */ - Tcl_GetStringFromObj, /* 41 */ - Tcl_InvalidateStringRep, /* 42 */ - Tcl_ListObjAppendList, /* 43 */ - Tcl_ListObjAppendElement, /* 44 */ - Tcl_ListObjGetElements, /* 45 */ - Tcl_ListObjIndex, /* 46 */ - Tcl_ListObjLength, /* 47 */ - Tcl_ListObjReplace, /* 48 */ - Tcl_NewBooleanObj, /* 49 */ - Tcl_NewByteArrayObj, /* 50 */ - Tcl_NewDoubleObj, /* 51 */ - Tcl_NewIntObj, /* 52 */ - Tcl_NewListObj, /* 53 */ - Tcl_NewLongObj, /* 54 */ - Tcl_NewObj, /* 55 */ - Tcl_NewStringObj, /* 56 */ - Tcl_SetBooleanObj, /* 57 */ - Tcl_SetByteArrayLength, /* 58 */ - Tcl_SetByteArrayObj, /* 59 */ - Tcl_SetDoubleObj, /* 60 */ - Tcl_SetIntObj, /* 61 */ - Tcl_SetListObj, /* 62 */ - Tcl_SetLongObj, /* 63 */ - Tcl_SetObjLength, /* 64 */ - Tcl_SetStringObj, /* 65 */ - Tcl_AddErrorInfo, /* 66 */ - Tcl_AddObjErrorInfo, /* 67 */ - Tcl_AllowExceptions, /* 68 */ - Tcl_AppendElement, /* 69 */ - Tcl_AppendResult, /* 70 */ - Tcl_AsyncCreate, /* 71 */ - Tcl_AsyncDelete, /* 72 */ - Tcl_AsyncInvoke, /* 73 */ - Tcl_AsyncMark, /* 74 */ - Tcl_AsyncReady, /* 75 */ - Tcl_BackgroundError, /* 76 */ - Tcl_Backslash, /* 77 */ - Tcl_BadChannelOption, /* 78 */ - Tcl_CallWhenDeleted, /* 79 */ - Tcl_CancelIdleCall, /* 80 */ - Tcl_Close, /* 81 */ - Tcl_CommandComplete, /* 82 */ - Tcl_Concat, /* 83 */ - Tcl_ConvertElement, /* 84 */ - Tcl_ConvertCountedElement, /* 85 */ - Tcl_CreateAlias, /* 86 */ - Tcl_CreateAliasObj, /* 87 */ - Tcl_CreateChannel, /* 88 */ - Tcl_CreateChannelHandler, /* 89 */ - Tcl_CreateCloseHandler, /* 90 */ - Tcl_CreateCommand, /* 91 */ - Tcl_CreateEventSource, /* 92 */ - Tcl_CreateExitHandler, /* 93 */ - Tcl_CreateInterp, /* 94 */ - Tcl_CreateMathFunc, /* 95 */ - Tcl_CreateObjCommand, /* 96 */ - Tcl_CreateSlave, /* 97 */ - Tcl_CreateTimerHandler, /* 98 */ - Tcl_CreateTrace, /* 99 */ - Tcl_DeleteAssocData, /* 100 */ - Tcl_DeleteChannelHandler, /* 101 */ - Tcl_DeleteCloseHandler, /* 102 */ - Tcl_DeleteCommand, /* 103 */ - Tcl_DeleteCommandFromToken, /* 104 */ - Tcl_DeleteEvents, /* 105 */ - Tcl_DeleteEventSource, /* 106 */ - Tcl_DeleteExitHandler, /* 107 */ - Tcl_DeleteHashEntry, /* 108 */ - Tcl_DeleteHashTable, /* 109 */ - Tcl_DeleteInterp, /* 110 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_DetachPids, /* 111 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_DetachPids, /* 111 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 111 */ -#endif /* MAC_TCL */ - Tcl_DeleteTimerHandler, /* 112 */ - Tcl_DeleteTrace, /* 113 */ - Tcl_DontCallWhenDeleted, /* 114 */ - Tcl_DoOneEvent, /* 115 */ - Tcl_DoWhenIdle, /* 116 */ - Tcl_DStringAppend, /* 117 */ - Tcl_DStringAppendElement, /* 118 */ - Tcl_DStringEndSublist, /* 119 */ - Tcl_DStringFree, /* 120 */ - Tcl_DStringGetResult, /* 121 */ - Tcl_DStringInit, /* 122 */ - Tcl_DStringResult, /* 123 */ - Tcl_DStringSetLength, /* 124 */ - Tcl_DStringStartSublist, /* 125 */ - Tcl_Eof, /* 126 */ - Tcl_ErrnoId, /* 127 */ - Tcl_ErrnoMsg, /* 128 */ - Tcl_Eval, /* 129 */ - Tcl_EvalFile, /* 130 */ - Tcl_EvalObj, /* 131 */ - Tcl_EventuallyFree, /* 132 */ - Tcl_Exit, /* 133 */ - Tcl_ExposeCommand, /* 134 */ - Tcl_ExprBoolean, /* 135 */ - Tcl_ExprBooleanObj, /* 136 */ - Tcl_ExprDouble, /* 137 */ - Tcl_ExprDoubleObj, /* 138 */ - Tcl_ExprLong, /* 139 */ - Tcl_ExprLongObj, /* 140 */ - Tcl_ExprObj, /* 141 */ - Tcl_ExprString, /* 142 */ - Tcl_Finalize, /* 143 */ - Tcl_FindExecutable, /* 144 */ - Tcl_FirstHashEntry, /* 145 */ - Tcl_Flush, /* 146 */ - Tcl_FreeResult, /* 147 */ - Tcl_GetAlias, /* 148 */ - Tcl_GetAliasObj, /* 149 */ - Tcl_GetAssocData, /* 150 */ - Tcl_GetChannel, /* 151 */ - Tcl_GetChannelBufferSize, /* 152 */ - Tcl_GetChannelHandle, /* 153 */ - Tcl_GetChannelInstanceData, /* 154 */ - Tcl_GetChannelMode, /* 155 */ - Tcl_GetChannelName, /* 156 */ - Tcl_GetChannelOption, /* 157 */ - Tcl_GetChannelType, /* 158 */ - Tcl_GetCommandInfo, /* 159 */ - Tcl_GetCommandName, /* 160 */ - Tcl_GetErrno, /* 161 */ - Tcl_GetHostName, /* 162 */ - Tcl_GetInterpPath, /* 163 */ - Tcl_GetMaster, /* 164 */ - Tcl_GetNameOfExecutable, /* 165 */ - Tcl_GetObjResult, /* 166 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_GetOpenFile, /* 167 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 167 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 167 */ -#endif /* MAC_TCL */ - Tcl_GetPathType, /* 168 */ - Tcl_Gets, /* 169 */ - Tcl_GetsObj, /* 170 */ - Tcl_GetServiceMode, /* 171 */ - Tcl_GetSlave, /* 172 */ - Tcl_GetStdChannel, /* 173 */ - Tcl_GetStringResult, /* 174 */ - Tcl_GetVar, /* 175 */ - Tcl_GetVar2, /* 176 */ - Tcl_GlobalEval, /* 177 */ - Tcl_GlobalEvalObj, /* 178 */ - Tcl_HideCommand, /* 179 */ - Tcl_Init, /* 180 */ - Tcl_InitHashTable, /* 181 */ - Tcl_InputBlocked, /* 182 */ - Tcl_InputBuffered, /* 183 */ - Tcl_InterpDeleted, /* 184 */ - Tcl_IsSafe, /* 185 */ - Tcl_JoinPath, /* 186 */ - Tcl_LinkVar, /* 187 */ - NULL, /* 188 */ - Tcl_MakeFileChannel, /* 189 */ - Tcl_MakeSafe, /* 190 */ - Tcl_MakeTcpClientChannel, /* 191 */ - Tcl_Merge, /* 192 */ - Tcl_NextHashEntry, /* 193 */ - Tcl_NotifyChannel, /* 194 */ - Tcl_ObjGetVar2, /* 195 */ - Tcl_ObjSetVar2, /* 196 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_OpenCommandChannel, /* 197 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_OpenCommandChannel, /* 197 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 197 */ -#endif /* MAC_TCL */ - Tcl_OpenFileChannel, /* 198 */ - Tcl_OpenTcpClient, /* 199 */ - Tcl_OpenTcpServer, /* 200 */ - Tcl_Preserve, /* 201 */ - Tcl_PrintDouble, /* 202 */ - Tcl_PutEnv, /* 203 */ - Tcl_PosixError, /* 204 */ - Tcl_QueueEvent, /* 205 */ - Tcl_Read, /* 206 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_ReapDetachedProcs, /* 207 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_ReapDetachedProcs, /* 207 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 207 */ -#endif /* MAC_TCL */ - Tcl_RecordAndEval, /* 208 */ - Tcl_RecordAndEvalObj, /* 209 */ - Tcl_RegisterChannel, /* 210 */ - Tcl_RegisterObjType, /* 211 */ - Tcl_RegExpCompile, /* 212 */ - Tcl_RegExpExec, /* 213 */ - Tcl_RegExpMatch, /* 214 */ - Tcl_RegExpRange, /* 215 */ - Tcl_Release, /* 216 */ - Tcl_ResetResult, /* 217 */ - Tcl_ScanElement, /* 218 */ - Tcl_ScanCountedElement, /* 219 */ - Tcl_SeekOld, /* 220 */ - Tcl_ServiceAll, /* 221 */ - Tcl_ServiceEvent, /* 222 */ - Tcl_SetAssocData, /* 223 */ - Tcl_SetChannelBufferSize, /* 224 */ - Tcl_SetChannelOption, /* 225 */ - Tcl_SetCommandInfo, /* 226 */ - Tcl_SetErrno, /* 227 */ - Tcl_SetErrorCode, /* 228 */ - Tcl_SetMaxBlockTime, /* 229 */ - Tcl_SetPanicProc, /* 230 */ - Tcl_SetRecursionLimit, /* 231 */ - Tcl_SetResult, /* 232 */ - Tcl_SetServiceMode, /* 233 */ - Tcl_SetObjErrorCode, /* 234 */ - Tcl_SetObjResult, /* 235 */ - Tcl_SetStdChannel, /* 236 */ - Tcl_SetVar, /* 237 */ - Tcl_SetVar2, /* 238 */ - Tcl_SignalId, /* 239 */ - Tcl_SignalMsg, /* 240 */ - Tcl_SourceRCFile, /* 241 */ - Tcl_SplitList, /* 242 */ - Tcl_SplitPath, /* 243 */ - Tcl_StaticPackage, /* 244 */ - Tcl_StringMatch, /* 245 */ - Tcl_TellOld, /* 246 */ - Tcl_TraceVar, /* 247 */ - Tcl_TraceVar2, /* 248 */ - Tcl_TranslateFileName, /* 249 */ - Tcl_Ungets, /* 250 */ - Tcl_UnlinkVar, /* 251 */ - Tcl_UnregisterChannel, /* 252 */ - Tcl_UnsetVar, /* 253 */ - Tcl_UnsetVar2, /* 254 */ - Tcl_UntraceVar, /* 255 */ - Tcl_UntraceVar2, /* 256 */ - Tcl_UpdateLinkedVar, /* 257 */ - Tcl_UpVar, /* 258 */ - Tcl_UpVar2, /* 259 */ - Tcl_VarEval, /* 260 */ - Tcl_VarTraceInfo, /* 261 */ - Tcl_VarTraceInfo2, /* 262 */ - Tcl_Write, /* 263 */ - Tcl_WrongNumArgs, /* 264 */ - Tcl_DumpActiveMemory, /* 265 */ - Tcl_ValidateAllMemory, /* 266 */ - Tcl_AppendResultVA, /* 267 */ - Tcl_AppendStringsToObjVA, /* 268 */ - Tcl_HashStats, /* 269 */ - Tcl_ParseVar, /* 270 */ - Tcl_PkgPresent, /* 271 */ - Tcl_PkgPresentEx, /* 272 */ - Tcl_PkgProvide, /* 273 */ - Tcl_PkgRequire, /* 274 */ - Tcl_SetErrorCodeVA, /* 275 */ - Tcl_VarEvalVA, /* 276 */ - Tcl_WaitPid, /* 277 */ - Tcl_PanicVA, /* 278 */ - Tcl_GetVersion, /* 279 */ - Tcl_InitMemory, /* 280 */ - Tcl_StackChannel, /* 281 */ - Tcl_UnstackChannel, /* 282 */ - Tcl_GetStackedChannel, /* 283 */ - Tcl_SetMainLoop, /* 284 */ - NULL, /* 285 */ - Tcl_AppendObjToObj, /* 286 */ - Tcl_CreateEncoding, /* 287 */ - Tcl_CreateThreadExitHandler, /* 288 */ - Tcl_DeleteThreadExitHandler, /* 289 */ - Tcl_DiscardResult, /* 290 */ - Tcl_EvalEx, /* 291 */ - Tcl_EvalObjv, /* 292 */ - Tcl_EvalObjEx, /* 293 */ - Tcl_ExitThread, /* 294 */ - Tcl_ExternalToUtf, /* 295 */ - Tcl_ExternalToUtfDString, /* 296 */ - Tcl_FinalizeThread, /* 297 */ - Tcl_FinalizeNotifier, /* 298 */ - Tcl_FreeEncoding, /* 299 */ - Tcl_GetCurrentThread, /* 300 */ - Tcl_GetEncoding, /* 301 */ - Tcl_GetEncodingName, /* 302 */ - Tcl_GetEncodingNames, /* 303 */ - Tcl_GetIndexFromObjStruct, /* 304 */ - Tcl_GetThreadData, /* 305 */ - Tcl_GetVar2Ex, /* 306 */ - Tcl_InitNotifier, /* 307 */ - Tcl_MutexLock, /* 308 */ - Tcl_MutexUnlock, /* 309 */ - Tcl_ConditionNotify, /* 310 */ - Tcl_ConditionWait, /* 311 */ - Tcl_NumUtfChars, /* 312 */ - Tcl_ReadChars, /* 313 */ - Tcl_RestoreResult, /* 314 */ - Tcl_SaveResult, /* 315 */ - Tcl_SetSystemEncoding, /* 316 */ - Tcl_SetVar2Ex, /* 317 */ - Tcl_ThreadAlert, /* 318 */ - Tcl_ThreadQueueEvent, /* 319 */ - Tcl_UniCharAtIndex, /* 320 */ - Tcl_UniCharToLower, /* 321 */ - Tcl_UniCharToTitle, /* 322 */ - Tcl_UniCharToUpper, /* 323 */ - Tcl_UniCharToUtf, /* 324 */ - Tcl_UtfAtIndex, /* 325 */ - Tcl_UtfCharComplete, /* 326 */ - Tcl_UtfBackslash, /* 327 */ - Tcl_UtfFindFirst, /* 328 */ - Tcl_UtfFindLast, /* 329 */ - Tcl_UtfNext, /* 330 */ - Tcl_UtfPrev, /* 331 */ - Tcl_UtfToExternal, /* 332 */ - Tcl_UtfToExternalDString, /* 333 */ - Tcl_UtfToLower, /* 334 */ - Tcl_UtfToTitle, /* 335 */ - Tcl_UtfToUniChar, /* 336 */ - Tcl_UtfToUpper, /* 337 */ - Tcl_WriteChars, /* 338 */ - Tcl_WriteObj, /* 339 */ - Tcl_GetString, /* 340 */ - Tcl_GetDefaultEncodingDir, /* 341 */ - Tcl_SetDefaultEncodingDir, /* 342 */ - Tcl_AlertNotifier, /* 343 */ - Tcl_ServiceModeHook, /* 344 */ - Tcl_UniCharIsAlnum, /* 345 */ - Tcl_UniCharIsAlpha, /* 346 */ - Tcl_UniCharIsDigit, /* 347 */ - Tcl_UniCharIsLower, /* 348 */ - Tcl_UniCharIsSpace, /* 349 */ - Tcl_UniCharIsUpper, /* 350 */ - Tcl_UniCharIsWordChar, /* 351 */ - Tcl_UniCharLen, /* 352 */ - Tcl_UniCharNcmp, /* 353 */ - Tcl_UniCharToUtfDString, /* 354 */ - Tcl_UtfToUniCharDString, /* 355 */ - Tcl_GetRegExpFromObj, /* 356 */ - Tcl_EvalTokens, /* 357 */ - Tcl_FreeParse, /* 358 */ - Tcl_LogCommandInfo, /* 359 */ - Tcl_ParseBraces, /* 360 */ - Tcl_ParseCommand, /* 361 */ - Tcl_ParseExpr, /* 362 */ - Tcl_ParseQuotedString, /* 363 */ - Tcl_ParseVarName, /* 364 */ - Tcl_GetCwd, /* 365 */ - Tcl_Chdir, /* 366 */ - Tcl_Access, /* 367 */ - Tcl_Stat, /* 368 */ - Tcl_UtfNcmp, /* 369 */ - Tcl_UtfNcasecmp, /* 370 */ - Tcl_StringCaseMatch, /* 371 */ - Tcl_UniCharIsControl, /* 372 */ - Tcl_UniCharIsGraph, /* 373 */ - Tcl_UniCharIsPrint, /* 374 */ - Tcl_UniCharIsPunct, /* 375 */ - Tcl_RegExpExecObj, /* 376 */ - Tcl_RegExpGetInfo, /* 377 */ - Tcl_NewUnicodeObj, /* 378 */ - Tcl_SetUnicodeObj, /* 379 */ - Tcl_GetCharLength, /* 380 */ - Tcl_GetUniChar, /* 381 */ - Tcl_GetUnicode, /* 382 */ - Tcl_GetRange, /* 383 */ - Tcl_AppendUnicodeToObj, /* 384 */ - Tcl_RegExpMatchObj, /* 385 */ - Tcl_SetNotifier, /* 386 */ - Tcl_GetAllocMutex, /* 387 */ - Tcl_GetChannelNames, /* 388 */ - Tcl_GetChannelNamesEx, /* 389 */ - Tcl_ProcObjCmd, /* 390 */ - Tcl_ConditionFinalize, /* 391 */ - Tcl_MutexFinalize, /* 392 */ - Tcl_CreateThread, /* 393 */ - Tcl_ReadRaw, /* 394 */ - Tcl_WriteRaw, /* 395 */ - Tcl_GetTopChannel, /* 396 */ - Tcl_ChannelBuffered, /* 397 */ - Tcl_ChannelName, /* 398 */ - Tcl_ChannelVersion, /* 399 */ - Tcl_ChannelBlockModeProc, /* 400 */ - Tcl_ChannelCloseProc, /* 401 */ - Tcl_ChannelClose2Proc, /* 402 */ - Tcl_ChannelInputProc, /* 403 */ - Tcl_ChannelOutputProc, /* 404 */ - Tcl_ChannelSeekProc, /* 405 */ - Tcl_ChannelSetOptionProc, /* 406 */ - Tcl_ChannelGetOptionProc, /* 407 */ - Tcl_ChannelWatchProc, /* 408 */ - Tcl_ChannelGetHandleProc, /* 409 */ - Tcl_ChannelFlushProc, /* 410 */ - Tcl_ChannelHandlerProc, /* 411 */ - Tcl_JoinThread, /* 412 */ - Tcl_IsChannelShared, /* 413 */ - Tcl_IsChannelRegistered, /* 414 */ - Tcl_CutChannel, /* 415 */ - Tcl_SpliceChannel, /* 416 */ - Tcl_ClearChannelHandlers, /* 417 */ - Tcl_IsChannelExisting, /* 418 */ - Tcl_UniCharNcasecmp, /* 419 */ - Tcl_UniCharCaseMatch, /* 420 */ - Tcl_FindHashEntry, /* 421 */ - Tcl_CreateHashEntry, /* 422 */ - Tcl_InitCustomHashTable, /* 423 */ - Tcl_InitObjHashTable, /* 424 */ - Tcl_CommandTraceInfo, /* 425 */ - Tcl_TraceCommand, /* 426 */ - Tcl_UntraceCommand, /* 427 */ - Tcl_AttemptAlloc, /* 428 */ - Tcl_AttemptDbCkalloc, /* 429 */ - Tcl_AttemptRealloc, /* 430 */ - Tcl_AttemptDbCkrealloc, /* 431 */ - Tcl_AttemptSetObjLength, /* 432 */ - Tcl_GetChannelThread, /* 433 */ - Tcl_GetUnicodeFromObj, /* 434 */ - Tcl_GetMathFuncInfo, /* 435 */ - Tcl_ListMathFuncs, /* 436 */ - Tcl_SubstObj, /* 437 */ - Tcl_DetachChannel, /* 438 */ - Tcl_IsStandardChannel, /* 439 */ - Tcl_FSCopyFile, /* 440 */ - Tcl_FSCopyDirectory, /* 441 */ - Tcl_FSCreateDirectory, /* 442 */ - Tcl_FSDeleteFile, /* 443 */ - Tcl_FSLoadFile, /* 444 */ - Tcl_FSMatchInDirectory, /* 445 */ - Tcl_FSLink, /* 446 */ - Tcl_FSRemoveDirectory, /* 447 */ - Tcl_FSRenameFile, /* 448 */ - Tcl_FSLstat, /* 449 */ - Tcl_FSUtime, /* 450 */ - Tcl_FSFileAttrsGet, /* 451 */ - Tcl_FSFileAttrsSet, /* 452 */ - Tcl_FSFileAttrStrings, /* 453 */ - Tcl_FSStat, /* 454 */ - Tcl_FSAccess, /* 455 */ - Tcl_FSOpenFileChannel, /* 456 */ - Tcl_FSGetCwd, /* 457 */ - Tcl_FSChdir, /* 458 */ - Tcl_FSConvertToPathType, /* 459 */ - Tcl_FSJoinPath, /* 460 */ - Tcl_FSSplitPath, /* 461 */ - Tcl_FSEqualPaths, /* 462 */ - Tcl_FSGetNormalizedPath, /* 463 */ - Tcl_FSJoinToPath, /* 464 */ - Tcl_FSGetInternalRep, /* 465 */ - Tcl_FSGetTranslatedPath, /* 466 */ - Tcl_FSEvalFile, /* 467 */ - Tcl_FSNewNativePath, /* 468 */ - Tcl_FSGetNativePath, /* 469 */ - Tcl_FSFileSystemInfo, /* 470 */ - Tcl_FSPathSeparator, /* 471 */ - Tcl_FSListVolumes, /* 472 */ - Tcl_FSRegister, /* 473 */ - Tcl_FSUnregister, /* 474 */ - Tcl_FSData, /* 475 */ - Tcl_FSGetTranslatedStringPath, /* 476 */ - Tcl_FSGetFileSystemForPath, /* 477 */ - Tcl_FSGetPathType, /* 478 */ - Tcl_OutputBuffered, /* 479 */ - Tcl_FSMountsChanged, /* 480 */ - Tcl_EvalTokensStandard, /* 481 */ - Tcl_GetTime, /* 482 */ - Tcl_CreateObjTrace, /* 483 */ - Tcl_GetCommandInfoFromToken, /* 484 */ - Tcl_SetCommandInfoFromToken, /* 485 */ - Tcl_DbNewWideIntObj, /* 486 */ - Tcl_GetWideIntFromObj, /* 487 */ - Tcl_NewWideIntObj, /* 488 */ - Tcl_SetWideIntObj, /* 489 */ - Tcl_AllocStatBuf, /* 490 */ - Tcl_Seek, /* 491 */ - Tcl_Tell, /* 492 */ - Tcl_ChannelWideSeekProc, /* 493 */ -}; - -/* !END!: Do not edit above this line. */ +/* + * tclStubInit.c -- + * + * This file contains the initializers for the Tcl stub vectors. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.6 2004/06/05 17:25:40 kennykb Exp $ + */ + +#include "tclInt.h" +#include "tclPort.h" + +/* + * Remove macros that will interfere with the definitions below. + */ + +#undef Tcl_Alloc +#undef Tcl_Free +#undef Tcl_Realloc +#undef Tcl_NewBooleanObj +#undef Tcl_NewByteArrayObj +#undef Tcl_NewDoubleObj +#undef Tcl_NewIntObj +#undef Tcl_NewListObj +#undef Tcl_NewLongObj +#undef Tcl_NewObj +#undef Tcl_NewStringObj +#undef Tcl_DumpActiveMemory +#undef Tcl_ValidateAllMemory +#if TCL_PRESERVE_BINARY_COMPATABILITY +# undef Tcl_FindHashEntry +# undef Tcl_CreateHashEntry +#endif + +/* + * Keep a record of the original Notifier procedures, created in the + * same compilation unit as the stub tables so we can later do reliable, + * portable comparisons to see whether a Tcl_SetNotifier() call swapped + * new routines into the stub table. + */ + +Tcl_NotifierProcs tclOriginalNotifier = { + Tcl_SetTimer, + Tcl_WaitForEvent, +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_CreateFileHandler, + Tcl_DeleteFileHandler, +#else + NULL, + NULL, +#endif + NULL, + NULL, + NULL, + NULL +}; + +/* + * WARNING: The contents of this file is automatically generated by the + * tools/genStubs.tcl script. Any modifications to the function declarations + * below should be made in the generic/tcl.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +TclIntStubs tclIntStubs = { + TCL_STUB_MAGIC, + NULL, + NULL, /* 0 */ + TclAccessDeleteProc, /* 1 */ + TclAccessInsertProc, /* 2 */ + TclAllocateFreeObjects, /* 3 */ + NULL, /* 4 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclCleanupChildren, /* 5 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclCleanupChildren, /* 5 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 5 */ +#endif /* MAC_TCL */ + TclCleanupCommand, /* 6 */ + TclCopyAndCollapse, /* 7 */ + TclCopyChannel, /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclCreatePipeline, /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclCreatePipeline, /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 9 */ +#endif /* MAC_TCL */ + TclCreateProc, /* 10 */ + TclDeleteCompiledLocalVars, /* 11 */ + TclDeleteVars, /* 12 */ + TclDoGlob, /* 13 */ + TclDumpMemoryInfo, /* 14 */ + NULL, /* 15 */ + TclExprFloatError, /* 16 */ + NULL, /* 17 */ + NULL, /* 18 */ + NULL, /* 19 */ + NULL, /* 20 */ + NULL, /* 21 */ + TclFindElement, /* 22 */ + TclFindProc, /* 23 */ + TclFormatInt, /* 24 */ + TclFreePackageInfo, /* 25 */ + NULL, /* 26 */ + TclGetDate, /* 27 */ + TclpGetDefaultStdChannel, /* 28 */ + NULL, /* 29 */ + NULL, /* 30 */ + TclGetExtension, /* 31 */ + TclGetFrame, /* 32 */ + TclGetInterpProc, /* 33 */ + TclGetIntForIndex, /* 34 */ + NULL, /* 35 */ + TclGetLong, /* 36 */ + TclGetLoadedPackages, /* 37 */ + TclGetNamespaceForQualName, /* 38 */ + TclGetObjInterpProc, /* 39 */ + TclGetOpenMode, /* 40 */ + TclGetOriginalCommand, /* 41 */ + TclpGetUserHome, /* 42 */ + TclGlobalInvoke, /* 43 */ + TclGuessPackageName, /* 44 */ + TclHideUnsafeCommands, /* 45 */ + TclInExit, /* 46 */ + NULL, /* 47 */ + NULL, /* 48 */ + TclIncrVar2, /* 49 */ + TclInitCompiledLocals, /* 50 */ + TclInterpInit, /* 51 */ + TclInvoke, /* 52 */ + TclInvokeObjectCommand, /* 53 */ + TclInvokeStringCommand, /* 54 */ + TclIsProc, /* 55 */ + NULL, /* 56 */ + NULL, /* 57 */ + TclLookupVar, /* 58 */ + NULL, /* 59 */ + TclNeedSpace, /* 60 */ + TclNewProcBodyObj, /* 61 */ + TclObjCommandComplete, /* 62 */ + TclObjInterpProc, /* 63 */ + TclObjInvoke, /* 64 */ + TclObjInvokeGlobal, /* 65 */ + TclOpenFileChannelDeleteProc, /* 66 */ + TclOpenFileChannelInsertProc, /* 67 */ + NULL, /* 68 */ + TclpAlloc, /* 69 */ + NULL, /* 70 */ + NULL, /* 71 */ + NULL, /* 72 */ + NULL, /* 73 */ + TclpFree, /* 74 */ + TclpGetClicks, /* 75 */ + TclpGetSeconds, /* 76 */ + TclpGetTime, /* 77 */ + TclpGetTimeZone, /* 78 */ + NULL, /* 79 */ + NULL, /* 80 */ + TclpRealloc, /* 81 */ + NULL, /* 82 */ + NULL, /* 83 */ + NULL, /* 84 */ + NULL, /* 85 */ + NULL, /* 86 */ + NULL, /* 87 */ + TclPrecTraceProc, /* 88 */ + TclPreventAliasLoop, /* 89 */ + NULL, /* 90 */ + TclProcCleanupProc, /* 91 */ + TclProcCompileProc, /* 92 */ + TclProcDeleteProc, /* 93 */ + TclProcInterpProc, /* 94 */ + NULL, /* 95 */ + TclRenameCommand, /* 96 */ + TclResetShadowedCmdRefs, /* 97 */ + TclServiceIdle, /* 98 */ + NULL, /* 99 */ + NULL, /* 100 */ + TclSetPreInitScript, /* 101 */ + TclSetupEnv, /* 102 */ + TclSockGetPort, /* 103 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclSockMinimumBuffers, /* 104 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclSockMinimumBuffers, /* 104 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 104 */ +#endif /* MAC_TCL */ + NULL, /* 105 */ + TclStatDeleteProc, /* 106 */ + TclStatInsertProc, /* 107 */ + TclTeardownNamespace, /* 108 */ + TclUpdateReturnInfo, /* 109 */ + NULL, /* 110 */ + Tcl_AddInterpResolvers, /* 111 */ + Tcl_AppendExportList, /* 112 */ + Tcl_CreateNamespace, /* 113 */ + Tcl_DeleteNamespace, /* 114 */ + Tcl_Export, /* 115 */ + Tcl_FindCommand, /* 116 */ + Tcl_FindNamespace, /* 117 */ + Tcl_GetInterpResolvers, /* 118 */ + Tcl_GetNamespaceResolvers, /* 119 */ + Tcl_FindNamespaceVar, /* 120 */ + Tcl_ForgetImport, /* 121 */ + Tcl_GetCommandFromObj, /* 122 */ + Tcl_GetCommandFullName, /* 123 */ + Tcl_GetCurrentNamespace, /* 124 */ + Tcl_GetGlobalNamespace, /* 125 */ + Tcl_GetVariableFullName, /* 126 */ + Tcl_Import, /* 127 */ + Tcl_PopCallFrame, /* 128 */ + Tcl_PushCallFrame, /* 129 */ + Tcl_RemoveInterpResolvers, /* 130 */ + Tcl_SetNamespaceResolvers, /* 131 */ + TclpHasSockets, /* 132 */ + TclpGetDate, /* 133 */ + TclpStrftime, /* 134 */ + TclpCheckStackSpace, /* 135 */ + NULL, /* 136 */ + NULL, /* 137 */ + TclGetEnv, /* 138 */ + NULL, /* 139 */ + TclLooksLikeInt, /* 140 */ + TclpGetCwd, /* 141 */ + TclSetByteCodeFromAny, /* 142 */ + TclAddLiteralObj, /* 143 */ + TclHideLiteral, /* 144 */ + TclGetAuxDataType, /* 145 */ + TclHandleCreate, /* 146 */ + TclHandleFree, /* 147 */ + TclHandlePreserve, /* 148 */ + TclHandleRelease, /* 149 */ + TclRegAbout, /* 150 */ + TclRegExpRangeUniChar, /* 151 */ + TclSetLibraryPath, /* 152 */ + TclGetLibraryPath, /* 153 */ + NULL, /* 154 */ + NULL, /* 155 */ + TclRegError, /* 156 */ + TclVarTraceExists, /* 157 */ + TclSetStartupScriptFileName, /* 158 */ + TclGetStartupScriptFileName, /* 159 */ + NULL, /* 160 */ + TclChannelTransform, /* 161 */ + TclChannelEventScriptInvoker, /* 162 */ + TclGetInstructionTable, /* 163 */ + TclExpandCodeArray, /* 164 */ + TclpSetInitialEncodings, /* 165 */ + TclListObjSetElement, /* 166 */ + TclSetStartupScriptPath, /* 167 */ + TclGetStartupScriptPath, /* 168 */ + TclpUtfNcmp2, /* 169 */ + TclCheckInterpTraces, /* 170 */ + TclCheckExecutionTraces, /* 171 */ + TclInThreadExit, /* 172 */ + TclUniCharMatch, /* 173 */ + NULL, /* 174 */ + NULL, /* 175 */ + NULL, /* 176 */ + NULL, /* 177 */ + NULL, /* 178 */ + NULL, /* 179 */ + NULL, /* 180 */ + NULL, /* 181 */ + TclpLocaltime, /* 182 */ + TclpGmtime, /* 183 */ +}; + +TclIntPlatStubs tclIntPlatStubs = { + TCL_STUB_MAGIC, + NULL, +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclGetAndDetachPids, /* 0 */ + TclpCloseFile, /* 1 */ + TclpCreateCommandChannel, /* 2 */ + TclpCreatePipe, /* 3 */ + TclpCreateProcess, /* 4 */ + NULL, /* 5 */ + TclpMakeFile, /* 6 */ + TclpOpenFile, /* 7 */ + TclUnixWaitForFile, /* 8 */ + TclpCreateTempFile, /* 9 */ + TclpReaddir, /* 10 */ + TclpLocaltime_unix, /* 11 */ + TclpGmtime_unix, /* 12 */ + TclpInetNtoa, /* 13 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclWinConvertError, /* 0 */ + TclWinConvertWSAError, /* 1 */ + TclWinGetServByName, /* 2 */ + TclWinGetSockOpt, /* 3 */ + TclWinGetTclInstance, /* 4 */ + NULL, /* 5 */ + TclWinNToHS, /* 6 */ + TclWinSetSockOpt, /* 7 */ + TclpGetPid, /* 8 */ + TclWinGetPlatformId, /* 9 */ + NULL, /* 10 */ + TclGetAndDetachPids, /* 11 */ + TclpCloseFile, /* 12 */ + TclpCreateCommandChannel, /* 13 */ + TclpCreatePipe, /* 14 */ + TclpCreateProcess, /* 15 */ + NULL, /* 16 */ + NULL, /* 17 */ + TclpMakeFile, /* 18 */ + TclpOpenFile, /* 19 */ + TclWinAddProcess, /* 20 */ + NULL, /* 21 */ + TclpCreateTempFile, /* 22 */ + TclpGetTZName, /* 23 */ + TclWinNoBackslash, /* 24 */ + TclWinGetPlatform, /* 25 */ + TclWinSetInterfaces, /* 26 */ + TclWinFlushDirtyChannels, /* 27 */ + TclWinResetInterfaces, /* 28 */ + TclWinCPUID, /* 29 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + TclpSysAlloc, /* 0 */ + TclpSysFree, /* 1 */ + TclpSysRealloc, /* 2 */ + TclpExit, /* 3 */ + FSpGetDefaultDir, /* 4 */ + FSpSetDefaultDir, /* 5 */ + FSpFindFolder, /* 6 */ + GetGlobalMouseTcl, /* 7 */ + FSpGetDirectoryIDTcl, /* 8 */ + FSpOpenResFileCompatTcl, /* 9 */ + FSpCreateResFileCompatTcl, /* 10 */ + FSpLocationFromPath, /* 11 */ + FSpPathFromLocation, /* 12 */ + TclMacExitHandler, /* 13 */ + TclMacInitExitToShell, /* 14 */ + TclMacInstallExitToShellPatch, /* 15 */ + TclMacOSErrorToPosixError, /* 16 */ + TclMacRemoveTimer, /* 17 */ + TclMacStartTimer, /* 18 */ + TclMacTimerExpired, /* 19 */ + TclMacRegisterResourceFork, /* 20 */ + TclMacUnRegisterResourceFork, /* 21 */ + TclMacCreateEnv, /* 22 */ + TclMacFOpenHack, /* 23 */ + TclpGetTZName, /* 24 */ + TclMacChmod, /* 25 */ + FSpLLocationFromPath, /* 26 */ +#endif /* MAC_TCL */ +}; + +TclPlatStubs tclPlatStubs = { + TCL_STUB_MAGIC, + NULL, +#ifdef __WIN32__ + Tcl_WinUtfToTChar, /* 0 */ + Tcl_WinTCharToUtf, /* 1 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + Tcl_MacSetEventProc, /* 0 */ + Tcl_MacConvertTextResource, /* 1 */ + Tcl_MacEvalResource, /* 2 */ + Tcl_MacFindResource, /* 3 */ + Tcl_GetOSTypeFromObj, /* 4 */ + Tcl_SetOSTypeObj, /* 5 */ + Tcl_NewOSTypeObj, /* 6 */ + strncasecmp, /* 7 */ + strcasecmp, /* 8 */ +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL + Tcl_MacOSXOpenBundleResources, /* 0 */ + Tcl_MacOSXOpenVersionedBundleResources, /* 1 */ +#endif /* MAC_OSX_TCL */ +}; + +static TclStubHooks tclStubHooks = { + &tclPlatStubs, + &tclIntStubs, + &tclIntPlatStubs +}; + +TclStubs tclStubs = { + TCL_STUB_MAGIC, + &tclStubHooks, + Tcl_PkgProvideEx, /* 0 */ + Tcl_PkgRequireEx, /* 1 */ + Tcl_Panic, /* 2 */ + Tcl_Alloc, /* 3 */ + Tcl_Free, /* 4 */ + Tcl_Realloc, /* 5 */ + Tcl_DbCkalloc, /* 6 */ + Tcl_DbCkfree, /* 7 */ + Tcl_DbCkrealloc, /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_CreateFileHandler, /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 9 */ +#endif /* MAC_TCL */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_DeleteFileHandler, /* 10 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 10 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 10 */ +#endif /* MAC_TCL */ + Tcl_SetTimer, /* 11 */ + Tcl_Sleep, /* 12 */ + Tcl_WaitForEvent, /* 13 */ + Tcl_AppendAllObjTypes, /* 14 */ + Tcl_AppendStringsToObj, /* 15 */ + Tcl_AppendToObj, /* 16 */ + Tcl_ConcatObj, /* 17 */ + Tcl_ConvertToType, /* 18 */ + Tcl_DbDecrRefCount, /* 19 */ + Tcl_DbIncrRefCount, /* 20 */ + Tcl_DbIsShared, /* 21 */ + Tcl_DbNewBooleanObj, /* 22 */ + Tcl_DbNewByteArrayObj, /* 23 */ + Tcl_DbNewDoubleObj, /* 24 */ + Tcl_DbNewListObj, /* 25 */ + Tcl_DbNewLongObj, /* 26 */ + Tcl_DbNewObj, /* 27 */ + Tcl_DbNewStringObj, /* 28 */ + Tcl_DuplicateObj, /* 29 */ + TclFreeObj, /* 30 */ + Tcl_GetBoolean, /* 31 */ + Tcl_GetBooleanFromObj, /* 32 */ + Tcl_GetByteArrayFromObj, /* 33 */ + Tcl_GetDouble, /* 34 */ + Tcl_GetDoubleFromObj, /* 35 */ + Tcl_GetIndexFromObj, /* 36 */ + Tcl_GetInt, /* 37 */ + Tcl_GetIntFromObj, /* 38 */ + Tcl_GetLongFromObj, /* 39 */ + Tcl_GetObjType, /* 40 */ + Tcl_GetStringFromObj, /* 41 */ + Tcl_InvalidateStringRep, /* 42 */ + Tcl_ListObjAppendList, /* 43 */ + Tcl_ListObjAppendElement, /* 44 */ + Tcl_ListObjGetElements, /* 45 */ + Tcl_ListObjIndex, /* 46 */ + Tcl_ListObjLength, /* 47 */ + Tcl_ListObjReplace, /* 48 */ + Tcl_NewBooleanObj, /* 49 */ + Tcl_NewByteArrayObj, /* 50 */ + Tcl_NewDoubleObj, /* 51 */ + Tcl_NewIntObj, /* 52 */ + Tcl_NewListObj, /* 53 */ + Tcl_NewLongObj, /* 54 */ + Tcl_NewObj, /* 55 */ + Tcl_NewStringObj, /* 56 */ + Tcl_SetBooleanObj, /* 57 */ + Tcl_SetByteArrayLength, /* 58 */ + Tcl_SetByteArrayObj, /* 59 */ + Tcl_SetDoubleObj, /* 60 */ + Tcl_SetIntObj, /* 61 */ + Tcl_SetListObj, /* 62 */ + Tcl_SetLongObj, /* 63 */ + Tcl_SetObjLength, /* 64 */ + Tcl_SetStringObj, /* 65 */ + Tcl_AddErrorInfo, /* 66 */ + Tcl_AddObjErrorInfo, /* 67 */ + Tcl_AllowExceptions, /* 68 */ + Tcl_AppendElement, /* 69 */ + Tcl_AppendResult, /* 70 */ + Tcl_AsyncCreate, /* 71 */ + Tcl_AsyncDelete, /* 72 */ + Tcl_AsyncInvoke, /* 73 */ + Tcl_AsyncMark, /* 74 */ + Tcl_AsyncReady, /* 75 */ + Tcl_BackgroundError, /* 76 */ + Tcl_Backslash, /* 77 */ + Tcl_BadChannelOption, /* 78 */ + Tcl_CallWhenDeleted, /* 79 */ + Tcl_CancelIdleCall, /* 80 */ + Tcl_Close, /* 81 */ + Tcl_CommandComplete, /* 82 */ + Tcl_Concat, /* 83 */ + Tcl_ConvertElement, /* 84 */ + Tcl_ConvertCountedElement, /* 85 */ + Tcl_CreateAlias, /* 86 */ + Tcl_CreateAliasObj, /* 87 */ + Tcl_CreateChannel, /* 88 */ + Tcl_CreateChannelHandler, /* 89 */ + Tcl_CreateCloseHandler, /* 90 */ + Tcl_CreateCommand, /* 91 */ + Tcl_CreateEventSource, /* 92 */ + Tcl_CreateExitHandler, /* 93 */ + Tcl_CreateInterp, /* 94 */ + Tcl_CreateMathFunc, /* 95 */ + Tcl_CreateObjCommand, /* 96 */ + Tcl_CreateSlave, /* 97 */ + Tcl_CreateTimerHandler, /* 98 */ + Tcl_CreateTrace, /* 99 */ + Tcl_DeleteAssocData, /* 100 */ + Tcl_DeleteChannelHandler, /* 101 */ + Tcl_DeleteCloseHandler, /* 102 */ + Tcl_DeleteCommand, /* 103 */ + Tcl_DeleteCommandFromToken, /* 104 */ + Tcl_DeleteEvents, /* 105 */ + Tcl_DeleteEventSource, /* 106 */ + Tcl_DeleteExitHandler, /* 107 */ + Tcl_DeleteHashEntry, /* 108 */ + Tcl_DeleteHashTable, /* 109 */ + Tcl_DeleteInterp, /* 110 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_DetachPids, /* 111 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_DetachPids, /* 111 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 111 */ +#endif /* MAC_TCL */ + Tcl_DeleteTimerHandler, /* 112 */ + Tcl_DeleteTrace, /* 113 */ + Tcl_DontCallWhenDeleted, /* 114 */ + Tcl_DoOneEvent, /* 115 */ + Tcl_DoWhenIdle, /* 116 */ + Tcl_DStringAppend, /* 117 */ + Tcl_DStringAppendElement, /* 118 */ + Tcl_DStringEndSublist, /* 119 */ + Tcl_DStringFree, /* 120 */ + Tcl_DStringGetResult, /* 121 */ + Tcl_DStringInit, /* 122 */ + Tcl_DStringResult, /* 123 */ + Tcl_DStringSetLength, /* 124 */ + Tcl_DStringStartSublist, /* 125 */ + Tcl_Eof, /* 126 */ + Tcl_ErrnoId, /* 127 */ + Tcl_ErrnoMsg, /* 128 */ + Tcl_Eval, /* 129 */ + Tcl_EvalFile, /* 130 */ + Tcl_EvalObj, /* 131 */ + Tcl_EventuallyFree, /* 132 */ + Tcl_Exit, /* 133 */ + Tcl_ExposeCommand, /* 134 */ + Tcl_ExprBoolean, /* 135 */ + Tcl_ExprBooleanObj, /* 136 */ + Tcl_ExprDouble, /* 137 */ + Tcl_ExprDoubleObj, /* 138 */ + Tcl_ExprLong, /* 139 */ + Tcl_ExprLongObj, /* 140 */ + Tcl_ExprObj, /* 141 */ + Tcl_ExprString, /* 142 */ + Tcl_Finalize, /* 143 */ + Tcl_FindExecutable, /* 144 */ + Tcl_FirstHashEntry, /* 145 */ + Tcl_Flush, /* 146 */ + Tcl_FreeResult, /* 147 */ + Tcl_GetAlias, /* 148 */ + Tcl_GetAliasObj, /* 149 */ + Tcl_GetAssocData, /* 150 */ + Tcl_GetChannel, /* 151 */ + Tcl_GetChannelBufferSize, /* 152 */ + Tcl_GetChannelHandle, /* 153 */ + Tcl_GetChannelInstanceData, /* 154 */ + Tcl_GetChannelMode, /* 155 */ + Tcl_GetChannelName, /* 156 */ + Tcl_GetChannelOption, /* 157 */ + Tcl_GetChannelType, /* 158 */ + Tcl_GetCommandInfo, /* 159 */ + Tcl_GetCommandName, /* 160 */ + Tcl_GetErrno, /* 161 */ + Tcl_GetHostName, /* 162 */ + Tcl_GetInterpPath, /* 163 */ + Tcl_GetMaster, /* 164 */ + Tcl_GetNameOfExecutable, /* 165 */ + Tcl_GetObjResult, /* 166 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_GetOpenFile, /* 167 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 167 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 167 */ +#endif /* MAC_TCL */ + Tcl_GetPathType, /* 168 */ + Tcl_Gets, /* 169 */ + Tcl_GetsObj, /* 170 */ + Tcl_GetServiceMode, /* 171 */ + Tcl_GetSlave, /* 172 */ + Tcl_GetStdChannel, /* 173 */ + Tcl_GetStringResult, /* 174 */ + Tcl_GetVar, /* 175 */ + Tcl_GetVar2, /* 176 */ + Tcl_GlobalEval, /* 177 */ + Tcl_GlobalEvalObj, /* 178 */ + Tcl_HideCommand, /* 179 */ + Tcl_Init, /* 180 */ + Tcl_InitHashTable, /* 181 */ + Tcl_InputBlocked, /* 182 */ + Tcl_InputBuffered, /* 183 */ + Tcl_InterpDeleted, /* 184 */ + Tcl_IsSafe, /* 185 */ + Tcl_JoinPath, /* 186 */ + Tcl_LinkVar, /* 187 */ + NULL, /* 188 */ + Tcl_MakeFileChannel, /* 189 */ + Tcl_MakeSafe, /* 190 */ + Tcl_MakeTcpClientChannel, /* 191 */ + Tcl_Merge, /* 192 */ + Tcl_NextHashEntry, /* 193 */ + Tcl_NotifyChannel, /* 194 */ + Tcl_ObjGetVar2, /* 195 */ + Tcl_ObjSetVar2, /* 196 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_OpenCommandChannel, /* 197 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_OpenCommandChannel, /* 197 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 197 */ +#endif /* MAC_TCL */ + Tcl_OpenFileChannel, /* 198 */ + Tcl_OpenTcpClient, /* 199 */ + Tcl_OpenTcpServer, /* 200 */ + Tcl_Preserve, /* 201 */ + Tcl_PrintDouble, /* 202 */ + Tcl_PutEnv, /* 203 */ + Tcl_PosixError, /* 204 */ + Tcl_QueueEvent, /* 205 */ + Tcl_Read, /* 206 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_ReapDetachedProcs, /* 207 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_ReapDetachedProcs, /* 207 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 207 */ +#endif /* MAC_TCL */ + Tcl_RecordAndEval, /* 208 */ + Tcl_RecordAndEvalObj, /* 209 */ + Tcl_RegisterChannel, /* 210 */ + Tcl_RegisterObjType, /* 211 */ + Tcl_RegExpCompile, /* 212 */ + Tcl_RegExpExec, /* 213 */ + Tcl_RegExpMatch, /* 214 */ + Tcl_RegExpRange, /* 215 */ + Tcl_Release, /* 216 */ + Tcl_ResetResult, /* 217 */ + Tcl_ScanElement, /* 218 */ + Tcl_ScanCountedElement, /* 219 */ + Tcl_SeekOld, /* 220 */ + Tcl_ServiceAll, /* 221 */ + Tcl_ServiceEvent, /* 222 */ + Tcl_SetAssocData, /* 223 */ + Tcl_SetChannelBufferSize, /* 224 */ + Tcl_SetChannelOption, /* 225 */ + Tcl_SetCommandInfo, /* 226 */ + Tcl_SetErrno, /* 227 */ + Tcl_SetErrorCode, /* 228 */ + Tcl_SetMaxBlockTime, /* 229 */ + Tcl_SetPanicProc, /* 230 */ + Tcl_SetRecursionLimit, /* 231 */ + Tcl_SetResult, /* 232 */ + Tcl_SetServiceMode, /* 233 */ + Tcl_SetObjErrorCode, /* 234 */ + Tcl_SetObjResult, /* 235 */ + Tcl_SetStdChannel, /* 236 */ + Tcl_SetVar, /* 237 */ + Tcl_SetVar2, /* 238 */ + Tcl_SignalId, /* 239 */ + Tcl_SignalMsg, /* 240 */ + Tcl_SourceRCFile, /* 241 */ + Tcl_SplitList, /* 242 */ + Tcl_SplitPath, /* 243 */ + Tcl_StaticPackage, /* 244 */ + Tcl_StringMatch, /* 245 */ + Tcl_TellOld, /* 246 */ + Tcl_TraceVar, /* 247 */ + Tcl_TraceVar2, /* 248 */ + Tcl_TranslateFileName, /* 249 */ + Tcl_Ungets, /* 250 */ + Tcl_UnlinkVar, /* 251 */ + Tcl_UnregisterChannel, /* 252 */ + Tcl_UnsetVar, /* 253 */ + Tcl_UnsetVar2, /* 254 */ + Tcl_UntraceVar, /* 255 */ + Tcl_UntraceVar2, /* 256 */ + Tcl_UpdateLinkedVar, /* 257 */ + Tcl_UpVar, /* 258 */ + Tcl_UpVar2, /* 259 */ + Tcl_VarEval, /* 260 */ + Tcl_VarTraceInfo, /* 261 */ + Tcl_VarTraceInfo2, /* 262 */ + Tcl_Write, /* 263 */ + Tcl_WrongNumArgs, /* 264 */ + Tcl_DumpActiveMemory, /* 265 */ + Tcl_ValidateAllMemory, /* 266 */ + Tcl_AppendResultVA, /* 267 */ + Tcl_AppendStringsToObjVA, /* 268 */ + Tcl_HashStats, /* 269 */ + Tcl_ParseVar, /* 270 */ + Tcl_PkgPresent, /* 271 */ + Tcl_PkgPresentEx, /* 272 */ + Tcl_PkgProvide, /* 273 */ + Tcl_PkgRequire, /* 274 */ + Tcl_SetErrorCodeVA, /* 275 */ + Tcl_VarEvalVA, /* 276 */ + Tcl_WaitPid, /* 277 */ + Tcl_PanicVA, /* 278 */ + Tcl_GetVersion, /* 279 */ + Tcl_InitMemory, /* 280 */ + Tcl_StackChannel, /* 281 */ + Tcl_UnstackChannel, /* 282 */ + Tcl_GetStackedChannel, /* 283 */ + Tcl_SetMainLoop, /* 284 */ + NULL, /* 285 */ + Tcl_AppendObjToObj, /* 286 */ + Tcl_CreateEncoding, /* 287 */ + Tcl_CreateThreadExitHandler, /* 288 */ + Tcl_DeleteThreadExitHandler, /* 289 */ + Tcl_DiscardResult, /* 290 */ + Tcl_EvalEx, /* 291 */ + Tcl_EvalObjv, /* 292 */ + Tcl_EvalObjEx, /* 293 */ + Tcl_ExitThread, /* 294 */ + Tcl_ExternalToUtf, /* 295 */ + Tcl_ExternalToUtfDString, /* 296 */ + Tcl_FinalizeThread, /* 297 */ + Tcl_FinalizeNotifier, /* 298 */ + Tcl_FreeEncoding, /* 299 */ + Tcl_GetCurrentThread, /* 300 */ + Tcl_GetEncoding, /* 301 */ + Tcl_GetEncodingName, /* 302 */ + Tcl_GetEncodingNames, /* 303 */ + Tcl_GetIndexFromObjStruct, /* 304 */ + Tcl_GetThreadData, /* 305 */ + Tcl_GetVar2Ex, /* 306 */ + Tcl_InitNotifier, /* 307 */ + Tcl_MutexLock, /* 308 */ + Tcl_MutexUnlock, /* 309 */ + Tcl_ConditionNotify, /* 310 */ + Tcl_ConditionWait, /* 311 */ + Tcl_NumUtfChars, /* 312 */ + Tcl_ReadChars, /* 313 */ + Tcl_RestoreResult, /* 314 */ + Tcl_SaveResult, /* 315 */ + Tcl_SetSystemEncoding, /* 316 */ + Tcl_SetVar2Ex, /* 317 */ + Tcl_ThreadAlert, /* 318 */ + Tcl_ThreadQueueEvent, /* 319 */ + Tcl_UniCharAtIndex, /* 320 */ + Tcl_UniCharToLower, /* 321 */ + Tcl_UniCharToTitle, /* 322 */ + Tcl_UniCharToUpper, /* 323 */ + Tcl_UniCharToUtf, /* 324 */ + Tcl_UtfAtIndex, /* 325 */ + Tcl_UtfCharComplete, /* 326 */ + Tcl_UtfBackslash, /* 327 */ + Tcl_UtfFindFirst, /* 328 */ + Tcl_UtfFindLast, /* 329 */ + Tcl_UtfNext, /* 330 */ + Tcl_UtfPrev, /* 331 */ + Tcl_UtfToExternal, /* 332 */ + Tcl_UtfToExternalDString, /* 333 */ + Tcl_UtfToLower, /* 334 */ + Tcl_UtfToTitle, /* 335 */ + Tcl_UtfToUniChar, /* 336 */ + Tcl_UtfToUpper, /* 337 */ + Tcl_WriteChars, /* 338 */ + Tcl_WriteObj, /* 339 */ + Tcl_GetString, /* 340 */ + Tcl_GetDefaultEncodingDir, /* 341 */ + Tcl_SetDefaultEncodingDir, /* 342 */ + Tcl_AlertNotifier, /* 343 */ + Tcl_ServiceModeHook, /* 344 */ + Tcl_UniCharIsAlnum, /* 345 */ + Tcl_UniCharIsAlpha, /* 346 */ + Tcl_UniCharIsDigit, /* 347 */ + Tcl_UniCharIsLower, /* 348 */ + Tcl_UniCharIsSpace, /* 349 */ + Tcl_UniCharIsUpper, /* 350 */ + Tcl_UniCharIsWordChar, /* 351 */ + Tcl_UniCharLen, /* 352 */ + Tcl_UniCharNcmp, /* 353 */ + Tcl_UniCharToUtfDString, /* 354 */ + Tcl_UtfToUniCharDString, /* 355 */ + Tcl_GetRegExpFromObj, /* 356 */ + Tcl_EvalTokens, /* 357 */ + Tcl_FreeParse, /* 358 */ + Tcl_LogCommandInfo, /* 359 */ + Tcl_ParseBraces, /* 360 */ + Tcl_ParseCommand, /* 361 */ + Tcl_ParseExpr, /* 362 */ + Tcl_ParseQuotedString, /* 363 */ + Tcl_ParseVarName, /* 364 */ + Tcl_GetCwd, /* 365 */ + Tcl_Chdir, /* 366 */ + Tcl_Access, /* 367 */ + Tcl_Stat, /* 368 */ + Tcl_UtfNcmp, /* 369 */ + Tcl_UtfNcasecmp, /* 370 */ + Tcl_StringCaseMatch, /* 371 */ + Tcl_UniCharIsControl, /* 372 */ + Tcl_UniCharIsGraph, /* 373 */ + Tcl_UniCharIsPrint, /* 374 */ + Tcl_UniCharIsPunct, /* 375 */ + Tcl_RegExpExecObj, /* 376 */ + Tcl_RegExpGetInfo, /* 377 */ + Tcl_NewUnicodeObj, /* 378 */ + Tcl_SetUnicodeObj, /* 379 */ + Tcl_GetCharLength, /* 380 */ + Tcl_GetUniChar, /* 381 */ + Tcl_GetUnicode, /* 382 */ + Tcl_GetRange, /* 383 */ + Tcl_AppendUnicodeToObj, /* 384 */ + Tcl_RegExpMatchObj, /* 385 */ + Tcl_SetNotifier, /* 386 */ + Tcl_GetAllocMutex, /* 387 */ + Tcl_GetChannelNames, /* 388 */ + Tcl_GetChannelNamesEx, /* 389 */ + Tcl_ProcObjCmd, /* 390 */ + Tcl_ConditionFinalize, /* 391 */ + Tcl_MutexFinalize, /* 392 */ + Tcl_CreateThread, /* 393 */ + Tcl_ReadRaw, /* 394 */ + Tcl_WriteRaw, /* 395 */ + Tcl_GetTopChannel, /* 396 */ + Tcl_ChannelBuffered, /* 397 */ + Tcl_ChannelName, /* 398 */ + Tcl_ChannelVersion, /* 399 */ + Tcl_ChannelBlockModeProc, /* 400 */ + Tcl_ChannelCloseProc, /* 401 */ + Tcl_ChannelClose2Proc, /* 402 */ + Tcl_ChannelInputProc, /* 403 */ + Tcl_ChannelOutputProc, /* 404 */ + Tcl_ChannelSeekProc, /* 405 */ + Tcl_ChannelSetOptionProc, /* 406 */ + Tcl_ChannelGetOptionProc, /* 407 */ + Tcl_ChannelWatchProc, /* 408 */ + Tcl_ChannelGetHandleProc, /* 409 */ + Tcl_ChannelFlushProc, /* 410 */ + Tcl_ChannelHandlerProc, /* 411 */ + Tcl_JoinThread, /* 412 */ + Tcl_IsChannelShared, /* 413 */ + Tcl_IsChannelRegistered, /* 414 */ + Tcl_CutChannel, /* 415 */ + Tcl_SpliceChannel, /* 416 */ + Tcl_ClearChannelHandlers, /* 417 */ + Tcl_IsChannelExisting, /* 418 */ + Tcl_UniCharNcasecmp, /* 419 */ + Tcl_UniCharCaseMatch, /* 420 */ + Tcl_FindHashEntry, /* 421 */ + Tcl_CreateHashEntry, /* 422 */ + Tcl_InitCustomHashTable, /* 423 */ + Tcl_InitObjHashTable, /* 424 */ + Tcl_CommandTraceInfo, /* 425 */ + Tcl_TraceCommand, /* 426 */ + Tcl_UntraceCommand, /* 427 */ + Tcl_AttemptAlloc, /* 428 */ + Tcl_AttemptDbCkalloc, /* 429 */ + Tcl_AttemptRealloc, /* 430 */ + Tcl_AttemptDbCkrealloc, /* 431 */ + Tcl_AttemptSetObjLength, /* 432 */ + Tcl_GetChannelThread, /* 433 */ + Tcl_GetUnicodeFromObj, /* 434 */ + Tcl_GetMathFuncInfo, /* 435 */ + Tcl_ListMathFuncs, /* 436 */ + Tcl_SubstObj, /* 437 */ + Tcl_DetachChannel, /* 438 */ + Tcl_IsStandardChannel, /* 439 */ + Tcl_FSCopyFile, /* 440 */ + Tcl_FSCopyDirectory, /* 441 */ + Tcl_FSCreateDirectory, /* 442 */ + Tcl_FSDeleteFile, /* 443 */ + Tcl_FSLoadFile, /* 444 */ + Tcl_FSMatchInDirectory, /* 445 */ + Tcl_FSLink, /* 446 */ + Tcl_FSRemoveDirectory, /* 447 */ + Tcl_FSRenameFile, /* 448 */ + Tcl_FSLstat, /* 449 */ + Tcl_FSUtime, /* 450 */ + Tcl_FSFileAttrsGet, /* 451 */ + Tcl_FSFileAttrsSet, /* 452 */ + Tcl_FSFileAttrStrings, /* 453 */ + Tcl_FSStat, /* 454 */ + Tcl_FSAccess, /* 455 */ + Tcl_FSOpenFileChannel, /* 456 */ + Tcl_FSGetCwd, /* 457 */ + Tcl_FSChdir, /* 458 */ + Tcl_FSConvertToPathType, /* 459 */ + Tcl_FSJoinPath, /* 460 */ + Tcl_FSSplitPath, /* 461 */ + Tcl_FSEqualPaths, /* 462 */ + Tcl_FSGetNormalizedPath, /* 463 */ + Tcl_FSJoinToPath, /* 464 */ + Tcl_FSGetInternalRep, /* 465 */ + Tcl_FSGetTranslatedPath, /* 466 */ + Tcl_FSEvalFile, /* 467 */ + Tcl_FSNewNativePath, /* 468 */ + Tcl_FSGetNativePath, /* 469 */ + Tcl_FSFileSystemInfo, /* 470 */ + Tcl_FSPathSeparator, /* 471 */ + Tcl_FSListVolumes, /* 472 */ + Tcl_FSRegister, /* 473 */ + Tcl_FSUnregister, /* 474 */ + Tcl_FSData, /* 475 */ + Tcl_FSGetTranslatedStringPath, /* 476 */ + Tcl_FSGetFileSystemForPath, /* 477 */ + Tcl_FSGetPathType, /* 478 */ + Tcl_OutputBuffered, /* 479 */ + Tcl_FSMountsChanged, /* 480 */ + Tcl_EvalTokensStandard, /* 481 */ + Tcl_GetTime, /* 482 */ + Tcl_CreateObjTrace, /* 483 */ + Tcl_GetCommandInfoFromToken, /* 484 */ + Tcl_SetCommandInfoFromToken, /* 485 */ + Tcl_DbNewWideIntObj, /* 486 */ + Tcl_GetWideIntFromObj, /* 487 */ + Tcl_NewWideIntObj, /* 488 */ + Tcl_SetWideIntObj, /* 489 */ + Tcl_AllocStatBuf, /* 490 */ + Tcl_Seek, /* 491 */ + Tcl_Tell, /* 492 */ + Tcl_ChannelWideSeekProc, /* 493 */ +}; + +/* !END!: Do not edit above this line. */ diff --git a/tests/platform.test b/tests/platform.test index 19001ee..f9d7aca 100644 --- a/tests/platform.test +++ b/tests/platform.test @@ -16,6 +16,8 @@ if {[lsearch [namespace children] ::tcltest] == -1} { namespace import -force ::tcltest::* } +testConstraint testWinCPUID [llength [info commands testwincpuid]] + test platform-1.1 {TclpSetVariables: tcl_platform} { interp create i i eval {catch {unset tcl_platform(debug)}} @@ -36,6 +38,24 @@ test platform-2.1 {tcl_platform(wordSize) indicates size of native word} { list [expr {$result < 0}] [expr {$result ^ ($result - 1)}] } {1 -1} +# On Windows, test that the CPU ID works + +test platform-3.1 {CPU ID on Windows } \ + -constraints testWinCPUID \ + -body { + set cpudata [testwincpuid 0] + binary format iii \ + [lindex $cpudata 1] \ + [lindex $cpudata 3] \ + [lindex $cpudata 2] + } \ + -match regexp \ + -result {^(?:AuthenticAMD|CentaurHauls|CyrixInstead|GenuineIntel)$} + # cleanup ::tcltest::cleanupTests return + +# Local Variables: +# mode: tcl +# End: diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index 2e3368c..4cfd944 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.2 2004/05/06 01:04:32 davygrvy Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.3 2004/06/05 17:25:40 kennykb Exp $ */ #include "tclWinInt.h" @@ -946,3 +946,152 @@ Tcl_WinTCharToUtf(string, len, dsPtr) return Tcl_ExternalToUtfDString(tclWinTCharEncoding, (CONST char *) string, len, dsPtr); } + +/* + *------------------------------------------------------------------------ + * + * TclWinCPUID -- + * + * Get CPU ID information on an Intel box under Windows + * + * Results: + * Returns TCL_OK if successful, TCL_ERROR if CPUID is not + * supported or fails. + * + * Side effects: + * If successful, stores EAX, EBX, ECX and EDX registers after + * the CPUID instruction in the four integers designated by 'regsPtr' + * + *---------------------------------------------------------------------- + */ + +int +TclWinCPUID( unsigned int index, /* Which CPUID value to retrieve */ + register unsigned int * regsPtr ) /* Registers after the CPUID */ +{ + + int status = TCL_ERROR; + +#if defined(__GNUC__) + + /* Establish structured exception handling */ + +# ifdef HAVE_NO_SEH + __asm__ __volatile__ ( + "pushl %ebp" "\n\t" + "pushl $__except_TclWinCPUID_detach_handler" "\n\t" + "pushl %fs:0" "\n\t" + "movl %esp, %fs:0" ); +# else + __try { +# endif + + /* + * Execute the CPUID instruction with the given index, and + * store results off 'regPtr'. + */ + + __asm__ __volatile__ ( + "movl %4, %%eax" "\n\t" + "cpuid" "\n\t" + "movl %%eax, %0" "\n\t" + "movl %%ebx, %1" "\n\t" + "movl %%ecx, %2" "\n\t" + "movl %%edx, %3" + : + "=m"(regsPtr[0]), + "=m"(regsPtr[1]), + "=m"(regsPtr[2]), + "=m"(regsPtr[3]) + : "m"(index) + : "%eax", "%ebx", "%ecx", "%edx" ); + status = TCL_OK; + + /* End the structured exception handler */ + +# ifndef HAVE_NO_SEH + } __except( EXCEPTION_EXECUTE_HANDLER ) { + /* do nothing */ + } +# else + __asm __volatile__ ( + "jmp TclWinCPUID_detach_pop" "\n" + "TclWinCPUID_detach_reentry:" "\n\t" + "movl %%fs:0, %%eax" "\n\t" + "movl 0x8(%%eax), %%esp" "\n\t" + "movl 0x8(%%esp), %%ebp" "\n" + "TclWinCPUID_detach_pop:" "\n\t" + "movl (%%esp), %%eax" "\n\t" + "movl %%eax, %%fs:0" "\n\t" + "add $12, %%esp" "\n\t" + : + : + : "%eax"); +# endif + + +#elif defined(_MSC_VER) + + /* Define a structure in the stack frame to hold the registers */ + + struct { + DWORD dw0; + DWORD dw1; + DWORD dw2; + DWORD dw3; + } regs; + regs.dw0 = index; + + /* Execute the CPUID instruction and save regs in the stack frame */ + + _try { + _asm { + push ebx + push ecx + push edx + mov eax, regs.dw0 + cpuid + mov regs.dw0, eax + mov regs.dw1, ebx + mov regs.dw2, ecx + mov regs.dw3, edx + pop edx + pop ecx + pop ebx + } + + /* Copy regs back out to the caller */ + + regsPtr[0]=regs.dw0; + regsPtr[1]=regs.dw1; + regsPtr[2]=regs.dw2; + regsPtr[3]=regs.dw3; + + status = TCL_OK; + } __except( EXCEPTION_EXECUTE_HANDLER ) { + } + +#else + /* Don't know how to do assembly code for + * this compiler */ +#endif + return status; +} + +#if defined( __GNUC__ ) && defined( HAVE_NO_SEH ) +static __attribute__((cdecl)) EXCEPTION_DISPOSITION +_except_TclWinCPUID_detach_handler( + struct _EXCEPTION_RECORD *ExceptionRecord, + void *EstablisherFrame, + struct _CONTEXT *ContextRecord, + void *DispatcherContext) +{ + __asm__ __volatile__ ( + "jmp TclWinCPUID_detach_reentry" ); + /* Nuke compiler warning about unused static function */ + _except_TclWinCPUID_detach_handler(NULL, NULL, NULL, NULL); + return 0; /* Function does not return */ +} +#endif + + diff --git a/win/tclWinTest.c b/win/tclWinTest.c index 96b1a28..f4e701e 100644 --- a/win/tclWinTest.c +++ b/win/tclWinTest.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.1 2003/04/12 20:11:34 kennykb Exp $ + * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.2 2004/06/05 17:25:40 kennykb Exp $ */ #define USE_COMPAT_CONST @@ -32,6 +32,10 @@ static int TestwinsleepCmd _ANSI_ARGS_(( ClientData dummy, int objc, Tcl_Obj *CONST objv[] )); static Tcl_ObjCmdProc TestExceptionCmd; +static int TestwincpuidCmd _ANSI_ARGS_(( ClientData dummy, + Tcl_Interp* interp, + int objc, + Tcl_Obj *CONST objv[] )); /* @@ -65,6 +69,8 @@ TclplatformtestInit(interp) (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateObjCommand(interp, "testwinclock", TestwinclockCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); + Tcl_CreateObjCommand(interp, "testwincpuid", TestwincpuidCmd, + (ClientData) 0, (Tcl_CmdDeleteProc*) NULL ); Tcl_CreateObjCommand( interp, "testwinsleep", TestwinsleepCmd, @@ -290,7 +296,63 @@ TestwinclockCmd( ClientData dummy, /* *---------------------------------------------------------------------- * - * Testwinsleepcmd -- + * TestwincpuidCmd -- + * + * Retrieves CPU ID information. + * + * Usage: + * testwincpuid + * + * Parameters: + * eax - The value to pass in the EAX register to a CPUID instruction. + * + * Results: + * Returns a four-element list containing the values from the + * EAX, EBX, ECX and EDX registers returned from the CPUID instruction. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +TestwincpuidCmd( ClientData dummy, + Tcl_Interp* interp, /* Tcl interpreter */ + int objc, /* Parameter count */ + Tcl_Obj *CONST * objv ) /* Parameter vector */ +{ + int status; + int index; + unsigned int regs[4]; + Tcl_Obj * regsObjs[4]; + int i; + + if ( objc != 2 ) { + Tcl_WrongNumArgs( interp, 1, objv, "eax" ); + return TCL_ERROR; + } + if ( Tcl_GetIntFromObj( interp, objv[1], &index ) != TCL_OK ) { + return TCL_ERROR; + } + status = TclWinCPUID( (unsigned int) index, regs ); + if ( status != TCL_OK ) { + Tcl_SetObjResult( interp, Tcl_NewStringObj( "operation not available", + -1 ) ); + return status; + } + for ( i = 0; i < 4; ++i ) { + regsObjs[i] = Tcl_NewIntObj( (int) regs[i] ); + } + Tcl_SetObjResult( interp, Tcl_NewListObj( 4, regsObjs ) ); + return TCL_OK; + +} + +/* + *---------------------------------------------------------------------- + * + * TestwinsleepCmd -- * * Causes this process to wait for the given number of milliseconds * by means of a direct call to Sleep. diff --git a/win/tclWinTime.c b/win/tclWinTime.c index faa7a3c..f428d52 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.4 2004/05/17 14:26:50 kennykb Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.5 2004/06/05 17:25:40 kennykb Exp $ */ #include "tclWinInt.h" @@ -311,9 +311,39 @@ Tcl_GetTime(timePtr) * && timeInfo.nominalFreq.QuadPart != (Tcl_WideInt) 3579545 */ && timeInfo.nominalFreq.QuadPart > (Tcl_WideInt) 15000000 ) { + + /* + * As an exception, if every logical processor on the system + * is on the same chip, we use the performance counter anyway, + * presuming that everyone's TSC is locked to the same + * oscillator. + */ + + SYSTEM_INFO systemInfo; + unsigned int regs[4]; + GetSystemInfo( &systemInfo ); + if ( TclWinCPUID( 0, regs ) == TCL_OK + + && regs[1] == 0x756e6547 /* "Genu" */ + && regs[3] == 0x49656e69 /* "ineI" */ + && regs[2] == 0x6c65746e /* "ntel" */ + + && TclWinCPUID( 1, regs ) == TCL_OK + + && ( (regs[0] & 0x00000F00) == 0x00000F00 /* Pentium 4 */ + || ( (regs[0] & 0x00F00000) /* Extended family */ + && (regs[3] & 0x10000000) ) ) /* Hyperthread */ + && ( ( ( regs[1] & 0x00FF0000 ) >> 16 ) /* CPU count */ + == systemInfo.dwNumberOfProcessors ) + + ) { + timeInfo.perfCounterAvailable = TRUE; + } else { timeInfo.perfCounterAvailable = FALSE; } + } + /* * If the performance counter is available, start a thread to * calibrate it. -- cgit v0.12 From faa888909bd49161d8a859316cb28d813cc9f1d7 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 5 Jun 2004 17:29:25 +0000 Subject: * generic/tcl.h: Corrected Tcl_WideInt declarations so that the mingw build works again. * generic/tclDecls.h: Changes to the tests for * generic/tclInt.decls: clock frequency in * generic/tclIntDecls.h: Tcl_WinTime * generic/tclIntPlatDecls.h: so that any clock frequency * generic/tclPlatDecls.h: is accepted provided that * generic/tclStubInit.c: all CPU's in the system share * tests/platform.test (platform-1.3): a common chip, and hence, * win/tclWin32Dll.c (TclWinCPUID): presumably, a common clock. * win/tclWinTest.c (TestwincpuidCmd) This change necessitated a * win/tclWinTime.c (Tcl_GetTime): small burst of assembly code to read CPU ID information, which was added as TclWinCPUID in the internal Stubs. To test this code in the common case of a single-processor machine, a 'testwincpuid' command was added to tclWinTest.c, and a test case in platform.test. Thanks to Jeff Godfrey and Richard Suchenwirth for reporting this bug. [Bug #976722] --- ChangeLog | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5f4f169..9ee7b7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,19 +2,22 @@ * generic/tcl.h: Corrected Tcl_WideInt declarations so that the mingw build works again. - * generic/tclInt.decls: Changes to the tests for - * generic/tclIntPlatDecls.h: clock frequency in Tcl_WinTime - * generic/tclStubInit.c: so that any clock frequency - * tests/platform.test (platform-1.3): is accepted provided that - * win/tclWin32Dll.c (TclWinCPUID): all CPU's in the system share - * win/tclWinTest.c (TestwincpuidCmd): a common chip, and hence, - * win/tclWinTime.c (Tcl_GetTime): presumably, a common clock. - This change necessitated a small burst of assembly code to read CPU ID - information, which was added as TclWinCPUID in the internal Stubs. To - test this code in the common case of a single-processor machine, a - 'testwincpuid' command was added to tclWinTest.c, and a test case in - platform.test. Thanks to Jeff Godfrey and Richard Suchenwirth for - reporting this bug. [Bug #976722] + * generic/tclDecls.h: Changes to the tests for + * generic/tclInt.decls: clock frequency in + * generic/tclIntDecls.h: Tcl_WinTime + * generic/tclIntPlatDecls.h: so that any clock frequency + * generic/tclPlatDecls.h: is accepted provided that + * generic/tclStubInit.c: all CPU's in the system share + * tests/platform.test (platform-1.3): a common chip, and hence, + * win/tclWin32Dll.c (TclWinCPUID): presumably, a common clock. + * win/tclWinTest.c (TestwincpuidCmd) This change necessitated a + * win/tclWinTime.c (Tcl_GetTime): small burst of assembly code + to read CPU ID information, which was added as TclWinCPUID in the + internal Stubs. To test this code in the common case of a + single-processor machine, a 'testwincpuid' command was added to + tclWinTest.c, and a test case in platform.test. Thanks to Jeff + Godfrey and Richard Suchenwirth for reporting this bug. [Bug + #976722] 2004-05-27 Kevin B. Kenny -- cgit v0.12 From 0c9e6cc0c0fbc431ddd9d42445b19d75d52d9a6f Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Tue, 8 Jun 2004 19:45:26 +0000 Subject: * generic/tclCompile.c: handle warning [Bug 969066] --- ChangeLog | 4 ++++ generic/tclCompile.c | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ee7b7f..69be47e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-06-08 Miguel Sofer + + * generic/tclCompile.c: handle warning [Bug 969066] + 2004-06-05 Kevin B. Kenny * generic/tcl.h: Corrected Tcl_WideInt declarations so that the mingw diff --git a/generic/tclCompile.c b/generic/tclCompile.c index b1bd38e..88f029c 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.5 2004/03/29 02:17:59 msofer Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.6 2004/06/08 19:45:26 msofer Exp $ */ #include "tclInt.h" @@ -1545,7 +1545,9 @@ TclInitByteCodeObj(objPtr, envPtr) size_t codeBytes, objArrayBytes, exceptArrayBytes, cmdLocBytes; size_t auxDataArrayBytes, structureSize; register unsigned char *p; +#ifdef TCL_COMPILE_DEBUG unsigned char *nextPtr; +#endif int numLitObjects = envPtr->literalArrayNext; Namespace *namespacePtr; int i; @@ -1626,8 +1628,10 @@ TclInitByteCodeObj(objPtr, envPtr) } p += auxDataArrayBytes; +#ifndef TCL_COMPILE_DEBUG + EncodeCmdLocMap(envPtr, codePtr, (unsigned char *) p); +#else nextPtr = EncodeCmdLocMap(envPtr, codePtr, (unsigned char *) p); -#ifdef TCL_COMPILE_DEBUG if (((size_t)(nextPtr - p)) != cmdLocBytes) { panic("TclInitByteCodeObj: encoded cmd location bytes %d != expected size %d\n", (nextPtr - p), cmdLocBytes); } -- cgit v0.12 From 0bfce763373517dffd7999ac456bc2a8331d9bdd Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 8 Jun 2004 20:25:43 +0000 Subject: Silence compiler warnings --- generic/tclTest.c | 5 +++-- unix/dltest/pkga.c | 4 ++-- unix/tclUnixPipe.c | 4 +--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/generic/tclTest.c b/generic/tclTest.c index 2695920..1d7774a 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.7 2004/03/01 17:33:21 dgp Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.8 2004/06/08 20:25:43 dgp Exp $ */ #define TCL_TEST @@ -1985,7 +1985,8 @@ TesteventObjCmd( ClientData unused, /* Not used */ NULL }; int posIndex; /* Index of the chosen position */ - static CONST int posNum[] = { /* Interpretation of the chosen position */ + static CONST Tcl_QueuePosition posNum[] = { + /* Interpretation of the chosen position */ TCL_QUEUE_HEAD, TCL_QUEUE_TAIL, TCL_QUEUE_MARK diff --git a/unix/dltest/pkga.c b/unix/dltest/pkga.c index 8dd87ae..63170fc 100644 --- a/unix/dltest/pkga.c +++ b/unix/dltest/pkga.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: pkga.c,v 1.4.24.2 2003/07/16 02:16:14 mdejong Exp $ + * RCS: @(#) $Id: pkga.c,v 1.4.24.3 2004/06/08 20:25:45 dgp Exp $ */ #include "tcl.h" @@ -49,7 +49,7 @@ Pkga_EqObjCmd(dummy, interp, objc, objv) { int result; CONST char *str1, *str2; - int len1, len2, n; + int len1, len2; if (objc != 3) { Tcl_WrongNumArgs(interp, 1, objv, "string1 string2"); diff --git a/unix/tclUnixPipe.c b/unix/tclUnixPipe.c index 4ceb16f..89e64f3 100644 --- a/unix/tclUnixPipe.c +++ b/unix/tclUnixPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPipe.c,v 1.23 2003/02/21 14:15:58 das Exp $ + * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.1 2004/06/08 20:25:45 dgp Exp $ */ #include "tclInt.h" @@ -660,8 +660,6 @@ SetupStdFile(file, type) fcntl(targetFd, F_SETFD, 0); } else { - int result; - /* * Since we aren't dup'ing the file, we need to explicitly clear * the close-on-exec flag. -- cgit v0.12 From 3f28d37c32934a4b9ebb9e9de25f85c8ed77fdb0 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 8 Jun 2004 20:43:33 +0000 Subject: silence compiler warning --- unix/tclUnixPipe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/unix/tclUnixPipe.c b/unix/tclUnixPipe.c index 89e64f3..77788ce 100644 --- a/unix/tclUnixPipe.c +++ b/unix/tclUnixPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.1 2004/06/08 20:25:45 dgp Exp $ + * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.2 2004/06/08 20:43:33 dgp Exp $ */ #include "tclInt.h" @@ -665,7 +665,7 @@ SetupStdFile(file, type) * the close-on-exec flag. */ - result = fcntl(fd, F_SETFD, 0); + fcntl(fd, F_SETFD, 0); } } else { close(targetFd); -- cgit v0.12 From 1c4cee847c2020e2cf01b5eda482035878b51ae9 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 10 Jun 2004 13:59:08 +0000 Subject: Partially corrected [Bug 932314]. --- ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 69be47e..502e32e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-06-10 Zoran Vasiljevic + + * generic/tclIOUtil.c: partially corrected [Bug 932314]. + Also, corrected return values of Tcl_FSChdir() to + reflect those of the underlying platform-specific call. + Originally, return codes were mixed with those of Tcl. + 2004-06-08 Miguel Sofer * generic/tclCompile.c: handle warning [Bug 969066] -- cgit v0.12 From bfa6f7aee69e64e0d9bfdc962925640b3a241ecb Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 10 Jun 2004 14:05:24 +0000 Subject: Partialy fixed Bug #932314 --- generic/tclIOUtil.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 046039e..33884e0 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.17 2004/05/04 22:26:00 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.18 2004/06/10 14:05:24 vasiljevic Exp $ */ #include "tclInt.h" @@ -2624,7 +2624,8 @@ Tcl_FSChdir(pathPtr) objPtr = Tcl_FSGetTranslatedPath(NULL, pathPtr); if (objPtr == NULL) { - return TCL_ERROR; + Tcl_SetErrno(ENOENT); + return -1; } Tcl_IncrRefCount(objPtr); str = Tcl_GetStringFromObj(objPtr, &len); @@ -2644,7 +2645,8 @@ Tcl_FSChdir(pathPtr) #ifdef WIN32 if (objPtr) { Tcl_DecrRefCount(objPtr); } #endif - return TCL_ERROR; + Tcl_SetErrno(ENOENT); + return -1; } fsPtr = Tcl_FSGetFileSystemForPath(pathPtr); @@ -2675,7 +2677,7 @@ Tcl_FSChdir(pathPtr) * calculated above, and we must therefore cache that * information. */ - if (retVal == TCL_OK) { + if (retVal == 0) { /* * Note that this normalized path may be different to what * we found above (or at least a different object), if the @@ -2690,7 +2692,8 @@ Tcl_FSChdir(pathPtr) #ifdef WIN32 if (objPtr) { Tcl_DecrRefCount(objPtr); } #endif - return TCL_ERROR; + Tcl_SetErrno(ENOENT); + return -1; } FsUpdateCwd(normDirName); } @@ -3838,7 +3841,13 @@ Tcl_FSGetFileSystemForPath(pathObjPtr) /* * Check if the filesystem has changed in some way since * this object's internal representation was calculated. + * Before doing that, assure we have the most up-to-date + * copy of the master filesystem. This is accomplished + * by the FsGetFirstFilesystem() call. */ + + fsRecPtr = FsGetFirstFilesystem(); + if (TclFSEnsureEpochOk(pathObjPtr, &retVal) != TCL_OK) { return NULL; } @@ -3849,7 +3858,6 @@ Tcl_FSGetFileSystemForPath(pathObjPtr) * succeeded. */ - fsRecPtr = FsGetFirstFilesystem(); while ((retVal == NULL) && (fsRecPtr != NULL)) { Tcl_FSPathInFilesystemProc *proc = fsRecPtr->fsPtr->pathInFilesystemProc; if (proc != NULL) { -- cgit v0.12 From 0f3e7b28dc6b781374a7e7616cc33791549f5570 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 10 Jun 2004 17:17:26 +0000 Subject: * generic/tclDecls.h: Regenerated on a unix box. * generic/tclIntDecls.h: The Win/DOS EOLs from the * generic/tclIntPlatDecls.h: last regen screwed up compilation * generic/tclPlatDecls.h: with an older gcc. * generic/tclStubInit.c: --- ChangeLog | 8 + generic/tclDecls.h | 8284 ++++++++++++++++++++++----------------------- generic/tclIntDecls.h | 2724 +++++++-------- generic/tclIntPlatDecls.h | 1186 +++---- generic/tclPlatDecls.h | 394 +-- generic/tclStubInit.c | 1884 +++++------ 6 files changed, 7244 insertions(+), 7236 deletions(-) diff --git a/ChangeLog b/ChangeLog index 502e32e..3c13e3e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-06-10 Andreas Kupries + + * generic/tclDecls.h: Regenerated on a unix box. + * generic/tclIntDecls.h: The Win/DOS EOLs from the + * generic/tclIntPlatDecls.h: last regen screwed up compilation + * generic/tclPlatDecls.h: with an older gcc. + * generic/tclStubInit.c: + 2004-06-10 Zoran Vasiljevic * generic/tclIOUtil.c: partially corrected [Bug 932314]. diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 643a044..7cb8616 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -1,4142 +1,4142 @@ -/* - * tclDecls.h -- - * - * Declarations of functions in the platform independent public Tcl API. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclDecls.h,v 1.93.2.4 2004/06/05 17:25:39 kennykb Exp $ - */ - -#ifndef _TCLDECLS -#define _TCLDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tcl.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -/* 0 */ -EXTERN int Tcl_PkgProvideEx _ANSI_ARGS_((Tcl_Interp* interp, - CONST char* name, CONST char* version, - ClientData clientData)); -/* 1 */ -EXTERN CONST84_RETURN char * Tcl_PkgRequireEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - CONST char * version, int exact, - ClientData * clientDataPtr)); -/* 2 */ -EXTERN void Tcl_Panic _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); -/* 3 */ -EXTERN char * Tcl_Alloc _ANSI_ARGS_((unsigned int size)); -/* 4 */ -EXTERN void Tcl_Free _ANSI_ARGS_((char * ptr)); -/* 5 */ -EXTERN char * Tcl_Realloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* 6 */ -EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, - CONST char * file, int line)); -/* 7 */ -EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char * ptr, - CONST char * file, int line)); -/* 8 */ -EXTERN char * Tcl_DbCkrealloc _ANSI_ARGS_((char * ptr, - unsigned int size, CONST char * file, - int line)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 9 */ -EXTERN void Tcl_CreateFileHandler _ANSI_ARGS_((int fd, int mask, - Tcl_FileProc * proc, ClientData clientData)); -#endif /* UNIX */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 10 */ -EXTERN void Tcl_DeleteFileHandler _ANSI_ARGS_((int fd)); -#endif /* UNIX */ -/* 11 */ -EXTERN void Tcl_SetTimer _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 12 */ -EXTERN void Tcl_Sleep _ANSI_ARGS_((int ms)); -/* 13 */ -EXTERN int Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 14 */ -EXTERN int Tcl_AppendAllObjTypes _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr)); -/* 15 */ -EXTERN void Tcl_AppendStringsToObj _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); -/* 16 */ -EXTERN void Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj* objPtr, - CONST char* bytes, int length)); -/* 17 */ -EXTERN Tcl_Obj * Tcl_ConcatObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST objv[])); -/* 18 */ -EXTERN int Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); -/* 19 */ -EXTERN void Tcl_DbDecrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 20 */ -EXTERN void Tcl_DbIncrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 21 */ -EXTERN int Tcl_DbIsShared _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST char * file, int line)); -/* 22 */ -EXTERN Tcl_Obj * Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue, - CONST char * file, int line)); -/* 23 */ -EXTERN Tcl_Obj * Tcl_DbNewByteArrayObj _ANSI_ARGS_(( - CONST unsigned char * bytes, int length, - CONST char * file, int line)); -/* 24 */ -EXTERN Tcl_Obj * Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue, - CONST char * file, int line)); -/* 25 */ -EXTERN Tcl_Obj * Tcl_DbNewListObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST * objv, CONST char * file, - int line)); -/* 26 */ -EXTERN Tcl_Obj * Tcl_DbNewLongObj _ANSI_ARGS_((long longValue, - CONST char * file, int line)); -/* 27 */ -EXTERN Tcl_Obj * Tcl_DbNewObj _ANSI_ARGS_((CONST char * file, - int line)); -/* 28 */ -EXTERN Tcl_Obj * Tcl_DbNewStringObj _ANSI_ARGS_((CONST char * bytes, - int length, CONST char * file, int line)); -/* 29 */ -EXTERN Tcl_Obj * Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 30 */ -EXTERN void TclFreeObj _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 31 */ -EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * boolPtr)); -/* 32 */ -EXTERN int Tcl_GetBooleanFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - int * boolPtr)); -/* 33 */ -EXTERN unsigned char * Tcl_GetByteArrayFromObj _ANSI_ARGS_(( - Tcl_Obj * objPtr, int * lengthPtr)); -/* 34 */ -EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, double * doublePtr)); -/* 35 */ -EXTERN int Tcl_GetDoubleFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - double * doublePtr)); -/* 36 */ -EXTERN int Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, CONST84 char ** tablePtr, - CONST char * msg, int flags, int * indexPtr)); -/* 37 */ -EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * intPtr)); -/* 38 */ -EXTERN int Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int * intPtr)); -/* 39 */ -EXTERN int Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, long * longPtr)); -/* 40 */ -EXTERN Tcl_ObjType * Tcl_GetObjType _ANSI_ARGS_((CONST char * typeName)); -/* 41 */ -EXTERN char * Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int * lengthPtr)); -/* 42 */ -EXTERN void Tcl_InvalidateStringRep _ANSI_ARGS_(( - Tcl_Obj * objPtr)); -/* 43 */ -EXTERN int Tcl_ListObjAppendList _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - Tcl_Obj * elemListPtr)); -/* 44 */ -EXTERN int Tcl_ListObjAppendElement _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - Tcl_Obj * objPtr)); -/* 45 */ -EXTERN int Tcl_ListObjGetElements _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - int * objcPtr, Tcl_Obj *** objvPtr)); -/* 46 */ -EXTERN int Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int index, - Tcl_Obj ** objPtrPtr)); -/* 47 */ -EXTERN int Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int * lengthPtr)); -/* 48 */ -EXTERN int Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * listPtr, int first, int count, - int objc, Tcl_Obj *CONST objv[])); -/* 49 */ -EXTERN Tcl_Obj * Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue)); -/* 50 */ -EXTERN Tcl_Obj * Tcl_NewByteArrayObj _ANSI_ARGS_(( - CONST unsigned char* bytes, int length)); -/* 51 */ -EXTERN Tcl_Obj * Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue)); -/* 52 */ -EXTERN Tcl_Obj * Tcl_NewIntObj _ANSI_ARGS_((int intValue)); -/* 53 */ -EXTERN Tcl_Obj * Tcl_NewListObj _ANSI_ARGS_((int objc, - Tcl_Obj *CONST objv[])); -/* 54 */ -EXTERN Tcl_Obj * Tcl_NewLongObj _ANSI_ARGS_((long longValue)); -/* 55 */ -EXTERN Tcl_Obj * Tcl_NewObj _ANSI_ARGS_((void)); -/* 56 */ -EXTERN Tcl_Obj * Tcl_NewStringObj _ANSI_ARGS_((CONST char * bytes, - int length)); -/* 57 */ -EXTERN void Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int boolValue)); -/* 58 */ -EXTERN unsigned char * Tcl_SetByteArrayLength _ANSI_ARGS_((Tcl_Obj * objPtr, - int length)); -/* 59 */ -EXTERN void Tcl_SetByteArrayObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST unsigned char * bytes, int length)); -/* 60 */ -EXTERN void Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj * objPtr, - double doubleValue)); -/* 61 */ -EXTERN void Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int intValue)); -/* 62 */ -EXTERN void Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int objc, Tcl_Obj *CONST objv[])); -/* 63 */ -EXTERN void Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj * objPtr, - long longValue)); -/* 64 */ -EXTERN void Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj * objPtr, - int length)); -/* 65 */ -EXTERN void Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj* objPtr, - CONST char* bytes, int length)); -/* 66 */ -EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * message)); -/* 67 */ -EXTERN void Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * message, int length)); -/* 68 */ -EXTERN void Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp * interp)); -/* 69 */ -EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 70 */ -EXTERN void Tcl_AppendResult _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 71 */ -EXTERN Tcl_AsyncHandler Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc * proc, - ClientData clientData)); -/* 72 */ -EXTERN void Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async)); -/* 73 */ -EXTERN int Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int code)); -/* 74 */ -EXTERN void Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async)); -/* 75 */ -EXTERN int Tcl_AsyncReady _ANSI_ARGS_((void)); -/* 76 */ -EXTERN void Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp * interp)); -/* 77 */ -EXTERN char Tcl_Backslash _ANSI_ARGS_((CONST char * src, - int * readPtr)); -/* 78 */ -EXTERN int Tcl_BadChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * optionName, - CONST char * optionList)); -/* 79 */ -EXTERN void Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 80 */ -EXTERN void Tcl_CancelIdleCall _ANSI_ARGS_(( - Tcl_IdleProc * idleProc, - ClientData clientData)); -/* 81 */ -EXTERN int Tcl_Close _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 82 */ -EXTERN int Tcl_CommandComplete _ANSI_ARGS_((CONST char * cmd)); -/* 83 */ -EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv)); -/* 84 */ -EXTERN int Tcl_ConvertElement _ANSI_ARGS_((CONST char * src, - char * dst, int flags)); -/* 85 */ -EXTERN int Tcl_ConvertCountedElement _ANSI_ARGS_(( - CONST char * src, int length, char * dst, - int flags)); -/* 86 */ -EXTERN int Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp * slave, - CONST char * slaveCmd, Tcl_Interp * target, - CONST char * targetCmd, int argc, - CONST84 char * CONST * argv)); -/* 87 */ -EXTERN int Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp * slave, - CONST char * slaveCmd, Tcl_Interp * target, - CONST char * targetCmd, int objc, - Tcl_Obj *CONST objv[])); -/* 88 */ -EXTERN Tcl_Channel Tcl_CreateChannel _ANSI_ARGS_(( - Tcl_ChannelType * typePtr, - CONST char * chanName, - ClientData instanceData, int mask)); -/* 89 */ -EXTERN void Tcl_CreateChannelHandler _ANSI_ARGS_(( - Tcl_Channel chan, int mask, - Tcl_ChannelProc * proc, - ClientData clientData)); -/* 90 */ -EXTERN void Tcl_CreateCloseHandler _ANSI_ARGS_((Tcl_Channel chan, - Tcl_CloseProc * proc, ClientData clientData)); -/* 91 */ -EXTERN Tcl_Command Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, Tcl_CmdProc * proc, - ClientData clientData, - Tcl_CmdDeleteProc * deleteProc)); -/* 92 */ -EXTERN void Tcl_CreateEventSource _ANSI_ARGS_(( - Tcl_EventSetupProc * setupProc, - Tcl_EventCheckProc * checkProc, - ClientData clientData)); -/* 93 */ -EXTERN void Tcl_CreateExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 94 */ -EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); -/* 95 */ -EXTERN void Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, int numArgs, - Tcl_ValueType * argTypes, - Tcl_MathProc * proc, ClientData clientData)); -/* 96 */ -EXTERN Tcl_Command Tcl_CreateObjCommand _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * cmdName, - Tcl_ObjCmdProc * proc, ClientData clientData, - Tcl_CmdDeleteProc * deleteProc)); -/* 97 */ -EXTERN Tcl_Interp * Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveName, int isSafe)); -/* 98 */ -EXTERN Tcl_TimerToken Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds, - Tcl_TimerProc * proc, ClientData clientData)); -/* 99 */ -EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp * interp, - int level, Tcl_CmdTraceProc * proc, - ClientData clientData)); -/* 100 */ -EXTERN void Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name)); -/* 101 */ -EXTERN void Tcl_DeleteChannelHandler _ANSI_ARGS_(( - Tcl_Channel chan, Tcl_ChannelProc * proc, - ClientData clientData)); -/* 102 */ -EXTERN void Tcl_DeleteCloseHandler _ANSI_ARGS_((Tcl_Channel chan, - Tcl_CloseProc * proc, ClientData clientData)); -/* 103 */ -EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName)); -/* 104 */ -EXTERN int Tcl_DeleteCommandFromToken _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command)); -/* 105 */ -EXTERN void Tcl_DeleteEvents _ANSI_ARGS_(( - Tcl_EventDeleteProc * proc, - ClientData clientData)); -/* 106 */ -EXTERN void Tcl_DeleteEventSource _ANSI_ARGS_(( - Tcl_EventSetupProc * setupProc, - Tcl_EventCheckProc * checkProc, - ClientData clientData)); -/* 107 */ -EXTERN void Tcl_DeleteExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 108 */ -EXTERN void Tcl_DeleteHashEntry _ANSI_ARGS_(( - Tcl_HashEntry * entryPtr)); -/* 109 */ -EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 110 */ -EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp * interp)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 111 */ -EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, - Tcl_Pid * pidPtr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 111 */ -EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, - Tcl_Pid * pidPtr)); -#endif /* __WIN32__ */ -/* 112 */ -EXTERN void Tcl_DeleteTimerHandler _ANSI_ARGS_(( - Tcl_TimerToken token)); -/* 113 */ -EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Trace trace)); -/* 114 */ -EXTERN void Tcl_DontCallWhenDeleted _ANSI_ARGS_(( - Tcl_Interp * interp, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 115 */ -EXTERN int Tcl_DoOneEvent _ANSI_ARGS_((int flags)); -/* 116 */ -EXTERN void Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc * proc, - ClientData clientData)); -/* 117 */ -EXTERN char * Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString * dsPtr, - CONST char * str, int length)); -/* 118 */ -EXTERN char * Tcl_DStringAppendElement _ANSI_ARGS_(( - Tcl_DString * dsPtr, CONST char * string)); -/* 119 */ -EXTERN void Tcl_DStringEndSublist _ANSI_ARGS_(( - Tcl_DString * dsPtr)); -/* 120 */ -EXTERN void Tcl_DStringFree _ANSI_ARGS_((Tcl_DString * dsPtr)); -/* 121 */ -EXTERN void Tcl_DStringGetResult _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_DString * dsPtr)); -/* 122 */ -EXTERN void Tcl_DStringInit _ANSI_ARGS_((Tcl_DString * dsPtr)); -/* 123 */ -EXTERN void Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * dsPtr)); -/* 124 */ -EXTERN void Tcl_DStringSetLength _ANSI_ARGS_(( - Tcl_DString * dsPtr, int length)); -/* 125 */ -EXTERN void Tcl_DStringStartSublist _ANSI_ARGS_(( - Tcl_DString * dsPtr)); -/* 126 */ -EXTERN int Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan)); -/* 127 */ -EXTERN CONST84_RETURN char * Tcl_ErrnoId _ANSI_ARGS_((void)); -/* 128 */ -EXTERN CONST84_RETURN char * Tcl_ErrnoMsg _ANSI_ARGS_((int err)); -/* 129 */ -EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 130 */ -EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * fileName)); -/* 131 */ -EXTERN int Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr)); -/* 132 */ -EXTERN void Tcl_EventuallyFree _ANSI_ARGS_(( - ClientData clientData, - Tcl_FreeProc * freeProc)); -/* 133 */ -EXTERN void Tcl_Exit _ANSI_ARGS_((int status)); -/* 134 */ -EXTERN int Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * hiddenCmdToken, - CONST char * cmdName)); -/* 135 */ -EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * ptr)); -/* 136 */ -EXTERN int Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int * ptr)); -/* 137 */ -EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, double * ptr)); -/* 138 */ -EXTERN int Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, double * ptr)); -/* 139 */ -EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, long * ptr)); -/* 140 */ -EXTERN int Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, long * ptr)); -/* 141 */ -EXTERN int Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); -/* 142 */ -EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 143 */ -EXTERN void Tcl_Finalize _ANSI_ARGS_((void)); -/* 144 */ -EXTERN void Tcl_FindExecutable _ANSI_ARGS_((CONST char * argv0)); -/* 145 */ -EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, - Tcl_HashSearch * searchPtr)); -/* 146 */ -EXTERN int Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan)); -/* 147 */ -EXTERN void Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp * interp)); -/* 148 */ -EXTERN int Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveCmd, - Tcl_Interp ** targetInterpPtr, - CONST84 char ** targetCmdPtr, int * argcPtr, - CONST84 char *** argvPtr)); -/* 149 */ -EXTERN int Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveCmd, - Tcl_Interp ** targetInterpPtr, - CONST84 char ** targetCmdPtr, int * objcPtr, - Tcl_Obj *** objv)); -/* 150 */ -EXTERN ClientData Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_InterpDeleteProc ** procPtr)); -/* 151 */ -EXTERN Tcl_Channel Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * chanName, int * modePtr)); -/* 152 */ -EXTERN int Tcl_GetChannelBufferSize _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 153 */ -EXTERN int Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan, - int direction, ClientData * handlePtr)); -/* 154 */ -EXTERN ClientData Tcl_GetChannelInstanceData _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 155 */ -EXTERN int Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan)); -/* 156 */ -EXTERN CONST84_RETURN char * Tcl_GetChannelName _ANSI_ARGS_(( - Tcl_Channel chan)); -/* 157 */ -EXTERN int Tcl_GetChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan, - CONST char * optionName, Tcl_DString * dsPtr)); -/* 158 */ -EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan)); -/* 159 */ -EXTERN int Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, Tcl_CmdInfo * infoPtr)); -/* 160 */ -EXTERN CONST84_RETURN char * Tcl_GetCommandName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command)); -/* 161 */ -EXTERN int Tcl_GetErrno _ANSI_ARGS_((void)); -/* 162 */ -EXTERN CONST84_RETURN char * Tcl_GetHostName _ANSI_ARGS_((void)); -/* 163 */ -EXTERN int Tcl_GetInterpPath _ANSI_ARGS_(( - Tcl_Interp * askInterp, - Tcl_Interp * slaveInterp)); -/* 164 */ -EXTERN Tcl_Interp * Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp * interp)); -/* 165 */ -EXTERN CONST char * Tcl_GetNameOfExecutable _ANSI_ARGS_((void)); -/* 166 */ -EXTERN Tcl_Obj * Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp * interp)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 167 */ -EXTERN int Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int forWriting, - int checkUsage, ClientData * filePtr)); -#endif /* UNIX */ -/* 168 */ -EXTERN Tcl_PathType Tcl_GetPathType _ANSI_ARGS_((CONST char * path)); -/* 169 */ -EXTERN int Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan, - Tcl_DString * dsPtr)); -/* 170 */ -EXTERN int Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan, - Tcl_Obj * objPtr)); -/* 171 */ -EXTERN int Tcl_GetServiceMode _ANSI_ARGS_((void)); -/* 172 */ -EXTERN Tcl_Interp * Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * slaveName)); -/* 173 */ -EXTERN Tcl_Channel Tcl_GetStdChannel _ANSI_ARGS_((int type)); -/* 174 */ -EXTERN CONST84_RETURN char * Tcl_GetStringResult _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 175 */ -EXTERN CONST84_RETURN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags)); -/* 176 */ -EXTERN CONST84_RETURN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 177 */ -EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * command)); -/* 178 */ -EXTERN int Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr)); -/* 179 */ -EXTERN int Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, - CONST char * hiddenCmdToken)); -/* 180 */ -EXTERN int Tcl_Init _ANSI_ARGS_((Tcl_Interp * interp)); -/* 181 */ -EXTERN void Tcl_InitHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, int keyType)); -/* 182 */ -EXTERN int Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan)); -/* 183 */ -EXTERN int Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 184 */ -EXTERN int Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp * interp)); -/* 185 */ -EXTERN int Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp * interp)); -/* 186 */ -EXTERN char * Tcl_JoinPath _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv, - Tcl_DString * resultPtr)); -/* 187 */ -EXTERN int Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, char * addr, int type)); -/* Slot 188 is reserved */ -/* 189 */ -EXTERN Tcl_Channel Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle, - int mode)); -/* 190 */ -EXTERN int Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp * interp)); -/* 191 */ -EXTERN Tcl_Channel Tcl_MakeTcpClientChannel _ANSI_ARGS_(( - ClientData tcpSocket)); -/* 192 */ -EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, - CONST84 char * CONST * argv)); -/* 193 */ -EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( - Tcl_HashSearch * searchPtr)); -/* 194 */ -EXTERN void Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel, - int mask)); -/* 195 */ -EXTERN Tcl_Obj * Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - int flags)); -/* 196 */ -EXTERN Tcl_Obj * Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - Tcl_Obj * newValuePtr, int flags)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 197 */ -EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( - Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 197 */ -EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( - Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -#endif /* __WIN32__ */ -/* 198 */ -EXTERN Tcl_Channel Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * fileName, - CONST char * modeString, int permissions)); -/* 199 */ -EXTERN Tcl_Channel Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp * interp, - int port, CONST char * address, - CONST char * myaddr, int myport, int async)); -/* 200 */ -EXTERN Tcl_Channel Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp * interp, - int port, CONST char * host, - Tcl_TcpAcceptProc * acceptProc, - ClientData callbackData)); -/* 201 */ -EXTERN void Tcl_Preserve _ANSI_ARGS_((ClientData data)); -/* 202 */ -EXTERN void Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp * interp, - double value, char * dst)); -/* 203 */ -EXTERN int Tcl_PutEnv _ANSI_ARGS_((CONST char * string)); -/* 204 */ -EXTERN CONST84_RETURN char * Tcl_PosixError _ANSI_ARGS_((Tcl_Interp * interp)); -/* 205 */ -EXTERN void Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event * evPtr, - Tcl_QueuePosition position)); -/* 206 */ -EXTERN int Tcl_Read _ANSI_ARGS_((Tcl_Channel chan, - char * bufPtr, int toRead)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 207 */ -EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 207 */ -EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); -#endif /* __WIN32__ */ -/* 208 */ -EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmd, int flags)); -/* 209 */ -EXTERN int Tcl_RecordAndEvalObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * cmdPtr, - int flags)); -/* 210 */ -EXTERN void Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 211 */ -EXTERN void Tcl_RegisterObjType _ANSI_ARGS_(( - Tcl_ObjType * typePtr)); -/* 212 */ -EXTERN Tcl_RegExp Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string)); -/* 213 */ -EXTERN int Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp regexp, CONST char * str, - CONST char * start)); -/* 214 */ -EXTERN int Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CONST char * pattern)); -/* 215 */ -EXTERN void Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp, - int index, CONST84 char ** startPtr, - CONST84 char ** endPtr)); -/* 216 */ -EXTERN void Tcl_Release _ANSI_ARGS_((ClientData clientData)); -/* 217 */ -EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp * interp)); -/* 218 */ -EXTERN int Tcl_ScanElement _ANSI_ARGS_((CONST char * str, - int * flagPtr)); -/* 219 */ -EXTERN int Tcl_ScanCountedElement _ANSI_ARGS_((CONST char * str, - int length, int * flagPtr)); -/* 220 */ -EXTERN int Tcl_SeekOld _ANSI_ARGS_((Tcl_Channel chan, - int offset, int mode)); -/* 221 */ -EXTERN int Tcl_ServiceAll _ANSI_ARGS_((void)); -/* 222 */ -EXTERN int Tcl_ServiceEvent _ANSI_ARGS_((int flags)); -/* 223 */ -EXTERN void Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_InterpDeleteProc * proc, - ClientData clientData)); -/* 224 */ -EXTERN void Tcl_SetChannelBufferSize _ANSI_ARGS_(( - Tcl_Channel chan, int sz)); -/* 225 */ -EXTERN int Tcl_SetChannelOption _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan, - CONST char * optionName, - CONST char * newValue)); -/* 226 */ -EXTERN int Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * cmdName, - CONST Tcl_CmdInfo * infoPtr)); -/* 227 */ -EXTERN void Tcl_SetErrno _ANSI_ARGS_((int err)); -/* 228 */ -EXTERN void Tcl_SetErrorCode _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 229 */ -EXTERN void Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time * timePtr)); -/* 230 */ -EXTERN void Tcl_SetPanicProc _ANSI_ARGS_(( - Tcl_PanicProc * panicProc)); -/* 231 */ -EXTERN int Tcl_SetRecursionLimit _ANSI_ARGS_(( - Tcl_Interp * interp, int depth)); -/* 232 */ -EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp * interp, - char * str, Tcl_FreeProc * freeProc)); -/* 233 */ -EXTERN int Tcl_SetServiceMode _ANSI_ARGS_((int mode)); -/* 234 */ -EXTERN void Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * errorObjPtr)); -/* 235 */ -EXTERN void Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * resultObjPtr)); -/* 236 */ -EXTERN void Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel, - int type)); -/* 237 */ -EXTERN CONST84_RETURN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, CONST char * newValue, - int flags)); -/* 238 */ -EXTERN CONST84_RETURN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - CONST char * newValue, int flags)); -/* 239 */ -EXTERN CONST84_RETURN char * Tcl_SignalId _ANSI_ARGS_((int sig)); -/* 240 */ -EXTERN CONST84_RETURN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); -/* 241 */ -EXTERN void Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp * interp)); -/* 242 */ -EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * listStr, int * argcPtr, - CONST84 char *** argvPtr)); -/* 243 */ -EXTERN void Tcl_SplitPath _ANSI_ARGS_((CONST char * path, - int * argcPtr, CONST84 char *** argvPtr)); -/* 244 */ -EXTERN void Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * pkgName, - Tcl_PackageInitProc * initProc, - Tcl_PackageInitProc * safeInitProc)); -/* 245 */ -EXTERN int Tcl_StringMatch _ANSI_ARGS_((CONST char * str, - CONST char * pattern)); -/* 246 */ -EXTERN int Tcl_TellOld _ANSI_ARGS_((Tcl_Channel chan)); -/* 247 */ -EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 248 */ -EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 249 */ -EXTERN char * Tcl_TranslateFileName _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_DString * bufferPtr)); -/* 250 */ -EXTERN int Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, - CONST char * str, int len, int atHead)); -/* 251 */ -EXTERN void Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 252 */ -EXTERN int Tcl_UnregisterChannel _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Channel chan)); -/* 253 */ -EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags)); -/* 254 */ -EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 255 */ -EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 256 */ -EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * proc, - ClientData clientData)); -/* 257 */ -EXTERN void Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 258 */ -EXTERN int Tcl_UpVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * frameName, CONST char * varName, - CONST char * localName, int flags)); -/* 259 */ -EXTERN int Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * frameName, CONST char * part1, - CONST char * part2, CONST char * localName, - int flags)); -/* 260 */ -EXTERN int Tcl_VarEval _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); -/* 261 */ -EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_VarTraceProc * procPtr, - ClientData prevClientData)); -/* 262 */ -EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, Tcl_VarTraceProc * procPtr, - ClientData prevClientData)); -/* 263 */ -EXTERN int Tcl_Write _ANSI_ARGS_((Tcl_Channel chan, - CONST char * s, int slen)); -/* 264 */ -EXTERN void Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], - CONST char * message)); -/* 265 */ -EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_(( - CONST char * fileName)); -/* 266 */ -EXTERN void Tcl_ValidateAllMemory _ANSI_ARGS_((CONST char * file, - int line)); -/* 267 */ -EXTERN void Tcl_AppendResultVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 268 */ -EXTERN void Tcl_AppendStringsToObjVA _ANSI_ARGS_(( - Tcl_Obj * objPtr, va_list argList)); -/* 269 */ -EXTERN CONST84_RETURN char * Tcl_HashStats _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 270 */ -EXTERN CONST84_RETURN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CONST84 char ** termPtr)); -/* 271 */ -EXTERN CONST84_RETURN char * Tcl_PkgPresent _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version, - int exact)); -/* 272 */ -EXTERN CONST84_RETURN char * Tcl_PkgPresentEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - CONST char * version, int exact, - ClientData * clientDataPtr)); -/* 273 */ -EXTERN int Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version)); -/* 274 */ -EXTERN CONST84_RETURN char * Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, CONST char * version, - int exact)); -/* 275 */ -EXTERN void Tcl_SetErrorCodeVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 276 */ -EXTERN int Tcl_VarEvalVA _ANSI_ARGS_((Tcl_Interp * interp, - va_list argList)); -/* 277 */ -EXTERN Tcl_Pid Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, - int options)); -/* 278 */ -EXTERN void Tcl_PanicVA _ANSI_ARGS_((CONST char * format, - va_list argList)); -/* 279 */ -EXTERN void Tcl_GetVersion _ANSI_ARGS_((int * major, int * minor, - int * patchLevel, int * type)); -/* 280 */ -EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp * interp)); -/* 281 */ -EXTERN Tcl_Channel Tcl_StackChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_ChannelType * typePtr, - ClientData instanceData, int mask, - Tcl_Channel prevChan)); -/* 282 */ -EXTERN int Tcl_UnstackChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 283 */ -EXTERN Tcl_Channel Tcl_GetStackedChannel _ANSI_ARGS_((Tcl_Channel chan)); -/* 284 */ -EXTERN void Tcl_SetMainLoop _ANSI_ARGS_((Tcl_MainLoopProc * proc)); -/* Slot 285 is reserved */ -/* 286 */ -EXTERN void Tcl_AppendObjToObj _ANSI_ARGS_((Tcl_Obj * objPtr, - Tcl_Obj * appendObjPtr)); -/* 287 */ -EXTERN Tcl_Encoding Tcl_CreateEncoding _ANSI_ARGS_(( - Tcl_EncodingType * typePtr)); -/* 288 */ -EXTERN void Tcl_CreateThreadExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 289 */ -EXTERN void Tcl_DeleteThreadExitHandler _ANSI_ARGS_(( - Tcl_ExitProc * proc, ClientData clientData)); -/* 290 */ -EXTERN void Tcl_DiscardResult _ANSI_ARGS_(( - Tcl_SavedResult * statePtr)); -/* 291 */ -EXTERN int Tcl_EvalEx _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * script, int numBytes, int flags)); -/* 292 */ -EXTERN int Tcl_EvalObjv _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 293 */ -EXTERN int Tcl_EvalObjEx _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int flags)); -/* 294 */ -EXTERN void Tcl_ExitThread _ANSI_ARGS_((int status)); -/* 295 */ -EXTERN int Tcl_ExternalToUtf _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Encoding encoding, CONST char * src, - int srcLen, int flags, - Tcl_EncodingState * statePtr, char * dst, - int dstLen, int * srcReadPtr, - int * dstWrotePtr, int * dstCharsPtr)); -/* 296 */ -EXTERN char * Tcl_ExternalToUtfDString _ANSI_ARGS_(( - Tcl_Encoding encoding, CONST char * src, - int srcLen, Tcl_DString * dsPtr)); -/* 297 */ -EXTERN void Tcl_FinalizeThread _ANSI_ARGS_((void)); -/* 298 */ -EXTERN void Tcl_FinalizeNotifier _ANSI_ARGS_(( - ClientData clientData)); -/* 299 */ -EXTERN void Tcl_FreeEncoding _ANSI_ARGS_((Tcl_Encoding encoding)); -/* 300 */ -EXTERN Tcl_ThreadId Tcl_GetCurrentThread _ANSI_ARGS_((void)); -/* 301 */ -EXTERN Tcl_Encoding Tcl_GetEncoding _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name)); -/* 302 */ -EXTERN CONST84_RETURN char * Tcl_GetEncodingName _ANSI_ARGS_(( - Tcl_Encoding encoding)); -/* 303 */ -EXTERN void Tcl_GetEncodingNames _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 304 */ -EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - CONST VOID * tablePtr, int offset, - CONST char * msg, int flags, int * indexPtr)); -/* 305 */ -EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_(( - Tcl_ThreadDataKey * keyPtr, int size)); -/* 306 */ -EXTERN Tcl_Obj * Tcl_GetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags)); -/* 307 */ -EXTERN ClientData Tcl_InitNotifier _ANSI_ARGS_((void)); -/* 308 */ -EXTERN void Tcl_MutexLock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); -/* 309 */ -EXTERN void Tcl_MutexUnlock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); -/* 310 */ -EXTERN void Tcl_ConditionNotify _ANSI_ARGS_(( - Tcl_Condition * condPtr)); -/* 311 */ -EXTERN void Tcl_ConditionWait _ANSI_ARGS_(( - Tcl_Condition * condPtr, - Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); -/* 312 */ -EXTERN int Tcl_NumUtfChars _ANSI_ARGS_((CONST char * src, - int len)); -/* 313 */ -EXTERN int Tcl_ReadChars _ANSI_ARGS_((Tcl_Channel channel, - Tcl_Obj * objPtr, int charsToRead, - int appendFlag)); -/* 314 */ -EXTERN void Tcl_RestoreResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_SavedResult * statePtr)); -/* 315 */ -EXTERN void Tcl_SaveResult _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_SavedResult * statePtr)); -/* 316 */ -EXTERN int Tcl_SetSystemEncoding _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name)); -/* 317 */ -EXTERN Tcl_Obj * Tcl_SetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - Tcl_Obj * newValuePtr, int flags)); -/* 318 */ -EXTERN void Tcl_ThreadAlert _ANSI_ARGS_((Tcl_ThreadId threadId)); -/* 319 */ -EXTERN void Tcl_ThreadQueueEvent _ANSI_ARGS_(( - Tcl_ThreadId threadId, Tcl_Event* evPtr, - Tcl_QueuePosition position)); -/* 320 */ -EXTERN Tcl_UniChar Tcl_UniCharAtIndex _ANSI_ARGS_((CONST char * src, - int index)); -/* 321 */ -EXTERN Tcl_UniChar Tcl_UniCharToLower _ANSI_ARGS_((int ch)); -/* 322 */ -EXTERN Tcl_UniChar Tcl_UniCharToTitle _ANSI_ARGS_((int ch)); -/* 323 */ -EXTERN Tcl_UniChar Tcl_UniCharToUpper _ANSI_ARGS_((int ch)); -/* 324 */ -EXTERN int Tcl_UniCharToUtf _ANSI_ARGS_((int ch, char * buf)); -/* 325 */ -EXTERN CONST84_RETURN char * Tcl_UtfAtIndex _ANSI_ARGS_((CONST char * src, - int index)); -/* 326 */ -EXTERN int Tcl_UtfCharComplete _ANSI_ARGS_((CONST char * src, - int len)); -/* 327 */ -EXTERN int Tcl_UtfBackslash _ANSI_ARGS_((CONST char * src, - int * readPtr, char * dst)); -/* 328 */ -EXTERN CONST84_RETURN char * Tcl_UtfFindFirst _ANSI_ARGS_((CONST char * src, - int ch)); -/* 329 */ -EXTERN CONST84_RETURN char * Tcl_UtfFindLast _ANSI_ARGS_((CONST char * src, - int ch)); -/* 330 */ -EXTERN CONST84_RETURN char * Tcl_UtfNext _ANSI_ARGS_((CONST char * src)); -/* 331 */ -EXTERN CONST84_RETURN char * Tcl_UtfPrev _ANSI_ARGS_((CONST char * src, - CONST char * start)); -/* 332 */ -EXTERN int Tcl_UtfToExternal _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Encoding encoding, CONST char * src, - int srcLen, int flags, - Tcl_EncodingState * statePtr, char * dst, - int dstLen, int * srcReadPtr, - int * dstWrotePtr, int * dstCharsPtr)); -/* 333 */ -EXTERN char * Tcl_UtfToExternalDString _ANSI_ARGS_(( - Tcl_Encoding encoding, CONST char * src, - int srcLen, Tcl_DString * dsPtr)); -/* 334 */ -EXTERN int Tcl_UtfToLower _ANSI_ARGS_((char * src)); -/* 335 */ -EXTERN int Tcl_UtfToTitle _ANSI_ARGS_((char * src)); -/* 336 */ -EXTERN int Tcl_UtfToUniChar _ANSI_ARGS_((CONST char * src, - Tcl_UniChar * chPtr)); -/* 337 */ -EXTERN int Tcl_UtfToUpper _ANSI_ARGS_((char * src)); -/* 338 */ -EXTERN int Tcl_WriteChars _ANSI_ARGS_((Tcl_Channel chan, - CONST char * src, int srcLen)); -/* 339 */ -EXTERN int Tcl_WriteObj _ANSI_ARGS_((Tcl_Channel chan, - Tcl_Obj * objPtr)); -/* 340 */ -EXTERN char * Tcl_GetString _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 341 */ -EXTERN CONST84_RETURN char * Tcl_GetDefaultEncodingDir _ANSI_ARGS_((void)); -/* 342 */ -EXTERN void Tcl_SetDefaultEncodingDir _ANSI_ARGS_(( - CONST char * path)); -/* 343 */ -EXTERN void Tcl_AlertNotifier _ANSI_ARGS_((ClientData clientData)); -/* 344 */ -EXTERN void Tcl_ServiceModeHook _ANSI_ARGS_((int mode)); -/* 345 */ -EXTERN int Tcl_UniCharIsAlnum _ANSI_ARGS_((int ch)); -/* 346 */ -EXTERN int Tcl_UniCharIsAlpha _ANSI_ARGS_((int ch)); -/* 347 */ -EXTERN int Tcl_UniCharIsDigit _ANSI_ARGS_((int ch)); -/* 348 */ -EXTERN int Tcl_UniCharIsLower _ANSI_ARGS_((int ch)); -/* 349 */ -EXTERN int Tcl_UniCharIsSpace _ANSI_ARGS_((int ch)); -/* 350 */ -EXTERN int Tcl_UniCharIsUpper _ANSI_ARGS_((int ch)); -/* 351 */ -EXTERN int Tcl_UniCharIsWordChar _ANSI_ARGS_((int ch)); -/* 352 */ -EXTERN int Tcl_UniCharLen _ANSI_ARGS_((CONST Tcl_UniChar * str)); -/* 353 */ -EXTERN int Tcl_UniCharNcmp _ANSI_ARGS_((CONST Tcl_UniChar * cs, - CONST Tcl_UniChar * ct, unsigned long n)); -/* 354 */ -EXTERN char * Tcl_UniCharToUtfDString _ANSI_ARGS_(( - CONST Tcl_UniChar * string, int numChars, - Tcl_DString * dsPtr)); -/* 355 */ -EXTERN Tcl_UniChar * Tcl_UtfToUniCharDString _ANSI_ARGS_(( - CONST char * string, int length, - Tcl_DString * dsPtr)); -/* 356 */ -EXTERN Tcl_RegExp Tcl_GetRegExpFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * patObj, - int flags)); -/* 357 */ -EXTERN Tcl_Obj * Tcl_EvalTokens _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Token * tokenPtr, int count)); -/* 358 */ -EXTERN void Tcl_FreeParse _ANSI_ARGS_((Tcl_Parse * parsePtr)); -/* 359 */ -EXTERN void Tcl_LogCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * script, CONST char * command, - int length)); -/* 360 */ -EXTERN int Tcl_ParseBraces _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr, int append, - CONST84 char ** termPtr)); -/* 361 */ -EXTERN int Tcl_ParseCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - int nested, Tcl_Parse * parsePtr)); -/* 362 */ -EXTERN int Tcl_ParseExpr _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr)); -/* 363 */ -EXTERN int Tcl_ParseQuotedString _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * string, - int numBytes, Tcl_Parse * parsePtr, - int append, CONST84 char ** termPtr)); -/* 364 */ -EXTERN int Tcl_ParseVarName _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * string, int numBytes, - Tcl_Parse * parsePtr, int append)); -/* 365 */ -EXTERN char * Tcl_GetCwd _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * cwdPtr)); -/* 366 */ -EXTERN int Tcl_Chdir _ANSI_ARGS_((CONST char * dirName)); -/* 367 */ -EXTERN int Tcl_Access _ANSI_ARGS_((CONST char * path, int mode)); -/* 368 */ -EXTERN int Tcl_Stat _ANSI_ARGS_((CONST char * path, - struct stat * bufPtr)); -/* 369 */ -EXTERN int Tcl_UtfNcmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 370 */ -EXTERN int Tcl_UtfNcasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 371 */ -EXTERN int Tcl_StringCaseMatch _ANSI_ARGS_((CONST char * str, - CONST char * pattern, int nocase)); -/* 372 */ -EXTERN int Tcl_UniCharIsControl _ANSI_ARGS_((int ch)); -/* 373 */ -EXTERN int Tcl_UniCharIsGraph _ANSI_ARGS_((int ch)); -/* 374 */ -EXTERN int Tcl_UniCharIsPrint _ANSI_ARGS_((int ch)); -/* 375 */ -EXTERN int Tcl_UniCharIsPunct _ANSI_ARGS_((int ch)); -/* 376 */ -EXTERN int Tcl_RegExpExecObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp regexp, Tcl_Obj * objPtr, - int offset, int nmatches, int flags)); -/* 377 */ -EXTERN void Tcl_RegExpGetInfo _ANSI_ARGS_((Tcl_RegExp regexp, - Tcl_RegExpInfo * infoPtr)); -/* 378 */ -EXTERN Tcl_Obj * Tcl_NewUnicodeObj _ANSI_ARGS_(( - CONST Tcl_UniChar * unicode, int numChars)); -/* 379 */ -EXTERN void Tcl_SetUnicodeObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST Tcl_UniChar * unicode, int numChars)); -/* 380 */ -EXTERN int Tcl_GetCharLength _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 381 */ -EXTERN Tcl_UniChar Tcl_GetUniChar _ANSI_ARGS_((Tcl_Obj * objPtr, - int index)); -/* 382 */ -EXTERN Tcl_UniChar * Tcl_GetUnicode _ANSI_ARGS_((Tcl_Obj * objPtr)); -/* 383 */ -EXTERN Tcl_Obj * Tcl_GetRange _ANSI_ARGS_((Tcl_Obj * objPtr, - int first, int last)); -/* 384 */ -EXTERN void Tcl_AppendUnicodeToObj _ANSI_ARGS_((Tcl_Obj * objPtr, - CONST Tcl_UniChar * unicode, int length)); -/* 385 */ -EXTERN int Tcl_RegExpMatchObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * stringObj, Tcl_Obj * patternObj)); -/* 386 */ -EXTERN void Tcl_SetNotifier _ANSI_ARGS_(( - Tcl_NotifierProcs * notifierProcPtr)); -/* 387 */ -EXTERN Tcl_Mutex * Tcl_GetAllocMutex _ANSI_ARGS_((void)); -/* 388 */ -EXTERN int Tcl_GetChannelNames _ANSI_ARGS_((Tcl_Interp * interp)); -/* 389 */ -EXTERN int Tcl_GetChannelNamesEx _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * pattern)); -/* 390 */ -EXTERN int Tcl_ProcObjCmd _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int objc, - Tcl_Obj *CONST objv[])); -/* 391 */ -EXTERN void Tcl_ConditionFinalize _ANSI_ARGS_(( - Tcl_Condition * condPtr)); -/* 392 */ -EXTERN void Tcl_MutexFinalize _ANSI_ARGS_((Tcl_Mutex * mutex)); -/* 393 */ -EXTERN int Tcl_CreateThread _ANSI_ARGS_((Tcl_ThreadId * idPtr, - Tcl_ThreadCreateProc proc, - ClientData clientData, int stackSize, - int flags)); -/* 394 */ -EXTERN int Tcl_ReadRaw _ANSI_ARGS_((Tcl_Channel chan, - char * dst, int bytesToRead)); -/* 395 */ -EXTERN int Tcl_WriteRaw _ANSI_ARGS_((Tcl_Channel chan, - CONST char * src, int srcLen)); -/* 396 */ -EXTERN Tcl_Channel Tcl_GetTopChannel _ANSI_ARGS_((Tcl_Channel chan)); -/* 397 */ -EXTERN int Tcl_ChannelBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 398 */ -EXTERN CONST84_RETURN char * Tcl_ChannelName _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 399 */ -EXTERN Tcl_ChannelTypeVersion Tcl_ChannelVersion _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 400 */ -EXTERN Tcl_DriverBlockModeProc * Tcl_ChannelBlockModeProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 401 */ -EXTERN Tcl_DriverCloseProc * Tcl_ChannelCloseProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 402 */ -EXTERN Tcl_DriverClose2Proc * Tcl_ChannelClose2Proc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 403 */ -EXTERN Tcl_DriverInputProc * Tcl_ChannelInputProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 404 */ -EXTERN Tcl_DriverOutputProc * Tcl_ChannelOutputProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 405 */ -EXTERN Tcl_DriverSeekProc * Tcl_ChannelSeekProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 406 */ -EXTERN Tcl_DriverSetOptionProc * Tcl_ChannelSetOptionProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 407 */ -EXTERN Tcl_DriverGetOptionProc * Tcl_ChannelGetOptionProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 408 */ -EXTERN Tcl_DriverWatchProc * Tcl_ChannelWatchProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 409 */ -EXTERN Tcl_DriverGetHandleProc * Tcl_ChannelGetHandleProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 410 */ -EXTERN Tcl_DriverFlushProc * Tcl_ChannelFlushProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 411 */ -EXTERN Tcl_DriverHandlerProc * Tcl_ChannelHandlerProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); -/* 412 */ -EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId threadId, - int* result)); -/* 413 */ -EXTERN int Tcl_IsChannelShared _ANSI_ARGS_((Tcl_Channel channel)); -/* 414 */ -EXTERN int Tcl_IsChannelRegistered _ANSI_ARGS_(( - Tcl_Interp* interp, Tcl_Channel channel)); -/* 415 */ -EXTERN void Tcl_CutChannel _ANSI_ARGS_((Tcl_Channel channel)); -/* 416 */ -EXTERN void Tcl_SpliceChannel _ANSI_ARGS_((Tcl_Channel channel)); -/* 417 */ -EXTERN void Tcl_ClearChannelHandlers _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 418 */ -EXTERN int Tcl_IsChannelExisting _ANSI_ARGS_(( - CONST char* channelName)); -/* 419 */ -EXTERN int Tcl_UniCharNcasecmp _ANSI_ARGS_(( - CONST Tcl_UniChar * cs, - CONST Tcl_UniChar * ct, unsigned long n)); -/* 420 */ -EXTERN int Tcl_UniCharCaseMatch _ANSI_ARGS_(( - CONST Tcl_UniChar * ustr, - CONST Tcl_UniChar * pattern, int nocase)); -/* 421 */ -EXTERN Tcl_HashEntry * Tcl_FindHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, CONST char * key)); -/* 422 */ -EXTERN Tcl_HashEntry * Tcl_CreateHashEntry _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, CONST char * key, - int * newPtr)); -/* 423 */ -EXTERN void Tcl_InitCustomHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr, int keyType, - Tcl_HashKeyType * typePtr)); -/* 424 */ -EXTERN void Tcl_InitObjHashTable _ANSI_ARGS_(( - Tcl_HashTable * tablePtr)); -/* 425 */ -EXTERN ClientData Tcl_CommandTraceInfo _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * varName, - int flags, Tcl_CommandTraceProc * procPtr, - ClientData prevClientData)); -/* 426 */ -EXTERN int Tcl_TraceCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_CommandTraceProc * proc, - ClientData clientData)); -/* 427 */ -EXTERN void Tcl_UntraceCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName, int flags, - Tcl_CommandTraceProc * proc, - ClientData clientData)); -/* 428 */ -EXTERN char * Tcl_AttemptAlloc _ANSI_ARGS_((unsigned int size)); -/* 429 */ -EXTERN char * Tcl_AttemptDbCkalloc _ANSI_ARGS_((unsigned int size, - CONST char * file, int line)); -/* 430 */ -EXTERN char * Tcl_AttemptRealloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* 431 */ -EXTERN char * Tcl_AttemptDbCkrealloc _ANSI_ARGS_((char * ptr, - unsigned int size, CONST char * file, - int line)); -/* 432 */ -EXTERN int Tcl_AttemptSetObjLength _ANSI_ARGS_(( - Tcl_Obj * objPtr, int length)); -/* 433 */ -EXTERN Tcl_ThreadId Tcl_GetChannelThread _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 434 */ -EXTERN Tcl_UniChar * Tcl_GetUnicodeFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, - int * lengthPtr)); -/* 435 */ -EXTERN int Tcl_GetMathFuncInfo _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, int * numArgsPtr, - Tcl_ValueType ** argTypesPtr, - Tcl_MathProc ** procPtr, - ClientData * clientDataPtr)); -/* 436 */ -EXTERN Tcl_Obj * Tcl_ListMathFuncs _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * pattern)); -/* 437 */ -EXTERN Tcl_Obj * Tcl_SubstObj _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int flags)); -/* 438 */ -EXTERN int Tcl_DetachChannel _ANSI_ARGS_((Tcl_Interp* interp, - Tcl_Channel channel)); -/* 439 */ -EXTERN int Tcl_IsStandardChannel _ANSI_ARGS_(( - Tcl_Channel channel)); -/* 440 */ -EXTERN int Tcl_FSCopyFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, - Tcl_Obj * destPathPtr)); -/* 441 */ -EXTERN int Tcl_FSCopyDirectory _ANSI_ARGS_(( - Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, - Tcl_Obj ** errorPtr)); -/* 442 */ -EXTERN int Tcl_FSCreateDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 443 */ -EXTERN int Tcl_FSDeleteFile _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 444 */ -EXTERN int Tcl_FSLoadFile _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * pathPtr, CONST char * sym1, - CONST char * sym2, - Tcl_PackageInitProc ** proc1Ptr, - Tcl_PackageInitProc ** proc2Ptr, - Tcl_LoadHandle * handlePtr, - Tcl_FSUnloadFileProc ** unloadProcPtr)); -/* 445 */ -EXTERN int Tcl_FSMatchInDirectory _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * result, - Tcl_Obj * pathPtr, CONST char * pattern, - Tcl_GlobTypeData * types)); -/* 446 */ -EXTERN Tcl_Obj * Tcl_FSLink _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_Obj * toPtr, int linkAction)); -/* 447 */ -EXTERN int Tcl_FSRemoveDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr, - int recursive, Tcl_Obj ** errorPtr)); -/* 448 */ -EXTERN int Tcl_FSRenameFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, - Tcl_Obj * destPathPtr)); -/* 449 */ -EXTERN int Tcl_FSLstat _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_StatBuf * buf)); -/* 450 */ -EXTERN int Tcl_FSUtime _ANSI_ARGS_((Tcl_Obj * pathPtr, - struct utimbuf * tval)); -/* 451 */ -EXTERN int Tcl_FSFileAttrsGet _ANSI_ARGS_((Tcl_Interp * interp, - int index, Tcl_Obj * pathPtr, - Tcl_Obj ** objPtrRef)); -/* 452 */ -EXTERN int Tcl_FSFileAttrsSet _ANSI_ARGS_((Tcl_Interp * interp, - int index, Tcl_Obj * pathPtr, - Tcl_Obj * objPtr)); -/* 453 */ -EXTERN CONST char ** Tcl_FSFileAttrStrings _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_Obj ** objPtrRef)); -/* 454 */ -EXTERN int Tcl_FSStat _ANSI_ARGS_((Tcl_Obj * pathPtr, - Tcl_StatBuf * buf)); -/* 455 */ -EXTERN int Tcl_FSAccess _ANSI_ARGS_((Tcl_Obj * pathPtr, - int mode)); -/* 456 */ -EXTERN Tcl_Channel Tcl_FSOpenFileChannel _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * pathPtr, - CONST char * modeString, int permissions)); -/* 457 */ -EXTERN Tcl_Obj* Tcl_FSGetCwd _ANSI_ARGS_((Tcl_Interp * interp)); -/* 458 */ -EXTERN int Tcl_FSChdir _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 459 */ -EXTERN int Tcl_FSConvertToPathType _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * pathPtr)); -/* 460 */ -EXTERN Tcl_Obj* Tcl_FSJoinPath _ANSI_ARGS_((Tcl_Obj * listObj, - int elements)); -/* 461 */ -EXTERN Tcl_Obj* Tcl_FSSplitPath _ANSI_ARGS_((Tcl_Obj* pathPtr, - int * lenPtr)); -/* 462 */ -EXTERN int Tcl_FSEqualPaths _ANSI_ARGS_((Tcl_Obj* firstPtr, - Tcl_Obj* secondPtr)); -/* 463 */ -EXTERN Tcl_Obj* Tcl_FSGetNormalizedPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); -/* 464 */ -EXTERN Tcl_Obj* Tcl_FSJoinToPath _ANSI_ARGS_((Tcl_Obj * basePtr, - int objc, Tcl_Obj *CONST objv[])); -/* 465 */ -EXTERN ClientData Tcl_FSGetInternalRep _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); -/* 466 */ -EXTERN Tcl_Obj* Tcl_FSGetTranslatedPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathPtr)); -/* 467 */ -EXTERN int Tcl_FSEvalFile _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * fileName)); -/* 468 */ -EXTERN Tcl_Obj* Tcl_FSNewNativePath _ANSI_ARGS_(( - Tcl_Filesystem* fromFilesystem, - ClientData clientData)); -/* 469 */ -EXTERN CONST char* Tcl_FSGetNativePath _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); -/* 470 */ -EXTERN Tcl_Obj* Tcl_FSFileSystemInfo _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr)); -/* 471 */ -EXTERN Tcl_Obj* Tcl_FSPathSeparator _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); -/* 472 */ -EXTERN Tcl_Obj* Tcl_FSListVolumes _ANSI_ARGS_((void)); -/* 473 */ -EXTERN int Tcl_FSRegister _ANSI_ARGS_((ClientData clientData, - Tcl_Filesystem * fsPtr)); -/* 474 */ -EXTERN int Tcl_FSUnregister _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); -/* 475 */ -EXTERN ClientData Tcl_FSData _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); -/* 476 */ -EXTERN CONST char* Tcl_FSGetTranslatedStringPath _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj* pathPtr)); -/* 477 */ -EXTERN Tcl_Filesystem* Tcl_FSGetFileSystemForPath _ANSI_ARGS_(( - Tcl_Obj* pathObjPtr)); -/* 478 */ -EXTERN Tcl_PathType Tcl_FSGetPathType _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); -/* 479 */ -EXTERN int Tcl_OutputBuffered _ANSI_ARGS_((Tcl_Channel chan)); -/* 480 */ -EXTERN void Tcl_FSMountsChanged _ANSI_ARGS_(( - Tcl_Filesystem * fsPtr)); -/* 481 */ -EXTERN int Tcl_EvalTokensStandard _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Token * tokenPtr, - int count)); -/* 482 */ -EXTERN void Tcl_GetTime _ANSI_ARGS_((Tcl_Time* timeBuf)); -/* 483 */ -EXTERN Tcl_Trace Tcl_CreateObjTrace _ANSI_ARGS_((Tcl_Interp* interp, - int level, int flags, - Tcl_CmdObjTraceProc* objProc, - ClientData clientData, - Tcl_CmdObjTraceDeleteProc* delProc)); -/* 484 */ -EXTERN int Tcl_GetCommandInfoFromToken _ANSI_ARGS_(( - Tcl_Command token, Tcl_CmdInfo* infoPtr)); -/* 485 */ -EXTERN int Tcl_SetCommandInfoFromToken _ANSI_ARGS_(( - Tcl_Command token, - CONST Tcl_CmdInfo* infoPtr)); -/* 486 */ -EXTERN Tcl_Obj * Tcl_DbNewWideIntObj _ANSI_ARGS_(( - Tcl_WideInt wideValue, CONST char * file, - int line)); -/* 487 */ -EXTERN int Tcl_GetWideIntFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - Tcl_WideInt * widePtr)); -/* 488 */ -EXTERN Tcl_Obj * Tcl_NewWideIntObj _ANSI_ARGS_((Tcl_WideInt wideValue)); -/* 489 */ -EXTERN void Tcl_SetWideIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, - Tcl_WideInt wideValue)); -/* 490 */ -EXTERN Tcl_StatBuf * Tcl_AllocStatBuf _ANSI_ARGS_((void)); -/* 491 */ -EXTERN Tcl_WideInt Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan, - Tcl_WideInt offset, int mode)); -/* 492 */ -EXTERN Tcl_WideInt Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); -/* 493 */ -EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( - Tcl_ChannelType * chanTypePtr)); - -typedef struct TclStubHooks { - struct TclPlatStubs *tclPlatStubs; - struct TclIntStubs *tclIntStubs; - struct TclIntPlatStubs *tclIntPlatStubs; -} TclStubHooks; - -typedef struct TclStubs { - int magic; - struct TclStubHooks *hooks; - - int (*tcl_PkgProvideEx) _ANSI_ARGS_((Tcl_Interp* interp, CONST char* name, CONST char* version, ClientData clientData)); /* 0 */ - CONST84_RETURN char * (*tcl_PkgRequireEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 1 */ - void (*tcl_Panic) _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); /* 2 */ - char * (*tcl_Alloc) _ANSI_ARGS_((unsigned int size)); /* 3 */ - void (*tcl_Free) _ANSI_ARGS_((char * ptr)); /* 4 */ - char * (*tcl_Realloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 5 */ - char * (*tcl_DbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 6 */ - int (*tcl_DbCkfree) _ANSI_ARGS_((char * ptr, CONST char * file, int line)); /* 7 */ - char * (*tcl_DbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_CreateFileHandler) _ANSI_ARGS_((int fd, int mask, Tcl_FileProc * proc, ClientData clientData)); /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved9; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved9; -#endif /* MAC_TCL */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_DeleteFileHandler) _ANSI_ARGS_((int fd)); /* 10 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved10; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved10; -#endif /* MAC_TCL */ - void (*tcl_SetTimer) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 11 */ - void (*tcl_Sleep) _ANSI_ARGS_((int ms)); /* 12 */ - int (*tcl_WaitForEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 13 */ - int (*tcl_AppendAllObjTypes) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 14 */ - void (*tcl_AppendStringsToObj) _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); /* 15 */ - void (*tcl_AppendToObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 16 */ - Tcl_Obj * (*tcl_ConcatObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 17 */ - int (*tcl_ConvertToType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); /* 18 */ - void (*tcl_DbDecrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 19 */ - void (*tcl_DbIncrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 20 */ - int (*tcl_DbIsShared) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 21 */ - Tcl_Obj * (*tcl_DbNewBooleanObj) _ANSI_ARGS_((int boolValue, CONST char * file, int line)); /* 22 */ - Tcl_Obj * (*tcl_DbNewByteArrayObj) _ANSI_ARGS_((CONST unsigned char * bytes, int length, CONST char * file, int line)); /* 23 */ - Tcl_Obj * (*tcl_DbNewDoubleObj) _ANSI_ARGS_((double doubleValue, CONST char * file, int line)); /* 24 */ - Tcl_Obj * (*tcl_DbNewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST * objv, CONST char * file, int line)); /* 25 */ - Tcl_Obj * (*tcl_DbNewLongObj) _ANSI_ARGS_((long longValue, CONST char * file, int line)); /* 26 */ - Tcl_Obj * (*tcl_DbNewObj) _ANSI_ARGS_((CONST char * file, int line)); /* 27 */ - Tcl_Obj * (*tcl_DbNewStringObj) _ANSI_ARGS_((CONST char * bytes, int length, CONST char * file, int line)); /* 28 */ - Tcl_Obj * (*tcl_DuplicateObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 29 */ - void (*tclFreeObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 30 */ - int (*tcl_GetBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * boolPtr)); /* 31 */ - int (*tcl_GetBooleanFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * boolPtr)); /* 32 */ - unsigned char * (*tcl_GetByteArrayFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 33 */ - int (*tcl_GetDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * doublePtr)); /* 34 */ - int (*tcl_GetDoubleFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * doublePtr)); /* 35 */ - int (*tcl_GetIndexFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST84 char ** tablePtr, CONST char * msg, int flags, int * indexPtr)); /* 36 */ - int (*tcl_GetInt) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * intPtr)); /* 37 */ - int (*tcl_GetIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * intPtr)); /* 38 */ - int (*tcl_GetLongFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * longPtr)); /* 39 */ - Tcl_ObjType * (*tcl_GetObjType) _ANSI_ARGS_((CONST char * typeName)); /* 40 */ - char * (*tcl_GetStringFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 41 */ - void (*tcl_InvalidateStringRep) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 42 */ - int (*tcl_ListObjAppendList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * elemListPtr)); /* 43 */ - int (*tcl_ListObjAppendElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * objPtr)); /* 44 */ - int (*tcl_ListObjGetElements) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * objcPtr, Tcl_Obj *** objvPtr)); /* 45 */ - int (*tcl_ListObjIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj ** objPtrPtr)); /* 46 */ - int (*tcl_ListObjLength) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * lengthPtr)); /* 47 */ - int (*tcl_ListObjReplace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int first, int count, int objc, Tcl_Obj *CONST objv[])); /* 48 */ - Tcl_Obj * (*tcl_NewBooleanObj) _ANSI_ARGS_((int boolValue)); /* 49 */ - Tcl_Obj * (*tcl_NewByteArrayObj) _ANSI_ARGS_((CONST unsigned char* bytes, int length)); /* 50 */ - Tcl_Obj * (*tcl_NewDoubleObj) _ANSI_ARGS_((double doubleValue)); /* 51 */ - Tcl_Obj * (*tcl_NewIntObj) _ANSI_ARGS_((int intValue)); /* 52 */ - Tcl_Obj * (*tcl_NewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 53 */ - Tcl_Obj * (*tcl_NewLongObj) _ANSI_ARGS_((long longValue)); /* 54 */ - Tcl_Obj * (*tcl_NewObj) _ANSI_ARGS_((void)); /* 55 */ - Tcl_Obj * (*tcl_NewStringObj) _ANSI_ARGS_((CONST char * bytes, int length)); /* 56 */ - void (*tcl_SetBooleanObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int boolValue)); /* 57 */ - unsigned char * (*tcl_SetByteArrayLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 58 */ - void (*tcl_SetByteArrayObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST unsigned char * bytes, int length)); /* 59 */ - void (*tcl_SetDoubleObj) _ANSI_ARGS_((Tcl_Obj * objPtr, double doubleValue)); /* 60 */ - void (*tcl_SetIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int intValue)); /* 61 */ - void (*tcl_SetListObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int objc, Tcl_Obj *CONST objv[])); /* 62 */ - void (*tcl_SetLongObj) _ANSI_ARGS_((Tcl_Obj * objPtr, long longValue)); /* 63 */ - void (*tcl_SetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 64 */ - void (*tcl_SetStringObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 65 */ - void (*tcl_AddErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message)); /* 66 */ - void (*tcl_AddObjErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message, int length)); /* 67 */ - void (*tcl_AllowExceptions) _ANSI_ARGS_((Tcl_Interp * interp)); /* 68 */ - void (*tcl_AppendElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 69 */ - void (*tcl_AppendResult) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 70 */ - Tcl_AsyncHandler (*tcl_AsyncCreate) _ANSI_ARGS_((Tcl_AsyncProc * proc, ClientData clientData)); /* 71 */ - void (*tcl_AsyncDelete) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 72 */ - int (*tcl_AsyncInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int code)); /* 73 */ - void (*tcl_AsyncMark) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 74 */ - int (*tcl_AsyncReady) _ANSI_ARGS_((void)); /* 75 */ - void (*tcl_BackgroundError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 76 */ - char (*tcl_Backslash) _ANSI_ARGS_((CONST char * src, int * readPtr)); /* 77 */ - int (*tcl_BadChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * optionName, CONST char * optionList)); /* 78 */ - void (*tcl_CallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 79 */ - void (*tcl_CancelIdleCall) _ANSI_ARGS_((Tcl_IdleProc * idleProc, ClientData clientData)); /* 80 */ - int (*tcl_Close) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 81 */ - int (*tcl_CommandComplete) _ANSI_ARGS_((CONST char * cmd)); /* 82 */ - char * (*tcl_Concat) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 83 */ - int (*tcl_ConvertElement) _ANSI_ARGS_((CONST char * src, char * dst, int flags)); /* 84 */ - int (*tcl_ConvertCountedElement) _ANSI_ARGS_((CONST char * src, int length, char * dst, int flags)); /* 85 */ - int (*tcl_CreateAlias) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int argc, CONST84 char * CONST * argv)); /* 86 */ - int (*tcl_CreateAliasObj) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int objc, Tcl_Obj *CONST objv[])); /* 87 */ - Tcl_Channel (*tcl_CreateChannel) _ANSI_ARGS_((Tcl_ChannelType * typePtr, CONST char * chanName, ClientData instanceData, int mask)); /* 88 */ - void (*tcl_CreateChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, int mask, Tcl_ChannelProc * proc, ClientData clientData)); /* 89 */ - void (*tcl_CreateCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 90 */ - Tcl_Command (*tcl_CreateCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 91 */ - void (*tcl_CreateEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 92 */ - void (*tcl_CreateExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 93 */ - Tcl_Interp * (*tcl_CreateInterp) _ANSI_ARGS_((void)); /* 94 */ - void (*tcl_CreateMathFunc) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int numArgs, Tcl_ValueType * argTypes, Tcl_MathProc * proc, ClientData clientData)); /* 95 */ - Tcl_Command (*tcl_CreateObjCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_ObjCmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 96 */ - Tcl_Interp * (*tcl_CreateSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName, int isSafe)); /* 97 */ - Tcl_TimerToken (*tcl_CreateTimerHandler) _ANSI_ARGS_((int milliseconds, Tcl_TimerProc * proc, ClientData clientData)); /* 98 */ - Tcl_Trace (*tcl_CreateTrace) _ANSI_ARGS_((Tcl_Interp * interp, int level, Tcl_CmdTraceProc * proc, ClientData clientData)); /* 99 */ - void (*tcl_DeleteAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 100 */ - void (*tcl_DeleteChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_ChannelProc * proc, ClientData clientData)); /* 101 */ - void (*tcl_DeleteCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 102 */ - int (*tcl_DeleteCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName)); /* 103 */ - int (*tcl_DeleteCommandFromToken) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 104 */ - void (*tcl_DeleteEvents) _ANSI_ARGS_((Tcl_EventDeleteProc * proc, ClientData clientData)); /* 105 */ - void (*tcl_DeleteEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 106 */ - void (*tcl_DeleteExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 107 */ - void (*tcl_DeleteHashEntry) _ANSI_ARGS_((Tcl_HashEntry * entryPtr)); /* 108 */ - void (*tcl_DeleteHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 109 */ - void (*tcl_DeleteInterp) _ANSI_ARGS_((Tcl_Interp * interp)); /* 110 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved111; -#endif /* MAC_TCL */ - void (*tcl_DeleteTimerHandler) _ANSI_ARGS_((Tcl_TimerToken token)); /* 112 */ - void (*tcl_DeleteTrace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Trace trace)); /* 113 */ - void (*tcl_DontCallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 114 */ - int (*tcl_DoOneEvent) _ANSI_ARGS_((int flags)); /* 115 */ - void (*tcl_DoWhenIdle) _ANSI_ARGS_((Tcl_IdleProc * proc, ClientData clientData)); /* 116 */ - char * (*tcl_DStringAppend) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * str, int length)); /* 117 */ - char * (*tcl_DStringAppendElement) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * string)); /* 118 */ - void (*tcl_DStringEndSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 119 */ - void (*tcl_DStringFree) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 120 */ - void (*tcl_DStringGetResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 121 */ - void (*tcl_DStringInit) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 122 */ - void (*tcl_DStringResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 123 */ - void (*tcl_DStringSetLength) _ANSI_ARGS_((Tcl_DString * dsPtr, int length)); /* 124 */ - void (*tcl_DStringStartSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 125 */ - int (*tcl_Eof) _ANSI_ARGS_((Tcl_Channel chan)); /* 126 */ - CONST84_RETURN char * (*tcl_ErrnoId) _ANSI_ARGS_((void)); /* 127 */ - CONST84_RETURN char * (*tcl_ErrnoMsg) _ANSI_ARGS_((int err)); /* 128 */ - int (*tcl_Eval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 129 */ - int (*tcl_EvalFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName)); /* 130 */ - int (*tcl_EvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 131 */ - void (*tcl_EventuallyFree) _ANSI_ARGS_((ClientData clientData, Tcl_FreeProc * freeProc)); /* 132 */ - void (*tcl_Exit) _ANSI_ARGS_((int status)); /* 133 */ - int (*tcl_ExposeCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * hiddenCmdToken, CONST char * cmdName)); /* 134 */ - int (*tcl_ExprBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * ptr)); /* 135 */ - int (*tcl_ExprBooleanObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * ptr)); /* 136 */ - int (*tcl_ExprDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * ptr)); /* 137 */ - int (*tcl_ExprDoubleObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * ptr)); /* 138 */ - int (*tcl_ExprLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * ptr)); /* 139 */ - int (*tcl_ExprLongObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * ptr)); /* 140 */ - int (*tcl_ExprObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); /* 141 */ - int (*tcl_ExprString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 142 */ - void (*tcl_Finalize) _ANSI_ARGS_((void)); /* 143 */ - void (*tcl_FindExecutable) _ANSI_ARGS_((CONST char * argv0)); /* 144 */ - Tcl_HashEntry * (*tcl_FirstHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, Tcl_HashSearch * searchPtr)); /* 145 */ - int (*tcl_Flush) _ANSI_ARGS_((Tcl_Channel chan)); /* 146 */ - void (*tcl_FreeResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 147 */ - int (*tcl_GetAlias) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * argcPtr, CONST84 char *** argvPtr)); /* 148 */ - int (*tcl_GetAliasObj) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * objcPtr, Tcl_Obj *** objv)); /* 149 */ - ClientData (*tcl_GetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc ** procPtr)); /* 150 */ - Tcl_Channel (*tcl_GetChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * chanName, int * modePtr)); /* 151 */ - int (*tcl_GetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan)); /* 152 */ - int (*tcl_GetChannelHandle) _ANSI_ARGS_((Tcl_Channel chan, int direction, ClientData * handlePtr)); /* 153 */ - ClientData (*tcl_GetChannelInstanceData) _ANSI_ARGS_((Tcl_Channel chan)); /* 154 */ - int (*tcl_GetChannelMode) _ANSI_ARGS_((Tcl_Channel chan)); /* 155 */ - CONST84_RETURN char * (*tcl_GetChannelName) _ANSI_ARGS_((Tcl_Channel chan)); /* 156 */ - int (*tcl_GetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, Tcl_DString * dsPtr)); /* 157 */ - Tcl_ChannelType * (*tcl_GetChannelType) _ANSI_ARGS_((Tcl_Channel chan)); /* 158 */ - int (*tcl_GetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdInfo * infoPtr)); /* 159 */ - CONST84_RETURN char * (*tcl_GetCommandName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 160 */ - int (*tcl_GetErrno) _ANSI_ARGS_((void)); /* 161 */ - CONST84_RETURN char * (*tcl_GetHostName) _ANSI_ARGS_((void)); /* 162 */ - int (*tcl_GetInterpPath) _ANSI_ARGS_((Tcl_Interp * askInterp, Tcl_Interp * slaveInterp)); /* 163 */ - Tcl_Interp * (*tcl_GetMaster) _ANSI_ARGS_((Tcl_Interp * interp)); /* 164 */ - CONST char * (*tcl_GetNameOfExecutable) _ANSI_ARGS_((void)); /* 165 */ - Tcl_Obj * (*tcl_GetObjResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 166 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tcl_GetOpenFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int forWriting, int checkUsage, ClientData * filePtr)); /* 167 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void *reserved167; -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved167; -#endif /* MAC_TCL */ - Tcl_PathType (*tcl_GetPathType) _ANSI_ARGS_((CONST char * path)); /* 168 */ - int (*tcl_Gets) _ANSI_ARGS_((Tcl_Channel chan, Tcl_DString * dsPtr)); /* 169 */ - int (*tcl_GetsObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 170 */ - int (*tcl_GetServiceMode) _ANSI_ARGS_((void)); /* 171 */ - Tcl_Interp * (*tcl_GetSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName)); /* 172 */ - Tcl_Channel (*tcl_GetStdChannel) _ANSI_ARGS_((int type)); /* 173 */ - CONST84_RETURN char * (*tcl_GetStringResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 174 */ - CONST84_RETURN char * (*tcl_GetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 175 */ - CONST84_RETURN char * (*tcl_GetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 176 */ - int (*tcl_GlobalEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command)); /* 177 */ - int (*tcl_GlobalEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 178 */ - int (*tcl_HideCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST char * hiddenCmdToken)); /* 179 */ - int (*tcl_Init) _ANSI_ARGS_((Tcl_Interp * interp)); /* 180 */ - void (*tcl_InitHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType)); /* 181 */ - int (*tcl_InputBlocked) _ANSI_ARGS_((Tcl_Channel chan)); /* 182 */ - int (*tcl_InputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 183 */ - int (*tcl_InterpDeleted) _ANSI_ARGS_((Tcl_Interp * interp)); /* 184 */ - int (*tcl_IsSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 185 */ - char * (*tcl_JoinPath) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv, Tcl_DString * resultPtr)); /* 186 */ - int (*tcl_LinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, char * addr, int type)); /* 187 */ - void *reserved188; - Tcl_Channel (*tcl_MakeFileChannel) _ANSI_ARGS_((ClientData handle, int mode)); /* 189 */ - int (*tcl_MakeSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 190 */ - Tcl_Channel (*tcl_MakeTcpClientChannel) _ANSI_ARGS_((ClientData tcpSocket)); /* 191 */ - char * (*tcl_Merge) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 192 */ - Tcl_HashEntry * (*tcl_NextHashEntry) _ANSI_ARGS_((Tcl_HashSearch * searchPtr)); /* 193 */ - void (*tcl_NotifyChannel) _ANSI_ARGS_((Tcl_Channel channel, int mask)); /* 194 */ - Tcl_Obj * (*tcl_ObjGetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, int flags)); /* 195 */ - Tcl_Obj * (*tcl_ObjSetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, Tcl_Obj * newValuePtr, int flags)); /* 196 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved197; -#endif /* MAC_TCL */ - Tcl_Channel (*tcl_OpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName, CONST char * modeString, int permissions)); /* 198 */ - Tcl_Channel (*tcl_OpenTcpClient) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * address, CONST char * myaddr, int myport, int async)); /* 199 */ - Tcl_Channel (*tcl_OpenTcpServer) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * host, Tcl_TcpAcceptProc * acceptProc, ClientData callbackData)); /* 200 */ - void (*tcl_Preserve) _ANSI_ARGS_((ClientData data)); /* 201 */ - void (*tcl_PrintDouble) _ANSI_ARGS_((Tcl_Interp * interp, double value, char * dst)); /* 202 */ - int (*tcl_PutEnv) _ANSI_ARGS_((CONST char * string)); /* 203 */ - CONST84_RETURN char * (*tcl_PosixError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 204 */ - void (*tcl_QueueEvent) _ANSI_ARGS_((Tcl_Event * evPtr, Tcl_QueuePosition position)); /* 205 */ - int (*tcl_Read) _ANSI_ARGS_((Tcl_Channel chan, char * bufPtr, int toRead)); /* 206 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved207; -#endif /* MAC_TCL */ - int (*tcl_RecordAndEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmd, int flags)); /* 208 */ - int (*tcl_RecordAndEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * cmdPtr, int flags)); /* 209 */ - void (*tcl_RegisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 210 */ - void (*tcl_RegisterObjType) _ANSI_ARGS_((Tcl_ObjType * typePtr)); /* 211 */ - Tcl_RegExp (*tcl_RegExpCompile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 212 */ - int (*tcl_RegExpExec) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, CONST char * str, CONST char * start)); /* 213 */ - int (*tcl_RegExpMatch) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST char * pattern)); /* 214 */ - void (*tcl_RegExpRange) _ANSI_ARGS_((Tcl_RegExp regexp, int index, CONST84 char ** startPtr, CONST84 char ** endPtr)); /* 215 */ - void (*tcl_Release) _ANSI_ARGS_((ClientData clientData)); /* 216 */ - void (*tcl_ResetResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 217 */ - int (*tcl_ScanElement) _ANSI_ARGS_((CONST char * str, int * flagPtr)); /* 218 */ - int (*tcl_ScanCountedElement) _ANSI_ARGS_((CONST char * str, int length, int * flagPtr)); /* 219 */ - int (*tcl_SeekOld) _ANSI_ARGS_((Tcl_Channel chan, int offset, int mode)); /* 220 */ - int (*tcl_ServiceAll) _ANSI_ARGS_((void)); /* 221 */ - int (*tcl_ServiceEvent) _ANSI_ARGS_((int flags)); /* 222 */ - void (*tcl_SetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 223 */ - void (*tcl_SetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan, int sz)); /* 224 */ - int (*tcl_SetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, CONST char * newValue)); /* 225 */ - int (*tcl_SetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST Tcl_CmdInfo * infoPtr)); /* 226 */ - void (*tcl_SetErrno) _ANSI_ARGS_((int err)); /* 227 */ - void (*tcl_SetErrorCode) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 228 */ - void (*tcl_SetMaxBlockTime) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 229 */ - void (*tcl_SetPanicProc) _ANSI_ARGS_((Tcl_PanicProc * panicProc)); /* 230 */ - int (*tcl_SetRecursionLimit) _ANSI_ARGS_((Tcl_Interp * interp, int depth)); /* 231 */ - void (*tcl_SetResult) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tcl_FreeProc * freeProc)); /* 232 */ - int (*tcl_SetServiceMode) _ANSI_ARGS_((int mode)); /* 233 */ - void (*tcl_SetObjErrorCode) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * errorObjPtr)); /* 234 */ - void (*tcl_SetObjResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * resultObjPtr)); /* 235 */ - void (*tcl_SetStdChannel) _ANSI_ARGS_((Tcl_Channel channel, int type)); /* 236 */ - CONST84_RETURN char * (*tcl_SetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, CONST char * newValue, int flags)); /* 237 */ - CONST84_RETURN char * (*tcl_SetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, CONST char * newValue, int flags)); /* 238 */ - CONST84_RETURN char * (*tcl_SignalId) _ANSI_ARGS_((int sig)); /* 239 */ - CONST84_RETURN char * (*tcl_SignalMsg) _ANSI_ARGS_((int sig)); /* 240 */ - void (*tcl_SourceRCFile) _ANSI_ARGS_((Tcl_Interp * interp)); /* 241 */ - int (*tcl_SplitList) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int * argcPtr, CONST84 char *** argvPtr)); /* 242 */ - void (*tcl_SplitPath) _ANSI_ARGS_((CONST char * path, int * argcPtr, CONST84 char *** argvPtr)); /* 243 */ - void (*tcl_StaticPackage) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pkgName, Tcl_PackageInitProc * initProc, Tcl_PackageInitProc * safeInitProc)); /* 244 */ - int (*tcl_StringMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern)); /* 245 */ - int (*tcl_TellOld) _ANSI_ARGS_((Tcl_Channel chan)); /* 246 */ - int (*tcl_TraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 247 */ - int (*tcl_TraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 248 */ - char * (*tcl_TranslateFileName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_DString * bufferPtr)); /* 249 */ - int (*tcl_Ungets) _ANSI_ARGS_((Tcl_Channel chan, CONST char * str, int len, int atHead)); /* 250 */ - void (*tcl_UnlinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 251 */ - int (*tcl_UnregisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 252 */ - int (*tcl_UnsetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 253 */ - int (*tcl_UnsetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 254 */ - void (*tcl_UntraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 255 */ - void (*tcl_UntraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 256 */ - void (*tcl_UpdateLinkedVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 257 */ - int (*tcl_UpVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * varName, CONST char * localName, int flags)); /* 258 */ - int (*tcl_UpVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * part1, CONST char * part2, CONST char * localName, int flags)); /* 259 */ - int (*tcl_VarEval) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 260 */ - ClientData (*tcl_VarTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 261 */ - ClientData (*tcl_VarTraceInfo2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 262 */ - int (*tcl_Write) _ANSI_ARGS_((Tcl_Channel chan, CONST char * s, int slen)); /* 263 */ - void (*tcl_WrongNumArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], CONST char * message)); /* 264 */ - int (*tcl_DumpActiveMemory) _ANSI_ARGS_((CONST char * fileName)); /* 265 */ - void (*tcl_ValidateAllMemory) _ANSI_ARGS_((CONST char * file, int line)); /* 266 */ - void (*tcl_AppendResultVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 267 */ - void (*tcl_AppendStringsToObjVA) _ANSI_ARGS_((Tcl_Obj * objPtr, va_list argList)); /* 268 */ - CONST84_RETURN char * (*tcl_HashStats) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 269 */ - CONST84_RETURN char * (*tcl_ParseVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST84 char ** termPtr)); /* 270 */ - CONST84_RETURN char * (*tcl_PkgPresent) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 271 */ - CONST84_RETURN char * (*tcl_PkgPresentEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 272 */ - int (*tcl_PkgProvide) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version)); /* 273 */ - CONST84_RETURN char * (*tcl_PkgRequire) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 274 */ - void (*tcl_SetErrorCodeVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 275 */ - int (*tcl_VarEvalVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 276 */ - Tcl_Pid (*tcl_WaitPid) _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, int options)); /* 277 */ - void (*tcl_PanicVA) _ANSI_ARGS_((CONST char * format, va_list argList)); /* 278 */ - void (*tcl_GetVersion) _ANSI_ARGS_((int * major, int * minor, int * patchLevel, int * type)); /* 279 */ - void (*tcl_InitMemory) _ANSI_ARGS_((Tcl_Interp * interp)); /* 280 */ - Tcl_Channel (*tcl_StackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_ChannelType * typePtr, ClientData instanceData, int mask, Tcl_Channel prevChan)); /* 281 */ - int (*tcl_UnstackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 282 */ - Tcl_Channel (*tcl_GetStackedChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 283 */ - void (*tcl_SetMainLoop) _ANSI_ARGS_((Tcl_MainLoopProc * proc)); /* 284 */ - void *reserved285; - void (*tcl_AppendObjToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_Obj * appendObjPtr)); /* 286 */ - Tcl_Encoding (*tcl_CreateEncoding) _ANSI_ARGS_((Tcl_EncodingType * typePtr)); /* 287 */ - void (*tcl_CreateThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 288 */ - void (*tcl_DeleteThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 289 */ - void (*tcl_DiscardResult) _ANSI_ARGS_((Tcl_SavedResult * statePtr)); /* 290 */ - int (*tcl_EvalEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, int numBytes, int flags)); /* 291 */ - int (*tcl_EvalObjv) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 292 */ - int (*tcl_EvalObjEx) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 293 */ - void (*tcl_ExitThread) _ANSI_ARGS_((int status)); /* 294 */ - int (*tcl_ExternalToUtf) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 295 */ - char * (*tcl_ExternalToUtfDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 296 */ - void (*tcl_FinalizeThread) _ANSI_ARGS_((void)); /* 297 */ - void (*tcl_FinalizeNotifier) _ANSI_ARGS_((ClientData clientData)); /* 298 */ - void (*tcl_FreeEncoding) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 299 */ - Tcl_ThreadId (*tcl_GetCurrentThread) _ANSI_ARGS_((void)); /* 300 */ - Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */ - CONST84_RETURN char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */ - void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */ - int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST VOID * tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */ - VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */ - Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 306 */ - ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */ - void (*tcl_MutexLock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 308 */ - void (*tcl_MutexUnlock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 309 */ - void (*tcl_ConditionNotify) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 310 */ - void (*tcl_ConditionWait) _ANSI_ARGS_((Tcl_Condition * condPtr, Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); /* 311 */ - int (*tcl_NumUtfChars) _ANSI_ARGS_((CONST char * src, int len)); /* 312 */ - int (*tcl_ReadChars) _ANSI_ARGS_((Tcl_Channel channel, Tcl_Obj * objPtr, int charsToRead, int appendFlag)); /* 313 */ - void (*tcl_RestoreResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 314 */ - void (*tcl_SaveResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 315 */ - int (*tcl_SetSystemEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 316 */ - Tcl_Obj * (*tcl_SetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, Tcl_Obj * newValuePtr, int flags)); /* 317 */ - void (*tcl_ThreadAlert) _ANSI_ARGS_((Tcl_ThreadId threadId)); /* 318 */ - void (*tcl_ThreadQueueEvent) _ANSI_ARGS_((Tcl_ThreadId threadId, Tcl_Event* evPtr, Tcl_QueuePosition position)); /* 319 */ - Tcl_UniChar (*tcl_UniCharAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 320 */ - Tcl_UniChar (*tcl_UniCharToLower) _ANSI_ARGS_((int ch)); /* 321 */ - Tcl_UniChar (*tcl_UniCharToTitle) _ANSI_ARGS_((int ch)); /* 322 */ - Tcl_UniChar (*tcl_UniCharToUpper) _ANSI_ARGS_((int ch)); /* 323 */ - int (*tcl_UniCharToUtf) _ANSI_ARGS_((int ch, char * buf)); /* 324 */ - CONST84_RETURN char * (*tcl_UtfAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 325 */ - int (*tcl_UtfCharComplete) _ANSI_ARGS_((CONST char * src, int len)); /* 326 */ - int (*tcl_UtfBackslash) _ANSI_ARGS_((CONST char * src, int * readPtr, char * dst)); /* 327 */ - CONST84_RETURN char * (*tcl_UtfFindFirst) _ANSI_ARGS_((CONST char * src, int ch)); /* 328 */ - CONST84_RETURN char * (*tcl_UtfFindLast) _ANSI_ARGS_((CONST char * src, int ch)); /* 329 */ - CONST84_RETURN char * (*tcl_UtfNext) _ANSI_ARGS_((CONST char * src)); /* 330 */ - CONST84_RETURN char * (*tcl_UtfPrev) _ANSI_ARGS_((CONST char * src, CONST char * start)); /* 331 */ - int (*tcl_UtfToExternal) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 332 */ - char * (*tcl_UtfToExternalDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 333 */ - int (*tcl_UtfToLower) _ANSI_ARGS_((char * src)); /* 334 */ - int (*tcl_UtfToTitle) _ANSI_ARGS_((char * src)); /* 335 */ - int (*tcl_UtfToUniChar) _ANSI_ARGS_((CONST char * src, Tcl_UniChar * chPtr)); /* 336 */ - int (*tcl_UtfToUpper) _ANSI_ARGS_((char * src)); /* 337 */ - int (*tcl_WriteChars) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 338 */ - int (*tcl_WriteObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 339 */ - char * (*tcl_GetString) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 340 */ - CONST84_RETURN char * (*tcl_GetDefaultEncodingDir) _ANSI_ARGS_((void)); /* 341 */ - void (*tcl_SetDefaultEncodingDir) _ANSI_ARGS_((CONST char * path)); /* 342 */ - void (*tcl_AlertNotifier) _ANSI_ARGS_((ClientData clientData)); /* 343 */ - void (*tcl_ServiceModeHook) _ANSI_ARGS_((int mode)); /* 344 */ - int (*tcl_UniCharIsAlnum) _ANSI_ARGS_((int ch)); /* 345 */ - int (*tcl_UniCharIsAlpha) _ANSI_ARGS_((int ch)); /* 346 */ - int (*tcl_UniCharIsDigit) _ANSI_ARGS_((int ch)); /* 347 */ - int (*tcl_UniCharIsLower) _ANSI_ARGS_((int ch)); /* 348 */ - int (*tcl_UniCharIsSpace) _ANSI_ARGS_((int ch)); /* 349 */ - int (*tcl_UniCharIsUpper) _ANSI_ARGS_((int ch)); /* 350 */ - int (*tcl_UniCharIsWordChar) _ANSI_ARGS_((int ch)); /* 351 */ - int (*tcl_UniCharLen) _ANSI_ARGS_((CONST Tcl_UniChar * str)); /* 352 */ - int (*tcl_UniCharNcmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 353 */ - char * (*tcl_UniCharToUtfDString) _ANSI_ARGS_((CONST Tcl_UniChar * string, int numChars, Tcl_DString * dsPtr)); /* 354 */ - Tcl_UniChar * (*tcl_UtfToUniCharDString) _ANSI_ARGS_((CONST char * string, int length, Tcl_DString * dsPtr)); /* 355 */ - Tcl_RegExp (*tcl_GetRegExpFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * patObj, int flags)); /* 356 */ - Tcl_Obj * (*tcl_EvalTokens) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 357 */ - void (*tcl_FreeParse) _ANSI_ARGS_((Tcl_Parse * parsePtr)); /* 358 */ - void (*tcl_LogCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, CONST char * command, int length)); /* 359 */ - int (*tcl_ParseBraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 360 */ - int (*tcl_ParseCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, int nested, Tcl_Parse * parsePtr)); /* 361 */ - int (*tcl_ParseExpr) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr)); /* 362 */ - int (*tcl_ParseQuotedString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 363 */ - int (*tcl_ParseVarName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append)); /* 364 */ - char * (*tcl_GetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 365 */ - int (*tcl_Chdir) _ANSI_ARGS_((CONST char * dirName)); /* 366 */ - int (*tcl_Access) _ANSI_ARGS_((CONST char * path, int mode)); /* 367 */ - int (*tcl_Stat) _ANSI_ARGS_((CONST char * path, struct stat * bufPtr)); /* 368 */ - int (*tcl_UtfNcmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 369 */ - int (*tcl_UtfNcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 370 */ - int (*tcl_StringCaseMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern, int nocase)); /* 371 */ - int (*tcl_UniCharIsControl) _ANSI_ARGS_((int ch)); /* 372 */ - int (*tcl_UniCharIsGraph) _ANSI_ARGS_((int ch)); /* 373 */ - int (*tcl_UniCharIsPrint) _ANSI_ARGS_((int ch)); /* 374 */ - int (*tcl_UniCharIsPunct) _ANSI_ARGS_((int ch)); /* 375 */ - int (*tcl_RegExpExecObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, Tcl_Obj * objPtr, int offset, int nmatches, int flags)); /* 376 */ - void (*tcl_RegExpGetInfo) _ANSI_ARGS_((Tcl_RegExp regexp, Tcl_RegExpInfo * infoPtr)); /* 377 */ - Tcl_Obj * (*tcl_NewUnicodeObj) _ANSI_ARGS_((CONST Tcl_UniChar * unicode, int numChars)); /* 378 */ - void (*tcl_SetUnicodeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int numChars)); /* 379 */ - int (*tcl_GetCharLength) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 380 */ - Tcl_UniChar (*tcl_GetUniChar) _ANSI_ARGS_((Tcl_Obj * objPtr, int index)); /* 381 */ - Tcl_UniChar * (*tcl_GetUnicode) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 382 */ - Tcl_Obj * (*tcl_GetRange) _ANSI_ARGS_((Tcl_Obj * objPtr, int first, int last)); /* 383 */ - void (*tcl_AppendUnicodeToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int length)); /* 384 */ - int (*tcl_RegExpMatchObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * stringObj, Tcl_Obj * patternObj)); /* 385 */ - void (*tcl_SetNotifier) _ANSI_ARGS_((Tcl_NotifierProcs * notifierProcPtr)); /* 386 */ - Tcl_Mutex * (*tcl_GetAllocMutex) _ANSI_ARGS_((void)); /* 387 */ - int (*tcl_GetChannelNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 388 */ - int (*tcl_GetChannelNamesEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 389 */ - int (*tcl_ProcObjCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 390 */ - void (*tcl_ConditionFinalize) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 391 */ - void (*tcl_MutexFinalize) _ANSI_ARGS_((Tcl_Mutex * mutex)); /* 392 */ - int (*tcl_CreateThread) _ANSI_ARGS_((Tcl_ThreadId * idPtr, Tcl_ThreadCreateProc proc, ClientData clientData, int stackSize, int flags)); /* 393 */ - int (*tcl_ReadRaw) _ANSI_ARGS_((Tcl_Channel chan, char * dst, int bytesToRead)); /* 394 */ - int (*tcl_WriteRaw) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 395 */ - Tcl_Channel (*tcl_GetTopChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 396 */ - int (*tcl_ChannelBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 397 */ - CONST84_RETURN char * (*tcl_ChannelName) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 398 */ - Tcl_ChannelTypeVersion (*tcl_ChannelVersion) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 399 */ - Tcl_DriverBlockModeProc * (*tcl_ChannelBlockModeProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 400 */ - Tcl_DriverCloseProc * (*tcl_ChannelCloseProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 401 */ - Tcl_DriverClose2Proc * (*tcl_ChannelClose2Proc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 402 */ - Tcl_DriverInputProc * (*tcl_ChannelInputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 403 */ - Tcl_DriverOutputProc * (*tcl_ChannelOutputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 404 */ - Tcl_DriverSeekProc * (*tcl_ChannelSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 405 */ - Tcl_DriverSetOptionProc * (*tcl_ChannelSetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 406 */ - Tcl_DriverGetOptionProc * (*tcl_ChannelGetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 407 */ - Tcl_DriverWatchProc * (*tcl_ChannelWatchProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 408 */ - Tcl_DriverGetHandleProc * (*tcl_ChannelGetHandleProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 409 */ - Tcl_DriverFlushProc * (*tcl_ChannelFlushProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 410 */ - Tcl_DriverHandlerProc * (*tcl_ChannelHandlerProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 411 */ - int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 412 */ - int (*tcl_IsChannelShared) _ANSI_ARGS_((Tcl_Channel channel)); /* 413 */ - int (*tcl_IsChannelRegistered) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 414 */ - void (*tcl_CutChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 415 */ - void (*tcl_SpliceChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 416 */ - void (*tcl_ClearChannelHandlers) _ANSI_ARGS_((Tcl_Channel channel)); /* 417 */ - int (*tcl_IsChannelExisting) _ANSI_ARGS_((CONST char* channelName)); /* 418 */ - int (*tcl_UniCharNcasecmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 419 */ - int (*tcl_UniCharCaseMatch) _ANSI_ARGS_((CONST Tcl_UniChar * ustr, CONST Tcl_UniChar * pattern, int nocase)); /* 420 */ - Tcl_HashEntry * (*tcl_FindHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key)); /* 421 */ - Tcl_HashEntry * (*tcl_CreateHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key, int * newPtr)); /* 422 */ - void (*tcl_InitCustomHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType, Tcl_HashKeyType * typePtr)); /* 423 */ - void (*tcl_InitObjHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 424 */ - ClientData (*tcl_CommandTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * procPtr, ClientData prevClientData)); /* 425 */ - int (*tcl_TraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 426 */ - void (*tcl_UntraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 427 */ - char * (*tcl_AttemptAlloc) _ANSI_ARGS_((unsigned int size)); /* 428 */ - char * (*tcl_AttemptDbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 429 */ - char * (*tcl_AttemptRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 430 */ - char * (*tcl_AttemptDbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 431 */ - int (*tcl_AttemptSetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 432 */ - Tcl_ThreadId (*tcl_GetChannelThread) _ANSI_ARGS_((Tcl_Channel channel)); /* 433 */ - Tcl_UniChar * (*tcl_GetUnicodeFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 434 */ - int (*tcl_GetMathFuncInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int * numArgsPtr, Tcl_ValueType ** argTypesPtr, Tcl_MathProc ** procPtr, ClientData * clientDataPtr)); /* 435 */ - Tcl_Obj * (*tcl_ListMathFuncs) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 436 */ - Tcl_Obj * (*tcl_SubstObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 437 */ - int (*tcl_DetachChannel) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 438 */ - int (*tcl_IsStandardChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 439 */ - int (*tcl_FSCopyFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 440 */ - int (*tcl_FSCopyDirectory) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, Tcl_Obj ** errorPtr)); /* 441 */ - int (*tcl_FSCreateDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 442 */ - int (*tcl_FSDeleteFile) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 443 */ - int (*tcl_FSLoadFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * sym1, CONST char * sym2, Tcl_PackageInitProc ** proc1Ptr, Tcl_PackageInitProc ** proc2Ptr, Tcl_LoadHandle * handlePtr, Tcl_FSUnloadFileProc ** unloadProcPtr)); /* 444 */ - int (*tcl_FSMatchInDirectory) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * result, Tcl_Obj * pathPtr, CONST char * pattern, Tcl_GlobTypeData * types)); /* 445 */ - Tcl_Obj * (*tcl_FSLink) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj * toPtr, int linkAction)); /* 446 */ - int (*tcl_FSRemoveDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr, int recursive, Tcl_Obj ** errorPtr)); /* 447 */ - int (*tcl_FSRenameFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 448 */ - int (*tcl_FSLstat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 449 */ - int (*tcl_FSUtime) _ANSI_ARGS_((Tcl_Obj * pathPtr, struct utimbuf * tval)); /* 450 */ - int (*tcl_FSFileAttrsGet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 451 */ - int (*tcl_FSFileAttrsSet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj * objPtr)); /* 452 */ - CONST char ** (*tcl_FSFileAttrStrings) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 453 */ - int (*tcl_FSStat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 454 */ - int (*tcl_FSAccess) _ANSI_ARGS_((Tcl_Obj * pathPtr, int mode)); /* 455 */ - Tcl_Channel (*tcl_FSOpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * modeString, int permissions)); /* 456 */ - Tcl_Obj* (*tcl_FSGetCwd) _ANSI_ARGS_((Tcl_Interp * interp)); /* 457 */ - int (*tcl_FSChdir) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 458 */ - int (*tcl_FSConvertToPathType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr)); /* 459 */ - Tcl_Obj* (*tcl_FSJoinPath) _ANSI_ARGS_((Tcl_Obj * listObj, int elements)); /* 460 */ - Tcl_Obj* (*tcl_FSSplitPath) _ANSI_ARGS_((Tcl_Obj* pathPtr, int * lenPtr)); /* 461 */ - int (*tcl_FSEqualPaths) _ANSI_ARGS_((Tcl_Obj* firstPtr, Tcl_Obj* secondPtr)); /* 462 */ - Tcl_Obj* (*tcl_FSGetNormalizedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); /* 463 */ - Tcl_Obj* (*tcl_FSJoinToPath) _ANSI_ARGS_((Tcl_Obj * basePtr, int objc, Tcl_Obj *CONST objv[])); /* 464 */ - ClientData (*tcl_FSGetInternalRep) _ANSI_ARGS_((Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); /* 465 */ - Tcl_Obj* (*tcl_FSGetTranslatedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 466 */ - int (*tcl_FSEvalFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * fileName)); /* 467 */ - Tcl_Obj* (*tcl_FSNewNativePath) _ANSI_ARGS_((Tcl_Filesystem* fromFilesystem, ClientData clientData)); /* 468 */ - CONST char* (*tcl_FSGetNativePath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 469 */ - Tcl_Obj* (*tcl_FSFileSystemInfo) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 470 */ - Tcl_Obj* (*tcl_FSPathSeparator) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 471 */ - Tcl_Obj* (*tcl_FSListVolumes) _ANSI_ARGS_((void)); /* 472 */ - int (*tcl_FSRegister) _ANSI_ARGS_((ClientData clientData, Tcl_Filesystem * fsPtr)); /* 473 */ - int (*tcl_FSUnregister) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 474 */ - ClientData (*tcl_FSData) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 475 */ - CONST char* (*tcl_FSGetTranslatedStringPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 476 */ - Tcl_Filesystem* (*tcl_FSGetFileSystemForPath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 477 */ - Tcl_PathType (*tcl_FSGetPathType) _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); /* 478 */ - int (*tcl_OutputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 479 */ - void (*tcl_FSMountsChanged) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 480 */ - int (*tcl_EvalTokensStandard) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 481 */ - void (*tcl_GetTime) _ANSI_ARGS_((Tcl_Time* timeBuf)); /* 482 */ - Tcl_Trace (*tcl_CreateObjTrace) _ANSI_ARGS_((Tcl_Interp* interp, int level, int flags, Tcl_CmdObjTraceProc* objProc, ClientData clientData, Tcl_CmdObjTraceDeleteProc* delProc)); /* 483 */ - int (*tcl_GetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, Tcl_CmdInfo* infoPtr)); /* 484 */ - int (*tcl_SetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, CONST Tcl_CmdInfo* infoPtr)); /* 485 */ - Tcl_Obj * (*tcl_DbNewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue, CONST char * file, int line)); /* 486 */ - int (*tcl_GetWideIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_WideInt * widePtr)); /* 487 */ - Tcl_Obj * (*tcl_NewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue)); /* 488 */ - void (*tcl_SetWideIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_WideInt wideValue)); /* 489 */ - Tcl_StatBuf * (*tcl_AllocStatBuf) _ANSI_ARGS_((void)); /* 490 */ - Tcl_WideInt (*tcl_Seek) _ANSI_ARGS_((Tcl_Channel chan, Tcl_WideInt offset, int mode)); /* 491 */ - Tcl_WideInt (*tcl_Tell) _ANSI_ARGS_((Tcl_Channel chan)); /* 492 */ - Tcl_DriverWideSeekProc * (*tcl_ChannelWideSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 493 */ -} TclStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclStubs *tclStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#ifndef Tcl_PkgProvideEx -#define Tcl_PkgProvideEx \ - (tclStubsPtr->tcl_PkgProvideEx) /* 0 */ -#endif -#ifndef Tcl_PkgRequireEx -#define Tcl_PkgRequireEx \ - (tclStubsPtr->tcl_PkgRequireEx) /* 1 */ -#endif -#ifndef Tcl_Panic -#define Tcl_Panic \ - (tclStubsPtr->tcl_Panic) /* 2 */ -#endif -#ifndef Tcl_Alloc -#define Tcl_Alloc \ - (tclStubsPtr->tcl_Alloc) /* 3 */ -#endif -#ifndef Tcl_Free -#define Tcl_Free \ - (tclStubsPtr->tcl_Free) /* 4 */ -#endif -#ifndef Tcl_Realloc -#define Tcl_Realloc \ - (tclStubsPtr->tcl_Realloc) /* 5 */ -#endif -#ifndef Tcl_DbCkalloc -#define Tcl_DbCkalloc \ - (tclStubsPtr->tcl_DbCkalloc) /* 6 */ -#endif -#ifndef Tcl_DbCkfree -#define Tcl_DbCkfree \ - (tclStubsPtr->tcl_DbCkfree) /* 7 */ -#endif -#ifndef Tcl_DbCkrealloc -#define Tcl_DbCkrealloc \ - (tclStubsPtr->tcl_DbCkrealloc) /* 8 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_CreateFileHandler -#define Tcl_CreateFileHandler \ - (tclStubsPtr->tcl_CreateFileHandler) /* 9 */ -#endif -#endif /* UNIX */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_DeleteFileHandler -#define Tcl_DeleteFileHandler \ - (tclStubsPtr->tcl_DeleteFileHandler) /* 10 */ -#endif -#endif /* UNIX */ -#ifndef Tcl_SetTimer -#define Tcl_SetTimer \ - (tclStubsPtr->tcl_SetTimer) /* 11 */ -#endif -#ifndef Tcl_Sleep -#define Tcl_Sleep \ - (tclStubsPtr->tcl_Sleep) /* 12 */ -#endif -#ifndef Tcl_WaitForEvent -#define Tcl_WaitForEvent \ - (tclStubsPtr->tcl_WaitForEvent) /* 13 */ -#endif -#ifndef Tcl_AppendAllObjTypes -#define Tcl_AppendAllObjTypes \ - (tclStubsPtr->tcl_AppendAllObjTypes) /* 14 */ -#endif -#ifndef Tcl_AppendStringsToObj -#define Tcl_AppendStringsToObj \ - (tclStubsPtr->tcl_AppendStringsToObj) /* 15 */ -#endif -#ifndef Tcl_AppendToObj -#define Tcl_AppendToObj \ - (tclStubsPtr->tcl_AppendToObj) /* 16 */ -#endif -#ifndef Tcl_ConcatObj -#define Tcl_ConcatObj \ - (tclStubsPtr->tcl_ConcatObj) /* 17 */ -#endif -#ifndef Tcl_ConvertToType -#define Tcl_ConvertToType \ - (tclStubsPtr->tcl_ConvertToType) /* 18 */ -#endif -#ifndef Tcl_DbDecrRefCount -#define Tcl_DbDecrRefCount \ - (tclStubsPtr->tcl_DbDecrRefCount) /* 19 */ -#endif -#ifndef Tcl_DbIncrRefCount -#define Tcl_DbIncrRefCount \ - (tclStubsPtr->tcl_DbIncrRefCount) /* 20 */ -#endif -#ifndef Tcl_DbIsShared -#define Tcl_DbIsShared \ - (tclStubsPtr->tcl_DbIsShared) /* 21 */ -#endif -#ifndef Tcl_DbNewBooleanObj -#define Tcl_DbNewBooleanObj \ - (tclStubsPtr->tcl_DbNewBooleanObj) /* 22 */ -#endif -#ifndef Tcl_DbNewByteArrayObj -#define Tcl_DbNewByteArrayObj \ - (tclStubsPtr->tcl_DbNewByteArrayObj) /* 23 */ -#endif -#ifndef Tcl_DbNewDoubleObj -#define Tcl_DbNewDoubleObj \ - (tclStubsPtr->tcl_DbNewDoubleObj) /* 24 */ -#endif -#ifndef Tcl_DbNewListObj -#define Tcl_DbNewListObj \ - (tclStubsPtr->tcl_DbNewListObj) /* 25 */ -#endif -#ifndef Tcl_DbNewLongObj -#define Tcl_DbNewLongObj \ - (tclStubsPtr->tcl_DbNewLongObj) /* 26 */ -#endif -#ifndef Tcl_DbNewObj -#define Tcl_DbNewObj \ - (tclStubsPtr->tcl_DbNewObj) /* 27 */ -#endif -#ifndef Tcl_DbNewStringObj -#define Tcl_DbNewStringObj \ - (tclStubsPtr->tcl_DbNewStringObj) /* 28 */ -#endif -#ifndef Tcl_DuplicateObj -#define Tcl_DuplicateObj \ - (tclStubsPtr->tcl_DuplicateObj) /* 29 */ -#endif -#ifndef TclFreeObj -#define TclFreeObj \ - (tclStubsPtr->tclFreeObj) /* 30 */ -#endif -#ifndef Tcl_GetBoolean -#define Tcl_GetBoolean \ - (tclStubsPtr->tcl_GetBoolean) /* 31 */ -#endif -#ifndef Tcl_GetBooleanFromObj -#define Tcl_GetBooleanFromObj \ - (tclStubsPtr->tcl_GetBooleanFromObj) /* 32 */ -#endif -#ifndef Tcl_GetByteArrayFromObj -#define Tcl_GetByteArrayFromObj \ - (tclStubsPtr->tcl_GetByteArrayFromObj) /* 33 */ -#endif -#ifndef Tcl_GetDouble -#define Tcl_GetDouble \ - (tclStubsPtr->tcl_GetDouble) /* 34 */ -#endif -#ifndef Tcl_GetDoubleFromObj -#define Tcl_GetDoubleFromObj \ - (tclStubsPtr->tcl_GetDoubleFromObj) /* 35 */ -#endif -#ifndef Tcl_GetIndexFromObj -#define Tcl_GetIndexFromObj \ - (tclStubsPtr->tcl_GetIndexFromObj) /* 36 */ -#endif -#ifndef Tcl_GetInt -#define Tcl_GetInt \ - (tclStubsPtr->tcl_GetInt) /* 37 */ -#endif -#ifndef Tcl_GetIntFromObj -#define Tcl_GetIntFromObj \ - (tclStubsPtr->tcl_GetIntFromObj) /* 38 */ -#endif -#ifndef Tcl_GetLongFromObj -#define Tcl_GetLongFromObj \ - (tclStubsPtr->tcl_GetLongFromObj) /* 39 */ -#endif -#ifndef Tcl_GetObjType -#define Tcl_GetObjType \ - (tclStubsPtr->tcl_GetObjType) /* 40 */ -#endif -#ifndef Tcl_GetStringFromObj -#define Tcl_GetStringFromObj \ - (tclStubsPtr->tcl_GetStringFromObj) /* 41 */ -#endif -#ifndef Tcl_InvalidateStringRep -#define Tcl_InvalidateStringRep \ - (tclStubsPtr->tcl_InvalidateStringRep) /* 42 */ -#endif -#ifndef Tcl_ListObjAppendList -#define Tcl_ListObjAppendList \ - (tclStubsPtr->tcl_ListObjAppendList) /* 43 */ -#endif -#ifndef Tcl_ListObjAppendElement -#define Tcl_ListObjAppendElement \ - (tclStubsPtr->tcl_ListObjAppendElement) /* 44 */ -#endif -#ifndef Tcl_ListObjGetElements -#define Tcl_ListObjGetElements \ - (tclStubsPtr->tcl_ListObjGetElements) /* 45 */ -#endif -#ifndef Tcl_ListObjIndex -#define Tcl_ListObjIndex \ - (tclStubsPtr->tcl_ListObjIndex) /* 46 */ -#endif -#ifndef Tcl_ListObjLength -#define Tcl_ListObjLength \ - (tclStubsPtr->tcl_ListObjLength) /* 47 */ -#endif -#ifndef Tcl_ListObjReplace -#define Tcl_ListObjReplace \ - (tclStubsPtr->tcl_ListObjReplace) /* 48 */ -#endif -#ifndef Tcl_NewBooleanObj -#define Tcl_NewBooleanObj \ - (tclStubsPtr->tcl_NewBooleanObj) /* 49 */ -#endif -#ifndef Tcl_NewByteArrayObj -#define Tcl_NewByteArrayObj \ - (tclStubsPtr->tcl_NewByteArrayObj) /* 50 */ -#endif -#ifndef Tcl_NewDoubleObj -#define Tcl_NewDoubleObj \ - (tclStubsPtr->tcl_NewDoubleObj) /* 51 */ -#endif -#ifndef Tcl_NewIntObj -#define Tcl_NewIntObj \ - (tclStubsPtr->tcl_NewIntObj) /* 52 */ -#endif -#ifndef Tcl_NewListObj -#define Tcl_NewListObj \ - (tclStubsPtr->tcl_NewListObj) /* 53 */ -#endif -#ifndef Tcl_NewLongObj -#define Tcl_NewLongObj \ - (tclStubsPtr->tcl_NewLongObj) /* 54 */ -#endif -#ifndef Tcl_NewObj -#define Tcl_NewObj \ - (tclStubsPtr->tcl_NewObj) /* 55 */ -#endif -#ifndef Tcl_NewStringObj -#define Tcl_NewStringObj \ - (tclStubsPtr->tcl_NewStringObj) /* 56 */ -#endif -#ifndef Tcl_SetBooleanObj -#define Tcl_SetBooleanObj \ - (tclStubsPtr->tcl_SetBooleanObj) /* 57 */ -#endif -#ifndef Tcl_SetByteArrayLength -#define Tcl_SetByteArrayLength \ - (tclStubsPtr->tcl_SetByteArrayLength) /* 58 */ -#endif -#ifndef Tcl_SetByteArrayObj -#define Tcl_SetByteArrayObj \ - (tclStubsPtr->tcl_SetByteArrayObj) /* 59 */ -#endif -#ifndef Tcl_SetDoubleObj -#define Tcl_SetDoubleObj \ - (tclStubsPtr->tcl_SetDoubleObj) /* 60 */ -#endif -#ifndef Tcl_SetIntObj -#define Tcl_SetIntObj \ - (tclStubsPtr->tcl_SetIntObj) /* 61 */ -#endif -#ifndef Tcl_SetListObj -#define Tcl_SetListObj \ - (tclStubsPtr->tcl_SetListObj) /* 62 */ -#endif -#ifndef Tcl_SetLongObj -#define Tcl_SetLongObj \ - (tclStubsPtr->tcl_SetLongObj) /* 63 */ -#endif -#ifndef Tcl_SetObjLength -#define Tcl_SetObjLength \ - (tclStubsPtr->tcl_SetObjLength) /* 64 */ -#endif -#ifndef Tcl_SetStringObj -#define Tcl_SetStringObj \ - (tclStubsPtr->tcl_SetStringObj) /* 65 */ -#endif -#ifndef Tcl_AddErrorInfo -#define Tcl_AddErrorInfo \ - (tclStubsPtr->tcl_AddErrorInfo) /* 66 */ -#endif -#ifndef Tcl_AddObjErrorInfo -#define Tcl_AddObjErrorInfo \ - (tclStubsPtr->tcl_AddObjErrorInfo) /* 67 */ -#endif -#ifndef Tcl_AllowExceptions -#define Tcl_AllowExceptions \ - (tclStubsPtr->tcl_AllowExceptions) /* 68 */ -#endif -#ifndef Tcl_AppendElement -#define Tcl_AppendElement \ - (tclStubsPtr->tcl_AppendElement) /* 69 */ -#endif -#ifndef Tcl_AppendResult -#define Tcl_AppendResult \ - (tclStubsPtr->tcl_AppendResult) /* 70 */ -#endif -#ifndef Tcl_AsyncCreate -#define Tcl_AsyncCreate \ - (tclStubsPtr->tcl_AsyncCreate) /* 71 */ -#endif -#ifndef Tcl_AsyncDelete -#define Tcl_AsyncDelete \ - (tclStubsPtr->tcl_AsyncDelete) /* 72 */ -#endif -#ifndef Tcl_AsyncInvoke -#define Tcl_AsyncInvoke \ - (tclStubsPtr->tcl_AsyncInvoke) /* 73 */ -#endif -#ifndef Tcl_AsyncMark -#define Tcl_AsyncMark \ - (tclStubsPtr->tcl_AsyncMark) /* 74 */ -#endif -#ifndef Tcl_AsyncReady -#define Tcl_AsyncReady \ - (tclStubsPtr->tcl_AsyncReady) /* 75 */ -#endif -#ifndef Tcl_BackgroundError -#define Tcl_BackgroundError \ - (tclStubsPtr->tcl_BackgroundError) /* 76 */ -#endif -#ifndef Tcl_Backslash -#define Tcl_Backslash \ - (tclStubsPtr->tcl_Backslash) /* 77 */ -#endif -#ifndef Tcl_BadChannelOption -#define Tcl_BadChannelOption \ - (tclStubsPtr->tcl_BadChannelOption) /* 78 */ -#endif -#ifndef Tcl_CallWhenDeleted -#define Tcl_CallWhenDeleted \ - (tclStubsPtr->tcl_CallWhenDeleted) /* 79 */ -#endif -#ifndef Tcl_CancelIdleCall -#define Tcl_CancelIdleCall \ - (tclStubsPtr->tcl_CancelIdleCall) /* 80 */ -#endif -#ifndef Tcl_Close -#define Tcl_Close \ - (tclStubsPtr->tcl_Close) /* 81 */ -#endif -#ifndef Tcl_CommandComplete -#define Tcl_CommandComplete \ - (tclStubsPtr->tcl_CommandComplete) /* 82 */ -#endif -#ifndef Tcl_Concat -#define Tcl_Concat \ - (tclStubsPtr->tcl_Concat) /* 83 */ -#endif -#ifndef Tcl_ConvertElement -#define Tcl_ConvertElement \ - (tclStubsPtr->tcl_ConvertElement) /* 84 */ -#endif -#ifndef Tcl_ConvertCountedElement -#define Tcl_ConvertCountedElement \ - (tclStubsPtr->tcl_ConvertCountedElement) /* 85 */ -#endif -#ifndef Tcl_CreateAlias -#define Tcl_CreateAlias \ - (tclStubsPtr->tcl_CreateAlias) /* 86 */ -#endif -#ifndef Tcl_CreateAliasObj -#define Tcl_CreateAliasObj \ - (tclStubsPtr->tcl_CreateAliasObj) /* 87 */ -#endif -#ifndef Tcl_CreateChannel -#define Tcl_CreateChannel \ - (tclStubsPtr->tcl_CreateChannel) /* 88 */ -#endif -#ifndef Tcl_CreateChannelHandler -#define Tcl_CreateChannelHandler \ - (tclStubsPtr->tcl_CreateChannelHandler) /* 89 */ -#endif -#ifndef Tcl_CreateCloseHandler -#define Tcl_CreateCloseHandler \ - (tclStubsPtr->tcl_CreateCloseHandler) /* 90 */ -#endif -#ifndef Tcl_CreateCommand -#define Tcl_CreateCommand \ - (tclStubsPtr->tcl_CreateCommand) /* 91 */ -#endif -#ifndef Tcl_CreateEventSource -#define Tcl_CreateEventSource \ - (tclStubsPtr->tcl_CreateEventSource) /* 92 */ -#endif -#ifndef Tcl_CreateExitHandler -#define Tcl_CreateExitHandler \ - (tclStubsPtr->tcl_CreateExitHandler) /* 93 */ -#endif -#ifndef Tcl_CreateInterp -#define Tcl_CreateInterp \ - (tclStubsPtr->tcl_CreateInterp) /* 94 */ -#endif -#ifndef Tcl_CreateMathFunc -#define Tcl_CreateMathFunc \ - (tclStubsPtr->tcl_CreateMathFunc) /* 95 */ -#endif -#ifndef Tcl_CreateObjCommand -#define Tcl_CreateObjCommand \ - (tclStubsPtr->tcl_CreateObjCommand) /* 96 */ -#endif -#ifndef Tcl_CreateSlave -#define Tcl_CreateSlave \ - (tclStubsPtr->tcl_CreateSlave) /* 97 */ -#endif -#ifndef Tcl_CreateTimerHandler -#define Tcl_CreateTimerHandler \ - (tclStubsPtr->tcl_CreateTimerHandler) /* 98 */ -#endif -#ifndef Tcl_CreateTrace -#define Tcl_CreateTrace \ - (tclStubsPtr->tcl_CreateTrace) /* 99 */ -#endif -#ifndef Tcl_DeleteAssocData -#define Tcl_DeleteAssocData \ - (tclStubsPtr->tcl_DeleteAssocData) /* 100 */ -#endif -#ifndef Tcl_DeleteChannelHandler -#define Tcl_DeleteChannelHandler \ - (tclStubsPtr->tcl_DeleteChannelHandler) /* 101 */ -#endif -#ifndef Tcl_DeleteCloseHandler -#define Tcl_DeleteCloseHandler \ - (tclStubsPtr->tcl_DeleteCloseHandler) /* 102 */ -#endif -#ifndef Tcl_DeleteCommand -#define Tcl_DeleteCommand \ - (tclStubsPtr->tcl_DeleteCommand) /* 103 */ -#endif -#ifndef Tcl_DeleteCommandFromToken -#define Tcl_DeleteCommandFromToken \ - (tclStubsPtr->tcl_DeleteCommandFromToken) /* 104 */ -#endif -#ifndef Tcl_DeleteEvents -#define Tcl_DeleteEvents \ - (tclStubsPtr->tcl_DeleteEvents) /* 105 */ -#endif -#ifndef Tcl_DeleteEventSource -#define Tcl_DeleteEventSource \ - (tclStubsPtr->tcl_DeleteEventSource) /* 106 */ -#endif -#ifndef Tcl_DeleteExitHandler -#define Tcl_DeleteExitHandler \ - (tclStubsPtr->tcl_DeleteExitHandler) /* 107 */ -#endif -#ifndef Tcl_DeleteHashEntry -#define Tcl_DeleteHashEntry \ - (tclStubsPtr->tcl_DeleteHashEntry) /* 108 */ -#endif -#ifndef Tcl_DeleteHashTable -#define Tcl_DeleteHashTable \ - (tclStubsPtr->tcl_DeleteHashTable) /* 109 */ -#endif -#ifndef Tcl_DeleteInterp -#define Tcl_DeleteInterp \ - (tclStubsPtr->tcl_DeleteInterp) /* 110 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_DetachPids -#define Tcl_DetachPids \ - (tclStubsPtr->tcl_DetachPids) /* 111 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_DetachPids -#define Tcl_DetachPids \ - (tclStubsPtr->tcl_DetachPids) /* 111 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_DeleteTimerHandler -#define Tcl_DeleteTimerHandler \ - (tclStubsPtr->tcl_DeleteTimerHandler) /* 112 */ -#endif -#ifndef Tcl_DeleteTrace -#define Tcl_DeleteTrace \ - (tclStubsPtr->tcl_DeleteTrace) /* 113 */ -#endif -#ifndef Tcl_DontCallWhenDeleted -#define Tcl_DontCallWhenDeleted \ - (tclStubsPtr->tcl_DontCallWhenDeleted) /* 114 */ -#endif -#ifndef Tcl_DoOneEvent -#define Tcl_DoOneEvent \ - (tclStubsPtr->tcl_DoOneEvent) /* 115 */ -#endif -#ifndef Tcl_DoWhenIdle -#define Tcl_DoWhenIdle \ - (tclStubsPtr->tcl_DoWhenIdle) /* 116 */ -#endif -#ifndef Tcl_DStringAppend -#define Tcl_DStringAppend \ - (tclStubsPtr->tcl_DStringAppend) /* 117 */ -#endif -#ifndef Tcl_DStringAppendElement -#define Tcl_DStringAppendElement \ - (tclStubsPtr->tcl_DStringAppendElement) /* 118 */ -#endif -#ifndef Tcl_DStringEndSublist -#define Tcl_DStringEndSublist \ - (tclStubsPtr->tcl_DStringEndSublist) /* 119 */ -#endif -#ifndef Tcl_DStringFree -#define Tcl_DStringFree \ - (tclStubsPtr->tcl_DStringFree) /* 120 */ -#endif -#ifndef Tcl_DStringGetResult -#define Tcl_DStringGetResult \ - (tclStubsPtr->tcl_DStringGetResult) /* 121 */ -#endif -#ifndef Tcl_DStringInit -#define Tcl_DStringInit \ - (tclStubsPtr->tcl_DStringInit) /* 122 */ -#endif -#ifndef Tcl_DStringResult -#define Tcl_DStringResult \ - (tclStubsPtr->tcl_DStringResult) /* 123 */ -#endif -#ifndef Tcl_DStringSetLength -#define Tcl_DStringSetLength \ - (tclStubsPtr->tcl_DStringSetLength) /* 124 */ -#endif -#ifndef Tcl_DStringStartSublist -#define Tcl_DStringStartSublist \ - (tclStubsPtr->tcl_DStringStartSublist) /* 125 */ -#endif -#ifndef Tcl_Eof -#define Tcl_Eof \ - (tclStubsPtr->tcl_Eof) /* 126 */ -#endif -#ifndef Tcl_ErrnoId -#define Tcl_ErrnoId \ - (tclStubsPtr->tcl_ErrnoId) /* 127 */ -#endif -#ifndef Tcl_ErrnoMsg -#define Tcl_ErrnoMsg \ - (tclStubsPtr->tcl_ErrnoMsg) /* 128 */ -#endif -#ifndef Tcl_Eval -#define Tcl_Eval \ - (tclStubsPtr->tcl_Eval) /* 129 */ -#endif -#ifndef Tcl_EvalFile -#define Tcl_EvalFile \ - (tclStubsPtr->tcl_EvalFile) /* 130 */ -#endif -#ifndef Tcl_EvalObj -#define Tcl_EvalObj \ - (tclStubsPtr->tcl_EvalObj) /* 131 */ -#endif -#ifndef Tcl_EventuallyFree -#define Tcl_EventuallyFree \ - (tclStubsPtr->tcl_EventuallyFree) /* 132 */ -#endif -#ifndef Tcl_Exit -#define Tcl_Exit \ - (tclStubsPtr->tcl_Exit) /* 133 */ -#endif -#ifndef Tcl_ExposeCommand -#define Tcl_ExposeCommand \ - (tclStubsPtr->tcl_ExposeCommand) /* 134 */ -#endif -#ifndef Tcl_ExprBoolean -#define Tcl_ExprBoolean \ - (tclStubsPtr->tcl_ExprBoolean) /* 135 */ -#endif -#ifndef Tcl_ExprBooleanObj -#define Tcl_ExprBooleanObj \ - (tclStubsPtr->tcl_ExprBooleanObj) /* 136 */ -#endif -#ifndef Tcl_ExprDouble -#define Tcl_ExprDouble \ - (tclStubsPtr->tcl_ExprDouble) /* 137 */ -#endif -#ifndef Tcl_ExprDoubleObj -#define Tcl_ExprDoubleObj \ - (tclStubsPtr->tcl_ExprDoubleObj) /* 138 */ -#endif -#ifndef Tcl_ExprLong -#define Tcl_ExprLong \ - (tclStubsPtr->tcl_ExprLong) /* 139 */ -#endif -#ifndef Tcl_ExprLongObj -#define Tcl_ExprLongObj \ - (tclStubsPtr->tcl_ExprLongObj) /* 140 */ -#endif -#ifndef Tcl_ExprObj -#define Tcl_ExprObj \ - (tclStubsPtr->tcl_ExprObj) /* 141 */ -#endif -#ifndef Tcl_ExprString -#define Tcl_ExprString \ - (tclStubsPtr->tcl_ExprString) /* 142 */ -#endif -#ifndef Tcl_Finalize -#define Tcl_Finalize \ - (tclStubsPtr->tcl_Finalize) /* 143 */ -#endif -#ifndef Tcl_FindExecutable -#define Tcl_FindExecutable \ - (tclStubsPtr->tcl_FindExecutable) /* 144 */ -#endif -#ifndef Tcl_FirstHashEntry -#define Tcl_FirstHashEntry \ - (tclStubsPtr->tcl_FirstHashEntry) /* 145 */ -#endif -#ifndef Tcl_Flush -#define Tcl_Flush \ - (tclStubsPtr->tcl_Flush) /* 146 */ -#endif -#ifndef Tcl_FreeResult -#define Tcl_FreeResult \ - (tclStubsPtr->tcl_FreeResult) /* 147 */ -#endif -#ifndef Tcl_GetAlias -#define Tcl_GetAlias \ - (tclStubsPtr->tcl_GetAlias) /* 148 */ -#endif -#ifndef Tcl_GetAliasObj -#define Tcl_GetAliasObj \ - (tclStubsPtr->tcl_GetAliasObj) /* 149 */ -#endif -#ifndef Tcl_GetAssocData -#define Tcl_GetAssocData \ - (tclStubsPtr->tcl_GetAssocData) /* 150 */ -#endif -#ifndef Tcl_GetChannel -#define Tcl_GetChannel \ - (tclStubsPtr->tcl_GetChannel) /* 151 */ -#endif -#ifndef Tcl_GetChannelBufferSize -#define Tcl_GetChannelBufferSize \ - (tclStubsPtr->tcl_GetChannelBufferSize) /* 152 */ -#endif -#ifndef Tcl_GetChannelHandle -#define Tcl_GetChannelHandle \ - (tclStubsPtr->tcl_GetChannelHandle) /* 153 */ -#endif -#ifndef Tcl_GetChannelInstanceData -#define Tcl_GetChannelInstanceData \ - (tclStubsPtr->tcl_GetChannelInstanceData) /* 154 */ -#endif -#ifndef Tcl_GetChannelMode -#define Tcl_GetChannelMode \ - (tclStubsPtr->tcl_GetChannelMode) /* 155 */ -#endif -#ifndef Tcl_GetChannelName -#define Tcl_GetChannelName \ - (tclStubsPtr->tcl_GetChannelName) /* 156 */ -#endif -#ifndef Tcl_GetChannelOption -#define Tcl_GetChannelOption \ - (tclStubsPtr->tcl_GetChannelOption) /* 157 */ -#endif -#ifndef Tcl_GetChannelType -#define Tcl_GetChannelType \ - (tclStubsPtr->tcl_GetChannelType) /* 158 */ -#endif -#ifndef Tcl_GetCommandInfo -#define Tcl_GetCommandInfo \ - (tclStubsPtr->tcl_GetCommandInfo) /* 159 */ -#endif -#ifndef Tcl_GetCommandName -#define Tcl_GetCommandName \ - (tclStubsPtr->tcl_GetCommandName) /* 160 */ -#endif -#ifndef Tcl_GetErrno -#define Tcl_GetErrno \ - (tclStubsPtr->tcl_GetErrno) /* 161 */ -#endif -#ifndef Tcl_GetHostName -#define Tcl_GetHostName \ - (tclStubsPtr->tcl_GetHostName) /* 162 */ -#endif -#ifndef Tcl_GetInterpPath -#define Tcl_GetInterpPath \ - (tclStubsPtr->tcl_GetInterpPath) /* 163 */ -#endif -#ifndef Tcl_GetMaster -#define Tcl_GetMaster \ - (tclStubsPtr->tcl_GetMaster) /* 164 */ -#endif -#ifndef Tcl_GetNameOfExecutable -#define Tcl_GetNameOfExecutable \ - (tclStubsPtr->tcl_GetNameOfExecutable) /* 165 */ -#endif -#ifndef Tcl_GetObjResult -#define Tcl_GetObjResult \ - (tclStubsPtr->tcl_GetObjResult) /* 166 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_GetOpenFile -#define Tcl_GetOpenFile \ - (tclStubsPtr->tcl_GetOpenFile) /* 167 */ -#endif -#endif /* UNIX */ -#ifndef Tcl_GetPathType -#define Tcl_GetPathType \ - (tclStubsPtr->tcl_GetPathType) /* 168 */ -#endif -#ifndef Tcl_Gets -#define Tcl_Gets \ - (tclStubsPtr->tcl_Gets) /* 169 */ -#endif -#ifndef Tcl_GetsObj -#define Tcl_GetsObj \ - (tclStubsPtr->tcl_GetsObj) /* 170 */ -#endif -#ifndef Tcl_GetServiceMode -#define Tcl_GetServiceMode \ - (tclStubsPtr->tcl_GetServiceMode) /* 171 */ -#endif -#ifndef Tcl_GetSlave -#define Tcl_GetSlave \ - (tclStubsPtr->tcl_GetSlave) /* 172 */ -#endif -#ifndef Tcl_GetStdChannel -#define Tcl_GetStdChannel \ - (tclStubsPtr->tcl_GetStdChannel) /* 173 */ -#endif -#ifndef Tcl_GetStringResult -#define Tcl_GetStringResult \ - (tclStubsPtr->tcl_GetStringResult) /* 174 */ -#endif -#ifndef Tcl_GetVar -#define Tcl_GetVar \ - (tclStubsPtr->tcl_GetVar) /* 175 */ -#endif -#ifndef Tcl_GetVar2 -#define Tcl_GetVar2 \ - (tclStubsPtr->tcl_GetVar2) /* 176 */ -#endif -#ifndef Tcl_GlobalEval -#define Tcl_GlobalEval \ - (tclStubsPtr->tcl_GlobalEval) /* 177 */ -#endif -#ifndef Tcl_GlobalEvalObj -#define Tcl_GlobalEvalObj \ - (tclStubsPtr->tcl_GlobalEvalObj) /* 178 */ -#endif -#ifndef Tcl_HideCommand -#define Tcl_HideCommand \ - (tclStubsPtr->tcl_HideCommand) /* 179 */ -#endif -#ifndef Tcl_Init -#define Tcl_Init \ - (tclStubsPtr->tcl_Init) /* 180 */ -#endif -#ifndef Tcl_InitHashTable -#define Tcl_InitHashTable \ - (tclStubsPtr->tcl_InitHashTable) /* 181 */ -#endif -#ifndef Tcl_InputBlocked -#define Tcl_InputBlocked \ - (tclStubsPtr->tcl_InputBlocked) /* 182 */ -#endif -#ifndef Tcl_InputBuffered -#define Tcl_InputBuffered \ - (tclStubsPtr->tcl_InputBuffered) /* 183 */ -#endif -#ifndef Tcl_InterpDeleted -#define Tcl_InterpDeleted \ - (tclStubsPtr->tcl_InterpDeleted) /* 184 */ -#endif -#ifndef Tcl_IsSafe -#define Tcl_IsSafe \ - (tclStubsPtr->tcl_IsSafe) /* 185 */ -#endif -#ifndef Tcl_JoinPath -#define Tcl_JoinPath \ - (tclStubsPtr->tcl_JoinPath) /* 186 */ -#endif -#ifndef Tcl_LinkVar -#define Tcl_LinkVar \ - (tclStubsPtr->tcl_LinkVar) /* 187 */ -#endif -/* Slot 188 is reserved */ -#ifndef Tcl_MakeFileChannel -#define Tcl_MakeFileChannel \ - (tclStubsPtr->tcl_MakeFileChannel) /* 189 */ -#endif -#ifndef Tcl_MakeSafe -#define Tcl_MakeSafe \ - (tclStubsPtr->tcl_MakeSafe) /* 190 */ -#endif -#ifndef Tcl_MakeTcpClientChannel -#define Tcl_MakeTcpClientChannel \ - (tclStubsPtr->tcl_MakeTcpClientChannel) /* 191 */ -#endif -#ifndef Tcl_Merge -#define Tcl_Merge \ - (tclStubsPtr->tcl_Merge) /* 192 */ -#endif -#ifndef Tcl_NextHashEntry -#define Tcl_NextHashEntry \ - (tclStubsPtr->tcl_NextHashEntry) /* 193 */ -#endif -#ifndef Tcl_NotifyChannel -#define Tcl_NotifyChannel \ - (tclStubsPtr->tcl_NotifyChannel) /* 194 */ -#endif -#ifndef Tcl_ObjGetVar2 -#define Tcl_ObjGetVar2 \ - (tclStubsPtr->tcl_ObjGetVar2) /* 195 */ -#endif -#ifndef Tcl_ObjSetVar2 -#define Tcl_ObjSetVar2 \ - (tclStubsPtr->tcl_ObjSetVar2) /* 196 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_OpenCommandChannel -#define Tcl_OpenCommandChannel \ - (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_OpenCommandChannel -#define Tcl_OpenCommandChannel \ - (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_OpenFileChannel -#define Tcl_OpenFileChannel \ - (tclStubsPtr->tcl_OpenFileChannel) /* 198 */ -#endif -#ifndef Tcl_OpenTcpClient -#define Tcl_OpenTcpClient \ - (tclStubsPtr->tcl_OpenTcpClient) /* 199 */ -#endif -#ifndef Tcl_OpenTcpServer -#define Tcl_OpenTcpServer \ - (tclStubsPtr->tcl_OpenTcpServer) /* 200 */ -#endif -#ifndef Tcl_Preserve -#define Tcl_Preserve \ - (tclStubsPtr->tcl_Preserve) /* 201 */ -#endif -#ifndef Tcl_PrintDouble -#define Tcl_PrintDouble \ - (tclStubsPtr->tcl_PrintDouble) /* 202 */ -#endif -#ifndef Tcl_PutEnv -#define Tcl_PutEnv \ - (tclStubsPtr->tcl_PutEnv) /* 203 */ -#endif -#ifndef Tcl_PosixError -#define Tcl_PosixError \ - (tclStubsPtr->tcl_PosixError) /* 204 */ -#endif -#ifndef Tcl_QueueEvent -#define Tcl_QueueEvent \ - (tclStubsPtr->tcl_QueueEvent) /* 205 */ -#endif -#ifndef Tcl_Read -#define Tcl_Read \ - (tclStubsPtr->tcl_Read) /* 206 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef Tcl_ReapDetachedProcs -#define Tcl_ReapDetachedProcs \ - (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef Tcl_ReapDetachedProcs -#define Tcl_ReapDetachedProcs \ - (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ -#endif -#endif /* __WIN32__ */ -#ifndef Tcl_RecordAndEval -#define Tcl_RecordAndEval \ - (tclStubsPtr->tcl_RecordAndEval) /* 208 */ -#endif -#ifndef Tcl_RecordAndEvalObj -#define Tcl_RecordAndEvalObj \ - (tclStubsPtr->tcl_RecordAndEvalObj) /* 209 */ -#endif -#ifndef Tcl_RegisterChannel -#define Tcl_RegisterChannel \ - (tclStubsPtr->tcl_RegisterChannel) /* 210 */ -#endif -#ifndef Tcl_RegisterObjType -#define Tcl_RegisterObjType \ - (tclStubsPtr->tcl_RegisterObjType) /* 211 */ -#endif -#ifndef Tcl_RegExpCompile -#define Tcl_RegExpCompile \ - (tclStubsPtr->tcl_RegExpCompile) /* 212 */ -#endif -#ifndef Tcl_RegExpExec -#define Tcl_RegExpExec \ - (tclStubsPtr->tcl_RegExpExec) /* 213 */ -#endif -#ifndef Tcl_RegExpMatch -#define Tcl_RegExpMatch \ - (tclStubsPtr->tcl_RegExpMatch) /* 214 */ -#endif -#ifndef Tcl_RegExpRange -#define Tcl_RegExpRange \ - (tclStubsPtr->tcl_RegExpRange) /* 215 */ -#endif -#ifndef Tcl_Release -#define Tcl_Release \ - (tclStubsPtr->tcl_Release) /* 216 */ -#endif -#ifndef Tcl_ResetResult -#define Tcl_ResetResult \ - (tclStubsPtr->tcl_ResetResult) /* 217 */ -#endif -#ifndef Tcl_ScanElement -#define Tcl_ScanElement \ - (tclStubsPtr->tcl_ScanElement) /* 218 */ -#endif -#ifndef Tcl_ScanCountedElement -#define Tcl_ScanCountedElement \ - (tclStubsPtr->tcl_ScanCountedElement) /* 219 */ -#endif -#ifndef Tcl_SeekOld -#define Tcl_SeekOld \ - (tclStubsPtr->tcl_SeekOld) /* 220 */ -#endif -#ifndef Tcl_ServiceAll -#define Tcl_ServiceAll \ - (tclStubsPtr->tcl_ServiceAll) /* 221 */ -#endif -#ifndef Tcl_ServiceEvent -#define Tcl_ServiceEvent \ - (tclStubsPtr->tcl_ServiceEvent) /* 222 */ -#endif -#ifndef Tcl_SetAssocData -#define Tcl_SetAssocData \ - (tclStubsPtr->tcl_SetAssocData) /* 223 */ -#endif -#ifndef Tcl_SetChannelBufferSize -#define Tcl_SetChannelBufferSize \ - (tclStubsPtr->tcl_SetChannelBufferSize) /* 224 */ -#endif -#ifndef Tcl_SetChannelOption -#define Tcl_SetChannelOption \ - (tclStubsPtr->tcl_SetChannelOption) /* 225 */ -#endif -#ifndef Tcl_SetCommandInfo -#define Tcl_SetCommandInfo \ - (tclStubsPtr->tcl_SetCommandInfo) /* 226 */ -#endif -#ifndef Tcl_SetErrno -#define Tcl_SetErrno \ - (tclStubsPtr->tcl_SetErrno) /* 227 */ -#endif -#ifndef Tcl_SetErrorCode -#define Tcl_SetErrorCode \ - (tclStubsPtr->tcl_SetErrorCode) /* 228 */ -#endif -#ifndef Tcl_SetMaxBlockTime -#define Tcl_SetMaxBlockTime \ - (tclStubsPtr->tcl_SetMaxBlockTime) /* 229 */ -#endif -#ifndef Tcl_SetPanicProc -#define Tcl_SetPanicProc \ - (tclStubsPtr->tcl_SetPanicProc) /* 230 */ -#endif -#ifndef Tcl_SetRecursionLimit -#define Tcl_SetRecursionLimit \ - (tclStubsPtr->tcl_SetRecursionLimit) /* 231 */ -#endif -#ifndef Tcl_SetResult -#define Tcl_SetResult \ - (tclStubsPtr->tcl_SetResult) /* 232 */ -#endif -#ifndef Tcl_SetServiceMode -#define Tcl_SetServiceMode \ - (tclStubsPtr->tcl_SetServiceMode) /* 233 */ -#endif -#ifndef Tcl_SetObjErrorCode -#define Tcl_SetObjErrorCode \ - (tclStubsPtr->tcl_SetObjErrorCode) /* 234 */ -#endif -#ifndef Tcl_SetObjResult -#define Tcl_SetObjResult \ - (tclStubsPtr->tcl_SetObjResult) /* 235 */ -#endif -#ifndef Tcl_SetStdChannel -#define Tcl_SetStdChannel \ - (tclStubsPtr->tcl_SetStdChannel) /* 236 */ -#endif -#ifndef Tcl_SetVar -#define Tcl_SetVar \ - (tclStubsPtr->tcl_SetVar) /* 237 */ -#endif -#ifndef Tcl_SetVar2 -#define Tcl_SetVar2 \ - (tclStubsPtr->tcl_SetVar2) /* 238 */ -#endif -#ifndef Tcl_SignalId -#define Tcl_SignalId \ - (tclStubsPtr->tcl_SignalId) /* 239 */ -#endif -#ifndef Tcl_SignalMsg -#define Tcl_SignalMsg \ - (tclStubsPtr->tcl_SignalMsg) /* 240 */ -#endif -#ifndef Tcl_SourceRCFile -#define Tcl_SourceRCFile \ - (tclStubsPtr->tcl_SourceRCFile) /* 241 */ -#endif -#ifndef Tcl_SplitList -#define Tcl_SplitList \ - (tclStubsPtr->tcl_SplitList) /* 242 */ -#endif -#ifndef Tcl_SplitPath -#define Tcl_SplitPath \ - (tclStubsPtr->tcl_SplitPath) /* 243 */ -#endif -#ifndef Tcl_StaticPackage -#define Tcl_StaticPackage \ - (tclStubsPtr->tcl_StaticPackage) /* 244 */ -#endif -#ifndef Tcl_StringMatch -#define Tcl_StringMatch \ - (tclStubsPtr->tcl_StringMatch) /* 245 */ -#endif -#ifndef Tcl_TellOld -#define Tcl_TellOld \ - (tclStubsPtr->tcl_TellOld) /* 246 */ -#endif -#ifndef Tcl_TraceVar -#define Tcl_TraceVar \ - (tclStubsPtr->tcl_TraceVar) /* 247 */ -#endif -#ifndef Tcl_TraceVar2 -#define Tcl_TraceVar2 \ - (tclStubsPtr->tcl_TraceVar2) /* 248 */ -#endif -#ifndef Tcl_TranslateFileName -#define Tcl_TranslateFileName \ - (tclStubsPtr->tcl_TranslateFileName) /* 249 */ -#endif -#ifndef Tcl_Ungets -#define Tcl_Ungets \ - (tclStubsPtr->tcl_Ungets) /* 250 */ -#endif -#ifndef Tcl_UnlinkVar -#define Tcl_UnlinkVar \ - (tclStubsPtr->tcl_UnlinkVar) /* 251 */ -#endif -#ifndef Tcl_UnregisterChannel -#define Tcl_UnregisterChannel \ - (tclStubsPtr->tcl_UnregisterChannel) /* 252 */ -#endif -#ifndef Tcl_UnsetVar -#define Tcl_UnsetVar \ - (tclStubsPtr->tcl_UnsetVar) /* 253 */ -#endif -#ifndef Tcl_UnsetVar2 -#define Tcl_UnsetVar2 \ - (tclStubsPtr->tcl_UnsetVar2) /* 254 */ -#endif -#ifndef Tcl_UntraceVar -#define Tcl_UntraceVar \ - (tclStubsPtr->tcl_UntraceVar) /* 255 */ -#endif -#ifndef Tcl_UntraceVar2 -#define Tcl_UntraceVar2 \ - (tclStubsPtr->tcl_UntraceVar2) /* 256 */ -#endif -#ifndef Tcl_UpdateLinkedVar -#define Tcl_UpdateLinkedVar \ - (tclStubsPtr->tcl_UpdateLinkedVar) /* 257 */ -#endif -#ifndef Tcl_UpVar -#define Tcl_UpVar \ - (tclStubsPtr->tcl_UpVar) /* 258 */ -#endif -#ifndef Tcl_UpVar2 -#define Tcl_UpVar2 \ - (tclStubsPtr->tcl_UpVar2) /* 259 */ -#endif -#ifndef Tcl_VarEval -#define Tcl_VarEval \ - (tclStubsPtr->tcl_VarEval) /* 260 */ -#endif -#ifndef Tcl_VarTraceInfo -#define Tcl_VarTraceInfo \ - (tclStubsPtr->tcl_VarTraceInfo) /* 261 */ -#endif -#ifndef Tcl_VarTraceInfo2 -#define Tcl_VarTraceInfo2 \ - (tclStubsPtr->tcl_VarTraceInfo2) /* 262 */ -#endif -#ifndef Tcl_Write -#define Tcl_Write \ - (tclStubsPtr->tcl_Write) /* 263 */ -#endif -#ifndef Tcl_WrongNumArgs -#define Tcl_WrongNumArgs \ - (tclStubsPtr->tcl_WrongNumArgs) /* 264 */ -#endif -#ifndef Tcl_DumpActiveMemory -#define Tcl_DumpActiveMemory \ - (tclStubsPtr->tcl_DumpActiveMemory) /* 265 */ -#endif -#ifndef Tcl_ValidateAllMemory -#define Tcl_ValidateAllMemory \ - (tclStubsPtr->tcl_ValidateAllMemory) /* 266 */ -#endif -#ifndef Tcl_AppendResultVA -#define Tcl_AppendResultVA \ - (tclStubsPtr->tcl_AppendResultVA) /* 267 */ -#endif -#ifndef Tcl_AppendStringsToObjVA -#define Tcl_AppendStringsToObjVA \ - (tclStubsPtr->tcl_AppendStringsToObjVA) /* 268 */ -#endif -#ifndef Tcl_HashStats -#define Tcl_HashStats \ - (tclStubsPtr->tcl_HashStats) /* 269 */ -#endif -#ifndef Tcl_ParseVar -#define Tcl_ParseVar \ - (tclStubsPtr->tcl_ParseVar) /* 270 */ -#endif -#ifndef Tcl_PkgPresent -#define Tcl_PkgPresent \ - (tclStubsPtr->tcl_PkgPresent) /* 271 */ -#endif -#ifndef Tcl_PkgPresentEx -#define Tcl_PkgPresentEx \ - (tclStubsPtr->tcl_PkgPresentEx) /* 272 */ -#endif -#ifndef Tcl_PkgProvide -#define Tcl_PkgProvide \ - (tclStubsPtr->tcl_PkgProvide) /* 273 */ -#endif -#ifndef Tcl_PkgRequire -#define Tcl_PkgRequire \ - (tclStubsPtr->tcl_PkgRequire) /* 274 */ -#endif -#ifndef Tcl_SetErrorCodeVA -#define Tcl_SetErrorCodeVA \ - (tclStubsPtr->tcl_SetErrorCodeVA) /* 275 */ -#endif -#ifndef Tcl_VarEvalVA -#define Tcl_VarEvalVA \ - (tclStubsPtr->tcl_VarEvalVA) /* 276 */ -#endif -#ifndef Tcl_WaitPid -#define Tcl_WaitPid \ - (tclStubsPtr->tcl_WaitPid) /* 277 */ -#endif -#ifndef Tcl_PanicVA -#define Tcl_PanicVA \ - (tclStubsPtr->tcl_PanicVA) /* 278 */ -#endif -#ifndef Tcl_GetVersion -#define Tcl_GetVersion \ - (tclStubsPtr->tcl_GetVersion) /* 279 */ -#endif -#ifndef Tcl_InitMemory -#define Tcl_InitMemory \ - (tclStubsPtr->tcl_InitMemory) /* 280 */ -#endif -#ifndef Tcl_StackChannel -#define Tcl_StackChannel \ - (tclStubsPtr->tcl_StackChannel) /* 281 */ -#endif -#ifndef Tcl_UnstackChannel -#define Tcl_UnstackChannel \ - (tclStubsPtr->tcl_UnstackChannel) /* 282 */ -#endif -#ifndef Tcl_GetStackedChannel -#define Tcl_GetStackedChannel \ - (tclStubsPtr->tcl_GetStackedChannel) /* 283 */ -#endif -#ifndef Tcl_SetMainLoop -#define Tcl_SetMainLoop \ - (tclStubsPtr->tcl_SetMainLoop) /* 284 */ -#endif -/* Slot 285 is reserved */ -#ifndef Tcl_AppendObjToObj -#define Tcl_AppendObjToObj \ - (tclStubsPtr->tcl_AppendObjToObj) /* 286 */ -#endif -#ifndef Tcl_CreateEncoding -#define Tcl_CreateEncoding \ - (tclStubsPtr->tcl_CreateEncoding) /* 287 */ -#endif -#ifndef Tcl_CreateThreadExitHandler -#define Tcl_CreateThreadExitHandler \ - (tclStubsPtr->tcl_CreateThreadExitHandler) /* 288 */ -#endif -#ifndef Tcl_DeleteThreadExitHandler -#define Tcl_DeleteThreadExitHandler \ - (tclStubsPtr->tcl_DeleteThreadExitHandler) /* 289 */ -#endif -#ifndef Tcl_DiscardResult -#define Tcl_DiscardResult \ - (tclStubsPtr->tcl_DiscardResult) /* 290 */ -#endif -#ifndef Tcl_EvalEx -#define Tcl_EvalEx \ - (tclStubsPtr->tcl_EvalEx) /* 291 */ -#endif -#ifndef Tcl_EvalObjv -#define Tcl_EvalObjv \ - (tclStubsPtr->tcl_EvalObjv) /* 292 */ -#endif -#ifndef Tcl_EvalObjEx -#define Tcl_EvalObjEx \ - (tclStubsPtr->tcl_EvalObjEx) /* 293 */ -#endif -#ifndef Tcl_ExitThread -#define Tcl_ExitThread \ - (tclStubsPtr->tcl_ExitThread) /* 294 */ -#endif -#ifndef Tcl_ExternalToUtf -#define Tcl_ExternalToUtf \ - (tclStubsPtr->tcl_ExternalToUtf) /* 295 */ -#endif -#ifndef Tcl_ExternalToUtfDString -#define Tcl_ExternalToUtfDString \ - (tclStubsPtr->tcl_ExternalToUtfDString) /* 296 */ -#endif -#ifndef Tcl_FinalizeThread -#define Tcl_FinalizeThread \ - (tclStubsPtr->tcl_FinalizeThread) /* 297 */ -#endif -#ifndef Tcl_FinalizeNotifier -#define Tcl_FinalizeNotifier \ - (tclStubsPtr->tcl_FinalizeNotifier) /* 298 */ -#endif -#ifndef Tcl_FreeEncoding -#define Tcl_FreeEncoding \ - (tclStubsPtr->tcl_FreeEncoding) /* 299 */ -#endif -#ifndef Tcl_GetCurrentThread -#define Tcl_GetCurrentThread \ - (tclStubsPtr->tcl_GetCurrentThread) /* 300 */ -#endif -#ifndef Tcl_GetEncoding -#define Tcl_GetEncoding \ - (tclStubsPtr->tcl_GetEncoding) /* 301 */ -#endif -#ifndef Tcl_GetEncodingName -#define Tcl_GetEncodingName \ - (tclStubsPtr->tcl_GetEncodingName) /* 302 */ -#endif -#ifndef Tcl_GetEncodingNames -#define Tcl_GetEncodingNames \ - (tclStubsPtr->tcl_GetEncodingNames) /* 303 */ -#endif -#ifndef Tcl_GetIndexFromObjStruct -#define Tcl_GetIndexFromObjStruct \ - (tclStubsPtr->tcl_GetIndexFromObjStruct) /* 304 */ -#endif -#ifndef Tcl_GetThreadData -#define Tcl_GetThreadData \ - (tclStubsPtr->tcl_GetThreadData) /* 305 */ -#endif -#ifndef Tcl_GetVar2Ex -#define Tcl_GetVar2Ex \ - (tclStubsPtr->tcl_GetVar2Ex) /* 306 */ -#endif -#ifndef Tcl_InitNotifier -#define Tcl_InitNotifier \ - (tclStubsPtr->tcl_InitNotifier) /* 307 */ -#endif -#ifndef Tcl_MutexLock -#define Tcl_MutexLock \ - (tclStubsPtr->tcl_MutexLock) /* 308 */ -#endif -#ifndef Tcl_MutexUnlock -#define Tcl_MutexUnlock \ - (tclStubsPtr->tcl_MutexUnlock) /* 309 */ -#endif -#ifndef Tcl_ConditionNotify -#define Tcl_ConditionNotify \ - (tclStubsPtr->tcl_ConditionNotify) /* 310 */ -#endif -#ifndef Tcl_ConditionWait -#define Tcl_ConditionWait \ - (tclStubsPtr->tcl_ConditionWait) /* 311 */ -#endif -#ifndef Tcl_NumUtfChars -#define Tcl_NumUtfChars \ - (tclStubsPtr->tcl_NumUtfChars) /* 312 */ -#endif -#ifndef Tcl_ReadChars -#define Tcl_ReadChars \ - (tclStubsPtr->tcl_ReadChars) /* 313 */ -#endif -#ifndef Tcl_RestoreResult -#define Tcl_RestoreResult \ - (tclStubsPtr->tcl_RestoreResult) /* 314 */ -#endif -#ifndef Tcl_SaveResult -#define Tcl_SaveResult \ - (tclStubsPtr->tcl_SaveResult) /* 315 */ -#endif -#ifndef Tcl_SetSystemEncoding -#define Tcl_SetSystemEncoding \ - (tclStubsPtr->tcl_SetSystemEncoding) /* 316 */ -#endif -#ifndef Tcl_SetVar2Ex -#define Tcl_SetVar2Ex \ - (tclStubsPtr->tcl_SetVar2Ex) /* 317 */ -#endif -#ifndef Tcl_ThreadAlert -#define Tcl_ThreadAlert \ - (tclStubsPtr->tcl_ThreadAlert) /* 318 */ -#endif -#ifndef Tcl_ThreadQueueEvent -#define Tcl_ThreadQueueEvent \ - (tclStubsPtr->tcl_ThreadQueueEvent) /* 319 */ -#endif -#ifndef Tcl_UniCharAtIndex -#define Tcl_UniCharAtIndex \ - (tclStubsPtr->tcl_UniCharAtIndex) /* 320 */ -#endif -#ifndef Tcl_UniCharToLower -#define Tcl_UniCharToLower \ - (tclStubsPtr->tcl_UniCharToLower) /* 321 */ -#endif -#ifndef Tcl_UniCharToTitle -#define Tcl_UniCharToTitle \ - (tclStubsPtr->tcl_UniCharToTitle) /* 322 */ -#endif -#ifndef Tcl_UniCharToUpper -#define Tcl_UniCharToUpper \ - (tclStubsPtr->tcl_UniCharToUpper) /* 323 */ -#endif -#ifndef Tcl_UniCharToUtf -#define Tcl_UniCharToUtf \ - (tclStubsPtr->tcl_UniCharToUtf) /* 324 */ -#endif -#ifndef Tcl_UtfAtIndex -#define Tcl_UtfAtIndex \ - (tclStubsPtr->tcl_UtfAtIndex) /* 325 */ -#endif -#ifndef Tcl_UtfCharComplete -#define Tcl_UtfCharComplete \ - (tclStubsPtr->tcl_UtfCharComplete) /* 326 */ -#endif -#ifndef Tcl_UtfBackslash -#define Tcl_UtfBackslash \ - (tclStubsPtr->tcl_UtfBackslash) /* 327 */ -#endif -#ifndef Tcl_UtfFindFirst -#define Tcl_UtfFindFirst \ - (tclStubsPtr->tcl_UtfFindFirst) /* 328 */ -#endif -#ifndef Tcl_UtfFindLast -#define Tcl_UtfFindLast \ - (tclStubsPtr->tcl_UtfFindLast) /* 329 */ -#endif -#ifndef Tcl_UtfNext -#define Tcl_UtfNext \ - (tclStubsPtr->tcl_UtfNext) /* 330 */ -#endif -#ifndef Tcl_UtfPrev -#define Tcl_UtfPrev \ - (tclStubsPtr->tcl_UtfPrev) /* 331 */ -#endif -#ifndef Tcl_UtfToExternal -#define Tcl_UtfToExternal \ - (tclStubsPtr->tcl_UtfToExternal) /* 332 */ -#endif -#ifndef Tcl_UtfToExternalDString -#define Tcl_UtfToExternalDString \ - (tclStubsPtr->tcl_UtfToExternalDString) /* 333 */ -#endif -#ifndef Tcl_UtfToLower -#define Tcl_UtfToLower \ - (tclStubsPtr->tcl_UtfToLower) /* 334 */ -#endif -#ifndef Tcl_UtfToTitle -#define Tcl_UtfToTitle \ - (tclStubsPtr->tcl_UtfToTitle) /* 335 */ -#endif -#ifndef Tcl_UtfToUniChar -#define Tcl_UtfToUniChar \ - (tclStubsPtr->tcl_UtfToUniChar) /* 336 */ -#endif -#ifndef Tcl_UtfToUpper -#define Tcl_UtfToUpper \ - (tclStubsPtr->tcl_UtfToUpper) /* 337 */ -#endif -#ifndef Tcl_WriteChars -#define Tcl_WriteChars \ - (tclStubsPtr->tcl_WriteChars) /* 338 */ -#endif -#ifndef Tcl_WriteObj -#define Tcl_WriteObj \ - (tclStubsPtr->tcl_WriteObj) /* 339 */ -#endif -#ifndef Tcl_GetString -#define Tcl_GetString \ - (tclStubsPtr->tcl_GetString) /* 340 */ -#endif -#ifndef Tcl_GetDefaultEncodingDir -#define Tcl_GetDefaultEncodingDir \ - (tclStubsPtr->tcl_GetDefaultEncodingDir) /* 341 */ -#endif -#ifndef Tcl_SetDefaultEncodingDir -#define Tcl_SetDefaultEncodingDir \ - (tclStubsPtr->tcl_SetDefaultEncodingDir) /* 342 */ -#endif -#ifndef Tcl_AlertNotifier -#define Tcl_AlertNotifier \ - (tclStubsPtr->tcl_AlertNotifier) /* 343 */ -#endif -#ifndef Tcl_ServiceModeHook -#define Tcl_ServiceModeHook \ - (tclStubsPtr->tcl_ServiceModeHook) /* 344 */ -#endif -#ifndef Tcl_UniCharIsAlnum -#define Tcl_UniCharIsAlnum \ - (tclStubsPtr->tcl_UniCharIsAlnum) /* 345 */ -#endif -#ifndef Tcl_UniCharIsAlpha -#define Tcl_UniCharIsAlpha \ - (tclStubsPtr->tcl_UniCharIsAlpha) /* 346 */ -#endif -#ifndef Tcl_UniCharIsDigit -#define Tcl_UniCharIsDigit \ - (tclStubsPtr->tcl_UniCharIsDigit) /* 347 */ -#endif -#ifndef Tcl_UniCharIsLower -#define Tcl_UniCharIsLower \ - (tclStubsPtr->tcl_UniCharIsLower) /* 348 */ -#endif -#ifndef Tcl_UniCharIsSpace -#define Tcl_UniCharIsSpace \ - (tclStubsPtr->tcl_UniCharIsSpace) /* 349 */ -#endif -#ifndef Tcl_UniCharIsUpper -#define Tcl_UniCharIsUpper \ - (tclStubsPtr->tcl_UniCharIsUpper) /* 350 */ -#endif -#ifndef Tcl_UniCharIsWordChar -#define Tcl_UniCharIsWordChar \ - (tclStubsPtr->tcl_UniCharIsWordChar) /* 351 */ -#endif -#ifndef Tcl_UniCharLen -#define Tcl_UniCharLen \ - (tclStubsPtr->tcl_UniCharLen) /* 352 */ -#endif -#ifndef Tcl_UniCharNcmp -#define Tcl_UniCharNcmp \ - (tclStubsPtr->tcl_UniCharNcmp) /* 353 */ -#endif -#ifndef Tcl_UniCharToUtfDString -#define Tcl_UniCharToUtfDString \ - (tclStubsPtr->tcl_UniCharToUtfDString) /* 354 */ -#endif -#ifndef Tcl_UtfToUniCharDString -#define Tcl_UtfToUniCharDString \ - (tclStubsPtr->tcl_UtfToUniCharDString) /* 355 */ -#endif -#ifndef Tcl_GetRegExpFromObj -#define Tcl_GetRegExpFromObj \ - (tclStubsPtr->tcl_GetRegExpFromObj) /* 356 */ -#endif -#ifndef Tcl_EvalTokens -#define Tcl_EvalTokens \ - (tclStubsPtr->tcl_EvalTokens) /* 357 */ -#endif -#ifndef Tcl_FreeParse -#define Tcl_FreeParse \ - (tclStubsPtr->tcl_FreeParse) /* 358 */ -#endif -#ifndef Tcl_LogCommandInfo -#define Tcl_LogCommandInfo \ - (tclStubsPtr->tcl_LogCommandInfo) /* 359 */ -#endif -#ifndef Tcl_ParseBraces -#define Tcl_ParseBraces \ - (tclStubsPtr->tcl_ParseBraces) /* 360 */ -#endif -#ifndef Tcl_ParseCommand -#define Tcl_ParseCommand \ - (tclStubsPtr->tcl_ParseCommand) /* 361 */ -#endif -#ifndef Tcl_ParseExpr -#define Tcl_ParseExpr \ - (tclStubsPtr->tcl_ParseExpr) /* 362 */ -#endif -#ifndef Tcl_ParseQuotedString -#define Tcl_ParseQuotedString \ - (tclStubsPtr->tcl_ParseQuotedString) /* 363 */ -#endif -#ifndef Tcl_ParseVarName -#define Tcl_ParseVarName \ - (tclStubsPtr->tcl_ParseVarName) /* 364 */ -#endif -#ifndef Tcl_GetCwd -#define Tcl_GetCwd \ - (tclStubsPtr->tcl_GetCwd) /* 365 */ -#endif -#ifndef Tcl_Chdir -#define Tcl_Chdir \ - (tclStubsPtr->tcl_Chdir) /* 366 */ -#endif -#ifndef Tcl_Access -#define Tcl_Access \ - (tclStubsPtr->tcl_Access) /* 367 */ -#endif -#ifndef Tcl_Stat -#define Tcl_Stat \ - (tclStubsPtr->tcl_Stat) /* 368 */ -#endif -#ifndef Tcl_UtfNcmp -#define Tcl_UtfNcmp \ - (tclStubsPtr->tcl_UtfNcmp) /* 369 */ -#endif -#ifndef Tcl_UtfNcasecmp -#define Tcl_UtfNcasecmp \ - (tclStubsPtr->tcl_UtfNcasecmp) /* 370 */ -#endif -#ifndef Tcl_StringCaseMatch -#define Tcl_StringCaseMatch \ - (tclStubsPtr->tcl_StringCaseMatch) /* 371 */ -#endif -#ifndef Tcl_UniCharIsControl -#define Tcl_UniCharIsControl \ - (tclStubsPtr->tcl_UniCharIsControl) /* 372 */ -#endif -#ifndef Tcl_UniCharIsGraph -#define Tcl_UniCharIsGraph \ - (tclStubsPtr->tcl_UniCharIsGraph) /* 373 */ -#endif -#ifndef Tcl_UniCharIsPrint -#define Tcl_UniCharIsPrint \ - (tclStubsPtr->tcl_UniCharIsPrint) /* 374 */ -#endif -#ifndef Tcl_UniCharIsPunct -#define Tcl_UniCharIsPunct \ - (tclStubsPtr->tcl_UniCharIsPunct) /* 375 */ -#endif -#ifndef Tcl_RegExpExecObj -#define Tcl_RegExpExecObj \ - (tclStubsPtr->tcl_RegExpExecObj) /* 376 */ -#endif -#ifndef Tcl_RegExpGetInfo -#define Tcl_RegExpGetInfo \ - (tclStubsPtr->tcl_RegExpGetInfo) /* 377 */ -#endif -#ifndef Tcl_NewUnicodeObj -#define Tcl_NewUnicodeObj \ - (tclStubsPtr->tcl_NewUnicodeObj) /* 378 */ -#endif -#ifndef Tcl_SetUnicodeObj -#define Tcl_SetUnicodeObj \ - (tclStubsPtr->tcl_SetUnicodeObj) /* 379 */ -#endif -#ifndef Tcl_GetCharLength -#define Tcl_GetCharLength \ - (tclStubsPtr->tcl_GetCharLength) /* 380 */ -#endif -#ifndef Tcl_GetUniChar -#define Tcl_GetUniChar \ - (tclStubsPtr->tcl_GetUniChar) /* 381 */ -#endif -#ifndef Tcl_GetUnicode -#define Tcl_GetUnicode \ - (tclStubsPtr->tcl_GetUnicode) /* 382 */ -#endif -#ifndef Tcl_GetRange -#define Tcl_GetRange \ - (tclStubsPtr->tcl_GetRange) /* 383 */ -#endif -#ifndef Tcl_AppendUnicodeToObj -#define Tcl_AppendUnicodeToObj \ - (tclStubsPtr->tcl_AppendUnicodeToObj) /* 384 */ -#endif -#ifndef Tcl_RegExpMatchObj -#define Tcl_RegExpMatchObj \ - (tclStubsPtr->tcl_RegExpMatchObj) /* 385 */ -#endif -#ifndef Tcl_SetNotifier -#define Tcl_SetNotifier \ - (tclStubsPtr->tcl_SetNotifier) /* 386 */ -#endif -#ifndef Tcl_GetAllocMutex -#define Tcl_GetAllocMutex \ - (tclStubsPtr->tcl_GetAllocMutex) /* 387 */ -#endif -#ifndef Tcl_GetChannelNames -#define Tcl_GetChannelNames \ - (tclStubsPtr->tcl_GetChannelNames) /* 388 */ -#endif -#ifndef Tcl_GetChannelNamesEx -#define Tcl_GetChannelNamesEx \ - (tclStubsPtr->tcl_GetChannelNamesEx) /* 389 */ -#endif -#ifndef Tcl_ProcObjCmd -#define Tcl_ProcObjCmd \ - (tclStubsPtr->tcl_ProcObjCmd) /* 390 */ -#endif -#ifndef Tcl_ConditionFinalize -#define Tcl_ConditionFinalize \ - (tclStubsPtr->tcl_ConditionFinalize) /* 391 */ -#endif -#ifndef Tcl_MutexFinalize -#define Tcl_MutexFinalize \ - (tclStubsPtr->tcl_MutexFinalize) /* 392 */ -#endif -#ifndef Tcl_CreateThread -#define Tcl_CreateThread \ - (tclStubsPtr->tcl_CreateThread) /* 393 */ -#endif -#ifndef Tcl_ReadRaw -#define Tcl_ReadRaw \ - (tclStubsPtr->tcl_ReadRaw) /* 394 */ -#endif -#ifndef Tcl_WriteRaw -#define Tcl_WriteRaw \ - (tclStubsPtr->tcl_WriteRaw) /* 395 */ -#endif -#ifndef Tcl_GetTopChannel -#define Tcl_GetTopChannel \ - (tclStubsPtr->tcl_GetTopChannel) /* 396 */ -#endif -#ifndef Tcl_ChannelBuffered -#define Tcl_ChannelBuffered \ - (tclStubsPtr->tcl_ChannelBuffered) /* 397 */ -#endif -#ifndef Tcl_ChannelName -#define Tcl_ChannelName \ - (tclStubsPtr->tcl_ChannelName) /* 398 */ -#endif -#ifndef Tcl_ChannelVersion -#define Tcl_ChannelVersion \ - (tclStubsPtr->tcl_ChannelVersion) /* 399 */ -#endif -#ifndef Tcl_ChannelBlockModeProc -#define Tcl_ChannelBlockModeProc \ - (tclStubsPtr->tcl_ChannelBlockModeProc) /* 400 */ -#endif -#ifndef Tcl_ChannelCloseProc -#define Tcl_ChannelCloseProc \ - (tclStubsPtr->tcl_ChannelCloseProc) /* 401 */ -#endif -#ifndef Tcl_ChannelClose2Proc -#define Tcl_ChannelClose2Proc \ - (tclStubsPtr->tcl_ChannelClose2Proc) /* 402 */ -#endif -#ifndef Tcl_ChannelInputProc -#define Tcl_ChannelInputProc \ - (tclStubsPtr->tcl_ChannelInputProc) /* 403 */ -#endif -#ifndef Tcl_ChannelOutputProc -#define Tcl_ChannelOutputProc \ - (tclStubsPtr->tcl_ChannelOutputProc) /* 404 */ -#endif -#ifndef Tcl_ChannelSeekProc -#define Tcl_ChannelSeekProc \ - (tclStubsPtr->tcl_ChannelSeekProc) /* 405 */ -#endif -#ifndef Tcl_ChannelSetOptionProc -#define Tcl_ChannelSetOptionProc \ - (tclStubsPtr->tcl_ChannelSetOptionProc) /* 406 */ -#endif -#ifndef Tcl_ChannelGetOptionProc -#define Tcl_ChannelGetOptionProc \ - (tclStubsPtr->tcl_ChannelGetOptionProc) /* 407 */ -#endif -#ifndef Tcl_ChannelWatchProc -#define Tcl_ChannelWatchProc \ - (tclStubsPtr->tcl_ChannelWatchProc) /* 408 */ -#endif -#ifndef Tcl_ChannelGetHandleProc -#define Tcl_ChannelGetHandleProc \ - (tclStubsPtr->tcl_ChannelGetHandleProc) /* 409 */ -#endif -#ifndef Tcl_ChannelFlushProc -#define Tcl_ChannelFlushProc \ - (tclStubsPtr->tcl_ChannelFlushProc) /* 410 */ -#endif -#ifndef Tcl_ChannelHandlerProc -#define Tcl_ChannelHandlerProc \ - (tclStubsPtr->tcl_ChannelHandlerProc) /* 411 */ -#endif -#ifndef Tcl_JoinThread -#define Tcl_JoinThread \ - (tclStubsPtr->tcl_JoinThread) /* 412 */ -#endif -#ifndef Tcl_IsChannelShared -#define Tcl_IsChannelShared \ - (tclStubsPtr->tcl_IsChannelShared) /* 413 */ -#endif -#ifndef Tcl_IsChannelRegistered -#define Tcl_IsChannelRegistered \ - (tclStubsPtr->tcl_IsChannelRegistered) /* 414 */ -#endif -#ifndef Tcl_CutChannel -#define Tcl_CutChannel \ - (tclStubsPtr->tcl_CutChannel) /* 415 */ -#endif -#ifndef Tcl_SpliceChannel -#define Tcl_SpliceChannel \ - (tclStubsPtr->tcl_SpliceChannel) /* 416 */ -#endif -#ifndef Tcl_ClearChannelHandlers -#define Tcl_ClearChannelHandlers \ - (tclStubsPtr->tcl_ClearChannelHandlers) /* 417 */ -#endif -#ifndef Tcl_IsChannelExisting -#define Tcl_IsChannelExisting \ - (tclStubsPtr->tcl_IsChannelExisting) /* 418 */ -#endif -#ifndef Tcl_UniCharNcasecmp -#define Tcl_UniCharNcasecmp \ - (tclStubsPtr->tcl_UniCharNcasecmp) /* 419 */ -#endif -#ifndef Tcl_UniCharCaseMatch -#define Tcl_UniCharCaseMatch \ - (tclStubsPtr->tcl_UniCharCaseMatch) /* 420 */ -#endif -#ifndef Tcl_FindHashEntry -#define Tcl_FindHashEntry \ - (tclStubsPtr->tcl_FindHashEntry) /* 421 */ -#endif -#ifndef Tcl_CreateHashEntry -#define Tcl_CreateHashEntry \ - (tclStubsPtr->tcl_CreateHashEntry) /* 422 */ -#endif -#ifndef Tcl_InitCustomHashTable -#define Tcl_InitCustomHashTable \ - (tclStubsPtr->tcl_InitCustomHashTable) /* 423 */ -#endif -#ifndef Tcl_InitObjHashTable -#define Tcl_InitObjHashTable \ - (tclStubsPtr->tcl_InitObjHashTable) /* 424 */ -#endif -#ifndef Tcl_CommandTraceInfo -#define Tcl_CommandTraceInfo \ - (tclStubsPtr->tcl_CommandTraceInfo) /* 425 */ -#endif -#ifndef Tcl_TraceCommand -#define Tcl_TraceCommand \ - (tclStubsPtr->tcl_TraceCommand) /* 426 */ -#endif -#ifndef Tcl_UntraceCommand -#define Tcl_UntraceCommand \ - (tclStubsPtr->tcl_UntraceCommand) /* 427 */ -#endif -#ifndef Tcl_AttemptAlloc -#define Tcl_AttemptAlloc \ - (tclStubsPtr->tcl_AttemptAlloc) /* 428 */ -#endif -#ifndef Tcl_AttemptDbCkalloc -#define Tcl_AttemptDbCkalloc \ - (tclStubsPtr->tcl_AttemptDbCkalloc) /* 429 */ -#endif -#ifndef Tcl_AttemptRealloc -#define Tcl_AttemptRealloc \ - (tclStubsPtr->tcl_AttemptRealloc) /* 430 */ -#endif -#ifndef Tcl_AttemptDbCkrealloc -#define Tcl_AttemptDbCkrealloc \ - (tclStubsPtr->tcl_AttemptDbCkrealloc) /* 431 */ -#endif -#ifndef Tcl_AttemptSetObjLength -#define Tcl_AttemptSetObjLength \ - (tclStubsPtr->tcl_AttemptSetObjLength) /* 432 */ -#endif -#ifndef Tcl_GetChannelThread -#define Tcl_GetChannelThread \ - (tclStubsPtr->tcl_GetChannelThread) /* 433 */ -#endif -#ifndef Tcl_GetUnicodeFromObj -#define Tcl_GetUnicodeFromObj \ - (tclStubsPtr->tcl_GetUnicodeFromObj) /* 434 */ -#endif -#ifndef Tcl_GetMathFuncInfo -#define Tcl_GetMathFuncInfo \ - (tclStubsPtr->tcl_GetMathFuncInfo) /* 435 */ -#endif -#ifndef Tcl_ListMathFuncs -#define Tcl_ListMathFuncs \ - (tclStubsPtr->tcl_ListMathFuncs) /* 436 */ -#endif -#ifndef Tcl_SubstObj -#define Tcl_SubstObj \ - (tclStubsPtr->tcl_SubstObj) /* 437 */ -#endif -#ifndef Tcl_DetachChannel -#define Tcl_DetachChannel \ - (tclStubsPtr->tcl_DetachChannel) /* 438 */ -#endif -#ifndef Tcl_IsStandardChannel -#define Tcl_IsStandardChannel \ - (tclStubsPtr->tcl_IsStandardChannel) /* 439 */ -#endif -#ifndef Tcl_FSCopyFile -#define Tcl_FSCopyFile \ - (tclStubsPtr->tcl_FSCopyFile) /* 440 */ -#endif -#ifndef Tcl_FSCopyDirectory -#define Tcl_FSCopyDirectory \ - (tclStubsPtr->tcl_FSCopyDirectory) /* 441 */ -#endif -#ifndef Tcl_FSCreateDirectory -#define Tcl_FSCreateDirectory \ - (tclStubsPtr->tcl_FSCreateDirectory) /* 442 */ -#endif -#ifndef Tcl_FSDeleteFile -#define Tcl_FSDeleteFile \ - (tclStubsPtr->tcl_FSDeleteFile) /* 443 */ -#endif -#ifndef Tcl_FSLoadFile -#define Tcl_FSLoadFile \ - (tclStubsPtr->tcl_FSLoadFile) /* 444 */ -#endif -#ifndef Tcl_FSMatchInDirectory -#define Tcl_FSMatchInDirectory \ - (tclStubsPtr->tcl_FSMatchInDirectory) /* 445 */ -#endif -#ifndef Tcl_FSLink -#define Tcl_FSLink \ - (tclStubsPtr->tcl_FSLink) /* 446 */ -#endif -#ifndef Tcl_FSRemoveDirectory -#define Tcl_FSRemoveDirectory \ - (tclStubsPtr->tcl_FSRemoveDirectory) /* 447 */ -#endif -#ifndef Tcl_FSRenameFile -#define Tcl_FSRenameFile \ - (tclStubsPtr->tcl_FSRenameFile) /* 448 */ -#endif -#ifndef Tcl_FSLstat -#define Tcl_FSLstat \ - (tclStubsPtr->tcl_FSLstat) /* 449 */ -#endif -#ifndef Tcl_FSUtime -#define Tcl_FSUtime \ - (tclStubsPtr->tcl_FSUtime) /* 450 */ -#endif -#ifndef Tcl_FSFileAttrsGet -#define Tcl_FSFileAttrsGet \ - (tclStubsPtr->tcl_FSFileAttrsGet) /* 451 */ -#endif -#ifndef Tcl_FSFileAttrsSet -#define Tcl_FSFileAttrsSet \ - (tclStubsPtr->tcl_FSFileAttrsSet) /* 452 */ -#endif -#ifndef Tcl_FSFileAttrStrings -#define Tcl_FSFileAttrStrings \ - (tclStubsPtr->tcl_FSFileAttrStrings) /* 453 */ -#endif -#ifndef Tcl_FSStat -#define Tcl_FSStat \ - (tclStubsPtr->tcl_FSStat) /* 454 */ -#endif -#ifndef Tcl_FSAccess -#define Tcl_FSAccess \ - (tclStubsPtr->tcl_FSAccess) /* 455 */ -#endif -#ifndef Tcl_FSOpenFileChannel -#define Tcl_FSOpenFileChannel \ - (tclStubsPtr->tcl_FSOpenFileChannel) /* 456 */ -#endif -#ifndef Tcl_FSGetCwd -#define Tcl_FSGetCwd \ - (tclStubsPtr->tcl_FSGetCwd) /* 457 */ -#endif -#ifndef Tcl_FSChdir -#define Tcl_FSChdir \ - (tclStubsPtr->tcl_FSChdir) /* 458 */ -#endif -#ifndef Tcl_FSConvertToPathType -#define Tcl_FSConvertToPathType \ - (tclStubsPtr->tcl_FSConvertToPathType) /* 459 */ -#endif -#ifndef Tcl_FSJoinPath -#define Tcl_FSJoinPath \ - (tclStubsPtr->tcl_FSJoinPath) /* 460 */ -#endif -#ifndef Tcl_FSSplitPath -#define Tcl_FSSplitPath \ - (tclStubsPtr->tcl_FSSplitPath) /* 461 */ -#endif -#ifndef Tcl_FSEqualPaths -#define Tcl_FSEqualPaths \ - (tclStubsPtr->tcl_FSEqualPaths) /* 462 */ -#endif -#ifndef Tcl_FSGetNormalizedPath -#define Tcl_FSGetNormalizedPath \ - (tclStubsPtr->tcl_FSGetNormalizedPath) /* 463 */ -#endif -#ifndef Tcl_FSJoinToPath -#define Tcl_FSJoinToPath \ - (tclStubsPtr->tcl_FSJoinToPath) /* 464 */ -#endif -#ifndef Tcl_FSGetInternalRep -#define Tcl_FSGetInternalRep \ - (tclStubsPtr->tcl_FSGetInternalRep) /* 465 */ -#endif -#ifndef Tcl_FSGetTranslatedPath -#define Tcl_FSGetTranslatedPath \ - (tclStubsPtr->tcl_FSGetTranslatedPath) /* 466 */ -#endif -#ifndef Tcl_FSEvalFile -#define Tcl_FSEvalFile \ - (tclStubsPtr->tcl_FSEvalFile) /* 467 */ -#endif -#ifndef Tcl_FSNewNativePath -#define Tcl_FSNewNativePath \ - (tclStubsPtr->tcl_FSNewNativePath) /* 468 */ -#endif -#ifndef Tcl_FSGetNativePath -#define Tcl_FSGetNativePath \ - (tclStubsPtr->tcl_FSGetNativePath) /* 469 */ -#endif -#ifndef Tcl_FSFileSystemInfo -#define Tcl_FSFileSystemInfo \ - (tclStubsPtr->tcl_FSFileSystemInfo) /* 470 */ -#endif -#ifndef Tcl_FSPathSeparator -#define Tcl_FSPathSeparator \ - (tclStubsPtr->tcl_FSPathSeparator) /* 471 */ -#endif -#ifndef Tcl_FSListVolumes -#define Tcl_FSListVolumes \ - (tclStubsPtr->tcl_FSListVolumes) /* 472 */ -#endif -#ifndef Tcl_FSRegister -#define Tcl_FSRegister \ - (tclStubsPtr->tcl_FSRegister) /* 473 */ -#endif -#ifndef Tcl_FSUnregister -#define Tcl_FSUnregister \ - (tclStubsPtr->tcl_FSUnregister) /* 474 */ -#endif -#ifndef Tcl_FSData -#define Tcl_FSData \ - (tclStubsPtr->tcl_FSData) /* 475 */ -#endif -#ifndef Tcl_FSGetTranslatedStringPath -#define Tcl_FSGetTranslatedStringPath \ - (tclStubsPtr->tcl_FSGetTranslatedStringPath) /* 476 */ -#endif -#ifndef Tcl_FSGetFileSystemForPath -#define Tcl_FSGetFileSystemForPath \ - (tclStubsPtr->tcl_FSGetFileSystemForPath) /* 477 */ -#endif -#ifndef Tcl_FSGetPathType -#define Tcl_FSGetPathType \ - (tclStubsPtr->tcl_FSGetPathType) /* 478 */ -#endif -#ifndef Tcl_OutputBuffered -#define Tcl_OutputBuffered \ - (tclStubsPtr->tcl_OutputBuffered) /* 479 */ -#endif -#ifndef Tcl_FSMountsChanged -#define Tcl_FSMountsChanged \ - (tclStubsPtr->tcl_FSMountsChanged) /* 480 */ -#endif -#ifndef Tcl_EvalTokensStandard -#define Tcl_EvalTokensStandard \ - (tclStubsPtr->tcl_EvalTokensStandard) /* 481 */ -#endif -#ifndef Tcl_GetTime -#define Tcl_GetTime \ - (tclStubsPtr->tcl_GetTime) /* 482 */ -#endif -#ifndef Tcl_CreateObjTrace -#define Tcl_CreateObjTrace \ - (tclStubsPtr->tcl_CreateObjTrace) /* 483 */ -#endif -#ifndef Tcl_GetCommandInfoFromToken -#define Tcl_GetCommandInfoFromToken \ - (tclStubsPtr->tcl_GetCommandInfoFromToken) /* 484 */ -#endif -#ifndef Tcl_SetCommandInfoFromToken -#define Tcl_SetCommandInfoFromToken \ - (tclStubsPtr->tcl_SetCommandInfoFromToken) /* 485 */ -#endif -#ifndef Tcl_DbNewWideIntObj -#define Tcl_DbNewWideIntObj \ - (tclStubsPtr->tcl_DbNewWideIntObj) /* 486 */ -#endif -#ifndef Tcl_GetWideIntFromObj -#define Tcl_GetWideIntFromObj \ - (tclStubsPtr->tcl_GetWideIntFromObj) /* 487 */ -#endif -#ifndef Tcl_NewWideIntObj -#define Tcl_NewWideIntObj \ - (tclStubsPtr->tcl_NewWideIntObj) /* 488 */ -#endif -#ifndef Tcl_SetWideIntObj -#define Tcl_SetWideIntObj \ - (tclStubsPtr->tcl_SetWideIntObj) /* 489 */ -#endif -#ifndef Tcl_AllocStatBuf -#define Tcl_AllocStatBuf \ - (tclStubsPtr->tcl_AllocStatBuf) /* 490 */ -#endif -#ifndef Tcl_Seek -#define Tcl_Seek \ - (tclStubsPtr->tcl_Seek) /* 491 */ -#endif -#ifndef Tcl_Tell -#define Tcl_Tell \ - (tclStubsPtr->tcl_Tell) /* 492 */ -#endif -#ifndef Tcl_ChannelWideSeekProc -#define Tcl_ChannelWideSeekProc \ - (tclStubsPtr->tcl_ChannelWideSeekProc) /* 493 */ -#endif - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLDECLS */ - +/* + * tclDecls.h -- + * + * Declarations of functions in the platform independent public Tcl API. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclDecls.h,v 1.93.2.5 2004/06/10 17:17:42 andreas_kupries Exp $ + */ + +#ifndef _TCLDECLS +#define _TCLDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tcl.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +/* 0 */ +EXTERN int Tcl_PkgProvideEx _ANSI_ARGS_((Tcl_Interp* interp, + CONST char* name, CONST char* version, + ClientData clientData)); +/* 1 */ +EXTERN CONST84_RETURN char * Tcl_PkgRequireEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + CONST char * version, int exact, + ClientData * clientDataPtr)); +/* 2 */ +EXTERN void Tcl_Panic _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); +/* 3 */ +EXTERN char * Tcl_Alloc _ANSI_ARGS_((unsigned int size)); +/* 4 */ +EXTERN void Tcl_Free _ANSI_ARGS_((char * ptr)); +/* 5 */ +EXTERN char * Tcl_Realloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* 6 */ +EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, + CONST char * file, int line)); +/* 7 */ +EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char * ptr, + CONST char * file, int line)); +/* 8 */ +EXTERN char * Tcl_DbCkrealloc _ANSI_ARGS_((char * ptr, + unsigned int size, CONST char * file, + int line)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 9 */ +EXTERN void Tcl_CreateFileHandler _ANSI_ARGS_((int fd, int mask, + Tcl_FileProc * proc, ClientData clientData)); +#endif /* UNIX */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 10 */ +EXTERN void Tcl_DeleteFileHandler _ANSI_ARGS_((int fd)); +#endif /* UNIX */ +/* 11 */ +EXTERN void Tcl_SetTimer _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 12 */ +EXTERN void Tcl_Sleep _ANSI_ARGS_((int ms)); +/* 13 */ +EXTERN int Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 14 */ +EXTERN int Tcl_AppendAllObjTypes _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr)); +/* 15 */ +EXTERN void Tcl_AppendStringsToObj _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); +/* 16 */ +EXTERN void Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj* objPtr, + CONST char* bytes, int length)); +/* 17 */ +EXTERN Tcl_Obj * Tcl_ConcatObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST objv[])); +/* 18 */ +EXTERN int Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); +/* 19 */ +EXTERN void Tcl_DbDecrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 20 */ +EXTERN void Tcl_DbIncrRefCount _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 21 */ +EXTERN int Tcl_DbIsShared _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST char * file, int line)); +/* 22 */ +EXTERN Tcl_Obj * Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue, + CONST char * file, int line)); +/* 23 */ +EXTERN Tcl_Obj * Tcl_DbNewByteArrayObj _ANSI_ARGS_(( + CONST unsigned char * bytes, int length, + CONST char * file, int line)); +/* 24 */ +EXTERN Tcl_Obj * Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue, + CONST char * file, int line)); +/* 25 */ +EXTERN Tcl_Obj * Tcl_DbNewListObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST * objv, CONST char * file, + int line)); +/* 26 */ +EXTERN Tcl_Obj * Tcl_DbNewLongObj _ANSI_ARGS_((long longValue, + CONST char * file, int line)); +/* 27 */ +EXTERN Tcl_Obj * Tcl_DbNewObj _ANSI_ARGS_((CONST char * file, + int line)); +/* 28 */ +EXTERN Tcl_Obj * Tcl_DbNewStringObj _ANSI_ARGS_((CONST char * bytes, + int length, CONST char * file, int line)); +/* 29 */ +EXTERN Tcl_Obj * Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 30 */ +EXTERN void TclFreeObj _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 31 */ +EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * boolPtr)); +/* 32 */ +EXTERN int Tcl_GetBooleanFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + int * boolPtr)); +/* 33 */ +EXTERN unsigned char * Tcl_GetByteArrayFromObj _ANSI_ARGS_(( + Tcl_Obj * objPtr, int * lengthPtr)); +/* 34 */ +EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, double * doublePtr)); +/* 35 */ +EXTERN int Tcl_GetDoubleFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + double * doublePtr)); +/* 36 */ +EXTERN int Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, CONST84 char ** tablePtr, + CONST char * msg, int flags, int * indexPtr)); +/* 37 */ +EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * intPtr)); +/* 38 */ +EXTERN int Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int * intPtr)); +/* 39 */ +EXTERN int Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, long * longPtr)); +/* 40 */ +EXTERN Tcl_ObjType * Tcl_GetObjType _ANSI_ARGS_((CONST char * typeName)); +/* 41 */ +EXTERN char * Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int * lengthPtr)); +/* 42 */ +EXTERN void Tcl_InvalidateStringRep _ANSI_ARGS_(( + Tcl_Obj * objPtr)); +/* 43 */ +EXTERN int Tcl_ListObjAppendList _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + Tcl_Obj * elemListPtr)); +/* 44 */ +EXTERN int Tcl_ListObjAppendElement _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + Tcl_Obj * objPtr)); +/* 45 */ +EXTERN int Tcl_ListObjGetElements _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + int * objcPtr, Tcl_Obj *** objvPtr)); +/* 46 */ +EXTERN int Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int index, + Tcl_Obj ** objPtrPtr)); +/* 47 */ +EXTERN int Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int * lengthPtr)); +/* 48 */ +EXTERN int Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * listPtr, int first, int count, + int objc, Tcl_Obj *CONST objv[])); +/* 49 */ +EXTERN Tcl_Obj * Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue)); +/* 50 */ +EXTERN Tcl_Obj * Tcl_NewByteArrayObj _ANSI_ARGS_(( + CONST unsigned char* bytes, int length)); +/* 51 */ +EXTERN Tcl_Obj * Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue)); +/* 52 */ +EXTERN Tcl_Obj * Tcl_NewIntObj _ANSI_ARGS_((int intValue)); +/* 53 */ +EXTERN Tcl_Obj * Tcl_NewListObj _ANSI_ARGS_((int objc, + Tcl_Obj *CONST objv[])); +/* 54 */ +EXTERN Tcl_Obj * Tcl_NewLongObj _ANSI_ARGS_((long longValue)); +/* 55 */ +EXTERN Tcl_Obj * Tcl_NewObj _ANSI_ARGS_((void)); +/* 56 */ +EXTERN Tcl_Obj * Tcl_NewStringObj _ANSI_ARGS_((CONST char * bytes, + int length)); +/* 57 */ +EXTERN void Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int boolValue)); +/* 58 */ +EXTERN unsigned char * Tcl_SetByteArrayLength _ANSI_ARGS_((Tcl_Obj * objPtr, + int length)); +/* 59 */ +EXTERN void Tcl_SetByteArrayObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST unsigned char * bytes, int length)); +/* 60 */ +EXTERN void Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj * objPtr, + double doubleValue)); +/* 61 */ +EXTERN void Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int intValue)); +/* 62 */ +EXTERN void Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int objc, Tcl_Obj *CONST objv[])); +/* 63 */ +EXTERN void Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj * objPtr, + long longValue)); +/* 64 */ +EXTERN void Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj * objPtr, + int length)); +/* 65 */ +EXTERN void Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj* objPtr, + CONST char* bytes, int length)); +/* 66 */ +EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * message)); +/* 67 */ +EXTERN void Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * message, int length)); +/* 68 */ +EXTERN void Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp * interp)); +/* 69 */ +EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 70 */ +EXTERN void Tcl_AppendResult _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 71 */ +EXTERN Tcl_AsyncHandler Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc * proc, + ClientData clientData)); +/* 72 */ +EXTERN void Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async)); +/* 73 */ +EXTERN int Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int code)); +/* 74 */ +EXTERN void Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async)); +/* 75 */ +EXTERN int Tcl_AsyncReady _ANSI_ARGS_((void)); +/* 76 */ +EXTERN void Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp * interp)); +/* 77 */ +EXTERN char Tcl_Backslash _ANSI_ARGS_((CONST char * src, + int * readPtr)); +/* 78 */ +EXTERN int Tcl_BadChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * optionName, + CONST char * optionList)); +/* 79 */ +EXTERN void Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 80 */ +EXTERN void Tcl_CancelIdleCall _ANSI_ARGS_(( + Tcl_IdleProc * idleProc, + ClientData clientData)); +/* 81 */ +EXTERN int Tcl_Close _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 82 */ +EXTERN int Tcl_CommandComplete _ANSI_ARGS_((CONST char * cmd)); +/* 83 */ +EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv)); +/* 84 */ +EXTERN int Tcl_ConvertElement _ANSI_ARGS_((CONST char * src, + char * dst, int flags)); +/* 85 */ +EXTERN int Tcl_ConvertCountedElement _ANSI_ARGS_(( + CONST char * src, int length, char * dst, + int flags)); +/* 86 */ +EXTERN int Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp * slave, + CONST char * slaveCmd, Tcl_Interp * target, + CONST char * targetCmd, int argc, + CONST84 char * CONST * argv)); +/* 87 */ +EXTERN int Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp * slave, + CONST char * slaveCmd, Tcl_Interp * target, + CONST char * targetCmd, int objc, + Tcl_Obj *CONST objv[])); +/* 88 */ +EXTERN Tcl_Channel Tcl_CreateChannel _ANSI_ARGS_(( + Tcl_ChannelType * typePtr, + CONST char * chanName, + ClientData instanceData, int mask)); +/* 89 */ +EXTERN void Tcl_CreateChannelHandler _ANSI_ARGS_(( + Tcl_Channel chan, int mask, + Tcl_ChannelProc * proc, + ClientData clientData)); +/* 90 */ +EXTERN void Tcl_CreateCloseHandler _ANSI_ARGS_((Tcl_Channel chan, + Tcl_CloseProc * proc, ClientData clientData)); +/* 91 */ +EXTERN Tcl_Command Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, Tcl_CmdProc * proc, + ClientData clientData, + Tcl_CmdDeleteProc * deleteProc)); +/* 92 */ +EXTERN void Tcl_CreateEventSource _ANSI_ARGS_(( + Tcl_EventSetupProc * setupProc, + Tcl_EventCheckProc * checkProc, + ClientData clientData)); +/* 93 */ +EXTERN void Tcl_CreateExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 94 */ +EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); +/* 95 */ +EXTERN void Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, int numArgs, + Tcl_ValueType * argTypes, + Tcl_MathProc * proc, ClientData clientData)); +/* 96 */ +EXTERN Tcl_Command Tcl_CreateObjCommand _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * cmdName, + Tcl_ObjCmdProc * proc, ClientData clientData, + Tcl_CmdDeleteProc * deleteProc)); +/* 97 */ +EXTERN Tcl_Interp * Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveName, int isSafe)); +/* 98 */ +EXTERN Tcl_TimerToken Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds, + Tcl_TimerProc * proc, ClientData clientData)); +/* 99 */ +EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp * interp, + int level, Tcl_CmdTraceProc * proc, + ClientData clientData)); +/* 100 */ +EXTERN void Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name)); +/* 101 */ +EXTERN void Tcl_DeleteChannelHandler _ANSI_ARGS_(( + Tcl_Channel chan, Tcl_ChannelProc * proc, + ClientData clientData)); +/* 102 */ +EXTERN void Tcl_DeleteCloseHandler _ANSI_ARGS_((Tcl_Channel chan, + Tcl_CloseProc * proc, ClientData clientData)); +/* 103 */ +EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName)); +/* 104 */ +EXTERN int Tcl_DeleteCommandFromToken _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command)); +/* 105 */ +EXTERN void Tcl_DeleteEvents _ANSI_ARGS_(( + Tcl_EventDeleteProc * proc, + ClientData clientData)); +/* 106 */ +EXTERN void Tcl_DeleteEventSource _ANSI_ARGS_(( + Tcl_EventSetupProc * setupProc, + Tcl_EventCheckProc * checkProc, + ClientData clientData)); +/* 107 */ +EXTERN void Tcl_DeleteExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 108 */ +EXTERN void Tcl_DeleteHashEntry _ANSI_ARGS_(( + Tcl_HashEntry * entryPtr)); +/* 109 */ +EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 110 */ +EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp * interp)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 111 */ +EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, + Tcl_Pid * pidPtr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 111 */ +EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, + Tcl_Pid * pidPtr)); +#endif /* __WIN32__ */ +/* 112 */ +EXTERN void Tcl_DeleteTimerHandler _ANSI_ARGS_(( + Tcl_TimerToken token)); +/* 113 */ +EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Trace trace)); +/* 114 */ +EXTERN void Tcl_DontCallWhenDeleted _ANSI_ARGS_(( + Tcl_Interp * interp, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 115 */ +EXTERN int Tcl_DoOneEvent _ANSI_ARGS_((int flags)); +/* 116 */ +EXTERN void Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc * proc, + ClientData clientData)); +/* 117 */ +EXTERN char * Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString * dsPtr, + CONST char * str, int length)); +/* 118 */ +EXTERN char * Tcl_DStringAppendElement _ANSI_ARGS_(( + Tcl_DString * dsPtr, CONST char * string)); +/* 119 */ +EXTERN void Tcl_DStringEndSublist _ANSI_ARGS_(( + Tcl_DString * dsPtr)); +/* 120 */ +EXTERN void Tcl_DStringFree _ANSI_ARGS_((Tcl_DString * dsPtr)); +/* 121 */ +EXTERN void Tcl_DStringGetResult _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_DString * dsPtr)); +/* 122 */ +EXTERN void Tcl_DStringInit _ANSI_ARGS_((Tcl_DString * dsPtr)); +/* 123 */ +EXTERN void Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * dsPtr)); +/* 124 */ +EXTERN void Tcl_DStringSetLength _ANSI_ARGS_(( + Tcl_DString * dsPtr, int length)); +/* 125 */ +EXTERN void Tcl_DStringStartSublist _ANSI_ARGS_(( + Tcl_DString * dsPtr)); +/* 126 */ +EXTERN int Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan)); +/* 127 */ +EXTERN CONST84_RETURN char * Tcl_ErrnoId _ANSI_ARGS_((void)); +/* 128 */ +EXTERN CONST84_RETURN char * Tcl_ErrnoMsg _ANSI_ARGS_((int err)); +/* 129 */ +EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 130 */ +EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * fileName)); +/* 131 */ +EXTERN int Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr)); +/* 132 */ +EXTERN void Tcl_EventuallyFree _ANSI_ARGS_(( + ClientData clientData, + Tcl_FreeProc * freeProc)); +/* 133 */ +EXTERN void Tcl_Exit _ANSI_ARGS_((int status)); +/* 134 */ +EXTERN int Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * hiddenCmdToken, + CONST char * cmdName)); +/* 135 */ +EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * ptr)); +/* 136 */ +EXTERN int Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int * ptr)); +/* 137 */ +EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, double * ptr)); +/* 138 */ +EXTERN int Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, double * ptr)); +/* 139 */ +EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, long * ptr)); +/* 140 */ +EXTERN int Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, long * ptr)); +/* 141 */ +EXTERN int Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); +/* 142 */ +EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 143 */ +EXTERN void Tcl_Finalize _ANSI_ARGS_((void)); +/* 144 */ +EXTERN void Tcl_FindExecutable _ANSI_ARGS_((CONST char * argv0)); +/* 145 */ +EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, + Tcl_HashSearch * searchPtr)); +/* 146 */ +EXTERN int Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan)); +/* 147 */ +EXTERN void Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp * interp)); +/* 148 */ +EXTERN int Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveCmd, + Tcl_Interp ** targetInterpPtr, + CONST84 char ** targetCmdPtr, int * argcPtr, + CONST84 char *** argvPtr)); +/* 149 */ +EXTERN int Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveCmd, + Tcl_Interp ** targetInterpPtr, + CONST84 char ** targetCmdPtr, int * objcPtr, + Tcl_Obj *** objv)); +/* 150 */ +EXTERN ClientData Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_InterpDeleteProc ** procPtr)); +/* 151 */ +EXTERN Tcl_Channel Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * chanName, int * modePtr)); +/* 152 */ +EXTERN int Tcl_GetChannelBufferSize _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 153 */ +EXTERN int Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan, + int direction, ClientData * handlePtr)); +/* 154 */ +EXTERN ClientData Tcl_GetChannelInstanceData _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 155 */ +EXTERN int Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan)); +/* 156 */ +EXTERN CONST84_RETURN char * Tcl_GetChannelName _ANSI_ARGS_(( + Tcl_Channel chan)); +/* 157 */ +EXTERN int Tcl_GetChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan, + CONST char * optionName, Tcl_DString * dsPtr)); +/* 158 */ +EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan)); +/* 159 */ +EXTERN int Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, Tcl_CmdInfo * infoPtr)); +/* 160 */ +EXTERN CONST84_RETURN char * Tcl_GetCommandName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command)); +/* 161 */ +EXTERN int Tcl_GetErrno _ANSI_ARGS_((void)); +/* 162 */ +EXTERN CONST84_RETURN char * Tcl_GetHostName _ANSI_ARGS_((void)); +/* 163 */ +EXTERN int Tcl_GetInterpPath _ANSI_ARGS_(( + Tcl_Interp * askInterp, + Tcl_Interp * slaveInterp)); +/* 164 */ +EXTERN Tcl_Interp * Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp * interp)); +/* 165 */ +EXTERN CONST char * Tcl_GetNameOfExecutable _ANSI_ARGS_((void)); +/* 166 */ +EXTERN Tcl_Obj * Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp * interp)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 167 */ +EXTERN int Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int forWriting, + int checkUsage, ClientData * filePtr)); +#endif /* UNIX */ +/* 168 */ +EXTERN Tcl_PathType Tcl_GetPathType _ANSI_ARGS_((CONST char * path)); +/* 169 */ +EXTERN int Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan, + Tcl_DString * dsPtr)); +/* 170 */ +EXTERN int Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan, + Tcl_Obj * objPtr)); +/* 171 */ +EXTERN int Tcl_GetServiceMode _ANSI_ARGS_((void)); +/* 172 */ +EXTERN Tcl_Interp * Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * slaveName)); +/* 173 */ +EXTERN Tcl_Channel Tcl_GetStdChannel _ANSI_ARGS_((int type)); +/* 174 */ +EXTERN CONST84_RETURN char * Tcl_GetStringResult _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 175 */ +EXTERN CONST84_RETURN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags)); +/* 176 */ +EXTERN CONST84_RETURN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 177 */ +EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * command)); +/* 178 */ +EXTERN int Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr)); +/* 179 */ +EXTERN int Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, + CONST char * hiddenCmdToken)); +/* 180 */ +EXTERN int Tcl_Init _ANSI_ARGS_((Tcl_Interp * interp)); +/* 181 */ +EXTERN void Tcl_InitHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, int keyType)); +/* 182 */ +EXTERN int Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan)); +/* 183 */ +EXTERN int Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 184 */ +EXTERN int Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp * interp)); +/* 185 */ +EXTERN int Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp * interp)); +/* 186 */ +EXTERN char * Tcl_JoinPath _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv, + Tcl_DString * resultPtr)); +/* 187 */ +EXTERN int Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, char * addr, int type)); +/* Slot 188 is reserved */ +/* 189 */ +EXTERN Tcl_Channel Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle, + int mode)); +/* 190 */ +EXTERN int Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp * interp)); +/* 191 */ +EXTERN Tcl_Channel Tcl_MakeTcpClientChannel _ANSI_ARGS_(( + ClientData tcpSocket)); +/* 192 */ +EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, + CONST84 char * CONST * argv)); +/* 193 */ +EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( + Tcl_HashSearch * searchPtr)); +/* 194 */ +EXTERN void Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel, + int mask)); +/* 195 */ +EXTERN Tcl_Obj * Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + int flags)); +/* 196 */ +EXTERN Tcl_Obj * Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + Tcl_Obj * newValuePtr, int flags)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 197 */ +EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( + Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 197 */ +EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( + Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +#endif /* __WIN32__ */ +/* 198 */ +EXTERN Tcl_Channel Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * fileName, + CONST char * modeString, int permissions)); +/* 199 */ +EXTERN Tcl_Channel Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp * interp, + int port, CONST char * address, + CONST char * myaddr, int myport, int async)); +/* 200 */ +EXTERN Tcl_Channel Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp * interp, + int port, CONST char * host, + Tcl_TcpAcceptProc * acceptProc, + ClientData callbackData)); +/* 201 */ +EXTERN void Tcl_Preserve _ANSI_ARGS_((ClientData data)); +/* 202 */ +EXTERN void Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp * interp, + double value, char * dst)); +/* 203 */ +EXTERN int Tcl_PutEnv _ANSI_ARGS_((CONST char * string)); +/* 204 */ +EXTERN CONST84_RETURN char * Tcl_PosixError _ANSI_ARGS_((Tcl_Interp * interp)); +/* 205 */ +EXTERN void Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event * evPtr, + Tcl_QueuePosition position)); +/* 206 */ +EXTERN int Tcl_Read _ANSI_ARGS_((Tcl_Channel chan, + char * bufPtr, int toRead)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 207 */ +EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 207 */ +EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); +#endif /* __WIN32__ */ +/* 208 */ +EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmd, int flags)); +/* 209 */ +EXTERN int Tcl_RecordAndEvalObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * cmdPtr, + int flags)); +/* 210 */ +EXTERN void Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 211 */ +EXTERN void Tcl_RegisterObjType _ANSI_ARGS_(( + Tcl_ObjType * typePtr)); +/* 212 */ +EXTERN Tcl_RegExp Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string)); +/* 213 */ +EXTERN int Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp regexp, CONST char * str, + CONST char * start)); +/* 214 */ +EXTERN int Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CONST char * pattern)); +/* 215 */ +EXTERN void Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp, + int index, CONST84 char ** startPtr, + CONST84 char ** endPtr)); +/* 216 */ +EXTERN void Tcl_Release _ANSI_ARGS_((ClientData clientData)); +/* 217 */ +EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp * interp)); +/* 218 */ +EXTERN int Tcl_ScanElement _ANSI_ARGS_((CONST char * str, + int * flagPtr)); +/* 219 */ +EXTERN int Tcl_ScanCountedElement _ANSI_ARGS_((CONST char * str, + int length, int * flagPtr)); +/* 220 */ +EXTERN int Tcl_SeekOld _ANSI_ARGS_((Tcl_Channel chan, + int offset, int mode)); +/* 221 */ +EXTERN int Tcl_ServiceAll _ANSI_ARGS_((void)); +/* 222 */ +EXTERN int Tcl_ServiceEvent _ANSI_ARGS_((int flags)); +/* 223 */ +EXTERN void Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_InterpDeleteProc * proc, + ClientData clientData)); +/* 224 */ +EXTERN void Tcl_SetChannelBufferSize _ANSI_ARGS_(( + Tcl_Channel chan, int sz)); +/* 225 */ +EXTERN int Tcl_SetChannelOption _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan, + CONST char * optionName, + CONST char * newValue)); +/* 226 */ +EXTERN int Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * cmdName, + CONST Tcl_CmdInfo * infoPtr)); +/* 227 */ +EXTERN void Tcl_SetErrno _ANSI_ARGS_((int err)); +/* 228 */ +EXTERN void Tcl_SetErrorCode _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 229 */ +EXTERN void Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time * timePtr)); +/* 230 */ +EXTERN void Tcl_SetPanicProc _ANSI_ARGS_(( + Tcl_PanicProc * panicProc)); +/* 231 */ +EXTERN int Tcl_SetRecursionLimit _ANSI_ARGS_(( + Tcl_Interp * interp, int depth)); +/* 232 */ +EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp * interp, + char * str, Tcl_FreeProc * freeProc)); +/* 233 */ +EXTERN int Tcl_SetServiceMode _ANSI_ARGS_((int mode)); +/* 234 */ +EXTERN void Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * errorObjPtr)); +/* 235 */ +EXTERN void Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * resultObjPtr)); +/* 236 */ +EXTERN void Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel, + int type)); +/* 237 */ +EXTERN CONST84_RETURN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, CONST char * newValue, + int flags)); +/* 238 */ +EXTERN CONST84_RETURN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + CONST char * newValue, int flags)); +/* 239 */ +EXTERN CONST84_RETURN char * Tcl_SignalId _ANSI_ARGS_((int sig)); +/* 240 */ +EXTERN CONST84_RETURN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); +/* 241 */ +EXTERN void Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp * interp)); +/* 242 */ +EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * listStr, int * argcPtr, + CONST84 char *** argvPtr)); +/* 243 */ +EXTERN void Tcl_SplitPath _ANSI_ARGS_((CONST char * path, + int * argcPtr, CONST84 char *** argvPtr)); +/* 244 */ +EXTERN void Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * pkgName, + Tcl_PackageInitProc * initProc, + Tcl_PackageInitProc * safeInitProc)); +/* 245 */ +EXTERN int Tcl_StringMatch _ANSI_ARGS_((CONST char * str, + CONST char * pattern)); +/* 246 */ +EXTERN int Tcl_TellOld _ANSI_ARGS_((Tcl_Channel chan)); +/* 247 */ +EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 248 */ +EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 249 */ +EXTERN char * Tcl_TranslateFileName _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_DString * bufferPtr)); +/* 250 */ +EXTERN int Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, + CONST char * str, int len, int atHead)); +/* 251 */ +EXTERN void Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 252 */ +EXTERN int Tcl_UnregisterChannel _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Channel chan)); +/* 253 */ +EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags)); +/* 254 */ +EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 255 */ +EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 256 */ +EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * proc, + ClientData clientData)); +/* 257 */ +EXTERN void Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 258 */ +EXTERN int Tcl_UpVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * frameName, CONST char * varName, + CONST char * localName, int flags)); +/* 259 */ +EXTERN int Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * frameName, CONST char * part1, + CONST char * part2, CONST char * localName, + int flags)); +/* 260 */ +EXTERN int Tcl_VarEval _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); +/* 261 */ +EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_VarTraceProc * procPtr, + ClientData prevClientData)); +/* 262 */ +EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, Tcl_VarTraceProc * procPtr, + ClientData prevClientData)); +/* 263 */ +EXTERN int Tcl_Write _ANSI_ARGS_((Tcl_Channel chan, + CONST char * s, int slen)); +/* 264 */ +EXTERN void Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], + CONST char * message)); +/* 265 */ +EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_(( + CONST char * fileName)); +/* 266 */ +EXTERN void Tcl_ValidateAllMemory _ANSI_ARGS_((CONST char * file, + int line)); +/* 267 */ +EXTERN void Tcl_AppendResultVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 268 */ +EXTERN void Tcl_AppendStringsToObjVA _ANSI_ARGS_(( + Tcl_Obj * objPtr, va_list argList)); +/* 269 */ +EXTERN CONST84_RETURN char * Tcl_HashStats _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 270 */ +EXTERN CONST84_RETURN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CONST84 char ** termPtr)); +/* 271 */ +EXTERN CONST84_RETURN char * Tcl_PkgPresent _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version, + int exact)); +/* 272 */ +EXTERN CONST84_RETURN char * Tcl_PkgPresentEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + CONST char * version, int exact, + ClientData * clientDataPtr)); +/* 273 */ +EXTERN int Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version)); +/* 274 */ +EXTERN CONST84_RETURN char * Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, CONST char * version, + int exact)); +/* 275 */ +EXTERN void Tcl_SetErrorCodeVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 276 */ +EXTERN int Tcl_VarEvalVA _ANSI_ARGS_((Tcl_Interp * interp, + va_list argList)); +/* 277 */ +EXTERN Tcl_Pid Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, + int options)); +/* 278 */ +EXTERN void Tcl_PanicVA _ANSI_ARGS_((CONST char * format, + va_list argList)); +/* 279 */ +EXTERN void Tcl_GetVersion _ANSI_ARGS_((int * major, int * minor, + int * patchLevel, int * type)); +/* 280 */ +EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp * interp)); +/* 281 */ +EXTERN Tcl_Channel Tcl_StackChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_ChannelType * typePtr, + ClientData instanceData, int mask, + Tcl_Channel prevChan)); +/* 282 */ +EXTERN int Tcl_UnstackChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 283 */ +EXTERN Tcl_Channel Tcl_GetStackedChannel _ANSI_ARGS_((Tcl_Channel chan)); +/* 284 */ +EXTERN void Tcl_SetMainLoop _ANSI_ARGS_((Tcl_MainLoopProc * proc)); +/* Slot 285 is reserved */ +/* 286 */ +EXTERN void Tcl_AppendObjToObj _ANSI_ARGS_((Tcl_Obj * objPtr, + Tcl_Obj * appendObjPtr)); +/* 287 */ +EXTERN Tcl_Encoding Tcl_CreateEncoding _ANSI_ARGS_(( + Tcl_EncodingType * typePtr)); +/* 288 */ +EXTERN void Tcl_CreateThreadExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 289 */ +EXTERN void Tcl_DeleteThreadExitHandler _ANSI_ARGS_(( + Tcl_ExitProc * proc, ClientData clientData)); +/* 290 */ +EXTERN void Tcl_DiscardResult _ANSI_ARGS_(( + Tcl_SavedResult * statePtr)); +/* 291 */ +EXTERN int Tcl_EvalEx _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * script, int numBytes, int flags)); +/* 292 */ +EXTERN int Tcl_EvalObjv _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 293 */ +EXTERN int Tcl_EvalObjEx _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int flags)); +/* 294 */ +EXTERN void Tcl_ExitThread _ANSI_ARGS_((int status)); +/* 295 */ +EXTERN int Tcl_ExternalToUtf _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Encoding encoding, CONST char * src, + int srcLen, int flags, + Tcl_EncodingState * statePtr, char * dst, + int dstLen, int * srcReadPtr, + int * dstWrotePtr, int * dstCharsPtr)); +/* 296 */ +EXTERN char * Tcl_ExternalToUtfDString _ANSI_ARGS_(( + Tcl_Encoding encoding, CONST char * src, + int srcLen, Tcl_DString * dsPtr)); +/* 297 */ +EXTERN void Tcl_FinalizeThread _ANSI_ARGS_((void)); +/* 298 */ +EXTERN void Tcl_FinalizeNotifier _ANSI_ARGS_(( + ClientData clientData)); +/* 299 */ +EXTERN void Tcl_FreeEncoding _ANSI_ARGS_((Tcl_Encoding encoding)); +/* 300 */ +EXTERN Tcl_ThreadId Tcl_GetCurrentThread _ANSI_ARGS_((void)); +/* 301 */ +EXTERN Tcl_Encoding Tcl_GetEncoding _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name)); +/* 302 */ +EXTERN CONST84_RETURN char * Tcl_GetEncodingName _ANSI_ARGS_(( + Tcl_Encoding encoding)); +/* 303 */ +EXTERN void Tcl_GetEncodingNames _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 304 */ +EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + CONST VOID * tablePtr, int offset, + CONST char * msg, int flags, int * indexPtr)); +/* 305 */ +EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_(( + Tcl_ThreadDataKey * keyPtr, int size)); +/* 306 */ +EXTERN Tcl_Obj * Tcl_GetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags)); +/* 307 */ +EXTERN ClientData Tcl_InitNotifier _ANSI_ARGS_((void)); +/* 308 */ +EXTERN void Tcl_MutexLock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); +/* 309 */ +EXTERN void Tcl_MutexUnlock _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); +/* 310 */ +EXTERN void Tcl_ConditionNotify _ANSI_ARGS_(( + Tcl_Condition * condPtr)); +/* 311 */ +EXTERN void Tcl_ConditionWait _ANSI_ARGS_(( + Tcl_Condition * condPtr, + Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); +/* 312 */ +EXTERN int Tcl_NumUtfChars _ANSI_ARGS_((CONST char * src, + int len)); +/* 313 */ +EXTERN int Tcl_ReadChars _ANSI_ARGS_((Tcl_Channel channel, + Tcl_Obj * objPtr, int charsToRead, + int appendFlag)); +/* 314 */ +EXTERN void Tcl_RestoreResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_SavedResult * statePtr)); +/* 315 */ +EXTERN void Tcl_SaveResult _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_SavedResult * statePtr)); +/* 316 */ +EXTERN int Tcl_SetSystemEncoding _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name)); +/* 317 */ +EXTERN Tcl_Obj * Tcl_SetVar2Ex _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + Tcl_Obj * newValuePtr, int flags)); +/* 318 */ +EXTERN void Tcl_ThreadAlert _ANSI_ARGS_((Tcl_ThreadId threadId)); +/* 319 */ +EXTERN void Tcl_ThreadQueueEvent _ANSI_ARGS_(( + Tcl_ThreadId threadId, Tcl_Event* evPtr, + Tcl_QueuePosition position)); +/* 320 */ +EXTERN Tcl_UniChar Tcl_UniCharAtIndex _ANSI_ARGS_((CONST char * src, + int index)); +/* 321 */ +EXTERN Tcl_UniChar Tcl_UniCharToLower _ANSI_ARGS_((int ch)); +/* 322 */ +EXTERN Tcl_UniChar Tcl_UniCharToTitle _ANSI_ARGS_((int ch)); +/* 323 */ +EXTERN Tcl_UniChar Tcl_UniCharToUpper _ANSI_ARGS_((int ch)); +/* 324 */ +EXTERN int Tcl_UniCharToUtf _ANSI_ARGS_((int ch, char * buf)); +/* 325 */ +EXTERN CONST84_RETURN char * Tcl_UtfAtIndex _ANSI_ARGS_((CONST char * src, + int index)); +/* 326 */ +EXTERN int Tcl_UtfCharComplete _ANSI_ARGS_((CONST char * src, + int len)); +/* 327 */ +EXTERN int Tcl_UtfBackslash _ANSI_ARGS_((CONST char * src, + int * readPtr, char * dst)); +/* 328 */ +EXTERN CONST84_RETURN char * Tcl_UtfFindFirst _ANSI_ARGS_((CONST char * src, + int ch)); +/* 329 */ +EXTERN CONST84_RETURN char * Tcl_UtfFindLast _ANSI_ARGS_((CONST char * src, + int ch)); +/* 330 */ +EXTERN CONST84_RETURN char * Tcl_UtfNext _ANSI_ARGS_((CONST char * src)); +/* 331 */ +EXTERN CONST84_RETURN char * Tcl_UtfPrev _ANSI_ARGS_((CONST char * src, + CONST char * start)); +/* 332 */ +EXTERN int Tcl_UtfToExternal _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Encoding encoding, CONST char * src, + int srcLen, int flags, + Tcl_EncodingState * statePtr, char * dst, + int dstLen, int * srcReadPtr, + int * dstWrotePtr, int * dstCharsPtr)); +/* 333 */ +EXTERN char * Tcl_UtfToExternalDString _ANSI_ARGS_(( + Tcl_Encoding encoding, CONST char * src, + int srcLen, Tcl_DString * dsPtr)); +/* 334 */ +EXTERN int Tcl_UtfToLower _ANSI_ARGS_((char * src)); +/* 335 */ +EXTERN int Tcl_UtfToTitle _ANSI_ARGS_((char * src)); +/* 336 */ +EXTERN int Tcl_UtfToUniChar _ANSI_ARGS_((CONST char * src, + Tcl_UniChar * chPtr)); +/* 337 */ +EXTERN int Tcl_UtfToUpper _ANSI_ARGS_((char * src)); +/* 338 */ +EXTERN int Tcl_WriteChars _ANSI_ARGS_((Tcl_Channel chan, + CONST char * src, int srcLen)); +/* 339 */ +EXTERN int Tcl_WriteObj _ANSI_ARGS_((Tcl_Channel chan, + Tcl_Obj * objPtr)); +/* 340 */ +EXTERN char * Tcl_GetString _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 341 */ +EXTERN CONST84_RETURN char * Tcl_GetDefaultEncodingDir _ANSI_ARGS_((void)); +/* 342 */ +EXTERN void Tcl_SetDefaultEncodingDir _ANSI_ARGS_(( + CONST char * path)); +/* 343 */ +EXTERN void Tcl_AlertNotifier _ANSI_ARGS_((ClientData clientData)); +/* 344 */ +EXTERN void Tcl_ServiceModeHook _ANSI_ARGS_((int mode)); +/* 345 */ +EXTERN int Tcl_UniCharIsAlnum _ANSI_ARGS_((int ch)); +/* 346 */ +EXTERN int Tcl_UniCharIsAlpha _ANSI_ARGS_((int ch)); +/* 347 */ +EXTERN int Tcl_UniCharIsDigit _ANSI_ARGS_((int ch)); +/* 348 */ +EXTERN int Tcl_UniCharIsLower _ANSI_ARGS_((int ch)); +/* 349 */ +EXTERN int Tcl_UniCharIsSpace _ANSI_ARGS_((int ch)); +/* 350 */ +EXTERN int Tcl_UniCharIsUpper _ANSI_ARGS_((int ch)); +/* 351 */ +EXTERN int Tcl_UniCharIsWordChar _ANSI_ARGS_((int ch)); +/* 352 */ +EXTERN int Tcl_UniCharLen _ANSI_ARGS_((CONST Tcl_UniChar * str)); +/* 353 */ +EXTERN int Tcl_UniCharNcmp _ANSI_ARGS_((CONST Tcl_UniChar * cs, + CONST Tcl_UniChar * ct, unsigned long n)); +/* 354 */ +EXTERN char * Tcl_UniCharToUtfDString _ANSI_ARGS_(( + CONST Tcl_UniChar * string, int numChars, + Tcl_DString * dsPtr)); +/* 355 */ +EXTERN Tcl_UniChar * Tcl_UtfToUniCharDString _ANSI_ARGS_(( + CONST char * string, int length, + Tcl_DString * dsPtr)); +/* 356 */ +EXTERN Tcl_RegExp Tcl_GetRegExpFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * patObj, + int flags)); +/* 357 */ +EXTERN Tcl_Obj * Tcl_EvalTokens _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Token * tokenPtr, int count)); +/* 358 */ +EXTERN void Tcl_FreeParse _ANSI_ARGS_((Tcl_Parse * parsePtr)); +/* 359 */ +EXTERN void Tcl_LogCommandInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * script, CONST char * command, + int length)); +/* 360 */ +EXTERN int Tcl_ParseBraces _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr, int append, + CONST84 char ** termPtr)); +/* 361 */ +EXTERN int Tcl_ParseCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + int nested, Tcl_Parse * parsePtr)); +/* 362 */ +EXTERN int Tcl_ParseExpr _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr)); +/* 363 */ +EXTERN int Tcl_ParseQuotedString _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * string, + int numBytes, Tcl_Parse * parsePtr, + int append, CONST84 char ** termPtr)); +/* 364 */ +EXTERN int Tcl_ParseVarName _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * string, int numBytes, + Tcl_Parse * parsePtr, int append)); +/* 365 */ +EXTERN char * Tcl_GetCwd _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * cwdPtr)); +/* 366 */ +EXTERN int Tcl_Chdir _ANSI_ARGS_((CONST char * dirName)); +/* 367 */ +EXTERN int Tcl_Access _ANSI_ARGS_((CONST char * path, int mode)); +/* 368 */ +EXTERN int Tcl_Stat _ANSI_ARGS_((CONST char * path, + struct stat * bufPtr)); +/* 369 */ +EXTERN int Tcl_UtfNcmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 370 */ +EXTERN int Tcl_UtfNcasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 371 */ +EXTERN int Tcl_StringCaseMatch _ANSI_ARGS_((CONST char * str, + CONST char * pattern, int nocase)); +/* 372 */ +EXTERN int Tcl_UniCharIsControl _ANSI_ARGS_((int ch)); +/* 373 */ +EXTERN int Tcl_UniCharIsGraph _ANSI_ARGS_((int ch)); +/* 374 */ +EXTERN int Tcl_UniCharIsPrint _ANSI_ARGS_((int ch)); +/* 375 */ +EXTERN int Tcl_UniCharIsPunct _ANSI_ARGS_((int ch)); +/* 376 */ +EXTERN int Tcl_RegExpExecObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp regexp, Tcl_Obj * objPtr, + int offset, int nmatches, int flags)); +/* 377 */ +EXTERN void Tcl_RegExpGetInfo _ANSI_ARGS_((Tcl_RegExp regexp, + Tcl_RegExpInfo * infoPtr)); +/* 378 */ +EXTERN Tcl_Obj * Tcl_NewUnicodeObj _ANSI_ARGS_(( + CONST Tcl_UniChar * unicode, int numChars)); +/* 379 */ +EXTERN void Tcl_SetUnicodeObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST Tcl_UniChar * unicode, int numChars)); +/* 380 */ +EXTERN int Tcl_GetCharLength _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 381 */ +EXTERN Tcl_UniChar Tcl_GetUniChar _ANSI_ARGS_((Tcl_Obj * objPtr, + int index)); +/* 382 */ +EXTERN Tcl_UniChar * Tcl_GetUnicode _ANSI_ARGS_((Tcl_Obj * objPtr)); +/* 383 */ +EXTERN Tcl_Obj * Tcl_GetRange _ANSI_ARGS_((Tcl_Obj * objPtr, + int first, int last)); +/* 384 */ +EXTERN void Tcl_AppendUnicodeToObj _ANSI_ARGS_((Tcl_Obj * objPtr, + CONST Tcl_UniChar * unicode, int length)); +/* 385 */ +EXTERN int Tcl_RegExpMatchObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * stringObj, Tcl_Obj * patternObj)); +/* 386 */ +EXTERN void Tcl_SetNotifier _ANSI_ARGS_(( + Tcl_NotifierProcs * notifierProcPtr)); +/* 387 */ +EXTERN Tcl_Mutex * Tcl_GetAllocMutex _ANSI_ARGS_((void)); +/* 388 */ +EXTERN int Tcl_GetChannelNames _ANSI_ARGS_((Tcl_Interp * interp)); +/* 389 */ +EXTERN int Tcl_GetChannelNamesEx _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * pattern)); +/* 390 */ +EXTERN int Tcl_ProcObjCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int objc, + Tcl_Obj *CONST objv[])); +/* 391 */ +EXTERN void Tcl_ConditionFinalize _ANSI_ARGS_(( + Tcl_Condition * condPtr)); +/* 392 */ +EXTERN void Tcl_MutexFinalize _ANSI_ARGS_((Tcl_Mutex * mutex)); +/* 393 */ +EXTERN int Tcl_CreateThread _ANSI_ARGS_((Tcl_ThreadId * idPtr, + Tcl_ThreadCreateProc proc, + ClientData clientData, int stackSize, + int flags)); +/* 394 */ +EXTERN int Tcl_ReadRaw _ANSI_ARGS_((Tcl_Channel chan, + char * dst, int bytesToRead)); +/* 395 */ +EXTERN int Tcl_WriteRaw _ANSI_ARGS_((Tcl_Channel chan, + CONST char * src, int srcLen)); +/* 396 */ +EXTERN Tcl_Channel Tcl_GetTopChannel _ANSI_ARGS_((Tcl_Channel chan)); +/* 397 */ +EXTERN int Tcl_ChannelBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 398 */ +EXTERN CONST84_RETURN char * Tcl_ChannelName _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 399 */ +EXTERN Tcl_ChannelTypeVersion Tcl_ChannelVersion _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 400 */ +EXTERN Tcl_DriverBlockModeProc * Tcl_ChannelBlockModeProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 401 */ +EXTERN Tcl_DriverCloseProc * Tcl_ChannelCloseProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 402 */ +EXTERN Tcl_DriverClose2Proc * Tcl_ChannelClose2Proc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 403 */ +EXTERN Tcl_DriverInputProc * Tcl_ChannelInputProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 404 */ +EXTERN Tcl_DriverOutputProc * Tcl_ChannelOutputProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 405 */ +EXTERN Tcl_DriverSeekProc * Tcl_ChannelSeekProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 406 */ +EXTERN Tcl_DriverSetOptionProc * Tcl_ChannelSetOptionProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 407 */ +EXTERN Tcl_DriverGetOptionProc * Tcl_ChannelGetOptionProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 408 */ +EXTERN Tcl_DriverWatchProc * Tcl_ChannelWatchProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 409 */ +EXTERN Tcl_DriverGetHandleProc * Tcl_ChannelGetHandleProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 410 */ +EXTERN Tcl_DriverFlushProc * Tcl_ChannelFlushProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 411 */ +EXTERN Tcl_DriverHandlerProc * Tcl_ChannelHandlerProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); +/* 412 */ +EXTERN int Tcl_JoinThread _ANSI_ARGS_((Tcl_ThreadId threadId, + int* result)); +/* 413 */ +EXTERN int Tcl_IsChannelShared _ANSI_ARGS_((Tcl_Channel channel)); +/* 414 */ +EXTERN int Tcl_IsChannelRegistered _ANSI_ARGS_(( + Tcl_Interp* interp, Tcl_Channel channel)); +/* 415 */ +EXTERN void Tcl_CutChannel _ANSI_ARGS_((Tcl_Channel channel)); +/* 416 */ +EXTERN void Tcl_SpliceChannel _ANSI_ARGS_((Tcl_Channel channel)); +/* 417 */ +EXTERN void Tcl_ClearChannelHandlers _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 418 */ +EXTERN int Tcl_IsChannelExisting _ANSI_ARGS_(( + CONST char* channelName)); +/* 419 */ +EXTERN int Tcl_UniCharNcasecmp _ANSI_ARGS_(( + CONST Tcl_UniChar * cs, + CONST Tcl_UniChar * ct, unsigned long n)); +/* 420 */ +EXTERN int Tcl_UniCharCaseMatch _ANSI_ARGS_(( + CONST Tcl_UniChar * ustr, + CONST Tcl_UniChar * pattern, int nocase)); +/* 421 */ +EXTERN Tcl_HashEntry * Tcl_FindHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, CONST char * key)); +/* 422 */ +EXTERN Tcl_HashEntry * Tcl_CreateHashEntry _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, CONST char * key, + int * newPtr)); +/* 423 */ +EXTERN void Tcl_InitCustomHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr, int keyType, + Tcl_HashKeyType * typePtr)); +/* 424 */ +EXTERN void Tcl_InitObjHashTable _ANSI_ARGS_(( + Tcl_HashTable * tablePtr)); +/* 425 */ +EXTERN ClientData Tcl_CommandTraceInfo _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * varName, + int flags, Tcl_CommandTraceProc * procPtr, + ClientData prevClientData)); +/* 426 */ +EXTERN int Tcl_TraceCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_CommandTraceProc * proc, + ClientData clientData)); +/* 427 */ +EXTERN void Tcl_UntraceCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName, int flags, + Tcl_CommandTraceProc * proc, + ClientData clientData)); +/* 428 */ +EXTERN char * Tcl_AttemptAlloc _ANSI_ARGS_((unsigned int size)); +/* 429 */ +EXTERN char * Tcl_AttemptDbCkalloc _ANSI_ARGS_((unsigned int size, + CONST char * file, int line)); +/* 430 */ +EXTERN char * Tcl_AttemptRealloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* 431 */ +EXTERN char * Tcl_AttemptDbCkrealloc _ANSI_ARGS_((char * ptr, + unsigned int size, CONST char * file, + int line)); +/* 432 */ +EXTERN int Tcl_AttemptSetObjLength _ANSI_ARGS_(( + Tcl_Obj * objPtr, int length)); +/* 433 */ +EXTERN Tcl_ThreadId Tcl_GetChannelThread _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 434 */ +EXTERN Tcl_UniChar * Tcl_GetUnicodeFromObj _ANSI_ARGS_((Tcl_Obj * objPtr, + int * lengthPtr)); +/* 435 */ +EXTERN int Tcl_GetMathFuncInfo _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, int * numArgsPtr, + Tcl_ValueType ** argTypesPtr, + Tcl_MathProc ** procPtr, + ClientData * clientDataPtr)); +/* 436 */ +EXTERN Tcl_Obj * Tcl_ListMathFuncs _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * pattern)); +/* 437 */ +EXTERN Tcl_Obj * Tcl_SubstObj _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int flags)); +/* 438 */ +EXTERN int Tcl_DetachChannel _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_Channel channel)); +/* 439 */ +EXTERN int Tcl_IsStandardChannel _ANSI_ARGS_(( + Tcl_Channel channel)); +/* 440 */ +EXTERN int Tcl_FSCopyFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +/* 441 */ +EXTERN int Tcl_FSCopyDirectory _ANSI_ARGS_(( + Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, + Tcl_Obj ** errorPtr)); +/* 442 */ +EXTERN int Tcl_FSCreateDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 443 */ +EXTERN int Tcl_FSDeleteFile _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 444 */ +EXTERN int Tcl_FSLoadFile _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * pathPtr, CONST char * sym1, + CONST char * sym2, + Tcl_PackageInitProc ** proc1Ptr, + Tcl_PackageInitProc ** proc2Ptr, + Tcl_LoadHandle * handlePtr, + Tcl_FSUnloadFileProc ** unloadProcPtr)); +/* 445 */ +EXTERN int Tcl_FSMatchInDirectory _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * result, + Tcl_Obj * pathPtr, CONST char * pattern, + Tcl_GlobTypeData * types)); +/* 446 */ +EXTERN Tcl_Obj * Tcl_FSLink _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_Obj * toPtr, int linkAction)); +/* 447 */ +EXTERN int Tcl_FSRemoveDirectory _ANSI_ARGS_((Tcl_Obj * pathPtr, + int recursive, Tcl_Obj ** errorPtr)); +/* 448 */ +EXTERN int Tcl_FSRenameFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +/* 449 */ +EXTERN int Tcl_FSLstat _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_StatBuf * buf)); +/* 450 */ +EXTERN int Tcl_FSUtime _ANSI_ARGS_((Tcl_Obj * pathPtr, + struct utimbuf * tval)); +/* 451 */ +EXTERN int Tcl_FSFileAttrsGet _ANSI_ARGS_((Tcl_Interp * interp, + int index, Tcl_Obj * pathPtr, + Tcl_Obj ** objPtrRef)); +/* 452 */ +EXTERN int Tcl_FSFileAttrsSet _ANSI_ARGS_((Tcl_Interp * interp, + int index, Tcl_Obj * pathPtr, + Tcl_Obj * objPtr)); +/* 453 */ +EXTERN CONST char ** Tcl_FSFileAttrStrings _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_Obj ** objPtrRef)); +/* 454 */ +EXTERN int Tcl_FSStat _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_StatBuf * buf)); +/* 455 */ +EXTERN int Tcl_FSAccess _ANSI_ARGS_((Tcl_Obj * pathPtr, + int mode)); +/* 456 */ +EXTERN Tcl_Channel Tcl_FSOpenFileChannel _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * pathPtr, + CONST char * modeString, int permissions)); +/* 457 */ +EXTERN Tcl_Obj* Tcl_FSGetCwd _ANSI_ARGS_((Tcl_Interp * interp)); +/* 458 */ +EXTERN int Tcl_FSChdir _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 459 */ +EXTERN int Tcl_FSConvertToPathType _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * pathPtr)); +/* 460 */ +EXTERN Tcl_Obj* Tcl_FSJoinPath _ANSI_ARGS_((Tcl_Obj * listObj, + int elements)); +/* 461 */ +EXTERN Tcl_Obj* Tcl_FSSplitPath _ANSI_ARGS_((Tcl_Obj* pathPtr, + int * lenPtr)); +/* 462 */ +EXTERN int Tcl_FSEqualPaths _ANSI_ARGS_((Tcl_Obj* firstPtr, + Tcl_Obj* secondPtr)); +/* 463 */ +EXTERN Tcl_Obj* Tcl_FSGetNormalizedPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); +/* 464 */ +EXTERN Tcl_Obj* Tcl_FSJoinToPath _ANSI_ARGS_((Tcl_Obj * basePtr, + int objc, Tcl_Obj *CONST objv[])); +/* 465 */ +EXTERN ClientData Tcl_FSGetInternalRep _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); +/* 466 */ +EXTERN Tcl_Obj* Tcl_FSGetTranslatedPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathPtr)); +/* 467 */ +EXTERN int Tcl_FSEvalFile _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * fileName)); +/* 468 */ +EXTERN Tcl_Obj* Tcl_FSNewNativePath _ANSI_ARGS_(( + Tcl_Filesystem* fromFilesystem, + ClientData clientData)); +/* 469 */ +EXTERN CONST char* Tcl_FSGetNativePath _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); +/* 470 */ +EXTERN Tcl_Obj* Tcl_FSFileSystemInfo _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr)); +/* 471 */ +EXTERN Tcl_Obj* Tcl_FSPathSeparator _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); +/* 472 */ +EXTERN Tcl_Obj* Tcl_FSListVolumes _ANSI_ARGS_((void)); +/* 473 */ +EXTERN int Tcl_FSRegister _ANSI_ARGS_((ClientData clientData, + Tcl_Filesystem * fsPtr)); +/* 474 */ +EXTERN int Tcl_FSUnregister _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); +/* 475 */ +EXTERN ClientData Tcl_FSData _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); +/* 476 */ +EXTERN CONST char* Tcl_FSGetTranslatedStringPath _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj* pathPtr)); +/* 477 */ +EXTERN Tcl_Filesystem* Tcl_FSGetFileSystemForPath _ANSI_ARGS_(( + Tcl_Obj* pathObjPtr)); +/* 478 */ +EXTERN Tcl_PathType Tcl_FSGetPathType _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); +/* 479 */ +EXTERN int Tcl_OutputBuffered _ANSI_ARGS_((Tcl_Channel chan)); +/* 480 */ +EXTERN void Tcl_FSMountsChanged _ANSI_ARGS_(( + Tcl_Filesystem * fsPtr)); +/* 481 */ +EXTERN int Tcl_EvalTokensStandard _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Token * tokenPtr, + int count)); +/* 482 */ +EXTERN void Tcl_GetTime _ANSI_ARGS_((Tcl_Time* timeBuf)); +/* 483 */ +EXTERN Tcl_Trace Tcl_CreateObjTrace _ANSI_ARGS_((Tcl_Interp* interp, + int level, int flags, + Tcl_CmdObjTraceProc* objProc, + ClientData clientData, + Tcl_CmdObjTraceDeleteProc* delProc)); +/* 484 */ +EXTERN int Tcl_GetCommandInfoFromToken _ANSI_ARGS_(( + Tcl_Command token, Tcl_CmdInfo* infoPtr)); +/* 485 */ +EXTERN int Tcl_SetCommandInfoFromToken _ANSI_ARGS_(( + Tcl_Command token, + CONST Tcl_CmdInfo* infoPtr)); +/* 486 */ +EXTERN Tcl_Obj * Tcl_DbNewWideIntObj _ANSI_ARGS_(( + Tcl_WideInt wideValue, CONST char * file, + int line)); +/* 487 */ +EXTERN int Tcl_GetWideIntFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + Tcl_WideInt * widePtr)); +/* 488 */ +EXTERN Tcl_Obj * Tcl_NewWideIntObj _ANSI_ARGS_((Tcl_WideInt wideValue)); +/* 489 */ +EXTERN void Tcl_SetWideIntObj _ANSI_ARGS_((Tcl_Obj * objPtr, + Tcl_WideInt wideValue)); +/* 490 */ +EXTERN Tcl_StatBuf * Tcl_AllocStatBuf _ANSI_ARGS_((void)); +/* 491 */ +EXTERN Tcl_WideInt Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan, + Tcl_WideInt offset, int mode)); +/* 492 */ +EXTERN Tcl_WideInt Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); +/* 493 */ +EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); + +typedef struct TclStubHooks { + struct TclPlatStubs *tclPlatStubs; + struct TclIntStubs *tclIntStubs; + struct TclIntPlatStubs *tclIntPlatStubs; +} TclStubHooks; + +typedef struct TclStubs { + int magic; + struct TclStubHooks *hooks; + + int (*tcl_PkgProvideEx) _ANSI_ARGS_((Tcl_Interp* interp, CONST char* name, CONST char* version, ClientData clientData)); /* 0 */ + CONST84_RETURN char * (*tcl_PkgRequireEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 1 */ + void (*tcl_Panic) _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); /* 2 */ + char * (*tcl_Alloc) _ANSI_ARGS_((unsigned int size)); /* 3 */ + void (*tcl_Free) _ANSI_ARGS_((char * ptr)); /* 4 */ + char * (*tcl_Realloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 5 */ + char * (*tcl_DbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 6 */ + int (*tcl_DbCkfree) _ANSI_ARGS_((char * ptr, CONST char * file, int line)); /* 7 */ + char * (*tcl_DbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_CreateFileHandler) _ANSI_ARGS_((int fd, int mask, Tcl_FileProc * proc, ClientData clientData)); /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved9; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved9; +#endif /* MAC_TCL */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_DeleteFileHandler) _ANSI_ARGS_((int fd)); /* 10 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved10; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved10; +#endif /* MAC_TCL */ + void (*tcl_SetTimer) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 11 */ + void (*tcl_Sleep) _ANSI_ARGS_((int ms)); /* 12 */ + int (*tcl_WaitForEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 13 */ + int (*tcl_AppendAllObjTypes) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 14 */ + void (*tcl_AppendStringsToObj) _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,objPtr)); /* 15 */ + void (*tcl_AppendToObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 16 */ + Tcl_Obj * (*tcl_ConcatObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 17 */ + int (*tcl_ConvertToType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_ObjType * typePtr)); /* 18 */ + void (*tcl_DbDecrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 19 */ + void (*tcl_DbIncrRefCount) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 20 */ + int (*tcl_DbIsShared) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST char * file, int line)); /* 21 */ + Tcl_Obj * (*tcl_DbNewBooleanObj) _ANSI_ARGS_((int boolValue, CONST char * file, int line)); /* 22 */ + Tcl_Obj * (*tcl_DbNewByteArrayObj) _ANSI_ARGS_((CONST unsigned char * bytes, int length, CONST char * file, int line)); /* 23 */ + Tcl_Obj * (*tcl_DbNewDoubleObj) _ANSI_ARGS_((double doubleValue, CONST char * file, int line)); /* 24 */ + Tcl_Obj * (*tcl_DbNewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST * objv, CONST char * file, int line)); /* 25 */ + Tcl_Obj * (*tcl_DbNewLongObj) _ANSI_ARGS_((long longValue, CONST char * file, int line)); /* 26 */ + Tcl_Obj * (*tcl_DbNewObj) _ANSI_ARGS_((CONST char * file, int line)); /* 27 */ + Tcl_Obj * (*tcl_DbNewStringObj) _ANSI_ARGS_((CONST char * bytes, int length, CONST char * file, int line)); /* 28 */ + Tcl_Obj * (*tcl_DuplicateObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 29 */ + void (*tclFreeObj) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 30 */ + int (*tcl_GetBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * boolPtr)); /* 31 */ + int (*tcl_GetBooleanFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * boolPtr)); /* 32 */ + unsigned char * (*tcl_GetByteArrayFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 33 */ + int (*tcl_GetDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * doublePtr)); /* 34 */ + int (*tcl_GetDoubleFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * doublePtr)); /* 35 */ + int (*tcl_GetIndexFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST84 char ** tablePtr, CONST char * msg, int flags, int * indexPtr)); /* 36 */ + int (*tcl_GetInt) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * intPtr)); /* 37 */ + int (*tcl_GetIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * intPtr)); /* 38 */ + int (*tcl_GetLongFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * longPtr)); /* 39 */ + Tcl_ObjType * (*tcl_GetObjType) _ANSI_ARGS_((CONST char * typeName)); /* 40 */ + char * (*tcl_GetStringFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 41 */ + void (*tcl_InvalidateStringRep) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 42 */ + int (*tcl_ListObjAppendList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * elemListPtr)); /* 43 */ + int (*tcl_ListObjAppendElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, Tcl_Obj * objPtr)); /* 44 */ + int (*tcl_ListObjGetElements) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * objcPtr, Tcl_Obj *** objvPtr)); /* 45 */ + int (*tcl_ListObjIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj ** objPtrPtr)); /* 46 */ + int (*tcl_ListObjLength) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int * lengthPtr)); /* 47 */ + int (*tcl_ListObjReplace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int first, int count, int objc, Tcl_Obj *CONST objv[])); /* 48 */ + Tcl_Obj * (*tcl_NewBooleanObj) _ANSI_ARGS_((int boolValue)); /* 49 */ + Tcl_Obj * (*tcl_NewByteArrayObj) _ANSI_ARGS_((CONST unsigned char* bytes, int length)); /* 50 */ + Tcl_Obj * (*tcl_NewDoubleObj) _ANSI_ARGS_((double doubleValue)); /* 51 */ + Tcl_Obj * (*tcl_NewIntObj) _ANSI_ARGS_((int intValue)); /* 52 */ + Tcl_Obj * (*tcl_NewListObj) _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); /* 53 */ + Tcl_Obj * (*tcl_NewLongObj) _ANSI_ARGS_((long longValue)); /* 54 */ + Tcl_Obj * (*tcl_NewObj) _ANSI_ARGS_((void)); /* 55 */ + Tcl_Obj * (*tcl_NewStringObj) _ANSI_ARGS_((CONST char * bytes, int length)); /* 56 */ + void (*tcl_SetBooleanObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int boolValue)); /* 57 */ + unsigned char * (*tcl_SetByteArrayLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 58 */ + void (*tcl_SetByteArrayObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST unsigned char * bytes, int length)); /* 59 */ + void (*tcl_SetDoubleObj) _ANSI_ARGS_((Tcl_Obj * objPtr, double doubleValue)); /* 60 */ + void (*tcl_SetIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int intValue)); /* 61 */ + void (*tcl_SetListObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int objc, Tcl_Obj *CONST objv[])); /* 62 */ + void (*tcl_SetLongObj) _ANSI_ARGS_((Tcl_Obj * objPtr, long longValue)); /* 63 */ + void (*tcl_SetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 64 */ + void (*tcl_SetStringObj) _ANSI_ARGS_((Tcl_Obj* objPtr, CONST char* bytes, int length)); /* 65 */ + void (*tcl_AddErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message)); /* 66 */ + void (*tcl_AddObjErrorInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * message, int length)); /* 67 */ + void (*tcl_AllowExceptions) _ANSI_ARGS_((Tcl_Interp * interp)); /* 68 */ + void (*tcl_AppendElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 69 */ + void (*tcl_AppendResult) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 70 */ + Tcl_AsyncHandler (*tcl_AsyncCreate) _ANSI_ARGS_((Tcl_AsyncProc * proc, ClientData clientData)); /* 71 */ + void (*tcl_AsyncDelete) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 72 */ + int (*tcl_AsyncInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int code)); /* 73 */ + void (*tcl_AsyncMark) _ANSI_ARGS_((Tcl_AsyncHandler async)); /* 74 */ + int (*tcl_AsyncReady) _ANSI_ARGS_((void)); /* 75 */ + void (*tcl_BackgroundError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 76 */ + char (*tcl_Backslash) _ANSI_ARGS_((CONST char * src, int * readPtr)); /* 77 */ + int (*tcl_BadChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * optionName, CONST char * optionList)); /* 78 */ + void (*tcl_CallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 79 */ + void (*tcl_CancelIdleCall) _ANSI_ARGS_((Tcl_IdleProc * idleProc, ClientData clientData)); /* 80 */ + int (*tcl_Close) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 81 */ + int (*tcl_CommandComplete) _ANSI_ARGS_((CONST char * cmd)); /* 82 */ + char * (*tcl_Concat) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 83 */ + int (*tcl_ConvertElement) _ANSI_ARGS_((CONST char * src, char * dst, int flags)); /* 84 */ + int (*tcl_ConvertCountedElement) _ANSI_ARGS_((CONST char * src, int length, char * dst, int flags)); /* 85 */ + int (*tcl_CreateAlias) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int argc, CONST84 char * CONST * argv)); /* 86 */ + int (*tcl_CreateAliasObj) _ANSI_ARGS_((Tcl_Interp * slave, CONST char * slaveCmd, Tcl_Interp * target, CONST char * targetCmd, int objc, Tcl_Obj *CONST objv[])); /* 87 */ + Tcl_Channel (*tcl_CreateChannel) _ANSI_ARGS_((Tcl_ChannelType * typePtr, CONST char * chanName, ClientData instanceData, int mask)); /* 88 */ + void (*tcl_CreateChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, int mask, Tcl_ChannelProc * proc, ClientData clientData)); /* 89 */ + void (*tcl_CreateCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 90 */ + Tcl_Command (*tcl_CreateCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 91 */ + void (*tcl_CreateEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 92 */ + void (*tcl_CreateExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 93 */ + Tcl_Interp * (*tcl_CreateInterp) _ANSI_ARGS_((void)); /* 94 */ + void (*tcl_CreateMathFunc) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int numArgs, Tcl_ValueType * argTypes, Tcl_MathProc * proc, ClientData clientData)); /* 95 */ + Tcl_Command (*tcl_CreateObjCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_ObjCmdProc * proc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 96 */ + Tcl_Interp * (*tcl_CreateSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName, int isSafe)); /* 97 */ + Tcl_TimerToken (*tcl_CreateTimerHandler) _ANSI_ARGS_((int milliseconds, Tcl_TimerProc * proc, ClientData clientData)); /* 98 */ + Tcl_Trace (*tcl_CreateTrace) _ANSI_ARGS_((Tcl_Interp * interp, int level, Tcl_CmdTraceProc * proc, ClientData clientData)); /* 99 */ + void (*tcl_DeleteAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 100 */ + void (*tcl_DeleteChannelHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_ChannelProc * proc, ClientData clientData)); /* 101 */ + void (*tcl_DeleteCloseHandler) _ANSI_ARGS_((Tcl_Channel chan, Tcl_CloseProc * proc, ClientData clientData)); /* 102 */ + int (*tcl_DeleteCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName)); /* 103 */ + int (*tcl_DeleteCommandFromToken) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 104 */ + void (*tcl_DeleteEvents) _ANSI_ARGS_((Tcl_EventDeleteProc * proc, ClientData clientData)); /* 105 */ + void (*tcl_DeleteEventSource) _ANSI_ARGS_((Tcl_EventSetupProc * setupProc, Tcl_EventCheckProc * checkProc, ClientData clientData)); /* 106 */ + void (*tcl_DeleteExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 107 */ + void (*tcl_DeleteHashEntry) _ANSI_ARGS_((Tcl_HashEntry * entryPtr)); /* 108 */ + void (*tcl_DeleteHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 109 */ + void (*tcl_DeleteInterp) _ANSI_ARGS_((Tcl_Interp * interp)); /* 110 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tcl_DetachPids) _ANSI_ARGS_((int numPids, Tcl_Pid * pidPtr)); /* 111 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved111; +#endif /* MAC_TCL */ + void (*tcl_DeleteTimerHandler) _ANSI_ARGS_((Tcl_TimerToken token)); /* 112 */ + void (*tcl_DeleteTrace) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Trace trace)); /* 113 */ + void (*tcl_DontCallWhenDeleted) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 114 */ + int (*tcl_DoOneEvent) _ANSI_ARGS_((int flags)); /* 115 */ + void (*tcl_DoWhenIdle) _ANSI_ARGS_((Tcl_IdleProc * proc, ClientData clientData)); /* 116 */ + char * (*tcl_DStringAppend) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * str, int length)); /* 117 */ + char * (*tcl_DStringAppendElement) _ANSI_ARGS_((Tcl_DString * dsPtr, CONST char * string)); /* 118 */ + void (*tcl_DStringEndSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 119 */ + void (*tcl_DStringFree) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 120 */ + void (*tcl_DStringGetResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 121 */ + void (*tcl_DStringInit) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 122 */ + void (*tcl_DStringResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * dsPtr)); /* 123 */ + void (*tcl_DStringSetLength) _ANSI_ARGS_((Tcl_DString * dsPtr, int length)); /* 124 */ + void (*tcl_DStringStartSublist) _ANSI_ARGS_((Tcl_DString * dsPtr)); /* 125 */ + int (*tcl_Eof) _ANSI_ARGS_((Tcl_Channel chan)); /* 126 */ + CONST84_RETURN char * (*tcl_ErrnoId) _ANSI_ARGS_((void)); /* 127 */ + CONST84_RETURN char * (*tcl_ErrnoMsg) _ANSI_ARGS_((int err)); /* 128 */ + int (*tcl_Eval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 129 */ + int (*tcl_EvalFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName)); /* 130 */ + int (*tcl_EvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 131 */ + void (*tcl_EventuallyFree) _ANSI_ARGS_((ClientData clientData, Tcl_FreeProc * freeProc)); /* 132 */ + void (*tcl_Exit) _ANSI_ARGS_((int status)); /* 133 */ + int (*tcl_ExposeCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * hiddenCmdToken, CONST char * cmdName)); /* 134 */ + int (*tcl_ExprBoolean) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * ptr)); /* 135 */ + int (*tcl_ExprBooleanObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int * ptr)); /* 136 */ + int (*tcl_ExprDouble) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, double * ptr)); /* 137 */ + int (*tcl_ExprDoubleObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, double * ptr)); /* 138 */ + int (*tcl_ExprLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * ptr)); /* 139 */ + int (*tcl_ExprLongObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, long * ptr)); /* 140 */ + int (*tcl_ExprObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj ** resultPtrPtr)); /* 141 */ + int (*tcl_ExprString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 142 */ + void (*tcl_Finalize) _ANSI_ARGS_((void)); /* 143 */ + void (*tcl_FindExecutable) _ANSI_ARGS_((CONST char * argv0)); /* 144 */ + Tcl_HashEntry * (*tcl_FirstHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, Tcl_HashSearch * searchPtr)); /* 145 */ + int (*tcl_Flush) _ANSI_ARGS_((Tcl_Channel chan)); /* 146 */ + void (*tcl_FreeResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 147 */ + int (*tcl_GetAlias) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * argcPtr, CONST84 char *** argvPtr)); /* 148 */ + int (*tcl_GetAliasObj) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveCmd, Tcl_Interp ** targetInterpPtr, CONST84 char ** targetCmdPtr, int * objcPtr, Tcl_Obj *** objv)); /* 149 */ + ClientData (*tcl_GetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc ** procPtr)); /* 150 */ + Tcl_Channel (*tcl_GetChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * chanName, int * modePtr)); /* 151 */ + int (*tcl_GetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan)); /* 152 */ + int (*tcl_GetChannelHandle) _ANSI_ARGS_((Tcl_Channel chan, int direction, ClientData * handlePtr)); /* 153 */ + ClientData (*tcl_GetChannelInstanceData) _ANSI_ARGS_((Tcl_Channel chan)); /* 154 */ + int (*tcl_GetChannelMode) _ANSI_ARGS_((Tcl_Channel chan)); /* 155 */ + CONST84_RETURN char * (*tcl_GetChannelName) _ANSI_ARGS_((Tcl_Channel chan)); /* 156 */ + int (*tcl_GetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, Tcl_DString * dsPtr)); /* 157 */ + Tcl_ChannelType * (*tcl_GetChannelType) _ANSI_ARGS_((Tcl_Channel chan)); /* 158 */ + int (*tcl_GetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, Tcl_CmdInfo * infoPtr)); /* 159 */ + CONST84_RETURN char * (*tcl_GetCommandName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command)); /* 160 */ + int (*tcl_GetErrno) _ANSI_ARGS_((void)); /* 161 */ + CONST84_RETURN char * (*tcl_GetHostName) _ANSI_ARGS_((void)); /* 162 */ + int (*tcl_GetInterpPath) _ANSI_ARGS_((Tcl_Interp * askInterp, Tcl_Interp * slaveInterp)); /* 163 */ + Tcl_Interp * (*tcl_GetMaster) _ANSI_ARGS_((Tcl_Interp * interp)); /* 164 */ + CONST char * (*tcl_GetNameOfExecutable) _ANSI_ARGS_((void)); /* 165 */ + Tcl_Obj * (*tcl_GetObjResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 166 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tcl_GetOpenFile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int forWriting, int checkUsage, ClientData * filePtr)); /* 167 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void *reserved167; +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved167; +#endif /* MAC_TCL */ + Tcl_PathType (*tcl_GetPathType) _ANSI_ARGS_((CONST char * path)); /* 168 */ + int (*tcl_Gets) _ANSI_ARGS_((Tcl_Channel chan, Tcl_DString * dsPtr)); /* 169 */ + int (*tcl_GetsObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 170 */ + int (*tcl_GetServiceMode) _ANSI_ARGS_((void)); /* 171 */ + Tcl_Interp * (*tcl_GetSlave) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * slaveName)); /* 172 */ + Tcl_Channel (*tcl_GetStdChannel) _ANSI_ARGS_((int type)); /* 173 */ + CONST84_RETURN char * (*tcl_GetStringResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 174 */ + CONST84_RETURN char * (*tcl_GetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 175 */ + CONST84_RETURN char * (*tcl_GetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 176 */ + int (*tcl_GlobalEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command)); /* 177 */ + int (*tcl_GlobalEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 178 */ + int (*tcl_HideCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST char * hiddenCmdToken)); /* 179 */ + int (*tcl_Init) _ANSI_ARGS_((Tcl_Interp * interp)); /* 180 */ + void (*tcl_InitHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType)); /* 181 */ + int (*tcl_InputBlocked) _ANSI_ARGS_((Tcl_Channel chan)); /* 182 */ + int (*tcl_InputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 183 */ + int (*tcl_InterpDeleted) _ANSI_ARGS_((Tcl_Interp * interp)); /* 184 */ + int (*tcl_IsSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 185 */ + char * (*tcl_JoinPath) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv, Tcl_DString * resultPtr)); /* 186 */ + int (*tcl_LinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, char * addr, int type)); /* 187 */ + void *reserved188; + Tcl_Channel (*tcl_MakeFileChannel) _ANSI_ARGS_((ClientData handle, int mode)); /* 189 */ + int (*tcl_MakeSafe) _ANSI_ARGS_((Tcl_Interp * interp)); /* 190 */ + Tcl_Channel (*tcl_MakeTcpClientChannel) _ANSI_ARGS_((ClientData tcpSocket)); /* 191 */ + char * (*tcl_Merge) _ANSI_ARGS_((int argc, CONST84 char * CONST * argv)); /* 192 */ + Tcl_HashEntry * (*tcl_NextHashEntry) _ANSI_ARGS_((Tcl_HashSearch * searchPtr)); /* 193 */ + void (*tcl_NotifyChannel) _ANSI_ARGS_((Tcl_Channel channel, int mask)); /* 194 */ + Tcl_Obj * (*tcl_ObjGetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, int flags)); /* 195 */ + Tcl_Obj * (*tcl_ObjSetVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, Tcl_Obj * newValuePtr, int flags)); /* 196 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_Channel (*tcl_OpenCommandChannel) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 197 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved197; +#endif /* MAC_TCL */ + Tcl_Channel (*tcl_OpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * fileName, CONST char * modeString, int permissions)); /* 198 */ + Tcl_Channel (*tcl_OpenTcpClient) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * address, CONST char * myaddr, int myport, int async)); /* 199 */ + Tcl_Channel (*tcl_OpenTcpServer) _ANSI_ARGS_((Tcl_Interp * interp, int port, CONST char * host, Tcl_TcpAcceptProc * acceptProc, ClientData callbackData)); /* 200 */ + void (*tcl_Preserve) _ANSI_ARGS_((ClientData data)); /* 201 */ + void (*tcl_PrintDouble) _ANSI_ARGS_((Tcl_Interp * interp, double value, char * dst)); /* 202 */ + int (*tcl_PutEnv) _ANSI_ARGS_((CONST char * string)); /* 203 */ + CONST84_RETURN char * (*tcl_PosixError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 204 */ + void (*tcl_QueueEvent) _ANSI_ARGS_((Tcl_Event * evPtr, Tcl_QueuePosition position)); /* 205 */ + int (*tcl_Read) _ANSI_ARGS_((Tcl_Channel chan, char * bufPtr, int toRead)); /* 206 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tcl_ReapDetachedProcs) _ANSI_ARGS_((void)); /* 207 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved207; +#endif /* MAC_TCL */ + int (*tcl_RecordAndEval) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmd, int flags)); /* 208 */ + int (*tcl_RecordAndEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * cmdPtr, int flags)); /* 209 */ + void (*tcl_RegisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 210 */ + void (*tcl_RegisterObjType) _ANSI_ARGS_((Tcl_ObjType * typePtr)); /* 211 */ + Tcl_RegExp (*tcl_RegExpCompile) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string)); /* 212 */ + int (*tcl_RegExpExec) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, CONST char * str, CONST char * start)); /* 213 */ + int (*tcl_RegExpMatch) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST char * pattern)); /* 214 */ + void (*tcl_RegExpRange) _ANSI_ARGS_((Tcl_RegExp regexp, int index, CONST84 char ** startPtr, CONST84 char ** endPtr)); /* 215 */ + void (*tcl_Release) _ANSI_ARGS_((ClientData clientData)); /* 216 */ + void (*tcl_ResetResult) _ANSI_ARGS_((Tcl_Interp * interp)); /* 217 */ + int (*tcl_ScanElement) _ANSI_ARGS_((CONST char * str, int * flagPtr)); /* 218 */ + int (*tcl_ScanCountedElement) _ANSI_ARGS_((CONST char * str, int length, int * flagPtr)); /* 219 */ + int (*tcl_SeekOld) _ANSI_ARGS_((Tcl_Channel chan, int offset, int mode)); /* 220 */ + int (*tcl_ServiceAll) _ANSI_ARGS_((void)); /* 221 */ + int (*tcl_ServiceEvent) _ANSI_ARGS_((int flags)); /* 222 */ + void (*tcl_SetAssocData) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_InterpDeleteProc * proc, ClientData clientData)); /* 223 */ + void (*tcl_SetChannelBufferSize) _ANSI_ARGS_((Tcl_Channel chan, int sz)); /* 224 */ + int (*tcl_SetChannelOption) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, CONST char * optionName, CONST char * newValue)); /* 225 */ + int (*tcl_SetCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * cmdName, CONST Tcl_CmdInfo * infoPtr)); /* 226 */ + void (*tcl_SetErrno) _ANSI_ARGS_((int err)); /* 227 */ + void (*tcl_SetErrorCode) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 228 */ + void (*tcl_SetMaxBlockTime) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 229 */ + void (*tcl_SetPanicProc) _ANSI_ARGS_((Tcl_PanicProc * panicProc)); /* 230 */ + int (*tcl_SetRecursionLimit) _ANSI_ARGS_((Tcl_Interp * interp, int depth)); /* 231 */ + void (*tcl_SetResult) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tcl_FreeProc * freeProc)); /* 232 */ + int (*tcl_SetServiceMode) _ANSI_ARGS_((int mode)); /* 233 */ + void (*tcl_SetObjErrorCode) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * errorObjPtr)); /* 234 */ + void (*tcl_SetObjResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * resultObjPtr)); /* 235 */ + void (*tcl_SetStdChannel) _ANSI_ARGS_((Tcl_Channel channel, int type)); /* 236 */ + CONST84_RETURN char * (*tcl_SetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, CONST char * newValue, int flags)); /* 237 */ + CONST84_RETURN char * (*tcl_SetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, CONST char * newValue, int flags)); /* 238 */ + CONST84_RETURN char * (*tcl_SignalId) _ANSI_ARGS_((int sig)); /* 239 */ + CONST84_RETURN char * (*tcl_SignalMsg) _ANSI_ARGS_((int sig)); /* 240 */ + void (*tcl_SourceRCFile) _ANSI_ARGS_((Tcl_Interp * interp)); /* 241 */ + int (*tcl_SplitList) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int * argcPtr, CONST84 char *** argvPtr)); /* 242 */ + void (*tcl_SplitPath) _ANSI_ARGS_((CONST char * path, int * argcPtr, CONST84 char *** argvPtr)); /* 243 */ + void (*tcl_StaticPackage) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pkgName, Tcl_PackageInitProc * initProc, Tcl_PackageInitProc * safeInitProc)); /* 244 */ + int (*tcl_StringMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern)); /* 245 */ + int (*tcl_TellOld) _ANSI_ARGS_((Tcl_Channel chan)); /* 246 */ + int (*tcl_TraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 247 */ + int (*tcl_TraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 248 */ + char * (*tcl_TranslateFileName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_DString * bufferPtr)); /* 249 */ + int (*tcl_Ungets) _ANSI_ARGS_((Tcl_Channel chan, CONST char * str, int len, int atHead)); /* 250 */ + void (*tcl_UnlinkVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 251 */ + int (*tcl_UnregisterChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 252 */ + int (*tcl_UnsetVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags)); /* 253 */ + int (*tcl_UnsetVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 254 */ + void (*tcl_UntraceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 255 */ + void (*tcl_UntraceVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * proc, ClientData clientData)); /* 256 */ + void (*tcl_UpdateLinkedVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 257 */ + int (*tcl_UpVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * varName, CONST char * localName, int flags)); /* 258 */ + int (*tcl_UpVar2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * frameName, CONST char * part1, CONST char * part2, CONST char * localName, int flags)); /* 259 */ + int (*tcl_VarEval) _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); /* 260 */ + ClientData (*tcl_VarTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 261 */ + ClientData (*tcl_VarTraceInfo2) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, Tcl_VarTraceProc * procPtr, ClientData prevClientData)); /* 262 */ + int (*tcl_Write) _ANSI_ARGS_((Tcl_Channel chan, CONST char * s, int slen)); /* 263 */ + void (*tcl_WrongNumArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], CONST char * message)); /* 264 */ + int (*tcl_DumpActiveMemory) _ANSI_ARGS_((CONST char * fileName)); /* 265 */ + void (*tcl_ValidateAllMemory) _ANSI_ARGS_((CONST char * file, int line)); /* 266 */ + void (*tcl_AppendResultVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 267 */ + void (*tcl_AppendStringsToObjVA) _ANSI_ARGS_((Tcl_Obj * objPtr, va_list argList)); /* 268 */ + CONST84_RETURN char * (*tcl_HashStats) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 269 */ + CONST84_RETURN char * (*tcl_ParseVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CONST84 char ** termPtr)); /* 270 */ + CONST84_RETURN char * (*tcl_PkgPresent) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 271 */ + CONST84_RETURN char * (*tcl_PkgPresentEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr)); /* 272 */ + int (*tcl_PkgProvide) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version)); /* 273 */ + CONST84_RETURN char * (*tcl_PkgRequire) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, CONST char * version, int exact)); /* 274 */ + void (*tcl_SetErrorCodeVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 275 */ + int (*tcl_VarEvalVA) _ANSI_ARGS_((Tcl_Interp * interp, va_list argList)); /* 276 */ + Tcl_Pid (*tcl_WaitPid) _ANSI_ARGS_((Tcl_Pid pid, int * statPtr, int options)); /* 277 */ + void (*tcl_PanicVA) _ANSI_ARGS_((CONST char * format, va_list argList)); /* 278 */ + void (*tcl_GetVersion) _ANSI_ARGS_((int * major, int * minor, int * patchLevel, int * type)); /* 279 */ + void (*tcl_InitMemory) _ANSI_ARGS_((Tcl_Interp * interp)); /* 280 */ + Tcl_Channel (*tcl_StackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_ChannelType * typePtr, ClientData instanceData, int mask, Tcl_Channel prevChan)); /* 281 */ + int (*tcl_UnstackChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 282 */ + Tcl_Channel (*tcl_GetStackedChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 283 */ + void (*tcl_SetMainLoop) _ANSI_ARGS_((Tcl_MainLoopProc * proc)); /* 284 */ + void *reserved285; + void (*tcl_AppendObjToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_Obj * appendObjPtr)); /* 286 */ + Tcl_Encoding (*tcl_CreateEncoding) _ANSI_ARGS_((Tcl_EncodingType * typePtr)); /* 287 */ + void (*tcl_CreateThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 288 */ + void (*tcl_DeleteThreadExitHandler) _ANSI_ARGS_((Tcl_ExitProc * proc, ClientData clientData)); /* 289 */ + void (*tcl_DiscardResult) _ANSI_ARGS_((Tcl_SavedResult * statePtr)); /* 290 */ + int (*tcl_EvalEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, int numBytes, int flags)); /* 291 */ + int (*tcl_EvalObjv) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 292 */ + int (*tcl_EvalObjEx) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 293 */ + void (*tcl_ExitThread) _ANSI_ARGS_((int status)); /* 294 */ + int (*tcl_ExternalToUtf) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 295 */ + char * (*tcl_ExternalToUtfDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 296 */ + void (*tcl_FinalizeThread) _ANSI_ARGS_((void)); /* 297 */ + void (*tcl_FinalizeNotifier) _ANSI_ARGS_((ClientData clientData)); /* 298 */ + void (*tcl_FreeEncoding) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 299 */ + Tcl_ThreadId (*tcl_GetCurrentThread) _ANSI_ARGS_((void)); /* 300 */ + Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */ + CONST84_RETURN char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */ + void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */ + int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST VOID * tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */ + VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */ + Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags)); /* 306 */ + ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */ + void (*tcl_MutexLock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 308 */ + void (*tcl_MutexUnlock) _ANSI_ARGS_((Tcl_Mutex * mutexPtr)); /* 309 */ + void (*tcl_ConditionNotify) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 310 */ + void (*tcl_ConditionWait) _ANSI_ARGS_((Tcl_Condition * condPtr, Tcl_Mutex * mutexPtr, Tcl_Time * timePtr)); /* 311 */ + int (*tcl_NumUtfChars) _ANSI_ARGS_((CONST char * src, int len)); /* 312 */ + int (*tcl_ReadChars) _ANSI_ARGS_((Tcl_Channel channel, Tcl_Obj * objPtr, int charsToRead, int appendFlag)); /* 313 */ + void (*tcl_RestoreResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 314 */ + void (*tcl_SaveResult) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_SavedResult * statePtr)); /* 315 */ + int (*tcl_SetSystemEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 316 */ + Tcl_Obj * (*tcl_SetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, Tcl_Obj * newValuePtr, int flags)); /* 317 */ + void (*tcl_ThreadAlert) _ANSI_ARGS_((Tcl_ThreadId threadId)); /* 318 */ + void (*tcl_ThreadQueueEvent) _ANSI_ARGS_((Tcl_ThreadId threadId, Tcl_Event* evPtr, Tcl_QueuePosition position)); /* 319 */ + Tcl_UniChar (*tcl_UniCharAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 320 */ + Tcl_UniChar (*tcl_UniCharToLower) _ANSI_ARGS_((int ch)); /* 321 */ + Tcl_UniChar (*tcl_UniCharToTitle) _ANSI_ARGS_((int ch)); /* 322 */ + Tcl_UniChar (*tcl_UniCharToUpper) _ANSI_ARGS_((int ch)); /* 323 */ + int (*tcl_UniCharToUtf) _ANSI_ARGS_((int ch, char * buf)); /* 324 */ + CONST84_RETURN char * (*tcl_UtfAtIndex) _ANSI_ARGS_((CONST char * src, int index)); /* 325 */ + int (*tcl_UtfCharComplete) _ANSI_ARGS_((CONST char * src, int len)); /* 326 */ + int (*tcl_UtfBackslash) _ANSI_ARGS_((CONST char * src, int * readPtr, char * dst)); /* 327 */ + CONST84_RETURN char * (*tcl_UtfFindFirst) _ANSI_ARGS_((CONST char * src, int ch)); /* 328 */ + CONST84_RETURN char * (*tcl_UtfFindLast) _ANSI_ARGS_((CONST char * src, int ch)); /* 329 */ + CONST84_RETURN char * (*tcl_UtfNext) _ANSI_ARGS_((CONST char * src)); /* 330 */ + CONST84_RETURN char * (*tcl_UtfPrev) _ANSI_ARGS_((CONST char * src, CONST char * start)); /* 331 */ + int (*tcl_UtfToExternal) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Encoding encoding, CONST char * src, int srcLen, int flags, Tcl_EncodingState * statePtr, char * dst, int dstLen, int * srcReadPtr, int * dstWrotePtr, int * dstCharsPtr)); /* 332 */ + char * (*tcl_UtfToExternalDString) _ANSI_ARGS_((Tcl_Encoding encoding, CONST char * src, int srcLen, Tcl_DString * dsPtr)); /* 333 */ + int (*tcl_UtfToLower) _ANSI_ARGS_((char * src)); /* 334 */ + int (*tcl_UtfToTitle) _ANSI_ARGS_((char * src)); /* 335 */ + int (*tcl_UtfToUniChar) _ANSI_ARGS_((CONST char * src, Tcl_UniChar * chPtr)); /* 336 */ + int (*tcl_UtfToUpper) _ANSI_ARGS_((char * src)); /* 337 */ + int (*tcl_WriteChars) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 338 */ + int (*tcl_WriteObj) _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj * objPtr)); /* 339 */ + char * (*tcl_GetString) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 340 */ + CONST84_RETURN char * (*tcl_GetDefaultEncodingDir) _ANSI_ARGS_((void)); /* 341 */ + void (*tcl_SetDefaultEncodingDir) _ANSI_ARGS_((CONST char * path)); /* 342 */ + void (*tcl_AlertNotifier) _ANSI_ARGS_((ClientData clientData)); /* 343 */ + void (*tcl_ServiceModeHook) _ANSI_ARGS_((int mode)); /* 344 */ + int (*tcl_UniCharIsAlnum) _ANSI_ARGS_((int ch)); /* 345 */ + int (*tcl_UniCharIsAlpha) _ANSI_ARGS_((int ch)); /* 346 */ + int (*tcl_UniCharIsDigit) _ANSI_ARGS_((int ch)); /* 347 */ + int (*tcl_UniCharIsLower) _ANSI_ARGS_((int ch)); /* 348 */ + int (*tcl_UniCharIsSpace) _ANSI_ARGS_((int ch)); /* 349 */ + int (*tcl_UniCharIsUpper) _ANSI_ARGS_((int ch)); /* 350 */ + int (*tcl_UniCharIsWordChar) _ANSI_ARGS_((int ch)); /* 351 */ + int (*tcl_UniCharLen) _ANSI_ARGS_((CONST Tcl_UniChar * str)); /* 352 */ + int (*tcl_UniCharNcmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 353 */ + char * (*tcl_UniCharToUtfDString) _ANSI_ARGS_((CONST Tcl_UniChar * string, int numChars, Tcl_DString * dsPtr)); /* 354 */ + Tcl_UniChar * (*tcl_UtfToUniCharDString) _ANSI_ARGS_((CONST char * string, int length, Tcl_DString * dsPtr)); /* 355 */ + Tcl_RegExp (*tcl_GetRegExpFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * patObj, int flags)); /* 356 */ + Tcl_Obj * (*tcl_EvalTokens) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 357 */ + void (*tcl_FreeParse) _ANSI_ARGS_((Tcl_Parse * parsePtr)); /* 358 */ + void (*tcl_LogCommandInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * script, CONST char * command, int length)); /* 359 */ + int (*tcl_ParseBraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 360 */ + int (*tcl_ParseCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, int nested, Tcl_Parse * parsePtr)); /* 361 */ + int (*tcl_ParseExpr) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr)); /* 362 */ + int (*tcl_ParseQuotedString) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append, CONST84 char ** termPtr)); /* 363 */ + int (*tcl_ParseVarName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, int numBytes, Tcl_Parse * parsePtr, int append)); /* 364 */ + char * (*tcl_GetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 365 */ + int (*tcl_Chdir) _ANSI_ARGS_((CONST char * dirName)); /* 366 */ + int (*tcl_Access) _ANSI_ARGS_((CONST char * path, int mode)); /* 367 */ + int (*tcl_Stat) _ANSI_ARGS_((CONST char * path, struct stat * bufPtr)); /* 368 */ + int (*tcl_UtfNcmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 369 */ + int (*tcl_UtfNcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 370 */ + int (*tcl_StringCaseMatch) _ANSI_ARGS_((CONST char * str, CONST char * pattern, int nocase)); /* 371 */ + int (*tcl_UniCharIsControl) _ANSI_ARGS_((int ch)); /* 372 */ + int (*tcl_UniCharIsGraph) _ANSI_ARGS_((int ch)); /* 373 */ + int (*tcl_UniCharIsPrint) _ANSI_ARGS_((int ch)); /* 374 */ + int (*tcl_UniCharIsPunct) _ANSI_ARGS_((int ch)); /* 375 */ + int (*tcl_RegExpExecObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp regexp, Tcl_Obj * objPtr, int offset, int nmatches, int flags)); /* 376 */ + void (*tcl_RegExpGetInfo) _ANSI_ARGS_((Tcl_RegExp regexp, Tcl_RegExpInfo * infoPtr)); /* 377 */ + Tcl_Obj * (*tcl_NewUnicodeObj) _ANSI_ARGS_((CONST Tcl_UniChar * unicode, int numChars)); /* 378 */ + void (*tcl_SetUnicodeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int numChars)); /* 379 */ + int (*tcl_GetCharLength) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 380 */ + Tcl_UniChar (*tcl_GetUniChar) _ANSI_ARGS_((Tcl_Obj * objPtr, int index)); /* 381 */ + Tcl_UniChar * (*tcl_GetUnicode) _ANSI_ARGS_((Tcl_Obj * objPtr)); /* 382 */ + Tcl_Obj * (*tcl_GetRange) _ANSI_ARGS_((Tcl_Obj * objPtr, int first, int last)); /* 383 */ + void (*tcl_AppendUnicodeToObj) _ANSI_ARGS_((Tcl_Obj * objPtr, CONST Tcl_UniChar * unicode, int length)); /* 384 */ + int (*tcl_RegExpMatchObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * stringObj, Tcl_Obj * patternObj)); /* 385 */ + void (*tcl_SetNotifier) _ANSI_ARGS_((Tcl_NotifierProcs * notifierProcPtr)); /* 386 */ + Tcl_Mutex * (*tcl_GetAllocMutex) _ANSI_ARGS_((void)); /* 387 */ + int (*tcl_GetChannelNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 388 */ + int (*tcl_GetChannelNamesEx) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 389 */ + int (*tcl_ProcObjCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 390 */ + void (*tcl_ConditionFinalize) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 391 */ + void (*tcl_MutexFinalize) _ANSI_ARGS_((Tcl_Mutex * mutex)); /* 392 */ + int (*tcl_CreateThread) _ANSI_ARGS_((Tcl_ThreadId * idPtr, Tcl_ThreadCreateProc proc, ClientData clientData, int stackSize, int flags)); /* 393 */ + int (*tcl_ReadRaw) _ANSI_ARGS_((Tcl_Channel chan, char * dst, int bytesToRead)); /* 394 */ + int (*tcl_WriteRaw) _ANSI_ARGS_((Tcl_Channel chan, CONST char * src, int srcLen)); /* 395 */ + Tcl_Channel (*tcl_GetTopChannel) _ANSI_ARGS_((Tcl_Channel chan)); /* 396 */ + int (*tcl_ChannelBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 397 */ + CONST84_RETURN char * (*tcl_ChannelName) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 398 */ + Tcl_ChannelTypeVersion (*tcl_ChannelVersion) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 399 */ + Tcl_DriverBlockModeProc * (*tcl_ChannelBlockModeProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 400 */ + Tcl_DriverCloseProc * (*tcl_ChannelCloseProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 401 */ + Tcl_DriverClose2Proc * (*tcl_ChannelClose2Proc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 402 */ + Tcl_DriverInputProc * (*tcl_ChannelInputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 403 */ + Tcl_DriverOutputProc * (*tcl_ChannelOutputProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 404 */ + Tcl_DriverSeekProc * (*tcl_ChannelSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 405 */ + Tcl_DriverSetOptionProc * (*tcl_ChannelSetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 406 */ + Tcl_DriverGetOptionProc * (*tcl_ChannelGetOptionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 407 */ + Tcl_DriverWatchProc * (*tcl_ChannelWatchProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 408 */ + Tcl_DriverGetHandleProc * (*tcl_ChannelGetHandleProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 409 */ + Tcl_DriverFlushProc * (*tcl_ChannelFlushProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 410 */ + Tcl_DriverHandlerProc * (*tcl_ChannelHandlerProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 411 */ + int (*tcl_JoinThread) _ANSI_ARGS_((Tcl_ThreadId threadId, int* result)); /* 412 */ + int (*tcl_IsChannelShared) _ANSI_ARGS_((Tcl_Channel channel)); /* 413 */ + int (*tcl_IsChannelRegistered) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 414 */ + void (*tcl_CutChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 415 */ + void (*tcl_SpliceChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 416 */ + void (*tcl_ClearChannelHandlers) _ANSI_ARGS_((Tcl_Channel channel)); /* 417 */ + int (*tcl_IsChannelExisting) _ANSI_ARGS_((CONST char* channelName)); /* 418 */ + int (*tcl_UniCharNcasecmp) _ANSI_ARGS_((CONST Tcl_UniChar * cs, CONST Tcl_UniChar * ct, unsigned long n)); /* 419 */ + int (*tcl_UniCharCaseMatch) _ANSI_ARGS_((CONST Tcl_UniChar * ustr, CONST Tcl_UniChar * pattern, int nocase)); /* 420 */ + Tcl_HashEntry * (*tcl_FindHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key)); /* 421 */ + Tcl_HashEntry * (*tcl_CreateHashEntry) _ANSI_ARGS_((Tcl_HashTable * tablePtr, CONST char * key, int * newPtr)); /* 422 */ + void (*tcl_InitCustomHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr, int keyType, Tcl_HashKeyType * typePtr)); /* 423 */ + void (*tcl_InitObjHashTable) _ANSI_ARGS_((Tcl_HashTable * tablePtr)); /* 424 */ + ClientData (*tcl_CommandTraceInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * procPtr, ClientData prevClientData)); /* 425 */ + int (*tcl_TraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 426 */ + void (*tcl_UntraceCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName, int flags, Tcl_CommandTraceProc * proc, ClientData clientData)); /* 427 */ + char * (*tcl_AttemptAlloc) _ANSI_ARGS_((unsigned int size)); /* 428 */ + char * (*tcl_AttemptDbCkalloc) _ANSI_ARGS_((unsigned int size, CONST char * file, int line)); /* 429 */ + char * (*tcl_AttemptRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 430 */ + char * (*tcl_AttemptDbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, CONST char * file, int line)); /* 431 */ + int (*tcl_AttemptSetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 432 */ + Tcl_ThreadId (*tcl_GetChannelThread) _ANSI_ARGS_((Tcl_Channel channel)); /* 433 */ + Tcl_UniChar * (*tcl_GetUnicodeFromObj) _ANSI_ARGS_((Tcl_Obj * objPtr, int * lengthPtr)); /* 434 */ + int (*tcl_GetMathFuncInfo) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int * numArgsPtr, Tcl_ValueType ** argTypesPtr, Tcl_MathProc ** procPtr, ClientData * clientDataPtr)); /* 435 */ + Tcl_Obj * (*tcl_ListMathFuncs) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pattern)); /* 436 */ + Tcl_Obj * (*tcl_SubstObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int flags)); /* 437 */ + int (*tcl_DetachChannel) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Channel channel)); /* 438 */ + int (*tcl_IsStandardChannel) _ANSI_ARGS_((Tcl_Channel channel)); /* 439 */ + int (*tcl_FSCopyFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 440 */ + int (*tcl_FSCopyDirectory) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, Tcl_Obj ** errorPtr)); /* 441 */ + int (*tcl_FSCreateDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 442 */ + int (*tcl_FSDeleteFile) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 443 */ + int (*tcl_FSLoadFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * sym1, CONST char * sym2, Tcl_PackageInitProc ** proc1Ptr, Tcl_PackageInitProc ** proc2Ptr, Tcl_LoadHandle * handlePtr, Tcl_FSUnloadFileProc ** unloadProcPtr)); /* 444 */ + int (*tcl_FSMatchInDirectory) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * result, Tcl_Obj * pathPtr, CONST char * pattern, Tcl_GlobTypeData * types)); /* 445 */ + Tcl_Obj * (*tcl_FSLink) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj * toPtr, int linkAction)); /* 446 */ + int (*tcl_FSRemoveDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr, int recursive, Tcl_Obj ** errorPtr)); /* 447 */ + int (*tcl_FSRenameFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 448 */ + int (*tcl_FSLstat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 449 */ + int (*tcl_FSUtime) _ANSI_ARGS_((Tcl_Obj * pathPtr, struct utimbuf * tval)); /* 450 */ + int (*tcl_FSFileAttrsGet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 451 */ + int (*tcl_FSFileAttrsSet) _ANSI_ARGS_((Tcl_Interp * interp, int index, Tcl_Obj * pathPtr, Tcl_Obj * objPtr)); /* 452 */ + CONST char ** (*tcl_FSFileAttrStrings) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_Obj ** objPtrRef)); /* 453 */ + int (*tcl_FSStat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 454 */ + int (*tcl_FSAccess) _ANSI_ARGS_((Tcl_Obj * pathPtr, int mode)); /* 455 */ + Tcl_Channel (*tcl_FSOpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, CONST char * modeString, int permissions)); /* 456 */ + Tcl_Obj* (*tcl_FSGetCwd) _ANSI_ARGS_((Tcl_Interp * interp)); /* 457 */ + int (*tcl_FSChdir) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 458 */ + int (*tcl_FSConvertToPathType) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr)); /* 459 */ + Tcl_Obj* (*tcl_FSJoinPath) _ANSI_ARGS_((Tcl_Obj * listObj, int elements)); /* 460 */ + Tcl_Obj* (*tcl_FSSplitPath) _ANSI_ARGS_((Tcl_Obj* pathPtr, int * lenPtr)); /* 461 */ + int (*tcl_FSEqualPaths) _ANSI_ARGS_((Tcl_Obj* firstPtr, Tcl_Obj* secondPtr)); /* 462 */ + Tcl_Obj* (*tcl_FSGetNormalizedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathObjPtr)); /* 463 */ + Tcl_Obj* (*tcl_FSJoinToPath) _ANSI_ARGS_((Tcl_Obj * basePtr, int objc, Tcl_Obj *CONST objv[])); /* 464 */ + ClientData (*tcl_FSGetInternalRep) _ANSI_ARGS_((Tcl_Obj* pathObjPtr, Tcl_Filesystem * fsPtr)); /* 465 */ + Tcl_Obj* (*tcl_FSGetTranslatedPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 466 */ + int (*tcl_FSEvalFile) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * fileName)); /* 467 */ + Tcl_Obj* (*tcl_FSNewNativePath) _ANSI_ARGS_((Tcl_Filesystem* fromFilesystem, ClientData clientData)); /* 468 */ + CONST char* (*tcl_FSGetNativePath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 469 */ + Tcl_Obj* (*tcl_FSFileSystemInfo) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 470 */ + Tcl_Obj* (*tcl_FSPathSeparator) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 471 */ + Tcl_Obj* (*tcl_FSListVolumes) _ANSI_ARGS_((void)); /* 472 */ + int (*tcl_FSRegister) _ANSI_ARGS_((ClientData clientData, Tcl_Filesystem * fsPtr)); /* 473 */ + int (*tcl_FSUnregister) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 474 */ + ClientData (*tcl_FSData) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 475 */ + CONST char* (*tcl_FSGetTranslatedStringPath) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj* pathPtr)); /* 476 */ + Tcl_Filesystem* (*tcl_FSGetFileSystemForPath) _ANSI_ARGS_((Tcl_Obj* pathObjPtr)); /* 477 */ + Tcl_PathType (*tcl_FSGetPathType) _ANSI_ARGS_((Tcl_Obj * pathObjPtr)); /* 478 */ + int (*tcl_OutputBuffered) _ANSI_ARGS_((Tcl_Channel chan)); /* 479 */ + void (*tcl_FSMountsChanged) _ANSI_ARGS_((Tcl_Filesystem * fsPtr)); /* 480 */ + int (*tcl_EvalTokensStandard) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Token * tokenPtr, int count)); /* 481 */ + void (*tcl_GetTime) _ANSI_ARGS_((Tcl_Time* timeBuf)); /* 482 */ + Tcl_Trace (*tcl_CreateObjTrace) _ANSI_ARGS_((Tcl_Interp* interp, int level, int flags, Tcl_CmdObjTraceProc* objProc, ClientData clientData, Tcl_CmdObjTraceDeleteProc* delProc)); /* 483 */ + int (*tcl_GetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, Tcl_CmdInfo* infoPtr)); /* 484 */ + int (*tcl_SetCommandInfoFromToken) _ANSI_ARGS_((Tcl_Command token, CONST Tcl_CmdInfo* infoPtr)); /* 485 */ + Tcl_Obj * (*tcl_DbNewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue, CONST char * file, int line)); /* 486 */ + int (*tcl_GetWideIntFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_WideInt * widePtr)); /* 487 */ + Tcl_Obj * (*tcl_NewWideIntObj) _ANSI_ARGS_((Tcl_WideInt wideValue)); /* 488 */ + void (*tcl_SetWideIntObj) _ANSI_ARGS_((Tcl_Obj * objPtr, Tcl_WideInt wideValue)); /* 489 */ + Tcl_StatBuf * (*tcl_AllocStatBuf) _ANSI_ARGS_((void)); /* 490 */ + Tcl_WideInt (*tcl_Seek) _ANSI_ARGS_((Tcl_Channel chan, Tcl_WideInt offset, int mode)); /* 491 */ + Tcl_WideInt (*tcl_Tell) _ANSI_ARGS_((Tcl_Channel chan)); /* 492 */ + Tcl_DriverWideSeekProc * (*tcl_ChannelWideSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 493 */ +} TclStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclStubs *tclStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#ifndef Tcl_PkgProvideEx +#define Tcl_PkgProvideEx \ + (tclStubsPtr->tcl_PkgProvideEx) /* 0 */ +#endif +#ifndef Tcl_PkgRequireEx +#define Tcl_PkgRequireEx \ + (tclStubsPtr->tcl_PkgRequireEx) /* 1 */ +#endif +#ifndef Tcl_Panic +#define Tcl_Panic \ + (tclStubsPtr->tcl_Panic) /* 2 */ +#endif +#ifndef Tcl_Alloc +#define Tcl_Alloc \ + (tclStubsPtr->tcl_Alloc) /* 3 */ +#endif +#ifndef Tcl_Free +#define Tcl_Free \ + (tclStubsPtr->tcl_Free) /* 4 */ +#endif +#ifndef Tcl_Realloc +#define Tcl_Realloc \ + (tclStubsPtr->tcl_Realloc) /* 5 */ +#endif +#ifndef Tcl_DbCkalloc +#define Tcl_DbCkalloc \ + (tclStubsPtr->tcl_DbCkalloc) /* 6 */ +#endif +#ifndef Tcl_DbCkfree +#define Tcl_DbCkfree \ + (tclStubsPtr->tcl_DbCkfree) /* 7 */ +#endif +#ifndef Tcl_DbCkrealloc +#define Tcl_DbCkrealloc \ + (tclStubsPtr->tcl_DbCkrealloc) /* 8 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_CreateFileHandler +#define Tcl_CreateFileHandler \ + (tclStubsPtr->tcl_CreateFileHandler) /* 9 */ +#endif +#endif /* UNIX */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_DeleteFileHandler +#define Tcl_DeleteFileHandler \ + (tclStubsPtr->tcl_DeleteFileHandler) /* 10 */ +#endif +#endif /* UNIX */ +#ifndef Tcl_SetTimer +#define Tcl_SetTimer \ + (tclStubsPtr->tcl_SetTimer) /* 11 */ +#endif +#ifndef Tcl_Sleep +#define Tcl_Sleep \ + (tclStubsPtr->tcl_Sleep) /* 12 */ +#endif +#ifndef Tcl_WaitForEvent +#define Tcl_WaitForEvent \ + (tclStubsPtr->tcl_WaitForEvent) /* 13 */ +#endif +#ifndef Tcl_AppendAllObjTypes +#define Tcl_AppendAllObjTypes \ + (tclStubsPtr->tcl_AppendAllObjTypes) /* 14 */ +#endif +#ifndef Tcl_AppendStringsToObj +#define Tcl_AppendStringsToObj \ + (tclStubsPtr->tcl_AppendStringsToObj) /* 15 */ +#endif +#ifndef Tcl_AppendToObj +#define Tcl_AppendToObj \ + (tclStubsPtr->tcl_AppendToObj) /* 16 */ +#endif +#ifndef Tcl_ConcatObj +#define Tcl_ConcatObj \ + (tclStubsPtr->tcl_ConcatObj) /* 17 */ +#endif +#ifndef Tcl_ConvertToType +#define Tcl_ConvertToType \ + (tclStubsPtr->tcl_ConvertToType) /* 18 */ +#endif +#ifndef Tcl_DbDecrRefCount +#define Tcl_DbDecrRefCount \ + (tclStubsPtr->tcl_DbDecrRefCount) /* 19 */ +#endif +#ifndef Tcl_DbIncrRefCount +#define Tcl_DbIncrRefCount \ + (tclStubsPtr->tcl_DbIncrRefCount) /* 20 */ +#endif +#ifndef Tcl_DbIsShared +#define Tcl_DbIsShared \ + (tclStubsPtr->tcl_DbIsShared) /* 21 */ +#endif +#ifndef Tcl_DbNewBooleanObj +#define Tcl_DbNewBooleanObj \ + (tclStubsPtr->tcl_DbNewBooleanObj) /* 22 */ +#endif +#ifndef Tcl_DbNewByteArrayObj +#define Tcl_DbNewByteArrayObj \ + (tclStubsPtr->tcl_DbNewByteArrayObj) /* 23 */ +#endif +#ifndef Tcl_DbNewDoubleObj +#define Tcl_DbNewDoubleObj \ + (tclStubsPtr->tcl_DbNewDoubleObj) /* 24 */ +#endif +#ifndef Tcl_DbNewListObj +#define Tcl_DbNewListObj \ + (tclStubsPtr->tcl_DbNewListObj) /* 25 */ +#endif +#ifndef Tcl_DbNewLongObj +#define Tcl_DbNewLongObj \ + (tclStubsPtr->tcl_DbNewLongObj) /* 26 */ +#endif +#ifndef Tcl_DbNewObj +#define Tcl_DbNewObj \ + (tclStubsPtr->tcl_DbNewObj) /* 27 */ +#endif +#ifndef Tcl_DbNewStringObj +#define Tcl_DbNewStringObj \ + (tclStubsPtr->tcl_DbNewStringObj) /* 28 */ +#endif +#ifndef Tcl_DuplicateObj +#define Tcl_DuplicateObj \ + (tclStubsPtr->tcl_DuplicateObj) /* 29 */ +#endif +#ifndef TclFreeObj +#define TclFreeObj \ + (tclStubsPtr->tclFreeObj) /* 30 */ +#endif +#ifndef Tcl_GetBoolean +#define Tcl_GetBoolean \ + (tclStubsPtr->tcl_GetBoolean) /* 31 */ +#endif +#ifndef Tcl_GetBooleanFromObj +#define Tcl_GetBooleanFromObj \ + (tclStubsPtr->tcl_GetBooleanFromObj) /* 32 */ +#endif +#ifndef Tcl_GetByteArrayFromObj +#define Tcl_GetByteArrayFromObj \ + (tclStubsPtr->tcl_GetByteArrayFromObj) /* 33 */ +#endif +#ifndef Tcl_GetDouble +#define Tcl_GetDouble \ + (tclStubsPtr->tcl_GetDouble) /* 34 */ +#endif +#ifndef Tcl_GetDoubleFromObj +#define Tcl_GetDoubleFromObj \ + (tclStubsPtr->tcl_GetDoubleFromObj) /* 35 */ +#endif +#ifndef Tcl_GetIndexFromObj +#define Tcl_GetIndexFromObj \ + (tclStubsPtr->tcl_GetIndexFromObj) /* 36 */ +#endif +#ifndef Tcl_GetInt +#define Tcl_GetInt \ + (tclStubsPtr->tcl_GetInt) /* 37 */ +#endif +#ifndef Tcl_GetIntFromObj +#define Tcl_GetIntFromObj \ + (tclStubsPtr->tcl_GetIntFromObj) /* 38 */ +#endif +#ifndef Tcl_GetLongFromObj +#define Tcl_GetLongFromObj \ + (tclStubsPtr->tcl_GetLongFromObj) /* 39 */ +#endif +#ifndef Tcl_GetObjType +#define Tcl_GetObjType \ + (tclStubsPtr->tcl_GetObjType) /* 40 */ +#endif +#ifndef Tcl_GetStringFromObj +#define Tcl_GetStringFromObj \ + (tclStubsPtr->tcl_GetStringFromObj) /* 41 */ +#endif +#ifndef Tcl_InvalidateStringRep +#define Tcl_InvalidateStringRep \ + (tclStubsPtr->tcl_InvalidateStringRep) /* 42 */ +#endif +#ifndef Tcl_ListObjAppendList +#define Tcl_ListObjAppendList \ + (tclStubsPtr->tcl_ListObjAppendList) /* 43 */ +#endif +#ifndef Tcl_ListObjAppendElement +#define Tcl_ListObjAppendElement \ + (tclStubsPtr->tcl_ListObjAppendElement) /* 44 */ +#endif +#ifndef Tcl_ListObjGetElements +#define Tcl_ListObjGetElements \ + (tclStubsPtr->tcl_ListObjGetElements) /* 45 */ +#endif +#ifndef Tcl_ListObjIndex +#define Tcl_ListObjIndex \ + (tclStubsPtr->tcl_ListObjIndex) /* 46 */ +#endif +#ifndef Tcl_ListObjLength +#define Tcl_ListObjLength \ + (tclStubsPtr->tcl_ListObjLength) /* 47 */ +#endif +#ifndef Tcl_ListObjReplace +#define Tcl_ListObjReplace \ + (tclStubsPtr->tcl_ListObjReplace) /* 48 */ +#endif +#ifndef Tcl_NewBooleanObj +#define Tcl_NewBooleanObj \ + (tclStubsPtr->tcl_NewBooleanObj) /* 49 */ +#endif +#ifndef Tcl_NewByteArrayObj +#define Tcl_NewByteArrayObj \ + (tclStubsPtr->tcl_NewByteArrayObj) /* 50 */ +#endif +#ifndef Tcl_NewDoubleObj +#define Tcl_NewDoubleObj \ + (tclStubsPtr->tcl_NewDoubleObj) /* 51 */ +#endif +#ifndef Tcl_NewIntObj +#define Tcl_NewIntObj \ + (tclStubsPtr->tcl_NewIntObj) /* 52 */ +#endif +#ifndef Tcl_NewListObj +#define Tcl_NewListObj \ + (tclStubsPtr->tcl_NewListObj) /* 53 */ +#endif +#ifndef Tcl_NewLongObj +#define Tcl_NewLongObj \ + (tclStubsPtr->tcl_NewLongObj) /* 54 */ +#endif +#ifndef Tcl_NewObj +#define Tcl_NewObj \ + (tclStubsPtr->tcl_NewObj) /* 55 */ +#endif +#ifndef Tcl_NewStringObj +#define Tcl_NewStringObj \ + (tclStubsPtr->tcl_NewStringObj) /* 56 */ +#endif +#ifndef Tcl_SetBooleanObj +#define Tcl_SetBooleanObj \ + (tclStubsPtr->tcl_SetBooleanObj) /* 57 */ +#endif +#ifndef Tcl_SetByteArrayLength +#define Tcl_SetByteArrayLength \ + (tclStubsPtr->tcl_SetByteArrayLength) /* 58 */ +#endif +#ifndef Tcl_SetByteArrayObj +#define Tcl_SetByteArrayObj \ + (tclStubsPtr->tcl_SetByteArrayObj) /* 59 */ +#endif +#ifndef Tcl_SetDoubleObj +#define Tcl_SetDoubleObj \ + (tclStubsPtr->tcl_SetDoubleObj) /* 60 */ +#endif +#ifndef Tcl_SetIntObj +#define Tcl_SetIntObj \ + (tclStubsPtr->tcl_SetIntObj) /* 61 */ +#endif +#ifndef Tcl_SetListObj +#define Tcl_SetListObj \ + (tclStubsPtr->tcl_SetListObj) /* 62 */ +#endif +#ifndef Tcl_SetLongObj +#define Tcl_SetLongObj \ + (tclStubsPtr->tcl_SetLongObj) /* 63 */ +#endif +#ifndef Tcl_SetObjLength +#define Tcl_SetObjLength \ + (tclStubsPtr->tcl_SetObjLength) /* 64 */ +#endif +#ifndef Tcl_SetStringObj +#define Tcl_SetStringObj \ + (tclStubsPtr->tcl_SetStringObj) /* 65 */ +#endif +#ifndef Tcl_AddErrorInfo +#define Tcl_AddErrorInfo \ + (tclStubsPtr->tcl_AddErrorInfo) /* 66 */ +#endif +#ifndef Tcl_AddObjErrorInfo +#define Tcl_AddObjErrorInfo \ + (tclStubsPtr->tcl_AddObjErrorInfo) /* 67 */ +#endif +#ifndef Tcl_AllowExceptions +#define Tcl_AllowExceptions \ + (tclStubsPtr->tcl_AllowExceptions) /* 68 */ +#endif +#ifndef Tcl_AppendElement +#define Tcl_AppendElement \ + (tclStubsPtr->tcl_AppendElement) /* 69 */ +#endif +#ifndef Tcl_AppendResult +#define Tcl_AppendResult \ + (tclStubsPtr->tcl_AppendResult) /* 70 */ +#endif +#ifndef Tcl_AsyncCreate +#define Tcl_AsyncCreate \ + (tclStubsPtr->tcl_AsyncCreate) /* 71 */ +#endif +#ifndef Tcl_AsyncDelete +#define Tcl_AsyncDelete \ + (tclStubsPtr->tcl_AsyncDelete) /* 72 */ +#endif +#ifndef Tcl_AsyncInvoke +#define Tcl_AsyncInvoke \ + (tclStubsPtr->tcl_AsyncInvoke) /* 73 */ +#endif +#ifndef Tcl_AsyncMark +#define Tcl_AsyncMark \ + (tclStubsPtr->tcl_AsyncMark) /* 74 */ +#endif +#ifndef Tcl_AsyncReady +#define Tcl_AsyncReady \ + (tclStubsPtr->tcl_AsyncReady) /* 75 */ +#endif +#ifndef Tcl_BackgroundError +#define Tcl_BackgroundError \ + (tclStubsPtr->tcl_BackgroundError) /* 76 */ +#endif +#ifndef Tcl_Backslash +#define Tcl_Backslash \ + (tclStubsPtr->tcl_Backslash) /* 77 */ +#endif +#ifndef Tcl_BadChannelOption +#define Tcl_BadChannelOption \ + (tclStubsPtr->tcl_BadChannelOption) /* 78 */ +#endif +#ifndef Tcl_CallWhenDeleted +#define Tcl_CallWhenDeleted \ + (tclStubsPtr->tcl_CallWhenDeleted) /* 79 */ +#endif +#ifndef Tcl_CancelIdleCall +#define Tcl_CancelIdleCall \ + (tclStubsPtr->tcl_CancelIdleCall) /* 80 */ +#endif +#ifndef Tcl_Close +#define Tcl_Close \ + (tclStubsPtr->tcl_Close) /* 81 */ +#endif +#ifndef Tcl_CommandComplete +#define Tcl_CommandComplete \ + (tclStubsPtr->tcl_CommandComplete) /* 82 */ +#endif +#ifndef Tcl_Concat +#define Tcl_Concat \ + (tclStubsPtr->tcl_Concat) /* 83 */ +#endif +#ifndef Tcl_ConvertElement +#define Tcl_ConvertElement \ + (tclStubsPtr->tcl_ConvertElement) /* 84 */ +#endif +#ifndef Tcl_ConvertCountedElement +#define Tcl_ConvertCountedElement \ + (tclStubsPtr->tcl_ConvertCountedElement) /* 85 */ +#endif +#ifndef Tcl_CreateAlias +#define Tcl_CreateAlias \ + (tclStubsPtr->tcl_CreateAlias) /* 86 */ +#endif +#ifndef Tcl_CreateAliasObj +#define Tcl_CreateAliasObj \ + (tclStubsPtr->tcl_CreateAliasObj) /* 87 */ +#endif +#ifndef Tcl_CreateChannel +#define Tcl_CreateChannel \ + (tclStubsPtr->tcl_CreateChannel) /* 88 */ +#endif +#ifndef Tcl_CreateChannelHandler +#define Tcl_CreateChannelHandler \ + (tclStubsPtr->tcl_CreateChannelHandler) /* 89 */ +#endif +#ifndef Tcl_CreateCloseHandler +#define Tcl_CreateCloseHandler \ + (tclStubsPtr->tcl_CreateCloseHandler) /* 90 */ +#endif +#ifndef Tcl_CreateCommand +#define Tcl_CreateCommand \ + (tclStubsPtr->tcl_CreateCommand) /* 91 */ +#endif +#ifndef Tcl_CreateEventSource +#define Tcl_CreateEventSource \ + (tclStubsPtr->tcl_CreateEventSource) /* 92 */ +#endif +#ifndef Tcl_CreateExitHandler +#define Tcl_CreateExitHandler \ + (tclStubsPtr->tcl_CreateExitHandler) /* 93 */ +#endif +#ifndef Tcl_CreateInterp +#define Tcl_CreateInterp \ + (tclStubsPtr->tcl_CreateInterp) /* 94 */ +#endif +#ifndef Tcl_CreateMathFunc +#define Tcl_CreateMathFunc \ + (tclStubsPtr->tcl_CreateMathFunc) /* 95 */ +#endif +#ifndef Tcl_CreateObjCommand +#define Tcl_CreateObjCommand \ + (tclStubsPtr->tcl_CreateObjCommand) /* 96 */ +#endif +#ifndef Tcl_CreateSlave +#define Tcl_CreateSlave \ + (tclStubsPtr->tcl_CreateSlave) /* 97 */ +#endif +#ifndef Tcl_CreateTimerHandler +#define Tcl_CreateTimerHandler \ + (tclStubsPtr->tcl_CreateTimerHandler) /* 98 */ +#endif +#ifndef Tcl_CreateTrace +#define Tcl_CreateTrace \ + (tclStubsPtr->tcl_CreateTrace) /* 99 */ +#endif +#ifndef Tcl_DeleteAssocData +#define Tcl_DeleteAssocData \ + (tclStubsPtr->tcl_DeleteAssocData) /* 100 */ +#endif +#ifndef Tcl_DeleteChannelHandler +#define Tcl_DeleteChannelHandler \ + (tclStubsPtr->tcl_DeleteChannelHandler) /* 101 */ +#endif +#ifndef Tcl_DeleteCloseHandler +#define Tcl_DeleteCloseHandler \ + (tclStubsPtr->tcl_DeleteCloseHandler) /* 102 */ +#endif +#ifndef Tcl_DeleteCommand +#define Tcl_DeleteCommand \ + (tclStubsPtr->tcl_DeleteCommand) /* 103 */ +#endif +#ifndef Tcl_DeleteCommandFromToken +#define Tcl_DeleteCommandFromToken \ + (tclStubsPtr->tcl_DeleteCommandFromToken) /* 104 */ +#endif +#ifndef Tcl_DeleteEvents +#define Tcl_DeleteEvents \ + (tclStubsPtr->tcl_DeleteEvents) /* 105 */ +#endif +#ifndef Tcl_DeleteEventSource +#define Tcl_DeleteEventSource \ + (tclStubsPtr->tcl_DeleteEventSource) /* 106 */ +#endif +#ifndef Tcl_DeleteExitHandler +#define Tcl_DeleteExitHandler \ + (tclStubsPtr->tcl_DeleteExitHandler) /* 107 */ +#endif +#ifndef Tcl_DeleteHashEntry +#define Tcl_DeleteHashEntry \ + (tclStubsPtr->tcl_DeleteHashEntry) /* 108 */ +#endif +#ifndef Tcl_DeleteHashTable +#define Tcl_DeleteHashTable \ + (tclStubsPtr->tcl_DeleteHashTable) /* 109 */ +#endif +#ifndef Tcl_DeleteInterp +#define Tcl_DeleteInterp \ + (tclStubsPtr->tcl_DeleteInterp) /* 110 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_DetachPids +#define Tcl_DetachPids \ + (tclStubsPtr->tcl_DetachPids) /* 111 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_DetachPids +#define Tcl_DetachPids \ + (tclStubsPtr->tcl_DetachPids) /* 111 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_DeleteTimerHandler +#define Tcl_DeleteTimerHandler \ + (tclStubsPtr->tcl_DeleteTimerHandler) /* 112 */ +#endif +#ifndef Tcl_DeleteTrace +#define Tcl_DeleteTrace \ + (tclStubsPtr->tcl_DeleteTrace) /* 113 */ +#endif +#ifndef Tcl_DontCallWhenDeleted +#define Tcl_DontCallWhenDeleted \ + (tclStubsPtr->tcl_DontCallWhenDeleted) /* 114 */ +#endif +#ifndef Tcl_DoOneEvent +#define Tcl_DoOneEvent \ + (tclStubsPtr->tcl_DoOneEvent) /* 115 */ +#endif +#ifndef Tcl_DoWhenIdle +#define Tcl_DoWhenIdle \ + (tclStubsPtr->tcl_DoWhenIdle) /* 116 */ +#endif +#ifndef Tcl_DStringAppend +#define Tcl_DStringAppend \ + (tclStubsPtr->tcl_DStringAppend) /* 117 */ +#endif +#ifndef Tcl_DStringAppendElement +#define Tcl_DStringAppendElement \ + (tclStubsPtr->tcl_DStringAppendElement) /* 118 */ +#endif +#ifndef Tcl_DStringEndSublist +#define Tcl_DStringEndSublist \ + (tclStubsPtr->tcl_DStringEndSublist) /* 119 */ +#endif +#ifndef Tcl_DStringFree +#define Tcl_DStringFree \ + (tclStubsPtr->tcl_DStringFree) /* 120 */ +#endif +#ifndef Tcl_DStringGetResult +#define Tcl_DStringGetResult \ + (tclStubsPtr->tcl_DStringGetResult) /* 121 */ +#endif +#ifndef Tcl_DStringInit +#define Tcl_DStringInit \ + (tclStubsPtr->tcl_DStringInit) /* 122 */ +#endif +#ifndef Tcl_DStringResult +#define Tcl_DStringResult \ + (tclStubsPtr->tcl_DStringResult) /* 123 */ +#endif +#ifndef Tcl_DStringSetLength +#define Tcl_DStringSetLength \ + (tclStubsPtr->tcl_DStringSetLength) /* 124 */ +#endif +#ifndef Tcl_DStringStartSublist +#define Tcl_DStringStartSublist \ + (tclStubsPtr->tcl_DStringStartSublist) /* 125 */ +#endif +#ifndef Tcl_Eof +#define Tcl_Eof \ + (tclStubsPtr->tcl_Eof) /* 126 */ +#endif +#ifndef Tcl_ErrnoId +#define Tcl_ErrnoId \ + (tclStubsPtr->tcl_ErrnoId) /* 127 */ +#endif +#ifndef Tcl_ErrnoMsg +#define Tcl_ErrnoMsg \ + (tclStubsPtr->tcl_ErrnoMsg) /* 128 */ +#endif +#ifndef Tcl_Eval +#define Tcl_Eval \ + (tclStubsPtr->tcl_Eval) /* 129 */ +#endif +#ifndef Tcl_EvalFile +#define Tcl_EvalFile \ + (tclStubsPtr->tcl_EvalFile) /* 130 */ +#endif +#ifndef Tcl_EvalObj +#define Tcl_EvalObj \ + (tclStubsPtr->tcl_EvalObj) /* 131 */ +#endif +#ifndef Tcl_EventuallyFree +#define Tcl_EventuallyFree \ + (tclStubsPtr->tcl_EventuallyFree) /* 132 */ +#endif +#ifndef Tcl_Exit +#define Tcl_Exit \ + (tclStubsPtr->tcl_Exit) /* 133 */ +#endif +#ifndef Tcl_ExposeCommand +#define Tcl_ExposeCommand \ + (tclStubsPtr->tcl_ExposeCommand) /* 134 */ +#endif +#ifndef Tcl_ExprBoolean +#define Tcl_ExprBoolean \ + (tclStubsPtr->tcl_ExprBoolean) /* 135 */ +#endif +#ifndef Tcl_ExprBooleanObj +#define Tcl_ExprBooleanObj \ + (tclStubsPtr->tcl_ExprBooleanObj) /* 136 */ +#endif +#ifndef Tcl_ExprDouble +#define Tcl_ExprDouble \ + (tclStubsPtr->tcl_ExprDouble) /* 137 */ +#endif +#ifndef Tcl_ExprDoubleObj +#define Tcl_ExprDoubleObj \ + (tclStubsPtr->tcl_ExprDoubleObj) /* 138 */ +#endif +#ifndef Tcl_ExprLong +#define Tcl_ExprLong \ + (tclStubsPtr->tcl_ExprLong) /* 139 */ +#endif +#ifndef Tcl_ExprLongObj +#define Tcl_ExprLongObj \ + (tclStubsPtr->tcl_ExprLongObj) /* 140 */ +#endif +#ifndef Tcl_ExprObj +#define Tcl_ExprObj \ + (tclStubsPtr->tcl_ExprObj) /* 141 */ +#endif +#ifndef Tcl_ExprString +#define Tcl_ExprString \ + (tclStubsPtr->tcl_ExprString) /* 142 */ +#endif +#ifndef Tcl_Finalize +#define Tcl_Finalize \ + (tclStubsPtr->tcl_Finalize) /* 143 */ +#endif +#ifndef Tcl_FindExecutable +#define Tcl_FindExecutable \ + (tclStubsPtr->tcl_FindExecutable) /* 144 */ +#endif +#ifndef Tcl_FirstHashEntry +#define Tcl_FirstHashEntry \ + (tclStubsPtr->tcl_FirstHashEntry) /* 145 */ +#endif +#ifndef Tcl_Flush +#define Tcl_Flush \ + (tclStubsPtr->tcl_Flush) /* 146 */ +#endif +#ifndef Tcl_FreeResult +#define Tcl_FreeResult \ + (tclStubsPtr->tcl_FreeResult) /* 147 */ +#endif +#ifndef Tcl_GetAlias +#define Tcl_GetAlias \ + (tclStubsPtr->tcl_GetAlias) /* 148 */ +#endif +#ifndef Tcl_GetAliasObj +#define Tcl_GetAliasObj \ + (tclStubsPtr->tcl_GetAliasObj) /* 149 */ +#endif +#ifndef Tcl_GetAssocData +#define Tcl_GetAssocData \ + (tclStubsPtr->tcl_GetAssocData) /* 150 */ +#endif +#ifndef Tcl_GetChannel +#define Tcl_GetChannel \ + (tclStubsPtr->tcl_GetChannel) /* 151 */ +#endif +#ifndef Tcl_GetChannelBufferSize +#define Tcl_GetChannelBufferSize \ + (tclStubsPtr->tcl_GetChannelBufferSize) /* 152 */ +#endif +#ifndef Tcl_GetChannelHandle +#define Tcl_GetChannelHandle \ + (tclStubsPtr->tcl_GetChannelHandle) /* 153 */ +#endif +#ifndef Tcl_GetChannelInstanceData +#define Tcl_GetChannelInstanceData \ + (tclStubsPtr->tcl_GetChannelInstanceData) /* 154 */ +#endif +#ifndef Tcl_GetChannelMode +#define Tcl_GetChannelMode \ + (tclStubsPtr->tcl_GetChannelMode) /* 155 */ +#endif +#ifndef Tcl_GetChannelName +#define Tcl_GetChannelName \ + (tclStubsPtr->tcl_GetChannelName) /* 156 */ +#endif +#ifndef Tcl_GetChannelOption +#define Tcl_GetChannelOption \ + (tclStubsPtr->tcl_GetChannelOption) /* 157 */ +#endif +#ifndef Tcl_GetChannelType +#define Tcl_GetChannelType \ + (tclStubsPtr->tcl_GetChannelType) /* 158 */ +#endif +#ifndef Tcl_GetCommandInfo +#define Tcl_GetCommandInfo \ + (tclStubsPtr->tcl_GetCommandInfo) /* 159 */ +#endif +#ifndef Tcl_GetCommandName +#define Tcl_GetCommandName \ + (tclStubsPtr->tcl_GetCommandName) /* 160 */ +#endif +#ifndef Tcl_GetErrno +#define Tcl_GetErrno \ + (tclStubsPtr->tcl_GetErrno) /* 161 */ +#endif +#ifndef Tcl_GetHostName +#define Tcl_GetHostName \ + (tclStubsPtr->tcl_GetHostName) /* 162 */ +#endif +#ifndef Tcl_GetInterpPath +#define Tcl_GetInterpPath \ + (tclStubsPtr->tcl_GetInterpPath) /* 163 */ +#endif +#ifndef Tcl_GetMaster +#define Tcl_GetMaster \ + (tclStubsPtr->tcl_GetMaster) /* 164 */ +#endif +#ifndef Tcl_GetNameOfExecutable +#define Tcl_GetNameOfExecutable \ + (tclStubsPtr->tcl_GetNameOfExecutable) /* 165 */ +#endif +#ifndef Tcl_GetObjResult +#define Tcl_GetObjResult \ + (tclStubsPtr->tcl_GetObjResult) /* 166 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_GetOpenFile +#define Tcl_GetOpenFile \ + (tclStubsPtr->tcl_GetOpenFile) /* 167 */ +#endif +#endif /* UNIX */ +#ifndef Tcl_GetPathType +#define Tcl_GetPathType \ + (tclStubsPtr->tcl_GetPathType) /* 168 */ +#endif +#ifndef Tcl_Gets +#define Tcl_Gets \ + (tclStubsPtr->tcl_Gets) /* 169 */ +#endif +#ifndef Tcl_GetsObj +#define Tcl_GetsObj \ + (tclStubsPtr->tcl_GetsObj) /* 170 */ +#endif +#ifndef Tcl_GetServiceMode +#define Tcl_GetServiceMode \ + (tclStubsPtr->tcl_GetServiceMode) /* 171 */ +#endif +#ifndef Tcl_GetSlave +#define Tcl_GetSlave \ + (tclStubsPtr->tcl_GetSlave) /* 172 */ +#endif +#ifndef Tcl_GetStdChannel +#define Tcl_GetStdChannel \ + (tclStubsPtr->tcl_GetStdChannel) /* 173 */ +#endif +#ifndef Tcl_GetStringResult +#define Tcl_GetStringResult \ + (tclStubsPtr->tcl_GetStringResult) /* 174 */ +#endif +#ifndef Tcl_GetVar +#define Tcl_GetVar \ + (tclStubsPtr->tcl_GetVar) /* 175 */ +#endif +#ifndef Tcl_GetVar2 +#define Tcl_GetVar2 \ + (tclStubsPtr->tcl_GetVar2) /* 176 */ +#endif +#ifndef Tcl_GlobalEval +#define Tcl_GlobalEval \ + (tclStubsPtr->tcl_GlobalEval) /* 177 */ +#endif +#ifndef Tcl_GlobalEvalObj +#define Tcl_GlobalEvalObj \ + (tclStubsPtr->tcl_GlobalEvalObj) /* 178 */ +#endif +#ifndef Tcl_HideCommand +#define Tcl_HideCommand \ + (tclStubsPtr->tcl_HideCommand) /* 179 */ +#endif +#ifndef Tcl_Init +#define Tcl_Init \ + (tclStubsPtr->tcl_Init) /* 180 */ +#endif +#ifndef Tcl_InitHashTable +#define Tcl_InitHashTable \ + (tclStubsPtr->tcl_InitHashTable) /* 181 */ +#endif +#ifndef Tcl_InputBlocked +#define Tcl_InputBlocked \ + (tclStubsPtr->tcl_InputBlocked) /* 182 */ +#endif +#ifndef Tcl_InputBuffered +#define Tcl_InputBuffered \ + (tclStubsPtr->tcl_InputBuffered) /* 183 */ +#endif +#ifndef Tcl_InterpDeleted +#define Tcl_InterpDeleted \ + (tclStubsPtr->tcl_InterpDeleted) /* 184 */ +#endif +#ifndef Tcl_IsSafe +#define Tcl_IsSafe \ + (tclStubsPtr->tcl_IsSafe) /* 185 */ +#endif +#ifndef Tcl_JoinPath +#define Tcl_JoinPath \ + (tclStubsPtr->tcl_JoinPath) /* 186 */ +#endif +#ifndef Tcl_LinkVar +#define Tcl_LinkVar \ + (tclStubsPtr->tcl_LinkVar) /* 187 */ +#endif +/* Slot 188 is reserved */ +#ifndef Tcl_MakeFileChannel +#define Tcl_MakeFileChannel \ + (tclStubsPtr->tcl_MakeFileChannel) /* 189 */ +#endif +#ifndef Tcl_MakeSafe +#define Tcl_MakeSafe \ + (tclStubsPtr->tcl_MakeSafe) /* 190 */ +#endif +#ifndef Tcl_MakeTcpClientChannel +#define Tcl_MakeTcpClientChannel \ + (tclStubsPtr->tcl_MakeTcpClientChannel) /* 191 */ +#endif +#ifndef Tcl_Merge +#define Tcl_Merge \ + (tclStubsPtr->tcl_Merge) /* 192 */ +#endif +#ifndef Tcl_NextHashEntry +#define Tcl_NextHashEntry \ + (tclStubsPtr->tcl_NextHashEntry) /* 193 */ +#endif +#ifndef Tcl_NotifyChannel +#define Tcl_NotifyChannel \ + (tclStubsPtr->tcl_NotifyChannel) /* 194 */ +#endif +#ifndef Tcl_ObjGetVar2 +#define Tcl_ObjGetVar2 \ + (tclStubsPtr->tcl_ObjGetVar2) /* 195 */ +#endif +#ifndef Tcl_ObjSetVar2 +#define Tcl_ObjSetVar2 \ + (tclStubsPtr->tcl_ObjSetVar2) /* 196 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_OpenCommandChannel +#define Tcl_OpenCommandChannel \ + (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_OpenCommandChannel +#define Tcl_OpenCommandChannel \ + (tclStubsPtr->tcl_OpenCommandChannel) /* 197 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_OpenFileChannel +#define Tcl_OpenFileChannel \ + (tclStubsPtr->tcl_OpenFileChannel) /* 198 */ +#endif +#ifndef Tcl_OpenTcpClient +#define Tcl_OpenTcpClient \ + (tclStubsPtr->tcl_OpenTcpClient) /* 199 */ +#endif +#ifndef Tcl_OpenTcpServer +#define Tcl_OpenTcpServer \ + (tclStubsPtr->tcl_OpenTcpServer) /* 200 */ +#endif +#ifndef Tcl_Preserve +#define Tcl_Preserve \ + (tclStubsPtr->tcl_Preserve) /* 201 */ +#endif +#ifndef Tcl_PrintDouble +#define Tcl_PrintDouble \ + (tclStubsPtr->tcl_PrintDouble) /* 202 */ +#endif +#ifndef Tcl_PutEnv +#define Tcl_PutEnv \ + (tclStubsPtr->tcl_PutEnv) /* 203 */ +#endif +#ifndef Tcl_PosixError +#define Tcl_PosixError \ + (tclStubsPtr->tcl_PosixError) /* 204 */ +#endif +#ifndef Tcl_QueueEvent +#define Tcl_QueueEvent \ + (tclStubsPtr->tcl_QueueEvent) /* 205 */ +#endif +#ifndef Tcl_Read +#define Tcl_Read \ + (tclStubsPtr->tcl_Read) /* 206 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef Tcl_ReapDetachedProcs +#define Tcl_ReapDetachedProcs \ + (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef Tcl_ReapDetachedProcs +#define Tcl_ReapDetachedProcs \ + (tclStubsPtr->tcl_ReapDetachedProcs) /* 207 */ +#endif +#endif /* __WIN32__ */ +#ifndef Tcl_RecordAndEval +#define Tcl_RecordAndEval \ + (tclStubsPtr->tcl_RecordAndEval) /* 208 */ +#endif +#ifndef Tcl_RecordAndEvalObj +#define Tcl_RecordAndEvalObj \ + (tclStubsPtr->tcl_RecordAndEvalObj) /* 209 */ +#endif +#ifndef Tcl_RegisterChannel +#define Tcl_RegisterChannel \ + (tclStubsPtr->tcl_RegisterChannel) /* 210 */ +#endif +#ifndef Tcl_RegisterObjType +#define Tcl_RegisterObjType \ + (tclStubsPtr->tcl_RegisterObjType) /* 211 */ +#endif +#ifndef Tcl_RegExpCompile +#define Tcl_RegExpCompile \ + (tclStubsPtr->tcl_RegExpCompile) /* 212 */ +#endif +#ifndef Tcl_RegExpExec +#define Tcl_RegExpExec \ + (tclStubsPtr->tcl_RegExpExec) /* 213 */ +#endif +#ifndef Tcl_RegExpMatch +#define Tcl_RegExpMatch \ + (tclStubsPtr->tcl_RegExpMatch) /* 214 */ +#endif +#ifndef Tcl_RegExpRange +#define Tcl_RegExpRange \ + (tclStubsPtr->tcl_RegExpRange) /* 215 */ +#endif +#ifndef Tcl_Release +#define Tcl_Release \ + (tclStubsPtr->tcl_Release) /* 216 */ +#endif +#ifndef Tcl_ResetResult +#define Tcl_ResetResult \ + (tclStubsPtr->tcl_ResetResult) /* 217 */ +#endif +#ifndef Tcl_ScanElement +#define Tcl_ScanElement \ + (tclStubsPtr->tcl_ScanElement) /* 218 */ +#endif +#ifndef Tcl_ScanCountedElement +#define Tcl_ScanCountedElement \ + (tclStubsPtr->tcl_ScanCountedElement) /* 219 */ +#endif +#ifndef Tcl_SeekOld +#define Tcl_SeekOld \ + (tclStubsPtr->tcl_SeekOld) /* 220 */ +#endif +#ifndef Tcl_ServiceAll +#define Tcl_ServiceAll \ + (tclStubsPtr->tcl_ServiceAll) /* 221 */ +#endif +#ifndef Tcl_ServiceEvent +#define Tcl_ServiceEvent \ + (tclStubsPtr->tcl_ServiceEvent) /* 222 */ +#endif +#ifndef Tcl_SetAssocData +#define Tcl_SetAssocData \ + (tclStubsPtr->tcl_SetAssocData) /* 223 */ +#endif +#ifndef Tcl_SetChannelBufferSize +#define Tcl_SetChannelBufferSize \ + (tclStubsPtr->tcl_SetChannelBufferSize) /* 224 */ +#endif +#ifndef Tcl_SetChannelOption +#define Tcl_SetChannelOption \ + (tclStubsPtr->tcl_SetChannelOption) /* 225 */ +#endif +#ifndef Tcl_SetCommandInfo +#define Tcl_SetCommandInfo \ + (tclStubsPtr->tcl_SetCommandInfo) /* 226 */ +#endif +#ifndef Tcl_SetErrno +#define Tcl_SetErrno \ + (tclStubsPtr->tcl_SetErrno) /* 227 */ +#endif +#ifndef Tcl_SetErrorCode +#define Tcl_SetErrorCode \ + (tclStubsPtr->tcl_SetErrorCode) /* 228 */ +#endif +#ifndef Tcl_SetMaxBlockTime +#define Tcl_SetMaxBlockTime \ + (tclStubsPtr->tcl_SetMaxBlockTime) /* 229 */ +#endif +#ifndef Tcl_SetPanicProc +#define Tcl_SetPanicProc \ + (tclStubsPtr->tcl_SetPanicProc) /* 230 */ +#endif +#ifndef Tcl_SetRecursionLimit +#define Tcl_SetRecursionLimit \ + (tclStubsPtr->tcl_SetRecursionLimit) /* 231 */ +#endif +#ifndef Tcl_SetResult +#define Tcl_SetResult \ + (tclStubsPtr->tcl_SetResult) /* 232 */ +#endif +#ifndef Tcl_SetServiceMode +#define Tcl_SetServiceMode \ + (tclStubsPtr->tcl_SetServiceMode) /* 233 */ +#endif +#ifndef Tcl_SetObjErrorCode +#define Tcl_SetObjErrorCode \ + (tclStubsPtr->tcl_SetObjErrorCode) /* 234 */ +#endif +#ifndef Tcl_SetObjResult +#define Tcl_SetObjResult \ + (tclStubsPtr->tcl_SetObjResult) /* 235 */ +#endif +#ifndef Tcl_SetStdChannel +#define Tcl_SetStdChannel \ + (tclStubsPtr->tcl_SetStdChannel) /* 236 */ +#endif +#ifndef Tcl_SetVar +#define Tcl_SetVar \ + (tclStubsPtr->tcl_SetVar) /* 237 */ +#endif +#ifndef Tcl_SetVar2 +#define Tcl_SetVar2 \ + (tclStubsPtr->tcl_SetVar2) /* 238 */ +#endif +#ifndef Tcl_SignalId +#define Tcl_SignalId \ + (tclStubsPtr->tcl_SignalId) /* 239 */ +#endif +#ifndef Tcl_SignalMsg +#define Tcl_SignalMsg \ + (tclStubsPtr->tcl_SignalMsg) /* 240 */ +#endif +#ifndef Tcl_SourceRCFile +#define Tcl_SourceRCFile \ + (tclStubsPtr->tcl_SourceRCFile) /* 241 */ +#endif +#ifndef Tcl_SplitList +#define Tcl_SplitList \ + (tclStubsPtr->tcl_SplitList) /* 242 */ +#endif +#ifndef Tcl_SplitPath +#define Tcl_SplitPath \ + (tclStubsPtr->tcl_SplitPath) /* 243 */ +#endif +#ifndef Tcl_StaticPackage +#define Tcl_StaticPackage \ + (tclStubsPtr->tcl_StaticPackage) /* 244 */ +#endif +#ifndef Tcl_StringMatch +#define Tcl_StringMatch \ + (tclStubsPtr->tcl_StringMatch) /* 245 */ +#endif +#ifndef Tcl_TellOld +#define Tcl_TellOld \ + (tclStubsPtr->tcl_TellOld) /* 246 */ +#endif +#ifndef Tcl_TraceVar +#define Tcl_TraceVar \ + (tclStubsPtr->tcl_TraceVar) /* 247 */ +#endif +#ifndef Tcl_TraceVar2 +#define Tcl_TraceVar2 \ + (tclStubsPtr->tcl_TraceVar2) /* 248 */ +#endif +#ifndef Tcl_TranslateFileName +#define Tcl_TranslateFileName \ + (tclStubsPtr->tcl_TranslateFileName) /* 249 */ +#endif +#ifndef Tcl_Ungets +#define Tcl_Ungets \ + (tclStubsPtr->tcl_Ungets) /* 250 */ +#endif +#ifndef Tcl_UnlinkVar +#define Tcl_UnlinkVar \ + (tclStubsPtr->tcl_UnlinkVar) /* 251 */ +#endif +#ifndef Tcl_UnregisterChannel +#define Tcl_UnregisterChannel \ + (tclStubsPtr->tcl_UnregisterChannel) /* 252 */ +#endif +#ifndef Tcl_UnsetVar +#define Tcl_UnsetVar \ + (tclStubsPtr->tcl_UnsetVar) /* 253 */ +#endif +#ifndef Tcl_UnsetVar2 +#define Tcl_UnsetVar2 \ + (tclStubsPtr->tcl_UnsetVar2) /* 254 */ +#endif +#ifndef Tcl_UntraceVar +#define Tcl_UntraceVar \ + (tclStubsPtr->tcl_UntraceVar) /* 255 */ +#endif +#ifndef Tcl_UntraceVar2 +#define Tcl_UntraceVar2 \ + (tclStubsPtr->tcl_UntraceVar2) /* 256 */ +#endif +#ifndef Tcl_UpdateLinkedVar +#define Tcl_UpdateLinkedVar \ + (tclStubsPtr->tcl_UpdateLinkedVar) /* 257 */ +#endif +#ifndef Tcl_UpVar +#define Tcl_UpVar \ + (tclStubsPtr->tcl_UpVar) /* 258 */ +#endif +#ifndef Tcl_UpVar2 +#define Tcl_UpVar2 \ + (tclStubsPtr->tcl_UpVar2) /* 259 */ +#endif +#ifndef Tcl_VarEval +#define Tcl_VarEval \ + (tclStubsPtr->tcl_VarEval) /* 260 */ +#endif +#ifndef Tcl_VarTraceInfo +#define Tcl_VarTraceInfo \ + (tclStubsPtr->tcl_VarTraceInfo) /* 261 */ +#endif +#ifndef Tcl_VarTraceInfo2 +#define Tcl_VarTraceInfo2 \ + (tclStubsPtr->tcl_VarTraceInfo2) /* 262 */ +#endif +#ifndef Tcl_Write +#define Tcl_Write \ + (tclStubsPtr->tcl_Write) /* 263 */ +#endif +#ifndef Tcl_WrongNumArgs +#define Tcl_WrongNumArgs \ + (tclStubsPtr->tcl_WrongNumArgs) /* 264 */ +#endif +#ifndef Tcl_DumpActiveMemory +#define Tcl_DumpActiveMemory \ + (tclStubsPtr->tcl_DumpActiveMemory) /* 265 */ +#endif +#ifndef Tcl_ValidateAllMemory +#define Tcl_ValidateAllMemory \ + (tclStubsPtr->tcl_ValidateAllMemory) /* 266 */ +#endif +#ifndef Tcl_AppendResultVA +#define Tcl_AppendResultVA \ + (tclStubsPtr->tcl_AppendResultVA) /* 267 */ +#endif +#ifndef Tcl_AppendStringsToObjVA +#define Tcl_AppendStringsToObjVA \ + (tclStubsPtr->tcl_AppendStringsToObjVA) /* 268 */ +#endif +#ifndef Tcl_HashStats +#define Tcl_HashStats \ + (tclStubsPtr->tcl_HashStats) /* 269 */ +#endif +#ifndef Tcl_ParseVar +#define Tcl_ParseVar \ + (tclStubsPtr->tcl_ParseVar) /* 270 */ +#endif +#ifndef Tcl_PkgPresent +#define Tcl_PkgPresent \ + (tclStubsPtr->tcl_PkgPresent) /* 271 */ +#endif +#ifndef Tcl_PkgPresentEx +#define Tcl_PkgPresentEx \ + (tclStubsPtr->tcl_PkgPresentEx) /* 272 */ +#endif +#ifndef Tcl_PkgProvide +#define Tcl_PkgProvide \ + (tclStubsPtr->tcl_PkgProvide) /* 273 */ +#endif +#ifndef Tcl_PkgRequire +#define Tcl_PkgRequire \ + (tclStubsPtr->tcl_PkgRequire) /* 274 */ +#endif +#ifndef Tcl_SetErrorCodeVA +#define Tcl_SetErrorCodeVA \ + (tclStubsPtr->tcl_SetErrorCodeVA) /* 275 */ +#endif +#ifndef Tcl_VarEvalVA +#define Tcl_VarEvalVA \ + (tclStubsPtr->tcl_VarEvalVA) /* 276 */ +#endif +#ifndef Tcl_WaitPid +#define Tcl_WaitPid \ + (tclStubsPtr->tcl_WaitPid) /* 277 */ +#endif +#ifndef Tcl_PanicVA +#define Tcl_PanicVA \ + (tclStubsPtr->tcl_PanicVA) /* 278 */ +#endif +#ifndef Tcl_GetVersion +#define Tcl_GetVersion \ + (tclStubsPtr->tcl_GetVersion) /* 279 */ +#endif +#ifndef Tcl_InitMemory +#define Tcl_InitMemory \ + (tclStubsPtr->tcl_InitMemory) /* 280 */ +#endif +#ifndef Tcl_StackChannel +#define Tcl_StackChannel \ + (tclStubsPtr->tcl_StackChannel) /* 281 */ +#endif +#ifndef Tcl_UnstackChannel +#define Tcl_UnstackChannel \ + (tclStubsPtr->tcl_UnstackChannel) /* 282 */ +#endif +#ifndef Tcl_GetStackedChannel +#define Tcl_GetStackedChannel \ + (tclStubsPtr->tcl_GetStackedChannel) /* 283 */ +#endif +#ifndef Tcl_SetMainLoop +#define Tcl_SetMainLoop \ + (tclStubsPtr->tcl_SetMainLoop) /* 284 */ +#endif +/* Slot 285 is reserved */ +#ifndef Tcl_AppendObjToObj +#define Tcl_AppendObjToObj \ + (tclStubsPtr->tcl_AppendObjToObj) /* 286 */ +#endif +#ifndef Tcl_CreateEncoding +#define Tcl_CreateEncoding \ + (tclStubsPtr->tcl_CreateEncoding) /* 287 */ +#endif +#ifndef Tcl_CreateThreadExitHandler +#define Tcl_CreateThreadExitHandler \ + (tclStubsPtr->tcl_CreateThreadExitHandler) /* 288 */ +#endif +#ifndef Tcl_DeleteThreadExitHandler +#define Tcl_DeleteThreadExitHandler \ + (tclStubsPtr->tcl_DeleteThreadExitHandler) /* 289 */ +#endif +#ifndef Tcl_DiscardResult +#define Tcl_DiscardResult \ + (tclStubsPtr->tcl_DiscardResult) /* 290 */ +#endif +#ifndef Tcl_EvalEx +#define Tcl_EvalEx \ + (tclStubsPtr->tcl_EvalEx) /* 291 */ +#endif +#ifndef Tcl_EvalObjv +#define Tcl_EvalObjv \ + (tclStubsPtr->tcl_EvalObjv) /* 292 */ +#endif +#ifndef Tcl_EvalObjEx +#define Tcl_EvalObjEx \ + (tclStubsPtr->tcl_EvalObjEx) /* 293 */ +#endif +#ifndef Tcl_ExitThread +#define Tcl_ExitThread \ + (tclStubsPtr->tcl_ExitThread) /* 294 */ +#endif +#ifndef Tcl_ExternalToUtf +#define Tcl_ExternalToUtf \ + (tclStubsPtr->tcl_ExternalToUtf) /* 295 */ +#endif +#ifndef Tcl_ExternalToUtfDString +#define Tcl_ExternalToUtfDString \ + (tclStubsPtr->tcl_ExternalToUtfDString) /* 296 */ +#endif +#ifndef Tcl_FinalizeThread +#define Tcl_FinalizeThread \ + (tclStubsPtr->tcl_FinalizeThread) /* 297 */ +#endif +#ifndef Tcl_FinalizeNotifier +#define Tcl_FinalizeNotifier \ + (tclStubsPtr->tcl_FinalizeNotifier) /* 298 */ +#endif +#ifndef Tcl_FreeEncoding +#define Tcl_FreeEncoding \ + (tclStubsPtr->tcl_FreeEncoding) /* 299 */ +#endif +#ifndef Tcl_GetCurrentThread +#define Tcl_GetCurrentThread \ + (tclStubsPtr->tcl_GetCurrentThread) /* 300 */ +#endif +#ifndef Tcl_GetEncoding +#define Tcl_GetEncoding \ + (tclStubsPtr->tcl_GetEncoding) /* 301 */ +#endif +#ifndef Tcl_GetEncodingName +#define Tcl_GetEncodingName \ + (tclStubsPtr->tcl_GetEncodingName) /* 302 */ +#endif +#ifndef Tcl_GetEncodingNames +#define Tcl_GetEncodingNames \ + (tclStubsPtr->tcl_GetEncodingNames) /* 303 */ +#endif +#ifndef Tcl_GetIndexFromObjStruct +#define Tcl_GetIndexFromObjStruct \ + (tclStubsPtr->tcl_GetIndexFromObjStruct) /* 304 */ +#endif +#ifndef Tcl_GetThreadData +#define Tcl_GetThreadData \ + (tclStubsPtr->tcl_GetThreadData) /* 305 */ +#endif +#ifndef Tcl_GetVar2Ex +#define Tcl_GetVar2Ex \ + (tclStubsPtr->tcl_GetVar2Ex) /* 306 */ +#endif +#ifndef Tcl_InitNotifier +#define Tcl_InitNotifier \ + (tclStubsPtr->tcl_InitNotifier) /* 307 */ +#endif +#ifndef Tcl_MutexLock +#define Tcl_MutexLock \ + (tclStubsPtr->tcl_MutexLock) /* 308 */ +#endif +#ifndef Tcl_MutexUnlock +#define Tcl_MutexUnlock \ + (tclStubsPtr->tcl_MutexUnlock) /* 309 */ +#endif +#ifndef Tcl_ConditionNotify +#define Tcl_ConditionNotify \ + (tclStubsPtr->tcl_ConditionNotify) /* 310 */ +#endif +#ifndef Tcl_ConditionWait +#define Tcl_ConditionWait \ + (tclStubsPtr->tcl_ConditionWait) /* 311 */ +#endif +#ifndef Tcl_NumUtfChars +#define Tcl_NumUtfChars \ + (tclStubsPtr->tcl_NumUtfChars) /* 312 */ +#endif +#ifndef Tcl_ReadChars +#define Tcl_ReadChars \ + (tclStubsPtr->tcl_ReadChars) /* 313 */ +#endif +#ifndef Tcl_RestoreResult +#define Tcl_RestoreResult \ + (tclStubsPtr->tcl_RestoreResult) /* 314 */ +#endif +#ifndef Tcl_SaveResult +#define Tcl_SaveResult \ + (tclStubsPtr->tcl_SaveResult) /* 315 */ +#endif +#ifndef Tcl_SetSystemEncoding +#define Tcl_SetSystemEncoding \ + (tclStubsPtr->tcl_SetSystemEncoding) /* 316 */ +#endif +#ifndef Tcl_SetVar2Ex +#define Tcl_SetVar2Ex \ + (tclStubsPtr->tcl_SetVar2Ex) /* 317 */ +#endif +#ifndef Tcl_ThreadAlert +#define Tcl_ThreadAlert \ + (tclStubsPtr->tcl_ThreadAlert) /* 318 */ +#endif +#ifndef Tcl_ThreadQueueEvent +#define Tcl_ThreadQueueEvent \ + (tclStubsPtr->tcl_ThreadQueueEvent) /* 319 */ +#endif +#ifndef Tcl_UniCharAtIndex +#define Tcl_UniCharAtIndex \ + (tclStubsPtr->tcl_UniCharAtIndex) /* 320 */ +#endif +#ifndef Tcl_UniCharToLower +#define Tcl_UniCharToLower \ + (tclStubsPtr->tcl_UniCharToLower) /* 321 */ +#endif +#ifndef Tcl_UniCharToTitle +#define Tcl_UniCharToTitle \ + (tclStubsPtr->tcl_UniCharToTitle) /* 322 */ +#endif +#ifndef Tcl_UniCharToUpper +#define Tcl_UniCharToUpper \ + (tclStubsPtr->tcl_UniCharToUpper) /* 323 */ +#endif +#ifndef Tcl_UniCharToUtf +#define Tcl_UniCharToUtf \ + (tclStubsPtr->tcl_UniCharToUtf) /* 324 */ +#endif +#ifndef Tcl_UtfAtIndex +#define Tcl_UtfAtIndex \ + (tclStubsPtr->tcl_UtfAtIndex) /* 325 */ +#endif +#ifndef Tcl_UtfCharComplete +#define Tcl_UtfCharComplete \ + (tclStubsPtr->tcl_UtfCharComplete) /* 326 */ +#endif +#ifndef Tcl_UtfBackslash +#define Tcl_UtfBackslash \ + (tclStubsPtr->tcl_UtfBackslash) /* 327 */ +#endif +#ifndef Tcl_UtfFindFirst +#define Tcl_UtfFindFirst \ + (tclStubsPtr->tcl_UtfFindFirst) /* 328 */ +#endif +#ifndef Tcl_UtfFindLast +#define Tcl_UtfFindLast \ + (tclStubsPtr->tcl_UtfFindLast) /* 329 */ +#endif +#ifndef Tcl_UtfNext +#define Tcl_UtfNext \ + (tclStubsPtr->tcl_UtfNext) /* 330 */ +#endif +#ifndef Tcl_UtfPrev +#define Tcl_UtfPrev \ + (tclStubsPtr->tcl_UtfPrev) /* 331 */ +#endif +#ifndef Tcl_UtfToExternal +#define Tcl_UtfToExternal \ + (tclStubsPtr->tcl_UtfToExternal) /* 332 */ +#endif +#ifndef Tcl_UtfToExternalDString +#define Tcl_UtfToExternalDString \ + (tclStubsPtr->tcl_UtfToExternalDString) /* 333 */ +#endif +#ifndef Tcl_UtfToLower +#define Tcl_UtfToLower \ + (tclStubsPtr->tcl_UtfToLower) /* 334 */ +#endif +#ifndef Tcl_UtfToTitle +#define Tcl_UtfToTitle \ + (tclStubsPtr->tcl_UtfToTitle) /* 335 */ +#endif +#ifndef Tcl_UtfToUniChar +#define Tcl_UtfToUniChar \ + (tclStubsPtr->tcl_UtfToUniChar) /* 336 */ +#endif +#ifndef Tcl_UtfToUpper +#define Tcl_UtfToUpper \ + (tclStubsPtr->tcl_UtfToUpper) /* 337 */ +#endif +#ifndef Tcl_WriteChars +#define Tcl_WriteChars \ + (tclStubsPtr->tcl_WriteChars) /* 338 */ +#endif +#ifndef Tcl_WriteObj +#define Tcl_WriteObj \ + (tclStubsPtr->tcl_WriteObj) /* 339 */ +#endif +#ifndef Tcl_GetString +#define Tcl_GetString \ + (tclStubsPtr->tcl_GetString) /* 340 */ +#endif +#ifndef Tcl_GetDefaultEncodingDir +#define Tcl_GetDefaultEncodingDir \ + (tclStubsPtr->tcl_GetDefaultEncodingDir) /* 341 */ +#endif +#ifndef Tcl_SetDefaultEncodingDir +#define Tcl_SetDefaultEncodingDir \ + (tclStubsPtr->tcl_SetDefaultEncodingDir) /* 342 */ +#endif +#ifndef Tcl_AlertNotifier +#define Tcl_AlertNotifier \ + (tclStubsPtr->tcl_AlertNotifier) /* 343 */ +#endif +#ifndef Tcl_ServiceModeHook +#define Tcl_ServiceModeHook \ + (tclStubsPtr->tcl_ServiceModeHook) /* 344 */ +#endif +#ifndef Tcl_UniCharIsAlnum +#define Tcl_UniCharIsAlnum \ + (tclStubsPtr->tcl_UniCharIsAlnum) /* 345 */ +#endif +#ifndef Tcl_UniCharIsAlpha +#define Tcl_UniCharIsAlpha \ + (tclStubsPtr->tcl_UniCharIsAlpha) /* 346 */ +#endif +#ifndef Tcl_UniCharIsDigit +#define Tcl_UniCharIsDigit \ + (tclStubsPtr->tcl_UniCharIsDigit) /* 347 */ +#endif +#ifndef Tcl_UniCharIsLower +#define Tcl_UniCharIsLower \ + (tclStubsPtr->tcl_UniCharIsLower) /* 348 */ +#endif +#ifndef Tcl_UniCharIsSpace +#define Tcl_UniCharIsSpace \ + (tclStubsPtr->tcl_UniCharIsSpace) /* 349 */ +#endif +#ifndef Tcl_UniCharIsUpper +#define Tcl_UniCharIsUpper \ + (tclStubsPtr->tcl_UniCharIsUpper) /* 350 */ +#endif +#ifndef Tcl_UniCharIsWordChar +#define Tcl_UniCharIsWordChar \ + (tclStubsPtr->tcl_UniCharIsWordChar) /* 351 */ +#endif +#ifndef Tcl_UniCharLen +#define Tcl_UniCharLen \ + (tclStubsPtr->tcl_UniCharLen) /* 352 */ +#endif +#ifndef Tcl_UniCharNcmp +#define Tcl_UniCharNcmp \ + (tclStubsPtr->tcl_UniCharNcmp) /* 353 */ +#endif +#ifndef Tcl_UniCharToUtfDString +#define Tcl_UniCharToUtfDString \ + (tclStubsPtr->tcl_UniCharToUtfDString) /* 354 */ +#endif +#ifndef Tcl_UtfToUniCharDString +#define Tcl_UtfToUniCharDString \ + (tclStubsPtr->tcl_UtfToUniCharDString) /* 355 */ +#endif +#ifndef Tcl_GetRegExpFromObj +#define Tcl_GetRegExpFromObj \ + (tclStubsPtr->tcl_GetRegExpFromObj) /* 356 */ +#endif +#ifndef Tcl_EvalTokens +#define Tcl_EvalTokens \ + (tclStubsPtr->tcl_EvalTokens) /* 357 */ +#endif +#ifndef Tcl_FreeParse +#define Tcl_FreeParse \ + (tclStubsPtr->tcl_FreeParse) /* 358 */ +#endif +#ifndef Tcl_LogCommandInfo +#define Tcl_LogCommandInfo \ + (tclStubsPtr->tcl_LogCommandInfo) /* 359 */ +#endif +#ifndef Tcl_ParseBraces +#define Tcl_ParseBraces \ + (tclStubsPtr->tcl_ParseBraces) /* 360 */ +#endif +#ifndef Tcl_ParseCommand +#define Tcl_ParseCommand \ + (tclStubsPtr->tcl_ParseCommand) /* 361 */ +#endif +#ifndef Tcl_ParseExpr +#define Tcl_ParseExpr \ + (tclStubsPtr->tcl_ParseExpr) /* 362 */ +#endif +#ifndef Tcl_ParseQuotedString +#define Tcl_ParseQuotedString \ + (tclStubsPtr->tcl_ParseQuotedString) /* 363 */ +#endif +#ifndef Tcl_ParseVarName +#define Tcl_ParseVarName \ + (tclStubsPtr->tcl_ParseVarName) /* 364 */ +#endif +#ifndef Tcl_GetCwd +#define Tcl_GetCwd \ + (tclStubsPtr->tcl_GetCwd) /* 365 */ +#endif +#ifndef Tcl_Chdir +#define Tcl_Chdir \ + (tclStubsPtr->tcl_Chdir) /* 366 */ +#endif +#ifndef Tcl_Access +#define Tcl_Access \ + (tclStubsPtr->tcl_Access) /* 367 */ +#endif +#ifndef Tcl_Stat +#define Tcl_Stat \ + (tclStubsPtr->tcl_Stat) /* 368 */ +#endif +#ifndef Tcl_UtfNcmp +#define Tcl_UtfNcmp \ + (tclStubsPtr->tcl_UtfNcmp) /* 369 */ +#endif +#ifndef Tcl_UtfNcasecmp +#define Tcl_UtfNcasecmp \ + (tclStubsPtr->tcl_UtfNcasecmp) /* 370 */ +#endif +#ifndef Tcl_StringCaseMatch +#define Tcl_StringCaseMatch \ + (tclStubsPtr->tcl_StringCaseMatch) /* 371 */ +#endif +#ifndef Tcl_UniCharIsControl +#define Tcl_UniCharIsControl \ + (tclStubsPtr->tcl_UniCharIsControl) /* 372 */ +#endif +#ifndef Tcl_UniCharIsGraph +#define Tcl_UniCharIsGraph \ + (tclStubsPtr->tcl_UniCharIsGraph) /* 373 */ +#endif +#ifndef Tcl_UniCharIsPrint +#define Tcl_UniCharIsPrint \ + (tclStubsPtr->tcl_UniCharIsPrint) /* 374 */ +#endif +#ifndef Tcl_UniCharIsPunct +#define Tcl_UniCharIsPunct \ + (tclStubsPtr->tcl_UniCharIsPunct) /* 375 */ +#endif +#ifndef Tcl_RegExpExecObj +#define Tcl_RegExpExecObj \ + (tclStubsPtr->tcl_RegExpExecObj) /* 376 */ +#endif +#ifndef Tcl_RegExpGetInfo +#define Tcl_RegExpGetInfo \ + (tclStubsPtr->tcl_RegExpGetInfo) /* 377 */ +#endif +#ifndef Tcl_NewUnicodeObj +#define Tcl_NewUnicodeObj \ + (tclStubsPtr->tcl_NewUnicodeObj) /* 378 */ +#endif +#ifndef Tcl_SetUnicodeObj +#define Tcl_SetUnicodeObj \ + (tclStubsPtr->tcl_SetUnicodeObj) /* 379 */ +#endif +#ifndef Tcl_GetCharLength +#define Tcl_GetCharLength \ + (tclStubsPtr->tcl_GetCharLength) /* 380 */ +#endif +#ifndef Tcl_GetUniChar +#define Tcl_GetUniChar \ + (tclStubsPtr->tcl_GetUniChar) /* 381 */ +#endif +#ifndef Tcl_GetUnicode +#define Tcl_GetUnicode \ + (tclStubsPtr->tcl_GetUnicode) /* 382 */ +#endif +#ifndef Tcl_GetRange +#define Tcl_GetRange \ + (tclStubsPtr->tcl_GetRange) /* 383 */ +#endif +#ifndef Tcl_AppendUnicodeToObj +#define Tcl_AppendUnicodeToObj \ + (tclStubsPtr->tcl_AppendUnicodeToObj) /* 384 */ +#endif +#ifndef Tcl_RegExpMatchObj +#define Tcl_RegExpMatchObj \ + (tclStubsPtr->tcl_RegExpMatchObj) /* 385 */ +#endif +#ifndef Tcl_SetNotifier +#define Tcl_SetNotifier \ + (tclStubsPtr->tcl_SetNotifier) /* 386 */ +#endif +#ifndef Tcl_GetAllocMutex +#define Tcl_GetAllocMutex \ + (tclStubsPtr->tcl_GetAllocMutex) /* 387 */ +#endif +#ifndef Tcl_GetChannelNames +#define Tcl_GetChannelNames \ + (tclStubsPtr->tcl_GetChannelNames) /* 388 */ +#endif +#ifndef Tcl_GetChannelNamesEx +#define Tcl_GetChannelNamesEx \ + (tclStubsPtr->tcl_GetChannelNamesEx) /* 389 */ +#endif +#ifndef Tcl_ProcObjCmd +#define Tcl_ProcObjCmd \ + (tclStubsPtr->tcl_ProcObjCmd) /* 390 */ +#endif +#ifndef Tcl_ConditionFinalize +#define Tcl_ConditionFinalize \ + (tclStubsPtr->tcl_ConditionFinalize) /* 391 */ +#endif +#ifndef Tcl_MutexFinalize +#define Tcl_MutexFinalize \ + (tclStubsPtr->tcl_MutexFinalize) /* 392 */ +#endif +#ifndef Tcl_CreateThread +#define Tcl_CreateThread \ + (tclStubsPtr->tcl_CreateThread) /* 393 */ +#endif +#ifndef Tcl_ReadRaw +#define Tcl_ReadRaw \ + (tclStubsPtr->tcl_ReadRaw) /* 394 */ +#endif +#ifndef Tcl_WriteRaw +#define Tcl_WriteRaw \ + (tclStubsPtr->tcl_WriteRaw) /* 395 */ +#endif +#ifndef Tcl_GetTopChannel +#define Tcl_GetTopChannel \ + (tclStubsPtr->tcl_GetTopChannel) /* 396 */ +#endif +#ifndef Tcl_ChannelBuffered +#define Tcl_ChannelBuffered \ + (tclStubsPtr->tcl_ChannelBuffered) /* 397 */ +#endif +#ifndef Tcl_ChannelName +#define Tcl_ChannelName \ + (tclStubsPtr->tcl_ChannelName) /* 398 */ +#endif +#ifndef Tcl_ChannelVersion +#define Tcl_ChannelVersion \ + (tclStubsPtr->tcl_ChannelVersion) /* 399 */ +#endif +#ifndef Tcl_ChannelBlockModeProc +#define Tcl_ChannelBlockModeProc \ + (tclStubsPtr->tcl_ChannelBlockModeProc) /* 400 */ +#endif +#ifndef Tcl_ChannelCloseProc +#define Tcl_ChannelCloseProc \ + (tclStubsPtr->tcl_ChannelCloseProc) /* 401 */ +#endif +#ifndef Tcl_ChannelClose2Proc +#define Tcl_ChannelClose2Proc \ + (tclStubsPtr->tcl_ChannelClose2Proc) /* 402 */ +#endif +#ifndef Tcl_ChannelInputProc +#define Tcl_ChannelInputProc \ + (tclStubsPtr->tcl_ChannelInputProc) /* 403 */ +#endif +#ifndef Tcl_ChannelOutputProc +#define Tcl_ChannelOutputProc \ + (tclStubsPtr->tcl_ChannelOutputProc) /* 404 */ +#endif +#ifndef Tcl_ChannelSeekProc +#define Tcl_ChannelSeekProc \ + (tclStubsPtr->tcl_ChannelSeekProc) /* 405 */ +#endif +#ifndef Tcl_ChannelSetOptionProc +#define Tcl_ChannelSetOptionProc \ + (tclStubsPtr->tcl_ChannelSetOptionProc) /* 406 */ +#endif +#ifndef Tcl_ChannelGetOptionProc +#define Tcl_ChannelGetOptionProc \ + (tclStubsPtr->tcl_ChannelGetOptionProc) /* 407 */ +#endif +#ifndef Tcl_ChannelWatchProc +#define Tcl_ChannelWatchProc \ + (tclStubsPtr->tcl_ChannelWatchProc) /* 408 */ +#endif +#ifndef Tcl_ChannelGetHandleProc +#define Tcl_ChannelGetHandleProc \ + (tclStubsPtr->tcl_ChannelGetHandleProc) /* 409 */ +#endif +#ifndef Tcl_ChannelFlushProc +#define Tcl_ChannelFlushProc \ + (tclStubsPtr->tcl_ChannelFlushProc) /* 410 */ +#endif +#ifndef Tcl_ChannelHandlerProc +#define Tcl_ChannelHandlerProc \ + (tclStubsPtr->tcl_ChannelHandlerProc) /* 411 */ +#endif +#ifndef Tcl_JoinThread +#define Tcl_JoinThread \ + (tclStubsPtr->tcl_JoinThread) /* 412 */ +#endif +#ifndef Tcl_IsChannelShared +#define Tcl_IsChannelShared \ + (tclStubsPtr->tcl_IsChannelShared) /* 413 */ +#endif +#ifndef Tcl_IsChannelRegistered +#define Tcl_IsChannelRegistered \ + (tclStubsPtr->tcl_IsChannelRegistered) /* 414 */ +#endif +#ifndef Tcl_CutChannel +#define Tcl_CutChannel \ + (tclStubsPtr->tcl_CutChannel) /* 415 */ +#endif +#ifndef Tcl_SpliceChannel +#define Tcl_SpliceChannel \ + (tclStubsPtr->tcl_SpliceChannel) /* 416 */ +#endif +#ifndef Tcl_ClearChannelHandlers +#define Tcl_ClearChannelHandlers \ + (tclStubsPtr->tcl_ClearChannelHandlers) /* 417 */ +#endif +#ifndef Tcl_IsChannelExisting +#define Tcl_IsChannelExisting \ + (tclStubsPtr->tcl_IsChannelExisting) /* 418 */ +#endif +#ifndef Tcl_UniCharNcasecmp +#define Tcl_UniCharNcasecmp \ + (tclStubsPtr->tcl_UniCharNcasecmp) /* 419 */ +#endif +#ifndef Tcl_UniCharCaseMatch +#define Tcl_UniCharCaseMatch \ + (tclStubsPtr->tcl_UniCharCaseMatch) /* 420 */ +#endif +#ifndef Tcl_FindHashEntry +#define Tcl_FindHashEntry \ + (tclStubsPtr->tcl_FindHashEntry) /* 421 */ +#endif +#ifndef Tcl_CreateHashEntry +#define Tcl_CreateHashEntry \ + (tclStubsPtr->tcl_CreateHashEntry) /* 422 */ +#endif +#ifndef Tcl_InitCustomHashTable +#define Tcl_InitCustomHashTable \ + (tclStubsPtr->tcl_InitCustomHashTable) /* 423 */ +#endif +#ifndef Tcl_InitObjHashTable +#define Tcl_InitObjHashTable \ + (tclStubsPtr->tcl_InitObjHashTable) /* 424 */ +#endif +#ifndef Tcl_CommandTraceInfo +#define Tcl_CommandTraceInfo \ + (tclStubsPtr->tcl_CommandTraceInfo) /* 425 */ +#endif +#ifndef Tcl_TraceCommand +#define Tcl_TraceCommand \ + (tclStubsPtr->tcl_TraceCommand) /* 426 */ +#endif +#ifndef Tcl_UntraceCommand +#define Tcl_UntraceCommand \ + (tclStubsPtr->tcl_UntraceCommand) /* 427 */ +#endif +#ifndef Tcl_AttemptAlloc +#define Tcl_AttemptAlloc \ + (tclStubsPtr->tcl_AttemptAlloc) /* 428 */ +#endif +#ifndef Tcl_AttemptDbCkalloc +#define Tcl_AttemptDbCkalloc \ + (tclStubsPtr->tcl_AttemptDbCkalloc) /* 429 */ +#endif +#ifndef Tcl_AttemptRealloc +#define Tcl_AttemptRealloc \ + (tclStubsPtr->tcl_AttemptRealloc) /* 430 */ +#endif +#ifndef Tcl_AttemptDbCkrealloc +#define Tcl_AttemptDbCkrealloc \ + (tclStubsPtr->tcl_AttemptDbCkrealloc) /* 431 */ +#endif +#ifndef Tcl_AttemptSetObjLength +#define Tcl_AttemptSetObjLength \ + (tclStubsPtr->tcl_AttemptSetObjLength) /* 432 */ +#endif +#ifndef Tcl_GetChannelThread +#define Tcl_GetChannelThread \ + (tclStubsPtr->tcl_GetChannelThread) /* 433 */ +#endif +#ifndef Tcl_GetUnicodeFromObj +#define Tcl_GetUnicodeFromObj \ + (tclStubsPtr->tcl_GetUnicodeFromObj) /* 434 */ +#endif +#ifndef Tcl_GetMathFuncInfo +#define Tcl_GetMathFuncInfo \ + (tclStubsPtr->tcl_GetMathFuncInfo) /* 435 */ +#endif +#ifndef Tcl_ListMathFuncs +#define Tcl_ListMathFuncs \ + (tclStubsPtr->tcl_ListMathFuncs) /* 436 */ +#endif +#ifndef Tcl_SubstObj +#define Tcl_SubstObj \ + (tclStubsPtr->tcl_SubstObj) /* 437 */ +#endif +#ifndef Tcl_DetachChannel +#define Tcl_DetachChannel \ + (tclStubsPtr->tcl_DetachChannel) /* 438 */ +#endif +#ifndef Tcl_IsStandardChannel +#define Tcl_IsStandardChannel \ + (tclStubsPtr->tcl_IsStandardChannel) /* 439 */ +#endif +#ifndef Tcl_FSCopyFile +#define Tcl_FSCopyFile \ + (tclStubsPtr->tcl_FSCopyFile) /* 440 */ +#endif +#ifndef Tcl_FSCopyDirectory +#define Tcl_FSCopyDirectory \ + (tclStubsPtr->tcl_FSCopyDirectory) /* 441 */ +#endif +#ifndef Tcl_FSCreateDirectory +#define Tcl_FSCreateDirectory \ + (tclStubsPtr->tcl_FSCreateDirectory) /* 442 */ +#endif +#ifndef Tcl_FSDeleteFile +#define Tcl_FSDeleteFile \ + (tclStubsPtr->tcl_FSDeleteFile) /* 443 */ +#endif +#ifndef Tcl_FSLoadFile +#define Tcl_FSLoadFile \ + (tclStubsPtr->tcl_FSLoadFile) /* 444 */ +#endif +#ifndef Tcl_FSMatchInDirectory +#define Tcl_FSMatchInDirectory \ + (tclStubsPtr->tcl_FSMatchInDirectory) /* 445 */ +#endif +#ifndef Tcl_FSLink +#define Tcl_FSLink \ + (tclStubsPtr->tcl_FSLink) /* 446 */ +#endif +#ifndef Tcl_FSRemoveDirectory +#define Tcl_FSRemoveDirectory \ + (tclStubsPtr->tcl_FSRemoveDirectory) /* 447 */ +#endif +#ifndef Tcl_FSRenameFile +#define Tcl_FSRenameFile \ + (tclStubsPtr->tcl_FSRenameFile) /* 448 */ +#endif +#ifndef Tcl_FSLstat +#define Tcl_FSLstat \ + (tclStubsPtr->tcl_FSLstat) /* 449 */ +#endif +#ifndef Tcl_FSUtime +#define Tcl_FSUtime \ + (tclStubsPtr->tcl_FSUtime) /* 450 */ +#endif +#ifndef Tcl_FSFileAttrsGet +#define Tcl_FSFileAttrsGet \ + (tclStubsPtr->tcl_FSFileAttrsGet) /* 451 */ +#endif +#ifndef Tcl_FSFileAttrsSet +#define Tcl_FSFileAttrsSet \ + (tclStubsPtr->tcl_FSFileAttrsSet) /* 452 */ +#endif +#ifndef Tcl_FSFileAttrStrings +#define Tcl_FSFileAttrStrings \ + (tclStubsPtr->tcl_FSFileAttrStrings) /* 453 */ +#endif +#ifndef Tcl_FSStat +#define Tcl_FSStat \ + (tclStubsPtr->tcl_FSStat) /* 454 */ +#endif +#ifndef Tcl_FSAccess +#define Tcl_FSAccess \ + (tclStubsPtr->tcl_FSAccess) /* 455 */ +#endif +#ifndef Tcl_FSOpenFileChannel +#define Tcl_FSOpenFileChannel \ + (tclStubsPtr->tcl_FSOpenFileChannel) /* 456 */ +#endif +#ifndef Tcl_FSGetCwd +#define Tcl_FSGetCwd \ + (tclStubsPtr->tcl_FSGetCwd) /* 457 */ +#endif +#ifndef Tcl_FSChdir +#define Tcl_FSChdir \ + (tclStubsPtr->tcl_FSChdir) /* 458 */ +#endif +#ifndef Tcl_FSConvertToPathType +#define Tcl_FSConvertToPathType \ + (tclStubsPtr->tcl_FSConvertToPathType) /* 459 */ +#endif +#ifndef Tcl_FSJoinPath +#define Tcl_FSJoinPath \ + (tclStubsPtr->tcl_FSJoinPath) /* 460 */ +#endif +#ifndef Tcl_FSSplitPath +#define Tcl_FSSplitPath \ + (tclStubsPtr->tcl_FSSplitPath) /* 461 */ +#endif +#ifndef Tcl_FSEqualPaths +#define Tcl_FSEqualPaths \ + (tclStubsPtr->tcl_FSEqualPaths) /* 462 */ +#endif +#ifndef Tcl_FSGetNormalizedPath +#define Tcl_FSGetNormalizedPath \ + (tclStubsPtr->tcl_FSGetNormalizedPath) /* 463 */ +#endif +#ifndef Tcl_FSJoinToPath +#define Tcl_FSJoinToPath \ + (tclStubsPtr->tcl_FSJoinToPath) /* 464 */ +#endif +#ifndef Tcl_FSGetInternalRep +#define Tcl_FSGetInternalRep \ + (tclStubsPtr->tcl_FSGetInternalRep) /* 465 */ +#endif +#ifndef Tcl_FSGetTranslatedPath +#define Tcl_FSGetTranslatedPath \ + (tclStubsPtr->tcl_FSGetTranslatedPath) /* 466 */ +#endif +#ifndef Tcl_FSEvalFile +#define Tcl_FSEvalFile \ + (tclStubsPtr->tcl_FSEvalFile) /* 467 */ +#endif +#ifndef Tcl_FSNewNativePath +#define Tcl_FSNewNativePath \ + (tclStubsPtr->tcl_FSNewNativePath) /* 468 */ +#endif +#ifndef Tcl_FSGetNativePath +#define Tcl_FSGetNativePath \ + (tclStubsPtr->tcl_FSGetNativePath) /* 469 */ +#endif +#ifndef Tcl_FSFileSystemInfo +#define Tcl_FSFileSystemInfo \ + (tclStubsPtr->tcl_FSFileSystemInfo) /* 470 */ +#endif +#ifndef Tcl_FSPathSeparator +#define Tcl_FSPathSeparator \ + (tclStubsPtr->tcl_FSPathSeparator) /* 471 */ +#endif +#ifndef Tcl_FSListVolumes +#define Tcl_FSListVolumes \ + (tclStubsPtr->tcl_FSListVolumes) /* 472 */ +#endif +#ifndef Tcl_FSRegister +#define Tcl_FSRegister \ + (tclStubsPtr->tcl_FSRegister) /* 473 */ +#endif +#ifndef Tcl_FSUnregister +#define Tcl_FSUnregister \ + (tclStubsPtr->tcl_FSUnregister) /* 474 */ +#endif +#ifndef Tcl_FSData +#define Tcl_FSData \ + (tclStubsPtr->tcl_FSData) /* 475 */ +#endif +#ifndef Tcl_FSGetTranslatedStringPath +#define Tcl_FSGetTranslatedStringPath \ + (tclStubsPtr->tcl_FSGetTranslatedStringPath) /* 476 */ +#endif +#ifndef Tcl_FSGetFileSystemForPath +#define Tcl_FSGetFileSystemForPath \ + (tclStubsPtr->tcl_FSGetFileSystemForPath) /* 477 */ +#endif +#ifndef Tcl_FSGetPathType +#define Tcl_FSGetPathType \ + (tclStubsPtr->tcl_FSGetPathType) /* 478 */ +#endif +#ifndef Tcl_OutputBuffered +#define Tcl_OutputBuffered \ + (tclStubsPtr->tcl_OutputBuffered) /* 479 */ +#endif +#ifndef Tcl_FSMountsChanged +#define Tcl_FSMountsChanged \ + (tclStubsPtr->tcl_FSMountsChanged) /* 480 */ +#endif +#ifndef Tcl_EvalTokensStandard +#define Tcl_EvalTokensStandard \ + (tclStubsPtr->tcl_EvalTokensStandard) /* 481 */ +#endif +#ifndef Tcl_GetTime +#define Tcl_GetTime \ + (tclStubsPtr->tcl_GetTime) /* 482 */ +#endif +#ifndef Tcl_CreateObjTrace +#define Tcl_CreateObjTrace \ + (tclStubsPtr->tcl_CreateObjTrace) /* 483 */ +#endif +#ifndef Tcl_GetCommandInfoFromToken +#define Tcl_GetCommandInfoFromToken \ + (tclStubsPtr->tcl_GetCommandInfoFromToken) /* 484 */ +#endif +#ifndef Tcl_SetCommandInfoFromToken +#define Tcl_SetCommandInfoFromToken \ + (tclStubsPtr->tcl_SetCommandInfoFromToken) /* 485 */ +#endif +#ifndef Tcl_DbNewWideIntObj +#define Tcl_DbNewWideIntObj \ + (tclStubsPtr->tcl_DbNewWideIntObj) /* 486 */ +#endif +#ifndef Tcl_GetWideIntFromObj +#define Tcl_GetWideIntFromObj \ + (tclStubsPtr->tcl_GetWideIntFromObj) /* 487 */ +#endif +#ifndef Tcl_NewWideIntObj +#define Tcl_NewWideIntObj \ + (tclStubsPtr->tcl_NewWideIntObj) /* 488 */ +#endif +#ifndef Tcl_SetWideIntObj +#define Tcl_SetWideIntObj \ + (tclStubsPtr->tcl_SetWideIntObj) /* 489 */ +#endif +#ifndef Tcl_AllocStatBuf +#define Tcl_AllocStatBuf \ + (tclStubsPtr->tcl_AllocStatBuf) /* 490 */ +#endif +#ifndef Tcl_Seek +#define Tcl_Seek \ + (tclStubsPtr->tcl_Seek) /* 491 */ +#endif +#ifndef Tcl_Tell +#define Tcl_Tell \ + (tclStubsPtr->tcl_Tell) /* 492 */ +#endif +#ifndef Tcl_ChannelWideSeekProc +#define Tcl_ChannelWideSeekProc \ + (tclStubsPtr->tcl_ChannelWideSeekProc) /* 493 */ +#endif + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLDECLS */ + diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index 4986f86..feb60c8 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -1,1362 +1,1362 @@ -/* - * tclIntDecls.h -- - * - * This file contains the declarations for all unsupported - * functions that are exported by the Tcl library. These - * interfaces are not guaranteed to remain the same between - * versions. Use at your own risk. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.4 2004/06/05 17:25:40 kennykb Exp $ - */ - -#ifndef _TCLINTDECLS -#define _TCLINTDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tclInt.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -/* Slot 0 is reserved */ -/* 1 */ -EXTERN int TclAccessDeleteProc _ANSI_ARGS_(( - TclAccessProc_ * proc)); -/* 2 */ -EXTERN int TclAccessInsertProc _ANSI_ARGS_(( - TclAccessProc_ * proc)); -/* 3 */ -EXTERN void TclAllocateFreeObjects _ANSI_ARGS_((void)); -/* Slot 4 is reserved */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 5 */ -EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, - int numPids, Tcl_Pid * pidPtr, - Tcl_Channel errorChan)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 5 */ -EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, - int numPids, Tcl_Pid * pidPtr, - Tcl_Channel errorChan)); -#endif /* __WIN32__ */ -/* 6 */ -EXTERN void TclCleanupCommand _ANSI_ARGS_((Command * cmdPtr)); -/* 7 */ -EXTERN int TclCopyAndCollapse _ANSI_ARGS_((int count, - CONST char * src, char * dst)); -/* 8 */ -EXTERN int TclCopyChannel _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel inChan, Tcl_Channel outChan, - int toRead, Tcl_Obj * cmdPtr)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 9 */ -EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, - TclFile * outPipePtr, TclFile * errFilePtr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 9 */ -EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, - TclFile * outPipePtr, TclFile * errFilePtr)); -#endif /* __WIN32__ */ -/* 10 */ -EXTERN int TclCreateProc _ANSI_ARGS_((Tcl_Interp * interp, - Namespace * nsPtr, CONST char * procName, - Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, - Proc ** procPtrPtr)); -/* 11 */ -EXTERN void TclDeleteCompiledLocalVars _ANSI_ARGS_(( - Interp * iPtr, CallFrame * framePtr)); -/* 12 */ -EXTERN void TclDeleteVars _ANSI_ARGS_((Interp * iPtr, - Tcl_HashTable * tablePtr)); -/* 13 */ -EXTERN int TclDoGlob _ANSI_ARGS_((Tcl_Interp * interp, - char * separators, Tcl_DString * headPtr, - char * tail, Tcl_GlobTypeData * types)); -/* 14 */ -EXTERN void TclDumpMemoryInfo _ANSI_ARGS_((FILE * outFile)); -/* Slot 15 is reserved */ -/* 16 */ -EXTERN void TclExprFloatError _ANSI_ARGS_((Tcl_Interp * interp, - double value)); -/* Slot 17 is reserved */ -/* Slot 18 is reserved */ -/* Slot 19 is reserved */ -/* Slot 20 is reserved */ -/* Slot 21 is reserved */ -/* 22 */ -EXTERN int TclFindElement _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * listStr, int listLength, - CONST char ** elementPtr, - CONST char ** nextPtr, int * sizePtr, - int * bracePtr)); -/* 23 */ -EXTERN Proc * TclFindProc _ANSI_ARGS_((Interp * iPtr, - CONST char * procName)); -/* 24 */ -EXTERN int TclFormatInt _ANSI_ARGS_((char * buffer, long n)); -/* 25 */ -EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp * iPtr)); -/* Slot 26 is reserved */ -/* 27 */ -EXTERN int TclGetDate _ANSI_ARGS_((char * p, unsigned long now, - long zone, unsigned long * timePtr)); -/* 28 */ -EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type)); -/* Slot 29 is reserved */ -/* Slot 30 is reserved */ -/* 31 */ -EXTERN char * TclGetExtension _ANSI_ARGS_((char * name)); -/* 32 */ -EXTERN int TclGetFrame _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, CallFrame ** framePtrPtr)); -/* 33 */ -EXTERN TclCmdProcType TclGetInterpProc _ANSI_ARGS_((void)); -/* 34 */ -EXTERN int TclGetIntForIndex _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * objPtr, int endValue, - int * indexPtr)); -/* Slot 35 is reserved */ -/* 36 */ -EXTERN int TclGetLong _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, long * longPtr)); -/* 37 */ -EXTERN int TclGetLoadedPackages _ANSI_ARGS_(( - Tcl_Interp * interp, char * targetName)); -/* 38 */ -EXTERN int TclGetNamespaceForQualName _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * qualName, - Namespace * cxtNsPtr, int flags, - Namespace ** nsPtrPtr, - Namespace ** altNsPtrPtr, - Namespace ** actualCxtPtrPtr, - CONST char ** simpleNamePtr)); -/* 39 */ -EXTERN TclObjCmdProcType TclGetObjInterpProc _ANSI_ARGS_((void)); -/* 40 */ -EXTERN int TclGetOpenMode _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * str, int * seekFlagPtr)); -/* 41 */ -EXTERN Tcl_Command TclGetOriginalCommand _ANSI_ARGS_(( - Tcl_Command command)); -/* 42 */ -EXTERN char * TclpGetUserHome _ANSI_ARGS_((CONST char * name, - Tcl_DString * bufferPtr)); -/* 43 */ -EXTERN int TclGlobalInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST84 char ** argv, int flags)); -/* 44 */ -EXTERN int TclGuessPackageName _ANSI_ARGS_(( - CONST char * fileName, Tcl_DString * bufPtr)); -/* 45 */ -EXTERN int TclHideUnsafeCommands _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 46 */ -EXTERN int TclInExit _ANSI_ARGS_((void)); -/* Slot 47 is reserved */ -/* Slot 48 is reserved */ -/* 49 */ -EXTERN Tcl_Obj * TclIncrVar2 _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, - long incrAmount, int part1NotParsed)); -/* 50 */ -EXTERN void TclInitCompiledLocals _ANSI_ARGS_(( - Tcl_Interp * interp, CallFrame * framePtr, - Namespace * nsPtr)); -/* 51 */ -EXTERN int TclInterpInit _ANSI_ARGS_((Tcl_Interp * interp)); -/* 52 */ -EXTERN int TclInvoke _ANSI_ARGS_((Tcl_Interp * interp, int argc, - CONST84 char ** argv, int flags)); -/* 53 */ -EXTERN int TclInvokeObjectCommand _ANSI_ARGS_(( - ClientData clientData, Tcl_Interp * interp, - int argc, CONST84 char ** argv)); -/* 54 */ -EXTERN int TclInvokeStringCommand _ANSI_ARGS_(( - ClientData clientData, Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[])); -/* 55 */ -EXTERN Proc * TclIsProc _ANSI_ARGS_((Command * cmdPtr)); -/* Slot 56 is reserved */ -/* Slot 57 is reserved */ -/* 58 */ -EXTERN Var * TclLookupVar _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * part1, CONST char * part2, - int flags, CONST char * msg, int createPart1, - int createPart2, Var ** arrayPtrPtr)); -/* Slot 59 is reserved */ -/* 60 */ -EXTERN int TclNeedSpace _ANSI_ARGS_((CONST char * start, - CONST char * end)); -/* 61 */ -EXTERN Tcl_Obj * TclNewProcBodyObj _ANSI_ARGS_((Proc * procPtr)); -/* 62 */ -EXTERN int TclObjCommandComplete _ANSI_ARGS_((Tcl_Obj * cmdPtr)); -/* 63 */ -EXTERN int TclObjInterpProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int objc, - Tcl_Obj *CONST objv[])); -/* 64 */ -EXTERN int TclObjInvoke _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 65 */ -EXTERN int TclObjInvokeGlobal _ANSI_ARGS_((Tcl_Interp * interp, - int objc, Tcl_Obj *CONST objv[], int flags)); -/* 66 */ -EXTERN int TclOpenFileChannelDeleteProc _ANSI_ARGS_(( - TclOpenFileChannelProc_ * proc)); -/* 67 */ -EXTERN int TclOpenFileChannelInsertProc _ANSI_ARGS_(( - TclOpenFileChannelProc_ * proc)); -/* Slot 68 is reserved */ -/* 69 */ -EXTERN char * TclpAlloc _ANSI_ARGS_((unsigned int size)); -/* Slot 70 is reserved */ -/* Slot 71 is reserved */ -/* Slot 72 is reserved */ -/* Slot 73 is reserved */ -/* 74 */ -EXTERN void TclpFree _ANSI_ARGS_((char * ptr)); -/* 75 */ -EXTERN unsigned long TclpGetClicks _ANSI_ARGS_((void)); -/* 76 */ -EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void)); -/* 77 */ -EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time * time)); -/* 78 */ -EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time)); -/* Slot 79 is reserved */ -/* Slot 80 is reserved */ -/* 81 */ -EXTERN char * TclpRealloc _ANSI_ARGS_((char * ptr, - unsigned int size)); -/* Slot 82 is reserved */ -/* Slot 83 is reserved */ -/* Slot 84 is reserved */ -/* Slot 85 is reserved */ -/* Slot 86 is reserved */ -/* Slot 87 is reserved */ -/* 88 */ -EXTERN char * TclPrecTraceProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, CONST char * name1, - CONST char * name2, int flags)); -/* 89 */ -EXTERN int TclPreventAliasLoop _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Interp * cmdInterp, Tcl_Command cmd)); -/* Slot 90 is reserved */ -/* 91 */ -EXTERN void TclProcCleanupProc _ANSI_ARGS_((Proc * procPtr)); -/* 92 */ -EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp * interp, - Proc * procPtr, Tcl_Obj * bodyPtr, - Namespace * nsPtr, CONST char * description, - CONST char * procName)); -/* 93 */ -EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData)); -/* 94 */ -EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp * interp, int argc, - CONST84 char ** argv)); -/* Slot 95 is reserved */ -/* 96 */ -EXTERN int TclRenameCommand _ANSI_ARGS_((Tcl_Interp * interp, - char * oldName, char * newName)); -/* 97 */ -EXTERN void TclResetShadowedCmdRefs _ANSI_ARGS_(( - Tcl_Interp * interp, Command * newCmdPtr)); -/* 98 */ -EXTERN int TclServiceIdle _ANSI_ARGS_((void)); -/* Slot 99 is reserved */ -/* Slot 100 is reserved */ -/* 101 */ -EXTERN char * TclSetPreInitScript _ANSI_ARGS_((char * string)); -/* 102 */ -EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp * interp)); -/* 103 */ -EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp * interp, - char * str, char * proto, int * portPtr)); -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 104 */ -EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, - int size)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 104 */ -EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, - int size)); -#endif /* __WIN32__ */ -/* Slot 105 is reserved */ -/* 106 */ -EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ * proc)); -/* 107 */ -EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ * proc)); -/* 108 */ -EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace * nsPtr)); -/* 109 */ -EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp * iPtr)); -/* Slot 110 is reserved */ -/* 111 */ -EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_ResolveCmdProc * cmdProc, - Tcl_ResolveVarProc * varProc, - Tcl_ResolveCompiledVarProc * compiledVarProc)); -/* 112 */ -EXTERN int Tcl_AppendExportList _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Namespace * nsPtr, - Tcl_Obj * objPtr)); -/* 113 */ -EXTERN Tcl_Namespace * Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, ClientData clientData, - Tcl_NamespaceDeleteProc * deleteProc)); -/* 114 */ -EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_(( - Tcl_Namespace * nsPtr)); -/* 115 */ -EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern, - int resetListFirst)); -/* 116 */ -EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 117 */ -EXTERN Tcl_Namespace * Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 118 */ -EXTERN int Tcl_GetInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_ResolverInfo * resInfo)); -/* 119 */ -EXTERN int Tcl_GetNamespaceResolvers _ANSI_ARGS_(( - Tcl_Namespace * namespacePtr, - Tcl_ResolverInfo * resInfo)); -/* 120 */ -EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name, - Tcl_Namespace * contextNsPtr, int flags)); -/* 121 */ -EXTERN int Tcl_ForgetImport _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern)); -/* 122 */ -EXTERN Tcl_Command Tcl_GetCommandFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr)); -/* 123 */ -EXTERN void Tcl_GetCommandFullName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Command command, - Tcl_Obj * objPtr)); -/* 124 */ -EXTERN Tcl_Namespace * Tcl_GetCurrentNamespace _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 125 */ -EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace _ANSI_ARGS_(( - Tcl_Interp * interp)); -/* 126 */ -EXTERN void Tcl_GetVariableFullName _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Var variable, - Tcl_Obj * objPtr)); -/* 127 */ -EXTERN int Tcl_Import _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Namespace * nsPtr, CONST char * pattern, - int allowOverwrite)); -/* 128 */ -EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp* interp)); -/* 129 */ -EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp* interp, - Tcl_CallFrame * framePtr, - Tcl_Namespace * nsPtr, int isProcCallFrame)); -/* 130 */ -EXTERN int Tcl_RemoveInterpResolvers _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * name)); -/* 131 */ -EXTERN void Tcl_SetNamespaceResolvers _ANSI_ARGS_(( - Tcl_Namespace * namespacePtr, - Tcl_ResolveCmdProc * cmdProc, - Tcl_ResolveVarProc * varProc, - Tcl_ResolveCompiledVarProc * compiledVarProc)); -/* 132 */ -EXTERN int TclpHasSockets _ANSI_ARGS_((Tcl_Interp * interp)); -/* 133 */ -EXTERN struct tm * TclpGetDate _ANSI_ARGS_((TclpTime_t time, int useGMT)); -/* 134 */ -EXTERN size_t TclpStrftime _ANSI_ARGS_((char * s, size_t maxsize, - CONST char * format, CONST struct tm * t, - int useGMT)); -/* 135 */ -EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void)); -/* Slot 136 is reserved */ -/* Slot 137 is reserved */ -/* 138 */ -EXTERN CONST84_RETURN char * TclGetEnv _ANSI_ARGS_((CONST char * name, - Tcl_DString * valuePtr)); -/* Slot 139 is reserved */ -/* 140 */ -EXTERN int TclLooksLikeInt _ANSI_ARGS_((CONST char * bytes, - int length)); -/* 141 */ -EXTERN CONST84_RETURN char * TclpGetCwd _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_DString * cwdPtr)); -/* 142 */ -EXTERN int TclSetByteCodeFromAny _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - CompileHookProc * hookProc, - ClientData clientData)); -/* 143 */ -EXTERN int TclAddLiteralObj _ANSI_ARGS_(( - struct CompileEnv * envPtr, Tcl_Obj * objPtr, - LiteralEntry ** litPtrPtr)); -/* 144 */ -EXTERN void TclHideLiteral _ANSI_ARGS_((Tcl_Interp * interp, - struct CompileEnv * envPtr, int index)); -/* 145 */ -EXTERN struct AuxDataType * TclGetAuxDataType _ANSI_ARGS_((char * typeName)); -/* 146 */ -EXTERN TclHandle TclHandleCreate _ANSI_ARGS_((VOID * ptr)); -/* 147 */ -EXTERN void TclHandleFree _ANSI_ARGS_((TclHandle handle)); -/* 148 */ -EXTERN TclHandle TclHandlePreserve _ANSI_ARGS_((TclHandle handle)); -/* 149 */ -EXTERN void TclHandleRelease _ANSI_ARGS_((TclHandle handle)); -/* 150 */ -EXTERN int TclRegAbout _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_RegExp re)); -/* 151 */ -EXTERN void TclRegExpRangeUniChar _ANSI_ARGS_((Tcl_RegExp re, - int index, int * startPtr, int * endPtr)); -/* 152 */ -EXTERN void TclSetLibraryPath _ANSI_ARGS_((Tcl_Obj * pathPtr)); -/* 153 */ -EXTERN Tcl_Obj * TclGetLibraryPath _ANSI_ARGS_((void)); -/* Slot 154 is reserved */ -/* Slot 155 is reserved */ -/* 156 */ -EXTERN void TclRegError _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * msg, int status)); -/* 157 */ -EXTERN Var * TclVarTraceExists _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * varName)); -/* 158 */ -EXTERN void TclSetStartupScriptFileName _ANSI_ARGS_(( - CONST char * filename)); -/* 159 */ -EXTERN CONST84_RETURN char * TclGetStartupScriptFileName _ANSI_ARGS_((void)); -/* Slot 160 is reserved */ -/* 161 */ -EXTERN int TclChannelTransform _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); -/* 162 */ -EXTERN void TclChannelEventScriptInvoker _ANSI_ARGS_(( - ClientData clientData, int flags)); -/* 163 */ -EXTERN void * TclGetInstructionTable _ANSI_ARGS_((void)); -/* 164 */ -EXTERN void TclExpandCodeArray _ANSI_ARGS_((void * envPtr)); -/* 165 */ -EXTERN void TclpSetInitialEncodings _ANSI_ARGS_((void)); -/* 166 */ -EXTERN int TclListObjSetElement _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * listPtr, - int index, Tcl_Obj * valuePtr)); -/* 167 */ -EXTERN void TclSetStartupScriptPath _ANSI_ARGS_(( - Tcl_Obj * pathPtr)); -/* 168 */ -EXTERN Tcl_Obj * TclGetStartupScriptPath _ANSI_ARGS_((void)); -/* 169 */ -EXTERN int TclpUtfNcmp2 _ANSI_ARGS_((CONST char * s1, - CONST char * s2, unsigned long n)); -/* 170 */ -EXTERN int TclCheckInterpTraces _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * command, - int numChars, Command * cmdPtr, int result, - int traceFlags, int objc, - Tcl_Obj *CONST objv[])); -/* 171 */ -EXTERN int TclCheckExecutionTraces _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * command, - int numChars, Command * cmdPtr, int result, - int traceFlags, int objc, - Tcl_Obj *CONST objv[])); -/* 172 */ -EXTERN int TclInThreadExit _ANSI_ARGS_((void)); -/* 173 */ -EXTERN int TclUniCharMatch _ANSI_ARGS_(( - CONST Tcl_UniChar * string, int strLen, - CONST Tcl_UniChar * pattern, int ptnLen, - int nocase)); -/* Slot 174 is reserved */ -/* Slot 175 is reserved */ -/* Slot 176 is reserved */ -/* Slot 177 is reserved */ -/* Slot 178 is reserved */ -/* Slot 179 is reserved */ -/* Slot 180 is reserved */ -/* Slot 181 is reserved */ -/* 182 */ -EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t clock)); -/* 183 */ -EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t clock)); - -typedef struct TclIntStubs { - int magic; - struct TclIntStubHooks *hooks; - - void *reserved0; - int (*tclAccessDeleteProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 1 */ - int (*tclAccessInsertProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 2 */ - void (*tclAllocateFreeObjects) _ANSI_ARGS_((void)); /* 3 */ - void *reserved4; -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved5; -#endif /* MAC_TCL */ - void (*tclCleanupCommand) _ANSI_ARGS_((Command * cmdPtr)); /* 6 */ - int (*tclCopyAndCollapse) _ANSI_ARGS_((int count, CONST char * src, char * dst)); /* 7 */ - int (*tclCopyChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel inChan, Tcl_Channel outChan, int toRead, Tcl_Obj * cmdPtr)); /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved9; -#endif /* MAC_TCL */ - int (*tclCreateProc) _ANSI_ARGS_((Tcl_Interp * interp, Namespace * nsPtr, CONST char * procName, Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, Proc ** procPtrPtr)); /* 10 */ - void (*tclDeleteCompiledLocalVars) _ANSI_ARGS_((Interp * iPtr, CallFrame * framePtr)); /* 11 */ - void (*tclDeleteVars) _ANSI_ARGS_((Interp * iPtr, Tcl_HashTable * tablePtr)); /* 12 */ - int (*tclDoGlob) _ANSI_ARGS_((Tcl_Interp * interp, char * separators, Tcl_DString * headPtr, char * tail, Tcl_GlobTypeData * types)); /* 13 */ - void (*tclDumpMemoryInfo) _ANSI_ARGS_((FILE * outFile)); /* 14 */ - void *reserved15; - void (*tclExprFloatError) _ANSI_ARGS_((Tcl_Interp * interp, double value)); /* 16 */ - void *reserved17; - void *reserved18; - void *reserved19; - void *reserved20; - void *reserved21; - int (*tclFindElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int listLength, CONST char ** elementPtr, CONST char ** nextPtr, int * sizePtr, int * bracePtr)); /* 22 */ - Proc * (*tclFindProc) _ANSI_ARGS_((Interp * iPtr, CONST char * procName)); /* 23 */ - int (*tclFormatInt) _ANSI_ARGS_((char * buffer, long n)); /* 24 */ - void (*tclFreePackageInfo) _ANSI_ARGS_((Interp * iPtr)); /* 25 */ - void *reserved26; - int (*tclGetDate) _ANSI_ARGS_((char * p, unsigned long now, long zone, unsigned long * timePtr)); /* 27 */ - Tcl_Channel (*tclpGetDefaultStdChannel) _ANSI_ARGS_((int type)); /* 28 */ - void *reserved29; - void *reserved30; - char * (*tclGetExtension) _ANSI_ARGS_((char * name)); /* 31 */ - int (*tclGetFrame) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CallFrame ** framePtrPtr)); /* 32 */ - TclCmdProcType (*tclGetInterpProc) _ANSI_ARGS_((void)); /* 33 */ - int (*tclGetIntForIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int endValue, int * indexPtr)); /* 34 */ - void *reserved35; - int (*tclGetLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * longPtr)); /* 36 */ - int (*tclGetLoadedPackages) _ANSI_ARGS_((Tcl_Interp * interp, char * targetName)); /* 37 */ - int (*tclGetNamespaceForQualName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * qualName, Namespace * cxtNsPtr, int flags, Namespace ** nsPtrPtr, Namespace ** altNsPtrPtr, Namespace ** actualCxtPtrPtr, CONST char ** simpleNamePtr)); /* 38 */ - TclObjCmdProcType (*tclGetObjInterpProc) _ANSI_ARGS_((void)); /* 39 */ - int (*tclGetOpenMode) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * seekFlagPtr)); /* 40 */ - Tcl_Command (*tclGetOriginalCommand) _ANSI_ARGS_((Tcl_Command command)); /* 41 */ - char * (*tclpGetUserHome) _ANSI_ARGS_((CONST char * name, Tcl_DString * bufferPtr)); /* 42 */ - int (*tclGlobalInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 43 */ - int (*tclGuessPackageName) _ANSI_ARGS_((CONST char * fileName, Tcl_DString * bufPtr)); /* 44 */ - int (*tclHideUnsafeCommands) _ANSI_ARGS_((Tcl_Interp * interp)); /* 45 */ - int (*tclInExit) _ANSI_ARGS_((void)); /* 46 */ - void *reserved47; - void *reserved48; - Tcl_Obj * (*tclIncrVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, long incrAmount, int part1NotParsed)); /* 49 */ - void (*tclInitCompiledLocals) _ANSI_ARGS_((Tcl_Interp * interp, CallFrame * framePtr, Namespace * nsPtr)); /* 50 */ - int (*tclInterpInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 51 */ - int (*tclInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 52 */ - int (*tclInvokeObjectCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 53 */ - int (*tclInvokeStringCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 54 */ - Proc * (*tclIsProc) _ANSI_ARGS_((Command * cmdPtr)); /* 55 */ - void *reserved56; - void *reserved57; - Var * (*tclLookupVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, CONST char * msg, int createPart1, int createPart2, Var ** arrayPtrPtr)); /* 58 */ - void *reserved59; - int (*tclNeedSpace) _ANSI_ARGS_((CONST char * start, CONST char * end)); /* 60 */ - Tcl_Obj * (*tclNewProcBodyObj) _ANSI_ARGS_((Proc * procPtr)); /* 61 */ - int (*tclObjCommandComplete) _ANSI_ARGS_((Tcl_Obj * cmdPtr)); /* 62 */ - int (*tclObjInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 63 */ - int (*tclObjInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 64 */ - int (*tclObjInvokeGlobal) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 65 */ - int (*tclOpenFileChannelDeleteProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 66 */ - int (*tclOpenFileChannelInsertProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 67 */ - void *reserved68; - char * (*tclpAlloc) _ANSI_ARGS_((unsigned int size)); /* 69 */ - void *reserved70; - void *reserved71; - void *reserved72; - void *reserved73; - void (*tclpFree) _ANSI_ARGS_((char * ptr)); /* 74 */ - unsigned long (*tclpGetClicks) _ANSI_ARGS_((void)); /* 75 */ - unsigned long (*tclpGetSeconds) _ANSI_ARGS_((void)); /* 76 */ - void (*tclpGetTime) _ANSI_ARGS_((Tcl_Time * time)); /* 77 */ - int (*tclpGetTimeZone) _ANSI_ARGS_((unsigned long time)); /* 78 */ - void *reserved79; - void *reserved80; - char * (*tclpRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 81 */ - void *reserved82; - void *reserved83; - void *reserved84; - void *reserved85; - void *reserved86; - void *reserved87; - char * (*tclPrecTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, CONST char * name1, CONST char * name2, int flags)); /* 88 */ - int (*tclPreventAliasLoop) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Interp * cmdInterp, Tcl_Command cmd)); /* 89 */ - void *reserved90; - void (*tclProcCleanupProc) _ANSI_ARGS_((Proc * procPtr)); /* 91 */ - int (*tclProcCompileProc) _ANSI_ARGS_((Tcl_Interp * interp, Proc * procPtr, Tcl_Obj * bodyPtr, Namespace * nsPtr, CONST char * description, CONST char * procName)); /* 92 */ - void (*tclProcDeleteProc) _ANSI_ARGS_((ClientData clientData)); /* 93 */ - int (*tclProcInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 94 */ - void *reserved95; - int (*tclRenameCommand) _ANSI_ARGS_((Tcl_Interp * interp, char * oldName, char * newName)); /* 96 */ - void (*tclResetShadowedCmdRefs) _ANSI_ARGS_((Tcl_Interp * interp, Command * newCmdPtr)); /* 97 */ - int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ - void *reserved99; - void *reserved100; - char * (*tclSetPreInitScript) _ANSI_ARGS_((char * string)); /* 101 */ - void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp * interp)); /* 102 */ - int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp * interp, char * str, char * proto, int * portPtr)); /* 103 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ -#endif /* UNIX */ -#ifdef __WIN32__ - int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void *reserved104; -#endif /* MAC_TCL */ - void *reserved105; - int (*tclStatDeleteProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 106 */ - int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 107 */ - void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace * nsPtr)); /* 108 */ - int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp * iPtr)); /* 109 */ - void *reserved110; - void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 111 */ - int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, Tcl_Obj * objPtr)); /* 112 */ - Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, ClientData clientData, Tcl_NamespaceDeleteProc * deleteProc)); /* 113 */ - void (*tcl_DeleteNamespace) _ANSI_ARGS_((Tcl_Namespace * nsPtr)); /* 114 */ - int (*tcl_Export) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int resetListFirst)); /* 115 */ - Tcl_Command (*tcl_FindCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 116 */ - Tcl_Namespace * (*tcl_FindNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 117 */ - int (*tcl_GetInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolverInfo * resInfo)); /* 118 */ - int (*tcl_GetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolverInfo * resInfo)); /* 119 */ - Tcl_Var (*tcl_FindNamespaceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 120 */ - int (*tcl_ForgetImport) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern)); /* 121 */ - Tcl_Command (*tcl_GetCommandFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 122 */ - void (*tcl_GetCommandFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command, Tcl_Obj * objPtr)); /* 123 */ - Tcl_Namespace * (*tcl_GetCurrentNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 124 */ - Tcl_Namespace * (*tcl_GetGlobalNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 125 */ - void (*tcl_GetVariableFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Var variable, Tcl_Obj * objPtr)); /* 126 */ - int (*tcl_Import) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int allowOverwrite)); /* 127 */ - void (*tcl_PopCallFrame) _ANSI_ARGS_((Tcl_Interp* interp)); /* 128 */ - int (*tcl_PushCallFrame) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_CallFrame * framePtr, Tcl_Namespace * nsPtr, int isProcCallFrame)); /* 129 */ - int (*tcl_RemoveInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 130 */ - void (*tcl_SetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 131 */ - int (*tclpHasSockets) _ANSI_ARGS_((Tcl_Interp * interp)); /* 132 */ - struct tm * (*tclpGetDate) _ANSI_ARGS_((TclpTime_t time, int useGMT)); /* 133 */ - size_t (*tclpStrftime) _ANSI_ARGS_((char * s, size_t maxsize, CONST char * format, CONST struct tm * t, int useGMT)); /* 134 */ - int (*tclpCheckStackSpace) _ANSI_ARGS_((void)); /* 135 */ - void *reserved136; - void *reserved137; - CONST84_RETURN char * (*tclGetEnv) _ANSI_ARGS_((CONST char * name, Tcl_DString * valuePtr)); /* 138 */ - void *reserved139; - int (*tclLooksLikeInt) _ANSI_ARGS_((CONST char * bytes, int length)); /* 140 */ - CONST84_RETURN char * (*tclpGetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 141 */ - int (*tclSetByteCodeFromAny) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CompileHookProc * hookProc, ClientData clientData)); /* 142 */ - int (*tclAddLiteralObj) _ANSI_ARGS_((struct CompileEnv * envPtr, Tcl_Obj * objPtr, LiteralEntry ** litPtrPtr)); /* 143 */ - void (*tclHideLiteral) _ANSI_ARGS_((Tcl_Interp * interp, struct CompileEnv * envPtr, int index)); /* 144 */ - struct AuxDataType * (*tclGetAuxDataType) _ANSI_ARGS_((char * typeName)); /* 145 */ - TclHandle (*tclHandleCreate) _ANSI_ARGS_((VOID * ptr)); /* 146 */ - void (*tclHandleFree) _ANSI_ARGS_((TclHandle handle)); /* 147 */ - TclHandle (*tclHandlePreserve) _ANSI_ARGS_((TclHandle handle)); /* 148 */ - void (*tclHandleRelease) _ANSI_ARGS_((TclHandle handle)); /* 149 */ - int (*tclRegAbout) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp re)); /* 150 */ - void (*tclRegExpRangeUniChar) _ANSI_ARGS_((Tcl_RegExp re, int index, int * startPtr, int * endPtr)); /* 151 */ - void (*tclSetLibraryPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 152 */ - Tcl_Obj * (*tclGetLibraryPath) _ANSI_ARGS_((void)); /* 153 */ - void *reserved154; - void *reserved155; - void (*tclRegError) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * msg, int status)); /* 156 */ - Var * (*tclVarTraceExists) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 157 */ - void (*tclSetStartupScriptFileName) _ANSI_ARGS_((CONST char * filename)); /* 158 */ - CONST84_RETURN char * (*tclGetStartupScriptFileName) _ANSI_ARGS_((void)); /* 159 */ - void *reserved160; - int (*tclChannelTransform) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); /* 161 */ - void (*tclChannelEventScriptInvoker) _ANSI_ARGS_((ClientData clientData, int flags)); /* 162 */ - void * (*tclGetInstructionTable) _ANSI_ARGS_((void)); /* 163 */ - void (*tclExpandCodeArray) _ANSI_ARGS_((void * envPtr)); /* 164 */ - void (*tclpSetInitialEncodings) _ANSI_ARGS_((void)); /* 165 */ - int (*tclListObjSetElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj * valuePtr)); /* 166 */ - void (*tclSetStartupScriptPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 167 */ - Tcl_Obj * (*tclGetStartupScriptPath) _ANSI_ARGS_((void)); /* 168 */ - int (*tclpUtfNcmp2) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 169 */ - int (*tclCheckInterpTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 170 */ - int (*tclCheckExecutionTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 171 */ - int (*tclInThreadExit) _ANSI_ARGS_((void)); /* 172 */ - int (*tclUniCharMatch) _ANSI_ARGS_((CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); /* 173 */ - void *reserved174; - void *reserved175; - void *reserved176; - void *reserved177; - void *reserved178; - void *reserved179; - void *reserved180; - void *reserved181; - struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t clock)); /* 182 */ - struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ -} TclIntStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclIntStubs *tclIntStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -/* Slot 0 is reserved */ -#ifndef TclAccessDeleteProc -#define TclAccessDeleteProc \ - (tclIntStubsPtr->tclAccessDeleteProc) /* 1 */ -#endif -#ifndef TclAccessInsertProc -#define TclAccessInsertProc \ - (tclIntStubsPtr->tclAccessInsertProc) /* 2 */ -#endif -#ifndef TclAllocateFreeObjects -#define TclAllocateFreeObjects \ - (tclIntStubsPtr->tclAllocateFreeObjects) /* 3 */ -#endif -/* Slot 4 is reserved */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclCleanupChildren -#define TclCleanupChildren \ - (tclIntStubsPtr->tclCleanupChildren) /* 5 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclCleanupChildren -#define TclCleanupChildren \ - (tclIntStubsPtr->tclCleanupChildren) /* 5 */ -#endif -#endif /* __WIN32__ */ -#ifndef TclCleanupCommand -#define TclCleanupCommand \ - (tclIntStubsPtr->tclCleanupCommand) /* 6 */ -#endif -#ifndef TclCopyAndCollapse -#define TclCopyAndCollapse \ - (tclIntStubsPtr->tclCopyAndCollapse) /* 7 */ -#endif -#ifndef TclCopyChannel -#define TclCopyChannel \ - (tclIntStubsPtr->tclCopyChannel) /* 8 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclCreatePipeline -#define TclCreatePipeline \ - (tclIntStubsPtr->tclCreatePipeline) /* 9 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclCreatePipeline -#define TclCreatePipeline \ - (tclIntStubsPtr->tclCreatePipeline) /* 9 */ -#endif -#endif /* __WIN32__ */ -#ifndef TclCreateProc -#define TclCreateProc \ - (tclIntStubsPtr->tclCreateProc) /* 10 */ -#endif -#ifndef TclDeleteCompiledLocalVars -#define TclDeleteCompiledLocalVars \ - (tclIntStubsPtr->tclDeleteCompiledLocalVars) /* 11 */ -#endif -#ifndef TclDeleteVars -#define TclDeleteVars \ - (tclIntStubsPtr->tclDeleteVars) /* 12 */ -#endif -#ifndef TclDoGlob -#define TclDoGlob \ - (tclIntStubsPtr->tclDoGlob) /* 13 */ -#endif -#ifndef TclDumpMemoryInfo -#define TclDumpMemoryInfo \ - (tclIntStubsPtr->tclDumpMemoryInfo) /* 14 */ -#endif -/* Slot 15 is reserved */ -#ifndef TclExprFloatError -#define TclExprFloatError \ - (tclIntStubsPtr->tclExprFloatError) /* 16 */ -#endif -/* Slot 17 is reserved */ -/* Slot 18 is reserved */ -/* Slot 19 is reserved */ -/* Slot 20 is reserved */ -/* Slot 21 is reserved */ -#ifndef TclFindElement -#define TclFindElement \ - (tclIntStubsPtr->tclFindElement) /* 22 */ -#endif -#ifndef TclFindProc -#define TclFindProc \ - (tclIntStubsPtr->tclFindProc) /* 23 */ -#endif -#ifndef TclFormatInt -#define TclFormatInt \ - (tclIntStubsPtr->tclFormatInt) /* 24 */ -#endif -#ifndef TclFreePackageInfo -#define TclFreePackageInfo \ - (tclIntStubsPtr->tclFreePackageInfo) /* 25 */ -#endif -/* Slot 26 is reserved */ -#ifndef TclGetDate -#define TclGetDate \ - (tclIntStubsPtr->tclGetDate) /* 27 */ -#endif -#ifndef TclpGetDefaultStdChannel -#define TclpGetDefaultStdChannel \ - (tclIntStubsPtr->tclpGetDefaultStdChannel) /* 28 */ -#endif -/* Slot 29 is reserved */ -/* Slot 30 is reserved */ -#ifndef TclGetExtension -#define TclGetExtension \ - (tclIntStubsPtr->tclGetExtension) /* 31 */ -#endif -#ifndef TclGetFrame -#define TclGetFrame \ - (tclIntStubsPtr->tclGetFrame) /* 32 */ -#endif -#ifndef TclGetInterpProc -#define TclGetInterpProc \ - (tclIntStubsPtr->tclGetInterpProc) /* 33 */ -#endif -#ifndef TclGetIntForIndex -#define TclGetIntForIndex \ - (tclIntStubsPtr->tclGetIntForIndex) /* 34 */ -#endif -/* Slot 35 is reserved */ -#ifndef TclGetLong -#define TclGetLong \ - (tclIntStubsPtr->tclGetLong) /* 36 */ -#endif -#ifndef TclGetLoadedPackages -#define TclGetLoadedPackages \ - (tclIntStubsPtr->tclGetLoadedPackages) /* 37 */ -#endif -#ifndef TclGetNamespaceForQualName -#define TclGetNamespaceForQualName \ - (tclIntStubsPtr->tclGetNamespaceForQualName) /* 38 */ -#endif -#ifndef TclGetObjInterpProc -#define TclGetObjInterpProc \ - (tclIntStubsPtr->tclGetObjInterpProc) /* 39 */ -#endif -#ifndef TclGetOpenMode -#define TclGetOpenMode \ - (tclIntStubsPtr->tclGetOpenMode) /* 40 */ -#endif -#ifndef TclGetOriginalCommand -#define TclGetOriginalCommand \ - (tclIntStubsPtr->tclGetOriginalCommand) /* 41 */ -#endif -#ifndef TclpGetUserHome -#define TclpGetUserHome \ - (tclIntStubsPtr->tclpGetUserHome) /* 42 */ -#endif -#ifndef TclGlobalInvoke -#define TclGlobalInvoke \ - (tclIntStubsPtr->tclGlobalInvoke) /* 43 */ -#endif -#ifndef TclGuessPackageName -#define TclGuessPackageName \ - (tclIntStubsPtr->tclGuessPackageName) /* 44 */ -#endif -#ifndef TclHideUnsafeCommands -#define TclHideUnsafeCommands \ - (tclIntStubsPtr->tclHideUnsafeCommands) /* 45 */ -#endif -#ifndef TclInExit -#define TclInExit \ - (tclIntStubsPtr->tclInExit) /* 46 */ -#endif -/* Slot 47 is reserved */ -/* Slot 48 is reserved */ -#ifndef TclIncrVar2 -#define TclIncrVar2 \ - (tclIntStubsPtr->tclIncrVar2) /* 49 */ -#endif -#ifndef TclInitCompiledLocals -#define TclInitCompiledLocals \ - (tclIntStubsPtr->tclInitCompiledLocals) /* 50 */ -#endif -#ifndef TclInterpInit -#define TclInterpInit \ - (tclIntStubsPtr->tclInterpInit) /* 51 */ -#endif -#ifndef TclInvoke -#define TclInvoke \ - (tclIntStubsPtr->tclInvoke) /* 52 */ -#endif -#ifndef TclInvokeObjectCommand -#define TclInvokeObjectCommand \ - (tclIntStubsPtr->tclInvokeObjectCommand) /* 53 */ -#endif -#ifndef TclInvokeStringCommand -#define TclInvokeStringCommand \ - (tclIntStubsPtr->tclInvokeStringCommand) /* 54 */ -#endif -#ifndef TclIsProc -#define TclIsProc \ - (tclIntStubsPtr->tclIsProc) /* 55 */ -#endif -/* Slot 56 is reserved */ -/* Slot 57 is reserved */ -#ifndef TclLookupVar -#define TclLookupVar \ - (tclIntStubsPtr->tclLookupVar) /* 58 */ -#endif -/* Slot 59 is reserved */ -#ifndef TclNeedSpace -#define TclNeedSpace \ - (tclIntStubsPtr->tclNeedSpace) /* 60 */ -#endif -#ifndef TclNewProcBodyObj -#define TclNewProcBodyObj \ - (tclIntStubsPtr->tclNewProcBodyObj) /* 61 */ -#endif -#ifndef TclObjCommandComplete -#define TclObjCommandComplete \ - (tclIntStubsPtr->tclObjCommandComplete) /* 62 */ -#endif -#ifndef TclObjInterpProc -#define TclObjInterpProc \ - (tclIntStubsPtr->tclObjInterpProc) /* 63 */ -#endif -#ifndef TclObjInvoke -#define TclObjInvoke \ - (tclIntStubsPtr->tclObjInvoke) /* 64 */ -#endif -#ifndef TclObjInvokeGlobal -#define TclObjInvokeGlobal \ - (tclIntStubsPtr->tclObjInvokeGlobal) /* 65 */ -#endif -#ifndef TclOpenFileChannelDeleteProc -#define TclOpenFileChannelDeleteProc \ - (tclIntStubsPtr->tclOpenFileChannelDeleteProc) /* 66 */ -#endif -#ifndef TclOpenFileChannelInsertProc -#define TclOpenFileChannelInsertProc \ - (tclIntStubsPtr->tclOpenFileChannelInsertProc) /* 67 */ -#endif -/* Slot 68 is reserved */ -#ifndef TclpAlloc -#define TclpAlloc \ - (tclIntStubsPtr->tclpAlloc) /* 69 */ -#endif -/* Slot 70 is reserved */ -/* Slot 71 is reserved */ -/* Slot 72 is reserved */ -/* Slot 73 is reserved */ -#ifndef TclpFree -#define TclpFree \ - (tclIntStubsPtr->tclpFree) /* 74 */ -#endif -#ifndef TclpGetClicks -#define TclpGetClicks \ - (tclIntStubsPtr->tclpGetClicks) /* 75 */ -#endif -#ifndef TclpGetSeconds -#define TclpGetSeconds \ - (tclIntStubsPtr->tclpGetSeconds) /* 76 */ -#endif -#ifndef TclpGetTime -#define TclpGetTime \ - (tclIntStubsPtr->tclpGetTime) /* 77 */ -#endif -#ifndef TclpGetTimeZone -#define TclpGetTimeZone \ - (tclIntStubsPtr->tclpGetTimeZone) /* 78 */ -#endif -/* Slot 79 is reserved */ -/* Slot 80 is reserved */ -#ifndef TclpRealloc -#define TclpRealloc \ - (tclIntStubsPtr->tclpRealloc) /* 81 */ -#endif -/* Slot 82 is reserved */ -/* Slot 83 is reserved */ -/* Slot 84 is reserved */ -/* Slot 85 is reserved */ -/* Slot 86 is reserved */ -/* Slot 87 is reserved */ -#ifndef TclPrecTraceProc -#define TclPrecTraceProc \ - (tclIntStubsPtr->tclPrecTraceProc) /* 88 */ -#endif -#ifndef TclPreventAliasLoop -#define TclPreventAliasLoop \ - (tclIntStubsPtr->tclPreventAliasLoop) /* 89 */ -#endif -/* Slot 90 is reserved */ -#ifndef TclProcCleanupProc -#define TclProcCleanupProc \ - (tclIntStubsPtr->tclProcCleanupProc) /* 91 */ -#endif -#ifndef TclProcCompileProc -#define TclProcCompileProc \ - (tclIntStubsPtr->tclProcCompileProc) /* 92 */ -#endif -#ifndef TclProcDeleteProc -#define TclProcDeleteProc \ - (tclIntStubsPtr->tclProcDeleteProc) /* 93 */ -#endif -#ifndef TclProcInterpProc -#define TclProcInterpProc \ - (tclIntStubsPtr->tclProcInterpProc) /* 94 */ -#endif -/* Slot 95 is reserved */ -#ifndef TclRenameCommand -#define TclRenameCommand \ - (tclIntStubsPtr->tclRenameCommand) /* 96 */ -#endif -#ifndef TclResetShadowedCmdRefs -#define TclResetShadowedCmdRefs \ - (tclIntStubsPtr->tclResetShadowedCmdRefs) /* 97 */ -#endif -#ifndef TclServiceIdle -#define TclServiceIdle \ - (tclIntStubsPtr->tclServiceIdle) /* 98 */ -#endif -/* Slot 99 is reserved */ -/* Slot 100 is reserved */ -#ifndef TclSetPreInitScript -#define TclSetPreInitScript \ - (tclIntStubsPtr->tclSetPreInitScript) /* 101 */ -#endif -#ifndef TclSetupEnv -#define TclSetupEnv \ - (tclIntStubsPtr->tclSetupEnv) /* 102 */ -#endif -#ifndef TclSockGetPort -#define TclSockGetPort \ - (tclIntStubsPtr->tclSockGetPort) /* 103 */ -#endif -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclSockMinimumBuffers -#define TclSockMinimumBuffers \ - (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclSockMinimumBuffers -#define TclSockMinimumBuffers \ - (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ -#endif -#endif /* __WIN32__ */ -/* Slot 105 is reserved */ -#ifndef TclStatDeleteProc -#define TclStatDeleteProc \ - (tclIntStubsPtr->tclStatDeleteProc) /* 106 */ -#endif -#ifndef TclStatInsertProc -#define TclStatInsertProc \ - (tclIntStubsPtr->tclStatInsertProc) /* 107 */ -#endif -#ifndef TclTeardownNamespace -#define TclTeardownNamespace \ - (tclIntStubsPtr->tclTeardownNamespace) /* 108 */ -#endif -#ifndef TclUpdateReturnInfo -#define TclUpdateReturnInfo \ - (tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */ -#endif -/* Slot 110 is reserved */ -#ifndef Tcl_AddInterpResolvers -#define Tcl_AddInterpResolvers \ - (tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */ -#endif -#ifndef Tcl_AppendExportList -#define Tcl_AppendExportList \ - (tclIntStubsPtr->tcl_AppendExportList) /* 112 */ -#endif -#ifndef Tcl_CreateNamespace -#define Tcl_CreateNamespace \ - (tclIntStubsPtr->tcl_CreateNamespace) /* 113 */ -#endif -#ifndef Tcl_DeleteNamespace -#define Tcl_DeleteNamespace \ - (tclIntStubsPtr->tcl_DeleteNamespace) /* 114 */ -#endif -#ifndef Tcl_Export -#define Tcl_Export \ - (tclIntStubsPtr->tcl_Export) /* 115 */ -#endif -#ifndef Tcl_FindCommand -#define Tcl_FindCommand \ - (tclIntStubsPtr->tcl_FindCommand) /* 116 */ -#endif -#ifndef Tcl_FindNamespace -#define Tcl_FindNamespace \ - (tclIntStubsPtr->tcl_FindNamespace) /* 117 */ -#endif -#ifndef Tcl_GetInterpResolvers -#define Tcl_GetInterpResolvers \ - (tclIntStubsPtr->tcl_GetInterpResolvers) /* 118 */ -#endif -#ifndef Tcl_GetNamespaceResolvers -#define Tcl_GetNamespaceResolvers \ - (tclIntStubsPtr->tcl_GetNamespaceResolvers) /* 119 */ -#endif -#ifndef Tcl_FindNamespaceVar -#define Tcl_FindNamespaceVar \ - (tclIntStubsPtr->tcl_FindNamespaceVar) /* 120 */ -#endif -#ifndef Tcl_ForgetImport -#define Tcl_ForgetImport \ - (tclIntStubsPtr->tcl_ForgetImport) /* 121 */ -#endif -#ifndef Tcl_GetCommandFromObj -#define Tcl_GetCommandFromObj \ - (tclIntStubsPtr->tcl_GetCommandFromObj) /* 122 */ -#endif -#ifndef Tcl_GetCommandFullName -#define Tcl_GetCommandFullName \ - (tclIntStubsPtr->tcl_GetCommandFullName) /* 123 */ -#endif -#ifndef Tcl_GetCurrentNamespace -#define Tcl_GetCurrentNamespace \ - (tclIntStubsPtr->tcl_GetCurrentNamespace) /* 124 */ -#endif -#ifndef Tcl_GetGlobalNamespace -#define Tcl_GetGlobalNamespace \ - (tclIntStubsPtr->tcl_GetGlobalNamespace) /* 125 */ -#endif -#ifndef Tcl_GetVariableFullName -#define Tcl_GetVariableFullName \ - (tclIntStubsPtr->tcl_GetVariableFullName) /* 126 */ -#endif -#ifndef Tcl_Import -#define Tcl_Import \ - (tclIntStubsPtr->tcl_Import) /* 127 */ -#endif -#ifndef Tcl_PopCallFrame -#define Tcl_PopCallFrame \ - (tclIntStubsPtr->tcl_PopCallFrame) /* 128 */ -#endif -#ifndef Tcl_PushCallFrame -#define Tcl_PushCallFrame \ - (tclIntStubsPtr->tcl_PushCallFrame) /* 129 */ -#endif -#ifndef Tcl_RemoveInterpResolvers -#define Tcl_RemoveInterpResolvers \ - (tclIntStubsPtr->tcl_RemoveInterpResolvers) /* 130 */ -#endif -#ifndef Tcl_SetNamespaceResolvers -#define Tcl_SetNamespaceResolvers \ - (tclIntStubsPtr->tcl_SetNamespaceResolvers) /* 131 */ -#endif -#ifndef TclpHasSockets -#define TclpHasSockets \ - (tclIntStubsPtr->tclpHasSockets) /* 132 */ -#endif -#ifndef TclpGetDate -#define TclpGetDate \ - (tclIntStubsPtr->tclpGetDate) /* 133 */ -#endif -#ifndef TclpStrftime -#define TclpStrftime \ - (tclIntStubsPtr->tclpStrftime) /* 134 */ -#endif -#ifndef TclpCheckStackSpace -#define TclpCheckStackSpace \ - (tclIntStubsPtr->tclpCheckStackSpace) /* 135 */ -#endif -/* Slot 136 is reserved */ -/* Slot 137 is reserved */ -#ifndef TclGetEnv -#define TclGetEnv \ - (tclIntStubsPtr->tclGetEnv) /* 138 */ -#endif -/* Slot 139 is reserved */ -#ifndef TclLooksLikeInt -#define TclLooksLikeInt \ - (tclIntStubsPtr->tclLooksLikeInt) /* 140 */ -#endif -#ifndef TclpGetCwd -#define TclpGetCwd \ - (tclIntStubsPtr->tclpGetCwd) /* 141 */ -#endif -#ifndef TclSetByteCodeFromAny -#define TclSetByteCodeFromAny \ - (tclIntStubsPtr->tclSetByteCodeFromAny) /* 142 */ -#endif -#ifndef TclAddLiteralObj -#define TclAddLiteralObj \ - (tclIntStubsPtr->tclAddLiteralObj) /* 143 */ -#endif -#ifndef TclHideLiteral -#define TclHideLiteral \ - (tclIntStubsPtr->tclHideLiteral) /* 144 */ -#endif -#ifndef TclGetAuxDataType -#define TclGetAuxDataType \ - (tclIntStubsPtr->tclGetAuxDataType) /* 145 */ -#endif -#ifndef TclHandleCreate -#define TclHandleCreate \ - (tclIntStubsPtr->tclHandleCreate) /* 146 */ -#endif -#ifndef TclHandleFree -#define TclHandleFree \ - (tclIntStubsPtr->tclHandleFree) /* 147 */ -#endif -#ifndef TclHandlePreserve -#define TclHandlePreserve \ - (tclIntStubsPtr->tclHandlePreserve) /* 148 */ -#endif -#ifndef TclHandleRelease -#define TclHandleRelease \ - (tclIntStubsPtr->tclHandleRelease) /* 149 */ -#endif -#ifndef TclRegAbout -#define TclRegAbout \ - (tclIntStubsPtr->tclRegAbout) /* 150 */ -#endif -#ifndef TclRegExpRangeUniChar -#define TclRegExpRangeUniChar \ - (tclIntStubsPtr->tclRegExpRangeUniChar) /* 151 */ -#endif -#ifndef TclSetLibraryPath -#define TclSetLibraryPath \ - (tclIntStubsPtr->tclSetLibraryPath) /* 152 */ -#endif -#ifndef TclGetLibraryPath -#define TclGetLibraryPath \ - (tclIntStubsPtr->tclGetLibraryPath) /* 153 */ -#endif -/* Slot 154 is reserved */ -/* Slot 155 is reserved */ -#ifndef TclRegError -#define TclRegError \ - (tclIntStubsPtr->tclRegError) /* 156 */ -#endif -#ifndef TclVarTraceExists -#define TclVarTraceExists \ - (tclIntStubsPtr->tclVarTraceExists) /* 157 */ -#endif -#ifndef TclSetStartupScriptFileName -#define TclSetStartupScriptFileName \ - (tclIntStubsPtr->tclSetStartupScriptFileName) /* 158 */ -#endif -#ifndef TclGetStartupScriptFileName -#define TclGetStartupScriptFileName \ - (tclIntStubsPtr->tclGetStartupScriptFileName) /* 159 */ -#endif -/* Slot 160 is reserved */ -#ifndef TclChannelTransform -#define TclChannelTransform \ - (tclIntStubsPtr->tclChannelTransform) /* 161 */ -#endif -#ifndef TclChannelEventScriptInvoker -#define TclChannelEventScriptInvoker \ - (tclIntStubsPtr->tclChannelEventScriptInvoker) /* 162 */ -#endif -#ifndef TclGetInstructionTable -#define TclGetInstructionTable \ - (tclIntStubsPtr->tclGetInstructionTable) /* 163 */ -#endif -#ifndef TclExpandCodeArray -#define TclExpandCodeArray \ - (tclIntStubsPtr->tclExpandCodeArray) /* 164 */ -#endif -#ifndef TclpSetInitialEncodings -#define TclpSetInitialEncodings \ - (tclIntStubsPtr->tclpSetInitialEncodings) /* 165 */ -#endif -#ifndef TclListObjSetElement -#define TclListObjSetElement \ - (tclIntStubsPtr->tclListObjSetElement) /* 166 */ -#endif -#ifndef TclSetStartupScriptPath -#define TclSetStartupScriptPath \ - (tclIntStubsPtr->tclSetStartupScriptPath) /* 167 */ -#endif -#ifndef TclGetStartupScriptPath -#define TclGetStartupScriptPath \ - (tclIntStubsPtr->tclGetStartupScriptPath) /* 168 */ -#endif -#ifndef TclpUtfNcmp2 -#define TclpUtfNcmp2 \ - (tclIntStubsPtr->tclpUtfNcmp2) /* 169 */ -#endif -#ifndef TclCheckInterpTraces -#define TclCheckInterpTraces \ - (tclIntStubsPtr->tclCheckInterpTraces) /* 170 */ -#endif -#ifndef TclCheckExecutionTraces -#define TclCheckExecutionTraces \ - (tclIntStubsPtr->tclCheckExecutionTraces) /* 171 */ -#endif -#ifndef TclInThreadExit -#define TclInThreadExit \ - (tclIntStubsPtr->tclInThreadExit) /* 172 */ -#endif -#ifndef TclUniCharMatch -#define TclUniCharMatch \ - (tclIntStubsPtr->tclUniCharMatch) /* 173 */ -#endif -/* Slot 174 is reserved */ -/* Slot 175 is reserved */ -/* Slot 176 is reserved */ -/* Slot 177 is reserved */ -/* Slot 178 is reserved */ -/* Slot 179 is reserved */ -/* Slot 180 is reserved */ -/* Slot 181 is reserved */ -#ifndef TclpLocaltime -#define TclpLocaltime \ - (tclIntStubsPtr->tclpLocaltime) /* 182 */ -#endif -#ifndef TclpGmtime -#define TclpGmtime \ - (tclIntStubsPtr->tclpGmtime) /* 183 */ -#endif - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLINTDECLS */ +/* + * tclIntDecls.h -- + * + * This file contains the declarations for all unsupported + * functions that are exported by the Tcl library. These + * interfaces are not guaranteed to remain the same between + * versions. Use at your own risk. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.5 2004/06/10 17:17:43 andreas_kupries Exp $ + */ + +#ifndef _TCLINTDECLS +#define _TCLINTDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tclInt.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +/* Slot 0 is reserved */ +/* 1 */ +EXTERN int TclAccessDeleteProc _ANSI_ARGS_(( + TclAccessProc_ * proc)); +/* 2 */ +EXTERN int TclAccessInsertProc _ANSI_ARGS_(( + TclAccessProc_ * proc)); +/* 3 */ +EXTERN void TclAllocateFreeObjects _ANSI_ARGS_((void)); +/* Slot 4 is reserved */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 5 */ +EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, + int numPids, Tcl_Pid * pidPtr, + Tcl_Channel errorChan)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 5 */ +EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp * interp, + int numPids, Tcl_Pid * pidPtr, + Tcl_Channel errorChan)); +#endif /* __WIN32__ */ +/* 6 */ +EXTERN void TclCleanupCommand _ANSI_ARGS_((Command * cmdPtr)); +/* 7 */ +EXTERN int TclCopyAndCollapse _ANSI_ARGS_((int count, + CONST char * src, char * dst)); +/* 8 */ +EXTERN int TclCopyChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel inChan, Tcl_Channel outChan, + int toRead, Tcl_Obj * cmdPtr)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 9 */ +EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, + TclFile * outPipePtr, TclFile * errFilePtr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 9 */ +EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, + TclFile * outPipePtr, TclFile * errFilePtr)); +#endif /* __WIN32__ */ +/* 10 */ +EXTERN int TclCreateProc _ANSI_ARGS_((Tcl_Interp * interp, + Namespace * nsPtr, CONST char * procName, + Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, + Proc ** procPtrPtr)); +/* 11 */ +EXTERN void TclDeleteCompiledLocalVars _ANSI_ARGS_(( + Interp * iPtr, CallFrame * framePtr)); +/* 12 */ +EXTERN void TclDeleteVars _ANSI_ARGS_((Interp * iPtr, + Tcl_HashTable * tablePtr)); +/* 13 */ +EXTERN int TclDoGlob _ANSI_ARGS_((Tcl_Interp * interp, + char * separators, Tcl_DString * headPtr, + char * tail, Tcl_GlobTypeData * types)); +/* 14 */ +EXTERN void TclDumpMemoryInfo _ANSI_ARGS_((FILE * outFile)); +/* Slot 15 is reserved */ +/* 16 */ +EXTERN void TclExprFloatError _ANSI_ARGS_((Tcl_Interp * interp, + double value)); +/* Slot 17 is reserved */ +/* Slot 18 is reserved */ +/* Slot 19 is reserved */ +/* Slot 20 is reserved */ +/* Slot 21 is reserved */ +/* 22 */ +EXTERN int TclFindElement _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * listStr, int listLength, + CONST char ** elementPtr, + CONST char ** nextPtr, int * sizePtr, + int * bracePtr)); +/* 23 */ +EXTERN Proc * TclFindProc _ANSI_ARGS_((Interp * iPtr, + CONST char * procName)); +/* 24 */ +EXTERN int TclFormatInt _ANSI_ARGS_((char * buffer, long n)); +/* 25 */ +EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp * iPtr)); +/* Slot 26 is reserved */ +/* 27 */ +EXTERN int TclGetDate _ANSI_ARGS_((char * p, unsigned long now, + long zone, unsigned long * timePtr)); +/* 28 */ +EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type)); +/* Slot 29 is reserved */ +/* Slot 30 is reserved */ +/* 31 */ +EXTERN char * TclGetExtension _ANSI_ARGS_((char * name)); +/* 32 */ +EXTERN int TclGetFrame _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, CallFrame ** framePtrPtr)); +/* 33 */ +EXTERN TclCmdProcType TclGetInterpProc _ANSI_ARGS_((void)); +/* 34 */ +EXTERN int TclGetIntForIndex _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * objPtr, int endValue, + int * indexPtr)); +/* Slot 35 is reserved */ +/* 36 */ +EXTERN int TclGetLong _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, long * longPtr)); +/* 37 */ +EXTERN int TclGetLoadedPackages _ANSI_ARGS_(( + Tcl_Interp * interp, char * targetName)); +/* 38 */ +EXTERN int TclGetNamespaceForQualName _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * qualName, + Namespace * cxtNsPtr, int flags, + Namespace ** nsPtrPtr, + Namespace ** altNsPtrPtr, + Namespace ** actualCxtPtrPtr, + CONST char ** simpleNamePtr)); +/* 39 */ +EXTERN TclObjCmdProcType TclGetObjInterpProc _ANSI_ARGS_((void)); +/* 40 */ +EXTERN int TclGetOpenMode _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * str, int * seekFlagPtr)); +/* 41 */ +EXTERN Tcl_Command TclGetOriginalCommand _ANSI_ARGS_(( + Tcl_Command command)); +/* 42 */ +EXTERN char * TclpGetUserHome _ANSI_ARGS_((CONST char * name, + Tcl_DString * bufferPtr)); +/* 43 */ +EXTERN int TclGlobalInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST84 char ** argv, int flags)); +/* 44 */ +EXTERN int TclGuessPackageName _ANSI_ARGS_(( + CONST char * fileName, Tcl_DString * bufPtr)); +/* 45 */ +EXTERN int TclHideUnsafeCommands _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 46 */ +EXTERN int TclInExit _ANSI_ARGS_((void)); +/* Slot 47 is reserved */ +/* Slot 48 is reserved */ +/* 49 */ +EXTERN Tcl_Obj * TclIncrVar2 _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, + long incrAmount, int part1NotParsed)); +/* 50 */ +EXTERN void TclInitCompiledLocals _ANSI_ARGS_(( + Tcl_Interp * interp, CallFrame * framePtr, + Namespace * nsPtr)); +/* 51 */ +EXTERN int TclInterpInit _ANSI_ARGS_((Tcl_Interp * interp)); +/* 52 */ +EXTERN int TclInvoke _ANSI_ARGS_((Tcl_Interp * interp, int argc, + CONST84 char ** argv, int flags)); +/* 53 */ +EXTERN int TclInvokeObjectCommand _ANSI_ARGS_(( + ClientData clientData, Tcl_Interp * interp, + int argc, CONST84 char ** argv)); +/* 54 */ +EXTERN int TclInvokeStringCommand _ANSI_ARGS_(( + ClientData clientData, Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[])); +/* 55 */ +EXTERN Proc * TclIsProc _ANSI_ARGS_((Command * cmdPtr)); +/* Slot 56 is reserved */ +/* Slot 57 is reserved */ +/* 58 */ +EXTERN Var * TclLookupVar _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * part1, CONST char * part2, + int flags, CONST char * msg, int createPart1, + int createPart2, Var ** arrayPtrPtr)); +/* Slot 59 is reserved */ +/* 60 */ +EXTERN int TclNeedSpace _ANSI_ARGS_((CONST char * start, + CONST char * end)); +/* 61 */ +EXTERN Tcl_Obj * TclNewProcBodyObj _ANSI_ARGS_((Proc * procPtr)); +/* 62 */ +EXTERN int TclObjCommandComplete _ANSI_ARGS_((Tcl_Obj * cmdPtr)); +/* 63 */ +EXTERN int TclObjInterpProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int objc, + Tcl_Obj *CONST objv[])); +/* 64 */ +EXTERN int TclObjInvoke _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 65 */ +EXTERN int TclObjInvokeGlobal _ANSI_ARGS_((Tcl_Interp * interp, + int objc, Tcl_Obj *CONST objv[], int flags)); +/* 66 */ +EXTERN int TclOpenFileChannelDeleteProc _ANSI_ARGS_(( + TclOpenFileChannelProc_ * proc)); +/* 67 */ +EXTERN int TclOpenFileChannelInsertProc _ANSI_ARGS_(( + TclOpenFileChannelProc_ * proc)); +/* Slot 68 is reserved */ +/* 69 */ +EXTERN char * TclpAlloc _ANSI_ARGS_((unsigned int size)); +/* Slot 70 is reserved */ +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +/* 74 */ +EXTERN void TclpFree _ANSI_ARGS_((char * ptr)); +/* 75 */ +EXTERN unsigned long TclpGetClicks _ANSI_ARGS_((void)); +/* 76 */ +EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void)); +/* 77 */ +EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time * time)); +/* 78 */ +EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time)); +/* Slot 79 is reserved */ +/* Slot 80 is reserved */ +/* 81 */ +EXTERN char * TclpRealloc _ANSI_ARGS_((char * ptr, + unsigned int size)); +/* Slot 82 is reserved */ +/* Slot 83 is reserved */ +/* Slot 84 is reserved */ +/* Slot 85 is reserved */ +/* Slot 86 is reserved */ +/* Slot 87 is reserved */ +/* 88 */ +EXTERN char * TclPrecTraceProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, CONST char * name1, + CONST char * name2, int flags)); +/* 89 */ +EXTERN int TclPreventAliasLoop _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Interp * cmdInterp, Tcl_Command cmd)); +/* Slot 90 is reserved */ +/* 91 */ +EXTERN void TclProcCleanupProc _ANSI_ARGS_((Proc * procPtr)); +/* 92 */ +EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp * interp, + Proc * procPtr, Tcl_Obj * bodyPtr, + Namespace * nsPtr, CONST char * description, + CONST char * procName)); +/* 93 */ +EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData)); +/* 94 */ +EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp * interp, int argc, + CONST84 char ** argv)); +/* Slot 95 is reserved */ +/* 96 */ +EXTERN int TclRenameCommand _ANSI_ARGS_((Tcl_Interp * interp, + char * oldName, char * newName)); +/* 97 */ +EXTERN void TclResetShadowedCmdRefs _ANSI_ARGS_(( + Tcl_Interp * interp, Command * newCmdPtr)); +/* 98 */ +EXTERN int TclServiceIdle _ANSI_ARGS_((void)); +/* Slot 99 is reserved */ +/* Slot 100 is reserved */ +/* 101 */ +EXTERN char * TclSetPreInitScript _ANSI_ARGS_((char * string)); +/* 102 */ +EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp * interp)); +/* 103 */ +EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp * interp, + char * str, char * proto, int * portPtr)); +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 104 */ +EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, + int size)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 104 */ +EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock, + int size)); +#endif /* __WIN32__ */ +/* Slot 105 is reserved */ +/* 106 */ +EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ * proc)); +/* 107 */ +EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ * proc)); +/* 108 */ +EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace * nsPtr)); +/* 109 */ +EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp * iPtr)); +/* Slot 110 is reserved */ +/* 111 */ +EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_ResolveCmdProc * cmdProc, + Tcl_ResolveVarProc * varProc, + Tcl_ResolveCompiledVarProc * compiledVarProc)); +/* 112 */ +EXTERN int Tcl_AppendExportList _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Namespace * nsPtr, + Tcl_Obj * objPtr)); +/* 113 */ +EXTERN Tcl_Namespace * Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, ClientData clientData, + Tcl_NamespaceDeleteProc * deleteProc)); +/* 114 */ +EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_(( + Tcl_Namespace * nsPtr)); +/* 115 */ +EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern, + int resetListFirst)); +/* 116 */ +EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 117 */ +EXTERN Tcl_Namespace * Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 118 */ +EXTERN int Tcl_GetInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_ResolverInfo * resInfo)); +/* 119 */ +EXTERN int Tcl_GetNamespaceResolvers _ANSI_ARGS_(( + Tcl_Namespace * namespacePtr, + Tcl_ResolverInfo * resInfo)); +/* 120 */ +EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name, + Tcl_Namespace * contextNsPtr, int flags)); +/* 121 */ +EXTERN int Tcl_ForgetImport _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern)); +/* 122 */ +EXTERN Tcl_Command Tcl_GetCommandFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr)); +/* 123 */ +EXTERN void Tcl_GetCommandFullName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Command command, + Tcl_Obj * objPtr)); +/* 124 */ +EXTERN Tcl_Namespace * Tcl_GetCurrentNamespace _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 125 */ +EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace _ANSI_ARGS_(( + Tcl_Interp * interp)); +/* 126 */ +EXTERN void Tcl_GetVariableFullName _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Var variable, + Tcl_Obj * objPtr)); +/* 127 */ +EXTERN int Tcl_Import _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Namespace * nsPtr, CONST char * pattern, + int allowOverwrite)); +/* 128 */ +EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp* interp)); +/* 129 */ +EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_CallFrame * framePtr, + Tcl_Namespace * nsPtr, int isProcCallFrame)); +/* 130 */ +EXTERN int Tcl_RemoveInterpResolvers _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * name)); +/* 131 */ +EXTERN void Tcl_SetNamespaceResolvers _ANSI_ARGS_(( + Tcl_Namespace * namespacePtr, + Tcl_ResolveCmdProc * cmdProc, + Tcl_ResolveVarProc * varProc, + Tcl_ResolveCompiledVarProc * compiledVarProc)); +/* 132 */ +EXTERN int TclpHasSockets _ANSI_ARGS_((Tcl_Interp * interp)); +/* 133 */ +EXTERN struct tm * TclpGetDate _ANSI_ARGS_((TclpTime_t time, int useGMT)); +/* 134 */ +EXTERN size_t TclpStrftime _ANSI_ARGS_((char * s, size_t maxsize, + CONST char * format, CONST struct tm * t, + int useGMT)); +/* 135 */ +EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void)); +/* Slot 136 is reserved */ +/* Slot 137 is reserved */ +/* 138 */ +EXTERN CONST84_RETURN char * TclGetEnv _ANSI_ARGS_((CONST char * name, + Tcl_DString * valuePtr)); +/* Slot 139 is reserved */ +/* 140 */ +EXTERN int TclLooksLikeInt _ANSI_ARGS_((CONST char * bytes, + int length)); +/* 141 */ +EXTERN CONST84_RETURN char * TclpGetCwd _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_DString * cwdPtr)); +/* 142 */ +EXTERN int TclSetByteCodeFromAny _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + CompileHookProc * hookProc, + ClientData clientData)); +/* 143 */ +EXTERN int TclAddLiteralObj _ANSI_ARGS_(( + struct CompileEnv * envPtr, Tcl_Obj * objPtr, + LiteralEntry ** litPtrPtr)); +/* 144 */ +EXTERN void TclHideLiteral _ANSI_ARGS_((Tcl_Interp * interp, + struct CompileEnv * envPtr, int index)); +/* 145 */ +EXTERN struct AuxDataType * TclGetAuxDataType _ANSI_ARGS_((char * typeName)); +/* 146 */ +EXTERN TclHandle TclHandleCreate _ANSI_ARGS_((VOID * ptr)); +/* 147 */ +EXTERN void TclHandleFree _ANSI_ARGS_((TclHandle handle)); +/* 148 */ +EXTERN TclHandle TclHandlePreserve _ANSI_ARGS_((TclHandle handle)); +/* 149 */ +EXTERN void TclHandleRelease _ANSI_ARGS_((TclHandle handle)); +/* 150 */ +EXTERN int TclRegAbout _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_RegExp re)); +/* 151 */ +EXTERN void TclRegExpRangeUniChar _ANSI_ARGS_((Tcl_RegExp re, + int index, int * startPtr, int * endPtr)); +/* 152 */ +EXTERN void TclSetLibraryPath _ANSI_ARGS_((Tcl_Obj * pathPtr)); +/* 153 */ +EXTERN Tcl_Obj * TclGetLibraryPath _ANSI_ARGS_((void)); +/* Slot 154 is reserved */ +/* Slot 155 is reserved */ +/* 156 */ +EXTERN void TclRegError _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * msg, int status)); +/* 157 */ +EXTERN Var * TclVarTraceExists _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * varName)); +/* 158 */ +EXTERN void TclSetStartupScriptFileName _ANSI_ARGS_(( + CONST char * filename)); +/* 159 */ +EXTERN CONST84_RETURN char * TclGetStartupScriptFileName _ANSI_ARGS_((void)); +/* Slot 160 is reserved */ +/* 161 */ +EXTERN int TclChannelTransform _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); +/* 162 */ +EXTERN void TclChannelEventScriptInvoker _ANSI_ARGS_(( + ClientData clientData, int flags)); +/* 163 */ +EXTERN void * TclGetInstructionTable _ANSI_ARGS_((void)); +/* 164 */ +EXTERN void TclExpandCodeArray _ANSI_ARGS_((void * envPtr)); +/* 165 */ +EXTERN void TclpSetInitialEncodings _ANSI_ARGS_((void)); +/* 166 */ +EXTERN int TclListObjSetElement _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * listPtr, + int index, Tcl_Obj * valuePtr)); +/* 167 */ +EXTERN void TclSetStartupScriptPath _ANSI_ARGS_(( + Tcl_Obj * pathPtr)); +/* 168 */ +EXTERN Tcl_Obj * TclGetStartupScriptPath _ANSI_ARGS_((void)); +/* 169 */ +EXTERN int TclpUtfNcmp2 _ANSI_ARGS_((CONST char * s1, + CONST char * s2, unsigned long n)); +/* 170 */ +EXTERN int TclCheckInterpTraces _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * command, + int numChars, Command * cmdPtr, int result, + int traceFlags, int objc, + Tcl_Obj *CONST objv[])); +/* 171 */ +EXTERN int TclCheckExecutionTraces _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * command, + int numChars, Command * cmdPtr, int result, + int traceFlags, int objc, + Tcl_Obj *CONST objv[])); +/* 172 */ +EXTERN int TclInThreadExit _ANSI_ARGS_((void)); +/* 173 */ +EXTERN int TclUniCharMatch _ANSI_ARGS_(( + CONST Tcl_UniChar * string, int strLen, + CONST Tcl_UniChar * pattern, int ptnLen, + int nocase)); +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +/* 182 */ +EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t clock)); +/* 183 */ +EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t clock)); + +typedef struct TclIntStubs { + int magic; + struct TclIntStubHooks *hooks; + + void *reserved0; + int (*tclAccessDeleteProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 1 */ + int (*tclAccessInsertProc) _ANSI_ARGS_((TclAccessProc_ * proc)); /* 2 */ + void (*tclAllocateFreeObjects) _ANSI_ARGS_((void)); /* 3 */ + void *reserved4; +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclCleanupChildren) _ANSI_ARGS_((Tcl_Interp * interp, int numPids, Tcl_Pid * pidPtr, Tcl_Channel errorChan)); /* 5 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved5; +#endif /* MAC_TCL */ + void (*tclCleanupCommand) _ANSI_ARGS_((Command * cmdPtr)); /* 6 */ + int (*tclCopyAndCollapse) _ANSI_ARGS_((int count, CONST char * src, char * dst)); /* 7 */ + int (*tclCopyChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel inChan, Tcl_Channel outChan, int toRead, Tcl_Obj * cmdPtr)); /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclCreatePipeline) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, Tcl_Pid ** pidArrayPtr, TclFile * inPipePtr, TclFile * outPipePtr, TclFile * errFilePtr)); /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved9; +#endif /* MAC_TCL */ + int (*tclCreateProc) _ANSI_ARGS_((Tcl_Interp * interp, Namespace * nsPtr, CONST char * procName, Tcl_Obj * argsPtr, Tcl_Obj * bodyPtr, Proc ** procPtrPtr)); /* 10 */ + void (*tclDeleteCompiledLocalVars) _ANSI_ARGS_((Interp * iPtr, CallFrame * framePtr)); /* 11 */ + void (*tclDeleteVars) _ANSI_ARGS_((Interp * iPtr, Tcl_HashTable * tablePtr)); /* 12 */ + int (*tclDoGlob) _ANSI_ARGS_((Tcl_Interp * interp, char * separators, Tcl_DString * headPtr, char * tail, Tcl_GlobTypeData * types)); /* 13 */ + void (*tclDumpMemoryInfo) _ANSI_ARGS_((FILE * outFile)); /* 14 */ + void *reserved15; + void (*tclExprFloatError) _ANSI_ARGS_((Tcl_Interp * interp, double value)); /* 16 */ + void *reserved17; + void *reserved18; + void *reserved19; + void *reserved20; + void *reserved21; + int (*tclFindElement) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * listStr, int listLength, CONST char ** elementPtr, CONST char ** nextPtr, int * sizePtr, int * bracePtr)); /* 22 */ + Proc * (*tclFindProc) _ANSI_ARGS_((Interp * iPtr, CONST char * procName)); /* 23 */ + int (*tclFormatInt) _ANSI_ARGS_((char * buffer, long n)); /* 24 */ + void (*tclFreePackageInfo) _ANSI_ARGS_((Interp * iPtr)); /* 25 */ + void *reserved26; + int (*tclGetDate) _ANSI_ARGS_((char * p, unsigned long now, long zone, unsigned long * timePtr)); /* 27 */ + Tcl_Channel (*tclpGetDefaultStdChannel) _ANSI_ARGS_((int type)); /* 28 */ + void *reserved29; + void *reserved30; + char * (*tclGetExtension) _ANSI_ARGS_((char * name)); /* 31 */ + int (*tclGetFrame) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, CallFrame ** framePtrPtr)); /* 32 */ + TclCmdProcType (*tclGetInterpProc) _ANSI_ARGS_((void)); /* 33 */ + int (*tclGetIntForIndex) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, int endValue, int * indexPtr)); /* 34 */ + void *reserved35; + int (*tclGetLong) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, long * longPtr)); /* 36 */ + int (*tclGetLoadedPackages) _ANSI_ARGS_((Tcl_Interp * interp, char * targetName)); /* 37 */ + int (*tclGetNamespaceForQualName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * qualName, Namespace * cxtNsPtr, int flags, Namespace ** nsPtrPtr, Namespace ** altNsPtrPtr, Namespace ** actualCxtPtrPtr, CONST char ** simpleNamePtr)); /* 38 */ + TclObjCmdProcType (*tclGetObjInterpProc) _ANSI_ARGS_((void)); /* 39 */ + int (*tclGetOpenMode) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * str, int * seekFlagPtr)); /* 40 */ + Tcl_Command (*tclGetOriginalCommand) _ANSI_ARGS_((Tcl_Command command)); /* 41 */ + char * (*tclpGetUserHome) _ANSI_ARGS_((CONST char * name, Tcl_DString * bufferPtr)); /* 42 */ + int (*tclGlobalInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 43 */ + int (*tclGuessPackageName) _ANSI_ARGS_((CONST char * fileName, Tcl_DString * bufPtr)); /* 44 */ + int (*tclHideUnsafeCommands) _ANSI_ARGS_((Tcl_Interp * interp)); /* 45 */ + int (*tclInExit) _ANSI_ARGS_((void)); /* 46 */ + void *reserved47; + void *reserved48; + Tcl_Obj * (*tclIncrVar2) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * part1Ptr, Tcl_Obj * part2Ptr, long incrAmount, int part1NotParsed)); /* 49 */ + void (*tclInitCompiledLocals) _ANSI_ARGS_((Tcl_Interp * interp, CallFrame * framePtr, Namespace * nsPtr)); /* 50 */ + int (*tclInterpInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 51 */ + int (*tclInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST84 char ** argv, int flags)); /* 52 */ + int (*tclInvokeObjectCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 53 */ + int (*tclInvokeStringCommand) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 54 */ + Proc * (*tclIsProc) _ANSI_ARGS_((Command * cmdPtr)); /* 55 */ + void *reserved56; + void *reserved57; + Var * (*tclLookupVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * part1, CONST char * part2, int flags, CONST char * msg, int createPart1, int createPart2, Var ** arrayPtrPtr)); /* 58 */ + void *reserved59; + int (*tclNeedSpace) _ANSI_ARGS_((CONST char * start, CONST char * end)); /* 60 */ + Tcl_Obj * (*tclNewProcBodyObj) _ANSI_ARGS_((Proc * procPtr)); /* 61 */ + int (*tclObjCommandComplete) _ANSI_ARGS_((Tcl_Obj * cmdPtr)); /* 62 */ + int (*tclObjInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 63 */ + int (*tclObjInvoke) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 64 */ + int (*tclObjInvokeGlobal) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], int flags)); /* 65 */ + int (*tclOpenFileChannelDeleteProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 66 */ + int (*tclOpenFileChannelInsertProc) _ANSI_ARGS_((TclOpenFileChannelProc_ * proc)); /* 67 */ + void *reserved68; + char * (*tclpAlloc) _ANSI_ARGS_((unsigned int size)); /* 69 */ + void *reserved70; + void *reserved71; + void *reserved72; + void *reserved73; + void (*tclpFree) _ANSI_ARGS_((char * ptr)); /* 74 */ + unsigned long (*tclpGetClicks) _ANSI_ARGS_((void)); /* 75 */ + unsigned long (*tclpGetSeconds) _ANSI_ARGS_((void)); /* 76 */ + void (*tclpGetTime) _ANSI_ARGS_((Tcl_Time * time)); /* 77 */ + int (*tclpGetTimeZone) _ANSI_ARGS_((unsigned long time)); /* 78 */ + void *reserved79; + void *reserved80; + char * (*tclpRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 81 */ + void *reserved82; + void *reserved83; + void *reserved84; + void *reserved85; + void *reserved86; + void *reserved87; + char * (*tclPrecTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, CONST char * name1, CONST char * name2, int flags)); /* 88 */ + int (*tclPreventAliasLoop) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Interp * cmdInterp, Tcl_Command cmd)); /* 89 */ + void *reserved90; + void (*tclProcCleanupProc) _ANSI_ARGS_((Proc * procPtr)); /* 91 */ + int (*tclProcCompileProc) _ANSI_ARGS_((Tcl_Interp * interp, Proc * procPtr, Tcl_Obj * bodyPtr, Namespace * nsPtr, CONST char * description, CONST char * procName)); /* 92 */ + void (*tclProcDeleteProc) _ANSI_ARGS_((ClientData clientData)); /* 93 */ + int (*tclProcInterpProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, CONST84 char ** argv)); /* 94 */ + void *reserved95; + int (*tclRenameCommand) _ANSI_ARGS_((Tcl_Interp * interp, char * oldName, char * newName)); /* 96 */ + void (*tclResetShadowedCmdRefs) _ANSI_ARGS_((Tcl_Interp * interp, Command * newCmdPtr)); /* 97 */ + int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ + void *reserved99; + void *reserved100; + char * (*tclSetPreInitScript) _ANSI_ARGS_((char * string)); /* 101 */ + void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp * interp)); /* 102 */ + int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp * interp, char * str, char * proto, int * portPtr)); /* 103 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ +#endif /* UNIX */ +#ifdef __WIN32__ + int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void *reserved104; +#endif /* MAC_TCL */ + void *reserved105; + int (*tclStatDeleteProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 106 */ + int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ * proc)); /* 107 */ + void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace * nsPtr)); /* 108 */ + int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp * iPtr)); /* 109 */ + void *reserved110; + void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 111 */ + int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, Tcl_Obj * objPtr)); /* 112 */ + Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, ClientData clientData, Tcl_NamespaceDeleteProc * deleteProc)); /* 113 */ + void (*tcl_DeleteNamespace) _ANSI_ARGS_((Tcl_Namespace * nsPtr)); /* 114 */ + int (*tcl_Export) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int resetListFirst)); /* 115 */ + Tcl_Command (*tcl_FindCommand) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 116 */ + Tcl_Namespace * (*tcl_FindNamespace) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 117 */ + int (*tcl_GetInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_ResolverInfo * resInfo)); /* 118 */ + int (*tcl_GetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolverInfo * resInfo)); /* 119 */ + Tcl_Var (*tcl_FindNamespaceVar) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, Tcl_Namespace * contextNsPtr, int flags)); /* 120 */ + int (*tcl_ForgetImport) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern)); /* 121 */ + Tcl_Command (*tcl_GetCommandFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 122 */ + void (*tcl_GetCommandFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Command command, Tcl_Obj * objPtr)); /* 123 */ + Tcl_Namespace * (*tcl_GetCurrentNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 124 */ + Tcl_Namespace * (*tcl_GetGlobalNamespace) _ANSI_ARGS_((Tcl_Interp * interp)); /* 125 */ + void (*tcl_GetVariableFullName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Var variable, Tcl_Obj * objPtr)); /* 126 */ + int (*tcl_Import) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Namespace * nsPtr, CONST char * pattern, int allowOverwrite)); /* 127 */ + void (*tcl_PopCallFrame) _ANSI_ARGS_((Tcl_Interp* interp)); /* 128 */ + int (*tcl_PushCallFrame) _ANSI_ARGS_((Tcl_Interp* interp, Tcl_CallFrame * framePtr, Tcl_Namespace * nsPtr, int isProcCallFrame)); /* 129 */ + int (*tcl_RemoveInterpResolvers) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 130 */ + void (*tcl_SetNamespaceResolvers) _ANSI_ARGS_((Tcl_Namespace * namespacePtr, Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc, Tcl_ResolveCompiledVarProc * compiledVarProc)); /* 131 */ + int (*tclpHasSockets) _ANSI_ARGS_((Tcl_Interp * interp)); /* 132 */ + struct tm * (*tclpGetDate) _ANSI_ARGS_((TclpTime_t time, int useGMT)); /* 133 */ + size_t (*tclpStrftime) _ANSI_ARGS_((char * s, size_t maxsize, CONST char * format, CONST struct tm * t, int useGMT)); /* 134 */ + int (*tclpCheckStackSpace) _ANSI_ARGS_((void)); /* 135 */ + void *reserved136; + void *reserved137; + CONST84_RETURN char * (*tclGetEnv) _ANSI_ARGS_((CONST char * name, Tcl_DString * valuePtr)); /* 138 */ + void *reserved139; + int (*tclLooksLikeInt) _ANSI_ARGS_((CONST char * bytes, int length)); /* 140 */ + CONST84_RETURN char * (*tclpGetCwd) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * cwdPtr)); /* 141 */ + int (*tclSetByteCodeFromAny) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CompileHookProc * hookProc, ClientData clientData)); /* 142 */ + int (*tclAddLiteralObj) _ANSI_ARGS_((struct CompileEnv * envPtr, Tcl_Obj * objPtr, LiteralEntry ** litPtrPtr)); /* 143 */ + void (*tclHideLiteral) _ANSI_ARGS_((Tcl_Interp * interp, struct CompileEnv * envPtr, int index)); /* 144 */ + struct AuxDataType * (*tclGetAuxDataType) _ANSI_ARGS_((char * typeName)); /* 145 */ + TclHandle (*tclHandleCreate) _ANSI_ARGS_((VOID * ptr)); /* 146 */ + void (*tclHandleFree) _ANSI_ARGS_((TclHandle handle)); /* 147 */ + TclHandle (*tclHandlePreserve) _ANSI_ARGS_((TclHandle handle)); /* 148 */ + void (*tclHandleRelease) _ANSI_ARGS_((TclHandle handle)); /* 149 */ + int (*tclRegAbout) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_RegExp re)); /* 150 */ + void (*tclRegExpRangeUniChar) _ANSI_ARGS_((Tcl_RegExp re, int index, int * startPtr, int * endPtr)); /* 151 */ + void (*tclSetLibraryPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 152 */ + Tcl_Obj * (*tclGetLibraryPath) _ANSI_ARGS_((void)); /* 153 */ + void *reserved154; + void *reserved155; + void (*tclRegError) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * msg, int status)); /* 156 */ + Var * (*tclVarTraceExists) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * varName)); /* 157 */ + void (*tclSetStartupScriptFileName) _ANSI_ARGS_((CONST char * filename)); /* 158 */ + CONST84_RETURN char * (*tclGetStartupScriptFileName) _ANSI_ARGS_((void)); /* 159 */ + void *reserved160; + int (*tclChannelTransform) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan, Tcl_Obj * cmdObjPtr)); /* 161 */ + void (*tclChannelEventScriptInvoker) _ANSI_ARGS_((ClientData clientData, int flags)); /* 162 */ + void * (*tclGetInstructionTable) _ANSI_ARGS_((void)); /* 163 */ + void (*tclExpandCodeArray) _ANSI_ARGS_((void * envPtr)); /* 164 */ + void (*tclpSetInitialEncodings) _ANSI_ARGS_((void)); /* 165 */ + int (*tclListObjSetElement) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * listPtr, int index, Tcl_Obj * valuePtr)); /* 166 */ + void (*tclSetStartupScriptPath) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 167 */ + Tcl_Obj * (*tclGetStartupScriptPath) _ANSI_ARGS_((void)); /* 168 */ + int (*tclpUtfNcmp2) _ANSI_ARGS_((CONST char * s1, CONST char * s2, unsigned long n)); /* 169 */ + int (*tclCheckInterpTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 170 */ + int (*tclCheckExecutionTraces) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * command, int numChars, Command * cmdPtr, int result, int traceFlags, int objc, Tcl_Obj *CONST objv[])); /* 171 */ + int (*tclInThreadExit) _ANSI_ARGS_((void)); /* 172 */ + int (*tclUniCharMatch) _ANSI_ARGS_((CONST Tcl_UniChar * string, int strLen, CONST Tcl_UniChar * pattern, int ptnLen, int nocase)); /* 173 */ + void *reserved174; + void *reserved175; + void *reserved176; + void *reserved177; + void *reserved178; + void *reserved179; + void *reserved180; + void *reserved181; + struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t clock)); /* 182 */ + struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ +} TclIntStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclIntStubs *tclIntStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +/* Slot 0 is reserved */ +#ifndef TclAccessDeleteProc +#define TclAccessDeleteProc \ + (tclIntStubsPtr->tclAccessDeleteProc) /* 1 */ +#endif +#ifndef TclAccessInsertProc +#define TclAccessInsertProc \ + (tclIntStubsPtr->tclAccessInsertProc) /* 2 */ +#endif +#ifndef TclAllocateFreeObjects +#define TclAllocateFreeObjects \ + (tclIntStubsPtr->tclAllocateFreeObjects) /* 3 */ +#endif +/* Slot 4 is reserved */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclCleanupChildren +#define TclCleanupChildren \ + (tclIntStubsPtr->tclCleanupChildren) /* 5 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclCleanupChildren +#define TclCleanupChildren \ + (tclIntStubsPtr->tclCleanupChildren) /* 5 */ +#endif +#endif /* __WIN32__ */ +#ifndef TclCleanupCommand +#define TclCleanupCommand \ + (tclIntStubsPtr->tclCleanupCommand) /* 6 */ +#endif +#ifndef TclCopyAndCollapse +#define TclCopyAndCollapse \ + (tclIntStubsPtr->tclCopyAndCollapse) /* 7 */ +#endif +#ifndef TclCopyChannel +#define TclCopyChannel \ + (tclIntStubsPtr->tclCopyChannel) /* 8 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclCreatePipeline +#define TclCreatePipeline \ + (tclIntStubsPtr->tclCreatePipeline) /* 9 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclCreatePipeline +#define TclCreatePipeline \ + (tclIntStubsPtr->tclCreatePipeline) /* 9 */ +#endif +#endif /* __WIN32__ */ +#ifndef TclCreateProc +#define TclCreateProc \ + (tclIntStubsPtr->tclCreateProc) /* 10 */ +#endif +#ifndef TclDeleteCompiledLocalVars +#define TclDeleteCompiledLocalVars \ + (tclIntStubsPtr->tclDeleteCompiledLocalVars) /* 11 */ +#endif +#ifndef TclDeleteVars +#define TclDeleteVars \ + (tclIntStubsPtr->tclDeleteVars) /* 12 */ +#endif +#ifndef TclDoGlob +#define TclDoGlob \ + (tclIntStubsPtr->tclDoGlob) /* 13 */ +#endif +#ifndef TclDumpMemoryInfo +#define TclDumpMemoryInfo \ + (tclIntStubsPtr->tclDumpMemoryInfo) /* 14 */ +#endif +/* Slot 15 is reserved */ +#ifndef TclExprFloatError +#define TclExprFloatError \ + (tclIntStubsPtr->tclExprFloatError) /* 16 */ +#endif +/* Slot 17 is reserved */ +/* Slot 18 is reserved */ +/* Slot 19 is reserved */ +/* Slot 20 is reserved */ +/* Slot 21 is reserved */ +#ifndef TclFindElement +#define TclFindElement \ + (tclIntStubsPtr->tclFindElement) /* 22 */ +#endif +#ifndef TclFindProc +#define TclFindProc \ + (tclIntStubsPtr->tclFindProc) /* 23 */ +#endif +#ifndef TclFormatInt +#define TclFormatInt \ + (tclIntStubsPtr->tclFormatInt) /* 24 */ +#endif +#ifndef TclFreePackageInfo +#define TclFreePackageInfo \ + (tclIntStubsPtr->tclFreePackageInfo) /* 25 */ +#endif +/* Slot 26 is reserved */ +#ifndef TclGetDate +#define TclGetDate \ + (tclIntStubsPtr->tclGetDate) /* 27 */ +#endif +#ifndef TclpGetDefaultStdChannel +#define TclpGetDefaultStdChannel \ + (tclIntStubsPtr->tclpGetDefaultStdChannel) /* 28 */ +#endif +/* Slot 29 is reserved */ +/* Slot 30 is reserved */ +#ifndef TclGetExtension +#define TclGetExtension \ + (tclIntStubsPtr->tclGetExtension) /* 31 */ +#endif +#ifndef TclGetFrame +#define TclGetFrame \ + (tclIntStubsPtr->tclGetFrame) /* 32 */ +#endif +#ifndef TclGetInterpProc +#define TclGetInterpProc \ + (tclIntStubsPtr->tclGetInterpProc) /* 33 */ +#endif +#ifndef TclGetIntForIndex +#define TclGetIntForIndex \ + (tclIntStubsPtr->tclGetIntForIndex) /* 34 */ +#endif +/* Slot 35 is reserved */ +#ifndef TclGetLong +#define TclGetLong \ + (tclIntStubsPtr->tclGetLong) /* 36 */ +#endif +#ifndef TclGetLoadedPackages +#define TclGetLoadedPackages \ + (tclIntStubsPtr->tclGetLoadedPackages) /* 37 */ +#endif +#ifndef TclGetNamespaceForQualName +#define TclGetNamespaceForQualName \ + (tclIntStubsPtr->tclGetNamespaceForQualName) /* 38 */ +#endif +#ifndef TclGetObjInterpProc +#define TclGetObjInterpProc \ + (tclIntStubsPtr->tclGetObjInterpProc) /* 39 */ +#endif +#ifndef TclGetOpenMode +#define TclGetOpenMode \ + (tclIntStubsPtr->tclGetOpenMode) /* 40 */ +#endif +#ifndef TclGetOriginalCommand +#define TclGetOriginalCommand \ + (tclIntStubsPtr->tclGetOriginalCommand) /* 41 */ +#endif +#ifndef TclpGetUserHome +#define TclpGetUserHome \ + (tclIntStubsPtr->tclpGetUserHome) /* 42 */ +#endif +#ifndef TclGlobalInvoke +#define TclGlobalInvoke \ + (tclIntStubsPtr->tclGlobalInvoke) /* 43 */ +#endif +#ifndef TclGuessPackageName +#define TclGuessPackageName \ + (tclIntStubsPtr->tclGuessPackageName) /* 44 */ +#endif +#ifndef TclHideUnsafeCommands +#define TclHideUnsafeCommands \ + (tclIntStubsPtr->tclHideUnsafeCommands) /* 45 */ +#endif +#ifndef TclInExit +#define TclInExit \ + (tclIntStubsPtr->tclInExit) /* 46 */ +#endif +/* Slot 47 is reserved */ +/* Slot 48 is reserved */ +#ifndef TclIncrVar2 +#define TclIncrVar2 \ + (tclIntStubsPtr->tclIncrVar2) /* 49 */ +#endif +#ifndef TclInitCompiledLocals +#define TclInitCompiledLocals \ + (tclIntStubsPtr->tclInitCompiledLocals) /* 50 */ +#endif +#ifndef TclInterpInit +#define TclInterpInit \ + (tclIntStubsPtr->tclInterpInit) /* 51 */ +#endif +#ifndef TclInvoke +#define TclInvoke \ + (tclIntStubsPtr->tclInvoke) /* 52 */ +#endif +#ifndef TclInvokeObjectCommand +#define TclInvokeObjectCommand \ + (tclIntStubsPtr->tclInvokeObjectCommand) /* 53 */ +#endif +#ifndef TclInvokeStringCommand +#define TclInvokeStringCommand \ + (tclIntStubsPtr->tclInvokeStringCommand) /* 54 */ +#endif +#ifndef TclIsProc +#define TclIsProc \ + (tclIntStubsPtr->tclIsProc) /* 55 */ +#endif +/* Slot 56 is reserved */ +/* Slot 57 is reserved */ +#ifndef TclLookupVar +#define TclLookupVar \ + (tclIntStubsPtr->tclLookupVar) /* 58 */ +#endif +/* Slot 59 is reserved */ +#ifndef TclNeedSpace +#define TclNeedSpace \ + (tclIntStubsPtr->tclNeedSpace) /* 60 */ +#endif +#ifndef TclNewProcBodyObj +#define TclNewProcBodyObj \ + (tclIntStubsPtr->tclNewProcBodyObj) /* 61 */ +#endif +#ifndef TclObjCommandComplete +#define TclObjCommandComplete \ + (tclIntStubsPtr->tclObjCommandComplete) /* 62 */ +#endif +#ifndef TclObjInterpProc +#define TclObjInterpProc \ + (tclIntStubsPtr->tclObjInterpProc) /* 63 */ +#endif +#ifndef TclObjInvoke +#define TclObjInvoke \ + (tclIntStubsPtr->tclObjInvoke) /* 64 */ +#endif +#ifndef TclObjInvokeGlobal +#define TclObjInvokeGlobal \ + (tclIntStubsPtr->tclObjInvokeGlobal) /* 65 */ +#endif +#ifndef TclOpenFileChannelDeleteProc +#define TclOpenFileChannelDeleteProc \ + (tclIntStubsPtr->tclOpenFileChannelDeleteProc) /* 66 */ +#endif +#ifndef TclOpenFileChannelInsertProc +#define TclOpenFileChannelInsertProc \ + (tclIntStubsPtr->tclOpenFileChannelInsertProc) /* 67 */ +#endif +/* Slot 68 is reserved */ +#ifndef TclpAlloc +#define TclpAlloc \ + (tclIntStubsPtr->tclpAlloc) /* 69 */ +#endif +/* Slot 70 is reserved */ +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +#ifndef TclpFree +#define TclpFree \ + (tclIntStubsPtr->tclpFree) /* 74 */ +#endif +#ifndef TclpGetClicks +#define TclpGetClicks \ + (tclIntStubsPtr->tclpGetClicks) /* 75 */ +#endif +#ifndef TclpGetSeconds +#define TclpGetSeconds \ + (tclIntStubsPtr->tclpGetSeconds) /* 76 */ +#endif +#ifndef TclpGetTime +#define TclpGetTime \ + (tclIntStubsPtr->tclpGetTime) /* 77 */ +#endif +#ifndef TclpGetTimeZone +#define TclpGetTimeZone \ + (tclIntStubsPtr->tclpGetTimeZone) /* 78 */ +#endif +/* Slot 79 is reserved */ +/* Slot 80 is reserved */ +#ifndef TclpRealloc +#define TclpRealloc \ + (tclIntStubsPtr->tclpRealloc) /* 81 */ +#endif +/* Slot 82 is reserved */ +/* Slot 83 is reserved */ +/* Slot 84 is reserved */ +/* Slot 85 is reserved */ +/* Slot 86 is reserved */ +/* Slot 87 is reserved */ +#ifndef TclPrecTraceProc +#define TclPrecTraceProc \ + (tclIntStubsPtr->tclPrecTraceProc) /* 88 */ +#endif +#ifndef TclPreventAliasLoop +#define TclPreventAliasLoop \ + (tclIntStubsPtr->tclPreventAliasLoop) /* 89 */ +#endif +/* Slot 90 is reserved */ +#ifndef TclProcCleanupProc +#define TclProcCleanupProc \ + (tclIntStubsPtr->tclProcCleanupProc) /* 91 */ +#endif +#ifndef TclProcCompileProc +#define TclProcCompileProc \ + (tclIntStubsPtr->tclProcCompileProc) /* 92 */ +#endif +#ifndef TclProcDeleteProc +#define TclProcDeleteProc \ + (tclIntStubsPtr->tclProcDeleteProc) /* 93 */ +#endif +#ifndef TclProcInterpProc +#define TclProcInterpProc \ + (tclIntStubsPtr->tclProcInterpProc) /* 94 */ +#endif +/* Slot 95 is reserved */ +#ifndef TclRenameCommand +#define TclRenameCommand \ + (tclIntStubsPtr->tclRenameCommand) /* 96 */ +#endif +#ifndef TclResetShadowedCmdRefs +#define TclResetShadowedCmdRefs \ + (tclIntStubsPtr->tclResetShadowedCmdRefs) /* 97 */ +#endif +#ifndef TclServiceIdle +#define TclServiceIdle \ + (tclIntStubsPtr->tclServiceIdle) /* 98 */ +#endif +/* Slot 99 is reserved */ +/* Slot 100 is reserved */ +#ifndef TclSetPreInitScript +#define TclSetPreInitScript \ + (tclIntStubsPtr->tclSetPreInitScript) /* 101 */ +#endif +#ifndef TclSetupEnv +#define TclSetupEnv \ + (tclIntStubsPtr->tclSetupEnv) /* 102 */ +#endif +#ifndef TclSockGetPort +#define TclSockGetPort \ + (tclIntStubsPtr->tclSockGetPort) /* 103 */ +#endif +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclSockMinimumBuffers +#define TclSockMinimumBuffers \ + (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclSockMinimumBuffers +#define TclSockMinimumBuffers \ + (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */ +#endif +#endif /* __WIN32__ */ +/* Slot 105 is reserved */ +#ifndef TclStatDeleteProc +#define TclStatDeleteProc \ + (tclIntStubsPtr->tclStatDeleteProc) /* 106 */ +#endif +#ifndef TclStatInsertProc +#define TclStatInsertProc \ + (tclIntStubsPtr->tclStatInsertProc) /* 107 */ +#endif +#ifndef TclTeardownNamespace +#define TclTeardownNamespace \ + (tclIntStubsPtr->tclTeardownNamespace) /* 108 */ +#endif +#ifndef TclUpdateReturnInfo +#define TclUpdateReturnInfo \ + (tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */ +#endif +/* Slot 110 is reserved */ +#ifndef Tcl_AddInterpResolvers +#define Tcl_AddInterpResolvers \ + (tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */ +#endif +#ifndef Tcl_AppendExportList +#define Tcl_AppendExportList \ + (tclIntStubsPtr->tcl_AppendExportList) /* 112 */ +#endif +#ifndef Tcl_CreateNamespace +#define Tcl_CreateNamespace \ + (tclIntStubsPtr->tcl_CreateNamespace) /* 113 */ +#endif +#ifndef Tcl_DeleteNamespace +#define Tcl_DeleteNamespace \ + (tclIntStubsPtr->tcl_DeleteNamespace) /* 114 */ +#endif +#ifndef Tcl_Export +#define Tcl_Export \ + (tclIntStubsPtr->tcl_Export) /* 115 */ +#endif +#ifndef Tcl_FindCommand +#define Tcl_FindCommand \ + (tclIntStubsPtr->tcl_FindCommand) /* 116 */ +#endif +#ifndef Tcl_FindNamespace +#define Tcl_FindNamespace \ + (tclIntStubsPtr->tcl_FindNamespace) /* 117 */ +#endif +#ifndef Tcl_GetInterpResolvers +#define Tcl_GetInterpResolvers \ + (tclIntStubsPtr->tcl_GetInterpResolvers) /* 118 */ +#endif +#ifndef Tcl_GetNamespaceResolvers +#define Tcl_GetNamespaceResolvers \ + (tclIntStubsPtr->tcl_GetNamespaceResolvers) /* 119 */ +#endif +#ifndef Tcl_FindNamespaceVar +#define Tcl_FindNamespaceVar \ + (tclIntStubsPtr->tcl_FindNamespaceVar) /* 120 */ +#endif +#ifndef Tcl_ForgetImport +#define Tcl_ForgetImport \ + (tclIntStubsPtr->tcl_ForgetImport) /* 121 */ +#endif +#ifndef Tcl_GetCommandFromObj +#define Tcl_GetCommandFromObj \ + (tclIntStubsPtr->tcl_GetCommandFromObj) /* 122 */ +#endif +#ifndef Tcl_GetCommandFullName +#define Tcl_GetCommandFullName \ + (tclIntStubsPtr->tcl_GetCommandFullName) /* 123 */ +#endif +#ifndef Tcl_GetCurrentNamespace +#define Tcl_GetCurrentNamespace \ + (tclIntStubsPtr->tcl_GetCurrentNamespace) /* 124 */ +#endif +#ifndef Tcl_GetGlobalNamespace +#define Tcl_GetGlobalNamespace \ + (tclIntStubsPtr->tcl_GetGlobalNamespace) /* 125 */ +#endif +#ifndef Tcl_GetVariableFullName +#define Tcl_GetVariableFullName \ + (tclIntStubsPtr->tcl_GetVariableFullName) /* 126 */ +#endif +#ifndef Tcl_Import +#define Tcl_Import \ + (tclIntStubsPtr->tcl_Import) /* 127 */ +#endif +#ifndef Tcl_PopCallFrame +#define Tcl_PopCallFrame \ + (tclIntStubsPtr->tcl_PopCallFrame) /* 128 */ +#endif +#ifndef Tcl_PushCallFrame +#define Tcl_PushCallFrame \ + (tclIntStubsPtr->tcl_PushCallFrame) /* 129 */ +#endif +#ifndef Tcl_RemoveInterpResolvers +#define Tcl_RemoveInterpResolvers \ + (tclIntStubsPtr->tcl_RemoveInterpResolvers) /* 130 */ +#endif +#ifndef Tcl_SetNamespaceResolvers +#define Tcl_SetNamespaceResolvers \ + (tclIntStubsPtr->tcl_SetNamespaceResolvers) /* 131 */ +#endif +#ifndef TclpHasSockets +#define TclpHasSockets \ + (tclIntStubsPtr->tclpHasSockets) /* 132 */ +#endif +#ifndef TclpGetDate +#define TclpGetDate \ + (tclIntStubsPtr->tclpGetDate) /* 133 */ +#endif +#ifndef TclpStrftime +#define TclpStrftime \ + (tclIntStubsPtr->tclpStrftime) /* 134 */ +#endif +#ifndef TclpCheckStackSpace +#define TclpCheckStackSpace \ + (tclIntStubsPtr->tclpCheckStackSpace) /* 135 */ +#endif +/* Slot 136 is reserved */ +/* Slot 137 is reserved */ +#ifndef TclGetEnv +#define TclGetEnv \ + (tclIntStubsPtr->tclGetEnv) /* 138 */ +#endif +/* Slot 139 is reserved */ +#ifndef TclLooksLikeInt +#define TclLooksLikeInt \ + (tclIntStubsPtr->tclLooksLikeInt) /* 140 */ +#endif +#ifndef TclpGetCwd +#define TclpGetCwd \ + (tclIntStubsPtr->tclpGetCwd) /* 141 */ +#endif +#ifndef TclSetByteCodeFromAny +#define TclSetByteCodeFromAny \ + (tclIntStubsPtr->tclSetByteCodeFromAny) /* 142 */ +#endif +#ifndef TclAddLiteralObj +#define TclAddLiteralObj \ + (tclIntStubsPtr->tclAddLiteralObj) /* 143 */ +#endif +#ifndef TclHideLiteral +#define TclHideLiteral \ + (tclIntStubsPtr->tclHideLiteral) /* 144 */ +#endif +#ifndef TclGetAuxDataType +#define TclGetAuxDataType \ + (tclIntStubsPtr->tclGetAuxDataType) /* 145 */ +#endif +#ifndef TclHandleCreate +#define TclHandleCreate \ + (tclIntStubsPtr->tclHandleCreate) /* 146 */ +#endif +#ifndef TclHandleFree +#define TclHandleFree \ + (tclIntStubsPtr->tclHandleFree) /* 147 */ +#endif +#ifndef TclHandlePreserve +#define TclHandlePreserve \ + (tclIntStubsPtr->tclHandlePreserve) /* 148 */ +#endif +#ifndef TclHandleRelease +#define TclHandleRelease \ + (tclIntStubsPtr->tclHandleRelease) /* 149 */ +#endif +#ifndef TclRegAbout +#define TclRegAbout \ + (tclIntStubsPtr->tclRegAbout) /* 150 */ +#endif +#ifndef TclRegExpRangeUniChar +#define TclRegExpRangeUniChar \ + (tclIntStubsPtr->tclRegExpRangeUniChar) /* 151 */ +#endif +#ifndef TclSetLibraryPath +#define TclSetLibraryPath \ + (tclIntStubsPtr->tclSetLibraryPath) /* 152 */ +#endif +#ifndef TclGetLibraryPath +#define TclGetLibraryPath \ + (tclIntStubsPtr->tclGetLibraryPath) /* 153 */ +#endif +/* Slot 154 is reserved */ +/* Slot 155 is reserved */ +#ifndef TclRegError +#define TclRegError \ + (tclIntStubsPtr->tclRegError) /* 156 */ +#endif +#ifndef TclVarTraceExists +#define TclVarTraceExists \ + (tclIntStubsPtr->tclVarTraceExists) /* 157 */ +#endif +#ifndef TclSetStartupScriptFileName +#define TclSetStartupScriptFileName \ + (tclIntStubsPtr->tclSetStartupScriptFileName) /* 158 */ +#endif +#ifndef TclGetStartupScriptFileName +#define TclGetStartupScriptFileName \ + (tclIntStubsPtr->tclGetStartupScriptFileName) /* 159 */ +#endif +/* Slot 160 is reserved */ +#ifndef TclChannelTransform +#define TclChannelTransform \ + (tclIntStubsPtr->tclChannelTransform) /* 161 */ +#endif +#ifndef TclChannelEventScriptInvoker +#define TclChannelEventScriptInvoker \ + (tclIntStubsPtr->tclChannelEventScriptInvoker) /* 162 */ +#endif +#ifndef TclGetInstructionTable +#define TclGetInstructionTable \ + (tclIntStubsPtr->tclGetInstructionTable) /* 163 */ +#endif +#ifndef TclExpandCodeArray +#define TclExpandCodeArray \ + (tclIntStubsPtr->tclExpandCodeArray) /* 164 */ +#endif +#ifndef TclpSetInitialEncodings +#define TclpSetInitialEncodings \ + (tclIntStubsPtr->tclpSetInitialEncodings) /* 165 */ +#endif +#ifndef TclListObjSetElement +#define TclListObjSetElement \ + (tclIntStubsPtr->tclListObjSetElement) /* 166 */ +#endif +#ifndef TclSetStartupScriptPath +#define TclSetStartupScriptPath \ + (tclIntStubsPtr->tclSetStartupScriptPath) /* 167 */ +#endif +#ifndef TclGetStartupScriptPath +#define TclGetStartupScriptPath \ + (tclIntStubsPtr->tclGetStartupScriptPath) /* 168 */ +#endif +#ifndef TclpUtfNcmp2 +#define TclpUtfNcmp2 \ + (tclIntStubsPtr->tclpUtfNcmp2) /* 169 */ +#endif +#ifndef TclCheckInterpTraces +#define TclCheckInterpTraces \ + (tclIntStubsPtr->tclCheckInterpTraces) /* 170 */ +#endif +#ifndef TclCheckExecutionTraces +#define TclCheckExecutionTraces \ + (tclIntStubsPtr->tclCheckExecutionTraces) /* 171 */ +#endif +#ifndef TclInThreadExit +#define TclInThreadExit \ + (tclIntStubsPtr->tclInThreadExit) /* 172 */ +#endif +#ifndef TclUniCharMatch +#define TclUniCharMatch \ + (tclIntStubsPtr->tclUniCharMatch) /* 173 */ +#endif +/* Slot 174 is reserved */ +/* Slot 175 is reserved */ +/* Slot 176 is reserved */ +/* Slot 177 is reserved */ +/* Slot 178 is reserved */ +/* Slot 179 is reserved */ +/* Slot 180 is reserved */ +/* Slot 181 is reserved */ +#ifndef TclpLocaltime +#define TclpLocaltime \ + (tclIntStubsPtr->tclpLocaltime) /* 182 */ +#endif +#ifndef TclpGmtime +#define TclpGmtime \ + (tclIntStubsPtr->tclpGmtime) /* 183 */ +#endif + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLINTDECLS */ diff --git a/generic/tclIntPlatDecls.h b/generic/tclIntPlatDecls.h index dfc1e41..8ced1c1 100644 --- a/generic/tclIntPlatDecls.h +++ b/generic/tclIntPlatDecls.h @@ -1,593 +1,593 @@ -/* - * tclIntPlatDecls.h -- - * - * This file contains the declarations for all platform dependent - * unsupported functions that are exported by the Tcl library. These - * interfaces are not guaranteed to remain the same between - * versions. Use at your own risk. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * All rights reserved. - * - * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.4 2004/06/05 17:25:40 kennykb Exp $ - */ - -#ifndef _TCLINTPLATDECLS -#define _TCLINTPLATDECLS - -/* - * WARNING: This file is automatically generated by the tools/genStubs.tcl - * script. Any modifications to the function declarations below should be made - * in the generic/tclInt.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -/* 0 */ -EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 1 */ -EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); -/* 2 */ -EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( - TclFile readFile, TclFile writeFile, - TclFile errorFile, int numPids, - Tcl_Pid * pidPtr)); -/* 3 */ -EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, - TclFile * writePipe)); -/* 4 */ -EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - TclFile inputFile, TclFile outputFile, - TclFile errorFile, Tcl_Pid * pidPtr)); -/* Slot 5 is reserved */ -/* 6 */ -EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, - int direction)); -/* 7 */ -EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, - int mode)); -/* 8 */ -EXTERN int TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask, - int timeout)); -/* 9 */ -EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( - CONST char * contents)); -/* 10 */ -EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); -/* 11 */ -EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((TclpTime_t clock)); -/* 12 */ -EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((TclpTime_t clock)); -/* 13 */ -EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); -#endif /* UNIX */ -#ifdef __WIN32__ -/* 0 */ -EXTERN void TclWinConvertError _ANSI_ARGS_((DWORD errCode)); -/* 1 */ -EXTERN void TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode)); -/* 2 */ -EXTERN struct servent * TclWinGetServByName _ANSI_ARGS_((CONST char * nm, - CONST char * proto)); -/* 3 */ -EXTERN int TclWinGetSockOpt _ANSI_ARGS_((SOCKET s, int level, - int optname, char FAR * optval, - int FAR * optlen)); -/* 4 */ -EXTERN HINSTANCE TclWinGetTclInstance _ANSI_ARGS_((void)); -/* Slot 5 is reserved */ -/* 6 */ -EXTERN u_short TclWinNToHS _ANSI_ARGS_((u_short ns)); -/* 7 */ -EXTERN int TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level, - int optname, CONST char FAR * optval, - int optlen)); -/* 8 */ -EXTERN unsigned long TclpGetPid _ANSI_ARGS_((Tcl_Pid pid)); -/* 9 */ -EXTERN int TclWinGetPlatformId _ANSI_ARGS_((void)); -/* Slot 10 is reserved */ -/* 11 */ -EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, - Tcl_Channel chan)); -/* 12 */ -EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); -/* 13 */ -EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( - TclFile readFile, TclFile writeFile, - TclFile errorFile, int numPids, - Tcl_Pid * pidPtr)); -/* 14 */ -EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, - TclFile * writePipe)); -/* 15 */ -EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, - int argc, CONST char ** argv, - TclFile inputFile, TclFile outputFile, - TclFile errorFile, Tcl_Pid * pidPtr)); -/* Slot 16 is reserved */ -/* Slot 17 is reserved */ -/* 18 */ -EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, - int direction)); -/* 19 */ -EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, - int mode)); -/* 20 */ -EXTERN void TclWinAddProcess _ANSI_ARGS_((HANDLE hProcess, - DWORD id)); -/* Slot 21 is reserved */ -/* 22 */ -EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( - CONST char * contents)); -/* 23 */ -EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); -/* 24 */ -EXTERN char * TclWinNoBackslash _ANSI_ARGS_((char * path)); -/* 25 */ -EXTERN TclPlatformType * TclWinGetPlatform _ANSI_ARGS_((void)); -/* 26 */ -EXTERN void TclWinSetInterfaces _ANSI_ARGS_((int wide)); -/* 27 */ -EXTERN void TclWinFlushDirtyChannels _ANSI_ARGS_((void)); -/* 28 */ -EXTERN void TclWinResetInterfaces _ANSI_ARGS_((void)); -/* 29 */ -EXTERN int TclWinCPUID _ANSI_ARGS_((unsigned int index, - unsigned int * regs)); -#endif /* __WIN32__ */ -#ifdef MAC_TCL -/* 0 */ -EXTERN VOID * TclpSysAlloc _ANSI_ARGS_((long size, int isBin)); -/* 1 */ -EXTERN void TclpSysFree _ANSI_ARGS_((VOID * ptr)); -/* 2 */ -EXTERN VOID * TclpSysRealloc _ANSI_ARGS_((VOID * cp, - unsigned int size)); -/* 3 */ -EXTERN void TclpExit _ANSI_ARGS_((int status)); -/* 4 */ -EXTERN int FSpGetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); -/* 5 */ -EXTERN int FSpSetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); -/* 6 */ -EXTERN OSErr FSpFindFolder _ANSI_ARGS_((short vRefNum, - OSType folderType, Boolean createFolder, - FSSpec * spec)); -/* 7 */ -EXTERN void GetGlobalMouseTcl _ANSI_ARGS_((Point * mouse)); -/* 8 */ -EXTERN pascal OSErr FSpGetDirectoryIDTcl _ANSI_ARGS_(( - CONST FSSpec * spec, long * theDirID, - Boolean * isDirectory)); -/* 9 */ -EXTERN pascal short FSpOpenResFileCompatTcl _ANSI_ARGS_(( - CONST FSSpec * spec, SignedByte permission)); -/* 10 */ -EXTERN pascal void FSpCreateResFileCompatTcl _ANSI_ARGS_(( - CONST FSSpec * spec, OSType creator, - OSType fileType, ScriptCode scriptTag)); -/* 11 */ -EXTERN int FSpLocationFromPath _ANSI_ARGS_((int length, - CONST char * path, FSSpecPtr theSpec)); -/* 12 */ -EXTERN OSErr FSpPathFromLocation _ANSI_ARGS_((FSSpecPtr theSpec, - int * length, Handle * fullPath)); -/* 13 */ -EXTERN void TclMacExitHandler _ANSI_ARGS_((void)); -/* 14 */ -EXTERN void TclMacInitExitToShell _ANSI_ARGS_((int usePatch)); -/* 15 */ -EXTERN OSErr TclMacInstallExitToShellPatch _ANSI_ARGS_(( - ExitToShellProcPtr newProc)); -/* 16 */ -EXTERN int TclMacOSErrorToPosixError _ANSI_ARGS_((int error)); -/* 17 */ -EXTERN void TclMacRemoveTimer _ANSI_ARGS_((void * timerToken)); -/* 18 */ -EXTERN void * TclMacStartTimer _ANSI_ARGS_((long ms)); -/* 19 */ -EXTERN int TclMacTimerExpired _ANSI_ARGS_((void * timerToken)); -/* 20 */ -EXTERN int TclMacRegisterResourceFork _ANSI_ARGS_(( - short fileRef, Tcl_Obj * tokenPtr, - int insert)); -/* 21 */ -EXTERN short TclMacUnRegisterResourceFork _ANSI_ARGS_(( - char * tokenPtr, Tcl_Obj * resultPtr)); -/* 22 */ -EXTERN int TclMacCreateEnv _ANSI_ARGS_((void)); -/* 23 */ -EXTERN FILE * TclMacFOpenHack _ANSI_ARGS_((CONST char * path, - CONST char * mode)); -/* 24 */ -EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); -/* 25 */ -EXTERN int TclMacChmod _ANSI_ARGS_((CONST char * path, int mode)); -/* 26 */ -EXTERN int FSpLLocationFromPath _ANSI_ARGS_((int length, - CONST char * path, FSSpecPtr theSpec)); -#endif /* MAC_TCL */ - -typedef struct TclIntPlatStubs { - int magic; - struct TclIntPlatStubHooks *hooks; - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 0 */ - int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 1 */ - Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 2 */ - int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 3 */ - int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 4 */ - void *reserved5; - TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 6 */ - TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 7 */ - int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ - TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ - Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ - struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 11 */ - struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 12 */ - char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ -#endif /* UNIX */ -#ifdef __WIN32__ - void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */ - void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */ - struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char * nm, CONST char * proto)); /* 2 */ - int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char FAR * optval, int FAR * optlen)); /* 3 */ - HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */ - void *reserved5; - u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */ - int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char FAR * optval, int optlen)); /* 7 */ - unsigned long (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */ - int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */ - void *reserved10; - void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 11 */ - int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */ - Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 13 */ - int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 14 */ - int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 15 */ - void *reserved16; - void *reserved17; - TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 18 */ - TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 19 */ - void (*tclWinAddProcess) _ANSI_ARGS_((HANDLE hProcess, DWORD id)); /* 20 */ - void *reserved21; - TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 22 */ - char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 23 */ - char * (*tclWinNoBackslash) _ANSI_ARGS_((char * path)); /* 24 */ - TclPlatformType * (*tclWinGetPlatform) _ANSI_ARGS_((void)); /* 25 */ - void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */ - void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */ - void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */ - int (*tclWinCPUID) _ANSI_ARGS_((unsigned int index, unsigned int * regs)); /* 29 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - VOID * (*tclpSysAlloc) _ANSI_ARGS_((long size, int isBin)); /* 0 */ - void (*tclpSysFree) _ANSI_ARGS_((VOID * ptr)); /* 1 */ - VOID * (*tclpSysRealloc) _ANSI_ARGS_((VOID * cp, unsigned int size)); /* 2 */ - void (*tclpExit) _ANSI_ARGS_((int status)); /* 3 */ - int (*fSpGetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 4 */ - int (*fSpSetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 5 */ - OSErr (*fSpFindFolder) _ANSI_ARGS_((short vRefNum, OSType folderType, Boolean createFolder, FSSpec * spec)); /* 6 */ - void (*getGlobalMouseTcl) _ANSI_ARGS_((Point * mouse)); /* 7 */ - pascal OSErr (*fSpGetDirectoryIDTcl) _ANSI_ARGS_((CONST FSSpec * spec, long * theDirID, Boolean * isDirectory)); /* 8 */ - pascal short (*fSpOpenResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, SignedByte permission)); /* 9 */ - pascal void (*fSpCreateResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, OSType creator, OSType fileType, ScriptCode scriptTag)); /* 10 */ - int (*fSpLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 11 */ - OSErr (*fSpPathFromLocation) _ANSI_ARGS_((FSSpecPtr theSpec, int * length, Handle * fullPath)); /* 12 */ - void (*tclMacExitHandler) _ANSI_ARGS_((void)); /* 13 */ - void (*tclMacInitExitToShell) _ANSI_ARGS_((int usePatch)); /* 14 */ - OSErr (*tclMacInstallExitToShellPatch) _ANSI_ARGS_((ExitToShellProcPtr newProc)); /* 15 */ - int (*tclMacOSErrorToPosixError) _ANSI_ARGS_((int error)); /* 16 */ - void (*tclMacRemoveTimer) _ANSI_ARGS_((void * timerToken)); /* 17 */ - void * (*tclMacStartTimer) _ANSI_ARGS_((long ms)); /* 18 */ - int (*tclMacTimerExpired) _ANSI_ARGS_((void * timerToken)); /* 19 */ - int (*tclMacRegisterResourceFork) _ANSI_ARGS_((short fileRef, Tcl_Obj * tokenPtr, int insert)); /* 20 */ - short (*tclMacUnRegisterResourceFork) _ANSI_ARGS_((char * tokenPtr, Tcl_Obj * resultPtr)); /* 21 */ - int (*tclMacCreateEnv) _ANSI_ARGS_((void)); /* 22 */ - FILE * (*tclMacFOpenHack) _ANSI_ARGS_((CONST char * path, CONST char * mode)); /* 23 */ - char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 24 */ - int (*tclMacChmod) _ANSI_ARGS_((CONST char * path, int mode)); /* 25 */ - int (*fSpLLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 26 */ -#endif /* MAC_TCL */ -} TclIntPlatStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclIntPlatStubs *tclIntPlatStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ -#ifndef TclGetAndDetachPids -#define TclGetAndDetachPids \ - (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 0 */ -#endif -#ifndef TclpCloseFile -#define TclpCloseFile \ - (tclIntPlatStubsPtr->tclpCloseFile) /* 1 */ -#endif -#ifndef TclpCreateCommandChannel -#define TclpCreateCommandChannel \ - (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 2 */ -#endif -#ifndef TclpCreatePipe -#define TclpCreatePipe \ - (tclIntPlatStubsPtr->tclpCreatePipe) /* 3 */ -#endif -#ifndef TclpCreateProcess -#define TclpCreateProcess \ - (tclIntPlatStubsPtr->tclpCreateProcess) /* 4 */ -#endif -/* Slot 5 is reserved */ -#ifndef TclpMakeFile -#define TclpMakeFile \ - (tclIntPlatStubsPtr->tclpMakeFile) /* 6 */ -#endif -#ifndef TclpOpenFile -#define TclpOpenFile \ - (tclIntPlatStubsPtr->tclpOpenFile) /* 7 */ -#endif -#ifndef TclUnixWaitForFile -#define TclUnixWaitForFile \ - (tclIntPlatStubsPtr->tclUnixWaitForFile) /* 8 */ -#endif -#ifndef TclpCreateTempFile -#define TclpCreateTempFile \ - (tclIntPlatStubsPtr->tclpCreateTempFile) /* 9 */ -#endif -#ifndef TclpReaddir -#define TclpReaddir \ - (tclIntPlatStubsPtr->tclpReaddir) /* 10 */ -#endif -#ifndef TclpLocaltime_unix -#define TclpLocaltime_unix \ - (tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */ -#endif -#ifndef TclpGmtime_unix -#define TclpGmtime_unix \ - (tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */ -#endif -#ifndef TclpInetNtoa -#define TclpInetNtoa \ - (tclIntPlatStubsPtr->tclpInetNtoa) /* 13 */ -#endif -#endif /* UNIX */ -#ifdef __WIN32__ -#ifndef TclWinConvertError -#define TclWinConvertError \ - (tclIntPlatStubsPtr->tclWinConvertError) /* 0 */ -#endif -#ifndef TclWinConvertWSAError -#define TclWinConvertWSAError \ - (tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */ -#endif -#ifndef TclWinGetServByName -#define TclWinGetServByName \ - (tclIntPlatStubsPtr->tclWinGetServByName) /* 2 */ -#endif -#ifndef TclWinGetSockOpt -#define TclWinGetSockOpt \ - (tclIntPlatStubsPtr->tclWinGetSockOpt) /* 3 */ -#endif -#ifndef TclWinGetTclInstance -#define TclWinGetTclInstance \ - (tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */ -#endif -/* Slot 5 is reserved */ -#ifndef TclWinNToHS -#define TclWinNToHS \ - (tclIntPlatStubsPtr->tclWinNToHS) /* 6 */ -#endif -#ifndef TclWinSetSockOpt -#define TclWinSetSockOpt \ - (tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */ -#endif -#ifndef TclpGetPid -#define TclpGetPid \ - (tclIntPlatStubsPtr->tclpGetPid) /* 8 */ -#endif -#ifndef TclWinGetPlatformId -#define TclWinGetPlatformId \ - (tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */ -#endif -/* Slot 10 is reserved */ -#ifndef TclGetAndDetachPids -#define TclGetAndDetachPids \ - (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 11 */ -#endif -#ifndef TclpCloseFile -#define TclpCloseFile \ - (tclIntPlatStubsPtr->tclpCloseFile) /* 12 */ -#endif -#ifndef TclpCreateCommandChannel -#define TclpCreateCommandChannel \ - (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 13 */ -#endif -#ifndef TclpCreatePipe -#define TclpCreatePipe \ - (tclIntPlatStubsPtr->tclpCreatePipe) /* 14 */ -#endif -#ifndef TclpCreateProcess -#define TclpCreateProcess \ - (tclIntPlatStubsPtr->tclpCreateProcess) /* 15 */ -#endif -/* Slot 16 is reserved */ -/* Slot 17 is reserved */ -#ifndef TclpMakeFile -#define TclpMakeFile \ - (tclIntPlatStubsPtr->tclpMakeFile) /* 18 */ -#endif -#ifndef TclpOpenFile -#define TclpOpenFile \ - (tclIntPlatStubsPtr->tclpOpenFile) /* 19 */ -#endif -#ifndef TclWinAddProcess -#define TclWinAddProcess \ - (tclIntPlatStubsPtr->tclWinAddProcess) /* 20 */ -#endif -/* Slot 21 is reserved */ -#ifndef TclpCreateTempFile -#define TclpCreateTempFile \ - (tclIntPlatStubsPtr->tclpCreateTempFile) /* 22 */ -#endif -#ifndef TclpGetTZName -#define TclpGetTZName \ - (tclIntPlatStubsPtr->tclpGetTZName) /* 23 */ -#endif -#ifndef TclWinNoBackslash -#define TclWinNoBackslash \ - (tclIntPlatStubsPtr->tclWinNoBackslash) /* 24 */ -#endif -#ifndef TclWinGetPlatform -#define TclWinGetPlatform \ - (tclIntPlatStubsPtr->tclWinGetPlatform) /* 25 */ -#endif -#ifndef TclWinSetInterfaces -#define TclWinSetInterfaces \ - (tclIntPlatStubsPtr->tclWinSetInterfaces) /* 26 */ -#endif -#ifndef TclWinFlushDirtyChannels -#define TclWinFlushDirtyChannels \ - (tclIntPlatStubsPtr->tclWinFlushDirtyChannels) /* 27 */ -#endif -#ifndef TclWinResetInterfaces -#define TclWinResetInterfaces \ - (tclIntPlatStubsPtr->tclWinResetInterfaces) /* 28 */ -#endif -#ifndef TclWinCPUID -#define TclWinCPUID \ - (tclIntPlatStubsPtr->tclWinCPUID) /* 29 */ -#endif -#endif /* __WIN32__ */ -#ifdef MAC_TCL -#ifndef TclpSysAlloc -#define TclpSysAlloc \ - (tclIntPlatStubsPtr->tclpSysAlloc) /* 0 */ -#endif -#ifndef TclpSysFree -#define TclpSysFree \ - (tclIntPlatStubsPtr->tclpSysFree) /* 1 */ -#endif -#ifndef TclpSysRealloc -#define TclpSysRealloc \ - (tclIntPlatStubsPtr->tclpSysRealloc) /* 2 */ -#endif -#ifndef TclpExit -#define TclpExit \ - (tclIntPlatStubsPtr->tclpExit) /* 3 */ -#endif -#ifndef FSpGetDefaultDir -#define FSpGetDefaultDir \ - (tclIntPlatStubsPtr->fSpGetDefaultDir) /* 4 */ -#endif -#ifndef FSpSetDefaultDir -#define FSpSetDefaultDir \ - (tclIntPlatStubsPtr->fSpSetDefaultDir) /* 5 */ -#endif -#ifndef FSpFindFolder -#define FSpFindFolder \ - (tclIntPlatStubsPtr->fSpFindFolder) /* 6 */ -#endif -#ifndef GetGlobalMouseTcl -#define GetGlobalMouseTcl \ - (tclIntPlatStubsPtr->getGlobalMouseTcl) /* 7 */ -#endif -#ifndef FSpGetDirectoryIDTcl -#define FSpGetDirectoryIDTcl \ - (tclIntPlatStubsPtr->fSpGetDirectoryIDTcl) /* 8 */ -#endif -#ifndef FSpOpenResFileCompatTcl -#define FSpOpenResFileCompatTcl \ - (tclIntPlatStubsPtr->fSpOpenResFileCompatTcl) /* 9 */ -#endif -#ifndef FSpCreateResFileCompatTcl -#define FSpCreateResFileCompatTcl \ - (tclIntPlatStubsPtr->fSpCreateResFileCompatTcl) /* 10 */ -#endif -#ifndef FSpLocationFromPath -#define FSpLocationFromPath \ - (tclIntPlatStubsPtr->fSpLocationFromPath) /* 11 */ -#endif -#ifndef FSpPathFromLocation -#define FSpPathFromLocation \ - (tclIntPlatStubsPtr->fSpPathFromLocation) /* 12 */ -#endif -#ifndef TclMacExitHandler -#define TclMacExitHandler \ - (tclIntPlatStubsPtr->tclMacExitHandler) /* 13 */ -#endif -#ifndef TclMacInitExitToShell -#define TclMacInitExitToShell \ - (tclIntPlatStubsPtr->tclMacInitExitToShell) /* 14 */ -#endif -#ifndef TclMacInstallExitToShellPatch -#define TclMacInstallExitToShellPatch \ - (tclIntPlatStubsPtr->tclMacInstallExitToShellPatch) /* 15 */ -#endif -#ifndef TclMacOSErrorToPosixError -#define TclMacOSErrorToPosixError \ - (tclIntPlatStubsPtr->tclMacOSErrorToPosixError) /* 16 */ -#endif -#ifndef TclMacRemoveTimer -#define TclMacRemoveTimer \ - (tclIntPlatStubsPtr->tclMacRemoveTimer) /* 17 */ -#endif -#ifndef TclMacStartTimer -#define TclMacStartTimer \ - (tclIntPlatStubsPtr->tclMacStartTimer) /* 18 */ -#endif -#ifndef TclMacTimerExpired -#define TclMacTimerExpired \ - (tclIntPlatStubsPtr->tclMacTimerExpired) /* 19 */ -#endif -#ifndef TclMacRegisterResourceFork -#define TclMacRegisterResourceFork \ - (tclIntPlatStubsPtr->tclMacRegisterResourceFork) /* 20 */ -#endif -#ifndef TclMacUnRegisterResourceFork -#define TclMacUnRegisterResourceFork \ - (tclIntPlatStubsPtr->tclMacUnRegisterResourceFork) /* 21 */ -#endif -#ifndef TclMacCreateEnv -#define TclMacCreateEnv \ - (tclIntPlatStubsPtr->tclMacCreateEnv) /* 22 */ -#endif -#ifndef TclMacFOpenHack -#define TclMacFOpenHack \ - (tclIntPlatStubsPtr->tclMacFOpenHack) /* 23 */ -#endif -#ifndef TclpGetTZName -#define TclpGetTZName \ - (tclIntPlatStubsPtr->tclpGetTZName) /* 24 */ -#endif -#ifndef TclMacChmod -#define TclMacChmod \ - (tclIntPlatStubsPtr->tclMacChmod) /* 25 */ -#endif -#ifndef FSpLLocationFromPath -#define FSpLLocationFromPath \ - (tclIntPlatStubsPtr->fSpLLocationFromPath) /* 26 */ -#endif -#endif /* MAC_TCL */ - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLINTPLATDECLS */ +/* + * tclIntPlatDecls.h -- + * + * This file contains the declarations for all platform dependent + * unsupported functions that are exported by the Tcl library. These + * interfaces are not guaranteed to remain the same between + * versions. Use at your own risk. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * All rights reserved. + * + * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.5 2004/06/10 17:17:44 andreas_kupries Exp $ + */ + +#ifndef _TCLINTPLATDECLS +#define _TCLINTPLATDECLS + +/* + * WARNING: This file is automatically generated by the tools/genStubs.tcl + * script. Any modifications to the function declarations below should be made + * in the generic/tclInt.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +/* 0 */ +EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 1 */ +EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); +/* 2 */ +EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( + TclFile readFile, TclFile writeFile, + TclFile errorFile, int numPids, + Tcl_Pid * pidPtr)); +/* 3 */ +EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, + TclFile * writePipe)); +/* 4 */ +EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + TclFile inputFile, TclFile outputFile, + TclFile errorFile, Tcl_Pid * pidPtr)); +/* Slot 5 is reserved */ +/* 6 */ +EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, + int direction)); +/* 7 */ +EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, + int mode)); +/* 8 */ +EXTERN int TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask, + int timeout)); +/* 9 */ +EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( + CONST char * contents)); +/* 10 */ +EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); +/* 11 */ +EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((TclpTime_t clock)); +/* 12 */ +EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((TclpTime_t clock)); +/* 13 */ +EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); +#endif /* UNIX */ +#ifdef __WIN32__ +/* 0 */ +EXTERN void TclWinConvertError _ANSI_ARGS_((DWORD errCode)); +/* 1 */ +EXTERN void TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode)); +/* 2 */ +EXTERN struct servent * TclWinGetServByName _ANSI_ARGS_((CONST char * nm, + CONST char * proto)); +/* 3 */ +EXTERN int TclWinGetSockOpt _ANSI_ARGS_((SOCKET s, int level, + int optname, char FAR * optval, + int FAR * optlen)); +/* 4 */ +EXTERN HINSTANCE TclWinGetTclInstance _ANSI_ARGS_((void)); +/* Slot 5 is reserved */ +/* 6 */ +EXTERN u_short TclWinNToHS _ANSI_ARGS_((u_short ns)); +/* 7 */ +EXTERN int TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level, + int optname, CONST char FAR * optval, + int optlen)); +/* 8 */ +EXTERN unsigned long TclpGetPid _ANSI_ARGS_((Tcl_Pid pid)); +/* 9 */ +EXTERN int TclWinGetPlatformId _ANSI_ARGS_((void)); +/* Slot 10 is reserved */ +/* 11 */ +EXTERN void TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Channel chan)); +/* 12 */ +EXTERN int TclpCloseFile _ANSI_ARGS_((TclFile file)); +/* 13 */ +EXTERN Tcl_Channel TclpCreateCommandChannel _ANSI_ARGS_(( + TclFile readFile, TclFile writeFile, + TclFile errorFile, int numPids, + Tcl_Pid * pidPtr)); +/* 14 */ +EXTERN int TclpCreatePipe _ANSI_ARGS_((TclFile * readPipe, + TclFile * writePipe)); +/* 15 */ +EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp * interp, + int argc, CONST char ** argv, + TclFile inputFile, TclFile outputFile, + TclFile errorFile, Tcl_Pid * pidPtr)); +/* Slot 16 is reserved */ +/* Slot 17 is reserved */ +/* 18 */ +EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel, + int direction)); +/* 19 */ +EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char * fname, + int mode)); +/* 20 */ +EXTERN void TclWinAddProcess _ANSI_ARGS_((HANDLE hProcess, + DWORD id)); +/* Slot 21 is reserved */ +/* 22 */ +EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( + CONST char * contents)); +/* 23 */ +EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); +/* 24 */ +EXTERN char * TclWinNoBackslash _ANSI_ARGS_((char * path)); +/* 25 */ +EXTERN TclPlatformType * TclWinGetPlatform _ANSI_ARGS_((void)); +/* 26 */ +EXTERN void TclWinSetInterfaces _ANSI_ARGS_((int wide)); +/* 27 */ +EXTERN void TclWinFlushDirtyChannels _ANSI_ARGS_((void)); +/* 28 */ +EXTERN void TclWinResetInterfaces _ANSI_ARGS_((void)); +/* 29 */ +EXTERN int TclWinCPUID _ANSI_ARGS_((unsigned int index, + unsigned int * regs)); +#endif /* __WIN32__ */ +#ifdef MAC_TCL +/* 0 */ +EXTERN VOID * TclpSysAlloc _ANSI_ARGS_((long size, int isBin)); +/* 1 */ +EXTERN void TclpSysFree _ANSI_ARGS_((VOID * ptr)); +/* 2 */ +EXTERN VOID * TclpSysRealloc _ANSI_ARGS_((VOID * cp, + unsigned int size)); +/* 3 */ +EXTERN void TclpExit _ANSI_ARGS_((int status)); +/* 4 */ +EXTERN int FSpGetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); +/* 5 */ +EXTERN int FSpSetDefaultDir _ANSI_ARGS_((FSSpecPtr theSpec)); +/* 6 */ +EXTERN OSErr FSpFindFolder _ANSI_ARGS_((short vRefNum, + OSType folderType, Boolean createFolder, + FSSpec * spec)); +/* 7 */ +EXTERN void GetGlobalMouseTcl _ANSI_ARGS_((Point * mouse)); +/* 8 */ +EXTERN pascal OSErr FSpGetDirectoryIDTcl _ANSI_ARGS_(( + CONST FSSpec * spec, long * theDirID, + Boolean * isDirectory)); +/* 9 */ +EXTERN pascal short FSpOpenResFileCompatTcl _ANSI_ARGS_(( + CONST FSSpec * spec, SignedByte permission)); +/* 10 */ +EXTERN pascal void FSpCreateResFileCompatTcl _ANSI_ARGS_(( + CONST FSSpec * spec, OSType creator, + OSType fileType, ScriptCode scriptTag)); +/* 11 */ +EXTERN int FSpLocationFromPath _ANSI_ARGS_((int length, + CONST char * path, FSSpecPtr theSpec)); +/* 12 */ +EXTERN OSErr FSpPathFromLocation _ANSI_ARGS_((FSSpecPtr theSpec, + int * length, Handle * fullPath)); +/* 13 */ +EXTERN void TclMacExitHandler _ANSI_ARGS_((void)); +/* 14 */ +EXTERN void TclMacInitExitToShell _ANSI_ARGS_((int usePatch)); +/* 15 */ +EXTERN OSErr TclMacInstallExitToShellPatch _ANSI_ARGS_(( + ExitToShellProcPtr newProc)); +/* 16 */ +EXTERN int TclMacOSErrorToPosixError _ANSI_ARGS_((int error)); +/* 17 */ +EXTERN void TclMacRemoveTimer _ANSI_ARGS_((void * timerToken)); +/* 18 */ +EXTERN void * TclMacStartTimer _ANSI_ARGS_((long ms)); +/* 19 */ +EXTERN int TclMacTimerExpired _ANSI_ARGS_((void * timerToken)); +/* 20 */ +EXTERN int TclMacRegisterResourceFork _ANSI_ARGS_(( + short fileRef, Tcl_Obj * tokenPtr, + int insert)); +/* 21 */ +EXTERN short TclMacUnRegisterResourceFork _ANSI_ARGS_(( + char * tokenPtr, Tcl_Obj * resultPtr)); +/* 22 */ +EXTERN int TclMacCreateEnv _ANSI_ARGS_((void)); +/* 23 */ +EXTERN FILE * TclMacFOpenHack _ANSI_ARGS_((CONST char * path, + CONST char * mode)); +/* 24 */ +EXTERN char * TclpGetTZName _ANSI_ARGS_((int isdst)); +/* 25 */ +EXTERN int TclMacChmod _ANSI_ARGS_((CONST char * path, int mode)); +/* 26 */ +EXTERN int FSpLLocationFromPath _ANSI_ARGS_((int length, + CONST char * path, FSSpecPtr theSpec)); +#endif /* MAC_TCL */ + +typedef struct TclIntPlatStubs { + int magic; + struct TclIntPlatStubHooks *hooks; + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 0 */ + int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 1 */ + Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 2 */ + int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 3 */ + int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 4 */ + void *reserved5; + TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 6 */ + TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 7 */ + int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ + TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ + Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ + struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 11 */ + struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 12 */ + char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ +#endif /* UNIX */ +#ifdef __WIN32__ + void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */ + void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */ + struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char * nm, CONST char * proto)); /* 2 */ + int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char FAR * optval, int FAR * optlen)); /* 3 */ + HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */ + void *reserved5; + u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */ + int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char FAR * optval, int optlen)); /* 7 */ + unsigned long (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */ + int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */ + void *reserved10; + void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Channel chan)); /* 11 */ + int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */ + Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid * pidPtr)); /* 13 */ + int (*tclpCreatePipe) _ANSI_ARGS_((TclFile * readPipe, TclFile * writePipe)); /* 14 */ + int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp * interp, int argc, CONST char ** argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid * pidPtr)); /* 15 */ + void *reserved16; + void *reserved17; + TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 18 */ + TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char * fname, int mode)); /* 19 */ + void (*tclWinAddProcess) _ANSI_ARGS_((HANDLE hProcess, DWORD id)); /* 20 */ + void *reserved21; + TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 22 */ + char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 23 */ + char * (*tclWinNoBackslash) _ANSI_ARGS_((char * path)); /* 24 */ + TclPlatformType * (*tclWinGetPlatform) _ANSI_ARGS_((void)); /* 25 */ + void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */ + void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */ + void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */ + int (*tclWinCPUID) _ANSI_ARGS_((unsigned int index, unsigned int * regs)); /* 29 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + VOID * (*tclpSysAlloc) _ANSI_ARGS_((long size, int isBin)); /* 0 */ + void (*tclpSysFree) _ANSI_ARGS_((VOID * ptr)); /* 1 */ + VOID * (*tclpSysRealloc) _ANSI_ARGS_((VOID * cp, unsigned int size)); /* 2 */ + void (*tclpExit) _ANSI_ARGS_((int status)); /* 3 */ + int (*fSpGetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 4 */ + int (*fSpSetDefaultDir) _ANSI_ARGS_((FSSpecPtr theSpec)); /* 5 */ + OSErr (*fSpFindFolder) _ANSI_ARGS_((short vRefNum, OSType folderType, Boolean createFolder, FSSpec * spec)); /* 6 */ + void (*getGlobalMouseTcl) _ANSI_ARGS_((Point * mouse)); /* 7 */ + pascal OSErr (*fSpGetDirectoryIDTcl) _ANSI_ARGS_((CONST FSSpec * spec, long * theDirID, Boolean * isDirectory)); /* 8 */ + pascal short (*fSpOpenResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, SignedByte permission)); /* 9 */ + pascal void (*fSpCreateResFileCompatTcl) _ANSI_ARGS_((CONST FSSpec * spec, OSType creator, OSType fileType, ScriptCode scriptTag)); /* 10 */ + int (*fSpLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 11 */ + OSErr (*fSpPathFromLocation) _ANSI_ARGS_((FSSpecPtr theSpec, int * length, Handle * fullPath)); /* 12 */ + void (*tclMacExitHandler) _ANSI_ARGS_((void)); /* 13 */ + void (*tclMacInitExitToShell) _ANSI_ARGS_((int usePatch)); /* 14 */ + OSErr (*tclMacInstallExitToShellPatch) _ANSI_ARGS_((ExitToShellProcPtr newProc)); /* 15 */ + int (*tclMacOSErrorToPosixError) _ANSI_ARGS_((int error)); /* 16 */ + void (*tclMacRemoveTimer) _ANSI_ARGS_((void * timerToken)); /* 17 */ + void * (*tclMacStartTimer) _ANSI_ARGS_((long ms)); /* 18 */ + int (*tclMacTimerExpired) _ANSI_ARGS_((void * timerToken)); /* 19 */ + int (*tclMacRegisterResourceFork) _ANSI_ARGS_((short fileRef, Tcl_Obj * tokenPtr, int insert)); /* 20 */ + short (*tclMacUnRegisterResourceFork) _ANSI_ARGS_((char * tokenPtr, Tcl_Obj * resultPtr)); /* 21 */ + int (*tclMacCreateEnv) _ANSI_ARGS_((void)); /* 22 */ + FILE * (*tclMacFOpenHack) _ANSI_ARGS_((CONST char * path, CONST char * mode)); /* 23 */ + char * (*tclpGetTZName) _ANSI_ARGS_((int isdst)); /* 24 */ + int (*tclMacChmod) _ANSI_ARGS_((CONST char * path, int mode)); /* 25 */ + int (*fSpLLocationFromPath) _ANSI_ARGS_((int length, CONST char * path, FSSpecPtr theSpec)); /* 26 */ +#endif /* MAC_TCL */ +} TclIntPlatStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclIntPlatStubs *tclIntPlatStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ +#ifndef TclGetAndDetachPids +#define TclGetAndDetachPids \ + (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 0 */ +#endif +#ifndef TclpCloseFile +#define TclpCloseFile \ + (tclIntPlatStubsPtr->tclpCloseFile) /* 1 */ +#endif +#ifndef TclpCreateCommandChannel +#define TclpCreateCommandChannel \ + (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 2 */ +#endif +#ifndef TclpCreatePipe +#define TclpCreatePipe \ + (tclIntPlatStubsPtr->tclpCreatePipe) /* 3 */ +#endif +#ifndef TclpCreateProcess +#define TclpCreateProcess \ + (tclIntPlatStubsPtr->tclpCreateProcess) /* 4 */ +#endif +/* Slot 5 is reserved */ +#ifndef TclpMakeFile +#define TclpMakeFile \ + (tclIntPlatStubsPtr->tclpMakeFile) /* 6 */ +#endif +#ifndef TclpOpenFile +#define TclpOpenFile \ + (tclIntPlatStubsPtr->tclpOpenFile) /* 7 */ +#endif +#ifndef TclUnixWaitForFile +#define TclUnixWaitForFile \ + (tclIntPlatStubsPtr->tclUnixWaitForFile) /* 8 */ +#endif +#ifndef TclpCreateTempFile +#define TclpCreateTempFile \ + (tclIntPlatStubsPtr->tclpCreateTempFile) /* 9 */ +#endif +#ifndef TclpReaddir +#define TclpReaddir \ + (tclIntPlatStubsPtr->tclpReaddir) /* 10 */ +#endif +#ifndef TclpLocaltime_unix +#define TclpLocaltime_unix \ + (tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */ +#endif +#ifndef TclpGmtime_unix +#define TclpGmtime_unix \ + (tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */ +#endif +#ifndef TclpInetNtoa +#define TclpInetNtoa \ + (tclIntPlatStubsPtr->tclpInetNtoa) /* 13 */ +#endif +#endif /* UNIX */ +#ifdef __WIN32__ +#ifndef TclWinConvertError +#define TclWinConvertError \ + (tclIntPlatStubsPtr->tclWinConvertError) /* 0 */ +#endif +#ifndef TclWinConvertWSAError +#define TclWinConvertWSAError \ + (tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */ +#endif +#ifndef TclWinGetServByName +#define TclWinGetServByName \ + (tclIntPlatStubsPtr->tclWinGetServByName) /* 2 */ +#endif +#ifndef TclWinGetSockOpt +#define TclWinGetSockOpt \ + (tclIntPlatStubsPtr->tclWinGetSockOpt) /* 3 */ +#endif +#ifndef TclWinGetTclInstance +#define TclWinGetTclInstance \ + (tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */ +#endif +/* Slot 5 is reserved */ +#ifndef TclWinNToHS +#define TclWinNToHS \ + (tclIntPlatStubsPtr->tclWinNToHS) /* 6 */ +#endif +#ifndef TclWinSetSockOpt +#define TclWinSetSockOpt \ + (tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */ +#endif +#ifndef TclpGetPid +#define TclpGetPid \ + (tclIntPlatStubsPtr->tclpGetPid) /* 8 */ +#endif +#ifndef TclWinGetPlatformId +#define TclWinGetPlatformId \ + (tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */ +#endif +/* Slot 10 is reserved */ +#ifndef TclGetAndDetachPids +#define TclGetAndDetachPids \ + (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 11 */ +#endif +#ifndef TclpCloseFile +#define TclpCloseFile \ + (tclIntPlatStubsPtr->tclpCloseFile) /* 12 */ +#endif +#ifndef TclpCreateCommandChannel +#define TclpCreateCommandChannel \ + (tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 13 */ +#endif +#ifndef TclpCreatePipe +#define TclpCreatePipe \ + (tclIntPlatStubsPtr->tclpCreatePipe) /* 14 */ +#endif +#ifndef TclpCreateProcess +#define TclpCreateProcess \ + (tclIntPlatStubsPtr->tclpCreateProcess) /* 15 */ +#endif +/* Slot 16 is reserved */ +/* Slot 17 is reserved */ +#ifndef TclpMakeFile +#define TclpMakeFile \ + (tclIntPlatStubsPtr->tclpMakeFile) /* 18 */ +#endif +#ifndef TclpOpenFile +#define TclpOpenFile \ + (tclIntPlatStubsPtr->tclpOpenFile) /* 19 */ +#endif +#ifndef TclWinAddProcess +#define TclWinAddProcess \ + (tclIntPlatStubsPtr->tclWinAddProcess) /* 20 */ +#endif +/* Slot 21 is reserved */ +#ifndef TclpCreateTempFile +#define TclpCreateTempFile \ + (tclIntPlatStubsPtr->tclpCreateTempFile) /* 22 */ +#endif +#ifndef TclpGetTZName +#define TclpGetTZName \ + (tclIntPlatStubsPtr->tclpGetTZName) /* 23 */ +#endif +#ifndef TclWinNoBackslash +#define TclWinNoBackslash \ + (tclIntPlatStubsPtr->tclWinNoBackslash) /* 24 */ +#endif +#ifndef TclWinGetPlatform +#define TclWinGetPlatform \ + (tclIntPlatStubsPtr->tclWinGetPlatform) /* 25 */ +#endif +#ifndef TclWinSetInterfaces +#define TclWinSetInterfaces \ + (tclIntPlatStubsPtr->tclWinSetInterfaces) /* 26 */ +#endif +#ifndef TclWinFlushDirtyChannels +#define TclWinFlushDirtyChannels \ + (tclIntPlatStubsPtr->tclWinFlushDirtyChannels) /* 27 */ +#endif +#ifndef TclWinResetInterfaces +#define TclWinResetInterfaces \ + (tclIntPlatStubsPtr->tclWinResetInterfaces) /* 28 */ +#endif +#ifndef TclWinCPUID +#define TclWinCPUID \ + (tclIntPlatStubsPtr->tclWinCPUID) /* 29 */ +#endif +#endif /* __WIN32__ */ +#ifdef MAC_TCL +#ifndef TclpSysAlloc +#define TclpSysAlloc \ + (tclIntPlatStubsPtr->tclpSysAlloc) /* 0 */ +#endif +#ifndef TclpSysFree +#define TclpSysFree \ + (tclIntPlatStubsPtr->tclpSysFree) /* 1 */ +#endif +#ifndef TclpSysRealloc +#define TclpSysRealloc \ + (tclIntPlatStubsPtr->tclpSysRealloc) /* 2 */ +#endif +#ifndef TclpExit +#define TclpExit \ + (tclIntPlatStubsPtr->tclpExit) /* 3 */ +#endif +#ifndef FSpGetDefaultDir +#define FSpGetDefaultDir \ + (tclIntPlatStubsPtr->fSpGetDefaultDir) /* 4 */ +#endif +#ifndef FSpSetDefaultDir +#define FSpSetDefaultDir \ + (tclIntPlatStubsPtr->fSpSetDefaultDir) /* 5 */ +#endif +#ifndef FSpFindFolder +#define FSpFindFolder \ + (tclIntPlatStubsPtr->fSpFindFolder) /* 6 */ +#endif +#ifndef GetGlobalMouseTcl +#define GetGlobalMouseTcl \ + (tclIntPlatStubsPtr->getGlobalMouseTcl) /* 7 */ +#endif +#ifndef FSpGetDirectoryIDTcl +#define FSpGetDirectoryIDTcl \ + (tclIntPlatStubsPtr->fSpGetDirectoryIDTcl) /* 8 */ +#endif +#ifndef FSpOpenResFileCompatTcl +#define FSpOpenResFileCompatTcl \ + (tclIntPlatStubsPtr->fSpOpenResFileCompatTcl) /* 9 */ +#endif +#ifndef FSpCreateResFileCompatTcl +#define FSpCreateResFileCompatTcl \ + (tclIntPlatStubsPtr->fSpCreateResFileCompatTcl) /* 10 */ +#endif +#ifndef FSpLocationFromPath +#define FSpLocationFromPath \ + (tclIntPlatStubsPtr->fSpLocationFromPath) /* 11 */ +#endif +#ifndef FSpPathFromLocation +#define FSpPathFromLocation \ + (tclIntPlatStubsPtr->fSpPathFromLocation) /* 12 */ +#endif +#ifndef TclMacExitHandler +#define TclMacExitHandler \ + (tclIntPlatStubsPtr->tclMacExitHandler) /* 13 */ +#endif +#ifndef TclMacInitExitToShell +#define TclMacInitExitToShell \ + (tclIntPlatStubsPtr->tclMacInitExitToShell) /* 14 */ +#endif +#ifndef TclMacInstallExitToShellPatch +#define TclMacInstallExitToShellPatch \ + (tclIntPlatStubsPtr->tclMacInstallExitToShellPatch) /* 15 */ +#endif +#ifndef TclMacOSErrorToPosixError +#define TclMacOSErrorToPosixError \ + (tclIntPlatStubsPtr->tclMacOSErrorToPosixError) /* 16 */ +#endif +#ifndef TclMacRemoveTimer +#define TclMacRemoveTimer \ + (tclIntPlatStubsPtr->tclMacRemoveTimer) /* 17 */ +#endif +#ifndef TclMacStartTimer +#define TclMacStartTimer \ + (tclIntPlatStubsPtr->tclMacStartTimer) /* 18 */ +#endif +#ifndef TclMacTimerExpired +#define TclMacTimerExpired \ + (tclIntPlatStubsPtr->tclMacTimerExpired) /* 19 */ +#endif +#ifndef TclMacRegisterResourceFork +#define TclMacRegisterResourceFork \ + (tclIntPlatStubsPtr->tclMacRegisterResourceFork) /* 20 */ +#endif +#ifndef TclMacUnRegisterResourceFork +#define TclMacUnRegisterResourceFork \ + (tclIntPlatStubsPtr->tclMacUnRegisterResourceFork) /* 21 */ +#endif +#ifndef TclMacCreateEnv +#define TclMacCreateEnv \ + (tclIntPlatStubsPtr->tclMacCreateEnv) /* 22 */ +#endif +#ifndef TclMacFOpenHack +#define TclMacFOpenHack \ + (tclIntPlatStubsPtr->tclMacFOpenHack) /* 23 */ +#endif +#ifndef TclpGetTZName +#define TclpGetTZName \ + (tclIntPlatStubsPtr->tclpGetTZName) /* 24 */ +#endif +#ifndef TclMacChmod +#define TclMacChmod \ + (tclIntPlatStubsPtr->tclMacChmod) /* 25 */ +#endif +#ifndef FSpLLocationFromPath +#define FSpLLocationFromPath \ + (tclIntPlatStubsPtr->fSpLLocationFromPath) /* 26 */ +#endif +#endif /* MAC_TCL */ + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLINTPLATDECLS */ diff --git a/generic/tclPlatDecls.h b/generic/tclPlatDecls.h index 70a4c2b..b2ebcf3 100644 --- a/generic/tclPlatDecls.h +++ b/generic/tclPlatDecls.h @@ -1,197 +1,197 @@ -/* - * tclPlatDecls.h -- - * - * Declarations of platform specific Tcl APIs. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * All rights reserved. - * - * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.4 2004/06/05 17:25:40 kennykb Exp $ - */ - -#ifndef _TCLPLATDECLS -#define _TCLPLATDECLS - -/* - * Pull in the typedef of TCHAR for windows. - */ -#if defined(__CYGWIN__) - typedef char TCHAR; -#elif defined(__WIN32__) && !defined(_TCHAR_DEFINED) -# include -# ifndef _TCHAR_DEFINED - /* Borland seems to forget to set this. */ - typedef _TCHAR TCHAR; -# define _TCHAR_DEFINED -# endif -# if defined(_MSC_VER) && defined(__STDC__) - /* MSVC++ misses this. */ - typedef _TCHAR TCHAR; -# endif -#endif - -/* !BEGIN!: Do not edit below this line. */ - -/* - * Exported function declarations: - */ - -#ifdef __WIN32__ -/* 0 */ -EXTERN TCHAR * Tcl_WinUtfToTChar _ANSI_ARGS_((CONST char * str, - int len, Tcl_DString * dsPtr)); -/* 1 */ -EXTERN char * Tcl_WinTCharToUtf _ANSI_ARGS_((CONST TCHAR * str, - int len, Tcl_DString * dsPtr)); -#endif /* __WIN32__ */ -#ifdef MAC_TCL -/* 0 */ -EXTERN void Tcl_MacSetEventProc _ANSI_ARGS_(( - Tcl_MacConvertEventPtr procPtr)); -/* 1 */ -EXTERN char * Tcl_MacConvertTextResource _ANSI_ARGS_(( - Handle resource)); -/* 2 */ -EXTERN int Tcl_MacEvalResource _ANSI_ARGS_((Tcl_Interp * interp, - CONST char * resourceName, - int resourceNumber, CONST char * fileName)); -/* 3 */ -EXTERN Handle Tcl_MacFindResource _ANSI_ARGS_((Tcl_Interp * interp, - long resourceType, CONST char * resourceName, - int resourceNumber, CONST char * resFileRef, - int * releaseIt)); -/* 4 */ -EXTERN int Tcl_GetOSTypeFromObj _ANSI_ARGS_(( - Tcl_Interp * interp, Tcl_Obj * objPtr, - OSType * osTypePtr)); -/* 5 */ -EXTERN void Tcl_SetOSTypeObj _ANSI_ARGS_((Tcl_Obj * objPtr, - OSType osType)); -/* 6 */ -EXTERN Tcl_Obj * Tcl_NewOSTypeObj _ANSI_ARGS_((OSType osType)); -/* 7 */ -EXTERN int strncasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2, size_t n)); -/* 8 */ -EXTERN int strcasecmp _ANSI_ARGS_((CONST char * s1, - CONST char * s2)); -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL -/* 0 */ -EXTERN int Tcl_MacOSXOpenBundleResources _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * bundleName, - int hasResourceFile, int maxPathLen, - char * libraryPath)); -/* 1 */ -EXTERN int Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_(( - Tcl_Interp * interp, CONST char * bundleName, - CONST char * bundleVersion, - int hasResourceFile, int maxPathLen, - char * libraryPath)); -#endif /* MAC_OSX_TCL */ - -typedef struct TclPlatStubs { - int magic; - struct TclPlatStubHooks *hooks; - -#ifdef __WIN32__ - TCHAR * (*tcl_WinUtfToTChar) _ANSI_ARGS_((CONST char * str, int len, Tcl_DString * dsPtr)); /* 0 */ - char * (*tcl_WinTCharToUtf) _ANSI_ARGS_((CONST TCHAR * str, int len, Tcl_DString * dsPtr)); /* 1 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - void (*tcl_MacSetEventProc) _ANSI_ARGS_((Tcl_MacConvertEventPtr procPtr)); /* 0 */ - char * (*tcl_MacConvertTextResource) _ANSI_ARGS_((Handle resource)); /* 1 */ - int (*tcl_MacEvalResource) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * resourceName, int resourceNumber, CONST char * fileName)); /* 2 */ - Handle (*tcl_MacFindResource) _ANSI_ARGS_((Tcl_Interp * interp, long resourceType, CONST char * resourceName, int resourceNumber, CONST char * resFileRef, int * releaseIt)); /* 3 */ - int (*tcl_GetOSTypeFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, OSType * osTypePtr)); /* 4 */ - void (*tcl_SetOSTypeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, OSType osType)); /* 5 */ - Tcl_Obj * (*tcl_NewOSTypeObj) _ANSI_ARGS_((OSType osType)); /* 6 */ - int (*strncasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, size_t n)); /* 7 */ - int (*strcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2)); /* 8 */ -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL - int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */ - int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */ -#endif /* MAC_OSX_TCL */ -} TclPlatStubs; - -#ifdef __cplusplus -extern "C" { -#endif -extern TclPlatStubs *tclPlatStubsPtr; -#ifdef __cplusplus -} -#endif - -#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) - -/* - * Inline function declarations: - */ - -#ifdef __WIN32__ -#ifndef Tcl_WinUtfToTChar -#define Tcl_WinUtfToTChar \ - (tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */ -#endif -#ifndef Tcl_WinTCharToUtf -#define Tcl_WinTCharToUtf \ - (tclPlatStubsPtr->tcl_WinTCharToUtf) /* 1 */ -#endif -#endif /* __WIN32__ */ -#ifdef MAC_TCL -#ifndef Tcl_MacSetEventProc -#define Tcl_MacSetEventProc \ - (tclPlatStubsPtr->tcl_MacSetEventProc) /* 0 */ -#endif -#ifndef Tcl_MacConvertTextResource -#define Tcl_MacConvertTextResource \ - (tclPlatStubsPtr->tcl_MacConvertTextResource) /* 1 */ -#endif -#ifndef Tcl_MacEvalResource -#define Tcl_MacEvalResource \ - (tclPlatStubsPtr->tcl_MacEvalResource) /* 2 */ -#endif -#ifndef Tcl_MacFindResource -#define Tcl_MacFindResource \ - (tclPlatStubsPtr->tcl_MacFindResource) /* 3 */ -#endif -#ifndef Tcl_GetOSTypeFromObj -#define Tcl_GetOSTypeFromObj \ - (tclPlatStubsPtr->tcl_GetOSTypeFromObj) /* 4 */ -#endif -#ifndef Tcl_SetOSTypeObj -#define Tcl_SetOSTypeObj \ - (tclPlatStubsPtr->tcl_SetOSTypeObj) /* 5 */ -#endif -#ifndef Tcl_NewOSTypeObj -#define Tcl_NewOSTypeObj \ - (tclPlatStubsPtr->tcl_NewOSTypeObj) /* 6 */ -#endif -#ifndef strncasecmp -#define strncasecmp \ - (tclPlatStubsPtr->strncasecmp) /* 7 */ -#endif -#ifndef strcasecmp -#define strcasecmp \ - (tclPlatStubsPtr->strcasecmp) /* 8 */ -#endif -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL -#ifndef Tcl_MacOSXOpenBundleResources -#define Tcl_MacOSXOpenBundleResources \ - (tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */ -#endif -#ifndef Tcl_MacOSXOpenVersionedBundleResources -#define Tcl_MacOSXOpenVersionedBundleResources \ - (tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */ -#endif -#endif /* MAC_OSX_TCL */ - -#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ - -/* !END!: Do not edit above this line. */ - -#endif /* _TCLPLATDECLS */ - - +/* + * tclPlatDecls.h -- + * + * Declarations of platform specific Tcl APIs. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * All rights reserved. + * + * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.5 2004/06/10 17:17:45 andreas_kupries Exp $ + */ + +#ifndef _TCLPLATDECLS +#define _TCLPLATDECLS + +/* + * Pull in the typedef of TCHAR for windows. + */ +#if defined(__CYGWIN__) + typedef char TCHAR; +#elif defined(__WIN32__) && !defined(_TCHAR_DEFINED) +# include +# ifndef _TCHAR_DEFINED + /* Borland seems to forget to set this. */ + typedef _TCHAR TCHAR; +# define _TCHAR_DEFINED +# endif +# if defined(_MSC_VER) && defined(__STDC__) + /* MSVC++ misses this. */ + typedef _TCHAR TCHAR; +# endif +#endif + +/* !BEGIN!: Do not edit below this line. */ + +/* + * Exported function declarations: + */ + +#ifdef __WIN32__ +/* 0 */ +EXTERN TCHAR * Tcl_WinUtfToTChar _ANSI_ARGS_((CONST char * str, + int len, Tcl_DString * dsPtr)); +/* 1 */ +EXTERN char * Tcl_WinTCharToUtf _ANSI_ARGS_((CONST TCHAR * str, + int len, Tcl_DString * dsPtr)); +#endif /* __WIN32__ */ +#ifdef MAC_TCL +/* 0 */ +EXTERN void Tcl_MacSetEventProc _ANSI_ARGS_(( + Tcl_MacConvertEventPtr procPtr)); +/* 1 */ +EXTERN char * Tcl_MacConvertTextResource _ANSI_ARGS_(( + Handle resource)); +/* 2 */ +EXTERN int Tcl_MacEvalResource _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * resourceName, + int resourceNumber, CONST char * fileName)); +/* 3 */ +EXTERN Handle Tcl_MacFindResource _ANSI_ARGS_((Tcl_Interp * interp, + long resourceType, CONST char * resourceName, + int resourceNumber, CONST char * resFileRef, + int * releaseIt)); +/* 4 */ +EXTERN int Tcl_GetOSTypeFromObj _ANSI_ARGS_(( + Tcl_Interp * interp, Tcl_Obj * objPtr, + OSType * osTypePtr)); +/* 5 */ +EXTERN void Tcl_SetOSTypeObj _ANSI_ARGS_((Tcl_Obj * objPtr, + OSType osType)); +/* 6 */ +EXTERN Tcl_Obj * Tcl_NewOSTypeObj _ANSI_ARGS_((OSType osType)); +/* 7 */ +EXTERN int strncasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2, size_t n)); +/* 8 */ +EXTERN int strcasecmp _ANSI_ARGS_((CONST char * s1, + CONST char * s2)); +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL +/* 0 */ +EXTERN int Tcl_MacOSXOpenBundleResources _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * bundleName, + int hasResourceFile, int maxPathLen, + char * libraryPath)); +/* 1 */ +EXTERN int Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_(( + Tcl_Interp * interp, CONST char * bundleName, + CONST char * bundleVersion, + int hasResourceFile, int maxPathLen, + char * libraryPath)); +#endif /* MAC_OSX_TCL */ + +typedef struct TclPlatStubs { + int magic; + struct TclPlatStubHooks *hooks; + +#ifdef __WIN32__ + TCHAR * (*tcl_WinUtfToTChar) _ANSI_ARGS_((CONST char * str, int len, Tcl_DString * dsPtr)); /* 0 */ + char * (*tcl_WinTCharToUtf) _ANSI_ARGS_((CONST TCHAR * str, int len, Tcl_DString * dsPtr)); /* 1 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + void (*tcl_MacSetEventProc) _ANSI_ARGS_((Tcl_MacConvertEventPtr procPtr)); /* 0 */ + char * (*tcl_MacConvertTextResource) _ANSI_ARGS_((Handle resource)); /* 1 */ + int (*tcl_MacEvalResource) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * resourceName, int resourceNumber, CONST char * fileName)); /* 2 */ + Handle (*tcl_MacFindResource) _ANSI_ARGS_((Tcl_Interp * interp, long resourceType, CONST char * resourceName, int resourceNumber, CONST char * resFileRef, int * releaseIt)); /* 3 */ + int (*tcl_GetOSTypeFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, OSType * osTypePtr)); /* 4 */ + void (*tcl_SetOSTypeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, OSType osType)); /* 5 */ + Tcl_Obj * (*tcl_NewOSTypeObj) _ANSI_ARGS_((OSType osType)); /* 6 */ + int (*strncasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, size_t n)); /* 7 */ + int (*strcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2)); /* 8 */ +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL + int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */ + int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */ +#endif /* MAC_OSX_TCL */ +} TclPlatStubs; + +#ifdef __cplusplus +extern "C" { +#endif +extern TclPlatStubs *tclPlatStubsPtr; +#ifdef __cplusplus +} +#endif + +#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) + +/* + * Inline function declarations: + */ + +#ifdef __WIN32__ +#ifndef Tcl_WinUtfToTChar +#define Tcl_WinUtfToTChar \ + (tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */ +#endif +#ifndef Tcl_WinTCharToUtf +#define Tcl_WinTCharToUtf \ + (tclPlatStubsPtr->tcl_WinTCharToUtf) /* 1 */ +#endif +#endif /* __WIN32__ */ +#ifdef MAC_TCL +#ifndef Tcl_MacSetEventProc +#define Tcl_MacSetEventProc \ + (tclPlatStubsPtr->tcl_MacSetEventProc) /* 0 */ +#endif +#ifndef Tcl_MacConvertTextResource +#define Tcl_MacConvertTextResource \ + (tclPlatStubsPtr->tcl_MacConvertTextResource) /* 1 */ +#endif +#ifndef Tcl_MacEvalResource +#define Tcl_MacEvalResource \ + (tclPlatStubsPtr->tcl_MacEvalResource) /* 2 */ +#endif +#ifndef Tcl_MacFindResource +#define Tcl_MacFindResource \ + (tclPlatStubsPtr->tcl_MacFindResource) /* 3 */ +#endif +#ifndef Tcl_GetOSTypeFromObj +#define Tcl_GetOSTypeFromObj \ + (tclPlatStubsPtr->tcl_GetOSTypeFromObj) /* 4 */ +#endif +#ifndef Tcl_SetOSTypeObj +#define Tcl_SetOSTypeObj \ + (tclPlatStubsPtr->tcl_SetOSTypeObj) /* 5 */ +#endif +#ifndef Tcl_NewOSTypeObj +#define Tcl_NewOSTypeObj \ + (tclPlatStubsPtr->tcl_NewOSTypeObj) /* 6 */ +#endif +#ifndef strncasecmp +#define strncasecmp \ + (tclPlatStubsPtr->strncasecmp) /* 7 */ +#endif +#ifndef strcasecmp +#define strcasecmp \ + (tclPlatStubsPtr->strcasecmp) /* 8 */ +#endif +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL +#ifndef Tcl_MacOSXOpenBundleResources +#define Tcl_MacOSXOpenBundleResources \ + (tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */ +#endif +#ifndef Tcl_MacOSXOpenVersionedBundleResources +#define Tcl_MacOSXOpenVersionedBundleResources \ + (tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */ +#endif +#endif /* MAC_OSX_TCL */ + +#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ + +/* !END!: Do not edit above this line. */ + +#endif /* _TCLPLATDECLS */ + + diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index 98f517d..ebe7f1d 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -1,942 +1,942 @@ -/* - * tclStubInit.c -- - * - * This file contains the initializers for the Tcl stub vectors. - * - * Copyright (c) 1998-1999 by Scriptics Corporation. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.6 2004/06/05 17:25:40 kennykb Exp $ - */ - -#include "tclInt.h" -#include "tclPort.h" - -/* - * Remove macros that will interfere with the definitions below. - */ - -#undef Tcl_Alloc -#undef Tcl_Free -#undef Tcl_Realloc -#undef Tcl_NewBooleanObj -#undef Tcl_NewByteArrayObj -#undef Tcl_NewDoubleObj -#undef Tcl_NewIntObj -#undef Tcl_NewListObj -#undef Tcl_NewLongObj -#undef Tcl_NewObj -#undef Tcl_NewStringObj -#undef Tcl_DumpActiveMemory -#undef Tcl_ValidateAllMemory -#if TCL_PRESERVE_BINARY_COMPATABILITY -# undef Tcl_FindHashEntry -# undef Tcl_CreateHashEntry -#endif - -/* - * Keep a record of the original Notifier procedures, created in the - * same compilation unit as the stub tables so we can later do reliable, - * portable comparisons to see whether a Tcl_SetNotifier() call swapped - * new routines into the stub table. - */ - -Tcl_NotifierProcs tclOriginalNotifier = { - Tcl_SetTimer, - Tcl_WaitForEvent, -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_CreateFileHandler, - Tcl_DeleteFileHandler, -#else - NULL, - NULL, -#endif - NULL, - NULL, - NULL, - NULL -}; - -/* - * WARNING: The contents of this file is automatically generated by the - * tools/genStubs.tcl script. Any modifications to the function declarations - * below should be made in the generic/tcl.decls script. - */ - -/* !BEGIN!: Do not edit below this line. */ - -TclIntStubs tclIntStubs = { - TCL_STUB_MAGIC, - NULL, - NULL, /* 0 */ - TclAccessDeleteProc, /* 1 */ - TclAccessInsertProc, /* 2 */ - TclAllocateFreeObjects, /* 3 */ - NULL, /* 4 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclCleanupChildren, /* 5 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclCleanupChildren, /* 5 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 5 */ -#endif /* MAC_TCL */ - TclCleanupCommand, /* 6 */ - TclCopyAndCollapse, /* 7 */ - TclCopyChannel, /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclCreatePipeline, /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclCreatePipeline, /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 9 */ -#endif /* MAC_TCL */ - TclCreateProc, /* 10 */ - TclDeleteCompiledLocalVars, /* 11 */ - TclDeleteVars, /* 12 */ - TclDoGlob, /* 13 */ - TclDumpMemoryInfo, /* 14 */ - NULL, /* 15 */ - TclExprFloatError, /* 16 */ - NULL, /* 17 */ - NULL, /* 18 */ - NULL, /* 19 */ - NULL, /* 20 */ - NULL, /* 21 */ - TclFindElement, /* 22 */ - TclFindProc, /* 23 */ - TclFormatInt, /* 24 */ - TclFreePackageInfo, /* 25 */ - NULL, /* 26 */ - TclGetDate, /* 27 */ - TclpGetDefaultStdChannel, /* 28 */ - NULL, /* 29 */ - NULL, /* 30 */ - TclGetExtension, /* 31 */ - TclGetFrame, /* 32 */ - TclGetInterpProc, /* 33 */ - TclGetIntForIndex, /* 34 */ - NULL, /* 35 */ - TclGetLong, /* 36 */ - TclGetLoadedPackages, /* 37 */ - TclGetNamespaceForQualName, /* 38 */ - TclGetObjInterpProc, /* 39 */ - TclGetOpenMode, /* 40 */ - TclGetOriginalCommand, /* 41 */ - TclpGetUserHome, /* 42 */ - TclGlobalInvoke, /* 43 */ - TclGuessPackageName, /* 44 */ - TclHideUnsafeCommands, /* 45 */ - TclInExit, /* 46 */ - NULL, /* 47 */ - NULL, /* 48 */ - TclIncrVar2, /* 49 */ - TclInitCompiledLocals, /* 50 */ - TclInterpInit, /* 51 */ - TclInvoke, /* 52 */ - TclInvokeObjectCommand, /* 53 */ - TclInvokeStringCommand, /* 54 */ - TclIsProc, /* 55 */ - NULL, /* 56 */ - NULL, /* 57 */ - TclLookupVar, /* 58 */ - NULL, /* 59 */ - TclNeedSpace, /* 60 */ - TclNewProcBodyObj, /* 61 */ - TclObjCommandComplete, /* 62 */ - TclObjInterpProc, /* 63 */ - TclObjInvoke, /* 64 */ - TclObjInvokeGlobal, /* 65 */ - TclOpenFileChannelDeleteProc, /* 66 */ - TclOpenFileChannelInsertProc, /* 67 */ - NULL, /* 68 */ - TclpAlloc, /* 69 */ - NULL, /* 70 */ - NULL, /* 71 */ - NULL, /* 72 */ - NULL, /* 73 */ - TclpFree, /* 74 */ - TclpGetClicks, /* 75 */ - TclpGetSeconds, /* 76 */ - TclpGetTime, /* 77 */ - TclpGetTimeZone, /* 78 */ - NULL, /* 79 */ - NULL, /* 80 */ - TclpRealloc, /* 81 */ - NULL, /* 82 */ - NULL, /* 83 */ - NULL, /* 84 */ - NULL, /* 85 */ - NULL, /* 86 */ - NULL, /* 87 */ - TclPrecTraceProc, /* 88 */ - TclPreventAliasLoop, /* 89 */ - NULL, /* 90 */ - TclProcCleanupProc, /* 91 */ - TclProcCompileProc, /* 92 */ - TclProcDeleteProc, /* 93 */ - TclProcInterpProc, /* 94 */ - NULL, /* 95 */ - TclRenameCommand, /* 96 */ - TclResetShadowedCmdRefs, /* 97 */ - TclServiceIdle, /* 98 */ - NULL, /* 99 */ - NULL, /* 100 */ - TclSetPreInitScript, /* 101 */ - TclSetupEnv, /* 102 */ - TclSockGetPort, /* 103 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclSockMinimumBuffers, /* 104 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclSockMinimumBuffers, /* 104 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 104 */ -#endif /* MAC_TCL */ - NULL, /* 105 */ - TclStatDeleteProc, /* 106 */ - TclStatInsertProc, /* 107 */ - TclTeardownNamespace, /* 108 */ - TclUpdateReturnInfo, /* 109 */ - NULL, /* 110 */ - Tcl_AddInterpResolvers, /* 111 */ - Tcl_AppendExportList, /* 112 */ - Tcl_CreateNamespace, /* 113 */ - Tcl_DeleteNamespace, /* 114 */ - Tcl_Export, /* 115 */ - Tcl_FindCommand, /* 116 */ - Tcl_FindNamespace, /* 117 */ - Tcl_GetInterpResolvers, /* 118 */ - Tcl_GetNamespaceResolvers, /* 119 */ - Tcl_FindNamespaceVar, /* 120 */ - Tcl_ForgetImport, /* 121 */ - Tcl_GetCommandFromObj, /* 122 */ - Tcl_GetCommandFullName, /* 123 */ - Tcl_GetCurrentNamespace, /* 124 */ - Tcl_GetGlobalNamespace, /* 125 */ - Tcl_GetVariableFullName, /* 126 */ - Tcl_Import, /* 127 */ - Tcl_PopCallFrame, /* 128 */ - Tcl_PushCallFrame, /* 129 */ - Tcl_RemoveInterpResolvers, /* 130 */ - Tcl_SetNamespaceResolvers, /* 131 */ - TclpHasSockets, /* 132 */ - TclpGetDate, /* 133 */ - TclpStrftime, /* 134 */ - TclpCheckStackSpace, /* 135 */ - NULL, /* 136 */ - NULL, /* 137 */ - TclGetEnv, /* 138 */ - NULL, /* 139 */ - TclLooksLikeInt, /* 140 */ - TclpGetCwd, /* 141 */ - TclSetByteCodeFromAny, /* 142 */ - TclAddLiteralObj, /* 143 */ - TclHideLiteral, /* 144 */ - TclGetAuxDataType, /* 145 */ - TclHandleCreate, /* 146 */ - TclHandleFree, /* 147 */ - TclHandlePreserve, /* 148 */ - TclHandleRelease, /* 149 */ - TclRegAbout, /* 150 */ - TclRegExpRangeUniChar, /* 151 */ - TclSetLibraryPath, /* 152 */ - TclGetLibraryPath, /* 153 */ - NULL, /* 154 */ - NULL, /* 155 */ - TclRegError, /* 156 */ - TclVarTraceExists, /* 157 */ - TclSetStartupScriptFileName, /* 158 */ - TclGetStartupScriptFileName, /* 159 */ - NULL, /* 160 */ - TclChannelTransform, /* 161 */ - TclChannelEventScriptInvoker, /* 162 */ - TclGetInstructionTable, /* 163 */ - TclExpandCodeArray, /* 164 */ - TclpSetInitialEncodings, /* 165 */ - TclListObjSetElement, /* 166 */ - TclSetStartupScriptPath, /* 167 */ - TclGetStartupScriptPath, /* 168 */ - TclpUtfNcmp2, /* 169 */ - TclCheckInterpTraces, /* 170 */ - TclCheckExecutionTraces, /* 171 */ - TclInThreadExit, /* 172 */ - TclUniCharMatch, /* 173 */ - NULL, /* 174 */ - NULL, /* 175 */ - NULL, /* 176 */ - NULL, /* 177 */ - NULL, /* 178 */ - NULL, /* 179 */ - NULL, /* 180 */ - NULL, /* 181 */ - TclpLocaltime, /* 182 */ - TclpGmtime, /* 183 */ -}; - -TclIntPlatStubs tclIntPlatStubs = { - TCL_STUB_MAGIC, - NULL, -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - TclGetAndDetachPids, /* 0 */ - TclpCloseFile, /* 1 */ - TclpCreateCommandChannel, /* 2 */ - TclpCreatePipe, /* 3 */ - TclpCreateProcess, /* 4 */ - NULL, /* 5 */ - TclpMakeFile, /* 6 */ - TclpOpenFile, /* 7 */ - TclUnixWaitForFile, /* 8 */ - TclpCreateTempFile, /* 9 */ - TclpReaddir, /* 10 */ - TclpLocaltime_unix, /* 11 */ - TclpGmtime_unix, /* 12 */ - TclpInetNtoa, /* 13 */ -#endif /* UNIX */ -#ifdef __WIN32__ - TclWinConvertError, /* 0 */ - TclWinConvertWSAError, /* 1 */ - TclWinGetServByName, /* 2 */ - TclWinGetSockOpt, /* 3 */ - TclWinGetTclInstance, /* 4 */ - NULL, /* 5 */ - TclWinNToHS, /* 6 */ - TclWinSetSockOpt, /* 7 */ - TclpGetPid, /* 8 */ - TclWinGetPlatformId, /* 9 */ - NULL, /* 10 */ - TclGetAndDetachPids, /* 11 */ - TclpCloseFile, /* 12 */ - TclpCreateCommandChannel, /* 13 */ - TclpCreatePipe, /* 14 */ - TclpCreateProcess, /* 15 */ - NULL, /* 16 */ - NULL, /* 17 */ - TclpMakeFile, /* 18 */ - TclpOpenFile, /* 19 */ - TclWinAddProcess, /* 20 */ - NULL, /* 21 */ - TclpCreateTempFile, /* 22 */ - TclpGetTZName, /* 23 */ - TclWinNoBackslash, /* 24 */ - TclWinGetPlatform, /* 25 */ - TclWinSetInterfaces, /* 26 */ - TclWinFlushDirtyChannels, /* 27 */ - TclWinResetInterfaces, /* 28 */ - TclWinCPUID, /* 29 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - TclpSysAlloc, /* 0 */ - TclpSysFree, /* 1 */ - TclpSysRealloc, /* 2 */ - TclpExit, /* 3 */ - FSpGetDefaultDir, /* 4 */ - FSpSetDefaultDir, /* 5 */ - FSpFindFolder, /* 6 */ - GetGlobalMouseTcl, /* 7 */ - FSpGetDirectoryIDTcl, /* 8 */ - FSpOpenResFileCompatTcl, /* 9 */ - FSpCreateResFileCompatTcl, /* 10 */ - FSpLocationFromPath, /* 11 */ - FSpPathFromLocation, /* 12 */ - TclMacExitHandler, /* 13 */ - TclMacInitExitToShell, /* 14 */ - TclMacInstallExitToShellPatch, /* 15 */ - TclMacOSErrorToPosixError, /* 16 */ - TclMacRemoveTimer, /* 17 */ - TclMacStartTimer, /* 18 */ - TclMacTimerExpired, /* 19 */ - TclMacRegisterResourceFork, /* 20 */ - TclMacUnRegisterResourceFork, /* 21 */ - TclMacCreateEnv, /* 22 */ - TclMacFOpenHack, /* 23 */ - TclpGetTZName, /* 24 */ - TclMacChmod, /* 25 */ - FSpLLocationFromPath, /* 26 */ -#endif /* MAC_TCL */ -}; - -TclPlatStubs tclPlatStubs = { - TCL_STUB_MAGIC, - NULL, -#ifdef __WIN32__ - Tcl_WinUtfToTChar, /* 0 */ - Tcl_WinTCharToUtf, /* 1 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - Tcl_MacSetEventProc, /* 0 */ - Tcl_MacConvertTextResource, /* 1 */ - Tcl_MacEvalResource, /* 2 */ - Tcl_MacFindResource, /* 3 */ - Tcl_GetOSTypeFromObj, /* 4 */ - Tcl_SetOSTypeObj, /* 5 */ - Tcl_NewOSTypeObj, /* 6 */ - strncasecmp, /* 7 */ - strcasecmp, /* 8 */ -#endif /* MAC_TCL */ -#ifdef MAC_OSX_TCL - Tcl_MacOSXOpenBundleResources, /* 0 */ - Tcl_MacOSXOpenVersionedBundleResources, /* 1 */ -#endif /* MAC_OSX_TCL */ -}; - -static TclStubHooks tclStubHooks = { - &tclPlatStubs, - &tclIntStubs, - &tclIntPlatStubs -}; - -TclStubs tclStubs = { - TCL_STUB_MAGIC, - &tclStubHooks, - Tcl_PkgProvideEx, /* 0 */ - Tcl_PkgRequireEx, /* 1 */ - Tcl_Panic, /* 2 */ - Tcl_Alloc, /* 3 */ - Tcl_Free, /* 4 */ - Tcl_Realloc, /* 5 */ - Tcl_DbCkalloc, /* 6 */ - Tcl_DbCkfree, /* 7 */ - Tcl_DbCkrealloc, /* 8 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_CreateFileHandler, /* 9 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 9 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 9 */ -#endif /* MAC_TCL */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_DeleteFileHandler, /* 10 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 10 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 10 */ -#endif /* MAC_TCL */ - Tcl_SetTimer, /* 11 */ - Tcl_Sleep, /* 12 */ - Tcl_WaitForEvent, /* 13 */ - Tcl_AppendAllObjTypes, /* 14 */ - Tcl_AppendStringsToObj, /* 15 */ - Tcl_AppendToObj, /* 16 */ - Tcl_ConcatObj, /* 17 */ - Tcl_ConvertToType, /* 18 */ - Tcl_DbDecrRefCount, /* 19 */ - Tcl_DbIncrRefCount, /* 20 */ - Tcl_DbIsShared, /* 21 */ - Tcl_DbNewBooleanObj, /* 22 */ - Tcl_DbNewByteArrayObj, /* 23 */ - Tcl_DbNewDoubleObj, /* 24 */ - Tcl_DbNewListObj, /* 25 */ - Tcl_DbNewLongObj, /* 26 */ - Tcl_DbNewObj, /* 27 */ - Tcl_DbNewStringObj, /* 28 */ - Tcl_DuplicateObj, /* 29 */ - TclFreeObj, /* 30 */ - Tcl_GetBoolean, /* 31 */ - Tcl_GetBooleanFromObj, /* 32 */ - Tcl_GetByteArrayFromObj, /* 33 */ - Tcl_GetDouble, /* 34 */ - Tcl_GetDoubleFromObj, /* 35 */ - Tcl_GetIndexFromObj, /* 36 */ - Tcl_GetInt, /* 37 */ - Tcl_GetIntFromObj, /* 38 */ - Tcl_GetLongFromObj, /* 39 */ - Tcl_GetObjType, /* 40 */ - Tcl_GetStringFromObj, /* 41 */ - Tcl_InvalidateStringRep, /* 42 */ - Tcl_ListObjAppendList, /* 43 */ - Tcl_ListObjAppendElement, /* 44 */ - Tcl_ListObjGetElements, /* 45 */ - Tcl_ListObjIndex, /* 46 */ - Tcl_ListObjLength, /* 47 */ - Tcl_ListObjReplace, /* 48 */ - Tcl_NewBooleanObj, /* 49 */ - Tcl_NewByteArrayObj, /* 50 */ - Tcl_NewDoubleObj, /* 51 */ - Tcl_NewIntObj, /* 52 */ - Tcl_NewListObj, /* 53 */ - Tcl_NewLongObj, /* 54 */ - Tcl_NewObj, /* 55 */ - Tcl_NewStringObj, /* 56 */ - Tcl_SetBooleanObj, /* 57 */ - Tcl_SetByteArrayLength, /* 58 */ - Tcl_SetByteArrayObj, /* 59 */ - Tcl_SetDoubleObj, /* 60 */ - Tcl_SetIntObj, /* 61 */ - Tcl_SetListObj, /* 62 */ - Tcl_SetLongObj, /* 63 */ - Tcl_SetObjLength, /* 64 */ - Tcl_SetStringObj, /* 65 */ - Tcl_AddErrorInfo, /* 66 */ - Tcl_AddObjErrorInfo, /* 67 */ - Tcl_AllowExceptions, /* 68 */ - Tcl_AppendElement, /* 69 */ - Tcl_AppendResult, /* 70 */ - Tcl_AsyncCreate, /* 71 */ - Tcl_AsyncDelete, /* 72 */ - Tcl_AsyncInvoke, /* 73 */ - Tcl_AsyncMark, /* 74 */ - Tcl_AsyncReady, /* 75 */ - Tcl_BackgroundError, /* 76 */ - Tcl_Backslash, /* 77 */ - Tcl_BadChannelOption, /* 78 */ - Tcl_CallWhenDeleted, /* 79 */ - Tcl_CancelIdleCall, /* 80 */ - Tcl_Close, /* 81 */ - Tcl_CommandComplete, /* 82 */ - Tcl_Concat, /* 83 */ - Tcl_ConvertElement, /* 84 */ - Tcl_ConvertCountedElement, /* 85 */ - Tcl_CreateAlias, /* 86 */ - Tcl_CreateAliasObj, /* 87 */ - Tcl_CreateChannel, /* 88 */ - Tcl_CreateChannelHandler, /* 89 */ - Tcl_CreateCloseHandler, /* 90 */ - Tcl_CreateCommand, /* 91 */ - Tcl_CreateEventSource, /* 92 */ - Tcl_CreateExitHandler, /* 93 */ - Tcl_CreateInterp, /* 94 */ - Tcl_CreateMathFunc, /* 95 */ - Tcl_CreateObjCommand, /* 96 */ - Tcl_CreateSlave, /* 97 */ - Tcl_CreateTimerHandler, /* 98 */ - Tcl_CreateTrace, /* 99 */ - Tcl_DeleteAssocData, /* 100 */ - Tcl_DeleteChannelHandler, /* 101 */ - Tcl_DeleteCloseHandler, /* 102 */ - Tcl_DeleteCommand, /* 103 */ - Tcl_DeleteCommandFromToken, /* 104 */ - Tcl_DeleteEvents, /* 105 */ - Tcl_DeleteEventSource, /* 106 */ - Tcl_DeleteExitHandler, /* 107 */ - Tcl_DeleteHashEntry, /* 108 */ - Tcl_DeleteHashTable, /* 109 */ - Tcl_DeleteInterp, /* 110 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_DetachPids, /* 111 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_DetachPids, /* 111 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 111 */ -#endif /* MAC_TCL */ - Tcl_DeleteTimerHandler, /* 112 */ - Tcl_DeleteTrace, /* 113 */ - Tcl_DontCallWhenDeleted, /* 114 */ - Tcl_DoOneEvent, /* 115 */ - Tcl_DoWhenIdle, /* 116 */ - Tcl_DStringAppend, /* 117 */ - Tcl_DStringAppendElement, /* 118 */ - Tcl_DStringEndSublist, /* 119 */ - Tcl_DStringFree, /* 120 */ - Tcl_DStringGetResult, /* 121 */ - Tcl_DStringInit, /* 122 */ - Tcl_DStringResult, /* 123 */ - Tcl_DStringSetLength, /* 124 */ - Tcl_DStringStartSublist, /* 125 */ - Tcl_Eof, /* 126 */ - Tcl_ErrnoId, /* 127 */ - Tcl_ErrnoMsg, /* 128 */ - Tcl_Eval, /* 129 */ - Tcl_EvalFile, /* 130 */ - Tcl_EvalObj, /* 131 */ - Tcl_EventuallyFree, /* 132 */ - Tcl_Exit, /* 133 */ - Tcl_ExposeCommand, /* 134 */ - Tcl_ExprBoolean, /* 135 */ - Tcl_ExprBooleanObj, /* 136 */ - Tcl_ExprDouble, /* 137 */ - Tcl_ExprDoubleObj, /* 138 */ - Tcl_ExprLong, /* 139 */ - Tcl_ExprLongObj, /* 140 */ - Tcl_ExprObj, /* 141 */ - Tcl_ExprString, /* 142 */ - Tcl_Finalize, /* 143 */ - Tcl_FindExecutable, /* 144 */ - Tcl_FirstHashEntry, /* 145 */ - Tcl_Flush, /* 146 */ - Tcl_FreeResult, /* 147 */ - Tcl_GetAlias, /* 148 */ - Tcl_GetAliasObj, /* 149 */ - Tcl_GetAssocData, /* 150 */ - Tcl_GetChannel, /* 151 */ - Tcl_GetChannelBufferSize, /* 152 */ - Tcl_GetChannelHandle, /* 153 */ - Tcl_GetChannelInstanceData, /* 154 */ - Tcl_GetChannelMode, /* 155 */ - Tcl_GetChannelName, /* 156 */ - Tcl_GetChannelOption, /* 157 */ - Tcl_GetChannelType, /* 158 */ - Tcl_GetCommandInfo, /* 159 */ - Tcl_GetCommandName, /* 160 */ - Tcl_GetErrno, /* 161 */ - Tcl_GetHostName, /* 162 */ - Tcl_GetInterpPath, /* 163 */ - Tcl_GetMaster, /* 164 */ - Tcl_GetNameOfExecutable, /* 165 */ - Tcl_GetObjResult, /* 166 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_GetOpenFile, /* 167 */ -#endif /* UNIX */ -#ifdef __WIN32__ - NULL, /* 167 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 167 */ -#endif /* MAC_TCL */ - Tcl_GetPathType, /* 168 */ - Tcl_Gets, /* 169 */ - Tcl_GetsObj, /* 170 */ - Tcl_GetServiceMode, /* 171 */ - Tcl_GetSlave, /* 172 */ - Tcl_GetStdChannel, /* 173 */ - Tcl_GetStringResult, /* 174 */ - Tcl_GetVar, /* 175 */ - Tcl_GetVar2, /* 176 */ - Tcl_GlobalEval, /* 177 */ - Tcl_GlobalEvalObj, /* 178 */ - Tcl_HideCommand, /* 179 */ - Tcl_Init, /* 180 */ - Tcl_InitHashTable, /* 181 */ - Tcl_InputBlocked, /* 182 */ - Tcl_InputBuffered, /* 183 */ - Tcl_InterpDeleted, /* 184 */ - Tcl_IsSafe, /* 185 */ - Tcl_JoinPath, /* 186 */ - Tcl_LinkVar, /* 187 */ - NULL, /* 188 */ - Tcl_MakeFileChannel, /* 189 */ - Tcl_MakeSafe, /* 190 */ - Tcl_MakeTcpClientChannel, /* 191 */ - Tcl_Merge, /* 192 */ - Tcl_NextHashEntry, /* 193 */ - Tcl_NotifyChannel, /* 194 */ - Tcl_ObjGetVar2, /* 195 */ - Tcl_ObjSetVar2, /* 196 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_OpenCommandChannel, /* 197 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_OpenCommandChannel, /* 197 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 197 */ -#endif /* MAC_TCL */ - Tcl_OpenFileChannel, /* 198 */ - Tcl_OpenTcpClient, /* 199 */ - Tcl_OpenTcpServer, /* 200 */ - Tcl_Preserve, /* 201 */ - Tcl_PrintDouble, /* 202 */ - Tcl_PutEnv, /* 203 */ - Tcl_PosixError, /* 204 */ - Tcl_QueueEvent, /* 205 */ - Tcl_Read, /* 206 */ -#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ - Tcl_ReapDetachedProcs, /* 207 */ -#endif /* UNIX */ -#ifdef __WIN32__ - Tcl_ReapDetachedProcs, /* 207 */ -#endif /* __WIN32__ */ -#ifdef MAC_TCL - NULL, /* 207 */ -#endif /* MAC_TCL */ - Tcl_RecordAndEval, /* 208 */ - Tcl_RecordAndEvalObj, /* 209 */ - Tcl_RegisterChannel, /* 210 */ - Tcl_RegisterObjType, /* 211 */ - Tcl_RegExpCompile, /* 212 */ - Tcl_RegExpExec, /* 213 */ - Tcl_RegExpMatch, /* 214 */ - Tcl_RegExpRange, /* 215 */ - Tcl_Release, /* 216 */ - Tcl_ResetResult, /* 217 */ - Tcl_ScanElement, /* 218 */ - Tcl_ScanCountedElement, /* 219 */ - Tcl_SeekOld, /* 220 */ - Tcl_ServiceAll, /* 221 */ - Tcl_ServiceEvent, /* 222 */ - Tcl_SetAssocData, /* 223 */ - Tcl_SetChannelBufferSize, /* 224 */ - Tcl_SetChannelOption, /* 225 */ - Tcl_SetCommandInfo, /* 226 */ - Tcl_SetErrno, /* 227 */ - Tcl_SetErrorCode, /* 228 */ - Tcl_SetMaxBlockTime, /* 229 */ - Tcl_SetPanicProc, /* 230 */ - Tcl_SetRecursionLimit, /* 231 */ - Tcl_SetResult, /* 232 */ - Tcl_SetServiceMode, /* 233 */ - Tcl_SetObjErrorCode, /* 234 */ - Tcl_SetObjResult, /* 235 */ - Tcl_SetStdChannel, /* 236 */ - Tcl_SetVar, /* 237 */ - Tcl_SetVar2, /* 238 */ - Tcl_SignalId, /* 239 */ - Tcl_SignalMsg, /* 240 */ - Tcl_SourceRCFile, /* 241 */ - Tcl_SplitList, /* 242 */ - Tcl_SplitPath, /* 243 */ - Tcl_StaticPackage, /* 244 */ - Tcl_StringMatch, /* 245 */ - Tcl_TellOld, /* 246 */ - Tcl_TraceVar, /* 247 */ - Tcl_TraceVar2, /* 248 */ - Tcl_TranslateFileName, /* 249 */ - Tcl_Ungets, /* 250 */ - Tcl_UnlinkVar, /* 251 */ - Tcl_UnregisterChannel, /* 252 */ - Tcl_UnsetVar, /* 253 */ - Tcl_UnsetVar2, /* 254 */ - Tcl_UntraceVar, /* 255 */ - Tcl_UntraceVar2, /* 256 */ - Tcl_UpdateLinkedVar, /* 257 */ - Tcl_UpVar, /* 258 */ - Tcl_UpVar2, /* 259 */ - Tcl_VarEval, /* 260 */ - Tcl_VarTraceInfo, /* 261 */ - Tcl_VarTraceInfo2, /* 262 */ - Tcl_Write, /* 263 */ - Tcl_WrongNumArgs, /* 264 */ - Tcl_DumpActiveMemory, /* 265 */ - Tcl_ValidateAllMemory, /* 266 */ - Tcl_AppendResultVA, /* 267 */ - Tcl_AppendStringsToObjVA, /* 268 */ - Tcl_HashStats, /* 269 */ - Tcl_ParseVar, /* 270 */ - Tcl_PkgPresent, /* 271 */ - Tcl_PkgPresentEx, /* 272 */ - Tcl_PkgProvide, /* 273 */ - Tcl_PkgRequire, /* 274 */ - Tcl_SetErrorCodeVA, /* 275 */ - Tcl_VarEvalVA, /* 276 */ - Tcl_WaitPid, /* 277 */ - Tcl_PanicVA, /* 278 */ - Tcl_GetVersion, /* 279 */ - Tcl_InitMemory, /* 280 */ - Tcl_StackChannel, /* 281 */ - Tcl_UnstackChannel, /* 282 */ - Tcl_GetStackedChannel, /* 283 */ - Tcl_SetMainLoop, /* 284 */ - NULL, /* 285 */ - Tcl_AppendObjToObj, /* 286 */ - Tcl_CreateEncoding, /* 287 */ - Tcl_CreateThreadExitHandler, /* 288 */ - Tcl_DeleteThreadExitHandler, /* 289 */ - Tcl_DiscardResult, /* 290 */ - Tcl_EvalEx, /* 291 */ - Tcl_EvalObjv, /* 292 */ - Tcl_EvalObjEx, /* 293 */ - Tcl_ExitThread, /* 294 */ - Tcl_ExternalToUtf, /* 295 */ - Tcl_ExternalToUtfDString, /* 296 */ - Tcl_FinalizeThread, /* 297 */ - Tcl_FinalizeNotifier, /* 298 */ - Tcl_FreeEncoding, /* 299 */ - Tcl_GetCurrentThread, /* 300 */ - Tcl_GetEncoding, /* 301 */ - Tcl_GetEncodingName, /* 302 */ - Tcl_GetEncodingNames, /* 303 */ - Tcl_GetIndexFromObjStruct, /* 304 */ - Tcl_GetThreadData, /* 305 */ - Tcl_GetVar2Ex, /* 306 */ - Tcl_InitNotifier, /* 307 */ - Tcl_MutexLock, /* 308 */ - Tcl_MutexUnlock, /* 309 */ - Tcl_ConditionNotify, /* 310 */ - Tcl_ConditionWait, /* 311 */ - Tcl_NumUtfChars, /* 312 */ - Tcl_ReadChars, /* 313 */ - Tcl_RestoreResult, /* 314 */ - Tcl_SaveResult, /* 315 */ - Tcl_SetSystemEncoding, /* 316 */ - Tcl_SetVar2Ex, /* 317 */ - Tcl_ThreadAlert, /* 318 */ - Tcl_ThreadQueueEvent, /* 319 */ - Tcl_UniCharAtIndex, /* 320 */ - Tcl_UniCharToLower, /* 321 */ - Tcl_UniCharToTitle, /* 322 */ - Tcl_UniCharToUpper, /* 323 */ - Tcl_UniCharToUtf, /* 324 */ - Tcl_UtfAtIndex, /* 325 */ - Tcl_UtfCharComplete, /* 326 */ - Tcl_UtfBackslash, /* 327 */ - Tcl_UtfFindFirst, /* 328 */ - Tcl_UtfFindLast, /* 329 */ - Tcl_UtfNext, /* 330 */ - Tcl_UtfPrev, /* 331 */ - Tcl_UtfToExternal, /* 332 */ - Tcl_UtfToExternalDString, /* 333 */ - Tcl_UtfToLower, /* 334 */ - Tcl_UtfToTitle, /* 335 */ - Tcl_UtfToUniChar, /* 336 */ - Tcl_UtfToUpper, /* 337 */ - Tcl_WriteChars, /* 338 */ - Tcl_WriteObj, /* 339 */ - Tcl_GetString, /* 340 */ - Tcl_GetDefaultEncodingDir, /* 341 */ - Tcl_SetDefaultEncodingDir, /* 342 */ - Tcl_AlertNotifier, /* 343 */ - Tcl_ServiceModeHook, /* 344 */ - Tcl_UniCharIsAlnum, /* 345 */ - Tcl_UniCharIsAlpha, /* 346 */ - Tcl_UniCharIsDigit, /* 347 */ - Tcl_UniCharIsLower, /* 348 */ - Tcl_UniCharIsSpace, /* 349 */ - Tcl_UniCharIsUpper, /* 350 */ - Tcl_UniCharIsWordChar, /* 351 */ - Tcl_UniCharLen, /* 352 */ - Tcl_UniCharNcmp, /* 353 */ - Tcl_UniCharToUtfDString, /* 354 */ - Tcl_UtfToUniCharDString, /* 355 */ - Tcl_GetRegExpFromObj, /* 356 */ - Tcl_EvalTokens, /* 357 */ - Tcl_FreeParse, /* 358 */ - Tcl_LogCommandInfo, /* 359 */ - Tcl_ParseBraces, /* 360 */ - Tcl_ParseCommand, /* 361 */ - Tcl_ParseExpr, /* 362 */ - Tcl_ParseQuotedString, /* 363 */ - Tcl_ParseVarName, /* 364 */ - Tcl_GetCwd, /* 365 */ - Tcl_Chdir, /* 366 */ - Tcl_Access, /* 367 */ - Tcl_Stat, /* 368 */ - Tcl_UtfNcmp, /* 369 */ - Tcl_UtfNcasecmp, /* 370 */ - Tcl_StringCaseMatch, /* 371 */ - Tcl_UniCharIsControl, /* 372 */ - Tcl_UniCharIsGraph, /* 373 */ - Tcl_UniCharIsPrint, /* 374 */ - Tcl_UniCharIsPunct, /* 375 */ - Tcl_RegExpExecObj, /* 376 */ - Tcl_RegExpGetInfo, /* 377 */ - Tcl_NewUnicodeObj, /* 378 */ - Tcl_SetUnicodeObj, /* 379 */ - Tcl_GetCharLength, /* 380 */ - Tcl_GetUniChar, /* 381 */ - Tcl_GetUnicode, /* 382 */ - Tcl_GetRange, /* 383 */ - Tcl_AppendUnicodeToObj, /* 384 */ - Tcl_RegExpMatchObj, /* 385 */ - Tcl_SetNotifier, /* 386 */ - Tcl_GetAllocMutex, /* 387 */ - Tcl_GetChannelNames, /* 388 */ - Tcl_GetChannelNamesEx, /* 389 */ - Tcl_ProcObjCmd, /* 390 */ - Tcl_ConditionFinalize, /* 391 */ - Tcl_MutexFinalize, /* 392 */ - Tcl_CreateThread, /* 393 */ - Tcl_ReadRaw, /* 394 */ - Tcl_WriteRaw, /* 395 */ - Tcl_GetTopChannel, /* 396 */ - Tcl_ChannelBuffered, /* 397 */ - Tcl_ChannelName, /* 398 */ - Tcl_ChannelVersion, /* 399 */ - Tcl_ChannelBlockModeProc, /* 400 */ - Tcl_ChannelCloseProc, /* 401 */ - Tcl_ChannelClose2Proc, /* 402 */ - Tcl_ChannelInputProc, /* 403 */ - Tcl_ChannelOutputProc, /* 404 */ - Tcl_ChannelSeekProc, /* 405 */ - Tcl_ChannelSetOptionProc, /* 406 */ - Tcl_ChannelGetOptionProc, /* 407 */ - Tcl_ChannelWatchProc, /* 408 */ - Tcl_ChannelGetHandleProc, /* 409 */ - Tcl_ChannelFlushProc, /* 410 */ - Tcl_ChannelHandlerProc, /* 411 */ - Tcl_JoinThread, /* 412 */ - Tcl_IsChannelShared, /* 413 */ - Tcl_IsChannelRegistered, /* 414 */ - Tcl_CutChannel, /* 415 */ - Tcl_SpliceChannel, /* 416 */ - Tcl_ClearChannelHandlers, /* 417 */ - Tcl_IsChannelExisting, /* 418 */ - Tcl_UniCharNcasecmp, /* 419 */ - Tcl_UniCharCaseMatch, /* 420 */ - Tcl_FindHashEntry, /* 421 */ - Tcl_CreateHashEntry, /* 422 */ - Tcl_InitCustomHashTable, /* 423 */ - Tcl_InitObjHashTable, /* 424 */ - Tcl_CommandTraceInfo, /* 425 */ - Tcl_TraceCommand, /* 426 */ - Tcl_UntraceCommand, /* 427 */ - Tcl_AttemptAlloc, /* 428 */ - Tcl_AttemptDbCkalloc, /* 429 */ - Tcl_AttemptRealloc, /* 430 */ - Tcl_AttemptDbCkrealloc, /* 431 */ - Tcl_AttemptSetObjLength, /* 432 */ - Tcl_GetChannelThread, /* 433 */ - Tcl_GetUnicodeFromObj, /* 434 */ - Tcl_GetMathFuncInfo, /* 435 */ - Tcl_ListMathFuncs, /* 436 */ - Tcl_SubstObj, /* 437 */ - Tcl_DetachChannel, /* 438 */ - Tcl_IsStandardChannel, /* 439 */ - Tcl_FSCopyFile, /* 440 */ - Tcl_FSCopyDirectory, /* 441 */ - Tcl_FSCreateDirectory, /* 442 */ - Tcl_FSDeleteFile, /* 443 */ - Tcl_FSLoadFile, /* 444 */ - Tcl_FSMatchInDirectory, /* 445 */ - Tcl_FSLink, /* 446 */ - Tcl_FSRemoveDirectory, /* 447 */ - Tcl_FSRenameFile, /* 448 */ - Tcl_FSLstat, /* 449 */ - Tcl_FSUtime, /* 450 */ - Tcl_FSFileAttrsGet, /* 451 */ - Tcl_FSFileAttrsSet, /* 452 */ - Tcl_FSFileAttrStrings, /* 453 */ - Tcl_FSStat, /* 454 */ - Tcl_FSAccess, /* 455 */ - Tcl_FSOpenFileChannel, /* 456 */ - Tcl_FSGetCwd, /* 457 */ - Tcl_FSChdir, /* 458 */ - Tcl_FSConvertToPathType, /* 459 */ - Tcl_FSJoinPath, /* 460 */ - Tcl_FSSplitPath, /* 461 */ - Tcl_FSEqualPaths, /* 462 */ - Tcl_FSGetNormalizedPath, /* 463 */ - Tcl_FSJoinToPath, /* 464 */ - Tcl_FSGetInternalRep, /* 465 */ - Tcl_FSGetTranslatedPath, /* 466 */ - Tcl_FSEvalFile, /* 467 */ - Tcl_FSNewNativePath, /* 468 */ - Tcl_FSGetNativePath, /* 469 */ - Tcl_FSFileSystemInfo, /* 470 */ - Tcl_FSPathSeparator, /* 471 */ - Tcl_FSListVolumes, /* 472 */ - Tcl_FSRegister, /* 473 */ - Tcl_FSUnregister, /* 474 */ - Tcl_FSData, /* 475 */ - Tcl_FSGetTranslatedStringPath, /* 476 */ - Tcl_FSGetFileSystemForPath, /* 477 */ - Tcl_FSGetPathType, /* 478 */ - Tcl_OutputBuffered, /* 479 */ - Tcl_FSMountsChanged, /* 480 */ - Tcl_EvalTokensStandard, /* 481 */ - Tcl_GetTime, /* 482 */ - Tcl_CreateObjTrace, /* 483 */ - Tcl_GetCommandInfoFromToken, /* 484 */ - Tcl_SetCommandInfoFromToken, /* 485 */ - Tcl_DbNewWideIntObj, /* 486 */ - Tcl_GetWideIntFromObj, /* 487 */ - Tcl_NewWideIntObj, /* 488 */ - Tcl_SetWideIntObj, /* 489 */ - Tcl_AllocStatBuf, /* 490 */ - Tcl_Seek, /* 491 */ - Tcl_Tell, /* 492 */ - Tcl_ChannelWideSeekProc, /* 493 */ -}; - -/* !END!: Do not edit above this line. */ +/* + * tclStubInit.c -- + * + * This file contains the initializers for the Tcl stub vectors. + * + * Copyright (c) 1998-1999 by Scriptics Corporation. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.7 2004/06/10 17:17:45 andreas_kupries Exp $ + */ + +#include "tclInt.h" +#include "tclPort.h" + +/* + * Remove macros that will interfere with the definitions below. + */ + +#undef Tcl_Alloc +#undef Tcl_Free +#undef Tcl_Realloc +#undef Tcl_NewBooleanObj +#undef Tcl_NewByteArrayObj +#undef Tcl_NewDoubleObj +#undef Tcl_NewIntObj +#undef Tcl_NewListObj +#undef Tcl_NewLongObj +#undef Tcl_NewObj +#undef Tcl_NewStringObj +#undef Tcl_DumpActiveMemory +#undef Tcl_ValidateAllMemory +#if TCL_PRESERVE_BINARY_COMPATABILITY +# undef Tcl_FindHashEntry +# undef Tcl_CreateHashEntry +#endif + +/* + * Keep a record of the original Notifier procedures, created in the + * same compilation unit as the stub tables so we can later do reliable, + * portable comparisons to see whether a Tcl_SetNotifier() call swapped + * new routines into the stub table. + */ + +Tcl_NotifierProcs tclOriginalNotifier = { + Tcl_SetTimer, + Tcl_WaitForEvent, +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_CreateFileHandler, + Tcl_DeleteFileHandler, +#else + NULL, + NULL, +#endif + NULL, + NULL, + NULL, + NULL +}; + +/* + * WARNING: The contents of this file is automatically generated by the + * tools/genStubs.tcl script. Any modifications to the function declarations + * below should be made in the generic/tcl.decls script. + */ + +/* !BEGIN!: Do not edit below this line. */ + +TclIntStubs tclIntStubs = { + TCL_STUB_MAGIC, + NULL, + NULL, /* 0 */ + TclAccessDeleteProc, /* 1 */ + TclAccessInsertProc, /* 2 */ + TclAllocateFreeObjects, /* 3 */ + NULL, /* 4 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclCleanupChildren, /* 5 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclCleanupChildren, /* 5 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 5 */ +#endif /* MAC_TCL */ + TclCleanupCommand, /* 6 */ + TclCopyAndCollapse, /* 7 */ + TclCopyChannel, /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclCreatePipeline, /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclCreatePipeline, /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 9 */ +#endif /* MAC_TCL */ + TclCreateProc, /* 10 */ + TclDeleteCompiledLocalVars, /* 11 */ + TclDeleteVars, /* 12 */ + TclDoGlob, /* 13 */ + TclDumpMemoryInfo, /* 14 */ + NULL, /* 15 */ + TclExprFloatError, /* 16 */ + NULL, /* 17 */ + NULL, /* 18 */ + NULL, /* 19 */ + NULL, /* 20 */ + NULL, /* 21 */ + TclFindElement, /* 22 */ + TclFindProc, /* 23 */ + TclFormatInt, /* 24 */ + TclFreePackageInfo, /* 25 */ + NULL, /* 26 */ + TclGetDate, /* 27 */ + TclpGetDefaultStdChannel, /* 28 */ + NULL, /* 29 */ + NULL, /* 30 */ + TclGetExtension, /* 31 */ + TclGetFrame, /* 32 */ + TclGetInterpProc, /* 33 */ + TclGetIntForIndex, /* 34 */ + NULL, /* 35 */ + TclGetLong, /* 36 */ + TclGetLoadedPackages, /* 37 */ + TclGetNamespaceForQualName, /* 38 */ + TclGetObjInterpProc, /* 39 */ + TclGetOpenMode, /* 40 */ + TclGetOriginalCommand, /* 41 */ + TclpGetUserHome, /* 42 */ + TclGlobalInvoke, /* 43 */ + TclGuessPackageName, /* 44 */ + TclHideUnsafeCommands, /* 45 */ + TclInExit, /* 46 */ + NULL, /* 47 */ + NULL, /* 48 */ + TclIncrVar2, /* 49 */ + TclInitCompiledLocals, /* 50 */ + TclInterpInit, /* 51 */ + TclInvoke, /* 52 */ + TclInvokeObjectCommand, /* 53 */ + TclInvokeStringCommand, /* 54 */ + TclIsProc, /* 55 */ + NULL, /* 56 */ + NULL, /* 57 */ + TclLookupVar, /* 58 */ + NULL, /* 59 */ + TclNeedSpace, /* 60 */ + TclNewProcBodyObj, /* 61 */ + TclObjCommandComplete, /* 62 */ + TclObjInterpProc, /* 63 */ + TclObjInvoke, /* 64 */ + TclObjInvokeGlobal, /* 65 */ + TclOpenFileChannelDeleteProc, /* 66 */ + TclOpenFileChannelInsertProc, /* 67 */ + NULL, /* 68 */ + TclpAlloc, /* 69 */ + NULL, /* 70 */ + NULL, /* 71 */ + NULL, /* 72 */ + NULL, /* 73 */ + TclpFree, /* 74 */ + TclpGetClicks, /* 75 */ + TclpGetSeconds, /* 76 */ + TclpGetTime, /* 77 */ + TclpGetTimeZone, /* 78 */ + NULL, /* 79 */ + NULL, /* 80 */ + TclpRealloc, /* 81 */ + NULL, /* 82 */ + NULL, /* 83 */ + NULL, /* 84 */ + NULL, /* 85 */ + NULL, /* 86 */ + NULL, /* 87 */ + TclPrecTraceProc, /* 88 */ + TclPreventAliasLoop, /* 89 */ + NULL, /* 90 */ + TclProcCleanupProc, /* 91 */ + TclProcCompileProc, /* 92 */ + TclProcDeleteProc, /* 93 */ + TclProcInterpProc, /* 94 */ + NULL, /* 95 */ + TclRenameCommand, /* 96 */ + TclResetShadowedCmdRefs, /* 97 */ + TclServiceIdle, /* 98 */ + NULL, /* 99 */ + NULL, /* 100 */ + TclSetPreInitScript, /* 101 */ + TclSetupEnv, /* 102 */ + TclSockGetPort, /* 103 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclSockMinimumBuffers, /* 104 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclSockMinimumBuffers, /* 104 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 104 */ +#endif /* MAC_TCL */ + NULL, /* 105 */ + TclStatDeleteProc, /* 106 */ + TclStatInsertProc, /* 107 */ + TclTeardownNamespace, /* 108 */ + TclUpdateReturnInfo, /* 109 */ + NULL, /* 110 */ + Tcl_AddInterpResolvers, /* 111 */ + Tcl_AppendExportList, /* 112 */ + Tcl_CreateNamespace, /* 113 */ + Tcl_DeleteNamespace, /* 114 */ + Tcl_Export, /* 115 */ + Tcl_FindCommand, /* 116 */ + Tcl_FindNamespace, /* 117 */ + Tcl_GetInterpResolvers, /* 118 */ + Tcl_GetNamespaceResolvers, /* 119 */ + Tcl_FindNamespaceVar, /* 120 */ + Tcl_ForgetImport, /* 121 */ + Tcl_GetCommandFromObj, /* 122 */ + Tcl_GetCommandFullName, /* 123 */ + Tcl_GetCurrentNamespace, /* 124 */ + Tcl_GetGlobalNamespace, /* 125 */ + Tcl_GetVariableFullName, /* 126 */ + Tcl_Import, /* 127 */ + Tcl_PopCallFrame, /* 128 */ + Tcl_PushCallFrame, /* 129 */ + Tcl_RemoveInterpResolvers, /* 130 */ + Tcl_SetNamespaceResolvers, /* 131 */ + TclpHasSockets, /* 132 */ + TclpGetDate, /* 133 */ + TclpStrftime, /* 134 */ + TclpCheckStackSpace, /* 135 */ + NULL, /* 136 */ + NULL, /* 137 */ + TclGetEnv, /* 138 */ + NULL, /* 139 */ + TclLooksLikeInt, /* 140 */ + TclpGetCwd, /* 141 */ + TclSetByteCodeFromAny, /* 142 */ + TclAddLiteralObj, /* 143 */ + TclHideLiteral, /* 144 */ + TclGetAuxDataType, /* 145 */ + TclHandleCreate, /* 146 */ + TclHandleFree, /* 147 */ + TclHandlePreserve, /* 148 */ + TclHandleRelease, /* 149 */ + TclRegAbout, /* 150 */ + TclRegExpRangeUniChar, /* 151 */ + TclSetLibraryPath, /* 152 */ + TclGetLibraryPath, /* 153 */ + NULL, /* 154 */ + NULL, /* 155 */ + TclRegError, /* 156 */ + TclVarTraceExists, /* 157 */ + TclSetStartupScriptFileName, /* 158 */ + TclGetStartupScriptFileName, /* 159 */ + NULL, /* 160 */ + TclChannelTransform, /* 161 */ + TclChannelEventScriptInvoker, /* 162 */ + TclGetInstructionTable, /* 163 */ + TclExpandCodeArray, /* 164 */ + TclpSetInitialEncodings, /* 165 */ + TclListObjSetElement, /* 166 */ + TclSetStartupScriptPath, /* 167 */ + TclGetStartupScriptPath, /* 168 */ + TclpUtfNcmp2, /* 169 */ + TclCheckInterpTraces, /* 170 */ + TclCheckExecutionTraces, /* 171 */ + TclInThreadExit, /* 172 */ + TclUniCharMatch, /* 173 */ + NULL, /* 174 */ + NULL, /* 175 */ + NULL, /* 176 */ + NULL, /* 177 */ + NULL, /* 178 */ + NULL, /* 179 */ + NULL, /* 180 */ + NULL, /* 181 */ + TclpLocaltime, /* 182 */ + TclpGmtime, /* 183 */ +}; + +TclIntPlatStubs tclIntPlatStubs = { + TCL_STUB_MAGIC, + NULL, +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + TclGetAndDetachPids, /* 0 */ + TclpCloseFile, /* 1 */ + TclpCreateCommandChannel, /* 2 */ + TclpCreatePipe, /* 3 */ + TclpCreateProcess, /* 4 */ + NULL, /* 5 */ + TclpMakeFile, /* 6 */ + TclpOpenFile, /* 7 */ + TclUnixWaitForFile, /* 8 */ + TclpCreateTempFile, /* 9 */ + TclpReaddir, /* 10 */ + TclpLocaltime_unix, /* 11 */ + TclpGmtime_unix, /* 12 */ + TclpInetNtoa, /* 13 */ +#endif /* UNIX */ +#ifdef __WIN32__ + TclWinConvertError, /* 0 */ + TclWinConvertWSAError, /* 1 */ + TclWinGetServByName, /* 2 */ + TclWinGetSockOpt, /* 3 */ + TclWinGetTclInstance, /* 4 */ + NULL, /* 5 */ + TclWinNToHS, /* 6 */ + TclWinSetSockOpt, /* 7 */ + TclpGetPid, /* 8 */ + TclWinGetPlatformId, /* 9 */ + NULL, /* 10 */ + TclGetAndDetachPids, /* 11 */ + TclpCloseFile, /* 12 */ + TclpCreateCommandChannel, /* 13 */ + TclpCreatePipe, /* 14 */ + TclpCreateProcess, /* 15 */ + NULL, /* 16 */ + NULL, /* 17 */ + TclpMakeFile, /* 18 */ + TclpOpenFile, /* 19 */ + TclWinAddProcess, /* 20 */ + NULL, /* 21 */ + TclpCreateTempFile, /* 22 */ + TclpGetTZName, /* 23 */ + TclWinNoBackslash, /* 24 */ + TclWinGetPlatform, /* 25 */ + TclWinSetInterfaces, /* 26 */ + TclWinFlushDirtyChannels, /* 27 */ + TclWinResetInterfaces, /* 28 */ + TclWinCPUID, /* 29 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + TclpSysAlloc, /* 0 */ + TclpSysFree, /* 1 */ + TclpSysRealloc, /* 2 */ + TclpExit, /* 3 */ + FSpGetDefaultDir, /* 4 */ + FSpSetDefaultDir, /* 5 */ + FSpFindFolder, /* 6 */ + GetGlobalMouseTcl, /* 7 */ + FSpGetDirectoryIDTcl, /* 8 */ + FSpOpenResFileCompatTcl, /* 9 */ + FSpCreateResFileCompatTcl, /* 10 */ + FSpLocationFromPath, /* 11 */ + FSpPathFromLocation, /* 12 */ + TclMacExitHandler, /* 13 */ + TclMacInitExitToShell, /* 14 */ + TclMacInstallExitToShellPatch, /* 15 */ + TclMacOSErrorToPosixError, /* 16 */ + TclMacRemoveTimer, /* 17 */ + TclMacStartTimer, /* 18 */ + TclMacTimerExpired, /* 19 */ + TclMacRegisterResourceFork, /* 20 */ + TclMacUnRegisterResourceFork, /* 21 */ + TclMacCreateEnv, /* 22 */ + TclMacFOpenHack, /* 23 */ + TclpGetTZName, /* 24 */ + TclMacChmod, /* 25 */ + FSpLLocationFromPath, /* 26 */ +#endif /* MAC_TCL */ +}; + +TclPlatStubs tclPlatStubs = { + TCL_STUB_MAGIC, + NULL, +#ifdef __WIN32__ + Tcl_WinUtfToTChar, /* 0 */ + Tcl_WinTCharToUtf, /* 1 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + Tcl_MacSetEventProc, /* 0 */ + Tcl_MacConvertTextResource, /* 1 */ + Tcl_MacEvalResource, /* 2 */ + Tcl_MacFindResource, /* 3 */ + Tcl_GetOSTypeFromObj, /* 4 */ + Tcl_SetOSTypeObj, /* 5 */ + Tcl_NewOSTypeObj, /* 6 */ + strncasecmp, /* 7 */ + strcasecmp, /* 8 */ +#endif /* MAC_TCL */ +#ifdef MAC_OSX_TCL + Tcl_MacOSXOpenBundleResources, /* 0 */ + Tcl_MacOSXOpenVersionedBundleResources, /* 1 */ +#endif /* MAC_OSX_TCL */ +}; + +static TclStubHooks tclStubHooks = { + &tclPlatStubs, + &tclIntStubs, + &tclIntPlatStubs +}; + +TclStubs tclStubs = { + TCL_STUB_MAGIC, + &tclStubHooks, + Tcl_PkgProvideEx, /* 0 */ + Tcl_PkgRequireEx, /* 1 */ + Tcl_Panic, /* 2 */ + Tcl_Alloc, /* 3 */ + Tcl_Free, /* 4 */ + Tcl_Realloc, /* 5 */ + Tcl_DbCkalloc, /* 6 */ + Tcl_DbCkfree, /* 7 */ + Tcl_DbCkrealloc, /* 8 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_CreateFileHandler, /* 9 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 9 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 9 */ +#endif /* MAC_TCL */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_DeleteFileHandler, /* 10 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 10 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 10 */ +#endif /* MAC_TCL */ + Tcl_SetTimer, /* 11 */ + Tcl_Sleep, /* 12 */ + Tcl_WaitForEvent, /* 13 */ + Tcl_AppendAllObjTypes, /* 14 */ + Tcl_AppendStringsToObj, /* 15 */ + Tcl_AppendToObj, /* 16 */ + Tcl_ConcatObj, /* 17 */ + Tcl_ConvertToType, /* 18 */ + Tcl_DbDecrRefCount, /* 19 */ + Tcl_DbIncrRefCount, /* 20 */ + Tcl_DbIsShared, /* 21 */ + Tcl_DbNewBooleanObj, /* 22 */ + Tcl_DbNewByteArrayObj, /* 23 */ + Tcl_DbNewDoubleObj, /* 24 */ + Tcl_DbNewListObj, /* 25 */ + Tcl_DbNewLongObj, /* 26 */ + Tcl_DbNewObj, /* 27 */ + Tcl_DbNewStringObj, /* 28 */ + Tcl_DuplicateObj, /* 29 */ + TclFreeObj, /* 30 */ + Tcl_GetBoolean, /* 31 */ + Tcl_GetBooleanFromObj, /* 32 */ + Tcl_GetByteArrayFromObj, /* 33 */ + Tcl_GetDouble, /* 34 */ + Tcl_GetDoubleFromObj, /* 35 */ + Tcl_GetIndexFromObj, /* 36 */ + Tcl_GetInt, /* 37 */ + Tcl_GetIntFromObj, /* 38 */ + Tcl_GetLongFromObj, /* 39 */ + Tcl_GetObjType, /* 40 */ + Tcl_GetStringFromObj, /* 41 */ + Tcl_InvalidateStringRep, /* 42 */ + Tcl_ListObjAppendList, /* 43 */ + Tcl_ListObjAppendElement, /* 44 */ + Tcl_ListObjGetElements, /* 45 */ + Tcl_ListObjIndex, /* 46 */ + Tcl_ListObjLength, /* 47 */ + Tcl_ListObjReplace, /* 48 */ + Tcl_NewBooleanObj, /* 49 */ + Tcl_NewByteArrayObj, /* 50 */ + Tcl_NewDoubleObj, /* 51 */ + Tcl_NewIntObj, /* 52 */ + Tcl_NewListObj, /* 53 */ + Tcl_NewLongObj, /* 54 */ + Tcl_NewObj, /* 55 */ + Tcl_NewStringObj, /* 56 */ + Tcl_SetBooleanObj, /* 57 */ + Tcl_SetByteArrayLength, /* 58 */ + Tcl_SetByteArrayObj, /* 59 */ + Tcl_SetDoubleObj, /* 60 */ + Tcl_SetIntObj, /* 61 */ + Tcl_SetListObj, /* 62 */ + Tcl_SetLongObj, /* 63 */ + Tcl_SetObjLength, /* 64 */ + Tcl_SetStringObj, /* 65 */ + Tcl_AddErrorInfo, /* 66 */ + Tcl_AddObjErrorInfo, /* 67 */ + Tcl_AllowExceptions, /* 68 */ + Tcl_AppendElement, /* 69 */ + Tcl_AppendResult, /* 70 */ + Tcl_AsyncCreate, /* 71 */ + Tcl_AsyncDelete, /* 72 */ + Tcl_AsyncInvoke, /* 73 */ + Tcl_AsyncMark, /* 74 */ + Tcl_AsyncReady, /* 75 */ + Tcl_BackgroundError, /* 76 */ + Tcl_Backslash, /* 77 */ + Tcl_BadChannelOption, /* 78 */ + Tcl_CallWhenDeleted, /* 79 */ + Tcl_CancelIdleCall, /* 80 */ + Tcl_Close, /* 81 */ + Tcl_CommandComplete, /* 82 */ + Tcl_Concat, /* 83 */ + Tcl_ConvertElement, /* 84 */ + Tcl_ConvertCountedElement, /* 85 */ + Tcl_CreateAlias, /* 86 */ + Tcl_CreateAliasObj, /* 87 */ + Tcl_CreateChannel, /* 88 */ + Tcl_CreateChannelHandler, /* 89 */ + Tcl_CreateCloseHandler, /* 90 */ + Tcl_CreateCommand, /* 91 */ + Tcl_CreateEventSource, /* 92 */ + Tcl_CreateExitHandler, /* 93 */ + Tcl_CreateInterp, /* 94 */ + Tcl_CreateMathFunc, /* 95 */ + Tcl_CreateObjCommand, /* 96 */ + Tcl_CreateSlave, /* 97 */ + Tcl_CreateTimerHandler, /* 98 */ + Tcl_CreateTrace, /* 99 */ + Tcl_DeleteAssocData, /* 100 */ + Tcl_DeleteChannelHandler, /* 101 */ + Tcl_DeleteCloseHandler, /* 102 */ + Tcl_DeleteCommand, /* 103 */ + Tcl_DeleteCommandFromToken, /* 104 */ + Tcl_DeleteEvents, /* 105 */ + Tcl_DeleteEventSource, /* 106 */ + Tcl_DeleteExitHandler, /* 107 */ + Tcl_DeleteHashEntry, /* 108 */ + Tcl_DeleteHashTable, /* 109 */ + Tcl_DeleteInterp, /* 110 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_DetachPids, /* 111 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_DetachPids, /* 111 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 111 */ +#endif /* MAC_TCL */ + Tcl_DeleteTimerHandler, /* 112 */ + Tcl_DeleteTrace, /* 113 */ + Tcl_DontCallWhenDeleted, /* 114 */ + Tcl_DoOneEvent, /* 115 */ + Tcl_DoWhenIdle, /* 116 */ + Tcl_DStringAppend, /* 117 */ + Tcl_DStringAppendElement, /* 118 */ + Tcl_DStringEndSublist, /* 119 */ + Tcl_DStringFree, /* 120 */ + Tcl_DStringGetResult, /* 121 */ + Tcl_DStringInit, /* 122 */ + Tcl_DStringResult, /* 123 */ + Tcl_DStringSetLength, /* 124 */ + Tcl_DStringStartSublist, /* 125 */ + Tcl_Eof, /* 126 */ + Tcl_ErrnoId, /* 127 */ + Tcl_ErrnoMsg, /* 128 */ + Tcl_Eval, /* 129 */ + Tcl_EvalFile, /* 130 */ + Tcl_EvalObj, /* 131 */ + Tcl_EventuallyFree, /* 132 */ + Tcl_Exit, /* 133 */ + Tcl_ExposeCommand, /* 134 */ + Tcl_ExprBoolean, /* 135 */ + Tcl_ExprBooleanObj, /* 136 */ + Tcl_ExprDouble, /* 137 */ + Tcl_ExprDoubleObj, /* 138 */ + Tcl_ExprLong, /* 139 */ + Tcl_ExprLongObj, /* 140 */ + Tcl_ExprObj, /* 141 */ + Tcl_ExprString, /* 142 */ + Tcl_Finalize, /* 143 */ + Tcl_FindExecutable, /* 144 */ + Tcl_FirstHashEntry, /* 145 */ + Tcl_Flush, /* 146 */ + Tcl_FreeResult, /* 147 */ + Tcl_GetAlias, /* 148 */ + Tcl_GetAliasObj, /* 149 */ + Tcl_GetAssocData, /* 150 */ + Tcl_GetChannel, /* 151 */ + Tcl_GetChannelBufferSize, /* 152 */ + Tcl_GetChannelHandle, /* 153 */ + Tcl_GetChannelInstanceData, /* 154 */ + Tcl_GetChannelMode, /* 155 */ + Tcl_GetChannelName, /* 156 */ + Tcl_GetChannelOption, /* 157 */ + Tcl_GetChannelType, /* 158 */ + Tcl_GetCommandInfo, /* 159 */ + Tcl_GetCommandName, /* 160 */ + Tcl_GetErrno, /* 161 */ + Tcl_GetHostName, /* 162 */ + Tcl_GetInterpPath, /* 163 */ + Tcl_GetMaster, /* 164 */ + Tcl_GetNameOfExecutable, /* 165 */ + Tcl_GetObjResult, /* 166 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_GetOpenFile, /* 167 */ +#endif /* UNIX */ +#ifdef __WIN32__ + NULL, /* 167 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 167 */ +#endif /* MAC_TCL */ + Tcl_GetPathType, /* 168 */ + Tcl_Gets, /* 169 */ + Tcl_GetsObj, /* 170 */ + Tcl_GetServiceMode, /* 171 */ + Tcl_GetSlave, /* 172 */ + Tcl_GetStdChannel, /* 173 */ + Tcl_GetStringResult, /* 174 */ + Tcl_GetVar, /* 175 */ + Tcl_GetVar2, /* 176 */ + Tcl_GlobalEval, /* 177 */ + Tcl_GlobalEvalObj, /* 178 */ + Tcl_HideCommand, /* 179 */ + Tcl_Init, /* 180 */ + Tcl_InitHashTable, /* 181 */ + Tcl_InputBlocked, /* 182 */ + Tcl_InputBuffered, /* 183 */ + Tcl_InterpDeleted, /* 184 */ + Tcl_IsSafe, /* 185 */ + Tcl_JoinPath, /* 186 */ + Tcl_LinkVar, /* 187 */ + NULL, /* 188 */ + Tcl_MakeFileChannel, /* 189 */ + Tcl_MakeSafe, /* 190 */ + Tcl_MakeTcpClientChannel, /* 191 */ + Tcl_Merge, /* 192 */ + Tcl_NextHashEntry, /* 193 */ + Tcl_NotifyChannel, /* 194 */ + Tcl_ObjGetVar2, /* 195 */ + Tcl_ObjSetVar2, /* 196 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_OpenCommandChannel, /* 197 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_OpenCommandChannel, /* 197 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 197 */ +#endif /* MAC_TCL */ + Tcl_OpenFileChannel, /* 198 */ + Tcl_OpenTcpClient, /* 199 */ + Tcl_OpenTcpServer, /* 200 */ + Tcl_Preserve, /* 201 */ + Tcl_PrintDouble, /* 202 */ + Tcl_PutEnv, /* 203 */ + Tcl_PosixError, /* 204 */ + Tcl_QueueEvent, /* 205 */ + Tcl_Read, /* 206 */ +#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ + Tcl_ReapDetachedProcs, /* 207 */ +#endif /* UNIX */ +#ifdef __WIN32__ + Tcl_ReapDetachedProcs, /* 207 */ +#endif /* __WIN32__ */ +#ifdef MAC_TCL + NULL, /* 207 */ +#endif /* MAC_TCL */ + Tcl_RecordAndEval, /* 208 */ + Tcl_RecordAndEvalObj, /* 209 */ + Tcl_RegisterChannel, /* 210 */ + Tcl_RegisterObjType, /* 211 */ + Tcl_RegExpCompile, /* 212 */ + Tcl_RegExpExec, /* 213 */ + Tcl_RegExpMatch, /* 214 */ + Tcl_RegExpRange, /* 215 */ + Tcl_Release, /* 216 */ + Tcl_ResetResult, /* 217 */ + Tcl_ScanElement, /* 218 */ + Tcl_ScanCountedElement, /* 219 */ + Tcl_SeekOld, /* 220 */ + Tcl_ServiceAll, /* 221 */ + Tcl_ServiceEvent, /* 222 */ + Tcl_SetAssocData, /* 223 */ + Tcl_SetChannelBufferSize, /* 224 */ + Tcl_SetChannelOption, /* 225 */ + Tcl_SetCommandInfo, /* 226 */ + Tcl_SetErrno, /* 227 */ + Tcl_SetErrorCode, /* 228 */ + Tcl_SetMaxBlockTime, /* 229 */ + Tcl_SetPanicProc, /* 230 */ + Tcl_SetRecursionLimit, /* 231 */ + Tcl_SetResult, /* 232 */ + Tcl_SetServiceMode, /* 233 */ + Tcl_SetObjErrorCode, /* 234 */ + Tcl_SetObjResult, /* 235 */ + Tcl_SetStdChannel, /* 236 */ + Tcl_SetVar, /* 237 */ + Tcl_SetVar2, /* 238 */ + Tcl_SignalId, /* 239 */ + Tcl_SignalMsg, /* 240 */ + Tcl_SourceRCFile, /* 241 */ + Tcl_SplitList, /* 242 */ + Tcl_SplitPath, /* 243 */ + Tcl_StaticPackage, /* 244 */ + Tcl_StringMatch, /* 245 */ + Tcl_TellOld, /* 246 */ + Tcl_TraceVar, /* 247 */ + Tcl_TraceVar2, /* 248 */ + Tcl_TranslateFileName, /* 249 */ + Tcl_Ungets, /* 250 */ + Tcl_UnlinkVar, /* 251 */ + Tcl_UnregisterChannel, /* 252 */ + Tcl_UnsetVar, /* 253 */ + Tcl_UnsetVar2, /* 254 */ + Tcl_UntraceVar, /* 255 */ + Tcl_UntraceVar2, /* 256 */ + Tcl_UpdateLinkedVar, /* 257 */ + Tcl_UpVar, /* 258 */ + Tcl_UpVar2, /* 259 */ + Tcl_VarEval, /* 260 */ + Tcl_VarTraceInfo, /* 261 */ + Tcl_VarTraceInfo2, /* 262 */ + Tcl_Write, /* 263 */ + Tcl_WrongNumArgs, /* 264 */ + Tcl_DumpActiveMemory, /* 265 */ + Tcl_ValidateAllMemory, /* 266 */ + Tcl_AppendResultVA, /* 267 */ + Tcl_AppendStringsToObjVA, /* 268 */ + Tcl_HashStats, /* 269 */ + Tcl_ParseVar, /* 270 */ + Tcl_PkgPresent, /* 271 */ + Tcl_PkgPresentEx, /* 272 */ + Tcl_PkgProvide, /* 273 */ + Tcl_PkgRequire, /* 274 */ + Tcl_SetErrorCodeVA, /* 275 */ + Tcl_VarEvalVA, /* 276 */ + Tcl_WaitPid, /* 277 */ + Tcl_PanicVA, /* 278 */ + Tcl_GetVersion, /* 279 */ + Tcl_InitMemory, /* 280 */ + Tcl_StackChannel, /* 281 */ + Tcl_UnstackChannel, /* 282 */ + Tcl_GetStackedChannel, /* 283 */ + Tcl_SetMainLoop, /* 284 */ + NULL, /* 285 */ + Tcl_AppendObjToObj, /* 286 */ + Tcl_CreateEncoding, /* 287 */ + Tcl_CreateThreadExitHandler, /* 288 */ + Tcl_DeleteThreadExitHandler, /* 289 */ + Tcl_DiscardResult, /* 290 */ + Tcl_EvalEx, /* 291 */ + Tcl_EvalObjv, /* 292 */ + Tcl_EvalObjEx, /* 293 */ + Tcl_ExitThread, /* 294 */ + Tcl_ExternalToUtf, /* 295 */ + Tcl_ExternalToUtfDString, /* 296 */ + Tcl_FinalizeThread, /* 297 */ + Tcl_FinalizeNotifier, /* 298 */ + Tcl_FreeEncoding, /* 299 */ + Tcl_GetCurrentThread, /* 300 */ + Tcl_GetEncoding, /* 301 */ + Tcl_GetEncodingName, /* 302 */ + Tcl_GetEncodingNames, /* 303 */ + Tcl_GetIndexFromObjStruct, /* 304 */ + Tcl_GetThreadData, /* 305 */ + Tcl_GetVar2Ex, /* 306 */ + Tcl_InitNotifier, /* 307 */ + Tcl_MutexLock, /* 308 */ + Tcl_MutexUnlock, /* 309 */ + Tcl_ConditionNotify, /* 310 */ + Tcl_ConditionWait, /* 311 */ + Tcl_NumUtfChars, /* 312 */ + Tcl_ReadChars, /* 313 */ + Tcl_RestoreResult, /* 314 */ + Tcl_SaveResult, /* 315 */ + Tcl_SetSystemEncoding, /* 316 */ + Tcl_SetVar2Ex, /* 317 */ + Tcl_ThreadAlert, /* 318 */ + Tcl_ThreadQueueEvent, /* 319 */ + Tcl_UniCharAtIndex, /* 320 */ + Tcl_UniCharToLower, /* 321 */ + Tcl_UniCharToTitle, /* 322 */ + Tcl_UniCharToUpper, /* 323 */ + Tcl_UniCharToUtf, /* 324 */ + Tcl_UtfAtIndex, /* 325 */ + Tcl_UtfCharComplete, /* 326 */ + Tcl_UtfBackslash, /* 327 */ + Tcl_UtfFindFirst, /* 328 */ + Tcl_UtfFindLast, /* 329 */ + Tcl_UtfNext, /* 330 */ + Tcl_UtfPrev, /* 331 */ + Tcl_UtfToExternal, /* 332 */ + Tcl_UtfToExternalDString, /* 333 */ + Tcl_UtfToLower, /* 334 */ + Tcl_UtfToTitle, /* 335 */ + Tcl_UtfToUniChar, /* 336 */ + Tcl_UtfToUpper, /* 337 */ + Tcl_WriteChars, /* 338 */ + Tcl_WriteObj, /* 339 */ + Tcl_GetString, /* 340 */ + Tcl_GetDefaultEncodingDir, /* 341 */ + Tcl_SetDefaultEncodingDir, /* 342 */ + Tcl_AlertNotifier, /* 343 */ + Tcl_ServiceModeHook, /* 344 */ + Tcl_UniCharIsAlnum, /* 345 */ + Tcl_UniCharIsAlpha, /* 346 */ + Tcl_UniCharIsDigit, /* 347 */ + Tcl_UniCharIsLower, /* 348 */ + Tcl_UniCharIsSpace, /* 349 */ + Tcl_UniCharIsUpper, /* 350 */ + Tcl_UniCharIsWordChar, /* 351 */ + Tcl_UniCharLen, /* 352 */ + Tcl_UniCharNcmp, /* 353 */ + Tcl_UniCharToUtfDString, /* 354 */ + Tcl_UtfToUniCharDString, /* 355 */ + Tcl_GetRegExpFromObj, /* 356 */ + Tcl_EvalTokens, /* 357 */ + Tcl_FreeParse, /* 358 */ + Tcl_LogCommandInfo, /* 359 */ + Tcl_ParseBraces, /* 360 */ + Tcl_ParseCommand, /* 361 */ + Tcl_ParseExpr, /* 362 */ + Tcl_ParseQuotedString, /* 363 */ + Tcl_ParseVarName, /* 364 */ + Tcl_GetCwd, /* 365 */ + Tcl_Chdir, /* 366 */ + Tcl_Access, /* 367 */ + Tcl_Stat, /* 368 */ + Tcl_UtfNcmp, /* 369 */ + Tcl_UtfNcasecmp, /* 370 */ + Tcl_StringCaseMatch, /* 371 */ + Tcl_UniCharIsControl, /* 372 */ + Tcl_UniCharIsGraph, /* 373 */ + Tcl_UniCharIsPrint, /* 374 */ + Tcl_UniCharIsPunct, /* 375 */ + Tcl_RegExpExecObj, /* 376 */ + Tcl_RegExpGetInfo, /* 377 */ + Tcl_NewUnicodeObj, /* 378 */ + Tcl_SetUnicodeObj, /* 379 */ + Tcl_GetCharLength, /* 380 */ + Tcl_GetUniChar, /* 381 */ + Tcl_GetUnicode, /* 382 */ + Tcl_GetRange, /* 383 */ + Tcl_AppendUnicodeToObj, /* 384 */ + Tcl_RegExpMatchObj, /* 385 */ + Tcl_SetNotifier, /* 386 */ + Tcl_GetAllocMutex, /* 387 */ + Tcl_GetChannelNames, /* 388 */ + Tcl_GetChannelNamesEx, /* 389 */ + Tcl_ProcObjCmd, /* 390 */ + Tcl_ConditionFinalize, /* 391 */ + Tcl_MutexFinalize, /* 392 */ + Tcl_CreateThread, /* 393 */ + Tcl_ReadRaw, /* 394 */ + Tcl_WriteRaw, /* 395 */ + Tcl_GetTopChannel, /* 396 */ + Tcl_ChannelBuffered, /* 397 */ + Tcl_ChannelName, /* 398 */ + Tcl_ChannelVersion, /* 399 */ + Tcl_ChannelBlockModeProc, /* 400 */ + Tcl_ChannelCloseProc, /* 401 */ + Tcl_ChannelClose2Proc, /* 402 */ + Tcl_ChannelInputProc, /* 403 */ + Tcl_ChannelOutputProc, /* 404 */ + Tcl_ChannelSeekProc, /* 405 */ + Tcl_ChannelSetOptionProc, /* 406 */ + Tcl_ChannelGetOptionProc, /* 407 */ + Tcl_ChannelWatchProc, /* 408 */ + Tcl_ChannelGetHandleProc, /* 409 */ + Tcl_ChannelFlushProc, /* 410 */ + Tcl_ChannelHandlerProc, /* 411 */ + Tcl_JoinThread, /* 412 */ + Tcl_IsChannelShared, /* 413 */ + Tcl_IsChannelRegistered, /* 414 */ + Tcl_CutChannel, /* 415 */ + Tcl_SpliceChannel, /* 416 */ + Tcl_ClearChannelHandlers, /* 417 */ + Tcl_IsChannelExisting, /* 418 */ + Tcl_UniCharNcasecmp, /* 419 */ + Tcl_UniCharCaseMatch, /* 420 */ + Tcl_FindHashEntry, /* 421 */ + Tcl_CreateHashEntry, /* 422 */ + Tcl_InitCustomHashTable, /* 423 */ + Tcl_InitObjHashTable, /* 424 */ + Tcl_CommandTraceInfo, /* 425 */ + Tcl_TraceCommand, /* 426 */ + Tcl_UntraceCommand, /* 427 */ + Tcl_AttemptAlloc, /* 428 */ + Tcl_AttemptDbCkalloc, /* 429 */ + Tcl_AttemptRealloc, /* 430 */ + Tcl_AttemptDbCkrealloc, /* 431 */ + Tcl_AttemptSetObjLength, /* 432 */ + Tcl_GetChannelThread, /* 433 */ + Tcl_GetUnicodeFromObj, /* 434 */ + Tcl_GetMathFuncInfo, /* 435 */ + Tcl_ListMathFuncs, /* 436 */ + Tcl_SubstObj, /* 437 */ + Tcl_DetachChannel, /* 438 */ + Tcl_IsStandardChannel, /* 439 */ + Tcl_FSCopyFile, /* 440 */ + Tcl_FSCopyDirectory, /* 441 */ + Tcl_FSCreateDirectory, /* 442 */ + Tcl_FSDeleteFile, /* 443 */ + Tcl_FSLoadFile, /* 444 */ + Tcl_FSMatchInDirectory, /* 445 */ + Tcl_FSLink, /* 446 */ + Tcl_FSRemoveDirectory, /* 447 */ + Tcl_FSRenameFile, /* 448 */ + Tcl_FSLstat, /* 449 */ + Tcl_FSUtime, /* 450 */ + Tcl_FSFileAttrsGet, /* 451 */ + Tcl_FSFileAttrsSet, /* 452 */ + Tcl_FSFileAttrStrings, /* 453 */ + Tcl_FSStat, /* 454 */ + Tcl_FSAccess, /* 455 */ + Tcl_FSOpenFileChannel, /* 456 */ + Tcl_FSGetCwd, /* 457 */ + Tcl_FSChdir, /* 458 */ + Tcl_FSConvertToPathType, /* 459 */ + Tcl_FSJoinPath, /* 460 */ + Tcl_FSSplitPath, /* 461 */ + Tcl_FSEqualPaths, /* 462 */ + Tcl_FSGetNormalizedPath, /* 463 */ + Tcl_FSJoinToPath, /* 464 */ + Tcl_FSGetInternalRep, /* 465 */ + Tcl_FSGetTranslatedPath, /* 466 */ + Tcl_FSEvalFile, /* 467 */ + Tcl_FSNewNativePath, /* 468 */ + Tcl_FSGetNativePath, /* 469 */ + Tcl_FSFileSystemInfo, /* 470 */ + Tcl_FSPathSeparator, /* 471 */ + Tcl_FSListVolumes, /* 472 */ + Tcl_FSRegister, /* 473 */ + Tcl_FSUnregister, /* 474 */ + Tcl_FSData, /* 475 */ + Tcl_FSGetTranslatedStringPath, /* 476 */ + Tcl_FSGetFileSystemForPath, /* 477 */ + Tcl_FSGetPathType, /* 478 */ + Tcl_OutputBuffered, /* 479 */ + Tcl_FSMountsChanged, /* 480 */ + Tcl_EvalTokensStandard, /* 481 */ + Tcl_GetTime, /* 482 */ + Tcl_CreateObjTrace, /* 483 */ + Tcl_GetCommandInfoFromToken, /* 484 */ + Tcl_SetCommandInfoFromToken, /* 485 */ + Tcl_DbNewWideIntObj, /* 486 */ + Tcl_GetWideIntFromObj, /* 487 */ + Tcl_NewWideIntObj, /* 488 */ + Tcl_SetWideIntObj, /* 489 */ + Tcl_AllocStatBuf, /* 490 */ + Tcl_Seek, /* 491 */ + Tcl_Tell, /* 492 */ + Tcl_ChannelWideSeekProc, /* 493 */ +}; + +/* !END!: Do not edit above this line. */ -- cgit v0.12 From 7ada94b3ede6a4073f4420a8b21ff0160faaf935 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Mon, 14 Jun 2004 15:22:37 +0000 Subject: * win/tclWinDde.c: Backported the fix from 8.5 to avoid hanging in the presence of applications that dont process Window messages. --- ChangeLog | 5 ++ win/tclWinDde.c | 200 ++++++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 164 insertions(+), 41 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3c13e3e..cca9ee6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-06-14 Pat Thoyts + + * win/tclWinDde.c: Backported the fix from 8.5 to avoid hanging in + the presence of applications that dont process Window messages. + 2004-06-10 Andreas Kupries * generic/tclDecls.h: Regenerated on a unix box. diff --git a/win/tclWinDde.c b/win/tclWinDde.c index e8bf139..181820d 100644 --- a/win/tclWinDde.c +++ b/win/tclWinDde.c @@ -10,11 +10,13 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.1 2003/11/10 22:42:07 dgp Exp $ + * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.2 2004/06/14 15:22:38 patthoyts Exp $ */ #include "tclPort.h" +#include #include +#include /* * TCL_STORAGE_CLASS is set unconditionally to DLLEXPORT because the @@ -91,6 +93,10 @@ static HDDEDATA CALLBACK DdeServerProc _ANSI_ARGS_((UINT uType, HSZ ddeItem, HDDEDATA hData, DWORD dwData1, DWORD dwData2)); static void SetDdeError _ANSI_ARGS_((Tcl_Interp *interp)); +static int DdeGetServicesList _ANSI_ARGS_(( + Tcl_Interp *interp, + char *serviceName, + char *topicName)); int Tcl_DdeObjCmd(ClientData clientData, /* Used only for deletion */ Tcl_Interp *interp, /* The interp we are sending from */ int objc, /* Number of arguments */ @@ -755,6 +761,157 @@ MakeDdeConnection( /* *-------------------------------------------------------------- * + * DdeGetServicesList -- + * + * This procedure obtains the list of DDE services. + * + * The functions between here and this procedure are all + * involved with handling the DDE callbacks for this. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * Sets the services list into the interp result. + * + *-------------------------------------------------------------- + */ + +typedef struct ddeEnumServices { + Tcl_Interp *interp; + int result; + ATOM service; + ATOM topic; + HWND hwnd; +} ddeEnumServices; + +LRESULT CALLBACK +DdeClientWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +static LRESULT +DdeServicesOnAck(HWND hwnd, WPARAM wParam, LPARAM lParam); + +static int +DdeCreateClient(ddeEnumServices *es) +{ + WNDCLASSEX wc; + static const char *szDdeClientClassName = "TclEval client class"; + static const char *szDdeClientWindowName = "TclEval client window"; + + memset(&wc, 0, sizeof(wc)); + wc.cbSize = sizeof(wc); + wc.lpfnWndProc = DdeClientWindowProc; + wc.lpszClassName = szDdeClientClassName; + wc.cbWndExtra = sizeof(ddeEnumServices*); + + /* register and create the callback window */ + RegisterClassEx(&wc); + es->hwnd = CreateWindowEx(0, szDdeClientClassName, + szDdeClientWindowName, + WS_POPUP, 0, 0, 0, 0, NULL, NULL, NULL, + (LPVOID)es); + return TCL_OK; +} + +LRESULT CALLBACK +DdeClientWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + LONG lr = 0L; + + switch (uMsg) { + case WM_CREATE: { + LPCREATESTRUCT lpcs = (LPCREATESTRUCT)lParam; + ddeEnumServices *es; + es = (ddeEnumServices*)lpcs->lpCreateParams; + SetWindowLong(hwnd, GWL_USERDATA, (long)es); + break; + } + case WM_DDE_ACK: + lr = DdeServicesOnAck(hwnd, wParam, lParam); + break; + default: + lr = DefWindowProc(hwnd, uMsg, wParam, lParam); + } + return lr; +} + +static LRESULT +DdeServicesOnAck(HWND hwnd, WPARAM wParam, LPARAM lParam) +{ + HWND hwndRemote = (HWND)wParam; + ATOM service = (ATOM)LOWORD(lParam); + ATOM topic = (ATOM)HIWORD(lParam); + ddeEnumServices *es; + TCHAR sz[255]; + + es = (ddeEnumServices *)GetWindowLong(hwnd, GWL_USERDATA); + + if ((es->service == (ATOM)NULL || es->service == service) + && (es->topic == (ATOM)NULL || es->topic == topic)) { + Tcl_Obj *matchPtr = Tcl_NewListObj(0, NULL); + + GlobalGetAtomName(service, sz, 255); + Tcl_ListObjAppendElement(es->interp, matchPtr, + Tcl_NewStringObj(sz, -1)); + GlobalGetAtomName(topic, sz, 255); + Tcl_ListObjAppendElement(es->interp, matchPtr, + Tcl_NewStringObj(sz, -1)); + /* Adding the hwnd as a third list element provides a unique + * identifier in the case of multiple servers with the name + * application and topic names. + */ + /* Needs a TIP though + * Tcl_ListObjAppendElement(es->interp, matchPtr, + * Tcl_NewLongObj((long)hwndRemote)); + */ + Tcl_ListObjAppendElement(es->interp, + Tcl_GetObjResult(es->interp), matchPtr); + } + + /* tell the server we are no longer interested */ + PostMessage(hwndRemote, WM_DDE_TERMINATE, (WPARAM)hwnd, 0L); + return 0L; +} + +static BOOL CALLBACK +DdeEnumWindowsCallback(HWND hwndTarget, LPARAM lParam) +{ + DWORD dwResult = 0; + ddeEnumServices *es = (ddeEnumServices *)lParam; + SendMessageTimeout(hwndTarget, WM_DDE_INITIATE, + (WPARAM)es->hwnd, + MAKELONG(es->service, es->topic), + SMTO_ABORTIFHUNG, 1000, &dwResult); + return TRUE; +} + +static int +DdeGetServicesList(Tcl_Interp *interp, char *serviceName, char *topicName) +{ + ddeEnumServices es; + int r = TCL_OK; + es.interp = interp; + es.result = TCL_OK; + es.service = (serviceName == NULL) + ? (ATOM)NULL : GlobalAddAtom(serviceName); + es.topic = (topicName == NULL) + ? (ATOM)NULL : GlobalAddAtom(topicName); + + Tcl_ResetResult(interp); /* our list is to be appended to result. */ + DdeCreateClient(&es); + EnumWindows(DdeEnumWindowsCallback, (LPARAM)&es); + + if (IsWindow(es.hwnd)) + DestroyWindow(es.hwnd); + if (es.service != (ATOM)NULL) + GlobalDeleteAtom(es.service); + if (es.topic != (ATOM)NULL) + GlobalDeleteAtom(es.topic); + return es.result; +} + +/* + *-------------------------------------------------------------- + * * SetDdeError -- * * Sets the interp result to a cogent error message @@ -1132,46 +1289,7 @@ Tcl_DdeObjCmd( } case DDE_SERVICES: { - HCONVLIST hConvList; - CONVINFO convInfo; - Tcl_Obj *convListObjPtr, *elementObjPtr; - Tcl_DString dString; - char *name; - - convInfo.cb = sizeof(CONVINFO); - hConvList = DdeConnectList(ddeInstance, ddeService, - ddeTopic, 0, NULL); - DdeFreeStringHandle(ddeInstance,ddeService); - DdeFreeStringHandle(ddeInstance, ddeTopic); - hConv = 0; - convListObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); - Tcl_DStringInit(&dString); - - while (hConv = DdeQueryNextServer(hConvList, hConv), hConv != 0) { - elementObjPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); - DdeQueryConvInfo(hConv, QID_SYNC, &convInfo); - length = DdeQueryString(ddeInstance, - convInfo.hszSvcPartner, NULL, 0, CP_WINANSI); - Tcl_DStringSetLength(&dString, length); - name = Tcl_DStringValue(&dString); - DdeQueryString(ddeInstance, convInfo.hszSvcPartner, - name, (DWORD) length + 1, CP_WINANSI); - Tcl_ListObjAppendElement(interp, elementObjPtr, - Tcl_NewStringObj(name, length)); - length = DdeQueryString(ddeInstance, convInfo.hszTopic, - NULL, 0, CP_WINANSI); - Tcl_DStringSetLength(&dString, length); - name = Tcl_DStringValue(&dString); - DdeQueryString(ddeInstance, convInfo.hszTopic, name, - (DWORD) length + 1, CP_WINANSI); - Tcl_ListObjAppendElement(interp, elementObjPtr, - Tcl_NewStringObj(name, length)); - Tcl_ListObjAppendElement(interp, convListObjPtr, - elementObjPtr); - } - DdeDisconnectList(hConvList); - Tcl_SetObjResult(interp, convListObjPtr); - Tcl_DStringFree(&dString); + result = DdeGetServicesList(interp, serviceName, topicName); break; } case DDE_EVAL: { -- cgit v0.12 From 44d95ca8cecdf4670b8e3b23bb90a7b7d291e096 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Tue, 15 Jun 2004 13:00:51 +0000 Subject: Fixed dde -async test. --- ChangeLog | 3 ++- tests/winDde.test | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index cca9ee6..f15190f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,8 @@ 2004-06-14 Pat Thoyts + * tests/winDde.test: Fixed -async test * win/tclWinDde.c: Backported the fix from 8.5 to avoid hanging in - the presence of applications that dont process Window messages. + the presence of applications that do not process Window messages. 2004-06-10 Andreas Kupries diff --git a/tests/winDde.test b/tests/winDde.test index c573d58..a1472fa 100644 --- a/tests/winDde.test +++ b/tests/winDde.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winDde.test,v 1.13 2003/01/16 20:51:57 hobbs Exp $ +# RCS: @(#) $Id: winDde.test,v 1.13.2.1 2004/06/15 13:00:57 patthoyts Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -125,6 +125,7 @@ test winDde-4.2 {DDE execute remotely} {stdio pcOnly} { set a "" set child [createChildProcess child] dde execute -async TclEval child {set a "foo"} + update dde execute TclEval child {set done 1} set a -- cgit v0.12 From 1dc7dd38fb40ca56d2e36b80e22ff1c1e68e0b0c Mon Sep 17 00:00:00 2001 From: mdejong Date: Mon, 21 Jun 2004 22:07:30 +0000 Subject: * win/tclWin32Dll.c (DllMain, _except_dllmain_detach_handler, TclpCheckStackSpace, _except_checkstackspace_handler, TclWinCPUID, _except_TclWinCPUID_detach_handler): * win/tclWinChan.c (Tcl_MakeFileChannel, _except_makefilechannel_handler): * win/tclWinFCmd.c (DoRenameFile, _except_dorenamefile_handler, DoCopyFile, _except_docopyfile_handler): Rework pushing of exception handler function pointer so that compiling with gcc -O3 works. Remove empty function call to avoid compiler warning. Mark the DllMain function as noinline to avoid compiler error from duplicated asm labels in generated code. --- ChangeLog | 16 ++++++ win/tclWin32Dll.c | 143 +++++++++++++++++++++++++++++++++++++++++++++--------- win/tclWinChan.c | 42 +++++++++++++--- win/tclWinFCmd.c | 80 +++++++++++++++++++++++++----- 4 files changed, 239 insertions(+), 42 deletions(-) diff --git a/ChangeLog b/ChangeLog index f15190f..fa6bf00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2004-06-21 Mo DeJong + + * win/tclWin32Dll.c (DllMain, _except_dllmain_detach_handler, + TclpCheckStackSpace, _except_checkstackspace_handler, + TclWinCPUID, _except_TclWinCPUID_detach_handler): + * win/tclWinChan.c (Tcl_MakeFileChannel, + _except_makefilechannel_handler): + * win/tclWinFCmd.c (DoRenameFile, + _except_dorenamefile_handler, DoCopyFile, + _except_docopyfile_handler): + Rework pushing of exception handler function pointer + so that compiling with gcc -O3 works. Remove empty + function call to avoid compiler warning. Mark the + DllMain function as noinline to avoid compiler + error from duplicated asm labels in generated code. + 2004-06-14 Pat Thoyts * tests/winDde.test: Fixed -async test diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index 4cfd944..78d8bc5 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.3 2004/06/05 17:25:40 kennykb Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.4 2004/06/21 22:07:32 mdejong Exp $ */ #include "tclWinInt.h" @@ -46,6 +46,38 @@ static void *INITIAL_ESP, *RESTORED_HANDLER; #endif /* HAVE_NO_SEH && TCL_MEM_DEBUG */ +#ifdef HAVE_NO_SEH + +static +__attribute__ ((cdecl)) +EXCEPTION_DISPOSITION +_except_dllmain_detach_handler( + struct _EXCEPTION_RECORD *ExceptionRecord, + void *EstablisherFrame, + struct _CONTEXT *ContextRecord, + void *DispatcherContext); + +static +__attribute__ ((cdecl)) +EXCEPTION_DISPOSITION +_except_checkstackspace_handler( + struct _EXCEPTION_RECORD *ExceptionRecord, + void *EstablisherFrame, + struct _CONTEXT *ContextRecord, + void *DispatcherContext); + +static +__attribute__((cdecl)) +EXCEPTION_DISPOSITION +_except_TclWinCPUID_detach_handler( + struct _EXCEPTION_RECORD *ExceptionRecord, + void *EstablisherFrame, + struct _CONTEXT *ContextRecord, + void *DispatcherContext); + +#endif /* HAVE_NO_SEH */ + + /* * The following function tables are used to dispatch to either the * wide-character or multi-byte versions of the operating system calls, @@ -153,12 +185,28 @@ static TclWinProcs unicodeProcs = { TclWinProcs *tclWinProcs; static Tcl_Encoding tclWinTCharEncoding; + +#ifdef HAVE_NO_SEH + +/* Need to add noinline flag to DllMain declaration so that gcc -O3 + * does not inline asm code into DllEntryPoint and cause a + * compile time error because of redefined local labels. + */ + +BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, + LPVOID reserved) + __attribute__ ((noinline)); + +#else + /* * The following declaration is for the VC++ DLL entry point. */ BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserved); +#endif /* HAVE_NO_SEH */ + /* * The following structure and linked list is to allow us to map between @@ -261,10 +309,12 @@ DllMain(hInst, reason, reserved) # endif /* TCL_MEM_DEBUG */ __asm__ __volatile__ ( - "pushl %ebp" "\n\t" - "pushl $__except_dllmain_detach_handler" "\n\t" - "pushl %fs:0" "\n\t" - "movl %esp, %fs:0"); + "pushl %%ebp" "\n\t" + "pushl %0" "\n\t" + "pushl %%fs:0" "\n\t" + "movl %%esp, %%fs:0" + : + : "r" (_except_dllmain_detach_handler) ); #else __try { #endif /* HAVE_NO_SEH */ @@ -312,7 +362,22 @@ DllMain(hInst, reason, reserved) return TRUE; } - + +/* + *---------------------------------------------------------------------- + * + * _except_dllmain_detach_handler -- + * + * SEH exception handler for DllMain. + * + * Results: + * See DllMain. + * + * Side effects: + * See DllMain. + * + *---------------------------------------------------------------------- + */ #ifdef HAVE_NO_SEH static __attribute__ ((cdecl)) @@ -325,12 +390,11 @@ _except_dllmain_detach_handler( { __asm__ __volatile__ ( "jmp dllmain_detach_reentry"); - /* Nuke compiler warning about unused static function */ - _except_dllmain_detach_handler(NULL, NULL, NULL, NULL); return 0; /* Function does not return */ } #endif /* HAVE_NO_SEH */ + #endif /* !STATIC_BUILD */ #endif /* __WIN32__ */ @@ -493,10 +557,12 @@ TclpCheckStackSpace() # endif /* TCL_MEM_DEBUG */ __asm__ __volatile__ ( - "pushl %ebp" "\n\t" - "pushl $__except_checkstackspace_handler" "\n\t" - "pushl %fs:0" "\n\t" - "movl %esp, %fs:0"); + "pushl %%ebp" "\n\t" + "pushl %0" "\n\t" + "pushl %%fs:0" "\n\t" + "movl %%esp, %%fs:0" + : + : "r" (_except_checkstackspace_handler) ); #else __try { #endif /* HAVE_NO_SEH */ @@ -552,6 +618,22 @@ TclpCheckStackSpace() */ return retval; } + +/* + *---------------------------------------------------------------------- + * + * _except_checkstackspace_handler -- + * + * SEH exception handler for TclpCheckStackSpace. + * + * Results: + * See TclpCheckStackSpace. + * + * Side effects: + * See TclpCheckStackSpace. + * + *---------------------------------------------------------------------- + */ #ifdef HAVE_NO_SEH static __attribute__ ((cdecl)) @@ -564,8 +646,6 @@ _except_checkstackspace_handler( { __asm__ __volatile__ ( "jmp checkstackspace_reentry"); - /* Nuke compiler warning about unused static function */ - _except_checkstackspace_handler(NULL, NULL, NULL, NULL); return 0; /* Function does not return */ } #endif /* HAVE_NO_SEH */ @@ -978,10 +1058,12 @@ TclWinCPUID( unsigned int index, /* Which CPUID value to retrieve */ # ifdef HAVE_NO_SEH __asm__ __volatile__ ( - "pushl %ebp" "\n\t" - "pushl $__except_TclWinCPUID_detach_handler" "\n\t" - "pushl %fs:0" "\n\t" - "movl %esp, %fs:0" ); + "pushl %%ebp" "\n\t" + "pushl %0" "\n\t" + "pushl %%fs:0" "\n\t" + "movl %%esp, %%fs:0" + : + : "r" (_except_TclWinCPUID_detach_handler) ); # else __try { # endif @@ -1077,9 +1159,27 @@ TclWinCPUID( unsigned int index, /* Which CPUID value to retrieve */ #endif return status; } + +/* + *---------------------------------------------------------------------- + * + * _except_TclWinCPUID_detach_handler -- + * + * SEH exception handler for TclWinCPUID. + * + * Results: + * See TclWinCPUID. + * + * Side effects: + * See TclWinCPUID. + * + *---------------------------------------------------------------------- + */ -#if defined( __GNUC__ ) && defined( HAVE_NO_SEH ) -static __attribute__((cdecl)) EXCEPTION_DISPOSITION +#if defined( HAVE_NO_SEH ) +static +__attribute__((cdecl)) +EXCEPTION_DISPOSITION _except_TclWinCPUID_detach_handler( struct _EXCEPTION_RECORD *ExceptionRecord, void *EstablisherFrame, @@ -1088,10 +1188,7 @@ _except_TclWinCPUID_detach_handler( { __asm__ __volatile__ ( "jmp TclWinCPUID_detach_reentry" ); - /* Nuke compiler warning about unused static function */ - _except_TclWinCPUID_detach_handler(NULL, NULL, NULL, NULL); return 0; /* Function does not return */ } #endif - diff --git a/win/tclWinChan.c b/win/tclWinChan.c index c6640f1..60f9aef 100644 --- a/win/tclWinChan.c +++ b/win/tclWinChan.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinChan.c,v 1.30 2003/01/26 05:59:38 mdejong Exp $ + * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.1 2004/06/21 22:07:32 mdejong Exp $ */ #include "tclWinInt.h" @@ -131,6 +131,17 @@ static void *INITIAL_ESP, *RESTORED_HANDLER; #endif /* HAVE_NO_SEH && TCL_MEM_DEBUG */ +#ifdef HAVE_NO_SEH +static +__attribute__ ((cdecl)) +EXCEPTION_DISPOSITION +_except_makefilechannel_handler( + struct _EXCEPTION_RECORD *ExceptionRecord, + void *EstablisherFrame, + struct _CONTEXT *ContextRecord, + void *DispatcherContext); +#endif + /* *---------------------------------------------------------------------- @@ -1059,10 +1070,13 @@ Tcl_MakeFileChannel(rawHandle, mode) result = 0; __asm__ __volatile__ ( - "pushl %ebp" "\n\t" - "pushl $__except_makefilechannel_handler" "\n\t" - "pushl %fs:0" "\n\t" - "movl %esp, %fs:0"); + "pushl %%ebp" "\n\t" + "pushl %0" "\n\t" + "pushl %%fs:0" "\n\t" + "movl %%esp, %%fs:0" + : + : "r" (_except_makefilechannel_handler) + ); #else __try { #endif /* HAVE_NO_SEH */ @@ -1126,6 +1140,22 @@ Tcl_MakeFileChannel(rawHandle, mode) return channel; } + +/* + *---------------------------------------------------------------------- + * + * _except_makefilechannel_handler -- + * + * SEH exception handler for Tcl_MakeFileChannel. + * + * Results: + * See Tcl_MakeFileChannel. + * + * Side effects: + * See Tcl_MakeFileChannel. + * + *---------------------------------------------------------------------- + */ #ifdef HAVE_NO_SEH static __attribute__ ((cdecl)) @@ -1138,8 +1168,6 @@ _except_makefilechannel_handler( { __asm__ __volatile__ ( "jmp makefilechannel_reentry"); - /* Nuke compiler warning about unused static function */ - _except_makefilechannel_handler(NULL, NULL, NULL, NULL); return 0; /* Function does not return */ } #endif diff --git a/win/tclWinFCmd.c b/win/tclWinFCmd.c index 3992fb2..e8033f9 100644 --- a/win/tclWinFCmd.c +++ b/win/tclWinFCmd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFCmd.c,v 1.35.2.1 2003/10/03 17:45:37 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinFCmd.c,v 1.35.2.2 2004/06/21 22:07:32 mdejong Exp $ */ #include "tclWinInt.h" @@ -82,6 +82,27 @@ static void *INITIAL_ESP, *RESTORED_HANDLER; #endif /* HAVE_NO_SEH && TCL_MEM_DEBUG */ +#ifdef HAVE_NO_SEH +static +__attribute__ ((cdecl)) +EXCEPTION_DISPOSITION +_except_dorenamefile_handler( + struct _EXCEPTION_RECORD *ExceptionRecord, + void *EstablisherFrame, + struct _CONTEXT *ContextRecord, + void *DispatcherContext); + +static +__attribute__ ((cdecl)) +EXCEPTION_DISPOSITION +_except_docopyfile_handler( + struct _EXCEPTION_RECORD *ExceptionRecord, + void *EstablisherFrame, + struct _CONTEXT *ContextRecord, + void *DispatcherContext); + +#endif /* HAVE_NO_SEH */ + /* * Prototype for the TraverseWinTree callback function. */ @@ -202,10 +223,13 @@ DoRenameFile( # endif /* TCL_MEM_DEBUG */ __asm__ __volatile__ ( - "pushl %ebp" "\n\t" - "pushl $__except_dorenamefile_handler" "\n\t" - "pushl %fs:0" "\n\t" - "movl %esp, %fs:0"); + "pushl %%ebp" "\n\t" + "pushl %0" "\n\t" + "pushl %%fs:0" "\n\t" + "movl %%esp, %%fs:0" + : + : "r" (_except_dorenamefile_handler) + ); #else __try { #endif /* HAVE_NO_SEH */ @@ -467,6 +491,22 @@ DoRenameFile( } return TCL_ERROR; } + +/* + *---------------------------------------------------------------------- + * + * _except_dorenamefile_handler -- + * + * SEH exception handler for DoRenameFile. + * + * Results: + * See DoRenameFile. + * + * Side effects: + * See DoRenameFile. + * + *---------------------------------------------------------------------- + */ #ifdef HAVE_NO_SEH static __attribute__ ((cdecl)) @@ -479,8 +519,6 @@ _except_dorenamefile_handler( { __asm__ __volatile__ ( "jmp dorenamefile_reentry"); - /* Nuke compiler warning about unused static function */ - _except_dorenamefile_handler(NULL, NULL, NULL, NULL); return 0; /* Function does not return */ } #endif /* HAVE_NO_SEH */ @@ -556,10 +594,13 @@ DoCopyFile( # endif /* TCL_MEM_DEBUG */ __asm__ __volatile__ ( - "pushl %ebp" "\n\t" - "pushl $__except_docopyfile_handler" "\n\t" - "pushl %fs:0" "\n\t" - "movl %esp, %fs:0"); + "pushl %%ebp" "\n\t" + "pushl %0" "\n\t" + "pushl %%fs:0" "\n\t" + "movl %%esp, %%fs:0" + : + : "r" (_except_docopyfile_handler) + ); #else __try { #endif /* HAVE_NO_SEH */ @@ -649,6 +690,22 @@ DoCopyFile( } return TCL_ERROR; } + +/* + *---------------------------------------------------------------------- + * + * _except_docopyfile_handler -- + * + * SEH exception handler for DoCopyFile. + * + * Results: + * See DoCopyFile. + * + * Side effects: + * See DoCopyFile. + * + *---------------------------------------------------------------------- + */ #ifdef HAVE_NO_SEH static __attribute__ ((cdecl)) @@ -661,7 +718,6 @@ _except_docopyfile_handler( { __asm__ __volatile__ ( "jmp docopyfile_reentry"); - _except_docopyfile_handler(NULL,NULL,NULL,NULL); return 0; /* Function does not return */ } #endif /* HAVE_NO_SEH */ -- cgit v0.12 From b9273c1f802ff63672d83bb1de3667270e663919 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 22 Jun 2004 11:55:31 +0000 Subject: Corrected Tcl Bug #770053 --- ChangeLog | 15 ++++++++ generic/tclEvent.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++-- generic/tclInt.h | 7 +++- tests/unixNotfy.test | 16 ++++----- unix/tclUnixNotfy.c | 4 +-- unix/tclUnixThrd.c | 4 +-- win/tclWinThrd.c | 6 ++-- 7 files changed, 128 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index fa6bf00..626e49c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2004-06-22 Zoran Vasiljevic + + * generic/tclEvent.c: + * generic/tclInt.h: + * unix/tclUnixNotfy.c: + * unix/tclUnixThrd.c: + * win/tclWinThrd.c: [Bug #770053]. See bug report for + more information about what it does. + + * tests/unixNotfy.test: rewritten to use tcltest::threadReap + to gracefully wait for the test thread to exit. Otherwise + we got a race condition with main thread exiting before the + test thread. This exposed the long-standing Tcl lib issue + with resource garbage-collection on application exit. + 2004-06-21 Mo DeJong * win/tclWin32Dll.c (DllMain, _except_dllmain_detach_handler, diff --git a/generic/tclEvent.c b/generic/tclEvent.c index eacf41b..c6d7d65 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.3 2004/05/06 01:17:41 davygrvy Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.4 2004/06/22 11:55:35 vasiljevic Exp $ */ #include "tclInt.h" @@ -104,6 +104,17 @@ static Tcl_ThreadDataKey dataKey; */ static char *tclLibraryPathStr = NULL; + +#ifdef TCL_THREADS + +typedef struct { + Tcl_ThreadCreateProc *proc; /* Main() function of the thread */ + ClientData clientData; /* The one argument to Main() */ +} ThreadClientData; +static Tcl_ThreadCreateType NewThreadProc _ANSI_ARGS_(( + ClientData clientData)); +#endif + /* * Prototypes for procedures referenced only in this file: */ @@ -720,6 +731,7 @@ TclInitSubsystems(argv0) * interesting happens so we can use the allocators in the * implementation of self-initializing locks. */ + #if USE_TCLALLOC TclInitAlloc(); /* process wide mutex init */ #endif @@ -728,10 +740,10 @@ TclInitSubsystems(argv0) #endif TclpInitPlatform(); /* creates signal handler(s) */ - TclInitObjSubsystem(); /* register obj types, create mutexes */ + TclInitObjSubsystem(); /* register obj types, create mutexes */ TclInitIOSubsystem(); /* inits a tsd key (noop) */ TclInitEncodingSubsystem(); /* process wide encoding init */ - TclInitNamespaceSubsystem(); /* register ns obj type (mutexed) */ + TclInitNamespaceSubsystem(); /* register ns obj type (mutexed) */ } TclpInitUnlock(); } @@ -1148,3 +1160,81 @@ Tcl_UpdateObjCmd(clientData, interp, objc, objv) Tcl_ResetResult(interp); return TCL_OK; } + +#ifdef TCL_THREADS +/* + *----------------------------------------------------------------------------- + * + * NewThreadProc -- + * + * Bootstrap function of a new Tcl thread. + * + * Results: + * None. + * + * Side Effects: + * Initializes Tcl notifier for the current thread. + * + *----------------------------------------------------------------------------- + */ + +static Tcl_ThreadCreateType +NewThreadProc(ClientData clientData) +{ + ThreadClientData *cdPtr; + ClientData threadClientData; + Tcl_ThreadCreateProc *threadProc; + + TCL_TSD_INIT(&dataKey); + + cdPtr = (ThreadClientData*)clientData; + threadProc = cdPtr->proc; + threadClientData = cdPtr->clientData; + Tcl_Free((char*)clientData); /* Allocated in Tcl_CreateThread() */ + + TclInitNotifier(); + + (*threadProc)(threadClientData); +} +#endif +/* + *---------------------------------------------------------------------- + * + * Tcl_CreateThread -- + * + * This procedure creates a new thread. This actually belongs + * to the tclThread.c file but since we use some private + * data structures local to this file, it is placed here. + * + * Results: + * TCL_OK if the thread could be created. The thread ID is + * returned in a parameter. + * + * Side effects: + * A new thread is created. + * + *---------------------------------------------------------------------- + */ + +int +Tcl_CreateThread(idPtr, proc, clientData, stackSize, flags) + Tcl_ThreadId *idPtr; /* Return, the ID of the thread */ + Tcl_ThreadCreateProc proc; /* Main() function of the thread */ + ClientData clientData; /* The one argument to Main() */ + int stackSize; /* Size of stack for the new thread */ + int flags; /* Flags controlling behaviour of + * the new thread */ +{ +#ifdef TCL_THREADS + ThreadClientData *cdPtr; + + cdPtr = (ThreadClientData*)Tcl_Alloc(sizeof(ThreadClientData)); + cdPtr->proc = proc; + cdPtr->clientData = clientData; + + return TclpThreadCreate(idPtr, NewThreadProc, (ClientData)cdPtr, + stackSize, flags); +#else + return TCL_ERROR; +#endif /* TCL_THREADS */ +} diff --git a/generic/tclInt.h b/generic/tclInt.h index 7282343..95129b6 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.5 2004/05/06 01:02:58 davygrvy Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.6 2004/06/22 11:55:35 vasiljevic Exp $ */ #ifndef _TCLINT @@ -1764,6 +1764,11 @@ EXTERN void TclpThreadDataKeyInit _ANSI_ARGS_(( Tcl_ThreadDataKey *keyPtr)); EXTERN void TclpThreadDataKeySet _ANSI_ARGS_(( Tcl_ThreadDataKey *keyPtr, VOID *data)); +EXTERN int TclpThreadCreate _ANSI_ARGS_(( + Tcl_ThreadId *idPtr, + Tcl_ThreadCreateProc proc, + ClientData clientData, + int stackSize, int flags)); EXTERN void TclpThreadExit _ANSI_ARGS_((int status)); EXTERN void TclRememberCondition _ANSI_ARGS_((Tcl_Condition *mutex)); EXTERN void TclRememberDataKey _ANSI_ARGS_((Tcl_ThreadDataKey *mutex)); diff --git a/tests/unixNotfy.test b/tests/unixNotfy.test index d39828e..27f5160 100644 --- a/tests/unixNotfy.test +++ b/tests/unixNotfy.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixNotfy.test,v 1.11.2.2 2003/10/06 13:55:39 dgp Exp $ +# RCS: @(#) $Id: unixNotfy.test,v 1.11.2.3 2004/06/22 11:55:36 vasiljevic Exp $ # The tests should not be run if you have a notifier which is unable to # detect infinite vwaits, as the tests below will hang. The presence of @@ -80,10 +80,9 @@ test unixNotfy-2.1 {Tcl_DeleteFileHandler} \ fileevent $f writable {set x 1} vwait x close $f - testthread create "after 500 - testthread send [testthread id] {set x ok} - testthread exit" + testthread create "testthread send [testthread id] {set x ok}" vwait x + threadReap set x } \ -result {ok} \ @@ -104,11 +103,10 @@ test unixNotfy-2.2 {Tcl_DeleteFileHandler} \ close $f1 vwait y close $f2 - testthread create "after 500 - testthread send [testthread id] {set x ok} - testthread exit" - vwait x - set x + testthread create "testthread send [testthread id] {set x ok}" + vwait x + threadReap + set x } \ -result {ok} \ -cleanup { diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 0cad280..4449b47 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.2 2003/07/16 22:09:48 hobbs Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.3 2004/06/22 11:55:36 vasiljevic Exp $ */ #include "tclInt.h" @@ -208,7 +208,7 @@ Tcl_InitNotifier() Tcl_MutexLock(¬ifierMutex); if (notifierCount == 0) { - if (Tcl_CreateThread(¬ifierThread, NotifierThreadProc, NULL, + if (TclpThreadCreate(¬ifierThread, NotifierThreadProc, NULL, TCL_THREAD_STACK_DEFAULT, TCL_THREAD_NOFLAGS) != TCL_OK) { panic("Tcl_InitNotifier: unable to start notifier thread"); } diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 04eacf4..78ca385 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -66,7 +66,7 @@ static pthread_mutex_t *allocLockPtr = &allocLock; /* *---------------------------------------------------------------------- * - * Tcl_CreateThread -- + * TclpThreadCreate -- * * This procedure creates a new thread. * @@ -81,7 +81,7 @@ static pthread_mutex_t *allocLockPtr = &allocLock; */ int -Tcl_CreateThread(idPtr, proc, clientData, stackSize, flags) +TclpThreadCreate(idPtr, proc, clientData, stackSize, flags) Tcl_ThreadId *idPtr; /* Return, the ID of the thread */ Tcl_ThreadCreateProc proc; /* Main() function of the thread */ ClientData clientData; /* The one argument to Main() */ diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index 558cee4..f7fe507 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.5 2004/05/06 01:03:14 davygrvy Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.6 2004/06/22 11:55:36 vasiljevic Exp $ */ #include "tclWinInt.h" @@ -115,7 +115,7 @@ typedef struct WinCondition { /* *---------------------------------------------------------------------- * - * Tcl_CreateThread -- + * TclpThreadCreate -- * * This procedure creates a new thread. * @@ -130,7 +130,7 @@ typedef struct WinCondition { */ int -Tcl_CreateThread(idPtr, proc, clientData, stackSize, flags) +TclpThreadCreate(idPtr, proc, clientData, stackSize, flags) Tcl_ThreadId *idPtr; /* Return, the ID of the thread */ Tcl_ThreadCreateProc proc; /* Main() function of the thread */ ClientData clientData; /* The one argument to Main() */ -- cgit v0.12 From 427b3847a04534c1a0703535fe306878274bcf20 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 29 Jun 2004 09:38:59 +0000 Subject: Fix [Bug 981733]; bizarre resolver brokenness strikes again! --- ChangeLog | 5 +++++ library/safe.tcl | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 626e49c..2cc050c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-06-29 Donal K. Fellows + + * library/safe.tcl: Make sure that the temporary variable is + local to the namespace and not inadvertently global. [Bug 981733] + 2004-06-22 Zoran Vasiljevic * generic/tclEvent.c: diff --git a/library/safe.tcl b/library/safe.tcl index a5252d8..f34fea2 100644 --- a/library/safe.tcl +++ b/library/safe.tcl @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: safe.tcl,v 1.9.2.1 2003/07/16 22:49:31 hobbs Exp $ +# RCS: @(#) $Id: safe.tcl,v 1.9.2.2 2004/06/29 09:39:01 dkf Exp $ # # The implementation is based on namespaces. These naming conventions @@ -37,6 +37,10 @@ namespace eval ::safe { # #### + # Make sure that our temporary variable is local to this + # namespace. [Bug 981733] + variable temp + # Share the descriptions set temp [::tcl::OptKeyRegister { {-accessPath -list {} "access path for the slave"} @@ -321,7 +325,7 @@ namespace eval ::safe { # determine and store the access path if empty if {[string equal "" $access_path]} { - set access_path [uplevel #0 set auto_path] + set access_path [uplevel \#0 set auto_path] # Make sure that tcl_library is in auto_path # and at the first position (needed by setAccessPath) set where [lsearch -exact $access_path [info library]] -- cgit v0.12 From 236570f0308763b7305fcff43431ac39f7e2d835 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Fri, 2 Jul 2004 16:52:17 +0000 Subject: backport of recent fs fixes from cvs head --- ChangeLog | 5 ++++ tests/fileSystem.test | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++ win/tclWin32Dll.c | 10 ++++++- win/tclWinFile.c | 63 ++++++++++++++++++++++++++++----------- 4 files changed, 141 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2cc050c..461fae7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-07-02 Vince Darley + + * tests/fileSystem.test: new tests backported + * win/tclWin32Dll.c: compilation fix for VC++5.2 + 2004-06-29 Donal K. Fellows * library/safe.tcl: Make sure that the temporary variable is diff --git a/tests/fileSystem.test b/tests/fileSystem.test index b934aed..7febfcd 100644 --- a/tests/fileSystem.test +++ b/tests/fileSystem.test @@ -473,6 +473,87 @@ test filesystem-8.3 {path objects and empty string} { lappend res $dst $yyy } {foo foo {}} +proc TestFind1 {d f} { + set r1 [file exists [file join $d $f]] + lappend res "[file join $d $f] found: $r1" + lappend res "is dir a dir? [file isdirectory $d]" + set r2 [file exists [file join $d $f]] + lappend res "[file join $d $f] found: $r2" + set res +} +proc TestFind2 {d f} { + set r1 [file exists [file join $d $f]] + lappend res "[file join $d $f] found: $r1" + lappend res "is dir a dir? [file isdirectory [file join $d]]" + set r2 [file exists [file join $d $f]] + lappend res "[file join $d $f] found: $r2" + set res +} + +test filesystem-9.1 {path objects and join and object rep} { + set origdir [pwd] + cd [tcltest::temporaryDirectory] + file mkdir [file join a b c] + set res [TestFind1 a [file join b . c]] + file delete -force a + cd $origdir + set res +} {{a/b/./c found: 1} {is dir a dir? 1} {a/b/./c found: 1}} + +test filesystem-9.2 {path objects and join and object rep} { + set origdir [pwd] + cd [tcltest::temporaryDirectory] + file mkdir [file join a b c] + set res [TestFind2 a [file join b . c]] + file delete -force a + cd $origdir + set res +} {{a/b/./c found: 1} {is dir a dir? 1} {a/b/./c found: 1}} + +test filesystem-9.2.1 {path objects and join and object rep} { + set origdir [pwd] + cd [tcltest::temporaryDirectory] + file mkdir [file join a b c] + set res [TestFind2 a [file join b .]] + file delete -force a + cd $origdir + set res +} {{a/b/. found: 1} {is dir a dir? 1} {a/b/. found: 1}} + +test filesystem-9.3 {path objects and join and object rep} { + set origdir [pwd] + cd [tcltest::temporaryDirectory] + file mkdir [file join a b c] + set res [TestFind1 a [file join b .. b c]] + file delete -force a + cd $origdir + set res +} {{a/b/../b/c found: 1} {is dir a dir? 1} {a/b/../b/c found: 1}} + +test filesystem-9.4 {path objects and join and object rep} { + set origdir [pwd] + cd [tcltest::temporaryDirectory] + file mkdir [file join a b c] + set res [TestFind2 a [file join b .. b c]] + file delete -force a + cd $origdir + set res +} {{a/b/../b/c found: 1} {is dir a dir? 1} {a/b/../b/c found: 1}} + +test filesystem-9.5 {path objects and file tail and object rep} { + set origdir [pwd] + cd [tcltest::temporaryDirectory] + file mkdir dgp + close [open dgp/test w] + foreach relative [glob -nocomplain [file join * test]] { + set absolute [file join [pwd] $relative] + set res [list [file tail $absolute] "test"] + } + file delete -force dgp + cd $origdir + set res +} {test test} + cleanupTests } namespace delete ::tcl::test::fileSystem diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index 78d8bc5..f30b764 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.4 2004/06/21 22:07:32 mdejong Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.5 2004/07/02 16:52:19 vincentdarley Exp $ */ #include "tclWinInt.h" @@ -79,6 +79,14 @@ _except_TclWinCPUID_detach_handler( /* + * VC++ 5.x has no 'cpuid' assembler instruction, so we + * must emulate it + */ +#if defined(_MSC_VER) && ( _MSC_VER <= 1100 ) +#define cpuid __asm __emit 0fh __asm __emit 0a2h +#endif + +/* * The following function tables are used to dispatch to either the * wide-character or multi-byte versions of the operating system calls, * depending on whether the Unicode calls are available. diff --git a/win/tclWinFile.c b/win/tclWinFile.c index b29e9d1..574577e 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.8 2004/05/19 22:50:23 dkf Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.9 2004/07/02 16:52:20 vincentdarley Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -2263,26 +2263,55 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) } Tcl_DStringAppend(&dsNorm,nativePath,Tcl_DStringLength(&ds)); } else { - WIN32_FIND_DATAW fData; - HANDLE handle; + char *checkDots = NULL; - handle = FindFirstFileW((WCHAR*)nativePath, &fData); - if (handle == INVALID_HANDLE_VALUE) { - /* This is usually the '/' in 'c:/' at end of string */ - Tcl_DStringAppend(&dsNorm,(CONST char*)L"/", - sizeof(WCHAR)); + if (lastValidPathEnd[1] == '.') { + checkDots = lastValidPathEnd + 1; + while (checkDots < currentPathEndPosition) { + if (*checkDots != '.') { + checkDots = NULL; + break; + } + checkDots++; + } + } + if (checkDots != NULL) { + int dotLen = currentPathEndPosition - lastValidPathEnd; + /* + * Path is just dots. We shouldn't really + * ever see a path like that. However, to be + * nice we at least don't mangle the path -- + * we just add the dots as a path segment and + * continue + */ + Tcl_DStringAppend(&dsNorm, + (TCHAR*)((WCHAR*)(nativePath + + Tcl_DStringLength(&ds)) + - dotLen), + (int)(dotLen * sizeof(WCHAR))); } else { - WCHAR *nativeName; - if (fData.cFileName[0] != '\0') { - nativeName = fData.cFileName; + /* Normal path */ + WIN32_FIND_DATAW fData; + HANDLE handle; + + handle = FindFirstFileW((WCHAR*)nativePath, &fData); + if (handle == INVALID_HANDLE_VALUE) { + /* This is usually the '/' in 'c:/' at end of string */ + Tcl_DStringAppend(&dsNorm,(CONST char*)L"/", + sizeof(WCHAR)); } else { - nativeName = fData.cAlternateFileName; + WCHAR *nativeName; + if (fData.cFileName[0] != '\0') { + nativeName = fData.cFileName; + } else { + nativeName = fData.cAlternateFileName; + } + FindClose(handle); + Tcl_DStringAppend(&dsNorm,(CONST char*)L"/", + sizeof(WCHAR)); + Tcl_DStringAppend(&dsNorm,(TCHAR*)nativeName, + (int) (wcslen(nativeName)*sizeof(WCHAR))); } - FindClose(handle); - Tcl_DStringAppend(&dsNorm,(CONST char*)L"/", - sizeof(WCHAR)); - Tcl_DStringAppend(&dsNorm,(TCHAR*)nativeName, - (int) (wcslen(nativeName)*sizeof(WCHAR))); } } Tcl_DStringFree(&ds); -- cgit v0.12 From fe6e887dda8e5c1821a94aaac732a37316a25d49 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 2 Jul 2004 23:36:02 +0000 Subject: * generic/regcomp.c (stid): correct minor pointer size error --- generic/regcomp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/regcomp.c b/generic/regcomp.c index 2a7fd6e..29be00f 100644 --- a/generic/regcomp.c +++ b/generic/regcomp.c @@ -2163,12 +2163,12 @@ char *buf; size_t bufsize; { /* big enough for hex int or decimal t->retry? */ - if (bufsize < sizeof(int)*2 + 3 || bufsize < sizeof(t->retry)*3 + 1) + if (bufsize < sizeof(void*)*2 + 3 || bufsize < sizeof(t->retry)*3 + 1) return "unable"; if (t->retry != 0) sprintf(buf, "%d", t->retry); else - sprintf(buf, "0x%x", (int)t); /* may lose bits, that's okay */ + sprintf(buf, "%p", t); return buf; } -- cgit v0.12 From 1d826f7a091358b6682334e46ca66daaa15ca5dc Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 2 Jul 2004 23:37:31 +0000 Subject: * generic/tclPipe.c (TclCreatePipeline): Add 2>@1 as a special * tests/exec.test: case redir of stderr to the result output. --- generic/tclPipe.c | 51 ++++++++++++++++++++++++++++++++++++--------------- tests/exec.test | 6 +++++- 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/generic/tclPipe.c b/generic/tclPipe.c index 7d1334d..7339926 100644 --- a/generic/tclPipe.c +++ b/generic/tclPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPipe.c,v 1.7 2002/12/17 02:47:39 davygrvy Exp $ + * RCS: @(#) $Id: tclPipe.c,v 1.7.2.1 2004/07/02 23:37:31 hobbs Exp $ */ #include "tclInt.h" @@ -68,13 +68,13 @@ static TclFile FileForRedirect(interp, spec, atOK, arg, nextArg, flags, skipPtr, closePtr, releasePtr) Tcl_Interp *interp; /* Intepreter to use for error reporting. */ - CONST char *spec; /* Points to character just after + CONST char *spec; /* Points to character just after * redirection character. */ - CONST char *arg; /* Pointer to entire argument containing - * spec: used for error reporting. */ int atOK; /* Non-zero means that '@' notation can be * used to specify a channel, zero means that * it isn't. */ + CONST char *arg; /* Pointer to entire argument containing + * spec: used for error reporting. */ CONST char *nextArg; /* Next argument in argc/argv array, if needed * for file name or channel name. May be * NULL. */ @@ -107,9 +107,9 @@ FileForRedirect(interp, spec, atOK, arg, nextArg, flags, skipPtr, closePtr, } file = TclpMakeFile(chan, writing ? TCL_WRITABLE : TCL_READABLE); if (file == NULL) { - Tcl_AppendResult(interp, "channel \"", Tcl_GetChannelName(chan), - "\" wasn't opened for ", - ((writing) ? "writing" : "reading"), (char *) NULL); + Tcl_AppendResult(interp, "channel \"", Tcl_GetChannelName(chan), + "\" wasn't opened for ", + ((writing) ? "writing" : "reading"), (char *) NULL); return NULL; } *releasePtr = 1; @@ -508,7 +508,7 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, * closed when cleaning up. */ int errorRelease = 0; CONST char *p; - int skip, lastBar, lastArg, i, j, atOK, flags, errorToOutput; + int skip, lastBar, lastArg, i, j, atOK, flags, errorToOutput = 0; Tcl_DString execBuffer; TclFile pipeIn; TclFile curInFile, curOutFile, curErrFile; @@ -547,7 +547,8 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, lastBar = -1; cmdCount = 1; for (i = 0; i < argc; i++) { - skip = 0; + errorToOutput = 0; + skip = 0; p = argv[i]; switch (*p++) { case '|': @@ -601,7 +602,6 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, case '>': atOK = 1; flags = O_WRONLY | O_CREAT | O_TRUNC; - errorToOutput = 0; if (*p == '>') { p++; atOK = 0; @@ -675,10 +675,26 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, errorRelease = 0; TclpReleaseFile(errorFile); } - errorFile = FileForRedirect(interp, p, atOK, argv[i], - argv[i + 1], flags, &skip, &errorClose, &errorRelease); - if (errorFile == NULL) { - goto error; + if (atOK && p[0] == '@' && p[1] == '1' && p[2] == '\0') { + /* + * Special case handling of 2>@1 to redirect stderr to the + * exec/open output pipe as well. This is meant for the end + * of the command string, otherwise use |& between commands. + */ + if (i != argc - 1) { + Tcl_AppendResult(interp, "must specify \"", argv[i], + "\" as last word in command", (char *) NULL); + goto error; + } + errorFile = outputFile; + errorToOutput = 2; + skip = 1; + } else { + errorFile = FileForRedirect(interp, p, atOK, argv[i], + argv[i + 1], flags, &skip, &errorClose, &errorRelease); + if (errorFile == NULL) { + goto error; + } } break; } @@ -765,7 +781,12 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, } if (errorFile == NULL) { - if (errFilePtr != NULL) { + if (errorToOutput == 2) { + /* + * Handle 2>@1 special case at end of cmd line + */ + errorFile = outputFile; + } else if (errFilePtr != NULL) { /* * Set up the standard error output sink for the pipeline, if * requested. Use a temporary file which is opened, then deleted. diff --git a/tests/exec.test b/tests/exec.test index 2da0b7e..e5c9bf7 100644 --- a/tests/exec.test +++ b/tests/exec.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: exec.test,v 1.16.2.2 2004/02/25 23:38:16 dgp Exp $ +# RCS: @(#) $Id: exec.test,v 1.16.2.3 2004/07/02 23:37:31 hobbs Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -541,6 +541,10 @@ test exec-15.6 {standard error redirection} {exec stdio} { >& "$path(gorp.file)" 2> "$path(gorp.file2)" | [interpreter] "$path(echo)" biz baz list [exec [interpreter] "$path(cat)" "$path(gorp.file)"] [exec [interpreter] "$path(cat)" "$path(gorp.file2)"] } {{biz baz} {foo bar}} +test exec-15.7 {standard error redirection 2>@1} {exec stdio} { + # This redirects stderr output into normal result output from exec + exec [interpreter] "$path(sh)" -c "\"$path(echo)\" foo bar 1>&2" 2>@1 +} {foo bar} test exec-16.1 {flush output before exec} {exec} { set f [open $path(gorp.file) w] -- cgit v0.12 From 3b08ffe2fac031e39b7c213a45eb00e811a66b04 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 2 Jul 2004 23:37:39 +0000 Subject: see changes --- ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 461fae7..e564824 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-07-02 Jeff Hobbs + + * generic/regcomp.c (stid): correct minor pointer size error + + * generic/tclPipe.c (TclCreatePipeline): Add 2>@1 as a special + * tests/exec.test: case redir of stderr to the result output. + 2004-07-02 Vince Darley * tests/fileSystem.test: new tests backported -- cgit v0.12 From 942f234d4870b465504b7a6ec70339f64a9ae69e Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sat, 3 Jul 2004 22:13:10 +0000 Subject: added support for wide integers to round(); [Bug 908375], reported by Hemang Lavana. --- ChangeLog | 6 +++++ generic/tclExecute.c | 76 +++++++++++++++++++++++++--------------------------- tests/expr-old.test | 17 +++++++++++- 3 files changed, 59 insertions(+), 40 deletions(-) diff --git a/ChangeLog b/ChangeLog index e564824..56db783 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-07-03 Miguel Sofer + + * generic/tclExecute.c (ExprRoundFunc): + * tests/expr-old.test (39.1): added support for wide integers to + round(); [Bug 908375], reported by Hemang Lavana. + 2004-07-02 Jeff Hobbs * generic/regcomp.c (stid): correct minor pointer size error diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 4f3dff4..79b03b9 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.6 2004/05/25 00:08:23 hobbs Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.7 2004/07/03 22:13:10 msofer Exp $ */ #include "tclInt.h" @@ -5328,9 +5328,8 @@ ExprRoundFunc(interp, eePtr, clientData) { Tcl_Obj **stackPtr; /* Cached evaluation stack base pointer. */ register int stackTop; /* Cached top index of evaluation stack. */ - Tcl_Obj *valuePtr; - long iResult; - double d, temp; + Tcl_Obj *valuePtr, *resPtr; + double d; int result; /* @@ -5350,57 +5349,56 @@ ExprRoundFunc(interp, eePtr, clientData) result = TCL_ERROR; goto done; } - - if (valuePtr->typePtr == &tclIntType) { - iResult = valuePtr->internalRep.longValue; - } else if (valuePtr->typePtr == &tclWideIntType) { - Tcl_WideInt w; - TclGetWide(w,valuePtr); - PUSH_OBJECT(Tcl_NewWideIntObj(w)); - goto done; + + if ((valuePtr->typePtr == &tclIntType) || + (valuePtr->typePtr == &tclWideIntType)) { + result = TCL_OK; + resPtr = valuePtr; } else { d = valuePtr->internalRep.doubleValue; if (d < 0.0) { - if (d <= (((double) (long) LONG_MIN) - 0.5)) { - tooLarge: - Tcl_ResetResult(interp); - Tcl_AppendToObj(Tcl_GetObjResult(interp), - "integer value too large to represent", -1); - Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", - "integer value too large to represent", - (char *) NULL); - result = TCL_ERROR; - goto done; - } - temp = (long) (d - 0.5); + if (d <= Tcl_WideAsDouble(LLONG_MIN)-0.5) { + goto tooLarge; + } else if (d <= (((double) (long) LONG_MIN) - 0.5)) { + resPtr = Tcl_NewWideIntObj(Tcl_DoubleAsWide(d - 0.5)); + } else { + resPtr = Tcl_NewLongObj((long) (d - 0.5)); + } } else { - if (d >= (((double) LONG_MAX + 0.5))) { + if (d >= Tcl_WideAsDouble(LLONG_MAX)+0.5) { goto tooLarge; + } else if (d >= (((double) LONG_MAX + 0.5))) { + resPtr = Tcl_NewWideIntObj(Tcl_DoubleAsWide(d + 0.5)); + } else { + resPtr = Tcl_NewLongObj((long) (d + 0.5)); } - temp = (long) (d + 0.5); - } - if (IS_NAN(temp) || IS_INF(temp)) { - TclExprFloatError(interp, temp); - result = TCL_ERROR; - goto done; } - iResult = (long) temp; } /* - * Push a Tcl object with the result. - */ - - PUSH_OBJECT(Tcl_NewLongObj(iResult)); - - /* - * Reflect the change to stackTop back in eePtr. + * Push the result object and free the argument Tcl_Obj. */ + PUSH_OBJECT(resPtr); + done: TclDecrRefCount(valuePtr); DECACHE_STACK_INFO(); return result; + + /* + * Error return: result cannot be represented as an integer. + */ + + tooLarge: + Tcl_ResetResult(interp); + Tcl_AppendToObj(Tcl_GetObjResult(interp), + "integer value too large to represent", -1); + Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", + "integer value too large to represent", + (char *) NULL); + result = TCL_ERROR; + goto done; } static int diff --git a/tests/expr-old.test b/tests/expr-old.test index 17d32d2..90f5cd0 100644 --- a/tests/expr-old.test +++ b/tests/expr-old.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr-old.test,v 1.16.2.1 2003/03/27 13:49:22 dkf Exp $ +# RCS: @(#) $Id: expr-old.test,v 1.16.2.2 2004/07/03 22:13:11 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -982,6 +982,21 @@ test expr-old-38.1 {Verify Tcl_ExprString's basic operation} { } {5 10.2 1 {syntax error in expression "1+": premature end of expression}} } +# +# Test for bug #908375: rounding numbers that do not fit in a +# long but do fit in a wide +# + +test expr-old-39.1 {Rounding with wide result} { + set x 1.0e10 + set y [expr $x + 0.1] + catch { + set x [list [expr {$x == round($y)}] [expr $x == -round(-$y)]] + } + set x +} {1 1} +unset x y + # Special test for Pentium arithmetic bug of 1994: if {(4195835.0 - (4195835.0/3145727.0)*3145727.0) == 256.0} { -- cgit v0.12 From 7544eaff52bf7890c2e116fed4b1dfb654f769ed Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 13 Jul 2004 19:04:54 +0000 Subject: Fixed broken build on Windows caused by missing TCL_THREAD_CREATE_RETURN in NewThreadProc(). This is backported from head. Thnx to Kevin Kenny for spotting this. --- generic/tclEvent.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index c6d7d65..e75da52 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.4 2004/06/22 11:55:35 vasiljevic Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.5 2004/07/13 19:04:54 vasiljevic Exp $ */ #include "tclInt.h" @@ -1195,6 +1195,8 @@ NewThreadProc(ClientData clientData) TclInitNotifier(); (*threadProc)(threadClientData); + + TCL_THREAD_CREATE_RETURN; } #endif /* -- cgit v0.12 From 96d428e63bdccbffdcac3889fb1d09ad07d2e19e Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 13 Jul 2004 19:09:18 +0000 Subject: See file... --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 56db783..d2cf670 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-07-13 Zoran Vasiljevic + + * generic/tclEvent.c (NewThreadProc): Fixed broken build on + Windows caused by missing TCL_THREAD_CREATE_RETURN. This is + backported from head. Thnx to Kevin Kenny for spotting this. + 2004-07-03 Miguel Sofer * generic/tclExecute.c (ExprRoundFunc): -- cgit v0.12 From 03c72896366d45b5f5dd85fbe2af12d22e8a5162 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 13 Jul 2004 19:21:15 +0000 Subject: * README, generic/tcl.h, tools/tcl.wse.in: bumped to * unix/configure, unix/configure.in, unix/tcl.spec: patchlevel * win/README.binary, win/configure, win/configure.in: 8.4.7 --- ChangeLog | 24 +++++++++++++++--------- README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 31 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index d2cf670..7b40591 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,13 @@ +2004-07-13 Jeff Hobbs + + * README, generic/tcl.h, tools/tcl.wse.in: bumped to + * unix/configure, unix/configure.in, unix/tcl.spec: patchlevel + * win/README.binary, win/configure, win/configure.in: 8.4.7 + 2004-07-13 Zoran Vasiljevic - * generic/tclEvent.c (NewThreadProc): Fixed broken build on - Windows caused by missing TCL_THREAD_CREATE_RETURN. This is + * generic/tclEvent.c (NewThreadProc): Fixed broken build on + Windows caused by missing TCL_THREAD_CREATE_RETURN. This is backported from head. Thnx to Kevin Kenny for spotting this. 2004-07-03 Miguel Sofer @@ -74,10 +80,10 @@ 2004-06-10 Zoran Vasiljevic - * generic/tclIOUtil.c: partially corrected [Bug 932314]. - Also, corrected return values of Tcl_FSChdir() to - reflect those of the underlying platform-specific call. - Originally, return codes were mixed with those of Tcl. + * generic/tclIOUtil.c: partially corrected [Bug 932314]. + Also, corrected return values of Tcl_FSChdir() to + reflect those of the underlying platform-specific call. + Originally, return codes were mixed with those of Tcl. 2004-06-08 Miguel Sofer @@ -110,11 +116,11 @@ in [clock format], and conditioned out the clock-10.x series if they're all going to fail because of a broken strftime() call. [Bug 961714] - + 2004-05-27 Reinhard Max - * generic/tclEncoding.c: - * tests/encoding.test: added support and tests for translating + * generic/tclEncoding.c: + * tests/encoding.test: added support and tests for translating embedded null characters between real nullbytes and the internal representation on input/output (Bug #949905). diff --git a/README b/README index 3c926f0..519245f 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.6 source distribution. + This is the Tcl 8.4.7 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.6 2004/02/13 01:38:00 hobbs Exp $ +RCS: @(#) $Id: README,v 1.49.2.7 2004/07/13 19:21:16 hobbs Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index dd214de..bde43f0 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.12 2004/06/05 17:25:39 kennykb Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.13 2004/07/13 19:21:17 hobbs Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 6 +#define TCL_RELEASE_SERIAL 7 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.6" +#define TCL_PATCH_LEVEL "8.4.7" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 37858a5..1339758 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.6 + Disk Label=tcl8.4.7 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 4f11656..347c58c 100755 --- a/unix/configure +++ b/unix/configure @@ -548,7 +548,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".7" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 371615f..c1a769d 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.6 2004/02/13 01:38:02 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.7 2004/07/13 19:21:37 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".7" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 2c3b778..51360b8 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.6 2004/02/13 01:38:02 hobbs Exp $ +# $Id: tcl.spec,v 1.16.2.7 2004/07/13 19:21:38 hobbs Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.6 +%define version 8.4.7 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index 38360eb..99a4f07 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.6 2004/02/13 01:38:02 hobbs Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.7 2004/07/13 19:21:38 hobbs Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.6 for +This directory contains the binary distribution of Tcl/Tk 8.4.7 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 73899c7..cf439ef 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".7" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 8638586..64dbe89 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.8 2004/04/07 21:06:41 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.9 2004/07/13 19:21:38 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".7" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From fb349d117513e5d92abef593a66078b176225ed3 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 15 Jul 2004 09:40:39 +0000 Subject: Backout of changes to fix the Tcl Bug #770053. See SF bugreport for more info. --- generic/tclEvent.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index e75da52..6b14e59 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.5 2004/07/13 19:04:54 vasiljevic Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.6 2004/07/15 09:40:39 vasiljevic Exp $ */ #include "tclInt.h" @@ -1192,7 +1192,12 @@ NewThreadProc(ClientData clientData) threadClientData = cdPtr->clientData; Tcl_Free((char*)clientData); /* Allocated in Tcl_CreateThread() */ - TclInitNotifier(); + /* + * Please see the SF Bug #770053 comments to find out why + * this one below is commented out. + */ + + /* TclInitNotifier(); */ (*threadProc)(threadClientData); -- cgit v0.12 From 816931b3a11518954c98b53eecf1a4c0824545b8 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 15 Jul 2004 09:57:10 +0000 Subject: Remoevd initialization of TSD for the new thread in NewThreadProc() since this will result in TclInitNotifier never being called. --- generic/tclEvent.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 6b14e59..19bb0d6 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.6 2004/07/15 09:40:39 vasiljevic Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.7 2004/07/15 09:57:10 vasiljevic Exp $ */ #include "tclInt.h" @@ -1185,20 +1185,11 @@ NewThreadProc(ClientData clientData) ClientData threadClientData; Tcl_ThreadCreateProc *threadProc; - TCL_TSD_INIT(&dataKey); - cdPtr = (ThreadClientData*)clientData; threadProc = cdPtr->proc; threadClientData = cdPtr->clientData; Tcl_Free((char*)clientData); /* Allocated in Tcl_CreateThread() */ - /* - * Please see the SF Bug #770053 comments to find out why - * this one below is commented out. - */ - - /* TclInitNotifier(); */ - (*threadProc)(threadClientData); TCL_THREAD_CREATE_RETURN; -- cgit v0.12 From 3c87843ad32da0db04bc580121a56049ad5cb367 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 15 Jul 2004 20:17:48 +0000 Subject: * generic/tclIOCmd.c (Tcl_PutsObjCmd): Added length check to the old depreceated newline syntax, to ensure that only "nonewline" is accepted. [Tcl SF Bug 985869], reported by Joe Mistachkin . --- ChangeLog | 7 +++++++ generic/tclIOCmd.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7b40591..70bd297 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-07-15 Andreas Kupries + + * generic/tclIOCmd.c (Tcl_PutsObjCmd): Added length check to the + old depreceated newline syntax, to ensure that only "nonewline" + is accepted. [Tcl SF Bug 985869], reported by Joe Mistachkin + . + 2004-07-13 Jeff Hobbs * README, generic/tcl.h, tools/tcl.wse.in: bumped to diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c index bb2b567..affa53b 100644 --- a/generic/tclIOCmd.c +++ b/generic/tclIOCmd.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOCmd.c,v 1.15 2002/02/15 14:28:49 dkf Exp $ + * RCS: @(#) $Id: tclIOCmd.c,v 1.15.2.1 2004/07/15 20:17:48 andreas_kupries Exp $ */ #include "tclInt.h" @@ -102,7 +102,7 @@ Tcl_PutsObjCmd(dummy, interp, objc, objv) int length; arg = Tcl_GetStringFromObj(objv[3], &length); - if (strncmp(arg, "nonewline", (size_t) length) != 0) { + if ((length != 9) || (strncmp(arg, "nonewline", (size_t) length) != 0)) { Tcl_AppendResult(interp, "bad argument \"", arg, "\": should be \"nonewline\"", (char *) NULL); -- cgit v0.12 From 597bb3236aba9dbe1c799b8bde917c1228fd21a1 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 15 Jul 2004 20:46:17 +0000 Subject: * generic/tclIO.h (CHANNEL_INCLOSE): New flag. Set in * generic/tclIO.c (Tcl_UnregisterChannel): 'Tcl_Close' while the * generic/tclIO.c (Tcl_Close): close callbacks are run. Checked in 'Tcl_Close' and 'Tcl_Unregister' to prevent recursive call of 'close' in the close-callbacks. This is a possible error made by implementors of virtual filesystems based on 'tclvfs', thinking that they have to close the channel in the close handler for the filesystem. * generic/tclIO.c: * generic/tclIO.h: * Not reverting, but #ifdef'ing the changes from May 19, 2004 out of the core. This removes the ***POTENTIAL INCOMPATIBILITY*** for channel drivers it introduced. This has become possible due to Expect gaining a BlockModeProc and now handling blockingg and non-blocking modes correctly. Thus [SF Tcl Bug 943274] is still fixed if a recent enough version of Expect is used. * doc/CrtChannel.3: Added warning about usage of a channel without a BlockModeProc. --- ChangeLog | 31 +++++++++++++++++++++++++++++-- doc/CrtChannel.3 | 10 +++++++++- generic/tclIO.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclIO.h | 11 ++++++++++- 4 files changed, 96 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 70bd297..99ffef6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2004-07-14 Andreas Kupries + + * generic/tclIO.h (CHANNEL_INCLOSE): New flag. Set in + * generic/tclIO.c (Tcl_UnregisterChannel): 'Tcl_Close' while the + * generic/tclIO.c (Tcl_Close): close callbacks are + run. Checked in 'Tcl_Close' and 'Tcl_Unregister' to prevent + recursive call of 'close' in the close-callbacks. This is a + possible error made by implementors of virtual filesystems based + on 'tclvfs', thinking that they have to close the channel in the + close handler for the filesystem. + +2004-06-14 Andreas Kupries + + * generic/tclIO.c: + * generic/tclIO.h: + * Not reverting, but #ifdef'ing the changes from May 19, 2004 out + of the core. This removes the ***POTENTIAL INCOMPATIBILITY*** + for channel drivers it introduced. This has become possible due + to Expect gaining a BlockModeProc and now handling blockingg and + non-blocking modes correctly. Thus [SF Tcl Bug 943274] is still + fixed if a recent enough version of Expect is used. + + * doc/CrtChannel.3: Added warning about usage of a channel without + a BlockModeProc. + 2004-07-15 Andreas Kupries * generic/tclIOCmd.c (Tcl_PutsObjCmd): Added length check to the @@ -190,8 +215,8 @@ 2004-05-19 Andreas Kupries - * tclIO.c: Fixed [SF Tcl Bug 943274]. This is the same problem as - * tclIO.h: [SF Tcl Bug 462317], see ChangeLog entry + * generic/tclIO.c: Fixed [SF Tcl Bug 943274]. This is the same problem as + * generic/tclIO.h: [SF Tcl Bug 462317], see ChangeLog entry 2001-09-26. The fix done at that time is incomplete. It is possible to get around it if the actual read operation is defered and not executed in the event @@ -202,6 +227,8 @@ actual data waiting. The flag is cleared by a short or full read. + ***POTENTIAL INCOMPATIBILITY*** for channel drivers. + 2004-05-18 Kevin B. Kenny * compat/strftime.c (_fmt, ISO8601Week): diff --git a/doc/CrtChannel.3 b/doc/CrtChannel.3 index 477ef67..828b958 100644 --- a/doc/CrtChannel.3 +++ b/doc/CrtChannel.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtChannel.3,v 1.16 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.1 2004/07/15 20:46:17 andreas_kupries Exp $ .so man.macros .TH Tcl_CreateChannel 3 8.3 Tcl "Tcl Library Procedures" .BS @@ -405,6 +405,14 @@ behavior must be emulated in the channel driver. .PP This value can be retrieved with \fBTcl_ChannelBlockModeProc\fR, which returns a pointer to the function. +.PP +A channel driver \fBnot\fR supplying a \fIblockModeProc\fR has to be +very, very careful. It has to tell the generic layer exactly which +blocking mode is acceptable to it, and should this also document for +the user so that the blocking mode of the channel is not changed to an +inacceptable value. Any confusion here may lead the interpreter into a +(spurious and difficult to find) deadlock. + .SH "CLOSEPROC AND CLOSE2PROC" .PP diff --git a/generic/tclIO.c b/generic/tclIO.c index f1a3266..154bec0 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.6 2004/05/19 19:23:58 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.7 2004/07/15 20:46:18 andreas_kupries Exp $ */ #include "tclInt.h" @@ -772,6 +772,7 @@ Tcl_RegisterChannel(interp, chan) } Tcl_SetHashValue(hPtr, (ClientData) chanPtr); } + statePtr->refCount++; } @@ -808,6 +809,17 @@ Tcl_UnregisterChannel(interp, chan) { ChannelState *statePtr; /* State of the real channel. */ + statePtr = ((Channel *) chan)->state->bottomChanPtr->state; + + if (statePtr->flags & CHANNEL_INCLOSE) { + if (interp != (Tcl_Interp*) NULL) { + Tcl_AppendResult(interp, + "Illegal recursive call to close through close-handler of channel", + (char *) NULL); + } + return TCL_ERROR; + } + if (DetachChannel(interp, chan) != TCL_OK) { return TCL_OK; } @@ -2527,6 +2539,14 @@ Tcl_Close(interp, chan) if (statePtr->refCount > 0) { panic("called Tcl_Close on channel with refCount > 0"); } + + if (statePtr->flags & CHANNEL_INCLOSE) { + Tcl_AppendResult(interp, + "Illegal recursive call to close through close-handler of channel", + (char *) NULL); + return TCL_ERROR; + } + statePtr->flags |= CHANNEL_INCLOSE; /* * When the channel has an escape sequence driven encoding such as @@ -2551,6 +2571,8 @@ Tcl_Close(interp, chan) ckfree((char *) cbPtr); } + statePtr->flags &= ~CHANNEL_INCLOSE; + /* * Ensure that the last output buffer will be flushed. */ @@ -4225,6 +4247,7 @@ Tcl_ReadRaw(chan, bufPtr, bytesToRead) statePtr->flags &= (~(CHANNEL_BLOCKED)); } +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING /* [SF Tcl Bug 943274]. Better emulation of non-blocking * channels for channels without BlockModeProc, by keeping * track of true fileevents generated by the OS == Data @@ -4240,6 +4263,7 @@ Tcl_ReadRaw(chan, bufPtr, bytesToRead) nread = -1; result = EWOULDBLOCK; } else { +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ /* * Now go to the driver to get as much as is possible to * fill the remaining request. Do all the error handling @@ -4251,7 +4275,9 @@ Tcl_ReadRaw(chan, bufPtr, bytesToRead) nread = (chanPtr->typePtr->inputProc)(chanPtr->instanceData, bufPtr + copied, bytesToRead - copied, &result); +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING } +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ if (nread > 0) { /* * If we get a short read, signal up that we may be @@ -4265,11 +4291,13 @@ Tcl_ReadRaw(chan, bufPtr, bytesToRead) statePtr->flags |= CHANNEL_BLOCKED; } +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING if (nread <= (bytesToRead - copied)) { /* [SF Tcl Bug 943274] We have read the available * data, clear flag */ statePtr->flags &= ~CHANNEL_HAS_MORE_DATA; } +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ } else if (nread == 0) { statePtr->flags |= CHANNEL_EOF; statePtr->inputEncodingFlags |= TCL_ENCODING_END; @@ -5310,6 +5338,7 @@ GetInput(chanPtr) return 0; } +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING /* [SF Tcl Bug 943274]. Better emulation of non-blocking channels * for channels without BlockModeProc, by keeping track of true * fileevents generated by the OS == Data waiting and reading if @@ -5324,9 +5353,14 @@ GetInput(chanPtr) nread = -1; result = EWOULDBLOCK; } else { +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ + nread = (chanPtr->typePtr->inputProc)(chanPtr->instanceData, bufPtr->buf + bufPtr->nextAdded, toRead, &result); + +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING } +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ if (nread > 0) { bufPtr->nextAdded += nread; @@ -5342,11 +5376,13 @@ GetInput(chanPtr) statePtr->flags |= CHANNEL_BLOCKED; } +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING if (nread <= toRead) { /* [SF Tcl Bug 943274] We have read the available data, * clear flag */ statePtr->flags &= ~CHANNEL_HAS_MORE_DATA; } +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ } else if (nread == 0) { statePtr->flags |= CHANNEL_EOF; @@ -6740,6 +6776,7 @@ Tcl_NotifyChannel(channel, mask) Channel* upChanPtr; Tcl_ChannelType* upTypePtr; +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING /* [SF Tcl Bug 943274] * For a non-blocking channel without blockmodeproc we keep track * of actual input coming from the OS so that we can do a credible @@ -6753,6 +6790,7 @@ Tcl_NotifyChannel(channel, mask) statePtr->flags |= CHANNEL_HAS_MORE_DATA; } +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ /* * In contrast to the other API functions this procedure walks towards @@ -6993,6 +7031,7 @@ ChannelTimerProc(clientData) statePtr->timer = Tcl_CreateTimerHandler(0, ChannelTimerProc, (ClientData) chanPtr); +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING /* Set the TIMER flag to notify the higher levels that the * driver might have no data for us. We do this only if we are * in non-blocking mode and the driver has no BlockModeProc @@ -7004,10 +7043,15 @@ ChannelTimerProc(clientData) (Tcl_ChannelBlockModeProc(chanPtr->typePtr) == NULL)) { statePtr->flags |= CHANNEL_TIMER_FEV; } +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ + Tcl_Preserve((ClientData) statePtr); Tcl_NotifyChannel((Tcl_Channel)chanPtr, TCL_READABLE); +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING statePtr->flags &= ~CHANNEL_TIMER_FEV; +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ + Tcl_Release((ClientData) statePtr); } else { statePtr->timer = NULL; @@ -9239,8 +9283,11 @@ DumpFlags (str, flags) if (flags & INPUT_NEED_NL) {buf[i] = '*';} else {buf [i]='_';}; i++; if (flags & CHANNEL_DEAD) {buf[i] = 'D';} else {buf [i]='_';}; i++; if (flags & CHANNEL_RAW_MODE) {buf[i] = 'R';} else {buf [i]='_';}; i++; +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING if (flags & CHANNEL_TIMER_FEV) {buf[i] = 'T';} else {buf [i]='_';}; i++; if (flags & CHANNEL_HAS_MORE_DATA) {buf[i] = 'H';} else {buf [i]='_';}; i++; +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ + if (flags & CHANNEL_INCLOSE) {buf[i] = 'x';} else {buf [i]='_';}; i++; buf [i] ='\0'; fprintf (stderr,"%s: %s\n", str, buf); fflush(stderr); diff --git a/generic/tclIO.h b/generic/tclIO.h index 7f2c421..ea3c6e4 100644 --- a/generic/tclIO.h +++ b/generic/tclIO.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.h,v 1.5.4.1 2004/05/19 19:16:24 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.h,v 1.5.4.2 2004/07/15 20:46:19 andreas_kupries Exp $ */ /* @@ -296,6 +296,7 @@ typedef struct ChannelState { * the state of the channel changes. */ #define CHANNEL_RAW_MODE (1<<16) /* When set, notes that the Raw API is * being used. */ +#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING #define CHANNEL_TIMER_FEV (1<<17) /* When set the event we are * notified by is a fileevent * generated by a timer. We @@ -323,6 +324,14 @@ typedef struct ChannelState { * will be performed if the * flag is set. This will * reset the flag as well. */ +#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */ + +#define CHANNEL_INCLOSE (1<<19) /* Channel is currently being + * closed. Its structures are + * still live and usable, but + * it may not be closed again + * from within the close handler. + */ /* * For each channel handler registered in a call to Tcl_CreateChannelHandler, -- cgit v0.12 From f1672e88f2ba0cd791ed0ef2b4196696cf993c5c Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 15 Jul 2004 21:20:24 +0000 Subject: Added new fix for the Tcl Bug #770053. Now we conditionaly perform the TclFinalizeNotifier in order to correct broken ref-counting of the notifier thread. --- ChangeLog | 10 ++++++++++ generic/tclNotify.c | 16 ++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 99ffef6..85a6979 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-07-15 Zoran Vasiljevic + + * generic/tclEvent.c (NewThreadProc): Backout of changes + to fix the Tcl Bug #770053. See SF bugreport for more info. + + * generic/tclNotify.c (TclFinalizeNotifier): Added conditional + notifier finalization based on the fact that an TclInitNotifier + has been called for the current thread. This fixes the Tcl + Bug #770053 again. Hopefully this time w/o unwanted side-effects. + 2004-07-14 Andreas Kupries * generic/tclIO.h (CHANNEL_INCLOSE): New flag. Set in diff --git a/generic/tclNotify.c b/generic/tclNotify.c index d312e6c..abd4e04 100644 --- a/generic/tclNotify.c +++ b/generic/tclNotify.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNotify.c,v 1.11 2003/02/15 20:24:10 kennykb Exp $ + * RCS: @(#) $Id: tclNotify.c,v 1.11.2.1 2004/07/15 21:20:25 vasiljevic Exp $ */ #include "tclInt.h" @@ -137,7 +137,15 @@ TclInitNotifier() * * Side effects: * Removes the notifier associated with the current thread from - * the global notifier list. + * the global notifier list. This is done only if the notifier + * was initialized for this thread by call to TclInitNotifier(). + * This is always true for threads which have been seeded with + * an Tcl interpreter, since the call to Tcl_CreateInterp will, + * among other things, call TclInitializeSubsystems() and this + * one will, in turn, call the TclInitNotifier() for the thread. + * For threads created without the Tcl interpreter, though, + * nobody is explicitly nor implicitly calling the TclInitNotifier + * hence, TclFinalizeNotifier should not be performed at all. * *---------------------------------------------------------------------- */ @@ -149,6 +157,10 @@ TclFinalizeNotifier() ThreadSpecificData **prevPtrPtr; Tcl_Event *evPtr, *hold; + if (tsdPtr->threadId == (Tcl_ThreadId)0) { + return; /* Notifier not initialized for the current thread */ + } + Tcl_MutexLock(&(tsdPtr->queueMutex)); for (evPtr = tsdPtr->firstEventPtr; evPtr != (Tcl_Event *) NULL; ) { hold = evPtr; -- cgit v0.12 From 67b7d85c2dd267ed4ea308956907a48a2d186cca Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 15 Jul 2004 22:04:26 +0000 Subject: * unix/tclUnixThrd.c (TclpFinalizeMutex): Accepted Joe Mistachkin's patch for [Tcl SF Bug 99453], closing leakage of mutexes. They were not destroyed properly upon finalization. --- ChangeLog | 6 ++++++ unix/tclUnixThrd.c | 1 + 2 files changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 85a6979..45a8481 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-07-15 Andreas Kupries + + * unix/tclUnixThrd.c (TclpFinalizeMutex): Accepted Joe + Mistachkin's patch for [Tcl SF Bug 99453], closing leakage of + mutexes. They were not destroyed properly upon finalization. + 2004-07-15 Zoran Vasiljevic * generic/tclEvent.c (NewThreadProc): Backout of changes diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 78ca385..d300d34 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -494,6 +494,7 @@ TclpFinalizeMutex(mutexPtr) { pthread_mutex_t *pmutexPtr = *(pthread_mutex_t **)mutexPtr; if (pmutexPtr != NULL) { + pthread_mutex_destroy(pmutexPtr); ckfree((char *)pmutexPtr); *mutexPtr = NULL; } -- cgit v0.12 From 6d98f4802e28a85db3f31200679d8b44284f0584 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 16 Jul 2004 17:24:21 +0000 Subject: * unix/tclUnixNotfy.c (NotifierThreadProc): Accepted Joe Mistachkin's patch for [Tcl SF Bug 990500], properly closing the notifier thread when its exits. --- ChangeLog | 6 ++++++ unix/tclUnixNotfy.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 45a8481..1dddd5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-07-16 Andreas Kupries + + * unix/tclUnixNotfy.c (NotifierThreadProc): Accepted Joe + Mistachkin's patch for [Tcl SF Bug 990500], properly closing the + notifier thread when its exits. + 2004-07-15 Andreas Kupries * unix/tclUnixThrd.c (TclpFinalizeMutex): Accepted Joe diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 4449b47..233f97b 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.3 2004/06/22 11:55:36 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.4 2004/07/16 17:24:21 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1031,5 +1031,7 @@ NotifierThreadProc(clientData) triggerPipe = -1; Tcl_ConditionNotify(¬ifierCV); Tcl_MutexUnlock(¬ifierMutex); + + TclpThreadExit (0); } #endif -- cgit v0.12 From 1dc12e2b36b9cd4c047127dc903fd82caf48bfb6 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 16 Jul 2004 19:20:25 +0000 Subject: * tests/socket.test: Accepted two new testcases by Stuart Casoff checking that -server and -async don't go together [Tcl SF Bug 796534]. --- ChangeLog | 4 ++++ tests/socket.test | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1dddd5b..384f999 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-07-16 Andreas Kupries + * tests/socket.test: Accepted two new testcases by Stuart Casoff + checking that -server and -async + don't go together [Tcl SF Bug 796534]. + * unix/tclUnixNotfy.c (NotifierThreadProc): Accepted Joe Mistachkin's patch for [Tcl SF Bug 990500], properly closing the notifier thread when its exits. diff --git a/tests/socket.test b/tests/socket.test index 63e7a26..ab5c89c 100644 --- a/tests/socket.test +++ b/tests/socket.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: socket.test,v 1.26.2.2 2004/02/25 23:38:17 dgp Exp $ +# RCS: @(#) $Id: socket.test,v 1.26.2.3 2004/07/16 19:20:25 andreas_kupries Exp $ # Running socket tests with a remote server: # ------------------------------------------ @@ -242,6 +242,12 @@ socket -server command ?-myaddr addr? port}} test socket-1.12 {arg parsing for socket command} {socket} { list [catch {socket foo badport} msg] $msg } {1 {expected integer but got "badport"}} +test socket-1.13 {arg parsing for socket command} {socket} { +list [catch {socket -async -server} msg] $msg +} {1 {cannot set -async option for server sockets}} +test socket-1.14 {arg parsing for socket command} {socket} { +list [catch {socket -server foo -async} msg] $msg +} {1 {cannot set -async option for server sockets}} set path(script) [makeFile {} script] -- cgit v0.12 From da39235f939a0c792be89d31b916ad074418409e Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 16 Jul 2004 19:42:59 +0000 Subject: Typo fix. --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 384f999..7b6046c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,7 +11,7 @@ 2004-07-15 Andreas Kupries * unix/tclUnixThrd.c (TclpFinalizeMutex): Accepted Joe - Mistachkin's patch for [Tcl SF Bug 99453], closing leakage of + Mistachkin's patch for [Tcl SF Bug 990453], closing leakage of mutexes. They were not destroyed properly upon finalization. 2004-07-15 Zoran Vasiljevic -- cgit v0.12 From c3aad42ff98f12c1125adffa3005da0d29e35891 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 16 Jul 2004 20:10:58 +0000 Subject: * doc/ChnlStack.3: Removed the declaration that the interp argument to Tcl_(un)StackChannel can be NULL. This fixes [Tcl SF Bug 881220], reported by Marco Maggi . --- ChangeLog | 5 +++++ doc/ChnlStack.3 | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7b6046c..a0a535b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2004-07-16 Andreas Kupries + * doc/ChnlStack.3: Removed the declaration that the interp + argument to Tcl_(un)StackChannel can be NULL. This fixes [Tcl SF + Bug 881220], reported by Marco Maggi + . + * tests/socket.test: Accepted two new testcases by Stuart Casoff checking that -server and -async don't go together [Tcl SF Bug 796534]. diff --git a/doc/ChnlStack.3 b/doc/ChnlStack.3 index 0e8f9cd..ad2d4d5 100644 --- a/doc/ChnlStack.3 +++ b/doc/ChnlStack.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: ChnlStack.3,v 1.4 2002/01/23 21:22:06 andreas_kupries Exp $ +'\" RCS: @(#) $Id: ChnlStack.3,v 1.4.4.1 2004/07/16 20:10:58 andreas_kupries Exp $ .so man.macros .TH Tcl_StackChannel 3 8.3 Tcl "Tcl Library Procedures" .BS @@ -31,7 +31,7 @@ Tcl_Channel .SH ARGUMENTS .AS Tcl_ChannelType .AP Tcl_Interp *interp in -Interpreter for error reporting - can be NULL. +Interpreter for error reporting. .AP Tcl_ChannelType *typePtr in The new channel I/O procedures to use for \fIchannel\fP. .AP ClientData clientData in -- cgit v0.12 From 6f9be46dca324a11afaa829bda9fd4c6d777a1c3 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 16 Jul 2004 20:46:51 +0000 Subject: * doc/CrtCommand.3: Added note that the arguments given to the command proc of a Tcl_CreateCommand are in utf8 since Tcl 8.1. Closing [Tcl SF Patch 414778]. --- ChangeLog | 4 ++++ doc/CrtCommand.3 | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a0a535b..9cab49f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-07-16 Andreas Kupries + * doc/CrtCommand.3: Added note that the arguments given to the + command proc of a Tcl_CreateCommand are in utf8 since Tcl + 8.1. Closing [Tcl SF Patch 414778]. + * doc/ChnlStack.3: Removed the declaration that the interp argument to Tcl_(un)StackChannel can be NULL. This fixes [Tcl SF Bug 881220], reported by Marco Maggi diff --git a/doc/CrtCommand.3 b/doc/CrtCommand.3 index f766361..569975f 100644 --- a/doc/CrtCommand.3 +++ b/doc/CrtCommand.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtCommand.3,v 1.5 2002/08/05 03:24:39 dgp Exp $ +'\" RCS: @(#) $Id: CrtCommand.3,v 1.5.2.1 2004/07/16 20:46:52 andreas_kupries Exp $ '\" .so man.macros .TH Tcl_CreateCommand 3 "" Tcl "Tcl Library Procedures" @@ -103,6 +103,11 @@ point to constant strings or may be shared with other parts of the interpreter. .VE .PP +.VS +Note that the argument strings are encoded in normalized UTF-8 since +version 8.1 of Tcl. +.VE +.PP \fIProc\fR must return an integer code that is either \fBTCL_OK\fR, \fBTCL_ERROR\fR, \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR. See the Tcl overview man page for details on what these codes mean. Most normal commands will only -- cgit v0.12 From 554d0e544dd8f6c9678f730a8ebce9a517ad7813 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 16 Jul 2004 22:22:13 +0000 Subject: * doc/OpenFileChnl.3: Added description of the behaviour of Tcl_ReadChars when its 'charsToRead' argument is set to -1. Fixes [Tcl SF Bug 934511]. --- ChangeLog | 4 ++++ doc/OpenFileChnl.3 | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9cab49f..60876f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-07-16 Andreas Kupries + * doc/OpenFileChnl.3: Added description of the behaviour of + Tcl_ReadChars when its 'charsToRead' argument is set to + -1. Fixes [Tcl SF Bug 934511]. + * doc/CrtCommand.3: Added note that the arguments given to the command proc of a Tcl_CreateCommand are in utf8 since Tcl 8.1. Closing [Tcl SF Patch 414778]. diff --git a/doc/OpenFileChnl.3 b/doc/OpenFileChnl.3 index e54972f..dd65367 100644 --- a/doc/OpenFileChnl.3 +++ b/doc/OpenFileChnl.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: OpenFileChnl.3,v 1.20.2.3 2004/05/17 09:22:11 dkf Exp $ +'\" RCS: @(#) $Id: OpenFileChnl.3,v 1.20.2.4 2004/07/16 22:22:15 andreas_kupries Exp $ .so man.macros .TH Tcl_OpenFileChannel 3 8.3 Tcl "Tcl Library Procedures" .BS @@ -435,6 +435,10 @@ that were stored in \fIreadObjPtr\fR. If an error occurs while reading, the return value is \-1 and \fBTcl_ReadChars\fR records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. .PP +Setting \fIcharsToRead\fR to \fB-1\fR will cause the command to read +all characters currently available (non-blocking) or everything until +eof (blocking mode). +.PP The return value may be smaller than the value to read, indicating that less data than requested was available. This is called a \fIshort read\fR. In blocking mode, this can only happen on an end-of-file. In nonblocking mode, -- cgit v0.12 From d03d0ed2481529c1670ed26cee493f9c6abffb40 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 16 Jul 2004 22:38:36 +0000 Subject: * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Corrected a typo in the generation of error messages and simplified by reusing data in a variable instead of retrieving the string again. Fixes [Tcl SF Bug 835289]. --- ChangeLog | 4 ++++ generic/tclIOCmd.c | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 60876f5..a39b0b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-07-16 Andreas Kupries + * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Corrected a typo in the + generation of error messages and simplified by reusing data in a + variable instead of retrieving the string again. Fixes [Tcl SF Bug 835289]. + * doc/OpenFileChnl.3: Added description of the behaviour of Tcl_ReadChars when its 'charsToRead' argument is set to -1. Fixes [Tcl SF Bug 934511]. diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c index affa53b..d49193b 100644 --- a/generic/tclIOCmd.c +++ b/generic/tclIOCmd.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOCmd.c,v 1.15.2.1 2004/07/15 20:17:48 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIOCmd.c,v 1.15.2.2 2004/07/16 22:38:37 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1515,7 +1515,7 @@ Tcl_FcopyObjCmd(dummy, interp, objc, objv) } if ((mode & TCL_READABLE) == 0) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "channel \"", - Tcl_GetString(objv[1]), + arg, "\" wasn't opened for reading", (char *) NULL); return TCL_ERROR; } @@ -1526,7 +1526,7 @@ Tcl_FcopyObjCmd(dummy, interp, objc, objv) } if ((mode & TCL_WRITABLE) == 0) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "channel \"", - Tcl_GetString(objv[1]), + arg, "\" wasn't opened for writing", (char *) NULL); return TCL_ERROR; } -- cgit v0.12 From 48736811b83b5c70f8e77e05cf69ab9ae173bb5d Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Mon, 19 Jul 2004 19:23:02 +0000 Subject: Redefined MASTER_LOCK to call TclpMasterLock for the sake of Tcl API users never creating interpreters. --- ChangeLog | 5 +++++ win/tclWinThrd.c | 10 ++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index a39b0b6..90237ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-07-19 Zoran Vasiljevic + + * win/tclwinThrd.c: redefined MASTER_LOCK to call + TclpMasterLock. Fixes Bug #987967 + 2004-07-16 Andreas Kupries * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Corrected a typo in the diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index f7fe507..4f0caac 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.6 2004/06/22 11:55:36 vasiljevic Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.7 2004/07/19 19:23:03 vasiljevic Exp $ */ #include "tclWinInt.h" @@ -25,8 +25,9 @@ static CRITICAL_SECTION masterLock; static int init = 0; -#define MASTER_LOCK EnterCriticalSection(&masterLock) -#define MASTER_UNLOCK LeaveCriticalSection(&masterLock) +#define MASTER_LOCK TclpMasterLock() +#define MASTER_UNLOCK TclpMasterUnlock() + /* * This is the master lock used to serialize initialization and finalization @@ -427,13 +428,14 @@ TclFinalizeLock () { MASTER_LOCK; DeleteCriticalSection(&joinLock); + /* Destroy the critical section that we are holding! */ DeleteCriticalSection(&masterLock); init = 0; #ifdef TCL_THREADS DeleteCriticalSection(&allocLock); allocOnce = 0; #endif - /* Destroy the critical section that we are holding. */ + /* Destroy the critical section that we are holding! */ DeleteCriticalSection(&initLock); } -- cgit v0.12 From 34259c8123aa7777282ae8029f04aa8caea77e1c Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 19 Jul 2004 20:12:23 +0000 Subject: * unix/Makefile.in, unix/tcl.m4: move (C|LD)FLAGS after their * unix/configure.in, unix/configure: _DEFAULT to allow for env setting to override m4 switches. Consolidate header checks to limit redundancy in configure. (CFLAGS_WARNING): Remove -Wconversion, add -fno-strict-aliasing for gcc builds (need to suppress 3.x type puning warnings). (SC_ENABLE_THREADS): Set m4 to force threaded build when built against a threaded Tcl core. Reorder configure.in for better 64-bit build configuration, replacing EXTRA_CFLAGS with CFLAGS. [Bug #874058] --- ChangeLog | 13 + unix/Makefile.in | 8 +- unix/configure | 8074 +++++++++++++++++++++++++++-------------------------- unix/configure.in | 53 +- unix/tcl.m4 | 200 +- 5 files changed, 4197 insertions(+), 4151 deletions(-) diff --git a/ChangeLog b/ChangeLog index 90237ed..e67637a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2004-07-19 Jeff Hobbs + + * unix/Makefile.in, unix/tcl.m4: move (C|LD)FLAGS after their + * unix/configure.in, unix/configure: _DEFAULT to allow for env + setting to override m4 switches. + Consolidate header checks to limit redundancy in configure. + (CFLAGS_WARNING): Remove -Wconversion, add -fno-strict-aliasing + for gcc builds (need to suppress 3.x type puning warnings). + (SC_ENABLE_THREADS): Set m4 to force threaded build when built + against a threaded Tcl core. + Reorder configure.in for better 64-bit build configuration, + replacing EXTRA_CFLAGS with CFLAGS. [Bug #874058] + 2004-07-19 Zoran Vasiljevic * win/tclwinThrd.c: redefined MASTER_LOCK to call diff --git a/unix/Makefile.in b/unix/Makefile.in index 1da4b77..6a0aad0 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.4 2003/07/23 15:40:39 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.5 2004/07/19 20:12:24 hobbs Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -90,12 +90,12 @@ CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@ #CFLAGS = $(CFLAGS_DEBUG) #CFLAGS = $(CFLAGS_OPTIMIZE) #CFLAGS = $(CFLAGS_DEBUG) $(CFLAGS_OPTIMIZE) -CFLAGS = @CFLAGS@ @CFLAGS_DEFAULT@ -DTCL_DBGX=$(TCL_DBGX) +CFLAGS = @CFLAGS_DEFAULT@ @CFLAGS@ -DTCL_DBGX=$(TCL_DBGX) # Flags to pass to the linker LDFLAGS_DEBUG = @LDFLAGS_DEBUG@ LDFLAGS_OPTIMIZE = @LDFLAGS_OPTIMIZE@ -LDFLAGS = @LDFLAGS@ @LDFLAGS_DEFAULT@ +LDFLAGS = @LDFLAGS_DEFAULT@ @LDFLAGS@ # To disable ANSI-C procedure prototypes reverse the comment characters # on the following lines: @@ -239,7 +239,7 @@ DYLIB_INSTALL_DIR = ${LIB_RUNTIME_DIR} COMPAT_OBJS = @LIBOBJS@ -AC_FLAGS = @EXTRA_CFLAGS@ @DEFS@ +AC_FLAGS = @DEFS@ AR = @AR@ RANLIB = @RANLIB@ SRC_DIR = @srcdir@ diff --git a/unix/configure b/unix/configure index 347c58c..c026b5d 100755 --- a/unix/configure +++ b/unix/configure @@ -19,9 +19,6 @@ ac_help="$ac_help ac_help="$ac_help --enable-threads build with threads" ac_help="$ac_help - --enable-langinfo use nl_langinfo if possible to determine - encoding at startup, otherwise use old heuristic" -ac_help="$ac_help --enable-shared build and link with shared libraries [--enable-shared]" ac_help="$ac_help --enable-64bit enable 64bit support (where applicable)" @@ -32,6 +29,9 @@ ac_help="$ac_help ac_help="$ac_help --enable-symbols build with debugging symbols [--disable-symbols]" ac_help="$ac_help + --enable-langinfo use nl_langinfo if possible to determine + encoding at startup, otherwise use old heuristic" +ac_help="$ac_help --enable-framework package shared libraries in MacOSX frameworks [--disable-framework]" # Initialize some variables set by options. @@ -830,126 +830,6 @@ else fi fi -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:835: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:856: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:873: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:890: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -for ac_hdr in unistd.h limits.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:918: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - #------------------------------------------------------------------------ # Threads support @@ -957,7 +837,7 @@ done echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:961: checking for building with threads" >&5 +echo "configure:841: checking for building with threads" >&5 # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then enableval="$enable_threads" @@ -967,8 +847,12 @@ else fi - if test "$tcl_ok" = "yes"; then - echo "$ac_t""yes" 1>&6 + if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then + if test "${TCL_THREADS}" = 1; then + echo "$ac_t""yes (threaded core)" 1>&6 + else + echo "$ac_t""yes" 1>&6 + fi TCL_THREADS=1 cat >> confdefs.h <<\EOF #define TCL_THREADS 1 @@ -989,7 +873,7 @@ EOF EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:993: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:877: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -997,7 +881,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1036,7 +920,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1040: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:924: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1044,7 +928,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:943: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1083,7 +967,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1087: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:971: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1091,7 +975,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1128,7 +1012,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1132: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1016: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1136,7 +1020,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1170,7 +1054,7 @@ fi if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1174: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1058: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1178,7 +1062,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1229,12 +1113,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1233: checking for $ac_func" >&5 +echo "configure:1117: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1284,12 +1168,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1288: checking for $ac_func" >&5 +echo "configure:1172: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1340,12 +1224,12 @@ done for ac_func in readdir_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1344: checking for $ac_func" >&5 +echo "configure:1228: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1407,18 +1291,18 @@ done if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1411: checking if the compiler understands -pipe" >&5 +echo "configure:1295: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1433,1132 +1317,1314 @@ fi fi #-------------------------------------------------------------------- -# Detect what compiler flags to set for 64-bit support. +# Look for libraries that we will need when compiling the Tcl shell #-------------------------------------------------------------------- - - echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:1442: checking for required early compiler flags" >&5 - tcl_flags="" - - if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:1325: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. cat > conftest.$ac_ext < -int main() { -char *p = (char *)strtoll; char *q = (char *)strtoull; -; return 0; } +#include +Syntax Error EOF -if { (eval echo configure:1456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_flag__isoc99_source=no +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < -int main() { -char *p = (char *)strtoll; char *q = (char *)strtoull; -; return 0; } +#include +Syntax Error EOF -if { (eval echo configure:1472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1363: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_flag__isoc99_source=yes + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1380: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_flag__isoc99_source=no + CPP=/lib/cpp +fi +rm -f conftest* fi rm -f conftest* fi rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" fi +echo "$ac_t""$CPP" 1>&6 - if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define _ISOC99_SOURCE 1 -EOF - tcl_flags="$tcl_flags _ISOC99_SOURCE" - fi - - if eval "test \"`echo '$''{'tcl_cv_flag__largefile64_source'+set}'`\" = set"; then + #-------------------------------------------------------------------- + # On a few very rare systems, all of the libm.a stuff is + # already in libc.a. Set compiler flags accordingly. + # Also, Linux requires the "ieee" library for math to work + # right (and it must appear before "-lm"). + #-------------------------------------------------------------------- + + echo $ac_n "checking for sin""... $ac_c" 1>&6 +echo "configure:1413: checking for sin" >&5 +if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char sin(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char sin(); + int main() { -struct stat64 buf; int i = stat64("/", &buf); + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_sin) || defined (__stub___sin) +choke me +#else +sin(); +#endif + ; return 0; } EOF -if { (eval echo configure:1505: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_flag__largefile64_source=no + eval "ac_cv_func_sin=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - cat > conftest.$ac_ext <&6 + MATH_LIBS="" +else + echo "$ac_t""no" 1>&6 +MATH_LIBS="-lm" +fi + + echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 +echo "configure:1462: checking for main in -lieee" >&5 +ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lieee $LIBS" +cat > conftest.$ac_ext < + int main() { -struct stat64 buf; int i = stat64("/", &buf); +main() ; return 0; } EOF -if { (eval echo configure:1521: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_flag__largefile64_source=yes + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_flag__largefile64_source=no + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" + fi -rm -f conftest* +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + MATH_LIBS="-lieee $MATH_LIBS" +else + echo "$ac_t""no" 1>&6 fi - if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define _LARGEFILE64_SOURCE 1 -EOF - - tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" - fi - if test "x${tcl_flags}" = "x" ; then - echo "$ac_t""none" 1>&6 - else - echo "$ac_t""${tcl_flags}" 1>&6 - fi + #-------------------------------------------------------------------- + # Interactive UNIX requires -linet instead of -lsocket, plus it + # needs net/errno.h to define the socket-related error codes. + #-------------------------------------------------------------------- - echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:1550: checking for 64-bit integer type" >&5 - if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then + echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 +echo "configure:1504: checking for main in -linet" >&5 +ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - tcl_cv_type_64bit=none - # See if the compiler knows natively about __int64 - cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_type_64bit=__int64 + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_type_64bit="long long" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* - # See if we should use long anyway Note that we substitute in the - # type that is our current guess for a 64-bit type inside this check - # program, so it should be modified only carefully... - if test "$cross_compiling" = yes; then - : +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -linet" +else + echo "$ac_t""no" 1>&6 +fi + + ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 +echo "configure:1541: checking for net/errno.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < - int main() {exit(!(sizeof(${tcl_type_64bit}) > sizeof(long)));} - +#include EOF -if { (eval echo configure:1588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_type_64bit=${tcl_type_64bit} +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1551: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - : + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -rm -fr conftest* +rm -f conftest* fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_NET_ERRNO_H 1 +EOF +else + echo "$ac_t""no" 1>&6 fi - if test "${tcl_cv_type_64bit}" = none ; then - cat >> confdefs.h <<\EOF -#define TCL_WIDE_INT_IS_LONG 1 -EOF - - echo "$ac_t""using long" 1>&6 - else - cat >> confdefs.h <&6 + #-------------------------------------------------------------------- + # Check for the existence of the -lsocket and -lnsl libraries. + # The order here is important, so that they end up in the right + # order in the command line generated by make. Here are some + # special considerations: + # 1. Use "connect" and "accept" to check for -lsocket, and + # "gethostbyname" to check for -lnsl. + # 2. Use each function name only once: can't redo a check because + # autoconf caches the results of the last check and won't redo it. + # 3. Use -lnsl and -lsocket only if they supply procedures that + # aren't already present in the normal libraries. This is because + # IRIX 5.2 has libraries, but they aren't needed and they're + # bogus: they goof up name resolution if used. + # 4. On some SVR4 systems, can't use -lsocket without -lnsl too. + # To get around this problem, check for both libraries together + # if -lsocket doesn't work by itself. + #-------------------------------------------------------------------- - # Now check for auxiliary declarations - echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:1617: checking for struct dirent64" >&5 - if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then + tcl_checkBoth=0 + echo $ac_n "checking for connect""... $ac_c" 1>&6 +echo "configure:1596: checking for connect" >&5 +if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - cat > conftest.$ac_ext < conftest.$ac_ext < -#include +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char connect(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect(); + int main() { -struct dirent64 p; + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_connect) || defined (__stub___connect) +choke me +#else +connect(); +#endif + ; return 0; } EOF -if { (eval echo configure:1631: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_struct_dirent64=yes + eval "ac_cv_func_connect=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_struct_dirent64=no + eval "ac_cv_func_connect=no" fi rm -f conftest* fi - if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define HAVE_STRUCT_DIRENT64 1 -EOF - - fi - echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 +if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_checkSocket=0 +else + echo "$ac_t""no" 1>&6 +tcl_checkSocket=1 +fi - echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:1652: checking for struct stat64" >&5 - if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then + if test "$tcl_checkSocket" = 1; then + echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 +echo "configure:1646: checking for setsockopt" >&5 +if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - cat > conftest.$ac_ext < conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char setsockopt(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char setsockopt(); + int main() { -struct stat64 p; + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_setsockopt) || defined (__stub___setsockopt) +choke me +#else +setsockopt(); +#endif ; return 0; } EOF -if { (eval echo configure:1666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_struct_stat64=yes + eval "ac_cv_func_setsockopt=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_struct_stat64=no + eval "ac_cv_func_setsockopt=no" fi rm -f conftest* fi - if test "x${tcl_cv_struct_stat64}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define HAVE_STRUCT_STAT64 1 -EOF - - fi - echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 - - echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:1687: checking for off64_t" >&5 - if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then +if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 +echo "configure:1692: checking for setsockopt in -lsocket" >&5 +ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - cat > conftest.$ac_ext < conftest.$ac_ext < -int main() { -off64_t offset; +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char setsockopt(); +int main() { +setsockopt() ; return 0; } EOF -if { (eval echo configure:1701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_type_off64_t=yes + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_type_off64_t=no + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lsocket" +else + echo "$ac_t""no" 1>&6 +tcl_checkBoth=1 fi - if test "x${tcl_cv_type_off64_t}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define HAVE_TYPE_OFF64_T 1 -EOF +fi - fi - echo "$ac_t""${tcl_cv_type_off64_t}" 1>&6 fi - -#-------------------------------------------------------------------- -# Check endianness because we can optimize comparisons of -# Tcl_UniChar strings to memcmp on big-endian systems. -#-------------------------------------------------------------------- - -echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:1728: checking whether byte ordering is bigendian" >&5 -if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_c_bigendian=unknown -# See if sys/param.h defines the BYTE_ORDER macro. -cat > conftest.$ac_ext < -#include -int main() { - -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif -; return 0; } -EOF -if { (eval echo configure:1746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - # It does; now see whether it defined to BIG_ENDIAN or not. -cat > conftest.$ac_ext < -#include -int main() { - -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif -; return 0; } -EOF -if { (eval echo configure:1761: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_bigendian=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_c_bigendian=no -fi -rm -f conftest* -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -if test $ac_cv_c_bigendian = unknown; then -if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_c_bigendian=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_bigendian=yes -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_c_bigendian" 1>&6 -if test $ac_cv_c_bigendian = yes; then - cat >> confdefs.h <<\EOF -#define WORDS_BIGENDIAN 1 -EOF - -fi - - -#-------------------------------------------------------------------- -# Supply substitutes for missing POSIX library procedures, or -# set flags so Tcl uses alternate procedures. -#-------------------------------------------------------------------- - -# Check if Posix compliant getcwd exists, if not we'll use getwd. -for ac_func in getcwd -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1827: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + if test "$tcl_checkBoth" = 1; then + tk_oldLibs=$LIBS + LIBS="$LIBS -lsocket -lnsl" + echo $ac_n "checking for accept""... $ac_c" 1>&6 +echo "configure:1739: checking for accept" >&5 +if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char $ac_func(); +char accept(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined (__stub_accept) || defined (__stub___accept) choke me #else -$ac_func(); +accept(); #endif ; return 0; } EOF -if { (eval echo configure:1855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "ac_cv_func_accept=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "ac_cv_func_accept=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'accept`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -cat >> confdefs.h <<\EOF -#define USEGETWD 1 -EOF - +LIBS=$tk_oldLibs fi -done - -# Nb: if getcwd uses popen and pwd(1) (like SunOS 4) we should really -# define USEGETWD even if the posix getcwd exists. Add a test ? -for ac_func in opendir strstr -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1889: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + fi + echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 +echo "configure:1789: checking for gethostbyname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char $ac_func(); +char gethostbyname(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else -$ac_func(); +gethostbyname(); #endif ; return 0; } EOF -if { (eval echo configure:1917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "ac_cv_func_gethostbyname=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "ac_cv_func_gethostbyname=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" -fi -done - - - -for ac_func in strtol strtoll strtoull tmpnam waitpid -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1947: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then +echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 +echo "configure:1835: checking for gethostbyname in -lnsl" >&5 +ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char $ac_func(); +char gethostbyname(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - +gethostbyname() ; return 0; } EOF -if { (eval echo configure:1975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -fi +LIBS="$ac_save_LIBS" -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" fi -done +fi -echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:2002: checking for strerror" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strerror(); + + # Don't perform the eval of the libraries here because DL_LIBS + # won't be set until we call SC_CONFIG_CFLAGS -int main() { + TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}' + + -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_strerror) || defined (__stub___strerror) -choke me -#else -strerror(); -#endif -; return 0; } -EOF -if { (eval echo configure:2030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_strerror=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_strerror=no" -fi -rm -f conftest* -fi +# Add the threads support libraries -if eval "test \"`echo '$ac_cv_func_'strerror`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_STRERROR 1 -EOF +LIBS="$LIBS$THREADS_LIBS" -fi -echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:2054: checking for getwd" >&5 -if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getwd(); + echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 +echo "configure:1891: checking how to build libraries" >&5 + # Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + tcl_ok=$enableval +else + tcl_ok=yes +fi -int main() { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_getwd) || defined (__stub___getwd) -choke me -#else -getwd(); -#endif + if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + tcl_ok=$enableval + else + tcl_ok=yes + fi -; return 0; } + if test "$tcl_ok" = "yes" ; then + echo "$ac_t""shared" 1>&6 + SHARED_BUILD=1 + else + echo "$ac_t""static" 1>&6 + SHARED_BUILD=0 + cat >> confdefs.h <<\EOF +#define STATIC_BUILD 1 EOF -if { (eval echo configure:2082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_getwd=yes" + + fi + + +#-------------------------------------------------------------------- +# The statements below define a collection of compile flags. This +# macro depends on the value of SHARED_BUILD, and should be called +# after SC_ENABLE_SHARED checks the configure switches. +#-------------------------------------------------------------------- + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1930: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_getwd=no" + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" fi -rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'getwd`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 else echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_GETWD 1 -EOF - fi -echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:2106: checking for wait3" >&5 -if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char wait3(); -int main() { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_wait3) || defined (__stub___wait3) -choke me -#else -wait3(); -#endif + # Step 0.a: Enable 64 bit support? -; return 0; } -EOF -if { (eval echo configure:2134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_wait3=yes" + echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 +echo "configure:1962: checking if 64bit support is requested" >&5 + # Check whether --enable-64bit or --disable-64bit was given. +if test "${enable_64bit+set}" = set; then + enableval="$enable_64bit" + : else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_wait3=no" -fi -rm -f conftest* + enableval="no" fi -if eval "test \"`echo '$ac_cv_func_'wait3`\" = yes"; then - echo "$ac_t""yes" 1>&6 + + if test "$enableval" = "yes"; then + do64bit=yes + else + do64bit=no + fi + echo "$ac_t""$do64bit" 1>&6 + + # Step 0.b: Enable Solaris 64 bit VIS support? + + echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 +echo "configure:1982: checking if 64bit Sparc VIS support is requested" >&5 + # Check whether --enable-64bit-vis or --disable-64bit-vis was given. +if test "${enable_64bit_vis+set}" = set; then + enableval="$enable_64bit_vis" : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_WAIT3 1 -EOF - + enableval="no" fi -echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:2158: checking for uname" >&5 -if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then + + if test "$enableval" = "yes"; then + # Force 64bit on with VIS + do64bit=yes + do64bitVIS=yes + else + do64bitVIS=no + fi + echo "$ac_t""$do64bitVIS" 1>&6 + + # Step 1: set the variable "system" to hold the name and version number + # for the system. This can usually be done via the "uname" command, but + # there are a few systems, like Next, where this doesn't work. + + echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 +echo "configure:2006: checking system version (for dynamic loading)" >&5 + if test -f /usr/lib/NextStep/software_version; then + system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` + else + system=`uname -s`-`uname -r` + if test "$?" -ne 0 ; then + echo "$ac_t""unknown (can't find uname command)" 1>&6 + system=unknown + else + # Special check for weird MP-RAS system (uname returns weird + # results, and the version is kept in special file). + + if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then + system=MP-RAS-`awk '{print }' /etc/.relid'` + fi + if test "`uname -s`" = "AIX" ; then + system=AIX-`uname -v`.`uname -r` + fi + echo "$ac_t""$system" 1>&6 + fi + fi + + # Step 2: check for existence of -ldl library. This is needed because + # Linux can use either -ldl or -ldld for dynamic loading. + + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "configure:2032: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char uname(); +char dlopen(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_uname) || defined (__stub___uname) -choke me -#else -uname(); -#endif - +dlopen() ; return 0; } EOF -if { (eval echo configure:2186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_uname=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_uname=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -fi +LIBS="$ac_save_LIBS" -if eval "test \"`echo '$ac_cv_func_'uname`\" = yes"; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + have_dl=yes else echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_UNAME 1 -EOF - +have_dl=no fi -echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:2210: checking for realpath" >&5 -if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char realpath(); -int main() { + # Require ranlib early so we can override it in special cases below. -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_realpath) || defined (__stub___realpath) -choke me -#else -realpath(); -#endif + -; return 0; } -EOF -if { (eval echo configure:2238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_realpath=yes" + # Step 3: set configuration options based on system name and version. + + do64bit_ok=no + LDFLAGS_ORIG="$LDFLAGS" + TCL_EXPORT_FILE_SUFFIX="" + UNSHARED_LIB_SUFFIX="" + TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' + ECHO_VERSION='`echo ${VERSION}`' + TCL_LIB_VERSIONS_OK=ok + CFLAGS_DEBUG=-g + CFLAGS_OPTIMIZE=-O + if test "$GCC" = "yes" ; then + CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing" + else + CFLAGS_WARNING="" + fi + TCL_NEEDS_EXP_FILE=0 + TCL_BUILD_EXP_FILE="" + TCL_EXP_FILE="" + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2099: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_realpath=no" + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_AR="ar" + break + fi + done + IFS="$ac_save_ifs" fi -rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : +AR="$ac_cv_prog_AR" +if test -n "$AR"; then + echo "$ac_t""$AR" 1>&6 else echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_REALPATH 1 -EOF - fi + if test "${AR}" = "" ; then + { echo "configure: error: Required archive tool 'ar' not found on PATH." 1>&2; exit 1; } + fi + STLIB_LD='${AR} cr' + LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" + PLAT_OBJS="" + case $system in + AIX-5.*) + if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then + # AIX requires the _r compiler when gcc isn't being used + if test "${CC}" != "cc_r" ; then + CC=${CC}_r + fi + echo "$ac_t""Using $CC for compiling with threads" 1>&6 + fi + LIBS="$LIBS -lc" + # AIX-5 uses ELF style dynamic libraries + SHLIB_CFLAGS="" + # Note: need the LIBS below, otherwise Tk won't find Tcl's + # symbols when dynamically loaded into tclsh. + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" -#-------------------------------------------------------------------- -# Supply substitutes for missing POSIX header files. Special -# notes: -# - stdlib.h doesn't define strtol, strtoul, or -# strtod insome versions of SunOS -# - some versions of string.h don't declare procedures such -# as strstr -#-------------------------------------------------------------------- + DL_OBJS="tclLoadDl.o" + LD_LIBRARY_PATH_VAR="LIBPATH" - echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:2273: checking dirent.h" >&5 - cat > conftest.$ac_ext < -#include -int main() { + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 + else + do64bit_ok=yes + CFLAGS="$CFLAGS -q64" + LDFLAGS="$LDFLAGS -q64" + RANLIB="${RANLIB} -X64" + AR="${AR} -X64" + SHLIB_LD_FLAGS="-b64" + fi + fi -#ifndef _POSIX_SOURCE -# ifdef __Lynx__ - /* - * Generate compilation error to make the test fail: Lynx headers - * are only valid if really in the POSIX environment. - */ + if test "`uname -m`" = "ia64" ; then + # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC + SHLIB_LD="/usr/ccs/bin/ld -G -z text" + # AIX-5 has dl* in libc.so + DL_LIBS="" + if test "$GCC" = "yes" ; then + CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + else + CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' + fi + LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' + else + SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + TCL_NEEDS_EXP_FILE=1 + TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' + fi + ;; + AIX-*) + if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then + # AIX requires the _r compiler when gcc isn't being used + if test "${CC}" != "cc_r" ; then + CC=${CC}_r + fi + echo "$ac_t""Using $CC for compiling with threads" 1>&6 + fi + LIBS="$LIBS -lc" + SHLIB_CFLAGS="" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + LD_LIBRARY_PATH_VAR="LIBPATH" + TCL_NEEDS_EXP_FILE=1 + TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' - missing_procedure(); -# endif -#endif -DIR *d; -struct dirent *entryPtr; -char *p; -d = opendir("foobar"); -entryPtr = readdir(d); -p = entryPtr->d_name; -closedir(d); + # AIX v<=4.1 has some different flags than 4.2+ + if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then + LIBOBJS="$LIBOBJS tclLoadAix.o" + DL_LIBS="-lld" + fi + + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 + else + do64bit_ok=yes + CFLAGS="$CFLAGS -q64" + LDFLAGS="$LDFLAGS -q64" + RANLIB="${RANLIB} -X64" + AR="${AR} -X64" + SHLIB_LD_FLAGS="-b64" + fi + fi + SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" + + # On AIX <=v4 systems, libbsd.a has to be linked in to support + # non-blocking file IO. This library has to be linked in after + # the MATH_LIBS or it breaks the pow() function. The way to + # insure proper sequencing, is to add it to the tail of MATH_LIBS. + # This library also supplies gettimeofday. + # + # AIX does not have a timezone field in struct tm. When the AIX + # bsd library is used, the timezone global and the gettimeofday + # methods are to be avoided for timezone deduction instead, we + # deduce the timezone by comparing the localtime result on a + # known GMT value. + + echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 +echo "configure:2240: checking for gettimeofday in -lbsd" >&5 +ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lbsd $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2259: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_ok=yes + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=no + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" - if test $tcl_ok = no; then - cat >> confdefs.h <<\EOF -#define NO_DIRENT_H 1 +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + libbsd=yes +else + echo "$ac_t""no" 1>&6 +libbsd=no +fi + + if test $libbsd = yes; then + MATH_LIBS="$MATH_LIBS -lbsd" + cat >> confdefs.h <<\EOF +#define USE_DELTA_FOR_TZ 1 EOF - fi + fi + ;; + BeOS*) + SHLIB_CFLAGS="-fPIC" + SHLIB_LD="${CC} -nostart" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" - echo "$ac_t""$tcl_ok" 1>&6 - ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:2322: checking for errno.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + #----------------------------------------------------------- + # Check for inet_ntoa in -lbind, for BeOS (which also needs + # -lsocket, even if the network functions are in -lnet which + # is always linked to, for compatibility. + #----------------------------------------------------------- + echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 +echo "configure:2302: checking for inet_ntoa in -lbind" >&5 +ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char inet_ntoa(); + +int main() { +inet_ntoa() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:2321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + LIBS="$LIBS -lbind -lsocket" else echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_ERRNO_H 1 -EOF - fi - ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:2359: checking for float.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < + ;; + BSD/OS-2.1*|BSD/OS-3*) + SHLIB_CFLAGS="" + SHLIB_LD="shlicc -r" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + BSD/OS-4.*) + SHLIB_CFLAGS="-export-dynamic -fPIC" + SHLIB_LD="cc -shared" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="$LDFLAGS -export-dynamic" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + dgux*) + SHLIB_CFLAGS="-K PIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + HP-UX-*.11.*) + # Use updated header definitions where possible + cat >> confdefs.h <<\EOF +#define _XOPEN_SOURCE 1 EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_FLOAT_H 1 + # Use the XOPEN network library + cat >> confdefs.h <<\EOF +#define _XOPEN_SOURCE_EXTENDED 1 EOF + # Use the XOPEN network library + LIBS="$LIBS -lxnet" # Use the XOPEN network library -fi - - ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:2396: checking for values.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + SHLIB_SUFFIX=".sl" + echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "configure:2387: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load(); + +int main() { +shl_load() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:2406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + tcl_ok=yes else echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_VALUES_H 1 -EOF - +tcl_ok=no fi - ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:2433: checking for limits.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2443: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_LIMITS_H 1 -EOF + if test "$tcl_ok" = yes; then + SHLIB_CFLAGS="+z" + SHLIB_LD="ld -b" + SHLIB_LD_LIBS='${LIBS}' + DL_OBJS="tclLoadShl.o" + DL_LIBS="-ldld" + LDFLAGS="$LDFLAGS -Wl,-E" + CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' + LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' + LD_LIBRARY_PATH_VAR="SHLIB_PATH" + fi + if test "$GCC" = "yes" ; then + SHLIB_LD="gcc -shared" + SHLIB_LD_LIBS='${LIBS}' + LD_SEARCH_FLAGS='' + CC_SEARCH_FLAGS='' + fi -fi + # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc + #CFLAGS="$CFLAGS +DAportable" - ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:2470: checking for stdlib.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + hpux_arch=`gcc -dumpmachine` + case $hpux_arch in + hppa64*) + # 64-bit gcc in use. Fix flags for GNU ld. + do64bit_ok=yes + SHLIB_LD="gcc -shared" + SHLIB_LD_LIBS='${LIBS}' + LD_SEARCH_FLAGS='' + CC_SEARCH_FLAGS='' + ;; + *) + echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 + ;; + esac + else + do64bit_ok=yes + CFLAGS="$CFLAGS +DD64" + LDFLAGS="$LDFLAGS +DD64" + fi + fi + ;; + HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) + SHLIB_SUFFIX=".sl" + echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "configure:2475: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load(); + +int main() { +shl_load() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2480: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:2494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=1 + tcl_ok=yes else echo "$ac_t""no" 1>&6 -tcl_ok=0 -fi - - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strtol" >/dev/null 2>&1; then - : -else - rm -rf conftest* - tcl_ok=0 -fi -rm -f conftest* - - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strtoul" >/dev/null 2>&1; then - : -else - rm -rf conftest* - tcl_ok=0 +tcl_ok=no fi -rm -f conftest* - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strtod" >/dev/null 2>&1; then - : -else - rm -rf conftest* - tcl_ok=0 -fi -rm -f conftest* + if test "$tcl_ok" = yes; then + SHLIB_CFLAGS="+z" + SHLIB_LD="ld -b" + SHLIB_LD_LIBS="" + DL_OBJS="tclLoadShl.o" + DL_LIBS="-ldld" + LDFLAGS="$LDFLAGS -Wl,-E" + CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' + LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' + LD_LIBRARY_PATH_VAR="SHLIB_PATH" + fi + ;; + IRIX-4.*) + SHLIB_CFLAGS="-G 0" + SHLIB_SUFFIX=".a" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + SHLIB_LD_LIBS='${LIBS}' + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="$LDFLAGS -Wl,-D,08000000" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' + ;; + IRIX-5.*) + SHLIB_CFLAGS="" + SHLIB_LD="ld -shared -rdata_shared" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' + ;; + IRIX-6.*) + SHLIB_CFLAGS="" + SHLIB_LD="ld -n32 -shared -rdata_shared" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' + if test "$GCC" = "yes" ; then + CFLAGS="$CFLAGS -mabi=n32" + LDFLAGS="$LDFLAGS -mabi=n32" + else + case $system in + IRIX-6.3) + # Use to build 6.2 compatible binaries on 6.3. + CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS" + ;; + *) + CFLAGS="$CFLAGS -n32" + ;; + esac + LDFLAGS="$LDFLAGS -n32" + fi + ;; + IRIX64-6.*) + SHLIB_CFLAGS="" + SHLIB_LD="ld -n32 -shared -rdata_shared" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - if test $tcl_ok = 0; then - cat >> confdefs.h <<\EOF -#define NO_STDLIB_H 1 -EOF + # Check to enable 64-bit flags for compiler/linker - fi - ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:2552: checking for string.h" >&5 + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: 64bit mode not supported by gcc" 1>&2 + else + do64bit_ok=yes + SHLIB_LD="ld -64 -shared -rdata_shared" + CFLAGS="$CFLAGS -64" + LDFLAGS="$LDFLAGS -64" + fi + fi + ;; + Linux*) + SHLIB_CFLAGS="-fPIC" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + + CFLAGS_OPTIMIZE=-O2 + # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings + # when you inline the string and math operations. Turn this off to + # get rid of the warnings. + #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" + + if test "$have_dl" = yes; then + SHLIB_LD="${CC} -shared" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + else + ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dld.h""... $ac_c" 1>&6 +echo "configure:2618: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2628: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2574,64 +2640,65 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=1 + + SHLIB_LD="ld -shared" + DL_OBJS="tclLoadDld.o" + DL_LIBS="-ldld" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" else echo "$ac_t""no" 1>&6 -tcl_ok=0 -fi - - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strstr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - tcl_ok=0 -fi -rm -f conftest* - - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strerror" >/dev/null 2>&1; then - : -else - rm -rf conftest* - tcl_ok=0 fi -rm -f conftest* + fi + if test "`uname -m`" = "alpha" ; then + CFLAGS="$CFLAGS -mieee" + fi - # See also memmove check below for a place where NO_STRING_H can be - # set and why. + # The combo of gcc + glibc has a bug related + # to inlining of functions like strtod(). The + # -fno-builtin flag should address this problem + # but it does not work. The -fno-inline flag + # is kind of overkill but it works. + # Disable inlining only when one of the + # files in compat/*.c is being linked in. + if test x"${LIBOBJS}" != x ; then + CFLAGS="$CFLAGS -fno-inline" + fi - if test $tcl_ok = 0; then - cat >> confdefs.h <<\EOF -#define NO_STRING_H 1 + # XIM peeking works under XFree86. + cat >> confdefs.h <<\EOF +#define PEEK_XCLOSEIM 1 EOF - fi - ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:2625: checking for sys/wait.h" >&5 + ;; + GNU*) + SHLIB_CFLAGS="-fPIC" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + + if test "$have_dl" = yes; then + SHLIB_LD="${CC} -shared" + DL_OBJS="" + DL_LIBS="-ldl" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + else + ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dld.h""... $ac_c" 1>&6 +echo "configure:2692: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2635: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2647,28 +2714,57 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + + SHLIB_LD="ld -shared" + DL_OBJS="" + DL_LIBS="-ldld" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" else echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_SYS_WAIT_H 1 -EOF - fi - ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` + fi + if test "`uname -m`" = "alpha" ; then + CFLAGS="$CFLAGS -mieee" + fi + ;; + MP-RAS-02*) + SHLIB_CFLAGS="-K PIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + MP-RAS-*) + SHLIB_CFLAGS="-K PIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="$LDFLAGS -Wl,-Bexport" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + NetBSD-*|FreeBSD-[1-2].*) + # Not available on all versions: check for include file. + ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2662: checking for dlfcn.h" >&5 +echo "configure:2758: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2684,4334 +2780,4259 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + + # NetBSD/SPARC needs -fPIC, -fpic will not do. + SHLIB_CFLAGS="-fPIC" + SHLIB_LD="ld -Bshareable -x" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' + echo $ac_n "checking for ELF""... $ac_c" 1>&6 +echo "configure:2795: checking for ELF" >&5 + cat > conftest.$ac_ext <&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' else + rm -rf conftest* echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_DLFCN_H 1 -EOF - + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + fi +rm -f conftest* + +else + echo "$ac_t""no" 1>&6 - # OS/390 lacks sys/param.h (and doesn't need it, by chance). - - for ac_hdr in unistd.h sys/param.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2704: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 + SHLIB_CFLAGS="" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".a" + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + fi -done - - -#--------------------------------------------------------------------------- -# Determine which interface to use to talk to the serial port. -# Note that #include lines must begin in leftmost column for -# some compilers to recognize them as preprocessor directives. -#--------------------------------------------------------------------------- - + # FreeBSD doesn't handle version numbers with dots. - for ac_hdr in sys/modem.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2754: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&6 +echo "configure:2849: checking for ELF" >&5 + cat > conftest.$ac_ext < + +#ifdef __ELF__ + yes +#endif + EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2764: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + echo "$ac_t""yes" 1>&6 + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + echo "$ac_t""no" 1>&6 + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <> confdefs.h <<\EOF +#define _OE_SOCKETS 1 EOF - -else - echo "$ac_t""no" 1>&6 -fi -done + # needed in sys/socket.h + ;; + OSF1-1.0|OSF1-1.1|OSF1-1.2) + # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 + SHLIB_CFLAGS="" + # Hack: make package name same as library name + SHLIB_LD='ld -R -export :' + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadOSF.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + OSF1-1.*) + # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 + SHLIB_CFLAGS="-fPIC" + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD="ld -shared" + else + SHLIB_LD="ld -non_shared" + fi + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + OSF1-V*) + # Digital OSF/1 + SHLIB_CFLAGS="" + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD='ld -shared -expect_unresolved "*"' + else + SHLIB_LD='ld -non_shared -expect_unresolved "*"' + fi + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' + if test "$GCC" = "yes" ; then + CFLAGS="$CFLAGS -mieee" + else + CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee" + fi + # see pthread_intro(3) for pthread support on osf1, k.furukawa + if test "${TCL_THREADS}" = "1" ; then + CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" + CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" + LIBS=`echo $LIBS | sed s/-lpthreads//` + if test "$GCC" = "yes" ; then + LIBS="$LIBS -lpthread -lmach -lexc" + else + CFLAGS="$CFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" + fi + fi - echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:2791: checking termios vs. termio vs. sgtty" >&5 - if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - if test "$cross_compiling" = yes; then - tcl_cv_api_serial=no -else - cat > conftest.$ac_ext < + # SunOS can't handle version numbers with dots in them in library + # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it + # requires an extra version number at the end of .so file names. + # So, the library has to have a name like libtcl75.so.1.0 -int main() { - struct termios t; - if (tcgetattr(0, &t) == 0) { - cfsetospeed(&t, 0); - t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB; - return 0; - } - return 1; -} -EOF -if { (eval echo configure:2815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_api_serial=termios -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no -fi -rm -fr conftest* -fi + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + TCL_LIB_VERSIONS_OK=nodots + ;; + SunOS-5.[0-6]*) - if test $tcl_cv_api_serial = no ; then - if test "$cross_compiling" = yes; then - tcl_cv_api_serial=no -else - cat > conftest.$ac_ext < + cat >> confdefs.h <<\EOF +#define _REENTRANT 1 +EOF -int main() { - struct termio t; - if (ioctl(0, TCGETA, &t) == 0) { - t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB; - return 0; - } - return 1; -} + cat >> confdefs.h <<\EOF +#define _POSIX_PTHREAD_SEMANTICS 1 EOF -if { (eval echo configure:2846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_api_serial=termio -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no -fi -rm -fr conftest* -fi - fi - if test $tcl_cv_api_serial = no ; then - if test "$cross_compiling" = yes; then - tcl_cv_api_serial=no -else - cat > conftest.$ac_ext < + SHLIB_CFLAGS="-KPIC" -int main() { - struct sgttyb t; - if (ioctl(0, TIOCGETP, &t) == 0) { - t.sg_ospeed = 0; - t.sg_flags |= ODDP | EVENP | RAW; - return 0; - } - return 1; -} -EOF -if { (eval echo configure:2879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_api_serial=sgtty -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no -fi -rm -fr conftest* -fi + # Note: need the LIBS below, otherwise Tk won't find Tcl's + # symbols when dynamically loaded into tclsh. - fi - if test $tcl_cv_api_serial = no ; then - if test "$cross_compiling" = yes; then - tcl_cv_api_serial=no -else - cat > conftest.$ac_ext < -#include + # Note: If _REENTRANT isn't defined, then Solaris + # won't define thread-safe library routines. -int main() { - struct termios t; - if (tcgetattr(0, &t) == 0 - || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { - cfsetospeed(&t, 0); - t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB; - return 0; - } - return 1; -} + cat >> confdefs.h <<\EOF +#define _REENTRANT 1 EOF -if { (eval echo configure:2914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_api_serial=termios -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no -fi -rm -fr conftest* -fi - fi - if test $tcl_cv_api_serial = no; then - if test "$cross_compiling" = yes; then - tcl_cv_api_serial=no -else - cat > conftest.$ac_ext <> confdefs.h <<\EOF +#define _POSIX_PTHREAD_SEMANTICS 1 +EOF -#include -#include + + SHLIB_CFLAGS="-KPIC" + + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + arch=`isainfo` + if test "$arch" = "sparcv9 sparc" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 + else + do64bit_ok=yes + if test "$do64bitVIS" = "yes" ; then + CFLAGS="$CFLAGS -xarch=v9a" + LDFLAGS="$LDFLAGS -xarch=v9a" + else + CFLAGS="$CFLAGS -xarch=v9" + LDFLAGS="$LDFLAGS -xarch=v9" + fi + fi + else + echo "configure: warning: "64bit mode only supported sparcv9 system"" 1>&2 + fi + fi + + # Note: need the LIBS below, otherwise Tk won't find Tcl's + # symbols when dynamically loaded into tclsh. + + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + if test "$GCC" = "yes" ; then + SHLIB_LD="$CC -shared" + CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + else + SHLIB_LD="/usr/ccs/bin/ld -G -z text" + CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' + fi + ;; + ULTRIX-4.*) + SHLIB_CFLAGS="-G 0" + SHLIB_SUFFIX=".a" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + SHLIB_LD_LIBS='${LIBS}' + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="$LDFLAGS -Wl,-D,08000000" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + if test "$GCC" != "yes" ; then + CFLAGS="$CFLAGS -DHAVE_TZSET -std1" + fi + ;; + UNIX_SV* | UnixWare-5*) + SHLIB_CFLAGS="-KPIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers + # that don't grok the -Bexport option. Test that it does. + hold_ldflags=$LDFLAGS + echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 +echo "configure:3184: checking for ld accepts -Bexport flag" >&5 + LDFLAGS="$LDFLAGS -Wl,-Bexport" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_api_serial=termio +if { (eval echo configure:3194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + found=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no -fi -rm -fr conftest* + rm -rf conftest* + LDFLAGS=$hold_ldflags found=no fi +rm -f conftest* + echo "$ac_t""$found" 1>&6 + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + esac + if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then + echo "configure: warning: "64bit support being disabled -- don\'t know magic for this platform"" 1>&2 fi - if test $tcl_cv_api_serial = no; then - if test "$cross_compiling" = yes; then - tcl_cv_api_serial=none -else - cat > conftest.$ac_ext < -#include + # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic + # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop, + # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need + # to determine which of several header files defines the a.out file + # format (a.out.h, sys/exec.h, or sys/exec_aout.h). At present, we + # support only a file format that is more or less version-7-compatible. + # In particular, + # - a.out files must begin with `struct exec'. + # - the N_TXTOFF on the `struct exec' must compute the seek address + # of the text segment + # - The `struct exec' must contain a_magic, a_text, a_data, a_bss + # and a_entry fields. + # The following compilation should succeed if and only if either sys/exec.h + # or a.out.h is usable for the purpose. + # + # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the + # `struct exec' includes a second header that contains information that + # duplicates the v7 fields that are needed. + if test "x$DL_OBJS" = "xtclLoadAout.o" ; then + echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 +echo "configure:3235: checking sys/exec.h" >&5 + cat > conftest.$ac_ext < int main() { - struct sgttyb t; - if (ioctl(0, TIOCGETP, &t) == 0 - || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { - t.sg_ospeed = 0; - t.sg_flags |= ODDP | EVENP | RAW; - return 0; - } - return 1; -} + + struct exec foo; + unsigned long seek; + int flag; +#if defined(__mips) || defined(mips) + seek = N_TXTOFF (foo.ex_f, foo.ex_o); +#else + seek = N_TXTOFF (foo); +#endif + flag = (foo.a_magic == OMAGIC); + return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; + +; return 0; } EOF -if { (eval echo configure:2983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_api_serial=sgtty +if { (eval echo configure:3255: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_ok=usable else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=none -fi -rm -fr conftest* + rm -rf conftest* + tcl_ok=unusable fi +rm -f conftest* + echo "$ac_t""$tcl_ok" 1>&6 + if test $tcl_ok = usable; then + cat >> confdefs.h <<\EOF +#define USE_SYS_EXEC_H 1 +EOF - fi -fi + else + echo $ac_n "checking a.out.h""... $ac_c" 1>&6 +echo "configure:3273: checking a.out.h" >&5 + cat > conftest.$ac_ext < +int main() { - case $tcl_cv_api_serial in - termios) cat >> confdefs.h <<\EOF -#define USE_TERMIOS 1 -EOF -;; - termio) cat >> confdefs.h <<\EOF -#define USE_TERMIO 1 + struct exec foo; + unsigned long seek; + int flag; +#if defined(__mips) || defined(mips) + seek = N_TXTOFF (foo.ex_f, foo.ex_o); +#else + seek = N_TXTOFF (foo); +#endif + flag = (foo.a_magic == OMAGIC); + return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; + +; return 0; } EOF -;; - sgtty) cat >> confdefs.h <<\EOF -#define USE_SGTTY 1 +if { (eval echo configure:3293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_ok=usable +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_ok=unusable +fi +rm -f conftest* + echo "$ac_t""$tcl_ok" 1>&6 + if test $tcl_ok = usable; then + cat >> confdefs.h <<\EOF +#define USE_A_OUT_H 1 EOF -;; - esac - echo "$ac_t""$tcl_cv_api_serial" 1>&6 - - -#-------------------------------------------------------------------- -# Include sys/select.h if it exists and if it supplies things -# that appear to be useful and aren't already in sys/types.h. -# This appears to be true only on the RS/6000 under AIX. Some -# systems like OSF/1 have a sys/select.h that's of no use, and -# other systems like SCO UNIX have a sys/select.h that's -# pernicious. If "fd_set" isn't defined anywhere then set a -# special flag. -#-------------------------------------------------------------------- -echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:3026: checking for fd_set in sys/types" >&5 -if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&6 +echo "configure:3311: checking sys/exec_aout.h" >&5 + cat > conftest.$ac_ext < +#include int main() { -fd_set readMask, writeMask; + + struct exec foo; + unsigned long seek; + int flag; +#if defined(__mips) || defined(mips) + seek = N_TXTOFF (foo.ex_f, foo.ex_o); +#else + seek = N_TXTOFF (foo); +#endif + flag = (foo.a_midmag == OMAGIC); + return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; + ; return 0; } EOF -if { (eval echo configure:3038: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_cv_type_fd_set=yes + tcl_ok=usable else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_type_fd_set=no + tcl_ok=unusable fi rm -f conftest* -fi + echo "$ac_t""$tcl_ok" 1>&6 + if test $tcl_ok = usable; then + cat >> confdefs.h <<\EOF +#define USE_SYS_EXEC_AOUT_H 1 +EOF -echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 -tk_ok=$tcl_cv_type_fd_set -if test $tcl_cv_type_fd_set = no; then - echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:3054: checking for fd_mask in sys/select" >&5 - if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + else + DL_OBJS="" + fi + fi + fi + fi + + # Step 5: disable dynamic loading if requested via a command-line switch. + + # Check whether --enable-load or --disable-load was given. +if test "${enable_load+set}" = set; then + enableval="$enable_load" + tcl_ok=$enableval else - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "fd_mask" >/dev/null 2>&1; then - rm -rf conftest* - tcl_cv_grep_fd_mask=present + tcl_ok=yes +fi + + if test "$tcl_ok" = "no"; then + DL_OBJS="" + fi + + if test "x$DL_OBJS" != "x" ; then + BUILD_DLTEST="\$(DLTEST_TARGETS)" + else + echo "Can't figure out how to do dynamic loading or shared libraries" + echo "on this system." + SHLIB_CFLAGS="" + SHLIB_LD="" + SHLIB_SUFFIX="" + DL_OBJS="tclLoadNone.o" + DL_LIBS="" + LDFLAGS="$LDFLAGS_ORIG" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + BUILD_DLTEST="" + fi + + # If we're running gcc, then change the C flags for compiling shared + # libraries to the right flags for gcc, instead of those for the + # standard manufacturer compiler. + + if test "$DL_OBJS" != "tclLoadNone.o" ; then + if test "$GCC" = "yes" ; then + case $system in + AIX-*) + ;; + BSD/OS*) + ;; + IRIX*) + ;; + NetBSD-*|FreeBSD-*|OpenBSD-*) + ;; + Rhapsody-*|Darwin-*) + ;; + RISCos-*) + ;; + SCO_SV-3.2*) + ;; + ULTRIX-4.*) + ;; + *) + SHLIB_CFLAGS="-fPIC" + ;; + esac + fi + fi + + if test "$SHARED_LIB_SUFFIX" = "" ; then + SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}' + fi + if test "$UNSHARED_LIB_SUFFIX" = "" ; then + UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' + fi + + if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then + LIB_SUFFIX=${SHARED_LIB_SUFFIX} + MAKE_LIB='${SHLIB_LD} -o $@ ${SHLIB_LD_FLAGS} ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' + INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' + else + LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} + + if test "$RANLIB" = "" ; then + MAKE_LIB='$(STLIB_LD) $@ ${OBJS}' + INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' + else + MAKE_LIB='${STLIB_LD} $@ ${OBJS} ; ${RANLIB} $@' + INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))' + fi + + fi + + + # Stub lib does not depend on shared/static configuration + if test "$RANLIB" = "" ; then + MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS}' + INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)' + else + MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS} ; ${RANLIB} $@' + INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))' + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 +echo "configure:3482: checking for build with symbols" >&5 + # Check whether --enable-symbols or --disable-symbols was given. +if test "${enable_symbols+set}" = set; then + enableval="$enable_symbols" + tcl_ok=$enableval else - rm -rf conftest* - tcl_cv_grep_fd_mask=missing + tcl_ok=no fi -rm -f conftest* -fi +# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT. + if test "$tcl_ok" = "no"; then + CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)' + LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)' + DBGX="" + echo "$ac_t""no" 1>&6 + else + CFLAGS_DEFAULT='$(CFLAGS_DEBUG)' + LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)' + DBGX=g + if test "$tcl_ok" = "yes"; then + echo "$ac_t""yes (standard debugging)" 1>&6 + fi + fi + + - echo "$ac_t""$tcl_cv_grep_fd_mask" 1>&6 - if test $tcl_cv_grep_fd_mask = present; then + if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then cat >> confdefs.h <<\EOF -#define HAVE_SYS_SELECT_H 1 +#define TCL_MEM_DEBUG 1 EOF - tk_ok=yes fi -fi -if test $tk_ok = no; then - cat >> confdefs.h <<\EOF -#define NO_FD_SET 1 + + if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then + cat >> confdefs.h <<\EOF +#define TCL_COMPILE_DEBUG 1 EOF -fi + cat >> confdefs.h <<\EOF +#define TCL_COMPILE_STATS 1 +EOF -#------------------------------------------------------------------------------ -# Find out all about time handling differences. -#------------------------------------------------------------------------------ + fi -echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:3096: checking whether struct tm is in sys/time.h or time.h" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then + if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then + if test "$tcl_ok" = "all"; then + echo "$ac_t""enabled symbols mem compile debugging" 1>&6 + else + echo "$ac_t""enabled $tcl_ok debugging" 1>&6 + fi + fi + + +TCL_DBGX=${DBGX} + +#-------------------------------------------------------------------- +# Detect what compiler flags to set for 64-bit support. +#-------------------------------------------------------------------- + + + echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 +echo "configure:3543: checking for required early compiler flags" >&5 + tcl_flags="" + + if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#include +#include int main() { -struct tm *tp; tp->tm_sec; +char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3109: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_struct_tm=time.h + tcl_cv_flag__isoc99_source=no else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_struct_tm=sys/time.h -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_struct_tm" 1>&6 -if test $ac_cv_struct_tm = sys/time.h; then - cat >> confdefs.h <<\EOF -#define TM_IN_SYS_TIME 1 -EOF - -fi - - - for ac_hdr in sys/time.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3134: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else cat > conftest.$ac_ext < +#define _ISOC99_SOURCE 1 +#include +int main() { +char *p = (char *)strtoll; char *q = (char *)strtoull; +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3144: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:3573: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + tcl_cv_flag__isoc99_source=yes else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + tcl_cv_flag__isoc99_source=no fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 +rm -f conftest* fi -done - echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3171: checking whether time.h and sys/time.h may both be included" >&5 -if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define _ISOC99_SOURCE 1 +EOF + + tcl_flags="$tcl_flags _ISOC99_SOURCE" + fi + + if eval "test \"`echo '$''{'tcl_cv_flag__largefile64_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#include -#include +#include int main() { -struct tm *tp; +struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3606: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_header_time=yes + tcl_cv_flag__largefile64_source=no else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_header_time=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_header_time" 1>&6 -if test $ac_cv_header_time = yes; then - cat >> confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 -EOF - -fi - - echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:3206: checking for tm_zone in struct tm" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else cat > conftest.$ac_ext < -#include <$ac_cv_struct_tm> +#define _LARGEFILE64_SOURCE 1 +#include int main() { -struct tm tm; tm.tm_zone; +struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3219: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_struct_tm_zone=yes + tcl_cv_flag__largefile64_source=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_struct_tm_zone=no + tcl_cv_flag__largefile64_source=no +fi +rm -f conftest* fi rm -f conftest* fi -echo "$ac_t""$ac_cv_struct_tm_zone" 1>&6 -if test "$ac_cv_struct_tm_zone" = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_TM_ZONE 1 + if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define _LARGEFILE64_SOURCE 1 EOF -else - echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:3239: checking for tzname" >&5 -if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then + tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" + fi + if test "x${tcl_flags}" = "x" ; then + echo "$ac_t""none" 1>&6 + else + echo "$ac_t""${tcl_flags}" 1>&6 + fi + + + echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 +echo "configure:3651: checking for 64-bit integer type" >&5 + if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -#ifndef tzname /* For SGI. */ -extern char *tzname[]; /* RS6000 and others reject char **tzname. */ -#endif + int main() { -atoi(*tzname); +__int64 value = (__int64) 0; ; return 0; } EOF -if { (eval echo configure:3254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_var_tzname=yes + tcl_type_64bit=__int64 else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_var_tzname=no + tcl_type_64bit="long long" fi rm -f conftest* -fi - -echo "$ac_t""$ac_cv_var_tzname" 1>&6 - if test $ac_cv_var_tzname = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_TZNAME 1 -EOF - - fi -fi - - - for ac_func in gmtime_r localtime_r -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3279: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif +int main() { +switch (0) { + case 1: case (sizeof(${tcl_type_64bit})==sizeof(long)): ; + } ; return 0; } EOF -if { (eval echo configure:3307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + tcl_cv_type_64bit=${tcl_type_64bit} else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <> confdefs.h <<\EOF +#define TCL_WIDE_INT_IS_LONG 1 EOF - -else - echo "$ac_t""no" 1>&6 -fi -done + echo "$ac_t""using long" 1>&6 + else + cat >> confdefs.h <&6 -echo "configure:3333: checking tm_tzadj in struct tm" >&5 - if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then + echo "$ac_t""${tcl_cv_type_64bit}" 1>&6 + + # Now check for auxiliary declarations + echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 +echo "configure:3714: checking for struct dirent64" >&5 + if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < +#include +#include int main() { -struct tm tm; tm.tm_tzadj; +struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_cv_member_tm_tzadj=yes + tcl_cv_struct_dirent64=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_member_tm_tzadj=no + tcl_cv_struct_dirent64=no fi rm -f conftest* fi - echo "$ac_t""$tcl_cv_member_tm_tzadj" 1>&6 - if test $tcl_cv_member_tm_tzadj = yes ; then - cat >> confdefs.h <<\EOF -#define HAVE_TM_TZADJ 1 + if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_DIRENT64 1 EOF - fi + fi + echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 - echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:3366: checking tm_gmtoff in struct tm" >&5 - if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then + echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 +echo "configure:3749: checking for struct stat64" >&5 + if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < +#include int main() { -struct tm tm; tm.tm_gmtoff; +struct stat64 p; + ; return 0; } EOF -if { (eval echo configure:3378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_cv_member_tm_gmtoff=yes + tcl_cv_struct_stat64=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_member_tm_gmtoff=no + tcl_cv_struct_stat64=no fi rm -f conftest* fi - echo "$ac_t""$tcl_cv_member_tm_gmtoff" 1>&6 - if test $tcl_cv_member_tm_gmtoff = yes ; then - cat >> confdefs.h <<\EOF -#define HAVE_TM_GMTOFF 1 + if test "x${tcl_cv_struct_stat64}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_STAT64 1 EOF - fi + fi + echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 - # - # Its important to include time.h in this check, as some systems - # (like convex) have timezone functions, etc. - # - echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:3403: checking long timezone variable" >&5 - if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then + echo $ac_n "checking for off64_t""... $ac_c" 1>&6 +echo "configure:3784: checking for off64_t" >&5 + if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < +#include int main() { -extern long timezone; - timezone += 1; - exit (0); +off64_t offset; + ; return 0; } EOF -if { (eval echo configure:3417: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3798: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_cv_timezone_long=yes + tcl_cv_type_off64_t=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_timezone_long=no + tcl_cv_type_off64_t=no fi rm -f conftest* fi - echo "$ac_t""$tcl_cv_timezone_long" 1>&6 - if test $tcl_cv_timezone_long = yes ; then - cat >> confdefs.h <<\EOF -#define HAVE_TIMEZONE_VAR 1 + if test "x${tcl_cv_type_off64_t}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_TYPE_OFF64_T 1 EOF - else - # - # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. - # - echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:3440: checking time_t timezone variable" >&5 - if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then + fi + echo "$ac_t""${tcl_cv_type_off64_t}" 1>&6 + fi + +#-------------------------------------------------------------------- +# Check endianness because we can optimize comparisons of +# Tcl_UniChar strings to memcmp on big-endian systems. +#-------------------------------------------------------------------- + +echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +echo "configure:3825: checking whether byte ordering is bigendian" >&5 +if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < +#include +#include int main() { -extern time_t timezone; - timezone += 1; - exit (0); + +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif ; return 0; } EOF -if { (eval echo configure:3454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_cv_timezone_time=yes + # It does; now see whether it defined to BIG_ENDIAN or not. +cat > conftest.$ac_ext < +#include +int main() { + +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif +; return 0; } +EOF +if { (eval echo configure:3858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_timezone_time=no + ac_cv_c_bigendian=no +fi +rm -f conftest* +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 fi rm -f conftest* +if test $ac_cv_c_bigendian = unknown; then +if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_c_bigendian=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_bigendian=yes +fi +rm -fr conftest* fi - echo "$ac_t""$tcl_cv_timezone_time" 1>&6 - if test $tcl_cv_timezone_time = yes ; then - cat >> confdefs.h <<\EOF -#define HAVE_TIMEZONE_VAR 1 +fi +fi + +echo "$ac_t""$ac_cv_c_bigendian" 1>&6 +if test $ac_cv_c_bigendian = yes; then + cat >> confdefs.h <<\EOF +#define WORDS_BIGENDIAN 1 EOF - fi - fi +fi #-------------------------------------------------------------------- -# Some systems (e.g., IRIX 4.0.5) lack the st_blksize field -# in struct stat. But we might be able to use fstatfs instead. +# Supply substitutes for missing POSIX library procedures, or +# set flags so Tcl uses alternate procedures. #-------------------------------------------------------------------- -echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:3481: checking for st_blksize in struct stat" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then + +# Check if Posix compliant getcwd exists, if not we'll use getwd. +for ac_func in getcwd +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:3924: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#include +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + int main() { -struct stat s; s.st_blksize; + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + ; return 0; } EOF -if { (eval echo configure:3494: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_struct_st_blksize=yes + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_struct_st_blksize=no + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi -echo "$ac_t""$ac_cv_struct_st_blksize" 1>&6 -if test $ac_cv_struct_st_blksize = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ST_BLKSIZE 1 +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +cat >> confdefs.h <<\EOF +#define USEGETWD 1 EOF fi +done + +# Nb: if getcwd uses popen and pwd(1) (like SunOS 4) we should really +# define USEGETWD even if the posix getcwd exists. Add a test ? -echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:3515: checking for fstatfs" >&5 -if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then +for ac_func in opendir strstr +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:3986: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char fstatfs(); +char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_fstatfs) || defined (__stub___fstatfs) +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -fstatfs(); +$ac_func(); #endif ; return 0; } EOF -if { (eval echo configure:3543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_fstatfs=yes" + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_fstatfs=no" + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'fstatfs`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 -cat >> confdefs.h <<\EOF -#define NO_FSTATFS 1 -EOF - +LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" fi +done -#-------------------------------------------------------------------- -# Some system have no memcmp or it does not work with 8 bit -# data, this checks it and add memcmp.o to LIBOBJS if needed -#-------------------------------------------------------------------- -echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:3572: checking for 8-bit clean memcmp" >&5 -if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then + +for ac_func in strtol strtoll strtoull tmpnam waitpid +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4044: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$cross_compiling" = yes; then - ac_cv_func_memcmp_clean=no -else cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); -main() -{ - char c0 = 0x40, c1 = 0x80, c2 = 0x81; - exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1); -} +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif +; return 0; } EOF -if { (eval echo configure:3590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_func_memcmp_clean=yes +if { (eval echo configure:4072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_func_memcmp_clean=no + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" fi -rm -fr conftest* +rm -f conftest* fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" fi - -echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 -test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" +done -#-------------------------------------------------------------------- -# Some system like SunOS 4 and other BSD like systems -# have no memmove (we assume they have bcopy instead). -# {The replacement define is in compat/string.h} -#-------------------------------------------------------------------- -echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:3614: checking for memmove" >&5 -if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then +echo $ac_n "checking for strerror""... $ac_c" 1>&6 +echo "configure:4099: checking for strerror" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char memmove(); +char strerror(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_memmove) || defined (__stub___memmove) +#if defined (__stub_strerror) || defined (__stub___strerror) choke me #else -memmove(); +strerror(); #endif ; return 0; } EOF -if { (eval echo configure:3642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_memmove=yes" + eval "ac_cv_func_strerror=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_memmove=no" + eval "ac_cv_func_strerror=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'strerror`\" = yes"; then echo "$ac_t""yes" 1>&6 : else echo "$ac_t""no" 1>&6 cat >> confdefs.h <<\EOF -#define NO_MEMMOVE 1 -EOF - cat >> confdefs.h <<\EOF -#define NO_STRING_H 1 +#define NO_STRERROR 1 EOF fi - -#-------------------------------------------------------------------- -# On some systems strstr is broken: it returns a pointer even -# even if the original string is empty. -#-------------------------------------------------------------------- - -echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:3675: checking proper strstr implementation" >&5 -if test "$cross_compiling" = yes; then - tcl_ok=no +echo $ac_n "checking for getwd""... $ac_c" 1>&6 +echo "configure:4151: checking for getwd" >&5 +if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getwd(); -extern int strstr(); -int main() -{ - exit(strstr("\0test", "test") ? 1 : 0); -} +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_getwd) || defined (__stub___getwd) +choke me +#else +getwd(); +#endif +; return 0; } EOF -if { (eval echo configure:3690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_ok=yes +if { (eval echo configure:4179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getwd=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_ok=no + rm -rf conftest* + eval "ac_cv_func_getwd=no" fi -rm -fr conftest* +rm -f conftest* fi -if test $tcl_ok = yes; then - echo "$ac_t""yes" 1>&6 +if eval "test \"`echo '$ac_cv_func_'getwd`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : else - echo "$ac_t""broken, using substitute" 1>&6 - LIBOBJS="$LIBOBJS strstr.o" -fi + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_GETWD 1 +EOF -#-------------------------------------------------------------------- -# Check for strtoul function. This is tricky because under some -# versions of AIX strtoul returns an incorrect terminator -# pointer for the string "0". -#-------------------------------------------------------------------- +fi -echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:3716: checking for strtoul" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then +echo $ac_n "checking for wait3""... $ac_c" 1>&6 +echo "configure:4203: checking for wait3" >&5 +if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char strtoul(); +char wait3(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_strtoul) || defined (__stub___strtoul) +#if defined (__stub_wait3) || defined (__stub___wait3) choke me #else -strtoul(); +wait3(); #endif ; return 0; } EOF -if { (eval echo configure:3744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_strtoul=yes" + eval "ac_cv_func_wait3=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_strtoul=no" + eval "ac_cv_func_wait3=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'strtoul`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'wait3`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=1 + : else echo "$ac_t""no" 1>&6 -tcl_ok=0 -fi - -if test "$cross_compiling" = yes; then - tcl_ok=0 -else - cat > conftest.$ac_ext <> confdefs.h <<\EOF +#define NO_WAIT3 1 EOF -if { (eval echo configure:3784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_ok=0 -fi -rm -fr conftest* -fi -if test "$tcl_ok" = 0; then - test -n "$verbose" && echo " Adding strtoul.o." - LIBOBJS="$LIBOBJS strtoul.o" fi -#-------------------------------------------------------------------- -# Check for the strtod function. This is tricky because in some -# versions of Linux strtod mis-parses strings starting with "+". -#-------------------------------------------------------------------- - -echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:3807: checking for strtod" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then +echo $ac_n "checking for uname""... $ac_c" 1>&6 +echo "configure:4255: checking for uname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char strtod(); +char uname(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_strtod) || defined (__stub___strtod) +#if defined (__stub_uname) || defined (__stub___uname) choke me #else -strtod(); +uname(); #endif ; return 0; } EOF -if { (eval echo configure:3835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_strtod=yes" + eval "ac_cv_func_uname=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_strtod=no" + eval "ac_cv_func_uname=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'uname`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=1 + : else echo "$ac_t""no" 1>&6 -tcl_ok=0 -fi - -if test "$cross_compiling" = yes; then - tcl_ok=0 -else - cat > conftest.$ac_ext <> confdefs.h <<\EOF +#define NO_UNAME 1 EOF -if { (eval echo configure:3875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_ok=0 -fi -rm -fr conftest* -fi -if test "$tcl_ok" = 0; then - test -n "$verbose" && echo " Adding strtod.o." - LIBOBJS="$LIBOBJS strtod.o" fi -#-------------------------------------------------------------------- -# Under Solaris 2.4, strtod returns the wrong value for the -# terminating character under some conditions. Check for this -# and if the problem exists use a substitute procedure -# "fixstrtod" that corrects the error. -#-------------------------------------------------------------------- - - - echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:3901: checking for strtod" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then +echo $ac_n "checking for realpath""... $ac_c" 1>&6 +echo "configure:4307: checking for realpath" >&5 +if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char strtod(); +char realpath(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_strtod) || defined (__stub___strtod) +#if defined (__stub_realpath) || defined (__stub___realpath) choke me #else -strtod(); +realpath(); #endif ; return 0; } EOF -if { (eval echo configure:3929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_strtod=yes" + eval "ac_cv_func_realpath=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_strtod=no" + eval "ac_cv_func_realpath=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_strtod=1 + : else echo "$ac_t""no" 1>&6 -tcl_strtod=0 +cat >> confdefs.h <<\EOF +#define NO_REALPATH 1 +EOF + fi - if test "$tcl_strtod" = 1; then - echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:3951: checking for Solaris2.4/Tru64 strtod bugs" >&5 - if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - if test "$cross_compiling" = yes; then - tcl_cv_strtod_buggy=0 -else - cat > conftest.$ac_ext <&6 +echo "configure:4370: checking dirent.h" >&5 + cat > conftest.$ac_ext < +#include +int main() { - extern double strtod(); - int main() { - char *infString="Inf", *nanString="NaN", *spaceString=" "; - char *term; - double value; - value = strtod(infString, &term); - if ((term != infString) && (term[-1] == 0)) { - exit(1); - } - value = strtod(nanString, &term); - if ((term != nanString) && (term[-1] == 0)) { - exit(1); - } - value = strtod(spaceString, &term); - if (term == (spaceString+1)) { - exit(1); - } - exit(0); - } +#ifndef _POSIX_SOURCE +# ifdef __Lynx__ + /* + * Generate compilation error to make the test fail: Lynx headers + * are only valid if really in the POSIX environment. + */ + + missing_procedure(); +# endif +#endif +DIR *d; +struct dirent *entryPtr; +char *p; +d = opendir("foobar"); +entryPtr = readdir(d); +p = entryPtr->d_name; +closedir(d); + +; return 0; } EOF -if { (eval echo configure:3983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_strtod_buggy=1 +if { (eval echo configure:4398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_ok=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_strtod_buggy=0 -fi -rm -fr conftest* -fi - + rm -rf conftest* + tcl_ok=no fi +rm -f conftest* - if test "$tcl_cv_strtod_buggy" = 1; then - echo "$ac_t""ok" 1>&6 - else - echo "$ac_t""buggy" 1>&6 - LIBOBJS="$LIBOBJS fixstrtod.o" - cat >> confdefs.h <<\EOF -#define strtod fixstrtod + if test $tcl_ok = no; then + cat >> confdefs.h <<\EOF +#define NO_DIRENT_H 1 EOF - fi fi - -#-------------------------------------------------------------------- -# Check for various typedefs and provide substitutes if -# they don't exist. -#-------------------------------------------------------------------- - -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:4016: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo "$ac_t""$tcl_ok" 1>&6 + ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for errno.h""... $ac_c" 1>&6 +echo "configure:4419: checking for errno.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#include -#include -#include +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* - ac_cv_header_stdc=yes + eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* - fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_ERRNO_H 1 +EOF fi -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : + ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for float.h""... $ac_c" 1>&6 +echo "configure:4456: checking for float.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } - +#include EOF -if { (eval echo configure:4096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi +rm -f conftest* fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_FLOAT_H 1 EOF fi -echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:4120: checking for mode_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then + ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for values.h""... $ac_c" 1>&6 +echo "configure:4493: checking for values.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif +#include EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4503: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - ac_cv_type_mode_t=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_type_mode_t=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* - fi -echo "$ac_t""$ac_cv_type_mode_t" 1>&6 -if test $ac_cv_type_mode_t = no; then - cat >> confdefs.h <<\EOF -#define mode_t int +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_VALUES_H 1 EOF fi -echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:4153: checking for pid_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then + ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for limits.h""... $ac_c" 1>&6 +echo "configure:4530: checking for limits.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif +#include EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4540: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - ac_cv_type_pid_t=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_type_pid_t=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* - fi -echo "$ac_t""$ac_cv_type_pid_t" 1>&6 -if test $ac_cv_type_pid_t = no; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF -#define pid_t int +#define HAVE_LIMITS_H 1 +EOF + +else + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_LIMITS_H 1 EOF fi -echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:4186: checking for size_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 +echo "configure:4570: checking for stdlib.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#if STDC_HEADERS #include -#include -#endif EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4580: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - ac_cv_type_size_t=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_type_size_t=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* - fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then - cat >> confdefs.h <<\EOF -#define size_t unsigned -EOF - +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi -echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:4219: checking for uid_t in sys/types.h" >&5 -if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < conftest.$ac_ext < +#include EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "uid_t" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_uid_t=yes + egrep "strtol" >/dev/null 2>&1; then + : else rm -rf conftest* - ac_cv_type_uid_t=no + tcl_ok=0 fi rm -f conftest* -fi - -echo "$ac_t""$ac_cv_type_uid_t" 1>&6 -if test $ac_cv_type_uid_t = no; then - cat >> confdefs.h <<\EOF -#define uid_t int + cat > conftest.$ac_ext < EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "strtoul" >/dev/null 2>&1; then + : +else + rm -rf conftest* + tcl_ok=0 +fi +rm -f conftest* - cat >> confdefs.h <<\EOF -#define gid_t int + cat > conftest.$ac_ext < EOF - +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "strtod" >/dev/null 2>&1; then + : +else + rm -rf conftest* + tcl_ok=0 fi +rm -f conftest* + if test $tcl_ok = 0; then + cat >> confdefs.h <<\EOF +#define NO_STDLIB_H 1 +EOF -echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:4254: checking for socklen_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then + fi + ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for string.h""... $ac_c" 1>&6 +echo "configure:4652: checking for string.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < - #include - #if STDC_HEADERS - #include - #include - #endif - +#include EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - ac_cv_type_socklen_t=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_type_socklen_t=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* - fi - -echo "$ac_t""$ac_cv_type_socklen_t" 1>&6 -if test $ac_cv_type_socklen_t = no; then - cat >> confdefs.h <<\EOF -#define socklen_t unsigned -EOF - +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi -#-------------------------------------------------------------------- -# If a system doesn't have an opendir function (man, that's old!) -# then we have to supply a different version of dirent.h which -# is compatible with the substitute version of opendir that's -# provided. This version only works with V7-style directories. -#-------------------------------------------------------------------- - -echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:4298: checking for opendir" >&5 -if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_opendir) || defined (__stub___opendir) -choke me -#else -opendir(); -#endif - -; return 0; } +#include EOF -if { (eval echo configure:4326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "strstr" >/dev/null 2>&1; then + : +else rm -rf conftest* - eval "ac_cv_func_opendir=yes" + tcl_ok=0 +fi +rm -f conftest* + + cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "strerror" >/dev/null 2>&1; then + : else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_opendir=no" + tcl_ok=0 fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'opendir`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define USE_DIRENT2_H 1 -EOF -fi + # See also memmove check below for a place where NO_STRING_H can be + # set and why. + if test $tcl_ok = 0; then + cat >> confdefs.h <<\EOF +#define NO_STRING_H 1 +EOF -#-------------------------------------------------------------------- -# The check below checks whether defines the type -# "union wait" correctly. It's needed because of weirdness in -# HP-UX where "union wait" is defined in both the BSD and SYS-V -# environments. Checking the usability of WIFEXITED seems to do -# the trick. -#-------------------------------------------------------------------- + fi -echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:4359: checking union wait" >&5 -if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then + ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 +echo "configure:4725: checking for sys/wait.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include -int main() { - -union wait x; -WIFEXITED(x); /* Generates compiler error if WIFEXITED - * uses an int. */ - -; return 0; } EOF -if { (eval echo configure:4376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - tcl_cv_union_wait=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_union_wait=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi - -echo "$ac_t""$tcl_cv_union_wait" 1>&6 -if test $tcl_cv_union_wait = no; then - cat >> confdefs.h <<\EOF -#define NO_UNION_WAIT 1 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_SYS_WAIT_H 1 EOF fi -#-------------------------------------------------------------------- -# Check whether there is an strncasecmp function on this system. -# This is a bit tricky because under SCO it's in -lsocket and -# under Sequent Dynix it's in -linet. -#-------------------------------------------------------------------- - -echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:4403: checking for strncasecmp" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then + ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 +echo "configure:4762: checking for dlfcn.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strncasecmp(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_strncasecmp) || defined (__stub___strncasecmp) -choke me -#else -strncasecmp(); -#endif - -; return 0; } +#include EOF -if { (eval echo configure:4431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4772: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_func_strncasecmp=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_strncasecmp=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'strncasecmp`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=1 + : else echo "$ac_t""no" 1>&6 -tcl_ok=0 +cat >> confdefs.h <<\EOF +#define NO_DLFCN_H 1 +EOF + fi -if test "$tcl_ok" = 0; then - echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:4453: checking for strncasecmp in -lsocket" >&5 -ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + + # OS/390 lacks sys/param.h (and doesn't need it, by chance). + + for ac_hdr in unistd.h sys/param.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:4804: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lsocket $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:4472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=1 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 -tcl_ok=0 fi +done -fi -if test "$tcl_ok" = 0; then - echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:4496: checking for strncasecmp in -linet" >&5 -ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + + + +#--------------------------------------------------------------------------- +# Determine which interface to use to talk to the serial port. +# Note that #include lines must begin in leftmost column for +# some compilers to recognize them as preprocessor directives. +#--------------------------------------------------------------------------- + + + for ac_hdr in sys/modem.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:4854: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-linet $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:4515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4864: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=1 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 -tcl_ok=0 -fi - -fi -if test "$tcl_ok" = 0; then - LIBOBJS="$LIBOBJS strncasecmp.o" fi +done -#-------------------------------------------------------------------- -# The code below deals with several issues related to gettimeofday: -# 1. Some systems don't provide a gettimeofday function at all -# (set NO_GETTOD if this is the case). -# 2. SGI systems don't use the BSD form of the gettimeofday function, -# but they have a BSDgettimeofday function that can be used instead. -# 3. See if gettimeofday is declared in the header file. -# if not, set the GETTOD_NOT_DECLARED flag so that tclPort.h can -# declare it. -#-------------------------------------------------------------------- - -echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:4553: checking for BSDgettimeofday" >&5 -if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then + echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 +echo "configure:4891: checking termios vs. termio vs. sgtty" >&5 + if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else + + if test "$cross_compiling" = yes; then + tcl_cv_api_serial=no +else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char BSDgettimeofday(); - -int main() { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_BSDgettimeofday) || defined (__stub___BSDgettimeofday) -choke me -#else -BSDgettimeofday(); -#endif +#include -; return 0; } +int main() { + struct termios t; + if (tcgetattr(0, &t) == 0) { + cfsetospeed(&t, 0); + t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB; + return 0; + } + return 1; +} EOF -if { (eval echo configure:4581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_BSDgettimeofday=yes" +if { (eval echo configure:4915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_api_serial=termios else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_BSDgettimeofday=no" + rm -fr conftest* + tcl_cv_api_serial=no fi -rm -f conftest* +rm -fr conftest* fi -if eval "test \"`echo '$ac_cv_func_'BSDgettimeofday`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_BSDGETTIMEOFDAY 1 -EOF - -else - echo "$ac_t""no" 1>&6 - - echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:4603: checking for gettimeofday" >&5 -if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + if test $tcl_cv_api_serial = no ; then + if test "$cross_compiling" = yes; then + tcl_cv_api_serial=no else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gettimeofday(); - -int main() { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday) -choke me -#else -gettimeofday(); -#endif +#include -; return 0; } +int main() { + struct termio t; + if (ioctl(0, TCGETA, &t) == 0) { + t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB; + return 0; + } + return 1; +} EOF -if { (eval echo configure:4631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_gettimeofday=yes" +if { (eval echo configure:4946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_api_serial=termio else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_gettimeofday=no" + rm -fr conftest* + tcl_cv_api_serial=no fi -rm -f conftest* +rm -fr conftest* fi -if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : + fi + if test $tcl_cv_api_serial = no ; then + if test "$cross_compiling" = yes; then + tcl_cv_api_serial=no else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_GETTOD 1 -EOF - -fi + cat > conftest.$ac_ext < +int main() { + struct sgttyb t; + if (ioctl(0, TIOCGETP, &t) == 0) { + t.sg_ospeed = 0; + t.sg_flags |= ODDP | EVENP | RAW; + return 0; + } + return 1; +} +EOF +if { (eval echo configure:4979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_api_serial=sgtty +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_api_serial=no +fi +rm -fr conftest* fi -echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:4658: checking for gettimeofday declaration" >&5 -if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + fi + if test $tcl_cv_api_serial = no ; then + if test "$cross_compiling" = yes; then + tcl_cv_api_serial=no else cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "gettimeofday" >/dev/null 2>&1; then - rm -rf conftest* - tcl_cv_grep_gettimeofday=present -else - rm -rf conftest* - tcl_cv_grep_gettimeofday=missing -fi -rm -f conftest* -fi +#include +#include -echo "$ac_t""$tcl_cv_grep_gettimeofday" 1>&6 -if test $tcl_cv_grep_gettimeofday = missing ; then - cat >> confdefs.h <<\EOF -#define GETTOD_NOT_DECLARED 1 +int main() { + struct termios t; + if (tcgetattr(0, &t) == 0 + || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { + cfsetospeed(&t, 0); + t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB; + return 0; + } + return 1; +} EOF - +if { (eval echo configure:5014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_api_serial=termios +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_api_serial=no +fi +rm -fr conftest* fi -#-------------------------------------------------------------------- -# The following code checks to see whether it is possible to get -# signed chars on this platform. This is needed in order to -# properly generate sign-extended ints from character values. -#-------------------------------------------------------------------- - -echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:4694: checking whether char is unsigned" >&5 -if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + fi + if test $tcl_cv_api_serial = no; then + if test "$cross_compiling" = yes; then + tcl_cv_api_serial=no else - if test "$GCC" = yes; then - # GCC predefines this symbol on systems where it applies. -cat > conftest.$ac_ext < conftest.$ac_ext < +#include + +int main() { + struct termio t; + if (ioctl(0, TCGETA, &t) == 0 + || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { + t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB; + return 0; + } + return 1; + } EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_c_char_unsigned=yes +if { (eval echo configure:5048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_api_serial=termio else - rm -rf conftest* - ac_cv_c_char_unsigned=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_api_serial=no +fi +rm -fr conftest* fi -rm -f conftest* -else -if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + fi + if test $tcl_cv_api_serial = no; then + if test "$cross_compiling" = yes; then + tcl_cv_api_serial=none else cat > conftest.$ac_ext < +#include + +int main() { + struct sgttyb t; + if (ioctl(0, TIOCGETP, &t) == 0 + || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { + t.sg_ospeed = 0; + t.sg_flags |= ODDP | EVENP | RAW; + return 0; + } + return 1; } EOF -if { (eval echo configure:4733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - ac_cv_c_char_unsigned=yes + tcl_cv_api_serial=sgtty else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - ac_cv_c_char_unsigned=no + tcl_cv_api_serial=none fi rm -fr conftest* fi -fi + fi fi -echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6 -if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - cat >> confdefs.h <<\EOF -#define __CHAR_UNSIGNED__ 1 + case $tcl_cv_api_serial in + termios) cat >> confdefs.h <<\EOF +#define USE_TERMIOS 1 +EOF +;; + termio) cat >> confdefs.h <<\EOF +#define USE_TERMIO 1 +EOF +;; + sgtty) cat >> confdefs.h <<\EOF +#define USE_SGTTY 1 EOF +;; + esac + echo "$ac_t""$tcl_cv_api_serial" 1>&6 -fi -echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:4757: checking signed char declarations" >&5 -if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then +#-------------------------------------------------------------------- +# Include sys/select.h if it exists and if it supplies things +# that appear to be useful and aren't already in sys/types.h. +# This appears to be true only on the RS/6000 under AIX. Some +# systems like OSF/1 have a sys/select.h that's of no use, and +# other systems like SCO UNIX have a sys/select.h that's +# pernicious. If "fd_set" isn't defined anywhere then set a +# special flag. +#-------------------------------------------------------------------- + +echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 +echo "configure:5126: checking for fd_set in sys/types" >&5 +if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { - - signed char *p; - p = 0; - +fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:4772: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_cv_char_signed=yes + tcl_cv_type_fd_set=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_char_signed=no + tcl_cv_type_fd_set=no fi rm -f conftest* fi -echo "$ac_t""$tcl_cv_char_signed" 1>&6 -if test $tcl_cv_char_signed = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_SIGNED_CHAR 1 -EOF - -fi - -#-------------------------------------------------------------------- -# Does putenv() copy or not? We need to know to avoid memory leaks. -#-------------------------------------------------------------------- - -echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:4797: checking for a putenv() that copies the buffer" >&5 -if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then +echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 +tk_ok=$tcl_cv_type_fd_set +if test $tcl_cv_type_fd_set = no; then + echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 +echo "configure:5154: checking for fd_mask in sys/select" >&5 + if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$cross_compiling" = yes; then - tcl_cv_putenv_copy=no -else cat > conftest.$ac_ext < - #define OURVAR "havecopy=yes" - int main (int argc, char *argv) - { - char *foo, *bar; - foo = (char *)strdup(OURVAR); - putenv(foo); - strcpy((char *)(strchr(foo, '=') + 1), "no"); - bar = getenv("havecopy"); - if (!strcmp(bar, "no")) { - /* doesnt copy */ - return 0; - } else { - /* does copy */ - return 1; - } - } - +#include EOF -if { (eval echo configure:4827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_putenv_copy=no +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "fd_mask" >/dev/null 2>&1; then + rm -rf conftest* + tcl_cv_grep_fd_mask=present else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_putenv_copy=yes -fi -rm -fr conftest* + rm -rf conftest* + tcl_cv_grep_fd_mask=missing fi - +rm -f conftest* fi -echo "$ac_t""$tcl_cv_putenv_copy" 1>&6 -if test $tcl_cv_putenv_copy = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_PUTENV_THAT_COPIES 1 + echo "$ac_t""$tcl_cv_grep_fd_mask" 1>&6 + if test $tcl_cv_grep_fd_mask = present; then + cat >> confdefs.h <<\EOF +#define HAVE_SYS_SELECT_H 1 EOF + tk_ok=yes + fi fi +if test $tk_ok = no; then + cat >> confdefs.h <<\EOF +#define NO_FD_SET 1 +EOF -#-------------------------------------------------------------------- -# Check for support of nl_langinfo function -#-------------------------------------------------------------------- - - - # Check whether --enable-langinfo or --disable-langinfo was given. -if test "${enable_langinfo+set}" = set; then - enableval="$enable_langinfo" - langinfo_ok=$enableval -else - langinfo_ok=yes fi +#------------------------------------------------------------------------------ +# Find out all about time handling differences. +#------------------------------------------------------------------------------ - HAVE_LANGINFO=0 - if test "$langinfo_ok" = "yes"; then - if test "$langinfo_ok" = "yes"; then - ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:4869: checking for langinfo.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 +echo "configure:5196: checking whether struct tm is in sys/time.h or time.h" >&5 +if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4879: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - langinfo_ok=yes -else - echo "$ac_t""no" 1>&6 -langinfo_ok=no -fi - - fi - fi - echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:4904: checking whether to use nl_langinfo" >&5 - if test "$langinfo_ok" = "yes"; then - cat > conftest.$ac_ext < +#include +#include int main() { -nl_langinfo(CODESET); +struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:4914: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - langinfo_ok=yes + ac_cv_struct_tm=time.h else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - langinfo_ok=no + ac_cv_struct_tm=sys/time.h fi rm -f conftest* - if test "$langinfo_ok" = "no"; then - langinfo_ok="no (could not compile with nl_langinfo)"; - fi - if test "$langinfo_ok" = "yes"; then - cat >> confdefs.h <<\EOF -#define HAVE_LANGINFO 1 -EOF - - fi - fi - echo "$ac_t""$langinfo_ok" 1>&6 - +fi -#-------------------------------------------------------------------- -# Look for libraries that we will need when compiling the Tcl shell -#-------------------------------------------------------------------- +echo "$ac_t""$ac_cv_struct_tm" 1>&6 +if test $ac_cv_struct_tm = sys/time.h; then + cat >> confdefs.h <<\EOF +#define TM_IN_SYS_TIME 1 +EOF +fi - #-------------------------------------------------------------------- - # On a few very rare systems, all of the libm.a stuff is - # already in libc.a. Set compiler flags accordingly. - # Also, Linux requires the "ieee" library for math to work - # right (and it must appear before "-lm"). - #-------------------------------------------------------------------- - echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:4950: checking for sin" >&5 -if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then + for ac_hdr in sys/time.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:5234: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char sin(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_sin) || defined (__stub___sin) -choke me -#else -sin(); -#endif - -; return 0; } +#include <$ac_hdr> EOF -if { (eval echo configure:4978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:5244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_func_sin=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_sin=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - MATH_LIBS="" + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 -MATH_LIBS="-lm" fi +done - echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:4999: checking for main in -lieee" >&5 -ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +echo "configure:5271: checking whether time.h and sys/time.h may both be included" >&5 +if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lieee $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < +#include +#include int main() { -main() +struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + ac_cv_header_time=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + ac_cv_header_time=no fi rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - MATH_LIBS="-lieee $MATH_LIBS" -else - echo "$ac_t""no" 1>&6 fi +echo "$ac_t""$ac_cv_header_time" 1>&6 +if test $ac_cv_header_time = yes; then + cat >> confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF - #-------------------------------------------------------------------- - # Interactive UNIX requires -linet instead of -lsocket, plus it - # needs net/errno.h to define the socket-related error codes. - #-------------------------------------------------------------------- +fi - echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:5041: checking for main in -linet" >&5 -ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 +echo "configure:5306: checking for tm_zone in struct tm" >&5 +if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-linet $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < +#include <$ac_cv_struct_tm> int main() { -main() +struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + ac_cv_struct_tm_zone=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + ac_cv_struct_tm_zone=no fi rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -linet" -else - echo "$ac_t""no" 1>&6 fi - ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:5078: checking for net/errno.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo "$ac_t""$ac_cv_struct_tm_zone" 1>&6 +if test "$ac_cv_struct_tm_zone" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_TM_ZONE 1 +EOF + +else + echo $ac_n "checking for tzname""... $ac_c" 1>&6 +echo "configure:5339: checking for tzname" >&5 +if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#include +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +#endif +int main() { +atoi(*tzname); +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5088: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:5354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + ac_cv_var_tzname=yes else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + ac_cv_var_tzname=no fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_NET_ERRNO_H 1 + +echo "$ac_t""$ac_cv_var_tzname" 1>&6 + if test $ac_cv_var_tzname = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_TZNAME 1 EOF -else - echo "$ac_t""no" 1>&6 + fi fi - #-------------------------------------------------------------------- - # Check for the existence of the -lsocket and -lnsl libraries. - # The order here is important, so that they end up in the right - # order in the command line generated by make. Here are some - # special considerations: - # 1. Use "connect" and "accept" to check for -lsocket, and - # "gethostbyname" to check for -lnsl. - # 2. Use each function name only once: can't redo a check because - # autoconf caches the results of the last check and won't redo it. - # 3. Use -lnsl and -lsocket only if they supply procedures that - # aren't already present in the normal libraries. This is because - # IRIX 5.2 has libraries, but they aren't needed and they're - # bogus: they goof up name resolution if used. - # 4. On some SVR4 systems, can't use -lsocket without -lnsl too. - # To get around this problem, check for both libraries together - # if -lsocket doesn't work by itself. - #-------------------------------------------------------------------- - - tcl_checkBoth=0 - echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:5133: checking for connect" >&5 -if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then + for ac_func in gmtime_r localtime_r +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:5379: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char connect(); +char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_connect) || defined (__stub___connect) +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -connect(); +$ac_func(); #endif ; return 0; } EOF -if { (eval echo configure:5161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_connect=yes" + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_connect=no" + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_checkSocket=0 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 -tcl_checkSocket=1 fi +done - if test "$tcl_checkSocket" = 1; then - echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:5183: checking for setsockopt" >&5 -if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then + + echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 +echo "configure:5433: checking tm_tzadj in struct tm" >&5 + if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char setsockopt(); - +#include int main() { +struct tm tm; tm.tm_tzadj; +; return 0; } +EOF +if { (eval echo configure:5445: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_member_tm_tzadj=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_member_tm_tzadj=no +fi +rm -f conftest* +fi -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_setsockopt) || defined (__stub___setsockopt) -choke me -#else -setsockopt(); -#endif + echo "$ac_t""$tcl_cv_member_tm_tzadj" 1>&6 + if test $tcl_cv_member_tm_tzadj = yes ; then + cat >> confdefs.h <<\EOF +#define HAVE_TM_TZADJ 1 +EOF + + fi + echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 +echo "configure:5466: checking tm_gmtoff in struct tm" >&5 + if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_setsockopt=yes" + tcl_cv_member_tm_gmtoff=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_setsockopt=no" + tcl_cv_member_tm_gmtoff=no fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:5229: checking for setsockopt in -lsocket" >&5 -ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo "$ac_t""$tcl_cv_member_tm_gmtoff" 1>&6 + if test $tcl_cv_member_tm_gmtoff = yes ; then + cat >> confdefs.h <<\EOF +#define HAVE_TM_GMTOFF 1 +EOF + + fi + + # + # Its important to include time.h in this check, as some systems + # (like convex) have timezone functions, etc. + # + echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 +echo "configure:5503: checking long timezone variable" >&5 + if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lsocket $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < int main() { -setsockopt() +extern long timezone; + timezone += 1; + exit (0); ; return 0; } EOF -if { (eval echo configure:5248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + tcl_cv_timezone_long=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + tcl_cv_timezone_long=no fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -lsocket" + + echo "$ac_t""$tcl_cv_timezone_long" 1>&6 + if test $tcl_cv_timezone_long = yes ; then + cat >> confdefs.h <<\EOF +#define HAVE_TIMEZONE_VAR 1 +EOF + + else + # + # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. + # + echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 +echo "configure:5540: checking time_t timezone variable" >&5 + if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "$ac_t""no" 1>&6 -tcl_checkBoth=1 + cat > conftest.$ac_ext < +int main() { +extern time_t timezone; + timezone += 1; + exit (0); +; return 0; } +EOF +if { (eval echo configure:5554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_timezone_time=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_timezone_time=no +fi +rm -f conftest* fi -fi + echo "$ac_t""$tcl_cv_timezone_time" 1>&6 + if test $tcl_cv_timezone_time = yes ; then + cat >> confdefs.h <<\EOF +#define HAVE_TIMEZONE_VAR 1 +EOF + fi fi - if test "$tcl_checkBoth" = 1; then - tk_oldLibs=$LIBS - LIBS="$LIBS -lsocket -lnsl" - echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:5276: checking for accept" >&5 -if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then + + +#-------------------------------------------------------------------- +# Some systems (e.g., IRIX 4.0.5) lack the st_blksize field +# in struct stat. But we might be able to use fstatfs instead. +#-------------------------------------------------------------------- +echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 +echo "configure:5581: checking for st_blksize in struct stat" >&5 +if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char accept(); - +#include +#include int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_accept) || defined (__stub___accept) -choke me -#else -accept(); -#endif - +struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_accept=yes" + ac_cv_struct_st_blksize=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_accept=no" + ac_cv_struct_st_blksize=no fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'accept`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_checkNsl=0 -else - echo "$ac_t""no" 1>&6 -LIBS=$tk_oldLibs +echo "$ac_t""$ac_cv_struct_st_blksize" 1>&6 +if test $ac_cv_struct_st_blksize = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ST_BLKSIZE 1 +EOF + fi - fi - echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:5326: checking for gethostbyname" >&5 -if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then +echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 +echo "configure:5615: checking for fstatfs" >&5 +if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char gethostbyname(); +char fstatfs(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +#if defined (__stub_fstatfs) || defined (__stub___fstatfs) choke me #else -gethostbyname(); +fstatfs(); #endif ; return 0; } EOF -if { (eval echo configure:5354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_gethostbyname=yes" + eval "ac_cv_func_fstatfs=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_gethostbyname=no" + eval "ac_cv_func_fstatfs=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'fstatfs`\" = yes"; then echo "$ac_t""yes" 1>&6 : else echo "$ac_t""no" 1>&6 -echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:5372: checking for gethostbyname in -lnsl" >&5 -ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then +cat >> confdefs.h <<\EOF +#define NO_FSTATFS 1 +EOF + +fi + + +#-------------------------------------------------------------------- +# Some system have no memcmp or it does not work with 8 bit +# data, this checks it and add memcmp.o to LIBOBJS if needed +#-------------------------------------------------------------------- +echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 +echo "configure:5672: checking for 8-bit clean memcmp" >&5 +if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lnsl $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" +if { (eval echo configure:5690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_func_memcmp_clean=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -lnsl" -else - echo "$ac_t""no" 1>&6 + rm -fr conftest* + ac_cv_func_memcmp_clean=no fi - +rm -fr conftest* fi - - # Don't perform the eval of the libraries here because DL_LIBS - # won't be set until we call SC_CONFIG_CFLAGS - - TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}' - - - - -# Add the threads support libraries - -LIBS="$LIBS$THREADS_LIBS" - - - echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:5428: checking how to build libraries" >&5 - # Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - tcl_ok=$enableval -else - tcl_ok=yes fi - - if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - tcl_ok=$enableval - else - tcl_ok=yes - fi - - if test "$tcl_ok" = "yes" ; then - echo "$ac_t""shared" 1>&6 - SHARED_BUILD=1 - else - echo "$ac_t""static" 1>&6 - SHARED_BUILD=0 - cat >> confdefs.h <<\EOF -#define STATIC_BUILD 1 -EOF - - fi +echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 +test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" #-------------------------------------------------------------------- -# The statements below define a collection of compile flags. This -# macro depends on the value of SHARED_BUILD, and should be called -# after SC_ENABLE_SHARED checks the configure switches. +# Some system like SunOS 4 and other BSD like systems +# have no memmove (we assume they have bcopy instead). +# {The replacement define is in compat/string.h} #-------------------------------------------------------------------- - -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5467: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then +echo $ac_n "checking for memmove""... $ac_c" 1>&6 +echo "configure:5714: checking for memmove" >&5 +if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char memmove(); +int main() { - # Step 0.a: Enable 64 bit support? +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_memmove) || defined (__stub___memmove) +choke me +#else +memmove(); +#endif - echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:5499: checking if 64bit support is requested" >&5 - # Check whether --enable-64bit or --disable-64bit was given. -if test "${enable_64bit+set}" = set; then - enableval="$enable_64bit" - : +; return 0; } +EOF +if { (eval echo configure:5742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_memmove=yes" else - enableval="no" -fi - - - if test "$enableval" = "yes"; then - do64bit=yes - else - do64bit=no - fi - echo "$ac_t""$do64bit" 1>&6 - - # Step 0.b: Enable Solaris 64 bit VIS support? + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_memmove=no" +fi +rm -f conftest* +fi - echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:5519: checking if 64bit Sparc VIS support is requested" >&5 - # Check whether --enable-64bit-vis or --disable-64bit-vis was given. -if test "${enable_64bit_vis+set}" = set; then - enableval="$enable_64bit_vis" +if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - enableval="no" + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_MEMMOVE 1 +EOF + cat >> confdefs.h <<\EOF +#define NO_STRING_H 1 +EOF + fi - if test "$enableval" = "yes"; then - # Force 64bit on with VIS - do64bit=yes - do64bitVIS=yes - else - do64bitVIS=no - fi - echo "$ac_t""$do64bitVIS" 1>&6 +#-------------------------------------------------------------------- +# On some systems strstr is broken: it returns a pointer even +# even if the original string is empty. +#-------------------------------------------------------------------- - # Step 1: set the variable "system" to hold the name and version number - # for the system. This can usually be done via the "uname" command, but - # there are a few systems, like Next, where this doesn't work. +echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 +echo "configure:5775: checking proper strstr implementation" >&5 +if test "$cross_compiling" = yes; then + tcl_ok=no +else + cat > conftest.$ac_ext <&6 -echo "configure:5543: checking system version (for dynamic loading)" >&5 - if test -f /usr/lib/NextStep/software_version; then - system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` - else - system=`uname -s`-`uname -r` - if test "$?" -ne 0 ; then - echo "$ac_t""unknown (can't find uname command)" 1>&6 - system=unknown - else - # Special check for weird MP-RAS system (uname returns weird - # results, and the version is kept in special file). - - if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print }' /etc/.relid'` - fi - if test "`uname -s`" = "AIX" ; then - system=AIX-`uname -v`.`uname -r` - fi - echo "$ac_t""$system" 1>&6 - fi - fi +extern int strstr(); +int main() +{ + exit(strstr("\0test", "test") ? 1 : 0); +} - # Step 2: check for existence of -ldl library. This is needed because - # Linux can use either -ldl or -ldld for dynamic loading. +EOF +if { (eval echo configure:5790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_ok=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_ok=no +fi +rm -fr conftest* +fi - echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:5569: checking for dlopen in -ldl" >&5 -ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then +if test $tcl_ok = yes; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""broken, using substitute" 1>&6 + LIBOBJS="$LIBOBJS strstr.o" +fi + +#-------------------------------------------------------------------- +# Check for strtoul function. This is tricky because under some +# versions of AIX strtoul returns an incorrect terminator +# pointer for the string "0". +#-------------------------------------------------------------------- + +echo $ac_n "checking for strtoul""... $ac_c" 1>&6 +echo "configure:5816: checking for strtoul" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-ldl $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char dlopen(); +char strtoul(); int main() { -dlopen() + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strtoul) || defined (__stub___strtoul) +choke me +#else +strtoul(); +#endif + ; return 0; } EOF -if { (eval echo configure:5588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_func_strtoul=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_func_strtoul=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'strtoul`\" = yes"; then echo "$ac_t""yes" 1>&6 - have_dl=yes + tcl_ok=1 else echo "$ac_t""no" 1>&6 -have_dl=no +tcl_ok=0 fi +if test "$cross_compiling" = yes; then + tcl_ok=0 +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_ok=0 +fi +rm -fr conftest* +fi - +if test "$tcl_ok" = 0; then + test -n "$verbose" && echo " Adding strtoul.o." + LIBOBJS="$LIBOBJS strtoul.o" +fi - # Step 3: set configuration options based on system name and version. +#-------------------------------------------------------------------- +# Check for the strtod function. This is tricky because in some +# versions of Linux strtod mis-parses strings starting with "+". +#-------------------------------------------------------------------- - do64bit_ok=no - EXTRA_CFLAGS="" - TCL_EXPORT_FILE_SUFFIX="" - UNSHARED_LIB_SUFFIX="" - TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' - ECHO_VERSION='`echo ${VERSION}`' - TCL_LIB_VERSIONS_OK=ok - CFLAGS_DEBUG=-g - CFLAGS_OPTIMIZE=-O - if test "$GCC" = "yes" ; then - CFLAGS_WARNING="-Wall -Wconversion -Wno-implicit-int" - else - CFLAGS_WARNING="" - fi - TCL_NEEDS_EXP_FILE=0 - TCL_BUILD_EXP_FILE="" - TCL_EXP_FILE="" - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5636: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then +echo $ac_n "checking for strtod""... $ac_c" 1>&6 +echo "configure:5907: checking for strtod" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_AR="ar" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -AR="$ac_cv_prog_AR" -if test -n "$AR"; then - echo "$ac_t""$AR" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strtod(); - if test "${AR}" = "" ; then - { echo "configure: error: Required archive tool 'ar' not found on PATH." 1>&2; exit 1; } - fi - STLIB_LD='${AR} cr' - LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" - PLAT_OBJS="" - case $system in - AIX-5.*) - if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then - # AIX requires the _r compiler when gcc isn't being used - if test "${CC}" != "cc_r" ; then - CC=${CC}_r - fi - echo "$ac_t""Using $CC for compiling with threads" 1>&6 - fi - LIBS="$LIBS -lc" - # AIX-5 uses ELF style dynamic libraries - SHLIB_CFLAGS="" - # Note: need the LIBS below, otherwise Tk won't find Tcl's - # symbols when dynamically loaded into tclsh. - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" +int main() { - DL_OBJS="tclLoadDl.o" - LDFLAGS="" +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strtod) || defined (__stub___strtod) +choke me +#else +strtod(); +#endif + +; return 0; } +EOF +if { (eval echo configure:5935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strtod=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_strtod=no" +fi +rm -f conftest* +fi - LD_LIBRARY_PATH_VAR="LIBPATH" +if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 +fi - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 - else - do64bit_ok=yes - EXTRA_CFLAGS="-q64" - LDFLAGS="-q64" - RANLIB="${RANLIB} -X64" - AR="${AR} -X64" - SHLIB_LD_FLAGS="-b64" - fi - fi +if test "$cross_compiling" = yes; then + tcl_ok=0 +else + cat > conftest.$ac_ext <&6 - fi - LIBS="$LIBS -lc" - SHLIB_CFLAGS="" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - LD_LIBRARY_PATH_VAR="LIBPATH" - TCL_NEEDS_EXP_FILE=1 - TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' +extern double strtod(); +int main() +{ + char *string = " +69"; + char *term; + double value; + value = strtod(string, &term); + if ((value != 69) || (term != (string+4))) { + exit(1); + } + exit(0); +} +EOF +if { (eval echo configure:5975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_ok=0 +fi +rm -fr conftest* +fi - # AIX v<=4.1 has some different flags than 4.2+ - if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then - LIBOBJS="$LIBOBJS tclLoadAix.o" - DL_LIBS="-lld" - fi +if test "$tcl_ok" = 0; then + test -n "$verbose" && echo " Adding strtod.o." + LIBOBJS="$LIBOBJS strtod.o" +fi - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 - else - do64bit_ok=yes - EXTRA_CFLAGS="-q64" - LDFLAGS="-q64" - RANLIB="${RANLIB} -X64" - AR="${AR} -X64" - SHLIB_LD_FLAGS="-b64" - fi - fi - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" +#-------------------------------------------------------------------- +# Under Solaris 2.4, strtod returns the wrong value for the +# terminating character under some conditions. Check for this +# and if the problem exists use a substitute procedure +# "fixstrtod" that corrects the error. +#-------------------------------------------------------------------- - # On AIX <=v4 systems, libbsd.a has to be linked in to support - # non-blocking file IO. This library has to be linked in after - # the MATH_LIBS or it breaks the pow() function. The way to - # insure proper sequencing, is to add it to the tail of MATH_LIBS. - # This library also supplies gettimeofday. - # - # AIX does not have a timezone field in struct tm. When the AIX - # bsd library is used, the timezone global and the gettimeofday - # methods are to be avoided for timezone deduction instead, we - # deduce the timezone by comparing the localtime result on a - # known GMT value. - echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:5779: checking for gettimeofday in -lbsd" >&5 -ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "checking for strtod""... $ac_c" 1>&6 +echo "configure:6001: checking for strtod" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lbsd $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char gettimeofday(); +char strtod(); int main() { -gettimeofday() + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strtod) || defined (__stub___strtod) +choke me +#else +strtod(); +#endif + ; return 0; } EOF -if { (eval echo configure:5798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_func_strtod=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_func_strtod=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then echo "$ac_t""yes" 1>&6 - libbsd=yes + tcl_strtod=1 else echo "$ac_t""no" 1>&6 -libbsd=no +tcl_strtod=0 fi - if test $libbsd = yes; then - MATH_LIBS="$MATH_LIBS -lbsd" - cat >> confdefs.h <<\EOF -#define USE_DELTA_FOR_TZ 1 -EOF + if test "$tcl_strtod" = 1; then + echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 +echo "configure:6051: checking for Solaris2.4/Tru64 strtod bugs" >&5 + if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + if test "$cross_compiling" = yes; then + tcl_cv_strtod_buggy=0 +else + cat > conftest.$ac_ext <> confdefs.h <<\EOF -#define _XOPEN_SOURCE 1 + extern double strtod(); + int main() { + char *infString="Inf", *nanString="NaN", *spaceString=" "; + char *term; + double value; + value = strtod(infString, &term); + if ((term != infString) && (term[-1] == 0)) { + exit(1); + } + value = strtod(nanString, &term); + if ((term != nanString) && (term[-1] == 0)) { + exit(1); + } + value = strtod(spaceString, &term); + if (term == (spaceString+1)) { + exit(1); + } + exit(0); + } EOF - # Use the XOPEN network library +if { (eval echo configure:6083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_strtod_buggy=1 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_strtod_buggy=0 +fi +rm -fr conftest* +fi + +fi + + if test "$tcl_cv_strtod_buggy" = 1; then + echo "$ac_t""ok" 1>&6 + else + echo "$ac_t""buggy" 1>&6 + LIBOBJS="$LIBOBJS fixstrtod.o" cat >> confdefs.h <<\EOF -#define _XOPEN_SOURCE_EXTENDED 1 +#define strtod fixstrtod EOF - # Use the XOPEN network library - LIBS="$LIBS -lxnet" # Use the XOPEN network library - SHLIB_SUFFIX=".sl" - echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:5874: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + fi + fi + + +#-------------------------------------------------------------------- +# Check for various typedefs and provide substitutes if +# they don't exist. +#-------------------------------------------------------------------- + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:6116: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < +#include +#include +#include EOF -if { (eval echo configure:5893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:6129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + ac_cv_header_stdc=yes else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + ac_cv_header_stdc=no fi rm -f conftest* -LIBS="$ac_save_LIBS" -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_ok=yes +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : else - echo "$ac_t""no" 1>&6 -tcl_ok=no + rm -rf conftest* + ac_cv_header_stdc=no fi +rm -f conftest* - if test "$tcl_ok" = yes; then - SHLIB_CFLAGS="+z" - SHLIB_LD="ld -b" - SHLIB_LD_LIBS='${LIBS}' - DL_OBJS="tclLoadShl.o" - DL_LIBS="-ldld" - LDFLAGS="-Wl,-E" - CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' - LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' - LD_LIBRARY_PATH_VAR="SHLIB_PATH" - fi - if test "$GCC" = "yes" ; then - SHLIB_LD="gcc -shared" - SHLIB_LD_LIBS='${LIBS}' - LD_SEARCH_FLAGS='' - CC_SEARCH_FLAGS='' - fi - - # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc - #EXTRA_CFLAGS="+DAportable" +fi - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - hpux_arch=`gcc -dumpmachine` - case $hpux_arch in - hppa64*) - # 64-bit gcc in use. Fix flags for GNU ld. - do64bit_ok=yes - SHLIB_LD="gcc -shared" - SHLIB_LD_LIBS='${LIBS}' - LD_SEARCH_FLAGS='' - CC_SEARCH_FLAGS='' - ;; - *) - echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 - ;; - esac - else - do64bit_ok=yes - if test "`uname -m`" = "ia64" ; then - EXTRA_CFLAGS="+DD64" - LDFLAGS="+DD64 $LDFLAGS" - else - EXTRA_CFLAGS="+DA2.0W" - LDFLAGS="+DA2.0W $LDFLAGS" - fi - fi - fi - ;; - HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) - SHLIB_SUFFIX=".sl" - echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:5967: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF -if { (eval echo configure:5986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + ac_cv_header_stdc=no fi rm -f conftest* -LIBS="$ac_save_LIBS" fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_ok=yes -else - echo "$ac_t""no" 1>&6 -tcl_ok=no -fi - if test "$tcl_ok" = yes; then - SHLIB_CFLAGS="+z" - SHLIB_LD="ld -b" - SHLIB_LD_LIBS="" - DL_OBJS="tclLoadShl.o" - DL_LIBS="-ldld" - LDFLAGS="-Wl,-E" - CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' - LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' - LD_LIBRARY_PATH_VAR="SHLIB_PATH" - fi - ;; - IRIX-4.*) - SHLIB_CFLAGS="-G 0" - SHLIB_SUFFIX=".a" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" - SHLIB_LD_LIBS='${LIBS}' - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - LDFLAGS="-Wl,-D,08000000" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' - ;; - IRIX-5.*) - SHLIB_CFLAGS="" - SHLIB_LD="ld -shared -rdata_shared" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - EXTRA_CFLAGS="" - LDFLAGS="" - ;; - IRIX-6.*) - SHLIB_CFLAGS="" - SHLIB_LD="ld -n32 -shared -rdata_shared" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - if test "$GCC" = "yes" ; then - EXTRA_CFLAGS="-mabi=n32" - LDFLAGS="-mabi=n32" - else - case $system in - IRIX-6.3) - # Use to build 6.2 compatible binaries on 6.3. - EXTRA_CFLAGS="-n32 -D_OLD_TERMIOS" - ;; - *) - EXTRA_CFLAGS="-n32" - ;; - esac - LDFLAGS="-n32" - fi - ;; - IRIX64-6.*) - SHLIB_CFLAGS="" - SHLIB_LD="ld -n32 -shared -rdata_shared" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } - # Check to enable 64-bit flags for compiler/linker +EOF +if { (eval echo configure:6196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - echo "configure: warning: 64bit mode not supported by gcc" 1>&2 - else - do64bit_ok=yes - SHLIB_LD="ld -64 -shared -rdata_shared" - EXTRA_CFLAGS="-64" - LDFLAGS="-64" - fi - fi - ;; - Linux*) - SHLIB_CFLAGS="-fPIC" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" +fi +fi - # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings - # when you inline the string and math operations. Turn this off to - # get rid of the warnings. +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF - CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" +fi - if test "$have_dl" = yes; then - SHLIB_LD="${CC} -shared" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="-rdynamic" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - else - ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:6113: checking for dld.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking for mode_t""... $ac_c" 1>&6 +echo "configure:6220: checking for mode_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#include +#if STDC_HEADERS +#include +#include +#endif EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6123: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + ac_cv_type_mode_t=yes else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + ac_cv_type_mode_t=no fi rm -f conftest* + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - - SHLIB_LD="ld -shared" - DL_OBJS="tclLoadDld.o" - DL_LIBS="-ldld" - LDFLAGS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" +echo "$ac_t""$ac_cv_type_mode_t" 1>&6 +if test $ac_cv_type_mode_t = no; then + cat >> confdefs.h <<\EOF +#define mode_t int +EOF + +fi + +echo $ac_n "checking for pid_t""... $ac_c" 1>&6 +echo "configure:6253: checking for pid_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "$ac_t""no" 1>&6 + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_pid_t=yes +else + rm -rf conftest* + ac_cv_type_pid_t=no fi +rm -f conftest* - fi - if test "`uname -m`" = "alpha" ; then - EXTRA_CFLAGS="-mieee" - fi +fi +echo "$ac_t""$ac_cv_type_pid_t" 1>&6 +if test $ac_cv_type_pid_t = no; then + cat >> confdefs.h <<\EOF +#define pid_t int +EOF - # The combo of gcc + glibc has a bug related - # to inlining of functions like strtod(). The - # -fno-builtin flag should address this problem - # but it does not work. The -fno-inline flag - # is kind of overkill but it works. - # Disable inlining only when one of the - # files in compat/*.c is being linked in. - if test x"${LIBOBJS}" != x ; then - EXTRA_CFLAGS="${EXTRA_CFLAGS} -fno-inline" - fi +fi - # XIM peeking works under XFree86. - cat >> confdefs.h <<\EOF -#define PEEK_XCLOSEIM 1 +echo $ac_n "checking for size_t""... $ac_c" 1>&6 +echo "configure:6286: checking for size_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_size_t=yes +else + rm -rf conftest* + ac_cv_type_size_t=no +fi +rm -f conftest* +fi +echo "$ac_t""$ac_cv_type_size_t" 1>&6 +if test $ac_cv_type_size_t = no; then + cat >> confdefs.h <<\EOF +#define size_t unsigned +EOF - ;; - GNU*) - SHLIB_CFLAGS="-fPIC" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" +fi - if test "$have_dl" = yes; then - SHLIB_LD="${CC} -shared" - DL_OBJS="" - DL_LIBS="-ldl" - LDFLAGS="-rdynamic" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - else - ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:6188: checking for dld.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 +echo "configure:6319: checking for uid_t in sys/types.h" >&5 +if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#include EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6198: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "uid_t" >/dev/null 2>&1; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + ac_cv_type_uid_t=yes else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + ac_cv_type_uid_t=no fi rm -f conftest* + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - - SHLIB_LD="ld -shared" - DL_OBJS="" - DL_LIBS="-ldld" - LDFLAGS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" -else - echo "$ac_t""no" 1>&6 + +echo "$ac_t""$ac_cv_type_uid_t" 1>&6 +if test $ac_cv_type_uid_t = no; then + cat >> confdefs.h <<\EOF +#define uid_t int +EOF + + cat >> confdefs.h <<\EOF +#define gid_t int +EOF + fi - fi - if test "`uname -m`" = "alpha" ; then - EXTRA_CFLAGS="-mieee" - fi - ;; - MP-RAS-02*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD="cc -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - MP-RAS-*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD="cc -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="-Wl,-Bexport" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - NetBSD-*|FreeBSD-[1-2].*|OpenBSD-*) - # Not available on all versions: check for include file. - ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:6256: checking for dlfcn.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + +echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 +echo "configure:6354: checking for socklen_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < + + #include + #include + #if STDC_HEADERS + #include + #include + #endif + EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6266: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + ac_cv_type_socklen_t=yes else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + ac_cv_type_socklen_t=no fi rm -f conftest* + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - - # NetBSD/SPARC needs -fPIC, -fpic will not do. - SHLIB_CFLAGS="-fPIC" - SHLIB_LD="ld -Bshareable -x" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:6294: checking for ELF" >&5 - cat > conftest.$ac_ext <&6 +if test $ac_cv_type_socklen_t = no; then + cat >> confdefs.h <<\EOF +#define socklen_t unsigned +EOF + +fi + +#-------------------------------------------------------------------- +# If a system doesn't have an opendir function (man, that's old!) +# then we have to supply a different version of dirent.h which +# is compatible with the substitute version of opendir that's +# provided. This version only works with V7-style directories. +#-------------------------------------------------------------------- + +echo $ac_n "checking for opendir""... $ac_c" 1>&6 +echo "configure:6398: checking for opendir" >&5 +if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir(); -#ifdef __ELF__ - yes +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_opendir) || defined (__stub___opendir) +choke me +#else +opendir(); #endif - + +; return 0; } EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then +if { (eval echo configure:6426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - echo "$ac_t""yes" 1>&6 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' + eval "ac_cv_func_opendir=yes" else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - echo "$ac_t""no" 1>&6 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - + eval "ac_cv_func_opendir=no" fi rm -f conftest* +fi - +if eval "test \"`echo '$ac_cv_func_'opendir`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : else echo "$ac_t""no" 1>&6 - - SHLIB_CFLAGS="" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".a" - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - -fi - - - # FreeBSD doesn't handle version numbers with dots. - - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - TCL_LIB_VERSIONS_OK=nodots - ;; - FreeBSD-*) - # FreeBSD 3.* and greater have ELF. - SHLIB_CFLAGS="-fPIC" - SHLIB_LD="ld -Bshareable -x" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - LDFLAGS="-export-dynamic" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - if test "${TCL_THREADS}" = "1" ; then - # The -pthread needs to go in the CFLAGS, not LIBS - LIBS=`echo $LIBS | sed s/-pthread//` - EXTRA_CFLAGS="-pthread" - LDFLAGS="$LDFLAGS -pthread" - fi - case $system in - FreeBSD-3.*) - # FreeBSD-3 doesn't handle version numbers with dots. - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' - TCL_LIB_VERSIONS_OK=nodots - ;; - esac - ;; - Rhapsody-*|Darwin-*) - SHLIB_CFLAGS="-fno-common" - SHLIB_LD="cc -dynamiclib \${LDFLAGS}" - TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000" - TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TK_LIB_FILE} -prebind -seg1addr 0xb000000" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".dylib" - DL_OBJS="tclLoadDyld.o" - PLAT_OBJS="tclMacOSXBundle.o" - DL_LIBS="" - LDFLAGS="-prebind" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - CFLAGS_OPTIMIZE="-Os" - LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" - # for compatibility with autoconf vers 2.13 : - HACK="" - EXTRA_CFLAGS="-DMA${HACK}C_OSX_TCL -DHAVE_CFBUNDLE -DUSE_VFORK -DTCL_DEFAULT_ENCODING=\\\"utf-8\\\"" - LIBS="$LIBS -framework CoreFoundation" - ;; - NEXTSTEP-*) - SHLIB_CFLAGS="" - SHLIB_LD="cc -nostdlib -r" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadNext.o" - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - OS/390-*) - CFLAGS_OPTIMIZE="" # Optimizer is buggy - cat >> confdefs.h <<\EOF -#define _OE_SOCKETS 1 +cat >> confdefs.h <<\EOF +#define USE_DIRENT2_H 1 EOF - # needed in sys/socket.h - ;; - OSF1-1.0|OSF1-1.1|OSF1-1.2) - # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 - SHLIB_CFLAGS="" - # Hack: make package name same as library name - SHLIB_LD='ld -R -export :' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadOSF.o" - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - OSF1-1.*) - # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 - SHLIB_CFLAGS="-fPIC" - if test "$SHARED_BUILD" = "1" ; then - SHLIB_LD="ld -shared" - else - SHLIB_LD="ld -non_shared" - fi - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - OSF1-V*) - # Digital OSF/1 - SHLIB_CFLAGS="" - if test "$SHARED_BUILD" = "1" ; then - SHLIB_LD='ld -shared -expect_unresolved "*"' - else - SHLIB_LD='ld -non_shared -expect_unresolved "*"' - fi - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - if test "$GCC" = "yes" ; then - EXTRA_CFLAGS="-mieee" - else - EXTRA_CFLAGS="-DHAVE_TZSET -std1 -ieee" - fi - # see pthread_intro(3) for pthread support on osf1, k.furukawa - if test "${TCL_THREADS}" = "1" ; then - EXTRA_CFLAGS="${EXTRA_CFLAGS} -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" - EXTRA_CFLAGS="${EXTRA_CFLAGS} -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" - LIBS=`echo $LIBS | sed s/-lpthreads//` - if test "$GCC" = "yes" ; then - LIBS="$LIBS -lpthread -lmach -lexc" - else - EXTRA_CFLAGS="${EXTRA_CFLAGS} -pthread" - LDFLAGS="-pthread" - fi - fi - ;; - QNX-6*) - # QNX RTP - # This may work for all QNX, but it was only reported for v6. - SHLIB_CFLAGS="-fPIC" - SHLIB_LD="ld -Bshareable -x" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - # dlopen is in -lc on QNX - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - RISCos-*) - SHLIB_CFLAGS="-G 0" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".a" - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - LDFLAGS="-Wl,-D,08000000" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - ;; - SCO_SV-3.2*) - # Note, dlopen is available only on SCO 3.2.5 and greater. However, - # this test works, since "uname -s" was non-standard in 3.2.4 and - # below. - if test "$GCC" = "yes" ; then - SHLIB_CFLAGS="-fPIC -melf" - LDFLAGS="-melf -Wl,-Bexport" - else - SHLIB_CFLAGS="-Kpic -belf" - LDFLAGS="-belf -Wl,-Bexport" - fi - SHLIB_LD="ld -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - SINIX*5.4*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD="cc -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - SunOS-4*) - SHLIB_CFLAGS="-PIC" - SHLIB_LD="ld" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} +fi - # SunOS can't handle version numbers with dots in them in library - # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it - # requires an extra version number at the end of .so file names. - # So, the library has to have a name like libtcl75.so.1.0 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - TCL_LIB_VERSIONS_OK=nodots - ;; - SunOS-5.[0-6]*) +#-------------------------------------------------------------------- +# The check below checks whether defines the type +# "union wait" correctly. It's needed because of weirdness in +# HP-UX where "union wait" is defined in both the BSD and SYS-V +# environments. Checking the usability of WIFEXITED seems to do +# the trick. +#-------------------------------------------------------------------- - # Note: If _REENTRANT isn't defined, then Solaris - # won't define thread-safe library routines. +echo $ac_n "checking union wait""... $ac_c" 1>&6 +echo "configure:6459: checking union wait" >&5 +if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +int main() { - cat >> confdefs.h <<\EOF -#define _REENTRANT 1 +union wait x; +WIFEXITED(x); /* Generates compiler error if WIFEXITED + * uses an int. */ + +; return 0; } EOF +if { (eval echo configure:6476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_union_wait=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_union_wait=no +fi +rm -f conftest* +fi - cat >> confdefs.h <<\EOF -#define _POSIX_PTHREAD_SEMANTICS 1 +echo "$ac_t""$tcl_cv_union_wait" 1>&6 +if test $tcl_cv_union_wait = no; then + cat >> confdefs.h <<\EOF +#define NO_UNION_WAIT 1 EOF +fi - SHLIB_CFLAGS="-KPIC" +#-------------------------------------------------------------------- +# Check whether there is an strncasecmp function on this system. +# This is a bit tricky because under SCO it's in -lsocket and +# under Sequent Dynix it's in -linet. +#-------------------------------------------------------------------- - # Note: need the LIBS below, otherwise Tk won't find Tcl's - # symbols when dynamically loaded into tclsh. +echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 +echo "configure:6503: checking for strncasecmp" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strncasecmp(); - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="" - if test "$GCC" = "yes" ; then - SHLIB_LD="$CC -shared" - CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - else - SHLIB_LD="/usr/ccs/bin/ld -G -z text" - CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - fi - ;; - SunOS-5*) +int main() { - # Note: If _REENTRANT isn't defined, then Solaris - # won't define thread-safe library routines. +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strncasecmp) || defined (__stub___strncasecmp) +choke me +#else +strncasecmp(); +#endif - cat >> confdefs.h <<\EOF -#define _REENTRANT 1 +; return 0; } EOF +if { (eval echo configure:6531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strncasecmp=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_strncasecmp=no" +fi +rm -f conftest* +fi - cat >> confdefs.h <<\EOF -#define _POSIX_PTHREAD_SEMANTICS 1 -EOF +if eval "test \"`echo '$ac_cv_func_'strncasecmp`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 +fi +if test "$tcl_ok" = 0; then + echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 +echo "configure:6553: checking for strncasecmp in -lsocket" >&5 +ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&2 - else - do64bit_ok=yes - if test "$do64bitVIS" = "yes" ; then - EXTRA_CFLAGS="-xarch=v9a" - LDFLAGS="-xarch=v9a" - else - EXTRA_CFLAGS="-xarch=v9" - LDFLAGS="-xarch=v9" - fi - fi - else - echo "configure: warning: "64bit mode only supported sparcv9 system"" 1>&2 - fi - fi - - # Note: need the LIBS below, otherwise Tk won't find Tcl's - # symbols when dynamically loaded into tclsh. +int main() { +strncasecmp() +; return 0; } +EOF +if { (eval echo configure:6572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - if test "$GCC" = "yes" ; then - SHLIB_LD="$CC -shared" - CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - else - SHLIB_LD="/usr/ccs/bin/ld -G -z text" - CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' - fi - ;; - ULTRIX-4.*) - SHLIB_CFLAGS="-G 0" - SHLIB_SUFFIX=".a" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" - SHLIB_LD_LIBS='${LIBS}' - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - LDFLAGS="-Wl,-D,08000000" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - if test "$GCC" != "yes" ; then - EXTRA_CFLAGS="-DHAVE_TZSET -std1" - fi - ;; - UNIX_SV* | UnixWare-5*) - SHLIB_CFLAGS="-KPIC" - SHLIB_LD="cc -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers - # that don't grok the -Bexport option. Test that it does. - hold_ldflags=$LDFLAGS - echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:6656: checking for ld accepts -Bexport flag" >&5 - LDFLAGS="${LDFLAGS} -Wl,-Bexport" - cat > conftest.$ac_ext <&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 +fi + +fi +if test "$tcl_ok" = 0; then + echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 +echo "configure:6596: checking for strncasecmp in -linet" >&5 +ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-linet $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - found=yes + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - found=no + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* - LDFLAGS=$hold_ldflags - echo "$ac_t""$found" 1>&6 - if test $found = yes; then - LDFLAGS="-Wl,-Bexport" - else - LDFLAGS="" - fi - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - esac +LIBS="$ac_save_LIBS" - if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then - echo "configure: warning: "64bit support being disabled -- don\'t know magic for this platform"" 1>&2 - fi +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 +fi - # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic - # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop, - # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need - # to determine which of several header files defines the a.out file - # format (a.out.h, sys/exec.h, or sys/exec_aout.h). At present, we - # support only a file format that is more or less version-7-compatible. - # In particular, - # - a.out files must begin with `struct exec'. - # - the N_TXTOFF on the `struct exec' must compute the seek address - # of the text segment - # - The `struct exec' must contain a_magic, a_text, a_data, a_bss - # and a_entry fields. - # The following compilation should succeed if and only if either sys/exec.h - # or a.out.h is usable for the purpose. - # - # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the - # `struct exec' includes a second header that contains information that - # duplicates the v7 fields that are needed. +fi +if test "$tcl_ok" = 0; then + LIBOBJS="$LIBOBJS strncasecmp.o" +fi + +#-------------------------------------------------------------------- +# The code below deals with several issues related to gettimeofday: +# 1. Some systems don't provide a gettimeofday function at all +# (set NO_GETTOD if this is the case). +# 2. SGI systems don't use the BSD form of the gettimeofday function, +# but they have a BSDgettimeofday function that can be used instead. +# 3. See if gettimeofday is declared in the header file. +# if not, set the GETTOD_NOT_DECLARED flag so that tclPort.h can +# declare it. +#-------------------------------------------------------------------- - if test "x$DL_OBJS" = "xtclLoadAout.o" ; then - echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:6713: checking sys/exec.h" >&5 - cat > conftest.$ac_ext <&6 +echo "configure:6653: checking for BSDgettimeofday" >&5 +if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char BSDgettimeofday(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char BSDgettimeofday(); + int main() { - struct exec foo; - unsigned long seek; - int flag; -#if defined(__mips) || defined(mips) - seek = N_TXTOFF (foo.ex_f, foo.ex_o); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_BSDgettimeofday) || defined (__stub___BSDgettimeofday) +choke me #else - seek = N_TXTOFF (foo); +BSDgettimeofday(); #endif - flag = (foo.a_magic == OMAGIC); - return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - + ; return 0; } EOF -if { (eval echo configure:6733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_ok=usable + eval "ac_cv_func_BSDgettimeofday=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=unusable + eval "ac_cv_func_BSDgettimeofday=no" fi rm -f conftest* - echo "$ac_t""$tcl_ok" 1>&6 - if test $tcl_ok = usable; then - cat >> confdefs.h <<\EOF -#define USE_SYS_EXEC_H 1 +fi + +if eval "test \"`echo '$ac_cv_func_'BSDgettimeofday`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_BSDGETTIMEOFDAY 1 EOF - else - echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:6751: checking a.out.h" >&5 - cat > conftest.$ac_ext <&6 + + echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 +echo "configure:6703: checking for gettimeofday" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gettimeofday(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gettimeofday(); + int main() { - struct exec foo; - unsigned long seek; - int flag; -#if defined(__mips) || defined(mips) - seek = N_TXTOFF (foo.ex_f, foo.ex_o); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday) +choke me #else - seek = N_TXTOFF (foo); +gettimeofday(); #endif - flag = (foo.a_magic == OMAGIC); - return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - + ; return 0; } EOF -if { (eval echo configure:6771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_ok=usable + eval "ac_cv_func_gettimeofday=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=unusable + eval "ac_cv_func_gettimeofday=no" fi rm -f conftest* - echo "$ac_t""$tcl_ok" 1>&6 - if test $tcl_ok = usable; then - cat >> confdefs.h <<\EOF -#define USE_A_OUT_H 1 +fi + +if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_GETTOD 1 EOF - else - echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:6789: checking sys/exec_aout.h" >&5 - cat > conftest.$ac_ext < -int main() { +fi - struct exec foo; - unsigned long seek; - int flag; -#if defined(__mips) || defined(mips) - seek = N_TXTOFF (foo.ex_f, foo.ex_o); -#else - seek = N_TXTOFF (foo); -#endif - flag = (foo.a_midmag == OMAGIC); - return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - -; return 0; } + +fi + +echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 +echo "configure:6758: checking for gettimeofday declaration" >&5 +if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < EOF -if { (eval echo configure:6809: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "gettimeofday" >/dev/null 2>&1; then rm -rf conftest* - tcl_ok=usable + tcl_cv_grep_gettimeofday=present else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=unusable + tcl_cv_grep_gettimeofday=missing fi rm -f conftest* - echo "$ac_t""$tcl_ok" 1>&6 - if test $tcl_ok = usable; then - cat >> confdefs.h <<\EOF -#define USE_SYS_EXEC_AOUT_H 1 -EOF - else - DL_OBJS="" - fi - fi - fi - fi +fi - # Step 5: disable dynamic loading if requested via a command-line switch. +echo "$ac_t""$tcl_cv_grep_gettimeofday" 1>&6 +if test $tcl_cv_grep_gettimeofday = missing ; then + cat >> confdefs.h <<\EOF +#define GETTOD_NOT_DECLARED 1 +EOF - # Check whether --enable-load or --disable-load was given. -if test "${enable_load+set}" = set; then - enableval="$enable_load" - tcl_ok=$enableval -else - tcl_ok=yes fi - if test "$tcl_ok" = "no"; then - DL_OBJS="" - fi +#-------------------------------------------------------------------- +# The following code checks to see whether it is possible to get +# signed chars on this platform. This is needed in order to +# properly generate sign-extended ints from character values. +#-------------------------------------------------------------------- - if test "x$DL_OBJS" != "x" ; then - BUILD_DLTEST="\$(DLTEST_TARGETS)" - else - echo "Can't figure out how to do dynamic loading or shared libraries" - echo "on this system." - SHLIB_CFLAGS="" - SHLIB_LD="" - SHLIB_SUFFIX="" - DL_OBJS="tclLoadNone.o" - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - BUILD_DLTEST="" - fi +echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 +echo "configure:6794: checking whether char is unsigned" >&5 +if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$GCC" = yes; then + # GCC predefines this symbol on systems where it applies. +cat > conftest.$ac_ext <&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_c_char_unsigned=yes +else + rm -rf conftest* + ac_cv_c_char_unsigned=no +fi +rm -f conftest* - if test "$DL_OBJS" != "tclLoadNone.o" ; then - if test "$GCC" = "yes" ; then - case $system in - AIX-*) - ;; - BSD/OS*) - ;; - IRIX*) - ;; - NetBSD-*|FreeBSD-*|OpenBSD-*) - ;; - Rhapsody-*|Darwin-*) - ;; - RISCos-*) - ;; - SCO_SV-3.2*) - ;; - ULTRIX-4.*) - ;; - *) - SHLIB_CFLAGS="-fPIC" - ;; - esac - fi - fi +else +if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_c_char_unsigned=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_char_unsigned=no +fi +rm -fr conftest* +fi - if test "$SHARED_LIB_SUFFIX" = "" ; then - SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}' - fi - if test "$UNSHARED_LIB_SUFFIX" = "" ; then - UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' - fi +fi +fi - if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then - LIB_SUFFIX=${SHARED_LIB_SUFFIX} - MAKE_LIB='${SHLIB_LD} -o $@ ${SHLIB_LD_FLAGS} ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' - INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' - else - LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} +echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6 +if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then + cat >> confdefs.h <<\EOF +#define __CHAR_UNSIGNED__ 1 +EOF - if test "$RANLIB" = "" ; then - MAKE_LIB='$(STLIB_LD) $@ ${OBJS}' - INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' - else - MAKE_LIB='${STLIB_LD} $@ ${OBJS} ; ${RANLIB} $@' - INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))' - fi +fi - fi +echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 +echo "configure:6857: checking signed char declarations" >&5 +if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_char_signed=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_char_signed=no +fi +rm -f conftest* +fi +echo "$ac_t""$tcl_cv_char_signed" 1>&6 +if test $tcl_cv_char_signed = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_SIGNED_CHAR 1 +EOF - +fi - - - - - - - +#-------------------------------------------------------------------- +# Does putenv() copy or not? We need to know to avoid memory leaks. +#-------------------------------------------------------------------- - - - - - +echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 +echo "configure:6897: checking for a putenv() that copies the buffer" >&5 +if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + tcl_cv_putenv_copy=no +else + cat > conftest.$ac_ext < + #define OURVAR "havecopy=yes" + int main (int argc, char *argv) + { + char *foo, *bar; + foo = (char *)strdup(OURVAR); + putenv(foo); + strcpy((char *)(strchr(foo, '=') + 1), "no"); + bar = getenv("havecopy"); + if (!strcmp(bar, "no")) { + /* doesnt copy */ + return 0; + } else { + /* does copy */ + return 1; + } + } - - - - - - - +EOF +if { (eval echo configure:6927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_putenv_copy=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_putenv_copy=yes +fi +rm -fr conftest* +fi - - - - - +fi +echo "$ac_t""$tcl_cv_putenv_copy" 1>&6 +if test $tcl_cv_putenv_copy = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_PUTENV_THAT_COPIES 1 +EOF - echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:6961: checking for build with symbols" >&5 - # Check whether --enable-symbols or --disable-symbols was given. -if test "${enable_symbols+set}" = set; then - enableval="$enable_symbols" - tcl_ok=$enableval -else - tcl_ok=no fi -# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT. - if test "$tcl_ok" = "no"; then - CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)' - LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)' - DBGX="" - echo "$ac_t""no" 1>&6 - else - CFLAGS_DEFAULT='$(CFLAGS_DEBUG)' - LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)' - DBGX=g - if test "$tcl_ok" = "yes"; then - echo "$ac_t""yes (standard debugging)" 1>&6 - fi - fi - - +#-------------------------------------------------------------------- +# Check for support of nl_langinfo function +#-------------------------------------------------------------------- - if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then - cat >> confdefs.h <<\EOF -#define TCL_MEM_DEBUG 1 -EOF - fi + # Check whether --enable-langinfo or --disable-langinfo was given. +if test "${enable_langinfo+set}" = set; then + enableval="$enable_langinfo" + langinfo_ok=$enableval +else + langinfo_ok=yes +fi - if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then - cat >> confdefs.h <<\EOF -#define TCL_COMPILE_DEBUG 1 -EOF - cat >> confdefs.h <<\EOF -#define TCL_COMPILE_STATS 1 + HAVE_LANGINFO=0 + if test "$langinfo_ok" = "yes"; then + if test "$langinfo_ok" = "yes"; then + ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 +echo "configure:6969: checking for langinfo.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:6979: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + langinfo_ok=yes +else + echo "$ac_t""no" 1>&6 +langinfo_ok=no +fi + fi fi + echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 +echo "configure:7004: checking whether to use nl_langinfo" >&5 + if test "$langinfo_ok" = "yes"; then + cat > conftest.$ac_ext < +int main() { +nl_langinfo(CODESET); +; return 0; } +EOF +if { (eval echo configure:7014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + langinfo_ok=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + langinfo_ok=no +fi +rm -f conftest* + if test "$langinfo_ok" = "no"; then + langinfo_ok="no (could not compile with nl_langinfo)"; + fi + if test "$langinfo_ok" = "yes"; then + cat >> confdefs.h <<\EOF +#define HAVE_LANGINFO 1 +EOF - if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then - if test "$tcl_ok" = "all"; then - echo "$ac_t""enabled symbols mem compile debugging" 1>&6 - else - echo "$ac_t""enabled $tcl_ok debugging" 1>&6 fi fi + echo "$ac_t""$langinfo_ok" 1>&6 -TCL_DBGX=${DBGX} - #-------------------------------------------------------------------- # The statements below check for systems where POSIX-style # non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. @@ -7024,17 +7045,17 @@ TCL_DBGX=${DBGX} do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7028: checking for $ac_hdr" >&5 +echo "configure:7049: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7059: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7064,17 +7085,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7068: checking for $ac_hdr" >&5 +echo "configure:7089: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7101,7 +7122,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7105: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7126: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7164,7 +7185,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7168: checking how to package libraries" >&5 +echo "configure:7189: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -7469,9 +7490,8 @@ s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@MKLINKS_FLAGS@%$MKLINKS_FLAGS%g s%@CC@%$CC%g -s%@CPP@%$CPP%g s%@TCL_THREADS@%$TCL_THREADS%g -s%@LIBOBJS@%$LIBOBJS%g +s%@CPP@%$CPP%g s%@TCL_LIBS@%$TCL_LIBS%g s%@MATH_LIBS@%$MATH_LIBS%g s%@RANLIB@%$RANLIB%g @@ -7482,7 +7502,6 @@ s%@PLAT_OBJS@%$PLAT_OBJS%g s%@CFLAGS_DEBUG@%$CFLAGS_DEBUG%g s%@CFLAGS_OPTIMIZE@%$CFLAGS_OPTIMIZE%g s%@CFLAGS_WARNING@%$CFLAGS_WARNING%g -s%@EXTRA_CFLAGS@%$EXTRA_CFLAGS%g s%@LDFLAGS_DEBUG@%$LDFLAGS_DEBUG%g s%@LDFLAGS_OPTIMIZE@%$LDFLAGS_OPTIMIZE%g s%@CC_SEARCH_FLAGS@%$CC_SEARCH_FLAGS%g @@ -7501,6 +7520,7 @@ s%@INSTALL_LIB@%$INSTALL_LIB%g s%@INSTALL_STUB_LIB@%$INSTALL_STUB_LIB%g s%@CFLAGS_DEFAULT@%$CFLAGS_DEFAULT%g s%@LDFLAGS_DEFAULT@%$LDFLAGS_DEFAULT%g +s%@LIBOBJS@%$LIBOBJS%g s%@TCL_VERSION@%$TCL_VERSION%g s%@TCL_MAJOR_VERSION@%$TCL_MAJOR_VERSION%g s%@TCL_MINOR_VERSION@%$TCL_MINOR_VERSION%g diff --git a/unix/configure.in b/unix/configure.in index c1a769d..ae42960 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.7 2004/07/13 19:21:37 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.8 2004/07/19 20:12:26 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -44,7 +44,6 @@ if test "${CFLAGS+set}" != "set" ; then fi AC_PROG_CC -AC_HAVE_HEADERS(unistd.h limits.h) #------------------------------------------------------------------------ # Threads support @@ -70,6 +69,30 @@ fi fi #-------------------------------------------------------------------- +# Look for libraries that we will need when compiling the Tcl shell +#-------------------------------------------------------------------- + +SC_TCL_LINK_LIBS + +# Add the threads support libraries + +LIBS="$LIBS$THREADS_LIBS" + +SC_ENABLE_SHARED + +#-------------------------------------------------------------------- +# The statements below define a collection of compile flags. This +# macro depends on the value of SHARED_BUILD, and should be called +# after SC_ENABLE_SHARED checks the configure switches. +#-------------------------------------------------------------------- + +SC_CONFIG_CFLAGS + +SC_ENABLE_SYMBOLS + +TCL_DBGX=${DBGX} + +#-------------------------------------------------------------------- # Detect what compiler flags to set for 64-bit support. #-------------------------------------------------------------------- @@ -413,30 +436,6 @@ fi SC_ENABLE_LANGINFO #-------------------------------------------------------------------- -# Look for libraries that we will need when compiling the Tcl shell -#-------------------------------------------------------------------- - -SC_TCL_LINK_LIBS - -# Add the threads support libraries - -LIBS="$LIBS$THREADS_LIBS" - -SC_ENABLE_SHARED - -#-------------------------------------------------------------------- -# The statements below define a collection of compile flags. This -# macro depends on the value of SHARED_BUILD, and should be called -# after SC_ENABLE_SHARED checks the configure switches. -#-------------------------------------------------------------------- - -SC_CONFIG_CFLAGS - -SC_ENABLE_SYMBOLS - -TCL_DBGX=${DBGX} - -#-------------------------------------------------------------------- # The statements below check for systems where POSIX-style # non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. # On these systems (mostly older ones), use the old BSD-style @@ -585,4 +584,4 @@ AC_SUBST(TCL_HAS_LONGLONG) AC_SUBST(BUILD_DLTEST) AC_SUBST(TCL_PACKAGE_PATH) -AC_OUTPUT(Makefile dltest/Makefile tclConfig.sh) +AC_OUTPUT([Makefile dltest/Makefile tclConfig.sh]) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index f5f8d72..199930e 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -396,7 +396,9 @@ AC_DEFUN(SC_ENABLE_FRAMEWORK, [ #------------------------------------------------------------------------ # SC_ENABLE_THREADS -- # -# Specify if thread support should be enabled +# Specify if thread support should be enabled. TCL_THREADS is +# checked so that if you are compiling an extension against a +# threaded core, your extension must be compiled threaded as well. # # Arguments: # none @@ -421,8 +423,12 @@ AC_DEFUN(SC_ENABLE_THREADS, [ AC_ARG_ENABLE(threads, [ --enable-threads build with threads], [tcl_ok=$enableval], [tcl_ok=no]) - if test "$tcl_ok" = "yes"; then - AC_MSG_RESULT(yes) + if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then + if test "${TCL_THREADS}" = 1; then + AC_MSG_RESULT([yes (threaded core)]) + else + AC_MSG_RESULT([yes]) + fi TCL_THREADS=1 AC_DEFINE(TCL_THREADS) # USE_THREAD_ALLOC tells us to try the special thread-based @@ -726,7 +732,7 @@ AC_DEFUN(SC_CONFIG_MANPAGES, [ # Flags used when running the compiler in debug mode # CFLAGS_OPTIMIZE - # Flags used when running the compiler in optimize mode -# EXTRA_CFLAGS +# CFLAGS - Additional CFLAGS added as necessary (usually 64-bit) # #-------------------------------------------------------------------- @@ -796,7 +802,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ # Step 3: set configuration options based on system name and version. do64bit_ok=no - EXTRA_CFLAGS="" + LDFLAGS_ORIG="$LDFLAGS" TCL_EXPORT_FILE_SUFFIX="" UNSHARED_LIB_SUFFIX="" TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' @@ -805,7 +811,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O if test "$GCC" = "yes" ; then - CFLAGS_WARNING="-Wall -Wconversion -Wno-implicit-int" + CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing" else CFLAGS_WARNING="" fi @@ -839,7 +845,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" - LDFLAGS="" LD_LIBRARY_PATH_VAR="LIBPATH" @@ -849,8 +854,8 @@ dnl AC_CHECK_TOOL(AR, ar) AC_MSG_WARN("64bit mode not supported with GCC on $system") else do64bit_ok=yes - EXTRA_CFLAGS="-q64" - LDFLAGS="-q64" + CFLAGS="$CFLAGS -q64" + LDFLAGS="$LDFLAGS -q64" RANLIB="${RANLIB} -X64" AR="${AR} -X64" SHLIB_LD_FLAGS="-b64" @@ -891,7 +896,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} LD_LIBRARY_PATH_VAR="LIBPATH" @@ -910,8 +914,8 @@ dnl AC_CHECK_TOOL(AR, ar) AC_MSG_WARN("64bit mode not supported with GCC on $system") else do64bit_ok=yes - EXTRA_CFLAGS="-q64" - LDFLAGS="-q64" + CFLAGS="$CFLAGS -q64" + LDFLAGS="$LDFLAGS -q64" RANLIB="${RANLIB} -X64" AR="${AR} -X64" SHLIB_LD_FLAGS="-b64" @@ -937,6 +941,21 @@ dnl AC_CHECK_TOOL(AR, ar) AC_DEFINE(USE_DELTA_FOR_TZ) fi ;; + BeOS*) + SHLIB_CFLAGS="-fPIC" + SHLIB_LD="${CC} -nostart" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + + #----------------------------------------------------------- + # Check for inet_ntoa in -lbind, for BeOS (which also needs + # -lsocket, even if the network functions are in -lnet which + # is always linked to, for compatibility. + #----------------------------------------------------------- + AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"]) + ;; BSD/OS-2.1*|BSD/OS-3*) SHLIB_CFLAGS="" SHLIB_LD="shlicc -r" @@ -944,7 +963,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -955,7 +973,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="-export-dynamic" + LDFLAGS="$LDFLAGS -export-dynamic" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -966,7 +984,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -984,7 +1001,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD_LIBS='${LIBS}' DL_OBJS="tclLoadShl.o" DL_LIBS="-ldld" - LDFLAGS="-Wl,-E" + LDFLAGS="$LDFLAGS -Wl,-E" CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' LD_LIBRARY_PATH_VAR="SHLIB_PATH" @@ -997,7 +1014,7 @@ dnl AC_CHECK_TOOL(AR, ar) fi # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc - #EXTRA_CFLAGS="+DAportable" + #CFLAGS="$CFLAGS +DAportable" # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then @@ -1018,13 +1035,8 @@ dnl AC_CHECK_TOOL(AR, ar) esac else do64bit_ok=yes - if test "`uname -m`" = "ia64" ; then - EXTRA_CFLAGS="+DD64" - LDFLAGS="+DD64 $LDFLAGS" - else - EXTRA_CFLAGS="+DA2.0W" - LDFLAGS="+DA2.0W $LDFLAGS" - fi + CFLAGS="$CFLAGS +DD64" + LDFLAGS="$LDFLAGS +DD64" fi fi ;; @@ -1037,7 +1049,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD_LIBS="" DL_OBJS="tclLoadShl.o" DL_LIBS="-ldld" - LDFLAGS="-Wl,-E" + LDFLAGS="$LDFLAGS -Wl,-E" CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' LD_LIBRARY_PATH_VAR="SHLIB_PATH" @@ -1050,7 +1062,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD_LIBS='${LIBS}' DL_OBJS="tclLoadAout.o" DL_LIBS="" - LDFLAGS="-Wl,-D,08000000" + LDFLAGS="$LDFLAGS -Wl,-D,08000000" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' @@ -1064,8 +1076,6 @@ dnl AC_CHECK_TOOL(AR, ar) DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - EXTRA_CFLAGS="" - LDFLAGS="" ;; IRIX-6.*) SHLIB_CFLAGS="" @@ -1077,19 +1087,19 @@ dnl AC_CHECK_TOOL(AR, ar) CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' if test "$GCC" = "yes" ; then - EXTRA_CFLAGS="-mabi=n32" - LDFLAGS="-mabi=n32" + CFLAGS="$CFLAGS -mabi=n32" + LDFLAGS="$LDFLAGS -mabi=n32" else case $system in IRIX-6.3) # Use to build 6.2 compatible binaries on 6.3. - EXTRA_CFLAGS="-n32 -D_OLD_TERMIOS" + CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS" ;; *) - EXTRA_CFLAGS="-n32" + CFLAGS="$CFLAGS -n32" ;; esac - LDFLAGS="-n32" + LDFLAGS="$LDFLAGS -n32" fi ;; IRIX64-6.*) @@ -1099,7 +1109,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" - LDFLAGS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' @@ -1111,8 +1120,8 @@ dnl AC_CHECK_TOOL(AR, ar) else do64bit_ok=yes SHLIB_LD="ld -64 -shared -rdata_shared" - EXTRA_CFLAGS="-64" - LDFLAGS="-64" + CFLAGS="$CFLAGS -64" + LDFLAGS="$LDFLAGS -64" fi fi ;; @@ -1121,17 +1130,17 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" + CFLAGS_OPTIMIZE=-O2 # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings # when you inline the string and math operations. Turn this off to # get rid of the warnings. - - CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" + #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" if test "$have_dl" = yes; then SHLIB_LD="${CC} -shared" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="-rdynamic" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} else @@ -1139,12 +1148,11 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD="ld -shared" DL_OBJS="tclLoadDld.o" DL_LIBS="-ldld" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS=""]) fi if test "`uname -m`" = "alpha" ; then - EXTRA_CFLAGS="-mieee" + CFLAGS="$CFLAGS -mieee" fi # The combo of gcc + glibc has a bug related @@ -1155,7 +1163,7 @@ dnl AC_CHECK_TOOL(AR, ar) # Disable inlining only when one of the # files in compat/*.c is being linked in. if test x"${LIBOBJS}" != x ; then - EXTRA_CFLAGS="${EXTRA_CFLAGS} -fno-inline" + CFLAGS="$CFLAGS -fno-inline" fi # XIM peeking works under XFree86. @@ -1171,7 +1179,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD="${CC} -shared" DL_OBJS="" DL_LIBS="-ldl" - LDFLAGS="-rdynamic" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" else @@ -1179,12 +1187,11 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD="ld -shared" DL_OBJS="" DL_LIBS="-ldld" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS=""]) fi if test "`uname -m`" = "alpha" ; then - EXTRA_CFLAGS="-mieee" + CFLAGS="$CFLAGS -mieee" fi ;; MP-RAS-02*) @@ -1194,7 +1201,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -1205,11 +1211,11 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="-Wl,-Bexport" + LDFLAGS="$LDFLAGS -Wl,-Bexport" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; - NetBSD-*|FreeBSD-[[1-2]].*|OpenBSD-*) + NetBSD-*|FreeBSD-[[1-2]].*) # Not available on all versions: check for include file. AC_CHECK_HEADER(dlfcn.h, [ # NetBSD/SPARC needs -fPIC, -fpic will not do. @@ -1219,7 +1225,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" - LDFLAGS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' AC_MSG_CHECKING(for ELF) @@ -1240,7 +1245,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".a" DL_OBJS="tclLoadAout.o" DL_LIBS="" - LDFLAGS="" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' @@ -1251,6 +1255,30 @@ dnl AC_CHECK_TOOL(AR, ar) UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' TCL_LIB_VERSIONS_OK=nodots ;; + OpenBSD-*) + SHLIB_LD="${CC} -shared" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + AC_MSG_CHECKING(for ELF) + AC_EGREP_CPP(yes, [ +#ifdef __ELF__ + yes +#endif + ], + [AC_MSG_RESULT(yes) + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'], + [AC_MSG_RESULT(no) + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'] + ) + + # OpenBSD doesn't do version numbers with dots. + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + TCL_LIB_VERSIONS_OK=nodots + ;; FreeBSD-*) # FreeBSD 3.* and greater have ELF. SHLIB_CFLAGS="-fPIC" @@ -1259,13 +1287,13 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" - LDFLAGS="-export-dynamic" + LDFLAGS="$LDFLAGS -export-dynamic" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' if test "${TCL_THREADS}" = "1" ; then # The -pthread needs to go in the CFLAGS, not LIBS LIBS=`echo $LIBS | sed s/-pthread//` - EXTRA_CFLAGS="-pthread" + CFLAGS="$CFLAGS -pthread" LDFLAGS="$LDFLAGS -pthread" fi case $system in @@ -1287,14 +1315,14 @@ dnl AC_CHECK_TOOL(AR, ar) DL_OBJS="tclLoadDyld.o" PLAT_OBJS="tclMacOSXBundle.o" DL_LIBS="" - LDFLAGS="-prebind" + LDFLAGS="$LDFLAGS -prebind" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" CFLAGS_OPTIMIZE="-Os" LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" # for compatibility with autoconf vers 2.13 : HACK="" - EXTRA_CFLAGS="-DMA${HACK}C_OSX_TCL -DHAVE_CFBUNDLE -DUSE_VFORK -DTCL_DEFAULT_ENCODING=\\\"utf-8\\\"" + CFLAGS="$CFLAGS -DMA${HACK}C_OSX_TCL -DHAVE_CFBUNDLE -DUSE_VFORK -DTCL_DEFAULT_ENCODING=\\\"utf-8\\\"" LIBS="$LIBS -framework CoreFoundation" ;; NEXTSTEP-*) @@ -1304,7 +1332,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadNext.o" DL_LIBS="" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -1321,7 +1348,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadOSF.o" DL_LIBS="" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -1337,7 +1363,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -1353,24 +1378,23 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" - LDFLAGS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' if test "$GCC" = "yes" ; then - EXTRA_CFLAGS="-mieee" + CFLAGS="$CFLAGS -mieee" else - EXTRA_CFLAGS="-DHAVE_TZSET -std1 -ieee" + CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee" fi # see pthread_intro(3) for pthread support on osf1, k.furukawa if test "${TCL_THREADS}" = "1" ; then - EXTRA_CFLAGS="${EXTRA_CFLAGS} -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" - EXTRA_CFLAGS="${EXTRA_CFLAGS} -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" + CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" + CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" LIBS=`echo $LIBS | sed s/-lpthreads//` if test "$GCC" = "yes" ; then LIBS="$LIBS -lpthread -lmach -lexc" else - EXTRA_CFLAGS="${EXTRA_CFLAGS} -pthread" - LDFLAGS="-pthread" + CFLAGS="$CFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" fi fi @@ -1385,7 +1409,6 @@ dnl AC_CHECK_TOOL(AR, ar) DL_OBJS="tclLoadDl.o" # dlopen is in -lc on QNX DL_LIBS="" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -1396,7 +1419,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".a" DL_OBJS="tclLoadAout.o" DL_LIBS="" - LDFLAGS="-Wl,-D,08000000" + LDFLAGS="$LDFLAGS -Wl,-D,08000000" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ;; @@ -1406,10 +1429,10 @@ dnl AC_CHECK_TOOL(AR, ar) # below. if test "$GCC" = "yes" ; then SHLIB_CFLAGS="-fPIC -melf" - LDFLAGS="-melf -Wl,-Bexport" + LDFLAGS="$LDFLAGS -melf -Wl,-Bexport" else SHLIB_CFLAGS="-Kpic -belf" - LDFLAGS="-belf -Wl,-Bexport" + LDFLAGS="$LDFLAGS -belf -Wl,-Bexport" fi SHLIB_LD="ld -G" SHLIB_LD_LIBS="" @@ -1426,7 +1449,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -1437,7 +1459,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} @@ -1467,7 +1488,6 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - LDFLAGS="" if test "$GCC" = "yes" ; then SHLIB_LD="$CC -shared" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' @@ -1487,7 +1507,6 @@ dnl AC_CHECK_TOOL(AR, ar) AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) SHLIB_CFLAGS="-KPIC" - LDFLAGS="" # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then @@ -1498,11 +1517,11 @@ dnl AC_CHECK_TOOL(AR, ar) else do64bit_ok=yes if test "$do64bitVIS" = "yes" ; then - EXTRA_CFLAGS="-xarch=v9a" - LDFLAGS="-xarch=v9a" + CFLAGS="$CFLAGS -xarch=v9a" + LDFLAGS="$LDFLAGS -xarch=v9a" else - EXTRA_CFLAGS="-xarch=v9" - LDFLAGS="-xarch=v9" + CFLAGS="$CFLAGS -xarch=v9" + LDFLAGS="$LDFLAGS -xarch=v9" fi fi else @@ -1534,11 +1553,11 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD_LIBS='${LIBS}' DL_OBJS="tclLoadAout.o" DL_LIBS="" - LDFLAGS="-Wl,-D,08000000" + LDFLAGS="$LDFLAGS -Wl,-D,08000000" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} if test "$GCC" != "yes" ; then - EXTRA_CFLAGS="-DHAVE_TZSET -std1" + CFLAGS="$CFLAGS -DHAVE_TZSET -std1" fi ;; UNIX_SV* | UnixWare-5*) @@ -1552,15 +1571,10 @@ dnl AC_CHECK_TOOL(AR, ar) # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS AC_MSG_CHECKING(for ld accepts -Bexport flag) - LDFLAGS="${LDFLAGS} -Wl,-Bexport" - AC_TRY_LINK(, [int i;], found=yes, found=no) - LDFLAGS=$hold_ldflags + LDFLAGS="$LDFLAGS -Wl,-Bexport" + AC_TRY_LINK(, [int i;], [found=yes], + [LDFLAGS=$hold_ldflags found=no]) AC_MSG_RESULT($found) - if test $found = yes; then - LDFLAGS="-Wl,-Bexport" - else - LDFLAGS="" - fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -1665,7 +1679,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX="" DL_OBJS="tclLoadNone.o" DL_LIBS="" - LDFLAGS="" + LDFLAGS="$LDFLAGS_ORIG" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" BUILD_DLTEST="" @@ -1757,7 +1771,6 @@ dnl esac AC_SUBST(CFLAGS_DEBUG) AC_SUBST(CFLAGS_OPTIMIZE) AC_SUBST(CFLAGS_WARNING) - AC_SUBST(EXTRA_CFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(LDFLAGS_DEBUG) @@ -1920,7 +1933,7 @@ int main() { # NO_DIRENT_H # NO_ERRNO_H # NO_VALUES_H -# NO_LIMITS_H +# HAVE_LIMITS_H or NO_LIMITS_H # NO_STDLIB_H # NO_STRING_H # NO_SYS_WAIT_H @@ -1963,7 +1976,8 @@ closedir(d); AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H)]) AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H)]) AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H)]) - AC_CHECK_HEADER(limits.h, , [AC_DEFINE(NO_LIMITS_H)]) + AC_CHECK_HEADER(limits.h, + [AC_DEFINE(HAVE_LIMITS_H)], [AC_DEFINE(NO_LIMITS_H)]) AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0) AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0) AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0) @@ -2431,9 +2445,9 @@ AC_DEFUN(SC_TCL_64BIT_FLAGS, [ # See if we should use long anyway Note that we substitute in the # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... - AC_TRY_RUN([#include - int main() {exit(!(sizeof(]${tcl_type_64bit}[) > sizeof(long)));} - ], tcl_cv_type_64bit=${tcl_type_64bit},:,:)]) + AC_TRY_COMPILE(,[switch (0) { + case 1: case (sizeof(]${tcl_type_64bit}[)==sizeof(long)): ; + }],tcl_cv_type_64bit=${tcl_type_64bit})]) if test "${tcl_cv_type_64bit}" = none ; then AC_DEFINE(TCL_WIDE_INT_IS_LONG) AC_MSG_RESULT(using long) -- cgit v0.12 From 344d66a51bb1caa147e4fc14c9c97c2c2549ab0d Mon Sep 17 00:00:00 2001 From: das Date: Tue, 20 Jul 2004 05:37:43 +0000 Subject: * macosx/tclMacOSXBundle.c: dynamically acquire address for CFBundleOpenBundleResourceMap symbol, since it is only present in full CoreFoundation on Mac OS X and not in CFLite on pure Darwin. --- ChangeLog | 6 ++++++ macosx/tclMacOSXBundle.c | 22 ++++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e67637a..913521e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-07-20 Daniel Steffen + + * macosx/tclMacOSXBundle.c: dynamically acquire address for + CFBundleOpenBundleResourceMap symbol, since it is only present in + full CoreFoundation on Mac OS X and not in CFLite on pure Darwin. + 2004-07-19 Jeff Hobbs * unix/Makefile.in, unix/tcl.m4: move (C|LD)FLAGS after their diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 5018aa8..8d50494 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -52,6 +52,7 @@ */ #include +#include #include "tcl.h" /* @@ -167,8 +168,25 @@ Tcl_MacOSXOpenVersionedBundleResources( if (bundleRef) { if (hasResourceFile) { - short refNum; - refNum = CFBundleOpenBundleResourceMap(bundleRef); + /* Dynamically acquire address for CFBundleOpenBundleResourceMap + * symbol, since it is only present in full CoreFoundation + * on Mac OS X and not in CFLite on pure Darwin. */ + static int initialized = FALSE; + static short (*openresourcemap)(CFBundleRef) = NULL; + if(!initialized) { + NSSymbol nsSymbol = NULL; + if(NSIsSymbolNameDefinedWithHint("_CFBundleOpenBundleResourceMap", "CoreFoundation")) { + nsSymbol = NSLookupAndBindSymbolWithHint("_CFBundleOpenBundleResourceMap", "CoreFoundation"); + if(nsSymbol) { + openresourcemap = NSAddressOfSymbol(nsSymbol); + } + } + initialized = TRUE; + } + if (openresourcemap) { + short refNum; + refNum = openresourcemap(bundleRef); + } } libURL = CFBundleCopyResourceURL(bundleRef, -- cgit v0.12 From 3d2e7995dd6ea56840a0c4a2c00466ae914251db Mon Sep 17 00:00:00 2001 From: das Date: Tue, 20 Jul 2004 11:13:07 +0000 Subject: * unix/tcl.m4: fixed Darwin autoconf breakage caused by recent CFLAGS reordering. * unix/configure: regen * unix/tclConfig.sh.in: replaced EXTRA_CFLAGS with CFLAGS. * unix/dltest/Makefile.in: replaced EXTRA_CFLAGS with DEFS. --- ChangeLog | 7 + unix/configure | 515 +++++++++++++++++++++++++----------------------- unix/dltest/Makefile.in | 4 +- unix/tcl.m4 | 7 +- unix/tclConfig.sh.in | 4 +- 5 files changed, 279 insertions(+), 258 deletions(-) diff --git a/ChangeLog b/ChangeLog index 913521e..049eb71 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2004-07-20 Daniel Steffen + * unix/tcl.m4: fixed Darwin autoconf breakage caused by + recent CFLAGS reordering. + * unix/configure: regen + + * unix/tclConfig.sh.in: replaced EXTRA_CFLAGS with CFLAGS. + * unix/dltest/Makefile.in: replaced EXTRA_CFLAGS with DEFS. + * macosx/tclMacOSXBundle.c: dynamically acquire address for CFBundleOpenBundleResourceMap symbol, since it is only present in full CoreFoundation on Mac OS X and not in CFLite on pure Darwin. diff --git a/unix/configure b/unix/configure index c026b5d..2c76f5b 100755 --- a/unix/configure +++ b/unix/configure @@ -2914,9 +2914,22 @@ rm -f conftest* LD_SEARCH_FLAGS="" CFLAGS_OPTIMIZE="-Os" LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" - # for compatibility with autoconf vers 2.13 : - HACK="" - CFLAGS="$CFLAGS -DMA${HACK}C_OSX_TCL -DHAVE_CFBUNDLE -DUSE_VFORK -DTCL_DEFAULT_ENCODING=\\\"utf-8\\\"" + cat >> confdefs.h <<\EOF +#define MAC_OSX_TCL 1 +EOF + + cat >> confdefs.h <<\EOF +#define HAVE_CFBUNDLE 1 +EOF + + cat >> confdefs.h <<\EOF +#define USE_VFORK 1 +EOF + + cat >> confdefs.h <&6 -echo "configure:3184: checking for ld accepts -Bexport flag" >&5 +echo "configure:3197: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3231,9 +3244,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3235: checking sys/exec.h" >&5 +echo "configure:3248: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3251,7 +3264,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3255: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3268: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3269,9 +3282,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3273: checking a.out.h" >&5 +echo "configure:3286: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3289,7 +3302,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3307,9 +3320,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3311: checking sys/exec_aout.h" >&5 +echo "configure:3324: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3327,7 +3340,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3478,7 +3491,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3482: checking for build with symbols" >&5 +echo "configure:3495: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3539,21 +3552,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3543: checking for required early compiler flags" >&5 +echo "configure:3556: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3561,7 +3574,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3569,7 +3582,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3573: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3586: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3595,14 +3608,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3606: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3610,7 +3623,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3618,7 +3631,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3635: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3647,7 +3660,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3651: checking for 64-bit integer type" >&5 +echo "configure:3664: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3655,14 +3668,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3679: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3676,7 +3689,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3710,13 +3723,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3714: checking for struct dirent64" >&5 +echo "configure:3727: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3724,7 +3737,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3745,13 +3758,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3749: checking for struct stat64" >&5 +echo "configure:3762: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3759,7 +3772,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3780,13 +3793,13 @@ EOF echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:3784: checking for off64_t" >&5 +echo "configure:3797: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3794,7 +3807,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:3798: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3811: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -3821,14 +3834,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3825: checking whether byte ordering is bigendian" >&5 +echo "configure:3838: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -3839,11 +3852,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -3854,7 +3867,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -3874,7 +3887,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3904: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -3920,12 +3933,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3924: checking for $ac_func" >&5 +echo "configure:3937: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3982,12 +3995,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3986: checking for $ac_func" >&5 +echo "configure:3999: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4040,12 +4053,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4044: checking for $ac_func" >&5 +echo "configure:4057: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4095,12 +4108,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4099: checking for strerror" >&5 +echo "configure:4112: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4147,12 +4160,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4151: checking for getwd" >&5 +echo "configure:4164: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4199,12 +4212,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4203: checking for wait3" >&5 +echo "configure:4216: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4251,12 +4264,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4255: checking for uname" >&5 +echo "configure:4268: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4303,12 +4316,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4307: checking for realpath" >&5 +echo "configure:4320: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4366,9 +4379,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4370: checking dirent.h" >&5 +echo "configure:4383: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -4394,7 +4407,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -4415,17 +4428,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4419: checking for errno.h" >&5 +echo "configure:4432: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4452,17 +4465,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4456: checking for float.h" >&5 +echo "configure:4469: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4489,17 +4502,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4493: checking for values.h" >&5 +echo "configure:4506: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4503: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4516: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4526,17 +4539,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4530: checking for limits.h" >&5 +echo "configure:4543: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4540: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4566,17 +4579,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4570: checking for stdlib.h" >&5 +echo "configure:4583: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4580: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4599,7 +4612,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4613,7 +4626,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4627,7 +4640,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4648,17 +4661,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4652: checking for string.h" >&5 +echo "configure:4665: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4675: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4681,7 +4694,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4695,7 +4708,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4721,17 +4734,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4725: checking for sys/wait.h" >&5 +echo "configure:4738: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4748: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4758,17 +4771,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4762: checking for dlfcn.h" >&5 +echo "configure:4775: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4772: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4800,17 +4813,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4804: checking for $ac_hdr" >&5 +echo "configure:4817: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4850,17 +4863,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4854: checking for $ac_hdr" >&5 +echo "configure:4867: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4864: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4887,7 +4900,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:4891: checking termios vs. termio vs. sgtty" >&5 +echo "configure:4904: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4896,7 +4909,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -4911,7 +4924,7 @@ int main() { return 1; } EOF -if { (eval echo configure:4915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -4928,7 +4941,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -4942,7 +4955,7 @@ int main() { return 1; } EOF -if { (eval echo configure:4946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -4960,7 +4973,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -4975,7 +4988,7 @@ int main() { return 1; } EOF -if { (eval echo configure:4979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -4993,7 +5006,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5010,7 +5023,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5028,7 +5041,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5044,7 +5057,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5062,7 +5075,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5079,7 +5092,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5122,19 +5135,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5126: checking for fd_set in sys/types" >&5 +echo "configure:5139: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5150,12 +5163,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5154: checking for fd_mask in sys/select" >&5 +echo "configure:5167: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5192,12 +5205,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5196: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5209: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5205,7 +5218,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5230,17 +5243,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5234: checking for $ac_hdr" >&5 +echo "configure:5247: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5267,12 +5280,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5271: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5284: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5281,7 +5294,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5298: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5302,12 +5315,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5306: checking for tm_zone in struct tm" >&5 +echo "configure:5319: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5315,7 +5328,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5335,12 +5348,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5339: checking for tzname" >&5 +echo "configure:5352: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5350,7 +5363,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5375,12 +5388,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5379: checking for $ac_func" >&5 +echo "configure:5392: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5429,19 +5442,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5433: checking tm_tzadj in struct tm" >&5 +echo "configure:5446: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5445: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5458: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5462,19 +5475,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5466: checking tm_gmtoff in struct tm" >&5 +echo "configure:5479: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5499,12 +5512,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5503: checking long timezone variable" >&5 +echo "configure:5516: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5513,7 +5526,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5536,12 +5549,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5540: checking time_t timezone variable" >&5 +echo "configure:5553: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5550,7 +5563,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5577,12 +5590,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5581: checking for st_blksize in struct stat" >&5 +echo "configure:5594: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5590,7 +5603,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5611,12 +5624,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5615: checking for fstatfs" >&5 +echo "configure:5628: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5668,7 +5681,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5672: checking for 8-bit clean memcmp" >&5 +echo "configure:5685: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5676,7 +5689,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5710,12 +5723,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5714: checking for memmove" >&5 +echo "configure:5727: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5771,12 +5784,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5775: checking proper strstr implementation" >&5 +echo "configure:5788: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -5812,12 +5825,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:5816: checking for strtoul" >&5 +echo "configure:5829: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -5864,7 +5877,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -5903,12 +5916,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:5907: checking for strtod" >&5 +echo "configure:5920: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -5955,7 +5968,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -5997,12 +6010,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6001: checking for strtod" >&5 +echo "configure:6014: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6042: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6047,7 +6060,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6051: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6064: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6056,7 +6069,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6112,12 +6125,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6116: checking for ANSI C header files" >&5 +echo "configure:6129: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6125,7 +6138,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6142: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6142,7 +6155,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6160,7 +6173,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6181,7 +6194,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6192,7 +6205,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6216,12 +6229,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6220: checking for mode_t" >&5 +echo "configure:6233: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6249,12 +6262,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6253: checking for pid_t" >&5 +echo "configure:6266: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6282,12 +6295,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6286: checking for size_t" >&5 +echo "configure:6299: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6315,12 +6328,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6319: checking for uid_t in sys/types.h" >&5 +echo "configure:6332: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6350,12 +6363,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6354: checking for socklen_t" >&5 +echo "configure:6367: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6394,12 +6407,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6398: checking for opendir" >&5 +echo "configure:6411: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6455,12 +6468,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6459: checking union wait" >&5 +echo "configure:6472: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6472,7 +6485,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6499,12 +6512,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6503: checking for strncasecmp" >&5 +echo "configure:6516: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6549,7 +6562,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6553: checking for strncasecmp in -lsocket" >&5 +echo "configure:6566: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6557,7 +6570,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6592,7 +6605,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6596: checking for strncasecmp in -linet" >&5 +echo "configure:6609: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6600,7 +6613,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6649,12 +6662,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6653: checking for BSDgettimeofday" >&5 +echo "configure:6666: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6699,12 +6712,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6703: checking for gettimeofday" >&5 +echo "configure:6716: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6754,12 +6767,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6758: checking for gettimeofday declaration" >&5 +echo "configure:6771: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6790,14 +6803,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:6794: checking whether char is unsigned" >&5 +echo "configure:6807: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -6853,12 +6866,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:6857: checking signed char declarations" >&5 +echo "configure:6870: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6885: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -6893,7 +6906,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:6897: checking for a putenv() that copies the buffer" >&5 +echo "configure:6910: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6901,7 +6914,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -6923,7 +6936,7 @@ else } EOF -if { (eval echo configure:6927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -6965,17 +6978,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:6969: checking for langinfo.h" >&5 +echo "configure:6982: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6979: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7000,17 +7013,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7004: checking whether to use nl_langinfo" >&5 +echo "configure:7017: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7027: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7045,17 +7058,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7049: checking for $ac_hdr" >&5 +echo "configure:7062: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7059: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7072: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7085,17 +7098,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7089: checking for $ac_hdr" >&5 +echo "configure:7102: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7112: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7122,7 +7135,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7126: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7139: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7185,7 +7198,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7189: checking how to package libraries" >&5 +echo "configure:7202: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/dltest/Makefile.in b/unix/dltest/Makefile.in index f9dd775..98e60b3 100644 --- a/unix/dltest/Makefile.in +++ b/unix/dltest/Makefile.in @@ -1,12 +1,12 @@ # This Makefile is used to create several test cases for Tcl's load # command. It also illustrates how to take advantage of configuration # exported by Tcl to set up Makefiles for shared libraries. -# RCS: @(#) $Id: Makefile.in,v 1.11 2002/07/16 22:44:43 mdejong Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.11.2.1 2004/07/20 11:13:10 das Exp $ TCL_DBGX = @TCL_DBGX@ CC = @CC@ LIBS = @TCL_BUILD_STUB_LIB_SPEC@ @DL_LIBS@ @LIBS@ @MATH_LIBS@ -AC_FLAGS = @EXTRA_CFLAGS@ +AC_FLAGS = @DEFS@ SHLIB_CFLAGS = @SHLIB_CFLAGS@ SHLIB_LD = @SHLIB_LD@ SHLIB_LD_LIBS = @SHLIB_LD_LIBS@ diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 199930e..4a9fac1 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1320,9 +1320,10 @@ dnl AC_CHECK_TOOL(AR, ar) LD_SEARCH_FLAGS="" CFLAGS_OPTIMIZE="-Os" LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" - # for compatibility with autoconf vers 2.13 : - HACK="" - CFLAGS="$CFLAGS -DMA${HACK}C_OSX_TCL -DHAVE_CFBUNDLE -DUSE_VFORK -DTCL_DEFAULT_ENCODING=\\\"utf-8\\\"" + AC_DEFINE(MAC_OSX_TCL) + AC_DEFINE(HAVE_CFBUNDLE) + AC_DEFINE(USE_VFORK) + AC_DEFINE_UNQUOTED(TCL_DEFAULT_ENCODING,"utf-8") LIBS="$LIBS -framework CoreFoundation" ;; NEXTSTEP-*) diff --git a/unix/tclConfig.sh.in b/unix/tclConfig.sh.in index 2ff0af5..dfe08e5 100644 --- a/unix/tclConfig.sh.in +++ b/unix/tclConfig.sh.in @@ -9,7 +9,7 @@ # # The information in this file is specific to a single platform. # -# RCS: @(#) $Id: tclConfig.sh.in,v 1.17 2002/07/28 03:15:11 mdejong Exp $ +# RCS: @(#) $Id: tclConfig.sh.in,v 1.17.2.1 2004/07/20 11:13:10 das Exp $ # Tcl's version number. TCL_VERSION='@TCL_VERSION@' @@ -68,7 +68,7 @@ TCL_SHLIB_CFLAGS='@SHLIB_CFLAGS@' TCL_CFLAGS_WARNING='@CFLAGS_WARNING@' # Extra flags to pass to cc: -TCL_EXTRA_CFLAGS='@EXTRA_CFLAGS@' +TCL_EXTRA_CFLAGS='@CFLAGS@' # Base command to use for combining object files into a shared library: TCL_SHLIB_LD='@SHLIB_LD@' -- cgit v0.12 From 1421351399efa280f6108d55bc38c5bc90051dcc Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 21 Jul 2004 01:30:56 +0000 Subject: * generic/tclEvent.c: Correct threaded obj allocator to * generic/tclInt.h: fully cleanup on exit and allow for * generic/tclThreadAlloc.c: reinitialization. [Bug #736426] * unix/tclUnixThrd.c: (mistachkin, kenny) * win/tclWinThrd.c: --- ChangeLog | 8 +++++++ generic/tclEvent.c | 6 +++-- generic/tclInt.h | 5 +++- generic/tclThreadAlloc.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++- unix/tclUnixThrd.c | 46 +++++++++++++++++++++++++++---------- win/tclWinThrd.c | 35 ++++++++++++++++++++++------ 6 files changed, 137 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 049eb71..33b9e2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-07-20 Jeff Hobbs + + * generic/tclEvent.c: Correct threaded obj allocator to + * generic/tclInt.h: fully cleanup on exit and allow for + * generic/tclThreadAlloc.c: reinitialization. [Bug #736426] + * unix/tclUnixThrd.c: (mistachkin, kenny) + * win/tclWinThrd.c: + 2004-07-20 Daniel Steffen * unix/tcl.m4: fixed Darwin autoconf breakage caused by diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 19bb0d6..67ec728 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.7 2004/07/15 09:57:10 vasiljevic Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.8 2004/07/21 01:30:57 hobbs Exp $ */ #include "tclInt.h" @@ -897,7 +897,9 @@ Tcl_Finalize() /* * There shouldn't be any malloc'ed memory after this. */ - +#if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) && !defined(PURIFY) + TclFinalizeThreadAlloc(); +#endif TclFinalizeMemorySubsystem(); inFinalize = 0; } diff --git a/generic/tclInt.h b/generic/tclInt.h index 95129b6..c3c0904 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.6 2004/06/22 11:55:35 vasiljevic Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.7 2004/07/21 01:30:57 hobbs Exp $ */ #ifndef _TCLINT @@ -2138,6 +2138,9 @@ EXTERN Tcl_Obj *TclPtrIncrVar _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, EXTERN Tcl_Obj *TclThreadAllocObj _ANSI_ARGS_((void)); EXTERN void TclThreadFreeObj _ANSI_ARGS_((Tcl_Obj *)); +EXTERN void TclFinalizeThreadAlloc _ANSI_ARGS_((void)); +EXTERN void TclpFreeAllocMutex _ANSI_ARGS_((Tcl_Mutex* mutex)); + # define TclAllocObjStorage(objPtr) \ (objPtr) = TclThreadAllocObj() diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index 0023e35..1bd51e6 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.2 2003/05/10 04:57:40 mistachkin Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.3 2004/07/21 01:30:57 hobbs Exp $ */ #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) @@ -949,4 +949,62 @@ GetBlocks(Cache *cachePtr, int bucket) return 1; } +/* + *---------------------------------------------------------------------- + * + * TclFinalizeThreadAlloc -- + * + * This procedure is used to destroy all private resources used in + * this file. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +TclFinalizeThreadAlloc() +{ + int i; + for (i = 0; i < NBUCKETS; ++i) { + TclpFreeAllocMutex(binfo[i].lockPtr); + binfo[i].lockPtr = NULL; + } + + TclpFreeAllocMutex(objLockPtr); + objLockPtr = NULL; + + TclpFreeAllocMutex(listLockPtr); + listLockPtr = NULL; +} + +#else + +/* + *---------------------------------------------------------------------- + * + * TclFinalizeThreadAlloc -- + * + * This procedure is used to destroy all private resources used in + * this file. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +TclFinalizeThreadAlloc() +{ + Tcl_Panic("TclFinalizeThreadAlloc called when threaded memory allocator not in use."); +} + #endif /* TCL_THREADS */ diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index d300d34..edfc44a 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -886,19 +886,20 @@ TclpInetNtoa(struct in_addr addr) * Additions by AOL for specialized thread memory allocator. */ #ifdef USE_THREAD_ALLOC -static int initialized = 0; +static volatile int initialized = 0; static pthread_key_t key; -static pthread_once_t once = PTHREAD_ONCE_INIT; + +typedef struct allocMutex { + Tcl_Mutex tlock; + pthread_mutex_t plock; +} allocMutex; Tcl_Mutex * TclpNewAllocMutex(void) { - struct lock { - Tcl_Mutex tlock; - pthread_mutex_t plock; - } *lockPtr; + struct allocMutex *lockPtr; - lockPtr = malloc(sizeof(struct lock)); + lockPtr = malloc(sizeof(struct allocMutex)); if (lockPtr == NULL) { panic("could not allocate lock"); } @@ -907,20 +908,41 @@ TclpNewAllocMutex(void) return &lockPtr->tlock; } -static void -InitKey(void) +void +TclpFreeAllocMutex(mutex) + Tcl_Mutex *mutex; /* The alloc mutex to free. */ +{ + allocMutex* lockPtr = (allocMutex*) mutex; + if (!lockPtr) return; + pthread_mutex_destroy(&lockPtr->plock); + free(lockPtr); +} + +void TclpFreeAllocCache(ptr) + void *ptr; { extern void TclFreeAllocCache(void *); - pthread_key_create(&key, TclFreeAllocCache); - initialized = 1; + TclFreeAllocCache(ptr); + /* + * Perform proper cleanup of things done in TclpGetAllocCache. + */ + if (initialized) { + pthread_key_delete(key); + initialized = 0; + } } void * TclpGetAllocCache(void) { if (!initialized) { - pthread_once(&once, InitKey); + pthread_mutex_lock(allocLockPtr); + if (!initialized) { + pthread_key_create(&key, TclpFreeAllocCache); + initialized = 1; + } + pthread_mutex_unlock(allocLockPtr); } return pthread_getspecific(key); } diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index 4f0caac..c99f27b 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.7 2004/07/19 19:23:03 vasiljevic Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.8 2004/07/21 01:30:58 hobbs Exp $ */ #include "tclWinInt.h" @@ -1038,17 +1038,20 @@ TclpFinalizeCondition(condPtr) * Additions by AOL for specialized thread memory allocator. */ #ifdef USE_THREAD_ALLOC +static int once; static DWORD key; +typedef struct allocMutex { + Tcl_Mutex tlock; + CRITICAL_SECTION wlock; +} allocMutex; + Tcl_Mutex * TclpNewAllocMutex(void) { - struct lock { - Tcl_Mutex tlock; - CRITICAL_SECTION wlock; - } *lockPtr; + struct allocMutex *lockPtr; - lockPtr = malloc(sizeof(struct lock)); + lockPtr = malloc(sizeof(struct allocMutex)); if (lockPtr == NULL) { panic("could not allocate lock"); } @@ -1057,10 +1060,19 @@ TclpNewAllocMutex(void) return &lockPtr->tlock; } +void +TclpFreeAllocMutex(mutex) + Tcl_Mutex *mutex; /* The alloc mutex to free. */ +{ + allocMutex* lockPtr = (allocMutex*) mutex; + if (!lockPtr) return; + DeleteCriticalSection(&lockPtr->wlock); + free(lockPtr); +} + void * TclpGetAllocCache(void) { - static int once = 0; VOID *result; if (!once) { @@ -1111,6 +1123,15 @@ TclWinFreeAllocCache(void) panic("TlsGetValue failed from TclWinFreeAllocCache!"); } } + + if (once) { + success = TlsFree(key); + if (!success) { + Tcl_Panic("TlsFree failed from TclWinFreeAllocCache!"); + } + + once = 0; /* reset for next time. */ + } } #endif /* USE_THREAD_ALLOC */ -- cgit v0.12 From 32f099af31500e24c7425ed7c762e2b665313ab0 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 22 Jul 2004 21:41:06 +0000 Subject: typo/format fixes --- ChangeLog | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 33b9e2a..d8ff568 100644 --- a/ChangeLog +++ b/ChangeLog @@ -41,7 +41,8 @@ * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Corrected a typo in the generation of error messages and simplified by reusing data in a - variable instead of retrieving the string again. Fixes [Tcl SF Bug 835289]. + variable instead of retrieving the string again. + Fixes [Tcl SF Bug 835289]. * doc/OpenFileChnl.3: Added description of the behaviour of Tcl_ReadChars when its 'charsToRead' argument is set to @@ -91,7 +92,7 @@ on 'tclvfs', thinking that they have to close the channel in the close handler for the filesystem. -2004-06-14 Andreas Kupries +2004-07-14 Andreas Kupries * generic/tclIO.c: * generic/tclIO.h: @@ -297,8 +298,8 @@ 2004-05-19 Andreas Kupries - * generic/tclIO.c: Fixed [SF Tcl Bug 943274]. This is the same problem as - * generic/tclIO.h: [SF Tcl Bug 462317], see ChangeLog entry + * generic/tclIO.c: Fixed [SF Tcl Bug 943274]. This is the same problem + * generic/tclIO.h: as [SF Tcl Bug 462317], see ChangeLog entry 2001-09-26. The fix done at that time is incomplete. It is possible to get around it if the actual read operation is defered and not executed in the event -- cgit v0.12 From 4f055e6f11bdbc90906dc4ccd6096408aaaf0aa8 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 23 Jul 2004 00:24:42 +0000 Subject: * win/tclWinDde.c: Bump to dde 1.2.3 to cover changes * library/dde/pkgIndex.tcl: committed on 2004-06-14. * changes: Updated for Tcl 8.4.7 release. --- ChangeLog | 9 +++++- changes | 76 +++++++++++++++++++++++++++++++++++++++++++++++- library/dde/pkgIndex.tcl | 4 +-- win/tclWinDde.c | 4 +-- 4 files changed, 87 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index d8ff568..68fab05 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-07-21 Don Porter + + * win/tclWinDde.c: Bump to dde 1.2.3 to cover changes + * library/dde/pkgIndex.tcl: committed on 2004-06-14. + + * changes: Updated for Tcl 8.4.7 release. + 2004-07-20 Jeff Hobbs * generic/tclEvent.c: Correct threaded obj allocator to @@ -355,7 +362,7 @@ all calls to localtime, gmtime, and tzset. Added a check in front of those calls to make sure that the TZ env var hasn't changed since the last call to tzset, and repeat - tzset if necessary. [Bug #942078] Removed a buggy test + tzset if necessary. [Bug #940278] Removed a buggy test of the Daylight Saving Time information in 'gettimeofday' in favor of applying 'localtime' to a known value. [Bug #922848] diff --git a/changes b/changes index b49c76a..f0f9dfc 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.7 2004/03/01 18:22:59 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.8 2004/07/23 00:24:44 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5963,3 +5963,77 @@ various odd regexp "can't happen" bugs. 2004-03-01 (platform support)[218561] Allow 64-bit configure on IRIX64-6.5* --- Released 8.4.6, March 1, 2004 --- See ChangeLog for details --- + +2004-03-08 (bug fix)[910525] [glob -path] in root directory (darley) + +2004-03-15 (bug fix)[916795] syntax error -> compiler segfault (sofer,porter) + +2004-03-21 (platform support) Unicode support on Win CE (hobbs) + +2004-03-29 (bug fix)[920667] install into any Unicode path on Win (hobbs) + +2004-03-31 (bug fix)[811457] support translation to "" (porter) +2004-03-31 (bug fix)[811461] ignore locales with no "langauge" part (porter) +=> msgcat 1.3.2 + +2004-04-07 (platform support) more values in win/tclConfig.sh (hobbs) + +2004-04-23 (bug fix)[930851] reset channel EOF when eofchar changes (kupries) + +2004-05-03 (bug fix)[947070] stack overflow prevention on Win (kenny) + +2004-05-03 (bug fix)[868853] leak in [fconfigure $serial -xchar] (cassoff) + +2004-04/05 (bug fix)[928353,929892,928808,947440,948177] test fixes: OSX (abner) + +2004-05-04 (bug fix) crash: [cd] w/ volumerelative $HOME (hobbs) + +2004-05-05 (bug fix)[794839] socket connect error -> r/w fileevents (gravereaux) + +2004-05-14 (bug fix)[940278] [clock] notices $::env(TZ) changes (kenny) + +2004-05-18 (bug fix)[500285,500389,852944] [clock %G %V] ISO8601 week #s (kenny) + +2004-05-22 (bug fix)[735335,736729] variable name resolution error (sofer) + +2004-05-24 (bug fix) support for non-WIDE_INT aware math functions (hobbs) + +2004-05-25 (new feature) [http::config -urlencoding] (hobbs) +=> http 2.5.0 + +2004-05-26 (bug fix)[960926] file count doubled when -singleproc 1 (porter) +=> tcltest 2.2.6 + +2004-05-27 (bug fix)[949905] corrected utf-8 encoding of \u0000 on I/O (max) + +2004-06-05 (bug fix)[976722] hi-res clock fixes: Win (godfrey,suchenwirth,kenny) + +2004-06-10 (bug fix)[932314] bad return values from Tcl_FSChdir() (vasiljevic) + +2004-06-14 (bug fix) dde hangs w/non-responsive apps (thoyts) +=> dde 1.2.3 + +2004-06-21 (platform support) exceptions w/ gcc -O3 on Win (dejong) + +2004-06-29 (bug fix)[981733] SafeBase global pollution (fellows) + +2004-07-02 (new feature)[TIP 202] pipe redirection 2>@1 (hobbs) + +2004-07-03 (bug fix)[908375] round() wide integer support (lavana, sofer) + +2004-07-15 (bug fix)[770053] crash in thread finalize of notifier (vasiljevic) + +2004-07-15 (bug fix)[990453] plug mutex leaks on reinit (mistachkin, vasiljevic) + +2004-07-16 (bug fix)[990500] clean exit of notifier thread (mistachkin, kupries) + +2004-07-19 (bug fix)[987967] improved self-init of mutexes on Win (vasiljevic) + +2004-07-19 (bug fix)[874058] improved build configuration on 64-bit systems. +Corrects Tcl_StatBuf definition issues. (hobbs) + +2004-07-20 (bug fix) pure Darwin/CFLite support (steffen) + +2004-07-20 (bug fix)[736426] plug leaky allocator reinit (mistachkin, kenny) + +--- Released 8.4.7, July 22, 2004 --- See ChangeLog for details --- diff --git a/library/dde/pkgIndex.tcl b/library/dde/pkgIndex.tcl index b293134..ca9a78f 100644 --- a/library/dde/pkgIndex.tcl +++ b/library/dde/pkgIndex.tcl @@ -1,7 +1,7 @@ if {![package vsatisfies [package provide Tcl] 8]} {return} if {[string compare $::tcl_platform(platform) windows]} {return} if {[info exists ::tcl_platform(debug)]} { - package ifneeded dde 1.2.2 [list load [file join $dir tcldde12g.dll] dde] + package ifneeded dde 1.2.3 [list load [file join $dir tcldde12g.dll] dde] } else { - package ifneeded dde 1.2.2 [list load [file join $dir tcldde12.dll] dde] + package ifneeded dde 1.2.3 [list load [file join $dir tcldde12.dll] dde] } diff --git a/win/tclWinDde.c b/win/tclWinDde.c index 181820d..ac8e3b2 100644 --- a/win/tclWinDde.c +++ b/win/tclWinDde.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.2 2004/06/14 15:22:38 patthoyts Exp $ + * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.3 2004/07/23 00:24:45 dgp Exp $ */ #include "tclPort.h" @@ -71,7 +71,7 @@ static DWORD ddeInstance; /* The application instance handle given * to us by DdeInitialize. */ static int ddeIsServer = 0; -#define TCL_DDE_VERSION "1.2.2" +#define TCL_DDE_VERSION "1.2.3" #define TCL_DDE_PACKAGE_NAME "dde" #define TCL_DDE_SERVICE_NAME "TclEval" -- cgit v0.12 From cd34e102bf2eef6b341e938c90ce2e5f54ae135b Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 23 Jul 2004 00:33:28 +0000 Subject: minor fixes to 8.4.7 changes --- changes | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/changes b/changes index f0f9dfc..c7bda69 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.8 2004/07/23 00:24:44 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.9 2004/07/23 00:33:28 hobbs Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5968,31 +5968,33 @@ various odd regexp "can't happen" bugs. 2004-03-15 (bug fix)[916795] syntax error -> compiler segfault (sofer,porter) -2004-03-21 (platform support) Unicode support on Win CE (hobbs) - 2004-03-29 (bug fix)[920667] install into any Unicode path on Win (hobbs) 2004-03-31 (bug fix)[811457] support translation to "" (porter) -2004-03-31 (bug fix)[811461] ignore locales with no "langauge" part (porter) +2004-03-31 (bug fix)[811461] ignore locales with no "language" part (porter) => msgcat 1.3.2 -2004-04-07 (platform support) more values in win/tclConfig.sh (hobbs) +2004-04-07 (platform support) properly substitute more values in Windows +tclConfig.sh (hobbs) 2004-04-23 (bug fix)[930851] reset channel EOF when eofchar changes (kupries) 2004-05-03 (bug fix)[947070] stack overflow prevention on Win (kenny) -2004-05-03 (bug fix)[868853] leak in [fconfigure $serial -xchar] (cassoff) +2004-05-03 (bug fix)[868853] fix leak in [fconfigure $serial -xchar] (cassoff) -2004-04/05 (bug fix)[928353,929892,928808,947440,948177] test fixes: OSX (abner) +2004-04/05 (bug fix)[928353,929892,928808,947440,948177] test fixes: OSX +(abner) 2004-05-04 (bug fix) crash: [cd] w/ volumerelative $HOME (hobbs) -2004-05-05 (bug fix)[794839] socket connect error -> r/w fileevents (gravereaux) +2004-05-05 (bug fix)[794839] socket connect error -> r/w fileevents +(gravereaux) 2004-05-14 (bug fix)[940278] [clock] notices $::env(TZ) changes (kenny) -2004-05-18 (bug fix)[500285,500389,852944] [clock %G %V] ISO8601 week #s (kenny) +2004-05-18 (bug fix)[500285,500389,852944] [clock %G %V] ISO8601 week numbers +(kenny) 2004-05-22 (bug fix)[735335,736729] variable name resolution error (sofer) @@ -6006,11 +6008,12 @@ various odd regexp "can't happen" bugs. 2004-05-27 (bug fix)[949905] corrected utf-8 encoding of \u0000 on I/O (max) -2004-06-05 (bug fix)[976722] hi-res clock fixes: Win (godfrey,suchenwirth,kenny) +2004-06-05 (bug fix)[976722] hi-res clock fixes: Win +(godfrey, suchenwirth, kenny) 2004-06-10 (bug fix)[932314] bad return values from Tcl_FSChdir() (vasiljevic) -2004-06-14 (bug fix) dde hangs w/non-responsive apps (thoyts) +2004-06-14 (bug fix) correct dde hangs w/non-responsive apps (thoyts) => dde 1.2.3 2004-06-21 (platform support) exceptions w/ gcc -O3 on Win (dejong) @@ -6023,9 +6026,11 @@ various odd regexp "can't happen" bugs. 2004-07-15 (bug fix)[770053] crash in thread finalize of notifier (vasiljevic) -2004-07-15 (bug fix)[990453] plug mutex leaks on reinit (mistachkin, vasiljevic) +2004-07-15 (bug fix)[990453] plug mutex leaks on reinit +(mistachkin, vasiljevic) -2004-07-16 (bug fix)[990500] clean exit of notifier thread (mistachkin, kupries) +2004-07-16 (bug fix)[990500] clean exit of notifier thread +(mistachkin, kupries) 2004-07-19 (bug fix)[987967] improved self-init of mutexes on Win (vasiljevic) -- cgit v0.12 From f32bc2676f25b7ab16490e3f6f7051733ee77847 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 23 Jul 2004 16:00:57 +0000 Subject: * tests/eofchar.data (removed): Test io-61.1 now generates its own * tests/io.test: file of test data as needed. --- ChangeLog | 6 +- tests/eofchar.data | 846 ----------------------------------------------------- tests/io.test | 22 +- 3 files changed, 19 insertions(+), 855 deletions(-) delete mode 100644 tests/eofchar.data diff --git a/ChangeLog b/ChangeLog index 68fab05..8fdadfd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ -2004-07-21 Don Porter +2004-07-22 Don Porter + + * tests/eofchar.data (removed): Test io-61.1 now generates its own + * tests/io.test: file of test data as needed. +2004-07-21 Don Porter * win/tclWinDde.c: Bump to dde 1.2.3 to cover changes * library/dde/pkgIndex.tcl: committed on 2004-06-14. diff --git a/tests/eofchar.data b/tests/eofchar.data deleted file mode 100644 index 4aa3d70..0000000 --- a/tests/eofchar.data +++ /dev/null @@ -1,846 +0,0 @@ -Ho hum -Ho hum -Ho hum -Ho hum -Ho hum -Ho hum -Ho hum -Ho hum -Ho hum -Ho hum -Ho hum -= -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla -Ge gla Ge gla Ge gla Ge gla diff --git a/tests/io.test b/tests/io.test index 59d6b72..242b949 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.4 2004/04/23 23:40:59 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.5 2004/07/23 16:00:58 dgp Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7108,12 +7108,18 @@ test io-60.1 {writing illegal utf sequences} {openpipe fileevent} { list $x $result } {1 {gets {} catch {error writing "stdout": invalid argument}}} - -set datafile [file join $::tcltest::testsDirectory eofchar.data] - -test io-61.1 {Reset eof state after changing the eof char} { +test io-61.1 {Reset eof state after changing the eof char} -setup { + set datafile [makeFile {} eofchar] + set f [open $datafile w] + puts -nonewline $f [string repeat "Ho hum\n" 11] + puts $f = + set line [string repeat "Ge gla " 4] + puts -nonewline $f [string repeat [string trimright $line]\n 834] + close $f +} -body { set f [open $datafile r] fconfigure $f -eofchar = + set res {} lappend res [read $f; tell $f] fconfigure $f -eofchar {} lappend res [read $f 1] @@ -7124,9 +7130,9 @@ test io-61.1 {Reset eof state after changing the eof char} { #lappend res [read $f; tell $f] close $f set res -} {77 = 23431} - - +} -cleanup { + removeFile eofchar +} -result {77 = 23431} # cleanup foreach file [list fooBar longfile script output test1 pipe my_script foo \ -- cgit v0.12 From d4e5bf9652f40b5cc68d23f8136afc0b61066b84 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 23 Jul 2004 16:02:26 +0000 Subject: A couple of trivial edits to the changes - added credits for bug reports and fixed a typo in one date. --- changes | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/changes b/changes index c7bda69..c0cbbb5 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.9 2004/07/23 00:33:28 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.79.2.10 2004/07/23 16:02:26 kennykb Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -5983,7 +5983,7 @@ tclConfig.sh (hobbs) 2004-05-03 (bug fix)[868853] fix leak in [fconfigure $serial -xchar] (cassoff) -2004-04/05 (bug fix)[928353,929892,928808,947440,948177] test fixes: OSX +2004-04-05 (bug fix)[928353,929892,928808,947440,948177] test fixes: OSX (abner) 2004-05-04 (bug fix) crash: [cd] w/ volumerelative $HOME (hobbs) @@ -5991,7 +5991,8 @@ tclConfig.sh (hobbs) 2004-05-05 (bug fix)[794839] socket connect error -> r/w fileevents (gravereaux) -2004-05-14 (bug fix)[940278] [clock] notices $::env(TZ) changes (kenny) +2004-05-14 (bug fix)[940278,922848] [clock] notices $::env(TZ) changes, +gmt works on all platforms. (kenny, welton, glessner) 2004-05-18 (bug fix)[500285,500389,852944] [clock %G %V] ISO8601 week numbers (kenny) -- cgit v0.12 From 5327bbab5cd5b9befa30513fd9450a40149b1356 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Sun, 25 Jul 2004 21:38:08 +0000 Subject: * generic/tclThreadAlloc.c: Moved the tclInt.h include to provide Tcl_Panic which is now required for non-threaded build. --- ChangeLog | 5 +++++ generic/tclThreadAlloc.c | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8fdadfd..27612ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-07-25 Pat Thoyts + + * generic/tclThreadAlloc.c: Moved the tclInt.h include to provide + Tcl_Panic which is now required for non-threaded build. + 2004-07-22 Don Porter * tests/eofchar.data (removed): Test io-61.1 now generates its own diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index 1bd51e6..d14ed87 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,13 +11,13 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.3 2004/07/21 01:30:57 hobbs Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.4 2004/07/25 21:38:09 patthoyts Exp $ */ -#if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) - #include "tclInt.h" +#if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) + #ifdef WIN32 #include "tclWinInt.h" #else @@ -982,7 +982,7 @@ TclFinalizeThreadAlloc() listLockPtr = NULL; } -#else +#else /* ! defined(TCL_THREADS) && ! defined(USE_THREAD_ALLOC) */ /* *---------------------------------------------------------------------- -- cgit v0.12 From 35fff5c7b6a7b36c6bac13cc62965fb3b671910e Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 26 Jul 2004 19:14:47 +0000 Subject: note 8.4.7 tag date --- ChangeLog | 23 ++++++++++++----------- changes | 4 ++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 27612ee..a461743 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-07-26 Jeff Hobbs + + *** 8.4.7 TAGGED FOR RELEASE *** + 2004-07-25 Pat Thoyts * generic/tclThreadAlloc.c: Moved the tclInt.h include to provide @@ -316,17 +320,14 @@ * generic/tclIO.c: Fixed [SF Tcl Bug 943274]. This is the same problem * generic/tclIO.h: as [SF Tcl Bug 462317], see ChangeLog entry - 2001-09-26. The fix done at that time is incomplete. It - is possible to get around it if the actual read - operation is defered and not executed in the event - handler itself. Instead of tracking if we are in an - read caused by a synthesized fileevent we now track if - the OS has delivered a true event = actual data and - bypass the driver if a read finds that there is no - actual data waiting. The flag is cleared by a short or - full read. - - ***POTENTIAL INCOMPATIBILITY*** for channel drivers. + 2001-09-26. The fix done at that time is incomplete. It is + possible to get around it if the actual read operation is defered + and not executed in the event handler itself. Instead of tracking + if we are in an read caused by a synthesized fileevent we now + track if the OS has delivered a true event = actual data and + bypass the driver if a read finds that there is no actual data + waiting. The flag is cleared by a short or full read. + [[this bug amended 2004-07-14]] 2004-05-18 Kevin B. Kenny diff --git a/changes b/changes index c0cbbb5..31c21d0 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.10 2004/07/23 16:02:26 kennykb Exp $ +RCS: @(#) $Id: changes,v 1.79.2.11 2004/07/26 19:15:03 hobbs Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6042,4 +6042,4 @@ Corrects Tcl_StatBuf definition issues. (hobbs) 2004-07-20 (bug fix)[736426] plug leaky allocator reinit (mistachkin, kenny) ---- Released 8.4.7, July 22, 2004 --- See ChangeLog for details --- +--- Released 8.4.7, July 26, 2004 --- See ChangeLog for details --- -- cgit v0.12 From dd3a15f77204f9835c4d1e9aae10aa21b9e0d4ca Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 26 Jul 2004 21:39:40 +0000 Subject: (io-61.1): create file in binary mode for x-plat --- ChangeLog | 2 ++ tests/io.test | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a461743..87a1f79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ *** 8.4.7 TAGGED FOR RELEASE *** + * tests/io.test (io-61.1): create file in binary mode for x-plat. + 2004-07-25 Pat Thoyts * generic/tclThreadAlloc.c: Moved the tclInt.h include to provide diff --git a/tests/io.test b/tests/io.test index 242b949..a529e61 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.5 2004/07/23 16:00:58 dgp Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.6 2004/07/26 21:39:42 hobbs Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7111,6 +7111,7 @@ test io-60.1 {writing illegal utf sequences} {openpipe fileevent} { test io-61.1 {Reset eof state after changing the eof char} -setup { set datafile [makeFile {} eofchar] set f [open $datafile w] + fconfigure $f -translation binary puts -nonewline $f [string repeat "Ho hum\n" 11] puts $f = set line [string repeat "Ge gla " 4] -- cgit v0.12 From 4e5f121eb24abae229a568bf40a5ff0ccd542571 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 28 Jul 2004 16:28:16 +0000 Subject: * generic/tclMain.c (Tcl_Main, StdinProc): Append newline only * tests/basic.test (basic-46.1): to incomplete scripts as part of multi-line script construction. Do not add an extra trailing newline to the complete script. [Bug 833150] --- ChangeLog | 7 +++++++ generic/tclBasic.c | 8 +++++--- tests/basic.test | 5 ++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 87a1f79..3d460a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-07-28 Don Porter + + * generic/tclMain.c (Tcl_Main, StdinProc): Append newline only + * tests/basic.test (basic-46.1): to incomplete scripts + as part of multi-line script construction. Do not add an extra + trailing newline to the complete script. [Bug 833150] + 2004-07-26 Jeff Hobbs *** 8.4.7 TAGGED FOR RELEASE *** diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 0a32cbf..f7116dd 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.8 2003/10/08 23:18:17 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.9 2004/07/28 16:28:20 dgp Exp $ */ #include "tclInt.h" @@ -4027,12 +4027,14 @@ Tcl_EvalObjEx(interp, objPtr, flags) /* * If an error was created here, record information about - * what was being executed when the error occurred. + * what was being executed when the error occurred. Remove + * the extra \n added by tclMain.c in the command sent to + * Tcl_LogCommandInfo [Bug 833150]. */ if (!(iPtr->flags & ERR_ALREADY_LOGGED)) { script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); - Tcl_LogCommandInfo(interp, script, script, numSrcBytes); + Tcl_LogCommandInfo(interp, script, script, --numSrcBytes); iPtr->flags &= ~ERR_ALREADY_LOGGED; } } diff --git a/tests/basic.test b/tests/basic.test index cc35cbe..39c9f67 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.25.2.3 2004/03/01 17:33:22 dgp Exp $ +# RCS: @(#) $Id: basic.test,v 1.25.2.4 2004/07/28 16:28:21 dgp Exp $ # package require tcltest 2 @@ -584,8 +584,7 @@ test basic-46.1 {Tcl_AllowExceptions: exception return not allowed} {stdio} { list $res $msg } {1 {invoked "continue" outside of a loop while executing -"continue -" +"continue" DONE }} -- cgit v0.12 From f2f0fbb9996fd7cdade4548cccfa9dd2e3ade578 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 30 Jul 2004 08:32:14 +0000 Subject: * unix/configure: * unix/tcl.m4 (SC_CONFIG_CFLAGS): Darwin: instead of setting PLAT_OBJS to explict object files in tcl.m4, refer to MAC_OSX_OBJS makefile var. * unix/Makefile.in: added MAC_OSX_OBJS variable. --- ChangeLog | 7 +++++++ unix/Makefile.in | 4 +++- unix/configure | 4 ++-- unix/tcl.m4 | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3d460a5..f05e644 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-07-30 Daniel Steffen + + * unix/configure: + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Darwin: instead of setting PLAT_OBJS + to explict object files in tcl.m4, refer to MAC_OSX_OBJS makefile var. + * unix/Makefile.in: added MAC_OSX_OBJS variable. + 2004-07-28 Don Porter * generic/tclMain.c (Tcl_Main, StdinProc): Append newline only diff --git a/unix/Makefile.in b/unix/Makefile.in index 6a0aad0..561e1d6 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.5 2004/07/19 20:12:24 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.6 2004/07/30 08:32:15 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -319,6 +319,8 @@ GENERIC_OBJS = regcomp.o regexec.o regfree.o regerror.o tclAlloc.o \ STUB_LIB_OBJS = tclStubLib.o ${COMPAT_OBJS} +MAC_OSX_OBJS = tclMacOSXBundle.o + OBJS = ${GENERIC_OBJS} ${UNIX_OBJS} ${NOTIFY_OBJS} ${COMPAT_OBJS} \ @DL_OBJS@ @PLAT_OBJS@ diff --git a/unix/configure b/unix/configure index 2c76f5b..bc54665 100755 --- a/unix/configure +++ b/unix/configure @@ -2907,7 +2907,7 @@ rm -f conftest* SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" - PLAT_OBJS="tclMacOSXBundle.o" + PLAT_OBJS=\$\(MAC\_OSX_OBJS\) DL_LIBS="" LDFLAGS="$LDFLAGS -prebind" CC_SEARCH_FLAGS="" @@ -2926,7 +2926,7 @@ EOF #define USE_VFORK 1 EOF - cat >> confdefs.h <> confdefs.h <<\EOF #define TCL_DEFAULT_ENCODING "utf-8" EOF diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 4a9fac1..8b125b0 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1313,7 +1313,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" - PLAT_OBJS="tclMacOSXBundle.o" + PLAT_OBJS=\$\(MAC\_OSX_OBJS\) DL_LIBS="" LDFLAGS="$LDFLAGS -prebind" CC_SEARCH_FLAGS="" @@ -1323,7 +1323,7 @@ dnl AC_CHECK_TOOL(AR, ar) AC_DEFINE(MAC_OSX_TCL) AC_DEFINE(HAVE_CFBUNDLE) AC_DEFINE(USE_VFORK) - AC_DEFINE_UNQUOTED(TCL_DEFAULT_ENCODING,"utf-8") + AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8") LIBS="$LIBS -framework CoreFoundation" ;; NEXTSTEP-*) -- cgit v0.12 From 860089c25c029c50adc81eccf46e6978648bac42 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 30 Jul 2004 15:15:56 +0000 Subject: * generic/tclEvent.c (Tcl_Finalize): Re-organized Tcl_Finalize so that Tcl_ExitProc's that call Tcl_Finalize recursively do not cause deadlock. [Patch 999084 fixes Tk Bug 714956] --- ChangeLog | 6 ++++++ generic/tclEvent.c | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index f05e644..bd9a33d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-07-30 Don Porter + + * generic/tclEvent.c (Tcl_Finalize): Re-organized Tcl_Finalize + so that Tcl_ExitProc's that call Tcl_Finalize recursively do not + cause deadlock. [Patch 999084 fixes Tk Bug 714956] + 2004-07-30 Daniel Steffen * unix/configure: diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 67ec728..059871c 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.8 2004/07/21 01:30:57 hobbs Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.9 2004/07/30 15:15:57 dgp Exp $ */ #include "tclInt.h" @@ -783,6 +783,29 @@ void Tcl_Finalize() { ExitHandler *exitPtr; + + /* + * Invoke exit handlers first. + */ + + Tcl_MutexLock(&exitMutex); + inFinalize = 1; + for (exitPtr = firstExitPtr; exitPtr != NULL; exitPtr = firstExitPtr) { + /* + * Be careful to remove the handler from the list before + * invoking its callback. This protects us against + * double-freeing if the callback should call + * Tcl_DeleteExitHandler on itself. + */ + + firstExitPtr = exitPtr->nextPtr; + Tcl_MutexUnlock(&exitMutex); + (*exitPtr->proc)(exitPtr->clientData); + ckfree((char *) exitPtr); + Tcl_MutexLock(&exitMutex); + } + firstExitPtr = NULL; + Tcl_MutexUnlock(&exitMutex); TclpInitLock(); if (subsystemsInitialized != 0) { @@ -796,29 +819,6 @@ Tcl_Finalize() (void) TCL_TSD_INIT(&dataKey); /* - * Invoke exit handlers first. - */ - - Tcl_MutexLock(&exitMutex); - inFinalize = 1; - for (exitPtr = firstExitPtr; exitPtr != NULL; exitPtr = firstExitPtr) { - /* - * Be careful to remove the handler from the list before - * invoking its callback. This protects us against - * double-freeing if the callback should call - * Tcl_DeleteExitHandler on itself. - */ - - firstExitPtr = exitPtr->nextPtr; - Tcl_MutexUnlock(&exitMutex); - (*exitPtr->proc)(exitPtr->clientData); - ckfree((char *) exitPtr); - Tcl_MutexLock(&exitMutex); - } - firstExitPtr = NULL; - Tcl_MutexUnlock(&exitMutex); - - /* * Clean up after the current thread now, after exit handlers. * In particular, the testexithandler command sets up something * that writes to standard output, which gets closed. -- cgit v0.12 From 8b645aed8f5bf864e5e9244d9784a7536a932c02 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 10 Aug 2004 19:35:35 +0000 Subject: Changed handling of the returned thread ID since broken on 64-bit systems (Cray). Thanks to Rob Ratcliff for reporting the bug. --- ChangeLog | 6 ++++++ unix/tclUnixThrd.c | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index bd9a33d..f50e44d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-08-10 Zoran Vasiljevic + + * unix/tclUnixThrd.c (TclpThreadCreate): changed handling of + the returned thread ID since broken on 64-bit systems (Cray). + Thanks to Rob Ratcliff for reporting the bug. + 2004-07-30 Don Porter * generic/tclEvent.c (Tcl_Finalize): Re-organized Tcl_Finalize diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index edfc44a..738808a 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -91,6 +91,7 @@ TclpThreadCreate(idPtr, proc, clientData, stackSize, flags) { #ifdef TCL_THREADS pthread_attr_t attr; + pthread_t theThread; int result; pthread_attr_init(&attr); @@ -126,12 +127,13 @@ TclpThreadCreate(idPtr, proc, clientData, stackSize, flags) } - if (pthread_create((pthread_t *)idPtr, &attr, + if (pthread_create(&theThread, &attr, (void * (*)())proc, (void *)clientData) && - pthread_create((pthread_t *)idPtr, NULL, + pthread_create(&theThread, NULL, (void * (*)())proc, (void *)clientData)) { result = TCL_ERROR; } else { + *idPtr = (Tcl_ThreadId)theThread; result = TCL_OK; } pthread_attr_destroy(&attr); -- cgit v0.12 From fcdb3fb3304b33b2a76e2e47d92cdd5c2ca4c145 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 13 Aug 2004 21:45:03 +0000 Subject: * library/msgcat/msgcat.tcl: Added checks to prevent [mclocale] * tests/msgcat.test: from registering filesystem paths to possibly malicious code to be evaluated by a later [mcload]. * library/msgcat/pkgIndex.tcl: Bump to msgcat 1.3.3 --- ChangeLog | 7 +++++++ library/msgcat/msgcat.tcl | 11 ++++++++--- library/msgcat/pkgIndex.tcl | 2 +- tests/msgcat.test | 22 +++++++++++++++++++--- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index f50e44d..3afa606 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-08-13 Don Porter + + * library/msgcat/msgcat.tcl: Added checks to prevent [mclocale] + * tests/msgcat.test: from registering filesystem paths to possibly + malicious code to be evaluated by a later [mcload]. + * library/msgcat/pkgIndex.tcl: Bump to msgcat 1.3.3 + 2004-08-10 Zoran Vasiljevic * unix/tclUnixThrd.c (TclpThreadCreate): changed handling of diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl index 044dcbb..217a618 100644 --- a/library/msgcat/msgcat.tcl +++ b/library/msgcat/msgcat.tcl @@ -10,12 +10,12 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.3 2004/03/31 18:51:01 dgp Exp $ +# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.4 2004/08/13 21:45:16 dgp Exp $ package require Tcl 8.2 # When the version number changes, be sure to update the pkgIndex.tcl file, # and the installation directory in the Makefiles. -package provide msgcat 1.3.2 +package provide msgcat 1.3.3 namespace eval msgcat { namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \ @@ -227,7 +227,12 @@ proc msgcat::mclocale {args} { } if {$len == 1} { - set Locale [string tolower [lindex $args 0]] + set newLocale [lindex $args 0] + if {$newLocale ne [file tail $newLocale]} { + return -code error "invalid newLocale value \"$newLocale\":\ + could be path to unsafe code." + } + set Locale [string tolower $newLocale] set Loclist {} set word "" foreach part [split $Locale _] { diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl index a048de1..91a93ad 100644 --- a/library/msgcat/pkgIndex.tcl +++ b/library/msgcat/pkgIndex.tcl @@ -1,2 +1,2 @@ if {![package vsatisfies [package provide Tcl] 8.2]} {return} -package ifneeded msgcat 1.3.2 [list source [file join $dir msgcat.tcl]] +package ifneeded msgcat 1.3.3 [list source [file join $dir msgcat.tcl]] diff --git a/tests/msgcat.test b/tests/msgcat.test index 216e2e7..0edec23 100644 --- a/tests/msgcat.test +++ b/tests/msgcat.test @@ -12,15 +12,15 @@ # Note that after running these tests, entries will be left behind in the # message catalogs for locales foo, foo_BAR, and foo_BAR_baz. # -# RCS: @(#) $Id: msgcat.test,v 1.11.2.1 2003/03/26 22:56:09 dgp Exp $ +# RCS: @(#) $Id: msgcat.test,v 1.11.2.2 2004/08/13 21:45:16 dgp Exp $ package require Tcl 8.2 if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." return } -if {[catch {package require msgcat 1.3}]} { - puts stderr "Skipping tests in [info script]. No msgcat 1.3 found to test." +if {[catch {package require msgcat 1.3.3}]} { + puts stderr "Skipping tests in [info script]. No msgcat 1.3.3 found to test." return } @@ -165,6 +165,22 @@ namespace eval ::msgcat::test { mcpreferences } -result {en_us_funky en_us en} + test msgcat-1.12 {mclocale set, reject evil input} -setup { + variable locale [mclocale] + } -cleanup { + mclocale $locale + } -body { + mclocale /path/to/evil/code + } -returnCodes error -match glob -result {invalid newLocale value *} + + test msgcat-1.13 {mclocale set, reject evil input} -setup { + variable locale [mclocale] + } -cleanup { + mclocale $locale + } -body { + mclocale looks/ok/../../../../but/is/path/to/evil/code + } -returnCodes error -match glob -result {invalid newLocale value *} + # Tests msgcat-2.*: [mcset], [mcmset], namespace partitioning test msgcat-2.1 {mcset, global scope} { -- cgit v0.12 From b0fd12960e73a75f19054c952e0f96b76f9034ca Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 16 Aug 2004 14:18:24 +0000 Subject: fix for [Bug 1008314] --- ChangeLog | 8 ++++++++ doc/SetVar.3 | 5 ++++- generic/tclTest.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- generic/tclVar.c | 9 ++++++--- tests/result.test | 33 ++++++++++++++++++++++++++++----- 5 files changed, 88 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3afa606..cf6124c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-07-23 Miguel Sofer + + * doc/SetVar.3: + * generic/tclTest.c (TestseterrorcodeCmd): + * generic/tclVar.c (TclPtrSetVar): + * tests/result.test (result-4.*, result-5.*): [Bug 1008314] + detected and fixed by dgp. + 2004-08-13 Don Porter * library/msgcat/msgcat.tcl: Added checks to prevent [mclocale] diff --git a/doc/SetVar.3 b/doc/SetVar.3 index 7f22096..7fa6af3 100644 --- a/doc/SetVar.3 +++ b/doc/SetVar.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: SetVar.3,v 1.7.2.1 2003/07/18 16:56:24 dgp Exp $ +'\" RCS: @(#) $Id: SetVar.3,v 1.7.2.2 2004/08/16 14:18:25 msofer Exp $ '\" .so man.macros .TH Tcl_SetVar 3 8.1 Tcl "Tcl Library Procedures" @@ -221,6 +221,9 @@ A separator space is appended before the new list element unless the list element is going to be the first element in a list or sublist (i.e. the variable's current value is empty, or contains the single character ``{'', or ends in `` }''). +When appending, the original value of the variable must also be +a valid list, so that the operation is the appending of a new +list element onto a list. .PP \fBTcl_GetVar\fR and \fBTcl_GetVar2\fR return the current value of a variable. diff --git a/generic/tclTest.c b/generic/tclTest.c index 1d7774a..dbd2b8e 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.8 2004/06/08 20:25:43 dgp Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.9 2004/08/16 14:18:25 msofer Exp $ */ #define TCL_TEST @@ -315,6 +315,8 @@ static int TestsetassocdataCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int argc, CONST char **argv)); static int TestsetCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int argc, CONST char **argv)); +static int TestseterrorcodeCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int argc, CONST char **argv)); static int TestsetobjerrorcodeCmd _ANSI_ARGS_(( ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); @@ -654,6 +656,8 @@ Tcltest_Init(interp) (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testseterr", TestsetCmd, (ClientData) TCL_LEAVE_ERR_MSG, (Tcl_CmdDeleteProc *) NULL); + Tcl_CreateCommand(interp, "testseterrorcode", TestseterrorcodeCmd, + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateObjCommand(interp, "testsetobjerrorcode", TestsetobjerrorcodeCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); @@ -3811,11 +3815,46 @@ TestupvarCmd(dummy, interp, argc, argv) /* *---------------------------------------------------------------------- * + * TestseterrorcodeCmd -- + * + * This procedure implements the "testseterrorcodeCmd". + * This tests up to five elements passed to the + * Tcl_SetErrorCode command. + * + * Results: + * A standard Tcl result. Always returns TCL_ERROR so that + * the error code can be tested. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + + /* ARGSUSED */ +static int +TestseterrorcodeCmd(dummy, interp, argc, argv) + ClientData dummy; /* Not used. */ + Tcl_Interp *interp; /* Current interpreter. */ + int argc; /* Number of arguments. */ + CONST char **argv; /* Argument strings. */ +{ + if (argc > 6) { + Tcl_SetResult(interp, "too many args", TCL_STATIC); + return TCL_ERROR; + } + Tcl_SetErrorCode(interp, argv[1], argv[2], argv[3], argv[4], + argv[5], NULL); + return TCL_ERROR; +} + +/* + *---------------------------------------------------------------------- + * * TestsetobjerrorcodeCmd -- * * This procedure implements the "testsetobjerrorcodeCmd". - * This tests up to five elements passed to the - * Tcl_SetObjErrorCode command. + * This tests the Tcl_SetObjErrorCode function. * * Results: * A standard Tcl result. Always returns TCL_ERROR so that diff --git a/generic/tclVar.c b/generic/tclVar.c index e6bff11..8478394 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.5 2004/05/22 17:01:39 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.6 2004/08/16 14:18:26 msofer Exp $ */ #include "tclInt.h" @@ -1562,7 +1562,7 @@ TclPtrSetVar(interp, varPtr, arrayPtr, part1, part2, newValuePtr, flags) CONST char *part2; /* If non-NULL, gives the name of an element * in the array part1. */ Tcl_Obj *newValuePtr; /* New value for variable. */ - CONST int flags; /* OR-ed combination of TCL_GLOBAL_ONLY, + CONST int flags; /* OR-ed combination of TCL_GLOBAL_ONLY, * and TCL_LEAVE_ERR_MSG bits. */ { Interp *iPtr = (Interp *) interp; @@ -1621,8 +1621,11 @@ TclPtrSetVar(interp, varPtr, arrayPtr, part1, part2, newValuePtr, flags) * "copy on write". */ + if (flags & TCL_LIST_ELEMENT && !(flags & TCL_APPEND_VALUE)) { + TclSetVarUndefined(varPtr); + } oldValuePtr = varPtr->value.objPtr; - if (flags & TCL_APPEND_VALUE) { + if (flags & (TCL_APPEND_VALUE|TCL_LIST_ELEMENT)) { if (TclIsVarUndefined(varPtr) && (oldValuePtr != NULL)) { Tcl_DecrRefCount(oldValuePtr); /* discard old value */ varPtr->value.objPtr = NULL; diff --git a/tests/result.test b/tests/result.test index f0fb9e3..ec26b64 100644 --- a/tests/result.test +++ b/tests/result.test @@ -65,27 +65,50 @@ test result-3.2 {Tcl_DiscardInterpResult} {testsaveresult} { testsaveresult free {set x 42} 1 } {42} -test result-4.1 {Tcl_SetObjErrorCode - one arg} {testsaveresult} { +::tcltest::testConstraint testsetobjerrorcode \ + [expr {[info commands testsetobjerrorcode] != {}}] + +test result-4.1 {Tcl_SetObjErrorCode - one arg} {testsetobjerrorcode} { catch {testsetobjerrorcode 1} list [set errorCode] } {1} -test result-4.2 {Tcl_SetObjErrorCode - two args} {testsaveresult} { +test result-4.2 {Tcl_SetObjErrorCode - two args} {testsetobjerrorcode} { catch {testsetobjerrorcode 1 2} list [set errorCode] } {{1 2}} -test result-4.3 {Tcl_SetObjErrorCode - three args} {testsaveresult} { +test result-4.3 {Tcl_SetObjErrorCode - three args} {testsetobjerrorcode} { catch {testsetobjerrorcode 1 2 3} list [set errorCode] } {{1 2 3}} -test result-4.4 {Tcl_SetObjErrorCode - four args} {testsaveresult} { +test result-4.4 {Tcl_SetObjErrorCode - four args} {testsetobjerrorcode} { catch {testsetobjerrorcode 1 2 3 4} list [set errorCode] } {{1 2 3 4}} -test result-4.5 {Tcl_SetObjErrorCode - five args} {testsaveresult} { +test result-4.5 {Tcl_SetObjErrorCode - five args} {testsetobjerrorcode} { catch {testsetobjerrorcode 1 2 3 4 5} list [set errorCode] } {{1 2 3 4 5}} +::tcltest::testConstraint testseterrorcode \ + [expr {[info commands testseterrorcode] != {}}] + +test result-5.1 {Tcl_SetErrorCode - one arg} testseterrorcode { + catch {testseterrorcode 1} + set errorCode +} 1 +test result-5.2 {Tcl_SetErrorCode - one arg, list quoting} testseterrorcode { + catch {testseterrorcode {a b}} + set errorCode +} {{a b}} +test result-5.3 {Tcl_SetErrorCode - one arg, list quoting} testseterrorcode { + catch {testseterrorcode \{} + llength $errorCode +} 1 +test result-5.4 {Tcl_SetErrorCode - two args, list quoting} testseterrorcode { + catch {testseterrorcode {a b} c} + set errorCode +} {{a b} c} + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 1cbe8bf0a4251625c5a4253c5cefceaccb01d877 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 16 Aug 2004 14:28:25 +0000 Subject: date correction --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index cf6124c..df24275 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2004-07-23 Miguel Sofer +2004-08-16 Miguel Sofer * doc/SetVar.3: * generic/tclTest.c (TestseterrorcodeCmd): -- cgit v0.12 From 7b42aece2ff4d125c9e687a18b8dc775e6cc4172 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 19 Aug 2004 21:12:03 +0000 Subject: Ensure that the %ld conversion works correctly on 64-bit platforms. [Bug 1011860] --- ChangeLog | 5 +++++ generic/tclScan.c | 15 +++++---------- tests/scan.test | 7 +++++-- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index df24275..120f229 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-08-19 Donal K. Fellows + + * generic/tclScan.c (Tcl_ScanObjCmd, ValidateFormat): Ensure that + the %ld conversion works correctly on 64-bit platforms. [Bug 1011860] + 2004-08-16 Miguel Sofer * doc/SetVar.3: diff --git a/generic/tclScan.c b/generic/tclScan.c index 7d5b093..693fa60 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclScan.c,v 1.12 2002/02/25 15:23:02 dkf Exp $ + * RCS: @(#) $Id: tclScan.c,v 1.12.2.1 2004/08/19 21:12:04 dkf Exp $ */ #include "tclInt.h" @@ -371,9 +371,7 @@ ValidateFormat(interp, format, numVars, totalSubs) switch (ch) { case 'l': case 'L': -#ifndef TCL_WIDE_INT_IS_LONG flags |= SCAN_LONGER; -#endif case 'h': format += Tcl_UtfToUniChar(format, &ch); } @@ -704,9 +702,7 @@ Tcl_ScanObjCmd(dummy, interp, objc, objv) switch (ch) { case 'l': case 'L': -#ifndef TCL_WIDE_INT_IS_LONG flags |= SCAN_LONGER; -#endif /* * Fall through so we skip to the next character. */ @@ -1040,12 +1036,11 @@ Tcl_ScanObjCmd(dummy, interp, objc, objv) if ((flags & SCAN_UNSIGNED) && (value < 0)) { sprintf(buf, "%lu", value); /* INTL: ISO digit */ objPtr = Tcl_NewStringObj(buf, -1); + } else if ((flags & SCAN_LONGER) + || (unsigned long) value > UINT_MAX) { + objPtr = Tcl_NewLongObj(value); } else { - if ((unsigned long) value > UINT_MAX) { - objPtr = Tcl_NewLongObj(value); - } else { - objPtr = Tcl_NewIntObj(value); - } + objPtr = Tcl_NewIntObj(value); } #ifndef TCL_WIDE_INT_IS_LONG } diff --git a/tests/scan.test b/tests/scan.test index a86c3da..173edb1 100644 --- a/tests/scan.test +++ b/tests/scan.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: scan.test,v 1.14 2002/06/22 04:19:47 dgp Exp $ +# RCS: @(#) $Id: scan.test,v 1.14.2.1 2004/08/19 21:12:04 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -417,12 +417,15 @@ test scan-5.11 {integer scanning} {nonPortable} { list [scan "4294967280 4294967280" "%u %d" a b] $a \ [expr {$b == -16 || $b == 0x7fffffff}] } {2 4294967280 1} - test scan-5.12 {integer scanning} {64bitInts} { set a {}; set b {}; set c {} list [scan "7810179016327718216,6c63546f6c6c6548,661432506755433062510" \ %ld,%lx,%lo a b c] $a $b $c } {3 7810179016327718216 7810179016327718216 7810179016327718216} +test scan-5.13 {integer scanning and overflow} { + # This test used to fail on some 64-bit systems. [Bug 1011860] + scan {300000000 3000000000 30000000000} {%ld %ld %ld} +} {300000000 3000000000 30000000000} test scan-6.1 {floating-point scanning} { set a {}; set b {}; set c {}; set d {} -- cgit v0.12 From 9e7d1e52219a5f372c7a0dea6ef24110e03cee81 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 26 Aug 2004 17:37:41 +0000 Subject: * tests/env.test: macosx fixes. --- ChangeLog | 4 ++++ tests/env.test | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 120f229..0b2a0ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-08-27 Daniel Steffen + + * tests/env.test: macosx fixes. + 2004-08-19 Donal K. Fellows * generic/tclScan.c (Tcl_ScanObjCmd, ValidateFormat): Ensure that diff --git a/tests/env.test b/tests/env.test index 9cc5d1b..af23dfd 100644 --- a/tests/env.test +++ b/tests/env.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: env.test,v 1.17 2002/10/03 13:34:32 dkf Exp $ +# RCS: @(#) $Id: env.test,v 1.17.2.1 2004/08/26 17:37:42 das Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -75,7 +75,7 @@ set printenvScript [makeFile { lrem names ComSpec lrem names "" } - foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH PURE_PROG_NAME DISPLAY SHLIB_PATH } { + foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH PURE_PROG_NAME DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH __CF_USER_TEXT_ENCODING } { lrem names $name } foreach p $names { @@ -105,7 +105,7 @@ foreach name [array names env] { # Added the following lines so that child tcltest can actually find its # library if the initial tcltest is run from a non-standard place. # ('saved' env vars) -foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH DISPLAY SHLIB_PATH} { +foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH} { if {[info exists env2($name)]} { set env($name) $env2($name); } -- cgit v0.12 From 54f15bb144abf1e98db0a7bf90f741a93b41eff4 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 30 Aug 2004 18:15:24 +0000 Subject: Fix crash in [string map] when objects are shared. [Bug 1018562] --- ChangeLog | 5 +++++ generic/tclCmdMZ.c | 26 +++++++++++++++++++++----- tests/string.test | 6 +++++- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0b2a0ba..9391122 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-08-30 Donal K. Fellows + + * generic/tclCmdMZ.c (Tcl_StringObjCmd): Stop [string map] from + crashing when its map and input string are the same object. + 2004-08-27 Daniel Steffen * tests/env.test: macosx fixes. diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 09c3853..1bf2183 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.11 2004/03/01 17:33:21 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.12 2004/08/30 18:15:24 dkf Exp $ */ #include "tclInt.h" @@ -1857,8 +1857,8 @@ Tcl_StringObjCmd(dummy, interp, objc, objv) break; } case STR_MAP: { - int mapElemc, nocase = 0; - Tcl_Obj **mapElemv; + int mapElemc, nocase = 0, copySource = 0; + Tcl_Obj **mapElemv, *sourceObj; Tcl_UniChar *ustring1, *ustring2, *p, *end; int (*strCmpFn)_ANSI_ARGS_((CONST Tcl_UniChar*, CONST Tcl_UniChar*, unsigned long)); @@ -1898,13 +1898,26 @@ Tcl_StringObjCmd(dummy, interp, objc, objv) Tcl_SetStringObj(resultPtr, "char map list unbalanced", -1); return TCL_ERROR; } - objc--; - ustring1 = Tcl_GetUnicodeFromObj(objv[objc], &length1); + /* + * Take a copy of the source string object if it is the + * same as the map string to cut out nasty sharing + * crashes. [Bug 1018562] + */ + if (objv[objc-2] == objv[objc-1]) { + sourceObj = Tcl_DuplicateObj(objv[objc-1]); + copySource = 1; + } else { + sourceObj = objv[objc-1]; + } + ustring1 = Tcl_GetUnicodeFromObj(sourceObj, &length1); if (length1 == 0) { /* * Empty input string, just stop now */ + if (copySource) { + Tcl_DecrRefCount(sourceObj); + } break; } end = ustring1 + length1; @@ -2024,6 +2037,9 @@ Tcl_StringObjCmd(dummy, interp, objc, objv) */ Tcl_AppendUnicodeToObj(resultPtr, p, ustring1 - p); } + if (copySource) { + Tcl_DecrRefCount(sourceObj); + } break; } case STR_MATCH: { diff --git a/tests/string.test b/tests/string.test index 6e937f4..a48df1c 100644 --- a/tests/string.test +++ b/tests/string.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: string.test,v 1.36.2.2 2003/06/09 21:51:56 dgp Exp $ +# RCS: @(#) $Id: string.test,v 1.36.2.3 2004/08/30 18:15:25 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -760,6 +760,10 @@ test string-10.18 {string map, empty argument} { test string-10.19 {string map, empty arguments} { string map -nocase {{} abc f bar {} def} foo } baroo +test string-10.20 {string map, nasty sharing crash from [Bug 1018562]} { + set a {a b} + string map $a $a +} {b b} test string-11.1 {string match, too few args} { list [catch {string match a} msg] $msg -- cgit v0.12 From 3f4f8a12933888bb662d4f08a87785785d8ffdaf Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 1 Sep 2004 17:26:04 +0000 Subject: WIN64 corrections --- win/tclWinDde.c | 18 +++++++++++++----- win/tclWinReg.c | 8 ++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/win/tclWinDde.c b/win/tclWinDde.c index ac8e3b2..c00f697 100644 --- a/win/tclWinDde.c +++ b/win/tclWinDde.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.3 2004/07/23 00:24:45 dgp Exp $ + * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.4 2004/09/01 17:26:06 hobbs Exp $ */ #include "tclPort.h" @@ -297,7 +297,7 @@ DdeSetServerName( riPtr = (RegisteredInterp *) ckalloc(sizeof(RegisteredInterp)); riPtr->interp = interp; - riPtr->name = ckalloc(strlen(name) + 1); + riPtr->name = ckalloc((unsigned int) strlen(name) + 1); riPtr->nextPtr = tsdPtr->interpListPtr; tsdPtr->interpListPtr = riPtr; strcpy(riPtr->name, name); @@ -815,14 +815,18 @@ DdeCreateClient(ddeEnumServices *es) LRESULT CALLBACK DdeClientWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { - LONG lr = 0L; + LRESULT lr = 0L; switch (uMsg) { case WM_CREATE: { LPCREATESTRUCT lpcs = (LPCREATESTRUCT)lParam; ddeEnumServices *es; es = (ddeEnumServices*)lpcs->lpCreateParams; +#ifdef _WIN64 + SetWindowLongPtr(hwnd, GWLP_USERDATA, (long)es); +#else SetWindowLong(hwnd, GWL_USERDATA, (long)es); +#endif break; } case WM_DDE_ACK: @@ -842,8 +846,12 @@ DdeServicesOnAck(HWND hwnd, WPARAM wParam, LPARAM lParam) ATOM topic = (ATOM)HIWORD(lParam); ddeEnumServices *es; TCHAR sz[255]; - + +#ifdef _WIN64 + es = (ddeEnumServices *)GetWindowLongPtr(hwnd, GWLP_USERDATA); +#else es = (ddeEnumServices *)GetWindowLong(hwnd, GWL_USERDATA); +#endif if ((es->service == (ATOM)NULL || es->service == service) && (es->topic == (ATOM)NULL || es->topic == topic)) { @@ -875,7 +883,7 @@ DdeServicesOnAck(HWND hwnd, WPARAM wParam, LPARAM lParam) static BOOL CALLBACK DdeEnumWindowsCallback(HWND hwndTarget, LPARAM lParam) { - DWORD dwResult = 0; + LRESULT dwResult = 0; ddeEnumServices *es = (ddeEnumServices *)lParam; SendMessageTimeout(hwndTarget, WM_DDE_INITIATE, (WPARAM)es->hwnd, diff --git a/win/tclWinReg.c b/win/tclWinReg.c index 424cb44..0f02db0 100644 --- a/win/tclWinReg.c +++ b/win/tclWinReg.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.3 2003/11/10 22:42:07 dgp Exp $ + * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.4 2004/09/01 17:26:04 hobbs Exp $ */ #include @@ -1328,7 +1328,7 @@ BroadcastValue( int objc, /* Number of arguments. */ Tcl_Obj * CONST objv[]) /* Argument values. */ { - DWORD result, sendResult; + LRESULT result, sendResult; UINT timeout = 3000; int len; char *str; @@ -1362,8 +1362,8 @@ BroadcastValue( (WPARAM) 0, (LPARAM) str, SMTO_ABORTIFHUNG, timeout, &sendResult); objPtr = Tcl_NewObj(); - Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewIntObj((int) result)); - Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewIntObj((int) sendResult)); + Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewLongObj((long) result)); + Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewLongObj((long) sendResult)); Tcl_SetObjResult(interp, objPtr); return TCL_OK; -- cgit v0.12 From d5076f1e339e9e35c35cbbcf1afb0e1c1a1eff0c Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 1 Sep 2004 17:28:04 +0000 Subject: * win/tclWin32Dll.c (TclWinCPUID): need _asm for WIN64 (Itanium), until we have it, just return unknown. [Bug 1020445] --- ChangeLog | 10 ++++++++++ win/tclWin32Dll.c | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9391122..af65f59 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-09-01 Jeff Hobbs + + * win/tclWinReg.c (BroadcastValue): WIN64 cast corrections + + * win/tclWinDde.c (DdeClientWindowProc): + (DdeServicesOnAck, DdeEnumWindowsCallback): WIN64 corrections + + * win/tclWin32Dll.c (TclWinCPUID): need _asm for WIN64 (Itanium), + until we have it, just return unknown. [Bug 1020445] + 2004-08-30 Donal K. Fellows * generic/tclCmdMZ.c (Tcl_StringObjCmd): Stop [string map] from diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index f30b764..5e72682 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.5 2004/07/02 16:52:19 vincentdarley Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.6 2004/09/01 17:28:04 hobbs Exp $ */ #include "tclWinInt.h" @@ -1120,7 +1120,7 @@ TclWinCPUID( unsigned int index, /* Which CPUID value to retrieve */ # endif -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && !defined(_WIN64) /* Define a structure in the stack frame to hold the registers */ @@ -1163,7 +1163,7 @@ TclWinCPUID( unsigned int index, /* Which CPUID value to retrieve */ #else /* Don't know how to do assembly code for - * this compiler */ + * this compiler and/or architecture */ #endif return status; } -- cgit v0.12 From 8ead0890839dac71e9e564671c34021d61a3bf6e Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 2 Sep 2004 13:58:57 +0000 Subject: Clarify meaning of [lsearch -dictionary] --- ChangeLog | 4 ++++ doc/lsearch.n | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index af65f59..b842396 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-09-02 Donal K. Fellows + + * doc/lsearch.n: Clarified meaning of -dictionary. [Bug 759545] + 2004-09-01 Jeff Hobbs * win/tclWinReg.c (BroadcastValue): WIN64 cast corrections diff --git a/doc/lsearch.n b/doc/lsearch.n index 8fd3c51..98cd8d3 100644 --- a/doc/lsearch.n +++ b/doc/lsearch.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lsearch.n,v 1.13.2.1 2003/03/17 14:25:20 dkf Exp $ +'\" RCS: @(#) $Id: lsearch.n,v 1.13.2.2 2004/09/02 13:58:58 dkf Exp $ '\" .so man.macros .TH lsearch n 8.4 Tcl "Tcl Built-In Commands" @@ -47,8 +47,11 @@ meaningful when used with \fB\-sorted\fR. .TP \fB\-dictionary\fR The list elements are to be compared using dictionary-style -comparisons. This option is only meaningful when used with -\fB\-exact\fR or \fB\-sorted\fR. +comparisons (see \fBlsort\fR for a fuller description). This option +is only meaningful when used with \fB\-exact\fR or \fB\-sorted\fR, and +it is only distinguishable from the \fB\-ascii\fR option when +the \fB\-sorted\fR option is given, because values are only +dictionary-equal when exactly equal. .TP \fB\-exact\fR The list element must contain exactly the same string as \fIpattern\fR. -- cgit v0.12 From a8f71a729447a54a46df56f612ef6380d2a5a459 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 7 Sep 2004 18:21:15 +0000 Subject: * generic/tclTimer.c: Removed a premature optimisation that attempted to store the assoc data in the client data; the optimisation caused a bug that [after] would overwrite its imports. [Bug 1016167] --- ChangeLog | 7 +++++++ generic/tclTimer.c | 18 ++++-------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index b842396..c10802c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-09-07 Kevin B. Kenny + + * generic/tclTimer.c: Removed a premature optimisation that + attempted to store the assoc data in the client data; the + optimisation caused a bug that [after] would overwrite + its imports. [Bug 1016167] + 2004-09-02 Donal K. Fellows * doc/lsearch.n: Clarified meaning of -dictionary. [Bug 759545] diff --git a/generic/tclTimer.c b/generic/tclTimer.c index 25ff9b2..6dd912d 100644 --- a/generic/tclTimer.c +++ b/generic/tclTimer.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTimer.c,v 1.6 2002/03/01 06:22:31 hobbs Exp $ + * RCS: @(#) $Id: tclTimer.c,v 1.6.2.1 2004/09/07 18:21:16 kennykb Exp $ */ #include "tclInt.h" @@ -732,17 +732,14 @@ TclServiceIdle() /* ARGSUSED */ int Tcl_AfterObjCmd(clientData, interp, objc, objv) - ClientData clientData; /* Points to the "tclAfter" assocData for - * this interpreter, or NULL if the assocData - * hasn't been created yet.*/ + ClientData clientData; /* Unused */ Tcl_Interp *interp; /* Current interpreter. */ int objc; /* Number of arguments. */ Tcl_Obj *CONST objv[]; /* Argument objects. */ { int ms; AfterInfo *afterPtr; - AfterAssocData *assocPtr = (AfterAssocData *) clientData; - Tcl_CmdInfo cmdInfo; + AfterAssocData *assocPtr; int length; char *argString; int index; @@ -765,20 +762,13 @@ Tcl_AfterObjCmd(clientData, interp, objc, objv) * future. */ + assocPtr = Tcl_GetAssocData( interp, "tclAfter", NULL ); if (assocPtr == NULL) { assocPtr = (AfterAssocData *) ckalloc(sizeof(AfterAssocData)); assocPtr->interp = interp; assocPtr->firstAfterPtr = NULL; Tcl_SetAssocData(interp, "tclAfter", AfterCleanupProc, (ClientData) assocPtr); - cmdInfo.proc = NULL; - cmdInfo.clientData = (ClientData) NULL; - cmdInfo.objProc = Tcl_AfterObjCmd; - cmdInfo.objClientData = (ClientData) assocPtr; - cmdInfo.deleteProc = NULL; - cmdInfo.deleteData = (ClientData) assocPtr; - Tcl_SetCommandInfo(interp, Tcl_GetStringFromObj(objv[0], &length), - &cmdInfo); } /* -- cgit v0.12 From 70cac415298381ec7a3f978f729a0e0b97aec972 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 8 Sep 2004 18:32:02 +0000 Subject: * compat/strftime.c (_conv): Corrected a problem where hour 0 would format as a blank format group with %k. * tests/clock.test (clock-41.1): Added regression test case for %k at the zero hour. --- ChangeLog | 7 +++++++ compat/strftime.c | 14 ++++++++++---- tests/clock.test | 6 +++++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index c10802c..f615885 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-09-08 Kevin B. Kenny + + * compat/strftime.c (_conv): Corrected a problem where hour 0 + would format as a blank format group with %k. + * tests/clock.test (clock-41.1): Added regression test case for + %k at the zero hour. + 2004-09-07 Kevin B. Kenny * generic/tclTimer.c: Removed a premature optimisation that diff --git a/compat/strftime.c b/compat/strftime.c index dbd7d54..609c193 100644 --- a/compat/strftime.c +++ b/compat/strftime.c @@ -10,7 +10,7 @@ * * Changes 2002 Copyright (c) 2002 ActiveState Corporation. * - * RCS: @(#) $Id: strftime.c,v 1.10.2.1 2004/05/18 21:52:56 kennykb Exp $ + * RCS: @(#) $Id: strftime.c,v 1.10.2.2 2004/09/08 18:32:20 kennykb Exp $ */ /* @@ -47,7 +47,7 @@ */ #if defined(LIBC_SCCS) -static char *rcsid = "$Id: strftime.c,v 1.10.2.1 2004/05/18 21:52:56 kennykb Exp $"; +static char *rcsid = "$Id: strftime.c,v 1.10.2.2 2004/09/08 18:32:20 kennykb Exp $"; #endif /* LIBC_SCCS */ #include @@ -432,8 +432,14 @@ _conv(n, digits, pad) static char buf[10]; register char *p; - for (p = buf + sizeof(buf) - 2; n > 0 && p > buf; n /= 10, --digits) - *p-- = (char)(n % 10 + '0'); + p = buf + sizeof( buf ) - 1; + *p-- = '\0'; + if ( n == 0 ) { + *p-- = '0'; --digits; + } else { + for (; n > 0 && p > buf; n /= 10, --digits) + *p-- = (char)(n % 10 + '0'); + } while (p > buf && digits-- > 0) *p-- = (char) pad; return(_add(++p)); diff --git a/tests/clock.test b/tests/clock.test index 2599dd7..6599218 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.22.2.5 2004/05/27 18:43:19 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.22.2.6 2004/09/08 18:32:20 kennykb Exp $ set env(LC_TIME) POSIX @@ -643,6 +643,10 @@ test clock-10.49 {ISO week-based calendar 2010-W02-1} {percentG} { clock format 1263168000 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-11 } {Mon Monday 10 2010 1 02 1} +test clock-41.1 {regression test - format group %k when hour is 0 } { + clock format 0 -format %k -gmt true +} { 0} + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From d6e816c7ffc49a84ca4030b72df0b629851ea9a1 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 9 Sep 2004 15:45:27 +0000 Subject: * generic/tclNamesp.c (Tcl_ForgetImport): Corrected faulty * tests/namespace.test: logic that relied exclusively on string matching and failed in the presence of [rename]s. [Bug 560297] --- ChangeLog | 6 +++ generic/tclNamesp.c | 123 ++++++++++++++++++++++++++++++++------------------- tests/namespace.test | 116 +++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 199 insertions(+), 46 deletions(-) diff --git a/ChangeLog b/ChangeLog index f615885..0acc590 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-09-09 Don Porter + + * generic/tclNamesp.c (Tcl_ForgetImport): Corrected faulty + * tests/namespace.test: logic that relied exclusively on string + matching and failed in the presence of [rename]s. [Bug 560297] + 2004-09-08 Kevin B. Kenny * compat/strftime.c (_conv): Corrected a problem where hour 0 diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 7fef152..5cc4ed9 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.1 2003/06/18 18:34:19 msofer Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.2 2004/09/09 15:45:28 dgp Exp $ */ #include "tclInt.h" @@ -949,8 +949,8 @@ Tcl_Export(interp, namespacePtr, pattern, resetListFirst) */ TclGetNamespaceForQualName(interp, pattern, nsPtr, - /*flags*/ TCL_LEAVE_ERR_MSG, &exportNsPtr, &dummyPtr, - &dummyPtr, &simplePattern); + /*flags*/ (TCL_LEAVE_ERR_MSG | TCL_NAMESPACE_ONLY), + &exportNsPtr, &dummyPtr, &dummyPtr, &simplePattern); if ((exportNsPtr != nsPtr) || (strcmp(pattern, simplePattern) != 0)) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), @@ -1177,8 +1177,8 @@ Tcl_Import(interp, namespacePtr, pattern, allowOverwrite) return TCL_ERROR; } TclGetNamespaceForQualName(interp, pattern, nsPtr, - /*flags*/ TCL_LEAVE_ERR_MSG, &importNsPtr, &dummyPtr, - &dummyPtr, &simplePattern); + /*flags*/ (TCL_LEAVE_ERR_MSG | TCL_NAMESPACE_ONLY), + &importNsPtr, &dummyPtr, &dummyPtr, &simplePattern); if (importNsPtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), @@ -1312,17 +1312,22 @@ Tcl_Import(interp, namespacePtr, pattern, allowOverwrite) * * Tcl_ForgetImport -- * - * Deletes previously imported commands. Given a pattern that may - * include the name of an exporting namespace, this procedure first - * finds all matching exported commands. It then looks in the namespace - * specified by namespacePtr for any corresponding previously imported - * commands, which it deletes. If namespacePtr is NULL, commands are - * deleted from the current namespace. + * Deletes commands previously imported into the namespace indicated. The + * by namespacePtr, or the current namespace of interp, when + * namespacePtr is NULL. The pattern controls which imported commands + * are deleted. A simple pattern, one without namespace separators, + * matches the current command names of imported commands in the + * namespace. Matching imported commands are deleted. A qualified + * pattern is interpreted as deletion selection on the basis of where + * the command is imported from. The original command and "first link" + * command for each imported command are determined, and they are matched + * against the pattern. A match leads to deletion of the imported + * command. * * Results: - * Returns TCL_OK if successful. If there is an error, returns - * TCL_ERROR and puts an error message in the interpreter's result - * object. + * Returns TCL_ERROR and records an error message in the interp + * result if a namespace qualified pattern refers to a namespace + * that does not exist. Otherwise, returns TCL_OK. * * Side effects: * May delete commands. @@ -1337,17 +1342,13 @@ Tcl_ForgetImport(interp, namespacePtr, pattern) * previously imported commands should be * removed. NULL for current namespace. */ CONST char *pattern; /* String pattern indicating which imported - * commands to remove. This pattern should - * be qualified by the name of the - * namespace from which the command(s) were - * imported. */ + * commands to remove. */ { - Namespace *nsPtr, *importNsPtr, *dummyPtr, *actualCtxPtr; + Namespace *nsPtr, *sourceNsPtr, *dummyPtr; CONST char *simplePattern; char *cmdName; register Tcl_HashEntry *hPtr; Tcl_HashSearch search; - Command *cmdPtr; /* * If the specified namespace is NULL, use the current namespace. @@ -1360,42 +1361,74 @@ Tcl_ForgetImport(interp, namespacePtr, pattern) } /* - * From the pattern, find the namespace from which we are importing - * and get the simple pattern (no namespace qualifiers or ::'s) at - * the end. + * Parse the pattern into its namespace-qualification (if any) + * and the simple pattern. */ TclGetNamespaceForQualName(interp, pattern, nsPtr, - /*flags*/ TCL_LEAVE_ERR_MSG, &importNsPtr, &dummyPtr, - &actualCtxPtr, &simplePattern); + /*flags*/ (TCL_LEAVE_ERR_MSG | TCL_NAMESPACE_ONLY), + &sourceNsPtr, &dummyPtr, &dummyPtr, &simplePattern); - if (importNsPtr == NULL) { + if (sourceNsPtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "unknown namespace in namespace forget pattern \"", pattern, "\"", (char *) NULL); return TCL_ERROR; } - /* - * Scan through the command table in the source namespace and look for - * exported commands that match the string pattern. If the current - * namespace has an imported command that refers to one of those real - * commands, delete it. - */ + if (strcmp(pattern, simplePattern) == 0) { + /* + * The pattern is simple. + * Delete any imported commands that match it. + */ - for (hPtr = Tcl_FirstHashEntry(&importNsPtr->cmdTable, &search); - (hPtr != NULL); - hPtr = Tcl_NextHashEntry(&search)) { - cmdName = Tcl_GetHashKey(&importNsPtr->cmdTable, hPtr); - if (Tcl_StringMatch(cmdName, simplePattern)) { - hPtr = Tcl_FindHashEntry(&nsPtr->cmdTable, cmdName); - if (hPtr != NULL) { /* cmd of same name in current namespace */ - cmdPtr = (Command *) Tcl_GetHashValue(hPtr); - if (cmdPtr->deleteProc == DeleteImportedCmd) { - Tcl_DeleteCommandFromToken(interp, (Tcl_Command) cmdPtr); - } - } - } + for (hPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search); + (hPtr != NULL); + hPtr = Tcl_NextHashEntry(&search)) { + Command *cmdPtr = (Command *) Tcl_GetHashValue(hPtr); + if (cmdPtr->deleteProc != DeleteImportedCmd) { + continue; + } + cmdName = Tcl_GetHashKey(&nsPtr->cmdTable, hPtr); + if (Tcl_StringMatch(cmdName, simplePattern)) { + Tcl_DeleteCommandFromToken(interp, (Tcl_Command) cmdPtr); + } + } + return TCL_OK; + } + + /* The pattern was namespace-qualified */ + + for (hPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search); (hPtr != NULL); + hPtr = Tcl_NextHashEntry(&search)) { + Tcl_CmdInfo info; + Tcl_Command token = (Tcl_Command) Tcl_GetHashValue(hPtr); + Tcl_Command origin = TclGetOriginalCommand(token); + + if (Tcl_GetCommandInfoFromToken(origin, &info) == 0) { + continue; /* Not an imported command */ + } + if (info.namespacePtr != (Tcl_Namespace *) sourceNsPtr) { + /* + * Original not in namespace we're matching. + * Check the first link in the import chain. + */ + Command *cmdPtr = (Command *) token; + ImportedCmdData *dataPtr = + (ImportedCmdData *) cmdPtr->objClientData; + Tcl_Command firstToken = (Tcl_Command) dataPtr->realCmdPtr; + if (firstToken == origin) { + continue; + } + Tcl_GetCommandInfoFromToken(firstToken, &info); + if (info.namespacePtr != (Tcl_Namespace *) sourceNsPtr) { + continue; + } + origin = firstToken; + } + if (Tcl_StringMatch(Tcl_GetCommandName(NULL, origin), simplePattern)) { + Tcl_DeleteCommandFromToken(interp, token); + } } return TCL_OK; } diff --git a/tests/namespace.test b/tests/namespace.test index d49f0ff..1b0c23d 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21 2002/06/22 04:19:47 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.1 2004/09/09 15:45:28 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -270,6 +270,120 @@ test namespace-10.3 {Tcl_ForgetImport, deletes matching imported cmds} { } } [list [lsort {::test_ns_import::p ::test_ns_import::cmd1}] ::test_ns_import::p 1 {invalid command name "cmd1"}] +test namespace-10.4 {Tcl_ForgetImport: Bug 560297} -setup { + namespace eval origin { + namespace export cmd + proc cmd {} {} + } + namespace eval unrelated { + proc cmd {} {} + } + namespace eval my \ + [list namespace import [namespace current]::origin::cmd] +} -body { + namespace eval my \ + [list namespace forget [namespace current]::unrelated::cmd] + my::cmd +} -cleanup { + namespace delete origin unrelated my +} + +test namespace-10.5 {Tcl_ForgetImport: Bug 560297} -setup { + namespace eval origin { + namespace export cmd + proc cmd {} {} + } + namespace eval my \ + [list namespace import [namespace current]::origin::cmd] + namespace eval my rename cmd newname +} -body { + namespace eval my \ + [list namespace forget [namespace current]::origin::cmd] + my::newname +} -cleanup { + namespace delete origin my +} -returnCodes error -match glob -result * + +test namespace-10.6 {Tcl_ForgetImport: Bug 560297} -setup { + namespace eval origin { + namespace export cmd + proc cmd {} {} + } + namespace eval my \ + [list namespace import [namespace current]::origin::cmd] + namespace eval your {} + namespace eval my \ + [list rename cmd [namespace current]::your::newname] +} -body { + namespace eval your namespace forget newname + your::newname +} -cleanup { + namespace delete origin my your +} -returnCodes error -match glob -result * + +test namespace-10.7 {Tcl_ForgetImport: Bug 560297} -setup { + namespace eval origin { + namespace export cmd + proc cmd {} {} + } + namespace eval link namespace export cmd + namespace eval link \ + [list namespace import [namespace current]::origin::cmd] + namespace eval link2 namespace export cmd + namespace eval link2 \ + [list namespace import [namespace current]::link::cmd] + namespace eval my \ + [list namespace import [namespace current]::link2::cmd] +} -body { + namespace eval my \ + [list namespace forget [namespace current]::origin::cmd] + my::cmd +} -cleanup { + namespace delete origin link link2 my +} -returnCodes error -match glob -result * + +test namespace-10.8 {Tcl_ForgetImport: Bug 560297} -setup { + namespace eval origin { + namespace export cmd + proc cmd {} {} + } + namespace eval link namespace export cmd + namespace eval link \ + [list namespace import [namespace current]::origin::cmd] + namespace eval link2 namespace export cmd + namespace eval link2 \ + [list namespace import [namespace current]::link::cmd] + namespace eval my \ + [list namespace import [namespace current]::link2::cmd] +} -body { + namespace eval my \ + [list namespace forget [namespace current]::link::cmd] + my::cmd +} -cleanup { + namespace delete origin link link2 my +} + +test namespace-10.8 {Tcl_ForgetImport: Bug 560297} -setup { + namespace eval origin { + namespace export cmd + proc cmd {} {} + } + namespace eval link namespace export cmd + namespace eval link \ + [list namespace import [namespace current]::origin::cmd] + namespace eval link2 namespace export cmd + namespace eval link2 \ + [list namespace import [namespace current]::link::cmd] + namespace eval my \ + [list namespace import [namespace current]::link2::cmd] +} -body { + namespace eval my \ + [list namespace forget [namespace current]::link2::cmd] + my::cmd +} -cleanup { + namespace delete origin link link2 my +} -returnCodes error -match glob -result * + test namespace-11.1 {TclGetOriginalCommand, check if not imported cmd} { catch {eval namespace delete [namespace children :: test_ns_*]} namespace eval test_ns_export { -- cgit v0.12 From 045fc77ff4e4fe4a8733883a90adc96d68fc6547 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 9 Sep 2004 17:12:12 +0000 Subject: Also corrected faulty prevention of [namespace import] cycles. [Bug 1017299] --- ChangeLog | 2 ++ generic/tclNamesp.c | 48 +++++++++++++++++++++++++++--------------------- tests/namespace.test | 46 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 74 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0acc590..79ed580 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,8 @@ * generic/tclNamesp.c (Tcl_ForgetImport): Corrected faulty * tests/namespace.test: logic that relied exclusively on string matching and failed in the presence of [rename]s. [Bug 560297] + Also corrected faulty prevention of [namespace import] cycles. + [Bug 1017299] 2004-09-08 Kevin B. Kenny diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 5cc4ed9..27aff8d 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.2 2004/09/09 15:45:28 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.3 2004/09/09 17:12:13 dgp Exp $ */ #include "tclInt.h" @@ -1117,7 +1117,7 @@ Tcl_Import(interp, namespacePtr, pattern, allowOverwrite) char *cmdName; register Tcl_HashEntry *hPtr; Tcl_HashSearch search; - Command *cmdPtr, *realCmdPtr; + Command *cmdPtr; ImportRef *refPtr; Tcl_Command autoCmd, importedCmd; ImportedCmdData *dataPtr; @@ -1217,6 +1217,7 @@ Tcl_Import(interp, namespacePtr, pattern, allowOverwrite) * pattern. Check whether it was exported. If it wasn't, * we ignore it. */ + Tcl_HashEntry *found; wasExported = 0; for (i = 0; i < importNsPtr->numExportPatterns; i++) { @@ -1234,9 +1235,9 @@ Tcl_Import(interp, namespacePtr, pattern, allowOverwrite) * Unless there is a name clash, create an imported command * in the current namespace that refers to cmdPtr. */ - - if ((Tcl_FindHashEntry(&nsPtr->cmdTable, cmdName) == NULL) - || allowOverwrite) { + + found = Tcl_FindHashEntry(&nsPtr->cmdTable, cmdName); + if ((found == NULL) || allowOverwrite) { /* * Create the imported command and its client data. * To create the new command in the current namespace, @@ -1254,25 +1255,30 @@ Tcl_Import(interp, namespacePtr, pattern, allowOverwrite) /* * Check whether creating the new imported command in the - * current namespace would create a cycle of imported->real - * command references that also would destroy an existing - * "real" command already in the current namespace. + * current namespace would create a cycle of imported + * command references. */ cmdPtr = (Command *) Tcl_GetHashValue(hPtr); - if (cmdPtr->deleteProc == DeleteImportedCmd) { - realCmdPtr = (Command *) TclGetOriginalCommand( - (Tcl_Command) cmdPtr); - if ((realCmdPtr != NULL) - && (realCmdPtr->nsPtr == currNsPtr) - && (Tcl_FindHashEntry(&currNsPtr->cmdTable, - cmdName) != NULL)) { - Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), - "import pattern \"", pattern, - "\" would create a loop containing command \"", - Tcl_DStringValue(&ds), "\"", (char *) NULL); - Tcl_DStringFree(&ds); - return TCL_ERROR; + if ((found != NULL) + && cmdPtr->deleteProc == DeleteImportedCmd) { + + Command *overwrite = (Command *) Tcl_GetHashValue(found); + Command *link = cmdPtr; + while (link->deleteProc == DeleteImportedCmd) { + ImportedCmdData *dataPtr; + + dataPtr = (ImportedCmdData *) link->objClientData; + link = dataPtr->realCmdPtr; + if (overwrite == link) { + Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), + "import pattern \"", pattern, + "\" would create a loop containing ", + "command \"", Tcl_DStringValue(&ds), + "\"", (char *) NULL); + Tcl_DStringFree(&ds); + return TCL_ERROR; + } } } diff --git a/tests/namespace.test b/tests/namespace.test index 1b0c23d..1751eb5 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21.2.1 2004/09/09 15:45:28 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.2 2004/09/09 17:12:13 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -244,6 +244,50 @@ test namespace-9.7 {Tcl_Import, links are preserved if cmd is redefined} { [test_ns_export::cmd1 j k l] } {{cmd1: a b c} {cmd1: d e f} {} ::test_ns_export::cmd1 ::test_ns_export::cmd1 {new1: g h i} {new1: j k l}} +test namespace-9.8 {Tcl_Import: Bug 1017299} -setup { + namespace eval one { + namespace export cmd + proc cmd {} {} + } + namespace eval two { + namespace export cmd + proc other args {} + } + namespace eval two \ + [list namespace import [namespace current]::one::cmd] + namespace eval three \ + [list namespace import [namespace current]::two::cmd] + namespace eval three { + rename cmd other + namespace export other + } +} -body { + namespace eval two [list namespace import -force \ + [namespace current]::three::other] + namespace origin two::other +} -cleanup { + namespace delete one two three +} -match glob -result *::one::cmd + +test namespace-9.9 {Tcl_Import: Bug 1017299} -setup { + namespace eval one { + namespace export cmd + proc cmd {} {} + } + namespace eval two namespace export cmd + namespace eval two \ + [list namespace import [namespace current]::one::cmd] + namespace eval three namespace export cmd + namespace eval three \ + [list namespace import [namespace current]::two::cmd] +} -body { + namespace eval two [list namespace import -force \ + [namespace current]::three::cmd] + namespace origin two::cmd +} -cleanup { + namespace delete one two three +} -returnCodes error -match glob -result {import pattern * would create a loop*} + test namespace-10.1 {Tcl_ForgetImport, check for valid namespaces} { catch {eval namespace delete [namespace children :: test_ns_*]} list [catch {namespace forget xyzzy::*} msg] $msg -- cgit v0.12 From b94a66126401085879ed9e146d694bda9416a37d Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Fri, 10 Sep 2004 15:30:01 +0000 Subject: * generic/tclExecute.c (INST_CONCAT1): added a peephole optimisation for concatting an empty string. This enables replacing the idiom 'K $x [set x {}]' by '$x[set x {}]' for fastest execution. --- ChangeLog | 7 +++++++ generic/tclExecute.c | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 79ed580..bdf84bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-09-10 Miguel Sofer + + * generic/tclExecute.c (INST_CONCAT1): added a peephole + optimisation for concatting an empty string. This enables + replacing the idiom 'K $x [set x {}]' by '$x[set x {}]' for + fastest execution. + 2004-09-09 Don Porter * generic/tclNamesp.c (Tcl_ForgetImport): Corrected faulty diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 79b03b9..b0a94fe 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.7 2004/07/03 22:13:10 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.8 2004/09/10 15:30:02 msofer Exp $ */ #include "tclInt.h" @@ -1264,6 +1264,20 @@ TclExecuteByteCode(interp, codePtr) int totalLen = 0; /* + * Peephole optimisation for appending an empty string. + * This enables replacing 'K $x [set x{}]' by '$x[set x{}]' + * for fastest execution. + */ + + if (opnd == 2) { + Tcl_GetStringFromObj(stackPtr[stackTop], &length); + if (length == 0) { + /* Just drop the top item from the stack */ + NEXT_INST_F(2, 1, 0); + } + } + + /* * Concatenate strings (with no separators) from the top * opnd items on the stack starting with the deepest item. * First, determine how many characters are needed. -- cgit v0.12 From e670a163e03da4535c4a90ad9471f702c37a43ec Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Sep 2004 18:22:09 +0000 Subject: * generic/tclNamespace.c (TclGetNamespaceForQualName): Resolved longstanding inconsistency in the treatment of the TCL_NAMESPACE_ONLY flag revealed by testing the 2004-09-09 commits against Itcl. TCL_NAMESPACE_ONLY now acts as specified in the pre-function comment, forcing resolution in the passed in context namespace. It has been incorrectly forcing resolution in the interp's current namespace. --- ChangeLog | 10 ++++++++++ generic/tclNamesp.c | 20 ++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index bdf84bd..706d8d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-09-11 Don Porter + + * generic/tclNamespace.c (TclGetNamespaceForQualName): Resolved + longstanding inconsistency in the treatment of the TCL_NAMESPACE_ONLY + flag revealed by testing the 2004-09-09 commits against Itcl. + TCL_NAMESPACE_ONLY now acts as specified in the pre-function + comment, forcing resolution in the passed in context namespace. + It has been incorrectly forcing resolution in the interp's current + namespace. + 2004-09-10 Miguel Sofer * generic/tclExecute.c (INST_CONCAT1): added a peephole diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 27aff8d..7e238d0 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.3 2004/09/09 17:12:13 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.4 2004/09/10 18:22:09 dgp Exp $ */ #include "tclInt.h" @@ -1658,8 +1658,7 @@ TclGetNamespaceForQualName(interp, qualName, cxtNsPtr, flags, Namespace *cxtNsPtr; /* The namespace in which to start the * search for qualName's namespace. If NULL * start from the current namespace. - * Ignored if TCL_GLOBAL_ONLY or - * TCL_NAMESPACE_ONLY are set. */ + * Ignored if TCL_GLOBAL_ONLY is set. */ int flags; /* Flags controlling the search: an OR'd * combination of TCL_GLOBAL_ONLY, * TCL_NAMESPACE_ONLY, @@ -1702,17 +1701,14 @@ TclGetNamespaceForQualName(interp, qualName, cxtNsPtr, flags, /* * Determine the context namespace nsPtr in which to start the primary - * search. If TCL_NAMESPACE_ONLY or FIND_ONLY_NS was specified, search - * from the current namespace. If the qualName name starts with a "::" - * or TCL_GLOBAL_ONLY was specified, search from the global - * namespace. Otherwise, use the given namespace given in cxtNsPtr, or - * if that is NULL, use the current namespace context. Note that we - * always treat two or more adjacent ":"s as a namespace separator. + * search. If the qualName name starts with a "::" or TCL_GLOBAL_ONLY + * was specified, search from the global namespace. Otherwise, use the + * namespace given in cxtNsPtr, or if that is NULL, use the current + * namespace context. Note that we always treat two or more + * adjacent ":"s as a namespace separator. */ - if (flags & (TCL_NAMESPACE_ONLY | FIND_ONLY_NS)) { - nsPtr = (Namespace *) Tcl_GetCurrentNamespace(interp); - } else if (flags & TCL_GLOBAL_ONLY) { + if (flags & TCL_GLOBAL_ONLY) { nsPtr = globalNsPtr; } else if (nsPtr == NULL) { if (iPtr->varFramePtr != NULL) { -- cgit v0.12 From 018ea7c6a2fe6ed1ced2e815c90008ec68e4fc15 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 10 Sep 2004 20:01:02 +0000 Subject: * generic/tcl.h: Micro formatting fixes. * generic/tclIOGT.c: Channel version fixed, must be 3, to have wideseekProc. Thanks to David Graveraux . --- ChangeLog | 6 ++++++ generic/tcl.h | 8 ++++---- generic/tclIOGT.c | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 706d8d3..f9a58f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-09-10 Andreas Kupries + + * generic/tcl.h: Micro formatting fixes. + * generic/tclIOGT.c: Channel version fixed, must be 3, to have + wideseekProc. Thanks to David Graveraux . + 2004-09-11 Don Porter * generic/tclNamespace.c (TclGetNamespaceForQualName): Resolved diff --git a/generic/tcl.h b/generic/tcl.h index bde43f0..716346e 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.13 2004/07/13 19:21:17 hobbs Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.14 2004/09/10 20:01:03 andreas_kupries Exp $ */ #ifndef _TCL @@ -1410,7 +1410,7 @@ typedef int (Tcl_WaitForEventProc) _ANSI_ARGS_((Tcl_Time *timePtr)); * Bits passed to Tcl_DriverClose2Proc to indicate which side of a channel * should be closed. */ -#define TCL_CLOSE_READ (1<<1) +#define TCL_CLOSE_READ (1<<1) #define TCL_CLOSE_WRITE (1<<2) /* @@ -1557,8 +1557,8 @@ typedef struct Tcl_ChannelType { * set the channel into blocking or nonblocking mode. They are passed * as arguments to the blockModeProc procedure in the above structure. */ -#define TCL_MODE_BLOCKING 0 /* Put channel into blocking mode. */ -#define TCL_MODE_NONBLOCKING 1 /* Put channel into nonblocking +#define TCL_MODE_BLOCKING 0 /* Put channel into blocking mode. */ +#define TCL_MODE_NONBLOCKING 1 /* Put channel into nonblocking * mode. */ /* diff --git a/generic/tclIOGT.c b/generic/tclIOGT.c index 0bc3083..552acc0 100644 --- a/generic/tclIOGT.c +++ b/generic/tclIOGT.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * CVS: $Id: tclIOGT.c,v 1.7 2002/05/24 21:19:06 dkf Exp $ + * CVS: $Id: tclIOGT.c,v 1.7.2.1 2004/09/10 20:01:03 andreas_kupries Exp $ */ #include "tclInt.h" @@ -131,7 +131,7 @@ static void ResultAdd _ANSI_ARGS_ ((ResultBuffer* r, static Tcl_ChannelType transformChannelType = { "transform", /* Type name. */ - TCL_CHANNEL_VERSION_2, + TCL_CHANNEL_VERSION_3, TransformCloseProc, /* Close proc. */ TransformInputProc, /* Input proc. */ TransformOutputProc, /* Output proc. */ -- cgit v0.12 From 7a17535a4cac473a9dfab8b3816e06908e9a918f Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 10 Sep 2004 20:06:40 +0000 Subject: Fix [Bug 1025359] to make sure wide seeks don't lose errors --- ChangeLog | 5 +++++ generic/tclIO.c | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index f9a58f9..63ec03d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-09-10 Donal K. Fellows + + * generic/tclIO.c (Tcl_Seek): Make sure wide seeks do not fail to + set ::errorCode on error. [Bug 1025359] + 2004-09-10 Andreas Kupries * generic/tcl.h: Micro formatting fixes. diff --git a/generic/tclIO.c b/generic/tclIO.c index 154bec0..054cc89 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.7 2004/07/15 20:46:18 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.8 2004/09/10 20:06:41 dkf Exp $ */ #include "tclInt.h" @@ -5544,15 +5544,15 @@ Tcl_Seek(chan, offset, mode) offset, mode, &result); } else if (offset < Tcl_LongAsWide(LONG_MIN) || offset > Tcl_LongAsWide(LONG_MAX)) { - Tcl_SetErrno(EOVERFLOW); + result = EOVERFLOW; curPos = Tcl_LongAsWide(-1); } else { curPos = Tcl_LongAsWide((chanPtr->typePtr->seekProc) ( chanPtr->instanceData, Tcl_WideAsLong(offset), mode, &result)); - if (curPos == Tcl_LongAsWide(-1)) { - Tcl_SetErrno(result); - } + } + if (curPos == Tcl_LongAsWide(-1)) { + Tcl_SetErrno(result); } } -- cgit v0.12 From a69c427499edc0f882f3f6a3341f93f6310c7f1c Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 10 Sep 2004 21:52:36 +0000 Subject: One less crazy long/wide aunt in the attic... [Bug 868489] --- ChangeLog | 4 ++ generic/tclObj.c | 173 +++++++++++++++++++++++++++++++++++++++++++++++-------- tests/obj.test | 68 +++++++++++++++++++++- 3 files changed, 220 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 63ec03d..9a7769d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-09-10 Donal K. Fellows + * generic/tclObj.c (SetIntOrWideFromAny): Rewritten integral value + parsing code so that values do not flip so easily between numeric + representations. Thanks to KBK for this! [Bug 868489] + * generic/tclIO.c (Tcl_Seek): Make sure wide seeks do not fail to set ::errorCode on error. [Bug 1025359] diff --git a/generic/tclObj.c b/generic/tclObj.c index b1183c3..60ccab4 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.5 2004/03/30 23:34:21 dkf Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.6 2004/09/10 21:52:37 dkf Exp $ */ #include "tclInt.h" @@ -60,11 +60,14 @@ static int SetDoubleFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); static int SetIntFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); +static int SetIntOrWideFromAny _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_Obj *objPtr)); static void UpdateStringOfBoolean _ANSI_ARGS_((Tcl_Obj *objPtr)); static void UpdateStringOfDouble _ANSI_ARGS_((Tcl_Obj *objPtr)); static void UpdateStringOfInt _ANSI_ARGS_((Tcl_Obj *objPtr)); static int SetWideIntFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); + #ifndef TCL_WIDE_INT_IS_LONG static void UpdateStringOfWideInt _ANSI_ARGS_((Tcl_Obj *objPtr)); #endif @@ -1747,19 +1750,54 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) register int *intPtr; /* Place to store resulting int. */ { register long l; + Tcl_WideInt w; int result; - - if (objPtr->typePtr != &tclIntType) { - result = SetIntFromAny(interp, objPtr); + + /* + * If the object isn't already an integer of any width, try to + * convert it to one. + */ + + if (objPtr->typePtr != &tclIntType && objPtr->typePtr != &tclWideIntType) { + result = SetIntOrWideFromAny(interp, objPtr); if (result != TCL_OK) { return result; } } - l = objPtr->internalRep.longValue; + + /* + * Object should now be either int or wide. Get its value. + */ + + if (objPtr->typePtr == &tclIntType) { + l = objPtr->internalRep.longValue; +#ifndef TCL_WIDE_INT_IS_LONG + } else if (objPtr->typePtr == &tclWideIntType) { + /* + * If the object is already a wide integer, don't convert it. + * This code allows for any integer in the range -ULONG_MAX to + * ULONG_MAX to be converted to a long, ignoring overflow. + * The rule preserves existing semantics for conversion of + * integers on input, but avoids inadvertent demotion of + * wide integers to 32-bit ones in the internal rep. + */ + + w = objPtr->internalRep.wideValue; + if (w >= -(Tcl_WideInt)(ULONG_MAX) && w <= (Tcl_WideInt)(ULONG_MAX)) { + l = Tcl_WideAsLong(w); + } else { + goto tooBig; + } +#endif + } else { + Tcl_Panic( "string->integer conversion failed to convert the obj." ); + } + if (((long)((int)l)) == l) { *intPtr = (int)objPtr->internalRep.longValue; return TCL_OK; } + tooBig: if (interp != NULL) { Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), @@ -1773,6 +1811,46 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) * * SetIntFromAny -- * + * Attempts to force the internal representation for a Tcl object + * to tclIntType, specifically. + * + * Results: + * The return value is a standard object Tcl result. If an + * error occurs during conversion, an error message is left in + * the interpreter's result unless "interp" is NULL. + * + *---------------------------------------------------------------------- + */ + +static int +SetIntFromAny( Tcl_Interp* interp, + /* Tcl interpreter */ + Tcl_Obj* objPtr ) + /* Pointer to the object to convert */ +{ + int result; + + result = SetIntOrWideFromAny( interp, objPtr ); + if ( result != TCL_OK ) { + return result; + } + if ( objPtr->typePtr != &tclIntType ) { + if ( interp != NULL ) { + char *s = "integer value too large to represent"; + Tcl_ResetResult(interp); + Tcl_AppendToObj(Tcl_GetObjResult(interp), s, -1); + Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", s, (char *) NULL); + } + return TCL_ERROR; + } + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * + * SetIntOrWideFromAny -- + * * Attempt to generate an integer internal form for the Tcl object * "objPtr". * @@ -1789,7 +1867,7 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) */ static int -SetIntFromAny(interp, objPtr) +SetIntOrWideFromAny(interp, objPtr) Tcl_Interp *interp; /* Used for error reporting if not NULL. */ register Tcl_Obj *objPtr; /* The object to convert. */ { @@ -1797,7 +1875,9 @@ SetIntFromAny(interp, objPtr) char *string, *end; int length; register char *p; - long newLong; + unsigned long newLong; + int isNegative = 0; + int isWide = 0; /* * Get the string representation. Make it up-to-date if necessary. @@ -1814,21 +1894,16 @@ SetIntFromAny(interp, objPtr) */ errno = 0; -#ifdef TCL_STRTOUL_SIGN_CHECK for ( ; isspace(UCHAR(*p)); p++) { /* INTL: ISO space. */ /* Empty loop body. */ } if (*p == '-') { p++; - newLong = -((long)strtoul(p, &end, 0)); + isNegative = 1; } else if (*p == '+') { p++; - newLong = strtoul(p, &end, 0); - } else -#else - newLong = strtoul(p, &end, 0); -#endif - if (end == p) { + } + if (!isdigit(UCHAR(*p))) { badInteger: if (interp != NULL) { /* @@ -1844,6 +1919,10 @@ SetIntFromAny(interp, objPtr) } return TCL_ERROR; } + newLong = strtoul(p, &end, 0); + if (end == p) { + goto badInteger; + } if (errno == ERANGE) { if (interp != NULL) { char *s = "integer value too large to represent"; @@ -1867,6 +1946,18 @@ SetIntFromAny(interp, objPtr) } /* + * If the resulting integer will exceed the range of a long, + * put it into a wide instead. (Tcl Bug #868489) + */ + +#ifndef TCL_WIDE_INT_IS_LONG + if ((isNegative && newLong > (unsigned long) (LONG_MAX) + 1) + || (!isNegative && newLong > LONG_MAX)) { + isWide = 1; + } +#endif + + /* * The conversion to int succeeded. Free the old internalRep before * setting the new one. We do this as late as possible to allow the * conversion code, in particular Tcl_GetStringFromObj, to use that old @@ -1877,8 +1968,15 @@ SetIntFromAny(interp, objPtr) oldTypePtr->freeIntRepProc(objPtr); } - objPtr->internalRep.longValue = newLong; - objPtr->typePtr = &tclIntType; + if (isWide) { + objPtr->internalRep.wideValue = + (isNegative ? -(Tcl_WideInt)newLong : (Tcl_WideInt)newLong); + objPtr->typePtr = &tclWideIntType; + } else { + objPtr->internalRep.longValue = + (isNegative ? -(long)newLong : (long)newLong); + objPtr->typePtr = &tclIntType; + } return TCL_OK; } @@ -2110,16 +2208,43 @@ Tcl_GetLongFromObj(interp, objPtr, longPtr) register long *longPtr; /* Place to store resulting long. */ { register int result; + Tcl_WideInt w; - if (objPtr->typePtr == &tclIntType) { - *longPtr = objPtr->internalRep.longValue; - return TCL_OK; + if (objPtr->typePtr != &tclIntType && objPtr->typePtr != &tclWideIntType) { + result = SetIntOrWideFromAny(interp, objPtr); + if (result != TCL_OK) { + return result; + } } - result = SetIntFromAny(interp, objPtr); - if (result == TCL_OK) { - *longPtr = objPtr->internalRep.longValue; + +#ifndef TCL_WIDE_INT_IS_LONG + if (objPtr->typePtr == &tclWideIntType) { + /* + * If the object is already a wide integer, don't convert it. + * This code allows for any integer in the range -ULONG_MAX to + * ULONG_MAX to be converted to a long, ignoring overflow. + * The rule preserves existing semantics for conversion of + * integers on input, but avoids inadvertent demotion of + * wide integers to 32-bit ones in the internal rep. + */ + + w = objPtr->internalRep.wideValue; + if (w >= -(Tcl_WideInt)(ULONG_MAX) && w <= (Tcl_WideInt)(ULONG_MAX)) { + *longPtr = Tcl_WideAsLong(w); + return TCL_OK; + } else { + if (interp != NULL) { + Tcl_ResetResult(interp); + Tcl_AppendToObj(Tcl_GetObjResult(interp), + "integer value too large to represent", -1); + } + return TCL_ERROR; + } } - return result; +#endif + + *longPtr = objPtr->internalRep.longValue; + return TCL_OK; } /* diff --git a/tests/obj.test b/tests/obj.test index c4ec7d4..7b25f91 100644 --- a/tests/obj.test +++ b/tests/obj.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: obj.test,v 1.7 2002/04/26 08:43:38 dkf Exp $ +# RCS: @(#) $Id: obj.test,v 1.7.2.1 2004/09/10 21:52:37 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -25,6 +25,33 @@ if {[info commands testobj] == {}} { return } +# Procedure to determine the integer range of the machine + +proc int_range {} { + for { set MIN_INT 1 } { $MIN_INT > 0 } {} { + set MIN_INT [expr { $MIN_INT << 1 }] + } + set MAX_INT [expr { ~ $MIN_INT }] + return [list $MIN_INT $MAX_INT] +} + +# Procedure to determine the range of wide integers on the machine. + +proc wide_range {} { + for { set MIN_WIDE [expr { wide(1) }] } { $MIN_WIDE > wide(0) } {} { + set MIN_WIDE [expr { $MIN_WIDE << 1 }] + } + set MAX_WIDE [expr { ~ $MIN_WIDE }] + return [list $MIN_WIDE $MAX_WIDE] +} + +foreach { MIN_INT MAX_INT } [int_range] break +foreach { MIN_WIDE MAX_WIDE } [wide_range] break +::tcltest::testConstraint 32bit \ + [expr { $MAX_INT == 0x7fffffff }] +::tcltest::testConstraint wideBiggerThanInt \ + [expr { $MAX_WIDE > wide($MAX_INT) }] + test obj-1.1 {Tcl_AppendAllObjTypes, and InitTypeTable, Tcl_RegisterObjType} { set r 1 foreach {t} { @@ -597,8 +624,47 @@ test obj-31.6 {regenerate string rep of "end--bigInteger"} {nonPortable} { testobj invalidateStringRep 1 } end--2147483648 +test obj-32.1 {integer overflow on input} {32bit wideBiggerThanInt} { + set x 0x8000; append x 0000 + list [string is integer $x] [expr { wide($x) }] +} {1 2147483648} + +test obj-32.2 {integer overflow on input} {32bit wideBiggerThanInt} { + set x 0xffff; append x ffff + list [string is integer $x] [expr { wide($x) }] +} {1 4294967295} + +test obj-32.3 {integer overflow on input} {32bit wideBiggerThanInt} { + set x 0x10000; append x 0000 + list [string is integer $x] [expr { wide($x) }] +} {0 4294967296} + +test obj-32.4 {integer overflow on input} {32bit wideBiggerThanInt} { + set x -0x8000; append x 0000 + list [string is integer $x] [expr { wide($x) }] +} {1 -2147483648} + +test obj-32.5 {integer overflow on input} {32bit wideBiggerThanInt} { + set x -0x8000; append x 0001 + list [string is integer $x] [expr { wide($x) }] +} {1 -2147483649} + +test obj-32.6 {integer overflow on input} {32bit wideBiggerThanInt} { + set x -0xffff; append x ffff + list [string is integer $x] [expr { wide($x) }] +} {1 -4294967295} + +test obj-32.7 {integer overflow on input} {32bit wideBiggerThanInt} { + set x -0x10000; append x 0000 + list [string is integer $x] [expr { wide($x) }] +} {0 -4294967296} + testobj freeallvars # cleanup ::tcltest::cleanupTests return + +# Local Variables: +# mode: tcl +# End: -- cgit v0.12 From 3d824b43c9adb2572dcf1548e12e4b31f284cbbc Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Sep 2004 22:59:54 +0000 Subject: Minor mods to latest commit to correct bugs and compiler warnings on TCL_WIDE_INT_IS_LONG platforms. --- generic/tclObj.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/generic/tclObj.c b/generic/tclObj.c index 60ccab4..baed8fb 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.6 2004/09/10 21:52:37 dkf Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.7 2004/09/10 22:59:54 dgp Exp $ */ #include "tclInt.h" @@ -1749,8 +1749,7 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) register Tcl_Obj *objPtr; /* The object from which to get a int. */ register int *intPtr; /* Place to store resulting int. */ { - register long l; - Tcl_WideInt w; + register long l = 0; int result; /* @@ -1771,8 +1770,8 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) if (objPtr->typePtr == &tclIntType) { l = objPtr->internalRep.longValue; -#ifndef TCL_WIDE_INT_IS_LONG } else if (objPtr->typePtr == &tclWideIntType) { +#ifndef TCL_WIDE_INT_IS_LONG /* * If the object is already a wide integer, don't convert it. * This code allows for any integer in the range -ULONG_MAX to @@ -1782,12 +1781,14 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) * wide integers to 32-bit ones in the internal rep. */ - w = objPtr->internalRep.wideValue; + Tcl_WideInt w = objPtr->internalRep.wideValue; if (w >= -(Tcl_WideInt)(ULONG_MAX) && w <= (Tcl_WideInt)(ULONG_MAX)) { l = Tcl_WideAsLong(w); } else { goto tooBig; } +#else + l = objPtr->internalRep.longValue; #endif } else { Tcl_Panic( "string->integer conversion failed to convert the obj." ); @@ -1797,7 +1798,9 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) *intPtr = (int)objPtr->internalRep.longValue; return TCL_OK; } +#ifndef TCL_WIDE_INT_IS_LONG tooBig: +#endif if (interp != NULL) { Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), @@ -2208,7 +2211,6 @@ Tcl_GetLongFromObj(interp, objPtr, longPtr) register long *longPtr; /* Place to store resulting long. */ { register int result; - Tcl_WideInt w; if (objPtr->typePtr != &tclIntType && objPtr->typePtr != &tclWideIntType) { result = SetIntOrWideFromAny(interp, objPtr); @@ -2228,7 +2230,7 @@ Tcl_GetLongFromObj(interp, objPtr, longPtr) * wide integers to 32-bit ones in the internal rep. */ - w = objPtr->internalRep.wideValue; + Tcl_WideInt w = objPtr->internalRep.wideValue; if (w >= -(Tcl_WideInt)(ULONG_MAX) && w <= (Tcl_WideInt)(ULONG_MAX)) { *longPtr = Tcl_WideAsLong(w); return TCL_OK; -- cgit v0.12 From 72ca043b8b5b4a0566d50924e6151e319a990112 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 14 Sep 2004 16:30:12 +0000 Subject: * generic/tclObj.c (Tcl_GetIntFromObj): Corrected flaw in returning the int value of a wideInteger. [Bug 1027690] --- ChangeLog | 5 +++++ generic/tclObj.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9a7769d..cdbd5ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-09-14 Don Porter + + * generic/tclObj.c (Tcl_GetIntFromObj): Corrected flaw in returning + the int value of a wideInteger. [Bug 1027690] + 2004-09-10 Donal K. Fellows * generic/tclObj.c (SetIntOrWideFromAny): Rewritten integral value diff --git a/generic/tclObj.c b/generic/tclObj.c index baed8fb..8394f46 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.7 2004/09/10 22:59:54 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.8 2004/09/14 16:30:32 dgp Exp $ */ #include "tclInt.h" @@ -1795,7 +1795,7 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) } if (((long)((int)l)) == l) { - *intPtr = (int)objPtr->internalRep.longValue; + *intPtr = (int)l; return TCL_OK; } #ifndef TCL_WIDE_INT_IS_LONG -- cgit v0.12 From 2994c047afba0aed2193c6cc688808335ae956ce Mon Sep 17 00:00:00 2001 From: das Date: Tue, 14 Sep 2004 17:02:49 +0000 Subject: * tests/load.test (load-2.3): adopted fix for failure on darwin from HEAD. --- ChangeLog | 5 +++++ tests/load.test | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index cdbd5ad..c2f5a8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-09-15 Daniel Steffen + + * tests/load.test (load-2.3): adopted fix for failure on darwin + from HEAD. + 2004-09-14 Don Porter * generic/tclObj.c (Tcl_GetIntFromObj): Corrected flaw in returning diff --git a/tests/load.test b/tests/load.test index bd480b9..9fe26ab 100644 --- a/tests/load.test +++ b/tests/load.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: load.test,v 1.11 2003/02/01 23:37:29 kennykb Exp $ +# RCS: @(#) $Id: load.test,v 1.11.2.1 2004/09/14 17:02:56 das Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -78,9 +78,10 @@ test load-2.2 {loading into a safe interpreter, with package name conversion} \ list [child eval pkgb_sub 44 13] [catch {child eval pkgb_unsafe} msg] $msg \ [catch {pkgb_sub 12 10} msg2] $msg2 } {31 1 {invalid command name "pkgb_unsafe"} 1 {invalid command name "pkgb_sub"}} -test load-2.3 {loading with no _Init procedure} [list $dll $loaded] { +test load-2.3 {loading with no _Init procedure} -constraints [list $dll $loaded] \ +-body { list [catch {load [file join $testDir pkgc$ext] foo} msg] $msg -} {1 {couldn't find procedure Foo_Init}} +} -match glob -result {1 {*couldn't find procedure Foo_Init}} test load-2.4 {loading with no _SafeInit procedure} [list $dll $loaded] { list [catch {load [file join $testDir pkga$ext] {} child} msg] $msg } {1 {can't use package in a safe interpreter: no Pkga_SafeInit procedure}} -- cgit v0.12 From a3ec92940dc1dda1f91d654e08b7bba36bc2300d Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 18 Sep 2004 19:17:10 +0000 Subject: Make sure large shifts shift for real. [Bug 868467] --- ChangeLog | 5 ++++ generic/tclExecute.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++----- tests/expr.test | 13 +++++++- 3 files changed, 93 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index c2f5a8a..7298a82 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-09-18 Donal K. Fellows + + * generic/tclExecute.c (TEBC-INST_LSHIFT,INST_RSHIFT): Ensure that + large shifts end up shifting correctly. [Bug 868467] + 2004-09-15 Daniel Steffen * tests/load.test (load-2.3): adopted fix for failure on darwin diff --git a/generic/tclExecute.c b/generic/tclExecute.c index b0a94fe..ef4f379 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.8 2004/09/10 15:30:02 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.9 2004/09/18 19:17:12 dkf Exp $ */ #include "tclInt.h" @@ -3058,11 +3058,42 @@ TclExecuteByteCode(interp, codePtr) #ifdef TCL_COMPILE_DEBUG w2 = Tcl_LongAsWide(i2); #endif /* TCL_COMPILE_DEBUG */ - wResult = w << i2; + wResult = w; + /* + * Shift in steps when the shift gets large to prevent + * annoying compiler/processor bugs. [Bug 868467] + */ + if (i2 >= 64) { + wResult = Tcl_LongAsWide(0); + } else if (i2 > 60) { + wResult = w << 30; + wResult <<= 30; + wResult <<= i2-60; + } else if (i2 > 30) { + wResult = w << 30; + wResult <<= i2-30; + } else { + wResult = w << i2; + } doWide = 1; break; } - iResult = i << i2; + /* + * Shift in steps when the shift gets large to prevent + * annoying compiler/processor bugs. [Bug 868467] + */ + if (i2 >= 64) { + iResult = 0; + } else if (i2 > 60) { + iResult = i << 30; + iResult <<= 30; + iResult <<= i2-60; + } else if (i2 > 30) { + iResult = i << 30; + iResult <<= i2-30; + } else { + iResult = i << i2; + } break; case INST_RSHIFT: /* @@ -3079,17 +3110,55 @@ TclExecuteByteCode(interp, codePtr) w2 = Tcl_LongAsWide(i2); #endif /* TCL_COMPILE_DEBUG */ if (w < 0) { - wResult = ~((~w) >> i2); + wResult = ~w; + } else { + wResult = w; + } + /* + * Shift in steps when the shift gets large to prevent + * annoying compiler/processor bugs. [Bug 868467] + */ + if (i2 >= 64) { + wResult = Tcl_LongAsWide(0); + } else if (i2 > 60) { + wResult >>= 30; + wResult >>= 30; + wResult >>= i2-60; + } else if (i2 > 30) { + wResult >>= 30; + wResult >>= i2-30; } else { - wResult = w >> i2; + wResult >>= i2; + } + if (w < 0) { + wResult = ~wResult; } doWide = 1; break; } if (i < 0) { - iResult = ~((~i) >> i2); + iResult = ~i; + } else { + iResult = i; + } + /* + * Shift in steps when the shift gets large to prevent + * annoying compiler/processor bugs. [Bug 868467] + */ + if (i2 >= 64) { + iResult = 0; + } else if (i2 > 60) { + iResult >>= 30; + iResult >>= 30; + iResult >>= i2-60; + } else if (i2 > 30) { + iResult >>= 30; + iResult >>= i2-30; } else { - iResult = i >> i2; + iResult >>= i2; + } + if (i < 0) { + iResult = ~iResult; } break; case INST_BITOR: diff --git a/tests/expr.test b/tests/expr.test index 6ef1c41..b4b6917 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.1 2003/03/27 13:49:22 dkf Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.2 2004/09/18 19:17:13 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -806,6 +806,17 @@ test expr-22.8 {non-numeric floats} nonPortable { list [catch {expr {1 / Inf}} msg] $msg } {1 {can't use infinite floating-point value as operand of "/"}} +# Some compilers get this wrong; ensure that we work around it correctly +test expr-24.1 {expr edge cases; shifting} {expr int(5)>>31} 0 +test expr-24.2 {expr edge cases; shifting} {expr int(5)>>63} 0 +test expr-24.3 {expr edge cases; shifting} {expr wide(5)>>31} 0 +test expr-24.4 {expr edge cases; shifting} {expr wide(5)>>63} 0 +test expr-24.5 {expr edge cases; shifting} nonPortable {expr int(5)<<31} 0 +test expr-24.6 {expr edge cases; shifting} {expr int(5)<<63} 0 +test expr-24.7 {expr edge cases; shifting} {expr wide(5)<<31} 10737418240 +test expr-24.8 {expr edge cases; shifting} nonPortable {expr wide(5)<<63} -9223372036854775808 +test expr-24.9 {expr edge cases; shifting} {expr 5>>32} 0 + # cleanup if {[info exists a]} { unset a -- cgit v0.12 From 198108e14897c176e8c959e0b17b298283a2fc73 Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 19 Sep 2004 15:02:36 +0000 Subject: Some tests were non-portable, alas. --- tests/expr.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/expr.test b/tests/expr.test index b4b6917..9ba169a 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.2 2004/09/18 19:17:13 dkf Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.3 2004/09/19 15:02:36 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -812,7 +812,7 @@ test expr-24.2 {expr edge cases; shifting} {expr int(5)>>63} 0 test expr-24.3 {expr edge cases; shifting} {expr wide(5)>>31} 0 test expr-24.4 {expr edge cases; shifting} {expr wide(5)>>63} 0 test expr-24.5 {expr edge cases; shifting} nonPortable {expr int(5)<<31} 0 -test expr-24.6 {expr edge cases; shifting} {expr int(5)<<63} 0 +test expr-24.6 {expr edge cases; shifting} nonPortable {expr int(5)<<63} 0 test expr-24.7 {expr edge cases; shifting} {expr wide(5)<<31} 10737418240 test expr-24.8 {expr edge cases; shifting} nonPortable {expr wide(5)<<63} -9223372036854775808 test expr-24.9 {expr edge cases; shifting} {expr 5>>32} 0 -- cgit v0.12 From c36a55ff0083738d8bd88d1ba5c164046e441f8f Mon Sep 17 00:00:00 2001 From: mdejong Date: Thu, 23 Sep 2004 20:04:06 +0000 Subject: * unix/dltest/Makefile.in (clean): Fixup make clean rule so that it does not delete all files when SHLIB_SUFFIX is set to the empty string in a static build. [Bug 1016726] --- ChangeLog | 7 +++++++ unix/dltest/Makefile.in | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7298a82..d1de167 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-09-23 Mo DeJong + + * unix/dltest/Makefile.in (clean): Fixup make clean + rule so that it does not delete all files when + SHLIB_SUFFIX is set to the empty string in a static build. + [Bug 1016726] + 2004-09-18 Donal K. Fellows * generic/tclExecute.c (TEBC-INST_LSHIFT,INST_RSHIFT): Ensure that diff --git a/unix/dltest/Makefile.in b/unix/dltest/Makefile.in index 98e60b3..64a60f8 100644 --- a/unix/dltest/Makefile.in +++ b/unix/dltest/Makefile.in @@ -1,7 +1,7 @@ # This Makefile is used to create several test cases for Tcl's load # command. It also illustrates how to take advantage of configuration # exported by Tcl to set up Makefiles for shared libraries. -# RCS: @(#) $Id: Makefile.in,v 1.11.2.1 2004/07/20 11:13:10 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.11.2.2 2004/09/23 20:04:07 mdejong Exp $ TCL_DBGX = @TCL_DBGX@ CC = @CC@ @@ -45,8 +45,12 @@ pkge${SHLIB_SUFFIX}: $(SRC_DIR)/pkge.c ${SHLIB_LD} -o pkge${SHLIB_SUFFIX} pkge.o ${SHLIB_LD_LIBS} clean: - rm -f *.o *${SHLIB_SUFFIX} config.cache config.log config.status + rm -f *.o config.cache config.log config.status rm -f lib.exp ../dltest.marker + @if test "$(SHLIB_SUFFIX)" != ""; then \ + echo "rm -f *${SHLIB_SUFFIX}" ; \ + rm -f *${SHLIB_SUFFIX} ; \ + fi distclean: clean rm -f Makefile -- cgit v0.12 From db28fb893dc50fd54f948ec4bf06c296cb4165f2 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Wed, 29 Sep 2004 19:36:34 +0000 Subject: fix for buffer overflow in [subst], [Bug 1036649] --- ChangeLog | 6 ++++++ generic/tclBasic.c | 12 +++++++++++- tests/subst.test | 19 ++++++++++++++++++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d1de167..a44a78e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-09-29 Miguel Sofer + + * generic/tclBasic.c (Tcl_EvalEx): + * tests/subst.test (12.1-2): fix for buffer overflow in [subst], + [Bug 1036649] + 2004-09-23 Mo DeJong * unix/dltest/Makefile.in (clean): Fixup make clean diff --git a/generic/tclBasic.c b/generic/tclBasic.c index f7116dd..8b199ce 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.9 2004/07/28 16:28:20 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.10 2004/09/29 19:36:36 msofer Exp $ */ #include "tclInt.h" @@ -3727,6 +3727,16 @@ Tcl_EvalEx(interp, script, numBytes, flags) return TCL_OK; } } while (bytesLeft > 0); + + if (nested) { + /* + * This nested script did not terminate in ']', it is an error. + */ + + code = TCL_ERROR; + goto error; + } + iPtr->termOffset = p - script; iPtr->varFramePtr = savedVarFramePtr; return TCL_OK; diff --git a/tests/subst.test b/tests/subst.test index 792420a..2cab058 100644 --- a/tests/subst.test +++ b/tests/subst.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: subst.test,v 1.13.2.2 2003/03/12 18:04:41 dgp Exp $ +# RCS: @(#) $Id: subst.test,v 1.13.2.3 2004/09/29 19:36:37 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -220,6 +220,23 @@ test subst-11.6 {continue in a variable subst} { subst {foo $var([continue]) bar} } {foo bar} +test subst-12.1 {nasty case, Bug 1036649} { + for {set i 0} {$i < 10} {incr i} { + set res [list [catch {subst "\[subst {};"} msg] $msg] + if {$msg ne "missing close-bracket"} break + } + set res +} {1 {missing close-bracket}} +test subst-12.2 {nasty case, Bug 1036649} { + for {set i 0} {$i < 10} {incr i} { + list [catch {subst "\[subst {}; "} msg] $msg + if {$msg ne "missing close-bracket"} break + } + set res +} {1 {missing close-bracket}} + + + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From dd9bf5efaf27ae22d4c80c1e55bf79c422fb061c Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Thu, 30 Sep 2004 10:35:06 +0000 Subject: * tests/subst.test (12.2): test correction. --- ChangeLog | 4 ++++ tests/subst.test | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a44a78e..c0d2665 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-09-30 Miguel Sofer + + * tests/subst.test (12.2): test correction. + 2004-09-29 Miguel Sofer * generic/tclBasic.c (Tcl_EvalEx): diff --git a/tests/subst.test b/tests/subst.test index 2cab058..8ba5ec9 100644 --- a/tests/subst.test +++ b/tests/subst.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: subst.test,v 1.13.2.3 2004/09/29 19:36:37 msofer Exp $ +# RCS: @(#) $Id: subst.test,v 1.13.2.4 2004/09/30 10:35:07 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -229,7 +229,7 @@ test subst-12.1 {nasty case, Bug 1036649} { } {1 {missing close-bracket}} test subst-12.2 {nasty case, Bug 1036649} { for {set i 0} {$i < 10} {incr i} { - list [catch {subst "\[subst {}; "} msg] $msg + set res [list [catch {subst "\[subst {}; "} msg] $msg] if {$msg ne "missing close-bracket"} break } set res -- cgit v0.12 From 5c16366d01d19e9cacbb662827823e070bc606cf Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 30 Sep 2004 22:45:10 +0000 Subject: * generic/tclNamespace.c (TclTeardownNamespace): Tcl_Obj-ified * tests/namespace.test (namespace-8.5,6): the save/restore of ::errorInfo and ::errorCode during global namespace teardown. Revised the comment to clarify why this is done, and added tests that will fail if this is not done. * generic/tclResult.c (TclTransferResult): Added safety checks so that unexpected undefined ::errorInfo or ::errorCode will not lead to a segfault. * generic/tclVar.c (CallVarTraces): Save/restore the flag * tests/var.test (var-16.1): values that define part of the interpreter state during variable traces. [Bug 10381021]. --- ChangeLog | 16 +++++++++++++++ generic/tclNamesp.c | 58 ++++++++++++++++++++++------------------------------ generic/tclResult.c | 15 ++++++++------ generic/tclVar.c | 6 +++++- tests/namespace.test | 20 +++++++++++++++++- tests/var.test | 9 +++++++- 6 files changed, 82 insertions(+), 42 deletions(-) diff --git a/ChangeLog b/ChangeLog index c0d2665..48e967d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2004-09-30 Don Porter + + * generic/tclNamespace.c (TclTeardownNamespace): Tcl_Obj-ified + * tests/namespace.test (namespace-8.5,6): the save/restore + of ::errorInfo and ::errorCode during global namespace teardown. + Revised the comment to clarify why this is done, and added tests + that will fail if this is not done. + + * generic/tclResult.c (TclTransferResult): Added safety + checks so that unexpected undefined ::errorInfo or ::errorCode + will not lead to a segfault. + + * generic/tclVar.c (CallVarTraces): Save/restore the flag + * tests/var.test (var-16.1): values that define part of the + interpreter state during variable traces. [Bug 10381021]. + 2004-09-30 Miguel Sofer * tests/subst.test (12.2): test correction. diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 7e238d0..d319100 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.4 2004/09/10 18:22:09 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.5 2004/09/30 22:45:14 dgp Exp $ */ #include "tclInt.h" @@ -713,45 +713,37 @@ TclTeardownNamespace(nsPtr) if (nsPtr == globalNsPtr) { /* - * This is the global namespace, so be careful to preserve the - * "errorInfo" and "errorCode" variables. These might be needed - * later on if errors occur while deleting commands. We are careful - * to destroy and recreate the "errorInfo" and "errorCode" - * variables, in case they had any traces on them. + * This is the global namespace. Tearing it down will destroy the + * ::errorInfo and ::errorCode variables. We save and restore them + * in case there are any errors in progress, so the error details + * they contain will not be lost. See test namespace-8.5 */ - CONST char *str; - char *errorInfoStr, *errorCodeStr; + Tcl_Obj *errorInfo = Tcl_GetVar2Ex(nsPtr->interp, "errorInfo", + NULL, TCL_GLOBAL_ONLY); + Tcl_Obj *errorCode = Tcl_GetVar2Ex(nsPtr->interp, "errorCode", + NULL, TCL_GLOBAL_ONLY); - str = Tcl_GetVar((Tcl_Interp *) iPtr, "errorInfo", TCL_GLOBAL_ONLY); - if (str != NULL) { - errorInfoStr = ckalloc((unsigned) (strlen(str)+1)); - strcpy(errorInfoStr, str); - } else { - errorInfoStr = NULL; - } - - str = Tcl_GetVar((Tcl_Interp *) iPtr, "errorCode", TCL_GLOBAL_ONLY); - if (str != NULL) { - errorCodeStr = ckalloc((unsigned) (strlen(str)+1)); - strcpy(errorCodeStr, str); - } else { - errorCodeStr = NULL; - } + if (errorInfo) { + Tcl_IncrRefCount(errorInfo); + } + if (errorCode) { + Tcl_IncrRefCount(errorCode); + } TclDeleteVars(iPtr, &nsPtr->varTable); Tcl_InitHashTable(&nsPtr->varTable, TCL_STRING_KEYS); - if (errorInfoStr != NULL) { - Tcl_SetVar((Tcl_Interp *) iPtr, "errorInfo", errorInfoStr, - TCL_GLOBAL_ONLY); - ckfree(errorInfoStr); - } - if (errorCodeStr != NULL) { - Tcl_SetVar((Tcl_Interp *) iPtr, "errorCode", errorCodeStr, - TCL_GLOBAL_ONLY); - ckfree(errorCodeStr); - } + if (errorInfo) { + Tcl_SetVar2Ex(nsPtr->interp, "errorInfo", NULL, + errorInfo, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(errorInfo); + } + if (errorCode) { + Tcl_SetVar2Ex(nsPtr->interp, "errorCode", NULL, + errorCode, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(errorCode); + } } else { /* * Variable table should be cleared but not freed! TclDeleteVars diff --git a/generic/tclResult.c b/generic/tclResult.c index 9cfbd63..badaf89 100644 --- a/generic/tclResult.c +++ b/generic/tclResult.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclResult.c,v 1.5.2.1 2003/07/16 21:25:07 hobbs Exp $ + * RCS: @(#) $Id: tclResult.c,v 1.5.2.2 2004/09/30 22:45:15 dgp Exp $ */ #include "tclInt.h" @@ -1029,15 +1029,18 @@ TclTransferResult(sourceInterp, result, targetInterp) objPtr = Tcl_GetVar2Ex(sourceInterp, "errorInfo", NULL, TCL_GLOBAL_ONLY); - Tcl_SetVar2Ex(targetInterp, "errorInfo", NULL, objPtr, - TCL_GLOBAL_ONLY); + if (objPtr) { + Tcl_SetVar2Ex(targetInterp, "errorInfo", NULL, objPtr, + TCL_GLOBAL_ONLY); + ((Interp *) targetInterp)->flags |= ERR_IN_PROGRESS; + } objPtr = Tcl_GetVar2Ex(sourceInterp, "errorCode", NULL, TCL_GLOBAL_ONLY); - Tcl_SetVar2Ex(targetInterp, "errorCode", NULL, objPtr, - TCL_GLOBAL_ONLY); + if (objPtr) { + Tcl_SetObjErrorCode(targetInterp, objPtr); + } - ((Interp *) targetInterp)->flags |= (ERR_IN_PROGRESS | ERROR_CODE_SET); } ((Interp *) targetInterp)->returnCode = ((Interp *) sourceInterp)->returnCode; diff --git a/generic/tclVar.c b/generic/tclVar.c index 8478394..03b005e 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.6 2004/08/16 14:18:26 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.7 2004/09/30 22:45:15 dgp Exp $ */ #include "tclInt.h" @@ -4133,6 +4133,7 @@ CallVarTraces(iPtr, arrayPtr, varPtr, part1, part2, flags, leaveErrMsg) int copiedName; int code = TCL_OK; int disposeFlags = 0; + int saveErrFlags = iPtr->flags; /* * If there are already similar trace procedures active for the @@ -4255,6 +4256,9 @@ CallVarTraces(iPtr, arrayPtr, varPtr, part1, part2, flags, leaveErrMsg) */ done: + if (code == TCL_OK) { + iPtr->flags = saveErrFlags; + } if (code == TCL_ERROR) { if (leaveErrMsg) { CONST char *type = ""; diff --git a/tests/namespace.test b/tests/namespace.test index 1751eb5..daa6ecd 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21.2.2 2004/09/09 17:12:13 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.3 2004/09/30 22:45:17 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -193,6 +193,24 @@ test namespace-8.4 {TclTeardownNamespace, cmds imported from deleted ns go away} [namespace delete test_ns_export] \ [info commands test_ns_import::*] } [list [lsort {::test_ns_import::p ::test_ns_import::cmd1 ::test_ns_import::cmd2}] {} ::test_ns_import::p] +test namespace-8.5 {TclTeardownNamespace: preserve errorInfo; errorCode values} { + interp create slave + slave eval {trace add execution error leave {namespace delete :: ;#}} + catch {slave eval error foo bar baz} + interp delete slave + set ::errorInfo +} {bar + invoked from within +"slave eval error foo bar baz"} +test namespace-8.6 {TclTeardownNamespace: preserve errorInfo; errorCode values} { + interp create slave + slave eval {trace add variable errorCode write {namespace delete :: ;#}} + catch {slave eval error foo bar baz} + interp delete slave + set ::errorInfo +} {bar + invoked from within +"slave eval error foo bar baz"} test namespace-9.1 {Tcl_Import, empty import pattern} { catch {eval namespace delete [namespace children :: test_ns_*]} diff --git a/tests/var.test b/tests/var.test index 2f0c1df..64f52707 100644 --- a/tests/var.test +++ b/tests/var.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: var.test,v 1.20.2.2 2003/05/12 17:31:51 msofer Exp $ +# RCS: @(#) $Id: var.test,v 1.20.2.3 2004/09/30 22:45:17 dgp Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -694,6 +694,13 @@ test var-15.1 {segfault in [unset], [Bug 735335]} { namespace eval test unset useSomeUnlikelyNameHere } {} +test var-16.1 {CallVarTraces: save/restore interp error state: 1038021} { + trace add variable errorCode write { ;#} + catch {error foo bar baz} + trace remove variable errorCode write { ;#} + set errorInfo +} bar + catch {namespace delete ns} catch {unset arr} catch {unset v} -- cgit v0.12 From ac03c78e140b0ffc165c5c3d2c3dc6c589561363 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 1 Oct 2004 00:09:36 +0000 Subject: Correction to 1038021 bug fix; should only save restore those bits that get cleared by Tcl_ResetResult() and not more serious things like DELETED. --- generic/tclVar.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/generic/tclVar.c b/generic/tclVar.c index 03b005e..a78b3f6 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.7 2004/09/30 22:45:15 dgp Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.8 2004/10/01 00:09:36 dgp Exp $ */ #include "tclInt.h" @@ -4133,7 +4133,8 @@ CallVarTraces(iPtr, arrayPtr, varPtr, part1, part2, flags, leaveErrMsg) int copiedName; int code = TCL_OK; int disposeFlags = 0; - int saveErrFlags = iPtr->flags; + int saveErrFlags = iPtr->flags + & (ERR_IN_PROGRESS | ERR_ALREADY_LOGGED | ERROR_CODE_SET); /* * If there are already similar trace procedures active for the @@ -4257,7 +4258,7 @@ CallVarTraces(iPtr, arrayPtr, varPtr, part1, part2, flags, leaveErrMsg) done: if (code == TCL_OK) { - iPtr->flags = saveErrFlags; + iPtr->flags |= saveErrFlags; } if (code == TCL_ERROR) { if (leaveErrMsg) { -- cgit v0.12 From f7bc88de0e53b6ba8710bd7b8c269289a2d16863 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 5 Oct 2004 16:22:31 +0000 Subject: * generic/tclNamesp.c (Tcl_PopCallFrame): Removed Bug 1038021 workaround. That bug is now fixed. --- ChangeLog | 7 ++++++- generic/tclNamesp.c | 20 +------------------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 48e967d..ad735f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-10-05 Don Porter + + * generic/tclNamesp.c (Tcl_PopCallFrame): Removed Bug 1038021 + workaround. That bug is now fixed. + 2004-09-30 Don Porter * generic/tclNamespace.c (TclTeardownNamespace): Tcl_Obj-ified @@ -12,7 +17,7 @@ * generic/tclVar.c (CallVarTraces): Save/restore the flag * tests/var.test (var-16.1): values that define part of the - interpreter state during variable traces. [Bug 10381021]. + interpreter state during variable traces. [Bug 1038021]. 2004-09-30 Miguel Sofer diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index d319100..55e92af 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.5 2004/09/30 22:45:14 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.6 2004/10/05 16:22:34 dgp Exp $ */ #include "tclInt.h" @@ -351,7 +351,6 @@ Tcl_PopCallFrame(interp) { register Interp *iPtr = (Interp *) interp; register CallFrame *framePtr = iPtr->framePtr; - int saveErrFlag; Namespace *nsPtr; /* @@ -364,21 +363,6 @@ Tcl_PopCallFrame(interp) iPtr->framePtr = framePtr->callerPtr; iPtr->varFramePtr = framePtr->callerVarPtr; - /* - * Delete the local variables. As a hack, we save then restore the - * ERR_IN_PROGRESS flag in the interpreter. The problem is that there - * could be unset traces on the variables, which cause scripts to be - * evaluated. This will clear the ERR_IN_PROGRESS flag, losing stack - * trace information if the procedure was exiting with an error. The - * code below preserves the flag. Unfortunately, that isn't really - * enough: we really should preserve the errorInfo variable too - * (otherwise a nested error in the trace script will trash errorInfo). - * What's really needed is a general-purpose mechanism for saving and - * restoring interpreter state. - */ - - saveErrFlag = (iPtr->flags & ERR_IN_PROGRESS); - if (framePtr->varTablePtr != NULL) { TclDeleteVars(iPtr, framePtr->varTablePtr); ckfree((char *) framePtr->varTablePtr); @@ -388,8 +372,6 @@ Tcl_PopCallFrame(interp) TclDeleteCompiledLocalVars(iPtr, framePtr); } - iPtr->flags |= saveErrFlag; - /* * Decrement the namespace's count of active call frames. If the * namespace is "dying" and there are no more active call frames, -- cgit v0.12 From a0450acd9622a064562fefe006306d0775937c30 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 8 Oct 2004 20:16:41 +0000 Subject: * win/tclWinFile.c (NativeIsExec): correct result of 'file executable' to not be case sensitive. [Bug 954263] --- ChangeLog | 5 +++++ win/tclWinFile.c | 23 +++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad735f0..5f74f81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-10-08 Jeff Hobbs + + * win/tclWinFile.c (NativeIsExec): correct result of 'file + executable' to not be case sensitive. [Bug 954263] + 2004-10-05 Don Porter * generic/tclNamesp.c (Tcl_PopCallFrame): Removed Bug 1038021 diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 574577e..1ad7da8 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.9 2004/07/02 16:52:20 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.10 2004/10/08 20:16:42 hobbs Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -1334,28 +1334,31 @@ NativeIsExec(nativePath) if (tclWinProcs->useWide) { CONST WCHAR *path; int len; - + path = (CONST WCHAR*)nativePath; len = wcslen(path); - + if (len < 5) { return 0; } - + if (path[len-4] != L'.') { return 0; } - - if ((memcmp((char*)(path+len-3),L"exe",3*sizeof(WCHAR)) == 0) - || (memcmp((char*)(path+len-3),L"com",3*sizeof(WCHAR)) == 0) - || (memcmp((char*)(path+len-3),L"bat",3*sizeof(WCHAR)) == 0)) { + + /* + * Use wide-char case-insensitive comparison + */ + if ((_wcsicmp(path+len-3,L"exe") == 0) + || (_wcsicmp(path+len-3,L"com") == 0) + || (_wcsicmp(path+len-3,L"bat") == 0)) { return 1; } } else { CONST char *p; - + /* We are only looking for pure ascii */ - + p = strrchr((CONST char*)nativePath, '.'); if (p != NULL) { p++; -- cgit v0.12 From 993187d76d965c2c473b790f1c915d65494af65b Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 14 Oct 2004 15:28:36 +0000 Subject: Speed up [info ] --- ChangeLog | 7 ++ generic/tclCmdIL.c | 214 +++++++++++++++++++++++++++++++++++++++------------ generic/tclInt.decls | 6 +- generic/tclUtil.c | 39 +++++++++- 4 files changed, 213 insertions(+), 53 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5f74f81..c0931de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-10-14 Donal K. Fellows + + * generic/tclUtil.c (TclMatchIsTrivial): Detect degenerate cases + of glob matching that let us avoid scanning through hash tables. + * generic/tclCmdIL.c (InfoCommandsCmd, InfoGlobalsCmd, InfoProcsCmd): + (InfoVarsCmd): Use this to speed up some [info] subcommands. + 2004-10-08 Jeff Hobbs * win/tclWinFile.c (NativeIsExec): correct result of 'file diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index d6dbccc..c692ce7 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.2 2003/07/15 15:44:52 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.3 2004/10/14 15:28:38 dkf Exp $ */ #include "tclInt.h" @@ -736,6 +736,14 @@ InfoCommandsCmd(dummy, interp, objc, objv) } /* + * Exit as quickly as possible if we couldn't find the namespace. + */ + + if (nsPtr == NULL) { + return TCL_OK; + } + + /* * Scan through the effective namespace's command table and create a * list with all commands that match the pattern. If a specific * namespace was requested in the pattern, qualify the command names @@ -744,7 +752,33 @@ InfoCommandsCmd(dummy, interp, objc, objv) listPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); - if (nsPtr != NULL) { + if (simplePattern != NULL && TclMatchIsTrivial(simplePattern)) { + /* + * Special case for when the pattern doesn't include any of + * glob's special characters. This lets us avoid scans of any + * hash tables. + */ + entryPtr = Tcl_FindHashEntry(&nsPtr->cmdTable, simplePattern); + if (entryPtr != NULL) { + if (specificNsInPattern) { + cmd = (Tcl_Command) Tcl_GetHashValue(entryPtr); + elemObjPtr = Tcl_NewObj(); + Tcl_GetCommandFullName(interp, cmd, elemObjPtr); + } else { + cmdName = Tcl_GetHashKey(&nsPtr->cmdTable, entryPtr); + elemObjPtr = Tcl_NewStringObj(cmdName, -1); + } + Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr); + } else if ((nsPtr != globalNsPtr) && !specificNsInPattern) { + entryPtr = Tcl_FindHashEntry(&globalNsPtr->cmdTable, + simplePattern); + if (entryPtr != NULL) { + cmdName = Tcl_GetHashKey(&globalNsPtr->cmdTable, entryPtr); + Tcl_ListObjAppendElement(interp, listPtr, + Tcl_NewStringObj(cmdName, -1)); + } + } + } else { entryPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search); while (entryPtr != NULL) { cmdName = Tcl_GetHashKey(&nsPtr->cmdTable, entryPtr); @@ -1060,18 +1094,26 @@ InfoGlobalsCmd(dummy, interp, objc, objv) */ listPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); - for (entryPtr = Tcl_FirstHashEntry(&globalNsPtr->varTable, &search); - entryPtr != NULL; - entryPtr = Tcl_NextHashEntry(&search)) { - varPtr = (Var *) Tcl_GetHashValue(entryPtr); - if (TclIsVarUndefined(varPtr)) { - continue; - } - varName = Tcl_GetHashKey(&globalNsPtr->varTable, entryPtr); - if ((pattern == NULL) || Tcl_StringMatch(varName, pattern)) { - Tcl_ListObjAppendElement(interp, listPtr, - Tcl_NewStringObj(varName, -1)); - } + if (pattern != NULL && TclMatchIsTrivial(pattern)) { + entryPtr = Tcl_FindHashEntry(&globalNsPtr->varTable, pattern); + if (entryPtr != NULL) { + Tcl_ListObjAppendElement(interp, listPtr, + Tcl_NewStringObj(pattern, -1)); + } + } else { + for (entryPtr = Tcl_FirstHashEntry(&globalNsPtr->varTable, &search); + entryPtr != NULL; + entryPtr = Tcl_NextHashEntry(&search)) { + varPtr = (Var *) Tcl_GetHashValue(entryPtr); + if (TclIsVarUndefined(varPtr)) { + continue; + } + varName = Tcl_GetHashKey(&globalNsPtr->varTable, entryPtr); + if ((pattern == NULL) || Tcl_StringMatch(varName, pattern)) { + Tcl_ListObjAppendElement(interp, listPtr, + Tcl_NewStringObj(varName, -1)); + } + } } Tcl_SetObjResult(interp, listPtr); return TCL_OK; @@ -1578,6 +1620,10 @@ InfoProcsCmd(dummy, interp, objc, objv) return TCL_ERROR; } + if (nsPtr == NULL) { + return TCL_OK; + } + /* * Scan through the effective namespace's command table and create a * list with all procs that match the pattern. If a specific @@ -1586,7 +1632,33 @@ InfoProcsCmd(dummy, interp, objc, objv) */ listPtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); - if (nsPtr != NULL) { +#ifndef INFO_PROCS_SEARCH_GLOBAL_NS + if (simplePattern != NULL && TclMatchIsTrivial(simplePattern)) { + entryPtr = Tcl_FindHashEntry(&nsPtr->cmdTable, simplePattern); + if (entryPtr != NULL) { + cmdPtr = (Command *) Tcl_GetHashValue(entryPtr); + + if (!TclIsProc(cmdPtr)) { + realCmdPtr = (Command *) + TclGetOriginalCommand((Tcl_Command) cmdPtr); + if (realCmdPtr != NULL && TclIsProc(realCmdPtr)) { + goto simpleProcOK; + } + } else { + simpleProcOK: + if (specificNsInPattern) { + elemObjPtr = Tcl_NewObj(); + Tcl_GetCommandFullName(interp, (Tcl_Command) cmdPtr, + elemObjPtr); + } else { + elemObjPtr = Tcl_NewStringObj(simplePattern, -1); + } + Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr); + } + } + } else +#endif /* !INFO_PROCS_SEARCH_GLOBAL_NS */ + { entryPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search); while (entryPtr != NULL) { cmdName = Tcl_GetHashKey(&nsPtr->cmdTable, entryPtr); @@ -1594,11 +1666,14 @@ InfoProcsCmd(dummy, interp, objc, objv) || Tcl_StringMatch(cmdName, simplePattern)) { cmdPtr = (Command *) Tcl_GetHashValue(entryPtr); - realCmdPtr = (Command *) - TclGetOriginalCommand((Tcl_Command) cmdPtr); - - if (TclIsProc(cmdPtr) - || ((realCmdPtr != NULL) && TclIsProc(realCmdPtr))) { + if (!TclIsProc(cmdPtr)) { + realCmdPtr = (Command *) + TclGetOriginalCommand((Tcl_Command) cmdPtr); + if (realCmdPtr != NULL && TclIsProc(realCmdPtr)) { + goto procOK; + } + } else { + procOK: if (specificNsInPattern) { elemObjPtr = Tcl_NewObj(); Tcl_GetCommandFullName(interp, (Tcl_Command) cmdPtr, @@ -1606,7 +1681,6 @@ InfoProcsCmd(dummy, interp, objc, objv) } else { elemObjPtr = Tcl_NewStringObj(cmdName, -1); } - Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr); } } @@ -1886,54 +1960,92 @@ InfoVarsCmd(dummy, interp, objc, objv) * only the variables in the effective namespace's variable table. */ - entryPtr = Tcl_FirstHashEntry(&nsPtr->varTable, &search); - while (entryPtr != NULL) { - varPtr = (Var *) Tcl_GetHashValue(entryPtr); - if (!TclIsVarUndefined(varPtr) - || (varPtr->flags & VAR_NAMESPACE_VAR)) { - varName = Tcl_GetHashKey(&nsPtr->varTable, entryPtr); - if ((simplePattern == NULL) - || Tcl_StringMatch(varName, simplePattern)) { + if (simplePattern != NULL && TclMatchIsTrivial(simplePattern)) { + /* + * If we can just do hash lookups, that simplifies things + * a lot. + */ + + entryPtr = Tcl_FindHashEntry(&nsPtr->varTable, simplePattern); + if (entryPtr != NULL) { + varPtr = (Var *) Tcl_GetHashValue(entryPtr); + if (!TclIsVarUndefined(varPtr) + || (varPtr->flags & VAR_NAMESPACE_VAR)) { if (specificNsInPattern) { elemObjPtr = Tcl_NewObj(); Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, - elemObjPtr); + elemObjPtr); } else { - elemObjPtr = Tcl_NewStringObj(varName, -1); + elemObjPtr = Tcl_NewStringObj(simplePattern, -1); } Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr); } + } else if ((nsPtr != globalNsPtr) && !specificNsInPattern) { + entryPtr = Tcl_FindHashEntry(&globalNsPtr->varTable, + simplePattern); + varPtr = (Var *) Tcl_GetHashValue(entryPtr); + if (!TclIsVarUndefined(varPtr) + || (varPtr->flags & VAR_NAMESPACE_VAR)) { + Tcl_ListObjAppendElement(interp, listPtr, + Tcl_NewStringObj(simplePattern, -1)); + } } - entryPtr = Tcl_NextHashEntry(&search); - } - - /* - * If the effective namespace isn't the global :: namespace, and a - * specific namespace wasn't requested in the pattern (i.e., the - * pattern only specifies variable names), then add in all global :: - * variables that match the simple pattern. Of course, add in only - * those variables that aren't hidden by a variable in the effective - * namespace. - */ + } else { + /* + * Have to scan the tables of variables. + */ - if ((nsPtr != globalNsPtr) && !specificNsInPattern) { - entryPtr = Tcl_FirstHashEntry(&globalNsPtr->varTable, &search); + entryPtr = Tcl_FirstHashEntry(&nsPtr->varTable, &search); while (entryPtr != NULL) { varPtr = (Var *) Tcl_GetHashValue(entryPtr); if (!TclIsVarUndefined(varPtr) - || (varPtr->flags & VAR_NAMESPACE_VAR)) { - varName = Tcl_GetHashKey(&globalNsPtr->varTable, - entryPtr); + || (varPtr->flags & VAR_NAMESPACE_VAR)) { + varName = Tcl_GetHashKey(&nsPtr->varTable, entryPtr); if ((simplePattern == NULL) - || Tcl_StringMatch(varName, simplePattern)) { - if (Tcl_FindHashEntry(&nsPtr->varTable, varName) == NULL) { - Tcl_ListObjAppendElement(interp, listPtr, - Tcl_NewStringObj(varName, -1)); + || Tcl_StringMatch(varName, simplePattern)) { + if (specificNsInPattern) { + elemObjPtr = Tcl_NewObj(); + Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, + elemObjPtr); + } else { + elemObjPtr = Tcl_NewStringObj(varName, -1); } + Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr); } } entryPtr = Tcl_NextHashEntry(&search); } + + /* + * If the effective namespace isn't the global :: + * namespace, and a specific namespace wasn't requested in + * the pattern (i.e., the pattern only specifies variable + * names), then add in all global :: variables that match + * the simple pattern. Of course, add in only those + * variables that aren't hidden by a variable in the + * effective namespace. + */ + + if ((nsPtr != globalNsPtr) && !specificNsInPattern) { + entryPtr = Tcl_FirstHashEntry(&globalNsPtr->varTable, &search); + while (entryPtr != NULL) { + varPtr = (Var *) Tcl_GetHashValue(entryPtr); + if (!TclIsVarUndefined(varPtr) + || (varPtr->flags & VAR_NAMESPACE_VAR)) { + varName = Tcl_GetHashKey(&globalNsPtr->varTable, + entryPtr); + if ((simplePattern == NULL) + || Tcl_StringMatch(varName, simplePattern)) { + if (Tcl_FindHashEntry(&nsPtr->varTable, + varName) == NULL) { + Tcl_ListObjAppendElement(interp, listPtr, + Tcl_NewStringObj(varName, -1)); + } + } + } + entryPtr = Tcl_NextHashEntry(&search); + } + } } } else if (((Interp *)interp)->varFramePtr->procPtr != NULL) { AppendLocals(interp, listPtr, simplePattern, 1); diff --git a/generic/tclInt.decls b/generic/tclInt.decls index b8a2291..12afb31 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.59.2.3 2004/06/05 17:25:40 kennykb Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.59.2.4 2004/10/14 15:28:38 dkf Exp $ library tcl @@ -706,6 +706,10 @@ declare 183 generic { struct tm *TclpGmtime(TclpTime_t clock) } +declare 199 generic { + int TclMatchIsTrivial(CONST char *pattern) +} + ############################################################################## # Define the platform specific internal Tcl interface. These functions are diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 8dfe0d9..59872ce 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.36.2.4 2003/08/27 21:31:53 dgp Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.36.2.5 2004/10/14 15:28:39 dkf Exp $ */ #include "tclInt.h" @@ -1395,6 +1395,43 @@ Tcl_StringCaseMatch(string, pattern, nocase) /* *---------------------------------------------------------------------- * + * TclMatchIsTrivial -- + * + * Test whether a particular glob pattern is a trivial pattern. + * (i.e. where matching is the same as equality testing). + * + * Results: + * A boolean indicating whether the pattern is free of all of the + * glob special chars. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +TclMatchIsTrivial(pattern) + CONST char *pattern; +{ + CONST char *p = pattern; + + while (1) { + switch (*p++) { + case '\0': + return 1; + case '*': + case '?': + case '[': + case '\\': + return 0; + } + } +} + +/* + *---------------------------------------------------------------------- + * * Tcl_DStringInit -- * * Initializes a dynamic string, discarding any previous contents -- cgit v0.12 From 569dbadff69d099b3cb99742de1e477c86920b0e Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 14 Oct 2004 15:30:51 +0000 Subject: make genstubs --- generic/tclIntDecls.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclStubInit.c | 18 ++++++++++++++++- 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index feb60c8..2ed9392 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.5 2004/06/10 17:17:43 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.6 2004/10/14 15:30:51 dkf Exp $ */ #ifndef _TCLINTDECLS @@ -515,6 +515,23 @@ EXTERN int TclUniCharMatch _ANSI_ARGS_(( EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t clock)); +/* Slot 184 is reserved */ +/* Slot 185 is reserved */ +/* Slot 186 is reserved */ +/* Slot 187 is reserved */ +/* Slot 188 is reserved */ +/* Slot 189 is reserved */ +/* Slot 190 is reserved */ +/* Slot 191 is reserved */ +/* Slot 192 is reserved */ +/* Slot 193 is reserved */ +/* Slot 194 is reserved */ +/* Slot 195 is reserved */ +/* Slot 196 is reserved */ +/* Slot 197 is reserved */ +/* Slot 198 is reserved */ +/* 199 */ +EXTERN int TclMatchIsTrivial _ANSI_ARGS_((CONST char * pattern)); typedef struct TclIntStubs { int magic; @@ -728,6 +745,22 @@ typedef struct TclIntStubs { void *reserved181; struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t clock)); /* 182 */ struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ + void *reserved184; + void *reserved185; + void *reserved186; + void *reserved187; + void *reserved188; + void *reserved189; + void *reserved190; + void *reserved191; + void *reserved192; + void *reserved193; + void *reserved194; + void *reserved195; + void *reserved196; + void *reserved197; + void *reserved198; + int (*tclMatchIsTrivial) _ANSI_ARGS_((CONST char * pattern)); /* 199 */ } TclIntStubs; #ifdef __cplusplus @@ -1354,6 +1387,25 @@ extern TclIntStubs *tclIntStubsPtr; #define TclpGmtime \ (tclIntStubsPtr->tclpGmtime) /* 183 */ #endif +/* Slot 184 is reserved */ +/* Slot 185 is reserved */ +/* Slot 186 is reserved */ +/* Slot 187 is reserved */ +/* Slot 188 is reserved */ +/* Slot 189 is reserved */ +/* Slot 190 is reserved */ +/* Slot 191 is reserved */ +/* Slot 192 is reserved */ +/* Slot 193 is reserved */ +/* Slot 194 is reserved */ +/* Slot 195 is reserved */ +/* Slot 196 is reserved */ +/* Slot 197 is reserved */ +/* Slot 198 is reserved */ +#ifndef TclMatchIsTrivial +#define TclMatchIsTrivial \ + (tclIntStubsPtr->tclMatchIsTrivial) /* 199 */ +#endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index ebe7f1d..d054577 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.7 2004/06/10 17:17:45 andreas_kupries Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.8 2004/10/14 15:30:52 dkf Exp $ */ #include "tclInt.h" @@ -278,6 +278,22 @@ TclIntStubs tclIntStubs = { NULL, /* 181 */ TclpLocaltime, /* 182 */ TclpGmtime, /* 183 */ + NULL, /* 184 */ + NULL, /* 185 */ + NULL, /* 186 */ + NULL, /* 187 */ + NULL, /* 188 */ + NULL, /* 189 */ + NULL, /* 190 */ + NULL, /* 191 */ + NULL, /* 192 */ + NULL, /* 193 */ + NULL, /* 194 */ + NULL, /* 195 */ + NULL, /* 196 */ + NULL, /* 197 */ + NULL, /* 198 */ + TclMatchIsTrivial, /* 199 */ }; TclIntPlatStubs tclIntPlatStubs = { -- cgit v0.12 From 52d8c7176f0f89ff442c950f4dea8584f15014e3 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sat, 23 Oct 2004 23:30:19 +0000 Subject: whitespace changes --- ChangeLog | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index c0931de..500ff62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,8 +12,8 @@ 2004-10-05 Don Porter - * generic/tclNamesp.c (Tcl_PopCallFrame): Removed Bug 1038021 - workaround. That bug is now fixed. + * generic/tclNamesp.c (Tcl_PopCallFrame): Removed Bug 1038021 + workaround. That bug is now fixed. 2004-09-30 Don Porter @@ -78,15 +78,15 @@ * generic/tclIOGT.c: Channel version fixed, must be 3, to have wideseekProc. Thanks to David Graveraux . -2004-09-11 Don Porter +2004-09-11 Don Porter - * generic/tclNamespace.c (TclGetNamespaceForQualName): Resolved - longstanding inconsistency in the treatment of the TCL_NAMESPACE_ONLY - flag revealed by testing the 2004-09-09 commits against Itcl. - TCL_NAMESPACE_ONLY now acts as specified in the pre-function - comment, forcing resolution in the passed in context namespace. - It has been incorrectly forcing resolution in the interp's current - namespace. + * generic/tclNamespace.c (TclGetNamespaceForQualName): Resolved + longstanding inconsistency in the treatment of the TCL_NAMESPACE_ONLY + flag revealed by testing the 2004-09-09 commits against Itcl. + TCL_NAMESPACE_ONLY now acts as specified in the pre-function + comment, forcing resolution in the passed in context namespace. + It has been incorrectly forcing resolution in the interp's current + namespace. 2004-09-10 Miguel Sofer @@ -181,10 +181,10 @@ 2004-07-28 Don Porter - * generic/tclMain.c (Tcl_Main, StdinProc): Append newline only - * tests/basic.test (basic-46.1): to incomplete scripts - as part of multi-line script construction. Do not add an extra - trailing newline to the complete script. [Bug 833150] + * generic/tclMain.c (Tcl_Main, StdinProc): Append newline only + * tests/basic.test (basic-46.1): to incomplete scripts + as part of multi-line script construction. Do not add an extra + trailing newline to the complete script. [Bug 833150] 2004-07-26 Jeff Hobbs -- cgit v0.12 From 02d8d08520b48fae236b2c0073b0d3e4fcc61845 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 26 Oct 2004 20:14:12 +0000 Subject: * tests/compile.test (compile-12.4): Backport test for Bug 1001997. * tests/timer.test (timer-10.1): Backport test for Bug 1016167. * tests/tcltest.test (tcltest-12.3,4): Backport setup corrections. * tests/error.test (error-6.3,4,7,9): Backport of some tests. * tests/basic.test (basic-49.*): * tests/namespace.test (namespace-8.7): * tests/init.test (init-2.8): Updated to not rely on http package. * generic/tclThreadTest.c (ThreadEventProc): Corrected subtle bug where the returned (char *) from Tcl_GetStringResult(interp) continued to be used without copying or refcounting, while activity on the interp continued. --- ChangeLog | 15 +++++++++++++ generic/tclThreadTest.c | 4 ++-- tests/basic.test | 22 +++++++++++++++++- tests/compile.test | 60 ++++++++++++++++++++++++++++++++++++++++++++++++- tests/error.test | 26 ++++++++++++++++++++- tests/init.test | 19 ++++++++-------- tests/namespace.test | 9 +++++++- tests/tcltest.test | 4 +++- tests/timer.test | 15 +++++++++++-- 9 files changed, 155 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 500ff62..5cdad14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2004-10-26 Don Porter + + * tests/compile.test (compile-12.4): Backport test for Bug 1001997. + * tests/timer.test (timer-10.1): Backport test for Bug 1016167. + * tests/tcltest.test (tcltest-12.3,4): Backport setup corrections. + * tests/error.test (error-6.3,4,7,9): Backport of some tests. + * tests/basic.test (basic-49.*): + * tests/namespace.test (namespace-8.7): + * tests/init.test (init-2.8): Updated to not rely on http package. + + * generic/tclThreadTest.c (ThreadEventProc): Corrected subtle + bug where the returned (char *) from Tcl_GetStringResult(interp) + continued to be used without copying or refcounting, while + activity on the interp continued. + 2004-10-14 Donal K. Fellows * generic/tclUtil.c (TclMatchIsTrivial): Detect degenerate cases diff --git a/generic/tclThreadTest.c b/generic/tclThreadTest.c index c830687..f551746 100644 --- a/generic/tclThreadTest.c +++ b/generic/tclThreadTest.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadTest.c,v 1.16 2002/01/26 01:10:08 dgp Exp $ + * RCS: @(#) $Id: tclThreadTest.c,v 1.16.2.1 2004/10/26 20:14:29 dgp Exp $ */ #include "tclInt.h" @@ -868,13 +868,13 @@ ThreadEventProc(evPtr, mask) code = Tcl_GlobalEval(interp, threadEventPtr->script); Tcl_DeleteThreadExitHandler(ThreadFreeProc, (ClientData) threadEventPtr->script); - result = Tcl_GetStringResult(interp); if (code != TCL_OK) { errorCode = Tcl_GetVar(interp, "errorCode", TCL_GLOBAL_ONLY); errorInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); } else { errorCode = errorInfo = NULL; } + result = Tcl_GetStringResult(interp); } ckfree(threadEventPtr->script); if (resultPtr) { diff --git a/tests/basic.test b/tests/basic.test index 39c9f67..294746f 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.25.2.4 2004/07/28 16:28:21 dgp Exp $ +# RCS: @(#) $Id: basic.test,v 1.25.2.5 2004/10/26 20:14:32 dgp Exp $ # package require tcltest 2 @@ -24,6 +24,7 @@ namespace import -force ::tcltest::* testConstraint testcmdtoken [llength [info commands testcmdtoken]] testConstraint testcmdtrace [llength [info commands testcmdtrace]] testConstraint testcreatecommand [llength [info commands testcreatecommand]] +testConstraint testevalex [llength [info commands testevalex]] testConstraint exec [llength [info commands exec]] # This variable needs to be changed when the major or minor version number for @@ -658,6 +659,25 @@ test basic-47.1 {Tcl_EvalEx: check for missing close-bracket} -body { subst {a[set b [format cd]} } -returnCodes error -result {missing close-bracket} +test basic-49.1 {Tcl_EvalEx: verify TCL_EVAL_GLOBAL operation} testevalex { + set ::x global + namespace eval ns { + variable x namespace + testevalex {set x changed} global + set ::result [list $::x $x] + } + namespace delete ns + set ::result +} {changed namespace} +test basic-49.2 {Tcl_EvalEx: verify TCL_EVAL_GLOBAL operation} testevalex { + set ::x global + namespace eval ns { + variable x namespace + testevalex {set ::context $x} global + } + namespace delete ns + set ::context +} {global} # cleanup catch {eval namespace delete [namespace children :: test_ns_*]} diff --git a/tests/compile.test b/tests/compile.test index 9a7b3b8..69d3d77 100644 --- a/tests/compile.test +++ b/tests/compile.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: compile.test,v 1.24.2.2 2004/03/15 20:34:13 msofer Exp $ +# RCS: @(#) $Id: compile.test,v 1.24.2.3 2004/10/26 20:14:36 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -321,6 +321,64 @@ test compile-12.3 {check for a buffer overrun} { list [catch crash msg] $msg } {1 {syntax error in expression "a+2": variable references require preceding $}} +test compile-12.4 {TclCleanupLiteralTable segfault} { + # Tcl Bug 1001997 + # Here, we're trying to test a case that causes a crash in + # TclCleanupLiteralTable. The conditions that we're trying to + # establish are: + # - TclCleanupLiteralTable is attempting to clean up a bytecode + # object in the literal table. + # - The bytecode object in question contains the only reference + # to another literal. + # - The literal in question is in the same hash bucket as the bytecode + # object, and immediately follows it in the chain. + # Since newly registered literals are added at the FRONT of the + # bucket chains, and since the bytecode object is registered before + # its literals, this is difficult to achieve. What we do is: + # (a) do a [namespace eval] of a string that's calculated to + # hash into the same bucket as a literal that it contains. + # In this case, the script and the variable 'bugbug' + # land in the same bucket. + # (b) do a [namespace eval] of a string that contains enough + # literals to force TclRegisterLiteral to rebuild the global + # literal table. The newly created hash buckets will contain + # the literals, IN REVERSE ORDER, thus putting the bytecode + # immediately ahead of 'bugbug' and 'bug4345bug'. The bytecode + # object will contain the only references to those two literals. + # (c) Delete the interpreter to invoke TclCleanupLiteralTable + # and tickle the bug. + proc foo {} { + set i [interp create] + $i eval { + namespace eval ::w {concat 4649; variable bugbug} + namespace eval ::w { + concat x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 \ + x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 \ + x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 \ + x31 x32 X33 X34 X35 X36 X37 X38 X39 X40 \ + x41 x42 x43 x44 x45 x46 x47 x48 x49 x50 \ + x51 x52 x53 x54 x55 x56 x57 x58 x59 x60 \ + x61 x62 x63 x64 + concat y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 \ + y11 y12 y13 y14 y15 y16 y17 y18 y19 y20 \ + y21 y22 y23 y24 y25 y26 y27 y28 y29 y30 \ + y31 y32 Y33 Y34 Y35 Y36 Y37 Y38 Y39 Y40 \ + y41 y42 y43 y44 y45 y46 y47 y48 y49 y50 \ + y51 y52 y53 y54 y55 y56 y57 y58 y59 y60 \ + y61 y62 y63 y64 + concat z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 \ + z11 z12 z13 z14 z15 z16 z17 z18 z19 z20 \ + z21 z22 z23 z24 z25 z26 z27 z28 z29 z30 \ + z31 z32 + } + } + interp delete $i; # must not crash + return ok + } + foo +} ok + + # Special test for underestimating the maxStackSize required for a # compiled command. A failure will cause a segfault in the child # process. diff --git a/tests/error.test b/tests/error.test index 1d5f9a0..737faa4 100644 --- a/tests/error.test +++ b/tests/error.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: error.test,v 1.9 2002/01/29 03:03:02 hobbs Exp $ +# RCS: @(#) $Id: error.test,v 1.9.2.1 2004/10/26 20:14:36 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -176,6 +176,30 @@ test error-6.1 {catch must reset error state} { catch {error outer [catch {error inner inner.errorInfo inner.errorCode}]} list $errorCode $errorInfo } {NONE 1} +test error-6.3 {catch must reset error state} { + set errorCode BUG + catch {error outer [catch set]} + list $errorCode $errorInfo +} {NONE 1} +test error-6.4 {catch must reset error state} { + catch {error [catch {error foo bar baz}] 1} + list $errorCode $errorInfo +} {NONE 1} +test error-6.7 {catch must reset error state} { + proc foo {} { + return -code error -errorinfo [catch {error foo bar baz}] + } + catch foo + list $errorCode +} {NONE} +test error-6.9 {catch must reset error state} { + proc foo {} { + return -code error [catch {error foo bar baz}] + } + catch foo + list $errorCode +} {NONE} + # cleanup catch {rename p ""} diff --git a/tests/init.test b/tests/init.test index 67a23a6..db97c35 100644 --- a/tests/init.test +++ b/tests/init.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: init.test,v 1.9.2.1 2003/07/18 23:35:39 dgp Exp $ +# RCS: @(#) $Id: init.test,v 1.9.2.2 2004/10/26 20:14:36 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -125,17 +125,16 @@ test init-2.7 {oad setLogCmd from safe:: - stage 2} { } {} -auto_reset -package require http 2.0 -catch {rename ::http::geturl {}} -test init-2.8 {load http::geturl (package)} { +test init-2.8 {load tcl::HistAdd} -setup { + auto_reset + catch {rename ::tcl::HistAdd {}} +} -body { # 3 ':' on purpose - set ret [catch {http:::geturl} error] - # removing it, for the next test. should not fail. - rename ::http::geturl {} ; - list $ret $error -} {1 {wrong # args: should be "http:::geturl url args"}} + list [catch {tcl:::HistAdd} error] $error +} -cleanup { + rename ::tcl::HistAdd {} ; +} -result {1 {wrong # args: should be "tcl:::HistAdd command ?exec?"}} test init-3.0 {random stuff in the auto_index, should still work} { diff --git a/tests/namespace.test b/tests/namespace.test index daa6ecd..542f137 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21.2.3 2004/09/30 22:45:17 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.4 2004/10/26 20:14:36 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -211,6 +211,13 @@ test namespace-8.6 {TclTeardownNamespace: preserve errorInfo; errorCode values} } {bar invoked from within "slave eval error foo bar baz"} +test namespace-8.7 {TclTeardownNamespace: preserve errorInfo; errorCode values} { + interp create slave + slave eval {trace add execution error leave {namespace delete :: ;#}} + catch {slave eval error foo bar baz} + interp delete slave + set ::errorCode +} baz test namespace-9.1 {Tcl_Import, empty import pattern} { catch {eval namespace delete [namespace children :: test_ns_*]} diff --git a/tests/tcltest.test b/tests/tcltest.test index 42797fa..90a87af 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.4 2004/05/26 16:24:38 dgp Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.5 2004/10/26 20:14:37 dgp Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -822,6 +822,7 @@ test tcltest-12.2 {-loadfile load.tcl} {unixOrPc} { test tcltest-12.3 {loadScript} { -setup { set old $::tcltest::loadScript + set ::tcltest::loadScript {} } -body { set f1 [loadScript] @@ -838,6 +839,7 @@ test tcltest-12.3 {loadScript} { test tcltest-12.4 {loadFile} { -setup { set olds $::tcltest::loadScript + set ::tcltest::loadScript {} set oldf $::tcltest::loadFile set ::tcltest::loadFile {} } diff --git a/tests/timer.test b/tests/timer.test index 2b9c9c5..cd76ef0 100644 --- a/tests/timer.test +++ b/tests/timer.test @@ -13,10 +13,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: timer.test,v 1.7 2000/04/10 17:19:05 ericm Exp $ +# RCS: @(#) $Id: timer.test,v 1.7.22.1 2004/10/26 20:14:51 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -537,6 +537,17 @@ test timer-9.1 {AfterCleanupProc procedure} { update set x } {before after2 after4} +test timer-10.1 {Bug 1016167: [after] overwrites imports} -setup { + interp create slave + slave eval namespace export after + slave eval namespace eval foo namespace import ::after +} -body { + slave eval foo::after 1 + slave eval namespace origin foo::after +} -cleanup { + # Bug will cause crash here; would cause failure otherwise + interp delete slave +} -result ::after # cleanup ::tcltest::cleanupTests -- cgit v0.12 From 0b182ee958655b441c2ffc969c501360ff367201 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 26 Oct 2004 20:54:35 +0000 Subject: * tests/subst.test (subst-12.3,4): More tests for Bug 1036649. --- ChangeLog | 2 ++ tests/subst.test | 20 +++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5cdad14..b3d52da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-10-26 Don Porter + * tests/subst.test (subst-12.3,4): More tests for Bug 1036649. + * tests/compile.test (compile-12.4): Backport test for Bug 1001997. * tests/timer.test (timer-10.1): Backport test for Bug 1016167. * tests/tcltest.test (tcltest-12.3,4): Backport setup corrections. diff --git a/tests/subst.test b/tests/subst.test index 8ba5ec9..c6d9344 100644 --- a/tests/subst.test +++ b/tests/subst.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: subst.test,v 1.13.2.4 2004/09/30 10:35:07 msofer Exp $ +# RCS: @(#) $Id: subst.test,v 1.13.2.5 2004/10/26 20:54:52 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -234,8 +234,22 @@ test subst-12.2 {nasty case, Bug 1036649} { } set res } {1 {missing close-bracket}} - - +test subst-12.3 {nasty case, Bug 1036649} { + set x 0 + for {set i 0} {$i < 10} {incr i} { + set res [list [catch {subst "\[incr x;"} msg] $msg] + if {$msg ne "missing close-bracket"} break + } + list $res $x +} {{1 {missing close-bracket}} 0} +test subst-12.4 {nasty case, Bug 1036649} { + set x 0 + for {set i 0} {$i < 10} {incr i} { + set res [list [catch {subst "\[incr x; "} msg] $msg] + if {$msg ne "missing close-bracket"} break + } + list $res $x +} {{1 {missing close-bracket}} 10} # cleanup ::tcltest::cleanupTests -- cgit v0.12 From 1c85487022832a22790e5b4a739bbb64abb85076 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 26 Oct 2004 21:03:28 +0000 Subject: reversed expected result from subst-12.3 to match Tcl 7.6 behavior. --- tests/subst.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/subst.test b/tests/subst.test index c6d9344..30a9ad2 100644 --- a/tests/subst.test +++ b/tests/subst.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: subst.test,v 1.13.2.5 2004/10/26 20:54:52 dgp Exp $ +# RCS: @(#) $Id: subst.test,v 1.13.2.6 2004/10/26 21:03:28 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -241,7 +241,7 @@ test subst-12.3 {nasty case, Bug 1036649} { if {$msg ne "missing close-bracket"} break } list $res $x -} {{1 {missing close-bracket}} 0} +} {{1 {missing close-bracket}} 10} test subst-12.4 {nasty case, Bug 1036649} { set x 0 for {set i 0} {$i < 10} {incr i} { -- cgit v0.12 From a50314f88b2a6af554553927c9c0e590c0acf7dc Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 26 Oct 2004 21:42:33 +0000 Subject: * tests/subst.test (subst-12.3-5): More tests for Bug 1036649. --- ChangeLog | 2 +- tests/subst.test | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b3d52da..f9aaa1f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ 2004-10-26 Don Porter - * tests/subst.test (subst-12.3,4): More tests for Bug 1036649. + * tests/subst.test (subst-12.3-5): More tests for Bug 1036649. * tests/compile.test (compile-12.4): Backport test for Bug 1001997. * tests/timer.test (timer-10.1): Backport test for Bug 1016167. diff --git a/tests/subst.test b/tests/subst.test index 30a9ad2..09e4de2 100644 --- a/tests/subst.test +++ b/tests/subst.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: subst.test,v 1.13.2.6 2004/10/26 21:03:28 dgp Exp $ +# RCS: @(#) $Id: subst.test,v 1.13.2.7 2004/10/26 21:42:53 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -250,6 +250,14 @@ test subst-12.4 {nasty case, Bug 1036649} { } list $res $x } {{1 {missing close-bracket}} 10} +test subst-12.5 {nasty case, Bug 1036649} { + set x 0 + for {set i 0} {$i < 10} {incr i} { + set res [list [catch {subst "\[incr x"} msg] $msg] + if {$msg ne "missing close-bracket"} break + } + list $res $x +} {{1 {missing close-bracket}} 0} # cleanup ::tcltest::cleanupTests -- cgit v0.12 From 7ea5d4dbe8b82a86701cec95132a8a9557a5f105 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 27 Oct 2004 09:35:37 +0000 Subject: Backport many doc fixes --- ChangeLog | 4 +++ doc/after.n | 39 ++++++++++++++++++++- doc/append.n | 12 ++++++- doc/bgerror.n | 18 +++++++++- doc/binary.n | 25 +++++++++++-- doc/break.n | 16 +++++++-- doc/catch.n | 12 +++---- doc/cd.n | 16 ++++++++- doc/clock.n | 6 ++-- doc/close.n | 21 +++++++++-- doc/concat.n | 32 +++++++++-------- doc/continue.n | 16 +++++++-- doc/dde.n | 9 ++++- doc/encoding.n | 4 +-- doc/eof.n | 32 +++++++++++++++-- doc/error.n | 13 +++++-- doc/eval.n | 15 +++++++- doc/exec.n | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++------- doc/exit.n | 24 ++++++++++++- doc/expr.n | 81 +++++++++++++++++++++++++++++++++---------- doc/string.n | 65 ++++++++++++++++++++++------------ 21 files changed, 463 insertions(+), 105 deletions(-) diff --git a/ChangeLog b/ChangeLog index f9aaa1f..9020650 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-10-26 Donal K. Fellows + + * doc/[a-e]*.n: First stage of backporting documentation updates. + 2004-10-26 Don Porter * tests/subst.test (subst-12.3-5): More tests for Bug 1036649. diff --git a/doc/after.n b/doc/after.n index 7e9a767..4db2815 100644 --- a/doc/after.n +++ b/doc/after.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: after.n,v 1.3 2000/09/07 14:27:45 poenitz Exp $ +'\" RCS: @(#) $Id: after.n,v 1.3.18.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH after n 7.5 Tcl "Tcl Built-In Commands" @@ -102,6 +102,43 @@ In applications that are not normally event-driven, such as \fBtclsh\fR, the event loop can be entered with the \fBvwait\fR and \fBupdate\fR commands. +.SH "EXAMPLES" +This defines a command to make Tcl do nothing at all for \fIN\fR +seconds: + +.CS +proc sleep {N} { + \fBafter\fR [expr {int($N * 1000)}] +} +.CE + +This arranges for the command \fIwake_up\fR to be run in eight hours +(providing the event loop is active at that time): + +.CS +\fBafter\fR [expr {1000 * 60 * 60 * 8}] wake_up +.CE + +The following command can be used to do long-running calculations (as +represented here by \fI::my_calc::one_step\fR, which is assumed to +return a boolean indicating whether another step should be performed) +in a step-by-step fashion, though the calculation itself needs to be +arranged so it can work step-wise. This technique is extra careful to +ensure that the event loop is not starved by the rescheduling of +processing steps (arranging for the next step to be done using an +already-triggered timer event only when the event queue has been +drained) and is useful when you want to ensure that a Tk GUI remains +responsive during a slow task. + +.CS +proc doOneStep {} { + if {[::my_calc::one_step]} { + \fBafter\fR idle [list \fBafter\fR 0 doOneStep] + } +} +doOneStep +.CE + .SH "SEE ALSO" bgerror(n), concat(n), update(n), vwait(n) diff --git a/doc/append.n b/doc/append.n index 5f1a3c7..ec0e965 100644 --- a/doc/append.n +++ b/doc/append.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: append.n,v 1.4 2003/02/10 13:32:22 dkf Exp $ +'\" RCS: @(#) $Id: append.n,v 1.4.2.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH append n "" Tcl "Tcl Built-In Commands" @@ -29,6 +29,16 @@ This command provides an efficient way to build up long variables incrementally. For example, ``\fBappend a $b\fR'' is much more efficient than ``\fBset a $a$b\fR'' if \fB$a\fR is long. +.SH EXAMPLE +Building a string of comma-separated numbers piecemeal using a loop. +.CS +set var 0 +for {set i 1} {$i<=10} {incr i} { + \fBappend\fR var "," $i +} +puts $var +# Prints 0,1,2,3,4,5,6,7,8,9,10 +.CE .SH "SEE ALSO" concat(n), lappend(n) diff --git a/doc/bgerror.n b/doc/bgerror.n index a78782f..3addf2d 100644 --- a/doc/bgerror.n +++ b/doc/bgerror.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: bgerror.n,v 1.4 2000/09/07 14:27:45 poenitz Exp $ +'\" RCS: @(#) $Id: bgerror.n,v 1.4.18.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH bgerror n 7.5 Tcl "Tcl Built-In Commands" @@ -71,6 +71,22 @@ the command to be run. The text of the stack trace is appended to the command when it is evaluated. If either of these options is set to the empty string, then the additional button will not be displayed in the dialog. +.PP +If you are writing code that will be used by others as part of a +package or other kind of library, consider avoiding \fBbgerror\fR. +The reason for this is that the application programmer may also want +to define a \fBbgerror\fR, or use other code that does and thus will +have trouble integrating your code. +.SH "EXAMPLE" +This \fBbgerror\fR procedure appends errors to a file, with a timestamp. +.CS +proc bgerror {message} { + set timestamp [clock format [clock seconds]] + set fl [open mylog.txt {WRONLY CREAT APPEND}] + puts $fl "$timestamp: bgerror in $::argv '$message'" + close $fl +} +.CE .SH "SEE ALSO" after(n), tclvars(n) diff --git a/doc/binary.n b/doc/binary.n index 320d94f..4e38f64 100644 --- a/doc/binary.n +++ b/doc/binary.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: binary.n,v 1.11.2.5 2003/07/14 18:26:29 hobbs Exp $ +'\" RCS: @(#) $Id: binary.n,v 1.11.2.6 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH binary n 8.0 Tcl "Tcl Built-In Commands" @@ -634,12 +634,33 @@ by \fIcount\fR. Note that position 0 refers to the first byte in will return \fB2\fR with \fB1 2\fR stored in \fBvar1\fR and \fB020304\fR stored in \fBvar2\fR. .RE - .SH "PLATFORM ISSUES" Sometimes it is desirable to format or scan integer values in the native byte order for the machine. Refer to the \fBbyteOrder\fR element of the \fBtcl_platform\fR array to decide which type character to use when formatting or scanning integers. +.SH EXAMPLES +This is a procedure to write a Tcl string to a binary-encoded channel as +UTF-8 data preceded by a length word: +.CS +proc writeString {channel string} { + set data [encoding convertto utf-8 $string] + puts -nonewline [\fBbinary\fR format Ia* \e + [string length $data] $data] +} +.CE +.PP +This procedure reads a string from a channel that was written by the +previously presented \fBwriteString\fR procedure: +.CS +proc readString {channel} { + if {![\fBbinary\fR scan [read $channel 4] I length]} { + error "missing length" + } + set data [read $channel $length] + return [encoding convertfrom utf-8 $data] +} +.CE .SH "SEE ALSO" format(n), scan(n), tclvars(n) diff --git a/doc/break.n b/doc/break.n index 32432eb..7f7462e 100644 --- a/doc/break.n +++ b/doc/break.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: break.n,v 1.3 2000/09/07 14:27:46 poenitz Exp $ +'\" RCS: @(#) $Id: break.n,v 1.3.18.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH break n "" Tcl "Tcl Built-In Commands" @@ -21,7 +21,7 @@ break \- Abort looping command .PP This command is typically invoked inside the body of a looping command such as \fBfor\fR or \fBforeach\fR or \fBwhile\fR. -It returns a TCL_BREAK code, which causes a break exception +It returns a \fBTCL_BREAK\fR code, which causes a break exception to occur. The exception causes the current script to be aborted out to the innermost containing loop command, which then @@ -29,9 +29,19 @@ aborts its execution and returns normally. Break exceptions are also handled in a few other situations, such as the \fBcatch\fR command, Tk event bindings, and the outermost scripts of procedure bodies. +.SH EXAMPLE +Print a line for each of the integers from 0 to 5: +.CS +for {set x 0} {$x<10} {incr x} { + if {$x > 5} { + \fBbreak\fR + } + puts "x is $x" +} +.CE .SH "SEE ALSO" -catch(n), continue(n), for(n), foreach(n), while(n) +catch(n), continue(n), for(n), foreach(n), return(n), while(n) .SH KEYWORDS abort, break, loop diff --git a/doc/catch.n b/doc/catch.n index 01d0628..5bae0c6 100644 --- a/doc/catch.n +++ b/doc/catch.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: catch.n,v 1.5 2000/09/07 14:27:46 poenitz Exp $ +'\" RCS: @(#) $Id: catch.n,v 1.5.18.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH catch n "8.0" Tcl "Tcl Built-In Commands" @@ -31,7 +31,7 @@ given, then the variable it names is set to the error message from interpreting \fIscript\fR. .PP If \fIscript\fR does not raise an error, \fBcatch\fR will return 0 -(TCL_OK) and set the variable to the value returned from \fIscript\fR. +(\fBTCL_OK\fR) and set the variable to the value returned from \fIscript\fR. .PP Note that \fBcatch\fR catches all exceptions, including those generated by \fBbreak\fR and \fBcontinue\fR as well as errors. The @@ -42,23 +42,21 @@ script is compiled as well and any syntax errors will generate a Tcl error. .SH EXAMPLES - The \fBcatch\fR command may be used in an \fBif\fR to branch based on the success of a script. - .CS -if { [catch {open $someFile w} fid] } { +if { [\fBcatch\fR {open $someFile w} fid] } { puts stderr "Could not open $someFile for writing\\n$fid" exit 1 } .CE +.PP The \fBcatch\fR command will not catch compiled syntax errors. The first time proc \fBfoo\fR is called, the body will be compiled and a Tcl error will be generated. - .CS proc foo {} { - catch {expr {1 +- }} + \fBcatch\fR {expr {1 +- }} } .CE diff --git a/doc/cd.n b/doc/cd.n index b915a67..f42e924 100644 --- a/doc/cd.n +++ b/doc/cd.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: cd.n,v 1.3 2000/09/07 14:27:46 poenitz Exp $ +'\" RCS: @(#) $Id: cd.n,v 1.3.18.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH cd n "" Tcl "Tcl Built-In Commands" @@ -23,6 +23,20 @@ Change the current working directory to \fIdirName\fR, or to the home directory (as specified in the HOME environment variable) if \fIdirName\fR is not given. Returns an empty string. +Note that the current working directory is a per-process resource; the +\fBcd\fR command changes the working directory for all interpreters +and (in a threaded environment) all threads. +.SH EXAMPLES +Change to the home directory of the user \fBfred\fR: +.CS +\fBcd\fR ~fred +.CE +.PP +Change to the directory \fBlib\fR that is a sibling directory of the +current one: +.CS +\fBcd\fR ../lib +.CE .SH "SEE ALSO" filename(n), glob(n), pwd(n) diff --git a/doc/clock.n b/doc/clock.n index 41a1cef..630683e 100644 --- a/doc/clock.n +++ b/doc/clock.n @@ -10,7 +10,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: clock.n,v 1.11.2.2 2004/05/18 21:52:56 kennykb Exp $ +'\" RCS: @(#) $Id: clock.n,v 1.11.2.3 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH clock n 8.4 Tcl "Tcl Built-In Commands" @@ -268,9 +268,9 @@ different results will be given for \fBclock scan "1 day"\fR and \fBclock scan "24 hours"\fR: .CS .ta 6c -\fB% clock scan "1 day" -base [clock scan 1999-10-31] +\fB% \fBclock\fR scan "1 day" -base [\fBclock\fR scan 1999-10-31] 941443200 -% clock scan "24 hours" -base [clock scan 1999-10-31] +% \fBclock\fR scan "24 hours" -base [\fBclock\fR scan 1999-10-31] 941439600\fR .CE .RE diff --git a/doc/close.n b/doc/close.n index 501d282..28fe971 100644 --- a/doc/close.n +++ b/doc/close.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: close.n,v 1.4 2001/09/14 19:20:40 andreas_kupries Exp $ +'\" RCS: @(#) $Id: close.n,v 1.4.8.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH close n 7.5 Tcl "Tcl Built-In Commands" @@ -59,7 +59,24 @@ that all output is correctly flushed before the process exits. .VE .PP The command returns an empty string, and may generate an error if -an error occurs while flushing output. +an error occurs while flushing output. If a command in a command +pipeline created with \fBopen\fR returns an error, \fBclose\fR +generates an error (similar to the \fBexec\fR command.) +.SH EXAMPLE +This illustrates how you can use Tcl to ensure that files get closed +even when errors happen by combining \fBcatch\fR, \fBclose\fR and +\fBreturn\fR: +.CS +proc withOpenFile {filename channelVar script} { + upvar 1 $channelVar chan + set chan [open $filename] + catch { + uplevel 1 $script + } result options + \fBclose\fR $chan + return -options $options $result +} +.CE .SH "SEE ALSO" file(n), open(n), socket(n), eof(n), Tcl_StandardChannels(3) diff --git a/doc/concat.n b/doc/concat.n index 52f4094..aaabe6e 100644 --- a/doc/concat.n +++ b/doc/concat.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: concat.n,v 1.4 2002/07/01 10:50:21 dkf Exp $ +'\" RCS: @(#) $Id: concat.n,v 1.4.2.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH concat n 8.3 Tcl "Tcl Built-In Commands" @@ -20,28 +20,30 @@ concat \- Join lists together .SH DESCRIPTION .PP This command joins each of its arguments together with spaces after -trimming leading and trailing spaces from each of them. If all the +trimming leading and trailing white-space from each of them. If all the arguments are lists, this has the same effect as concatenating them into a single list. -It permits any number of arguments. For example, the command +It permits any number of arguments; +if no \fIarg\fRs are supplied, the result is an empty string. +.SH EXAMPLES +Although \fBconcat\fR will concatenate lists (so the command: .CS -\fBconcat a b {c d e} {f {g h}}\fR +\fBconcat\fR a b {c d e} {f {g h}} .CE -will return +will return "\fBa b c d e f {g h}\fR" as its result), it will also +concatenate things that are not lists, and hence the command: .CS -\fBa b c d e f {g h}\fR +\fBconcat\fR " a b {c " d " e} f" .CE -as its result, and -.CS -\fBconcat " a b {c " d " e} f"\fR -.CE -will return +will return "\fBa b {c d e} f\fR" as its result. +.PP +Note that the concatenation does not remove spaces from the middle of +its arguments, so the command: .CS -\fBa b {c d e} f\fR +\fBconcat\fR "a b c" { d e f } .CE -as its result. -.PP -If no \fIarg\fRs are supplied, the result is an empty string. +will return "\fBa b c d e f\fR" (i.e. with three spaces between +the \fBa\fR, the \fBb\fR and the \fBc\fR). .SH "SEE ALSO" append(n), eval(n) diff --git a/doc/continue.n b/doc/continue.n index 698f9c9..39fe2ed 100644 --- a/doc/continue.n +++ b/doc/continue.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: continue.n,v 1.3 2000/09/07 14:27:46 poenitz Exp $ +'\" RCS: @(#) $Id: continue.n,v 1.3.18.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH continue n "" Tcl "Tcl Built-In Commands" @@ -21,7 +21,7 @@ continue \- Skip to the next iteration of a loop .PP This command is typically invoked inside the body of a looping command such as \fBfor\fR or \fBforeach\fR or \fBwhile\fR. -It returns a TCL_CONTINUE code, which causes a continue exception +It returns a \fBTCL_CONTINUE\fR code, which causes a continue exception to occur. The exception causes the current script to be aborted out to the innermost containing loop command, which then @@ -29,9 +29,19 @@ continues with the next iteration of the loop. Catch exceptions are also handled in a few other situations, such as the \fBcatch\fR command and the outermost scripts of procedure bodies. +.SH EXAMPLE +Print a line for each of the integers from 0 to 10 \fIexcept\fR 5: +.CS +for {set x 0} {$x<10} {incr x} { + if {$x == 5} { + \fBcontinue\fR + } + puts "x is $x" +} +.CE .SH "SEE ALSO" -break(n), for(n), foreach(n), while(n) +break(n), for(n), foreach(n), return(n), while(n) .SH KEYWORDS continue, iteration, loop diff --git a/doc/dde.n b/doc/dde.n index 19b1e66..1e81f87 100644 --- a/doc/dde.n +++ b/doc/dde.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: dde.n,v 1.8 2002/06/27 22:29:08 dgp Exp $ +'\" RCS: @(#) $Id: dde.n,v 1.8.2.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH dde n 1.2 dde "Tcl Bundled Packages" @@ -137,6 +137,13 @@ without adding the \fB&\fR to place the process in the background). If for any reason the event queue is not flushed, DDE commands may hang until the event queue is flushed. This can create a deadlock situation. +.SH EXAMPLE +This asks Internet Explorer (which must already be running) to go to a +particularly important website: +.CS +package require dde +\fBdde\fR execute iexplore WWW_OpenURL http://www.tcl.tk/ +.CE .SH "SEE ALSO" tk(n), winfo(n), send(n) diff --git a/doc/encoding.n b/doc/encoding.n index f2ddbb7..cf59cd1 100644 --- a/doc/encoding.n +++ b/doc/encoding.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: encoding.n,v 1.3.18.1 2003/06/24 21:24:08 dkf Exp $ +'\" RCS: @(#) $Id: encoding.n,v 1.3.18.2 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH encoding n "8.1" Tcl "Tcl Built-In Commands" @@ -71,7 +71,7 @@ of the original string. The \fBencoding\fR command can be used to convert this string to the expected Japanese Unicode characters. For example, .CS - set s [encoding convertfrom euc-jp "\\xA4\\xCF"] +set s [\fBencoding\fR convertfrom euc-jp "\\xA4\\xCF"] .CE would return the Unicode string "\\u306F", which is the Hiragana letter HA. diff --git a/doc/eof.n b/doc/eof.n index ad5f90f..ed93dff 100644 --- a/doc/eof.n +++ b/doc/eof.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: eof.n,v 1.4 2001/09/14 19:20:40 andreas_kupries Exp $ +'\" RCS: @(#) $Id: eof.n,v 1.4.8.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH eof n 7.5 Tcl "Tcl Built-In Commands" @@ -23,12 +23,38 @@ Returns 1 if an end of file condition occurred during the most recent input operation on \fIchannelId\fR (such as \fBgets\fR), 0 otherwise. .PP -.VS \fIChannelId\fR must be an identifier for an open channel such as a Tcl standard channel (\fBstdin\fR, \fBstdout\fR, or \fBstderr\fR), the return value from an invocation of \fBopen\fR or \fBsocket\fR, or the result of a channel creation command provided by a Tcl extension. -.VE +.SH EXAMPLES +Read and print out the contents of a file line-by-line: +.CS +set f [open somefile.txt] +while {1} { + set line [gets $f] + if {[\fBeof\fR $f]} { + close $f + break + } + puts "Read line: $line" +} +.CE +.PP +Read and print out the contents of a file by fixed-size records: +.CS +set f [open somefile.dat] +fconfigure $f -translation binary +set recordSize 40 +while {1} { + set record [read $f $recordSize] + if {[\fBeof\fR $f]} { + close $f + break + } + puts "Read record: $record" +} +.CE .SH "SEE ALSO" file(n), open(n), close(n), fblocked(n), Tcl_StandardChannels(3) diff --git a/doc/error.n b/doc/error.n index 075f5ec..4cfb044 100644 --- a/doc/error.n +++ b/doc/error.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: error.n,v 1.3 2000/09/07 14:27:47 poenitz Exp $ +'\" RCS: @(#) $Id: error.n,v 1.3.18.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH error n "" Tcl "Tcl Built-In Commands" @@ -19,7 +19,7 @@ error \- Generate an error .SH DESCRIPTION .PP -Returns a TCL_ERROR code, which causes command interpretation to be +Returns a \fBTCL_ERROR\fR code, which causes command interpretation to be unwound. \fIMessage\fR is a string that is returned to the application to indicate what went wrong. .PP @@ -53,9 +53,16 @@ If the \fIcode\fR argument is not present, then \fBerrorCode\fR is automatically reset to ``NONE'' by the Tcl interpreter as part of processing the error generated by the command. +.SH EXAMPLE +Generate an error if a basic mathematical operation fails: +.CS +if {1+2 != 3} { + \fBerror\fR "something is very wrong with addition" +} +.CE .SH "SEE ALSO" -catch(n), tclvars(n) +catch(n), return(n), tclvars(n) .SH KEYWORDS error, errorCode, errorInfo diff --git a/doc/eval.n b/doc/eval.n index 76c37f2..8ae0457 100644 --- a/doc/eval.n +++ b/doc/eval.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: eval.n,v 1.4 2002/08/28 14:46:50 dkf Exp $ +'\" RCS: @(#) $Id: eval.n,v 1.4.2.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH eval n "" Tcl "Tcl Built-In Commands" @@ -27,6 +27,19 @@ Tcl interpreter recursively, and returns the result of that evaluation (or any error generated by it). Note that the \fBlist\fR command quotes sequences of words in such a way that they are not further expanded by the \fBeval\fR command. +.SH EXAMPLE +This procedure acts in a way that is analogous to the \fBlappend\fR +command, except it inserts the argument values at the start of the +list in the variable: +.CS +proc lprepend {varName args} { + upvar 1 $varName var + # Ensure that the variable exists and contains a list + lappend var + # Now we insert all the arguments in one go + set var [\fBeval\fR [list linsert $var 0] $args] +} +.CE .SH KEYWORDS concatenate, evaluate, script diff --git a/doc/exec.n b/doc/exec.n index f61db59..6e52ca1 100644 --- a/doc/exec.n +++ b/doc/exec.n @@ -5,14 +5,14 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: exec.n,v 1.6 2002/04/23 19:06:10 hobbs Exp $ +'\" RCS: @(#) $Id: exec.n,v 1.6.2.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH exec n 7.6 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME -exec \- Invoke subprocess(es) +exec \- Invoke subprocesses .SH SYNOPSIS \fBexec \fR?\fIswitches\fR? \fIarg \fR?\fIarg ...\fR? .BE @@ -38,7 +38,7 @@ Normally a trailing newline will be deleted. Marks the end of switches. The argument following this one will be treated as the first \fIarg\fR even if it starts with a \fB\-\fR. .PP -If an \fIarg\fR (or pair of \fIarg\fR's) has one of the forms +If an \fIarg\fR (or pair of \fIarg\fRs) has one of the forms described below then it is used by \fBexec\fR to control the flow of input and output among the subprocess(es). Such arguments will not be passed to the subprocess(es). In forms @@ -217,7 +217,7 @@ example. .br 2) TUI -- Textmode User Interface, any application that accesses the console API for doing such things as cursor movement, setting text color, detecting -key presses and mouse movement, etc... An example would be \fBtelnet.exe\fR +key presses and mouse movement, etc. An example would be \fBtelnet.exe\fR from Windows 2000. These types of applications are not common in a windows environment, but do exist. .RE @@ -225,8 +225,7 @@ environment, but do exist. present, as is done when launching applications under wish. It is desirable to have console applications hidden and detached. This is a designed-in limitation as \fBexec\fR wants to communicate over pipes. The Expect -extension addresses this issue when communication between a TUI application -is desired. +extension addresses this issue when communicating with a TUI application. .sp .RE .TP @@ -254,12 +253,13 @@ The Windows NT home directory. The directories listed in the path. .RE .sp -In order to execute the shell builtin commands like \fBdir\fR and \fBcopy\fR, -the caller must prepend ``\fBcmd.exe /c\0\fR'' to the desired command. +In order to execute shell built-in commands like \fBdir\fR and \fBcopy\fR, +the caller must prepend the desired command with ``\fBcmd.exe /c\0\fR'' +because built-in commands are not implemented using executables. .sp .RE .TP -\fBWindows 95\fR +\fBWindows 9x\fR . When attempting to execute an application, \fBexec\fR first searches for the name as it was specified. Then, in order, \fB.com\fR, \fB.exe\fR, and @@ -274,15 +274,16 @@ The directory from which the Tcl executable was loaded. .br The current directory. .br -The Windows 95 system directory. +The Windows 9x system directory. .br -The Windows 95 home directory. +The Windows 9x home directory. .br The directories listed in the path. .RE .sp -In order to execute the shell builtin commands like \fBdir\fR and \fBcopy\fR, -the caller must prepend ``\fBcommand.com /c\0\fR'' to the desired command. +In order to execute shell built-in commands like \fBdir\fR and \fBcopy\fR, +the caller must prepend the desired command with ``\fBcommand.com /c\0\fR'' +because built-in commands are not implemented using executables. .sp Once a 16-bit DOS application has read standard input from a console and then quit, all subsequently run 16-bit DOS applications will see the @@ -322,6 +323,87 @@ The \fBexec\fR command is not implemented and does not exist under Macintosh. \fBUnix\fR\0\0\0\0\0\0\0 The \fBexec\fR command is fully functional and works as described. +.SH "UNIX EXAMPLES" +Here are some examples of the use of the \fBexec\fR command on Unix. +.PP +To execute a simple program and get its result: +.CS +\fBexec\fR uname -a +.CE +.PP +To execute a program that can return a non-zero result, you should +wrap the call to \fBexec\fR in \fBcatch\fR and check what the contents +of the global \fBerrorCode\fR variable is if you have an error: +.CS +set status 0 +if {[catch {\fBexec\fR grep foo bar.txt} results]} { + if {[lindex $::errorCode 0] eq "CHILDSTATUS"} { + set status [lindex $::errorCode 2] + } else { + # Some kind of unexpected failure + } +} +.CE +.PP +When translating a command from a Unix shell invocation, care should +be taken over the fact that single quote characters have no special +significance to Tcl. Thus: +.CS +awk '{sum += $1} END {print sum}' numbers.list +.CE +would be translated into something like: +.CS +\fBexec\fR awk {{sum += $1} END {print sum}} numbers.list +.CE +.PP +If you are converting invocations involving shell globbing, you should +remember that Tcl does not handle globbing or expand things into +multiple arguments by default. Instead you should write things like +this: +.CS +eval [list \fBexec\fR ls -l] [glob *.tcl] +.CE +.PP +.SH "WINDOWS EXAMPLES" +Here are some examples of the use of the \fBexec\fR command on Windows. +.PP +To start an instance of \fInotepad\fR editing a file without waiting +for the user to finish editing the file: +.CS +\fBexec\fR notepad myfile.txt & +.CE +.PP +To print a text file using \fInotepad\fR: +.CS +\fBexec\fR notepad /p myfile.txt +.CE +.PP +If a program calls other programs, such as is common with compilers, +then you may need to resort to batch files to hide the console windows +that sometimes pop up: +.CS +\fBexec\fR cmp.bat somefile.c -o somefile +.CE +With the file \fIcmp.bat\fR looking something like: +.CS +@gcc %1 %2 %3 %4 %5 %6 %7 %8 %9 +.CE +.PP +Sometimes you need to be careful, as different programs may have the +same name and be in the path. It can then happen that typing a command +at the DOS prompt finds \fIa different program\fR than the same +command run via \fBexec\fR. This is because of the (documented) +differences in behaviour between \fBexec\fR and DOS batch files. +.PP +When in doubt, use the command \fBauto_execok\fR: it will return the +complete path to the program as seen by the \fBexec\fR command. This +applies especially when you want to run "internal" commands like +\fIdir\fR from a Tcl script (if you just want to list filenames, use +the \fBglob\fR command.) To do that, use this: +.CS +eval [list \fBexec\fR] [auto_execok dir] [list *.tcl] +.CE + .SH "SEE ALSO" error(n), open(n) diff --git a/doc/exit.n b/doc/exit.n index 5f72946..f0300a7 100644 --- a/doc/exit.n +++ b/doc/exit.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: exit.n,v 1.3 2000/09/07 14:27:47 poenitz Exp $ +'\" RCS: @(#) $Id: exit.n,v 1.3.18.1 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH exit n "" Tcl "Tcl Built-In Commands" @@ -23,6 +23,28 @@ Terminate the process, returning \fIreturnCode\fR to the system as the exit status. If \fIreturnCode\fR isn't specified then it defaults to 0. +.SH EXAMPLE +Since non-zero exit codes are usually interpreted as error cases by +the calling process, the \fBexit\fR command is an important part of +signalling that something fatal has gone wrong. This code fragment is +useful in scripts to act as a general problem trap: +.CS +proc main {} { + # ... put the real main code in here ... +} + +if {[catch {main} msg]} { + puts stderr "unexpected script error: $msg" + if {[info exist env(DEBUG)]} { + puts stderr "---- BEGIN TRACE ----" + puts stderr $errorInfo + puts stderr "---- END TRACE ----" + } + + # Reserve code 1 for "expected" error exits... + \fBexit\fR 2 +} +.CE .SH "SEE ALSO" exec(n), tclvars(n) diff --git a/doc/expr.n b/doc/expr.n index b43765c..c9c1f81 100644 --- a/doc/expr.n +++ b/doc/expr.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: expr.n,v 1.10.2.1 2003/07/04 22:25:23 dkf Exp $ +'\" RCS: @(#) $Id: expr.n,v 1.10.2.2 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH expr n 8.4 Tcl "Tcl Built-In Commands" @@ -19,7 +19,7 @@ expr \- Evaluate an expression .SH DESCRIPTION .PP -Concatenates \fIarg\fR's (adding separator spaces between them), +Concatenates \fIarg\fRs (adding separator spaces between them), evaluates the result as a Tcl expression, and returns the value. The operators permitted in Tcl expressions are a subset of the operators permitted in C expressions, and they have the @@ -51,9 +51,10 @@ ways accepted by an ANSI-compliant C compiler (except that the \fBf\fR, \fBF\fR, \fBl\fR, and \fBL\fR suffixes will not be permitted in most installations). For example, all of the following are valid floating-point numbers: 2.1, 3., 6e4, 7.91e+16. -If no numeric interpretation is possible, then an operand is left -as a string (and only a limited set of operators may be applied to -it). +If no numeric interpretation is possible (note that all literal +operands that are not numeric or boolean must be quoted with either +braces or with double quotes), then an operand is left as a string +(and only a limited set of operators may be applied to it). .PP .VS 8.4 On 32-bit systems, integer values MAX_INT (0x7FFFFFFF) and MIN_INT @@ -64,33 +65,34 @@ possible at all.) .PP Operands may be specified in any of the following ways: .IP [1] -As an numeric value, either integer or floating-point. +As a numeric value, either integer or floating-point. .IP [2] +As a boolean value, using any form understood by \fBstring is boolean\fR. +.IP [3] As a Tcl variable, using standard \fB$\fR notation. The variable's value will be used as the operand. -.IP [3] +.IP [4] As a string enclosed in double-quotes. The expression parser will perform backslash, variable, and command substitutions on the information between the quotes, and use the resulting value as the operand -.IP [4] +.IP [5] As a string enclosed in braces. The characters between the open brace and matching close brace will be used as the operand without any substitutions. -.IP [5] +.IP [6] As a Tcl command enclosed in brackets. The command will be executed and its result will be used as the operand. -.IP [6] +.IP [7] As a mathematical function whose arguments have any of the above forms for operands, such as \fBsin($x)\fR. See below for a list of defined functions. .LP -Where substitutions occur above (e.g. inside quoted strings), they +Where the above substitutions occur (e.g. inside quoted strings), they are performed by the expression's instructions. -However, an additional layer of substitution may already have -been performed by the command parser before the expression -processor was called. +However, the command parser may already have performed one round of +substitution before the expression processor was called. As discussed below, it is usually best to enclose expressions in braces to prevent the command parser from performing substitutions on the contents. @@ -113,12 +115,12 @@ The valid operators are listed below, grouped in decreasing order of precedence: .TP 20 \fB\-\0\0+\0\0~\0\0!\fR -Unary minus, unary plus, bit-wise NOT, logical NOT. None of these operands +Unary minus, unary plus, bit-wise NOT, logical NOT. None of these operators may be applied to string operands, and bit-wise NOT may be applied only to integers. .TP 20 \fB*\0\0/\0\0%\fR -Multiply, divide, remainder. None of these operands may be +Multiply, divide, remainder. None of these operators may be applied to string operands, and remainder may be applied only to integers. The remainder will always have the same sign as the divisor and @@ -169,7 +171,7 @@ Valid for boolean and numeric (integers or floating-point) operands only. If-then-else, as in C. If \fIx\fR evaluates to non-zero, then the result is the value of \fIy\fR. Otherwise the result is the value of \fIz\fR. -The \fIx\fR operand must have a numeric value. +The \fIx\fR operand must have a boolean or numeric value. .LP See the C manual for more details on the results produced by each operator. @@ -359,7 +361,6 @@ example, \fBexpr 20.0/5.0\fR .CE returns \fB4.0\fR, not \fB4\fR. - .SH "STRING OPERATIONS" .PP String values may be used as operands of the comparison operators, @@ -420,9 +421,51 @@ The most expensive code is required for unbraced expressions that contain command substitutions. These expressions must be implemented by generating new code each time the expression is executed. +.SH EXAMPLES +Define a procedure that computes an "interesting" mathematical +function: +.CS +proc calc {x y} { + \fBexpr\fR { ($x*$x - $y*$y) / exp($x*$x + $y*$y) } +} +.CE +.PP +Convert polar coordinates into cartesian coordinates: +.CS +# convert from ($radius,$angle) +set x [\fBexpr\fR { $radius * cos($angle) }] +set y [\fBexpr\fR { $radius * sin($angle) }] +.CE +.PP +Convert cartesian coordinates into polar coordinates: +.CS +# convert from ($x,$y) +set radius [\fBexpr\fR { hypot($y, $x) }] +set angle [\fBexpr\fR { atan2($y, $x) }] +.CE +.PP +Print a message describing the relationship of two string values to +each other: +.CS +puts "a and b are [\fBexpr\fR {$a eq $b ? {equal} : {different}}]" +.CE +.PP +Set a variable to whether an environment variable is both defined at +all and also set to a true boolean value: +.CS +set isTrue [\fBexpr\fR { + [info exists ::env(SOME_ENV_VAR)] && + [string is true -strict $::env(SOME_ENV_VAR)] +}] +.CE +.PP +Generate a random integer in the range 0..99 inclusive: +.CS +set randNum [\fBexpr\fR { int(100 * rand()) }] +.CE .SH "SEE ALSO" -array(n), string(n), Tcl(n) +array(n), for(n), if(n), string(n), Tcl(n), while(n) .SH KEYWORDS arithmetic, boolean, compare, expression, fuzzy comparison diff --git a/doc/string.n b/doc/string.n index 30c5adb..49ef611 100644 --- a/doc/string.n +++ b/doc/string.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: string.n,v 1.17.2.1 2003/04/11 20:49:53 dgp Exp $ +'\" RCS: @(#) $Id: string.n,v 1.17.2.2 2004/10/27 09:35:38 dkf Exp $ '\" .so man.macros .TH string n 8.1 Tcl "Tcl Built-In Commands" @@ -95,50 +95,50 @@ will be stored in the variable named \fIvarname\fR. The \fIvarname\fR will not be set if the function returns 1. The following character classes are recognized (the class name can be abbreviated): .RS -.IP \fBalnum\fR 10 +.IP \fBalnum\fR 12 Any Unicode alphabet or digit character. -.IP \fBalpha\fR 10 +.IP \fBalpha\fR 12 Any Unicode alphabet character. -.IP \fBascii\fR 10 +.IP \fBascii\fR 12 Any character with a value less than \\u0080 (those that are in the 7\-bit ascii range). -.IP \fBboolean\fR 10 +.IP \fBboolean\fR 12 Any of the forms allowed to \fBTcl_GetBoolean\fR. -.IP \fBcontrol\fR 10 +.IP \fBcontrol\fR 12 Any Unicode control character. -.IP \fBdigit\fR 10 +.IP \fBdigit\fR 12 Any Unicode digit character. Note that this includes characters outside of the [0\-9] range. -.IP \fBdouble\fR 10 +.IP \fBdouble\fR 12 Any of the valid forms for a double in Tcl, with optional surrounding whitespace. In case of under/overflow in the value, 0 is returned and the \fIvarname\fR will contain \-1. -.IP \fBfalse\fR 10 +.IP \fBfalse\fR 12 Any of the forms allowed to \fBTcl_GetBoolean\fR where the value is false. -.IP \fBgraph\fR 10 +.IP \fBgraph\fR 12 Any Unicode printing character, except space. -.IP \fBinteger\fR 10 -Any of the valid forms for a 32-bit integer in Tcl, with optional +.IP \fBinteger\fR 12 +Any of the valid forms for an ordinary integer in Tcl, with optional surrounding whitespace. In case of under/overflow in the value, 0 is returned and the \fIvarname\fR will contain \-1. -.IP \fBlower\fR 10 +.IP \fBlower\fR 12 Any Unicode lower case alphabet character. -.IP \fBprint\fR 10 +.IP \fBprint\fR 12 Any Unicode printing character, including space. -.IP \fBpunct\fR 10 +.IP \fBpunct\fR 12 Any Unicode punctuation character. -.IP \fBspace\fR 10 +.IP \fBspace\fR 12 Any Unicode space character. -.IP \fBtrue\fR 10 +.IP \fBtrue\fR 12 Any of the forms allowed to \fBTcl_GetBoolean\fR where the value is true. -.IP \fBupper\fR 10 +.IP \fBupper\fR 12 Any upper case alphabet character in the Unicode character set. -.IP \fBwordchar\fR 10 +.IP \fBwordchar\fR 12 Any Unicode word character. That is any alphanumeric character, and any Unicode connector punctuation characters (e.g. underscore). -.IP \fBxdigit\fR 10 +.IP \fBxdigit\fR 12 Any hexadecimal digit character ([0\-9A\-Fa\-f]). .PP In the case of \fBboolean\fR, \fBtrue\fR and \fBfalse\fR, if the @@ -172,9 +172,9 @@ number of bytes used to store the string. If the object is a ByteArray object (such as those returned from reading a binary encoded channel), then this will return the actual byte length of the object. .TP -\fBstring map\fR ?\fB\-nocase\fR? \fIcharMap string\fR -Replaces characters in \fIstring\fR based on the key-value pairs in -\fIcharMap\fR. \fIcharMap\fR is a list of \fIkey value key value ...\fR +\fBstring map\fR ?\fB\-nocase\fR? \fImapping string\fR +Replaces substrings in \fIstring\fR based on the key-value pairs in +\fImapping\fR. \fImapping\fR is a list of \fIkey value key value ...\fR as in the form returned by \fBarray get\fR. Each instance of a key in the string will be replaced with its corresponding value. If \fB\-nocase\fR is specified, then matching is done without regard to @@ -188,6 +188,14 @@ will have no affect for later key matches. For example, \fBstring map {abc 1 ab 2 a 3 1 0} 1abcaababcabababc\fR .CE will return the string \fB01321221\fR. +.PP +Note that if an earlier \fIkey\fR is a prefix of a later one, it will +completely mask the later one. So if the previous example is +reordered like this, +.CS +\fBstring map {1 0 ab 2 a 3 abc 1} 1abcaababcabababc\fR +.CE +it will return the string \fB02c322c222c\fR. .RE .TP \fBstring match\fR ?\fB\-nocase\fR? \fIpattern\fR \fIstring\fR @@ -303,6 +311,17 @@ specified as for the \fBindex\fR method. A word is considered to be any contiguous range of alphanumeric (Unicode letters or decimal digits) or underscore (Unicode connector punctuation) characters, or any single character other than these. +.SH EXAMPLE +Test if the string in the variable \fIstring\fR is a proper non-empty +prefix of the string \fBfoobar\fR. +.CS +set length [\fBstring\fR length $string] +if {$length == 0} { + set isPrefix 0 +} else { + set isPrefix [\fBstring\fR equal -length $string $string "foobar"] +} +.CE .SH "SEE ALSO" expr(n), list(n) -- cgit v0.12 From 5bc57d7b0f63d86fc383565d69f7704943fff94d Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 27 Oct 2004 12:52:31 +0000 Subject: More doc fix backporting --- ChangeLog | 2 +- doc/fblocked.n | 38 ++++++++++++++++- doc/fconfigure.n | 63 +++++++++++++++++++++++++++- doc/file.n | 49 +++++++++++++++++++--- doc/fileevent.n | 15 +++---- doc/filename.n | 11 ++++- doc/flush.n | 10 ++++- doc/for.n | 29 +++++++++++-- doc/foreach.n | 8 ++-- doc/format.n | 55 +++++++++++++++++++++--- doc/gets.n | 14 ++++++- doc/glob.n | 34 ++++++++++++++- doc/global.n | 37 ++++++++++++---- doc/history.n | 4 +- doc/http.n | 104 +++++++++++++++++++++++---------------------- doc/if.n | 37 +++++++++++++++- doc/incr.n | 25 ++++++++++- doc/info.n | 32 ++++++++++++-- doc/interp.n | 126 +++++++++++++++++++++++++++++++++++-------------------- doc/join.n | 18 +++++++- doc/lappend.n | 12 +++++- doc/lindex.n | 22 +++++----- doc/linsert.n | 15 +++++-- doc/list.n | 17 ++++---- doc/llength.n | 28 ++++++++++++- doc/load.n | 47 ++++++++++++++++++--- doc/lrange.n | 31 +++++++++++++- doc/lreplace.n | 22 +++++++++- doc/lsearch.n | 19 +++++---- doc/lsort.n | 35 ++++++---------- 30 files changed, 743 insertions(+), 216 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9020650..4570acf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ 2004-10-26 Donal K. Fellows - * doc/[a-e]*.n: First stage of backporting documentation updates. + * doc/[a-l]*.n: First stage of backporting documentation updates. 2004-10-26 Don Porter diff --git a/doc/fblocked.n b/doc/fblocked.n index 7f8fe54..2cb7d85 100644 --- a/doc/fblocked.n +++ b/doc/fblocked.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: fblocked.n,v 1.4 2001/09/14 19:20:40 andreas_kupries Exp $ +'\" RCS: @(#) $Id: fblocked.n,v 1.4.8.1 2004/10/27 12:52:39 dkf Exp $ .so man.macros .TH fblocked n 7.5 Tcl "Tcl Built-In Commands" .BS @@ -31,9 +31,43 @@ Tcl standard channel (\fBstdin\fR, \fBstdout\fR, or \fBstderr\fR), the return value from an invocation of \fBopen\fR or \fBsocket\fR, or the result of a channel creation command provided by a Tcl extension. .VE +.SH EXAMPLE +The \fBfblocked\fR command is particularly useful when writing network +servers, as it allows you to write your code in a line-by-line style +without preventing the servicing of other connections. This can be +seen in this simple echo-service: +.PP +.CS +# This is called whenever a new client connects to the server +proc connect {chan host port} { + set clientName [format <%s:%d> $host $port] + puts "connection from $clientName" + fconfigure $chan -blocking 0 -buffering line + fileevent $chan readable [list echoLine $chan $clientName] +} + +# This is called whenever either at least one byte of input +# data is available, or the channel was closed by the client. +proc echoLine {chan clientName} { + gets $chan line + if {[eof $chan]} { + puts "finishing connection from $clientName" + close $chan + } elseif {![\fBfblocked\fR $chan]} { + # Didn't block waiting for end-of-line + puts "$clientName - $line" + puts $chan $line + } +} + +# Create the server socket and enter the event-loop to wait +# for incoming connections... +socket -server connect 12345 +vwait forever +.CE .SH "SEE ALSO" -gets(n), open(n), read(n), Tcl_StandardChannels(3) +gets(n), open(n), read(n), socket(n), Tcl_StandardChannels(3) .SH KEYWORDS blocking, nonblocking diff --git a/doc/fconfigure.n b/doc/fconfigure.n index d903b55..16b81ad 100644 --- a/doc/fconfigure.n +++ b/doc/fconfigure.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: fconfigure.n,v 1.7.2.1 2003/04/18 00:32:34 dkf Exp $ +'\" RCS: @(#) $Id: fconfigure.n,v 1.7.2.2 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH fconfigure n 8.3 Tcl "Tcl Built-In Commands" @@ -192,7 +192,6 @@ during either input or output. This mode is typically used on UNIX platforms. .RE .PP - .SH "STANDARD CHANNELS" .PP The Tcl standard channels (\fBstdin\fR, \fBstdout\fR, and \fBstderr\fR) @@ -202,6 +201,66 @@ will also support any special option according to their current type. If, for example, a Tcl application is started by the \fBinet\fR super-server common on Unix system its Tcl standard channels will be sockets and thus support the socket options. +.SH EXAMPLES +Instruct Tcl to always send output to \fBstdout\fR immediately, +whether or not it is to a terminal: +.CS +\fBfconfigure\fR stdout -buffering none +.CE +.PP +Open a socket and read lines from it without ever blocking the +processing of other events: +.CS +set s [socket some.where.com 12345] +\fBfconfigure\fR $s -blocking 0 +fileevent $s readable "readMe $s" +proc readMe chan { + if {[gets $chan line] < 0} { + if {[eof $chan]} { + close $chan + return + } + # Could not read a complete line this time; Tcl's + # internal buffering will hold the partial line for us + # until some more data is available over the socket. + } else { + puts stdout $line + } +} +.CE +.PP +Read a PPM-format image from a file: +.CS +# Open the file and put it into Unix ASCII mode +set f [open teapot.ppm] +\fBfconfigure\fR $f \-encoding ascii \-translation lf + +# Get the header +if {[gets $f] ne "P6"} { + error "not a raw\-bits PPM" +} + +# Read lines until we have got non-comment lines +# that supply us with three decimal values. +set words {} +while {[llength $words] < 3} { + gets $f line + if {[string match "#*" $line]} continue + lappend words [eval concat [scan $line %d%d%d]] +} + +# Those words supply the size of the image and its +# overall depth per channel. Assign to variables. +foreach {xSize ySize depth} $words {break} + +# Now switch to binary mode to pull in the data, +# one byte per channel (red,green,blue) per pixel. +\fBfconfigure\fR $f \-translation binary +set numDataBytes [expr {3 * $xSize * $ySize}] +set data [read $f $numDataBytes] + +close $f +.CE .SH "SEE ALSO" close(n), flush(n), gets(n), open(n), puts(n), read(n), socket(n), diff --git a/doc/file.n b/doc/file.n index 7fc2b07..d97f2b0 100644 --- a/doc/file.n +++ b/doc/file.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: file.n,v 1.23 2003/02/28 12:11:49 vincentdarley Exp $ +'\" RCS: @(#) $Id: file.n,v 1.23.2.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH file n 8.3 Tcl "Tcl Built-In Commands" @@ -101,7 +101,7 @@ overwritten unless the \fB\-force\fR option is specified. When copying within a single filesystem, \fIfile copy\fR will copy soft links (i.e. the links themselves are copied, not the things they point to). Trying to overwrite a non-empty directory, overwrite a directory with a file, -or a file with a directory will all result in errors even if +or overwrite a file with a directory will all result in errors even if \fI\-force\fR was specified. Arguments are processed in the order specified, halting at the first error, if any. A \fB\-\|\-\fR marks the end of switches; the argument following the \fB\-\|\-\fR will be @@ -200,8 +200,8 @@ If only one argument is given, that argument is assumed to be seems to be the case with hard links, which look just like ordinary files), then an error is returned. . -If 2 arguments are given, then these are assumed to be \fIlinkName\fR and -\fItarget\fR. If \fIlinkName\fR already exists, or if \fItarget\fR +If 2 arguments are given, then these are assumed to be \fIlinkName\fR +and \fItarget\fR. If \fIlinkName\fR already exists, or if \fItarget\fR doesn't exist, an error will be returned. Otherwise, Tcl creates a new link called \fIlinkName\fR which points to the existing filesystem object at \fItarget\fR, where the type of the link is platform-specific (on Unix @@ -258,14 +258,14 @@ under Windows or AppleScript on the Macintosh. \fBfile normalize \fIname\fR . .RS -Returns a unique normalised path representation for the file-system +Returns a unique normalized path representation for the file-system object (file, directory, link, etc), whose string value can be used as a unique identifier for it. A normalized path is an absolute path which has all '../', './' removed. Also it is one which is in the ``standard'' format for the native platform. On MacOS, Unix, this means the segments leading up to the path must be free of symbolic links/aliases (but the very last path component may be a symbolic link), and on Windows it also -means means we want the long form with that form's case-dependence (which +means we want the long form with that form's case-dependence (which gives us a unique, case-dependent path). The one exception concerning the last link in the path is necessary, because Tcl or the user may wish to operate on the actual symbolic link itself (for example 'file delete', 'file @@ -418,6 +418,43 @@ Returns \fB1\fR if file \fIname\fR is writable by the current user, . These commands always operate using the real user and group identifiers, not the effective ones. +.SH EXAMPLES +This procedure shows how to search for C files in a given directory +that have a correspondingly-named object file in the current +directory: +.CS +proc findMatchingCFiles {dir} { + set files {} + switch $::tcl_platform(platform) { + windows { + set ext .obj + } + unix { + set ext .o + } + } + foreach file [glob -nocomplain -directory $dir *.c] { + set objectFile [\fBfile\fR tail [\fBfile\fR rootname $file]]$ext + if {[\fBfile\fR exists $objectFile]} { + lappend files $file + } + } + return $files +} +.CE +.PP +Rename a file and leave a symbolic link pointing from the old location +to the new place: +.CS +set oldName foobar.txt +set newName foo/bar.txt +# Make sure that where we're going to move to exists... +if {![\fBfile\fR isdirectory [\fBfile\fR dirname $newName]]} { + \fBfile\fR mkdir [\fBfile\fR dirname $newName] +} +\fBfile\fR rename $oldName $newName +\fBfile\fR link -symbolic $oldName $newName +.CE .SH "SEE ALSO" filename(n), open(n), close(n), eof(n), gets(n), tell(n), seek(n), diff --git a/doc/fileevent.n b/doc/fileevent.n index 8e82564..73f2104 100644 --- a/doc/fileevent.n +++ b/doc/fileevent.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: fileevent.n,v 1.5 2001/09/27 05:50:56 andreas_kupries Exp $ +'\" RCS: @(#) $Id: fileevent.n,v 1.5.6.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH fileevent n 7.5 Tcl "Tcl Built-In Commands" @@ -100,21 +100,18 @@ If an error occurs while executing the script then the In addition, the file event handler is deleted if it ever returns an error; this is done in order to prevent infinite loops due to buggy handlers. - .SH EXAMPLE -.PP +In this setup \fBGetData\fR will be called with the channel as an +argument whenever $chan becomes readable. .CS - proc GetData {chan} { +proc GetData {chan} { if {![eof $chan]} { puts [gets $chan] } - } - - fileevent $chan readable [list GetData $chan] +} +\fBfileevent\fR $chan readable [list GetData $chan] .CE -In this setup \fBGetData\fR will be called with the channel as an -argument whenever $chan becomes readable. .SH CREDITS .PP diff --git a/doc/filename.n b/doc/filename.n index c0e2a68..02b102f 100644 --- a/doc/filename.n +++ b/doc/filename.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: filename.n,v 1.7 2001/09/04 18:06:34 vincentdarley Exp $ +'\" RCS: @(#) $Id: filename.n,v 1.7.12.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH filename n 7.5 Tcl "Tcl Built-In Commands" @@ -208,7 +208,14 @@ more than 3 characters. On Windows platforms there are file and path length restrictions. Complete paths or filenames longer than about 260 characters will lead to errors in most file operations. - +.PP +Another Windows peculiarity is that any number of trailing dots '.' in +filenames are totally ignored, so, for example, attempts to create a +file or directory with a name "foo." will result in the creation of a +file/directory with name "foo". This fact is reflected in the +results of 'file normalize'. Furthermore, a file name consisting only +of dots '.........' or dots with trailing characters '.....abc' is +illegal. .SH KEYWORDS current directory, absolute file name, relative file name, volume-relative file name, portability diff --git a/doc/flush.n b/doc/flush.n index 172555c..c94a9af 100644 --- a/doc/flush.n +++ b/doc/flush.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: flush.n,v 1.4 2001/09/14 19:20:40 andreas_kupries Exp $ +'\" RCS: @(#) $Id: flush.n,v 1.4.8.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH flush n 7.5 Tcl "Tcl Built-In Commands" @@ -34,6 +34,14 @@ buffered output has been flushed to the channel. If the channel is in nonblocking mode, the command may return before all buffered output has been flushed; the remainder will be flushed in the background as fast as the underlying file or device is able to absorb it. +.SH EXAMPLE +Prompt for the user to type some information in on the console: +.CS +puts -nonewline "Please type your name: " +\fBflush\fR stdout +gets stdin name +puts "Hello there, $name!" +.CE .SH "SEE ALSO" file(n), open(n), socket(n), Tcl_StandardChannels(3) diff --git a/doc/for.n b/doc/for.n index 5cf267c..08ed1ff 100644 --- a/doc/for.n +++ b/doc/for.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: for.n,v 1.3 2000/09/07 14:27:48 poenitz Exp $ +'\" RCS: @(#) $Id: for.n,v 1.3.18.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH for n "" Tcl "Tcl Built-In Commands" @@ -48,11 +48,32 @@ This is likely to result in an infinite loop. If \fItest\fR is enclosed in braces, variable substitutions are delayed until the expression is evaluated (before each loop iteration), so changes in the variables will be visible. -For an example, try the following script with and without the braces -around \fB$x<10\fR: +See below for an example: +.SH EXAMPLES +Print a line for each of the integers from 0 to 10: .CS for {set x 0} {$x<10} {incr x} { - puts "x is $x" + puts "x is $x" +} +.CE +.PP +Either loop infinitely or not at all because the expression being +evaluated is actually the constant, or even generate an error! The +actual behaviour will depend on whether the variable \fIx\fR exists +before the \fBfor\fR command is run and whether its value is a value +that is less than or greater than/equal to ten, and this is because +the expression will be substituted before the \fBfor\fR command is +executed. +.CS +for {set x 0} $x<10 {incr x} { + puts "x is $x" +} +.CE +.PP +Print out the powers of two from 1 to 1024: +.CS +for {set x 1} {$x<=1024} {set x [expr {$x * 2}]} { + puts "x is $x" } .CE diff --git a/doc/foreach.n b/doc/foreach.n index 09faa2a..9308d05 100644 --- a/doc/foreach.n +++ b/doc/foreach.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: foreach.n,v 1.3 2000/09/07 14:27:48 poenitz Exp $ +'\" RCS: @(#) $Id: foreach.n,v 1.3.18.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH foreach n "" Tcl "Tcl Built-In Commands" @@ -56,7 +56,7 @@ The following loop uses i and j as loop variables to iterate over pairs of elements of a single list. .DS set x {} -foreach {i j} {a b c d e f} { +\fBforeach\fR {i j} {a b c d e f} { lappend x $j $i } # The value of x is "b a d c f e" @@ -66,7 +66,7 @@ foreach {i j} {a b c d e f} { The next loop uses i and j to iterate over two lists in parallel. .DS set x {} -foreach i {a b c} j {d e f g} { +\fBforeach\fR i {a b c} j {d e f g} { lappend x $i $j } # The value of x is "a d b e c f {} g" @@ -76,7 +76,7 @@ foreach i {a b c} j {d e f g} { The two forms are combined in the following example. .DS set x {} -foreach i {a b c} {j k} {d e f g} { +\fBforeach\fR i {a b c} {j k} {d e f g} { lappend x $i $j $k } # The value of x is "a d e b f g c {} {}" diff --git a/doc/format.n b/doc/format.n index b69a8f6..471774c 100644 --- a/doc/format.n +++ b/doc/format.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: format.n,v 1.7 2002/02/19 10:26:24 dkf Exp $ +'\" RCS: @(#) $Id: format.n,v 1.7.2.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH format n 8.1 Tcl "Tcl Built-In Commands" @@ -26,7 +26,6 @@ implementation). \fB%\fR conversion specifiers as in \fBsprintf\fR, and the additional arguments, if any, provide values to be substituted into the result. The return value from \fBformat\fR is the formatted string. - .SH "DETAILS ON FORMATTING" .PP The command operates by scanning \fIformatString\fR from left to right. @@ -133,7 +132,7 @@ truncated to a 16-bit value before converting. This option is rarely useful. .VS 8.4 If it is \fBl\fR it specifies that the numeric value should be (at -least) a 64-bit value. If neither \fBh\fR or \fBl\fR are present, +least) a 64-bit value. If neither \fBh\fR nor \fBl\fR are present, numeric values are interpreted as being values of the width of the native machine word, as described by \fBtcl_platform(wordSize)\fR. .VE @@ -196,7 +195,6 @@ For the numerical conversions the argument being converted must be an integer or floating-point string; format converts the argument to binary and then converts it back to a string according to the conversion specifier. - .SH "DIFFERENCES FROM ANSI SPRINTF" .PP The behavior of the format command is the same as the @@ -218,9 +216,56 @@ of real and integer values, respectively). If the \fBh\fR modifier is specified then integer values are truncated to \fBshort\fR before conversion. Both \fBh\fR and \fBl\fR modifiers are ignored on all other conversions. +.SH EXAMPLES +Convert the output of \fBtime\fR into seconds to an accuracy of +hundredths of a second: +.CS +set us [lindex [time $someTclCode] 0] +puts [\fBformat\fR "%.2f seconds to execute" [expr {$us / 1e6}]] +.CE +.PP +Create a packed X11 literal color specification: +.CS +# Each color-component should be in range (0..255) +set color [\fBformat\fR "#%02x%02x%02x" $r $g $b] +.CE +.PP +Use XPG3 format codes to allow reordering of fields (a technique that +is often used in localized message catalogs; see \fBmsgcat\fR) without +reordering the data values passed to \fBformat\fR: +.CS +set fmt1 "Today, %d shares in %s were bought at $%.2f each" +puts [\fBformat\fR $fmt1 123 "Global BigCorp" 19.37] + +set fmt2 "Bought %2\\$s equity ($%3$.2f x %1\\$d) today" +puts [\fBformat\fR $fmt2 123 "Global BigCorp" 19.37] +.CE +.PP +Print a small table of powers of three: +.CS +# Set up the column widths +set w1 5 +set w2 10 + +# Make a nice header (with separator) for the table first +set sep +-[string repeat - $w1]-+-[string repeat - $w2]-+ +puts $sep +puts [\fBformat\fR "| %-*s | %-*s |" $w1 "Index" $w2 "Power"] +puts $sep + +# Print the contents of the table +set p 1 +for {set i 0} {$i<=20} {incr i} { + puts [\fBformat\fR "| %*d | %*ld |" $w1 $i $w2 $p] + set p [expr {wide($p) * 3}] +} + +# Finish off by printing the separator again +puts $sep +.CE .SH "SEE ALSO" -sprintf(3), string(n) +scan(n), sprintf(3), string(n) .SH KEYWORDS conversion specifier, format, sprintf, string, substitution diff --git a/doc/gets.n b/doc/gets.n index f884d11..9c8c5db 100644 --- a/doc/gets.n +++ b/doc/gets.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: gets.n,v 1.4 2001/09/14 19:20:40 andreas_kupries Exp $ +'\" RCS: @(#) $Id: gets.n,v 1.4.8.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH gets n 7.5 Tcl "Tcl Built-In Commands" @@ -51,6 +51,18 @@ produce the same results as if there were an input line consisting only of the end-of-line character(s). The \fBeof\fR and \fBfblocked\fR commands can be used to distinguish these three cases. +.SH "EXAMPLE" +This example reads a file one line at a time and prints it out with +the current line number attached to the start of each line. +.PP +.CS +set chan [open "some.file.txt"] +set lineNumber 0 +while {[\fBgets\fR $chan line] >= 0} { + puts "[incr lineNumber]: $line" +} +close $chan +.CE .SH "SEE ALSO" file(n), eof(n), fblocked(n), Tcl_StandardChannels(3) diff --git a/doc/glob.n b/doc/glob.n index 15ae60c..871f668 100644 --- a/doc/glob.n +++ b/doc/glob.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: glob.n,v 1.12 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: glob.n,v 1.12.2.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH glob n 8.3 Tcl "Tcl Built-In Commands" @@ -78,6 +78,9 @@ the Unix find command: \fIp\fR (named pipe), or \fIs\fR (socket), where multiple types may be specified in the list. \fBGlob\fR will return all files which match at least one of the types given. +Note that symbolic links will be returned both if \fB\-types l\fR is given, +or if the target of a link matches the requested type. So, a link to +a directory will be returned if \fB\-types d\fR was specified. .RS .PP The second form specifies types where all the types given must match. @@ -149,7 +152,13 @@ command if you want the list sorted). Second, \fBglob\fR only returns the names of files that actually exist; in csh no check for existence is made unless a pattern contains a ?, *, or [] construct. - +.LP +When the \fBglob\fR command returns relative paths whose filenames +start with a tilde ``~'' (for example through \fBglob *\fR or +\fBglob -tails\fR, the returned list will not quote the tilde with +``./''. This means care must be taken if those names are later to +be used with \fBfile join\fR, to avoid them being interpreted as +absolute paths pointing to a given user's home directory. .SH "PORTABILITY ISSUES" .PP Unlike other Tcl commands that will accept both network and native @@ -184,6 +193,27 @@ When using the options, \fB\-directory\fR, \fB\-join\fR or \fB\-path\fR, glob assumes the directory separator for the entire pattern is the standard ``:''. When not using these options, glob examines each pattern argument and uses ``/'' unless the pattern contains a ``:''. +.SH EXAMPLES +Find all the Tcl files in the current directory: +.CS +\fBglob\fR *.tcl +.CE +.PP +Find all the Tcl files in the user's home directory, irrespective of +what the current directory is: +.CS +\fBglob\fR \-directory ~ *.tcl +.CE +.PP +Find all subdirectories of the current directory: +.CS +\fBglob\fR \-type d * +.CE +.PP +Find all files whose name contains an "a", a "b" or the sequence "cde": +.CS +\fBglob\fR \-type f *{a,b,cde}* +.CE .SH "SEE ALSO" file(n) diff --git a/doc/global.n b/doc/global.n index d4fd4c0..ece44a1 100644 --- a/doc/global.n +++ b/doc/global.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: global.n,v 1.4 2002/06/11 13:22:35 msofer Exp $ +'\" RCS: @(#) $Id: global.n,v 1.4.2.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH global n "" Tcl "Tcl Built-In Commands" @@ -19,15 +19,34 @@ global \- Access global variables .SH DESCRIPTION .PP -This command is ignored unless a Tcl procedure is being interpreted. -If so then it declares the given \fIvarname\fR's to be global variables -rather than local ones. -Global variables are variables in the global namespace. -For the duration of the current procedure -(and only while executing in the current procedure), -any reference to any of the \fIvarname\fRs -will refer to the global variable by the same name. +This command has no effect unless executed in the context of a proc body. +If the \fBglobal\fR command is executed in the context of a proc body, it +creates local variables linked to the corresponding global variables (and +therefore these variables are listed by info locals). .PP +If \fIvarname\fR contains namespace qualifiers, the local variable's name is +the unqualified name of the global variable, as determined by the +\fBnamespace tail\fR command. +.SH EXAMPLES +This procedure sets the namespace variable \fI::a::x\fR +.CS +proc reset {} { + \fBglobal\fR a::x + set x 0 +} +.CE +.PP +This procedure accumulates the strings passed to it in a global +buffer, separated by newlines. It is useful for situations when you +want to build a message piece-by-piece (as if with \fBputs\fR) but +send that full message in a single piece (e.g. over a connection +opened with \fBsocket\fR or as part of a counted HTTP response). +.CS +proc accum {string} { + \fBglobal\fR accumulator + append accumulator $string \\n +} +.CE .SH "SEE ALSO" namespace(n), upvar(n), variable(n) diff --git a/doc/history.n b/doc/history.n index 4e0716a..d8beb08 100644 --- a/doc/history.n +++ b/doc/history.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: history.n,v 1.2 1998/09/14 18:39:53 stanton Exp $ +'\" RCS: @(#) $Id: history.n,v 1.2.40.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH history n "" Tcl "Tcl Built-In Commands" @@ -82,7 +82,7 @@ in the history list. It is useful for things like printing the event number in command-line prompts. .TP \fBhistory redo \fR?\fIevent\fR? -Re-executes the command indicated by \fIevent\fR and return its result. +Re-executes the command indicated by \fIevent\fR and returns its result. \fIEvent\fR defaults to \fB\-1\fR. This command results in history revision: see below for details. .SH "HISTORY REVISION" diff --git a/doc/http.n b/doc/http.n index a76e6ff..95efcd6 100644 --- a/doc/http.n +++ b/doc/http.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: http.n,v 1.18.2.2 2004/05/25 22:50:46 hobbs Exp $ +'\" RCS: @(#) $Id: http.n,v 1.18.2.3 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH "http" n 2.5 http "Tcl Bundled Packages" @@ -55,7 +55,7 @@ firewalls. The package is compatible with the \fBSafesock\fR security policy, so it can be used by untrusted applets to do URL fetching from a restricted set of hosts. This package can be extended to support additional HTTP transport protocols, such as HTTPS, by providing -a custom \fBsocket\fR command, via \fBhttp::register\fR. +a custom \fBsocket\fR command, via \fB::http::register\fR. .PP The \fB::http::geturl\fR procedure does a HTTP transaction. Its \fIoptions \fR determine whether a GET, POST, or HEAD transaction @@ -88,7 +88,7 @@ flags and values that define the configuration: \fB\-accept\fP \fImimetypes\fP The Accept header of the request. The default is */*, which means that all types of documents are accepted. Otherwise you can supply a -comma separated list of mime type patterns that you are +comma-separated list of mime type patterns that you are willing to receive. For example, "image/gif, image/jpeg, text/*". .TP \fB\-proxyhost\fP \fIhostname\fP @@ -103,7 +103,7 @@ The command is a callback that is made during \fB::http::geturl\fR to determine if a proxy is required for a given host. One argument, a host name, is added to \fIcommand\fR when it is invoked. If a proxy -is required, the callback should return a two element list containing +is required, the callback should return a two-element list containing the proxy server and proxy port. Otherwise the filter should return an empty list. The default filter returns the values of the \fB\-proxyhost\fR and \fB\-proxyport\fR settings if they are @@ -137,13 +137,13 @@ that is invoked when the HTTP transaction completes. .RS .TP \fB\-binary\fP \fIboolean\fP -Specifies whether to force interpreting the url data as binary. Normally +Specifies whether to force interpreting the URL data as binary. Normally this is auto-detected (anything not beginning with a \fBtext\fR content type or whose content encoding is \fBgzip\fR or \fBcompress\fR is considered binary data). .TP \fB\-blocksize\fP \fIsize\fP -The blocksize used when reading the URL. +The block size used when reading the URL. At most \fIsize\fR bytes are read at once. After each block, a call to the \fB\-progress\fR callback is made (if that option is specified). .TP @@ -217,12 +217,12 @@ proc httpProgress {token total current} { .TP \fB\-query\fP \fIquery\fP This flag causes \fB::http::geturl\fR to do a POST request that passes the -\fIquery\fR to the server. The \fIquery\fR must be a x-url-encoding +\fIquery\fR to the server. The \fIquery\fR must be an x-url-encoding formatted query. The \fB::http::formatQuery\fR procedure can be used to do the formatting. .TP \fB\-queryblocksize\fP \fIsize\fP -The blocksize used when posting query data to the URL. +The block size used when posting query data to the URL. At most \fIsize\fR bytes are written at once. After each block, a call to the @@ -231,7 +231,8 @@ callback is made (if that option is specified). .TP \fB\-querychannel\fP \fIchannelID\fP This flag causes \fB::http::geturl\fR to do a POST request that passes the -data contained in \fIchannelID\fR to the server. The data contained in \fIchannelID\fR must be a x-url-encoding +data contained in \fIchannelID\fR to the server. The data contained in +\fIchannelID\fR must be an x-url-encoding formatted query unless the \fB\-type\fP option below is used. If a Content-Length header is not specified via the \fB\-headers\fR options, \fB::http::geturl\fR attempts to determine the size of the post data @@ -328,18 +329,18 @@ command to execute to create the Tcl \fBchannel\fR. E.g.: package require http package require tls -http::register https 443 ::tls::socket +::http::register https 443 ::tls::socket -set token [http::geturl https://my.secure.site/] +set token [::http::geturl https://my.secure.site/] .CE .RE .TP \fB::http::unregister\fP \fIproto\fP This procedure unregisters a protocol handler that was previously -registered via \fBhttp::register\fR. +registered via \fB::http::register\fR. .SH "ERRORS" -The \fBhttp::geturl\fP procedure will raise errors in the following cases: +The \fB::http::geturl\fP procedure will raise errors in the following cases: invalid command line options, an invalid URL, a URL on a non-existent host, @@ -371,17 +372,17 @@ to know the result of the asynchronous HTTP request, it can call callback does. .PP In any case, you must still call -\fBhttp::cleanup\fP to delete the state array when you're done. +\fB::http::cleanup\fP to delete the state array when you're done. .PP There are other possible results of the HTTP transaction -determined by examining the status from \fBhttp::status\fP. +determined by examining the status from \fB::http::status\fP. These are described below. .TP ok If the HTTP transaction completes entirely, then status will be \fBok\fP. -However, you should still check the \fBhttp::code\fP value to get -the HTTP status. The \fBhttp::ncode\fP procedure provides just -the numeric error (e.g., 200, 404 or 500) while the \fBhttp::code\fP +However, you should still check the \fB::http::code\fP value to get +the HTTP status. The \fB::http::ncode\fP procedure provides just +the numeric error (e.g., 200, 404 or 500) while the \fB::http::code\fP procedure returns a value like "HTTP 404 File not found". .TP eof @@ -392,11 +393,11 @@ error The error message will also be stored in the \fBerror\fP status array element, accessible via \fB::http::error\fP. .PP -Another error possibility is that \fBhttp::geturl\fP is unable to +Another error possibility is that \fB::http::geturl\fP is unable to write all the post query data to the server before the server responds and closes the socket. The error message is saved in the \fBposterror\fP status array -element and then \fBhttp::geturl\fP attempts to complete the +element and then \fB::http::geturl\fP attempts to complete the transaction. If it can read the server's response it will end up with an \fBok\fP status, otherwise it will have @@ -409,9 +410,9 @@ Use this construct to create an easy-to-use array variable: .CS upvar #0 $token state .CE -Once the data associated with the url is no longer needed, the state +Once the data associated with the URL is no longer needed, the state array should be unset to free up storage. -The \fBhttp::cleanup\fP procedure is provided for that purpose. +The \fB::http::cleanup\fP procedure is provided for that purpose. The following elements of the array are supported: .RS @@ -496,38 +497,41 @@ A copy of the \fBContent-Type\fR meta-data value. The requested URL. .RE .SH EXAMPLE -.DS +.CS # Copy a URL to a file and print meta-data -proc ::http::copy { url file {chunk 4096} } { - set out [open $file w] - set token [geturl $url -channel $out -progress ::http::Progress \\ - -blocksize $chunk] - close $out - # This ends the line started by http::Progress - puts stderr "" - upvar #0 $token state - set max 0 - foreach {name value} $state(meta) { - if {[string length $name] > $max} { - set max [string length $name] - } - if {[regexp -nocase ^location$ $name]} { - # Handle URL redirects - puts stderr "Location:$value" - return [copy [string trim $value] $file $chunk] - } - } - incr max - foreach {name value} $state(meta) { - puts [format "%-*s %s" $max $name: $value] - } +proc httpcopy { url file {chunk 4096} } { + set out [open $file w] + set token [\fB::http::geturl\fR $url -channel $out \\ + -progress httpCopyProgress -blocksize $chunk] + close $out + + # This ends the line started by httpCopyProgress + puts stderr "" - return $token + upvar #0 $token state + set max 0 + foreach {name value} $state(meta) { + if {[string length $name] > $max} { + set max [string length $name] + } + if {[regexp -nocase ^location$ $name]} { + # Handle URL redirects + puts stderr "Location:$value" + return [httpcopy [string trim $value] $file $chunk] + } + } + incr max + foreach {name value} $state(meta) { + puts [format "%-*s %s" $max $name: $value] + } + + return $token } -proc ::http::Progress {args} { - puts -nonewline stderr . ; flush stderr +proc httpCopyProgress {args} { + puts -nonewline stderr . + flush stderr } -.DE +.CE .SH "SEE ALSO" safe(n), socket(n), safesock(n) diff --git a/doc/if.n b/doc/if.n index 7f9032f..a23dd5f 100644 --- a/doc/if.n +++ b/doc/if.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: if.n,v 1.3 2000/09/07 14:27:48 poenitz Exp $ +'\" RCS: @(#) $Id: if.n,v 1.3.18.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH if n "" Tcl "Tcl Built-In Commands" @@ -38,6 +38,41 @@ There may be any number of \fBelseif\fR clauses, including zero. The return value from the command is the result of the body script that was executed, or an empty string if none of the expressions was non-zero and there was no \fIbodyN\fR. +.SH EXAMPLES +A simple conditional: +.CS +\fBif\fR {$vbl == 1} { puts "vbl is one" } +.CE +.PP +With an \fBelse\fR-clause: +.CS +\fBif\fR {$vbl == 1} { + puts "vbl is one" +} \fBelse\fR { + puts "vbl is not one" +} +.CE +.PP +With an \fBelseif\fR-clause too: +.CS +\fBif\fR {$vbl == 1} { + puts "vbl is one" +} \fBelseif\fR {$vbl == 2} { + puts "vbl is two" +} \fBelse\fR { + puts "vbl is not one or two" +} +.CE +.PP +Remember, expressions can be multi-line, but in that case it can be a +good idea to use the optional \fBthen\fR keyword for clarity: +.CS +\fBif\fR { + $vbl == 1 || $vbl == 2 || $vbl == 3 +} \fBthen\fR { + puts "vbl is one, two or three" +} +.CE .SH "SEE ALSO" expr(n), for(n), foreach(n) diff --git a/doc/incr.n b/doc/incr.n index 68f3114..7ad644a 100644 --- a/doc/incr.n +++ b/doc/incr.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: incr.n,v 1.3 2000/09/07 14:27:48 poenitz Exp $ +'\" RCS: @(#) $Id: incr.n,v 1.3.18.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH incr n "" Tcl "Tcl Built-In Commands" @@ -26,6 +26,29 @@ integer) is added to the value of variable \fIvarName\fR; otherwise 1 is added to \fIvarName\fR. The new value is stored as a decimal string in variable \fIvarName\fR and also returned as result. +.SH EXAMPLES +Add one to the contents of the variable \fIx\fR: +.CS +\fBincr\fR x +.CE +.PP +Add 42 to the contents of the variable \fIx\fR: +.CS +\fBincr\fR x 42 +.CE +.PP +Add the contents of the variable \fIy\fR to the contents of the +variable \fIx\fR: +.CS +\fBincr\fR x $y +.CE +.PP +Add nothing at all to the variable \fIx\fR (often useful for checking +whether an argument to a procedure is actually numeric and generating +an error if it is not): +.CS +\fBincr\fR x 0 +.CE .SH "SEE ALSO" expr(n) diff --git a/doc/info.n b/doc/info.n index 7f66d39..dc94649 100644 --- a/doc/info.n +++ b/doc/info.n @@ -7,7 +7,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: info.n,v 1.8.2.1 2004/02/13 01:29:16 hobbs Exp $ +'\" RCS: @(#) $Id: info.n,v 1.8.2.2 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH info n 8.4 Tcl "Tcl Built-In Commands" @@ -48,7 +48,7 @@ only those names matching \fIpattern\fR are returned. Matching is determined using the same rules as for \fBstring match\fR. \fIpattern\fR can be a qualified name like \fBFoo::print*\fR. That is, it may specify a particular namespace -using a sequence of namespace names separated by \fB::\fRs, +using a sequence of namespace names separated by double colons (\fB::\fR), and may have pattern matching special characters at the end to specify a set of commands in that namespace. If \fIpattern\fR is a qualified name, @@ -57,7 +57,7 @@ of the specified namespace. .TP \fBinfo complete \fIcommand\fR Returns 1 if \fIcommand\fR is a complete Tcl command in the sense of -having no unclosed quotes, braces, brackets or array element names, +having no unclosed quotes, braces, brackets or array element names. If the command doesn't appear to be complete then 0 is returned. This command is typically used in line-oriented input environments to allow users to type in commands that span multiple lines; if the @@ -163,6 +163,11 @@ only those procedure names in the current namespace matching \fIpattern\fR are returned. Matching is determined using the same rules as for \fBstring match\fR. +If \fIpattern\fR contains any namespace separators, they are used to +select a namespace relative to the current namespace (or relative to +the global namespace if \fIpattern\fR starts with \fB::\fR) to match +within; the matching pattern is taken to be the part after the last +namespace separator. .TP \fBinfo script\fR ?\fIfilename\fR? If a Tcl script file is currently being evaluated (i.e. there is a @@ -193,7 +198,7 @@ are returned. Matching is determined using the same rules as for \fBstring match\fR. \fIpattern\fR can be a qualified name like \fBFoo::option*\fR. That is, it may specify a particular namespace -using a sequence of namespace names separated by \fB::\fRs, +using a sequence of namespace names separated by double colons (\fB::\fR), and may have pattern matching special characters at the end to specify a set of variables in that namespace. If \fIpattern\fR is a qualified name, @@ -202,6 +207,25 @@ has each matching namespace variable qualified with the name of its namespace. Note that a currently-visible variable may not yet "exist" if it has not been set (e.g. a variable declared but not set by \fBvariable\fR). +.SH EXAMPLE +This command prints out a procedure suitable for saving in a Tcl +script: +.CS +proc printProc {procName} { + set result [list proc $procName] + set formals {} + foreach var [\fBinfo\fR args $procName] { + if {[\fBinfo\fR default $procName $var def]} { + lappend formals [list $var $def] + } else { + # Still need the list-quoting because variable + # names may properly contain spaces. + lappend formals [list $var] + } + } + puts [lappend result $formals [\fBinfo\fR body $procName]] +} +.CE .SH "SEE ALSO" global(n), proc(n) diff --git a/doc/interp.n b/doc/interp.n index ac8adfb..a118e50 100644 --- a/doc/interp.n +++ b/doc/interp.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: interp.n,v 1.9 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: interp.n,v 1.9.2.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH interp n 7.6 Tcl "Tcl Built-In Commands" @@ -48,15 +48,16 @@ application's environment. For example, all IO channel creation commands and subprocess creation commands are made inaccessible to safe interpreters. .VS -See SAFE INTERPRETERS below for more information on +See \fBSAFE INTERPRETERS\fR below for more information on what features are present in a safe interpreter. The dangerous functionality is not removed from the safe interpreter; instead, it is \fIhidden\fR, so that only trusted interpreters can obtain access to it. For a detailed explanation of hidden commands, see -HIDDEN COMMANDS, below. +\fBHIDDEN COMMANDS\fR, below. The alias mechanism can be used for protected communication (analogous to a -kernel call) between a slave interpreter and its master. See ALIAS -INVOCATION, below, for more details on how the alias mechanism works. +kernel call) between a slave interpreter and its master. +See \fBALIAS INVOCATION\fR, below, for more details +on how the alias mechanism works. .VE .PP A qualified interpreter name is a proper Tcl lists containing a subset of its @@ -74,27 +75,24 @@ it is impossible to refer to a master (ancestor) interpreter by name in a slave interpreter except through aliases. Also, there is no global name by which one can refer to the first interpreter created in an application. Both restrictions are motivated by safety concerns. - -.VS .SH "THE INTERP COMMAND" .PP -.VE The \fBinterp\fR command is used to create, delete, and manipulate slave interpreters, and to share or transfer channels between interpreters. It can have any of several forms, depending on the \fIoption\fR argument: .TP -\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcCmd\fR +\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcToken\fR Returns a Tcl list whose elements are the \fItargetCmd\fR and -\fIarg\fRs associated with the alias named \fIsrcCmd\fR -(all of these are the values specified when the alias was -created; it is possible that the actual source command in the -slave is different from \fIsrcCmd\fR if it was renamed). +\fIarg\fRs associated with the alias represented by \fIsrcToken\fR +(this is the value returned when the alias was +created; it is possible that the name of the source command in the +slave is different from \fIsrcToken\fR). .TP -\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcCmd\fR \fB{}\fR -Deletes the alias for \fIsrcCmd\fR in the slave interpreter identified by +\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcToken\fR \fB{}\fR +Deletes the alias for \fIsrcToken\fR in the slave interpreter identified by \fIsrcPath\fR. -\fIsrcCmd\fR refers to the name under which the alias +\fIsrcToken\fR refers to the value returned when the alias was created; if the source command has been renamed, the renamed command will be deleted. .TP @@ -119,12 +117,18 @@ in the invocation of \fIsrcCmd\fR. already exist; it is not created by this command. The alias arranges for the given target command to be invoked in the target interpreter whenever the given source command is -invoked in the source interpreter. See ALIAS INVOCATION below for -more details. +invoked in the source interpreter. See \fBALIAS INVOCATION\fR below for +more details. +The command returns a token that uniquely identifies the command created +\fIsrcCmd\fR, even if the command is renamed afterwards. The token may but +does not have to be equal to \fIsrcCmd\fR. .TP \fBinterp\fR \fBaliases \fR?\fIpath\fR? -This command returns a Tcl list of the names of all the source commands for -aliases defined in the interpreter identified by \fIpath\fR. +This command returns a Tcl list of the tokens of all the source commands for +aliases defined in the interpreter identified by \fIpath\fR. The tokens +correspond to the values returned when +the aliases were created (which may not be the same +as the current names of the commands). .TP \fBinterp\fR \fBcreate \fR?\fB\-safe\fR? ?\fB\-\|\-\fR? ?\fIpath\fR? Creates a slave interpreter identified by \fIpath\fR and a new command, @@ -164,6 +168,11 @@ a Tcl script in the slave interpreter identified by \fIpath\fR. The result of this evaluation (including error information such as the \fBerrorInfo\fR and \fBerrorCode\fR variables, if an error occurs) is returned to the invoking interpreter. +Note that the script will be executed in the current context stack frame of the +\fIpath\fR interpreter; this is so that the implementations (in a master +interpreter) of aliases in a slave interpreter can execute scripts in +the slave that find out information about the slave's current state +and stack frame. .TP \fBinterp exists \fIpath\fR Returns \fB1\fR if a slave interpreter by the specified \fIpath\fR @@ -179,7 +188,7 @@ in the interpreter denoted by \fIpath\fR. If an exposed command with the targeted name already exists, this command fails. -Hidden commands are explained in more detail in HIDDEN COMMANDS, below. +Hidden commands are explained in more detail in \fBHIDDEN COMMANDS\fR, below. .TP \fBinterp\fR \fBhide\fR \fIpath\fR \fIexposedCmdName\fR ?\fIhiddenCmdName\fR? Makes the exposed command \fIexposedCmdName\fR hidden, renaming @@ -194,7 +203,7 @@ Commands to be hidden by \fBinterp hide\fR are looked up in the global namespace even if the current namespace is not the global one. This prevents slaves from fooling a master interpreter into hiding the wrong command, by making the current namespace be different from the global one. -Hidden commands are explained in more detail in HIDDEN COMMANDS, below. +Hidden commands are explained in more detail in \fBHIDDEN COMMANDS\fR, below. .TP \fBinterp\fR \fBhidden\fR \fIpath\fR Returns a list of the names of all hidden commands in the interpreter @@ -208,7 +217,7 @@ If the \fB-global\fR flag is present, the hidden command is invoked at the global level in the target interpreter; otherwise it is invoked at the current call frame and can access local variables in that and outer call frames. -Hidden commands are explained in more detail in HIDDEN COMMANDS, below. +Hidden commands are explained in more detail in \fBHIDDEN COMMANDS\fR, below. .VE .TP \fBinterp issafe\fR ?\fIpath\fR? @@ -269,7 +278,6 @@ The target command does not have to be defined at the time of this invocation. Causes the IO channel identified by \fIchannelId\fR to become available in the interpreter identified by \fIdestPath\fR and unavailable in the interpreter identified by \fIsrcPath\fR. - .SH "SLAVE COMMAND" .PP For each slave interpreter created with the \fBinterp\fR command, a @@ -285,22 +293,21 @@ and the \fIarg\fRs determine the exact behavior of the command. The valid forms of this command are: .TP \fIslave \fBaliases\fR -Returns a Tcl list whose elements are the names of all the -aliases in \fIslave\fR. The names returned are the \fIsrcCmd\fR -values used when the aliases were created (which may not be the same -as the current names of the commands, if they have been -renamed). +Returns a Tcl list whose elements are the tokens of all the +aliases in \fIslave\fR. The tokens correspond to the values returned when +the aliases were created (which may not be the same +as the current names of the commands). .TP -\fIslave \fBalias \fIsrcCmd\fR +\fIslave \fBalias \fIsrcToken\fR Returns a Tcl list whose elements are the \fItargetCmd\fR and -\fIarg\fRs associated with the alias named \fIsrcCmd\fR -(all of these are the values specified when the alias was +\fIarg\fRs associated with the alias represented by \fIsrcToken\fR +(this is the value returned when the alias was created; it is possible that the actual source command in the -slave is different from \fIsrcCmd\fR if it was renamed). +slave is different from \fIsrcToken\fR). .TP -\fIslave \fBalias \fIsrcCmd \fB{}\fR -Deletes the alias for \fIsrcCmd\fR in the slave interpreter. -\fIsrcCmd\fR refers to the name under which the alias +\fIslave \fBalias \fIsrcToken \fB{}\fR +Deletes the alias for \fIsrcToken\fR in the slave interpreter. +\fIsrcToken\fR refers to the value returned when the alias was created; if the source command has been renamed, the renamed command will be deleted. .TP @@ -310,7 +317,10 @@ in \fIslave\fR, \fItargetCmd\fR is invoked in the master. The \fIarg\fR arguments will be passed to \fItargetCmd\fR as additional arguments, prepended before any arguments passed in the invocation of \fIsrcCmd\fR. -See ALIAS INVOCATION below for details. +See \fBALIAS INVOCATION\fR below for details. +The command returns a token that uniquely identifies the command created +\fIsrcCmd\fR, even if the command is renamed afterwards. The token may but +does not have to be equal to \fIsrcCmd\fR. .TP \fIslave \fBeval \fIarg \fR?\fIarg ..\fR? This command concatenates all of the \fIarg\fR arguments in @@ -319,6 +329,11 @@ the resulting string as a Tcl script in \fIslave\fR. The result of this evaluation (including error information such as the \fBerrorInfo\fR and \fBerrorCode\fR variables, if an error occurs) is returned to the invoking interpreter. +Note that the script will be executed in the current context stack frame +of \fIslave\fR; this is so that the implementations (in a master +interpreter) of aliases in a slave interpreter can execute scripts in +the slave that find out information about the slave's current state +and stack frame. .VS "" BR .TP \fIslave \fBexpose \fIhiddenName \fR?\fIexposedCmdName\fR? @@ -328,12 +343,12 @@ accepted only if it is a valid global name space name without any ::), in \fIslave\fR. If an exposed command with the targeted name already exists, this command fails. -For more details on hidden commands, see HIDDEN COMMANDS, below. +For more details on hidden commands, see \fBHIDDEN COMMANDS\fR, below. .TP \fIslave \fBhide \fIexposedCmdName\fR ?\fIhiddenCmdName\fR? This command hides the exposed command \fIexposedCmdName\fR, renaming it to the hidden command \fIhiddenCmdName\fR, or keeping the same name if the -the argument is not given, in the \fIslave\fR interpreter. +argument is not given, in the \fIslave\fR interpreter. If a hidden command with the targeted name already exists, this command fails. Currently both \fIexposedCmdName\fR and \fIhiddenCmdName\fR can @@ -342,7 +357,7 @@ Commands to be hidden are looked up in the global namespace even if the current namespace is not the global one. This prevents slaves from fooling a master interpreter into hiding the wrong command, by making the current namespace be different from the global one. -For more details on hidden commands, see HIDDEN COMMANDS, below. +For more details on hidden commands, see \fBHIDDEN COMMANDS\fR, below. .TP \fIslave \fBhidden\fR Returns a list of the names of all hidden commands in \fIslave\fR. @@ -354,8 +369,8 @@ applied to the arguments. If the \fB-global\fR flag is given, the command is invoked at the global level in the slave; otherwise it is invoked at the current call frame and can access local variables in that or outer call frames. -For more details on hidden commands, see HIDDEN -COMMANDS, below. +For more details on hidden commands, +see \fBHIDDEN COMMANDS\fR, below. .VE .TP \fIslave \fBissafe\fR @@ -433,7 +448,7 @@ creates a safe interpreter: .DS .ta 1.2i 2.4i 3.6i \fBcd encoding exec exit -fconfigure file glob load +fconfigure file glob load open pwd socket source\fR .DE These commands can be recreated later as Tcl procedures or aliases, or @@ -487,7 +502,6 @@ management of extensions for safety see the manual entries for .PP A safe interpreter may not alter the recursion limit of any interpreter, including itself. - .SH "ALIAS INVOCATION" .PP The alias mechanism has been carefully designed so that it can @@ -528,7 +542,6 @@ evaluated or substituted, since this would provide an escape mechanism whereby the slave interpreter could execute arbitrary code in the master. This in turn would compromise the security of the system. - .VS .SH "HIDDEN COMMANDS" .PP @@ -571,7 +584,7 @@ handling an alias invocation, great care must be taken to avoid evaluating any arguments passed in through the alias invocation. Otherwise, malicious slave interpreters could cause a trusted master interpreter to execute dangerous commands on their behalf. See the section -on ALIAS INVOCATION for a more complete discussion of this topic. +on \fBALIAS INVOCATION\fR for a more complete discussion of this topic. To help avoid this problem, no substitutions or evaluations are applied to arguments of \fBinterp invokehidden\fR. .PP @@ -602,6 +615,27 @@ command, by making the current namespace be different from the global one. .PP This mechanism is based on the Safe-Tcl prototype implemented by Nathaniel Borenstein and Marshall Rose. +.SH EXAMPLES +Creating and using an alias for a command in the current interpreter: +.CS +\fBinterp\fR alias {} getIndex {} lsearch {alpha beta gamma delta} +set idx [getIndex delta] +.CE +.PP +Executing an arbitrary command in a safe interpreter where every +invokation of \fBlappend\fR is logged: +.CS +set i [\fBinterp\fR create -safe] +\fBinterp\fR hide $i lappend +\fBinterp\fR alias $i lappend {} loggedLappend $i +proc loggedLappend {i args} { + puts "logged invokation of lappend $args" + # Be extremely careful about command construction + eval [linsert $args 0 \\ + \fBinterp\fR invokehidden $i lappend] +} +\fBinterp\fR eval $i $someUntrustedScript +.CE .SH "SEE ALSO" load(n), safe(n), Tcl_CreateSlave(3) diff --git a/doc/join.n b/doc/join.n index 45c6bda..79f85d2 100644 --- a/doc/join.n +++ b/doc/join.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: join.n,v 1.3 2000/09/07 14:27:48 poenitz Exp $ +'\" RCS: @(#) $Id: join.n,v 1.3.18.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH join n "" Tcl "Tcl Built-In Commands" @@ -24,9 +24,23 @@ This command returns the string formed by joining all of the elements of \fIlist\fR together with \fIjoinString\fR separating each adjacent pair of elements. The \fIjoinString\fR argument defaults to a space character. +.SH EXAMPLES +Making a comma-separated list: +.CS +set data {1 2 3 4 5} +\fBjoin\fR $data ", " + \fB=> 1, 2, 3, 4, 5\fR +.CE +.PP +Using \fBjoin\fR to flatten a list by a single level: +.CS +set data {1 {2 3} 4 {5 {6 7} 8}} +\fBjoin\fR $data + \fB=> 1 2 3 4 5 {6 7} 8\fR +.CE .SH "SEE ALSO" -list(n), lappend(n) +list(n), lappend(n), split(n) .SH KEYWORDS element, join, list, separator diff --git a/doc/lappend.n b/doc/lappend.n index 6a0d9bc..a79caf1 100644 --- a/doc/lappend.n +++ b/doc/lappend.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lappend.n,v 1.6 2001/11/14 23:38:39 hobbs Exp $ +'\" RCS: @(#) $Id: lappend.n,v 1.6.4.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH lappend n "" Tcl "Tcl Built-In Commands" @@ -31,6 +31,16 @@ This command provides a relatively efficient way to build up large lists. For example, ``\fBlappend a $b\fR'' is much more efficient than ``\fBset a [concat $a [list $b]]\fR'' when \fB$a\fR is long. +.SH EXAMPLE +Using \fBlappend\fR to build up a list of numbers. +.CS +% set var 1 +1 +% \fBlappend\fR var 2 +1 2 +% \fBlappend\fR var 3 4 5 +1 2 3 4 5 +.CE .SH "SEE ALSO" list(n), lindex(n), linsert(n), llength(n), diff --git a/doc/lindex.n b/doc/lindex.n index 81e8bd0..04ba9e1 100644 --- a/doc/lindex.n +++ b/doc/lindex.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lindex.n,v 1.7 2001/11/14 23:15:33 hobbs Exp $ +'\" RCS: @(#) $Id: lindex.n,v 1.7.4.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH lindex n 8.4 Tcl "Tcl Built-In Commands" @@ -69,16 +69,16 @@ lindex [lindex [lindex $a 1] 2] 3 .CE .SH EXAMPLES .CS -lindex {a b c} => a b c -lindex {a b c} {} => a b c -lindex {a b c} 0 => a -lindex {a b c} 2 => c -lindex {a b c} end => c -lindex {a b c} end-1 => b -lindex {{a b c} {d e f} {g h i}} 2 1 => h -lindex {{a b c} {d e f} {g h i}} {2 1} => h -lindex {{{a b} {c d}} {{e f} {g h}}} 1 1 0 => g -lindex {{{a b} {c d}} {{e f} {g h}}} {1 1 0} => g +\fBlindex\fR {a b c} \fI=> a b c\fR +\fBlindex\fR {a b c} {} \fI=> a b c\fR +\fBlindex\fR {a b c} 0 \fI=> a\fR +\fBlindex\fR {a b c} 2 \fI=> c\fR +\fBlindex\fR {a b c} end \fI=> c\fR +\fBlindex\fR {a b c} end-1 \fI=> b\fR +\fBlindex\fR {{a b c} {d e f} {g h i}} 2 1 \fI=> h\fR +\fBlindex\fR {{a b c} {d e f} {g h i}} {2 1} \fI=> h\fR +\fBlindex\fR {{{a b} {c d}} {{e f} {g h}}} 1 1 0 \fI=> g\fR +\fBlindex\fR {{{a b} {c d}} {{e f} {g h}}} {1 1 0} \fI=> g\fR .CE .VE .SH "SEE ALSO" diff --git a/doc/linsert.n b/doc/linsert.n index 3a0a66d..8119955 100644 --- a/doc/linsert.n +++ b/doc/linsert.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: linsert.n,v 1.7 2001/11/14 23:38:39 hobbs Exp $ +'\" RCS: @(#) $Id: linsert.n,v 1.7.4.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH linsert n 8.2 Tcl "Tcl Built-In Commands" @@ -21,7 +21,7 @@ linsert \- Insert elements into a list .SH DESCRIPTION .PP This command produces a new list from \fIlist\fR by inserting all of the -\fIelement\fR arguments just before the \fIindex\fRth element of +\fIelement\fR arguments just before the \fIindex\fR'th element of \fIlist\fR. Each \fIelement\fR argument will become a separate element of the new list. If \fIindex\fR is less than or equal to zero, then the new elements are inserted at the beginning of the list. If \fIindex\fR has the @@ -29,7 +29,16 @@ value \fBend\fR, or if it is greater than or equal to the number of elements in the list, then the new elements are appended to the list. \fBend\-\fIinteger\fR refers to the last element in the list minus the specified integer offset. - +.SH EXAMPLE +Putting some values into a list, first indexing from the start and +then indexing from the end, and then chaining them together: +.CS +set oldList {the fox jumps over the dog} +set midList [\fBlinsert\fR $oldList 1 quick] +set newList [\fBlinsert\fR $midList end-1 lazy] +# The old lists still exist though... +set newerList [\fBlinsert\fR [\fBlinsert\fR $oldList end-1 quick] 1 lazy] +.CE .SH "SEE ALSO" .VS 8.4 diff --git a/doc/list.n b/doc/list.n index 19a9034..cf41408 100644 --- a/doc/list.n +++ b/doc/list.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: list.n,v 1.7 2001/12/05 22:26:43 dgp Exp $ +'\" RCS: @(#) $Id: list.n,v 1.7.4.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH list n "" Tcl "Tcl Built-In Commands" @@ -29,13 +29,14 @@ so that \fBeval\fR may be used to execute the resulting list, with its arguments. \fBList\fR produces slightly different results than \fBconcat\fR: \fBconcat\fR removes one level of grouping before forming the list, while \fBlist\fR works directly from the original arguments. -For example, the command +.SH EXAMPLE +The command .CS -\fBlist a b {c d e} {f {g h}}\fR +\fBlist\fR a b "c d e " " f {g h}" .CE will return .CS -\fBa b {c d e} {f {g h}}\fR +\fBa b {c d e } { f {g h}}\fR .CE while \fBconcat\fR with the same arguments will return .CS @@ -43,12 +44,12 @@ while \fBconcat\fR with the same arguments will return .CE .SH "SEE ALSO" -lappend(n), lindex(n), linsert(n), llength(n), lsearch(n), +lappend(n), lindex(n), linsert(n), llength(n), lrange(n), +lreplace(n), lsearch(n), .VS 8.4 lset(n), -.VE -lsort(n), -lrange(n), lreplace(n) +.VE 8.4 +lsort(n) .SH KEYWORDS element, list diff --git a/doc/llength.n b/doc/llength.n index 68dd1d8..fbec234 100644 --- a/doc/llength.n +++ b/doc/llength.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: llength.n,v 1.6 2001/11/14 23:38:39 hobbs Exp $ +'\" RCS: @(#) $Id: llength.n,v 1.6.4.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH llength n "" Tcl "Tcl Built-In Commands" @@ -23,6 +23,32 @@ llength \- Count the number of elements in a list Treats \fIlist\fR as a list and returns a decimal string giving the number of elements in it. +.SH EXAMPLES +The result is the number of elements: +.CS +% \fBllength\fR {a b c d e} +5 +% \fBllength\fR {a b c} +3 +% \fBllength\fR {} +0 +.CE +.PP +Elements are not guaranteed to be exactly words in a dictionary sense +of course, especially when quoting is used: +.CS +% \fBllength\fR {a b {c d} e} +4 +% \fBllength\fR {a b { } c d e} +6 +.CE +.PP +An empty list is not necessarily an empty string: +.CS +% set var { }; puts "[string length $var],[\fBllength\fR $var]" +1,0 +.CE + .SH "SEE ALSO" .VS 8.4 list(n), lappend(n), lindex(n), linsert(n), lsearch(n), diff --git a/doc/load.n b/doc/load.n index 5f404e1..ea5c7f3 100644 --- a/doc/load.n +++ b/doc/load.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: load.n,v 1.7 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: load.n,v 1.7.2.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH load n 7.5 Tcl "Tcl Built-In Commands" @@ -105,7 +105,6 @@ package by that name, and uses it if it is found. If several different files have been \fBload\fRed with different versions of the package, Tcl picks the file that was loaded first. .VE - .SH "PORTABILITY ISSUES" .TP \fBWindows\fR\0\0\0\0\0 @@ -116,17 +115,55 @@ type ``dumpbin -imports '' in a DOS console to see what the library must import. When loading a DLL in the current directory, Windows will ignore ``./'' as a path specifier and use a search heuristic to find the DLL instead. -To avoid this, load the DLL with +To avoid this, load the DLL with: .CS - load [file join [pwd] mylib.DLL] +\fBload\fR [file join [pwd] mylib.DLL] .CE - .SH BUGS .PP If the same file is \fBload\fRed by different \fIfileName\fRs, it will be loaded into the process's address space multiple times. The behavior of this varies from system to system (some systems may detect the redundant loads, others may not). +.SH EXAMPLE +The following is a minimal extension: +.PP +.CS +#include +#include +static int fooCmd(ClientData clientData, + Tcl_Interp *interp, int objc, char * CONST objv[]) { + printf("called with %d arguments\\n", objc); + return TCL_OK; +} +int Foo_Init(Tcl_Interp *interp) { + if (Tcl_InitStubs(interp, "8.1", 0) == NULL) { + return TCL_ERROR; + } + printf("creating foo command"); + Tcl_CreateObjCommand(interp, "foo", fooCmd, NULL, NULL); + return TCL_OK; +} +.CE +.PP +When built into a shared/dynamic library with a suitable name +(e.g. \fBfoo.dll\fR on Windows, \fBlibfoo.so\fR on Solaris and Linux) +it can then be loaded into Tcl with the following: +.PP +.CS +# Load the extension +switch $tcl_platform(platform) { + windows { + \fBload\fR ./foo.dll + } + unix { + \fBload\fR ./libfoo[info sharedlibextension] + } +} + +# Now execute the command defined by the extension +foo +.CE .SH "SEE ALSO" info sharedlibextension, Tcl_StaticPackage(3), safe(n) diff --git a/doc/lrange.n b/doc/lrange.n index bafc0a2..9274f35 100644 --- a/doc/lrange.n +++ b/doc/lrange.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lrange.n,v 1.6 2001/11/14 23:38:39 hobbs Exp $ +'\" RCS: @(#) $Id: lrange.n,v 1.6.4.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH lrange n 7.4 Tcl "Tcl Built-In Commands" @@ -35,6 +35,35 @@ Note: ``\fBlrange \fIlist first first\fR'' does not always produce the same result as ``\fBlindex \fIlist first\fR'' (although it often does for simple fields that aren't enclosed in braces); it does, however, produce exactly the same results as ``\fBlist [lindex \fIlist first\fB]\fR'' +.SH EXAMPLES +Selecting the first two elements: +.CS +% \fBlrange\fR {a b c d e} 0 1 +a b +.CE +.PP +Selecting the last three elements: +.CS +% \fBlrange\fR {a b c d e} end-2 end +c d e +.CE +.PP +Selecting everything except the first and last element: +.CS +% \fBlrange\fR {a b c d e} 1 end-1 +b c d +.CE +.PP +Selecting a single element with \fBlrange\fR is not the same as doing +so with \fBlindex\fR: +.CS +% set var {some {elements to} select} +some {elements to} select +% lindex $var 1 +elements to +% \fBlrange\fR $var 1 1 +{elements to} +.CE .SH "SEE ALSO" .VS 8.4 diff --git a/doc/lreplace.n b/doc/lreplace.n index 02164ac..cf059a6 100644 --- a/doc/lreplace.n +++ b/doc/lreplace.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lreplace.n,v 1.8 2001/11/14 23:38:39 hobbs Exp $ +'\" RCS: @(#) $Id: lreplace.n,v 1.8.4.1 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH lreplace n 7.4 Tcl "Tcl Built-In Commands" @@ -43,6 +43,26 @@ Each \fIelement\fR argument will become a separate element of the list. If no \fIelement\fR arguments are specified, then the elements between \fIfirst\fR and \fIlast\fR are simply deleted. If \fIlist\fR is empty, any \fIelement\fR arguments are added to the end of the list. +.SH EXAMPLES +Replacing an element of a list with another: +.CS +% \fBlreplace\fR {a b c d e} 1 1 foo +a foo c d e +.CE +.PP +Replacing two elements of a list with three: +.CS +% \fBlreplace\fR {a b c d e} 1 2 three more elements +a three more elements d e +.CE +.PP +Deleting the last element from a list in a variable: +.CS +% set var {a b c d e} +a b c d e +% set var [\fBlreplace\fR $var end end] +a b c d +.CE .SH "SEE ALSO" .VS 8.4 diff --git a/doc/lsearch.n b/doc/lsearch.n index 98cd8d3..b8a6f18 100644 --- a/doc/lsearch.n +++ b/doc/lsearch.n @@ -1,4 +1,5 @@ -'\" +'\" -*- nroff -*- +'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" Copyright (c) 2001 Kevin B. Kenny. All rights reserved. @@ -6,7 +7,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lsearch.n,v 1.13.2.2 2004/09/02 13:58:58 dkf Exp $ +'\" RCS: @(#) $Id: lsearch.n,v 1.13.2.3 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH lsearch n 8.4 Tcl "Tcl Built-In Commands" @@ -119,13 +120,13 @@ precedence. .VS 8.4 .SH EXAMPLES .CS -lsearch {a b c d e} c => 2 -lsearch -all {a b c a b c} c => 2 5 -lsearch -inline {a20 b35 c47} b* => b35 -lsearch -inline -not {a20 b35 c47} b* => a20 -lsearch -all -inline -not {a20 b35 c47} b* => a20 c47 -lsearch -all -not {a20 b35 c47} b* => 0 2 -lsearch -start 3 {a b c a b c} c => 5 +\fBlsearch\fR {a b c d e} c \fI=> 2\fR +\fBlsearch\fR -all {a b c a b c} c \fI=> 2 5\fR +\fBlsearch\fR -inline {a20 b35 c47} b* \fI=> b35\fR +\fBlsearch\fR -inline -not {a20 b35 c47} b* \fI=> a20\fR +\fBlsearch\fR -all -inline -not {a20 b35 c47} b* \fI=> a20 c47\fR +\fBlsearch\fR -all -not {a20 b35 c47} b* \fI=> 0 2\fR +\fBlsearch\fR -start 3 {a b c a b c} c \fI=> 5\fR .CE .VE 8.4 diff --git a/doc/lsort.n b/doc/lsort.n index 1e8a1fd..edd25e0 100644 --- a/doc/lsort.n +++ b/doc/lsort.n @@ -7,7 +7,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lsort.n,v 1.12.4.1 2003/03/17 14:25:20 dkf Exp $ +'\" RCS: @(#) $Id: lsort.n,v 1.12.4.2 2004/10/27 12:52:40 dkf Exp $ '\" .so man.macros .TH lsort n 8.3 Tcl "Tcl Built-In Commands" @@ -33,7 +33,7 @@ abbreviations are accepted): .TP 20 \fB\-ascii\fR Use string comparison with Unicode code-point collation order (the -name is for backward-compatability reasons.) This is the default. +name is for backward-compatibility reasons.) This is the default. .TP 20 \fB\-dictionary\fR Use dictionary-style comparison. This is the same as \fB\-ascii\fR @@ -102,7 +102,6 @@ determined relative to the comparison used in the sort. Thus if \fI-index 0\fR is used, \fB{1 a}\fR and \fB{1 b}\fR would be considered duplicates and only the second element, \fB{1 b}\fR, would be retained. - .SH "NOTES" .PP The options to \fBlsort\fR only control what sort of comparison is @@ -113,60 +112,52 @@ sorted has fewer than two elements. The \fBlsort\fR command is reentrant, meaning it is safe to use as part of the implementation of a command used in the \fB\-command\fR option. - .SH "EXAMPLES" - .PP Sorting a list using ASCII sorting: .CS -% lsort {a10 B2 b1 a1 a2} +% \fBlsort\fR {a10 B2 b1 a1 a2} B2 a1 a10 a2 b1 .CE - .PP Sorting a list using Dictionary sorting: .CS -% lsort -dictionary {a10 B2 b1 a1 a2} +% \fBlsort\fR -dictionary {a10 B2 b1 a1 a2} a1 a2 a10 b1 B2 .CE - .PP Sorting lists of integers: .CS -% lsort -integer {5 3 1 2 11 4} +% \fBlsort\fR -integer {5 3 1 2 11 4} 1 2 3 4 5 11 -% lsort -integer {1 2 0x5 7 0 4 -1} +% \fBlsort\fR -integer {1 2 0x5 7 0 4 -1} -1 0 1 2 4 0x5 7 .CE - .PP Sorting lists of floating-point numbers: .CS -% lsort -real {5 3 1 2 11 4} +% \fBlsort\fR -real {5 3 1 2 11 4} 1 2 3 4 5 11 -% lsort -real {.5 0.07e1 0.4 6e-1} +% \fBlsort\fR -real {.5 0.07e1 0.4 6e-1} 0.4 .5 6e-1 0.07e1 .CE - .PP Sorting using indices: .CS % # Note the space character before the c -% lsort {{a 5} { c 3} {b 4} {e 1} {d 2}} +% \fBlsort\fR {{a 5} { c 3} {b 4} {e 1} {d 2}} { c 3} {a 5} {b 4} {d 2} {e 1} -% lsort -index 0 {{a 5} { c 3} {b 4} {e 1} {d 2}} +% \fBlsort\fR -index 0 {{a 5} { c 3} {b 4} {e 1} {d 2}} {a 5} {b 4} { c 3} {d 2} {e 1} -% lsort -index 1 {{a 5} { c 3} {b 4} {e 1} {d 2}} +% \fBlsort\fR -index 1 {{a 5} { c 3} {b 4} {e 1} {d 2}} {e 1} {d 2} { c 3} {b 4} {a 5} .CE - .PP Stripping duplicate values using sorting: .CS -% lsort -unique {a b c a b c a b c} +% \fBlsort\fR -unique {a b c a b c a b c} a b c .CE - .PP More complex sorting using a comparison function: .CS @@ -180,7 +171,7 @@ More complex sorting using a comparison function: } return [string compare [lindex $a 1] [lindex $b 1]] } -% lsort -command compare \\ +% \fBlsort\fR -command compare \\ {{3 apple} {0x2 carrot} {1 dingo} {2 banana}} {1 dingo} {2 banana} {0x2 carrot} {3 apple} .CE -- cgit v0.12 From 45beb64f7dcb09a6ce83532702bca760f72e6f4d Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 27 Oct 2004 14:23:38 +0000 Subject: Yet more doc update backporting --- ChangeLog | 2 +- doc/after.n | 18 ++--- doc/array.n | 15 ++-- doc/binary.n | 6 +- doc/clock.n | 6 +- doc/dde.n | 4 +- doc/encoding.n | 10 +-- doc/file.n | 42 +++++------ doc/info.n | 8 +- doc/interp.n | 14 ++-- doc/msgcat.n | 54 +++++++------ doc/namespace.n | 229 +++++++++++++++++++++++++++++++++----------------------- doc/open.n | 25 ++++++- doc/package.n | 31 +++++++- doc/pid.n | 17 ++++- doc/proc.n | 22 +++++- doc/puts.n | 27 ++++++- doc/pwd.n | 20 ++++- doc/read.n | 12 ++- doc/regexp.n | 29 ++++++- doc/registry.n | 21 +++++- doc/regsub.n | 30 +++++++- doc/rename.n | 15 +++- doc/return.n | 118 +++++++++++++++++++++-------- doc/safe.n | 8 +- doc/scan.n | 53 ++++++++++++- doc/seek.n | 23 +++++- doc/set.n | 28 ++++++- doc/socket.n | 34 +++++++-- doc/source.n | 17 ++++- doc/split.n | 53 +++++++++++-- doc/string.n | 8 +- doc/subst.n | 26 +++---- doc/switch.n | 58 +++++++------- 34 files changed, 772 insertions(+), 311 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4570acf..c7d379b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ 2004-10-26 Donal K. Fellows - * doc/[a-l]*.n: First stage of backporting documentation updates. + * doc/[a-s]*.n: Backporting of documentation updates. 2004-10-26 Don Porter diff --git a/doc/after.n b/doc/after.n index 4db2815..ea6aa0b 100644 --- a/doc/after.n +++ b/doc/after.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: after.n,v 1.3.18.1 2004/10/27 09:35:38 dkf Exp $ +'\" RCS: @(#) $Id: after.n,v 1.3.18.2 2004/10/27 14:23:41 dkf Exp $ '\" .so man.macros .TH after n 7.5 Tcl "Tcl Built-In Commands" @@ -101,24 +101,21 @@ will not be executed unless the application enters the event loop. In applications that are not normally event-driven, such as \fBtclsh\fR, the event loop can be entered with the \fBvwait\fR and \fBupdate\fR commands. - .SH "EXAMPLES" This defines a command to make Tcl do nothing at all for \fIN\fR seconds: - .CS proc sleep {N} { - \fBafter\fR [expr {int($N * 1000)}] + \fBafter\fR [expr {int($N * 1000)}] } .CE - +.PP This arranges for the command \fIwake_up\fR to be run in eight hours (providing the event loop is active at that time): - .CS \fBafter\fR [expr {1000 * 60 * 60 * 8}] wake_up .CE - +.PP The following command can be used to do long-running calculations (as represented here by \fI::my_calc::one_step\fR, which is assumed to return a boolean indicating whether another step should be performed) @@ -129,12 +126,11 @@ processing steps (arranging for the next step to be done using an already-triggered timer event only when the event queue has been drained) and is useful when you want to ensure that a Tk GUI remains responsive during a slow task. - .CS proc doOneStep {} { - if {[::my_calc::one_step]} { - \fBafter\fR idle [list \fBafter\fR 0 doOneStep] - } + if {[::my_calc::one_step]} { + \fBafter idle\fR [list \fBafter\fR 0 doOneStep] + } } doOneStep .CE diff --git a/doc/array.n b/doc/array.n index c62e772..d0db722 100644 --- a/doc/array.n +++ b/doc/array.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: array.n,v 1.8.18.2 2003/07/15 22:18:02 dkf Exp $ +'\" RCS: @(#) $Id: array.n,v 1.8.18.3 2004/10/27 14:23:41 dkf Exp $ '\" .so man.macros .TH array n 8.3 Tcl "Tcl Built-In Commands" @@ -137,26 +137,25 @@ error will be raised. If \fIpattern\fR is omitted and \fIarrayName\fR is an array variable, then the command unsets the entire array. The command always returns an empty string. .VE 8.3 - .SH EXAMPLES .CS -array set colorcount { +\fBarray set\fR colorcount { red 1 green 5 blue 4 white 9 } -foreach {color count} [array get colorcount] { - puts "Color: $color Count: $count" +foreach {color count} [\fBarray get\fR colorcount] { + puts "Color: $color Count: $count" } => Color: blue Count: 4 Color: white Count: 9 Color: green Count: 5 Color: red Count: 1 -foreach color [array names colorcount] { - puts "Color: $color Count: $colorcount($color)" +foreach color [\fBarray names\fR colorcount] { + puts "Color: $color Count: $colorcount($color)" } => Color: blue Count: 4 Color: white Count: 9 @@ -171,7 +170,7 @@ foreach color [lsort [array names colorcount]] { Color: red Count: 1 Color: white Count: 9 -array statistics colorcount +\fBarray statistics\fR colorcount => 4 entries in table, 4 buckets number of buckets with 0 entries: 1 number of buckets with 1 entries: 2 diff --git a/doc/binary.n b/doc/binary.n index 4e38f64..582b562 100644 --- a/doc/binary.n +++ b/doc/binary.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: binary.n,v 1.11.2.6 2004/10/27 09:35:38 dkf Exp $ +'\" RCS: @(#) $Id: binary.n,v 1.11.2.7 2004/10/27 14:23:41 dkf Exp $ '\" .so man.macros .TH binary n 8.0 Tcl "Tcl Built-In Commands" @@ -645,7 +645,7 @@ UTF-8 data preceded by a length word: .CS proc writeString {channel string} { set data [encoding convertto utf-8 $string] - puts -nonewline [\fBbinary\fR format Ia* \e + puts -nonewline [\fBbinary format\fR Ia* \e [string length $data] $data] } .CE @@ -654,7 +654,7 @@ This procedure reads a string from a channel that was written by the previously presented \fBwriteString\fR procedure: .CS proc readString {channel} { - if {![\fBbinary\fR scan [read $channel 4] I length]} { + if {![\fBbinary scan\fR [read $channel 4] I length]} { error "missing length" } set data [read $channel $length] diff --git a/doc/clock.n b/doc/clock.n index 630683e..436e7da 100644 --- a/doc/clock.n +++ b/doc/clock.n @@ -10,7 +10,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: clock.n,v 1.11.2.3 2004/10/27 09:35:38 dkf Exp $ +'\" RCS: @(#) $Id: clock.n,v 1.11.2.4 2004/10/27 14:23:41 dkf Exp $ '\" .so man.macros .TH clock n 8.4 Tcl "Tcl Built-In Commands" @@ -268,9 +268,9 @@ different results will be given for \fBclock scan "1 day"\fR and \fBclock scan "24 hours"\fR: .CS .ta 6c -\fB% \fBclock\fR scan "1 day" -base [\fBclock\fR scan 1999-10-31] +\fB% \fBclock scan\fR "1 day" -base [\fBclock scan\fR 1999-10-31] 941443200 -% \fBclock\fR scan "24 hours" -base [\fBclock\fR scan 1999-10-31] +% \fBclock scan\fR "24 hours" -base [\fBclock scan\fR 1999-10-31] 941439600\fR .CE .RE diff --git a/doc/dde.n b/doc/dde.n index 1e81f87..925d622 100644 --- a/doc/dde.n +++ b/doc/dde.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: dde.n,v 1.8.2.1 2004/10/27 09:35:38 dkf Exp $ +'\" RCS: @(#) $Id: dde.n,v 1.8.2.2 2004/10/27 14:23:56 dkf Exp $ '\" .so man.macros .TH dde n 1.2 dde "Tcl Bundled Packages" @@ -142,7 +142,7 @@ This asks Internet Explorer (which must already be running) to go to a particularly important website: .CS package require dde -\fBdde\fR execute iexplore WWW_OpenURL http://www.tcl.tk/ +\fBdde execute\fR iexplore WWW_OpenURL http://www.tcl.tk/ .CE .SH "SEE ALSO" diff --git a/doc/encoding.n b/doc/encoding.n index cf59cd1..3c8893f 100644 --- a/doc/encoding.n +++ b/doc/encoding.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: encoding.n,v 1.3.18.2 2004/10/27 09:35:38 dkf Exp $ +'\" RCS: @(#) $Id: encoding.n,v 1.3.18.3 2004/10/27 14:23:56 dkf Exp $ '\" .so man.macros .TH encoding n "8.1" Tcl "Tcl Built-In Commands" @@ -21,13 +21,12 @@ Strings in Tcl are encoded using 16-bit Unicode characters. Different operating system interfaces or applications may generate strings in other encodings such as Shift-JIS. The \fBencoding\fR command helps to bridge the gap between Unicode and these other formats. - .SH DESCRIPTION .PP Performs one of several encoding related operations, depending on \fIoption\fR. The legal \fIoption\fRs are: .TP -\fBencoding convertfrom ?\fIencoding\fR? \fIdata\fR +\fBencoding convertfrom\fR ?\fIencoding\fR? \fIdata\fR Convert \fIdata\fR to Unicode from the specified \fIencoding\fR. The characters in \fIdata\fR are treated as binary data where the lower 8-bits of each character is taken as a single byte. The resulting @@ -35,7 +34,7 @@ sequence of bytes is treated as a string in the specified \fIencoding\fR. If \fIencoding\fR is not specified, the current system encoding is used. .TP -\fBencoding convertto ?\fIencoding\fR? \fIstring\fR +\fBencoding convertto\fR ?\fIencoding\fR? \fIstring\fR Convert \fIstring\fR from Unicode to the specified \fIencoding\fR. The result is a sequence of bytes that represents the converted string. Each byte is stored in the lower 8-bits of a Unicode @@ -50,7 +49,6 @@ currently available. Set the system encoding to \fIencoding\fR. If \fIencoding\fR is omitted then the command returns the current system encoding. The system encoding is used whenever Tcl passes strings to system calls. - .SH EXAMPLE .PP It is common practice to write script files using a text editor that @@ -71,7 +69,7 @@ of the original string. The \fBencoding\fR command can be used to convert this string to the expected Japanese Unicode characters. For example, .CS -set s [\fBencoding\fR convertfrom euc-jp "\\xA4\\xCF"] +set s [\fBencoding convertfrom\fR euc-jp "\\xA4\\xCF"] .CE would return the Unicode string "\\u306F", which is the Hiragana letter HA. diff --git a/doc/file.n b/doc/file.n index d97f2b0..bd32dee 100644 --- a/doc/file.n +++ b/doc/file.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: file.n,v 1.23.2.1 2004/10/27 12:52:40 dkf Exp $ +'\" RCS: @(#) $Id: file.n,v 1.23.2.2 2004/10/27 14:23:56 dkf Exp $ '\" .so man.macros .TH file n 8.3 Tcl "Tcl Built-In Commands" @@ -424,22 +424,22 @@ that have a correspondingly-named object file in the current directory: .CS proc findMatchingCFiles {dir} { - set files {} - switch $::tcl_platform(platform) { - windows { - set ext .obj - } - unix { - set ext .o - } - } - foreach file [glob -nocomplain -directory $dir *.c] { - set objectFile [\fBfile\fR tail [\fBfile\fR rootname $file]]$ext - if {[\fBfile\fR exists $objectFile]} { - lappend files $file - } - } - return $files + set files {} + switch $::tcl_platform(platform) { + windows { + set ext .obj + } + unix { + set ext .o + } + } + foreach file [glob -nocomplain -directory $dir *.c] { + set objectFile [\fBfile tail\fR [\fBfile rootname\fR $file]]$ext + if {[\fBfile exists\fR $objectFile]} { + lappend files $file + } + } + return $files } .CE .PP @@ -449,11 +449,11 @@ to the new place: set oldName foobar.txt set newName foo/bar.txt # Make sure that where we're going to move to exists... -if {![\fBfile\fR isdirectory [\fBfile\fR dirname $newName]]} { - \fBfile\fR mkdir [\fBfile\fR dirname $newName] +if {![\fBfile isdirectory\fR [\fBfile dirname\fR $newName]]} { + \fBfile mkdir\fR [\fBfile dirname\fR $newName] } -\fBfile\fR rename $oldName $newName -\fBfile\fR link -symbolic $oldName $newName +\fBfile rename\fR $oldName $newName +\fBfile link\fR -symbolic $oldName $newName .CE .SH "SEE ALSO" diff --git a/doc/info.n b/doc/info.n index dc94649..181c4f7 100644 --- a/doc/info.n +++ b/doc/info.n @@ -7,7 +7,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: info.n,v 1.8.2.2 2004/10/27 12:52:40 dkf Exp $ +'\" RCS: @(#) $Id: info.n,v 1.8.2.3 2004/10/27 14:23:56 dkf Exp $ '\" .so man.macros .TH info n 8.4 Tcl "Tcl Built-In Commands" @@ -214,8 +214,8 @@ script: proc printProc {procName} { set result [list proc $procName] set formals {} - foreach var [\fBinfo\fR args $procName] { - if {[\fBinfo\fR default $procName $var def]} { + foreach var [\fBinfo args\fR $procName] { + if {[\fBinfo default\fR $procName $var def]} { lappend formals [list $var $def] } else { # Still need the list-quoting because variable @@ -223,7 +223,7 @@ proc printProc {procName} { lappend formals [list $var] } } - puts [lappend result $formals [\fBinfo\fR body $procName]] + puts [lappend result $formals [\fBinfo body\fR $procName]] } .CE diff --git a/doc/interp.n b/doc/interp.n index a118e50..8b1815a 100644 --- a/doc/interp.n +++ b/doc/interp.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: interp.n,v 1.9.2.1 2004/10/27 12:52:40 dkf Exp $ +'\" RCS: @(#) $Id: interp.n,v 1.9.2.2 2004/10/27 14:23:56 dkf Exp $ '\" .so man.macros .TH interp n 7.6 Tcl "Tcl Built-In Commands" @@ -618,23 +618,23 @@ by Nathaniel Borenstein and Marshall Rose. .SH EXAMPLES Creating and using an alias for a command in the current interpreter: .CS -\fBinterp\fR alias {} getIndex {} lsearch {alpha beta gamma delta} +\fBinterp alias\fR {} getIndex {} lsearch {alpha beta gamma delta} set idx [getIndex delta] .CE .PP Executing an arbitrary command in a safe interpreter where every invokation of \fBlappend\fR is logged: .CS -set i [\fBinterp\fR create -safe] -\fBinterp\fR hide $i lappend -\fBinterp\fR alias $i lappend {} loggedLappend $i +set i [\fBinterp create\fR -safe] +\fBinterp hide\fR $i lappend +\fBinterp alias\fR $i lappend {} loggedLappend $i proc loggedLappend {i args} { puts "logged invokation of lappend $args" # Be extremely careful about command construction eval [linsert $args 0 \\ - \fBinterp\fR invokehidden $i lappend] + \fBinterp invokehidden\fR $i lappend] } -\fBinterp\fR eval $i $someUntrustedScript +\fBinterp eval\fR $i $someUntrustedScript .CE .SH "SEE ALSO" diff --git a/doc/msgcat.n b/doc/msgcat.n index f7ba2fc..87626b2 100644 --- a/doc/msgcat.n +++ b/doc/msgcat.n @@ -48,7 +48,6 @@ the message catalog. Use of the message catalog is optional by any application or package, but is encouraged if the application or package wishes to be enabled for multi-lingual applications. - .SH COMMANDS .TP \fB::msgcat::mc \fIsrc-string\fR ?\fIarg arg ...\fR? @@ -56,7 +55,7 @@ Returns a translation of \fIsrc-string\fR according to the user's current locale. If additional arguments past \fIsrc-string\fR are given, the \fBformat\fR command is used to substitute the additional arguments in the translation of \fIsrc-string\fR. - +.PP \fB::msgcat::mc\fR will search the messages defined in the current namespace for a translation of \fIsrc-string\fR; if none is found, it will search in the parent of the current namespace, @@ -91,10 +90,10 @@ Returns an ordered list of the locales preferred by the user, based on the user's language specification. The list is ordered from most specific to least preference. The list is derived from the current -locale set in msgcat by \fBmsgcat::mclocale\fR, and +locale set in msgcat by \fB::msgcat::mclocale\fR, and cannot be set independently. For example, if the -current locale is en_US_funky, then \fBmsgcat::mcpreferences\fR -returns {en_US_funky en_US en}. +current locale is en_US_funky, then \fB::msgcat::mcpreferences\fR +returns \fB{en_US_funky en_US en}\fR. .TP \fB::msgcat::mcload \fIdirname\fR Searches the specified directory for files that match @@ -120,8 +119,8 @@ Sets the translation for multiple source strings in namespace. \fIsrc-trans-list\fR must have an even number of elements and is in the form {\fIsrc-string translate-string\fR ?\fIsrc-string -translate-string ...\fR?} \fBmsgcat::mcmset\fR can be significantly -faster than multiple invocations of \fBmsgcat::mcset\fR. The function +translate-string ...\fR?} \fB::msgcat::mcmset\fR can be significantly +faster than multiple invocations of \fB::msgcat::mcset\fR. The function returns the number of translations set. .TP \fB::msgcat::mcunknown \fIlocale src-string\fR @@ -134,7 +133,6 @@ string. The \fB::msgcat::mcunknown\fR procedure is invoked at the same stack context as the call to \fB::msgcat::mc\fR. The return value of \fB::msgcat::mcunknown\fR is used as the return value for the call to \fB::msgcat::mc\fR. - .SH "LOCALE SPECIFICATION" .PP The locale is specified to \fBmsgcat\fR by a locale string @@ -155,7 +153,7 @@ initial locale. The value is parsed according to the XPG4 pattern language[_country][.codeset][@modifier] .CE to extract its parts. The initial locale is then set by calling -\fBmsgcat::mclocale\fR with the argument +\fB::msgcat::mclocale\fR with the argument .CS language[_country][_modifier] .CE @@ -171,7 +169,6 @@ en_GB_Funky, the locales ``en_GB_Funky'', ``en_GB'', and ``en'' are searched in order until a matching translation string is found. If no translation string is available, then \fB::msgcat::unknown\fR is called. - .SH "NAMESPACES AND MESSAGE CATALOGS" .PP Strings stored in the message catalog are stored relative @@ -183,10 +180,12 @@ error. .PP For example, executing the code .CS -mcset en hello "hello from ::" -namespace eval foo {mcset en hello "hello from ::foo"} -puts [mc hello] -namespace eval foo {puts [mc hello]} +\fB::msgcat::mcset\fR en hello "hello from ::" +namespace eval foo { + \fB::msgcat::mcset\fR en hello "hello from ::foo" +} +puts [\fB::msgcat::mc\fR hello] +namespace eval foo {puts [\fB::msgcat::mc\fR hello]} .CE will print .CS @@ -202,19 +201,20 @@ to "inherit" messages from their parent namespace. .PP For example, executing (in the ``en'' locale) the code .CS -mcset en m1 ":: message1" -mcset en m2 ":: message2" -mcset en m3 ":: message3" +\fB::msgcat::mcset\fR en m1 ":: message1" +\fB::msgcat::mcset\fR en m2 ":: message2" +\fB::msgcat::mcset\fR en m3 ":: message3" namespace eval ::foo { - mcset en m2 "::foo message2" - mcset en m3 "::foo message3" + \fB::msgcat::mcset\fR en m2 "::foo message2" + \fB::msgcat::mcset\fR en m3 "::foo message3" } namespace eval ::foo::bar { - mcset en m3 "::foo::bar message3" + \fB::msgcat::mcset\fR en m3 "::foo::bar message3" } -puts "[mc m1]; [mc m2]; [mc m3]" -namespace eval ::foo {puts "[mc m1]; [mc m2]; [mc m3]"} -namespace eval ::foo::bar {puts "[mc m1]; [mc m2]; [mc m3]"} +namespace import \fB::msgcat::mc\fR +puts "[\fBmc\fR m1]; [\fBmc\fR m2]; [\fBmc\fR m3]" +namespace eval ::foo {puts "[\fBmc\fR m1]; [\fBmc\fR m2]; [\fBmc\fR m3]"} +namespace eval ::foo::bar {puts "[\fBmc\fR m1]; [\fBmc\fR m2]; [\fBmc\fR m3]"} .CE will print .CS @@ -222,7 +222,6 @@ will print :: message1; ::foo message2; ::foo message3 :: message1; ::foo message2; ::foo::bar message3 .CE - .SH "LOCATION AND FORMAT OF MESSAGE FILES" .PP Message files can be located in any directory, subject @@ -244,10 +243,9 @@ so that all source strings are tied to the namespace of the package. For example, a short \fBes.msg\fR might contain: .CS namespace eval ::mypackage { - ::msgcat::mcset es "Free Beer!" "Cerveza Gracias!" + \fB::msgcat::mcset\fR es "Free Beer!" "Cerveza Gracias!" } .CE - .SH "RECOMMENDED MESSAGE SETUP FOR PACKAGES" .PP If a package is installed into a subdirectory of the @@ -263,9 +261,8 @@ Copy your *.msg files into that directory. initialization script: .CS # load language files, stored in msgs subdirectory -::msgcat::mcload [file join [file dirname [info script]] msgs] +\fB::msgcat::mcload\fR [file join [file dirname [info script]] msgs] .CE - .SH "POSITIONAL CODES FOR FORMAT AND SCAN COMMANDS" .PP It is possible that a message string used as an argument @@ -287,7 +284,6 @@ format "In location %2\\$s we produced %1\\$d units" $num $city .PP Similarly, positional parameters can be used with \fBscan\fR to extract values from internationalized strings. - .SH CREDITS .PP The message catalog code was developed by Mark Harrison. diff --git a/doc/namespace.n b/doc/namespace.n index c79ce08..e93a704 100644 --- a/doc/namespace.n +++ b/doc/namespace.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: namespace.n,v 1.9 2003/01/21 20:06:11 jenglish Exp $ +'\" RCS: @(#) $Id: namespace.n,v 1.9.2.1 2004/10/27 14:23:57 dkf Exp $ '\" .so man.macros .TH namespace n 8.0 Tcl "Tcl Built-In Commands" @@ -24,8 +24,8 @@ The \fBnamespace\fR command lets you create, access, and destroy separate contexts for commands and variables. See the section \fBWHAT IS A NAMESPACE?\fR below for a brief overview of namespaces. -The legal \fIoption\fR's are listed below. -Note that you can abbreviate the \fIoption\fR's. +The legal values of \fIoption\fR are listed below. +Note that you can abbreviate the \fIoption\fRs. .TP \fBnamespace children \fR?\fInamespace\fR? ?\fIpattern\fR? Returns a list of all child namespaces that belong to the @@ -33,14 +33,14 @@ namespace \fInamespace\fR. If \fInamespace\fR is not specified, then the children are returned for the current namespace. This command returns fully-qualified names, -which start with \fB::\fR. +which start with a double colon (\fB::\fR). If the optional \fIpattern\fR is given, then this command returns only the names that match the glob-style pattern. The actual pattern used is determined as follows: -a pattern that starts with \fB::\fR is used directly, +a pattern that starts with double colon (\fB::\fR) is used directly, otherwise the namespace \fInamespace\fR (or the fully-qualified name of the current namespace) -is prepended onto the the pattern. +is prepended onto the pattern. .TP \fBnamespace code \fIscript\fR Captures the current namespace context for later execution @@ -66,7 +66,7 @@ extensions like Tk normally execute callback scripts in the global namespace. A scoped command captures a command together with its namespace context in a way that allows it to be executed properly later. -See the section \fBSCOPED VALUES\fR for some examples +See the section \fBSCOPED SCRIPTS\fR for some examples of how this is used to create callback scripts. .TP \fBnamespace current\fR @@ -129,7 +129,7 @@ this command returns the namespace's current export list. Removes previously imported commands from a namespace. Each \fIpattern\fR is a simple or qualified name such as \fBx\fR, \fBfoo::x\fR or \fBa::b::p*\fR. -Qualified names contain \fB::\fRs and qualify a name +Qualified names contain double colons (\fB::\fR) and qualify a name with the name of one or more namespaces. Each \fIqualified pattern\fR is qualified with the name of an exporting namespace @@ -211,7 +211,7 @@ the fully-qualified name of the current namespace's parent is returned. .TP \fBnamespace qualifiers\fR \fIstring\fR Returns any leading namespace qualifiers for \fIstring\fR. -Qualifiers are namespace names separated by \fB::\fRs. +Qualifiers are namespace names separated by double colons (\fB::\fR). For the \fIstring\fR \fB::foo::bar::x\fR, this command returns \fB::foo::bar\fR, and for \fB::\fR it returns an empty string. @@ -222,7 +222,7 @@ the names of currently defined namespaces. .TP \fBnamespace tail\fR \fIstring\fR Returns the simple name at the end of a qualified string. -Qualifiers are namespace names separated by \fB::\fRs. +Qualifiers are namespace names separated by double colons (\fB::\fR). For the \fIstring\fR \fB::foo::bar::x\fR, this command returns \fBx\fR, and for \fB::\fR it returns an empty string. @@ -244,7 +244,6 @@ fully-qualified name of the variable. If no flag is given, \fIname\fR is treated as a command name. See the section \fBNAME RESOLUTION\fR below for an explanation of the rules regarding name resolution. - .SH "WHAT IS A NAMESPACE?" .PP A namespace is a collection of commands and variables. @@ -256,15 +255,15 @@ The global namespace holds all global variables and commands. The \fBnamespace eval\fR command lets you create new namespaces. For example, .CS -\fBnamespace eval Counter { - namespace export bump - variable num 0 +\fBnamespace eval\fR Counter { + \fBnamespace export\fR bump + variable num 0 - proc bump {} { - variable num - incr num - } -}\fR + proc bump {} { + variable num + incr num + } +} .CE creates a new namespace containing the variable \fBnum\fR and the procedure \fBbump\fR. @@ -286,21 +285,21 @@ namespace over time using a series of \fBnamespace eval\fR commands. For example, the following series of commands has the same effect as the namespace definition shown above: .CS -\fBnamespace eval Counter { - variable num 0 - proc bump {} { - variable num - return [incr num] - } +\fBnamespace eval\fR Counter { + variable num 0 + proc bump {} { + variable num + return [incr num] + } } -namespace eval Counter { - proc test {args} { - return $args - } +\fBnamespace eval\fR Counter { + proc test {args} { + return $args + } } -namespace eval Counter { +\fBnamespace eval\fR Counter { rename test "" -}\fR +} .CE Note that the \fBtest\fR procedure is added to the \fBCounter\fR namespace, and later removed via the \fBrename\fR command. @@ -309,7 +308,6 @@ Namespaces can have other namespaces within them, so they nest hierarchically. A nested namespace is encapsulated inside its parent namespace and can not interfere with other namespaces. - .SH "QUALIFIED NAMES" .PP Each namespace has a textual name such as @@ -325,8 +323,8 @@ The topmost or global namespace has the name ``'' (i.e., an empty string), although \fB::\fR is a synonym. As an example, the name \fB::safe::interp::create\fR refers to the command \fBcreate\fR in the namespace \fBinterp\fR -that is a child of of namespace \fB::safe\fR, -which in turn is a child of the global namespace \fB::\fR. +that is a child of namespace \fB::safe\fR, +which in turn is a child of the global namespace, \fB::\fR. .PP If you want to access commands and variables from another namespace, you must use some extra syntax. @@ -334,12 +332,12 @@ Names must be qualified by the namespace that contains them. From the global namespace, we might access the \fBCounter\fR procedures like this: .CS -\fBCounter::bump 5 -Counter::Reset\fR +Counter::bump 5 +Counter::Reset .CE We could access the current count like this: .CS -\fBputs "count = $Counter::num"\fR +puts "count = $Counter::num" .CE When one namespace contains another, you may need more than one qualifier to reach its elements. @@ -347,18 +345,18 @@ If we had a namespace \fBFoo\fR that contained the namespace \fBCounter\fR, you could invoke its \fBbump\fR procedure from the global namespace like this: .CS -\fBFoo::Counter::bump 3\fR +Foo::Counter::bump 3 .CE .PP You can also use qualified names when you create and rename commands. For example, you could add a procedure to the \fBFoo\fR namespace like this: .CS -\fBproc Foo::Test {args} {return $args}\fR +proc Foo::Test {args} {return $args} .CE And you could move the same procedure to another namespace like this: .CS -\fBrename Foo::Test Bar::Test\fR +rename Foo::Test Bar::Test .CE .PP There are a few remaining points about qualified names @@ -366,12 +364,11 @@ that we should cover. Namespaces have nonempty names except for the global namespace. \fB::\fR is disallowed in simple command, variable, and namespace names except as a namespace separator. -Extra \fB:\fRs in a qualified name are ignored; -that is, two or more \fB:\fRs are treated as a namespace separator. +Extra colons in any separator part of a qualified name are ignored; +i.e. two or more colons are treated as a namespace separator. A trailing \fB::\fR in a qualified variable or command name refers to the variable or command named {}. However, a trailing \fB::\fR in a qualified namespace name is ignored. - .SH "NAME RESOLUTION" .PP In general, all Tcl commands that take variable and command names @@ -392,10 +389,10 @@ by looking in only the current namespace. .PP In the following example, .CS -\fBset traceLevel 0 -namespace eval Debug { - printTrace $traceLevel -}\fR +set traceLevel 0 +\fBnamespace eval\fR Debug { + printTrace $traceLevel +} .CE Tcl looks for \fBtraceLevel\fR in the namespace \fBDebug\fR and then in the global namespace. @@ -404,14 +401,14 @@ If a variable or command name is not found in either context, the name is undefined. To make this point absolutely clear, consider the following example: .CS -\fBset traceLevel 0 -namespace eval Foo { - variable traceLevel 3 +set traceLevel 0 +\fBnamespace eval\fR Foo { + variable traceLevel 3 - namespace eval Debug { - printTrace $traceLevel - } -}\fR + \fBnamespace eval\fR Debug { + printTrace $traceLevel + } +} .CE Here Tcl looks for \fBtraceLevel\fR first in the namespace \fBFoo::Debug\fR. Since it is not found there, Tcl then looks for it @@ -423,12 +420,12 @@ You can use the \fBnamespace which\fR command to clear up any question about name resolution. For example, the command: .CS -\fBnamespace eval Foo::Debug {namespace which \-variable traceLevel}\fR +\fBnamespace eval\fR Foo::Debug {\fBnamespace which\fR \-variable traceLevel} .CE returns \fB::traceLevel\fR. On the other hand, the command, .CS -\fBnamespace eval Foo {namespace which \-variable traceLevel}\fR +\fBnamespace eval\fR Foo {\fBnamespace which\fR \-variable traceLevel} .CE returns \fB::Foo::traceLevel\fR. .PP @@ -439,7 +436,7 @@ Namespace names are always resolved in the current namespace. This means, for example, that a \fBnamespace eval\fR command that creates a new namespace always creates a child of the current namespace -unless the new namespace name begins with a \fB::\fR. +unless the new namespace name begins with \fB::\fR. .PP Tcl has no access control to limit what variables, commands, or namespaces you can reference. @@ -459,7 +456,6 @@ to variables in the global namespace. It is not necessary to use a \fBvariable\fR command if you always refer to the namespace variable using an appropriate qualified name. - .SH "IMPORTING COMMANDS" .PP Namespaces are often used to represent libraries. @@ -469,21 +465,21 @@ For example, suppose that all of the commands in a package like BLT are contained in a namespace called \fBBlt\fR. Then you might access these commands like this: .CS -\fBBlt::graph .g \-background red -Blt::table . .g 0,0\fR +Blt::graph .g \-background red +Blt::table . .g 0,0 .CE If you use the \fBgraph\fR and \fBtable\fR commands frequently, you may want to access them without the \fBBlt::\fR prefix. You can do this by importing the commands into the current namespace, like this: .CS -\fBnamespace import Blt::*\fR +\fBnamespace import\fR Blt::* .CE This adds all exported commands from the \fBBlt\fR namespace into the current namespace context, so you can write code like this: .CS -\fBgraph .g \-background red -table . .g 0,0\fR +graph .g \-background red +table . .g 0,0 .CE The \fBnamespace import\fR command only imports commands from a namespace that that namespace exported @@ -494,7 +490,7 @@ a bad idea since you don't know what you will get. It is better to import just the specific commands you need. For example, the command .CS -\fBnamespace import Blt::graph Blt::table\fR +\fBnamespace import\fR Blt::graph Blt::table .CE imports only the \fBgraph\fR and \fBtable\fR commands into the current context. @@ -507,12 +503,12 @@ reissue the \fBnamespace import\fR command to pick up new commands that have appeared in a namespace. In that case, you can use the \fB\-force\fR option, and existing commands will be silently overwritten: .CS -\fBnamespace import \-force Blt::graph Blt::table\fR +\fBnamespace import\fR \-force Blt::graph Blt::table .CE If for some reason, you want to stop using the imported commands, -you can remove them with an \fBnamespace forget\fR command, like this: +you can remove them with a \fBnamespace forget\fR command, like this: .CS -\fBnamespace forget Blt::*\fR +\fBnamespace forget\fR Blt::* .CE This searches the current namespace for any commands imported from \fBBlt\fR. If it finds any, it removes them. Otherwise, it does nothing. @@ -521,42 +517,41 @@ prefix. .PP When you delete a command from the exporting namespace like this: .CS -\fBrename Blt::graph ""\fR +rename Blt::graph "" .CE the command is automatically removed from all namespaces that import it. - .SH "EXPORTING COMMANDS" You can export commands from a namespace like this: .CS -\fBnamespace eval Counter { - namespace export bump reset - variable Num 0 - variable Max 100 +\fBnamespace eval\fR Counter { + \fBnamespace export\fR bump reset + variable Num 0 + variable Max 100 - proc bump {{by 1}} { - variable Num - incr Num $by - Check - return $Num - } - proc reset {} { - variable Num - set Num 0 - } - proc Check {} { - variable Num - variable Max - if {$Num > $Max} { - error "too high!" - } - } -}\fR + proc bump {{by 1}} { + variable Num + incr Num $by + Check + return $Num + } + proc reset {} { + variable Num + set Num 0 + } + proc Check {} { + variable Num + variable Max + if {$Num > $Max} { + error "too high!" + } + } +} .CE The procedures \fBbump\fR and \fBreset\fR are exported, so they are included when you import from the \fBCounter\fR namespace, like this: .CS -\fBnamespace import Counter::*\fR +\fBnamespace import\fR Counter::* .CE However, the \fBCheck\fR procedure is not exported, so it is ignored by the import operation. @@ -567,6 +562,56 @@ The \fBnamespace export\fR command specifies what commands may be imported by other namespaces. If a \fBnamespace import\fR command specifies a command that is not exported, the command is not imported. +.SH "SCOPED SCRIPTS" +The \fBnamespace code\fR command is the means by which a script may be +packaged for evaluation in a namespace other than the one in which it +was created. It is used most often to create event handlers, Tk bindings, +and traces for evaluation in the global context. For instance, the following +code indicates how to direct a variable trace callback into the current +namespace: +.CS +\fBnamespace eval\fR a { + variable b + proc theTraceCallback { n1 n2 op } { + upvar 1 $n1 var + puts "the value of $n1 has changed to $var" + return + } + trace variable b w [\fBnamespace code\fR theTraceCallback] +} +set a::b c +.CE +When executed, it prints the message: +.CS +the value of a::b has changed to c +.CE +.SH EXAMPLES +Create a namespace containing a variable and an exported command: +.CS +\fBnamespace eval\fR foo { + variable bar 0 + proc grill {} { + variable bar + puts "called [incr bar] times" + } + \fBnamespace export\fR grill +} +.CE +.PP +Call the command defined in the previous example in various ways. +.CS +# Direct call +foo::grill + +# Import into current namespace, then call local alias +namespace import foo::grill +grill +.CE +.PP +Look up where the command imported in the previous example came from: +.CS +puts "grill came from [\fBnamespace which\fR grill]" +.CE .SH "SEE ALSO" variable(n) diff --git a/doc/open.n b/doc/open.n index 9ef9754..4322dde 100644 --- a/doc/open.n +++ b/doc/open.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: open.n,v 1.16.2.1 2003/04/18 00:32:34 dkf Exp $ +'\" RCS: @(#) $Id: open.n,v 1.16.2.2 2004/10/27 14:23:57 dkf Exp $ '\" .so man.macros .TH open n 8.3 Tcl "Tcl Built-In Commands" @@ -132,7 +132,15 @@ standard input for the pipeline is taken from the current standard input unless overridden by the command. The id of the spawned process is accessible through the \fBpid\fR command, using the channel id returned by \fBopen\fR as argument. - +.PP +If the command (or one of the commands) executed in the command +pipeline returns an error (according to the definition in \fBexec\fR), +a Tcl error is generated when \fBclose\fR is called on the channel +(similar to the \fBclose\fR command.) +.PP +It is often useful to use the \fBfileevent\fR command with pipelines +so other processing may happen at the same time as running the command +in the background. .VS 8.4 .SH "SERIAL COMMUNICATIONS" .PP @@ -333,7 +341,7 @@ between the real console, if one is present, and a command pipeline that uses standard input or output. If a command pipeline is opened for reading, some of the lines entered at the console will be sent to the command pipeline and some will be sent to the Tcl evaluator. If a command pipeline is opened for -writing, keystrokes entered into the console are not visible until the the +writing, keystrokes entered into the console are not visible until the pipe is closed. This behavior occurs whether the command pipeline is executing 16-bit or 32-bit applications. These problems only occur because both Tcl and the child application are competing for the console at @@ -356,7 +364,7 @@ standard input or output. If a command pipeline is opened for reading from a 32-bit application, some of the keystrokes entered at the console will be sent to the command pipeline and some will be sent to the Tcl evaluator. If a command pipeline is opened for writing to a 32-bit application, no output -is visible on the console until the the pipe is closed. These problems only +is visible on the console until the pipe is closed. These problems only occur because both Tcl and the child application are competing for the console at the same time. If the command pipeline is started from a script, so that Tcl is not accessing the console, or if the command pipeline does @@ -399,6 +407,15 @@ input, but is redirected from a file, then the above problem does not occur. See the PORTABILITY ISSUES section of the \fBexec\fR command for additional information not specific to command pipelines about executing applications on the various platforms +.SH "EXAMPLE" +Open a command pipeline and catch any errors: +.CS +set fl [\fBopen\fR "| ls this_file_does_not_exist"] +set data [read $fl] +if {[catch {close $fl} err]} { + puts "ls command failed: $err" +} +.CE .SH "SEE ALSO" file(n), close(n), filename(n), fconfigure(n), gets(n), read(n), diff --git a/doc/package.n b/doc/package.n index 1ede10f..02ac630 100644 --- a/doc/package.n +++ b/doc/package.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: package.n,v 1.6 2002/01/27 17:35:06 dgp Exp $ +'\" RCS: @(#) $Id: package.n,v 1.6.2.1 2004/10/27 14:23:57 dkf Exp $ '\" .so man.macros .TH package n 7.5 Tcl "Tcl Built-In Commands" @@ -90,7 +90,7 @@ provided by a previous \fBpackage provide\fR command. If the \fIversion\fR argument is omitted, then the command returns the version number that is currently provided, or an empty string if no \fBpackage provide\fR command has been -invoked for \fIpackage\fR in this interpreter. +invoked for \fIpackage\fR in this interpreter. .TP \fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR? This command is typically invoked by Tcl code that wishes to use @@ -161,7 +161,6 @@ Returns 1 if scripts written for \fIversion2\fR will work unchanged with \fIversion1\fR (i.e. \fIversion1\fR is equal to or greater than \fIversion2\fR and they both have the same major version number), 0 otherwise. - .SH "VERSION NUMBERS" .PP Version numbers consist of one or more decimal numbers separated @@ -181,7 +180,6 @@ work unchanged under versions 2.3.2, 2.4, and 2.5.1. Changes in the major version number signify incompatible changes: if code is written to use version 2.1 of a package, it is not guaranteed to work unmodified with either version 1.7.3 or version 3.1. - .SH "PACKAGE INDICES" .PP The recommended way to use packages in Tcl is to invoke \fBpackage require\fR @@ -190,6 +188,31 @@ and \fBpackage provide\fR commands in scripts, and use the procedure Once you've done this, packages will be loaded automatically in response to \fBpackage require\fR commands. See the documentation for \fBpkg_mkIndex\fR for details. +.SH EXAMPLES +To state that a Tcl script requires the Tk and http packages, put this +at the top of the script: +.CS +\fBpackage require\fR Tk +\fBpackage require\fR http +.CE +.PP +To test to see if the Snack package is available and load if it is +(often useful for optional enhancements to programs where the loss of +the functionality is not critical) do this: +.CS +if {[catch {\fBpackage require\fR Snack}]} { + # We have the package, configure the app to use it +} else { + # Set up a dummy interface to work around the absence +} +.CE +.PP +When writing a package implementation, you should put the following at +the \fIbottom\fR of your library script so it is only called once the +package has been successfully set up: +.CS +\fBpackage provide\fR foobar 1.0 +.CE .SH "SEE ALSO" msgcat(n), packagens(n), pkgMkIndex(n) diff --git a/doc/pid.n b/doc/pid.n index f835b5e..9811cb7 100644 --- a/doc/pid.n +++ b/doc/pid.n @@ -5,14 +5,14 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: pid.n,v 1.3 2000/09/07 14:27:50 poenitz Exp $ +'\" RCS: @(#) $Id: pid.n,v 1.3.18.1 2004/10/27 14:23:57 dkf Exp $ '\" .so man.macros .TH pid n 7.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME -pid \- Retrieve process id(s) +pid \- Retrieve process identifiers .SH SYNOPSIS \fBpid \fR?\fIfileId\fR? .BE @@ -29,6 +29,19 @@ that isn't a process pipeline. If no \fIfileId\fR argument is given then \fBpid\fR returns the process identifier of the current process. All process identifiers are returned as decimal strings. +.SH EXAMPLE +Print process information about the processes in a pipeline using the +SysV \fBps\fR program before reading the output of that pipeline: +.PP +.CS +set pipeline [open "| zcat somefile.gz | grep foobar | sort -u"] +# Print process information +exec ps -fp [\fBpid\fR $pipeline] >@stdout +# Print a separator and then the output of the pipeline +puts [string repeat - 70] +puts [read $pipeline] +close $pipeline +.CE .SH "SEE ALSO" exec(n), open(n) diff --git a/doc/proc.n b/doc/proc.n index 6735ef0..031d3ea 100644 --- a/doc/proc.n +++ b/doc/proc.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: proc.n,v 1.3 2000/09/07 14:27:50 poenitz Exp $ +'\" RCS: @(#) $Id: proc.n,v 1.3.18.1 2004/10/27 14:23:57 dkf Exp $ '\" .so man.macros .TH proc n "" Tcl "Tcl Built-In Commands" @@ -69,6 +69,26 @@ invoked, the procedure's return value is the value specified in a executed in the procedure's body. If an error occurs while executing the procedure body, then the procedure-as-a-whole will return that same error. +.SH EXAMPLES +This is a procedure that accepts arbitrarily many arguments and prints +them out, one by one. +.CS +\fBproc\fR printArguments args { + foreach arg $args { + puts $arg + } +} +.CE +.PP +This procedure is a bit like the \fBincr\fR command, except it +multiplies the contents of the named variable by the value, which +defaults to \fB2\fR: +.CS +\fBproc\fR mult {varName {multiplier 2}} { + upvar 1 $varName var + set var [expr {$var * $multiplier}] +} +.CE .SH "SEE ALSO" info(n), unknown(n) diff --git a/doc/puts.n b/doc/puts.n index 9a4cbdd..d9e64a0 100644 --- a/doc/puts.n +++ b/doc/puts.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: puts.n,v 1.5 2001/09/14 19:20:40 andreas_kupries Exp $ +'\" RCS: @(#) $Id: puts.n,v 1.5.8.1 2004/10/27 14:23:57 dkf Exp $ '\" .so man.macros .TH puts n 7.5 Tcl "Tcl Built-In Commands" @@ -68,6 +68,31 @@ To avoid wasting memory, nonblocking I/O should normally be used in an event-driven fashion with the \fBfileevent\fR command (don't invoke \fBputs\fR unless you have recently been notified via a file event that the channel is ready for more output data). +.SH EXAMPLES +Write a short message to the console (or wherever \fBstdout\fR is +directed): +.CS +\fBputs\fR "Hello, World!" +.CE +.PP +Print a message in several parts: +.CS +\fBputs\fR -nonewline "Hello, " +\fBputs\fR "World!" +.CE +.PP +Print a message to the standard error channel: +.CS +\fBputs\fR stderr "Hello, World!" +.CE +.PP +Append a log message to a file: +.CS +set chan [open my.log a] +set timestamp [clock format [clock seconds]] +\fBputs\fR $chan "$timestamp - Hello, World!" +close $chan +.CE .SH "SEE ALSO" file(n), fileevent(n), Tcl_StandardChannels(3) diff --git a/doc/pwd.n b/doc/pwd.n index 22ec376..4f3dcd6 100644 --- a/doc/pwd.n +++ b/doc/pwd.n @@ -5,21 +5,35 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: pwd.n,v 1.3 2000/09/07 14:27:50 poenitz Exp $ +'\" RCS: @(#) $Id: pwd.n,v 1.3.18.1 2004/10/27 14:23:57 dkf Exp $ '\" .so man.macros .TH pwd n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME -pwd \- Return the current working directory +pwd \- Return the absolute path of the current working directory .SH SYNOPSIS \fBpwd\fR .BE .SH DESCRIPTION .PP -Returns the path name of the current working directory. +Returns the absolute path name of the current working directory. +.SH EXAMPLE +Sometimes it is useful to change to a known directory when running +some external command using \fBexec\fR, but it is important to keep +the application usually running in the directory that it was started +in (unless the user specifies otherwise) since that minimises user +confusion. The way to do this is to save the current directory while +the external command is being run: +.CS +set tarFile [file normalize somefile.tar] +set savedDir [\fBpwd\fR] +cd /tmp +exec tar -xf $tarFile +cd $savedDir +.CE .SH "SEE ALSO" file(n), cd(n), glob(n), filename(n) diff --git a/doc/read.n b/doc/read.n index b80f134..18e3d79 100644 --- a/doc/read.n +++ b/doc/read.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: read.n,v 1.7 2001/09/14 19:20:40 andreas_kupries Exp $ +'\" RCS: @(#) $Id: read.n,v 1.7.8.1 2004/10/27 14:23:57 dkf Exp $ '\" .so man.macros .TH read n 8.1 Tcl "Tcl Built-In Commands" @@ -73,7 +73,15 @@ In this form \fBread\fR blocks until the reception of the end-of-file character, see \fBfconfigure -eofchar\fR. If there no end-of-file character has been configured for the channel, then \fBread\fR will block forever. - +.SH "EXAMPLE" +This example code reads a file all at once, and splits it into a list, +with each line in the file corresponding to an element in the list: +.CS +set fl [open /proc/meminfo] +set data [\fBread\fR $fl] +close $fl +set lines [split $data \\n] +.CE .SH "SEE ALSO" file(n), eof(n), fblocked(n), fconfigure(n), Tcl_StandardChannels(3) diff --git a/doc/regexp.n b/doc/regexp.n index 4309d26..42dc589 100644 --- a/doc/regexp.n +++ b/doc/regexp.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: regexp.n,v 1.12 2002/10/10 14:46:57 dgp Exp $ +'\" RCS: @(#) $Id: regexp.n,v 1.12.2.1 2004/10/27 14:23:57 dkf Exp $ '\" .so man.macros .TH regexp n 8.3 Tcl "Tcl Built-In Commands" @@ -126,6 +126,33 @@ in \fIexp\fR doesn't match the string (e.g. because it was in a portion of the expression that wasn't matched), then the corresponding \fIsubMatchVar\fR will be set to ``\fB\-1 \-1\fR'' if \fB\-indices\fR has been specified or to an empty string otherwise. +.SH EXAMPLES +Find the first occurrence of a word starting with \fBfoo\fR in a +string that is not actually an instance of \fBfoobar\fR, and get the +letters following it up to the end of the word into a variable: +.CS +\fBregexp\fR {\\)(\\w*)} $string \-> restOfWord +.CE +Note that the whole matched substring has been placed in the variable +\fB\->\fR which is a name chosen to look nice given that we are not +actually interested in its contents. +.PP +Find the index of the word \fBbadger\fR (in any case) within a string +and store that in the variable \fBlocation\fR: +.CS +\fBregexp\fR \-indices {(?i)\\} $string location +.CE +.PP +Count the number of octal digits in a string: +.CS +\fBregexp\fR \-all {[0\-7]} $string +.CE +.PP +List all words (consisting of all sequences of non-whitespace +characters) in a string: +.CS +\fBregexp\fR \-all \-inline {\\S+} $string +.CE .SH "SEE ALSO" re_syntax(n), regsub(n) diff --git a/doc/registry.n b/doc/registry.n index e6a4902..549a2e1 100644 --- a/doc/registry.n +++ b/doc/registry.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: registry.n,v 1.8 2002/10/19 01:48:46 hobbs Exp $ +'\" RCS: @(#) $Id: registry.n,v 1.8.2.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH registry n 1.1 registry "Tcl Bundled Packages" @@ -60,7 +60,7 @@ keys like Environment. The timeout specifies the amount of time, in milliseconds, to wait for applications to respond to the broadcast message. It defaults to 3000. The following example demonstrates how to add a path to the global Environment and notify applications of the change without -reguiring a logoff/logon step (assumes admin privileges): +requiring a logoff/logon step (assumes admin privileges): .CS set regPath {HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment} set curPath [registry get $regPath "Path"] @@ -179,9 +179,24 @@ In addition to the symbolically named types listed above, unknown types are identified using a 32-bit integer that corresponds to the type code returned by the system interfaces. In this case, the data is represented exactly in Tcl, including any embedded nulls. - .SH "PORTABILITY ISSUES" The registry command is only available on Windows. +.SH EXAMPLE +Print out how double-clicking on a Tcl script file will invoke a Tcl +interpreter: +.CS +package require registry +set ext .tcl + +# Read the type name +set type [\fBregistry get\fR HKEY_CLASSES_ROOT\e\e$ext {}] +# Work out where to look for the command +set path HKEY_CLASSES_ROOT\e\e$type\e\eShell\e\eOpen\e\ecommand +# Read the command! +set command [\fBregistry get\fR $path {}] + +puts "$ext opens with $command" +.CE .SH KEYWORDS registry diff --git a/doc/regsub.n b/doc/regsub.n index d0c6e01..cccb2e4 100644 --- a/doc/regsub.n +++ b/doc/regsub.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: regsub.n,v 1.9 2003/02/20 15:33:02 dkf Exp $ +'\" RCS: @(#) $Id: regsub.n,v 1.9.2.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH regsub n 8.3 Tcl "Tcl Built-In Commands" @@ -114,9 +114,35 @@ string after replacement is returned. .VE 8.4 See the manual entry for \fBregexp\fR for details on the interpretation of regular expressions. +.SH EXAMPLES +Replace (in the string in variable \fIstring\fR) every instance of +\fBfoo\fR which is a word by itself with \fBbar\fR: +.CS +\fBregsub\fR -all {\e} $string bar string +.CE +.PP +Insert double-quotes around the first instance of the word +\fBinteresting\fR, however it is capitalised. +.CS +\fBregsub\fR -nocase {\e} $string {"&"} string +.CE +.PP +Convert all non-ASCII and Tcl-significant characters into \eu escape +sequences by using \fBregsub\fR and \fBsubst\fR in combination: +.CS +# This RE is just a character class for everything "bad" +set RE {[][{}\e$\es\eu0100-\euffff]} + +# We will substitute with a fragment of Tcl script in brackets +set substitution {[format \e\e\e\eu%04x [scan "\e\e&" %c]]} + +# Now we apply the substitution to get a subst-string that +# will perform the computational parts of the conversion. +set quoted [subst [\fBregsub\fR -all $RE $string $substitution]] +.CE .SH "SEE ALSO" -regexp(n), re_syntax(n) +regexp(n), re_syntax(n), subst(n) .SH KEYWORDS match, pattern, regular expression, substitute diff --git a/doc/rename.n b/doc/rename.n index 2630ad4..c1cce2e 100644 --- a/doc/rename.n +++ b/doc/rename.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: rename.n,v 1.3 2000/09/07 14:27:51 poenitz Exp $ +'\" RCS: @(#) $Id: rename.n,v 1.3.18.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH rename n "" Tcl "Tcl Built-In Commands" @@ -27,6 +27,19 @@ If \fInewName\fR is an empty string then \fIoldName\fR is deleted. If a command is renamed into a different namespace, future invocations of it will execute in the new namespace. The \fBrename\fR command returns an empty string as result. +.SH EXAMPLE +The \fBrename\fR command can be used to wrap the standard Tcl commands +with your own monitoring machinery. For example, you might wish to +count how often the \fBsource\fR command is called: +.CS +\fBrename\fR ::source ::theRealSource +set sourceCount 0 +proc ::source args { + global sourceCount + puts "called source for the [incr sourceCount]'th time" + uplevel 1 ::theRealSource $args +} +.CE .SH "SEE ALSO" namespace(n), proc(n) diff --git a/doc/return.n b/doc/return.n index 2ea381d..685e0be 100644 --- a/doc/return.n +++ b/doc/return.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: return.n,v 1.3 2000/09/07 14:27:51 poenitz Exp $ +'\" RCS: @(#) $Id: return.n,v 1.3.18.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH return n 7.0 Tcl "Tcl Built-In Commands" @@ -23,43 +23,45 @@ Return immediately from the current procedure (or top-level command or \fBsource\fR command), with \fIstring\fR as the return value. If \fIstring\fR is not specified then an empty string will be returned as result. - -.SH "EXCEPTIONAL RETURNS" +.SH "EXCEPTIONAL RETURN CODES" .PP +In addition to the result of a procedure, the return +code of a procedure may also be set by \fBreturn\fR +through use of the \fB-code\fR option. In the usual case where the \fB\-code\fR option isn't -specified the procedure will return normally (its completion -code will be TCL_OK). +specified the procedure will return normally. However, the \fB\-code\fR option may be used to generate an exceptional return from the procedure. \fICode\fR may have any of the following values: -.TP 10 -\fBok\fR -Normal return: same as if the option is omitted. -.TP 10 -\fBerror\fR -Error return: same as if the \fBerror\fR command were used to -terminate the procedure, except for handling of \fBerrorInfo\fR -and \fBerrorCode\fR variables (see below). -.TP 10 -\fBreturn\fR -The current procedure will return with a completion code of -TCL_RETURN, so that the procedure that invoked it will return -also. -.TP 10 -\fBbreak\fR -The current procedure will return with a completion code of -TCL_BREAK, which will terminate the innermost nested loop in -the code that invoked the current procedure. -.TP 10 -\fBcontinue\fR -The current procedure will return with a completion code of -TCL_CONTINUE, which will terminate the current iteration of -the innermost nested loop in the code that invoked the current -procedure. -.TP 10 +.TP 13 +\fBok (or 0)\fR +Normal return: same as if the option is omitted. The return code +of the procedure is 0 (\fBTCL_OK\fR). +.TP 13 +\fBerror (1)\fR +Error return: the return code of the procedure is 1 (\fBTCL_ERROR\fR). +The procedure command behaves in its calling context as if it +were the command \fBerror \fIresult\fR. See below for additional +options. +.TP 13 +\fBreturn (2)\fR +The return code of the procedure is 2 (\fBTCL_RETURN\fR). The +procedure command behaves in its calling context as if it +were the command \fBreturn\fR (with no arguments). +.TP 13 +\fBbreak (3)\fR +The return code of the procedure is 3 (\fBTCL_BREAK\fR). The +procedure command behaves in its calling context as if it +were the command \fBbreak\fR. +.TP 13 +\fBcontinue (4)\fR +The return code of the procedure is 4 (\fBTCL_CONTINUE\fR). The +procedure command behaves in its calling context as if it +were the command \fBcontinue\fR. +.TP 13 \fIvalue\fR \fIValue\fR must be an integer; it will be returned as the -completion code for the current procedure. +return code for the current procedure. .LP The \fB\-code\fR option is rarely used. It is provided so that procedures that implement @@ -84,9 +86,59 @@ If the \fB\-errorcode\fR option is specified then \fIcode\fR provides a value for the \fBerrorCode\fR variable. If the option is not specified then \fBerrorCode\fR will default to \fBNONE\fR. +.SH EXAMPLES +First, a simple example of using \fBreturn\fR to return from a +procedure, interrupting the procedure body. +.CS +proc printOneLine {} { + puts "line 1" ;# This line will be printed. + \fBreturn\fR + puts "line 2" ;# This line will not be printed. +} +.CE +.PP +Next, an example of using \fBreturn\fR to set the value +returned by the procedure. +.CS +proc returnX {} {\fBreturn\fR X} +puts [returnX] ;# prints "X" +.CE +.PP +Next, a more complete example, using \fBreturn -code error\fR +to report invalid arguments. +.CS +proc factorial {n} { + if {![string is integer $n] || ($n < 0)} { + \fBreturn\fR -code error \\ + "expected non-negative integer,\\ + but got \\"$n\\"" + } + if {$n < 2} { + \fBreturn\fR 1 + } + set m [expr {$n - 1}] + set code [catch {factorial $m} factor] + if {$code != 0} { + \fBreturn\fR -code $code $factor + } + set product [expr {$n * $factor}] + if {$product < 0} { + \fBreturn\fR -code error \\ + "overflow computing factorial of $n" + } + \fBreturn\fR $product +} +.CE +.PP +Next, a procedure replacement for \fBbreak\fR. +.CS +proc myBreak {} { + \fBreturn\fR -code break +} +.CE .SH "SEE ALSO" -break(n), continue(n), error(n), proc(n) +break(n), catch(n), continue(n), error(n), proc(n), source(n), tclvars(n) .SH KEYWORDS -break, continue, error, procedure, return +break, catch, continue, error, procedure, return diff --git a/doc/safe.n b/doc/safe.n index 38bc360..39f54ae 100644 --- a/doc/safe.n +++ b/doc/safe.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: safe.n,v 1.4 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: safe.n,v 1.4.2.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH "Safe Tcl" n 8.0 Tcl "Tcl Built-In Commands" @@ -209,7 +209,7 @@ thus specifies the safe interpreter will be allowed to load packages into its own sub-interpreters. .TP \fB\-deleteHook\fR \fIscript\fR -When this option is given an non empty \fIscript\fR, it will be +When this option is given a non-empty \fIscript\fR, it will be evaluated in the master with the name of the safe interpreter as an additional argument just before actually deleting the safe interpreter. @@ -288,7 +288,7 @@ executing. The only valid file names arguments for the \fBsource\fR and \fBload\fR aliases provided to the slave are path in the form of -\fB[file join \fR\fItoken filename\fR\fB]\fR (ie, when using the +\fB[file join \fR\fItoken filename\fR\fB]\fR (i.e. when using the native file path formats: \fItoken\fR\fB/\fR\fIfilename\fR on Unix, \fItoken\fR\fB\\\fIfilename\fR on Windows, and \fItoken\fR\fB:\fR\fIfilename\fR on the Mac), @@ -338,7 +338,7 @@ explicitly specifying your directory list with the \fB\-accessPath\fR flag instead of relying on this default mechanism. .PP When the \fIaccessPath\fR is changed after the first creation or -initialization (ie through \fBinterpConfigure -accessPath \fR\fIlist\fR), +initialization (i.e. through \fBinterpConfigure -accessPath \fR\fIlist\fR), an \fBauto_reset\fR is automatically evaluated in the safe interpreter to synchronize its \fBauto_index\fR with the new token list. diff --git a/doc/scan.n b/doc/scan.n index 81ff539..3e32f4a 100644 --- a/doc/scan.n +++ b/doc/scan.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: scan.n,v 1.9 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: scan.n,v 1.9.2.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH scan n 8.4 Tcl "Tcl Built-In Commands" @@ -33,7 +33,6 @@ inline manner, returning the data that would otherwise be stored in the variables as a list. In the inline case, an empty string is returned when the end of the input string is reached before any conversions have been performed. - .SH "DETAILS ON SCANNING" .PP \fBScan\fR operates by scanning \fIstring\fR and \fIformat\fR together. @@ -188,7 +187,6 @@ white-space character is encountered or when the maximum field width has been reached, whichever comes first. If a \fB*\fR is present in the conversion specifier then no variable is assigned and the next scan argument is not consumed. - .SH "DIFFERENCES FROM ANSI SSCANF" .PP The behavior of the \fBscan\fR command is the same as the behavior of @@ -209,6 +207,55 @@ modifiers are ignored when converting real values (i.e. type .IP [4] If the end of the input string is reached before any conversions have been performed and no variables are given, an empty string is returned. +.SH EXAMPLES +Parse a simple color specification of the form \fI#RRGGBB\fR using +hexadecimal conversions with field sizes: +.CS +set string "#08D03F" +\fBscan\fR $string "#%2x%2x%2x" r g b +.CE +.PP +Parse a \fIHH:MM\fR time string, noting that this avoids problems with +octal numbers by forcing interpretation as decimals (if we did not +care, we would use the \fB%i\fR conversion instead): +.CS +set string "08:08" ;# *Not* octal! +if {[\fBscan\fR $string "%d:%d" hours minutes] != 2} { + error "not a valid time string" +} +# We have to understand numeric ranges ourselves... +if {$minutes < 0 || $minutes > 59} { + error "invalid number of minutes" +} +.CE +.PP +Break a string up into sequences of non-whitespace characters (note +the use of the \fB%n\fR conversion so that we get skipping over +leading whitespace correct): +.CS +set string " a string {with braced words} + leading space " +set words {} +while {[\fBscan\fR $string %s%n word length] == 2} { + lappend words $word + set string [string range $string $length end] +} +.CE +.PP +Parse a simple coordinate string, checking that it is complete by +looking for the terminating character explicitly: +.CS +set string "(5.2,-4e-2)" +# Note that the spaces before the literal parts of +# the scan pattern are significant, and that ")" is +# the Unicode character \\u0029 +if { + [\fBscan\fR $string " (%f ,%f %c" x y last] != 3 + || $last != 0x0029 +} then { + error "invalid coordinate string" +} +puts "X=$x, Y=$y" +.CE .SH "SEE ALSO" format(n), sscanf(3) diff --git a/doc/seek.n b/doc/seek.n index 5f3118a..efd6ef7 100644 --- a/doc/seek.n +++ b/doc/seek.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: seek.n,v 1.5 2001/09/14 19:20:40 andreas_kupries Exp $ +'\" RCS: @(#) $Id: seek.n,v 1.5.8.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH seek n 8.1 Tcl "Tcl Built-In Commands" @@ -62,6 +62,27 @@ Note that \fIoffset\fR values are byte offsets, not character offsets. Both \fBseek\fR and \fBtell\fR operate in terms of bytes, not characters, unlike \fBread\fR. .VE 8.1 +.SH EXAMPLES +Read a file twice: +.CS +set f [open file.txt] +set data1 [read $f] +\fBseek\fR $f 0 +set data2 [read $f] +close $f +# $data1 == $data2 if the file wasn't updated +.CE +.PP +Read the last 10 bytes from a file: +.CS +set f [open file.data] +# This is guaranteed to work with binary data but +# may fail with other encodings... +fconfigure $f -translation binary +\fBseek\fR $f -10 end +set data [read $f 10] +close $f +.CE .SH "SEE ALSO" file(n), open(n), close(n), gets(n), tell(n), Tcl_StandardChannels(3) diff --git a/doc/set.n b/doc/set.n index 1ab7ac5..25a000a 100644 --- a/doc/set.n +++ b/doc/set.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: set.n,v 1.3.18.1 2004/05/24 19:24:37 msofer Exp $ +'\" RCS: @(#) $Id: set.n,v 1.3.18.2 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH set n "" Tcl "Tcl Built-In Commands" @@ -41,6 +41,32 @@ If a procedure is active and \fIvarName\fR is unqualified, then \fIvarName\fR refers to a parameter or local variable of the procedure, unless \fIvarName\fR was declared to resolve differently through one of the \fBglobal\fR, \fBvariable\fR or \fBupvar\fR commands. +.SH EXAMPLES +Store a random number in the variable \fIr\fR: +.CS +\fBset\fR r [expr rand()] +.CE +.PP +Store a short message in an array element: +.CS +\fBset\fR anAry(msg) "Hello, World!" +.CE +.PP +Store a short message in an array element specified by a variable: +.CS +\fBset\fR elemName "msg" +\fBset\fR anAry($elemName) "Hello, World!" +.CE +.PP +Copy a value into the variable \fIout\fR from a variable whose name is +stored in the \fIvbl\fR (note that it is often easier to use arrays in +practice instead of doing double-dereferencing): +.CS +\fBset\fR in0 "small random" +\fBset\fR in1 "large random" +\fBset\fR vbl in[expr {rand() >= 0.5}] +\fBset\fR out [\fBset\fR $vbl] +.CE .SH "SEE ALSO" expr(n), global(n), namespace(n), proc(n), trace(n), unset(n), upvar(n), variable(n) diff --git a/doc/socket.n b/doc/socket.n index ba0feb5..21dd33c 100644 --- a/doc/socket.n +++ b/doc/socket.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: socket.n,v 1.7.2.2 2003/05/15 18:41:06 hobbs Exp $ +'\" RCS: @(#) $Id: socket.n,v 1.7.2.3 2004/10/27 14:23:58 dkf Exp $ .so man.macros .TH socket n 8.0 Tcl "Tcl Built-In Commands" .BS @@ -36,7 +36,6 @@ will need to use \fBfconfigure\fR to alter this to something else, such as \fIutf\-8\fR (ideal for communicating with other Tcl processes) or \fIiso8859\-1\fR (useful for many network protocols, especially the older ones). - .SH "CLIENT SOCKETS" .PP If the \fB\-server\fR option is not specified, then the client side of a @@ -47,7 +46,7 @@ to connect to; there must be a server accepting connections on this port. \fIPort\fR is an integer port number (or service name, where supported and understood by the host operating system) and \fIhost\fR -is either a domain-style name such as \fBwww.sunlabs.com\fR or +is either a domain-style name such as \fBwww.tcl.tk\fR or a numerical IP address such as \fB127.0.0.1\fR. Use \fIlocalhost\fR to refer to the host on which the command is invoked. .PP @@ -78,13 +77,14 @@ operation will wait until the connection is completed or fails. If the socket is in nonblocking mode and a \fBgets\fR or \fBflush\fR is done on the socket before the connection attempt succeeds or fails, the operation returns immediately and \fBfblocked\fR on the socket returns 1. - .SH "SERVER SOCKETS" .PP If the \fB\-server\fR option is specified then the new socket will be a server for the port given by \fIport\fR (either an integer or a service name, where supported and understood by the host -operating system). +operating system; if \fIport\fR is zero, the operating system will +allocate a free port to the server socket which may be discovered by +using \fBfconfigure\fR to read the \fB\-sockname\fR option). Tcl will automatically accept connections to the given port. For each connection Tcl will create a new channel that may be used to communicate with the client. Tcl then invokes \fIcommand\fR @@ -116,10 +116,9 @@ will be accepted. .PP If \fIport\fR is specified as zero, the operating system will allocate an unused port for use as a server socket. The port number actually -allocated my be retrieved from the created server socket using the +allocated may be retrieved from the created server socket using the \fBfconfigure\fR command to retrieve the \fB\-sockname\fR option as described below. - .SH "CONFIGURATION OPTIONS" The \fBfconfigure\fR command can be used to query several readonly configuration options for socket channels: @@ -143,6 +142,27 @@ address, the host name and the port to which the peer socket is connected or bound. If the host name cannot be computed, the second element of the list is identical to the address, its first element. .PP +.SH "EXAMPLES" +Here is a very simple time server: +.CS +proc Server {channel clientaddr clientport} { + puts "Connection from $clientaddr registered" + puts $channel [clock format [clock seconds]] + close $channel +} + +\fBsocket\fR -server Server 9900 +vwait forever +.CE +.PP +And here is the corresponding client to talk to the server: +.CS +set server localhost +set sockChan [\fBsocket\fR $server 9900] +gets $sockChan line +close $sockChan +puts "The time on $server is $line" +.CE .SH "SEE ALSO" fconfigure(n), flush(n), open(n), read(n) diff --git a/doc/source.n b/doc/source.n index 7276a9c..a864733 100644 --- a/doc/source.n +++ b/doc/source.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: source.n,v 1.5 2000/09/07 14:27:51 poenitz Exp $ +'\" RCS: @(#) $Id: source.n,v 1.5.18.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH source n "" Tcl "Tcl Built-In Commands" @@ -50,9 +50,22 @@ what \fBTEXT\fR resource to source by either name or id. By default Tcl searches all open resource files, which include the current application and any loaded C extensions. Alternatively, you may specify the \fIfileName\fR where the \fBTEXT\fR resource can be found. +.SH EXAMPLE +Run the script in the file \fBfoo.tcl\fR and then the script in the +file \fBbar.tcl\fR: +.CS +\fBsource\fR foo.tcl +\fBsource\fR bar.tcl +.CE +Alternatively: +.CS +foreach scriptFile {foo.tcl bar.tcl} { + \fBsource\fR $scriptFile +} +.CE .SH "SEE ALSO" -file(n), cd(n) +file(n), cd(n), info(n) .SH KEYWORDS file, script diff --git a/doc/split.n b/doc/split.n index b42c978..5caade5 100644 --- a/doc/split.n +++ b/doc/split.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: split.n,v 1.3 2000/09/07 14:27:51 poenitz Exp $ +'\" RCS: @(#) $Id: split.n,v 1.3.18.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH split n "" Tcl "Tcl Built-In Commands" @@ -30,15 +30,56 @@ character of \fIstring\fR is in \fIsplitChars\fR. If \fIsplitChars\fR is an empty string then each character of \fIstring\fR becomes a separate element of the result list. \fISplitChars\fR defaults to the standard white-space characters. -For example, +.SH EXAMPLES +Divide up a USENET group name into its hierarchical components: .CS -\fBsplit "comp.unix.misc" .\fR +\fBsplit\fR "comp.lang.tcl.announce" . + \fI=> comp lang tcl announce\fR .CE -returns \fB"comp unix misc"\fR and +.PP +See how the \fBsplit\fR command splits on \fIevery\fR character in +\fIsplitChars\fR, which can result in information loss if you are not +careful: +.CS +\fBsplit\fR "alpha beta gamma" "temp" + \fI=> al {ha b} {} {a ga} {} a\fR +.CE +.PP +Extract the list words from a string that is not a well-formed list: +.CS +\fBsplit\fR "Example with {unbalanced brace character" + \fI=> Example with \\{unbalanced brace character\fR +.CE +.PP +Split a string into its constituent characters .CS -\fBsplit "Hello world" {}\fR +\fBsplit\fR "Hello world" {} + \fI=> H e l l o { } w o r l d\fR +.CE +.SH "PARSING RECORD-ORIENTED FILES" +Parse a Unix /etc/passwd file, which consists of one entry per line, +with each line consisting of a colon-separated list of fields: +.CS +## Read the file +set fid [open /etc/passwd] +set content [read $fid] +close $fid + +## Split into records on newlines +set records [\fBsplit\fR $content "\\n"] + +## Iterate over the records +foreach rec $records { + + ## Split into fields on colons + set fields [\fBsplit\fR $rec ":"] + + ## Assign fields to variables and print some out... + lassign $fields \\ + userName password uid grp longName homeDir shell + puts "$longName uses [file tail $shell] for a login shell" +} .CE -returns \fB"H e l l o { } w o r l d"\fR. .SH "SEE ALSO" join(n), list(n), string(n) diff --git a/doc/string.n b/doc/string.n index 49ef611..92925a0 100644 --- a/doc/string.n +++ b/doc/string.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: string.n,v 1.17.2.2 2004/10/27 09:35:38 dkf Exp $ +'\" RCS: @(#) $Id: string.n,v 1.17.2.3 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH string n 8.1 Tcl "Tcl Built-In Commands" @@ -315,11 +315,11 @@ single character other than these. Test if the string in the variable \fIstring\fR is a proper non-empty prefix of the string \fBfoobar\fR. .CS -set length [\fBstring\fR length $string] +set length [\fBstring length\fR $string] if {$length == 0} { - set isPrefix 0 + set isPrefix 0 } else { - set isPrefix [\fBstring\fR equal -length $string $string "foobar"] + set isPrefix [\fBstring equal\fR -length $string $string "foobar"] } .CE diff --git a/doc/subst.n b/doc/subst.n index 829b077..71b17f6 100644 --- a/doc/subst.n +++ b/doc/subst.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: subst.n,v 1.5 2002/04/18 16:31:40 dgp Exp $ +'\" RCS: @(#) $Id: subst.n,v 1.5.2.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH subst n 7.4 Tcl "Tcl Built-In Commands" @@ -66,31 +66,31 @@ When it performs its substitutions, \fIsubst\fR does not give any special treatment to double quotes or curly braces (except within command substitutions) so the script .CS -\fBset a 44 -subst {xyz {$a}}\fR +set a 44 +\fBsubst\fR {xyz {$a}} .CE returns ``\fBxyz {44}\fR'', not ``\fBxyz {$a}\fR'' .VS 8.4 and the script .CS -\fBset a "p\\} q \\{r" -subst {xyz {$a}}\fR +set a "p\\} q \\{r" +\fBsubst\fR {xyz {$a}} .CE return ``\fBxyz {p} q {r}\fR'', not ``\fBxyz {p\\} q \\{r}\fR''. .PP When command substitution is performed, it includes any variable substitution necessary to evaluate the script. .CS -\fBset a 44 -subst -novariables {$a [format $a]}\fR +set a 44 +\fBsubst\fR -novariables {$a [format $a]} .CE returns ``\fB$a 44\fR'', not ``\fB$a $a\fR''. Similarly, when variable substitution is performed, it includes any command substitution necessary to retrieve the value of the variable. .CS -\fBproc b {} {return c} +proc b {} {return c} array set a {c c [b] tricky} -subst -nocommands {[b] $a([b])}\fR +\fBsubst\fR -nocommands {[b] $a([b])} .CE returns ``\fB[b] c\fR'', not ``\fB[b] tricky\fR''. .PP @@ -99,21 +99,21 @@ prevent substitution of the rest of the command substitution and the rest of \fIstring\fR respectively, giving script authors more options when processing text using \fIsubst\fR. For example, the script .CS -\fBsubst {abc,[break],def}\fR +\fBsubst\fR {abc,[break],def} .CE returns ``\fBabc,\fR'', not ``\fBabc,,def\fR'' and the script .CS -\fBsubst {abc,[continue;expr 1+2],def}\fR +\fBsubst\fR {abc,[continue;expr 1+2],def} .CE returns ``\fBabc,,def\fR'', not ``\fBabc,3,def\fR''. .PP Other exceptional return codes substitute the returned value .CS -\fBsubst {abc,[return foo;expr 1+2],def}\fR +\fBsubst\fR {abc,[return foo;expr 1+2],def} .CE returns ``\fBabc,foo,def\fR'', not ``\fBabc,3,def\fR'' and .CS -\fBsubst {abc,[return -code 10 foo;expr 1+2],def}\fR +\fBsubst\fR {abc,[return -code 10 foo;expr 1+2],def} .CE also returns ``\fBabc,foo,def\fR'', not ``\fBabc,3,def\fR''. .VE diff --git a/doc/switch.n b/doc/switch.n index a17dd93..6d9bdc1 100644 --- a/doc/switch.n +++ b/doc/switch.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: switch.n,v 1.5 2000/09/07 14:27:51 poenitz Exp $ +'\" RCS: @(#) $Id: switch.n,v 1.5.18.1 2004/10/27 14:23:58 dkf Exp $ '\" .so man.macros .TH switch n 7.0 Tcl "Tcl Built-In Commands" @@ -78,37 +78,43 @@ several patterns. Beware of how you place comments in \fBswitch\fR commands. Comments should only be placed \fBinside\fR the execution body of one of the patterns, and not intermingled with the patterns. -.PP -Below are some examples of \fBswitch\fR commands: +.SH "EXAMPLES" +The \fBswitch\fR command can match against variables and not just +literals, as shown here (the result is \fI2\fR): .CS -\fBswitch\0abc\0a\0\-\0b\0{format 1}\0abc\0{format 2}\0default\0{format 3}\fR +set foo "abc" +\fBswitch\fR abc a \- b {expr 1} $foo {expr 2} default {expr 3} .CE -will return \fB2\fR, +.PP +Using glob matching and the fall-through body is an alternative to +writing regular expressions with alternations, as can be seen here +(this returns \fI1\fR): .CS -\fBswitch\0\-regexp\0aaab { - ^a.*b$\0\- - b\0{format 1} - a*\0{format 2} - default\0{format 3} -}\fR +\fBswitch\fR \-glob aaab { + a*b \- + b {expr 1} + a* {expr 2} + default {expr 3} +} .CE -will return \fB1\fR, and +.PP +Whenever nothing matches, the \fBdefault\fR clause (which must be +last) is taken. This example has a result of \fI3\fR: .CS -\fBswitch\0xyz { - a - \- - b - { - # Correct Comment Placement - format 1 - } - a* - {format 2} - default - {format 3} -}\fR +\fBswitch\fR xyz { + a \- + b { + # Correct Comment Placement + expr 1 + } + c { + expr 2 + } + default { + expr 3 + } +} .CE -will return \fB3\fR. .SH "SEE ALSO" for(n), if(n), regexp(n) -- cgit v0.12 From 4955bdc67b8a5c3d9d12cf70cfe0b73c8a4f4ca8 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 27 Oct 2004 14:43:09 +0000 Subject: Finished user-level documentation backport --- ChangeLog | 2 +- doc/tcltest.n | 44 ++++++++++++++++++++++---------------------- doc/tclvars.n | 28 ++++++++++++++-------------- doc/tell.n | 15 ++++++++++++++- doc/time.n | 12 +++++++++++- doc/trace.n | 41 ++++++++++++++++++++++++++++++++--------- doc/unknown.n | 16 +++++++++++++++- doc/unset.n | 25 +++++++++++++++++++++++-- doc/update.n | 18 +++++++++++++++++- doc/uplevel.n | 26 +++++++++++++++++++++++--- doc/upvar.n | 26 +++++++++++++++++--------- doc/variable.n | 35 ++++++++++++++++++++++++++++++++++- doc/vwait.n | 42 ++++++++++++++++++++++++++++++++++++++++-- doc/while.n | 17 +++++++++++++---- 14 files changed, 276 insertions(+), 71 deletions(-) diff --git a/ChangeLog b/ChangeLog index c7d379b..0569fbf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ 2004-10-26 Donal K. Fellows - * doc/[a-s]*.n: Backporting of documentation updates. + * doc/*.n: Backporting of documentation updates. 2004-10-26 Don Porter diff --git a/doc/tcltest.n b/doc/tcltest.n index b019def..64b3dd4 100644 --- a/doc/tcltest.n +++ b/doc/tcltest.n @@ -8,7 +8,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tcltest.n,v 1.38.2.4 2004/02/18 01:43:49 dgp Exp $ +'\" RCS: @(#) $Id: tcltest.n,v 1.38.2.5 2004/10/27 14:43:13 dkf Exp $ '\" .so man.macros .TH "tcltest" n 2.2 tcltest "Tcl Bundled Packages" @@ -378,7 +378,7 @@ also influence how [\fBtest\fR] operates. The valid options for [\fBtest\fR] are summarized: .CS .ta 0.8i -test \fIname\fR \fIdescription\fR +\fBtest\fR \fIname\fR \fIdescription\fR ?-constraints \fIkeywordList|expression\fR? ?-setup \fIsetupScript\fR? ?-body \fItestScript\fR? @@ -663,7 +663,7 @@ only constraints from the [\fBconfigure -constraints\fR] list are run; all others are skipped. For example, one might set up a configuration with .CS -configure -constraints knownBug \e +\fBconfigure\fR -constraints knownBug \e -limitconstraints true \e -verbose pass .CE @@ -683,7 +683,7 @@ that match any of the patterns in [\fBconfigure -file\fR] and match none of the patterns in [\fBconfigure -notfile\fR] is generated and sorted. Then each file will be evaluated in turn. If [\fBconfigure -singleproc\fR] is true, then each file will -be [\fBsource\fR]d in the caller's context. If if is false, +be [\fBsource\fR]d in the caller's context. If it is false, then a copy of [\fBinterpreter\fR] will be [\fBexec\fR]d to evaluate each file. The multi-process operation is useful when testing can cause errors so severe that a process @@ -873,7 +873,7 @@ command. We begin with several examples. .IP [1] Test of a script that returns normally. .CS -test example-1.0 {normal return} { +\fBtest\fR example-1.0 {normal return} { format %s value } value .CE @@ -881,7 +881,7 @@ test example-1.0 {normal return} { Test of a script that requires context setup and cleanup. Note the bracing and indenting style that avoids any need for line continuation. .CS -test example-1.1 {test file existence} -setup { +\fBtest\fR example-1.1 {test file existence} -setup { set file [makeFile {} test] } -body { file exists $file @@ -892,14 +892,14 @@ test example-1.1 {test file existence} -setup { .IP [3] Test of a script that raises an error. .CS -test example-1.2 {error return} -body { +\fBtest\fR example-1.2 {error return} -body { error message } -returnCodes error -result message .CE .IP [4] Test with a constraint. .CS -test example-1.3 {user owns created files} -constraints { +\fBtest\fR example-1.3 {user owns created files} -constraints { unix } -setup { set file [makeFile {} test] @@ -923,8 +923,8 @@ Use constraints to skip tests, rather than conditional evaluation of [\fBtest\fR]. That is, do this: .IP [5] .CS -testConstraint X [expr $myRequirement] -test goodConditionalTest {} X { +\fBtestConstraint\fR X [expr $myRequirement] +\fBtest\fR goodConditionalTest {} X { # body } result .CE @@ -967,23 +967,23 @@ should be called. Here is a sketch of a sample test file illustrating those points: .CS package require tcltest 2.2 -eval tcltest::configure $argv +eval \fB::tcltest::configure\fR $argv package require example namespace eval ::example::test { namespace import ::tcltest::* - testConstraint X [expr {...}] + \fBtestConstraint\fR X [expr {...}] variable SETUP {#common setup code} variable CLEANUP {#common cleanup code} - test example-1 {} -setup $SETUP -body { + \fBtest\fR example-1 {} -setup $SETUP -body { # First test } -cleanup $CLEANUP -result {...} - test example-2 {} -constraints X -setup $SETUP -body { + \fBtest\fR example-2 {} -constraints X -setup $SETUP -body { # Second test; constrained } -cleanup $CLEANUP -result {...} - test example-3 {} { + \fBtest\fR example-3 {} { # Third test; no context required } {...} - cleanupTests + \fBcleanupTests\fR } namespace delete ::example::test .CE @@ -1000,10 +1000,10 @@ Here is a sketch of a sample test suite master script: package require Tcl 8.4 package require tcltest 2.2 package require example -tcltest::configure -testdir \ +\fB::tcltest::configure\fR -testdir \ [file dirname [file normalize [info script]]] -eval tcltest::configure $argv -tcltest::runAllTests +eval \fB::tcltest::configure\fR $argv +\fB::tcltest::runAllTests\fR .CE .SH COMPATIBILITY .PP @@ -1021,7 +1021,7 @@ that depend on the old behavior that \fBtcltest\fR was automatically configured from command line arguments. New test files should not depend on this, but should explicitly include .CS -eval tcltest::configure $::argv +eval \fB::tcltest::configure\fR $::argv .CE to establish a configuration from command line arguments. .SH "KNOWN ISSUES" @@ -1030,9 +1030,9 @@ The first issue relates to the stack level in which test scripts are executed. Tests nested within other tests may be executed at the same stack level as the outermost test. For example, in the following code: .CS -test level-1.1 {level 1} { +\fBtest\fR level-1.1 {level 1} { -body { - test level-2.1 {level 2} { + \fBtest\fR level-2.1 {level 2} { } } } diff --git a/doc/tclvars.n b/doc/tclvars.n index 92de6a5..f3c58f4 100644 --- a/doc/tclvars.n +++ b/doc/tclvars.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tclvars.n,v 1.13 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: tclvars.n,v 1.13.2.1 2004/10/27 14:43:14 dkf Exp $ '\" .so man.macros .TH tclvars n 8.0 Tcl "Tcl Built-In Commands" @@ -247,7 +247,6 @@ be defined, but they may have empty strings as values if Tcl couldn't retrieve any relevant information. In addition, extensions and applications may add additional values to the array. The predefined elements are: - .RS .VS .TP @@ -257,10 +256,11 @@ The native byte order of this machine: either \fBlittleEndian\fR or .VE .TP \fBdebug\fR -If this variable exists, then the interpreter -was compiled with debugging symbols enabled. This variable will only -exist on Windows so extension writers can specify which package to load -depending on the C run-time library that is loaded. +If this variable exists, then the interpreter was compiled with and linked +to a debug-enabled C run-time. This variable will only exist on Windows, +so extension writers can specify which package to load depending on the +C run-time library that is in use. This is not an indication that this core +contains symbols. .TP \fBmachine\fR The instruction set executed by this machine, such as @@ -343,24 +343,24 @@ The value of this variable can be set to control how much tracing information is displayed during bytecode compilation. By default, tcl_traceCompile is zero and no information is displayed. -Setting tcl_traceCompile to 1 generates a one line summary in stdout -whenever a procedure or top level command is compiled. +Setting tcl_traceCompile to 1 generates a one-line summary in stdout +whenever a procedure or top-level command is compiled. Setting it to 2 generates a detailed listing in stdout of the bytecode instructions emitted during every compilation. This variable is useful in tracking down suspected problems with the Tcl compiler. It is also occasionally useful when converting existing code to use Tcl8.0. - +.PP This variable and functionality only exist if -TCL_COMPILE_DEBUG was defined during Tcl's compilation. +\fBTCL_COMPILE_DEBUG\fR was defined during Tcl's compilation. .TP \fBtcl_traceExec\fR The value of this variable can be set to control how much tracing information is displayed during bytecode execution. By default, tcl_traceExec is zero and no information is displayed. -Setting tcl_traceExec to 1 generates a one line trace in stdout +Setting tcl_traceExec to 1 generates a one-line trace in stdout on each call to a Tcl procedure. Setting it to 2 generates a line of output whenever any Tcl command is invoked @@ -368,7 +368,7 @@ that contains the name of the command and its arguments. Setting it to 3 produces a detailed trace showing the result of executing each bytecode instruction. Note that when tcl_traceExec is 2 or 3, -commands such as set and incr +commands such as \fBset\fR and \fBincr\fR that have been entirely replaced by a sequence of bytecode instructions are not shown. Setting this variable is useful in @@ -376,9 +376,9 @@ tracking down suspected problems with the bytecode compiler and interpreter. It is also occasionally useful when converting code to use Tcl8.0. - +.PP This variable and functionality only exist if -TCL_COMPILE_DEBUG was defined during Tcl's compilation. +\fBTCL_COMPILE_DEBUG\fR was defined during Tcl's compilation. .TP \fBtcl_wordchars\fR The value of this variable is a regular expression that can be set to diff --git a/doc/tell.n b/doc/tell.n index c9475ed..134ae36 100644 --- a/doc/tell.n +++ b/doc/tell.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tell.n,v 1.5 2001/09/14 19:20:40 andreas_kupries Exp $ +'\" RCS: @(#) $Id: tell.n,v 1.5.8.1 2004/10/27 14:43:14 dkf Exp $ '\" .so man.macros .TH tell n 8.1 Tcl "Tcl Built-In Commands" @@ -34,6 +34,19 @@ Tcl standard channel (\fBstdin\fR, \fBstdout\fR, or \fBstderr\fR), the return value from an invocation of \fBopen\fR or \fBsocket\fR, or the result of a channel creation command provided by a Tcl extension. .VE +.SH EXAMPLE +Read a line from a file channel only if it starts with \fBfoobar\fR: +.CS +# Save the offset in case we need to undo the read... +set offset [\fBtell\fR $chan] +if {[read $chan 6] eq "foobar"} { + gets $chan line +} else { + set line {} + # Undo the read... + seek $chan $offset +} +.CE .SH "SEE ALSO" file(n), open(n), close(n), gets(n), seek(n), Tcl_StandardChannels(3) diff --git a/doc/time.n b/doc/time.n index 11d123f..8eeab73 100644 --- a/doc/time.n +++ b/doc/time.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: time.n,v 1.3 2000/09/07 14:27:52 poenitz Exp $ +'\" RCS: @(#) $Id: time.n,v 1.3.18.1 2004/10/27 14:43:14 dkf Exp $ '\" .so man.macros .TH time n "" Tcl "Tcl Built-In Commands" @@ -28,6 +28,16 @@ specified). It will then return a string of the form which indicates the average amount of time required per iteration, in microseconds. Time is measured in elapsed time, not CPU time. +.SH EXAMPLE +Estimate how long it takes for a simple Tcl \fBfor\fR loop to count to +a thousand: +.CS +time { + for {set i 0} {$i<1000} {incr i} { + # empty body + } +} +.CE .SH "SEE ALSO" clock(n) diff --git a/doc/trace.n b/doc/trace.n index b81d275..377d257 100644 --- a/doc/trace.n +++ b/doc/trace.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: trace.n,v 1.13.2.1 2003/10/08 17:51:07 dgp Exp $ +'\" RCS: @(#) $Id: trace.n,v 1.13.2.2 2004/10/27 14:43:14 dkf Exp $ '\" .so man.macros .TH trace n "8.4" Tcl "Tcl Built-In Commands" @@ -90,16 +90,16 @@ Invoke \fIcommand\fR whenever the command \fIname\fR is executed, just after the actual execution takes place. .TP \fBenterstep\fR -Invoke \fIcommand\fR for every tcl command which is executed +Invoke \fIcommand\fR for every Tcl command which is executed inside the procedure \fIname\fR, just before the actual execution takes place. For example if we have 'proc foo {} { puts "hello" }', -then a \fIenterstep\fR trace would be +then an \fIenterstep\fR trace would be invoked just before \fIputs "hello"\fR is executed. -Setting a \fIenterstep\fR trace on a \fIcommand\fR +Setting an \fIenterstep\fR trace on a \fIcommand\fR will not result in an error and is simply ignored. .TP \fBleavestep\fR -Invoke \fIcommand\fR for every tcl command which is executed +Invoke \fIcommand\fR for every Tcl command which is executed inside the procedure \fIname\fR, just after the actual execution takes place. Setting a \fIleavestep\fR trace on a \fIcommand\fR @@ -141,7 +141,7 @@ Note that the creation of many \fBenterstep\fR or \fBleavestep\fR traces can lead to unintuitive results, since the invoked commands from one trace can themselves lead to further command invocations for other traces. - +.PP \fICommand\fR executes in the same context as the code that invoked the traced operation: thus the \fIcommand\fR, if invoked from a procedure, will have access to the same local variables as code in the procedure. @@ -149,19 +149,19 @@ This context may be different than the context in which the trace was created. If \fIcommand\fR invokes a procedure (which it normally does) then the procedure will have to use upvar or uplevel commands if it wishes to access the local variables of the code which invoked the trace operation. - +.PP While \fIcommand\fR is executing during an execution trace, traces on \fIname\fR are temporarily disabled. This allows the \fIcommand\fR to execute \fIname\fR in its body without invoking any other traces again. If an error occurs while executing the \fIcommand\fR body, then the command \fIname\fR as a whole will return that same error. - +.PP When multiple traces are set on \fIname\fR, then for \fIenter\fR and \fIenterstep\fR operations, the traced commands are invoked in the reverse order of how the traces were originally created; and for \fIleave\fR and \fIleavestep\fR operations, the traced commands are invoked in the original order of creation. - +.PP The behavior of execution traces is currently undefined for a command \fIname\fR imported into another namespace. .RE @@ -354,6 +354,29 @@ future version of Tcl. They use an older syntax in which \fBarray\fR, \fBw\fR and \fBu\fR respectively, and the \fIops\fR argument is not a list, but simply a string concatenation of the operations, such as \fBrwua\fR. +.SH EXAMPLES +Print a message whenever either of the global variables \fBfoo\fR and +\fBbar\fR are updated, even if they have a different local name at the +time (which can be done with the \fBupvar\fR command): +.CS +proc tracer {varname args} { + upvar #0 $varname var + puts "$varname was updated to be \e"$var\e"" +} +\fBtrace add\fR variable foo write "tracer foo" +\fBtrace add\fR variable bar write "tracer bar" +.CE +.PP +Ensure that the global variable \fBfoobar\fR always contains the +product of the global variables \fBfoo\fR and \fBbar\fR: +.CS +proc doMult args { + global foo bar foobar + set foobar [expr {$foo * $bar}] +} +\fBtrace add\fR variable foo write doMult +\fBtrace add\fR variable bar write doMult +.CE .SH "SEE ALSO" set(n), unset(n) diff --git a/doc/unknown.n b/doc/unknown.n index 2ef5b14..bb7549b 100644 --- a/doc/unknown.n +++ b/doc/unknown.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: unknown.n,v 1.4 2001/06/27 21:00:45 hobbs Exp $ +'\" RCS: @(#) $Id: unknown.n,v 1.4.12.1 2004/10/27 14:43:15 dkf Exp $ '\" .so man.macros .TH unknown n "" Tcl "Tcl Built-In Commands" @@ -71,6 +71,20 @@ auto-exec step is skipped. Under normal circumstances the return value from \fBunknown\fR is the return value from the command that was eventually executed. +.SH EXAMPLE +Arrange for the \fBunknown\fR command to have its standard behavior +except for first logging the fact that a command was not found: +.PP +.CS +# Save the original one so we can chain to it +rename \fBunknown\fR _original_unknown + +# Provide our own implementation +proc \fBunknown\fR args { + puts stderr "WARNING: unknown command: $args" + uplevel 1 [list _original_unknown {expand}$args] +} +.CE .SH "SEE ALSO" info(n), proc(n), interp(n), library(n) diff --git a/doc/unset.n b/doc/unset.n index e68c3f2..47124e9 100644 --- a/doc/unset.n +++ b/doc/unset.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: unset.n,v 1.5.18.1 2004/05/07 22:29:05 msofer Exp $ +'\" RCS: @(#) $Id: unset.n,v 1.5.18.2 2004/10/27 14:43:15 dkf Exp $ '\" .so man.macros .TH unset n 8.4 Tcl "Tcl Built-In Commands" @@ -39,9 +39,30 @@ If an error occurs, any variables after the named one causing the error not deleted. An error can occur when the named variable doesn't exist, or the name refers to an array element but the variable is a scalar, or the name refers to a variable in a non-existent namespace. +.SH EXAMPLE +Create an array containing a mapping from some numbers to their +squares and remove the array elements for non-prime numbers: +.CS +array set squares { + 1 1 6 36 + 2 4 7 49 + 3 9 8 64 + 4 16 9 81 + 5 25 10 100 +} + +puts "The squares are:" +parray squares + +\fBunset\fR squares(1) squares(4) squares(6) +\fBunset\fR squares(8) squares(9) squares(10) + +puts "The prime squares are:" +parray squares +.CE .SH "SEE ALSO" -set(n), trace(n), unset(n) +set(n), trace(n), upvar(n) .SH KEYWORDS remove, variable diff --git a/doc/update.n b/doc/update.n index 87c2a7d..162c859 100644 --- a/doc/update.n +++ b/doc/update.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: update.n,v 1.4 2000/09/07 14:27:52 poenitz Exp $ +'\" RCS: @(#) $Id: update.n,v 1.4.18.1 2004/10/27 14:43:15 dkf Exp $ '\" .so man.macros .TH update n 7.5 Tcl "Tcl Built-In Commands" @@ -43,6 +43,22 @@ you are performing a long-running computation but you still want the application to respond to events such as user interactions; if you occasionally call \fBupdate\fR then user input will be processed during the next call to \fBupdate\fR. +.SH EXAMPLE +Run computations for about a second and then finish: +.CS +set x 1000 +set done 0 +after 1000 set done 1 +while {!$done} { + # A very silly example! + set x [expr {log($x) ** 2.8}] + + # Test to see if our time-limit has been hit. This would + # also give a chance for serving network sockets and, if + # the Tk package is loaded, updating a user interface. + \fBupdate\fR +} +.CE .SH "SEE ALSO" after(n), bgerror(n) diff --git a/doc/uplevel.n b/doc/uplevel.n index 0d3bf6e..df4db5b 100644 --- a/doc/uplevel.n +++ b/doc/uplevel.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: uplevel.n,v 1.3 2000/09/07 14:27:52 poenitz Exp $ +'\" RCS: @(#) $Id: uplevel.n,v 1.3.18.1 2004/10/27 14:43:15 dkf Exp $ '\" .so man.macros .TH uplevel n "" Tcl "Tcl Built-In Commands" @@ -44,14 +44,14 @@ The \fBuplevel\fR command causes the invoking procedure to disappear from the procedure calling stack while the command is being executed. In the above example, suppose \fBc\fR invokes the command .CS -\fBuplevel 1 {set x 43; d}\fR +\fBuplevel\fR 1 {set x 43; d} .CE where \fBd\fR is another Tcl procedure. The \fBset\fR command will modify the variable \fBx\fR in \fBb\fR's context, and \fBd\fR will execute at level 3, as if called from \fBb\fR. If it in turn executes the command .CS -\fBuplevel {set x 42}\fR +\fBuplevel\fR {set x 42} .CE then the \fBset\fR command will modify the same variable \fBx\fR in \fBb\fR's context: the procedure \fBc\fR does not appear to be on the call stack @@ -72,6 +72,26 @@ describing a command that is either the outermost procedure call or the outermost \fBnamespace eval\fR command. Also, \fBuplevel #0\fR evaluates a script at top-level in the outermost namespace (the global namespace). +.SH EXAMPLE +As stated above, the \fBuplevel\fR command is useful for creating new +control constructs. This example shows how (without error handling) +it can be used to create a \fBdo\fR command that is the counterpart of +\fBwhile\fR except for always performing the test after running the +loop body: +.CS +proc do {body while condition} { + if {$while ne "while"} { + error "required word missing" + } + set conditionCmd [list expr $condition] + while {1} { + \fBuplevel\fR 1 $body + if {![\fBuplevel\fR 1 $conditionCmd]} { + break + } + } +} +.CE .SH "SEE ALSO" namespace(n), upvar(n) diff --git a/doc/upvar.n b/doc/upvar.n index 2b2175e..b73d6a4 100644 --- a/doc/upvar.n +++ b/doc/upvar.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: upvar.n,v 1.5 2000/11/21 15:56:21 dkf Exp $ +'\" RCS: @(#) $Id: upvar.n,v 1.5.18.1 2004/10/27 14:43:15 dkf Exp $ '\" .so man.macros .TH upvar n "" Tcl "Tcl Built-In Commands" @@ -47,8 +47,8 @@ as Tcl procedures. For example, consider the following procedure: .CS \fBproc add2 name { - upvar $name x - set x [expr $x+2] + \fBupvar\fR $name x + set x [expr $x+2] }\fR .CE \fBAdd2\fR is invoked with an argument giving the name of a variable, @@ -75,8 +75,7 @@ upvar variable. There is no way to unset an upvar variable except by exiting the procedure in which it is defined. However, it is possible to retarget an upvar variable by executing another \fBupvar\fR command. - -.SH Traces and upvar +.SH "TRACES AND UPVAR" .PP Upvar interacts with traces in a straightforward but possibly unexpected manner. If a variable trace is defined on \fIotherVar\fR, that @@ -86,24 +85,33 @@ than the name of \fIotherVar\fR. Thus, the output of the following code will be \fBlocalVar\fR rather than \fBoriginalVar\fR: .CS \fBproc traceproc { name index op } { - puts $name + puts $name } proc setByUpvar { name value } { - upvar $name localVar - set localVar $value + \fBupvar\fR $name localVar + set localVar $value } set originalVar 1 trace variable originalVar w traceproc setByUpvar originalVar 2 }\fR .CE - +.PP If \fIotherVar\fR refers to an element of an array, then variable traces set for the entire array will not be invoked when \fImyVar\fR is accessed (but traces on the particular element will still be invoked). In particular, if the array is \fBenv\fR, then changes made to \fImyVar\fR will not be passed to subprocesses correctly. .VE +.SH EXAMPLE +A \fBdecr\fR command that works like \fBincr\fR except it subtracts +the value from the variable instead of adding it: +.CS +proc decr {varName {decrement 1}} { + \fBupvar\fR 1 $varName var + incr var [expr {-$decrement}] +} +.CE .SH "SEE ALSO" global(n), namespace(n), uplevel(n), variable(n) diff --git a/doc/variable.n b/doc/variable.n index 9ef4738..908e5ae 100644 --- a/doc/variable.n +++ b/doc/variable.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: variable.n,v 1.4 2000/11/21 15:56:21 dkf Exp $ +'\" RCS: @(#) $Id: variable.n,v 1.4.18.1 2004/10/27 14:43:15 dkf Exp $ '\" .so man.macros .TH variable n 8.0 Tcl "Tcl Built-In Commands" @@ -58,6 +58,39 @@ and the initialization \fIvalue\fR should be left off. After the variable has been declared, elements within the array can be set using ordinary \fBset\fR or \fBarray\fR commands. +.SH EXAMPLES +Create a variable in a namespace: +.CS +namespace eval foo { + \fBvariable\fR bar 12345 +} +.CE +.PP +Create an array in a namespace: +.CS +namespace eval someNS { + \fBvariable\fR someAry + array set someAry { + someName someValue + otherName otherValue + } +} +.CE +.PP +Access variables in namespaces from a procedure: +.CS +namespace eval foo { + proc spong {} { + # Variable in this namespace + \fBvariable\fR bar + puts "bar is $bar" + + # Variable in another namespace + \fBvariable\fR ::someNS::someAry + parray someAry + } +} +.CE .SH "SEE ALSO" global(n), namespace(n), upvar(n) diff --git a/doc/vwait.n b/doc/vwait.n index 4febe1b..041d79b 100644 --- a/doc/vwait.n +++ b/doc/vwait.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: vwait.n,v 1.4 2000/09/07 14:27:52 poenitz Exp $ +'\" RCS: @(#) $Id: vwait.n,v 1.4.18.1 2004/10/27 14:43:15 dkf Exp $ '\" .so man.macros .TH vwait n 8.0 Tcl "Tcl Built-In Commands" @@ -35,9 +35,47 @@ if an event handler sets \fIvarName\fR and then itself calls for a long time. During this time the top-level \fBvwait\fR is blocked waiting for the event handler to complete, so it cannot return either. +.SH EXAMPLES +Run the event-loop continually until some event calls \fBexit\fR. +(You can use any variable not mentioned elsewhere, but the name +\fIforever\fR reminds you at a glance of the intent.) +.CS +\fBvwait\fR forever +.CE +.PP +Wait five seconds for a connection to a server socket, otherwise +close the socket and continue running the script: +.CS +# Initialise the state +after 5000 set state timeout +set server [socket -server accept 12345] +proc accept {args} { + global state connectionInfo + set state accepted + set connectionInfo $args +} + +# Wait for something to happen +\fBvwait\fR state + +# Clean up events that could have happened +close $server +after cancel set state timeout + +# Do something based on how the vwait finished... +switch $state { + timeout { + puts "no connection on port 12345" + } + accepted { + puts "connection: $connectionInfo" + puts [lindex $connectionInfo 0] "Hello there!" + } +} +.CE .SH "SEE ALSO" -global(n) +global(n), update(n) .SH KEYWORDS event, variable, wait diff --git a/doc/while.n b/doc/while.n index ba5a584..dcaf8fc 100644 --- a/doc/while.n +++ b/doc/while.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: while.n,v 1.3 2000/09/07 14:27:52 poenitz Exp $ +'\" RCS: @(#) $Id: while.n,v 1.3.18.1 2004/10/27 14:43:15 dkf Exp $ '\" .so man.macros .TH while n "" Tcl "Tcl Built-In Commands" @@ -45,9 +45,18 @@ For an example, try the following script with and without the braces around \fB$x<10\fR: .CS set x 0 -while {$x<10} { - puts "x is $x" - incr x +\fBwhile\fR {$x<10} { + puts "x is $x" + incr x +} +.CE +.SH EXAMPLE +Read lines from a channel until we get to the end of the stream, and +print them out with a line-number prepended: +.CS +set lineCount 0 +\fBwhile\fR {[gets $chan line] >= 0} { + puts "[incr lineCount]: $line" } .CE -- cgit v0.12 From 92c681aa2eddf84cf71f8d3debd36a6d452be888 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 27 Oct 2004 15:39:11 +0000 Subject: backport fixes for 868489 and 1026125 --- ChangeLog | 9 ++++++++ generic/tclCmdAH.c | 60 ++++++++++++------------------------------------------ generic/tclObj.c | 8 ++------ tests/format.test | 10 ++++++++- 4 files changed, 33 insertions(+), 54 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0569fbf..59e4f7b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-10-26 Kevin B. Kenny + + * generic/tclCmdAH.c (Tcl_FormatObjCmd): Backport a missing bit + of the bug 868486 fix. + * generic/tclObj.c (SetBooleanFromAny): Backport fix for Bug + 1026125. + * tests/format.test (format-19.1): Additional regression test for + Bug 868489. + 2004-10-26 Donal K. Fellows * doc/*.n: Backporting of documentation updates. diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 4bb76d2..4c43b87 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.8 2003/12/12 16:47:47 vincentdarley Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.9 2004/10/27 15:39:35 kennykb Exp $ */ #include "tclInt.h" @@ -2193,55 +2193,21 @@ Tcl_FormatObjCmd(dummy, interp, objc, objv) case 'u': case 'x': case 'X': - size = 40 + precision; - - /* - * Peek what kind of value we've got so as not to be - * converting stuff unduly. [Bug #699060] - */ - if (objv[objIndex]->typePtr == &tclWideIntType) { - Tcl_GetWideIntFromObj(NULL, objv[objIndex], &wideValue); - if (useWide) { - whichValue = WIDE_VALUE; - break; - } else { - whichValue = INT_VALUE; - if (wideValue>ULONG_MAX || wideValuetypePtr == &tclIntType) { - Tcl_GetLongFromObj(NULL, objv[objIndex], &intValue); - if (useWide) { - whichValue = WIDE_VALUE; - wideValue = Tcl_LongAsWide(intValue); - break; - } else { - whichValue = INT_VALUE; - } - } else { - /* - * No existing numeric interpretation, so we can - * coerce to whichever is convenient. - */ - if (useWide) { - if (Tcl_GetWideIntFromObj(interp, /* INTL: Tcl source. */ - objv[objIndex], &wideValue) != TCL_OK) { - goto fmtError; - } - whichValue = WIDE_VALUE; - break; - } - if (Tcl_GetLongFromObj(interp, /* INTL: Tcl source. */ - objv[objIndex], &intValue) != TCL_OK) { + if ( useWide ) { + if ( Tcl_GetWideIntFromObj( interp, /* INTL: Tcl source. */ + objv[objIndex], &wideValue ) + != TCL_OK ) { goto fmtError; } + whichValue = WIDE_VALUE; + size = 40 + precision; + break; } + if ( Tcl_GetLongFromObj( interp, /* INTL: Tcl source. */ + objv[objIndex], &intValue ) != TCL_OK ) { + goto fmtError; + } + #if (LONG_MAX > INT_MAX) /* * Add the 'l' for long format type because we are on an diff --git a/generic/tclObj.c b/generic/tclObj.c index 8394f46..9c34908 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.8 2004/09/14 16:30:32 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.9 2004/10/27 15:39:36 kennykb Exp $ */ #include "tclInt.h" @@ -1118,11 +1118,7 @@ SetBooleanFromAny(interp, objPtr) } else if (objPtr->typePtr == &tclDoubleType) { newBool = (objPtr->internalRep.doubleValue != 0.0); } else if (objPtr->typePtr == &tclWideIntType) { -#ifdef TCL_WIDE_INT_IS_LONG - newBool = (objPtr->internalRep.longValue != 0); -#else /* !TCL_WIDE_INT_IS_LONG */ - newBool = (objPtr->internalRep.wideValue != Tcl_LongAsWide(0)); -#endif /* TCL_WIDE_INT_IS_LONG */ + newBool = (objPtr->internalRep.wideValue != 0); } else { /* * Copy the string converting its characters to lower case. diff --git a/tests/format.test b/tests/format.test index 487f6c5..6338d0c 100644 --- a/tests/format.test +++ b/tests/format.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: format.test,v 1.11.2.4 2003/05/14 23:01:56 dkf Exp $ +# RCS: @(#) $Id: format.test,v 1.11.2.5 2004/10/27 15:39:36 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -535,6 +535,14 @@ test format-18.2 {do not demote existing numeric values} {wideIntExpressions} { list [catch {format %08x $a} msg] $msg [expr {$a == $b}] } {1 {integer value too large to represent} 1} +test format-19.1 { + regression test - tcl-core message by Brian Griffin on + 26 0ctober 2004 +} { + set x 0x8fedc654 + list [expr { ~ $x }] [format %08x [expr { ~$x }]] +} {-2414724693 701239ab} + # cleanup catch {unset a} catch {unset b} -- cgit v0.12 From 3dc792af1b4092559af5da21b600651cde78c1ff Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 27 Oct 2004 17:55:14 +0000 Subject: fixed format-19.1 for 64 bit machines --- tests/format.test | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/format.test b/tests/format.test index 6338d0c..3ca51ac 100644 --- a/tests/format.test +++ b/tests/format.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: format.test,v 1.11.2.5 2004/10/27 15:39:36 kennykb Exp $ +# RCS: @(#) $Id: format.test,v 1.11.2.6 2004/10/27 17:55:14 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -538,10 +538,10 @@ test format-18.2 {do not demote existing numeric values} {wideIntExpressions} { test format-19.1 { regression test - tcl-core message by Brian Griffin on 26 0ctober 2004 -} { +} -body { set x 0x8fedc654 list [expr { ~ $x }] [format %08x [expr { ~$x }]] -} {-2414724693 701239ab} +} -match regexp -result {-2414724693 f*701239ab} # cleanup catch {unset a} -- cgit v0.12 From eb3bdd1436d6f44483a5067f3d7021ca26e2cce6 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 28 Oct 2004 00:00:44 +0000 Subject: * tests/appendComp.test: Backport test suite fixes of errors * tests/autoMkindex.test: revealed by -singleproc 1 -debug 1 * tests/exec.test: options to make test. * tests/execute.test: * tests/interp.test: * tests/io.test: * tests/namespace.test: * tests/regexpComp.test: * tests/stringComp.test: * tests/unixInit.test: * tests/winPipe.test: --- ChangeLog | 14 +++ tests/appendComp.test | 6 +- tests/autoMkindex.test | 8 +- tests/exec.test | 5 +- tests/execute.test | 12 ++- tests/interp.test | 14 +-- tests/io.test | 6 +- tests/namespace.test | 4 +- tests/regexpComp.test | 262 ++++++++++++++++++++++---------------------- tests/stringComp.test | 288 ++++++++++++++++++++++++------------------------- tests/unixInit.test | 5 +- tests/winPipe.test | 3 +- 12 files changed, 325 insertions(+), 302 deletions(-) diff --git a/ChangeLog b/ChangeLog index 59e4f7b..bf7f3dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2004-10-27 Don Porter + + * tests/appendComp.test: Backport test suite fixes of errors + * tests/autoMkindex.test: revealed by -singleproc 1 -debug 1 + * tests/exec.test: options to make test. + * tests/execute.test: + * tests/interp.test: + * tests/io.test: + * tests/namespace.test: + * tests/regexpComp.test: + * tests/stringComp.test: + * tests/unixInit.test: + * tests/winPipe.test: + 2004-10-26 Kevin B. Kenny * generic/tclCmdAH.c (Tcl_FormatObjCmd): Backport a missing bit diff --git a/tests/appendComp.test b/tests/appendComp.test index e5c96f8..16ffb32 100644 --- a/tests/appendComp.test +++ b/tests/appendComp.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: appendComp.test,v 1.5 2001/11/23 01:25:38 das Exp $ +# RCS: @(#) $Id: appendComp.test,v 1.5.4.1 2004/10/28 00:01:05 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -198,11 +198,11 @@ test appendComp-4.18 {lappend command} { proc foo {} { lappend x {} } foo } {{}} -test append-4.19 {lappend command} { +test appendComp-4.19 {lappend command} { proc foo {} { lappend x(0) } foo } {} -test append-4.20 {lappend command} { +test appendComp-4.20 {lappend command} { proc foo {} { lappend x(0) abc } foo } {abc} diff --git a/tests/autoMkindex.test b/tests/autoMkindex.test index 457e225..a65a406 100644 --- a/tests/autoMkindex.test +++ b/tests/autoMkindex.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: autoMkindex.test,v 1.14 2002/10/03 13:34:32 dkf Exp $ +# RCS: @(#) $Id: autoMkindex.test,v 1.14.2.1 2004/10/28 00:01:06 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -326,15 +326,15 @@ proc {[magic mojo proc]} {} {} test autoMkindex-5.2 {correctly locate auto loaded procs with []} { file delete tclIndex - set res {} + set result {} if { ![catch {auto_mkindex . pkg/magicchar2.tcl}] } { # Make a slave interp to test the autoloading set c [interp create] $c eval {lappend auto_path [pwd]} - set res [$c eval {catch {{[magic mojo proc]}}}] + set result [$c eval {catch {{[magic mojo proc]}}}] interp delete $c } - set res + set result } 0 removeFile [file join pkg magicchar2.tcl] diff --git a/tests/exec.test b/tests/exec.test index e5c9bf7..3613cba 100644 --- a/tests/exec.test +++ b/tests/exec.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: exec.test,v 1.16.2.3 2004/07/02 23:37:31 hobbs Exp $ +# RCS: @(#) $Id: exec.test,v 1.16.2.4 2004/10/28 00:01:06 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -19,7 +19,7 @@ namespace import -force ::tcltest::* # All tests require the "exec" command. # Skip them if exec is not defined. testConstraint exec [llength [info commands exec]] -catch {unset path} +unset -nocomplain path set path(echo) [makeFile { puts -nonewline [lindex $argv 0] foreach str [lrange $argv 1 end] { @@ -605,6 +605,7 @@ test exec-18.1 { exec cat deals with weird file names} {exec tempNotWin} { foreach file {script gorp.file gorp.file2 echo cat wc sh sleep exit err} { removeFile $file } +unset -nocomplain path ::tcltest::cleanupTests return diff --git a/tests/execute.test b/tests/execute.test index 2f7363c..7883ffe 100644 --- a/tests/execute.test +++ b/tests/execute.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: execute.test,v 1.13.2.1 2003/09/19 18:43:00 msofer Exp $ +# RCS: @(#) $Id: execute.test,v 1.13.2.2 2004/10/28 00:01:07 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -713,13 +713,17 @@ test execute-7.34 {Wide int handling} {longIs32bit} { expr {wide(0x1) * 1024 * 1024 * 1024 * 1024} } 1099511627776 -test execute-8.1 {Stack protection} { +test execute-8.1 {Stack protection} -setup { # If [Bug #804681] has not been properly # taken care of, this should segfault proc whatever args {llength $args} trace add variable ::errorInfo {write unset} whatever - catch {expr {1+9/0}} -} 1 +} -body { + expr {1+9/0} +} -cleanup { + trace remove variable ::errorInfo {write unset} whatever + rename whatever {} +} -returnCodes error -match glob -result * # cleanup if {[info commands testobj] != {}} { diff --git a/tests/interp.test b/tests/interp.test index 769f32f..ff6e81e 100644 --- a/tests/interp.test +++ b/tests/interp.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: interp.test,v 1.19.2.5 2003/09/04 17:36:50 dgp Exp $ +# RCS: @(#) $Id: interp.test,v 1.19.2.6 2004/10/28 00:01:07 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -299,6 +299,7 @@ test interp-9.3 {testing aliases for hidden commands} { catch {interp create a} a eval {proc p {} {return ENTER_A}} interp alias {} p a p + set res {} lappend res [list [catch p msg] $msg] interp hide a p lappend res [list [catch p msg] $msg] @@ -2931,11 +2932,12 @@ test interp-32.1 { parent's working directory should test interp-33.1 {refCounting for target words of alias [Bug 730244]} { # This test will panic if Bug 730244 is not fixed. - interp create i - proc test args {return $args} - trace add execution test enter {interp alias i alias {} ;#} - interp alias i alias {} test this - i eval alias + set i [interp create] + proc testHelper args {rename testHelper {}; return $args} + # Note: interp names are simple words by default + trace add execution testHelper enter "interp alias $i alias {} ;#" + interp alias $i alias {} testHelper this + $i eval alias } this # cleanup diff --git a/tests/io.test b/tests/io.test index a529e61..a66bf89 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.6 2004/07/26 21:39:42 hobbs Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.7 2004/10/28 00:01:08 dgp Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -2685,7 +2685,7 @@ test io-29.33 {Tcl_Flush, implicit flush on exit} {exec} { set r } "hello\nbye\nstrange\n" test io-29.34 {Tcl_Close, async flush on close, using sockets} {socket tempNotMac fileevent} { - set c 0 + variable c 0 variable x running set l abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz proc writelots {s l} { @@ -5776,7 +5776,7 @@ test io-48.4 {lf write, testing readability, ^Z termination, auto read mode} {fi file delete $path(test1) set f [open $path(test1) w] fconfigure $f -translation lf - set c [format "abc\ndef\n%c" 26] + variable c [format "abc\ndef\n%c" 26] puts -nonewline $f $c close $f proc consume {f} { diff --git a/tests/namespace.test b/tests/namespace.test index 542f137..096af88 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21.2.4 2004/10/26 20:14:36 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.5 2004/10/28 00:01:11 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -432,7 +432,7 @@ test namespace-10.8 {Tcl_ForgetImport: Bug 560297} -setup { namespace delete origin link link2 my } -test namespace-10.8 {Tcl_ForgetImport: Bug 560297} -setup { +test namespace-10.9 {Tcl_ForgetImport: Bug 560297} -setup { namespace eval origin { namespace export cmd proc cmd {} {} diff --git a/tests/regexpComp.test b/tests/regexpComp.test index b8600dd..6580d60 100644 --- a/tests/regexpComp.test +++ b/tests/regexpComp.test @@ -32,35 +32,35 @@ proc evalInProc { script } { } catch {unset foo} -test regexp-1.1 {basic regexp operation} { +test regexpComp-1.1 {basic regexp operation} { evalInProc { regexp ab*c abbbc } } 1 -test regexp-1.2 {basic regexp operation} { +test regexpComp-1.2 {basic regexp operation} { evalInProc { regexp ab*c ac } } 1 -test regexp-1.3 {basic regexp operation} { +test regexpComp-1.3 {basic regexp operation} { evalInProc { regexp ab*c ab } } 0 -test regexp-1.4 {basic regexp operation} { +test regexpComp-1.4 {basic regexp operation} { evalInProc { regexp -- -gorp abc-gorpxxx } } 1 -test regexp-1.5 {basic regexp operation} { +test regexpComp-1.5 {basic regexp operation} { evalInProc { regexp {^([^ ]*)[ ]*([^ ]*)} "" a } } 1 -test regexp-1.6 {basic regexp operation} { +test regexpComp-1.6 {basic regexp operation} { list [catch {regexp {} abc} msg] $msg } {0 1} -test regexp-1.7 {regexp utf compliance} { +test regexpComp-1.7 {regexp utf compliance} { # if not UTF-8 aware, result is "0 1" evalInProc { set foo "\u4e4eb q" @@ -69,27 +69,27 @@ test regexp-1.7 {regexp utf compliance} { } } {0 0} -test regexp-2.1 {getting substrings back from regexp} { +test regexpComp-2.1 {getting substrings back from regexp} { evalInProc { set foo {} list [regexp ab*c abbbbc foo] $foo } } {1 abbbbc} -test regexp-2.2 {getting substrings back from regexp} { +test regexpComp-2.2 {getting substrings back from regexp} { evalInProc { set foo {} set f2 {} list [regexp a(b*)c abbbbc foo f2] $foo $f2 } } {1 abbbbc bbbb} -test regexp-2.3 {getting substrings back from regexp} { +test regexpComp-2.3 {getting substrings back from regexp} { evalInProc { set foo {} set f2 {} list [regexp a(b*)(c) abbbbc foo f2] $foo $f2 } } {1 abbbbc bbbb} -test regexp-2.4 {getting substrings back from regexp} { +test regexpComp-2.4 {getting substrings back from regexp} { evalInProc { set foo {} set f2 {} @@ -97,7 +97,7 @@ test regexp-2.4 {getting substrings back from regexp} { list [regexp a(b*)(c) abbbbc foo f2 f3] $foo $f2 $f3 } } {1 abbbbc bbbb c} -test regexp-2.5 {getting substrings back from regexp} { +test regexpComp-2.5 {getting substrings back from regexp} { evalInProc { set foo {}; set f1 {}; set f2 {}; set f3 {}; set f4 {}; set f5 {}; set f6 {}; set f7 {}; set f8 {}; set f9 {}; set fa {}; set fb {}; @@ -107,46 +107,46 @@ test regexp-2.5 {getting substrings back from regexp} { $f6 $f7 $f8 $f9 $fa $fb } } {1 12223345556789999aabbb 1 222 33 4 555 6 7 8 9999 aa bbb} -test regexp-2.6 {getting substrings back from regexp} { +test regexpComp-2.6 {getting substrings back from regexp} { evalInProc { set foo 2; set f2 2; set f3 2; set f4 2 list [regexp (a)(b)? xay foo f2 f3 f4] $foo $f2 $f3 $f4 } } {1 a a {} {}} -test regexp-2.7 {getting substrings back from regexp} { +test regexpComp-2.7 {getting substrings back from regexp} { evalInProc { set foo 1; set f2 1; set f3 1; set f4 1 list [regexp (a)(b)?(c) xacy foo f2 f3 f4] $foo $f2 $f3 $f4 } } {1 ac a {} c} -test regexp-2.8 {getting substrings back from regexp} { +test regexpComp-2.8 {getting substrings back from regexp} { evalInProc { set match {} list [regexp {^a*b} aaaab match] $match } } {1 aaaab} -test regexp-3.1 {-indices option to regexp} { +test regexpComp-3.1 {-indices option to regexp} { evalInProc { set foo {} list [regexp -indices ab*c abbbbc foo] $foo } } {1 {0 5}} -test regexp-3.2 {-indices option to regexp} { +test regexpComp-3.2 {-indices option to regexp} { evalInProc { set foo {} set f2 {} list [regexp -indices a(b*)c abbbbc foo f2] $foo $f2 } } {1 {0 5} {1 4}} -test regexp-3.3 {-indices option to regexp} { +test regexpComp-3.3 {-indices option to regexp} { evalInProc { set foo {} set f2 {} list [regexp -indices a(b*)(c) abbbbc foo f2] $foo $f2 } } {1 {0 5} {1 4}} -test regexp-3.4 {-indices option to regexp} { +test regexpComp-3.4 {-indices option to regexp} { evalInProc { set foo {} set f2 {} @@ -154,7 +154,7 @@ test regexp-3.4 {-indices option to regexp} { list [regexp -indices a(b*)(c) abbbbc foo f2 f3] $foo $f2 $f3 } } {1 {0 5} {1 4} {5 5}} -test regexp-3.5 {-indices option to regexp} { +test regexpComp-3.5 {-indices option to regexp} { evalInProc { set foo {}; set f1 {}; set f2 {}; set f3 {}; set f4 {}; set f5 {}; set f6 {}; set f7 {}; set f8 {}; set f9 {} @@ -164,25 +164,25 @@ test regexp-3.5 {-indices option to regexp} { $f6 $f7 $f8 $f9 } } {1 {0 16} {0 0} {1 3} {4 5} {6 6} {7 9} {10 10} {11 11} {12 12} {13 16}} -test regexp-3.6 {getting substrings back from regexp} { +test regexpComp-3.6 {getting substrings back from regexp} { evalInProc { set foo 2; set f2 2; set f3 2; set f4 2 list [regexp -indices (a)(b)? xay foo f2 f3 f4] $foo $f2 $f3 $f4 } } {1 {1 1} {1 1} {-1 -1} {-1 -1}} -test regexp-3.7 {getting substrings back from regexp} { +test regexpComp-3.7 {getting substrings back from regexp} { evalInProc { set foo 1; set f2 1; set f3 1; set f4 1 list [regexp -indices (a)(b)?(c) xacy foo f2 f3 f4] $foo $f2 $f3 $f4 } } {1 {1 2} {1 1} {-1 -1} {2 2}} -test regexp-4.1 {-nocase option to regexp} { +test regexpComp-4.1 {-nocase option to regexp} { evalInProc { regexp -nocase foo abcFOo } } 1 -test regexp-4.2 {-nocase option to regexp} { +test regexpComp-4.2 {-nocase option to regexp} { evalInProc { set f1 22 set f2 33 @@ -190,21 +190,21 @@ test regexp-4.2 {-nocase option to regexp} { list [regexp -nocase {a(b*)([xy]*)z} aBbbxYXxxZ22 f1 f2 f3] $f1 $f2 $f3 } } {1 aBbbxYXxxZ Bbb xYXxx} -test regexp-4.3 {-nocase option to regexp} { +test regexpComp-4.3 {-nocase option to regexp} { evalInProc { regexp -nocase FOo abcFOo } } 1 set ::x abcdefghijklmnopqrstuvwxyz1234567890 set ::x $x$x$x$x$x$x$x$x$x$x$x$x -test regexp-4.4 {case conversion in regexp} { +test regexpComp-4.4 {case conversion in regexp} { evalInProc { list [regexp -nocase $::x $::x foo] $foo } } "1 $x" catch {unset ::x} -test regexp-5.1 {exercise cache of compiled expressions} { +test regexpComp-5.1 {exercise cache of compiled expressions} { evalInProc { regexp .*a b regexp .*b c @@ -214,7 +214,7 @@ test regexp-5.1 {exercise cache of compiled expressions} { regexp .*a bbba } } 1 -test regexp-5.2 {exercise cache of compiled expressions} { +test regexpComp-5.2 {exercise cache of compiled expressions} { evalInProc { regexp .*a b regexp .*b c @@ -224,7 +224,7 @@ test regexp-5.2 {exercise cache of compiled expressions} { regexp .*b xxxb } } 1 -test regexp-5.3 {exercise cache of compiled expressions} { +test regexpComp-5.3 {exercise cache of compiled expressions} { evalInProc { regexp .*a b regexp .*b c @@ -234,7 +234,7 @@ test regexp-5.3 {exercise cache of compiled expressions} { regexp .*c yyyc } } 1 -test regexp-5.4 {exercise cache of compiled expressions} { +test regexpComp-5.4 {exercise cache of compiled expressions} { evalInProc { regexp .*a b regexp .*b c @@ -244,7 +244,7 @@ test regexp-5.4 {exercise cache of compiled expressions} { regexp .*d 1d } } 1 -test regexp-5.5 {exercise cache of compiled expressions} { +test regexpComp-5.5 {exercise cache of compiled expressions} { evalInProc { regexp .*a b regexp .*b c @@ -255,139 +255,139 @@ test regexp-5.5 {exercise cache of compiled expressions} { } } 1 -test regexp-6.1 {regexp errors} { +test regexpComp-6.1 {regexp errors} { evalInProc { list [catch {regexp a} msg] $msg } } {1 {wrong # args: should be "regexp ?switches? exp string ?matchVar? ?subMatchVar subMatchVar ...?"}} -test regexp-6.2 {regexp errors} { +test regexpComp-6.2 {regexp errors} { evalInProc { list [catch {regexp -nocase a} msg] $msg } } {1 {wrong # args: should be "regexp ?switches? exp string ?matchVar? ?subMatchVar subMatchVar ...?"}} -test regexp-6.3 {regexp errors} { +test regexpComp-6.3 {regexp errors} { evalInProc { list [catch {regexp -gorp a} msg] $msg } } {1 {bad switch "-gorp": must be -all, -about, -indices, -inline, -expanded, -line, -linestop, -lineanchor, -nocase, -start, or --}} -test regexp-6.4 {regexp errors} { +test regexpComp-6.4 {regexp errors} { evalInProc { list [catch {regexp a( b} msg] $msg } } {1 {couldn't compile regular expression pattern: parentheses () not balanced}} -test regexp-6.5 {regexp errors} { +test regexpComp-6.5 {regexp errors} { evalInProc { list [catch {regexp a( b} msg] $msg } } {1 {couldn't compile regular expression pattern: parentheses () not balanced}} -test regexp-6.6 {regexp errors} { +test regexpComp-6.6 {regexp errors} { evalInProc { list [catch {regexp a a f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1 f1} msg] $msg } } {0 1} -test regexp-6.7 {regexp errors} { +test regexpComp-6.7 {regexp errors} { evalInProc { list [catch {regexp (x)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.) xyzzy} msg] $msg } } {0 0} -test regexp-6.8 {regexp errors} { +test regexpComp-6.8 {regexp errors} { evalInProc { catch {unset f1} set f1 44 list [catch {regexp abc abc f1(f2)} msg] $msg } } {1 {couldn't set variable "f1(f2)"}} -test regexp-6.9 {regexp errors, -start bad int check} { +test regexpComp-6.9 {regexp errors, -start bad int check} { evalInProc { list [catch {regexp -start bogus {^$} {}} msg] $msg } } {1 {expected integer but got "bogus"}} -test regexp-7.1 {basic regsub operation} { +test regexpComp-7.1 {basic regsub operation} { evalInProc { list [regsub aa+ xaxaaaxaa 111&222 foo] $foo } } {1 xax111aaa222xaa} -test regexp-7.2 {basic regsub operation} { +test regexpComp-7.2 {basic regsub operation} { evalInProc { list [regsub aa+ aaaxaa &111 foo] $foo } } {1 aaa111xaa} -test regexp-7.3 {basic regsub operation} { +test regexpComp-7.3 {basic regsub operation} { evalInProc { list [regsub aa+ xaxaaa 111& foo] $foo } } {1 xax111aaa} -test regexp-7.4 {basic regsub operation} { +test regexpComp-7.4 {basic regsub operation} { evalInProc { list [regsub aa+ aaa 11&2&333 foo] $foo } } {1 11aaa2aaa333} -test regexp-7.5 {basic regsub operation} { +test regexpComp-7.5 {basic regsub operation} { evalInProc { list [regsub aa+ xaxaaaxaa &2&333 foo] $foo } } {1 xaxaaa2aaa333xaa} -test regexp-7.6 {basic regsub operation} { +test regexpComp-7.6 {basic regsub operation} { evalInProc { list [regsub aa+ xaxaaaxaa 1&22& foo] $foo } } {1 xax1aaa22aaaxaa} -test regexp-7.7 {basic regsub operation} { +test regexpComp-7.7 {basic regsub operation} { evalInProc { list [regsub a(a+) xaxaaaxaa {1\122\1} foo] $foo } } {1 xax1aa22aaxaa} -test regexp-7.8 {basic regsub operation} { +test regexpComp-7.8 {basic regsub operation} { evalInProc { list [regsub a(a+) xaxaaaxaa {1\\\122\1} foo] $foo } } "1 {xax1\\aa22aaxaa}" -test regexp-7.9 {basic regsub operation} { +test regexpComp-7.9 {basic regsub operation} { evalInProc { list [regsub a(a+) xaxaaaxaa {1\\122\1} foo] $foo } } "1 {xax1\\122aaxaa}" -test regexp-7.10 {basic regsub operation} { +test regexpComp-7.10 {basic regsub operation} { evalInProc { list [regsub a(a+) xaxaaaxaa {1\\&\1} foo] $foo } } "1 {xax1\\aaaaaxaa}" -test regexp-7.11 {basic regsub operation} { +test regexpComp-7.11 {basic regsub operation} { evalInProc { list [regsub a(a+) xaxaaaxaa {1\&\1} foo] $foo } } {1 xax1&aaxaa} -test regexp-7.12 {basic regsub operation} { +test regexpComp-7.12 {basic regsub operation} { evalInProc { list [regsub a(a+) xaxaaaxaa {\1\1\1\1&&} foo] $foo } } {1 xaxaaaaaaaaaaaaaaxaa} -test regexp-7.13 {basic regsub operation} { +test regexpComp-7.13 {basic regsub operation} { evalInProc { set foo xxx list [regsub abc xyz 111 foo] $foo } } {0 xyz} -test regexp-7.14 {basic regsub operation} { +test regexpComp-7.14 {basic regsub operation} { evalInProc { set foo xxx list [regsub ^ xyz "111 " foo] $foo } } {1 {111 xyz}} -test regexp-7.15 {basic regsub operation} { +test regexpComp-7.15 {basic regsub operation} { evalInProc { set foo xxx list [regsub -- -foo abc-foodef "111 " foo] $foo } } {1 {abc111 def}} -test regexp-7.16 {basic regsub operation} { +test regexpComp-7.16 {basic regsub operation} { evalInProc { set foo xxx list [regsub x "" y foo] $foo } } {0 {}} -test regexp-7.17 {regsub utf compliance} { +test regexpComp-7.17 {regsub utf compliance} { evalInProc { # if not UTF-8 aware, result is "0 1" set foo "xyz555ijka\u4e4ebpqr" @@ -396,35 +396,35 @@ test regexp-7.17 {regsub utf compliance} { } } {0 0} -test regexp-8.1 {case conversion in regsub} { +test regexpComp-8.1 {case conversion in regsub} { evalInProc { list [regsub -nocase a(a+) xaAAaAAay & foo] $foo } } {1 xaAAaAAay} -test regexp-8.2 {case conversion in regsub} { +test regexpComp-8.2 {case conversion in regsub} { evalInProc { list [regsub -nocase a(a+) xaAAaAAay & foo] $foo } } {1 xaAAaAAay} -test regexp-8.3 {case conversion in regsub} { +test regexpComp-8.3 {case conversion in regsub} { evalInProc { set foo 123 list [regsub a(a+) xaAAaAAay & foo] $foo } } {0 xaAAaAAay} -test regexp-8.4 {case conversion in regsub} { +test regexpComp-8.4 {case conversion in regsub} { evalInProc { set foo 123 list [regsub -nocase a CaDE b foo] $foo } } {1 CbDE} -test regexp-8.5 {case conversion in regsub} { +test regexpComp-8.5 {case conversion in regsub} { evalInProc { set foo 123 list [regsub -nocase XYZ CxYzD b foo] $foo } } {1 CbD} -test regexp-8.6 {case conversion in regsub} { +test regexpComp-8.6 {case conversion in regsub} { evalInProc { set x abcdefghijklmnopqrstuvwxyz1234567890 set x $x$x$x$x$x$x$x$x$x$x$x$x @@ -433,112 +433,112 @@ test regexp-8.6 {case conversion in regsub} { } } {1 b} -test regexp-9.1 {-all option to regsub} { +test regexpComp-9.1 {-all option to regsub} { evalInProc { set foo 86 list [regsub -all x+ axxxbxxcxdx |&| foo] $foo } } {4 a|xxx|b|xx|c|x|d|x|} -test regexp-9.2 {-all option to regsub} { +test regexpComp-9.2 {-all option to regsub} { evalInProc { set foo 86 list [regsub -nocase -all x+ aXxXbxxcXdx |&| foo] $foo } } {4 a|XxX|b|xx|c|X|d|x|} -test regexp-9.3 {-all option to regsub} { +test regexpComp-9.3 {-all option to regsub} { evalInProc { set foo 86 list [regsub x+ axxxbxxcxdx |&| foo] $foo } } {1 a|xxx|bxxcxdx} -test regexp-9.4 {-all option to regsub} { +test regexpComp-9.4 {-all option to regsub} { evalInProc { set foo 86 list [regsub -all bc axxxbxxcxdx |&| foo] $foo } } {0 axxxbxxcxdx} -test regexp-9.5 {-all option to regsub} { +test regexpComp-9.5 {-all option to regsub} { evalInProc { set foo xxx list [regsub -all node "node node more" yy foo] $foo } } {2 {yy yy more}} -test regexp-9.6 {-all option to regsub} { +test regexpComp-9.6 {-all option to regsub} { evalInProc { set foo xxx list [regsub -all ^ xxx 123 foo] $foo } } {1 123xxx} -test regexp-10.1 {expanded syntax in regsub} { +test regexpComp-10.1 {expanded syntax in regsub} { evalInProc { set foo xxx list [regsub -expanded ". \#comment\n . \#comment2" abc def foo] $foo } } {1 defc} -test regexp-10.2 {newline sensitivity in regsub} { +test regexpComp-10.2 {newline sensitivity in regsub} { evalInProc { set foo xxx list [regsub -line {^a.*b$} "dabc\naxyb\n" 123 foo] $foo } } "1 {dabc\n123\n}" -test regexp-10.3 {newline sensitivity in regsub} { +test regexpComp-10.3 {newline sensitivity in regsub} { evalInProc { set foo xxx list [regsub -line {^a.*b$} "dabc\naxyb\nxb" 123 foo] $foo } } "1 {dabc\n123\nxb}" -test regexp-10.4 {partial newline sensitivity in regsub} { +test regexpComp-10.4 {partial newline sensitivity in regsub} { evalInProc { set foo xxx list [regsub -lineanchor {^a.*b$} "da\naxyb\nxb" 123 foo] $foo } } "1 {da\n123}" -test regexp-10.5 {inverse partial newline sensitivity in regsub} { +test regexpComp-10.5 {inverse partial newline sensitivity in regsub} { evalInProc { set foo xxx list [regsub -linestop {a.*b} "da\nbaxyb\nxb" 123 foo] $foo } } "1 {da\nb123\nxb}" -test regexp-11.1 {regsub errors} { +test regexpComp-11.1 {regsub errors} { evalInProc { list [catch {regsub a b} msg] $msg } } {1 {wrong # args: should be "regsub ?switches? exp string subSpec ?varName?"}} -test regexp-11.2 {regsub errors} { +test regexpComp-11.2 {regsub errors} { evalInProc { list [catch {regsub -nocase a b} msg] $msg } } {1 {wrong # args: should be "regsub ?switches? exp string subSpec ?varName?"}} -test regexp-11.3 {regsub errors} { +test regexpComp-11.3 {regsub errors} { evalInProc { list [catch {regsub -nocase -all a b} msg] $msg } } {1 {wrong # args: should be "regsub ?switches? exp string subSpec ?varName?"}} -test regexp-11.4 {regsub errors} { +test regexpComp-11.4 {regsub errors} { evalInProc { list [catch {regsub a b c d e f} msg] $msg } } {1 {wrong # args: should be "regsub ?switches? exp string subSpec ?varName?"}} -test regexp-11.5 {regsub errors} { +test regexpComp-11.5 {regsub errors} { evalInProc { list [catch {regsub -gorp a b c} msg] $msg } } {1 {bad switch "-gorp": must be -all, -nocase, -expanded, -line, -linestop, -lineanchor, -start, or --}} -test regexp-11.6 {regsub errors} { +test regexpComp-11.6 {regsub errors} { evalInProc { list [catch {regsub -nocase a( b c d} msg] $msg } } {1 {couldn't compile regular expression pattern: parentheses () not balanced}} -test regexp-11.7 {regsub errors} { +test regexpComp-11.7 {regsub errors} { evalInProc { catch {unset f1} set f1 44 list [catch {regsub -nocase aaa aaa xxx f1(f2)} msg] $msg } } {1 {couldn't set variable "f1(f2)"}} -test regexp-11.8 {regsub errors, -start bad int check} { +test regexpComp-11.8 {regsub errors, -start bad int check} { evalInProc { list [catch {regsub -start bogus pattern string rep var} msg] $msg } @@ -548,13 +548,13 @@ test regexp-11.8 {regsub errors, -start bad int check} { # Meg. This is probably bigger than most users want... # 8.2.3 regexp reduced stack space requirements, but this should be # tested again -test regexp-12.1 {Tcl_RegExpExec: large number of subexpressions} {macCrash} { +test regexpComp-12.1 {Tcl_RegExpExec: large number of subexpressions} {macCrash} { evalInProc { list [regexp (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.) abcdefghijklmnopqrstuvwxyz all a b c d e f g h i j k l m n o p q r s t u v w x y z] $all $a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z } } {1 abcdefghijklmnopqrstuvwxyz a b c d e f g h i j k l m n o p q r s t u v w x y z} -test regexp-13.1 {regsub of a very large string} { +test regexpComp-13.1 {regsub of a very large string} { # This test is designed to stress the memory subsystem in order # to catch Bug #933. It only fails if the Tcl memory allocator # is in use. @@ -567,7 +567,7 @@ test regexp-13.1 {regsub of a very large string} { set x done } {done} -test regexp-14.1 {CompileRegexp: regexp cache} { +test regexpComp-14.1 {CompileRegexp: regexp cache} { evalInProc { regexp .*a b regexp .*b c @@ -579,7 +579,7 @@ test regexp-14.1 {CompileRegexp: regexp cache} { regexp $x bbba } } 1 -test regexp-14.2 {CompileRegexp: regexp cache, different flags} { +test regexpComp-14.2 {CompileRegexp: regexp cache, different flags} { evalInProc { regexp .*a b regexp .*b c @@ -593,7 +593,7 @@ test regexp-14.2 {CompileRegexp: regexp cache, different flags} { } 1 testConstraint exec [llength [info commands exec]] -test regexp-14.3 {CompileRegexp: regexp cache, empty regexp and empty cache} -constraints { +test regexpComp-14.3 {CompileRegexp: regexp cache, empty regexp and empty cache} -constraints { exec } -setup { set junk [makeFile {puts [regexp {} foo]} junk.tcl] @@ -603,96 +603,96 @@ test regexp-14.3 {CompileRegexp: regexp cache, empty regexp and empty cache} -co removeFile junk.tcl } -result 1 -test regexp-15.1 {regexp -start} { +test regexpComp-15.1 {regexp -start} { catch {unset x} list [regexp -start -10 {\d} 1abc2de3 x] $x } {1 1} -test regexp-15.2 {regexp -start} { +test regexpComp-15.2 {regexp -start} { catch {unset x} list [regexp -start 2 {\d} 1abc2de3 x] $x } {1 2} -test regexp-15.3 {regexp -start} { +test regexpComp-15.3 {regexp -start} { catch {unset x} list [regexp -start 4 {\d} 1abc2de3 x] $x } {1 2} -test regexp-15.4 {regexp -start} { +test regexpComp-15.4 {regexp -start} { catch {unset x} list [regexp -start 5 {\d} 1abc2de3 x] $x } {1 3} -test regexp-15.5 {regexp -start, over end of string} { +test regexpComp-15.5 {regexp -start, over end of string} { catch {unset x} list [regexp -start [string length 1abc2de3] {\d} 1abc2de3 x] [info exists x] } {0 0} -test regexp-15.6 {regexp -start, loss of ^$ behavior} { +test regexpComp-15.6 {regexp -start, loss of ^$ behavior} { list [regexp -start 2 {^$} {}] } {0} -test regexp-16.1 {regsub -start} { +test regexpComp-16.1 {regsub -start} { catch {unset x} list [regsub -all -start 2 {\d} a1b2c3d4e5 {/&} x] $x } {4 a1b/2c/3d/4e/5} -test regexp-16.2 {regsub -start} { +test regexpComp-16.2 {regsub -start} { catch {unset x} list [regsub -all -start -25 {z} hello {/&} x] $x } {0 hello} -test regexp-16.3 {regsub -start} { +test regexpComp-16.3 {regsub -start} { catch {unset x} list [regsub -all -start 3 {z} hello {/&} x] $x } {0 hello} -test regexp-16.4 {regsub -start, \A behavior} { +test regexpComp-16.4 {regsub -start, \A behavior} { set out {} lappend out [regsub -start 0 -all {\A(\w)} {abcde} {/\1} x] $x lappend out [regsub -start 2 -all {\A(\w)} {abcde} {/\1} x] $x } {5 /a/b/c/d/e 3 ab/c/d/e} -test regexp-17.1 {regexp -inline} { +test regexpComp-17.1 {regexp -inline} { regexp -inline b ababa } {b} -test regexp-17.2 {regexp -inline} { +test regexpComp-17.2 {regexp -inline} { regexp -inline (b) ababa } {b b} -test regexp-17.3 {regexp -inline -indices} { +test regexpComp-17.3 {regexp -inline -indices} { regexp -inline -indices (b) ababa } {{1 1} {1 1}} -test regexp-17.4 {regexp -inline} { +test regexpComp-17.4 {regexp -inline} { regexp -inline {\w(\d+)\w} " hello 23 there456def " } {e456d 456} -test regexp-17.5 {regexp -inline no matches} { +test regexpComp-17.5 {regexp -inline no matches} { regexp -inline {\w(\d+)\w} "" } {} -test regexp-17.6 {regexp -inline no matches} { +test regexpComp-17.6 {regexp -inline no matches} { regexp -inline hello goodbye } {} -test regexp-17.7 {regexp -inline, no matchvars allowed} { +test regexpComp-17.7 {regexp -inline, no matchvars allowed} { list [catch {regexp -inline b abc match} msg] $msg } {1 {regexp match variables not allowed when using -inline}} -test regexp-18.1 {regexp -all} { +test regexpComp-18.1 {regexp -all} { regexp -all b bbbbb } {5} -test regexp-18.2 {regexp -all} { +test regexpComp-18.2 {regexp -all} { regexp -all b abababbabaaaaaaaaaab } {6} -test regexp-18.3 {regexp -all -inline} { +test regexpComp-18.3 {regexp -all -inline} { regexp -all -inline b abababbabaaaaaaaaaab } {b b b b b b} -test regexp-18.4 {regexp -all -inline} { +test regexpComp-18.4 {regexp -all -inline} { regexp -all -inline {\w(\w)} abcdefg } {ab b cd d ef f} -test regexp-18.5 {regexp -all -inline} { +test regexpComp-18.5 {regexp -all -inline} { regexp -all -inline {\w(\w)$} abcdefg } {fg g} -test regexp-18.6 {regexp -all -inline} { +test regexpComp-18.6 {regexp -all -inline} { regexp -all -inline {\d+} 10:20:30:40 } {10 20 30 40} -test regexp-18.7 {regexp -all -inline} { +test regexpComp-18.7 {regexp -all -inline} { list [catch {regexp -all -inline b abc match} msg] $msg } {1 {regexp match variables not allowed when using -inline}} -test regexp-18.8 {regexp -all} { +test regexpComp-18.8 {regexp -all} { # This should not cause an infinite loop regexp -all -inline {a*} a } {a} -test regexp-18.9 {regexp -all} { +test regexpComp-18.9 {regexp -all} { # Yes, the expected result is {a {}}. Here's why: # Start at index 0; a* matches the "a" there then stops. # Go to index 1; a* matches the lambda (or {}) there then stops. Recall @@ -701,7 +701,7 @@ test regexp-18.9 {regexp -all} { # Go to index 2; this is past the end of the string, so stop. regexp -all -inline {a*} ab } {a {}} -test regexp-18.10 {regexp -all} { +test regexpComp-18.10 {regexp -all} { # Yes, the expected result is {a {} a}. Here's why: # Start at index 0; a* matches the "a" there then stops. # Go to index 1; a* matches the lambda (or {}) there then stops. Recall @@ -711,25 +711,25 @@ test regexp-18.10 {regexp -all} { # Go to index 3; this is past the end of the string, so stop. regexp -all -inline {a*} aba } {a {} a} -test regexp-18.11 {regexp -all} { +test regexpComp-18.11 {regexp -all} { evalInProc { regexp -all -inline {^a} aaaa } } {a} -test regexp-18.12 {regexp -all -inline -indices} { +test regexpComp-18.12 {regexp -all -inline -indices} { evalInProc { regexp -all -inline -indices a(b(c)d|e(f)g)h abcdhaefgh } } {{0 4} {1 3} {2 2} {-1 -1} {5 9} {6 8} {-1 -1} {7 7}} -test regexp-19.1 {regsub null replacement} { +test regexpComp-19.1 {regsub null replacement} { evalInProc { regsub -all {@} {@hel@lo@} "\0a\0" result list $result [string length $result] } } "\0a\0hel\0a\0lo\0a\0 14" -test regexp-20.1 {regsub shared object shimmering} { +test regexpComp-20.1 {regsub shared object shimmering} { evalInProc { # Bug #461322 set a abcdefghijklmnopqurstuvwxyz @@ -739,64 +739,64 @@ test regexp-20.1 {regsub shared object shimmering} { list $d [string length $d] [string bytelength $d] } } [list abcdefghijklmnopqurstuvwxyz0123456789 37 37] -test regexp-20.2 {regsub shared object shimmering with -about} { +test regexpComp-20.2 {regsub shared object shimmering with -about} { evalInProc { eval regexp -about abc } } {0 {}} -test regexp-21.1 {regexp command compiling tests} { +test regexpComp-21.1 {regexp command compiling tests} { evalInProc { regexp foo bar } } 0 -test regexp-21.2 {regexp command compiling tests} { +test regexpComp-21.2 {regexp command compiling tests} { evalInProc { regexp {^foo$} dogfood } } 0 -test regexp-21.3 {regexp command compiling tests} { +test regexpComp-21.3 {regexp command compiling tests} { evalInProc { set a foo regexp {^foo$} $a } } 1 -test regexp-21.4 {regexp command compiling tests} { +test regexpComp-21.4 {regexp command compiling tests} { evalInProc { regexp foo dogfood } } 1 -test regexp-21.5 {regexp command compiling tests} { +test regexpComp-21.5 {regexp command compiling tests} { evalInProc { regexp -nocase FOO dogfod } } 0 -test regexp-21.6 {regexp command compiling tests} { +test regexpComp-21.6 {regexp command compiling tests} { evalInProc { regexp -n foo dogfoOd } } 1 -test regexp-21.7 {regexp command compiling tests} { +test regexpComp-21.7 {regexp command compiling tests} { evalInProc { regexp -no -- FoO dogfood } } 1 -test regexp-21.8 {regexp command compiling tests} { +test regexpComp-21.8 {regexp command compiling tests} { evalInProc { regexp -- foo dogfod } } 0 -test regexp-21.9 {regexp command compiling tests} { +test regexpComp-21.9 {regexp command compiling tests} { evalInProc { list [catch {regexp -- -nocase foo dogfod} msg] $msg } } {0 0} -test regexp-21.10 {regexp command compiling tests} { +test regexpComp-21.10 {regexp command compiling tests} { evalInProc { list [regsub -all "" foo bar str] $str } } {3 barfbarobaro} -test regexp-21.11 {regexp command compiling tests} { +test regexpComp-21.11 {regexp command compiling tests} { evalInProc { list [regsub -all "" "" bar str] $str } @@ -818,7 +818,7 @@ foreach {str exp result} { anything ^.*b$ 0 anything ^a.*$ 1 } { - test regexp-22.[incr i] {regexp command compiling tests} \ + test regexpComp-22.[incr i] {regexp command compiling tests} \ [subst {evalInProc {set a "$str"; regexp {$exp} \$a}}] $result } diff --git a/tests/stringComp.test b/tests/stringComp.test index 14b0107..30a89db 100644 --- a/tests/stringComp.test +++ b/tests/stringComp.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: stringComp.test,v 1.6 2003/02/18 02:25:45 hobbs Exp $ +# RCS: @(#) $Id: stringComp.test,v 1.6.2.1 2004/10/28 00:01:12 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -27,15 +27,15 @@ if {[lsearch [namespace children] ::tcltest] == -1} { set ::tcltest::testConstraints(testobj) \ [expr {[info commands testobj] != {}}] -test string-1.1 {error conditions} { +test stringComp-1.1 {error conditions} { proc foo {} {string gorp a b} list [catch {foo} msg] $msg } {1 {bad option "gorp": must be bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}} -test string-1.2 {error conditions} { +test stringComp-1.2 {error conditions} { proc foo {} {string} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string option arg ?arg ...?"}} -test string-1.3 {error condition - undefined method during compile} { +test stringComp-1.3 {error condition - undefined method during compile} { # We don't want this to complain about 'never' because it may never # be called, or string may get redefined. This must compile OK. proc foo {str i} { @@ -45,48 +45,48 @@ test string-1.3 {error condition - undefined method during compile} { foo abc 0 } a -test string-2.1 {string compare, too few args} { +test stringComp-2.1 {string compare, too few args} { proc foo {} {string compare a} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"}} -test string-2.2 {string compare, bad args} { +test stringComp-2.2 {string compare, bad args} { proc foo {} {string compare a b c} list [catch {foo} msg] $msg } {1 {bad option "a": must be -nocase or -length}} -test string-2.3 {string compare, bad args} { +test stringComp-2.3 {string compare, bad args} { list [catch {string compare -length -nocase str1 str2} msg] $msg } {1 {expected integer but got "-nocase"}} -test string-2.4 {string compare, too many args} { +test stringComp-2.4 {string compare, too many args} { list [catch {string compare -length 10 -nocase str1 str2 str3} msg] $msg } {1 {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"}} -test string-2.5 {string compare with length unspecified} { +test stringComp-2.5 {string compare with length unspecified} { list [catch {string compare -length 10 10} msg] $msg } {1 {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"}} -test string-2.6 {string compare} { +test stringComp-2.6 {string compare} { proc foo {} {string compare abcde abdef} foo } -1 -test string-2.7 {string compare, shortest method name} { +test stringComp-2.7 {string compare, shortest method name} { proc foo {} {string c abcde ABCDE} foo } 1 -test string-2.8 {string compare} { +test stringComp-2.8 {string compare} { proc foo {} {string compare abcde abcde} foo } 0 -test string-2.9 {string compare with length} { +test stringComp-2.9 {string compare with length} { proc foo {} {string compare -length 2 abcde abxyz} foo } 0 -test string-2.10 {string compare with special index} { +test stringComp-2.10 {string compare with special index} { proc foo {} {string compare -length end-3 abcde abxyz} list [catch {foo} msg] $msg } {1 {expected integer but got "end-3"}} -test string-2.11 {string compare, unicode} { +test stringComp-2.11 {string compare, unicode} { proc foo {} {string compare ab\u7266 ab\u7267} foo } -1 -test string-2.12 {string compare, high bit} { +test stringComp-2.12 {string compare, high bit} { # This test will fail if the underlying comparaison # is using signed chars instead of unsigned chars. # (like SunOS's default memcmp thus the compat/memcmp.c) @@ -96,244 +96,244 @@ test string-2.12 {string compare, high bit} { # translated into a 2 or more bytelength but whose first byte has # the high bit set. } 1 -test string-2.13 {string compare -nocase} { +test stringComp-2.13 {string compare -nocase} { proc foo {} {string compare -nocase abcde abdef} foo } -1 -test string-2.14 {string compare -nocase} { +test stringComp-2.14 {string compare -nocase} { proc foo {} {string c -nocase abcde ABCDE} foo } 0 -test string-2.15 {string compare -nocase} { +test stringComp-2.15 {string compare -nocase} { proc foo {} {string compare -nocase abcde abcde} foo } 0 -test string-2.16 {string compare -nocase with length} { +test stringComp-2.16 {string compare -nocase with length} { proc foo {} {string compare -length 2 -nocase abcde Abxyz} foo } 0 -test string-2.17 {string compare -nocase with length} { +test stringComp-2.17 {string compare -nocase with length} { proc foo {} {string compare -nocase -length 3 abcde Abxyz} foo } -1 -test string-2.18 {string compare -nocase with length <= 0} { +test stringComp-2.18 {string compare -nocase with length <= 0} { proc foo {} {string compare -nocase -length -1 abcde AbCdEf} foo } -1 -test string-2.19 {string compare -nocase with excessive length} { +test stringComp-2.19 {string compare -nocase with excessive length} { proc foo {} {string compare -nocase -length 50 AbCdEf abcde} foo } 1 -test string-2.20 {string compare -len unicode} { +test stringComp-2.20 {string compare -len unicode} { # These are strings that are 6 BYTELENGTH long, but the length # shouldn't make a different because there are actually 3 CHARS long proc foo {} {string compare -len 5 \334\334\334 \334\334\374} foo } -1 -test string-2.21 {string compare -nocase with special index} { +test stringComp-2.21 {string compare -nocase with special index} { proc foo {} {string compare -nocase -length end-3 Abcde abxyz} list [catch {foo} msg] $msg } {1 {expected integer but got "end-3"}} -test string-2.22 {string compare, null strings} { +test stringComp-2.22 {string compare, null strings} { proc foo {} {string compare "" ""} foo } 0 -test string-2.23 {string compare, null strings} { +test stringComp-2.23 {string compare, null strings} { proc foo {} {string compare "" foo} foo } -1 -test string-2.24 {string compare, null strings} { +test stringComp-2.24 {string compare, null strings} { proc foo {} {string compare foo ""} foo } 1 -test string-2.25 {string compare -nocase, null strings} { +test stringComp-2.25 {string compare -nocase, null strings} { proc foo {} {string compare -nocase "" ""} foo } 0 -test string-2.26 {string compare -nocase, null strings} { +test stringComp-2.26 {string compare -nocase, null strings} { proc foo {} {string compare -nocase "" foo} foo } -1 -test string-2.27 {string compare -nocase, null strings} { +test stringComp-2.27 {string compare -nocase, null strings} { proc foo {} {string compare -nocase foo ""} foo } 1 -test string-2.28 {string compare with length, unequal strings} { +test stringComp-2.28 {string compare with length, unequal strings} { proc foo {} {string compare -length 2 abc abde} foo } 0 -test string-2.29 {string compare with length, unequal strings} { +test stringComp-2.29 {string compare with length, unequal strings} { proc foo {} {string compare -length 2 ab abde} foo } 0 -test string-2.30 {string compare with NUL character vs. other ASCII} { +test stringComp-2.30 {string compare with NUL character vs. other ASCII} { # Be careful here, since UTF-8 rep comparison with memcmp() of # these puts chars in the wrong order proc foo {} {string compare \x00 \x01} foo } -1 -test string-2.31 {string compare, high bit} { +test stringComp-2.31 {string compare, high bit} { proc foo {} {string compare "a\x80" "a@"} foo } 1 -test string-2.32 {string compare, high bit} { +test stringComp-2.32 {string compare, high bit} { proc foo {} {string compare "a\x00" "a\x01"} foo } -1 -test string-2.33 {string compare, high bit} { +test stringComp-2.33 {string compare, high bit} { proc foo {} {string compare "\x00\x00" "\x00\x01"} foo } -1 # only need a few tests on equal, since it uses the same code as # string compare, but just modifies the return output -test string-3.1 {string equal} { +test stringComp-3.1 {string equal} { proc foo {} {string equal abcde abdef} foo } 0 -test string-3.2 {string equal} { +test stringComp-3.2 {string equal} { proc foo {} {string eq abcde ABCDE} foo } 0 -test string-3.3 {string equal} { +test stringComp-3.3 {string equal} { proc foo {} {string equal abcde abcde} foo } 1 -test string-3.4 {string equal -nocase} { +test stringComp-3.4 {string equal -nocase} { proc foo {} {string equal -nocase \334\334\334\334\374\374\374\374 \334\334\334\334\334\334\334\334} foo } 1 -test string-3.5 {string equal -nocase} { +test stringComp-3.5 {string equal -nocase} { proc foo {} {string equal -nocase abcde abdef} foo } 0 -test string-3.6 {string equal -nocase} { +test stringComp-3.6 {string equal -nocase} { proc foo {} {string eq -nocase abcde ABCDE} foo } 1 -test string-3.7 {string equal -nocase} { +test stringComp-3.7 {string equal -nocase} { proc foo {} {string equal -nocase abcde abcde} foo } 1 -test string-3.8 {string equal with length, unequal strings} { +test stringComp-3.8 {string equal with length, unequal strings} { proc foo {} {string equal -length 2 abc abde} foo } 1 -test string-4.1 {string first, too few args} { +test stringComp-4.1 {string first, too few args} { proc foo {} {string first a} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string first subString string ?startIndex?"}} -test string-4.2 {string first, bad args} { +test stringComp-4.2 {string first, bad args} { proc foo {} {string first a b c} list [catch {foo} msg] $msg } {1 {bad index "c": must be integer or end?-integer?}} -test string-4.3 {string first, too many args} { +test stringComp-4.3 {string first, too many args} { proc foo {} {string first a b 5 d} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string first subString string ?startIndex?"}} -test string-4.4 {string first} { +test stringComp-4.4 {string first} { proc foo {} {string first bq abcdefgbcefgbqrs} foo } 12 -test string-4.5 {string first} { +test stringComp-4.5 {string first} { proc foo {} {string fir bcd abcdefgbcefgbqrs} foo } 1 -test string-4.6 {string first} { +test stringComp-4.6 {string first} { proc foo {} {string f b abcdefgbcefgbqrs} foo } 1 -test string-4.7 {string first} { +test stringComp-4.7 {string first} { proc foo {} {string first xxx x123xx345xxx789xxx012} foo } 9 -test string-4.8 {string first} { +test stringComp-4.8 {string first} { proc foo {} {string first "" x123xx345xxx789xxx012} foo } -1 -test string-4.9 {string first, unicode} { +test stringComp-4.9 {string first, unicode} { proc foo {} {string first x abc\u7266x} foo } 4 -test string-4.10 {string first, unicode} { +test stringComp-4.10 {string first, unicode} { proc foo {} {string first \u7266 abc\u7266x} foo } 3 -test string-4.11 {string first, start index} { +test stringComp-4.11 {string first, start index} { proc foo {} {string first \u7266 abc\u7266x 3} foo } 3 -test string-4.12 {string first, start index} { +test stringComp-4.12 {string first, start index} { proc foo {} {string first \u7266 abc\u7266x 4} foo } -1 -test string-4.13 {string first, start index} { +test stringComp-4.13 {string first, start index} { proc foo {} {string first \u7266 abc\u7266x end-2} foo } 3 -test string-4.14 {string first, negative start index} { +test stringComp-4.14 {string first, negative start index} { proc foo {} {string first b abc -1} foo } 1 -test string-5.1 {string index} { +test stringComp-5.1 {string index} { proc foo {} {string index} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string index string charIndex"}} -test string-5.2 {string index} { +test stringComp-5.2 {string index} { proc foo {} {string index a b c} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string index string charIndex"}} -test string-5.3 {string index} { +test stringComp-5.3 {string index} { proc foo {} {string index abcde 0} foo } a -test string-5.4 {string index} { +test stringComp-5.4 {string index} { proc foo {} {string in abcde 4} foo } e -test string-5.5 {string index} { +test stringComp-5.5 {string index} { proc foo {} {string index abcde 5} foo } {} -test string-5.6 {string index} { +test stringComp-5.6 {string index} { proc foo {} {string index abcde -10} list [catch {foo} msg] $msg } {0 {}} -test string-5.7 {string index} { +test stringComp-5.7 {string index} { proc foo {} {string index a xyz} list [catch {foo} msg] $msg } {1 {bad index "xyz": must be integer or end?-integer?}} -test string-5.8 {string index} { +test stringComp-5.8 {string index} { proc foo {} {string index abc end} foo } c -test string-5.9 {string index} { +test stringComp-5.9 {string index} { proc foo {} {string index abc end-1} foo } b -test string-5.10 {string index, unicode} { +test stringComp-5.10 {string index, unicode} { proc foo {} {string index abc\u7266d 4} foo } d -test string-5.11 {string index, unicode} { +test stringComp-5.11 {string index, unicode} { proc foo {} {string index abc\u7266d 3} foo } \u7266 -test string-5.12 {string index, unicode over char length, under byte length} { +test stringComp-5.12 {string index, unicode over char length, under byte length} { proc foo {} {string index \334\374\334\374 6} foo } {} -test string-5.13 {string index, bytearray object} { +test stringComp-5.13 {string index, bytearray object} { proc foo {} {string index [binary format a5 fuz] 0} foo } f -test string-5.14 {string index, bytearray object} { +test stringComp-5.14 {string index, bytearray object} { proc foo {} {string index [binary format I* {0x50515253 0x52}] 3} foo } S -test string-5.15 {string index, bytearray object} { +test stringComp-5.15 {string index, bytearray object} { proc foo {} { set b [binary format I* {0x50515253 0x52}] set i1 [string index $b end-6] @@ -342,7 +342,7 @@ test string-5.15 {string index, bytearray object} { } foo } 0 -test string-5.16 {string index, bytearray object with string obj shimmering} { +test stringComp-5.16 {string index, bytearray object with string obj shimmering} { proc foo {} { set str "0123456789\x00 abcdedfghi" binary scan $str H* dump @@ -350,19 +350,19 @@ test string-5.16 {string index, bytearray object with string obj shimmering} { } foo } 0 -test string-5.17 {string index, bad integer} { +test stringComp-5.17 {string index, bad integer} { proc foo {} {string index "abc" 08} list [catch {foo} msg] $msg } {1 {bad index "08": must be integer or end?-integer? (looks like invalid octal number)}} -test string-5.18 {string index, bad integer} { +test stringComp-5.18 {string index, bad integer} { proc foo {} {string index "abc" end-00289} list [catch {foo} msg] $msg } {1 {bad index "end-00289": must be integer or end?-integer? (looks like invalid octal number)}} -test string-5.19 {string index, bytearray object out of bounds} { +test stringComp-5.19 {string index, bytearray object out of bounds} { proc foo {} {string index [binary format I* {0x50515253 0x52}] -1} foo } {} -test string-5.20 {string index, bytearray object out of bounds} { +test stringComp-5.20 {string index, bytearray object out of bounds} { proc foo {} {string index [binary format I* {0x50515253 0x52}] 20} foo } {} @@ -387,50 +387,50 @@ catch {rename largest_int {}} ## string length ## not yet bc -test string-8.1 {string bytelength} { +test stringComp-8.1 {string bytelength} { proc foo {} {string bytelength} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string bytelength string"}} -test string-8.2 {string bytelength} { +test stringComp-8.2 {string bytelength} { proc foo {} {string bytelength a b} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string bytelength string"}} -test string-8.3 {string bytelength} { +test stringComp-8.3 {string bytelength} { proc foo {} {string bytelength "\u00c7"} foo } 2 -test string-8.4 {string bytelength} { +test stringComp-8.4 {string bytelength} { proc foo {} {string b ""} foo } 0 ## string length ## -test string-9.1 {string length} { +test stringComp-9.1 {string length} { proc foo {} {string length} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string length string"}} -test string-9.2 {string length} { +test stringComp-9.2 {string length} { proc foo {} {string length a b} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string length string"}} -test string-9.3 {string length} { +test stringComp-9.3 {string length} { proc foo {} {string length "a little string"} foo } 15 -test string-9.4 {string length} { +test stringComp-9.4 {string length} { proc foo {} {string le ""} foo } 0 -test string-9.5 {string length, unicode} { +test stringComp-9.5 {string length, unicode} { proc foo {} {string le "abcd\u7266"} foo } 5 -test string-9.6 {string length, bytearray object} { +test stringComp-9.6 {string length, bytearray object} { proc foo {} {string length [binary format a5 foo]} foo } 5 -test string-9.7 {string length, bytearray object} { +test stringComp-9.7 {string length, bytearray object} { proc foo {} {string length [binary format I* {0x50515253 0x52}]} foo } 8 @@ -440,215 +440,215 @@ test string-9.7 {string length, bytearray object} { ## string match ## -test string-11.1 {string match, too few args} { +test stringComp-11.1 {string match, too few args} { proc foo {} {string match a} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string match ?-nocase? pattern string"}} -test string-11.2 {string match, too many args} { +test stringComp-11.2 {string match, too many args} { proc foo {} {string match a b c d} list [catch {foo} msg] $msg } {1 {wrong # args: should be "string match ?-nocase? pattern string"}} -test string-11.3 {string match} { +test stringComp-11.3 {string match} { proc foo {} {string match abc abc} foo } 1 -test string-11.4 {string match} { +test stringComp-11.4 {string match} { proc foo {} {string mat abc abd} foo } 0 -test string-11.5 {string match} { +test stringComp-11.5 {string match} { proc foo {} {string match ab*c abc} foo } 1 -test string-11.6 {string match} { +test stringComp-11.6 {string match} { proc foo {} {string match ab**c abc} foo } 1 -test string-11.7 {string match} { +test stringComp-11.7 {string match} { proc foo {} {string match ab* abcdef} foo } 1 -test string-11.8 {string match} { +test stringComp-11.8 {string match} { proc foo {} {string match *c abc} foo } 1 -test string-11.9 {string match} { +test stringComp-11.9 {string match} { proc foo {} {string match *3*6*9 0123456789} foo } 1 -test string-11.10 {string match} { +test stringComp-11.10 {string match} { proc foo {} {string match *3*6*9 01234567890} foo } 0 -test string-11.11 {string match} { +test stringComp-11.11 {string match} { proc foo {} {string match a?c abc} foo } 1 -test string-11.12 {string match} { +test stringComp-11.12 {string match} { proc foo {} {string match a??c abc} foo } 0 -test string-11.13 {string match} { +test stringComp-11.13 {string match} { proc foo {} {string match ?1??4???8? 0123456789} foo } 1 -test string-11.14 {string match} { +test stringComp-11.14 {string match} { proc foo {} {string match {[abc]bc} abc} foo } 1 -test string-11.15 {string match} { +test stringComp-11.15 {string match} { proc foo {} {string match {a[abc]c} abc} foo } 1 -test string-11.16 {string match} { +test stringComp-11.16 {string match} { proc foo {} {string match {a[xyz]c} abc} foo } 0 -test string-11.17 {string match} { +test stringComp-11.17 {string match} { proc foo {} {string match {12[2-7]45} 12345} foo } 1 -test string-11.18 {string match} { +test stringComp-11.18 {string match} { proc foo {} {string match {12[ab2-4cd]45} 12345} foo } 1 -test string-11.19 {string match} { +test stringComp-11.19 {string match} { proc foo {} {string match {12[ab2-4cd]45} 12b45} foo } 1 -test string-11.20 {string match} { +test stringComp-11.20 {string match} { proc foo {} {string match {12[ab2-4cd]45} 12d45} foo } 1 -test string-11.21 {string match} { +test stringComp-11.21 {string match} { proc foo {} {string match {12[ab2-4cd]45} 12145} foo } 0 -test string-11.22 {string match} { +test stringComp-11.22 {string match} { proc foo {} {string match {12[ab2-4cd]45} 12545} foo } 0 -test string-11.23 {string match} { +test stringComp-11.23 {string match} { proc foo {} {string match {a\*b} a*b} foo } 1 -test string-11.24 {string match} { +test stringComp-11.24 {string match} { proc foo {} {string match {a\*b} ab} foo } 0 -test string-11.25 {string match} { +test stringComp-11.25 {string match} { proc foo {} {string match {a\*\?\[\]\\\x} "a*?\[\]\\x"} foo } 1 -test string-11.26 {string match} { +test stringComp-11.26 {string match} { proc foo {} {string match ** ""} foo } 1 -test string-11.27 {string match} { +test stringComp-11.27 {string match} { proc foo {} {string match *. ""} foo } 0 -test string-11.28 {string match} { +test stringComp-11.28 {string match} { proc foo {} {string match "" ""} foo } 1 -test string-11.29 {string match} { +test stringComp-11.29 {string match} { proc foo {} {string match \[a a} foo } 1 -test string-11.30 {string match, bad args} { +test stringComp-11.30 {string match, bad args} { proc foo {} {string match - b c} list [catch {foo} msg] $msg } {1 {bad option "-": must be -nocase}} -test string-11.31 {string match case} { +test stringComp-11.31 {string match case} { proc foo {} {string match a A} foo } 0 -test string-11.32 {string match nocase} { +test stringComp-11.32 {string match nocase} { proc foo {} {string match -n a A} foo } 1 -test string-11.33 {string match nocase} { +test stringComp-11.33 {string match nocase} { proc foo {} {string match -nocase a\334 A\374} foo } 1 -test string-11.34 {string match nocase} { +test stringComp-11.34 {string match nocase} { proc foo {} {string match -nocase a*f ABCDEf} foo } 1 -test string-11.35 {string match case, false hope} { +test stringComp-11.35 {string match case, false hope} { # This is true because '_' lies between the A-Z and a-z ranges proc foo {} {string match {[A-z]} _} foo } 1 -test string-11.36 {string match nocase range} { +test stringComp-11.36 {string match nocase range} { # This is false because although '_' lies between the A-Z and a-z ranges, # we lower case the end points before checking the ranges. proc foo {} {string match -nocase {[A-z]} _} foo } 0 -test string-11.37 {string match nocase} { +test stringComp-11.37 {string match nocase} { proc foo {} {string match -nocase {[A-fh-Z]} g} foo } 0 -test string-11.38 {string match case, reverse range} { +test stringComp-11.38 {string match case, reverse range} { proc foo {} {string match {[A-fh-Z]} g} foo } 1 -test string-11.39 {string match, *\ case} { +test stringComp-11.39 {string match, *\ case} { proc foo {} {string match {*\abc} abc} foo } 1 -test string-11.40 {string match, *special case} { +test stringComp-11.40 {string match, *special case} { proc foo {} {string match {*[ab]} abc} foo } 0 -test string-11.41 {string match, *special case} { +test stringComp-11.41 {string match, *special case} { proc foo {} {string match {*[ab]*} abc} foo } 1 -test string-11.42 {string match, *special case} { +test stringComp-11.42 {string match, *special case} { proc foo {} {string match "*\\" "\\"} foo } 0 -test string-11.43 {string match, *special case} { +test stringComp-11.43 {string match, *special case} { proc foo {} {string match "*\\\\" "\\"} foo } 1 -test string-11.44 {string match, *special case} { +test stringComp-11.44 {string match, *special case} { proc foo {} {string match "*???" "12345"} foo } 1 -test string-11.45 {string match, *special case} { +test stringComp-11.45 {string match, *special case} { proc foo {} {string match "*???" "12"} foo } 0 -test string-11.46 {string match, *special case} { +test stringComp-11.46 {string match, *special case} { proc foo {} {string match "*\\*" "abc*"} foo } 1 -test string-11.47 {string match, *special case} { +test stringComp-11.47 {string match, *special case} { proc foo {} {string match "*\\*" "*"} foo } 1 -test string-11.48 {string match, *special case} { +test stringComp-11.48 {string match, *special case} { proc foo {} {string match "*\\*" "*abc"} foo } 0 -test string-11.49 {string match, *special case} { +test stringComp-11.49 {string match, *special case} { proc foo {} {string match "?\\*" "a*"} foo } 1 -test string-11.50 {string match, *special case} { +test stringComp-11.50 {string match, *special case} { proc foo {} {string match "\\" "\\"} foo } 0 -test string-11.51 {string match; *, -nocase and UTF-8} { +test stringComp-11.51 {string match; *, -nocase and UTF-8} { proc foo {} {string match -nocase [binary format I 717316707] \ [binary format I 2028036707]} foo } 1 -test string-11.52 {string match, null char in string} { +test stringComp-11.52 {string match, null char in string} { proc foo {} { set ptn "*abc*" foreach elem [list "\u0000@abc" "@abc" "\u0000@abc\u0000" "blahabcblah"] { @@ -658,7 +658,7 @@ test string-11.52 {string match, null char in string} { } foo } {1 1 1 1} -test string-11.53 {string match, null char in pattern} { +test stringComp-11.53 {string match, null char in pattern} { proc foo {} { set out "" foreach {ptn elem} [list \ @@ -674,7 +674,7 @@ test string-11.53 {string match, null char in pattern} { } foo } {1 0 1 0 1} -test string-11.54 {string match, failure} { +test stringComp-11.54 {string match, failure} { proc foo {} { set longString "" for {set i 0} {$i < 10} {incr i} { diff --git a/tests/unixInit.test b/tests/unixInit.test index 4523ee3..61d69d0 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,11 +10,11 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.8 2004/05/05 21:34:52 dgp Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.9 2004/10/28 00:01:12 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* -catch {unset path} +unset -nocomplain path if {[info exists env(TCL_LIBRARY)]} { set oldlibrary $env(TCL_LIBRARY) unset env(TCL_LIBRARY) @@ -381,5 +381,6 @@ if {[info exists oldlibrary]} { } catch {unset env(LANG)} catch {set env(LANG) $oldlang} +unset -nocomplain path ::tcltest::cleanupTests return diff --git a/tests/winPipe.test b/tests/winPipe.test index 60e7dd5..4cc6e26 100644 --- a/tests/winPipe.test +++ b/tests/winPipe.test @@ -12,10 +12,11 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winPipe.test,v 1.22.2.1 2004/02/25 07:56:11 davygrvy Exp $ +# RCS: @(#) $Id: winPipe.test,v 1.22.2.2 2004/10/28 00:01:12 dgp Exp $ package require tcltest namespace import -force ::tcltest::* +unset -nocomplain path testConstraint exec [llength [info commands exec]] -- cgit v0.12 From 1bdeaea06e156311beb3940ea3b4d31d737da50a Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 28 Oct 2004 04:16:19 +0000 Subject: * tests/socket.test (socket-13.1): Balanced [makeFile] and [removeFile] commands. * generic/tclCmdAH.c (Tcl_FormatObjCmd): Restored missing line from yesterdays' 868486 backport that caused failed alloc's on LP64 systems. --- ChangeLog | 4 ++++ generic/tclCmdAH.c | 3 ++- tests/socket.test | 21 ++++++++++----------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index bf7f3dc..84eec09 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-10-27 Don Porter + * generic/tclCmdAH.c (Tcl_FormatObjCmd): Restored missing + line from yesterdays' 868486 backport that caused failed alloc's + on LP64 systems. + * tests/appendComp.test: Backport test suite fixes of errors * tests/autoMkindex.test: revealed by -singleproc 1 -debug 1 * tests/exec.test: options to make test. diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 4c43b87..c015b1b 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.9 2004/10/27 15:39:35 kennykb Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.10 2004/10/28 04:16:20 dgp Exp $ */ #include "tclInt.h" @@ -2220,6 +2220,7 @@ Tcl_FormatObjCmd(dummy, interp, objc, objv) newPtr[-2] = 'l'; #endif /* LONG_MAX > INT_MAX */ whichValue = INT_VALUE; + size = 40 + precision; break; case 's': /* diff --git a/tests/socket.test b/tests/socket.test index ab5c89c..f1777a3 100644 --- a/tests/socket.test +++ b/tests/socket.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: socket.test,v 1.26.2.3 2004/07/16 19:20:25 andreas_kupries Exp $ +# RCS: @(#) $Id: socket.test,v 1.26.2.4 2004/10/28 04:16:22 dgp Exp $ # Running socket tests with a remote server: # ------------------------------------------ @@ -1627,12 +1627,11 @@ test socket-12.3 {testing inheritance of accepted sockets} {socket stdio exec} { } {accepted socket was not inherited} test socket-13.1 {Testing use of shared socket between two threads} \ - {socket testthread} { + -constraints {socket testthread} -setup { - file delete $path(script1) threadReap - makeFile { + set path(script) [makeFile { set f [socket -server accept 0] set listen [lindex [fconfigure $f -sockname] 2] proc accept {s a p} { @@ -1657,10 +1656,11 @@ test socket-13.1 {Testing use of shared socket between two threads} \ # thread cleans itself up. testthread exit - } script - + } script] + +} -body { # create a thread - set serverthread [testthread create { source script } ] + set serverthread [testthread create { source $path(script) } ] update set port [testthread send $serverthread {set listen}] update @@ -1678,10 +1678,9 @@ test socket-13.1 {Testing use of shared socket between two threads} \ after 2000 lappend result [threadReap] - - set result - -} {hello 1} +} -cleanup { + removeFile script +} -result {hello 1} removeFile script1 removeFile script2 -- cgit v0.12 From edd30d9489db089dcc47c6110335a1cee9bc6ed5 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 28 Oct 2004 04:53:12 +0000 Subject: D'oh! --- tests/socket.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/socket.test b/tests/socket.test index f1777a3..0018a0a 100644 --- a/tests/socket.test +++ b/tests/socket.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: socket.test,v 1.26.2.4 2004/10/28 04:16:22 dgp Exp $ +# RCS: @(#) $Id: socket.test,v 1.26.2.5 2004/10/28 04:53:12 dgp Exp $ # Running socket tests with a remote server: # ------------------------------------------ @@ -1660,7 +1660,7 @@ test socket-13.1 {Testing use of shared socket between two threads} \ } -body { # create a thread - set serverthread [testthread create { source $path(script) } ] + set serverthread [testthread create [list source $path(script) ] ] update set port [testthread send $serverthread {set listen}] update -- cgit v0.12 From 61617a7891a8266415ac5a14e6dce92693e10c5c Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Thu, 28 Oct 2004 16:06:30 +0000 Subject: added CONST to TclpLocaltime and TclpGmtime param throughout --- ChangeLog | 15 +++++++++++++-- generic/tclInt.decls | 10 +++++----- generic/tclIntDecls.h | 10 +++++----- generic/tclIntPlatDecls.h | 11 ++++++----- unix/tclUnixTime.c | 10 +++++----- win/tclWinTime.c | 6 +++--- 6 files changed, 37 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84eec09..6809a43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,18 @@ +2004-10-28 Kevin B. Kenny + + * generic/tclInt.decls: + * unix/tclUnixTime.c (TclpGmtime, TclpLocaltime): + * win/tclWinTime.c (TclpGmtime, TclpLocaltime): + Changed type signatures of TclpGmtime and TclpLocaltime + to accept CONST TclpTime_t throughout, to avoid any possible + confusion in pedantic compilers. [Bug 1001319] + * generic/tclIntDecls.h: + * generic/tclIntPlatDecls.h: Regenerated. + 2004-10-27 Don Porter * generic/tclCmdAH.c (Tcl_FormatObjCmd): Restored missing - line from yesterdays' 868486 backport that caused failed alloc's + line from yesterdays' 868489 backport that caused failed alloc's on LP64 systems. * tests/appendComp.test: Backport test suite fixes of errors @@ -19,7 +30,7 @@ 2004-10-26 Kevin B. Kenny * generic/tclCmdAH.c (Tcl_FormatObjCmd): Backport a missing bit - of the bug 868486 fix. + of the bug 868489 fix. * generic/tclObj.c (SetBooleanFromAny): Backport fix for Bug 1026125. * tests/format.test (format-19.1): Additional regression test for diff --git a/generic/tclInt.decls b/generic/tclInt.decls index 12afb31..71434b5 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.59.2.4 2004/10/14 15:28:38 dkf Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.59.2.5 2004/10/28 16:06:32 kennykb Exp $ library tcl @@ -700,10 +700,10 @@ declare 173 generic { # TclpGmtime and TclpLocaltime promoted to the generic interface from unix declare 182 generic { - struct tm *TclpLocaltime(TclpTime_t clock) + struct tm *TclpLocaltime(CONST TclpTime_t clock) } declare 183 generic { - struct tm *TclpGmtime(TclpTime_t clock) + struct tm *TclpGmtime(CONST TclpTime_t clock) } declare 199 generic { @@ -998,11 +998,11 @@ declare 10 unix { # generic Stubs declare 11 unix { - struct tm * TclpLocaltime_unix(TclpTime_t clock) + struct tm * TclpLocaltime_unix(CONST TclpTime_t clock) } declare 12 unix { - struct tm * TclpGmtime_unix(TclpTime_t clock) + struct tm * TclpGmtime_unix(CONST TclpTime_t clock) } declare 13 unix { diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index 2ed9392..e70baf1 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.6 2004/10/14 15:30:51 dkf Exp $ + * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.7 2004/10/28 16:06:33 kennykb Exp $ */ #ifndef _TCLINTDECLS @@ -512,9 +512,9 @@ EXTERN int TclUniCharMatch _ANSI_ARGS_(( /* Slot 180 is reserved */ /* Slot 181 is reserved */ /* 182 */ -EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t clock)); +EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((CONST TclpTime_t clock)); /* 183 */ -EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t clock)); +EXTERN struct tm * TclpGmtime _ANSI_ARGS_((CONST TclpTime_t clock)); /* Slot 184 is reserved */ /* Slot 185 is reserved */ /* Slot 186 is reserved */ @@ -743,8 +743,8 @@ typedef struct TclIntStubs { void *reserved179; void *reserved180; void *reserved181; - struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t clock)); /* 182 */ - struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t clock)); /* 183 */ + struct tm * (*tclpLocaltime) _ANSI_ARGS_((CONST TclpTime_t clock)); /* 182 */ + struct tm * (*tclpGmtime) _ANSI_ARGS_((CONST TclpTime_t clock)); /* 183 */ void *reserved184; void *reserved185; void *reserved186; diff --git a/generic/tclIntPlatDecls.h b/generic/tclIntPlatDecls.h index 8ced1c1..e5a3ca0 100644 --- a/generic/tclIntPlatDecls.h +++ b/generic/tclIntPlatDecls.h @@ -9,7 +9,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.5 2004/06/10 17:17:44 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.6 2004/10/28 16:06:49 kennykb Exp $ */ #ifndef _TCLINTPLATDECLS @@ -62,9 +62,10 @@ EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( /* 10 */ EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); /* 11 */ -EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_((TclpTime_t clock)); +EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_(( + CONST TclpTime_t clock)); /* 12 */ -EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((TclpTime_t clock)); +EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((CONST TclpTime_t clock)); /* 13 */ EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); #endif /* UNIX */ @@ -232,8 +233,8 @@ typedef struct TclIntPlatStubs { int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ - struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 11 */ - struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t clock)); /* 12 */ + struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((CONST TclpTime_t clock)); /* 11 */ + struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((CONST TclpTime_t clock)); /* 12 */ char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ #endif /* UNIX */ #ifdef __WIN32__ diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c index 47492e9..0e0268f 100644 --- a/unix/tclUnixTime.c +++ b/unix/tclUnixTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.2 2004/05/17 14:26:50 kennykb Exp $ + * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.3 2004/10/28 16:06:50 kennykb Exp $ */ #include "tclInt.h" @@ -344,7 +344,7 @@ TclpStrftime(s, maxsize, format, t, useGMT) struct tm * TclpGmtime( tt ) - TclpTime_t tt; + CONST TclpTime_t tt; { CONST time_t *timePtr = (CONST time_t *) tt; /* Pointer to the number of seconds @@ -371,7 +371,7 @@ TclpGmtime( tt ) */ struct tm* TclpGmtime_unix( timePtr ) - TclpTime_t timePtr; + CONST TclpTime_t timePtr; { return TclpGmtime( timePtr ); } @@ -395,7 +395,7 @@ TclpGmtime_unix( timePtr ) struct tm * TclpLocaltime( tt ) - TclpTime_t tt; + CONST TclpTime_t tt; { CONST time_t *timePtr = (CONST time_t *) tt; /* Pointer to the number of seconds @@ -422,7 +422,7 @@ TclpLocaltime( tt ) */ struct tm* TclpLocaltime_unix( timePtr ) - TclpTime_t timePtr; + CONST TclpTime_t timePtr; { return TclpLocaltime( timePtr ); } diff --git a/win/tclWinTime.c b/win/tclWinTime.c index f428d52..0eb21b3 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.5 2004/06/05 17:25:40 kennykb Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.6 2004/10/28 16:06:51 kennykb Exp $ */ #include "tclWinInt.h" @@ -1103,7 +1103,7 @@ AccumulateSample( Tcl_WideInt perfCounter, struct tm * TclpGmtime( tt ) - TclpTime_t tt; + CONST TclpTime_t tt; { CONST time_t *timePtr = (CONST time_t *) tt; /* Pointer to the number of seconds @@ -1135,7 +1135,7 @@ TclpGmtime( tt ) struct tm * TclpLocaltime( tt ) - TclpTime_t tt; + CONST TclpTime_t tt; { CONST time_t *timePtr = (CONST time_t *) tt; /* Pointer to the number of seconds -- cgit v0.12 From 93db5dfcdf5fedb0552a7a20e13e9643ecbf564f Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 28 Oct 2004 16:41:53 +0000 Subject: * README: Bumped patch level to 8.4.8 to prepare * generic/tcl.h: for next patch release. * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf (2.13) * win/configure: --- ChangeLog | 13 +++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6809a43..261c008 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2004-10-28 Don Porter + + * README: Bumped patch level to 8.4.8 to prepare + * generic/tcl.h: for next patch release. + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf (2.13) + * win/configure: + 2004-10-28 Kevin B. Kenny * generic/tclInt.decls: diff --git a/README b/README index 519245f..e0d3ab2 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.7 source distribution. + This is the Tcl 8.4.8 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.7 2004/07/13 19:21:16 hobbs Exp $ +RCS: @(#) $Id: README,v 1.49.2.8 2004/10/28 16:42:04 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 716346e..174e4af 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.14 2004/09/10 20:01:03 andreas_kupries Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.15 2004/10/28 16:42:04 dgp Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 7 +#define TCL_RELEASE_SERIAL 8 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.7" +#define TCL_PATCH_LEVEL "8.4.8" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 1339758..be73406 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.7 + Disk Label=tcl8.4.8 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index bc54665..1a66b50 100755 --- a/unix/configure +++ b/unix/configure @@ -548,7 +548,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".7" +TCL_PATCH_LEVEL=".8" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index ae42960..0d8d074 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.8 2004/07/19 20:12:26 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.9 2004/10/28 16:42:12 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".7" +TCL_PATCH_LEVEL=".8" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 51360b8..893c7da 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.7 2004/07/13 19:21:38 hobbs Exp $ +# $Id: tcl.spec,v 1.16.2.8 2004/10/28 16:42:12 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.7 +%define version 8.4.8 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index 99a4f07..3cf01a4 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.7 2004/07/13 19:21:38 hobbs Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.8 2004/10/28 16:42:12 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.7 for +This directory contains the binary distribution of Tcl/Tk 8.4.8 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index cf439ef..631e28c 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".7" +TCL_PATCH_LEVEL=".8" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 64dbe89..bfcd2df8 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.9 2004/07/13 19:21:38 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.10 2004/10/28 16:42:14 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".7" +TCL_PATCH_LEVEL=".8" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 0c45f847cdb07da65270f480ccf96da7464448e9 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 28 Oct 2004 21:12:33 +0000 Subject: * generic/tclAlloc.c: Fixed [Tcl SF Bug 1030548], a * generic/tclThreadAlloc.c: threaded debug build on Windows * win/tclWinThrd.c: now works again. Had to touch Unix * unix/tclUnixThrd.c: as well. Basic patch by Kevin, with modifications by myself. --- ChangeLog | 8 ++++++++ generic/tclAlloc.c | 4 ++-- generic/tclThreadAlloc.c | 4 ++-- unix/tclUnixThrd.c | 2 +- win/tclWinThrd.c | 7 ++++--- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 261c008..634ce84 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-10-28 Andreas Kupries + + * generic/tclAlloc.c: Fixed [Tcl SF Bug 1030548], a + * generic/tclThreadAlloc.c: threaded debug build on Windows + * win/tclWinThrd.c: now works again. Had to touch Unix + * unix/tclUnixThrd.c: as well. Basic patch by Kevin, with + modifications by myself. + 2004-10-28 Don Porter * README: Bumped patch level to 8.4.8 to prepare diff --git a/generic/tclAlloc.c b/generic/tclAlloc.c index fe64c97..e51ba8e 100644 --- a/generic/tclAlloc.c +++ b/generic/tclAlloc.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAlloc.c,v 1.16 2002/04/23 17:03:34 hobbs Exp $ + * RCS: @(#) $Id: tclAlloc.c,v 1.16.2.1 2004/10/28 21:12:37 andreas_kupries Exp $ */ /* @@ -23,7 +23,7 @@ * that has significantly reduced lock contention. */ -#if !defined(TCL_THREADS) || !defined(USE_THREAD_ALLOC) +#if !defined(TCL_THREADS) || !defined(USE_THREAD_ALLOC) || defined(TCL_MEM_DEBUG) #include "tclInt.h" #include "tclPort.h" diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index d14ed87..fdddeff 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,12 +11,12 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.4 2004/07/25 21:38:09 patthoyts Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.5 2004/10/28 21:12:38 andreas_kupries Exp $ */ #include "tclInt.h" -#if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) +#if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) #ifdef WIN32 #include "tclWinInt.h" diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 738808a..00059df 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -883,7 +883,7 @@ TclpInetNtoa(struct in_addr addr) #endif } -#ifdef TCL_THREADS +#if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) /* * Additions by AOL for specialized thread memory allocator. */ diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index c99f27b..05a321b 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.8 2004/07/21 01:30:58 hobbs Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.9 2004/10/28 21:12:38 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -680,7 +680,7 @@ TclpFinalizeThreadData(keyPtr) DWORD *indexPtr; BOOL success; -#ifdef USE_THREAD_ALLOC +#if defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) TclWinFreeAllocCache(); #endif if (*keyPtr != NULL) { @@ -1037,7 +1037,8 @@ TclpFinalizeCondition(condPtr) /* * Additions by AOL for specialized thread memory allocator. */ -#ifdef USE_THREAD_ALLOC + +#if defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) static int once; static DWORD key; -- cgit v0.12 From 64be335c36012419adc36816d7e4d063df63425e Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 30 Oct 2004 03:16:12 +0000 Subject: * library/tcltest/tcltest.tcl: Correct reaction to errors in the obsolete processCmdLineArgsHook. [Bug 1055673] * library/tcltest/pkgIndex.tcl: Bump to tcltest 2.2.7 --- ChangeLog | 6 ++++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 10 ++++++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 634ce84..ddd3ce6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-10-29 Don Porter + + * library/tcltest/tcltest.tcl: Correct reaction to errors in the + obsolete processCmdLineArgsHook. [Bug 1055673] + * library/tcltest/pkgIndex.tcl: Bump to tcltest 2.2.7 + 2004-10-28 Andreas Kupries * generic/tclAlloc.c: Fixed [Tcl SF Bug 1030548], a diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index 6e0766e..fe594b6 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.3]} {return} -package ifneeded tcltest 2.2.6 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.2.7 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 85d86db..9398ea4 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.10 2004/05/26 16:24:37 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.11 2004/10/30 03:16:14 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.2.6 + variable Version 2.2.7 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -1458,8 +1458,10 @@ proc tcltest::ProcessFlags {flagArray} { } # Call the hook - array set flag $flagArray - processCmdLineArgsHook [array get flag] + catch { + array set flag $flagArray + processCmdLineArgsHook [array get flag] + } return } -- cgit v0.12 From c29a0584716dc23c315d6fbaf3c578e5aef6412c Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sat, 30 Oct 2004 21:00:07 +0000 Subject: removed erroneous comment [Bug 1029518] --- ChangeLog | 5 +++++ generic/tclCmdAH.c | 8 +------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index ddd3ce6..e6a9b96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-10-30 Miguel Sofer + + * generic/tclCmdAH.c (Tcl_CatchObjCmd): removed erroneous comment + [Bug 1029518] + 2004-10-29 Don Porter * library/tcltest/tcltest.tcl: Correct reaction to errors in the diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index c015b1b..4d99fbd 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.10 2004/10/28 04:16:20 dgp Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.11 2004/10/30 21:00:09 msofer Exp $ */ #include "tclInt.h" @@ -241,12 +241,6 @@ Tcl_CatchObjCmd(dummy, interp, objc, objv) return TCL_ERROR; } - /* - * Save a pointer to the variable name object, if any, in case the - * Tcl_EvalObj reallocates the bytecode interpreter's evaluation - * stack rendering objv invalid. - */ - if (objc == 3) { varNamePtr = objv[2]; } -- cgit v0.12 From 22042ac17d28b7e80420612e880f6f4e3130db65 Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 31 Oct 2004 16:43:27 +0000 Subject: Make [info globals ::foo] work. [Bug 1057461] --- ChangeLog | 6 ++++++ generic/tclCmdIL.c | 12 ++++++++++-- tests/info.test | 6 +++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index e6a9b96..8b346e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-10-31 Donal K. Fellows + + * generic/tclCmdIL.c (InfoGlobalsCmd): + * tests/info.test (info-8.4): Strip leading global-namespace + specifiers from the pattern argument. [Bug 1057461] + 2004-10-30 Miguel Sofer * generic/tclCmdAH.c (Tcl_CatchObjCmd): removed erroneous comment diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index c692ce7..5951df7 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.3 2004/10/14 15:28:38 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.4 2004/10/31 16:43:30 dkf Exp $ */ #include "tclInt.h" @@ -1082,7 +1082,15 @@ InfoGlobalsCmd(dummy, interp, objc, objv) if (objc == 2) { pattern = NULL; } else if (objc == 3) { - pattern = Tcl_GetString(objv[2]); + pattern = Tcl_GetString(objv[2]); + /* + * Strip leading global-namespace qualifiers. [Bug 1057461] + */ + if (pattern[0] == ':' && pattern[1] == ':') { + while (*pattern == ':') { + pattern++; + } + } } else { Tcl_WrongNumArgs(interp, 2, objv, "?pattern?"); return TCL_ERROR; diff --git a/tests/info.test b/tests/info.test index 715f9ae..27e6edc 100644 --- a/tests/info.test +++ b/tests/info.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.1 2003/03/27 13:11:14 dkf Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.2 2004/10/31 16:43:30 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -291,6 +291,10 @@ test info-8.2 {info globals option} { test info-8.3 {info globals option} { list [catch {info globals 1 2} msg] $msg } {1 {wrong # args: should be "info globals ?pattern?"}} +test info-8.4 {info globals option: may have leading namespace qualifiers} { + set x 0 + list [info globals x] [info globals :x] [info globals ::x] [info globals :::x] [info globals ::::x] +} {x {} x x x} test info-9.1 {info level option} { info level -- cgit v0.12 From 70638824c45321f58b781d0cd062c035a9656ee3 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 2 Nov 2004 09:21:11 +0000 Subject: Add synopsis for Tcl_GetChannelMode. [Bug 1058446] --- ChangeLog | 4 ++++ doc/CrtChannel.3 | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8b346e1..66a2f7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-11-02 Donal K. Fellows + + * doc/CrtChannel.3 (Tcl_GetChannelMode): Add synopsis. [Bug 1058446] + 2004-10-31 Donal K. Fellows * generic/tclCmdIL.c (InfoGlobalsCmd): diff --git a/doc/CrtChannel.3 b/doc/CrtChannel.3 index 828b958..b2360ba 100644 --- a/doc/CrtChannel.3 +++ b/doc/CrtChannel.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.1 2004/07/15 20:46:17 andreas_kupries Exp $ +'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.2 2004/11/02 09:21:25 dkf Exp $ .so man.macros .TH Tcl_CreateChannel 3 8.3 Tcl "Tcl Library Procedures" .BS @@ -37,6 +37,9 @@ Tcl_ThreadId .VE 8.4 .sp int +\fBTcl_GetChannelMode\fR(\fIchannel\fR) +.sp +int \fBTcl_GetChannelBufferSize\fR(\fIchannel\fR) .sp \fBTcl_SetChannelBufferSize\fR(\fIchannel, size\fR) @@ -232,8 +235,8 @@ the channel does not have a device handle for the specified direction, then \fBTCL_ERROR\fR is returned instead. Different channel drivers will return different types of handle. Refer to the manual entries for each driver to determine what type of handle is returned. -.VS 8.4 .PP +.VS 8.4 \fBTcl_GetChannelThread\fR returns the id of the thread currently managing the specified \fIchannel\fR. This allows channel drivers to send their file events to the correct event queue even for a multi-threaded core. -- cgit v0.12 From 22950832b701d9cbc8f109de3cf39f70fe4745b3 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 2 Nov 2004 15:46:34 +0000 Subject: Final fix for NaN != NaN bug. Thanks to Miguel Sofer for his improved patch. [Bug 761471] --- ChangeLog | 3 +++ generic/tclExecute.c | 67 ++++++++++++++++++++++++++++++++++++++++++---------- tests/expr.test | 7 +++++- 3 files changed, 63 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 66a2f7f..66d9c63 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2004-11-02 Donal K. Fellows + * generic/tclExecute.c (TclExecuteByteCode): NaN-equality fix from + Miguel Sofer. [Bug 761471] + * doc/CrtChannel.3 (Tcl_GetChannelMode): Add synopsis. [Bug 1058446] 2004-10-31 Donal K. Fellows diff --git a/generic/tclExecute.c b/generic/tclExecute.c index ef4f379..04862e4 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.9 2004/09/18 19:17:12 dkf Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.10 2004/11/02 15:46:35 dkf Exp $ */ #include "tclInt.h" @@ -2719,26 +2719,67 @@ TclExecuteByteCode(interp, codePtr) value2Ptr = stackPtr[stackTop]; valuePtr = stackPtr[stackTop - 1]; + /* + * Be careful in the equal-object case; 'NaN' isn't supposed + * to be equal to even itself. [Bug 761471] + */ + + t1Ptr = valuePtr->typePtr; if (valuePtr == value2Ptr) { /* - * Optimize the equal object case. + * If we are numeric already, we can proceed to the main + * equality check right now. Otherwise, we need to try to + * coerce to a numeric type so we can see if we've got a + * NaN but haven't parsed it as numeric. */ + if (!IS_NUMERIC_TYPE(t1Ptr)) { + if (t1Ptr == &tclListType) { + int length; + /* + * Only a list of length 1 can be NaN or such + * things. + */ + (void) Tcl_ListObjLength(NULL, valuePtr, &length); + if (length == 1) { + goto mustConvertForNaNCheck; + } + } else { + /* + * Too bad, we'll have to compute the string and + * try the conversion + */ + + mustConvertForNaNCheck: + s1 = Tcl_GetStringFromObj(valuePtr, &length); + if (TclLooksLikeInt(s1, length)) { + GET_WIDE_OR_INT(iResult, valuePtr, i, w); + } else { + (void) Tcl_GetDoubleFromObj((Tcl_Interp *) NULL, + valuePtr, &d1); + } + t1Ptr = valuePtr->typePtr; + } + } + switch (*pc) { - case INST_EQ: - case INST_LE: - case INST_GE: - iResult = 1; - break; - case INST_NEQ: - case INST_LT: - case INST_GT: - iResult = 0; - break; + case INST_EQ: + case INST_LE: + case INST_GE: + iResult = !((t1Ptr == &tclDoubleType) + && IS_NAN(valuePtr->internalRep.doubleValue)); + break; + case INST_LT: + case INST_GT: + iResult = 0; + break; + case INST_NEQ: + iResult = ((t1Ptr == &tclDoubleType) + && IS_NAN(valuePtr->internalRep.doubleValue)); + break; } goto foundResult; } - t1Ptr = valuePtr->typePtr; t2Ptr = value2Ptr->typePtr; /* diff --git a/tests/expr.test b/tests/expr.test index 9ba169a..6ba6732 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.3 2004/09/19 15:02:36 dkf Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.4 2004/11/02 15:46:35 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -805,6 +805,11 @@ test expr-22.7 {non-numeric floats} nonPortable { test expr-22.8 {non-numeric floats} nonPortable { list [catch {expr {1 / Inf}} msg] $msg } {1 {can't use infinite floating-point value as operand of "/"}} +# Make sure [Bug 761471] stays fixed. +test expr-22.9 {non-numeric floats: shared object equality and NaN} { + set x NaN + expr {$x == $x} +} 0 # Some compilers get this wrong; ensure that we work around it correctly test expr-24.1 {expr edge cases; shifting} {expr int(5)>>31} 0 -- cgit v0.12 From 85b5881a0a77a3e3f640365026d6c8722f83c4df Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 2 Nov 2004 19:03:04 +0000 Subject: 2004-11-02 Don Porter * library/tcltest/tcltest.tcl: Corrected some misleading * tests/tcltest.test (tcltest-26.1,2): displays of ::errorInfo and ::errorCode information when the -setup, -body, and/or -cleanup scripts return an unexpected return code. Thanks to Robert Seeger for the fix. [RFE 1017151]. --- ChangeLog | 8 ++++++++ library/tcltest/tcltest.tcl | 28 ++++++++++++++++++++++++---- tests/tcltest.test | 43 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 74 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 66d9c63..27961a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-11-02 Don Porter + + * library/tcltest/tcltest.tcl: Corrected some misleading + * tests/tcltest.test (tcltest-26.1,2): displays of ::errorInfo and + ::errorCode information when the -setup, -body, and/or -cleanup scripts + return an unexpected return code. Thanks to Robert Seeger for the + fix. [RFE 1017151]. + 2004-11-02 Donal K. Fellows * generic/tclExecute.c (TclExecuteByteCode): NaN-equality fix from diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 9398ea4..eac8278 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.11 2004/10/30 03:16:14 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.12 2004/11/02 19:03:07 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -1949,6 +1949,10 @@ proc tcltest::test {name description args} { # First, run the setup script set code [catch {uplevel 1 $setup} setupMsg] + if {$code == 1} { + set errorInfo(setup) $::errorInfo + set errorCode(setup) $::errorCode + } set setupFailure [expr {$code != 0}] # Only run the test body if the setup was successful @@ -1967,10 +1971,18 @@ proc tcltest::test {name description args} { set testResult [uplevel 1 [list [namespace origin Eval] $command 1]] } foreach {actualAnswer returnCode} $testResult break + if {$returnCode == 1} { + set errorInfo(body) $::errorInfo + set errorCode(body) $::errorCode + } } # Always run the cleanup script set code [catch {uplevel 1 $cleanup} cleanupMsg] + if {$code == 1} { + set errorInfo(cleanup) $::errorInfo + set errorCode(cleanup) $::errorCode + } set cleanupFailure [expr {$code != 0}] set coreFailure 0 @@ -2084,6 +2096,10 @@ proc tcltest::test {name description args} { if {$setupFailure} { puts [outputChannel] "---- Test setup\ failed:\n$setupMsg" + if {[info exists errorInfo(setup)]} { + puts [outputChannel] "---- errorInfo(setup): $errorInfo(setup)" + puts [outputChannel] "---- errorCode(setup): $errorCode(setup)" + } } if {$scriptFailure} { if {$scriptCompare} { @@ -2107,9 +2123,9 @@ proc tcltest::test {name description args} { puts [outputChannel] "---- Return code should have been\ one of: $returnCodes" if {[IsVerbose error]} { - if {[info exists ::errorInfo]} { - puts [outputChannel] "---- errorInfo: $::errorInfo" - puts [outputChannel] "---- errorCode: $::errorCode" + if {[info exists errorInfo(body)] && ([lsearch $returnCodes 1]<0)} { + puts [outputChannel] "---- errorInfo: $errorInfo(body)" + puts [outputChannel] "---- errorCode: $errorCode(body)" } } } @@ -2133,6 +2149,10 @@ proc tcltest::test {name description args} { } if {$cleanupFailure} { puts [outputChannel] "---- Test cleanup failed:\n$cleanupMsg" + if {[info exists errorInfo(cleanup)]} { + puts [outputChannel] "---- errorInfo(cleanup): $errorInfo(cleanup)" + puts [outputChannel] "---- errorCode(cleanup): $errorCode(cleanup)" + } } if {$coreFailure} { puts [outputChannel] "---- Core file produced while running\ diff --git a/tests/tcltest.test b/tests/tcltest.test index 90a87af..ae5332d 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.5 2004/10/26 20:14:37 dgp Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.6 2004/11/02 19:03:08 dgp Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -1740,6 +1740,47 @@ test tcltest-25.3 { verbose $v } -match glob -output {*generated error; Return code was: 1*} +test tcltest-26.1 {Bug/RFE 1017151} -setup { + makeFile { + package require tcltest + set errorInfo "Should never see this" + tcltest::test tcltest-26.1.0 { + no errorInfo when only return code mismatch + } -body { + set x 1 + } -returnCodes error -result 1 + tcltest::cleanupTests + } test.tcl +} -body { + slave msg test.tcl + set msg +} -cleanup { + removeFile test.tcl +} -match glob -result {* +---- Return code should have been one of: 1 +==== tcltest-26.1.0 FAILED*} + +test tcltest-26.2 {Bug/RFE 1017151} -setup { + makeFile { + package require tcltest + set errorInfo "Should never see this" + tcltest::test tcltest-26.2.0 {do not mask body errorInfo} -body { + error "body error" + } -cleanup { + error "cleanup error" + } -result 1 + tcltest::cleanupTests + } test.tcl +} -body { + slave msg test.tcl + set msg +} -cleanup { + removeFile test.tcl +} -match glob -result {* +---- errorInfo: body error +* +---- errorInfo(cleanup): cleanup error*} + cleanupTests } -- cgit v0.12 From 870b7a666e2961a6ee6274b02949f725aebef34c Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 3 Nov 2004 22:12:17 +0000 Subject: niggly test suite fixes --- tests/expr-old.test | 4 ++-- tests/util.test | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/expr-old.test b/tests/expr-old.test index 90f5cd0..b984ba9 100644 --- a/tests/expr-old.test +++ b/tests/expr-old.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr-old.test,v 1.16.2.2 2004/07/03 22:13:11 msofer Exp $ +# RCS: @(#) $Id: expr-old.test,v 1.16.2.3 2004/11/03 22:12:17 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -995,7 +995,7 @@ test expr-old-39.1 {Rounding with wide result} { } set x } {1 1} -unset x y +unset -nocomplain x y # Special test for Pentium arithmetic bug of 1994: diff --git a/tests/util.test b/tests/util.test index a3d181c..c16cd58 100644 --- a/tests/util.test +++ b/tests/util.test @@ -7,7 +7,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: util.test,v 1.10.4.2 2003/08/27 20:09:49 dgp Exp $ +# RCS: @(#) $Id: util.test,v 1.10.4.3 2004/11/03 22:12:17 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -314,8 +314,7 @@ test util-8.1 {TclNeedSpace - correct UTF8 handling} { set result } "\u5420 foo" -set ::tcltest::testConstraints(testdstring) \ - [expr {[info commands testdstring] != {}}] +tcltest::testConstraint testdstring [expr {[info commands testdstring] != {}}] test util-8.2 {TclNeedSpace - correct UTF8 handling} testdstring { # Bug 411825 -- cgit v0.12 From 428d469fccf81096d51d799729c437daba398c94 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 4 Nov 2004 06:06:37 +0000 Subject: * changes: Updates for Tcl 8.4.8 release. --- ChangeLog | 4 ++++ changes | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 27961a5..9a0928e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-11-02 Don Porter + * changes: Updates for Tcl 8.4.8 release. + +2004-11-02 Don Porter + * library/tcltest/tcltest.tcl: Corrected some misleading * tests/tcltest.test (tcltest-26.1,2): displays of ::errorInfo and ::errorCode information when the -setup, -body, and/or -cleanup scripts diff --git a/changes b/changes index 31c21d0..3b5f0b7 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.11 2004/07/26 19:15:03 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.79.2.12 2004/11/04 06:06:50 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6043,3 +6043,63 @@ Corrects Tcl_StatBuf definition issues. (hobbs) 2004-07-20 (bug fix)[736426] plug leaky allocator reinit (mistachkin, kenny) --- Released 8.4.7, July 26, 2004 --- See ChangeLog for details --- + +2004-07-28 (bug fix)[999084] no deadlock in re-entrant Tcl_Finalize (porter) + +2004-08-10 (bug fix) thread IDs on 64-bit systems (ratcliff,vasiljevic) + +2004-08-13 (bug fix) avoid malicious code acceptance by [mclocale] (porter) +=> msgcat 1.3.3 + +2004-08-16 (bug fix)[1008314] Tcl_SetVar TCL_LIST_ELEMENT (sofer,porter) + +2004-08-19 (bug fix)[1011860] [scan %ld] fix on LP64 (fellows,porter) + +2004-08-30 (bug fix) [string map $x $x] crash (fellows) + +2004-09-01 (bug fix)[1020445] WIN64 support (hobbs) + +2004-09-07 (bug fix)[1016167] [after] overwrites its imports (kenny) + +2004-09-08 (bug fix) fixed [clock format 0 -format %k] (kenny) + +2004-09-09 (bug fix)[560297] fixed broken [namespace forget] logic (porter) + +2004-09-09 (bug fix)[1017299] fixed [namespace import] cycle prevention (porter) + +2004-09-10 (performance) $x[set x {}] is now fast [K $x [set x {}]] (sofer) + +2004-09-10 (bug fix)[868489] better control over int <-> wideInt (fellows,kenny) + +2004-09-10 (bug fix)[1025359] POSIX errorCode from wide seeks (kupries,fellows) + +2004-09-18 (bug fix)[868467] fix [expr 5>>32] => 0, not 5 (hintermayer,fellows) + +2004-09-23 (bug fix)[1016726] fix `make clean` in static config (leitgeb,dejong) + +2004-09-29 (bug fix)[1036649] syntax error in [subst] => buffer overflow (sofer) + +2004-09-30 (bug fix)[1038021] save/restore error state: var traces (porter) + +2004-10-08 (bug fix)[954263] case insensitive [file exec] for Win (hobbs,darley) + +2004-10-14 (performance) [info commands/globals/procs/vars $pattern] faster + when $pattern is trivial (fellows) + +2004-10-28 (bug fix)[1030548] restore the --enable-symbols --enable-threads + build on Win (mistachkin,kenny,kupries) + +2004-10-29 (bug fix)[1055673] fix command line syntax error message (porter) +=> tcltest 2.2.7 + +2004-10-31 (bug fix)[1057461] fix [info globals ::varName] (fellows) + +2004-11-02 (bug fix)[761471] fix [expr {NaN == NaN}] (sofer) + +2004-11-02 (bug fix)[1017151] misleading errorInfo after tests (seeger,porter) + +Documentation improvements [759545,1058446,etc.] +Test suite expansion [1036649,1001997,etc.] + +--- Released 8.4.8, November XX, 2004 --- See ChangeLog for details --- + -- cgit v0.12 From 89675228f03f60dc605bc085eaa2ac337dcfef01 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 9 Nov 2004 10:25:22 +0000 Subject: Clarify return code documentation. [Bug 1062647] --- ChangeLog | 4 ++++ doc/catch.n | 27 ++++++++++++++++++++------- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9a0928e..5fbf519 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-11-09 Donal K. Fellows + + * doc/catch.n: Clarify documentation on return codes. [Bug 1062647] + 2004-11-02 Don Porter * changes: Updates for Tcl 8.4.8 release. diff --git a/doc/catch.n b/doc/catch.n index 5bae0c6..01770aa 100644 --- a/doc/catch.n +++ b/doc/catch.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: catch.n,v 1.5.18.1 2004/10/27 09:35:38 dkf Exp $ +'\" RCS: @(#) $Id: catch.n,v 1.5.18.2 2004/11/09 10:25:23 dkf Exp $ '\" .so man.macros .TH catch n "8.0" Tcl "Tcl Built-In Commands" @@ -20,15 +20,28 @@ catch \- Evaluate script and trap exceptional returns .SH DESCRIPTION .PP The \fBcatch\fR command may be used to prevent errors from aborting command -interpretation. \fBCatch\fR calls the Tcl interpreter recursively to +interpretation. The \fBcatch\fR command calls the Tcl interpreter recursively to execute \fIscript\fR, and always returns without raising an error, regardless of any errors that might occur while executing \fIscript\fR. .PP If \fIscript\fR raises an error, \fBcatch\fR will return a non-zero integer -value corresponding to one of the exceptional return codes (see tcl.h -for the definitions of code values). If the \fIvarName\fR argument is -given, then the variable it names is set to the error message from -interpreting \fIscript\fR. +value corresponding to the exceptional return code returned by evaluation +of \fIscript\fR. Tcl defines the normal return code from script +evaluation to be zero (0), or \fBTCL_OK\fR. Tcl also defines four exceptional +return codes: 1 (\fBTCL_ERROR\fR), 2 (\fBTCL_RETURN\fR), 3 (\fBTCL_BREAK\fR), +and 4 (\fBTCL_CONTINUE\fR). Errors during evaluation of a script are indicated +by a return code of \fBTCL_ERROR\fR. The other exceptional return codes are +returned by the \fBreturn\fR, \fBbreak\fR, and \fBcontinue\fR commands +and in other special situations as documented. Tcl packages can define +new commands that return other integer values as return codes as well, +and scripts that make use of the \fBreturn -code\fR command can also +have return codes other than the five defined by Tcl. +.PP +If the \fIvarName\fR argument is given, then the variable it names is +set to the result of the script evaluation. When the return code from +the script is 1 (\fBTCL_ERROR\fR), the value stored in \fIvarName\fR is an error +message. When the return code from the script is 0 (\fBTCL_OK\fR), the value +stored in \fIresultVarName\fR is the value returned from \fIscript\fR. .PP If \fIscript\fR does not raise an error, \fBcatch\fR will return 0 (\fBTCL_OK\fR) and set the variable to the value returned from \fIscript\fR. @@ -61,7 +74,7 @@ proc foo {} { .CE .SH "SEE ALSO" -error(n), break(n), continue(n) +break(n), continue(n), error(n), return(n), tclvars(n) .SH KEYWORDS catch, error -- cgit v0.12 From 70c7763d03734b6a1bca07c431abc928cb7bff8a Mon Sep 17 00:00:00 2001 From: das Date: Thu, 11 Nov 2004 01:15:29 +0000 Subject: * tests/fCmd.test: * unix/tclUnixFCmd.c (TraverseUnixTree): added option to rewind() the readdir() loop whenever the source hierarchy has been modified by traverseProc (e.g. by deleting files); this is required to ensure complete traversal of the source hierarchy on certain filesystems like HFS+. Added test for failing recursive delete on Mac OS X that was due to this. [Bug 1034337] --- tests/fCmd.test | 11 +++++++- unix/tclUnixFCmd.c | 82 ++++++++++++++++++++++++++++++++---------------------- 2 files changed, 59 insertions(+), 34 deletions(-) diff --git a/tests/fCmd.test b/tests/fCmd.test index 0b1de7e..6d3d059 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.26.2.4 2003/10/07 15:57:36 dgp Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.26.2.5 2004/11/11 01:15:29 das Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -1829,6 +1829,15 @@ test fCmd-20.1 {TraverseUnixTree : failure opening a subdirectory directory } \ set result } {1} +test fCmd-20.2 {TraverseUnixTree : recursive delete of large directory: Bug 1034337} \ + {unix notRoot} { + catch {file delete -force -- tfa} + file mkdir tfa + for {set i 1} {$i <= 200} {incr i} {createfile tfa/testfile_$i} + set result [catch {file delete -force tfa} msg] + while {[catch {file delete -force tfa}]} {} + list $result $msg +} {0 {}} # # Feature testing for TclCopyFilesCmd diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index a439511..9d709e6 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.2 2003/10/03 17:45:37 vincentdarley Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.3 2004/11/11 01:15:29 das Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -147,7 +147,7 @@ static int TraversalDelete _ANSI_ARGS_((Tcl_DString *srcPtr, static int TraverseUnixTree _ANSI_ARGS_(( TraversalProc *traversalProc, Tcl_DString *sourcePtr, Tcl_DString *destPtr, - Tcl_DString *errorPtr)); + Tcl_DString *errorPtr, int doRewind)); #ifdef PURIFY /* @@ -641,7 +641,7 @@ TclpObjCopyDirectory(srcPathPtr, destPathPtr, errorPtr) Tcl_DecrRefCount(transPtr); } - ret = TraverseUnixTree(TraversalCopy, &srcString, &dstString, &ds); + ret = TraverseUnixTree(TraversalCopy, &srcString, &dstString, &ds, 0); Tcl_DStringFree(&srcString); Tcl_DStringFree(&dstString); @@ -760,7 +760,7 @@ DoRemoveDirectory(pathPtr, recursive, errorPtr) */ if (result == TCL_OK) { - result = TraverseUnixTree(TraversalDelete, pathPtr, NULL, errorPtr); + result = TraverseUnixTree(TraversalDelete, pathPtr, NULL, errorPtr, 1); } if ((result != TCL_OK) && (recursive != 0)) { @@ -793,7 +793,7 @@ DoRemoveDirectory(pathPtr, recursive, errorPtr) */ static int -TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr) +TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) TraversalProc *traverseProc;/* Function to call for every file and * directory in source hierarchy. */ Tcl_DString *sourcePtr; /* Pathname of source directory to be @@ -803,11 +803,18 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr) Tcl_DString *errorPtr; /* If non-NULL, uninitialized or free * DString filled with UTF-8 name of file * causing error. */ + int doRewind; /* Flag indicating that to ensure complete + * traversal of source hierarchy, the readdir + * loop should be rewound whenever + * traverseProc has returned TCL_OK; this is + * required when traverseProc modifies the + * source hierarchy, e.g. by deleting files. */ { Tcl_StatBuf statBuf; CONST char *source, *errfile; int result, sourceLen; int targetLen; + int needRewind; Tcl_DirEntry *dirEntPtr; DIR *dirPtr; @@ -852,36 +859,45 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr) targetLen = Tcl_DStringLength(targetPtr); } - while ((dirEntPtr = TclOSreaddir(dirPtr)) != NULL) { /* INTL: Native. */ - if ((dirEntPtr->d_name[0] == '.') - && ((dirEntPtr->d_name[1] == '\0') - || (strcmp(dirEntPtr->d_name, "..") == 0))) { - continue; - } - - /* - * Append name after slash, and recurse on the file. - */ - - Tcl_DStringAppend(sourcePtr, dirEntPtr->d_name, -1); - if (targetPtr != NULL) { - Tcl_DStringAppend(targetPtr, dirEntPtr->d_name, -1); - } - result = TraverseUnixTree(traverseProc, sourcePtr, targetPtr, - errorPtr); - if (result != TCL_OK) { - break; + do { + needRewind = 0; + while ((dirEntPtr = TclOSreaddir(dirPtr)) != NULL) { /* INTL: Native. */ + if ((dirEntPtr->d_name[0] == '.') + && ((dirEntPtr->d_name[1] == '\0') + || (strcmp(dirEntPtr->d_name, "..") == 0))) { + continue; + } + + /* + * Append name after slash, and recurse on the file. + */ + + Tcl_DStringAppend(sourcePtr, dirEntPtr->d_name, -1); + if (targetPtr != NULL) { + Tcl_DStringAppend(targetPtr, dirEntPtr->d_name, -1); + } + result = TraverseUnixTree(traverseProc, sourcePtr, targetPtr, + errorPtr, doRewind); + if (result != TCL_OK) { + needRewind = 0; + break; + } else { + needRewind = doRewind; + } + + /* + * Remove name after slash. + */ + + Tcl_DStringSetLength(sourcePtr, sourceLen); + if (targetPtr != NULL) { + Tcl_DStringSetLength(targetPtr, targetLen); + } } - - /* - * Remove name after slash. - */ - - Tcl_DStringSetLength(sourcePtr, sourceLen); - if (targetPtr != NULL) { - Tcl_DStringSetLength(targetPtr, targetLen); + if (needRewind) { + rewinddir(dirPtr); } - } + } while (needRewind); closedir(dirPtr); /* -- cgit v0.12 From 2437a4e0eef54c58295a621eeb546d9bc4a2d9c3 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 11 Nov 2004 01:16:19 +0000 Subject: * tests/fileName.test: * tests/fileSystem.test: * tests/io.test: * tests/tcltest.test: fixed bugs causing failures when running tests with -tmpdir arg not set to working dir. --- tests/fileName.test | 4 ++-- tests/fileSystem.test | 1 + tests/io.test | 4 ++-- tests/tcltest.test | 6 +++--- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/tests/fileName.test b/tests/fileName.test index 19b08ec..d0497de 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.5 2004/05/04 22:12:49 hobbs Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.6 2004/11/11 01:16:19 das Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -331,7 +331,7 @@ test filename-4.19 {Tcl_SplitPath} { set norm } err] cd $oldDir - catch {file delete -force tildetmp} + catch {file delete -force [file join [temporaryDirectory] tildetmp]} list $res $err } {0 tildetmp/~tilde} diff --git a/tests/fileSystem.test b/tests/fileSystem.test index 7febfcd..7ce7746 100644 --- a/tests/fileSystem.test +++ b/tests/fileSystem.test @@ -27,6 +27,7 @@ namespace eval ::tcl::test::fileSystem { file delete -force [file join dir.file linkinside.file] } +cd [tcltest::temporaryDirectory] makeFile "test file" gorp.file makeDirectory dir.file makeFile "test file in directory" [file join dir.file inside.file] diff --git a/tests/io.test b/tests/io.test index a66bf89..9492b22 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.7 2004/10/28 00:01:08 dgp Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.8 2004/11/11 01:16:20 das Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -410,7 +410,7 @@ test io-6.6 {Tcl_GetsObj: loop test} { test io-6.7 {Tcl_GetsObj: error in input} {stdio openpipe} { # if (FilterInputBytes(chanPtr, &gs) != 0) - set f [open "|[list [interpreter] cat]" w+] + set f [open "|[list [interpreter] $path(cat)]" w+] puts -nonewline $f "hi\nwould" flush $f gets $f diff --git a/tests/tcltest.test b/tests/tcltest.test index ae5332d..c6ee2a1 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.6 2004/11/02 19:03:08 dgp Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.7 2004/11/11 01:16:36 das Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -1752,7 +1752,7 @@ test tcltest-26.1 {Bug/RFE 1017151} -setup { tcltest::cleanupTests } test.tcl } -body { - slave msg test.tcl + slave msg [file join [temporaryDirectory] test.tcl] set msg } -cleanup { removeFile test.tcl @@ -1772,7 +1772,7 @@ test tcltest-26.2 {Bug/RFE 1017151} -setup { tcltest::cleanupTests } test.tcl } -body { - slave msg test.tcl + slave msg [file join [temporaryDirectory] test.tcl] set msg } -cleanup { removeFile test.tcl -- cgit v0.12 From 855a4dd4649f658cd37ce56e3f87cce584fbde47 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 11 Nov 2004 01:17:07 +0000 Subject: * macosx/Makefile: corrected path to html help inside framework. Prevent parallel make from building several targets at the same time. --- macosx/Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/macosx/Makefile b/macosx/Makefile index eee15af..ee9e40c 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -3,7 +3,7 @@ # Makefile to build Tcl on Mac OS X packaged as a Framework # uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5.2.8 2004/02/26 09:10:40 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.9 2004/11/11 01:17:07 das Exp $ # ######################################################################################################## @@ -107,7 +107,7 @@ DYLIB_INSTALL_DIR := ${DYLIB_INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${ INCLUDEDIR := ${LIBDIR}/Headers PRIVATEINCLUDEDIR := ${LIBDIR}/PrivateHeaders SCRIPTDIR := ${LIBDIR}/Resources/Scripts -DOCDIR := ${LIBDIR}/Resources/English.lproj/Documentation/Reference +DOCDIR := ${LIBDIR}/Resources/Documentation/Reference INFOPLIST := ${LIBDIR}/Resources/Info.plist BUILD_STYLE = @@ -236,4 +236,6 @@ endif .PHONY: ${meta} ${targets} ${PROJECT} build-${PROJECT} install-${PROJECT} \ clean-${PROJECT} distclean-${PROJECT} +.NOTPARALLEL: + #------------------------------------------------------------------------------------------------------- -- cgit v0.12 From a0d4eac5974045d55b361a5e2ff674fffac3eb54 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 11 Nov 2004 01:18:07 +0000 Subject: * generic/tclListObj.c (Tcl_ListObjReplace): use memmove() instead of manual copy loop to shift list elements. Decreases time spent in Tcl_ListObjReplace() from 5.2% to 1.7% of overall runtime of tclbench on a ppc 7455 (i.e. 200% speed increase). [Patch 1064243] * generic/tclHash.c: hoisted some constant pointer dereferences out of loops to eliminate redundant loads that the gcc optimizer didn't deal with. Decreases time spend in Tcl_FindHashEntry() by 10% over a full run of the tcl testuite on a ppc 7455. [Patch 1064243] --- generic/tclHash.c | 13 ++++++++----- generic/tclListObj.c | 16 ++++------------ 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/generic/tclHash.c b/generic/tclHash.c index 45726d9..ae2eca8 100644 --- a/generic/tclHash.c +++ b/generic/tclHash.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclHash.c,v 1.12 2002/11/12 02:23:18 hobbs Exp $ + * RCS: @(#) $Id: tclHash.c,v 1.12.2.1 2004/11/11 01:18:07 das Exp $ */ #include "tclInt.h" @@ -316,6 +316,7 @@ Tcl_FindHashEntry(tablePtr, key) */ if (typePtr->compareKeysProc) { + Tcl_CompareHashKeysProc *compareKeysProc = typePtr->compareKeysProc; for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { #if TCL_HASH_KEY_STORE_HASH @@ -323,7 +324,7 @@ Tcl_FindHashEntry(tablePtr, key) continue; } #endif - if (typePtr->compareKeysProc ((VOID *) key, hPtr)) { + if (compareKeysProc ((VOID *) key, hPtr)) { return hPtr; } } @@ -414,6 +415,7 @@ Tcl_CreateHashEntry(tablePtr, key, newPtr) */ if (typePtr->compareKeysProc) { + Tcl_CompareHashKeysProc *compareKeysProc = typePtr->compareKeysProc; for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { #if TCL_HASH_KEY_STORE_HASH @@ -421,7 +423,7 @@ Tcl_CreateHashEntry(tablePtr, key, newPtr) continue; } #endif - if (typePtr->compareKeysProc ((VOID *) key, hPtr)) { + if (compareKeysProc ((VOID *) key, hPtr)) { *newPtr = 0; return hPtr; } @@ -703,13 +705,14 @@ Tcl_NextHashEntry(searchPtr) * Tcl_FirstHashEntry. */ { Tcl_HashEntry *hPtr; + Tcl_HashTable *tablePtr = searchPtr->tablePtr; while (searchPtr->nextEntryPtr == NULL) { - if (searchPtr->nextIndex >= searchPtr->tablePtr->numBuckets) { + if (searchPtr->nextIndex >= tablePtr->numBuckets) { return NULL; } searchPtr->nextEntryPtr = - searchPtr->tablePtr->buckets[searchPtr->nextIndex]; + tablePtr->buckets[searchPtr->nextIndex]; searchPtr->nextIndex++; } hPtr = searchPtr->nextEntryPtr; diff --git a/generic/tclListObj.c b/generic/tclListObj.c index cdd8cb9..446a67e 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclListObj.c,v 1.13 2002/01/07 23:09:13 dgp Exp $ + * RCS: @(#) $Id: tclListObj.c,v 1.13.4.1 2004/11/11 01:18:07 das Exp $ */ #include "tclInt.h" @@ -680,17 +680,9 @@ Tcl_ListObjReplace(interp, listPtr, first, count, objc, objv) if ((numAfterLast > 0) && (shift != 0)) { Tcl_Obj **src, **dst; - if (shift < 0) { - for (src = elemPtrs + start, dst = src + shift; - numAfterLast > 0; numAfterLast--, src++, dst++) { - *dst = *src; - } - } else { - for (src = elemPtrs + numElems - 1, dst = src + shift; - numAfterLast > 0; numAfterLast--, src--, dst--) { - *dst = *src; - } - } + src = elemPtrs + start; dst = src + shift; + memmove((VOID*) dst, (VOID*) src, + (size_t) (numAfterLast * sizeof(Tcl_Obj*))); } /* -- cgit v0.12 From ce7e8c329343a49a8adaf322ba6d05030bc10cfb Mon Sep 17 00:00:00 2001 From: das Date: Thu, 11 Nov 2004 01:20:32 +0000 Subject: * tests/fCmd.test: * unix/tclUnixFCmd.c (TraverseUnixTree): added option to rewind() the readdir() loop whenever the source hierarchy has been modified by traverseProc (e.g. by deleting files); this is required to ensure complete traversal of the source hierarchy on certain filesystems like HFS+. Added test for failing recursive delete on Mac OS X that was due to this. [Bug 1034337] * generic/tclListObj.c (Tcl_ListObjReplace): use memmove() instead of manual copy loop to shift list elements. Decreases time spent in Tcl_ListObjReplace() from 5.2% to 1.7% of overall runtime of tclbench on a ppc 7455 (i.e. 200% speed increase). [Patch 1064243] * generic/tclHash.c: hoisted some constant pointer dereferences out of loops to eliminate redundant loads that the gcc optimizer didn't deal with. Decreases time spend in Tcl_FindHashEntry() by 10% over a full run of the tcl testuite on a ppc 7455. [Patch 1064243] * tests/fileName.test: * tests/fileSystem.test: * tests/io.test: * tests/tcltest.test: fixed bugs causing failures when running tests with -tmpdir arg not set to working dir. * macosx/Makefile: corrected path to html help inside framework. Prevent parallel make from building several targets at the same time. --- ChangeLog | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5fbf519..1ac03ac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,33 @@ +2004-11-11 Daniel Steffen + + * tests/fCmd.test: + * unix/tclUnixFCmd.c (TraverseUnixTree): added option to rewind() + the readdir() loop whenever the source hierarchy has been modified + by traverseProc (e.g. by deleting files); this is required to ensure + complete traversal of the source hierarchy on certain filesystems + like HFS+. Added test for failing recursive delete on Mac OS X that + was due to this. [Bug 1034337] + + * generic/tclListObj.c (Tcl_ListObjReplace): use memmove() instead + of manual copy loop to shift list elements. Decreases time spent in + Tcl_ListObjReplace() from 5.2% to 1.7% of overall runtime of + tclbench on a ppc 7455 (i.e. 200% speed increase). [Patch 1064243] + + * generic/tclHash.c: hoisted some constant pointer dereferences out + of loops to eliminate redundant loads that the gcc optimizer didn't + deal with. Decreases time spend in Tcl_FindHashEntry() by 10% over a + full run of the tcl testuite on a ppc 7455. [Patch 1064243] + + * tests/fileName.test: + * tests/fileSystem.test: + * tests/io.test: + * tests/tcltest.test: fixed bugs causing failures when running tests + with -tmpdir arg not set to working dir. + + * macosx/Makefile: corrected path to html help inside framework. + Prevent parallel make from building several targets at the same + time. + 2004-11-09 Donal K. Fellows * doc/catch.n: Clarify documentation on return codes. [Bug 1062647] -- cgit v0.12 From ce9986a680127539554c2031d7f85312b3619315 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 12 Nov 2004 09:02:29 +0000 Subject: * doc/clock.n: * doc/registry.n: * doc/upvar.n: fixed *roff errors uncovered by running 'make html'. * tools/tcltk-man2html.tcl: added faked support for bullet point lists, i.e. *nroff ".IP \(bu" syntax. Synced other changes from HEAD. --- ChangeLog | 10 ++++++++++ doc/clock.n | 8 ++++---- doc/registry.n | 4 ++-- doc/upvar.n | 18 +++++++++--------- tools/tcltk-man2html.tcl | 31 +++++++++++++++++++++---------- 5 files changed, 46 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1ac03ac..3ed3cba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-11-12 Daniel Steffen + + * doc/clock.n: + * doc/registry.n: + * doc/upvar.n: fixed *roff errors uncovered by running 'make html'. + + * tools/tcltk-man2html.tcl: added faked support for bullet point + lists, i.e. *nroff ".IP \(bu" syntax. + Synced other changes from HEAD. + 2004-11-11 Daniel Steffen * tests/fCmd.test: diff --git a/doc/clock.n b/doc/clock.n index 436e7da..aab3dae 100644 --- a/doc/clock.n +++ b/doc/clock.n @@ -10,7 +10,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: clock.n,v 1.11.2.4 2004/10/27 14:23:41 dkf Exp $ +'\" RCS: @(#) $Id: clock.n,v 1.11.2.5 2004/11/12 09:02:30 das Exp $ '\" .so man.macros .TH clock n 8.4 Tcl "Tcl Built-In Commands" @@ -29,8 +29,8 @@ or manipulate strings or values that represent some notion of time. The \fIoption\fR argument determines what action is carried out by the command. The legal \fIoptions\fR (which may be abbreviated) are: -.TP .VS 8.3 +.TP \fBclock clicks\fR ?\fB\-milliseconds\fR? Return a high-resolution time value as a system-dependent integer value. The unit of the value is system-dependent but should be the @@ -268,10 +268,10 @@ different results will be given for \fBclock scan "1 day"\fR and \fBclock scan "24 hours"\fR: .CS .ta 6c -\fB% \fBclock scan\fR "1 day" -base [\fBclock scan\fR 1999-10-31] +% \fBclock scan\fR "1 day" -base [\fBclock scan\fR 1999-10-31] 941443200 % \fBclock scan\fR "24 hours" -base [\fBclock scan\fR 1999-10-31] -941439600\fR +941439600 .CE .RE .TP diff --git a/doc/registry.n b/doc/registry.n index 549a2e1..de31bfa 100644 --- a/doc/registry.n +++ b/doc/registry.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: registry.n,v 1.8.2.1 2004/10/27 14:23:58 dkf Exp $ +'\" RCS: @(#) $Id: registry.n,v 1.8.2.2 2004/11/12 09:02:30 das Exp $ '\" .so man.macros .TH registry n 1.1 registry "Tcl Bundled Packages" @@ -50,8 +50,8 @@ registry key names separated by backslash (\fB\e\fR) characters. \fIOption\fR indicates what to do with the registry key name. Any unique abbreviation for \fIoption\fR is acceptable. The valid options are: -.TP .VS 8.4 +.TP \fBregistry broadcast \fIkeyName\fR ?\fI-timeout milliseconds\fR? . Sends a broadcast message to the system and running programs to notify them diff --git a/doc/upvar.n b/doc/upvar.n index b73d6a4..795629f 100644 --- a/doc/upvar.n +++ b/doc/upvar.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: upvar.n,v 1.5.18.1 2004/10/27 14:43:15 dkf Exp $ +'\" RCS: @(#) $Id: upvar.n,v 1.5.18.2 2004/11/12 09:02:30 das Exp $ '\" .so man.macros .TH upvar n "" Tcl "Tcl Built-In Commands" @@ -46,12 +46,12 @@ procedure calling and also makes it easier to build new control constructs as Tcl procedures. For example, consider the following procedure: .CS -\fBproc add2 name { +proc add2 name { \fBupvar\fR $name x set x [expr $x+2] -}\fR +} .CE -\fBAdd2\fR is invoked with an argument giving the name of a variable, +\fBadd2\fR is invoked with an argument giving the name of a variable, and it adds two to the value of that variable. Although \fBadd2\fR could have been implemented using \fBuplevel\fR instead of \fBupvar\fR, \fBupvar\fR makes it simpler for \fBadd2\fR @@ -84,17 +84,17 @@ the trace procedure will be passed the name of \fImyVar\fR, rather than the name of \fIotherVar\fR. Thus, the output of the following code will be \fBlocalVar\fR rather than \fBoriginalVar\fR: .CS -\fBproc traceproc { name index op } { +proc \fBtraceproc\fR { name index op } { puts $name } -proc setByUpvar { name value } { +proc \fBsetByUpvar\fR { name value } { \fBupvar\fR $name localVar set localVar $value } set originalVar 1 -trace variable originalVar w traceproc -setByUpvar originalVar 2 -}\fR +trace variable originalVar w \fBtraceproc\fR +\fBsetByUpvar\fR originalVar 2 +} .CE .PP If \fIotherVar\fR refers to an element of an array, then variable diff --git a/tools/tcltk-man2html.tcl b/tools/tcltk-man2html.tcl index 30e11d3..b9c8280 100755 --- a/tools/tcltk-man2html.tcl +++ b/tools/tcltk-man2html.tcl @@ -230,6 +230,7 @@ proc process-text {text} { {\(+-} {±} \ {\fP} {\fR} \ {\.} . \ + {\(bu} {•} \ ] $text] regsub -all {\\o'o\^'} $text {\ô} text; # o-circumflex in re_syntax.n regsub -all {\\-\\\|\\-} $text -- text; # two hyphens @@ -488,7 +489,7 @@ proc output-RS-list {} { .RE { break } - .SH { + .SH - .SS { manerror "unbalanced .RS at section end" backup-text 1 break @@ -534,7 +535,10 @@ proc output-IP-list {context code rest} { man-puts
} else { # labelled list, make contents - if {[string compare $context ".SH"]} { + if { + [string compare $context ".SH"] && + [string compare $context ".SS"] + } then { man-puts

} man-puts

@@ -555,6 +559,8 @@ proc output-IP-list {context code rest} { if {[string equal $manual(section) "ARGUMENTS"] || \ [regexp {^\[\d+\]$} $rest]} { man-puts "$para
$rest
" + } elseif {[string equal {•} $rest]} { + man-puts "$para
$rest " } else { man-puts "$para
[long-toc $rest]
" } @@ -954,14 +960,18 @@ proc output-directive {line} { .BE { # man-puts
} - .SH { + .SH - .SS { # drain any open lists # announce the subject set manual(section) $rest # start our own stack of stuff set manual($manual(name)-$manual(section)) {} lappend manual(has-$manual(section)) $manual(name) - man-puts "

[long-toc $manual(section)]

" + if {[string compare .SS $code]} { + man-puts "

[long-toc $manual(section)]

" + } else { + man-puts "

[long-toc $manual(section)]

" + } # some sections can simply free wheel their way through the text # some sections can be processed in their own loops switch -exact $manual(section) { @@ -994,6 +1004,7 @@ proc output-directive {line} { continue } if {[next-op-is .SH rest] + || [next-op-is .SS rest] || [next-op-is .BE rest] || [next-op-is .SO rest]} { backup-text 1 @@ -1022,7 +1033,7 @@ proc output-directive {line} { } {SEE ALSO} { while {[more-text]} { - if {[next-op-is .SH rest]} { + if {[next-op-is .SH rest] || [next-op-is .SS rest]} { backup-text 1 return } @@ -1049,7 +1060,7 @@ proc output-directive {line} { } KEYWORDS { while {[more-text]} { - if {[next-op-is .SH rest]} { + if {[next-op-is .SH rest] || [next-op-is .SS rest]} { backup-text 1 return } @@ -1072,7 +1083,7 @@ proc output-directive {line} { } } if {[next-op-is .IP rest]} { - output-IP-list .SH .IP $rest + output-IP-list $code .IP $rest return } if {[next-op-is .PP rest]} { @@ -1377,11 +1388,11 @@ proc make-man-pages {html args} { set manual(partial-text) {} } switch -exact $code { - .SH { + .SH - .SS { if {[llength $rest] == 0} { gets $manual(infp) rest } - lappend manual(text) ".SH [unquote $rest]" + lappend manual(text) "$code [unquote $rest]" } .TH { lappend manual(text) "$code [unquote $rest]" @@ -1601,7 +1612,7 @@ proc make-man-pages {html args} { } puts $afp "


" foreach k $keys { - if {[regexp -nocase -- "^keyword-$a" $k]} { + if {[string match -nocase "keyword-${a}*" $k]} { set k [string range $k 8 end] puts $afp "
$k
" set refs {} -- cgit v0.12 From 5d132715be3ea1fc57c5b64e85e2de5c3d99fbc0 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 12 Nov 2004 23:41:59 +0000 Subject: * generic/tclEncoding.c (TableFromUtfProc): correct crash condition when TCL_UTF_MAX == 6. [Bug 1004065] --- ChangeLog | 5 +++++ generic/tclEncoding.c | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3ed3cba..232dcf2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-12 Jeff Hobbs + + * generic/tclEncoding.c (TableFromUtfProc): correct crash + condition when TCL_UTF_MAX == 6. [Bug 1004065] + 2004-11-12 Daniel Steffen * doc/clock.n: diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index d66ce37..d35cd4c 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.5 2004/05/27 14:33:18 rmax Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.6 2004/11/12 23:42:00 hobbs Exp $ */ #include "tclInt.h" @@ -2350,7 +2350,18 @@ TableFromUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, break; } len = TclUtfToUniChar(src, &ch); - word = fromUnicode[(ch >> 8)][ch & 0xff]; + +#if TCL_UTF_MAX > 3 + /* + * This prevents a crash condition. More evaluation is required + * for full support of int Tcl_UniChar. [Bug 1004065] + */ + if (ch & 0xffff0000) { + word = 0; + } else +#endif + word = fromUnicode[(ch >> 8)][ch & 0xff]; + if ((word == 0) && (ch != 0)) { if (flags & TCL_ENCODING_STOPONERROR) { result = TCL_CONVERT_UNKNOWN; -- cgit v0.12 From 3bef8b50f37c4ecdbd789f4a6e7a9fcd2a078ef3 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 13 Nov 2004 00:41:57 +0000 Subject: * library/init.tcl: Made [unknown] robust in the case that either of the variables ::errorInfo or ::errorCode gets unset. [Bug 1063707] --- ChangeLog | 6 ++++++ library/init.tcl | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 232dcf2..2903d8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-11-12 Don Porter + + * library/init.tcl: Made [unknown] robust in the case that + either of the variables ::errorInfo or ::errorCode gets unset. + [Bug 1063707] + 2004-11-12 Jeff Hobbs * generic/tclEncoding.c (TableFromUtfProc): correct crash diff --git a/library/init.tcl b/library/init.tcl index b669d6a..0e7cd94 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.55.2.3 2004/05/03 14:28:59 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.55.2.4 2004/11/13 00:41:58 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -189,6 +189,14 @@ proc unknown args { # may get modified if caught errors occur below. The variables will # be restored just before re-executing the missing command. + # Safety check in case something unsets the variables + # ::errorInfo or ::errorCode. [Bug 1063707] + if {![info exists errorCode]} { + set errorCode "" + } + if {![info exists errorInfo]} { + set errorInfo "" + } set savedErrorCode $errorCode set savedErrorInfo $errorInfo set name [lindex $args 0] -- cgit v0.12 From 2137f75a0e2bd2dba76b4b82a50d26eea8b2b1d1 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 15 Nov 2004 21:14:28 +0000 Subject: * generic/tclCmdMZ.c (Tcl_TraceObjCmd): Fixed Bug 1065378 which failed * tests/trace.test (trace-33.1): to permit a variable trace created with [trace variable] to be destroyed with [trace remove]. Thanks to Keith Vetter for the report. --- ChangeLog | 7 +++ generic/tclCmdMZ.c | 123 ++++++++++++++++------------------------------------- tests/trace.test | 9 +++- 3 files changed, 51 insertions(+), 88 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2903d8e..b4e173c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-11-15 Don Porter + + * generic/tclCmdMZ.c (Tcl_TraceObjCmd): Fixed Bug 1065378 which failed + * tests/trace.test (trace-33.1): to permit a variable trace + created with [trace variable] to be destroyed with [trace remove]. + Thanks to Keith Vetter for the report. + 2004-11-12 Don Porter * library/init.tcl: Made [unknown] robust in the case that diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 1bf2183..b4313cb 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.12 2004/08/30 18:15:24 dkf Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.13 2004/11/15 21:14:32 dgp Exp $ */ #include "tclInt.h" @@ -2976,9 +2976,8 @@ Tcl_TraceObjCmd(dummy, interp, objc, objv) int objc; /* Number of arguments. */ Tcl_Obj *CONST objv[]; /* Argument objects. */ { - int optionIndex, commandLength; - char *name, *flagOps, *command, *p; - size_t length; + int optionIndex; + char *name, *flagOps, *p; /* Main sub commands to 'trace' */ static CONST char *traceOptions[] = { "add", "info", "remove", @@ -3025,105 +3024,52 @@ Tcl_TraceObjCmd(dummy, interp, objc, objv) return (traceSubCmds[typeIndex])(interp, optionIndex, objc, objv); } #ifndef TCL_REMOVE_OBSOLETE_TRACES - case TRACE_OLD_VARIABLE: { - int flags; - TraceVarInfo *tvarPtr; - if (objc != 5) { - Tcl_WrongNumArgs(interp, 2, objv, "name ops command"); - return TCL_ERROR; - } - - flags = 0; - flagOps = Tcl_GetString(objv[3]); - for (p = flagOps; *p != 0; p++) { - if (*p == 'r') { - flags |= TCL_TRACE_READS; - } else if (*p == 'w') { - flags |= TCL_TRACE_WRITES; - } else if (*p == 'u') { - flags |= TCL_TRACE_UNSETS; - } else if (*p == 'a') { - flags |= TCL_TRACE_ARRAY; - } else { - goto badVarOps; - } - } - if (flags == 0) { - goto badVarOps; - } - flags |= TCL_TRACE_OLD_STYLE; - - command = Tcl_GetStringFromObj(objv[4], &commandLength); - length = (size_t) commandLength; - tvarPtr = (TraceVarInfo *) ckalloc((unsigned) - (sizeof(TraceVarInfo) - sizeof(tvarPtr->command) - + length + 1)); - tvarPtr->flags = flags; - tvarPtr->length = length; - flags |= TCL_TRACE_UNSETS | TCL_TRACE_RESULT_OBJECT; - strcpy(tvarPtr->command, command); - name = Tcl_GetString(objv[2]); - if (Tcl_TraceVar(interp, name, flags, TraceVarProc, - (ClientData) tvarPtr) != TCL_OK) { - ckfree((char *) tvarPtr); - return TCL_ERROR; - } - break; - } + case TRACE_OLD_VARIABLE: case TRACE_OLD_VDELETE: { - int flags; - TraceVarInfo *tvarPtr; - ClientData clientData; + Tcl_Obj *copyObjv[6]; + Tcl_Obj *opsList; + int code, numFlags; if (objc != 5) { Tcl_WrongNumArgs(interp, 2, objv, "name ops command"); return TCL_ERROR; } - flags = 0; - flagOps = Tcl_GetString(objv[3]); + opsList = Tcl_NewObj(); + Tcl_IncrRefCount(opsList); + flagOps = Tcl_GetStringFromObj(objv[3], &numFlags); + if (numFlags == 0) { + Tcl_DecrRefCount(opsList); + goto badVarOps; + } for (p = flagOps; *p != 0; p++) { if (*p == 'r') { - flags |= TCL_TRACE_READS; + Tcl_ListObjAppendElement(NULL, opsList, + Tcl_NewStringObj("read", -1)); } else if (*p == 'w') { - flags |= TCL_TRACE_WRITES; + Tcl_ListObjAppendElement(NULL, opsList, + Tcl_NewStringObj("write", -1)); } else if (*p == 'u') { - flags |= TCL_TRACE_UNSETS; + Tcl_ListObjAppendElement(NULL, opsList, + Tcl_NewStringObj("unset", -1)); } else if (*p == 'a') { - flags |= TCL_TRACE_ARRAY; + Tcl_ListObjAppendElement(NULL, opsList, + Tcl_NewStringObj("array", -1)); } else { + Tcl_DecrRefCount(opsList); goto badVarOps; } } - if (flags == 0) { - goto badVarOps; - } - flags |= TCL_TRACE_OLD_STYLE; - - /* - * Search through all of our traces on this variable to - * see if there's one with the given command. If so, then - * delete the first one that matches. - */ - - command = Tcl_GetStringFromObj(objv[4], &commandLength); - length = (size_t) commandLength; - clientData = 0; - name = Tcl_GetString(objv[2]); - while ((clientData = Tcl_VarTraceInfo(interp, name, 0, - TraceVarProc, clientData)) != 0) { - tvarPtr = (TraceVarInfo *) clientData; - if ((tvarPtr->length == length) && (tvarPtr->flags == flags) - && (strncmp(command, tvarPtr->command, - (size_t) length) == 0)) { - Tcl_UntraceVar2(interp, name, NULL, - flags | TCL_TRACE_UNSETS | TCL_TRACE_RESULT_OBJECT, - TraceVarProc, clientData); - Tcl_EventuallyFree((ClientData) tvarPtr, TCL_DYNAMIC); - break; - } + copyObjv[0] = NULL; + memcpy(copyObjv+1, objv, objc*sizeof(Tcl_Obj *)); + copyObjv[4] = opsList; + if (optionIndex == TRACE_OLD_VARIABLE) { + code = (traceSubCmds[2])(interp,TRACE_ADD,objc+1,copyObjv); + } else { + code = (traceSubCmds[2])(interp,TRACE_REMOVE,objc+1,copyObjv); } - break; + Tcl_DecrRefCount(opsList); + return code; } case TRACE_OLD_VINFO: { ClientData clientData; @@ -3721,6 +3667,9 @@ TclTraceVariableObjCmd(interp, optionIndex, objc, objv) (sizeof(TraceVarInfo) - sizeof(tvarPtr->command) + length + 1)); tvarPtr->flags = flags; + if (objv[0] == NULL) { + tvarPtr->flags |= TCL_TRACE_OLD_STYLE; + } tvarPtr->length = length; flags |= TCL_TRACE_UNSETS | TCL_TRACE_RESULT_OBJECT; strcpy(tvarPtr->command, command); @@ -3744,7 +3693,7 @@ TclTraceVariableObjCmd(interp, optionIndex, objc, objv) TraceVarProc, clientData)) != 0) { tvarPtr = (TraceVarInfo *) clientData; if ((tvarPtr->length == length) - && (tvarPtr->flags == flags) + && ((tvarPtr->flags & ~TCL_TRACE_OLD_STYLE)==flags) && (strncmp(command, tvarPtr->command, (size_t) length) == 0)) { Tcl_UntraceVar2(interp, name, NULL, diff --git a/tests/trace.test b/tests/trace.test index 6475aed..322f761 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.3 2003/09/29 22:03:44 dgp Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.4 2004/11/15 21:14:34 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -2132,6 +2132,13 @@ test trace-32.1 { set result } [list [list delete foo]] +test trace-33.1 {variable match with remove variable} { + unset -nocomplain x + trace variable x w foo + trace remove variable x write foo + llength [trace info variable x] +} 0 + # Delete procedures when done, so we don't clash with other tests # (e.g. foobar will clash with 'unknown' tests). catch {rename foobar {}} -- cgit v0.12 From ef4ea32ff458299a15f8182f61c7ae90ab0ca178 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 15 Nov 2004 21:52:26 +0000 Subject: more changes for Tcl 8.4.8 --- changes | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/changes b/changes index 3b5f0b7..97cfcef 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.12 2004/11/04 06:06:50 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.13 2004/11/15 21:52:26 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6098,7 +6098,13 @@ Corrects Tcl_StatBuf definition issues. (hobbs) 2004-11-02 (bug fix)[1017151] misleading errorInfo after tests (seeger,porter) -Documentation improvements [759545,1058446,etc.] +2004-11-11 (bug fix)[1034337] recursive file delete, MacOSX (steffen) + +2004-11-12 (bug fix)[1004065] stop crash when TCL_UTF_MAX==6 (hobbs,porter) + +2004-11-15 (bug fix)[10653678] [trace variable],[trace remove] interop (porter) + +Documentation improvements [759545,1058446,1062647,etc.] Test suite expansion [1036649,1001997,etc.] --- Released 8.4.8, November XX, 2004 --- See ChangeLog for details --- -- cgit v0.12 From e9478201fbdb3219530e01eb919812bc881e70ce Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 16 Nov 2004 10:06:58 +0000 Subject: Backport of [Patch 1065732] --- ChangeLog | 5 +++++ doc/tclvars.n | 31 +++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b4e173c..fec6636 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-16 Donal K. Fellows + + * doc/tclvars.n: Mention global variables set by tclsh and wish so + they are easier to find. [Patch 1065732] + 2004-11-15 Don Porter * generic/tclCmdMZ.c (Tcl_TraceObjCmd): Fixed Bug 1065378 which failed diff --git a/doc/tclvars.n b/doc/tclvars.n index f3c58f4..532fb5c 100644 --- a/doc/tclvars.n +++ b/doc/tclvars.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tclvars.n,v 1.13.2.1 2004/10/27 14:43:14 dkf Exp $ +'\" RCS: @(#) $Id: tclvars.n,v 1.13.2.2 2004/11/16 10:07:00 dkf Exp $ '\" .so man.macros .TH tclvars n 8.0 Tcl "Tcl Built-In Commands" @@ -404,9 +404,36 @@ incompatibilities and changes to \fIy\fR represent small enhancements and bug fixes that retain backward compatibility. The value of this variable is returned by the \fBinfo tclversion\fR command. +.SH "OTHER GLOBAL VARIABLES" +The following variables are only guaranteed to exist in \fBtclsh\fR +and \fBwish\fR executables; the Tcl library does not define them +itself but many Tcl environments do. +.TP 6 +\fBargc\fR +The number of arguments to \fBtclsh\fR or \fBwish\fR. +.TP 6 +\fBargv\fR +Tcl list of arguments to \fBtclsh\fR or \fBwish\fR. +.TP 6 +\fBargv0\fR +The script that \fBtclsh\fR or \fBwish\fR started executing (if it was +specified) or otherwise the name by which \fBtclsh\fR or \fBwish\fR +was invoked. +.TP 6 +\fBtcl_interactive\fR +Contains 1 if \fBtclsh\fR or \fBwish\fR is running interactively (no +script was specified and standard input is a terminal-like device), 0 +otherwise. +.PP +The \fBwish\fR executably additionally specifies the following global +variable: +.TP 6 +\fBgeometry\fR +If set, contains the user-supplied geometry specification to use for +the main Tk window. .SH "SEE ALSO" -eval(n) +eval(n), tclsh(1), wish(1) .SH KEYWORDS arithmetic, bytecode, compiler, error, environment, POSIX, precision, subprocess, variables -- cgit v0.12 From 29fc7eb2e3719000dacf1cf89f2f762f804a6010 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 16 Nov 2004 16:55:49 +0000 Subject: * library/auto.tcl: Updated [tcl_findLibrary] search path to include the $::auto_path. [RFE 695441]. --- ChangeLog | 5 ++++ changes | 6 ++-- library/auto.tcl | 83 ++++++++++++++++++++++++++++++++++++++------------------ 3 files changed, 66 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index fec6636..a942e43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-16 Don Porter + + * library/auto.tcl: Updated [tcl_findLibrary] search path + to include the $::auto_path. [RFE 695441]. + 2004-11-16 Donal K. Fellows * doc/tclvars.n: Mention global variables set by tclsh and wish so diff --git a/changes b/changes index 97cfcef..1d3fd33 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.13 2004/11/15 21:52:26 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.14 2004/11/16 16:56:00 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6104,7 +6104,9 @@ Corrects Tcl_StatBuf definition issues. (hobbs) 2004-11-15 (bug fix)[10653678] [trace variable],[trace remove] interop (porter) -Documentation improvements [759545,1058446,1062647,etc.] +2004-11-16 (bug fix)[695441] [tcl_findLibrary] search $::auto_path too (porter) + +Documentation improvements [759545,1058446,1062647,1065732,etc.] Test suite expansion [1036649,1001997,etc.] --- Released 8.4.8, November XX, 2004 --- See ChangeLog for details --- diff --git a/library/auto.tcl b/library/auto.tcl index 4c736fe..d3a3fab 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12 2002/10/28 16:34:25 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.1 2004/11/16 16:56:01 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -60,54 +60,85 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { set errors {} # The C application may have hardwired a path, which we honor - + set variableSet [info exists the_library] - if {$variableSet && [string compare $the_library {}]} { + if {$variableSet && $the_library ne ""} { lappend dirs $the_library } else { # Do the canonical search - # 1. From an environment variable, if it exists + # 1. From an environment variable, if it exists. + # Placing this first gives the end-user ultimate control + # to work-around any bugs, or to customize. if {[info exists env($enVarName)]} { lappend dirs $env($enVarName) } - # 2. Relative to the Tcl library - - lappend dirs [file join [file dirname [info library]] \ - $basename$version] + # 2. In the package script directory registered within + # the configuration of the package itself. + # + # Only do this for Tcl 8.5+, when Tcl_RegsiterConfig() is available. + #if {[catch { + # ::${basename}::pkgconfig get scriptdir,runtime + #} value] == 0} { + # lappend dirs $value + #} + + # 3. Relative to auto_path directories. This checks relative to the + # Tcl library as well as allowing loading of libraries added to the + # auto_path that is not relative to the core library or binary paths. + foreach d $::auto_path { + lappend dirs [file join $d $basename$version] + if {$::tcl_platform(platform) eq "unix" + && $::tcl_platform(os) eq "Darwin"} { + # 4. On MacOSX, check the Resources/Scripts subdir too + lappend dirs [file join $d $basename$version Resources Scripts] + } + } # 3. Various locations relative to the executable # ../lib/foo1.0 (From bin directory in install hierarchy) # ../../lib/foo1.0 (From bin/arch directory in install hierarchy) # ../library (From unix directory in build hierarchy) - # ../../library (From unix/arch directory in build hierarchy) - # ../../foo1.0.1/library - # (From unix directory in parallel build hierarchy) - # ../../../foo1.0.1/library - # (From unix/arch directory in parallel build hierarchy) - set parentDir [file dirname [file dirname [info nameofexecutable]]] set grandParentDir [file dirname $parentDir] lappend dirs [file join $parentDir lib $basename$version] lappend dirs [file join $grandParentDir lib $basename$version] lappend dirs [file join $parentDir library] - lappend dirs [file join $grandParentDir library] - lappend dirs [file join $grandParentDir $basename$patch library] - lappend dirs [file join [file dirname $grandParentDir] \ - $basename$patch library] - - # 4. On MacOSX, check the directories in the tcl_pkgPath - if {[string equal $::tcl_platform(platform) "unix"] && \ - [string equal $::tcl_platform(os) "Darwin"]} { - foreach d $::tcl_pkgPath { - lappend dirs [file join $d $basename$version] - lappend dirs [file join $d $basename$version Resources Scripts] - } + + # Remaining locations are out of date (when relevant, they ought + # to be covered by the $::auto_path seach above). + # + # ../../library (From unix/arch directory in build hierarchy) + # ../../foo1.0.1/library + # (From unix directory in parallel build hierarchy) + # ../../../foo1.0.1/library + # (From unix/arch directory in parallel build hierarchy) + # + # For the sake of extra compatibility safety, we keep adding these + # paths during the 8.4.* release series. + if {1} { + lappend dirs [file join $grandParentDir library] + lappend dirs [file join $grandParentDir $basename$patch library] + lappend dirs [file join [file dirname $grandParentDir] \ + $basename$patch library] + } + } + # uniquify $dirs in order + array set seen {} + foreach i $dirs { + if {[interp issafe]} { + set norm $i + } else { + set norm [file normalize $i] } + if {[info exists seen($norm)]} { continue } + set seen($norm) "" + lappend uniqdirs $norm } + set dirs $uniqdirs foreach i $dirs { set the_library $i set file [file join $i $initScript] -- cgit v0.12 From c2f5a2c1c0eca7207fea7c2945ba25d7e94e927e Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 16 Nov 2004 23:39:48 +0000 Subject: * win/makefile.vc: Fixed bug in installation of http 2.5. * win/makefile.bc: Was installed into directory http2.4. * win/Makefile.in: This has been corrected. * unix/Makefile.in: * tools/tcl.wse.in: * tools/tclmin.wse: --- ChangeLog | 9 +++++++++ tools/tcl.wse.in | 4 ++-- tools/tclmin.wse | 4 ++-- unix/Makefile.in | 8 ++++---- win/Makefile.in | 8 ++++---- win/makefile.bc | 8 ++++---- win/makefile.vc | 6 +++--- 7 files changed, 28 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index a942e43..ea518ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-11-16 Andreas Kupries + + * win/makefile.vc: Fixed bug in installation of http 2.5. + * win/makefile.bc: Was installed into directory http2.4. + * win/Makefile.in: This has been corrected. + * unix/Makefile.in: + * tools/tcl.wse.in: + * tools/tclmin.wse: + 2004-11-16 Don Porter * library/auto.tcl: Updated [tcl_findLibrary] search path diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index be73406..8072252 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -1443,12 +1443,12 @@ item: Install File end item: Install File Source=${__TCLBASEDIR__}\library\http\pkgIndex.tcl - Destination=%MAINDIR%\lib\tcl%VER%\http2.4\pkgIndex.tcl + Destination=%MAINDIR%\lib\tcl%VER%\http2.5\pkgIndex.tcl Flags=0000000000000010 end item: Install File Source=${__TCLBASEDIR__}\library\http\http.tcl - Destination=%MAINDIR%\lib\tcl%VER%\http2.4\http.tcl + Destination=%MAINDIR%\lib\tcl%VER%\http2.5\http.tcl Flags=0000000000000010 end item: Install File diff --git a/tools/tclmin.wse b/tools/tclmin.wse index 2fd8185..2e7f69b 100644 --- a/tools/tclmin.wse +++ b/tools/tclmin.wse @@ -37,12 +37,12 @@ item: Install File end item: Install File Source=n:\dist\tcl8.0\library\http\pkgIndex.tcl - Destination=%MAINDIR%\lib\tcl%VER%\http2.4\pkgIndex.tcl + Destination=%MAINDIR%\lib\tcl%VER%\http2.5\pkgIndex.tcl Flags=0000000000000010 end item: Install File Source=n:\dist\tcl8.0\library\http\http.tcl - Destination=%MAINDIR%\lib\tcl%VER%\http2.4\http.tcl + Destination=%MAINDIR%\lib\tcl%VER%\http2.5\http.tcl Flags=0000000000000010 end item: Install File diff --git a/unix/Makefile.in b/unix/Makefile.in index 561e1d6..d4c92d8 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.6 2004/07/30 08:32:15 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.7 2004/11/16 23:39:51 andreas_kupries Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -628,7 +628,7 @@ install-libraries: libraries else true; \ fi; \ done; - @for i in http2.4 http1.0 opt0.4 encoding msgcat1.3 tcltest2.2; \ + @for i in http2.5 http1.0 opt0.4 encoding msgcat1.3 tcltest2.2; \ do \ if [ ! -d $(SCRIPT_INSTALL_DIR)/$$i ] ; then \ echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \ @@ -656,10 +656,10 @@ install-libraries: libraries do \ $(INSTALL_DATA) $$j $(SCRIPT_INSTALL_DIR)/http1.0; \ done; - @echo "Installing library http2.4 directory"; + @echo "Installing library http2.5 directory"; @for j in $(TOP_DIR)/library/http/*.tcl ; \ do \ - $(INSTALL_DATA) $$j $(SCRIPT_INSTALL_DIR)/http2.4; \ + $(INSTALL_DATA) $$j $(SCRIPT_INSTALL_DIR)/http2.5; \ done; @echo "Installing library opt0.4 directory"; @for j in $(TOP_DIR)/library/opt/*.tcl ; \ diff --git a/win/Makefile.in b/win/Makefile.in index d40a6f1..1dd0684 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.68.2.1 2003/07/16 19:34:14 mdejong Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.68.2.2 2004/11/16 23:39:52 andreas_kupries Exp $ VERSION = @TCL_VERSION@ @@ -490,7 +490,7 @@ install-libraries: libraries else true; \ fi; \ done; - @for i in http1.0 http2.4 opt0.4 encoding msgcat1.3 tcltest2.2; \ + @for i in http1.0 http2.5 opt0.4 encoding msgcat1.3 tcltest2.2; \ do \ if [ ! -d $(SCRIPT_INSTALL_DIR)/$$i ] ; then \ echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \ @@ -514,10 +514,10 @@ install-libraries: libraries do \ $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \ done; - @echo "Installing library http2.4 directory"; + @echo "Installing library http2.5 directory"; @for j in $(ROOT_DIR)/library/http/*.tcl; \ do \ - $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http2.4"; \ + $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http2.5"; \ done; @echo "Installing library opt0.4 directory"; @for j in $(ROOT_DIR)/library/opt/*.tcl; \ diff --git a/win/makefile.bc b/win/makefile.bc index 918fe21..3c0ea73 100644 --- a/win/makefile.bc +++ b/win/makefile.bc @@ -400,10 +400,10 @@ install-libraries: -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http1.0" -@copy "$(ROOT)\library\http1.0\http.tcl" "$(SCRIPT_INSTALL_DIR)\http1.0" -@copy "$(ROOT)\library\http1.0\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http1.0" - @echo installing http2.4 - -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http2.4" - -@copy "$(ROOT)\library\http\http.tcl" "$(SCRIPT_INSTALL_DIR)\http2.4" - -@copy "$(ROOT)\library\http\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http2.4" + @echo installing http2.5 + -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http2.5" + -@copy "$(ROOT)\library\http\http.tcl" "$(SCRIPT_INSTALL_DIR)\http2.5" + -@copy "$(ROOT)\library\http\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http2.5" @echo installing opt0.4 -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\opt0.4" -@copy "$(ROOT)\library\opt\optparse.tcl" "$(SCRIPT_INSTALL_DIR)\opt0.4" diff --git a/win/makefile.vc b/win/makefile.vc index 029a462..b03f1f4 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -12,7 +12,7 @@ # Copyright (c) 2001-2002 David Gravereaux. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.100.2.4 2003/07/16 19:34:14 mdejong Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.100.2.5 2004/11/16 23:39:52 andreas_kupries Exp $ #------------------------------------------------------------------------------ !if "$(MSVCDIR)" == "" @@ -738,9 +738,9 @@ install-libraries: @echo installing http1.0 @$(CPY) "$(ROOT)\library\http1.0\*.tcl" \ "$(SCRIPT_INSTALL_DIR)\http1.0\" - @echo installing http2.4 + @echo installing http2.5 @$(CPY) "$(ROOT)\library\http\*.tcl" \ - "$(SCRIPT_INSTALL_DIR)\http2.4\" + "$(SCRIPT_INSTALL_DIR)\http2.5\" @echo installing opt0.4 @$(CPY) "$(ROOT)\library\opt\*.tcl" \ "$(SCRIPT_INSTALL_DIR)\opt0.4\" -- cgit v0.12 From b70f7a0c3c837a92e17bb6ec8214cb77b4d2a670 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 17 Nov 2004 02:52:24 +0000 Subject: * unix/tclUnixChan.c (TtySetOptionProc): fixed crash configuring -ttycontrol on a channel. [Bug 1067708] --- ChangeLog | 5 +++++ unix/tclUnixChan.c | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index ea518ab..e8c935e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-16 Jeff Hobbs + + * unix/tclUnixChan.c (TtySetOptionProc): fixed crash configuring + -ttycontrol on a channel. [Bug 1067708] + 2004-11-16 Andreas Kupries * win/makefile.vc: Fixed bug in installation of http 2.5. diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index b7f0339..b875e08 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.3 2004/05/04 03:50:59 andreas_kupries Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.4 2004/11/17 02:52:25 hobbs Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -997,6 +997,7 @@ TtySetOptionProc(instanceData, interp, optionName, value) * Option -ttycontrol {DTR 1 RTS 0 BREAK 0} */ if ((len > 4) && (strncmp(optionName, "-ttycontrol", len) == 0)) { + int i; if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) { return TCL_ERROR; } @@ -1011,12 +1012,12 @@ TtySetOptionProc(instanceData, interp, optionName, value) } GETCONTROL(fsPtr->fd, &control); - while (argc > 1) { - if (Tcl_GetBoolean(interp, argv[1], &flag) == TCL_ERROR) { + for (i = 0; i < argc-1; i += 2) { + if (Tcl_GetBoolean(interp, argv[i+1], &flag) == TCL_ERROR) { ckfree((char *) argv); return TCL_ERROR; } - if (strncasecmp(argv[0], "DTR", strlen(argv[0])) == 0) { + if (strncasecmp(argv[i], "DTR", strlen(argv[i])) == 0) { #ifdef TIOCM_DTR if (flag) { control |= TIOCM_DTR; @@ -1028,7 +1029,7 @@ TtySetOptionProc(instanceData, interp, optionName, value) ckfree((char *) argv); return TCL_ERROR; #endif /* TIOCM_DTR */ - } else if (strncasecmp(argv[0], "RTS", strlen(argv[0])) == 0) { + } else if (strncasecmp(argv[i], "RTS", strlen(argv[i])) == 0) { #ifdef TIOCM_RTS if (flag) { control |= TIOCM_RTS; @@ -1040,7 +1041,7 @@ TtySetOptionProc(instanceData, interp, optionName, value) ckfree((char *) argv); return TCL_ERROR; #endif /* TIOCM_RTS*/ - } else if (strncasecmp(argv[0], "BREAK", strlen(argv[0])) == 0) { + } else if (strncasecmp(argv[i], "BREAK", strlen(argv[i])) == 0) { #ifdef SETBREAK SETBREAK(fsPtr->fd, flag); #else /* !SETBREAK */ @@ -1050,15 +1051,14 @@ TtySetOptionProc(instanceData, interp, optionName, value) #endif /* SETBREAK */ } else { if (interp) { - Tcl_AppendResult(interp, - "bad signal for -ttycontrol: must be ", + Tcl_AppendResult(interp, "bad signal \"", argv[i], + "\" for -ttycontrol: must be ", "DTR, RTS or BREAK", (char *) NULL); } ckfree((char *) argv); return TCL_ERROR; } - argc -= 2, argv += 2; - } /* while (argc > 1) */ + } /* -ttycontrol options loop */ SETCONTROL(fsPtr->fd, &control); ckfree((char *) argv); -- cgit v0.12 From 2d4840bee21532d087aa38573c03536887eae72b Mon Sep 17 00:00:00 2001 From: rmax Date: Thu, 18 Nov 2004 02:07:06 +0000 Subject: 2004-11-18 Reinhard Max * unix/tcl.m4 (SC_CONFIG_MANPAGES): Applied an improved version of * unix/configure.in: patch #996085, that introduces * unix/Makefile.in: --enable-man-suffix. * unix/installManPage: added * unix/mkLinks.tcl: removed * unix/mkLinks: removed --- ChangeLog | 10 + unix/Makefile.in | 63 +- unix/configure | 755 +++++++++++---------- unix/configure.in | 4 +- unix/installManPage | 51 ++ unix/mkLinks | 1857 --------------------------------------------------- unix/mkLinks.tcl | 119 ---- unix/tcl.m4 | 42 +- 8 files changed, 508 insertions(+), 2393 deletions(-) create mode 100755 unix/installManPage delete mode 100644 unix/mkLinks delete mode 100644 unix/mkLinks.tcl diff --git a/ChangeLog b/ChangeLog index e8c935e..7c6cff1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-11-18 Reinhard Max + + * unix/tcl.m4 (SC_CONFIG_MANPAGES): Applied an improved version of + * unix/configure.in: patch #996085, that introduces + * unix/Makefile.in: --enable-man-suffix. + + * unix/installManPage: added + * unix/mkLinks.tcl: removed + * unix/mkLinks: removed + 2004-11-16 Jeff Hobbs * unix/tclUnixChan.c (TtySetOptionProc): fixed crash configuring diff --git a/unix/Makefile.in b/unix/Makefile.in index d4c92d8..6c1485a 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.7 2004/11/16 23:39:51 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.8 2004/11/18 02:07:09 rmax Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -257,9 +257,9 @@ TCL_BUILDTIME_LIBRARY = @TCL_SRC_DIR@/library CC = @CC@ #CC = purify -best-effort @CC@ -DPURIFY -# Flags to be passed to mkLinks to control whether the manpages +# Flags to be passed to installManPage to control whether the manpages # should be compressed and linked with softlinks -MKLINKS_FLAGS = @MKLINKS_FLAGS@ +MAN_FLAGS = @MAN_FLAGS@ #---------------------------------------------------------------- # The information below is usually usable as is. The configure @@ -682,8 +682,8 @@ install-libraries: libraries done; install-doc: doc - @if test ! -x $(UNIX_DIR)/mkLinks; then \ - chmod +x $(UNIX_DIR)/mkLinks; \ + @if test ! -x $(UNIX_DIR)/installManPage; then \ + chmod +x $(UNIX_DIR)/installManPage; \ fi @for i in $(MAN_INSTALL_DIR) $(MAN1_INSTALL_DIR) $(MAN3_INSTALL_DIR) $(MANN_INSTALL_DIR) ; \ do \ @@ -694,36 +694,20 @@ install-doc: doc else true; \ fi; \ done; - @echo "Installing top-level (.1) docs"; - @cd $(TOP_DIR)/doc; for i in *.1; \ - do \ - rm -f $(MAN1_INSTALL_DIR)/$$i; \ - sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \ - $$i > $(MAN1_INSTALL_DIR)/$$i; \ - chmod 444 $(MAN1_INSTALL_DIR)/$$i; \ - done; - @echo "Cross-linking top-level (.1) docs"; - @$(UNIX_DIR)/mkLinks $(MKLINKS_FLAGS) $(MAN1_INSTALL_DIR) - @echo "Installing C API (.3) docs"; - @cd $(TOP_DIR)/doc; for i in *.3; \ - do \ - rm -f $(MAN3_INSTALL_DIR)/$$i; \ - sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \ - $$i > $(MAN3_INSTALL_DIR)/$$i; \ - chmod 444 $(MAN3_INSTALL_DIR)/$$i; \ - done; - @echo "Cross-linking C API (.3) docs"; - @$(UNIX_DIR)/mkLinks $(MKLINKS_FLAGS) $(MAN3_INSTALL_DIR) - @echo "Installing command (.n) docs"; - @cd $(TOP_DIR)/doc; for i in *.n; \ - do \ - rm -f $(MANN_INSTALL_DIR)/$$i; \ - sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \ - $$i > $(MANN_INSTALL_DIR)/$$i; \ - chmod 444 $(MANN_INSTALL_DIR)/$$i; \ - done; - @echo "Cross-linking command (.n) docs"; - @$(UNIX_DIR)/mkLinks $(MKLINKS_FLAGS) $(MANN_INSTALL_DIR) + @echo "Installing and cross-linking top-level (.1) docs"; + @cd $(TOP_DIR)/doc; for i in *.1; do \ + $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MAN1_INSTALL_DIR); \ + done + + @echo "Installing and cross-linking C API (.3) docs"; + @cd $(TOP_DIR)/doc; for i in *.3; do \ + $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MAN3_INSTALL_DIR); \ + done + + @echo "Installing and cross-linking command (.n) docs"; + @cd $(TOP_DIR)/doc; for i in *.n; do \ + $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MANN_INSTALL_DIR); \ + done Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in $(SHELL) config.status @@ -1198,11 +1182,6 @@ rpm: all /bin/rpm mv RPMS/i386/*.rpm . rm -rf RPMS THIS.TCL.SPEC -mklinks: - $(TCL_EXE) $(UNIX_DIR)/mkLinks.tcl \ - $(UNIX_DIR)/../doc/*.[13n] > $(UNIX_DIR)/mkLinks - chmod +x $(UNIX_DIR)/mkLinks - # # Target to create a proper Tcl distribution from information in the # master source directory. DISTDIR must be defined to indicate where @@ -1214,7 +1193,7 @@ DISTNAME = tcl${VERSION}${PATCH_LEVEL} ZIPNAME = tcl${MAJOR_VERSION}${MINOR_VERSION}${PATCH_LEVEL}-src.zip DISTDIR = $(DISTROOT)/$(DISTNAME) -dist: mklinks +dist: rm -rf $(DISTDIR) mkdir -p $(DISTDIR)/unix cp -p $(UNIX_DIR)/*.c $(UNIX_DIR)/*.h $(DISTDIR)/unix @@ -1224,7 +1203,7 @@ dist: mklinks $(UNIX_DIR)/tcl.m4 $(UNIX_DIR)/aclocal.m4 \ $(UNIX_DIR)/tclConfig.sh.in $(UNIX_DIR)/install-sh \ $(UNIX_DIR)/README $(UNIX_DIR)/ldAix $(UNIX_DIR)/tcl.spec \ - $(UNIX_DIR)/mkLinks \ + $(UNIX_DIR)/installManPage \ $(DISTDIR)/unix chmod 775 $(DISTDIR)/unix/configure $(DISTDIR)/unix/configure.in chmod 775 $(DISTDIR)/unix/ldAix diff --git a/unix/configure b/unix/configure index 1a66b50..c25db6d 100755 --- a/unix/configure +++ b/unix/configure @@ -17,6 +17,10 @@ ac_help="$ac_help --enable-man-compression=PROG compress the manpages with PROG" ac_help="$ac_help + --enable-man-suffix=STRING + use STRING as a suffix to manpage file names + (default: tcl)" +ac_help="$ac_help --enable-threads build with threads" ac_help="$ac_help --enable-shared build and link with shared libraries [--enable-shared]" @@ -571,24 +575,47 @@ TCL_SRC_DIR=`cd $srcdir/..; pwd` echo $ac_n "checking whether to use symlinks for manpages""... $ac_c" 1>&6 -echo "configure:575: checking whether to use symlinks for manpages" >&5 +echo "configure:579: checking whether to use symlinks for manpages" >&5 # Check whether --enable-man-symlinks or --disable-man-symlinks was given. if test "${enable_man_symlinks+set}" = set; then enableval="$enable_man_symlinks" - test "$enableval" != "no" && MKLINKS_FLAGS="$MKLINKS_FLAGS --symlinks" + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks" else enableval="no" fi echo "$ac_t""$enableval" 1>&6 - echo $ac_n "checking compression for manpages""... $ac_c" 1>&6 -echo "configure:587: checking compression for manpages" >&5 + echo $ac_n "checking whether to compress the manpages""... $ac_c" 1>&6 +echo "configure:591: checking whether to compress the manpages" >&5 # Check whether --enable-man-compression or --disable-man-compression was given. if test "${enable_man_compression+set}" = set; then enableval="$enable_man_compression" - test "$enableval" = "yes" && echo && { echo "configure: error: missing argument to --enable-man-compression" 1>&2; exit 1; } - test "$enableval" != "no" && MKLINKS_FLAGS="$MKLINKS_FLAGS --compress $enableval" + test "$enableval" = "yes" && { echo "configure: error: missing argument to --enable-man-compression" 1>&2; exit 1; } + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --compress $enableval" +else + enableval="no" +fi + + echo "$ac_t""$enableval" 1>&6 + if test "$enableval" != "no"; then + echo $ac_n "checking for compressed file suffix""... $ac_c" 1>&6 +echo "configure:604: checking for compressed file suffix" >&5 + touch TeST + $enableval TeST + Z=`ls TeST* | sed 's/^....//'` + rm -f TeST* + MAN_FLAGS="$MAN_FLAGS --extension $Z" + echo "$ac_t""$Z" 1>&6 + fi + + echo $ac_n "checking whether to add a package name suffix for the manpages""... $ac_c" 1>&6 +echo "configure:614: checking whether to add a package name suffix for the manpages" >&5 + # Check whether --enable-man-suffix or --disable-man-suffix was given. +if test "${enable_man_suffix+set}" = set; then + enableval="$enable_man_suffix" + test "$enableval" = "yes" && enableval="tcl" + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --suffix $enableval" else enableval="no" fi @@ -611,7 +638,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:615: checking for $ac_word" >&5 +echo "configure:642: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -641,7 +668,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:645: checking for $ac_word" >&5 +echo "configure:672: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -692,7 +719,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:696: checking for $ac_word" >&5 +echo "configure:723: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -724,7 +751,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:728: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:755: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -735,12 +762,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 739 "configure" +#line 766 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -766,12 +793,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:770: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:797: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:775: checking whether we are using GNU C" >&5 +echo "configure:802: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -780,7 +807,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:784: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -799,7 +826,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:803: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:830: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -837,7 +864,7 @@ fi echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:841: checking for building with threads" >&5 +echo "configure:868: checking for building with threads" >&5 # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then enableval="$enable_threads" @@ -873,7 +900,7 @@ EOF EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:877: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:904: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -881,7 +908,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -920,7 +947,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:924: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:951: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -928,7 +955,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -967,7 +994,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:971: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:998: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -975,7 +1002,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1012,7 +1039,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1016: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1043: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1020,7 +1047,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1054,7 +1081,7 @@ fi if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1058: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1085: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1062,7 +1089,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1113,12 +1140,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1117: checking for $ac_func" >&5 +echo "configure:1144: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1168,12 +1195,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1172: checking for $ac_func" >&5 +echo "configure:1199: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1224,12 +1251,12 @@ done for ac_func in readdir_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1228: checking for $ac_func" >&5 +echo "configure:1255: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1291,18 +1318,18 @@ done if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1295: checking if the compiler understands -pipe" >&5 +echo "configure:1322: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1321,7 +1348,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1325: checking how to run the C preprocessor" >&5 +echo "configure:1352: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1336,13 +1363,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1373: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1353,13 +1380,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1363: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1390: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1370,13 +1397,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1380: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1407: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1409,12 +1436,12 @@ echo "$ac_t""$CPP" 1>&6 #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1413: checking for sin" >&5 +echo "configure:1440: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1458,7 +1485,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1462: checking for main in -lieee" >&5 +echo "configure:1489: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1466,14 +1493,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1500,7 +1527,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1504: checking for main in -linet" >&5 +echo "configure:1531: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1508,14 +1535,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1537,17 +1564,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:1541: checking for net/errno.h" >&5 +echo "configure:1568: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1551: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1578: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1592,12 +1619,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1596: checking for connect" >&5 +echo "configure:1623: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1642,12 +1669,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:1646: checking for setsockopt" >&5 +echo "configure:1673: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -1688,7 +1715,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:1692: checking for setsockopt in -lsocket" >&5 +echo "configure:1719: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1696,7 +1723,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1735,12 +1762,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:1739: checking for accept" >&5 +echo "configure:1766: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -1785,12 +1812,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1789: checking for gethostbyname" >&5 +echo "configure:1816: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1831,7 +1858,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1835: checking for gethostbyname in -lnsl" >&5 +echo "configure:1862: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1839,7 +1866,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1887,7 +1914,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:1891: checking how to build libraries" >&5 +echo "configure:1918: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -1926,7 +1953,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1930: checking for $ac_word" >&5 +echo "configure:1957: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1958,7 +1985,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:1962: checking if 64bit support is requested" >&5 +echo "configure:1989: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -1978,7 +2005,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:1982: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2009: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2002,7 +2029,7 @@ fi # there are a few systems, like Next, where this doesn't work. echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:2006: checking system version (for dynamic loading)" >&5 +echo "configure:2033: checking system version (for dynamic loading)" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -2028,7 +2055,7 @@ echo "configure:2006: checking system version (for dynamic loading)" >&5 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2032: checking for dlopen in -ldl" >&5 +echo "configure:2059: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2036,7 +2063,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2095,7 +2122,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2099: checking for $ac_word" >&5 +echo "configure:2126: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2236,7 +2263,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2240: checking for gettimeofday in -lbsd" >&5 +echo "configure:2267: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2244,7 +2271,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2298,7 +2325,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2302: checking for inet_ntoa in -lbind" >&5 +echo "configure:2329: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2306,7 +2333,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2383,7 +2410,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2387: checking for shl_load in -ldld" >&5 +echo "configure:2414: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2391,7 +2418,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2471,7 +2498,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2475: checking for shl_load in -ldld" >&5 +echo "configure:2502: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2479,7 +2506,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2614,17 +2641,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2618: checking for dld.h" >&5 +echo "configure:2645: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2628: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2688,17 +2715,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2692: checking for dld.h" >&5 +echo "configure:2719: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2754,17 +2781,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2758: checking for dlfcn.h" >&5 +echo "configure:2785: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2795: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2791,9 +2818,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2795: checking for ELF" >&5 +echo "configure:2822: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2849: checking for ELF" >&5 +echo "configure:2876: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:3197: checking for ld accepts -Bexport flag" >&5 +echo "configure:3224: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3244,9 +3271,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3248: checking sys/exec.h" >&5 +echo "configure:3275: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3264,7 +3291,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3268: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3295: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3282,9 +3309,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3286: checking a.out.h" >&5 +echo "configure:3313: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3302,7 +3329,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3320,9 +3347,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3324: checking sys/exec_aout.h" >&5 +echo "configure:3351: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3340,7 +3367,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3371: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3491,7 +3518,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3495: checking for build with symbols" >&5 +echo "configure:3522: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3552,21 +3579,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3556: checking for required early compiler flags" >&5 +echo "configure:3583: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3574,7 +3601,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3582,7 +3609,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3586: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3608,14 +3635,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3623,7 +3650,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3631,7 +3658,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3635: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3660,7 +3687,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3664: checking for 64-bit integer type" >&5 +echo "configure:3691: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3668,14 +3695,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3689,7 +3716,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3729: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3723,13 +3750,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3727: checking for struct dirent64" >&5 +echo "configure:3754: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3737,7 +3764,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3758,13 +3785,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3762: checking for struct stat64" >&5 +echo "configure:3789: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3772,7 +3799,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3793,13 +3820,13 @@ EOF echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:3797: checking for off64_t" >&5 +echo "configure:3824: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3807,7 +3834,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:3811: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3838: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -3834,14 +3861,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3838: checking whether byte ordering is bigendian" >&5 +echo "configure:3865: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -3852,11 +3879,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -3867,7 +3894,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -3887,7 +3914,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -3933,12 +3960,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3937: checking for $ac_func" >&5 +echo "configure:3964: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3995,12 +4022,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3999: checking for $ac_func" >&5 +echo "configure:4026: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4053,12 +4080,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4057: checking for $ac_func" >&5 +echo "configure:4084: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4108,12 +4135,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4112: checking for strerror" >&5 +echo "configure:4139: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4160,12 +4187,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4164: checking for getwd" >&5 +echo "configure:4191: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4212,12 +4239,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4216: checking for wait3" >&5 +echo "configure:4243: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4264,12 +4291,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4268: checking for uname" >&5 +echo "configure:4295: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4316,12 +4343,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4320: checking for realpath" >&5 +echo "configure:4347: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4379,9 +4406,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4383: checking dirent.h" >&5 +echo "configure:4410: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -4407,7 +4434,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -4428,17 +4455,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4432: checking for errno.h" >&5 +echo "configure:4459: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4469: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4465,17 +4492,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4469: checking for float.h" >&5 +echo "configure:4496: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4506: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4502,17 +4529,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4506: checking for values.h" >&5 +echo "configure:4533: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4516: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4543: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4539,17 +4566,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4543: checking for limits.h" >&5 +echo "configure:4570: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4580: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4579,17 +4606,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4583: checking for stdlib.h" >&5 +echo "configure:4610: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4620: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4612,7 +4639,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4626,7 +4653,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4640,7 +4667,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4661,17 +4688,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4665: checking for string.h" >&5 +echo "configure:4692: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4675: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4694,7 +4721,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4708,7 +4735,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4734,17 +4761,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4738: checking for sys/wait.h" >&5 +echo "configure:4765: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4748: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4771,17 +4798,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4775: checking for dlfcn.h" >&5 +echo "configure:4802: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4813,17 +4840,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4817: checking for $ac_hdr" >&5 +echo "configure:4844: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4863,17 +4890,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4867: checking for $ac_hdr" >&5 +echo "configure:4894: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4904: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4900,7 +4927,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:4904: checking termios vs. termio vs. sgtty" >&5 +echo "configure:4931: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4909,7 +4936,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -4924,7 +4951,7 @@ int main() { return 1; } EOF -if { (eval echo configure:4928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -4941,7 +4968,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -4955,7 +4982,7 @@ int main() { return 1; } EOF -if { (eval echo configure:4959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -4973,7 +5000,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -4988,7 +5015,7 @@ int main() { return 1; } EOF -if { (eval echo configure:4992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5006,7 +5033,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5023,7 +5050,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5041,7 +5068,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5057,7 +5084,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5075,7 +5102,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5092,7 +5119,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5135,19 +5162,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5139: checking for fd_set in sys/types" >&5 +echo "configure:5166: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5163,12 +5190,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5167: checking for fd_mask in sys/select" >&5 +echo "configure:5194: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5205,12 +5232,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5209: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5236: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5218,7 +5245,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5249: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5243,17 +5270,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5247: checking for $ac_hdr" >&5 +echo "configure:5274: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5280,12 +5307,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5284: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5311: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5294,7 +5321,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5298: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5315,12 +5342,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5319: checking for tm_zone in struct tm" >&5 +echo "configure:5346: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5328,7 +5355,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5359: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5348,12 +5375,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5352: checking for tzname" >&5 +echo "configure:5379: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5363,7 +5390,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5394: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5388,12 +5415,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5392: checking for $ac_func" >&5 +echo "configure:5419: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5442,19 +5469,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5446: checking tm_tzadj in struct tm" >&5 +echo "configure:5473: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5458: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5485: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5475,19 +5502,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5479: checking tm_gmtoff in struct tm" >&5 +echo "configure:5506: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5512,12 +5539,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5516: checking long timezone variable" >&5 +echo "configure:5543: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5526,7 +5553,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5549,12 +5576,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5553: checking time_t timezone variable" >&5 +echo "configure:5580: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5563,7 +5590,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5590,12 +5617,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5594: checking for st_blksize in struct stat" >&5 +echo "configure:5621: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5603,7 +5630,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5634: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5624,12 +5651,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5628: checking for fstatfs" >&5 +echo "configure:5655: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5681,7 +5708,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5685: checking for 8-bit clean memcmp" >&5 +echo "configure:5712: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5689,7 +5716,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5723,12 +5750,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5727: checking for memmove" >&5 +echo "configure:5754: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5784,12 +5811,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5788: checking proper strstr implementation" >&5 +echo "configure:5815: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -5825,12 +5852,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:5829: checking for strtoul" >&5 +echo "configure:5856: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -5877,7 +5904,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -5916,12 +5943,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:5920: checking for strtod" >&5 +echo "configure:5947: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -5968,7 +5995,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6010,12 +6037,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6014: checking for strtod" >&5 +echo "configure:6041: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6060,7 +6087,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6064: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6091: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6069,7 +6096,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6125,12 +6152,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6129: checking for ANSI C header files" >&5 +echo "configure:6156: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6138,7 +6165,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6142: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6155,7 +6182,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6173,7 +6200,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6194,7 +6221,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6205,7 +6232,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6229,12 +6256,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6233: checking for mode_t" >&5 +echo "configure:6260: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6262,12 +6289,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6266: checking for pid_t" >&5 +echo "configure:6293: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6295,12 +6322,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6299: checking for size_t" >&5 +echo "configure:6326: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6328,12 +6355,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6332: checking for uid_t in sys/types.h" >&5 +echo "configure:6359: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6363,12 +6390,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6367: checking for socklen_t" >&5 +echo "configure:6394: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6407,12 +6434,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6411: checking for opendir" >&5 +echo "configure:6438: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6468,12 +6495,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6472: checking union wait" >&5 +echo "configure:6499: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6485,7 +6512,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6512,12 +6539,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6516: checking for strncasecmp" >&5 +echo "configure:6543: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6562,7 +6589,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6566: checking for strncasecmp in -lsocket" >&5 +echo "configure:6593: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6570,7 +6597,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6605,7 +6632,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6609: checking for strncasecmp in -linet" >&5 +echo "configure:6636: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6613,7 +6640,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6662,12 +6689,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6666: checking for BSDgettimeofday" >&5 +echo "configure:6693: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6712,12 +6739,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6716: checking for gettimeofday" >&5 +echo "configure:6743: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6767,12 +6794,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6771: checking for gettimeofday declaration" >&5 +echo "configure:6798: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6803,14 +6830,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:6807: checking whether char is unsigned" >&5 +echo "configure:6834: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -6866,12 +6893,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:6870: checking signed char declarations" >&5 +echo "configure:6897: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6912: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -6906,7 +6933,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:6910: checking for a putenv() that copies the buffer" >&5 +echo "configure:6937: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6914,7 +6941,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -6936,7 +6963,7 @@ else } EOF -if { (eval echo configure:6940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -6978,17 +7005,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:6982: checking for langinfo.h" >&5 +echo "configure:7009: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7013,17 +7040,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7017: checking whether to use nl_langinfo" >&5 +echo "configure:7044: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7027: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7058,17 +7085,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7062: checking for $ac_hdr" >&5 +echo "configure:7089: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7072: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7098,17 +7125,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7102: checking for $ac_hdr" >&5 +echo "configure:7129: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7112: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7135,7 +7162,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7139: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7166: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7198,7 +7225,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7202: checking how to package libraries" >&5 +echo "configure:7229: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -7501,7 +7528,7 @@ s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g -s%@MKLINKS_FLAGS@%$MKLINKS_FLAGS%g +s%@MAN_FLAGS@%$MAN_FLAGS%g s%@CC@%$CC%g s%@TCL_THREADS@%$TCL_THREADS%g s%@CPP@%$CPP%g diff --git a/unix/configure.in b/unix/configure.in index 0d8d074..6c4df56 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.9 2004/10/28 16:42:12 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.10 2004/11/18 02:07:09 rmax Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -31,7 +31,7 @@ TCL_SRC_DIR=`cd $srcdir/..; pwd` #------------------------------------------------------------------------ # Compress and/or soft link the manpages? #------------------------------------------------------------------------ -SC_CONFIG_MANPAGES +SC_CONFIG_MANPAGES([tcl]) #------------------------------------------------------------------------ # Standard compiler checks diff --git a/unix/installManPage b/unix/installManPage new file mode 100755 index 0000000..16cf005 --- /dev/null +++ b/unix/installManPage @@ -0,0 +1,51 @@ +#!/bin/sh + +ZIP=: +while true; do + case $1 in + -s | --symlinks ) S="-s ";; + -z | --compress ) ZIP=$2; shift ;; + -e | --extension ) Z=$2; shift ;; + -s | --suffix ) SUFFIX=$2; shift ;; + *) break ;; + esac + shift +done +if test "$#" != 2; then + echo "Usage: installManPages file dir" + exit 1 +fi + +MANPAGE=$1 +DIR=$2 +test -z "$S" && S="$DIR/" + +# Backslashes are trippled in the sed script, because it is in backticks +# which don't pass backslashes literally. +NAMES=`sed -n ' + /^\\.SH NAME/{ # Look for a line, that starts with .SH NAME + s/^.*$// # Delete the content of this line from the buffer + n # Read next line + s/,\|\\\ //g # Remove all commas + s/ \\\-.*// # Delete from \- to the end of line + p # print the result + q + }' $MANPAGE` + +SECTION=`echo $MANPAGE | sed 's/.*\(.\)$/\1/'` +SRCDIR=`dirname $MANPAGE` +FIRST="" +for f in $NAMES; do + f=$f.$SECTION$SUFFIX + if test -z "$FIRST" ; then + FIRST=$f + rm -f $DIR/$FIRST $DIR/$FIRST.* + sed -e "/man\.macros/r $SRCDIR/man.macros" -e "/man\.macros/d" \ + $MANPAGE > $DIR/$FIRST + chmod 444 $DIR/$FIRST + $ZIP $DIR/$FIRST + else + rm -f $DIR/$f $DIR/$f.* + ln $S$FIRST$Z $DIR/$f$Z + fi +done diff --git a/unix/mkLinks b/unix/mkLinks deleted file mode 100644 index a41ea06..0000000 --- a/unix/mkLinks +++ /dev/null @@ -1,1857 +0,0 @@ -#!/bin/sh -# This script is invoked when installing manual entries. It generates -# additional links to manual entries, corresponding to the procedure -# and command names described by the manual entry. For example, the -# Tcl manual entry Hash.3 describes procedures Tcl_InitHashTable, -# Tcl_CreateHashEntry, and many more. This script will make hard -# links so that Tcl_InitHashTable.3, Tcl_CreateHashEntry.3, and so -# on all refer to Hash.3 in the installed directory. -# -# Because of the length of command and procedure names, this mechanism -# only works on machines that support file names longer than 14 characters. -# This script checks to see if long file names are supported, and it -# doesn't make any links if they are not. -# -# The script takes one argument, which is the name of the directory -# where the manual entries have been installed. - -ZIP=true -while true; do - case $1 in - -s | --symlinks ) - S=-s - ;; - -z | --compress ) - ZIP=$2 - shift - ;; - *) break - ;; - esac - shift -done - -if test $# != 1; then - echo "Usage: mkLinks dir" - exit 1 -fi - -if test "x$ZIP" != "xtrue"; then - touch TeST - $ZIP TeST - Z=`ls TeST* | sed 's/^[^.]*//'` - rm -f TeST* -fi - -cd $1 -echo foo > xyzzyTestingAVeryLongFileName.foo -x=`echo xyzzyTe*` -echo foo > xyzzyTestingaverylongfilename.foo -y=`echo xyzzyTestingav*` -rm xyzzyTe* -if test "$x" != "xyzzyTestingAVeryLongFileName.foo"; then - exit -fi -if test "$y" != "xyzzyTestingaverylongfilename.foo"; then - CASEINSENSITIVEFS=1 -fi - -if test -r Access.3; then - rm -f Access.3.* - $ZIP Access.3 - rm -f Tcl_Access.3 Tcl_Access.3.* - rm -f Tcl_Stat.3 Tcl_Stat.3.* - ln $S Access.3$Z Tcl_Access.3$Z - ln $S Access.3$Z Tcl_Stat.3$Z -fi -if test -r AddErrInfo.3; then - rm -f AddErrInfo.3.* - $ZIP AddErrInfo.3 - rm -f Tcl_AddObjErrorInfo.3 Tcl_AddObjErrorInfo.3.* - rm -f Tcl_AddErrorInfo.3 Tcl_AddErrorInfo.3.* - rm -f Tcl_SetObjErrorCode.3 Tcl_SetObjErrorCode.3.* - rm -f Tcl_SetErrorCode.3 Tcl_SetErrorCode.3.* - rm -f Tcl_SetErrorCodeVA.3 Tcl_SetErrorCodeVA.3.* - rm -f Tcl_PosixError.3 Tcl_PosixError.3.* - rm -f Tcl_LogCommandInfo.3 Tcl_LogCommandInfo.3.* - ln $S AddErrInfo.3$Z Tcl_AddObjErrorInfo.3$Z - ln $S AddErrInfo.3$Z Tcl_AddErrorInfo.3$Z - ln $S AddErrInfo.3$Z Tcl_SetObjErrorCode.3$Z - ln $S AddErrInfo.3$Z Tcl_SetErrorCode.3$Z - ln $S AddErrInfo.3$Z Tcl_SetErrorCodeVA.3$Z - ln $S AddErrInfo.3$Z Tcl_PosixError.3$Z - ln $S AddErrInfo.3$Z Tcl_LogCommandInfo.3$Z -fi -if test -r Alloc.3; then - rm -f Alloc.3.* - $ZIP Alloc.3 - rm -f Tcl_Alloc.3 Tcl_Alloc.3.* - rm -f Tcl_Free.3 Tcl_Free.3.* - rm -f Tcl_Realloc.3 Tcl_Realloc.3.* - rm -f Tcl_AttemptAlloc.3 Tcl_AttemptAlloc.3.* - rm -f Tcl_AttemptRealloc.3 Tcl_AttemptRealloc.3.* - rm -f ckalloc.3 ckalloc.3.* - rm -f ckfree.3 ckfree.3.* - rm -f ckrealloc.3 ckrealloc.3.* - rm -f attemptckalloc.3 attemptckalloc.3.* - rm -f attemptckrealloc.3 attemptckrealloc.3.* - ln $S Alloc.3$Z Tcl_Alloc.3$Z - ln $S Alloc.3$Z Tcl_Free.3$Z - ln $S Alloc.3$Z Tcl_Realloc.3$Z - ln $S Alloc.3$Z Tcl_AttemptAlloc.3$Z - ln $S Alloc.3$Z Tcl_AttemptRealloc.3$Z - ln $S Alloc.3$Z ckalloc.3$Z - ln $S Alloc.3$Z ckfree.3$Z - ln $S Alloc.3$Z ckrealloc.3$Z - ln $S Alloc.3$Z attemptckalloc.3$Z - ln $S Alloc.3$Z attemptckrealloc.3$Z -fi -if test -r AllowExc.3; then - rm -f AllowExc.3.* - $ZIP AllowExc.3 - rm -f Tcl_AllowExceptions.3 Tcl_AllowExceptions.3.* - ln $S AllowExc.3$Z Tcl_AllowExceptions.3$Z -fi -if test -r AppInit.3; then - rm -f AppInit.3.* - $ZIP AppInit.3 - rm -f Tcl_AppInit.3 Tcl_AppInit.3.* - ln $S AppInit.3$Z Tcl_AppInit.3$Z -fi -if test -r AssocData.3; then - rm -f AssocData.3.* - $ZIP AssocData.3 - rm -f Tcl_GetAssocData.3 Tcl_GetAssocData.3.* - rm -f Tcl_SetAssocData.3 Tcl_SetAssocData.3.* - rm -f Tcl_DeleteAssocData.3 Tcl_DeleteAssocData.3.* - ln $S AssocData.3$Z Tcl_GetAssocData.3$Z - ln $S AssocData.3$Z Tcl_SetAssocData.3$Z - ln $S AssocData.3$Z Tcl_DeleteAssocData.3$Z -fi -if test -r Async.3; then - rm -f Async.3.* - $ZIP Async.3 - rm -f Tcl_AsyncCreate.3 Tcl_AsyncCreate.3.* - rm -f Tcl_AsyncMark.3 Tcl_AsyncMark.3.* - rm -f Tcl_AsyncInvoke.3 Tcl_AsyncInvoke.3.* - rm -f Tcl_AsyncDelete.3 Tcl_AsyncDelete.3.* - rm -f Tcl_AsyncReady.3 Tcl_AsyncReady.3.* - ln $S Async.3$Z Tcl_AsyncCreate.3$Z - ln $S Async.3$Z Tcl_AsyncMark.3$Z - ln $S Async.3$Z Tcl_AsyncInvoke.3$Z - ln $S Async.3$Z Tcl_AsyncDelete.3$Z - ln $S Async.3$Z Tcl_AsyncReady.3$Z -fi -if test -r BackgdErr.3; then - rm -f BackgdErr.3.* - $ZIP BackgdErr.3 - rm -f Tcl_BackgroundError.3 Tcl_BackgroundError.3.* - ln $S BackgdErr.3$Z Tcl_BackgroundError.3$Z -fi -if test -r Backslash.3; then - rm -f Backslash.3.* - $ZIP Backslash.3 - rm -f Tcl_Backslash.3 Tcl_Backslash.3.* - ln $S Backslash.3$Z Tcl_Backslash.3$Z -fi -if test -r BoolObj.3; then - rm -f BoolObj.3.* - $ZIP BoolObj.3 - rm -f Tcl_NewBooleanObj.3 Tcl_NewBooleanObj.3.* - rm -f Tcl_SetBooleanObj.3 Tcl_SetBooleanObj.3.* - rm -f Tcl_GetBooleanFromObj.3 Tcl_GetBooleanFromObj.3.* - ln $S BoolObj.3$Z Tcl_NewBooleanObj.3$Z - ln $S BoolObj.3$Z Tcl_SetBooleanObj.3$Z - ln $S BoolObj.3$Z Tcl_GetBooleanFromObj.3$Z -fi -if test -r ByteArrObj.3; then - rm -f ByteArrObj.3.* - $ZIP ByteArrObj.3 - rm -f Tcl_NewByteArrayObj.3 Tcl_NewByteArrayObj.3.* - rm -f Tcl_SetByteArrayObj.3 Tcl_SetByteArrayObj.3.* - rm -f Tcl_GetByteArrayFromObj.3 Tcl_GetByteArrayFromObj.3.* - rm -f Tcl_SetByteArrayLength.3 Tcl_SetByteArrayLength.3.* - ln $S ByteArrObj.3$Z Tcl_NewByteArrayObj.3$Z - ln $S ByteArrObj.3$Z Tcl_SetByteArrayObj.3$Z - ln $S ByteArrObj.3$Z Tcl_GetByteArrayFromObj.3$Z - ln $S ByteArrObj.3$Z Tcl_SetByteArrayLength.3$Z -fi -if test -r CallDel.3; then - rm -f CallDel.3.* - $ZIP CallDel.3 - rm -f Tcl_CallWhenDeleted.3 Tcl_CallWhenDeleted.3.* - rm -f Tcl_DontCallWhenDeleted.3 Tcl_DontCallWhenDeleted.3.* - ln $S CallDel.3$Z Tcl_CallWhenDeleted.3$Z - ln $S CallDel.3$Z Tcl_DontCallWhenDeleted.3$Z -fi -if test -r ChnlStack.3; then - rm -f ChnlStack.3.* - $ZIP ChnlStack.3 - rm -f Tcl_StackChannel.3 Tcl_StackChannel.3.* - rm -f Tcl_UnstackChannel.3 Tcl_UnstackChannel.3.* - rm -f Tcl_GetStackedChannel.3 Tcl_GetStackedChannel.3.* - rm -f Tcl_GetTopChannel.3 Tcl_GetTopChannel.3.* - ln $S ChnlStack.3$Z Tcl_StackChannel.3$Z - ln $S ChnlStack.3$Z Tcl_UnstackChannel.3$Z - ln $S ChnlStack.3$Z Tcl_GetStackedChannel.3$Z - ln $S ChnlStack.3$Z Tcl_GetTopChannel.3$Z -fi -if test -r CmdCmplt.3; then - rm -f CmdCmplt.3.* - $ZIP CmdCmplt.3 - rm -f Tcl_CommandComplete.3 Tcl_CommandComplete.3.* - ln $S CmdCmplt.3$Z Tcl_CommandComplete.3$Z -fi -if test -r Concat.3; then - rm -f Concat.3.* - $ZIP Concat.3 - rm -f Tcl_Concat.3 Tcl_Concat.3.* - ln $S Concat.3$Z Tcl_Concat.3$Z -fi -if test -r CrtChannel.3; then - rm -f CrtChannel.3.* - $ZIP CrtChannel.3 - rm -f Tcl_CreateChannel.3 Tcl_CreateChannel.3.* - rm -f Tcl_GetChannelInstanceData.3 Tcl_GetChannelInstanceData.3.* - rm -f Tcl_GetChannelType.3 Tcl_GetChannelType.3.* - rm -f Tcl_GetChannelName.3 Tcl_GetChannelName.3.* - rm -f Tcl_GetChannelHandle.3 Tcl_GetChannelHandle.3.* - rm -f Tcl_GetChannelMode.3 Tcl_GetChannelMode.3.* - rm -f Tcl_GetChannelBufferSize.3 Tcl_GetChannelBufferSize.3.* - rm -f Tcl_SetChannelBufferSize.3 Tcl_SetChannelBufferSize.3.* - rm -f Tcl_NotifyChannel.3 Tcl_NotifyChannel.3.* - rm -f Tcl_BadChannelOption.3 Tcl_BadChannelOption.3.* - rm -f Tcl_ChannelName.3 Tcl_ChannelName.3.* - rm -f Tcl_ChannelVersion.3 Tcl_ChannelVersion.3.* - rm -f Tcl_ChannelBlockModeProc.3 Tcl_ChannelBlockModeProc.3.* - rm -f Tcl_ChannelCloseProc.3 Tcl_ChannelCloseProc.3.* - rm -f Tcl_ChannelClose2Proc.3 Tcl_ChannelClose2Proc.3.* - rm -f Tcl_ChannelInputProc.3 Tcl_ChannelInputProc.3.* - rm -f Tcl_ChannelOutputProc.3 Tcl_ChannelOutputProc.3.* - rm -f Tcl_ChannelSeekProc.3 Tcl_ChannelSeekProc.3.* - rm -f Tcl_ChannelWideSeekProc.3 Tcl_ChannelWideSeekProc.3.* - rm -f Tcl_ChannelSetOptionProc.3 Tcl_ChannelSetOptionProc.3.* - rm -f Tcl_ChannelGetOptionProc.3 Tcl_ChannelGetOptionProc.3.* - rm -f Tcl_ChannelWatchProc.3 Tcl_ChannelWatchProc.3.* - rm -f Tcl_ChannelGetHandleProc.3 Tcl_ChannelGetHandleProc.3.* - rm -f Tcl_ChannelFlushProc.3 Tcl_ChannelFlushProc.3.* - rm -f Tcl_ChannelHandlerProc.3 Tcl_ChannelHandlerProc.3.* - rm -f Tcl_IsChannelShared.3 Tcl_IsChannelShared.3.* - rm -f Tcl_IsChannelRegistered.3 Tcl_IsChannelRegistered.3.* - rm -f Tcl_CutChannel.3 Tcl_CutChannel.3.* - rm -f Tcl_SpliceChannel.3 Tcl_SpliceChannel.3.* - rm -f Tcl_IsChannelExisting.3 Tcl_IsChannelExisting.3.* - rm -f Tcl_ClearChannelHandlers.3 Tcl_ClearChannelHandlers.3.* - rm -f Tcl_GetChannelThread.3 Tcl_GetChannelThread.3.* - rm -f Tcl_ChannelBuffered.3 Tcl_ChannelBuffered.3.* - ln $S CrtChannel.3$Z Tcl_CreateChannel.3$Z - ln $S CrtChannel.3$Z Tcl_GetChannelInstanceData.3$Z - ln $S CrtChannel.3$Z Tcl_GetChannelType.3$Z - ln $S CrtChannel.3$Z Tcl_GetChannelName.3$Z - ln $S CrtChannel.3$Z Tcl_GetChannelHandle.3$Z - ln $S CrtChannel.3$Z Tcl_GetChannelMode.3$Z - ln $S CrtChannel.3$Z Tcl_GetChannelBufferSize.3$Z - ln $S CrtChannel.3$Z Tcl_SetChannelBufferSize.3$Z - ln $S CrtChannel.3$Z Tcl_NotifyChannel.3$Z - ln $S CrtChannel.3$Z Tcl_BadChannelOption.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelName.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelVersion.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelBlockModeProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelCloseProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelClose2Proc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelInputProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelOutputProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelSeekProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelWideSeekProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelSetOptionProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelGetOptionProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelWatchProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelGetHandleProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelFlushProc.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelHandlerProc.3$Z - ln $S CrtChannel.3$Z Tcl_IsChannelShared.3$Z - ln $S CrtChannel.3$Z Tcl_IsChannelRegistered.3$Z - ln $S CrtChannel.3$Z Tcl_CutChannel.3$Z - ln $S CrtChannel.3$Z Tcl_SpliceChannel.3$Z - ln $S CrtChannel.3$Z Tcl_IsChannelExisting.3$Z - ln $S CrtChannel.3$Z Tcl_ClearChannelHandlers.3$Z - ln $S CrtChannel.3$Z Tcl_GetChannelThread.3$Z - ln $S CrtChannel.3$Z Tcl_ChannelBuffered.3$Z -fi -if test -r CrtChnlHdlr.3; then - rm -f CrtChnlHdlr.3.* - $ZIP CrtChnlHdlr.3 - rm -f Tcl_CreateChannelHandler.3 Tcl_CreateChannelHandler.3.* - rm -f Tcl_DeleteChannelHandler.3 Tcl_DeleteChannelHandler.3.* - ln $S CrtChnlHdlr.3$Z Tcl_CreateChannelHandler.3$Z - ln $S CrtChnlHdlr.3$Z Tcl_DeleteChannelHandler.3$Z -fi -if test -r CrtCloseHdlr.3; then - rm -f CrtCloseHdlr.3.* - $ZIP CrtCloseHdlr.3 - rm -f Tcl_CreateCloseHandler.3 Tcl_CreateCloseHandler.3.* - rm -f Tcl_DeleteCloseHandler.3 Tcl_DeleteCloseHandler.3.* - ln $S CrtCloseHdlr.3$Z Tcl_CreateCloseHandler.3$Z - ln $S CrtCloseHdlr.3$Z Tcl_DeleteCloseHandler.3$Z -fi -if test -r CrtCommand.3; then - rm -f CrtCommand.3.* - $ZIP CrtCommand.3 - rm -f Tcl_CreateCommand.3 Tcl_CreateCommand.3.* - ln $S CrtCommand.3$Z Tcl_CreateCommand.3$Z -fi -if test -r CrtFileHdlr.3; then - rm -f CrtFileHdlr.3.* - $ZIP CrtFileHdlr.3 - rm -f Tcl_CreateFileHandler.3 Tcl_CreateFileHandler.3.* - rm -f Tcl_DeleteFileHandler.3 Tcl_DeleteFileHandler.3.* - ln $S CrtFileHdlr.3$Z Tcl_CreateFileHandler.3$Z - ln $S CrtFileHdlr.3$Z Tcl_DeleteFileHandler.3$Z -fi -if test -r CrtInterp.3; then - rm -f CrtInterp.3.* - $ZIP CrtInterp.3 - rm -f Tcl_CreateInterp.3 Tcl_CreateInterp.3.* - rm -f Tcl_DeleteInterp.3 Tcl_DeleteInterp.3.* - rm -f Tcl_InterpDeleted.3 Tcl_InterpDeleted.3.* - ln $S CrtInterp.3$Z Tcl_CreateInterp.3$Z - ln $S CrtInterp.3$Z Tcl_DeleteInterp.3$Z - ln $S CrtInterp.3$Z Tcl_InterpDeleted.3$Z -fi -if test -r CrtMathFnc.3; then - rm -f CrtMathFnc.3.* - $ZIP CrtMathFnc.3 - rm -f Tcl_CreateMathFunc.3 Tcl_CreateMathFunc.3.* - rm -f Tcl_GetMathFuncInfo.3 Tcl_GetMathFuncInfo.3.* - rm -f Tcl_ListMathFuncs.3 Tcl_ListMathFuncs.3.* - ln $S CrtMathFnc.3$Z Tcl_CreateMathFunc.3$Z - ln $S CrtMathFnc.3$Z Tcl_GetMathFuncInfo.3$Z - ln $S CrtMathFnc.3$Z Tcl_ListMathFuncs.3$Z -fi -if test -r CrtObjCmd.3; then - rm -f CrtObjCmd.3.* - $ZIP CrtObjCmd.3 - rm -f Tcl_CreateObjCommand.3 Tcl_CreateObjCommand.3.* - rm -f Tcl_DeleteCommand.3 Tcl_DeleteCommand.3.* - rm -f Tcl_DeleteCommandFromToken.3 Tcl_DeleteCommandFromToken.3.* - rm -f Tcl_GetCommandInfo.3 Tcl_GetCommandInfo.3.* - rm -f Tcl_GetCommandInfoFromToken.3 Tcl_GetCommandInfoFromToken.3.* - rm -f Tcl_SetCommandInfo.3 Tcl_SetCommandInfo.3.* - rm -f Tcl_SetCommandInfoFromToken.3 Tcl_SetCommandInfoFromToken.3.* - rm -f Tcl_GetCommandName.3 Tcl_GetCommandName.3.* - rm -f Tcl_GetCommandFullName.3 Tcl_GetCommandFullName.3.* - rm -f Tcl_GetCommandFromObj.3 Tcl_GetCommandFromObj.3.* - ln $S CrtObjCmd.3$Z Tcl_CreateObjCommand.3$Z - ln $S CrtObjCmd.3$Z Tcl_DeleteCommand.3$Z - ln $S CrtObjCmd.3$Z Tcl_DeleteCommandFromToken.3$Z - ln $S CrtObjCmd.3$Z Tcl_GetCommandInfo.3$Z - ln $S CrtObjCmd.3$Z Tcl_GetCommandInfoFromToken.3$Z - ln $S CrtObjCmd.3$Z Tcl_SetCommandInfo.3$Z - ln $S CrtObjCmd.3$Z Tcl_SetCommandInfoFromToken.3$Z - ln $S CrtObjCmd.3$Z Tcl_GetCommandName.3$Z - ln $S CrtObjCmd.3$Z Tcl_GetCommandFullName.3$Z - ln $S CrtObjCmd.3$Z Tcl_GetCommandFromObj.3$Z -fi -if test -r CrtSlave.3; then - rm -f CrtSlave.3.* - $ZIP CrtSlave.3 - rm -f Tcl_IsSafe.3 Tcl_IsSafe.3.* - rm -f Tcl_MakeSafe.3 Tcl_MakeSafe.3.* - rm -f Tcl_CreateSlave.3 Tcl_CreateSlave.3.* - rm -f Tcl_GetSlave.3 Tcl_GetSlave.3.* - rm -f Tcl_GetMaster.3 Tcl_GetMaster.3.* - rm -f Tcl_GetInterpPath.3 Tcl_GetInterpPath.3.* - rm -f Tcl_CreateAlias.3 Tcl_CreateAlias.3.* - rm -f Tcl_CreateAliasObj.3 Tcl_CreateAliasObj.3.* - rm -f Tcl_GetAlias.3 Tcl_GetAlias.3.* - rm -f Tcl_GetAliasObj.3 Tcl_GetAliasObj.3.* - rm -f Tcl_ExposeCommand.3 Tcl_ExposeCommand.3.* - rm -f Tcl_HideCommand.3 Tcl_HideCommand.3.* - ln $S CrtSlave.3$Z Tcl_IsSafe.3$Z - ln $S CrtSlave.3$Z Tcl_MakeSafe.3$Z - ln $S CrtSlave.3$Z Tcl_CreateSlave.3$Z - ln $S CrtSlave.3$Z Tcl_GetSlave.3$Z - ln $S CrtSlave.3$Z Tcl_GetMaster.3$Z - ln $S CrtSlave.3$Z Tcl_GetInterpPath.3$Z - ln $S CrtSlave.3$Z Tcl_CreateAlias.3$Z - ln $S CrtSlave.3$Z Tcl_CreateAliasObj.3$Z - ln $S CrtSlave.3$Z Tcl_GetAlias.3$Z - ln $S CrtSlave.3$Z Tcl_GetAliasObj.3$Z - ln $S CrtSlave.3$Z Tcl_ExposeCommand.3$Z - ln $S CrtSlave.3$Z Tcl_HideCommand.3$Z -fi -if test -r CrtTimerHdlr.3; then - rm -f CrtTimerHdlr.3.* - $ZIP CrtTimerHdlr.3 - rm -f Tcl_CreateTimerHandler.3 Tcl_CreateTimerHandler.3.* - rm -f Tcl_DeleteTimerHandler.3 Tcl_DeleteTimerHandler.3.* - ln $S CrtTimerHdlr.3$Z Tcl_CreateTimerHandler.3$Z - ln $S CrtTimerHdlr.3$Z Tcl_DeleteTimerHandler.3$Z -fi -if test -r CrtTrace.3; then - rm -f CrtTrace.3.* - $ZIP CrtTrace.3 - rm -f Tcl_CreateTrace.3 Tcl_CreateTrace.3.* - rm -f Tcl_CreateObjTrace.3 Tcl_CreateObjTrace.3.* - rm -f Tcl_DeleteTrace.3 Tcl_DeleteTrace.3.* - ln $S CrtTrace.3$Z Tcl_CreateTrace.3$Z - ln $S CrtTrace.3$Z Tcl_CreateObjTrace.3$Z - ln $S CrtTrace.3$Z Tcl_DeleteTrace.3$Z -fi -if test -r DString.3; then - rm -f DString.3.* - $ZIP DString.3 - rm -f Tcl_DStringInit.3 Tcl_DStringInit.3.* - rm -f Tcl_DStringAppend.3 Tcl_DStringAppend.3.* - rm -f Tcl_DStringAppendElement.3 Tcl_DStringAppendElement.3.* - rm -f Tcl_DStringStartSublist.3 Tcl_DStringStartSublist.3.* - rm -f Tcl_DStringEndSublist.3 Tcl_DStringEndSublist.3.* - rm -f Tcl_DStringLength.3 Tcl_DStringLength.3.* - rm -f Tcl_DStringValue.3 Tcl_DStringValue.3.* - rm -f Tcl_DStringSetLength.3 Tcl_DStringSetLength.3.* - rm -f Tcl_DStringTrunc.3 Tcl_DStringTrunc.3.* - rm -f Tcl_DStringFree.3 Tcl_DStringFree.3.* - rm -f Tcl_DStringResult.3 Tcl_DStringResult.3.* - rm -f Tcl_DStringGetResult.3 Tcl_DStringGetResult.3.* - ln $S DString.3$Z Tcl_DStringInit.3$Z - ln $S DString.3$Z Tcl_DStringAppend.3$Z - ln $S DString.3$Z Tcl_DStringAppendElement.3$Z - ln $S DString.3$Z Tcl_DStringStartSublist.3$Z - ln $S DString.3$Z Tcl_DStringEndSublist.3$Z - ln $S DString.3$Z Tcl_DStringLength.3$Z - ln $S DString.3$Z Tcl_DStringValue.3$Z - ln $S DString.3$Z Tcl_DStringSetLength.3$Z - ln $S DString.3$Z Tcl_DStringTrunc.3$Z - ln $S DString.3$Z Tcl_DStringFree.3$Z - ln $S DString.3$Z Tcl_DStringResult.3$Z - ln $S DString.3$Z Tcl_DStringGetResult.3$Z -fi -if test -r DetachPids.3; then - rm -f DetachPids.3.* - $ZIP DetachPids.3 - rm -f Tcl_DetachPids.3 Tcl_DetachPids.3.* - rm -f Tcl_ReapDetachedProcs.3 Tcl_ReapDetachedProcs.3.* - rm -f Tcl_WaitPid.3 Tcl_WaitPid.3.* - ln $S DetachPids.3$Z Tcl_DetachPids.3$Z - ln $S DetachPids.3$Z Tcl_ReapDetachedProcs.3$Z - ln $S DetachPids.3$Z Tcl_WaitPid.3$Z -fi -if test -r DoOneEvent.3; then - rm -f DoOneEvent.3.* - $ZIP DoOneEvent.3 - rm -f Tcl_DoOneEvent.3 Tcl_DoOneEvent.3.* - ln $S DoOneEvent.3$Z Tcl_DoOneEvent.3$Z -fi -if test -r DoWhenIdle.3; then - rm -f DoWhenIdle.3.* - $ZIP DoWhenIdle.3 - rm -f Tcl_DoWhenIdle.3 Tcl_DoWhenIdle.3.* - rm -f Tcl_CancelIdleCall.3 Tcl_CancelIdleCall.3.* - ln $S DoWhenIdle.3$Z Tcl_DoWhenIdle.3$Z - ln $S DoWhenIdle.3$Z Tcl_CancelIdleCall.3$Z -fi -if test -r DoubleObj.3; then - rm -f DoubleObj.3.* - $ZIP DoubleObj.3 - rm -f Tcl_NewDoubleObj.3 Tcl_NewDoubleObj.3.* - rm -f Tcl_SetDoubleObj.3 Tcl_SetDoubleObj.3.* - rm -f Tcl_GetDoubleFromObj.3 Tcl_GetDoubleFromObj.3.* - ln $S DoubleObj.3$Z Tcl_NewDoubleObj.3$Z - ln $S DoubleObj.3$Z Tcl_SetDoubleObj.3$Z - ln $S DoubleObj.3$Z Tcl_GetDoubleFromObj.3$Z -fi -if test -r DumpActiveMemory.3; then - rm -f DumpActiveMemory.3.* - $ZIP DumpActiveMemory.3 - rm -f Tcl_DumpActiveMemory.3 Tcl_DumpActiveMemory.3.* - rm -f Tcl_InitMemory.3 Tcl_InitMemory.3.* - rm -f Tcl_ValidateAllMemory.3 Tcl_ValidateAllMemory.3.* - ln $S DumpActiveMemory.3$Z Tcl_DumpActiveMemory.3$Z - ln $S DumpActiveMemory.3$Z Tcl_InitMemory.3$Z - ln $S DumpActiveMemory.3$Z Tcl_ValidateAllMemory.3$Z -fi -if test -r Encoding.3; then - rm -f Encoding.3.* - $ZIP Encoding.3 - rm -f Tcl_GetEncoding.3 Tcl_GetEncoding.3.* - rm -f Tcl_FreeEncoding.3 Tcl_FreeEncoding.3.* - rm -f Tcl_ExternalToUtfDString.3 Tcl_ExternalToUtfDString.3.* - rm -f Tcl_ExternalToUtf.3 Tcl_ExternalToUtf.3.* - rm -f Tcl_UtfToExternalDString.3 Tcl_UtfToExternalDString.3.* - rm -f Tcl_UtfToExternal.3 Tcl_UtfToExternal.3.* - rm -f Tcl_WinTCharToUtf.3 Tcl_WinTCharToUtf.3.* - rm -f Tcl_WinUtfToTChar.3 Tcl_WinUtfToTChar.3.* - rm -f Tcl_GetEncodingName.3 Tcl_GetEncodingName.3.* - rm -f Tcl_SetSystemEncoding.3 Tcl_SetSystemEncoding.3.* - rm -f Tcl_GetEncodingNames.3 Tcl_GetEncodingNames.3.* - rm -f Tcl_CreateEncoding.3 Tcl_CreateEncoding.3.* - rm -f Tcl_GetDefaultEncodingDir.3 Tcl_GetDefaultEncodingDir.3.* - rm -f Tcl_SetDefaultEncodingDir.3 Tcl_SetDefaultEncodingDir.3.* - ln $S Encoding.3$Z Tcl_GetEncoding.3$Z - ln $S Encoding.3$Z Tcl_FreeEncoding.3$Z - ln $S Encoding.3$Z Tcl_ExternalToUtfDString.3$Z - ln $S Encoding.3$Z Tcl_ExternalToUtf.3$Z - ln $S Encoding.3$Z Tcl_UtfToExternalDString.3$Z - ln $S Encoding.3$Z Tcl_UtfToExternal.3$Z - ln $S Encoding.3$Z Tcl_WinTCharToUtf.3$Z - ln $S Encoding.3$Z Tcl_WinUtfToTChar.3$Z - ln $S Encoding.3$Z Tcl_GetEncodingName.3$Z - ln $S Encoding.3$Z Tcl_SetSystemEncoding.3$Z - ln $S Encoding.3$Z Tcl_GetEncodingNames.3$Z - ln $S Encoding.3$Z Tcl_CreateEncoding.3$Z - ln $S Encoding.3$Z Tcl_GetDefaultEncodingDir.3$Z - ln $S Encoding.3$Z Tcl_SetDefaultEncodingDir.3$Z -fi -if test -r Environment.3; then - rm -f Environment.3.* - $ZIP Environment.3 - rm -f Tcl_PutEnv.3 Tcl_PutEnv.3.* - ln $S Environment.3$Z Tcl_PutEnv.3$Z -fi -if test -r Eval.3; then - rm -f Eval.3.* - $ZIP Eval.3 - rm -f Tcl_EvalObjEx.3 Tcl_EvalObjEx.3.* - rm -f Tcl_EvalFile.3 Tcl_EvalFile.3.* - rm -f Tcl_EvalObjv.3 Tcl_EvalObjv.3.* - rm -f Tcl_Eval.3 Tcl_Eval.3.* - rm -f Tcl_EvalEx.3 Tcl_EvalEx.3.* - rm -f Tcl_GlobalEval.3 Tcl_GlobalEval.3.* - rm -f Tcl_GlobalEvalObj.3 Tcl_GlobalEvalObj.3.* - rm -f Tcl_VarEval.3 Tcl_VarEval.3.* - rm -f Tcl_VarEvalVA.3 Tcl_VarEvalVA.3.* - ln $S Eval.3$Z Tcl_EvalObjEx.3$Z - ln $S Eval.3$Z Tcl_EvalFile.3$Z - ln $S Eval.3$Z Tcl_EvalObjv.3$Z - ln $S Eval.3$Z Tcl_Eval.3$Z - ln $S Eval.3$Z Tcl_EvalEx.3$Z - ln $S Eval.3$Z Tcl_GlobalEval.3$Z - ln $S Eval.3$Z Tcl_GlobalEvalObj.3$Z - ln $S Eval.3$Z Tcl_VarEval.3$Z - ln $S Eval.3$Z Tcl_VarEvalVA.3$Z -fi -if test -r Exit.3; then - rm -f Exit.3.* - $ZIP Exit.3 - rm -f Tcl_Exit.3 Tcl_Exit.3.* - rm -f Tcl_Finalize.3 Tcl_Finalize.3.* - rm -f Tcl_CreateExitHandler.3 Tcl_CreateExitHandler.3.* - rm -f Tcl_DeleteExitHandler.3 Tcl_DeleteExitHandler.3.* - rm -f Tcl_ExitThread.3 Tcl_ExitThread.3.* - rm -f Tcl_FinalizeThread.3 Tcl_FinalizeThread.3.* - rm -f Tcl_CreateThreadExitHandler.3 Tcl_CreateThreadExitHandler.3.* - rm -f Tcl_DeleteThreadExitHandler.3 Tcl_DeleteThreadExitHandler.3.* - ln $S Exit.3$Z Tcl_Exit.3$Z - ln $S Exit.3$Z Tcl_Finalize.3$Z - ln $S Exit.3$Z Tcl_CreateExitHandler.3$Z - ln $S Exit.3$Z Tcl_DeleteExitHandler.3$Z - ln $S Exit.3$Z Tcl_ExitThread.3$Z - ln $S Exit.3$Z Tcl_FinalizeThread.3$Z - ln $S Exit.3$Z Tcl_CreateThreadExitHandler.3$Z - ln $S Exit.3$Z Tcl_DeleteThreadExitHandler.3$Z -fi -if test -r ExprLong.3; then - rm -f ExprLong.3.* - $ZIP ExprLong.3 - rm -f Tcl_ExprLong.3 Tcl_ExprLong.3.* - rm -f Tcl_ExprDouble.3 Tcl_ExprDouble.3.* - rm -f Tcl_ExprBoolean.3 Tcl_ExprBoolean.3.* - rm -f Tcl_ExprString.3 Tcl_ExprString.3.* - ln $S ExprLong.3$Z Tcl_ExprLong.3$Z - ln $S ExprLong.3$Z Tcl_ExprDouble.3$Z - ln $S ExprLong.3$Z Tcl_ExprBoolean.3$Z - ln $S ExprLong.3$Z Tcl_ExprString.3$Z -fi -if test -r ExprLongObj.3; then - rm -f ExprLongObj.3.* - $ZIP ExprLongObj.3 - rm -f Tcl_ExprLongObj.3 Tcl_ExprLongObj.3.* - rm -f Tcl_ExprDoubleObj.3 Tcl_ExprDoubleObj.3.* - rm -f Tcl_ExprBooleanObj.3 Tcl_ExprBooleanObj.3.* - rm -f Tcl_ExprObj.3 Tcl_ExprObj.3.* - ln $S ExprLongObj.3$Z Tcl_ExprLongObj.3$Z - ln $S ExprLongObj.3$Z Tcl_ExprDoubleObj.3$Z - ln $S ExprLongObj.3$Z Tcl_ExprBooleanObj.3$Z - ln $S ExprLongObj.3$Z Tcl_ExprObj.3$Z -fi -if test -r FileSystem.3; then - rm -f FileSystem.3.* - $ZIP FileSystem.3 - rm -f Tcl_FSRegister.3 Tcl_FSRegister.3.* - rm -f Tcl_FSUnregister.3 Tcl_FSUnregister.3.* - rm -f Tcl_FSData.3 Tcl_FSData.3.* - rm -f Tcl_FSMountsChanged.3 Tcl_FSMountsChanged.3.* - rm -f Tcl_FSGetFileSystemForPath.3 Tcl_FSGetFileSystemForPath.3.* - rm -f Tcl_FSGetPathType.3 Tcl_FSGetPathType.3.* - rm -f Tcl_FSCopyFile.3 Tcl_FSCopyFile.3.* - rm -f Tcl_FSCopyDirectory.3 Tcl_FSCopyDirectory.3.* - rm -f Tcl_FSCreateDirectory.3 Tcl_FSCreateDirectory.3.* - rm -f Tcl_FSDeleteFile.3 Tcl_FSDeleteFile.3.* - rm -f Tcl_FSRemoveDirectory.3 Tcl_FSRemoveDirectory.3.* - rm -f Tcl_FSRenameFile.3 Tcl_FSRenameFile.3.* - rm -f Tcl_FSListVolumes.3 Tcl_FSListVolumes.3.* - rm -f Tcl_FSEvalFile.3 Tcl_FSEvalFile.3.* - rm -f Tcl_FSLoadFile.3 Tcl_FSLoadFile.3.* - rm -f Tcl_FSMatchInDirectory.3 Tcl_FSMatchInDirectory.3.* - rm -f Tcl_FSLink.3 Tcl_FSLink.3.* - rm -f Tcl_FSLstat.3 Tcl_FSLstat.3.* - rm -f Tcl_FSUtime.3 Tcl_FSUtime.3.* - rm -f Tcl_FSFileAttrsGet.3 Tcl_FSFileAttrsGet.3.* - rm -f Tcl_FSFileAttrsSet.3 Tcl_FSFileAttrsSet.3.* - rm -f Tcl_FSFileAttrStrings.3 Tcl_FSFileAttrStrings.3.* - rm -f Tcl_FSStat.3 Tcl_FSStat.3.* - rm -f Tcl_FSAccess.3 Tcl_FSAccess.3.* - rm -f Tcl_FSOpenFileChannel.3 Tcl_FSOpenFileChannel.3.* - rm -f Tcl_FSGetCwd.3 Tcl_FSGetCwd.3.* - rm -f Tcl_FSChdir.3 Tcl_FSChdir.3.* - rm -f Tcl_FSPathSeparator.3 Tcl_FSPathSeparator.3.* - rm -f Tcl_FSJoinPath.3 Tcl_FSJoinPath.3.* - rm -f Tcl_FSSplitPath.3 Tcl_FSSplitPath.3.* - rm -f Tcl_FSEqualPaths.3 Tcl_FSEqualPaths.3.* - rm -f Tcl_FSGetNormalizedPath.3 Tcl_FSGetNormalizedPath.3.* - rm -f Tcl_FSJoinToPath.3 Tcl_FSJoinToPath.3.* - rm -f Tcl_FSConvertToPathType.3 Tcl_FSConvertToPathType.3.* - rm -f Tcl_FSGetInternalRep.3 Tcl_FSGetInternalRep.3.* - rm -f Tcl_FSGetTranslatedPath.3 Tcl_FSGetTranslatedPath.3.* - rm -f Tcl_FSGetTranslatedStringPath.3 Tcl_FSGetTranslatedStringPath.3.* - rm -f Tcl_FSNewNativePath.3 Tcl_FSNewNativePath.3.* - rm -f Tcl_FSGetNativePath.3 Tcl_FSGetNativePath.3.* - rm -f Tcl_FSFileSystemInfo.3 Tcl_FSFileSystemInfo.3.* - rm -f Tcl_AllocStatBuf.3 Tcl_AllocStatBuf.3.* - ln $S FileSystem.3$Z Tcl_FSRegister.3$Z - ln $S FileSystem.3$Z Tcl_FSUnregister.3$Z - ln $S FileSystem.3$Z Tcl_FSData.3$Z - ln $S FileSystem.3$Z Tcl_FSMountsChanged.3$Z - ln $S FileSystem.3$Z Tcl_FSGetFileSystemForPath.3$Z - ln $S FileSystem.3$Z Tcl_FSGetPathType.3$Z - ln $S FileSystem.3$Z Tcl_FSCopyFile.3$Z - ln $S FileSystem.3$Z Tcl_FSCopyDirectory.3$Z - ln $S FileSystem.3$Z Tcl_FSCreateDirectory.3$Z - ln $S FileSystem.3$Z Tcl_FSDeleteFile.3$Z - ln $S FileSystem.3$Z Tcl_FSRemoveDirectory.3$Z - ln $S FileSystem.3$Z Tcl_FSRenameFile.3$Z - ln $S FileSystem.3$Z Tcl_FSListVolumes.3$Z - ln $S FileSystem.3$Z Tcl_FSEvalFile.3$Z - ln $S FileSystem.3$Z Tcl_FSLoadFile.3$Z - ln $S FileSystem.3$Z Tcl_FSMatchInDirectory.3$Z - ln $S FileSystem.3$Z Tcl_FSLink.3$Z - ln $S FileSystem.3$Z Tcl_FSLstat.3$Z - ln $S FileSystem.3$Z Tcl_FSUtime.3$Z - ln $S FileSystem.3$Z Tcl_FSFileAttrsGet.3$Z - ln $S FileSystem.3$Z Tcl_FSFileAttrsSet.3$Z - ln $S FileSystem.3$Z Tcl_FSFileAttrStrings.3$Z - ln $S FileSystem.3$Z Tcl_FSStat.3$Z - ln $S FileSystem.3$Z Tcl_FSAccess.3$Z - ln $S FileSystem.3$Z Tcl_FSOpenFileChannel.3$Z - ln $S FileSystem.3$Z Tcl_FSGetCwd.3$Z - ln $S FileSystem.3$Z Tcl_FSChdir.3$Z - ln $S FileSystem.3$Z Tcl_FSPathSeparator.3$Z - ln $S FileSystem.3$Z Tcl_FSJoinPath.3$Z - ln $S FileSystem.3$Z Tcl_FSSplitPath.3$Z - ln $S FileSystem.3$Z Tcl_FSEqualPaths.3$Z - ln $S FileSystem.3$Z Tcl_FSGetNormalizedPath.3$Z - ln $S FileSystem.3$Z Tcl_FSJoinToPath.3$Z - ln $S FileSystem.3$Z Tcl_FSConvertToPathType.3$Z - ln $S FileSystem.3$Z Tcl_FSGetInternalRep.3$Z - ln $S FileSystem.3$Z Tcl_FSGetTranslatedPath.3$Z - ln $S FileSystem.3$Z Tcl_FSGetTranslatedStringPath.3$Z - ln $S FileSystem.3$Z Tcl_FSNewNativePath.3$Z - ln $S FileSystem.3$Z Tcl_FSGetNativePath.3$Z - ln $S FileSystem.3$Z Tcl_FSFileSystemInfo.3$Z - ln $S FileSystem.3$Z Tcl_AllocStatBuf.3$Z -fi -if test -r FindExec.3; then - rm -f FindExec.3.* - $ZIP FindExec.3 - rm -f Tcl_FindExecutable.3 Tcl_FindExecutable.3.* - rm -f Tcl_GetNameOfExecutable.3 Tcl_GetNameOfExecutable.3.* - ln $S FindExec.3$Z Tcl_FindExecutable.3$Z - ln $S FindExec.3$Z Tcl_GetNameOfExecutable.3$Z -fi -if test -r GetCwd.3; then - rm -f GetCwd.3.* - $ZIP GetCwd.3 - rm -f Tcl_GetCwd.3 Tcl_GetCwd.3.* - rm -f Tcl_Chdir.3 Tcl_Chdir.3.* - ln $S GetCwd.3$Z Tcl_GetCwd.3$Z - ln $S GetCwd.3$Z Tcl_Chdir.3$Z -fi -if test -r GetHostName.3; then - rm -f GetHostName.3.* - $ZIP GetHostName.3 - rm -f Tcl_GetHostName.3 Tcl_GetHostName.3.* - ln $S GetHostName.3$Z Tcl_GetHostName.3$Z -fi -if test -r GetIndex.3; then - rm -f GetIndex.3.* - $ZIP GetIndex.3 - rm -f Tcl_GetIndexFromObj.3 Tcl_GetIndexFromObj.3.* - rm -f Tcl_GetIndexFromObjStruct.3 Tcl_GetIndexFromObjStruct.3.* - ln $S GetIndex.3$Z Tcl_GetIndexFromObj.3$Z - ln $S GetIndex.3$Z Tcl_GetIndexFromObjStruct.3$Z -fi -if test -r GetInt.3; then - rm -f GetInt.3.* - $ZIP GetInt.3 - rm -f Tcl_GetInt.3 Tcl_GetInt.3.* - rm -f Tcl_GetDouble.3 Tcl_GetDouble.3.* - rm -f Tcl_GetBoolean.3 Tcl_GetBoolean.3.* - ln $S GetInt.3$Z Tcl_GetInt.3$Z - ln $S GetInt.3$Z Tcl_GetDouble.3$Z - ln $S GetInt.3$Z Tcl_GetBoolean.3$Z -fi -if test -r GetOpnFl.3; then - rm -f GetOpnFl.3.* - $ZIP GetOpnFl.3 - rm -f Tcl_GetOpenFile.3 Tcl_GetOpenFile.3.* - ln $S GetOpnFl.3$Z Tcl_GetOpenFile.3$Z -fi -if test -r GetStdChan.3; then - rm -f GetStdChan.3.* - $ZIP GetStdChan.3 - rm -f Tcl_GetStdChannel.3 Tcl_GetStdChannel.3.* - rm -f Tcl_SetStdChannel.3 Tcl_SetStdChannel.3.* - ln $S GetStdChan.3$Z Tcl_GetStdChannel.3$Z - ln $S GetStdChan.3$Z Tcl_SetStdChannel.3$Z -fi -if test -r GetTime.3; then - rm -f GetTime.3.* - $ZIP GetTime.3 - rm -f Tcl_GetTime.3 Tcl_GetTime.3.* - ln $S GetTime.3$Z Tcl_GetTime.3$Z -fi -if test -r GetVersion.3; then - rm -f GetVersion.3.* - $ZIP GetVersion.3 - rm -f Tcl_GetVersion.3 Tcl_GetVersion.3.* - ln $S GetVersion.3$Z Tcl_GetVersion.3$Z -fi -if test -r Hash.3; then - rm -f Hash.3.* - $ZIP Hash.3 - rm -f Tcl_InitHashTable.3 Tcl_InitHashTable.3.* - rm -f Tcl_InitCustomHashTable.3 Tcl_InitCustomHashTable.3.* - rm -f Tcl_InitObjHashTable.3 Tcl_InitObjHashTable.3.* - rm -f Tcl_DeleteHashTable.3 Tcl_DeleteHashTable.3.* - rm -f Tcl_CreateHashEntry.3 Tcl_CreateHashEntry.3.* - rm -f Tcl_DeleteHashEntry.3 Tcl_DeleteHashEntry.3.* - rm -f Tcl_FindHashEntry.3 Tcl_FindHashEntry.3.* - rm -f Tcl_GetHashValue.3 Tcl_GetHashValue.3.* - rm -f Tcl_SetHashValue.3 Tcl_SetHashValue.3.* - rm -f Tcl_GetHashKey.3 Tcl_GetHashKey.3.* - rm -f Tcl_FirstHashEntry.3 Tcl_FirstHashEntry.3.* - rm -f Tcl_NextHashEntry.3 Tcl_NextHashEntry.3.* - rm -f Tcl_HashStats.3 Tcl_HashStats.3.* - ln $S Hash.3$Z Tcl_InitHashTable.3$Z - ln $S Hash.3$Z Tcl_InitCustomHashTable.3$Z - ln $S Hash.3$Z Tcl_InitObjHashTable.3$Z - ln $S Hash.3$Z Tcl_DeleteHashTable.3$Z - ln $S Hash.3$Z Tcl_CreateHashEntry.3$Z - ln $S Hash.3$Z Tcl_DeleteHashEntry.3$Z - ln $S Hash.3$Z Tcl_FindHashEntry.3$Z - ln $S Hash.3$Z Tcl_GetHashValue.3$Z - ln $S Hash.3$Z Tcl_SetHashValue.3$Z - ln $S Hash.3$Z Tcl_GetHashKey.3$Z - ln $S Hash.3$Z Tcl_FirstHashEntry.3$Z - ln $S Hash.3$Z Tcl_NextHashEntry.3$Z - ln $S Hash.3$Z Tcl_HashStats.3$Z -fi -if test -r Init.3; then - rm -f Init.3.* - $ZIP Init.3 - rm -f Tcl_Init.3 Tcl_Init.3.* - ln $S Init.3$Z Tcl_Init.3$Z -fi -if test -r InitStubs.3; then - rm -f InitStubs.3.* - $ZIP InitStubs.3 - rm -f Tcl_InitStubs.3 Tcl_InitStubs.3.* - ln $S InitStubs.3$Z Tcl_InitStubs.3$Z -fi -if test -r IntObj.3; then - rm -f IntObj.3.* - $ZIP IntObj.3 - rm -f Tcl_NewIntObj.3 Tcl_NewIntObj.3.* - rm -f Tcl_NewLongObj.3 Tcl_NewLongObj.3.* - rm -f Tcl_NewWideIntObj.3 Tcl_NewWideIntObj.3.* - rm -f Tcl_SetIntObj.3 Tcl_SetIntObj.3.* - rm -f Tcl_SetLongObj.3 Tcl_SetLongObj.3.* - rm -f Tcl_SetWideIntObj.3 Tcl_SetWideIntObj.3.* - rm -f Tcl_GetIntFromObj.3 Tcl_GetIntFromObj.3.* - rm -f Tcl_GetLongFromObj.3 Tcl_GetLongFromObj.3.* - rm -f Tcl_GetWideIntFromObj.3 Tcl_GetWideIntFromObj.3.* - ln $S IntObj.3$Z Tcl_NewIntObj.3$Z - ln $S IntObj.3$Z Tcl_NewLongObj.3$Z - ln $S IntObj.3$Z Tcl_NewWideIntObj.3$Z - ln $S IntObj.3$Z Tcl_SetIntObj.3$Z - ln $S IntObj.3$Z Tcl_SetLongObj.3$Z - ln $S IntObj.3$Z Tcl_SetWideIntObj.3$Z - ln $S IntObj.3$Z Tcl_GetIntFromObj.3$Z - ln $S IntObj.3$Z Tcl_GetLongFromObj.3$Z - ln $S IntObj.3$Z Tcl_GetWideIntFromObj.3$Z -fi -if test -r Interp.3; then - rm -f Interp.3.* - $ZIP Interp.3 - rm -f Tcl_Interp.3 Tcl_Interp.3.* - ln $S Interp.3$Z Tcl_Interp.3$Z -fi -if test -r LinkVar.3; then - rm -f LinkVar.3.* - $ZIP LinkVar.3 - rm -f Tcl_LinkVar.3 Tcl_LinkVar.3.* - rm -f Tcl_UnlinkVar.3 Tcl_UnlinkVar.3.* - rm -f Tcl_UpdateLinkedVar.3 Tcl_UpdateLinkedVar.3.* - ln $S LinkVar.3$Z Tcl_LinkVar.3$Z - ln $S LinkVar.3$Z Tcl_UnlinkVar.3$Z - ln $S LinkVar.3$Z Tcl_UpdateLinkedVar.3$Z -fi -if test -r ListObj.3; then - rm -f ListObj.3.* - $ZIP ListObj.3 - rm -f Tcl_ListObjAppendList.3 Tcl_ListObjAppendList.3.* - rm -f Tcl_ListObjAppendElement.3 Tcl_ListObjAppendElement.3.* - rm -f Tcl_NewListObj.3 Tcl_NewListObj.3.* - rm -f Tcl_SetListObj.3 Tcl_SetListObj.3.* - rm -f Tcl_ListObjGetElements.3 Tcl_ListObjGetElements.3.* - rm -f Tcl_ListObjLength.3 Tcl_ListObjLength.3.* - rm -f Tcl_ListObjIndex.3 Tcl_ListObjIndex.3.* - rm -f Tcl_ListObjReplace.3 Tcl_ListObjReplace.3.* - ln $S ListObj.3$Z Tcl_ListObjAppendList.3$Z - ln $S ListObj.3$Z Tcl_ListObjAppendElement.3$Z - ln $S ListObj.3$Z Tcl_NewListObj.3$Z - ln $S ListObj.3$Z Tcl_SetListObj.3$Z - ln $S ListObj.3$Z Tcl_ListObjGetElements.3$Z - ln $S ListObj.3$Z Tcl_ListObjLength.3$Z - ln $S ListObj.3$Z Tcl_ListObjIndex.3$Z - ln $S ListObj.3$Z Tcl_ListObjReplace.3$Z -fi -if test -r Macintosh.3; then - rm -f Macintosh.3.* - $ZIP Macintosh.3 - rm -f Tcl_MacSetEventProc.3 Tcl_MacSetEventProc.3.* - rm -f Tcl_MacConvertTextResource.3 Tcl_MacConvertTextResource.3.* - rm -f Tcl_MacEvalResource.3 Tcl_MacEvalResource.3.* - rm -f Tcl_MacFindResource.3 Tcl_MacFindResource.3.* - rm -f Tcl_GetOSTypeFromObj.3 Tcl_GetOSTypeFromObj.3.* - rm -f Tcl_SetOSTypeObj.3 Tcl_SetOSTypeObj.3.* - rm -f Tcl_NewOSTypeObj.3 Tcl_NewOSTypeObj.3.* - ln $S Macintosh.3$Z Tcl_MacSetEventProc.3$Z - ln $S Macintosh.3$Z Tcl_MacConvertTextResource.3$Z - ln $S Macintosh.3$Z Tcl_MacEvalResource.3$Z - ln $S Macintosh.3$Z Tcl_MacFindResource.3$Z - ln $S Macintosh.3$Z Tcl_GetOSTypeFromObj.3$Z - ln $S Macintosh.3$Z Tcl_SetOSTypeObj.3$Z - ln $S Macintosh.3$Z Tcl_NewOSTypeObj.3$Z -fi -if test -r Notifier.3; then - rm -f Notifier.3.* - $ZIP Notifier.3 - rm -f Tcl_CreateEventSource.3 Tcl_CreateEventSource.3.* - rm -f Tcl_DeleteEventSource.3 Tcl_DeleteEventSource.3.* - rm -f Tcl_SetMaxBlockTime.3 Tcl_SetMaxBlockTime.3.* - rm -f Tcl_QueueEvent.3 Tcl_QueueEvent.3.* - rm -f Tcl_ThreadQueueEvent.3 Tcl_ThreadQueueEvent.3.* - rm -f Tcl_ThreadAlert.3 Tcl_ThreadAlert.3.* - rm -f Tcl_GetCurrentThread.3 Tcl_GetCurrentThread.3.* - rm -f Tcl_DeleteEvents.3 Tcl_DeleteEvents.3.* - rm -f Tcl_InitNotifier.3 Tcl_InitNotifier.3.* - rm -f Tcl_FinalizeNotifier.3 Tcl_FinalizeNotifier.3.* - rm -f Tcl_WaitForEvent.3 Tcl_WaitForEvent.3.* - rm -f Tcl_AlertNotifier.3 Tcl_AlertNotifier.3.* - rm -f Tcl_SetTimer.3 Tcl_SetTimer.3.* - rm -f Tcl_ServiceAll.3 Tcl_ServiceAll.3.* - rm -f Tcl_ServiceEvent.3 Tcl_ServiceEvent.3.* - rm -f Tcl_GetServiceMode.3 Tcl_GetServiceMode.3.* - rm -f Tcl_SetServiceMode.3 Tcl_SetServiceMode.3.* - ln $S Notifier.3$Z Tcl_CreateEventSource.3$Z - ln $S Notifier.3$Z Tcl_DeleteEventSource.3$Z - ln $S Notifier.3$Z Tcl_SetMaxBlockTime.3$Z - ln $S Notifier.3$Z Tcl_QueueEvent.3$Z - ln $S Notifier.3$Z Tcl_ThreadQueueEvent.3$Z - ln $S Notifier.3$Z Tcl_ThreadAlert.3$Z - ln $S Notifier.3$Z Tcl_GetCurrentThread.3$Z - ln $S Notifier.3$Z Tcl_DeleteEvents.3$Z - ln $S Notifier.3$Z Tcl_InitNotifier.3$Z - ln $S Notifier.3$Z Tcl_FinalizeNotifier.3$Z - ln $S Notifier.3$Z Tcl_WaitForEvent.3$Z - ln $S Notifier.3$Z Tcl_AlertNotifier.3$Z - ln $S Notifier.3$Z Tcl_SetTimer.3$Z - ln $S Notifier.3$Z Tcl_ServiceAll.3$Z - ln $S Notifier.3$Z Tcl_ServiceEvent.3$Z - ln $S Notifier.3$Z Tcl_GetServiceMode.3$Z - ln $S Notifier.3$Z Tcl_SetServiceMode.3$Z -fi -if test -r Object.3; then - rm -f Object.3.* - $ZIP Object.3 - rm -f Tcl_NewObj.3 Tcl_NewObj.3.* - rm -f Tcl_DuplicateObj.3 Tcl_DuplicateObj.3.* - rm -f Tcl_IncrRefCount.3 Tcl_IncrRefCount.3.* - rm -f Tcl_DecrRefCount.3 Tcl_DecrRefCount.3.* - rm -f Tcl_IsShared.3 Tcl_IsShared.3.* - rm -f Tcl_InvalidateStringRep.3 Tcl_InvalidateStringRep.3.* - ln $S Object.3$Z Tcl_NewObj.3$Z - ln $S Object.3$Z Tcl_DuplicateObj.3$Z - ln $S Object.3$Z Tcl_IncrRefCount.3$Z - ln $S Object.3$Z Tcl_DecrRefCount.3$Z - ln $S Object.3$Z Tcl_IsShared.3$Z - ln $S Object.3$Z Tcl_InvalidateStringRep.3$Z -fi -if test -r ObjectType.3; then - rm -f ObjectType.3.* - $ZIP ObjectType.3 - rm -f Tcl_RegisterObjType.3 Tcl_RegisterObjType.3.* - rm -f Tcl_GetObjType.3 Tcl_GetObjType.3.* - rm -f Tcl_AppendAllObjTypes.3 Tcl_AppendAllObjTypes.3.* - rm -f Tcl_ConvertToType.3 Tcl_ConvertToType.3.* - ln $S ObjectType.3$Z Tcl_RegisterObjType.3$Z - ln $S ObjectType.3$Z Tcl_GetObjType.3$Z - ln $S ObjectType.3$Z Tcl_AppendAllObjTypes.3$Z - ln $S ObjectType.3$Z Tcl_ConvertToType.3$Z -fi -if test -r OpenFileChnl.3; then - rm -f OpenFileChnl.3.* - $ZIP OpenFileChnl.3 - rm -f Tcl_OpenFileChannel.3 Tcl_OpenFileChannel.3.* - rm -f Tcl_OpenCommandChannel.3 Tcl_OpenCommandChannel.3.* - rm -f Tcl_MakeFileChannel.3 Tcl_MakeFileChannel.3.* - rm -f Tcl_GetChannel.3 Tcl_GetChannel.3.* - rm -f Tcl_GetChannelNames.3 Tcl_GetChannelNames.3.* - rm -f Tcl_GetChannelNamesEx.3 Tcl_GetChannelNamesEx.3.* - rm -f Tcl_RegisterChannel.3 Tcl_RegisterChannel.3.* - rm -f Tcl_UnregisterChannel.3 Tcl_UnregisterChannel.3.* - rm -f Tcl_DetachChannel.3 Tcl_DetachChannel.3.* - rm -f Tcl_IsStandardChannel.3 Tcl_IsStandardChannel.3.* - rm -f Tcl_Close.3 Tcl_Close.3.* - rm -f Tcl_ReadChars.3 Tcl_ReadChars.3.* - rm -f Tcl_Read.3 Tcl_Read.3.* - rm -f Tcl_GetsObj.3 Tcl_GetsObj.3.* - rm -f Tcl_Gets.3 Tcl_Gets.3.* - rm -f Tcl_WriteObj.3 Tcl_WriteObj.3.* - rm -f Tcl_WriteChars.3 Tcl_WriteChars.3.* - rm -f Tcl_Write.3 Tcl_Write.3.* - rm -f Tcl_Flush.3 Tcl_Flush.3.* - rm -f Tcl_Seek.3 Tcl_Seek.3.* - rm -f Tcl_Tell.3 Tcl_Tell.3.* - rm -f Tcl_GetChannelOption.3 Tcl_GetChannelOption.3.* - rm -f Tcl_SetChannelOption.3 Tcl_SetChannelOption.3.* - rm -f Tcl_Eof.3 Tcl_Eof.3.* - rm -f Tcl_InputBlocked.3 Tcl_InputBlocked.3.* - rm -f Tcl_InputBuffered.3 Tcl_InputBuffered.3.* - rm -f Tcl_OutputBuffered.3 Tcl_OutputBuffered.3.* - rm -f Tcl_Ungets.3 Tcl_Ungets.3.* - rm -f Tcl_ReadRaw.3 Tcl_ReadRaw.3.* - rm -f Tcl_WriteRaw.3 Tcl_WriteRaw.3.* - ln $S OpenFileChnl.3$Z Tcl_OpenFileChannel.3$Z - ln $S OpenFileChnl.3$Z Tcl_OpenCommandChannel.3$Z - ln $S OpenFileChnl.3$Z Tcl_MakeFileChannel.3$Z - ln $S OpenFileChnl.3$Z Tcl_GetChannel.3$Z - ln $S OpenFileChnl.3$Z Tcl_GetChannelNames.3$Z - ln $S OpenFileChnl.3$Z Tcl_GetChannelNamesEx.3$Z - ln $S OpenFileChnl.3$Z Tcl_RegisterChannel.3$Z - ln $S OpenFileChnl.3$Z Tcl_UnregisterChannel.3$Z - ln $S OpenFileChnl.3$Z Tcl_DetachChannel.3$Z - ln $S OpenFileChnl.3$Z Tcl_IsStandardChannel.3$Z - ln $S OpenFileChnl.3$Z Tcl_Close.3$Z - ln $S OpenFileChnl.3$Z Tcl_ReadChars.3$Z - ln $S OpenFileChnl.3$Z Tcl_Read.3$Z - ln $S OpenFileChnl.3$Z Tcl_GetsObj.3$Z - ln $S OpenFileChnl.3$Z Tcl_Gets.3$Z - ln $S OpenFileChnl.3$Z Tcl_WriteObj.3$Z - ln $S OpenFileChnl.3$Z Tcl_WriteChars.3$Z - ln $S OpenFileChnl.3$Z Tcl_Write.3$Z - ln $S OpenFileChnl.3$Z Tcl_Flush.3$Z - ln $S OpenFileChnl.3$Z Tcl_Seek.3$Z - ln $S OpenFileChnl.3$Z Tcl_Tell.3$Z - ln $S OpenFileChnl.3$Z Tcl_GetChannelOption.3$Z - ln $S OpenFileChnl.3$Z Tcl_SetChannelOption.3$Z - ln $S OpenFileChnl.3$Z Tcl_Eof.3$Z - ln $S OpenFileChnl.3$Z Tcl_InputBlocked.3$Z - ln $S OpenFileChnl.3$Z Tcl_InputBuffered.3$Z - ln $S OpenFileChnl.3$Z Tcl_OutputBuffered.3$Z - ln $S OpenFileChnl.3$Z Tcl_Ungets.3$Z - ln $S OpenFileChnl.3$Z Tcl_ReadRaw.3$Z - ln $S OpenFileChnl.3$Z Tcl_WriteRaw.3$Z -fi -if test -r OpenTcp.3; then - rm -f OpenTcp.3.* - $ZIP OpenTcp.3 - rm -f Tcl_OpenTcpClient.3 Tcl_OpenTcpClient.3.* - rm -f Tcl_MakeTcpClientChannel.3 Tcl_MakeTcpClientChannel.3.* - rm -f Tcl_OpenTcpServer.3 Tcl_OpenTcpServer.3.* - ln $S OpenTcp.3$Z Tcl_OpenTcpClient.3$Z - ln $S OpenTcp.3$Z Tcl_MakeTcpClientChannel.3$Z - ln $S OpenTcp.3$Z Tcl_OpenTcpServer.3$Z -fi -if test -r Panic.3; then - rm -f Panic.3.* - $ZIP Panic.3 - rm -f Tcl_Panic.3 Tcl_Panic.3.* - rm -f Tcl_PanicVA.3 Tcl_PanicVA.3.* - rm -f Tcl_SetPanicProc.3 Tcl_SetPanicProc.3.* - if test "${CASEINSENSITIVEFS:-}" != "1"; then rm -f panic.3 panic.3.* ; fi - rm -f panicVA.3 panicVA.3.* - ln $S Panic.3$Z Tcl_Panic.3$Z - ln $S Panic.3$Z Tcl_PanicVA.3$Z - ln $S Panic.3$Z Tcl_SetPanicProc.3$Z - if test "${CASEINSENSITIVEFS:-}" != "1"; then ln $S Panic.3$Z panic.3$Z ; fi - ln $S Panic.3$Z panicVA.3$Z -fi -if test -r ParseCmd.3; then - rm -f ParseCmd.3.* - $ZIP ParseCmd.3 - rm -f Tcl_ParseCommand.3 Tcl_ParseCommand.3.* - rm -f Tcl_ParseExpr.3 Tcl_ParseExpr.3.* - rm -f Tcl_ParseBraces.3 Tcl_ParseBraces.3.* - rm -f Tcl_ParseQuotedString.3 Tcl_ParseQuotedString.3.* - rm -f Tcl_ParseVarName.3 Tcl_ParseVarName.3.* - rm -f Tcl_ParseVar.3 Tcl_ParseVar.3.* - rm -f Tcl_FreeParse.3 Tcl_FreeParse.3.* - rm -f Tcl_EvalTokens.3 Tcl_EvalTokens.3.* - rm -f Tcl_EvalTokensStandard.3 Tcl_EvalTokensStandard.3.* - ln $S ParseCmd.3$Z Tcl_ParseCommand.3$Z - ln $S ParseCmd.3$Z Tcl_ParseExpr.3$Z - ln $S ParseCmd.3$Z Tcl_ParseBraces.3$Z - ln $S ParseCmd.3$Z Tcl_ParseQuotedString.3$Z - ln $S ParseCmd.3$Z Tcl_ParseVarName.3$Z - ln $S ParseCmd.3$Z Tcl_ParseVar.3$Z - ln $S ParseCmd.3$Z Tcl_FreeParse.3$Z - ln $S ParseCmd.3$Z Tcl_EvalTokens.3$Z - ln $S ParseCmd.3$Z Tcl_EvalTokensStandard.3$Z -fi -if test -r PkgRequire.3; then - rm -f PkgRequire.3.* - $ZIP PkgRequire.3 - rm -f Tcl_PkgRequire.3 Tcl_PkgRequire.3.* - rm -f Tcl_PkgRequireEx.3 Tcl_PkgRequireEx.3.* - rm -f Tcl_PkgPresent.3 Tcl_PkgPresent.3.* - rm -f Tcl_PkgPresentEx.3 Tcl_PkgPresentEx.3.* - rm -f Tcl_PkgProvide.3 Tcl_PkgProvide.3.* - rm -f Tcl_PkgProvideEx.3 Tcl_PkgProvideEx.3.* - ln $S PkgRequire.3$Z Tcl_PkgRequire.3$Z - ln $S PkgRequire.3$Z Tcl_PkgRequireEx.3$Z - ln $S PkgRequire.3$Z Tcl_PkgPresent.3$Z - ln $S PkgRequire.3$Z Tcl_PkgPresentEx.3$Z - ln $S PkgRequire.3$Z Tcl_PkgProvide.3$Z - ln $S PkgRequire.3$Z Tcl_PkgProvideEx.3$Z -fi -if test -r Preserve.3; then - rm -f Preserve.3.* - $ZIP Preserve.3 - rm -f Tcl_Preserve.3 Tcl_Preserve.3.* - rm -f Tcl_Release.3 Tcl_Release.3.* - rm -f Tcl_EventuallyFree.3 Tcl_EventuallyFree.3.* - ln $S Preserve.3$Z Tcl_Preserve.3$Z - ln $S Preserve.3$Z Tcl_Release.3$Z - ln $S Preserve.3$Z Tcl_EventuallyFree.3$Z -fi -if test -r PrintDbl.3; then - rm -f PrintDbl.3.* - $ZIP PrintDbl.3 - rm -f Tcl_PrintDouble.3 Tcl_PrintDouble.3.* - ln $S PrintDbl.3$Z Tcl_PrintDouble.3$Z -fi -if test -r RecEvalObj.3; then - rm -f RecEvalObj.3.* - $ZIP RecEvalObj.3 - rm -f Tcl_RecordAndEvalObj.3 Tcl_RecordAndEvalObj.3.* - ln $S RecEvalObj.3$Z Tcl_RecordAndEvalObj.3$Z -fi -if test -r RecordEval.3; then - rm -f RecordEval.3.* - $ZIP RecordEval.3 - rm -f Tcl_RecordAndEval.3 Tcl_RecordAndEval.3.* - ln $S RecordEval.3$Z Tcl_RecordAndEval.3$Z -fi -if test -r RegExp.3; then - rm -f RegExp.3.* - $ZIP RegExp.3 - rm -f Tcl_RegExpMatch.3 Tcl_RegExpMatch.3.* - rm -f Tcl_RegExpCompile.3 Tcl_RegExpCompile.3.* - rm -f Tcl_RegExpExec.3 Tcl_RegExpExec.3.* - rm -f Tcl_RegExpRange.3 Tcl_RegExpRange.3.* - rm -f Tcl_GetRegExpFromObj.3 Tcl_GetRegExpFromObj.3.* - rm -f Tcl_RegExpMatchObj.3 Tcl_RegExpMatchObj.3.* - rm -f Tcl_RegExpExecObj.3 Tcl_RegExpExecObj.3.* - rm -f Tcl_RegExpGetInfo.3 Tcl_RegExpGetInfo.3.* - ln $S RegExp.3$Z Tcl_RegExpMatch.3$Z - ln $S RegExp.3$Z Tcl_RegExpCompile.3$Z - ln $S RegExp.3$Z Tcl_RegExpExec.3$Z - ln $S RegExp.3$Z Tcl_RegExpRange.3$Z - ln $S RegExp.3$Z Tcl_GetRegExpFromObj.3$Z - ln $S RegExp.3$Z Tcl_RegExpMatchObj.3$Z - ln $S RegExp.3$Z Tcl_RegExpExecObj.3$Z - ln $S RegExp.3$Z Tcl_RegExpGetInfo.3$Z -fi -if test -r SaveResult.3; then - rm -f SaveResult.3.* - $ZIP SaveResult.3 - rm -f Tcl_SaveResult.3 Tcl_SaveResult.3.* - rm -f Tcl_RestoreResult.3 Tcl_RestoreResult.3.* - rm -f Tcl_DiscardResult.3 Tcl_DiscardResult.3.* - ln $S SaveResult.3$Z Tcl_SaveResult.3$Z - ln $S SaveResult.3$Z Tcl_RestoreResult.3$Z - ln $S SaveResult.3$Z Tcl_DiscardResult.3$Z -fi -if test -r SetErrno.3; then - rm -f SetErrno.3.* - $ZIP SetErrno.3 - rm -f Tcl_SetErrno.3 Tcl_SetErrno.3.* - rm -f Tcl_GetErrno.3 Tcl_GetErrno.3.* - rm -f Tcl_ErrnoId.3 Tcl_ErrnoId.3.* - rm -f Tcl_ErrnoMsg.3 Tcl_ErrnoMsg.3.* - ln $S SetErrno.3$Z Tcl_SetErrno.3$Z - ln $S SetErrno.3$Z Tcl_GetErrno.3$Z - ln $S SetErrno.3$Z Tcl_ErrnoId.3$Z - ln $S SetErrno.3$Z Tcl_ErrnoMsg.3$Z -fi -if test -r SetRecLmt.3; then - rm -f SetRecLmt.3.* - $ZIP SetRecLmt.3 - rm -f Tcl_SetRecursionLimit.3 Tcl_SetRecursionLimit.3.* - ln $S SetRecLmt.3$Z Tcl_SetRecursionLimit.3$Z -fi -if test -r SetResult.3; then - rm -f SetResult.3.* - $ZIP SetResult.3 - rm -f Tcl_SetObjResult.3 Tcl_SetObjResult.3.* - rm -f Tcl_GetObjResult.3 Tcl_GetObjResult.3.* - rm -f Tcl_SetResult.3 Tcl_SetResult.3.* - rm -f Tcl_GetStringResult.3 Tcl_GetStringResult.3.* - rm -f Tcl_AppendResult.3 Tcl_AppendResult.3.* - rm -f Tcl_AppendResultVA.3 Tcl_AppendResultVA.3.* - rm -f Tcl_AppendElement.3 Tcl_AppendElement.3.* - rm -f Tcl_ResetResult.3 Tcl_ResetResult.3.* - rm -f Tcl_FreeResult.3 Tcl_FreeResult.3.* - ln $S SetResult.3$Z Tcl_SetObjResult.3$Z - ln $S SetResult.3$Z Tcl_GetObjResult.3$Z - ln $S SetResult.3$Z Tcl_SetResult.3$Z - ln $S SetResult.3$Z Tcl_GetStringResult.3$Z - ln $S SetResult.3$Z Tcl_AppendResult.3$Z - ln $S SetResult.3$Z Tcl_AppendResultVA.3$Z - ln $S SetResult.3$Z Tcl_AppendElement.3$Z - ln $S SetResult.3$Z Tcl_ResetResult.3$Z - ln $S SetResult.3$Z Tcl_FreeResult.3$Z -fi -if test -r SetVar.3; then - rm -f SetVar.3.* - $ZIP SetVar.3 - rm -f Tcl_SetVar2Ex.3 Tcl_SetVar2Ex.3.* - rm -f Tcl_SetVar.3 Tcl_SetVar.3.* - rm -f Tcl_SetVar2.3 Tcl_SetVar2.3.* - rm -f Tcl_ObjSetVar2.3 Tcl_ObjSetVar2.3.* - rm -f Tcl_GetVar2Ex.3 Tcl_GetVar2Ex.3.* - rm -f Tcl_GetVar.3 Tcl_GetVar.3.* - rm -f Tcl_GetVar2.3 Tcl_GetVar2.3.* - rm -f Tcl_ObjGetVar2.3 Tcl_ObjGetVar2.3.* - rm -f Tcl_UnsetVar.3 Tcl_UnsetVar.3.* - rm -f Tcl_UnsetVar2.3 Tcl_UnsetVar2.3.* - ln $S SetVar.3$Z Tcl_SetVar2Ex.3$Z - ln $S SetVar.3$Z Tcl_SetVar.3$Z - ln $S SetVar.3$Z Tcl_SetVar2.3$Z - ln $S SetVar.3$Z Tcl_ObjSetVar2.3$Z - ln $S SetVar.3$Z Tcl_GetVar2Ex.3$Z - ln $S SetVar.3$Z Tcl_GetVar.3$Z - ln $S SetVar.3$Z Tcl_GetVar2.3$Z - ln $S SetVar.3$Z Tcl_ObjGetVar2.3$Z - ln $S SetVar.3$Z Tcl_UnsetVar.3$Z - ln $S SetVar.3$Z Tcl_UnsetVar2.3$Z -fi -if test -r Signal.3; then - rm -f Signal.3.* - $ZIP Signal.3 - rm -f Tcl_SignalId.3 Tcl_SignalId.3.* - rm -f Tcl_SignalMsg.3 Tcl_SignalMsg.3.* - ln $S Signal.3$Z Tcl_SignalId.3$Z - ln $S Signal.3$Z Tcl_SignalMsg.3$Z -fi -if test -r Sleep.3; then - rm -f Sleep.3.* - $ZIP Sleep.3 - rm -f Tcl_Sleep.3 Tcl_Sleep.3.* - ln $S Sleep.3$Z Tcl_Sleep.3$Z -fi -if test -r SourceRCFile.3; then - rm -f SourceRCFile.3.* - $ZIP SourceRCFile.3 - rm -f Tcl_SourceRCFile.3 Tcl_SourceRCFile.3.* - ln $S SourceRCFile.3$Z Tcl_SourceRCFile.3$Z -fi -if test -r SplitList.3; then - rm -f SplitList.3.* - $ZIP SplitList.3 - rm -f Tcl_SplitList.3 Tcl_SplitList.3.* - rm -f Tcl_Merge.3 Tcl_Merge.3.* - rm -f Tcl_ScanElement.3 Tcl_ScanElement.3.* - rm -f Tcl_ConvertElement.3 Tcl_ConvertElement.3.* - rm -f Tcl_ScanCountedElement.3 Tcl_ScanCountedElement.3.* - rm -f Tcl_ConvertCountedElement.3 Tcl_ConvertCountedElement.3.* - ln $S SplitList.3$Z Tcl_SplitList.3$Z - ln $S SplitList.3$Z Tcl_Merge.3$Z - ln $S SplitList.3$Z Tcl_ScanElement.3$Z - ln $S SplitList.3$Z Tcl_ConvertElement.3$Z - ln $S SplitList.3$Z Tcl_ScanCountedElement.3$Z - ln $S SplitList.3$Z Tcl_ConvertCountedElement.3$Z -fi -if test -r SplitPath.3; then - rm -f SplitPath.3.* - $ZIP SplitPath.3 - rm -f Tcl_SplitPath.3 Tcl_SplitPath.3.* - rm -f Tcl_JoinPath.3 Tcl_JoinPath.3.* - rm -f Tcl_GetPathType.3 Tcl_GetPathType.3.* - ln $S SplitPath.3$Z Tcl_SplitPath.3$Z - ln $S SplitPath.3$Z Tcl_JoinPath.3$Z - ln $S SplitPath.3$Z Tcl_GetPathType.3$Z -fi -if test -r StaticPkg.3; then - rm -f StaticPkg.3.* - $ZIP StaticPkg.3 - rm -f Tcl_StaticPackage.3 Tcl_StaticPackage.3.* - ln $S StaticPkg.3$Z Tcl_StaticPackage.3$Z -fi -if test -r StdChannels.3; then - rm -f StdChannels.3.* - $ZIP StdChannels.3 - rm -f Tcl_StandardChannels.3 Tcl_StandardChannels.3.* - ln $S StdChannels.3$Z Tcl_StandardChannels.3$Z -fi -if test -r StrMatch.3; then - rm -f StrMatch.3.* - $ZIP StrMatch.3 - rm -f Tcl_StringMatch.3 Tcl_StringMatch.3.* - rm -f Tcl_StringCaseMatch.3 Tcl_StringCaseMatch.3.* - ln $S StrMatch.3$Z Tcl_StringMatch.3$Z - ln $S StrMatch.3$Z Tcl_StringCaseMatch.3$Z -fi -if test -r StringObj.3; then - rm -f StringObj.3.* - $ZIP StringObj.3 - rm -f Tcl_NewStringObj.3 Tcl_NewStringObj.3.* - rm -f Tcl_NewUnicodeObj.3 Tcl_NewUnicodeObj.3.* - rm -f Tcl_SetStringObj.3 Tcl_SetStringObj.3.* - rm -f Tcl_SetUnicodeObj.3 Tcl_SetUnicodeObj.3.* - rm -f Tcl_GetStringFromObj.3 Tcl_GetStringFromObj.3.* - rm -f Tcl_GetString.3 Tcl_GetString.3.* - rm -f Tcl_GetUnicodeFromObj.3 Tcl_GetUnicodeFromObj.3.* - rm -f Tcl_GetUnicode.3 Tcl_GetUnicode.3.* - rm -f Tcl_GetUniChar.3 Tcl_GetUniChar.3.* - rm -f Tcl_GetCharLength.3 Tcl_GetCharLength.3.* - rm -f Tcl_GetRange.3 Tcl_GetRange.3.* - rm -f Tcl_AppendToObj.3 Tcl_AppendToObj.3.* - rm -f Tcl_AppendUnicodeToObj.3 Tcl_AppendUnicodeToObj.3.* - rm -f Tcl_AppendStringsToObj.3 Tcl_AppendStringsToObj.3.* - rm -f Tcl_AppendStringsToObjVA.3 Tcl_AppendStringsToObjVA.3.* - rm -f Tcl_AppendObjToObj.3 Tcl_AppendObjToObj.3.* - rm -f Tcl_SetObjLength.3 Tcl_SetObjLength.3.* - rm -f Tcl_ConcatObj.3 Tcl_ConcatObj.3.* - rm -f Tcl_AttemptSetObjLength.3 Tcl_AttemptSetObjLength.3.* - ln $S StringObj.3$Z Tcl_NewStringObj.3$Z - ln $S StringObj.3$Z Tcl_NewUnicodeObj.3$Z - ln $S StringObj.3$Z Tcl_SetStringObj.3$Z - ln $S StringObj.3$Z Tcl_SetUnicodeObj.3$Z - ln $S StringObj.3$Z Tcl_GetStringFromObj.3$Z - ln $S StringObj.3$Z Tcl_GetString.3$Z - ln $S StringObj.3$Z Tcl_GetUnicodeFromObj.3$Z - ln $S StringObj.3$Z Tcl_GetUnicode.3$Z - ln $S StringObj.3$Z Tcl_GetUniChar.3$Z - ln $S StringObj.3$Z Tcl_GetCharLength.3$Z - ln $S StringObj.3$Z Tcl_GetRange.3$Z - ln $S StringObj.3$Z Tcl_AppendToObj.3$Z - ln $S StringObj.3$Z Tcl_AppendUnicodeToObj.3$Z - ln $S StringObj.3$Z Tcl_AppendStringsToObj.3$Z - ln $S StringObj.3$Z Tcl_AppendStringsToObjVA.3$Z - ln $S StringObj.3$Z Tcl_AppendObjToObj.3$Z - ln $S StringObj.3$Z Tcl_SetObjLength.3$Z - ln $S StringObj.3$Z Tcl_ConcatObj.3$Z - ln $S StringObj.3$Z Tcl_AttemptSetObjLength.3$Z -fi -if test -r SubstObj.3; then - rm -f SubstObj.3.* - $ZIP SubstObj.3 - rm -f Tcl_SubstObj.3 Tcl_SubstObj.3.* - ln $S SubstObj.3$Z Tcl_SubstObj.3$Z -fi -if test -r TCL_MEM_DEBUG.3; then - rm -f TCL_MEM_DEBUG.3.* - $ZIP TCL_MEM_DEBUG.3 -fi -if test -r Tcl.n; then - rm -f Tcl.n.* - $ZIP Tcl.n -fi -if test -r Tcl_Main.3; then - rm -f Tcl_Main.3.* - $ZIP Tcl_Main.3 - rm -f Tcl_SetMainLoop.3 Tcl_SetMainLoop.3.* - ln $S Tcl_Main.3$Z Tcl_SetMainLoop.3$Z -fi -if test -r Thread.3; then - rm -f Thread.3.* - $ZIP Thread.3 - rm -f Tcl_ConditionNotify.3 Tcl_ConditionNotify.3.* - rm -f Tcl_ConditionWait.3 Tcl_ConditionWait.3.* - rm -f Tcl_ConditionFinalize.3 Tcl_ConditionFinalize.3.* - rm -f Tcl_GetThreadData.3 Tcl_GetThreadData.3.* - rm -f Tcl_MutexLock.3 Tcl_MutexLock.3.* - rm -f Tcl_MutexUnlock.3 Tcl_MutexUnlock.3.* - rm -f Tcl_MutexFinalize.3 Tcl_MutexFinalize.3.* - rm -f Tcl_CreateThread.3 Tcl_CreateThread.3.* - rm -f Tcl_JoinThread.3 Tcl_JoinThread.3.* - ln $S Thread.3$Z Tcl_ConditionNotify.3$Z - ln $S Thread.3$Z Tcl_ConditionWait.3$Z - ln $S Thread.3$Z Tcl_ConditionFinalize.3$Z - ln $S Thread.3$Z Tcl_GetThreadData.3$Z - ln $S Thread.3$Z Tcl_MutexLock.3$Z - ln $S Thread.3$Z Tcl_MutexUnlock.3$Z - ln $S Thread.3$Z Tcl_MutexFinalize.3$Z - ln $S Thread.3$Z Tcl_CreateThread.3$Z - ln $S Thread.3$Z Tcl_JoinThread.3$Z -fi -if test -r ToUpper.3; then - rm -f ToUpper.3.* - $ZIP ToUpper.3 - rm -f Tcl_UniCharToUpper.3 Tcl_UniCharToUpper.3.* - rm -f Tcl_UniCharToLower.3 Tcl_UniCharToLower.3.* - rm -f Tcl_UniCharToTitle.3 Tcl_UniCharToTitle.3.* - rm -f Tcl_UtfToUpper.3 Tcl_UtfToUpper.3.* - rm -f Tcl_UtfToLower.3 Tcl_UtfToLower.3.* - rm -f Tcl_UtfToTitle.3 Tcl_UtfToTitle.3.* - ln $S ToUpper.3$Z Tcl_UniCharToUpper.3$Z - ln $S ToUpper.3$Z Tcl_UniCharToLower.3$Z - ln $S ToUpper.3$Z Tcl_UniCharToTitle.3$Z - ln $S ToUpper.3$Z Tcl_UtfToUpper.3$Z - ln $S ToUpper.3$Z Tcl_UtfToLower.3$Z - ln $S ToUpper.3$Z Tcl_UtfToTitle.3$Z -fi -if test -r TraceCmd.3; then - rm -f TraceCmd.3.* - $ZIP TraceCmd.3 - rm -f Tcl_CommandTraceInfo.3 Tcl_CommandTraceInfo.3.* - rm -f Tcl_TraceCommand.3 Tcl_TraceCommand.3.* - rm -f Tcl_UntraceCommand.3 Tcl_UntraceCommand.3.* - ln $S TraceCmd.3$Z Tcl_CommandTraceInfo.3$Z - ln $S TraceCmd.3$Z Tcl_TraceCommand.3$Z - ln $S TraceCmd.3$Z Tcl_UntraceCommand.3$Z -fi -if test -r TraceVar.3; then - rm -f TraceVar.3.* - $ZIP TraceVar.3 - rm -f Tcl_TraceVar.3 Tcl_TraceVar.3.* - rm -f Tcl_TraceVar2.3 Tcl_TraceVar2.3.* - rm -f Tcl_UntraceVar.3 Tcl_UntraceVar.3.* - rm -f Tcl_UntraceVar2.3 Tcl_UntraceVar2.3.* - rm -f Tcl_VarTraceInfo.3 Tcl_VarTraceInfo.3.* - rm -f Tcl_VarTraceInfo2.3 Tcl_VarTraceInfo2.3.* - ln $S TraceVar.3$Z Tcl_TraceVar.3$Z - ln $S TraceVar.3$Z Tcl_TraceVar2.3$Z - ln $S TraceVar.3$Z Tcl_UntraceVar.3$Z - ln $S TraceVar.3$Z Tcl_UntraceVar2.3$Z - ln $S TraceVar.3$Z Tcl_VarTraceInfo.3$Z - ln $S TraceVar.3$Z Tcl_VarTraceInfo2.3$Z -fi -if test -r Translate.3; then - rm -f Translate.3.* - $ZIP Translate.3 - rm -f Tcl_TranslateFileName.3 Tcl_TranslateFileName.3.* - ln $S Translate.3$Z Tcl_TranslateFileName.3$Z -fi -if test -r UniCharIsAlpha.3; then - rm -f UniCharIsAlpha.3.* - $ZIP UniCharIsAlpha.3 - rm -f Tcl_UniCharIsAlnum.3 Tcl_UniCharIsAlnum.3.* - rm -f Tcl_UniCharIsAlpha.3 Tcl_UniCharIsAlpha.3.* - rm -f Tcl_UniCharIsControl.3 Tcl_UniCharIsControl.3.* - rm -f Tcl_UniCharIsDigit.3 Tcl_UniCharIsDigit.3.* - rm -f Tcl_UniCharIsGraph.3 Tcl_UniCharIsGraph.3.* - rm -f Tcl_UniCharIsLower.3 Tcl_UniCharIsLower.3.* - rm -f Tcl_UniCharIsPrint.3 Tcl_UniCharIsPrint.3.* - rm -f Tcl_UniCharIsPunct.3 Tcl_UniCharIsPunct.3.* - rm -f Tcl_UniCharIsSpace.3 Tcl_UniCharIsSpace.3.* - rm -f Tcl_UniCharIsUpper.3 Tcl_UniCharIsUpper.3.* - rm -f Tcl_UniCharIsWordChar.3 Tcl_UniCharIsWordChar.3.* - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsAlnum.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsAlpha.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsControl.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsDigit.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsGraph.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsLower.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsPrint.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsPunct.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsSpace.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsUpper.3$Z - ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsWordChar.3$Z -fi -if test -r UpVar.3; then - rm -f UpVar.3.* - $ZIP UpVar.3 - rm -f Tcl_UpVar.3 Tcl_UpVar.3.* - rm -f Tcl_UpVar2.3 Tcl_UpVar2.3.* - ln $S UpVar.3$Z Tcl_UpVar.3$Z - ln $S UpVar.3$Z Tcl_UpVar2.3$Z -fi -if test -r Utf.3; then - rm -f Utf.3.* - $ZIP Utf.3 - rm -f Tcl_UniChar.3 Tcl_UniChar.3.* - rm -f Tcl_UniCharCaseMatch.3 Tcl_UniCharCaseMatch.3.* - rm -f Tcl_UniCharNcasecmp.3 Tcl_UniCharNcasecmp.3.* - rm -f Tcl_UniCharToUtf.3 Tcl_UniCharToUtf.3.* - rm -f Tcl_UtfToUniChar.3 Tcl_UtfToUniChar.3.* - rm -f Tcl_UniCharToUtfDString.3 Tcl_UniCharToUtfDString.3.* - rm -f Tcl_UtfToUniCharDString.3 Tcl_UtfToUniCharDString.3.* - rm -f Tcl_UniCharLen.3 Tcl_UniCharLen.3.* - rm -f Tcl_UniCharNcmp.3 Tcl_UniCharNcmp.3.* - rm -f Tcl_UtfCharComplete.3 Tcl_UtfCharComplete.3.* - rm -f Tcl_NumUtfChars.3 Tcl_NumUtfChars.3.* - rm -f Tcl_UtfFindFirst.3 Tcl_UtfFindFirst.3.* - rm -f Tcl_UtfFindLast.3 Tcl_UtfFindLast.3.* - rm -f Tcl_UtfNext.3 Tcl_UtfNext.3.* - rm -f Tcl_UtfPrev.3 Tcl_UtfPrev.3.* - rm -f Tcl_UniCharAtIndex.3 Tcl_UniCharAtIndex.3.* - rm -f Tcl_UtfAtIndex.3 Tcl_UtfAtIndex.3.* - rm -f Tcl_UtfBackslash.3 Tcl_UtfBackslash.3.* - ln $S Utf.3$Z Tcl_UniChar.3$Z - ln $S Utf.3$Z Tcl_UniCharCaseMatch.3$Z - ln $S Utf.3$Z Tcl_UniCharNcasecmp.3$Z - ln $S Utf.3$Z Tcl_UniCharToUtf.3$Z - ln $S Utf.3$Z Tcl_UtfToUniChar.3$Z - ln $S Utf.3$Z Tcl_UniCharToUtfDString.3$Z - ln $S Utf.3$Z Tcl_UtfToUniCharDString.3$Z - ln $S Utf.3$Z Tcl_UniCharLen.3$Z - ln $S Utf.3$Z Tcl_UniCharNcmp.3$Z - ln $S Utf.3$Z Tcl_UtfCharComplete.3$Z - ln $S Utf.3$Z Tcl_NumUtfChars.3$Z - ln $S Utf.3$Z Tcl_UtfFindFirst.3$Z - ln $S Utf.3$Z Tcl_UtfFindLast.3$Z - ln $S Utf.3$Z Tcl_UtfNext.3$Z - ln $S Utf.3$Z Tcl_UtfPrev.3$Z - ln $S Utf.3$Z Tcl_UniCharAtIndex.3$Z - ln $S Utf.3$Z Tcl_UtfAtIndex.3$Z - ln $S Utf.3$Z Tcl_UtfBackslash.3$Z -fi -if test -r WrongNumArgs.3; then - rm -f WrongNumArgs.3.* - $ZIP WrongNumArgs.3 - rm -f Tcl_WrongNumArgs.3 Tcl_WrongNumArgs.3.* - ln $S WrongNumArgs.3$Z Tcl_WrongNumArgs.3$Z -fi -if test -r after.n; then - rm -f after.n.* - $ZIP after.n -fi -if test -r append.n; then - rm -f append.n.* - $ZIP append.n -fi -if test -r array.n; then - rm -f array.n.* - $ZIP array.n -fi -if test -r bgerror.n; then - rm -f bgerror.n.* - $ZIP bgerror.n -fi -if test -r binary.n; then - rm -f binary.n.* - $ZIP binary.n -fi -if test -r break.n; then - rm -f break.n.* - $ZIP break.n -fi -if test -r case.n; then - rm -f case.n.* - $ZIP case.n -fi -if test -r catch.n; then - rm -f catch.n.* - $ZIP catch.n -fi -if test -r cd.n; then - rm -f cd.n.* - $ZIP cd.n -fi -if test -r clock.n; then - rm -f clock.n.* - $ZIP clock.n -fi -if test -r close.n; then - rm -f close.n.* - $ZIP close.n -fi -if test -r concat.n; then - rm -f concat.n.* - $ZIP concat.n -fi -if test -r continue.n; then - rm -f continue.n.* - $ZIP continue.n -fi -if test -r dde.n; then - rm -f dde.n.* - $ZIP dde.n -fi -if test -r encoding.n; then - rm -f encoding.n.* - $ZIP encoding.n -fi -if test -r eof.n; then - rm -f eof.n.* - $ZIP eof.n -fi -if test -r error.n; then - rm -f error.n.* - $ZIP error.n -fi -if test -r eval.n; then - rm -f eval.n.* - $ZIP eval.n -fi -if test -r exec.n; then - rm -f exec.n.* - $ZIP exec.n -fi -if test -r exit.n; then - rm -f exit.n.* - $ZIP exit.n -fi -if test -r expr.n; then - rm -f expr.n.* - $ZIP expr.n -fi -if test -r fblocked.n; then - rm -f fblocked.n.* - $ZIP fblocked.n -fi -if test -r fconfigure.n; then - rm -f fconfigure.n.* - $ZIP fconfigure.n -fi -if test -r fcopy.n; then - rm -f fcopy.n.* - $ZIP fcopy.n -fi -if test -r file.n; then - rm -f file.n.* - $ZIP file.n -fi -if test -r fileevent.n; then - rm -f fileevent.n.* - $ZIP fileevent.n -fi -if test -r filename.n; then - rm -f filename.n.* - $ZIP filename.n -fi -if test -r flush.n; then - rm -f flush.n.* - $ZIP flush.n -fi -if test -r for.n; then - rm -f for.n.* - $ZIP for.n -fi -if test -r foreach.n; then - rm -f foreach.n.* - $ZIP foreach.n -fi -if test -r format.n; then - rm -f format.n.* - $ZIP format.n -fi -if test -r gets.n; then - rm -f gets.n.* - $ZIP gets.n -fi -if test -r glob.n; then - rm -f glob.n.* - $ZIP glob.n -fi -if test -r global.n; then - rm -f global.n.* - $ZIP global.n -fi -if test -r history.n; then - rm -f history.n.* - $ZIP history.n -fi -if test -r http.n; then - rm -f http.n.* - $ZIP http.n -fi -if test -r if.n; then - rm -f if.n.* - $ZIP if.n -fi -if test -r incr.n; then - rm -f incr.n.* - $ZIP incr.n -fi -if test -r info.n; then - rm -f info.n.* - $ZIP info.n -fi -if test -r interp.n; then - rm -f interp.n.* - $ZIP interp.n -fi -if test -r join.n; then - rm -f join.n.* - $ZIP join.n -fi -if test -r lappend.n; then - rm -f lappend.n.* - $ZIP lappend.n -fi -if test -r library.n; then - rm -f library.n.* - $ZIP library.n - rm -f auto_execok.n auto_execok.n.* - rm -f auto_import.n auto_import.n.* - rm -f auto_load.n auto_load.n.* - rm -f auto_mkindex.n auto_mkindex.n.* - rm -f auto_mkindex_old.n auto_mkindex_old.n.* - rm -f auto_qualify.n auto_qualify.n.* - rm -f auto_reset.n auto_reset.n.* - rm -f tcl_findLibrary.n tcl_findLibrary.n.* - rm -f parray.n parray.n.* - rm -f tcl_endOfWord.n tcl_endOfWord.n.* - rm -f tcl_startOfNextWord.n tcl_startOfNextWord.n.* - rm -f tcl_startOfPreviousWord.n tcl_startOfPreviousWord.n.* - rm -f tcl_wordBreakAfter.n tcl_wordBreakAfter.n.* - rm -f tcl_wordBreakBefore.n tcl_wordBreakBefore.n.* - ln $S library.n$Z auto_execok.n$Z - ln $S library.n$Z auto_import.n$Z - ln $S library.n$Z auto_load.n$Z - ln $S library.n$Z auto_mkindex.n$Z - ln $S library.n$Z auto_mkindex_old.n$Z - ln $S library.n$Z auto_qualify.n$Z - ln $S library.n$Z auto_reset.n$Z - ln $S library.n$Z tcl_findLibrary.n$Z - ln $S library.n$Z parray.n$Z - ln $S library.n$Z tcl_endOfWord.n$Z - ln $S library.n$Z tcl_startOfNextWord.n$Z - ln $S library.n$Z tcl_startOfPreviousWord.n$Z - ln $S library.n$Z tcl_wordBreakAfter.n$Z - ln $S library.n$Z tcl_wordBreakBefore.n$Z -fi -if test -r lindex.n; then - rm -f lindex.n.* - $ZIP lindex.n -fi -if test -r linsert.n; then - rm -f linsert.n.* - $ZIP linsert.n -fi -if test -r list.n; then - rm -f list.n.* - $ZIP list.n -fi -if test -r llength.n; then - rm -f llength.n.* - $ZIP llength.n -fi -if test -r load.n; then - rm -f load.n.* - $ZIP load.n -fi -if test -r lrange.n; then - rm -f lrange.n.* - $ZIP lrange.n -fi -if test -r lreplace.n; then - rm -f lreplace.n.* - $ZIP lreplace.n -fi -if test -r lsearch.n; then - rm -f lsearch.n.* - $ZIP lsearch.n -fi -if test -r lset.n; then - rm -f lset.n.* - $ZIP lset.n -fi -if test -r lsort.n; then - rm -f lsort.n.* - $ZIP lsort.n -fi -if test -r memory.n; then - rm -f memory.n.* - $ZIP memory.n -fi -if test -r msgcat.n; then - rm -f msgcat.n.* - $ZIP msgcat.n -fi -if test -r namespace.n; then - rm -f namespace.n.* - $ZIP namespace.n -fi -if test -r open.n; then - rm -f open.n.* - $ZIP open.n -fi -if test -r package.n; then - rm -f package.n.* - $ZIP package.n -fi -if test -r packagens.n; then - rm -f packagens.n.* - $ZIP packagens.n - rm -f pkg::create.n pkg::create.n.* - ln $S packagens.n$Z pkg::create.n$Z -fi -if test -r pid.n; then - rm -f pid.n.* - $ZIP pid.n -fi -if test -r pkgMkIndex.n; then - rm -f pkgMkIndex.n.* - $ZIP pkgMkIndex.n - rm -f pkg_mkIndex.n pkg_mkIndex.n.* - ln $S pkgMkIndex.n$Z pkg_mkIndex.n$Z -fi -if test -r proc.n; then - rm -f proc.n.* - $ZIP proc.n -fi -if test -r puts.n; then - rm -f puts.n.* - $ZIP puts.n -fi -if test -r pwd.n; then - rm -f pwd.n.* - $ZIP pwd.n -fi -if test -r re_syntax.n; then - rm -f re_syntax.n.* - $ZIP re_syntax.n -fi -if test -r read.n; then - rm -f read.n.* - $ZIP read.n -fi -if test -r regexp.n; then - rm -f regexp.n.* - $ZIP regexp.n -fi -if test -r registry.n; then - rm -f registry.n.* - $ZIP registry.n -fi -if test -r regsub.n; then - rm -f regsub.n.* - $ZIP regsub.n -fi -if test -r rename.n; then - rm -f rename.n.* - $ZIP rename.n -fi -if test -r resource.n; then - rm -f resource.n.* - $ZIP resource.n -fi -if test -r return.n; then - rm -f return.n.* - $ZIP return.n -fi -if test -r safe.n; then - rm -f safe.n.* - $ZIP safe.n - rm -f SafeBase.n SafeBase.n.* - ln $S safe.n$Z SafeBase.n$Z -fi -if test -r scan.n; then - rm -f scan.n.* - $ZIP scan.n -fi -if test -r seek.n; then - rm -f seek.n.* - $ZIP seek.n -fi -if test -r set.n; then - rm -f set.n.* - $ZIP set.n -fi -if test -r socket.n; then - rm -f socket.n.* - $ZIP socket.n -fi -if test -r source.n; then - rm -f source.n.* - $ZIP source.n -fi -if test -r split.n; then - rm -f split.n.* - $ZIP split.n -fi -if test -r string.n; then - rm -f string.n.* - $ZIP string.n -fi -if test -r subst.n; then - rm -f subst.n.* - $ZIP subst.n -fi -if test -r switch.n; then - rm -f switch.n.* - $ZIP switch.n -fi -if test -r tclsh.1; then - rm -f tclsh.1.* - $ZIP tclsh.1 -fi -if test -r tcltest.n; then - rm -f tcltest.n.* - $ZIP tcltest.n -fi -if test -r tclvars.n; then - rm -f tclvars.n.* - $ZIP tclvars.n -fi -if test -r tell.n; then - rm -f tell.n.* - $ZIP tell.n -fi -if test -r time.n; then - rm -f time.n.* - $ZIP time.n -fi -if test -r trace.n; then - rm -f trace.n.* - $ZIP trace.n -fi -if test -r unknown.n; then - rm -f unknown.n.* - $ZIP unknown.n -fi -if test -r unset.n; then - rm -f unset.n.* - $ZIP unset.n -fi -if test -r update.n; then - rm -f update.n.* - $ZIP update.n -fi -if test -r uplevel.n; then - rm -f uplevel.n.* - $ZIP uplevel.n -fi -if test -r upvar.n; then - rm -f upvar.n.* - $ZIP upvar.n -fi -if test -r variable.n; then - rm -f variable.n.* - $ZIP variable.n -fi -if test -r vwait.n; then - rm -f vwait.n.* - $ZIP vwait.n -fi -if test -r while.n; then - rm -f while.n.* - $ZIP while.n -fi -exit 0 diff --git a/unix/mkLinks.tcl b/unix/mkLinks.tcl deleted file mode 100644 index b0a4a6a..0000000 --- a/unix/mkLinks.tcl +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/sh -# mkLinks.tcl -- -# This generates the mkLinks script -# \ -exec tclsh "$0" ${1+"$@"} - -puts stdout \ -{#!/bin/sh -# This script is invoked when installing manual entries. It generates -# additional links to manual entries, corresponding to the procedure -# and command names described by the manual entry. For example, the -# Tcl manual entry Hash.3 describes procedures Tcl_InitHashTable, -# Tcl_CreateHashEntry, and many more. This script will make hard -# links so that Tcl_InitHashTable.3, Tcl_CreateHashEntry.3, and so -# on all refer to Hash.3 in the installed directory. -# -# Because of the length of command and procedure names, this mechanism -# only works on machines that support file names longer than 14 characters. -# This script checks to see if long file names are supported, and it -# doesn't make any links if they are not. -# -# The script takes one argument, which is the name of the directory -# where the manual entries have been installed. - -ZIP=true -while true; do - case $1 in - -s | --symlinks ) - S=-s - ;; - -z | --compress ) - ZIP=$2 - shift - ;; - *) break - ;; - esac - shift -done - -if test $# != 1; then - echo "Usage: mkLinks dir" - exit 1 -fi - -if test "x$ZIP" != "xtrue"; then - touch TeST - $ZIP TeST - Z=`ls TeST* | sed 's/^[^.]*//'` - rm -f TeST* -fi - -cd $1 -echo foo > xyzzyTestingAVeryLongFileName.foo -x=`echo xyzzyTe*` -echo foo > xyzzyTestingaverylongfilename.foo -y=`echo xyzzyTestingav*` -rm xyzzyTe* -if test "$x" != "xyzzyTestingAVeryLongFileName.foo"; then - exit -fi -if test "$y" != "xyzzyTestingaverylongfilename.foo"; then - CASEINSENSITIVEFS=1 -fi -} - -set case_insensitive_test { if test "${CASEINSENSITIVEFS:-}" != "1"; then} -set case_insensitive_test_fi {; fi} - -foreach file $argv { - set in [open $file] - set tail [file tail $file] - set ext [file extension $file] - set state begin - while {[gets $in line] >= 0} { - switch $state { - begin { - if {[regexp "^.SH NAME" $line]} { - set state name - } - } - name { - regsub {\\-.*} $line {} line - set rmOutput "" - set lnOutput "" - set namelist {} - foreach name [split $line ,] { - regsub -all {(\\)? } $name "" name - if {![string match $name*$ext $tail]} { - if {[string match -nocase $name*$ext $tail]} { - set tst $case_insensitive_test - set tstfi $case_insensitive_test_fi - } else { - set tst "" - set tstfi "" - } - lappend namelist $name$ext - append rmOutput " $tst rm -f $name$ext $name$ext.* $tstfi\n" - append lnOutput " $tst ln \$S $tail\$Z $name$ext\$Z $tstfi\n" - } - } - puts "if test -r $tail; then" - puts " rm -f $tail.*" - puts " \$ZIP $tail" - if { [llength $namelist] } { - puts -nonewline $rmOutput - puts -nonewline $lnOutput - } - puts "fi" - set state end - } - end { - break - } - } - } - close $in -} -puts "exit 0" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 8b125b0..a1bdc5b 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -601,8 +601,12 @@ AC_DEFUN(SC_ENABLE_LANGINFO, [ #-------------------------------------------------------------------- # SC_CONFIG_MANPAGES # -# Decide whether to use symlinks for linking the manpages and -# whether to compress the manpages after installation. +# Decide whether to use symlinks for linking the manpages, +# whether to compress the manpages after installation, and +# whether to add a package name suffix to the installed +# manpages to avoidfile name clashes. +# If compression is enabled also find out what file name suffix +# the given compression program is using. # # Arguments: # none @@ -612,11 +616,12 @@ AC_DEFUN(SC_ENABLE_LANGINFO, [ # Adds the following arguments to configure: # --enable-man-symlinks # --enable-man-compression=PROG +# --enable-man-suffix[=STRING] # # Defines the following variable: # -# MKLINKS_FLAGS - The apropriate flags for mkLinks -# according to the user's selection. +# MAN_FLAGS - The apropriate flags for installManPage +# according to the user's selection. # #-------------------------------------------------------------------- AC_DEFUN(SC_CONFIG_MANPAGES, [ @@ -624,20 +629,39 @@ AC_DEFUN(SC_CONFIG_MANPAGES, [ AC_MSG_CHECKING([whether to use symlinks for manpages]) AC_ARG_ENABLE(man-symlinks, [ --enable-man-symlinks use symlinks for the manpages], - test "$enableval" != "no" && MKLINKS_FLAGS="$MKLINKS_FLAGS --symlinks", + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks", enableval="no") AC_MSG_RESULT([$enableval]) - AC_MSG_CHECKING([compression for manpages]) + AC_MSG_CHECKING([whether to compress the manpages]) AC_ARG_ENABLE(man-compression, [ --enable-man-compression=PROG compress the manpages with PROG], - test "$enableval" = "yes" && echo && AC_MSG_ERROR([missing argument to --enable-man-compression]) - test "$enableval" != "no" && MKLINKS_FLAGS="$MKLINKS_FLAGS --compress $enableval", + test "$enableval" = "yes" && AC_MSG_ERROR([missing argument to --enable-man-compression]) + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --compress $enableval", + enableval="no") + AC_MSG_RESULT([$enableval]) + if test "$enableval" != "no"; then + AC_MSG_CHECKING([for compressed file suffix]) + touch TeST + $enableval TeST + Z=`ls TeST* | sed 's/^....//'` + rm -f TeST* + MAN_FLAGS="$MAN_FLAGS --extension $Z" + AC_MSG_RESULT([$Z]) + fi + + AC_MSG_CHECKING([whether to add a package name suffix for the manpages]) + AC_ARG_ENABLE(man-suffix, + [ --enable-man-suffix=STRING + use STRING as a suffix to manpage file names + (default: $1)], + test "$enableval" = "yes" && enableval="$1" + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --suffix $enableval", enableval="no") AC_MSG_RESULT([$enableval]) - AC_SUBST(MKLINKS_FLAGS) + AC_SUBST(MAN_FLAGS) ]) #-------------------------------------------------------------------- -- cgit v0.12 From bbfdb362cdea590d5069889d3c5199d47a0abe43 Mon Sep 17 00:00:00 2001 From: rmax Date: Thu, 18 Nov 2004 10:21:55 +0000 Subject: Fixed manpage installation. --- unix/Makefile.in | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/unix/Makefile.in b/unix/Makefile.in index 6c1485a..8d0b64e 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.8 2004/11/18 02:07:09 rmax Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.9 2004/11/18 10:21:55 rmax Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -695,17 +695,17 @@ install-doc: doc fi; \ done; @echo "Installing and cross-linking top-level (.1) docs"; - @cd $(TOP_DIR)/doc; for i in *.1; do \ + @for i in $(TOP_DIR)/doc/*.1; do \ $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MAN1_INSTALL_DIR); \ done @echo "Installing and cross-linking C API (.3) docs"; - @cd $(TOP_DIR)/doc; for i in *.3; do \ + @for i in $(TOP_DIR)/doc/*.3; do \ $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MAN3_INSTALL_DIR); \ done @echo "Installing and cross-linking command (.n) docs"; - @cd $(TOP_DIR)/doc; for i in *.n; do \ + @for i in $(TOP_DIR)/doc/*.n; do \ $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MANN_INSTALL_DIR); \ done -- cgit v0.12 From 85ebf9cc2e3bb3dd7b73a962487fc40fd7804cee Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 18 Nov 2004 15:44:22 +0000 Subject: * changes: Final updates for Tcl 8.4.8 release. --- ChangeLog | 4 ++++ changes | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7c6cff1..5147d2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-11-16 Don Porter + + * changes: Final updates for Tcl 8.4.8 release. + 2004-11-18 Reinhard Max * unix/tcl.m4 (SC_CONFIG_MANPAGES): Applied an improved version of diff --git a/changes b/changes index 1d3fd33..f296cab 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.14 2004/11/16 16:56:00 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.15 2004/11/18 15:44:25 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6106,8 +6106,12 @@ Corrects Tcl_StatBuf definition issues. (hobbs) 2004-11-16 (bug fix)[695441] [tcl_findLibrary] search $::auto_path too (porter) +2004-11-16 (bug fix)[1067709] crash in [fconfigure -ttycontrol] (hobbs) + +2004-11-18 (new feature) configure options --enable-man-suffix (max) + Documentation improvements [759545,1058446,1062647,1065732,etc.] Test suite expansion [1036649,1001997,etc.] ---- Released 8.4.8, November XX, 2004 --- See ChangeLog for details --- +--- Released 8.4.8, November 18, 2004 --- See ChangeLog for details --- -- cgit v0.12 From 58e52a381b72e19747a40c5f57d4495a3090002b Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 18 Nov 2004 16:23:51 +0000 Subject: mark release tagging --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5147d2a..61d817c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-11-16 Don Porter + *** 8.4.8 TAGGED FOR RELEASE *** + * changes: Final updates for Tcl 8.4.8 release. 2004-11-18 Reinhard Max -- cgit v0.12 From 13e2a10a96869c0e23886729355fbf94e28eef07 Mon Sep 17 00:00:00 2001 From: rmax Date: Thu, 18 Nov 2004 17:21:12 +0000 Subject: Some versions of sed appear to need semicolons in front of comments. --- unix/installManPage | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/unix/installManPage b/unix/installManPage index 16cf005..8045423 100755 --- a/unix/installManPage +++ b/unix/installManPage @@ -23,12 +23,12 @@ test -z "$S" && S="$DIR/" # Backslashes are trippled in the sed script, because it is in backticks # which don't pass backslashes literally. NAMES=`sed -n ' - /^\\.SH NAME/{ # Look for a line, that starts with .SH NAME - s/^.*$// # Delete the content of this line from the buffer - n # Read next line - s/,\|\\\ //g # Remove all commas - s/ \\\-.*// # Delete from \- to the end of line - p # print the result + /^\\.SH NAME/{ ;# Look for a line, that starts with .SH NAME + s/^.*$// ;# Delete the content of this line from the buffer + n ;# Read next line + s/,\|\\\ //g ;# Remove all commas + s/ \\\-.*// ;# Delete from \- to the end of line + p ;# print the result q }' $MANPAGE` -- cgit v0.12 From b52663ee7d9be37d2eb5b0518417bab14d618b49 Mon Sep 17 00:00:00 2001 From: rmax Date: Thu, 18 Nov 2004 18:08:27 +0000 Subject: Arghh - some seds don't even support comments at all. --- unix/installManPage | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/unix/installManPage b/unix/installManPage index 8045423..4157d26 100755 --- a/unix/installManPage +++ b/unix/installManPage @@ -20,15 +20,28 @@ MANPAGE=$1 DIR=$2 test -z "$S" && S="$DIR/" -# Backslashes are trippled in the sed script, because it is in backticks -# which don't pass backslashes literally. +# A sed script to parse the alternative names out of a man page. +# +# /^\\.SH NAME/{ ;# Look for a line, that starts with .SH NAME +# s/^.*$// ;# Delete the content of this line from the buffer +# n ;# Read next line +# s/,\|\\\ //g ;# Remove all commas +# s/ \\\-.*// ;# Delete from \- to the end of line +# p ;# print the result +# q ;# exit +# +# Backslashes are trippled in the sed script, because it is in +# backticks which don't pass backslashes literally. +# +# Please keep the commented version above updated if you +# change anything to the script below. NAMES=`sed -n ' - /^\\.SH NAME/{ ;# Look for a line, that starts with .SH NAME - s/^.*$// ;# Delete the content of this line from the buffer - n ;# Read next line - s/,\|\\\ //g ;# Remove all commas - s/ \\\-.*// ;# Delete from \- to the end of line - p ;# print the result + /^\\.SH NAME/{ + s/^.*$// + n + s/,\|\\\ //g + s/ \\\-.*// + p q }' $MANPAGE` -- cgit v0.12 From 318ca631dc34f11954febc6e0681081c82365e46 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 18 Nov 2004 19:35:35 +0000 Subject: date correction --- ChangeLog | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 61d817c..41ba825 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2004-11-16 Don Porter +2004-11-18 Don Porter *** 8.4.8 TAGGED FOR RELEASE *** @@ -6,13 +6,13 @@ 2004-11-18 Reinhard Max - * unix/tcl.m4 (SC_CONFIG_MANPAGES): Applied an improved version of - * unix/configure.in: patch #996085, that introduces - * unix/Makefile.in: --enable-man-suffix. + * unix/tcl.m4 (SC_CONFIG_MANPAGES): Applied an improved version of + * unix/configure.in: patch #996085, that introduces + * unix/Makefile.in: --enable-man-suffix. - * unix/installManPage: added - * unix/mkLinks.tcl: removed - * unix/mkLinks: removed + * unix/installManPage: added + * unix/mkLinks.tcl: removed + * unix/mkLinks: removed 2004-11-16 Jeff Hobbs @@ -106,11 +106,11 @@ 2004-11-02 Don Porter - * library/tcltest/tcltest.tcl: Corrected some misleading - * tests/tcltest.test (tcltest-26.1,2): displays of ::errorInfo and - ::errorCode information when the -setup, -body, and/or -cleanup scripts - return an unexpected return code. Thanks to Robert Seeger for the - fix. [RFE 1017151]. + * library/tcltest/tcltest.tcl: Corrected some misleading + * tests/tcltest.test (tcltest-26.1,2): displays of ::errorInfo and + ::errorCode information when the -setup, -body, and/or -cleanup scripts + return an unexpected return code. Thanks to Robert Seeger for the + fix. [RFE 1017151]. 2004-11-02 Donal K. Fellows @@ -209,12 +209,12 @@ * tests/error.test (error-6.3,4,7,9): Backport of some tests. * tests/basic.test (basic-49.*): * tests/namespace.test (namespace-8.7): - * tests/init.test (init-2.8): Updated to not rely on http package. + * tests/init.test (init-2.8): Updated to not rely on http package. - * generic/tclThreadTest.c (ThreadEventProc): Corrected subtle - bug where the returned (char *) from Tcl_GetStringResult(interp) - continued to be used without copying or refcounting, while - activity on the interp continued. + * generic/tclThreadTest.c (ThreadEventProc): Corrected subtle + bug where the returned (char *) from Tcl_GetStringResult(interp) + continued to be used without copying or refcounting, while + activity on the interp continued. 2004-10-14 Donal K. Fellows -- cgit v0.12 From 6297311b712fb631b245f682cfcbc17a233d7b60 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 19 Nov 2004 06:29:23 +0000 Subject: * macosx/Makefile: * unix/configure.in: * unix/tclUnixInit.c (MacOSXGetLibraryPath): changed detection of tcl framework build when determining tclLibPath from overloaded TCL_LIBRARY to configuration define TCL_FRAMEWORK. [Bug 1068088] * unix/configure: autoconf-2.13 * tests/unixInit.test (7.1): fixed failure when running tests with -tmpdir arg not set to working dir. --- ChangeLog | 13 +++++++++++++ macosx/Makefile | 5 ++--- tests/unixInit.test | 4 ++-- unix/configure | 4 ++++ unix/configure.in | 3 ++- unix/tclUnixInit.c | 10 +++++----- 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 41ba825..5b87865 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2004-11-19 Daniel Steffen + + * macosx/Makefile: + * unix/configure.in: + * unix/tclUnixInit.c (MacOSXGetLibraryPath): changed detection + of tcl framework build when determining tclLibPath from overloaded + TCL_LIBRARY to configuration define TCL_FRAMEWORK. [Bug 1068088] + + * unix/configure: autoconf-2.13 + + * tests/unixInit.test (7.1): fixed failure when running tests + with -tmpdir arg not set to working dir. + 2004-11-18 Don Porter *** 8.4.8 TAGGED FOR RELEASE *** diff --git a/macosx/Makefile b/macosx/Makefile index ee9e40c..6458cb1 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -3,7 +3,7 @@ # Makefile to build Tcl on Mac OS X packaged as a Framework # uses standard unix build system in tcl/unix # -# RCS: @(#) $Id: Makefile,v 1.5.2.9 2004/11/11 01:17:07 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.10 2004/11/19 06:29:23 das Exp $ # ######################################################################################################## @@ -101,7 +101,6 @@ TCL_EXE ?= ${SYMROOT}/${TCLSH} DYLIB_INSTALL_PATH ?= ${INSTALL_PATH} -TCL_LIBRARY := @TCL_IN_FRAMEWORK@ LIBDIR := ${INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${PRODUCT_VERSION} DYLIB_INSTALL_DIR := ${DYLIB_INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${PRODUCT_VERSION} INCLUDEDIR := ${LIBDIR}/Headers @@ -115,7 +114,7 @@ OBJ_DIR = ${OBJROOT}/${BUILD_STYLE} ${PROJECT}: override INSTALL_ROOT = ${OBJ_DIR}/ -MAKE_VARS := INSTALL_ROOT TCL_PACKAGE_PATH TCL_LIBRARY DYLIB_INSTALL_DIR +MAKE_VARS := INSTALL_ROOT TCL_PACKAGE_PATH DYLIB_INSTALL_DIR MAKE_ARGS_V = $(foreach v,${MAKE_VARS},$v=${$v}) export CPPROG := cp -p diff --git a/tests/unixInit.test b/tests/unixInit.test index 61d69d0..20ee51e 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.9 2004/10/28 00:01:12 dgp Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.10 2004/11/19 06:29:23 das Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -369,7 +369,7 @@ test unixInit-7.1 {closed standard channel: Bug 772288} -constraints { close stdin [list exec $tclsh crash.tcl] " crashtest.tcl - exec $tclsh crashtest.tcl + exec $tclsh [file join [temporaryDirectory] crashtest.tcl] } -cleanup { removeFile crash.tcl removeFile crashtest.tcl diff --git a/unix/configure b/unix/configure index c25db6d..1f45906 100755 --- a/unix/configure +++ b/unix/configure @@ -7271,6 +7271,10 @@ if test "$FRAMEWORK_BUILD" = "1" ; then TCL_BUILD_LIB_SPEC="-F`pwd` -framework Tcl" TCL_LIB_SPEC="-framework Tcl" TCL_LIB_FILE="Tcl" + cat >> confdefs.h <<\EOF +#define TCL_FRAMEWORK 1 +EOF + elif test "$SHARED_BUILD" = "0" || test "$TCL_NEEDS_EXP_FILE" = "0"; then if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then TCL_LIB_FLAG="-ltcl${TCL_VERSION}\${TCL_DBGX}" diff --git a/unix/configure.in b/unix/configure.in index 6c4df56..bc91be2 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.10 2004/11/18 02:07:09 rmax Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.11 2004/11/19 06:29:25 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -471,6 +471,7 @@ if test "$FRAMEWORK_BUILD" = "1" ; then TCL_BUILD_LIB_SPEC="-F`pwd` -framework Tcl" TCL_LIB_SPEC="-framework Tcl" TCL_LIB_FILE="Tcl" + AC_DEFINE(TCL_FRAMEWORK) elif test "$SHARED_BUILD" = "0" || test "$TCL_NEEDS_EXP_FILE" = "0"; then if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then TCL_LIB_FLAG="-ltcl${TCL_VERSION}\${TCL_DBGX}" diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index a51124e..a3add18 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.4 2004/03/29 18:49:36 hobbs Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.5 2004/11/19 06:29:25 das Exp $ */ #if defined(HAVE_CFBUNDLE) @@ -1069,10 +1069,10 @@ TclpCheckStackSpace() static int Tcl_MacOSXGetLibraryPath(Tcl_Interp *interp, int maxPathLen, char *tclLibPath) { int foundInFramework = TCL_ERROR; - if (strcmp(defaultLibraryDir, "@TCL_IN_FRAMEWORK@") == 0) { - foundInFramework = Tcl_MacOSXOpenVersionedBundleResources(interp, - "com.tcltk.tcllibrary", TCL_VERSION, 0, maxPathLen, tclLibPath); - } +#ifdef TCL_FRAMEWORK + foundInFramework = Tcl_MacOSXOpenVersionedBundleResources(interp, + "com.tcltk.tcllibrary", TCL_VERSION, 0, maxPathLen, tclLibPath); +#endif return foundInFramework; } #endif /* HAVE_CFBUNDLE */ -- cgit v0.12 From d3477b77fed103cbbc6f7117d432f05d9ddd0de1 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 19 Nov 2004 06:51:57 +0000 Subject: *** 8.4.8 TAGGED FOR RELEASE *** --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5b87865..6774c4c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-11-19 Daniel Steffen + *** 8.4.8 TAGGED FOR RELEASE *** + * macosx/Makefile: * unix/configure.in: * unix/tclUnixInit.c (MacOSXGetLibraryPath): changed detection @@ -13,8 +15,6 @@ 2004-11-18 Don Porter - *** 8.4.8 TAGGED FOR RELEASE *** - * changes: Final updates for Tcl 8.4.8 release. 2004-11-18 Reinhard Max -- cgit v0.12 From 410ca739ad19b27a082a84b39c18a042307a549f Mon Sep 17 00:00:00 2001 From: rmax Date: Fri, 19 Nov 2004 09:37:18 +0000 Subject: Classic sed doesn't support | in REs. --- ChangeLog | 6 +++++- unix/installManPage | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6774c4c..45cb532 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,11 @@ -2004-11-19 Daniel Steffen +2004-11-19 Reinhard Max *** 8.4.8 TAGGED FOR RELEASE *** + * unix/installManPage: Classic sed doesn't support | in REs. + +2004-11-19 Daniel Steffen + * macosx/Makefile: * unix/configure.in: * unix/tclUnixInit.c (MacOSXGetLibraryPath): changed detection diff --git a/unix/installManPage b/unix/installManPage index 4157d26..93fd925 100755 --- a/unix/installManPage +++ b/unix/installManPage @@ -25,10 +25,12 @@ test -z "$S" && S="$DIR/" # /^\\.SH NAME/{ ;# Look for a line, that starts with .SH NAME # s/^.*$// ;# Delete the content of this line from the buffer # n ;# Read next line -# s/,\|\\\ //g ;# Remove all commas +# s/,//g ;# Remove all commas ... +# s/\\\ //g ;# .. and backslash-escaped spaces. # s/ \\\-.*// ;# Delete from \- to the end of line # p ;# print the result # q ;# exit +# } # # Backslashes are trippled in the sed script, because it is in # backticks which don't pass backslashes literally. @@ -39,7 +41,8 @@ NAMES=`sed -n ' /^\\.SH NAME/{ s/^.*$// n - s/,\|\\\ //g + s/,//g + s/\\\ //g s/ \\\-.*// p q -- cgit v0.12 From fe96f0fa28a0a74e364c71258018723dccbe1e92 Mon Sep 17 00:00:00 2001 From: mdejong Date: Mon, 22 Nov 2004 22:48:24 +0000 Subject: * unix/configure: Regen. * unix/tcl.m4 (SC_ENABLE_THREADS): Check for a 2 argument version of readdir_r that is known to exists under IRIX 5.3. * unix/tclUnixThrd.c (TclpReaddir): Use either 2 arg or 3 arg version of readdir_r. [Bug 1001325] --- ChangeLog | 10 + unix/configure | 709 +++++++++++++++++++++++++++++------------------------ unix/tcl.m4 | 19 ++ unix/tclUnixThrd.c | 6 +- 4 files changed, 421 insertions(+), 323 deletions(-) diff --git a/ChangeLog b/ChangeLog index 45cb532..d16dada 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-11-22 Mo DeJong + + * unix/configure: Regen. + * unix/tcl.m4 (SC_ENABLE_THREADS): Check for a 2 + argument version of readdir_r that is known to + exists under IRIX 5.3. + * unix/tclUnixThrd.c (TclpReaddir): Use either + 2 arg or 3 arg version of readdir_r. + [Bug 1001325] + 2004-11-19 Reinhard Max *** 8.4.8 TAGGED FOR RELEASE *** diff --git a/unix/configure b/unix/configure index 1f45906..d3f7ab7 100755 --- a/unix/configure +++ b/unix/configure @@ -1303,6 +1303,71 @@ else fi done + if test "x$ac_cv_func_readdir_r" = "xyes"; then + # IRIX 5.3 has a 2 arg version of readdir_r + # while other systems have a 3 arg version. + if eval "test \"`echo '$''{'tcl_cv_two_arg_readdir_r'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +int main() { +readdir_r(NULL, NULL); +; return 0; } +EOF +if { (eval echo configure:1322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_two_arg_readdir_r=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_two_arg_readdir_r=no +fi +rm -f conftest* +fi + + if eval "test \"`echo '$''{'tcl_cv_three_arg_readdir_r'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +int main() { +readdir_r(NULL, NULL, NULL); +; return 0; } +EOF +if { (eval echo configure:1346: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_three_arg_readdir_r=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_three_arg_readdir_r=no +fi +rm -f conftest* +fi + + if test "x$tcl_cv_two_arg_readdir_r" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_TWO_ARG_READDIR_R 1 +EOF + + elif test "x$tcl_cv_three_arg_readdir_r" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_THREE_ARG_READDIR_R 1 +EOF + + else + { echo "configure: error: unknown number of args for readdir_r" 1>&2; exit 1; } + fi + fi else TCL_THREADS=0 echo "$ac_t""no (default)" 1>&6 @@ -1318,18 +1383,18 @@ done if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1322: checking if the compiler understands -pipe" >&5 +echo "configure:1387: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1398: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1348,7 +1413,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1352: checking how to run the C preprocessor" >&5 +echo "configure:1417: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1363,13 +1428,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1373: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1380,13 +1445,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1390: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1455: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1397,13 +1462,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1407: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1472: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1436,12 +1501,12 @@ echo "$ac_t""$CPP" 1>&6 #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1440: checking for sin" >&5 +echo "configure:1505: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1485,7 +1550,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1489: checking for main in -lieee" >&5 +echo "configure:1554: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1493,14 +1558,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1527,7 +1592,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1531: checking for main in -linet" >&5 +echo "configure:1596: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1535,14 +1600,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1564,17 +1629,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:1568: checking for net/errno.h" >&5 +echo "configure:1633: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1578: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1643: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1619,12 +1684,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1623: checking for connect" >&5 +echo "configure:1688: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1669,12 +1734,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:1673: checking for setsockopt" >&5 +echo "configure:1738: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -1715,7 +1780,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:1719: checking for setsockopt in -lsocket" >&5 +echo "configure:1784: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1723,7 +1788,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1762,12 +1827,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:1766: checking for accept" >&5 +echo "configure:1831: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -1812,12 +1877,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1816: checking for gethostbyname" >&5 +echo "configure:1881: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1858,7 +1923,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1862: checking for gethostbyname in -lnsl" >&5 +echo "configure:1927: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1866,7 +1931,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1914,7 +1979,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:1918: checking how to build libraries" >&5 +echo "configure:1983: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -1953,7 +2018,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1957: checking for $ac_word" >&5 +echo "configure:2022: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1985,7 +2050,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:1989: checking if 64bit support is requested" >&5 +echo "configure:2054: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -2005,7 +2070,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2009: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2074: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2029,7 +2094,7 @@ fi # there are a few systems, like Next, where this doesn't work. echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:2033: checking system version (for dynamic loading)" >&5 +echo "configure:2098: checking system version (for dynamic loading)" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -2055,7 +2120,7 @@ echo "configure:2033: checking system version (for dynamic loading)" >&5 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2059: checking for dlopen in -ldl" >&5 +echo "configure:2124: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2063,7 +2128,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2122,7 +2187,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2126: checking for $ac_word" >&5 +echo "configure:2191: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2263,7 +2328,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2267: checking for gettimeofday in -lbsd" >&5 +echo "configure:2332: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2271,7 +2336,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2325,7 +2390,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2329: checking for inet_ntoa in -lbind" >&5 +echo "configure:2394: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2333,7 +2398,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2410,7 +2475,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2414: checking for shl_load in -ldld" >&5 +echo "configure:2479: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2418,7 +2483,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2498,7 +2563,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2502: checking for shl_load in -ldld" >&5 +echo "configure:2567: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2506,7 +2571,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2641,17 +2706,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2645: checking for dld.h" >&5 +echo "configure:2710: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2720: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2715,17 +2780,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2719: checking for dld.h" >&5 +echo "configure:2784: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2794: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2781,17 +2846,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2785: checking for dlfcn.h" >&5 +echo "configure:2850: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2795: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2818,9 +2883,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2822: checking for ELF" >&5 +echo "configure:2887: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2876: checking for ELF" >&5 +echo "configure:2941: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:3224: checking for ld accepts -Bexport flag" >&5 +echo "configure:3289: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3271,9 +3336,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3275: checking sys/exec.h" >&5 +echo "configure:3340: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3291,7 +3356,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3295: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3360: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3309,9 +3374,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3313: checking a.out.h" >&5 +echo "configure:3378: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3329,7 +3394,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3398: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3347,9 +3412,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3351: checking sys/exec_aout.h" >&5 +echo "configure:3416: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3367,7 +3432,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3371: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3436: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3518,7 +3583,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3522: checking for build with symbols" >&5 +echo "configure:3587: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3579,21 +3644,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3583: checking for required early compiler flags" >&5 +echo "configure:3648: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3601,7 +3666,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3609,7 +3674,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3635,14 +3700,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3650,7 +3715,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3658,7 +3723,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3687,7 +3752,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3691: checking for 64-bit integer type" >&5 +echo "configure:3756: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3695,14 +3760,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3716,7 +3781,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3794: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3750,13 +3815,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3754: checking for struct dirent64" >&5 +echo "configure:3819: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3764,7 +3829,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3785,13 +3850,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3789: checking for struct stat64" >&5 +echo "configure:3854: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3799,7 +3864,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3820,13 +3885,13 @@ EOF echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:3824: checking for off64_t" >&5 +echo "configure:3889: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3834,7 +3899,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:3838: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -3861,14 +3926,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3865: checking whether byte ordering is bigendian" >&5 +echo "configure:3930: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -3879,11 +3944,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3948: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -3894,7 +3959,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -3914,7 +3979,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -3960,12 +4025,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3964: checking for $ac_func" >&5 +echo "configure:4029: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4022,12 +4087,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4026: checking for $ac_func" >&5 +echo "configure:4091: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4080,12 +4145,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4084: checking for $ac_func" >&5 +echo "configure:4149: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4135,12 +4200,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4139: checking for strerror" >&5 +echo "configure:4204: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4187,12 +4252,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4191: checking for getwd" >&5 +echo "configure:4256: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4239,12 +4304,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4243: checking for wait3" >&5 +echo "configure:4308: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4291,12 +4356,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4295: checking for uname" >&5 +echo "configure:4360: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4343,12 +4408,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4347: checking for realpath" >&5 +echo "configure:4412: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4406,9 +4471,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4410: checking dirent.h" >&5 +echo "configure:4475: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -4434,7 +4499,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -4455,17 +4520,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4459: checking for errno.h" >&5 +echo "configure:4524: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4469: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4492,17 +4557,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4496: checking for float.h" >&5 +echo "configure:4561: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4506: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4529,17 +4594,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4533: checking for values.h" >&5 +echo "configure:4598: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4543: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4608: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4566,17 +4631,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4570: checking for limits.h" >&5 +echo "configure:4635: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4580: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4606,17 +4671,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4610: checking for stdlib.h" >&5 +echo "configure:4675: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4620: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4685: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4639,7 +4704,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4653,7 +4718,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4667,7 +4732,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4688,17 +4753,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4692: checking for string.h" >&5 +echo "configure:4757: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4767: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4721,7 +4786,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4735,7 +4800,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4761,17 +4826,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4765: checking for sys/wait.h" >&5 +echo "configure:4830: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4840: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4798,17 +4863,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4802: checking for dlfcn.h" >&5 +echo "configure:4867: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4840,17 +4905,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4844: checking for $ac_hdr" >&5 +echo "configure:4909: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4890,17 +4955,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4894: checking for $ac_hdr" >&5 +echo "configure:4959: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4904: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4927,7 +4992,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:4931: checking termios vs. termio vs. sgtty" >&5 +echo "configure:4996: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4936,7 +5001,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -4951,7 +5016,7 @@ int main() { return 1; } EOF -if { (eval echo configure:4955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -4968,7 +5033,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -4982,7 +5047,7 @@ int main() { return 1; } EOF -if { (eval echo configure:4986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5000,7 +5065,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5015,7 +5080,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5033,7 +5098,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5050,7 +5115,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5068,7 +5133,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5084,7 +5149,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5102,7 +5167,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5119,7 +5184,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5162,19 +5227,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5166: checking for fd_set in sys/types" >&5 +echo "configure:5231: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5190,12 +5255,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5194: checking for fd_mask in sys/select" >&5 +echo "configure:5259: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5232,12 +5297,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5236: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5301: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5245,7 +5310,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5249: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5314: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5270,17 +5335,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5274: checking for $ac_hdr" >&5 +echo "configure:5339: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5349: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5307,12 +5372,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5311: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5376: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5321,7 +5386,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5342,12 +5407,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5346: checking for tm_zone in struct tm" >&5 +echo "configure:5411: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5355,7 +5420,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5359: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5375,12 +5440,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5379: checking for tzname" >&5 +echo "configure:5444: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5390,7 +5455,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5394: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5415,12 +5480,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5419: checking for $ac_func" >&5 +echo "configure:5484: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5469,19 +5534,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5473: checking tm_tzadj in struct tm" >&5 +echo "configure:5538: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5485: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5502,19 +5567,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5506: checking tm_gmtoff in struct tm" >&5 +echo "configure:5571: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5583: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5539,12 +5604,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5543: checking long timezone variable" >&5 +echo "configure:5608: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5553,7 +5618,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5576,12 +5641,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5580: checking time_t timezone variable" >&5 +echo "configure:5645: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5590,7 +5655,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5617,12 +5682,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5621: checking for st_blksize in struct stat" >&5 +echo "configure:5686: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5630,7 +5695,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5634: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5651,12 +5716,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5655: checking for fstatfs" >&5 +echo "configure:5720: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5708,7 +5773,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5712: checking for 8-bit clean memcmp" >&5 +echo "configure:5777: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5716,7 +5781,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5750,12 +5815,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5754: checking for memmove" >&5 +echo "configure:5819: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5811,12 +5876,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5815: checking proper strstr implementation" >&5 +echo "configure:5880: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -5852,12 +5917,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:5856: checking for strtoul" >&5 +echo "configure:5921: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -5904,7 +5969,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -5943,12 +6008,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:5947: checking for strtod" >&5 +echo "configure:6012: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -5995,7 +6060,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6037,12 +6102,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6041: checking for strtod" >&5 +echo "configure:6106: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6087,7 +6152,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6091: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6156: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6096,7 +6161,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6152,12 +6217,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6156: checking for ANSI C header files" >&5 +echo "configure:6221: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6165,7 +6230,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6182,7 +6247,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6200,7 +6265,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6221,7 +6286,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6232,7 +6297,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6256,12 +6321,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6260: checking for mode_t" >&5 +echo "configure:6325: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6289,12 +6354,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6293: checking for pid_t" >&5 +echo "configure:6358: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6322,12 +6387,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6326: checking for size_t" >&5 +echo "configure:6391: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6355,12 +6420,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6359: checking for uid_t in sys/types.h" >&5 +echo "configure:6424: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6390,12 +6455,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6394: checking for socklen_t" >&5 +echo "configure:6459: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6434,12 +6499,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6438: checking for opendir" >&5 +echo "configure:6503: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6495,12 +6560,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6499: checking union wait" >&5 +echo "configure:6564: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6512,7 +6577,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6539,12 +6604,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6543: checking for strncasecmp" >&5 +echo "configure:6608: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6589,7 +6654,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6593: checking for strncasecmp in -lsocket" >&5 +echo "configure:6658: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6597,7 +6662,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6632,7 +6697,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6636: checking for strncasecmp in -linet" >&5 +echo "configure:6701: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6640,7 +6705,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6689,12 +6754,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6693: checking for BSDgettimeofday" >&5 +echo "configure:6758: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6739,12 +6804,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6743: checking for gettimeofday" >&5 +echo "configure:6808: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6794,12 +6859,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6798: checking for gettimeofday declaration" >&5 +echo "configure:6863: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6830,14 +6895,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:6834: checking whether char is unsigned" >&5 +echo "configure:6899: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -6893,12 +6958,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:6897: checking signed char declarations" >&5 +echo "configure:6962: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -6933,7 +6998,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:6937: checking for a putenv() that copies the buffer" >&5 +echo "configure:7002: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6941,7 +7006,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -6963,7 +7028,7 @@ else } EOF -if { (eval echo configure:6967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7005,17 +7070,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7009: checking for langinfo.h" >&5 +echo "configure:7074: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7084: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7040,17 +7105,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7044: checking whether to use nl_langinfo" >&5 +echo "configure:7109: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7085,17 +7150,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7089: checking for $ac_hdr" >&5 +echo "configure:7154: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7164: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7125,17 +7190,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7129: checking for $ac_hdr" >&5 +echo "configure:7194: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7162,7 +7227,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7166: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7231: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7225,7 +7290,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7229: checking how to package libraries" >&5 +echo "configure:7294: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index a1bdc5b..1cbc199 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -478,6 +478,25 @@ AC_DEFUN(SC_ENABLE_THREADS, [ AC_CHECK_FUNCS(pthread_atfork) LIBS=$ac_saved_libs AC_CHECK_FUNCS(readdir_r) + if test "x$ac_cv_func_readdir_r" = "xyes"; then + # IRIX 5.3 has a 2 arg version of readdir_r + # while other systems have a 3 arg version. + AC_CACHE_VAL(tcl_cv_two_arg_readdir_r, + AC_TRY_COMPILE([#include +#include ], [readdir_r(NULL, NULL);], + tcl_cv_two_arg_readdir_r=yes, tcl_cv_two_arg_readdir_r=no)) + AC_CACHE_VAL(tcl_cv_three_arg_readdir_r, + AC_TRY_COMPILE([#include +#include ], [readdir_r(NULL, NULL, NULL);], + tcl_cv_three_arg_readdir_r=yes, tcl_cv_three_arg_readdir_r=no)) + if test "x$tcl_cv_two_arg_readdir_r" = "xyes" ; then + AC_DEFINE(HAVE_TWO_ARG_READDIR_R) + elif test "x$tcl_cv_three_arg_readdir_r" = "xyes" ; then + AC_DEFINE(HAVE_THREE_ARG_READDIR_R) + else + AC_MSG_ERROR([unknown number of args for readdir_r]) + fi + fi else TCL_THREADS=0 AC_MSG_RESULT([no (default)]) diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 00059df..ee080ba 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -835,8 +835,12 @@ TclpReaddir(DIR * dir) ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #ifdef HAVE_READDIR_R - ent = &tsdPtr->rdbuf.ent; + ent = &tsdPtr->rdbuf.ent; +# ifdef HAVE_TWO_ARG_READDIR_R + if (TclOSreaddir_r(dir, ent) != 0) { +# else /* HAVE_THREE_ARG_READDIR_R */ if (TclOSreaddir_r(dir, ent, &ent) != 0) { +# endif /* HAVE_TWO_ARG_READDIR_R */ ent = NULL; } -- cgit v0.12 From 59317f4e489fb79017034911d3e0fd2a01eb2b4e Mon Sep 17 00:00:00 2001 From: mdejong Date: Mon, 22 Nov 2004 23:02:44 +0000 Subject: * unix/configure: Regen. * unix/tcl.m4 (SC_TCL_64BIT_FLAGS): Define HAVE_TYPE_OFF64_T only when off64_t, open64(), and lseek64() are defined. IRIX 5.3 is known to not include an open64 function. [Bug 1030465] --- ChangeLog | 8 + unix/configure | 487 ++++++++++++++++++++++++++++++++------------------------- unix/tcl.m4 | 13 +- 3 files changed, 291 insertions(+), 217 deletions(-) diff --git a/ChangeLog b/ChangeLog index d16dada..ffa519f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,14 @@ 2004-11-22 Mo DeJong * unix/configure: Regen. + * unix/tcl.m4 (SC_TCL_64BIT_FLAGS): Define HAVE_TYPE_OFF64_T + only when off64_t, open64(), and lseek64() are defined. + IRIX 5.3 is known to not include an open64 function. + [Bug 1030465] + +2004-11-22 Mo DeJong + + * unix/configure: Regen. * unix/tcl.m4 (SC_ENABLE_THREADS): Check for a 2 argument version of readdir_r that is known to exists under IRIX 5.3. diff --git a/unix/configure b/unix/configure index d3f7ab7..a523712 100755 --- a/unix/configure +++ b/unix/configure @@ -3911,13 +3911,72 @@ fi rm -f conftest* fi - if test "x${tcl_cv_type_off64_t}" = "xyes" ; then + for ac_func in open64 lseek64 +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:3918: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:3946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + if test "x${tcl_cv_type_off64_t}" = "xyes" && \ + test "x${ac_cv_func_lseek64}" = "xyes" && \ + test "x${ac_cv_func_open64}" = "xyes" ; then cat >> confdefs.h <<\EOF #define HAVE_TYPE_OFF64_T 1 EOF + echo "$ac_t""yes" 1>&6 + else + echo "$ac_t""no" 1>&6 fi - echo "$ac_t""${tcl_cv_type_off64_t}" 1>&6 fi #-------------------------------------------------------------------- @@ -3926,14 +3985,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3930: checking whether byte ordering is bigendian" >&5 +echo "configure:3989: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -3944,11 +4003,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3948: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4007: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -3959,7 +4018,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -3979,7 +4038,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4025,12 +4084,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4029: checking for $ac_func" >&5 +echo "configure:4088: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4087,12 +4146,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4091: checking for $ac_func" >&5 +echo "configure:4150: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4145,12 +4204,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4149: checking for $ac_func" >&5 +echo "configure:4208: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4200,12 +4259,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4204: checking for strerror" >&5 +echo "configure:4263: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4252,12 +4311,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4256: checking for getwd" >&5 +echo "configure:4315: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4304,12 +4363,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4308: checking for wait3" >&5 +echo "configure:4367: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4356,12 +4415,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4360: checking for uname" >&5 +echo "configure:4419: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4408,12 +4467,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4412: checking for realpath" >&5 +echo "configure:4471: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4471,9 +4530,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4475: checking dirent.h" >&5 +echo "configure:4534: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -4499,7 +4558,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -4520,17 +4579,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4524: checking for errno.h" >&5 +echo "configure:4583: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4557,17 +4616,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4561: checking for float.h" >&5 +echo "configure:4620: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4630: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4594,17 +4653,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4598: checking for values.h" >&5 +echo "configure:4657: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4608: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4631,17 +4690,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4635: checking for limits.h" >&5 +echo "configure:4694: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4671,17 +4730,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4675: checking for stdlib.h" >&5 +echo "configure:4734: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4685: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4704,7 +4763,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4718,7 +4777,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4732,7 +4791,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4753,17 +4812,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4757: checking for string.h" >&5 +echo "configure:4816: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4767: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4786,7 +4845,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4800,7 +4859,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4826,17 +4885,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4830: checking for sys/wait.h" >&5 +echo "configure:4889: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4840: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4899: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4863,17 +4922,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4867: checking for dlfcn.h" >&5 +echo "configure:4926: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4936: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4905,17 +4964,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4909: checking for $ac_hdr" >&5 +echo "configure:4968: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4955,17 +5014,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4959: checking for $ac_hdr" >&5 +echo "configure:5018: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5028: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4992,7 +5051,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:4996: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5055: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5001,7 +5060,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5016,7 +5075,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5033,7 +5092,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5047,7 +5106,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5065,7 +5124,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5080,7 +5139,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5098,7 +5157,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5115,7 +5174,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5133,7 +5192,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5149,7 +5208,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5167,7 +5226,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5184,7 +5243,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5227,19 +5286,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5231: checking for fd_set in sys/types" >&5 +echo "configure:5290: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5255,12 +5314,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5259: checking for fd_mask in sys/select" >&5 +echo "configure:5318: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5297,12 +5356,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5301: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5360: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5310,7 +5369,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5314: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5335,17 +5394,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5339: checking for $ac_hdr" >&5 +echo "configure:5398: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5349: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5372,12 +5431,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5376: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5435: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5386,7 +5445,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5449: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5407,12 +5466,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5411: checking for tm_zone in struct tm" >&5 +echo "configure:5470: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5420,7 +5479,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5440,12 +5499,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5444: checking for tzname" >&5 +echo "configure:5503: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5455,7 +5514,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5480,12 +5539,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5484: checking for $ac_func" >&5 +echo "configure:5543: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5534,19 +5593,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5538: checking tm_tzadj in struct tm" >&5 +echo "configure:5597: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5567,19 +5626,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5571: checking tm_gmtoff in struct tm" >&5 +echo "configure:5630: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5583: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5604,12 +5663,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5608: checking long timezone variable" >&5 +echo "configure:5667: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5618,7 +5677,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5641,12 +5700,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5645: checking time_t timezone variable" >&5 +echo "configure:5704: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5655,7 +5714,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5682,12 +5741,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5686: checking for st_blksize in struct stat" >&5 +echo "configure:5745: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5695,7 +5754,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5716,12 +5775,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5720: checking for fstatfs" >&5 +echo "configure:5779: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5773,7 +5832,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5777: checking for 8-bit clean memcmp" >&5 +echo "configure:5836: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5781,7 +5840,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5815,12 +5874,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5819: checking for memmove" >&5 +echo "configure:5878: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5876,12 +5935,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5880: checking proper strstr implementation" >&5 +echo "configure:5939: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -5917,12 +5976,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:5921: checking for strtoul" >&5 +echo "configure:5980: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -5969,7 +6028,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6008,12 +6067,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6012: checking for strtod" >&5 +echo "configure:6071: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6060,7 +6119,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6102,12 +6161,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6106: checking for strtod" >&5 +echo "configure:6165: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6152,7 +6211,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6156: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6215: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6161,7 +6220,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6217,12 +6276,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6221: checking for ANSI C header files" >&5 +echo "configure:6280: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6230,7 +6289,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6293: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6247,7 +6306,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6265,7 +6324,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6286,7 +6345,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6297,7 +6356,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6321,12 +6380,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6325: checking for mode_t" >&5 +echo "configure:6384: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6354,12 +6413,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6358: checking for pid_t" >&5 +echo "configure:6417: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6387,12 +6446,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6391: checking for size_t" >&5 +echo "configure:6450: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6420,12 +6479,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6424: checking for uid_t in sys/types.h" >&5 +echo "configure:6483: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6455,12 +6514,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6459: checking for socklen_t" >&5 +echo "configure:6518: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6499,12 +6558,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6503: checking for opendir" >&5 +echo "configure:6562: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6560,12 +6619,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6564: checking union wait" >&5 +echo "configure:6623: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6577,7 +6636,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6604,12 +6663,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6608: checking for strncasecmp" >&5 +echo "configure:6667: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6654,7 +6713,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6658: checking for strncasecmp in -lsocket" >&5 +echo "configure:6717: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6662,7 +6721,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6697,7 +6756,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6701: checking for strncasecmp in -linet" >&5 +echo "configure:6760: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6705,7 +6764,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6754,12 +6813,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6758: checking for BSDgettimeofday" >&5 +echo "configure:6817: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6804,12 +6863,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6808: checking for gettimeofday" >&5 +echo "configure:6867: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6859,12 +6918,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6863: checking for gettimeofday declaration" >&5 +echo "configure:6922: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6895,14 +6954,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:6899: checking whether char is unsigned" >&5 +echo "configure:6958: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -6958,12 +7017,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:6962: checking signed char declarations" >&5 +echo "configure:7021: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7036: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -6998,7 +7057,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7002: checking for a putenv() that copies the buffer" >&5 +echo "configure:7061: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7006,7 +7065,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7028,7 +7087,7 @@ else } EOF -if { (eval echo configure:7032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7070,17 +7129,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7074: checking for langinfo.h" >&5 +echo "configure:7133: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7084: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7143: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7105,17 +7164,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7109: checking whether to use nl_langinfo" >&5 +echo "configure:7168: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7150,17 +7209,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7154: checking for $ac_hdr" >&5 +echo "configure:7213: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7164: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7223: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7190,17 +7249,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7194: checking for $ac_hdr" >&5 +echo "configure:7253: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7263: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7227,7 +7286,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7231: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7290: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7290,7 +7349,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7294: checking how to package libraries" >&5 +echo "configure:7353: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 1cbc199..197c83e 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -2525,8 +2525,15 @@ AC_DEFUN(SC_TCL_64BIT_FLAGS, [ AC_TRY_COMPILE([#include ],[off64_t offset; ], tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)]) - if test "x${tcl_cv_type_off64_t}" = "xyes" ; then - AC_DEFINE(HAVE_TYPE_OFF64_T) + AC_CHECK_FUNCS(open64 lseek64) + dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the + dnl functions lseek64 and open64 are defined. + if test "x${tcl_cv_type_off64_t}" = "xyes" && \ + test "x${ac_cv_func_lseek64}" = "xyes" && \ + test "x${ac_cv_func_open64}" = "xyes" ; then + AC_DEFINE(HAVE_TYPE_OFF64_T, 1, [Is off64_t in ?]) + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) fi - AC_MSG_RESULT(${tcl_cv_type_off64_t}) fi]) -- cgit v0.12 From dcc1ed1129283a3f510297869024d755b7a2c17a Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Tue, 23 Nov 2004 15:23:09 +0000 Subject: backport file join fix --- ChangeLog | 6 ++++++ generic/tclIOUtil.c | 16 +++++++++++++--- tests/fileSystem.test | 8 ++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ffa519f..955653a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-11-23 Vince Darley + + * generic/tclPathObj.c: fix and new test for [Bug 1043129] in + * tests/fileSystem.test: the treatment of backslashes in file + join on Windows. + 2004-11-22 Mo DeJong * unix/configure: Regen. diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 33884e0..3b0ed7c 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.18 2004/06/10 14:05:24 vasiljevic Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.19 2004/11/23 15:23:13 vincentdarley Exp $ */ #include "tclInt.h" @@ -4776,8 +4776,18 @@ Tcl_FSJoinPath(listObj, elements) */ if (str[0] != '.' && ((tclPlatform != TCL_PLATFORM_WINDOWS) || (strchr(str, '\\') == NULL))) { - Tcl_DecrRefCount(res); - return TclNewFSPathObj(elt, str, len); + /* + * Finally, on Windows, 'file join' is defined to + * convert all backslashes to forward slashes, + * so the base part cannot have backslashes either. + */ + if ((tclPlatform != TCL_PLATFORM_WINDOWS) + || (strchr(Tcl_GetString(elt), '\\') == NULL)) { + if (res != NULL) { + TclDecrRefCount(res); + } + return TclNewFSPathObj(elt, str, len); + } } /* * Otherwise we don't have an easy join, and diff --git a/tests/fileSystem.test b/tests/fileSystem.test index 7ce7746..20c04ae 100644 --- a/tests/fileSystem.test +++ b/tests/fileSystem.test @@ -555,6 +555,14 @@ test filesystem-9.5 {path objects and file tail and object rep} { set res } {test test} +test filesystem-9.6 {path objects and file join and object rep} {winOnly} { + set res {} + set p "C:\\toto" + lappend res [file join $p toto] + file isdirectory $p + lappend res [file join $p toto] +} {C:/toto/toto C:/toto/toto} + cleanupTests } namespace delete ::tcl::test::fileSystem -- cgit v0.12 From 365126d4a4f8facef8165e398eb97402b286cc16 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 24 Nov 2004 19:28:08 +0000 Subject: * generic/tclCmdIL.c (InfoVarsCmd): Corrected segfault in new * tests/info.test (info-19.6): trivial matching branch [Bug 1072654] --- ChangeLog | 5 +++++ generic/tclCmdIL.c | 14 ++++++++------ tests/info.test | 10 +++++++++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 955653a..b036b03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-23 Don Porter + + * generic/tclCmdIL.c (InfoVarsCmd): Corrected segfault in new + * tests/info.test (info-19.6): trivial matching branch [Bug 1072654] + 2004-11-23 Vince Darley * generic/tclPathObj.c: fix and new test for [Bug 1043129] in diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 5951df7..283d842 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.4 2004/10/31 16:43:30 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.5 2004/11/24 19:28:12 dgp Exp $ */ #include "tclInt.h" @@ -1991,11 +1991,13 @@ InfoVarsCmd(dummy, interp, objc, objv) } else if ((nsPtr != globalNsPtr) && !specificNsInPattern) { entryPtr = Tcl_FindHashEntry(&globalNsPtr->varTable, simplePattern); - varPtr = (Var *) Tcl_GetHashValue(entryPtr); - if (!TclIsVarUndefined(varPtr) - || (varPtr->flags & VAR_NAMESPACE_VAR)) { - Tcl_ListObjAppendElement(interp, listPtr, - Tcl_NewStringObj(simplePattern, -1)); + if (entryPtr != NULL) { + varPtr = (Var *) Tcl_GetHashValue(entryPtr); + if (!TclIsVarUndefined(varPtr) + || (varPtr->flags & VAR_NAMESPACE_VAR)) { + Tcl_ListObjAppendElement(interp, listPtr, + Tcl_NewStringObj(simplePattern, -1)); + } } } } else { diff --git a/tests/info.test b/tests/info.test index 27e6edc..0f65324 100644 --- a/tests/info.test +++ b/tests/info.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.2 2004/10/31 16:43:30 dkf Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.3 2004/11/24 19:28:13 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -608,6 +608,14 @@ test info-19.5 {info vars with temporary variables} { } t1 } {a} +test info-19.6 {info vars: Bug 1072654} -setup { + namespace eval :: unset -nocomplain foo + catch {namespace delete x} +} -body { + namespace eval x info vars foo +} -cleanup { + namespace delete x +} -result {} # Check whether the extra testing functions are defined... if {([catch {expr T1()} msg] == 1) && ($msg == {unknown math function "T1"})} { -- cgit v0.12 From c65844feb7b671bd5048f36bf763d004947c3fc1 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 24 Nov 2004 19:49:28 +0000 Subject: * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected bad check for 3-argument readdir_r [Bug 1001325]. * unix/configure: Regenerated. * unix/tclUnixNotfy.c: Corrected all uses of 'select' to manage their masks using the FD_CLR, FD_ISSET, FD_SET, and FD_ZERO macros rather than bit-whacking that failed under Solaris-Sparc-64. [Bug 1071807] --- ChangeLog | 10 + unix/configure | 664 ++++++++++++++++++++++++++-------------------------- unix/tcl.m4 | 9 +- unix/tclUnixNotfy.c | 190 ++++++++------- 4 files changed, 460 insertions(+), 413 deletions(-) diff --git a/ChangeLog b/ChangeLog index b036b03..5e9de53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-11-24 Kevin B. Kenny + + * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected bad check for + 3-argument readdir_r [Bug 1001325]. + * unix/configure: Regenerated. + * unix/tclUnixNotfy.c: Corrected all uses of 'select' to + manage their masks using the FD_CLR, FD_ISSET, FD_SET, and + FD_ZERO macros rather than bit-whacking that failed under + Solaris-Sparc-64. [Bug 1071807] + 2004-11-23 Don Porter * generic/tclCmdIL.c (InfoVarsCmd): Corrected segfault in new diff --git a/unix/configure b/unix/configure index a523712..0eb4d02 100755 --- a/unix/configure +++ b/unix/configure @@ -1304,21 +1304,24 @@ fi done if test "x$ac_cv_func_readdir_r" = "xyes"; then + echo $ac_n "checking how many args readdir_r takes""... $ac_c" 1>&6 +echo "configure:1309: checking how many args readdir_r takes" >&5 # IRIX 5.3 has a 2 arg version of readdir_r # while other systems have a 3 arg version. if eval "test \"`echo '$''{'tcl_cv_two_arg_readdir_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include #include int main() { readdir_r(NULL, NULL); ; return 0; } EOF -if { (eval echo configure:1322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_two_arg_readdir_r=yes else @@ -1334,15 +1337,16 @@ fi echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include #include int main() { readdir_r(NULL, NULL, NULL); ; return 0; } EOF -if { (eval echo configure:1346: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1350: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_three_arg_readdir_r=yes else @@ -1355,11 +1359,13 @@ rm -f conftest* fi if test "x$tcl_cv_two_arg_readdir_r" = "xyes" ; then + echo "$ac_t""2" 1>&6 cat >> confdefs.h <<\EOF #define HAVE_TWO_ARG_READDIR_R 1 EOF elif test "x$tcl_cv_three_arg_readdir_r" = "xyes" ; then + echo "$ac_t""3" 1>&6 cat >> confdefs.h <<\EOF #define HAVE_THREE_ARG_READDIR_R 1 EOF @@ -1383,18 +1389,18 @@ EOF if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1387: checking if the compiler understands -pipe" >&5 +echo "configure:1393: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1404: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1413,7 +1419,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1417: checking how to run the C preprocessor" >&5 +echo "configure:1423: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1428,13 +1434,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1444: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1445,13 +1451,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1455: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1462,13 +1468,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1472: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1478: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1501,12 +1507,12 @@ echo "$ac_t""$CPP" 1>&6 #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1505: checking for sin" >&5 +echo "configure:1511: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1550,7 +1556,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1554: checking for main in -lieee" >&5 +echo "configure:1560: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1558,14 +1564,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1592,7 +1598,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1596: checking for main in -linet" >&5 +echo "configure:1602: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1600,14 +1606,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1629,17 +1635,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:1633: checking for net/errno.h" >&5 +echo "configure:1639: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1643: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1649: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1684,12 +1690,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1688: checking for connect" >&5 +echo "configure:1694: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1734,12 +1740,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:1738: checking for setsockopt" >&5 +echo "configure:1744: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -1780,7 +1786,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:1784: checking for setsockopt in -lsocket" >&5 +echo "configure:1790: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1788,7 +1794,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1827,12 +1833,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:1831: checking for accept" >&5 +echo "configure:1837: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -1877,12 +1883,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1881: checking for gethostbyname" >&5 +echo "configure:1887: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1923,7 +1929,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1927: checking for gethostbyname in -lnsl" >&5 +echo "configure:1933: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1931,7 +1937,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1979,7 +1985,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:1983: checking how to build libraries" >&5 +echo "configure:1989: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2018,7 +2024,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2022: checking for $ac_word" >&5 +echo "configure:2028: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2050,7 +2056,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2054: checking if 64bit support is requested" >&5 +echo "configure:2060: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -2070,7 +2076,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2074: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2080: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2094,7 +2100,7 @@ fi # there are a few systems, like Next, where this doesn't work. echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:2098: checking system version (for dynamic loading)" >&5 +echo "configure:2104: checking system version (for dynamic loading)" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -2120,7 +2126,7 @@ echo "configure:2098: checking system version (for dynamic loading)" >&5 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2124: checking for dlopen in -ldl" >&5 +echo "configure:2130: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2128,7 +2134,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2187,7 +2193,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2191: checking for $ac_word" >&5 +echo "configure:2197: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2328,7 +2334,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2332: checking for gettimeofday in -lbsd" >&5 +echo "configure:2338: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2336,7 +2342,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2390,7 +2396,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2394: checking for inet_ntoa in -lbind" >&5 +echo "configure:2400: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2398,7 +2404,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2475,7 +2481,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2479: checking for shl_load in -ldld" >&5 +echo "configure:2485: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2483,7 +2489,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2563,7 +2569,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2567: checking for shl_load in -ldld" >&5 +echo "configure:2573: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2571,7 +2577,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2706,17 +2712,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2710: checking for dld.h" >&5 +echo "configure:2716: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2720: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2726: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2780,17 +2786,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2784: checking for dld.h" >&5 +echo "configure:2790: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2794: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2800: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2846,17 +2852,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2850: checking for dlfcn.h" >&5 +echo "configure:2856: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2883,9 +2889,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2887: checking for ELF" >&5 +echo "configure:2893: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2941: checking for ELF" >&5 +echo "configure:2947: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:3289: checking for ld accepts -Bexport flag" >&5 +echo "configure:3295: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3336,9 +3342,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3340: checking sys/exec.h" >&5 +echo "configure:3346: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3356,7 +3362,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3360: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3366: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3374,9 +3380,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3378: checking a.out.h" >&5 +echo "configure:3384: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3394,7 +3400,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3398: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3404: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3412,9 +3418,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3416: checking sys/exec_aout.h" >&5 +echo "configure:3422: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3432,7 +3438,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3436: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3583,7 +3589,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3587: checking for build with symbols" >&5 +echo "configure:3593: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3644,21 +3650,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3648: checking for required early compiler flags" >&5 +echo "configure:3654: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3666,7 +3672,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3674,7 +3680,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3700,14 +3706,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3717: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3715,7 +3721,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3723,7 +3729,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3752,7 +3758,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3756: checking for 64-bit integer type" >&5 +echo "configure:3762: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3760,14 +3766,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3781,7 +3787,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3800: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3815,13 +3821,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3819: checking for struct dirent64" >&5 +echo "configure:3825: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3829,7 +3835,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3839: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3850,13 +3856,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3854: checking for struct stat64" >&5 +echo "configure:3860: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3864,7 +3870,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3885,13 +3891,13 @@ EOF echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:3889: checking for off64_t" >&5 +echo "configure:3895: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3899,7 +3905,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:3903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -3914,12 +3920,12 @@ fi for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3918: checking for $ac_func" >&5 +echo "configure:3924: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3985,14 +3991,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3989: checking whether byte ordering is bigendian" >&5 +echo "configure:3995: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4003,11 +4009,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4007: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4018,7 +4024,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4038,7 +4044,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4084,12 +4090,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4088: checking for $ac_func" >&5 +echo "configure:4094: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4146,12 +4152,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4150: checking for $ac_func" >&5 +echo "configure:4156: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4204,12 +4210,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4208: checking for $ac_func" >&5 +echo "configure:4214: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4259,12 +4265,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4263: checking for strerror" >&5 +echo "configure:4269: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4311,12 +4317,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4315: checking for getwd" >&5 +echo "configure:4321: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4363,12 +4369,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4367: checking for wait3" >&5 +echo "configure:4373: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4415,12 +4421,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4419: checking for uname" >&5 +echo "configure:4425: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4467,12 +4473,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4471: checking for realpath" >&5 +echo "configure:4477: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4530,9 +4536,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4534: checking dirent.h" >&5 +echo "configure:4540: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -4558,7 +4564,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -4579,17 +4585,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4583: checking for errno.h" >&5 +echo "configure:4589: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4616,17 +4622,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4620: checking for float.h" >&5 +echo "configure:4626: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4630: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4653,17 +4659,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4657: checking for values.h" >&5 +echo "configure:4663: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4673: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4690,17 +4696,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4694: checking for limits.h" >&5 +echo "configure:4700: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4710: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4730,17 +4736,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4734: checking for stdlib.h" >&5 +echo "configure:4740: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4750: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4763,7 +4769,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4777,7 +4783,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4791,7 +4797,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4812,17 +4818,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4816: checking for string.h" >&5 +echo "configure:4822: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4845,7 +4851,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4859,7 +4865,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4885,17 +4891,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4889: checking for sys/wait.h" >&5 +echo "configure:4895: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4899: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4905: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4922,17 +4928,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4926: checking for dlfcn.h" >&5 +echo "configure:4932: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4936: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4964,17 +4970,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4968: checking for $ac_hdr" >&5 +echo "configure:4974: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5014,17 +5020,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5018: checking for $ac_hdr" >&5 +echo "configure:5024: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5028: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5051,7 +5057,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5055: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5061: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5060,7 +5066,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5075,7 +5081,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5092,7 +5098,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5106,7 +5112,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5124,7 +5130,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5139,7 +5145,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5157,7 +5163,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5174,7 +5180,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5192,7 +5198,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5208,7 +5214,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5226,7 +5232,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5243,7 +5249,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5286,19 +5292,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5290: checking for fd_set in sys/types" >&5 +echo "configure:5296: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5308: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5314,12 +5320,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5318: checking for fd_mask in sys/select" >&5 +echo "configure:5324: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5356,12 +5362,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5360: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5366: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5369,7 +5375,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5379: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5394,17 +5400,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5398: checking for $ac_hdr" >&5 +echo "configure:5404: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5414: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5431,12 +5437,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5435: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5441: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5445,7 +5451,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5449: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5466,12 +5472,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5470: checking for tm_zone in struct tm" >&5 +echo "configure:5476: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5479,7 +5485,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5499,12 +5505,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5503: checking for tzname" >&5 +echo "configure:5509: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5514,7 +5520,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5539,12 +5545,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5543: checking for $ac_func" >&5 +echo "configure:5549: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5593,19 +5599,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5597: checking tm_tzadj in struct tm" >&5 +echo "configure:5603: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5626,19 +5632,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5630: checking tm_gmtoff in struct tm" >&5 +echo "configure:5636: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5648: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5663,12 +5669,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5667: checking long timezone variable" >&5 +echo "configure:5673: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5677,7 +5683,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5687: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5700,12 +5706,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5704: checking time_t timezone variable" >&5 +echo "configure:5710: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5714,7 +5720,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5741,12 +5747,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5745: checking for st_blksize in struct stat" >&5 +echo "configure:5751: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5754,7 +5760,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5764: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5775,12 +5781,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5779: checking for fstatfs" >&5 +echo "configure:5785: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5832,7 +5838,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5836: checking for 8-bit clean memcmp" >&5 +echo "configure:5842: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5840,7 +5846,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5874,12 +5880,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5878: checking for memmove" >&5 +echo "configure:5884: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5935,12 +5941,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5939: checking proper strstr implementation" >&5 +echo "configure:5945: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -5976,12 +5982,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:5980: checking for strtoul" >&5 +echo "configure:5986: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6028,7 +6034,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6067,12 +6073,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6071: checking for strtod" >&5 +echo "configure:6077: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6119,7 +6125,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6161,12 +6167,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6165: checking for strtod" >&5 +echo "configure:6171: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6211,7 +6217,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6215: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6221: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6220,7 +6226,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6276,12 +6282,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6280: checking for ANSI C header files" >&5 +echo "configure:6286: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6289,7 +6295,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6293: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6299: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6306,7 +6312,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6324,7 +6330,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6345,7 +6351,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6356,7 +6362,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6380,12 +6386,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6384: checking for mode_t" >&5 +echo "configure:6390: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6413,12 +6419,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6417: checking for pid_t" >&5 +echo "configure:6423: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6446,12 +6452,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6450: checking for size_t" >&5 +echo "configure:6456: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6479,12 +6485,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6483: checking for uid_t in sys/types.h" >&5 +echo "configure:6489: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6514,12 +6520,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6518: checking for socklen_t" >&5 +echo "configure:6524: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6558,12 +6564,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6562: checking for opendir" >&5 +echo "configure:6568: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6619,12 +6625,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6623: checking union wait" >&5 +echo "configure:6629: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6636,7 +6642,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6663,12 +6669,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6667: checking for strncasecmp" >&5 +echo "configure:6673: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6713,7 +6719,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6717: checking for strncasecmp in -lsocket" >&5 +echo "configure:6723: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6721,7 +6727,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6756,7 +6762,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6760: checking for strncasecmp in -linet" >&5 +echo "configure:6766: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6764,7 +6770,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6813,12 +6819,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6817: checking for BSDgettimeofday" >&5 +echo "configure:6823: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6863,12 +6869,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6867: checking for gettimeofday" >&5 +echo "configure:6873: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6918,12 +6924,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6922: checking for gettimeofday declaration" >&5 +echo "configure:6928: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6954,14 +6960,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:6958: checking whether char is unsigned" >&5 +echo "configure:6964: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7017,12 +7023,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7021: checking signed char declarations" >&5 +echo "configure:7027: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7042: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7057,7 +7063,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7061: checking for a putenv() that copies the buffer" >&5 +echo "configure:7067: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7065,7 +7071,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7087,7 +7093,7 @@ else } EOF -if { (eval echo configure:7091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7129,17 +7135,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7133: checking for langinfo.h" >&5 +echo "configure:7139: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7143: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7164,17 +7170,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7168: checking whether to use nl_langinfo" >&5 +echo "configure:7174: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7209,17 +7215,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7213: checking for $ac_hdr" >&5 +echo "configure:7219: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7223: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7249,17 +7255,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7253: checking for $ac_hdr" >&5 +echo "configure:7259: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7263: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7286,7 +7292,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7290: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7296: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7349,7 +7355,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7353: checking how to package libraries" >&5 +echo "configure:7359: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 197c83e..ba0dd66 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -479,19 +479,24 @@ AC_DEFUN(SC_ENABLE_THREADS, [ LIBS=$ac_saved_libs AC_CHECK_FUNCS(readdir_r) if test "x$ac_cv_func_readdir_r" = "xyes"; then + AC_MSG_CHECKING([how many args readdir_r takes]) # IRIX 5.3 has a 2 arg version of readdir_r # while other systems have a 3 arg version. AC_CACHE_VAL(tcl_cv_two_arg_readdir_r, - AC_TRY_COMPILE([#include + AC_TRY_COMPILE([#include +#include #include ], [readdir_r(NULL, NULL);], tcl_cv_two_arg_readdir_r=yes, tcl_cv_two_arg_readdir_r=no)) AC_CACHE_VAL(tcl_cv_three_arg_readdir_r, - AC_TRY_COMPILE([#include + AC_TRY_COMPILE([#include +#include #include ], [readdir_r(NULL, NULL, NULL);], tcl_cv_three_arg_readdir_r=yes, tcl_cv_three_arg_readdir_r=no)) if test "x$tcl_cv_two_arg_readdir_r" = "xyes" ; then + AC_MSG_RESULT([2]) AC_DEFINE(HAVE_TWO_ARG_READDIR_R) elif test "x$tcl_cv_three_arg_readdir_r" = "xyes" ; then + AC_MSG_RESULT([3]) AC_DEFINE(HAVE_THREE_ARG_READDIR_R) else AC_MSG_ERROR([unknown number of args for readdir_r]) diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 233f97b..9d5e757 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.4 2004/07/16 17:24:21 andreas_kupries Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.5 2004/11/24 19:49:35 kennykb Exp $ */ #include "tclInt.h" @@ -55,6 +55,18 @@ typedef struct FileHandlerEvent { } FileHandlerEvent; /* + * + * The following structure contains a set of select() masks to track + * readable, writable, and exceptional conditions. + */ + +typedef struct SelectMasks { + fd_set readable; + fd_set writable; + fd_set exceptional; +} SelectMasks; + +/* * The following static structure contains the state information for the * select based implementation of the Tcl notifier. One of these structures * is created for each thread that is using the notifier. @@ -63,13 +75,12 @@ typedef struct FileHandlerEvent { typedef struct ThreadSpecificData { FileHandler *firstFileHandlerPtr; /* Pointer to head of file handler list. */ - fd_mask checkMasks[3*MASK_SIZE]; - /* This array is used to build up the masks + + SelectMasks checkMasks; /* This structure is used to build up the masks * to be used in the next call to select. * Bits are set in response to calls to * Tcl_CreateFileHandler. */ - fd_mask readyMasks[3*MASK_SIZE]; - /* This array reflects the readable/writable + SelectMasks readyMasks; /* This array reflects the readable/writable * conditions that were found to exist by the * last call to select. */ int numFdBits; /* Number of valid bits in checkMasks @@ -411,7 +422,6 @@ Tcl_CreateFileHandler(fd, mask, proc, clientData) { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); FileHandler *filePtr; - int index, bit; if (tclStubs.tcl_CreateFileHandler != tclOriginalNotifier.createFileHandlerProc) { tclStubs.tcl_CreateFileHandler(fd, mask, proc, clientData); @@ -439,22 +449,20 @@ Tcl_CreateFileHandler(fd, mask, proc, clientData) * Update the check masks for this file. */ - index = fd/(NBBY*sizeof(fd_mask)); - bit = 1 << (fd%(NBBY*sizeof(fd_mask))); - if (mask & TCL_READABLE) { - tsdPtr->checkMasks[index] |= bit; + if ( mask & TCL_READABLE ) { + FD_SET( fd, &(tsdPtr->checkMasks.readable) ); } else { - tsdPtr->checkMasks[index] &= ~bit; - } - if (mask & TCL_WRITABLE) { - (tsdPtr->checkMasks+MASK_SIZE)[index] |= bit; + FD_CLR( fd, &(tsdPtr->checkMasks.readable) ); + } + if ( mask & TCL_WRITABLE ) { + FD_SET( fd, &(tsdPtr->checkMasks.writable) ); } else { - (tsdPtr->checkMasks+MASK_SIZE)[index] &= ~bit; + FD_CLR( fd, &(tsdPtr->checkMasks.writable) ); } - if (mask & TCL_EXCEPTION) { - (tsdPtr->checkMasks+2*(MASK_SIZE))[index] |= bit; + if ( mask & TCL_EXCEPTION ) { + FD_SET( fd, &(tsdPtr->checkMasks.exceptional) ); } else { - (tsdPtr->checkMasks+2*(MASK_SIZE))[index] &= ~bit; + FD_CLR( fd, &(tsdPtr->checkMasks.exceptional) ); } if (tsdPtr->numFdBits <= fd) { tsdPtr->numFdBits = fd+1; @@ -483,8 +491,7 @@ Tcl_DeleteFileHandler(fd) int fd; /* Stream id for which to remove callback procedure. */ { FileHandler *filePtr, *prevPtr; - int index, bit, i; - unsigned long flags; + int i; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); if (tclStubs.tcl_DeleteFileHandler != tclOriginalNotifier.deleteFileHandlerProc) { @@ -510,17 +517,14 @@ Tcl_DeleteFileHandler(fd) * Update the check masks for this file. */ - index = fd/(NBBY*sizeof(fd_mask)); - bit = 1 << (fd%(NBBY*sizeof(fd_mask))); - if (filePtr->mask & TCL_READABLE) { - tsdPtr->checkMasks[index] &= ~bit; + FD_CLR( fd, &(tsdPtr->checkMasks.readable) ); } if (filePtr->mask & TCL_WRITABLE) { - (tsdPtr->checkMasks+MASK_SIZE)[index] &= ~bit; + FD_CLR( fd, &(tsdPtr->checkMasks.writable) ); } if (filePtr->mask & TCL_EXCEPTION) { - (tsdPtr->checkMasks+2*(MASK_SIZE))[index] &= ~bit; + FD_CLR( fd, &(tsdPtr->checkMasks.exceptional) ); } /* @@ -528,17 +532,12 @@ Tcl_DeleteFileHandler(fd) */ if (fd+1 == tsdPtr->numFdBits) { - for (tsdPtr->numFdBits = 0; index >= 0; index--) { - flags = tsdPtr->checkMasks[index] - | (tsdPtr->checkMasks+MASK_SIZE)[index] - | (tsdPtr->checkMasks+2*(MASK_SIZE))[index]; - if (flags) { - for (i = (NBBY*sizeof(fd_mask)); i > 0; i--) { - if (flags & (((unsigned long)1) << (i-1))) { - break; - } - } - tsdPtr->numFdBits = index * (NBBY*sizeof(fd_mask)) + i; + tsdPtr->numFdBits = 0; + for (i = fd-1; i >= 0; i--) { + if ( FD_ISSET( i, &(tsdPtr->checkMasks.readable) ) + || FD_ISSET( i, &(tsdPtr->checkMasks.writable) ) + || FD_ISSET( i, &(tsdPtr->checkMasks.exceptional ) ) ) { + tsdPtr->numFdBits = i+1; break; } } @@ -655,7 +654,7 @@ Tcl_WaitForEvent(timePtr) FileHandler *filePtr; FileHandlerEvent *fileEvPtr; struct timeval timeout, *timeoutPtr; - int bit, index, mask; + int mask; #ifdef TCL_THREADS int waitForFiles; #else @@ -737,7 +736,9 @@ Tcl_WaitForEvent(timePtr) write(triggerPipe, "", 1); } - memset((VOID *) tsdPtr->readyMasks, 0, 3*MASK_SIZE*sizeof(fd_mask)); + FD_ZERO( &(tsdPtr->readyMasks.readable) ); + FD_ZERO( &(tsdPtr->readyMasks.writable) ); + FD_ZERO( &(tsdPtr->readyMasks.exceptional) ); if (!tsdPtr->eventReady) { Tcl_ConditionWait(&tsdPtr->waitCV, ¬ifierMutex, timePtr); @@ -767,12 +768,14 @@ Tcl_WaitForEvent(timePtr) #else + tsdPtr->readyMasks = tsdPtr->checkMasks; memcpy((VOID *) tsdPtr->readyMasks, (VOID *) tsdPtr->checkMasks, - 3*MASK_SIZE*sizeof(fd_mask)); - numFound = select(tsdPtr->numFdBits, - (SELECT_MASK *) &tsdPtr->readyMasks[0], - (SELECT_MASK *) &tsdPtr->readyMasks[MASK_SIZE], - (SELECT_MASK *) &tsdPtr->readyMasks[2*MASK_SIZE], timeoutPtr); + sizeof( SelectMasks ) ); + numFound = select( tsdPtr->numFdBits, + &(tsdPtr->readyMasks.readable), + &(tsdPtr->readyMasks.writable), + &(tsdPtr->readyMasks.exceptional), + timeoutPtr ); /* * Some systems don't clear the masks after an error, so @@ -780,7 +783,9 @@ Tcl_WaitForEvent(timePtr) */ if (numFound == -1) { - memset((VOID *) tsdPtr->readyMasks, 0, 3*MASK_SIZE*sizeof(fd_mask)); + FD_ZERO( &(tsdPtr->readyMasks.readable ) ); + FD_ZERO( &(tsdPtr->readyMasks.writable ) ); + FD_ZERO( &(tsdPtr->readyMasks.exceptional ) ); } #endif @@ -790,17 +795,15 @@ Tcl_WaitForEvent(timePtr) for (filePtr = tsdPtr->firstFileHandlerPtr; (filePtr != NULL); filePtr = filePtr->nextPtr) { - index = filePtr->fd / (NBBY*sizeof(fd_mask)); - bit = 1 << (filePtr->fd % (NBBY*sizeof(fd_mask))); - mask = 0; - if (tsdPtr->readyMasks[index] & bit) { + mask = 0; + if ( FD_ISSET( filePtr->fd, &(tsdPtr->readyMasks.readable) ) ) { mask |= TCL_READABLE; } - if ((tsdPtr->readyMasks+MASK_SIZE)[index] & bit) { + if ( FD_ISSET( filePtr->fd, &(tsdPtr->readyMasks.writable) ) ) { mask |= TCL_WRITABLE; } - if ((tsdPtr->readyMasks+2*(MASK_SIZE))[index] & bit) { + if ( FD_ISSET( filePtr->fd, &(tsdPtr->readyMasks.exceptional) ) ) { mask |= TCL_EXCEPTION; } @@ -859,13 +862,13 @@ NotifierThreadProc(clientData) ClientData clientData; /* Not used. */ { ThreadSpecificData *tsdPtr; - fd_mask masks[3*MASK_SIZE]; - long *maskPtr = (long *)masks; /* masks[] cast to type long[] */ + fd_set readableMask; + fd_set writableMask; + fd_set exceptionalMask; int fds[2]; - int i, status, index, bit, numFdBits, receivePipe; - long found, word; + int i, status, numFdBits, receivePipe; + long found; struct timeval poll = {0., 0.}, *timePtr; - int maskSize = 3 * ((MASK_SIZE) / sizeof(long)) * sizeof(fd_mask); char buf[2]; if (pipe(fds) != 0) { @@ -913,29 +916,33 @@ NotifierThreadProc(clientData) */ while (1) { - /* - * Set up the select mask to include the receive pipe. - */ - memset((VOID *)masks, 0, 3*MASK_SIZE*sizeof(fd_mask)); - numFdBits = receivePipe + 1; - index = receivePipe / (NBBY*sizeof(fd_mask)); - bit = 1 << (receivePipe % (NBBY*sizeof(fd_mask))); - masks[index] |= bit; + FD_ZERO( &readableMask ); + FD_ZERO( &writableMask ); + FD_ZERO( &exceptionalMask ); /* - * Add in the check masks from all of the waiting notifiers. + * Compute the logical OR of the select masks from all the + * waiting notifiers. */ - + Tcl_MutexLock(¬ifierMutex); timePtr = NULL; for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { - for (i = 0; i < maskSize; i++) { - maskPtr[i] |= ((long*)tsdPtr->checkMasks)[i]; - } - if (tsdPtr->numFdBits > numFdBits) { - numFdBits = tsdPtr->numFdBits; - } + for ( i = tsdPtr->numFdBits-1; i >= 0; --i ) { + if ( FD_ISSET( i, &(tsdPtr->checkMasks.readable) ) ) { + FD_SET( i, &readableMask ); + } + if ( FD_ISSET( i, &(tsdPtr->checkMasks.writable) ) ) { + FD_SET( i, &writableMask ); + } + if ( FD_ISSET( i, &(tsdPtr->checkMasks.exceptional) ) ) { + FD_SET( i, &exceptionalMask ); + } + } + if ( tsdPtr->numFdBits > numFdBits ) { + numFdBits = tsdPtr->numFdBits; + } if (tsdPtr->pollState & POLL_WANT) { /* * Here we make sure we go through select() with the same @@ -945,14 +952,20 @@ NotifierThreadProc(clientData) tsdPtr->pollState |= POLL_DONE; timePtr = &poll; } - } + } Tcl_MutexUnlock(¬ifierMutex); - maskSize = 3 * ((MASK_SIZE) / sizeof(long)) * sizeof(fd_mask); + /* + * Set up the select mask to include the receive pipe. + */ + + if ( receivePipe >= numFdBits ) { + numFdBits = receivePipe + 1; + } + FD_SET( receivePipe, &readableMask ); - if (select(numFdBits, (SELECT_MASK *) &masks[0], - (SELECT_MASK *) &masks[MASK_SIZE], - (SELECT_MASK *) &masks[2*MASK_SIZE], timePtr) == -1) { + if ( select( numFdBits, &readableMask, &writableMask, + &exceptionalMask, timePtr) == -1 ) { /* * Try again immediately on an error. */ @@ -968,11 +981,24 @@ NotifierThreadProc(clientData) for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { found = 0; - for (i = 0; i < maskSize; i++) { - word = maskPtr[i] & ((long*)tsdPtr->checkMasks)[i]; - found |= word; - (((long*)(tsdPtr->readyMasks))[i]) = word; + for ( i = tsdPtr->numFdBits-1; i >= 0; --i ) { + if ( FD_ISSET( i, &(tsdPtr->checkMasks.readable) ) + && FD_ISSET( i, &readableMask ) ) { + FD_SET( i, &(tsdPtr->readyMasks.readable) ); + found = 1; + } + if ( FD_ISSET( i, &(tsdPtr->checkMasks.writable) ) + && FD_ISSET( i, &writableMask ) ) { + FD_SET( i, &(tsdPtr->readyMasks.writable) ); + found = 1; + } + if ( FD_ISSET( i, &(tsdPtr->checkMasks.exceptional) ) + && FD_ISSET( i, &exceptionalMask ) ) { + FD_SET( i, &(tsdPtr->readyMasks.exceptional) ); + found = 1; + } } + if (found || (tsdPtr->pollState & POLL_DONE)) { tsdPtr->eventReady = 1; if (tsdPtr->onList) { @@ -1006,7 +1032,7 @@ NotifierThreadProc(clientData) * to avoid a race condition we only read one at a time. */ - if (masks[index] & bit) { + if ( FD_ISSET( receivePipe, &readableMask ) ) { i = read(receivePipe, buf, 1); if ((i == 0) || ((i == 1) && (buf[0] == 'q'))) { -- cgit v0.12 From 41d7843d1c92d49fc532be60eb3773272770d1a6 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 24 Nov 2004 20:19:22 +0000 Subject: took out redundant memcpy from tclUnixNotfy.c --- unix/tclUnixNotfy.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 9d5e757..385e4d7 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.5 2004/11/24 19:49:35 kennykb Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.6 2004/11/24 20:19:22 kennykb Exp $ */ #include "tclInt.h" @@ -769,8 +769,6 @@ Tcl_WaitForEvent(timePtr) #else tsdPtr->readyMasks = tsdPtr->checkMasks; - memcpy((VOID *) tsdPtr->readyMasks, (VOID *) tsdPtr->checkMasks, - sizeof( SelectMasks ) ); numFound = select( tsdPtr->numFdBits, &(tsdPtr->readyMasks.readable), &(tsdPtr->readyMasks.writable), -- cgit v0.12 From 87d3df0781d59d8f5d02e06ef8ce2dd68d972915 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 25 Nov 2004 00:19:24 +0000 Subject: bumped patchlevel to 8.4.9 --- ChangeLog | 8 ++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 24 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5e9de53..43b835b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-11-24 Jeff Hobbs + + * README: Bumped patchlevel to 8.4.9 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/tcl.spec, unix/configure, unix/configure.in: + * win/configure, win/configure.in: + 2004-11-24 Kevin B. Kenny * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected bad check for diff --git a/README b/README index e0d3ab2..e7488c3 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.8 source distribution. + This is the Tcl 8.4.9 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.8 2004/10/28 16:42:04 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.9 2004/11/25 00:19:27 hobbs Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 174e4af..75418e3 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.15 2004/10/28 16:42:04 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.16 2004/11/25 00:19:27 hobbs Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 8 +#define TCL_RELEASE_SERIAL 9 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.8" +#define TCL_PATCH_LEVEL "8.4.9" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 8072252..ac54599 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.8 + Disk Label=tcl8.4.9 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 0eb4d02..c1a927f 100755 --- a/unix/configure +++ b/unix/configure @@ -552,7 +552,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".8" +TCL_PATCH_LEVEL=".9" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index bc91be2..4368615 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.11 2004/11/19 06:29:25 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.12 2004/11/25 00:19:33 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".8" +TCL_PATCH_LEVEL=".9" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 893c7da..815a5c3 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.8 2004/10/28 16:42:12 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.9 2004/11/25 00:19:33 hobbs Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.8 +%define version 8.4.9 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index 3cf01a4..231ad47 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.8 2004/10/28 16:42:12 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.9 2004/11/25 00:19:33 hobbs Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.8 for +This directory contains the binary distribution of Tcl/Tk 8.4.9 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 631e28c..6a8cd7a 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".8" +TCL_PATCH_LEVEL=".9" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index bfcd2df8..1119445 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.10 2004/10/28 16:42:14 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.11 2004/11/25 00:19:36 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".8" +TCL_PATCH_LEVEL=".9" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 51720be334004d3e0c19d217e974419ec8342906 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 25 Nov 2004 01:31:54 +0000 Subject: * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected failure to determine the number of arguments for readdir_r on SunOS systems. [Bug 1071701] * unix/configure: autoconf-2.13 --- ChangeLog | 7 + unix/configure | 730 +++++++++++++++++++++++++++++---------------------------- unix/tcl.m4 | 19 +- 3 files changed, 398 insertions(+), 358 deletions(-) diff --git a/ChangeLog b/ChangeLog index 43b835b..4068b74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-11-24 Don Porter + + * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected failure to determine + the number of arguments for readdir_r on SunOS systems. [Bug 1071701] + + * unix/configure: autoconf-2.13 + 2004-11-24 Jeff Hobbs * README: Bumped patchlevel to 8.4.9 diff --git a/unix/configure b/unix/configure index c1a927f..6d429bc 100755 --- a/unix/configure +++ b/unix/configure @@ -895,12 +895,18 @@ EOF #define _REENTRANT 1 EOF + if test "`uname -s`" = "SunOS" ; then + cat >> confdefs.h <<\EOF +#define _POSIX_PTHREAD_SEMANTICS 1 +EOF + + fi cat >> confdefs.h <<\EOF #define _THREAD_SAFE 1 EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:904: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:910: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -908,7 +914,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -947,7 +953,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:951: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:957: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -955,7 +961,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -994,7 +1000,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:998: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:1004: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1002,7 +1008,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1039,7 +1045,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1043: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1049: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1047,7 +1053,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1081,7 +1087,7 @@ fi if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1085: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1091: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1089,7 +1095,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1140,12 +1146,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1144: checking for $ac_func" >&5 +echo "configure:1150: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1195,12 +1201,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1199: checking for $ac_func" >&5 +echo "configure:1205: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1251,12 +1257,12 @@ done for ac_func in readdir_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1255: checking for $ac_func" >&5 +echo "configure:1261: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1305,23 +1311,29 @@ done if test "x$ac_cv_func_readdir_r" = "xyes"; then echo $ac_n "checking how many args readdir_r takes""... $ac_c" 1>&6 -echo "configure:1309: checking how many args readdir_r takes" >&5 +echo "configure:1315: checking how many args readdir_r takes" >&5 # IRIX 5.3 has a 2 arg version of readdir_r # while other systems have a 3 arg version. if eval "test \"`echo '$''{'tcl_cv_two_arg_readdir_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include -#include +#ifdef NO_DIRENT_H +# include /* logic from tcl/compat/dirent.h * +# define dirent direct * */ +#else +# include +#endif + int main() { readdir_r(NULL, NULL); ; return 0; } EOF -if { (eval echo configure:1325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_two_arg_readdir_r=yes else @@ -1337,16 +1349,22 @@ fi echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include -#include +#ifdef NO_DIRENT_H +# include /* logic from tcl/compat/dirent.h * +# define dirent direct * */ +#else +# include +#endif + int main() { readdir_r(NULL, NULL, NULL); ; return 0; } EOF -if { (eval echo configure:1350: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_three_arg_readdir_r=yes else @@ -1389,18 +1407,18 @@ EOF if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1393: checking if the compiler understands -pipe" >&5 +echo "configure:1411: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1419,7 +1437,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1423: checking how to run the C preprocessor" >&5 +echo "configure:1441: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1434,13 +1452,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1444: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1451,13 +1469,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1468,13 +1486,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1478: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1507,12 +1525,12 @@ echo "$ac_t""$CPP" 1>&6 #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1511: checking for sin" >&5 +echo "configure:1529: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1556,7 +1574,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1560: checking for main in -lieee" >&5 +echo "configure:1578: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1564,14 +1582,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1598,7 +1616,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1602: checking for main in -linet" >&5 +echo "configure:1620: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1606,14 +1624,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1635,17 +1653,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:1639: checking for net/errno.h" >&5 +echo "configure:1657: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1649: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1690,12 +1708,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1694: checking for connect" >&5 +echo "configure:1712: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1740,12 +1758,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:1744: checking for setsockopt" >&5 +echo "configure:1762: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -1786,7 +1804,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:1790: checking for setsockopt in -lsocket" >&5 +echo "configure:1808: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1794,7 +1812,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1833,12 +1851,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:1837: checking for accept" >&5 +echo "configure:1855: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -1883,12 +1901,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1887: checking for gethostbyname" >&5 +echo "configure:1905: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1929,7 +1947,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1933: checking for gethostbyname in -lnsl" >&5 +echo "configure:1951: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1937,7 +1955,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1985,7 +2003,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:1989: checking how to build libraries" >&5 +echo "configure:2007: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2024,7 +2042,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2028: checking for $ac_word" >&5 +echo "configure:2046: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2056,7 +2074,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2060: checking if 64bit support is requested" >&5 +echo "configure:2078: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -2076,7 +2094,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2080: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2098: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2100,7 +2118,7 @@ fi # there are a few systems, like Next, where this doesn't work. echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:2104: checking system version (for dynamic loading)" >&5 +echo "configure:2122: checking system version (for dynamic loading)" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -2126,7 +2144,7 @@ echo "configure:2104: checking system version (for dynamic loading)" >&5 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2130: checking for dlopen in -ldl" >&5 +echo "configure:2148: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2134,7 +2152,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2193,7 +2211,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2197: checking for $ac_word" >&5 +echo "configure:2215: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2334,7 +2352,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2338: checking for gettimeofday in -lbsd" >&5 +echo "configure:2356: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2342,7 +2360,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2396,7 +2414,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2400: checking for inet_ntoa in -lbind" >&5 +echo "configure:2418: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2404,7 +2422,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2481,7 +2499,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2485: checking for shl_load in -ldld" >&5 +echo "configure:2503: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2489,7 +2507,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2569,7 +2587,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2573: checking for shl_load in -ldld" >&5 +echo "configure:2591: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2577,7 +2595,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2712,17 +2730,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2716: checking for dld.h" >&5 +echo "configure:2734: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2726: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2786,17 +2804,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2790: checking for dld.h" >&5 +echo "configure:2808: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2800: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2852,17 +2870,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2856: checking for dlfcn.h" >&5 +echo "configure:2874: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2884: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2889,9 +2907,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2893: checking for ELF" >&5 +echo "configure:2911: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2947: checking for ELF" >&5 +echo "configure:2965: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:3295: checking for ld accepts -Bexport flag" >&5 +echo "configure:3313: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3342,9 +3360,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3346: checking sys/exec.h" >&5 +echo "configure:3364: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3362,7 +3380,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3366: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3384: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3380,9 +3398,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3384: checking a.out.h" >&5 +echo "configure:3402: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3400,7 +3418,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3404: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3418,9 +3436,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3422: checking sys/exec_aout.h" >&5 +echo "configure:3440: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3438,7 +3456,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3460: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3589,7 +3607,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3593: checking for build with symbols" >&5 +echo "configure:3611: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3650,21 +3668,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3654: checking for required early compiler flags" >&5 +echo "configure:3672: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3672,7 +3690,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3680,7 +3698,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3706,14 +3724,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3717: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3721,7 +3739,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3729,7 +3747,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3751: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3758,7 +3776,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3762: checking for 64-bit integer type" >&5 +echo "configure:3780: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3766,14 +3784,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3787,7 +3805,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3821,13 +3839,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3825: checking for struct dirent64" >&5 +echo "configure:3843: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3835,7 +3853,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3839: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3856,13 +3874,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3860: checking for struct stat64" >&5 +echo "configure:3878: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3870,7 +3888,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3892: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3891,13 +3909,13 @@ EOF echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:3895: checking for off64_t" >&5 +echo "configure:3913: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3905,7 +3923,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:3909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -3920,12 +3938,12 @@ fi for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3924: checking for $ac_func" >&5 +echo "configure:3942: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3991,14 +4009,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3995: checking whether byte ordering is bigendian" >&5 +echo "configure:4013: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4009,11 +4027,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4031: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4024,7 +4042,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4044,7 +4062,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4090,12 +4108,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4094: checking for $ac_func" >&5 +echo "configure:4112: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4152,12 +4170,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4156: checking for $ac_func" >&5 +echo "configure:4174: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4210,12 +4228,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4214: checking for $ac_func" >&5 +echo "configure:4232: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4265,12 +4283,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4269: checking for strerror" >&5 +echo "configure:4287: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4317,12 +4335,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4321: checking for getwd" >&5 +echo "configure:4339: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4369,12 +4387,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4373: checking for wait3" >&5 +echo "configure:4391: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4421,12 +4439,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4425: checking for uname" >&5 +echo "configure:4443: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4473,12 +4491,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4477: checking for realpath" >&5 +echo "configure:4495: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4536,9 +4554,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4540: checking dirent.h" >&5 +echo "configure:4558: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -4564,7 +4582,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -4585,17 +4603,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4589: checking for errno.h" >&5 +echo "configure:4607: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4622,17 +4640,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4626: checking for float.h" >&5 +echo "configure:4644: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4659,17 +4677,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4663: checking for values.h" >&5 +echo "configure:4681: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4673: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4696,17 +4714,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4700: checking for limits.h" >&5 +echo "configure:4718: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4710: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4728: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4736,17 +4754,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4740: checking for stdlib.h" >&5 +echo "configure:4758: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4750: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4769,7 +4787,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4783,7 +4801,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4797,7 +4815,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4818,17 +4836,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4822: checking for string.h" >&5 +echo "configure:4840: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4850: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4851,7 +4869,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4865,7 +4883,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4891,17 +4909,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4895: checking for sys/wait.h" >&5 +echo "configure:4913: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4905: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4928,17 +4946,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4932: checking for dlfcn.h" >&5 +echo "configure:4950: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4960: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4970,17 +4988,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4974: checking for $ac_hdr" >&5 +echo "configure:4992: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5020,17 +5038,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5024: checking for $ac_hdr" >&5 +echo "configure:5042: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5052: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5057,7 +5075,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5061: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5079: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5066,7 +5084,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5081,7 +5099,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5098,7 +5116,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5112,7 +5130,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5130,7 +5148,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5145,7 +5163,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5163,7 +5181,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5180,7 +5198,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5198,7 +5216,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5214,7 +5232,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5232,7 +5250,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5249,7 +5267,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5292,19 +5310,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5296: checking for fd_set in sys/types" >&5 +echo "configure:5314: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5308: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5320,12 +5338,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5324: checking for fd_mask in sys/select" >&5 +echo "configure:5342: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5362,12 +5380,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5366: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5384: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5375,7 +5393,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5379: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5400,17 +5418,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5404: checking for $ac_hdr" >&5 +echo "configure:5422: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5414: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5437,12 +5455,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5441: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5459: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5451,7 +5469,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5472,12 +5490,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5476: checking for tm_zone in struct tm" >&5 +echo "configure:5494: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5485,7 +5503,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5505,12 +5523,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5509: checking for tzname" >&5 +echo "configure:5527: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5520,7 +5538,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5545,12 +5563,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5549: checking for $ac_func" >&5 +echo "configure:5567: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5599,19 +5617,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5603: checking tm_tzadj in struct tm" >&5 +echo "configure:5621: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5632,19 +5650,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5636: checking tm_gmtoff in struct tm" >&5 +echo "configure:5654: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5648: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5669,12 +5687,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5673: checking long timezone variable" >&5 +echo "configure:5691: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5683,7 +5701,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5687: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5705: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5706,12 +5724,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5710: checking time_t timezone variable" >&5 +echo "configure:5728: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5720,7 +5738,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5742: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5747,12 +5765,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5751: checking for st_blksize in struct stat" >&5 +echo "configure:5769: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5760,7 +5778,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5764: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5781,12 +5799,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5785: checking for fstatfs" >&5 +echo "configure:5803: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5838,7 +5856,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5842: checking for 8-bit clean memcmp" >&5 +echo "configure:5860: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5846,7 +5864,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5880,12 +5898,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5884: checking for memmove" >&5 +echo "configure:5902: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5941,12 +5959,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5945: checking proper strstr implementation" >&5 +echo "configure:5963: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -5982,12 +6000,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:5986: checking for strtoul" >&5 +echo "configure:6004: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6034,7 +6052,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6073,12 +6091,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6077: checking for strtod" >&5 +echo "configure:6095: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6125,7 +6143,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6167,12 +6185,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6171: checking for strtod" >&5 +echo "configure:6189: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6217,7 +6235,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6221: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6239: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6226,7 +6244,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6282,12 +6300,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6286: checking for ANSI C header files" >&5 +echo "configure:6304: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6295,7 +6313,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6299: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6312,7 +6330,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6330,7 +6348,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6351,7 +6369,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6362,7 +6380,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6386,12 +6404,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6390: checking for mode_t" >&5 +echo "configure:6408: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6419,12 +6437,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6423: checking for pid_t" >&5 +echo "configure:6441: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6452,12 +6470,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6456: checking for size_t" >&5 +echo "configure:6474: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6485,12 +6503,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6489: checking for uid_t in sys/types.h" >&5 +echo "configure:6507: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6520,12 +6538,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6524: checking for socklen_t" >&5 +echo "configure:6542: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6564,12 +6582,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6568: checking for opendir" >&5 +echo "configure:6586: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6625,12 +6643,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6629: checking union wait" >&5 +echo "configure:6647: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6642,7 +6660,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6669,12 +6687,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6673: checking for strncasecmp" >&5 +echo "configure:6691: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6719,7 +6737,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6723: checking for strncasecmp in -lsocket" >&5 +echo "configure:6741: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6727,7 +6745,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6762,7 +6780,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6766: checking for strncasecmp in -linet" >&5 +echo "configure:6784: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6770,7 +6788,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6819,12 +6837,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6823: checking for BSDgettimeofday" >&5 +echo "configure:6841: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6869,12 +6887,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6873: checking for gettimeofday" >&5 +echo "configure:6891: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6924,12 +6942,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6928: checking for gettimeofday declaration" >&5 +echo "configure:6946: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6960,14 +6978,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:6964: checking whether char is unsigned" >&5 +echo "configure:6982: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7023,12 +7041,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7027: checking signed char declarations" >&5 +echo "configure:7045: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7060: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7063,7 +7081,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7067: checking for a putenv() that copies the buffer" >&5 +echo "configure:7085: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7071,7 +7089,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7093,7 +7111,7 @@ else } EOF -if { (eval echo configure:7097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7135,17 +7153,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7139: checking for langinfo.h" >&5 +echo "configure:7157: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7167: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7170,17 +7188,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7174: checking whether to use nl_langinfo" >&5 +echo "configure:7192: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7215,17 +7233,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7219: checking for $ac_hdr" >&5 +echo "configure:7237: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7255,17 +7273,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7259: checking for $ac_hdr" >&5 +echo "configure:7277: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7292,7 +7310,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7296: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7314: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7355,7 +7373,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7359: checking how to package libraries" >&5 +echo "configure:7377: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index ba0dd66..2ebb13a 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -435,6 +435,9 @@ AC_DEFUN(SC_ENABLE_THREADS, [ # allocator that significantly reduces lock contention AC_DEFINE(USE_THREAD_ALLOC) AC_DEFINE(_REENTRANT) + if test "`uname -s`" = "SunOS" ; then + AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) + fi AC_DEFINE(_THREAD_SAFE) AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no) if test "$tcl_ok" = "no"; then @@ -485,12 +488,24 @@ AC_DEFUN(SC_ENABLE_THREADS, [ AC_CACHE_VAL(tcl_cv_two_arg_readdir_r, AC_TRY_COMPILE([#include #include -#include ], [readdir_r(NULL, NULL);], +#ifdef NO_DIRENT_H +# include /* logic from tcl/compat/dirent.h * +# define dirent direct * */ +#else +# include +#endif +], [readdir_r(NULL, NULL);], tcl_cv_two_arg_readdir_r=yes, tcl_cv_two_arg_readdir_r=no)) AC_CACHE_VAL(tcl_cv_three_arg_readdir_r, AC_TRY_COMPILE([#include #include -#include ], [readdir_r(NULL, NULL, NULL);], +#ifdef NO_DIRENT_H +# include /* logic from tcl/compat/dirent.h * +# define dirent direct * */ +#else +# include +#endif +], [readdir_r(NULL, NULL, NULL);], tcl_cv_three_arg_readdir_r=yes, tcl_cv_three_arg_readdir_r=no)) if test "x$tcl_cv_two_arg_readdir_r" = "xyes" ; then AC_MSG_RESULT([2]) -- cgit v0.12 From 5f80a835f062d49a8a1c829de7e649fc0c3b439a Mon Sep 17 00:00:00 2001 From: rmax Date: Thu, 25 Nov 2004 11:31:30 +0000 Subject: * tests/tcltest.test: The order in which [glob] returns the file names * tests/fCmd.test: is undefined, so tests should not depend on it. --- ChangeLog | 5 +++++ tests/fCmd.test | 6 +++--- tests/tcltest.test | 6 +++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4068b74..b23ce5e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-25 Reinhard Max + + * tests/tcltest.test: The order in which [glob] returns the file names + * tests/fCmd.test: is undefined, so tests should not depend on it. + 2004-11-24 Don Porter * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected failure to determine diff --git a/tests/fCmd.test b/tests/fCmd.test index 6d3d059..bb94d42 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.26.2.5 2004/11/11 01:15:29 das Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.26.2.6 2004/11/25 11:31:31 rmax Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -2373,10 +2373,10 @@ test fCmd-28.16 {file link: glob inside link} {linkDirectory} { cd [temporaryDirectory] file delete -force abc.link file link abc.link abc.dir - set res [glob -dir abc.link -tails *] + set res [lsort [glob -dir abc.link -tails *]] cd [workingDirectory] set res -} {abc.file abc2.file} +} [lsort [list abc.file abc2.file]] test fCmd-28.17 {file link: glob -type l} {linkDirectory} { cd [temporaryDirectory] diff --git a/tests/tcltest.test b/tests/tcltest.test index c6ee2a1..99efabf 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.7 2004/11/11 01:16:36 das Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.8 2004/11/25 11:31:32 rmax Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -980,7 +980,7 @@ test tcltest-15.1 {basic directory walking} { } -match regexp -returnCodes 1 - -result {Tests located in:.*dirtestdir.*Tests located in:.*dirtestdir2.1.*Tests located in:.*dirtestdir2.2.*Tests located in:.*dirtestdir2.3} + -result {Tests located in:.*dirtestdir.*Tests located in:.*dirtestdir2.[123].*Tests located in:.*dirtestdir2.[123].*Tests located in:.*dirtestdir2.[123]} } test tcltest-15.2 {-asidefromdir} { @@ -995,7 +995,7 @@ test tcltest-15.2 {-asidefromdir} { } -match regexp -returnCodes 1 - -result {Tests located in:.*dirtestdir.*Tests located in:.*dirtestdir2.1.*Tests located in:.*dirtestdir2.2.*dirtestdir2.2 test ended at .*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + -result {Tests located in:.*dirtestdir.*Tests located in:.*dirtestdir2.[12].*Tests located in:.*dirtestdir2.[12].*dirtestdir2.[12] test ended at .*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Error: No test files remain after applying your match and skip patterns! Error: No test files remain after applying your match and skip patterns! Error: No test files remain after applying your match and skip patterns!$} -- cgit v0.12 From d3b261e0abbc86f69c072592a893a39c6b80a97f Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 25 Nov 2004 15:28:37 +0000 Subject: Fixed the Tcl_ThreadAlert() call declaration (Tcl Bug #1068077) --- doc/Notifier.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/Notifier.3 b/doc/Notifier.3 index d7e8b98..e3b8648 100644 --- a/doc/Notifier.3 +++ b/doc/Notifier.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Notifier.3,v 1.9 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: Notifier.3,v 1.9.2.1 2004/11/25 15:28:37 vasiljevic Exp $ '\" .so man.macros .TH Notifier 3 8.1 Tcl "Tcl Library Procedures" @@ -33,7 +33,7 @@ void \fBTcl_ThreadQueueEvent\fR(\fIthreadId, evPtr, position\fR) .sp void -\fBTcl_ThreadAlert\fR(\fIthreadId, clientData\fR) +\fBTcl_ThreadAlert\fR(\fIthreadId\fR) .sp Tcl_ThreadId \fBTcl_GetCurrentThread\fR() -- cgit v0.12 From 934b635a2002f06367bc4cf4bd2587f186d949e4 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 25 Nov 2004 15:31:18 +0000 Subject: Fixed argument of mutexPtr wrongly saying that it is a Tcl_Condition. (Tcl Bug #1068077) --- doc/Thread.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/Thread.3 b/doc/Thread.3 index f65c6e3..f319d7b 100644 --- a/doc/Thread.3 +++ b/doc/Thread.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Thread.3,v 1.14 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: Thread.3,v 1.14.2.1 2004/11/25 15:31:18 vasiljevic Exp $ '\" .so man.macros .TH Threads 3 "8.1" Tcl "Tcl Library Procedures" @@ -46,7 +46,7 @@ int .AS Tcl_ThreadDataKey *keyPtr .AP Tcl_Condition *condPtr in A condition variable, which must be associated with a mutex lock. -.AP Tcl_Condition *mutexPtr in +.AP Tcl_Mutex *mutexPtr in A mutex lock. .AP Tcl_Time *timePtr in A time limit on the condition wait. NULL to wait forever. -- cgit v0.12 From 7cefe4760b216421768f62234f6ddfb702008de0 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 25 Nov 2004 15:48:52 +0000 Subject: Added hint to TCL_DECLARE_MUTEX macro usage. --- doc/Thread.3 | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/Thread.3 b/doc/Thread.3 index f319d7b..ba33882 100644 --- a/doc/Thread.3 +++ b/doc/Thread.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Thread.3,v 1.14.2.1 2004/11/25 15:31:18 vasiljevic Exp $ +'\" RCS: @(#) $Id: Thread.3,v 1.14.2.2 2004/11/25 15:48:52 vasiljevic Exp $ '\" .so man.macros .TH Threads 3 "8.1" Tcl "Tcl Library Procedures" @@ -140,8 +140,9 @@ creating multithreaded scripts (for example, scripts that could spawn a Tcl interpreter in a separate thread). If you need to add this feature at this time, see the \fItclThreadTest.c\fR file in the Tcl source distribution for an experimental implementation -of a Tcl "Thread" package implementing thread creation and management -commands at the script level. +or use the Tcl "Threading Extension" package implementing thread creation +and management commands at the script level. + .SH DESCRIPTION A mutex is a lock that is used to serialize all threads through a piece @@ -155,6 +156,9 @@ On some platforms it will result in a deadlock. .VE The \fBTcl_MutexLock\fR, \fBTcl_MutexUnlock\fR and \fBTcl_MutexFinalize\fR procedures are defined as empty macros if not compiling with threads enabled. +For declaration of mutexes the \fBTCL_DECLARE_MUTEX\fR macro should be used. +This macro assures correct mutex handling even when the core is compiled +without threads enabled. .PP A condition variable is used as a signaling mechanism: a thread can lock a mutex and then wait on a condition variable -- cgit v0.12 From 0495bcad44b67ce4cb036f432a64e4930ac05d62 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 25 Nov 2004 15:53:41 +0000 Subject: See file --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index b23ce5e..181883a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-25 Zoran Vasiljevic + + * doc/Notify.3: + * doc/Thread.3: Added doc fixes and hints from Tcl Bug #1068077. + 2004-11-25 Reinhard Max * tests/tcltest.test: The order in which [glob] returns the file names -- cgit v0.12 From d7f5fc75acab70dbdea0f73bff1011945e7330d4 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 26 Nov 2004 09:37:29 +0000 Subject: Assorted dde fixes as requested by Andreas Kupries. --- ChangeLog | 19 ++++++++++++------- doc/dde.n | 32 +++++++++++++++----------------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 181883a..73fa657 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-26 Donal K. Fellows + + * doc/dde.n: Resynchonized the documentation with itself and fixed + some formatting errors. + 2004-11-25 Zoran Vasiljevic * doc/Notify.3: @@ -10,10 +15,10 @@ 2004-11-24 Don Porter - * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected failure to determine - the number of arguments for readdir_r on SunOS systems. [Bug 1071701] + * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected failure to determine + the number of arguments for readdir_r on SunOS systems. [Bug 1071701] - * unix/configure: autoconf-2.13 + * unix/configure: autoconf-2.13 2004-11-24 Jeff Hobbs @@ -213,9 +218,9 @@ 2004-10-29 Don Porter - * library/tcltest/tcltest.tcl: Correct reaction to errors in the - obsolete processCmdLineArgsHook. [Bug 1055673] - * library/tcltest/pkgIndex.tcl: Bump to tcltest 2.2.7 + * library/tcltest/tcltest.tcl: Correct reaction to errors in the + obsolete processCmdLineArgsHook. [Bug 1055673] + * library/tcltest/pkgIndex.tcl: Bump to tcltest 2.2.7 2004-10-28 Andreas Kupries @@ -1149,7 +1154,7 @@ * library/tcltest/tcltest.tcl: Corrected references to non-existent $name variable in [cleanupTests]. [Bug 833637] - + 2004-02-03 Don Porter * library/tcltest/tcltest.tcl: Corrected parsing of single diff --git a/doc/dde.n b/doc/dde.n index 925d622..f15de7d 100644 --- a/doc/dde.n +++ b/doc/dde.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: dde.n,v 1.8.2.2 2004/10/27 14:23:56 dkf Exp $ +'\" RCS: @(#) $Id: dde.n,v 1.8.2.3 2004/11/26 09:37:39 dkf Exp $ '\" .so man.macros .TH dde n 1.2 dde "Tcl Bundled Packages" @@ -17,17 +17,17 @@ dde \- Execute a Dynamic Data Exchange command .sp \fBpackage require dde 1.2\fR .sp -\fBdde \fIservername\fR ?\fItopic\fR? +\fBdde eval\fR ?\fB\-async\fR? \fIservice cmd\fR ?\fIarg ...\fR? .sp -\fBdde \fIexecute\fR ?\fI\-async\fR? \fIservice topic \fR?\fIdata\fR? +\fBdde execute\fR ?\fB\-async\fR? \fIservice topic data\fR .sp -\fBdde \fIpoke\fR \fIservice topic item data\fR +\fBdde poke \fIservice topic item data\fR .sp -\fBdde \fIrequest\fR ?\fI\-binary\fR? \fIservice topic \fR?\fIdata\fR? +\fBdde request\fR ?\fB\-binary\fR? \fIservice topic data\fR .sp -\fBdde \fIservices\fR \fIservice topic \fR?\fIdata\fR? +\fBdde servername\fR ?\fItopic\fR? .sp -\fBdde \fIeval\fR ?\fI\-async\fR? \fIservice topic \fR?\fIdata\fR? +\fBdde services \fIservice topic\fR .BE .SH DESCRIPTION @@ -39,12 +39,11 @@ transaction needs a \fIservice name\fR and a \fItopic\fR. Both the \fIservice name\fR and \fItopic\fR are application defined; Tcl uses the service name \fBTclEval\fR, while the topic name is the name of the interpreter given by \fBdde servername\fR. Other applications have their -own \fIservice names\fR and \fItopics\fR. For instance, Microsoft Excel +own \fIservice name\fRs and \fItopic\fRs. For instance, Microsoft Excel has the service name \fBExcel\fR. .PP The \fBeval\fR and \fBexecute\fR commands accept the option \fB\-async\fR: .TP - .SH "DDE COMMANDS" .PP The following commands are a subset of the full Dynamic Data Exchange @@ -56,13 +55,13 @@ the service name \fBTclEval\fR and the topic name specified by \fItopic\fR. If no \fItopic\fR is given, \fBdde servername\fR returns the name of the current topic or the empty string if it is not registered as a service. .TP -\fBdde execute\fR ?\fI\-async\fR? \fIservice topic data\fR +\fBdde execute\fR ?\fB\-async\fR? \fIservice topic data\fR \fBdde execute\fR takes the \fIdata\fR and sends it to the server indicated by \fIservice\fR with the topic indicated by \fItopic\fR. Typically, \fIservice\fR is the name of an application, and \fItopic\fR is a file to work on. The \fIdata\fR field is given to the remote application. Typically, the application treats the \fIdata\fR field as a script, and the -script is run in the application. The \fI\-async\fR option requests +script is run in the application. The \fB\-async\fR option requests asynchronous invocation. The command returns an error message if the script did not run, unless the \fB\-async\fR flag was used, in which case the command returns immediately with no error. @@ -76,14 +75,14 @@ on. The \fIitem\fR is also application specific and is often not used, but it must always be non-null. The \fIdata\fR field is given to the remote application. .TP -\fBdde request\fR ?\fI\-binary\fR? \fIservice topic item\fR +\fBdde request\fR ?\fB\-binary\fR? \fIservice topic item\fR \fBdde request\fR is typically used to get the value of something; the value of a cell in Microsoft Excel or the text of a selection in Microsoft Word. \fIservice\fR is typically the name of an application, \fItopic\fR is typically the name of the file, and \fIitem\fR is application-specific. The command returns the value of \fIitem\fR as defined in the application. Normally this is interpreted to be a -string with terminating null. If \fI\-binary\fR is specified, the +string with terminating null. If \fB\-binary\fR is specified, the result is returned as a byte array. .TP \fBdde services \fIservice topic\fR @@ -97,14 +96,13 @@ for a given service are returned. If both are not null, if that service-topic pair currently exists, it is returned; otherwise, null is returned. .TP -\fBdde eval\fR ?\fI\-async\fR? \fItopic cmd \fR?\fIarg arg ...\fR? +\fBdde eval\fR ?\fB\-async\fR? \fItopic cmd \fR?\fIarg arg ...\fR? \fBdde eval\fR evaluates a command and its arguments using the interpreter specified by \fItopic\fR. The DDE service must be the \fBTclEval\fR -service. The \fI\-async\fR option requests asynchronous invocation. The +service. The \fB\-async\fR option requests asynchronous invocation. The command returns an error message if the script did not run, unless the \fB\-async\fR flag was used, in which case the command returns immediately -with no error. This command can be used to replace send on Windows. - +with no error. This command can be used to replace \fBsend\fR on Windows. .SH "DDE AND TCL" A Tcl interpreter always has a service name of \fBTclEval\fR. Each different interpreter of all running Tcl applications must be -- cgit v0.12 From f70164d8332b6095c59c58689eac31b6440ea7b0 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 26 Nov 2004 19:42:04 +0000 Subject: * library/auto.tcl (tcl_findLibrary): Made sure the uniquifying operations on the search path does not also normalize. [Bug 1072136] --- ChangeLog | 5 +++++ library/auto.tcl | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 73fa657..1182ca3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-26 Don Porter + + * library/auto.tcl (tcl_findLibrary): Made sure the uniquifying + operations on the search path does not also normalize. [Bug 1072136] + 2004-11-26 Donal K. Fellows * doc/dde.n: Resynchonized the documentation with itself and fixed diff --git a/library/auto.tcl b/library/auto.tcl index d3a3fab..431895d 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.1 2004/11/16 16:56:01 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.2 2004/11/26 19:42:06 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -136,7 +136,7 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { } if {[info exists seen($norm)]} { continue } set seen($norm) "" - lappend uniqdirs $norm + lappend uniqdirs $i } set dirs $uniqdirs foreach i $dirs { -- cgit v0.12 From f4e32f5e30da1843cdcc7c29bd4068ce15cbb503 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 27 Nov 2004 05:43:57 +0000 Subject: * tests/reg.test (reg-32.*): Added missing testregexp constraints. --- ChangeLog | 2 ++ tests/reg.test | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1182ca3..4b4fa80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-11-26 Don Porter + * tests/reg.test (reg-32.*): Added missing testregexp constraints. + * library/auto.tcl (tcl_findLibrary): Made sure the uniquifying operations on the search path does not also normalize. [Bug 1072136] diff --git a/tests/reg.test b/tests/reg.test index 66c3768..8994fdc 100644 --- a/tests/reg.test +++ b/tests/reg.test @@ -9,7 +9,7 @@ # # Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. # -# RCS: @(#) $Id: reg.test,v 1.16.2.2 2003/11/17 18:12:09 dgp Exp $ +# RCS: @(#) $Id: reg.test,v 1.16.2.3 2004/11/27 05:44:13 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -995,7 +995,7 @@ test reg-31.1 {[[:xdigit:]] behaves correctly when followed by [[:space:]]} { # Code used to produce {1 2:::DebugWin32 2 :::DebugWin32} !!! } {1 2 2 {}} -test reg-32.1 {canmatch functionality -- at end} { +test reg-32.1 {canmatch functionality -- at end} testregexp { set pat {blah} set line "asd asd" # can match at the final d, if '%' follows @@ -1003,7 +1003,7 @@ test reg-32.1 {canmatch functionality -- at end} { lappend res $resvar } {0 7} -test reg-32.2 {canmatch functionality -- at end} { +test reg-32.2 {canmatch functionality -- at end} testregexp { set pat {s%$} set line "asd asd" # can only match after the end of the string @@ -1011,7 +1011,7 @@ test reg-32.2 {canmatch functionality -- at end} { lappend res $resvar } {0 7} -test reg-32.3 {canmatch functionality -- not last char} { +test reg-32.3 {canmatch functionality -- not last char} testregexp { set pat {[^d]%$} set line "asd asd" # can only match after the end of the string @@ -1019,7 +1019,7 @@ test reg-32.3 {canmatch functionality -- not last char} { lappend res $resvar } {0 7} -test reg-32.3.1 {canmatch functionality -- no match} { +test reg-32.3.1 {canmatch functionality -- no match} testregexp { set pat {\Zx} set line "asd asd" # can match the last char, if followed by x -- cgit v0.12 From a84821a860443acb7f58429abc7bce7bacef661b Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 1 Dec 2004 22:07:55 +0000 Subject: * library/auto.tcl (tcl_findLibrary): Disabled use of [file normalize] that caused trouble with freewrap. [Bug 1072136]. --- ChangeLog | 5 +++++ library/auto.tcl | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4b4fa80..d10ce51 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-12-01 Don Porter + + * library/auto.tcl (tcl_findLibrary): Disabled use of [file normalize] + that caused trouble with freewrap. [Bug 1072136]. + 2004-11-26 Don Porter * tests/reg.test (reg-32.*): Added missing testregexp constraints. diff --git a/library/auto.tcl b/library/auto.tcl index 431895d..276a4aa 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.2 2004/11/26 19:42:06 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.3 2004/12/01 22:07:57 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -129,7 +129,17 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { # uniquify $dirs in order array set seen {} foreach i $dirs { - if {[interp issafe]} { + # For Tcl 8.4.9, we've disabled the use of [file normalize] here. + # This means that two different path names that are the same path + # in normalized form, will both remain on the search path. There + # should be no harm in that, just a bit more file system access + # than is strictly necessary. + # + # [file normalize] has been disabled because of reports it has + # caused difficulties with the freewrap utility. To keep + # compatibility with freewrap's needs, we'll keep this disabled + # throughout the 8.4.x (x >= 9) releases. See Bug 1072136. + if {1 || [interp issafe]} { set norm $i } else { set norm [file normalize $i] -- cgit v0.12 From ef6b0cfeabedafe5027e2a6ff6ca26d6f3c7d07a Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Thu, 2 Dec 2004 18:48:12 +0000 Subject: filesystem, glob, tilde fix --- ChangeLog | 6 ++++++ generic/tclIOUtil.c | 30 +++++++++++++++++++++++++---- tests/fileSystem.test | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index d10ce51..e7f8a75 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-12-02 Vince Darley + + * generic/tclIOUtil.c: fix and new tests for [Bug 1074671] to + * tests/fileSystem.test: ensure tilde paths are not returned + specially by 'glob'. + 2004-12-01 Don Porter * library/auto.tcl (tcl_findLibrary): Disabled use of [file normalize] diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 3b0ed7c..07ad92c 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.19 2004/11/23 15:23:13 vincentdarley Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.20 2004/12/02 18:48:14 vincentdarley Exp $ */ #include "tclInt.h" @@ -5050,11 +5050,23 @@ TclNewFSPathObj(Tcl_Obj *dirPtr, CONST char *addStrRep, int len) * * TclFSMakePathRelative -- * - * Like SetFsPathFromAny, but assumes the given object is an - * absolute normalized path. Only for internal use. + * Only for internal use. + * + * Takes a path and a directory, where we _assume_ both path and + * directory are absolute, normalized and that the path lies + * inside the directory. Returns a Tcl_Obj representing filename + * of the path relative to the directory. + * + * In the case where the resulting path would start with a '~', we + * take special care to return an ordinary string. This means to + * use that path (and not have it interpreted as a user name), + * one must prepend './'. This may seem strange, but that is how + * 'glob' is currently defined. * * Results: - * Standard Tcl error code. + * NULL on error, otherwise a valid object, typically with + * refCount of zero, which it is assumed the caller will + * increment. * * Side effects: * The old representation may be freed, and new memory allocated. @@ -5094,6 +5106,16 @@ TclFSMakePathRelative(interp, objPtr, cwdPtr) (*objPtr->typePtr->freeIntRepProc)(objPtr); } } + /* Now objPtr is a string object */ + + if (Tcl_GetString(objPtr)[0] == '~') { + /* + * If the first character of the path is a tilde, + * we must just return the path as is, to agree + * with the defined behaviour of 'glob'. + */ + return objPtr; + } fsPathPtr = (FsPath*)ckalloc((unsigned)sizeof(FsPath)); diff --git a/tests/fileSystem.test b/tests/fileSystem.test index 20c04ae..f42e776 100644 --- a/tests/fileSystem.test +++ b/tests/fileSystem.test @@ -563,6 +563,58 @@ test filesystem-9.6 {path objects and file join and object rep} {winOnly} { lappend res [file join $p toto] } {C:/toto/toto C:/toto/toto} +test filesystem-9.7 {path objects and glob and file tail and tilde} { + set res {} + set origdir [pwd] + cd [tcltest::temporaryDirectory] + file mkdir tilde + close [open tilde/~testNotExist w] + cd tilde + set file [lindex [glob *test*] 0] + lappend res [file exists $file] [catch {file tail $file} r] $r + lappend res $file + lappend res [file exists $file] [catch {file tail $file} r] $r + lappend res [catch {file tail $file} r] $r + cd .. + file delete -force tilde + cd $origdir + set res +} {0 1 {user "testNotExist" doesn't exist} ~testNotExist 0 1 {user "testNotExist" doesn't exist} 1 {user "testNotExist" doesn't exist}} +test filesystem-9.8 {path objects and glob and file tail and tilde} { + set res {} + set origdir [pwd] + cd [tcltest::temporaryDirectory] + file mkdir tilde + close [open tilde/~testNotExist w] + cd tilde + set file1 [lindex [glob *test*] 0] + set file2 "~testNotExist" + lappend res $file1 $file2 + lappend res [catch {file tail $file1} r] $r + lappend res [catch {file tail $file2} r] $r + cd .. + file delete -force tilde + cd $origdir + set res +} {~testNotExist ~testNotExist 1 {user "testNotExist" doesn't exist} 1 {user "testNotExist" doesn't exist}} +test filesystem-9.9 {path objects and glob and file tail and tilde} { + set res {} + set origdir [pwd] + cd [tcltest::temporaryDirectory] + file mkdir tilde + close [open tilde/~testNotExist w] + cd tilde + set file1 [lindex [glob *test*] 0] + set file2 "~testNotExist" + lappend res [catch {file exists $file1} r] $r + lappend res [catch {file exists $file2} r] $r + lappend res [string equal $file1 $file2] + cd .. + file delete -force tilde + cd $origdir + set res +} {0 0 0 0 1} + cleanupTests } namespace delete ::tcl::test::fileSystem -- cgit v0.12 From 887b7882b128a5b0655179112b39d91d386c7e99 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 3 Dec 2004 00:34:45 +0000 Subject: updated for 8.4.9 release --- ChangeLog | 18 ++++++++++++------ changes | 23 ++++++++++++++++++++++- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index e7f8a75..9d09d91 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,19 +1,25 @@ +2004-12-02 Jeff Hobbs + + *** 8.4.9 TAGGED FOR RELEASE *** + + * changes: updated for 8.4.9 release + 2004-12-02 Vince Darley * generic/tclIOUtil.c: fix and new tests for [Bug 1074671] to - * tests/fileSystem.test: ensure tilde paths are not returned + * tests/fileSystem.test: ensure tilde paths are not returned specially by 'glob'. 2004-12-01 Don Porter - * library/auto.tcl (tcl_findLibrary): Disabled use of [file normalize] + * library/auto.tcl (tcl_findLibrary): Disabled use of [file normalize] that caused trouble with freewrap. [Bug 1072136]. 2004-11-26 Don Porter - * tests/reg.test (reg-32.*): Added missing testregexp constraints. + * tests/reg.test (reg-32.*): Added missing testregexp constraints. - * library/auto.tcl (tcl_findLibrary): Made sure the uniquifying + * library/auto.tcl (tcl_findLibrary): Made sure the uniquifying operations on the search path does not also normalize. [Bug 1072136] 2004-11-26 Donal K. Fellows @@ -33,8 +39,8 @@ 2004-11-24 Don Porter - * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected failure to determine - the number of arguments for readdir_r on SunOS systems. [Bug 1071701] + * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected failure to determine + the number of arguments for readdir_r on SunOS systems. [Bug 1071701] * unix/configure: autoconf-2.13 diff --git a/changes b/changes index f296cab..4ef603d 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.15 2004/11/18 15:44:25 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.16 2004/12/03 00:34:46 hobbs Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6115,3 +6115,24 @@ Test suite expansion [1036649,1001997,etc.] --- Released 8.4.8, November 18, 2004 --- See ChangeLog for details --- +2004-11-22 (bug fix)[1030465] Improve HAVE_TYPE_OFF64_T check (dejong) + +2004-11-23 (bug fix)[1072654] Fixed segfault in info vars trivial +matching branch (new in 8.4.8) (porter) + +2004-11-23 (bug fix)[1043129] Fixed the treatment of backslashes in file +join on Windows (darley) + +2004-11-24 (bug fix)[1001325, 1071701] Fixed readdir_r detection and usage +(dejong, kenny, porter) + +2004-11-24 (bug fix)[1071807] Fixed all uses of 'select' to use standard +macros rather than older bit-whacking style (kenny) + +2004-11-26 (bug fix)[1072136] Remove file normalize on tcl_findLibrary +search path uniqification added in 8.4.8 (porter) + +2004-12-02 (bug fix)[1074671] Ensure tilde paths are not returned specially +by 'glob' (darley) + +--- Released 8.4.9, December 6, 2004 --- See ChangeLog for details --- -- cgit v0.12 From 0a344ce3259553633532950e77bc9037e6aa605e Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 3 Dec 2004 00:37:21 +0000 Subject: removed extra .TP macro --- doc/dde.n | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/dde.n b/doc/dde.n index f15de7d..cfe894a 100644 --- a/doc/dde.n +++ b/doc/dde.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: dde.n,v 1.8.2.3 2004/11/26 09:37:39 dkf Exp $ +'\" RCS: @(#) $Id: dde.n,v 1.8.2.4 2004/12/03 00:37:21 hobbs Exp $ '\" .so man.macros .TH dde n 1.2 dde "Tcl Bundled Packages" @@ -43,7 +43,7 @@ own \fIservice name\fRs and \fItopic\fRs. For instance, Microsoft Excel has the service name \fBExcel\fR. .PP The \fBeval\fR and \fBexecute\fR commands accept the option \fB\-async\fR: -.TP + .SH "DDE COMMANDS" .PP The following commands are a subset of the full Dynamic Data Exchange @@ -103,6 +103,7 @@ service. The \fB\-async\fR option requests asynchronous invocation. The command returns an error message if the script did not run, unless the \fB\-async\fR flag was used, in which case the command returns immediately with no error. This command can be used to replace \fBsend\fR on Windows. + .SH "DDE AND TCL" A Tcl interpreter always has a service name of \fBTclEval\fR. Each different interpreter of all running Tcl applications must be @@ -135,6 +136,7 @@ without adding the \fB&\fR to place the process in the background). If for any reason the event queue is not flushed, DDE commands may hang until the event queue is flushed. This can create a deadlock situation. + .SH EXAMPLE This asks Internet Explorer (which must already be running) to go to a particularly important website: -- cgit v0.12 From 924fb48b4b8a438e925a6c13abbce2953e6dc75d Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 7 Dec 2004 00:07:54 +0000 Subject: * unix/tclUnixNotfy.c (NotifierThreadProc): init numFdBits [Bug 1079286] --- ChangeLog | 7 ++++++- unix/tclUnixNotfy.c | 10 +++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9d09d91..d8bf2d2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ -2004-12-02 Jeff Hobbs +2004-12-06 Jeff Hobbs *** 8.4.9 TAGGED FOR RELEASE *** + * unix/tclUnixNotfy.c (NotifierThreadProc): init numFdBits + [Bug 1079286] + +2004-12-02 Jeff Hobbs + * changes: updated for 8.4.9 release 2004-12-02 Vince Darley diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 385e4d7..fc15eaf 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.6 2004/11/24 20:19:22 kennykb Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.7 2004/12/07 00:07:54 hobbs Exp $ */ #include "tclInt.h" @@ -864,7 +864,7 @@ NotifierThreadProc(clientData) fd_set writableMask; fd_set exceptionalMask; int fds[2]; - int i, status, numFdBits, receivePipe; + int i, status, numFdBits = 0, receivePipe; long found; struct timeval poll = {0., 0.}, *timePtr; char buf[2]; @@ -996,7 +996,7 @@ NotifierThreadProc(clientData) found = 1; } } - + if (found || (tsdPtr->pollState & POLL_DONE)) { tsdPtr->eventReady = 1; if (tsdPtr->onList) { @@ -1006,7 +1006,7 @@ NotifierThreadProc(clientData) * continuously spining on select until the other * threads runs and services the file event. */ - + if (tsdPtr->prevPtr) { tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; } else { @@ -1023,7 +1023,7 @@ NotifierThreadProc(clientData) } } Tcl_MutexUnlock(¬ifierMutex); - + /* * Consume the next byte from the notifier pipe if the pipe was * readable. Note that there may be multiple bytes pending, but -- cgit v0.12 From 77356c1235926a71096b61efdb3c11b6883384f0 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 9 Dec 2004 09:24:38 +0000 Subject: Minor doc fixes --- ChangeLog | 5 +++++ doc/Async.3 | 18 +++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index d8bf2d2..32de98c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-12-09 Donal K. Fellows + + * doc/Async.3: Reword for better grammar, better nroff and get the + flag name right. (Reported by David Welton.) + 2004-12-06 Jeff Hobbs *** 8.4.9 TAGGED FOR RELEASE *** diff --git a/doc/Async.3 b/doc/Async.3 index 60fdad4..59ea687 100644 --- a/doc/Async.3 +++ b/doc/Async.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Async.3,v 1.5 2000/07/26 01:29:00 davidg Exp $ +'\" RCS: @(#) $Id: Async.3,v 1.5.18.1 2004/12/09 09:24:54 dkf Exp $ '\" .so man.macros .TH Tcl_AsyncCreate 3 7.0 Tcl "Tcl Library Procedures" @@ -62,11 +62,11 @@ to a clean state, such as after the current Tcl command completes. .PP \fBTcl_AsyncCreate\fR, \fBTcl_AsyncDelete\fR, and \fBTcl_AsyncReady\fR are thread sensitive. They access and/or set a thread-specific data -structure in the event of an --enable-thread built core. The token -created by Tcl_AsyncCreate contains the needed thread information it -was called from so that calling Tcl_AsyncMark(token) will only yield -the origin thread into the AsyncProc. -.PP +structure in the event of a core built with \fI\-\-enable\-threads\fR. The token +created by \fBTcl_AsyncCreate\fR contains the needed thread information it +was called from so that calling \fBTcl_AsyncMark\fR(\fItoken\fR) will only yield +the origin thread into the asynchronous handler. +.PP \fBTcl_AsyncCreate\fR creates an asynchronous handler and returns a token for it. The asynchronous handler must be created before @@ -85,9 +85,9 @@ the actions associated with the asynchronous event. type \fBTcl_AsyncProc\fR: .CS typedef int Tcl_AsyncProc( - ClientData \fIclientData\fR, - Tcl_Interp *\fIinterp\fR, - int \fIcode\fR); + ClientData \fIclientData\fR, + Tcl_Interp *\fIinterp\fR, + int \fIcode\fR); .CE The \fIclientData\fR will be the same as the \fIclientData\fR argument passed to \fBTcl_AsyncCreate\fR when the handler was -- cgit v0.12 From b4c6cd27f44a41d0a4517f64eceb5c9dd76319c1 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 13 Dec 2004 15:52:20 +0000 Subject: Add note to clock.n disclaiming full ISO8601 support --- ChangeLog | 6 ++++++ doc/clock.n | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 32de98c..ca13f18 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-12-13 Kevin B. Kenny + + * doc/clock.n: Clarify that the [clock scan] command does not + accept the full range of ISO8601 point-in-time formats + [Bug 1075433]. + 2004-12-09 Donal K. Fellows * doc/Async.3: Reword for better grammar, better nroff and get the diff --git a/doc/clock.n b/doc/clock.n index aab3dae..80553a9 100644 --- a/doc/clock.n +++ b/doc/clock.n @@ -10,7 +10,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: clock.n,v 1.11.2.5 2004/11/12 09:02:30 das Exp $ +'\" RCS: @(#) $Id: clock.n,v 1.11.2.6 2004/12/13 15:52:21 kennykb Exp $ '\" .so man.macros .TH clock n 8.4 Tcl "Tcl Built-In Commands" @@ -238,7 +238,11 @@ an error may result if these years are used. \fIISO 8601 point-in-time\fR An ISO 8601 point-in-time specification, such as \fICCyymmddThhmmss\fR, where T is the literal T, \fICCyymmdd hhmmss\fR, or -\fICCyymmddThh:mm:ss\fR. +\fICCyymmddThh:mm:ss\fR. Note that only these three formats are accepted. +The command does \fInot\fR accept the full range of point-in-time +specifications specified in ISO8601. Other formats can be recognized by +using commands such as \fBregexp\fR to extract their fields and reorganize +them into a form accepted by the \fBclock scan\fR command. .TP \fIrelative time\fR A specification relative to the current time. The format is \fInumber -- cgit v0.12 From e7f832e42a7d08255984438590ebb56d29cd9ddf Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 13 Dec 2004 15:56:17 +0000 Subject: Add note to clock.n disclaiming full ISO8601 support --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index ca13f18..e2020cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2004-12-13 Kevin B. Kenny +2004-12-13 Kevin B. Kenny * doc/clock.n: Clarify that the [clock scan] command does not accept the full range of ISO8601 point-in-time formats -- cgit v0.12 From b28227e3da810f3e0e7d2ad1ebf612d434efcda2 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 30 Dec 2004 01:49:46 +0000 Subject: * win/tcl.m4, win/configure: update MSVC CFLAGS_OPT to -O2, remove -Gs (included in -O2) and -GD (outdated). Use "link -lib" instead of "lib" binary and remove -YX for MSVC7 portability. Add -fomit-frame-pointer for gcc OPT compiles. [Bug 1092952, 1091967] --- ChangeLog | 7 +++++++ win/configure | 37 ++++++++++++++++++++----------------- win/tcl.m4 | 15 +++++++++------ 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index e2020cb..a95e1c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-12-29 Jeff Hobbs + + * win/tcl.m4, win/configure: update MSVC CFLAGS_OPT to -O2, remove + -Gs (included in -O2) and -GD (outdated). Use "link -lib" instead + of "lib" binary and remove -YX for MSVC7 portability. Add + -fomit-frame-pointer for gcc OPT compiles. [Bug 1092952, 1091967] + 2004-12-13 Kevin B. Kenny * doc/clock.n: Clarify that the [clock scan] command does not diff --git a/win/configure b/win/configure index 6a8cd7a..42bfd0e 100755 --- a/win/configure +++ b/win/configure @@ -1605,7 +1605,7 @@ echo "configure:1521: checking compiler flags" >&5 EXTRA_CFLAGS="${extra_cflags}" CFLAGS_DEBUG=-g - CFLAGS_OPTIMIZE=-O + CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer" CFLAGS_WARNING="-Wall -Wconversion" LDFLAGS_DEBUG= LDFLAGS_OPTIMIZE= @@ -1681,17 +1681,20 @@ echo "configure:1521: checking compiler flags" >&5 -I${MSSDK}/Include" RC="${MSSDK}/bin/rc.exe" CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" - CFLAGS_OPTIMIZE="-nologo -O2 -Gs ${runtime}" + CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" lflags="-MACHINE:IA64 -LIBPATH:${MSSDK}/Lib/IA64 \ -LIBPATH:${MSSDK}/Lib/Prerelease/IA64" STLIB_LD="${MSSDK}/bin/win64/lib.exe -nologo ${lflags}" LINKBIN="${MSSDK}/bin/win64/link.exe ${lflags}" else RC="rc" + # -Od - no optimization + # -WX - warnings as errors CFLAGS_DEBUG="-nologo -Z7 -Od -WX ${runtime}d" - CFLAGS_OPTIMIZE="-nologo -Oti -Gs -GD ${runtime}" - STLIB_LD="lib -nologo" - LINKBIN="link -link50compat" + # -O2 - create fast code (/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy) + CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" + STLIB_LD="link -lib -nologo" + LINKBIN="link" fi SHLIB_LD="${LINKBIN} -dll -nologo -incremental:no" @@ -1707,7 +1710,7 @@ echo "configure:1521: checking compiler flags" >&5 MAKE_EXE="\${CC} -Fe\$@" LIBPREFIX="" - EXTRA_CFLAGS="-YX" + EXTRA_CFLAGS="" CFLAGS_WARNING="-W3" LDFLAGS_DEBUG="-debug:full -debugtype:both" LDFLAGS_OPTIMIZE="-release" @@ -1737,7 +1740,7 @@ echo "configure:1521: checking compiler flags" >&5 echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:1741: checking for build with symbols" >&5 +echo "configure:1744: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -1797,7 +1800,7 @@ TCL_DBGX=${DBGX} #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1801: checking how to run the C preprocessor" >&5 +echo "configure:1804: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1812,13 +1815,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1822: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1829,13 +1832,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1839: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1842: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1846,13 +1849,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1856: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1878,17 +1881,17 @@ echo "$ac_t""$CPP" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1882: checking for errno.h" >&5 +echo "configure:1885: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* diff --git a/win/tcl.m4 b/win/tcl.m4 index 2afcb6e..3219f41 100644 --- a/win/tcl.m4 +++ b/win/tcl.m4 @@ -513,7 +513,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ EXTRA_CFLAGS="${extra_cflags}" CFLAGS_DEBUG=-g - CFLAGS_OPTIMIZE=-O + CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer" CFLAGS_WARNING="-Wall -Wconversion" LDFLAGS_DEBUG= LDFLAGS_OPTIMIZE= @@ -589,17 +589,20 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ -I${MSSDK}/Include" RC="${MSSDK}/bin/rc.exe" CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" - CFLAGS_OPTIMIZE="-nologo -O2 -Gs ${runtime}" + CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" lflags="-MACHINE:IA64 -LIBPATH:${MSSDK}/Lib/IA64 \ -LIBPATH:${MSSDK}/Lib/Prerelease/IA64" STLIB_LD="${MSSDK}/bin/win64/lib.exe -nologo ${lflags}" LINKBIN="${MSSDK}/bin/win64/link.exe ${lflags}" else RC="rc" + # -Od - no optimization + # -WX - warnings as errors CFLAGS_DEBUG="-nologo -Z7 -Od -WX ${runtime}d" - CFLAGS_OPTIMIZE="-nologo -Oti -Gs -GD ${runtime}" - STLIB_LD="lib -nologo" - LINKBIN="link -link50compat" + # -O2 - create fast code (/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy) + CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" + STLIB_LD="link -lib -nologo" + LINKBIN="link" fi SHLIB_LD="${LINKBIN} -dll -nologo -incremental:no" @@ -615,7 +618,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ MAKE_EXE="\${CC} -Fe\[$]@" LIBPREFIX="" - EXTRA_CFLAGS="-YX" + EXTRA_CFLAGS="" CFLAGS_WARNING="-W3" LDFLAGS_DEBUG="-debug:full -debugtype:both" LDFLAGS_OPTIMIZE="-release" -- cgit v0.12 From 78c76d0249a414356aa58cf1915b4c448aae766e Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 5 Jan 2005 21:53:20 +0000 Subject: Change emacs mode comment style to stop problems with older man. [1085127] --- ChangeLog | 5 +++++ doc/lsearch.n | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a95e1c4..d95c1be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-01-05 Donal K. Fellows + + * doc/lsearch.n: Convert to other form of emacs mode control + comment to prevent problems with old versions of man. [Bug 1085127] + 2004-12-29 Jeff Hobbs * win/tcl.m4, win/configure: update MSVC CFLAGS_OPT to -O2, remove diff --git a/doc/lsearch.n b/doc/lsearch.n index b8a6f18..59fa21a 100644 --- a/doc/lsearch.n +++ b/doc/lsearch.n @@ -1,4 +1,3 @@ -'\" -*- nroff -*- '\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -7,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lsearch.n,v 1.13.2.3 2004/10/27 12:52:40 dkf Exp $ +'\" RCS: @(#) $Id: lsearch.n,v 1.13.2.4 2005/01/05 21:53:30 dkf Exp $ '\" .so man.macros .TH lsearch n 8.4 Tcl "Tcl Built-In Commands" @@ -138,3 +137,7 @@ lset(n), lsort(n), lrange(n), lreplace(n) .SH KEYWORDS list, match, pattern, regular expression, search, string + +'\" Local Variables: +'\" mode: nroff +'\" End: -- cgit v0.12 From ed424cff437f0ef8ffcf082492e1e4ea2d63ac38 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 5 Jan 2005 22:14:39 +0000 Subject: Add more locale mapping info for Chinese. [1084595] --- ChangeLog | 3 +++ unix/tclUnixInit.c | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d95c1be..96ab508 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-01-05 Donal K. Fellows + * unix/tclUnixInit.c (localeTable): Add encoding mappings for some + Chinese locales. [Bug 1084595] + * doc/lsearch.n: Convert to other form of emacs mode control comment to prevent problems with old versions of man. [Bug 1085127] diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index a3add18..0c6fbe9 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.5 2004/11/19 06:29:25 das Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.6 2005/01/05 22:14:43 dkf Exp $ */ #if defined(HAVE_CFBUNDLE) @@ -136,6 +136,11 @@ static CONST LocaleTable localeTable[] = { {"ru_SU", "iso8859-5"}, {"zh", "cp936"}, + {"zh_CN.gb2312", "euc-cn"}, + {"zh_CN.GB2312", "euc-cn"}, + {"zh_CN.GBK", "euc-cn"}, + {"zh_TW.Big5", "big5"}, + {"zh_TW", "euc-tw"}, {NULL, NULL} }; -- cgit v0.12 From 2024466324531ec7c4d71b2619ca7b9e262cef07 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 6 Jan 2005 11:34:19 +0000 Subject: Fix performance nasty in http::mapReply [1020491] and clean up version numbers. --- ChangeLog | 6 ++++++ library/http/http.tcl | 44 ++++++++++++++++++++------------------------ library/http/pkgIndex.tcl | 4 ++-- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index 96ab508..e4796c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-01-06 Donal K. Fellows + + * library/http/http.tcl (http::mapReply): Significant performance + enhancement by using [string map] instead of [regsub]/[subst], and + update version requirement to Tcl8.4. [Bug 1020491] + 2005-01-05 Donal K. Fellows * unix/tclUnixInit.c (localeTable): Add encoding mappings for some diff --git a/library/http/http.tcl b/library/http/http.tcl index ae2b1d4..3afa0e6 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.4 2004/05/25 22:50:47 hobbs Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.5 2005/01/06 11:34:20 dkf Exp $ # Rough version history: # 1.0 Old http_get interface @@ -22,10 +22,10 @@ # 2.4 Added -binary option to http::geturl and charset element # to the state array. -package require Tcl 8.2 +package require Tcl 8.4 # keep this in sync with pkgIndex.tcl # and with the install directories in Makefiles -package provide http 2.5.0 +package provide http 2.5.1 namespace eval http { variable http @@ -39,16 +39,17 @@ namespace eval http { set http(-useragent) "Tcl http client package [package provide http]" proc init {} { - variable formMap - variable alphanumeric a-zA-Z0-9 + # Set up the map for quoting chars + # The spec says: "non-alphanumeric characters are replaced by '%HH'" for {set i 0} {$i <= 256} {incr i} { set c [format %c $i] - if {![string match \[$alphanumeric\] $c]} { - set formMap($c) %[format %.2x $i] + if {![string match {[a-zA-Z0-9]} $c]} { + set map($c) %[format %.2x $i] } } # These are handled specially - array set formMap { " " + \n %0d%0a } + array set map { " " + \n %0d%0a } + variable formMap [array get map] } init @@ -368,7 +369,7 @@ proc http::geturl { url args } { fileevent $s writable [list http::Connect $token] http::wait $token - if {[string equal $state(status) "error"]} { + if {$state(status) eq "error"} { # something went wrong while trying to establish the connection # Clean up after events and such, but DON'T call the command # callback (if available) because we're going to throw an @@ -376,7 +377,7 @@ proc http::geturl { url args } { set err [lindex $state(error) 0] cleanup $token return -code error $err - } elseif {![string equal $state(status) "connect"]} { + } elseif {$state(status) ne "connect"} { # Likely to be connection timeout return $token } @@ -426,7 +427,7 @@ proc http::geturl { url args } { foreach {key value} $state(-headers) { set value [string map [list \n "" \r ""] $value] set key [string trim $key] - if {[string equal $key "Content-Length"]} { + if {$key eq "Content-Length"} { set contDone 1 set state(querylength) $value } @@ -482,7 +483,7 @@ proc http::geturl { url args } { # calls it synchronously, we just do a wait here. wait $token - if {[string equal $state(status) "error"]} { + if {$state(status) eq "error"} { # Something went wrong, so throw the exception, and the # enclosing catch will do cleanup. return -code error [lindex $state(error) 0] @@ -498,7 +499,7 @@ proc http::geturl { url args } { # if state(status) is error, it means someone's already called Finish # to do the above-described clean up. - if {[string equal $state(status) "error"]} { + if {$state(status) eq "error"} { Finish $token $err 1 } cleanup $token @@ -678,7 +679,7 @@ proc http::Event {token} { Eof $token return } - if {[string equal $state(state) "header"]} { + if {$state(state) eq "header"} { if {[catch {gets $s line} n]} { Finish $token $n } elseif {$n == 0} { @@ -816,7 +817,7 @@ proc http::CopyDone {token count {error {}}} { proc http::Eof {token} { variable $token upvar 0 $token state - if {[string equal $state(state) "header"]} { + if {$state(state) eq "header"} { # Premature eof set state(status) eof } else { @@ -866,7 +867,7 @@ proc http::formatQuery {args} { set sep "" foreach i $args { append result $sep [mapReply $i] - if {[string equal $sep "="]} { + if {$sep eq "="} { set sep & } else { set sep = @@ -888,20 +889,15 @@ proc http::formatQuery {args} { proc http::mapReply {string} { variable http variable formMap - variable alphanumeric # The spec says: "non-alphanumeric characters are replaced by '%HH'" - # 1 leave alphanumerics characters alone - # 2 Convert every other character to an array lookup - # 3 Escape constructs that are "special" to the tcl parser - # 4 "subst" the result, doing all the array substitutions + # Use a pre-computed map and [string map] to do the conversion + # (much faster than [regsub]/[subst]). [Bug 1020491] if {$http(-urlencoding) ne ""} { set string [encoding convertto $http(-urlencoding) $string] } - regsub -all \[^$alphanumeric\] $string {$formMap(&)} string - regsub -all {[][{})\\]\)} $string {\\&} string - return [subst -nocommand $string] + return [string map $formMap $string] } # http::ProxyRequired -- diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 8efa64c..c937b60 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -8,5 +8,5 @@ # script is sourced, the variable $dir must contain the # full path name of this file's directory. -if {![package vsatisfies [package provide Tcl] 8.2]} {return} -package ifneeded http 2.5.0 [list tclPkgSetup $dir http 2.5.0 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] +if {![package vsatisfies [package provide Tcl] 8.4]} {return} +package ifneeded http 2.5.1 [list tclPkgSetup $dir http 2.5.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] -- cgit v0.12 From bf282c8f70ba13fdbbfca301d5a15165865397e9 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 6 Jan 2005 15:16:03 +0000 Subject: Horrible hack to keep the old error message. --- library/http/http.tcl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/library/http/http.tcl b/library/http/http.tcl index 3afa0e6..4c87fab 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.5 2005/01/06 11:34:20 dkf Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.6 2005/01/06 15:16:03 dkf Exp $ # Rough version history: # 1.0 Old http_get interface @@ -896,8 +896,16 @@ proc http::mapReply {string} { if {$http(-urlencoding) ne ""} { set string [encoding convertto $http(-urlencoding) $string] + return [string map $formMap $string] } - return [string map $formMap $string] + set converted [string map $formMap $string] + if {[string match "*\[\u0100-\uffff\]*" $converted]} { + regexp {[\u0100-\uffff]} $converted badChar + # Return this error message for maximum compatability... :^/ + return -code error \ + "can't read \"formMap($badChar)\": no such element in array" + } + return $converted } # http::ProxyRequired -- -- cgit v0.12 From 6dd9ce45620382f3a06d1540ed2c08f4c88ad00a Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 10 Jan 2005 11:21:50 +0000 Subject: Convert u_int to unsigned to make clashes with types in standard C headers less of a problem. [Bug 1098829] --- ChangeLog | 6 ++++++ unix/tclUnixFCmd.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index e4796c3..65efd31 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-01-10 Donal K. Fellows + + * unix/tclUnixFCmd.c (CopyFile): Convert u_int to unsigned + to make clashes with types in standard C headers less of a + problem. [Bug 1098829] + 2005-01-06 Donal K. Fellows * library/http/http.tcl (http::mapReply): Significant performance diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index 9d709e6..a96291f 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.3 2004/11/11 01:15:29 das Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.4 2005/01/10 11:21:51 dkf Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -433,8 +433,8 @@ CopyFile(src, dst, statBufPtr) { int srcFd; int dstFd; - u_int blockSize; /* Optimal I/O blocksize for filesystem */ - char *buffer; /* Data buffer for copy */ + unsigned blockSize; /* Optimal I/O blocksize for filesystem */ + char *buffer; /* Data buffer for copy */ size_t nread; if ((srcFd = TclOSopen(src, O_RDONLY, 0)) < 0) { /* INTL: Native. */ -- cgit v0.12 From 2c8e4f5d2d76cd74310a79a3cdb91ca6920ccbb9 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Mon, 17 Jan 2005 13:04:28 +0000 Subject: fix to drive-sensitivity of test --- ChangeLog | 5 +++++ tests/winFCmd.test | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 65efd31..b99de5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-01-17 Vince Darley + + * tests/winFCmd.test: made test independent of current drive. + [Bug 1066528] + 2005-01-10 Donal K. Fellows * unix/tclUnixFCmd.c (CopyFile): Convert u_int to unsigned diff --git a/tests/winFCmd.test b/tests/winFCmd.test index a8a05c4..49bae98 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.20.2.5 2004/05/25 19:02:28 kennykb Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.20.2.6 2005/01/17 13:04:44 vincentdarley Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -592,8 +592,10 @@ test winFCmd-6.11 {TclpRemoveDirectory: attr == -1} {pcOnly nt} { set res [list [catch {testfile rmdir /} msg] $msg] # WinXP returns EEXIST, WinNT seems to return EACCES. No policy # decision has been made as to which is correct. - regsub {E(ACCES|EXIST)} $res "EACCES or EEXIST" -} {1 {C:/ EACCES or EEXIST}} + regsub {E(ACCES|EXIST)} $res "EACCES or EEXIST" res + # Don't mind which drive we're on + regsub {[A-Z]:} $res "" +} {1 {/ EACCES or EEXIST}} test winFCmd-6.12 {TclpRemoveDirectory: errno == EACCES} {pcOnly 95} { cleanup createfile tf1 -- cgit v0.12 From 043eb53cd2f81a91e1e068851d741934ee898658 Mon Sep 17 00:00:00 2001 From: mdejong Date: Wed, 19 Jan 2005 22:09:58 +0000 Subject: * win/tclWinChan.c (FileCloseProc): Invoke TclpCutFileChannel() to remove a FileInfo from the thread local list before deallocating it. This should have been done via an earlier call to Tcl_CutChannel, but I was running into a crash in the next call to Tcl_CutChannel during the IO finalization stage. --- ChangeLog | 10 ++++++++++ win/tclWinChan.c | 21 ++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b99de5c..8b9d9a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2005-01-19 Mo DeJong + + * win/tclWinChan.c (FileCloseProc): Invoke + TclpCutFileChannel() to remove a FileInfo from + the thread local list before deallocating it. + This should have been done via an earlier + call to Tcl_CutChannel, but I was running into + a crash in the next call to Tcl_CutChannel + during the IO finalization stage. + 2005-01-17 Vince Darley * tests/winFCmd.test: made test independent of current drive. diff --git a/win/tclWinChan.c b/win/tclWinChan.c index 60f9aef..9333726 100644 --- a/win/tclWinChan.c +++ b/win/tclWinChan.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.1 2004/06/21 22:07:32 mdejong Exp $ + * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.2 2005/01/19 22:09:58 mdejong Exp $ */ #include "tclWinInt.h" @@ -401,6 +401,8 @@ FileCloseProc(instanceData, interp) Tcl_Interp *interp; /* Not used. */ { FileInfo *fileInfoPtr = (FileInfo *) instanceData; + FileInfo *infoPtr; + ThreadSpecificData *tsdPtr; int errorCode = 0; /* @@ -425,6 +427,23 @@ FileCloseProc(instanceData, interp) } } + /* + * See if this FileInfo* is still on the thread local list. + */ + tsdPtr = TCL_TSD_INIT(&dataKey); + for (infoPtr = tsdPtr->firstFilePtr; infoPtr != NULL; + infoPtr = infoPtr->nextPtr) { + if (infoPtr == fileInfoPtr) { + /* + * This channel exists on the thread local list. It should + * have been removed by an earlier call to TclpCutFileChannel, + * but do that now since just deallocating fileInfoPtr would + * leave an deallocated pointer on the thread local list. + */ + TclpCutFileChannel(fileInfoPtr->channel); + break; + } + } ckfree((char *)fileInfoPtr); return errorCode; } -- cgit v0.12 From b9cf65a08e6a59e434685e894e3189c201ac6791 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 19 Jan 2005 22:41:26 +0000 Subject: Import of libtommath 0.33 --- libtommath/LICENSE | 4 + libtommath/TODO | 16 + libtommath/bn.ilg | 6 + libtommath/bn.ind | 82 + libtommath/bn.pdf | Bin 0 -> 335112 bytes libtommath/bn.tex | 1830 ++++ libtommath/bn_error.c | 43 + libtommath/bn_fast_mp_invmod.c | 145 + libtommath/bn_fast_mp_montgomery_reduce.c | 169 + libtommath/bn_fast_s_mp_mul_digs.c | 106 + libtommath/bn_fast_s_mp_mul_high_digs.c | 98 + libtommath/bn_fast_s_mp_sqr.c | 129 + libtommath/bn_mp_2expt.c | 44 + libtommath/bn_mp_abs.c | 39 + libtommath/bn_mp_add.c | 49 + libtommath/bn_mp_add_d.c | 105 + libtommath/bn_mp_addmod.c | 37 + libtommath/bn_mp_and.c | 53 + libtommath/bn_mp_clamp.c | 40 + libtommath/bn_mp_clear.c | 40 + libtommath/bn_mp_clear_multi.c | 30 + libtommath/bn_mp_cmp.c | 39 + libtommath/bn_mp_cmp_d.c | 40 + libtommath/bn_mp_cmp_mag.c | 51 + libtommath/bn_mp_cnt_lsb.c | 49 + libtommath/bn_mp_copy.c | 64 + libtommath/bn_mp_count_bits.c | 41 + libtommath/bn_mp_div.c | 288 + libtommath/bn_mp_div_2.c | 64 + libtommath/bn_mp_div_2d.c | 93 + libtommath/bn_mp_div_3.c | 75 + libtommath/bn_mp_div_d.c | 106 + libtommath/bn_mp_dr_is_modulus.c | 39 + libtommath/bn_mp_dr_reduce.c | 90 + libtommath/bn_mp_dr_setup.c | 28 + libtommath/bn_mp_exch.c | 30 + libtommath/bn_mp_expt_d.c | 53 + libtommath/bn_mp_exptmod.c | 100 + libtommath/bn_mp_exptmod_fast.c | 318 + libtommath/bn_mp_exteuclid.c | 71 + libtommath/bn_mp_fread.c | 63 + libtommath/bn_mp_fwrite.c | 48 + libtommath/bn_mp_gcd.c | 109 + libtommath/bn_mp_get_int.c | 41 + libtommath/bn_mp_grow.c | 53 + libtommath/bn_mp_init.c | 42 + libtommath/bn_mp_init_copy.c | 28 + libtommath/bn_mp_init_multi.c | 55 + libtommath/bn_mp_init_set.c | 28 + libtommath/bn_mp_init_set_int.c | 27 + libtommath/bn_mp_init_size.c | 44 + libtommath/bn_mp_invmod.c | 39 + libtommath/bn_mp_invmod_slow.c | 171 + libtommath/bn_mp_is_square.c | 105 + libtommath/bn_mp_jacobi.c | 101 + libtommath/bn_mp_karatsuba_mul.c | 163 + libtommath/bn_mp_karatsuba_sqr.c | 117 + libtommath/bn_mp_lcm.c | 56 + libtommath/bn_mp_lshd.c | 63 + libtommath/bn_mp_mod.c | 44 + libtommath/bn_mp_mod_2d.c | 51 + libtommath/bn_mp_mod_d.c | 23 + libtommath/bn_mp_montgomery_calc_normalization.c | 56 + libtommath/bn_mp_montgomery_reduce.c | 114 + libtommath/bn_mp_montgomery_setup.c | 55 + libtommath/bn_mp_mul.c | 62 + libtommath/bn_mp_mul_2.c | 78 + libtommath/bn_mp_mul_2d.c | 81 + libtommath/bn_mp_mul_d.c | 74 + libtommath/bn_mp_mulmod.c | 37 + libtommath/bn_mp_n_root.c | 128 + libtommath/bn_mp_neg.c | 30 + libtommath/bn_mp_or.c | 46 + libtommath/bn_mp_prime_fermat.c | 58 + libtommath/bn_mp_prime_is_divisible.c | 46 + libtommath/bn_mp_prime_is_prime.c | 79 + libtommath/bn_mp_prime_miller_rabin.c | 99 + libtommath/bn_mp_prime_next_prime.c | 166 + libtommath/bn_mp_prime_rabin_miller_trials.c | 48 + libtommath/bn_mp_prime_random_ex.c | 123 + libtommath/bn_mp_radix_size.c | 67 + libtommath/bn_mp_radix_smap.c | 20 + libtommath/bn_mp_rand.c | 51 + libtommath/bn_mp_read_radix.c | 78 + libtommath/bn_mp_read_signed_bin.c | 38 + libtommath/bn_mp_read_unsigned_bin.c | 52 + libtommath/bn_mp_reduce.c | 97 + libtommath/bn_mp_reduce_2k.c | 58 + libtommath/bn_mp_reduce_2k_l.c | 58 + libtommath/bn_mp_reduce_2k_setup.c | 44 + libtommath/bn_mp_reduce_2k_setup_l.c | 40 + libtommath/bn_mp_reduce_is_2k.c | 48 + libtommath/bn_mp_reduce_is_2k_l.c | 40 + libtommath/bn_mp_reduce_setup.c | 30 + libtommath/bn_mp_rshd.c | 68 + libtommath/bn_mp_set.c | 25 + libtommath/bn_mp_set_int.c | 44 + libtommath/bn_mp_shrink.c | 31 + libtommath/bn_mp_signed_bin_size.c | 23 + libtommath/bn_mp_sqr.c | 54 + libtommath/bn_mp_sqrmod.c | 37 + libtommath/bn_mp_sqrt.c | 77 + libtommath/bn_mp_sub.c | 55 + libtommath/bn_mp_sub_d.c | 85 + libtommath/bn_mp_submod.c | 38 + libtommath/bn_mp_to_signed_bin.c | 30 + libtommath/bn_mp_to_signed_bin_n.c | 27 + libtommath/bn_mp_to_unsigned_bin.c | 45 + libtommath/bn_mp_to_unsigned_bin_n.c | 27 + libtommath/bn_mp_toom_mul.c | 279 + libtommath/bn_mp_toom_sqr.c | 222 + libtommath/bn_mp_toradix.c | 71 + libtommath/bn_mp_toradix_n.c | 85 + libtommath/bn_mp_unsigned_bin_size.c | 25 + libtommath/bn_mp_xor.c | 47 + libtommath/bn_mp_zero.c | 26 + libtommath/bn_prime_tab.c | 57 + libtommath/bn_reverse.c | 35 + libtommath/bn_s_mp_add.c | 105 + libtommath/bn_s_mp_exptmod.c | 236 + libtommath/bn_s_mp_mul_digs.c | 87 + libtommath/bn_s_mp_mul_high_digs.c | 77 + libtommath/bn_s_mp_sqr.c | 81 + libtommath/bn_s_mp_sub.c | 85 + libtommath/bncore.c | 31 + libtommath/booker.pl | 262 + libtommath/callgraph.txt | 10193 +++++++++++++++++++ libtommath/changes.txt | 337 + libtommath/demo/demo.c | 515 + libtommath/demo/timing.c | 287 + libtommath/dep.pl | 121 + libtommath/etc/2kprime.1 | 2 + libtommath/etc/2kprime.c | 80 + libtommath/etc/drprime.c | 60 + libtommath/etc/drprimes.28 | 25 + libtommath/etc/drprimes.txt | 6 + libtommath/etc/makefile | 50 + libtommath/etc/makefile.icc | 67 + libtommath/etc/makefile.msvc | 23 + libtommath/etc/mersenne.c | 140 + libtommath/etc/mont.c | 46 + libtommath/etc/pprime.c | 396 + libtommath/etc/prime.1024 | 414 + libtommath/etc/prime.512 | 205 + libtommath/etc/timer.asm | 37 + libtommath/etc/tune.c | 107 + libtommath/gen.pl | 17 + libtommath/logs/README | 13 + libtommath/logs/add.log | 16 + libtommath/logs/addsub.png | Bin 0 -> 6254 bytes libtommath/logs/expt.log | 7 + libtommath/logs/expt.png | Bin 0 -> 6605 bytes libtommath/logs/expt_2k.log | 6 + libtommath/logs/expt_2kl.log | 4 + libtommath/logs/expt_dr.log | 7 + libtommath/logs/graphs.dem | 17 + libtommath/logs/index.html | 24 + libtommath/logs/invmod.log | 0 libtommath/logs/invmod.png | Bin 0 -> 4918 bytes libtommath/logs/mult.log | 143 + libtommath/logs/mult.png | Bin 0 -> 6770 bytes libtommath/logs/mult_kara.log | 33 + libtommath/logs/sqr.log | 143 + libtommath/logs/sqr_kara.log | 33 + libtommath/logs/sub.log | 16 + libtommath/makefile | 157 + libtommath/makefile.bcc | 42 + libtommath/makefile.cygwin_dll | 49 + libtommath/makefile.icc | 114 + libtommath/makefile.msvc | 36 + libtommath/makefile.shared | 77 + libtommath/mess.sh | 4 + libtommath/mtest/logtab.h | 20 + libtommath/mtest/mpi-config.h | 86 + libtommath/mtest/mpi-types.h | 16 + libtommath/mtest/mpi.c | 3981 ++++++++ libtommath/mtest/mpi.h | 227 + libtommath/mtest/mtest.c | 304 + libtommath/pics/design_process.sxd | Bin 0 -> 6950 bytes libtommath/pics/design_process.tif | Bin 0 -> 79042 bytes libtommath/pics/expt_state.sxd | Bin 0 -> 6869 bytes libtommath/pics/expt_state.tif | Bin 0 -> 87542 bytes libtommath/pics/makefile | 35 + libtommath/pics/primality.tif | Bin 0 -> 85514 bytes libtommath/pics/radix.sxd | Bin 0 -> 6181 bytes libtommath/pics/sliding_window.sxd | Bin 0 -> 6787 bytes libtommath/pics/sliding_window.tif | Bin 0 -> 53880 bytes libtommath/poster.out | 0 libtommath/poster.pdf | Bin 0 -> 40821 bytes libtommath/poster.tex | 35 + libtommath/pre_gen/mpi.c | 8819 +++++++++++++++++ libtommath/pretty.build | 66 + libtommath/tombc/grammar.txt | 35 + libtommath/tommath.h | 567 ++ libtommath/tommath.out | 139 + libtommath/tommath.pdf | Bin 0 -> 1159120 bytes libtommath/tommath.src | 6314 ++++++++++++ libtommath/tommath.tex | 10771 +++++++++++++++++++++ libtommath/tommath_class.h | 952 ++ libtommath/tommath_superclass.h | 72 + 200 files changed, 57261 insertions(+) create mode 100644 libtommath/LICENSE create mode 100644 libtommath/TODO create mode 100644 libtommath/bn.ilg create mode 100644 libtommath/bn.ind create mode 100644 libtommath/bn.pdf create mode 100644 libtommath/bn.tex create mode 100644 libtommath/bn_error.c create mode 100644 libtommath/bn_fast_mp_invmod.c create mode 100644 libtommath/bn_fast_mp_montgomery_reduce.c create mode 100644 libtommath/bn_fast_s_mp_mul_digs.c create mode 100644 libtommath/bn_fast_s_mp_mul_high_digs.c create mode 100644 libtommath/bn_fast_s_mp_sqr.c create mode 100644 libtommath/bn_mp_2expt.c create mode 100644 libtommath/bn_mp_abs.c create mode 100644 libtommath/bn_mp_add.c create mode 100644 libtommath/bn_mp_add_d.c create mode 100644 libtommath/bn_mp_addmod.c create mode 100644 libtommath/bn_mp_and.c create mode 100644 libtommath/bn_mp_clamp.c create mode 100644 libtommath/bn_mp_clear.c create mode 100644 libtommath/bn_mp_clear_multi.c create mode 100644 libtommath/bn_mp_cmp.c create mode 100644 libtommath/bn_mp_cmp_d.c create mode 100644 libtommath/bn_mp_cmp_mag.c create mode 100644 libtommath/bn_mp_cnt_lsb.c create mode 100644 libtommath/bn_mp_copy.c create mode 100644 libtommath/bn_mp_count_bits.c create mode 100644 libtommath/bn_mp_div.c create mode 100644 libtommath/bn_mp_div_2.c create mode 100644 libtommath/bn_mp_div_2d.c create mode 100644 libtommath/bn_mp_div_3.c create mode 100644 libtommath/bn_mp_div_d.c create mode 100644 libtommath/bn_mp_dr_is_modulus.c create mode 100644 libtommath/bn_mp_dr_reduce.c create mode 100644 libtommath/bn_mp_dr_setup.c create mode 100644 libtommath/bn_mp_exch.c create mode 100644 libtommath/bn_mp_expt_d.c create mode 100644 libtommath/bn_mp_exptmod.c create mode 100644 libtommath/bn_mp_exptmod_fast.c create mode 100644 libtommath/bn_mp_exteuclid.c create mode 100644 libtommath/bn_mp_fread.c create mode 100644 libtommath/bn_mp_fwrite.c create mode 100644 libtommath/bn_mp_gcd.c create mode 100644 libtommath/bn_mp_get_int.c create mode 100644 libtommath/bn_mp_grow.c create mode 100644 libtommath/bn_mp_init.c create mode 100644 libtommath/bn_mp_init_copy.c create mode 100644 libtommath/bn_mp_init_multi.c create mode 100644 libtommath/bn_mp_init_set.c create mode 100644 libtommath/bn_mp_init_set_int.c create mode 100644 libtommath/bn_mp_init_size.c create mode 100644 libtommath/bn_mp_invmod.c create mode 100644 libtommath/bn_mp_invmod_slow.c create mode 100644 libtommath/bn_mp_is_square.c create mode 100644 libtommath/bn_mp_jacobi.c create mode 100644 libtommath/bn_mp_karatsuba_mul.c create mode 100644 libtommath/bn_mp_karatsuba_sqr.c create mode 100644 libtommath/bn_mp_lcm.c create mode 100644 libtommath/bn_mp_lshd.c create mode 100644 libtommath/bn_mp_mod.c create mode 100644 libtommath/bn_mp_mod_2d.c create mode 100644 libtommath/bn_mp_mod_d.c create mode 100644 libtommath/bn_mp_montgomery_calc_normalization.c create mode 100644 libtommath/bn_mp_montgomery_reduce.c create mode 100644 libtommath/bn_mp_montgomery_setup.c create mode 100644 libtommath/bn_mp_mul.c create mode 100644 libtommath/bn_mp_mul_2.c create mode 100644 libtommath/bn_mp_mul_2d.c create mode 100644 libtommath/bn_mp_mul_d.c create mode 100644 libtommath/bn_mp_mulmod.c create mode 100644 libtommath/bn_mp_n_root.c create mode 100644 libtommath/bn_mp_neg.c create mode 100644 libtommath/bn_mp_or.c create mode 100644 libtommath/bn_mp_prime_fermat.c create mode 100644 libtommath/bn_mp_prime_is_divisible.c create mode 100644 libtommath/bn_mp_prime_is_prime.c create mode 100644 libtommath/bn_mp_prime_miller_rabin.c create mode 100644 libtommath/bn_mp_prime_next_prime.c create mode 100644 libtommath/bn_mp_prime_rabin_miller_trials.c create mode 100644 libtommath/bn_mp_prime_random_ex.c create mode 100644 libtommath/bn_mp_radix_size.c create mode 100644 libtommath/bn_mp_radix_smap.c create mode 100644 libtommath/bn_mp_rand.c create mode 100644 libtommath/bn_mp_read_radix.c create mode 100644 libtommath/bn_mp_read_signed_bin.c create mode 100644 libtommath/bn_mp_read_unsigned_bin.c create mode 100644 libtommath/bn_mp_reduce.c create mode 100644 libtommath/bn_mp_reduce_2k.c create mode 100644 libtommath/bn_mp_reduce_2k_l.c create mode 100644 libtommath/bn_mp_reduce_2k_setup.c create mode 100644 libtommath/bn_mp_reduce_2k_setup_l.c create mode 100644 libtommath/bn_mp_reduce_is_2k.c create mode 100644 libtommath/bn_mp_reduce_is_2k_l.c create mode 100644 libtommath/bn_mp_reduce_setup.c create mode 100644 libtommath/bn_mp_rshd.c create mode 100644 libtommath/bn_mp_set.c create mode 100644 libtommath/bn_mp_set_int.c create mode 100644 libtommath/bn_mp_shrink.c create mode 100644 libtommath/bn_mp_signed_bin_size.c create mode 100644 libtommath/bn_mp_sqr.c create mode 100644 libtommath/bn_mp_sqrmod.c create mode 100644 libtommath/bn_mp_sqrt.c create mode 100644 libtommath/bn_mp_sub.c create mode 100644 libtommath/bn_mp_sub_d.c create mode 100644 libtommath/bn_mp_submod.c create mode 100644 libtommath/bn_mp_to_signed_bin.c create mode 100644 libtommath/bn_mp_to_signed_bin_n.c create mode 100644 libtommath/bn_mp_to_unsigned_bin.c create mode 100644 libtommath/bn_mp_to_unsigned_bin_n.c create mode 100644 libtommath/bn_mp_toom_mul.c create mode 100644 libtommath/bn_mp_toom_sqr.c create mode 100644 libtommath/bn_mp_toradix.c create mode 100644 libtommath/bn_mp_toradix_n.c create mode 100644 libtommath/bn_mp_unsigned_bin_size.c create mode 100644 libtommath/bn_mp_xor.c create mode 100644 libtommath/bn_mp_zero.c create mode 100644 libtommath/bn_prime_tab.c create mode 100644 libtommath/bn_reverse.c create mode 100644 libtommath/bn_s_mp_add.c create mode 100644 libtommath/bn_s_mp_exptmod.c create mode 100644 libtommath/bn_s_mp_mul_digs.c create mode 100644 libtommath/bn_s_mp_mul_high_digs.c create mode 100644 libtommath/bn_s_mp_sqr.c create mode 100644 libtommath/bn_s_mp_sub.c create mode 100644 libtommath/bncore.c create mode 100644 libtommath/booker.pl create mode 100644 libtommath/callgraph.txt create mode 100644 libtommath/changes.txt create mode 100644 libtommath/demo/demo.c create mode 100644 libtommath/demo/timing.c create mode 100644 libtommath/dep.pl create mode 100644 libtommath/etc/2kprime.1 create mode 100644 libtommath/etc/2kprime.c create mode 100644 libtommath/etc/drprime.c create mode 100644 libtommath/etc/drprimes.28 create mode 100644 libtommath/etc/drprimes.txt create mode 100644 libtommath/etc/makefile create mode 100644 libtommath/etc/makefile.icc create mode 100644 libtommath/etc/makefile.msvc create mode 100644 libtommath/etc/mersenne.c create mode 100644 libtommath/etc/mont.c create mode 100644 libtommath/etc/pprime.c create mode 100644 libtommath/etc/prime.1024 create mode 100644 libtommath/etc/prime.512 create mode 100644 libtommath/etc/timer.asm create mode 100644 libtommath/etc/tune.c create mode 100644 libtommath/gen.pl create mode 100644 libtommath/logs/README create mode 100644 libtommath/logs/add.log create mode 100644 libtommath/logs/addsub.png create mode 100644 libtommath/logs/expt.log create mode 100644 libtommath/logs/expt.png create mode 100644 libtommath/logs/expt_2k.log create mode 100644 libtommath/logs/expt_2kl.log create mode 100644 libtommath/logs/expt_dr.log create mode 100644 libtommath/logs/graphs.dem create mode 100644 libtommath/logs/index.html create mode 100644 libtommath/logs/invmod.log create mode 100644 libtommath/logs/invmod.png create mode 100644 libtommath/logs/mult.log create mode 100644 libtommath/logs/mult.png create mode 100644 libtommath/logs/mult_kara.log create mode 100644 libtommath/logs/sqr.log create mode 100644 libtommath/logs/sqr_kara.log create mode 100644 libtommath/logs/sub.log create mode 100644 libtommath/makefile create mode 100644 libtommath/makefile.bcc create mode 100644 libtommath/makefile.cygwin_dll create mode 100644 libtommath/makefile.icc create mode 100644 libtommath/makefile.msvc create mode 100644 libtommath/makefile.shared create mode 100644 libtommath/mess.sh create mode 100644 libtommath/mtest/logtab.h create mode 100644 libtommath/mtest/mpi-config.h create mode 100644 libtommath/mtest/mpi-types.h create mode 100644 libtommath/mtest/mpi.c create mode 100644 libtommath/mtest/mpi.h create mode 100644 libtommath/mtest/mtest.c create mode 100644 libtommath/pics/design_process.sxd create mode 100644 libtommath/pics/design_process.tif create mode 100644 libtommath/pics/expt_state.sxd create mode 100644 libtommath/pics/expt_state.tif create mode 100644 libtommath/pics/makefile create mode 100644 libtommath/pics/primality.tif create mode 100644 libtommath/pics/radix.sxd create mode 100644 libtommath/pics/sliding_window.sxd create mode 100644 libtommath/pics/sliding_window.tif create mode 100644 libtommath/poster.out create mode 100644 libtommath/poster.pdf create mode 100644 libtommath/poster.tex create mode 100644 libtommath/pre_gen/mpi.c create mode 100644 libtommath/pretty.build create mode 100644 libtommath/tombc/grammar.txt create mode 100644 libtommath/tommath.h create mode 100644 libtommath/tommath.out create mode 100644 libtommath/tommath.pdf create mode 100644 libtommath/tommath.src create mode 100644 libtommath/tommath.tex create mode 100644 libtommath/tommath_class.h create mode 100644 libtommath/tommath_superclass.h diff --git a/libtommath/LICENSE b/libtommath/LICENSE new file mode 100644 index 0000000..5baa792 --- /dev/null +++ b/libtommath/LICENSE @@ -0,0 +1,4 @@ +LibTomMath is hereby released into the Public Domain. + +-- Tom St Denis + diff --git a/libtommath/TODO b/libtommath/TODO new file mode 100644 index 0000000..deffba1 --- /dev/null +++ b/libtommath/TODO @@ -0,0 +1,16 @@ +things for book in order of importance... + +- Fix up pseudo-code [only] for combas that are not consistent with source +- Start in chapter 3 [basics] and work up... + - re-write to prose [less abrupt] + - clean up pseudo code [spacing] + - more examples where appropriate and figures + +Goal: + - Get sync done by mid January [roughly 8-12 hours work] + - Finish ch3-6 by end of January [roughly 12-16 hours of work] + - Finish ch7-end by mid Feb [roughly 20-24 hours of work]. + +Goal isn't "first edition" but merely cleaner to read. + + diff --git a/libtommath/bn.ilg b/libtommath/bn.ilg new file mode 100644 index 0000000..3c859f0 --- /dev/null +++ b/libtommath/bn.ilg @@ -0,0 +1,6 @@ +This is makeindex, version 2.14 [02-Oct-2002] (kpathsea + Thai support). +Scanning input file bn.idx....done (79 entries accepted, 0 rejected). +Sorting entries....done (511 comparisons). +Generating output file bn.ind....done (82 lines written, 0 warnings). +Output written in bn.ind. +Transcript written in bn.ilg. diff --git a/libtommath/bn.ind b/libtommath/bn.ind new file mode 100644 index 0000000..e5f7d4a --- /dev/null +++ b/libtommath/bn.ind @@ -0,0 +1,82 @@ +\begin{theindex} + + \item mp\_add, \hyperpage{29} + \item mp\_add\_d, \hyperpage{52} + \item mp\_and, \hyperpage{29} + \item mp\_clear, \hyperpage{11} + \item mp\_clear\_multi, \hyperpage{12} + \item mp\_cmp, \hyperpage{24} + \item mp\_cmp\_d, \hyperpage{25} + \item mp\_cmp\_mag, \hyperpage{23} + \item mp\_div, \hyperpage{30} + \item mp\_div\_2, \hyperpage{26} + \item mp\_div\_2d, \hyperpage{28} + \item mp\_div\_d, \hyperpage{52} + \item mp\_dr\_reduce, \hyperpage{40} + \item mp\_dr\_setup, \hyperpage{40} + \item MP\_EQ, \hyperpage{22} + \item mp\_error\_to\_string, \hyperpage{10} + \item mp\_expt\_d, \hyperpage{43} + \item mp\_exptmod, \hyperpage{43} + \item mp\_exteuclid, \hyperpage{51} + \item mp\_gcd, \hyperpage{51} + \item mp\_get\_int, \hyperpage{20} + \item mp\_grow, \hyperpage{16} + \item MP\_GT, \hyperpage{22} + \item mp\_init, \hyperpage{11} + \item mp\_init\_copy, \hyperpage{13} + \item mp\_init\_multi, \hyperpage{12} + \item mp\_init\_set, \hyperpage{21} + \item mp\_init\_set\_int, \hyperpage{21} + \item mp\_init\_size, \hyperpage{14} + \item mp\_int, \hyperpage{10} + \item mp\_invmod, \hyperpage{52} + \item mp\_jacobi, \hyperpage{52} + \item mp\_lcm, \hyperpage{51} + \item mp\_lshd, \hyperpage{28} + \item MP\_LT, \hyperpage{22} + \item MP\_MEM, \hyperpage{9} + \item mp\_mod, \hyperpage{35} + \item mp\_mod\_d, \hyperpage{52} + \item mp\_montgomery\_calc\_normalization, \hyperpage{38} + \item mp\_montgomery\_reduce, \hyperpage{37} + \item mp\_montgomery\_setup, \hyperpage{37} + \item mp\_mul, \hyperpage{31} + \item mp\_mul\_2, \hyperpage{26} + \item mp\_mul\_2d, \hyperpage{28} + \item mp\_mul\_d, \hyperpage{52} + \item mp\_n\_root, \hyperpage{44} + \item mp\_neg, \hyperpage{29} + \item MP\_NO, \hyperpage{9} + \item MP\_OKAY, \hyperpage{9} + \item mp\_or, \hyperpage{29} + \item mp\_prime\_fermat, \hyperpage{45} + \item mp\_prime\_is\_divisible, \hyperpage{45} + \item mp\_prime\_is\_prime, \hyperpage{46} + \item mp\_prime\_miller\_rabin, \hyperpage{45} + \item mp\_prime\_next\_prime, \hyperpage{46} + \item mp\_prime\_rabin\_miller\_trials, \hyperpage{46} + \item mp\_prime\_random, \hyperpage{47} + \item mp\_prime\_random\_ex, \hyperpage{47} + \item mp\_radix\_size, \hyperpage{49} + \item mp\_read\_radix, \hyperpage{49} + \item mp\_read\_unsigned\_bin, \hyperpage{50} + \item mp\_reduce, \hyperpage{36} + \item mp\_reduce\_2k, \hyperpage{41} + \item mp\_reduce\_2k\_setup, \hyperpage{41} + \item mp\_reduce\_setup, \hyperpage{36} + \item mp\_rshd, \hyperpage{28} + \item mp\_set, \hyperpage{19} + \item mp\_set\_int, \hyperpage{20} + \item mp\_shrink, \hyperpage{15} + \item mp\_sqr, \hyperpage{33} + \item mp\_sub, \hyperpage{29} + \item mp\_sub\_d, \hyperpage{52} + \item mp\_to\_unsigned\_bin, \hyperpage{50} + \item mp\_toradix, \hyperpage{49} + \item mp\_unsigned\_bin\_size, \hyperpage{50} + \item MP\_VAL, \hyperpage{9} + \item mp\_xor, \hyperpage{29} + \item MP\_YES, \hyperpage{9} + +\end{theindex} diff --git a/libtommath/bn.pdf b/libtommath/bn.pdf new file mode 100644 index 0000000..9b873e1 Binary files /dev/null and b/libtommath/bn.pdf differ diff --git a/libtommath/bn.tex b/libtommath/bn.tex new file mode 100644 index 0000000..962d6ea --- /dev/null +++ b/libtommath/bn.tex @@ -0,0 +1,1830 @@ +\documentclass[b5paper]{book} +\usepackage{hyperref} +\usepackage{makeidx} +\usepackage{amssymb} +\usepackage{color} +\usepackage{alltt} +\usepackage{graphicx} +\usepackage{layout} +\def\union{\cup} +\def\intersect{\cap} +\def\getsrandom{\stackrel{\rm R}{\gets}} +\def\cross{\times} +\def\cat{\hspace{0.5em} \| \hspace{0.5em}} +\def\catn{$\|$} +\def\divides{\hspace{0.3em} | \hspace{0.3em}} +\def\nequiv{\not\equiv} +\def\approx{\raisebox{0.2ex}{\mbox{\small $\sim$}}} +\def\lcm{{\rm lcm}} +\def\gcd{{\rm gcd}} +\def\log{{\rm log}} +\def\ord{{\rm ord}} +\def\abs{{\mathit abs}} +\def\rep{{\mathit rep}} +\def\mod{{\mathit\ mod\ }} +\renewcommand{\pmod}[1]{\ ({\rm mod\ }{#1})} +\newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} +\newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} +\def\Or{{\rm\ or\ }} +\def\And{{\rm\ and\ }} +\def\iff{\hspace{1em}\Longleftrightarrow\hspace{1em}} +\def\implies{\Rightarrow} +\def\undefined{{\rm ``undefined"}} +\def\Proof{\vspace{1ex}\noindent {\bf Proof:}\hspace{1em}} +\let\oldphi\phi +\def\phi{\varphi} +\def\Pr{{\rm Pr}} +\newcommand{\str}[1]{{\mathbf{#1}}} +\def\F{{\mathbb F}} +\def\N{{\mathbb N}} +\def\Z{{\mathbb Z}} +\def\R{{\mathbb R}} +\def\C{{\mathbb C}} +\def\Q{{\mathbb Q}} +\definecolor{DGray}{gray}{0.5} +\newcommand{\emailaddr}[1]{\mbox{$<${#1}$>$}} +\def\twiddle{\raisebox{0.3ex}{\mbox{\tiny $\sim$}}} +\def\gap{\vspace{0.5ex}} +\makeindex +\begin{document} +\frontmatter +\pagestyle{empty} +\title{LibTomMath User Manual \\ v0.33} +\author{Tom St Denis \\ tomstdenis@iahu.ca} +\maketitle +This text, the library and the accompanying textbook are all hereby placed in the public domain. This book has been +formatted for B5 [176x250] paper using the \LaTeX{} {\em book} macro package. + +\vspace{10cm} + +\begin{flushright}Open Source. Open Academia. Open Minds. + +\mbox{ } + +Tom St Denis, + +Ontario, Canada +\end{flushright} + +\tableofcontents +\listoffigures +\mainmatter +\pagestyle{headings} +\chapter{Introduction} +\section{What is LibTomMath?} +LibTomMath is a library of source code which provides a series of efficient and carefully written functions for manipulating +large integer numbers. It was written in portable ISO C source code so that it will build on any platform with a conforming +C compiler. + +In a nutshell the library was written from scratch with verbose comments to help instruct computer science students how +to implement ``bignum'' math. However, the resulting code has proven to be very useful. It has been used by numerous +universities, commercial and open source software developers. It has been used on a variety of platforms ranging from +Linux and Windows based x86 to ARM based Gameboys and PPC based MacOS machines. + +\section{License} +As of the v0.25 the library source code has been placed in the public domain with every new release. As of the v0.28 +release the textbook ``Implementing Multiple Precision Arithmetic'' has been placed in the public domain with every new +release as well. This textbook is meant to compliment the project by providing a more solid walkthrough of the development +algorithms used in the library. + +Since both\footnote{Note that the MPI files under mtest/ are copyrighted by Michael Fromberger. They are not required to use LibTomMath.} are in the +public domain everyone is entitled to do with them as they see fit. + +\section{Building LibTomMath} + +LibTomMath is meant to be very ``GCC friendly'' as it comes with a makefile well suited for GCC. However, the library will +also build in MSVC, Borland C out of the box. For any other ISO C compiler a makefile will have to be made by the end +developer. + +\subsection{Static Libraries} +To build as a static library for GCC issue the following +\begin{alltt} +make +\end{alltt} + +command. This will build the library and archive the object files in ``libtommath.a''. Now you link against +that and include ``tommath.h'' within your programs. Alternatively to build with MSVC issue the following +\begin{alltt} +nmake -f makefile.msvc +\end{alltt} + +This will build the library and archive the object files in ``tommath.lib''. This has been tested with MSVC +version 6.00 with service pack 5. + +\subsection{Shared Libraries} +To build as a shared library for GCC issue the following +\begin{alltt} +make -f makefile.shared +\end{alltt} +This requires the ``libtool'' package (common on most Linux/BSD systems). It will build LibTomMath as both shared +and static then install (by default) into /usr/lib as well as install the header files in /usr/include. The shared +library (resource) will be called ``libtommath.la'' while the static library called ``libtommath.a''. Generally +you use libtool to link your application against the shared object. + +There is limited support for making a ``DLL'' in windows via the ``makefile.cygwin\_dll'' makefile. It requires +Cygwin to work with since it requires the auto-export/import functionality. The resulting DLL and import library +``libtommath.dll.a'' can be used to link LibTomMath dynamically to any Windows program using Cygwin. + +\subsection{Testing} +To build the library and the test harness type + +\begin{alltt} +make test +\end{alltt} + +This will build the library, ``test'' and ``mtest/mtest''. The ``test'' program will accept test vectors and verify the +results. ``mtest/mtest'' will generate test vectors using the MPI library by Michael Fromberger\footnote{A copy of MPI +is included in the package}. Simply pipe mtest into test using + +\begin{alltt} +mtest/mtest | test +\end{alltt} + +If you do not have a ``/dev/urandom'' style RNG source you will have to write your own PRNG and simply pipe that into +mtest. For example, if your PRNG program is called ``myprng'' simply invoke + +\begin{alltt} +myprng | mtest/mtest | test +\end{alltt} + +This will output a row of numbers that are increasing. Each column is a different test (such as addition, multiplication, etc) +that is being performed. The numbers represent how many times the test was invoked. If an error is detected the program +will exit with a dump of the relevent numbers it was working with. + +\section{Build Configuration} +LibTomMath can configured at build time in three phases we shall call ``depends'', ``tweaks'' and ``trims''. +Each phase changes how the library is built and they are applied one after another respectively. + +To make the system more powerful you can tweak the build process. Classes are defined in the file +``tommath\_superclass.h''. By default, the symbol ``LTM\_ALL'' shall be defined which simply +instructs the system to build all of the functions. This is how LibTomMath used to be packaged. This will give you +access to every function LibTomMath offers. + +However, there are cases where such a build is not optional. For instance, you want to perform RSA operations. You +don't need the vast majority of the library to perform these operations. Aside from LTM\_ALL there is +another pre--defined class ``SC\_RSA\_1'' which works in conjunction with the RSA from LibTomCrypt. Additional +classes can be defined base on the need of the user. + +\subsection{Build Depends} +In the file tommath\_class.h you will see a large list of C ``defines'' followed by a series of ``ifdefs'' +which further define symbols. All of the symbols (technically they're macros $\ldots$) represent a given C source +file. For instance, BN\_MP\_ADD\_C represents the file ``bn\_mp\_add.c''. When a define has been enabled the +function in the respective file will be compiled and linked into the library. Accordingly when the define +is absent the file will not be compiled and not contribute any size to the library. + +You will also note that the header tommath\_class.h is actually recursively included (it includes itself twice). +This is to help resolve as many dependencies as possible. In the last pass the symbol LTM\_LAST will be defined. +This is useful for ``trims''. + +\subsection{Build Tweaks} +A tweak is an algorithm ``alternative''. For example, to provide tradeoffs (usually between size and space). +They can be enabled at any pass of the configuration phase. + +\begin{small} +\begin{center} +\begin{tabular}{|l|l|} +\hline \textbf{Define} & \textbf{Purpose} \\ +\hline BN\_MP\_DIV\_SMALL & Enables a slower, smaller and equally \\ + & functional mp\_div() function \\ +\hline +\end{tabular} +\end{center} +\end{small} + +\subsection{Build Trims} +A trim is a manner of removing functionality from a function that is not required. For instance, to perform +RSA cryptography you only require exponentiation with odd moduli so even moduli support can be safely removed. +Build trims are meant to be defined on the last pass of the configuration which means they are to be defined +only if LTM\_LAST has been defined. + +\subsubsection{Moduli Related} +\begin{small} +\begin{center} +\begin{tabular}{|l|l|} +\hline \textbf{Restriction} & \textbf{Undefine} \\ +\hline Exponentiation with odd moduli only & BN\_S\_MP\_EXPTMOD\_C \\ + & BN\_MP\_REDUCE\_C \\ + & BN\_MP\_REDUCE\_SETUP\_C \\ + & BN\_S\_MP\_MUL\_HIGH\_DIGS\_C \\ + & BN\_FAST\_S\_MP\_MUL\_HIGH\_DIGS\_C \\ +\hline Exponentiation with random odd moduli & (The above plus the following) \\ + & BN\_MP\_REDUCE\_2K\_C \\ + & BN\_MP\_REDUCE\_2K\_SETUP\_C \\ + & BN\_MP\_REDUCE\_IS\_2K\_C \\ + & BN\_MP\_DR\_IS\_MODULUS\_C \\ + & BN\_MP\_DR\_REDUCE\_C \\ + & BN\_MP\_DR\_SETUP\_C \\ +\hline Modular inverse odd moduli only & BN\_MP\_INVMOD\_SLOW\_C \\ +\hline Modular inverse (both, smaller/slower) & BN\_FAST\_MP\_INVMOD\_C \\ +\hline +\end{tabular} +\end{center} +\end{small} + +\subsubsection{Operand Size Related} +\begin{small} +\begin{center} +\begin{tabular}{|l|l|} +\hline \textbf{Restriction} & \textbf{Undefine} \\ +\hline Moduli $\le 2560$ bits & BN\_MP\_MONTGOMERY\_REDUCE\_C \\ + & BN\_S\_MP\_MUL\_DIGS\_C \\ + & BN\_S\_MP\_MUL\_HIGH\_DIGS\_C \\ + & BN\_S\_MP\_SQR\_C \\ +\hline Polynomial Schmolynomial & BN\_MP\_KARATSUBA\_MUL\_C \\ + & BN\_MP\_KARATSUBA\_SQR\_C \\ + & BN\_MP\_TOOM\_MUL\_C \\ + & BN\_MP\_TOOM\_SQR\_C \\ + +\hline +\end{tabular} +\end{center} +\end{small} + + +\section{Purpose of LibTomMath} +Unlike GNU MP (GMP) Library, LIP, OpenSSL or various other commercial kits (Miracl), LibTomMath was not written with +bleeding edge performance in mind. First and foremost LibTomMath was written to be entirely open. Not only is the +source code public domain (unlike various other GPL/etc licensed code), not only is the code freely downloadable but the +source code is also accessible for computer science students attempting to learn ``BigNum'' or multiple precision +arithmetic techniques. + +LibTomMath was written to be an instructive collection of source code. This is why there are many comments, only one +function per source file and often I use a ``middle-road'' approach where I don't cut corners for an extra 2\% speed +increase. + +Source code alone cannot really teach how the algorithms work which is why I also wrote a textbook that accompanies +the library (beat that!). + +So you may be thinking ``should I use LibTomMath?'' and the answer is a definite maybe. Let me tabulate what I think +are the pros and cons of LibTomMath by comparing it to the math routines from GnuPG\footnote{GnuPG v1.2.3 versus LibTomMath v0.28}. + +\newpage\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{|l|c|c|l|} +\hline \textbf{Criteria} & \textbf{Pro} & \textbf{Con} & \textbf{Notes} \\ +\hline Few lines of code per file & X & & GnuPG $ = 300.9$, LibTomMath $ = 76.04$ \\ +\hline Commented function prototypes & X && GnuPG function names are cryptic. \\ +\hline Speed && X & LibTomMath is slower. \\ +\hline Totally free & X & & GPL has unfavourable restrictions.\\ +\hline Large function base & X & & GnuPG is barebones. \\ +\hline Four modular reduction algorithms & X & & Faster modular exponentiation. \\ +\hline Portable & X & & GnuPG requires configuration to build. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{LibTomMath Valuation} +\end{figure} + +It may seem odd to compare LibTomMath to GnuPG since the math in GnuPG is only a small portion of the entire application. +However, LibTomMath was written with cryptography in mind. It provides essentially all of the functions a cryptosystem +would require when working with large integers. + +So it may feel tempting to just rip the math code out of GnuPG (or GnuMP where it was taken from originally) in your +own application but I think there are reasons not to. While LibTomMath is slower than libraries such as GnuMP it is +not normally significantly slower. On x86 machines the difference is normally a factor of two when performing modular +exponentiations. + +Essentially the only time you wouldn't use LibTomMath is when blazing speed is the primary concern. + +\chapter{Getting Started with LibTomMath} +\section{Building Programs} +In order to use LibTomMath you must include ``tommath.h'' and link against the appropriate library file (typically +libtommath.a). There is no library initialization required and the entire library is thread safe. + +\section{Return Codes} +There are three possible return codes a function may return. + +\index{MP\_OKAY}\index{MP\_YES}\index{MP\_NO}\index{MP\_VAL}\index{MP\_MEM} +\begin{figure}[here!] +\begin{center} +\begin{small} +\begin{tabular}{|l|l|} +\hline \textbf{Code} & \textbf{Meaning} \\ +\hline MP\_OKAY & The function succeeded. \\ +\hline MP\_VAL & The function input was invalid. \\ +\hline MP\_MEM & Heap memory exhausted. \\ +\hline &\\ +\hline MP\_YES & Response is yes. \\ +\hline MP\_NO & Response is no. \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Return Codes} +\end{figure} + +The last two codes listed are not actually ``return'ed'' by a function. They are placed in an integer (the caller must +provide the address of an integer it can store to) which the caller can access. To convert one of the three return codes +to a string use the following function. + +\index{mp\_error\_to\_string} +\begin{alltt} +char *mp_error_to_string(int code); +\end{alltt} + +This will return a pointer to a string which describes the given error code. It will not work for the return codes +MP\_YES and MP\_NO. + +\section{Data Types} +The basic ``multiple precision integer'' type is known as the ``mp\_int'' within LibTomMath. This data type is used to +organize all of the data required to manipulate the integer it represents. Within LibTomMath it has been prototyped +as the following. + +\index{mp\_int} +\begin{alltt} +typedef struct \{ + int used, alloc, sign; + mp_digit *dp; +\} mp_int; +\end{alltt} + +Where ``mp\_digit'' is a data type that represents individual digits of the integer. By default, an mp\_digit is the +ISO C ``unsigned long'' data type and each digit is $28-$bits long. The mp\_digit type can be configured to suit other +platforms by defining the appropriate macros. + +All LTM functions that use the mp\_int type will expect a pointer to mp\_int structure. You must allocate memory to +hold the structure itself by yourself (whether off stack or heap it doesn't matter). The very first thing that must be +done to use an mp\_int is that it must be initialized. + +\section{Function Organization} + +The arithmetic functions of the library are all organized to have the same style prototype. That is source operands +are passed on the left and the destination is on the right. For instance, + +\begin{alltt} +mp_add(&a, &b, &c); /* c = a + b */ +mp_mul(&a, &a, &c); /* c = a * a */ +mp_div(&a, &b, &c, &d); /* c = [a/b], d = a mod b */ +\end{alltt} + +Another feature of the way the functions have been implemented is that source operands can be destination operands as well. +For instance, + +\begin{alltt} +mp_add(&a, &b, &b); /* b = a + b */ +mp_div(&a, &b, &a, &c); /* a = [a/b], c = a mod b */ +\end{alltt} + +This allows operands to be re-used which can make programming simpler. + +\section{Initialization} +\subsection{Single Initialization} +A single mp\_int can be initialized with the ``mp\_init'' function. + +\index{mp\_init} +\begin{alltt} +int mp_init (mp_int * a); +\end{alltt} + +This function expects a pointer to an mp\_int structure and will initialize the members of the structure so the mp\_int +represents the default integer which is zero. If the functions returns MP\_OKAY then the mp\_int is ready to be used +by the other LibTomMath functions. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number; + int result; + + if ((result = mp_init(&number)) != MP_OKAY) \{ + printf("Error initializing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* use the number */ + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +\subsection{Single Free} +When you are finished with an mp\_int it is ideal to return the heap it used back to the system. The following function +provides this functionality. + +\index{mp\_clear} +\begin{alltt} +void mp_clear (mp_int * a); +\end{alltt} + +The function expects a pointer to a previously initialized mp\_int structure and frees the heap it uses. It sets the +pointer\footnote{The ``dp'' member.} within the mp\_int to \textbf{NULL} which is used to prevent double free situations. +Is is legal to call mp\_clear() twice on the same mp\_int in a row. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number; + int result; + + if ((result = mp_init(&number)) != MP_OKAY) \{ + printf("Error initializing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* use the number */ + + /* We're done with it. */ + mp_clear(&number); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +\subsection{Multiple Initializations} +Certain algorithms require more than one large integer. In these instances it is ideal to initialize all of the mp\_int +variables in an ``all or nothing'' fashion. That is, they are either all initialized successfully or they are all +not initialized. + +The mp\_init\_multi() function provides this functionality. + +\index{mp\_init\_multi} \index{mp\_clear\_multi} +\begin{alltt} +int mp_init_multi(mp_int *mp, ...); +\end{alltt} + +It accepts a \textbf{NULL} terminated list of pointers to mp\_int structures. It will attempt to initialize them all +at once. If the function returns MP\_OKAY then all of the mp\_int variables are ready to use, otherwise none of them +are available for use. A complementary mp\_clear\_multi() function allows multiple mp\_int variables to be free'd +from the heap at the same time. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int num1, num2, num3; + int result; + + if ((result = mp_init_multi(&num1, + &num2, + &num3, NULL)) != MP\_OKAY) \{ + printf("Error initializing the numbers. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* use the numbers */ + + /* We're done with them. */ + mp_clear_multi(&num1, &num2, &num3, NULL); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +\subsection{Other Initializers} +To initialized and make a copy of an mp\_int the mp\_init\_copy() function has been provided. + +\index{mp\_init\_copy} +\begin{alltt} +int mp_init_copy (mp_int * a, mp_int * b); +\end{alltt} + +This function will initialize $a$ and make it a copy of $b$ if all goes well. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int num1, num2; + int result; + + /* initialize and do work on num1 ... */ + + /* We want a copy of num1 in num2 now */ + if ((result = mp_init_copy(&num2, &num1)) != MP_OKAY) \{ + printf("Error initializing the copy. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* now num2 is ready and contains a copy of num1 */ + + /* We're done with them. */ + mp_clear_multi(&num1, &num2, NULL); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +Another less common initializer is mp\_init\_size() which allows the user to initialize an mp\_int with a given +default number of digits. By default, all initializers allocate \textbf{MP\_PREC} digits. This function lets +you override this behaviour. + +\index{mp\_init\_size} +\begin{alltt} +int mp_init_size (mp_int * a, int size); +\end{alltt} + +The $size$ parameter must be greater than zero. If the function succeeds the mp\_int $a$ will be initialized +to have $size$ digits (which are all initially zero). + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number; + int result; + + /* we need a 60-digit number */ + if ((result = mp_init_size(&number, 60)) != MP_OKAY) \{ + printf("Error initializing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* use the number */ + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +\section{Maintenance Functions} + +\subsection{Reducing Memory Usage} +When an mp\_int is in a state where it won't be changed again\footnote{A Diffie-Hellman modulus for instance.} excess +digits can be removed to return memory to the heap with the mp\_shrink() function. + +\index{mp\_shrink} +\begin{alltt} +int mp_shrink (mp_int * a); +\end{alltt} + +This will remove excess digits of the mp\_int $a$. If the operation fails the mp\_int should be intact without the +excess digits being removed. Note that you can use a shrunk mp\_int in further computations, however, such operations +will require heap operations which can be slow. It is not ideal to shrink mp\_int variables that you will further +modify in the system (unless you are seriously low on memory). + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number; + int result; + + if ((result = mp_init(&number)) != MP_OKAY) \{ + printf("Error initializing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* use the number [e.g. pre-computation] */ + + /* We're done with it for now. */ + if ((result = mp_shrink(&number)) != MP_OKAY) \{ + printf("Error shrinking the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* use it .... */ + + + /* we're done with it. */ + mp_clear(&number); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +\subsection{Adding additional digits} + +Within the mp\_int structure are two parameters which control the limitations of the array of digits that represent +the integer the mp\_int is meant to equal. The \textit{used} parameter dictates how many digits are significant, that is, +contribute to the value of the mp\_int. The \textit{alloc} parameter dictates how many digits are currently available in +the array. If you need to perform an operation that requires more digits you will have to mp\_grow() the mp\_int to +your desired size. + +\index{mp\_grow} +\begin{alltt} +int mp_grow (mp_int * a, int size); +\end{alltt} + +This will grow the array of digits of $a$ to $size$. If the \textit{alloc} parameter is already bigger than +$size$ the function will not do anything. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number; + int result; + + if ((result = mp_init(&number)) != MP_OKAY) \{ + printf("Error initializing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* use the number */ + + /* We need to add 20 digits to the number */ + if ((result = mp_grow(&number, number.alloc + 20)) != MP_OKAY) \{ + printf("Error growing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + + /* use the number */ + + /* we're done with it. */ + mp_clear(&number); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +\chapter{Basic Operations} +\section{Small Constants} +Setting mp\_ints to small constants is a relatively common operation. To accomodate these instances there are two +small constant assignment functions. The first function is used to set a single digit constant while the second sets +an ISO C style ``unsigned long'' constant. The reason for both functions is efficiency. Setting a single digit is quick but the +domain of a digit can change (it's always at least $0 \ldots 127$). + +\subsection{Single Digit} + +Setting a single digit can be accomplished with the following function. + +\index{mp\_set} +\begin{alltt} +void mp_set (mp_int * a, mp_digit b); +\end{alltt} + +This will zero the contents of $a$ and make it represent an integer equal to the value of $b$. Note that this +function has a return type of \textbf{void}. It cannot cause an error so it is safe to assume the function +succeeded. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number; + int result; + + if ((result = mp_init(&number)) != MP_OKAY) \{ + printf("Error initializing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* set the number to 5 */ + mp_set(&number, 5); + + /* we're done with it. */ + mp_clear(&number); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +\subsection{Long Constants} + +To set a constant that is the size of an ISO C ``unsigned long'' and larger than a single digit the following function +can be used. + +\index{mp\_set\_int} +\begin{alltt} +int mp_set_int (mp_int * a, unsigned long b); +\end{alltt} + +This will assign the value of the 32-bit variable $b$ to the mp\_int $a$. Unlike mp\_set() this function will always +accept a 32-bit input regardless of the size of a single digit. However, since the value may span several digits +this function can fail if it runs out of heap memory. + +To get the ``unsigned long'' copy of an mp\_int the following function can be used. + +\index{mp\_get\_int} +\begin{alltt} +unsigned long mp_get_int (mp_int * a); +\end{alltt} + +This will return the 32 least significant bits of the mp\_int $a$. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number; + int result; + + if ((result = mp_init(&number)) != MP_OKAY) \{ + printf("Error initializing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* set the number to 654321 (note this is bigger than 127) */ + if ((result = mp_set_int(&number, 654321)) != MP_OKAY) \{ + printf("Error setting the value of the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + printf("number == \%lu", mp_get_int(&number)); + + /* we're done with it. */ + mp_clear(&number); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +This should output the following if the program succeeds. + +\begin{alltt} +number == 654321 +\end{alltt} + +\subsection{Initialize and Setting Constants} +To both initialize and set small constants the following two functions are available. +\index{mp\_init\_set} \index{mp\_init\_set\_int} +\begin{alltt} +int mp_init_set (mp_int * a, mp_digit b); +int mp_init_set_int (mp_int * a, unsigned long b); +\end{alltt} + +Both functions work like the previous counterparts except they first mp\_init $a$ before setting the values. + +\begin{alltt} +int main(void) +\{ + mp_int number1, number2; + int result; + + /* initialize and set a single digit */ + if ((result = mp_init_set(&number1, 100)) != MP_OKAY) \{ + printf("Error setting number1: \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* initialize and set a long */ + if ((result = mp_init_set_int(&number2, 1023)) != MP_OKAY) \{ + printf("Error setting number2: \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* display */ + printf("Number1, Number2 == \%lu, \%lu", + mp_get_int(&number1), mp_get_int(&number2)); + + /* clear */ + mp_clear_multi(&number1, &number2, NULL); + + return EXIT_SUCCESS; +\} +\end{alltt} + +If this program succeeds it shall output. +\begin{alltt} +Number1, Number2 == 100, 1023 +\end{alltt} + +\section{Comparisons} + +Comparisons in LibTomMath are always performed in a ``left to right'' fashion. There are three possible return codes +for any comparison. + +\index{MP\_GT} \index{MP\_EQ} \index{MP\_LT} +\begin{figure}[here] +\begin{center} +\begin{tabular}{|c|c|} +\hline \textbf{Result Code} & \textbf{Meaning} \\ +\hline MP\_GT & $a > b$ \\ +\hline MP\_EQ & $a = b$ \\ +\hline MP\_LT & $a < b$ \\ +\hline +\end{tabular} +\end{center} +\caption{Comparison Codes for $a, b$} +\label{fig:CMP} +\end{figure} + +In figure \ref{fig:CMP} two integers $a$ and $b$ are being compared. In this case $a$ is said to be ``to the left'' of +$b$. + +\subsection{Unsigned comparison} + +An unsigned comparison considers only the digits themselves and not the associated \textit{sign} flag of the +mp\_int structures. This is analogous to an absolute comparison. The function mp\_cmp\_mag() will compare two +mp\_int variables based on their digits only. + +\index{mp\_cmp\_mag} +\begin{alltt} +int mp_cmp(mp_int * a, mp_int * b); +\end{alltt} +This will compare $a$ to $b$ placing $a$ to the left of $b$. This function cannot fail and will return one of the +three compare codes listed in figure \ref{fig:CMP}. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number1, number2; + int result; + + if ((result = mp_init_multi(&number1, &number2, NULL)) != MP_OKAY) \{ + printf("Error initializing the numbers. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* set the number1 to 5 */ + mp_set(&number1, 5); + + /* set the number2 to -6 */ + mp_set(&number2, 6); + if ((result = mp_neg(&number2, &number2)) != MP_OKAY) \{ + printf("Error negating number2. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + switch(mp_cmp_mag(&number1, &number2)) \{ + case MP_GT: printf("|number1| > |number2|"); break; + case MP_EQ: printf("|number1| = |number2|"); break; + case MP_LT: printf("|number1| < |number2|"); break; + \} + + /* we're done with it. */ + mp_clear_multi(&number1, &number2, NULL); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +If this program\footnote{This function uses the mp\_neg() function which is discussed in section \ref{sec:NEG}.} completes +successfully it should print the following. + +\begin{alltt} +|number1| < |number2| +\end{alltt} + +This is because $\vert -6 \vert = 6$ and obviously $5 < 6$. + +\subsection{Signed comparison} + +To compare two mp\_int variables based on their signed value the mp\_cmp() function is provided. + +\index{mp\_cmp} +\begin{alltt} +int mp_cmp(mp_int * a, mp_int * b); +\end{alltt} + +This will compare $a$ to the left of $b$. It will first compare the signs of the two mp\_int variables. If they +differ it will return immediately based on their signs. If the signs are equal then it will compare the digits +individually. This function will return one of the compare conditions codes listed in figure \ref{fig:CMP}. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number1, number2; + int result; + + if ((result = mp_init_multi(&number1, &number2, NULL)) != MP_OKAY) \{ + printf("Error initializing the numbers. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* set the number1 to 5 */ + mp_set(&number1, 5); + + /* set the number2 to -6 */ + mp_set(&number2, 6); + if ((result = mp_neg(&number2, &number2)) != MP_OKAY) \{ + printf("Error negating number2. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + switch(mp_cmp(&number1, &number2)) \{ + case MP_GT: printf("number1 > number2"); break; + case MP_EQ: printf("number1 = number2"); break; + case MP_LT: printf("number1 < number2"); break; + \} + + /* we're done with it. */ + mp_clear_multi(&number1, &number2, NULL); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +If this program\footnote{This function uses the mp\_neg() function which is discussed in section \ref{sec:NEG}.} completes +successfully it should print the following. + +\begin{alltt} +number1 > number2 +\end{alltt} + +\subsection{Single Digit} + +To compare a single digit against an mp\_int the following function has been provided. + +\index{mp\_cmp\_d} +\begin{alltt} +int mp_cmp_d(mp_int * a, mp_digit b); +\end{alltt} + +This will compare $a$ to the left of $b$ using a signed comparison. Note that it will always treat $b$ as +positive. This function is rather handy when you have to compare against small values such as $1$ (which often +comes up in cryptography). The function cannot fail and will return one of the tree compare condition codes +listed in figure \ref{fig:CMP}. + + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number; + int result; + + if ((result = mp_init(&number)) != MP_OKAY) \{ + printf("Error initializing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* set the number to 5 */ + mp_set(&number, 5); + + switch(mp_cmp_d(&number, 7)) \{ + case MP_GT: printf("number > 7"); break; + case MP_EQ: printf("number = 7"); break; + case MP_LT: printf("number < 7"); break; + \} + + /* we're done with it. */ + mp_clear(&number); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +If this program functions properly it will print out the following. + +\begin{alltt} +number < 7 +\end{alltt} + +\section{Logical Operations} + +Logical operations are operations that can be performed either with simple shifts or boolean operators such as +AND, XOR and OR directly. These operations are very quick. + +\subsection{Multiplication by two} + +Multiplications and divisions by any power of two can be performed with quick logical shifts either left or +right depending on the operation. + +When multiplying or dividing by two a special case routine can be used which are as follows. +\index{mp\_mul\_2} \index{mp\_div\_2} +\begin{alltt} +int mp_mul_2(mp_int * a, mp_int * b); +int mp_div_2(mp_int * a, mp_int * b); +\end{alltt} + +The former will assign twice $a$ to $b$ while the latter will assign half $a$ to $b$. These functions are fast +since the shift counts and maskes are hardcoded into the routines. + +\begin{small} \begin{alltt} +int main(void) +\{ + mp_int number; + int result; + + if ((result = mp_init(&number)) != MP_OKAY) \{ + printf("Error initializing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* set the number to 5 */ + mp_set(&number, 5); + + /* multiply by two */ + if ((result = mp\_mul\_2(&number, &number)) != MP_OKAY) \{ + printf("Error multiplying the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + switch(mp_cmp_d(&number, 7)) \{ + case MP_GT: printf("2*number > 7"); break; + case MP_EQ: printf("2*number = 7"); break; + case MP_LT: printf("2*number < 7"); break; + \} + + /* now divide by two */ + if ((result = mp\_div\_2(&number, &number)) != MP_OKAY) \{ + printf("Error dividing the number. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + switch(mp_cmp_d(&number, 7)) \{ + case MP_GT: printf("2*number/2 > 7"); break; + case MP_EQ: printf("2*number/2 = 7"); break; + case MP_LT: printf("2*number/2 < 7"); break; + \} + + /* we're done with it. */ + mp_clear(&number); + + return EXIT_SUCCESS; +\} +\end{alltt} \end{small} + +If this program is successful it will print out the following text. + +\begin{alltt} +2*number > 7 +2*number/2 < 7 +\end{alltt} + +Since $10 > 7$ and $5 < 7$. To multiply by a power of two the following function can be used. + +\index{mp\_mul\_2d} +\begin{alltt} +int mp_mul_2d(mp_int * a, int b, mp_int * c); +\end{alltt} + +This will multiply $a$ by $2^b$ and store the result in ``c''. If the value of $b$ is less than or equal to +zero the function will copy $a$ to ``c'' without performing any further actions. + +To divide by a power of two use the following. + +\index{mp\_div\_2d} +\begin{alltt} +int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d); +\end{alltt} +Which will divide $a$ by $2^b$, store the quotient in ``c'' and the remainder in ``d'. If $b \le 0$ then the +function simply copies $a$ over to ``c'' and zeroes $d$. The variable $d$ may be passed as a \textbf{NULL} +value to signal that the remainder is not desired. + +\subsection{Polynomial Basis Operations} + +Strictly speaking the organization of the integers within the mp\_int structures is what is known as a +``polynomial basis''. This simply means a field element is stored by divisions of a radix. For example, if +$f(x) = \sum_{i=0}^{k} y_ix^k$ for any vector $\vec y$ then the array of digits in $\vec y$ are said to be +the polynomial basis representation of $z$ if $f(\beta) = z$ for a given radix $\beta$. + +To multiply by the polynomial $g(x) = x$ all you have todo is shift the digits of the basis left one place. The +following function provides this operation. + +\index{mp\_lshd} +\begin{alltt} +int mp_lshd (mp_int * a, int b); +\end{alltt} + +This will multiply $a$ in place by $x^b$ which is equivalent to shifting the digits left $b$ places and inserting zeroes +in the least significant digits. Similarly to divide by a power of $x$ the following function is provided. + +\index{mp\_rshd} +\begin{alltt} +void mp_rshd (mp_int * a, int b) +\end{alltt} +This will divide $a$ in place by $x^b$ and discard the remainder. This function cannot fail as it performs the operations +in place and no new digits are required to complete it. + +\subsection{AND, OR and XOR Operations} + +While AND, OR and XOR operations are not typical ``bignum functions'' they can be useful in several instances. The +three functions are prototyped as follows. + +\index{mp\_or} \index{mp\_and} \index{mp\_xor} +\begin{alltt} +int mp_or (mp_int * a, mp_int * b, mp_int * c); +int mp_and (mp_int * a, mp_int * b, mp_int * c); +int mp_xor (mp_int * a, mp_int * b, mp_int * c); +\end{alltt} + +Which compute $c = a \odot b$ where $\odot$ is one of OR, AND or XOR. + +\section{Addition and Subtraction} + +To compute an addition or subtraction the following two functions can be used. + +\index{mp\_add} \index{mp\_sub} +\begin{alltt} +int mp_add (mp_int * a, mp_int * b, mp_int * c); +int mp_sub (mp_int * a, mp_int * b, mp_int * c) +\end{alltt} + +Which perform $c = a \odot b$ where $\odot$ is one of signed addition or subtraction. The operations are fully sign +aware. + +\section{Sign Manipulation} +\subsection{Negation} +\label{sec:NEG} +Simple integer negation can be performed with the following. + +\index{mp\_neg} +\begin{alltt} +int mp_neg (mp_int * a, mp_int * b); +\end{alltt} + +Which assigns $-a$ to $b$. + +\subsection{Absolute} +Simple integer absolutes can be performed with the following. + +\index{mp\_neg} +\begin{alltt} +int mp_abs (mp_int * a, mp_int * b); +\end{alltt} + +Which assigns $\vert a \vert$ to $b$. + +\section{Integer Division and Remainder} +To perform a complete and general integer division with remainder use the following function. + +\index{mp\_div} +\begin{alltt} +int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d); +\end{alltt} + +This divides $a$ by $b$ and stores the quotient in $c$ and $d$. The signed quotient is computed such that +$bc + d = a$. Note that either of $c$ or $d$ can be set to \textbf{NULL} if their value is not required. If +$b$ is zero the function returns \textbf{MP\_VAL}. + + +\chapter{Multiplication and Squaring} +\section{Multiplication} +A full signed integer multiplication can be performed with the following. +\index{mp\_mul} +\begin{alltt} +int mp_mul (mp_int * a, mp_int * b, mp_int * c); +\end{alltt} +Which assigns the full signed product $ab$ to $c$. This function actually breaks into one of four cases which are +specific multiplication routines optimized for given parameters. First there are the Toom-Cook multiplications which +should only be used with very large inputs. This is followed by the Karatsuba multiplications which are for moderate +sized inputs. Then followed by the Comba and baseline multipliers. + +Fortunately for the developer you don't really need to know this unless you really want to fine tune the system. mp\_mul() +will determine on its own\footnote{Some tweaking may be required.} what routine to use automatically when it is called. + +\begin{alltt} +int main(void) +\{ + mp_int number1, number2; + int result; + + /* Initialize the numbers */ + if ((result = mp_init_multi(&number1, + &number2, NULL)) != MP_OKAY) \{ + printf("Error initializing the numbers. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* set the terms */ + if ((result = mp_set_int(&number, 257)) != MP_OKAY) \{ + printf("Error setting number1. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + if ((result = mp_set_int(&number2, 1023)) != MP_OKAY) \{ + printf("Error setting number2. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* multiply them */ + if ((result = mp_mul(&number1, &number2, + &number1)) != MP_OKAY) \{ + printf("Error multiplying terms. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* display */ + printf("number1 * number2 == \%lu", mp_get_int(&number1)); + + /* free terms and return */ + mp_clear_multi(&number1, &number2, NULL); + + return EXIT_SUCCESS; +\} +\end{alltt} + +If this program succeeds it shall output the following. + +\begin{alltt} +number1 * number2 == 262911 +\end{alltt} + +\section{Squaring} +Since squaring can be performed faster than multiplication it is performed it's own function instead of just using +mp\_mul(). + +\index{mp\_sqr} +\begin{alltt} +int mp_sqr (mp_int * a, mp_int * b); +\end{alltt} + +Will square $a$ and store it in $b$. Like the case of multiplication there are four different squaring +algorithms all which can be called from mp\_sqr(). It is ideal to use mp\_sqr over mp\_mul when squaring terms. + +\section{Tuning Polynomial Basis Routines} + +Both of the Toom-Cook and Karatsuba multiplication algorithms are faster than the traditional $O(n^2)$ approach that +the Comba and baseline algorithms use. At $O(n^{1.464973})$ and $O(n^{1.584962})$ running times respectfully they require +considerably less work. For example, a 10000-digit multiplication would take roughly 724,000 single precision +multiplications with Toom-Cook or 100,000,000 single precision multiplications with the standard Comba (a factor +of 138). + +So why not always use Karatsuba or Toom-Cook? The simple answer is that they have so much overhead that they're not +actually faster than Comba until you hit distinct ``cutoff'' points. For Karatsuba with the default configuration, +GCC 3.3.1 and an Athlon XP processor the cutoff point is roughly 110 digits (about 70 for the Intel P4). That is, at +110 digits Karatsuba and Comba multiplications just about break even and for 110+ digits Karatsuba is faster. + +Toom-Cook has incredible overhead and is probably only useful for very large inputs. So far no known cutoff points +exist and for the most part I just set the cutoff points very high to make sure they're not called. + +A demo program in the ``etc/'' directory of the project called ``tune.c'' can be used to find the cutoff points. This +can be built with GCC as follows + +\begin{alltt} +make XXX +\end{alltt} +Where ``XXX'' is one of the following entries from the table \ref{fig:tuning}. + +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|l|l|} +\hline \textbf{Value of XXX} & \textbf{Meaning} \\ +\hline tune & Builds portable tuning application \\ +\hline tune86 & Builds x86 (pentium and up) program for COFF \\ +\hline tune86c & Builds x86 program for Cygwin \\ +\hline tune86l & Builds x86 program for Linux (ELF format) \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Build Names for Tuning Programs} +\label{fig:tuning} +\end{figure} + +When the program is running it will output a series of measurements for different cutoff points. It will first find +good Karatsuba squaring and multiplication points. Then it proceeds to find Toom-Cook points. Note that the Toom-Cook +tuning takes a very long time as the cutoff points are likely to be very high. + +\chapter{Modular Reduction} + +Modular reduction is process of taking the remainder of one quantity divided by another. Expressed +as (\ref{eqn:mod}) the modular reduction is equivalent to the remainder of $b$ divided by $c$. + +\begin{equation} +a \equiv b \mbox{ (mod }c\mbox{)} +\label{eqn:mod} +\end{equation} + +Of particular interest to cryptography are reductions where $b$ is limited to the range $0 \le b < c^2$ since particularly +fast reduction algorithms can be written for the limited range. + +Note that one of the four optimized reduction algorithms are automatically chosen in the modular exponentiation +algorithm mp\_exptmod when an appropriate modulus is detected. + +\section{Straight Division} +In order to effect an arbitrary modular reduction the following algorithm is provided. + +\index{mp\_mod} +\begin{alltt} +int mp_mod(mp_int *a, mp_int *b, mp_int *c); +\end{alltt} + +This reduces $a$ modulo $b$ and stores the result in $c$. The sign of $c$ shall agree with the sign +of $b$. This algorithm accepts an input $a$ of any range and is not limited by $0 \le a < b^2$. + +\section{Barrett Reduction} + +Barrett reduction is a generic optimized reduction algorithm that requires pre--computation to achieve +a decent speedup over straight division. First a $mu$ value must be precomputed with the following function. + +\index{mp\_reduce\_setup} +\begin{alltt} +int mp_reduce_setup(mp_int *a, mp_int *b); +\end{alltt} + +Given a modulus in $b$ this produces the required $mu$ value in $a$. For any given modulus this only has to +be computed once. Modular reduction can now be performed with the following. + +\index{mp\_reduce} +\begin{alltt} +int mp_reduce(mp_int *a, mp_int *b, mp_int *c); +\end{alltt} + +This will reduce $a$ in place modulo $b$ with the precomputed $mu$ value in $c$. $a$ must be in the range +$0 \le a < b^2$. + +\begin{alltt} +int main(void) +\{ + mp_int a, b, c, mu; + int result; + + /* initialize a,b to desired values, mp_init mu, + * c and set c to 1...we want to compute a^3 mod b + */ + + /* get mu value */ + if ((result = mp_reduce_setup(&mu, b)) != MP_OKAY) \{ + printf("Error getting mu. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* square a to get c = a^2 */ + if ((result = mp_sqr(&a, &c)) != MP_OKAY) \{ + printf("Error squaring. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* now reduce `c' modulo b */ + if ((result = mp_reduce(&c, &b, &mu)) != MP_OKAY) \{ + printf("Error reducing. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* multiply a to get c = a^3 */ + if ((result = mp_mul(&a, &c, &c)) != MP_OKAY) \{ + printf("Error reducing. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* now reduce `c' modulo b */ + if ((result = mp_reduce(&c, &b, &mu)) != MP_OKAY) \{ + printf("Error reducing. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* c now equals a^3 mod b */ + + return EXIT_SUCCESS; +\} +\end{alltt} + +This program will calculate $a^3 \mbox{ mod }b$ if all the functions succeed. + +\section{Montgomery Reduction} + +Montgomery is a specialized reduction algorithm for any odd moduli. Like Barrett reduction a pre--computation +step is required. This is accomplished with the following. + +\index{mp\_montgomery\_setup} +\begin{alltt} +int mp_montgomery_setup(mp_int *a, mp_digit *mp); +\end{alltt} + +For the given odd moduli $a$ the precomputation value is placed in $mp$. The reduction is computed with the +following. + +\index{mp\_montgomery\_reduce} +\begin{alltt} +int mp_montgomery_reduce(mp_int *a, mp_int *m, mp_digit mp); +\end{alltt} +This reduces $a$ in place modulo $m$ with the pre--computed value $mp$. $a$ must be in the range +$0 \le a < b^2$. + +Montgomery reduction is faster than Barrett reduction for moduli smaller than the ``comba'' limit. With the default +setup for instance, the limit is $127$ digits ($3556$--bits). Note that this function is not limited to +$127$ digits just that it falls back to a baseline algorithm after that point. + +An important observation is that this reduction does not return $a \mbox{ mod }m$ but $aR^{-1} \mbox{ mod }m$ +where $R = \beta^n$, $n$ is the n number of digits in $m$ and $\beta$ is radix used (default is $2^{28}$). + +To quickly calculate $R$ the following function was provided. + +\index{mp\_montgomery\_calc\_normalization} +\begin{alltt} +int mp_montgomery_calc_normalization(mp_int *a, mp_int *b); +\end{alltt} +Which calculates $a = R$ for the odd moduli $b$ without using multiplication or division. + +The normal modus operandi for Montgomery reductions is to normalize the integers before entering the system. For +example, to calculate $a^3 \mbox { mod }b$ using Montgomery reduction the value of $a$ can be normalized by +multiplying it by $R$. Consider the following code snippet. + +\begin{alltt} +int main(void) +\{ + mp_int a, b, c, R; + mp_digit mp; + int result; + + /* initialize a,b to desired values, + * mp_init R, c and set c to 1.... + */ + + /* get normalization */ + if ((result = mp_montgomery_calc_normalization(&R, b)) != MP_OKAY) \{ + printf("Error getting norm. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* get mp value */ + if ((result = mp_montgomery_setup(&c, &mp)) != MP_OKAY) \{ + printf("Error setting up montgomery. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* normalize `a' so now a is equal to aR */ + if ((result = mp_mulmod(&a, &R, &b, &a)) != MP_OKAY) \{ + printf("Error computing aR. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* square a to get c = a^2R^2 */ + if ((result = mp_sqr(&a, &c)) != MP_OKAY) \{ + printf("Error squaring. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* now reduce `c' back down to c = a^2R^2 * R^-1 == a^2R */ + if ((result = mp_montgomery_reduce(&c, &b, mp)) != MP_OKAY) \{ + printf("Error reducing. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* multiply a to get c = a^3R^2 */ + if ((result = mp_mul(&a, &c, &c)) != MP_OKAY) \{ + printf("Error reducing. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* now reduce `c' back down to c = a^3R^2 * R^-1 == a^3R */ + if ((result = mp_montgomery_reduce(&c, &b, mp)) != MP_OKAY) \{ + printf("Error reducing. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* now reduce (again) `c' back down to c = a^3R * R^-1 == a^3 */ + if ((result = mp_montgomery_reduce(&c, &b, mp)) != MP_OKAY) \{ + printf("Error reducing. \%s", + mp_error_to_string(result)); + return EXIT_FAILURE; + \} + + /* c now equals a^3 mod b */ + + return EXIT_SUCCESS; +\} +\end{alltt} + +This particular example does not look too efficient but it demonstrates the point of the algorithm. By +normalizing the inputs the reduced results are always of the form $aR$ for some variable $a$. This allows +a single final reduction to correct for the normalization and the fast reduction used within the algorithm. + +For more details consider examining the file \textit{bn\_mp\_exptmod\_fast.c}. + +\section{Restricted Dimminished Radix} + +``Dimminished Radix'' reduction refers to reduction with respect to moduli that are ameniable to simple +digit shifting and small multiplications. In this case the ``restricted'' variant refers to moduli of the +form $\beta^k - p$ for some $k \ge 0$ and $0 < p < \beta$ where $\beta$ is the radix (default to $2^{28}$). + +As in the case of Montgomery reduction there is a pre--computation phase required for a given modulus. + +\index{mp\_dr\_setup} +\begin{alltt} +void mp_dr_setup(mp_int *a, mp_digit *d); +\end{alltt} + +This computes the value required for the modulus $a$ and stores it in $d$. This function cannot fail +and does not return any error codes. After the pre--computation a reduction can be performed with the +following. + +\index{mp\_dr\_reduce} +\begin{alltt} +int mp_dr_reduce(mp_int *a, mp_int *b, mp_digit mp); +\end{alltt} + +This reduces $a$ in place modulo $b$ with the pre--computed value $mp$. $b$ must be of a restricted +dimminished radix form and $a$ must be in the range $0 \le a < b^2$. Dimminished radix reductions are +much faster than both Barrett and Montgomery reductions as they have a much lower asymtotic running time. + +Since the moduli are restricted this algorithm is not particularly useful for something like Rabin, RSA or +BBS cryptographic purposes. This reduction algorithm is useful for Diffie-Hellman and ECC where fixed +primes are acceptable. + +Note that unlike Montgomery reduction there is no normalization process. The result of this function is +equal to the correct residue. + +\section{Unrestricted Dimminshed Radix} + +Unrestricted reductions work much like the restricted counterparts except in this case the moduli is of the +form $2^k - p$ for $0 < p < \beta$. In this sense the unrestricted reductions are more flexible as they +can be applied to a wider range of numbers. + +\index{mp\_reduce\_2k\_setup} +\begin{alltt} +int mp_reduce_2k_setup(mp_int *a, mp_digit *d); +\end{alltt} + +This will compute the required $d$ value for the given moduli $a$. + +\index{mp\_reduce\_2k} +\begin{alltt} +int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d); +\end{alltt} + +This will reduce $a$ in place modulo $n$ with the pre--computed value $d$. From my experience this routine is +slower than mp\_dr\_reduce but faster for most moduli sizes than the Montgomery reduction. + +\chapter{Exponentiation} +\section{Single Digit Exponentiation} +\index{mp\_expt\_d} +\begin{alltt} +int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) +\end{alltt} +This computes $c = a^b$ using a simple binary left-to-right algorithm. It is faster than repeated multiplications by +$a$ for all values of $b$ greater than three. + +\section{Modular Exponentiation} +\index{mp\_exptmod} +\begin{alltt} +int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +\end{alltt} +This computes $Y \equiv G^X \mbox{ (mod }P\mbox{)}$ using a variable width sliding window algorithm. This function +will automatically detect the fastest modular reduction technique to use during the operation. For negative values of +$X$ the operation is performed as $Y \equiv (G^{-1} \mbox{ mod }P)^{\vert X \vert} \mbox{ (mod }P\mbox{)}$ provided that +$gcd(G, P) = 1$. + +This function is actually a shell around the two internal exponentiation functions. This routine will automatically +detect when Barrett, Montgomery, Restricted and Unrestricted Dimminished Radix based exponentiation can be used. Generally +moduli of the a ``restricted dimminished radix'' form lead to the fastest modular exponentiations. Followed by Montgomery +and the other two algorithms. + +\section{Root Finding} +\index{mp\_n\_root} +\begin{alltt} +int mp_n_root (mp_int * a, mp_digit b, mp_int * c) +\end{alltt} +This computes $c = a^{1/b}$ such that $c^b \le a$ and $(c+1)^b > a$. The implementation of this function is not +ideal for values of $b$ greater than three. It will work but become very slow. So unless you are working with very small +numbers (less than 1000 bits) I'd avoid $b > 3$ situations. Will return a positive root only for even roots and return +a root with the sign of the input for odd roots. For example, performing $4^{1/2}$ will return $2$ whereas $(-8)^{1/3}$ +will return $-2$. + +This algorithm uses the ``Newton Approximation'' method and will converge on the correct root fairly quickly. Since +the algorithm requires raising $a$ to the power of $b$ it is not ideal to attempt to find roots for large +values of $b$. If particularly large roots are required then a factor method could be used instead. For example, +$a^{1/16}$ is equivalent to $\left (a^{1/4} \right)^{1/4}$. + +\chapter{Prime Numbers} +\section{Trial Division} +\index{mp\_prime\_is\_divisible} +\begin{alltt} +int mp_prime_is_divisible (mp_int * a, int *result) +\end{alltt} +This will attempt to evenly divide $a$ by a list of primes\footnote{Default is the first 256 primes.} and store the +outcome in ``result''. That is if $result = 0$ then $a$ is not divisible by the primes, otherwise it is. Note that +if the function does not return \textbf{MP\_OKAY} the value in ``result'' should be considered undefined\footnote{Currently +the default is to set it to zero first.}. + +\section{Fermat Test} +\index{mp\_prime\_fermat} +\begin{alltt} +int mp_prime_fermat (mp_int * a, mp_int * b, int *result) +\end{alltt} +Performs a Fermat primality test to the base $b$. That is it computes $b^a \mbox{ mod }a$ and tests whether the value is +equal to $b$ or not. If the values are equal then $a$ is probably prime and $result$ is set to one. Otherwise $result$ +is set to zero. + +\section{Miller-Rabin Test} +\index{mp\_prime\_miller\_rabin} +\begin{alltt} +int mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result) +\end{alltt} +Performs a Miller-Rabin test to the base $b$ of $a$. This test is much stronger than the Fermat test and is very hard to +fool (besides with Carmichael numbers). If $a$ passes the test (therefore is probably prime) $result$ is set to one. +Otherwise $result$ is set to zero. + +Note that is suggested that you use the Miller-Rabin test instead of the Fermat test since all of the failures of +Miller-Rabin are a subset of the failures of the Fermat test. + +\subsection{Required Number of Tests} +Generally to ensure a number is very likely to be prime you have to perform the Miller-Rabin with at least a half-dozen +or so unique bases. However, it has been proven that the probability of failure goes down as the size of the input goes up. +This is why a simple function has been provided to help out. + +\index{mp\_prime\_rabin\_miller\_trials} +\begin{alltt} +int mp_prime_rabin_miller_trials(int size) +\end{alltt} +This returns the number of trials required for a $2^{-96}$ (or lower) probability of failure for a given ``size'' expressed +in bits. This comes in handy specially since larger numbers are slower to test. For example, a 512-bit number would +require ten tests whereas a 1024-bit number would only require four tests. + +You should always still perform a trial division before a Miller-Rabin test though. + +\section{Primality Testing} +\index{mp\_prime\_is\_prime} +\begin{alltt} +int mp_prime_is_prime (mp_int * a, int t, int *result) +\end{alltt} +This will perform a trial division followed by $t$ rounds of Miller-Rabin tests on $a$ and store the result in $result$. +If $a$ passes all of the tests $result$ is set to one, otherwise it is set to zero. Note that $t$ is bounded by +$1 \le t < PRIME\_SIZE$ where $PRIME\_SIZE$ is the number of primes in the prime number table (by default this is $256$). + +\section{Next Prime} +\index{mp\_prime\_next\_prime} +\begin{alltt} +int mp_prime_next_prime(mp_int *a, int t, int bbs_style) +\end{alltt} +This finds the next prime after $a$ that passes mp\_prime\_is\_prime() with $t$ tests. Set $bbs\_style$ to one if you +want only the next prime congruent to $3 \mbox{ mod } 4$, otherwise set it to zero to find any next prime. + +\section{Random Primes} +\index{mp\_prime\_random} +\begin{alltt} +int mp_prime_random(mp_int *a, int t, int size, int bbs, + ltm_prime_callback cb, void *dat) +\end{alltt} +This will find a prime greater than $256^{size}$ which can be ``bbs\_style'' or not depending on $bbs$ and must pass +$t$ rounds of tests. The ``ltm\_prime\_callback'' is a typedef for + +\begin{alltt} +typedef int ltm_prime_callback(unsigned char *dst, int len, void *dat); +\end{alltt} + +Which is a function that must read $len$ bytes (and return the amount stored) into $dst$. The $dat$ variable is simply +copied from the original input. It can be used to pass RNG context data to the callback. The function +mp\_prime\_random() is more suitable for generating primes which must be secret (as in the case of RSA) since there +is no skew on the least significant bits. + +\textit{Note:} As of v0.30 of the LibTomMath library this function has been deprecated. It is still available +but users are encouraged to use the new mp\_prime\_random\_ex() function instead. + +\subsection{Extended Generation} +\index{mp\_prime\_random\_ex} +\begin{alltt} +int mp_prime_random_ex(mp_int *a, int t, + int size, int flags, + ltm_prime_callback cb, void *dat); +\end{alltt} +This will generate a prime in $a$ using $t$ tests of the primality testing algorithms. The variable $size$ +specifies the bit length of the prime desired. The variable $flags$ specifies one of several options available +(see fig. \ref{fig:primeopts}) which can be OR'ed together. The callback parameters are used as in +mp\_prime\_random(). + +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|r|l|} +\hline \textbf{Flag} & \textbf{Meaning} \\ +\hline LTM\_PRIME\_BBS & Make the prime congruent to $3$ modulo $4$ \\ +\hline LTM\_PRIME\_SAFE & Make a prime $p$ such that $(p - 1)/2$ is also prime. \\ + & This option implies LTM\_PRIME\_BBS as well. \\ +\hline LTM\_PRIME\_2MSB\_OFF & Makes sure that the bit adjacent to the most significant bit \\ + & Is forced to zero. \\ +\hline LTM\_PRIME\_2MSB\_ON & Makes sure that the bit adjacent to the most significant bit \\ + & Is forced to one. \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Primality Generation Options} +\label{fig:primeopts} +\end{figure} + +\chapter{Input and Output} +\section{ASCII Conversions} +\subsection{To ASCII} +\index{mp\_toradix} +\begin{alltt} +int mp_toradix (mp_int * a, char *str, int radix); +\end{alltt} +This still store $a$ in ``str'' as a base-``radix'' string of ASCII chars. This function appends a NUL character +to terminate the string. Valid values of ``radix'' line in the range $[2, 64]$. To determine the size (exact) required +by the conversion before storing any data use the following function. + +\index{mp\_radix\_size} +\begin{alltt} +int mp_radix_size (mp_int * a, int radix, int *size) +\end{alltt} +This stores in ``size'' the number of characters (including space for the NUL terminator) required. Upon error this +function returns an error code and ``size'' will be zero. + +\subsection{From ASCII} +\index{mp\_read\_radix} +\begin{alltt} +int mp_read_radix (mp_int * a, char *str, int radix); +\end{alltt} +This will read the base-``radix'' NUL terminated string from ``str'' into $a$. It will stop reading when it reads a +character it does not recognize (which happens to include th NUL char... imagine that...). A single leading $-$ sign +can be used to denote a negative number. + +\section{Binary Conversions} + +Converting an mp\_int to and from binary is another keen idea. + +\index{mp\_unsigned\_bin\_size} +\begin{alltt} +int mp_unsigned_bin_size(mp_int *a); +\end{alltt} + +This will return the number of bytes (octets) required to store the unsigned copy of the integer $a$. + +\index{mp\_to\_unsigned\_bin} +\begin{alltt} +int mp_to_unsigned_bin(mp_int *a, unsigned char *b); +\end{alltt} +This will store $a$ into the buffer $b$ in big--endian format. Fortunately this is exactly what DER (or is it ASN?) +requires. It does not store the sign of the integer. + +\index{mp\_read\_unsigned\_bin} +\begin{alltt} +int mp_read_unsigned_bin(mp_int *a, unsigned char *b, int c); +\end{alltt} +This will read in an unsigned big--endian array of bytes (octets) from $b$ of length $c$ into $a$. The resulting +integer $a$ will always be positive. + +For those who acknowledge the existence of negative numbers (heretic!) there are ``signed'' versions of the +previous functions. + +\begin{alltt} +int mp_signed_bin_size(mp_int *a); +int mp_read_signed_bin(mp_int *a, unsigned char *b, int c); +int mp_to_signed_bin(mp_int *a, unsigned char *b); +\end{alltt} +They operate essentially the same as the unsigned copies except they prefix the data with zero or non--zero +byte depending on the sign. If the sign is zpos (e.g. not negative) the prefix is zero, otherwise the prefix +is non--zero. + +\chapter{Algebraic Functions} +\section{Extended Euclidean Algorithm} +\index{mp\_exteuclid} +\begin{alltt} +int mp_exteuclid(mp_int *a, mp_int *b, + mp_int *U1, mp_int *U2, mp_int *U3); +\end{alltt} + +This finds the triple U1/U2/U3 using the Extended Euclidean algorithm such that the following equation holds. + +\begin{equation} +a \cdot U1 + b \cdot U2 = U3 +\end{equation} + +Any of the U1/U2/U3 paramters can be set to \textbf{NULL} if they are not desired. + +\section{Greatest Common Divisor} +\index{mp\_gcd} +\begin{alltt} +int mp_gcd (mp_int * a, mp_int * b, mp_int * c) +\end{alltt} +This will compute the greatest common divisor of $a$ and $b$ and store it in $c$. + +\section{Least Common Multiple} +\index{mp\_lcm} +\begin{alltt} +int mp_lcm (mp_int * a, mp_int * b, mp_int * c) +\end{alltt} +This will compute the least common multiple of $a$ and $b$ and store it in $c$. + +\section{Jacobi Symbol} +\index{mp\_jacobi} +\begin{alltt} +int mp_jacobi (mp_int * a, mp_int * p, int *c) +\end{alltt} +This will compute the Jacobi symbol for $a$ with respect to $p$. If $p$ is prime this essentially computes the Legendre +symbol. The result is stored in $c$ and can take on one of three values $\lbrace -1, 0, 1 \rbrace$. If $p$ is prime +then the result will be $-1$ when $a$ is not a quadratic residue modulo $p$. The result will be $0$ if $a$ divides $p$ +and the result will be $1$ if $a$ is a quadratic residue modulo $p$. + +\section{Modular Inverse} +\index{mp\_invmod} +\begin{alltt} +int mp_invmod (mp_int * a, mp_int * b, mp_int * c) +\end{alltt} +Computes the multiplicative inverse of $a$ modulo $b$ and stores the result in $c$ such that $ac \equiv 1 \mbox{ (mod }b\mbox{)}$. + +\section{Single Digit Functions} + +For those using small numbers (\textit{snicker snicker}) there are several ``helper'' functions + +\index{mp\_add\_d} \index{mp\_sub\_d} \index{mp\_mul\_d} \index{mp\_div\_d} \index{mp\_mod\_d} +\begin{alltt} +int mp_add_d(mp_int *a, mp_digit b, mp_int *c); +int mp_sub_d(mp_int *a, mp_digit b, mp_int *c); +int mp_mul_d(mp_int *a, mp_digit b, mp_int *c); +int mp_div_d(mp_int *a, mp_digit b, mp_int *c, mp_digit *d); +int mp_mod_d(mp_int *a, mp_digit b, mp_digit *c); +\end{alltt} + +These work like the full mp\_int capable variants except the second parameter $b$ is a mp\_digit. These +functions fairly handy if you have to work with relatively small numbers since you will not have to allocate +an entire mp\_int to store a number like $1$ or $2$. + +\input{bn.ind} + +\end{document} diff --git a/libtommath/bn_error.c b/libtommath/bn_error.c new file mode 100644 index 0000000..1546784 --- /dev/null +++ b/libtommath/bn_error.c @@ -0,0 +1,43 @@ +#include +#ifdef BN_ERROR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +static const struct { + int code; + char *msg; +} msgs[] = { + { MP_OKAY, "Successful" }, + { MP_MEM, "Out of heap" }, + { MP_VAL, "Value out of range" } +}; + +/* return a char * string for a given code */ +char *mp_error_to_string(int code) +{ + int x; + + /* scan the lookup table for the given message */ + for (x = 0; x < (int)(sizeof(msgs) / sizeof(msgs[0])); x++) { + if (msgs[x].code == code) { + return msgs[x].msg; + } + } + + /* generic reply for invalid code */ + return "Invalid error code"; +} + +#endif diff --git a/libtommath/bn_fast_mp_invmod.c b/libtommath/bn_fast_mp_invmod.c new file mode 100644 index 0000000..b5b9f10 --- /dev/null +++ b/libtommath/bn_fast_mp_invmod.c @@ -0,0 +1,145 @@ +#include +#ifdef BN_FAST_MP_INVMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes the modular inverse via binary extended euclidean algorithm, + * that is c = 1/a mod b + * + * Based on slow invmod except this is optimized for the case where b is + * odd as per HAC Note 14.64 on pp. 610 + */ +int +fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int x, y, u, v, B, D; + int res, neg; + + /* 2. [modified] b must be odd */ + if (mp_iseven (b) == 1) { + return MP_VAL; + } + + /* init all our temps */ + if ((res = mp_init_multi(&x, &y, &u, &v, &B, &D, NULL)) != MP_OKAY) { + return res; + } + + /* x == modulus, y == value to invert */ + if ((res = mp_copy (b, &x)) != MP_OKAY) { + goto LBL_ERR; + } + + /* we need y = |a| */ + if ((res = mp_abs (a, &y)) != MP_OKAY) { + goto LBL_ERR; + } + + /* 3. u=x, v=y, A=1, B=0, C=0,D=1 */ + if ((res = mp_copy (&x, &u)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_copy (&y, &v)) != MP_OKAY) { + goto LBL_ERR; + } + mp_set (&D, 1); + +top: + /* 4. while u is even do */ + while (mp_iseven (&u) == 1) { + /* 4.1 u = u/2 */ + if ((res = mp_div_2 (&u, &u)) != MP_OKAY) { + goto LBL_ERR; + } + /* 4.2 if B is odd then */ + if (mp_isodd (&B) == 1) { + if ((res = mp_sub (&B, &x, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* B = B/2 */ + if ((res = mp_div_2 (&B, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 5. while v is even do */ + while (mp_iseven (&v) == 1) { + /* 5.1 v = v/2 */ + if ((res = mp_div_2 (&v, &v)) != MP_OKAY) { + goto LBL_ERR; + } + /* 5.2 if D is odd then */ + if (mp_isodd (&D) == 1) { + /* D = (D-x)/2 */ + if ((res = mp_sub (&D, &x, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* D = D/2 */ + if ((res = mp_div_2 (&D, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 6. if u >= v then */ + if (mp_cmp (&u, &v) != MP_LT) { + /* u = u - v, B = B - D */ + if ((res = mp_sub (&u, &v, &u)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&B, &D, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } else { + /* v - v - u, D = D - B */ + if ((res = mp_sub (&v, &u, &v)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&D, &B, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* if not zero goto step 4 */ + if (mp_iszero (&u) == 0) { + goto top; + } + + /* now a = C, b = D, gcd == g*v */ + + /* if v != 1 then there is no inverse */ + if (mp_cmp_d (&v, 1) != MP_EQ) { + res = MP_VAL; + goto LBL_ERR; + } + + /* b is now the inverse */ + neg = a->sign; + while (D.sign == MP_NEG) { + if ((res = mp_add (&D, b, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + mp_exch (&D, c); + c->sign = neg; + res = MP_OKAY; + +LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL); + return res; +} +#endif diff --git a/libtommath/bn_fast_mp_montgomery_reduce.c b/libtommath/bn_fast_mp_montgomery_reduce.c new file mode 100644 index 0000000..7373ae6 --- /dev/null +++ b/libtommath/bn_fast_mp_montgomery_reduce.c @@ -0,0 +1,169 @@ +#include +#ifdef BN_FAST_MP_MONTGOMERY_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes xR**-1 == x (mod N) via Montgomery Reduction + * + * This is an optimized implementation of montgomery_reduce + * which uses the comba method to quickly calculate the columns of the + * reduction. + * + * Based on Algorithm 14.32 on pp.601 of HAC. +*/ +int +fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +{ + int ix, res, olduse; + mp_word W[MP_WARRAY]; + + /* get old used count */ + olduse = x->used; + + /* grow a as required */ + if (x->alloc < n->used + 1) { + if ((res = mp_grow (x, n->used + 1)) != MP_OKAY) { + return res; + } + } + + /* first we have to get the digits of the input into + * an array of double precision words W[...] + */ + { + register mp_word *_W; + register mp_digit *tmpx; + + /* alias for the W[] array */ + _W = W; + + /* alias for the digits of x*/ + tmpx = x->dp; + + /* copy the digits of a into W[0..a->used-1] */ + for (ix = 0; ix < x->used; ix++) { + *_W++ = *tmpx++; + } + + /* zero the high words of W[a->used..m->used*2] */ + for (; ix < n->used * 2 + 1; ix++) { + *_W++ = 0; + } + } + + /* now we proceed to zero successive digits + * from the least significant upwards + */ + for (ix = 0; ix < n->used; ix++) { + /* mu = ai * m' mod b + * + * We avoid a double precision multiplication (which isn't required) + * by casting the value down to a mp_digit. Note this requires + * that W[ix-1] have the carry cleared (see after the inner loop) + */ + register mp_digit mu; + mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK); + + /* a = a + mu * m * b**i + * + * This is computed in place and on the fly. The multiplication + * by b**i is handled by offseting which columns the results + * are added to. + * + * Note the comba method normally doesn't handle carries in the + * inner loop In this case we fix the carry from the previous + * column since the Montgomery reduction requires digits of the + * result (so far) [see above] to work. This is + * handled by fixing up one carry after the inner loop. The + * carry fixups are done in order so after these loops the + * first m->used words of W[] have the carries fixed + */ + { + register int iy; + register mp_digit *tmpn; + register mp_word *_W; + + /* alias for the digits of the modulus */ + tmpn = n->dp; + + /* Alias for the columns set by an offset of ix */ + _W = W + ix; + + /* inner loop */ + for (iy = 0; iy < n->used; iy++) { + *_W++ += ((mp_word)mu) * ((mp_word)*tmpn++); + } + } + + /* now fix carry for next digit, W[ix+1] */ + W[ix + 1] += W[ix] >> ((mp_word) DIGIT_BIT); + } + + /* now we have to propagate the carries and + * shift the words downward [all those least + * significant digits we zeroed]. + */ + { + register mp_digit *tmpx; + register mp_word *_W, *_W1; + + /* nox fix rest of carries */ + + /* alias for current word */ + _W1 = W + ix; + + /* alias for next word, where the carry goes */ + _W = W + ++ix; + + for (; ix <= n->used * 2 + 1; ix++) { + *_W++ += *_W1++ >> ((mp_word) DIGIT_BIT); + } + + /* copy out, A = A/b**n + * + * The result is A/b**n but instead of converting from an + * array of mp_word to mp_digit than calling mp_rshd + * we just copy them in the right order + */ + + /* alias for destination word */ + tmpx = x->dp; + + /* alias for shifted double precision result */ + _W = W + n->used; + + for (ix = 0; ix < n->used + 1; ix++) { + *tmpx++ = (mp_digit)(*_W++ & ((mp_word) MP_MASK)); + } + + /* zero oldused digits, if the input a was larger than + * m->used+1 we'll have to clear the digits + */ + for (; ix < olduse; ix++) { + *tmpx++ = 0; + } + } + + /* set the max used and clamp */ + x->used = n->used + 1; + mp_clamp (x); + + /* if A >= m then A = A - m */ + if (mp_cmp_mag (x, n) != MP_LT) { + return s_mp_sub (x, n, x); + } + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_fast_s_mp_mul_digs.c b/libtommath/bn_fast_s_mp_mul_digs.c new file mode 100644 index 0000000..e1ff5f3 --- /dev/null +++ b/libtommath/bn_fast_s_mp_mul_digs.c @@ -0,0 +1,106 @@ +#include +#ifdef BN_FAST_S_MP_MUL_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Fast (comba) multiplier + * + * This is the fast column-array [comba] multiplier. It is + * designed to compute the columns of the product first + * then handle the carries afterwards. This has the effect + * of making the nested loops that compute the columns very + * simple and schedulable on super-scalar processors. + * + * This has been modified to produce a variable number of + * digits of output so if say only a half-product is required + * you don't have to compute the upper half (a feature + * required for fast Barrett reduction). + * + * Based on Algorithm 14.12 on pp.595 of HAC. + * + */ +int +fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +{ + int olduse, res, pa, ix, iz; + mp_digit W[MP_WARRAY]; + register mp_word _W; + + /* grow the destination as required */ + if (c->alloc < digs) { + if ((res = mp_grow (c, digs)) != MP_OKAY) { + return res; + } + } + + /* number of output digits to produce */ + pa = MIN(digs, a->used + b->used); + + /* clear the carry */ + _W = 0; + for (ix = 0; ix < pa; ix++) { + int tx, ty; + int iy; + mp_digit *tmpx, *tmpy; + + /* get offsets into the two bignums */ + ty = MIN(b->used-1, ix); + tx = ix - ty; + + /* setup temp aliases */ + tmpx = a->dp + tx; + tmpy = b->dp + ty; + + /* this is the number of times the loop will iterrate, essentially its + while (tx++ < a->used && ty-- >= 0) { ... } + */ + iy = MIN(a->used-tx, ty+1); + + /* execute loop */ + for (iz = 0; iz < iy; ++iz) { + _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); + } + + /* store term */ + W[ix] = ((mp_digit)_W) & MP_MASK; + + /* make next carry */ + _W = _W >> ((mp_word)DIGIT_BIT); + } + + /* store final carry */ + W[ix] = _W; + + /* setup dest */ + olduse = c->used; + c->used = digs; + + { + register mp_digit *tmpc; + tmpc = c->dp; + for (ix = 0; ix < digs; ix++) { + /* now extract the previous digit [below the carry] */ + *tmpc++ = W[ix]; + } + + /* clear unused digits [that existed in the old copy of c] */ + for (; ix < olduse; ix++) { + *tmpc++ = 0; + } + } + mp_clamp (c); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_fast_s_mp_mul_high_digs.c b/libtommath/bn_fast_s_mp_mul_high_digs.c new file mode 100644 index 0000000..064a9dd --- /dev/null +++ b/libtommath/bn_fast_s_mp_mul_high_digs.c @@ -0,0 +1,98 @@ +#include +#ifdef BN_FAST_S_MP_MUL_HIGH_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* this is a modified version of fast_s_mul_digs that only produces + * output digits *above* digs. See the comments for fast_s_mul_digs + * to see how it works. + * + * This is used in the Barrett reduction since for one of the multiplications + * only the higher digits were needed. This essentially halves the work. + * + * Based on Algorithm 14.12 on pp.595 of HAC. + */ +int +fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +{ + int olduse, res, pa, ix, iz; + mp_digit W[MP_WARRAY]; + mp_word _W; + + /* grow the destination as required */ + pa = a->used + b->used; + if (c->alloc < pa) { + if ((res = mp_grow (c, pa)) != MP_OKAY) { + return res; + } + } + + /* number of output digits to produce */ + pa = a->used + b->used; + _W = 0; + for (ix = digs; ix < pa; ix++) { + int tx, ty, iy; + mp_digit *tmpx, *tmpy; + + /* get offsets into the two bignums */ + ty = MIN(b->used-1, ix); + tx = ix - ty; + + /* setup temp aliases */ + tmpx = a->dp + tx; + tmpy = b->dp + ty; + + /* this is the number of times the loop will iterrate, essentially its + while (tx++ < a->used && ty-- >= 0) { ... } + */ + iy = MIN(a->used-tx, ty+1); + + /* execute loop */ + for (iz = 0; iz < iy; iz++) { + _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); + } + + /* store term */ + W[ix] = ((mp_digit)_W) & MP_MASK; + + /* make next carry */ + _W = _W >> ((mp_word)DIGIT_BIT); + } + + /* store final carry */ + W[ix] = _W; + + /* setup dest */ + olduse = c->used; + c->used = pa; + + { + register mp_digit *tmpc; + + tmpc = c->dp + digs; + for (ix = digs; ix <= pa; ix++) { + /* now extract the previous digit [below the carry] */ + *tmpc++ = W[ix]; + } + + /* clear unused digits [that existed in the old copy of c] */ + for (; ix < olduse; ix++) { + *tmpc++ = 0; + } + } + mp_clamp (c); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_fast_s_mp_sqr.c b/libtommath/bn_fast_s_mp_sqr.c new file mode 100644 index 0000000..d6014ab --- /dev/null +++ b/libtommath/bn_fast_s_mp_sqr.c @@ -0,0 +1,129 @@ +#include +#ifdef BN_FAST_S_MP_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* fast squaring + * + * This is the comba method where the columns of the product + * are computed first then the carries are computed. This + * has the effect of making a very simple inner loop that + * is executed the most + * + * W2 represents the outer products and W the inner. + * + * A further optimizations is made because the inner + * products are of the form "A * B * 2". The *2 part does + * not need to be computed until the end which is good + * because 64-bit shifts are slow! + * + * Based on Algorithm 14.16 on pp.597 of HAC. + * + */ +/* the jist of squaring... + +you do like mult except the offset of the tmpx [one that starts closer to zero] +can't equal the offset of tmpy. So basically you set up iy like before then you min it with +(ty-tx) so that it never happens. You double all those you add in the inner loop + +After that loop you do the squares and add them in. + +Remove W2 and don't memset W + +*/ + +int fast_s_mp_sqr (mp_int * a, mp_int * b) +{ + int olduse, res, pa, ix, iz; + mp_digit W[MP_WARRAY], *tmpx; + mp_word W1; + + /* grow the destination as required */ + pa = a->used + a->used; + if (b->alloc < pa) { + if ((res = mp_grow (b, pa)) != MP_OKAY) { + return res; + } + } + + /* number of output digits to produce */ + W1 = 0; + for (ix = 0; ix < pa; ix++) { + int tx, ty, iy; + mp_word _W; + mp_digit *tmpy; + + /* clear counter */ + _W = 0; + + /* get offsets into the two bignums */ + ty = MIN(a->used-1, ix); + tx = ix - ty; + + /* setup temp aliases */ + tmpx = a->dp + tx; + tmpy = a->dp + ty; + + /* this is the number of times the loop will iterrate, essentially its + while (tx++ < a->used && ty-- >= 0) { ... } + */ + iy = MIN(a->used-tx, ty+1); + + /* now for squaring tx can never equal ty + * we halve the distance since they approach at a rate of 2x + * and we have to round because odd cases need to be executed + */ + iy = MIN(iy, (ty-tx+1)>>1); + + /* execute loop */ + for (iz = 0; iz < iy; iz++) { + _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); + } + + /* double the inner product and add carry */ + _W = _W + _W + W1; + + /* even columns have the square term in them */ + if ((ix&1) == 0) { + _W += ((mp_word)a->dp[ix>>1])*((mp_word)a->dp[ix>>1]); + } + + /* store it */ + W[ix] = _W; + + /* make next carry */ + W1 = _W >> ((mp_word)DIGIT_BIT); + } + + /* setup dest */ + olduse = b->used; + b->used = a->used+a->used; + + { + mp_digit *tmpb; + tmpb = b->dp; + for (ix = 0; ix < pa; ix++) { + *tmpb++ = W[ix] & MP_MASK; + } + + /* clear unused digits [that existed in the old copy of c] */ + for (; ix < olduse; ix++) { + *tmpb++ = 0; + } + } + mp_clamp (b); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_2expt.c b/libtommath/bn_mp_2expt.c new file mode 100644 index 0000000..45a6818 --- /dev/null +++ b/libtommath/bn_mp_2expt.c @@ -0,0 +1,44 @@ +#include +#ifdef BN_MP_2EXPT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes a = 2**b + * + * Simple algorithm which zeroes the int, grows it then just sets one bit + * as required. + */ +int +mp_2expt (mp_int * a, int b) +{ + int res; + + /* zero a as per default */ + mp_zero (a); + + /* grow a to accomodate the single bit */ + if ((res = mp_grow (a, b / DIGIT_BIT + 1)) != MP_OKAY) { + return res; + } + + /* set the used count of where the bit will go */ + a->used = b / DIGIT_BIT + 1; + + /* put the single bit in its place */ + a->dp[b / DIGIT_BIT] = ((mp_digit)1) << (b % DIGIT_BIT); + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_abs.c b/libtommath/bn_mp_abs.c new file mode 100644 index 0000000..34f810f --- /dev/null +++ b/libtommath/bn_mp_abs.c @@ -0,0 +1,39 @@ +#include +#ifdef BN_MP_ABS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* b = |a| + * + * Simple function copies the input and fixes the sign to positive + */ +int +mp_abs (mp_int * a, mp_int * b) +{ + int res; + + /* copy a to b */ + if (a != b) { + if ((res = mp_copy (a, b)) != MP_OKAY) { + return res; + } + } + + /* force the sign of b to positive */ + b->sign = MP_ZPOS; + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_add.c b/libtommath/bn_mp_add.c new file mode 100644 index 0000000..554b7f7 --- /dev/null +++ b/libtommath/bn_mp_add.c @@ -0,0 +1,49 @@ +#include +#ifdef BN_MP_ADD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* high level addition (handles signs) */ +int mp_add (mp_int * a, mp_int * b, mp_int * c) +{ + int sa, sb, res; + + /* get sign of both inputs */ + sa = a->sign; + sb = b->sign; + + /* handle two cases, not four */ + if (sa == sb) { + /* both positive or both negative */ + /* add their magnitudes, copy the sign */ + c->sign = sa; + res = s_mp_add (a, b, c); + } else { + /* one positive, the other negative */ + /* subtract the one with the greater magnitude from */ + /* the one of the lesser magnitude. The result gets */ + /* the sign of the one with the greater magnitude. */ + if (mp_cmp_mag (a, b) == MP_LT) { + c->sign = sb; + res = s_mp_sub (b, a, c); + } else { + c->sign = sa; + res = s_mp_sub (a, b, c); + } + } + return res; +} + +#endif diff --git a/libtommath/bn_mp_add_d.c b/libtommath/bn_mp_add_d.c new file mode 100644 index 0000000..bdd0280 --- /dev/null +++ b/libtommath/bn_mp_add_d.c @@ -0,0 +1,105 @@ +#include +#ifdef BN_MP_ADD_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* single digit addition */ +int +mp_add_d (mp_int * a, mp_digit b, mp_int * c) +{ + int res, ix, oldused; + mp_digit *tmpa, *tmpc, mu; + + /* grow c as required */ + if (c->alloc < a->used + 1) { + if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) { + return res; + } + } + + /* if a is negative and |a| >= b, call c = |a| - b */ + if (a->sign == MP_NEG && (a->used > 1 || a->dp[0] >= b)) { + /* temporarily fix sign of a */ + a->sign = MP_ZPOS; + + /* c = |a| - b */ + res = mp_sub_d(a, b, c); + + /* fix sign */ + a->sign = c->sign = MP_NEG; + + return res; + } + + /* old number of used digits in c */ + oldused = c->used; + + /* sign always positive */ + c->sign = MP_ZPOS; + + /* source alias */ + tmpa = a->dp; + + /* destination alias */ + tmpc = c->dp; + + /* if a is positive */ + if (a->sign == MP_ZPOS) { + /* add digit, after this we're propagating + * the carry. + */ + *tmpc = *tmpa++ + b; + mu = *tmpc >> DIGIT_BIT; + *tmpc++ &= MP_MASK; + + /* now handle rest of the digits */ + for (ix = 1; ix < a->used; ix++) { + *tmpc = *tmpa++ + mu; + mu = *tmpc >> DIGIT_BIT; + *tmpc++ &= MP_MASK; + } + /* set final carry */ + ix++; + *tmpc++ = mu; + + /* setup size */ + c->used = a->used + 1; + } else { + /* a was negative and |a| < b */ + c->used = 1; + + /* the result is a single digit */ + if (a->used == 1) { + *tmpc++ = b - a->dp[0]; + } else { + *tmpc++ = b; + } + + /* setup count so the clearing of oldused + * can fall through correctly + */ + ix = 1; + } + + /* now zero to oldused */ + while (ix++ < oldused) { + *tmpc++ = 0; + } + mp_clamp(c); + + return MP_OKAY; +} + +#endif diff --git a/libtommath/bn_mp_addmod.c b/libtommath/bn_mp_addmod.c new file mode 100644 index 0000000..13eb33f --- /dev/null +++ b/libtommath/bn_mp_addmod.c @@ -0,0 +1,37 @@ +#include +#ifdef BN_MP_ADDMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* d = a + b (mod c) */ +int +mp_addmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + int res; + mp_int t; + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_add (a, b, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + res = mp_mod (&t, c, d); + mp_clear (&t); + return res; +} +#endif diff --git a/libtommath/bn_mp_and.c b/libtommath/bn_mp_and.c new file mode 100644 index 0000000..61dc386 --- /dev/null +++ b/libtommath/bn_mp_and.c @@ -0,0 +1,53 @@ +#include +#ifdef BN_MP_AND_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* AND two ints together */ +int +mp_and (mp_int * a, mp_int * b, mp_int * c) +{ + int res, ix, px; + mp_int t, *x; + + if (a->used > b->used) { + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + px = b->used; + x = b; + } else { + if ((res = mp_init_copy (&t, b)) != MP_OKAY) { + return res; + } + px = a->used; + x = a; + } + + for (ix = 0; ix < px; ix++) { + t.dp[ix] &= x->dp[ix]; + } + + /* zero digits above the last from the smallest mp_int */ + for (; ix < t.used; ix++) { + t.dp[ix] = 0; + } + + mp_clamp (&t); + mp_exch (c, &t); + mp_clear (&t); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_clamp.c b/libtommath/bn_mp_clamp.c new file mode 100644 index 0000000..c172611 --- /dev/null +++ b/libtommath/bn_mp_clamp.c @@ -0,0 +1,40 @@ +#include +#ifdef BN_MP_CLAMP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* trim unused digits + * + * This is used to ensure that leading zero digits are + * trimed and the leading "used" digit will be non-zero + * Typically very fast. Also fixes the sign if there + * are no more leading digits + */ +void +mp_clamp (mp_int * a) +{ + /* decrease used while the most significant digit is + * zero. + */ + while (a->used > 0 && a->dp[a->used - 1] == 0) { + --(a->used); + } + + /* reset the sign flag if used == 0 */ + if (a->used == 0) { + a->sign = MP_ZPOS; + } +} +#endif diff --git a/libtommath/bn_mp_clear.c b/libtommath/bn_mp_clear.c new file mode 100644 index 0000000..5342648 --- /dev/null +++ b/libtommath/bn_mp_clear.c @@ -0,0 +1,40 @@ +#include +#ifdef BN_MP_CLEAR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* clear one (frees) */ +void +mp_clear (mp_int * a) +{ + int i; + + /* only do anything if a hasn't been freed previously */ + if (a->dp != NULL) { + /* first zero the digits */ + for (i = 0; i < a->used; i++) { + a->dp[i] = 0; + } + + /* free ram */ + XFREE(a->dp); + + /* reset members to make debugging easier */ + a->dp = NULL; + a->alloc = a->used = 0; + a->sign = MP_ZPOS; + } +} +#endif diff --git a/libtommath/bn_mp_clear_multi.c b/libtommath/bn_mp_clear_multi.c new file mode 100644 index 0000000..24cbe73 --- /dev/null +++ b/libtommath/bn_mp_clear_multi.c @@ -0,0 +1,30 @@ +#include +#ifdef BN_MP_CLEAR_MULTI_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +#include + +void mp_clear_multi(mp_int *mp, ...) +{ + mp_int* next_mp = mp; + va_list args; + va_start(args, mp); + while (next_mp != NULL) { + mp_clear(next_mp); + next_mp = va_arg(args, mp_int*); + } + va_end(args); +} +#endif diff --git a/libtommath/bn_mp_cmp.c b/libtommath/bn_mp_cmp.c new file mode 100644 index 0000000..583b5f8 --- /dev/null +++ b/libtommath/bn_mp_cmp.c @@ -0,0 +1,39 @@ +#include +#ifdef BN_MP_CMP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* compare two ints (signed)*/ +int +mp_cmp (mp_int * a, mp_int * b) +{ + /* compare based on sign */ + if (a->sign != b->sign) { + if (a->sign == MP_NEG) { + return MP_LT; + } else { + return MP_GT; + } + } + + /* compare digits */ + if (a->sign == MP_NEG) { + /* if negative compare opposite direction */ + return mp_cmp_mag(b, a); + } else { + return mp_cmp_mag(a, b); + } +} +#endif diff --git a/libtommath/bn_mp_cmp_d.c b/libtommath/bn_mp_cmp_d.c new file mode 100644 index 0000000..882b1c9 --- /dev/null +++ b/libtommath/bn_mp_cmp_d.c @@ -0,0 +1,40 @@ +#include +#ifdef BN_MP_CMP_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* compare a digit */ +int mp_cmp_d(mp_int * a, mp_digit b) +{ + /* compare based on sign */ + if (a->sign == MP_NEG) { + return MP_LT; + } + + /* compare based on magnitude */ + if (a->used > 1) { + return MP_GT; + } + + /* compare the only digit of a to b */ + if (a->dp[0] > b) { + return MP_GT; + } else if (a->dp[0] < b) { + return MP_LT; + } else { + return MP_EQ; + } +} +#endif diff --git a/libtommath/bn_mp_cmp_mag.c b/libtommath/bn_mp_cmp_mag.c new file mode 100644 index 0000000..a0f351c --- /dev/null +++ b/libtommath/bn_mp_cmp_mag.c @@ -0,0 +1,51 @@ +#include +#ifdef BN_MP_CMP_MAG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* compare maginitude of two ints (unsigned) */ +int mp_cmp_mag (mp_int * a, mp_int * b) +{ + int n; + mp_digit *tmpa, *tmpb; + + /* compare based on # of non-zero digits */ + if (a->used > b->used) { + return MP_GT; + } + + if (a->used < b->used) { + return MP_LT; + } + + /* alias for a */ + tmpa = a->dp + (a->used - 1); + + /* alias for b */ + tmpb = b->dp + (a->used - 1); + + /* compare based on digits */ + for (n = 0; n < a->used; ++n, --tmpa, --tmpb) { + if (*tmpa > *tmpb) { + return MP_GT; + } + + if (*tmpa < *tmpb) { + return MP_LT; + } + } + return MP_EQ; +} +#endif diff --git a/libtommath/bn_mp_cnt_lsb.c b/libtommath/bn_mp_cnt_lsb.c new file mode 100644 index 0000000..571f03f --- /dev/null +++ b/libtommath/bn_mp_cnt_lsb.c @@ -0,0 +1,49 @@ +#include +#ifdef BN_MP_CNT_LSB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +static const int lnz[16] = { + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 +}; + +/* Counts the number of lsbs which are zero before the first zero bit */ +int mp_cnt_lsb(mp_int *a) +{ + int x; + mp_digit q, qq; + + /* easy out */ + if (mp_iszero(a) == 1) { + return 0; + } + + /* scan lower digits until non-zero */ + for (x = 0; x < a->used && a->dp[x] == 0; x++); + q = a->dp[x]; + x *= DIGIT_BIT; + + /* now scan this digit until a 1 is found */ + if ((q & 1) == 0) { + do { + qq = q & 15; + x += lnz[qq]; + q >>= 4; + } while (qq == 0); + } + return x; +} + +#endif diff --git a/libtommath/bn_mp_copy.c b/libtommath/bn_mp_copy.c new file mode 100644 index 0000000..183ec9b --- /dev/null +++ b/libtommath/bn_mp_copy.c @@ -0,0 +1,64 @@ +#include +#ifdef BN_MP_COPY_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* copy, b = a */ +int +mp_copy (mp_int * a, mp_int * b) +{ + int res, n; + + /* if dst == src do nothing */ + if (a == b) { + return MP_OKAY; + } + + /* grow dest */ + if (b->alloc < a->used) { + if ((res = mp_grow (b, a->used)) != MP_OKAY) { + return res; + } + } + + /* zero b and copy the parameters over */ + { + register mp_digit *tmpa, *tmpb; + + /* pointer aliases */ + + /* source */ + tmpa = a->dp; + + /* destination */ + tmpb = b->dp; + + /* copy all the digits */ + for (n = 0; n < a->used; n++) { + *tmpb++ = *tmpa++; + } + + /* clear high digits */ + for (; n < b->used; n++) { + *tmpb++ = 0; + } + } + + /* copy used count and sign */ + b->used = a->used; + b->sign = a->sign; + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_count_bits.c b/libtommath/bn_mp_count_bits.c new file mode 100644 index 0000000..f3f85ac --- /dev/null +++ b/libtommath/bn_mp_count_bits.c @@ -0,0 +1,41 @@ +#include +#ifdef BN_MP_COUNT_BITS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* returns the number of bits in an int */ +int +mp_count_bits (mp_int * a) +{ + int r; + mp_digit q; + + /* shortcut */ + if (a->used == 0) { + return 0; + } + + /* get number of digits and add that */ + r = (a->used - 1) * DIGIT_BIT; + + /* take the last digit and count the bits in it */ + q = a->dp[a->used - 1]; + while (q > ((mp_digit) 0)) { + ++r; + q >>= ((mp_digit) 1); + } + return r; +} +#endif diff --git a/libtommath/bn_mp_div.c b/libtommath/bn_mp_div.c new file mode 100644 index 0000000..6b2b8f0 --- /dev/null +++ b/libtommath/bn_mp_div.c @@ -0,0 +1,288 @@ +#include +#ifdef BN_MP_DIV_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +#ifdef BN_MP_DIV_SMALL + +/* slower bit-bang division... also smaller */ +int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + mp_int ta, tb, tq, q; + int res, n, n2; + + /* is divisor zero ? */ + if (mp_iszero (b) == 1) { + return MP_VAL; + } + + /* if a < b then q=0, r = a */ + if (mp_cmp_mag (a, b) == MP_LT) { + if (d != NULL) { + res = mp_copy (a, d); + } else { + res = MP_OKAY; + } + if (c != NULL) { + mp_zero (c); + } + return res; + } + + /* init our temps */ + if ((res = mp_init_multi(&ta, &tb, &tq, &q, NULL) != MP_OKAY)) { + return res; + } + + + mp_set(&tq, 1); + n = mp_count_bits(a) - mp_count_bits(b); + if (((res = mp_abs(a, &ta)) != MP_OKAY) || + ((res = mp_abs(b, &tb)) != MP_OKAY) || + ((res = mp_mul_2d(&tb, n, &tb)) != MP_OKAY) || + ((res = mp_mul_2d(&tq, n, &tq)) != MP_OKAY)) { + goto LBL_ERR; + } + + while (n-- >= 0) { + if (mp_cmp(&tb, &ta) != MP_GT) { + if (((res = mp_sub(&ta, &tb, &ta)) != MP_OKAY) || + ((res = mp_add(&q, &tq, &q)) != MP_OKAY)) { + goto LBL_ERR; + } + } + if (((res = mp_div_2d(&tb, 1, &tb, NULL)) != MP_OKAY) || + ((res = mp_div_2d(&tq, 1, &tq, NULL)) != MP_OKAY)) { + goto LBL_ERR; + } + } + + /* now q == quotient and ta == remainder */ + n = a->sign; + n2 = (a->sign == b->sign ? MP_ZPOS : MP_NEG); + if (c != NULL) { + mp_exch(c, &q); + c->sign = (mp_iszero(c) == MP_YES) ? MP_ZPOS : n2; + } + if (d != NULL) { + mp_exch(d, &ta); + d->sign = (mp_iszero(d) == MP_YES) ? MP_ZPOS : n; + } +LBL_ERR: + mp_clear_multi(&ta, &tb, &tq, &q, NULL); + return res; +} + +#else + +/* integer signed division. + * c*b + d == a [e.g. a/b, c=quotient, d=remainder] + * HAC pp.598 Algorithm 14.20 + * + * Note that the description in HAC is horribly + * incomplete. For example, it doesn't consider + * the case where digits are removed from 'x' in + * the inner loop. It also doesn't consider the + * case that y has fewer than three digits, etc.. + * + * The overall algorithm is as described as + * 14.20 from HAC but fixed to treat these cases. +*/ +int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + mp_int q, x, y, t1, t2; + int res, n, t, i, norm, neg; + + /* is divisor zero ? */ + if (mp_iszero (b) == 1) { + return MP_VAL; + } + + /* if a < b then q=0, r = a */ + if (mp_cmp_mag (a, b) == MP_LT) { + if (d != NULL) { + res = mp_copy (a, d); + } else { + res = MP_OKAY; + } + if (c != NULL) { + mp_zero (c); + } + return res; + } + + if ((res = mp_init_size (&q, a->used + 2)) != MP_OKAY) { + return res; + } + q.used = a->used + 2; + + if ((res = mp_init (&t1)) != MP_OKAY) { + goto LBL_Q; + } + + if ((res = mp_init (&t2)) != MP_OKAY) { + goto LBL_T1; + } + + if ((res = mp_init_copy (&x, a)) != MP_OKAY) { + goto LBL_T2; + } + + if ((res = mp_init_copy (&y, b)) != MP_OKAY) { + goto LBL_X; + } + + /* fix the sign */ + neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; + x.sign = y.sign = MP_ZPOS; + + /* normalize both x and y, ensure that y >= b/2, [b == 2**DIGIT_BIT] */ + norm = mp_count_bits(&y) % DIGIT_BIT; + if (norm < (int)(DIGIT_BIT-1)) { + norm = (DIGIT_BIT-1) - norm; + if ((res = mp_mul_2d (&x, norm, &x)) != MP_OKAY) { + goto LBL_Y; + } + if ((res = mp_mul_2d (&y, norm, &y)) != MP_OKAY) { + goto LBL_Y; + } + } else { + norm = 0; + } + + /* note hac does 0 based, so if used==5 then its 0,1,2,3,4, e.g. use 4 */ + n = x.used - 1; + t = y.used - 1; + + /* while (x >= y*b**n-t) do { q[n-t] += 1; x -= y*b**{n-t} } */ + if ((res = mp_lshd (&y, n - t)) != MP_OKAY) { /* y = y*b**{n-t} */ + goto LBL_Y; + } + + while (mp_cmp (&x, &y) != MP_LT) { + ++(q.dp[n - t]); + if ((res = mp_sub (&x, &y, &x)) != MP_OKAY) { + goto LBL_Y; + } + } + + /* reset y by shifting it back down */ + mp_rshd (&y, n - t); + + /* step 3. for i from n down to (t + 1) */ + for (i = n; i >= (t + 1); i--) { + if (i > x.used) { + continue; + } + + /* step 3.1 if xi == yt then set q{i-t-1} to b-1, + * otherwise set q{i-t-1} to (xi*b + x{i-1})/yt */ + if (x.dp[i] == y.dp[t]) { + q.dp[i - t - 1] = ((((mp_digit)1) << DIGIT_BIT) - 1); + } else { + mp_word tmp; + tmp = ((mp_word) x.dp[i]) << ((mp_word) DIGIT_BIT); + tmp |= ((mp_word) x.dp[i - 1]); + tmp /= ((mp_word) y.dp[t]); + if (tmp > (mp_word) MP_MASK) + tmp = MP_MASK; + q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK)); + } + + /* while (q{i-t-1} * (yt * b + y{t-1})) > + xi * b**2 + xi-1 * b + xi-2 + + do q{i-t-1} -= 1; + */ + q.dp[i - t - 1] = (q.dp[i - t - 1] + 1) & MP_MASK; + do { + q.dp[i - t - 1] = (q.dp[i - t - 1] - 1) & MP_MASK; + + /* find left hand */ + mp_zero (&t1); + t1.dp[0] = (t - 1 < 0) ? 0 : y.dp[t - 1]; + t1.dp[1] = y.dp[t]; + t1.used = 2; + if ((res = mp_mul_d (&t1, q.dp[i - t - 1], &t1)) != MP_OKAY) { + goto LBL_Y; + } + + /* find right hand */ + t2.dp[0] = (i - 2 < 0) ? 0 : x.dp[i - 2]; + t2.dp[1] = (i - 1 < 0) ? 0 : x.dp[i - 1]; + t2.dp[2] = x.dp[i]; + t2.used = 3; + } while (mp_cmp_mag(&t1, &t2) == MP_GT); + + /* step 3.3 x = x - q{i-t-1} * y * b**{i-t-1} */ + if ((res = mp_mul_d (&y, q.dp[i - t - 1], &t1)) != MP_OKAY) { + goto LBL_Y; + } + + if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) { + goto LBL_Y; + } + + if ((res = mp_sub (&x, &t1, &x)) != MP_OKAY) { + goto LBL_Y; + } + + /* if x < 0 then { x = x + y*b**{i-t-1}; q{i-t-1} -= 1; } */ + if (x.sign == MP_NEG) { + if ((res = mp_copy (&y, &t1)) != MP_OKAY) { + goto LBL_Y; + } + if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) { + goto LBL_Y; + } + if ((res = mp_add (&x, &t1, &x)) != MP_OKAY) { + goto LBL_Y; + } + + q.dp[i - t - 1] = (q.dp[i - t - 1] - 1UL) & MP_MASK; + } + } + + /* now q is the quotient and x is the remainder + * [which we have to normalize] + */ + + /* get sign before writing to c */ + x.sign = x.used == 0 ? MP_ZPOS : a->sign; + + if (c != NULL) { + mp_clamp (&q); + mp_exch (&q, c); + c->sign = neg; + } + + if (d != NULL) { + mp_div_2d (&x, norm, &x, NULL); + mp_exch (&x, d); + } + + res = MP_OKAY; + +LBL_Y:mp_clear (&y); +LBL_X:mp_clear (&x); +LBL_T2:mp_clear (&t2); +LBL_T1:mp_clear (&t1); +LBL_Q:mp_clear (&q); + return res; +} + +#endif + +#endif diff --git a/libtommath/bn_mp_div_2.c b/libtommath/bn_mp_div_2.c new file mode 100644 index 0000000..5777997 --- /dev/null +++ b/libtommath/bn_mp_div_2.c @@ -0,0 +1,64 @@ +#include +#ifdef BN_MP_DIV_2_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* b = a/2 */ +int mp_div_2(mp_int * a, mp_int * b) +{ + int x, res, oldused; + + /* copy */ + if (b->alloc < a->used) { + if ((res = mp_grow (b, a->used)) != MP_OKAY) { + return res; + } + } + + oldused = b->used; + b->used = a->used; + { + register mp_digit r, rr, *tmpa, *tmpb; + + /* source alias */ + tmpa = a->dp + b->used - 1; + + /* dest alias */ + tmpb = b->dp + b->used - 1; + + /* carry */ + r = 0; + for (x = b->used - 1; x >= 0; x--) { + /* get the carry for the next iteration */ + rr = *tmpa & 1; + + /* shift the current digit, add in carry and store */ + *tmpb-- = (*tmpa-- >> 1) | (r << (DIGIT_BIT - 1)); + + /* forward carry to next iteration */ + r = rr; + } + + /* zero excess digits */ + tmpb = b->dp + b->used; + for (x = b->used; x < oldused; x++) { + *tmpb++ = 0; + } + } + b->sign = a->sign; + mp_clamp (b); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_div_2d.c b/libtommath/bn_mp_div_2d.c new file mode 100644 index 0000000..cf103f2 --- /dev/null +++ b/libtommath/bn_mp_div_2d.c @@ -0,0 +1,93 @@ +#include +#ifdef BN_MP_DIV_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shift right by a certain bit count (store quotient in c, optional remainder in d) */ +int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) +{ + mp_digit D, r, rr; + int x, res; + mp_int t; + + + /* if the shift count is <= 0 then we do no work */ + if (b <= 0) { + res = mp_copy (a, c); + if (d != NULL) { + mp_zero (d); + } + return res; + } + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + /* get the remainder */ + if (d != NULL) { + if ((res = mp_mod_2d (a, b, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + } + + /* copy */ + if ((res = mp_copy (a, c)) != MP_OKAY) { + mp_clear (&t); + return res; + } + + /* shift by as many digits in the bit count */ + if (b >= (int)DIGIT_BIT) { + mp_rshd (c, b / DIGIT_BIT); + } + + /* shift any bit count < DIGIT_BIT */ + D = (mp_digit) (b % DIGIT_BIT); + if (D != 0) { + register mp_digit *tmpc, mask, shift; + + /* mask */ + mask = (((mp_digit)1) << D) - 1; + + /* shift for lsb */ + shift = DIGIT_BIT - D; + + /* alias */ + tmpc = c->dp + (c->used - 1); + + /* carry */ + r = 0; + for (x = c->used - 1; x >= 0; x--) { + /* get the lower bits of this word in a temp */ + rr = *tmpc & mask; + + /* shift the current word and mix in the carry bits from the previous word */ + *tmpc = (*tmpc >> D) | (r << shift); + --tmpc; + + /* set the carry to the carry bits of the current word found above */ + r = rr; + } + } + mp_clamp (c); + if (d != NULL) { + mp_exch (&t, d); + } + mp_clear (&t); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_div_3.c b/libtommath/bn_mp_div_3.c new file mode 100644 index 0000000..7cbafc1 --- /dev/null +++ b/libtommath/bn_mp_div_3.c @@ -0,0 +1,75 @@ +#include +#ifdef BN_MP_DIV_3_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* divide by three (based on routine from MPI and the GMP manual) */ +int +mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) +{ + mp_int q; + mp_word w, t; + mp_digit b; + int res, ix; + + /* b = 2**DIGIT_BIT / 3 */ + b = (((mp_word)1) << ((mp_word)DIGIT_BIT)) / ((mp_word)3); + + if ((res = mp_init_size(&q, a->used)) != MP_OKAY) { + return res; + } + + q.used = a->used; + q.sign = a->sign; + w = 0; + for (ix = a->used - 1; ix >= 0; ix--) { + w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]); + + if (w >= 3) { + /* multiply w by [1/3] */ + t = (w * ((mp_word)b)) >> ((mp_word)DIGIT_BIT); + + /* now subtract 3 * [w/3] from w, to get the remainder */ + w -= t+t+t; + + /* fixup the remainder as required since + * the optimization is not exact. + */ + while (w >= 3) { + t += 1; + w -= 3; + } + } else { + t = 0; + } + q.dp[ix] = (mp_digit)t; + } + + /* [optional] store the remainder */ + if (d != NULL) { + *d = (mp_digit)w; + } + + /* [optional] store the quotient */ + if (c != NULL) { + mp_clamp(&q); + mp_exch(&q, c); + } + mp_clear(&q); + + return res; +} + +#endif diff --git a/libtommath/bn_mp_div_d.c b/libtommath/bn_mp_div_d.c new file mode 100644 index 0000000..9b58aa6 --- /dev/null +++ b/libtommath/bn_mp_div_d.c @@ -0,0 +1,106 @@ +#include +#ifdef BN_MP_DIV_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +static int s_is_power_of_two(mp_digit b, int *p) +{ + int x; + + for (x = 1; x < DIGIT_BIT; x++) { + if (b == (((mp_digit)1)<dp[0] & ((((mp_digit)1)<used)) != MP_OKAY) { + return res; + } + + q.used = a->used; + q.sign = a->sign; + w = 0; + for (ix = a->used - 1; ix >= 0; ix--) { + w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]); + + if (w >= b) { + t = (mp_digit)(w / b); + w -= ((mp_word)t) * ((mp_word)b); + } else { + t = 0; + } + q.dp[ix] = (mp_digit)t; + } + + if (d != NULL) { + *d = (mp_digit)w; + } + + if (c != NULL) { + mp_clamp(&q); + mp_exch(&q, c); + } + mp_clear(&q); + + return res; +} + +#endif diff --git a/libtommath/bn_mp_dr_is_modulus.c b/libtommath/bn_mp_dr_is_modulus.c new file mode 100644 index 0000000..5ef78a3 --- /dev/null +++ b/libtommath/bn_mp_dr_is_modulus.c @@ -0,0 +1,39 @@ +#include +#ifdef BN_MP_DR_IS_MODULUS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if a number is a valid DR modulus */ +int mp_dr_is_modulus(mp_int *a) +{ + int ix; + + /* must be at least two digits */ + if (a->used < 2) { + return 0; + } + + /* must be of the form b**k - a [a <= b] so all + * but the first digit must be equal to -1 (mod b). + */ + for (ix = 1; ix < a->used; ix++) { + if (a->dp[ix] != MP_MASK) { + return 0; + } + } + return 1; +} + +#endif diff --git a/libtommath/bn_mp_dr_reduce.c b/libtommath/bn_mp_dr_reduce.c new file mode 100644 index 0000000..9bb7ad7 --- /dev/null +++ b/libtommath/bn_mp_dr_reduce.c @@ -0,0 +1,90 @@ +#include +#ifdef BN_MP_DR_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduce "x" in place modulo "n" using the Diminished Radix algorithm. + * + * Based on algorithm from the paper + * + * "Generating Efficient Primes for Discrete Log Cryptosystems" + * Chae Hoon Lim, Pil Joong Lee, + * POSTECH Information Research Laboratories + * + * The modulus must be of a special format [see manual] + * + * Has been modified to use algorithm 7.10 from the LTM book instead + * + * Input x must be in the range 0 <= x <= (n-1)**2 + */ +int +mp_dr_reduce (mp_int * x, mp_int * n, mp_digit k) +{ + int err, i, m; + mp_word r; + mp_digit mu, *tmpx1, *tmpx2; + + /* m = digits in modulus */ + m = n->used; + + /* ensure that "x" has at least 2m digits */ + if (x->alloc < m + m) { + if ((err = mp_grow (x, m + m)) != MP_OKAY) { + return err; + } + } + +/* top of loop, this is where the code resumes if + * another reduction pass is required. + */ +top: + /* aliases for digits */ + /* alias for lower half of x */ + tmpx1 = x->dp; + + /* alias for upper half of x, or x/B**m */ + tmpx2 = x->dp + m; + + /* set carry to zero */ + mu = 0; + + /* compute (x mod B**m) + k * [x/B**m] inline and inplace */ + for (i = 0; i < m; i++) { + r = ((mp_word)*tmpx2++) * ((mp_word)k) + *tmpx1 + mu; + *tmpx1++ = (mp_digit)(r & MP_MASK); + mu = (mp_digit)(r >> ((mp_word)DIGIT_BIT)); + } + + /* set final carry */ + *tmpx1++ = mu; + + /* zero words above m */ + for (i = m + 1; i < x->used; i++) { + *tmpx1++ = 0; + } + + /* clamp, sub and return */ + mp_clamp (x); + + /* if x >= n then subtract and reduce again + * Each successive "recursion" makes the input smaller and smaller. + */ + if (mp_cmp_mag (x, n) != MP_LT) { + s_mp_sub(x, n, x); + goto top; + } + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_dr_setup.c b/libtommath/bn_mp_dr_setup.c new file mode 100644 index 0000000..029d310 --- /dev/null +++ b/libtommath/bn_mp_dr_setup.c @@ -0,0 +1,28 @@ +#include +#ifdef BN_MP_DR_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines the setup value */ +void mp_dr_setup(mp_int *a, mp_digit *d) +{ + /* the casts are required if DIGIT_BIT is one less than + * the number of bits in a mp_digit [e.g. DIGIT_BIT==31] + */ + *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) - + ((mp_word)a->dp[0])); +} + +#endif diff --git a/libtommath/bn_mp_exch.c b/libtommath/bn_mp_exch.c new file mode 100644 index 0000000..0ef485a --- /dev/null +++ b/libtommath/bn_mp_exch.c @@ -0,0 +1,30 @@ +#include +#ifdef BN_MP_EXCH_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* swap the elements of two integers, for cases where you can't simply swap the + * mp_int pointers around + */ +void +mp_exch (mp_int * a, mp_int * b) +{ + mp_int t; + + t = *a; + *a = *b; + *b = t; +} +#endif diff --git a/libtommath/bn_mp_expt_d.c b/libtommath/bn_mp_expt_d.c new file mode 100644 index 0000000..fdb8bd9 --- /dev/null +++ b/libtommath/bn_mp_expt_d.c @@ -0,0 +1,53 @@ +#include +#ifdef BN_MP_EXPT_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* calculate c = a**b using a square-multiply algorithm */ +int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) +{ + int res, x; + mp_int g; + + if ((res = mp_init_copy (&g, a)) != MP_OKAY) { + return res; + } + + /* set initial result */ + mp_set (c, 1); + + for (x = 0; x < (int) DIGIT_BIT; x++) { + /* square */ + if ((res = mp_sqr (c, c)) != MP_OKAY) { + mp_clear (&g); + return res; + } + + /* if the bit is set multiply */ + if ((b & (mp_digit) (((mp_digit)1) << (DIGIT_BIT - 1))) != 0) { + if ((res = mp_mul (c, &g, c)) != MP_OKAY) { + mp_clear (&g); + return res; + } + } + + /* shift to next bit */ + b <<= 1; + } + + mp_clear (&g); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_exptmod.c b/libtommath/bn_mp_exptmod.c new file mode 100644 index 0000000..7309170 --- /dev/null +++ b/libtommath/bn_mp_exptmod.c @@ -0,0 +1,100 @@ +#include +#ifdef BN_MP_EXPTMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + + +/* this is a shell function that calls either the normal or Montgomery + * exptmod functions. Originally the call to the montgomery code was + * embedded in the normal function but that wasted alot of stack space + * for nothing (since 99% of the time the Montgomery code would be called) + */ +int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +{ + int dr; + + /* modulus P must be positive */ + if (P->sign == MP_NEG) { + return MP_VAL; + } + + /* if exponent X is negative we have to recurse */ + if (X->sign == MP_NEG) { +#ifdef BN_MP_INVMOD_C + mp_int tmpG, tmpX; + int err; + + /* first compute 1/G mod P */ + if ((err = mp_init(&tmpG)) != MP_OKAY) { + return err; + } + if ((err = mp_invmod(G, P, &tmpG)) != MP_OKAY) { + mp_clear(&tmpG); + return err; + } + + /* now get |X| */ + if ((err = mp_init(&tmpX)) != MP_OKAY) { + mp_clear(&tmpG); + return err; + } + if ((err = mp_abs(X, &tmpX)) != MP_OKAY) { + mp_clear_multi(&tmpG, &tmpX, NULL); + return err; + } + + /* and now compute (1/G)**|X| instead of G**X [X < 0] */ + err = mp_exptmod(&tmpG, &tmpX, P, Y); + mp_clear_multi(&tmpG, &tmpX, NULL); + return err; +#else + /* no invmod */ + return MP_VAL; +#endif + } + +#ifdef BN_MP_DR_IS_MODULUS_C + /* is it a DR modulus? */ + dr = mp_dr_is_modulus(P); +#else + dr = 0; +#endif + +#ifdef BN_MP_REDUCE_IS_2K_C + /* if not, is it a uDR modulus? */ + if (dr == 0) { + dr = mp_reduce_is_2k(P) << 1; + } +#endif + + /* if the modulus is odd or dr != 0 use the fast method */ +#ifdef BN_MP_EXPTMOD_FAST_C + if (mp_isodd (P) == 1 || dr != 0) { + return mp_exptmod_fast (G, X, P, Y, dr); + } else { +#endif +#ifdef BN_S_MP_EXPTMOD_C + /* otherwise use the generic Barrett reduction technique */ + return s_mp_exptmod (G, X, P, Y); +#else + /* no exptmod for evens */ + return MP_VAL; +#endif +#ifdef BN_MP_EXPTMOD_FAST_C + } +#endif +} + +#endif diff --git a/libtommath/bn_mp_exptmod_fast.c b/libtommath/bn_mp_exptmod_fast.c new file mode 100644 index 0000000..255e9d9 --- /dev/null +++ b/libtommath/bn_mp_exptmod_fast.c @@ -0,0 +1,318 @@ +#include +#ifdef BN_MP_EXPTMOD_FAST_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes Y == G**X mod P, HAC pp.616, Algorithm 14.85 + * + * Uses a left-to-right k-ary sliding window to compute the modular exponentiation. + * The value of k changes based on the size of the exponent. + * + * Uses Montgomery or Diminished Radix reduction [whichever appropriate] + */ + +#ifdef MP_LOW_MEM + #define TAB_SIZE 32 +#else + #define TAB_SIZE 256 +#endif + +int +mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) +{ + mp_int M[TAB_SIZE], res; + mp_digit buf, mp; + int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + + /* use a pointer to the reduction algorithm. This allows us to use + * one of many reduction algorithms without modding the guts of + * the code with if statements everywhere. + */ + int (*redux)(mp_int*,mp_int*,mp_digit); + + /* find window size */ + x = mp_count_bits (X); + if (x <= 7) { + winsize = 2; + } else if (x <= 36) { + winsize = 3; + } else if (x <= 140) { + winsize = 4; + } else if (x <= 450) { + winsize = 5; + } else if (x <= 1303) { + winsize = 6; + } else if (x <= 3529) { + winsize = 7; + } else { + winsize = 8; + } + +#ifdef MP_LOW_MEM + if (winsize > 5) { + winsize = 5; + } +#endif + + /* init M array */ + /* init first cell */ + if ((err = mp_init(&M[1])) != MP_OKAY) { + return err; + } + + /* now init the second half of the array */ + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + if ((err = mp_init(&M[x])) != MP_OKAY) { + for (y = 1<<(winsize-1); y < x; y++) { + mp_clear (&M[y]); + } + mp_clear(&M[1]); + return err; + } + } + + /* determine and setup reduction code */ + if (redmode == 0) { +#ifdef BN_MP_MONTGOMERY_SETUP_C + /* now setup montgomery */ + if ((err = mp_montgomery_setup (P, &mp)) != MP_OKAY) { + goto LBL_M; + } +#else + err = MP_VAL; + goto LBL_M; +#endif + + /* automatically pick the comba one if available (saves quite a few calls/ifs) */ +#ifdef BN_FAST_MP_MONTGOMERY_REDUCE_C + if (((P->used * 2 + 1) < MP_WARRAY) && + P->used < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + redux = fast_mp_montgomery_reduce; + } else +#endif + { +#ifdef BN_MP_MONTGOMERY_REDUCE_C + /* use slower baseline Montgomery method */ + redux = mp_montgomery_reduce; +#else + err = MP_VAL; + goto LBL_M; +#endif + } + } else if (redmode == 1) { +#if defined(BN_MP_DR_SETUP_C) && defined(BN_MP_DR_REDUCE_C) + /* setup DR reduction for moduli of the form B**k - b */ + mp_dr_setup(P, &mp); + redux = mp_dr_reduce; +#else + err = MP_VAL; + goto LBL_M; +#endif + } else { +#if defined(BN_MP_REDUCE_2K_SETUP_C) && defined(BN_MP_REDUCE_2K_C) + /* setup DR reduction for moduli of the form 2**k - b */ + if ((err = mp_reduce_2k_setup(P, &mp)) != MP_OKAY) { + goto LBL_M; + } + redux = mp_reduce_2k; +#else + err = MP_VAL; + goto LBL_M; +#endif + } + + /* setup result */ + if ((err = mp_init (&res)) != MP_OKAY) { + goto LBL_M; + } + + /* create M table + * + + * + * The first half of the table is not computed though accept for M[0] and M[1] + */ + + if (redmode == 0) { +#ifdef BN_MP_MONTGOMERY_CALC_NORMALIZATION_C + /* now we need R mod m */ + if ((err = mp_montgomery_calc_normalization (&res, P)) != MP_OKAY) { + goto LBL_RES; + } +#else + err = MP_VAL; + goto LBL_RES; +#endif + + /* now set M[1] to G * R mod m */ + if ((err = mp_mulmod (G, &res, P, &M[1])) != MP_OKAY) { + goto LBL_RES; + } + } else { + mp_set(&res, 1); + if ((err = mp_mod(G, P, &M[1])) != MP_OKAY) { + goto LBL_RES; + } + } + + /* compute the value at M[1<<(winsize-1)] by squaring M[1] (winsize-1) times */ + if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_RES; + } + + for (x = 0; x < (winsize - 1); x++) { + if ((err = mp_sqr (&M[1 << (winsize - 1)], &M[1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&M[1 << (winsize - 1)], P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* create upper table */ + for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) { + if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&M[x], P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* set initial mode and bit cnt */ + mode = 0; + bitcnt = 1; + buf = 0; + digidx = X->used - 1; + bitcpy = 0; + bitbuf = 0; + + for (;;) { + /* grab next digit as required */ + if (--bitcnt == 0) { + /* if digidx == -1 we are out of digits so break */ + if (digidx == -1) { + break; + } + /* read next digit and reset bitcnt */ + buf = X->dp[digidx--]; + bitcnt = (int)DIGIT_BIT; + } + + /* grab the next msb from the exponent */ + y = (mp_digit)(buf >> (DIGIT_BIT - 1)) & 1; + buf <<= (mp_digit)1; + + /* if the bit is zero and mode == 0 then we ignore it + * These represent the leading zero bits before the first 1 bit + * in the exponent. Technically this opt is not required but it + * does lower the # of trivial squaring/reductions used + */ + if (mode == 0 && y == 0) { + continue; + } + + /* if the bit is zero and mode == 1 then we square */ + if (mode == 1 && y == 0) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + continue; + } + + /* else we add it to the window */ + bitbuf |= (y << (winsize - ++bitcpy)); + mode = 2; + + if (bitcpy == winsize) { + /* ok window is filled so square as required and multiply */ + /* square first */ + for (x = 0; x < winsize; x++) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* then multiply */ + if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + + /* empty window and reset */ + bitcpy = 0; + bitbuf = 0; + mode = 1; + } + } + + /* if bits remain then square/multiply */ + if (mode == 2 && bitcpy > 0) { + /* square then multiply if the bit is set */ + for (x = 0; x < bitcpy; x++) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + + /* get next bit of the window */ + bitbuf <<= 1; + if ((bitbuf & (1 << winsize)) != 0) { + /* then multiply */ + if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + } + } + + if (redmode == 0) { + /* fixup result if Montgomery reduction is used + * recall that any value in a Montgomery system is + * actually multiplied by R mod n. So we have + * to reduce one more time to cancel out the factor + * of R. + */ + if ((err = redux(&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* swap res with Y */ + mp_exch (&res, Y); + err = MP_OKAY; +LBL_RES:mp_clear (&res); +LBL_M: + mp_clear(&M[1]); + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + mp_clear (&M[x]); + } + return err; +} +#endif + diff --git a/libtommath/bn_mp_exteuclid.c b/libtommath/bn_mp_exteuclid.c new file mode 100644 index 0000000..545450b --- /dev/null +++ b/libtommath/bn_mp_exteuclid.c @@ -0,0 +1,71 @@ +#include +#ifdef BN_MP_EXTEUCLID_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Extended euclidean algorithm of (a, b) produces + a*u1 + b*u2 = u3 + */ +int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3) +{ + mp_int u1,u2,u3,v1,v2,v3,t1,t2,t3,q,tmp; + int err; + + if ((err = mp_init_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL)) != MP_OKAY) { + return err; + } + + /* initialize, (u1,u2,u3) = (1,0,a) */ + mp_set(&u1, 1); + if ((err = mp_copy(a, &u3)) != MP_OKAY) { goto _ERR; } + + /* initialize, (v1,v2,v3) = (0,1,b) */ + mp_set(&v2, 1); + if ((err = mp_copy(b, &v3)) != MP_OKAY) { goto _ERR; } + + /* loop while v3 != 0 */ + while (mp_iszero(&v3) == MP_NO) { + /* q = u3/v3 */ + if ((err = mp_div(&u3, &v3, &q, NULL)) != MP_OKAY) { goto _ERR; } + + /* (t1,t2,t3) = (u1,u2,u3) - (v1,v2,v3)q */ + if ((err = mp_mul(&v1, &q, &tmp)) != MP_OKAY) { goto _ERR; } + if ((err = mp_sub(&u1, &tmp, &t1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_mul(&v2, &q, &tmp)) != MP_OKAY) { goto _ERR; } + if ((err = mp_sub(&u2, &tmp, &t2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_mul(&v3, &q, &tmp)) != MP_OKAY) { goto _ERR; } + if ((err = mp_sub(&u3, &tmp, &t3)) != MP_OKAY) { goto _ERR; } + + /* (u1,u2,u3) = (v1,v2,v3) */ + if ((err = mp_copy(&v1, &u1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&v2, &u2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&v3, &u3)) != MP_OKAY) { goto _ERR; } + + /* (v1,v2,v3) = (t1,t2,t3) */ + if ((err = mp_copy(&t1, &v1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&t2, &v2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&t3, &v3)) != MP_OKAY) { goto _ERR; } + } + + /* copy result out */ + if (U1 != NULL) { mp_exch(U1, &u1); } + if (U2 != NULL) { mp_exch(U2, &u2); } + if (U3 != NULL) { mp_exch(U3, &u3); } + + err = MP_OKAY; +_ERR: mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL); + return err; +} +#endif diff --git a/libtommath/bn_mp_fread.c b/libtommath/bn_mp_fread.c new file mode 100644 index 0000000..293df3f --- /dev/null +++ b/libtommath/bn_mp_fread.c @@ -0,0 +1,63 @@ +#include +#ifdef BN_MP_FREAD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* read a bigint from a file stream in ASCII */ +int mp_fread(mp_int *a, int radix, FILE *stream) +{ + int err, ch, neg, y; + + /* clear a */ + mp_zero(a); + + /* if first digit is - then set negative */ + ch = fgetc(stream); + if (ch == '-') { + neg = MP_NEG; + ch = fgetc(stream); + } else { + neg = MP_ZPOS; + } + + for (;;) { + /* find y in the radix map */ + for (y = 0; y < radix; y++) { + if (mp_s_rmap[y] == ch) { + break; + } + } + if (y == radix) { + break; + } + + /* shift up and add */ + if ((err = mp_mul_d(a, radix, a)) != MP_OKAY) { + return err; + } + if ((err = mp_add_d(a, y, a)) != MP_OKAY) { + return err; + } + + ch = fgetc(stream); + } + if (mp_cmp_d(a, 0) != MP_EQ) { + a->sign = neg; + } + + return MP_OKAY; +} + +#endif diff --git a/libtommath/bn_mp_fwrite.c b/libtommath/bn_mp_fwrite.c new file mode 100644 index 0000000..8fa3129 --- /dev/null +++ b/libtommath/bn_mp_fwrite.c @@ -0,0 +1,48 @@ +#include +#ifdef BN_MP_FWRITE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +int mp_fwrite(mp_int *a, int radix, FILE *stream) +{ + char *buf; + int err, len, x; + + if ((err = mp_radix_size(a, radix, &len)) != MP_OKAY) { + return err; + } + + buf = OPT_CAST(char) XMALLOC (len); + if (buf == NULL) { + return MP_MEM; + } + + if ((err = mp_toradix(a, buf, radix)) != MP_OKAY) { + XFREE (buf); + return err; + } + + for (x = 0; x < len; x++) { + if (fputc(buf[x], stream) == EOF) { + XFREE (buf); + return MP_VAL; + } + } + + XFREE (buf); + return MP_OKAY; +} + +#endif diff --git a/libtommath/bn_mp_gcd.c b/libtommath/bn_mp_gcd.c new file mode 100644 index 0000000..6265df1 --- /dev/null +++ b/libtommath/bn_mp_gcd.c @@ -0,0 +1,109 @@ +#include +#ifdef BN_MP_GCD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Greatest Common Divisor using the binary method */ +int mp_gcd (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int u, v; + int k, u_lsb, v_lsb, res; + + /* either zero than gcd is the largest */ + if (mp_iszero (a) == 1 && mp_iszero (b) == 0) { + return mp_abs (b, c); + } + if (mp_iszero (a) == 0 && mp_iszero (b) == 1) { + return mp_abs (a, c); + } + + /* optimized. At this point if a == 0 then + * b must equal zero too + */ + if (mp_iszero (a) == 1) { + mp_zero(c); + return MP_OKAY; + } + + /* get copies of a and b we can modify */ + if ((res = mp_init_copy (&u, a)) != MP_OKAY) { + return res; + } + + if ((res = mp_init_copy (&v, b)) != MP_OKAY) { + goto LBL_U; + } + + /* must be positive for the remainder of the algorithm */ + u.sign = v.sign = MP_ZPOS; + + /* B1. Find the common power of two for u and v */ + u_lsb = mp_cnt_lsb(&u); + v_lsb = mp_cnt_lsb(&v); + k = MIN(u_lsb, v_lsb); + + if (k > 0) { + /* divide the power of two out */ + if ((res = mp_div_2d(&u, k, &u, NULL)) != MP_OKAY) { + goto LBL_V; + } + + if ((res = mp_div_2d(&v, k, &v, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + /* divide any remaining factors of two out */ + if (u_lsb != k) { + if ((res = mp_div_2d(&u, u_lsb - k, &u, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + if (v_lsb != k) { + if ((res = mp_div_2d(&v, v_lsb - k, &v, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + while (mp_iszero(&v) == 0) { + /* make sure v is the largest */ + if (mp_cmp_mag(&u, &v) == MP_GT) { + /* swap u and v to make sure v is >= u */ + mp_exch(&u, &v); + } + + /* subtract smallest from largest */ + if ((res = s_mp_sub(&v, &u, &v)) != MP_OKAY) { + goto LBL_V; + } + + /* Divide out all factors of two */ + if ((res = mp_div_2d(&v, mp_cnt_lsb(&v), &v, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + /* multiply by 2**k which we divided out at the beginning */ + if ((res = mp_mul_2d (&u, k, c)) != MP_OKAY) { + goto LBL_V; + } + c->sign = MP_ZPOS; + res = MP_OKAY; +LBL_V:mp_clear (&u); +LBL_U:mp_clear (&v); + return res; +} +#endif diff --git a/libtommath/bn_mp_get_int.c b/libtommath/bn_mp_get_int.c new file mode 100644 index 0000000..034467b --- /dev/null +++ b/libtommath/bn_mp_get_int.c @@ -0,0 +1,41 @@ +#include +#ifdef BN_MP_GET_INT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* get the lower 32-bits of an mp_int */ +unsigned long mp_get_int(mp_int * a) +{ + int i; + unsigned long res; + + if (a->used == 0) { + return 0; + } + + /* get number of digits of the lsb we have to read */ + i = MIN(a->used,(int)((sizeof(unsigned long)*CHAR_BIT+DIGIT_BIT-1)/DIGIT_BIT))-1; + + /* get most significant digit of result */ + res = DIGIT(a,i); + + while (--i >= 0) { + res = (res << DIGIT_BIT) | DIGIT(a,i); + } + + /* force result to 32-bits always so it is consistent on non 32-bit platforms */ + return res & 0xFFFFFFFFUL; +} +#endif diff --git a/libtommath/bn_mp_grow.c b/libtommath/bn_mp_grow.c new file mode 100644 index 0000000..12a78a8 --- /dev/null +++ b/libtommath/bn_mp_grow.c @@ -0,0 +1,53 @@ +#include +#ifdef BN_MP_GROW_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* grow as required */ +int mp_grow (mp_int * a, int size) +{ + int i; + mp_digit *tmp; + + /* if the alloc size is smaller alloc more ram */ + if (a->alloc < size) { + /* ensure there are always at least MP_PREC digits extra on top */ + size += (MP_PREC * 2) - (size % MP_PREC); + + /* reallocate the array a->dp + * + * We store the return in a temporary variable + * in case the operation failed we don't want + * to overwrite the dp member of a. + */ + tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * size); + if (tmp == NULL) { + /* reallocation failed but "a" is still valid [can be freed] */ + return MP_MEM; + } + + /* reallocation succeeded so set a->dp */ + a->dp = tmp; + + /* zero excess digits */ + i = a->alloc; + a->alloc = size; + for (; i < a->alloc; i++) { + a->dp[i] = 0; + } + } + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_init.c b/libtommath/bn_mp_init.c new file mode 100644 index 0000000..9d70554 --- /dev/null +++ b/libtommath/bn_mp_init.c @@ -0,0 +1,42 @@ +#include +#ifdef BN_MP_INIT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* init a new mp_int */ +int mp_init (mp_int * a) +{ + int i; + + /* allocate memory required and clear it */ + a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * MP_PREC); + if (a->dp == NULL) { + return MP_MEM; + } + + /* set the digits to zero */ + for (i = 0; i < MP_PREC; i++) { + a->dp[i] = 0; + } + + /* set the used to zero, allocated digits to the default precision + * and sign to positive */ + a->used = 0; + a->alloc = MP_PREC; + a->sign = MP_ZPOS; + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_init_copy.c b/libtommath/bn_mp_init_copy.c new file mode 100644 index 0000000..b1b0fa2 --- /dev/null +++ b/libtommath/bn_mp_init_copy.c @@ -0,0 +1,28 @@ +#include +#ifdef BN_MP_INIT_COPY_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* creates "a" then copies b into it */ +int mp_init_copy (mp_int * a, mp_int * b) +{ + int res; + + if ((res = mp_init (a)) != MP_OKAY) { + return res; + } + return mp_copy (b, a); +} +#endif diff --git a/libtommath/bn_mp_init_multi.c b/libtommath/bn_mp_init_multi.c new file mode 100644 index 0000000..8cb123a --- /dev/null +++ b/libtommath/bn_mp_init_multi.c @@ -0,0 +1,55 @@ +#include +#ifdef BN_MP_INIT_MULTI_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +#include + +int mp_init_multi(mp_int *mp, ...) +{ + mp_err res = MP_OKAY; /* Assume ok until proven otherwise */ + int n = 0; /* Number of ok inits */ + mp_int* cur_arg = mp; + va_list args; + + va_start(args, mp); /* init args to next argument from caller */ + while (cur_arg != NULL) { + if (mp_init(cur_arg) != MP_OKAY) { + /* Oops - error! Back-track and mp_clear what we already + succeeded in init-ing, then return error. + */ + va_list clean_args; + + /* end the current list */ + va_end(args); + + /* now start cleaning up */ + cur_arg = mp; + va_start(clean_args, mp); + while (n--) { + mp_clear(cur_arg); + cur_arg = va_arg(clean_args, mp_int*); + } + va_end(clean_args); + res = MP_MEM; + break; + } + n++; + cur_arg = va_arg(args, mp_int*); + } + va_end(args); + return res; /* Assumed ok, if error flagged above. */ +} + +#endif diff --git a/libtommath/bn_mp_init_set.c b/libtommath/bn_mp_init_set.c new file mode 100644 index 0000000..0251e61 --- /dev/null +++ b/libtommath/bn_mp_init_set.c @@ -0,0 +1,28 @@ +#include +#ifdef BN_MP_INIT_SET_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* initialize and set a digit */ +int mp_init_set (mp_int * a, mp_digit b) +{ + int err; + if ((err = mp_init(a)) != MP_OKAY) { + return err; + } + mp_set(a, b); + return err; +} +#endif diff --git a/libtommath/bn_mp_init_set_int.c b/libtommath/bn_mp_init_set_int.c new file mode 100644 index 0000000..f59fd19 --- /dev/null +++ b/libtommath/bn_mp_init_set_int.c @@ -0,0 +1,27 @@ +#include +#ifdef BN_MP_INIT_SET_INT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* initialize and set a digit */ +int mp_init_set_int (mp_int * a, unsigned long b) +{ + int err; + if ((err = mp_init(a)) != MP_OKAY) { + return err; + } + return mp_set_int(a, b); +} +#endif diff --git a/libtommath/bn_mp_init_size.c b/libtommath/bn_mp_init_size.c new file mode 100644 index 0000000..845ce2c --- /dev/null +++ b/libtommath/bn_mp_init_size.c @@ -0,0 +1,44 @@ +#include +#ifdef BN_MP_INIT_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* init an mp_init for a given size */ +int mp_init_size (mp_int * a, int size) +{ + int x; + + /* pad size so there are always extra digits */ + size += (MP_PREC * 2) - (size % MP_PREC); + + /* alloc mem */ + a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * size); + if (a->dp == NULL) { + return MP_MEM; + } + + /* set the members */ + a->used = 0; + a->alloc = size; + a->sign = MP_ZPOS; + + /* zero the digits */ + for (x = 0; x < size; x++) { + a->dp[x] = 0; + } + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_invmod.c b/libtommath/bn_mp_invmod.c new file mode 100644 index 0000000..46118ad --- /dev/null +++ b/libtommath/bn_mp_invmod.c @@ -0,0 +1,39 @@ +#include +#ifdef BN_MP_INVMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* hac 14.61, pp608 */ +int mp_invmod (mp_int * a, mp_int * b, mp_int * c) +{ + /* b cannot be negative */ + if (b->sign == MP_NEG || mp_iszero(b) == 1) { + return MP_VAL; + } + +#ifdef BN_FAST_MP_INVMOD_C + /* if the modulus is odd we can use a faster routine instead */ + if (mp_isodd (b) == 1) { + return fast_mp_invmod (a, b, c); + } +#endif + +#ifdef BN_MP_INVMOD_SLOW_C + return mp_invmod_slow(a, b, c); +#endif + + return MP_VAL; +} +#endif diff --git a/libtommath/bn_mp_invmod_slow.c b/libtommath/bn_mp_invmod_slow.c new file mode 100644 index 0000000..c1884c0 --- /dev/null +++ b/libtommath/bn_mp_invmod_slow.c @@ -0,0 +1,171 @@ +#include +#ifdef BN_MP_INVMOD_SLOW_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* hac 14.61, pp608 */ +int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int x, y, u, v, A, B, C, D; + int res; + + /* b cannot be negative */ + if (b->sign == MP_NEG || mp_iszero(b) == 1) { + return MP_VAL; + } + + /* init temps */ + if ((res = mp_init_multi(&x, &y, &u, &v, + &A, &B, &C, &D, NULL)) != MP_OKAY) { + return res; + } + + /* x = a, y = b */ + if ((res = mp_copy (a, &x)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_copy (b, &y)) != MP_OKAY) { + goto LBL_ERR; + } + + /* 2. [modified] if x,y are both even then return an error! */ + if (mp_iseven (&x) == 1 && mp_iseven (&y) == 1) { + res = MP_VAL; + goto LBL_ERR; + } + + /* 3. u=x, v=y, A=1, B=0, C=0,D=1 */ + if ((res = mp_copy (&x, &u)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_copy (&y, &v)) != MP_OKAY) { + goto LBL_ERR; + } + mp_set (&A, 1); + mp_set (&D, 1); + +top: + /* 4. while u is even do */ + while (mp_iseven (&u) == 1) { + /* 4.1 u = u/2 */ + if ((res = mp_div_2 (&u, &u)) != MP_OKAY) { + goto LBL_ERR; + } + /* 4.2 if A or B is odd then */ + if (mp_isodd (&A) == 1 || mp_isodd (&B) == 1) { + /* A = (A+y)/2, B = (B-x)/2 */ + if ((res = mp_add (&A, &y, &A)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub (&B, &x, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* A = A/2, B = B/2 */ + if ((res = mp_div_2 (&A, &A)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_div_2 (&B, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 5. while v is even do */ + while (mp_iseven (&v) == 1) { + /* 5.1 v = v/2 */ + if ((res = mp_div_2 (&v, &v)) != MP_OKAY) { + goto LBL_ERR; + } + /* 5.2 if C or D is odd then */ + if (mp_isodd (&C) == 1 || mp_isodd (&D) == 1) { + /* C = (C+y)/2, D = (D-x)/2 */ + if ((res = mp_add (&C, &y, &C)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub (&D, &x, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* C = C/2, D = D/2 */ + if ((res = mp_div_2 (&C, &C)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_div_2 (&D, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 6. if u >= v then */ + if (mp_cmp (&u, &v) != MP_LT) { + /* u = u - v, A = A - C, B = B - D */ + if ((res = mp_sub (&u, &v, &u)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&A, &C, &A)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&B, &D, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } else { + /* v - v - u, C = C - A, D = D - B */ + if ((res = mp_sub (&v, &u, &v)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&C, &A, &C)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&D, &B, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* if not zero goto step 4 */ + if (mp_iszero (&u) == 0) + goto top; + + /* now a = C, b = D, gcd == g*v */ + + /* if v != 1 then there is no inverse */ + if (mp_cmp_d (&v, 1) != MP_EQ) { + res = MP_VAL; + goto LBL_ERR; + } + + /* if its too low */ + while (mp_cmp_d(&C, 0) == MP_LT) { + if ((res = mp_add(&C, b, &C)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* too big */ + while (mp_cmp_mag(&C, b) != MP_LT) { + if ((res = mp_sub(&C, b, &C)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* C is now the inverse */ + mp_exch (&C, c); + res = MP_OKAY; +LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL); + return res; +} +#endif diff --git a/libtommath/bn_mp_is_square.c b/libtommath/bn_mp_is_square.c new file mode 100644 index 0000000..969d237 --- /dev/null +++ b/libtommath/bn_mp_is_square.c @@ -0,0 +1,105 @@ +#include +#ifdef BN_MP_IS_SQUARE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Check if remainders are possible squares - fast exclude non-squares */ +static const char rem_128[128] = { + 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1 +}; + +static const char rem_105[105] = { + 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1 +}; + +/* Store non-zero to ret if arg is square, and zero if not */ +int mp_is_square(mp_int *arg,int *ret) +{ + int res; + mp_digit c; + mp_int t; + unsigned long r; + + /* Default to Non-square :) */ + *ret = MP_NO; + + if (arg->sign == MP_NEG) { + return MP_VAL; + } + + /* digits used? (TSD) */ + if (arg->used == 0) { + return MP_OKAY; + } + + /* First check mod 128 (suppose that DIGIT_BIT is at least 7) */ + if (rem_128[127 & DIGIT(arg,0)] == 1) { + return MP_OKAY; + } + + /* Next check mod 105 (3*5*7) */ + if ((res = mp_mod_d(arg,105,&c)) != MP_OKAY) { + return res; + } + if (rem_105[c] == 1) { + return MP_OKAY; + } + + + if ((res = mp_init_set_int(&t,11L*13L*17L*19L*23L*29L*31L)) != MP_OKAY) { + return res; + } + if ((res = mp_mod(arg,&t,&t)) != MP_OKAY) { + goto ERR; + } + r = mp_get_int(&t); + /* Check for other prime modules, note it's not an ERROR but we must + * free "t" so the easiest way is to goto ERR. We know that res + * is already equal to MP_OKAY from the mp_mod call + */ + if ( (1L<<(r%11)) & 0x5C4L ) goto ERR; + if ( (1L<<(r%13)) & 0x9E4L ) goto ERR; + if ( (1L<<(r%17)) & 0x5CE8L ) goto ERR; + if ( (1L<<(r%19)) & 0x4F50CL ) goto ERR; + if ( (1L<<(r%23)) & 0x7ACCA0L ) goto ERR; + if ( (1L<<(r%29)) & 0xC2EDD0CL ) goto ERR; + if ( (1L<<(r%31)) & 0x6DE2B848L ) goto ERR; + + /* Final check - is sqr(sqrt(arg)) == arg ? */ + if ((res = mp_sqrt(arg,&t)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sqr(&t,&t)) != MP_OKAY) { + goto ERR; + } + + *ret = (mp_cmp_mag(&t,arg) == MP_EQ) ? MP_YES : MP_NO; +ERR:mp_clear(&t); + return res; +} +#endif diff --git a/libtommath/bn_mp_jacobi.c b/libtommath/bn_mp_jacobi.c new file mode 100644 index 0000000..74cbbf3 --- /dev/null +++ b/libtommath/bn_mp_jacobi.c @@ -0,0 +1,101 @@ +#include +#ifdef BN_MP_JACOBI_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes the jacobi c = (a | n) (or Legendre if n is prime) + * HAC pp. 73 Algorithm 2.149 + */ +int mp_jacobi (mp_int * a, mp_int * p, int *c) +{ + mp_int a1, p1; + int k, s, r, res; + mp_digit residue; + + /* if p <= 0 return MP_VAL */ + if (mp_cmp_d(p, 0) != MP_GT) { + return MP_VAL; + } + + /* step 1. if a == 0, return 0 */ + if (mp_iszero (a) == 1) { + *c = 0; + return MP_OKAY; + } + + /* step 2. if a == 1, return 1 */ + if (mp_cmp_d (a, 1) == MP_EQ) { + *c = 1; + return MP_OKAY; + } + + /* default */ + s = 0; + + /* step 3. write a = a1 * 2**k */ + if ((res = mp_init_copy (&a1, a)) != MP_OKAY) { + return res; + } + + if ((res = mp_init (&p1)) != MP_OKAY) { + goto LBL_A1; + } + + /* divide out larger power of two */ + k = mp_cnt_lsb(&a1); + if ((res = mp_div_2d(&a1, k, &a1, NULL)) != MP_OKAY) { + goto LBL_P1; + } + + /* step 4. if e is even set s=1 */ + if ((k & 1) == 0) { + s = 1; + } else { + /* else set s=1 if p = 1/7 (mod 8) or s=-1 if p = 3/5 (mod 8) */ + residue = p->dp[0] & 7; + + if (residue == 1 || residue == 7) { + s = 1; + } else if (residue == 3 || residue == 5) { + s = -1; + } + } + + /* step 5. if p == 3 (mod 4) *and* a1 == 3 (mod 4) then s = -s */ + if ( ((p->dp[0] & 3) == 3) && ((a1.dp[0] & 3) == 3)) { + s = -s; + } + + /* if a1 == 1 we're done */ + if (mp_cmp_d (&a1, 1) == MP_EQ) { + *c = s; + } else { + /* n1 = n mod a1 */ + if ((res = mp_mod (p, &a1, &p1)) != MP_OKAY) { + goto LBL_P1; + } + if ((res = mp_jacobi (&p1, &a1, &r)) != MP_OKAY) { + goto LBL_P1; + } + *c = s * r; + } + + /* done */ + res = MP_OKAY; +LBL_P1:mp_clear (&p1); +LBL_A1:mp_clear (&a1); + return res; +} +#endif diff --git a/libtommath/bn_mp_karatsuba_mul.c b/libtommath/bn_mp_karatsuba_mul.c new file mode 100644 index 0000000..daa78c7 --- /dev/null +++ b/libtommath/bn_mp_karatsuba_mul.c @@ -0,0 +1,163 @@ +#include +#ifdef BN_MP_KARATSUBA_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* c = |a| * |b| using Karatsuba Multiplication using + * three half size multiplications + * + * Let B represent the radix [e.g. 2**DIGIT_BIT] and + * let n represent half of the number of digits in + * the min(a,b) + * + * a = a1 * B**n + a0 + * b = b1 * B**n + b0 + * + * Then, a * b => + a1b1 * B**2n + ((a1 - a0)(b1 - b0) + a0b0 + a1b1) * B + a0b0 + * + * Note that a1b1 and a0b0 are used twice and only need to be + * computed once. So in total three half size (half # of + * digit) multiplications are performed, a0b0, a1b1 and + * (a1-b1)(a0-b0) + * + * Note that a multiplication of half the digits requires + * 1/4th the number of single precision multiplications so in + * total after one call 25% of the single precision multiplications + * are saved. Note also that the call to mp_mul can end up back + * in this function if the a0, a1, b0, or b1 are above the threshold. + * This is known as divide-and-conquer and leads to the famous + * O(N**lg(3)) or O(N**1.584) work which is asymptopically lower than + * the standard O(N**2) that the baseline/comba methods use. + * Generally though the overhead of this method doesn't pay off + * until a certain size (N ~ 80) is reached. + */ +int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int x0, x1, y0, y1, t1, x0y0, x1y1; + int B, err; + + /* default the return code to an error */ + err = MP_MEM; + + /* min # of digits */ + B = MIN (a->used, b->used); + + /* now divide in two */ + B = B >> 1; + + /* init copy all the temps */ + if (mp_init_size (&x0, B) != MP_OKAY) + goto ERR; + if (mp_init_size (&x1, a->used - B) != MP_OKAY) + goto X0; + if (mp_init_size (&y0, B) != MP_OKAY) + goto X1; + if (mp_init_size (&y1, b->used - B) != MP_OKAY) + goto Y0; + + /* init temps */ + if (mp_init_size (&t1, B * 2) != MP_OKAY) + goto Y1; + if (mp_init_size (&x0y0, B * 2) != MP_OKAY) + goto T1; + if (mp_init_size (&x1y1, B * 2) != MP_OKAY) + goto X0Y0; + + /* now shift the digits */ + x0.used = y0.used = B; + x1.used = a->used - B; + y1.used = b->used - B; + + { + register int x; + register mp_digit *tmpa, *tmpb, *tmpx, *tmpy; + + /* we copy the digits directly instead of using higher level functions + * since we also need to shift the digits + */ + tmpa = a->dp; + tmpb = b->dp; + + tmpx = x0.dp; + tmpy = y0.dp; + for (x = 0; x < B; x++) { + *tmpx++ = *tmpa++; + *tmpy++ = *tmpb++; + } + + tmpx = x1.dp; + for (x = B; x < a->used; x++) { + *tmpx++ = *tmpa++; + } + + tmpy = y1.dp; + for (x = B; x < b->used; x++) { + *tmpy++ = *tmpb++; + } + } + + /* only need to clamp the lower words since by definition the + * upper words x1/y1 must have a known number of digits + */ + mp_clamp (&x0); + mp_clamp (&y0); + + /* now calc the products x0y0 and x1y1 */ + /* after this x0 is no longer required, free temp [x0==t2]! */ + if (mp_mul (&x0, &y0, &x0y0) != MP_OKAY) + goto X1Y1; /* x0y0 = x0*y0 */ + if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY) + goto X1Y1; /* x1y1 = x1*y1 */ + + /* now calc x1-x0 and y1-y0 */ + if (mp_sub (&x1, &x0, &t1) != MP_OKAY) + goto X1Y1; /* t1 = x1 - x0 */ + if (mp_sub (&y1, &y0, &x0) != MP_OKAY) + goto X1Y1; /* t2 = y1 - y0 */ + if (mp_mul (&t1, &x0, &t1) != MP_OKAY) + goto X1Y1; /* t1 = (x1 - x0) * (y1 - y0) */ + + /* add x0y0 */ + if (mp_add (&x0y0, &x1y1, &x0) != MP_OKAY) + goto X1Y1; /* t2 = x0y0 + x1y1 */ + if (mp_sub (&x0, &t1, &t1) != MP_OKAY) + goto X1Y1; /* t1 = x0y0 + x1y1 - (x1-x0)*(y1-y0) */ + + /* shift by B */ + if (mp_lshd (&t1, B) != MP_OKAY) + goto X1Y1; /* t1 = (x0y0 + x1y1 - (x1-x0)*(y1-y0))< +#ifdef BN_MP_KARATSUBA_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Karatsuba squaring, computes b = a*a using three + * half size squarings + * + * See comments of karatsuba_mul for details. It + * is essentially the same algorithm but merely + * tuned to perform recursive squarings. + */ +int mp_karatsuba_sqr (mp_int * a, mp_int * b) +{ + mp_int x0, x1, t1, t2, x0x0, x1x1; + int B, err; + + err = MP_MEM; + + /* min # of digits */ + B = a->used; + + /* now divide in two */ + B = B >> 1; + + /* init copy all the temps */ + if (mp_init_size (&x0, B) != MP_OKAY) + goto ERR; + if (mp_init_size (&x1, a->used - B) != MP_OKAY) + goto X0; + + /* init temps */ + if (mp_init_size (&t1, a->used * 2) != MP_OKAY) + goto X1; + if (mp_init_size (&t2, a->used * 2) != MP_OKAY) + goto T1; + if (mp_init_size (&x0x0, B * 2) != MP_OKAY) + goto T2; + if (mp_init_size (&x1x1, (a->used - B) * 2) != MP_OKAY) + goto X0X0; + + { + register int x; + register mp_digit *dst, *src; + + src = a->dp; + + /* now shift the digits */ + dst = x0.dp; + for (x = 0; x < B; x++) { + *dst++ = *src++; + } + + dst = x1.dp; + for (x = B; x < a->used; x++) { + *dst++ = *src++; + } + } + + x0.used = B; + x1.used = a->used - B; + + mp_clamp (&x0); + + /* now calc the products x0*x0 and x1*x1 */ + if (mp_sqr (&x0, &x0x0) != MP_OKAY) + goto X1X1; /* x0x0 = x0*x0 */ + if (mp_sqr (&x1, &x1x1) != MP_OKAY) + goto X1X1; /* x1x1 = x1*x1 */ + + /* now calc (x1-x0)**2 */ + if (mp_sub (&x1, &x0, &t1) != MP_OKAY) + goto X1X1; /* t1 = x1 - x0 */ + if (mp_sqr (&t1, &t1) != MP_OKAY) + goto X1X1; /* t1 = (x1 - x0) * (x1 - x0) */ + + /* add x0y0 */ + if (s_mp_add (&x0x0, &x1x1, &t2) != MP_OKAY) + goto X1X1; /* t2 = x0x0 + x1x1 */ + if (mp_sub (&t2, &t1, &t1) != MP_OKAY) + goto X1X1; /* t1 = x0x0 + x1x1 - (x1-x0)*(x1-x0) */ + + /* shift by B */ + if (mp_lshd (&t1, B) != MP_OKAY) + goto X1X1; /* t1 = (x0x0 + x1x1 - (x1-x0)*(x1-x0))< +#ifdef BN_MP_LCM_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes least common multiple as |a*b|/(a, b) */ +int mp_lcm (mp_int * a, mp_int * b, mp_int * c) +{ + int res; + mp_int t1, t2; + + + if ((res = mp_init_multi (&t1, &t2, NULL)) != MP_OKAY) { + return res; + } + + /* t1 = get the GCD of the two inputs */ + if ((res = mp_gcd (a, b, &t1)) != MP_OKAY) { + goto LBL_T; + } + + /* divide the smallest by the GCD */ + if (mp_cmp_mag(a, b) == MP_LT) { + /* store quotient in t2 such that t2 * b is the LCM */ + if ((res = mp_div(a, &t1, &t2, NULL)) != MP_OKAY) { + goto LBL_T; + } + res = mp_mul(b, &t2, c); + } else { + /* store quotient in t2 such that t2 * a is the LCM */ + if ((res = mp_div(b, &t1, &t2, NULL)) != MP_OKAY) { + goto LBL_T; + } + res = mp_mul(a, &t2, c); + } + + /* fix the sign to positive */ + c->sign = MP_ZPOS; + +LBL_T: + mp_clear_multi (&t1, &t2, NULL); + return res; +} +#endif diff --git a/libtommath/bn_mp_lshd.c b/libtommath/bn_mp_lshd.c new file mode 100644 index 0000000..398b648 --- /dev/null +++ b/libtommath/bn_mp_lshd.c @@ -0,0 +1,63 @@ +#include +#ifdef BN_MP_LSHD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shift left a certain amount of digits */ +int mp_lshd (mp_int * a, int b) +{ + int x, res; + + /* if its less than zero return */ + if (b <= 0) { + return MP_OKAY; + } + + /* grow to fit the new digits */ + if (a->alloc < a->used + b) { + if ((res = mp_grow (a, a->used + b)) != MP_OKAY) { + return res; + } + } + + { + register mp_digit *top, *bottom; + + /* increment the used by the shift amount then copy upwards */ + a->used += b; + + /* top */ + top = a->dp + a->used - 1; + + /* base */ + bottom = a->dp + a->used - 1 - b; + + /* much like mp_rshd this is implemented using a sliding window + * except the window goes the otherway around. Copying from + * the bottom to the top. see bn_mp_rshd.c for more info. + */ + for (x = a->used - 1; x >= b; x--) { + *top-- = *bottom--; + } + + /* zero the lower digits */ + top = a->dp; + for (x = 0; x < b; x++) { + *top++ = 0; + } + } + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_mod.c b/libtommath/bn_mp_mod.c new file mode 100644 index 0000000..75779bb --- /dev/null +++ b/libtommath/bn_mp_mod.c @@ -0,0 +1,44 @@ +#include +#ifdef BN_MP_MOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* c = a mod b, 0 <= c < b */ +int +mp_mod (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int t; + int res; + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_div (a, b, NULL, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + + if (t.sign != b->sign) { + res = mp_add (b, &t, c); + } else { + res = MP_OKAY; + mp_exch (&t, c); + } + + mp_clear (&t); + return res; +} +#endif diff --git a/libtommath/bn_mp_mod_2d.c b/libtommath/bn_mp_mod_2d.c new file mode 100644 index 0000000..589e4ba --- /dev/null +++ b/libtommath/bn_mp_mod_2d.c @@ -0,0 +1,51 @@ +#include +#ifdef BN_MP_MOD_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* calc a value mod 2**b */ +int +mp_mod_2d (mp_int * a, int b, mp_int * c) +{ + int x, res; + + /* if b is <= 0 then zero the int */ + if (b <= 0) { + mp_zero (c); + return MP_OKAY; + } + + /* if the modulus is larger than the value than return */ + if (b >= (int) (a->used * DIGIT_BIT)) { + res = mp_copy (a, c); + return res; + } + + /* copy */ + if ((res = mp_copy (a, c)) != MP_OKAY) { + return res; + } + + /* zero digits above the last digit of the modulus */ + for (x = (b / DIGIT_BIT) + ((b % DIGIT_BIT) == 0 ? 0 : 1); x < c->used; x++) { + c->dp[x] = 0; + } + /* clear the digit that is not completely outside/inside the modulus */ + c->dp[b / DIGIT_BIT] &= + (mp_digit) ((((mp_digit) 1) << (((mp_digit) b) % DIGIT_BIT)) - ((mp_digit) 1)); + mp_clamp (c); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_mod_d.c b/libtommath/bn_mp_mod_d.c new file mode 100644 index 0000000..8a2ad24 --- /dev/null +++ b/libtommath/bn_mp_mod_d.c @@ -0,0 +1,23 @@ +#include +#ifdef BN_MP_MOD_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +int +mp_mod_d (mp_int * a, mp_digit b, mp_digit * c) +{ + return mp_div_d(a, b, NULL, c); +} +#endif diff --git a/libtommath/bn_mp_montgomery_calc_normalization.c b/libtommath/bn_mp_montgomery_calc_normalization.c new file mode 100644 index 0000000..0a760cf --- /dev/null +++ b/libtommath/bn_mp_montgomery_calc_normalization.c @@ -0,0 +1,56 @@ +#include +#ifdef BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* + * shifts with subtractions when the result is greater than b. + * + * The method is slightly modified to shift B unconditionally upto just under + * the leading bit of b. This saves alot of multiple precision shifting. + */ +int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) +{ + int x, bits, res; + + /* how many bits of last digit does b use */ + bits = mp_count_bits (b) % DIGIT_BIT; + + + if (b->used > 1) { + if ((res = mp_2expt (a, (b->used - 1) * DIGIT_BIT + bits - 1)) != MP_OKAY) { + return res; + } + } else { + mp_set(a, 1); + bits = 1; + } + + + /* now compute C = A * B mod b */ + for (x = bits - 1; x < (int)DIGIT_BIT; x++) { + if ((res = mp_mul_2 (a, a)) != MP_OKAY) { + return res; + } + if (mp_cmp_mag (a, b) != MP_LT) { + if ((res = s_mp_sub (a, b, a)) != MP_OKAY) { + return res; + } + } + } + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_montgomery_reduce.c b/libtommath/bn_mp_montgomery_reduce.c new file mode 100644 index 0000000..3095fa7 --- /dev/null +++ b/libtommath/bn_mp_montgomery_reduce.c @@ -0,0 +1,114 @@ +#include +#ifdef BN_MP_MONTGOMERY_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes xR**-1 == x (mod N) via Montgomery Reduction */ +int +mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +{ + int ix, res, digs; + mp_digit mu; + + /* can the fast reduction [comba] method be used? + * + * Note that unlike in mul you're safely allowed *less* + * than the available columns [255 per default] since carries + * are fixed up in the inner loop. + */ + digs = n->used * 2 + 1; + if ((digs < MP_WARRAY) && + n->used < + (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + return fast_mp_montgomery_reduce (x, n, rho); + } + + /* grow the input as required */ + if (x->alloc < digs) { + if ((res = mp_grow (x, digs)) != MP_OKAY) { + return res; + } + } + x->used = digs; + + for (ix = 0; ix < n->used; ix++) { + /* mu = ai * rho mod b + * + * The value of rho must be precalculated via + * montgomery_setup() such that + * it equals -1/n0 mod b this allows the + * following inner loop to reduce the + * input one digit at a time + */ + mu = (mp_digit) (((mp_word)x->dp[ix]) * ((mp_word)rho) & MP_MASK); + + /* a = a + mu * m * b**i */ + { + register int iy; + register mp_digit *tmpn, *tmpx, u; + register mp_word r; + + /* alias for digits of the modulus */ + tmpn = n->dp; + + /* alias for the digits of x [the input] */ + tmpx = x->dp + ix; + + /* set the carry to zero */ + u = 0; + + /* Multiply and add in place */ + for (iy = 0; iy < n->used; iy++) { + /* compute product and sum */ + r = ((mp_word)mu) * ((mp_word)*tmpn++) + + ((mp_word) u) + ((mp_word) * tmpx); + + /* get carry */ + u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); + + /* fix digit */ + *tmpx++ = (mp_digit)(r & ((mp_word) MP_MASK)); + } + /* At this point the ix'th digit of x should be zero */ + + + /* propagate carries upwards as required*/ + while (u) { + *tmpx += u; + u = *tmpx >> DIGIT_BIT; + *tmpx++ &= MP_MASK; + } + } + } + + /* at this point the n.used'th least + * significant digits of x are all zero + * which means we can shift x to the + * right by n.used digits and the + * residue is unchanged. + */ + + /* x = x/b**n.used */ + mp_clamp(x); + mp_rshd (x, n->used); + + /* if x >= n then x = x - n */ + if (mp_cmp_mag (x, n) != MP_LT) { + return s_mp_sub (x, n, x); + } + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_montgomery_setup.c b/libtommath/bn_mp_montgomery_setup.c new file mode 100644 index 0000000..9dfc087 --- /dev/null +++ b/libtommath/bn_mp_montgomery_setup.c @@ -0,0 +1,55 @@ +#include +#ifdef BN_MP_MONTGOMERY_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* setups the montgomery reduction stuff */ +int +mp_montgomery_setup (mp_int * n, mp_digit * rho) +{ + mp_digit x, b; + +/* fast inversion mod 2**k + * + * Based on the fact that + * + * XA = 1 (mod 2**n) => (X(2-XA)) A = 1 (mod 2**2n) + * => 2*X*A - X*X*A*A = 1 + * => 2*(1) - (1) = 1 + */ + b = n->dp[0]; + + if ((b & 1) == 0) { + return MP_VAL; + } + + x = (((b + 2) & 4) << 1) + b; /* here x*a==1 mod 2**4 */ + x *= 2 - b * x; /* here x*a==1 mod 2**8 */ +#if !defined(MP_8BIT) + x *= 2 - b * x; /* here x*a==1 mod 2**16 */ +#endif +#if defined(MP_64BIT) || !(defined(MP_8BIT) || defined(MP_16BIT)) + x *= 2 - b * x; /* here x*a==1 mod 2**32 */ +#endif +#ifdef MP_64BIT + x *= 2 - b * x; /* here x*a==1 mod 2**64 */ +#endif + + /* rho = -1/m mod b */ + *rho = (((mp_word)1 << ((mp_word) DIGIT_BIT)) - x) & MP_MASK; + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_mul.c b/libtommath/bn_mp_mul.c new file mode 100644 index 0000000..f9cfa09 --- /dev/null +++ b/libtommath/bn_mp_mul.c @@ -0,0 +1,62 @@ +#include +#ifdef BN_MP_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* high level multiplication (handles sign) */ +int mp_mul (mp_int * a, mp_int * b, mp_int * c) +{ + int res, neg; + neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; + + /* use Toom-Cook? */ +#ifdef BN_MP_TOOM_MUL_C + if (MIN (a->used, b->used) >= TOOM_MUL_CUTOFF) { + res = mp_toom_mul(a, b, c); + } else +#endif +#ifdef BN_MP_KARATSUBA_MUL_C + /* use Karatsuba? */ + if (MIN (a->used, b->used) >= KARATSUBA_MUL_CUTOFF) { + res = mp_karatsuba_mul (a, b, c); + } else +#endif + { + /* can we use the fast multiplier? + * + * The fast multiplier can be used if the output will + * have less than MP_WARRAY digits and the number of + * digits won't affect carry propagation + */ + int digs = a->used + b->used + 1; + +#ifdef BN_FAST_S_MP_MUL_DIGS_C + if ((digs < MP_WARRAY) && + MIN(a->used, b->used) <= + (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + res = fast_s_mp_mul_digs (a, b, c, digs); + } else +#endif +#ifdef BN_S_MP_MUL_DIGS_C + res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */ +#else + res = MP_VAL; +#endif + + } + c->sign = (c->used > 0) ? neg : MP_ZPOS; + return res; +} +#endif diff --git a/libtommath/bn_mp_mul_2.c b/libtommath/bn_mp_mul_2.c new file mode 100644 index 0000000..6936681 --- /dev/null +++ b/libtommath/bn_mp_mul_2.c @@ -0,0 +1,78 @@ +#include +#ifdef BN_MP_MUL_2_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* b = a*2 */ +int mp_mul_2(mp_int * a, mp_int * b) +{ + int x, res, oldused; + + /* grow to accomodate result */ + if (b->alloc < a->used + 1) { + if ((res = mp_grow (b, a->used + 1)) != MP_OKAY) { + return res; + } + } + + oldused = b->used; + b->used = a->used; + + { + register mp_digit r, rr, *tmpa, *tmpb; + + /* alias for source */ + tmpa = a->dp; + + /* alias for dest */ + tmpb = b->dp; + + /* carry */ + r = 0; + for (x = 0; x < a->used; x++) { + + /* get what will be the *next* carry bit from the + * MSB of the current digit + */ + rr = *tmpa >> ((mp_digit)(DIGIT_BIT - 1)); + + /* now shift up this digit, add in the carry [from the previous] */ + *tmpb++ = ((*tmpa++ << ((mp_digit)1)) | r) & MP_MASK; + + /* copy the carry that would be from the source + * digit into the next iteration + */ + r = rr; + } + + /* new leading digit? */ + if (r != 0) { + /* add a MSB which is always 1 at this point */ + *tmpb = 1; + ++(b->used); + } + + /* now zero any excess digits on the destination + * that we didn't write to + */ + tmpb = b->dp + b->used; + for (x = b->used; x < oldused; x++) { + *tmpb++ = 0; + } + } + b->sign = a->sign; + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_mul_2d.c b/libtommath/bn_mp_mul_2d.c new file mode 100644 index 0000000..04cb8dd --- /dev/null +++ b/libtommath/bn_mp_mul_2d.c @@ -0,0 +1,81 @@ +#include +#ifdef BN_MP_MUL_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shift left by a certain bit count */ +int mp_mul_2d (mp_int * a, int b, mp_int * c) +{ + mp_digit d; + int res; + + /* copy */ + if (a != c) { + if ((res = mp_copy (a, c)) != MP_OKAY) { + return res; + } + } + + if (c->alloc < (int)(c->used + b/DIGIT_BIT + 1)) { + if ((res = mp_grow (c, c->used + b / DIGIT_BIT + 1)) != MP_OKAY) { + return res; + } + } + + /* shift by as many digits in the bit count */ + if (b >= (int)DIGIT_BIT) { + if ((res = mp_lshd (c, b / DIGIT_BIT)) != MP_OKAY) { + return res; + } + } + + /* shift any bit count < DIGIT_BIT */ + d = (mp_digit) (b % DIGIT_BIT); + if (d != 0) { + register mp_digit *tmpc, shift, mask, r, rr; + register int x; + + /* bitmask for carries */ + mask = (((mp_digit)1) << d) - 1; + + /* shift for msbs */ + shift = DIGIT_BIT - d; + + /* alias */ + tmpc = c->dp; + + /* carry */ + r = 0; + for (x = 0; x < c->used; x++) { + /* get the higher bits of the current word */ + rr = (*tmpc >> shift) & mask; + + /* shift the current word and OR in the carry */ + *tmpc = ((*tmpc << d) | r) & MP_MASK; + ++tmpc; + + /* set the carry to the carry bits of the current word */ + r = rr; + } + + /* set final carry */ + if (r != 0) { + c->dp[(c->used)++] = r; + } + } + mp_clamp (c); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_mul_d.c b/libtommath/bn_mp_mul_d.c new file mode 100644 index 0000000..f936361 --- /dev/null +++ b/libtommath/bn_mp_mul_d.c @@ -0,0 +1,74 @@ +#include +#ifdef BN_MP_MUL_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* multiply by a digit */ +int +mp_mul_d (mp_int * a, mp_digit b, mp_int * c) +{ + mp_digit u, *tmpa, *tmpc; + mp_word r; + int ix, res, olduse; + + /* make sure c is big enough to hold a*b */ + if (c->alloc < a->used + 1) { + if ((res = mp_grow (c, a->used + 1)) != MP_OKAY) { + return res; + } + } + + /* get the original destinations used count */ + olduse = c->used; + + /* set the sign */ + c->sign = a->sign; + + /* alias for a->dp [source] */ + tmpa = a->dp; + + /* alias for c->dp [dest] */ + tmpc = c->dp; + + /* zero carry */ + u = 0; + + /* compute columns */ + for (ix = 0; ix < a->used; ix++) { + /* compute product and carry sum for this term */ + r = ((mp_word) u) + ((mp_word)*tmpa++) * ((mp_word)b); + + /* mask off higher bits to get a single digit */ + *tmpc++ = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* send carry into next iteration */ + u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); + } + + /* store final carry [if any] */ + *tmpc++ = u; + + /* now zero digits above the top */ + while (ix++ < olduse) { + *tmpc++ = 0; + } + + /* set used count */ + c->used = a->used + 1; + mp_clamp(c); + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_mulmod.c b/libtommath/bn_mp_mulmod.c new file mode 100644 index 0000000..d34e90a --- /dev/null +++ b/libtommath/bn_mp_mulmod.c @@ -0,0 +1,37 @@ +#include +#ifdef BN_MP_MULMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* d = a * b (mod c) */ +int +mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + int res; + mp_int t; + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_mul (a, b, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + res = mp_mod (&t, c, d); + mp_clear (&t); + return res; +} +#endif diff --git a/libtommath/bn_mp_n_root.c b/libtommath/bn_mp_n_root.c new file mode 100644 index 0000000..7b11aa2 --- /dev/null +++ b/libtommath/bn_mp_n_root.c @@ -0,0 +1,128 @@ +#include +#ifdef BN_MP_N_ROOT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* find the n'th root of an integer + * + * Result found such that (c)**b <= a and (c+1)**b > a + * + * This algorithm uses Newton's approximation + * x[i+1] = x[i] - f(x[i])/f'(x[i]) + * which will find the root in log(N) time where + * each step involves a fair bit. This is not meant to + * find huge roots [square and cube, etc]. + */ +int mp_n_root (mp_int * a, mp_digit b, mp_int * c) +{ + mp_int t1, t2, t3; + int res, neg; + + /* input must be positive if b is even */ + if ((b & 1) == 0 && a->sign == MP_NEG) { + return MP_VAL; + } + + if ((res = mp_init (&t1)) != MP_OKAY) { + return res; + } + + if ((res = mp_init (&t2)) != MP_OKAY) { + goto LBL_T1; + } + + if ((res = mp_init (&t3)) != MP_OKAY) { + goto LBL_T2; + } + + /* if a is negative fudge the sign but keep track */ + neg = a->sign; + a->sign = MP_ZPOS; + + /* t2 = 2 */ + mp_set (&t2, 2); + + do { + /* t1 = t2 */ + if ((res = mp_copy (&t2, &t1)) != MP_OKAY) { + goto LBL_T3; + } + + /* t2 = t1 - ((t1**b - a) / (b * t1**(b-1))) */ + + /* t3 = t1**(b-1) */ + if ((res = mp_expt_d (&t1, b - 1, &t3)) != MP_OKAY) { + goto LBL_T3; + } + + /* numerator */ + /* t2 = t1**b */ + if ((res = mp_mul (&t3, &t1, &t2)) != MP_OKAY) { + goto LBL_T3; + } + + /* t2 = t1**b - a */ + if ((res = mp_sub (&t2, a, &t2)) != MP_OKAY) { + goto LBL_T3; + } + + /* denominator */ + /* t3 = t1**(b-1) * b */ + if ((res = mp_mul_d (&t3, b, &t3)) != MP_OKAY) { + goto LBL_T3; + } + + /* t3 = (t1**b - a)/(b * t1**(b-1)) */ + if ((res = mp_div (&t2, &t3, &t3, NULL)) != MP_OKAY) { + goto LBL_T3; + } + + if ((res = mp_sub (&t1, &t3, &t2)) != MP_OKAY) { + goto LBL_T3; + } + } while (mp_cmp (&t1, &t2) != MP_EQ); + + /* result can be off by a few so check */ + for (;;) { + if ((res = mp_expt_d (&t1, b, &t2)) != MP_OKAY) { + goto LBL_T3; + } + + if (mp_cmp (&t2, a) == MP_GT) { + if ((res = mp_sub_d (&t1, 1, &t1)) != MP_OKAY) { + goto LBL_T3; + } + } else { + break; + } + } + + /* reset the sign of a first */ + a->sign = neg; + + /* set the result */ + mp_exch (&t1, c); + + /* set the sign of the result */ + c->sign = neg; + + res = MP_OKAY; + +LBL_T3:mp_clear (&t3); +LBL_T2:mp_clear (&t2); +LBL_T1:mp_clear (&t1); + return res; +} +#endif diff --git a/libtommath/bn_mp_neg.c b/libtommath/bn_mp_neg.c new file mode 100644 index 0000000..3a991db --- /dev/null +++ b/libtommath/bn_mp_neg.c @@ -0,0 +1,30 @@ +#include +#ifdef BN_MP_NEG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* b = -a */ +int mp_neg (mp_int * a, mp_int * b) +{ + int res; + if ((res = mp_copy (a, b)) != MP_OKAY) { + return res; + } + if (mp_iszero(b) != MP_YES) { + b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; + } + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_or.c b/libtommath/bn_mp_or.c new file mode 100644 index 0000000..dccee7e --- /dev/null +++ b/libtommath/bn_mp_or.c @@ -0,0 +1,46 @@ +#include +#ifdef BN_MP_OR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* OR two ints together */ +int mp_or (mp_int * a, mp_int * b, mp_int * c) +{ + int res, ix, px; + mp_int t, *x; + + if (a->used > b->used) { + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + px = b->used; + x = b; + } else { + if ((res = mp_init_copy (&t, b)) != MP_OKAY) { + return res; + } + px = a->used; + x = a; + } + + for (ix = 0; ix < px; ix++) { + t.dp[ix] |= x->dp[ix]; + } + mp_clamp (&t); + mp_exch (c, &t); + mp_clear (&t); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_prime_fermat.c b/libtommath/bn_mp_prime_fermat.c new file mode 100644 index 0000000..fd74dbe --- /dev/null +++ b/libtommath/bn_mp_prime_fermat.c @@ -0,0 +1,58 @@ +#include +#ifdef BN_MP_PRIME_FERMAT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* performs one Fermat test. + * + * If "a" were prime then b**a == b (mod a) since the order of + * the multiplicative sub-group would be phi(a) = a-1. That means + * it would be the same as b**(a mod (a-1)) == b**1 == b (mod a). + * + * Sets result to 1 if the congruence holds, or zero otherwise. + */ +int mp_prime_fermat (mp_int * a, mp_int * b, int *result) +{ + mp_int t; + int err; + + /* default to composite */ + *result = MP_NO; + + /* ensure b > 1 */ + if (mp_cmp_d(b, 1) != MP_GT) { + return MP_VAL; + } + + /* init t */ + if ((err = mp_init (&t)) != MP_OKAY) { + return err; + } + + /* compute t = b**a mod a */ + if ((err = mp_exptmod (b, a, a, &t)) != MP_OKAY) { + goto LBL_T; + } + + /* is it equal to b? */ + if (mp_cmp (&t, b) == MP_EQ) { + *result = MP_YES; + } + + err = MP_OKAY; +LBL_T:mp_clear (&t); + return err; +} +#endif diff --git a/libtommath/bn_mp_prime_is_divisible.c b/libtommath/bn_mp_prime_is_divisible.c new file mode 100644 index 0000000..f85fe7c --- /dev/null +++ b/libtommath/bn_mp_prime_is_divisible.c @@ -0,0 +1,46 @@ +#include +#ifdef BN_MP_PRIME_IS_DIVISIBLE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if an integers is divisible by one + * of the first PRIME_SIZE primes or not + * + * sets result to 0 if not, 1 if yes + */ +int mp_prime_is_divisible (mp_int * a, int *result) +{ + int err, ix; + mp_digit res; + + /* default to not */ + *result = MP_NO; + + for (ix = 0; ix < PRIME_SIZE; ix++) { + /* what is a mod LBL_prime_tab[ix] */ + if ((err = mp_mod_d (a, ltm_prime_tab[ix], &res)) != MP_OKAY) { + return err; + } + + /* is the residue zero? */ + if (res == 0) { + *result = MP_YES; + return MP_OKAY; + } + } + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_prime_is_prime.c b/libtommath/bn_mp_prime_is_prime.c new file mode 100644 index 0000000..188053a --- /dev/null +++ b/libtommath/bn_mp_prime_is_prime.c @@ -0,0 +1,79 @@ +#include +#ifdef BN_MP_PRIME_IS_PRIME_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* performs a variable number of rounds of Miller-Rabin + * + * Probability of error after t rounds is no more than + + * + * Sets result to 1 if probably prime, 0 otherwise + */ +int mp_prime_is_prime (mp_int * a, int t, int *result) +{ + mp_int b; + int ix, err, res; + + /* default to no */ + *result = MP_NO; + + /* valid value of t? */ + if (t <= 0 || t > PRIME_SIZE) { + return MP_VAL; + } + + /* is the input equal to one of the primes in the table? */ + for (ix = 0; ix < PRIME_SIZE; ix++) { + if (mp_cmp_d(a, ltm_prime_tab[ix]) == MP_EQ) { + *result = 1; + return MP_OKAY; + } + } + + /* first perform trial division */ + if ((err = mp_prime_is_divisible (a, &res)) != MP_OKAY) { + return err; + } + + /* return if it was trivially divisible */ + if (res == MP_YES) { + return MP_OKAY; + } + + /* now perform the miller-rabin rounds */ + if ((err = mp_init (&b)) != MP_OKAY) { + return err; + } + + for (ix = 0; ix < t; ix++) { + /* set the prime */ + mp_set (&b, ltm_prime_tab[ix]); + + if ((err = mp_prime_miller_rabin (a, &b, &res)) != MP_OKAY) { + goto LBL_B; + } + + if (res == MP_NO) { + goto LBL_B; + } + } + + /* passed the test */ + *result = MP_YES; +LBL_B:mp_clear (&b); + return err; +} +#endif diff --git a/libtommath/bn_mp_prime_miller_rabin.c b/libtommath/bn_mp_prime_miller_rabin.c new file mode 100644 index 0000000..758a2c3 --- /dev/null +++ b/libtommath/bn_mp_prime_miller_rabin.c @@ -0,0 +1,99 @@ +#include +#ifdef BN_MP_PRIME_MILLER_RABIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Miller-Rabin test of "a" to the base of "b" as described in + * HAC pp. 139 Algorithm 4.24 + * + * Sets result to 0 if definitely composite or 1 if probably prime. + * Randomly the chance of error is no more than 1/4 and often + * very much lower. + */ +int mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result) +{ + mp_int n1, y, r; + int s, j, err; + + /* default */ + *result = MP_NO; + + /* ensure b > 1 */ + if (mp_cmp_d(b, 1) != MP_GT) { + return MP_VAL; + } + + /* get n1 = a - 1 */ + if ((err = mp_init_copy (&n1, a)) != MP_OKAY) { + return err; + } + if ((err = mp_sub_d (&n1, 1, &n1)) != MP_OKAY) { + goto LBL_N1; + } + + /* set 2**s * r = n1 */ + if ((err = mp_init_copy (&r, &n1)) != MP_OKAY) { + goto LBL_N1; + } + + /* count the number of least significant bits + * which are zero + */ + s = mp_cnt_lsb(&r); + + /* now divide n - 1 by 2**s */ + if ((err = mp_div_2d (&r, s, &r, NULL)) != MP_OKAY) { + goto LBL_R; + } + + /* compute y = b**r mod a */ + if ((err = mp_init (&y)) != MP_OKAY) { + goto LBL_R; + } + if ((err = mp_exptmod (b, &r, a, &y)) != MP_OKAY) { + goto LBL_Y; + } + + /* if y != 1 and y != n1 do */ + if (mp_cmp_d (&y, 1) != MP_EQ && mp_cmp (&y, &n1) != MP_EQ) { + j = 1; + /* while j <= s-1 and y != n1 */ + while ((j <= (s - 1)) && mp_cmp (&y, &n1) != MP_EQ) { + if ((err = mp_sqrmod (&y, a, &y)) != MP_OKAY) { + goto LBL_Y; + } + + /* if y == 1 then composite */ + if (mp_cmp_d (&y, 1) == MP_EQ) { + goto LBL_Y; + } + + ++j; + } + + /* if y != n1 then composite */ + if (mp_cmp (&y, &n1) != MP_EQ) { + goto LBL_Y; + } + } + + /* probably prime now */ + *result = MP_YES; +LBL_Y:mp_clear (&y); +LBL_R:mp_clear (&r); +LBL_N1:mp_clear (&n1); + return err; +} +#endif diff --git a/libtommath/bn_mp_prime_next_prime.c b/libtommath/bn_mp_prime_next_prime.c new file mode 100644 index 0000000..24f93c4 --- /dev/null +++ b/libtommath/bn_mp_prime_next_prime.c @@ -0,0 +1,166 @@ +#include +#ifdef BN_MP_PRIME_NEXT_PRIME_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* finds the next prime after the number "a" using "t" trials + * of Miller-Rabin. + * + * bbs_style = 1 means the prime must be congruent to 3 mod 4 + */ +int mp_prime_next_prime(mp_int *a, int t, int bbs_style) +{ + int err, res, x, y; + mp_digit res_tab[PRIME_SIZE], step, kstep; + mp_int b; + + /* ensure t is valid */ + if (t <= 0 || t > PRIME_SIZE) { + return MP_VAL; + } + + /* force positive */ + a->sign = MP_ZPOS; + + /* simple algo if a is less than the largest prime in the table */ + if (mp_cmp_d(a, ltm_prime_tab[PRIME_SIZE-1]) == MP_LT) { + /* find which prime it is bigger than */ + for (x = PRIME_SIZE - 2; x >= 0; x--) { + if (mp_cmp_d(a, ltm_prime_tab[x]) != MP_LT) { + if (bbs_style == 1) { + /* ok we found a prime smaller or + * equal [so the next is larger] + * + * however, the prime must be + * congruent to 3 mod 4 + */ + if ((ltm_prime_tab[x + 1] & 3) != 3) { + /* scan upwards for a prime congruent to 3 mod 4 */ + for (y = x + 1; y < PRIME_SIZE; y++) { + if ((ltm_prime_tab[y] & 3) == 3) { + mp_set(a, ltm_prime_tab[y]); + return MP_OKAY; + } + } + } + } else { + mp_set(a, ltm_prime_tab[x + 1]); + return MP_OKAY; + } + } + } + /* at this point a maybe 1 */ + if (mp_cmp_d(a, 1) == MP_EQ) { + mp_set(a, 2); + return MP_OKAY; + } + /* fall through to the sieve */ + } + + /* generate a prime congruent to 3 mod 4 or 1/3 mod 4? */ + if (bbs_style == 1) { + kstep = 4; + } else { + kstep = 2; + } + + /* at this point we will use a combination of a sieve and Miller-Rabin */ + + if (bbs_style == 1) { + /* if a mod 4 != 3 subtract the correct value to make it so */ + if ((a->dp[0] & 3) != 3) { + if ((err = mp_sub_d(a, (a->dp[0] & 3) + 1, a)) != MP_OKAY) { return err; }; + } + } else { + if (mp_iseven(a) == 1) { + /* force odd */ + if ((err = mp_sub_d(a, 1, a)) != MP_OKAY) { + return err; + } + } + } + + /* generate the restable */ + for (x = 1; x < PRIME_SIZE; x++) { + if ((err = mp_mod_d(a, ltm_prime_tab[x], res_tab + x)) != MP_OKAY) { + return err; + } + } + + /* init temp used for Miller-Rabin Testing */ + if ((err = mp_init(&b)) != MP_OKAY) { + return err; + } + + for (;;) { + /* skip to the next non-trivially divisible candidate */ + step = 0; + do { + /* y == 1 if any residue was zero [e.g. cannot be prime] */ + y = 0; + + /* increase step to next candidate */ + step += kstep; + + /* compute the new residue without using division */ + for (x = 1; x < PRIME_SIZE; x++) { + /* add the step to each residue */ + res_tab[x] += kstep; + + /* subtract the modulus [instead of using division] */ + if (res_tab[x] >= ltm_prime_tab[x]) { + res_tab[x] -= ltm_prime_tab[x]; + } + + /* set flag if zero */ + if (res_tab[x] == 0) { + y = 1; + } + } + } while (y == 1 && step < ((((mp_digit)1)<= ((((mp_digit)1)< +#ifdef BN_MP_PRIME_RABIN_MILLER_TRIALS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + + +static const struct { + int k, t; +} sizes[] = { +{ 128, 28 }, +{ 256, 16 }, +{ 384, 10 }, +{ 512, 7 }, +{ 640, 6 }, +{ 768, 5 }, +{ 896, 4 }, +{ 1024, 4 } +}; + +/* returns # of RM trials required for a given bit size */ +int mp_prime_rabin_miller_trials(int size) +{ + int x; + + for (x = 0; x < (int)(sizeof(sizes)/(sizeof(sizes[0]))); x++) { + if (sizes[x].k == size) { + return sizes[x].t; + } else if (sizes[x].k > size) { + return (x == 0) ? sizes[0].t : sizes[x - 1].t; + } + } + return sizes[x-1].t + 1; +} + + +#endif diff --git a/libtommath/bn_mp_prime_random_ex.c b/libtommath/bn_mp_prime_random_ex.c new file mode 100644 index 0000000..2010ebe --- /dev/null +++ b/libtommath/bn_mp_prime_random_ex.c @@ -0,0 +1,123 @@ +#include +#ifdef BN_MP_PRIME_RANDOM_EX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* makes a truly random prime of a given size (bits), + * + * Flags are as follows: + * + * LTM_PRIME_BBS - make prime congruent to 3 mod 4 + * LTM_PRIME_SAFE - make sure (p-1)/2 is prime as well (implies LTM_PRIME_BBS) + * LTM_PRIME_2MSB_OFF - make the 2nd highest bit zero + * LTM_PRIME_2MSB_ON - make the 2nd highest bit one + * + * You have to supply a callback which fills in a buffer with random bytes. "dat" is a parameter you can + * have passed to the callback (e.g. a state or something). This function doesn't use "dat" itself + * so it can be NULL + * + */ + +/* This is possibly the mother of all prime generation functions, muahahahahaha! */ +int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback cb, void *dat) +{ + unsigned char *tmp, maskAND, maskOR_msb, maskOR_lsb; + int res, err, bsize, maskOR_msb_offset; + + /* sanity check the input */ + if (size <= 1 || t <= 0) { + return MP_VAL; + } + + /* LTM_PRIME_SAFE implies LTM_PRIME_BBS */ + if (flags & LTM_PRIME_SAFE) { + flags |= LTM_PRIME_BBS; + } + + /* calc the byte size */ + bsize = (size>>3) + ((size&7)?1:0); + + /* we need a buffer of bsize bytes */ + tmp = OPT_CAST(unsigned char) XMALLOC(bsize); + if (tmp == NULL) { + return MP_MEM; + } + + /* calc the maskAND value for the MSbyte*/ + maskAND = ((size&7) == 0) ? 0xFF : (0xFF >> (8 - (size & 7))); + + /* calc the maskOR_msb */ + maskOR_msb = 0; + maskOR_msb_offset = (size - 2) >> 3; + if (flags & LTM_PRIME_2MSB_ON) { + maskOR_msb |= 1 << ((size - 2) & 7); + } else if (flags & LTM_PRIME_2MSB_OFF) { + maskAND &= ~(1 << ((size - 2) & 7)); + } + + /* get the maskOR_lsb */ + maskOR_lsb = 0; + if (flags & LTM_PRIME_BBS) { + maskOR_lsb |= 3; + } + + do { + /* read the bytes */ + if (cb(tmp, bsize, dat) != bsize) { + err = MP_VAL; + goto error; + } + + /* work over the MSbyte */ + tmp[0] &= maskAND; + tmp[0] |= 1 << ((size - 1) & 7); + + /* mix in the maskORs */ + tmp[maskOR_msb_offset] |= maskOR_msb; + tmp[bsize-1] |= maskOR_lsb; + + /* read it in */ + if ((err = mp_read_unsigned_bin(a, tmp, bsize)) != MP_OKAY) { goto error; } + + /* is it prime? */ + if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY) { goto error; } + if (res == MP_NO) { + continue; + } + + if (flags & LTM_PRIME_SAFE) { + /* see if (a-1)/2 is prime */ + if ((err = mp_sub_d(a, 1, a)) != MP_OKAY) { goto error; } + if ((err = mp_div_2(a, a)) != MP_OKAY) { goto error; } + + /* is it prime? */ + if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY) { goto error; } + } + } while (res == MP_NO); + + if (flags & LTM_PRIME_SAFE) { + /* restore a to the original value */ + if ((err = mp_mul_2(a, a)) != MP_OKAY) { goto error; } + if ((err = mp_add_d(a, 1, a)) != MP_OKAY) { goto error; } + } + + err = MP_OKAY; +error: + XFREE(tmp); + return err; +} + + +#endif diff --git a/libtommath/bn_mp_radix_size.c b/libtommath/bn_mp_radix_size.c new file mode 100644 index 0000000..30b78d9 --- /dev/null +++ b/libtommath/bn_mp_radix_size.c @@ -0,0 +1,67 @@ +#include +#ifdef BN_MP_RADIX_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* returns size of ASCII reprensentation */ +int mp_radix_size (mp_int * a, int radix, int *size) +{ + int res, digs; + mp_int t; + mp_digit d; + + *size = 0; + + /* special case for binary */ + if (radix == 2) { + *size = mp_count_bits (a) + (a->sign == MP_NEG ? 1 : 0) + 1; + return MP_OKAY; + } + + /* make sure the radix is in range */ + if (radix < 2 || radix > 64) { + return MP_VAL; + } + + /* init a copy of the input */ + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + /* digs is the digit count */ + digs = 0; + + /* if it's negative add one for the sign */ + if (t.sign == MP_NEG) { + ++digs; + t.sign = MP_ZPOS; + } + + /* fetch out all of the digits */ + while (mp_iszero (&t) == 0) { + if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { + mp_clear (&t); + return res; + } + ++digs; + } + mp_clear (&t); + + /* return digs + 1, the 1 is for the NULL byte that would be required. */ + *size = digs + 1; + return MP_OKAY; +} + +#endif diff --git a/libtommath/bn_mp_radix_smap.c b/libtommath/bn_mp_radix_smap.c new file mode 100644 index 0000000..bc7517d --- /dev/null +++ b/libtommath/bn_mp_radix_smap.c @@ -0,0 +1,20 @@ +#include +#ifdef BN_MP_RADIX_SMAP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* chars used in radix conversions */ +const char *mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; +#endif diff --git a/libtommath/bn_mp_rand.c b/libtommath/bn_mp_rand.c new file mode 100644 index 0000000..1cc47f1 --- /dev/null +++ b/libtommath/bn_mp_rand.c @@ -0,0 +1,51 @@ +#include +#ifdef BN_MP_RAND_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* makes a pseudo-random int of a given size */ +int +mp_rand (mp_int * a, int digits) +{ + int res; + mp_digit d; + + mp_zero (a); + if (digits <= 0) { + return MP_OKAY; + } + + /* first place a random non-zero digit */ + do { + d = ((mp_digit) abs (rand ())); + } while (d == 0); + + if ((res = mp_add_d (a, d, a)) != MP_OKAY) { + return res; + } + + while (digits-- > 0) { + if ((res = mp_lshd (a, 1)) != MP_OKAY) { + return res; + } + + if ((res = mp_add_d (a, ((mp_digit) abs (rand ())), a)) != MP_OKAY) { + return res; + } + } + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_read_radix.c b/libtommath/bn_mp_read_radix.c new file mode 100644 index 0000000..704bd0f --- /dev/null +++ b/libtommath/bn_mp_read_radix.c @@ -0,0 +1,78 @@ +#include +#ifdef BN_MP_READ_RADIX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* read a string [ASCII] in a given radix */ +int mp_read_radix (mp_int * a, char *str, int radix) +{ + int y, res, neg; + char ch; + + /* make sure the radix is ok */ + if (radix < 2 || radix > 64) { + return MP_VAL; + } + + /* if the leading digit is a + * minus set the sign to negative. + */ + if (*str == '-') { + ++str; + neg = MP_NEG; + } else { + neg = MP_ZPOS; + } + + /* set the integer to the default of zero */ + mp_zero (a); + + /* process each digit of the string */ + while (*str) { + /* if the radix < 36 the conversion is case insensitive + * this allows numbers like 1AB and 1ab to represent the same value + * [e.g. in hex] + */ + ch = (char) ((radix < 36) ? toupper (*str) : *str); + for (y = 0; y < 64; y++) { + if (ch == mp_s_rmap[y]) { + break; + } + } + + /* if the char was found in the map + * and is less than the given radix add it + * to the number, otherwise exit the loop. + */ + if (y < radix) { + if ((res = mp_mul_d (a, (mp_digit) radix, a)) != MP_OKAY) { + return res; + } + if ((res = mp_add_d (a, (mp_digit) y, a)) != MP_OKAY) { + return res; + } + } else { + break; + } + ++str; + } + + /* set the sign only if a != 0 */ + if (mp_iszero(a) != 1) { + a->sign = neg; + } + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_read_signed_bin.c b/libtommath/bn_mp_read_signed_bin.c new file mode 100644 index 0000000..814d6c1 --- /dev/null +++ b/libtommath/bn_mp_read_signed_bin.c @@ -0,0 +1,38 @@ +#include +#ifdef BN_MP_READ_SIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* read signed bin, big endian, first byte is 0==positive or 1==negative */ +int +mp_read_signed_bin (mp_int * a, unsigned char *b, int c) +{ + int res; + + /* read magnitude */ + if ((res = mp_read_unsigned_bin (a, b + 1, c - 1)) != MP_OKAY) { + return res; + } + + /* first byte is 0 for positive, non-zero for negative */ + if (b[0] == 0) { + a->sign = MP_ZPOS; + } else { + a->sign = MP_NEG; + } + + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_read_unsigned_bin.c b/libtommath/bn_mp_read_unsigned_bin.c new file mode 100644 index 0000000..946457d --- /dev/null +++ b/libtommath/bn_mp_read_unsigned_bin.c @@ -0,0 +1,52 @@ +#include +#ifdef BN_MP_READ_UNSIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reads a unsigned char array, assumes the msb is stored first [big endian] */ +int +mp_read_unsigned_bin (mp_int * a, unsigned char *b, int c) +{ + int res; + + /* make sure there are at least two digits */ + if (a->alloc < 2) { + if ((res = mp_grow(a, 2)) != MP_OKAY) { + return res; + } + } + + /* zero the int */ + mp_zero (a); + + /* read the bytes in */ + while (c-- > 0) { + if ((res = mp_mul_2d (a, 8, a)) != MP_OKAY) { + return res; + } + +#ifndef MP_8BIT + a->dp[0] |= *b++; + a->used += 1; +#else + a->dp[0] = (*b & MP_MASK); + a->dp[1] |= ((*b++ >> 7U) & 1); + a->used += 2; +#endif + } + mp_clamp (a); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_reduce.c b/libtommath/bn_mp_reduce.c new file mode 100644 index 0000000..cfcb55a --- /dev/null +++ b/libtommath/bn_mp_reduce.c @@ -0,0 +1,97 @@ +#include +#ifdef BN_MP_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduces x mod m, assumes 0 < x < m**2, mu is + * precomputed via mp_reduce_setup. + * From HAC pp.604 Algorithm 14.42 + */ +int +mp_reduce (mp_int * x, mp_int * m, mp_int * mu) +{ + mp_int q; + int res, um = m->used; + + /* q = x */ + if ((res = mp_init_copy (&q, x)) != MP_OKAY) { + return res; + } + + /* q1 = x / b**(k-1) */ + mp_rshd (&q, um - 1); + + /* according to HAC this optimization is ok */ + if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) { + if ((res = mp_mul (&q, mu, &q)) != MP_OKAY) { + goto CLEANUP; + } + } else { +#ifdef BN_S_MP_MUL_HIGH_DIGS_C + if ((res = s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) { + goto CLEANUP; + } +#elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) + if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) { + goto CLEANUP; + } +#else + { + res = MP_VAL; + goto CLEANUP; + } +#endif + } + + /* q3 = q2 / b**(k+1) */ + mp_rshd (&q, um + 1); + + /* x = x mod b**(k+1), quick (no division) */ + if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) { + goto CLEANUP; + } + + /* q = q * m mod b**(k+1), quick (no division) */ + if ((res = s_mp_mul_digs (&q, m, &q, um + 1)) != MP_OKAY) { + goto CLEANUP; + } + + /* x = x - q */ + if ((res = mp_sub (x, &q, x)) != MP_OKAY) { + goto CLEANUP; + } + + /* If x < 0, add b**(k+1) to it */ + if (mp_cmp_d (x, 0) == MP_LT) { + mp_set (&q, 1); + if ((res = mp_lshd (&q, um + 1)) != MP_OKAY) + goto CLEANUP; + if ((res = mp_add (x, &q, x)) != MP_OKAY) + goto CLEANUP; + } + + /* Back off if it's too big */ + while (mp_cmp (x, m) != MP_LT) { + if ((res = s_mp_sub (x, m, x)) != MP_OKAY) { + goto CLEANUP; + } + } + +CLEANUP: + mp_clear (&q); + + return res; +} +#endif diff --git a/libtommath/bn_mp_reduce_2k.c b/libtommath/bn_mp_reduce_2k.c new file mode 100644 index 0000000..a5a9c74 --- /dev/null +++ b/libtommath/bn_mp_reduce_2k.c @@ -0,0 +1,58 @@ +#include +#ifdef BN_MP_REDUCE_2K_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduces a modulo n where n is of the form 2**p - d */ +int +mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) +{ + mp_int q; + int p, res; + + if ((res = mp_init(&q)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(n); +top: + /* q = a/2**p, a = a mod 2**p */ + if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { + goto ERR; + } + + if (d != 1) { + /* q = q * d */ + if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) { + goto ERR; + } + } + + /* a = a + q */ + if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { + goto ERR; + } + + if (mp_cmp_mag(a, n) != MP_LT) { + s_mp_sub(a, n, a); + goto top; + } + +ERR: + mp_clear(&q); + return res; +} + +#endif diff --git a/libtommath/bn_mp_reduce_2k_l.c b/libtommath/bn_mp_reduce_2k_l.c new file mode 100644 index 0000000..1d7e1f0 --- /dev/null +++ b/libtommath/bn_mp_reduce_2k_l.c @@ -0,0 +1,58 @@ +#include +#ifdef BN_MP_REDUCE_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduces a modulo n where n is of the form 2**p - d + This differs from reduce_2k since "d" can be larger + than a single digit. +*/ +int mp_reduce_2k_l(mp_int *a, mp_int *n, mp_int *d) +{ + mp_int q; + int p, res; + + if ((res = mp_init(&q)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(n); +top: + /* q = a/2**p, a = a mod 2**p */ + if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { + goto ERR; + } + + /* q = q * d */ + if ((res = mp_mul(&q, d, &q)) != MP_OKAY) { + goto ERR; + } + + /* a = a + q */ + if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { + goto ERR; + } + + if (mp_cmp_mag(a, n) != MP_LT) { + s_mp_sub(a, n, a); + goto top; + } + +ERR: + mp_clear(&q); + return res; +} + +#endif diff --git a/libtommath/bn_mp_reduce_2k_setup.c b/libtommath/bn_mp_reduce_2k_setup.c new file mode 100644 index 0000000..5e1fb6e --- /dev/null +++ b/libtommath/bn_mp_reduce_2k_setup.c @@ -0,0 +1,44 @@ +#include +#ifdef BN_MP_REDUCE_2K_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines the setup value */ +int +mp_reduce_2k_setup(mp_int *a, mp_digit *d) +{ + int res, p; + mp_int tmp; + + if ((res = mp_init(&tmp)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(a); + if ((res = mp_2expt(&tmp, p)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + + if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + + *d = tmp.dp[0]; + mp_clear(&tmp); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_reduce_2k_setup_l.c b/libtommath/bn_mp_reduce_2k_setup_l.c new file mode 100644 index 0000000..810a456 --- /dev/null +++ b/libtommath/bn_mp_reduce_2k_setup_l.c @@ -0,0 +1,40 @@ +#include +#ifdef BN_MP_REDUCE_2K_SETUP_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines the setup value */ +int mp_reduce_2k_setup_l(mp_int *a, mp_int *d) +{ + int res; + mp_int tmp; + + if ((res = mp_init(&tmp)) != MP_OKAY) { + return res; + } + + if ((res = mp_2expt(&tmp, mp_count_bits(a))) != MP_OKAY) { + goto ERR; + } + + if ((res = s_mp_sub(&tmp, a, d)) != MP_OKAY) { + goto ERR; + } + +ERR: + mp_clear(&tmp); + return res; +} +#endif diff --git a/libtommath/bn_mp_reduce_is_2k.c b/libtommath/bn_mp_reduce_is_2k.c new file mode 100644 index 0000000..fc81397 --- /dev/null +++ b/libtommath/bn_mp_reduce_is_2k.c @@ -0,0 +1,48 @@ +#include +#ifdef BN_MP_REDUCE_IS_2K_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if mp_reduce_2k can be used */ +int mp_reduce_is_2k(mp_int *a) +{ + int ix, iy, iw; + mp_digit iz; + + if (a->used == 0) { + return 0; + } else if (a->used == 1) { + return 1; + } else if (a->used > 1) { + iy = mp_count_bits(a); + iz = 1; + iw = 1; + + /* Test every bit from the second digit up, must be 1 */ + for (ix = DIGIT_BIT; ix < iy; ix++) { + if ((a->dp[iw] & iz) == 0) { + return 0; + } + iz <<= 1; + if (iz > (mp_digit)MP_MASK) { + ++iw; + iz = 1; + } + } + } + return 1; +} + +#endif diff --git a/libtommath/bn_mp_reduce_is_2k_l.c b/libtommath/bn_mp_reduce_is_2k_l.c new file mode 100644 index 0000000..ceba0ed --- /dev/null +++ b/libtommath/bn_mp_reduce_is_2k_l.c @@ -0,0 +1,40 @@ +#include +#ifdef BN_MP_REDUCE_IS_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if reduce_2k_l can be used */ +int mp_reduce_is_2k_l(mp_int *a) +{ + int ix, iy; + + if (a->used == 0) { + return MP_NO; + } else if (a->used == 1) { + return MP_YES; + } else if (a->used > 1) { + /* if more than half of the digits are -1 we're sold */ + for (iy = ix = 0; ix < a->used; ix++) { + if (a->dp[ix] == MP_MASK) { + ++iy; + } + } + return (iy >= (a->used/2)) ? MP_YES : MP_NO; + + } + return MP_NO; +} + +#endif diff --git a/libtommath/bn_mp_reduce_setup.c b/libtommath/bn_mp_reduce_setup.c new file mode 100644 index 0000000..99f158a --- /dev/null +++ b/libtommath/bn_mp_reduce_setup.c @@ -0,0 +1,30 @@ +#include +#ifdef BN_MP_REDUCE_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* pre-calculate the value required for Barrett reduction + * For a given modulus "b" it calulates the value required in "a" + */ +int mp_reduce_setup (mp_int * a, mp_int * b) +{ + int res; + + if ((res = mp_2expt (a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) { + return res; + } + return mp_div (a, b, a, NULL); +} +#endif diff --git a/libtommath/bn_mp_rshd.c b/libtommath/bn_mp_rshd.c new file mode 100644 index 0000000..913dda6 --- /dev/null +++ b/libtommath/bn_mp_rshd.c @@ -0,0 +1,68 @@ +#include +#ifdef BN_MP_RSHD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shift right a certain amount of digits */ +void mp_rshd (mp_int * a, int b) +{ + int x; + + /* if b <= 0 then ignore it */ + if (b <= 0) { + return; + } + + /* if b > used then simply zero it and return */ + if (a->used <= b) { + mp_zero (a); + return; + } + + { + register mp_digit *bottom, *top; + + /* shift the digits down */ + + /* bottom */ + bottom = a->dp; + + /* top [offset into digits] */ + top = a->dp + b; + + /* this is implemented as a sliding window where + * the window is b-digits long and digits from + * the top of the window are copied to the bottom + * + * e.g. + + b-2 | b-1 | b0 | b1 | b2 | ... | bb | ----> + /\ | ----> + \-------------------/ ----> + */ + for (x = 0; x < (a->used - b); x++) { + *bottom++ = *top++; + } + + /* zero the top digits */ + for (; x < a->used; x++) { + *bottom++ = 0; + } + } + + /* remove excess digits */ + a->used -= b; +} +#endif diff --git a/libtommath/bn_mp_set.c b/libtommath/bn_mp_set.c new file mode 100644 index 0000000..078fd5f --- /dev/null +++ b/libtommath/bn_mp_set.c @@ -0,0 +1,25 @@ +#include +#ifdef BN_MP_SET_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* set to a digit */ +void mp_set (mp_int * a, mp_digit b) +{ + mp_zero (a); + a->dp[0] = b & MP_MASK; + a->used = (a->dp[0] != 0) ? 1 : 0; +} +#endif diff --git a/libtommath/bn_mp_set_int.c b/libtommath/bn_mp_set_int.c new file mode 100644 index 0000000..bd47136 --- /dev/null +++ b/libtommath/bn_mp_set_int.c @@ -0,0 +1,44 @@ +#include +#ifdef BN_MP_SET_INT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* set a 32-bit const */ +int mp_set_int (mp_int * a, unsigned long b) +{ + int x, res; + + mp_zero (a); + + /* set four bits at a time */ + for (x = 0; x < 8; x++) { + /* shift the number up four bits */ + if ((res = mp_mul_2d (a, 4, a)) != MP_OKAY) { + return res; + } + + /* OR in the top four bits of the source */ + a->dp[0] |= (b >> 28) & 15; + + /* shift the source up to the next four bits */ + b <<= 4; + + /* ensure that digits are not clamped off */ + a->used += 1; + } + mp_clamp (a); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_shrink.c b/libtommath/bn_mp_shrink.c new file mode 100644 index 0000000..b31f9d2 --- /dev/null +++ b/libtommath/bn_mp_shrink.c @@ -0,0 +1,31 @@ +#include +#ifdef BN_MP_SHRINK_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shrink a bignum */ +int mp_shrink (mp_int * a) +{ + mp_digit *tmp; + if (a->alloc != a->used && a->used > 0) { + if ((tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * a->used)) == NULL) { + return MP_MEM; + } + a->dp = tmp; + a->alloc = a->used; + } + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_signed_bin_size.c b/libtommath/bn_mp_signed_bin_size.c new file mode 100644 index 0000000..30048cb --- /dev/null +++ b/libtommath/bn_mp_signed_bin_size.c @@ -0,0 +1,23 @@ +#include +#ifdef BN_MP_SIGNED_BIN_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* get the size for an signed equivalent */ +int mp_signed_bin_size (mp_int * a) +{ + return 1 + mp_unsigned_bin_size (a); +} +#endif diff --git a/libtommath/bn_mp_sqr.c b/libtommath/bn_mp_sqr.c new file mode 100644 index 0000000..b1fdb57 --- /dev/null +++ b/libtommath/bn_mp_sqr.c @@ -0,0 +1,54 @@ +#include +#ifdef BN_MP_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes b = a*a */ +int +mp_sqr (mp_int * a, mp_int * b) +{ + int res; + +#ifdef BN_MP_TOOM_SQR_C + /* use Toom-Cook? */ + if (a->used >= TOOM_SQR_CUTOFF) { + res = mp_toom_sqr(a, b); + /* Karatsuba? */ + } else +#endif +#ifdef BN_MP_KARATSUBA_SQR_C +if (a->used >= KARATSUBA_SQR_CUTOFF) { + res = mp_karatsuba_sqr (a, b); + } else +#endif + { +#ifdef BN_FAST_S_MP_SQR_C + /* can we use the fast comba multiplier? */ + if ((a->used * 2 + 1) < MP_WARRAY && + a->used < + (1 << (sizeof(mp_word) * CHAR_BIT - 2*DIGIT_BIT - 1))) { + res = fast_s_mp_sqr (a, b); + } else +#endif +#ifdef BN_S_MP_SQR_C + res = s_mp_sqr (a, b); +#else + res = MP_VAL; +#endif + } + b->sign = MP_ZPOS; + return res; +} +#endif diff --git a/libtommath/bn_mp_sqrmod.c b/libtommath/bn_mp_sqrmod.c new file mode 100644 index 0000000..1923be4 --- /dev/null +++ b/libtommath/bn_mp_sqrmod.c @@ -0,0 +1,37 @@ +#include +#ifdef BN_MP_SQRMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* c = a * a (mod b) */ +int +mp_sqrmod (mp_int * a, mp_int * b, mp_int * c) +{ + int res; + mp_int t; + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_sqr (a, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + res = mp_mod (&t, b, c); + mp_clear (&t); + return res; +} +#endif diff --git a/libtommath/bn_mp_sqrt.c b/libtommath/bn_mp_sqrt.c new file mode 100644 index 0000000..76cec87 --- /dev/null +++ b/libtommath/bn_mp_sqrt.c @@ -0,0 +1,77 @@ +#include +#ifdef BN_MP_SQRT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* this function is less generic than mp_n_root, simpler and faster */ +int mp_sqrt(mp_int *arg, mp_int *ret) +{ + int res; + mp_int t1,t2; + + /* must be positive */ + if (arg->sign == MP_NEG) { + return MP_VAL; + } + + /* easy out */ + if (mp_iszero(arg) == MP_YES) { + mp_zero(ret); + return MP_OKAY; + } + + if ((res = mp_init_copy(&t1, arg)) != MP_OKAY) { + return res; + } + + if ((res = mp_init(&t2)) != MP_OKAY) { + goto E2; + } + + /* First approx. (not very bad for large arg) */ + mp_rshd (&t1,t1.used/2); + + /* t1 > 0 */ + if ((res = mp_div(arg,&t1,&t2,NULL)) != MP_OKAY) { + goto E1; + } + if ((res = mp_add(&t1,&t2,&t1)) != MP_OKAY) { + goto E1; + } + if ((res = mp_div_2(&t1,&t1)) != MP_OKAY) { + goto E1; + } + /* And now t1 > sqrt(arg) */ + do { + if ((res = mp_div(arg,&t1,&t2,NULL)) != MP_OKAY) { + goto E1; + } + if ((res = mp_add(&t1,&t2,&t1)) != MP_OKAY) { + goto E1; + } + if ((res = mp_div_2(&t1,&t1)) != MP_OKAY) { + goto E1; + } + /* t1 >= sqrt(arg) >= t2 at this point */ + } while (mp_cmp_mag(&t1,&t2) == MP_GT); + + mp_exch(&t1,ret); + +E1: mp_clear(&t2); +E2: mp_clear(&t1); + return res; +} + +#endif diff --git a/libtommath/bn_mp_sub.c b/libtommath/bn_mp_sub.c new file mode 100644 index 0000000..97495f4 --- /dev/null +++ b/libtommath/bn_mp_sub.c @@ -0,0 +1,55 @@ +#include +#ifdef BN_MP_SUB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* high level subtraction (handles signs) */ +int +mp_sub (mp_int * a, mp_int * b, mp_int * c) +{ + int sa, sb, res; + + sa = a->sign; + sb = b->sign; + + if (sa != sb) { + /* subtract a negative from a positive, OR */ + /* subtract a positive from a negative. */ + /* In either case, ADD their magnitudes, */ + /* and use the sign of the first number. */ + c->sign = sa; + res = s_mp_add (a, b, c); + } else { + /* subtract a positive from a positive, OR */ + /* subtract a negative from a negative. */ + /* First, take the difference between their */ + /* magnitudes, then... */ + if (mp_cmp_mag (a, b) != MP_LT) { + /* Copy the sign from the first */ + c->sign = sa; + /* The first has a larger or equal magnitude */ + res = s_mp_sub (a, b, c); + } else { + /* The result has the *opposite* sign from */ + /* the first number. */ + c->sign = (sa == MP_ZPOS) ? MP_NEG : MP_ZPOS; + /* The second has a larger magnitude */ + res = s_mp_sub (b, a, c); + } + } + return res; +} + +#endif diff --git a/libtommath/bn_mp_sub_d.c b/libtommath/bn_mp_sub_d.c new file mode 100644 index 0000000..4923dde --- /dev/null +++ b/libtommath/bn_mp_sub_d.c @@ -0,0 +1,85 @@ +#include +#ifdef BN_MP_SUB_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* single digit subtraction */ +int +mp_sub_d (mp_int * a, mp_digit b, mp_int * c) +{ + mp_digit *tmpa, *tmpc, mu; + int res, ix, oldused; + + /* grow c as required */ + if (c->alloc < a->used + 1) { + if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) { + return res; + } + } + + /* if a is negative just do an unsigned + * addition [with fudged signs] + */ + if (a->sign == MP_NEG) { + a->sign = MP_ZPOS; + res = mp_add_d(a, b, c); + a->sign = c->sign = MP_NEG; + return res; + } + + /* setup regs */ + oldused = c->used; + tmpa = a->dp; + tmpc = c->dp; + + /* if a <= b simply fix the single digit */ + if ((a->used == 1 && a->dp[0] <= b) || a->used == 0) { + if (a->used == 1) { + *tmpc++ = b - *tmpa; + } else { + *tmpc++ = b; + } + ix = 1; + + /* negative/1digit */ + c->sign = MP_NEG; + c->used = 1; + } else { + /* positive/size */ + c->sign = MP_ZPOS; + c->used = a->used; + + /* subtract first digit */ + *tmpc = *tmpa++ - b; + mu = *tmpc >> (sizeof(mp_digit) * CHAR_BIT - 1); + *tmpc++ &= MP_MASK; + + /* handle rest of the digits */ + for (ix = 1; ix < a->used; ix++) { + *tmpc = *tmpa++ - mu; + mu = *tmpc >> (sizeof(mp_digit) * CHAR_BIT - 1); + *tmpc++ &= MP_MASK; + } + } + + /* zero excess digits */ + while (ix++ < oldused) { + *tmpc++ = 0; + } + mp_clamp(c); + return MP_OKAY; +} + +#endif diff --git a/libtommath/bn_mp_submod.c b/libtommath/bn_mp_submod.c new file mode 100644 index 0000000..b999c85 --- /dev/null +++ b/libtommath/bn_mp_submod.c @@ -0,0 +1,38 @@ +#include +#ifdef BN_MP_SUBMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* d = a - b (mod c) */ +int +mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + int res; + mp_int t; + + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_sub (a, b, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + res = mp_mod (&t, c, d); + mp_clear (&t); + return res; +} +#endif diff --git a/libtommath/bn_mp_to_signed_bin.c b/libtommath/bn_mp_to_signed_bin.c new file mode 100644 index 0000000..0e40d0f --- /dev/null +++ b/libtommath/bn_mp_to_signed_bin.c @@ -0,0 +1,30 @@ +#include +#ifdef BN_MP_TO_SIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in signed [big endian] format */ +int +mp_to_signed_bin (mp_int * a, unsigned char *b) +{ + int res; + + if ((res = mp_to_unsigned_bin (a, b + 1)) != MP_OKAY) { + return res; + } + b[0] = (unsigned char) ((a->sign == MP_ZPOS) ? 0 : 1); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_to_signed_bin_n.c b/libtommath/bn_mp_to_signed_bin_n.c new file mode 100644 index 0000000..0f765ee --- /dev/null +++ b/libtommath/bn_mp_to_signed_bin_n.c @@ -0,0 +1,27 @@ +#include +#ifdef BN_MP_TO_SIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in signed [big endian] format */ +int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_signed_bin_size(a)) { + return MP_VAL; + } + *outlen = mp_signed_bin_size(a); + return mp_to_signed_bin(a, b); +} +#endif diff --git a/libtommath/bn_mp_to_unsigned_bin.c b/libtommath/bn_mp_to_unsigned_bin.c new file mode 100644 index 0000000..763e346 --- /dev/null +++ b/libtommath/bn_mp_to_unsigned_bin.c @@ -0,0 +1,45 @@ +#include +#ifdef BN_MP_TO_UNSIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in unsigned [big endian] format */ +int +mp_to_unsigned_bin (mp_int * a, unsigned char *b) +{ + int x, res; + mp_int t; + + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + x = 0; + while (mp_iszero (&t) == 0) { +#ifndef MP_8BIT + b[x++] = (unsigned char) (t.dp[0] & 255); +#else + b[x++] = (unsigned char) (t.dp[0] | ((t.dp[1] & 0x01) << 7)); +#endif + if ((res = mp_div_2d (&t, 8, &t, NULL)) != MP_OKAY) { + mp_clear (&t); + return res; + } + } + bn_reverse (b, x); + mp_clear (&t); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_to_unsigned_bin_n.c b/libtommath/bn_mp_to_unsigned_bin_n.c new file mode 100644 index 0000000..d0256b4 --- /dev/null +++ b/libtommath/bn_mp_to_unsigned_bin_n.c @@ -0,0 +1,27 @@ +#include +#ifdef BN_MP_TO_UNSIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in unsigned [big endian] format */ +int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_unsigned_bin_size(a)) { + return MP_VAL; + } + *outlen = mp_unsigned_bin_size(a); + return mp_to_unsigned_bin(a, b); +} +#endif diff --git a/libtommath/bn_mp_toom_mul.c b/libtommath/bn_mp_toom_mul.c new file mode 100644 index 0000000..2d66779 --- /dev/null +++ b/libtommath/bn_mp_toom_mul.c @@ -0,0 +1,279 @@ +#include +#ifdef BN_MP_TOOM_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* multiplication using the Toom-Cook 3-way algorithm + * + * Much more complicated than Karatsuba but has a lower asymptotic running time of + * O(N**1.464). This algorithm is only particularly useful on VERY large + * inputs (we're talking 1000s of digits here...). +*/ +int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) +{ + mp_int w0, w1, w2, w3, w4, tmp1, tmp2, a0, a1, a2, b0, b1, b2; + int res, B; + + /* init temps */ + if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, + &a0, &a1, &a2, &b0, &b1, + &b2, &tmp1, &tmp2, NULL)) != MP_OKAY) { + return res; + } + + /* B */ + B = MIN(a->used, b->used) / 3; + + /* a = a2 * B**2 + a1 * B + a0 */ + if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_copy(a, &a1)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&a1, B); + mp_mod_2d(&a1, DIGIT_BIT * B, &a1); + + if ((res = mp_copy(a, &a2)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&a2, B*2); + + /* b = b2 * B**2 + b1 * B + b0 */ + if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_copy(b, &b1)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&b1, B); + mp_mod_2d(&b1, DIGIT_BIT * B, &b1); + + if ((res = mp_copy(b, &b2)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&b2, B*2); + + /* w0 = a0*b0 */ + if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) { + goto ERR; + } + + /* w4 = a2 * b2 */ + if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) { + goto ERR; + } + + /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */ + if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) { + goto ERR; + } + + /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */ + if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) { + goto ERR; + } + + + /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */ + if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&b2, &b1, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) { + goto ERR; + } + + /* now solve the matrix + + 0 0 0 0 1 + 1 2 4 8 16 + 1 1 1 1 1 + 16 8 4 2 1 + 1 0 0 0 0 + + using 12 subtractions, 4 shifts, + 2 small divisions and 1 small multiplication + */ + + /* r1 - r4 */ + if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r0 */ + if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1/2 */ + if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3/2 */ + if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) { + goto ERR; + } + /* r2 - r0 - r4 */ + if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) { + goto ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1 - 8r0 */ + if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - 8r4 */ + if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) { + goto ERR; + } + /* 3r2 - r1 - r3 */ + if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) { + goto ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1/3 */ + if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) { + goto ERR; + } + /* r3/3 */ + if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) { + goto ERR; + } + + /* at this point shift W[n] by B*n */ + if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) { + goto ERR; + } + +ERR: + mp_clear_multi(&w0, &w1, &w2, &w3, &w4, + &a0, &a1, &a2, &b0, &b1, + &b2, &tmp1, &tmp2, NULL); + return res; +} + +#endif diff --git a/libtommath/bn_mp_toom_sqr.c b/libtommath/bn_mp_toom_sqr.c new file mode 100644 index 0000000..8c46fea --- /dev/null +++ b/libtommath/bn_mp_toom_sqr.c @@ -0,0 +1,222 @@ +#include +#ifdef BN_MP_TOOM_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* squaring using Toom-Cook 3-way algorithm */ +int +mp_toom_sqr(mp_int *a, mp_int *b) +{ + mp_int w0, w1, w2, w3, w4, tmp1, a0, a1, a2; + int res, B; + + /* init temps */ + if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL)) != MP_OKAY) { + return res; + } + + /* B */ + B = a->used / 3; + + /* a = a2 * B**2 + a1 * B + a0 */ + if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_copy(a, &a1)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&a1, B); + mp_mod_2d(&a1, DIGIT_BIT * B, &a1); + + if ((res = mp_copy(a, &a2)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&a2, B*2); + + /* w0 = a0*a0 */ + if ((res = mp_sqr(&a0, &w0)) != MP_OKAY) { + goto ERR; + } + + /* w4 = a2 * a2 */ + if ((res = mp_sqr(&a2, &w4)) != MP_OKAY) { + goto ERR; + } + + /* w1 = (a2 + 2(a1 + 2a0))**2 */ + if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_sqr(&tmp1, &w1)) != MP_OKAY) { + goto ERR; + } + + /* w3 = (a0 + 2(a1 + 2a2))**2 */ + if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_sqr(&tmp1, &w3)) != MP_OKAY) { + goto ERR; + } + + + /* w2 = (a2 + a1 + a0)**2 */ + if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sqr(&tmp1, &w2)) != MP_OKAY) { + goto ERR; + } + + /* now solve the matrix + + 0 0 0 0 1 + 1 2 4 8 16 + 1 1 1 1 1 + 16 8 4 2 1 + 1 0 0 0 0 + + using 12 subtractions, 4 shifts, 2 small divisions and 1 small multiplication. + */ + + /* r1 - r4 */ + if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r0 */ + if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1/2 */ + if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3/2 */ + if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) { + goto ERR; + } + /* r2 - r0 - r4 */ + if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) { + goto ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1 - 8r0 */ + if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - 8r4 */ + if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) { + goto ERR; + } + /* 3r2 - r1 - r3 */ + if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) { + goto ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1/3 */ + if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) { + goto ERR; + } + /* r3/3 */ + if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) { + goto ERR; + } + + /* at this point shift W[n] by B*n */ + if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_add(&w0, &w1, b)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, b, b)) != MP_OKAY) { + goto ERR; + } + +ERR: + mp_clear_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL); + return res; +} + +#endif diff --git a/libtommath/bn_mp_toradix.c b/libtommath/bn_mp_toradix.c new file mode 100644 index 0000000..a206d5e --- /dev/null +++ b/libtommath/bn_mp_toradix.c @@ -0,0 +1,71 @@ +#include +#ifdef BN_MP_TORADIX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* stores a bignum as a ASCII string in a given radix (2..64) */ +int mp_toradix (mp_int * a, char *str, int radix) +{ + int res, digs; + mp_int t; + mp_digit d; + char *_s = str; + + /* check range of the radix */ + if (radix < 2 || radix > 64) { + return MP_VAL; + } + + /* quick out if its zero */ + if (mp_iszero(a) == 1) { + *str++ = '0'; + *str = '\0'; + return MP_OKAY; + } + + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + /* if it is negative output a - */ + if (t.sign == MP_NEG) { + ++_s; + *str++ = '-'; + t.sign = MP_ZPOS; + } + + digs = 0; + while (mp_iszero (&t) == 0) { + if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { + mp_clear (&t); + return res; + } + *str++ = mp_s_rmap[d]; + ++digs; + } + + /* reverse the digits of the string. In this case _s points + * to the first digit [exluding the sign] of the number] + */ + bn_reverse ((unsigned char *)_s, digs); + + /* append a NULL so the string is properly terminated */ + *str = '\0'; + + mp_clear (&t); + return MP_OKAY; +} + +#endif diff --git a/libtommath/bn_mp_toradix_n.c b/libtommath/bn_mp_toradix_n.c new file mode 100644 index 0000000..7d43558 --- /dev/null +++ b/libtommath/bn_mp_toradix_n.c @@ -0,0 +1,85 @@ +#include +#ifdef BN_MP_TORADIX_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* stores a bignum as a ASCII string in a given radix (2..64) + * + * Stores upto maxlen-1 chars and always a NULL byte + */ +int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) +{ + int res, digs; + mp_int t; + mp_digit d; + char *_s = str; + + /* check range of the maxlen, radix */ + if (maxlen < 3 || radix < 2 || radix > 64) { + return MP_VAL; + } + + /* quick out if its zero */ + if (mp_iszero(a) == 1) { + *str++ = '0'; + *str = '\0'; + return MP_OKAY; + } + + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + /* if it is negative output a - */ + if (t.sign == MP_NEG) { + /* we have to reverse our digits later... but not the - sign!! */ + ++_s; + + /* store the flag and mark the number as positive */ + *str++ = '-'; + t.sign = MP_ZPOS; + + /* subtract a char */ + --maxlen; + } + + digs = 0; + while (mp_iszero (&t) == 0) { + if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { + mp_clear (&t); + return res; + } + *str++ = mp_s_rmap[d]; + ++digs; + + if (--maxlen == 1) { + /* no more room */ + break; + } + } + + /* reverse the digits of the string. In this case _s points + * to the first digit [exluding the sign] of the number] + */ + bn_reverse ((unsigned char *)_s, digs); + + /* append a NULL so the string is properly terminated */ + *str = '\0'; + + mp_clear (&t); + return MP_OKAY; +} + +#endif diff --git a/libtommath/bn_mp_unsigned_bin_size.c b/libtommath/bn_mp_unsigned_bin_size.c new file mode 100644 index 0000000..80da415 --- /dev/null +++ b/libtommath/bn_mp_unsigned_bin_size.c @@ -0,0 +1,25 @@ +#include +#ifdef BN_MP_UNSIGNED_BIN_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* get the size for an unsigned equivalent */ +int +mp_unsigned_bin_size (mp_int * a) +{ + int size = mp_count_bits (a); + return (size / 8 + ((size & 7) != 0 ? 1 : 0)); +} +#endif diff --git a/libtommath/bn_mp_xor.c b/libtommath/bn_mp_xor.c new file mode 100644 index 0000000..192aacc --- /dev/null +++ b/libtommath/bn_mp_xor.c @@ -0,0 +1,47 @@ +#include +#ifdef BN_MP_XOR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* XOR two ints together */ +int +mp_xor (mp_int * a, mp_int * b, mp_int * c) +{ + int res, ix, px; + mp_int t, *x; + + if (a->used > b->used) { + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + px = b->used; + x = b; + } else { + if ((res = mp_init_copy (&t, b)) != MP_OKAY) { + return res; + } + px = a->used; + x = a; + } + + for (ix = 0; ix < px; ix++) { + + } + mp_clamp (&t); + mp_exch (c, &t); + mp_clear (&t); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_mp_zero.c b/libtommath/bn_mp_zero.c new file mode 100644 index 0000000..0097598 --- /dev/null +++ b/libtommath/bn_mp_zero.c @@ -0,0 +1,26 @@ +#include +#ifdef BN_MP_ZERO_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* set to zero */ +void +mp_zero (mp_int * a) +{ + a->sign = MP_ZPOS; + a->used = 0; + memset (a->dp, 0, sizeof (mp_digit) * a->alloc); +} +#endif diff --git a/libtommath/bn_prime_tab.c b/libtommath/bn_prime_tab.c new file mode 100644 index 0000000..14306c2 --- /dev/null +++ b/libtommath/bn_prime_tab.c @@ -0,0 +1,57 @@ +#include +#ifdef BN_PRIME_TAB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +const mp_digit ltm_prime_tab[] = { + 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, + 0x0017, 0x001D, 0x001F, 0x0025, 0x0029, 0x002B, 0x002F, 0x0035, + 0x003B, 0x003D, 0x0043, 0x0047, 0x0049, 0x004F, 0x0053, 0x0059, + 0x0061, 0x0065, 0x0067, 0x006B, 0x006D, 0x0071, 0x007F, +#ifndef MP_8BIT + 0x0083, + 0x0089, 0x008B, 0x0095, 0x0097, 0x009D, 0x00A3, 0x00A7, 0x00AD, + 0x00B3, 0x00B5, 0x00BF, 0x00C1, 0x00C5, 0x00C7, 0x00D3, 0x00DF, + 0x00E3, 0x00E5, 0x00E9, 0x00EF, 0x00F1, 0x00FB, 0x0101, 0x0107, + 0x010D, 0x010F, 0x0115, 0x0119, 0x011B, 0x0125, 0x0133, 0x0137, + + 0x0139, 0x013D, 0x014B, 0x0151, 0x015B, 0x015D, 0x0161, 0x0167, + 0x016F, 0x0175, 0x017B, 0x017F, 0x0185, 0x018D, 0x0191, 0x0199, + 0x01A3, 0x01A5, 0x01AF, 0x01B1, 0x01B7, 0x01BB, 0x01C1, 0x01C9, + 0x01CD, 0x01CF, 0x01D3, 0x01DF, 0x01E7, 0x01EB, 0x01F3, 0x01F7, + 0x01FD, 0x0209, 0x020B, 0x021D, 0x0223, 0x022D, 0x0233, 0x0239, + 0x023B, 0x0241, 0x024B, 0x0251, 0x0257, 0x0259, 0x025F, 0x0265, + 0x0269, 0x026B, 0x0277, 0x0281, 0x0283, 0x0287, 0x028D, 0x0293, + 0x0295, 0x02A1, 0x02A5, 0x02AB, 0x02B3, 0x02BD, 0x02C5, 0x02CF, + + 0x02D7, 0x02DD, 0x02E3, 0x02E7, 0x02EF, 0x02F5, 0x02F9, 0x0301, + 0x0305, 0x0313, 0x031D, 0x0329, 0x032B, 0x0335, 0x0337, 0x033B, + 0x033D, 0x0347, 0x0355, 0x0359, 0x035B, 0x035F, 0x036D, 0x0371, + 0x0373, 0x0377, 0x038B, 0x038F, 0x0397, 0x03A1, 0x03A9, 0x03AD, + 0x03B3, 0x03B9, 0x03C7, 0x03CB, 0x03D1, 0x03D7, 0x03DF, 0x03E5, + 0x03F1, 0x03F5, 0x03FB, 0x03FD, 0x0407, 0x0409, 0x040F, 0x0419, + 0x041B, 0x0425, 0x0427, 0x042D, 0x043F, 0x0443, 0x0445, 0x0449, + 0x044F, 0x0455, 0x045D, 0x0463, 0x0469, 0x047F, 0x0481, 0x048B, + + 0x0493, 0x049D, 0x04A3, 0x04A9, 0x04B1, 0x04BD, 0x04C1, 0x04C7, + 0x04CD, 0x04CF, 0x04D5, 0x04E1, 0x04EB, 0x04FD, 0x04FF, 0x0503, + 0x0509, 0x050B, 0x0511, 0x0515, 0x0517, 0x051B, 0x0527, 0x0529, + 0x052F, 0x0551, 0x0557, 0x055D, 0x0565, 0x0577, 0x0581, 0x058F, + 0x0593, 0x0595, 0x0599, 0x059F, 0x05A7, 0x05AB, 0x05AD, 0x05B3, + 0x05BF, 0x05C9, 0x05CB, 0x05CF, 0x05D1, 0x05D5, 0x05DB, 0x05E7, + 0x05F3, 0x05FB, 0x0607, 0x060D, 0x0611, 0x0617, 0x061F, 0x0623, + 0x062B, 0x062F, 0x063D, 0x0641, 0x0647, 0x0649, 0x064D, 0x0653 +#endif +}; +#endif diff --git a/libtommath/bn_reverse.c b/libtommath/bn_reverse.c new file mode 100644 index 0000000..851a6e8 --- /dev/null +++ b/libtommath/bn_reverse.c @@ -0,0 +1,35 @@ +#include +#ifdef BN_REVERSE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reverse an array, used for radix code */ +void +bn_reverse (unsigned char *s, int len) +{ + int ix, iy; + unsigned char t; + + ix = 0; + iy = len - 1; + while (ix < iy) { + t = s[ix]; + s[ix] = s[iy]; + s[iy] = t; + ++ix; + --iy; + } +} +#endif diff --git a/libtommath/bn_s_mp_add.c b/libtommath/bn_s_mp_add.c new file mode 100644 index 0000000..2b378ae --- /dev/null +++ b/libtommath/bn_s_mp_add.c @@ -0,0 +1,105 @@ +#include +#ifdef BN_S_MP_ADD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* low level addition, based on HAC pp.594, Algorithm 14.7 */ +int +s_mp_add (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int *x; + int olduse, res, min, max; + + /* find sizes, we let |a| <= |b| which means we have to sort + * them. "x" will point to the input with the most digits + */ + if (a->used > b->used) { + min = b->used; + max = a->used; + x = a; + } else { + min = a->used; + max = b->used; + x = b; + } + + /* init result */ + if (c->alloc < max + 1) { + if ((res = mp_grow (c, max + 1)) != MP_OKAY) { + return res; + } + } + + /* get old used digit count and set new one */ + olduse = c->used; + c->used = max + 1; + + { + register mp_digit u, *tmpa, *tmpb, *tmpc; + register int i; + + /* alias for digit pointers */ + + /* first input */ + tmpa = a->dp; + + /* second input */ + tmpb = b->dp; + + /* destination */ + tmpc = c->dp; + + /* zero the carry */ + u = 0; + for (i = 0; i < min; i++) { + /* Compute the sum at one digit, T[i] = A[i] + B[i] + U */ + *tmpc = *tmpa++ + *tmpb++ + u; + + /* U = carry bit of T[i] */ + u = *tmpc >> ((mp_digit)DIGIT_BIT); + + /* take away carry bit from T[i] */ + *tmpc++ &= MP_MASK; + } + + /* now copy higher words if any, that is in A+B + * if A or B has more digits add those in + */ + if (min != max) { + for (; i < max; i++) { + /* T[i] = X[i] + U */ + *tmpc = x->dp[i] + u; + + /* U = carry bit of T[i] */ + u = *tmpc >> ((mp_digit)DIGIT_BIT); + + /* take away carry bit from T[i] */ + *tmpc++ &= MP_MASK; + } + } + + /* add carry */ + *tmpc++ = u; + + /* clear digits above oldused */ + for (i = c->used; i < olduse; i++) { + *tmpc++ = 0; + } + } + + mp_clamp (c); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_s_mp_exptmod.c b/libtommath/bn_s_mp_exptmod.c new file mode 100644 index 0000000..01a766f --- /dev/null +++ b/libtommath/bn_s_mp_exptmod.c @@ -0,0 +1,236 @@ +#include +#ifdef BN_S_MP_EXPTMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +#ifdef MP_LOW_MEM + #define TAB_SIZE 32 +#else + #define TAB_SIZE 256 +#endif + +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +{ + mp_int M[TAB_SIZE], res, mu; + mp_digit buf; + int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + + /* find window size */ + x = mp_count_bits (X); + if (x <= 7) { + winsize = 2; + } else if (x <= 36) { + winsize = 3; + } else if (x <= 140) { + winsize = 4; + } else if (x <= 450) { + winsize = 5; + } else if (x <= 1303) { + winsize = 6; + } else if (x <= 3529) { + winsize = 7; + } else { + winsize = 8; + } + +#ifdef MP_LOW_MEM + if (winsize > 5) { + winsize = 5; + } +#endif + + /* init M array */ + /* init first cell */ + if ((err = mp_init(&M[1])) != MP_OKAY) { + return err; + } + + /* now init the second half of the array */ + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + if ((err = mp_init(&M[x])) != MP_OKAY) { + for (y = 1<<(winsize-1); y < x; y++) { + mp_clear (&M[y]); + } + mp_clear(&M[1]); + return err; + } + } + + /* create mu, used for Barrett reduction */ + if ((err = mp_init (&mu)) != MP_OKAY) { + goto LBL_M; + } + if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { + goto LBL_MU; + } + + /* create M table + * + * The M table contains powers of the base, + * e.g. M[x] = G**x mod P + * + * The first half of the table is not + * computed though accept for M[0] and M[1] + */ + if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) { + goto LBL_MU; + } + + /* compute the value at M[1<<(winsize-1)] by squaring + * M[1] (winsize-1) times + */ + if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_MU; + } + + for (x = 0; x < (winsize - 1); x++) { + if ((err = mp_sqr (&M[1 << (winsize - 1)], + &M[1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_MU; + } + if ((err = mp_reduce (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + } + + /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) + * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) + */ + for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) { + if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) { + goto LBL_MU; + } + if ((err = mp_reduce (&M[x], P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + } + + /* setup result */ + if ((err = mp_init (&res)) != MP_OKAY) { + goto LBL_MU; + } + mp_set (&res, 1); + + /* set initial mode and bit cnt */ + mode = 0; + bitcnt = 1; + buf = 0; + digidx = X->used - 1; + bitcpy = 0; + bitbuf = 0; + + for (;;) { + /* grab next digit as required */ + if (--bitcnt == 0) { + /* if digidx == -1 we are out of digits */ + if (digidx == -1) { + break; + } + /* read next digit and reset the bitcnt */ + buf = X->dp[digidx--]; + bitcnt = (int) DIGIT_BIT; + } + + /* grab the next msb from the exponent */ + y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; + buf <<= (mp_digit)1; + + /* if the bit is zero and mode == 0 then we ignore it + * These represent the leading zero bits before the first 1 bit + * in the exponent. Technically this opt is not required but it + * does lower the # of trivial squaring/reductions used + */ + if (mode == 0 && y == 0) { + continue; + } + + /* if the bit is zero and mode == 1 then we square */ + if (mode == 1 && y == 0) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + continue; + } + + /* else we add it to the window */ + bitbuf |= (y << (winsize - ++bitcpy)); + mode = 2; + + if (bitcpy == winsize) { + /* ok window is filled so square as required and multiply */ + /* square first */ + for (x = 0; x < winsize; x++) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* then multiply */ + if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + + /* empty window and reset */ + bitcpy = 0; + bitbuf = 0; + mode = 1; + } + } + + /* if bits remain then square/multiply */ + if (mode == 2 && bitcpy > 0) { + /* square then multiply if the bit is set */ + for (x = 0; x < bitcpy; x++) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + + bitbuf <<= 1; + if ((bitbuf & (1 << winsize)) != 0) { + /* then multiply */ + if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + } + } + } + + mp_exch (&res, Y); + err = MP_OKAY; +LBL_RES:mp_clear (&res); +LBL_MU:mp_clear (&mu); +LBL_M: + mp_clear(&M[1]); + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + mp_clear (&M[x]); + } + return err; +} +#endif diff --git a/libtommath/bn_s_mp_mul_digs.c b/libtommath/bn_s_mp_mul_digs.c new file mode 100644 index 0000000..d9f0a56 --- /dev/null +++ b/libtommath/bn_s_mp_mul_digs.c @@ -0,0 +1,87 @@ +#include +#ifdef BN_S_MP_MUL_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* multiplies |a| * |b| and only computes upto digs digits of result + * HAC pp. 595, Algorithm 14.12 Modified so you can control how + * many digits of output are created. + */ +int +s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +{ + mp_int t; + int res, pa, pb, ix, iy; + mp_digit u; + mp_word r; + mp_digit tmpx, *tmpt, *tmpy; + + /* can we use the fast multiplier? */ + if (((digs) < MP_WARRAY) && + MIN (a->used, b->used) < + (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + return fast_s_mp_mul_digs (a, b, c, digs); + } + + if ((res = mp_init_size (&t, digs)) != MP_OKAY) { + return res; + } + t.used = digs; + + /* compute the digits of the product directly */ + pa = a->used; + for (ix = 0; ix < pa; ix++) { + /* set the carry to zero */ + u = 0; + + /* limit ourselves to making digs digits of output */ + pb = MIN (b->used, digs - ix); + + /* setup some aliases */ + /* copy of the digit from a used within the nested loop */ + tmpx = a->dp[ix]; + + /* an alias for the destination shifted ix places */ + tmpt = t.dp + ix; + + /* an alias for the digits of b */ + tmpy = b->dp; + + /* compute the columns of the output and propagate the carry */ + for (iy = 0; iy < pb; iy++) { + /* compute the column as a mp_word */ + r = ((mp_word)*tmpt) + + ((mp_word)tmpx) * ((mp_word)*tmpy++) + + ((mp_word) u); + + /* the new column is the lower part of the result */ + *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* get the carry word from the result */ + u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); + } + /* set carry if it is placed below digs */ + if (ix + iy < digs) { + *tmpt = u; + } + } + + mp_clamp (&t); + mp_exch (&t, c); + + mp_clear (&t); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_s_mp_mul_high_digs.c b/libtommath/bn_s_mp_mul_high_digs.c new file mode 100644 index 0000000..a060248 --- /dev/null +++ b/libtommath/bn_s_mp_mul_high_digs.c @@ -0,0 +1,77 @@ +#include +#ifdef BN_S_MP_MUL_HIGH_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* multiplies |a| * |b| and does not compute the lower digs digits + * [meant to get the higher part of the product] + */ +int +s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +{ + mp_int t; + int res, pa, pb, ix, iy; + mp_digit u; + mp_word r; + mp_digit tmpx, *tmpt, *tmpy; + + /* can we use the fast multiplier? */ +#ifdef BN_FAST_S_MP_MUL_HIGH_DIGS_C + if (((a->used + b->used + 1) < MP_WARRAY) + && MIN (a->used, b->used) < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + return fast_s_mp_mul_high_digs (a, b, c, digs); + } +#endif + + if ((res = mp_init_size (&t, a->used + b->used + 1)) != MP_OKAY) { + return res; + } + t.used = a->used + b->used + 1; + + pa = a->used; + pb = b->used; + for (ix = 0; ix < pa; ix++) { + /* clear the carry */ + u = 0; + + /* left hand side of A[ix] * B[iy] */ + tmpx = a->dp[ix]; + + /* alias to the address of where the digits will be stored */ + tmpt = &(t.dp[digs]); + + /* alias for where to read the right hand side from */ + tmpy = b->dp + (digs - ix); + + for (iy = digs - ix; iy < pb; iy++) { + /* calculate the double precision result */ + r = ((mp_word)*tmpt) + + ((mp_word)tmpx) * ((mp_word)*tmpy++) + + ((mp_word) u); + + /* get the lower part */ + *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* carry the carry */ + u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); + } + *tmpt = u; + } + mp_clamp (&t); + mp_exch (&t, c); + mp_clear (&t); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_s_mp_sqr.c b/libtommath/bn_s_mp_sqr.c new file mode 100644 index 0000000..4d12804 --- /dev/null +++ b/libtommath/bn_s_mp_sqr.c @@ -0,0 +1,81 @@ +#include +#ifdef BN_S_MP_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ +int +s_mp_sqr (mp_int * a, mp_int * b) +{ + mp_int t; + int res, ix, iy, pa; + mp_word r; + mp_digit u, tmpx, *tmpt; + + pa = a->used; + if ((res = mp_init_size (&t, 2*pa + 1)) != MP_OKAY) { + return res; + } + + /* default used is maximum possible size */ + t.used = 2*pa + 1; + + for (ix = 0; ix < pa; ix++) { + /* first calculate the digit at 2*ix */ + /* calculate double precision result */ + r = ((mp_word) t.dp[2*ix]) + + ((mp_word)a->dp[ix])*((mp_word)a->dp[ix]); + + /* store lower part in result */ + t.dp[ix+ix] = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* get the carry */ + u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); + + /* left hand side of A[ix] * A[iy] */ + tmpx = a->dp[ix]; + + /* alias for where to store the results */ + tmpt = t.dp + (2*ix + 1); + + for (iy = ix + 1; iy < pa; iy++) { + /* first calculate the product */ + r = ((mp_word)tmpx) * ((mp_word)a->dp[iy]); + + /* now calculate the double precision result, note we use + * addition instead of *2 since it's easier to optimize + */ + r = ((mp_word) *tmpt) + r + r + ((mp_word) u); + + /* store lower part */ + *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* get carry */ + u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); + } + /* propagate upwards */ + while (u != ((mp_digit) 0)) { + r = ((mp_word) *tmpt) + ((mp_word) u); + *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); + u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); + } + } + + mp_clamp (&t); + mp_exch (&t, b); + mp_clear (&t); + return MP_OKAY; +} +#endif diff --git a/libtommath/bn_s_mp_sub.c b/libtommath/bn_s_mp_sub.c new file mode 100644 index 0000000..5b7aef9 --- /dev/null +++ b/libtommath/bn_s_mp_sub.c @@ -0,0 +1,85 @@ +#include +#ifdef BN_S_MP_SUB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* low level subtraction (assumes |a| > |b|), HAC pp.595 Algorithm 14.9 */ +int +s_mp_sub (mp_int * a, mp_int * b, mp_int * c) +{ + int olduse, res, min, max; + + /* find sizes */ + min = b->used; + max = a->used; + + /* init result */ + if (c->alloc < max) { + if ((res = mp_grow (c, max)) != MP_OKAY) { + return res; + } + } + olduse = c->used; + c->used = max; + + { + register mp_digit u, *tmpa, *tmpb, *tmpc; + register int i; + + /* alias for digit pointers */ + tmpa = a->dp; + tmpb = b->dp; + tmpc = c->dp; + + /* set carry to zero */ + u = 0; + for (i = 0; i < min; i++) { + /* T[i] = A[i] - B[i] - U */ + *tmpc = *tmpa++ - *tmpb++ - u; + + /* U = carry bit of T[i] + * Note this saves performing an AND operation since + * if a carry does occur it will propagate all the way to the + * MSB. As a result a single shift is enough to get the carry + */ + u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1)); + + /* Clear carry from T[i] */ + *tmpc++ &= MP_MASK; + } + + /* now copy higher words if any, e.g. if A has more digits than B */ + for (; i < max; i++) { + /* T[i] = A[i] - U */ + *tmpc = *tmpa++ - u; + + /* U = carry bit of T[i] */ + u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1)); + + /* Clear carry from T[i] */ + *tmpc++ &= MP_MASK; + } + + /* clear digits above used (since we may not have grown result above) */ + for (i = c->used; i < olduse; i++) { + *tmpc++ = 0; + } + } + + mp_clamp (c); + return MP_OKAY; +} + +#endif diff --git a/libtommath/bncore.c b/libtommath/bncore.c new file mode 100644 index 0000000..cf8a15a --- /dev/null +++ b/libtommath/bncore.c @@ -0,0 +1,31 @@ +#include +#ifdef BNCORE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Known optimal configurations + + CPU /Compiler /MUL CUTOFF/SQR CUTOFF +------------------------------------------------------------- + Intel P4 Northwood /GCC v3.4.1 / 88/ 128/LTM 0.32 ;-) + +*/ + +int KARATSUBA_MUL_CUTOFF = 88, /* Min. number of digits before Karatsuba multiplication is used. */ + KARATSUBA_SQR_CUTOFF = 128, /* Min. number of digits before Karatsuba squaring is used. */ + + TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ + TOOM_SQR_CUTOFF = 400; +#endif diff --git a/libtommath/booker.pl b/libtommath/booker.pl new file mode 100644 index 0000000..5c77e53 --- /dev/null +++ b/libtommath/booker.pl @@ -0,0 +1,262 @@ +#!/bin/perl +# +#Used to prepare the book "tommath.src" for LaTeX by pre-processing it into a .tex file +# +#Essentially you write the "tommath.src" as normal LaTex except where you want code snippets you put +# +#EXAM,file +# +#This preprocessor will then open "file" and insert it as a verbatim copy. +# +#Tom St Denis + +#get graphics type +if (shift =~ /PDF/) { + $graph = ""; +} else { + $graph = ".ps"; +} + +open(IN,"tommath.tex") or die "Can't open destination file"; + +print "Scanning for sections\n"; +$chapter = $section = $subsection = 0; +$x = 0; +while () { + print "."; + if (!(++$x % 80)) { print "\n"; } + #update the headings + if (~($_ =~ /\*/)) { + if ($_ =~ /\\chapter{.+}/) { + ++$chapter; + $section = $subsection = 0; + } elsif ($_ =~ /\\section{.+}/) { + ++$section; + $subsection = 0; + } elsif ($_ =~ /\\subsection{.+}/) { + ++$subsection; + } + } + + if ($_ =~ m/MARK/) { + @m = split(",",$_); + chomp(@m[1]); + $index1{@m[1]} = $chapter; + $index2{@m[1]} = $section; + $index3{@m[1]} = $subsection; + } +} +close(IN); + +open(IN,") { + ++$readline; + ++$srcline; + + if ($_ =~ m/MARK/) { + } elsif ($_ =~ m/EXAM/ || $_ =~ m/LIST/) { + if ($_ =~ m/EXAM/) { + $skipheader = 1; + } else { + $skipheader = 0; + } + + # EXAM,file + chomp($_); + @m = split(",",$_); + open(SRC,"<$m[1]") or die "Error:$srcline:Can't open source file $m[1]"; + + print "$srcline:Inserting $m[1]:"; + + $line = 0; + $tmp = $m[1]; + $tmp =~ s/_/"\\_"/ge; + print OUT "\\vspace{+3mm}\\begin{small}\n\\hspace{-5.1mm}{\\bf File}: $tmp\n\\vspace{-3mm}\n\\begin{alltt}\n"; + $wroteline += 5; + + if ($skipheader == 1) { + # scan till next end of comment, e.g. skip license + while () { + $text[$line++] = $_; + last if ($_ =~ /math\.libtomcrypt\.org/); + } + ; + } + + $inline = 0; + while () { + $text[$line++] = $_; + ++$inline; + chomp($_); + $_ =~ s/\t/" "/ge; + $_ =~ s/{/"^{"/ge; + $_ =~ s/}/"^}"/ge; + $_ =~ s/\\/'\symbol{92}'/ge; + $_ =~ s/\^/"\\"/ge; + + printf OUT ("%03d ", $line); + for ($x = 0; $x < length($_); $x++) { + print OUT chr(vec($_, $x, 8)); + if ($x == 75) { + print OUT "\n "; + ++$wroteline; + } + } + print OUT "\n"; + ++$wroteline; + } + $totlines = $line; + print OUT "\\end{alltt}\n\\end{small}\n"; + close(SRC); + print "$inline lines\n"; + $wroteline += 2; + } elsif ($_ =~ m/@\d+,.+@/) { + # line contains [number,text] + # e.g. @14,for (ix = 0)@ + $txt = $_; + while ($txt =~ m/@\d+,.+@/) { + @m = split("@",$txt); # splits into text, one, two + @parms = split(",",$m[1]); # splits one,two into two elements + + # now search from $parms[0] down for $parms[1] + $found1 = 0; + $found2 = 0; + for ($i = $parms[0]; $i < $totlines && $found1 == 0; $i++) { + if ($text[$i] =~ m/\Q$parms[1]\E/) { + $foundline1 = $i + 1; + $found1 = 1; + } + } + + # now search backwards + for ($i = $parms[0] - 1; $i >= 0 && $found2 == 0; $i--) { + if ($text[$i] =~ m/\Q$parms[1]\E/) { + $foundline2 = $i + 1; + $found2 = 1; + } + } + + # now use the closest match or the first if tied + if ($found1 == 1 && $found2 == 0) { + $found = 1; + $foundline = $foundline1; + } elsif ($found1 == 0 && $found2 == 1) { + $found = 1; + $foundline = $foundline2; + } elsif ($found1 == 1 && $found2 == 1) { + $found = 1; + if (($foundline1 - $parms[0]) <= ($parms[0] - $foundline2)) { + $foundline = $foundline1; + } else { + $foundline = $foundline2; + } + } else { + $found = 0; + } + + # if found replace + if ($found == 1) { + $delta = $parms[0] - $foundline; + print "Found replacement tag for \"$parms[1]\" on line $srcline which refers to line $foundline (delta $delta)\n"; + $_ =~ s/@\Q$m[1]\E@/$foundline/; + } else { + print "ERROR: The tag \"$parms[1]\" on line $srcline was not found in the most recently parsed source!\n"; + } + + # remake the rest of the line + $cnt = @m; + $txt = ""; + for ($i = 2; $i < $cnt; $i++) { + $txt = $txt . $m[$i] . "@"; + } + } + print OUT $_; + ++$wroteline; + } elsif ($_ =~ /~.+~/) { + # line contains a ~text~ pair used to refer to indexing :-) + $txt = $_; + while ($txt =~ /~.+~/) { + @m = split("~", $txt); + + # word is the second position + $word = @m[1]; + $a = $index1{$word}; + $b = $index2{$word}; + $c = $index3{$word}; + + # if chapter (a) is zero it wasn't found + if ($a == 0) { + print "ERROR: the tag \"$word\" on line $srcline was not found previously marked.\n"; + } else { + # format the tag as x, x.y or x.y.z depending on the values + $str = $a; + $str = $str . ".$b" if ($b != 0); + $str = $str . ".$c" if ($c != 0); + + if ($b == 0 && $c == 0) { + # its a chapter + if ($a <= 10) { + if ($a == 1) { + $str = "chapter one"; + } elsif ($a == 2) { + $str = "chapter two"; + } elsif ($a == 3) { + $str = "chapter three"; + } elsif ($a == 4) { + $str = "chapter four"; + } elsif ($a == 5) { + $str = "chapter five"; + } elsif ($a == 6) { + $str = "chapter six"; + } elsif ($a == 7) { + $str = "chapter seven"; + } elsif ($a == 8) { + $str = "chapter eight"; + } elsif ($a == 9) { + $str = "chapter nine"; + } elsif ($a == 2) { + $str = "chapter ten"; + } + } else { + $str = "chapter " . $str; + } + } else { + $str = "section " . $str if ($b != 0 && $c == 0); + $str = "sub-section " . $str if ($b != 0 && $c != 0); + } + + #substitute + $_ =~ s/~\Q$word\E~/$str/; + + print "Found replacement tag for marker \"$word\" on line $srcline which refers to $str\n"; + } + + # remake rest of the line + $cnt = @m; + $txt = ""; + for ($i = 2; $i < $cnt; $i++) { + $txt = $txt . $m[$i] . "~"; + } + } + print OUT $_; + ++$wroteline; + } elsif ($_ =~ m/FIGU/) { + # FIGU,file,caption + chomp($_); + @m = split(",", $_); + print OUT "\\begin{center}\n\\begin{figure}[here]\n\\includegraphics{pics/$m[1]$graph}\n"; + print OUT "\\caption{$m[2]}\n\\label{pic:$m[1]}\n\\end{figure}\n\\end{center}\n"; + $wroteline += 4; + } else { + print OUT $_; + ++$wroteline; + } +} +print "Read $readline lines, wrote $wroteline lines\n"; + +close (OUT); +close (IN); diff --git a/libtommath/callgraph.txt b/libtommath/callgraph.txt new file mode 100644 index 0000000..4dc4cba --- /dev/null +++ b/libtommath/callgraph.txt @@ -0,0 +1,10193 @@ +BN_PRIME_TAB_C + + +BN_MP_SQRT_C ++--->BN_MP_N_ROOT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_EXPT_D_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_ZERO_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_RSHD_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_CMP_D_C + + +BN_MP_EXCH_C + + +BN_MP_IS_SQUARE_C ++--->BN_MP_MOD_D_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_SET_INT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_INT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_GET_INT_C ++--->BN_MP_SQRT_C +| +--->BN_MP_N_ROOT_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_EXPT_D_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_CLEAR_C + + +BN_MP_NEG_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C + + +BN_MP_EXPTMOD_C ++--->BN_MP_INIT_C ++--->BN_MP_INVMOD_C +| +--->BN_FAST_MP_INVMOD_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CMP_D_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_INVMOD_SLOW_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CMP_D_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_ABS_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_MULTI_C ++--->BN_MP_DR_IS_MODULUS_C ++--->BN_MP_REDUCE_IS_2K_C +| +--->BN_MP_REDUCE_2K_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_COUNT_BITS_C ++--->BN_MP_EXPTMOD_FAST_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_MONTGOMERY_SETUP_C +| +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| +--->BN_MP_MONTGOMERY_REDUCE_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| +--->BN_MP_DR_SETUP_C +| +--->BN_MP_DR_REDUCE_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| +--->BN_MP_REDUCE_2K_SETUP_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_2K_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MULMOD_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_EXCH_C ++--->BN_S_MP_EXPTMOD_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_REDUCE_SETUP_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_REDUCE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_D_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_EXCH_C + + +BN_MP_OR_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_ZERO_C + + +BN_MP_GROW_C + + +BN_MP_COUNT_BITS_C + + +BN_MP_PRIME_FERMAT_C ++--->BN_MP_CMP_D_C ++--->BN_MP_INIT_C ++--->BN_MP_EXPTMOD_C +| +--->BN_MP_INVMOD_C +| | +--->BN_FAST_MP_INVMOD_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INVMOD_SLOW_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_ABS_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_DR_IS_MODULUS_C +| +--->BN_MP_REDUCE_IS_2K_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_EXPTMOD_FAST_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MONTGOMERY_SETUP_C +| | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_DR_SETUP_C +| | +--->BN_MP_DR_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_REDUCE_2K_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MULMOD_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_REDUCE_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_REDUCE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_CLEAR_C + + +BN_MP_SUBMOD_C ++--->BN_MP_INIT_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C + + +BN_MP_MOD_2D_C ++--->BN_MP_ZERO_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_MP_TORADIX_N_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_DIV_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C + + +BN_MP_CMP_C ++--->BN_MP_CMP_MAG_C + + +BNCORE_C + + +BN_MP_TORADIX_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_DIV_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C + + +BN_MP_ADD_D_C ++--->BN_MP_GROW_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C + + +BN_MP_DIV_3_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_FAST_S_MP_MUL_DIGS_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_MP_SQRMOD_C ++--->BN_MP_INIT_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C + + +BN_MP_INVMOD_C ++--->BN_FAST_MP_INVMOD_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ABS_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INVMOD_SLOW_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C + + +BN_MP_AND_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_MUL_D_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_FAST_MP_INVMOD_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_ABS_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_CMP_D_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_FWRITE_C ++--->BN_MP_RADIX_SIZE_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_TORADIX_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C + + +BN_S_MP_SQR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_N_ROOT_C ++--->BN_MP_INIT_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_EXPT_D_C +| +--->BN_MP_INIT_COPY_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_COPY_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_PRIME_RABIN_MILLER_TRIALS_C + + +BN_MP_RADIX_SIZE_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_DIV_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C + + +BN_MP_READ_SIGNED_BIN_C ++--->BN_MP_READ_UNSIGNED_BIN_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C + + +BN_MP_PRIME_RANDOM_EX_C ++--->BN_MP_READ_UNSIGNED_BIN_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_PRIME_IS_PRIME_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_PRIME_IS_DIVISIBLE_C +| | +--->BN_MP_MOD_D_C +| | | +--->BN_MP_DIV_D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_PRIME_MILLER_RABIN_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXPTMOD_C +| | | +--->BN_MP_INVMOD_C +| | | | +--->BN_FAST_MP_INVMOD_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INVMOD_SLOW_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_DR_IS_MODULUS_C +| | | +--->BN_MP_REDUCE_IS_2K_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_EXPTMOD_FAST_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_DR_SETUP_C +| | | | +--->BN_MP_DR_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MULMOD_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_EXPTMOD_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_REDUCE_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_REDUCE_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_SQRMOD_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_KARATSUBA_SQR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C ++--->BN_MP_ADD_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_C + + +BN_MP_INIT_COPY_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C + + +BN_MP_CLAMP_C + + +BN_MP_TOOM_SQR_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MOD_2D_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_SQR_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_3_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_MOD_C ++--->BN_MP_INIT_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_COPY_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C + + +BN_MP_INIT_C + + +BN_MP_TOOM_MUL_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MOD_2D_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MUL_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_3_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_PRIME_IS_PRIME_C ++--->BN_MP_CMP_D_C ++--->BN_MP_PRIME_IS_DIVISIBLE_C +| +--->BN_MP_MOD_D_C +| | +--->BN_MP_DIV_D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_PRIME_MILLER_RABIN_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_EXPTMOD_C +| | +--->BN_MP_INVMOD_C +| | | +--->BN_FAST_MP_INVMOD_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INVMOD_SLOW_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ABS_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_DR_IS_MODULUS_C +| | +--->BN_MP_REDUCE_IS_2K_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_EXPTMOD_FAST_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_DR_SETUP_C +| | | +--->BN_MP_DR_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MULMOD_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_EXPTMOD_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_REDUCE_SETUP_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_REDUCE_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_SQRMOD_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C + + +BN_MP_COPY_C ++--->BN_MP_GROW_C + + +BN_S_MP_SUB_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_MP_READ_UNSIGNED_BIN_C ++--->BN_MP_GROW_C ++--->BN_MP_ZERO_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C + + +BN_MP_EXPTMOD_FAST_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MONTGOMERY_SETUP_C ++--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C ++--->BN_MP_MONTGOMERY_REDUCE_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C ++--->BN_MP_DR_SETUP_C ++--->BN_MP_DR_REDUCE_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C ++--->BN_MP_REDUCE_2K_SETUP_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_2K_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MULMOD_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MOD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_EXCH_C + + +BN_MP_TO_UNSIGNED_BIN_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_SET_INT_C ++--->BN_MP_ZERO_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C + + +BN_MP_MOD_D_C ++--->BN_MP_DIV_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + +BN_MP_SQR_C ++--->BN_MP_TOOM_SQR_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_KARATSUBA_SQR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_ADD_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_FAST_S_MP_SQR_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_S_MP_SQR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + +BN_MP_MULMOD_C ++--->BN_MP_INIT_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C + + +BN_MP_DIV_2D_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_ZERO_C ++--->BN_MP_INIT_C ++--->BN_MP_MOD_2D_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C ++--->BN_MP_RSHD_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C + + +BN_S_MP_ADD_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_FAST_S_MP_SQR_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_S_MP_MUL_DIGS_C ++--->BN_FAST_S_MP_MUL_DIGS_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_XOR_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_RADIX_SMAP_C + + +BN_MP_DR_IS_MODULUS_C + + +BN_MP_MONTGOMERY_CALC_NORMALIZATION_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_SUB_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_INIT_MULTI_C ++--->BN_MP_INIT_C ++--->BN_MP_CLEAR_C + + +BN_S_MP_MUL_HIGH_DIGS_C ++--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_PRIME_NEXT_PRIME_C ++--->BN_MP_CMP_D_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MOD_D_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_PRIME_MILLER_RABIN_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_EXPTMOD_C +| | +--->BN_MP_INVMOD_C +| | | +--->BN_FAST_MP_INVMOD_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INVMOD_SLOW_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ABS_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_DR_IS_MODULUS_C +| | +--->BN_MP_REDUCE_IS_2K_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_EXPTMOD_FAST_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_DR_SETUP_C +| | | +--->BN_MP_DR_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MULMOD_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_EXPTMOD_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_REDUCE_SETUP_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_REDUCE_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_SQRMOD_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C + + +BN_MP_SIGNED_BIN_SIZE_C ++--->BN_MP_UNSIGNED_BIN_SIZE_C +| +--->BN_MP_COUNT_BITS_C + + +BN_MP_INVMOD_SLOW_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_CMP_D_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_LCM_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_GCD_C +| +--->BN_MP_ABS_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_DIV_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_SET_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INIT_COPY_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_REVERSE_C + + +BN_MP_PRIME_IS_DIVISIBLE_C ++--->BN_MP_MOD_D_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C + + +BN_MP_SET_C ++--->BN_MP_ZERO_C + + +BN_MP_GCD_C ++--->BN_MP_ABS_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_ZERO_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_CNT_LSB_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_EXCH_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_READ_RADIX_C ++--->BN_MP_ZERO_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C + + +BN_FAST_S_MP_MUL_HIGH_DIGS_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_FAST_MP_MONTGOMERY_REDUCE_C ++--->BN_MP_GROW_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C + + +BN_MP_DIV_D_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_DIV_3_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_REDUCE_2K_SETUP_C ++--->BN_MP_INIT_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_INIT_SET_C ++--->BN_MP_INIT_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C + + +BN_MP_REDUCE_2K_C ++--->BN_MP_INIT_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_ERROR_C + + +BN_MP_EXPT_D_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C + + +BN_S_MP_EXPTMOD_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_C ++--->BN_MP_CLEAR_C ++--->BN_MP_REDUCE_SETUP_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MOD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_REDUCE_C +| +--->BN_MP_INIT_COPY_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_EXCH_C + + +BN_MP_ABS_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C + + +BN_MP_INIT_SET_INT_C ++--->BN_MP_INIT_C ++--->BN_MP_SET_INT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C + + +BN_MP_SUB_D_C ++--->BN_MP_GROW_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C + + +BN_MP_TO_SIGNED_BIN_C ++--->BN_MP_TO_UNSIGNED_BIN_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + +BN_MP_DIV_2_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_MP_REDUCE_IS_2K_C ++--->BN_MP_REDUCE_2K_C +| +--->BN_MP_INIT_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_COUNT_BITS_C + + +BN_MP_INIT_SIZE_C ++--->BN_MP_INIT_C + + +BN_MP_DIV_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_ZERO_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SET_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_ABS_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_INIT_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_INIT_C ++--->BN_MP_INIT_COPY_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C ++--->BN_MP_RSHD_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_CLEAR_C + + +BN_MP_MONTGOMERY_REDUCE_C ++--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C + + +BN_MP_MUL_2_C ++--->BN_MP_GROW_C + + +BN_MP_UNSIGNED_BIN_SIZE_C ++--->BN_MP_COUNT_BITS_C + + +BN_MP_ADDMOD_C ++--->BN_MP_INIT_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C + + +BN_MP_ADD_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_RAND_C ++--->BN_MP_ZERO_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C + + +BN_MP_CNT_LSB_C + + +BN_MP_2EXPT_C ++--->BN_MP_ZERO_C ++--->BN_MP_GROW_C + + +BN_MP_RSHD_C ++--->BN_MP_ZERO_C + + +BN_MP_SHRINK_C + + +BN_MP_REDUCE_C ++--->BN_MP_REDUCE_SETUP_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_S_MP_MUL_HIGH_DIGS_C +| +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MOD_2D_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_S_MP_MUL_DIGS_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_D_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_MUL_2D_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_GROW_C ++--->BN_MP_LSHD_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C ++--->BN_MP_CLAMP_C + + +BN_MP_GET_INT_C + + +BN_MP_JACOBI_C ++--->BN_MP_CMP_D_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_CNT_LSB_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_MOD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_CLEAR_MULTI_C ++--->BN_MP_CLEAR_C + + +BN_MP_MUL_C ++--->BN_MP_TOOM_MUL_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_KARATSUBA_MUL_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_CLEAR_C ++--->BN_FAST_S_MP_MUL_DIGS_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_S_MP_MUL_DIGS_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + +BN_MP_EXTEUCLID_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INIT_COPY_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_DR_REDUCE_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C + + +BN_MP_FREAD_C ++--->BN_MP_ZERO_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_D_C + + +BN_MP_REDUCE_SETUP_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INIT_COPY_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C + + +BN_MP_MONTGOMERY_SETUP_C + + +BN_MP_KARATSUBA_MUL_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C ++--->BN_MP_CLEAR_C + + +BN_MP_LSHD_C ++--->BN_MP_GROW_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C + + +BN_MP_PRIME_MILLER_RABIN_C ++--->BN_MP_CMP_D_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CNT_LSB_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_EXPTMOD_C +| +--->BN_MP_INVMOD_C +| | +--->BN_FAST_MP_INVMOD_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INVMOD_SLOW_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_ABS_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_DR_IS_MODULUS_C +| +--->BN_MP_REDUCE_IS_2K_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_EXPTMOD_FAST_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MONTGOMERY_SETUP_C +| | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_DR_SETUP_C +| | +--->BN_MP_DR_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_REDUCE_2K_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MULMOD_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_REDUCE_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_REDUCE_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_SQRMOD_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_DR_SETUP_C + + +BN_MP_CMP_MAG_C + + diff --git a/libtommath/changes.txt b/libtommath/changes.txt new file mode 100644 index 0000000..0d1ec2e --- /dev/null +++ b/libtommath/changes.txt @@ -0,0 +1,337 @@ +December 23rd, 2004 +v0.33 -- Fixed "small" variant for mp_div() which would munge with negative dividends... + -- Fixed bug in mp_prime_random_ex() which would set the most significant byte to zero when + no special flags were set + -- Fixed overflow [minor] bug in fast_s_mp_sqr() + -- Made the makefiles easier to configure the group/user that ltm will install as + -- Fixed "final carry" bug in comba multipliers. (Volkan Ceylan) + -- Matt Johnston pointed out a missing semi-colon in mp_exptmod + +October 29th, 2004 +v0.32 -- Added "makefile.shared" for shared object support + -- Added more to the build options/configs in the manual + -- Started the Depends framework, wrote dep.pl to scan deps and + produce "callgraph.txt" ;-) + -- Wrote SC_RSA_1 which will enable close to the minimum required to perform + RSA on 32-bit [or 64-bit] platforms with LibTomCrypt + -- Merged in the small/slower mp_div replacement. You can now toggle which + you want to use as your mp_div() at build time. Saves roughly 8KB or so. + -- Renamed a few files and changed some comments to make depends system work better. + (No changes to function names) + -- Merged in new Combas that perform 2 reads per inner loop instead of the older + 3reads/2writes per inner loop of the old code. Really though if you want speed + learn to use TomsFastMath ;-) + +August 9th, 2004 +v0.31 -- "profiled" builds now :-) new timings for Intel Northwoods + -- Added "pretty" build target + -- Update mp_init() to actually assign 0's instead of relying on calloc() + -- "Wolfgang Ehrhardt" found a bug in mp_mul() where if + you multiply a negative by zero you get negative zero as the result. Oops. + -- J Harper from PeerSec let me toy with his AMD64 and I got 60-bit digits working properly + [this also means that I fixed a bug where if sizeof(int) < sizeof(mp_digit) it would bug] + +April 11th, 2004 +v0.30 -- Added "mp_toradix_n" which stores upto "n-1" least significant digits of an mp_int + -- Johan Lindh sent a patch so MSVC wouldn't whine about redefining malloc [in weird dll modes] + -- Henrik Goldman spotted a missing OPT_CAST in mp_fwrite() + -- Tuned tommath.h so that when MP_LOW_MEM is defined MP_PREC shall be reduced. + [I also allow MP_PREC to be externally defined now] + -- Sped up mp_cnt_lsb() by using a 4x4 table [e.g. 4x speedup] + -- Added mp_prime_random_ex() which is a more versatile prime generator accurate to + exact bit lengths (unlike the deprecated but still available mp_prime_random() which + is only accurate to byte lengths). See the new LTM_PRIME_* flags ;-) + -- Alex Polushin contributed an optimized mp_sqrt() as well as mp_get_int() and mp_is_square(). + I've cleaned them all up to be a little more consistent [along with one bug fix] for this release. + -- Added mp_init_set and mp_init_set_int to initialize and set small constants with one function + call. + -- Removed /etclib directory [um LibTomPoly deprecates this]. + -- Fixed mp_mod() so the sign of the result agrees with the sign of the modulus. + ++ N.B. My semester is almost up so expect updates to the textbook to be posted to the libtomcrypt.org + website. + +Jan 25th, 2004 +v0.29 ++ Note: "Henrik" from the v0.28 changelog refers to Henrik Goldman ;-) + -- Added fix to mp_shrink to prevent a realloc when used == 0 [e.g. realloc zero bytes???] + -- Made the mp_prime_rabin_miller_trials() function internal table smaller and also + set the minimum number of tests to two (sounds a bit safer). + -- Added a mp_exteuclid() which computes the extended euclidean algorithm. + -- Fixed a memory leak in s_mp_exptmod() [called when Barrett reduction is to be used] which would arise + if a multiplication or subsequent reduction failed [would not free the temp result]. + -- Made an API change to mp_radix_size(). It now returns an error code and stores the required size + through an "int star" passed to it. + +Dec 24th, 2003 +v0.28 -- Henrik Goldman suggested I add casts to the montomgery code [stores into mu...] so compilers wouldn't + spew [erroneous] diagnostics... fixed. + -- Henrik Goldman also spotted two typos. One in mp_radix_size() and another in mp_toradix(). + -- Added fix to mp_shrink() to avoid a memory leak. + -- Added mp_prime_random() which requires a callback to make truly random primes of a given nature + (idea from chat with Niels Ferguson at Crypto'03) + -- Picked up a second wind. I'm filled with Gooo. Mission Gooo! + -- Removed divisions from mp_reduce_is_2k() + -- Sped up mp_div_d() [general case] to use only one division per digit instead of two. + -- Added the heap macros from LTC to LTM. Now you can easily [by editing four lines of tommath.h] + change the name of the heap functions used in LTM [also compatible with LTC via MPI mode] + -- Added bn_prime_rabin_miller_trials() which gives the number of Rabin-Miller trials to achieve + a failure rate of less than 2^-96 + -- fixed bug in fast_mp_invmod(). The initial testing logic was wrong. An invalid input is not when + "a" and "b" are even it's when "b" is even [the algo is for odd moduli only]. + -- Started a new manual [finally]. It is incomplete and will be finished as time goes on. I had to stop + adding full demos around half way in chapter three so I could at least get a good portion of the + manual done. If you really need help using the library you can always email me! + -- My Textbook is now included as part of the package [all Public Domain] + +Sept 19th, 2003 +v0.27 -- Removed changes.txt~ which was made by accident since "kate" decided it was + a good time to re-enable backups... [kde is fun!] + -- In mp_grow() "a->dp" is not overwritten by realloc call [re: memory leak] + Now if mp_grow() fails the mp_int is still valid and can be cleared via + mp_clear() to reclaim the memory. + -- Henrik Goldman found a buffer overflow bug in mp_add_d(). Fixed. + -- Cleaned up mp_mul_d() to be much easier to read and follow. + +Aug 29th, 2003 +v0.26 -- Fixed typo that caused warning with GCC 3.2 + -- Martin Marcel noticed a bug in mp_neg() that allowed negative zeroes. + Also, Martin is the fellow who noted the bugs in mp_gcd() of 0.24/0.25. + -- Martin Marcel noticed an optimization [and slight bug] in mp_lcm(). + -- Added fix to mp_read_unsigned_bin to prevent a buffer overflow. + -- Beefed up the comments in the baseline multipliers [and montgomery] + -- Added "mont" demo to the makefile.msvc in etc/ + -- Optimized sign compares in mp_cmp from 4 to 2 cases. + +Aug 4th, 2003 +v0.25 -- Fix to mp_gcd again... oops (0,-a) == (-a, 0) == a + -- Fix to mp_clear which didn't reset the sign [Greg Rose] + -- Added mp_error_to_string() to convert return codes to strings. [Greg Rose] + -- Optimized fast_mp_invmod() to do the test for invalid inputs [both even] + first so temps don't have to be initialized if it's going to fail. + -- Optimized mp_gcd() by removing mp_div_2d calls for when one of the inputs + is odd. + -- Tons of new comments, some indentation fixups, etc. + -- mp_jacobi() returns MP_VAL if the modulus is less than or equal to zero. + -- fixed two typos in the header of each file :-) + -- LibTomMath is officially Public Domain [see LICENSE] + +July 15th, 2003 +v0.24 -- Optimized mp_add_d and mp_sub_d to not allocate temporary variables + -- Fixed mp_gcd() so the gcd of 0,0 is 0. Allows the gcd operation to be chained + e.g. (0,0,a) == a [instead of 1] + -- Should be one of the last release for a while. Working on LibTomMath book now. + -- optimized the pprime demo [/etc/pprime.c] to first make a huge table of single + digit primes then it reads them randomly instead of randomly choosing/testing single + digit primes. + +July 12th, 2003 +v0.23 -- Optimized mp_prime_next_prime() to not use mp_mod [via is_divisible()] in each + iteration. Instead now a smaller table is kept of the residues which can be updated + without division. + -- Fixed a bug in next_prime() where an input of zero would be treated as odd and + have two added to it [to move to the next odd]. + -- fixed a bug in prime_fermat() and prime_miller_rabin() which allowed the base + to be negative, zero or one. Normally the test is only valid if the base is + greater than one. + -- changed the next_prime() prototype to accept a new parameter "bbs_style" which + will find the next prime congruent to 3 mod 4. The default [bbs_style==0] will + make primes which are either congruent to 1 or 3 mod 4. + -- fixed mp_read_unsigned_bin() so that it doesn't include both code for + the case DIGIT_BIT < 8 and >= 8 + -- optimized div_d() to easy out on division by 1 [or if a == 0] and use + logical shifts if the divisor is a power of two. + -- the default DIGIT_BIT type was not int for non-default builds. Fixed. + +July 2nd, 2003 +v0.22 -- Fixed up mp_invmod so the result is properly in range now [was always congruent to the inverse...] + -- Fixed up s_mp_exptmod and mp_exptmod_fast so the lower half of the pre-computed table isn't allocated + which makes the algorithm use half as much ram. + -- Fixed the install script not to make the book :-) [which isn't included anyways] + -- added mp_cnt_lsb() which counts how many of the lsbs are zero + -- optimized mp_gcd() to use the new mp_cnt_lsb() to replace multiple divisions by two by a single division. + -- applied similar optimization to mp_prime_miller_rabin(). + -- Fixed a bug in both mp_invmod() and fast_mp_invmod() which tested for odd + via "mp_iseven() == 0" which is not valid [since zero is not even either]. + +June 19th, 2003 +v0.21 -- Fixed bug in mp_mul_d which would not handle sign correctly [would not always forward it] + -- Removed the #line lines from gen.pl [was in violation of ISO C] + +June 8th, 2003 +v0.20 -- Removed the book from the package. Added the TDCAL license document. + -- This release is officially pure-bred TDCAL again [last officially TDCAL based release was v0.16] + +June 6th, 2003 +v0.19 -- Fixed a bug in mp_montgomery_reduce() which was introduced when I tweaked mp_rshd() in the previous release. + Essentially the digits were not trimmed before the compare which cause a subtraction to occur all the time. + -- Fixed up etc/tune.c a bit to stop testing new cutoffs after 16 failures [to find more optimal points]. + Brute force ho! + + +May 29th, 2003 +v0.18 -- Fixed a bug in s_mp_sqr which would handle carries properly just not very elegantly. + (e.g. correct result, just bad looking code) + -- Fixed bug in mp_sqr which still had a 512 constant instead of MP_WARRAY + -- Added Toom-Cook multipliers [needs tuning!] + -- Added efficient divide by 3 algorithm mp_div_3 + -- Re-wrote mp_div_d to be faster than calling mp_div + -- Added in a donated BCC makefile and a single page LTM poster (ahalhabsi@sbcglobal.net) + -- Added mp_reduce_2k which reduces an input modulo n = 2**p - k for any single digit k + -- Made the exptmod system be aware of the 2k reduction algorithms. + -- Rewrote mp_dr_reduce to be smaller, simpler and easier to understand. + +May 17th, 2003 +v0.17 -- Benjamin Goldberg submitted optimized mp_add and mp_sub routines. A new gen.pl as well + as several smaller suggestions. Thanks! + -- removed call to mp_cmp in inner loop of mp_div and put mp_cmp_mag in its place :-) + -- Fixed bug in mp_exptmod that would cause it to fail for odd moduli when DIGIT_BIT != 28 + -- mp_exptmod now also returns errors if the modulus is negative and will handle negative exponents + -- mp_prime_is_prime will now return true if the input is one of the primes in the prime table + -- Damian M Gryski (dgryski@uwaterloo.ca) found a index out of bounds error in the + mp_fast_s_mp_mul_high_digs function which didn't come up before. (fixed) + -- Refactored the DR reduction code so there is only one function per file. + -- Fixed bug in the mp_mul() which would erroneously avoid the faster multiplier [comba] when it was + allowed. The bug would not cause the incorrect value to be produced just less efficient (fixed) + -- Fixed similar bug in the Montgomery reduction code. + -- Added tons of (mp_digit) casts so the 7/15/28/31 bit digit code will work flawlessly out of the box. + Also added limited support for 64-bit machines with a 60-bit digit. Both thanks to Tom Wu (tom@arcot.com) + -- Added new comments here and there, cleaned up some code [style stuff] + -- Fixed a lingering typo in mp_exptmod* that would set bitcnt to zero then one. Very silly stuff :-) + -- Fixed up mp_exptmod_fast so it would set "redux" to the comba Montgomery reduction if allowed. This + saves quite a few calls and if statements. + -- Added etc/mont.c a test of the Montgomery reduction [assuming all else works :-| ] + -- Fixed up etc/tune.c to use a wider test range [more appropriate] also added a x86 based addition which + uses RDTSC for high precision timing. + -- Updated demo/demo.c to remove MPI stuff [won't work anyways], made the tests run for 2 seconds each so its + not so insanely slow. Also made the output space delimited [and fixed up various errors] + -- Added logs directory, logs/graph.dem which will use gnuplot to make a series of PNG files + that go with the pre-made index.html. You have to build [via make timing] and run ltmtest first in the + root of the package. + -- Fixed a bug in mp_sub and mp_add where "-a - -a" or "-a + a" would produce -0 as the result [obviously invalid]. + -- Fixed a bug in mp_rshd. If the count == a.used it should zero/return [instead of shifting] + -- Fixed a "off-by-one" bug in mp_mul2d. The initial size check on alloc would be off by one if the residue + shifting caused a carry. + -- Fixed a bug where s_mp_mul_digs() would not call the Comba based routine if allowed. This made Barrett reduction + slower than it had to be. + +Mar 29th, 2003 +v0.16 -- Sped up mp_div by making normalization one shift call + -- Sped up mp_mul_2d/mp_div_2d by aliasing pointers :-) + -- Cleaned up mp_gcd to use the macros for odd/even detection + -- Added comments here and there, mostly there but occasionally here too. + +Mar 22nd, 2003 +v0.15 -- Added series of prime testing routines to lib + -- Fixed up etc/tune.c + -- Added DR reduction algorithm + -- Beefed up the manual more. + -- Fixed up demo/demo.c so it doesn't have so many warnings and it does the full series of + tests + -- Added "pre-gen" directory which will hold a "gen.pl"'ed copy of the entire lib [done at + zipup time so its always the latest] + -- Added conditional casts for C++ users [boo!] + +Mar 15th, 2003 +v0.14 -- Tons of manual updates + -- cleaned up the directory + -- added MSVC makefiles + -- source changes [that I don't recall] + -- Fixed up the lshd/rshd code to use pointer aliasing + -- Fixed up the mul_2d and div_2d to not call rshd/lshd unless needed + -- Fixed up etc/tune.c a tad + -- fixed up demo/demo.c to output comma-delimited results of timing + also fixed up timing demo to use a finer granularity for various functions + -- fixed up demo/demo.c testing to pause during testing so my Duron won't catch on fire + [stays around 31-35C during testing :-)] + +Feb 13th, 2003 +v0.13 -- tons of minor speed-ups in low level add, sub, mul_2 and div_2 which propagate + to other functions like mp_invmod, mp_div, etc... + -- Sped up mp_exptmod_fast by using new code to find R mod m [e.g. B^n mod m] + -- minor fixes + +Jan 17th, 2003 +v0.12 -- re-wrote the majority of the makefile so its more portable and will + install via "make install" on most *nix platforms + -- Re-packaged all the source as seperate files. Means the library a single + file packagage any more. Instead of just adding "bn.c" you have to add + libtommath.a + -- Renamed "bn.h" to "tommath.h" + -- Changes to the manual to reflect all of this + -- Used GNU Indent to clean up the source + +Jan 15th, 2003 +v0.11 -- More subtle fixes + -- Moved to gentoo linux [hurrah!] so made *nix specific fixes to the make process + -- Sped up the montgomery reduction code quite a bit + -- fixed up demo so when building timing for the x86 it assumes ELF format now + +Jan 9th, 2003 +v0.10 -- Pekka Riikonen suggested fixes to the radix conversion code. + -- Added baseline montgomery and comba montgomery reductions, sped up exptmods + [to a point, see bn.h for MONTGOMERY_EXPT_CUTOFF] + +Jan 6th, 2003 +v0.09 -- Updated the manual to reflect recent changes. :-) + -- Added Jacobi function (mp_jacobi) to supplement the number theory side of the lib + -- Added a Mersenne prime finder demo in ./etc/mersenne.c + +Jan 2nd, 2003 +v0.08 -- Sped up the multipliers by moving the inner loop variables into a smaller scope + -- Corrected a bunch of small "warnings" + -- Added more comments + -- Made "mtest" be able to use /dev/random, /dev/urandom or stdin for RNG data + -- Corrected some bugs where error messages were potentially ignored + -- add etc/pprime.c program which makes numbers which are provably prime. + +Jan 1st, 2003 +v0.07 -- Removed alot of heap operations from core functions to speed them up + -- Added a root finding function [and mp_sqrt macro like from MPI] + -- Added more to manual + +Dec 31st, 2002 +v0.06 -- Sped up the s_mp_add, s_mp_sub which inturn sped up mp_invmod, mp_exptmod, etc... + -- Cleaned up the header a bit more + +Dec 30th, 2002 +v0.05 -- Builds with MSVC out of the box + -- Fixed a bug in mp_invmod w.r.t. even moduli + -- Made mp_toradix and mp_read_radix use char instead of unsigned char arrays + -- Fixed up exptmod to use fewer multiplications + -- Fixed up mp_init_size to use only one heap operation + -- Note there is a slight "off-by-one" bug in the library somewhere + without the padding (see the source for comment) the library + crashes in libtomcrypt. Anyways a reasonable workaround is to pad the + numbers which will always correct it since as the numbers grow the padding + will still be beyond the end of the number + -- Added more to the manual + +Dec 29th, 2002 +v0.04 -- Fixed a memory leak in mp_to_unsigned_bin + -- optimized invmod code + -- Fixed bug in mp_div + -- use exchange instead of copy for results + -- added a bit more to the manual + +Dec 27th, 2002 +v0.03 -- Sped up s_mp_mul_high_digs by not computing the carries of the lower digits + -- Fixed a bug where mp_set_int wouldn't zero the value first and set the used member. + -- fixed a bug in s_mp_mul_high_digs where the limit placed on the result digits was not calculated properly + -- fixed bugs in add/sub/mul/sqr_mod functions where if the modulus and dest were the same it wouldn't work + -- fixed a bug in mp_mod and mp_mod_d concerning negative inputs + -- mp_mul_d didn't preserve sign + -- Many many many many fixes + -- Works in LibTomCrypt now :-) + -- Added iterations to the timing demos... more accurate. + -- Tom needs a job. + +Dec 26th, 2002 +v0.02 -- Fixed a few "slips" in the manual. This is "LibTomMath" afterall :-) + -- Added mp_cmp_mag, mp_neg, mp_abs and mp_radix_size that were missing. + -- Sped up the fast [comba] multipliers more [yahoo!] + +Dec 25th,2002 +v0.01 -- Initial release. Gimme a break. + -- Todo list, + add details to manual [e.g. algorithms] + more comments in code + example programs diff --git a/libtommath/demo/demo.c b/libtommath/demo/demo.c new file mode 100644 index 0000000..62615cd --- /dev/null +++ b/libtommath/demo/demo.c @@ -0,0 +1,515 @@ +#include + +#ifdef IOWNANATHLON +#include +#define SLEEP sleep(4) +#else +#define SLEEP +#endif + +#include "tommath.h" + +void ndraw(mp_int *a, char *name) +{ + char buf[16000]; + printf("%s: ", name); + mp_toradix(a, buf, 10); + printf("%s\n", buf); +} + +static void draw(mp_int *a) +{ + ndraw(a, ""); +} + + +unsigned long lfsr = 0xAAAAAAAAUL; + +int lbit(void) +{ + if (lfsr & 0x80000000UL) { + lfsr = ((lfsr << 1) ^ 0x8000001BUL) & 0xFFFFFFFFUL; + return 1; + } else { + lfsr <<= 1; + return 0; + } +} + +int myrng(unsigned char *dst, int len, void *dat) +{ + int x; + for (x = 0; x < len; x++) dst[x] = rand() & 0xFF; + return len; +} + + + + char cmd[4096], buf[4096]; +int main(void) +{ + mp_int a, b, c, d, e, f; + unsigned long expt_n, add_n, sub_n, mul_n, div_n, sqr_n, mul2d_n, div2d_n, gcd_n, lcm_n, inv_n, + div2_n, mul2_n, add_d_n, sub_d_n, t; + unsigned rr; + int i, n, err, cnt, ix, old_kara_m, old_kara_s; + + + mp_init(&a); + mp_init(&b); + mp_init(&c); + mp_init(&d); + mp_init(&e); + mp_init(&f); + + srand(time(NULL)); + +#if 0 + // test mp_get_int + printf("Testing: mp_get_int\n"); + for(i=0;i<1000;++i) { + t = ((unsigned long)rand()*rand()+1)&0xFFFFFFFF; + mp_set_int(&a,t); + if (t!=mp_get_int(&a)) { + printf("mp_get_int() bad result!\n"); + return 1; + } + } + mp_set_int(&a,0); + if (mp_get_int(&a)!=0) + { printf("mp_get_int() bad result!\n"); + return 1; + } + mp_set_int(&a,0xffffffff); + if (mp_get_int(&a)!=0xffffffff) + { printf("mp_get_int() bad result!\n"); + return 1; + } + + // test mp_sqrt + printf("Testing: mp_sqrt\n"); + for (i=0;i<1000;++i) { + printf("%6d\r", i); fflush(stdout); + n = (rand()&15)+1; + mp_rand(&a,n); + if (mp_sqrt(&a,&b) != MP_OKAY) + { printf("mp_sqrt() error!\n"); + return 1; + } + mp_n_root(&a,2,&a); + if (mp_cmp_mag(&b,&a) != MP_EQ) + { printf("mp_sqrt() bad result!\n"); + return 1; + } + } + + printf("\nTesting: mp_is_square\n"); + for (i=0;i<1000;++i) { + printf("%6d\r", i); fflush(stdout); + + /* test mp_is_square false negatives */ + n = (rand()&7)+1; + mp_rand(&a,n); + mp_sqr(&a,&a); + if (mp_is_square(&a,&n)!=MP_OKAY) { + printf("fn:mp_is_square() error!\n"); + return 1; + } + if (n==0) { + printf("fn:mp_is_square() bad result!\n"); + return 1; + } + + /* test for false positives */ + mp_add_d(&a, 1, &a); + if (mp_is_square(&a,&n)!=MP_OKAY) { + printf("fp:mp_is_square() error!\n"); + return 1; + } + if (n==1) { + printf("fp:mp_is_square() bad result!\n"); + return 1; + } + + } + printf("\n\n"); + + /* test for size */ + for (ix = 10; ix < 256; ix++) { + printf("Testing (not safe-prime): %9d bits \r", ix); fflush(stdout); + err = mp_prime_random_ex(&a, 8, ix, (rand()&1)?LTM_PRIME_2MSB_OFF:LTM_PRIME_2MSB_ON, myrng, NULL); + if (err != MP_OKAY) { + printf("failed with err code %d\n", err); + return EXIT_FAILURE; + } + if (mp_count_bits(&a) != ix) { + printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); + return EXIT_FAILURE; + } + } + + for (ix = 16; ix < 256; ix++) { + printf("Testing ( safe-prime): %9d bits \r", ix); fflush(stdout); + err = mp_prime_random_ex(&a, 8, ix, ((rand()&1)?LTM_PRIME_2MSB_OFF:LTM_PRIME_2MSB_ON)|LTM_PRIME_SAFE, myrng, NULL); + if (err != MP_OKAY) { + printf("failed with err code %d\n", err); + return EXIT_FAILURE; + } + if (mp_count_bits(&a) != ix) { + printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); + return EXIT_FAILURE; + } + /* let's see if it's really a safe prime */ + mp_sub_d(&a, 1, &a); + mp_div_2(&a, &a); + mp_prime_is_prime(&a, 8, &cnt); + if (cnt != MP_YES) { + printf("sub is not prime!\n"); + return EXIT_FAILURE; + } + } + + printf("\n\n"); + + mp_read_radix(&a, "123456", 10); + mp_toradix_n(&a, buf, 10, 3); + printf("a == %s\n", buf); + mp_toradix_n(&a, buf, 10, 4); + printf("a == %s\n", buf); + mp_toradix_n(&a, buf, 10, 30); + printf("a == %s\n", buf); + + +#if 0 + for (;;) { + fgets(buf, sizeof(buf), stdin); + mp_read_radix(&a, buf, 10); + mp_prime_next_prime(&a, 5, 1); + mp_toradix(&a, buf, 10); + printf("%s, %lu\n", buf, a.dp[0] & 3); + } +#endif + + /* test mp_cnt_lsb */ + printf("testing mp_cnt_lsb...\n"); + mp_set(&a, 1); + for (ix = 0; ix < 1024; ix++) { + if (mp_cnt_lsb(&a) != ix) { + printf("Failed at %d, %d\n", ix, mp_cnt_lsb(&a)); + return 0; + } + mp_mul_2(&a, &a); + } + +/* test mp_reduce_2k */ + printf("Testing mp_reduce_2k...\n"); + for (cnt = 3; cnt <= 128; ++cnt) { + mp_digit tmp; + mp_2expt(&a, cnt); + mp_sub_d(&a, 2, &a); /* a = 2**cnt - 2 */ + + + printf("\nTesting %4d bits", cnt); + printf("(%d)", mp_reduce_is_2k(&a)); + mp_reduce_2k_setup(&a, &tmp); + printf("(%d)", tmp); + for (ix = 0; ix < 1000; ix++) { + if (!(ix & 127)) {printf("."); fflush(stdout); } + mp_rand(&b, (cnt/DIGIT_BIT + 1) * 2); + mp_copy(&c, &b); + mp_mod(&c, &a, &c); + mp_reduce_2k(&b, &a, 1); + if (mp_cmp(&c, &b)) { + printf("FAILED\n"); + exit(0); + } + } + } + +/* test mp_div_3 */ + printf("Testing mp_div_3...\n"); + mp_set(&d, 3); + for (cnt = 0; cnt < 10000; ) { + mp_digit r1, r2; + + if (!(++cnt & 127)) printf("%9d\r", cnt); + mp_rand(&a, abs(rand()) % 128 + 1); + mp_div(&a, &d, &b, &e); + mp_div_3(&a, &c, &r2); + + if (mp_cmp(&b, &c) || mp_cmp_d(&e, r2)) { + printf("\n\nmp_div_3 => Failure\n"); + } + } + printf("\n\nPassed div_3 testing\n"); + +/* test the DR reduction */ + printf("testing mp_dr_reduce...\n"); + for (cnt = 2; cnt < 32; cnt++) { + printf("%d digit modulus\n", cnt); + mp_grow(&a, cnt); + mp_zero(&a); + for (ix = 1; ix < cnt; ix++) { + a.dp[ix] = MP_MASK; + } + a.used = cnt; + a.dp[0] = 3; + + mp_rand(&b, cnt - 1); + mp_copy(&b, &c); + + rr = 0; + do { + if (!(rr & 127)) { printf("%9lu\r", rr); fflush(stdout); } + mp_sqr(&b, &b); mp_add_d(&b, 1, &b); + mp_copy(&b, &c); + + mp_mod(&b, &a, &b); + mp_dr_reduce(&c, &a, (((mp_digit)1)< +#include + +ulong64 _tt; + +#ifdef IOWNANATHLON +#include +#define SLEEP sleep(4) +#else +#define SLEEP +#endif + + +void ndraw(mp_int *a, char *name) +{ + char buf[4096]; + printf("%s: ", name); + mp_toradix(a, buf, 64); + printf("%s\n", buf); +} + +static void draw(mp_int *a) +{ + ndraw(a, ""); +} + + +unsigned long lfsr = 0xAAAAAAAAUL; + +int lbit(void) +{ + if (lfsr & 0x80000000UL) { + lfsr = ((lfsr << 1) ^ 0x8000001BUL) & 0xFFFFFFFFUL; + return 1; + } else { + lfsr <<= 1; + return 0; + } +} + +/* RDTSC from Scott Duplichan */ +static ulong64 TIMFUNC (void) + { + #if defined __GNUC__ + #if defined(__i386__) || defined(__x86_64__) + unsigned long long a; + __asm__ __volatile__ ("rdtsc\nmovl %%eax,%0\nmovl %%edx,4+%0\n"::"m"(a):"%eax","%edx"); + return a; + #else /* gcc-IA64 version */ + unsigned long result; + __asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory"); + while (__builtin_expect ((int) result == -1, 0)) + __asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory"); + return result; + #endif + + // Microsoft and Intel Windows compilers + #elif defined _M_IX86 + __asm rdtsc + #elif defined _M_AMD64 + return __rdtsc (); + #elif defined _M_IA64 + #if defined __INTEL_COMPILER + #include + #endif + return __getReg (3116); + #else + #error need rdtsc function for this build + #endif + } + +#define DO(x) x; x; +//#define DO4(x) DO2(x); DO2(x); +//#define DO8(x) DO4(x); DO4(x); +//#define DO(x) DO8(x); DO8(x); + +int main(void) +{ + ulong64 tt, gg, CLK_PER_SEC; + FILE *log, *logb, *logc; + mp_int a, b, c, d, e, f; + int n, cnt, ix, old_kara_m, old_kara_s; + unsigned rr; + + mp_init(&a); + mp_init(&b); + mp_init(&c); + mp_init(&d); + mp_init(&e); + mp_init(&f); + + srand(time(NULL)); + + + /* temp. turn off TOOM */ + TOOM_MUL_CUTOFF = TOOM_SQR_CUTOFF = 100000; + + CLK_PER_SEC = TIMFUNC(); + sleep(1); + CLK_PER_SEC = TIMFUNC() - CLK_PER_SEC; + + printf("CLK_PER_SEC == %llu\n", CLK_PER_SEC); + + log = fopen("logs/add.log", "w"); + for (cnt = 8; cnt <= 128; cnt += 8) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_add(&a,&b,&c)); + gg = (TIMFUNC() - gg)>>1; + if (tt > gg) tt = gg; + } while (++rr < 100000); + printf("Adding\t\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); + fprintf(log, "%d %9llu\n", cnt*DIGIT_BIT, tt); fflush(log); + } + fclose(log); + + log = fopen("logs/sub.log", "w"); + for (cnt = 8; cnt <= 128; cnt += 8) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_sub(&a,&b,&c)); + gg = (TIMFUNC() - gg)>>1; + if (tt > gg) tt = gg; + } while (++rr < 100000); + + printf("Subtracting\t\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); + fprintf(log, "%d %9llu\n", cnt*DIGIT_BIT, tt); fflush(log); + } + fclose(log); + + /* do mult/square twice, first without karatsuba and second with */ + old_kara_m = KARATSUBA_MUL_CUTOFF; + old_kara_s = KARATSUBA_SQR_CUTOFF; + for (ix = 0; ix < 1; ix++) { + printf("With%s Karatsuba\n", (ix==0)?"out":""); + + KARATSUBA_MUL_CUTOFF = (ix==0)?9999:old_kara_m; + KARATSUBA_SQR_CUTOFF = (ix==0)?9999:old_kara_s; + + log = fopen((ix==0)?"logs/mult.log":"logs/mult_kara.log", "w"); + for (cnt = 4; cnt <= 288; cnt += 2) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_mul(&a, &b, &c)); + gg = (TIMFUNC() - gg)>>1; + if (tt > gg) tt = gg; + } while (++rr < 100); + printf("Multiplying\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); + fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); fflush(log); + } + fclose(log); + + log = fopen((ix==0)?"logs/sqr.log":"logs/sqr_kara.log", "w"); + for (cnt = 4; cnt <= 288; cnt += 2) { + SLEEP; + mp_rand(&a, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_sqr(&a, &b)); + gg = (TIMFUNC() - gg)>>1; + if (tt > gg) tt = gg; + } while (++rr < 100); + printf("Squaring\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); + fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); fflush(log); + } + fclose(log); + + } + + { + char *primes[] = { + /* 2K moduli mersenne primes */ + "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151", + "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127", + "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087", + "1475979915214180235084898622737381736312066145333169775147771216478570297878078949377407337049389289382748507531496480477281264838760259191814463365330269540496961201113430156902396093989090226259326935025281409614983499388222831448598601834318536230923772641390209490231836446899608210795482963763094236630945410832793769905399982457186322944729636418890623372171723742105636440368218459649632948538696905872650486914434637457507280441823676813517852099348660847172579408422316678097670224011990280170474894487426924742108823536808485072502240519452587542875349976558572670229633962575212637477897785501552646522609988869914013540483809865681250419497686697771007", + "259117086013202627776246767922441530941818887553125427303974923161874019266586362086201209516800483406550695241733194177441689509238807017410377709597512042313066624082916353517952311186154862265604547691127595848775610568757931191017711408826252153849035830401185072116424747461823031471398340229288074545677907941037288235820705892351068433882986888616658650280927692080339605869308790500409503709875902119018371991620994002568935113136548829739112656797303241986517250116412703509705427773477972349821676443446668383119322540099648994051790241624056519054483690809616061625743042361721863339415852426431208737266591962061753535748892894599629195183082621860853400937932839420261866586142503251450773096274235376822938649407127700846077124211823080804139298087057504713825264571448379371125032081826126566649084251699453951887789613650248405739378594599444335231188280123660406262468609212150349937584782292237144339628858485938215738821232393687046160677362909315071", + "190797007524439073807468042969529173669356994749940177394741882673528979787005053706368049835514900244303495954950709725762186311224148828811920216904542206960744666169364221195289538436845390250168663932838805192055137154390912666527533007309292687539092257043362517857366624699975402375462954490293259233303137330643531556539739921926201438606439020075174723029056838272505051571967594608350063404495977660656269020823960825567012344189908927956646011998057988548630107637380993519826582389781888135705408653045219655801758081251164080554609057468028203308718724654081055323215860189611391296030471108443146745671967766308925858547271507311563765171008318248647110097614890313562856541784154881743146033909602737947385055355960331855614540900081456378659068370317267696980001187750995491090350108417050917991562167972281070161305972518044872048331306383715094854938415738549894606070722584737978176686422134354526989443028353644037187375385397838259511833166416134323695660367676897722287918773420968982326089026150031515424165462111337527431154890666327374921446276833564519776797633875503548665093914556482031482248883127023777039667707976559857333357013727342079099064400455741830654320379350833236245819348824064783585692924881021978332974949906122664421376034687815350484991", + + /* DR moduli */ + "14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203368612079", + "101745825697019260773923519755878567461315282017759829107608914364075275235254395622580447400994175578963163918967182013639660669771108475957692810857098847138903161308502419410142185759152435680068435915159402496058513611411688900243039", + "736335108039604595805923406147184530889923370574768772191969612422073040099331944991573923112581267542507986451953227192970402893063850485730703075899286013451337291468249027691733891486704001513279827771740183629161065194874727962517148100775228363421083691764065477590823919364012917984605619526140821797602431", + "38564998830736521417281865696453025806593491967131023221754800625044118265468851210705360385717536794615180260494208076605798671660719333199513807806252394423283413430106003596332513246682903994829528690198205120921557533726473585751382193953592127439965050261476810842071573684505878854588706623484573925925903505747545471088867712185004135201289273405614415899438276535626346098904241020877974002916168099951885406379295536200413493190419727789712076165162175783", + "542189391331696172661670440619180536749994166415993334151601745392193484590296600979602378676624808129613777993466242203025054573692562689251250471628358318743978285860720148446448885701001277560572526947619392551574490839286458454994488665744991822837769918095117129546414124448777033941223565831420390846864429504774477949153794689948747680362212954278693335653935890352619041936727463717926744868338358149568368643403037768649616778526013610493696186055899318268339432671541328195724261329606699831016666359440874843103020666106568222401047720269951530296879490444224546654729111504346660859907296364097126834834235287147", + "1487259134814709264092032648525971038895865645148901180585340454985524155135260217788758027400478312256339496385275012465661575576202252063145698732079880294664220579764848767704076761853197216563262660046602703973050798218246170835962005598561669706844469447435461092542265792444947706769615695252256130901271870341005768912974433684521436211263358097522726462083917939091760026658925757076733484173202927141441492573799914240222628795405623953109131594523623353044898339481494120112723445689647986475279242446083151413667587008191682564376412347964146113898565886683139407005941383669325997475076910488086663256335689181157957571445067490187939553165903773554290260531009121879044170766615232300936675369451260747671432073394867530820527479172464106442450727640226503746586340279816318821395210726268291535648506190714616083163403189943334431056876038286530365757187367147446004855912033137386225053275419626102417236133948503", + "1095121115716677802856811290392395128588168592409109494900178008967955253005183831872715423151551999734857184538199864469605657805519106717529655044054833197687459782636297255219742994736751541815269727940751860670268774903340296040006114013971309257028332849679096824800250742691718610670812374272414086863715763724622797509437062518082383056050144624962776302147890521249477060215148275163688301275847155316042279405557632639366066847442861422164832655874655824221577849928863023018366835675399949740429332468186340518172487073360822220449055340582568461568645259954873303616953776393853174845132081121976327462740354930744487429617202585015510744298530101547706821590188733515880733527449780963163909830077616357506845523215289297624086914545378511082534229620116563260168494523906566709418166011112754529766183554579321224940951177394088465596712620076240067370589036924024728375076210477267488679008016579588696191194060127319035195370137160936882402244399699172017835144537488486396906144217720028992863941288217185353914991583400421682751000603596655790990815525126154394344641336397793791497068253936771017031980867706707490224041075826337383538651825493679503771934836094655802776331664261631740148281763487765852746577808019633679", + + /* generic unrestricted moduli */ + "17933601194860113372237070562165128350027320072176844226673287945873370751245439587792371960615073855669274087805055507977323024886880985062002853331424203", + "2893527720709661239493896562339544088620375736490408468011883030469939904368086092336458298221245707898933583190713188177399401852627749210994595974791782790253946539043962213027074922559572312141181787434278708783207966459019479487", + "347743159439876626079252796797422223177535447388206607607181663903045907591201940478223621722118173270898487582987137708656414344685816179420855160986340457973820182883508387588163122354089264395604796675278966117567294812714812796820596564876450716066283126720010859041484786529056457896367683122960411136319", + "47266428956356393164697365098120418976400602706072312735924071745438532218237979333351774907308168340693326687317443721193266215155735814510792148768576498491199122744351399489453533553203833318691678263241941706256996197460424029012419012634671862283532342656309677173602509498417976091509154360039893165037637034737020327399910409885798185771003505320583967737293415979917317338985837385734747478364242020380416892056650841470869294527543597349250299539682430605173321029026555546832473048600327036845781970289288898317888427517364945316709081173840186150794397479045034008257793436817683392375274635794835245695887", + "436463808505957768574894870394349739623346440601945961161254440072143298152040105676491048248110146278752857839930515766167441407021501229924721335644557342265864606569000117714935185566842453630868849121480179691838399545644365571106757731317371758557990781880691336695584799313313687287468894148823761785582982549586183756806449017542622267874275103877481475534991201849912222670102069951687572917937634467778042874315463238062009202992087620963771759666448266532858079402669920025224220613419441069718482837399612644978839925207109870840278194042158748845445131729137117098529028886770063736487420613144045836803985635654192482395882603511950547826439092832800532152534003936926017612446606135655146445620623395788978726744728503058670046885876251527122350275750995227", + "11424167473351836398078306042624362277956429440521137061889702611766348760692206243140413411077394583180726863277012016602279290144126785129569474909173584789822341986742719230331946072730319555984484911716797058875905400999504305877245849119687509023232790273637466821052576859232452982061831009770786031785669030271542286603956118755585683996118896215213488875253101894663403069677745948305893849505434201763745232895780711972432011344857521691017896316861403206449421332243658855453435784006517202894181640562433575390821384210960117518650374602256601091379644034244332285065935413233557998331562749140202965844219336298970011513882564935538704289446968322281451907487362046511461221329799897350993370560697505809686438782036235372137015731304779072430260986460269894522159103008260495503005267165927542949439526272736586626709581721032189532726389643625590680105784844246152702670169304203783072275089194754889511973916207", + "1214855636816562637502584060163403830270705000634713483015101384881871978446801224798536155406895823305035467591632531067547890948695117172076954220727075688048751022421198712032848890056357845974246560748347918630050853933697792254955890439720297560693579400297062396904306270145886830719309296352765295712183040773146419022875165382778007040109957609739589875590885701126197906063620133954893216612678838507540777138437797705602453719559017633986486649523611975865005712371194067612263330335590526176087004421363598470302731349138773205901447704682181517904064735636518462452242791676541725292378925568296858010151852326316777511935037531017413910506921922450666933202278489024521263798482237150056835746454842662048692127173834433089016107854491097456725016327709663199738238442164843147132789153725513257167915555162094970853584447993125488607696008169807374736711297007473812256272245489405898470297178738029484459690836250560495461579533254473316340608217876781986188705928270735695752830825527963838355419762516246028680280988020401914551825487349990306976304093109384451438813251211051597392127491464898797406789175453067960072008590614886532333015881171367104445044718144312416815712216611576221546455968770801413440778423979", + NULL + }; + log = fopen("logs/expt.log", "w"); + logb = fopen("logs/expt_dr.log", "w"); + logc = fopen("logs/expt_2k.log", "w"); + for (n = 0; primes[n]; n++) { + SLEEP; + mp_read_radix(&a, primes[n], 10); + mp_zero(&b); + for (rr = 0; rr < (unsigned)mp_count_bits(&a); rr++) { + mp_mul_2(&b, &b); + b.dp[0] |= lbit(); + b.used += 1; + } + mp_sub_d(&a, 1, &c); + mp_mod(&b, &c, &b); + mp_set(&c, 3); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_exptmod(&c, &b, &a, &d)); + gg = (TIMFUNC() - gg)>>1; + if (tt > gg) tt = gg; + } while (++rr < 10); + mp_sub_d(&a, 1, &e); + mp_sub(&e, &b, &b); + mp_exptmod(&c, &b, &a, &e); /* c^(p-1-b) mod a */ + mp_mulmod(&e, &d, &a, &d); /* c^b * c^(p-1-b) == c^p-1 == 1 */ + if (mp_cmp_d(&d, 1)) { + printf("Different (%d)!!!\n", mp_count_bits(&a)); + draw(&d); + exit(0); + } + printf("Exponentiating\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); + fprintf((n < 6) ? logc : (n < 13) ? logb : log, "%d %9llu\n", mp_count_bits(&a), tt); + } + } + fclose(log); + fclose(logb); + fclose(logc); + + log = fopen("logs/invmod.log", "w"); + for (cnt = 4; cnt <= 128; cnt += 4) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + + do { + mp_add_d(&b, 1, &b); + mp_gcd(&a, &b, &c); + } while (mp_cmp_d(&c, 1) != MP_EQ); + + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_invmod(&b, &a, &c)); + gg = (TIMFUNC() - gg)>>1; + if (tt > gg) tt = gg; + } while (++rr < 1000); + mp_mulmod(&b, &c, &a, &d); + if (mp_cmp_d(&d, 1) != MP_EQ) { + printf("Failed to invert\n"); + return 0; + } + printf("Inverting mod\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); + fprintf(log, "%d %9llu\n", cnt*DIGIT_BIT, tt); + } + fclose(log); + + return 0; +} + diff --git a/libtommath/dep.pl b/libtommath/dep.pl new file mode 100644 index 0000000..22266e3 --- /dev/null +++ b/libtommath/dep.pl @@ -0,0 +1,121 @@ +#!/usr/bin/perl +# +# Walk through source, add labels and make classes +# +#use strict; + +my %deplist; + +#open class file and write preamble +open(CLASS, ">tommath_class.h") or die "Couldn't open tommath_class.h for writing\n"; +print CLASS "#if !(defined(LTM1) && defined(LTM2) && defined(LTM3))\n#if defined(LTM2)\n#define LTM3\n#endif\n#if defined(LTM1)\n#define LTM2\n#endif\n#define LTM1\n\n#if defined(LTM_ALL)\n"; + +foreach my $filename (glob "bn*.c") { + my $define = $filename; + + # convert filename to upper case so we can use it as a define + $define =~ tr/[a-z]/[A-Z]/; + $define =~ tr/\./_/; + print CLASS "#define $define\n"; + + # now copy text and apply #ifdef as required + my $apply = 0; + open(SRC, "<$filename"); + open(OUT, ">tmp"); + + # first line will be the #ifdef + my $line = ; + if ($line =~ /include/) { + print OUT $line; + } else { + print OUT "#include \n#ifdef $define\n$line"; + $apply = 1; + } + while () { + if (!($_ =~ /tommath\.h/)) { + print OUT $_; + } + } + if ($apply == 1) { + print OUT "#endif\n"; + } + close SRC; + close OUT; + + unlink($filename); + rename("tmp", $filename); +} +print CLASS "#endif\n\n"; + +# now do classes + +foreach my $filename (glob "bn*.c") { + open(SRC, "<$filename") or die "Can't open source file!\n"; + + # convert filename to upper case so we can use it as a define + $filename =~ tr/[a-z]/[A-Z]/; + $filename =~ tr/\./_/; + + print CLASS "#if defined($filename)\n"; + my $list = $filename; + + # scan for mp_* and make classes + while () { + my $line = $_; + while ($line =~ m/(fast_)*(s_)*mp\_[a-z_0-9]*/) { + $line = $'; + # now $& is the match, we want to skip over LTM keywords like + # mp_int, mp_word, mp_digit + if (!($& eq "mp_digit") && !($& eq "mp_word") && !($& eq "mp_int")) { + my $a = $&; + $a =~ tr/[a-z]/[A-Z]/; + $a = "BN_" . $a . "_C"; + if (!($list =~ /$a/)) { + print CLASS " #define $a\n"; + } + $list = $list . "," . $a; + } + } + } + @deplist{$filename} = $list; + + print CLASS "#endif\n\n"; + close SRC; +} + +print CLASS "#ifdef LTM3\n#define LTM_LAST\n#endif\n#include \n#include \n#else\n#define LTM_LAST\n#endif\n"; +close CLASS; + +#now let's make a cool call graph... + +open(OUT,">callgraph.txt"); +$indent = 0; +foreach (keys %deplist) { + $list = ""; + draw_func(@deplist{$_}); + print OUT "\n\n"; +} +close(OUT); + +sub draw_func() +{ + my @funcs = split(",", $_[0]); + if ($list =~ /@funcs[0]/) { + return; + } else { + $list = $list . @funcs[0]; + } + if ($indent == 0) { } + elsif ($indent >= 1) { print OUT "| " x ($indent - 1) . "+--->"; } + print OUT @funcs[0] . "\n"; + shift @funcs; + my $temp = $list; + foreach my $i (@funcs) { + ++$indent; + draw_func(@deplist{$i}); + --$indent; + } + $list = $temp; +} + + diff --git a/libtommath/etc/2kprime.1 b/libtommath/etc/2kprime.1 new file mode 100644 index 0000000..c41ded1 --- /dev/null +++ b/libtommath/etc/2kprime.1 @@ -0,0 +1,2 @@ +256-bits (k = 36113) = 115792089237316195423570985008687907853269984665640564039457584007913129603823 +512-bits (k = 38117) = 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006045979 diff --git a/libtommath/etc/2kprime.c b/libtommath/etc/2kprime.c new file mode 100644 index 0000000..d48b83e --- /dev/null +++ b/libtommath/etc/2kprime.c @@ -0,0 +1,80 @@ +/* Makes safe primes of a 2k nature */ +#include +#include + +int sizes[] = {256, 512, 768, 1024, 1536, 2048, 3072, 4096}; + +int main(void) +{ + char buf[2000]; + int x, y; + mp_int q, p; + FILE *out; + clock_t t1; + mp_digit z; + + mp_init_multi(&q, &p, NULL); + + out = fopen("2kprime.1", "w"); + for (x = 0; x < (int)(sizeof(sizes) / sizeof(sizes[0])); x++) { + top: + mp_2expt(&q, sizes[x]); + mp_add_d(&q, 3, &q); + z = -3; + + t1 = clock(); + for(;;) { + mp_sub_d(&q, 4, &q); + z += 4; + + if (z > MP_MASK) { + printf("No primes of size %d found\n", sizes[x]); + break; + } + + if (clock() - t1 > CLOCKS_PER_SEC) { + printf("."); fflush(stdout); +// sleep((clock() - t1 + CLOCKS_PER_SEC/2)/CLOCKS_PER_SEC); + t1 = clock(); + } + + /* quick test on q */ + mp_prime_is_prime(&q, 1, &y); + if (y == 0) { + continue; + } + + /* find (q-1)/2 */ + mp_sub_d(&q, 1, &p); + mp_div_2(&p, &p); + mp_prime_is_prime(&p, 3, &y); + if (y == 0) { + continue; + } + + /* test on q */ + mp_prime_is_prime(&q, 3, &y); + if (y == 0) { + continue; + } + + break; + } + + if (y == 0) { + ++sizes[x]; + goto top; + } + + mp_toradix(&q, buf, 10); + printf("\n\n%d-bits (k = %lu) = %s\n", sizes[x], z, buf); + fprintf(out, "%d-bits (k = %lu) = %s\n", sizes[x], z, buf); fflush(out); + } + + return 0; +} + + + + + diff --git a/libtommath/etc/drprime.c b/libtommath/etc/drprime.c new file mode 100644 index 0000000..0ab8ea6 --- /dev/null +++ b/libtommath/etc/drprime.c @@ -0,0 +1,60 @@ +/* Makes safe primes of a DR nature */ +#include + +int sizes[] = { 1+256/DIGIT_BIT, 1+512/DIGIT_BIT, 1+768/DIGIT_BIT, 1+1024/DIGIT_BIT, 1+2048/DIGIT_BIT, 1+4096/DIGIT_BIT }; +int main(void) +{ + int res, x, y; + char buf[4096]; + FILE *out; + mp_int a, b; + + mp_init(&a); + mp_init(&b); + + out = fopen("drprimes.txt", "w"); + for (x = 0; x < (int)(sizeof(sizes)/sizeof(sizes[0])); x++) { + top: + printf("Seeking a %d-bit safe prime\n", sizes[x] * DIGIT_BIT); + mp_grow(&a, sizes[x]); + mp_zero(&a); + for (y = 1; y < sizes[x]; y++) { + a.dp[y] = MP_MASK; + } + + /* make a DR modulus */ + a.dp[0] = -1; + a.used = sizes[x]; + + /* now loop */ + res = 0; + for (;;) { + a.dp[0] += 4; + if (a.dp[0] >= MP_MASK) break; + mp_prime_is_prime(&a, 1, &res); + if (res == 0) continue; + printf("."); fflush(stdout); + mp_sub_d(&a, 1, &b); + mp_div_2(&b, &b); + mp_prime_is_prime(&b, 3, &res); + if (res == 0) continue; + mp_prime_is_prime(&a, 3, &res); + if (res == 1) break; + } + + if (res != 1) { + printf("Error not DR modulus\n"); sizes[x] += 1; goto top; + } else { + mp_toradix(&a, buf, 10); + printf("\n\np == %s\n\n", buf); + fprintf(out, "%d-bit prime:\np == %s\n\n", mp_count_bits(&a), buf); fflush(out); + } + } + fclose(out); + + mp_clear(&a); + mp_clear(&b); + + return 0; +} + diff --git a/libtommath/etc/drprimes.28 b/libtommath/etc/drprimes.28 new file mode 100644 index 0000000..9d438ad --- /dev/null +++ b/libtommath/etc/drprimes.28 @@ -0,0 +1,25 @@ +DR safe primes for 28-bit digits. + +224-bit prime: +p == 26959946667150639794667015087019630673637144422540572481103341844143 + +532-bit prime: +p == 14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203368691747 + +784-bit prime: +p == 101745825697019260773923519755878567461315282017759829107608914364075275235254395622580447400994175578963163918967182013639660669771108475957692810857098847138903161308502419410142185759152435680068435915159402496058513611411688900243039 + +1036-bit prime: +p == 736335108039604595805923406147184530889923370574768772191969612422073040099331944991573923112581267542507986451953227192970402893063850485730703075899286013451337291468249027691733891486704001513279827771740183629161065194874727962517148100775228363421083691764065477590823919364012917984605619526140821798437127 + +1540-bit prime: +p == 38564998830736521417281865696453025806593491967131023221754800625044118265468851210705360385717536794615180260494208076605798671660719333199513807806252394423283413430106003596332513246682903994829528690198205120921557533726473585751382193953592127439965050261476810842071573684505878854588706623484573925925903505747545471088867712185004135201289273405614415899438276535626346098904241020877974002916168099951885406379295536200413493190419727789712076165162175783 + +2072-bit prime: +p == 542189391331696172661670440619180536749994166415993334151601745392193484590296600979602378676624808129613777993466242203025054573692562689251250471628358318743978285860720148446448885701001277560572526947619392551574490839286458454994488665744991822837769918095117129546414124448777033941223565831420390846864429504774477949153794689948747680362212954278693335653935890352619041936727463717926744868338358149568368643403037768649616778526013610493696186055899318268339432671541328195724261329606699831016666359440874843103020666106568222401047720269951530296879490444224546654729111504346660859907296364097126834834235287147 + +3080-bit prime: +p == 1487259134814709264092032648525971038895865645148901180585340454985524155135260217788758027400478312256339496385275012465661575576202252063145698732079880294664220579764848767704076761853197216563262660046602703973050798218246170835962005598561669706844469447435461092542265792444947706769615695252256130901271870341005768912974433684521436211263358097522726462083917939091760026658925757076733484173202927141441492573799914240222628795405623953109131594523623353044898339481494120112723445689647986475279242446083151413667587008191682564376412347964146113898565886683139407005941383669325997475076910488086663256335689181157957571445067490187939553165903773554290260531009121879044170766615232300936675369451260747671432073394867530820527479172464106442450727640226503746586340279816318821395210726268291535648506190714616083163403189943334431056876038286530365757187367147446004855912033137386225053275419626102417236133948503 + +4116-bit prime: +p == 1095121115716677802856811290392395128588168592409109494900178008967955253005183831872715423151551999734857184538199864469605657805519106717529655044054833197687459782636297255219742994736751541815269727940751860670268774903340296040006114013971309257028332849679096824800250742691718610670812374272414086863715763724622797509437062518082383056050144624962776302147890521249477060215148275163688301275847155316042279405557632639366066847442861422164832655874655824221577849928863023018366835675399949740429332468186340518172487073360822220449055340582568461568645259954873303616953776393853174845132081121976327462740354930744487429617202585015510744298530101547706821590188733515880733527449780963163909830077616357506845523215289297624086914545378511082534229620116563260168494523906566709418166011112754529766183554579321224940951177394088465596712620076240067370589036924024728375076210477267488679008016579588696191194060127319035195370137160936882402244399699172017835144537488486396906144217720028992863941288217185353914991583400421682751000603596655790990815525126154394344641336397793791497068253936771017031980867706707490224041075826337383538651825493679503771934836094655802776331664261631740148281763487765852746577808019633679 diff --git a/libtommath/etc/drprimes.txt b/libtommath/etc/drprimes.txt new file mode 100644 index 0000000..2c887ea --- /dev/null +++ b/libtommath/etc/drprimes.txt @@ -0,0 +1,6 @@ +280-bit prime: +p == 1942668892225729070919461906823518906642406839052139521251812409738904285204940164839 + +532-bit prime: +p == 14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203368691747 + diff --git a/libtommath/etc/makefile b/libtommath/etc/makefile new file mode 100644 index 0000000..99154d8 --- /dev/null +++ b/libtommath/etc/makefile @@ -0,0 +1,50 @@ +CFLAGS += -Wall -W -Wshadow -O3 -fomit-frame-pointer -funroll-loops -I../ + +# default lib name (requires install with root) +# LIBNAME=-ltommath + +# libname when you can't install the lib with install +LIBNAME=../libtommath.a + +#provable primes +pprime: pprime.o + $(CC) pprime.o $(LIBNAME) -o pprime + +# portable [well requires clock()] tuning app +tune: tune.o + $(CC) tune.o $(LIBNAME) -o tune + +# same app but using RDTSC for higher precision [requires 80586+], coff based gcc installs [e.g. ming, cygwin, djgpp] +tune86: tune.c + nasm -f coff timer.asm + $(CC) -DX86_TIMER $(CFLAGS) tune.c timer.o $(LIBNAME) -o tune86 + +# for cygwin +tune86c: tune.c + nasm -f gnuwin32 timer.asm + $(CC) -DX86_TIMER $(CFLAGS) tune.c timer.o $(LIBNAME) -o tune86 + +#make tune86 for linux or any ELF format +tune86l: tune.c + nasm -f elf -DUSE_ELF timer.asm + $(CC) -DX86_TIMER $(CFLAGS) tune.c timer.o $(LIBNAME) -o tune86l + +# spits out mersenne primes +mersenne: mersenne.o + $(CC) mersenne.o $(LIBNAME) -o mersenne + +# fines DR safe primes for the given config +drprime: drprime.o + $(CC) drprime.o $(LIBNAME) -o drprime + +# fines 2k safe primes for the given config +2kprime: 2kprime.o + $(CC) 2kprime.o $(LIBNAME) -o 2kprime + +mont: mont.o + $(CC) mont.o $(LIBNAME) -o mont + + +clean: + rm -f *.log *.o *.obj *.exe pprime tune mersenne drprime tune86 tune86l mont 2kprime pprime.dat \ + *.da *.dyn *.dpi *~ diff --git a/libtommath/etc/makefile.icc b/libtommath/etc/makefile.icc new file mode 100644 index 0000000..0a50728 --- /dev/null +++ b/libtommath/etc/makefile.icc @@ -0,0 +1,67 @@ +CC = icc + +CFLAGS += -I../ + +# optimize for SPEED +# +# -mcpu= can be pentium, pentiumpro (covers PII through PIII) or pentium4 +# -ax? specifies make code specifically for ? but compatible with IA-32 +# -x? specifies compile solely for ? [not specifically IA-32 compatible] +# +# where ? is +# K - PIII +# W - first P4 [Williamette] +# N - P4 Northwood +# P - P4 Prescott +# B - Blend of P4 and PM [mobile] +# +# Default to just generic max opts +CFLAGS += -O3 -xN -ip + +# default lib name (requires install with root) +# LIBNAME=-ltommath + +# libname when you can't install the lib with install +LIBNAME=../libtommath.a + +#provable primes +pprime: pprime.o + $(CC) pprime.o $(LIBNAME) -o pprime + +# portable [well requires clock()] tuning app +tune: tune.o + $(CC) tune.o $(LIBNAME) -o tune + +# same app but using RDTSC for higher precision [requires 80586+], coff based gcc installs [e.g. ming, cygwin, djgpp] +tune86: tune.c + nasm -f coff timer.asm + $(CC) -DX86_TIMER $(CFLAGS) tune.c timer.o $(LIBNAME) -o tune86 + +# for cygwin +tune86c: tune.c + nasm -f gnuwin32 timer.asm + $(CC) -DX86_TIMER $(CFLAGS) tune.c timer.o $(LIBNAME) -o tune86 + +#make tune86 for linux or any ELF format +tune86l: tune.c + nasm -f elf -DUSE_ELF timer.asm + $(CC) -DX86_TIMER $(CFLAGS) tune.c timer.o $(LIBNAME) -o tune86l + +# spits out mersenne primes +mersenne: mersenne.o + $(CC) mersenne.o $(LIBNAME) -o mersenne + +# fines DR safe primes for the given config +drprime: drprime.o + $(CC) drprime.o $(LIBNAME) -o drprime + +# fines 2k safe primes for the given config +2kprime: 2kprime.o + $(CC) 2kprime.o $(LIBNAME) -o 2kprime + +mont: mont.o + $(CC) mont.o $(LIBNAME) -o mont + + +clean: + rm -f *.log *.o *.obj *.exe pprime tune mersenne drprime tune86 tune86l mont 2kprime pprime.dat *.il diff --git a/libtommath/etc/makefile.msvc b/libtommath/etc/makefile.msvc new file mode 100644 index 0000000..2833372 --- /dev/null +++ b/libtommath/etc/makefile.msvc @@ -0,0 +1,23 @@ +#MSVC Makefile +# +#Tom St Denis + +CFLAGS = /I../ /Ox /DWIN32 /W3 + +pprime: pprime.obj + cl pprime.obj ../tommath.lib + +mersenne: mersenne.obj + cl mersenne.obj ../tommath.lib + +tune: tune.obj + cl tune.obj ../tommath.lib + +mont: mont.obj + cl mont.obj ../tommath.lib + +drprime: drprime.obj + cl drprime.obj ../tommath.lib + +2kprime: 2kprime.obj + cl 2kprime.obj ../tommath.lib diff --git a/libtommath/etc/mersenne.c b/libtommath/etc/mersenne.c new file mode 100644 index 0000000..1cd5b50 --- /dev/null +++ b/libtommath/etc/mersenne.c @@ -0,0 +1,140 @@ +/* Finds Mersenne primes using the Lucas-Lehmer test + * + * Tom St Denis, tomstdenis@iahu.ca + */ +#include +#include + +int +is_mersenne (long s, int *pp) +{ + mp_int n, u; + int res, k; + + *pp = 0; + + if ((res = mp_init (&n)) != MP_OKAY) { + return res; + } + + if ((res = mp_init (&u)) != MP_OKAY) { + goto LBL_N; + } + + /* n = 2^s - 1 */ + if ((res = mp_2expt(&n, s)) != MP_OKAY) { + goto LBL_MU; + } + if ((res = mp_sub_d (&n, 1, &n)) != MP_OKAY) { + goto LBL_MU; + } + + /* set u=4 */ + mp_set (&u, 4); + + /* for k=1 to s-2 do */ + for (k = 1; k <= s - 2; k++) { + /* u = u^2 - 2 mod n */ + if ((res = mp_sqr (&u, &u)) != MP_OKAY) { + goto LBL_MU; + } + if ((res = mp_sub_d (&u, 2, &u)) != MP_OKAY) { + goto LBL_MU; + } + + /* make sure u is positive */ + while (u.sign == MP_NEG) { + if ((res = mp_add (&u, &n, &u)) != MP_OKAY) { + goto LBL_MU; + } + } + + /* reduce */ + if ((res = mp_reduce_2k (&u, &n, 1)) != MP_OKAY) { + goto LBL_MU; + } + } + + /* if u == 0 then its prime */ + if (mp_iszero (&u) == 1) { + mp_prime_is_prime(&n, 8, pp); + if (*pp != 1) printf("FAILURE\n"); + } + + res = MP_OKAY; +LBL_MU:mp_clear (&u); +LBL_N:mp_clear (&n); + return res; +} + +/* square root of a long < 65536 */ +long +i_sqrt (long x) +{ + long x1, x2; + + x2 = 16; + do { + x1 = x2; + x2 = x1 - ((x1 * x1) - x) / (2 * x1); + } while (x1 != x2); + + if (x1 * x1 > x) { + --x1; + } + + return x1; +} + +/* is the long prime by brute force */ +int +isprime (long k) +{ + long y, z; + + y = i_sqrt (k); + for (z = 2; z <= y; z++) { + if ((k % z) == 0) + return 0; + } + return 1; +} + + +int +main (void) +{ + int pp; + long k; + clock_t tt; + + k = 3; + + for (;;) { + /* start time */ + tt = clock (); + + /* test if 2^k - 1 is prime */ + if (is_mersenne (k, &pp) != MP_OKAY) { + printf ("Whoa error\n"); + return -1; + } + + if (pp == 1) { + /* count time */ + tt = clock () - tt; + + /* display if prime */ + printf ("2^%-5ld - 1 is prime, test took %ld ticks\n", k, tt); + } + + /* goto next odd exponent */ + k += 2; + + /* but make sure its prime */ + while (isprime (k) == 0) { + k += 2; + } + } + return 0; +} diff --git a/libtommath/etc/mont.c b/libtommath/etc/mont.c new file mode 100644 index 0000000..dbf1735 --- /dev/null +++ b/libtommath/etc/mont.c @@ -0,0 +1,46 @@ +/* tests the montgomery routines */ +#include + +int main(void) +{ + mp_int modulus, R, p, pp; + mp_digit mp; + long x, y; + + srand(time(NULL)); + mp_init_multi(&modulus, &R, &p, &pp, NULL); + + /* loop through various sizes */ + for (x = 4; x < 256; x++) { + printf("DIGITS == %3ld...", x); fflush(stdout); + + /* make up the odd modulus */ + mp_rand(&modulus, x); + modulus.dp[0] |= 1; + + /* now find the R value */ + mp_montgomery_calc_normalization(&R, &modulus); + mp_montgomery_setup(&modulus, &mp); + + /* now run through a bunch tests */ + for (y = 0; y < 1000; y++) { + mp_rand(&p, x/2); /* p = random */ + mp_mul(&p, &R, &pp); /* pp = R * p */ + mp_montgomery_reduce(&pp, &modulus, mp); + + /* should be equal to p */ + if (mp_cmp(&pp, &p) != MP_EQ) { + printf("FAILURE!\n"); + exit(-1); + } + } + printf("PASSED\n"); + } + + return 0; +} + + + + + diff --git a/libtommath/etc/pprime.c b/libtommath/etc/pprime.c new file mode 100644 index 0000000..26e0d84 --- /dev/null +++ b/libtommath/etc/pprime.c @@ -0,0 +1,396 @@ +/* Generates provable primes + * + * See http://iahu.ca:8080/papers/pp.pdf for more info. + * + * Tom St Denis, tomstdenis@iahu.ca, http://tom.iahu.ca + */ +#include +#include "tommath.h" + +int n_prime; +FILE *primes; + +/* fast square root */ +static mp_digit +i_sqrt (mp_word x) +{ + mp_word x1, x2; + + x2 = x; + do { + x1 = x2; + x2 = x1 - ((x1 * x1) - x) / (2 * x1); + } while (x1 != x2); + + if (x1 * x1 > x) { + --x1; + } + + return x1; +} + + +/* generates a prime digit */ +static void gen_prime (void) +{ + mp_digit r, x, y, next; + FILE *out; + + out = fopen("pprime.dat", "wb"); + + /* write first set of primes */ + r = 3; fwrite(&r, 1, sizeof(mp_digit), out); + r = 5; fwrite(&r, 1, sizeof(mp_digit), out); + r = 7; fwrite(&r, 1, sizeof(mp_digit), out); + r = 11; fwrite(&r, 1, sizeof(mp_digit), out); + r = 13; fwrite(&r, 1, sizeof(mp_digit), out); + r = 17; fwrite(&r, 1, sizeof(mp_digit), out); + r = 19; fwrite(&r, 1, sizeof(mp_digit), out); + r = 23; fwrite(&r, 1, sizeof(mp_digit), out); + r = 29; fwrite(&r, 1, sizeof(mp_digit), out); + r = 31; fwrite(&r, 1, sizeof(mp_digit), out); + + /* get square root, since if 'r' is composite its factors must be < than this */ + y = i_sqrt (r); + next = (y + 1) * (y + 1); + + for (;;) { + do { + r += 2; /* next candidate */ + r &= MP_MASK; + if (r < 31) break; + + /* update sqrt ? */ + if (next <= r) { + ++y; + next = (y + 1) * (y + 1); + } + + /* loop if divisible by 3,5,7,11,13,17,19,23,29 */ + if ((r % 3) == 0) { + x = 0; + continue; + } + if ((r % 5) == 0) { + x = 0; + continue; + } + if ((r % 7) == 0) { + x = 0; + continue; + } + if ((r % 11) == 0) { + x = 0; + continue; + } + if ((r % 13) == 0) { + x = 0; + continue; + } + if ((r % 17) == 0) { + x = 0; + continue; + } + if ((r % 19) == 0) { + x = 0; + continue; + } + if ((r % 23) == 0) { + x = 0; + continue; + } + if ((r % 29) == 0) { + x = 0; + continue; + } + + /* now check if r is divisible by x + k={1,7,11,13,17,19,23,29} */ + for (x = 30; x <= y; x += 30) { + if ((r % (x + 1)) == 0) { + x = 0; + break; + } + if ((r % (x + 7)) == 0) { + x = 0; + break; + } + if ((r % (x + 11)) == 0) { + x = 0; + break; + } + if ((r % (x + 13)) == 0) { + x = 0; + break; + } + if ((r % (x + 17)) == 0) { + x = 0; + break; + } + if ((r % (x + 19)) == 0) { + x = 0; + break; + } + if ((r % (x + 23)) == 0) { + x = 0; + break; + } + if ((r % (x + 29)) == 0) { + x = 0; + break; + } + } + } while (x == 0); + if (r > 31) { fwrite(&r, 1, sizeof(mp_digit), out); printf("%9d\r", r); fflush(stdout); } + if (r < 31) break; + } + + fclose(out); +} + +void load_tab(void) +{ + primes = fopen("pprime.dat", "rb"); + if (primes == NULL) { + gen_prime(); + primes = fopen("pprime.dat", "rb"); + } + fseek(primes, 0, SEEK_END); + n_prime = ftell(primes) / sizeof(mp_digit); +} + +mp_digit prime_digit(void) +{ + int n; + mp_digit d; + + n = abs(rand()) % n_prime; + fseek(primes, n * sizeof(mp_digit), SEEK_SET); + fread(&d, 1, sizeof(mp_digit), primes); + return d; +} + + +/* makes a prime of at least k bits */ +int +pprime (int k, int li, mp_int * p, mp_int * q) +{ + mp_int a, b, c, n, x, y, z, v; + int res, ii; + static const mp_digit bases[] = { 2, 3, 5, 7, 11, 13, 17, 19 }; + + /* single digit ? */ + if (k <= (int) DIGIT_BIT) { + mp_set (p, prime_digit ()); + return MP_OKAY; + } + + if ((res = mp_init (&c)) != MP_OKAY) { + return res; + } + + if ((res = mp_init (&v)) != MP_OKAY) { + goto LBL_C; + } + + /* product of first 50 primes */ + if ((res = + mp_read_radix (&v, + "19078266889580195013601891820992757757219839668357012055907516904309700014933909014729740190", + 10)) != MP_OKAY) { + goto LBL_V; + } + + if ((res = mp_init (&a)) != MP_OKAY) { + goto LBL_V; + } + + /* set the prime */ + mp_set (&a, prime_digit ()); + + if ((res = mp_init (&b)) != MP_OKAY) { + goto LBL_A; + } + + if ((res = mp_init (&n)) != MP_OKAY) { + goto LBL_B; + } + + if ((res = mp_init (&x)) != MP_OKAY) { + goto LBL_N; + } + + if ((res = mp_init (&y)) != MP_OKAY) { + goto LBL_X; + } + + if ((res = mp_init (&z)) != MP_OKAY) { + goto LBL_Y; + } + + /* now loop making the single digit */ + while (mp_count_bits (&a) < k) { + fprintf (stderr, "prime has %4d bits left\r", k - mp_count_bits (&a)); + fflush (stderr); + top: + mp_set (&b, prime_digit ()); + + /* now compute z = a * b * 2 */ + if ((res = mp_mul (&a, &b, &z)) != MP_OKAY) { /* z = a * b */ + goto LBL_Z; + } + + if ((res = mp_copy (&z, &c)) != MP_OKAY) { /* c = a * b */ + goto LBL_Z; + } + + if ((res = mp_mul_2 (&z, &z)) != MP_OKAY) { /* z = 2 * a * b */ + goto LBL_Z; + } + + /* n = z + 1 */ + if ((res = mp_add_d (&z, 1, &n)) != MP_OKAY) { /* n = z + 1 */ + goto LBL_Z; + } + + /* check (n, v) == 1 */ + if ((res = mp_gcd (&n, &v, &y)) != MP_OKAY) { /* y = (n, v) */ + goto LBL_Z; + } + + if (mp_cmp_d (&y, 1) != MP_EQ) + goto top; + + /* now try base x=bases[ii] */ + for (ii = 0; ii < li; ii++) { + mp_set (&x, bases[ii]); + + /* compute x^a mod n */ + if ((res = mp_exptmod (&x, &a, &n, &y)) != MP_OKAY) { /* y = x^a mod n */ + goto LBL_Z; + } + + /* if y == 1 loop */ + if (mp_cmp_d (&y, 1) == MP_EQ) + continue; + + /* now x^2a mod n */ + if ((res = mp_sqrmod (&y, &n, &y)) != MP_OKAY) { /* y = x^2a mod n */ + goto LBL_Z; + } + + if (mp_cmp_d (&y, 1) == MP_EQ) + continue; + + /* compute x^b mod n */ + if ((res = mp_exptmod (&x, &b, &n, &y)) != MP_OKAY) { /* y = x^b mod n */ + goto LBL_Z; + } + + /* if y == 1 loop */ + if (mp_cmp_d (&y, 1) == MP_EQ) + continue; + + /* now x^2b mod n */ + if ((res = mp_sqrmod (&y, &n, &y)) != MP_OKAY) { /* y = x^2b mod n */ + goto LBL_Z; + } + + if (mp_cmp_d (&y, 1) == MP_EQ) + continue; + + /* compute x^c mod n == x^ab mod n */ + if ((res = mp_exptmod (&x, &c, &n, &y)) != MP_OKAY) { /* y = x^ab mod n */ + goto LBL_Z; + } + + /* if y == 1 loop */ + if (mp_cmp_d (&y, 1) == MP_EQ) + continue; + + /* now compute (x^c mod n)^2 */ + if ((res = mp_sqrmod (&y, &n, &y)) != MP_OKAY) { /* y = x^2ab mod n */ + goto LBL_Z; + } + + /* y should be 1 */ + if (mp_cmp_d (&y, 1) != MP_EQ) + continue; + break; + } + + /* no bases worked? */ + if (ii == li) + goto top; + +{ + char buf[4096]; + + mp_toradix(&n, buf, 10); + printf("Certificate of primality for:\n%s\n\n", buf); + mp_toradix(&a, buf, 10); + printf("A == \n%s\n\n", buf); + mp_toradix(&b, buf, 10); + printf("B == \n%s\n\nG == %d\n", buf, bases[ii]); + printf("----------------------------------------------------------------\n"); +} + + /* a = n */ + mp_copy (&n, &a); + } + + /* get q to be the order of the large prime subgroup */ + mp_sub_d (&n, 1, q); + mp_div_2 (q, q); + mp_div (q, &b, q, NULL); + + mp_exch (&n, p); + + res = MP_OKAY; +LBL_Z:mp_clear (&z); +LBL_Y:mp_clear (&y); +LBL_X:mp_clear (&x); +LBL_N:mp_clear (&n); +LBL_B:mp_clear (&b); +LBL_A:mp_clear (&a); +LBL_V:mp_clear (&v); +LBL_C:mp_clear (&c); + return res; +} + + +int +main (void) +{ + mp_int p, q; + char buf[4096]; + int k, li; + clock_t t1; + + srand (time (NULL)); + load_tab(); + + printf ("Enter # of bits: \n"); + fgets (buf, sizeof (buf), stdin); + sscanf (buf, "%d", &k); + + printf ("Enter number of bases to try (1 to 8):\n"); + fgets (buf, sizeof (buf), stdin); + sscanf (buf, "%d", &li); + + + mp_init (&p); + mp_init (&q); + + t1 = clock (); + pprime (k, li, &p, &q); + t1 = clock () - t1; + + printf ("\n\nTook %ld ticks, %d bits\n", t1, mp_count_bits (&p)); + + mp_toradix (&p, buf, 10); + printf ("P == %s\n", buf); + mp_toradix (&q, buf, 10); + printf ("Q == %s\n", buf); + + return 0; +} diff --git a/libtommath/etc/prime.1024 b/libtommath/etc/prime.1024 new file mode 100644 index 0000000..5636e2d --- /dev/null +++ b/libtommath/etc/prime.1024 @@ -0,0 +1,414 @@ +Enter # of bits: +Enter number of bases to try (1 to 8): +Certificate of primality for: +36360080703173363 + +A == +89963569 + +B == +202082249 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +4851595597739856136987139 + +A == +36360080703173363 + +B == +66715963 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +19550639734462621430325731591027 + +A == +4851595597739856136987139 + +B == +2014867 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +10409036141344317165691858509923818734539 + +A == +19550639734462621430325731591027 + +B == +266207047 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +1049829549988285012736475602118094726647504414203 + +A == +10409036141344317165691858509923818734539 + +B == +50428759 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +77194737385528288387712399596835459931920358844586615003 + +A == +1049829549988285012736475602118094726647504414203 + +B == +36765367 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +35663756695365208574443215955488689578374232732893628896541201763 + +A == +77194737385528288387712399596835459931920358844586615003 + +B == +230998627 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +16711831463502165169495622246023119698415848120292671294127567620396469803 + +A == +35663756695365208574443215955488689578374232732893628896541201763 + +B == +234297127 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +6163534781560285962890718925972249753147470953579266394395432475622345597103528739 + +A == +16711831463502165169495622246023119698415848120292671294127567620396469803 + +B == +184406323 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +814258256205243497704094951432575867360065658372158511036259934640748088306764553488803787 + +A == +6163534781560285962890718925972249753147470953579266394395432475622345597103528739 + +B == +66054487 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +176469695533271657902814176811660357049007467856432383037590673407330246967781451723764079581998187 + +A == +814258256205243497704094951432575867360065658372158511036259934640748088306764553488803787 + +B == +108362239 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +44924492859445516541759485198544012102424796403707253610035148063863073596051272171194806669756971406400419 + +A == +176469695533271657902814176811660357049007467856432383037590673407330246967781451723764079581998187 + +B == +127286707 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +20600996927219343383225424320134474929609459588323857796871086845924186191561749519858600696159932468024710985371059 + +A == +44924492859445516541759485198544012102424796403707253610035148063863073596051272171194806669756971406400419 + +B == +229284691 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +6295696427695493110141186605837397185848992307978456138112526915330347715236378041486547994708748840844217371233735072572979 + +A == +20600996927219343383225424320134474929609459588323857796871086845924186191561749519858600696159932468024710985371059 + +B == +152800771 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +3104984078042317488749073016454213579257792635142218294052134804187631661145261015102617582090263808696699966840735333252107678792123 + +A == +6295696427695493110141186605837397185848992307978456138112526915330347715236378041486547994708748840844217371233735072572979 + +B == +246595759 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +26405175827665701256325699315126705508919255051121452292124404943796947287968603975320562847910946802396632302209435206627913466015741799499 + +A == +3104984078042317488749073016454213579257792635142218294052134804187631661145261015102617582090263808696699966840735333252107678792123 + +B == +4252063 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +11122146237908413610034600609460545703591095894418599759742741406628055069007082998134905595800236452010905900391505454890446585211975124558601770163 + +A == +26405175827665701256325699315126705508919255051121452292124404943796947287968603975320562847910946802396632302209435206627913466015741799499 + +B == +210605419 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +1649861642047798890580354082088712649911849362201343649289384923147797960364736011515757482030049342943790127685185806092659832129486307035500638595572396187 + +A == +11122146237908413610034600609460545703591095894418599759742741406628055069007082998134905595800236452010905900391505454890446585211975124558601770163 + +B == +74170111 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +857983367126266717607389719637086684134462613006415859877666235955788392464081914127715967940968197765042399904117392707518175220864852816390004264107201177394565363 + +A == +1649861642047798890580354082088712649911849362201343649289384923147797960364736011515757482030049342943790127685185806092659832129486307035500638595572396187 + +B == +260016763 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +175995909353623703257072120479340610010337144085688850745292031336724691277374210929188442230237711063783727092685448718515661641054886101716698390145283196296702450566161283 + +A == +857983367126266717607389719637086684134462613006415859877666235955788392464081914127715967940968197765042399904117392707518175220864852816390004264107201177394565363 + +B == +102563707 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +48486002551155667224487059713350447239190772068092630563272168418880661006593537218144160068395218642353495339720640699721703003648144463556291315694787862009052641640656933232794283 + +A == +175995909353623703257072120479340610010337144085688850745292031336724691277374210929188442230237711063783727092685448718515661641054886101716698390145283196296702450566161283 + +B == +137747527 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +13156468011529105025061495011938518171328604045212410096476697450506055664012861932372156505805788068791146986282263016790631108386790291275939575123375304599622623328517354163964228279867403 + +A == +48486002551155667224487059713350447239190772068092630563272168418880661006593537218144160068395218642353495339720640699721703003648144463556291315694787862009052641640656933232794283 + +B == +135672847 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +6355194692790533601105154341731997464407930009404822926832136060319955058388106456084549316415200519472481147942263916585428906582726749131479465958107142228236909665306781538860053107680830113869123 + +A == +13156468011529105025061495011938518171328604045212410096476697450506055664012861932372156505805788068791146986282263016790631108386790291275939575123375304599622623328517354163964228279867403 + +B == +241523587 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +3157116676535430302794438027544146642863331358530722860333745617571010460905857862561870488000265751138954271040017454405707755458702044884023184574412221802502351503929935224995314581932097706874819348858083 + +A == +6355194692790533601105154341731997464407930009404822926832136060319955058388106456084549316415200519472481147942263916585428906582726749131479465958107142228236909665306781538860053107680830113869123 + +B == +248388667 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +390533129219992506725320633489467713907837370444962163378727819939092929448752905310115311180032249230394348337568973177802874166228132778126338883671958897238722734394783244237133367055422297736215754829839364158067 + +A == +3157116676535430302794438027544146642863331358530722860333745617571010460905857862561870488000265751138954271040017454405707755458702044884023184574412221802502351503929935224995314581932097706874819348858083 + +B == +61849651 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +48583654555070224891047847050732516652910250240135992225139515777200432486685999462997073444468380434359929499498804723793106565291183220444221080449740542884172281158126259373095216435009661050109711341419005972852770440739 + +A == +390533129219992506725320633489467713907837370444962163378727819939092929448752905310115311180032249230394348337568973177802874166228132778126338883671958897238722734394783244237133367055422297736215754829839364158067 + +B == +62201707 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +25733035251905120039135866524384525138869748427727001128764704499071378939227862068500633813538831598776578372709963673670934388213622433800015759585470542686333039614931682098922935087822950084908715298627996115185849260703525317419 + +A == +48583654555070224891047847050732516652910250240135992225139515777200432486685999462997073444468380434359929499498804723793106565291183220444221080449740542884172281158126259373095216435009661050109711341419005972852770440739 + +B == +264832231 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +2804594464939948901906623499531073917980499195397462605359913717827014360538186518540781517129548650937632008683280555602633122170458773895504894807182664540529077836857897972175530148107545939211339044386106111633510166695386323426241809387 + +A == +25733035251905120039135866524384525138869748427727001128764704499071378939227862068500633813538831598776578372709963673670934388213622433800015759585470542686333039614931682098922935087822950084908715298627996115185849260703525317419 + +B == +54494047 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +738136612083433720096707308165797114449914259256979340471077690416567237592465306112484843530074782721390528773594351482384711900456440808251196845265132086486672447136822046628407467459921823150600138073268385534588238548865012638209515923513516547 + +A == +2804594464939948901906623499531073917980499195397462605359913717827014360538186518540781517129548650937632008683280555602633122170458773895504894807182664540529077836857897972175530148107545939211339044386106111633510166695386323426241809387 + +B == +131594179 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +392847529056126766528615419937165193421166694172790666626558750047057558168124866940509180171236517681470100877687445134633784815352076138790217228749332398026714192707447855731679485746120589851992221508292976900578299504461333767437280988393026452846013683 + +A == +738136612083433720096707308165797114449914259256979340471077690416567237592465306112484843530074782721390528773594351482384711900456440808251196845265132086486672447136822046628407467459921823150600138073268385534588238548865012638209515923513516547 + +B == +266107603 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +168459393231883505975876919268398655632763956627405508859662408056221544310200546265681845397346956580604208064328814319465940958080244889692368602591598503944015835190587740756859842792554282496742843600573336023639256008687581291233481455395123454655488735304365627 + +A == +392847529056126766528615419937165193421166694172790666626558750047057558168124866940509180171236517681470100877687445134633784815352076138790217228749332398026714192707447855731679485746120589851992221508292976900578299504461333767437280988393026452846013683 + +B == +214408111 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +14865774288636941404884923981945833072113667565310054952177860608355263252462409554658728941191929400198053290113492910272458441655458514080123870132092365833472436407455910185221474386718838138135065780840839893113912689594815485706154461164071775481134379794909690501684643 + +A == +168459393231883505975876919268398655632763956627405508859662408056221544310200546265681845397346956580604208064328814319465940958080244889692368602591598503944015835190587740756859842792554282496742843600573336023639256008687581291233481455395123454655488735304365627 + +B == +44122723 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +1213301773203241614897109856134894783021668292000023984098824423682568173639394290886185366993108292039068940333907505157813934962357206131450244004178619265868614859794316361031904412926604138893775068853175215502104744339658944443630407632290152772487455298652998368296998719996019 + +A == +14865774288636941404884923981945833072113667565310054952177860608355263252462409554658728941191929400198053290113492910272458441655458514080123870132092365833472436407455910185221474386718838138135065780840839893113912689594815485706154461164071775481134379794909690501684643 + +B == +40808563 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +186935245989515158127969129347464851990429060640910951266513740972248428651109062997368144722015290092846666943896556191257222521203647606911446635194198213436423080005867489516421559330500722264446765608763224572386410155413161172707802334865729654109050873820610813855041667633843601286843 + +A == +1213301773203241614897109856134894783021668292000023984098824423682568173639394290886185366993108292039068940333907505157813934962357206131450244004178619265868614859794316361031904412926604138893775068853175215502104744339658944443630407632290152772487455298652998368296998719996019 + +B == +77035759 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +83142661079751490510739960019112406284111408348732592580459037404394946037094409915127399165633756159385609671956087845517678367844901424617866988187132480585966721962585586730693443536100138246516868613250009028187662080828012497191775172228832247706080044971423654632146928165751885302331924491683 + +A == +186935245989515158127969129347464851990429060640910951266513740972248428651109062997368144722015290092846666943896556191257222521203647606911446635194198213436423080005867489516421559330500722264446765608763224572386410155413161172707802334865729654109050873820610813855041667633843601286843 + +B == +222383587 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +3892354773803809855317742245039794448230625839512638747643814927766738642436392673485997449586432241626440927010641564064764336402368634186618250134234189066179771240232458249806850838490410473462391401438160528157981942499581634732706904411807195259620779379274017704050790865030808501633772117217899534443 + +A == +83142661079751490510739960019112406284111408348732592580459037404394946037094409915127399165633756159385609671956087845517678367844901424617866988187132480585966721962585586730693443536100138246516868613250009028187662080828012497191775172228832247706080044971423654632146928165751885302331924491683 + +B == +23407687 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +1663606652988091811284014366560171522582683318514519379924950390627250155440313691226744227787921928894551755219495501365555370027257568506349958010457682898612082048959464465369892842603765280317696116552850664773291371490339084156052244256635115997453399761029567033971998617303988376172539172702246575225837054723 + +A == +3892354773803809855317742245039794448230625839512638747643814927766738642436392673485997449586432241626440927010641564064764336402368634186618250134234189066179771240232458249806850838490410473462391401438160528157981942499581634732706904411807195259620779379274017704050790865030808501633772117217899534443 + +B == +213701827 + +G == 2 +---------------------------------------------------------------- + + +Took 33057 ticks, 1048 bits +P == 1663606652988091811284014366560171522582683318514519379924950390627250155440313691226744227787921928894551755219495501365555370027257568506349958010457682898612082048959464465369892842603765280317696116552850664773291371490339084156052244256635115997453399761029567033971998617303988376172539172702246575225837054723 +Q == 3892354773803809855317742245039794448230625839512638747643814927766738642436392673485997449586432241626440927010641564064764336402368634186618250134234189066179771240232458249806850838490410473462391401438160528157981942499581634732706904411807195259620779379274017704050790865030808501633772117217899534443 diff --git a/libtommath/etc/prime.512 b/libtommath/etc/prime.512 new file mode 100644 index 0000000..cb6ec30 --- /dev/null +++ b/libtommath/etc/prime.512 @@ -0,0 +1,205 @@ +Enter # of bits: +Enter number of bases to try (1 to 8): +Certificate of primality for: +85933926807634727 + +A == +253758023 + +B == +169322581 + +G == 5 +---------------------------------------------------------------- +Certificate of primality for: +23930198825086241462113799 + +A == +85933926807634727 + +B == +139236037 + +G == 11 +---------------------------------------------------------------- +Certificate of primality for: +6401844647261612602378676572510019 + +A == +23930198825086241462113799 + +B == +133760791 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +269731366027728777712034888684015329354259 + +A == +6401844647261612602378676572510019 + +B == +21066691 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +37942338209025571690075025099189467992329684223707 + +A == +269731366027728777712034888684015329354259 + +B == +70333567 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +15306904714258982484473490774101705363308327436988160248323 + +A == +37942338209025571690075025099189467992329684223707 + +B == +201712723 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +1616744757018513392810355191503853040357155275733333124624513530099 + +A == +15306904714258982484473490774101705363308327436988160248323 + +B == +52810963 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +464222094814208047161771036072622485188658077940154689939306386289983787983 + +A == +1616744757018513392810355191503853040357155275733333124624513530099 + +B == +143566909 + +G == 5 +---------------------------------------------------------------- +Certificate of primality for: +187429931674053784626487560729643601208757374994177258429930699354770049369025096447 + +A == +464222094814208047161771036072622485188658077940154689939306386289983787983 + +B == +201875281 + +G == 5 +---------------------------------------------------------------- +Certificate of primality for: +100579220846502621074093727119851331775052664444339632682598589456666938521976625305832917563 + +A == +187429931674053784626487560729643601208757374994177258429930699354770049369025096447 + +B == +268311523 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +1173616081309758475197022137833792133815753368965945885089720153370737965497134878651384030219765163 + +A == +100579220846502621074093727119851331775052664444339632682598589456666938521976625305832917563 + +B == +5834287 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +191456913489905913185935197655672585713573070349044195411728114905691721186574907738081340754373032735283623 + +A == +1173616081309758475197022137833792133815753368965945885089720153370737965497134878651384030219765163 + +B == +81567097 + +G == 5 +---------------------------------------------------------------- +Certificate of primality for: +57856530489201750164178576399448868489243874083056587683743345599898489554401618943240901541005080049321706789987519 + +A == +191456913489905913185935197655672585713573070349044195411728114905691721186574907738081340754373032735283623 + +B == +151095433 + +G == 7 +---------------------------------------------------------------- +Certificate of primality for: +13790529750452576698109671710773784949185621244122040804792403407272729038377767162233653248852099545134831722512085881814803 + +A == +57856530489201750164178576399448868489243874083056587683743345599898489554401618943240901541005080049321706789987519 + +B == +119178679 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +7075985989000817742677547821106534174334812111605018857703825637170140040509067704269696198231266351631132464035671858077052876058979 + +A == +13790529750452576698109671710773784949185621244122040804792403407272729038377767162233653248852099545134831722512085881814803 + +B == +256552363 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +1227273006232588072907488910282307435921226646895131225407452056677899411162892829564455154080310937471747140942360789623819327234258162420463 + +A == +7075985989000817742677547821106534174334812111605018857703825637170140040509067704269696198231266351631132464035671858077052876058979 + +B == +86720989 + +G == 5 +---------------------------------------------------------------- +Certificate of primality for: +446764896913554613686067036908702877942872355053329937790398156069936255759889884246832779737114032666318220500106499161852193765380831330106375235763 + +A == +1227273006232588072907488910282307435921226646895131225407452056677899411162892829564455154080310937471747140942360789623819327234258162420463 + +B == +182015287 + +G == 2 +---------------------------------------------------------------- +Certificate of primality for: +5290203010849586596974953717018896543907195901082056939587768479377028575911127944611236020459652034082251335583308070846379514569838984811187823420951275243 + +A == +446764896913554613686067036908702877942872355053329937790398156069936255759889884246832779737114032666318220500106499161852193765380831330106375235763 + +B == +5920567 + +G == 2 +---------------------------------------------------------------- + + +Took 3454 ticks, 521 bits +P == 5290203010849586596974953717018896543907195901082056939587768479377028575911127944611236020459652034082251335583308070846379514569838984811187823420951275243 +Q == 446764896913554613686067036908702877942872355053329937790398156069936255759889884246832779737114032666318220500106499161852193765380831330106375235763 diff --git a/libtommath/etc/timer.asm b/libtommath/etc/timer.asm new file mode 100644 index 0000000..35890d9 --- /dev/null +++ b/libtommath/etc/timer.asm @@ -0,0 +1,37 @@ +; x86 timer in NASM +; +; Tom St Denis, tomstdenis@iahu.ca +[bits 32] +[section .data] +time dd 0, 0 + +[section .text] + +%ifdef USE_ELF +[global t_start] +t_start: +%else +[global _t_start] +_t_start: +%endif + push edx + push eax + rdtsc + mov [time+0],edx + mov [time+4],eax + pop eax + pop edx + ret + +%ifdef USE_ELF +[global t_read] +t_read: +%else +[global _t_read] +_t_read: +%endif + rdtsc + sub eax,[time+4] + sbb edx,[time+0] + ret + \ No newline at end of file diff --git a/libtommath/etc/tune.c b/libtommath/etc/tune.c new file mode 100644 index 0000000..14aace2 --- /dev/null +++ b/libtommath/etc/tune.c @@ -0,0 +1,107 @@ +/* Tune the Karatsuba parameters + * + * Tom St Denis, tomstdenis@iahu.ca + */ +#include +#include + +/* how many times todo each size mult. Depends on your computer. For slow computers + * this can be low like 5 or 10. For fast [re: Athlon] should be 25 - 50 or so + */ +#define TIMES (1UL<<14UL) + + +#ifndef X86_TIMER + +/* generic ISO C timer */ +ulong64 LBL_T; +void t_start(void) { LBL_T = clock(); } +ulong64 t_read(void) { return clock() - LBL_T; } + +#else +extern void t_start(void); +extern ulong64 t_read(void); +#endif + +ulong64 time_mult(int size, int s) +{ + unsigned long x; + mp_int a, b, c; + ulong64 t1; + + mp_init (&a); + mp_init (&b); + mp_init (&c); + + mp_rand (&a, size); + mp_rand (&b, size); + + if (s == 1) { + KARATSUBA_MUL_CUTOFF = size; + } else { + KARATSUBA_MUL_CUTOFF = 100000; + } + + t_start(); + for (x = 0; x < TIMES; x++) { + mp_mul(&a,&b,&c); + } + t1 = t_read(); + mp_clear (&a); + mp_clear (&b); + mp_clear (&c); + return t1; +} + +ulong64 time_sqr(int size, int s) +{ + unsigned long x; + mp_int a, b; + ulong64 t1; + + mp_init (&a); + mp_init (&b); + + mp_rand (&a, size); + + if (s == 1) { + KARATSUBA_SQR_CUTOFF = size; + } else { + KARATSUBA_SQR_CUTOFF = 100000; + } + + t_start(); + for (x = 0; x < TIMES; x++) { + mp_sqr(&a,&b); + } + t1 = t_read(); + mp_clear (&a); + mp_clear (&b); + return t1; +} + +int +main (void) +{ + ulong64 t1, t2; + int x, y; + + for (x = 8; ; x += 2) { + t1 = time_mult(x, 0); + t2 = time_mult(x, 1); + printf("%d: %9llu %9llu, %9llu\n", x, t1, t2, t2 - t1); + if (t2 < t1) break; + } + y = x; + + for (x = 8; ; x += 2) { + t1 = time_sqr(x, 0); + t2 = time_sqr(x, 1); + printf("%d: %9llu %9llu, %9llu\n", x, t1, t2, t2 - t1); + if (t2 < t1) break; + } + printf("KARATSUBA_MUL_CUTOFF = %d\n", y); + printf("KARATSUBA_SQR_CUTOFF = %d\n", x); + + return 0; +} diff --git a/libtommath/gen.pl b/libtommath/gen.pl new file mode 100644 index 0000000..7236591 --- /dev/null +++ b/libtommath/gen.pl @@ -0,0 +1,17 @@ +#!/usr/bin/perl -w +# +# Generates a "single file" you can use to quickly +# add the whole source without any makefile troubles +# +use strict; + +open( OUT, ">mpi.c" ) or die "Couldn't open mpi.c for writing: $!"; +foreach my $filename (glob "bn*.c") { + open( SRC, "<$filename" ) or die "Couldn't open $filename for reading: $!"; + print OUT "/* Start: $filename */\n"; + print OUT while ; + print OUT "\n/* End: $filename */\n\n"; + close SRC or die "Error closing $filename after reading: $!"; +} +print OUT "\n/* EOF */\n"; +close OUT or die "Error closing mpi.c after writing: $!"; \ No newline at end of file diff --git a/libtommath/logs/README b/libtommath/logs/README new file mode 100644 index 0000000..ea20c81 --- /dev/null +++ b/libtommath/logs/README @@ -0,0 +1,13 @@ +To use the pretty graphs you have to first build/run the ltmtest from the root directory of the package. +Todo this type + +make timing ; ltmtest + +in the root. It will run for a while [about ten minutes on most PCs] and produce a series of .log files in logs/. + +After doing that run "gnuplot graphs.dem" to make the PNGs. If you managed todo that all so far just open index.html to view +them all :-) + +Have fun + +Tom \ No newline at end of file diff --git a/libtommath/logs/add.log b/libtommath/logs/add.log new file mode 100644 index 0000000..fa11039 --- /dev/null +++ b/libtommath/logs/add.log @@ -0,0 +1,16 @@ +480 88 +960 113 +1440 138 +1920 163 +2400 202 +2880 226 +3360 251 +3840 272 +4320 296 +4800 320 +5280 344 +5760 368 +6240 392 +6720 416 +7200 440 +7680 464 diff --git a/libtommath/logs/addsub.png b/libtommath/logs/addsub.png new file mode 100644 index 0000000..a5679ac Binary files /dev/null and b/libtommath/logs/addsub.png differ diff --git a/libtommath/logs/expt.log b/libtommath/logs/expt.log new file mode 100644 index 0000000..e65e927 --- /dev/null +++ b/libtommath/logs/expt.log @@ -0,0 +1,7 @@ +513 1499509 +769 3682671 +1025 8098887 +2049 49332743 +2561 89647783 +3073 149440713 +4097 326135364 diff --git a/libtommath/logs/expt.png b/libtommath/logs/expt.png new file mode 100644 index 0000000..9ee8bb7 Binary files /dev/null and b/libtommath/logs/expt.png differ diff --git a/libtommath/logs/expt_2k.log b/libtommath/logs/expt_2k.log new file mode 100644 index 0000000..d106280 --- /dev/null +++ b/libtommath/logs/expt_2k.log @@ -0,0 +1,6 @@ +521 1423346 +607 1841305 +1279 8375656 +2203 34104708 +3217 83830729 +4253 167916804 diff --git a/libtommath/logs/expt_2kl.log b/libtommath/logs/expt_2kl.log new file mode 100644 index 0000000..b2eb8c2 --- /dev/null +++ b/libtommath/logs/expt_2kl.log @@ -0,0 +1,4 @@ +1024 6954080 +2048 35993987 +4096 176068521 +521 1683720 diff --git a/libtommath/logs/expt_dr.log b/libtommath/logs/expt_dr.log new file mode 100644 index 0000000..6cfc874 --- /dev/null +++ b/libtommath/logs/expt_dr.log @@ -0,0 +1,7 @@ +532 1803110 +784 3607375 +1036 6089790 +1540 14739797 +2072 33251589 +3080 82794331 +4116 165212734 diff --git a/libtommath/logs/graphs.dem b/libtommath/logs/graphs.dem new file mode 100644 index 0000000..dfaf613 --- /dev/null +++ b/libtommath/logs/graphs.dem @@ -0,0 +1,17 @@ +set terminal png +set size 1.75 +set ylabel "Cycles per Operation" +set xlabel "Operand size (bits)" + +set output "addsub.png" +plot 'add.log' smooth bezier title "Addition", 'sub.log' smooth bezier title "Subtraction" + +set output "mult.png" +plot 'sqr.log' smooth bezier title "Squaring (without Karatsuba)", 'sqr_kara.log' smooth bezier title "Squaring (Karatsuba)", 'mult.log' smooth bezier title "Multiplication (without Karatsuba)", 'mult_kara.log' smooth bezier title "Multiplication (Karatsuba)" + +set output "expt.png" +plot 'expt.log' smooth bezier title "Exptmod (Montgomery)", 'expt_dr.log' smooth bezier title "Exptmod (Dimminished Radix)", 'expt_2k.log' smooth bezier title "Exptmod (2k Reduction)" + +set output "invmod.png" +plot 'invmod.log' smooth bezier title "Modular Inverse" + diff --git a/libtommath/logs/index.html b/libtommath/logs/index.html new file mode 100644 index 0000000..19fe403 --- /dev/null +++ b/libtommath/logs/index.html @@ -0,0 +1,24 @@ + + +LibTomMath Log Plots + + + +

Addition and Subtraction

+
+
+ +

Multipliers

+
+
+ +

Exptmod

+
+
+ +

Modular Inverse

+
+
+ + + \ No newline at end of file diff --git a/libtommath/logs/invmod.log b/libtommath/logs/invmod.log new file mode 100644 index 0000000..e69de29 diff --git a/libtommath/logs/invmod.png b/libtommath/logs/invmod.png new file mode 100644 index 0000000..0a8a4ad Binary files /dev/null and b/libtommath/logs/invmod.png differ diff --git a/libtommath/logs/mult.log b/libtommath/logs/mult.log new file mode 100644 index 0000000..864de46 --- /dev/null +++ b/libtommath/logs/mult.log @@ -0,0 +1,143 @@ +271 580 +390 861 +511 1177 +630 1598 +749 2115 +871 2670 +991 3276 +1111 3987 +1231 4722 +1351 5474 +1471 6281 +1589 7126 +1710 8114 +1831 8988 +1946 10038 +2071 10995 +2188 12286 +2310 13152 +2430 14480 +2549 15521 +2671 17171 +2790 18081 +2911 19754 +3031 20809 +3150 22849 +3269 23757 +3391 25772 +3508 26832 +3631 29304 +3750 30149 +3865 32581 +3988 33644 +4111 36565 +4231 37309 +4351 40152 +4471 41188 +4590 44658 +4710 45256 +4827 48538 +4951 49490 +5070 53472 +5190 53902 +5308 57619 +5431 58509 +5550 63044 +5664 63333 +5791 67542 +5911 68279 +6028 73477 +6150 73475 +6271 78189 +6390 78842 +6510 84691 +6631 84444 +6751 89721 +6871 90186 +6991 96665 +7111 96119 +7231 101937 +7350 102212 +7471 109439 +7591 108491 +7709 114965 +7829 115025 +7951 123002 +8071 121630 +8190 128725 +8311 128536 +8430 137298 +8550 135568 +8671 143265 +8791 142793 +8911 152432 +9030 150202 +9151 158616 +9271 157848 +9391 168374 +9511 165651 +9627 174775 +9750 173375 +9871 185067 +9985 181845 +10111 191708 +10229 190239 +10351 202585 +10467 198704 +10591 209193 +10711 207322 +10831 220842 +10950 215882 +11071 227761 +11191 225501 +11311 239669 +11430 234809 +11550 243511 +11671 255947 +11791 255243 +11906 267828 +12029 263437 +12149 276571 +12270 275579 +12390 288963 +12510 284001 +12631 298196 +12751 297018 +12869 310848 +12990 305369 +13111 319086 +13230 318940 +13349 333685 +13471 327495 +13588 343678 +13711 341817 +13831 357181 +13948 350440 +14071 367526 +14189 365330 +14311 381551 +14429 374149 +14549 392203 +14670 389764 +14791 406761 +14910 398652 +15026 417718 +15150 414733 +15269 432759 +15390 1037071 +15511 1053454 +15631 1069198 +15748 1086164 +15871 1112820 +15991 1129676 +16111 1145924 +16230 1163016 +16345 1179911 +16471 1197048 +16586 1214352 +16711 1232095 +16829 1249338 +16947 1266987 +17071 1284181 +17188 1302521 +17311 1320539 diff --git a/libtommath/logs/mult.png b/libtommath/logs/mult.png new file mode 100644 index 0000000..4f7a4ee Binary files /dev/null and b/libtommath/logs/mult.png differ diff --git a/libtommath/logs/mult_kara.log b/libtommath/logs/mult_kara.log new file mode 100644 index 0000000..086feaf --- /dev/null +++ b/libtommath/logs/mult_kara.log @@ -0,0 +1,33 @@ +924 16686 +1146 25334 +1371 35304 +1591 47122 +1820 61500 +2044 75254 +2266 91732 +2492 111656 +2716 129428 +2937 147508 +3164 167758 +3388 188248 +3612 210826 +3836 233814 +4059 256898 +4284 280210 +4508 310372 +4731 333902 +4955 376502 +5179 402854 +5404 432004 +5626 459010 +5849 491868 +6076 520550 +6300 547400 +6524 575968 +6747 608482 +6971 642850 +7196 673670 +7419 710680 +7644 743942 +7868 780394 +8092 817342 diff --git a/libtommath/logs/sqr.log b/libtommath/logs/sqr.log new file mode 100644 index 0000000..0898342 --- /dev/null +++ b/libtommath/logs/sqr.log @@ -0,0 +1,143 @@ +271 552 +389 883 +510 1191 +629 1572 +750 1996 +863 2428 +991 2891 +1108 3539 +1231 4182 +1351 4980 +1471 5771 +1590 6551 +1711 7313 +1830 8240 +1951 9184 +2070 10087 +2191 11140 +2311 12111 +2431 13219 +2550 14247 +2669 15353 +2791 16446 +2911 17692 +3029 18848 +3151 20028 +3268 21282 +3391 22696 +3511 23971 +3631 25303 +3751 26675 +3871 28245 +3990 29736 +4111 31124 +4229 32714 +4347 34397 +4471 35877 +4587 37269 +4710 39011 +4831 40884 +4950 42501 +5070 44005 +5191 46026 +5310 48168 +5431 49801 +5551 51385 +5671 53604 +5787 55942 +5910 57757 +6031 59391 +6151 61754 +6271 64234 +6390 66110 +6511 67845 +6627 70474 +6751 73113 +6871 75064 +6990 76940 +7111 79681 +7230 82548 +7351 84597 +7471 86507 +7591 89497 +7711 225216 +7831 232192 +7951 239583 +8071 247302 +8191 255497 +8308 261587 +8431 271490 +8550 279492 +8671 286927 +8790 294680 +8910 302974 +9030 311300 +9150 318635 +9271 326740 +9390 335304 +9511 344297 +9630 352056 +9748 358652 +9870 369723 +9991 379119 +10111 386982 +10231 396075 +10349 404396 +10470 415375 +10590 424146 +10711 433390 +10829 442662 +10950 453238 +11071 462178 +11186 469811 +11311 482529 +11431 493214 +11550 503210 +11671 513486 +11791 524244 +11911 535277 +12031 544872 +12151 555695 +12271 566893 +12391 578385 +12510 588658 +12628 596914 +12751 611324 +12871 623437 +12991 633907 +13110 645605 +13231 657684 +13351 670037 +13471 680939 +13591 693047 +13710 705363 +13829 718178 +13949 727930 +14069 739641 +14190 754817 +14310 768192 +14431 779875 +14551 792655 +14667 802847 +14791 819806 +14911 831684 +15031 844936 +15151 858813 +15270 873037 +15387 882123 +15510 899117 +15631 913465 +15750 927989 +15870 940790 +15991 954948 +16110 969483 +16231 984544 +16350 997837 +16470 1012445 +16590 1027834 +16710 1043032 +16831 1056394 +16951 1071408 +17069 1097263 +17191 1113364 +17306 1123650 diff --git a/libtommath/logs/sqr_kara.log b/libtommath/logs/sqr_kara.log new file mode 100644 index 0000000..cafe458 --- /dev/null +++ b/libtommath/logs/sqr_kara.log @@ -0,0 +1,33 @@ +922 11272 +1148 16004 +1370 21958 +1596 28684 +1817 37832 +2044 46386 +2262 56218 +2492 66388 +2716 77478 +2940 89380 +3163 103680 +3385 116274 +3612 135334 +3836 151332 +4057 164938 +4284 183178 +4508 198864 +4731 215222 +4954 231986 +5180 251660 +5404 269414 +5626 288454 +5850 307806 +6076 329458 +6299 347726 +6523 369864 +6748 387832 +6971 413010 +7194 453310 +7415 476936 +7643 497118 +7867 521394 +8091 540224 diff --git a/libtommath/logs/sub.log b/libtommath/logs/sub.log new file mode 100644 index 0000000..a42d91e --- /dev/null +++ b/libtommath/logs/sub.log @@ -0,0 +1,16 @@ +480 87 +960 114 +1440 139 +1920 159 +2400 204 +2880 228 +3360 250 +3840 273 +4320 300 +4800 321 +5280 348 +5760 370 +6240 393 +6720 420 +7200 444 +7680 466 diff --git a/libtommath/makefile b/libtommath/makefile new file mode 100644 index 0000000..164a0ab --- /dev/null +++ b/libtommath/makefile @@ -0,0 +1,157 @@ +#Makefile for GCC +# +#Tom St Denis + +#version of library +VERSION=0.33 + +CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare + +#for speed +CFLAGS += -O3 -funroll-all-loops + +#for size +#CFLAGS += -Os + +#x86 optimizations [should be valid for any GCC install though] +CFLAGS += -fomit-frame-pointer + +#debug +#CFLAGS += -g3 + +#install as this user +USER=root +GROUP=root + +default: libtommath.a + +#default files to install +LIBNAME=libtommath.a +HEADERS=tommath.h tommath_class.h tommath_superclass.h + +#LIBPATH-The directory for libtommath to be installed to. +#INCPATH-The directory to install the header files for libtommath. +#DATAPATH-The directory to install the pdf docs. +DESTDIR= +LIBPATH=/usr/lib +INCPATH=/usr/include +DATAPATH=/usr/share/doc/libtommath/pdf + +OBJECTS=bncore.o bn_mp_init.o bn_mp_clear.o bn_mp_exch.o bn_mp_grow.o bn_mp_shrink.o \ +bn_mp_clamp.o bn_mp_zero.o bn_mp_set.o bn_mp_set_int.o bn_mp_init_size.o bn_mp_copy.o \ +bn_mp_init_copy.o bn_mp_abs.o bn_mp_neg.o bn_mp_cmp_mag.o bn_mp_cmp.o bn_mp_cmp_d.o \ +bn_mp_rshd.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_div_2d.o bn_mp_mul_2d.o bn_mp_div_2.o \ +bn_mp_mul_2.o bn_s_mp_add.o bn_s_mp_sub.o bn_fast_s_mp_mul_digs.o bn_s_mp_mul_digs.o \ +bn_fast_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_s_mp_sqr.o \ +bn_mp_add.o bn_mp_sub.o bn_mp_karatsuba_mul.o bn_mp_mul.o bn_mp_karatsuba_sqr.o \ +bn_mp_sqr.o bn_mp_div.o bn_mp_mod.o bn_mp_add_d.o bn_mp_sub_d.o bn_mp_mul_d.o \ +bn_mp_div_d.o bn_mp_mod_d.o bn_mp_expt_d.o bn_mp_addmod.o bn_mp_submod.o \ +bn_mp_mulmod.o bn_mp_sqrmod.o bn_mp_gcd.o bn_mp_lcm.o bn_fast_mp_invmod.o bn_mp_invmod.o \ +bn_mp_reduce.o bn_mp_montgomery_setup.o bn_fast_mp_montgomery_reduce.o bn_mp_montgomery_reduce.o \ +bn_mp_exptmod_fast.o bn_mp_exptmod.o bn_mp_2expt.o bn_mp_n_root.o bn_mp_jacobi.o bn_reverse.o \ +bn_mp_count_bits.o bn_mp_read_unsigned_bin.o bn_mp_read_signed_bin.o bn_mp_to_unsigned_bin.o \ +bn_mp_to_signed_bin.o bn_mp_unsigned_bin_size.o bn_mp_signed_bin_size.o \ +bn_mp_xor.o bn_mp_and.o bn_mp_or.o bn_mp_rand.o bn_mp_montgomery_calc_normalization.o \ +bn_mp_prime_is_divisible.o bn_prime_tab.o bn_mp_prime_fermat.o bn_mp_prime_miller_rabin.o \ +bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ +bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ +bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ +bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ +bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ +bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ +bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o + +libtommath.a: $(OBJECTS) + $(AR) $(ARFLAGS) libtommath.a $(OBJECTS) + ranlib libtommath.a + +#make a profiled library (takes a while!!!) +# +# This will build the library with profile generation +# then run the test demo and rebuild the library. +# +# So far I've seen improvements in the MP math +profiled: + make CFLAGS="$(CFLAGS) -fprofile-arcs -DTESTING" timing + ./ltmtest + rm -f *.a *.o ltmtest + make CFLAGS="$(CFLAGS) -fbranch-probabilities" + +#make a single object profiled library +profiled_single: + perl gen.pl + $(CC) $(CFLAGS) -fprofile-arcs -DTESTING -c mpi.c -o mpi.o + $(CC) $(CFLAGS) -DTESTING -DTIMER demo/timing.c mpi.o -o ltmtest + ./ltmtest + rm -f *.o ltmtest + $(CC) $(CFLAGS) -fbranch-probabilities -DTESTING -c mpi.c -o mpi.o + $(AR) $(ARFLAGS) libtommath.a mpi.o + ranlib libtommath.a + +install: libtommath.a + install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH) + install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) + install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH) + install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) + +test: libtommath.a demo/demo.o + $(CC) $(CFLAGS) demo/demo.o libtommath.a -o test + +mtest: test + cd mtest ; $(CC) $(CFLAGS) mtest.c -o mtest + +timing: libtommath.a + $(CC) $(CFLAGS) -DTIMER demo/timing.c libtommath.a -o ltmtest + +# makes the LTM book DVI file, requires tetex, perl and makeindex [part of tetex I think] +docdvi: tommath.src + cd pics ; make + echo "hello" > tommath.ind + perl booker.pl + latex tommath > /dev/null + latex tommath > /dev/null + makeindex tommath + latex tommath > /dev/null + +# poster, makes the single page PDF poster +poster: poster.tex + pdflatex poster + rm -f poster.aux poster.log + +# makes the LTM book PDF file, requires tetex, cleans up the LaTeX temp files +docs: docdvi + dvipdf tommath + rm -f tommath.log tommath.aux tommath.dvi tommath.idx tommath.toc tommath.lof tommath.ind tommath.ilg + cd pics ; make clean + +#LTM user manual +mandvi: bn.tex + echo "hello" > bn.ind + latex bn > /dev/null + latex bn > /dev/null + makeindex bn + latex bn > /dev/null + +#LTM user manual [pdf] +manual: mandvi + pdflatex bn >/dev/null + rm -f bn.aux bn.dvi bn.log bn.idx bn.lof bn.out bn.toc + +pretty: + perl pretty.build + +clean: + rm -f *.bat *.pdf *.o *.a *.obj *.lib *.exe *.dll etclib/*.o demo/demo.o test ltmtest mpitest mtest/mtest mtest/mtest.exe \ + *.idx *.toc *.log *.aux *.dvi *.lof *.ind *.ilg *.ps *.log *.s mpi.c *.da *.dyn *.dpi tommath.tex `find -type f | grep [~] | xargs` *.lo *.la + rm -rf .libs + cd etc ; make clean + cd pics ; make clean + +zipup: clean manual poster docs + perl gen.pl ; mv mpi.c pre_gen/ ; \ + cd .. ; rm -rf ltm* libtommath-$(VERSION) ; mkdir libtommath-$(VERSION) ; \ + cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; \ + tar -c libtommath-$(VERSION)/* | bzip2 -9vvc > ltm-$(VERSION).tar.bz2 ; \ + zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/* diff --git a/libtommath/makefile.bcc b/libtommath/makefile.bcc new file mode 100644 index 0000000..775e9ff --- /dev/null +++ b/libtommath/makefile.bcc @@ -0,0 +1,42 @@ +# +# Borland C++Builder Makefile (makefile.bcc) +# + + +LIB = tlib +CC = bcc32 +CFLAGS = -c -O2 -I. + +OBJECTS=bncore.obj bn_mp_init.obj bn_mp_clear.obj bn_mp_exch.obj bn_mp_grow.obj bn_mp_shrink.obj \ +bn_mp_clamp.obj bn_mp_zero.obj bn_mp_set.obj bn_mp_set_int.obj bn_mp_init_size.obj bn_mp_copy.obj \ +bn_mp_init_copy.obj bn_mp_abs.obj bn_mp_neg.obj bn_mp_cmp_mag.obj bn_mp_cmp.obj bn_mp_cmp_d.obj \ +bn_mp_rshd.obj bn_mp_lshd.obj bn_mp_mod_2d.obj bn_mp_div_2d.obj bn_mp_mul_2d.obj bn_mp_div_2.obj \ +bn_mp_mul_2.obj bn_s_mp_add.obj bn_s_mp_sub.obj bn_fast_s_mp_mul_digs.obj bn_s_mp_mul_digs.obj \ +bn_fast_s_mp_mul_high_digs.obj bn_s_mp_mul_high_digs.obj bn_fast_s_mp_sqr.obj bn_s_mp_sqr.obj \ +bn_mp_add.obj bn_mp_sub.obj bn_mp_karatsuba_mul.obj bn_mp_mul.obj bn_mp_karatsuba_sqr.obj \ +bn_mp_sqr.obj bn_mp_div.obj bn_mp_mod.obj bn_mp_add_d.obj bn_mp_sub_d.obj bn_mp_mul_d.obj \ +bn_mp_div_d.obj bn_mp_mod_d.obj bn_mp_expt_d.obj bn_mp_addmod.obj bn_mp_submod.obj \ +bn_mp_mulmod.obj bn_mp_sqrmod.obj bn_mp_gcd.obj bn_mp_lcm.obj bn_fast_mp_invmod.obj bn_mp_invmod.obj \ +bn_mp_reduce.obj bn_mp_montgomery_setup.obj bn_fast_mp_montgomery_reduce.obj bn_mp_montgomery_reduce.obj \ +bn_mp_exptmod_fast.obj bn_mp_exptmod.obj bn_mp_2expt.obj bn_mp_n_root.obj bn_mp_jacobi.obj bn_reverse.obj \ +bn_mp_count_bits.obj bn_mp_read_unsigned_bin.obj bn_mp_read_signed_bin.obj bn_mp_to_unsigned_bin.obj \ +bn_mp_to_signed_bin.obj bn_mp_unsigned_bin_size.obj bn_mp_signed_bin_size.obj \ +bn_mp_xor.obj bn_mp_and.obj bn_mp_or.obj bn_mp_rand.obj bn_mp_montgomery_calc_normalization.obj \ +bn_mp_prime_is_divisible.obj bn_prime_tab.obj bn_mp_prime_fermat.obj bn_mp_prime_miller_rabin.obj \ +bn_mp_prime_is_prime.obj bn_mp_prime_next_prime.obj bn_mp_dr_reduce.obj \ +bn_mp_dr_is_modulus.obj bn_mp_dr_setup.obj bn_mp_reduce_setup.obj \ +bn_mp_toom_mul.obj bn_mp_toom_sqr.obj bn_mp_div_3.obj bn_s_mp_exptmod.obj \ +bn_mp_reduce_2k.obj bn_mp_reduce_is_2k.obj bn_mp_reduce_2k_setup.obj \ +bn_mp_radix_smap.obj bn_mp_read_radix.obj bn_mp_toradix.obj bn_mp_radix_size.obj \ +bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_cnt_lsb.obj bn_error.obj \ +bn_mp_init_multi.obj bn_mp_clear_multi.obj bn_mp_exteuclid.obj bn_mp_toradix_n.obj \ +bn_mp_prime_random_ex.obj bn_mp_get_int.obj bn_mp_sqrt.obj bn_mp_is_square.obj \ +bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj + +TARGET = libtommath.lib + +$(TARGET): $(OBJECTS) + +.c.objbjbjbj: + $(CC) $(CFLAGS) $< + $(LIB) $(TARGET) -+$@ diff --git a/libtommath/makefile.cygwin_dll b/libtommath/makefile.cygwin_dll new file mode 100644 index 0000000..c90e5d9 --- /dev/null +++ b/libtommath/makefile.cygwin_dll @@ -0,0 +1,49 @@ +#Makefile for Cygwin-GCC +# +#This makefile will build a Windows DLL [doesn't require cygwin to run] in the file +#libtommath.dll. The import library is in libtommath.dll.a. Remember to add +#"-Wl,--enable-auto-import" to your client build to avoid the auto-import warnings +# +#Tom St Denis +CFLAGS += -I./ -Wall -W -Wshadow -O3 -funroll-loops -mno-cygwin + +#x86 optimizations [should be valid for any GCC install though] +CFLAGS += -fomit-frame-pointer + +default: windll + +OBJECTS=bncore.o bn_mp_init.o bn_mp_clear.o bn_mp_exch.o bn_mp_grow.o bn_mp_shrink.o \ +bn_mp_clamp.o bn_mp_zero.o bn_mp_set.o bn_mp_set_int.o bn_mp_init_size.o bn_mp_copy.o \ +bn_mp_init_copy.o bn_mp_abs.o bn_mp_neg.o bn_mp_cmp_mag.o bn_mp_cmp.o bn_mp_cmp_d.o \ +bn_mp_rshd.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_div_2d.o bn_mp_mul_2d.o bn_mp_div_2.o \ +bn_mp_mul_2.o bn_s_mp_add.o bn_s_mp_sub.o bn_fast_s_mp_mul_digs.o bn_s_mp_mul_digs.o \ +bn_fast_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_s_mp_sqr.o \ +bn_mp_add.o bn_mp_sub.o bn_mp_karatsuba_mul.o bn_mp_mul.o bn_mp_karatsuba_sqr.o \ +bn_mp_sqr.o bn_mp_div.o bn_mp_mod.o bn_mp_add_d.o bn_mp_sub_d.o bn_mp_mul_d.o \ +bn_mp_div_d.o bn_mp_mod_d.o bn_mp_expt_d.o bn_mp_addmod.o bn_mp_submod.o \ +bn_mp_mulmod.o bn_mp_sqrmod.o bn_mp_gcd.o bn_mp_lcm.o bn_fast_mp_invmod.o bn_mp_invmod.o \ +bn_mp_reduce.o bn_mp_montgomery_setup.o bn_fast_mp_montgomery_reduce.o bn_mp_montgomery_reduce.o \ +bn_mp_exptmod_fast.o bn_mp_exptmod.o bn_mp_2expt.o bn_mp_n_root.o bn_mp_jacobi.o bn_reverse.o \ +bn_mp_count_bits.o bn_mp_read_unsigned_bin.o bn_mp_read_signed_bin.o bn_mp_to_unsigned_bin.o \ +bn_mp_to_signed_bin.o bn_mp_unsigned_bin_size.o bn_mp_signed_bin_size.o \ +bn_mp_xor.o bn_mp_and.o bn_mp_or.o bn_mp_rand.o bn_mp_montgomery_calc_normalization.o \ +bn_mp_prime_is_divisible.o bn_prime_tab.o bn_mp_prime_fermat.o bn_mp_prime_miller_rabin.o \ +bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ +bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ +bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ +bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ +bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ +bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ +bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o + +# make a Windows DLL via Cygwin +windll: $(OBJECTS) + gcc -mno-cygwin -mdll -o libtommath.dll -Wl,--out-implib=libtommath.dll.a -Wl,--export-all-symbols *.o + ranlib libtommath.dll.a + +# build the test program using the windows DLL +test: $(OBJECTS) windll + gcc $(CFLAGS) demo/demo.c libtommath.dll.a -Wl,--enable-auto-import -o test -s + cd mtest ; $(CC) -O3 -fomit-frame-pointer -funroll-loops mtest.c -o mtest -s diff --git a/libtommath/makefile.icc b/libtommath/makefile.icc new file mode 100644 index 0000000..3775b20 --- /dev/null +++ b/libtommath/makefile.icc @@ -0,0 +1,114 @@ +#Makefile for ICC +# +#Tom St Denis +CC=icc + +CFLAGS += -I./ + +# optimize for SPEED +# +# -mcpu= can be pentium, pentiumpro (covers PII through PIII) or pentium4 +# -ax? specifies make code specifically for ? but compatible with IA-32 +# -x? specifies compile solely for ? [not specifically IA-32 compatible] +# +# where ? is +# K - PIII +# W - first P4 [Williamette] +# N - P4 Northwood +# P - P4 Prescott +# B - Blend of P4 and PM [mobile] +# +# Default to just generic max opts +CFLAGS += -O3 -xN + +#install as this user +USER=root +GROUP=root + +default: libtommath.a + +#default files to install +LIBNAME=libtommath.a +HEADERS=tommath.h + +#LIBPATH-The directory for libtomcrypt to be installed to. +#INCPATH-The directory to install the header files for libtommath. +#DATAPATH-The directory to install the pdf docs. +DESTDIR= +LIBPATH=/usr/lib +INCPATH=/usr/include +DATAPATH=/usr/share/doc/libtommath/pdf + +OBJECTS=bncore.o bn_mp_init.o bn_mp_clear.o bn_mp_exch.o bn_mp_grow.o bn_mp_shrink.o \ +bn_mp_clamp.o bn_mp_zero.o bn_mp_set.o bn_mp_set_int.o bn_mp_init_size.o bn_mp_copy.o \ +bn_mp_init_copy.o bn_mp_abs.o bn_mp_neg.o bn_mp_cmp_mag.o bn_mp_cmp.o bn_mp_cmp_d.o \ +bn_mp_rshd.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_div_2d.o bn_mp_mul_2d.o bn_mp_div_2.o \ +bn_mp_mul_2.o bn_s_mp_add.o bn_s_mp_sub.o bn_fast_s_mp_mul_digs.o bn_s_mp_mul_digs.o \ +bn_fast_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_s_mp_sqr.o \ +bn_mp_add.o bn_mp_sub.o bn_mp_karatsuba_mul.o bn_mp_mul.o bn_mp_karatsuba_sqr.o \ +bn_mp_sqr.o bn_mp_div.o bn_mp_mod.o bn_mp_add_d.o bn_mp_sub_d.o bn_mp_mul_d.o \ +bn_mp_div_d.o bn_mp_mod_d.o bn_mp_expt_d.o bn_mp_addmod.o bn_mp_submod.o \ +bn_mp_mulmod.o bn_mp_sqrmod.o bn_mp_gcd.o bn_mp_lcm.o bn_fast_mp_invmod.o bn_mp_invmod.o \ +bn_mp_reduce.o bn_mp_montgomery_setup.o bn_fast_mp_montgomery_reduce.o bn_mp_montgomery_reduce.o \ +bn_mp_exptmod_fast.o bn_mp_exptmod.o bn_mp_2expt.o bn_mp_n_root.o bn_mp_jacobi.o bn_reverse.o \ +bn_mp_count_bits.o bn_mp_read_unsigned_bin.o bn_mp_read_signed_bin.o bn_mp_to_unsigned_bin.o \ +bn_mp_to_signed_bin.o bn_mp_unsigned_bin_size.o bn_mp_signed_bin_size.o \ +bn_mp_xor.o bn_mp_and.o bn_mp_or.o bn_mp_rand.o bn_mp_montgomery_calc_normalization.o \ +bn_mp_prime_is_divisible.o bn_prime_tab.o bn_mp_prime_fermat.o bn_mp_prime_miller_rabin.o \ +bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ +bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ +bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ +bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ +bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ +bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ +bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o + +libtommath.a: $(OBJECTS) + $(AR) $(ARFLAGS) libtommath.a $(OBJECTS) + ranlib libtommath.a + +#make a profiled library (takes a while!!!) +# +# This will build the library with profile generation +# then run the test demo and rebuild the library. +# +# So far I've seen improvements in the MP math +profiled: + make -f makefile.icc CFLAGS="$(CFLAGS) -prof_gen -DTESTING" timing + ./ltmtest + rm -f *.a *.o ltmtest + make -f makefile.icc CFLAGS="$(CFLAGS) -prof_use" + +#make a single object profiled library +profiled_single: + perl gen.pl + $(CC) $(CFLAGS) -prof_gen -DTESTING -c mpi.c -o mpi.o + $(CC) $(CFLAGS) -DTESTING -DTIMER demo/demo.c mpi.o -o ltmtest + ./ltmtest + rm -f *.o ltmtest + $(CC) $(CFLAGS) -prof_use -ip -DTESTING -c mpi.c -o mpi.o + $(AR) $(ARFLAGS) libtommath.a mpi.o + ranlib libtommath.a + +install: libtommath.a + install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH) + install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) + install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH) + install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) + +test: libtommath.a demo/demo.o + $(CC) demo/demo.o libtommath.a -o test + +mtest: test + cd mtest ; $(CC) $(CFLAGS) mtest.c -o mtest + +timing: libtommath.a + $(CC) $(CFLAGS) -DTIMER demo/timing.c libtommath.a -o ltmtest + +clean: + rm -f *.bat *.pdf *.o *.a *.obj *.lib *.exe *.dll etclib/*.o demo/demo.o test ltmtest mpitest mtest/mtest mtest/mtest.exe \ + *.idx *.toc *.log *.aux *.dvi *.lof *.ind *.ilg *.ps *.log *.s mpi.c *.il etc/*.il *.dyn + cd etc ; make clean + cd pics ; make clean diff --git a/libtommath/makefile.msvc b/libtommath/makefile.msvc new file mode 100644 index 0000000..cf59943 --- /dev/null +++ b/libtommath/makefile.msvc @@ -0,0 +1,36 @@ +#MSVC Makefile +# +#Tom St Denis + +CFLAGS = /I. /Ox /DWIN32 /W4 + +default: library + +OBJECTS=bncore.obj bn_mp_init.obj bn_mp_clear.obj bn_mp_exch.obj bn_mp_grow.obj bn_mp_shrink.obj \ +bn_mp_clamp.obj bn_mp_zero.obj bn_mp_set.obj bn_mp_set_int.obj bn_mp_init_size.obj bn_mp_copy.obj \ +bn_mp_init_copy.obj bn_mp_abs.obj bn_mp_neg.obj bn_mp_cmp_mag.obj bn_mp_cmp.obj bn_mp_cmp_d.obj \ +bn_mp_rshd.obj bn_mp_lshd.obj bn_mp_mod_2d.obj bn_mp_div_2d.obj bn_mp_mul_2d.obj bn_mp_div_2.obj \ +bn_mp_mul_2.obj bn_s_mp_add.obj bn_s_mp_sub.obj bn_fast_s_mp_mul_digs.obj bn_s_mp_mul_digs.obj \ +bn_fast_s_mp_mul_high_digs.obj bn_s_mp_mul_high_digs.obj bn_fast_s_mp_sqr.obj bn_s_mp_sqr.obj \ +bn_mp_add.obj bn_mp_sub.obj bn_mp_karatsuba_mul.obj bn_mp_mul.obj bn_mp_karatsuba_sqr.obj \ +bn_mp_sqr.obj bn_mp_div.obj bn_mp_mod.obj bn_mp_add_d.obj bn_mp_sub_d.obj bn_mp_mul_d.obj \ +bn_mp_div_d.obj bn_mp_mod_d.obj bn_mp_expt_d.obj bn_mp_addmod.obj bn_mp_submod.obj \ +bn_mp_mulmod.obj bn_mp_sqrmod.obj bn_mp_gcd.obj bn_mp_lcm.obj bn_fast_mp_invmod.obj bn_mp_invmod.obj \ +bn_mp_reduce.obj bn_mp_montgomery_setup.obj bn_fast_mp_montgomery_reduce.obj bn_mp_montgomery_reduce.obj \ +bn_mp_exptmod_fast.obj bn_mp_exptmod.obj bn_mp_2expt.obj bn_mp_n_root.obj bn_mp_jacobi.obj bn_reverse.obj \ +bn_mp_count_bits.obj bn_mp_read_unsigned_bin.obj bn_mp_read_signed_bin.obj bn_mp_to_unsigned_bin.obj \ +bn_mp_to_signed_bin.obj bn_mp_unsigned_bin_size.obj bn_mp_signed_bin_size.obj \ +bn_mp_xor.obj bn_mp_and.obj bn_mp_or.obj bn_mp_rand.obj bn_mp_montgomery_calc_normalization.obj \ +bn_mp_prime_is_divisible.obj bn_prime_tab.obj bn_mp_prime_fermat.obj bn_mp_prime_miller_rabin.obj \ +bn_mp_prime_is_prime.obj bn_mp_prime_next_prime.obj bn_mp_dr_reduce.obj \ +bn_mp_dr_is_modulus.obj bn_mp_dr_setup.obj bn_mp_reduce_setup.obj \ +bn_mp_toom_mul.obj bn_mp_toom_sqr.obj bn_mp_div_3.obj bn_s_mp_exptmod.obj \ +bn_mp_reduce_2k.obj bn_mp_reduce_is_2k.obj bn_mp_reduce_2k_setup.obj \ +bn_mp_radix_smap.obj bn_mp_read_radix.obj bn_mp_toradix.obj bn_mp_radix_size.obj \ +bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_cnt_lsb.obj bn_error.obj \ +bn_mp_init_multi.obj bn_mp_clear_multi.obj bn_mp_exteuclid.obj bn_mp_toradix_n.obj \ +bn_mp_prime_random_ex.obj bn_mp_get_int.obj bn_mp_sqrt.obj bn_mp_is_square.obj \ +bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj + +library: $(OBJECTS) + lib /out:tommath.lib $(OBJECTS) diff --git a/libtommath/makefile.shared b/libtommath/makefile.shared new file mode 100644 index 0000000..86a3786 --- /dev/null +++ b/libtommath/makefile.shared @@ -0,0 +1,77 @@ +#Makefile for GCC +# +#Tom St Denis +VERSION=0:33 + +CC = libtool --mode=compile gcc +CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare + +#for speed +CFLAGS += -O3 -funroll-loops + +#for size +#CFLAGS += -Os + +#x86 optimizations [should be valid for any GCC install though] +CFLAGS += -fomit-frame-pointer + +#install as this user +USER=root +GROUP=root + +default: libtommath.la + +#default files to install +LIBNAME=libtommath.la +HEADERS=tommath.h tommath_class.h tommath_superclass.h + +#LIBPATH-The directory for libtommath to be installed to. +#INCPATH-The directory to install the header files for libtommath. +#DATAPATH-The directory to install the pdf docs. +DESTDIR= +LIBPATH=/usr/lib +INCPATH=/usr/include +DATAPATH=/usr/share/doc/libtommath/pdf + +OBJECTS=bncore.o bn_mp_init.o bn_mp_clear.o bn_mp_exch.o bn_mp_grow.o bn_mp_shrink.o \ +bn_mp_clamp.o bn_mp_zero.o bn_mp_set.o bn_mp_set_int.o bn_mp_init_size.o bn_mp_copy.o \ +bn_mp_init_copy.o bn_mp_abs.o bn_mp_neg.o bn_mp_cmp_mag.o bn_mp_cmp.o bn_mp_cmp_d.o \ +bn_mp_rshd.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_div_2d.o bn_mp_mul_2d.o bn_mp_div_2.o \ +bn_mp_mul_2.o bn_s_mp_add.o bn_s_mp_sub.o bn_fast_s_mp_mul_digs.o bn_s_mp_mul_digs.o \ +bn_fast_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_s_mp_sqr.o \ +bn_mp_add.o bn_mp_sub.o bn_mp_karatsuba_mul.o bn_mp_mul.o bn_mp_karatsuba_sqr.o \ +bn_mp_sqr.o bn_mp_div.o bn_mp_mod.o bn_mp_add_d.o bn_mp_sub_d.o bn_mp_mul_d.o \ +bn_mp_div_d.o bn_mp_mod_d.o bn_mp_expt_d.o bn_mp_addmod.o bn_mp_submod.o \ +bn_mp_mulmod.o bn_mp_sqrmod.o bn_mp_gcd.o bn_mp_lcm.o bn_fast_mp_invmod.o bn_mp_invmod.o \ +bn_mp_reduce.o bn_mp_montgomery_setup.o bn_fast_mp_montgomery_reduce.o bn_mp_montgomery_reduce.o \ +bn_mp_exptmod_fast.o bn_mp_exptmod.o bn_mp_2expt.o bn_mp_n_root.o bn_mp_jacobi.o bn_reverse.o \ +bn_mp_count_bits.o bn_mp_read_unsigned_bin.o bn_mp_read_signed_bin.o bn_mp_to_unsigned_bin.o \ +bn_mp_to_signed_bin.o bn_mp_unsigned_bin_size.o bn_mp_signed_bin_size.o \ +bn_mp_xor.o bn_mp_and.o bn_mp_or.o bn_mp_rand.o bn_mp_montgomery_calc_normalization.o \ +bn_mp_prime_is_divisible.o bn_prime_tab.o bn_mp_prime_fermat.o bn_mp_prime_miller_rabin.o \ +bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ +bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ +bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ +bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ +bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ +bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ +bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o + +libtommath.la: $(OBJECTS) + libtool --mode=link gcc *.lo -o libtommath.la -rpath $(LIBPATH) -version-info $(VERSION) + libtool --mode=link gcc *.o -o libtommath.a + libtool --mode=install install -c libtommath.la $(LIBPATH)/libtommath.la + install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) + install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) + +test: libtommath.a demo/demo.o + gcc $(CFLAGS) -c demo/demo.c -o demo/demo.o + libtool --mode=link gcc -o test demo/demo.o libtommath.la + +mtest: test + cd mtest ; gcc $(CFLAGS) mtest.c -o mtest -s + +timing: libtommath.la + gcc $(CFLAGS) -DTIMER demo/timing.c libtommath.a -o ltmtest -s diff --git a/libtommath/mess.sh b/libtommath/mess.sh new file mode 100644 index 0000000..bf639ce --- /dev/null +++ b/libtommath/mess.sh @@ -0,0 +1,4 @@ +#!/bin/bash +if cvs log $1 >/dev/null 2>/dev/null; then exit 0; else echo "$1 shouldn't be here" ; exit 1; fi + + diff --git a/libtommath/mtest/logtab.h b/libtommath/mtest/logtab.h new file mode 100644 index 0000000..68462bd --- /dev/null +++ b/libtommath/mtest/logtab.h @@ -0,0 +1,20 @@ +const float s_logv_2[] = { + 0.000000000, 0.000000000, 1.000000000, 0.630929754, /* 0 1 2 3 */ + 0.500000000, 0.430676558, 0.386852807, 0.356207187, /* 4 5 6 7 */ + 0.333333333, 0.315464877, 0.301029996, 0.289064826, /* 8 9 10 11 */ + 0.278942946, 0.270238154, 0.262649535, 0.255958025, /* 12 13 14 15 */ + 0.250000000, 0.244650542, 0.239812467, 0.235408913, /* 16 17 18 19 */ + 0.231378213, 0.227670249, 0.224243824, 0.221064729, /* 20 21 22 23 */ + 0.218104292, 0.215338279, 0.212746054, 0.210309918, /* 24 25 26 27 */ + 0.208014598, 0.205846832, 0.203795047, 0.201849087, /* 28 29 30 31 */ + 0.200000000, 0.198239863, 0.196561632, 0.194959022, /* 32 33 34 35 */ + 0.193426404, 0.191958720, 0.190551412, 0.189200360, /* 36 37 38 39 */ + 0.187901825, 0.186652411, 0.185449023, 0.184288833, /* 40 41 42 43 */ + 0.183169251, 0.182087900, 0.181042597, 0.180031327, /* 44 45 46 47 */ + 0.179052232, 0.178103594, 0.177183820, 0.176291434, /* 48 49 50 51 */ + 0.175425064, 0.174583430, 0.173765343, 0.172969690, /* 52 53 54 55 */ + 0.172195434, 0.171441601, 0.170707280, 0.169991616, /* 56 57 58 59 */ + 0.169293808, 0.168613099, 0.167948779, 0.167300179, /* 60 61 62 63 */ + 0.166666667 +}; + diff --git a/libtommath/mtest/mpi-config.h b/libtommath/mtest/mpi-config.h new file mode 100644 index 0000000..dcdbd35 --- /dev/null +++ b/libtommath/mtest/mpi-config.h @@ -0,0 +1,86 @@ +/* Default configuration for MPI library */ +/* $Id: mpi-config.h,v 1.1.1.1 2005/01/19 22:41:29 kennykb Exp $ */ + +#ifndef MPI_CONFIG_H_ +#define MPI_CONFIG_H_ + +/* + For boolean options, + 0 = no + 1 = yes + + Other options are documented individually. + + */ + +#ifndef MP_IOFUNC +#define MP_IOFUNC 0 /* include mp_print() ? */ +#endif + +#ifndef MP_MODARITH +#define MP_MODARITH 1 /* include modular arithmetic ? */ +#endif + +#ifndef MP_NUMTH +#define MP_NUMTH 1 /* include number theoretic functions? */ +#endif + +#ifndef MP_LOGTAB +#define MP_LOGTAB 1 /* use table of logs instead of log()? */ +#endif + +#ifndef MP_MEMSET +#define MP_MEMSET 1 /* use memset() to zero buffers? */ +#endif + +#ifndef MP_MEMCPY +#define MP_MEMCPY 1 /* use memcpy() to copy buffers? */ +#endif + +#ifndef MP_CRYPTO +#define MP_CRYPTO 1 /* erase memory on free? */ +#endif + +#ifndef MP_ARGCHK +/* + 0 = no parameter checks + 1 = runtime checks, continue execution and return an error to caller + 2 = assertions; dump core on parameter errors + */ +#define MP_ARGCHK 2 /* how to check input arguments */ +#endif + +#ifndef MP_DEBUG +#define MP_DEBUG 0 /* print diagnostic output? */ +#endif + +#ifndef MP_DEFPREC +#define MP_DEFPREC 64 /* default precision, in digits */ +#endif + +#ifndef MP_MACRO +#define MP_MACRO 1 /* use macros for frequent calls? */ +#endif + +#ifndef MP_SQUARE +#define MP_SQUARE 1 /* use separate squaring code? */ +#endif + +#ifndef MP_PTAB_SIZE +/* + When building mpprime.c, we build in a table of small prime + values to use for primality testing. The more you include, + the more space they take up. See primes.c for the possible + values (currently 16, 32, 64, 128, 256, and 6542) + */ +#define MP_PTAB_SIZE 128 /* how many built-in primes? */ +#endif + +#ifndef MP_COMPAT_MACROS +#define MP_COMPAT_MACROS 1 /* define compatibility macros? */ +#endif + +#endif /* ifndef MPI_CONFIG_H_ */ + + +/* crc==3287762869, version==2, Sat Feb 02 06:43:53 2002 */ diff --git a/libtommath/mtest/mpi-types.h b/libtommath/mtest/mpi-types.h new file mode 100644 index 0000000..e097188 --- /dev/null +++ b/libtommath/mtest/mpi-types.h @@ -0,0 +1,16 @@ +/* Type definitions generated by 'types.pl' */ +typedef char mp_sign; +typedef unsigned short mp_digit; /* 2 byte type */ +typedef unsigned int mp_word; /* 4 byte type */ +typedef unsigned int mp_size; +typedef int mp_err; + +#define MP_DIGIT_BIT (CHAR_BIT*sizeof(mp_digit)) +#define MP_DIGIT_MAX USHRT_MAX +#define MP_WORD_BIT (CHAR_BIT*sizeof(mp_word)) +#define MP_WORD_MAX UINT_MAX + +#define MP_DIGIT_SIZE 2 +#define DIGIT_FMT "%04X" +#define RADIX (MP_DIGIT_MAX+1) + diff --git a/libtommath/mtest/mpi.c b/libtommath/mtest/mpi.c new file mode 100644 index 0000000..0517602 --- /dev/null +++ b/libtommath/mtest/mpi.c @@ -0,0 +1,3981 @@ +/* + mpi.c + + by Michael J. Fromberger + Copyright (C) 1998 Michael J. Fromberger, All Rights Reserved + + Arbitrary precision integer arithmetic library + + $Id: mpi.c,v 1.1.1.1 2005/01/19 22:41:29 kennykb Exp $ + */ + +#include "mpi.h" +#include +#include +#include + +#if MP_DEBUG +#include + +#define DIAG(T,V) {fprintf(stderr,T);mp_print(V,stderr);fputc('\n',stderr);} +#else +#define DIAG(T,V) +#endif + +/* + If MP_LOGTAB is not defined, use the math library to compute the + logarithms on the fly. Otherwise, use the static table below. + Pick which works best for your system. + */ +#if MP_LOGTAB + +/* {{{ s_logv_2[] - log table for 2 in various bases */ + +/* + A table of the logs of 2 for various bases (the 0 and 1 entries of + this table are meaningless and should not be referenced). + + This table is used to compute output lengths for the mp_toradix() + function. Since a number n in radix r takes up about log_r(n) + digits, we estimate the output size by taking the least integer + greater than log_r(n), where: + + log_r(n) = log_2(n) * log_r(2) + + This table, therefore, is a table of log_r(2) for 2 <= r <= 36, + which are the output bases supported. + */ + +#include "logtab.h" + +/* }}} */ +#define LOG_V_2(R) s_logv_2[(R)] + +#else + +#include +#define LOG_V_2(R) (log(2.0)/log(R)) + +#endif + +/* Default precision for newly created mp_int's */ +static unsigned int s_mp_defprec = MP_DEFPREC; + +/* {{{ Digit arithmetic macros */ + +/* + When adding and multiplying digits, the results can be larger than + can be contained in an mp_digit. Thus, an mp_word is used. These + macros mask off the upper and lower digits of the mp_word (the + mp_word may be more than 2 mp_digits wide, but we only concern + ourselves with the low-order 2 mp_digits) + + If your mp_word DOES have more than 2 mp_digits, you need to + uncomment the first line, and comment out the second. + */ + +/* #define CARRYOUT(W) (((W)>>DIGIT_BIT)&MP_DIGIT_MAX) */ +#define CARRYOUT(W) ((W)>>DIGIT_BIT) +#define ACCUM(W) ((W)&MP_DIGIT_MAX) + +/* }}} */ + +/* {{{ Comparison constants */ + +#define MP_LT -1 +#define MP_EQ 0 +#define MP_GT 1 + +/* }}} */ + +/* {{{ Constant strings */ + +/* Constant strings returned by mp_strerror() */ +static const char *mp_err_string[] = { + "unknown result code", /* say what? */ + "boolean true", /* MP_OKAY, MP_YES */ + "boolean false", /* MP_NO */ + "out of memory", /* MP_MEM */ + "argument out of range", /* MP_RANGE */ + "invalid input parameter", /* MP_BADARG */ + "result is undefined" /* MP_UNDEF */ +}; + +/* Value to digit maps for radix conversion */ + +/* s_dmap_1 - standard digits and letters */ +static const char *s_dmap_1 = + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; + +#if 0 +/* s_dmap_2 - base64 ordering for digits */ +static const char *s_dmap_2 = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +#endif + +/* }}} */ + +/* {{{ Static function declarations */ + +/* + If MP_MACRO is false, these will be defined as actual functions; + otherwise, suitable macro definitions will be used. This works + around the fact that ANSI C89 doesn't support an 'inline' keyword + (although I hear C9x will ... about bloody time). At present, the + macro definitions are identical to the function bodies, but they'll + expand in place, instead of generating a function call. + + I chose these particular functions to be made into macros because + some profiling showed they are called a lot on a typical workload, + and yet they are primarily housekeeping. + */ +#if MP_MACRO == 0 + void s_mp_setz(mp_digit *dp, mp_size count); /* zero digits */ + void s_mp_copy(mp_digit *sp, mp_digit *dp, mp_size count); /* copy */ + void *s_mp_alloc(size_t nb, size_t ni); /* general allocator */ + void s_mp_free(void *ptr); /* general free function */ +#else + + /* Even if these are defined as macros, we need to respect the settings + of the MP_MEMSET and MP_MEMCPY configuration options... + */ + #if MP_MEMSET == 0 + #define s_mp_setz(dp, count) \ + {int ix;for(ix=0;ix<(count);ix++)(dp)[ix]=0;} + #else + #define s_mp_setz(dp, count) memset(dp, 0, (count) * sizeof(mp_digit)) + #endif /* MP_MEMSET */ + + #if MP_MEMCPY == 0 + #define s_mp_copy(sp, dp, count) \ + {int ix;for(ix=0;ix<(count);ix++)(dp)[ix]=(sp)[ix];} + #else + #define s_mp_copy(sp, dp, count) memcpy(dp, sp, (count) * sizeof(mp_digit)) + #endif /* MP_MEMCPY */ + + #define s_mp_alloc(nb, ni) calloc(nb, ni) + #define s_mp_free(ptr) {if(ptr) free(ptr);} +#endif /* MP_MACRO */ + +mp_err s_mp_grow(mp_int *mp, mp_size min); /* increase allocated size */ +mp_err s_mp_pad(mp_int *mp, mp_size min); /* left pad with zeroes */ + +void s_mp_clamp(mp_int *mp); /* clip leading zeroes */ + +void s_mp_exch(mp_int *a, mp_int *b); /* swap a and b in place */ + +mp_err s_mp_lshd(mp_int *mp, mp_size p); /* left-shift by p digits */ +void s_mp_rshd(mp_int *mp, mp_size p); /* right-shift by p digits */ +void s_mp_div_2d(mp_int *mp, mp_digit d); /* divide by 2^d in place */ +void s_mp_mod_2d(mp_int *mp, mp_digit d); /* modulo 2^d in place */ +mp_err s_mp_mul_2d(mp_int *mp, mp_digit d); /* multiply by 2^d in place*/ +void s_mp_div_2(mp_int *mp); /* divide by 2 in place */ +mp_err s_mp_mul_2(mp_int *mp); /* multiply by 2 in place */ +mp_digit s_mp_norm(mp_int *a, mp_int *b); /* normalize for division */ +mp_err s_mp_add_d(mp_int *mp, mp_digit d); /* unsigned digit addition */ +mp_err s_mp_sub_d(mp_int *mp, mp_digit d); /* unsigned digit subtract */ +mp_err s_mp_mul_d(mp_int *mp, mp_digit d); /* unsigned digit multiply */ +mp_err s_mp_div_d(mp_int *mp, mp_digit d, mp_digit *r); + /* unsigned digit divide */ +mp_err s_mp_reduce(mp_int *x, mp_int *m, mp_int *mu); + /* Barrett reduction */ +mp_err s_mp_add(mp_int *a, mp_int *b); /* magnitude addition */ +mp_err s_mp_sub(mp_int *a, mp_int *b); /* magnitude subtract */ +mp_err s_mp_mul(mp_int *a, mp_int *b); /* magnitude multiply */ +#if 0 +void s_mp_kmul(mp_digit *a, mp_digit *b, mp_digit *out, mp_size len); + /* multiply buffers in place */ +#endif +#if MP_SQUARE +mp_err s_mp_sqr(mp_int *a); /* magnitude square */ +#else +#define s_mp_sqr(a) s_mp_mul(a, a) +#endif +mp_err s_mp_div(mp_int *a, mp_int *b); /* magnitude divide */ +mp_err s_mp_2expt(mp_int *a, mp_digit k); /* a = 2^k */ +int s_mp_cmp(mp_int *a, mp_int *b); /* magnitude comparison */ +int s_mp_cmp_d(mp_int *a, mp_digit d); /* magnitude digit compare */ +int s_mp_ispow2(mp_int *v); /* is v a power of 2? */ +int s_mp_ispow2d(mp_digit d); /* is d a power of 2? */ + +int s_mp_tovalue(char ch, int r); /* convert ch to value */ +char s_mp_todigit(int val, int r, int low); /* convert val to digit */ +int s_mp_outlen(int bits, int r); /* output length in bytes */ + +/* }}} */ + +/* {{{ Default precision manipulation */ + +unsigned int mp_get_prec(void) +{ + return s_mp_defprec; + +} /* end mp_get_prec() */ + +void mp_set_prec(unsigned int prec) +{ + if(prec == 0) + s_mp_defprec = MP_DEFPREC; + else + s_mp_defprec = prec; + +} /* end mp_set_prec() */ + +/* }}} */ + +/*------------------------------------------------------------------------*/ +/* {{{ mp_init(mp) */ + +/* + mp_init(mp) + + Initialize a new zero-valued mp_int. Returns MP_OKAY if successful, + MP_MEM if memory could not be allocated for the structure. + */ + +mp_err mp_init(mp_int *mp) +{ + return mp_init_size(mp, s_mp_defprec); + +} /* end mp_init() */ + +/* }}} */ + +/* {{{ mp_init_array(mp[], count) */ + +mp_err mp_init_array(mp_int mp[], int count) +{ + mp_err res; + int pos; + + ARGCHK(mp !=NULL && count > 0, MP_BADARG); + + for(pos = 0; pos < count; ++pos) { + if((res = mp_init(&mp[pos])) != MP_OKAY) + goto CLEANUP; + } + + return MP_OKAY; + + CLEANUP: + while(--pos >= 0) + mp_clear(&mp[pos]); + + return res; + +} /* end mp_init_array() */ + +/* }}} */ + +/* {{{ mp_init_size(mp, prec) */ + +/* + mp_init_size(mp, prec) + + Initialize a new zero-valued mp_int with at least the given + precision; returns MP_OKAY if successful, or MP_MEM if memory could + not be allocated for the structure. + */ + +mp_err mp_init_size(mp_int *mp, mp_size prec) +{ + ARGCHK(mp != NULL && prec > 0, MP_BADARG); + + if((DIGITS(mp) = s_mp_alloc(prec, sizeof(mp_digit))) == NULL) + return MP_MEM; + + SIGN(mp) = MP_ZPOS; + USED(mp) = 1; + ALLOC(mp) = prec; + + return MP_OKAY; + +} /* end mp_init_size() */ + +/* }}} */ + +/* {{{ mp_init_copy(mp, from) */ + +/* + mp_init_copy(mp, from) + + Initialize mp as an exact copy of from. Returns MP_OKAY if + successful, MP_MEM if memory could not be allocated for the new + structure. + */ + +mp_err mp_init_copy(mp_int *mp, mp_int *from) +{ + ARGCHK(mp != NULL && from != NULL, MP_BADARG); + + if(mp == from) + return MP_OKAY; + + if((DIGITS(mp) = s_mp_alloc(USED(from), sizeof(mp_digit))) == NULL) + return MP_MEM; + + s_mp_copy(DIGITS(from), DIGITS(mp), USED(from)); + USED(mp) = USED(from); + ALLOC(mp) = USED(from); + SIGN(mp) = SIGN(from); + + return MP_OKAY; + +} /* end mp_init_copy() */ + +/* }}} */ + +/* {{{ mp_copy(from, to) */ + +/* + mp_copy(from, to) + + Copies the mp_int 'from' to the mp_int 'to'. It is presumed that + 'to' has already been initialized (if not, use mp_init_copy() + instead). If 'from' and 'to' are identical, nothing happens. + */ + +mp_err mp_copy(mp_int *from, mp_int *to) +{ + ARGCHK(from != NULL && to != NULL, MP_BADARG); + + if(from == to) + return MP_OKAY; + + { /* copy */ + mp_digit *tmp; + + /* + If the allocated buffer in 'to' already has enough space to hold + all the used digits of 'from', we'll re-use it to avoid hitting + the memory allocater more than necessary; otherwise, we'd have + to grow anyway, so we just allocate a hunk and make the copy as + usual + */ + if(ALLOC(to) >= USED(from)) { + s_mp_setz(DIGITS(to) + USED(from), ALLOC(to) - USED(from)); + s_mp_copy(DIGITS(from), DIGITS(to), USED(from)); + + } else { + if((tmp = s_mp_alloc(USED(from), sizeof(mp_digit))) == NULL) + return MP_MEM; + + s_mp_copy(DIGITS(from), tmp, USED(from)); + + if(DIGITS(to) != NULL) { +#if MP_CRYPTO + s_mp_setz(DIGITS(to), ALLOC(to)); +#endif + s_mp_free(DIGITS(to)); + } + + DIGITS(to) = tmp; + ALLOC(to) = USED(from); + } + + /* Copy the precision and sign from the original */ + USED(to) = USED(from); + SIGN(to) = SIGN(from); + } /* end copy */ + + return MP_OKAY; + +} /* end mp_copy() */ + +/* }}} */ + +/* {{{ mp_exch(mp1, mp2) */ + +/* + mp_exch(mp1, mp2) + + Exchange mp1 and mp2 without allocating any intermediate memory + (well, unless you count the stack space needed for this call and the + locals it creates...). This cannot fail. + */ + +void mp_exch(mp_int *mp1, mp_int *mp2) +{ +#if MP_ARGCHK == 2 + assert(mp1 != NULL && mp2 != NULL); +#else + if(mp1 == NULL || mp2 == NULL) + return; +#endif + + s_mp_exch(mp1, mp2); + +} /* end mp_exch() */ + +/* }}} */ + +/* {{{ mp_clear(mp) */ + +/* + mp_clear(mp) + + Release the storage used by an mp_int, and void its fields so that + if someone calls mp_clear() again for the same int later, we won't + get tollchocked. + */ + +void mp_clear(mp_int *mp) +{ + if(mp == NULL) + return; + + if(DIGITS(mp) != NULL) { +#if MP_CRYPTO + s_mp_setz(DIGITS(mp), ALLOC(mp)); +#endif + s_mp_free(DIGITS(mp)); + DIGITS(mp) = NULL; + } + + USED(mp) = 0; + ALLOC(mp) = 0; + +} /* end mp_clear() */ + +/* }}} */ + +/* {{{ mp_clear_array(mp[], count) */ + +void mp_clear_array(mp_int mp[], int count) +{ + ARGCHK(mp != NULL && count > 0, MP_BADARG); + + while(--count >= 0) + mp_clear(&mp[count]); + +} /* end mp_clear_array() */ + +/* }}} */ + +/* {{{ mp_zero(mp) */ + +/* + mp_zero(mp) + + Set mp to zero. Does not change the allocated size of the structure, + and therefore cannot fail (except on a bad argument, which we ignore) + */ +void mp_zero(mp_int *mp) +{ + if(mp == NULL) + return; + + s_mp_setz(DIGITS(mp), ALLOC(mp)); + USED(mp) = 1; + SIGN(mp) = MP_ZPOS; + +} /* end mp_zero() */ + +/* }}} */ + +/* {{{ mp_set(mp, d) */ + +void mp_set(mp_int *mp, mp_digit d) +{ + if(mp == NULL) + return; + + mp_zero(mp); + DIGIT(mp, 0) = d; + +} /* end mp_set() */ + +/* }}} */ + +/* {{{ mp_set_int(mp, z) */ + +mp_err mp_set_int(mp_int *mp, long z) +{ + int ix; + unsigned long v = abs(z); + mp_err res; + + ARGCHK(mp != NULL, MP_BADARG); + + mp_zero(mp); + if(z == 0) + return MP_OKAY; /* shortcut for zero */ + + for(ix = sizeof(long) - 1; ix >= 0; ix--) { + + if((res = s_mp_mul_2d(mp, CHAR_BIT)) != MP_OKAY) + return res; + + res = s_mp_add_d(mp, + (mp_digit)((v >> (ix * CHAR_BIT)) & UCHAR_MAX)); + if(res != MP_OKAY) + return res; + + } + + if(z < 0) + SIGN(mp) = MP_NEG; + + return MP_OKAY; + +} /* end mp_set_int() */ + +/* }}} */ + +/*------------------------------------------------------------------------*/ +/* {{{ Digit arithmetic */ + +/* {{{ mp_add_d(a, d, b) */ + +/* + mp_add_d(a, d, b) + + Compute the sum b = a + d, for a single digit d. Respects the sign of + its primary addend (single digits are unsigned anyway). + */ + +mp_err mp_add_d(mp_int *a, mp_digit d, mp_int *b) +{ + mp_err res = MP_OKAY; + + ARGCHK(a != NULL && b != NULL, MP_BADARG); + + if((res = mp_copy(a, b)) != MP_OKAY) + return res; + + if(SIGN(b) == MP_ZPOS) { + res = s_mp_add_d(b, d); + } else if(s_mp_cmp_d(b, d) >= 0) { + res = s_mp_sub_d(b, d); + } else { + SIGN(b) = MP_ZPOS; + + DIGIT(b, 0) = d - DIGIT(b, 0); + } + + return res; + +} /* end mp_add_d() */ + +/* }}} */ + +/* {{{ mp_sub_d(a, d, b) */ + +/* + mp_sub_d(a, d, b) + + Compute the difference b = a - d, for a single digit d. Respects the + sign of its subtrahend (single digits are unsigned anyway). + */ + +mp_err mp_sub_d(mp_int *a, mp_digit d, mp_int *b) +{ + mp_err res; + + ARGCHK(a != NULL && b != NULL, MP_BADARG); + + if((res = mp_copy(a, b)) != MP_OKAY) + return res; + + if(SIGN(b) == MP_NEG) { + if((res = s_mp_add_d(b, d)) != MP_OKAY) + return res; + + } else if(s_mp_cmp_d(b, d) >= 0) { + if((res = s_mp_sub_d(b, d)) != MP_OKAY) + return res; + + } else { + mp_neg(b, b); + + DIGIT(b, 0) = d - DIGIT(b, 0); + SIGN(b) = MP_NEG; + } + + if(s_mp_cmp_d(b, 0) == 0) + SIGN(b) = MP_ZPOS; + + return MP_OKAY; + +} /* end mp_sub_d() */ + +/* }}} */ + +/* {{{ mp_mul_d(a, d, b) */ + +/* + mp_mul_d(a, d, b) + + Compute the product b = a * d, for a single digit d. Respects the sign + of its multiplicand (single digits are unsigned anyway) + */ + +mp_err mp_mul_d(mp_int *a, mp_digit d, mp_int *b) +{ + mp_err res; + + ARGCHK(a != NULL && b != NULL, MP_BADARG); + + if(d == 0) { + mp_zero(b); + return MP_OKAY; + } + + if((res = mp_copy(a, b)) != MP_OKAY) + return res; + + res = s_mp_mul_d(b, d); + + return res; + +} /* end mp_mul_d() */ + +/* }}} */ + +/* {{{ mp_mul_2(a, c) */ + +mp_err mp_mul_2(mp_int *a, mp_int *c) +{ + mp_err res; + + ARGCHK(a != NULL && c != NULL, MP_BADARG); + + if((res = mp_copy(a, c)) != MP_OKAY) + return res; + + return s_mp_mul_2(c); + +} /* end mp_mul_2() */ + +/* }}} */ + +/* {{{ mp_div_d(a, d, q, r) */ + +/* + mp_div_d(a, d, q, r) + + Compute the quotient q = a / d and remainder r = a mod d, for a + single digit d. Respects the sign of its divisor (single digits are + unsigned anyway). + */ + +mp_err mp_div_d(mp_int *a, mp_digit d, mp_int *q, mp_digit *r) +{ + mp_err res; + mp_digit rem; + int pow; + + ARGCHK(a != NULL, MP_BADARG); + + if(d == 0) + return MP_RANGE; + + /* Shortcut for powers of two ... */ + if((pow = s_mp_ispow2d(d)) >= 0) { + mp_digit mask; + + mask = (1 << pow) - 1; + rem = DIGIT(a, 0) & mask; + + if(q) { + mp_copy(a, q); + s_mp_div_2d(q, pow); + } + + if(r) + *r = rem; + + return MP_OKAY; + } + + /* + If the quotient is actually going to be returned, we'll try to + avoid hitting the memory allocator by copying the dividend into it + and doing the division there. This can't be any _worse_ than + always copying, and will sometimes be better (since it won't make + another copy) + + If it's not going to be returned, we need to allocate a temporary + to hold the quotient, which will just be discarded. + */ + if(q) { + if((res = mp_copy(a, q)) != MP_OKAY) + return res; + + res = s_mp_div_d(q, d, &rem); + if(s_mp_cmp_d(q, 0) == MP_EQ) + SIGN(q) = MP_ZPOS; + + } else { + mp_int qp; + + if((res = mp_init_copy(&qp, a)) != MP_OKAY) + return res; + + res = s_mp_div_d(&qp, d, &rem); + if(s_mp_cmp_d(&qp, 0) == 0) + SIGN(&qp) = MP_ZPOS; + + mp_clear(&qp); + } + + if(r) + *r = rem; + + return res; + +} /* end mp_div_d() */ + +/* }}} */ + +/* {{{ mp_div_2(a, c) */ + +/* + mp_div_2(a, c) + + Compute c = a / 2, disregarding the remainder. + */ + +mp_err mp_div_2(mp_int *a, mp_int *c) +{ + mp_err res; + + ARGCHK(a != NULL && c != NULL, MP_BADARG); + + if((res = mp_copy(a, c)) != MP_OKAY) + return res; + + s_mp_div_2(c); + + return MP_OKAY; + +} /* end mp_div_2() */ + +/* }}} */ + +/* {{{ mp_expt_d(a, d, b) */ + +mp_err mp_expt_d(mp_int *a, mp_digit d, mp_int *c) +{ + mp_int s, x; + mp_err res; + + ARGCHK(a != NULL && c != NULL, MP_BADARG); + + if((res = mp_init(&s)) != MP_OKAY) + return res; + if((res = mp_init_copy(&x, a)) != MP_OKAY) + goto X; + + DIGIT(&s, 0) = 1; + + while(d != 0) { + if(d & 1) { + if((res = s_mp_mul(&s, &x)) != MP_OKAY) + goto CLEANUP; + } + + d >>= 1; + + if((res = s_mp_sqr(&x)) != MP_OKAY) + goto CLEANUP; + } + + s_mp_exch(&s, c); + +CLEANUP: + mp_clear(&x); +X: + mp_clear(&s); + + return res; + +} /* end mp_expt_d() */ + +/* }}} */ + +/* }}} */ + +/*------------------------------------------------------------------------*/ +/* {{{ Full arithmetic */ + +/* {{{ mp_abs(a, b) */ + +/* + mp_abs(a, b) + + Compute b = |a|. 'a' and 'b' may be identical. + */ + +mp_err mp_abs(mp_int *a, mp_int *b) +{ + mp_err res; + + ARGCHK(a != NULL && b != NULL, MP_BADARG); + + if((res = mp_copy(a, b)) != MP_OKAY) + return res; + + SIGN(b) = MP_ZPOS; + + return MP_OKAY; + +} /* end mp_abs() */ + +/* }}} */ + +/* {{{ mp_neg(a, b) */ + +/* + mp_neg(a, b) + + Compute b = -a. 'a' and 'b' may be identical. + */ + +mp_err mp_neg(mp_int *a, mp_int *b) +{ + mp_err res; + + ARGCHK(a != NULL && b != NULL, MP_BADARG); + + if((res = mp_copy(a, b)) != MP_OKAY) + return res; + + if(s_mp_cmp_d(b, 0) == MP_EQ) + SIGN(b) = MP_ZPOS; + else + SIGN(b) = (SIGN(b) == MP_NEG) ? MP_ZPOS : MP_NEG; + + return MP_OKAY; + +} /* end mp_neg() */ + +/* }}} */ + +/* {{{ mp_add(a, b, c) */ + +/* + mp_add(a, b, c) + + Compute c = a + b. All parameters may be identical. + */ + +mp_err mp_add(mp_int *a, mp_int *b, mp_int *c) +{ + mp_err res; + int cmp; + + ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG); + + if(SIGN(a) == SIGN(b)) { /* same sign: add values, keep sign */ + + /* Commutativity of addition lets us do this in either order, + so we avoid having to use a temporary even if the result + is supposed to replace the output + */ + if(c == b) { + if((res = s_mp_add(c, a)) != MP_OKAY) + return res; + } else { + if(c != a && (res = mp_copy(a, c)) != MP_OKAY) + return res; + + if((res = s_mp_add(c, b)) != MP_OKAY) + return res; + } + + } else if((cmp = s_mp_cmp(a, b)) > 0) { /* different sign: a > b */ + + /* If the output is going to be clobbered, we will use a temporary + variable; otherwise, we'll do it without touching the memory + allocator at all, if possible + */ + if(c == b) { + mp_int tmp; + + if((res = mp_init_copy(&tmp, a)) != MP_OKAY) + return res; + if((res = s_mp_sub(&tmp, b)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + + s_mp_exch(&tmp, c); + mp_clear(&tmp); + + } else { + + if(c != a && (res = mp_copy(a, c)) != MP_OKAY) + return res; + if((res = s_mp_sub(c, b)) != MP_OKAY) + return res; + + } + + } else if(cmp == 0) { /* different sign, a == b */ + + mp_zero(c); + return MP_OKAY; + + } else { /* different sign: a < b */ + + /* See above... */ + if(c == a) { + mp_int tmp; + + if((res = mp_init_copy(&tmp, b)) != MP_OKAY) + return res; + if((res = s_mp_sub(&tmp, a)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + + s_mp_exch(&tmp, c); + mp_clear(&tmp); + + } else { + + if(c != b && (res = mp_copy(b, c)) != MP_OKAY) + return res; + if((res = s_mp_sub(c, a)) != MP_OKAY) + return res; + + } + } + + if(USED(c) == 1 && DIGIT(c, 0) == 0) + SIGN(c) = MP_ZPOS; + + return MP_OKAY; + +} /* end mp_add() */ + +/* }}} */ + +/* {{{ mp_sub(a, b, c) */ + +/* + mp_sub(a, b, c) + + Compute c = a - b. All parameters may be identical. + */ + +mp_err mp_sub(mp_int *a, mp_int *b, mp_int *c) +{ + mp_err res; + int cmp; + + ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG); + + if(SIGN(a) != SIGN(b)) { + if(c == a) { + if((res = s_mp_add(c, b)) != MP_OKAY) + return res; + } else { + if(c != b && ((res = mp_copy(b, c)) != MP_OKAY)) + return res; + if((res = s_mp_add(c, a)) != MP_OKAY) + return res; + SIGN(c) = SIGN(a); + } + + } else if((cmp = s_mp_cmp(a, b)) > 0) { /* Same sign, a > b */ + if(c == b) { + mp_int tmp; + + if((res = mp_init_copy(&tmp, a)) != MP_OKAY) + return res; + if((res = s_mp_sub(&tmp, b)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + s_mp_exch(&tmp, c); + mp_clear(&tmp); + + } else { + if(c != a && ((res = mp_copy(a, c)) != MP_OKAY)) + return res; + + if((res = s_mp_sub(c, b)) != MP_OKAY) + return res; + } + + } else if(cmp == 0) { /* Same sign, equal magnitude */ + mp_zero(c); + return MP_OKAY; + + } else { /* Same sign, b > a */ + if(c == a) { + mp_int tmp; + + if((res = mp_init_copy(&tmp, b)) != MP_OKAY) + return res; + + if((res = s_mp_sub(&tmp, a)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + s_mp_exch(&tmp, c); + mp_clear(&tmp); + + } else { + if(c != b && ((res = mp_copy(b, c)) != MP_OKAY)) + return res; + + if((res = s_mp_sub(c, a)) != MP_OKAY) + return res; + } + + SIGN(c) = !SIGN(b); + } + + if(USED(c) == 1 && DIGIT(c, 0) == 0) + SIGN(c) = MP_ZPOS; + + return MP_OKAY; + +} /* end mp_sub() */ + +/* }}} */ + +/* {{{ mp_mul(a, b, c) */ + +/* + mp_mul(a, b, c) + + Compute c = a * b. All parameters may be identical. + */ + +mp_err mp_mul(mp_int *a, mp_int *b, mp_int *c) +{ + mp_err res; + mp_sign sgn; + + ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG); + + sgn = (SIGN(a) == SIGN(b)) ? MP_ZPOS : MP_NEG; + + if(c == b) { + if((res = s_mp_mul(c, a)) != MP_OKAY) + return res; + + } else { + if((res = mp_copy(a, c)) != MP_OKAY) + return res; + + if((res = s_mp_mul(c, b)) != MP_OKAY) + return res; + } + + if(sgn == MP_ZPOS || s_mp_cmp_d(c, 0) == MP_EQ) + SIGN(c) = MP_ZPOS; + else + SIGN(c) = sgn; + + return MP_OKAY; + +} /* end mp_mul() */ + +/* }}} */ + +/* {{{ mp_mul_2d(a, d, c) */ + +/* + mp_mul_2d(a, d, c) + + Compute c = a * 2^d. a may be the same as c. + */ + +mp_err mp_mul_2d(mp_int *a, mp_digit d, mp_int *c) +{ + mp_err res; + + ARGCHK(a != NULL && c != NULL, MP_BADARG); + + if((res = mp_copy(a, c)) != MP_OKAY) + return res; + + if(d == 0) + return MP_OKAY; + + return s_mp_mul_2d(c, d); + +} /* end mp_mul() */ + +/* }}} */ + +/* {{{ mp_sqr(a, b) */ + +#if MP_SQUARE +mp_err mp_sqr(mp_int *a, mp_int *b) +{ + mp_err res; + + ARGCHK(a != NULL && b != NULL, MP_BADARG); + + if((res = mp_copy(a, b)) != MP_OKAY) + return res; + + if((res = s_mp_sqr(b)) != MP_OKAY) + return res; + + SIGN(b) = MP_ZPOS; + + return MP_OKAY; + +} /* end mp_sqr() */ +#endif + +/* }}} */ + +/* {{{ mp_div(a, b, q, r) */ + +/* + mp_div(a, b, q, r) + + Compute q = a / b and r = a mod b. Input parameters may be re-used + as output parameters. If q or r is NULL, that portion of the + computation will be discarded (although it will still be computed) + + Pay no attention to the hacker behind the curtain. + */ + +mp_err mp_div(mp_int *a, mp_int *b, mp_int *q, mp_int *r) +{ + mp_err res; + mp_int qtmp, rtmp; + int cmp; + + ARGCHK(a != NULL && b != NULL, MP_BADARG); + + if(mp_cmp_z(b) == MP_EQ) + return MP_RANGE; + + /* If a <= b, we can compute the solution without division, and + avoid any memory allocation + */ + if((cmp = s_mp_cmp(a, b)) < 0) { + if(r) { + if((res = mp_copy(a, r)) != MP_OKAY) + return res; + } + + if(q) + mp_zero(q); + + return MP_OKAY; + + } else if(cmp == 0) { + + /* Set quotient to 1, with appropriate sign */ + if(q) { + int qneg = (SIGN(a) != SIGN(b)); + + mp_set(q, 1); + if(qneg) + SIGN(q) = MP_NEG; + } + + if(r) + mp_zero(r); + + return MP_OKAY; + } + + /* If we get here, it means we actually have to do some division */ + + /* Set up some temporaries... */ + if((res = mp_init_copy(&qtmp, a)) != MP_OKAY) + return res; + if((res = mp_init_copy(&rtmp, b)) != MP_OKAY) + goto CLEANUP; + + if((res = s_mp_div(&qtmp, &rtmp)) != MP_OKAY) + goto CLEANUP; + + /* Compute the signs for the output */ + SIGN(&rtmp) = SIGN(a); /* Sr = Sa */ + if(SIGN(a) == SIGN(b)) + SIGN(&qtmp) = MP_ZPOS; /* Sq = MP_ZPOS if Sa = Sb */ + else + SIGN(&qtmp) = MP_NEG; /* Sq = MP_NEG if Sa != Sb */ + + if(s_mp_cmp_d(&qtmp, 0) == MP_EQ) + SIGN(&qtmp) = MP_ZPOS; + if(s_mp_cmp_d(&rtmp, 0) == MP_EQ) + SIGN(&rtmp) = MP_ZPOS; + + /* Copy output, if it is needed */ + if(q) + s_mp_exch(&qtmp, q); + + if(r) + s_mp_exch(&rtmp, r); + +CLEANUP: + mp_clear(&rtmp); + mp_clear(&qtmp); + + return res; + +} /* end mp_div() */ + +/* }}} */ + +/* {{{ mp_div_2d(a, d, q, r) */ + +mp_err mp_div_2d(mp_int *a, mp_digit d, mp_int *q, mp_int *r) +{ + mp_err res; + + ARGCHK(a != NULL, MP_BADARG); + + if(q) { + if((res = mp_copy(a, q)) != MP_OKAY) + return res; + + s_mp_div_2d(q, d); + } + + if(r) { + if((res = mp_copy(a, r)) != MP_OKAY) + return res; + + s_mp_mod_2d(r, d); + } + + return MP_OKAY; + +} /* end mp_div_2d() */ + +/* }}} */ + +/* {{{ mp_expt(a, b, c) */ + +/* + mp_expt(a, b, c) + + Compute c = a ** b, that is, raise a to the b power. Uses a + standard iterative square-and-multiply technique. + */ + +mp_err mp_expt(mp_int *a, mp_int *b, mp_int *c) +{ + mp_int s, x; + mp_err res; + mp_digit d; + int dig, bit; + + ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG); + + if(mp_cmp_z(b) < 0) + return MP_RANGE; + + if((res = mp_init(&s)) != MP_OKAY) + return res; + + mp_set(&s, 1); + + if((res = mp_init_copy(&x, a)) != MP_OKAY) + goto X; + + /* Loop over low-order digits in ascending order */ + for(dig = 0; dig < (USED(b) - 1); dig++) { + d = DIGIT(b, dig); + + /* Loop over bits of each non-maximal digit */ + for(bit = 0; bit < DIGIT_BIT; bit++) { + if(d & 1) { + if((res = s_mp_mul(&s, &x)) != MP_OKAY) + goto CLEANUP; + } + + d >>= 1; + + if((res = s_mp_sqr(&x)) != MP_OKAY) + goto CLEANUP; + } + } + + /* Consider now the last digit... */ + d = DIGIT(b, dig); + + while(d) { + if(d & 1) { + if((res = s_mp_mul(&s, &x)) != MP_OKAY) + goto CLEANUP; + } + + d >>= 1; + + if((res = s_mp_sqr(&x)) != MP_OKAY) + goto CLEANUP; + } + + if(mp_iseven(b)) + SIGN(&s) = SIGN(a); + + res = mp_copy(&s, c); + +CLEANUP: + mp_clear(&x); +X: + mp_clear(&s); + + return res; + +} /* end mp_expt() */ + +/* }}} */ + +/* {{{ mp_2expt(a, k) */ + +/* Compute a = 2^k */ + +mp_err mp_2expt(mp_int *a, mp_digit k) +{ + ARGCHK(a != NULL, MP_BADARG); + + return s_mp_2expt(a, k); + +} /* end mp_2expt() */ + +/* }}} */ + +/* {{{ mp_mod(a, m, c) */ + +/* + mp_mod(a, m, c) + + Compute c = a (mod m). Result will always be 0 <= c < m. + */ + +mp_err mp_mod(mp_int *a, mp_int *m, mp_int *c) +{ + mp_err res; + int mag; + + ARGCHK(a != NULL && m != NULL && c != NULL, MP_BADARG); + + if(SIGN(m) == MP_NEG) + return MP_RANGE; + + /* + If |a| > m, we need to divide to get the remainder and take the + absolute value. + + If |a| < m, we don't need to do any division, just copy and adjust + the sign (if a is negative). + + If |a| == m, we can simply set the result to zero. + + This order is intended to minimize the average path length of the + comparison chain on common workloads -- the most frequent cases are + that |a| != m, so we do those first. + */ + if((mag = s_mp_cmp(a, m)) > 0) { + if((res = mp_div(a, m, NULL, c)) != MP_OKAY) + return res; + + if(SIGN(c) == MP_NEG) { + if((res = mp_add(c, m, c)) != MP_OKAY) + return res; + } + + } else if(mag < 0) { + if((res = mp_copy(a, c)) != MP_OKAY) + return res; + + if(mp_cmp_z(a) < 0) { + if((res = mp_add(c, m, c)) != MP_OKAY) + return res; + + } + + } else { + mp_zero(c); + + } + + return MP_OKAY; + +} /* end mp_mod() */ + +/* }}} */ + +/* {{{ mp_mod_d(a, d, c) */ + +/* + mp_mod_d(a, d, c) + + Compute c = a (mod d). Result will always be 0 <= c < d + */ +mp_err mp_mod_d(mp_int *a, mp_digit d, mp_digit *c) +{ + mp_err res; + mp_digit rem; + + ARGCHK(a != NULL && c != NULL, MP_BADARG); + + if(s_mp_cmp_d(a, d) > 0) { + if((res = mp_div_d(a, d, NULL, &rem)) != MP_OKAY) + return res; + + } else { + if(SIGN(a) == MP_NEG) + rem = d - DIGIT(a, 0); + else + rem = DIGIT(a, 0); + } + + if(c) + *c = rem; + + return MP_OKAY; + +} /* end mp_mod_d() */ + +/* }}} */ + +/* {{{ mp_sqrt(a, b) */ + +/* + mp_sqrt(a, b) + + Compute the integer square root of a, and store the result in b. + Uses an integer-arithmetic version of Newton's iterative linear + approximation technique to determine this value; the result has the + following two properties: + + b^2 <= a + (b+1)^2 >= a + + It is a range error to pass a negative value. + */ +mp_err mp_sqrt(mp_int *a, mp_int *b) +{ + mp_int x, t; + mp_err res; + + ARGCHK(a != NULL && b != NULL, MP_BADARG); + + /* Cannot take square root of a negative value */ + if(SIGN(a) == MP_NEG) + return MP_RANGE; + + /* Special cases for zero and one, trivial */ + if(mp_cmp_d(a, 0) == MP_EQ || mp_cmp_d(a, 1) == MP_EQ) + return mp_copy(a, b); + + /* Initialize the temporaries we'll use below */ + if((res = mp_init_size(&t, USED(a))) != MP_OKAY) + return res; + + /* Compute an initial guess for the iteration as a itself */ + if((res = mp_init_copy(&x, a)) != MP_OKAY) + goto X; + +s_mp_rshd(&x, (USED(&x)/2)+1); +mp_add_d(&x, 1, &x); + + for(;;) { + /* t = (x * x) - a */ + mp_copy(&x, &t); /* can't fail, t is big enough for original x */ + if((res = mp_sqr(&t, &t)) != MP_OKAY || + (res = mp_sub(&t, a, &t)) != MP_OKAY) + goto CLEANUP; + + /* t = t / 2x */ + s_mp_mul_2(&x); + if((res = mp_div(&t, &x, &t, NULL)) != MP_OKAY) + goto CLEANUP; + s_mp_div_2(&x); + + /* Terminate the loop, if the quotient is zero */ + if(mp_cmp_z(&t) == MP_EQ) + break; + + /* x = x - t */ + if((res = mp_sub(&x, &t, &x)) != MP_OKAY) + goto CLEANUP; + + } + + /* Copy result to output parameter */ + mp_sub_d(&x, 1, &x); + s_mp_exch(&x, b); + + CLEANUP: + mp_clear(&x); + X: + mp_clear(&t); + + return res; + +} /* end mp_sqrt() */ + +/* }}} */ + +/* }}} */ + +/*------------------------------------------------------------------------*/ +/* {{{ Modular arithmetic */ + +#if MP_MODARITH +/* {{{ mp_addmod(a, b, m, c) */ + +/* + mp_addmod(a, b, m, c) + + Compute c = (a + b) mod m + */ + +mp_err mp_addmod(mp_int *a, mp_int *b, mp_int *m, mp_int *c) +{ + mp_err res; + + ARGCHK(a != NULL && b != NULL && m != NULL && c != NULL, MP_BADARG); + + if((res = mp_add(a, b, c)) != MP_OKAY) + return res; + if((res = mp_mod(c, m, c)) != MP_OKAY) + return res; + + return MP_OKAY; + +} + +/* }}} */ + +/* {{{ mp_submod(a, b, m, c) */ + +/* + mp_submod(a, b, m, c) + + Compute c = (a - b) mod m + */ + +mp_err mp_submod(mp_int *a, mp_int *b, mp_int *m, mp_int *c) +{ + mp_err res; + + ARGCHK(a != NULL && b != NULL && m != NULL && c != NULL, MP_BADARG); + + if((res = mp_sub(a, b, c)) != MP_OKAY) + return res; + if((res = mp_mod(c, m, c)) != MP_OKAY) + return res; + + return MP_OKAY; + +} + +/* }}} */ + +/* {{{ mp_mulmod(a, b, m, c) */ + +/* + mp_mulmod(a, b, m, c) + + Compute c = (a * b) mod m + */ + +mp_err mp_mulmod(mp_int *a, mp_int *b, mp_int *m, mp_int *c) +{ + mp_err res; + + ARGCHK(a != NULL && b != NULL && m != NULL && c != NULL, MP_BADARG); + + if((res = mp_mul(a, b, c)) != MP_OKAY) + return res; + if((res = mp_mod(c, m, c)) != MP_OKAY) + return res; + + return MP_OKAY; + +} + +/* }}} */ + +/* {{{ mp_sqrmod(a, m, c) */ + +#if MP_SQUARE +mp_err mp_sqrmod(mp_int *a, mp_int *m, mp_int *c) +{ + mp_err res; + + ARGCHK(a != NULL && m != NULL && c != NULL, MP_BADARG); + + if((res = mp_sqr(a, c)) != MP_OKAY) + return res; + if((res = mp_mod(c, m, c)) != MP_OKAY) + return res; + + return MP_OKAY; + +} /* end mp_sqrmod() */ +#endif + +/* }}} */ + +/* {{{ mp_exptmod(a, b, m, c) */ + +/* + mp_exptmod(a, b, m, c) + + Compute c = (a ** b) mod m. Uses a standard square-and-multiply + method with modular reductions at each step. (This is basically the + same code as mp_expt(), except for the addition of the reductions) + + The modular reductions are done using Barrett's algorithm (see + s_mp_reduce() below for details) + */ + +mp_err mp_exptmod(mp_int *a, mp_int *b, mp_int *m, mp_int *c) +{ + mp_int s, x, mu; + mp_err res; + mp_digit d, *db = DIGITS(b); + mp_size ub = USED(b); + int dig, bit; + + ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG); + + if(mp_cmp_z(b) < 0 || mp_cmp_z(m) <= 0) + return MP_RANGE; + + if((res = mp_init(&s)) != MP_OKAY) + return res; + if((res = mp_init_copy(&x, a)) != MP_OKAY) + goto X; + if((res = mp_mod(&x, m, &x)) != MP_OKAY || + (res = mp_init(&mu)) != MP_OKAY) + goto MU; + + mp_set(&s, 1); + + /* mu = b^2k / m */ + s_mp_add_d(&mu, 1); + s_mp_lshd(&mu, 2 * USED(m)); + if((res = mp_div(&mu, m, &mu, NULL)) != MP_OKAY) + goto CLEANUP; + + /* Loop over digits of b in ascending order, except highest order */ + for(dig = 0; dig < (ub - 1); dig++) { + d = *db++; + + /* Loop over the bits of the lower-order digits */ + for(bit = 0; bit < DIGIT_BIT; bit++) { + if(d & 1) { + if((res = s_mp_mul(&s, &x)) != MP_OKAY) + goto CLEANUP; + if((res = s_mp_reduce(&s, m, &mu)) != MP_OKAY) + goto CLEANUP; + } + + d >>= 1; + + if((res = s_mp_sqr(&x)) != MP_OKAY) + goto CLEANUP; + if((res = s_mp_reduce(&x, m, &mu)) != MP_OKAY) + goto CLEANUP; + } + } + + /* Now do the last digit... */ + d = *db; + + while(d) { + if(d & 1) { + if((res = s_mp_mul(&s, &x)) != MP_OKAY) + goto CLEANUP; + if((res = s_mp_reduce(&s, m, &mu)) != MP_OKAY) + goto CLEANUP; + } + + d >>= 1; + + if((res = s_mp_sqr(&x)) != MP_OKAY) + goto CLEANUP; + if((res = s_mp_reduce(&x, m, &mu)) != MP_OKAY) + goto CLEANUP; + } + + s_mp_exch(&s, c); + + CLEANUP: + mp_clear(&mu); + MU: + mp_clear(&x); + X: + mp_clear(&s); + + return res; + +} /* end mp_exptmod() */ + +/* }}} */ + +/* {{{ mp_exptmod_d(a, d, m, c) */ + +mp_err mp_exptmod_d(mp_int *a, mp_digit d, mp_int *m, mp_int *c) +{ + mp_int s, x; + mp_err res; + + ARGCHK(a != NULL && c != NULL, MP_BADARG); + + if((res = mp_init(&s)) != MP_OKAY) + return res; + if((res = mp_init_copy(&x, a)) != MP_OKAY) + goto X; + + mp_set(&s, 1); + + while(d != 0) { + if(d & 1) { + if((res = s_mp_mul(&s, &x)) != MP_OKAY || + (res = mp_mod(&s, m, &s)) != MP_OKAY) + goto CLEANUP; + } + + d /= 2; + + if((res = s_mp_sqr(&x)) != MP_OKAY || + (res = mp_mod(&x, m, &x)) != MP_OKAY) + goto CLEANUP; + } + + s_mp_exch(&s, c); + +CLEANUP: + mp_clear(&x); +X: + mp_clear(&s); + + return res; + +} /* end mp_exptmod_d() */ + +/* }}} */ +#endif /* if MP_MODARITH */ + +/* }}} */ + +/*------------------------------------------------------------------------*/ +/* {{{ Comparison functions */ + +/* {{{ mp_cmp_z(a) */ + +/* + mp_cmp_z(a) + + Compare a <=> 0. Returns <0 if a<0, 0 if a=0, >0 if a>0. + */ + +int mp_cmp_z(mp_int *a) +{ + if(SIGN(a) == MP_NEG) + return MP_LT; + else if(USED(a) == 1 && DIGIT(a, 0) == 0) + return MP_EQ; + else + return MP_GT; + +} /* end mp_cmp_z() */ + +/* }}} */ + +/* {{{ mp_cmp_d(a, d) */ + +/* + mp_cmp_d(a, d) + + Compare a <=> d. Returns <0 if a0 if a>d + */ + +int mp_cmp_d(mp_int *a, mp_digit d) +{ + ARGCHK(a != NULL, MP_EQ); + + if(SIGN(a) == MP_NEG) + return MP_LT; + + return s_mp_cmp_d(a, d); + +} /* end mp_cmp_d() */ + +/* }}} */ + +/* {{{ mp_cmp(a, b) */ + +int mp_cmp(mp_int *a, mp_int *b) +{ + ARGCHK(a != NULL && b != NULL, MP_EQ); + + if(SIGN(a) == SIGN(b)) { + int mag; + + if((mag = s_mp_cmp(a, b)) == MP_EQ) + return MP_EQ; + + if(SIGN(a) == MP_ZPOS) + return mag; + else + return -mag; + + } else if(SIGN(a) == MP_ZPOS) { + return MP_GT; + } else { + return MP_LT; + } + +} /* end mp_cmp() */ + +/* }}} */ + +/* {{{ mp_cmp_mag(a, b) */ + +/* + mp_cmp_mag(a, b) + + Compares |a| <=> |b|, and returns an appropriate comparison result + */ + +int mp_cmp_mag(mp_int *a, mp_int *b) +{ + ARGCHK(a != NULL && b != NULL, MP_EQ); + + return s_mp_cmp(a, b); + +} /* end mp_cmp_mag() */ + +/* }}} */ + +/* {{{ mp_cmp_int(a, z) */ + +/* + This just converts z to an mp_int, and uses the existing comparison + routines. This is sort of inefficient, but it's not clear to me how + frequently this wil get used anyway. For small positive constants, + you can always use mp_cmp_d(), and for zero, there is mp_cmp_z(). + */ +int mp_cmp_int(mp_int *a, long z) +{ + mp_int tmp; + int out; + + ARGCHK(a != NULL, MP_EQ); + + mp_init(&tmp); mp_set_int(&tmp, z); + out = mp_cmp(a, &tmp); + mp_clear(&tmp); + + return out; + +} /* end mp_cmp_int() */ + +/* }}} */ + +/* {{{ mp_isodd(a) */ + +/* + mp_isodd(a) + + Returns a true (non-zero) value if a is odd, false (zero) otherwise. + */ +int mp_isodd(mp_int *a) +{ + ARGCHK(a != NULL, 0); + + return (DIGIT(a, 0) & 1); + +} /* end mp_isodd() */ + +/* }}} */ + +/* {{{ mp_iseven(a) */ + +int mp_iseven(mp_int *a) +{ + return !mp_isodd(a); + +} /* end mp_iseven() */ + +/* }}} */ + +/* }}} */ + +/*------------------------------------------------------------------------*/ +/* {{{ Number theoretic functions */ + +#if MP_NUMTH +/* {{{ mp_gcd(a, b, c) */ + +/* + Like the old mp_gcd() function, except computes the GCD using the + binary algorithm due to Josef Stein in 1961 (via Knuth). + */ +mp_err mp_gcd(mp_int *a, mp_int *b, mp_int *c) +{ + mp_err res; + mp_int u, v, t; + mp_size k = 0; + + ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG); + + if(mp_cmp_z(a) == MP_EQ && mp_cmp_z(b) == MP_EQ) + return MP_RANGE; + if(mp_cmp_z(a) == MP_EQ) { + return mp_copy(b, c); + } else if(mp_cmp_z(b) == MP_EQ) { + return mp_copy(a, c); + } + + if((res = mp_init(&t)) != MP_OKAY) + return res; + if((res = mp_init_copy(&u, a)) != MP_OKAY) + goto U; + if((res = mp_init_copy(&v, b)) != MP_OKAY) + goto V; + + SIGN(&u) = MP_ZPOS; + SIGN(&v) = MP_ZPOS; + + /* Divide out common factors of 2 until at least 1 of a, b is even */ + while(mp_iseven(&u) && mp_iseven(&v)) { + s_mp_div_2(&u); + s_mp_div_2(&v); + ++k; + } + + /* Initialize t */ + if(mp_isodd(&u)) { + if((res = mp_copy(&v, &t)) != MP_OKAY) + goto CLEANUP; + + /* t = -v */ + if(SIGN(&v) == MP_ZPOS) + SIGN(&t) = MP_NEG; + else + SIGN(&t) = MP_ZPOS; + + } else { + if((res = mp_copy(&u, &t)) != MP_OKAY) + goto CLEANUP; + + } + + for(;;) { + while(mp_iseven(&t)) { + s_mp_div_2(&t); + } + + if(mp_cmp_z(&t) == MP_GT) { + if((res = mp_copy(&t, &u)) != MP_OKAY) + goto CLEANUP; + + } else { + if((res = mp_copy(&t, &v)) != MP_OKAY) + goto CLEANUP; + + /* v = -t */ + if(SIGN(&t) == MP_ZPOS) + SIGN(&v) = MP_NEG; + else + SIGN(&v) = MP_ZPOS; + } + + if((res = mp_sub(&u, &v, &t)) != MP_OKAY) + goto CLEANUP; + + if(s_mp_cmp_d(&t, 0) == MP_EQ) + break; + } + + s_mp_2expt(&v, k); /* v = 2^k */ + res = mp_mul(&u, &v, c); /* c = u * v */ + + CLEANUP: + mp_clear(&v); + V: + mp_clear(&u); + U: + mp_clear(&t); + + return res; + +} /* end mp_bgcd() */ + +/* }}} */ + +/* {{{ mp_lcm(a, b, c) */ + +/* We compute the least common multiple using the rule: + + ab = [a, b](a, b) + + ... by computing the product, and dividing out the gcd. + */ + +mp_err mp_lcm(mp_int *a, mp_int *b, mp_int *c) +{ + mp_int gcd, prod; + mp_err res; + + ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG); + + /* Set up temporaries */ + if((res = mp_init(&gcd)) != MP_OKAY) + return res; + if((res = mp_init(&prod)) != MP_OKAY) + goto GCD; + + if((res = mp_mul(a, b, &prod)) != MP_OKAY) + goto CLEANUP; + if((res = mp_gcd(a, b, &gcd)) != MP_OKAY) + goto CLEANUP; + + res = mp_div(&prod, &gcd, c, NULL); + + CLEANUP: + mp_clear(&prod); + GCD: + mp_clear(&gcd); + + return res; + +} /* end mp_lcm() */ + +/* }}} */ + +/* {{{ mp_xgcd(a, b, g, x, y) */ + +/* + mp_xgcd(a, b, g, x, y) + + Compute g = (a, b) and values x and y satisfying Bezout's identity + (that is, ax + by = g). This uses the extended binary GCD algorithm + based on the Stein algorithm used for mp_gcd() + */ + +mp_err mp_xgcd(mp_int *a, mp_int *b, mp_int *g, mp_int *x, mp_int *y) +{ + mp_int gx, xc, yc, u, v, A, B, C, D; + mp_int *clean[9]; + mp_err res; + int last = -1; + + if(mp_cmp_z(b) == 0) + return MP_RANGE; + + /* Initialize all these variables we need */ + if((res = mp_init(&u)) != MP_OKAY) goto CLEANUP; + clean[++last] = &u; + if((res = mp_init(&v)) != MP_OKAY) goto CLEANUP; + clean[++last] = &v; + if((res = mp_init(&gx)) != MP_OKAY) goto CLEANUP; + clean[++last] = &gx; + if((res = mp_init(&A)) != MP_OKAY) goto CLEANUP; + clean[++last] = &A; + if((res = mp_init(&B)) != MP_OKAY) goto CLEANUP; + clean[++last] = &B; + if((res = mp_init(&C)) != MP_OKAY) goto CLEANUP; + clean[++last] = &C; + if((res = mp_init(&D)) != MP_OKAY) goto CLEANUP; + clean[++last] = &D; + if((res = mp_init_copy(&xc, a)) != MP_OKAY) goto CLEANUP; + clean[++last] = &xc; + mp_abs(&xc, &xc); + if((res = mp_init_copy(&yc, b)) != MP_OKAY) goto CLEANUP; + clean[++last] = &yc; + mp_abs(&yc, &yc); + + mp_set(&gx, 1); + + /* Divide by two until at least one of them is even */ + while(mp_iseven(&xc) && mp_iseven(&yc)) { + s_mp_div_2(&xc); + s_mp_div_2(&yc); + if((res = s_mp_mul_2(&gx)) != MP_OKAY) + goto CLEANUP; + } + + mp_copy(&xc, &u); + mp_copy(&yc, &v); + mp_set(&A, 1); mp_set(&D, 1); + + /* Loop through binary GCD algorithm */ + for(;;) { + while(mp_iseven(&u)) { + s_mp_div_2(&u); + + if(mp_iseven(&A) && mp_iseven(&B)) { + s_mp_div_2(&A); s_mp_div_2(&B); + } else { + if((res = mp_add(&A, &yc, &A)) != MP_OKAY) goto CLEANUP; + s_mp_div_2(&A); + if((res = mp_sub(&B, &xc, &B)) != MP_OKAY) goto CLEANUP; + s_mp_div_2(&B); + } + } + + while(mp_iseven(&v)) { + s_mp_div_2(&v); + + if(mp_iseven(&C) && mp_iseven(&D)) { + s_mp_div_2(&C); s_mp_div_2(&D); + } else { + if((res = mp_add(&C, &yc, &C)) != MP_OKAY) goto CLEANUP; + s_mp_div_2(&C); + if((res = mp_sub(&D, &xc, &D)) != MP_OKAY) goto CLEANUP; + s_mp_div_2(&D); + } + } + + if(mp_cmp(&u, &v) >= 0) { + if((res = mp_sub(&u, &v, &u)) != MP_OKAY) goto CLEANUP; + if((res = mp_sub(&A, &C, &A)) != MP_OKAY) goto CLEANUP; + if((res = mp_sub(&B, &D, &B)) != MP_OKAY) goto CLEANUP; + + } else { + if((res = mp_sub(&v, &u, &v)) != MP_OKAY) goto CLEANUP; + if((res = mp_sub(&C, &A, &C)) != MP_OKAY) goto CLEANUP; + if((res = mp_sub(&D, &B, &D)) != MP_OKAY) goto CLEANUP; + + } + + /* If we're done, copy results to output */ + if(mp_cmp_z(&u) == 0) { + if(x) + if((res = mp_copy(&C, x)) != MP_OKAY) goto CLEANUP; + + if(y) + if((res = mp_copy(&D, y)) != MP_OKAY) goto CLEANUP; + + if(g) + if((res = mp_mul(&gx, &v, g)) != MP_OKAY) goto CLEANUP; + + break; + } + } + + CLEANUP: + while(last >= 0) + mp_clear(clean[last--]); + + return res; + +} /* end mp_xgcd() */ + +/* }}} */ + +/* {{{ mp_invmod(a, m, c) */ + +/* + mp_invmod(a, m, c) + + Compute c = a^-1 (mod m), if there is an inverse for a (mod m). + This is equivalent to the question of whether (a, m) = 1. If not, + MP_UNDEF is returned, and there is no inverse. + */ + +mp_err mp_invmod(mp_int *a, mp_int *m, mp_int *c) +{ + mp_int g, x; + mp_err res; + + ARGCHK(a && m && c, MP_BADARG); + + if(mp_cmp_z(a) == 0 || mp_cmp_z(m) == 0) + return MP_RANGE; + + if((res = mp_init(&g)) != MP_OKAY) + return res; + if((res = mp_init(&x)) != MP_OKAY) + goto X; + + if((res = mp_xgcd(a, m, &g, &x, NULL)) != MP_OKAY) + goto CLEANUP; + + if(mp_cmp_d(&g, 1) != MP_EQ) { + res = MP_UNDEF; + goto CLEANUP; + } + + res = mp_mod(&x, m, c); + SIGN(c) = SIGN(a); + +CLEANUP: + mp_clear(&x); +X: + mp_clear(&g); + + return res; + +} /* end mp_invmod() */ + +/* }}} */ +#endif /* if MP_NUMTH */ + +/* }}} */ + +/*------------------------------------------------------------------------*/ +/* {{{ mp_print(mp, ofp) */ + +#if MP_IOFUNC +/* + mp_print(mp, ofp) + + Print a textual representation of the given mp_int on the output + stream 'ofp'. Output is generated using the internal radix. + */ + +void mp_print(mp_int *mp, FILE *ofp) +{ + int ix; + + if(mp == NULL || ofp == NULL) + return; + + fputc((SIGN(mp) == MP_NEG) ? '-' : '+', ofp); + + for(ix = USED(mp) - 1; ix >= 0; ix--) { + fprintf(ofp, DIGIT_FMT, DIGIT(mp, ix)); + } + +} /* end mp_print() */ + +#endif /* if MP_IOFUNC */ + +/* }}} */ + +/*------------------------------------------------------------------------*/ +/* {{{ More I/O Functions */ + +/* {{{ mp_read_signed_bin(mp, str, len) */ + +/* + mp_read_signed_bin(mp, str, len) + + Read in a raw value (base 256) into the given mp_int + */ + +mp_err mp_read_signed_bin(mp_int *mp, unsigned char *str, int len) +{ + mp_err res; + + ARGCHK(mp != NULL && str != NULL && len > 0, MP_BADARG); + + if((res = mp_read_unsigned_bin(mp, str + 1, len - 1)) == MP_OKAY) { + /* Get sign from first byte */ + if(str[0]) + SIGN(mp) = MP_NEG; + else + SIGN(mp) = MP_ZPOS; + } + + return res; + +} /* end mp_read_signed_bin() */ + +/* }}} */ + +/* {{{ mp_signed_bin_size(mp) */ + +int mp_signed_bin_size(mp_int *mp) +{ + ARGCHK(mp != NULL, 0); + + return mp_unsigned_bin_size(mp) + 1; + +} /* end mp_signed_bin_size() */ + +/* }}} */ + +/* {{{ mp_to_signed_bin(mp, str) */ + +mp_err mp_to_signed_bin(mp_int *mp, unsigned char *str) +{ + ARGCHK(mp != NULL && str != NULL, MP_BADARG); + + /* Caller responsible for allocating enough memory (use mp_raw_size(mp)) */ + str[0] = (char)SIGN(mp); + + return mp_to_unsigned_bin(mp, str + 1); + +} /* end mp_to_signed_bin() */ + +/* }}} */ + +/* {{{ mp_read_unsigned_bin(mp, str, len) */ + +/* + mp_read_unsigned_bin(mp, str, len) + + Read in an unsigned value (base 256) into the given mp_int + */ + +mp_err mp_read_unsigned_bin(mp_int *mp, unsigned char *str, int len) +{ + int ix; + mp_err res; + + ARGCHK(mp != NULL && str != NULL && len > 0, MP_BADARG); + + mp_zero(mp); + + for(ix = 0; ix < len; ix++) { + if((res = s_mp_mul_2d(mp, CHAR_BIT)) != MP_OKAY) + return res; + + if((res = mp_add_d(mp, str[ix], mp)) != MP_OKAY) + return res; + } + + return MP_OKAY; + +} /* end mp_read_unsigned_bin() */ + +/* }}} */ + +/* {{{ mp_unsigned_bin_size(mp) */ + +int mp_unsigned_bin_size(mp_int *mp) +{ + mp_digit topdig; + int count; + + ARGCHK(mp != NULL, 0); + + /* Special case for the value zero */ + if(USED(mp) == 1 && DIGIT(mp, 0) == 0) + return 1; + + count = (USED(mp) - 1) * sizeof(mp_digit); + topdig = DIGIT(mp, USED(mp) - 1); + + while(topdig != 0) { + ++count; + topdig >>= CHAR_BIT; + } + + return count; + +} /* end mp_unsigned_bin_size() */ + +/* }}} */ + +/* {{{ mp_to_unsigned_bin(mp, str) */ + +mp_err mp_to_unsigned_bin(mp_int *mp, unsigned char *str) +{ + mp_digit *dp, *end, d; + unsigned char *spos; + + ARGCHK(mp != NULL && str != NULL, MP_BADARG); + + dp = DIGITS(mp); + end = dp + USED(mp) - 1; + spos = str; + + /* Special case for zero, quick test */ + if(dp == end && *dp == 0) { + *str = '\0'; + return MP_OKAY; + } + + /* Generate digits in reverse order */ + while(dp < end) { + int ix; + + d = *dp; + for(ix = 0; ix < sizeof(mp_digit); ++ix) { + *spos = d & UCHAR_MAX; + d >>= CHAR_BIT; + ++spos; + } + + ++dp; + } + + /* Now handle last digit specially, high order zeroes are not written */ + d = *end; + while(d != 0) { + *spos = d & UCHAR_MAX; + d >>= CHAR_BIT; + ++spos; + } + + /* Reverse everything to get digits in the correct order */ + while(--spos > str) { + unsigned char t = *str; + *str = *spos; + *spos = t; + + ++str; + } + + return MP_OKAY; + +} /* end mp_to_unsigned_bin() */ + +/* }}} */ + +/* {{{ mp_count_bits(mp) */ + +int mp_count_bits(mp_int *mp) +{ + int len; + mp_digit d; + + ARGCHK(mp != NULL, MP_BADARG); + + len = DIGIT_BIT * (USED(mp) - 1); + d = DIGIT(mp, USED(mp) - 1); + + while(d != 0) { + ++len; + d >>= 1; + } + + return len; + +} /* end mp_count_bits() */ + +/* }}} */ + +/* {{{ mp_read_radix(mp, str, radix) */ + +/* + mp_read_radix(mp, str, radix) + + Read an integer from the given string, and set mp to the resulting + value. The input is presumed to be in base 10. Leading non-digit + characters are ignored, and the function reads until a non-digit + character or the end of the string. + */ + +mp_err mp_read_radix(mp_int *mp, unsigned char *str, int radix) +{ + int ix = 0, val = 0; + mp_err res; + mp_sign sig = MP_ZPOS; + + ARGCHK(mp != NULL && str != NULL && radix >= 2 && radix <= MAX_RADIX, + MP_BADARG); + + mp_zero(mp); + + /* Skip leading non-digit characters until a digit or '-' or '+' */ + while(str[ix] && + (s_mp_tovalue(str[ix], radix) < 0) && + str[ix] != '-' && + str[ix] != '+') { + ++ix; + } + + if(str[ix] == '-') { + sig = MP_NEG; + ++ix; + } else if(str[ix] == '+') { + sig = MP_ZPOS; /* this is the default anyway... */ + ++ix; + } + + while((val = s_mp_tovalue(str[ix], radix)) >= 0) { + if((res = s_mp_mul_d(mp, radix)) != MP_OKAY) + return res; + if((res = s_mp_add_d(mp, val)) != MP_OKAY) + return res; + ++ix; + } + + if(s_mp_cmp_d(mp, 0) == MP_EQ) + SIGN(mp) = MP_ZPOS; + else + SIGN(mp) = sig; + + return MP_OKAY; + +} /* end mp_read_radix() */ + +/* }}} */ + +/* {{{ mp_radix_size(mp, radix) */ + +int mp_radix_size(mp_int *mp, int radix) +{ + int len; + ARGCHK(mp != NULL, 0); + + len = s_mp_outlen(mp_count_bits(mp), radix) + 1; /* for NUL terminator */ + + if(mp_cmp_z(mp) < 0) + ++len; /* for sign */ + + return len; + +} /* end mp_radix_size() */ + +/* }}} */ + +/* {{{ mp_value_radix_size(num, qty, radix) */ + +/* num = number of digits + qty = number of bits per digit + radix = target base + + Return the number of digits in the specified radix that would be + needed to express 'num' digits of 'qty' bits each. + */ +int mp_value_radix_size(int num, int qty, int radix) +{ + ARGCHK(num >= 0 && qty > 0 && radix >= 2 && radix <= MAX_RADIX, 0); + + return s_mp_outlen(num * qty, radix); + +} /* end mp_value_radix_size() */ + +/* }}} */ + +/* {{{ mp_toradix(mp, str, radix) */ + +mp_err mp_toradix(mp_int *mp, unsigned char *str, int radix) +{ + int ix, pos = 0; + + ARGCHK(mp != NULL && str != NULL, MP_BADARG); + ARGCHK(radix > 1 && radix <= MAX_RADIX, MP_RANGE); + + if(mp_cmp_z(mp) == MP_EQ) { + str[0] = '0'; + str[1] = '\0'; + } else { + mp_err res; + mp_int tmp; + mp_sign sgn; + mp_digit rem, rdx = (mp_digit)radix; + char ch; + + if((res = mp_init_copy(&tmp, mp)) != MP_OKAY) + return res; + + /* Save sign for later, and take absolute value */ + sgn = SIGN(&tmp); SIGN(&tmp) = MP_ZPOS; + + /* Generate output digits in reverse order */ + while(mp_cmp_z(&tmp) != 0) { + if((res = s_mp_div_d(&tmp, rdx, &rem)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + + /* Generate digits, use capital letters */ + ch = s_mp_todigit(rem, radix, 0); + + str[pos++] = ch; + } + + /* Add - sign if original value was negative */ + if(sgn == MP_NEG) + str[pos++] = '-'; + + /* Add trailing NUL to end the string */ + str[pos--] = '\0'; + + /* Reverse the digits and sign indicator */ + ix = 0; + while(ix < pos) { + char tmp = str[ix]; + + str[ix] = str[pos]; + str[pos] = tmp; + ++ix; + --pos; + } + + mp_clear(&tmp); + } + + return MP_OKAY; + +} /* end mp_toradix() */ + +/* }}} */ + +/* {{{ mp_char2value(ch, r) */ + +int mp_char2value(char ch, int r) +{ + return s_mp_tovalue(ch, r); + +} /* end mp_tovalue() */ + +/* }}} */ + +/* }}} */ + +/* {{{ mp_strerror(ec) */ + +/* + mp_strerror(ec) + + Return a string describing the meaning of error code 'ec'. The + string returned is allocated in static memory, so the caller should + not attempt to modify or free the memory associated with this + string. + */ +const char *mp_strerror(mp_err ec) +{ + int aec = (ec < 0) ? -ec : ec; + + /* Code values are negative, so the senses of these comparisons + are accurate */ + if(ec < MP_LAST_CODE || ec > MP_OKAY) { + return mp_err_string[0]; /* unknown error code */ + } else { + return mp_err_string[aec + 1]; + } + +} /* end mp_strerror() */ + +/* }}} */ + +/*========================================================================*/ +/*------------------------------------------------------------------------*/ +/* Static function definitions (internal use only) */ + +/* {{{ Memory management */ + +/* {{{ s_mp_grow(mp, min) */ + +/* Make sure there are at least 'min' digits allocated to mp */ +mp_err s_mp_grow(mp_int *mp, mp_size min) +{ + if(min > ALLOC(mp)) { + mp_digit *tmp; + + /* Set min to next nearest default precision block size */ + min = ((min + (s_mp_defprec - 1)) / s_mp_defprec) * s_mp_defprec; + + if((tmp = s_mp_alloc(min, sizeof(mp_digit))) == NULL) + return MP_MEM; + + s_mp_copy(DIGITS(mp), tmp, USED(mp)); + +#if MP_CRYPTO + s_mp_setz(DIGITS(mp), ALLOC(mp)); +#endif + s_mp_free(DIGITS(mp)); + DIGITS(mp) = tmp; + ALLOC(mp) = min; + } + + return MP_OKAY; + +} /* end s_mp_grow() */ + +/* }}} */ + +/* {{{ s_mp_pad(mp, min) */ + +/* Make sure the used size of mp is at least 'min', growing if needed */ +mp_err s_mp_pad(mp_int *mp, mp_size min) +{ + if(min > USED(mp)) { + mp_err res; + + /* Make sure there is room to increase precision */ + if(min > ALLOC(mp) && (res = s_mp_grow(mp, min)) != MP_OKAY) + return res; + + /* Increase precision; should already be 0-filled */ + USED(mp) = min; + } + + return MP_OKAY; + +} /* end s_mp_pad() */ + +/* }}} */ + +/* {{{ s_mp_setz(dp, count) */ + +#if MP_MACRO == 0 +/* Set 'count' digits pointed to by dp to be zeroes */ +void s_mp_setz(mp_digit *dp, mp_size count) +{ +#if MP_MEMSET == 0 + int ix; + + for(ix = 0; ix < count; ix++) + dp[ix] = 0; +#else + memset(dp, 0, count * sizeof(mp_digit)); +#endif + +} /* end s_mp_setz() */ +#endif + +/* }}} */ + +/* {{{ s_mp_copy(sp, dp, count) */ + +#if MP_MACRO == 0 +/* Copy 'count' digits from sp to dp */ +void s_mp_copy(mp_digit *sp, mp_digit *dp, mp_size count) +{ +#if MP_MEMCPY == 0 + int ix; + + for(ix = 0; ix < count; ix++) + dp[ix] = sp[ix]; +#else + memcpy(dp, sp, count * sizeof(mp_digit)); +#endif + +} /* end s_mp_copy() */ +#endif + +/* }}} */ + +/* {{{ s_mp_alloc(nb, ni) */ + +#if MP_MACRO == 0 +/* Allocate ni records of nb bytes each, and return a pointer to that */ +void *s_mp_alloc(size_t nb, size_t ni) +{ + return calloc(nb, ni); + +} /* end s_mp_alloc() */ +#endif + +/* }}} */ + +/* {{{ s_mp_free(ptr) */ + +#if MP_MACRO == 0 +/* Free the memory pointed to by ptr */ +void s_mp_free(void *ptr) +{ + if(ptr) + free(ptr); + +} /* end s_mp_free() */ +#endif + +/* }}} */ + +/* {{{ s_mp_clamp(mp) */ + +/* Remove leading zeroes from the given value */ +void s_mp_clamp(mp_int *mp) +{ + mp_size du = USED(mp); + mp_digit *zp = DIGITS(mp) + du - 1; + + while(du > 1 && !*zp--) + --du; + + USED(mp) = du; + +} /* end s_mp_clamp() */ + + +/* }}} */ + +/* {{{ s_mp_exch(a, b) */ + +/* Exchange the data for a and b; (b, a) = (a, b) */ +void s_mp_exch(mp_int *a, mp_int *b) +{ + mp_int tmp; + + tmp = *a; + *a = *b; + *b = tmp; + +} /* end s_mp_exch() */ + +/* }}} */ + +/* }}} */ + +/* {{{ Arithmetic helpers */ + +/* {{{ s_mp_lshd(mp, p) */ + +/* + Shift mp leftward by p digits, growing if needed, and zero-filling + the in-shifted digits at the right end. This is a convenient + alternative to multiplication by powers of the radix + */ + +mp_err s_mp_lshd(mp_int *mp, mp_size p) +{ + mp_err res; + mp_size pos; + mp_digit *dp; + int ix; + + if(p == 0) + return MP_OKAY; + + if((res = s_mp_pad(mp, USED(mp) + p)) != MP_OKAY) + return res; + + pos = USED(mp) - 1; + dp = DIGITS(mp); + + /* Shift all the significant figures over as needed */ + for(ix = pos - p; ix >= 0; ix--) + dp[ix + p] = dp[ix]; + + /* Fill the bottom digits with zeroes */ + for(ix = 0; ix < p; ix++) + dp[ix] = 0; + + return MP_OKAY; + +} /* end s_mp_lshd() */ + +/* }}} */ + +/* {{{ s_mp_rshd(mp, p) */ + +/* + Shift mp rightward by p digits. Maintains the invariant that + digits above the precision are all zero. Digits shifted off the + end are lost. Cannot fail. + */ + +void s_mp_rshd(mp_int *mp, mp_size p) +{ + mp_size ix; + mp_digit *dp; + + if(p == 0) + return; + + /* Shortcut when all digits are to be shifted off */ + if(p >= USED(mp)) { + s_mp_setz(DIGITS(mp), ALLOC(mp)); + USED(mp) = 1; + SIGN(mp) = MP_ZPOS; + return; + } + + /* Shift all the significant figures over as needed */ + dp = DIGITS(mp); + for(ix = p; ix < USED(mp); ix++) + dp[ix - p] = dp[ix]; + + /* Fill the top digits with zeroes */ + ix -= p; + while(ix < USED(mp)) + dp[ix++] = 0; + + /* Strip off any leading zeroes */ + s_mp_clamp(mp); + +} /* end s_mp_rshd() */ + +/* }}} */ + +/* {{{ s_mp_div_2(mp) */ + +/* Divide by two -- take advantage of radix properties to do it fast */ +void s_mp_div_2(mp_int *mp) +{ + s_mp_div_2d(mp, 1); + +} /* end s_mp_div_2() */ + +/* }}} */ + +/* {{{ s_mp_mul_2(mp) */ + +mp_err s_mp_mul_2(mp_int *mp) +{ + int ix; + mp_digit kin = 0, kout, *dp = DIGITS(mp); + mp_err res; + + /* Shift digits leftward by 1 bit */ + for(ix = 0; ix < USED(mp); ix++) { + kout = (dp[ix] >> (DIGIT_BIT - 1)) & 1; + dp[ix] = (dp[ix] << 1) | kin; + + kin = kout; + } + + /* Deal with rollover from last digit */ + if(kin) { + if(ix >= ALLOC(mp)) { + if((res = s_mp_grow(mp, ALLOC(mp) + 1)) != MP_OKAY) + return res; + dp = DIGITS(mp); + } + + dp[ix] = kin; + USED(mp) += 1; + } + + return MP_OKAY; + +} /* end s_mp_mul_2() */ + +/* }}} */ + +/* {{{ s_mp_mod_2d(mp, d) */ + +/* + Remainder the integer by 2^d, where d is a number of bits. This + amounts to a bitwise AND of the value, and does not require the full + division code + */ +void s_mp_mod_2d(mp_int *mp, mp_digit d) +{ + unsigned int ndig = (d / DIGIT_BIT), nbit = (d % DIGIT_BIT); + unsigned int ix; + mp_digit dmask, *dp = DIGITS(mp); + + if(ndig >= USED(mp)) + return; + + /* Flush all the bits above 2^d in its digit */ + dmask = (1 << nbit) - 1; + dp[ndig] &= dmask; + + /* Flush all digits above the one with 2^d in it */ + for(ix = ndig + 1; ix < USED(mp); ix++) + dp[ix] = 0; + + s_mp_clamp(mp); + +} /* end s_mp_mod_2d() */ + +/* }}} */ + +/* {{{ s_mp_mul_2d(mp, d) */ + +/* + Multiply by the integer 2^d, where d is a number of bits. This + amounts to a bitwise shift of the value, and does not require the + full multiplication code. + */ +mp_err s_mp_mul_2d(mp_int *mp, mp_digit d) +{ + mp_err res; + mp_digit save, next, mask, *dp; + mp_size used; + int ix; + + if((res = s_mp_lshd(mp, d / DIGIT_BIT)) != MP_OKAY) + return res; + + dp = DIGITS(mp); used = USED(mp); + d %= DIGIT_BIT; + + mask = (1 << d) - 1; + + /* If the shift requires another digit, make sure we've got one to + work with */ + if((dp[used - 1] >> (DIGIT_BIT - d)) & mask) { + if((res = s_mp_grow(mp, used + 1)) != MP_OKAY) + return res; + dp = DIGITS(mp); + } + + /* Do the shifting... */ + save = 0; + for(ix = 0; ix < used; ix++) { + next = (dp[ix] >> (DIGIT_BIT - d)) & mask; + dp[ix] = (dp[ix] << d) | save; + save = next; + } + + /* If, at this point, we have a nonzero carryout into the next + digit, we'll increase the size by one digit, and store it... + */ + if(save) { + dp[used] = save; + USED(mp) += 1; + } + + s_mp_clamp(mp); + return MP_OKAY; + +} /* end s_mp_mul_2d() */ + +/* }}} */ + +/* {{{ s_mp_div_2d(mp, d) */ + +/* + Divide the integer by 2^d, where d is a number of bits. This + amounts to a bitwise shift of the value, and does not require the + full division code (used in Barrett reduction, see below) + */ +void s_mp_div_2d(mp_int *mp, mp_digit d) +{ + int ix; + mp_digit save, next, mask, *dp = DIGITS(mp); + + s_mp_rshd(mp, d / DIGIT_BIT); + d %= DIGIT_BIT; + + mask = (1 << d) - 1; + + save = 0; + for(ix = USED(mp) - 1; ix >= 0; ix--) { + next = dp[ix] & mask; + dp[ix] = (dp[ix] >> d) | (save << (DIGIT_BIT - d)); + save = next; + } + + s_mp_clamp(mp); + +} /* end s_mp_div_2d() */ + +/* }}} */ + +/* {{{ s_mp_norm(a, b) */ + +/* + s_mp_norm(a, b) + + Normalize a and b for division, where b is the divisor. In order + that we might make good guesses for quotient digits, we want the + leading digit of b to be at least half the radix, which we + accomplish by multiplying a and b by a constant. This constant is + returned (so that it can be divided back out of the remainder at the + end of the division process). + + We multiply by the smallest power of 2 that gives us a leading digit + at least half the radix. By choosing a power of 2, we simplify the + multiplication and division steps to simple shifts. + */ +mp_digit s_mp_norm(mp_int *a, mp_int *b) +{ + mp_digit t, d = 0; + + t = DIGIT(b, USED(b) - 1); + while(t < (RADIX / 2)) { + t <<= 1; + ++d; + } + + if(d != 0) { + s_mp_mul_2d(a, d); + s_mp_mul_2d(b, d); + } + + return d; + +} /* end s_mp_norm() */ + +/* }}} */ + +/* }}} */ + +/* {{{ Primitive digit arithmetic */ + +/* {{{ s_mp_add_d(mp, d) */ + +/* Add d to |mp| in place */ +mp_err s_mp_add_d(mp_int *mp, mp_digit d) /* unsigned digit addition */ +{ + mp_word w, k = 0; + mp_size ix = 1, used = USED(mp); + mp_digit *dp = DIGITS(mp); + + w = dp[0] + d; + dp[0] = ACCUM(w); + k = CARRYOUT(w); + + while(ix < used && k) { + w = dp[ix] + k; + dp[ix] = ACCUM(w); + k = CARRYOUT(w); + ++ix; + } + + if(k != 0) { + mp_err res; + + if((res = s_mp_pad(mp, USED(mp) + 1)) != MP_OKAY) + return res; + + DIGIT(mp, ix) = k; + } + + return MP_OKAY; + +} /* end s_mp_add_d() */ + +/* }}} */ + +/* {{{ s_mp_sub_d(mp, d) */ + +/* Subtract d from |mp| in place, assumes |mp| > d */ +mp_err s_mp_sub_d(mp_int *mp, mp_digit d) /* unsigned digit subtract */ +{ + mp_word w, b = 0; + mp_size ix = 1, used = USED(mp); + mp_digit *dp = DIGITS(mp); + + /* Compute initial subtraction */ + w = (RADIX + dp[0]) - d; + b = CARRYOUT(w) ? 0 : 1; + dp[0] = ACCUM(w); + + /* Propagate borrows leftward */ + while(b && ix < used) { + w = (RADIX + dp[ix]) - b; + b = CARRYOUT(w) ? 0 : 1; + dp[ix] = ACCUM(w); + ++ix; + } + + /* Remove leading zeroes */ + s_mp_clamp(mp); + + /* If we have a borrow out, it's a violation of the input invariant */ + if(b) + return MP_RANGE; + else + return MP_OKAY; + +} /* end s_mp_sub_d() */ + +/* }}} */ + +/* {{{ s_mp_mul_d(a, d) */ + +/* Compute a = a * d, single digit multiplication */ +mp_err s_mp_mul_d(mp_int *a, mp_digit d) +{ + mp_word w, k = 0; + mp_size ix, max; + mp_err res; + mp_digit *dp = DIGITS(a); + + /* + Single-digit multiplication will increase the precision of the + output by at most one digit. However, we can detect when this + will happen -- if the high-order digit of a, times d, gives a + two-digit result, then the precision of the result will increase; + otherwise it won't. We use this fact to avoid calling s_mp_pad() + unless absolutely necessary. + */ + max = USED(a); + w = dp[max - 1] * d; + if(CARRYOUT(w) != 0) { + if((res = s_mp_pad(a, max + 1)) != MP_OKAY) + return res; + dp = DIGITS(a); + } + + for(ix = 0; ix < max; ix++) { + w = (dp[ix] * d) + k; + dp[ix] = ACCUM(w); + k = CARRYOUT(w); + } + + /* If there is a precision increase, take care of it here; the above + test guarantees we have enough storage to do this safely. + */ + if(k) { + dp[max] = k; + USED(a) = max + 1; + } + + s_mp_clamp(a); + + return MP_OKAY; + +} /* end s_mp_mul_d() */ + +/* }}} */ + +/* {{{ s_mp_div_d(mp, d, r) */ + +/* + s_mp_div_d(mp, d, r) + + Compute the quotient mp = mp / d and remainder r = mp mod d, for a + single digit d. If r is null, the remainder will be discarded. + */ + +mp_err s_mp_div_d(mp_int *mp, mp_digit d, mp_digit *r) +{ + mp_word w = 0, t; + mp_int quot; + mp_err res; + mp_digit *dp = DIGITS(mp), *qp; + int ix; + + if(d == 0) + return MP_RANGE; + + /* Make room for the quotient */ + if((res = mp_init_size(", USED(mp))) != MP_OKAY) + return res; + + USED(") = USED(mp); /* so clamping will work below */ + qp = DIGITS("); + + /* Divide without subtraction */ + for(ix = USED(mp) - 1; ix >= 0; ix--) { + w = (w << DIGIT_BIT) | dp[ix]; + + if(w >= d) { + t = w / d; + w = w % d; + } else { + t = 0; + } + + qp[ix] = t; + } + + /* Deliver the remainder, if desired */ + if(r) + *r = w; + + s_mp_clamp("); + mp_exch(", mp); + mp_clear("); + + return MP_OKAY; + +} /* end s_mp_div_d() */ + +/* }}} */ + +/* }}} */ + +/* {{{ Primitive full arithmetic */ + +/* {{{ s_mp_add(a, b) */ + +/* Compute a = |a| + |b| */ +mp_err s_mp_add(mp_int *a, mp_int *b) /* magnitude addition */ +{ + mp_word w = 0; + mp_digit *pa, *pb; + mp_size ix, used = USED(b); + mp_err res; + + /* Make sure a has enough precision for the output value */ + if((used > USED(a)) && (res = s_mp_pad(a, used)) != MP_OKAY) + return res; + + /* + Add up all digits up to the precision of b. If b had initially + the same precision as a, or greater, we took care of it by the + padding step above, so there is no problem. If b had initially + less precision, we'll have to make sure the carry out is duly + propagated upward among the higher-order digits of the sum. + */ + pa = DIGITS(a); + pb = DIGITS(b); + for(ix = 0; ix < used; ++ix) { + w += *pa + *pb++; + *pa++ = ACCUM(w); + w = CARRYOUT(w); + } + + /* If we run out of 'b' digits before we're actually done, make + sure the carries get propagated upward... + */ + used = USED(a); + while(w && ix < used) { + w += *pa; + *pa++ = ACCUM(w); + w = CARRYOUT(w); + ++ix; + } + + /* If there's an overall carry out, increase precision and include + it. We could have done this initially, but why touch the memory + allocator unless we're sure we have to? + */ + if(w) { + if((res = s_mp_pad(a, used + 1)) != MP_OKAY) + return res; + + DIGIT(a, ix) = w; /* pa may not be valid after s_mp_pad() call */ + } + + return MP_OKAY; + +} /* end s_mp_add() */ + +/* }}} */ + +/* {{{ s_mp_sub(a, b) */ + +/* Compute a = |a| - |b|, assumes |a| >= |b| */ +mp_err s_mp_sub(mp_int *a, mp_int *b) /* magnitude subtract */ +{ + mp_word w = 0; + mp_digit *pa, *pb; + mp_size ix, used = USED(b); + + /* + Subtract and propagate borrow. Up to the precision of b, this + accounts for the digits of b; after that, we just make sure the + carries get to the right place. This saves having to pad b out to + the precision of a just to make the loops work right... + */ + pa = DIGITS(a); + pb = DIGITS(b); + + for(ix = 0; ix < used; ++ix) { + w = (RADIX + *pa) - w - *pb++; + *pa++ = ACCUM(w); + w = CARRYOUT(w) ? 0 : 1; + } + + used = USED(a); + while(ix < used) { + w = RADIX + *pa - w; + *pa++ = ACCUM(w); + w = CARRYOUT(w) ? 0 : 1; + ++ix; + } + + /* Clobber any leading zeroes we created */ + s_mp_clamp(a); + + /* + If there was a borrow out, then |b| > |a| in violation + of our input invariant. We've already done the work, + but we'll at least complain about it... + */ + if(w) + return MP_RANGE; + else + return MP_OKAY; + +} /* end s_mp_sub() */ + +/* }}} */ + +mp_err s_mp_reduce(mp_int *x, mp_int *m, mp_int *mu) +{ + mp_int q; + mp_err res; + mp_size um = USED(m); + + if((res = mp_init_copy(&q, x)) != MP_OKAY) + return res; + + s_mp_rshd(&q, um - 1); /* q1 = x / b^(k-1) */ + s_mp_mul(&q, mu); /* q2 = q1 * mu */ + s_mp_rshd(&q, um + 1); /* q3 = q2 / b^(k+1) */ + + /* x = x mod b^(k+1), quick (no division) */ + s_mp_mod_2d(x, (mp_digit)(DIGIT_BIT * (um + 1))); + + /* q = q * m mod b^(k+1), quick (no division), uses the short multiplier */ +#ifndef SHRT_MUL + s_mp_mul(&q, m); + s_mp_mod_2d(&q, (mp_digit)(DIGIT_BIT * (um + 1))); +#else + s_mp_mul_dig(&q, m, um + 1); +#endif + + /* x = x - q */ + if((res = mp_sub(x, &q, x)) != MP_OKAY) + goto CLEANUP; + + /* If x < 0, add b^(k+1) to it */ + if(mp_cmp_z(x) < 0) { + mp_set(&q, 1); + if((res = s_mp_lshd(&q, um + 1)) != MP_OKAY) + goto CLEANUP; + if((res = mp_add(x, &q, x)) != MP_OKAY) + goto CLEANUP; + } + + /* Back off if it's too big */ + while(mp_cmp(x, m) >= 0) { + if((res = s_mp_sub(x, m)) != MP_OKAY) + break; + } + + CLEANUP: + mp_clear(&q); + + return res; + +} /* end s_mp_reduce() */ + + + +/* {{{ s_mp_mul(a, b) */ + +/* Compute a = |a| * |b| */ +mp_err s_mp_mul(mp_int *a, mp_int *b) +{ + mp_word w, k = 0; + mp_int tmp; + mp_err res; + mp_size ix, jx, ua = USED(a), ub = USED(b); + mp_digit *pa, *pb, *pt, *pbt; + + if((res = mp_init_size(&tmp, ua + ub)) != MP_OKAY) + return res; + + /* This has the effect of left-padding with zeroes... */ + USED(&tmp) = ua + ub; + + /* We're going to need the base value each iteration */ + pbt = DIGITS(&tmp); + + /* Outer loop: Digits of b */ + + pb = DIGITS(b); + for(ix = 0; ix < ub; ++ix, ++pb) { + if(*pb == 0) + continue; + + /* Inner product: Digits of a */ + pa = DIGITS(a); + for(jx = 0; jx < ua; ++jx, ++pa) { + pt = pbt + ix + jx; + w = *pb * *pa + k + *pt; + *pt = ACCUM(w); + k = CARRYOUT(w); + } + + pbt[ix + jx] = k; + k = 0; + } + + s_mp_clamp(&tmp); + s_mp_exch(&tmp, a); + + mp_clear(&tmp); + + return MP_OKAY; + +} /* end s_mp_mul() */ + +/* }}} */ + +/* {{{ s_mp_kmul(a, b, out, len) */ + +#if 0 +void s_mp_kmul(mp_digit *a, mp_digit *b, mp_digit *out, mp_size len) +{ + mp_word w, k = 0; + mp_size ix, jx; + mp_digit *pa, *pt; + + for(ix = 0; ix < len; ++ix, ++b) { + if(*b == 0) + continue; + + pa = a; + for(jx = 0; jx < len; ++jx, ++pa) { + pt = out + ix + jx; + w = *b * *pa + k + *pt; + *pt = ACCUM(w); + k = CARRYOUT(w); + } + + out[ix + jx] = k; + k = 0; + } + +} /* end s_mp_kmul() */ +#endif + +/* }}} */ + +/* {{{ s_mp_sqr(a) */ + +/* + Computes the square of a, in place. This can be done more + efficiently than a general multiplication, because many of the + computation steps are redundant when squaring. The inner product + step is a bit more complicated, but we save a fair number of + iterations of the multiplication loop. + */ +#if MP_SQUARE +mp_err s_mp_sqr(mp_int *a) +{ + mp_word w, k = 0; + mp_int tmp; + mp_err res; + mp_size ix, jx, kx, used = USED(a); + mp_digit *pa1, *pa2, *pt, *pbt; + + if((res = mp_init_size(&tmp, 2 * used)) != MP_OKAY) + return res; + + /* Left-pad with zeroes */ + USED(&tmp) = 2 * used; + + /* We need the base value each time through the loop */ + pbt = DIGITS(&tmp); + + pa1 = DIGITS(a); + for(ix = 0; ix < used; ++ix, ++pa1) { + if(*pa1 == 0) + continue; + + w = DIGIT(&tmp, ix + ix) + (*pa1 * *pa1); + + pbt[ix + ix] = ACCUM(w); + k = CARRYOUT(w); + + /* + The inner product is computed as: + + (C, S) = t[i,j] + 2 a[i] a[j] + C + + This can overflow what can be represented in an mp_word, and + since C arithmetic does not provide any way to check for + overflow, we have to check explicitly for overflow conditions + before they happen. + */ + for(jx = ix + 1, pa2 = DIGITS(a) + jx; jx < used; ++jx, ++pa2) { + mp_word u = 0, v; + + /* Store this in a temporary to avoid indirections later */ + pt = pbt + ix + jx; + + /* Compute the multiplicative step */ + w = *pa1 * *pa2; + + /* If w is more than half MP_WORD_MAX, the doubling will + overflow, and we need to record a carry out into the next + word */ + u = (w >> (MP_WORD_BIT - 1)) & 1; + + /* Double what we've got, overflow will be ignored as defined + for C arithmetic (we've already noted if it is to occur) + */ + w *= 2; + + /* Compute the additive step */ + v = *pt + k; + + /* If we do not already have an overflow carry, check to see + if the addition will cause one, and set the carry out if so + */ + u |= ((MP_WORD_MAX - v) < w); + + /* Add in the rest, again ignoring overflow */ + w += v; + + /* Set the i,j digit of the output */ + *pt = ACCUM(w); + + /* Save carry information for the next iteration of the loop. + This is why k must be an mp_word, instead of an mp_digit */ + k = CARRYOUT(w) | (u << DIGIT_BIT); + + } /* for(jx ...) */ + + /* Set the last digit in the cycle and reset the carry */ + k = DIGIT(&tmp, ix + jx) + k; + pbt[ix + jx] = ACCUM(k); + k = CARRYOUT(k); + + /* If we are carrying out, propagate the carry to the next digit + in the output. This may cascade, so we have to be somewhat + circumspect -- but we will have enough precision in the output + that we won't overflow + */ + kx = 1; + while(k) { + k = pbt[ix + jx + kx] + 1; + pbt[ix + jx + kx] = ACCUM(k); + k = CARRYOUT(k); + ++kx; + } + } /* for(ix ...) */ + + s_mp_clamp(&tmp); + s_mp_exch(&tmp, a); + + mp_clear(&tmp); + + return MP_OKAY; + +} /* end s_mp_sqr() */ +#endif + +/* }}} */ + +/* {{{ s_mp_div(a, b) */ + +/* + s_mp_div(a, b) + + Compute a = a / b and b = a mod b. Assumes b > a. + */ + +mp_err s_mp_div(mp_int *a, mp_int *b) +{ + mp_int quot, rem, t; + mp_word q; + mp_err res; + mp_digit d; + int ix; + + if(mp_cmp_z(b) == 0) + return MP_RANGE; + + /* Shortcut if b is power of two */ + if((ix = s_mp_ispow2(b)) >= 0) { + mp_copy(a, b); /* need this for remainder */ + s_mp_div_2d(a, (mp_digit)ix); + s_mp_mod_2d(b, (mp_digit)ix); + + return MP_OKAY; + } + + /* Allocate space to store the quotient */ + if((res = mp_init_size(", USED(a))) != MP_OKAY) + return res; + + /* A working temporary for division */ + if((res = mp_init_size(&t, USED(a))) != MP_OKAY) + goto T; + + /* Allocate space for the remainder */ + if((res = mp_init_size(&rem, USED(a))) != MP_OKAY) + goto REM; + + /* Normalize to optimize guessing */ + d = s_mp_norm(a, b); + + /* Perform the division itself...woo! */ + ix = USED(a) - 1; + + while(ix >= 0) { + /* Find a partial substring of a which is at least b */ + while(s_mp_cmp(&rem, b) < 0 && ix >= 0) { + if((res = s_mp_lshd(&rem, 1)) != MP_OKAY) + goto CLEANUP; + + if((res = s_mp_lshd(", 1)) != MP_OKAY) + goto CLEANUP; + + DIGIT(&rem, 0) = DIGIT(a, ix); + s_mp_clamp(&rem); + --ix; + } + + /* If we didn't find one, we're finished dividing */ + if(s_mp_cmp(&rem, b) < 0) + break; + + /* Compute a guess for the next quotient digit */ + q = DIGIT(&rem, USED(&rem) - 1); + if(q <= DIGIT(b, USED(b) - 1) && USED(&rem) > 1) + q = (q << DIGIT_BIT) | DIGIT(&rem, USED(&rem) - 2); + + q /= DIGIT(b, USED(b) - 1); + + /* The guess can be as much as RADIX + 1 */ + if(q >= RADIX) + q = RADIX - 1; + + /* See what that multiplies out to */ + mp_copy(b, &t); + if((res = s_mp_mul_d(&t, q)) != MP_OKAY) + goto CLEANUP; + + /* + If it's too big, back it off. We should not have to do this + more than once, or, in rare cases, twice. Knuth describes a + method by which this could be reduced to a maximum of once, but + I didn't implement that here. + */ + while(s_mp_cmp(&t, &rem) > 0) { + --q; + s_mp_sub(&t, b); + } + + /* At this point, q should be the right next digit */ + if((res = s_mp_sub(&rem, &t)) != MP_OKAY) + goto CLEANUP; + + /* + Include the digit in the quotient. We allocated enough memory + for any quotient we could ever possibly get, so we should not + have to check for failures here + */ + DIGIT(", 0) = q; + } + + /* Denormalize remainder */ + if(d != 0) + s_mp_div_2d(&rem, d); + + s_mp_clamp("); + s_mp_clamp(&rem); + + /* Copy quotient back to output */ + s_mp_exch(", a); + + /* Copy remainder back to output */ + s_mp_exch(&rem, b); + +CLEANUP: + mp_clear(&rem); +REM: + mp_clear(&t); +T: + mp_clear("); + + return res; + +} /* end s_mp_div() */ + +/* }}} */ + +/* {{{ s_mp_2expt(a, k) */ + +mp_err s_mp_2expt(mp_int *a, mp_digit k) +{ + mp_err res; + mp_size dig, bit; + + dig = k / DIGIT_BIT; + bit = k % DIGIT_BIT; + + mp_zero(a); + if((res = s_mp_pad(a, dig + 1)) != MP_OKAY) + return res; + + DIGIT(a, dig) |= (1 << bit); + + return MP_OKAY; + +} /* end s_mp_2expt() */ + +/* }}} */ + + +/* }}} */ + +/* }}} */ + +/* {{{ Primitive comparisons */ + +/* {{{ s_mp_cmp(a, b) */ + +/* Compare |a| <=> |b|, return 0 if equal, <0 if a0 if a>b */ +int s_mp_cmp(mp_int *a, mp_int *b) +{ + mp_size ua = USED(a), ub = USED(b); + + if(ua > ub) + return MP_GT; + else if(ua < ub) + return MP_LT; + else { + int ix = ua - 1; + mp_digit *ap = DIGITS(a) + ix, *bp = DIGITS(b) + ix; + + while(ix >= 0) { + if(*ap > *bp) + return MP_GT; + else if(*ap < *bp) + return MP_LT; + + --ap; --bp; --ix; + } + + return MP_EQ; + } + +} /* end s_mp_cmp() */ + +/* }}} */ + +/* {{{ s_mp_cmp_d(a, d) */ + +/* Compare |a| <=> d, return 0 if equal, <0 if a0 if a>d */ +int s_mp_cmp_d(mp_int *a, mp_digit d) +{ + mp_size ua = USED(a); + mp_digit *ap = DIGITS(a); + + if(ua > 1) + return MP_GT; + + if(*ap < d) + return MP_LT; + else if(*ap > d) + return MP_GT; + else + return MP_EQ; + +} /* end s_mp_cmp_d() */ + +/* }}} */ + +/* {{{ s_mp_ispow2(v) */ + +/* + Returns -1 if the value is not a power of two; otherwise, it returns + k such that v = 2^k, i.e. lg(v). + */ +int s_mp_ispow2(mp_int *v) +{ + mp_digit d, *dp; + mp_size uv = USED(v); + int extra = 0, ix; + + d = DIGIT(v, uv - 1); /* most significant digit of v */ + + while(d && ((d & 1) == 0)) { + d >>= 1; + ++extra; + } + + if(d == 1) { + ix = uv - 2; + dp = DIGITS(v) + ix; + + while(ix >= 0) { + if(*dp) + return -1; /* not a power of two */ + + --dp; --ix; + } + + return ((uv - 1) * DIGIT_BIT) + extra; + } + + return -1; + +} /* end s_mp_ispow2() */ + +/* }}} */ + +/* {{{ s_mp_ispow2d(d) */ + +int s_mp_ispow2d(mp_digit d) +{ + int pow = 0; + + while((d & 1) == 0) { + ++pow; d >>= 1; + } + + if(d == 1) + return pow; + + return -1; + +} /* end s_mp_ispow2d() */ + +/* }}} */ + +/* }}} */ + +/* {{{ Primitive I/O helpers */ + +/* {{{ s_mp_tovalue(ch, r) */ + +/* + Convert the given character to its digit value, in the given radix. + If the given character is not understood in the given radix, -1 is + returned. Otherwise the digit's numeric value is returned. + + The results will be odd if you use a radix < 2 or > 62, you are + expected to know what you're up to. + */ +int s_mp_tovalue(char ch, int r) +{ + int val, xch; + + if(r > 36) + xch = ch; + else + xch = toupper(ch); + + if(isdigit(xch)) + val = xch - '0'; + else if(isupper(xch)) + val = xch - 'A' + 10; + else if(islower(xch)) + val = xch - 'a' + 36; + else if(xch == '+') + val = 62; + else if(xch == '/') + val = 63; + else + return -1; + + if(val < 0 || val >= r) + return -1; + + return val; + +} /* end s_mp_tovalue() */ + +/* }}} */ + +/* {{{ s_mp_todigit(val, r, low) */ + +/* + Convert val to a radix-r digit, if possible. If val is out of range + for r, returns zero. Otherwise, returns an ASCII character denoting + the value in the given radix. + + The results may be odd if you use a radix < 2 or > 64, you are + expected to know what you're doing. + */ + +char s_mp_todigit(int val, int r, int low) +{ + char ch; + + if(val < 0 || val >= r) + return 0; + + ch = s_dmap_1[val]; + + if(r <= 36 && low) + ch = tolower(ch); + + return ch; + +} /* end s_mp_todigit() */ + +/* }}} */ + +/* {{{ s_mp_outlen(bits, radix) */ + +/* + Return an estimate for how long a string is needed to hold a radix + r representation of a number with 'bits' significant bits. + + Does not include space for a sign or a NUL terminator. + */ +int s_mp_outlen(int bits, int r) +{ + return (int)((double)bits * LOG_V_2(r)); + +} /* end s_mp_outlen() */ + +/* }}} */ + +/* }}} */ + +/*------------------------------------------------------------------------*/ +/* HERE THERE BE DRAGONS */ +/* crc==4242132123, version==2, Sat Feb 02 06:43:52 2002 */ diff --git a/libtommath/mtest/mpi.h b/libtommath/mtest/mpi.h new file mode 100644 index 0000000..b7a8cb5 --- /dev/null +++ b/libtommath/mtest/mpi.h @@ -0,0 +1,227 @@ +/* + mpi.h + + by Michael J. Fromberger + Copyright (C) 1998 Michael J. Fromberger, All Rights Reserved + + Arbitrary precision integer arithmetic library + + $Id: mpi.h,v 1.1.1.1 2005/01/19 22:41:29 kennykb Exp $ + */ + +#ifndef _H_MPI_ +#define _H_MPI_ + +#include "mpi-config.h" + +#define MP_LT -1 +#define MP_EQ 0 +#define MP_GT 1 + +#if MP_DEBUG +#undef MP_IOFUNC +#define MP_IOFUNC 1 +#endif + +#if MP_IOFUNC +#include +#include +#endif + +#include + +#define MP_NEG 1 +#define MP_ZPOS 0 + +/* Included for compatibility... */ +#define NEG MP_NEG +#define ZPOS MP_ZPOS + +#define MP_OKAY 0 /* no error, all is well */ +#define MP_YES 0 /* yes (boolean result) */ +#define MP_NO -1 /* no (boolean result) */ +#define MP_MEM -2 /* out of memory */ +#define MP_RANGE -3 /* argument out of range */ +#define MP_BADARG -4 /* invalid parameter */ +#define MP_UNDEF -5 /* answer is undefined */ +#define MP_LAST_CODE MP_UNDEF + +#include "mpi-types.h" + +/* Included for compatibility... */ +#define DIGIT_BIT MP_DIGIT_BIT +#define DIGIT_MAX MP_DIGIT_MAX + +/* Macros for accessing the mp_int internals */ +#define SIGN(MP) ((MP)->sign) +#define USED(MP) ((MP)->used) +#define ALLOC(MP) ((MP)->alloc) +#define DIGITS(MP) ((MP)->dp) +#define DIGIT(MP,N) (MP)->dp[(N)] + +#if MP_ARGCHK == 1 +#define ARGCHK(X,Y) {if(!(X)){return (Y);}} +#elif MP_ARGCHK == 2 +#include +#define ARGCHK(X,Y) assert(X) +#else +#define ARGCHK(X,Y) /* */ +#endif + +/* This defines the maximum I/O base (minimum is 2) */ +#define MAX_RADIX 64 + +typedef struct { + mp_sign sign; /* sign of this quantity */ + mp_size alloc; /* how many digits allocated */ + mp_size used; /* how many digits used */ + mp_digit *dp; /* the digits themselves */ +} mp_int; + +/*------------------------------------------------------------------------*/ +/* Default precision */ + +unsigned int mp_get_prec(void); +void mp_set_prec(unsigned int prec); + +/*------------------------------------------------------------------------*/ +/* Memory management */ + +mp_err mp_init(mp_int *mp); +mp_err mp_init_array(mp_int mp[], int count); +mp_err mp_init_size(mp_int *mp, mp_size prec); +mp_err mp_init_copy(mp_int *mp, mp_int *from); +mp_err mp_copy(mp_int *from, mp_int *to); +void mp_exch(mp_int *mp1, mp_int *mp2); +void mp_clear(mp_int *mp); +void mp_clear_array(mp_int mp[], int count); +void mp_zero(mp_int *mp); +void mp_set(mp_int *mp, mp_digit d); +mp_err mp_set_int(mp_int *mp, long z); +mp_err mp_shrink(mp_int *a); + + +/*------------------------------------------------------------------------*/ +/* Single digit arithmetic */ + +mp_err mp_add_d(mp_int *a, mp_digit d, mp_int *b); +mp_err mp_sub_d(mp_int *a, mp_digit d, mp_int *b); +mp_err mp_mul_d(mp_int *a, mp_digit d, mp_int *b); +mp_err mp_mul_2(mp_int *a, mp_int *c); +mp_err mp_div_d(mp_int *a, mp_digit d, mp_int *q, mp_digit *r); +mp_err mp_div_2(mp_int *a, mp_int *c); +mp_err mp_expt_d(mp_int *a, mp_digit d, mp_int *c); + +/*------------------------------------------------------------------------*/ +/* Sign manipulations */ + +mp_err mp_abs(mp_int *a, mp_int *b); +mp_err mp_neg(mp_int *a, mp_int *b); + +/*------------------------------------------------------------------------*/ +/* Full arithmetic */ + +mp_err mp_add(mp_int *a, mp_int *b, mp_int *c); +mp_err mp_sub(mp_int *a, mp_int *b, mp_int *c); +mp_err mp_mul(mp_int *a, mp_int *b, mp_int *c); +mp_err mp_mul_2d(mp_int *a, mp_digit d, mp_int *c); +#if MP_SQUARE +mp_err mp_sqr(mp_int *a, mp_int *b); +#else +#define mp_sqr(a, b) mp_mul(a, a, b) +#endif +mp_err mp_div(mp_int *a, mp_int *b, mp_int *q, mp_int *r); +mp_err mp_div_2d(mp_int *a, mp_digit d, mp_int *q, mp_int *r); +mp_err mp_expt(mp_int *a, mp_int *b, mp_int *c); +mp_err mp_2expt(mp_int *a, mp_digit k); +mp_err mp_sqrt(mp_int *a, mp_int *b); + +/*------------------------------------------------------------------------*/ +/* Modular arithmetic */ + +#if MP_MODARITH +mp_err mp_mod(mp_int *a, mp_int *m, mp_int *c); +mp_err mp_mod_d(mp_int *a, mp_digit d, mp_digit *c); +mp_err mp_addmod(mp_int *a, mp_int *b, mp_int *m, mp_int *c); +mp_err mp_submod(mp_int *a, mp_int *b, mp_int *m, mp_int *c); +mp_err mp_mulmod(mp_int *a, mp_int *b, mp_int *m, mp_int *c); +#if MP_SQUARE +mp_err mp_sqrmod(mp_int *a, mp_int *m, mp_int *c); +#else +#define mp_sqrmod(a, m, c) mp_mulmod(a, a, m, c) +#endif +mp_err mp_exptmod(mp_int *a, mp_int *b, mp_int *m, mp_int *c); +mp_err mp_exptmod_d(mp_int *a, mp_digit d, mp_int *m, mp_int *c); +#endif /* MP_MODARITH */ + +/*------------------------------------------------------------------------*/ +/* Comparisons */ + +int mp_cmp_z(mp_int *a); +int mp_cmp_d(mp_int *a, mp_digit d); +int mp_cmp(mp_int *a, mp_int *b); +int mp_cmp_mag(mp_int *a, mp_int *b); +int mp_cmp_int(mp_int *a, long z); +int mp_isodd(mp_int *a); +int mp_iseven(mp_int *a); + +/*------------------------------------------------------------------------*/ +/* Number theoretic */ + +#if MP_NUMTH +mp_err mp_gcd(mp_int *a, mp_int *b, mp_int *c); +mp_err mp_lcm(mp_int *a, mp_int *b, mp_int *c); +mp_err mp_xgcd(mp_int *a, mp_int *b, mp_int *g, mp_int *x, mp_int *y); +mp_err mp_invmod(mp_int *a, mp_int *m, mp_int *c); +#endif /* end MP_NUMTH */ + +/*------------------------------------------------------------------------*/ +/* Input and output */ + +#if MP_IOFUNC +void mp_print(mp_int *mp, FILE *ofp); +#endif /* end MP_IOFUNC */ + +/*------------------------------------------------------------------------*/ +/* Base conversion */ + +#define BITS 1 +#define BYTES CHAR_BIT + +mp_err mp_read_signed_bin(mp_int *mp, unsigned char *str, int len); +int mp_signed_bin_size(mp_int *mp); +mp_err mp_to_signed_bin(mp_int *mp, unsigned char *str); + +mp_err mp_read_unsigned_bin(mp_int *mp, unsigned char *str, int len); +int mp_unsigned_bin_size(mp_int *mp); +mp_err mp_to_unsigned_bin(mp_int *mp, unsigned char *str); + +int mp_count_bits(mp_int *mp); + +#if MP_COMPAT_MACROS +#define mp_read_raw(mp, str, len) mp_read_signed_bin((mp), (str), (len)) +#define mp_raw_size(mp) mp_signed_bin_size(mp) +#define mp_toraw(mp, str) mp_to_signed_bin((mp), (str)) +#define mp_read_mag(mp, str, len) mp_read_unsigned_bin((mp), (str), (len)) +#define mp_mag_size(mp) mp_unsigned_bin_size(mp) +#define mp_tomag(mp, str) mp_to_unsigned_bin((mp), (str)) +#endif + +mp_err mp_read_radix(mp_int *mp, unsigned char *str, int radix); +int mp_radix_size(mp_int *mp, int radix); +int mp_value_radix_size(int num, int qty, int radix); +mp_err mp_toradix(mp_int *mp, unsigned char *str, int radix); + +int mp_char2value(char ch, int r); + +#define mp_tobinary(M, S) mp_toradix((M), (S), 2) +#define mp_tooctal(M, S) mp_toradix((M), (S), 8) +#define mp_todecimal(M, S) mp_toradix((M), (S), 10) +#define mp_tohex(M, S) mp_toradix((M), (S), 16) + +/*------------------------------------------------------------------------*/ +/* Error strings */ + +const char *mp_strerror(mp_err ec); + +#endif /* end _H_MPI_ */ diff --git a/libtommath/mtest/mtest.c b/libtommath/mtest/mtest.c new file mode 100644 index 0000000..d46f456 --- /dev/null +++ b/libtommath/mtest/mtest.c @@ -0,0 +1,304 @@ +/* makes a bignum test harness with NUM tests per operation + * + * the output is made in the following format [one parameter per line] + +operation +operand1 +operand2 +[... operandN] +result1 +result2 +[... resultN] + +So for example "a * b mod n" would be + +mulmod +a +b +n +a*b mod n + +e.g. if a=3, b=4 n=11 then + +mulmod +3 +4 +11 +1 + + */ + +#ifdef MP_8BIT +#define THE_MASK 127 +#else +#define THE_MASK 32767 +#endif + +#include +#include +#include +#include "mpi.c" + +FILE *rng; + +void rand_num(mp_int *a) +{ + int n, size; + unsigned char buf[2048]; + + size = 1 + ((fgetc(rng)<<8) + fgetc(rng)) % 101; + buf[0] = (fgetc(rng)&1)?1:0; + fread(buf+1, 1, size, rng); + while (buf[1] == 0) buf[1] = fgetc(rng); + mp_read_raw(a, buf, 1+size); +} + +void rand_num2(mp_int *a) +{ + int n, size; + unsigned char buf[2048]; + + size = 10 + ((fgetc(rng)<<8) + fgetc(rng)) % 101; + buf[0] = (fgetc(rng)&1)?1:0; + fread(buf+1, 1, size, rng); + while (buf[1] == 0) buf[1] = fgetc(rng); + mp_read_raw(a, buf, 1+size); +} + +#define mp_to64(a, b) mp_toradix(a, b, 64) + +int main(void) +{ + int n, tmp; + mp_int a, b, c, d, e; + clock_t t1; + char buf[4096]; + + mp_init(&a); + mp_init(&b); + mp_init(&c); + mp_init(&d); + mp_init(&e); + + + /* initial (2^n - 1)^2 testing, makes sure the comba multiplier works [it has the new carry code] */ +/* + mp_set(&a, 1); + for (n = 1; n < 8192; n++) { + mp_mul(&a, &a, &c); + printf("mul\n"); + mp_to64(&a, buf); + printf("%s\n%s\n", buf, buf); + mp_to64(&c, buf); + printf("%s\n", buf); + + mp_add_d(&a, 1, &a); + mp_mul_2(&a, &a); + mp_sub_d(&a, 1, &a); + } +*/ + + rng = fopen("/dev/urandom", "rb"); + if (rng == NULL) { + rng = fopen("/dev/random", "rb"); + if (rng == NULL) { + fprintf(stderr, "\nWarning: stdin used as random source\n\n"); + rng = stdin; + } + } + + t1 = clock(); + for (;;) { +#if 0 + if (clock() - t1 > CLOCKS_PER_SEC) { + sleep(2); + t1 = clock(); + } +#endif + n = fgetc(rng) % 15; + + if (n == 0) { + /* add tests */ + rand_num(&a); + rand_num(&b); + mp_add(&a, &b, &c); + printf("add\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + mp_to64(&c, buf); + printf("%s\n", buf); + } else if (n == 1) { + /* sub tests */ + rand_num(&a); + rand_num(&b); + mp_sub(&a, &b, &c); + printf("sub\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + mp_to64(&c, buf); + printf("%s\n", buf); + } else if (n == 2) { + /* mul tests */ + rand_num(&a); + rand_num(&b); + mp_mul(&a, &b, &c); + printf("mul\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + mp_to64(&c, buf); + printf("%s\n", buf); + } else if (n == 3) { + /* div tests */ + rand_num(&a); + rand_num(&b); + mp_div(&a, &b, &c, &d); + printf("div\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + mp_to64(&c, buf); + printf("%s\n", buf); + mp_to64(&d, buf); + printf("%s\n", buf); + } else if (n == 4) { + /* sqr tests */ + rand_num(&a); + mp_sqr(&a, &b); + printf("sqr\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + } else if (n == 5) { + /* mul_2d test */ + rand_num(&a); + mp_copy(&a, &b); + n = fgetc(rng) & 63; + mp_mul_2d(&b, n, &b); + mp_to64(&a, buf); + printf("mul2d\n"); + printf("%s\n", buf); + printf("%d\n", n); + mp_to64(&b, buf); + printf("%s\n", buf); + } else if (n == 6) { + /* div_2d test */ + rand_num(&a); + mp_copy(&a, &b); + n = fgetc(rng) & 63; + mp_div_2d(&b, n, &b, NULL); + mp_to64(&a, buf); + printf("div2d\n"); + printf("%s\n", buf); + printf("%d\n", n); + mp_to64(&b, buf); + printf("%s\n", buf); + } else if (n == 7) { + /* gcd test */ + rand_num(&a); + rand_num(&b); + a.sign = MP_ZPOS; + b.sign = MP_ZPOS; + mp_gcd(&a, &b, &c); + printf("gcd\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + mp_to64(&c, buf); + printf("%s\n", buf); + } else if (n == 8) { + /* lcm test */ + rand_num(&a); + rand_num(&b); + a.sign = MP_ZPOS; + b.sign = MP_ZPOS; + mp_lcm(&a, &b, &c); + printf("lcm\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + mp_to64(&c, buf); + printf("%s\n", buf); + } else if (n == 9) { + /* exptmod test */ + rand_num2(&a); + rand_num2(&b); + rand_num2(&c); +// if (c.dp[0]&1) mp_add_d(&c, 1, &c); + a.sign = b.sign = c.sign = 0; + mp_exptmod(&a, &b, &c, &d); + printf("expt\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + mp_to64(&c, buf); + printf("%s\n", buf); + mp_to64(&d, buf); + printf("%s\n", buf); + } else if (n == 10) { + /* invmod test */ + rand_num2(&a); + rand_num2(&b); + b.sign = MP_ZPOS; + a.sign = MP_ZPOS; + mp_gcd(&a, &b, &c); + if (mp_cmp_d(&c, 1) != 0) continue; + if (mp_cmp_d(&b, 1) == 0) continue; + mp_invmod(&a, &b, &c); + printf("invmod\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + mp_to64(&c, buf); + printf("%s\n", buf); + } else if (n == 11) { + rand_num(&a); + mp_mul_2(&a, &a); + mp_div_2(&a, &b); + printf("div2\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + } else if (n == 12) { + rand_num2(&a); + mp_mul_2(&a, &b); + printf("mul2\n"); + mp_to64(&a, buf); + printf("%s\n", buf); + mp_to64(&b, buf); + printf("%s\n", buf); + } else if (n == 13) { + rand_num2(&a); + tmp = abs(rand()) & THE_MASK; + mp_add_d(&a, tmp, &b); + printf("add_d\n"); + mp_to64(&a, buf); + printf("%s\n%d\n", buf, tmp); + mp_to64(&b, buf); + printf("%s\n", buf); + } else if (n == 14) { + rand_num2(&a); + tmp = abs(rand()) & THE_MASK; + mp_sub_d(&a, tmp, &b); + printf("sub_d\n"); + mp_to64(&a, buf); + printf("%s\n%d\n", buf, tmp); + mp_to64(&b, buf); + printf("%s\n", buf); + } + } + fclose(rng); + return 0; +} diff --git a/libtommath/pics/design_process.sxd b/libtommath/pics/design_process.sxd new file mode 100644 index 0000000..7414dbb Binary files /dev/null and b/libtommath/pics/design_process.sxd differ diff --git a/libtommath/pics/design_process.tif b/libtommath/pics/design_process.tif new file mode 100644 index 0000000..4a0c012 Binary files /dev/null and b/libtommath/pics/design_process.tif differ diff --git a/libtommath/pics/expt_state.sxd b/libtommath/pics/expt_state.sxd new file mode 100644 index 0000000..6518404 Binary files /dev/null and b/libtommath/pics/expt_state.sxd differ diff --git a/libtommath/pics/expt_state.tif b/libtommath/pics/expt_state.tif new file mode 100644 index 0000000..cb06e8e Binary files /dev/null and b/libtommath/pics/expt_state.tif differ diff --git a/libtommath/pics/makefile b/libtommath/pics/makefile new file mode 100644 index 0000000..3ecb02f --- /dev/null +++ b/libtommath/pics/makefile @@ -0,0 +1,35 @@ +# makes the images... yeah + +default: pses + +design_process.ps: design_process.tif + tiff2ps -s -e design_process.tif > design_process.ps + +sliding_window.ps: sliding_window.tif + tiff2ps -s -e sliding_window.tif > sliding_window.ps + +expt_state.ps: expt_state.tif + tiff2ps -s -e expt_state.tif > expt_state.ps + +primality.ps: primality.tif + tiff2ps -s -e primality.tif > primality.ps + +design_process.pdf: design_process.ps + epstopdf design_process.ps + +sliding_window.pdf: sliding_window.ps + epstopdf sliding_window.ps + +expt_state.pdf: expt_state.ps + epstopdf expt_state.ps + +primality.pdf: primality.ps + epstopdf primality.ps + + +pses: sliding_window.ps expt_state.ps primality.ps design_process.ps +pdfes: sliding_window.pdf expt_state.pdf primality.pdf design_process.pdf + +clean: + rm -rf *.ps *.pdf .xvpics + \ No newline at end of file diff --git a/libtommath/pics/primality.tif b/libtommath/pics/primality.tif new file mode 100644 index 0000000..76d6be3 Binary files /dev/null and b/libtommath/pics/primality.tif differ diff --git a/libtommath/pics/radix.sxd b/libtommath/pics/radix.sxd new file mode 100644 index 0000000..b9eb9a0 Binary files /dev/null and b/libtommath/pics/radix.sxd differ diff --git a/libtommath/pics/sliding_window.sxd b/libtommath/pics/sliding_window.sxd new file mode 100644 index 0000000..91e7c0d Binary files /dev/null and b/libtommath/pics/sliding_window.sxd differ diff --git a/libtommath/pics/sliding_window.tif b/libtommath/pics/sliding_window.tif new file mode 100644 index 0000000..bb4cb96 Binary files /dev/null and b/libtommath/pics/sliding_window.tif differ diff --git a/libtommath/poster.out b/libtommath/poster.out new file mode 100644 index 0000000..e69de29 diff --git a/libtommath/poster.pdf b/libtommath/poster.pdf new file mode 100644 index 0000000..e0b4f84 Binary files /dev/null and b/libtommath/poster.pdf differ diff --git a/libtommath/poster.tex b/libtommath/poster.tex new file mode 100644 index 0000000..e7388f4 --- /dev/null +++ b/libtommath/poster.tex @@ -0,0 +1,35 @@ +\documentclass[landscape,11pt]{article} +\usepackage{amsmath, amssymb} +\usepackage{hyperref} +\begin{document} +\hspace*{-3in} +\begin{tabular}{llllll} +$c = a + b$ & {\tt mp\_add(\&a, \&b, \&c)} & $b = 2a$ & {\tt mp\_mul\_2(\&a, \&b)} & \\ +$c = a - b$ & {\tt mp\_sub(\&a, \&b, \&c)} & $b = a/2$ & {\tt mp\_div\_2(\&a, \&b)} & \\ +$c = ab $ & {\tt mp\_mul(\&a, \&b, \&c)} & $c = 2^ba$ & {\tt mp\_mul\_2d(\&a, b, \&c)} \\ +$b = a^2 $ & {\tt mp\_sqr(\&a, \&b)} & $c = a/2^b, d = a \mod 2^b$ & {\tt mp\_div\_2d(\&a, b, \&c, \&d)} \\ +$c = \lfloor a/b \rfloor, d = a \mod b$ & {\tt mp\_div(\&a, \&b, \&c, \&d)} & $c = a \mod 2^b $ & {\tt mp\_mod\_2d(\&a, b, \&c)} \\ + && \\ +$a = b $ & {\tt mp\_set\_int(\&a, b)} & $c = a \vee b$ & {\tt mp\_or(\&a, \&b, \&c)} \\ +$b = a $ & {\tt mp\_copy(\&a, \&b)} & $c = a \wedge b$ & {\tt mp\_and(\&a, \&b, \&c)} \\ + && $c = a \oplus b$ & {\tt mp\_xor(\&a, \&b, \&c)} \\ + & \\ +$b = -a $ & {\tt mp\_neg(\&a, \&b)} & $d = a + b \mod c$ & {\tt mp\_addmod(\&a, \&b, \&c, \&d)} \\ +$b = |a| $ & {\tt mp\_abs(\&a, \&b)} & $d = a - b \mod c$ & {\tt mp\_submod(\&a, \&b, \&c, \&d)} \\ + && $d = ab \mod c$ & {\tt mp\_mulmod(\&a, \&b, \&c, \&d)} \\ +Compare $a$ and $b$ & {\tt mp\_cmp(\&a, \&b)} & $c = a^2 \mod b$ & {\tt mp\_sqrmod(\&a, \&b, \&c)} \\ +Is Zero? & {\tt mp\_iszero(\&a)} & $c = a^{-1} \mod b$ & {\tt mp\_invmod(\&a, \&b, \&c)} \\ +Is Even? & {\tt mp\_iseven(\&a)} & $d = a^b \mod c$ & {\tt mp\_exptmod(\&a, \&b, \&c, \&d)} \\ +Is Odd ? & {\tt mp\_isodd(\&a)} \\ +&\\ +$\vert \vert a \vert \vert$ & {\tt mp\_unsigned\_bin\_size(\&a)} & $res$ = 1 if $a$ prime to $t$ rounds? & {\tt mp\_prime\_is\_prime(\&a, t, \&res)} \\ +$buf \leftarrow a$ & {\tt mp\_to\_unsigned\_bin(\&a, buf)} & Next prime after $a$ to $t$ rounds. & {\tt mp\_prime\_next\_prime(\&a, t, bbs\_style)} \\ +$a \leftarrow buf[0..len-1]$ & {\tt mp\_read\_unsigned\_bin(\&a, buf, len)} \\ +&\\ +$b = \sqrt{a}$ & {\tt mp\_sqrt(\&a, \&b)} & $c = \mbox{gcd}(a, b)$ & {\tt mp\_gcd(\&a, \&b, \&c)} \\ +$c = a^{1/b}$ & {\tt mp\_n\_root(\&a, b, \&c)} & $c = \mbox{lcm}(a, b)$ & {\tt mp\_lcm(\&a, \&b, \&c)} \\ +&\\ +Greater Than & MP\_GT & Equal To & MP\_EQ \\ +Less Than & MP\_LT & Bits per digit & DIGIT\_BIT \\ +\end{tabular} +\end{document} diff --git a/libtommath/pre_gen/mpi.c b/libtommath/pre_gen/mpi.c new file mode 100644 index 0000000..7d832e7 --- /dev/null +++ b/libtommath/pre_gen/mpi.c @@ -0,0 +1,8819 @@ +/* Start: bn_error.c */ +#include +#ifdef BN_ERROR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +static const struct { + int code; + char *msg; +} msgs[] = { + { MP_OKAY, "Successful" }, + { MP_MEM, "Out of heap" }, + { MP_VAL, "Value out of range" } +}; + +/* return a char * string for a given code */ +char *mp_error_to_string(int code) +{ + int x; + + /* scan the lookup table for the given message */ + for (x = 0; x < (int)(sizeof(msgs) / sizeof(msgs[0])); x++) { + if (msgs[x].code == code) { + return msgs[x].msg; + } + } + + /* generic reply for invalid code */ + return "Invalid error code"; +} + +#endif + +/* End: bn_error.c */ + +/* Start: bn_fast_mp_invmod.c */ +#include +#ifdef BN_FAST_MP_INVMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes the modular inverse via binary extended euclidean algorithm, + * that is c = 1/a mod b + * + * Based on slow invmod except this is optimized for the case where b is + * odd as per HAC Note 14.64 on pp. 610 + */ +int +fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int x, y, u, v, B, D; + int res, neg; + + /* 2. [modified] b must be odd */ + if (mp_iseven (b) == 1) { + return MP_VAL; + } + + /* init all our temps */ + if ((res = mp_init_multi(&x, &y, &u, &v, &B, &D, NULL)) != MP_OKAY) { + return res; + } + + /* x == modulus, y == value to invert */ + if ((res = mp_copy (b, &x)) != MP_OKAY) { + goto LBL_ERR; + } + + /* we need y = |a| */ + if ((res = mp_abs (a, &y)) != MP_OKAY) { + goto LBL_ERR; + } + + /* 3. u=x, v=y, A=1, B=0, C=0,D=1 */ + if ((res = mp_copy (&x, &u)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_copy (&y, &v)) != MP_OKAY) { + goto LBL_ERR; + } + mp_set (&D, 1); + +top: + /* 4. while u is even do */ + while (mp_iseven (&u) == 1) { + /* 4.1 u = u/2 */ + if ((res = mp_div_2 (&u, &u)) != MP_OKAY) { + goto LBL_ERR; + } + /* 4.2 if B is odd then */ + if (mp_isodd (&B) == 1) { + if ((res = mp_sub (&B, &x, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* B = B/2 */ + if ((res = mp_div_2 (&B, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 5. while v is even do */ + while (mp_iseven (&v) == 1) { + /* 5.1 v = v/2 */ + if ((res = mp_div_2 (&v, &v)) != MP_OKAY) { + goto LBL_ERR; + } + /* 5.2 if D is odd then */ + if (mp_isodd (&D) == 1) { + /* D = (D-x)/2 */ + if ((res = mp_sub (&D, &x, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* D = D/2 */ + if ((res = mp_div_2 (&D, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 6. if u >= v then */ + if (mp_cmp (&u, &v) != MP_LT) { + /* u = u - v, B = B - D */ + if ((res = mp_sub (&u, &v, &u)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&B, &D, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } else { + /* v - v - u, D = D - B */ + if ((res = mp_sub (&v, &u, &v)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&D, &B, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* if not zero goto step 4 */ + if (mp_iszero (&u) == 0) { + goto top; + } + + /* now a = C, b = D, gcd == g*v */ + + /* if v != 1 then there is no inverse */ + if (mp_cmp_d (&v, 1) != MP_EQ) { + res = MP_VAL; + goto LBL_ERR; + } + + /* b is now the inverse */ + neg = a->sign; + while (D.sign == MP_NEG) { + if ((res = mp_add (&D, b, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + mp_exch (&D, c); + c->sign = neg; + res = MP_OKAY; + +LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL); + return res; +} +#endif + +/* End: bn_fast_mp_invmod.c */ + +/* Start: bn_fast_mp_montgomery_reduce.c */ +#include +#ifdef BN_FAST_MP_MONTGOMERY_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes xR**-1 == x (mod N) via Montgomery Reduction + * + * This is an optimized implementation of montgomery_reduce + * which uses the comba method to quickly calculate the columns of the + * reduction. + * + * Based on Algorithm 14.32 on pp.601 of HAC. +*/ +int +fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +{ + int ix, res, olduse; + mp_word W[MP_WARRAY]; + + /* get old used count */ + olduse = x->used; + + /* grow a as required */ + if (x->alloc < n->used + 1) { + if ((res = mp_grow (x, n->used + 1)) != MP_OKAY) { + return res; + } + } + + /* first we have to get the digits of the input into + * an array of double precision words W[...] + */ + { + register mp_word *_W; + register mp_digit *tmpx; + + /* alias for the W[] array */ + _W = W; + + /* alias for the digits of x*/ + tmpx = x->dp; + + /* copy the digits of a into W[0..a->used-1] */ + for (ix = 0; ix < x->used; ix++) { + *_W++ = *tmpx++; + } + + /* zero the high words of W[a->used..m->used*2] */ + for (; ix < n->used * 2 + 1; ix++) { + *_W++ = 0; + } + } + + /* now we proceed to zero successive digits + * from the least significant upwards + */ + for (ix = 0; ix < n->used; ix++) { + /* mu = ai * m' mod b + * + * We avoid a double precision multiplication (which isn't required) + * by casting the value down to a mp_digit. Note this requires + * that W[ix-1] have the carry cleared (see after the inner loop) + */ + register mp_digit mu; + mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK); + + /* a = a + mu * m * b**i + * + * This is computed in place and on the fly. The multiplication + * by b**i is handled by offseting which columns the results + * are added to. + * + * Note the comba method normally doesn't handle carries in the + * inner loop In this case we fix the carry from the previous + * column since the Montgomery reduction requires digits of the + * result (so far) [see above] to work. This is + * handled by fixing up one carry after the inner loop. The + * carry fixups are done in order so after these loops the + * first m->used words of W[] have the carries fixed + */ + { + register int iy; + register mp_digit *tmpn; + register mp_word *_W; + + /* alias for the digits of the modulus */ + tmpn = n->dp; + + /* Alias for the columns set by an offset of ix */ + _W = W + ix; + + /* inner loop */ + for (iy = 0; iy < n->used; iy++) { + *_W++ += ((mp_word)mu) * ((mp_word)*tmpn++); + } + } + + /* now fix carry for next digit, W[ix+1] */ + W[ix + 1] += W[ix] >> ((mp_word) DIGIT_BIT); + } + + /* now we have to propagate the carries and + * shift the words downward [all those least + * significant digits we zeroed]. + */ + { + register mp_digit *tmpx; + register mp_word *_W, *_W1; + + /* nox fix rest of carries */ + + /* alias for current word */ + _W1 = W + ix; + + /* alias for next word, where the carry goes */ + _W = W + ++ix; + + for (; ix <= n->used * 2 + 1; ix++) { + *_W++ += *_W1++ >> ((mp_word) DIGIT_BIT); + } + + /* copy out, A = A/b**n + * + * The result is A/b**n but instead of converting from an + * array of mp_word to mp_digit than calling mp_rshd + * we just copy them in the right order + */ + + /* alias for destination word */ + tmpx = x->dp; + + /* alias for shifted double precision result */ + _W = W + n->used; + + for (ix = 0; ix < n->used + 1; ix++) { + *tmpx++ = (mp_digit)(*_W++ & ((mp_word) MP_MASK)); + } + + /* zero oldused digits, if the input a was larger than + * m->used+1 we'll have to clear the digits + */ + for (; ix < olduse; ix++) { + *tmpx++ = 0; + } + } + + /* set the max used and clamp */ + x->used = n->used + 1; + mp_clamp (x); + + /* if A >= m then A = A - m */ + if (mp_cmp_mag (x, n) != MP_LT) { + return s_mp_sub (x, n, x); + } + return MP_OKAY; +} +#endif + +/* End: bn_fast_mp_montgomery_reduce.c */ + +/* Start: bn_fast_s_mp_mul_digs.c */ +#include +#ifdef BN_FAST_S_MP_MUL_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Fast (comba) multiplier + * + * This is the fast column-array [comba] multiplier. It is + * designed to compute the columns of the product first + * then handle the carries afterwards. This has the effect + * of making the nested loops that compute the columns very + * simple and schedulable on super-scalar processors. + * + * This has been modified to produce a variable number of + * digits of output so if say only a half-product is required + * you don't have to compute the upper half (a feature + * required for fast Barrett reduction). + * + * Based on Algorithm 14.12 on pp.595 of HAC. + * + */ +int +fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +{ + int olduse, res, pa, ix, iz; + mp_digit W[MP_WARRAY]; + register mp_word _W; + + /* grow the destination as required */ + if (c->alloc < digs) { + if ((res = mp_grow (c, digs)) != MP_OKAY) { + return res; + } + } + + /* number of output digits to produce */ + pa = MIN(digs, a->used + b->used); + + /* clear the carry */ + _W = 0; + for (ix = 0; ix < pa; ix++) { + int tx, ty; + int iy; + mp_digit *tmpx, *tmpy; + + /* get offsets into the two bignums */ + ty = MIN(b->used-1, ix); + tx = ix - ty; + + /* setup temp aliases */ + tmpx = a->dp + tx; + tmpy = b->dp + ty; + + /* this is the number of times the loop will iterrate, essentially its + while (tx++ < a->used && ty-- >= 0) { ... } + */ + iy = MIN(a->used-tx, ty+1); + + /* execute loop */ + for (iz = 0; iz < iy; ++iz) { + _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); + } + + /* store term */ + W[ix] = ((mp_digit)_W) & MP_MASK; + + /* make next carry */ + _W = _W >> ((mp_word)DIGIT_BIT); + } + + /* store final carry */ + W[ix] = _W; + + /* setup dest */ + olduse = c->used; + c->used = digs; + + { + register mp_digit *tmpc; + tmpc = c->dp; + for (ix = 0; ix < digs; ix++) { + /* now extract the previous digit [below the carry] */ + *tmpc++ = W[ix]; + } + + /* clear unused digits [that existed in the old copy of c] */ + for (; ix < olduse; ix++) { + *tmpc++ = 0; + } + } + mp_clamp (c); + return MP_OKAY; +} +#endif + +/* End: bn_fast_s_mp_mul_digs.c */ + +/* Start: bn_fast_s_mp_mul_high_digs.c */ +#include +#ifdef BN_FAST_S_MP_MUL_HIGH_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* this is a modified version of fast_s_mul_digs that only produces + * output digits *above* digs. See the comments for fast_s_mul_digs + * to see how it works. + * + * This is used in the Barrett reduction since for one of the multiplications + * only the higher digits were needed. This essentially halves the work. + * + * Based on Algorithm 14.12 on pp.595 of HAC. + */ +int +fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +{ + int olduse, res, pa, ix, iz; + mp_digit W[MP_WARRAY]; + mp_word _W; + + /* grow the destination as required */ + pa = a->used + b->used; + if (c->alloc < pa) { + if ((res = mp_grow (c, pa)) != MP_OKAY) { + return res; + } + } + + /* number of output digits to produce */ + pa = a->used + b->used; + _W = 0; + for (ix = digs; ix < pa; ix++) { + int tx, ty, iy; + mp_digit *tmpx, *tmpy; + + /* get offsets into the two bignums */ + ty = MIN(b->used-1, ix); + tx = ix - ty; + + /* setup temp aliases */ + tmpx = a->dp + tx; + tmpy = b->dp + ty; + + /* this is the number of times the loop will iterrate, essentially its + while (tx++ < a->used && ty-- >= 0) { ... } + */ + iy = MIN(a->used-tx, ty+1); + + /* execute loop */ + for (iz = 0; iz < iy; iz++) { + _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); + } + + /* store term */ + W[ix] = ((mp_digit)_W) & MP_MASK; + + /* make next carry */ + _W = _W >> ((mp_word)DIGIT_BIT); + } + + /* store final carry */ + W[ix] = _W; + + /* setup dest */ + olduse = c->used; + c->used = pa; + + { + register mp_digit *tmpc; + + tmpc = c->dp + digs; + for (ix = digs; ix <= pa; ix++) { + /* now extract the previous digit [below the carry] */ + *tmpc++ = W[ix]; + } + + /* clear unused digits [that existed in the old copy of c] */ + for (; ix < olduse; ix++) { + *tmpc++ = 0; + } + } + mp_clamp (c); + return MP_OKAY; +} +#endif + +/* End: bn_fast_s_mp_mul_high_digs.c */ + +/* Start: bn_fast_s_mp_sqr.c */ +#include +#ifdef BN_FAST_S_MP_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* fast squaring + * + * This is the comba method where the columns of the product + * are computed first then the carries are computed. This + * has the effect of making a very simple inner loop that + * is executed the most + * + * W2 represents the outer products and W the inner. + * + * A further optimizations is made because the inner + * products are of the form "A * B * 2". The *2 part does + * not need to be computed until the end which is good + * because 64-bit shifts are slow! + * + * Based on Algorithm 14.16 on pp.597 of HAC. + * + */ +/* the jist of squaring... + +you do like mult except the offset of the tmpx [one that starts closer to zero] +can't equal the offset of tmpy. So basically you set up iy like before then you min it with +(ty-tx) so that it never happens. You double all those you add in the inner loop + +After that loop you do the squares and add them in. + +Remove W2 and don't memset W + +*/ + +int fast_s_mp_sqr (mp_int * a, mp_int * b) +{ + int olduse, res, pa, ix, iz; + mp_digit W[MP_WARRAY], *tmpx; + mp_word W1; + + /* grow the destination as required */ + pa = a->used + a->used; + if (b->alloc < pa) { + if ((res = mp_grow (b, pa)) != MP_OKAY) { + return res; + } + } + + /* number of output digits to produce */ + W1 = 0; + for (ix = 0; ix < pa; ix++) { + int tx, ty, iy; + mp_word _W; + mp_digit *tmpy; + + /* clear counter */ + _W = 0; + + /* get offsets into the two bignums */ + ty = MIN(a->used-1, ix); + tx = ix - ty; + + /* setup temp aliases */ + tmpx = a->dp + tx; + tmpy = a->dp + ty; + + /* this is the number of times the loop will iterrate, essentially its + while (tx++ < a->used && ty-- >= 0) { ... } + */ + iy = MIN(a->used-tx, ty+1); + + /* now for squaring tx can never equal ty + * we halve the distance since they approach at a rate of 2x + * and we have to round because odd cases need to be executed + */ + iy = MIN(iy, (ty-tx+1)>>1); + + /* execute loop */ + for (iz = 0; iz < iy; iz++) { + _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); + } + + /* double the inner product and add carry */ + _W = _W + _W + W1; + + /* even columns have the square term in them */ + if ((ix&1) == 0) { + _W += ((mp_word)a->dp[ix>>1])*((mp_word)a->dp[ix>>1]); + } + + /* store it */ + W[ix] = _W; + + /* make next carry */ + W1 = _W >> ((mp_word)DIGIT_BIT); + } + + /* setup dest */ + olduse = b->used; + b->used = a->used+a->used; + + { + mp_digit *tmpb; + tmpb = b->dp; + for (ix = 0; ix < pa; ix++) { + *tmpb++ = W[ix] & MP_MASK; + } + + /* clear unused digits [that existed in the old copy of c] */ + for (; ix < olduse; ix++) { + *tmpb++ = 0; + } + } + mp_clamp (b); + return MP_OKAY; +} +#endif + +/* End: bn_fast_s_mp_sqr.c */ + +/* Start: bn_mp_2expt.c */ +#include +#ifdef BN_MP_2EXPT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes a = 2**b + * + * Simple algorithm which zeroes the int, grows it then just sets one bit + * as required. + */ +int +mp_2expt (mp_int * a, int b) +{ + int res; + + /* zero a as per default */ + mp_zero (a); + + /* grow a to accomodate the single bit */ + if ((res = mp_grow (a, b / DIGIT_BIT + 1)) != MP_OKAY) { + return res; + } + + /* set the used count of where the bit will go */ + a->used = b / DIGIT_BIT + 1; + + /* put the single bit in its place */ + a->dp[b / DIGIT_BIT] = ((mp_digit)1) << (b % DIGIT_BIT); + + return MP_OKAY; +} +#endif + +/* End: bn_mp_2expt.c */ + +/* Start: bn_mp_abs.c */ +#include +#ifdef BN_MP_ABS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* b = |a| + * + * Simple function copies the input and fixes the sign to positive + */ +int +mp_abs (mp_int * a, mp_int * b) +{ + int res; + + /* copy a to b */ + if (a != b) { + if ((res = mp_copy (a, b)) != MP_OKAY) { + return res; + } + } + + /* force the sign of b to positive */ + b->sign = MP_ZPOS; + + return MP_OKAY; +} +#endif + +/* End: bn_mp_abs.c */ + +/* Start: bn_mp_add.c */ +#include +#ifdef BN_MP_ADD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* high level addition (handles signs) */ +int mp_add (mp_int * a, mp_int * b, mp_int * c) +{ + int sa, sb, res; + + /* get sign of both inputs */ + sa = a->sign; + sb = b->sign; + + /* handle two cases, not four */ + if (sa == sb) { + /* both positive or both negative */ + /* add their magnitudes, copy the sign */ + c->sign = sa; + res = s_mp_add (a, b, c); + } else { + /* one positive, the other negative */ + /* subtract the one with the greater magnitude from */ + /* the one of the lesser magnitude. The result gets */ + /* the sign of the one with the greater magnitude. */ + if (mp_cmp_mag (a, b) == MP_LT) { + c->sign = sb; + res = s_mp_sub (b, a, c); + } else { + c->sign = sa; + res = s_mp_sub (a, b, c); + } + } + return res; +} + +#endif + +/* End: bn_mp_add.c */ + +/* Start: bn_mp_add_d.c */ +#include +#ifdef BN_MP_ADD_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* single digit addition */ +int +mp_add_d (mp_int * a, mp_digit b, mp_int * c) +{ + int res, ix, oldused; + mp_digit *tmpa, *tmpc, mu; + + /* grow c as required */ + if (c->alloc < a->used + 1) { + if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) { + return res; + } + } + + /* if a is negative and |a| >= b, call c = |a| - b */ + if (a->sign == MP_NEG && (a->used > 1 || a->dp[0] >= b)) { + /* temporarily fix sign of a */ + a->sign = MP_ZPOS; + + /* c = |a| - b */ + res = mp_sub_d(a, b, c); + + /* fix sign */ + a->sign = c->sign = MP_NEG; + + return res; + } + + /* old number of used digits in c */ + oldused = c->used; + + /* sign always positive */ + c->sign = MP_ZPOS; + + /* source alias */ + tmpa = a->dp; + + /* destination alias */ + tmpc = c->dp; + + /* if a is positive */ + if (a->sign == MP_ZPOS) { + /* add digit, after this we're propagating + * the carry. + */ + *tmpc = *tmpa++ + b; + mu = *tmpc >> DIGIT_BIT; + *tmpc++ &= MP_MASK; + + /* now handle rest of the digits */ + for (ix = 1; ix < a->used; ix++) { + *tmpc = *tmpa++ + mu; + mu = *tmpc >> DIGIT_BIT; + *tmpc++ &= MP_MASK; + } + /* set final carry */ + ix++; + *tmpc++ = mu; + + /* setup size */ + c->used = a->used + 1; + } else { + /* a was negative and |a| < b */ + c->used = 1; + + /* the result is a single digit */ + if (a->used == 1) { + *tmpc++ = b - a->dp[0]; + } else { + *tmpc++ = b; + } + + /* setup count so the clearing of oldused + * can fall through correctly + */ + ix = 1; + } + + /* now zero to oldused */ + while (ix++ < oldused) { + *tmpc++ = 0; + } + mp_clamp(c); + + return MP_OKAY; +} + +#endif + +/* End: bn_mp_add_d.c */ + +/* Start: bn_mp_addmod.c */ +#include +#ifdef BN_MP_ADDMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* d = a + b (mod c) */ +int +mp_addmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + int res; + mp_int t; + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_add (a, b, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + res = mp_mod (&t, c, d); + mp_clear (&t); + return res; +} +#endif + +/* End: bn_mp_addmod.c */ + +/* Start: bn_mp_and.c */ +#include +#ifdef BN_MP_AND_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* AND two ints together */ +int +mp_and (mp_int * a, mp_int * b, mp_int * c) +{ + int res, ix, px; + mp_int t, *x; + + if (a->used > b->used) { + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + px = b->used; + x = b; + } else { + if ((res = mp_init_copy (&t, b)) != MP_OKAY) { + return res; + } + px = a->used; + x = a; + } + + for (ix = 0; ix < px; ix++) { + t.dp[ix] &= x->dp[ix]; + } + + /* zero digits above the last from the smallest mp_int */ + for (; ix < t.used; ix++) { + t.dp[ix] = 0; + } + + mp_clamp (&t); + mp_exch (c, &t); + mp_clear (&t); + return MP_OKAY; +} +#endif + +/* End: bn_mp_and.c */ + +/* Start: bn_mp_clamp.c */ +#include +#ifdef BN_MP_CLAMP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* trim unused digits + * + * This is used to ensure that leading zero digits are + * trimed and the leading "used" digit will be non-zero + * Typically very fast. Also fixes the sign if there + * are no more leading digits + */ +void +mp_clamp (mp_int * a) +{ + /* decrease used while the most significant digit is + * zero. + */ + while (a->used > 0 && a->dp[a->used - 1] == 0) { + --(a->used); + } + + /* reset the sign flag if used == 0 */ + if (a->used == 0) { + a->sign = MP_ZPOS; + } +} +#endif + +/* End: bn_mp_clamp.c */ + +/* Start: bn_mp_clear.c */ +#include +#ifdef BN_MP_CLEAR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* clear one (frees) */ +void +mp_clear (mp_int * a) +{ + int i; + + /* only do anything if a hasn't been freed previously */ + if (a->dp != NULL) { + /* first zero the digits */ + for (i = 0; i < a->used; i++) { + a->dp[i] = 0; + } + + /* free ram */ + XFREE(a->dp); + + /* reset members to make debugging easier */ + a->dp = NULL; + a->alloc = a->used = 0; + a->sign = MP_ZPOS; + } +} +#endif + +/* End: bn_mp_clear.c */ + +/* Start: bn_mp_clear_multi.c */ +#include +#ifdef BN_MP_CLEAR_MULTI_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +#include + +void mp_clear_multi(mp_int *mp, ...) +{ + mp_int* next_mp = mp; + va_list args; + va_start(args, mp); + while (next_mp != NULL) { + mp_clear(next_mp); + next_mp = va_arg(args, mp_int*); + } + va_end(args); +} +#endif + +/* End: bn_mp_clear_multi.c */ + +/* Start: bn_mp_cmp.c */ +#include +#ifdef BN_MP_CMP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* compare two ints (signed)*/ +int +mp_cmp (mp_int * a, mp_int * b) +{ + /* compare based on sign */ + if (a->sign != b->sign) { + if (a->sign == MP_NEG) { + return MP_LT; + } else { + return MP_GT; + } + } + + /* compare digits */ + if (a->sign == MP_NEG) { + /* if negative compare opposite direction */ + return mp_cmp_mag(b, a); + } else { + return mp_cmp_mag(a, b); + } +} +#endif + +/* End: bn_mp_cmp.c */ + +/* Start: bn_mp_cmp_d.c */ +#include +#ifdef BN_MP_CMP_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* compare a digit */ +int mp_cmp_d(mp_int * a, mp_digit b) +{ + /* compare based on sign */ + if (a->sign == MP_NEG) { + return MP_LT; + } + + /* compare based on magnitude */ + if (a->used > 1) { + return MP_GT; + } + + /* compare the only digit of a to b */ + if (a->dp[0] > b) { + return MP_GT; + } else if (a->dp[0] < b) { + return MP_LT; + } else { + return MP_EQ; + } +} +#endif + +/* End: bn_mp_cmp_d.c */ + +/* Start: bn_mp_cmp_mag.c */ +#include +#ifdef BN_MP_CMP_MAG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* compare maginitude of two ints (unsigned) */ +int mp_cmp_mag (mp_int * a, mp_int * b) +{ + int n; + mp_digit *tmpa, *tmpb; + + /* compare based on # of non-zero digits */ + if (a->used > b->used) { + return MP_GT; + } + + if (a->used < b->used) { + return MP_LT; + } + + /* alias for a */ + tmpa = a->dp + (a->used - 1); + + /* alias for b */ + tmpb = b->dp + (a->used - 1); + + /* compare based on digits */ + for (n = 0; n < a->used; ++n, --tmpa, --tmpb) { + if (*tmpa > *tmpb) { + return MP_GT; + } + + if (*tmpa < *tmpb) { + return MP_LT; + } + } + return MP_EQ; +} +#endif + +/* End: bn_mp_cmp_mag.c */ + +/* Start: bn_mp_cnt_lsb.c */ +#include +#ifdef BN_MP_CNT_LSB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +static const int lnz[16] = { + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 +}; + +/* Counts the number of lsbs which are zero before the first zero bit */ +int mp_cnt_lsb(mp_int *a) +{ + int x; + mp_digit q, qq; + + /* easy out */ + if (mp_iszero(a) == 1) { + return 0; + } + + /* scan lower digits until non-zero */ + for (x = 0; x < a->used && a->dp[x] == 0; x++); + q = a->dp[x]; + x *= DIGIT_BIT; + + /* now scan this digit until a 1 is found */ + if ((q & 1) == 0) { + do { + qq = q & 15; + x += lnz[qq]; + q >>= 4; + } while (qq == 0); + } + return x; +} + +#endif + +/* End: bn_mp_cnt_lsb.c */ + +/* Start: bn_mp_copy.c */ +#include +#ifdef BN_MP_COPY_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* copy, b = a */ +int +mp_copy (mp_int * a, mp_int * b) +{ + int res, n; + + /* if dst == src do nothing */ + if (a == b) { + return MP_OKAY; + } + + /* grow dest */ + if (b->alloc < a->used) { + if ((res = mp_grow (b, a->used)) != MP_OKAY) { + return res; + } + } + + /* zero b and copy the parameters over */ + { + register mp_digit *tmpa, *tmpb; + + /* pointer aliases */ + + /* source */ + tmpa = a->dp; + + /* destination */ + tmpb = b->dp; + + /* copy all the digits */ + for (n = 0; n < a->used; n++) { + *tmpb++ = *tmpa++; + } + + /* clear high digits */ + for (; n < b->used; n++) { + *tmpb++ = 0; + } + } + + /* copy used count and sign */ + b->used = a->used; + b->sign = a->sign; + return MP_OKAY; +} +#endif + +/* End: bn_mp_copy.c */ + +/* Start: bn_mp_count_bits.c */ +#include +#ifdef BN_MP_COUNT_BITS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* returns the number of bits in an int */ +int +mp_count_bits (mp_int * a) +{ + int r; + mp_digit q; + + /* shortcut */ + if (a->used == 0) { + return 0; + } + + /* get number of digits and add that */ + r = (a->used - 1) * DIGIT_BIT; + + /* take the last digit and count the bits in it */ + q = a->dp[a->used - 1]; + while (q > ((mp_digit) 0)) { + ++r; + q >>= ((mp_digit) 1); + } + return r; +} +#endif + +/* End: bn_mp_count_bits.c */ + +/* Start: bn_mp_div.c */ +#include +#ifdef BN_MP_DIV_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +#ifdef BN_MP_DIV_SMALL + +/* slower bit-bang division... also smaller */ +int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + mp_int ta, tb, tq, q; + int res, n, n2; + + /* is divisor zero ? */ + if (mp_iszero (b) == 1) { + return MP_VAL; + } + + /* if a < b then q=0, r = a */ + if (mp_cmp_mag (a, b) == MP_LT) { + if (d != NULL) { + res = mp_copy (a, d); + } else { + res = MP_OKAY; + } + if (c != NULL) { + mp_zero (c); + } + return res; + } + + /* init our temps */ + if ((res = mp_init_multi(&ta, &tb, &tq, &q, NULL) != MP_OKAY)) { + return res; + } + + + mp_set(&tq, 1); + n = mp_count_bits(a) - mp_count_bits(b); + if (((res = mp_abs(a, &ta)) != MP_OKAY) || + ((res = mp_abs(b, &tb)) != MP_OKAY) || + ((res = mp_mul_2d(&tb, n, &tb)) != MP_OKAY) || + ((res = mp_mul_2d(&tq, n, &tq)) != MP_OKAY)) { + goto LBL_ERR; + } + + while (n-- >= 0) { + if (mp_cmp(&tb, &ta) != MP_GT) { + if (((res = mp_sub(&ta, &tb, &ta)) != MP_OKAY) || + ((res = mp_add(&q, &tq, &q)) != MP_OKAY)) { + goto LBL_ERR; + } + } + if (((res = mp_div_2d(&tb, 1, &tb, NULL)) != MP_OKAY) || + ((res = mp_div_2d(&tq, 1, &tq, NULL)) != MP_OKAY)) { + goto LBL_ERR; + } + } + + /* now q == quotient and ta == remainder */ + n = a->sign; + n2 = (a->sign == b->sign ? MP_ZPOS : MP_NEG); + if (c != NULL) { + mp_exch(c, &q); + c->sign = (mp_iszero(c) == MP_YES) ? MP_ZPOS : n2; + } + if (d != NULL) { + mp_exch(d, &ta); + d->sign = (mp_iszero(d) == MP_YES) ? MP_ZPOS : n; + } +LBL_ERR: + mp_clear_multi(&ta, &tb, &tq, &q, NULL); + return res; +} + +#else + +/* integer signed division. + * c*b + d == a [e.g. a/b, c=quotient, d=remainder] + * HAC pp.598 Algorithm 14.20 + * + * Note that the description in HAC is horribly + * incomplete. For example, it doesn't consider + * the case where digits are removed from 'x' in + * the inner loop. It also doesn't consider the + * case that y has fewer than three digits, etc.. + * + * The overall algorithm is as described as + * 14.20 from HAC but fixed to treat these cases. +*/ +int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + mp_int q, x, y, t1, t2; + int res, n, t, i, norm, neg; + + /* is divisor zero ? */ + if (mp_iszero (b) == 1) { + return MP_VAL; + } + + /* if a < b then q=0, r = a */ + if (mp_cmp_mag (a, b) == MP_LT) { + if (d != NULL) { + res = mp_copy (a, d); + } else { + res = MP_OKAY; + } + if (c != NULL) { + mp_zero (c); + } + return res; + } + + if ((res = mp_init_size (&q, a->used + 2)) != MP_OKAY) { + return res; + } + q.used = a->used + 2; + + if ((res = mp_init (&t1)) != MP_OKAY) { + goto LBL_Q; + } + + if ((res = mp_init (&t2)) != MP_OKAY) { + goto LBL_T1; + } + + if ((res = mp_init_copy (&x, a)) != MP_OKAY) { + goto LBL_T2; + } + + if ((res = mp_init_copy (&y, b)) != MP_OKAY) { + goto LBL_X; + } + + /* fix the sign */ + neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; + x.sign = y.sign = MP_ZPOS; + + /* normalize both x and y, ensure that y >= b/2, [b == 2**DIGIT_BIT] */ + norm = mp_count_bits(&y) % DIGIT_BIT; + if (norm < (int)(DIGIT_BIT-1)) { + norm = (DIGIT_BIT-1) - norm; + if ((res = mp_mul_2d (&x, norm, &x)) != MP_OKAY) { + goto LBL_Y; + } + if ((res = mp_mul_2d (&y, norm, &y)) != MP_OKAY) { + goto LBL_Y; + } + } else { + norm = 0; + } + + /* note hac does 0 based, so if used==5 then its 0,1,2,3,4, e.g. use 4 */ + n = x.used - 1; + t = y.used - 1; + + /* while (x >= y*b**n-t) do { q[n-t] += 1; x -= y*b**{n-t} } */ + if ((res = mp_lshd (&y, n - t)) != MP_OKAY) { /* y = y*b**{n-t} */ + goto LBL_Y; + } + + while (mp_cmp (&x, &y) != MP_LT) { + ++(q.dp[n - t]); + if ((res = mp_sub (&x, &y, &x)) != MP_OKAY) { + goto LBL_Y; + } + } + + /* reset y by shifting it back down */ + mp_rshd (&y, n - t); + + /* step 3. for i from n down to (t + 1) */ + for (i = n; i >= (t + 1); i--) { + if (i > x.used) { + continue; + } + + /* step 3.1 if xi == yt then set q{i-t-1} to b-1, + * otherwise set q{i-t-1} to (xi*b + x{i-1})/yt */ + if (x.dp[i] == y.dp[t]) { + q.dp[i - t - 1] = ((((mp_digit)1) << DIGIT_BIT) - 1); + } else { + mp_word tmp; + tmp = ((mp_word) x.dp[i]) << ((mp_word) DIGIT_BIT); + tmp |= ((mp_word) x.dp[i - 1]); + tmp /= ((mp_word) y.dp[t]); + if (tmp > (mp_word) MP_MASK) + tmp = MP_MASK; + q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK)); + } + + /* while (q{i-t-1} * (yt * b + y{t-1})) > + xi * b**2 + xi-1 * b + xi-2 + + do q{i-t-1} -= 1; + */ + q.dp[i - t - 1] = (q.dp[i - t - 1] + 1) & MP_MASK; + do { + q.dp[i - t - 1] = (q.dp[i - t - 1] - 1) & MP_MASK; + + /* find left hand */ + mp_zero (&t1); + t1.dp[0] = (t - 1 < 0) ? 0 : y.dp[t - 1]; + t1.dp[1] = y.dp[t]; + t1.used = 2; + if ((res = mp_mul_d (&t1, q.dp[i - t - 1], &t1)) != MP_OKAY) { + goto LBL_Y; + } + + /* find right hand */ + t2.dp[0] = (i - 2 < 0) ? 0 : x.dp[i - 2]; + t2.dp[1] = (i - 1 < 0) ? 0 : x.dp[i - 1]; + t2.dp[2] = x.dp[i]; + t2.used = 3; + } while (mp_cmp_mag(&t1, &t2) == MP_GT); + + /* step 3.3 x = x - q{i-t-1} * y * b**{i-t-1} */ + if ((res = mp_mul_d (&y, q.dp[i - t - 1], &t1)) != MP_OKAY) { + goto LBL_Y; + } + + if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) { + goto LBL_Y; + } + + if ((res = mp_sub (&x, &t1, &x)) != MP_OKAY) { + goto LBL_Y; + } + + /* if x < 0 then { x = x + y*b**{i-t-1}; q{i-t-1} -= 1; } */ + if (x.sign == MP_NEG) { + if ((res = mp_copy (&y, &t1)) != MP_OKAY) { + goto LBL_Y; + } + if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) { + goto LBL_Y; + } + if ((res = mp_add (&x, &t1, &x)) != MP_OKAY) { + goto LBL_Y; + } + + q.dp[i - t - 1] = (q.dp[i - t - 1] - 1UL) & MP_MASK; + } + } + + /* now q is the quotient and x is the remainder + * [which we have to normalize] + */ + + /* get sign before writing to c */ + x.sign = x.used == 0 ? MP_ZPOS : a->sign; + + if (c != NULL) { + mp_clamp (&q); + mp_exch (&q, c); + c->sign = neg; + } + + if (d != NULL) { + mp_div_2d (&x, norm, &x, NULL); + mp_exch (&x, d); + } + + res = MP_OKAY; + +LBL_Y:mp_clear (&y); +LBL_X:mp_clear (&x); +LBL_T2:mp_clear (&t2); +LBL_T1:mp_clear (&t1); +LBL_Q:mp_clear (&q); + return res; +} + +#endif + +#endif + +/* End: bn_mp_div.c */ + +/* Start: bn_mp_div_2.c */ +#include +#ifdef BN_MP_DIV_2_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* b = a/2 */ +int mp_div_2(mp_int * a, mp_int * b) +{ + int x, res, oldused; + + /* copy */ + if (b->alloc < a->used) { + if ((res = mp_grow (b, a->used)) != MP_OKAY) { + return res; + } + } + + oldused = b->used; + b->used = a->used; + { + register mp_digit r, rr, *tmpa, *tmpb; + + /* source alias */ + tmpa = a->dp + b->used - 1; + + /* dest alias */ + tmpb = b->dp + b->used - 1; + + /* carry */ + r = 0; + for (x = b->used - 1; x >= 0; x--) { + /* get the carry for the next iteration */ + rr = *tmpa & 1; + + /* shift the current digit, add in carry and store */ + *tmpb-- = (*tmpa-- >> 1) | (r << (DIGIT_BIT - 1)); + + /* forward carry to next iteration */ + r = rr; + } + + /* zero excess digits */ + tmpb = b->dp + b->used; + for (x = b->used; x < oldused; x++) { + *tmpb++ = 0; + } + } + b->sign = a->sign; + mp_clamp (b); + return MP_OKAY; +} +#endif + +/* End: bn_mp_div_2.c */ + +/* Start: bn_mp_div_2d.c */ +#include +#ifdef BN_MP_DIV_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shift right by a certain bit count (store quotient in c, optional remainder in d) */ +int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) +{ + mp_digit D, r, rr; + int x, res; + mp_int t; + + + /* if the shift count is <= 0 then we do no work */ + if (b <= 0) { + res = mp_copy (a, c); + if (d != NULL) { + mp_zero (d); + } + return res; + } + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + /* get the remainder */ + if (d != NULL) { + if ((res = mp_mod_2d (a, b, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + } + + /* copy */ + if ((res = mp_copy (a, c)) != MP_OKAY) { + mp_clear (&t); + return res; + } + + /* shift by as many digits in the bit count */ + if (b >= (int)DIGIT_BIT) { + mp_rshd (c, b / DIGIT_BIT); + } + + /* shift any bit count < DIGIT_BIT */ + D = (mp_digit) (b % DIGIT_BIT); + if (D != 0) { + register mp_digit *tmpc, mask, shift; + + /* mask */ + mask = (((mp_digit)1) << D) - 1; + + /* shift for lsb */ + shift = DIGIT_BIT - D; + + /* alias */ + tmpc = c->dp + (c->used - 1); + + /* carry */ + r = 0; + for (x = c->used - 1; x >= 0; x--) { + /* get the lower bits of this word in a temp */ + rr = *tmpc & mask; + + /* shift the current word and mix in the carry bits from the previous word */ + *tmpc = (*tmpc >> D) | (r << shift); + --tmpc; + + /* set the carry to the carry bits of the current word found above */ + r = rr; + } + } + mp_clamp (c); + if (d != NULL) { + mp_exch (&t, d); + } + mp_clear (&t); + return MP_OKAY; +} +#endif + +/* End: bn_mp_div_2d.c */ + +/* Start: bn_mp_div_3.c */ +#include +#ifdef BN_MP_DIV_3_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* divide by three (based on routine from MPI and the GMP manual) */ +int +mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) +{ + mp_int q; + mp_word w, t; + mp_digit b; + int res, ix; + + /* b = 2**DIGIT_BIT / 3 */ + b = (((mp_word)1) << ((mp_word)DIGIT_BIT)) / ((mp_word)3); + + if ((res = mp_init_size(&q, a->used)) != MP_OKAY) { + return res; + } + + q.used = a->used; + q.sign = a->sign; + w = 0; + for (ix = a->used - 1; ix >= 0; ix--) { + w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]); + + if (w >= 3) { + /* multiply w by [1/3] */ + t = (w * ((mp_word)b)) >> ((mp_word)DIGIT_BIT); + + /* now subtract 3 * [w/3] from w, to get the remainder */ + w -= t+t+t; + + /* fixup the remainder as required since + * the optimization is not exact. + */ + while (w >= 3) { + t += 1; + w -= 3; + } + } else { + t = 0; + } + q.dp[ix] = (mp_digit)t; + } + + /* [optional] store the remainder */ + if (d != NULL) { + *d = (mp_digit)w; + } + + /* [optional] store the quotient */ + if (c != NULL) { + mp_clamp(&q); + mp_exch(&q, c); + } + mp_clear(&q); + + return res; +} + +#endif + +/* End: bn_mp_div_3.c */ + +/* Start: bn_mp_div_d.c */ +#include +#ifdef BN_MP_DIV_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +static int s_is_power_of_two(mp_digit b, int *p) +{ + int x; + + for (x = 1; x < DIGIT_BIT; x++) { + if (b == (((mp_digit)1)<dp[0] & ((((mp_digit)1)<used)) != MP_OKAY) { + return res; + } + + q.used = a->used; + q.sign = a->sign; + w = 0; + for (ix = a->used - 1; ix >= 0; ix--) { + w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]); + + if (w >= b) { + t = (mp_digit)(w / b); + w -= ((mp_word)t) * ((mp_word)b); + } else { + t = 0; + } + q.dp[ix] = (mp_digit)t; + } + + if (d != NULL) { + *d = (mp_digit)w; + } + + if (c != NULL) { + mp_clamp(&q); + mp_exch(&q, c); + } + mp_clear(&q); + + return res; +} + +#endif + +/* End: bn_mp_div_d.c */ + +/* Start: bn_mp_dr_is_modulus.c */ +#include +#ifdef BN_MP_DR_IS_MODULUS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if a number is a valid DR modulus */ +int mp_dr_is_modulus(mp_int *a) +{ + int ix; + + /* must be at least two digits */ + if (a->used < 2) { + return 0; + } + + /* must be of the form b**k - a [a <= b] so all + * but the first digit must be equal to -1 (mod b). + */ + for (ix = 1; ix < a->used; ix++) { + if (a->dp[ix] != MP_MASK) { + return 0; + } + } + return 1; +} + +#endif + +/* End: bn_mp_dr_is_modulus.c */ + +/* Start: bn_mp_dr_reduce.c */ +#include +#ifdef BN_MP_DR_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduce "x" in place modulo "n" using the Diminished Radix algorithm. + * + * Based on algorithm from the paper + * + * "Generating Efficient Primes for Discrete Log Cryptosystems" + * Chae Hoon Lim, Pil Joong Lee, + * POSTECH Information Research Laboratories + * + * The modulus must be of a special format [see manual] + * + * Has been modified to use algorithm 7.10 from the LTM book instead + * + * Input x must be in the range 0 <= x <= (n-1)**2 + */ +int +mp_dr_reduce (mp_int * x, mp_int * n, mp_digit k) +{ + int err, i, m; + mp_word r; + mp_digit mu, *tmpx1, *tmpx2; + + /* m = digits in modulus */ + m = n->used; + + /* ensure that "x" has at least 2m digits */ + if (x->alloc < m + m) { + if ((err = mp_grow (x, m + m)) != MP_OKAY) { + return err; + } + } + +/* top of loop, this is where the code resumes if + * another reduction pass is required. + */ +top: + /* aliases for digits */ + /* alias for lower half of x */ + tmpx1 = x->dp; + + /* alias for upper half of x, or x/B**m */ + tmpx2 = x->dp + m; + + /* set carry to zero */ + mu = 0; + + /* compute (x mod B**m) + k * [x/B**m] inline and inplace */ + for (i = 0; i < m; i++) { + r = ((mp_word)*tmpx2++) * ((mp_word)k) + *tmpx1 + mu; + *tmpx1++ = (mp_digit)(r & MP_MASK); + mu = (mp_digit)(r >> ((mp_word)DIGIT_BIT)); + } + + /* set final carry */ + *tmpx1++ = mu; + + /* zero words above m */ + for (i = m + 1; i < x->used; i++) { + *tmpx1++ = 0; + } + + /* clamp, sub and return */ + mp_clamp (x); + + /* if x >= n then subtract and reduce again + * Each successive "recursion" makes the input smaller and smaller. + */ + if (mp_cmp_mag (x, n) != MP_LT) { + s_mp_sub(x, n, x); + goto top; + } + return MP_OKAY; +} +#endif + +/* End: bn_mp_dr_reduce.c */ + +/* Start: bn_mp_dr_setup.c */ +#include +#ifdef BN_MP_DR_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines the setup value */ +void mp_dr_setup(mp_int *a, mp_digit *d) +{ + /* the casts are required if DIGIT_BIT is one less than + * the number of bits in a mp_digit [e.g. DIGIT_BIT==31] + */ + *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) - + ((mp_word)a->dp[0])); +} + +#endif + +/* End: bn_mp_dr_setup.c */ + +/* Start: bn_mp_exch.c */ +#include +#ifdef BN_MP_EXCH_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* swap the elements of two integers, for cases where you can't simply swap the + * mp_int pointers around + */ +void +mp_exch (mp_int * a, mp_int * b) +{ + mp_int t; + + t = *a; + *a = *b; + *b = t; +} +#endif + +/* End: bn_mp_exch.c */ + +/* Start: bn_mp_expt_d.c */ +#include +#ifdef BN_MP_EXPT_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* calculate c = a**b using a square-multiply algorithm */ +int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) +{ + int res, x; + mp_int g; + + if ((res = mp_init_copy (&g, a)) != MP_OKAY) { + return res; + } + + /* set initial result */ + mp_set (c, 1); + + for (x = 0; x < (int) DIGIT_BIT; x++) { + /* square */ + if ((res = mp_sqr (c, c)) != MP_OKAY) { + mp_clear (&g); + return res; + } + + /* if the bit is set multiply */ + if ((b & (mp_digit) (((mp_digit)1) << (DIGIT_BIT - 1))) != 0) { + if ((res = mp_mul (c, &g, c)) != MP_OKAY) { + mp_clear (&g); + return res; + } + } + + /* shift to next bit */ + b <<= 1; + } + + mp_clear (&g); + return MP_OKAY; +} +#endif + +/* End: bn_mp_expt_d.c */ + +/* Start: bn_mp_exptmod.c */ +#include +#ifdef BN_MP_EXPTMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + + +/* this is a shell function that calls either the normal or Montgomery + * exptmod functions. Originally the call to the montgomery code was + * embedded in the normal function but that wasted alot of stack space + * for nothing (since 99% of the time the Montgomery code would be called) + */ +int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +{ + int dr; + + /* modulus P must be positive */ + if (P->sign == MP_NEG) { + return MP_VAL; + } + + /* if exponent X is negative we have to recurse */ + if (X->sign == MP_NEG) { +#ifdef BN_MP_INVMOD_C + mp_int tmpG, tmpX; + int err; + + /* first compute 1/G mod P */ + if ((err = mp_init(&tmpG)) != MP_OKAY) { + return err; + } + if ((err = mp_invmod(G, P, &tmpG)) != MP_OKAY) { + mp_clear(&tmpG); + return err; + } + + /* now get |X| */ + if ((err = mp_init(&tmpX)) != MP_OKAY) { + mp_clear(&tmpG); + return err; + } + if ((err = mp_abs(X, &tmpX)) != MP_OKAY) { + mp_clear_multi(&tmpG, &tmpX, NULL); + return err; + } + + /* and now compute (1/G)**|X| instead of G**X [X < 0] */ + err = mp_exptmod(&tmpG, &tmpX, P, Y); + mp_clear_multi(&tmpG, &tmpX, NULL); + return err; +#else + /* no invmod */ + return MP_VAL; +#endif + } + +#ifdef BN_MP_DR_IS_MODULUS_C + /* is it a DR modulus? */ + dr = mp_dr_is_modulus(P); +#else + dr = 0; +#endif + +#ifdef BN_MP_REDUCE_IS_2K_C + /* if not, is it a uDR modulus? */ + if (dr == 0) { + dr = mp_reduce_is_2k(P) << 1; + } +#endif + + /* if the modulus is odd or dr != 0 use the fast method */ +#ifdef BN_MP_EXPTMOD_FAST_C + if (mp_isodd (P) == 1 || dr != 0) { + return mp_exptmod_fast (G, X, P, Y, dr); + } else { +#endif +#ifdef BN_S_MP_EXPTMOD_C + /* otherwise use the generic Barrett reduction technique */ + return s_mp_exptmod (G, X, P, Y); +#else + /* no exptmod for evens */ + return MP_VAL; +#endif +#ifdef BN_MP_EXPTMOD_FAST_C + } +#endif +} + +#endif + +/* End: bn_mp_exptmod.c */ + +/* Start: bn_mp_exptmod_fast.c */ +#include +#ifdef BN_MP_EXPTMOD_FAST_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes Y == G**X mod P, HAC pp.616, Algorithm 14.85 + * + * Uses a left-to-right k-ary sliding window to compute the modular exponentiation. + * The value of k changes based on the size of the exponent. + * + * Uses Montgomery or Diminished Radix reduction [whichever appropriate] + */ + +#ifdef MP_LOW_MEM + #define TAB_SIZE 32 +#else + #define TAB_SIZE 256 +#endif + +int +mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) +{ + mp_int M[TAB_SIZE], res; + mp_digit buf, mp; + int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + + /* use a pointer to the reduction algorithm. This allows us to use + * one of many reduction algorithms without modding the guts of + * the code with if statements everywhere. + */ + int (*redux)(mp_int*,mp_int*,mp_digit); + + /* find window size */ + x = mp_count_bits (X); + if (x <= 7) { + winsize = 2; + } else if (x <= 36) { + winsize = 3; + } else if (x <= 140) { + winsize = 4; + } else if (x <= 450) { + winsize = 5; + } else if (x <= 1303) { + winsize = 6; + } else if (x <= 3529) { + winsize = 7; + } else { + winsize = 8; + } + +#ifdef MP_LOW_MEM + if (winsize > 5) { + winsize = 5; + } +#endif + + /* init M array */ + /* init first cell */ + if ((err = mp_init(&M[1])) != MP_OKAY) { + return err; + } + + /* now init the second half of the array */ + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + if ((err = mp_init(&M[x])) != MP_OKAY) { + for (y = 1<<(winsize-1); y < x; y++) { + mp_clear (&M[y]); + } + mp_clear(&M[1]); + return err; + } + } + + /* determine and setup reduction code */ + if (redmode == 0) { +#ifdef BN_MP_MONTGOMERY_SETUP_C + /* now setup montgomery */ + if ((err = mp_montgomery_setup (P, &mp)) != MP_OKAY) { + goto LBL_M; + } +#else + err = MP_VAL; + goto LBL_M; +#endif + + /* automatically pick the comba one if available (saves quite a few calls/ifs) */ +#ifdef BN_FAST_MP_MONTGOMERY_REDUCE_C + if (((P->used * 2 + 1) < MP_WARRAY) && + P->used < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + redux = fast_mp_montgomery_reduce; + } else +#endif + { +#ifdef BN_MP_MONTGOMERY_REDUCE_C + /* use slower baseline Montgomery method */ + redux = mp_montgomery_reduce; +#else + err = MP_VAL; + goto LBL_M; +#endif + } + } else if (redmode == 1) { +#if defined(BN_MP_DR_SETUP_C) && defined(BN_MP_DR_REDUCE_C) + /* setup DR reduction for moduli of the form B**k - b */ + mp_dr_setup(P, &mp); + redux = mp_dr_reduce; +#else + err = MP_VAL; + goto LBL_M; +#endif + } else { +#if defined(BN_MP_REDUCE_2K_SETUP_C) && defined(BN_MP_REDUCE_2K_C) + /* setup DR reduction for moduli of the form 2**k - b */ + if ((err = mp_reduce_2k_setup(P, &mp)) != MP_OKAY) { + goto LBL_M; + } + redux = mp_reduce_2k; +#else + err = MP_VAL; + goto LBL_M; +#endif + } + + /* setup result */ + if ((err = mp_init (&res)) != MP_OKAY) { + goto LBL_M; + } + + /* create M table + * + + * + * The first half of the table is not computed though accept for M[0] and M[1] + */ + + if (redmode == 0) { +#ifdef BN_MP_MONTGOMERY_CALC_NORMALIZATION_C + /* now we need R mod m */ + if ((err = mp_montgomery_calc_normalization (&res, P)) != MP_OKAY) { + goto LBL_RES; + } +#else + err = MP_VAL; + goto LBL_RES; +#endif + + /* now set M[1] to G * R mod m */ + if ((err = mp_mulmod (G, &res, P, &M[1])) != MP_OKAY) { + goto LBL_RES; + } + } else { + mp_set(&res, 1); + if ((err = mp_mod(G, P, &M[1])) != MP_OKAY) { + goto LBL_RES; + } + } + + /* compute the value at M[1<<(winsize-1)] by squaring M[1] (winsize-1) times */ + if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_RES; + } + + for (x = 0; x < (winsize - 1); x++) { + if ((err = mp_sqr (&M[1 << (winsize - 1)], &M[1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&M[1 << (winsize - 1)], P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* create upper table */ + for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) { + if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&M[x], P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* set initial mode and bit cnt */ + mode = 0; + bitcnt = 1; + buf = 0; + digidx = X->used - 1; + bitcpy = 0; + bitbuf = 0; + + for (;;) { + /* grab next digit as required */ + if (--bitcnt == 0) { + /* if digidx == -1 we are out of digits so break */ + if (digidx == -1) { + break; + } + /* read next digit and reset bitcnt */ + buf = X->dp[digidx--]; + bitcnt = (int)DIGIT_BIT; + } + + /* grab the next msb from the exponent */ + y = (mp_digit)(buf >> (DIGIT_BIT - 1)) & 1; + buf <<= (mp_digit)1; + + /* if the bit is zero and mode == 0 then we ignore it + * These represent the leading zero bits before the first 1 bit + * in the exponent. Technically this opt is not required but it + * does lower the # of trivial squaring/reductions used + */ + if (mode == 0 && y == 0) { + continue; + } + + /* if the bit is zero and mode == 1 then we square */ + if (mode == 1 && y == 0) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + continue; + } + + /* else we add it to the window */ + bitbuf |= (y << (winsize - ++bitcpy)); + mode = 2; + + if (bitcpy == winsize) { + /* ok window is filled so square as required and multiply */ + /* square first */ + for (x = 0; x < winsize; x++) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* then multiply */ + if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + + /* empty window and reset */ + bitcpy = 0; + bitbuf = 0; + mode = 1; + } + } + + /* if bits remain then square/multiply */ + if (mode == 2 && bitcpy > 0) { + /* square then multiply if the bit is set */ + for (x = 0; x < bitcpy; x++) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + + /* get next bit of the window */ + bitbuf <<= 1; + if ((bitbuf & (1 << winsize)) != 0) { + /* then multiply */ + if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux (&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + } + } + + if (redmode == 0) { + /* fixup result if Montgomery reduction is used + * recall that any value in a Montgomery system is + * actually multiplied by R mod n. So we have + * to reduce one more time to cancel out the factor + * of R. + */ + if ((err = redux(&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* swap res with Y */ + mp_exch (&res, Y); + err = MP_OKAY; +LBL_RES:mp_clear (&res); +LBL_M: + mp_clear(&M[1]); + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + mp_clear (&M[x]); + } + return err; +} +#endif + + +/* End: bn_mp_exptmod_fast.c */ + +/* Start: bn_mp_exteuclid.c */ +#include +#ifdef BN_MP_EXTEUCLID_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Extended euclidean algorithm of (a, b) produces + a*u1 + b*u2 = u3 + */ +int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3) +{ + mp_int u1,u2,u3,v1,v2,v3,t1,t2,t3,q,tmp; + int err; + + if ((err = mp_init_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL)) != MP_OKAY) { + return err; + } + + /* initialize, (u1,u2,u3) = (1,0,a) */ + mp_set(&u1, 1); + if ((err = mp_copy(a, &u3)) != MP_OKAY) { goto _ERR; } + + /* initialize, (v1,v2,v3) = (0,1,b) */ + mp_set(&v2, 1); + if ((err = mp_copy(b, &v3)) != MP_OKAY) { goto _ERR; } + + /* loop while v3 != 0 */ + while (mp_iszero(&v3) == MP_NO) { + /* q = u3/v3 */ + if ((err = mp_div(&u3, &v3, &q, NULL)) != MP_OKAY) { goto _ERR; } + + /* (t1,t2,t3) = (u1,u2,u3) - (v1,v2,v3)q */ + if ((err = mp_mul(&v1, &q, &tmp)) != MP_OKAY) { goto _ERR; } + if ((err = mp_sub(&u1, &tmp, &t1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_mul(&v2, &q, &tmp)) != MP_OKAY) { goto _ERR; } + if ((err = mp_sub(&u2, &tmp, &t2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_mul(&v3, &q, &tmp)) != MP_OKAY) { goto _ERR; } + if ((err = mp_sub(&u3, &tmp, &t3)) != MP_OKAY) { goto _ERR; } + + /* (u1,u2,u3) = (v1,v2,v3) */ + if ((err = mp_copy(&v1, &u1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&v2, &u2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&v3, &u3)) != MP_OKAY) { goto _ERR; } + + /* (v1,v2,v3) = (t1,t2,t3) */ + if ((err = mp_copy(&t1, &v1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&t2, &v2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&t3, &v3)) != MP_OKAY) { goto _ERR; } + } + + /* copy result out */ + if (U1 != NULL) { mp_exch(U1, &u1); } + if (U2 != NULL) { mp_exch(U2, &u2); } + if (U3 != NULL) { mp_exch(U3, &u3); } + + err = MP_OKAY; +_ERR: mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL); + return err; +} +#endif + +/* End: bn_mp_exteuclid.c */ + +/* Start: bn_mp_fread.c */ +#include +#ifdef BN_MP_FREAD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* read a bigint from a file stream in ASCII */ +int mp_fread(mp_int *a, int radix, FILE *stream) +{ + int err, ch, neg, y; + + /* clear a */ + mp_zero(a); + + /* if first digit is - then set negative */ + ch = fgetc(stream); + if (ch == '-') { + neg = MP_NEG; + ch = fgetc(stream); + } else { + neg = MP_ZPOS; + } + + for (;;) { + /* find y in the radix map */ + for (y = 0; y < radix; y++) { + if (mp_s_rmap[y] == ch) { + break; + } + } + if (y == radix) { + break; + } + + /* shift up and add */ + if ((err = mp_mul_d(a, radix, a)) != MP_OKAY) { + return err; + } + if ((err = mp_add_d(a, y, a)) != MP_OKAY) { + return err; + } + + ch = fgetc(stream); + } + if (mp_cmp_d(a, 0) != MP_EQ) { + a->sign = neg; + } + + return MP_OKAY; +} + +#endif + +/* End: bn_mp_fread.c */ + +/* Start: bn_mp_fwrite.c */ +#include +#ifdef BN_MP_FWRITE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +int mp_fwrite(mp_int *a, int radix, FILE *stream) +{ + char *buf; + int err, len, x; + + if ((err = mp_radix_size(a, radix, &len)) != MP_OKAY) { + return err; + } + + buf = OPT_CAST(char) XMALLOC (len); + if (buf == NULL) { + return MP_MEM; + } + + if ((err = mp_toradix(a, buf, radix)) != MP_OKAY) { + XFREE (buf); + return err; + } + + for (x = 0; x < len; x++) { + if (fputc(buf[x], stream) == EOF) { + XFREE (buf); + return MP_VAL; + } + } + + XFREE (buf); + return MP_OKAY; +} + +#endif + +/* End: bn_mp_fwrite.c */ + +/* Start: bn_mp_gcd.c */ +#include +#ifdef BN_MP_GCD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Greatest Common Divisor using the binary method */ +int mp_gcd (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int u, v; + int k, u_lsb, v_lsb, res; + + /* either zero than gcd is the largest */ + if (mp_iszero (a) == 1 && mp_iszero (b) == 0) { + return mp_abs (b, c); + } + if (mp_iszero (a) == 0 && mp_iszero (b) == 1) { + return mp_abs (a, c); + } + + /* optimized. At this point if a == 0 then + * b must equal zero too + */ + if (mp_iszero (a) == 1) { + mp_zero(c); + return MP_OKAY; + } + + /* get copies of a and b we can modify */ + if ((res = mp_init_copy (&u, a)) != MP_OKAY) { + return res; + } + + if ((res = mp_init_copy (&v, b)) != MP_OKAY) { + goto LBL_U; + } + + /* must be positive for the remainder of the algorithm */ + u.sign = v.sign = MP_ZPOS; + + /* B1. Find the common power of two for u and v */ + u_lsb = mp_cnt_lsb(&u); + v_lsb = mp_cnt_lsb(&v); + k = MIN(u_lsb, v_lsb); + + if (k > 0) { + /* divide the power of two out */ + if ((res = mp_div_2d(&u, k, &u, NULL)) != MP_OKAY) { + goto LBL_V; + } + + if ((res = mp_div_2d(&v, k, &v, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + /* divide any remaining factors of two out */ + if (u_lsb != k) { + if ((res = mp_div_2d(&u, u_lsb - k, &u, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + if (v_lsb != k) { + if ((res = mp_div_2d(&v, v_lsb - k, &v, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + while (mp_iszero(&v) == 0) { + /* make sure v is the largest */ + if (mp_cmp_mag(&u, &v) == MP_GT) { + /* swap u and v to make sure v is >= u */ + mp_exch(&u, &v); + } + + /* subtract smallest from largest */ + if ((res = s_mp_sub(&v, &u, &v)) != MP_OKAY) { + goto LBL_V; + } + + /* Divide out all factors of two */ + if ((res = mp_div_2d(&v, mp_cnt_lsb(&v), &v, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + /* multiply by 2**k which we divided out at the beginning */ + if ((res = mp_mul_2d (&u, k, c)) != MP_OKAY) { + goto LBL_V; + } + c->sign = MP_ZPOS; + res = MP_OKAY; +LBL_V:mp_clear (&u); +LBL_U:mp_clear (&v); + return res; +} +#endif + +/* End: bn_mp_gcd.c */ + +/* Start: bn_mp_get_int.c */ +#include +#ifdef BN_MP_GET_INT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* get the lower 32-bits of an mp_int */ +unsigned long mp_get_int(mp_int * a) +{ + int i; + unsigned long res; + + if (a->used == 0) { + return 0; + } + + /* get number of digits of the lsb we have to read */ + i = MIN(a->used,(int)((sizeof(unsigned long)*CHAR_BIT+DIGIT_BIT-1)/DIGIT_BIT))-1; + + /* get most significant digit of result */ + res = DIGIT(a,i); + + while (--i >= 0) { + res = (res << DIGIT_BIT) | DIGIT(a,i); + } + + /* force result to 32-bits always so it is consistent on non 32-bit platforms */ + return res & 0xFFFFFFFFUL; +} +#endif + +/* End: bn_mp_get_int.c */ + +/* Start: bn_mp_grow.c */ +#include +#ifdef BN_MP_GROW_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* grow as required */ +int mp_grow (mp_int * a, int size) +{ + int i; + mp_digit *tmp; + + /* if the alloc size is smaller alloc more ram */ + if (a->alloc < size) { + /* ensure there are always at least MP_PREC digits extra on top */ + size += (MP_PREC * 2) - (size % MP_PREC); + + /* reallocate the array a->dp + * + * We store the return in a temporary variable + * in case the operation failed we don't want + * to overwrite the dp member of a. + */ + tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * size); + if (tmp == NULL) { + /* reallocation failed but "a" is still valid [can be freed] */ + return MP_MEM; + } + + /* reallocation succeeded so set a->dp */ + a->dp = tmp; + + /* zero excess digits */ + i = a->alloc; + a->alloc = size; + for (; i < a->alloc; i++) { + a->dp[i] = 0; + } + } + return MP_OKAY; +} +#endif + +/* End: bn_mp_grow.c */ + +/* Start: bn_mp_init.c */ +#include +#ifdef BN_MP_INIT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* init a new mp_int */ +int mp_init (mp_int * a) +{ + int i; + + /* allocate memory required and clear it */ + a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * MP_PREC); + if (a->dp == NULL) { + return MP_MEM; + } + + /* set the digits to zero */ + for (i = 0; i < MP_PREC; i++) { + a->dp[i] = 0; + } + + /* set the used to zero, allocated digits to the default precision + * and sign to positive */ + a->used = 0; + a->alloc = MP_PREC; + a->sign = MP_ZPOS; + + return MP_OKAY; +} +#endif + +/* End: bn_mp_init.c */ + +/* Start: bn_mp_init_copy.c */ +#include +#ifdef BN_MP_INIT_COPY_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* creates "a" then copies b into it */ +int mp_init_copy (mp_int * a, mp_int * b) +{ + int res; + + if ((res = mp_init (a)) != MP_OKAY) { + return res; + } + return mp_copy (b, a); +} +#endif + +/* End: bn_mp_init_copy.c */ + +/* Start: bn_mp_init_multi.c */ +#include +#ifdef BN_MP_INIT_MULTI_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +#include + +int mp_init_multi(mp_int *mp, ...) +{ + mp_err res = MP_OKAY; /* Assume ok until proven otherwise */ + int n = 0; /* Number of ok inits */ + mp_int* cur_arg = mp; + va_list args; + + va_start(args, mp); /* init args to next argument from caller */ + while (cur_arg != NULL) { + if (mp_init(cur_arg) != MP_OKAY) { + /* Oops - error! Back-track and mp_clear what we already + succeeded in init-ing, then return error. + */ + va_list clean_args; + + /* end the current list */ + va_end(args); + + /* now start cleaning up */ + cur_arg = mp; + va_start(clean_args, mp); + while (n--) { + mp_clear(cur_arg); + cur_arg = va_arg(clean_args, mp_int*); + } + va_end(clean_args); + res = MP_MEM; + break; + } + n++; + cur_arg = va_arg(args, mp_int*); + } + va_end(args); + return res; /* Assumed ok, if error flagged above. */ +} + +#endif + +/* End: bn_mp_init_multi.c */ + +/* Start: bn_mp_init_set.c */ +#include +#ifdef BN_MP_INIT_SET_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* initialize and set a digit */ +int mp_init_set (mp_int * a, mp_digit b) +{ + int err; + if ((err = mp_init(a)) != MP_OKAY) { + return err; + } + mp_set(a, b); + return err; +} +#endif + +/* End: bn_mp_init_set.c */ + +/* Start: bn_mp_init_set_int.c */ +#include +#ifdef BN_MP_INIT_SET_INT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* initialize and set a digit */ +int mp_init_set_int (mp_int * a, unsigned long b) +{ + int err; + if ((err = mp_init(a)) != MP_OKAY) { + return err; + } + return mp_set_int(a, b); +} +#endif + +/* End: bn_mp_init_set_int.c */ + +/* Start: bn_mp_init_size.c */ +#include +#ifdef BN_MP_INIT_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* init an mp_init for a given size */ +int mp_init_size (mp_int * a, int size) +{ + int x; + + /* pad size so there are always extra digits */ + size += (MP_PREC * 2) - (size % MP_PREC); + + /* alloc mem */ + a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * size); + if (a->dp == NULL) { + return MP_MEM; + } + + /* set the members */ + a->used = 0; + a->alloc = size; + a->sign = MP_ZPOS; + + /* zero the digits */ + for (x = 0; x < size; x++) { + a->dp[x] = 0; + } + + return MP_OKAY; +} +#endif + +/* End: bn_mp_init_size.c */ + +/* Start: bn_mp_invmod.c */ +#include +#ifdef BN_MP_INVMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* hac 14.61, pp608 */ +int mp_invmod (mp_int * a, mp_int * b, mp_int * c) +{ + /* b cannot be negative */ + if (b->sign == MP_NEG || mp_iszero(b) == 1) { + return MP_VAL; + } + +#ifdef BN_FAST_MP_INVMOD_C + /* if the modulus is odd we can use a faster routine instead */ + if (mp_isodd (b) == 1) { + return fast_mp_invmod (a, b, c); + } +#endif + +#ifdef BN_MP_INVMOD_SLOW_C + return mp_invmod_slow(a, b, c); +#endif + + return MP_VAL; +} +#endif + +/* End: bn_mp_invmod.c */ + +/* Start: bn_mp_invmod_slow.c */ +#include +#ifdef BN_MP_INVMOD_SLOW_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* hac 14.61, pp608 */ +int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int x, y, u, v, A, B, C, D; + int res; + + /* b cannot be negative */ + if (b->sign == MP_NEG || mp_iszero(b) == 1) { + return MP_VAL; + } + + /* init temps */ + if ((res = mp_init_multi(&x, &y, &u, &v, + &A, &B, &C, &D, NULL)) != MP_OKAY) { + return res; + } + + /* x = a, y = b */ + if ((res = mp_copy (a, &x)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_copy (b, &y)) != MP_OKAY) { + goto LBL_ERR; + } + + /* 2. [modified] if x,y are both even then return an error! */ + if (mp_iseven (&x) == 1 && mp_iseven (&y) == 1) { + res = MP_VAL; + goto LBL_ERR; + } + + /* 3. u=x, v=y, A=1, B=0, C=0,D=1 */ + if ((res = mp_copy (&x, &u)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_copy (&y, &v)) != MP_OKAY) { + goto LBL_ERR; + } + mp_set (&A, 1); + mp_set (&D, 1); + +top: + /* 4. while u is even do */ + while (mp_iseven (&u) == 1) { + /* 4.1 u = u/2 */ + if ((res = mp_div_2 (&u, &u)) != MP_OKAY) { + goto LBL_ERR; + } + /* 4.2 if A or B is odd then */ + if (mp_isodd (&A) == 1 || mp_isodd (&B) == 1) { + /* A = (A+y)/2, B = (B-x)/2 */ + if ((res = mp_add (&A, &y, &A)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub (&B, &x, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* A = A/2, B = B/2 */ + if ((res = mp_div_2 (&A, &A)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_div_2 (&B, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 5. while v is even do */ + while (mp_iseven (&v) == 1) { + /* 5.1 v = v/2 */ + if ((res = mp_div_2 (&v, &v)) != MP_OKAY) { + goto LBL_ERR; + } + /* 5.2 if C or D is odd then */ + if (mp_isodd (&C) == 1 || mp_isodd (&D) == 1) { + /* C = (C+y)/2, D = (D-x)/2 */ + if ((res = mp_add (&C, &y, &C)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub (&D, &x, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* C = C/2, D = D/2 */ + if ((res = mp_div_2 (&C, &C)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_div_2 (&D, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 6. if u >= v then */ + if (mp_cmp (&u, &v) != MP_LT) { + /* u = u - v, A = A - C, B = B - D */ + if ((res = mp_sub (&u, &v, &u)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&A, &C, &A)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&B, &D, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } else { + /* v - v - u, C = C - A, D = D - B */ + if ((res = mp_sub (&v, &u, &v)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&C, &A, &C)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub (&D, &B, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* if not zero goto step 4 */ + if (mp_iszero (&u) == 0) + goto top; + + /* now a = C, b = D, gcd == g*v */ + + /* if v != 1 then there is no inverse */ + if (mp_cmp_d (&v, 1) != MP_EQ) { + res = MP_VAL; + goto LBL_ERR; + } + + /* if its too low */ + while (mp_cmp_d(&C, 0) == MP_LT) { + if ((res = mp_add(&C, b, &C)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* too big */ + while (mp_cmp_mag(&C, b) != MP_LT) { + if ((res = mp_sub(&C, b, &C)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* C is now the inverse */ + mp_exch (&C, c); + res = MP_OKAY; +LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL); + return res; +} +#endif + +/* End: bn_mp_invmod_slow.c */ + +/* Start: bn_mp_is_square.c */ +#include +#ifdef BN_MP_IS_SQUARE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Check if remainders are possible squares - fast exclude non-squares */ +static const char rem_128[128] = { + 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1 +}; + +static const char rem_105[105] = { + 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1 +}; + +/* Store non-zero to ret if arg is square, and zero if not */ +int mp_is_square(mp_int *arg,int *ret) +{ + int res; + mp_digit c; + mp_int t; + unsigned long r; + + /* Default to Non-square :) */ + *ret = MP_NO; + + if (arg->sign == MP_NEG) { + return MP_VAL; + } + + /* digits used? (TSD) */ + if (arg->used == 0) { + return MP_OKAY; + } + + /* First check mod 128 (suppose that DIGIT_BIT is at least 7) */ + if (rem_128[127 & DIGIT(arg,0)] == 1) { + return MP_OKAY; + } + + /* Next check mod 105 (3*5*7) */ + if ((res = mp_mod_d(arg,105,&c)) != MP_OKAY) { + return res; + } + if (rem_105[c] == 1) { + return MP_OKAY; + } + + + if ((res = mp_init_set_int(&t,11L*13L*17L*19L*23L*29L*31L)) != MP_OKAY) { + return res; + } + if ((res = mp_mod(arg,&t,&t)) != MP_OKAY) { + goto ERR; + } + r = mp_get_int(&t); + /* Check for other prime modules, note it's not an ERROR but we must + * free "t" so the easiest way is to goto ERR. We know that res + * is already equal to MP_OKAY from the mp_mod call + */ + if ( (1L<<(r%11)) & 0x5C4L ) goto ERR; + if ( (1L<<(r%13)) & 0x9E4L ) goto ERR; + if ( (1L<<(r%17)) & 0x5CE8L ) goto ERR; + if ( (1L<<(r%19)) & 0x4F50CL ) goto ERR; + if ( (1L<<(r%23)) & 0x7ACCA0L ) goto ERR; + if ( (1L<<(r%29)) & 0xC2EDD0CL ) goto ERR; + if ( (1L<<(r%31)) & 0x6DE2B848L ) goto ERR; + + /* Final check - is sqr(sqrt(arg)) == arg ? */ + if ((res = mp_sqrt(arg,&t)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sqr(&t,&t)) != MP_OKAY) { + goto ERR; + } + + *ret = (mp_cmp_mag(&t,arg) == MP_EQ) ? MP_YES : MP_NO; +ERR:mp_clear(&t); + return res; +} +#endif + +/* End: bn_mp_is_square.c */ + +/* Start: bn_mp_jacobi.c */ +#include +#ifdef BN_MP_JACOBI_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes the jacobi c = (a | n) (or Legendre if n is prime) + * HAC pp. 73 Algorithm 2.149 + */ +int mp_jacobi (mp_int * a, mp_int * p, int *c) +{ + mp_int a1, p1; + int k, s, r, res; + mp_digit residue; + + /* if p <= 0 return MP_VAL */ + if (mp_cmp_d(p, 0) != MP_GT) { + return MP_VAL; + } + + /* step 1. if a == 0, return 0 */ + if (mp_iszero (a) == 1) { + *c = 0; + return MP_OKAY; + } + + /* step 2. if a == 1, return 1 */ + if (mp_cmp_d (a, 1) == MP_EQ) { + *c = 1; + return MP_OKAY; + } + + /* default */ + s = 0; + + /* step 3. write a = a1 * 2**k */ + if ((res = mp_init_copy (&a1, a)) != MP_OKAY) { + return res; + } + + if ((res = mp_init (&p1)) != MP_OKAY) { + goto LBL_A1; + } + + /* divide out larger power of two */ + k = mp_cnt_lsb(&a1); + if ((res = mp_div_2d(&a1, k, &a1, NULL)) != MP_OKAY) { + goto LBL_P1; + } + + /* step 4. if e is even set s=1 */ + if ((k & 1) == 0) { + s = 1; + } else { + /* else set s=1 if p = 1/7 (mod 8) or s=-1 if p = 3/5 (mod 8) */ + residue = p->dp[0] & 7; + + if (residue == 1 || residue == 7) { + s = 1; + } else if (residue == 3 || residue == 5) { + s = -1; + } + } + + /* step 5. if p == 3 (mod 4) *and* a1 == 3 (mod 4) then s = -s */ + if ( ((p->dp[0] & 3) == 3) && ((a1.dp[0] & 3) == 3)) { + s = -s; + } + + /* if a1 == 1 we're done */ + if (mp_cmp_d (&a1, 1) == MP_EQ) { + *c = s; + } else { + /* n1 = n mod a1 */ + if ((res = mp_mod (p, &a1, &p1)) != MP_OKAY) { + goto LBL_P1; + } + if ((res = mp_jacobi (&p1, &a1, &r)) != MP_OKAY) { + goto LBL_P1; + } + *c = s * r; + } + + /* done */ + res = MP_OKAY; +LBL_P1:mp_clear (&p1); +LBL_A1:mp_clear (&a1); + return res; +} +#endif + +/* End: bn_mp_jacobi.c */ + +/* Start: bn_mp_karatsuba_mul.c */ +#include +#ifdef BN_MP_KARATSUBA_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* c = |a| * |b| using Karatsuba Multiplication using + * three half size multiplications + * + * Let B represent the radix [e.g. 2**DIGIT_BIT] and + * let n represent half of the number of digits in + * the min(a,b) + * + * a = a1 * B**n + a0 + * b = b1 * B**n + b0 + * + * Then, a * b => + a1b1 * B**2n + ((a1 - a0)(b1 - b0) + a0b0 + a1b1) * B + a0b0 + * + * Note that a1b1 and a0b0 are used twice and only need to be + * computed once. So in total three half size (half # of + * digit) multiplications are performed, a0b0, a1b1 and + * (a1-b1)(a0-b0) + * + * Note that a multiplication of half the digits requires + * 1/4th the number of single precision multiplications so in + * total after one call 25% of the single precision multiplications + * are saved. Note also that the call to mp_mul can end up back + * in this function if the a0, a1, b0, or b1 are above the threshold. + * This is known as divide-and-conquer and leads to the famous + * O(N**lg(3)) or O(N**1.584) work which is asymptopically lower than + * the standard O(N**2) that the baseline/comba methods use. + * Generally though the overhead of this method doesn't pay off + * until a certain size (N ~ 80) is reached. + */ +int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int x0, x1, y0, y1, t1, x0y0, x1y1; + int B, err; + + /* default the return code to an error */ + err = MP_MEM; + + /* min # of digits */ + B = MIN (a->used, b->used); + + /* now divide in two */ + B = B >> 1; + + /* init copy all the temps */ + if (mp_init_size (&x0, B) != MP_OKAY) + goto ERR; + if (mp_init_size (&x1, a->used - B) != MP_OKAY) + goto X0; + if (mp_init_size (&y0, B) != MP_OKAY) + goto X1; + if (mp_init_size (&y1, b->used - B) != MP_OKAY) + goto Y0; + + /* init temps */ + if (mp_init_size (&t1, B * 2) != MP_OKAY) + goto Y1; + if (mp_init_size (&x0y0, B * 2) != MP_OKAY) + goto T1; + if (mp_init_size (&x1y1, B * 2) != MP_OKAY) + goto X0Y0; + + /* now shift the digits */ + x0.used = y0.used = B; + x1.used = a->used - B; + y1.used = b->used - B; + + { + register int x; + register mp_digit *tmpa, *tmpb, *tmpx, *tmpy; + + /* we copy the digits directly instead of using higher level functions + * since we also need to shift the digits + */ + tmpa = a->dp; + tmpb = b->dp; + + tmpx = x0.dp; + tmpy = y0.dp; + for (x = 0; x < B; x++) { + *tmpx++ = *tmpa++; + *tmpy++ = *tmpb++; + } + + tmpx = x1.dp; + for (x = B; x < a->used; x++) { + *tmpx++ = *tmpa++; + } + + tmpy = y1.dp; + for (x = B; x < b->used; x++) { + *tmpy++ = *tmpb++; + } + } + + /* only need to clamp the lower words since by definition the + * upper words x1/y1 must have a known number of digits + */ + mp_clamp (&x0); + mp_clamp (&y0); + + /* now calc the products x0y0 and x1y1 */ + /* after this x0 is no longer required, free temp [x0==t2]! */ + if (mp_mul (&x0, &y0, &x0y0) != MP_OKAY) + goto X1Y1; /* x0y0 = x0*y0 */ + if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY) + goto X1Y1; /* x1y1 = x1*y1 */ + + /* now calc x1-x0 and y1-y0 */ + if (mp_sub (&x1, &x0, &t1) != MP_OKAY) + goto X1Y1; /* t1 = x1 - x0 */ + if (mp_sub (&y1, &y0, &x0) != MP_OKAY) + goto X1Y1; /* t2 = y1 - y0 */ + if (mp_mul (&t1, &x0, &t1) != MP_OKAY) + goto X1Y1; /* t1 = (x1 - x0) * (y1 - y0) */ + + /* add x0y0 */ + if (mp_add (&x0y0, &x1y1, &x0) != MP_OKAY) + goto X1Y1; /* t2 = x0y0 + x1y1 */ + if (mp_sub (&x0, &t1, &t1) != MP_OKAY) + goto X1Y1; /* t1 = x0y0 + x1y1 - (x1-x0)*(y1-y0) */ + + /* shift by B */ + if (mp_lshd (&t1, B) != MP_OKAY) + goto X1Y1; /* t1 = (x0y0 + x1y1 - (x1-x0)*(y1-y0))< +#ifdef BN_MP_KARATSUBA_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Karatsuba squaring, computes b = a*a using three + * half size squarings + * + * See comments of karatsuba_mul for details. It + * is essentially the same algorithm but merely + * tuned to perform recursive squarings. + */ +int mp_karatsuba_sqr (mp_int * a, mp_int * b) +{ + mp_int x0, x1, t1, t2, x0x0, x1x1; + int B, err; + + err = MP_MEM; + + /* min # of digits */ + B = a->used; + + /* now divide in two */ + B = B >> 1; + + /* init copy all the temps */ + if (mp_init_size (&x0, B) != MP_OKAY) + goto ERR; + if (mp_init_size (&x1, a->used - B) != MP_OKAY) + goto X0; + + /* init temps */ + if (mp_init_size (&t1, a->used * 2) != MP_OKAY) + goto X1; + if (mp_init_size (&t2, a->used * 2) != MP_OKAY) + goto T1; + if (mp_init_size (&x0x0, B * 2) != MP_OKAY) + goto T2; + if (mp_init_size (&x1x1, (a->used - B) * 2) != MP_OKAY) + goto X0X0; + + { + register int x; + register mp_digit *dst, *src; + + src = a->dp; + + /* now shift the digits */ + dst = x0.dp; + for (x = 0; x < B; x++) { + *dst++ = *src++; + } + + dst = x1.dp; + for (x = B; x < a->used; x++) { + *dst++ = *src++; + } + } + + x0.used = B; + x1.used = a->used - B; + + mp_clamp (&x0); + + /* now calc the products x0*x0 and x1*x1 */ + if (mp_sqr (&x0, &x0x0) != MP_OKAY) + goto X1X1; /* x0x0 = x0*x0 */ + if (mp_sqr (&x1, &x1x1) != MP_OKAY) + goto X1X1; /* x1x1 = x1*x1 */ + + /* now calc (x1-x0)**2 */ + if (mp_sub (&x1, &x0, &t1) != MP_OKAY) + goto X1X1; /* t1 = x1 - x0 */ + if (mp_sqr (&t1, &t1) != MP_OKAY) + goto X1X1; /* t1 = (x1 - x0) * (x1 - x0) */ + + /* add x0y0 */ + if (s_mp_add (&x0x0, &x1x1, &t2) != MP_OKAY) + goto X1X1; /* t2 = x0x0 + x1x1 */ + if (mp_sub (&t2, &t1, &t1) != MP_OKAY) + goto X1X1; /* t1 = x0x0 + x1x1 - (x1-x0)*(x1-x0) */ + + /* shift by B */ + if (mp_lshd (&t1, B) != MP_OKAY) + goto X1X1; /* t1 = (x0x0 + x1x1 - (x1-x0)*(x1-x0))< +#ifdef BN_MP_LCM_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes least common multiple as |a*b|/(a, b) */ +int mp_lcm (mp_int * a, mp_int * b, mp_int * c) +{ + int res; + mp_int t1, t2; + + + if ((res = mp_init_multi (&t1, &t2, NULL)) != MP_OKAY) { + return res; + } + + /* t1 = get the GCD of the two inputs */ + if ((res = mp_gcd (a, b, &t1)) != MP_OKAY) { + goto LBL_T; + } + + /* divide the smallest by the GCD */ + if (mp_cmp_mag(a, b) == MP_LT) { + /* store quotient in t2 such that t2 * b is the LCM */ + if ((res = mp_div(a, &t1, &t2, NULL)) != MP_OKAY) { + goto LBL_T; + } + res = mp_mul(b, &t2, c); + } else { + /* store quotient in t2 such that t2 * a is the LCM */ + if ((res = mp_div(b, &t1, &t2, NULL)) != MP_OKAY) { + goto LBL_T; + } + res = mp_mul(a, &t2, c); + } + + /* fix the sign to positive */ + c->sign = MP_ZPOS; + +LBL_T: + mp_clear_multi (&t1, &t2, NULL); + return res; +} +#endif + +/* End: bn_mp_lcm.c */ + +/* Start: bn_mp_lshd.c */ +#include +#ifdef BN_MP_LSHD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shift left a certain amount of digits */ +int mp_lshd (mp_int * a, int b) +{ + int x, res; + + /* if its less than zero return */ + if (b <= 0) { + return MP_OKAY; + } + + /* grow to fit the new digits */ + if (a->alloc < a->used + b) { + if ((res = mp_grow (a, a->used + b)) != MP_OKAY) { + return res; + } + } + + { + register mp_digit *top, *bottom; + + /* increment the used by the shift amount then copy upwards */ + a->used += b; + + /* top */ + top = a->dp + a->used - 1; + + /* base */ + bottom = a->dp + a->used - 1 - b; + + /* much like mp_rshd this is implemented using a sliding window + * except the window goes the otherway around. Copying from + * the bottom to the top. see bn_mp_rshd.c for more info. + */ + for (x = a->used - 1; x >= b; x--) { + *top-- = *bottom--; + } + + /* zero the lower digits */ + top = a->dp; + for (x = 0; x < b; x++) { + *top++ = 0; + } + } + return MP_OKAY; +} +#endif + +/* End: bn_mp_lshd.c */ + +/* Start: bn_mp_mod.c */ +#include +#ifdef BN_MP_MOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* c = a mod b, 0 <= c < b */ +int +mp_mod (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int t; + int res; + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_div (a, b, NULL, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + + if (t.sign != b->sign) { + res = mp_add (b, &t, c); + } else { + res = MP_OKAY; + mp_exch (&t, c); + } + + mp_clear (&t); + return res; +} +#endif + +/* End: bn_mp_mod.c */ + +/* Start: bn_mp_mod_2d.c */ +#include +#ifdef BN_MP_MOD_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* calc a value mod 2**b */ +int +mp_mod_2d (mp_int * a, int b, mp_int * c) +{ + int x, res; + + /* if b is <= 0 then zero the int */ + if (b <= 0) { + mp_zero (c); + return MP_OKAY; + } + + /* if the modulus is larger than the value than return */ + if (b >= (int) (a->used * DIGIT_BIT)) { + res = mp_copy (a, c); + return res; + } + + /* copy */ + if ((res = mp_copy (a, c)) != MP_OKAY) { + return res; + } + + /* zero digits above the last digit of the modulus */ + for (x = (b / DIGIT_BIT) + ((b % DIGIT_BIT) == 0 ? 0 : 1); x < c->used; x++) { + c->dp[x] = 0; + } + /* clear the digit that is not completely outside/inside the modulus */ + c->dp[b / DIGIT_BIT] &= + (mp_digit) ((((mp_digit) 1) << (((mp_digit) b) % DIGIT_BIT)) - ((mp_digit) 1)); + mp_clamp (c); + return MP_OKAY; +} +#endif + +/* End: bn_mp_mod_2d.c */ + +/* Start: bn_mp_mod_d.c */ +#include +#ifdef BN_MP_MOD_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +int +mp_mod_d (mp_int * a, mp_digit b, mp_digit * c) +{ + return mp_div_d(a, b, NULL, c); +} +#endif + +/* End: bn_mp_mod_d.c */ + +/* Start: bn_mp_montgomery_calc_normalization.c */ +#include +#ifdef BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* + * shifts with subtractions when the result is greater than b. + * + * The method is slightly modified to shift B unconditionally upto just under + * the leading bit of b. This saves alot of multiple precision shifting. + */ +int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) +{ + int x, bits, res; + + /* how many bits of last digit does b use */ + bits = mp_count_bits (b) % DIGIT_BIT; + + + if (b->used > 1) { + if ((res = mp_2expt (a, (b->used - 1) * DIGIT_BIT + bits - 1)) != MP_OKAY) { + return res; + } + } else { + mp_set(a, 1); + bits = 1; + } + + + /* now compute C = A * B mod b */ + for (x = bits - 1; x < (int)DIGIT_BIT; x++) { + if ((res = mp_mul_2 (a, a)) != MP_OKAY) { + return res; + } + if (mp_cmp_mag (a, b) != MP_LT) { + if ((res = s_mp_sub (a, b, a)) != MP_OKAY) { + return res; + } + } + } + + return MP_OKAY; +} +#endif + +/* End: bn_mp_montgomery_calc_normalization.c */ + +/* Start: bn_mp_montgomery_reduce.c */ +#include +#ifdef BN_MP_MONTGOMERY_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes xR**-1 == x (mod N) via Montgomery Reduction */ +int +mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +{ + int ix, res, digs; + mp_digit mu; + + /* can the fast reduction [comba] method be used? + * + * Note that unlike in mul you're safely allowed *less* + * than the available columns [255 per default] since carries + * are fixed up in the inner loop. + */ + digs = n->used * 2 + 1; + if ((digs < MP_WARRAY) && + n->used < + (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + return fast_mp_montgomery_reduce (x, n, rho); + } + + /* grow the input as required */ + if (x->alloc < digs) { + if ((res = mp_grow (x, digs)) != MP_OKAY) { + return res; + } + } + x->used = digs; + + for (ix = 0; ix < n->used; ix++) { + /* mu = ai * rho mod b + * + * The value of rho must be precalculated via + * montgomery_setup() such that + * it equals -1/n0 mod b this allows the + * following inner loop to reduce the + * input one digit at a time + */ + mu = (mp_digit) (((mp_word)x->dp[ix]) * ((mp_word)rho) & MP_MASK); + + /* a = a + mu * m * b**i */ + { + register int iy; + register mp_digit *tmpn, *tmpx, u; + register mp_word r; + + /* alias for digits of the modulus */ + tmpn = n->dp; + + /* alias for the digits of x [the input] */ + tmpx = x->dp + ix; + + /* set the carry to zero */ + u = 0; + + /* Multiply and add in place */ + for (iy = 0; iy < n->used; iy++) { + /* compute product and sum */ + r = ((mp_word)mu) * ((mp_word)*tmpn++) + + ((mp_word) u) + ((mp_word) * tmpx); + + /* get carry */ + u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); + + /* fix digit */ + *tmpx++ = (mp_digit)(r & ((mp_word) MP_MASK)); + } + /* At this point the ix'th digit of x should be zero */ + + + /* propagate carries upwards as required*/ + while (u) { + *tmpx += u; + u = *tmpx >> DIGIT_BIT; + *tmpx++ &= MP_MASK; + } + } + } + + /* at this point the n.used'th least + * significant digits of x are all zero + * which means we can shift x to the + * right by n.used digits and the + * residue is unchanged. + */ + + /* x = x/b**n.used */ + mp_clamp(x); + mp_rshd (x, n->used); + + /* if x >= n then x = x - n */ + if (mp_cmp_mag (x, n) != MP_LT) { + return s_mp_sub (x, n, x); + } + + return MP_OKAY; +} +#endif + +/* End: bn_mp_montgomery_reduce.c */ + +/* Start: bn_mp_montgomery_setup.c */ +#include +#ifdef BN_MP_MONTGOMERY_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* setups the montgomery reduction stuff */ +int +mp_montgomery_setup (mp_int * n, mp_digit * rho) +{ + mp_digit x, b; + +/* fast inversion mod 2**k + * + * Based on the fact that + * + * XA = 1 (mod 2**n) => (X(2-XA)) A = 1 (mod 2**2n) + * => 2*X*A - X*X*A*A = 1 + * => 2*(1) - (1) = 1 + */ + b = n->dp[0]; + + if ((b & 1) == 0) { + return MP_VAL; + } + + x = (((b + 2) & 4) << 1) + b; /* here x*a==1 mod 2**4 */ + x *= 2 - b * x; /* here x*a==1 mod 2**8 */ +#if !defined(MP_8BIT) + x *= 2 - b * x; /* here x*a==1 mod 2**16 */ +#endif +#if defined(MP_64BIT) || !(defined(MP_8BIT) || defined(MP_16BIT)) + x *= 2 - b * x; /* here x*a==1 mod 2**32 */ +#endif +#ifdef MP_64BIT + x *= 2 - b * x; /* here x*a==1 mod 2**64 */ +#endif + + /* rho = -1/m mod b */ + *rho = (((mp_word)1 << ((mp_word) DIGIT_BIT)) - x) & MP_MASK; + + return MP_OKAY; +} +#endif + +/* End: bn_mp_montgomery_setup.c */ + +/* Start: bn_mp_mul.c */ +#include +#ifdef BN_MP_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* high level multiplication (handles sign) */ +int mp_mul (mp_int * a, mp_int * b, mp_int * c) +{ + int res, neg; + neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; + + /* use Toom-Cook? */ +#ifdef BN_MP_TOOM_MUL_C + if (MIN (a->used, b->used) >= TOOM_MUL_CUTOFF) { + res = mp_toom_mul(a, b, c); + } else +#endif +#ifdef BN_MP_KARATSUBA_MUL_C + /* use Karatsuba? */ + if (MIN (a->used, b->used) >= KARATSUBA_MUL_CUTOFF) { + res = mp_karatsuba_mul (a, b, c); + } else +#endif + { + /* can we use the fast multiplier? + * + * The fast multiplier can be used if the output will + * have less than MP_WARRAY digits and the number of + * digits won't affect carry propagation + */ + int digs = a->used + b->used + 1; + +#ifdef BN_FAST_S_MP_MUL_DIGS_C + if ((digs < MP_WARRAY) && + MIN(a->used, b->used) <= + (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + res = fast_s_mp_mul_digs (a, b, c, digs); + } else +#endif +#ifdef BN_S_MP_MUL_DIGS_C + res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */ +#else + res = MP_VAL; +#endif + + } + c->sign = (c->used > 0) ? neg : MP_ZPOS; + return res; +} +#endif + +/* End: bn_mp_mul.c */ + +/* Start: bn_mp_mul_2.c */ +#include +#ifdef BN_MP_MUL_2_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* b = a*2 */ +int mp_mul_2(mp_int * a, mp_int * b) +{ + int x, res, oldused; + + /* grow to accomodate result */ + if (b->alloc < a->used + 1) { + if ((res = mp_grow (b, a->used + 1)) != MP_OKAY) { + return res; + } + } + + oldused = b->used; + b->used = a->used; + + { + register mp_digit r, rr, *tmpa, *tmpb; + + /* alias for source */ + tmpa = a->dp; + + /* alias for dest */ + tmpb = b->dp; + + /* carry */ + r = 0; + for (x = 0; x < a->used; x++) { + + /* get what will be the *next* carry bit from the + * MSB of the current digit + */ + rr = *tmpa >> ((mp_digit)(DIGIT_BIT - 1)); + + /* now shift up this digit, add in the carry [from the previous] */ + *tmpb++ = ((*tmpa++ << ((mp_digit)1)) | r) & MP_MASK; + + /* copy the carry that would be from the source + * digit into the next iteration + */ + r = rr; + } + + /* new leading digit? */ + if (r != 0) { + /* add a MSB which is always 1 at this point */ + *tmpb = 1; + ++(b->used); + } + + /* now zero any excess digits on the destination + * that we didn't write to + */ + tmpb = b->dp + b->used; + for (x = b->used; x < oldused; x++) { + *tmpb++ = 0; + } + } + b->sign = a->sign; + return MP_OKAY; +} +#endif + +/* End: bn_mp_mul_2.c */ + +/* Start: bn_mp_mul_2d.c */ +#include +#ifdef BN_MP_MUL_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shift left by a certain bit count */ +int mp_mul_2d (mp_int * a, int b, mp_int * c) +{ + mp_digit d; + int res; + + /* copy */ + if (a != c) { + if ((res = mp_copy (a, c)) != MP_OKAY) { + return res; + } + } + + if (c->alloc < (int)(c->used + b/DIGIT_BIT + 1)) { + if ((res = mp_grow (c, c->used + b / DIGIT_BIT + 1)) != MP_OKAY) { + return res; + } + } + + /* shift by as many digits in the bit count */ + if (b >= (int)DIGIT_BIT) { + if ((res = mp_lshd (c, b / DIGIT_BIT)) != MP_OKAY) { + return res; + } + } + + /* shift any bit count < DIGIT_BIT */ + d = (mp_digit) (b % DIGIT_BIT); + if (d != 0) { + register mp_digit *tmpc, shift, mask, r, rr; + register int x; + + /* bitmask for carries */ + mask = (((mp_digit)1) << d) - 1; + + /* shift for msbs */ + shift = DIGIT_BIT - d; + + /* alias */ + tmpc = c->dp; + + /* carry */ + r = 0; + for (x = 0; x < c->used; x++) { + /* get the higher bits of the current word */ + rr = (*tmpc >> shift) & mask; + + /* shift the current word and OR in the carry */ + *tmpc = ((*tmpc << d) | r) & MP_MASK; + ++tmpc; + + /* set the carry to the carry bits of the current word */ + r = rr; + } + + /* set final carry */ + if (r != 0) { + c->dp[(c->used)++] = r; + } + } + mp_clamp (c); + return MP_OKAY; +} +#endif + +/* End: bn_mp_mul_2d.c */ + +/* Start: bn_mp_mul_d.c */ +#include +#ifdef BN_MP_MUL_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* multiply by a digit */ +int +mp_mul_d (mp_int * a, mp_digit b, mp_int * c) +{ + mp_digit u, *tmpa, *tmpc; + mp_word r; + int ix, res, olduse; + + /* make sure c is big enough to hold a*b */ + if (c->alloc < a->used + 1) { + if ((res = mp_grow (c, a->used + 1)) != MP_OKAY) { + return res; + } + } + + /* get the original destinations used count */ + olduse = c->used; + + /* set the sign */ + c->sign = a->sign; + + /* alias for a->dp [source] */ + tmpa = a->dp; + + /* alias for c->dp [dest] */ + tmpc = c->dp; + + /* zero carry */ + u = 0; + + /* compute columns */ + for (ix = 0; ix < a->used; ix++) { + /* compute product and carry sum for this term */ + r = ((mp_word) u) + ((mp_word)*tmpa++) * ((mp_word)b); + + /* mask off higher bits to get a single digit */ + *tmpc++ = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* send carry into next iteration */ + u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); + } + + /* store final carry [if any] */ + *tmpc++ = u; + + /* now zero digits above the top */ + while (ix++ < olduse) { + *tmpc++ = 0; + } + + /* set used count */ + c->used = a->used + 1; + mp_clamp(c); + + return MP_OKAY; +} +#endif + +/* End: bn_mp_mul_d.c */ + +/* Start: bn_mp_mulmod.c */ +#include +#ifdef BN_MP_MULMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* d = a * b (mod c) */ +int +mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + int res; + mp_int t; + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_mul (a, b, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + res = mp_mod (&t, c, d); + mp_clear (&t); + return res; +} +#endif + +/* End: bn_mp_mulmod.c */ + +/* Start: bn_mp_n_root.c */ +#include +#ifdef BN_MP_N_ROOT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* find the n'th root of an integer + * + * Result found such that (c)**b <= a and (c+1)**b > a + * + * This algorithm uses Newton's approximation + * x[i+1] = x[i] - f(x[i])/f'(x[i]) + * which will find the root in log(N) time where + * each step involves a fair bit. This is not meant to + * find huge roots [square and cube, etc]. + */ +int mp_n_root (mp_int * a, mp_digit b, mp_int * c) +{ + mp_int t1, t2, t3; + int res, neg; + + /* input must be positive if b is even */ + if ((b & 1) == 0 && a->sign == MP_NEG) { + return MP_VAL; + } + + if ((res = mp_init (&t1)) != MP_OKAY) { + return res; + } + + if ((res = mp_init (&t2)) != MP_OKAY) { + goto LBL_T1; + } + + if ((res = mp_init (&t3)) != MP_OKAY) { + goto LBL_T2; + } + + /* if a is negative fudge the sign but keep track */ + neg = a->sign; + a->sign = MP_ZPOS; + + /* t2 = 2 */ + mp_set (&t2, 2); + + do { + /* t1 = t2 */ + if ((res = mp_copy (&t2, &t1)) != MP_OKAY) { + goto LBL_T3; + } + + /* t2 = t1 - ((t1**b - a) / (b * t1**(b-1))) */ + + /* t3 = t1**(b-1) */ + if ((res = mp_expt_d (&t1, b - 1, &t3)) != MP_OKAY) { + goto LBL_T3; + } + + /* numerator */ + /* t2 = t1**b */ + if ((res = mp_mul (&t3, &t1, &t2)) != MP_OKAY) { + goto LBL_T3; + } + + /* t2 = t1**b - a */ + if ((res = mp_sub (&t2, a, &t2)) != MP_OKAY) { + goto LBL_T3; + } + + /* denominator */ + /* t3 = t1**(b-1) * b */ + if ((res = mp_mul_d (&t3, b, &t3)) != MP_OKAY) { + goto LBL_T3; + } + + /* t3 = (t1**b - a)/(b * t1**(b-1)) */ + if ((res = mp_div (&t2, &t3, &t3, NULL)) != MP_OKAY) { + goto LBL_T3; + } + + if ((res = mp_sub (&t1, &t3, &t2)) != MP_OKAY) { + goto LBL_T3; + } + } while (mp_cmp (&t1, &t2) != MP_EQ); + + /* result can be off by a few so check */ + for (;;) { + if ((res = mp_expt_d (&t1, b, &t2)) != MP_OKAY) { + goto LBL_T3; + } + + if (mp_cmp (&t2, a) == MP_GT) { + if ((res = mp_sub_d (&t1, 1, &t1)) != MP_OKAY) { + goto LBL_T3; + } + } else { + break; + } + } + + /* reset the sign of a first */ + a->sign = neg; + + /* set the result */ + mp_exch (&t1, c); + + /* set the sign of the result */ + c->sign = neg; + + res = MP_OKAY; + +LBL_T3:mp_clear (&t3); +LBL_T2:mp_clear (&t2); +LBL_T1:mp_clear (&t1); + return res; +} +#endif + +/* End: bn_mp_n_root.c */ + +/* Start: bn_mp_neg.c */ +#include +#ifdef BN_MP_NEG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* b = -a */ +int mp_neg (mp_int * a, mp_int * b) +{ + int res; + if ((res = mp_copy (a, b)) != MP_OKAY) { + return res; + } + if (mp_iszero(b) != MP_YES) { + b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; + } + return MP_OKAY; +} +#endif + +/* End: bn_mp_neg.c */ + +/* Start: bn_mp_or.c */ +#include +#ifdef BN_MP_OR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* OR two ints together */ +int mp_or (mp_int * a, mp_int * b, mp_int * c) +{ + int res, ix, px; + mp_int t, *x; + + if (a->used > b->used) { + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + px = b->used; + x = b; + } else { + if ((res = mp_init_copy (&t, b)) != MP_OKAY) { + return res; + } + px = a->used; + x = a; + } + + for (ix = 0; ix < px; ix++) { + t.dp[ix] |= x->dp[ix]; + } + mp_clamp (&t); + mp_exch (c, &t); + mp_clear (&t); + return MP_OKAY; +} +#endif + +/* End: bn_mp_or.c */ + +/* Start: bn_mp_prime_fermat.c */ +#include +#ifdef BN_MP_PRIME_FERMAT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* performs one Fermat test. + * + * If "a" were prime then b**a == b (mod a) since the order of + * the multiplicative sub-group would be phi(a) = a-1. That means + * it would be the same as b**(a mod (a-1)) == b**1 == b (mod a). + * + * Sets result to 1 if the congruence holds, or zero otherwise. + */ +int mp_prime_fermat (mp_int * a, mp_int * b, int *result) +{ + mp_int t; + int err; + + /* default to composite */ + *result = MP_NO; + + /* ensure b > 1 */ + if (mp_cmp_d(b, 1) != MP_GT) { + return MP_VAL; + } + + /* init t */ + if ((err = mp_init (&t)) != MP_OKAY) { + return err; + } + + /* compute t = b**a mod a */ + if ((err = mp_exptmod (b, a, a, &t)) != MP_OKAY) { + goto LBL_T; + } + + /* is it equal to b? */ + if (mp_cmp (&t, b) == MP_EQ) { + *result = MP_YES; + } + + err = MP_OKAY; +LBL_T:mp_clear (&t); + return err; +} +#endif + +/* End: bn_mp_prime_fermat.c */ + +/* Start: bn_mp_prime_is_divisible.c */ +#include +#ifdef BN_MP_PRIME_IS_DIVISIBLE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if an integers is divisible by one + * of the first PRIME_SIZE primes or not + * + * sets result to 0 if not, 1 if yes + */ +int mp_prime_is_divisible (mp_int * a, int *result) +{ + int err, ix; + mp_digit res; + + /* default to not */ + *result = MP_NO; + + for (ix = 0; ix < PRIME_SIZE; ix++) { + /* what is a mod LBL_prime_tab[ix] */ + if ((err = mp_mod_d (a, ltm_prime_tab[ix], &res)) != MP_OKAY) { + return err; + } + + /* is the residue zero? */ + if (res == 0) { + *result = MP_YES; + return MP_OKAY; + } + } + + return MP_OKAY; +} +#endif + +/* End: bn_mp_prime_is_divisible.c */ + +/* Start: bn_mp_prime_is_prime.c */ +#include +#ifdef BN_MP_PRIME_IS_PRIME_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* performs a variable number of rounds of Miller-Rabin + * + * Probability of error after t rounds is no more than + + * + * Sets result to 1 if probably prime, 0 otherwise + */ +int mp_prime_is_prime (mp_int * a, int t, int *result) +{ + mp_int b; + int ix, err, res; + + /* default to no */ + *result = MP_NO; + + /* valid value of t? */ + if (t <= 0 || t > PRIME_SIZE) { + return MP_VAL; + } + + /* is the input equal to one of the primes in the table? */ + for (ix = 0; ix < PRIME_SIZE; ix++) { + if (mp_cmp_d(a, ltm_prime_tab[ix]) == MP_EQ) { + *result = 1; + return MP_OKAY; + } + } + + /* first perform trial division */ + if ((err = mp_prime_is_divisible (a, &res)) != MP_OKAY) { + return err; + } + + /* return if it was trivially divisible */ + if (res == MP_YES) { + return MP_OKAY; + } + + /* now perform the miller-rabin rounds */ + if ((err = mp_init (&b)) != MP_OKAY) { + return err; + } + + for (ix = 0; ix < t; ix++) { + /* set the prime */ + mp_set (&b, ltm_prime_tab[ix]); + + if ((err = mp_prime_miller_rabin (a, &b, &res)) != MP_OKAY) { + goto LBL_B; + } + + if (res == MP_NO) { + goto LBL_B; + } + } + + /* passed the test */ + *result = MP_YES; +LBL_B:mp_clear (&b); + return err; +} +#endif + +/* End: bn_mp_prime_is_prime.c */ + +/* Start: bn_mp_prime_miller_rabin.c */ +#include +#ifdef BN_MP_PRIME_MILLER_RABIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Miller-Rabin test of "a" to the base of "b" as described in + * HAC pp. 139 Algorithm 4.24 + * + * Sets result to 0 if definitely composite or 1 if probably prime. + * Randomly the chance of error is no more than 1/4 and often + * very much lower. + */ +int mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result) +{ + mp_int n1, y, r; + int s, j, err; + + /* default */ + *result = MP_NO; + + /* ensure b > 1 */ + if (mp_cmp_d(b, 1) != MP_GT) { + return MP_VAL; + } + + /* get n1 = a - 1 */ + if ((err = mp_init_copy (&n1, a)) != MP_OKAY) { + return err; + } + if ((err = mp_sub_d (&n1, 1, &n1)) != MP_OKAY) { + goto LBL_N1; + } + + /* set 2**s * r = n1 */ + if ((err = mp_init_copy (&r, &n1)) != MP_OKAY) { + goto LBL_N1; + } + + /* count the number of least significant bits + * which are zero + */ + s = mp_cnt_lsb(&r); + + /* now divide n - 1 by 2**s */ + if ((err = mp_div_2d (&r, s, &r, NULL)) != MP_OKAY) { + goto LBL_R; + } + + /* compute y = b**r mod a */ + if ((err = mp_init (&y)) != MP_OKAY) { + goto LBL_R; + } + if ((err = mp_exptmod (b, &r, a, &y)) != MP_OKAY) { + goto LBL_Y; + } + + /* if y != 1 and y != n1 do */ + if (mp_cmp_d (&y, 1) != MP_EQ && mp_cmp (&y, &n1) != MP_EQ) { + j = 1; + /* while j <= s-1 and y != n1 */ + while ((j <= (s - 1)) && mp_cmp (&y, &n1) != MP_EQ) { + if ((err = mp_sqrmod (&y, a, &y)) != MP_OKAY) { + goto LBL_Y; + } + + /* if y == 1 then composite */ + if (mp_cmp_d (&y, 1) == MP_EQ) { + goto LBL_Y; + } + + ++j; + } + + /* if y != n1 then composite */ + if (mp_cmp (&y, &n1) != MP_EQ) { + goto LBL_Y; + } + } + + /* probably prime now */ + *result = MP_YES; +LBL_Y:mp_clear (&y); +LBL_R:mp_clear (&r); +LBL_N1:mp_clear (&n1); + return err; +} +#endif + +/* End: bn_mp_prime_miller_rabin.c */ + +/* Start: bn_mp_prime_next_prime.c */ +#include +#ifdef BN_MP_PRIME_NEXT_PRIME_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* finds the next prime after the number "a" using "t" trials + * of Miller-Rabin. + * + * bbs_style = 1 means the prime must be congruent to 3 mod 4 + */ +int mp_prime_next_prime(mp_int *a, int t, int bbs_style) +{ + int err, res, x, y; + mp_digit res_tab[PRIME_SIZE], step, kstep; + mp_int b; + + /* ensure t is valid */ + if (t <= 0 || t > PRIME_SIZE) { + return MP_VAL; + } + + /* force positive */ + a->sign = MP_ZPOS; + + /* simple algo if a is less than the largest prime in the table */ + if (mp_cmp_d(a, ltm_prime_tab[PRIME_SIZE-1]) == MP_LT) { + /* find which prime it is bigger than */ + for (x = PRIME_SIZE - 2; x >= 0; x--) { + if (mp_cmp_d(a, ltm_prime_tab[x]) != MP_LT) { + if (bbs_style == 1) { + /* ok we found a prime smaller or + * equal [so the next is larger] + * + * however, the prime must be + * congruent to 3 mod 4 + */ + if ((ltm_prime_tab[x + 1] & 3) != 3) { + /* scan upwards for a prime congruent to 3 mod 4 */ + for (y = x + 1; y < PRIME_SIZE; y++) { + if ((ltm_prime_tab[y] & 3) == 3) { + mp_set(a, ltm_prime_tab[y]); + return MP_OKAY; + } + } + } + } else { + mp_set(a, ltm_prime_tab[x + 1]); + return MP_OKAY; + } + } + } + /* at this point a maybe 1 */ + if (mp_cmp_d(a, 1) == MP_EQ) { + mp_set(a, 2); + return MP_OKAY; + } + /* fall through to the sieve */ + } + + /* generate a prime congruent to 3 mod 4 or 1/3 mod 4? */ + if (bbs_style == 1) { + kstep = 4; + } else { + kstep = 2; + } + + /* at this point we will use a combination of a sieve and Miller-Rabin */ + + if (bbs_style == 1) { + /* if a mod 4 != 3 subtract the correct value to make it so */ + if ((a->dp[0] & 3) != 3) { + if ((err = mp_sub_d(a, (a->dp[0] & 3) + 1, a)) != MP_OKAY) { return err; }; + } + } else { + if (mp_iseven(a) == 1) { + /* force odd */ + if ((err = mp_sub_d(a, 1, a)) != MP_OKAY) { + return err; + } + } + } + + /* generate the restable */ + for (x = 1; x < PRIME_SIZE; x++) { + if ((err = mp_mod_d(a, ltm_prime_tab[x], res_tab + x)) != MP_OKAY) { + return err; + } + } + + /* init temp used for Miller-Rabin Testing */ + if ((err = mp_init(&b)) != MP_OKAY) { + return err; + } + + for (;;) { + /* skip to the next non-trivially divisible candidate */ + step = 0; + do { + /* y == 1 if any residue was zero [e.g. cannot be prime] */ + y = 0; + + /* increase step to next candidate */ + step += kstep; + + /* compute the new residue without using division */ + for (x = 1; x < PRIME_SIZE; x++) { + /* add the step to each residue */ + res_tab[x] += kstep; + + /* subtract the modulus [instead of using division] */ + if (res_tab[x] >= ltm_prime_tab[x]) { + res_tab[x] -= ltm_prime_tab[x]; + } + + /* set flag if zero */ + if (res_tab[x] == 0) { + y = 1; + } + } + } while (y == 1 && step < ((((mp_digit)1)<= ((((mp_digit)1)< +#ifdef BN_MP_PRIME_RABIN_MILLER_TRIALS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + + +static const struct { + int k, t; +} sizes[] = { +{ 128, 28 }, +{ 256, 16 }, +{ 384, 10 }, +{ 512, 7 }, +{ 640, 6 }, +{ 768, 5 }, +{ 896, 4 }, +{ 1024, 4 } +}; + +/* returns # of RM trials required for a given bit size */ +int mp_prime_rabin_miller_trials(int size) +{ + int x; + + for (x = 0; x < (int)(sizeof(sizes)/(sizeof(sizes[0]))); x++) { + if (sizes[x].k == size) { + return sizes[x].t; + } else if (sizes[x].k > size) { + return (x == 0) ? sizes[0].t : sizes[x - 1].t; + } + } + return sizes[x-1].t + 1; +} + + +#endif + +/* End: bn_mp_prime_rabin_miller_trials.c */ + +/* Start: bn_mp_prime_random_ex.c */ +#include +#ifdef BN_MP_PRIME_RANDOM_EX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* makes a truly random prime of a given size (bits), + * + * Flags are as follows: + * + * LTM_PRIME_BBS - make prime congruent to 3 mod 4 + * LTM_PRIME_SAFE - make sure (p-1)/2 is prime as well (implies LTM_PRIME_BBS) + * LTM_PRIME_2MSB_OFF - make the 2nd highest bit zero + * LTM_PRIME_2MSB_ON - make the 2nd highest bit one + * + * You have to supply a callback which fills in a buffer with random bytes. "dat" is a parameter you can + * have passed to the callback (e.g. a state or something). This function doesn't use "dat" itself + * so it can be NULL + * + */ + +/* This is possibly the mother of all prime generation functions, muahahahahaha! */ +int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback cb, void *dat) +{ + unsigned char *tmp, maskAND, maskOR_msb, maskOR_lsb; + int res, err, bsize, maskOR_msb_offset; + + /* sanity check the input */ + if (size <= 1 || t <= 0) { + return MP_VAL; + } + + /* LTM_PRIME_SAFE implies LTM_PRIME_BBS */ + if (flags & LTM_PRIME_SAFE) { + flags |= LTM_PRIME_BBS; + } + + /* calc the byte size */ + bsize = (size>>3) + ((size&7)?1:0); + + /* we need a buffer of bsize bytes */ + tmp = OPT_CAST(unsigned char) XMALLOC(bsize); + if (tmp == NULL) { + return MP_MEM; + } + + /* calc the maskAND value for the MSbyte*/ + maskAND = ((size&7) == 0) ? 0xFF : (0xFF >> (8 - (size & 7))); + + /* calc the maskOR_msb */ + maskOR_msb = 0; + maskOR_msb_offset = (size - 2) >> 3; + if (flags & LTM_PRIME_2MSB_ON) { + maskOR_msb |= 1 << ((size - 2) & 7); + } else if (flags & LTM_PRIME_2MSB_OFF) { + maskAND &= ~(1 << ((size - 2) & 7)); + } + + /* get the maskOR_lsb */ + maskOR_lsb = 0; + if (flags & LTM_PRIME_BBS) { + maskOR_lsb |= 3; + } + + do { + /* read the bytes */ + if (cb(tmp, bsize, dat) != bsize) { + err = MP_VAL; + goto error; + } + + /* work over the MSbyte */ + tmp[0] &= maskAND; + tmp[0] |= 1 << ((size - 1) & 7); + + /* mix in the maskORs */ + tmp[maskOR_msb_offset] |= maskOR_msb; + tmp[bsize-1] |= maskOR_lsb; + + /* read it in */ + if ((err = mp_read_unsigned_bin(a, tmp, bsize)) != MP_OKAY) { goto error; } + + /* is it prime? */ + if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY) { goto error; } + if (res == MP_NO) { + continue; + } + + if (flags & LTM_PRIME_SAFE) { + /* see if (a-1)/2 is prime */ + if ((err = mp_sub_d(a, 1, a)) != MP_OKAY) { goto error; } + if ((err = mp_div_2(a, a)) != MP_OKAY) { goto error; } + + /* is it prime? */ + if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY) { goto error; } + } + } while (res == MP_NO); + + if (flags & LTM_PRIME_SAFE) { + /* restore a to the original value */ + if ((err = mp_mul_2(a, a)) != MP_OKAY) { goto error; } + if ((err = mp_add_d(a, 1, a)) != MP_OKAY) { goto error; } + } + + err = MP_OKAY; +error: + XFREE(tmp); + return err; +} + + +#endif + +/* End: bn_mp_prime_random_ex.c */ + +/* Start: bn_mp_radix_size.c */ +#include +#ifdef BN_MP_RADIX_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* returns size of ASCII reprensentation */ +int mp_radix_size (mp_int * a, int radix, int *size) +{ + int res, digs; + mp_int t; + mp_digit d; + + *size = 0; + + /* special case for binary */ + if (radix == 2) { + *size = mp_count_bits (a) + (a->sign == MP_NEG ? 1 : 0) + 1; + return MP_OKAY; + } + + /* make sure the radix is in range */ + if (radix < 2 || radix > 64) { + return MP_VAL; + } + + /* init a copy of the input */ + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + /* digs is the digit count */ + digs = 0; + + /* if it's negative add one for the sign */ + if (t.sign == MP_NEG) { + ++digs; + t.sign = MP_ZPOS; + } + + /* fetch out all of the digits */ + while (mp_iszero (&t) == 0) { + if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { + mp_clear (&t); + return res; + } + ++digs; + } + mp_clear (&t); + + /* return digs + 1, the 1 is for the NULL byte that would be required. */ + *size = digs + 1; + return MP_OKAY; +} + +#endif + +/* End: bn_mp_radix_size.c */ + +/* Start: bn_mp_radix_smap.c */ +#include +#ifdef BN_MP_RADIX_SMAP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* chars used in radix conversions */ +const char *mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; +#endif + +/* End: bn_mp_radix_smap.c */ + +/* Start: bn_mp_rand.c */ +#include +#ifdef BN_MP_RAND_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* makes a pseudo-random int of a given size */ +int +mp_rand (mp_int * a, int digits) +{ + int res; + mp_digit d; + + mp_zero (a); + if (digits <= 0) { + return MP_OKAY; + } + + /* first place a random non-zero digit */ + do { + d = ((mp_digit) abs (rand ())); + } while (d == 0); + + if ((res = mp_add_d (a, d, a)) != MP_OKAY) { + return res; + } + + while (digits-- > 0) { + if ((res = mp_lshd (a, 1)) != MP_OKAY) { + return res; + } + + if ((res = mp_add_d (a, ((mp_digit) abs (rand ())), a)) != MP_OKAY) { + return res; + } + } + + return MP_OKAY; +} +#endif + +/* End: bn_mp_rand.c */ + +/* Start: bn_mp_read_radix.c */ +#include +#ifdef BN_MP_READ_RADIX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* read a string [ASCII] in a given radix */ +int mp_read_radix (mp_int * a, char *str, int radix) +{ + int y, res, neg; + char ch; + + /* make sure the radix is ok */ + if (radix < 2 || radix > 64) { + return MP_VAL; + } + + /* if the leading digit is a + * minus set the sign to negative. + */ + if (*str == '-') { + ++str; + neg = MP_NEG; + } else { + neg = MP_ZPOS; + } + + /* set the integer to the default of zero */ + mp_zero (a); + + /* process each digit of the string */ + while (*str) { + /* if the radix < 36 the conversion is case insensitive + * this allows numbers like 1AB and 1ab to represent the same value + * [e.g. in hex] + */ + ch = (char) ((radix < 36) ? toupper (*str) : *str); + for (y = 0; y < 64; y++) { + if (ch == mp_s_rmap[y]) { + break; + } + } + + /* if the char was found in the map + * and is less than the given radix add it + * to the number, otherwise exit the loop. + */ + if (y < radix) { + if ((res = mp_mul_d (a, (mp_digit) radix, a)) != MP_OKAY) { + return res; + } + if ((res = mp_add_d (a, (mp_digit) y, a)) != MP_OKAY) { + return res; + } + } else { + break; + } + ++str; + } + + /* set the sign only if a != 0 */ + if (mp_iszero(a) != 1) { + a->sign = neg; + } + return MP_OKAY; +} +#endif + +/* End: bn_mp_read_radix.c */ + +/* Start: bn_mp_read_signed_bin.c */ +#include +#ifdef BN_MP_READ_SIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* read signed bin, big endian, first byte is 0==positive or 1==negative */ +int +mp_read_signed_bin (mp_int * a, unsigned char *b, int c) +{ + int res; + + /* read magnitude */ + if ((res = mp_read_unsigned_bin (a, b + 1, c - 1)) != MP_OKAY) { + return res; + } + + /* first byte is 0 for positive, non-zero for negative */ + if (b[0] == 0) { + a->sign = MP_ZPOS; + } else { + a->sign = MP_NEG; + } + + return MP_OKAY; +} +#endif + +/* End: bn_mp_read_signed_bin.c */ + +/* Start: bn_mp_read_unsigned_bin.c */ +#include +#ifdef BN_MP_READ_UNSIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reads a unsigned char array, assumes the msb is stored first [big endian] */ +int +mp_read_unsigned_bin (mp_int * a, unsigned char *b, int c) +{ + int res; + + /* make sure there are at least two digits */ + if (a->alloc < 2) { + if ((res = mp_grow(a, 2)) != MP_OKAY) { + return res; + } + } + + /* zero the int */ + mp_zero (a); + + /* read the bytes in */ + while (c-- > 0) { + if ((res = mp_mul_2d (a, 8, a)) != MP_OKAY) { + return res; + } + +#ifndef MP_8BIT + a->dp[0] |= *b++; + a->used += 1; +#else + a->dp[0] = (*b & MP_MASK); + a->dp[1] |= ((*b++ >> 7U) & 1); + a->used += 2; +#endif + } + mp_clamp (a); + return MP_OKAY; +} +#endif + +/* End: bn_mp_read_unsigned_bin.c */ + +/* Start: bn_mp_reduce.c */ +#include +#ifdef BN_MP_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduces x mod m, assumes 0 < x < m**2, mu is + * precomputed via mp_reduce_setup. + * From HAC pp.604 Algorithm 14.42 + */ +int +mp_reduce (mp_int * x, mp_int * m, mp_int * mu) +{ + mp_int q; + int res, um = m->used; + + /* q = x */ + if ((res = mp_init_copy (&q, x)) != MP_OKAY) { + return res; + } + + /* q1 = x / b**(k-1) */ + mp_rshd (&q, um - 1); + + /* according to HAC this optimization is ok */ + if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) { + if ((res = mp_mul (&q, mu, &q)) != MP_OKAY) { + goto CLEANUP; + } + } else { +#ifdef BN_S_MP_MUL_HIGH_DIGS_C + if ((res = s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) { + goto CLEANUP; + } +#elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) + if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) { + goto CLEANUP; + } +#else + { + res = MP_VAL; + goto CLEANUP; + } +#endif + } + + /* q3 = q2 / b**(k+1) */ + mp_rshd (&q, um + 1); + + /* x = x mod b**(k+1), quick (no division) */ + if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) { + goto CLEANUP; + } + + /* q = q * m mod b**(k+1), quick (no division) */ + if ((res = s_mp_mul_digs (&q, m, &q, um + 1)) != MP_OKAY) { + goto CLEANUP; + } + + /* x = x - q */ + if ((res = mp_sub (x, &q, x)) != MP_OKAY) { + goto CLEANUP; + } + + /* If x < 0, add b**(k+1) to it */ + if (mp_cmp_d (x, 0) == MP_LT) { + mp_set (&q, 1); + if ((res = mp_lshd (&q, um + 1)) != MP_OKAY) + goto CLEANUP; + if ((res = mp_add (x, &q, x)) != MP_OKAY) + goto CLEANUP; + } + + /* Back off if it's too big */ + while (mp_cmp (x, m) != MP_LT) { + if ((res = s_mp_sub (x, m, x)) != MP_OKAY) { + goto CLEANUP; + } + } + +CLEANUP: + mp_clear (&q); + + return res; +} +#endif + +/* End: bn_mp_reduce.c */ + +/* Start: bn_mp_reduce_2k.c */ +#include +#ifdef BN_MP_REDUCE_2K_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduces a modulo n where n is of the form 2**p - d */ +int +mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) +{ + mp_int q; + int p, res; + + if ((res = mp_init(&q)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(n); +top: + /* q = a/2**p, a = a mod 2**p */ + if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { + goto ERR; + } + + if (d != 1) { + /* q = q * d */ + if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) { + goto ERR; + } + } + + /* a = a + q */ + if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { + goto ERR; + } + + if (mp_cmp_mag(a, n) != MP_LT) { + s_mp_sub(a, n, a); + goto top; + } + +ERR: + mp_clear(&q); + return res; +} + +#endif + +/* End: bn_mp_reduce_2k.c */ + +/* Start: bn_mp_reduce_2k_setup.c */ +#include +#ifdef BN_MP_REDUCE_2K_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines the setup value */ +int +mp_reduce_2k_setup(mp_int *a, mp_digit *d) +{ + int res, p; + mp_int tmp; + + if ((res = mp_init(&tmp)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(a); + if ((res = mp_2expt(&tmp, p)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + + if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + + *d = tmp.dp[0]; + mp_clear(&tmp); + return MP_OKAY; +} +#endif + +/* End: bn_mp_reduce_2k_setup.c */ + +/* Start: bn_mp_reduce_is_2k.c */ +#include +#ifdef BN_MP_REDUCE_IS_2K_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if mp_reduce_2k can be used */ +int mp_reduce_is_2k(mp_int *a) +{ + int ix, iy, iw; + mp_digit iz; + + if (a->used == 0) { + return 0; + } else if (a->used == 1) { + return 1; + } else if (a->used > 1) { + iy = mp_count_bits(a); + iz = 1; + iw = 1; + + /* Test every bit from the second digit up, must be 1 */ + for (ix = DIGIT_BIT; ix < iy; ix++) { + if ((a->dp[iw] & iz) == 0) { + return 0; + } + iz <<= 1; + if (iz > (mp_digit)MP_MASK) { + ++iw; + iz = 1; + } + } + } + return 1; +} + +#endif + +/* End: bn_mp_reduce_is_2k.c */ + +/* Start: bn_mp_reduce_setup.c */ +#include +#ifdef BN_MP_REDUCE_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* pre-calculate the value required for Barrett reduction + * For a given modulus "b" it calulates the value required in "a" + */ +int mp_reduce_setup (mp_int * a, mp_int * b) +{ + int res; + + if ((res = mp_2expt (a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) { + return res; + } + return mp_div (a, b, a, NULL); +} +#endif + +/* End: bn_mp_reduce_setup.c */ + +/* Start: bn_mp_rshd.c */ +#include +#ifdef BN_MP_RSHD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shift right a certain amount of digits */ +void mp_rshd (mp_int * a, int b) +{ + int x; + + /* if b <= 0 then ignore it */ + if (b <= 0) { + return; + } + + /* if b > used then simply zero it and return */ + if (a->used <= b) { + mp_zero (a); + return; + } + + { + register mp_digit *bottom, *top; + + /* shift the digits down */ + + /* bottom */ + bottom = a->dp; + + /* top [offset into digits] */ + top = a->dp + b; + + /* this is implemented as a sliding window where + * the window is b-digits long and digits from + * the top of the window are copied to the bottom + * + * e.g. + + b-2 | b-1 | b0 | b1 | b2 | ... | bb | ----> + /\ | ----> + \-------------------/ ----> + */ + for (x = 0; x < (a->used - b); x++) { + *bottom++ = *top++; + } + + /* zero the top digits */ + for (; x < a->used; x++) { + *bottom++ = 0; + } + } + + /* remove excess digits */ + a->used -= b; +} +#endif + +/* End: bn_mp_rshd.c */ + +/* Start: bn_mp_set.c */ +#include +#ifdef BN_MP_SET_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* set to a digit */ +void mp_set (mp_int * a, mp_digit b) +{ + mp_zero (a); + a->dp[0] = b & MP_MASK; + a->used = (a->dp[0] != 0) ? 1 : 0; +} +#endif + +/* End: bn_mp_set.c */ + +/* Start: bn_mp_set_int.c */ +#include +#ifdef BN_MP_SET_INT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* set a 32-bit const */ +int mp_set_int (mp_int * a, unsigned long b) +{ + int x, res; + + mp_zero (a); + + /* set four bits at a time */ + for (x = 0; x < 8; x++) { + /* shift the number up four bits */ + if ((res = mp_mul_2d (a, 4, a)) != MP_OKAY) { + return res; + } + + /* OR in the top four bits of the source */ + a->dp[0] |= (b >> 28) & 15; + + /* shift the source up to the next four bits */ + b <<= 4; + + /* ensure that digits are not clamped off */ + a->used += 1; + } + mp_clamp (a); + return MP_OKAY; +} +#endif + +/* End: bn_mp_set_int.c */ + +/* Start: bn_mp_shrink.c */ +#include +#ifdef BN_MP_SHRINK_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* shrink a bignum */ +int mp_shrink (mp_int * a) +{ + mp_digit *tmp; + if (a->alloc != a->used && a->used > 0) { + if ((tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * a->used)) == NULL) { + return MP_MEM; + } + a->dp = tmp; + a->alloc = a->used; + } + return MP_OKAY; +} +#endif + +/* End: bn_mp_shrink.c */ + +/* Start: bn_mp_signed_bin_size.c */ +#include +#ifdef BN_MP_SIGNED_BIN_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* get the size for an signed equivalent */ +int mp_signed_bin_size (mp_int * a) +{ + return 1 + mp_unsigned_bin_size (a); +} +#endif + +/* End: bn_mp_signed_bin_size.c */ + +/* Start: bn_mp_sqr.c */ +#include +#ifdef BN_MP_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* computes b = a*a */ +int +mp_sqr (mp_int * a, mp_int * b) +{ + int res; + +#ifdef BN_MP_TOOM_SQR_C + /* use Toom-Cook? */ + if (a->used >= TOOM_SQR_CUTOFF) { + res = mp_toom_sqr(a, b); + /* Karatsuba? */ + } else +#endif +#ifdef BN_MP_KARATSUBA_SQR_C +if (a->used >= KARATSUBA_SQR_CUTOFF) { + res = mp_karatsuba_sqr (a, b); + } else +#endif + { +#ifdef BN_FAST_S_MP_SQR_C + /* can we use the fast comba multiplier? */ + if ((a->used * 2 + 1) < MP_WARRAY && + a->used < + (1 << (sizeof(mp_word) * CHAR_BIT - 2*DIGIT_BIT - 1))) { + res = fast_s_mp_sqr (a, b); + } else +#endif +#ifdef BN_S_MP_SQR_C + res = s_mp_sqr (a, b); +#else + res = MP_VAL; +#endif + } + b->sign = MP_ZPOS; + return res; +} +#endif + +/* End: bn_mp_sqr.c */ + +/* Start: bn_mp_sqrmod.c */ +#include +#ifdef BN_MP_SQRMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* c = a * a (mod b) */ +int +mp_sqrmod (mp_int * a, mp_int * b, mp_int * c) +{ + int res; + mp_int t; + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_sqr (a, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + res = mp_mod (&t, b, c); + mp_clear (&t); + return res; +} +#endif + +/* End: bn_mp_sqrmod.c */ + +/* Start: bn_mp_sqrt.c */ +#include +#ifdef BN_MP_SQRT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* this function is less generic than mp_n_root, simpler and faster */ +int mp_sqrt(mp_int *arg, mp_int *ret) +{ + int res; + mp_int t1,t2; + + /* must be positive */ + if (arg->sign == MP_NEG) { + return MP_VAL; + } + + /* easy out */ + if (mp_iszero(arg) == MP_YES) { + mp_zero(ret); + return MP_OKAY; + } + + if ((res = mp_init_copy(&t1, arg)) != MP_OKAY) { + return res; + } + + if ((res = mp_init(&t2)) != MP_OKAY) { + goto E2; + } + + /* First approx. (not very bad for large arg) */ + mp_rshd (&t1,t1.used/2); + + /* t1 > 0 */ + if ((res = mp_div(arg,&t1,&t2,NULL)) != MP_OKAY) { + goto E1; + } + if ((res = mp_add(&t1,&t2,&t1)) != MP_OKAY) { + goto E1; + } + if ((res = mp_div_2(&t1,&t1)) != MP_OKAY) { + goto E1; + } + /* And now t1 > sqrt(arg) */ + do { + if ((res = mp_div(arg,&t1,&t2,NULL)) != MP_OKAY) { + goto E1; + } + if ((res = mp_add(&t1,&t2,&t1)) != MP_OKAY) { + goto E1; + } + if ((res = mp_div_2(&t1,&t1)) != MP_OKAY) { + goto E1; + } + /* t1 >= sqrt(arg) >= t2 at this point */ + } while (mp_cmp_mag(&t1,&t2) == MP_GT); + + mp_exch(&t1,ret); + +E1: mp_clear(&t2); +E2: mp_clear(&t1); + return res; +} + +#endif + +/* End: bn_mp_sqrt.c */ + +/* Start: bn_mp_sub.c */ +#include +#ifdef BN_MP_SUB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* high level subtraction (handles signs) */ +int +mp_sub (mp_int * a, mp_int * b, mp_int * c) +{ + int sa, sb, res; + + sa = a->sign; + sb = b->sign; + + if (sa != sb) { + /* subtract a negative from a positive, OR */ + /* subtract a positive from a negative. */ + /* In either case, ADD their magnitudes, */ + /* and use the sign of the first number. */ + c->sign = sa; + res = s_mp_add (a, b, c); + } else { + /* subtract a positive from a positive, OR */ + /* subtract a negative from a negative. */ + /* First, take the difference between their */ + /* magnitudes, then... */ + if (mp_cmp_mag (a, b) != MP_LT) { + /* Copy the sign from the first */ + c->sign = sa; + /* The first has a larger or equal magnitude */ + res = s_mp_sub (a, b, c); + } else { + /* The result has the *opposite* sign from */ + /* the first number. */ + c->sign = (sa == MP_ZPOS) ? MP_NEG : MP_ZPOS; + /* The second has a larger magnitude */ + res = s_mp_sub (b, a, c); + } + } + return res; +} + +#endif + +/* End: bn_mp_sub.c */ + +/* Start: bn_mp_sub_d.c */ +#include +#ifdef BN_MP_SUB_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* single digit subtraction */ +int +mp_sub_d (mp_int * a, mp_digit b, mp_int * c) +{ + mp_digit *tmpa, *tmpc, mu; + int res, ix, oldused; + + /* grow c as required */ + if (c->alloc < a->used + 1) { + if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) { + return res; + } + } + + /* if a is negative just do an unsigned + * addition [with fudged signs] + */ + if (a->sign == MP_NEG) { + a->sign = MP_ZPOS; + res = mp_add_d(a, b, c); + a->sign = c->sign = MP_NEG; + return res; + } + + /* setup regs */ + oldused = c->used; + tmpa = a->dp; + tmpc = c->dp; + + /* if a <= b simply fix the single digit */ + if ((a->used == 1 && a->dp[0] <= b) || a->used == 0) { + if (a->used == 1) { + *tmpc++ = b - *tmpa; + } else { + *tmpc++ = b; + } + ix = 1; + + /* negative/1digit */ + c->sign = MP_NEG; + c->used = 1; + } else { + /* positive/size */ + c->sign = MP_ZPOS; + c->used = a->used; + + /* subtract first digit */ + *tmpc = *tmpa++ - b; + mu = *tmpc >> (sizeof(mp_digit) * CHAR_BIT - 1); + *tmpc++ &= MP_MASK; + + /* handle rest of the digits */ + for (ix = 1; ix < a->used; ix++) { + *tmpc = *tmpa++ - mu; + mu = *tmpc >> (sizeof(mp_digit) * CHAR_BIT - 1); + *tmpc++ &= MP_MASK; + } + } + + /* zero excess digits */ + while (ix++ < oldused) { + *tmpc++ = 0; + } + mp_clamp(c); + return MP_OKAY; +} + +#endif + +/* End: bn_mp_sub_d.c */ + +/* Start: bn_mp_submod.c */ +#include +#ifdef BN_MP_SUBMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* d = a - b (mod c) */ +int +mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +{ + int res; + mp_int t; + + + if ((res = mp_init (&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_sub (a, b, &t)) != MP_OKAY) { + mp_clear (&t); + return res; + } + res = mp_mod (&t, c, d); + mp_clear (&t); + return res; +} +#endif + +/* End: bn_mp_submod.c */ + +/* Start: bn_mp_to_signed_bin.c */ +#include +#ifdef BN_MP_TO_SIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in signed [big endian] format */ +int +mp_to_signed_bin (mp_int * a, unsigned char *b) +{ + int res; + + if ((res = mp_to_unsigned_bin (a, b + 1)) != MP_OKAY) { + return res; + } + b[0] = (unsigned char) ((a->sign == MP_ZPOS) ? 0 : 1); + return MP_OKAY; +} +#endif + +/* End: bn_mp_to_signed_bin.c */ + +/* Start: bn_mp_to_unsigned_bin.c */ +#include +#ifdef BN_MP_TO_UNSIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in unsigned [big endian] format */ +int +mp_to_unsigned_bin (mp_int * a, unsigned char *b) +{ + int x, res; + mp_int t; + + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + x = 0; + while (mp_iszero (&t) == 0) { +#ifndef MP_8BIT + b[x++] = (unsigned char) (t.dp[0] & 255); +#else + b[x++] = (unsigned char) (t.dp[0] | ((t.dp[1] & 0x01) << 7)); +#endif + if ((res = mp_div_2d (&t, 8, &t, NULL)) != MP_OKAY) { + mp_clear (&t); + return res; + } + } + bn_reverse (b, x); + mp_clear (&t); + return MP_OKAY; +} +#endif + +/* End: bn_mp_to_unsigned_bin.c */ + +/* Start: bn_mp_toom_mul.c */ +#include +#ifdef BN_MP_TOOM_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* multiplication using the Toom-Cook 3-way algorithm + * + * Much more complicated than Karatsuba but has a lower asymptotic running time of + * O(N**1.464). This algorithm is only particularly useful on VERY large + * inputs (we're talking 1000s of digits here...). +*/ +int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) +{ + mp_int w0, w1, w2, w3, w4, tmp1, tmp2, a0, a1, a2, b0, b1, b2; + int res, B; + + /* init temps */ + if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, + &a0, &a1, &a2, &b0, &b1, + &b2, &tmp1, &tmp2, NULL)) != MP_OKAY) { + return res; + } + + /* B */ + B = MIN(a->used, b->used) / 3; + + /* a = a2 * B**2 + a1 * B + a0 */ + if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_copy(a, &a1)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&a1, B); + mp_mod_2d(&a1, DIGIT_BIT * B, &a1); + + if ((res = mp_copy(a, &a2)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&a2, B*2); + + /* b = b2 * B**2 + b1 * B + b0 */ + if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_copy(b, &b1)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&b1, B); + mp_mod_2d(&b1, DIGIT_BIT * B, &b1); + + if ((res = mp_copy(b, &b2)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&b2, B*2); + + /* w0 = a0*b0 */ + if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) { + goto ERR; + } + + /* w4 = a2 * b2 */ + if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) { + goto ERR; + } + + /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */ + if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) { + goto ERR; + } + + /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */ + if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) { + goto ERR; + } + + + /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */ + if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&b2, &b1, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) { + goto ERR; + } + + /* now solve the matrix + + 0 0 0 0 1 + 1 2 4 8 16 + 1 1 1 1 1 + 16 8 4 2 1 + 1 0 0 0 0 + + using 12 subtractions, 4 shifts, + 2 small divisions and 1 small multiplication + */ + + /* r1 - r4 */ + if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r0 */ + if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1/2 */ + if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3/2 */ + if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) { + goto ERR; + } + /* r2 - r0 - r4 */ + if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) { + goto ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1 - 8r0 */ + if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - 8r4 */ + if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) { + goto ERR; + } + /* 3r2 - r1 - r3 */ + if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) { + goto ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1/3 */ + if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) { + goto ERR; + } + /* r3/3 */ + if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) { + goto ERR; + } + + /* at this point shift W[n] by B*n */ + if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) { + goto ERR; + } + +ERR: + mp_clear_multi(&w0, &w1, &w2, &w3, &w4, + &a0, &a1, &a2, &b0, &b1, + &b2, &tmp1, &tmp2, NULL); + return res; +} + +#endif + +/* End: bn_mp_toom_mul.c */ + +/* Start: bn_mp_toom_sqr.c */ +#include +#ifdef BN_MP_TOOM_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* squaring using Toom-Cook 3-way algorithm */ +int +mp_toom_sqr(mp_int *a, mp_int *b) +{ + mp_int w0, w1, w2, w3, w4, tmp1, a0, a1, a2; + int res, B; + + /* init temps */ + if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL)) != MP_OKAY) { + return res; + } + + /* B */ + B = a->used / 3; + + /* a = a2 * B**2 + a1 * B + a0 */ + if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_copy(a, &a1)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&a1, B); + mp_mod_2d(&a1, DIGIT_BIT * B, &a1); + + if ((res = mp_copy(a, &a2)) != MP_OKAY) { + goto ERR; + } + mp_rshd(&a2, B*2); + + /* w0 = a0*a0 */ + if ((res = mp_sqr(&a0, &w0)) != MP_OKAY) { + goto ERR; + } + + /* w4 = a2 * a2 */ + if ((res = mp_sqr(&a2, &w4)) != MP_OKAY) { + goto ERR; + } + + /* w1 = (a2 + 2(a1 + 2a0))**2 */ + if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_sqr(&tmp1, &w1)) != MP_OKAY) { + goto ERR; + } + + /* w3 = (a0 + 2(a1 + 2a2))**2 */ + if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_sqr(&tmp1, &w3)) != MP_OKAY) { + goto ERR; + } + + + /* w2 = (a2 + a1 + a0)**2 */ + if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sqr(&tmp1, &w2)) != MP_OKAY) { + goto ERR; + } + + /* now solve the matrix + + 0 0 0 0 1 + 1 2 4 8 16 + 1 1 1 1 1 + 16 8 4 2 1 + 1 0 0 0 0 + + using 12 subtractions, 4 shifts, 2 small divisions and 1 small multiplication. + */ + + /* r1 - r4 */ + if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r0 */ + if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1/2 */ + if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3/2 */ + if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) { + goto ERR; + } + /* r2 - r0 - r4 */ + if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) { + goto ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1 - 8r0 */ + if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - 8r4 */ + if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) { + goto ERR; + } + /* 3r2 - r1 - r3 */ + if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) { + goto ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto ERR; + } + /* r1/3 */ + if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) { + goto ERR; + } + /* r3/3 */ + if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) { + goto ERR; + } + + /* at this point shift W[n] by B*n */ + if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) { + goto ERR; + } + + if ((res = mp_add(&w0, &w1, b)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) { + goto ERR; + } + if ((res = mp_add(&tmp1, b, b)) != MP_OKAY) { + goto ERR; + } + +ERR: + mp_clear_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL); + return res; +} + +#endif + +/* End: bn_mp_toom_sqr.c */ + +/* Start: bn_mp_toradix.c */ +#include +#ifdef BN_MP_TORADIX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* stores a bignum as a ASCII string in a given radix (2..64) */ +int mp_toradix (mp_int * a, char *str, int radix) +{ + int res, digs; + mp_int t; + mp_digit d; + char *_s = str; + + /* check range of the radix */ + if (radix < 2 || radix > 64) { + return MP_VAL; + } + + /* quick out if its zero */ + if (mp_iszero(a) == 1) { + *str++ = '0'; + *str = '\0'; + return MP_OKAY; + } + + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + /* if it is negative output a - */ + if (t.sign == MP_NEG) { + ++_s; + *str++ = '-'; + t.sign = MP_ZPOS; + } + + digs = 0; + while (mp_iszero (&t) == 0) { + if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { + mp_clear (&t); + return res; + } + *str++ = mp_s_rmap[d]; + ++digs; + } + + /* reverse the digits of the string. In this case _s points + * to the first digit [exluding the sign] of the number] + */ + bn_reverse ((unsigned char *)_s, digs); + + /* append a NULL so the string is properly terminated */ + *str = '\0'; + + mp_clear (&t); + return MP_OKAY; +} + +#endif + +/* End: bn_mp_toradix.c */ + +/* Start: bn_mp_toradix_n.c */ +#include +#ifdef BN_MP_TORADIX_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* stores a bignum as a ASCII string in a given radix (2..64) + * + * Stores upto maxlen-1 chars and always a NULL byte + */ +int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) +{ + int res, digs; + mp_int t; + mp_digit d; + char *_s = str; + + /* check range of the maxlen, radix */ + if (maxlen < 3 || radix < 2 || radix > 64) { + return MP_VAL; + } + + /* quick out if its zero */ + if (mp_iszero(a) == 1) { + *str++ = '0'; + *str = '\0'; + return MP_OKAY; + } + + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + /* if it is negative output a - */ + if (t.sign == MP_NEG) { + /* we have to reverse our digits later... but not the - sign!! */ + ++_s; + + /* store the flag and mark the number as positive */ + *str++ = '-'; + t.sign = MP_ZPOS; + + /* subtract a char */ + --maxlen; + } + + digs = 0; + while (mp_iszero (&t) == 0) { + if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { + mp_clear (&t); + return res; + } + *str++ = mp_s_rmap[d]; + ++digs; + + if (--maxlen == 1) { + /* no more room */ + break; + } + } + + /* reverse the digits of the string. In this case _s points + * to the first digit [exluding the sign] of the number] + */ + bn_reverse ((unsigned char *)_s, digs); + + /* append a NULL so the string is properly terminated */ + *str = '\0'; + + mp_clear (&t); + return MP_OKAY; +} + +#endif + +/* End: bn_mp_toradix_n.c */ + +/* Start: bn_mp_unsigned_bin_size.c */ +#include +#ifdef BN_MP_UNSIGNED_BIN_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* get the size for an unsigned equivalent */ +int +mp_unsigned_bin_size (mp_int * a) +{ + int size = mp_count_bits (a); + return (size / 8 + ((size & 7) != 0 ? 1 : 0)); +} +#endif + +/* End: bn_mp_unsigned_bin_size.c */ + +/* Start: bn_mp_xor.c */ +#include +#ifdef BN_MP_XOR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* XOR two ints together */ +int +mp_xor (mp_int * a, mp_int * b, mp_int * c) +{ + int res, ix, px; + mp_int t, *x; + + if (a->used > b->used) { + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + px = b->used; + x = b; + } else { + if ((res = mp_init_copy (&t, b)) != MP_OKAY) { + return res; + } + px = a->used; + x = a; + } + + for (ix = 0; ix < px; ix++) { + + } + mp_clamp (&t); + mp_exch (c, &t); + mp_clear (&t); + return MP_OKAY; +} +#endif + +/* End: bn_mp_xor.c */ + +/* Start: bn_mp_zero.c */ +#include +#ifdef BN_MP_ZERO_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* set to zero */ +void +mp_zero (mp_int * a) +{ + a->sign = MP_ZPOS; + a->used = 0; + memset (a->dp, 0, sizeof (mp_digit) * a->alloc); +} +#endif + +/* End: bn_mp_zero.c */ + +/* Start: bn_prime_tab.c */ +#include +#ifdef BN_PRIME_TAB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +const mp_digit ltm_prime_tab[] = { + 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, + 0x0017, 0x001D, 0x001F, 0x0025, 0x0029, 0x002B, 0x002F, 0x0035, + 0x003B, 0x003D, 0x0043, 0x0047, 0x0049, 0x004F, 0x0053, 0x0059, + 0x0061, 0x0065, 0x0067, 0x006B, 0x006D, 0x0071, 0x007F, +#ifndef MP_8BIT + 0x0083, + 0x0089, 0x008B, 0x0095, 0x0097, 0x009D, 0x00A3, 0x00A7, 0x00AD, + 0x00B3, 0x00B5, 0x00BF, 0x00C1, 0x00C5, 0x00C7, 0x00D3, 0x00DF, + 0x00E3, 0x00E5, 0x00E9, 0x00EF, 0x00F1, 0x00FB, 0x0101, 0x0107, + 0x010D, 0x010F, 0x0115, 0x0119, 0x011B, 0x0125, 0x0133, 0x0137, + + 0x0139, 0x013D, 0x014B, 0x0151, 0x015B, 0x015D, 0x0161, 0x0167, + 0x016F, 0x0175, 0x017B, 0x017F, 0x0185, 0x018D, 0x0191, 0x0199, + 0x01A3, 0x01A5, 0x01AF, 0x01B1, 0x01B7, 0x01BB, 0x01C1, 0x01C9, + 0x01CD, 0x01CF, 0x01D3, 0x01DF, 0x01E7, 0x01EB, 0x01F3, 0x01F7, + 0x01FD, 0x0209, 0x020B, 0x021D, 0x0223, 0x022D, 0x0233, 0x0239, + 0x023B, 0x0241, 0x024B, 0x0251, 0x0257, 0x0259, 0x025F, 0x0265, + 0x0269, 0x026B, 0x0277, 0x0281, 0x0283, 0x0287, 0x028D, 0x0293, + 0x0295, 0x02A1, 0x02A5, 0x02AB, 0x02B3, 0x02BD, 0x02C5, 0x02CF, + + 0x02D7, 0x02DD, 0x02E3, 0x02E7, 0x02EF, 0x02F5, 0x02F9, 0x0301, + 0x0305, 0x0313, 0x031D, 0x0329, 0x032B, 0x0335, 0x0337, 0x033B, + 0x033D, 0x0347, 0x0355, 0x0359, 0x035B, 0x035F, 0x036D, 0x0371, + 0x0373, 0x0377, 0x038B, 0x038F, 0x0397, 0x03A1, 0x03A9, 0x03AD, + 0x03B3, 0x03B9, 0x03C7, 0x03CB, 0x03D1, 0x03D7, 0x03DF, 0x03E5, + 0x03F1, 0x03F5, 0x03FB, 0x03FD, 0x0407, 0x0409, 0x040F, 0x0419, + 0x041B, 0x0425, 0x0427, 0x042D, 0x043F, 0x0443, 0x0445, 0x0449, + 0x044F, 0x0455, 0x045D, 0x0463, 0x0469, 0x047F, 0x0481, 0x048B, + + 0x0493, 0x049D, 0x04A3, 0x04A9, 0x04B1, 0x04BD, 0x04C1, 0x04C7, + 0x04CD, 0x04CF, 0x04D5, 0x04E1, 0x04EB, 0x04FD, 0x04FF, 0x0503, + 0x0509, 0x050B, 0x0511, 0x0515, 0x0517, 0x051B, 0x0527, 0x0529, + 0x052F, 0x0551, 0x0557, 0x055D, 0x0565, 0x0577, 0x0581, 0x058F, + 0x0593, 0x0595, 0x0599, 0x059F, 0x05A7, 0x05AB, 0x05AD, 0x05B3, + 0x05BF, 0x05C9, 0x05CB, 0x05CF, 0x05D1, 0x05D5, 0x05DB, 0x05E7, + 0x05F3, 0x05FB, 0x0607, 0x060D, 0x0611, 0x0617, 0x061F, 0x0623, + 0x062B, 0x062F, 0x063D, 0x0641, 0x0647, 0x0649, 0x064D, 0x0653 +#endif +}; +#endif + +/* End: bn_prime_tab.c */ + +/* Start: bn_reverse.c */ +#include +#ifdef BN_REVERSE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reverse an array, used for radix code */ +void +bn_reverse (unsigned char *s, int len) +{ + int ix, iy; + unsigned char t; + + ix = 0; + iy = len - 1; + while (ix < iy) { + t = s[ix]; + s[ix] = s[iy]; + s[iy] = t; + ++ix; + --iy; + } +} +#endif + +/* End: bn_reverse.c */ + +/* Start: bn_s_mp_add.c */ +#include +#ifdef BN_S_MP_ADD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* low level addition, based on HAC pp.594, Algorithm 14.7 */ +int +s_mp_add (mp_int * a, mp_int * b, mp_int * c) +{ + mp_int *x; + int olduse, res, min, max; + + /* find sizes, we let |a| <= |b| which means we have to sort + * them. "x" will point to the input with the most digits + */ + if (a->used > b->used) { + min = b->used; + max = a->used; + x = a; + } else { + min = a->used; + max = b->used; + x = b; + } + + /* init result */ + if (c->alloc < max + 1) { + if ((res = mp_grow (c, max + 1)) != MP_OKAY) { + return res; + } + } + + /* get old used digit count and set new one */ + olduse = c->used; + c->used = max + 1; + + { + register mp_digit u, *tmpa, *tmpb, *tmpc; + register int i; + + /* alias for digit pointers */ + + /* first input */ + tmpa = a->dp; + + /* second input */ + tmpb = b->dp; + + /* destination */ + tmpc = c->dp; + + /* zero the carry */ + u = 0; + for (i = 0; i < min; i++) { + /* Compute the sum at one digit, T[i] = A[i] + B[i] + U */ + *tmpc = *tmpa++ + *tmpb++ + u; + + /* U = carry bit of T[i] */ + u = *tmpc >> ((mp_digit)DIGIT_BIT); + + /* take away carry bit from T[i] */ + *tmpc++ &= MP_MASK; + } + + /* now copy higher words if any, that is in A+B + * if A or B has more digits add those in + */ + if (min != max) { + for (; i < max; i++) { + /* T[i] = X[i] + U */ + *tmpc = x->dp[i] + u; + + /* U = carry bit of T[i] */ + u = *tmpc >> ((mp_digit)DIGIT_BIT); + + /* take away carry bit from T[i] */ + *tmpc++ &= MP_MASK; + } + } + + /* add carry */ + *tmpc++ = u; + + /* clear digits above oldused */ + for (i = c->used; i < olduse; i++) { + *tmpc++ = 0; + } + } + + mp_clamp (c); + return MP_OKAY; +} +#endif + +/* End: bn_s_mp_add.c */ + +/* Start: bn_s_mp_exptmod.c */ +#include +#ifdef BN_S_MP_EXPTMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +#ifdef MP_LOW_MEM + #define TAB_SIZE 32 +#else + #define TAB_SIZE 256 +#endif + +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +{ + mp_int M[TAB_SIZE], res, mu; + mp_digit buf; + int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + + /* find window size */ + x = mp_count_bits (X); + if (x <= 7) { + winsize = 2; + } else if (x <= 36) { + winsize = 3; + } else if (x <= 140) { + winsize = 4; + } else if (x <= 450) { + winsize = 5; + } else if (x <= 1303) { + winsize = 6; + } else if (x <= 3529) { + winsize = 7; + } else { + winsize = 8; + } + +#ifdef MP_LOW_MEM + if (winsize > 5) { + winsize = 5; + } +#endif + + /* init M array */ + /* init first cell */ + if ((err = mp_init(&M[1])) != MP_OKAY) { + return err; + } + + /* now init the second half of the array */ + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + if ((err = mp_init(&M[x])) != MP_OKAY) { + for (y = 1<<(winsize-1); y < x; y++) { + mp_clear (&M[y]); + } + mp_clear(&M[1]); + return err; + } + } + + /* create mu, used for Barrett reduction */ + if ((err = mp_init (&mu)) != MP_OKAY) { + goto LBL_M; + } + if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { + goto LBL_MU; + } + + /* create M table + * + * The M table contains powers of the base, + * e.g. M[x] = G**x mod P + * + * The first half of the table is not + * computed though accept for M[0] and M[1] + */ + if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) { + goto LBL_MU; + } + + /* compute the value at M[1<<(winsize-1)] by squaring + * M[1] (winsize-1) times + */ + if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_MU; + } + + for (x = 0; x < (winsize - 1); x++) { + if ((err = mp_sqr (&M[1 << (winsize - 1)], + &M[1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_MU; + } + if ((err = mp_reduce (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + } + + /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) + * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) + */ + for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) { + if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) { + goto LBL_MU; + } + if ((err = mp_reduce (&M[x], P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + } + + /* setup result */ + if ((err = mp_init (&res)) != MP_OKAY) { + goto LBL_MU; + } + mp_set (&res, 1); + + /* set initial mode and bit cnt */ + mode = 0; + bitcnt = 1; + buf = 0; + digidx = X->used - 1; + bitcpy = 0; + bitbuf = 0; + + for (;;) { + /* grab next digit as required */ + if (--bitcnt == 0) { + /* if digidx == -1 we are out of digits */ + if (digidx == -1) { + break; + } + /* read next digit and reset the bitcnt */ + buf = X->dp[digidx--]; + bitcnt = (int) DIGIT_BIT; + } + + /* grab the next msb from the exponent */ + y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; + buf <<= (mp_digit)1; + + /* if the bit is zero and mode == 0 then we ignore it + * These represent the leading zero bits before the first 1 bit + * in the exponent. Technically this opt is not required but it + * does lower the # of trivial squaring/reductions used + */ + if (mode == 0 && y == 0) { + continue; + } + + /* if the bit is zero and mode == 1 then we square */ + if (mode == 1 && y == 0) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + continue; + } + + /* else we add it to the window */ + bitbuf |= (y << (winsize - ++bitcpy)); + mode = 2; + + if (bitcpy == winsize) { + /* ok window is filled so square as required and multiply */ + /* square first */ + for (x = 0; x < winsize; x++) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* then multiply */ + if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + + /* empty window and reset */ + bitcpy = 0; + bitbuf = 0; + mode = 1; + } + } + + /* if bits remain then square/multiply */ + if (mode == 2 && bitcpy > 0) { + /* square then multiply if the bit is set */ + for (x = 0; x < bitcpy; x++) { + if ((err = mp_sqr (&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + + bitbuf <<= 1; + if ((bitbuf & (1 << winsize)) != 0) { + /* then multiply */ + if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + } + } + } + + mp_exch (&res, Y); + err = MP_OKAY; +LBL_RES:mp_clear (&res); +LBL_MU:mp_clear (&mu); +LBL_M: + mp_clear(&M[1]); + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + mp_clear (&M[x]); + } + return err; +} +#endif + +/* End: bn_s_mp_exptmod.c */ + +/* Start: bn_s_mp_mul_digs.c */ +#include +#ifdef BN_S_MP_MUL_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* multiplies |a| * |b| and only computes upto digs digits of result + * HAC pp. 595, Algorithm 14.12 Modified so you can control how + * many digits of output are created. + */ +int +s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +{ + mp_int t; + int res, pa, pb, ix, iy; + mp_digit u; + mp_word r; + mp_digit tmpx, *tmpt, *tmpy; + + /* can we use the fast multiplier? */ + if (((digs) < MP_WARRAY) && + MIN (a->used, b->used) < + (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + return fast_s_mp_mul_digs (a, b, c, digs); + } + + if ((res = mp_init_size (&t, digs)) != MP_OKAY) { + return res; + } + t.used = digs; + + /* compute the digits of the product directly */ + pa = a->used; + for (ix = 0; ix < pa; ix++) { + /* set the carry to zero */ + u = 0; + + /* limit ourselves to making digs digits of output */ + pb = MIN (b->used, digs - ix); + + /* setup some aliases */ + /* copy of the digit from a used within the nested loop */ + tmpx = a->dp[ix]; + + /* an alias for the destination shifted ix places */ + tmpt = t.dp + ix; + + /* an alias for the digits of b */ + tmpy = b->dp; + + /* compute the columns of the output and propagate the carry */ + for (iy = 0; iy < pb; iy++) { + /* compute the column as a mp_word */ + r = ((mp_word)*tmpt) + + ((mp_word)tmpx) * ((mp_word)*tmpy++) + + ((mp_word) u); + + /* the new column is the lower part of the result */ + *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* get the carry word from the result */ + u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); + } + /* set carry if it is placed below digs */ + if (ix + iy < digs) { + *tmpt = u; + } + } + + mp_clamp (&t); + mp_exch (&t, c); + + mp_clear (&t); + return MP_OKAY; +} +#endif + +/* End: bn_s_mp_mul_digs.c */ + +/* Start: bn_s_mp_mul_high_digs.c */ +#include +#ifdef BN_S_MP_MUL_HIGH_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* multiplies |a| * |b| and does not compute the lower digs digits + * [meant to get the higher part of the product] + */ +int +s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +{ + mp_int t; + int res, pa, pb, ix, iy; + mp_digit u; + mp_word r; + mp_digit tmpx, *tmpt, *tmpy; + + /* can we use the fast multiplier? */ +#ifdef BN_FAST_S_MP_MUL_HIGH_DIGS_C + if (((a->used + b->used + 1) < MP_WARRAY) + && MIN (a->used, b->used) < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { + return fast_s_mp_mul_high_digs (a, b, c, digs); + } +#endif + + if ((res = mp_init_size (&t, a->used + b->used + 1)) != MP_OKAY) { + return res; + } + t.used = a->used + b->used + 1; + + pa = a->used; + pb = b->used; + for (ix = 0; ix < pa; ix++) { + /* clear the carry */ + u = 0; + + /* left hand side of A[ix] * B[iy] */ + tmpx = a->dp[ix]; + + /* alias to the address of where the digits will be stored */ + tmpt = &(t.dp[digs]); + + /* alias for where to read the right hand side from */ + tmpy = b->dp + (digs - ix); + + for (iy = digs - ix; iy < pb; iy++) { + /* calculate the double precision result */ + r = ((mp_word)*tmpt) + + ((mp_word)tmpx) * ((mp_word)*tmpy++) + + ((mp_word) u); + + /* get the lower part */ + *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* carry the carry */ + u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); + } + *tmpt = u; + } + mp_clamp (&t); + mp_exch (&t, c); + mp_clear (&t); + return MP_OKAY; +} +#endif + +/* End: bn_s_mp_mul_high_digs.c */ + +/* Start: bn_s_mp_sqr.c */ +#include +#ifdef BN_S_MP_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ +int +s_mp_sqr (mp_int * a, mp_int * b) +{ + mp_int t; + int res, ix, iy, pa; + mp_word r; + mp_digit u, tmpx, *tmpt; + + pa = a->used; + if ((res = mp_init_size (&t, 2*pa + 1)) != MP_OKAY) { + return res; + } + + /* default used is maximum possible size */ + t.used = 2*pa + 1; + + for (ix = 0; ix < pa; ix++) { + /* first calculate the digit at 2*ix */ + /* calculate double precision result */ + r = ((mp_word) t.dp[2*ix]) + + ((mp_word)a->dp[ix])*((mp_word)a->dp[ix]); + + /* store lower part in result */ + t.dp[ix+ix] = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* get the carry */ + u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); + + /* left hand side of A[ix] * A[iy] */ + tmpx = a->dp[ix]; + + /* alias for where to store the results */ + tmpt = t.dp + (2*ix + 1); + + for (iy = ix + 1; iy < pa; iy++) { + /* first calculate the product */ + r = ((mp_word)tmpx) * ((mp_word)a->dp[iy]); + + /* now calculate the double precision result, note we use + * addition instead of *2 since it's easier to optimize + */ + r = ((mp_word) *tmpt) + r + r + ((mp_word) u); + + /* store lower part */ + *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); + + /* get carry */ + u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); + } + /* propagate upwards */ + while (u != ((mp_digit) 0)) { + r = ((mp_word) *tmpt) + ((mp_word) u); + *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); + u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); + } + } + + mp_clamp (&t); + mp_exch (&t, b); + mp_clear (&t); + return MP_OKAY; +} +#endif + +/* End: bn_s_mp_sqr.c */ + +/* Start: bn_s_mp_sub.c */ +#include +#ifdef BN_S_MP_SUB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* low level subtraction (assumes |a| > |b|), HAC pp.595 Algorithm 14.9 */ +int +s_mp_sub (mp_int * a, mp_int * b, mp_int * c) +{ + int olduse, res, min, max; + + /* find sizes */ + min = b->used; + max = a->used; + + /* init result */ + if (c->alloc < max) { + if ((res = mp_grow (c, max)) != MP_OKAY) { + return res; + } + } + olduse = c->used; + c->used = max; + + { + register mp_digit u, *tmpa, *tmpb, *tmpc; + register int i; + + /* alias for digit pointers */ + tmpa = a->dp; + tmpb = b->dp; + tmpc = c->dp; + + /* set carry to zero */ + u = 0; + for (i = 0; i < min; i++) { + /* T[i] = A[i] - B[i] - U */ + *tmpc = *tmpa++ - *tmpb++ - u; + + /* U = carry bit of T[i] + * Note this saves performing an AND operation since + * if a carry does occur it will propagate all the way to the + * MSB. As a result a single shift is enough to get the carry + */ + u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1)); + + /* Clear carry from T[i] */ + *tmpc++ &= MP_MASK; + } + + /* now copy higher words if any, e.g. if A has more digits than B */ + for (; i < max; i++) { + /* T[i] = A[i] - U */ + *tmpc = *tmpa++ - u; + + /* U = carry bit of T[i] */ + u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1)); + + /* Clear carry from T[i] */ + *tmpc++ &= MP_MASK; + } + + /* clear digits above used (since we may not have grown result above) */ + for (i = c->used; i < olduse; i++) { + *tmpc++ = 0; + } + } + + mp_clamp (c); + return MP_OKAY; +} + +#endif + +/* End: bn_s_mp_sub.c */ + +/* Start: bncore.c */ +#include +#ifdef BNCORE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* Known optimal configurations + + CPU /Compiler /MUL CUTOFF/SQR CUTOFF +------------------------------------------------------------- + Intel P4 Northwood /GCC v3.4.1 / 88/ 128/LTM 0.32 ;-) + +*/ + +int KARATSUBA_MUL_CUTOFF = 88, /* Min. number of digits before Karatsuba multiplication is used. */ + KARATSUBA_SQR_CUTOFF = 128, /* Min. number of digits before Karatsuba squaring is used. */ + + TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ + TOOM_SQR_CUTOFF = 400; +#endif + +/* End: bncore.c */ + + +/* EOF */ diff --git a/libtommath/pretty.build b/libtommath/pretty.build new file mode 100644 index 0000000..a708b8a --- /dev/null +++ b/libtommath/pretty.build @@ -0,0 +1,66 @@ +#!/bin/perl -w +# +# Cute little builder for perl +# Total waste of development time... +# +# This will build all the object files and then the archive .a file +# requires GCC, GNU make and a sense of humour. +# +# Tom St Denis +use strict; + +my $count = 0; +my $starttime = time; +my $rate = 0; +print "Scanning for source files...\n"; +foreach my $filename (glob "*.c") { + ++$count; +} +print "Source files to build: $count\nBuilding...\n"; +my $i = 0; +my $lines = 0; +my $filesbuilt = 0; +foreach my $filename (glob "*.c") { + printf("Building %3.2f%%, ", (++$i/$count)*100.0); + if ($i % 4 == 0) { print "/, "; } + if ($i % 4 == 1) { print "-, "; } + if ($i % 4 == 2) { print "\\, "; } + if ($i % 4 == 3) { print "|, "; } + if ($rate > 0) { + my $tleft = ($count - $i) / $rate; + my $tsec = $tleft%60; + my $tmin = ($tleft/60)%60; + my $thour = ($tleft/3600)%60; + printf("%2d:%02d:%02d left, ", $thour, $tmin, $tsec); + } + my $cnt = ($i/$count)*30.0; + my $x = 0; + print "["; + for (; $x < $cnt; $x++) { print "#"; } + for (; $x < 30; $x++) { print " "; } + print "]\r"; + my $tmp = $filename; + $tmp =~ s/\.c/".o"/ge; + if (open(SRC, "<$tmp")) { + close SRC; + } else { + !system("make $tmp > /dev/null 2>/dev/null") or die "\nERROR: Failed to make $tmp!!!\n"; + open( SRC, "<$filename" ) or die "Couldn't open $filename for reading: $!"; + ++$lines while (); + close SRC or die "Error closing $filename after reading: $!"; + ++$filesbuilt; + } + + # update timer + if (time != $starttime) { + my $delay = time - $starttime; + $rate = $i/$delay; + } +} + +# finish building the library +printf("\nFinished building source (%d seconds, %3.2f files per second).\n", time - $starttime, $rate); +print "Compiled approximately $filesbuilt files and $lines lines of code.\n"; +print "Doing final make (building archive...)\n"; +!system("make > /dev/null 2>/dev/null") or die "\nERROR: Failed to perform last make command!!!\n"; +print "done.\n"; \ No newline at end of file diff --git a/libtommath/tombc/grammar.txt b/libtommath/tombc/grammar.txt new file mode 100644 index 0000000..a780e75 --- /dev/null +++ b/libtommath/tombc/grammar.txt @@ -0,0 +1,35 @@ +program := program statement | statement | empty +statement := { statement } | + identifier = numexpression; | + identifier[numexpression] = numexpression; | + function(expressionlist); | + for (identifer = numexpression; numexpression; identifier = numexpression) { statement } | + while (numexpression) { statement } | + if (numexpresion) { statement } elif | + break; | + continue; + +elif := else statement | empty +function := abs | countbits | exptmod | jacobi | print | isprime | nextprime | issquare | readinteger | exit +expressionlist := expressionlist, expression | expression + +// LR(1) !!!? +expression := string | numexpression +numexpression := cmpexpr && cmpexpr | cmpexpr \|\| cmpexpr | cmpexpr +cmpexpr := boolexpr < boolexpr | boolexpr > boolexpr | boolexpr == boolexpr | + boolexpr <= boolexpr | boolexpr >= boolexpr | boolexpr +boolexpr := shiftexpr & shiftexpr | shiftexpr ^ shiftexpr | shiftexpr \| shiftexpr | shiftexpr +shiftexpr := addsubexpr << addsubexpr | addsubexpr >> addsubexpr | addsubexpr +addsubexpr := mulexpr + mulexpr | mulexpr - mulexpr | mulexpr +mulexpr := expr * expr | expr / expr | expr % expr | expr +expr := -nexpr | nexpr +nexpr := integer | identifier | ( numexpression ) | identifier[numexpression] + +identifier := identifer digits | identifier alpha | alpha +alpha := a ... z | A ... Z +integer := hexnumber | digits +hexnumber := 0xhexdigits +hexdigits := hexdigits hexdigit | hexdigit +hexdigit := 0 ... 9 | a ... f | A ... F +digits := digits digit | digit +digit := 0 ... 9 diff --git a/libtommath/tommath.h b/libtommath/tommath.h new file mode 100644 index 0000000..7cc92c2 --- /dev/null +++ b/libtommath/tommath.h @@ -0,0 +1,567 @@ +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +#ifndef BN_H_ +#define BN_H_ + +#include +#include +#include +#include +#include + +#include + +#undef MIN +#define MIN(x,y) ((x)<(y)?(x):(y)) +#undef MAX +#define MAX(x,y) ((x)>(y)?(x):(y)) + +#ifdef __cplusplus +extern "C" { + +/* C++ compilers don't like assigning void * to mp_digit * */ +#define OPT_CAST(x) (x *) + +#else + +/* C on the other hand doesn't care */ +#define OPT_CAST(x) + +#endif + + +/* detect 64-bit mode if possible */ +#if defined(__x86_64__) + #if !(defined(MP_64BIT) && defined(MP_16BIT) && defined(MP_8BIT)) + #define MP_64BIT + #endif +#endif + +/* some default configurations. + * + * A "mp_digit" must be able to hold DIGIT_BIT + 1 bits + * A "mp_word" must be able to hold 2*DIGIT_BIT + 1 bits + * + * At the very least a mp_digit must be able to hold 7 bits + * [any size beyond that is ok provided it doesn't overflow the data type] + */ +#ifdef MP_8BIT + typedef unsigned char mp_digit; + typedef unsigned short mp_word; +#elif defined(MP_16BIT) + typedef unsigned short mp_digit; + typedef unsigned long mp_word; +#elif defined(MP_64BIT) + /* for GCC only on supported platforms */ +#ifndef CRYPT + typedef unsigned long long ulong64; + typedef signed long long long64; +#endif + + typedef unsigned long mp_digit; + typedef unsigned long mp_word __attribute__ ((mode(TI))); + + #define DIGIT_BIT 60 +#else + /* this is the default case, 28-bit digits */ + + /* this is to make porting into LibTomCrypt easier :-) */ +#ifndef CRYPT + #if defined(_MSC_VER) || defined(__BORLANDC__) + typedef unsigned __int64 ulong64; + typedef signed __int64 long64; + #else + typedef unsigned long long ulong64; + typedef signed long long long64; + #endif +#endif + + typedef unsigned long mp_digit; + typedef ulong64 mp_word; + +#ifdef MP_31BIT + /* this is an extension that uses 31-bit digits */ + #define DIGIT_BIT 31 +#else + /* default case is 28-bit digits, defines MP_28BIT as a handy macro to test */ + #define DIGIT_BIT 28 + #define MP_28BIT +#endif +#endif + +/* define heap macros */ +#ifndef CRYPT + /* default to libc stuff */ + #ifndef XMALLOC + #define XMALLOC malloc + #define XFREE free + #define XREALLOC realloc + #define XCALLOC calloc + #else + /* prototypes for our heap functions */ + extern void *XMALLOC(size_t n); + extern void *REALLOC(void *p, size_t n); + extern void *XCALLOC(size_t n, size_t s); + extern void XFREE(void *p); + #endif +#endif + + +/* otherwise the bits per digit is calculated automatically from the size of a mp_digit */ +#ifndef DIGIT_BIT + #define DIGIT_BIT ((int)((CHAR_BIT * sizeof(mp_digit) - 1))) /* bits per digit */ +#endif + +#define MP_DIGIT_BIT DIGIT_BIT +#define MP_MASK ((((mp_digit)1)<<((mp_digit)DIGIT_BIT))-((mp_digit)1)) +#define MP_DIGIT_MAX MP_MASK + +/* equalities */ +#define MP_LT -1 /* less than */ +#define MP_EQ 0 /* equal to */ +#define MP_GT 1 /* greater than */ + +#define MP_ZPOS 0 /* positive integer */ +#define MP_NEG 1 /* negative */ + +#define MP_OKAY 0 /* ok result */ +#define MP_MEM -2 /* out of mem */ +#define MP_VAL -3 /* invalid input */ +#define MP_RANGE MP_VAL + +#define MP_YES 1 /* yes response */ +#define MP_NO 0 /* no response */ + +/* Primality generation flags */ +#define LTM_PRIME_BBS 0x0001 /* BBS style prime */ +#define LTM_PRIME_SAFE 0x0002 /* Safe prime (p-1)/2 == prime */ +#define LTM_PRIME_2MSB_OFF 0x0004 /* force 2nd MSB to 0 */ +#define LTM_PRIME_2MSB_ON 0x0008 /* force 2nd MSB to 1 */ + +typedef int mp_err; + +/* you'll have to tune these... */ +extern int KARATSUBA_MUL_CUTOFF, + KARATSUBA_SQR_CUTOFF, + TOOM_MUL_CUTOFF, + TOOM_SQR_CUTOFF; + +/* define this to use lower memory usage routines (exptmods mostly) */ +/* #define MP_LOW_MEM */ + +/* default precision */ +#ifndef MP_PREC + #ifndef MP_LOW_MEM + #define MP_PREC 64 /* default digits of precision */ + #else + #define MP_PREC 8 /* default digits of precision */ + #endif +#endif + +/* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */ +#define MP_WARRAY (1 << (sizeof(mp_word) * CHAR_BIT - 2 * DIGIT_BIT + 1)) + +/* the infamous mp_int structure */ +typedef struct { + int used, alloc, sign; + mp_digit *dp; +} mp_int; + +/* callback for mp_prime_random, should fill dst with random bytes and return how many read [upto len] */ +typedef int ltm_prime_callback(unsigned char *dst, int len, void *dat); + + +#define USED(m) ((m)->used) +#define DIGIT(m,k) ((m)->dp[(k)]) +#define SIGN(m) ((m)->sign) + +/* error code to char* string */ +char *mp_error_to_string(int code); + +/* ---> init and deinit bignum functions <--- */ +/* init a bignum */ +int mp_init(mp_int *a); + +/* free a bignum */ +void mp_clear(mp_int *a); + +/* init a null terminated series of arguments */ +int mp_init_multi(mp_int *mp, ...); + +/* clear a null terminated series of arguments */ +void mp_clear_multi(mp_int *mp, ...); + +/* exchange two ints */ +void mp_exch(mp_int *a, mp_int *b); + +/* shrink ram required for a bignum */ +int mp_shrink(mp_int *a); + +/* grow an int to a given size */ +int mp_grow(mp_int *a, int size); + +/* init to a given number of digits */ +int mp_init_size(mp_int *a, int size); + +/* ---> Basic Manipulations <--- */ +#define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO) +#define mp_iseven(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 0)) ? MP_YES : MP_NO) +#define mp_isodd(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 1)) ? MP_YES : MP_NO) + +/* set to zero */ +void mp_zero(mp_int *a); + +/* set to a digit */ +void mp_set(mp_int *a, mp_digit b); + +/* set a 32-bit const */ +int mp_set_int(mp_int *a, unsigned long b); + +/* get a 32-bit value */ +unsigned long mp_get_int(mp_int * a); + +/* initialize and set a digit */ +int mp_init_set (mp_int * a, mp_digit b); + +/* initialize and set 32-bit value */ +int mp_init_set_int (mp_int * a, unsigned long b); + +/* copy, b = a */ +int mp_copy(mp_int *a, mp_int *b); + +/* inits and copies, a = b */ +int mp_init_copy(mp_int *a, mp_int *b); + +/* trim unused digits */ +void mp_clamp(mp_int *a); + +/* ---> digit manipulation <--- */ + +/* right shift by "b" digits */ +void mp_rshd(mp_int *a, int b); + +/* left shift by "b" digits */ +int mp_lshd(mp_int *a, int b); + +/* c = a / 2**b */ +int mp_div_2d(mp_int *a, int b, mp_int *c, mp_int *d); + +/* b = a/2 */ +int mp_div_2(mp_int *a, mp_int *b); + +/* c = a * 2**b */ +int mp_mul_2d(mp_int *a, int b, mp_int *c); + +/* b = a*2 */ +int mp_mul_2(mp_int *a, mp_int *b); + +/* c = a mod 2**d */ +int mp_mod_2d(mp_int *a, int b, mp_int *c); + +/* computes a = 2**b */ +int mp_2expt(mp_int *a, int b); + +/* Counts the number of lsbs which are zero before the first zero bit */ +int mp_cnt_lsb(mp_int *a); + +/* I Love Earth! */ + +/* makes a pseudo-random int of a given size */ +int mp_rand(mp_int *a, int digits); + +/* ---> binary operations <--- */ +/* c = a XOR b */ +int mp_xor(mp_int *a, mp_int *b, mp_int *c); + +/* c = a OR b */ +int mp_or(mp_int *a, mp_int *b, mp_int *c); + +/* c = a AND b */ +int mp_and(mp_int *a, mp_int *b, mp_int *c); + +/* ---> Basic arithmetic <--- */ + +/* b = -a */ +int mp_neg(mp_int *a, mp_int *b); + +/* b = |a| */ +int mp_abs(mp_int *a, mp_int *b); + +/* compare a to b */ +int mp_cmp(mp_int *a, mp_int *b); + +/* compare |a| to |b| */ +int mp_cmp_mag(mp_int *a, mp_int *b); + +/* c = a + b */ +int mp_add(mp_int *a, mp_int *b, mp_int *c); + +/* c = a - b */ +int mp_sub(mp_int *a, mp_int *b, mp_int *c); + +/* c = a * b */ +int mp_mul(mp_int *a, mp_int *b, mp_int *c); + +/* b = a*a */ +int mp_sqr(mp_int *a, mp_int *b); + +/* a/b => cb + d == a */ +int mp_div(mp_int *a, mp_int *b, mp_int *c, mp_int *d); + +/* c = a mod b, 0 <= c < b */ +int mp_mod(mp_int *a, mp_int *b, mp_int *c); + +/* ---> single digit functions <--- */ + +/* compare against a single digit */ +int mp_cmp_d(mp_int *a, mp_digit b); + +/* c = a + b */ +int mp_add_d(mp_int *a, mp_digit b, mp_int *c); + +/* c = a - b */ +int mp_sub_d(mp_int *a, mp_digit b, mp_int *c); + +/* c = a * b */ +int mp_mul_d(mp_int *a, mp_digit b, mp_int *c); + +/* a/b => cb + d == a */ +int mp_div_d(mp_int *a, mp_digit b, mp_int *c, mp_digit *d); + +/* a/3 => 3c + d == a */ +int mp_div_3(mp_int *a, mp_int *c, mp_digit *d); + +/* c = a**b */ +int mp_expt_d(mp_int *a, mp_digit b, mp_int *c); + +/* c = a mod b, 0 <= c < b */ +int mp_mod_d(mp_int *a, mp_digit b, mp_digit *c); + +/* ---> number theory <--- */ + +/* d = a + b (mod c) */ +int mp_addmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d); + +/* d = a - b (mod c) */ +int mp_submod(mp_int *a, mp_int *b, mp_int *c, mp_int *d); + +/* d = a * b (mod c) */ +int mp_mulmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d); + +/* c = a * a (mod b) */ +int mp_sqrmod(mp_int *a, mp_int *b, mp_int *c); + +/* c = 1/a (mod b) */ +int mp_invmod(mp_int *a, mp_int *b, mp_int *c); + +/* c = (a, b) */ +int mp_gcd(mp_int *a, mp_int *b, mp_int *c); + +/* produces value such that U1*a + U2*b = U3 */ +int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3); + +/* c = [a, b] or (a*b)/(a, b) */ +int mp_lcm(mp_int *a, mp_int *b, mp_int *c); + +/* finds one of the b'th root of a, such that |c|**b <= |a| + * + * returns error if a < 0 and b is even + */ +int mp_n_root(mp_int *a, mp_digit b, mp_int *c); + +/* special sqrt algo */ +int mp_sqrt(mp_int *arg, mp_int *ret); + +/* is number a square? */ +int mp_is_square(mp_int *arg, int *ret); + +/* computes the jacobi c = (a | n) (or Legendre if b is prime) */ +int mp_jacobi(mp_int *a, mp_int *n, int *c); + +/* used to setup the Barrett reduction for a given modulus b */ +int mp_reduce_setup(mp_int *a, mp_int *b); + +/* Barrett Reduction, computes a (mod b) with a precomputed value c + * + * Assumes that 0 < a <= b*b, note if 0 > a > -(b*b) then you can merely + * compute the reduction as -1 * mp_reduce(mp_abs(a)) [pseudo code]. + */ +int mp_reduce(mp_int *a, mp_int *b, mp_int *c); + +/* setups the montgomery reduction */ +int mp_montgomery_setup(mp_int *a, mp_digit *mp); + +/* computes a = B**n mod b without division or multiplication useful for + * normalizing numbers in a Montgomery system. + */ +int mp_montgomery_calc_normalization(mp_int *a, mp_int *b); + +/* computes x/R == x (mod N) via Montgomery Reduction */ +int mp_montgomery_reduce(mp_int *a, mp_int *m, mp_digit mp); + +/* returns 1 if a is a valid DR modulus */ +int mp_dr_is_modulus(mp_int *a); + +/* sets the value of "d" required for mp_dr_reduce */ +void mp_dr_setup(mp_int *a, mp_digit *d); + +/* reduces a modulo b using the Diminished Radix method */ +int mp_dr_reduce(mp_int *a, mp_int *b, mp_digit mp); + +/* returns true if a can be reduced with mp_reduce_2k */ +int mp_reduce_is_2k(mp_int *a); + +/* determines k value for 2k reduction */ +int mp_reduce_2k_setup(mp_int *a, mp_digit *d); + +/* reduces a modulo b where b is of the form 2**p - k [0 <= a] */ +int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d); + +/* d = a**b (mod c) */ +int mp_exptmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d); + +/* ---> Primes <--- */ + +/* number of primes */ +#ifdef MP_8BIT + #define PRIME_SIZE 31 +#else + #define PRIME_SIZE 256 +#endif + +/* table of first PRIME_SIZE primes */ +extern const mp_digit ltm_prime_tab[]; + +/* result=1 if a is divisible by one of the first PRIME_SIZE primes */ +int mp_prime_is_divisible(mp_int *a, int *result); + +/* performs one Fermat test of "a" using base "b". + * Sets result to 0 if composite or 1 if probable prime + */ +int mp_prime_fermat(mp_int *a, mp_int *b, int *result); + +/* performs one Miller-Rabin test of "a" using base "b". + * Sets result to 0 if composite or 1 if probable prime + */ +int mp_prime_miller_rabin(mp_int *a, mp_int *b, int *result); + +/* This gives [for a given bit size] the number of trials required + * such that Miller-Rabin gives a prob of failure lower than 2^-96 + */ +int mp_prime_rabin_miller_trials(int size); + +/* performs t rounds of Miller-Rabin on "a" using the first + * t prime bases. Also performs an initial sieve of trial + * division. Determines if "a" is prime with probability + * of error no more than (1/4)**t. + * + * Sets result to 1 if probably prime, 0 otherwise + */ +int mp_prime_is_prime(mp_int *a, int t, int *result); + +/* finds the next prime after the number "a" using "t" trials + * of Miller-Rabin. + * + * bbs_style = 1 means the prime must be congruent to 3 mod 4 + */ +int mp_prime_next_prime(mp_int *a, int t, int bbs_style); + +/* makes a truly random prime of a given size (bytes), + * call with bbs = 1 if you want it to be congruent to 3 mod 4 + * + * You have to supply a callback which fills in a buffer with random bytes. "dat" is a parameter you can + * have passed to the callback (e.g. a state or something). This function doesn't use "dat" itself + * so it can be NULL + * + * The prime generated will be larger than 2^(8*size). + */ +#define mp_prime_random(a, t, size, bbs, cb, dat) mp_prime_random_ex(a, t, ((size) * 8) + 1, (bbs==1)?LTM_PRIME_BBS:0, cb, dat) + +/* makes a truly random prime of a given size (bits), + * + * Flags are as follows: + * + * LTM_PRIME_BBS - make prime congruent to 3 mod 4 + * LTM_PRIME_SAFE - make sure (p-1)/2 is prime as well (implies LTM_PRIME_BBS) + * LTM_PRIME_2MSB_OFF - make the 2nd highest bit zero + * LTM_PRIME_2MSB_ON - make the 2nd highest bit one + * + * You have to supply a callback which fills in a buffer with random bytes. "dat" is a parameter you can + * have passed to the callback (e.g. a state or something). This function doesn't use "dat" itself + * so it can be NULL + * + */ +int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback cb, void *dat); + +/* ---> radix conversion <--- */ +int mp_count_bits(mp_int *a); + +int mp_unsigned_bin_size(mp_int *a); +int mp_read_unsigned_bin(mp_int *a, unsigned char *b, int c); +int mp_to_unsigned_bin(mp_int *a, unsigned char *b); + +int mp_signed_bin_size(mp_int *a); +int mp_read_signed_bin(mp_int *a, unsigned char *b, int c); +int mp_to_signed_bin(mp_int *a, unsigned char *b); + +int mp_read_radix(mp_int *a, char *str, int radix); +int mp_toradix(mp_int *a, char *str, int radix); +int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen); +int mp_radix_size(mp_int *a, int radix, int *size); + +int mp_fread(mp_int *a, int radix, FILE *stream); +int mp_fwrite(mp_int *a, int radix, FILE *stream); + +#define mp_read_raw(mp, str, len) mp_read_signed_bin((mp), (str), (len)) +#define mp_raw_size(mp) mp_signed_bin_size(mp) +#define mp_toraw(mp, str) mp_to_signed_bin((mp), (str)) +#define mp_read_mag(mp, str, len) mp_read_unsigned_bin((mp), (str), (len)) +#define mp_mag_size(mp) mp_unsigned_bin_size(mp) +#define mp_tomag(mp, str) mp_to_unsigned_bin((mp), (str)) + +#define mp_tobinary(M, S) mp_toradix((M), (S), 2) +#define mp_tooctal(M, S) mp_toradix((M), (S), 8) +#define mp_todecimal(M, S) mp_toradix((M), (S), 10) +#define mp_tohex(M, S) mp_toradix((M), (S), 16) + +/* lowlevel functions, do not call! */ +int s_mp_add(mp_int *a, mp_int *b, mp_int *c); +int s_mp_sub(mp_int *a, mp_int *b, mp_int *c); +#define s_mp_mul(a, b, c) s_mp_mul_digs(a, b, c, (a)->used + (b)->used + 1) +int fast_s_mp_mul_digs(mp_int *a, mp_int *b, mp_int *c, int digs); +int s_mp_mul_digs(mp_int *a, mp_int *b, mp_int *c, int digs); +int fast_s_mp_mul_high_digs(mp_int *a, mp_int *b, mp_int *c, int digs); +int s_mp_mul_high_digs(mp_int *a, mp_int *b, mp_int *c, int digs); +int fast_s_mp_sqr(mp_int *a, mp_int *b); +int s_mp_sqr(mp_int *a, mp_int *b); +int mp_karatsuba_mul(mp_int *a, mp_int *b, mp_int *c); +int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c); +int mp_karatsuba_sqr(mp_int *a, mp_int *b); +int mp_toom_sqr(mp_int *a, mp_int *b); +int fast_mp_invmod(mp_int *a, mp_int *b, mp_int *c); +int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c); +int fast_mp_montgomery_reduce(mp_int *a, mp_int *m, mp_digit mp); +int mp_exptmod_fast(mp_int *G, mp_int *X, mp_int *P, mp_int *Y, int mode); +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y); +void bn_reverse(unsigned char *s, int len); + +extern const char *mp_s_rmap; + +#ifdef __cplusplus + } +#endif + +#endif + diff --git a/libtommath/tommath.out b/libtommath/tommath.out new file mode 100644 index 0000000..9f62617 --- /dev/null +++ b/libtommath/tommath.out @@ -0,0 +1,139 @@ +\BOOKMARK [0][-]{chapter.1}{Introduction}{} +\BOOKMARK [1][-]{section.1.1}{Multiple Precision Arithmetic}{chapter.1} +\BOOKMARK [2][-]{subsection.1.1.1}{What is Multiple Precision Arithmetic?}{section.1.1} +\BOOKMARK [2][-]{subsection.1.1.2}{The Need for Multiple Precision Arithmetic}{section.1.1} +\BOOKMARK [2][-]{subsection.1.1.3}{Benefits of Multiple Precision Arithmetic}{section.1.1} +\BOOKMARK [1][-]{section.1.2}{Purpose of This Text}{chapter.1} +\BOOKMARK [1][-]{section.1.3}{Discussion and Notation}{chapter.1} +\BOOKMARK [2][-]{subsection.1.3.1}{Notation}{section.1.3} +\BOOKMARK [2][-]{subsection.1.3.2}{Precision Notation}{section.1.3} +\BOOKMARK [2][-]{subsection.1.3.3}{Algorithm Inputs and Outputs}{section.1.3} +\BOOKMARK [2][-]{subsection.1.3.4}{Mathematical Expressions}{section.1.3} +\BOOKMARK [2][-]{subsection.1.3.5}{Work Effort}{section.1.3} +\BOOKMARK [1][-]{section.1.4}{Exercises}{chapter.1} +\BOOKMARK [1][-]{section.1.5}{Introduction to LibTomMath}{chapter.1} +\BOOKMARK [2][-]{subsection.1.5.1}{What is LibTomMath?}{section.1.5} +\BOOKMARK [2][-]{subsection.1.5.2}{Goals of LibTomMath}{section.1.5} +\BOOKMARK [1][-]{section.1.6}{Choice of LibTomMath}{chapter.1} +\BOOKMARK [2][-]{subsection.1.6.1}{Code Base}{section.1.6} +\BOOKMARK [2][-]{subsection.1.6.2}{API Simplicity}{section.1.6} +\BOOKMARK [2][-]{subsection.1.6.3}{Optimizations}{section.1.6} +\BOOKMARK [2][-]{subsection.1.6.4}{Portability and Stability}{section.1.6} +\BOOKMARK [2][-]{subsection.1.6.5}{Choice}{section.1.6} +\BOOKMARK [0][-]{chapter.2}{Getting Started}{} +\BOOKMARK [1][-]{section.2.1}{Library Basics}{chapter.2} +\BOOKMARK [1][-]{section.2.2}{What is a Multiple Precision Integer?}{chapter.2} +\BOOKMARK [2][-]{subsection.2.2.1}{The mp\137int Structure}{section.2.2} +\BOOKMARK [1][-]{section.2.3}{Argument Passing}{chapter.2} +\BOOKMARK [1][-]{section.2.4}{Return Values}{chapter.2} +\BOOKMARK [1][-]{section.2.5}{Initialization and Clearing}{chapter.2} +\BOOKMARK [2][-]{subsection.2.5.1}{Initializing an mp\137int}{section.2.5} +\BOOKMARK [2][-]{subsection.2.5.2}{Clearing an mp\137int}{section.2.5} +\BOOKMARK [1][-]{section.2.6}{Maintenance Algorithms}{chapter.2} +\BOOKMARK [2][-]{subsection.2.6.1}{Augmenting an mp\137int's Precision}{section.2.6} +\BOOKMARK [2][-]{subsection.2.6.2}{Initializing Variable Precision mp\137ints}{section.2.6} +\BOOKMARK [2][-]{subsection.2.6.3}{Multiple Integer Initializations and Clearings}{section.2.6} +\BOOKMARK [2][-]{subsection.2.6.4}{Clamping Excess Digits}{section.2.6} +\BOOKMARK [0][-]{chapter.3}{Basic Operations}{} +\BOOKMARK [1][-]{section.3.1}{Introduction}{chapter.3} +\BOOKMARK [1][-]{section.3.2}{Assigning Values to mp\137int Structures}{chapter.3} +\BOOKMARK [2][-]{subsection.3.2.1}{Copying an mp\137int}{section.3.2} +\BOOKMARK [2][-]{subsection.3.2.2}{Creating a Clone}{section.3.2} +\BOOKMARK [1][-]{section.3.3}{Zeroing an Integer}{chapter.3} +\BOOKMARK [1][-]{section.3.4}{Sign Manipulation}{chapter.3} +\BOOKMARK [2][-]{subsection.3.4.1}{Absolute Value}{section.3.4} +\BOOKMARK [2][-]{subsection.3.4.2}{Integer Negation}{section.3.4} +\BOOKMARK [1][-]{section.3.5}{Small Constants}{chapter.3} +\BOOKMARK [2][-]{subsection.3.5.1}{Setting Small Constants}{section.3.5} +\BOOKMARK [2][-]{subsection.3.5.2}{Setting Large Constants}{section.3.5} +\BOOKMARK [1][-]{section.3.6}{Comparisons}{chapter.3} +\BOOKMARK [2][-]{subsection.3.6.1}{Unsigned Comparisions}{section.3.6} +\BOOKMARK [2][-]{subsection.3.6.2}{Signed Comparisons}{section.3.6} +\BOOKMARK [0][-]{chapter.4}{Basic Arithmetic}{} +\BOOKMARK [1][-]{section.4.1}{Introduction}{chapter.4} +\BOOKMARK [1][-]{section.4.2}{Addition and Subtraction}{chapter.4} +\BOOKMARK [2][-]{subsection.4.2.1}{Low Level Addition}{section.4.2} +\BOOKMARK [2][-]{subsection.4.2.2}{Low Level Subtraction}{section.4.2} +\BOOKMARK [2][-]{subsection.4.2.3}{High Level Addition}{section.4.2} +\BOOKMARK [2][-]{subsection.4.2.4}{High Level Subtraction}{section.4.2} +\BOOKMARK [1][-]{section.4.3}{Bit and Digit Shifting}{chapter.4} +\BOOKMARK [2][-]{subsection.4.3.1}{Multiplication by Two}{section.4.3} +\BOOKMARK [2][-]{subsection.4.3.2}{Division by Two}{section.4.3} +\BOOKMARK [1][-]{section.4.4}{Polynomial Basis Operations}{chapter.4} +\BOOKMARK [2][-]{subsection.4.4.1}{Multiplication by x}{section.4.4} +\BOOKMARK [2][-]{subsection.4.4.2}{Division by x}{section.4.4} +\BOOKMARK [1][-]{section.4.5}{Powers of Two}{chapter.4} +\BOOKMARK [2][-]{subsection.4.5.1}{Multiplication by Power of Two}{section.4.5} +\BOOKMARK [2][-]{subsection.4.5.2}{Division by Power of Two}{section.4.5} +\BOOKMARK [2][-]{subsection.4.5.3}{Remainder of Division by Power of Two}{section.4.5} +\BOOKMARK [0][-]{chapter.5}{Multiplication and Squaring}{} +\BOOKMARK [1][-]{section.5.1}{The Multipliers}{chapter.5} +\BOOKMARK [1][-]{section.5.2}{Multiplication}{chapter.5} +\BOOKMARK [2][-]{subsection.5.2.1}{The Baseline Multiplication}{section.5.2} +\BOOKMARK [2][-]{subsection.5.2.2}{Faster Multiplication by the ``Comba'' Method}{section.5.2} +\BOOKMARK [2][-]{subsection.5.2.3}{Polynomial Basis Multiplication}{section.5.2} +\BOOKMARK [2][-]{subsection.5.2.4}{Karatsuba Multiplication}{section.5.2} +\BOOKMARK [2][-]{subsection.5.2.5}{Toom-Cook 3-Way Multiplication}{section.5.2} +\BOOKMARK [2][-]{subsection.5.2.6}{Signed Multiplication}{section.5.2} +\BOOKMARK [1][-]{section.5.3}{Squaring}{chapter.5} +\BOOKMARK [2][-]{subsection.5.3.1}{The Baseline Squaring Algorithm}{section.5.3} +\BOOKMARK [2][-]{subsection.5.3.2}{Faster Squaring by the ``Comba'' Method}{section.5.3} +\BOOKMARK [2][-]{subsection.5.3.3}{Polynomial Basis Squaring}{section.5.3} +\BOOKMARK [2][-]{subsection.5.3.4}{Karatsuba Squaring}{section.5.3} +\BOOKMARK [2][-]{subsection.5.3.5}{Toom-Cook Squaring}{section.5.3} +\BOOKMARK [2][-]{subsection.5.3.6}{High Level Squaring}{section.5.3} +\BOOKMARK [0][-]{chapter.6}{Modular Reduction}{} +\BOOKMARK [1][-]{section.6.1}{Basics of Modular Reduction}{chapter.6} +\BOOKMARK [1][-]{section.6.2}{The Barrett Reduction}{chapter.6} +\BOOKMARK [2][-]{subsection.6.2.1}{Fixed Point Arithmetic}{section.6.2} +\BOOKMARK [2][-]{subsection.6.2.2}{Choosing a Radix Point}{section.6.2} +\BOOKMARK [2][-]{subsection.6.2.3}{Trimming the Quotient}{section.6.2} +\BOOKMARK [2][-]{subsection.6.2.4}{Trimming the Residue}{section.6.2} +\BOOKMARK [2][-]{subsection.6.2.5}{The Barrett Algorithm}{section.6.2} +\BOOKMARK [2][-]{subsection.6.2.6}{The Barrett Setup Algorithm}{section.6.2} +\BOOKMARK [1][-]{section.6.3}{The Montgomery Reduction}{chapter.6} +\BOOKMARK [2][-]{subsection.6.3.1}{Digit Based Montgomery Reduction}{section.6.3} +\BOOKMARK [2][-]{subsection.6.3.2}{Baseline Montgomery Reduction}{section.6.3} +\BOOKMARK [2][-]{subsection.6.3.3}{Faster ``Comba'' Montgomery Reduction}{section.6.3} +\BOOKMARK [2][-]{subsection.6.3.4}{Montgomery Setup}{section.6.3} +\BOOKMARK [1][-]{section.6.4}{The Diminished Radix Algorithm}{chapter.6} +\BOOKMARK [2][-]{subsection.6.4.1}{Choice of Moduli}{section.6.4} +\BOOKMARK [2][-]{subsection.6.4.2}{Choice of k}{section.6.4} +\BOOKMARK [2][-]{subsection.6.4.3}{Restricted Diminished Radix Reduction}{section.6.4} +\BOOKMARK [2][-]{subsection.6.4.4}{Unrestricted Diminished Radix Reduction}{section.6.4} +\BOOKMARK [1][-]{section.6.5}{Algorithm Comparison}{chapter.6} +\BOOKMARK [0][-]{chapter.7}{Exponentiation}{} +\BOOKMARK [1][-]{section.7.1}{Exponentiation Basics}{chapter.7} +\BOOKMARK [2][-]{subsection.7.1.1}{Single Digit Exponentiation}{section.7.1} +\BOOKMARK [1][-]{section.7.2}{k-ary Exponentiation}{chapter.7} +\BOOKMARK [2][-]{subsection.7.2.1}{Optimal Values of k}{section.7.2} +\BOOKMARK [2][-]{subsection.7.2.2}{Sliding-Window Exponentiation}{section.7.2} +\BOOKMARK [1][-]{section.7.3}{Modular Exponentiation}{chapter.7} +\BOOKMARK [2][-]{subsection.7.3.1}{Barrett Modular Exponentiation}{section.7.3} +\BOOKMARK [1][-]{section.7.4}{Quick Power of Two}{chapter.7} +\BOOKMARK [0][-]{chapter.8}{Higher Level Algorithms}{} +\BOOKMARK [1][-]{section.8.1}{Integer Division with Remainder}{chapter.8} +\BOOKMARK [2][-]{subsection.8.1.1}{Quotient Estimation}{section.8.1} +\BOOKMARK [2][-]{subsection.8.1.2}{Normalized Integers}{section.8.1} +\BOOKMARK [2][-]{subsection.8.1.3}{Radix- Division with Remainder}{section.8.1} +\BOOKMARK [1][-]{section.8.2}{Single Digit Helpers}{chapter.8} +\BOOKMARK [2][-]{subsection.8.2.1}{Single Digit Addition and Subtraction}{section.8.2} +\BOOKMARK [2][-]{subsection.8.2.2}{Single Digit Multiplication}{section.8.2} +\BOOKMARK [2][-]{subsection.8.2.3}{Single Digit Division}{section.8.2} +\BOOKMARK [2][-]{subsection.8.2.4}{Single Digit Root Extraction}{section.8.2} +\BOOKMARK [1][-]{section.8.3}{Random Number Generation}{chapter.8} +\BOOKMARK [1][-]{section.8.4}{Formatted Representations}{chapter.8} +\BOOKMARK [2][-]{subsection.8.4.1}{Reading Radix-n Input}{section.8.4} +\BOOKMARK [2][-]{subsection.8.4.2}{Generating Radix-n Output}{section.8.4} +\BOOKMARK [0][-]{chapter.9}{Number Theoretic Algorithms}{} +\BOOKMARK [1][-]{section.9.1}{Greatest Common Divisor}{chapter.9} +\BOOKMARK [2][-]{subsection.9.1.1}{Complete Greatest Common Divisor}{section.9.1} +\BOOKMARK [1][-]{section.9.2}{Least Common Multiple}{chapter.9} +\BOOKMARK [1][-]{section.9.3}{Jacobi Symbol Computation}{chapter.9} +\BOOKMARK [2][-]{subsection.9.3.1}{Jacobi Symbol}{section.9.3} +\BOOKMARK [1][-]{section.9.4}{Modular Inverse}{chapter.9} +\BOOKMARK [2][-]{subsection.9.4.1}{General Case}{section.9.4} +\BOOKMARK [1][-]{section.9.5}{Primality Tests}{chapter.9} +\BOOKMARK [2][-]{subsection.9.5.1}{Trial Division}{section.9.5} +\BOOKMARK [2][-]{subsection.9.5.2}{The Fermat Test}{section.9.5} +\BOOKMARK [2][-]{subsection.9.5.3}{The Miller-Rabin Test}{section.9.5} diff --git a/libtommath/tommath.pdf b/libtommath/tommath.pdf new file mode 100644 index 0000000..88e2dc7 Binary files /dev/null and b/libtommath/tommath.pdf differ diff --git a/libtommath/tommath.src b/libtommath/tommath.src new file mode 100644 index 0000000..6ee842d --- /dev/null +++ b/libtommath/tommath.src @@ -0,0 +1,6314 @@ +\documentclass[b5paper]{book} +\usepackage{hyperref} +\usepackage{makeidx} +\usepackage{amssymb} +\usepackage{color} +\usepackage{alltt} +\usepackage{graphicx} +\usepackage{layout} +\def\union{\cup} +\def\intersect{\cap} +\def\getsrandom{\stackrel{\rm R}{\gets}} +\def\cross{\times} +\def\cat{\hspace{0.5em} \| \hspace{0.5em}} +\def\catn{$\|$} +\def\divides{\hspace{0.3em} | \hspace{0.3em}} +\def\nequiv{\not\equiv} +\def\approx{\raisebox{0.2ex}{\mbox{\small $\sim$}}} +\def\lcm{{\rm lcm}} +\def\gcd{{\rm gcd}} +\def\log{{\rm log}} +\def\ord{{\rm ord}} +\def\abs{{\mathit abs}} +\def\rep{{\mathit rep}} +\def\mod{{\mathit\ mod\ }} +\renewcommand{\pmod}[1]{\ ({\rm mod\ }{#1})} +\newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} +\newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} +\def\Or{{\rm\ or\ }} +\def\And{{\rm\ and\ }} +\def\iff{\hspace{1em}\Longleftrightarrow\hspace{1em}} +\def\implies{\Rightarrow} +\def\undefined{{\rm ``undefined"}} +\def\Proof{\vspace{1ex}\noindent {\bf Proof:}\hspace{1em}} +\let\oldphi\phi +\def\phi{\varphi} +\def\Pr{{\rm Pr}} +\newcommand{\str}[1]{{\mathbf{#1}}} +\def\F{{\mathbb F}} +\def\N{{\mathbb N}} +\def\Z{{\mathbb Z}} +\def\R{{\mathbb R}} +\def\C{{\mathbb C}} +\def\Q{{\mathbb Q}} +\definecolor{DGray}{gray}{0.5} +\newcommand{\emailaddr}[1]{\mbox{$<${#1}$>$}} +\def\twiddle{\raisebox{0.3ex}{\mbox{\tiny $\sim$}}} +\def\gap{\vspace{0.5ex}} +\makeindex +\begin{document} +\frontmatter +\pagestyle{empty} +\title{Implementing Multiple Precision Arithmetic \\ ~ \\ Draft Edition } +\author{\mbox{ +%\begin{small} +\begin{tabular}{c} +Tom St Denis \\ +Algonquin College \\ +\\ +Mads Rasmussen \\ +Open Communications Security \\ +\\ +Greg Rose \\ +QUALCOMM Australia \\ +\end{tabular} +%\end{small} +} +} +\maketitle +This text has been placed in the public domain. This text corresponds to the v0.30 release of the +LibTomMath project. + +\begin{alltt} +Tom St Denis +111 Banning Rd +Ottawa, Ontario +K2L 1C3 +Canada + +Phone: 1-613-836-3160 +Email: tomstdenis@iahu.ca +\end{alltt} + +This text is formatted to the international B5 paper size of 176mm wide by 250mm tall using the \LaTeX{} +{\em book} macro package and the Perl {\em booker} package. + +\tableofcontents +\listoffigures +\chapter*{Prefaces to the Draft Edition} +I started this text in April 2003 to complement my LibTomMath library. That is, explain how to implement the functions +contained in LibTomMath. The goal is to have a textbook that any Computer Science student can use when implementing their +own multiple precision arithmetic. The plan I wanted to follow was flesh out all the +ideas and concepts I had floating around in my head and then work on it afterwards refining a little bit at a time. Chance +would have it that I ended up with my summer off from Algonquin College and I was given four months solid to work on the +text. + +Choosing to not waste any time I dove right into the project even before my spring semester was finished. I wrote a bit +off and on at first. The moment my exams were finished I jumped into long 12 to 16 hour days. The result after only +a couple of months was a ten chapter, three hundred page draft that I quickly had distributed to anyone who wanted +to read it. I had Jean-Luc Cooke print copies for me and I brought them to Crypto'03 in Santa Barbara. So far I have +managed to grab a certain level of attention having people from around the world ask me for copies of the text was certain +rewarding. + +Now we are past December 2003. By this time I had pictured that I would have at least finished my second draft of the text. +Currently I am far off from this goal. I've done partial re-writes of chapters one, two and three but they are not even +finished yet. I haven't given up on the project, only had some setbacks. First O'Reilly declined to publish the text then +Addison-Wesley and Greg is tried another which I don't know the name of. However, at this point I want to focus my energy +onto finishing the book not securing a contract. + +So why am I writing this text? It seems like a lot of work right? Most certainly it is a lot of work writing a textbook. +Even the simplest introductory material has to be lined with references and figures. A lot of the text has to be re-written +from point form to prose form to ensure an easier read. Why am I doing all this work for free then? Simple. My philosophy +is quite simply ``Open Source. Open Academia. Open Minds'' which means that to achieve a goal of open minds, that is, +people willing to accept new ideas and explore the unknown you have to make available material they can access freely +without hinderance. + +I've been writing free software since I was about sixteen but only recently have I hit upon software that people have come +to depend upon. I started LibTomCrypt in December 2001 and now several major companies use it as integral portions of their +software. Several educational institutions use it as a matter of course and many freelance developers use it as +part of their projects. To further my contributions I started the LibTomMath project in December 2002 aimed at providing +multiple precision arithmetic routines that students could learn from. That is write routines that are not only easy +to understand and follow but provide quite impressive performance considering they are all in standard portable ISO C. + +The second leg of my philosophy is ``Open Academia'' which is where this textbook comes in. In the end, when all is +said and done the text will be useable by educational institutions as a reference on multiple precision arithmetic. + +At this time I feel I should share a little information about myself. The most common question I was asked at +Crypto'03, perhaps just out of professional courtesy, was which school I either taught at or attended. The unfortunate +truth is that I neither teach at or attend a school of academic reputation. I'm currently at Algonquin College which +is what I'd like to call ``somewhat academic but mostly vocational'' college. In otherwords, job training. + +I'm a 21 year old computer science student mostly self-taught in the areas I am aware of (which includes a half-dozen +computer science fields, a few fields of mathematics and some English). I look forward to teaching someday but I am +still far off from that goal. + +Now it would be improper for me to not introduce the rest of the texts co-authors. While they are only contributing +corrections and editorial feedback their support has been tremendously helpful in presenting the concepts laid out +in the text so far. Greg has always been there for me. He has tracked my LibTom projects since their inception and even +sent cheques to help pay tuition from time to time. His background has provided a wonderful source to bounce ideas off +of and improve the quality of my writing. Mads is another fellow who has just ``been there''. I don't even recall what +his interest in the LibTom projects is but I'm definitely glad he has been around. His ability to catch logical errors +in my written English have saved me on several occasions to say the least. + +What to expect next? Well this is still a rough draft. I've only had the chance to update a few chapters. However, I've +been getting the feeling that people are starting to use my text and I owe them some updated material. My current tenative +plan is to edit one chapter every two weeks starting January 4th. It seems insane but my lower course load at college +should provide ample time. By Crypto'04 I plan to have a 2nd draft of the text polished and ready to hand out to as many +people who will take it. + +\begin{flushright} Tom St Denis \end{flushright} + +\newpage +I found the opportunity to work with Tom appealing for several reasons, not only could I broaden my own horizons, but also +contribute to educate others facing the problem of having to handle big number mathematical calculations. + +This book is Tom's child and he has been caring and fostering the project ever since the beginning with a clear mind of +how he wanted the project to turn out. I have helped by proofreading the text and we have had several discussions about +the layout and language used. + +I hold a masters degree in cryptography from the University of Southern Denmark and have always been interested in the +practical aspects of cryptography. + +Having worked in the security consultancy business for several years in S\~{a}o Paulo, Brazil, I have been in touch with a +great deal of work in which multiple precision mathematics was needed. Understanding the possibilities for speeding up +multiple precision calculations is often very important since we deal with outdated machine architecture where modular +reductions, for example, become painfully slow. + +This text is for people who stop and wonder when first examining algorithms such as RSA for the first time and asks +themselves, ``You tell me this is only secure for large numbers, fine; but how do you implement these numbers?'' + +\begin{flushright} +Mads Rasmussen + +S\~{a}o Paulo - SP + +Brazil +\end{flushright} + +\newpage +It's all because I broke my leg. That just happened to be at about the same time that Tom asked for someone to review the section of the book about +Karatsuba multiplication. I was laid up, alone and immobile, and thought ``Why not?'' I vaguely knew what Karatsuba multiplication was, but not +really, so I thought I could help, learn, and stop myself from watching daytime cable TV, all at once. + +At the time of writing this, I've still not met Tom or Mads in meatspace. I've been following Tom's progress since his first splash on the +sci.crypt Usenet news group. I watched him go from a clueless newbie, to the cryptographic equivalent of a reformed smoker, to a real +contributor to the field, over a period of about two years. I've been impressed with his obvious intelligence, and astounded by his productivity. +Of course, he's young enough to be my own child, so he doesn't have my problems with staying awake. + +When I reviewed that single section of the book, in its very earliest form, I was very pleasantly surprised. So I decided to collaborate more fully, +and at least review all of it, and perhaps write some bits too. There's still a long way to go with it, and I have watched a number of close +friends go through the mill of publication, so I think that the way to go is longer than Tom thinks it is. Nevertheless, it's a good effort, +and I'm pleased to be involved with it. + +\begin{flushright} +Greg Rose, Sydney, Australia, June 2003. +\end{flushright} + +\mainmatter +\pagestyle{headings} +\chapter{Introduction} +\section{Multiple Precision Arithmetic} + +\subsection{What is Multiple Precision Arithmetic?} +When we think of long-hand arithmetic such as addition or multiplication we rarely consider the fact that we instinctively +raise or lower the precision of the numbers we are dealing with. For example, in decimal we almost immediate can +reason that $7$ times $6$ is $42$. However, $42$ has two digits of precision as opposed to one digit we started with. +Further multiplications of say $3$ result in a larger precision result $126$. In these few examples we have multiple +precisions for the numbers we are working with. Despite the various levels of precision a single subset\footnote{With the occasional optimization.} + of algorithms can be designed to accomodate them. + +By way of comparison a fixed or single precision operation would lose precision on various operations. For example, in +the decimal system with fixed precision $6 \cdot 7 = 2$. + +Essentially at the heart of computer based multiple precision arithmetic are the same long-hand algorithms taught in +schools to manually add, subtract, multiply and divide. + +\subsection{The Need for Multiple Precision Arithmetic} +The most prevalent need for multiple precision arithmetic, often referred to as ``bignum'' math, is within the implementation +of public-key cryptography algorithms. Algorithms such as RSA \cite{RSAREF} and Diffie-Hellman \cite{DHREF} require +integers of significant magnitude to resist known cryptanalytic attacks. For example, at the time of this writing a +typical RSA modulus would be at least greater than $10^{309}$. However, modern programming languages such as ISO C \cite{ISOC} and +Java \cite{JAVA} only provide instrinsic support for integers which are relatively small and single precision. + +\begin{figure}[!here] +\begin{center} +\begin{tabular}{|r|c|} +\hline \textbf{Data Type} & \textbf{Range} \\ +\hline char & $-128 \ldots 127$ \\ +\hline short & $-32768 \ldots 32767$ \\ +\hline long & $-2147483648 \ldots 2147483647$ \\ +\hline long long & $-9223372036854775808 \ldots 9223372036854775807$ \\ +\hline +\end{tabular} +\end{center} +\caption{Typical Data Types for the C Programming Language} +\label{fig:ISOC} +\end{figure} + +The largest data type guaranteed to be provided by the ISO C programming +language\footnote{As per the ISO C standard. However, each compiler vendor is allowed to augment the precision as they +see fit.} can only represent values up to $10^{19}$ as shown in figure \ref{fig:ISOC}. On its own the C language is +insufficient to accomodate the magnitude required for the problem at hand. An RSA modulus of magnitude $10^{19}$ could be +trivially factored\footnote{A Pollard-Rho factoring would take only $2^{16}$ time.} on the average desktop computer, +rendering any protocol based on the algorithm insecure. Multiple precision algorithms solve this very problem by +extending the range of representable integers while using single precision data types. + +Most advancements in fast multiple precision arithmetic stem from the need for faster and more efficient cryptographic +primitives. Faster modular reduction and exponentiation algorithms such as Barrett's algorithm, which have appeared in +various cryptographic journals, can render algorithms such as RSA and Diffie-Hellman more efficient. In fact, several +major companies such as RSA Security, Certicom and Entrust have built entire product lines on the implementation and +deployment of efficient algorithms. + +However, cryptography is not the only field of study that can benefit from fast multiple precision integer routines. +Another auxiliary use of multiple precision integers is high precision floating point data types. +The basic IEEE \cite{IEEE} standard floating point type is made up of an integer mantissa $q$, an exponent $e$ and a sign bit $s$. +Numbers are given in the form $n = q \cdot b^e \cdot -1^s$ where $b = 2$ is the most common base for IEEE. Since IEEE +floating point is meant to be implemented in hardware the precision of the mantissa is often fairly small +(\textit{23, 48 and 64 bits}). The mantissa is merely an integer and a multiple precision integer could be used to create +a mantissa of much larger precision than hardware alone can efficiently support. This approach could be useful where +scientific applications must minimize the total output error over long calculations. + +Yet another use for large integers is within arithmetic on polynomials of large characteristic (i.e. $GF(p)[x]$ for large $p$). +In fact the library discussed within this text has already been used to form a polynomial basis library\footnote{See \url{http://poly.libtomcrypt.org} for more details.}. + +\subsection{Benefits of Multiple Precision Arithmetic} +\index{precision} +The benefit of multiple precision representations over single or fixed precision representations is that +no precision is lost while representing the result of an operation which requires excess precision. For example, +the product of two $n$-bit integers requires at least $2n$ bits of precision to be represented faithfully. A multiple +precision algorithm would augment the precision of the destination to accomodate the result while a single precision system +would truncate excess bits to maintain a fixed level of precision. + +It is possible to implement algorithms which require large integers with fixed precision algorithms. For example, elliptic +curve cryptography (\textit{ECC}) is often implemented on smartcards by fixing the precision of the integers to the maximum +size the system will ever need. Such an approach can lead to vastly simpler algorithms which can accomodate the +integers required even if the host platform cannot natively accomodate them\footnote{For example, the average smartcard +processor has an 8 bit accumulator.}. However, as efficient as such an approach may be, the resulting source code is not +normally very flexible. It cannot, at runtime, accomodate inputs of higher magnitude than the designer anticipated. + +Multiple precision algorithms have the most overhead of any style of arithmetic. For the the most part the +overhead can be kept to a minimum with careful planning, but overall, it is not well suited for most memory starved +platforms. However, multiple precision algorithms do offer the most flexibility in terms of the magnitude of the +inputs. That is, the same algorithms based on multiple precision integers can accomodate any reasonable size input +without the designer's explicit forethought. This leads to lower cost of ownership for the code as it only has to +be written and tested once. + +\section{Purpose of This Text} +The purpose of this text is to instruct the reader regarding how to implement efficient multiple precision algorithms. +That is to not only explain a limited subset of the core theory behind the algorithms but also the various ``house keeping'' +elements that are neglected by authors of other texts on the subject. Several well reknowned texts \cite{TAOCPV2,HAC} +give considerably detailed explanations of the theoretical aspects of algorithms and often very little information +regarding the practical implementation aspects. + +In most cases how an algorithm is explained and how it is actually implemented are two very different concepts. For +example, the Handbook of Applied Cryptography (\textit{HAC}), algorithm 14.7 on page 594, gives a relatively simple +algorithm for performing multiple precision integer addition. However, the description lacks any discussion concerning +the fact that the two integer inputs may be of differing magnitudes. As a result the implementation is not as simple +as the text would lead people to believe. Similarly the division routine (\textit{algorithm 14.20, pp. 598}) does not +discuss how to handle sign or handle the dividend's decreasing magnitude in the main loop (\textit{step \#3}). + +Both texts also do not discuss several key optimal algorithms required such as ``Comba'' and Karatsuba multipliers +and fast modular inversion, which we consider practical oversights. These optimal algorithms are vital to achieve +any form of useful performance in non-trivial applications. + +To solve this problem the focus of this text is on the practical aspects of implementing a multiple precision integer +package. As a case study the ``LibTomMath''\footnote{Available at \url{http://math.libtomcrypt.org}} package is used +to demonstrate algorithms with real implementations\footnote{In the ISO C programming language.} that have been field +tested and work very well. The LibTomMath library is freely available on the Internet for all uses and this text +discusses a very large portion of the inner workings of the library. + +The algorithms that are presented will always include at least one ``pseudo-code'' description followed +by the actual C source code that implements the algorithm. The pseudo-code can be used to implement the same +algorithm in other programming languages as the reader sees fit. + +This text shall also serve as a walkthrough of the creation of multiple precision algorithms from scratch. Showing +the reader how the algorithms fit together as well as where to start on various taskings. + +\section{Discussion and Notation} +\subsection{Notation} +A multiple precision integer of $n$-digits shall be denoted as $x = (x_{n-1}, \ldots, x_1, x_0)_{ \beta }$ and represent +the integer $x \equiv \sum_{i=0}^{n-1} x_i\beta^i$. The elements of the array $x$ are said to be the radix $\beta$ digits +of the integer. For example, $x = (1,2,3)_{10}$ would represent the integer +$1\cdot 10^2 + 2\cdot10^1 + 3\cdot10^0 = 123$. + +\index{mp\_int} +The term ``mp\_int'' shall refer to a composite structure which contains the digits of the integer it represents, as well +as auxilary data required to manipulate the data. These additional members are discussed further in section +\ref{sec:MPINT}. For the purposes of this text a ``multiple precision integer'' and an ``mp\_int'' are assumed to be +synonymous. When an algorithm is specified to accept an mp\_int variable it is assumed the various auxliary data members +are present as well. An expression of the type \textit{variablename.item} implies that it should evaluate to the +member named ``item'' of the variable. For example, a string of characters may have a member ``length'' which would +evaluate to the number of characters in the string. If the string $a$ equals ``hello'' then it follows that +$a.length = 5$. + +For certain discussions more generic algorithms are presented to help the reader understand the final algorithm used +to solve a given problem. When an algorithm is described as accepting an integer input it is assumed the input is +a plain integer with no additional multiple-precision members. That is, algorithms that use integers as opposed to +mp\_ints as inputs do not concern themselves with the housekeeping operations required such as memory management. These +algorithms will be used to establish the relevant theory which will subsequently be used to describe a multiple +precision algorithm to solve the same problem. + +\subsection{Precision Notation} +The variable $\beta$ represents the radix of a single digit of a multiple precision integer and +must be of the form $q^p$ for $q, p \in \Z^+$. A single precision variable must be able to represent integers in +the range $0 \le x < q \beta$ while a double precision variable must be able to represent integers in the range +$0 \le x < q \beta^2$. The extra radix-$q$ factor allows additions and subtractions to proceed without truncation of the +carry. Since all modern computers are binary, it is assumed that $q$ is two. + +\index{mp\_digit} \index{mp\_word} +Within the source code that will be presented for each algorithm, the data type \textbf{mp\_digit} will represent +a single precision integer type, while, the data type \textbf{mp\_word} will represent a double precision integer type. In +several algorithms (notably the Comba routines) temporary results will be stored in arrays of double precision mp\_words. +For the purposes of this text $x_j$ will refer to the $j$'th digit of a single precision array and $\hat x_j$ will refer to +the $j$'th digit of a double precision array. Whenever an expression is to be assigned to a double precision +variable it is assumed that all single precision variables are promoted to double precision during the evaluation. +Expressions that are assigned to a single precision variable are truncated to fit within the precision of a single +precision data type. + +For example, if $\beta = 10^2$ a single precision data type may represent a value in the +range $0 \le x < 10^3$, while a double precision data type may represent a value in the range $0 \le x < 10^5$. Let +$a = 23$ and $b = 49$ represent two single precision variables. The single precision product shall be written +as $c \leftarrow a \cdot b$ while the double precision product shall be written as $\hat c \leftarrow a \cdot b$. +In this particular case, $\hat c = 1127$ and $c = 127$. The most significant digit of the product would not fit +in a single precision data type and as a result $c \ne \hat c$. + +\subsection{Algorithm Inputs and Outputs} +Within the algorithm descriptions all variables are assumed to be scalars of either single or double precision +as indicated. The only exception to this rule is when variables have been indicated to be of type mp\_int. This +distinction is important as scalars are often used as array indicies and various other counters. + +\subsection{Mathematical Expressions} +The $\lfloor \mbox{ } \rfloor$ brackets imply an expression truncated to an integer not greater than the expression +itself. For example, $\lfloor 5.7 \rfloor = 5$. Similarly the $\lceil \mbox{ } \rceil$ brackets imply an expression +rounded to an integer not less than the expression itself. For example, $\lceil 5.1 \rceil = 6$. Typically when +the $/$ division symbol is used the intention is to perform an integer division with truncation. For example, +$5/2 = 2$ which will often be written as $\lfloor 5/2 \rfloor = 2$ for clarity. When an expression is written as a +fraction a real value division is implied, for example ${5 \over 2} = 2.5$. + +The norm of a multiple precision integer, for example $\vert \vert x \vert \vert$, will be used to represent the number of digits in the representation +of the integer. For example, $\vert \vert 123 \vert \vert = 3$ and $\vert \vert 79452 \vert \vert = 5$. + +\subsection{Work Effort} +\index{big-Oh} +To measure the efficiency of the specified algorithms, a modified big-Oh notation is used. In this system all +single precision operations are considered to have the same cost\footnote{Except where explicitly noted.}. +That is a single precision addition, multiplication and division are assumed to take the same time to +complete. While this is generally not true in practice, it will simplify the discussions considerably. + +Some algorithms have slight advantages over others which is why some constants will not be removed in +the notation. For example, a normal baseline multiplication (section \ref{sec:basemult}) requires $O(n^2)$ work while a +baseline squaring (section \ref{sec:basesquare}) requires $O({{n^2 + n}\over 2})$ work. In standard big-Oh notation these +would both be said to be equivalent to $O(n^2)$. However, +in the context of the this text this is not the case as the magnitude of the inputs will typically be rather small. As a +result small constant factors in the work effort will make an observable difference in algorithm efficiency. + +All of the algorithms presented in this text have a polynomial time work level. That is, of the form +$O(n^k)$ for $n, k \in \Z^{+}$. This will help make useful comparisons in terms of the speed of the algorithms and how +various optimizations will help pay off in the long run. + +\section{Exercises} +Within the more advanced chapters a section will be set aside to give the reader some challenging exercises related to +the discussion at hand. These exercises are not designed to be prize winning problems, but instead to be thought +provoking. Wherever possible the problems are forward minded, stating problems that will be answered in subsequent +chapters. The reader is encouraged to finish the exercises as they appear to get a better understanding of the +subject material. + +That being said, the problems are designed to affirm knowledge of a particular subject matter. Students in particular +are encouraged to verify they can answer the problems correctly before moving on. + +Similar to the exercises of \cite[pp. ix]{TAOCPV2} these exercises are given a scoring system based on the difficulty of +the problem. However, unlike \cite{TAOCPV2} the problems do not get nearly as hard. The scoring of these +exercises ranges from one (the easiest) to five (the hardest). The following table sumarizes the +scoring system used. + +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|c|l|} +\hline $\left [ 1 \right ]$ & An easy problem that should only take the reader a manner of \\ + & minutes to solve. Usually does not involve much computer time \\ + & to solve. \\ +\hline $\left [ 2 \right ]$ & An easy problem that involves a marginal amount of computer \\ + & time usage. Usually requires a program to be written to \\ + & solve the problem. \\ +\hline $\left [ 3 \right ]$ & A moderately hard problem that requires a non-trivial amount \\ + & of work. Usually involves trivial research and development of \\ + & new theory from the perspective of a student. \\ +\hline $\left [ 4 \right ]$ & A moderately hard problem that involves a non-trivial amount \\ + & of work and research, the solution to which will demonstrate \\ + & a higher mastery of the subject matter. \\ +\hline $\left [ 5 \right ]$ & A hard problem that involves concepts that are difficult for a \\ + & novice to solve. Solutions to these problems will demonstrate a \\ + & complete mastery of the given subject. \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Exercise Scoring System} +\end{figure} + +Problems at the first level are meant to be simple questions that the reader can answer quickly without programming a solution or +devising new theory. These problems are quick tests to see if the material is understood. Problems at the second level +are also designed to be easy but will require a program or algorithm to be implemented to arrive at the answer. These +two levels are essentially entry level questions. + +Problems at the third level are meant to be a bit more difficult than the first two levels. The answer is often +fairly obvious but arriving at an exacting solution requires some thought and skill. These problems will almost always +involve devising a new algorithm or implementing a variation of another algorithm previously presented. Readers who can +answer these questions will feel comfortable with the concepts behind the topic at hand. + +Problems at the fourth level are meant to be similar to those of the level three questions except they will require +additional research to be completed. The reader will most likely not know the answer right away, nor will the text provide +the exact details of the answer until a subsequent chapter. + +Problems at the fifth level are meant to be the hardest +problems relative to all the other problems in the chapter. People who can correctly answer fifth level problems have a +mastery of the subject matter at hand. + +Often problems will be tied together. The purpose of this is to start a chain of thought that will be discussed in future chapters. The reader +is encouraged to answer the follow-up problems and try to draw the relevance of problems. + +\section{Introduction to LibTomMath} + +\subsection{What is LibTomMath?} +LibTomMath is a free and open source multiple precision integer library written entirely in portable ISO C. By portable it +is meant that the library does not contain any code that is computer platform dependent or otherwise problematic to use on +any given platform. + +The library has been successfully tested under numerous operating systems including Unix\footnote{All of these +trademarks belong to their respective rightful owners.}, MacOS, Windows, Linux, PalmOS and on standalone hardware such +as the Gameboy Advance. The library is designed to contain enough functionality to be able to develop applications such +as public key cryptosystems and still maintain a relatively small footprint. + +\subsection{Goals of LibTomMath} + +Libraries which obtain the most efficiency are rarely written in a high level programming language such as C. However, +even though this library is written entirely in ISO C, considerable care has been taken to optimize the algorithm implementations within the +library. Specifically the code has been written to work well with the GNU C Compiler (\textit{GCC}) on both x86 and ARM +processors. Wherever possible, highly efficient algorithms, such as Karatsuba multiplication, sliding window +exponentiation and Montgomery reduction have been provided to make the library more efficient. + +Even with the nearly optimal and specialized algorithms that have been included the Application Programing Interface +(\textit{API}) has been kept as simple as possible. Often generic place holder routines will make use of specialized +algorithms automatically without the developer's specific attention. One such example is the generic multiplication +algorithm \textbf{mp\_mul()} which will automatically use Toom--Cook, Karatsuba, Comba or baseline multiplication +based on the magnitude of the inputs and the configuration of the library. + +Making LibTomMath as efficient as possible is not the only goal of the LibTomMath project. Ideally the library should +be source compatible with another popular library which makes it more attractive for developers to use. In this case the +MPI library was used as a API template for all the basic functions. MPI was chosen because it is another library that fits +in the same niche as LibTomMath. Even though LibTomMath uses MPI as the template for the function names and argument +passing conventions, it has been written from scratch by Tom St Denis. + +The project is also meant to act as a learning tool for students, the logic being that no easy-to-follow ``bignum'' +library exists which can be used to teach computer science students how to perform fast and reliable multiple precision +integer arithmetic. To this end the source code has been given quite a few comments and algorithm discussion points. + +\section{Choice of LibTomMath} +LibTomMath was chosen as the case study of this text not only because the author of both projects is one and the same but +for more worthy reasons. Other libraries such as GMP \cite{GMP}, MPI \cite{MPI}, LIP \cite{LIP} and OpenSSL +\cite{OPENSSL} have multiple precision integer arithmetic routines but would not be ideal for this text for +reasons that will be explained in the following sub-sections. + +\subsection{Code Base} +The LibTomMath code base is all portable ISO C source code. This means that there are no platform dependent conditional +segments of code littered throughout the source. This clean and uncluttered approach to the library means that a +developer can more readily discern the true intent of a given section of source code without trying to keep track of +what conditional code will be used. + +The code base of LibTomMath is well organized. Each function is in its own separate source code file +which allows the reader to find a given function very quickly. On average there are $76$ lines of code per source +file which makes the source very easily to follow. By comparison MPI and LIP are single file projects making code tracing +very hard. GMP has many conditional code segments which also hinder tracing. + +When compiled with GCC for the x86 processor and optimized for speed the entire library is approximately $100$KiB\footnote{The notation ``KiB'' means $2^{10}$ octets, similarly ``MiB'' means $2^{20}$ octets.} + which is fairly small compared to GMP (over $250$KiB). LibTomMath is slightly larger than MPI (which compiles to about +$50$KiB) but LibTomMath is also much faster and more complete than MPI. + +\subsection{API Simplicity} +LibTomMath is designed after the MPI library and shares the API design. Quite often programs that use MPI will build +with LibTomMath without change. The function names correlate directly to the action they perform. Almost all of the +functions share the same parameter passing convention. The learning curve is fairly shallow with the API provided +which is an extremely valuable benefit for the student and developer alike. + +The LIP library is an example of a library with an API that is awkward to work with. LIP uses function names that are often ``compressed'' to +illegible short hand. LibTomMath does not share this characteristic. + +The GMP library also does not return error codes. Instead it uses a POSIX.1 \cite{POSIX1} signal system where errors +are signaled to the host application. This happens to be the fastest approach but definitely not the most versatile. In +effect a math error (i.e. invalid input, heap error, etc) can cause a program to stop functioning which is definitely +undersireable in many situations. + +\subsection{Optimizations} +While LibTomMath is certainly not the fastest library (GMP often beats LibTomMath by a factor of two) it does +feature a set of optimal algorithms for tasks such as modular reduction, exponentiation, multiplication and squaring. GMP +and LIP also feature such optimizations while MPI only uses baseline algorithms with no optimizations. GMP lacks a few +of the additional modular reduction optimizations that LibTomMath features\footnote{At the time of this writing GMP +only had Barrett and Montgomery modular reduction algorithms.}. + +LibTomMath is almost always an order of magnitude faster than the MPI library at computationally expensive tasks such as modular +exponentiation. In the grand scheme of ``bignum'' libraries LibTomMath is faster than the average library and usually +slower than the best libraries such as GMP and OpenSSL by only a small factor. + +\subsection{Portability and Stability} +LibTomMath will build ``out of the box'' on any platform equipped with a modern version of the GNU C Compiler +(\textit{GCC}). This means that without changes the library will build without configuration or setting up any +variables. LIP and MPI will build ``out of the box'' as well but have numerous known bugs. Most notably the author of +MPI has recently stopped working on his library and LIP has long since been discontinued. + +GMP requires a configuration script to run and will not build out of the box. GMP and LibTomMath are still in active +development and are very stable across a variety of platforms. + +\subsection{Choice} +LibTomMath is a relatively compact, well documented, highly optimized and portable library which seems only natural for +the case study of this text. Various source files from the LibTomMath project will be included within the text. However, +the reader is encouraged to download their own copy of the library to actually be able to work with the library. + +\chapter{Getting Started} +\section{Library Basics} +The trick to writing any useful library of source code is to build a solid foundation and work outwards from it. First, +a problem along with allowable solution parameters should be identified and analyzed. In this particular case the +inability to accomodate multiple precision integers is the problem. Futhermore, the solution must be written +as portable source code that is reasonably efficient across several different computer platforms. + +After a foundation is formed the remainder of the library can be designed and implemented in a hierarchical fashion. +That is, to implement the lowest level dependencies first and work towards the most abstract functions last. For example, +before implementing a modular exponentiation algorithm one would implement a modular reduction algorithm. +By building outwards from a base foundation instead of using a parallel design methodology the resulting project is +highly modular. Being highly modular is a desirable property of any project as it often means the resulting product +has a small footprint and updates are easy to perform. + +Usually when I start a project I will begin with the header files. I define the data types I think I will need and +prototype the initial functions that are not dependent on other functions (within the library). After I +implement these base functions I prototype more dependent functions and implement them. The process repeats until +I implement all of the functions I require. For example, in the case of LibTomMath I implemented functions such as +mp\_init() well before I implemented mp\_mul() and even further before I implemented mp\_exptmod(). As an example as to +why this design works note that the Karatsuba and Toom-Cook multipliers were written \textit{after} the +dependent function mp\_exptmod() was written. Adding the new multiplication algorithms did not require changes to the +mp\_exptmod() function itself and lowered the total cost of ownership (\textit{so to speak}) and of development +for new algorithms. This methodology allows new algorithms to be tested in a complete framework with relative ease. + +FIGU,design_process,Design Flow of the First Few Original LibTomMath Functions. + +Only after the majority of the functions were in place did I pursue a less hierarchical approach to auditing and optimizing +the source code. For example, one day I may audit the multipliers and the next day the polynomial basis functions. + +It only makes sense to begin the text with the preliminary data types and support algorithms required as well. +This chapter discusses the core algorithms of the library which are the dependents for every other algorithm. + +\section{What is a Multiple Precision Integer?} +Recall that most programming languages, in particular ISO C \cite{ISOC}, only have fixed precision data types that on their own cannot +be used to represent values larger than their precision will allow. The purpose of multiple precision algorithms is +to use fixed precision data types to create and manipulate multiple precision integers which may represent values +that are very large. + +As a well known analogy, school children are taught how to form numbers larger than nine by prepending more radix ten digits. In the decimal system +the largest single digit value is $9$. However, by concatenating digits together larger numbers may be represented. Newly prepended digits +(\textit{to the left}) are said to be in a different power of ten column. That is, the number $123$ can be described as having a $1$ in the hundreds +column, $2$ in the tens column and $3$ in the ones column. Or more formally $123 = 1 \cdot 10^2 + 2 \cdot 10^1 + 3 \cdot 10^0$. Computer based +multiple precision arithmetic is essentially the same concept. Larger integers are represented by adjoining fixed +precision computer words with the exception that a different radix is used. + +What most people probably do not think about explicitly are the various other attributes that describe a multiple precision +integer. For example, the integer $154_{10}$ has two immediately obvious properties. First, the integer is positive, +that is the sign of this particular integer is positive as opposed to negative. Second, the integer has three digits in +its representation. There is an additional property that the integer posesses that does not concern pencil-and-paper +arithmetic. The third property is how many digits placeholders are available to hold the integer. + +The human analogy of this third property is ensuring there is enough space on the paper to write the integer. For example, +if one starts writing a large number too far to the right on a piece of paper they will have to erase it and move left. +Similarly, computer algorithms must maintain strict control over memory usage to ensure that the digits of an integer +will not exceed the allowed boundaries. These three properties make up what is known as a multiple precision +integer or mp\_int for short. + +\subsection{The mp\_int Structure} +\label{sec:MPINT} +The mp\_int structure is the ISO C based manifestation of what represents a multiple precision integer. The ISO C standard does not provide for +any such data type but it does provide for making composite data types known as structures. The following is the structure definition +used within LibTomMath. + +\index{mp\_int} +\begin{figure}[here] +\begin{center} +\begin{small} +%\begin{verbatim} +\begin{tabular}{|l|} +\hline +typedef struct \{ \\ +\hspace{3mm}int used, alloc, sign;\\ +\hspace{3mm}mp\_digit *dp;\\ +\} \textbf{mp\_int}; \\ +\hline +\end{tabular} +%\end{verbatim} +\end{small} +\caption{The mp\_int Structure} +\label{fig:mpint} +\end{center} +\end{figure} + +The mp\_int structure (fig. \ref{fig:mpint}) can be broken down as follows. + +\begin{enumerate} +\item The \textbf{used} parameter denotes how many digits of the array \textbf{dp} contain the digits used to represent +a given integer. The \textbf{used} count must be positive (or zero) and may not exceed the \textbf{alloc} count. + +\item The \textbf{alloc} parameter denotes how +many digits are available in the array to use by functions before it has to increase in size. When the \textbf{used} count +of a result would exceed the \textbf{alloc} count all of the algorithms will automatically increase the size of the +array to accommodate the precision of the result. + +\item The pointer \textbf{dp} points to a dynamically allocated array of digits that represent the given multiple +precision integer. It is padded with $(\textbf{alloc} - \textbf{used})$ zero digits. The array is maintained in a least +significant digit order. As a pencil and paper analogy the array is organized such that the right most digits are stored +first starting at the location indexed by zero\footnote{In C all arrays begin at zero.} in the array. For example, +if \textbf{dp} contains $\lbrace a, b, c, \ldots \rbrace$ where \textbf{dp}$_0 = a$, \textbf{dp}$_1 = b$, \textbf{dp}$_2 = c$, $\ldots$ then +it would represent the integer $a + b\beta + c\beta^2 + \ldots$ + +\index{MP\_ZPOS} \index{MP\_NEG} +\item The \textbf{sign} parameter denotes the sign as either zero/positive (\textbf{MP\_ZPOS}) or negative (\textbf{MP\_NEG}). +\end{enumerate} + +\subsubsection{Valid mp\_int Structures} +Several rules are placed on the state of an mp\_int structure and are assumed to be followed for reasons of efficiency. +The only exceptions are when the structure is passed to initialization functions such as mp\_init() and mp\_init\_copy(). + +\begin{enumerate} +\item The value of \textbf{alloc} may not be less than one. That is \textbf{dp} always points to a previously allocated +array of digits. +\item The value of \textbf{used} may not exceed \textbf{alloc} and must be greater than or equal to zero. +\item The value of \textbf{used} implies the digit at index $(used - 1)$ of the \textbf{dp} array is non-zero. That is, +leading zero digits in the most significant positions must be trimmed. + \begin{enumerate} + \item Digits in the \textbf{dp} array at and above the \textbf{used} location must be zero. + \end{enumerate} +\item The value of \textbf{sign} must be \textbf{MP\_ZPOS} if \textbf{used} is zero; +this represents the mp\_int value of zero. +\end{enumerate} + +\section{Argument Passing} +A convention of argument passing must be adopted early on in the development of any library. Making the function +prototypes consistent will help eliminate many headaches in the future as the library grows to significant complexity. +In LibTomMath the multiple precision integer functions accept parameters from left to right as pointers to mp\_int +structures. That means that the source (input) operands are placed on the left and the destination (output) on the right. +Consider the following examples. + +\begin{verbatim} + mp_mul(&a, &b, &c); /* c = a * b */ + mp_add(&a, &b, &a); /* a = a + b */ + mp_sqr(&a, &b); /* b = a * a */ +\end{verbatim} + +The left to right order is a fairly natural way to implement the functions since it lets the developer read aloud the +functions and make sense of them. For example, the first function would read ``multiply a and b and store in c''. + +Certain libraries (\textit{LIP by Lenstra for instance}) accept parameters the other way around, to mimic the order +of assignment expressions. That is, the destination (output) is on the left and arguments (inputs) are on the right. In +truth, it is entirely a matter of preference. In the case of LibTomMath the convention from the MPI library has been +adopted. + +Another very useful design consideration, provided for in LibTomMath, is whether to allow argument sources to also be a +destination. For example, the second example (\textit{mp\_add}) adds $a$ to $b$ and stores in $a$. This is an important +feature to implement since it allows the calling functions to cut down on the number of variables it must maintain. +However, to implement this feature specific care has to be given to ensure the destination is not modified before the +source is fully read. + +\section{Return Values} +A well implemented application, no matter what its purpose, should trap as many runtime errors as possible and return them +to the caller. By catching runtime errors a library can be guaranteed to prevent undefined behaviour. However, the end +developer can still manage to cause a library to crash. For example, by passing an invalid pointer an application may +fault by dereferencing memory not owned by the application. + +In the case of LibTomMath the only errors that are checked for are related to inappropriate inputs (division by zero for +instance) and memory allocation errors. It will not check that the mp\_int passed to any function is valid nor +will it check pointers for validity. Any function that can cause a runtime error will return an error code as an +\textbf{int} data type with one of the following values (fig \ref{fig:errcodes}). + +\index{MP\_OKAY} \index{MP\_VAL} \index{MP\_MEM} +\begin{figure}[here] +\begin{center} +\begin{tabular}{|l|l|} +\hline \textbf{Value} & \textbf{Meaning} \\ +\hline \textbf{MP\_OKAY} & The function was successful \\ +\hline \textbf{MP\_VAL} & One of the input value(s) was invalid \\ +\hline \textbf{MP\_MEM} & The function ran out of heap memory \\ +\hline +\end{tabular} +\end{center} +\caption{LibTomMath Error Codes} +\label{fig:errcodes} +\end{figure} + +When an error is detected within a function it should free any memory it allocated, often during the initialization of +temporary mp\_ints, and return as soon as possible. The goal is to leave the system in the same state it was when the +function was called. Error checking with this style of API is fairly simple. + +\begin{verbatim} + int err; + if ((err = mp_add(&a, &b, &c)) != MP_OKAY) { + printf("Error: %s\n", mp_error_to_string(err)); + exit(EXIT_FAILURE); + } +\end{verbatim} + +The GMP \cite{GMP} library uses C style \textit{signals} to flag errors which is of questionable use. Not all errors are fatal +and it was not deemed ideal by the author of LibTomMath to force developers to have signal handlers for such cases. + +\section{Initialization and Clearing} +The logical starting point when actually writing multiple precision integer functions is the initialization and +clearing of the mp\_int structures. These two algorithms will be used by the majority of the higher level algorithms. + +Given the basic mp\_int structure an initialization routine must first allocate memory to hold the digits of +the integer. Often it is optimal to allocate a sufficiently large pre-set number of digits even though +the initial integer will represent zero. If only a single digit were allocated quite a few subsequent re-allocations +would occur when operations are performed on the integers. There is a tradeoff between how many default digits to allocate +and how many re-allocations are tolerable. Obviously allocating an excessive amount of digits initially will waste +memory and become unmanageable. + +If the memory for the digits has been successfully allocated then the rest of the members of the structure must +be initialized. Since the initial state of an mp\_int is to represent the zero integer, the allocated digits must be set +to zero. The \textbf{used} count set to zero and \textbf{sign} set to \textbf{MP\_ZPOS}. + +\subsection{Initializing an mp\_int} +An mp\_int is said to be initialized if it is set to a valid, preferably default, state such that all of the members of the +structure are set to valid values. The mp\_init algorithm will perform such an action. + +\index{mp\_init} +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_init}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Allocate memory and initialize $a$ to a known valid mp\_int state. \\ +\hline \\ +1. Allocate memory for \textbf{MP\_PREC} digits. \\ +2. If the allocation failed return(\textit{MP\_MEM}) \\ +3. for $n$ from $0$ to $MP\_PREC - 1$ do \\ +\hspace{3mm}3.1 $a_n \leftarrow 0$\\ +4. $a.sign \leftarrow MP\_ZPOS$\\ +5. $a.used \leftarrow 0$\\ +6. $a.alloc \leftarrow MP\_PREC$\\ +7. Return(\textit{MP\_OKAY})\\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_init} +\end{figure} + +\textbf{Algorithm mp\_init.} +The purpose of this function is to initialize an mp\_int structure so that the rest of the library can properly +manipulte it. It is assumed that the input may not have had any of its members previously initialized which is certainly +a valid assumption if the input resides on the stack. + +Before any of the members such as \textbf{sign}, \textbf{used} or \textbf{alloc} are initialized the memory for +the digits is allocated. If this fails the function returns before setting any of the other members. The \textbf{MP\_PREC} +name represents a constant\footnote{Defined in the ``tommath.h'' header file within LibTomMath.} +used to dictate the minimum precision of newly initialized mp\_int integers. Ideally, it is at least equal to the smallest +precision number you'll be working with. + +Allocating a block of digits at first instead of a single digit has the benefit of lowering the number of usually slow +heap operations later functions will have to perform in the future. If \textbf{MP\_PREC} is set correctly the slack +memory and the number of heap operations will be trivial. + +Once the allocation has been made the digits have to be set to zero as well as the \textbf{used}, \textbf{sign} and +\textbf{alloc} members initialized. This ensures that the mp\_int will always represent the default state of zero regardless +of the original condition of the input. + +\textbf{Remark.} +This function introduces the idiosyncrasy that all iterative loops, commonly initiated with the ``for'' keyword, iterate incrementally +when the ``to'' keyword is placed between two expressions. For example, ``for $a$ from $b$ to $c$ do'' means that +a subsequent expression (or body of expressions) are to be evaluated upto $c - b$ times so long as $b \le c$. In each +iteration the variable $a$ is substituted for a new integer that lies inclusively between $b$ and $c$. If $b > c$ occured +the loop would not iterate. By contrast if the ``downto'' keyword were used in place of ``to'' the loop would iterate +decrementally. + +EXAM,bn_mp_init.c + +One immediate observation of this initializtion function is that it does not return a pointer to a mp\_int structure. It +is assumed that the caller has already allocated memory for the mp\_int structure, typically on the application stack. The +call to mp\_init() is used only to initialize the members of the structure to a known default state. + +Here we see (line @23,XMALLOC@) the memory allocation is performed first. This allows us to exit cleanly and quickly +if there is an error. If the allocation fails the routine will return \textbf{MP\_MEM} to the caller to indicate there +was a memory error. The function XMALLOC is what actually allocates the memory. Technically XMALLOC is not a function +but a macro defined in ``tommath.h``. By default, XMALLOC will evaluate to malloc() which is the C library's built--in +memory allocation routine. + +In order to assure the mp\_int is in a known state the digits must be set to zero. On most platforms this could have been +accomplished by using calloc() instead of malloc(). However, to correctly initialize a integer type to a given value in a +portable fashion you have to actually assign the value. The for loop (line @28,for@) performs this required +operation. + +After the memory has been successfully initialized the remainder of the members are initialized +(lines @29,used@ through @31,sign@) to their respective default states. At this point the algorithm has succeeded and +a success code is returned to the calling function. If this function returns \textbf{MP\_OKAY} it is safe to assume the +mp\_int structure has been properly initialized and is safe to use with other functions within the library. + +\subsection{Clearing an mp\_int} +When an mp\_int is no longer required by the application, the memory that has been allocated for its digits must be +returned to the application's memory pool with the mp\_clear algorithm. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_clear}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. The memory for $a$ shall be deallocated. \\ +\hline \\ +1. If $a$ has been previously freed then return(\textit{MP\_OKAY}). \\ +2. for $n$ from 0 to $a.used - 1$ do \\ +\hspace{3mm}2.1 $a_n \leftarrow 0$ \\ +3. Free the memory allocated for the digits of $a$. \\ +4. $a.used \leftarrow 0$ \\ +5. $a.alloc \leftarrow 0$ \\ +6. $a.sign \leftarrow MP\_ZPOS$ \\ +7. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_clear} +\end{figure} + +\textbf{Algorithm mp\_clear.} +This algorithm accomplishes two goals. First, it clears the digits and the other mp\_int members. This ensures that +if a developer accidentally re-uses a cleared structure it is less likely to cause problems. The second goal +is to free the allocated memory. + +The logic behind the algorithm is extended by marking cleared mp\_int structures so that subsequent calls to this +algorithm will not try to free the memory multiple times. Cleared mp\_ints are detectable by having a pre-defined invalid +digit pointer \textbf{dp} setting. + +Once an mp\_int has been cleared the mp\_int structure is no longer in a valid state for any other algorithm +with the exception of algorithms mp\_init, mp\_init\_copy, mp\_init\_size and mp\_clear. + +EXAM,bn_mp_clear.c + +The algorithm only operates on the mp\_int if it hasn't been previously cleared. The if statement (line @23,a->dp != NULL@) +checks to see if the \textbf{dp} member is not \textbf{NULL}. If the mp\_int is a valid mp\_int then \textbf{dp} cannot be +\textbf{NULL} in which case the if statement will evaluate to true. + +The digits of the mp\_int are cleared by the for loop (line @25,for@) which assigns a zero to every digit. Similar to mp\_init() +the digits are assigned zero instead of using block memory operations (such as memset()) since this is more portable. + +The digits are deallocated off the heap via the XFREE macro. Similar to XMALLOC the XFREE macro actually evaluates to +a standard C library function. In this case the free() function. Since free() only deallocates the memory the pointer +still has to be reset to \textbf{NULL} manually (line @33,NULL@). + +Now that the digits have been cleared and deallocated the other members are set to their final values (lines @34,= 0@ and @35,ZPOS@). + +\section{Maintenance Algorithms} + +The previous sections describes how to initialize and clear an mp\_int structure. To further support operations +that are to be performed on mp\_int structures (such as addition and multiplication) the dependent algorithms must be +able to augment the precision of an mp\_int and +initialize mp\_ints with differing initial conditions. + +These algorithms complete the set of low level algorithms required to work with mp\_int structures in the higher level +algorithms such as addition, multiplication and modular exponentiation. + +\subsection{Augmenting an mp\_int's Precision} +When storing a value in an mp\_int structure, a sufficient number of digits must be available to accomodate the entire +result of an operation without loss of precision. Quite often the size of the array given by the \textbf{alloc} member +is large enough to simply increase the \textbf{used} digit count. However, when the size of the array is too small it +must be re-sized appropriately to accomodate the result. The mp\_grow algorithm will provide this functionality. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_grow}. \\ +\textbf{Input}. An mp\_int $a$ and an integer $b$. \\ +\textbf{Output}. $a$ is expanded to accomodate $b$ digits. \\ +\hline \\ +1. if $a.alloc \ge b$ then return(\textit{MP\_OKAY}) \\ +2. $u \leftarrow b\mbox{ (mod }MP\_PREC\mbox{)}$ \\ +3. $v \leftarrow b + 2 \cdot MP\_PREC - u$ \\ +4. Re-allocate the array of digits $a$ to size $v$ \\ +5. If the allocation failed then return(\textit{MP\_MEM}). \\ +6. for n from a.alloc to $v - 1$ do \\ +\hspace{+3mm}6.1 $a_n \leftarrow 0$ \\ +7. $a.alloc \leftarrow v$ \\ +8. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_grow} +\end{figure} + +\textbf{Algorithm mp\_grow.} +It is ideal to prevent re-allocations from being performed if they are not required (step one). This is useful to +prevent mp\_ints from growing excessively in code that erroneously calls mp\_grow. + +The requested digit count is padded up to next multiple of \textbf{MP\_PREC} plus an additional \textbf{MP\_PREC} (steps two and three). +This helps prevent many trivial reallocations that would grow an mp\_int by trivially small values. + +It is assumed that the reallocation (step four) leaves the lower $a.alloc$ digits of the mp\_int intact. This is much +akin to how the \textit{realloc} function from the standard C library works. Since the newly allocated digits are +assumed to contain undefined values they are initially set to zero. + +EXAM,bn_mp_grow.c + +A quick optimization is to first determine if a memory re-allocation is required at all. The if statement (line @23,if@) checks +if the \textbf{alloc} member of the mp\_int is smaller than the requested digit count. If the count is not larger than \textbf{alloc} +the function skips the re-allocation part thus saving time. + +When a re-allocation is performed it is turned into an optimal request to save time in the future. The requested digit count is +padded upwards to 2nd multiple of \textbf{MP\_PREC} larger than \textbf{alloc} (line @25, size@). The XREALLOC function is used +to re-allocate the memory. As per the other functions XREALLOC is actually a macro which evaluates to realloc by default. The realloc +function leaves the base of the allocation intact which means the first \textbf{alloc} digits of the mp\_int are the same as before +the re-allocation. All that is left is to clear the newly allocated digits and return. + +Note that the re-allocation result is actually stored in a temporary pointer $tmp$. This is to allow this function to return +an error with a valid pointer. Earlier releases of the library stored the result of XREALLOC into the mp\_int $a$. That would +result in a memory leak if XREALLOC ever failed. + +\subsection{Initializing Variable Precision mp\_ints} +Occasionally the number of digits required will be known in advance of an initialization, based on, for example, the size +of input mp\_ints to a given algorithm. The purpose of algorithm mp\_init\_size is similar to mp\_init except that it +will allocate \textit{at least} a specified number of digits. + +\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_init\_size}. \\ +\textbf{Input}. An mp\_int $a$ and the requested number of digits $b$. \\ +\textbf{Output}. $a$ is initialized to hold at least $b$ digits. \\ +\hline \\ +1. $u \leftarrow b \mbox{ (mod }MP\_PREC\mbox{)}$ \\ +2. $v \leftarrow b + 2 \cdot MP\_PREC - u$ \\ +3. Allocate $v$ digits. \\ +4. for $n$ from $0$ to $v - 1$ do \\ +\hspace{3mm}4.1 $a_n \leftarrow 0$ \\ +5. $a.sign \leftarrow MP\_ZPOS$\\ +6. $a.used \leftarrow 0$\\ +7. $a.alloc \leftarrow v$\\ +8. Return(\textit{MP\_OKAY})\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_init\_size} +\end{figure} + +\textbf{Algorithm mp\_init\_size.} +This algorithm will initialize an mp\_int structure $a$ like algorithm mp\_init with the exception that the number of +digits allocated can be controlled by the second input argument $b$. The input size is padded upwards so it is a +multiple of \textbf{MP\_PREC} plus an additional \textbf{MP\_PREC} digits. This padding is used to prevent trivial +allocations from becoming a bottleneck in the rest of the algorithms. + +Like algorithm mp\_init, the mp\_int structure is initialized to a default state representing the integer zero. This +particular algorithm is useful if it is known ahead of time the approximate size of the input. If the approximation is +correct no further memory re-allocations are required to work with the mp\_int. + +EXAM,bn_mp_init_size.c + +The number of digits $b$ requested is padded (line @22,MP_PREC@) by first augmenting it to the next multiple of +\textbf{MP\_PREC} and then adding \textbf{MP\_PREC} to the result. If the memory can be successfully allocated the +mp\_int is placed in a default state representing the integer zero. Otherwise, the error code \textbf{MP\_MEM} will be +returned (line @27,return@). + +The digits are allocated and set to zero at the same time with the calloc() function (line @25,XCALLOC@). The +\textbf{used} count is set to zero, the \textbf{alloc} count set to the padded digit count and the \textbf{sign} flag set +to \textbf{MP\_ZPOS} to achieve a default valid mp\_int state (lines @29,used@, @30,alloc@ and @31,sign@). If the function +returns succesfully then it is correct to assume that the mp\_int structure is in a valid state for the remainder of the +functions to work with. + +\subsection{Multiple Integer Initializations and Clearings} +Occasionally a function will require a series of mp\_int data types to be made available simultaneously. +The purpose of algorithm mp\_init\_multi is to initialize a variable length array of mp\_int structures in a single +statement. It is essentially a shortcut to multiple initializations. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_init\_multi}. \\ +\textbf{Input}. Variable length array $V_k$ of mp\_int variables of length $k$. \\ +\textbf{Output}. The array is initialized such that each mp\_int of $V_k$ is ready to use. \\ +\hline \\ +1. for $n$ from 0 to $k - 1$ do \\ +\hspace{+3mm}1.1. Initialize the mp\_int $V_n$ (\textit{mp\_init}) \\ +\hspace{+3mm}1.2. If initialization failed then do \\ +\hspace{+6mm}1.2.1. for $j$ from $0$ to $n$ do \\ +\hspace{+9mm}1.2.1.1. Free the mp\_int $V_j$ (\textit{mp\_clear}) \\ +\hspace{+6mm}1.2.2. Return(\textit{MP\_MEM}) \\ +2. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_init\_multi} +\end{figure} + +\textbf{Algorithm mp\_init\_multi.} +The algorithm will initialize the array of mp\_int variables one at a time. If a runtime error has been detected +(\textit{step 1.2}) all of the previously initialized variables are cleared. The goal is an ``all or nothing'' +initialization which allows for quick recovery from runtime errors. + +EXAM,bn_mp_init_multi.c + +This function intializes a variable length list of mp\_int structure pointers. However, instead of having the mp\_int +structures in an actual C array they are simply passed as arguments to the function. This function makes use of the +``...'' argument syntax of the C programming language. The list is terminated with a final \textbf{NULL} argument +appended on the right. + +The function uses the ``stdarg.h'' \textit{va} functions to step portably through the arguments to the function. A count +$n$ of succesfully initialized mp\_int structures is maintained (line @47,n++@) such that if a failure does occur, +the algorithm can backtrack and free the previously initialized structures (lines @27,if@ to @46,}@). + + +\subsection{Clamping Excess Digits} +When a function anticipates a result will be $n$ digits it is simpler to assume this is true within the body of +the function instead of checking during the computation. For example, a multiplication of a $i$ digit number by a +$j$ digit produces a result of at most $i + j$ digits. It is entirely possible that the result is $i + j - 1$ +though, with no final carry into the last position. However, suppose the destination had to be first expanded +(\textit{via mp\_grow}) to accomodate $i + j - 1$ digits than further expanded to accomodate the final carry. +That would be a considerable waste of time since heap operations are relatively slow. + +The ideal solution is to always assume the result is $i + j$ and fix up the \textbf{used} count after the function +terminates. This way a single heap operation (\textit{at most}) is required. However, if the result was not checked +there would be an excess high order zero digit. + +For example, suppose the product of two integers was $x_n = (0x_{n-1}x_{n-2}...x_0)_{\beta}$. The leading zero digit +will not contribute to the precision of the result. In fact, through subsequent operations more leading zero digits would +accumulate to the point the size of the integer would be prohibitive. As a result even though the precision is very +low the representation is excessively large. + +The mp\_clamp algorithm is designed to solve this very problem. It will trim high-order zeros by decrementing the +\textbf{used} count until a non-zero most significant digit is found. Also in this system, zero is considered to be a +positive number which means that if the \textbf{used} count is decremented to zero, the sign must be set to +\textbf{MP\_ZPOS}. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_clamp}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Any excess leading zero digits of $a$ are removed \\ +\hline \\ +1. while $a.used > 0$ and $a_{a.used - 1} = 0$ do \\ +\hspace{+3mm}1.1 $a.used \leftarrow a.used - 1$ \\ +2. if $a.used = 0$ then do \\ +\hspace{+3mm}2.1 $a.sign \leftarrow MP\_ZPOS$ \\ +\hline \\ +\end{tabular} +\end{center} +\caption{Algorithm mp\_clamp} +\end{figure} + +\textbf{Algorithm mp\_clamp.} +As can be expected this algorithm is very simple. The loop on step one is expected to iterate only once or twice at +the most. For example, this will happen in cases where there is not a carry to fill the last position. Step two fixes the sign for +when all of the digits are zero to ensure that the mp\_int is valid at all times. + +EXAM,bn_mp_clamp.c + +Note on line @27,while@ how to test for the \textbf{used} count is made on the left of the \&\& operator. In the C programming +language the terms to \&\& are evaluated left to right with a boolean short-circuit if any condition fails. This is +important since if the \textbf{used} is zero the test on the right would fetch below the array. That is obviously +undesirable. The parenthesis on line @28,a->used@ is used to make sure the \textbf{used} count is decremented and not +the pointer ``a''. + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 1 \right ]$ & Discuss the relevance of the \textbf{used} member of the mp\_int structure. \\ + & \\ +$\left [ 1 \right ]$ & Discuss the consequences of not using padding when performing allocations. \\ + & \\ +$\left [ 2 \right ]$ & Estimate an ideal value for \textbf{MP\_PREC} when performing 1024-bit RSA \\ + & encryption when $\beta = 2^{28}$. \\ + & \\ +$\left [ 1 \right ]$ & Discuss the relevance of the algorithm mp\_clamp. What does it prevent? \\ + & \\ +$\left [ 1 \right ]$ & Give an example of when the algorithm mp\_init\_copy might be useful. \\ + & \\ +\end{tabular} + + +%%% +% CHAPTER FOUR +%%% + +\chapter{Basic Operations} + +\section{Introduction} +In the previous chapter a series of low level algorithms were established that dealt with initializing and maintaining +mp\_int structures. This chapter will discuss another set of seemingly non-algebraic algorithms which will form the low +level basis of the entire library. While these algorithm are relatively trivial it is important to understand how they +work before proceeding since these algorithms will be used almost intrinsically in the following chapters. + +The algorithms in this chapter deal primarily with more ``programmer'' related tasks such as creating copies of +mp\_int structures, assigning small values to mp\_int structures and comparisons of the values mp\_int structures +represent. + +\section{Assigning Values to mp\_int Structures} +\subsection{Copying an mp\_int} +Assigning the value that a given mp\_int structure represents to another mp\_int structure shall be known as making +a copy for the purposes of this text. The copy of the mp\_int will be a separate entity that represents the same +value as the mp\_int it was copied from. The mp\_copy algorithm provides this functionality. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_copy}. \\ +\textbf{Input}. An mp\_int $a$ and $b$. \\ +\textbf{Output}. Store a copy of $a$ in $b$. \\ +\hline \\ +1. If $b.alloc < a.used$ then grow $b$ to $a.used$ digits. (\textit{mp\_grow}) \\ +2. for $n$ from 0 to $a.used - 1$ do \\ +\hspace{3mm}2.1 $b_{n} \leftarrow a_{n}$ \\ +3. for $n$ from $a.used$ to $b.used - 1$ do \\ +\hspace{3mm}3.1 $b_{n} \leftarrow 0$ \\ +4. $b.used \leftarrow a.used$ \\ +5. $b.sign \leftarrow a.sign$ \\ +6. return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_copy} +\end{figure} + +\textbf{Algorithm mp\_copy.} +This algorithm copies the mp\_int $a$ such that upon succesful termination of the algorithm the mp\_int $b$ will +represent the same integer as the mp\_int $a$. The mp\_int $b$ shall be a complete and distinct copy of the +mp\_int $a$ meaing that the mp\_int $a$ can be modified and it shall not affect the value of the mp\_int $b$. + +If $b$ does not have enough room for the digits of $a$ it must first have its precision augmented via the mp\_grow +algorithm. The digits of $a$ are copied over the digits of $b$ and any excess digits of $b$ are set to zero (step two +and three). The \textbf{used} and \textbf{sign} members of $a$ are finally copied over the respective members of +$b$. + +\textbf{Remark.} This algorithm also introduces a new idiosyncrasy that will be used throughout the rest of the +text. The error return codes of other algorithms are not explicitly checked in the pseudo-code presented. For example, in +step one of the mp\_copy algorithm the return of mp\_grow is not explicitly checked to ensure it succeeded. Text space is +limited so it is assumed that if a algorithm fails it will clear all temporarily allocated mp\_ints and return +the error code itself. However, the C code presented will demonstrate all of the error handling logic required to +implement the pseudo-code. + +EXAM,bn_mp_copy.c + +Occasionally a dependent algorithm may copy an mp\_int effectively into itself such as when the input and output +mp\_int structures passed to a function are one and the same. For this case it is optimal to return immediately without +copying digits (line @24,a == b@). + +The mp\_int $b$ must have enough digits to accomodate the used digits of the mp\_int $a$. If $b.alloc$ is less than +$a.used$ the algorithm mp\_grow is used to augment the precision of $b$ (lines @29,alloc@ to @33,}@). In order to +simplify the inner loop that copies the digits from $a$ to $b$, two aliases $tmpa$ and $tmpb$ point directly at the digits +of the mp\_ints $a$ and $b$ respectively. These aliases (lines @42,tmpa@ and @45,tmpb@) allow the compiler to access the digits without first dereferencing the +mp\_int pointers and then subsequently the pointer to the digits. + +After the aliases are established the digits from $a$ are copied into $b$ (lines @48,for@ to @50,}@) and then the excess +digits of $b$ are set to zero (lines @53,for@ to @55,}@). Both ``for'' loops make use of the pointer aliases and in +fact the alias for $b$ is carried through into the second ``for'' loop to clear the excess digits. This optimization +allows the alias to stay in a machine register fairly easy between the two loops. + +\textbf{Remarks.} The use of pointer aliases is an implementation methodology first introduced in this function that will +be used considerably in other functions. Technically, a pointer alias is simply a short hand alias used to lower the +number of pointer dereferencing operations required to access data. For example, a for loop may resemble + +\begin{alltt} +for (x = 0; x < 100; x++) \{ + a->num[4]->dp[x] = 0; +\} +\end{alltt} + +This could be re-written using aliases as + +\begin{alltt} +mp_digit *tmpa; +a = a->num[4]->dp; +for (x = 0; x < 100; x++) \{ + *a++ = 0; +\} +\end{alltt} + +In this case an alias is used to access the +array of digits within an mp\_int structure directly. It may seem that a pointer alias is strictly not required +as a compiler may optimize out the redundant pointer operations. However, there are two dominant reasons to use aliases. + +The first reason is that most compilers will not effectively optimize pointer arithmetic. For example, some optimizations +may work for the Microsoft Visual C++ compiler (MSVC) and not for the GNU C Compiler (GCC). Also some optimizations may +work for GCC and not MSVC. As such it is ideal to find a common ground for as many compilers as possible. Pointer +aliases optimize the code considerably before the compiler even reads the source code which means the end compiled code +stands a better chance of being faster. + +The second reason is that pointer aliases often can make an algorithm simpler to read. Consider the first ``for'' +loop of the function mp\_copy() re-written to not use pointer aliases. + +\begin{alltt} + /* copy all the digits */ + for (n = 0; n < a->used; n++) \{ + b->dp[n] = a->dp[n]; + \} +\end{alltt} + +Whether this code is harder to read depends strongly on the individual. However, it is quantifiably slightly more +complicated as there are four variables within the statement instead of just two. + +\subsubsection{Nested Statements} +Another commonly used technique in the source routines is that certain sections of code are nested. This is used in +particular with the pointer aliases to highlight code phases. For example, a Comba multiplier (discussed in chapter six) +will typically have three different phases. First the temporaries are initialized, then the columns calculated and +finally the carries are propagated. In this example the middle column production phase will typically be nested as it +uses temporary variables and aliases the most. + +The nesting also simplies the source code as variables that are nested are only valid for their scope. As a result +the various temporary variables required do not propagate into other sections of code. + + +\subsection{Creating a Clone} +Another common operation is to make a local temporary copy of an mp\_int argument. To initialize an mp\_int +and then copy another existing mp\_int into the newly intialized mp\_int will be known as creating a clone. This is +useful within functions that need to modify an argument but do not wish to actually modify the original copy. The +mp\_init\_copy algorithm has been designed to help perform this task. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_init\_copy}. \\ +\textbf{Input}. An mp\_int $a$ and $b$\\ +\textbf{Output}. $a$ is initialized to be a copy of $b$. \\ +\hline \\ +1. Init $a$. (\textit{mp\_init}) \\ +2. Copy $b$ to $a$. (\textit{mp\_copy}) \\ +3. Return the status of the copy operation. \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_init\_copy} +\end{figure} + +\textbf{Algorithm mp\_init\_copy.} +This algorithm will initialize an mp\_int variable and copy another previously initialized mp\_int variable into it. As +such this algorithm will perform two operations in one step. + +EXAM,bn_mp_init_copy.c + +This will initialize \textbf{a} and make it a verbatim copy of the contents of \textbf{b}. Note that +\textbf{a} will have its own memory allocated which means that \textbf{b} may be cleared after the call +and \textbf{a} will be left intact. + +\section{Zeroing an Integer} +Reseting an mp\_int to the default state is a common step in many algorithms. The mp\_zero algorithm will be the algorithm used to +perform this task. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_zero}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Zero the contents of $a$ \\ +\hline \\ +1. $a.used \leftarrow 0$ \\ +2. $a.sign \leftarrow$ MP\_ZPOS \\ +3. for $n$ from 0 to $a.alloc - 1$ do \\ +\hspace{3mm}3.1 $a_n \leftarrow 0$ \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_zero} +\end{figure} + +\textbf{Algorithm mp\_zero.} +This algorithm simply resets a mp\_int to the default state. + +EXAM,bn_mp_zero.c + +After the function is completed, all of the digits are zeroed, the \textbf{used} count is zeroed and the +\textbf{sign} variable is set to \textbf{MP\_ZPOS}. + +\section{Sign Manipulation} +\subsection{Absolute Value} +With the mp\_int representation of an integer, calculating the absolute value is trivial. The mp\_abs algorithm will compute +the absolute value of an mp\_int. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_abs}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Computes $b = \vert a \vert$ \\ +\hline \\ +1. Copy $a$ to $b$. (\textit{mp\_copy}) \\ +2. If the copy failed return(\textit{MP\_MEM}). \\ +3. $b.sign \leftarrow MP\_ZPOS$ \\ +4. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_abs} +\end{figure} + +\textbf{Algorithm mp\_abs.} +This algorithm computes the absolute of an mp\_int input. First it copies $a$ over $b$. This is an example of an +algorithm where the check in mp\_copy that determines if the source and destination are equal proves useful. This allows, +for instance, the developer to pass the same mp\_int as the source and destination to this function without addition +logic to handle it. + +EXAM,bn_mp_abs.c + +\subsection{Integer Negation} +With the mp\_int representation of an integer, calculating the negation is also trivial. The mp\_neg algorithm will compute +the negative of an mp\_int input. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_neg}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Computes $b = -a$ \\ +\hline \\ +1. Copy $a$ to $b$. (\textit{mp\_copy}) \\ +2. If the copy failed return(\textit{MP\_MEM}). \\ +3. If $a.used = 0$ then return(\textit{MP\_OKAY}). \\ +4. If $a.sign = MP\_ZPOS$ then do \\ +\hspace{3mm}4.1 $b.sign = MP\_NEG$. \\ +5. else do \\ +\hspace{3mm}5.1 $b.sign = MP\_ZPOS$. \\ +6. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_neg} +\end{figure} + +\textbf{Algorithm mp\_neg.} +This algorithm computes the negation of an input. First it copies $a$ over $b$. If $a$ has no used digits then +the algorithm returns immediately. Otherwise it flips the sign flag and stores the result in $b$. Note that if +$a$ had no digits then it must be positive by definition. Had step three been omitted then the algorithm would return +zero as negative. + +EXAM,bn_mp_neg.c + +\section{Small Constants} +\subsection{Setting Small Constants} +Often a mp\_int must be set to a relatively small value such as $1$ or $2$. For these cases the mp\_set algorithm is useful. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_set}. \\ +\textbf{Input}. An mp\_int $a$ and a digit $b$ \\ +\textbf{Output}. Make $a$ equivalent to $b$ \\ +\hline \\ +1. Zero $a$ (\textit{mp\_zero}). \\ +2. $a_0 \leftarrow b \mbox{ (mod }\beta\mbox{)}$ \\ +3. $a.used \leftarrow \left \lbrace \begin{array}{ll} + 1 & \mbox{if }a_0 > 0 \\ + 0 & \mbox{if }a_0 = 0 + \end{array} \right .$ \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_set} +\end{figure} + +\textbf{Algorithm mp\_set.} +This algorithm sets a mp\_int to a small single digit value. Step number 1 ensures that the integer is reset to the default state. The +single digit is set (\textit{modulo $\beta$}) and the \textbf{used} count is adjusted accordingly. + +EXAM,bn_mp_set.c + +Line @21,mp_zero@ calls mp\_zero() to clear the mp\_int and reset the sign. Line @22,MP_MASK@ copies the digit +into the least significant location. Note the usage of a new constant \textbf{MP\_MASK}. This constant is used to quickly +reduce an integer modulo $\beta$. Since $\beta$ is of the form $2^k$ for any suitable $k$ it suffices to perform a binary AND with +$MP\_MASK = 2^k - 1$ to perform the reduction. Finally line @23,a->used@ will set the \textbf{used} member with respect to the +digit actually set. This function will always make the integer positive. + +One important limitation of this function is that it will only set one digit. The size of a digit is not fixed, meaning source that uses +this function should take that into account. Only trivially small constants can be set using this function. + +\subsection{Setting Large Constants} +To overcome the limitations of the mp\_set algorithm the mp\_set\_int algorithm is ideal. It accepts a ``long'' +data type as input and will always treat it as a 32-bit integer. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_set\_int}. \\ +\textbf{Input}. An mp\_int $a$ and a ``long'' integer $b$ \\ +\textbf{Output}. Make $a$ equivalent to $b$ \\ +\hline \\ +1. Zero $a$ (\textit{mp\_zero}) \\ +2. for $n$ from 0 to 7 do \\ +\hspace{3mm}2.1 $a \leftarrow a \cdot 16$ (\textit{mp\_mul2d}) \\ +\hspace{3mm}2.2 $u \leftarrow \lfloor b / 2^{4(7 - n)} \rfloor \mbox{ (mod }16\mbox{)}$\\ +\hspace{3mm}2.3 $a_0 \leftarrow a_0 + u$ \\ +\hspace{3mm}2.4 $a.used \leftarrow a.used + 1$ \\ +3. Clamp excess used digits (\textit{mp\_clamp}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_set\_int} +\end{figure} + +\textbf{Algorithm mp\_set\_int.} +The algorithm performs eight iterations of a simple loop where in each iteration four bits from the source are added to the +mp\_int. Step 2.1 will multiply the current result by sixteen making room for four more bits in the less significant positions. In step 2.2 the +next four bits from the source are extracted and are added to the mp\_int. The \textbf{used} digit count is +incremented to reflect the addition. The \textbf{used} digit counter is incremented since if any of the leading digits were zero the mp\_int would have +zero digits used and the newly added four bits would be ignored. + +Excess zero digits are trimmed in steps 2.1 and 3 by using higher level algorithms mp\_mul2d and mp\_clamp. + +EXAM,bn_mp_set_int.c + +This function sets four bits of the number at a time to handle all practical \textbf{DIGIT\_BIT} sizes. The weird +addition on line @38,a->used@ ensures that the newly added in bits are added to the number of digits. While it may not +seem obvious as to why the digit counter does not grow exceedingly large it is because of the shift on line @27,mp_mul_2d@ +as well as the call to mp\_clamp() on line @40,mp_clamp@. Both functions will clamp excess leading digits which keeps +the number of used digits low. + +\section{Comparisons} +\subsection{Unsigned Comparisions} +Comparing a multiple precision integer is performed with the exact same algorithm used to compare two decimal numbers. For example, +to compare $1,234$ to $1,264$ the digits are extracted by their positions. That is we compare $1 \cdot 10^3 + 2 \cdot 10^2 + 3 \cdot 10^1 + 4 \cdot 10^0$ +to $1 \cdot 10^3 + 2 \cdot 10^2 + 6 \cdot 10^1 + 4 \cdot 10^0$ by comparing single digits at a time starting with the highest magnitude +positions. If any leading digit of one integer is greater than a digit in the same position of another integer then obviously it must be greater. + +The first comparision routine that will be developed is the unsigned magnitude compare which will perform a comparison based on the digits of two +mp\_int variables alone. It will ignore the sign of the two inputs. Such a function is useful when an absolute comparison is required or if the +signs are known to agree in advance. + +To facilitate working with the results of the comparison functions three constants are required. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{|r|l|} +\hline \textbf{Constant} & \textbf{Meaning} \\ +\hline \textbf{MP\_GT} & Greater Than \\ +\hline \textbf{MP\_EQ} & Equal To \\ +\hline \textbf{MP\_LT} & Less Than \\ +\hline +\end{tabular} +\end{center} +\caption{Comparison Return Codes} +\end{figure} + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_cmp\_mag}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$. \\ +\textbf{Output}. Unsigned comparison results ($a$ to the left of $b$). \\ +\hline \\ +1. If $a.used > b.used$ then return(\textit{MP\_GT}) \\ +2. If $a.used < b.used$ then return(\textit{MP\_LT}) \\ +3. for n from $a.used - 1$ to 0 do \\ +\hspace{+3mm}3.1 if $a_n > b_n$ then return(\textit{MP\_GT}) \\ +\hspace{+3mm}3.2 if $a_n < b_n$ then return(\textit{MP\_LT}) \\ +4. Return(\textit{MP\_EQ}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_cmp\_mag} +\end{figure} + +\textbf{Algorithm mp\_cmp\_mag.} +By saying ``$a$ to the left of $b$'' it is meant that the comparison is with respect to $a$, that is if $a$ is greater than $b$ it will return +\textbf{MP\_GT} and similar with respect to when $a = b$ and $a < b$. The first two steps compare the number of digits used in both $a$ and $b$. +Obviously if the digit counts differ there would be an imaginary zero digit in the smaller number where the leading digit of the larger number is. +If both have the same number of digits than the actual digits themselves must be compared starting at the leading digit. + +By step three both inputs must have the same number of digits so its safe to start from either $a.used - 1$ or $b.used - 1$ and count down to +the zero'th digit. If after all of the digits have been compared, no difference is found, the algorithm returns \textbf{MP\_EQ}. + +EXAM,bn_mp_cmp_mag.c + +The two if statements on lines @24,if@ and @28,if@ compare the number of digits in the two inputs. These two are performed before all of the digits +are compared since it is a very cheap test to perform and can potentially save considerable time. The implementation given is also not valid +without those two statements. $b.alloc$ may be smaller than $a.used$, meaning that undefined values will be read from $b$ past the end of the +array of digits. + +\subsection{Signed Comparisons} +Comparing with sign considerations is also fairly critical in several routines (\textit{division for example}). Based on an unsigned magnitude +comparison a trivial signed comparison algorithm can be written. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_cmp}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ \\ +\textbf{Output}. Signed Comparison Results ($a$ to the left of $b$) \\ +\hline \\ +1. if $a.sign = MP\_NEG$ and $b.sign = MP\_ZPOS$ then return(\textit{MP\_LT}) \\ +2. if $a.sign = MP\_ZPOS$ and $b.sign = MP\_NEG$ then return(\textit{MP\_GT}) \\ +3. if $a.sign = MP\_NEG$ then \\ +\hspace{+3mm}3.1 Return the unsigned comparison of $b$ and $a$ (\textit{mp\_cmp\_mag}) \\ +4 Otherwise \\ +\hspace{+3mm}4.1 Return the unsigned comparison of $a$ and $b$ \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_cmp} +\end{figure} + +\textbf{Algorithm mp\_cmp.} +The first two steps compare the signs of the two inputs. If the signs do not agree then it can return right away with the appropriate +comparison code. When the signs are equal the digits of the inputs must be compared to determine the correct result. In step +three the unsigned comparision flips the order of the arguments since they are both negative. For instance, if $-a > -b$ then +$\vert a \vert < \vert b \vert$. Step number four will compare the two when they are both positive. + +EXAM,bn_mp_cmp.c + +The two if statements on lines @22,if@ and @26,if@ perform the initial sign comparison. If the signs are not the equal then which ever +has the positive sign is larger. At line @30,if@, the inputs are compared based on magnitudes. If the signs were both negative then +the unsigned comparison is performed in the opposite direction (\textit{line @31,mp_cmp_mag@}). Otherwise, the signs are assumed to +be both positive and a forward direction unsigned comparison is performed. + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 2 \right ]$ & Modify algorithm mp\_set\_int to accept as input a variable length array of bits. \\ + & \\ +$\left [ 3 \right ]$ & Give the probability that algorithm mp\_cmp\_mag will have to compare $k$ digits \\ + & of two random digits (of equal magnitude) before a difference is found. \\ + & \\ +$\left [ 1 \right ]$ & Suggest a simple method to speed up the implementation of mp\_cmp\_mag based \\ + & on the observations made in the previous problem. \\ + & +\end{tabular} + +\chapter{Basic Arithmetic} +\section{Introduction} +At this point algorithms for initialization, clearing, zeroing, copying, comparing and setting small constants have been +established. The next logical set of algorithms to develop are addition, subtraction and digit shifting algorithms. These +algorithms make use of the lower level algorithms and are the cruicial building block for the multiplication algorithms. It is very important +that these algorithms are highly optimized. On their own they are simple $O(n)$ algorithms but they can be called from higher level algorithms +which easily places them at $O(n^2)$ or even $O(n^3)$ work levels. + +MARK,SHIFTS +All of the algorithms within this chapter make use of the logical bit shift operations denoted by $<<$ and $>>$ for left and right +logical shifts respectively. A logical shift is analogous to sliding the decimal point of radix-10 representations. For example, the real +number $0.9345$ is equivalent to $93.45\%$ which is found by sliding the the decimal two places to the right (\textit{multiplying by $\beta^2 = 10^2$}). +Algebraically a binary logical shift is equivalent to a division or multiplication by a power of two. +For example, $a << k = a \cdot 2^k$ while $a >> k = \lfloor a/2^k \rfloor$. + +One significant difference between a logical shift and the way decimals are shifted is that digits below the zero'th position are removed +from the number. For example, consider $1101_2 >> 1$ using decimal notation this would produce $110.1_2$. However, with a logical shift the +result is $110_2$. + +\section{Addition and Subtraction} +In common twos complement fixed precision arithmetic negative numbers are easily represented by subtraction from the modulus. For example, with 32-bit integers +$a - b\mbox{ (mod }2^{32}\mbox{)}$ is the same as $a + (2^{32} - b) \mbox{ (mod }2^{32}\mbox{)}$ since $2^{32} \equiv 0 \mbox{ (mod }2^{32}\mbox{)}$. +As a result subtraction can be performed with a trivial series of logical operations and an addition. + +However, in multiple precision arithmetic negative numbers are not represented in the same way. Instead a sign flag is used to keep track of the +sign of the integer. As a result signed addition and subtraction are actually implemented as conditional usage of lower level addition or +subtraction algorithms with the sign fixed up appropriately. + +The lower level algorithms will add or subtract integers without regard to the sign flag. That is they will add or subtract the magnitude of +the integers respectively. + +\subsection{Low Level Addition} +An unsigned addition of multiple precision integers is performed with the same long-hand algorithm used to add decimal numbers. That is to add the +trailing digits first and propagate the resulting carry upwards. Since this is a lower level algorithm the name will have a ``s\_'' prefix. +Historically that convention stems from the MPI library where ``s\_'' stood for static functions that were hidden from the developer entirely. + +\newpage +\begin{figure}[!here] +\begin{center} +\begin{small} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_add}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ \\ +\textbf{Output}. The unsigned addition $c = \vert a \vert + \vert b \vert$. \\ +\hline \\ +1. if $a.used > b.used$ then \\ +\hspace{+3mm}1.1 $min \leftarrow b.used$ \\ +\hspace{+3mm}1.2 $max \leftarrow a.used$ \\ +\hspace{+3mm}1.3 $x \leftarrow a$ \\ +2. else \\ +\hspace{+3mm}2.1 $min \leftarrow a.used$ \\ +\hspace{+3mm}2.2 $max \leftarrow b.used$ \\ +\hspace{+3mm}2.3 $x \leftarrow b$ \\ +3. If $c.alloc < max + 1$ then grow $c$ to hold at least $max + 1$ digits (\textit{mp\_grow}) \\ +4. $oldused \leftarrow c.used$ \\ +5. $c.used \leftarrow max + 1$ \\ +6. $u \leftarrow 0$ \\ +7. for $n$ from $0$ to $min - 1$ do \\ +\hspace{+3mm}7.1 $c_n \leftarrow a_n + b_n + u$ \\ +\hspace{+3mm}7.2 $u \leftarrow c_n >> lg(\beta)$ \\ +\hspace{+3mm}7.3 $c_n \leftarrow c_n \mbox{ (mod }\beta\mbox{)}$ \\ +8. if $min \ne max$ then do \\ +\hspace{+3mm}8.1 for $n$ from $min$ to $max - 1$ do \\ +\hspace{+6mm}8.1.1 $c_n \leftarrow x_n + u$ \\ +\hspace{+6mm}8.1.2 $u \leftarrow c_n >> lg(\beta)$ \\ +\hspace{+6mm}8.1.3 $c_n \leftarrow c_n \mbox{ (mod }\beta\mbox{)}$ \\ +9. $c_{max} \leftarrow u$ \\ +10. if $olduse > max$ then \\ +\hspace{+3mm}10.1 for $n$ from $max + 1$ to $oldused - 1$ do \\ +\hspace{+6mm}10.1.1 $c_n \leftarrow 0$ \\ +11. Clamp excess digits in $c$. (\textit{mp\_clamp}) \\ +12. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Algorithm s\_mp\_add} +\end{figure} + +\textbf{Algorithm s\_mp\_add.} +This algorithm is loosely based on algorithm 14.7 of HAC \cite[pp. 594]{HAC} but has been extended to allow the inputs to have different magnitudes. +Coincidentally the description of algorithm A in Knuth \cite[pp. 266]{TAOCPV2} shares the same deficiency as the algorithm from \cite{HAC}. Even the +MIX pseudo machine code presented by Knuth \cite[pp. 266-267]{TAOCPV2} is incapable of handling inputs which are of different magnitudes. + +The first thing that has to be accomplished is to sort out which of the two inputs is the largest. The addition logic +will simply add all of the smallest input to the largest input and store that first part of the result in the +destination. Then it will apply a simpler addition loop to excess digits of the larger input. + +The first two steps will handle sorting the inputs such that $min$ and $max$ hold the digit counts of the two +inputs. The variable $x$ will be an mp\_int alias for the largest input or the second input $b$ if they have the +same number of digits. After the inputs are sorted the destination $c$ is grown as required to accomodate the sum +of the two inputs. The original \textbf{used} count of $c$ is copied and set to the new used count. + +At this point the first addition loop will go through as many digit positions that both inputs have. The carry +variable $\mu$ is set to zero outside the loop. Inside the loop an ``addition'' step requires three statements to produce +one digit of the summand. First +two digits from $a$ and $b$ are added together along with the carry $\mu$. The carry of this step is extracted and stored +in $\mu$ and finally the digit of the result $c_n$ is truncated within the range $0 \le c_n < \beta$. + +Now all of the digit positions that both inputs have in common have been exhausted. If $min \ne max$ then $x$ is an alias +for one of the inputs that has more digits. A simplified addition loop is then used to essentially copy the remaining digits +and the carry to the destination. + +The final carry is stored in $c_{max}$ and digits above $max$ upto $oldused$ are zeroed which completes the addition. + + +EXAM,bn_s_mp_add.c + +Lines @27,if@ to @35,}@ perform the initial sorting of the inputs and determine the $min$ and $max$ variables. Note that $x$ is a pointer to a +mp\_int assigned to the largest input, in effect it is a local alias. Lines @37,init@ to @42,}@ ensure that the destination is grown to +accomodate the result of the addition. + +Similar to the implementation of mp\_copy this function uses the braced code and local aliases coding style. The three aliases that are on +lines @56,tmpa@, @59,tmpb@ and @62,tmpc@ represent the two inputs and destination variables respectively. These aliases are used to ensure the +compiler does not have to dereference $a$, $b$ or $c$ (respectively) to access the digits of the respective mp\_int. + +The initial carry $u$ is cleared on line @65,u = 0@, note that $u$ is of type mp\_digit which ensures type compatibility within the +implementation. The initial addition loop begins on line @66,for@ and ends on line @75,}@. Similarly the conditional addition loop +begins on line @81,for@ and ends on line @90,}@. The addition is finished with the final carry being stored in $tmpc$ on line @94,tmpc++@. +Note the ``++'' operator on the same line. After line @94,tmpc++@ $tmpc$ will point to the $c.used$'th digit of the mp\_int $c$. This is useful +for the next loop on lines @97,for@ to @99,}@ which set any old upper digits to zero. + +\subsection{Low Level Subtraction} +The low level unsigned subtraction algorithm is very similar to the low level unsigned addition algorithm. The principle difference is that the +unsigned subtraction algorithm requires the result to be positive. That is when computing $a - b$ the condition $\vert a \vert \ge \vert b\vert$ must +be met for this algorithm to function properly. Keep in mind this low level algorithm is not meant to be used in higher level algorithms directly. +This algorithm as will be shown can be used to create functional signed addition and subtraction algorithms. + +MARK,GAMMA + +For this algorithm a new variable is required to make the description simpler. Recall from section 1.3.1 that a mp\_digit must be able to represent +the range $0 \le x < 2\beta$ for the algorithms to work correctly. However, it is allowable that a mp\_digit represent a larger range of values. For +this algorithm we will assume that the variable $\gamma$ represents the number of bits available in a +mp\_digit (\textit{this implies $2^{\gamma} > \beta$}). + +For example, the default for LibTomMath is to use a ``unsigned long'' for the mp\_digit ``type'' while $\beta = 2^{28}$. In ISO C an ``unsigned long'' +data type must be able to represent $0 \le x < 2^{32}$ meaning that in this case $\gamma = 32$. + +\newpage\begin{figure}[!here] +\begin{center} +\begin{small} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_sub}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ ($\vert a \vert \ge \vert b \vert$) \\ +\textbf{Output}. The unsigned subtraction $c = \vert a \vert - \vert b \vert$. \\ +\hline \\ +1. $min \leftarrow b.used$ \\ +2. $max \leftarrow a.used$ \\ +3. If $c.alloc < max$ then grow $c$ to hold at least $max$ digits. (\textit{mp\_grow}) \\ +4. $oldused \leftarrow c.used$ \\ +5. $c.used \leftarrow max$ \\ +6. $u \leftarrow 0$ \\ +7. for $n$ from $0$ to $min - 1$ do \\ +\hspace{3mm}7.1 $c_n \leftarrow a_n - b_n - u$ \\ +\hspace{3mm}7.2 $u \leftarrow c_n >> (\gamma - 1)$ \\ +\hspace{3mm}7.3 $c_n \leftarrow c_n \mbox{ (mod }\beta\mbox{)}$ \\ +8. if $min < max$ then do \\ +\hspace{3mm}8.1 for $n$ from $min$ to $max - 1$ do \\ +\hspace{6mm}8.1.1 $c_n \leftarrow a_n - u$ \\ +\hspace{6mm}8.1.2 $u \leftarrow c_n >> (\gamma - 1)$ \\ +\hspace{6mm}8.1.3 $c_n \leftarrow c_n \mbox{ (mod }\beta\mbox{)}$ \\ +9. if $oldused > max$ then do \\ +\hspace{3mm}9.1 for $n$ from $max$ to $oldused - 1$ do \\ +\hspace{6mm}9.1.1 $c_n \leftarrow 0$ \\ +10. Clamp excess digits of $c$. (\textit{mp\_clamp}). \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Algorithm s\_mp\_sub} +\end{figure} + +\textbf{Algorithm s\_mp\_sub.} +This algorithm performs the unsigned subtraction of two mp\_int variables under the restriction that the result must be positive. That is when +passing variables $a$ and $b$ the condition that $\vert a \vert \ge \vert b \vert$ must be met for the algorithm to function correctly. This +algorithm is loosely based on algorithm 14.9 \cite[pp. 595]{HAC} and is similar to algorithm S in \cite[pp. 267]{TAOCPV2} as well. As was the case +of the algorithm s\_mp\_add both other references lack discussion concerning various practical details such as when the inputs differ in magnitude. + +The initial sorting of the inputs is trivial in this algorithm since $a$ is guaranteed to have at least the same magnitude of $b$. Steps 1 and 2 +set the $min$ and $max$ variables. Unlike the addition routine there is guaranteed to be no carry which means that the final result can be at +most $max$ digits in length as opposed to $max + 1$. Similar to the addition algorithm the \textbf{used} count of $c$ is copied locally and +set to the maximal count for the operation. + +The subtraction loop that begins on step seven is essentially the same as the addition loop of algorithm s\_mp\_add except single precision +subtraction is used instead. Note the use of the $\gamma$ variable to extract the carry (\textit{also known as the borrow}) within the subtraction +loops. Under the assumption that two's complement single precision arithmetic is used this will successfully extract the desired carry. + +For example, consider subtracting $0101_2$ from $0100_2$ where $\gamma = 4$ and $\beta = 2$. The least significant bit will force a carry upwards to +the third bit which will be set to zero after the borrow. After the very first bit has been subtracted $4 - 1 \equiv 0011_2$ will remain, When the +third bit of $0101_2$ is subtracted from the result it will cause another carry. In this case though the carry will be forced to propagate all the +way to the most significant bit. + +Recall that $\beta < 2^{\gamma}$. This means that if a carry does occur just before the $lg(\beta)$'th bit it will propagate all the way to the most +significant bit. Thus, the high order bits of the mp\_digit that are not part of the actual digit will either be all zero, or all one. All that +is needed is a single zero or one bit for the carry. Therefore a single logical shift right by $\gamma - 1$ positions is sufficient to extract the +carry. This method of carry extraction may seem awkward but the reason for it becomes apparent when the implementation is discussed. + +If $b$ has a smaller magnitude than $a$ then step 9 will force the carry and copy operation to propagate through the larger input $a$ into $c$. Step +10 will ensure that any leading digits of $c$ above the $max$'th position are zeroed. + +EXAM,bn_s_mp_sub.c + +Line @24,min@ and @25,max@ perform the initial hardcoded sorting of the inputs. In reality the $min$ and $max$ variables are only aliases and are only +used to make the source code easier to read. Again the pointer alias optimization is used within this algorithm. Lines @42,tmpa@, @43,tmpb@ and @44,tmpc@ initialize the aliases for +$a$, $b$ and $c$ respectively. + +The first subtraction loop occurs on lines @47,u = 0@ through @61,}@. The theory behind the subtraction loop is exactly the same as that for +the addition loop. As remarked earlier there is an implementation reason for using the ``awkward'' method of extracting the carry +(\textit{see line @57, >>@}). The traditional method for extracting the carry would be to shift by $lg(\beta)$ positions and logically AND +the least significant bit. The AND operation is required because all of the bits above the $\lg(\beta)$'th bit will be set to one after a carry +occurs from subtraction. This carry extraction requires two relatively cheap operations to extract the carry. The other method is to simply +shift the most significant bit to the least significant bit thus extracting the carry with a single cheap operation. This optimization only works on +twos compliment machines which is a safe assumption to make. + +If $a$ has a larger magnitude than $b$ an additional loop (\textit{see lines @64,for@ through @73,}@}) is required to propagate the carry through +$a$ and copy the result to $c$. + +\subsection{High Level Addition} +Now that both lower level addition and subtraction algorithms have been established an effective high level signed addition algorithm can be +established. This high level addition algorithm will be what other algorithms and developers will use to perform addition of mp\_int data +types. + +Recall from section 5.2 that an mp\_int represents an integer with an unsigned mantissa (\textit{the array of digits}) and a \textbf{sign} +flag. A high level addition is actually performed as a series of eight separate cases which can be optimized down to three unique cases. + +\begin{figure}[!here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_add}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ \\ +\textbf{Output}. The signed addition $c = a + b$. \\ +\hline \\ +1. if $a.sign = b.sign$ then do \\ +\hspace{3mm}1.1 $c.sign \leftarrow a.sign$ \\ +\hspace{3mm}1.2 $c \leftarrow \vert a \vert + \vert b \vert$ (\textit{s\_mp\_add})\\ +2. else do \\ +\hspace{3mm}2.1 if $\vert a \vert < \vert b \vert$ then do (\textit{mp\_cmp\_mag}) \\ +\hspace{6mm}2.1.1 $c.sign \leftarrow b.sign$ \\ +\hspace{6mm}2.1.2 $c \leftarrow \vert b \vert - \vert a \vert$ (\textit{s\_mp\_sub}) \\ +\hspace{3mm}2.2 else do \\ +\hspace{6mm}2.2.1 $c.sign \leftarrow a.sign$ \\ +\hspace{6mm}2.2.2 $c \leftarrow \vert a \vert - \vert b \vert$ \\ +3. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_add} +\end{figure} + +\textbf{Algorithm mp\_add.} +This algorithm performs the signed addition of two mp\_int variables. There is no reference algorithm to draw upon from +either \cite{TAOCPV2} or \cite{HAC} since they both only provide unsigned operations. The algorithm is fairly +straightforward but restricted since subtraction can only produce positive results. + +\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{|c|c|c|c|c|} +\hline \textbf{Sign of $a$} & \textbf{Sign of $b$} & \textbf{$\vert a \vert > \vert b \vert $} & \textbf{Unsigned Operation} & \textbf{Result Sign Flag} \\ +\hline $+$ & $+$ & Yes & $c = a + b$ & $a.sign$ \\ +\hline $+$ & $+$ & No & $c = a + b$ & $a.sign$ \\ +\hline $-$ & $-$ & Yes & $c = a + b$ & $a.sign$ \\ +\hline $-$ & $-$ & No & $c = a + b$ & $a.sign$ \\ +\hline &&&&\\ + +\hline $+$ & $-$ & No & $c = b - a$ & $b.sign$ \\ +\hline $-$ & $+$ & No & $c = b - a$ & $b.sign$ \\ + +\hline &&&&\\ + +\hline $+$ & $-$ & Yes & $c = a - b$ & $a.sign$ \\ +\hline $-$ & $+$ & Yes & $c = a - b$ & $a.sign$ \\ + +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Addition Guide Chart} +\label{fig:AddChart} +\end{figure} + +Figure~\ref{fig:AddChart} lists all of the eight possible input combinations and is sorted to show that only three +specific cases need to be handled. The return code of the unsigned operations at step 1.2, 2.1.2 and 2.2.2 are +forwarded to step three to check for errors. This simplifies the description of the algorithm considerably and best +follows how the implementation actually was achieved. + +Also note how the \textbf{sign} is set before the unsigned addition or subtraction is performed. Recall from the descriptions of algorithms +s\_mp\_add and s\_mp\_sub that the mp\_clamp function is used at the end to trim excess digits. The mp\_clamp algorithm will set the \textbf{sign} +to \textbf{MP\_ZPOS} when the \textbf{used} digit count reaches zero. + +For example, consider performing $-a + a$ with algorithm mp\_add. By the description of the algorithm the sign is set to \textbf{MP\_NEG} which would +produce a result of $-0$. However, since the sign is set first then the unsigned addition is performed the subsequent usage of algorithm mp\_clamp +within algorithm s\_mp\_add will force $-0$ to become $0$. + +EXAM,bn_mp_add.c + +The source code follows the algorithm fairly closely. The most notable new source code addition is the usage of the $res$ integer variable which +is used to pass result of the unsigned operations forward. Unlike in the algorithm, the variable $res$ is merely returned as is without +explicitly checking it and returning the constant \textbf{MP\_OKAY}. The observation is this algorithm will succeed or fail only if the lower +level functions do so. Returning their return code is sufficient. + +\subsection{High Level Subtraction} +The high level signed subtraction algorithm is essentially the same as the high level signed addition algorithm. + +\newpage\begin{figure}[!here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_sub}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ \\ +\textbf{Output}. The signed subtraction $c = a - b$. \\ +\hline \\ +1. if $a.sign \ne b.sign$ then do \\ +\hspace{3mm}1.1 $c.sign \leftarrow a.sign$ \\ +\hspace{3mm}1.2 $c \leftarrow \vert a \vert + \vert b \vert$ (\textit{s\_mp\_add}) \\ +2. else do \\ +\hspace{3mm}2.1 if $\vert a \vert \ge \vert b \vert$ then do (\textit{mp\_cmp\_mag}) \\ +\hspace{6mm}2.1.1 $c.sign \leftarrow a.sign$ \\ +\hspace{6mm}2.1.2 $c \leftarrow \vert a \vert - \vert b \vert$ (\textit{s\_mp\_sub}) \\ +\hspace{3mm}2.2 else do \\ +\hspace{6mm}2.2.1 $c.sign \leftarrow \left \lbrace \begin{array}{ll} + MP\_ZPOS & \mbox{if }a.sign = MP\_NEG \\ + MP\_NEG & \mbox{otherwise} \\ + \end{array} \right .$ \\ +\hspace{6mm}2.2.2 $c \leftarrow \vert b \vert - \vert a \vert$ \\ +3. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_sub} +\end{figure} + +\textbf{Algorithm mp\_sub.} +This algorithm performs the signed subtraction of two inputs. Similar to algorithm mp\_add there is no reference in either \cite{TAOCPV2} or +\cite{HAC}. Also this algorithm is restricted by algorithm s\_mp\_sub. Chart \ref{fig:SubChart} lists the eight possible inputs and +the operations required. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{|c|c|c|c|c|} +\hline \textbf{Sign of $a$} & \textbf{Sign of $b$} & \textbf{$\vert a \vert \ge \vert b \vert $} & \textbf{Unsigned Operation} & \textbf{Result Sign Flag} \\ +\hline $+$ & $-$ & Yes & $c = a + b$ & $a.sign$ \\ +\hline $+$ & $-$ & No & $c = a + b$ & $a.sign$ \\ +\hline $-$ & $+$ & Yes & $c = a + b$ & $a.sign$ \\ +\hline $-$ & $+$ & No & $c = a + b$ & $a.sign$ \\ +\hline &&&& \\ +\hline $+$ & $+$ & Yes & $c = a - b$ & $a.sign$ \\ +\hline $-$ & $-$ & Yes & $c = a - b$ & $a.sign$ \\ +\hline &&&& \\ +\hline $+$ & $+$ & No & $c = b - a$ & $\mbox{opposite of }a.sign$ \\ +\hline $-$ & $-$ & No & $c = b - a$ & $\mbox{opposite of }a.sign$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Subtraction Guide Chart} +\label{fig:SubChart} +\end{figure} + +Similar to the case of algorithm mp\_add the \textbf{sign} is set first before the unsigned addition or subtraction. That is to prevent the +algorithm from producing $-a - -a = -0$ as a result. + +EXAM,bn_mp_sub.c + +Much like the implementation of algorithm mp\_add the variable $res$ is used to catch the return code of the unsigned addition or subtraction operations +and forward it to the end of the function. On line @38, != MP_LT@ the ``not equal to'' \textbf{MP\_LT} expression is used to emulate a +``greater than or equal to'' comparison. + +\section{Bit and Digit Shifting} +MARK,POLY +It is quite common to think of a multiple precision integer as a polynomial in $x$, that is $y = f(\beta)$ where $f(x) = \sum_{i=0}^{n-1} a_i x^i$. +This notation arises within discussion of Montgomery and Diminished Radix Reduction as well as Karatsuba multiplication and squaring. + +In order to facilitate operations on polynomials in $x$ as above a series of simple ``digit'' algorithms have to be established. That is to shift +the digits left or right as well to shift individual bits of the digits left and right. It is important to note that not all ``shift'' operations +are on radix-$\beta$ digits. + +\subsection{Multiplication by Two} + +In a binary system where the radix is a power of two multiplication by two not only arises often in other algorithms it is a fairly efficient +operation to perform. A single precision logical shift left is sufficient to multiply a single digit by two. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mul\_2}. \\ +\textbf{Input}. One mp\_int $a$ \\ +\textbf{Output}. $b = 2a$. \\ +\hline \\ +1. If $b.alloc < a.used + 1$ then grow $b$ to hold $a.used + 1$ digits. (\textit{mp\_grow}) \\ +2. $oldused \leftarrow b.used$ \\ +3. $b.used \leftarrow a.used$ \\ +4. $r \leftarrow 0$ \\ +5. for $n$ from 0 to $a.used - 1$ do \\ +\hspace{3mm}5.1 $rr \leftarrow a_n >> (lg(\beta) - 1)$ \\ +\hspace{3mm}5.2 $b_n \leftarrow (a_n << 1) + r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}5.3 $r \leftarrow rr$ \\ +6. If $r \ne 0$ then do \\ +\hspace{3mm}6.1 $b_{n + 1} \leftarrow r$ \\ +\hspace{3mm}6.2 $b.used \leftarrow b.used + 1$ \\ +7. If $b.used < oldused - 1$ then do \\ +\hspace{3mm}7.1 for $n$ from $b.used$ to $oldused - 1$ do \\ +\hspace{6mm}7.1.1 $b_n \leftarrow 0$ \\ +8. $b.sign \leftarrow a.sign$ \\ +9. Return(\textit{MP\_OKAY}).\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mul\_2} +\end{figure} + +\textbf{Algorithm mp\_mul\_2.} +This algorithm will quickly multiply a mp\_int by two provided $\beta$ is a power of two. Neither \cite{TAOCPV2} nor \cite{HAC} describe such +an algorithm despite the fact it arises often in other algorithms. The algorithm is setup much like the lower level algorithm s\_mp\_add since +it is for all intents and purposes equivalent to the operation $b = \vert a \vert + \vert a \vert$. + +Step 1 and 2 grow the input as required to accomodate the maximum number of \textbf{used} digits in the result. The initial \textbf{used} count +is set to $a.used$ at step 4. Only if there is a final carry will the \textbf{used} count require adjustment. + +Step 6 is an optimization implementation of the addition loop for this specific case. That is since the two values being added together +are the same there is no need to perform two reads from the digits of $a$. Step 6.1 performs a single precision shift on the current digit $a_n$ to +obtain what will be the carry for the next iteration. Step 6.2 calculates the $n$'th digit of the result as single precision shift of $a_n$ plus +the previous carry. Recall from ~SHIFTS~ that $a_n << 1$ is equivalent to $a_n \cdot 2$. An iteration of the addition loop is finished with +forwarding the carry to the next iteration. + +Step 7 takes care of any final carry by setting the $a.used$'th digit of the result to the carry and augmenting the \textbf{used} count of $b$. +Step 8 clears any leading digits of $b$ in case it originally had a larger magnitude than $a$. + +EXAM,bn_mp_mul_2.c + +This implementation is essentially an optimized implementation of s\_mp\_add for the case of doubling an input. The only noteworthy difference +is the use of the logical shift operator on line @52,<<@ to perform a single precision doubling. + +\subsection{Division by Two} +A division by two can just as easily be accomplished with a logical shift right as multiplication by two can be with a logical shift left. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div\_2}. \\ +\textbf{Input}. One mp\_int $a$ \\ +\textbf{Output}. $b = a/2$. \\ +\hline \\ +1. If $b.alloc < a.used$ then grow $b$ to hold $a.used$ digits. (\textit{mp\_grow}) \\ +2. If the reallocation failed return(\textit{MP\_MEM}). \\ +3. $oldused \leftarrow b.used$ \\ +4. $b.used \leftarrow a.used$ \\ +5. $r \leftarrow 0$ \\ +6. for $n$ from $b.used - 1$ to $0$ do \\ +\hspace{3mm}6.1 $rr \leftarrow a_n \mbox{ (mod }2\mbox{)}$\\ +\hspace{3mm}6.2 $b_n \leftarrow (a_n >> 1) + (r << (lg(\beta) - 1)) \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}6.3 $r \leftarrow rr$ \\ +7. If $b.used < oldused - 1$ then do \\ +\hspace{3mm}7.1 for $n$ from $b.used$ to $oldused - 1$ do \\ +\hspace{6mm}7.1.1 $b_n \leftarrow 0$ \\ +8. $b.sign \leftarrow a.sign$ \\ +9. Clamp excess digits of $b$. (\textit{mp\_clamp}) \\ +10. Return(\textit{MP\_OKAY}).\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div\_2} +\end{figure} + +\textbf{Algorithm mp\_div\_2.} +This algorithm will divide an mp\_int by two using logical shifts to the right. Like mp\_mul\_2 it uses a modified low level addition +core as the basis of the algorithm. Unlike mp\_mul\_2 the shift operations work from the leading digit to the trailing digit. The algorithm +could be written to work from the trailing digit to the leading digit however, it would have to stop one short of $a.used - 1$ digits to prevent +reading past the end of the array of digits. + +Essentially the loop at step 6 is similar to that of mp\_mul\_2 except the logical shifts go in the opposite direction and the carry is at the +least significant bit not the most significant bit. + +EXAM,bn_mp_div_2.c + +\section{Polynomial Basis Operations} +Recall from ~POLY~ that any integer can be represented as a polynomial in $x$ as $y = f(\beta)$. Such a representation is also known as +the polynomial basis \cite[pp. 48]{ROSE}. Given such a notation a multiplication or division by $x$ amounts to shifting whole digits a single +place. The need for such operations arises in several other higher level algorithms such as Barrett and Montgomery reduction, integer +division and Karatsuba multiplication. + +Converting from an array of digits to polynomial basis is very simple. Consider the integer $y \equiv (a_2, a_1, a_0)_{\beta}$ and recall that +$y = \sum_{i=0}^{2} a_i \beta^i$. Simply replace $\beta$ with $x$ and the expression is in polynomial basis. For example, $f(x) = 8x + 9$ is the +polynomial basis representation for $89$ using radix ten. That is, $f(10) = 8(10) + 9 = 89$. + +\subsection{Multiplication by $x$} + +Given a polynomial in $x$ such as $f(x) = a_n x^n + a_{n-1} x^{n-1} + ... + a_0$ multiplying by $x$ amounts to shifting the coefficients up one +degree. In this case $f(x) \cdot x = a_n x^{n+1} + a_{n-1} x^n + ... + a_0 x$. From a scalar basis point of view multiplying by $x$ is equivalent to +multiplying by the integer $\beta$. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_lshd}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $a \leftarrow a \cdot \beta^b$ (equivalent to multiplication by $x^b$). \\ +\hline \\ +1. If $b \le 0$ then return(\textit{MP\_OKAY}). \\ +2. If $a.alloc < a.used + b$ then grow $a$ to at least $a.used + b$ digits. (\textit{mp\_grow}). \\ +3. If the reallocation failed return(\textit{MP\_MEM}). \\ +4. $a.used \leftarrow a.used + b$ \\ +5. $i \leftarrow a.used - 1$ \\ +6. $j \leftarrow a.used - 1 - b$ \\ +7. for $n$ from $a.used - 1$ to $b$ do \\ +\hspace{3mm}7.1 $a_{i} \leftarrow a_{j}$ \\ +\hspace{3mm}7.2 $i \leftarrow i - 1$ \\ +\hspace{3mm}7.3 $j \leftarrow j - 1$ \\ +8. for $n$ from 0 to $b - 1$ do \\ +\hspace{3mm}8.1 $a_n \leftarrow 0$ \\ +9. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_lshd} +\end{figure} + +\textbf{Algorithm mp\_lshd.} +This algorithm multiplies an mp\_int by the $b$'th power of $x$. This is equivalent to multiplying by $\beta^b$. The algorithm differs +from the other algorithms presented so far as it performs the operation in place instead storing the result in a separate location. The +motivation behind this change is due to the way this function is typically used. Algorithms such as mp\_add store the result in an optionally +different third mp\_int because the original inputs are often still required. Algorithm mp\_lshd (\textit{and similarly algorithm mp\_rshd}) is +typically used on values where the original value is no longer required. The algorithm will return success immediately if +$b \le 0$ since the rest of algorithm is only valid when $b > 0$. + +First the destination $a$ is grown as required to accomodate the result. The counters $i$ and $j$ are used to form a \textit{sliding window} over +the digits of $a$ of length $b$. The head of the sliding window is at $i$ (\textit{the leading digit}) and the tail at $j$ (\textit{the trailing digit}). +The loop on step 7 copies the digit from the tail to the head. In each iteration the window is moved down one digit. The last loop on +step 8 sets the lower $b$ digits to zero. + +\newpage +FIGU,sliding_window,Sliding Window Movement + +EXAM,bn_mp_lshd.c + +The if statement on line @24,if@ ensures that the $b$ variable is greater than zero. The \textbf{used} count is incremented by $b$ before +the copy loop begins. This elminates the need for an additional variable in the for loop. The variable $top$ on line @42,top@ is an alias +for the leading digit while $bottom$ on line @45,bottom@ is an alias for the trailing edge. The aliases form a window of exactly $b$ digits +over the input. + +\subsection{Division by $x$} + +Division by powers of $x$ is easily achieved by shifting the digits right and removing any that will end up to the right of the zero'th digit. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_rshd}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $a \leftarrow a / \beta^b$ (Divide by $x^b$). \\ +\hline \\ +1. If $b \le 0$ then return. \\ +2. If $a.used \le b$ then do \\ +\hspace{3mm}2.1 Zero $a$. (\textit{mp\_zero}). \\ +\hspace{3mm}2.2 Return. \\ +3. $i \leftarrow 0$ \\ +4. $j \leftarrow b$ \\ +5. for $n$ from 0 to $a.used - b - 1$ do \\ +\hspace{3mm}5.1 $a_i \leftarrow a_j$ \\ +\hspace{3mm}5.2 $i \leftarrow i + 1$ \\ +\hspace{3mm}5.3 $j \leftarrow j + 1$ \\ +6. for $n$ from $a.used - b$ to $a.used - 1$ do \\ +\hspace{3mm}6.1 $a_n \leftarrow 0$ \\ +7. $a.used \leftarrow a.used - b$ \\ +8. Return. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_rshd} +\end{figure} + +\textbf{Algorithm mp\_rshd.} +This algorithm divides the input in place by the $b$'th power of $x$. It is analogous to dividing by a $\beta^b$ but much quicker since +it does not require single precision division. This algorithm does not actually return an error code as it cannot fail. + +If the input $b$ is less than one the algorithm quickly returns without performing any work. If the \textbf{used} count is less than or equal +to the shift count $b$ then it will simply zero the input and return. + +After the trivial cases of inputs have been handled the sliding window is setup. Much like the case of algorithm mp\_lshd a sliding window that +is $b$ digits wide is used to copy the digits. Unlike mp\_lshd the window slides in the opposite direction from the trailing to the leading digit. +Also the digits are copied from the leading to the trailing edge. + +Once the window copy is complete the upper digits must be zeroed and the \textbf{used} count decremented. + +EXAM,bn_mp_rshd.c + +The only noteworthy element of this routine is the lack of a return type. + +-- Will update later to give it a return type...Tom + +\section{Powers of Two} + +Now that algorithms for moving single bits as well as whole digits exist algorithms for moving the ``in between'' distances are required. For +example, to quickly multiply by $2^k$ for any $k$ without using a full multiplier algorithm would prove useful. Instead of performing single +shifts $k$ times to achieve a multiplication by $2^{\pm k}$ a mixture of whole digit shifting and partial digit shifting is employed. + +\subsection{Multiplication by Power of Two} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mul\_2d}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $c \leftarrow a \cdot 2^b$. \\ +\hline \\ +1. $c \leftarrow a$. (\textit{mp\_copy}) \\ +2. If $c.alloc < c.used + \lfloor b / lg(\beta) \rfloor + 2$ then grow $c$ accordingly. \\ +3. If the reallocation failed return(\textit{MP\_MEM}). \\ +4. If $b \ge lg(\beta)$ then \\ +\hspace{3mm}4.1 $c \leftarrow c \cdot \beta^{\lfloor b / lg(\beta) \rfloor}$ (\textit{mp\_lshd}). \\ +\hspace{3mm}4.2 If step 4.1 failed return(\textit{MP\_MEM}). \\ +5. $d \leftarrow b \mbox{ (mod }lg(\beta)\mbox{)}$ \\ +6. If $d \ne 0$ then do \\ +\hspace{3mm}6.1 $mask \leftarrow 2^d$ \\ +\hspace{3mm}6.2 $r \leftarrow 0$ \\ +\hspace{3mm}6.3 for $n$ from $0$ to $c.used - 1$ do \\ +\hspace{6mm}6.3.1 $rr \leftarrow c_n >> (lg(\beta) - d) \mbox{ (mod }mask\mbox{)}$ \\ +\hspace{6mm}6.3.2 $c_n \leftarrow (c_n << d) + r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}6.3.3 $r \leftarrow rr$ \\ +\hspace{3mm}6.4 If $r > 0$ then do \\ +\hspace{6mm}6.4.1 $c_{c.used} \leftarrow r$ \\ +\hspace{6mm}6.4.2 $c.used \leftarrow c.used + 1$ \\ +7. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mul\_2d} +\end{figure} + +\textbf{Algorithm mp\_mul\_2d.} +This algorithm multiplies $a$ by $2^b$ and stores the result in $c$. The algorithm uses algorithm mp\_lshd and a derivative of algorithm mp\_mul\_2 to +quickly compute the product. + +First the algorithm will multiply $a$ by $x^{\lfloor b / lg(\beta) \rfloor}$ which will ensure that the remainder multiplicand is less than +$\beta$. For example, if $b = 37$ and $\beta = 2^{28}$ then this step will multiply by $x$ leaving a multiplication by $2^{37 - 28} = 2^{9}$ +left. + +After the digits have been shifted appropriately at most $lg(\beta) - 1$ shifts are left to perform. Step 5 calculates the number of remaining shifts +required. If it is non-zero a modified shift loop is used to calculate the remaining product. +Essentially the loop is a generic version of algorith mp\_mul2 designed to handle any shift count in the range $1 \le x < lg(\beta)$. The $mask$ +variable is used to extract the upper $d$ bits to form the carry for the next iteration. + +This algorithm is loosely measured as a $O(2n)$ algorithm which means that if the input is $n$-digits that it takes $2n$ ``time'' to +complete. It is possible to optimize this algorithm down to a $O(n)$ algorithm at a cost of making the algorithm slightly harder to follow. + +EXAM,bn_mp_mul_2d.c + +Notes to be revised when code is updated. -- Tom + +\subsection{Division by Power of Two} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div\_2d}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $c \leftarrow \lfloor a / 2^b \rfloor, d \leftarrow a \mbox{ (mod }2^b\mbox{)}$. \\ +\hline \\ +1. If $b \le 0$ then do \\ +\hspace{3mm}1.1 $c \leftarrow a$ (\textit{mp\_copy}) \\ +\hspace{3mm}1.2 $d \leftarrow 0$ (\textit{mp\_zero}) \\ +\hspace{3mm}1.3 Return(\textit{MP\_OKAY}). \\ +2. $c \leftarrow a$ \\ +3. $d \leftarrow a \mbox{ (mod }2^b\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +4. If $b \ge lg(\beta)$ then do \\ +\hspace{3mm}4.1 $c \leftarrow \lfloor c/\beta^{\lfloor b/lg(\beta) \rfloor} \rfloor$ (\textit{mp\_rshd}). \\ +5. $k \leftarrow b \mbox{ (mod }lg(\beta)\mbox{)}$ \\ +6. If $k \ne 0$ then do \\ +\hspace{3mm}6.1 $mask \leftarrow 2^k$ \\ +\hspace{3mm}6.2 $r \leftarrow 0$ \\ +\hspace{3mm}6.3 for $n$ from $c.used - 1$ to $0$ do \\ +\hspace{6mm}6.3.1 $rr \leftarrow c_n \mbox{ (mod }mask\mbox{)}$ \\ +\hspace{6mm}6.3.2 $c_n \leftarrow (c_n >> k) + (r << (lg(\beta) - k))$ \\ +\hspace{6mm}6.3.3 $r \leftarrow rr$ \\ +7. Clamp excess digits of $c$. (\textit{mp\_clamp}) \\ +8. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div\_2d} +\end{figure} + +\textbf{Algorithm mp\_div\_2d.} +This algorithm will divide an input $a$ by $2^b$ and produce the quotient and remainder. The algorithm is designed much like algorithm +mp\_mul\_2d by first using whole digit shifts then single precision shifts. This algorithm will also produce the remainder of the division +by using algorithm mp\_mod\_2d. + +EXAM,bn_mp_div_2d.c + +The implementation of algorithm mp\_div\_2d is slightly different than the algorithm specifies. The remainder $d$ may be optionally +ignored by passing \textbf{NULL} as the pointer to the mp\_int variable. The temporary mp\_int variable $t$ is used to hold the +result of the remainder operation until the end. This allows $d$ and $a$ to represent the same mp\_int without modifying $a$ before +the quotient is obtained. + +The remainder of the source code is essentially the same as the source code for mp\_mul\_2d. (-- Fix this paragraph up later, Tom). + +\subsection{Remainder of Division by Power of Two} + +The last algorithm in the series of polynomial basis power of two algorithms is calculating the remainder of division by $2^b$. This +algorithm benefits from the fact that in twos complement arithmetic $a \mbox{ (mod }2^b\mbox{)}$ is the same as $a$ AND $2^b - 1$. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mod\_2d}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $c \leftarrow a \mbox{ (mod }2^b\mbox{)}$. \\ +\hline \\ +1. If $b \le 0$ then do \\ +\hspace{3mm}1.1 $c \leftarrow 0$ (\textit{mp\_zero}) \\ +\hspace{3mm}1.2 Return(\textit{MP\_OKAY}). \\ +2. If $b > a.used \cdot lg(\beta)$ then do \\ +\hspace{3mm}2.1 $c \leftarrow a$ (\textit{mp\_copy}) \\ +\hspace{3mm}2.2 Return the result of step 2.1. \\ +3. $c \leftarrow a$ \\ +4. If step 3 failed return(\textit{MP\_MEM}). \\ +5. for $n$ from $\lceil b / lg(\beta) \rceil$ to $c.used$ do \\ +\hspace{3mm}5.1 $c_n \leftarrow 0$ \\ +6. $k \leftarrow b \mbox{ (mod }lg(\beta)\mbox{)}$ \\ +7. $c_{\lfloor b / lg(\beta) \rfloor} \leftarrow c_{\lfloor b / lg(\beta) \rfloor} \mbox{ (mod }2^{k}\mbox{)}$. \\ +8. Clamp excess digits of $c$. (\textit{mp\_clamp}) \\ +9. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mod\_2d} +\end{figure} + +\textbf{Algorithm mp\_mod\_2d.} +This algorithm will quickly calculate the value of $a \mbox{ (mod }2^b\mbox{)}$. First if $b$ is less than or equal to zero the +result is set to zero. If $b$ is greater than the number of bits in $a$ then it simply copies $a$ to $c$ and returns. Otherwise, $a$ +is copied to $b$, leading digits are removed and the remaining leading digit is trimed to the exact bit count. + +EXAM,bn_mp_mod_2d.c + +-- Add comments later, Tom. + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 3 \right ] $ & Devise an algorithm that performs $a \cdot 2^b$ for generic values of $b$ \\ + & in $O(n)$ time. \\ + &\\ +$\left [ 3 \right ] $ & Devise an efficient algorithm to multiply by small low hamming \\ + & weight values such as $3$, $5$ and $9$. Extend it to handle all values \\ + & upto $64$ with a hamming weight less than three. \\ + &\\ +$\left [ 2 \right ] $ & Modify the preceding algorithm to handle values of the form \\ + & $2^k - 1$ as well. \\ + &\\ +$\left [ 3 \right ] $ & Using only algorithms mp\_mul\_2, mp\_div\_2 and mp\_add create an \\ + & algorithm to multiply two integers in roughly $O(2n^2)$ time for \\ + & any $n$-bit input. Note that the time of addition is ignored in the \\ + & calculation. \\ + & \\ +$\left [ 5 \right ] $ & Improve the previous algorithm to have a working time of at most \\ + & $O \left (2^{(k-1)}n + \left ({2n^2 \over k} \right ) \right )$ for an appropriate choice of $k$. Again ignore \\ + & the cost of addition. \\ + & \\ +$\left [ 2 \right ] $ & Devise a chart to find optimal values of $k$ for the previous problem \\ + & for $n = 64 \ldots 1024$ in steps of $64$. \\ + & \\ +$\left [ 2 \right ] $ & Using only algorithms mp\_abs and mp\_sub devise another method for \\ + & calculating the result of a signed comparison. \\ + & +\end{tabular} + +\chapter{Multiplication and Squaring} +\section{The Multipliers} +For most number theoretic problems including certain public key cryptographic algorithms, the ``multipliers'' form the most important subset of +algorithms of any multiple precision integer package. The set of multiplier algorithms include integer multiplication, squaring and modular reduction +where in each of the algorithms single precision multiplication is the dominant operation performed. This chapter will discuss integer multiplication +and squaring, leaving modular reductions for the subsequent chapter. + +The importance of the multiplier algorithms is for the most part driven by the fact that certain popular public key algorithms are based on modular +exponentiation, that is computing $d \equiv a^b \mbox{ (mod }c\mbox{)}$ for some arbitrary choice of $a$, $b$, $c$ and $d$. During a modular +exponentiation the majority\footnote{Roughly speaking a modular exponentiation will spend about 40\% of the time performing modular reductions, +35\% of the time performing squaring and 25\% of the time performing multiplications.} of the processor time is spent performing single precision +multiplications. + +For centuries general purpose multiplication has required a lengthly $O(n^2)$ process, whereby each digit of one multiplicand has to be multiplied +against every digit of the other multiplicand. Traditional long-hand multiplication is based on this process; while the techniques can differ the +overall algorithm used is essentially the same. Only ``recently'' have faster algorithms been studied. First Karatsuba multiplication was discovered in +1962. This algorithm can multiply two numbers with considerably fewer single precision multiplications when compared to the long-hand approach. +This technique led to the discovery of polynomial basis algorithms (\textit{good reference?}) and subquently Fourier Transform based solutions. + +\section{Multiplication} +\subsection{The Baseline Multiplication} +\label{sec:basemult} +\index{baseline multiplication} +Computing the product of two integers in software can be achieved using a trivial adaptation of the standard $O(n^2)$ long-hand multiplication +algorithm that school children are taught. The algorithm is considered an $O(n^2)$ algorithm since for two $n$-digit inputs $n^2$ single precision +multiplications are required. More specifically for a $m$ and $n$ digit input $m \cdot n$ single precision multiplications are required. To +simplify most discussions, it will be assumed that the inputs have comparable number of digits. + +The ``baseline multiplication'' algorithm is designed to act as the ``catch-all'' algorithm, only to be used when the faster algorithms cannot be +used. This algorithm does not use any particularly interesting optimizations and should ideally be avoided if possible. One important +facet of this algorithm, is that it has been modified to only produce a certain amount of output digits as resolution. The importance of this +modification will become evident during the discussion of Barrett modular reduction. Recall that for a $n$ and $m$ digit input the product +will be at most $n + m$ digits. Therefore, this algorithm can be reduced to a full multiplier by having it produce $n + m$ digits of the product. + +Recall from ~GAMMA~ the definition of $\gamma$ as the number of bits in the type \textbf{mp\_digit}. We shall now extend the variable set to +include $\alpha$ which shall represent the number of bits in the type \textbf{mp\_word}. This implies that $2^{\alpha} > 2 \cdot \beta^2$. The +constant $\delta = 2^{\alpha - 2lg(\beta)}$ will represent the maximal weight of any column in a product (\textit{see ~COMBA~ for more information}). + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_mul\_digs}. \\ +\textbf{Input}. mp\_int $a$, mp\_int $b$ and an integer $digs$ \\ +\textbf{Output}. $c \leftarrow \vert a \vert \cdot \vert b \vert \mbox{ (mod }\beta^{digs}\mbox{)}$. \\ +\hline \\ +1. If min$(a.used, b.used) < \delta$ then do \\ +\hspace{3mm}1.1 Calculate $c = \vert a \vert \cdot \vert b \vert$ by the Comba method (\textit{see algorithm~\ref{fig:COMBAMULT}}). \\ +\hspace{3mm}1.2 Return the result of step 1.1 \\ +\\ +Allocate and initialize a temporary mp\_int. \\ +2. Init $t$ to be of size $digs$ \\ +3. If step 2 failed return(\textit{MP\_MEM}). \\ +4. $t.used \leftarrow digs$ \\ +\\ +Compute the product. \\ +5. for $ix$ from $0$ to $a.used - 1$ do \\ +\hspace{3mm}5.1 $u \leftarrow 0$ \\ +\hspace{3mm}5.2 $pb \leftarrow \mbox{min}(b.used, digs - ix)$ \\ +\hspace{3mm}5.3 If $pb < 1$ then goto step 6. \\ +\hspace{3mm}5.4 for $iy$ from $0$ to $pb - 1$ do \\ +\hspace{6mm}5.4.1 $\hat r \leftarrow t_{iy + ix} + a_{ix} \cdot b_{iy} + u$ \\ +\hspace{6mm}5.4.2 $t_{iy + ix} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}5.4.3 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +\hspace{3mm}5.5 if $ix + pb < digs$ then do \\ +\hspace{6mm}5.5.1 $t_{ix + pb} \leftarrow u$ \\ +6. Clamp excess digits of $t$. \\ +7. Swap $c$ with $t$ \\ +8. Clear $t$ \\ +9. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm s\_mp\_mul\_digs} +\end{figure} + +\textbf{Algorithm s\_mp\_mul\_digs.} +This algorithm computes the unsigned product of two inputs $a$ and $b$, limited to an output precision of $digs$ digits. While it may seem +a bit awkward to modify the function from its simple $O(n^2)$ description, the usefulness of partial multipliers will arise in a subsequent +algorithm. The algorithm is loosely based on algorithm 14.12 from \cite[pp. 595]{HAC} and is similar to Algorithm M of Knuth \cite[pp. 268]{TAOCPV2}. +Algorithm s\_mp\_mul\_digs differs from these cited references since it can produce a variable output precision regardless of the precision of the +inputs. + +The first thing this algorithm checks for is whether a Comba multiplier can be used instead. If the minimum digit count of either +input is less than $\delta$, then the Comba method may be used instead. After the Comba method is ruled out, the baseline algorithm begins. A +temporary mp\_int variable $t$ is used to hold the intermediate result of the product. This allows the algorithm to be used to +compute products when either $a = c$ or $b = c$ without overwriting the inputs. + +All of step 5 is the infamous $O(n^2)$ multiplication loop slightly modified to only produce upto $digs$ digits of output. The $pb$ variable +is given the count of digits to read from $b$ inside the nested loop. If $pb \le 1$ then no more output digits can be produced and the algorithm +will exit the loop. The best way to think of the loops are as a series of $pb \times 1$ multiplications. That is, in each pass of the +innermost loop $a_{ix}$ is multiplied against $b$ and the result is added (\textit{with an appropriate shift}) to $t$. + +For example, consider multiplying $576$ by $241$. That is equivalent to computing $10^0(1)(576) + 10^1(4)(576) + 10^2(2)(576)$ which is best +visualized in the following table. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{|c|c|c|c|c|c|l|} +\hline && & 5 & 7 & 6 & \\ +\hline $\times$&& & 2 & 4 & 1 & \\ +\hline &&&&&&\\ + && & 5 & 7 & 6 & $10^0(1)(576)$ \\ + &2 & 3 & 6 & 1 & 6 & $10^1(4)(576) + 10^0(1)(576)$ \\ + 1 & 3 & 8 & 8 & 1 & 6 & $10^2(2)(576) + 10^1(4)(576) + 10^0(1)(576)$ \\ +\hline +\end{tabular} +\end{center} +\caption{Long-Hand Multiplication Diagram} +\end{figure} + +Each row of the product is added to the result after being shifted to the left (\textit{multiplied by a power of the radix}) by the appropriate +count. That is in pass $ix$ of the inner loop the product is added starting at the $ix$'th digit of the reult. + +Step 5.4.1 introduces the hat symbol (\textit{e.g. $\hat r$}) which represents a double precision variable. The multiplication on that step +is assumed to be a double wide output single precision multiplication. That is, two single precision variables are multiplied to produce a +double precision result. The step is somewhat optimized from a long-hand multiplication algorithm because the carry from the addition in step +5.4.1 is propagated through the nested loop. If the carry was not propagated immediately it would overflow the single precision digit +$t_{ix+iy}$ and the result would be lost. + +At step 5.5 the nested loop is finished and any carry that was left over should be forwarded. The carry does not have to be added to the $ix+pb$'th +digit since that digit is assumed to be zero at this point. However, if $ix + pb \ge digs$ the carry is not set as it would make the result +exceed the precision requested. + +EXAM,bn_s_mp_mul_digs.c + +Lines @31,if@ to @35,}@ determine if the Comba method can be used first. The conditions for using the Comba routine are that min$(a.used, b.used) < \delta$ and +the number of digits of output is less than \textbf{MP\_WARRAY}. This new constant is used to control +the stack usage in the Comba routines. By default it is set to $\delta$ but can be reduced when memory is at a premium. + +Of particular importance is the calculation of the $ix+iy$'th column on lines @64,mp_word@, @65,mp_word@ and @66,mp_word@. Note how all of the +variables are cast to the type \textbf{mp\_word}, which is also the type of variable $\hat r$. That is to ensure that double precision operations +are used instead of single precision. The multiplication on line @65,) * (@ makes use of a specific GCC optimizer behaviour. On the outset it looks like +the compiler will have to use a double precision multiplication to produce the result required. Such an operation would be horribly slow on most +processors and drag this to a crawl. However, GCC is smart enough to realize that double wide output single precision multipliers can be used. For +example, the instruction ``MUL'' on the x86 processor can multiply two 32-bit values and produce a 64-bit result. + +\subsection{Faster Multiplication by the ``Comba'' Method} +MARK,COMBA + +One of the huge drawbacks of the ``baseline'' algorithms is that at the $O(n^2)$ level the carry must be computed and propagated upwards. This +makes the nested loop very sequential and hard to unroll and implement in parallel. The ``Comba'' \cite{COMBA} method is named after little known +(\textit{in cryptographic venues}) Paul G. Comba who described a method of implementing fast multipliers that do not require nested +carry fixup operations. As an interesting aside it seems that Paul Barrett describes a similar technique in +his 1986 paper \cite{BARRETT} written five years before. + +At the heart of the Comba technique is once again the long-hand algorithm. Except in this case a slight twist is placed on how +the columns of the result are produced. In the standard long-hand algorithm rows of products are produced then added together to form the +final result. In the baseline algorithm the columns are added together after each iteration to get the result instantaneously. + +In the Comba algorithm the columns of the result are produced entirely independently of each other. That is at the $O(n^2)$ level a +simple multiplication and addition step is performed. The carries of the columns are propagated after the nested loop to reduce the amount +of work requiored. Succintly the first step of the algorithm is to compute the product vector $\vec x$ as follows. + +\begin{equation} +\vec x_n = \sum_{i+j = n} a_ib_j, \forall n \in \lbrace 0, 1, 2, \ldots, i + j \rbrace +\end{equation} + +Where $\vec x_n$ is the $n'th$ column of the output vector. Consider the following example which computes the vector $\vec x$ for the multiplication +of $576$ and $241$. + +\newpage\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{|c|c|c|c|c|c|} + \hline & & 5 & 7 & 6 & First Input\\ + \hline $\times$ & & 2 & 4 & 1 & Second Input\\ +\hline & & $1 \cdot 5 = 5$ & $1 \cdot 7 = 7$ & $1 \cdot 6 = 6$ & First pass \\ + & $4 \cdot 5 = 20$ & $4 \cdot 7+5=33$ & $4 \cdot 6+7=31$ & 6 & Second pass \\ + $2 \cdot 5 = 10$ & $2 \cdot 7 + 20 = 34$ & $2 \cdot 6+33=45$ & 31 & 6 & Third pass \\ +\hline 10 & 34 & 45 & 31 & 6 & Final Result \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Comba Multiplication Diagram} +\end{figure} + +At this point the vector $x = \left < 10, 34, 45, 31, 6 \right >$ is the result of the first step of the Comba multipler. +Now the columns must be fixed by propagating the carry upwards. The resultant vector will have one extra dimension over the input vector which is +congruent to adding a leading zero digit. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Comba Fixup}. \\ +\textbf{Input}. Vector $\vec x$ of dimension $k$ \\ +\textbf{Output}. Vector $\vec x$ such that the carries have been propagated. \\ +\hline \\ +1. for $n$ from $0$ to $k - 1$ do \\ +\hspace{3mm}1.1 $\vec x_{n+1} \leftarrow \vec x_{n+1} + \lfloor \vec x_{n}/\beta \rfloor$ \\ +\hspace{3mm}1.2 $\vec x_{n} \leftarrow \vec x_{n} \mbox{ (mod }\beta\mbox{)}$ \\ +2. Return($\vec x$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Comba Fixup} +\end{figure} + +With that algorithm and $k = 5$ and $\beta = 10$ the following vector is produced $\vec x= \left < 1, 3, 8, 8, 1, 6 \right >$. In this case +$241 \cdot 576$ is in fact $138816$ and the procedure succeeded. If the algorithm is correct and as will be demonstrated shortly more +efficient than the baseline algorithm why not simply always use this algorithm? + +\subsubsection{Column Weight.} +At the nested $O(n^2)$ level the Comba method adds the product of two single precision variables to each column of the output +independently. A serious obstacle is if the carry is lost, due to lack of precision before the algorithm has a chance to fix +the carries. For example, in the multiplication of two three-digit numbers the third column of output will be the sum of +three single precision multiplications. If the precision of the accumulator for the output digits is less then $3 \cdot (\beta - 1)^2$ then +an overflow can occur and the carry information will be lost. For any $m$ and $n$ digit inputs the maximum weight of any column is +min$(m, n)$ which is fairly obvious. + +The maximum number of terms in any column of a product is known as the ``column weight'' and strictly governs when the algorithm can be used. Recall +from earlier that a double precision type has $\alpha$ bits of resolution and a single precision digit has $lg(\beta)$ bits of precision. Given these +two quantities we must not violate the following + +\begin{equation} +k \cdot \left (\beta - 1 \right )^2 < 2^{\alpha} +\end{equation} + +Which reduces to + +\begin{equation} +k \cdot \left ( \beta^2 - 2\beta + 1 \right ) < 2^{\alpha} +\end{equation} + +Let $\rho = lg(\beta)$ represent the number of bits in a single precision digit. By further re-arrangement of the equation the final solution is +found. + +\begin{equation} +k < {{2^{\alpha}} \over {\left (2^{2\rho} - 2^{\rho + 1} + 1 \right )}} +\end{equation} + +The defaults for LibTomMath are $\beta = 2^{28}$ and $\alpha = 2^{64}$ which means that $k$ is bounded by $k < 257$. In this configuration +the smaller input may not have more than $256$ digits if the Comba method is to be used. This is quite satisfactory for most applications since +$256$ digits would allow for numbers in the range of $0 \le x < 2^{7168}$ which, is much larger than most public key cryptographic algorithms require. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{fast\_s\_mp\_mul\_digs}. \\ +\textbf{Input}. mp\_int $a$, mp\_int $b$ and an integer $digs$ \\ +\textbf{Output}. $c \leftarrow \vert a \vert \cdot \vert b \vert \mbox{ (mod }\beta^{digs}\mbox{)}$. \\ +\hline \\ +Place an array of \textbf{MP\_WARRAY} double precision digits named $\hat W$ on the stack. \\ +1. If $c.alloc < digs$ then grow $c$ to $digs$ digits. (\textit{mp\_grow}) \\ +2. If step 1 failed return(\textit{MP\_MEM}).\\ +\\ +Zero the temporary array $\hat W$. \\ +3. for $n$ from $0$ to $digs - 1$ do \\ +\hspace{3mm}3.1 $\hat W_n \leftarrow 0$ \\ +\\ +Compute the columns. \\ +4. for $ix$ from $0$ to $a.used - 1$ do \\ +\hspace{3mm}4.1 $pb \leftarrow \mbox{min}(b.used, digs - ix)$ \\ +\hspace{3mm}4.2 If $pb < 1$ then goto step 5. \\ +\hspace{3mm}4.3 for $iy$ from $0$ to $pb - 1$ do \\ +\hspace{6mm}4.3.1 $\hat W_{ix+iy} \leftarrow \hat W_{ix+iy} + a_{ix}b_{iy}$ \\ +\\ +Propagate the carries upwards. \\ +5. $oldused \leftarrow c.used$ \\ +6. $c.used \leftarrow digs$ \\ +7. If $digs > 1$ then do \\ +\hspace{3mm}7.1. for $ix$ from $1$ to $digs - 1$ do \\ +\hspace{6mm}7.1.1 $\hat W_{ix} \leftarrow \hat W_{ix} + \lfloor \hat W_{ix-1} / \beta \rfloor$ \\ +\hspace{6mm}7.1.2 $c_{ix - 1} \leftarrow \hat W_{ix - 1} \mbox{ (mod }\beta\mbox{)}$ \\ +8. else do \\ +\hspace{3mm}8.1 $ix \leftarrow 0$ \\ +9. $c_{ix} \leftarrow \hat W_{ix} \mbox{ (mod }\beta\mbox{)}$ \\ +\\ +Zero excess digits. \\ +10. If $digs < oldused$ then do \\ +\hspace{3mm}10.1 for $n$ from $digs$ to $oldused - 1$ do \\ +\hspace{6mm}10.1.1 $c_n \leftarrow 0$ \\ +11. Clamp excessive digits of $c$. (\textit{mp\_clamp}) \\ +12. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm fast\_s\_mp\_mul\_digs} +\label{fig:COMBAMULT} +\end{figure} + +\textbf{Algorithm fast\_s\_mp\_mul\_digs.} +This algorithm performs the unsigned multiplication of $a$ and $b$ using the Comba method limited to $digs$ digits of precision. The algorithm +essentially peforms the same calculation as algorithm s\_mp\_mul\_digs, just much faster. + +The array $\hat W$ is meant to be on the stack when the algorithm is used. The size of the array does not change which is ideal. Note also that +unlike algorithm s\_mp\_mul\_digs no temporary mp\_int is required since the result is calculated directly in $\hat W$. + +The $O(n^2)$ loop on step four is where the Comba method's advantages begin to show through in comparison to the baseline algorithm. The lack of +a carry variable or propagation in this loop allows the loop to be performed with only single precision multiplication and additions. Now that each +iteration of the inner loop can be performed independent of the others the inner loop can be performed with a high level of parallelism. + +To measure the benefits of the Comba method over the baseline method consider the number of operations that are required. If the +cost in terms of time of a multiply and addition is $p$ and the cost of a carry propagation is $q$ then a baseline multiplication would require +$O \left ((p + q)n^2 \right )$ time to multiply two $n$-digit numbers. The Comba method requires only $O(pn^2 + qn)$ time, however in practice, +the speed increase is actually much more. With $O(n)$ space the algorithm can be reduced to $O(pn + qn)$ time by implementing the $n$ multiply +and addition operations in the nested loop in parallel. + +EXAM,bn_fast_s_mp_mul_digs.c + +The memset on line @47,memset@ clears the initial $\hat W$ array to zero in a single step. Like the slower baseline multiplication +implementation a series of aliases (\textit{lines @67, tmpx@, @70, tmpy@ and @75,_W@}) are used to simplify the inner $O(n^2)$ loop. +In this case a new alias $\_\hat W$ has been added which refers to the double precision columns offset by $ix$ in each pass. + +The inner loop on lines @83,for@, @84,mp_word@ and @85,}@ is where the algorithm will spend the majority of the time, which is why it has been +stripped to the bones of any extra baggage\footnote{Hence the pointer aliases.}. On x86 processors the multiplication and additions amount to at the +very least five instructions (\textit{two loads, two additions, one multiply}) while on the ARMv4 processors they amount to only three +(\textit{one load, one store, one multiply-add}). For both of the x86 and ARMv4 processors the GCC compiler performs a good job at unrolling the loop +and scheduling the instructions so there are very few dependency stalls. + +In theory the difference between the baseline and comba algorithms is a mere $O(qn)$ time difference. However, in the $O(n^2)$ nested loop of the +baseline method there are dependency stalls as the algorithm must wait for the multiplier to finish before propagating the carry to the next +digit. As a result fewer of the often multiple execution units\footnote{The AMD Athlon has three execution units and the Intel P4 has four.} can +be simultaneously used. + +\subsection{Polynomial Basis Multiplication} +To break the $O(n^2)$ barrier in multiplication requires a completely different look at integer multiplication. In the following algorithms +the use of polynomial basis representation for two integers $a$ and $b$ as $f(x) = \sum_{i=0}^{n} a_i x^i$ and +$g(x) = \sum_{i=0}^{n} b_i x^i$ respectively, is required. In this system both $f(x)$ and $g(x)$ have $n + 1$ terms and are of the $n$'th degree. + +The product $a \cdot b \equiv f(x)g(x)$ is the polynomial $W(x) = \sum_{i=0}^{2n} w_i x^i$. The coefficients $w_i$ will +directly yield the desired product when $\beta$ is substituted for $x$. The direct solution to solve for the $2n + 1$ coefficients +requires $O(n^2)$ time and would in practice be slower than the Comba technique. + +However, numerical analysis theory indicates that only $2n + 1$ distinct points in $W(x)$ are required to determine the values of the $2n + 1$ unknown +coefficients. This means by finding $\zeta_y = W(y)$ for $2n + 1$ small values of $y$ the coefficients of $W(x)$ can be found with +Gaussian elimination. This technique is also occasionally refered to as the \textit{interpolation technique} (\textit{references please...}) since in +effect an interpolation based on $2n + 1$ points will yield a polynomial equivalent to $W(x)$. + +The coefficients of the polynomial $W(x)$ are unknown which makes finding $W(y)$ for any value of $y$ impossible. However, since +$W(x) = f(x)g(x)$ the equivalent $\zeta_y = f(y) g(y)$ can be used in its place. The benefit of this technique stems from the +fact that $f(y)$ and $g(y)$ are much smaller than either $a$ or $b$ respectively. As a result finding the $2n + 1$ relations required +by multiplying $f(y)g(y)$ involves multiplying integers that are much smaller than either of the inputs. + +When picking points to gather relations there are always three obvious points to choose, $y = 0, 1$ and $ \infty$. The $\zeta_0$ term +is simply the product $W(0) = w_0 = a_0 \cdot b_0$. The $\zeta_1$ term is the product +$W(1) = \left (\sum_{i = 0}^{n} a_i \right ) \left (\sum_{i = 0}^{n} b_i \right )$. The third point $\zeta_{\infty}$ is less obvious but rather +simple to explain. The $2n + 1$'th coefficient of $W(x)$ is numerically equivalent to the most significant column in an integer multiplication. +The point at $\infty$ is used symbolically to represent the most significant column, that is $W(\infty) = w_{2n} = a_nb_n$. Note that the +points at $y = 0$ and $\infty$ yield the coefficients $w_0$ and $w_{2n}$ directly. + +If more points are required they should be of small values and powers of two such as $2^q$ and the related \textit{mirror points} +$\left (2^q \right )^{2n} \cdot \zeta_{2^{-q}}$ for small values of $q$. The term ``mirror point'' stems from the fact that +$\left (2^q \right )^{2n} \cdot \zeta_{2^{-q}}$ can be calculated in the exact opposite fashion as $\zeta_{2^q}$. For +example, when $n = 2$ and $q = 1$ then following two equations are equivalent to the point $\zeta_{2}$ and its mirror. + +\begin{eqnarray} +\zeta_{2} = f(2)g(2) = (4a_2 + 2a_1 + a_0)(4b_2 + 2b_1 + b_0) \nonumber \\ +16 \cdot \zeta_{1 \over 2} = 4f({1\over 2}) \cdot 4g({1 \over 2}) = (a_2 + 2a_1 + 4a_0)(b_2 + 2b_1 + 4b_0) +\end{eqnarray} + +Using such points will allow the values of $f(y)$ and $g(y)$ to be independently calculated using only left shifts. For example, when $n = 2$ the +polynomial $f(2^q)$ is equal to $2^q((2^qa_2) + a_1) + a_0$. This technique of polynomial representation is known as Horner's method. + +As a general rule of the algorithm when the inputs are split into $n$ parts each there are $2n - 1$ multiplications. Each multiplication is of +multiplicands that have $n$ times fewer digits than the inputs. The asymptotic running time of this algorithm is +$O \left ( k^{lg_n(2n - 1)} \right )$ for $k$ digit inputs (\textit{assuming they have the same number of digits}). Figure~\ref{fig:exponent} +summarizes the exponents for various values of $n$. + +\begin{figure} +\begin{center} +\begin{tabular}{|c|c|c|} +\hline \textbf{Split into $n$ Parts} & \textbf{Exponent} & \textbf{Notes}\\ +\hline $2$ & $1.584962501$ & This is Karatsuba Multiplication. \\ +\hline $3$ & $1.464973520$ & This is Toom-Cook Multiplication. \\ +\hline $4$ & $1.403677461$ &\\ +\hline $5$ & $1.365212389$ &\\ +\hline $10$ & $1.278753601$ &\\ +\hline $100$ & $1.149426538$ &\\ +\hline $1000$ & $1.100270931$ &\\ +\hline $10000$ & $1.075252070$ &\\ +\hline +\end{tabular} +\end{center} +\caption{Asymptotic Running Time of Polynomial Basis Multiplication} +\label{fig:exponent} +\end{figure} + +At first it may seem like a good idea to choose $n = 1000$ since the exponent is approximately $1.1$. However, the overhead +of solving for the 2001 terms of $W(x)$ will certainly consume any savings the algorithm could offer for all but exceedingly large +numbers. + +\subsubsection{Cutoff Point} +The polynomial basis multiplication algorithms all require fewer single precision multiplications than a straight Comba approach. However, +the algorithms incur an overhead (\textit{at the $O(n)$ work level}) since they require a system of equations to be solved. This makes the +polynomial basis approach more costly to use with small inputs. + +Let $m$ represent the number of digits in the multiplicands (\textit{assume both multiplicands have the same number of digits}). There exists a +point $y$ such that when $m < y$ the polynomial basis algorithms are more costly than Comba, when $m = y$ they are roughly the same cost and +when $m > y$ the Comba methods are slower than the polynomial basis algorithms. + +The exact location of $y$ depends on several key architectural elements of the computer platform in question. + +\begin{enumerate} +\item The ratio of clock cycles for single precision multiplication versus other simpler operations such as addition, shifting, etc. For example +on the AMD Athlon the ratio is roughly $17 : 1$ while on the Intel P4 it is $29 : 1$. The higher the ratio in favour of multiplication the lower +the cutoff point $y$ will be. + +\item The complexity of the linear system of equations (\textit{for the coefficients of $W(x)$}) is. Generally speaking as the number of splits +grows the complexity grows substantially. Ideally solving the system will only involve addition, subtraction and shifting of integers. This +directly reflects on the ratio previous mentioned. + +\item To a lesser extent memory bandwidth and function call overheads. Provided the values are in the processor cache this is less of an +influence over the cutoff point. + +\end{enumerate} + +A clean cutoff point separation occurs when a point $y$ is found such that all of the cutoff point conditions are met. For example, if the point +is too low then there will be values of $m$ such that $m > y$ and the Comba method is still faster. Finding the cutoff points is fairly simple when +a high resolution timer is available. + +\subsection{Karatsuba Multiplication} +Karatsuba \cite{KARA} multiplication when originally proposed in 1962 was among the first set of algorithms to break the $O(n^2)$ barrier for +general purpose multiplication. Given two polynomial basis representations $f(x) = ax + b$ and $g(x) = cx + d$, Karatsuba proved with +light algebra \cite{KARAP} that the following polynomial is equivalent to multiplication of the two integers the polynomials represent. + +\begin{equation} +f(x) \cdot g(x) = acx^2 + ((a - b)(c - d) - (ac + bd))x + bd +\end{equation} + +Using the observation that $ac$ and $bd$ could be re-used only three half sized multiplications would be required to produce the product. Applying +this algorithm recursively, the work factor becomes $O(n^{lg(3)})$ which is substantially better than the work factor $O(n^2)$ of the Comba technique. It turns +out what Karatsuba did not know or at least did not publish was that this is simply polynomial basis multiplication with the points +$\zeta_0$, $\zeta_{\infty}$ and $-\zeta_{-1}$. Consider the resultant system of equations. + +\begin{center} +\begin{tabular}{rcrcrcrc} +$\zeta_{0}$ & $=$ & & & & & $w_0$ \\ +$-\zeta_{-1}$ & $=$ & $-w_2$ & $+$ & $w_1$ & $-$ & $w_0$ \\ +$\zeta_{\infty}$ & $=$ & $w_2$ & & & & \\ +\end{tabular} +\end{center} + +By adding the first and last equation to the equation in the middle the term $w_1$ can be isolated and all three coefficients solved for. The simplicity +of this system of equations has made Karatsuba fairly popular. In fact the cutoff point is often fairly low\footnote{With LibTomMath 0.18 it is 70 and 109 digits for the Intel P4 and AMD Athlon respectively.} +making it an ideal algorithm to speed up certain public key cryptosystems such as RSA and Diffie-Hellman. It is worth noting that the point +$\zeta_1$ could be substituted for $-\zeta_{-1}$. In this case the first and third row are subtracted instead of added to the second row. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_karatsuba\_mul}. \\ +\textbf{Input}. mp\_int $a$ and mp\_int $b$ \\ +\textbf{Output}. $c \leftarrow \vert a \vert \cdot \vert b \vert$ \\ +\hline \\ +1. Init the following mp\_int variables: $x0$, $x1$, $y0$, $y1$, $t1$, $x0y0$, $x1y1$.\\ +2. If step 2 failed then return(\textit{MP\_MEM}). \\ +\\ +Split the input. e.g. $a = x1 \cdot \beta^B + x0$ \\ +3. $B \leftarrow \mbox{min}(a.used, b.used)/2$ \\ +4. $x0 \leftarrow a \mbox{ (mod }\beta^B\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +5. $y0 \leftarrow b \mbox{ (mod }\beta^B\mbox{)}$ \\ +6. $x1 \leftarrow \lfloor a / \beta^B \rfloor$ (\textit{mp\_rshd}) \\ +7. $y1 \leftarrow \lfloor b / \beta^B \rfloor$ \\ +\\ +Calculate the three products. \\ +8. $x0y0 \leftarrow x0 \cdot y0$ (\textit{mp\_mul}) \\ +9. $x1y1 \leftarrow x1 \cdot y1$ \\ +10. $t1 \leftarrow x1 - x0$ (\textit{mp\_sub}) \\ +11. $x0 \leftarrow y1 - y0$ \\ +12. $t1 \leftarrow t1 \cdot x0$ \\ +\\ +Calculate the middle term. \\ +13. $x0 \leftarrow x0y0 + x1y1$ \\ +14. $t1 \leftarrow x0 - t1$ \\ +\\ +Calculate the final product. \\ +15. $t1 \leftarrow t1 \cdot \beta^B$ (\textit{mp\_lshd}) \\ +16. $x1y1 \leftarrow x1y1 \cdot \beta^{2B}$ \\ +17. $t1 \leftarrow x0y0 + t1$ \\ +18. $c \leftarrow t1 + x1y1$ \\ +19. Clear all of the temporary variables. \\ +20. Return(\textit{MP\_OKAY}).\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_karatsuba\_mul} +\end{figure} + +\textbf{Algorithm mp\_karatsuba\_mul.} +This algorithm computes the unsigned product of two inputs using the Karatsuba multiplication algorithm. It is loosely based on the description +from Knuth \cite[pp. 294-295]{TAOCPV2}. + +\index{radix point} +In order to split the two inputs into their respective halves, a suitable \textit{radix point} must be chosen. The radix point chosen must +be used for both of the inputs meaning that it must be smaller than the smallest input. Step 3 chooses the radix point $B$ as half of the +smallest input \textbf{used} count. After the radix point is chosen the inputs are split into lower and upper halves. Step 4 and 5 +compute the lower halves. Step 6 and 7 computer the upper halves. + +After the halves have been computed the three intermediate half-size products must be computed. Step 8 and 9 compute the trivial products +$x0 \cdot y0$ and $x1 \cdot y1$. The mp\_int $x0$ is used as a temporary variable after $x1 - x0$ has been computed. By using $x0$ instead +of an additional temporary variable, the algorithm can avoid an addition memory allocation operation. + +The remaining steps 13 through 18 compute the Karatsuba polynomial through a variety of digit shifting and addition operations. + +EXAM,bn_mp_karatsuba_mul.c + +The new coding element in this routine, not seen in previous routines, is the usage of goto statements. The conventional +wisdom is that goto statements should be avoided. This is generally true, however when every single function call can fail, it makes sense +to handle error recovery with a single piece of code. Lines @61,if@ to @75,if@ handle initializing all of the temporary variables +required. Note how each of the if statements goes to a different label in case of failure. This allows the routine to correctly free only +the temporaries that have been successfully allocated so far. + +The temporary variables are all initialized using the mp\_init\_size routine since they are expected to be large. This saves the +additional reallocation that would have been necessary. Also $x0$, $x1$, $y0$ and $y1$ have to be able to hold at least their respective +number of digits for the next section of code. + +The first algebraic portion of the algorithm is to split the two inputs into their halves. However, instead of using mp\_mod\_2d and mp\_rshd +to extract the halves, the respective code has been placed inline within the body of the function. To initialize the halves, the \textbf{used} and +\textbf{sign} members are copied first. The first for loop on line @98,for@ copies the lower halves. Since they are both the same magnitude it +is simpler to calculate both lower halves in a single loop. The for loop on lines @104,for@ and @109,for@ calculate the upper halves $x1$ and +$y1$ respectively. + +By inlining the calculation of the halves, the Karatsuba multiplier has a slightly lower overhead and can be used for smaller magnitude inputs. + +When line @152,err@ is reached, the algorithm has completed succesfully. The ``error status'' variable $err$ is set to \textbf{MP\_OKAY} so that +the same code that handles errors can be used to clear the temporary variables and return. + +\subsection{Toom-Cook $3$-Way Multiplication} +Toom-Cook $3$-Way \cite{TOOM} multiplication is essentially the polynomial basis algorithm for $n = 2$ except that the points are +chosen such that $\zeta$ is easy to compute and the resulting system of equations easy to reduce. Here, the points $\zeta_{0}$, +$16 \cdot \zeta_{1 \over 2}$, $\zeta_1$, $\zeta_2$ and $\zeta_{\infty}$ make up the five required points to solve for the coefficients +of the $W(x)$. + +With the five relations that Toom-Cook specifies, the following system of equations is formed. + +\begin{center} +\begin{tabular}{rcrcrcrcrcr} +$\zeta_0$ & $=$ & $0w_4$ & $+$ & $0w_3$ & $+$ & $0w_2$ & $+$ & $0w_1$ & $+$ & $1w_0$ \\ +$16 \cdot \zeta_{1 \over 2}$ & $=$ & $1w_4$ & $+$ & $2w_3$ & $+$ & $4w_2$ & $+$ & $8w_1$ & $+$ & $16w_0$ \\ +$\zeta_1$ & $=$ & $1w_4$ & $+$ & $1w_3$ & $+$ & $1w_2$ & $+$ & $1w_1$ & $+$ & $1w_0$ \\ +$\zeta_2$ & $=$ & $16w_4$ & $+$ & $8w_3$ & $+$ & $4w_2$ & $+$ & $2w_1$ & $+$ & $1w_0$ \\ +$\zeta_{\infty}$ & $=$ & $1w_4$ & $+$ & $0w_3$ & $+$ & $0w_2$ & $+$ & $0w_1$ & $+$ & $0w_0$ \\ +\end{tabular} +\end{center} + +A trivial solution to this matrix requires $12$ subtractions, two multiplications by a small power of two, two divisions by a small power +of two, two divisions by three and one multiplication by three. All of these $19$ sub-operations require less than quadratic time, meaning that +the algorithm can be faster than a baseline multiplication. However, the greater complexity of this algorithm places the cutoff point +(\textbf{TOOM\_MUL\_CUTOFF}) where Toom-Cook becomes more efficient much higher than the Karatsuba cutoff point. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_toom\_mul}. \\ +\textbf{Input}. mp\_int $a$ and mp\_int $b$ \\ +\textbf{Output}. $c \leftarrow a \cdot b $ \\ +\hline \\ +Split $a$ and $b$ into three pieces. E.g. $a = a_2 \beta^{2k} + a_1 \beta^{k} + a_0$ \\ +1. $k \leftarrow \lfloor \mbox{min}(a.used, b.used) / 3 \rfloor$ \\ +2. $a_0 \leftarrow a \mbox{ (mod }\beta^{k}\mbox{)}$ \\ +3. $a_1 \leftarrow \lfloor a / \beta^k \rfloor$, $a_1 \leftarrow a_1 \mbox{ (mod }\beta^{k}\mbox{)}$ \\ +4. $a_2 \leftarrow \lfloor a / \beta^{2k} \rfloor$, $a_2 \leftarrow a_2 \mbox{ (mod }\beta^{k}\mbox{)}$ \\ +5. $b_0 \leftarrow a \mbox{ (mod }\beta^{k}\mbox{)}$ \\ +6. $b_1 \leftarrow \lfloor a / \beta^k \rfloor$, $b_1 \leftarrow b_1 \mbox{ (mod }\beta^{k}\mbox{)}$ \\ +7. $b_2 \leftarrow \lfloor a / \beta^{2k} \rfloor$, $b_2 \leftarrow b_2 \mbox{ (mod }\beta^{k}\mbox{)}$ \\ +\\ +Find the five equations for $w_0, w_1, ..., w_4$. \\ +8. $w_0 \leftarrow a_0 \cdot b_0$ \\ +9. $w_4 \leftarrow a_2 \cdot b_2$ \\ +10. $tmp_1 \leftarrow 2 \cdot a_0$, $tmp_1 \leftarrow a_1 + tmp_1$, $tmp_1 \leftarrow 2 \cdot tmp_1$, $tmp_1 \leftarrow tmp_1 + a_2$ \\ +11. $tmp_2 \leftarrow 2 \cdot b_0$, $tmp_2 \leftarrow b_1 + tmp_2$, $tmp_2 \leftarrow 2 \cdot tmp_2$, $tmp_2 \leftarrow tmp_2 + b_2$ \\ +12. $w_1 \leftarrow tmp_1 \cdot tmp_2$ \\ +13. $tmp_1 \leftarrow 2 \cdot a_2$, $tmp_1 \leftarrow a_1 + tmp_1$, $tmp_1 \leftarrow 2 \cdot tmp_1$, $tmp_1 \leftarrow tmp_1 + a_0$ \\ +14. $tmp_2 \leftarrow 2 \cdot b_2$, $tmp_2 \leftarrow b_1 + tmp_2$, $tmp_2 \leftarrow 2 \cdot tmp_2$, $tmp_2 \leftarrow tmp_2 + b_0$ \\ +15. $w_3 \leftarrow tmp_1 \cdot tmp_2$ \\ +16. $tmp_1 \leftarrow a_0 + a_1$, $tmp_1 \leftarrow tmp_1 + a_2$, $tmp_2 \leftarrow b_0 + b_1$, $tmp_2 \leftarrow tmp_2 + b_2$ \\ +17. $w_2 \leftarrow tmp_1 \cdot tmp_2$ \\ +\\ +Continued on the next page.\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_toom\_mul} +\end{figure} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_toom\_mul} (continued). \\ +\textbf{Input}. mp\_int $a$ and mp\_int $b$ \\ +\textbf{Output}. $c \leftarrow a \cdot b $ \\ +\hline \\ +Now solve the system of equations. \\ +18. $w_1 \leftarrow w_4 - w_1$, $w_3 \leftarrow w_3 - w_0$ \\ +19. $w_1 \leftarrow \lfloor w_1 / 2 \rfloor$, $w_3 \leftarrow \lfloor w_3 / 2 \rfloor$ \\ +20. $w_2 \leftarrow w_2 - w_0$, $w_2 \leftarrow w_2 - w_4$ \\ +21. $w_1 \leftarrow w_1 - w_2$, $w_3 \leftarrow w_3 - w_2$ \\ +22. $tmp_1 \leftarrow 8 \cdot w_0$, $w_1 \leftarrow w_1 - tmp_1$, $tmp_1 \leftarrow 8 \cdot w_4$, $w_3 \leftarrow w_3 - tmp_1$ \\ +23. $w_2 \leftarrow 3 \cdot w_2$, $w_2 \leftarrow w_2 - w_1$, $w_2 \leftarrow w_2 - w_3$ \\ +24. $w_1 \leftarrow w_1 - w_2$, $w_3 \leftarrow w_3 - w_2$ \\ +25. $w_1 \leftarrow \lfloor w_1 / 3 \rfloor, w_3 \leftarrow \lfloor w_3 / 3 \rfloor$ \\ +\\ +Now substitute $\beta^k$ for $x$ by shifting $w_0, w_1, ..., w_4$. \\ +26. for $n$ from $1$ to $4$ do \\ +\hspace{3mm}26.1 $w_n \leftarrow w_n \cdot \beta^{nk}$ \\ +27. $c \leftarrow w_0 + w_1$, $c \leftarrow c + w_2$, $c \leftarrow c + w_3$, $c \leftarrow c + w_4$ \\ +28. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_toom\_mul (continued)} +\end{figure} + +\textbf{Algorithm mp\_toom\_mul.} +This algorithm computes the product of two mp\_int variables $a$ and $b$ using the Toom-Cook approach. Compared to the Karatsuba multiplication, this +algorithm has a lower asymptotic running time of approximately $O(n^{1.464})$ but at an obvious cost in overhead. In this +description, several statements have been compounded to save space. The intention is that the statements are executed from left to right across +any given step. + +The two inputs $a$ and $b$ are first split into three $k$-digit integers $a_0, a_1, a_2$ and $b_0, b_1, b_2$ respectively. From these smaller +integers the coefficients of the polynomial basis representations $f(x)$ and $g(x)$ are known and can be used to find the relations required. + +The first two relations $w_0$ and $w_4$ are the points $\zeta_{0}$ and $\zeta_{\infty}$ respectively. The relation $w_1, w_2$ and $w_3$ correspond +to the points $16 \cdot \zeta_{1 \over 2}, \zeta_{2}$ and $\zeta_{1}$ respectively. These are found using logical shifts to independently find +$f(y)$ and $g(y)$ which significantly speeds up the algorithm. + +After the five relations $w_0, w_1, \ldots, w_4$ have been computed, the system they represent must be solved in order for the unknown coefficients +$w_1, w_2$ and $w_3$ to be isolated. The steps 18 through 25 perform the system reduction required as previously described. Each step of +the reduction represents the comparable matrix operation that would be performed had this been performed by pencil. For example, step 18 indicates +that row $1$ must be subtracted from row $4$ and simultaneously row $0$ subtracted from row $3$. + +Once the coeffients have been isolated, the polynomial $W(x) = \sum_{i=0}^{2n} w_i x^i$ is known. By substituting $\beta^{k}$ for $x$, the integer +result $a \cdot b$ is produced. + +EXAM,bn_mp_toom_mul.c + +-- Comments to be added during editing phase. + +\subsection{Signed Multiplication} +Now that algorithms to handle multiplications of every useful dimensions have been developed, a rather simple finishing touch is required. So far all +of the multiplication algorithms have been unsigned multiplications which leaves only a signed multiplication algorithm to be established. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mul}. \\ +\textbf{Input}. mp\_int $a$ and mp\_int $b$ \\ +\textbf{Output}. $c \leftarrow a \cdot b$ \\ +\hline \\ +1. If $a.sign = b.sign$ then \\ +\hspace{3mm}1.1 $sign = MP\_ZPOS$ \\ +2. else \\ +\hspace{3mm}2.1 $sign = MP\_ZNEG$ \\ +3. If min$(a.used, b.used) \ge TOOM\_MUL\_CUTOFF$ then \\ +\hspace{3mm}3.1 $c \leftarrow a \cdot b$ using algorithm mp\_toom\_mul \\ +4. else if min$(a.used, b.used) \ge KARATSUBA\_MUL\_CUTOFF$ then \\ +\hspace{3mm}4.1 $c \leftarrow a \cdot b$ using algorithm mp\_karatsuba\_mul \\ +5. else \\ +\hspace{3mm}5.1 $digs \leftarrow a.used + b.used + 1$ \\ +\hspace{3mm}5.2 If $digs < MP\_ARRAY$ and min$(a.used, b.used) \le \delta$ then \\ +\hspace{6mm}5.2.1 $c \leftarrow a \cdot b \mbox{ (mod }\beta^{digs}\mbox{)}$ using algorithm fast\_s\_mp\_mul\_digs. \\ +\hspace{3mm}5.3 else \\ +\hspace{6mm}5.3.1 $c \leftarrow a \cdot b \mbox{ (mod }\beta^{digs}\mbox{)}$ using algorithm s\_mp\_mul\_digs. \\ +6. $c.sign \leftarrow sign$ \\ +7. Return the result of the unsigned multiplication performed. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mul} +\end{figure} + +\textbf{Algorithm mp\_mul.} +This algorithm performs the signed multiplication of two inputs. It will make use of any of the three unsigned multiplication algorithms +available when the input is of appropriate size. The \textbf{sign} of the result is not set until the end of the algorithm since algorithm +s\_mp\_mul\_digs will clear it. + +EXAM,bn_mp_mul.c + +The implementation is rather simplistic and is not particularly noteworthy. Line @22,?@ computes the sign of the result using the ``?'' +operator from the C programming language. Line @37,<<@ computes $\delta$ using the fact that $1 << k$ is equal to $2^k$. + +\section{Squaring} +\label{sec:basesquare} + +Squaring is a special case of multiplication where both multiplicands are equal. At first it may seem like there is no significant optimization +available but in fact there is. Consider the multiplication of $576$ against $241$. In total there will be nine single precision multiplications +performed which are $1\cdot 6$, $1 \cdot 7$, $1 \cdot 5$, $4 \cdot 6$, $4 \cdot 7$, $4 \cdot 5$, $2 \cdot 6$, $2 \cdot 7$ and $2 \cdot 5$. Now consider +the multiplication of $123$ against $123$. The nine products are $3 \cdot 3$, $3 \cdot 2$, $3 \cdot 1$, $2 \cdot 3$, $2 \cdot 2$, $2 \cdot 1$, +$1 \cdot 3$, $1 \cdot 2$ and $1 \cdot 1$. On closer inspection some of the products are equivalent. For example, $3 \cdot 2 = 2 \cdot 3$ +and $3 \cdot 1 = 1 \cdot 3$. + +For any $n$-digit input, there are ${{\left (n^2 + n \right)}\over 2}$ possible unique single precision multiplications required compared to the $n^2$ +required for multiplication. The following diagram gives an example of the operations required. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{ccccc|c} +&&1&2&3&\\ +$\times$ &&1&2&3&\\ +\hline && $3 \cdot 1$ & $3 \cdot 2$ & $3 \cdot 3$ & Row 0\\ + & $2 \cdot 1$ & $2 \cdot 2$ & $2 \cdot 3$ && Row 1 \\ + $1 \cdot 1$ & $1 \cdot 2$ & $1 \cdot 3$ &&& Row 2 \\ +\end{tabular} +\end{center} +\caption{Squaring Optimization Diagram} +\end{figure} + +MARK,SQUARE +Starting from zero and numbering the columns from right to left a very simple pattern becomes obvious. For the purposes of this discussion let $x$ +represent the number being squared. The first observation is that in row $k$ the $2k$'th column of the product has a $\left (x_k \right)^2$ term in it. + +The second observation is that every column $j$ in row $k$ where $j \ne 2k$ is part of a double product. Every non-square term of a column will +appear twice hence the name ``double product''. Every odd column is made up entirely of double products. In fact every column is made up of double +products and at most one square (\textit{see the exercise section}). + +The third and final observation is that for row $k$ the first unique non-square term, that is, one that hasn't already appeared in an earlier row, +occurs at column $2k + 1$. For example, on row $1$ of the previous squaring, column one is part of the double product with column one from row zero. +Column two of row one is a square and column three is the first unique column. + +\subsection{The Baseline Squaring Algorithm} +The baseline squaring algorithm is meant to be a catch-all squaring algorithm. It will handle any of the input sizes that the faster routines +will not handle. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_sqr}. \\ +\textbf{Input}. mp\_int $a$ \\ +\textbf{Output}. $b \leftarrow a^2$ \\ +\hline \\ +1. Init a temporary mp\_int of at least $2 \cdot a.used +1$ digits. (\textit{mp\_init\_size}) \\ +2. If step 1 failed return(\textit{MP\_MEM}) \\ +3. $t.used \leftarrow 2 \cdot a.used + 1$ \\ +4. For $ix$ from 0 to $a.used - 1$ do \\ +\hspace{3mm}Calculate the square. \\ +\hspace{3mm}4.1 $\hat r \leftarrow t_{2ix} + \left (a_{ix} \right )^2$ \\ +\hspace{3mm}4.2 $t_{2ix} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}Calculate the double products after the square. \\ +\hspace{3mm}4.3 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +\hspace{3mm}4.4 For $iy$ from $ix + 1$ to $a.used - 1$ do \\ +\hspace{6mm}4.4.1 $\hat r \leftarrow 2 \cdot a_{ix}a_{iy} + t_{ix + iy} + u$ \\ +\hspace{6mm}4.4.2 $t_{ix + iy} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}4.4.3 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +\hspace{3mm}Set the last carry. \\ +\hspace{3mm}4.5 While $u > 0$ do \\ +\hspace{6mm}4.5.1 $iy \leftarrow iy + 1$ \\ +\hspace{6mm}4.5.2 $\hat r \leftarrow t_{ix + iy} + u$ \\ +\hspace{6mm}4.5.3 $t_{ix + iy} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}4.5.4 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +5. Clamp excess digits of $t$. (\textit{mp\_clamp}) \\ +6. Exchange $b$ and $t$. \\ +7. Clear $t$ (\textit{mp\_clear}) \\ +8. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm s\_mp\_sqr} +\end{figure} + +\textbf{Algorithm s\_mp\_sqr.} +This algorithm computes the square of an input using the three observations on squaring. It is based fairly faithfully on algorithm 14.16 of HAC +\cite[pp.596-597]{HAC}. Similar to algorithm s\_mp\_mul\_digs, a temporary mp\_int is allocated to hold the result of the squaring. This allows the +destination mp\_int to be the same as the source mp\_int. + +The outer loop of this algorithm begins on step 4. It is best to think of the outer loop as walking down the rows of the partial results, while +the inner loop computes the columns of the partial result. Step 4.1 and 4.2 compute the square term for each row, and step 4.3 and 4.4 propagate +the carry and compute the double products. + +The requirement that a mp\_word be able to represent the range $0 \le x < 2 \beta^2$ arises from this +very algorithm. The product $a_{ix}a_{iy}$ will lie in the range $0 \le x \le \beta^2 - 2\beta + 1$ which is obviously less than $\beta^2$ meaning that +when it is multiplied by two, it can be properly represented by a mp\_word. + +Similar to algorithm s\_mp\_mul\_digs, after every pass of the inner loop, the destination is correctly set to the sum of all of the partial +results calculated so far. This involves expensive carry propagation which will be eliminated in the next algorithm. + +EXAM,bn_s_mp_sqr.c + +Inside the outer loop (\textit{see line @32,for@}) the square term is calculated on line @35,r =@. Line @42,>>@ extracts the carry from the square +term. Aliases for $a_{ix}$ and $t_{ix+iy}$ are initialized on lines @45,tmpx@ and @48,tmpt@ respectively. The doubling is performed using two +additions (\textit{see line @57,r + r@}) since it is usually faster than shifting,if not at least as fast. + +\subsection{Faster Squaring by the ``Comba'' Method} +A major drawback to the baseline method is the requirement for single precision shifting inside the $O(n^2)$ nested loop. Squaring has an additional +drawback that it must double the product inside the inner loop as well. As for multiplication, the Comba technique can be used to eliminate these +performance hazards. + +The first obvious solution is to make an array of mp\_words which will hold all of the columns. This will indeed eliminate all of the carry +propagation operations from the inner loop. However, the inner product must still be doubled $O(n^2)$ times. The solution stems from the simple fact +that $2a + 2b + 2c = 2(a + b + c)$. That is the sum of all of the double products is equal to double the sum of all the products. For example, +$ab + ba + ac + ca = 2ab + 2ac = 2(ab + ac)$. + +However, we cannot simply double all of the columns, since the squares appear only once per row. The most practical solution is to have two mp\_word +arrays. One array will hold the squares and the other array will hold the double products. With both arrays the doubling and carry propagation can be +moved to a $O(n)$ work level outside the $O(n^2)$ level. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{fast\_s\_mp\_sqr}. \\ +\textbf{Input}. mp\_int $a$ \\ +\textbf{Output}. $b \leftarrow a^2$ \\ +\hline \\ +Place two arrays of \textbf{MP\_WARRAY} mp\_words named $\hat W$ and $\hat {X}$ on the stack. \\ +1. If $b.alloc < 2a.used + 1$ then grow $b$ to $2a.used + 1$ digits. (\textit{mp\_grow}). \\ +2. If step 1 failed return(\textit{MP\_MEM}). \\ +3. for $ix$ from $0$ to $2a.used + 1$ do \\ +\hspace{3mm}3.1 $\hat W_{ix} \leftarrow 0$ \\ +\hspace{3mm}3.2 $\hat {X}_{ix} \leftarrow 0$ \\ +4. for $ix$ from $0$ to $a.used - 1$ do \\ +\hspace{3mm}Compute the square.\\ +\hspace{3mm}4.1 $\hat {X}_{ix+ix} \leftarrow \left ( a_{ix} \right )^2$ \\ +\\ +\hspace{3mm}Compute the double products.\\ +\hspace{3mm}4.2 for $iy$ from $ix + 1$ to $a.used - 1$ do \\ +\hspace{6mm}4.2.1 $\hat W_{ix+iy} \leftarrow \hat W_{ix+iy} + a_{ix}a_{iy}$ \\ +5. $oldused \leftarrow b.used$ \\ +6. $b.used \leftarrow 2a.used + 1$ \\ +\\ +Double the products and propagate the carries simultaneously. \\ +7. $\hat W_0 \leftarrow 2 \hat W_0 + \hat {X}_0$ \\ +8. for $ix$ from $1$ to $2a.used$ do \\ +\hspace{3mm}8.1 $\hat W_{ix} \leftarrow 2 \hat W_{ix} + \hat {X}_{ix}$ \\ +\hspace{3mm}8.2 $\hat W_{ix} \leftarrow \hat W_{ix} + \lfloor \hat W_{ix - 1} / \beta \rfloor$ \\ +\hspace{3mm}8.3 $b_{ix-1} \leftarrow W_{ix-1} \mbox{ (mod }\beta\mbox{)}$ \\ +9. $b_{2a.used} \leftarrow \hat W_{2a.used} \mbox{ (mod }\beta\mbox{)}$ \\ +10. if $2a.used + 1 < oldused$ then do \\ +\hspace{3mm}10.1 for $ix$ from $2a.used + 1$ to $oldused$ do \\ +\hspace{6mm}10.1.1 $b_{ix} \leftarrow 0$ \\ +11. Clamp excess digits from $b$. (\textit{mp\_clamp}) \\ +12. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm fast\_s\_mp\_sqr} +\end{figure} + +\textbf{Algorithm fast\_s\_mp\_sqr.} +This algorithm computes the square of an input using the Comba technique. It is designed to be a replacement for algorithm s\_mp\_sqr when +the number of input digits is less than \textbf{MP\_WARRAY} and less than $\delta \over 2$. + +This routine requires two arrays of mp\_words to be placed on the stack. The first array $\hat W$ will hold the double products and the second +array $\hat X$ will hold the squares. Though only at most $MP\_WARRAY \over 2$ words of $\hat X$ are used, it has proven faster on most +processors to simply make it a full size array. + +The loop on step 3 will zero the two arrays to prepare them for the squaring step. Step 4.1 computes the squares of the product. Note how +it simply assigns the value into the $\hat X$ array. The nested loop on step 4.2 computes the doubles of the products. This loop +computes the sum of the products for each column. They are not doubled until later. + +After the squaring loop, the products stored in $\hat W$ musted be doubled and the carries propagated forwards. It makes sense to do both +operations at the same time. The expression $\hat W_{ix} \leftarrow 2 \hat W_{ix} + \hat {X}_{ix}$ computes the sum of the double product and the +squares in place. + +EXAM,bn_fast_s_mp_sqr.c + +-- Write something deep and insightful later, Tom. + +\subsection{Polynomial Basis Squaring} +The same algorithm that performs optimal polynomial basis multiplication can be used to perform polynomial basis squaring. The minor exception +is that $\zeta_y = f(y)g(y)$ is actually equivalent to $\zeta_y = f(y)^2$ since $f(y) = g(y)$. Instead of performing $2n + 1$ +multiplications to find the $\zeta$ relations, squaring operations are performed instead. + +\subsection{Karatsuba Squaring} +Let $f(x) = ax + b$ represent the polynomial basis representation of a number to square. +Let $h(x) = \left ( f(x) \right )^2$ represent the square of the polynomial. The Karatsuba equation can be modified to square a +number with the following equation. + +\begin{equation} +h(x) = a^2x^2 + \left (a^2 + b^2 - (a - b)^2 \right )x + b^2 +\end{equation} + +Upon closer inspection this equation only requires the calculation of three half-sized squares: $a^2$, $b^2$ and $(a - b)^2$. As in +Karatsuba multiplication, this algorithm can be applied recursively on the input and will achieve an asymptotic running time of +$O \left ( n^{lg(3)} \right )$. + +If the asymptotic times of Karatsuba squaring and multiplication are the same, why not simply use the multiplication algorithm +instead? The answer to this arises from the cutoff point for squaring. As in multiplication there exists a cutoff point, at which the +time required for a Comba based squaring and a Karatsuba based squaring meet. Due to the overhead inherent in the Karatsuba method, the cutoff +point is fairly high. For example, on an AMD Athlon XP processor with $\beta = 2^{28}$, the cutoff point is around 127 digits. + +Consider squaring a 200 digit number with this technique. It will be split into two 100 digit halves which are subsequently squared. +The 100 digit halves will not be squared using Karatsuba, but instead using the faster Comba based squaring algorithm. If Karatsuba multiplication +were used instead, the 100 digit numbers would be squared with a slower Comba based multiplication. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_karatsuba\_sqr}. \\ +\textbf{Input}. mp\_int $a$ \\ +\textbf{Output}. $b \leftarrow a^2$ \\ +\hline \\ +1. Initialize the following temporary mp\_ints: $x0$, $x1$, $t1$, $t2$, $x0x0$ and $x1x1$. \\ +2. If any of the initializations on step 1 failed return(\textit{MP\_MEM}). \\ +\\ +Split the input. e.g. $a = x1\beta^B + x0$ \\ +3. $B \leftarrow \lfloor a.used / 2 \rfloor$ \\ +4. $x0 \leftarrow a \mbox{ (mod }\beta^B\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +5. $x1 \leftarrow \lfloor a / \beta^B \rfloor$ (\textit{mp\_lshd}) \\ +\\ +Calculate the three squares. \\ +6. $x0x0 \leftarrow x0^2$ (\textit{mp\_sqr}) \\ +7. $x1x1 \leftarrow x1^2$ \\ +8. $t1 \leftarrow x1 - x0$ (\textit{mp\_sub}) \\ +9. $t1 \leftarrow t1^2$ \\ +\\ +Compute the middle term. \\ +10. $t2 \leftarrow x0x0 + x1x1$ (\textit{s\_mp\_add}) \\ +11. $t1 \leftarrow t2 - t1$ \\ +\\ +Compute final product. \\ +12. $t1 \leftarrow t1\beta^B$ (\textit{mp\_lshd}) \\ +13. $x1x1 \leftarrow x1x1\beta^{2B}$ \\ +14. $t1 \leftarrow t1 + x0x0$ \\ +15. $b \leftarrow t1 + x1x1$ \\ +16. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_karatsuba\_sqr} +\end{figure} + +\textbf{Algorithm mp\_karatsuba\_sqr.} +This algorithm computes the square of an input $a$ using the Karatsuba technique. This algorithm is very similar to the Karatsuba based +multiplication algorithm with the exception that the three half-size multiplications have been replaced with three half-size squarings. + +The radix point for squaring is simply placed exactly in the middle of the digits when the input has an odd number of digits, otherwise it is +placed just below the middle. Step 3, 4 and 5 compute the two halves required using $B$ +as the radix point. The first two squares in steps 6 and 7 are rather straightforward while the last square is of a more compact form. + +By expanding $\left (x1 - x0 \right )^2$, the $x1^2$ and $x0^2$ terms in the middle disappear, that is $x1^2 + x0^2 - (x1 - x0)^2 = 2 \cdot x0 \cdot x1$. +Now if $5n$ single precision additions and a squaring of $n$-digits is faster than multiplying two $n$-digit numbers and doubling then +this method is faster. Assuming no further recursions occur, the difference can be estimated with the following inequality. + +Let $p$ represent the cost of a single precision addition and $q$ the cost of a single precision multiplication both in terms of time\footnote{Or +machine clock cycles.}. + +\begin{equation} +5pn +{{q(n^2 + n)} \over 2} \le pn + qn^2 +\end{equation} + +For example, on an AMD Athlon XP processor $p = {1 \over 3}$ and $q = 6$. This implies that the following inequality should hold. +\begin{center} +\begin{tabular}{rcl} +${5n \over 3} + 3n^2 + 3n$ & $<$ & ${n \over 3} + 6n^2$ \\ +${5 \over 3} + 3n + 3$ & $<$ & ${1 \over 3} + 6n$ \\ +${13 \over 9}$ & $<$ & $n$ \\ +\end{tabular} +\end{center} + +This results in a cutoff point around $n = 2$. As a consequence it is actually faster to compute the middle term the ``long way'' on processors +where multiplication is substantially slower\footnote{On the Athlon there is a 1:17 ratio between clock cycles for addition and multiplication. On +the Intel P4 processor this ratio is 1:29 making this method even more beneficial. The only common exception is the ARMv4 processor which has a +ratio of 1:7. } than simpler operations such as addition. + +EXAM,bn_mp_karatsuba_sqr.c + +This implementation is largely based on the implementation of algorithm mp\_karatsuba\_mul. It uses the same inline style to copy and +shift the input into the two halves. The loop from line @54,{@ to line @70,}@ has been modified since only one input exists. The \textbf{used} +count of both $x0$ and $x1$ is fixed up and $x0$ is clamped before the calculations begin. At this point $x1$ and $x0$ are valid equivalents +to the respective halves as if mp\_rshd and mp\_mod\_2d had been used. + +By inlining the copy and shift operations the cutoff point for Karatsuba multiplication can be lowered. On the Athlon the cutoff point +is exactly at the point where Comba squaring can no longer be used (\textit{128 digits}). On slower processors such as the Intel P4 +it is actually below the Comba limit (\textit{at 110 digits}). + +This routine uses the same error trap coding style as mp\_karatsuba\_sqr. As the temporary variables are initialized errors are redirected to +the error trap higher up. If the algorithm completes without error the error code is set to \textbf{MP\_OKAY} and mp\_clears are executed normally. + +\textit{Last paragraph sucks. re-write! -- Tom} + +\subsection{Toom-Cook Squaring} +The Toom-Cook squaring algorithm mp\_toom\_sqr is heavily based on the algorithm mp\_toom\_mul with the exception that squarings are used +instead of multiplication to find the five relations.. The reader is encouraged to read the description of the latter algorithm and try to +derive their own Toom-Cook squaring algorithm. + +\subsection{High Level Squaring} +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_sqr}. \\ +\textbf{Input}. mp\_int $a$ \\ +\textbf{Output}. $b \leftarrow a^2$ \\ +\hline \\ +1. If $a.used \ge TOOM\_SQR\_CUTOFF$ then \\ +\hspace{3mm}1.1 $b \leftarrow a^2$ using algorithm mp\_toom\_sqr \\ +2. else if $a.used \ge KARATSUBA\_SQR\_CUTOFF$ then \\ +\hspace{3mm}2.1 $b \leftarrow a^2$ using algorithm mp\_karatsuba\_sqr \\ +3. else \\ +\hspace{3mm}3.1 $digs \leftarrow a.used + b.used + 1$ \\ +\hspace{3mm}3.2 If $digs < MP\_ARRAY$ and $a.used \le \delta$ then \\ +\hspace{6mm}3.2.1 $b \leftarrow a^2$ using algorithm fast\_s\_mp\_sqr. \\ +\hspace{3mm}3.3 else \\ +\hspace{6mm}3.3.1 $b \leftarrow a^2$ using algorithm s\_mp\_sqr. \\ +4. $b.sign \leftarrow MP\_ZPOS$ \\ +5. Return the result of the unsigned squaring performed. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_sqr} +\end{figure} + +\textbf{Algorithm mp\_sqr.} +This algorithm computes the square of the input using one of four different algorithms. If the input is very large and has at least +\textbf{TOOM\_SQR\_CUTOFF} or \textbf{KARATSUBA\_SQR\_CUTOFF} digits then either the Toom-Cook or the Karatsuba Squaring algorithm is used. If +neither of the polynomial basis algorithms should be used then either the Comba or baseline algorithm is used. + +EXAM,bn_mp_sqr.c + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 3 \right ] $ & Devise an efficient algorithm for selection of the radix point to handle inputs \\ + & that have different number of digits in Karatsuba multiplication. \\ + & \\ +$\left [ 3 \right ] $ & In ~SQUARE~ the fact that every column of a squaring is made up \\ + & of double products and at most one square is stated. Prove this statement. \\ + & \\ +$\left [ 2 \right ] $ & In the Comba squaring algorithm half of the $\hat X$ variables are not used. \\ + & Revise algorithm fast\_s\_mp\_sqr to shrink the $\hat X$ array. \\ + & \\ +$\left [ 3 \right ] $ & Prove the equation for Karatsuba squaring. \\ + & \\ +$\left [ 1 \right ] $ & Prove that Karatsuba squaring requires $O \left (n^{lg(3)} \right )$ time. \\ + & \\ +$\left [ 2 \right ] $ & Determine the minimal ratio between addition and multiplication clock cycles \\ + & required for equation $6.7$ to be true. \\ + & \\ +\end{tabular} + +\chapter{Modular Reduction} +MARK,REDUCTION +\section{Basics of Modular Reduction} +\index{modular residue} +Modular reduction is an operation that arises quite often within public key cryptography algorithms and various number theoretic algorithms, +such as factoring. Modular reduction algorithms are the third class of algorithms of the ``multipliers'' set. A number $a$ is said to be \textit{reduced} +modulo another number $b$ by finding the remainder of the division $a/b$. Full integer division with remainder is a topic to be covered +in~\ref{sec:division}. + +Modular reduction is equivalent to solving for $r$ in the following equation. $a = bq + r$ where $q = \lfloor a/b \rfloor$. The result +$r$ is said to be ``congruent to $a$ modulo $b$'' which is also written as $r \equiv a \mbox{ (mod }b\mbox{)}$. In other vernacular $r$ is known as the +``modular residue'' which leads to ``quadratic residue''\footnote{That's fancy talk for $b \equiv a^2 \mbox{ (mod }p\mbox{)}$.} and +other forms of residues. + +Modular reductions are normally used to create either finite groups, rings or fields. The most common usage for performance driven modular reductions +is in modular exponentiation algorithms. That is to compute $d = a^b \mbox{ (mod }c\mbox{)}$ as fast as possible. This operation is used in the +RSA and Diffie-Hellman public key algorithms, for example. Modular multiplication and squaring also appears as a fundamental operation in +Elliptic Curve cryptographic algorithms. As will be discussed in the subsequent chapter there exist fast algorithms for computing modular +exponentiations without having to perform (\textit{in this example}) $b - 1$ multiplications. These algorithms will produce partial results in the +range $0 \le x < c^2$ which can be taken advantage of to create several efficient algorithms. They have also been used to create redundancy check +algorithms known as CRCs, error correction codes such as Reed-Solomon and solve a variety of number theoeretic problems. + +\section{The Barrett Reduction} +The Barrett reduction algorithm \cite{BARRETT} was inspired by fast division algorithms which multiply by the reciprocal to emulate +division. Barretts observation was that the residue $c$ of $a$ modulo $b$ is equal to + +\begin{equation} +c = a - b \cdot \lfloor a/b \rfloor +\end{equation} + +Since algorithms such as modular exponentiation would be using the same modulus extensively, typical DSP\footnote{It is worth noting that Barrett's paper +targeted the DSP56K processor.} intuition would indicate the next step would be to replace $a/b$ by a multiplication by the reciprocal. However, +DSP intuition on its own will not work as these numbers are considerably larger than the precision of common DSP floating point data types. +It would take another common optimization to optimize the algorithm. + +\subsection{Fixed Point Arithmetic} +The trick used to optimize the above equation is based on a technique of emulating floating point data types with fixed precision integers. Fixed +point arithmetic would become very popular as it greatly optimize the ``3d-shooter'' genre of games in the mid 1990s when floating point units were +fairly slow if not unavailable. The idea behind fixed point arithmetic is to take a normal $k$-bit integer data type and break it into $p$-bit +integer and a $q$-bit fraction part (\textit{where $p+q = k$}). + +In this system a $k$-bit integer $n$ would actually represent $n/2^q$. For example, with $q = 4$ the integer $n = 37$ would actually represent the +value $2.3125$. To multiply two fixed point numbers the integers are multiplied using traditional arithmetic and subsequently normalized by +moving the implied decimal point back to where it should be. For example, with $q = 4$ to multiply the integers $9$ and $5$ they must be converted +to fixed point first by multiplying by $2^q$. Let $a = 9(2^q)$ represent the fixed point representation of $9$ and $b = 5(2^q)$ represent the +fixed point representation of $5$. The product $ab$ is equal to $45(2^{2q})$ which when normalized by dividing by $2^q$ produces $45(2^q)$. + +This technique became popular since a normal integer multiplication and logical shift right are the only required operations to perform a multiplication +of two fixed point numbers. Using fixed point arithmetic, division can be easily approximated by multiplying by the reciprocal. If $2^q$ is +equivalent to one than $2^q/b$ is equivalent to the fixed point approximation of $1/b$ using real arithmetic. Using this fact dividing an integer +$a$ by another integer $b$ can be achieved with the following expression. + +\begin{equation} +\lfloor a / b \rfloor \mbox{ }\approx\mbox{ } \lfloor (a \cdot \lfloor 2^q / b \rfloor)/2^q \rfloor +\end{equation} + +The precision of the division is proportional to the value of $q$. If the divisor $b$ is used frequently as is the case with +modular exponentiation pre-computing $2^q/b$ will allow a division to be performed with a multiplication and a right shift. Both operations +are considerably faster than division on most processors. + +Consider dividing $19$ by $5$. The correct result is $\lfloor 19/5 \rfloor = 3$. With $q = 3$ the reciprocal is $\lfloor 2^q/5 \rfloor = 1$ which +leads to a product of $19$ which when divided by $2^q$ produces $2$. However, with $q = 4$ the reciprocal is $\lfloor 2^q/5 \rfloor = 3$ and +the result of the emulated division is $\lfloor 3 \cdot 19 / 2^q \rfloor = 3$ which is correct. The value of $2^q$ must be close to or ideally +larger than the dividend. In effect if $a$ is the dividend then $q$ should allow $0 \le \lfloor a/2^q \rfloor \le 1$ in order for this approach +to work correctly. Plugging this form of divison into the original equation the following modular residue equation arises. + +\begin{equation} +c = a - b \cdot \lfloor (a \cdot \lfloor 2^q / b \rfloor)/2^q \rfloor +\end{equation} + +Using the notation from \cite{BARRETT} the value of $\lfloor 2^q / b \rfloor$ will be represented by the $\mu$ symbol. Using the $\mu$ +variable also helps re-inforce the idea that it is meant to be computed once and re-used. + +\begin{equation} +c = a - b \cdot \lfloor (a \cdot \mu)/2^q \rfloor +\end{equation} + +Provided that $2^q \ge a$ this algorithm will produce a quotient that is either exactly correct or off by a value of one. In the context of Barrett +reduction the value of $a$ is bound by $0 \le a \le (b - 1)^2$ meaning that $2^q \ge b^2$ is sufficient to ensure the reciprocal will have enough +precision. + +Let $n$ represent the number of digits in $b$. This algorithm requires approximately $2n^2$ single precision multiplications to produce the quotient and +another $n^2$ single precision multiplications to find the residue. In total $3n^2$ single precision multiplications are required to +reduce the number. + +For example, if $b = 1179677$ and $q = 41$ ($2^q > b^2$), then the reciprocal $\mu$ is equal to $\lfloor 2^q / b \rfloor = 1864089$. Consider reducing +$a = 180388626447$ modulo $b$ using the above reduction equation. The quotient using the new formula is $\lfloor (a \cdot \mu) / 2^q \rfloor = 152913$. +By subtracting $152913b$ from $a$ the correct residue $a \equiv 677346 \mbox{ (mod }b\mbox{)}$ is found. + +\subsection{Choosing a Radix Point} +Using the fixed point representation a modular reduction can be performed with $3n^2$ single precision multiplications. If that were the best +that could be achieved a full division\footnote{A division requires approximately $O(2cn^2)$ single precision multiplications for a small value of $c$. +See~\ref{sec:division} for further details.} might as well be used in its place. The key to optimizing the reduction is to reduce the precision of +the initial multiplication that finds the quotient. + +Let $a$ represent the number of which the residue is sought. Let $b$ represent the modulus used to find the residue. Let $m$ represent +the number of digits in $b$. For the purposes of this discussion we will assume that the number of digits in $a$ is $2m$, which is generally true if +two $m$-digit numbers have been multiplied. Dividing $a$ by $b$ is the same as dividing a $2m$ digit integer by a $m$ digit integer. Digits below the +$m - 1$'th digit of $a$ will contribute at most a value of $1$ to the quotient because $\beta^k < b$ for any $0 \le k \le m - 1$. Another way to +express this is by re-writing $a$ as two parts. If $a' \equiv a \mbox{ (mod }b^m\mbox{)}$ and $a'' = a - a'$ then +${a \over b} \equiv {{a' + a''} \over b}$ which is equivalent to ${a' \over b} + {a'' \over b}$. Since $a'$ is bound to be less than $b$ the quotient +is bound by $0 \le {a' \over b} < 1$. + +Since the digits of $a'$ do not contribute much to the quotient the observation is that they might as well be zero. However, if the digits +``might as well be zero'' they might as well not be there in the first place. Let $q_0 = \lfloor a/\beta^{m-1} \rfloor$ represent the input +with the irrelevant digits trimmed. Now the modular reduction is trimmed to the almost equivalent equation + +\begin{equation} +c = a - b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor +\end{equation} + +Note that the original divisor $2^q$ has been replaced with $\beta^{m+1}$ where in this case $q$ is a multiple of $lg(\beta)$. Also note that the +exponent on the divisor when added to the amount $q_0$ was shifted by equals $2m$. If the optimization had not been performed the divisor +would have the exponent $2m$ so in the end the exponents do ``add up''. Using the above equation the quotient +$\lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor$ can be off from the true quotient by at most two. The original fixed point quotient can be off +by as much as one (\textit{provided the radix point is chosen suitably}) and now that the lower irrelevent digits have been trimmed the quotient +can be off by an additional value of one for a total of at most two. This implies that +$0 \le a - b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor < 3b$. By first subtracting $b$ times the quotient and then conditionally subtracting +$b$ once or twice the residue is found. + +The quotient is now found using $(m + 1)(m) = m^2 + m$ single precision multiplications and the residue with an additional $m^2$ single +precision multiplications, ignoring the subtractions required. In total $2m^2 + m$ single precision multiplications are required to find the residue. +This is considerably faster than the original attempt. + +For example, let $\beta = 10$ represent the radix of the digits. Let $b = 9999$ represent the modulus which implies $m = 4$. Let $a = 99929878$ +represent the value of which the residue is desired. In this case $q = 8$ since $10^7 < 9999^2$ meaning that $\mu = \lfloor \beta^{q}/b \rfloor = 10001$. +With the new observation the multiplicand for the quotient is equal to $q_0 = \lfloor a / \beta^{m - 1} \rfloor = 99929$. The quotient is then +$\lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor = 9993$. Subtracting $9993b$ from $a$ and the correct residue $a \equiv 9871 \mbox{ (mod }b\mbox{)}$ +is found. + +\subsection{Trimming the Quotient} +So far the reduction algorithm has been optimized from $3m^2$ single precision multiplications down to $2m^2 + m$ single precision multiplications. As +it stands now the algorithm is already fairly fast compared to a full integer division algorithm. However, there is still room for +optimization. + +After the first multiplication inside the quotient ($q_0 \cdot \mu$) the value is shifted right by $m + 1$ places effectively nullifying the lower +half of the product. It would be nice to be able to remove those digits from the product to effectively cut down the number of single precision +multiplications. If the number of digits in the modulus $m$ is far less than $\beta$ a full product is not required for the algorithm to work properly. +In fact the lower $m - 2$ digits will not affect the upper half of the product at all and do not need to be computed. + +The value of $\mu$ is a $m$-digit number and $q_0$ is a $m + 1$ digit number. Using a full multiplier $(m + 1)(m) = m^2 + m$ single precision +multiplications would be required. Using a multiplier that will only produce digits at and above the $m - 1$'th digit reduces the number +of single precision multiplications to ${m^2 + m} \over 2$ single precision multiplications. + +\subsection{Trimming the Residue} +After the quotient has been calculated it is used to reduce the input. As previously noted the algorithm is not exact and it can be off by a small +multiple of the modulus, that is $0 \le a - b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor < 3b$. If $b$ is $m$ digits than the +result of reduction equation is a value of at most $m + 1$ digits (\textit{provided $3 < \beta$}) implying that the upper $m - 1$ digits are +implicitly zero. + +The next optimization arises from this very fact. Instead of computing $b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor$ using a full +$O(m^2)$ multiplication algorithm only the lower $m+1$ digits of the product have to be computed. Similarly the value of $a$ can +be reduced modulo $\beta^{m+1}$ before the multiple of $b$ is subtracted which simplifes the subtraction as well. A multiplication that produces +only the lower $m+1$ digits requires ${m^2 + 3m - 2} \over 2$ single precision multiplications. + +With both optimizations in place the algorithm is the algorithm Barrett proposed. It requires $m^2 + 2m - 1$ single precision multiplications which +is considerably faster than the straightforward $3m^2$ method. + +\subsection{The Barrett Algorithm} +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce}. \\ +\textbf{Input}. mp\_int $a$, mp\_int $b$ and $\mu = \lfloor \beta^{2m}/b \rfloor, m = \lceil lg_{\beta}(b) \rceil, (0 \le a < b^2, b > 1)$ \\ +\textbf{Output}. $a \mbox{ (mod }b\mbox{)}$ \\ +\hline \\ +Let $m$ represent the number of digits in $b$. \\ +1. Make a copy of $a$ and store it in $q$. (\textit{mp\_init\_copy}) \\ +2. $q \leftarrow \lfloor q / \beta^{m - 1} \rfloor$ (\textit{mp\_rshd}) \\ +\\ +Produce the quotient. \\ +3. $q \leftarrow q \cdot \mu$ (\textit{note: only produce digits at or above $m-1$}) \\ +4. $q \leftarrow \lfloor q / \beta^{m + 1} \rfloor$ \\ +\\ +Subtract the multiple of modulus from the input. \\ +5. $a \leftarrow a \mbox{ (mod }\beta^{m+1}\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +6. $q \leftarrow q \cdot b \mbox{ (mod }\beta^{m+1}\mbox{)}$ (\textit{s\_mp\_mul\_digs}) \\ +7. $a \leftarrow a - q$ (\textit{mp\_sub}) \\ +\\ +Add $\beta^{m+1}$ if a carry occured. \\ +8. If $a < 0$ then (\textit{mp\_cmp\_d}) \\ +\hspace{3mm}8.1 $q \leftarrow 1$ (\textit{mp\_set}) \\ +\hspace{3mm}8.2 $q \leftarrow q \cdot \beta^{m+1}$ (\textit{mp\_lshd}) \\ +\hspace{3mm}8.3 $a \leftarrow a + q$ \\ +\\ +Now subtract the modulus if the residue is too large (e.g. quotient too small). \\ +9. While $a \ge b$ do (\textit{mp\_cmp}) \\ +\hspace{3mm}9.1 $c \leftarrow a - b$ \\ +10. Clear $q$. \\ +11. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce} +\end{figure} + +\textbf{Algorithm mp\_reduce.} +This algorithm will reduce the input $a$ modulo $b$ in place using the Barrett algorithm. It is loosely based on algorithm 14.42 of HAC +\cite[pp. 602]{HAC} which is based on the paper from Paul Barrett \cite{BARRETT}. The algorithm has several restrictions and assumptions which must +be adhered to for the algorithm to work. + +First the modulus $b$ is assumed to be positive and greater than one. If the modulus were less than or equal to one than subtracting +a multiple of it would either accomplish nothing or actually enlarge the input. The input $a$ must be in the range $0 \le a < b^2$ in order +for the quotient to have enough precision. If $a$ is the product of two numbers that were already reduced modulo $b$, this will not be a problem. +Technically the algorithm will still work if $a \ge b^2$ but it will take much longer to finish. The value of $\mu$ is passed as an argument to this +algorithm and is assumed to be calculated and stored before the algorithm is used. + +Recall that the multiplication for the quotient on step 3 must only produce digits at or above the $m-1$'th position. An algorithm called +$s\_mp\_mul\_high\_digs$ which has not been presented is used to accomplish this task. The algorithm is based on $s\_mp\_mul\_digs$ except that +instead of stopping at a given level of precision it starts at a given level of precision. This optimal algorithm can only be used if the number +of digits in $b$ is very much smaller than $\beta$. + +While it is known that +$a \ge b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor$ only the lower $m+1$ digits are being used to compute the residue, so an implied +``borrow'' from the higher digits might leave a negative result. After the multiple of the modulus has been subtracted from $a$ the residue must be +fixed up in case it is negative. The invariant $\beta^{m+1}$ must be added to the residue to make it positive again. + +The while loop at step 9 will subtract $b$ until the residue is less than $b$. If the algorithm is performed correctly this step is +performed at most twice, and on average once. However, if $a \ge b^2$ than it will iterate substantially more times than it should. + +EXAM,bn_mp_reduce.c + +The first multiplication that determines the quotient can be performed by only producing the digits from $m - 1$ and up. This essentially halves +the number of single precision multiplications required. However, the optimization is only safe if $\beta$ is much larger than the number of digits +in the modulus. In the source code this is evaluated on lines @36,if@ to @44,}@ where algorithm s\_mp\_mul\_high\_digs is used when it is +safe to do so. + +\subsection{The Barrett Setup Algorithm} +In order to use algorithm mp\_reduce the value of $\mu$ must be calculated in advance. Ideally this value should be computed once and stored for +future use so that the Barrett algorithm can be used without delay. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce\_setup}. \\ +\textbf{Input}. mp\_int $a$ ($a > 1$) \\ +\textbf{Output}. $\mu \leftarrow \lfloor \beta^{2m}/a \rfloor$ \\ +\hline \\ +1. $\mu \leftarrow 2^{2 \cdot lg(\beta) \cdot m}$ (\textit{mp\_2expt}) \\ +2. $\mu \leftarrow \lfloor \mu / b \rfloor$ (\textit{mp\_div}) \\ +3. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce\_setup} +\end{figure} + +\textbf{Algorithm mp\_reduce\_setup.} +This algorithm computes the reciprocal $\mu$ required for Barrett reduction. First $\beta^{2m}$ is calculated as $2^{2 \cdot lg(\beta) \cdot m}$ which +is equivalent and much faster. The final value is computed by taking the integer quotient of $\lfloor \mu / b \rfloor$. + +EXAM,bn_mp_reduce_setup.c + +This simple routine calculates the reciprocal $\mu$ required by Barrett reduction. Note the extended usage of algorithm mp\_div where the variable +which would received the remainder is passed as NULL. As will be discussed in~\ref{sec:division} the division routine allows both the quotient and the +remainder to be passed as NULL meaning to ignore the value. + +\section{The Montgomery Reduction} +Montgomery reduction\footnote{Thanks to Niels Ferguson for his insightful explanation of the algorithm.} \cite{MONT} is by far the most interesting +form of reduction in common use. It computes a modular residue which is not actually equal to the residue of the input yet instead equal to a +residue times a constant. However, as perplexing as this may sound the algorithm is relatively simple and very efficient. + +Throughout this entire section the variable $n$ will represent the modulus used to form the residue. As will be discussed shortly the value of +$n$ must be odd. The variable $x$ will represent the quantity of which the residue is sought. Similar to the Barrett algorithm the input +is restricted to $0 \le x < n^2$. To begin the description some simple number theory facts must be established. + +\textbf{Fact 1.} Adding $n$ to $x$ does not change the residue since in effect it adds one to the quotient $\lfloor x / n \rfloor$. Another way +to explain this is that $n$ is (\textit{or multiples of $n$ are}) congruent to zero modulo $n$. Adding zero will not change the value of the residue. + +\textbf{Fact 2.} If $x$ is even then performing a division by two in $\Z$ is congruent to $x \cdot 2^{-1} \mbox{ (mod }n\mbox{)}$. Actually +this is an application of the fact that if $x$ is evenly divisible by any $k \in \Z$ then division in $\Z$ will be congruent to +multiplication by $k^{-1}$ modulo $n$. + +From these two simple facts the following simple algorithm can be derived. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Montgomery Reduction}. \\ +\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Output}. $2^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +1. for $t$ from $1$ to $k$ do \\ +\hspace{3mm}1.1 If $x$ is odd then \\ +\hspace{6mm}1.1.1 $x \leftarrow x + n$ \\ +\hspace{3mm}1.2 $x \leftarrow x/2$ \\ +2. Return $x$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Montgomery Reduction} +\end{figure} + +The algorithm reduces the input one bit at a time using the two congruencies stated previously. Inside the loop $n$, which is odd, is +added to $x$ if $x$ is odd. This forces $x$ to be even which allows the division by two in $\Z$ to be congruent to a modular division by two. Since +$x$ is assumed to be initially much larger than $n$ the addition of $n$ will contribute an insignificant magnitude to $x$. Let $r$ represent the +final result of the Montgomery algorithm. If $k > lg(n)$ and $0 \le x < n^2$ then the final result is limited to +$0 \le r < \lfloor x/2^k \rfloor + n$. As a result at most a single subtraction is required to get the residue desired. + +\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{|c|l|} +\hline \textbf{Step number ($t$)} & \textbf{Result ($x$)} \\ +\hline $1$ & $x + n = 5812$, $x/2 = 2906$ \\ +\hline $2$ & $x/2 = 1453$ \\ +\hline $3$ & $x + n = 1710$, $x/2 = 855$ \\ +\hline $4$ & $x + n = 1112$, $x/2 = 556$ \\ +\hline $5$ & $x/2 = 278$ \\ +\hline $6$ & $x/2 = 139$ \\ +\hline $7$ & $x + n = 396$, $x/2 = 198$ \\ +\hline $8$ & $x/2 = 99$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Example of Montgomery Reduction (I)} +\label{fig:MONT1} +\end{figure} + +Consider the example in figure~\ref{fig:MONT1} which reduces $x = 5555$ modulo $n = 257$ when $k = 8$. The result of the algorithm $r = 99$ is +congruent to the value of $2^{-8} \cdot 5555 \mbox{ (mod }257\mbox{)}$. When $r$ is multiplied by $2^8$ modulo $257$ the correct residue +$r \equiv 158$ is produced. + +Let $k = \lfloor lg(n) \rfloor + 1$ represent the number of bits in $n$. The current algorithm requires $2k^2$ single precision shifts +and $k^2$ single precision additions. At this rate the algorithm is most certainly slower than Barrett reduction and not terribly useful. +Fortunately there exists an alternative representation of the algorithm. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Montgomery Reduction} (modified I). \\ +\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Output}. $2^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +1. for $t$ from $0$ to $k - 1$ do \\ +\hspace{3mm}1.1 If the $t$'th bit of $x$ is one then \\ +\hspace{6mm}1.1.1 $x \leftarrow x + 2^tn$ \\ +2. Return $x/2^k$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Montgomery Reduction (modified I)} +\end{figure} + +This algorithm is equivalent since $2^tn$ is a multiple of $n$ and the lower $k$ bits of $x$ are zero by step 2. The number of single +precision shifts has now been reduced from $2k^2$ to $k^2 + k$ which is only a small improvement. + +\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{|c|l|r|} +\hline \textbf{Step number ($t$)} & \textbf{Result ($x$)} & \textbf{Result ($x$) in Binary} \\ +\hline -- & $5555$ & $1010110110011$ \\ +\hline $1$ & $x + 2^{0}n = 5812$ & $1011010110100$ \\ +\hline $2$ & $5812$ & $1011010110100$ \\ +\hline $3$ & $x + 2^{2}n = 6840$ & $1101010111000$ \\ +\hline $4$ & $x + 2^{3}n = 8896$ & $10001011000000$ \\ +\hline $5$ & $8896$ & $10001011000000$ \\ +\hline $6$ & $8896$ & $10001011000000$ \\ +\hline $7$ & $x + 2^{6}n = 25344$ & $110001100000000$ \\ +\hline $8$ & $25344$ & $110001100000000$ \\ +\hline -- & $x/2^k = 99$ & \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Example of Montgomery Reduction (II)} +\label{fig:MONT2} +\end{figure} + +Figure~\ref{fig:MONT2} demonstrates the modified algorithm reducing $x = 5555$ modulo $n = 257$ with $k = 8$. +With this algorithm a single shift right at the end is the only right shift required to reduce the input instead of $k$ right shifts inside the +loop. Note that for the iterations $t = 2, 5, 6$ and $8$ where the result $x$ is not changed. In those iterations the $t$'th bit of $x$ is +zero and the appropriate multiple of $n$ does not need to be added to force the $t$'th bit of the result to zero. + +\subsection{Digit Based Montgomery Reduction} +Instead of computing the reduction on a bit-by-bit basis it is actually much faster to compute it on digit-by-digit basis. Consider the +previous algorithm re-written to compute the Montgomery reduction in this new fashion. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Montgomery Reduction} (modified II). \\ +\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Output}. $\beta^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +1. for $t$ from $0$ to $k - 1$ do \\ +\hspace{3mm}1.1 $x \leftarrow x + \mu n \beta^t$ \\ +2. Return $x/\beta^k$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Montgomery Reduction (modified II)} +\end{figure} + +The value $\mu n \beta^t$ is a multiple of the modulus $n$ meaning that it will not change the residue. If the first digit of +the value $\mu n \beta^t$ equals the negative (modulo $\beta$) of the $t$'th digit of $x$ then the addition will result in a zero digit. This +problem breaks down to solving the following congruency. + +\begin{center} +\begin{tabular}{rcl} +$x_t + \mu n_0$ & $\equiv$ & $0 \mbox{ (mod }\beta\mbox{)}$ \\ +$\mu n_0$ & $\equiv$ & $-x_t \mbox{ (mod }\beta\mbox{)}$ \\ +$\mu$ & $\equiv$ & $-x_t/n_0 \mbox{ (mod }\beta\mbox{)}$ \\ +\end{tabular} +\end{center} + +In each iteration of the loop on step 1 a new value of $\mu$ must be calculated. The value of $-1/n_0 \mbox{ (mod }\beta\mbox{)}$ is used +extensively in this algorithm and should be precomputed. Let $\rho$ represent the negative of the modular inverse of $n_0$ modulo $\beta$. + +For example, let $\beta = 10$ represent the radix. Let $n = 17$ represent the modulus which implies $k = 2$ and $\rho \equiv 7$. Let $x = 33$ +represent the value to reduce. + +\newpage\begin{figure} +\begin{center} +\begin{tabular}{|c|c|c|} +\hline \textbf{Step ($t$)} & \textbf{Value of $x$} & \textbf{Value of $\mu$} \\ +\hline -- & $33$ & --\\ +\hline $0$ & $33 + \mu n = 50$ & $1$ \\ +\hline $1$ & $50 + \mu n \beta = 900$ & $5$ \\ +\hline +\end{tabular} +\end{center} +\caption{Example of Montgomery Reduction} +\end{figure} + +The final result $900$ is then divided by $\beta^k$ to produce the final result $9$. The first observation is that $9 \nequiv x \mbox{ (mod }n\mbox{)}$ +which implies the result is not the modular residue of $x$ modulo $n$. However, recall that the residue is actually multiplied by $\beta^{-k}$ in +the algorithm. To get the true residue the value must be multiplied by $\beta^k$. In this case $\beta^k \equiv 15 \mbox{ (mod }n\mbox{)}$ and +the correct residue is $9 \cdot 15 \equiv 16 \mbox{ (mod }n\mbox{)}$. + +\subsection{Baseline Montgomery Reduction} +The baseline Montgomery reduction algorithm will produce the residue for any size input. It is designed to be a catch-all algororithm for +Montgomery reductions. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_montgomery\_reduce}. \\ +\textbf{Input}. mp\_int $x$, mp\_int $n$ and a digit $\rho \equiv -1/n_0 \mbox{ (mod }n\mbox{)}$. \\ +\hspace{11.5mm}($0 \le x < n^2, n > 1, (n, \beta) = 1, \beta^k > n$) \\ +\textbf{Output}. $\beta^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +1. $digs \leftarrow 2n.used + 1$ \\ +2. If $digs < MP\_ARRAY$ and $m.used < \delta$ then \\ +\hspace{3mm}2.1 Use algorithm fast\_mp\_montgomery\_reduce instead. \\ +\\ +Setup $x$ for the reduction. \\ +3. If $x.alloc < digs$ then grow $x$ to $digs$ digits. \\ +4. $x.used \leftarrow digs$ \\ +\\ +Eliminate the lower $k$ digits. \\ +5. For $ix$ from $0$ to $k - 1$ do \\ +\hspace{3mm}5.1 $\mu \leftarrow x_{ix} \cdot \rho \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}5.2 $u \leftarrow 0$ \\ +\hspace{3mm}5.3 For $iy$ from $0$ to $k - 1$ do \\ +\hspace{6mm}5.3.1 $\hat r \leftarrow \mu n_{iy} + x_{ix + iy} + u$ \\ +\hspace{6mm}5.3.2 $x_{ix + iy} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}5.3.3 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +\hspace{3mm}5.4 While $u > 0$ do \\ +\hspace{6mm}5.4.1 $iy \leftarrow iy + 1$ \\ +\hspace{6mm}5.4.2 $x_{ix + iy} \leftarrow x_{ix + iy} + u$ \\ +\hspace{6mm}5.4.3 $u \leftarrow \lfloor x_{ix+iy} / \beta \rfloor$ \\ +\hspace{6mm}5.4.4 $x_{ix + iy} \leftarrow x_{ix+iy} \mbox{ (mod }\beta\mbox{)}$ \\ +\\ +Divide by $\beta^k$ and fix up as required. \\ +6. $x \leftarrow \lfloor x / \beta^k \rfloor$ \\ +7. If $x \ge n$ then \\ +\hspace{3mm}7.1 $x \leftarrow x - n$ \\ +8. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_montgomery\_reduce} +\end{figure} + +\textbf{Algorithm mp\_montgomery\_reduce.} +This algorithm reduces the input $x$ modulo $n$ in place using the Montgomery reduction algorithm. The algorithm is loosely based +on algorithm 14.32 of \cite[pp.601]{HAC} except it merges the multiplication of $\mu n \beta^t$ with the addition in the inner loop. The +restrictions on this algorithm are fairly easy to adapt to. First $0 \le x < n^2$ bounds the input to numbers in the same range as +for the Barrett algorithm. Additionally if $n > 1$ and $n$ is odd there will exist a modular inverse $\rho$. $\rho$ must be calculated in +advance of this algorithm. Finally the variable $k$ is fixed and a pseudonym for $n.used$. + +Step 2 decides whether a faster Montgomery algorithm can be used. It is based on the Comba technique meaning that there are limits on +the size of the input. This algorithm is discussed in ~COMBARED~. + +Step 5 is the main reduction loop of the algorithm. The value of $\mu$ is calculated once per iteration in the outer loop. The inner loop +calculates $x + \mu n \beta^{ix}$ by multiplying $\mu n$ and adding the result to $x$ shifted by $ix$ digits. Both the addition and +multiplication are performed in the same loop to save time and memory. Step 5.4 will handle any additional carries that escape the inner loop. + +Using a quick inspection this algorithm requires $n$ single precision multiplications for the outer loop and $n^2$ single precision multiplications +in the inner loop. In total $n^2 + n$ single precision multiplications which compares favourably to Barrett at $n^2 + 2n - 1$ single precision +multiplications. + +EXAM,bn_mp_montgomery_reduce.c + +This is the baseline implementation of the Montgomery reduction algorithm. Lines @30,digs@ to @35,}@ determine if the Comba based +routine can be used instead. Line @47,mu@ computes the value of $\mu$ for that particular iteration of the outer loop. + +The multiplication $\mu n \beta^{ix}$ is performed in one step in the inner loop. The alias $tmpx$ refers to the $ix$'th digit of $x$ and +the alias $tmpn$ refers to the modulus $n$. + +\subsection{Faster ``Comba'' Montgomery Reduction} +MARK,COMBARED + +The Montgomery reduction requires fewer single precision multiplications than a Barrett reduction, however it is much slower due to the serial +nature of the inner loop. The Barrett reduction algorithm requires two slightly modified multipliers which can be implemented with the Comba +technique. The Montgomery reduction algorithm cannot directly use the Comba technique to any significant advantage since the inner loop calculates +a $k \times 1$ product $k$ times. + +The biggest obstacle is that at the $ix$'th iteration of the outer loop the value of $x_{ix}$ is required to calculate $\mu$. This means the +carries from $0$ to $ix - 1$ must have been propagated upwards to form a valid $ix$'th digit. The solution as it turns out is very simple. +Perform a Comba like multiplier and inside the outer loop just after the inner loop fix up the $ix + 1$'th digit by forwarding the carry. + +With this change in place the Montgomery reduction algorithm can be performed with a Comba style multiplication loop which substantially increases +the speed of the algorithm. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{fast\_mp\_montgomery\_reduce}. \\ +\textbf{Input}. mp\_int $x$, mp\_int $n$ and a digit $\rho \equiv -1/n_0 \mbox{ (mod }n\mbox{)}$. \\ +\hspace{11.5mm}($0 \le x < n^2, n > 1, (n, \beta) = 1, \beta^k > n$) \\ +\textbf{Output}. $\beta^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +Place an array of \textbf{MP\_WARRAY} mp\_word variables called $\hat W$ on the stack. \\ +1. if $x.alloc < n.used + 1$ then grow $x$ to $n.used + 1$ digits. \\ +Copy the digits of $x$ into the array $\hat W$ \\ +2. For $ix$ from $0$ to $x.used - 1$ do \\ +\hspace{3mm}2.1 $\hat W_{ix} \leftarrow x_{ix}$ \\ +3. For $ix$ from $x.used$ to $2n.used - 1$ do \\ +\hspace{3mm}3.1 $\hat W_{ix} \leftarrow 0$ \\ +Elimiate the lower $k$ digits. \\ +4. for $ix$ from $0$ to $n.used - 1$ do \\ +\hspace{3mm}4.1 $\mu \leftarrow \hat W_{ix} \cdot \rho \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}4.2 For $iy$ from $0$ to $n.used - 1$ do \\ +\hspace{6mm}4.2.1 $\hat W_{iy + ix} \leftarrow \hat W_{iy + ix} + \mu \cdot n_{iy}$ \\ +\hspace{3mm}4.3 $\hat W_{ix + 1} \leftarrow \hat W_{ix + 1} + \lfloor \hat W_{ix} / \beta \rfloor$ \\ +Propagate carries upwards. \\ +5. for $ix$ from $n.used$ to $2n.used + 1$ do \\ +\hspace{3mm}5.1 $\hat W_{ix + 1} \leftarrow \hat W_{ix + 1} + \lfloor \hat W_{ix} / \beta \rfloor$ \\ +Shift right and reduce modulo $\beta$ simultaneously. \\ +6. for $ix$ from $0$ to $n.used + 1$ do \\ +\hspace{3mm}6.1 $x_{ix} \leftarrow \hat W_{ix + n.used} \mbox{ (mod }\beta\mbox{)}$ \\ +Zero excess digits and fixup $x$. \\ +7. if $x.used > n.used + 1$ then do \\ +\hspace{3mm}7.1 for $ix$ from $n.used + 1$ to $x.used - 1$ do \\ +\hspace{6mm}7.1.1 $x_{ix} \leftarrow 0$ \\ +8. $x.used \leftarrow n.used + 1$ \\ +9. Clamp excessive digits of $x$. \\ +10. If $x \ge n$ then \\ +\hspace{3mm}10.1 $x \leftarrow x - n$ \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm fast\_mp\_montgomery\_reduce} +\end{figure} + +\textbf{Algorithm fast\_mp\_montgomery\_reduce.} +This algorithm will compute the Montgomery reduction of $x$ modulo $n$ using the Comba technique. It is on most computer platforms significantly +faster than algorithm mp\_montgomery\_reduce and algorithm mp\_reduce (\textit{Barrett reduction}). The algorithm has the same restrictions +on the input as the baseline reduction algorithm. An additional two restrictions are imposed on this algorithm. The number of digits $k$ in the +the modulus $n$ must not violate $MP\_WARRAY > 2k +1$ and $n < \delta$. When $\beta = 2^{28}$ this algorithm can be used to reduce modulo +a modulus of at most $3,556$ bits in length. + +As in the other Comba reduction algorithms there is a $\hat W$ array which stores the columns of the product. It is initially filled with the +contents of $x$ with the excess digits zeroed. The reduction loop is very similar the to the baseline loop at heart. The multiplication on step +4.1 can be single precision only since $ab \mbox{ (mod }\beta\mbox{)} \equiv (a \mbox{ mod }\beta)(b \mbox{ mod }\beta)$. Some multipliers such +as those on the ARM processors take a variable length time to complete depending on the number of bytes of result it must produce. By performing +a single precision multiplication instead half the amount of time is spent. + +Also note that digit $\hat W_{ix}$ must have the carry from the $ix - 1$'th digit propagated upwards in order for this to work. That is what step +4.3 will do. In effect over the $n.used$ iterations of the outer loop the $n.used$'th lower columns all have the their carries propagated forwards. Note +how the upper bits of those same words are not reduced modulo $\beta$. This is because those values will be discarded shortly and there is no +point. + +Step 5 will propagate the remainder of the carries upwards. On step 6 the columns are reduced modulo $\beta$ and shifted simultaneously as they are +stored in the destination $x$. + +EXAM,bn_fast_mp_montgomery_reduce.c + +The $\hat W$ array is first filled with digits of $x$ on line @49,for@ then the rest of the digits are zeroed on line @54,for@. Both loops share +the same alias variables to make the code easier to read. + +The value of $\mu$ is calculated in an interesting fashion. First the value $\hat W_{ix}$ is reduced modulo $\beta$ and cast to a mp\_digit. This +forces the compiler to use a single precision multiplication and prevents any concerns about loss of precision. Line @101,>>@ fixes the carry +for the next iteration of the loop by propagating the carry from $\hat W_{ix}$ to $\hat W_{ix+1}$. + +The for loop on line @113,for@ propagates the rest of the carries upwards through the columns. The for loop on line @126,for@ reduces the columns +modulo $\beta$ and shifts them $k$ places at the same time. The alias $\_ \hat W$ actually refers to the array $\hat W$ starting at the $n.used$'th +digit, that is $\_ \hat W_{t} = \hat W_{n.used + t}$. + +\subsection{Montgomery Setup} +To calculate the variable $\rho$ a relatively simple algorithm will be required. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_montgomery\_setup}. \\ +\textbf{Input}. mp\_int $n$ ($n > 1$ and $(n, 2) = 1$) \\ +\textbf{Output}. $\rho \equiv -1/n_0 \mbox{ (mod }\beta\mbox{)}$ \\ +\hline \\ +1. $b \leftarrow n_0$ \\ +2. If $b$ is even return(\textit{MP\_VAL}) \\ +3. $x \leftarrow ((b + 2) \mbox{ AND } 4) << 1) + b$ \\ +4. for $k$ from 0 to $\lceil lg(lg(\beta)) \rceil - 2$ do \\ +\hspace{3mm}4.1 $x \leftarrow x \cdot (2 - bx)$ \\ +5. $\rho \leftarrow \beta - x \mbox{ (mod }\beta\mbox{)}$ \\ +6. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_montgomery\_setup} +\end{figure} + +\textbf{Algorithm mp\_montgomery\_setup.} +This algorithm will calculate the value of $\rho$ required within the Montgomery reduction algorithms. It uses a very interesting trick +to calculate $1/n_0$ when $\beta$ is a power of two. + +EXAM,bn_mp_montgomery_setup.c + +This source code computes the value of $\rho$ required to perform Montgomery reduction. It has been modified to avoid performing excess +multiplications when $\beta$ is not the default 28-bits. + +\section{The Diminished Radix Algorithm} +The Diminished Radix method of modular reduction \cite{DRMET} is a fairly clever technique which can be more efficient than either the Barrett +or Montgomery methods for certain forms of moduli. The technique is based on the following simple congruence. + +\begin{equation} +(x \mbox{ mod } n) + k \lfloor x / n \rfloor \equiv x \mbox{ (mod }(n - k)\mbox{)} +\end{equation} + +This observation was used in the MMB \cite{MMB} block cipher to create a diffusion primitive. It used the fact that if $n = 2^{31}$ and $k=1$ that +then a x86 multiplier could produce the 62-bit product and use the ``shrd'' instruction to perform a double-precision right shift. The proof +of the above equation is very simple. First write $x$ in the product form. + +\begin{equation} +x = qn + r +\end{equation} + +Now reduce both sides modulo $(n - k)$. + +\begin{equation} +x \equiv qk + r \mbox{ (mod }(n-k)\mbox{)} +\end{equation} + +The variable $n$ reduces modulo $n - k$ to $k$. By putting $q = \lfloor x/n \rfloor$ and $r = x \mbox{ mod } n$ +into the equation the original congruence is reproduced, thus concluding the proof. The following algorithm is based on this observation. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Diminished Radix Reduction}. \\ +\textbf{Input}. Integer $x$, $n$, $k$ \\ +\textbf{Output}. $x \mbox{ mod } (n - k)$ \\ +\hline \\ +1. $q \leftarrow \lfloor x / n \rfloor$ \\ +2. $q \leftarrow k \cdot q$ \\ +3. $x \leftarrow x \mbox{ (mod }n\mbox{)}$ \\ +4. $x \leftarrow x + q$ \\ +5. If $x \ge (n - k)$ then \\ +\hspace{3mm}5.1 $x \leftarrow x - (n - k)$ \\ +\hspace{3mm}5.2 Goto step 1. \\ +6. Return $x$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Diminished Radix Reduction} +\label{fig:DR} +\end{figure} + +This algorithm will reduce $x$ modulo $n - k$ and return the residue. If $0 \le x < (n - k)^2$ then the algorithm will loop almost always +once or twice and occasionally three times. For simplicity sake the value of $x$ is bounded by the following simple polynomial. + +\begin{equation} +0 \le x < n^2 + k^2 - 2nk +\end{equation} + +The true bound is $0 \le x < (n - k - 1)^2$ but this has quite a few more terms. The value of $q$ after step 1 is bounded by the following. + +\begin{equation} +q < n - 2k - k^2/n +\end{equation} + +Since $k^2$ is going to be considerably smaller than $n$ that term will always be zero. The value of $x$ after step 3 is bounded trivially as +$0 \le x < n$. By step four the sum $x + q$ is bounded by + +\begin{equation} +0 \le q + x < (k + 1)n - 2k^2 - 1 +\end{equation} + +With a second pass $q$ will be loosely bounded by $0 \le q < k^2$ after step 2 while $x$ will still be loosely bounded by $0 \le x < n$ after step 3. After the second pass it is highly unlike that the +sum in step 4 will exceed $n - k$. In practice fewer than three passes of the algorithm are required to reduce virtually every input in the +range $0 \le x < (n - k - 1)^2$. + +\begin{figure} +\begin{small} +\begin{center} +\begin{tabular}{|l|} +\hline +$x = 123456789, n = 256, k = 3$ \\ +\hline $q \leftarrow \lfloor x/n \rfloor = 482253$ \\ +$q \leftarrow q*k = 1446759$ \\ +$x \leftarrow x \mbox{ mod } n = 21$ \\ +$x \leftarrow x + q = 1446780$ \\ +$x \leftarrow x - (n - k) = 1446527$ \\ +\hline +$q \leftarrow \lfloor x/n \rfloor = 5650$ \\ +$q \leftarrow q*k = 16950$ \\ +$x \leftarrow x \mbox{ mod } n = 127$ \\ +$x \leftarrow x + q = 17077$ \\ +$x \leftarrow x - (n - k) = 16824$ \\ +\hline +$q \leftarrow \lfloor x/n \rfloor = 65$ \\ +$q \leftarrow q*k = 195$ \\ +$x \leftarrow x \mbox{ mod } n = 184$ \\ +$x \leftarrow x + q = 379$ \\ +$x \leftarrow x - (n - k) = 126$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Example Diminished Radix Reduction} +\label{fig:EXDR} +\end{figure} + +Figure~\ref{fig:EXDR} demonstrates the reduction of $x = 123456789$ modulo $n - k = 253$ when $n = 256$ and $k = 3$. Note that even while $x$ +is considerably larger than $(n - k - 1)^2 = 63504$ the algorithm still converges on the modular residue exceedingly fast. In this case only +three passes were required to find the residue $x \equiv 126$. + + +\subsection{Choice of Moduli} +On the surface this algorithm looks like a very expensive algorithm. It requires a couple of subtractions followed by multiplication and other +modular reductions. The usefulness of this algorithm becomes exceedingly clear when an appropriate modulus is chosen. + +Division in general is a very expensive operation to perform. The one exception is when the division is by a power of the radix of representation used. +Division by ten for example is simple for pencil and paper mathematics since it amounts to shifting the decimal place to the right. Similarly division +by two (\textit{or powers of two}) is very simple for binary computers to perform. It would therefore seem logical to choose $n$ of the form $2^p$ +which would imply that $\lfloor x / n \rfloor$ is a simple shift of $x$ right $p$ bits. + +However, there is one operation related to division of power of twos that is even faster than this. If $n = \beta^p$ then the division may be +performed by moving whole digits to the right $p$ places. In practice division by $\beta^p$ is much faster than division by $2^p$ for any $p$. +Also with the choice of $n = \beta^p$ reducing $x$ modulo $n$ merely requires zeroing the digits above the $p-1$'th digit of $x$. + +Throughout the next section the term ``restricted modulus'' will refer to a modulus of the form $\beta^p - k$ whereas the term ``unrestricted +modulus'' will refer to a modulus of the form $2^p - k$. The word ``restricted'' in this case refers to the fact that it is based on the +$2^p$ logic except $p$ must be a multiple of $lg(\beta)$. + +\subsection{Choice of $k$} +Now that division and reduction (\textit{step 1 and 3 of figure~\ref{fig:DR}}) have been optimized to simple digit operations the multiplication by $k$ +in step 2 is the most expensive operation. Fortunately the choice of $k$ is not terribly limited. For all intents and purposes it might +as well be a single digit. The smaller the value of $k$ is the faster the algorithm will be. + +\subsection{Restricted Diminished Radix Reduction} +The restricted Diminished Radix algorithm can quickly reduce an input modulo a modulus of the form $n = \beta^p - k$. This algorithm can reduce +an input $x$ within the range $0 \le x < n^2$ using only a couple passes of the algorithm demonstrated in figure~\ref{fig:DR}. The implementation +of this algorithm has been optimized to avoid additional overhead associated with a division by $\beta^p$, the multiplication by $k$ or the addition +of $x$ and $q$. The resulting algorithm is very efficient and can lead to substantial improvements over Barrett and Montgomery reduction when modular +exponentiations are performed. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_dr\_reduce}. \\ +\textbf{Input}. mp\_int $x$, $n$ and a mp\_digit $k = \beta - n_0$ \\ +\hspace{11.5mm}($0 \le x < n^2$, $n > 1$, $0 < k < \beta$) \\ +\textbf{Output}. $x \mbox{ mod } n$ \\ +\hline \\ +1. $m \leftarrow n.used$ \\ +2. If $x.alloc < 2m$ then grow $x$ to $2m$ digits. \\ +3. $\mu \leftarrow 0$ \\ +4. for $i$ from $0$ to $m - 1$ do \\ +\hspace{3mm}4.1 $\hat r \leftarrow k \cdot x_{m+i} + x_{i} + \mu$ \\ +\hspace{3mm}4.2 $x_{i} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}4.3 $\mu \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +5. $x_{m} \leftarrow \mu$ \\ +6. for $i$ from $m + 1$ to $x.used - 1$ do \\ +\hspace{3mm}6.1 $x_{i} \leftarrow 0$ \\ +7. Clamp excess digits of $x$. \\ +8. If $x \ge n$ then \\ +\hspace{3mm}8.1 $x \leftarrow x - n$ \\ +\hspace{3mm}8.2 Goto step 3. \\ +9. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_dr\_reduce} +\end{figure} + +\textbf{Algorithm mp\_dr\_reduce.} +This algorithm will perform the Dimished Radix reduction of $x$ modulo $n$. It has similar restrictions to that of the Barrett reduction +with the addition that $n$ must be of the form $n = \beta^m - k$ where $0 < k <\beta$. + +This algorithm essentially implements the pseudo-code in figure~\ref{fig:DR} except with a slight optimization. The division by $\beta^m$, multiplication by $k$ +and addition of $x \mbox{ mod }\beta^m$ are all performed simultaneously inside the loop on step 4. The division by $\beta^m$ is emulated by accessing +the term at the $m+i$'th position which is subsequently multiplied by $k$ and added to the term at the $i$'th position. After the loop the $m$'th +digit is set to the carry and the upper digits are zeroed. Steps 5 and 6 emulate the reduction modulo $\beta^m$ that should have happend to +$x$ before the addition of the multiple of the upper half. + +At step 8 if $x$ is still larger than $n$ another pass of the algorithm is required. First $n$ is subtracted from $x$ and then the algorithm resumes +at step 3. + +EXAM,bn_mp_dr_reduce.c + +The first step is to grow $x$ as required to $2m$ digits since the reduction is performed in place on $x$. The label on line @49,top:@ is where +the algorithm will resume if further reduction passes are required. In theory it could be placed at the top of the function however, the size of +the modulus and question of whether $x$ is large enough are invariant after the first pass meaning that it would be a waste of time. + +The aliases $tmpx1$ and $tmpx2$ refer to the digits of $x$ where the latter is offset by $m$ digits. By reading digits from $x$ offset by $m$ digits +a division by $\beta^m$ can be simulated virtually for free. The loop on line @61,for@ performs the bulk of the work (\textit{corresponds to step 4 of algorithm 7.11}) +in this algorithm. + +By line @68,mu@ the pointer $tmpx1$ points to the $m$'th digit of $x$ which is where the final carry will be placed. Similarly by line @71,for@ the +same pointer will point to the $m+1$'th digit where the zeroes will be placed. + +Since the algorithm is only valid if both $x$ and $n$ are greater than zero an unsigned comparison suffices to determine if another pass is required. +With the same logic at line @82,sub@ the value of $x$ is known to be greater than or equal to $n$ meaning that an unsigned subtraction can be used +as well. Since the destination of the subtraction is the larger of the inputs the call to algorithm s\_mp\_sub cannot fail and the return code +does not need to be checked. + +\subsubsection{Setup} +To setup the restricted Diminished Radix algorithm the value $k = \beta - n_0$ is required. This algorithm is not really complicated but provided for +completeness. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_dr\_setup}. \\ +\textbf{Input}. mp\_int $n$ \\ +\textbf{Output}. $k = \beta - n_0$ \\ +\hline \\ +1. $k \leftarrow \beta - n_0$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_dr\_setup} +\end{figure} + +EXAM,bn_mp_dr_setup.c + +\subsubsection{Modulus Detection} +Another algorithm which will be useful is the ability to detect a restricted Diminished Radix modulus. An integer is said to be +of restricted Diminished Radix form if all of the digits are equal to $\beta - 1$ except the trailing digit which may be any value. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_dr\_is\_modulus}. \\ +\textbf{Input}. mp\_int $n$ \\ +\textbf{Output}. $1$ if $n$ is in D.R form, $0$ otherwise \\ +\hline +1. If $n.used < 2$ then return($0$). \\ +2. for $ix$ from $1$ to $n.used - 1$ do \\ +\hspace{3mm}2.1 If $n_{ix} \ne \beta - 1$ return($0$). \\ +3. Return($1$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_dr\_is\_modulus} +\end{figure} + +\textbf{Algorithm mp\_dr\_is\_modulus.} +This algorithm determines if a value is in Diminished Radix form. Step 1 rejects obvious cases where fewer than two digits are +in the mp\_int. Step 2 tests all but the first digit to see if they are equal to $\beta - 1$. If the algorithm manages to get to +step 3 then $n$ must be of Diminished Radix form. + +EXAM,bn_mp_dr_is_modulus.c + +\subsection{Unrestricted Diminished Radix Reduction} +The unrestricted Diminished Radix algorithm allows modular reductions to be performed when the modulus is of the form $2^p - k$. This algorithm +is a straightforward adaptation of algorithm~\ref{fig:DR}. + +In general the restricted Diminished Radix reduction algorithm is much faster since it has considerably lower overhead. However, this new +algorithm is much faster than either Montgomery or Barrett reduction when the moduli are of the appropriate form. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce\_2k}. \\ +\textbf{Input}. mp\_int $a$ and $n$. mp\_digit $k$ \\ +\hspace{11.5mm}($a \ge 0$, $n > 1$, $0 < k < \beta$, $n + k$ is a power of two) \\ +\textbf{Output}. $a \mbox{ (mod }n\mbox{)}$ \\ +\hline +1. $p \leftarrow \lceil lg(n) \rceil$ (\textit{mp\_count\_bits}) \\ +2. While $a \ge n$ do \\ +\hspace{3mm}2.1 $q \leftarrow \lfloor a / 2^p \rfloor$ (\textit{mp\_div\_2d}) \\ +\hspace{3mm}2.2 $a \leftarrow a \mbox{ (mod }2^p\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +\hspace{3mm}2.3 $q \leftarrow q \cdot k$ (\textit{mp\_mul\_d}) \\ +\hspace{3mm}2.4 $a \leftarrow a - q$ (\textit{s\_mp\_sub}) \\ +\hspace{3mm}2.5 If $a \ge n$ then do \\ +\hspace{6mm}2.5.1 $a \leftarrow a - n$ \\ +3. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce\_2k} +\end{figure} + +\textbf{Algorithm mp\_reduce\_2k.} +This algorithm quickly reduces an input $a$ modulo an unrestricted Diminished Radix modulus $n$. Division by $2^p$ is emulated with a right +shift which makes the algorithm fairly inexpensive to use. + +EXAM,bn_mp_reduce_2k.c + +The algorithm mp\_count\_bits calculates the number of bits in an mp\_int which is used to find the initial value of $p$. The call to mp\_div\_2d +on line @31,mp_div_2d@ calculates both the quotient $q$ and the remainder $a$ required. By doing both in a single function call the code size +is kept fairly small. The multiplication by $k$ is only performed if $k > 1$. This allows reductions modulo $2^p - 1$ to be performed without +any multiplications. + +The unsigned s\_mp\_add, mp\_cmp\_mag and s\_mp\_sub are used in place of their full sign counterparts since the inputs are only valid if they are +positive. By using the unsigned versions the overhead is kept to a minimum. + +\subsubsection{Unrestricted Setup} +To setup this reduction algorithm the value of $k = 2^p - n$ is required. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce\_2k\_setup}. \\ +\textbf{Input}. mp\_int $n$ \\ +\textbf{Output}. $k = 2^p - n$ \\ +\hline +1. $p \leftarrow \lceil lg(n) \rceil$ (\textit{mp\_count\_bits}) \\ +2. $x \leftarrow 2^p$ (\textit{mp\_2expt}) \\ +3. $x \leftarrow x - n$ (\textit{mp\_sub}) \\ +4. $k \leftarrow x_0$ \\ +5. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce\_2k\_setup} +\end{figure} + +\textbf{Algorithm mp\_reduce\_2k\_setup.} +This algorithm computes the value of $k$ required for the algorithm mp\_reduce\_2k. By making a temporary variable $x$ equal to $2^p$ a subtraction +is sufficient to solve for $k$. Alternatively if $n$ has more than one digit the value of $k$ is simply $\beta - n_0$. + +EXAM,bn_mp_reduce_2k_setup.c + +\subsubsection{Unrestricted Detection} +An integer $n$ is a valid unrestricted Diminished Radix modulus if either of the following are true. + +\begin{enumerate} +\item The number has only one digit. +\item The number has more than one digit and every bit from the $\beta$'th to the most significant is one. +\end{enumerate} + +If either condition is true than there is a power of two $2^p$ such that $0 < 2^p - n < \beta$. If the input is only +one digit than it will always be of the correct form. Otherwise all of the bits above the first digit must be one. This arises from the fact +that there will be value of $k$ that when added to the modulus causes a carry in the first digit which propagates all the way to the most +significant bit. The resulting sum will be a power of two. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce\_is\_2k}. \\ +\textbf{Input}. mp\_int $n$ \\ +\textbf{Output}. $1$ if of proper form, $0$ otherwise \\ +\hline +1. If $n.used = 0$ then return($0$). \\ +2. If $n.used = 1$ then return($1$). \\ +3. $p \leftarrow \lceil lg(n) \rceil$ (\textit{mp\_count\_bits}) \\ +4. for $x$ from $lg(\beta)$ to $p$ do \\ +\hspace{3mm}4.1 If the ($x \mbox{ mod }lg(\beta)$)'th bit of the $\lfloor x / lg(\beta) \rfloor$ of $n$ is zero then return($0$). \\ +5. Return($1$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce\_is\_2k} +\end{figure} + +\textbf{Algorithm mp\_reduce\_is\_2k.} +This algorithm quickly determines if a modulus is of the form required for algorithm mp\_reduce\_2k to function properly. + +EXAM,bn_mp_reduce_is_2k.c + + + +\section{Algorithm Comparison} +So far three very different algorithms for modular reduction have been discussed. Each of the algorithms have their own strengths and weaknesses +that makes having such a selection very useful. The following table sumarizes the three algorithms along with comparisons of work factors. Since +all three algorithms have the restriction that $0 \le x < n^2$ and $n > 1$ those limitations are not included in the table. + +\begin{center} +\begin{small} +\begin{tabular}{|c|c|c|c|c|c|} +\hline \textbf{Method} & \textbf{Work Required} & \textbf{Limitations} & \textbf{$m = 8$} & \textbf{$m = 32$} & \textbf{$m = 64$} \\ +\hline Barrett & $m^2 + 2m - 1$ & None & $79$ & $1087$ & $4223$ \\ +\hline Montgomery & $m^2 + m$ & $n$ must be odd & $72$ & $1056$ & $4160$ \\ +\hline D.R. & $2m$ & $n = \beta^m - k$ & $16$ & $64$ & $128$ \\ +\hline +\end{tabular} +\end{small} +\end{center} + +In theory Montgomery and Barrett reductions would require roughly the same amount of time to complete. However, in practice since Montgomery +reduction can be written as a single function with the Comba technique it is much faster. Barrett reduction suffers from the overhead of +calling the half precision multipliers, addition and division by $\beta$ algorithms. + +For almost every cryptographic algorithm Montgomery reduction is the algorithm of choice. The one set of algorithms where Diminished Radix reduction truly +shines are based on the discrete logarithm problem such as Diffie-Hellman \cite{DH} and ElGamal \cite{ELGAMAL}. In these algorithms +primes of the form $\beta^m - k$ can be found and shared amongst users. These primes will allow the Diminished Radix algorithm to be used in +modular exponentiation to greatly speed up the operation. + + + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 3 \right ]$ & Prove that the ``trick'' in algorithm mp\_montgomery\_setup actually \\ + & calculates the correct value of $\rho$. \\ + & \\ +$\left [ 2 \right ]$ & Devise an algorithm to reduce modulo $n + k$ for small $k$ quickly. \\ + & \\ +$\left [ 4 \right ]$ & Prove that the pseudo-code algorithm ``Diminished Radix Reduction'' \\ + & (\textit{figure~\ref{fig:DR}}) terminates. Also prove the probability that it will \\ + & terminate within $1 \le k \le 10$ iterations. \\ + & \\ +\end{tabular} + + +\chapter{Exponentiation} +Exponentiation is the operation of raising one variable to the power of another, for example, $a^b$. A variant of exponentiation, computed +in a finite field or ring, is called modular exponentiation. This latter style of operation is typically used in public key +cryptosystems such as RSA and Diffie-Hellman. The ability to quickly compute modular exponentiations is of great benefit to any +such cryptosystem and many methods have been sought to speed it up. + +\section{Exponentiation Basics} +A trivial algorithm would simply multiply $a$ against itself $b - 1$ times to compute the exponentiation desired. However, as $b$ grows in size +the number of multiplications becomes prohibitive. Imagine what would happen if $b$ $\approx$ $2^{1024}$ as is the case when computing an RSA signature +with a $1024$-bit key. Such a calculation could never be completed as it would take simply far too long. + +Fortunately there is a very simple algorithm based on the laws of exponents. Recall that $lg_a(a^b) = b$ and that $lg_a(a^ba^c) = b + c$ which +are two trivial relationships between the base and the exponent. Let $b_i$ represent the $i$'th bit of $b$ starting from the least +significant bit. If $b$ is a $k$-bit integer than the following equation is true. + +\begin{equation} +a^b = \prod_{i=0}^{k-1} a^{2^i \cdot b_i} +\end{equation} + +By taking the base $a$ logarithm of both sides of the equation the following equation is the result. + +\begin{equation} +b = \sum_{i=0}^{k-1}2^i \cdot b_i +\end{equation} + +The term $a^{2^i}$ can be found from the $i - 1$'th term by squaring the term since $\left ( a^{2^i} \right )^2$ is equal to +$a^{2^{i+1}}$. This observation forms the basis of essentially all fast exponentiation algorithms. It requires $k$ squarings and on average +$k \over 2$ multiplications to compute the result. This is indeed quite an improvement over simply multiplying by $a$ a total of $b-1$ times. + +While this current method is a considerable speed up there are further improvements to be made. For example, the $a^{2^i}$ term does not need to +be computed in an auxilary variable. Consider the following equivalent algorithm. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Left to Right Exponentiation}. \\ +\textbf{Input}. Integer $a$, $b$ and $k$ \\ +\textbf{Output}. $c = a^b$ \\ +\hline \\ +1. $c \leftarrow 1$ \\ +2. for $i$ from $k - 1$ to $0$ do \\ +\hspace{3mm}2.1 $c \leftarrow c^2$ \\ +\hspace{3mm}2.2 $c \leftarrow c \cdot a^{b_i}$ \\ +3. Return $c$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Left to Right Exponentiation} +\label{fig:LTOR} +\end{figure} + +This algorithm starts from the most significant bit and works towards the least significant bit. When the $i$'th bit of $b$ is set $a$ is +multiplied against the current product. In each iteration the product is squared which doubles the exponent of the individual terms of the +product. + +For example, let $b = 101100_2 \equiv 44_{10}$. The following chart demonstrates the actions of the algorithm. + +\newpage\begin{figure} +\begin{center} +\begin{tabular}{|c|c|} +\hline \textbf{Value of $i$} & \textbf{Value of $c$} \\ +\hline - & $1$ \\ +\hline $5$ & $a$ \\ +\hline $4$ & $a^2$ \\ +\hline $3$ & $a^4 \cdot a$ \\ +\hline $2$ & $a^8 \cdot a^2 \cdot a$ \\ +\hline $1$ & $a^{16} \cdot a^4 \cdot a^2$ \\ +\hline $0$ & $a^{32} \cdot a^8 \cdot a^4$ \\ +\hline +\end{tabular} +\end{center} +\caption{Example of Left to Right Exponentiation} +\end{figure} + +When the product $a^{32} \cdot a^8 \cdot a^4$ is simplified it is equal $a^{44}$ which is the desired exponentiation. This particular algorithm is +called ``Left to Right'' because it reads the exponent in that order. All of the exponentiation algorithms that will be presented are of this nature. + +\subsection{Single Digit Exponentiation} +The first algorithm in the series of exponentiation algorithms will be an unbounded algorithm where the exponent is a single digit. It is intended +to be used when a small power of an input is required (\textit{e.g. $a^5$}). It is faster than simply multiplying $b - 1$ times for all values of +$b$ that are greater than three. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_expt\_d}. \\ +\textbf{Input}. mp\_int $a$ and mp\_digit $b$ \\ +\textbf{Output}. $c = a^b$ \\ +\hline \\ +1. $g \leftarrow a$ (\textit{mp\_init\_copy}) \\ +2. $c \leftarrow 1$ (\textit{mp\_set}) \\ +3. for $x$ from 1 to $lg(\beta)$ do \\ +\hspace{3mm}3.1 $c \leftarrow c^2$ (\textit{mp\_sqr}) \\ +\hspace{3mm}3.2 If $b$ AND $2^{lg(\beta) - 1} \ne 0$ then \\ +\hspace{6mm}3.2.1 $c \leftarrow c \cdot g$ (\textit{mp\_mul}) \\ +\hspace{3mm}3.3 $b \leftarrow b << 1$ \\ +4. Clear $g$. \\ +5. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_expt\_d} +\end{figure} + +\textbf{Algorithm mp\_expt\_d.} +This algorithm computes the value of $a$ raised to the power of a single digit $b$. It uses the left to right exponentiation algorithm to +quickly compute the exponentiation. It is loosely based on algorithm 14.79 of HAC \cite[pp. 615]{HAC} with the difference that the +exponent is a fixed width. + +A copy of $a$ is made first to allow destination variable $c$ be the same as the source variable $a$. The result is set to the initial value of +$1$ in the subsequent step. + +Inside the loop the exponent is read from the most significant bit first down to the least significant bit. First $c$ is invariably squared +on step 3.1. In the following step if the most significant bit of $b$ is one the copy of $a$ is multiplied against $c$. The value +of $b$ is shifted left one bit to make the next bit down from the most signficant bit the new most significant bit. In effect each +iteration of the loop moves the bits of the exponent $b$ upwards to the most significant location. + +EXAM,bn_mp_expt_d.c + +Line @29,mp_set@ sets the initial value of the result to $1$. Next the loop on line @31,for@ steps through each bit of the exponent starting from +the most significant down towards the least significant. The invariant squaring operation placed on line @333,mp_sqr@ is performed first. After +the squaring the result $c$ is multiplied by the base $g$ if and only if the most significant bit of the exponent is set. The shift on line +@47,<<@ moves all of the bits of the exponent upwards towards the most significant location. + +\section{$k$-ary Exponentiation} +When calculating an exponentiation the most time consuming bottleneck is the multiplications which are in general a small factor +slower than squaring. Recall from the previous algorithm that $b_{i}$ refers to the $i$'th bit of the exponent $b$. Suppose instead it referred to +the $i$'th $k$-bit digit of the exponent of $b$. For $k = 1$ the definitions are synonymous and for $k > 1$ algorithm~\ref{fig:KARY} +computes the same exponentiation. A group of $k$ bits from the exponent is called a \textit{window}. That is it is a small window on only a +portion of the entire exponent. Consider the following modification to the basic left to right exponentiation algorithm. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{$k$-ary Exponentiation}. \\ +\textbf{Input}. Integer $a$, $b$, $k$ and $t$ \\ +\textbf{Output}. $c = a^b$ \\ +\hline \\ +1. $c \leftarrow 1$ \\ +2. for $i$ from $t - 1$ to $0$ do \\ +\hspace{3mm}2.1 $c \leftarrow c^{2^k} $ \\ +\hspace{3mm}2.2 Extract the $i$'th $k$-bit word from $b$ and store it in $g$. \\ +\hspace{3mm}2.3 $c \leftarrow c \cdot a^g$ \\ +3. Return $c$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{$k$-ary Exponentiation} +\label{fig:KARY} +\end{figure} + +The squaring on step 2.1 can be calculated by squaring the value $c$ successively $k$ times. If the values of $a^g$ for $0 < g < 2^k$ have been +precomputed this algorithm requires only $t$ multiplications and $tk$ squarings. The table can be generated with $2^{k - 1} - 1$ squarings and +$2^{k - 1} + 1$ multiplications. This algorithm assumes that the number of bits in the exponent is evenly divisible by $k$. +However, when it is not the remaining $0 < x \le k - 1$ bits can be handled with algorithm~\ref{fig:LTOR}. + +Suppose $k = 4$ and $t = 100$. This modified algorithm will require $109$ multiplications and $408$ squarings to compute the exponentiation. The +original algorithm would on average have required $200$ multiplications and $400$ squrings to compute the same value. The total number of squarings +has increased slightly but the number of multiplications has nearly halved. + +\subsection{Optimal Values of $k$} +An optimal value of $k$ will minimize $2^{k} + \lceil n / k \rceil + n - 1$ for a fixed number of bits in the exponent $n$. The simplest +approach is to brute force search amongst the values $k = 2, 3, \ldots, 8$ for the lowest result. Table~\ref{fig:OPTK} lists optimal values of $k$ +for various exponent sizes and compares the number of multiplication and squarings required against algorithm~\ref{fig:LTOR}. + +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|c|c|c|c|c|c|} +\hline \textbf{Exponent (bits)} & \textbf{Optimal $k$} & \textbf{Work at $k$} & \textbf{Work with ~\ref{fig:LTOR}} \\ +\hline $16$ & $2$ & $27$ & $24$ \\ +\hline $32$ & $3$ & $49$ & $48$ \\ +\hline $64$ & $3$ & $92$ & $96$ \\ +\hline $128$ & $4$ & $175$ & $192$ \\ +\hline $256$ & $4$ & $335$ & $384$ \\ +\hline $512$ & $5$ & $645$ & $768$ \\ +\hline $1024$ & $6$ & $1257$ & $1536$ \\ +\hline $2048$ & $6$ & $2452$ & $3072$ \\ +\hline $4096$ & $7$ & $4808$ & $6144$ \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Optimal Values of $k$ for $k$-ary Exponentiation} +\label{fig:OPTK} +\end{figure} + +\subsection{Sliding-Window Exponentiation} +A simple modification to the previous algorithm is only generate the upper half of the table in the range $2^{k-1} \le g < 2^k$. Essentially +this is a table for all values of $g$ where the most significant bit of $g$ is a one. However, in order for this to be allowed in the +algorithm values of $g$ in the range $0 \le g < 2^{k-1}$ must be avoided. + +Table~\ref{fig:OPTK2} lists optimal values of $k$ for various exponent sizes and compares the work required against algorithm~\ref{fig:KARY}. + +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|c|c|c|c|c|c|} +\hline \textbf{Exponent (bits)} & \textbf{Optimal $k$} & \textbf{Work at $k$} & \textbf{Work with ~\ref{fig:KARY}} \\ +\hline $16$ & $3$ & $24$ & $27$ \\ +\hline $32$ & $3$ & $45$ & $49$ \\ +\hline $64$ & $4$ & $87$ & $92$ \\ +\hline $128$ & $4$ & $167$ & $175$ \\ +\hline $256$ & $5$ & $322$ & $335$ \\ +\hline $512$ & $6$ & $628$ & $645$ \\ +\hline $1024$ & $6$ & $1225$ & $1257$ \\ +\hline $2048$ & $7$ & $2403$ & $2452$ \\ +\hline $4096$ & $8$ & $4735$ & $4808$ \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Optimal Values of $k$ for Sliding Window Exponentiation} +\label{fig:OPTK2} +\end{figure} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Sliding Window $k$-ary Exponentiation}. \\ +\textbf{Input}. Integer $a$, $b$, $k$ and $t$ \\ +\textbf{Output}. $c = a^b$ \\ +\hline \\ +1. $c \leftarrow 1$ \\ +2. for $i$ from $t - 1$ to $0$ do \\ +\hspace{3mm}2.1 If the $i$'th bit of $b$ is a zero then \\ +\hspace{6mm}2.1.1 $c \leftarrow c^2$ \\ +\hspace{3mm}2.2 else do \\ +\hspace{6mm}2.2.1 $c \leftarrow c^{2^k}$ \\ +\hspace{6mm}2.2.2 Extract the $k$ bits from $(b_{i}b_{i-1}\ldots b_{i-(k-1)})$ and store it in $g$. \\ +\hspace{6mm}2.2.3 $c \leftarrow c \cdot a^g$ \\ +\hspace{6mm}2.2.4 $i \leftarrow i - k$ \\ +3. Return $c$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Sliding Window $k$-ary Exponentiation} +\end{figure} + +Similar to the previous algorithm this algorithm must have a special handler when fewer than $k$ bits are left in the exponent. While this +algorithm requires the same number of squarings it can potentially have fewer multiplications. The pre-computed table $a^g$ is also half +the size as the previous table. + +Consider the exponent $b = 111101011001000_2 \equiv 31432_{10}$ with $k = 3$ using both algorithms. The first algorithm will divide the exponent up as +the following five $3$-bit words $b \equiv \left ( 111, 101, 011, 001, 000 \right )_{2}$. The second algorithm will break the +exponent as $b \equiv \left ( 111, 101, 0, 110, 0, 100, 0 \right )_{2}$. The single digit $0$ in the second representation are where +a single squaring took place instead of a squaring and multiplication. In total the first method requires $10$ multiplications and $18$ +squarings. The second method requires $8$ multiplications and $18$ squarings. + +In general the sliding window method is never slower than the generic $k$-ary method and often it is slightly faster. + +\section{Modular Exponentiation} + +Modular exponentiation is essentially computing the power of a base within a finite field or ring. For example, computing +$d \equiv a^b \mbox{ (mod }c\mbox{)}$ is a modular exponentiation. Instead of first computing $a^b$ and then reducing it +modulo $c$ the intermediate result is reduced modulo $c$ after every squaring or multiplication operation. + +This guarantees that any intermediate result is bounded by $0 \le d \le c^2 - 2c + 1$ and can be reduced modulo $c$ quickly using +one of the algorithms presented in ~REDUCTION~. + +Before the actual modular exponentiation algorithm can be written a wrapper algorithm must be written first. This algorithm +will allow the exponent $b$ to be negative which is computed as $c \equiv \left (1 / a \right )^{\vert b \vert} \mbox{(mod }d\mbox{)}$. The +value of $(1/a) \mbox{ mod }c$ is computed using the modular inverse (\textit{see \ref{sec;modinv}}). If no inverse exists the algorithm +terminates with an error. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_exptmod}. \\ +\textbf{Input}. mp\_int $a$, $b$ and $c$ \\ +\textbf{Output}. $y \equiv g^x \mbox{ (mod }p\mbox{)}$ \\ +\hline \\ +1. If $c.sign = MP\_NEG$ return(\textit{MP\_VAL}). \\ +2. If $b.sign = MP\_NEG$ then \\ +\hspace{3mm}2.1 $g' \leftarrow g^{-1} \mbox{ (mod }c\mbox{)}$ \\ +\hspace{3mm}2.2 $x' \leftarrow \vert x \vert$ \\ +\hspace{3mm}2.3 Compute $d \equiv g'^{x'} \mbox{ (mod }c\mbox{)}$ via recursion. \\ +3. if $p$ is odd \textbf{OR} $p$ is a D.R. modulus then \\ +\hspace{3mm}3.1 Compute $y \equiv g^{x} \mbox{ (mod }p\mbox{)}$ via algorithm mp\_exptmod\_fast. \\ +4. else \\ +\hspace{3mm}4.1 Compute $y \equiv g^{x} \mbox{ (mod }p\mbox{)}$ via algorithm s\_mp\_exptmod. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_exptmod} +\end{figure} + +\textbf{Algorithm mp\_exptmod.} +The first algorithm which actually performs modular exponentiation is algorithm s\_mp\_exptmod. It is a sliding window $k$-ary algorithm +which uses Barrett reduction to reduce the product modulo $p$. The second algorithm mp\_exptmod\_fast performs the same operation +except it uses either Montgomery or Diminished Radix reduction. The two latter reduction algorithms are clumped in the same exponentiation +algorithm since their arguments are essentially the same (\textit{two mp\_ints and one mp\_digit}). + +EXAM,bn_mp_exptmod.c + +In order to keep the algorithms in a known state the first step on line @29,if@ is to reject any negative modulus as input. If the exponent is +negative the algorithm tries to perform a modular exponentiation with the modular inverse of the base $G$. The temporary variable $tmpG$ is assigned +the modular inverse of $G$ and $tmpX$ is assigned the absolute value of $X$. The algorithm will recuse with these new values with a positive +exponent. + +If the exponent is positive the algorithm resumes the exponentiation. Line @63,dr_@ determines if the modulus is of the restricted Diminished Radix +form. If it is not line @65,reduce@ attempts to determine if it is of a unrestricted Diminished Radix form. The integer $dr$ will take on one +of three values. + +\begin{enumerate} +\item $dr = 0$ means that the modulus is not of either restricted or unrestricted Diminished Radix form. +\item $dr = 1$ means that the modulus is of restricted Diminished Radix form. +\item $dr = 2$ means that the modulus is of unrestricted Diminished Radix form. +\end{enumerate} + +Line @69,if@ determines if the fast modular exponentiation algorithm can be used. It is allowed if $dr \ne 0$ or if the modulus is odd. Otherwise, +the slower s\_mp\_exptmod algorithm is used which uses Barrett reduction. + +\subsection{Barrett Modular Exponentiation} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_exptmod}. \\ +\textbf{Input}. mp\_int $a$, $b$ and $c$ \\ +\textbf{Output}. $y \equiv g^x \mbox{ (mod }p\mbox{)}$ \\ +\hline \\ +1. $k \leftarrow lg(x)$ \\ +2. $winsize \leftarrow \left \lbrace \begin{array}{ll} + 2 & \mbox{if }k \le 7 \\ + 3 & \mbox{if }7 < k \le 36 \\ + 4 & \mbox{if }36 < k \le 140 \\ + 5 & \mbox{if }140 < k \le 450 \\ + 6 & \mbox{if }450 < k \le 1303 \\ + 7 & \mbox{if }1303 < k \le 3529 \\ + 8 & \mbox{if }3529 < k \\ + \end{array} \right .$ \\ +3. Initialize $2^{winsize}$ mp\_ints in an array named $M$ and one mp\_int named $\mu$ \\ +4. Calculate the $\mu$ required for Barrett Reduction (\textit{mp\_reduce\_setup}). \\ +5. $M_1 \leftarrow g \mbox{ (mod }p\mbox{)}$ \\ +\\ +Setup the table of small powers of $g$. First find $g^{2^{winsize}}$ and then all multiples of it. \\ +6. $k \leftarrow 2^{winsize - 1}$ \\ +7. $M_{k} \leftarrow M_1$ \\ +8. for $ix$ from 0 to $winsize - 2$ do \\ +\hspace{3mm}8.1 $M_k \leftarrow \left ( M_k \right )^2$ (\textit{mp\_sqr}) \\ +\hspace{3mm}8.2 $M_k \leftarrow M_k \mbox{ (mod }p\mbox{)}$ (\textit{mp\_reduce}) \\ +9. for $ix$ from $2^{winsize - 1} + 1$ to $2^{winsize} - 1$ do \\ +\hspace{3mm}9.1 $M_{ix} \leftarrow M_{ix - 1} \cdot M_{1}$ (\textit{mp\_mul}) \\ +\hspace{3mm}9.2 $M_{ix} \leftarrow M_{ix} \mbox{ (mod }p\mbox{)}$ (\textit{mp\_reduce}) \\ +10. $res \leftarrow 1$ \\ +\\ +Start Sliding Window. \\ +11. $mode \leftarrow 0, bitcnt \leftarrow 1, buf \leftarrow 0, digidx \leftarrow x.used - 1, bitcpy \leftarrow 0, bitbuf \leftarrow 0$ \\ +12. Loop \\ +\hspace{3mm}12.1 $bitcnt \leftarrow bitcnt - 1$ \\ +\hspace{3mm}12.2 If $bitcnt = 0$ then do \\ +\hspace{6mm}12.2.1 If $digidx = -1$ goto step 13. \\ +\hspace{6mm}12.2.2 $buf \leftarrow x_{digidx}$ \\ +\hspace{6mm}12.2.3 $digidx \leftarrow digidx - 1$ \\ +\hspace{6mm}12.2.4 $bitcnt \leftarrow lg(\beta)$ \\ +Continued on next page. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm s\_mp\_exptmod} +\end{figure} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_exptmod} (\textit{continued}). \\ +\textbf{Input}. mp\_int $a$, $b$ and $c$ \\ +\textbf{Output}. $y \equiv g^x \mbox{ (mod }p\mbox{)}$ \\ +\hline \\ +\hspace{3mm}12.3 $y \leftarrow (buf >> (lg(\beta) - 1))$ AND $1$ \\ +\hspace{3mm}12.4 $buf \leftarrow buf << 1$ \\ +\hspace{3mm}12.5 if $mode = 0$ and $y = 0$ then goto step 12. \\ +\hspace{3mm}12.6 if $mode = 1$ and $y = 0$ then do \\ +\hspace{6mm}12.6.1 $res \leftarrow res^2$ \\ +\hspace{6mm}12.6.2 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +\hspace{6mm}12.6.3 Goto step 12. \\ +\hspace{3mm}12.7 $bitcpy \leftarrow bitcpy + 1$ \\ +\hspace{3mm}12.8 $bitbuf \leftarrow bitbuf + (y << (winsize - bitcpy))$ \\ +\hspace{3mm}12.9 $mode \leftarrow 2$ \\ +\hspace{3mm}12.10 If $bitcpy = winsize$ then do \\ +\hspace{6mm}Window is full so perform the squarings and single multiplication. \\ +\hspace{6mm}12.10.1 for $ix$ from $0$ to $winsize -1$ do \\ +\hspace{9mm}12.10.1.1 $res \leftarrow res^2$ \\ +\hspace{9mm}12.10.1.2 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +\hspace{6mm}12.10.2 $res \leftarrow res \cdot M_{bitbuf}$ \\ +\hspace{6mm}12.10.3 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +\hspace{6mm}Reset the window. \\ +\hspace{6mm}12.10.4 $bitcpy \leftarrow 0, bitbuf \leftarrow 0, mode \leftarrow 1$ \\ +\\ +No more windows left. Check for residual bits of exponent. \\ +13. If $mode = 2$ and $bitcpy > 0$ then do \\ +\hspace{3mm}13.1 for $ix$ form $0$ to $bitcpy - 1$ do \\ +\hspace{6mm}13.1.1 $res \leftarrow res^2$ \\ +\hspace{6mm}13.1.2 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +\hspace{6mm}13.1.3 $bitbuf \leftarrow bitbuf << 1$ \\ +\hspace{6mm}13.1.4 If $bitbuf$ AND $2^{winsize} \ne 0$ then do \\ +\hspace{9mm}13.1.4.1 $res \leftarrow res \cdot M_{1}$ \\ +\hspace{9mm}13.1.4.2 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +14. $y \leftarrow res$ \\ +15. Clear $res$, $mu$ and the $M$ array. \\ +16. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm s\_mp\_exptmod (continued)} +\end{figure} + +\textbf{Algorithm s\_mp\_exptmod.} +This algorithm computes the $x$'th power of $g$ modulo $p$ and stores the result in $y$. It takes advantage of the Barrett reduction +algorithm to keep the product small throughout the algorithm. + +The first two steps determine the optimal window size based on the number of bits in the exponent. The larger the exponent the +larger the window size becomes. After a window size $winsize$ has been chosen an array of $2^{winsize}$ mp\_int variables is allocated. This +table will hold the values of $g^x \mbox{ (mod }p\mbox{)}$ for $2^{winsize - 1} \le x < 2^{winsize}$. + +After the table is allocated the first power of $g$ is found. Since $g \ge p$ is allowed it must be first reduced modulo $p$ to make +the rest of the algorithm more efficient. The first element of the table at $2^{winsize - 1}$ is found by squaring $M_1$ successively $winsize - 2$ +times. The rest of the table elements are found by multiplying the previous element by $M_1$ modulo $p$. + +Now that the table is available the sliding window may begin. The following list describes the functions of all the variables in the window. +\begin{enumerate} +\item The variable $mode$ dictates how the bits of the exponent are interpreted. +\begin{enumerate} + \item When $mode = 0$ the bits are ignored since no non-zero bit of the exponent has been seen yet. For example, if the exponent were simply + $1$ then there would be $lg(\beta) - 1$ zero bits before the first non-zero bit. In this case bits are ignored until a non-zero bit is found. + \item When $mode = 1$ a non-zero bit has been seen before and a new $winsize$-bit window has not been formed yet. In this mode leading $0$ bits + are read and a single squaring is performed. If a non-zero bit is read a new window is created. + \item When $mode = 2$ the algorithm is in the middle of forming a window and new bits are appended to the window from the most significant bit + downwards. +\end{enumerate} +\item The variable $bitcnt$ indicates how many bits are left in the current digit of the exponent left to be read. When it reaches zero a new digit + is fetched from the exponent. +\item The variable $buf$ holds the currently read digit of the exponent. +\item The variable $digidx$ is an index into the exponents digits. It starts at the leading digit $x.used - 1$ and moves towards the trailing digit. +\item The variable $bitcpy$ indicates how many bits are in the currently formed window. When it reaches $winsize$ the window is flushed and + the appropriate operations performed. +\item The variable $bitbuf$ holds the current bits of the window being formed. +\end{enumerate} + +All of step 12 is the window processing loop. It will iterate while there are digits available form the exponent to read. The first step +inside this loop is to extract a new digit if no more bits are available in the current digit. If there are no bits left a new digit is +read and if there are no digits left than the loop terminates. + +After a digit is made available step 12.3 will extract the most significant bit of the current digit and move all other bits in the digit +upwards. In effect the digit is read from most significant bit to least significant bit and since the digits are read from leading to +trailing edges the entire exponent is read from most significant bit to least significant bit. + +At step 12.5 if the $mode$ and currently extracted bit $y$ are both zero the bit is ignored and the next bit is read. This prevents the +algorithm from having to perform trivial squaring and reduction operations before the first non-zero bit is read. Step 12.6 and 12.7-10 handle +the two cases of $mode = 1$ and $mode = 2$ respectively. + +FIGU,expt_state,Sliding Window State Diagram + +By step 13 there are no more digits left in the exponent. However, there may be partial bits in the window left. If $mode = 2$ then +a Left-to-Right algorithm is used to process the remaining few bits. + +EXAM,bn_s_mp_exptmod.c + +Lines @26,if@ through @40,}@ determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted +from smallest to greatest so that in each \textbf{if} statement only one condition must be tested. For example, by the \textbf{if} statement +on line @32,if@ the value of $x$ is already known to be greater than $140$. + +The conditional piece of code beginning on line @42,ifdef@ allows the window size to be restricted to five bits. This logic is used to ensure +the table of precomputed powers of $G$ remains relatively small. + +The for loop on line @49,for@ initializes the $M$ array while lines @59,mp_init@ and @62,mp_reduce@ compute the value of $\mu$ required for +Barrett reduction. + +-- More later. + +\section{Quick Power of Two} +Calculating $b = 2^a$ can be performed much quicker than with any of the previous algorithms. Recall that a logical shift left $m << k$ is +equivalent to $m \cdot 2^k$. By this logic when $m = 1$ a quick power of two can be achieved. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_2expt}. \\ +\textbf{Input}. integer $b$ \\ +\textbf{Output}. $a \leftarrow 2^b$ \\ +\hline \\ +1. $a \leftarrow 0$ \\ +2. If $a.alloc < \lfloor b / lg(\beta) \rfloor + 1$ then grow $a$ appropriately. \\ +3. $a.used \leftarrow \lfloor b / lg(\beta) \rfloor + 1$ \\ +4. $a_{\lfloor b / lg(\beta) \rfloor} \leftarrow 1 << (b \mbox{ mod } lg(\beta))$ \\ +5. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_2expt} +\end{figure} + +\textbf{Algorithm mp\_2expt.} + +EXAM,bn_mp_2expt.c + +\chapter{Higher Level Algorithms} + +This chapter discusses the various higher level algorithms that are required to complete a well rounded multiple precision integer package. These +routines are less performance oriented than the algorithms of chapters five, six and seven but are no less important. + +The first section describes a method of integer division with remainder that is universally well known. It provides the signed division logic +for the package. The subsequent section discusses a set of algorithms which allow a single digit to be the 2nd operand for a variety of operations. +These algorithms serve mostly to simplify other algorithms where small constants are required. The last two sections discuss how to manipulate +various representations of integers. For example, converting from an mp\_int to a string of character. + +\section{Integer Division with Remainder} +\label{sec:division} + +Integer division aside from modular exponentiation is the most intensive algorithm to compute. Like addition, subtraction and multiplication +the basis of this algorithm is the long-hand division algorithm taught to school children. Throughout this discussion several common variables +will be used. Let $x$ represent the divisor and $y$ represent the dividend. Let $q$ represent the integer quotient $\lfloor y / x \rfloor$ and +let $r$ represent the remainder $r = y - x \lfloor y / x \rfloor$. The following simple algorithm will be used to start the discussion. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Radix-$\beta$ Integer Division}. \\ +\textbf{Input}. integer $x$ and $y$ \\ +\textbf{Output}. $q = \lfloor y/x\rfloor, r = y - xq$ \\ +\hline \\ +1. $q \leftarrow 0$ \\ +2. $n \leftarrow \vert \vert y \vert \vert - \vert \vert x \vert \vert$ \\ +3. for $t$ from $n$ down to $0$ do \\ +\hspace{3mm}3.1 Maximize $k$ such that $kx\beta^t$ is less than or equal to $y$ and $(k + 1)x\beta^t$ is greater. \\ +\hspace{3mm}3.2 $q \leftarrow q + k\beta^t$ \\ +\hspace{3mm}3.3 $y \leftarrow y - kx\beta^t$ \\ +4. $r \leftarrow y$ \\ +5. Return($q, r$) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Radix-$\beta$ Integer Division} +\label{fig:raddiv} +\end{figure} + +As children we are taught this very simple algorithm for the case of $\beta = 10$. Almost instinctively several optimizations are taught for which +their reason of existing are never explained. For this example let $y = 5471$ represent the dividend and $x = 23$ represent the divisor. + +To find the first digit of the quotient the value of $k$ must be maximized such that $kx\beta^t$ is less than or equal to $y$ and +simultaneously $(k + 1)x\beta^t$ is greater than $y$. Implicitly $k$ is the maximum value the $t$'th digit of the quotient may have. The habitual method +used to find the maximum is to ``eyeball'' the two numbers, typically only the leading digits and quickly estimate a quotient. By only using leading +digits a much simpler division may be used to form an educated guess at what the value must be. In this case $k = \lfloor 54/23\rfloor = 2$ quickly +arises as a possible solution. Indeed $2x\beta^2 = 4600$ is less than $y = 5471$ and simultaneously $(k + 1)x\beta^2 = 6900$ is larger than $y$. +As a result $k\beta^2$ is added to the quotient which now equals $q = 200$ and $4600$ is subtracted from $y$ to give a remainder of $y = 841$. + +Again this process is repeated to produce the quotient digit $k = 3$ which makes the quotient $q = 200 + 3\beta = 230$ and the remainder +$y = 841 - 3x\beta = 181$. Finally the last iteration of the loop produces $k = 7$ which leads to the quotient $q = 230 + 7 = 237$ and the +remainder $y = 181 - 7x = 20$. The final quotient and remainder found are $q = 237$ and $r = y = 20$ which are indeed correct since +$237 \cdot 23 + 20 = 5471$ is true. + +\subsection{Quotient Estimation} +\label{sec:divest} +As alluded to earlier the quotient digit $k$ can be estimated from only the leading digits of both the divisor and dividend. When $p$ leading +digits are used from both the divisor and dividend to form an estimation the accuracy of the estimation rises as $p$ grows. Technically +speaking the estimation is based on assuming the lower $\vert \vert y \vert \vert - p$ and $\vert \vert x \vert \vert - p$ lower digits of the +dividend and divisor are zero. + +The value of the estimation may off by a few values in either direction and in general is fairly correct. A simplification \cite[pp. 271]{TAOCPV2} +of the estimation technique is to use $t + 1$ digits of the dividend and $t$ digits of the divisor, in particularly when $t = 1$. The estimate +using this technique is never too small. For the following proof let $t = \vert \vert y \vert \vert - 1$ and $s = \vert \vert x \vert \vert - 1$ +represent the most significant digits of the dividend and divisor respectively. + +\textbf{Proof.}\textit{ The quotient $\hat k = \lfloor (y_t\beta + y_{t-1}) / x_s \rfloor$ is greater than or equal to +$k = \lfloor y / (x \cdot \beta^{\vert \vert y \vert \vert - \vert \vert x \vert \vert - 1}) \rfloor$. } +The first obvious case is when $\hat k = \beta - 1$ in which case the proof is concluded since the real quotient cannot be larger. For all other +cases $\hat k = \lfloor (y_t\beta + y_{t-1}) / x_s \rfloor$ and $\hat k x_s \ge y_t\beta + y_{t-1} - x_s + 1$. The latter portion of the inequalility +$-x_s + 1$ arises from the fact that a truncated integer division will give the same quotient for at most $x_s - 1$ values. Next a series of +inequalities will prove the hypothesis. + +\begin{equation} +y - \hat k x \le y - \hat k x_s\beta^s +\end{equation} + +This is trivially true since $x \ge x_s\beta^s$. Next we replace $\hat kx_s\beta^s$ by the previous inequality for $\hat kx_s$. + +\begin{equation} +y - \hat k x \le y_t\beta^t + \ldots + y_0 - (y_t\beta^t + y_{t-1}\beta^{t-1} - x_s\beta^t + \beta^s) +\end{equation} + +By simplifying the previous inequality the following inequality is formed. + +\begin{equation} +y - \hat k x \le y_{t-2}\beta^{t-2} + \ldots + y_0 + x_s\beta^s - \beta^s +\end{equation} + +Subsequently, + +\begin{equation} +y_{t-2}\beta^{t-2} + \ldots + y_0 + x_s\beta^s - \beta^s < x_s\beta^s \le x +\end{equation} + +Which proves that $y - \hat kx \le x$ and by consequence $\hat k \ge k$ which concludes the proof. \textbf{QED} + + +\subsection{Normalized Integers} +For the purposes of division a normalized input is when the divisors leading digit $x_n$ is greater than or equal to $\beta / 2$. By multiplying both +$x$ and $y$ by $j = \lfloor (\beta / 2) / x_n \rfloor$ the quotient remains unchanged and the remainder is simply $j$ times the original +remainder. The purpose of normalization is to ensure the leading digit of the divisor is sufficiently large such that the estimated quotient will +lie in the domain of a single digit. Consider the maximum dividend $(\beta - 1) \cdot \beta + (\beta - 1)$ and the minimum divisor $\beta / 2$. + +\begin{equation} +{{\beta^2 - 1} \over { \beta / 2}} \le 2\beta - {2 \over \beta} +\end{equation} + +At most the quotient approaches $2\beta$, however, in practice this will not occur since that would imply the previous quotient digit was too small. + +\subsection{Radix-$\beta$ Division with Remainder} +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div}. \\ +\textbf{Input}. mp\_int $a, b$ \\ +\textbf{Output}. $c = \lfloor a/b \rfloor$, $d = a - bc$ \\ +\hline \\ +1. If $b = 0$ return(\textit{MP\_VAL}). \\ +2. If $\vert a \vert < \vert b \vert$ then do \\ +\hspace{3mm}2.1 $d \leftarrow a$ \\ +\hspace{3mm}2.2 $c \leftarrow 0$ \\ +\hspace{3mm}2.3 Return(\textit{MP\_OKAY}). \\ +\\ +Setup the quotient to receive the digits. \\ +3. Grow $q$ to $a.used + 2$ digits. \\ +4. $q \leftarrow 0$ \\ +5. $x \leftarrow \vert a \vert , y \leftarrow \vert b \vert$ \\ +6. $sign \leftarrow \left \lbrace \begin{array}{ll} + MP\_ZPOS & \mbox{if }a.sign = b.sign \\ + MP\_NEG & \mbox{otherwise} \\ + \end{array} \right .$ \\ +\\ +Normalize the inputs such that the leading digit of $y$ is greater than or equal to $\beta / 2$. \\ +7. $norm \leftarrow (lg(\beta) - 1) - (\lceil lg(y) \rceil \mbox{ (mod }lg(\beta)\mbox{)})$ \\ +8. $x \leftarrow x \cdot 2^{norm}, y \leftarrow y \cdot 2^{norm}$ \\ +\\ +Find the leading digit of the quotient. \\ +9. $n \leftarrow x.used - 1, t \leftarrow y.used - 1$ \\ +10. $y \leftarrow y \cdot \beta^{n - t}$ \\ +11. While ($x \ge y$) do \\ +\hspace{3mm}11.1 $q_{n - t} \leftarrow q_{n - t} + 1$ \\ +\hspace{3mm}11.2 $x \leftarrow x - y$ \\ +12. $y \leftarrow \lfloor y / \beta^{n-t} \rfloor$ \\ +\\ +Continued on the next page. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div} +\end{figure} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div} (continued). \\ +\textbf{Input}. mp\_int $a, b$ \\ +\textbf{Output}. $c = \lfloor a/b \rfloor$, $d = a - bc$ \\ +\hline \\ +Now find the remainder fo the digits. \\ +13. for $i$ from $n$ down to $(t + 1)$ do \\ +\hspace{3mm}13.1 If $i > x.used$ then jump to the next iteration of this loop. \\ +\hspace{3mm}13.2 If $x_{i} = y_{t}$ then \\ +\hspace{6mm}13.2.1 $q_{i - t - 1} \leftarrow \beta - 1$ \\ +\hspace{3mm}13.3 else \\ +\hspace{6mm}13.3.1 $\hat r \leftarrow x_{i} \cdot \beta + x_{i - 1}$ \\ +\hspace{6mm}13.3.2 $\hat r \leftarrow \lfloor \hat r / y_{t} \rfloor$ \\ +\hspace{6mm}13.3.3 $q_{i - t - 1} \leftarrow \hat r$ \\ +\hspace{3mm}13.4 $q_{i - t - 1} \leftarrow q_{i - t - 1} + 1$ \\ +\\ +Fixup quotient estimation. \\ +\hspace{3mm}13.5 Loop \\ +\hspace{6mm}13.5.1 $q_{i - t - 1} \leftarrow q_{i - t - 1} - 1$ \\ +\hspace{6mm}13.5.2 t$1 \leftarrow 0$ \\ +\hspace{6mm}13.5.3 t$1_0 \leftarrow y_{t - 1}, $ t$1_1 \leftarrow y_t,$ t$1.used \leftarrow 2$ \\ +\hspace{6mm}13.5.4 $t1 \leftarrow t1 \cdot q_{i - t - 1}$ \\ +\hspace{6mm}13.5.5 t$2_0 \leftarrow x_{i - 2}, $ t$2_1 \leftarrow x_{i - 1}, $ t$2_2 \leftarrow x_i, $ t$2.used \leftarrow 3$ \\ +\hspace{6mm}13.5.6 If $\vert t1 \vert > \vert t2 \vert$ then goto step 13.5. \\ +\hspace{3mm}13.6 t$1 \leftarrow y \cdot q_{i - t - 1}$ \\ +\hspace{3mm}13.7 t$1 \leftarrow $ t$1 \cdot \beta^{i - t - 1}$ \\ +\hspace{3mm}13.8 $x \leftarrow x - $ t$1$ \\ +\hspace{3mm}13.9 If $x.sign = MP\_NEG$ then \\ +\hspace{6mm}13.10 t$1 \leftarrow y$ \\ +\hspace{6mm}13.11 t$1 \leftarrow $ t$1 \cdot \beta^{i - t - 1}$ \\ +\hspace{6mm}13.12 $x \leftarrow x + $ t$1$ \\ +\hspace{6mm}13.13 $q_{i - t - 1} \leftarrow q_{i - t - 1} - 1$ \\ +\\ +Finalize the result. \\ +14. Clamp excess digits of $q$ \\ +15. $c \leftarrow q, c.sign \leftarrow sign$ \\ +16. $x.sign \leftarrow a.sign$ \\ +17. $d \leftarrow \lfloor x / 2^{norm} \rfloor$ \\ +18. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div (continued)} +\end{figure} +\textbf{Algorithm mp\_div.} +This algorithm will calculate quotient and remainder from an integer division given a dividend and divisor. The algorithm is a signed +division and will produce a fully qualified quotient and remainder. + +First the divisor $b$ must be non-zero which is enforced in step one. If the divisor is larger than the dividend than the quotient is implicitly +zero and the remainder is the dividend. + +After the first two trivial cases of inputs are handled the variable $q$ is setup to receive the digits of the quotient. Two unsigned copies of the +divisor $y$ and dividend $x$ are made as well. The core of the division algorithm is an unsigned division and will only work if the values are +positive. Now the two values $x$ and $y$ must be normalized such that the leading digit of $y$ is greater than or equal to $\beta / 2$. +This is performed by shifting both to the left by enough bits to get the desired normalization. + +At this point the division algorithm can begin producing digits of the quotient. Recall that maximum value of the estimation used is +$2\beta - {2 \over \beta}$ which means that a digit of the quotient must be first produced by another means. In this case $y$ is shifted +to the left (\textit{step ten}) so that it has the same number of digits as $x$. The loop on step eleven will subtract multiples of the +shifted copy of $y$ until $x$ is smaller. Since the leading digit of $y$ is greater than or equal to $\beta/2$ this loop will iterate at most two +times to produce the desired leading digit of the quotient. + +Now the remainder of the digits can be produced. The equation $\hat q = \lfloor {{x_i \beta + x_{i-1}}\over y_t} \rfloor$ is used to fairly +accurately approximate the true quotient digit. The estimation can in theory produce an estimation as high as $2\beta - {2 \over \beta}$ but by +induction the upper quotient digit is correct (\textit{as established on step eleven}) and the estimate must be less than $\beta$. + +Recall from section~\ref{sec:divest} that the estimation is never too low but may be too high. The next step of the estimation process is +to refine the estimation. The loop on step 13.5 uses $x_i\beta^2 + x_{i-1}\beta + x_{i-2}$ and $q_{i - t - 1}(y_t\beta + y_{t-1})$ as a higher +order approximation to adjust the quotient digit. + +After both phases of estimation the quotient digit may still be off by a value of one\footnote{This is similar to the error introduced +by optimizing Barrett reduction.}. Steps 13.6 and 13.7 subtract the multiple of the divisor from the dividend (\textit{Similar to step 3.3 of +algorithm~\ref{fig:raddiv}} and then subsequently add a multiple of the divisor if the quotient was too large. + +Now that the quotient has been determine finializing the result is a matter of clamping the quotient, fixing the sizes and de-normalizing the +remainder. An important aspect of this algorithm seemingly overlooked in other descriptions such as that of Algorithm 14.20 HAC \cite[pp. 598]{HAC} +is that when the estimations are being made (\textit{inside the loop on step 13.5}) that the digits $y_{t-1}$, $x_{i-2}$ and $x_{i-1}$ may lie +outside their respective boundaries. For example, if $t = 0$ or $i \le 1$ then the digits would be undefined. In those cases the digits should +respectively be replaced with a zero. + +EXAM,bn_mp_div.c + +The implementation of this algorithm differs slightly from the pseudo code presented previously. In this algorithm either of the quotient $c$ or +remainder $d$ may be passed as a \textbf{NULL} pointer which indicates their value is not desired. For example, the C code to call the division +algorithm with only the quotient is + +\begin{verbatim} +mp_div(&a, &b, &c, NULL); /* c = [a/b] */ +\end{verbatim} + +Lines @37,if@ and @42,if@ handle the two trivial cases of inputs which are division by zero and dividend smaller than the divisor +respectively. After the two trivial cases all of the temporary variables are initialized. Line @76,neg@ determines the sign of +the quotient and line @77,sign@ ensures that both $x$ and $y$ are positive. + +The number of bits in the leading digit is calculated on line @80,norm@. Implictly an mp\_int with $r$ digits will require $lg(\beta)(r-1) + k$ bits +of precision which when reduced modulo $lg(\beta)$ produces the value of $k$. In this case $k$ is the number of bits in the leading digit which is +exactly what is required. For the algorithm to operate $k$ must equal $lg(\beta) - 1$ and when it does not the inputs must be normalized by shifting +them to the left by $lg(\beta) - 1 - k$ bits. + +Throughout the variables $n$ and $t$ will represent the highest digit of $x$ and $y$ respectively. These are first used to produce the +leading digit of the quotient. The loop beginning on line @113,for@ will produce the remainder of the quotient digits. + +The conditional ``continue'' on line @114,if@ is used to prevent the algorithm from reading past the leading edge of $x$ which can occur when the +algorithm eliminates multiple non-zero digits in a single iteration. This ensures that $x_i$ is always non-zero since by definition the digits +above the $i$'th position $x$ must be zero in order for the quotient to be precise\footnote{Precise as far as integer division is concerned.}. + +Lines @142,t1@, @143,t1@ and @150,t2@ through @152,t2@ manually construct the high accuracy estimations by setting the digits of the two mp\_int +variables directly. + +\section{Single Digit Helpers} + +This section briefly describes a series of single digit helper algorithms which come in handy when working with small constants. All of +the helper functions assume the single digit input is positive and will treat them as such. + +\subsection{Single Digit Addition and Subtraction} + +Both addition and subtraction are performed by ``cheating'' and using mp\_set followed by the higher level addition or subtraction +algorithms. As a result these algorithms are subtantially simpler with a slight cost in performance. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_add\_d}. \\ +\textbf{Input}. mp\_int $a$ and a mp\_digit $b$ \\ +\textbf{Output}. $c = a + b$ \\ +\hline \\ +1. $t \leftarrow b$ (\textit{mp\_set}) \\ +2. $c \leftarrow a + t$ \\ +3. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_add\_d} +\end{figure} + +\textbf{Algorithm mp\_add\_d.} +This algorithm initiates a temporary mp\_int with the value of the single digit and uses algorithm mp\_add to add the two values together. + +EXAM,bn_mp_add_d.c + +Clever use of the letter 't'. + +\subsubsection{Subtraction} +The single digit subtraction algorithm mp\_sub\_d is essentially the same except it uses mp\_sub to subtract the digit from the mp\_int. + +\subsection{Single Digit Multiplication} +Single digit multiplication arises enough in division and radix conversion that it ought to be implement as a special case of the baseline +multiplication algorithm. Essentially this algorithm is a modified version of algorithm s\_mp\_mul\_digs where one of the multiplicands +only has one digit. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mul\_d}. \\ +\textbf{Input}. mp\_int $a$ and a mp\_digit $b$ \\ +\textbf{Output}. $c = ab$ \\ +\hline \\ +1. $pa \leftarrow a.used$ \\ +2. Grow $c$ to at least $pa + 1$ digits. \\ +3. $oldused \leftarrow c.used$ \\ +4. $c.used \leftarrow pa + 1$ \\ +5. $c.sign \leftarrow a.sign$ \\ +6. $\mu \leftarrow 0$ \\ +7. for $ix$ from $0$ to $pa - 1$ do \\ +\hspace{3mm}7.1 $\hat r \leftarrow \mu + a_{ix}b$ \\ +\hspace{3mm}7.2 $c_{ix} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}7.3 $\mu \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +8. $c_{pa} \leftarrow \mu$ \\ +9. for $ix$ from $pa + 1$ to $oldused$ do \\ +\hspace{3mm}9.1 $c_{ix} \leftarrow 0$ \\ +10. Clamp excess digits of $c$. \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mul\_d} +\end{figure} +\textbf{Algorithm mp\_mul\_d.} +This algorithm quickly multiplies an mp\_int by a small single digit value. It is specially tailored to the job and has a minimal of overhead. +Unlike the full multiplication algorithms this algorithm does not require any significnat temporary storage or memory allocations. + +EXAM,bn_mp_mul_d.c + +In this implementation the destination $c$ may point to the same mp\_int as the source $a$ since the result is written after the digit is +read from the source. This function uses pointer aliases $tmpa$ and $tmpc$ for the digits of $a$ and $c$ respectively. + +\subsection{Single Digit Division} +Like the single digit multiplication algorithm, single digit division is also a fairly common algorithm used in radix conversion. Since the +divisor is only a single digit a specialized variant of the division algorithm can be used to compute the quotient. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div\_d}. \\ +\textbf{Input}. mp\_int $a$ and a mp\_digit $b$ \\ +\textbf{Output}. $c = \lfloor a / b \rfloor, d = a - cb$ \\ +\hline \\ +1. If $b = 0$ then return(\textit{MP\_VAL}).\\ +2. If $b = 3$ then use algorithm mp\_div\_3 instead. \\ +3. Init $q$ to $a.used$ digits. \\ +4. $q.used \leftarrow a.used$ \\ +5. $q.sign \leftarrow a.sign$ \\ +6. $\hat w \leftarrow 0$ \\ +7. for $ix$ from $a.used - 1$ down to $0$ do \\ +\hspace{3mm}7.1 $\hat w \leftarrow \hat w \beta + a_{ix}$ \\ +\hspace{3mm}7.2 If $\hat w \ge b$ then \\ +\hspace{6mm}7.2.1 $t \leftarrow \lfloor \hat w / b \rfloor$ \\ +\hspace{6mm}7.2.2 $\hat w \leftarrow \hat w \mbox{ (mod }b\mbox{)}$ \\ +\hspace{3mm}7.3 else\\ +\hspace{6mm}7.3.1 $t \leftarrow 0$ \\ +\hspace{3mm}7.4 $q_{ix} \leftarrow t$ \\ +8. $d \leftarrow \hat w$ \\ +9. Clamp excess digits of $q$. \\ +10. $c \leftarrow q$ \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div\_d} +\end{figure} +\textbf{Algorithm mp\_div\_d.} +This algorithm divides the mp\_int $a$ by the single mp\_digit $b$ using an optimized approach. Essentially in every iteration of the +algorithm another digit of the dividend is reduced and another digit of quotient produced. Provided $b < \beta$ the value of $\hat w$ +after step 7.1 will be limited such that $0 \le \lfloor \hat w / b \rfloor < \beta$. + +If the divisor $b$ is equal to three a variant of this algorithm is used which is called mp\_div\_3. It replaces the division by three with +a multiplication by $\lfloor \beta / 3 \rfloor$ and the appropriate shift and residual fixup. In essence it is much like the Barrett reduction +from chapter seven. + +EXAM,bn_mp_div_d.c + +Like the implementation of algorithm mp\_div this algorithm allows either of the quotient or remainder to be passed as a \textbf{NULL} pointer to +indicate the respective value is not required. This allows a trivial single digit modular reduction algorithm, mp\_mod\_d to be created. + +The division and remainder on lines @44,/@ and @45,%@ can be replaced often by a single division on most processors. For example, the 32-bit x86 based +processors can divide a 64-bit quantity by a 32-bit quantity and produce the quotient and remainder simultaneously. Unfortunately the GCC +compiler does not recognize that optimization and will actually produce two function calls to find the quotient and remainder respectively. + +\subsection{Single Digit Root Extraction} + +Finding the $n$'th root of an integer is fairly easy as far as numerical analysis is concerned. Algorithms such as the Newton-Raphson approximation +(\ref{eqn:newton}) series will converge very quickly to a root for any continuous function $f(x)$. + +\begin{equation} +x_{i+1} = x_i - {f(x_i) \over f'(x_i)} +\label{eqn:newton} +\end{equation} + +In this case the $n$'th root is desired and $f(x) = x^n - a$ where $a$ is the integer of which the root is desired. The derivative of $f(x)$ is +simply $f'(x) = nx^{n - 1}$. Of particular importance is that this algorithm will be used over the integers not over the a more continuous domain +such as the real numbers. As a result the root found can be above the true root by few and must be manually adjusted. Ideally at the end of the +algorithm the $n$'th root $b$ of an integer $a$ is desired such that $b^n \le a$. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_n\_root}. \\ +\textbf{Input}. mp\_int $a$ and a mp\_digit $b$ \\ +\textbf{Output}. $c^b \le a$ \\ +\hline \\ +1. If $b$ is even and $a.sign = MP\_NEG$ return(\textit{MP\_VAL}). \\ +2. $sign \leftarrow a.sign$ \\ +3. $a.sign \leftarrow MP\_ZPOS$ \\ +4. t$2 \leftarrow 2$ \\ +5. Loop \\ +\hspace{3mm}5.1 t$1 \leftarrow $ t$2$ \\ +\hspace{3mm}5.2 t$3 \leftarrow $ t$1^{b - 1}$ \\ +\hspace{3mm}5.3 t$2 \leftarrow $ t$3 $ $\cdot$ t$1$ \\ +\hspace{3mm}5.4 t$2 \leftarrow $ t$2 - a$ \\ +\hspace{3mm}5.5 t$3 \leftarrow $ t$3 \cdot b$ \\ +\hspace{3mm}5.6 t$3 \leftarrow \lfloor $t$2 / $t$3 \rfloor$ \\ +\hspace{3mm}5.7 t$2 \leftarrow $ t$1 - $ t$3$ \\ +\hspace{3mm}5.8 If t$1 \ne $ t$2$ then goto step 5. \\ +6. Loop \\ +\hspace{3mm}6.1 t$2 \leftarrow $ t$1^b$ \\ +\hspace{3mm}6.2 If t$2 > a$ then \\ +\hspace{6mm}6.2.1 t$1 \leftarrow $ t$1 - 1$ \\ +\hspace{6mm}6.2.2 Goto step 6. \\ +7. $a.sign \leftarrow sign$ \\ +8. $c \leftarrow $ t$1$ \\ +9. $c.sign \leftarrow sign$ \\ +10. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_n\_root} +\end{figure} +\textbf{Algorithm mp\_n\_root.} +This algorithm finds the integer $n$'th root of an input using the Newton-Raphson approach. It is partially optimized based on the observation +that the numerator of ${f(x) \over f'(x)}$ can be derived from a partial denominator. That is at first the denominator is calculated by finding +$x^{b - 1}$. This value can then be multiplied by $x$ and have $a$ subtracted from it to find the numerator. This saves a total of $b - 1$ +multiplications by t$1$ inside the loop. + +The initial value of the approximation is t$2 = 2$ which allows the algorithm to start with very small values and quickly converge on the +root. Ideally this algorithm is meant to find the $n$'th root of an input where $n$ is bounded by $2 \le n \le 5$. + +EXAM,bn_mp_n_root.c + +\section{Random Number Generation} + +Random numbers come up in a variety of activities from public key cryptography to simple simulations and various randomized algorithms. Pollard-Rho +factoring for example, can make use of random values as starting points to find factors of a composite integer. In this case the algorithm presented +is solely for simulations and not intended for cryptographic use. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_rand}. \\ +\textbf{Input}. An integer $b$ \\ +\textbf{Output}. A pseudo-random number of $b$ digits \\ +\hline \\ +1. $a \leftarrow 0$ \\ +2. If $b \le 0$ return(\textit{MP\_OKAY}) \\ +3. Pick a non-zero random digit $d$. \\ +4. $a \leftarrow a + d$ \\ +5. for $ix$ from 1 to $d - 1$ do \\ +\hspace{3mm}5.1 $a \leftarrow a \cdot \beta$ \\ +\hspace{3mm}5.2 Pick a random digit $d$. \\ +\hspace{3mm}5.3 $a \leftarrow a + d$ \\ +6. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_rand} +\end{figure} +\textbf{Algorithm mp\_rand.} +This algorithm produces a pseudo-random integer of $b$ digits. By ensuring that the first digit is non-zero the algorithm also guarantees that the +final result has at least $b$ digits. It relies heavily on a third-part random number generator which should ideally generate uniformly all of +the integers from $0$ to $\beta - 1$. + +EXAM,bn_mp_rand.c + +\section{Formatted Representations} +The ability to emit a radix-$n$ textual representation of an integer is useful for interacting with human parties. For example, the ability to +be given a string of characters such as ``114585'' and turn it into the radix-$\beta$ equivalent would make it easier to enter numbers +into a program. + +\subsection{Reading Radix-n Input} +For the purposes of this text we will assume that a simple lower ASCII map (\ref{fig:ASC}) is used for the values of from $0$ to $63$ to +printable characters. For example, when the character ``N'' is read it represents the integer $23$. The first $16$ characters of the +map are for the common representations up to hexadecimal. After that they match the ``base64'' encoding scheme which are suitable chosen +such that they are printable. While outputting as base64 may not be too helpful for human operators it does allow communication via non binary +mediums. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{cc|cc|cc|cc} +\hline \textbf{Value} & \textbf{Char} & \textbf{Value} & \textbf{Char} & \textbf{Value} & \textbf{Char} & \textbf{Value} & \textbf{Char} \\ +\hline +0 & 0 & 1 & 1 & 2 & 2 & 3 & 3 \\ +4 & 4 & 5 & 5 & 6 & 6 & 7 & 7 \\ +8 & 8 & 9 & 9 & 10 & A & 11 & B \\ +12 & C & 13 & D & 14 & E & 15 & F \\ +16 & G & 17 & H & 18 & I & 19 & J \\ +20 & K & 21 & L & 22 & M & 23 & N \\ +24 & O & 25 & P & 26 & Q & 27 & R \\ +28 & S & 29 & T & 30 & U & 31 & V \\ +32 & W & 33 & X & 34 & Y & 35 & Z \\ +36 & a & 37 & b & 38 & c & 39 & d \\ +40 & e & 41 & f & 42 & g & 43 & h \\ +44 & i & 45 & j & 46 & k & 47 & l \\ +48 & m & 49 & n & 50 & o & 51 & p \\ +52 & q & 53 & r & 54 & s & 55 & t \\ +56 & u & 57 & v & 58 & w & 59 & x \\ +60 & y & 61 & z & 62 & $+$ & 63 & $/$ \\ +\hline +\end{tabular} +\end{center} +\caption{Lower ASCII Map} +\label{fig:ASC} +\end{figure} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_read\_radix}. \\ +\textbf{Input}. A string $str$ of length $sn$ and radix $r$. \\ +\textbf{Output}. The radix-$\beta$ equivalent mp\_int. \\ +\hline \\ +1. If $r < 2$ or $r > 64$ return(\textit{MP\_VAL}). \\ +2. $ix \leftarrow 0$ \\ +3. If $str_0 =$ ``-'' then do \\ +\hspace{3mm}3.1 $ix \leftarrow ix + 1$ \\ +\hspace{3mm}3.2 $sign \leftarrow MP\_NEG$ \\ +4. else \\ +\hspace{3mm}4.1 $sign \leftarrow MP\_ZPOS$ \\ +5. $a \leftarrow 0$ \\ +6. for $iy$ from $ix$ to $sn - 1$ do \\ +\hspace{3mm}6.1 Let $y$ denote the position in the map of $str_{iy}$. \\ +\hspace{3mm}6.2 If $str_{iy}$ is not in the map or $y \ge r$ then goto step 7. \\ +\hspace{3mm}6.3 $a \leftarrow a \cdot r$ \\ +\hspace{3mm}6.4 $a \leftarrow a + y$ \\ +7. If $a \ne 0$ then $a.sign \leftarrow sign$ \\ +8. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_read\_radix} +\end{figure} +\textbf{Algorithm mp\_read\_radix.} +This algorithm will read an ASCII string and produce the radix-$\beta$ mp\_int representation of the same integer. A minus symbol ``-'' may precede the +string to indicate the value is negative, otherwise it is assumed to be positive. The algorithm will read up to $sn$ characters from the input +and will stop when it reads a character it cannot map the algorithm stops reading characters from the string. This allows numbers to be embedded +as part of larger input without any significant problem. + +EXAM,bn_mp_read_radix.c + +\subsection{Generating Radix-$n$ Output} +Generating radix-$n$ output is fairly trivial with a division and remainder algorithm. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_toradix}. \\ +\textbf{Input}. A mp\_int $a$ and an integer $r$\\ +\textbf{Output}. The radix-$r$ representation of $a$ \\ +\hline \\ +1. If $r < 2$ or $r > 64$ return(\textit{MP\_VAL}). \\ +2. If $a = 0$ then $str = $ ``$0$'' and return(\textit{MP\_OKAY}). \\ +3. $t \leftarrow a$ \\ +4. $str \leftarrow$ ``'' \\ +5. if $t.sign = MP\_NEG$ then \\ +\hspace{3mm}5.1 $str \leftarrow str + $ ``-'' \\ +\hspace{3mm}5.2 $t.sign = MP\_ZPOS$ \\ +6. While ($t \ne 0$) do \\ +\hspace{3mm}6.1 $d \leftarrow t \mbox{ (mod }r\mbox{)}$ \\ +\hspace{3mm}6.2 $t \leftarrow \lfloor t / r \rfloor$ \\ +\hspace{3mm}6.3 Look up $d$ in the map and store the equivalent character in $y$. \\ +\hspace{3mm}6.4 $str \leftarrow str + y$ \\ +7. If $str_0 = $``$-$'' then \\ +\hspace{3mm}7.1 Reverse the digits $str_1, str_2, \ldots str_n$. \\ +8. Otherwise \\ +\hspace{3mm}8.1 Reverse the digits $str_0, str_1, \ldots str_n$. \\ +9. Return(\textit{MP\_OKAY}).\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_toradix} +\end{figure} +\textbf{Algorithm mp\_toradix.} +This algorithm computes the radix-$r$ representation of an mp\_int $a$. The ``digits'' of the representation are extracted by reducing +successive powers of $\lfloor a / r^k \rfloor$ the input modulo $r$ until $r^k > a$. Note that instead of actually dividing by $r^k$ in +each iteration the quotient $\lfloor a / r \rfloor$ is saved for the next iteration. As a result a series of trivial $n \times 1$ divisions +are required instead of a series of $n \times k$ divisions. One design flaw of this approach is that the digits are produced in the reverse order +(see~\ref{fig:mpradix}). To remedy this flaw the digits must be swapped or simply ``reversed''. + +\begin{figure} +\begin{center} +\begin{tabular}{|c|c|c|} +\hline \textbf{Value of $a$} & \textbf{Value of $d$} & \textbf{Value of $str$} \\ +\hline $1234$ & -- & -- \\ +\hline $123$ & $4$ & ``4'' \\ +\hline $12$ & $3$ & ``43'' \\ +\hline $1$ & $2$ & ``432'' \\ +\hline $0$ & $1$ & ``4321'' \\ +\hline +\end{tabular} +\end{center} +\caption{Example of Algorithm mp\_toradix.} +\label{fig:mpradix} +\end{figure} + +EXAM,bn_mp_toradix.c + +\chapter{Number Theoretic Algorithms} +This chapter discusses several fundamental number theoretic algorithms such as the greatest common divisor, least common multiple and Jacobi +symbol computation. These algorithms arise as essential components in several key cryptographic algorithms such as the RSA public key algorithm and +various Sieve based factoring algorithms. + +\section{Greatest Common Divisor} +The greatest common divisor of two integers $a$ and $b$, often denoted as $(a, b)$ is the largest integer $k$ that is a proper divisor of +both $a$ and $b$. That is, $k$ is the largest integer such that $0 \equiv a \mbox{ (mod }k\mbox{)}$ and $0 \equiv b \mbox{ (mod }k\mbox{)}$ occur +simultaneously. + +The most common approach (cite) is to reduce one input modulo another. That is if $a$ and $b$ are divisible by some integer $k$ and if $qa + r = b$ then +$r$ is also divisible by $k$. The reduction pattern follows $\left < a , b \right > \rightarrow \left < b, a \mbox{ mod } b \right >$. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Greatest Common Divisor (I)}. \\ +\textbf{Input}. Two positive integers $a$ and $b$ greater than zero. \\ +\textbf{Output}. The greatest common divisor $(a, b)$. \\ +\hline \\ +1. While ($b > 0$) do \\ +\hspace{3mm}1.1 $r \leftarrow a \mbox{ (mod }b\mbox{)}$ \\ +\hspace{3mm}1.2 $a \leftarrow b$ \\ +\hspace{3mm}1.3 $b \leftarrow r$ \\ +2. Return($a$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Greatest Common Divisor (I)} +\label{fig:gcd1} +\end{figure} + +This algorithm will quickly converge on the greatest common divisor since the residue $r$ tends diminish rapidly. However, divisions are +relatively expensive operations to perform and should ideally be avoided. There is another approach based on a similar relationship of +greatest common divisors. The faster approach is based on the observation that if $k$ divides both $a$ and $b$ it will also divide $a - b$. +In particular, we would like $a - b$ to decrease in magnitude which implies that $b \ge a$. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Greatest Common Divisor (II)}. \\ +\textbf{Input}. Two positive integers $a$ and $b$ greater than zero. \\ +\textbf{Output}. The greatest common divisor $(a, b)$. \\ +\hline \\ +1. While ($b > 0$) do \\ +\hspace{3mm}1.1 Swap $a$ and $b$ such that $a$ is the smallest of the two. \\ +\hspace{3mm}1.2 $b \leftarrow b - a$ \\ +2. Return($a$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Greatest Common Divisor (II)} +\label{fig:gcd2} +\end{figure} + +\textbf{Proof} \textit{Algorithm~\ref{fig:gcd2} will return the greatest common divisor of $a$ and $b$.} +The algorithm in figure~\ref{fig:gcd2} will eventually terminate since $b \ge a$ the subtraction in step 1.2 will be a value less than $b$. In other +words in every iteration that tuple $\left < a, b \right >$ decrease in magnitude until eventually $a = b$. Since both $a$ and $b$ are always +divisible by the greatest common divisor (\textit{until the last iteration}) and in the last iteration of the algorithm $b = 0$, therefore, in the +second to last iteration of the algorithm $b = a$ and clearly $(a, a) = a$ which concludes the proof. \textbf{QED}. + +As a matter of practicality algorithm \ref{fig:gcd1} decreases far too slowly to be useful. Specially if $b$ is much larger than $a$ such that +$b - a$ is still very much larger than $a$. A simple addition to the algorithm is to divide $b - a$ by a power of some integer $p$ which does +not divide the greatest common divisor but will divide $b - a$. In this case ${b - a} \over p$ is also an integer and still divisible by +the greatest common divisor. + +However, instead of factoring $b - a$ to find a suitable value of $p$ the powers of $p$ can be removed from $a$ and $b$ that are in common first. +Then inside the loop whenever $b - a$ is divisible by some power of $p$ it can be safely removed. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Greatest Common Divisor (III)}. \\ +\textbf{Input}. Two positive integers $a$ and $b$ greater than zero. \\ +\textbf{Output}. The greatest common divisor $(a, b)$. \\ +\hline \\ +1. $k \leftarrow 0$ \\ +2. While $a$ and $b$ are both divisible by $p$ do \\ +\hspace{3mm}2.1 $a \leftarrow \lfloor a / p \rfloor$ \\ +\hspace{3mm}2.2 $b \leftarrow \lfloor b / p \rfloor$ \\ +\hspace{3mm}2.3 $k \leftarrow k + 1$ \\ +3. While $a$ is divisible by $p$ do \\ +\hspace{3mm}3.1 $a \leftarrow \lfloor a / p \rfloor$ \\ +4. While $b$ is divisible by $p$ do \\ +\hspace{3mm}4.1 $b \leftarrow \lfloor b / p \rfloor$ \\ +5. While ($b > 0$) do \\ +\hspace{3mm}5.1 Swap $a$ and $b$ such that $a$ is the smallest of the two. \\ +\hspace{3mm}5.2 $b \leftarrow b - a$ \\ +\hspace{3mm}5.3 While $b$ is divisible by $p$ do \\ +\hspace{6mm}5.3.1 $b \leftarrow \lfloor b / p \rfloor$ \\ +6. Return($a \cdot p^k$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Greatest Common Divisor (III)} +\label{fig:gcd3} +\end{figure} + +This algorithm is based on the first except it removes powers of $p$ first and inside the main loop to ensure the tuple $\left < a, b \right >$ +decreases more rapidly. The first loop on step two removes powers of $p$ that are in common. A count, $k$, is kept which will present a common +divisor of $p^k$. After step two the remaining common divisor of $a$ and $b$ cannot be divisible by $p$. This means that $p$ can be safely +divided out of the difference $b - a$ so long as the division leaves no remainder. + +In particular the value of $p$ should be chosen such that the division on step 5.3.1 occur often. It also helps that division by $p$ be easy +to compute. The ideal choice of $p$ is two since division by two amounts to a right logical shift. Another important observation is that by +step five both $a$ and $b$ are odd. Therefore, the diffrence $b - a$ must be even which means that each iteration removes one bit from the +largest of the pair. + +\subsection{Complete Greatest Common Divisor} +The algorithms presented so far cannot handle inputs which are zero or negative. The following algorithm can handle all input cases properly +and will produce the greatest common divisor. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_gcd}. \\ +\textbf{Input}. mp\_int $a$ and $b$ \\ +\textbf{Output}. The greatest common divisor $c = (a, b)$. \\ +\hline \\ +1. If $a = 0$ and $b \ne 0$ then \\ +\hspace{3mm}1.1 $c \leftarrow b$ \\ +\hspace{3mm}1.2 Return(\textit{MP\_OKAY}). \\ +2. If $a \ne 0$ and $b = 0$ then \\ +\hspace{3mm}2.1 $c \leftarrow a$ \\ +\hspace{3mm}2.2 Return(\textit{MP\_OKAY}). \\ +3. If $a = b = 0$ then \\ +\hspace{3mm}3.1 $c \leftarrow 1$ \\ +\hspace{3mm}3.2 Return(\textit{MP\_OKAY}). \\ +4. $u \leftarrow \vert a \vert, v \leftarrow \vert b \vert$ \\ +5. $k \leftarrow 0$ \\ +6. While $u.used > 0$ and $v.used > 0$ and $u_0 \equiv v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}6.1 $k \leftarrow k + 1$ \\ +\hspace{3mm}6.2 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +\hspace{3mm}6.3 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +7. While $u.used > 0$ and $u_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}7.1 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +8. While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}8.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +9. While $v.used > 0$ \\ +\hspace{3mm}9.1 If $\vert u \vert > \vert v \vert$ then \\ +\hspace{6mm}9.1.1 Swap $u$ and $v$. \\ +\hspace{3mm}9.2 $v \leftarrow \vert v \vert - \vert u \vert$ \\ +\hspace{3mm}9.3 While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{6mm}9.3.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +10. $c \leftarrow u \cdot 2^k$ \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_gcd} +\end{figure} +\textbf{Algorithm mp\_gcd.} +This algorithm will produce the greatest common divisor of two mp\_ints $a$ and $b$. The algorithm was originally based on Algorithm B of +Knuth \cite[pp. 338]{TAOCPV2} but has been modified to be simpler to explain. In theory it achieves the same asymptotic working time as +Algorithm B and in practice this appears to be true. + +The first three steps handle the cases where either one of or both inputs are zero. If either input is zero the greatest common divisor is the +largest input or zero if they are both zero. If the inputs are not trivial than $u$ and $v$ are assigned the absolute values of +$a$ and $b$ respectively and the algorithm will proceed to reduce the pair. + +Step six will divide out any common factors of two and keep track of the count in the variable $k$. After this step two is no longer a +factor of the remaining greatest common divisor between $u$ and $v$ and can be safely evenly divided out of either whenever they are even. Step +seven and eight ensure that the $u$ and $v$ respectively have no more factors of two. At most only one of the while loops will iterate since +they cannot both be even. + +By step nine both of $u$ and $v$ are odd which is required for the inner logic. First the pair are swapped such that $v$ is equal to +or greater than $u$. This ensures that the subtraction on step 9.2 will always produce a positive and even result. Step 9.3 removes any +factors of two from the difference $u$ to ensure that in the next iteration of the loop both are once again odd. + +After $v = 0$ occurs the variable $u$ has the greatest common divisor of the pair $\left < u, v \right >$ just after step six. The result +must be adjusted by multiplying by the common factors of two ($2^k$) removed earlier. + +EXAM,bn_mp_gcd.c + +This function makes use of the macros mp\_iszero and mp\_iseven. The former evaluates to $1$ if the input mp\_int is equivalent to the +integer zero otherwise it evaluates to $0$. The latter evaluates to $1$ if the input mp\_int represents a non-zero even integer otherwise +it evaluates to $0$. Note that just because mp\_iseven may evaluate to $0$ does not mean the input is odd, it could also be zero. The three +trivial cases of inputs are handled on lines @25,zero@ through @34,}@. After those lines the inputs are assumed to be non-zero. + +Lines @36,if@ and @40,if@ make local copies $u$ and $v$ of the inputs $a$ and $b$ respectively. At this point the common factors of two +must be divided out of the two inputs. The while loop on line @49,while@ iterates so long as both are even. The local integer $k$ is used to +keep track of how many factors of $2$ are pulled out of both values. It is assumed that the number of factors will not exceed the maximum +value of a C ``int'' data type\footnote{Strictly speaking no array in C may have more than entries than are accessible by an ``int'' so this is not +a limitation.}. + +At this point there are no more common factors of two in the two values. The while loops on lines @60,while@ and @65,while@ remove any independent +factors of two such that both $u$ and $v$ are guaranteed to be an odd integer before hitting the main body of the algorithm. The while loop +on line @71, while@ performs the reduction of the pair until $v$ is equal to zero. The unsigned comparison and subtraction algorithms are used in +place of the full signed routines since both values are guaranteed to be positive and the result of the subtraction is guaranteed to be non-negative. + +\section{Least Common Multiple} +The least common multiple of a pair of integers is their product divided by their greatest common divisor. For two integers $a$ and $b$ the +least common multiple is normally denoted as $[ a, b ]$ and numerically equivalent to ${ab} \over {(a, b)}$. For example, if $a = 2 \cdot 2 \cdot 3 = 12$ +and $b = 2 \cdot 3 \cdot 3 \cdot 7 = 126$ the least common multiple is ${126 \over {(12, 126)}} = {126 \over 6} = 21$. + +The least common multiple arises often in coding theory as well as number theory. If two functions have periods of $a$ and $b$ respectively they will +collide, that is be in synchronous states, after only $[ a, b ]$ iterations. This is why, for example, random number generators based on +Linear Feedback Shift Registers (LFSR) tend to use registers with periods which are co-prime (\textit{e.g. the greatest common divisor is one.}). +Similarly in number theory if a composite $n$ has two prime factors $p$ and $q$ then maximal order of any unit of $\Z/n\Z$ will be $[ p - 1, q - 1] $. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_lcm}. \\ +\textbf{Input}. mp\_int $a$ and $b$ \\ +\textbf{Output}. The least common multiple $c = [a, b]$. \\ +\hline \\ +1. $c \leftarrow (a, b)$ \\ +2. $t \leftarrow a \cdot b$ \\ +3. $c \leftarrow \lfloor t / c \rfloor$ \\ +4. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_lcm} +\end{figure} +\textbf{Algorithm mp\_lcm.} +This algorithm computes the least common multiple of two mp\_int inputs $a$ and $b$. It computes the least common multiple directly by +dividing the product of the two inputs by their greatest common divisor. + +EXAM,bn_mp_lcm.c + +\section{Jacobi Symbol Computation} +To explain the Jacobi Symbol we shall first discuss the Legendre function\footnote{Arrg. What is the name of this?} off which the Jacobi symbol is +defined. The Legendre function computes whether or not an integer $a$ is a quadratic residue modulo an odd prime $p$. Numerically it is +equivalent to equation \ref{eqn:legendre}. + +\begin{equation} +a^{(p-1)/2} \equiv \begin{array}{rl} + -1 & \mbox{if }a\mbox{ is a quadratic non-residue.} \\ + 0 & \mbox{if }a\mbox{ divides }p\mbox{.} \\ + 1 & \mbox{if }a\mbox{ is a quadratic residue}. + \end{array} \mbox{ (mod }p\mbox{)} +\label{eqn:legendre} +\end{equation} + +\textbf{Proof.} \textit{Equation \ref{eqn:legendre} correctly identifies the residue status of an integer $a$ modulo a prime $p$.} +An integer $a$ is a quadratic residue if the following equation has a solution. + +\begin{equation} +x^2 \equiv a \mbox{ (mod }p\mbox{)} +\label{eqn:root} +\end{equation} + +Consider the following equation. + +\begin{equation} +0 \equiv x^{p-1} - 1 \equiv \left \lbrace \left (x^2 \right )^{(p-1)/2} - a^{(p-1)/2} \right \rbrace + \left ( a^{(p-1)/2} - 1 \right ) \mbox{ (mod }p\mbox{)} +\label{eqn:rooti} +\end{equation} + +Whether equation \ref{eqn:root} has a solution or not equation \ref{eqn:rooti} is always true. If $a^{(p-1)/2} - 1 \equiv 0 \mbox{ (mod }p\mbox{)}$ +then the quantity in the braces must be zero. By reduction, + +\begin{eqnarray} +\left (x^2 \right )^{(p-1)/2} - a^{(p-1)/2} \equiv 0 \nonumber \\ +\left (x^2 \right )^{(p-1)/2} \equiv a^{(p-1)/2} \nonumber \\ +x^2 \equiv a \mbox{ (mod }p\mbox{)} +\end{eqnarray} + +As a result there must be a solution to the quadratic equation and in turn $a$ must be a quadratic residue. If $a$ does not divide $p$ and $a$ +is not a quadratic residue then the only other value $a^{(p-1)/2}$ may be congruent to is $-1$ since +\begin{equation} +0 \equiv a^{p - 1} - 1 \equiv (a^{(p-1)/2} + 1)(a^{(p-1)/2} - 1) \mbox{ (mod }p\mbox{)} +\end{equation} +One of the terms on the right hand side must be zero. \textbf{QED} + +\subsection{Jacobi Symbol} +The Jacobi symbol is a generalization of the Legendre function for any odd non prime moduli $p$ greater than 2. If $p = \prod_{i=0}^n p_i$ then +the Jacobi symbol $\left ( { a \over p } \right )$ is equal to the following equation. + +\begin{equation} +\left ( { a \over p } \right ) = \left ( { a \over p_0} \right ) \left ( { a \over p_1} \right ) \ldots \left ( { a \over p_n} \right ) +\end{equation} + +By inspection if $p$ is prime the Jacobi symbol is equivalent to the Legendre function. The following facts\footnote{See HAC \cite[pp. 72-74]{HAC} for +further details.} will be used to derive an efficient Jacobi symbol algorithm. Where $p$ is an odd integer greater than two and $a, b \in \Z$ the +following are true. + +\begin{enumerate} +\item $\left ( { a \over p} \right )$ equals $-1$, $0$ or $1$. +\item $\left ( { ab \over p} \right ) = \left ( { a \over p} \right )\left ( { b \over p} \right )$. +\item If $a \equiv b$ then $\left ( { a \over p} \right ) = \left ( { b \over p} \right )$. +\item $\left ( { 2 \over p} \right )$ equals $1$ if $p \equiv 1$ or $7 \mbox{ (mod }8\mbox{)}$. Otherwise, it equals $-1$. +\item $\left ( { a \over p} \right ) \equiv \left ( { p \over a} \right ) \cdot (-1)^{(p-1)(a-1)/4}$. More specifically +$\left ( { a \over p} \right ) = \left ( { p \over a} \right )$ if $p \equiv a \equiv 1 \mbox{ (mod }4\mbox{)}$. +\end{enumerate} + +Using these facts if $a = 2^k \cdot a'$ then + +\begin{eqnarray} +\left ( { a \over p } \right ) = \left ( {{2^k} \over p } \right ) \left ( {a' \over p} \right ) \nonumber \\ + = \left ( {2 \over p } \right )^k \left ( {a' \over p} \right ) +\label{eqn:jacobi} +\end{eqnarray} + +By fact five, + +\begin{equation} +\left ( { a \over p } \right ) = \left ( { p \over a } \right ) \cdot (-1)^{(p-1)(a-1)/4} +\end{equation} + +Subsequently by fact three since $p \equiv (p \mbox{ mod }a) \mbox{ (mod }a\mbox{)}$ then + +\begin{equation} +\left ( { a \over p } \right ) = \left ( { {p \mbox{ mod } a} \over a } \right ) \cdot (-1)^{(p-1)(a-1)/4} +\end{equation} + +By putting both observations into equation \ref{eqn:jacobi} the following simplified equation is formed. + +\begin{equation} +\left ( { a \over p } \right ) = \left ( {2 \over p } \right )^k \left ( {{p\mbox{ mod }a'} \over a'} \right ) \cdot (-1)^{(p-1)(a'-1)/4} +\end{equation} + +The value of $\left ( {{p \mbox{ mod }a'} \over a'} \right )$ can be found by using the same equation recursively. The value of +$\left ( {2 \over p } \right )^k$ equals $1$ if $k$ is even otherwise it equals $\left ( {2 \over p } \right )$. Using this approach the +factors of $p$ do not have to be known. Furthermore, if $(a, p) = 1$ then the algorithm will terminate when the recursion requests the +Jacobi symbol computation of $\left ( {1 \over a'} \right )$ which is simply $1$. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_jacobi}. \\ +\textbf{Input}. mp\_int $a$ and $p$, $a \ge 0$, $p \ge 3$, $p \equiv 1 \mbox{ (mod }2\mbox{)}$ \\ +\textbf{Output}. The Jacobi symbol $c = \left ( {a \over p } \right )$. \\ +\hline \\ +1. If $a = 0$ then \\ +\hspace{3mm}1.1 $c \leftarrow 0$ \\ +\hspace{3mm}1.2 Return(\textit{MP\_OKAY}). \\ +2. If $a = 1$ then \\ +\hspace{3mm}2.1 $c \leftarrow 1$ \\ +\hspace{3mm}2.2 Return(\textit{MP\_OKAY}). \\ +3. $a' \leftarrow a$ \\ +4. $k \leftarrow 0$ \\ +5. While $a'.used > 0$ and $a'_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}5.1 $k \leftarrow k + 1$ \\ +\hspace{3mm}5.2 $a' \leftarrow \lfloor a' / 2 \rfloor$ \\ +6. If $k \equiv 0 \mbox{ (mod }2\mbox{)}$ then \\ +\hspace{3mm}6.1 $s \leftarrow 1$ \\ +7. else \\ +\hspace{3mm}7.1 $r \leftarrow p_0 \mbox{ (mod }8\mbox{)}$ \\ +\hspace{3mm}7.2 If $r = 1$ or $r = 7$ then \\ +\hspace{6mm}7.2.1 $s \leftarrow 1$ \\ +\hspace{3mm}7.3 else \\ +\hspace{6mm}7.3.1 $s \leftarrow -1$ \\ +8. If $p_0 \equiv a'_0 \equiv 3 \mbox{ (mod }4\mbox{)}$ then \\ +\hspace{3mm}8.1 $s \leftarrow -s$ \\ +9. If $a' \ne 1$ then \\ +\hspace{3mm}9.1 $p' \leftarrow p \mbox{ (mod }a'\mbox{)}$ \\ +\hspace{3mm}9.2 $s \leftarrow s \cdot \mbox{mp\_jacobi}(p', a')$ \\ +10. $c \leftarrow s$ \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_jacobi} +\end{figure} +\textbf{Algorithm mp\_jacobi.} +This algorithm computes the Jacobi symbol for an arbitrary positive integer $a$ with respect to an odd integer $p$ greater than three. The algorithm +is based on algorithm 2.149 of HAC \cite[pp. 73]{HAC}. + +Step numbers one and two handle the trivial cases of $a = 0$ and $a = 1$ respectively. Step five determines the number of two factors in the +input $a$. If $k$ is even than the term $\left ( { 2 \over p } \right )^k$ must always evaluate to one. If $k$ is odd than the term evaluates to one +if $p_0$ is congruent to one or seven modulo eight, otherwise it evaluates to $-1$. After the the $\left ( { 2 \over p } \right )^k$ term is handled +the $(-1)^{(p-1)(a'-1)/4}$ is computed and multiplied against the current product $s$. The latter term evaluates to one if both $p$ and $a'$ +are congruent to one modulo four, otherwise it evaluates to negative one. + +By step nine if $a'$ does not equal one a recursion is required. Step 9.1 computes $p' \equiv p \mbox{ (mod }a'\mbox{)}$ and will recurse to compute +$\left ( {p' \over a'} \right )$ which is multiplied against the current Jacobi product. + +EXAM,bn_mp_jacobi.c + +As a matter of practicality the variable $a'$ as per the pseudo-code is reprensented by the variable $a1$ since the $'$ symbol is not valid for a C +variable name character. + +The two simple cases of $a = 0$ and $a = 1$ are handled at the very beginning to simplify the algorithm. If the input is non-trivial the algorithm +has to proceed compute the Jacobi. The variable $s$ is used to hold the current Jacobi product. Note that $s$ is merely a C ``int'' data type since +the values it may obtain are merely $-1$, $0$ and $1$. + +After a local copy of $a$ is made all of the factors of two are divided out and the total stored in $k$. Technically only the least significant +bit of $k$ is required, however, it makes the algorithm simpler to follow to perform an addition. In practice an exclusive-or and addition have the same +processor requirements and neither is faster than the other. + +Line @59, if@ through @70, }@ determines the value of $\left ( { 2 \over p } \right )^k$. If the least significant bit of $k$ is zero than +$k$ is even and the value is one. Otherwise, the value of $s$ depends on which residue class $p$ belongs to modulo eight. The value of +$(-1)^{(p-1)(a'-1)/4}$ is compute and multiplied against $s$ on lines @73, if@ through @75, }@. + +Finally, if $a1$ does not equal one the algorithm must recurse and compute $\left ( {p' \over a'} \right )$. + +\textit{-- Comment about default $s$ and such...} + +\section{Modular Inverse} +\label{sec:modinv} +The modular inverse of a number actually refers to the modular multiplicative inverse. Essentially for any integer $a$ such that $(a, p) = 1$ there +exist another integer $b$ such that $ab \equiv 1 \mbox{ (mod }p\mbox{)}$. The integer $b$ is called the multiplicative inverse of $a$ which is +denoted as $b = a^{-1}$. Technically speaking modular inversion is a well defined operation for any finite ring or field not just for rings and +fields of integers. However, the former will be the matter of discussion. + +The simplest approach is to compute the algebraic inverse of the input. That is to compute $b \equiv a^{\Phi(p) - 1}$. If $\Phi(p)$ is the +order of the multiplicative subgroup modulo $p$ then $b$ must be the multiplicative inverse of $a$. The proof of which is trivial. + +\begin{equation} +ab \equiv a \left (a^{\Phi(p) - 1} \right ) \equiv a^{\Phi(p)} \equiv a^0 \equiv 1 \mbox{ (mod }p\mbox{)} +\end{equation} + +However, as simple as this approach may be it has two serious flaws. It requires that the value of $\Phi(p)$ be known which if $p$ is composite +requires all of the prime factors. This approach also is very slow as the size of $p$ grows. + +A simpler approach is based on the observation that solving for the multiplicative inverse is equivalent to solving the linear +Diophantine\footnote{See LeVeque \cite[pp. 40-43]{LeVeque} for more information.} equation. + +\begin{equation} +ab + pq = 1 +\end{equation} + +Where $a$, $b$, $p$ and $q$ are all integers. If such a pair of integers $ \left < b, q \right >$ exist than $b$ is the multiplicative inverse of +$a$ modulo $p$. The extended Euclidean algorithm (Knuth \cite[pp. 342]{TAOCPV2}) can be used to solve such equations provided $(a, p) = 1$. +However, instead of using that algorithm directly a variant known as the binary Extended Euclidean algorithm will be used in its place. The +binary approach is very similar to the binary greatest common divisor algorithm except it will produce a full solution to the Diophantine +equation. + +\subsection{General Case} +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_invmod}. \\ +\textbf{Input}. mp\_int $a$ and $b$, $(a, b) = 1$, $p \ge 2$, $0 < a < p$. \\ +\textbf{Output}. The modular inverse $c \equiv a^{-1} \mbox{ (mod }b\mbox{)}$. \\ +\hline \\ +1. If $b \le 0$ then return(\textit{MP\_VAL}). \\ +2. If $b_0 \equiv 1 \mbox{ (mod }2\mbox{)}$ then use algorithm fast\_mp\_invmod. \\ +3. $x \leftarrow \vert a \vert, y \leftarrow b$ \\ +4. If $x_0 \equiv y_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ then return(\textit{MP\_VAL}). \\ +5. $B \leftarrow 0, C \leftarrow 0, A \leftarrow 1, D \leftarrow 1$ \\ +6. While $u.used > 0$ and $u_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}6.1 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +\hspace{3mm}6.2 If ($A.used > 0$ and $A_0 \equiv 1 \mbox{ (mod }2\mbox{)}$) or ($B.used > 0$ and $B_0 \equiv 1 \mbox{ (mod }2\mbox{)}$) then \\ +\hspace{6mm}6.2.1 $A \leftarrow A + y$ \\ +\hspace{6mm}6.2.2 $B \leftarrow B - x$ \\ +\hspace{3mm}6.3 $A \leftarrow \lfloor A / 2 \rfloor$ \\ +\hspace{3mm}6.4 $B \leftarrow \lfloor B / 2 \rfloor$ \\ +7. While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}7.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +\hspace{3mm}7.2 If ($C.used > 0$ and $C_0 \equiv 1 \mbox{ (mod }2\mbox{)}$) or ($D.used > 0$ and $D_0 \equiv 1 \mbox{ (mod }2\mbox{)}$) then \\ +\hspace{6mm}7.2.1 $C \leftarrow C + y$ \\ +\hspace{6mm}7.2.2 $D \leftarrow D - x$ \\ +\hspace{3mm}7.3 $C \leftarrow \lfloor C / 2 \rfloor$ \\ +\hspace{3mm}7.4 $D \leftarrow \lfloor D / 2 \rfloor$ \\ +8. If $u \ge v$ then \\ +\hspace{3mm}8.1 $u \leftarrow u - v$ \\ +\hspace{3mm}8.2 $A \leftarrow A - C$ \\ +\hspace{3mm}8.3 $B \leftarrow B - D$ \\ +9. else \\ +\hspace{3mm}9.1 $v \leftarrow v - u$ \\ +\hspace{3mm}9.2 $C \leftarrow C - A$ \\ +\hspace{3mm}9.3 $D \leftarrow D - B$ \\ +10. If $u \ne 0$ goto step 6. \\ +11. If $v \ne 1$ return(\textit{MP\_VAL}). \\ +12. While $C \le 0$ do \\ +\hspace{3mm}12.1 $C \leftarrow C + b$ \\ +13. While $C \ge b$ do \\ +\hspace{3mm}13.1 $C \leftarrow C - b$ \\ +14. $c \leftarrow C$ \\ +15. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\end{figure} +\textbf{Algorithm mp\_invmod.} +This algorithm computes the modular multiplicative inverse of an integer $a$ modulo an integer $b$. This algorithm is a variation of the +extended binary Euclidean algorithm from HAC \cite[pp. 608]{HAC}. It has been modified to only compute the modular inverse and not a complete +Diophantine solution. + +If $b \le 0$ than the modulus is invalid and MP\_VAL is returned. Similarly if both $a$ and $b$ are even then there cannot be a multiplicative +inverse for $a$ and the error is reported. + +The astute reader will observe that steps seven through nine are very similar to the binary greatest common divisor algorithm mp\_gcd. In this case +the other variables to the Diophantine equation are solved. The algorithm terminates when $u = 0$ in which case the solution is + +\begin{equation} +Ca + Db = v +\end{equation} + +If $v$, the greatest common divisor of $a$ and $b$ is not equal to one then the algorithm will report an error as no inverse exists. Otherwise, $C$ +is the modular inverse of $a$. The actual value of $C$ is congruent to, but not necessarily equal to, the ideal modular inverse which should lie +within $1 \le a^{-1} < b$. Step numbers twelve and thirteen adjust the inverse until it is in range. If the original input $a$ is within $0 < a < p$ +then only a couple of additions or subtractions will be required to adjust the inverse. + +EXAM,bn_mp_invmod.c + +\subsubsection{Odd Moduli} + +When the modulus $b$ is odd the variables $A$ and $C$ are fixed and are not required to compute the inverse. In particular by attempting to solve +the Diophantine $Cb + Da = 1$ only $B$ and $D$ are required to find the inverse of $a$. + +The algorithm fast\_mp\_invmod is a direct adaptation of algorithm mp\_invmod with all all steps involving either $A$ or $C$ removed. This +optimization will halve the time required to compute the modular inverse. + +\section{Primality Tests} + +A non-zero integer $a$ is said to be prime if it is not divisible by any other integer excluding one and itself. For example, $a = 7$ is prime +since the integers $2 \ldots 6$ do not evenly divide $a$. By contrast, $a = 6$ is not prime since $a = 6 = 2 \cdot 3$. + +Prime numbers arise in cryptography considerably as they allow finite fields to be formed. The ability to determine whether an integer is prime or +not quickly has been a viable subject in cryptography and number theory for considerable time. The algorithms that will be presented are all +probablistic algorithms in that when they report an integer is composite it must be composite. However, when the algorithms report an integer is +prime the algorithm may be incorrect. + +As will be discussed it is possible to limit the probability of error so well that for practical purposes the probablity of error might as +well be zero. For the purposes of these discussions let $n$ represent the candidate integer of which the primality is in question. + +\subsection{Trial Division} + +Trial division means to attempt to evenly divide a candidate integer by small prime integers. If the candidate can be evenly divided it obviously +cannot be prime. By dividing by all primes $1 < p \le \sqrt{n}$ this test can actually prove whether an integer is prime. However, such a test +would require a prohibitive amount of time as $n$ grows. + +Instead of dividing by every prime, a smaller, more mangeable set of primes may be used instead. By performing trial division with only a subset +of the primes less than $\sqrt{n} + 1$ the algorithm cannot prove if a candidate is prime. However, often it can prove a candidate is not prime. + +The benefit of this test is that trial division by small values is fairly efficient. Specially compared to the other algorithms that will be +discussed shortly. The probability that this approach correctly identifies a composite candidate when tested with all primes upto $q$ is given by +$1 - {1.12 \over ln(q)}$. The graph (\ref{pic:primality}, will be added later) demonstrates the probability of success for the range +$3 \le q \le 100$. + +At approximately $q = 30$ the gain of performing further tests diminishes fairly quickly. At $q = 90$ further testing is generally not going to +be of any practical use. In the case of LibTomMath the default limit $q = 256$ was chosen since it is not too high and will eliminate +approximately $80\%$ of all candidate integers. The constant \textbf{PRIME\_SIZE} is equal to the number of primes in the test base. The +array \_\_prime\_tab is an array of the first \textbf{PRIME\_SIZE} prime numbers. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_prime\_is\_divisible}. \\ +\textbf{Input}. mp\_int $a$ \\ +\textbf{Output}. $c = 1$ if $n$ is divisible by a small prime, otherwise $c = 0$. \\ +\hline \\ +1. for $ix$ from $0$ to $PRIME\_SIZE$ do \\ +\hspace{3mm}1.1 $d \leftarrow n \mbox{ (mod }\_\_prime\_tab_{ix}\mbox{)}$ \\ +\hspace{3mm}1.2 If $d = 0$ then \\ +\hspace{6mm}1.2.1 $c \leftarrow 1$ \\ +\hspace{6mm}1.2.2 Return(\textit{MP\_OKAY}). \\ +2. $c \leftarrow 0$ \\ +3. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_prime\_is\_divisible} +\end{figure} +\textbf{Algorithm mp\_prime\_is\_divisible.} +This algorithm attempts to determine if a candidate integer $n$ is composite by performing trial divisions. + +EXAM,bn_mp_prime_is_divisible.c + +The algorithm defaults to a return of $0$ in case an error occurs. The values in the prime table are all specified to be in the range of a +mp\_digit. The table \_\_prime\_tab is defined in the following file. + +EXAM,bn_prime_tab.c + +Note that there are two possible tables. When an mp\_digit is 7-bits long only the primes upto $127$ may be included, otherwise the primes +upto $1619$ are used. Note that the value of \textbf{PRIME\_SIZE} is a constant dependent on the size of a mp\_digit. + +\subsection{The Fermat Test} +The Fermat test is probably one the oldest tests to have a non-trivial probability of success. It is based on the fact that if $n$ is in +fact prime then $a^{n} \equiv a \mbox{ (mod }n\mbox{)}$ for all $0 < a < n$. The reason being that if $n$ is prime than the order of +the multiplicative sub group is $n - 1$. Any base $a$ must have an order which divides $n - 1$ and as such $a^n$ is equivalent to +$a^1 = a$. + +If $n$ is composite then any given base $a$ does not have to have a period which divides $n - 1$. In which case +it is possible that $a^n \nequiv a \mbox{ (mod }n\mbox{)}$. However, this test is not absolute as it is possible that the order +of a base will divide $n - 1$ which would then be reported as prime. Such a base yields what is known as a Fermat pseudo-prime. Several +integers known as Carmichael numbers will be a pseudo-prime to all valid bases. Fortunately such numbers are extremely rare as $n$ grows +in size. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_prime\_fermat}. \\ +\textbf{Input}. mp\_int $a$ and $b$, $a \ge 2$, $0 < b < a$. \\ +\textbf{Output}. $c = 1$ if $b^a \equiv b \mbox{ (mod }a\mbox{)}$, otherwise $c = 0$. \\ +\hline \\ +1. $t \leftarrow b^a \mbox{ (mod }a\mbox{)}$ \\ +2. If $t = b$ then \\ +\hspace{3mm}2.1 $c = 1$ \\ +3. else \\ +\hspace{3mm}3.1 $c = 0$ \\ +4. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_prime\_fermat} +\end{figure} +\textbf{Algorithm mp\_prime\_fermat.} +This algorithm determines whether an mp\_int $a$ is a Fermat prime to the base $b$ or not. It uses a single modular exponentiation to +determine the result. + +EXAM,bn_mp_prime_fermat.c + +\subsection{The Miller-Rabin Test} +The Miller-Rabin (citation) test is another primality test which has tighter error bounds than the Fermat test specifically with sequentially chosen +candidate integers. The algorithm is based on the observation that if $n - 1 = 2^kr$ and if $b^r \nequiv \pm 1$ then after upto $k - 1$ squarings the +value must be equal to $-1$. The squarings are stopped as soon as $-1$ is observed. If the value of $1$ is observed first it means that +some value not congruent to $\pm 1$ when squared equals one which cannot occur if $n$ is prime. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_prime\_miller\_rabin}. \\ +\textbf{Input}. mp\_int $a$ and $b$, $a \ge 2$, $0 < b < a$. \\ +\textbf{Output}. $c = 1$ if $a$ is a Miller-Rabin prime to the base $a$, otherwise $c = 0$. \\ +\hline +1. $a' \leftarrow a - 1$ \\ +2. $r \leftarrow n1$ \\ +3. $c \leftarrow 0, s \leftarrow 0$ \\ +4. While $r.used > 0$ and $r_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}4.1 $s \leftarrow s + 1$ \\ +\hspace{3mm}4.2 $r \leftarrow \lfloor r / 2 \rfloor$ \\ +5. $y \leftarrow b^r \mbox{ (mod }a\mbox{)}$ \\ +6. If $y \nequiv \pm 1$ then \\ +\hspace{3mm}6.1 $j \leftarrow 1$ \\ +\hspace{3mm}6.2 While $j \le (s - 1)$ and $y \nequiv a'$ \\ +\hspace{6mm}6.2.1 $y \leftarrow y^2 \mbox{ (mod }a\mbox{)}$ \\ +\hspace{6mm}6.2.2 If $y = 1$ then goto step 8. \\ +\hspace{6mm}6.2.3 $j \leftarrow j + 1$ \\ +\hspace{3mm}6.3 If $y \nequiv a'$ goto step 8. \\ +7. $c \leftarrow 1$\\ +8. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_prime\_miller\_rabin} +\end{figure} +\textbf{Algorithm mp\_prime\_miller\_rabin.} +This algorithm performs one trial round of the Miller-Rabin algorithm to the base $b$. It will set $c = 1$ if the algorithm cannot determine +if $b$ is composite or $c = 0$ if $b$ is provably composite. The values of $s$ and $r$ are computed such that $a' = a - 1 = 2^sr$. + +If the value $y \equiv b^r$ is congruent to $\pm 1$ then the algorithm cannot prove if $a$ is composite or not. Otherwise, the algorithm will +square $y$ upto $s - 1$ times stopping only when $y \equiv -1$. If $y^2 \equiv 1$ and $y \nequiv \pm 1$ then the algorithm can report that $a$ +is provably composite. If the algorithm performs $s - 1$ squarings and $y \nequiv -1$ then $a$ is provably composite. If $a$ is not provably +composite then it is \textit{probably} prime. + +EXAM,bn_mp_prime_miller_rabin.c + + + + +\backmatter +\appendix +\begin{thebibliography}{ABCDEF} +\bibitem[1]{TAOCPV2} +Donald Knuth, \textit{The Art of Computer Programming}, Third Edition, Volume Two, Seminumerical Algorithms, Addison-Wesley, 1998 + +\bibitem[2]{HAC} +A. Menezes, P. van Oorschot, S. Vanstone, \textit{Handbook of Applied Cryptography}, CRC Press, 1996 + +\bibitem[3]{ROSE} +Michael Rosing, \textit{Implementing Elliptic Curve Cryptography}, Manning Publications, 1999 + +\bibitem[4]{COMBA} +Paul G. Comba, \textit{Exponentiation Cryptosystems on the IBM PC}. IBM Systems Journal 29(4): 526-538 (1990) + +\bibitem[5]{KARA} +A. Karatsuba, Doklay Akad. Nauk SSSR 145 (1962), pp.293-294 + +\bibitem[6]{KARAP} +Andre Weimerskirch and Christof Paar, \textit{Generalizations of the Karatsuba Algorithm for Polynomial Multiplication}, Submitted to Design, Codes and Cryptography, March 2002 + +\bibitem[7]{BARRETT} +Paul Barrett, \textit{Implementing the Rivest Shamir and Adleman Public Key Encryption Algorithm on a Standard Digital Signal Processor}, Advances in Cryptology, Crypto '86, Springer-Verlag. + +\bibitem[8]{MONT} +P.L.Montgomery. \textit{Modular multiplication without trial division}. Mathematics of Computation, 44(170):519-521, April 1985. + +\bibitem[9]{DRMET} +Chae Hoon Lim and Pil Joong Lee, \textit{Generating Efficient Primes for Discrete Log Cryptosystems}, POSTECH Information Research Laboratories + +\bibitem[10]{MMB} +J. Daemen and R. Govaerts and J. Vandewalle, \textit{Block ciphers based on Modular Arithmetic}, State and {P}rogress in the {R}esearch of {C}ryptography, 1993, pp. 80-89 + +\bibitem[11]{RSAREF} +R.L. Rivest, A. Shamir, L. Adleman, \textit{A Method for Obtaining Digital Signatures and Public-Key Cryptosystems} + +\bibitem[12]{DHREF} +Whitfield Diffie, Martin E. Hellman, \textit{New Directions in Cryptography}, IEEE Transactions on Information Theory, 1976 + +\bibitem[13]{IEEE} +IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985) + +\bibitem[14]{GMP} +GNU Multiple Precision (GMP), \url{http://www.swox.com/gmp/} + +\bibitem[15]{MPI} +Multiple Precision Integer Library (MPI), Michael Fromberger, \url{http://thayer.dartmouth.edu/~sting/mpi/} + +\bibitem[16]{OPENSSL} +OpenSSL Cryptographic Toolkit, \url{http://openssl.org} + +\bibitem[17]{LIP} +Large Integer Package, \url{http://home.hetnet.nl/~ecstr/LIP.zip} + +\bibitem[18]{ISOC} +JTC1/SC22/WG14, ISO/IEC 9899:1999, ``A draft rationale for the C99 standard.'' + +\bibitem[19]{JAVA} +The Sun Java Website, \url{http://java.sun.com/} + +\end{thebibliography} + +\input{tommath.ind} + +\end{document} diff --git a/libtommath/tommath.tex b/libtommath/tommath.tex new file mode 100644 index 0000000..9c4dc82 --- /dev/null +++ b/libtommath/tommath.tex @@ -0,0 +1,10771 @@ +\documentclass[b5paper]{book} +\usepackage{hyperref} +\usepackage{makeidx} +\usepackage{amssymb} +\usepackage{color} +\usepackage{alltt} +\usepackage{graphicx} +\usepackage{layout} +\def\union{\cup} +\def\intersect{\cap} +\def\getsrandom{\stackrel{\rm R}{\gets}} +\def\cross{\times} +\def\cat{\hspace{0.5em} \| \hspace{0.5em}} +\def\catn{$\|$} +\def\divides{\hspace{0.3em} | \hspace{0.3em}} +\def\nequiv{\not\equiv} +\def\approx{\raisebox{0.2ex}{\mbox{\small $\sim$}}} +\def\lcm{{\rm lcm}} +\def\gcd{{\rm gcd}} +\def\log{{\rm log}} +\def\ord{{\rm ord}} +\def\abs{{\mathit abs}} +\def\rep{{\mathit rep}} +\def\mod{{\mathit\ mod\ }} +\renewcommand{\pmod}[1]{\ ({\rm mod\ }{#1})} +\newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} +\newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} +\def\Or{{\rm\ or\ }} +\def\And{{\rm\ and\ }} +\def\iff{\hspace{1em}\Longleftrightarrow\hspace{1em}} +\def\implies{\Rightarrow} +\def\undefined{{\rm ``undefined"}} +\def\Proof{\vspace{1ex}\noindent {\bf Proof:}\hspace{1em}} +\let\oldphi\phi +\def\phi{\varphi} +\def\Pr{{\rm Pr}} +\newcommand{\str}[1]{{\mathbf{#1}}} +\def\F{{\mathbb F}} +\def\N{{\mathbb N}} +\def\Z{{\mathbb Z}} +\def\R{{\mathbb R}} +\def\C{{\mathbb C}} +\def\Q{{\mathbb Q}} +\definecolor{DGray}{gray}{0.5} +\newcommand{\emailaddr}[1]{\mbox{$<${#1}$>$}} +\def\twiddle{\raisebox{0.3ex}{\mbox{\tiny $\sim$}}} +\def\gap{\vspace{0.5ex}} +\makeindex +\begin{document} +\frontmatter +\pagestyle{empty} +\title{Implementing Multiple Precision Arithmetic \\ ~ \\ Draft Edition } +\author{\mbox{ +%\begin{small} +\begin{tabular}{c} +Tom St Denis \\ +Algonquin College \\ +\\ +Mads Rasmussen \\ +Open Communications Security \\ +\\ +Greg Rose \\ +QUALCOMM Australia \\ +\end{tabular} +%\end{small} +} +} +\maketitle +This text has been placed in the public domain. This text corresponds to the v0.30 release of the +LibTomMath project. + +\begin{alltt} +Tom St Denis +111 Banning Rd +Ottawa, Ontario +K2L 1C3 +Canada + +Phone: 1-613-836-3160 +Email: tomstdenis@iahu.ca +\end{alltt} + +This text is formatted to the international B5 paper size of 176mm wide by 250mm tall using the \LaTeX{} +{\em book} macro package and the Perl {\em booker} package. + +\tableofcontents +\listoffigures +\chapter*{Prefaces to the Draft Edition} +I started this text in April 2003 to complement my LibTomMath library. That is, explain how to implement the functions +contained in LibTomMath. The goal is to have a textbook that any Computer Science student can use when implementing their +own multiple precision arithmetic. The plan I wanted to follow was flesh out all the +ideas and concepts I had floating around in my head and then work on it afterwards refining a little bit at a time. Chance +would have it that I ended up with my summer off from Algonquin College and I was given four months solid to work on the +text. + +Choosing to not waste any time I dove right into the project even before my spring semester was finished. I wrote a bit +off and on at first. The moment my exams were finished I jumped into long 12 to 16 hour days. The result after only +a couple of months was a ten chapter, three hundred page draft that I quickly had distributed to anyone who wanted +to read it. I had Jean-Luc Cooke print copies for me and I brought them to Crypto'03 in Santa Barbara. So far I have +managed to grab a certain level of attention having people from around the world ask me for copies of the text was certain +rewarding. + +Now we are past December 2003. By this time I had pictured that I would have at least finished my second draft of the text. +Currently I am far off from this goal. I've done partial re-writes of chapters one, two and three but they are not even +finished yet. I haven't given up on the project, only had some setbacks. First O'Reilly declined to publish the text then +Addison-Wesley and Greg is tried another which I don't know the name of. However, at this point I want to focus my energy +onto finishing the book not securing a contract. + +So why am I writing this text? It seems like a lot of work right? Most certainly it is a lot of work writing a textbook. +Even the simplest introductory material has to be lined with references and figures. A lot of the text has to be re-written +from point form to prose form to ensure an easier read. Why am I doing all this work for free then? Simple. My philosophy +is quite simply ``Open Source. Open Academia. Open Minds'' which means that to achieve a goal of open minds, that is, +people willing to accept new ideas and explore the unknown you have to make available material they can access freely +without hinderance. + +I've been writing free software since I was about sixteen but only recently have I hit upon software that people have come +to depend upon. I started LibTomCrypt in December 2001 and now several major companies use it as integral portions of their +software. Several educational institutions use it as a matter of course and many freelance developers use it as +part of their projects. To further my contributions I started the LibTomMath project in December 2002 aimed at providing +multiple precision arithmetic routines that students could learn from. That is write routines that are not only easy +to understand and follow but provide quite impressive performance considering they are all in standard portable ISO C. + +The second leg of my philosophy is ``Open Academia'' which is where this textbook comes in. In the end, when all is +said and done the text will be useable by educational institutions as a reference on multiple precision arithmetic. + +At this time I feel I should share a little information about myself. The most common question I was asked at +Crypto'03, perhaps just out of professional courtesy, was which school I either taught at or attended. The unfortunate +truth is that I neither teach at or attend a school of academic reputation. I'm currently at Algonquin College which +is what I'd like to call ``somewhat academic but mostly vocational'' college. In otherwords, job training. + +I'm a 21 year old computer science student mostly self-taught in the areas I am aware of (which includes a half-dozen +computer science fields, a few fields of mathematics and some English). I look forward to teaching someday but I am +still far off from that goal. + +Now it would be improper for me to not introduce the rest of the texts co-authors. While they are only contributing +corrections and editorial feedback their support has been tremendously helpful in presenting the concepts laid out +in the text so far. Greg has always been there for me. He has tracked my LibTom projects since their inception and even +sent cheques to help pay tuition from time to time. His background has provided a wonderful source to bounce ideas off +of and improve the quality of my writing. Mads is another fellow who has just ``been there''. I don't even recall what +his interest in the LibTom projects is but I'm definitely glad he has been around. His ability to catch logical errors +in my written English have saved me on several occasions to say the least. + +What to expect next? Well this is still a rough draft. I've only had the chance to update a few chapters. However, I've +been getting the feeling that people are starting to use my text and I owe them some updated material. My current tenative +plan is to edit one chapter every two weeks starting January 4th. It seems insane but my lower course load at college +should provide ample time. By Crypto'04 I plan to have a 2nd draft of the text polished and ready to hand out to as many +people who will take it. + +\begin{flushright} Tom St Denis \end{flushright} + +\newpage +I found the opportunity to work with Tom appealing for several reasons, not only could I broaden my own horizons, but also +contribute to educate others facing the problem of having to handle big number mathematical calculations. + +This book is Tom's child and he has been caring and fostering the project ever since the beginning with a clear mind of +how he wanted the project to turn out. I have helped by proofreading the text and we have had several discussions about +the layout and language used. + +I hold a masters degree in cryptography from the University of Southern Denmark and have always been interested in the +practical aspects of cryptography. + +Having worked in the security consultancy business for several years in S\~{a}o Paulo, Brazil, I have been in touch with a +great deal of work in which multiple precision mathematics was needed. Understanding the possibilities for speeding up +multiple precision calculations is often very important since we deal with outdated machine architecture where modular +reductions, for example, become painfully slow. + +This text is for people who stop and wonder when first examining algorithms such as RSA for the first time and asks +themselves, ``You tell me this is only secure for large numbers, fine; but how do you implement these numbers?'' + +\begin{flushright} +Mads Rasmussen + +S\~{a}o Paulo - SP + +Brazil +\end{flushright} + +\newpage +It's all because I broke my leg. That just happened to be at about the same time that Tom asked for someone to review the section of the book about +Karatsuba multiplication. I was laid up, alone and immobile, and thought ``Why not?'' I vaguely knew what Karatsuba multiplication was, but not +really, so I thought I could help, learn, and stop myself from watching daytime cable TV, all at once. + +At the time of writing this, I've still not met Tom or Mads in meatspace. I've been following Tom's progress since his first splash on the +sci.crypt Usenet news group. I watched him go from a clueless newbie, to the cryptographic equivalent of a reformed smoker, to a real +contributor to the field, over a period of about two years. I've been impressed with his obvious intelligence, and astounded by his productivity. +Of course, he's young enough to be my own child, so he doesn't have my problems with staying awake. + +When I reviewed that single section of the book, in its very earliest form, I was very pleasantly surprised. So I decided to collaborate more fully, +and at least review all of it, and perhaps write some bits too. There's still a long way to go with it, and I have watched a number of close +friends go through the mill of publication, so I think that the way to go is longer than Tom thinks it is. Nevertheless, it's a good effort, +and I'm pleased to be involved with it. + +\begin{flushright} +Greg Rose, Sydney, Australia, June 2003. +\end{flushright} + +\mainmatter +\pagestyle{headings} +\chapter{Introduction} +\section{Multiple Precision Arithmetic} + +\subsection{What is Multiple Precision Arithmetic?} +When we think of long-hand arithmetic such as addition or multiplication we rarely consider the fact that we instinctively +raise or lower the precision of the numbers we are dealing with. For example, in decimal we almost immediate can +reason that $7$ times $6$ is $42$. However, $42$ has two digits of precision as opposed to one digit we started with. +Further multiplications of say $3$ result in a larger precision result $126$. In these few examples we have multiple +precisions for the numbers we are working with. Despite the various levels of precision a single subset\footnote{With the occasional optimization.} + of algorithms can be designed to accomodate them. + +By way of comparison a fixed or single precision operation would lose precision on various operations. For example, in +the decimal system with fixed precision $6 \cdot 7 = 2$. + +Essentially at the heart of computer based multiple precision arithmetic are the same long-hand algorithms taught in +schools to manually add, subtract, multiply and divide. + +\subsection{The Need for Multiple Precision Arithmetic} +The most prevalent need for multiple precision arithmetic, often referred to as ``bignum'' math, is within the implementation +of public-key cryptography algorithms. Algorithms such as RSA \cite{RSAREF} and Diffie-Hellman \cite{DHREF} require +integers of significant magnitude to resist known cryptanalytic attacks. For example, at the time of this writing a +typical RSA modulus would be at least greater than $10^{309}$. However, modern programming languages such as ISO C \cite{ISOC} and +Java \cite{JAVA} only provide instrinsic support for integers which are relatively small and single precision. + +\begin{figure}[!here] +\begin{center} +\begin{tabular}{|r|c|} +\hline \textbf{Data Type} & \textbf{Range} \\ +\hline char & $-128 \ldots 127$ \\ +\hline short & $-32768 \ldots 32767$ \\ +\hline long & $-2147483648 \ldots 2147483647$ \\ +\hline long long & $-9223372036854775808 \ldots 9223372036854775807$ \\ +\hline +\end{tabular} +\end{center} +\caption{Typical Data Types for the C Programming Language} +\label{fig:ISOC} +\end{figure} + +The largest data type guaranteed to be provided by the ISO C programming +language\footnote{As per the ISO C standard. However, each compiler vendor is allowed to augment the precision as they +see fit.} can only represent values up to $10^{19}$ as shown in figure \ref{fig:ISOC}. On its own the C language is +insufficient to accomodate the magnitude required for the problem at hand. An RSA modulus of magnitude $10^{19}$ could be +trivially factored\footnote{A Pollard-Rho factoring would take only $2^{16}$ time.} on the average desktop computer, +rendering any protocol based on the algorithm insecure. Multiple precision algorithms solve this very problem by +extending the range of representable integers while using single precision data types. + +Most advancements in fast multiple precision arithmetic stem from the need for faster and more efficient cryptographic +primitives. Faster modular reduction and exponentiation algorithms such as Barrett's algorithm, which have appeared in +various cryptographic journals, can render algorithms such as RSA and Diffie-Hellman more efficient. In fact, several +major companies such as RSA Security, Certicom and Entrust have built entire product lines on the implementation and +deployment of efficient algorithms. + +However, cryptography is not the only field of study that can benefit from fast multiple precision integer routines. +Another auxiliary use of multiple precision integers is high precision floating point data types. +The basic IEEE \cite{IEEE} standard floating point type is made up of an integer mantissa $q$, an exponent $e$ and a sign bit $s$. +Numbers are given in the form $n = q \cdot b^e \cdot -1^s$ where $b = 2$ is the most common base for IEEE. Since IEEE +floating point is meant to be implemented in hardware the precision of the mantissa is often fairly small +(\textit{23, 48 and 64 bits}). The mantissa is merely an integer and a multiple precision integer could be used to create +a mantissa of much larger precision than hardware alone can efficiently support. This approach could be useful where +scientific applications must minimize the total output error over long calculations. + +Yet another use for large integers is within arithmetic on polynomials of large characteristic (i.e. $GF(p)[x]$ for large $p$). +In fact the library discussed within this text has already been used to form a polynomial basis library\footnote{See \url{http://poly.libtomcrypt.org} for more details.}. + +\subsection{Benefits of Multiple Precision Arithmetic} +\index{precision} +The benefit of multiple precision representations over single or fixed precision representations is that +no precision is lost while representing the result of an operation which requires excess precision. For example, +the product of two $n$-bit integers requires at least $2n$ bits of precision to be represented faithfully. A multiple +precision algorithm would augment the precision of the destination to accomodate the result while a single precision system +would truncate excess bits to maintain a fixed level of precision. + +It is possible to implement algorithms which require large integers with fixed precision algorithms. For example, elliptic +curve cryptography (\textit{ECC}) is often implemented on smartcards by fixing the precision of the integers to the maximum +size the system will ever need. Such an approach can lead to vastly simpler algorithms which can accomodate the +integers required even if the host platform cannot natively accomodate them\footnote{For example, the average smartcard +processor has an 8 bit accumulator.}. However, as efficient as such an approach may be, the resulting source code is not +normally very flexible. It cannot, at runtime, accomodate inputs of higher magnitude than the designer anticipated. + +Multiple precision algorithms have the most overhead of any style of arithmetic. For the the most part the +overhead can be kept to a minimum with careful planning, but overall, it is not well suited for most memory starved +platforms. However, multiple precision algorithms do offer the most flexibility in terms of the magnitude of the +inputs. That is, the same algorithms based on multiple precision integers can accomodate any reasonable size input +without the designer's explicit forethought. This leads to lower cost of ownership for the code as it only has to +be written and tested once. + +\section{Purpose of This Text} +The purpose of this text is to instruct the reader regarding how to implement efficient multiple precision algorithms. +That is to not only explain a limited subset of the core theory behind the algorithms but also the various ``house keeping'' +elements that are neglected by authors of other texts on the subject. Several well reknowned texts \cite{TAOCPV2,HAC} +give considerably detailed explanations of the theoretical aspects of algorithms and often very little information +regarding the practical implementation aspects. + +In most cases how an algorithm is explained and how it is actually implemented are two very different concepts. For +example, the Handbook of Applied Cryptography (\textit{HAC}), algorithm 14.7 on page 594, gives a relatively simple +algorithm for performing multiple precision integer addition. However, the description lacks any discussion concerning +the fact that the two integer inputs may be of differing magnitudes. As a result the implementation is not as simple +as the text would lead people to believe. Similarly the division routine (\textit{algorithm 14.20, pp. 598}) does not +discuss how to handle sign or handle the dividend's decreasing magnitude in the main loop (\textit{step \#3}). + +Both texts also do not discuss several key optimal algorithms required such as ``Comba'' and Karatsuba multipliers +and fast modular inversion, which we consider practical oversights. These optimal algorithms are vital to achieve +any form of useful performance in non-trivial applications. + +To solve this problem the focus of this text is on the practical aspects of implementing a multiple precision integer +package. As a case study the ``LibTomMath''\footnote{Available at \url{http://math.libtomcrypt.org}} package is used +to demonstrate algorithms with real implementations\footnote{In the ISO C programming language.} that have been field +tested and work very well. The LibTomMath library is freely available on the Internet for all uses and this text +discusses a very large portion of the inner workings of the library. + +The algorithms that are presented will always include at least one ``pseudo-code'' description followed +by the actual C source code that implements the algorithm. The pseudo-code can be used to implement the same +algorithm in other programming languages as the reader sees fit. + +This text shall also serve as a walkthrough of the creation of multiple precision algorithms from scratch. Showing +the reader how the algorithms fit together as well as where to start on various taskings. + +\section{Discussion and Notation} +\subsection{Notation} +A multiple precision integer of $n$-digits shall be denoted as $x = (x_{n-1}, \ldots, x_1, x_0)_{ \beta }$ and represent +the integer $x \equiv \sum_{i=0}^{n-1} x_i\beta^i$. The elements of the array $x$ are said to be the radix $\beta$ digits +of the integer. For example, $x = (1,2,3)_{10}$ would represent the integer +$1\cdot 10^2 + 2\cdot10^1 + 3\cdot10^0 = 123$. + +\index{mp\_int} +The term ``mp\_int'' shall refer to a composite structure which contains the digits of the integer it represents, as well +as auxilary data required to manipulate the data. These additional members are discussed further in section +\ref{sec:MPINT}. For the purposes of this text a ``multiple precision integer'' and an ``mp\_int'' are assumed to be +synonymous. When an algorithm is specified to accept an mp\_int variable it is assumed the various auxliary data members +are present as well. An expression of the type \textit{variablename.item} implies that it should evaluate to the +member named ``item'' of the variable. For example, a string of characters may have a member ``length'' which would +evaluate to the number of characters in the string. If the string $a$ equals ``hello'' then it follows that +$a.length = 5$. + +For certain discussions more generic algorithms are presented to help the reader understand the final algorithm used +to solve a given problem. When an algorithm is described as accepting an integer input it is assumed the input is +a plain integer with no additional multiple-precision members. That is, algorithms that use integers as opposed to +mp\_ints as inputs do not concern themselves with the housekeeping operations required such as memory management. These +algorithms will be used to establish the relevant theory which will subsequently be used to describe a multiple +precision algorithm to solve the same problem. + +\subsection{Precision Notation} +The variable $\beta$ represents the radix of a single digit of a multiple precision integer and +must be of the form $q^p$ for $q, p \in \Z^+$. A single precision variable must be able to represent integers in +the range $0 \le x < q \beta$ while a double precision variable must be able to represent integers in the range +$0 \le x < q \beta^2$. The extra radix-$q$ factor allows additions and subtractions to proceed without truncation of the +carry. Since all modern computers are binary, it is assumed that $q$ is two. + +\index{mp\_digit} \index{mp\_word} +Within the source code that will be presented for each algorithm, the data type \textbf{mp\_digit} will represent +a single precision integer type, while, the data type \textbf{mp\_word} will represent a double precision integer type. In +several algorithms (notably the Comba routines) temporary results will be stored in arrays of double precision mp\_words. +For the purposes of this text $x_j$ will refer to the $j$'th digit of a single precision array and $\hat x_j$ will refer to +the $j$'th digit of a double precision array. Whenever an expression is to be assigned to a double precision +variable it is assumed that all single precision variables are promoted to double precision during the evaluation. +Expressions that are assigned to a single precision variable are truncated to fit within the precision of a single +precision data type. + +For example, if $\beta = 10^2$ a single precision data type may represent a value in the +range $0 \le x < 10^3$, while a double precision data type may represent a value in the range $0 \le x < 10^5$. Let +$a = 23$ and $b = 49$ represent two single precision variables. The single precision product shall be written +as $c \leftarrow a \cdot b$ while the double precision product shall be written as $\hat c \leftarrow a \cdot b$. +In this particular case, $\hat c = 1127$ and $c = 127$. The most significant digit of the product would not fit +in a single precision data type and as a result $c \ne \hat c$. + +\subsection{Algorithm Inputs and Outputs} +Within the algorithm descriptions all variables are assumed to be scalars of either single or double precision +as indicated. The only exception to this rule is when variables have been indicated to be of type mp\_int. This +distinction is important as scalars are often used as array indicies and various other counters. + +\subsection{Mathematical Expressions} +The $\lfloor \mbox{ } \rfloor$ brackets imply an expression truncated to an integer not greater than the expression +itself. For example, $\lfloor 5.7 \rfloor = 5$. Similarly the $\lceil \mbox{ } \rceil$ brackets imply an expression +rounded to an integer not less than the expression itself. For example, $\lceil 5.1 \rceil = 6$. Typically when +the $/$ division symbol is used the intention is to perform an integer division with truncation. For example, +$5/2 = 2$ which will often be written as $\lfloor 5/2 \rfloor = 2$ for clarity. When an expression is written as a +fraction a real value division is implied, for example ${5 \over 2} = 2.5$. + +The norm of a multiple precision integer, for example $\vert \vert x \vert \vert$, will be used to represent the number of digits in the representation +of the integer. For example, $\vert \vert 123 \vert \vert = 3$ and $\vert \vert 79452 \vert \vert = 5$. + +\subsection{Work Effort} +\index{big-Oh} +To measure the efficiency of the specified algorithms, a modified big-Oh notation is used. In this system all +single precision operations are considered to have the same cost\footnote{Except where explicitly noted.}. +That is a single precision addition, multiplication and division are assumed to take the same time to +complete. While this is generally not true in practice, it will simplify the discussions considerably. + +Some algorithms have slight advantages over others which is why some constants will not be removed in +the notation. For example, a normal baseline multiplication (section \ref{sec:basemult}) requires $O(n^2)$ work while a +baseline squaring (section \ref{sec:basesquare}) requires $O({{n^2 + n}\over 2})$ work. In standard big-Oh notation these +would both be said to be equivalent to $O(n^2)$. However, +in the context of the this text this is not the case as the magnitude of the inputs will typically be rather small. As a +result small constant factors in the work effort will make an observable difference in algorithm efficiency. + +All of the algorithms presented in this text have a polynomial time work level. That is, of the form +$O(n^k)$ for $n, k \in \Z^{+}$. This will help make useful comparisons in terms of the speed of the algorithms and how +various optimizations will help pay off in the long run. + +\section{Exercises} +Within the more advanced chapters a section will be set aside to give the reader some challenging exercises related to +the discussion at hand. These exercises are not designed to be prize winning problems, but instead to be thought +provoking. Wherever possible the problems are forward minded, stating problems that will be answered in subsequent +chapters. The reader is encouraged to finish the exercises as they appear to get a better understanding of the +subject material. + +That being said, the problems are designed to affirm knowledge of a particular subject matter. Students in particular +are encouraged to verify they can answer the problems correctly before moving on. + +Similar to the exercises of \cite[pp. ix]{TAOCPV2} these exercises are given a scoring system based on the difficulty of +the problem. However, unlike \cite{TAOCPV2} the problems do not get nearly as hard. The scoring of these +exercises ranges from one (the easiest) to five (the hardest). The following table sumarizes the +scoring system used. + +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|c|l|} +\hline $\left [ 1 \right ]$ & An easy problem that should only take the reader a manner of \\ + & minutes to solve. Usually does not involve much computer time \\ + & to solve. \\ +\hline $\left [ 2 \right ]$ & An easy problem that involves a marginal amount of computer \\ + & time usage. Usually requires a program to be written to \\ + & solve the problem. \\ +\hline $\left [ 3 \right ]$ & A moderately hard problem that requires a non-trivial amount \\ + & of work. Usually involves trivial research and development of \\ + & new theory from the perspective of a student. \\ +\hline $\left [ 4 \right ]$ & A moderately hard problem that involves a non-trivial amount \\ + & of work and research, the solution to which will demonstrate \\ + & a higher mastery of the subject matter. \\ +\hline $\left [ 5 \right ]$ & A hard problem that involves concepts that are difficult for a \\ + & novice to solve. Solutions to these problems will demonstrate a \\ + & complete mastery of the given subject. \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Exercise Scoring System} +\end{figure} + +Problems at the first level are meant to be simple questions that the reader can answer quickly without programming a solution or +devising new theory. These problems are quick tests to see if the material is understood. Problems at the second level +are also designed to be easy but will require a program or algorithm to be implemented to arrive at the answer. These +two levels are essentially entry level questions. + +Problems at the third level are meant to be a bit more difficult than the first two levels. The answer is often +fairly obvious but arriving at an exacting solution requires some thought and skill. These problems will almost always +involve devising a new algorithm or implementing a variation of another algorithm previously presented. Readers who can +answer these questions will feel comfortable with the concepts behind the topic at hand. + +Problems at the fourth level are meant to be similar to those of the level three questions except they will require +additional research to be completed. The reader will most likely not know the answer right away, nor will the text provide +the exact details of the answer until a subsequent chapter. + +Problems at the fifth level are meant to be the hardest +problems relative to all the other problems in the chapter. People who can correctly answer fifth level problems have a +mastery of the subject matter at hand. + +Often problems will be tied together. The purpose of this is to start a chain of thought that will be discussed in future chapters. The reader +is encouraged to answer the follow-up problems and try to draw the relevance of problems. + +\section{Introduction to LibTomMath} + +\subsection{What is LibTomMath?} +LibTomMath is a free and open source multiple precision integer library written entirely in portable ISO C. By portable it +is meant that the library does not contain any code that is computer platform dependent or otherwise problematic to use on +any given platform. + +The library has been successfully tested under numerous operating systems including Unix\footnote{All of these +trademarks belong to their respective rightful owners.}, MacOS, Windows, Linux, PalmOS and on standalone hardware such +as the Gameboy Advance. The library is designed to contain enough functionality to be able to develop applications such +as public key cryptosystems and still maintain a relatively small footprint. + +\subsection{Goals of LibTomMath} + +Libraries which obtain the most efficiency are rarely written in a high level programming language such as C. However, +even though this library is written entirely in ISO C, considerable care has been taken to optimize the algorithm implementations within the +library. Specifically the code has been written to work well with the GNU C Compiler (\textit{GCC}) on both x86 and ARM +processors. Wherever possible, highly efficient algorithms, such as Karatsuba multiplication, sliding window +exponentiation and Montgomery reduction have been provided to make the library more efficient. + +Even with the nearly optimal and specialized algorithms that have been included the Application Programing Interface +(\textit{API}) has been kept as simple as possible. Often generic place holder routines will make use of specialized +algorithms automatically without the developer's specific attention. One such example is the generic multiplication +algorithm \textbf{mp\_mul()} which will automatically use Toom--Cook, Karatsuba, Comba or baseline multiplication +based on the magnitude of the inputs and the configuration of the library. + +Making LibTomMath as efficient as possible is not the only goal of the LibTomMath project. Ideally the library should +be source compatible with another popular library which makes it more attractive for developers to use. In this case the +MPI library was used as a API template for all the basic functions. MPI was chosen because it is another library that fits +in the same niche as LibTomMath. Even though LibTomMath uses MPI as the template for the function names and argument +passing conventions, it has been written from scratch by Tom St Denis. + +The project is also meant to act as a learning tool for students, the logic being that no easy-to-follow ``bignum'' +library exists which can be used to teach computer science students how to perform fast and reliable multiple precision +integer arithmetic. To this end the source code has been given quite a few comments and algorithm discussion points. + +\section{Choice of LibTomMath} +LibTomMath was chosen as the case study of this text not only because the author of both projects is one and the same but +for more worthy reasons. Other libraries such as GMP \cite{GMP}, MPI \cite{MPI}, LIP \cite{LIP} and OpenSSL +\cite{OPENSSL} have multiple precision integer arithmetic routines but would not be ideal for this text for +reasons that will be explained in the following sub-sections. + +\subsection{Code Base} +The LibTomMath code base is all portable ISO C source code. This means that there are no platform dependent conditional +segments of code littered throughout the source. This clean and uncluttered approach to the library means that a +developer can more readily discern the true intent of a given section of source code without trying to keep track of +what conditional code will be used. + +The code base of LibTomMath is well organized. Each function is in its own separate source code file +which allows the reader to find a given function very quickly. On average there are $76$ lines of code per source +file which makes the source very easily to follow. By comparison MPI and LIP are single file projects making code tracing +very hard. GMP has many conditional code segments which also hinder tracing. + +When compiled with GCC for the x86 processor and optimized for speed the entire library is approximately $100$KiB\footnote{The notation ``KiB'' means $2^{10}$ octets, similarly ``MiB'' means $2^{20}$ octets.} + which is fairly small compared to GMP (over $250$KiB). LibTomMath is slightly larger than MPI (which compiles to about +$50$KiB) but LibTomMath is also much faster and more complete than MPI. + +\subsection{API Simplicity} +LibTomMath is designed after the MPI library and shares the API design. Quite often programs that use MPI will build +with LibTomMath without change. The function names correlate directly to the action they perform. Almost all of the +functions share the same parameter passing convention. The learning curve is fairly shallow with the API provided +which is an extremely valuable benefit for the student and developer alike. + +The LIP library is an example of a library with an API that is awkward to work with. LIP uses function names that are often ``compressed'' to +illegible short hand. LibTomMath does not share this characteristic. + +The GMP library also does not return error codes. Instead it uses a POSIX.1 \cite{POSIX1} signal system where errors +are signaled to the host application. This happens to be the fastest approach but definitely not the most versatile. In +effect a math error (i.e. invalid input, heap error, etc) can cause a program to stop functioning which is definitely +undersireable in many situations. + +\subsection{Optimizations} +While LibTomMath is certainly not the fastest library (GMP often beats LibTomMath by a factor of two) it does +feature a set of optimal algorithms for tasks such as modular reduction, exponentiation, multiplication and squaring. GMP +and LIP also feature such optimizations while MPI only uses baseline algorithms with no optimizations. GMP lacks a few +of the additional modular reduction optimizations that LibTomMath features\footnote{At the time of this writing GMP +only had Barrett and Montgomery modular reduction algorithms.}. + +LibTomMath is almost always an order of magnitude faster than the MPI library at computationally expensive tasks such as modular +exponentiation. In the grand scheme of ``bignum'' libraries LibTomMath is faster than the average library and usually +slower than the best libraries such as GMP and OpenSSL by only a small factor. + +\subsection{Portability and Stability} +LibTomMath will build ``out of the box'' on any platform equipped with a modern version of the GNU C Compiler +(\textit{GCC}). This means that without changes the library will build without configuration or setting up any +variables. LIP and MPI will build ``out of the box'' as well but have numerous known bugs. Most notably the author of +MPI has recently stopped working on his library and LIP has long since been discontinued. + +GMP requires a configuration script to run and will not build out of the box. GMP and LibTomMath are still in active +development and are very stable across a variety of platforms. + +\subsection{Choice} +LibTomMath is a relatively compact, well documented, highly optimized and portable library which seems only natural for +the case study of this text. Various source files from the LibTomMath project will be included within the text. However, +the reader is encouraged to download their own copy of the library to actually be able to work with the library. + +\chapter{Getting Started} +\section{Library Basics} +The trick to writing any useful library of source code is to build a solid foundation and work outwards from it. First, +a problem along with allowable solution parameters should be identified and analyzed. In this particular case the +inability to accomodate multiple precision integers is the problem. Futhermore, the solution must be written +as portable source code that is reasonably efficient across several different computer platforms. + +After a foundation is formed the remainder of the library can be designed and implemented in a hierarchical fashion. +That is, to implement the lowest level dependencies first and work towards the most abstract functions last. For example, +before implementing a modular exponentiation algorithm one would implement a modular reduction algorithm. +By building outwards from a base foundation instead of using a parallel design methodology the resulting project is +highly modular. Being highly modular is a desirable property of any project as it often means the resulting product +has a small footprint and updates are easy to perform. + +Usually when I start a project I will begin with the header files. I define the data types I think I will need and +prototype the initial functions that are not dependent on other functions (within the library). After I +implement these base functions I prototype more dependent functions and implement them. The process repeats until +I implement all of the functions I require. For example, in the case of LibTomMath I implemented functions such as +mp\_init() well before I implemented mp\_mul() and even further before I implemented mp\_exptmod(). As an example as to +why this design works note that the Karatsuba and Toom-Cook multipliers were written \textit{after} the +dependent function mp\_exptmod() was written. Adding the new multiplication algorithms did not require changes to the +mp\_exptmod() function itself and lowered the total cost of ownership (\textit{so to speak}) and of development +for new algorithms. This methodology allows new algorithms to be tested in a complete framework with relative ease. + +\begin{center} +\begin{figure}[here] +\includegraphics{pics/design_process.ps} +\caption{Design Flow of the First Few Original LibTomMath Functions.} +\label{pic:design_process} +\end{figure} +\end{center} + +Only after the majority of the functions were in place did I pursue a less hierarchical approach to auditing and optimizing +the source code. For example, one day I may audit the multipliers and the next day the polynomial basis functions. + +It only makes sense to begin the text with the preliminary data types and support algorithms required as well. +This chapter discusses the core algorithms of the library which are the dependents for every other algorithm. + +\section{What is a Multiple Precision Integer?} +Recall that most programming languages, in particular ISO C \cite{ISOC}, only have fixed precision data types that on their own cannot +be used to represent values larger than their precision will allow. The purpose of multiple precision algorithms is +to use fixed precision data types to create and manipulate multiple precision integers which may represent values +that are very large. + +As a well known analogy, school children are taught how to form numbers larger than nine by prepending more radix ten digits. In the decimal system +the largest single digit value is $9$. However, by concatenating digits together larger numbers may be represented. Newly prepended digits +(\textit{to the left}) are said to be in a different power of ten column. That is, the number $123$ can be described as having a $1$ in the hundreds +column, $2$ in the tens column and $3$ in the ones column. Or more formally $123 = 1 \cdot 10^2 + 2 \cdot 10^1 + 3 \cdot 10^0$. Computer based +multiple precision arithmetic is essentially the same concept. Larger integers are represented by adjoining fixed +precision computer words with the exception that a different radix is used. + +What most people probably do not think about explicitly are the various other attributes that describe a multiple precision +integer. For example, the integer $154_{10}$ has two immediately obvious properties. First, the integer is positive, +that is the sign of this particular integer is positive as opposed to negative. Second, the integer has three digits in +its representation. There is an additional property that the integer posesses that does not concern pencil-and-paper +arithmetic. The third property is how many digits placeholders are available to hold the integer. + +The human analogy of this third property is ensuring there is enough space on the paper to write the integer. For example, +if one starts writing a large number too far to the right on a piece of paper they will have to erase it and move left. +Similarly, computer algorithms must maintain strict control over memory usage to ensure that the digits of an integer +will not exceed the allowed boundaries. These three properties make up what is known as a multiple precision +integer or mp\_int for short. + +\subsection{The mp\_int Structure} +\label{sec:MPINT} +The mp\_int structure is the ISO C based manifestation of what represents a multiple precision integer. The ISO C standard does not provide for +any such data type but it does provide for making composite data types known as structures. The following is the structure definition +used within LibTomMath. + +\index{mp\_int} +\begin{figure}[here] +\begin{center} +\begin{small} +%\begin{verbatim} +\begin{tabular}{|l|} +\hline +typedef struct \{ \\ +\hspace{3mm}int used, alloc, sign;\\ +\hspace{3mm}mp\_digit *dp;\\ +\} \textbf{mp\_int}; \\ +\hline +\end{tabular} +%\end{verbatim} +\end{small} +\caption{The mp\_int Structure} +\label{fig:mpint} +\end{center} +\end{figure} + +The mp\_int structure (fig. \ref{fig:mpint}) can be broken down as follows. + +\begin{enumerate} +\item The \textbf{used} parameter denotes how many digits of the array \textbf{dp} contain the digits used to represent +a given integer. The \textbf{used} count must be positive (or zero) and may not exceed the \textbf{alloc} count. + +\item The \textbf{alloc} parameter denotes how +many digits are available in the array to use by functions before it has to increase in size. When the \textbf{used} count +of a result would exceed the \textbf{alloc} count all of the algorithms will automatically increase the size of the +array to accommodate the precision of the result. + +\item The pointer \textbf{dp} points to a dynamically allocated array of digits that represent the given multiple +precision integer. It is padded with $(\textbf{alloc} - \textbf{used})$ zero digits. The array is maintained in a least +significant digit order. As a pencil and paper analogy the array is organized such that the right most digits are stored +first starting at the location indexed by zero\footnote{In C all arrays begin at zero.} in the array. For example, +if \textbf{dp} contains $\lbrace a, b, c, \ldots \rbrace$ where \textbf{dp}$_0 = a$, \textbf{dp}$_1 = b$, \textbf{dp}$_2 = c$, $\ldots$ then +it would represent the integer $a + b\beta + c\beta^2 + \ldots$ + +\index{MP\_ZPOS} \index{MP\_NEG} +\item The \textbf{sign} parameter denotes the sign as either zero/positive (\textbf{MP\_ZPOS}) or negative (\textbf{MP\_NEG}). +\end{enumerate} + +\subsubsection{Valid mp\_int Structures} +Several rules are placed on the state of an mp\_int structure and are assumed to be followed for reasons of efficiency. +The only exceptions are when the structure is passed to initialization functions such as mp\_init() and mp\_init\_copy(). + +\begin{enumerate} +\item The value of \textbf{alloc} may not be less than one. That is \textbf{dp} always points to a previously allocated +array of digits. +\item The value of \textbf{used} may not exceed \textbf{alloc} and must be greater than or equal to zero. +\item The value of \textbf{used} implies the digit at index $(used - 1)$ of the \textbf{dp} array is non-zero. That is, +leading zero digits in the most significant positions must be trimmed. + \begin{enumerate} + \item Digits in the \textbf{dp} array at and above the \textbf{used} location must be zero. + \end{enumerate} +\item The value of \textbf{sign} must be \textbf{MP\_ZPOS} if \textbf{used} is zero; +this represents the mp\_int value of zero. +\end{enumerate} + +\section{Argument Passing} +A convention of argument passing must be adopted early on in the development of any library. Making the function +prototypes consistent will help eliminate many headaches in the future as the library grows to significant complexity. +In LibTomMath the multiple precision integer functions accept parameters from left to right as pointers to mp\_int +structures. That means that the source (input) operands are placed on the left and the destination (output) on the right. +Consider the following examples. + +\begin{verbatim} + mp_mul(&a, &b, &c); /* c = a * b */ + mp_add(&a, &b, &a); /* a = a + b */ + mp_sqr(&a, &b); /* b = a * a */ +\end{verbatim} + +The left to right order is a fairly natural way to implement the functions since it lets the developer read aloud the +functions and make sense of them. For example, the first function would read ``multiply a and b and store in c''. + +Certain libraries (\textit{LIP by Lenstra for instance}) accept parameters the other way around, to mimic the order +of assignment expressions. That is, the destination (output) is on the left and arguments (inputs) are on the right. In +truth, it is entirely a matter of preference. In the case of LibTomMath the convention from the MPI library has been +adopted. + +Another very useful design consideration, provided for in LibTomMath, is whether to allow argument sources to also be a +destination. For example, the second example (\textit{mp\_add}) adds $a$ to $b$ and stores in $a$. This is an important +feature to implement since it allows the calling functions to cut down on the number of variables it must maintain. +However, to implement this feature specific care has to be given to ensure the destination is not modified before the +source is fully read. + +\section{Return Values} +A well implemented application, no matter what its purpose, should trap as many runtime errors as possible and return them +to the caller. By catching runtime errors a library can be guaranteed to prevent undefined behaviour. However, the end +developer can still manage to cause a library to crash. For example, by passing an invalid pointer an application may +fault by dereferencing memory not owned by the application. + +In the case of LibTomMath the only errors that are checked for are related to inappropriate inputs (division by zero for +instance) and memory allocation errors. It will not check that the mp\_int passed to any function is valid nor +will it check pointers for validity. Any function that can cause a runtime error will return an error code as an +\textbf{int} data type with one of the following values (fig \ref{fig:errcodes}). + +\index{MP\_OKAY} \index{MP\_VAL} \index{MP\_MEM} +\begin{figure}[here] +\begin{center} +\begin{tabular}{|l|l|} +\hline \textbf{Value} & \textbf{Meaning} \\ +\hline \textbf{MP\_OKAY} & The function was successful \\ +\hline \textbf{MP\_VAL} & One of the input value(s) was invalid \\ +\hline \textbf{MP\_MEM} & The function ran out of heap memory \\ +\hline +\end{tabular} +\end{center} +\caption{LibTomMath Error Codes} +\label{fig:errcodes} +\end{figure} + +When an error is detected within a function it should free any memory it allocated, often during the initialization of +temporary mp\_ints, and return as soon as possible. The goal is to leave the system in the same state it was when the +function was called. Error checking with this style of API is fairly simple. + +\begin{verbatim} + int err; + if ((err = mp_add(&a, &b, &c)) != MP_OKAY) { + printf("Error: %s\n", mp_error_to_string(err)); + exit(EXIT_FAILURE); + } +\end{verbatim} + +The GMP \cite{GMP} library uses C style \textit{signals} to flag errors which is of questionable use. Not all errors are fatal +and it was not deemed ideal by the author of LibTomMath to force developers to have signal handlers for such cases. + +\section{Initialization and Clearing} +The logical starting point when actually writing multiple precision integer functions is the initialization and +clearing of the mp\_int structures. These two algorithms will be used by the majority of the higher level algorithms. + +Given the basic mp\_int structure an initialization routine must first allocate memory to hold the digits of +the integer. Often it is optimal to allocate a sufficiently large pre-set number of digits even though +the initial integer will represent zero. If only a single digit were allocated quite a few subsequent re-allocations +would occur when operations are performed on the integers. There is a tradeoff between how many default digits to allocate +and how many re-allocations are tolerable. Obviously allocating an excessive amount of digits initially will waste +memory and become unmanageable. + +If the memory for the digits has been successfully allocated then the rest of the members of the structure must +be initialized. Since the initial state of an mp\_int is to represent the zero integer, the allocated digits must be set +to zero. The \textbf{used} count set to zero and \textbf{sign} set to \textbf{MP\_ZPOS}. + +\subsection{Initializing an mp\_int} +An mp\_int is said to be initialized if it is set to a valid, preferably default, state such that all of the members of the +structure are set to valid values. The mp\_init algorithm will perform such an action. + +\index{mp\_init} +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_init}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Allocate memory and initialize $a$ to a known valid mp\_int state. \\ +\hline \\ +1. Allocate memory for \textbf{MP\_PREC} digits. \\ +2. If the allocation failed return(\textit{MP\_MEM}) \\ +3. for $n$ from $0$ to $MP\_PREC - 1$ do \\ +\hspace{3mm}3.1 $a_n \leftarrow 0$\\ +4. $a.sign \leftarrow MP\_ZPOS$\\ +5. $a.used \leftarrow 0$\\ +6. $a.alloc \leftarrow MP\_PREC$\\ +7. Return(\textit{MP\_OKAY})\\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_init} +\end{figure} + +\textbf{Algorithm mp\_init.} +The purpose of this function is to initialize an mp\_int structure so that the rest of the library can properly +manipulte it. It is assumed that the input may not have had any of its members previously initialized which is certainly +a valid assumption if the input resides on the stack. + +Before any of the members such as \textbf{sign}, \textbf{used} or \textbf{alloc} are initialized the memory for +the digits is allocated. If this fails the function returns before setting any of the other members. The \textbf{MP\_PREC} +name represents a constant\footnote{Defined in the ``tommath.h'' header file within LibTomMath.} +used to dictate the minimum precision of newly initialized mp\_int integers. Ideally, it is at least equal to the smallest +precision number you'll be working with. + +Allocating a block of digits at first instead of a single digit has the benefit of lowering the number of usually slow +heap operations later functions will have to perform in the future. If \textbf{MP\_PREC} is set correctly the slack +memory and the number of heap operations will be trivial. + +Once the allocation has been made the digits have to be set to zero as well as the \textbf{used}, \textbf{sign} and +\textbf{alloc} members initialized. This ensures that the mp\_int will always represent the default state of zero regardless +of the original condition of the input. + +\textbf{Remark.} +This function introduces the idiosyncrasy that all iterative loops, commonly initiated with the ``for'' keyword, iterate incrementally +when the ``to'' keyword is placed between two expressions. For example, ``for $a$ from $b$ to $c$ do'' means that +a subsequent expression (or body of expressions) are to be evaluated upto $c - b$ times so long as $b \le c$. In each +iteration the variable $a$ is substituted for a new integer that lies inclusively between $b$ and $c$. If $b > c$ occured +the loop would not iterate. By contrast if the ``downto'' keyword were used in place of ``to'' the loop would iterate +decrementally. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_init.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* init a new mp_int */ +018 int mp_init (mp_int * a) +019 \{ +020 int i; +021 +022 /* allocate memory required and clear it */ +023 a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * MP_PREC); +024 if (a->dp == NULL) \{ +025 return MP_MEM; +026 \} +027 +028 /* set the digits to zero */ +029 for (i = 0; i < MP_PREC; i++) \{ +030 a->dp[i] = 0; +031 \} +032 +033 /* set the used to zero, allocated digits to the default precision +034 * and sign to positive */ +035 a->used = 0; +036 a->alloc = MP_PREC; +037 a->sign = MP_ZPOS; +038 +039 return MP_OKAY; +040 \} +041 #endif +\end{alltt} +\end{small} + +One immediate observation of this initializtion function is that it does not return a pointer to a mp\_int structure. It +is assumed that the caller has already allocated memory for the mp\_int structure, typically on the application stack. The +call to mp\_init() is used only to initialize the members of the structure to a known default state. + +Here we see (line 23) the memory allocation is performed first. This allows us to exit cleanly and quickly +if there is an error. If the allocation fails the routine will return \textbf{MP\_MEM} to the caller to indicate there +was a memory error. The function XMALLOC is what actually allocates the memory. Technically XMALLOC is not a function +but a macro defined in ``tommath.h``. By default, XMALLOC will evaluate to malloc() which is the C library's built--in +memory allocation routine. + +In order to assure the mp\_int is in a known state the digits must be set to zero. On most platforms this could have been +accomplished by using calloc() instead of malloc(). However, to correctly initialize a integer type to a given value in a +portable fashion you have to actually assign the value. The for loop (line 29) performs this required +operation. + +After the memory has been successfully initialized the remainder of the members are initialized +(lines 33 through 34) to their respective default states. At this point the algorithm has succeeded and +a success code is returned to the calling function. If this function returns \textbf{MP\_OKAY} it is safe to assume the +mp\_int structure has been properly initialized and is safe to use with other functions within the library. + +\subsection{Clearing an mp\_int} +When an mp\_int is no longer required by the application, the memory that has been allocated for its digits must be +returned to the application's memory pool with the mp\_clear algorithm. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_clear}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. The memory for $a$ shall be deallocated. \\ +\hline \\ +1. If $a$ has been previously freed then return(\textit{MP\_OKAY}). \\ +2. for $n$ from 0 to $a.used - 1$ do \\ +\hspace{3mm}2.1 $a_n \leftarrow 0$ \\ +3. Free the memory allocated for the digits of $a$. \\ +4. $a.used \leftarrow 0$ \\ +5. $a.alloc \leftarrow 0$ \\ +6. $a.sign \leftarrow MP\_ZPOS$ \\ +7. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_clear} +\end{figure} + +\textbf{Algorithm mp\_clear.} +This algorithm accomplishes two goals. First, it clears the digits and the other mp\_int members. This ensures that +if a developer accidentally re-uses a cleared structure it is less likely to cause problems. The second goal +is to free the allocated memory. + +The logic behind the algorithm is extended by marking cleared mp\_int structures so that subsequent calls to this +algorithm will not try to free the memory multiple times. Cleared mp\_ints are detectable by having a pre-defined invalid +digit pointer \textbf{dp} setting. + +Once an mp\_int has been cleared the mp\_int structure is no longer in a valid state for any other algorithm +with the exception of algorithms mp\_init, mp\_init\_copy, mp\_init\_size and mp\_clear. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_clear.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* clear one (frees) */ +018 void +019 mp_clear (mp_int * a) +020 \{ +021 int i; +022 +023 /* only do anything if a hasn't been freed previously */ +024 if (a->dp != NULL) \{ +025 /* first zero the digits */ +026 for (i = 0; i < a->used; i++) \{ +027 a->dp[i] = 0; +028 \} +029 +030 /* free ram */ +031 XFREE(a->dp); +032 +033 /* reset members to make debugging easier */ +034 a->dp = NULL; +035 a->alloc = a->used = 0; +036 a->sign = MP_ZPOS; +037 \} +038 \} +039 #endif +\end{alltt} +\end{small} + +The algorithm only operates on the mp\_int if it hasn't been previously cleared. The if statement (line 24) +checks to see if the \textbf{dp} member is not \textbf{NULL}. If the mp\_int is a valid mp\_int then \textbf{dp} cannot be +\textbf{NULL} in which case the if statement will evaluate to true. + +The digits of the mp\_int are cleared by the for loop (line 26) which assigns a zero to every digit. Similar to mp\_init() +the digits are assigned zero instead of using block memory operations (such as memset()) since this is more portable. + +The digits are deallocated off the heap via the XFREE macro. Similar to XMALLOC the XFREE macro actually evaluates to +a standard C library function. In this case the free() function. Since free() only deallocates the memory the pointer +still has to be reset to \textbf{NULL} manually (line 34). + +Now that the digits have been cleared and deallocated the other members are set to their final values (lines 35 and 36). + +\section{Maintenance Algorithms} + +The previous sections describes how to initialize and clear an mp\_int structure. To further support operations +that are to be performed on mp\_int structures (such as addition and multiplication) the dependent algorithms must be +able to augment the precision of an mp\_int and +initialize mp\_ints with differing initial conditions. + +These algorithms complete the set of low level algorithms required to work with mp\_int structures in the higher level +algorithms such as addition, multiplication and modular exponentiation. + +\subsection{Augmenting an mp\_int's Precision} +When storing a value in an mp\_int structure, a sufficient number of digits must be available to accomodate the entire +result of an operation without loss of precision. Quite often the size of the array given by the \textbf{alloc} member +is large enough to simply increase the \textbf{used} digit count. However, when the size of the array is too small it +must be re-sized appropriately to accomodate the result. The mp\_grow algorithm will provide this functionality. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_grow}. \\ +\textbf{Input}. An mp\_int $a$ and an integer $b$. \\ +\textbf{Output}. $a$ is expanded to accomodate $b$ digits. \\ +\hline \\ +1. if $a.alloc \ge b$ then return(\textit{MP\_OKAY}) \\ +2. $u \leftarrow b\mbox{ (mod }MP\_PREC\mbox{)}$ \\ +3. $v \leftarrow b + 2 \cdot MP\_PREC - u$ \\ +4. Re-allocate the array of digits $a$ to size $v$ \\ +5. If the allocation failed then return(\textit{MP\_MEM}). \\ +6. for n from a.alloc to $v - 1$ do \\ +\hspace{+3mm}6.1 $a_n \leftarrow 0$ \\ +7. $a.alloc \leftarrow v$ \\ +8. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_grow} +\end{figure} + +\textbf{Algorithm mp\_grow.} +It is ideal to prevent re-allocations from being performed if they are not required (step one). This is useful to +prevent mp\_ints from growing excessively in code that erroneously calls mp\_grow. + +The requested digit count is padded up to next multiple of \textbf{MP\_PREC} plus an additional \textbf{MP\_PREC} (steps two and three). +This helps prevent many trivial reallocations that would grow an mp\_int by trivially small values. + +It is assumed that the reallocation (step four) leaves the lower $a.alloc$ digits of the mp\_int intact. This is much +akin to how the \textit{realloc} function from the standard C library works. Since the newly allocated digits are +assumed to contain undefined values they are initially set to zero. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_grow.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* grow as required */ +018 int mp_grow (mp_int * a, int size) +019 \{ +020 int i; +021 mp_digit *tmp; +022 +023 /* if the alloc size is smaller alloc more ram */ +024 if (a->alloc < size) \{ +025 /* ensure there are always at least MP_PREC digits extra on top */ +026 size += (MP_PREC * 2) - (size % MP_PREC); +027 +028 /* reallocate the array a->dp +029 * +030 * We store the return in a temporary variable +031 * in case the operation failed we don't want +032 * to overwrite the dp member of a. +033 */ +034 tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * size); +035 if (tmp == NULL) \{ +036 /* reallocation failed but "a" is still valid [can be freed] */ +037 return MP_MEM; +038 \} +039 +040 /* reallocation succeeded so set a->dp */ +041 a->dp = tmp; +042 +043 /* zero excess digits */ +044 i = a->alloc; +045 a->alloc = size; +046 for (; i < a->alloc; i++) \{ +047 a->dp[i] = 0; +048 \} +049 \} +050 return MP_OKAY; +051 \} +052 #endif +\end{alltt} +\end{small} + +A quick optimization is to first determine if a memory re-allocation is required at all. The if statement (line 23) checks +if the \textbf{alloc} member of the mp\_int is smaller than the requested digit count. If the count is not larger than \textbf{alloc} +the function skips the re-allocation part thus saving time. + +When a re-allocation is performed it is turned into an optimal request to save time in the future. The requested digit count is +padded upwards to 2nd multiple of \textbf{MP\_PREC} larger than \textbf{alloc} (line 26). The XREALLOC function is used +to re-allocate the memory. As per the other functions XREALLOC is actually a macro which evaluates to realloc by default. The realloc +function leaves the base of the allocation intact which means the first \textbf{alloc} digits of the mp\_int are the same as before +the re-allocation. All that is left is to clear the newly allocated digits and return. + +Note that the re-allocation result is actually stored in a temporary pointer $tmp$. This is to allow this function to return +an error with a valid pointer. Earlier releases of the library stored the result of XREALLOC into the mp\_int $a$. That would +result in a memory leak if XREALLOC ever failed. + +\subsection{Initializing Variable Precision mp\_ints} +Occasionally the number of digits required will be known in advance of an initialization, based on, for example, the size +of input mp\_ints to a given algorithm. The purpose of algorithm mp\_init\_size is similar to mp\_init except that it +will allocate \textit{at least} a specified number of digits. + +\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_init\_size}. \\ +\textbf{Input}. An mp\_int $a$ and the requested number of digits $b$. \\ +\textbf{Output}. $a$ is initialized to hold at least $b$ digits. \\ +\hline \\ +1. $u \leftarrow b \mbox{ (mod }MP\_PREC\mbox{)}$ \\ +2. $v \leftarrow b + 2 \cdot MP\_PREC - u$ \\ +3. Allocate $v$ digits. \\ +4. for $n$ from $0$ to $v - 1$ do \\ +\hspace{3mm}4.1 $a_n \leftarrow 0$ \\ +5. $a.sign \leftarrow MP\_ZPOS$\\ +6. $a.used \leftarrow 0$\\ +7. $a.alloc \leftarrow v$\\ +8. Return(\textit{MP\_OKAY})\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_init\_size} +\end{figure} + +\textbf{Algorithm mp\_init\_size.} +This algorithm will initialize an mp\_int structure $a$ like algorithm mp\_init with the exception that the number of +digits allocated can be controlled by the second input argument $b$. The input size is padded upwards so it is a +multiple of \textbf{MP\_PREC} plus an additional \textbf{MP\_PREC} digits. This padding is used to prevent trivial +allocations from becoming a bottleneck in the rest of the algorithms. + +Like algorithm mp\_init, the mp\_int structure is initialized to a default state representing the integer zero. This +particular algorithm is useful if it is known ahead of time the approximate size of the input. If the approximation is +correct no further memory re-allocations are required to work with the mp\_int. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_init\_size.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* init an mp_init for a given size */ +018 int mp_init_size (mp_int * a, int size) +019 \{ +020 int x; +021 +022 /* pad size so there are always extra digits */ +023 size += (MP_PREC * 2) - (size % MP_PREC); +024 +025 /* alloc mem */ +026 a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * size); +027 if (a->dp == NULL) \{ +028 return MP_MEM; +029 \} +030 +031 /* set the members */ +032 a->used = 0; +033 a->alloc = size; +034 a->sign = MP_ZPOS; +035 +036 /* zero the digits */ +037 for (x = 0; x < size; x++) \{ +038 a->dp[x] = 0; +039 \} +040 +041 return MP_OKAY; +042 \} +043 #endif +\end{alltt} +\end{small} + +The number of digits $b$ requested is padded (line 23) by first augmenting it to the next multiple of +\textbf{MP\_PREC} and then adding \textbf{MP\_PREC} to the result. If the memory can be successfully allocated the +mp\_int is placed in a default state representing the integer zero. Otherwise, the error code \textbf{MP\_MEM} will be +returned (line 28). + +The digits are allocated and set to zero at the same time with the calloc() function (line @25,XCALLOC@). The +\textbf{used} count is set to zero, the \textbf{alloc} count set to the padded digit count and the \textbf{sign} flag set +to \textbf{MP\_ZPOS} to achieve a default valid mp\_int state (lines 32, 33 and 34). If the function +returns succesfully then it is correct to assume that the mp\_int structure is in a valid state for the remainder of the +functions to work with. + +\subsection{Multiple Integer Initializations and Clearings} +Occasionally a function will require a series of mp\_int data types to be made available simultaneously. +The purpose of algorithm mp\_init\_multi is to initialize a variable length array of mp\_int structures in a single +statement. It is essentially a shortcut to multiple initializations. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_init\_multi}. \\ +\textbf{Input}. Variable length array $V_k$ of mp\_int variables of length $k$. \\ +\textbf{Output}. The array is initialized such that each mp\_int of $V_k$ is ready to use. \\ +\hline \\ +1. for $n$ from 0 to $k - 1$ do \\ +\hspace{+3mm}1.1. Initialize the mp\_int $V_n$ (\textit{mp\_init}) \\ +\hspace{+3mm}1.2. If initialization failed then do \\ +\hspace{+6mm}1.2.1. for $j$ from $0$ to $n$ do \\ +\hspace{+9mm}1.2.1.1. Free the mp\_int $V_j$ (\textit{mp\_clear}) \\ +\hspace{+6mm}1.2.2. Return(\textit{MP\_MEM}) \\ +2. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_init\_multi} +\end{figure} + +\textbf{Algorithm mp\_init\_multi.} +The algorithm will initialize the array of mp\_int variables one at a time. If a runtime error has been detected +(\textit{step 1.2}) all of the previously initialized variables are cleared. The goal is an ``all or nothing'' +initialization which allows for quick recovery from runtime errors. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_init\_multi.c +\vspace{-3mm} +\begin{alltt} +016 #include +017 +018 int mp_init_multi(mp_int *mp, ...) +019 \{ +020 mp_err res = MP_OKAY; /* Assume ok until proven otherwise */ +021 int n = 0; /* Number of ok inits */ +022 mp_int* cur_arg = mp; +023 va_list args; +024 +025 va_start(args, mp); /* init args to next argument from caller */ +026 while (cur_arg != NULL) \{ +027 if (mp_init(cur_arg) != MP_OKAY) \{ +028 /* Oops - error! Back-track and mp_clear what we already +029 succeeded in init-ing, then return error. +030 */ +031 va_list clean_args; +032 +033 /* end the current list */ +034 va_end(args); +035 +036 /* now start cleaning up */ +037 cur_arg = mp; +038 va_start(clean_args, mp); +039 while (n--) \{ +040 mp_clear(cur_arg); +041 cur_arg = va_arg(clean_args, mp_int*); +042 \} +043 va_end(clean_args); +044 res = MP_MEM; +045 break; +046 \} +047 n++; +048 cur_arg = va_arg(args, mp_int*); +049 \} +050 va_end(args); +051 return res; /* Assumed ok, if error flagged above. */ +052 \} +053 +054 #endif +\end{alltt} +\end{small} + +This function intializes a variable length list of mp\_int structure pointers. However, instead of having the mp\_int +structures in an actual C array they are simply passed as arguments to the function. This function makes use of the +``...'' argument syntax of the C programming language. The list is terminated with a final \textbf{NULL} argument +appended on the right. + +The function uses the ``stdarg.h'' \textit{va} functions to step portably through the arguments to the function. A count +$n$ of succesfully initialized mp\_int structures is maintained (line 47) such that if a failure does occur, +the algorithm can backtrack and free the previously initialized structures (lines 27 to 46). + + +\subsection{Clamping Excess Digits} +When a function anticipates a result will be $n$ digits it is simpler to assume this is true within the body of +the function instead of checking during the computation. For example, a multiplication of a $i$ digit number by a +$j$ digit produces a result of at most $i + j$ digits. It is entirely possible that the result is $i + j - 1$ +though, with no final carry into the last position. However, suppose the destination had to be first expanded +(\textit{via mp\_grow}) to accomodate $i + j - 1$ digits than further expanded to accomodate the final carry. +That would be a considerable waste of time since heap operations are relatively slow. + +The ideal solution is to always assume the result is $i + j$ and fix up the \textbf{used} count after the function +terminates. This way a single heap operation (\textit{at most}) is required. However, if the result was not checked +there would be an excess high order zero digit. + +For example, suppose the product of two integers was $x_n = (0x_{n-1}x_{n-2}...x_0)_{\beta}$. The leading zero digit +will not contribute to the precision of the result. In fact, through subsequent operations more leading zero digits would +accumulate to the point the size of the integer would be prohibitive. As a result even though the precision is very +low the representation is excessively large. + +The mp\_clamp algorithm is designed to solve this very problem. It will trim high-order zeros by decrementing the +\textbf{used} count until a non-zero most significant digit is found. Also in this system, zero is considered to be a +positive number which means that if the \textbf{used} count is decremented to zero, the sign must be set to +\textbf{MP\_ZPOS}. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_clamp}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Any excess leading zero digits of $a$ are removed \\ +\hline \\ +1. while $a.used > 0$ and $a_{a.used - 1} = 0$ do \\ +\hspace{+3mm}1.1 $a.used \leftarrow a.used - 1$ \\ +2. if $a.used = 0$ then do \\ +\hspace{+3mm}2.1 $a.sign \leftarrow MP\_ZPOS$ \\ +\hline \\ +\end{tabular} +\end{center} +\caption{Algorithm mp\_clamp} +\end{figure} + +\textbf{Algorithm mp\_clamp.} +As can be expected this algorithm is very simple. The loop on step one is expected to iterate only once or twice at +the most. For example, this will happen in cases where there is not a carry to fill the last position. Step two fixes the sign for +when all of the digits are zero to ensure that the mp\_int is valid at all times. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_clamp.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* trim unused digits +018 * +019 * This is used to ensure that leading zero digits are +020 * trimed and the leading "used" digit will be non-zero +021 * Typically very fast. Also fixes the sign if there +022 * are no more leading digits +023 */ +024 void +025 mp_clamp (mp_int * a) +026 \{ +027 /* decrease used while the most significant digit is +028 * zero. +029 */ +030 while (a->used > 0 && a->dp[a->used - 1] == 0) \{ +031 --(a->used); +032 \} +033 +034 /* reset the sign flag if used == 0 */ +035 if (a->used == 0) \{ +036 a->sign = MP_ZPOS; +037 \} +038 \} +039 #endif +\end{alltt} +\end{small} + +Note on line 27 how to test for the \textbf{used} count is made on the left of the \&\& operator. In the C programming +language the terms to \&\& are evaluated left to right with a boolean short-circuit if any condition fails. This is +important since if the \textbf{used} is zero the test on the right would fetch below the array. That is obviously +undesirable. The parenthesis on line 30 is used to make sure the \textbf{used} count is decremented and not +the pointer ``a''. + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 1 \right ]$ & Discuss the relevance of the \textbf{used} member of the mp\_int structure. \\ + & \\ +$\left [ 1 \right ]$ & Discuss the consequences of not using padding when performing allocations. \\ + & \\ +$\left [ 2 \right ]$ & Estimate an ideal value for \textbf{MP\_PREC} when performing 1024-bit RSA \\ + & encryption when $\beta = 2^{28}$. \\ + & \\ +$\left [ 1 \right ]$ & Discuss the relevance of the algorithm mp\_clamp. What does it prevent? \\ + & \\ +$\left [ 1 \right ]$ & Give an example of when the algorithm mp\_init\_copy might be useful. \\ + & \\ +\end{tabular} + + +%%% +% CHAPTER FOUR +%%% + +\chapter{Basic Operations} + +\section{Introduction} +In the previous chapter a series of low level algorithms were established that dealt with initializing and maintaining +mp\_int structures. This chapter will discuss another set of seemingly non-algebraic algorithms which will form the low +level basis of the entire library. While these algorithm are relatively trivial it is important to understand how they +work before proceeding since these algorithms will be used almost intrinsically in the following chapters. + +The algorithms in this chapter deal primarily with more ``programmer'' related tasks such as creating copies of +mp\_int structures, assigning small values to mp\_int structures and comparisons of the values mp\_int structures +represent. + +\section{Assigning Values to mp\_int Structures} +\subsection{Copying an mp\_int} +Assigning the value that a given mp\_int structure represents to another mp\_int structure shall be known as making +a copy for the purposes of this text. The copy of the mp\_int will be a separate entity that represents the same +value as the mp\_int it was copied from. The mp\_copy algorithm provides this functionality. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_copy}. \\ +\textbf{Input}. An mp\_int $a$ and $b$. \\ +\textbf{Output}. Store a copy of $a$ in $b$. \\ +\hline \\ +1. If $b.alloc < a.used$ then grow $b$ to $a.used$ digits. (\textit{mp\_grow}) \\ +2. for $n$ from 0 to $a.used - 1$ do \\ +\hspace{3mm}2.1 $b_{n} \leftarrow a_{n}$ \\ +3. for $n$ from $a.used$ to $b.used - 1$ do \\ +\hspace{3mm}3.1 $b_{n} \leftarrow 0$ \\ +4. $b.used \leftarrow a.used$ \\ +5. $b.sign \leftarrow a.sign$ \\ +6. return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_copy} +\end{figure} + +\textbf{Algorithm mp\_copy.} +This algorithm copies the mp\_int $a$ such that upon succesful termination of the algorithm the mp\_int $b$ will +represent the same integer as the mp\_int $a$. The mp\_int $b$ shall be a complete and distinct copy of the +mp\_int $a$ meaing that the mp\_int $a$ can be modified and it shall not affect the value of the mp\_int $b$. + +If $b$ does not have enough room for the digits of $a$ it must first have its precision augmented via the mp\_grow +algorithm. The digits of $a$ are copied over the digits of $b$ and any excess digits of $b$ are set to zero (step two +and three). The \textbf{used} and \textbf{sign} members of $a$ are finally copied over the respective members of +$b$. + +\textbf{Remark.} This algorithm also introduces a new idiosyncrasy that will be used throughout the rest of the +text. The error return codes of other algorithms are not explicitly checked in the pseudo-code presented. For example, in +step one of the mp\_copy algorithm the return of mp\_grow is not explicitly checked to ensure it succeeded. Text space is +limited so it is assumed that if a algorithm fails it will clear all temporarily allocated mp\_ints and return +the error code itself. However, the C code presented will demonstrate all of the error handling logic required to +implement the pseudo-code. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_copy.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* copy, b = a */ +018 int +019 mp_copy (mp_int * a, mp_int * b) +020 \{ +021 int res, n; +022 +023 /* if dst == src do nothing */ +024 if (a == b) \{ +025 return MP_OKAY; +026 \} +027 +028 /* grow dest */ +029 if (b->alloc < a->used) \{ +030 if ((res = mp_grow (b, a->used)) != MP_OKAY) \{ +031 return res; +032 \} +033 \} +034 +035 /* zero b and copy the parameters over */ +036 \{ +037 register mp_digit *tmpa, *tmpb; +038 +039 /* pointer aliases */ +040 +041 /* source */ +042 tmpa = a->dp; +043 +044 /* destination */ +045 tmpb = b->dp; +046 +047 /* copy all the digits */ +048 for (n = 0; n < a->used; n++) \{ +049 *tmpb++ = *tmpa++; +050 \} +051 +052 /* clear high digits */ +053 for (; n < b->used; n++) \{ +054 *tmpb++ = 0; +055 \} +056 \} +057 +058 /* copy used count and sign */ +059 b->used = a->used; +060 b->sign = a->sign; +061 return MP_OKAY; +062 \} +063 #endif +\end{alltt} +\end{small} + +Occasionally a dependent algorithm may copy an mp\_int effectively into itself such as when the input and output +mp\_int structures passed to a function are one and the same. For this case it is optimal to return immediately without +copying digits (line 24). + +The mp\_int $b$ must have enough digits to accomodate the used digits of the mp\_int $a$. If $b.alloc$ is less than +$a.used$ the algorithm mp\_grow is used to augment the precision of $b$ (lines 29 to 33). In order to +simplify the inner loop that copies the digits from $a$ to $b$, two aliases $tmpa$ and $tmpb$ point directly at the digits +of the mp\_ints $a$ and $b$ respectively. These aliases (lines 42 and 45) allow the compiler to access the digits without first dereferencing the +mp\_int pointers and then subsequently the pointer to the digits. + +After the aliases are established the digits from $a$ are copied into $b$ (lines 48 to 50) and then the excess +digits of $b$ are set to zero (lines 53 to 55). Both ``for'' loops make use of the pointer aliases and in +fact the alias for $b$ is carried through into the second ``for'' loop to clear the excess digits. This optimization +allows the alias to stay in a machine register fairly easy between the two loops. + +\textbf{Remarks.} The use of pointer aliases is an implementation methodology first introduced in this function that will +be used considerably in other functions. Technically, a pointer alias is simply a short hand alias used to lower the +number of pointer dereferencing operations required to access data. For example, a for loop may resemble + +\begin{alltt} +for (x = 0; x < 100; x++) \{ + a->num[4]->dp[x] = 0; +\} +\end{alltt} + +This could be re-written using aliases as + +\begin{alltt} +mp_digit *tmpa; +a = a->num[4]->dp; +for (x = 0; x < 100; x++) \{ + *a++ = 0; +\} +\end{alltt} + +In this case an alias is used to access the +array of digits within an mp\_int structure directly. It may seem that a pointer alias is strictly not required +as a compiler may optimize out the redundant pointer operations. However, there are two dominant reasons to use aliases. + +The first reason is that most compilers will not effectively optimize pointer arithmetic. For example, some optimizations +may work for the Microsoft Visual C++ compiler (MSVC) and not for the GNU C Compiler (GCC). Also some optimizations may +work for GCC and not MSVC. As such it is ideal to find a common ground for as many compilers as possible. Pointer +aliases optimize the code considerably before the compiler even reads the source code which means the end compiled code +stands a better chance of being faster. + +The second reason is that pointer aliases often can make an algorithm simpler to read. Consider the first ``for'' +loop of the function mp\_copy() re-written to not use pointer aliases. + +\begin{alltt} + /* copy all the digits */ + for (n = 0; n < a->used; n++) \{ + b->dp[n] = a->dp[n]; + \} +\end{alltt} + +Whether this code is harder to read depends strongly on the individual. However, it is quantifiably slightly more +complicated as there are four variables within the statement instead of just two. + +\subsubsection{Nested Statements} +Another commonly used technique in the source routines is that certain sections of code are nested. This is used in +particular with the pointer aliases to highlight code phases. For example, a Comba multiplier (discussed in chapter six) +will typically have three different phases. First the temporaries are initialized, then the columns calculated and +finally the carries are propagated. In this example the middle column production phase will typically be nested as it +uses temporary variables and aliases the most. + +The nesting also simplies the source code as variables that are nested are only valid for their scope. As a result +the various temporary variables required do not propagate into other sections of code. + + +\subsection{Creating a Clone} +Another common operation is to make a local temporary copy of an mp\_int argument. To initialize an mp\_int +and then copy another existing mp\_int into the newly intialized mp\_int will be known as creating a clone. This is +useful within functions that need to modify an argument but do not wish to actually modify the original copy. The +mp\_init\_copy algorithm has been designed to help perform this task. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_init\_copy}. \\ +\textbf{Input}. An mp\_int $a$ and $b$\\ +\textbf{Output}. $a$ is initialized to be a copy of $b$. \\ +\hline \\ +1. Init $a$. (\textit{mp\_init}) \\ +2. Copy $b$ to $a$. (\textit{mp\_copy}) \\ +3. Return the status of the copy operation. \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_init\_copy} +\end{figure} + +\textbf{Algorithm mp\_init\_copy.} +This algorithm will initialize an mp\_int variable and copy another previously initialized mp\_int variable into it. As +such this algorithm will perform two operations in one step. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_init\_copy.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* creates "a" then copies b into it */ +018 int mp_init_copy (mp_int * a, mp_int * b) +019 \{ +020 int res; +021 +022 if ((res = mp_init (a)) != MP_OKAY) \{ +023 return res; +024 \} +025 return mp_copy (b, a); +026 \} +027 #endif +\end{alltt} +\end{small} + +This will initialize \textbf{a} and make it a verbatim copy of the contents of \textbf{b}. Note that +\textbf{a} will have its own memory allocated which means that \textbf{b} may be cleared after the call +and \textbf{a} will be left intact. + +\section{Zeroing an Integer} +Reseting an mp\_int to the default state is a common step in many algorithms. The mp\_zero algorithm will be the algorithm used to +perform this task. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_zero}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Zero the contents of $a$ \\ +\hline \\ +1. $a.used \leftarrow 0$ \\ +2. $a.sign \leftarrow$ MP\_ZPOS \\ +3. for $n$ from 0 to $a.alloc - 1$ do \\ +\hspace{3mm}3.1 $a_n \leftarrow 0$ \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_zero} +\end{figure} + +\textbf{Algorithm mp\_zero.} +This algorithm simply resets a mp\_int to the default state. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_zero.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* set to zero */ +018 void +019 mp_zero (mp_int * a) +020 \{ +021 a->sign = MP_ZPOS; +022 a->used = 0; +023 memset (a->dp, 0, sizeof (mp_digit) * a->alloc); +024 \} +025 #endif +\end{alltt} +\end{small} + +After the function is completed, all of the digits are zeroed, the \textbf{used} count is zeroed and the +\textbf{sign} variable is set to \textbf{MP\_ZPOS}. + +\section{Sign Manipulation} +\subsection{Absolute Value} +With the mp\_int representation of an integer, calculating the absolute value is trivial. The mp\_abs algorithm will compute +the absolute value of an mp\_int. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_abs}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Computes $b = \vert a \vert$ \\ +\hline \\ +1. Copy $a$ to $b$. (\textit{mp\_copy}) \\ +2. If the copy failed return(\textit{MP\_MEM}). \\ +3. $b.sign \leftarrow MP\_ZPOS$ \\ +4. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_abs} +\end{figure} + +\textbf{Algorithm mp\_abs.} +This algorithm computes the absolute of an mp\_int input. First it copies $a$ over $b$. This is an example of an +algorithm where the check in mp\_copy that determines if the source and destination are equal proves useful. This allows, +for instance, the developer to pass the same mp\_int as the source and destination to this function without addition +logic to handle it. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_abs.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* b = |a| +018 * +019 * Simple function copies the input and fixes the sign to positive +020 */ +021 int +022 mp_abs (mp_int * a, mp_int * b) +023 \{ +024 int res; +025 +026 /* copy a to b */ +027 if (a != b) \{ +028 if ((res = mp_copy (a, b)) != MP_OKAY) \{ +029 return res; +030 \} +031 \} +032 +033 /* force the sign of b to positive */ +034 b->sign = MP_ZPOS; +035 +036 return MP_OKAY; +037 \} +038 #endif +\end{alltt} +\end{small} + +\subsection{Integer Negation} +With the mp\_int representation of an integer, calculating the negation is also trivial. The mp\_neg algorithm will compute +the negative of an mp\_int input. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_neg}. \\ +\textbf{Input}. An mp\_int $a$ \\ +\textbf{Output}. Computes $b = -a$ \\ +\hline \\ +1. Copy $a$ to $b$. (\textit{mp\_copy}) \\ +2. If the copy failed return(\textit{MP\_MEM}). \\ +3. If $a.used = 0$ then return(\textit{MP\_OKAY}). \\ +4. If $a.sign = MP\_ZPOS$ then do \\ +\hspace{3mm}4.1 $b.sign = MP\_NEG$. \\ +5. else do \\ +\hspace{3mm}5.1 $b.sign = MP\_ZPOS$. \\ +6. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_neg} +\end{figure} + +\textbf{Algorithm mp\_neg.} +This algorithm computes the negation of an input. First it copies $a$ over $b$. If $a$ has no used digits then +the algorithm returns immediately. Otherwise it flips the sign flag and stores the result in $b$. Note that if +$a$ had no digits then it must be positive by definition. Had step three been omitted then the algorithm would return +zero as negative. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_neg.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* b = -a */ +018 int mp_neg (mp_int * a, mp_int * b) +019 \{ +020 int res; +021 if ((res = mp_copy (a, b)) != MP_OKAY) \{ +022 return res; +023 \} +024 if (mp_iszero(b) != MP_YES) \{ +025 b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; +026 \} +027 return MP_OKAY; +028 \} +029 #endif +\end{alltt} +\end{small} + +\section{Small Constants} +\subsection{Setting Small Constants} +Often a mp\_int must be set to a relatively small value such as $1$ or $2$. For these cases the mp\_set algorithm is useful. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_set}. \\ +\textbf{Input}. An mp\_int $a$ and a digit $b$ \\ +\textbf{Output}. Make $a$ equivalent to $b$ \\ +\hline \\ +1. Zero $a$ (\textit{mp\_zero}). \\ +2. $a_0 \leftarrow b \mbox{ (mod }\beta\mbox{)}$ \\ +3. $a.used \leftarrow \left \lbrace \begin{array}{ll} + 1 & \mbox{if }a_0 > 0 \\ + 0 & \mbox{if }a_0 = 0 + \end{array} \right .$ \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_set} +\end{figure} + +\textbf{Algorithm mp\_set.} +This algorithm sets a mp\_int to a small single digit value. Step number 1 ensures that the integer is reset to the default state. The +single digit is set (\textit{modulo $\beta$}) and the \textbf{used} count is adjusted accordingly. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_set.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* set to a digit */ +018 void mp_set (mp_int * a, mp_digit b) +019 \{ +020 mp_zero (a); +021 a->dp[0] = b & MP_MASK; +022 a->used = (a->dp[0] != 0) ? 1 : 0; +023 \} +024 #endif +\end{alltt} +\end{small} + +Line 20 calls mp\_zero() to clear the mp\_int and reset the sign. Line 21 copies the digit +into the least significant location. Note the usage of a new constant \textbf{MP\_MASK}. This constant is used to quickly +reduce an integer modulo $\beta$. Since $\beta$ is of the form $2^k$ for any suitable $k$ it suffices to perform a binary AND with +$MP\_MASK = 2^k - 1$ to perform the reduction. Finally line 22 will set the \textbf{used} member with respect to the +digit actually set. This function will always make the integer positive. + +One important limitation of this function is that it will only set one digit. The size of a digit is not fixed, meaning source that uses +this function should take that into account. Only trivially small constants can be set using this function. + +\subsection{Setting Large Constants} +To overcome the limitations of the mp\_set algorithm the mp\_set\_int algorithm is ideal. It accepts a ``long'' +data type as input and will always treat it as a 32-bit integer. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_set\_int}. \\ +\textbf{Input}. An mp\_int $a$ and a ``long'' integer $b$ \\ +\textbf{Output}. Make $a$ equivalent to $b$ \\ +\hline \\ +1. Zero $a$ (\textit{mp\_zero}) \\ +2. for $n$ from 0 to 7 do \\ +\hspace{3mm}2.1 $a \leftarrow a \cdot 16$ (\textit{mp\_mul2d}) \\ +\hspace{3mm}2.2 $u \leftarrow \lfloor b / 2^{4(7 - n)} \rfloor \mbox{ (mod }16\mbox{)}$\\ +\hspace{3mm}2.3 $a_0 \leftarrow a_0 + u$ \\ +\hspace{3mm}2.4 $a.used \leftarrow a.used + 1$ \\ +3. Clamp excess used digits (\textit{mp\_clamp}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_set\_int} +\end{figure} + +\textbf{Algorithm mp\_set\_int.} +The algorithm performs eight iterations of a simple loop where in each iteration four bits from the source are added to the +mp\_int. Step 2.1 will multiply the current result by sixteen making room for four more bits in the less significant positions. In step 2.2 the +next four bits from the source are extracted and are added to the mp\_int. The \textbf{used} digit count is +incremented to reflect the addition. The \textbf{used} digit counter is incremented since if any of the leading digits were zero the mp\_int would have +zero digits used and the newly added four bits would be ignored. + +Excess zero digits are trimmed in steps 2.1 and 3 by using higher level algorithms mp\_mul2d and mp\_clamp. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_set\_int.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* set a 32-bit const */ +018 int mp_set_int (mp_int * a, unsigned long b) +019 \{ +020 int x, res; +021 +022 mp_zero (a); +023 +024 /* set four bits at a time */ +025 for (x = 0; x < 8; x++) \{ +026 /* shift the number up four bits */ +027 if ((res = mp_mul_2d (a, 4, a)) != MP_OKAY) \{ +028 return res; +029 \} +030 +031 /* OR in the top four bits of the source */ +032 a->dp[0] |= (b >> 28) & 15; +033 +034 /* shift the source up to the next four bits */ +035 b <<= 4; +036 +037 /* ensure that digits are not clamped off */ +038 a->used += 1; +039 \} +040 mp_clamp (a); +041 return MP_OKAY; +042 \} +043 #endif +\end{alltt} +\end{small} + +This function sets four bits of the number at a time to handle all practical \textbf{DIGIT\_BIT} sizes. The weird +addition on line 38 ensures that the newly added in bits are added to the number of digits. While it may not +seem obvious as to why the digit counter does not grow exceedingly large it is because of the shift on line 27 +as well as the call to mp\_clamp() on line 40. Both functions will clamp excess leading digits which keeps +the number of used digits low. + +\section{Comparisons} +\subsection{Unsigned Comparisions} +Comparing a multiple precision integer is performed with the exact same algorithm used to compare two decimal numbers. For example, +to compare $1,234$ to $1,264$ the digits are extracted by their positions. That is we compare $1 \cdot 10^3 + 2 \cdot 10^2 + 3 \cdot 10^1 + 4 \cdot 10^0$ +to $1 \cdot 10^3 + 2 \cdot 10^2 + 6 \cdot 10^1 + 4 \cdot 10^0$ by comparing single digits at a time starting with the highest magnitude +positions. If any leading digit of one integer is greater than a digit in the same position of another integer then obviously it must be greater. + +The first comparision routine that will be developed is the unsigned magnitude compare which will perform a comparison based on the digits of two +mp\_int variables alone. It will ignore the sign of the two inputs. Such a function is useful when an absolute comparison is required or if the +signs are known to agree in advance. + +To facilitate working with the results of the comparison functions three constants are required. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{|r|l|} +\hline \textbf{Constant} & \textbf{Meaning} \\ +\hline \textbf{MP\_GT} & Greater Than \\ +\hline \textbf{MP\_EQ} & Equal To \\ +\hline \textbf{MP\_LT} & Less Than \\ +\hline +\end{tabular} +\end{center} +\caption{Comparison Return Codes} +\end{figure} + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_cmp\_mag}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$. \\ +\textbf{Output}. Unsigned comparison results ($a$ to the left of $b$). \\ +\hline \\ +1. If $a.used > b.used$ then return(\textit{MP\_GT}) \\ +2. If $a.used < b.used$ then return(\textit{MP\_LT}) \\ +3. for n from $a.used - 1$ to 0 do \\ +\hspace{+3mm}3.1 if $a_n > b_n$ then return(\textit{MP\_GT}) \\ +\hspace{+3mm}3.2 if $a_n < b_n$ then return(\textit{MP\_LT}) \\ +4. Return(\textit{MP\_EQ}) \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_cmp\_mag} +\end{figure} + +\textbf{Algorithm mp\_cmp\_mag.} +By saying ``$a$ to the left of $b$'' it is meant that the comparison is with respect to $a$, that is if $a$ is greater than $b$ it will return +\textbf{MP\_GT} and similar with respect to when $a = b$ and $a < b$. The first two steps compare the number of digits used in both $a$ and $b$. +Obviously if the digit counts differ there would be an imaginary zero digit in the smaller number where the leading digit of the larger number is. +If both have the same number of digits than the actual digits themselves must be compared starting at the leading digit. + +By step three both inputs must have the same number of digits so its safe to start from either $a.used - 1$ or $b.used - 1$ and count down to +the zero'th digit. If after all of the digits have been compared, no difference is found, the algorithm returns \textbf{MP\_EQ}. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_cmp\_mag.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* compare maginitude of two ints (unsigned) */ +018 int mp_cmp_mag (mp_int * a, mp_int * b) +019 \{ +020 int n; +021 mp_digit *tmpa, *tmpb; +022 +023 /* compare based on # of non-zero digits */ +024 if (a->used > b->used) \{ +025 return MP_GT; +026 \} +027 +028 if (a->used < b->used) \{ +029 return MP_LT; +030 \} +031 +032 /* alias for a */ +033 tmpa = a->dp + (a->used - 1); +034 +035 /* alias for b */ +036 tmpb = b->dp + (a->used - 1); +037 +038 /* compare based on digits */ +039 for (n = 0; n < a->used; ++n, --tmpa, --tmpb) \{ +040 if (*tmpa > *tmpb) \{ +041 return MP_GT; +042 \} +043 +044 if (*tmpa < *tmpb) \{ +045 return MP_LT; +046 \} +047 \} +048 return MP_EQ; +049 \} +050 #endif +\end{alltt} +\end{small} + +The two if statements on lines 24 and 28 compare the number of digits in the two inputs. These two are performed before all of the digits +are compared since it is a very cheap test to perform and can potentially save considerable time. The implementation given is also not valid +without those two statements. $b.alloc$ may be smaller than $a.used$, meaning that undefined values will be read from $b$ past the end of the +array of digits. + +\subsection{Signed Comparisons} +Comparing with sign considerations is also fairly critical in several routines (\textit{division for example}). Based on an unsigned magnitude +comparison a trivial signed comparison algorithm can be written. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_cmp}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ \\ +\textbf{Output}. Signed Comparison Results ($a$ to the left of $b$) \\ +\hline \\ +1. if $a.sign = MP\_NEG$ and $b.sign = MP\_ZPOS$ then return(\textit{MP\_LT}) \\ +2. if $a.sign = MP\_ZPOS$ and $b.sign = MP\_NEG$ then return(\textit{MP\_GT}) \\ +3. if $a.sign = MP\_NEG$ then \\ +\hspace{+3mm}3.1 Return the unsigned comparison of $b$ and $a$ (\textit{mp\_cmp\_mag}) \\ +4 Otherwise \\ +\hspace{+3mm}4.1 Return the unsigned comparison of $a$ and $b$ \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_cmp} +\end{figure} + +\textbf{Algorithm mp\_cmp.} +The first two steps compare the signs of the two inputs. If the signs do not agree then it can return right away with the appropriate +comparison code. When the signs are equal the digits of the inputs must be compared to determine the correct result. In step +three the unsigned comparision flips the order of the arguments since they are both negative. For instance, if $-a > -b$ then +$\vert a \vert < \vert b \vert$. Step number four will compare the two when they are both positive. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_cmp.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* compare two ints (signed)*/ +018 int +019 mp_cmp (mp_int * a, mp_int * b) +020 \{ +021 /* compare based on sign */ +022 if (a->sign != b->sign) \{ +023 if (a->sign == MP_NEG) \{ +024 return MP_LT; +025 \} else \{ +026 return MP_GT; +027 \} +028 \} +029 +030 /* compare digits */ +031 if (a->sign == MP_NEG) \{ +032 /* if negative compare opposite direction */ +033 return mp_cmp_mag(b, a); +034 \} else \{ +035 return mp_cmp_mag(a, b); +036 \} +037 \} +038 #endif +\end{alltt} +\end{small} + +The two if statements on lines 22 and 23 perform the initial sign comparison. If the signs are not the equal then which ever +has the positive sign is larger. At line 31, the inputs are compared based on magnitudes. If the signs were both negative then +the unsigned comparison is performed in the opposite direction (\textit{line 33}). Otherwise, the signs are assumed to +be both positive and a forward direction unsigned comparison is performed. + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 2 \right ]$ & Modify algorithm mp\_set\_int to accept as input a variable length array of bits. \\ + & \\ +$\left [ 3 \right ]$ & Give the probability that algorithm mp\_cmp\_mag will have to compare $k$ digits \\ + & of two random digits (of equal magnitude) before a difference is found. \\ + & \\ +$\left [ 1 \right ]$ & Suggest a simple method to speed up the implementation of mp\_cmp\_mag based \\ + & on the observations made in the previous problem. \\ + & +\end{tabular} + +\chapter{Basic Arithmetic} +\section{Introduction} +At this point algorithms for initialization, clearing, zeroing, copying, comparing and setting small constants have been +established. The next logical set of algorithms to develop are addition, subtraction and digit shifting algorithms. These +algorithms make use of the lower level algorithms and are the cruicial building block for the multiplication algorithms. It is very important +that these algorithms are highly optimized. On their own they are simple $O(n)$ algorithms but they can be called from higher level algorithms +which easily places them at $O(n^2)$ or even $O(n^3)$ work levels. + +All of the algorithms within this chapter make use of the logical bit shift operations denoted by $<<$ and $>>$ for left and right +logical shifts respectively. A logical shift is analogous to sliding the decimal point of radix-10 representations. For example, the real +number $0.9345$ is equivalent to $93.45\%$ which is found by sliding the the decimal two places to the right (\textit{multiplying by $\beta^2 = 10^2$}). +Algebraically a binary logical shift is equivalent to a division or multiplication by a power of two. +For example, $a << k = a \cdot 2^k$ while $a >> k = \lfloor a/2^k \rfloor$. + +One significant difference between a logical shift and the way decimals are shifted is that digits below the zero'th position are removed +from the number. For example, consider $1101_2 >> 1$ using decimal notation this would produce $110.1_2$. However, with a logical shift the +result is $110_2$. + +\section{Addition and Subtraction} +In common twos complement fixed precision arithmetic negative numbers are easily represented by subtraction from the modulus. For example, with 32-bit integers +$a - b\mbox{ (mod }2^{32}\mbox{)}$ is the same as $a + (2^{32} - b) \mbox{ (mod }2^{32}\mbox{)}$ since $2^{32} \equiv 0 \mbox{ (mod }2^{32}\mbox{)}$. +As a result subtraction can be performed with a trivial series of logical operations and an addition. + +However, in multiple precision arithmetic negative numbers are not represented in the same way. Instead a sign flag is used to keep track of the +sign of the integer. As a result signed addition and subtraction are actually implemented as conditional usage of lower level addition or +subtraction algorithms with the sign fixed up appropriately. + +The lower level algorithms will add or subtract integers without regard to the sign flag. That is they will add or subtract the magnitude of +the integers respectively. + +\subsection{Low Level Addition} +An unsigned addition of multiple precision integers is performed with the same long-hand algorithm used to add decimal numbers. That is to add the +trailing digits first and propagate the resulting carry upwards. Since this is a lower level algorithm the name will have a ``s\_'' prefix. +Historically that convention stems from the MPI library where ``s\_'' stood for static functions that were hidden from the developer entirely. + +\newpage +\begin{figure}[!here] +\begin{center} +\begin{small} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_add}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ \\ +\textbf{Output}. The unsigned addition $c = \vert a \vert + \vert b \vert$. \\ +\hline \\ +1. if $a.used > b.used$ then \\ +\hspace{+3mm}1.1 $min \leftarrow b.used$ \\ +\hspace{+3mm}1.2 $max \leftarrow a.used$ \\ +\hspace{+3mm}1.3 $x \leftarrow a$ \\ +2. else \\ +\hspace{+3mm}2.1 $min \leftarrow a.used$ \\ +\hspace{+3mm}2.2 $max \leftarrow b.used$ \\ +\hspace{+3mm}2.3 $x \leftarrow b$ \\ +3. If $c.alloc < max + 1$ then grow $c$ to hold at least $max + 1$ digits (\textit{mp\_grow}) \\ +4. $oldused \leftarrow c.used$ \\ +5. $c.used \leftarrow max + 1$ \\ +6. $u \leftarrow 0$ \\ +7. for $n$ from $0$ to $min - 1$ do \\ +\hspace{+3mm}7.1 $c_n \leftarrow a_n + b_n + u$ \\ +\hspace{+3mm}7.2 $u \leftarrow c_n >> lg(\beta)$ \\ +\hspace{+3mm}7.3 $c_n \leftarrow c_n \mbox{ (mod }\beta\mbox{)}$ \\ +8. if $min \ne max$ then do \\ +\hspace{+3mm}8.1 for $n$ from $min$ to $max - 1$ do \\ +\hspace{+6mm}8.1.1 $c_n \leftarrow x_n + u$ \\ +\hspace{+6mm}8.1.2 $u \leftarrow c_n >> lg(\beta)$ \\ +\hspace{+6mm}8.1.3 $c_n \leftarrow c_n \mbox{ (mod }\beta\mbox{)}$ \\ +9. $c_{max} \leftarrow u$ \\ +10. if $olduse > max$ then \\ +\hspace{+3mm}10.1 for $n$ from $max + 1$ to $oldused - 1$ do \\ +\hspace{+6mm}10.1.1 $c_n \leftarrow 0$ \\ +11. Clamp excess digits in $c$. (\textit{mp\_clamp}) \\ +12. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Algorithm s\_mp\_add} +\end{figure} + +\textbf{Algorithm s\_mp\_add.} +This algorithm is loosely based on algorithm 14.7 of HAC \cite[pp. 594]{HAC} but has been extended to allow the inputs to have different magnitudes. +Coincidentally the description of algorithm A in Knuth \cite[pp. 266]{TAOCPV2} shares the same deficiency as the algorithm from \cite{HAC}. Even the +MIX pseudo machine code presented by Knuth \cite[pp. 266-267]{TAOCPV2} is incapable of handling inputs which are of different magnitudes. + +The first thing that has to be accomplished is to sort out which of the two inputs is the largest. The addition logic +will simply add all of the smallest input to the largest input and store that first part of the result in the +destination. Then it will apply a simpler addition loop to excess digits of the larger input. + +The first two steps will handle sorting the inputs such that $min$ and $max$ hold the digit counts of the two +inputs. The variable $x$ will be an mp\_int alias for the largest input or the second input $b$ if they have the +same number of digits. After the inputs are sorted the destination $c$ is grown as required to accomodate the sum +of the two inputs. The original \textbf{used} count of $c$ is copied and set to the new used count. + +At this point the first addition loop will go through as many digit positions that both inputs have. The carry +variable $\mu$ is set to zero outside the loop. Inside the loop an ``addition'' step requires three statements to produce +one digit of the summand. First +two digits from $a$ and $b$ are added together along with the carry $\mu$. The carry of this step is extracted and stored +in $\mu$ and finally the digit of the result $c_n$ is truncated within the range $0 \le c_n < \beta$. + +Now all of the digit positions that both inputs have in common have been exhausted. If $min \ne max$ then $x$ is an alias +for one of the inputs that has more digits. A simplified addition loop is then used to essentially copy the remaining digits +and the carry to the destination. + +The final carry is stored in $c_{max}$ and digits above $max$ upto $oldused$ are zeroed which completes the addition. + + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_s\_mp\_add.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* low level addition, based on HAC pp.594, Algorithm 14.7 */ +018 int +019 s_mp_add (mp_int * a, mp_int * b, mp_int * c) +020 \{ +021 mp_int *x; +022 int olduse, res, min, max; +023 +024 /* find sizes, we let |a| <= |b| which means we have to sort +025 * them. "x" will point to the input with the most digits +026 */ +027 if (a->used > b->used) \{ +028 min = b->used; +029 max = a->used; +030 x = a; +031 \} else \{ +032 min = a->used; +033 max = b->used; +034 x = b; +035 \} +036 +037 /* init result */ +038 if (c->alloc < max + 1) \{ +039 if ((res = mp_grow (c, max + 1)) != MP_OKAY) \{ +040 return res; +041 \} +042 \} +043 +044 /* get old used digit count and set new one */ +045 olduse = c->used; +046 c->used = max + 1; +047 +048 \{ +049 register mp_digit u, *tmpa, *tmpb, *tmpc; +050 register int i; +051 +052 /* alias for digit pointers */ +053 +054 /* first input */ +055 tmpa = a->dp; +056 +057 /* second input */ +058 tmpb = b->dp; +059 +060 /* destination */ +061 tmpc = c->dp; +062 +063 /* zero the carry */ +064 u = 0; +065 for (i = 0; i < min; i++) \{ +066 /* Compute the sum at one digit, T[i] = A[i] + B[i] + U */ +067 *tmpc = *tmpa++ + *tmpb++ + u; +068 +069 /* U = carry bit of T[i] */ +070 u = *tmpc >> ((mp_digit)DIGIT_BIT); +071 +072 /* take away carry bit from T[i] */ +073 *tmpc++ &= MP_MASK; +074 \} +075 +076 /* now copy higher words if any, that is in A+B +077 * if A or B has more digits add those in +078 */ +079 if (min != max) \{ +080 for (; i < max; i++) \{ +081 /* T[i] = X[i] + U */ +082 *tmpc = x->dp[i] + u; +083 +084 /* U = carry bit of T[i] */ +085 u = *tmpc >> ((mp_digit)DIGIT_BIT); +086 +087 /* take away carry bit from T[i] */ +088 *tmpc++ &= MP_MASK; +089 \} +090 \} +091 +092 /* add carry */ +093 *tmpc++ = u; +094 +095 /* clear digits above oldused */ +096 for (i = c->used; i < olduse; i++) \{ +097 *tmpc++ = 0; +098 \} +099 \} +100 +101 mp_clamp (c); +102 return MP_OKAY; +103 \} +104 #endif +\end{alltt} +\end{small} + +Lines 27 to 35 perform the initial sorting of the inputs and determine the $min$ and $max$ variables. Note that $x$ is a pointer to a +mp\_int assigned to the largest input, in effect it is a local alias. Lines 37 to 42 ensure that the destination is grown to +accomodate the result of the addition. + +Similar to the implementation of mp\_copy this function uses the braced code and local aliases coding style. The three aliases that are on +lines 55, 58 and 61 represent the two inputs and destination variables respectively. These aliases are used to ensure the +compiler does not have to dereference $a$, $b$ or $c$ (respectively) to access the digits of the respective mp\_int. + +The initial carry $u$ is cleared on line 64, note that $u$ is of type mp\_digit which ensures type compatibility within the +implementation. The initial addition loop begins on line 65 and ends on line 74. Similarly the conditional addition loop +begins on line 80 and ends on line 90. The addition is finished with the final carry being stored in $tmpc$ on line 93. +Note the ``++'' operator on the same line. After line 93 $tmpc$ will point to the $c.used$'th digit of the mp\_int $c$. This is useful +for the next loop on lines 96 to 99 which set any old upper digits to zero. + +\subsection{Low Level Subtraction} +The low level unsigned subtraction algorithm is very similar to the low level unsigned addition algorithm. The principle difference is that the +unsigned subtraction algorithm requires the result to be positive. That is when computing $a - b$ the condition $\vert a \vert \ge \vert b\vert$ must +be met for this algorithm to function properly. Keep in mind this low level algorithm is not meant to be used in higher level algorithms directly. +This algorithm as will be shown can be used to create functional signed addition and subtraction algorithms. + + +For this algorithm a new variable is required to make the description simpler. Recall from section 1.3.1 that a mp\_digit must be able to represent +the range $0 \le x < 2\beta$ for the algorithms to work correctly. However, it is allowable that a mp\_digit represent a larger range of values. For +this algorithm we will assume that the variable $\gamma$ represents the number of bits available in a +mp\_digit (\textit{this implies $2^{\gamma} > \beta$}). + +For example, the default for LibTomMath is to use a ``unsigned long'' for the mp\_digit ``type'' while $\beta = 2^{28}$. In ISO C an ``unsigned long'' +data type must be able to represent $0 \le x < 2^{32}$ meaning that in this case $\gamma = 32$. + +\newpage\begin{figure}[!here] +\begin{center} +\begin{small} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_sub}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ ($\vert a \vert \ge \vert b \vert$) \\ +\textbf{Output}. The unsigned subtraction $c = \vert a \vert - \vert b \vert$. \\ +\hline \\ +1. $min \leftarrow b.used$ \\ +2. $max \leftarrow a.used$ \\ +3. If $c.alloc < max$ then grow $c$ to hold at least $max$ digits. (\textit{mp\_grow}) \\ +4. $oldused \leftarrow c.used$ \\ +5. $c.used \leftarrow max$ \\ +6. $u \leftarrow 0$ \\ +7. for $n$ from $0$ to $min - 1$ do \\ +\hspace{3mm}7.1 $c_n \leftarrow a_n - b_n - u$ \\ +\hspace{3mm}7.2 $u \leftarrow c_n >> (\gamma - 1)$ \\ +\hspace{3mm}7.3 $c_n \leftarrow c_n \mbox{ (mod }\beta\mbox{)}$ \\ +8. if $min < max$ then do \\ +\hspace{3mm}8.1 for $n$ from $min$ to $max - 1$ do \\ +\hspace{6mm}8.1.1 $c_n \leftarrow a_n - u$ \\ +\hspace{6mm}8.1.2 $u \leftarrow c_n >> (\gamma - 1)$ \\ +\hspace{6mm}8.1.3 $c_n \leftarrow c_n \mbox{ (mod }\beta\mbox{)}$ \\ +9. if $oldused > max$ then do \\ +\hspace{3mm}9.1 for $n$ from $max$ to $oldused - 1$ do \\ +\hspace{6mm}9.1.1 $c_n \leftarrow 0$ \\ +10. Clamp excess digits of $c$. (\textit{mp\_clamp}). \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Algorithm s\_mp\_sub} +\end{figure} + +\textbf{Algorithm s\_mp\_sub.} +This algorithm performs the unsigned subtraction of two mp\_int variables under the restriction that the result must be positive. That is when +passing variables $a$ and $b$ the condition that $\vert a \vert \ge \vert b \vert$ must be met for the algorithm to function correctly. This +algorithm is loosely based on algorithm 14.9 \cite[pp. 595]{HAC} and is similar to algorithm S in \cite[pp. 267]{TAOCPV2} as well. As was the case +of the algorithm s\_mp\_add both other references lack discussion concerning various practical details such as when the inputs differ in magnitude. + +The initial sorting of the inputs is trivial in this algorithm since $a$ is guaranteed to have at least the same magnitude of $b$. Steps 1 and 2 +set the $min$ and $max$ variables. Unlike the addition routine there is guaranteed to be no carry which means that the final result can be at +most $max$ digits in length as opposed to $max + 1$. Similar to the addition algorithm the \textbf{used} count of $c$ is copied locally and +set to the maximal count for the operation. + +The subtraction loop that begins on step seven is essentially the same as the addition loop of algorithm s\_mp\_add except single precision +subtraction is used instead. Note the use of the $\gamma$ variable to extract the carry (\textit{also known as the borrow}) within the subtraction +loops. Under the assumption that two's complement single precision arithmetic is used this will successfully extract the desired carry. + +For example, consider subtracting $0101_2$ from $0100_2$ where $\gamma = 4$ and $\beta = 2$. The least significant bit will force a carry upwards to +the third bit which will be set to zero after the borrow. After the very first bit has been subtracted $4 - 1 \equiv 0011_2$ will remain, When the +third bit of $0101_2$ is subtracted from the result it will cause another carry. In this case though the carry will be forced to propagate all the +way to the most significant bit. + +Recall that $\beta < 2^{\gamma}$. This means that if a carry does occur just before the $lg(\beta)$'th bit it will propagate all the way to the most +significant bit. Thus, the high order bits of the mp\_digit that are not part of the actual digit will either be all zero, or all one. All that +is needed is a single zero or one bit for the carry. Therefore a single logical shift right by $\gamma - 1$ positions is sufficient to extract the +carry. This method of carry extraction may seem awkward but the reason for it becomes apparent when the implementation is discussed. + +If $b$ has a smaller magnitude than $a$ then step 9 will force the carry and copy operation to propagate through the larger input $a$ into $c$. Step +10 will ensure that any leading digits of $c$ above the $max$'th position are zeroed. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_s\_mp\_sub.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* low level subtraction (assumes |a| > |b|), HAC pp.595 Algorithm 14.9 */ +018 int +019 s_mp_sub (mp_int * a, mp_int * b, mp_int * c) +020 \{ +021 int olduse, res, min, max; +022 +023 /* find sizes */ +024 min = b->used; +025 max = a->used; +026 +027 /* init result */ +028 if (c->alloc < max) \{ +029 if ((res = mp_grow (c, max)) != MP_OKAY) \{ +030 return res; +031 \} +032 \} +033 olduse = c->used; +034 c->used = max; +035 +036 \{ +037 register mp_digit u, *tmpa, *tmpb, *tmpc; +038 register int i; +039 +040 /* alias for digit pointers */ +041 tmpa = a->dp; +042 tmpb = b->dp; +043 tmpc = c->dp; +044 +045 /* set carry to zero */ +046 u = 0; +047 for (i = 0; i < min; i++) \{ +048 /* T[i] = A[i] - B[i] - U */ +049 *tmpc = *tmpa++ - *tmpb++ - u; +050 +051 /* U = carry bit of T[i] +052 * Note this saves performing an AND operation since +053 * if a carry does occur it will propagate all the way to the +054 * MSB. As a result a single shift is enough to get the carry +055 */ +056 u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1)); +057 +058 /* Clear carry from T[i] */ +059 *tmpc++ &= MP_MASK; +060 \} +061 +062 /* now copy higher words if any, e.g. if A has more digits than B */ +063 for (; i < max; i++) \{ +064 /* T[i] = A[i] - U */ +065 *tmpc = *tmpa++ - u; +066 +067 /* U = carry bit of T[i] */ +068 u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1)); +069 +070 /* Clear carry from T[i] */ +071 *tmpc++ &= MP_MASK; +072 \} +073 +074 /* clear digits above used (since we may not have grown result above) */ + +075 for (i = c->used; i < olduse; i++) \{ +076 *tmpc++ = 0; +077 \} +078 \} +079 +080 mp_clamp (c); +081 return MP_OKAY; +082 \} +083 +084 #endif +\end{alltt} +\end{small} + +Line 24 and 25 perform the initial hardcoded sorting of the inputs. In reality the $min$ and $max$ variables are only aliases and are only +used to make the source code easier to read. Again the pointer alias optimization is used within this algorithm. Lines 41, 42 and 43 initialize the aliases for +$a$, $b$ and $c$ respectively. + +The first subtraction loop occurs on lines 46 through 60. The theory behind the subtraction loop is exactly the same as that for +the addition loop. As remarked earlier there is an implementation reason for using the ``awkward'' method of extracting the carry +(\textit{see line 56}). The traditional method for extracting the carry would be to shift by $lg(\beta)$ positions and logically AND +the least significant bit. The AND operation is required because all of the bits above the $\lg(\beta)$'th bit will be set to one after a carry +occurs from subtraction. This carry extraction requires two relatively cheap operations to extract the carry. The other method is to simply +shift the most significant bit to the least significant bit thus extracting the carry with a single cheap operation. This optimization only works on +twos compliment machines which is a safe assumption to make. + +If $a$ has a larger magnitude than $b$ an additional loop (\textit{see lines 63 through 72}) is required to propagate the carry through +$a$ and copy the result to $c$. + +\subsection{High Level Addition} +Now that both lower level addition and subtraction algorithms have been established an effective high level signed addition algorithm can be +established. This high level addition algorithm will be what other algorithms and developers will use to perform addition of mp\_int data +types. + +Recall from section 5.2 that an mp\_int represents an integer with an unsigned mantissa (\textit{the array of digits}) and a \textbf{sign} +flag. A high level addition is actually performed as a series of eight separate cases which can be optimized down to three unique cases. + +\begin{figure}[!here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_add}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ \\ +\textbf{Output}. The signed addition $c = a + b$. \\ +\hline \\ +1. if $a.sign = b.sign$ then do \\ +\hspace{3mm}1.1 $c.sign \leftarrow a.sign$ \\ +\hspace{3mm}1.2 $c \leftarrow \vert a \vert + \vert b \vert$ (\textit{s\_mp\_add})\\ +2. else do \\ +\hspace{3mm}2.1 if $\vert a \vert < \vert b \vert$ then do (\textit{mp\_cmp\_mag}) \\ +\hspace{6mm}2.1.1 $c.sign \leftarrow b.sign$ \\ +\hspace{6mm}2.1.2 $c \leftarrow \vert b \vert - \vert a \vert$ (\textit{s\_mp\_sub}) \\ +\hspace{3mm}2.2 else do \\ +\hspace{6mm}2.2.1 $c.sign \leftarrow a.sign$ \\ +\hspace{6mm}2.2.2 $c \leftarrow \vert a \vert - \vert b \vert$ \\ +3. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_add} +\end{figure} + +\textbf{Algorithm mp\_add.} +This algorithm performs the signed addition of two mp\_int variables. There is no reference algorithm to draw upon from +either \cite{TAOCPV2} or \cite{HAC} since they both only provide unsigned operations. The algorithm is fairly +straightforward but restricted since subtraction can only produce positive results. + +\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{|c|c|c|c|c|} +\hline \textbf{Sign of $a$} & \textbf{Sign of $b$} & \textbf{$\vert a \vert > \vert b \vert $} & \textbf{Unsigned Operation} & \textbf{Result Sign Flag} \\ +\hline $+$ & $+$ & Yes & $c = a + b$ & $a.sign$ \\ +\hline $+$ & $+$ & No & $c = a + b$ & $a.sign$ \\ +\hline $-$ & $-$ & Yes & $c = a + b$ & $a.sign$ \\ +\hline $-$ & $-$ & No & $c = a + b$ & $a.sign$ \\ +\hline &&&&\\ + +\hline $+$ & $-$ & No & $c = b - a$ & $b.sign$ \\ +\hline $-$ & $+$ & No & $c = b - a$ & $b.sign$ \\ + +\hline &&&&\\ + +\hline $+$ & $-$ & Yes & $c = a - b$ & $a.sign$ \\ +\hline $-$ & $+$ & Yes & $c = a - b$ & $a.sign$ \\ + +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Addition Guide Chart} +\label{fig:AddChart} +\end{figure} + +Figure~\ref{fig:AddChart} lists all of the eight possible input combinations and is sorted to show that only three +specific cases need to be handled. The return code of the unsigned operations at step 1.2, 2.1.2 and 2.2.2 are +forwarded to step three to check for errors. This simplifies the description of the algorithm considerably and best +follows how the implementation actually was achieved. + +Also note how the \textbf{sign} is set before the unsigned addition or subtraction is performed. Recall from the descriptions of algorithms +s\_mp\_add and s\_mp\_sub that the mp\_clamp function is used at the end to trim excess digits. The mp\_clamp algorithm will set the \textbf{sign} +to \textbf{MP\_ZPOS} when the \textbf{used} digit count reaches zero. + +For example, consider performing $-a + a$ with algorithm mp\_add. By the description of the algorithm the sign is set to \textbf{MP\_NEG} which would +produce a result of $-0$. However, since the sign is set first then the unsigned addition is performed the subsequent usage of algorithm mp\_clamp +within algorithm s\_mp\_add will force $-0$ to become $0$. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_add.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* high level addition (handles signs) */ +018 int mp_add (mp_int * a, mp_int * b, mp_int * c) +019 \{ +020 int sa, sb, res; +021 +022 /* get sign of both inputs */ +023 sa = a->sign; +024 sb = b->sign; +025 +026 /* handle two cases, not four */ +027 if (sa == sb) \{ +028 /* both positive or both negative */ +029 /* add their magnitudes, copy the sign */ +030 c->sign = sa; +031 res = s_mp_add (a, b, c); +032 \} else \{ +033 /* one positive, the other negative */ +034 /* subtract the one with the greater magnitude from */ +035 /* the one of the lesser magnitude. The result gets */ +036 /* the sign of the one with the greater magnitude. */ +037 if (mp_cmp_mag (a, b) == MP_LT) \{ +038 c->sign = sb; +039 res = s_mp_sub (b, a, c); +040 \} else \{ +041 c->sign = sa; +042 res = s_mp_sub (a, b, c); +043 \} +044 \} +045 return res; +046 \} +047 +048 #endif +\end{alltt} +\end{small} + +The source code follows the algorithm fairly closely. The most notable new source code addition is the usage of the $res$ integer variable which +is used to pass result of the unsigned operations forward. Unlike in the algorithm, the variable $res$ is merely returned as is without +explicitly checking it and returning the constant \textbf{MP\_OKAY}. The observation is this algorithm will succeed or fail only if the lower +level functions do so. Returning their return code is sufficient. + +\subsection{High Level Subtraction} +The high level signed subtraction algorithm is essentially the same as the high level signed addition algorithm. + +\newpage\begin{figure}[!here] +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_sub}. \\ +\textbf{Input}. Two mp\_ints $a$ and $b$ \\ +\textbf{Output}. The signed subtraction $c = a - b$. \\ +\hline \\ +1. if $a.sign \ne b.sign$ then do \\ +\hspace{3mm}1.1 $c.sign \leftarrow a.sign$ \\ +\hspace{3mm}1.2 $c \leftarrow \vert a \vert + \vert b \vert$ (\textit{s\_mp\_add}) \\ +2. else do \\ +\hspace{3mm}2.1 if $\vert a \vert \ge \vert b \vert$ then do (\textit{mp\_cmp\_mag}) \\ +\hspace{6mm}2.1.1 $c.sign \leftarrow a.sign$ \\ +\hspace{6mm}2.1.2 $c \leftarrow \vert a \vert - \vert b \vert$ (\textit{s\_mp\_sub}) \\ +\hspace{3mm}2.2 else do \\ +\hspace{6mm}2.2.1 $c.sign \leftarrow \left \lbrace \begin{array}{ll} + MP\_ZPOS & \mbox{if }a.sign = MP\_NEG \\ + MP\_NEG & \mbox{otherwise} \\ + \end{array} \right .$ \\ +\hspace{6mm}2.2.2 $c \leftarrow \vert b \vert - \vert a \vert$ \\ +3. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\caption{Algorithm mp\_sub} +\end{figure} + +\textbf{Algorithm mp\_sub.} +This algorithm performs the signed subtraction of two inputs. Similar to algorithm mp\_add there is no reference in either \cite{TAOCPV2} or +\cite{HAC}. Also this algorithm is restricted by algorithm s\_mp\_sub. Chart \ref{fig:SubChart} lists the eight possible inputs and +the operations required. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{|c|c|c|c|c|} +\hline \textbf{Sign of $a$} & \textbf{Sign of $b$} & \textbf{$\vert a \vert \ge \vert b \vert $} & \textbf{Unsigned Operation} & \textbf{Result Sign Flag} \\ +\hline $+$ & $-$ & Yes & $c = a + b$ & $a.sign$ \\ +\hline $+$ & $-$ & No & $c = a + b$ & $a.sign$ \\ +\hline $-$ & $+$ & Yes & $c = a + b$ & $a.sign$ \\ +\hline $-$ & $+$ & No & $c = a + b$ & $a.sign$ \\ +\hline &&&& \\ +\hline $+$ & $+$ & Yes & $c = a - b$ & $a.sign$ \\ +\hline $-$ & $-$ & Yes & $c = a - b$ & $a.sign$ \\ +\hline &&&& \\ +\hline $+$ & $+$ & No & $c = b - a$ & $\mbox{opposite of }a.sign$ \\ +\hline $-$ & $-$ & No & $c = b - a$ & $\mbox{opposite of }a.sign$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Subtraction Guide Chart} +\label{fig:SubChart} +\end{figure} + +Similar to the case of algorithm mp\_add the \textbf{sign} is set first before the unsigned addition or subtraction. That is to prevent the +algorithm from producing $-a - -a = -0$ as a result. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_sub.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* high level subtraction (handles signs) */ +018 int +019 mp_sub (mp_int * a, mp_int * b, mp_int * c) +020 \{ +021 int sa, sb, res; +022 +023 sa = a->sign; +024 sb = b->sign; +025 +026 if (sa != sb) \{ +027 /* subtract a negative from a positive, OR */ +028 /* subtract a positive from a negative. */ +029 /* In either case, ADD their magnitudes, */ +030 /* and use the sign of the first number. */ +031 c->sign = sa; +032 res = s_mp_add (a, b, c); +033 \} else \{ +034 /* subtract a positive from a positive, OR */ +035 /* subtract a negative from a negative. */ +036 /* First, take the difference between their */ +037 /* magnitudes, then... */ +038 if (mp_cmp_mag (a, b) != MP_LT) \{ +039 /* Copy the sign from the first */ +040 c->sign = sa; +041 /* The first has a larger or equal magnitude */ +042 res = s_mp_sub (a, b, c); +043 \} else \{ +044 /* The result has the *opposite* sign from */ +045 /* the first number. */ +046 c->sign = (sa == MP_ZPOS) ? MP_NEG : MP_ZPOS; +047 /* The second has a larger magnitude */ +048 res = s_mp_sub (b, a, c); +049 \} +050 \} +051 return res; +052 \} +053 +054 #endif +\end{alltt} +\end{small} + +Much like the implementation of algorithm mp\_add the variable $res$ is used to catch the return code of the unsigned addition or subtraction operations +and forward it to the end of the function. On line 38 the ``not equal to'' \textbf{MP\_LT} expression is used to emulate a +``greater than or equal to'' comparison. + +\section{Bit and Digit Shifting} +It is quite common to think of a multiple precision integer as a polynomial in $x$, that is $y = f(\beta)$ where $f(x) = \sum_{i=0}^{n-1} a_i x^i$. +This notation arises within discussion of Montgomery and Diminished Radix Reduction as well as Karatsuba multiplication and squaring. + +In order to facilitate operations on polynomials in $x$ as above a series of simple ``digit'' algorithms have to be established. That is to shift +the digits left or right as well to shift individual bits of the digits left and right. It is important to note that not all ``shift'' operations +are on radix-$\beta$ digits. + +\subsection{Multiplication by Two} + +In a binary system where the radix is a power of two multiplication by two not only arises often in other algorithms it is a fairly efficient +operation to perform. A single precision logical shift left is sufficient to multiply a single digit by two. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mul\_2}. \\ +\textbf{Input}. One mp\_int $a$ \\ +\textbf{Output}. $b = 2a$. \\ +\hline \\ +1. If $b.alloc < a.used + 1$ then grow $b$ to hold $a.used + 1$ digits. (\textit{mp\_grow}) \\ +2. $oldused \leftarrow b.used$ \\ +3. $b.used \leftarrow a.used$ \\ +4. $r \leftarrow 0$ \\ +5. for $n$ from 0 to $a.used - 1$ do \\ +\hspace{3mm}5.1 $rr \leftarrow a_n >> (lg(\beta) - 1)$ \\ +\hspace{3mm}5.2 $b_n \leftarrow (a_n << 1) + r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}5.3 $r \leftarrow rr$ \\ +6. If $r \ne 0$ then do \\ +\hspace{3mm}6.1 $b_{n + 1} \leftarrow r$ \\ +\hspace{3mm}6.2 $b.used \leftarrow b.used + 1$ \\ +7. If $b.used < oldused - 1$ then do \\ +\hspace{3mm}7.1 for $n$ from $b.used$ to $oldused - 1$ do \\ +\hspace{6mm}7.1.1 $b_n \leftarrow 0$ \\ +8. $b.sign \leftarrow a.sign$ \\ +9. Return(\textit{MP\_OKAY}).\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mul\_2} +\end{figure} + +\textbf{Algorithm mp\_mul\_2.} +This algorithm will quickly multiply a mp\_int by two provided $\beta$ is a power of two. Neither \cite{TAOCPV2} nor \cite{HAC} describe such +an algorithm despite the fact it arises often in other algorithms. The algorithm is setup much like the lower level algorithm s\_mp\_add since +it is for all intents and purposes equivalent to the operation $b = \vert a \vert + \vert a \vert$. + +Step 1 and 2 grow the input as required to accomodate the maximum number of \textbf{used} digits in the result. The initial \textbf{used} count +is set to $a.used$ at step 4. Only if there is a final carry will the \textbf{used} count require adjustment. + +Step 6 is an optimization implementation of the addition loop for this specific case. That is since the two values being added together +are the same there is no need to perform two reads from the digits of $a$. Step 6.1 performs a single precision shift on the current digit $a_n$ to +obtain what will be the carry for the next iteration. Step 6.2 calculates the $n$'th digit of the result as single precision shift of $a_n$ plus +the previous carry. Recall from section 4.1 that $a_n << 1$ is equivalent to $a_n \cdot 2$. An iteration of the addition loop is finished with +forwarding the carry to the next iteration. + +Step 7 takes care of any final carry by setting the $a.used$'th digit of the result to the carry and augmenting the \textbf{used} count of $b$. +Step 8 clears any leading digits of $b$ in case it originally had a larger magnitude than $a$. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_mul\_2.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* b = a*2 */ +018 int mp_mul_2(mp_int * a, mp_int * b) +019 \{ +020 int x, res, oldused; +021 +022 /* grow to accomodate result */ +023 if (b->alloc < a->used + 1) \{ +024 if ((res = mp_grow (b, a->used + 1)) != MP_OKAY) \{ +025 return res; +026 \} +027 \} +028 +029 oldused = b->used; +030 b->used = a->used; +031 +032 \{ +033 register mp_digit r, rr, *tmpa, *tmpb; +034 +035 /* alias for source */ +036 tmpa = a->dp; +037 +038 /* alias for dest */ +039 tmpb = b->dp; +040 +041 /* carry */ +042 r = 0; +043 for (x = 0; x < a->used; x++) \{ +044 +045 /* get what will be the *next* carry bit from the +046 * MSB of the current digit +047 */ +048 rr = *tmpa >> ((mp_digit)(DIGIT_BIT - 1)); +049 +050 /* now shift up this digit, add in the carry [from the previous] */ +051 *tmpb++ = ((*tmpa++ << ((mp_digit)1)) | r) & MP_MASK; +052 +053 /* copy the carry that would be from the source +054 * digit into the next iteration +055 */ +056 r = rr; +057 \} +058 +059 /* new leading digit? */ +060 if (r != 0) \{ +061 /* add a MSB which is always 1 at this point */ +062 *tmpb = 1; +063 ++(b->used); +064 \} +065 +066 /* now zero any excess digits on the destination +067 * that we didn't write to +068 */ +069 tmpb = b->dp + b->used; +070 for (x = b->used; x < oldused; x++) \{ +071 *tmpb++ = 0; +072 \} +073 \} +074 b->sign = a->sign; +075 return MP_OKAY; +076 \} +077 #endif +\end{alltt} +\end{small} + +This implementation is essentially an optimized implementation of s\_mp\_add for the case of doubling an input. The only noteworthy difference +is the use of the logical shift operator on line 51 to perform a single precision doubling. + +\subsection{Division by Two} +A division by two can just as easily be accomplished with a logical shift right as multiplication by two can be with a logical shift left. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div\_2}. \\ +\textbf{Input}. One mp\_int $a$ \\ +\textbf{Output}. $b = a/2$. \\ +\hline \\ +1. If $b.alloc < a.used$ then grow $b$ to hold $a.used$ digits. (\textit{mp\_grow}) \\ +2. If the reallocation failed return(\textit{MP\_MEM}). \\ +3. $oldused \leftarrow b.used$ \\ +4. $b.used \leftarrow a.used$ \\ +5. $r \leftarrow 0$ \\ +6. for $n$ from $b.used - 1$ to $0$ do \\ +\hspace{3mm}6.1 $rr \leftarrow a_n \mbox{ (mod }2\mbox{)}$\\ +\hspace{3mm}6.2 $b_n \leftarrow (a_n >> 1) + (r << (lg(\beta) - 1)) \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}6.3 $r \leftarrow rr$ \\ +7. If $b.used < oldused - 1$ then do \\ +\hspace{3mm}7.1 for $n$ from $b.used$ to $oldused - 1$ do \\ +\hspace{6mm}7.1.1 $b_n \leftarrow 0$ \\ +8. $b.sign \leftarrow a.sign$ \\ +9. Clamp excess digits of $b$. (\textit{mp\_clamp}) \\ +10. Return(\textit{MP\_OKAY}).\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div\_2} +\end{figure} + +\textbf{Algorithm mp\_div\_2.} +This algorithm will divide an mp\_int by two using logical shifts to the right. Like mp\_mul\_2 it uses a modified low level addition +core as the basis of the algorithm. Unlike mp\_mul\_2 the shift operations work from the leading digit to the trailing digit. The algorithm +could be written to work from the trailing digit to the leading digit however, it would have to stop one short of $a.used - 1$ digits to prevent +reading past the end of the array of digits. + +Essentially the loop at step 6 is similar to that of mp\_mul\_2 except the logical shifts go in the opposite direction and the carry is at the +least significant bit not the most significant bit. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_div\_2.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* b = a/2 */ +018 int mp_div_2(mp_int * a, mp_int * b) +019 \{ +020 int x, res, oldused; +021 +022 /* copy */ +023 if (b->alloc < a->used) \{ +024 if ((res = mp_grow (b, a->used)) != MP_OKAY) \{ +025 return res; +026 \} +027 \} +028 +029 oldused = b->used; +030 b->used = a->used; +031 \{ +032 register mp_digit r, rr, *tmpa, *tmpb; +033 +034 /* source alias */ +035 tmpa = a->dp + b->used - 1; +036 +037 /* dest alias */ +038 tmpb = b->dp + b->used - 1; +039 +040 /* carry */ +041 r = 0; +042 for (x = b->used - 1; x >= 0; x--) \{ +043 /* get the carry for the next iteration */ +044 rr = *tmpa & 1; +045 +046 /* shift the current digit, add in carry and store */ +047 *tmpb-- = (*tmpa-- >> 1) | (r << (DIGIT_BIT - 1)); +048 +049 /* forward carry to next iteration */ +050 r = rr; +051 \} +052 +053 /* zero excess digits */ +054 tmpb = b->dp + b->used; +055 for (x = b->used; x < oldused; x++) \{ +056 *tmpb++ = 0; +057 \} +058 \} +059 b->sign = a->sign; +060 mp_clamp (b); +061 return MP_OKAY; +062 \} +063 #endif +\end{alltt} +\end{small} + +\section{Polynomial Basis Operations} +Recall from section 4.3 that any integer can be represented as a polynomial in $x$ as $y = f(\beta)$. Such a representation is also known as +the polynomial basis \cite[pp. 48]{ROSE}. Given such a notation a multiplication or division by $x$ amounts to shifting whole digits a single +place. The need for such operations arises in several other higher level algorithms such as Barrett and Montgomery reduction, integer +division and Karatsuba multiplication. + +Converting from an array of digits to polynomial basis is very simple. Consider the integer $y \equiv (a_2, a_1, a_0)_{\beta}$ and recall that +$y = \sum_{i=0}^{2} a_i \beta^i$. Simply replace $\beta$ with $x$ and the expression is in polynomial basis. For example, $f(x) = 8x + 9$ is the +polynomial basis representation for $89$ using radix ten. That is, $f(10) = 8(10) + 9 = 89$. + +\subsection{Multiplication by $x$} + +Given a polynomial in $x$ such as $f(x) = a_n x^n + a_{n-1} x^{n-1} + ... + a_0$ multiplying by $x$ amounts to shifting the coefficients up one +degree. In this case $f(x) \cdot x = a_n x^{n+1} + a_{n-1} x^n + ... + a_0 x$. From a scalar basis point of view multiplying by $x$ is equivalent to +multiplying by the integer $\beta$. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_lshd}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $a \leftarrow a \cdot \beta^b$ (equivalent to multiplication by $x^b$). \\ +\hline \\ +1. If $b \le 0$ then return(\textit{MP\_OKAY}). \\ +2. If $a.alloc < a.used + b$ then grow $a$ to at least $a.used + b$ digits. (\textit{mp\_grow}). \\ +3. If the reallocation failed return(\textit{MP\_MEM}). \\ +4. $a.used \leftarrow a.used + b$ \\ +5. $i \leftarrow a.used - 1$ \\ +6. $j \leftarrow a.used - 1 - b$ \\ +7. for $n$ from $a.used - 1$ to $b$ do \\ +\hspace{3mm}7.1 $a_{i} \leftarrow a_{j}$ \\ +\hspace{3mm}7.2 $i \leftarrow i - 1$ \\ +\hspace{3mm}7.3 $j \leftarrow j - 1$ \\ +8. for $n$ from 0 to $b - 1$ do \\ +\hspace{3mm}8.1 $a_n \leftarrow 0$ \\ +9. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_lshd} +\end{figure} + +\textbf{Algorithm mp\_lshd.} +This algorithm multiplies an mp\_int by the $b$'th power of $x$. This is equivalent to multiplying by $\beta^b$. The algorithm differs +from the other algorithms presented so far as it performs the operation in place instead storing the result in a separate location. The +motivation behind this change is due to the way this function is typically used. Algorithms such as mp\_add store the result in an optionally +different third mp\_int because the original inputs are often still required. Algorithm mp\_lshd (\textit{and similarly algorithm mp\_rshd}) is +typically used on values where the original value is no longer required. The algorithm will return success immediately if +$b \le 0$ since the rest of algorithm is only valid when $b > 0$. + +First the destination $a$ is grown as required to accomodate the result. The counters $i$ and $j$ are used to form a \textit{sliding window} over +the digits of $a$ of length $b$. The head of the sliding window is at $i$ (\textit{the leading digit}) and the tail at $j$ (\textit{the trailing digit}). +The loop on step 7 copies the digit from the tail to the head. In each iteration the window is moved down one digit. The last loop on +step 8 sets the lower $b$ digits to zero. + +\newpage +\begin{center} +\begin{figure}[here] +\includegraphics{pics/sliding_window.ps} +\caption{Sliding Window Movement} +\label{pic:sliding_window} +\end{figure} +\end{center} + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_lshd.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* shift left a certain amount of digits */ +018 int mp_lshd (mp_int * a, int b) +019 \{ +020 int x, res; +021 +022 /* if its less than zero return */ +023 if (b <= 0) \{ +024 return MP_OKAY; +025 \} +026 +027 /* grow to fit the new digits */ +028 if (a->alloc < a->used + b) \{ +029 if ((res = mp_grow (a, a->used + b)) != MP_OKAY) \{ +030 return res; +031 \} +032 \} +033 +034 \{ +035 register mp_digit *top, *bottom; +036 +037 /* increment the used by the shift amount then copy upwards */ +038 a->used += b; +039 +040 /* top */ +041 top = a->dp + a->used - 1; +042 +043 /* base */ +044 bottom = a->dp + a->used - 1 - b; +045 +046 /* much like mp_rshd this is implemented using a sliding window +047 * except the window goes the otherway around. Copying from +048 * the bottom to the top. see bn_mp_rshd.c for more info. +049 */ +050 for (x = a->used - 1; x >= b; x--) \{ +051 *top-- = *bottom--; +052 \} +053 +054 /* zero the lower digits */ +055 top = a->dp; +056 for (x = 0; x < b; x++) \{ +057 *top++ = 0; +058 \} +059 \} +060 return MP_OKAY; +061 \} +062 #endif +\end{alltt} +\end{small} + +The if statement on line 23 ensures that the $b$ variable is greater than zero. The \textbf{used} count is incremented by $b$ before +the copy loop begins. This elminates the need for an additional variable in the for loop. The variable $top$ on line 41 is an alias +for the leading digit while $bottom$ on line 44 is an alias for the trailing edge. The aliases form a window of exactly $b$ digits +over the input. + +\subsection{Division by $x$} + +Division by powers of $x$ is easily achieved by shifting the digits right and removing any that will end up to the right of the zero'th digit. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_rshd}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $a \leftarrow a / \beta^b$ (Divide by $x^b$). \\ +\hline \\ +1. If $b \le 0$ then return. \\ +2. If $a.used \le b$ then do \\ +\hspace{3mm}2.1 Zero $a$. (\textit{mp\_zero}). \\ +\hspace{3mm}2.2 Return. \\ +3. $i \leftarrow 0$ \\ +4. $j \leftarrow b$ \\ +5. for $n$ from 0 to $a.used - b - 1$ do \\ +\hspace{3mm}5.1 $a_i \leftarrow a_j$ \\ +\hspace{3mm}5.2 $i \leftarrow i + 1$ \\ +\hspace{3mm}5.3 $j \leftarrow j + 1$ \\ +6. for $n$ from $a.used - b$ to $a.used - 1$ do \\ +\hspace{3mm}6.1 $a_n \leftarrow 0$ \\ +7. $a.used \leftarrow a.used - b$ \\ +8. Return. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_rshd} +\end{figure} + +\textbf{Algorithm mp\_rshd.} +This algorithm divides the input in place by the $b$'th power of $x$. It is analogous to dividing by a $\beta^b$ but much quicker since +it does not require single precision division. This algorithm does not actually return an error code as it cannot fail. + +If the input $b$ is less than one the algorithm quickly returns without performing any work. If the \textbf{used} count is less than or equal +to the shift count $b$ then it will simply zero the input and return. + +After the trivial cases of inputs have been handled the sliding window is setup. Much like the case of algorithm mp\_lshd a sliding window that +is $b$ digits wide is used to copy the digits. Unlike mp\_lshd the window slides in the opposite direction from the trailing to the leading digit. +Also the digits are copied from the leading to the trailing edge. + +Once the window copy is complete the upper digits must be zeroed and the \textbf{used} count decremented. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_rshd.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* shift right a certain amount of digits */ +018 void mp_rshd (mp_int * a, int b) +019 \{ +020 int x; +021 +022 /* if b <= 0 then ignore it */ +023 if (b <= 0) \{ +024 return; +025 \} +026 +027 /* if b > used then simply zero it and return */ +028 if (a->used <= b) \{ +029 mp_zero (a); +030 return; +031 \} +032 +033 \{ +034 register mp_digit *bottom, *top; +035 +036 /* shift the digits down */ +037 +038 /* bottom */ +039 bottom = a->dp; +040 +041 /* top [offset into digits] */ +042 top = a->dp + b; +043 +044 /* this is implemented as a sliding window where +045 * the window is b-digits long and digits from +046 * the top of the window are copied to the bottom +047 * +048 * e.g. +049 +050 b-2 | b-1 | b0 | b1 | b2 | ... | bb | ----> +051 /\symbol{92} | ----> +052 \symbol{92}-------------------/ ----> +053 */ +054 for (x = 0; x < (a->used - b); x++) \{ +055 *bottom++ = *top++; +056 \} +057 +058 /* zero the top digits */ +059 for (; x < a->used; x++) \{ +060 *bottom++ = 0; +061 \} +062 \} +063 +064 /* remove excess digits */ +065 a->used -= b; +066 \} +067 #endif +\end{alltt} +\end{small} + +The only noteworthy element of this routine is the lack of a return type. + +-- Will update later to give it a return type...Tom + +\section{Powers of Two} + +Now that algorithms for moving single bits as well as whole digits exist algorithms for moving the ``in between'' distances are required. For +example, to quickly multiply by $2^k$ for any $k$ without using a full multiplier algorithm would prove useful. Instead of performing single +shifts $k$ times to achieve a multiplication by $2^{\pm k}$ a mixture of whole digit shifting and partial digit shifting is employed. + +\subsection{Multiplication by Power of Two} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mul\_2d}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $c \leftarrow a \cdot 2^b$. \\ +\hline \\ +1. $c \leftarrow a$. (\textit{mp\_copy}) \\ +2. If $c.alloc < c.used + \lfloor b / lg(\beta) \rfloor + 2$ then grow $c$ accordingly. \\ +3. If the reallocation failed return(\textit{MP\_MEM}). \\ +4. If $b \ge lg(\beta)$ then \\ +\hspace{3mm}4.1 $c \leftarrow c \cdot \beta^{\lfloor b / lg(\beta) \rfloor}$ (\textit{mp\_lshd}). \\ +\hspace{3mm}4.2 If step 4.1 failed return(\textit{MP\_MEM}). \\ +5. $d \leftarrow b \mbox{ (mod }lg(\beta)\mbox{)}$ \\ +6. If $d \ne 0$ then do \\ +\hspace{3mm}6.1 $mask \leftarrow 2^d$ \\ +\hspace{3mm}6.2 $r \leftarrow 0$ \\ +\hspace{3mm}6.3 for $n$ from $0$ to $c.used - 1$ do \\ +\hspace{6mm}6.3.1 $rr \leftarrow c_n >> (lg(\beta) - d) \mbox{ (mod }mask\mbox{)}$ \\ +\hspace{6mm}6.3.2 $c_n \leftarrow (c_n << d) + r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}6.3.3 $r \leftarrow rr$ \\ +\hspace{3mm}6.4 If $r > 0$ then do \\ +\hspace{6mm}6.4.1 $c_{c.used} \leftarrow r$ \\ +\hspace{6mm}6.4.2 $c.used \leftarrow c.used + 1$ \\ +7. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mul\_2d} +\end{figure} + +\textbf{Algorithm mp\_mul\_2d.} +This algorithm multiplies $a$ by $2^b$ and stores the result in $c$. The algorithm uses algorithm mp\_lshd and a derivative of algorithm mp\_mul\_2 to +quickly compute the product. + +First the algorithm will multiply $a$ by $x^{\lfloor b / lg(\beta) \rfloor}$ which will ensure that the remainder multiplicand is less than +$\beta$. For example, if $b = 37$ and $\beta = 2^{28}$ then this step will multiply by $x$ leaving a multiplication by $2^{37 - 28} = 2^{9}$ +left. + +After the digits have been shifted appropriately at most $lg(\beta) - 1$ shifts are left to perform. Step 5 calculates the number of remaining shifts +required. If it is non-zero a modified shift loop is used to calculate the remaining product. +Essentially the loop is a generic version of algorith mp\_mul2 designed to handle any shift count in the range $1 \le x < lg(\beta)$. The $mask$ +variable is used to extract the upper $d$ bits to form the carry for the next iteration. + +This algorithm is loosely measured as a $O(2n)$ algorithm which means that if the input is $n$-digits that it takes $2n$ ``time'' to +complete. It is possible to optimize this algorithm down to a $O(n)$ algorithm at a cost of making the algorithm slightly harder to follow. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_mul\_2d.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* shift left by a certain bit count */ +018 int mp_mul_2d (mp_int * a, int b, mp_int * c) +019 \{ +020 mp_digit d; +021 int res; +022 +023 /* copy */ +024 if (a != c) \{ +025 if ((res = mp_copy (a, c)) != MP_OKAY) \{ +026 return res; +027 \} +028 \} +029 +030 if (c->alloc < (int)(c->used + b/DIGIT_BIT + 1)) \{ +031 if ((res = mp_grow (c, c->used + b / DIGIT_BIT + 1)) != MP_OKAY) \{ +032 return res; +033 \} +034 \} +035 +036 /* shift by as many digits in the bit count */ +037 if (b >= (int)DIGIT_BIT) \{ +038 if ((res = mp_lshd (c, b / DIGIT_BIT)) != MP_OKAY) \{ +039 return res; +040 \} +041 \} +042 +043 /* shift any bit count < DIGIT_BIT */ +044 d = (mp_digit) (b % DIGIT_BIT); +045 if (d != 0) \{ +046 register mp_digit *tmpc, shift, mask, r, rr; +047 register int x; +048 +049 /* bitmask for carries */ +050 mask = (((mp_digit)1) << d) - 1; +051 +052 /* shift for msbs */ +053 shift = DIGIT_BIT - d; +054 +055 /* alias */ +056 tmpc = c->dp; +057 +058 /* carry */ +059 r = 0; +060 for (x = 0; x < c->used; x++) \{ +061 /* get the higher bits of the current word */ +062 rr = (*tmpc >> shift) & mask; +063 +064 /* shift the current word and OR in the carry */ +065 *tmpc = ((*tmpc << d) | r) & MP_MASK; +066 ++tmpc; +067 +068 /* set the carry to the carry bits of the current word */ +069 r = rr; +070 \} +071 +072 /* set final carry */ +073 if (r != 0) \{ +074 c->dp[(c->used)++] = r; +075 \} +076 \} +077 mp_clamp (c); +078 return MP_OKAY; +079 \} +080 #endif +\end{alltt} +\end{small} + +Notes to be revised when code is updated. -- Tom + +\subsection{Division by Power of Two} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div\_2d}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $c \leftarrow \lfloor a / 2^b \rfloor, d \leftarrow a \mbox{ (mod }2^b\mbox{)}$. \\ +\hline \\ +1. If $b \le 0$ then do \\ +\hspace{3mm}1.1 $c \leftarrow a$ (\textit{mp\_copy}) \\ +\hspace{3mm}1.2 $d \leftarrow 0$ (\textit{mp\_zero}) \\ +\hspace{3mm}1.3 Return(\textit{MP\_OKAY}). \\ +2. $c \leftarrow a$ \\ +3. $d \leftarrow a \mbox{ (mod }2^b\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +4. If $b \ge lg(\beta)$ then do \\ +\hspace{3mm}4.1 $c \leftarrow \lfloor c/\beta^{\lfloor b/lg(\beta) \rfloor} \rfloor$ (\textit{mp\_rshd}). \\ +5. $k \leftarrow b \mbox{ (mod }lg(\beta)\mbox{)}$ \\ +6. If $k \ne 0$ then do \\ +\hspace{3mm}6.1 $mask \leftarrow 2^k$ \\ +\hspace{3mm}6.2 $r \leftarrow 0$ \\ +\hspace{3mm}6.3 for $n$ from $c.used - 1$ to $0$ do \\ +\hspace{6mm}6.3.1 $rr \leftarrow c_n \mbox{ (mod }mask\mbox{)}$ \\ +\hspace{6mm}6.3.2 $c_n \leftarrow (c_n >> k) + (r << (lg(\beta) - k))$ \\ +\hspace{6mm}6.3.3 $r \leftarrow rr$ \\ +7. Clamp excess digits of $c$. (\textit{mp\_clamp}) \\ +8. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div\_2d} +\end{figure} + +\textbf{Algorithm mp\_div\_2d.} +This algorithm will divide an input $a$ by $2^b$ and produce the quotient and remainder. The algorithm is designed much like algorithm +mp\_mul\_2d by first using whole digit shifts then single precision shifts. This algorithm will also produce the remainder of the division +by using algorithm mp\_mod\_2d. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_div\_2d.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* shift right by a certain bit count (store quotient in c, optional remaind + er in d) */ +018 int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) +019 \{ +020 mp_digit D, r, rr; +021 int x, res; +022 mp_int t; +023 +024 +025 /* if the shift count is <= 0 then we do no work */ +026 if (b <= 0) \{ +027 res = mp_copy (a, c); +028 if (d != NULL) \{ +029 mp_zero (d); +030 \} +031 return res; +032 \} +033 +034 if ((res = mp_init (&t)) != MP_OKAY) \{ +035 return res; +036 \} +037 +038 /* get the remainder */ +039 if (d != NULL) \{ +040 if ((res = mp_mod_2d (a, b, &t)) != MP_OKAY) \{ +041 mp_clear (&t); +042 return res; +043 \} +044 \} +045 +046 /* copy */ +047 if ((res = mp_copy (a, c)) != MP_OKAY) \{ +048 mp_clear (&t); +049 return res; +050 \} +051 +052 /* shift by as many digits in the bit count */ +053 if (b >= (int)DIGIT_BIT) \{ +054 mp_rshd (c, b / DIGIT_BIT); +055 \} +056 +057 /* shift any bit count < DIGIT_BIT */ +058 D = (mp_digit) (b % DIGIT_BIT); +059 if (D != 0) \{ +060 register mp_digit *tmpc, mask, shift; +061 +062 /* mask */ +063 mask = (((mp_digit)1) << D) - 1; +064 +065 /* shift for lsb */ +066 shift = DIGIT_BIT - D; +067 +068 /* alias */ +069 tmpc = c->dp + (c->used - 1); +070 +071 /* carry */ +072 r = 0; +073 for (x = c->used - 1; x >= 0; x--) \{ +074 /* get the lower bits of this word in a temp */ +075 rr = *tmpc & mask; +076 +077 /* shift the current word and mix in the carry bits from the previous + word */ +078 *tmpc = (*tmpc >> D) | (r << shift); +079 --tmpc; +080 +081 /* set the carry to the carry bits of the current word found above */ +082 r = rr; +083 \} +084 \} +085 mp_clamp (c); +086 if (d != NULL) \{ +087 mp_exch (&t, d); +088 \} +089 mp_clear (&t); +090 return MP_OKAY; +091 \} +092 #endif +\end{alltt} +\end{small} + +The implementation of algorithm mp\_div\_2d is slightly different than the algorithm specifies. The remainder $d$ may be optionally +ignored by passing \textbf{NULL} as the pointer to the mp\_int variable. The temporary mp\_int variable $t$ is used to hold the +result of the remainder operation until the end. This allows $d$ and $a$ to represent the same mp\_int without modifying $a$ before +the quotient is obtained. + +The remainder of the source code is essentially the same as the source code for mp\_mul\_2d. (-- Fix this paragraph up later, Tom). + +\subsection{Remainder of Division by Power of Two} + +The last algorithm in the series of polynomial basis power of two algorithms is calculating the remainder of division by $2^b$. This +algorithm benefits from the fact that in twos complement arithmetic $a \mbox{ (mod }2^b\mbox{)}$ is the same as $a$ AND $2^b - 1$. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mod\_2d}. \\ +\textbf{Input}. One mp\_int $a$ and an integer $b$ \\ +\textbf{Output}. $c \leftarrow a \mbox{ (mod }2^b\mbox{)}$. \\ +\hline \\ +1. If $b \le 0$ then do \\ +\hspace{3mm}1.1 $c \leftarrow 0$ (\textit{mp\_zero}) \\ +\hspace{3mm}1.2 Return(\textit{MP\_OKAY}). \\ +2. If $b > a.used \cdot lg(\beta)$ then do \\ +\hspace{3mm}2.1 $c \leftarrow a$ (\textit{mp\_copy}) \\ +\hspace{3mm}2.2 Return the result of step 2.1. \\ +3. $c \leftarrow a$ \\ +4. If step 3 failed return(\textit{MP\_MEM}). \\ +5. for $n$ from $\lceil b / lg(\beta) \rceil$ to $c.used$ do \\ +\hspace{3mm}5.1 $c_n \leftarrow 0$ \\ +6. $k \leftarrow b \mbox{ (mod }lg(\beta)\mbox{)}$ \\ +7. $c_{\lfloor b / lg(\beta) \rfloor} \leftarrow c_{\lfloor b / lg(\beta) \rfloor} \mbox{ (mod }2^{k}\mbox{)}$. \\ +8. Clamp excess digits of $c$. (\textit{mp\_clamp}) \\ +9. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mod\_2d} +\end{figure} + +\textbf{Algorithm mp\_mod\_2d.} +This algorithm will quickly calculate the value of $a \mbox{ (mod }2^b\mbox{)}$. First if $b$ is less than or equal to zero the +result is set to zero. If $b$ is greater than the number of bits in $a$ then it simply copies $a$ to $c$ and returns. Otherwise, $a$ +is copied to $b$, leading digits are removed and the remaining leading digit is trimed to the exact bit count. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_mod\_2d.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* calc a value mod 2**b */ +018 int +019 mp_mod_2d (mp_int * a, int b, mp_int * c) +020 \{ +021 int x, res; +022 +023 /* if b is <= 0 then zero the int */ +024 if (b <= 0) \{ +025 mp_zero (c); +026 return MP_OKAY; +027 \} +028 +029 /* if the modulus is larger than the value than return */ +030 if (b >= (int) (a->used * DIGIT_BIT)) \{ +031 res = mp_copy (a, c); +032 return res; +033 \} +034 +035 /* copy */ +036 if ((res = mp_copy (a, c)) != MP_OKAY) \{ +037 return res; +038 \} +039 +040 /* zero digits above the last digit of the modulus */ +041 for (x = (b / DIGIT_BIT) + ((b % DIGIT_BIT) == 0 ? 0 : 1); x < c->used; x+ + +) \{ +042 c->dp[x] = 0; +043 \} +044 /* clear the digit that is not completely outside/inside the modulus */ +045 c->dp[b / DIGIT_BIT] &= +046 (mp_digit) ((((mp_digit) 1) << (((mp_digit) b) % DIGIT_BIT)) - ((mp_digi + t) 1)); +047 mp_clamp (c); +048 return MP_OKAY; +049 \} +050 #endif +\end{alltt} +\end{small} + +-- Add comments later, Tom. + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 3 \right ] $ & Devise an algorithm that performs $a \cdot 2^b$ for generic values of $b$ \\ + & in $O(n)$ time. \\ + &\\ +$\left [ 3 \right ] $ & Devise an efficient algorithm to multiply by small low hamming \\ + & weight values such as $3$, $5$ and $9$. Extend it to handle all values \\ + & upto $64$ with a hamming weight less than three. \\ + &\\ +$\left [ 2 \right ] $ & Modify the preceding algorithm to handle values of the form \\ + & $2^k - 1$ as well. \\ + &\\ +$\left [ 3 \right ] $ & Using only algorithms mp\_mul\_2, mp\_div\_2 and mp\_add create an \\ + & algorithm to multiply two integers in roughly $O(2n^2)$ time for \\ + & any $n$-bit input. Note that the time of addition is ignored in the \\ + & calculation. \\ + & \\ +$\left [ 5 \right ] $ & Improve the previous algorithm to have a working time of at most \\ + & $O \left (2^{(k-1)}n + \left ({2n^2 \over k} \right ) \right )$ for an appropriate choice of $k$. Again ignore \\ + & the cost of addition. \\ + & \\ +$\left [ 2 \right ] $ & Devise a chart to find optimal values of $k$ for the previous problem \\ + & for $n = 64 \ldots 1024$ in steps of $64$. \\ + & \\ +$\left [ 2 \right ] $ & Using only algorithms mp\_abs and mp\_sub devise another method for \\ + & calculating the result of a signed comparison. \\ + & +\end{tabular} + +\chapter{Multiplication and Squaring} +\section{The Multipliers} +For most number theoretic problems including certain public key cryptographic algorithms, the ``multipliers'' form the most important subset of +algorithms of any multiple precision integer package. The set of multiplier algorithms include integer multiplication, squaring and modular reduction +where in each of the algorithms single precision multiplication is the dominant operation performed. This chapter will discuss integer multiplication +and squaring, leaving modular reductions for the subsequent chapter. + +The importance of the multiplier algorithms is for the most part driven by the fact that certain popular public key algorithms are based on modular +exponentiation, that is computing $d \equiv a^b \mbox{ (mod }c\mbox{)}$ for some arbitrary choice of $a$, $b$, $c$ and $d$. During a modular +exponentiation the majority\footnote{Roughly speaking a modular exponentiation will spend about 40\% of the time performing modular reductions, +35\% of the time performing squaring and 25\% of the time performing multiplications.} of the processor time is spent performing single precision +multiplications. + +For centuries general purpose multiplication has required a lengthly $O(n^2)$ process, whereby each digit of one multiplicand has to be multiplied +against every digit of the other multiplicand. Traditional long-hand multiplication is based on this process; while the techniques can differ the +overall algorithm used is essentially the same. Only ``recently'' have faster algorithms been studied. First Karatsuba multiplication was discovered in +1962. This algorithm can multiply two numbers with considerably fewer single precision multiplications when compared to the long-hand approach. +This technique led to the discovery of polynomial basis algorithms (\textit{good reference?}) and subquently Fourier Transform based solutions. + +\section{Multiplication} +\subsection{The Baseline Multiplication} +\label{sec:basemult} +\index{baseline multiplication} +Computing the product of two integers in software can be achieved using a trivial adaptation of the standard $O(n^2)$ long-hand multiplication +algorithm that school children are taught. The algorithm is considered an $O(n^2)$ algorithm since for two $n$-digit inputs $n^2$ single precision +multiplications are required. More specifically for a $m$ and $n$ digit input $m \cdot n$ single precision multiplications are required. To +simplify most discussions, it will be assumed that the inputs have comparable number of digits. + +The ``baseline multiplication'' algorithm is designed to act as the ``catch-all'' algorithm, only to be used when the faster algorithms cannot be +used. This algorithm does not use any particularly interesting optimizations and should ideally be avoided if possible. One important +facet of this algorithm, is that it has been modified to only produce a certain amount of output digits as resolution. The importance of this +modification will become evident during the discussion of Barrett modular reduction. Recall that for a $n$ and $m$ digit input the product +will be at most $n + m$ digits. Therefore, this algorithm can be reduced to a full multiplier by having it produce $n + m$ digits of the product. + +Recall from sub-section 4.2.2 the definition of $\gamma$ as the number of bits in the type \textbf{mp\_digit}. We shall now extend the variable set to +include $\alpha$ which shall represent the number of bits in the type \textbf{mp\_word}. This implies that $2^{\alpha} > 2 \cdot \beta^2$. The +constant $\delta = 2^{\alpha - 2lg(\beta)}$ will represent the maximal weight of any column in a product (\textit{see sub-section 5.2.2 for more information}). + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_mul\_digs}. \\ +\textbf{Input}. mp\_int $a$, mp\_int $b$ and an integer $digs$ \\ +\textbf{Output}. $c \leftarrow \vert a \vert \cdot \vert b \vert \mbox{ (mod }\beta^{digs}\mbox{)}$. \\ +\hline \\ +1. If min$(a.used, b.used) < \delta$ then do \\ +\hspace{3mm}1.1 Calculate $c = \vert a \vert \cdot \vert b \vert$ by the Comba method (\textit{see algorithm~\ref{fig:COMBAMULT}}). \\ +\hspace{3mm}1.2 Return the result of step 1.1 \\ +\\ +Allocate and initialize a temporary mp\_int. \\ +2. Init $t$ to be of size $digs$ \\ +3. If step 2 failed return(\textit{MP\_MEM}). \\ +4. $t.used \leftarrow digs$ \\ +\\ +Compute the product. \\ +5. for $ix$ from $0$ to $a.used - 1$ do \\ +\hspace{3mm}5.1 $u \leftarrow 0$ \\ +\hspace{3mm}5.2 $pb \leftarrow \mbox{min}(b.used, digs - ix)$ \\ +\hspace{3mm}5.3 If $pb < 1$ then goto step 6. \\ +\hspace{3mm}5.4 for $iy$ from $0$ to $pb - 1$ do \\ +\hspace{6mm}5.4.1 $\hat r \leftarrow t_{iy + ix} + a_{ix} \cdot b_{iy} + u$ \\ +\hspace{6mm}5.4.2 $t_{iy + ix} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}5.4.3 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +\hspace{3mm}5.5 if $ix + pb < digs$ then do \\ +\hspace{6mm}5.5.1 $t_{ix + pb} \leftarrow u$ \\ +6. Clamp excess digits of $t$. \\ +7. Swap $c$ with $t$ \\ +8. Clear $t$ \\ +9. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm s\_mp\_mul\_digs} +\end{figure} + +\textbf{Algorithm s\_mp\_mul\_digs.} +This algorithm computes the unsigned product of two inputs $a$ and $b$, limited to an output precision of $digs$ digits. While it may seem +a bit awkward to modify the function from its simple $O(n^2)$ description, the usefulness of partial multipliers will arise in a subsequent +algorithm. The algorithm is loosely based on algorithm 14.12 from \cite[pp. 595]{HAC} and is similar to Algorithm M of Knuth \cite[pp. 268]{TAOCPV2}. +Algorithm s\_mp\_mul\_digs differs from these cited references since it can produce a variable output precision regardless of the precision of the +inputs. + +The first thing this algorithm checks for is whether a Comba multiplier can be used instead. If the minimum digit count of either +input is less than $\delta$, then the Comba method may be used instead. After the Comba method is ruled out, the baseline algorithm begins. A +temporary mp\_int variable $t$ is used to hold the intermediate result of the product. This allows the algorithm to be used to +compute products when either $a = c$ or $b = c$ without overwriting the inputs. + +All of step 5 is the infamous $O(n^2)$ multiplication loop slightly modified to only produce upto $digs$ digits of output. The $pb$ variable +is given the count of digits to read from $b$ inside the nested loop. If $pb \le 1$ then no more output digits can be produced and the algorithm +will exit the loop. The best way to think of the loops are as a series of $pb \times 1$ multiplications. That is, in each pass of the +innermost loop $a_{ix}$ is multiplied against $b$ and the result is added (\textit{with an appropriate shift}) to $t$. + +For example, consider multiplying $576$ by $241$. That is equivalent to computing $10^0(1)(576) + 10^1(4)(576) + 10^2(2)(576)$ which is best +visualized in the following table. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{|c|c|c|c|c|c|l|} +\hline && & 5 & 7 & 6 & \\ +\hline $\times$&& & 2 & 4 & 1 & \\ +\hline &&&&&&\\ + && & 5 & 7 & 6 & $10^0(1)(576)$ \\ + &2 & 3 & 6 & 1 & 6 & $10^1(4)(576) + 10^0(1)(576)$ \\ + 1 & 3 & 8 & 8 & 1 & 6 & $10^2(2)(576) + 10^1(4)(576) + 10^0(1)(576)$ \\ +\hline +\end{tabular} +\end{center} +\caption{Long-Hand Multiplication Diagram} +\end{figure} + +Each row of the product is added to the result after being shifted to the left (\textit{multiplied by a power of the radix}) by the appropriate +count. That is in pass $ix$ of the inner loop the product is added starting at the $ix$'th digit of the reult. + +Step 5.4.1 introduces the hat symbol (\textit{e.g. $\hat r$}) which represents a double precision variable. The multiplication on that step +is assumed to be a double wide output single precision multiplication. That is, two single precision variables are multiplied to produce a +double precision result. The step is somewhat optimized from a long-hand multiplication algorithm because the carry from the addition in step +5.4.1 is propagated through the nested loop. If the carry was not propagated immediately it would overflow the single precision digit +$t_{ix+iy}$ and the result would be lost. + +At step 5.5 the nested loop is finished and any carry that was left over should be forwarded. The carry does not have to be added to the $ix+pb$'th +digit since that digit is assumed to be zero at this point. However, if $ix + pb \ge digs$ the carry is not set as it would make the result +exceed the precision requested. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_s\_mp\_mul\_digs.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* multiplies |a| * |b| and only computes upto digs digits of result +018 * HAC pp. 595, Algorithm 14.12 Modified so you can control how +019 * many digits of output are created. +020 */ +021 int +022 s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +023 \{ +024 mp_int t; +025 int res, pa, pb, ix, iy; +026 mp_digit u; +027 mp_word r; +028 mp_digit tmpx, *tmpt, *tmpy; +029 +030 /* can we use the fast multiplier? */ +031 if (((digs) < MP_WARRAY) && +032 MIN (a->used, b->used) < +033 (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) \{ +034 return fast_s_mp_mul_digs (a, b, c, digs); +035 \} +036 +037 if ((res = mp_init_size (&t, digs)) != MP_OKAY) \{ +038 return res; +039 \} +040 t.used = digs; +041 +042 /* compute the digits of the product directly */ +043 pa = a->used; +044 for (ix = 0; ix < pa; ix++) \{ +045 /* set the carry to zero */ +046 u = 0; +047 +048 /* limit ourselves to making digs digits of output */ +049 pb = MIN (b->used, digs - ix); +050 +051 /* setup some aliases */ +052 /* copy of the digit from a used within the nested loop */ +053 tmpx = a->dp[ix]; +054 +055 /* an alias for the destination shifted ix places */ +056 tmpt = t.dp + ix; +057 +058 /* an alias for the digits of b */ +059 tmpy = b->dp; +060 +061 /* compute the columns of the output and propagate the carry */ +062 for (iy = 0; iy < pb; iy++) \{ +063 /* compute the column as a mp_word */ +064 r = ((mp_word)*tmpt) + +065 ((mp_word)tmpx) * ((mp_word)*tmpy++) + +066 ((mp_word) u); +067 +068 /* the new column is the lower part of the result */ +069 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); +070 +071 /* get the carry word from the result */ +072 u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); +073 \} +074 /* set carry if it is placed below digs */ +075 if (ix + iy < digs) \{ +076 *tmpt = u; +077 \} +078 \} +079 +080 mp_clamp (&t); +081 mp_exch (&t, c); +082 +083 mp_clear (&t); +084 return MP_OKAY; +085 \} +086 #endif +\end{alltt} +\end{small} + +Lines 31 to 35 determine if the Comba method can be used first. The conditions for using the Comba routine are that min$(a.used, b.used) < \delta$ and +the number of digits of output is less than \textbf{MP\_WARRAY}. This new constant is used to control +the stack usage in the Comba routines. By default it is set to $\delta$ but can be reduced when memory is at a premium. + +Of particular importance is the calculation of the $ix+iy$'th column on lines 64, 65 and 66. Note how all of the +variables are cast to the type \textbf{mp\_word}, which is also the type of variable $\hat r$. That is to ensure that double precision operations +are used instead of single precision. The multiplication on line 65 makes use of a specific GCC optimizer behaviour. On the outset it looks like +the compiler will have to use a double precision multiplication to produce the result required. Such an operation would be horribly slow on most +processors and drag this to a crawl. However, GCC is smart enough to realize that double wide output single precision multipliers can be used. For +example, the instruction ``MUL'' on the x86 processor can multiply two 32-bit values and produce a 64-bit result. + +\subsection{Faster Multiplication by the ``Comba'' Method} + +One of the huge drawbacks of the ``baseline'' algorithms is that at the $O(n^2)$ level the carry must be computed and propagated upwards. This +makes the nested loop very sequential and hard to unroll and implement in parallel. The ``Comba'' \cite{COMBA} method is named after little known +(\textit{in cryptographic venues}) Paul G. Comba who described a method of implementing fast multipliers that do not require nested +carry fixup operations. As an interesting aside it seems that Paul Barrett describes a similar technique in +his 1986 paper \cite{BARRETT} written five years before. + +At the heart of the Comba technique is once again the long-hand algorithm. Except in this case a slight twist is placed on how +the columns of the result are produced. In the standard long-hand algorithm rows of products are produced then added together to form the +final result. In the baseline algorithm the columns are added together after each iteration to get the result instantaneously. + +In the Comba algorithm the columns of the result are produced entirely independently of each other. That is at the $O(n^2)$ level a +simple multiplication and addition step is performed. The carries of the columns are propagated after the nested loop to reduce the amount +of work requiored. Succintly the first step of the algorithm is to compute the product vector $\vec x$ as follows. + +\begin{equation} +\vec x_n = \sum_{i+j = n} a_ib_j, \forall n \in \lbrace 0, 1, 2, \ldots, i + j \rbrace +\end{equation} + +Where $\vec x_n$ is the $n'th$ column of the output vector. Consider the following example which computes the vector $\vec x$ for the multiplication +of $576$ and $241$. + +\newpage\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{|c|c|c|c|c|c|} + \hline & & 5 & 7 & 6 & First Input\\ + \hline $\times$ & & 2 & 4 & 1 & Second Input\\ +\hline & & $1 \cdot 5 = 5$ & $1 \cdot 7 = 7$ & $1 \cdot 6 = 6$ & First pass \\ + & $4 \cdot 5 = 20$ & $4 \cdot 7+5=33$ & $4 \cdot 6+7=31$ & 6 & Second pass \\ + $2 \cdot 5 = 10$ & $2 \cdot 7 + 20 = 34$ & $2 \cdot 6+33=45$ & 31 & 6 & Third pass \\ +\hline 10 & 34 & 45 & 31 & 6 & Final Result \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Comba Multiplication Diagram} +\end{figure} + +At this point the vector $x = \left < 10, 34, 45, 31, 6 \right >$ is the result of the first step of the Comba multipler. +Now the columns must be fixed by propagating the carry upwards. The resultant vector will have one extra dimension over the input vector which is +congruent to adding a leading zero digit. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Comba Fixup}. \\ +\textbf{Input}. Vector $\vec x$ of dimension $k$ \\ +\textbf{Output}. Vector $\vec x$ such that the carries have been propagated. \\ +\hline \\ +1. for $n$ from $0$ to $k - 1$ do \\ +\hspace{3mm}1.1 $\vec x_{n+1} \leftarrow \vec x_{n+1} + \lfloor \vec x_{n}/\beta \rfloor$ \\ +\hspace{3mm}1.2 $\vec x_{n} \leftarrow \vec x_{n} \mbox{ (mod }\beta\mbox{)}$ \\ +2. Return($\vec x$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Comba Fixup} +\end{figure} + +With that algorithm and $k = 5$ and $\beta = 10$ the following vector is produced $\vec x= \left < 1, 3, 8, 8, 1, 6 \right >$. In this case +$241 \cdot 576$ is in fact $138816$ and the procedure succeeded. If the algorithm is correct and as will be demonstrated shortly more +efficient than the baseline algorithm why not simply always use this algorithm? + +\subsubsection{Column Weight.} +At the nested $O(n^2)$ level the Comba method adds the product of two single precision variables to each column of the output +independently. A serious obstacle is if the carry is lost, due to lack of precision before the algorithm has a chance to fix +the carries. For example, in the multiplication of two three-digit numbers the third column of output will be the sum of +three single precision multiplications. If the precision of the accumulator for the output digits is less then $3 \cdot (\beta - 1)^2$ then +an overflow can occur and the carry information will be lost. For any $m$ and $n$ digit inputs the maximum weight of any column is +min$(m, n)$ which is fairly obvious. + +The maximum number of terms in any column of a product is known as the ``column weight'' and strictly governs when the algorithm can be used. Recall +from earlier that a double precision type has $\alpha$ bits of resolution and a single precision digit has $lg(\beta)$ bits of precision. Given these +two quantities we must not violate the following + +\begin{equation} +k \cdot \left (\beta - 1 \right )^2 < 2^{\alpha} +\end{equation} + +Which reduces to + +\begin{equation} +k \cdot \left ( \beta^2 - 2\beta + 1 \right ) < 2^{\alpha} +\end{equation} + +Let $\rho = lg(\beta)$ represent the number of bits in a single precision digit. By further re-arrangement of the equation the final solution is +found. + +\begin{equation} +k < {{2^{\alpha}} \over {\left (2^{2\rho} - 2^{\rho + 1} + 1 \right )}} +\end{equation} + +The defaults for LibTomMath are $\beta = 2^{28}$ and $\alpha = 2^{64}$ which means that $k$ is bounded by $k < 257$. In this configuration +the smaller input may not have more than $256$ digits if the Comba method is to be used. This is quite satisfactory for most applications since +$256$ digits would allow for numbers in the range of $0 \le x < 2^{7168}$ which, is much larger than most public key cryptographic algorithms require. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{fast\_s\_mp\_mul\_digs}. \\ +\textbf{Input}. mp\_int $a$, mp\_int $b$ and an integer $digs$ \\ +\textbf{Output}. $c \leftarrow \vert a \vert \cdot \vert b \vert \mbox{ (mod }\beta^{digs}\mbox{)}$. \\ +\hline \\ +Place an array of \textbf{MP\_WARRAY} double precision digits named $\hat W$ on the stack. \\ +1. If $c.alloc < digs$ then grow $c$ to $digs$ digits. (\textit{mp\_grow}) \\ +2. If step 1 failed return(\textit{MP\_MEM}).\\ +\\ +Zero the temporary array $\hat W$. \\ +3. for $n$ from $0$ to $digs - 1$ do \\ +\hspace{3mm}3.1 $\hat W_n \leftarrow 0$ \\ +\\ +Compute the columns. \\ +4. for $ix$ from $0$ to $a.used - 1$ do \\ +\hspace{3mm}4.1 $pb \leftarrow \mbox{min}(b.used, digs - ix)$ \\ +\hspace{3mm}4.2 If $pb < 1$ then goto step 5. \\ +\hspace{3mm}4.3 for $iy$ from $0$ to $pb - 1$ do \\ +\hspace{6mm}4.3.1 $\hat W_{ix+iy} \leftarrow \hat W_{ix+iy} + a_{ix}b_{iy}$ \\ +\\ +Propagate the carries upwards. \\ +5. $oldused \leftarrow c.used$ \\ +6. $c.used \leftarrow digs$ \\ +7. If $digs > 1$ then do \\ +\hspace{3mm}7.1. for $ix$ from $1$ to $digs - 1$ do \\ +\hspace{6mm}7.1.1 $\hat W_{ix} \leftarrow \hat W_{ix} + \lfloor \hat W_{ix-1} / \beta \rfloor$ \\ +\hspace{6mm}7.1.2 $c_{ix - 1} \leftarrow \hat W_{ix - 1} \mbox{ (mod }\beta\mbox{)}$ \\ +8. else do \\ +\hspace{3mm}8.1 $ix \leftarrow 0$ \\ +9. $c_{ix} \leftarrow \hat W_{ix} \mbox{ (mod }\beta\mbox{)}$ \\ +\\ +Zero excess digits. \\ +10. If $digs < oldused$ then do \\ +\hspace{3mm}10.1 for $n$ from $digs$ to $oldused - 1$ do \\ +\hspace{6mm}10.1.1 $c_n \leftarrow 0$ \\ +11. Clamp excessive digits of $c$. (\textit{mp\_clamp}) \\ +12. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm fast\_s\_mp\_mul\_digs} +\label{fig:COMBAMULT} +\end{figure} + +\textbf{Algorithm fast\_s\_mp\_mul\_digs.} +This algorithm performs the unsigned multiplication of $a$ and $b$ using the Comba method limited to $digs$ digits of precision. The algorithm +essentially peforms the same calculation as algorithm s\_mp\_mul\_digs, just much faster. + +The array $\hat W$ is meant to be on the stack when the algorithm is used. The size of the array does not change which is ideal. Note also that +unlike algorithm s\_mp\_mul\_digs no temporary mp\_int is required since the result is calculated directly in $\hat W$. + +The $O(n^2)$ loop on step four is where the Comba method's advantages begin to show through in comparison to the baseline algorithm. The lack of +a carry variable or propagation in this loop allows the loop to be performed with only single precision multiplication and additions. Now that each +iteration of the inner loop can be performed independent of the others the inner loop can be performed with a high level of parallelism. + +To measure the benefits of the Comba method over the baseline method consider the number of operations that are required. If the +cost in terms of time of a multiply and addition is $p$ and the cost of a carry propagation is $q$ then a baseline multiplication would require +$O \left ((p + q)n^2 \right )$ time to multiply two $n$-digit numbers. The Comba method requires only $O(pn^2 + qn)$ time, however in practice, +the speed increase is actually much more. With $O(n)$ space the algorithm can be reduced to $O(pn + qn)$ time by implementing the $n$ multiply +and addition operations in the nested loop in parallel. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_fast\_s\_mp\_mul\_digs.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* Fast (comba) multiplier +018 * +019 * This is the fast column-array [comba] multiplier. It is +020 * designed to compute the columns of the product first +021 * then handle the carries afterwards. This has the effect +022 * of making the nested loops that compute the columns very +023 * simple and schedulable on super-scalar processors. +024 * +025 * This has been modified to produce a variable number of +026 * digits of output so if say only a half-product is required +027 * you don't have to compute the upper half (a feature +028 * required for fast Barrett reduction). +029 * +030 * Based on Algorithm 14.12 on pp.595 of HAC. +031 * +032 */ +033 int +034 fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +035 \{ +036 int olduse, res, pa, ix, iz; +037 mp_digit W[MP_WARRAY]; +038 register mp_word _W; +039 +040 /* grow the destination as required */ +041 if (c->alloc < digs) \{ +042 if ((res = mp_grow (c, digs)) != MP_OKAY) \{ +043 return res; +044 \} +045 \} +046 +047 /* number of output digits to produce */ +048 pa = MIN(digs, a->used + b->used); +049 +050 /* clear the carry */ +051 _W = 0; +052 for (ix = 0; ix < pa; ix++) \{ +053 int tx, ty; +054 int iy; +055 mp_digit *tmpx, *tmpy; +056 +057 /* get offsets into the two bignums */ +058 ty = MIN(b->used-1, ix); +059 tx = ix - ty; +060 +061 /* setup temp aliases */ +062 tmpx = a->dp + tx; +063 tmpy = b->dp + ty; +064 +065 /* this is the number of times the loop will iterrate, essentially its + +066 while (tx++ < a->used && ty-- >= 0) \{ ... \} +067 */ +068 iy = MIN(a->used-tx, ty+1); +069 +070 /* execute loop */ +071 for (iz = 0; iz < iy; ++iz) \{ +072 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); +073 \} +074 +075 /* store term */ +076 W[ix] = ((mp_digit)_W) & MP_MASK; +077 +078 /* make next carry */ +079 _W = _W >> ((mp_word)DIGIT_BIT); +080 \} +081 +082 /* store final carry */ +083 W[ix] = _W; +084 +085 /* setup dest */ +086 olduse = c->used; +087 c->used = digs; +088 +089 \{ +090 register mp_digit *tmpc; +091 tmpc = c->dp; +092 for (ix = 0; ix < digs; ix++) \{ +093 /* now extract the previous digit [below the carry] */ +094 *tmpc++ = W[ix]; +095 \} +096 +097 /* clear unused digits [that existed in the old copy of c] */ +098 for (; ix < olduse; ix++) \{ +099 *tmpc++ = 0; +100 \} +101 \} +102 mp_clamp (c); +103 return MP_OKAY; +104 \} +105 #endif +\end{alltt} +\end{small} + +The memset on line @47,memset@ clears the initial $\hat W$ array to zero in a single step. Like the slower baseline multiplication +implementation a series of aliases (\textit{lines 62, 63 and 76}) are used to simplify the inner $O(n^2)$ loop. +In this case a new alias $\_\hat W$ has been added which refers to the double precision columns offset by $ix$ in each pass. + +The inner loop on lines 92, 79 and 80 is where the algorithm will spend the majority of the time, which is why it has been +stripped to the bones of any extra baggage\footnote{Hence the pointer aliases.}. On x86 processors the multiplication and additions amount to at the +very least five instructions (\textit{two loads, two additions, one multiply}) while on the ARMv4 processors they amount to only three +(\textit{one load, one store, one multiply-add}). For both of the x86 and ARMv4 processors the GCC compiler performs a good job at unrolling the loop +and scheduling the instructions so there are very few dependency stalls. + +In theory the difference between the baseline and comba algorithms is a mere $O(qn)$ time difference. However, in the $O(n^2)$ nested loop of the +baseline method there are dependency stalls as the algorithm must wait for the multiplier to finish before propagating the carry to the next +digit. As a result fewer of the often multiple execution units\footnote{The AMD Athlon has three execution units and the Intel P4 has four.} can +be simultaneously used. + +\subsection{Polynomial Basis Multiplication} +To break the $O(n^2)$ barrier in multiplication requires a completely different look at integer multiplication. In the following algorithms +the use of polynomial basis representation for two integers $a$ and $b$ as $f(x) = \sum_{i=0}^{n} a_i x^i$ and +$g(x) = \sum_{i=0}^{n} b_i x^i$ respectively, is required. In this system both $f(x)$ and $g(x)$ have $n + 1$ terms and are of the $n$'th degree. + +The product $a \cdot b \equiv f(x)g(x)$ is the polynomial $W(x) = \sum_{i=0}^{2n} w_i x^i$. The coefficients $w_i$ will +directly yield the desired product when $\beta$ is substituted for $x$. The direct solution to solve for the $2n + 1$ coefficients +requires $O(n^2)$ time and would in practice be slower than the Comba technique. + +However, numerical analysis theory indicates that only $2n + 1$ distinct points in $W(x)$ are required to determine the values of the $2n + 1$ unknown +coefficients. This means by finding $\zeta_y = W(y)$ for $2n + 1$ small values of $y$ the coefficients of $W(x)$ can be found with +Gaussian elimination. This technique is also occasionally refered to as the \textit{interpolation technique} (\textit{references please...}) since in +effect an interpolation based on $2n + 1$ points will yield a polynomial equivalent to $W(x)$. + +The coefficients of the polynomial $W(x)$ are unknown which makes finding $W(y)$ for any value of $y$ impossible. However, since +$W(x) = f(x)g(x)$ the equivalent $\zeta_y = f(y) g(y)$ can be used in its place. The benefit of this technique stems from the +fact that $f(y)$ and $g(y)$ are much smaller than either $a$ or $b$ respectively. As a result finding the $2n + 1$ relations required +by multiplying $f(y)g(y)$ involves multiplying integers that are much smaller than either of the inputs. + +When picking points to gather relations there are always three obvious points to choose, $y = 0, 1$ and $ \infty$. The $\zeta_0$ term +is simply the product $W(0) = w_0 = a_0 \cdot b_0$. The $\zeta_1$ term is the product +$W(1) = \left (\sum_{i = 0}^{n} a_i \right ) \left (\sum_{i = 0}^{n} b_i \right )$. The third point $\zeta_{\infty}$ is less obvious but rather +simple to explain. The $2n + 1$'th coefficient of $W(x)$ is numerically equivalent to the most significant column in an integer multiplication. +The point at $\infty$ is used symbolically to represent the most significant column, that is $W(\infty) = w_{2n} = a_nb_n$. Note that the +points at $y = 0$ and $\infty$ yield the coefficients $w_0$ and $w_{2n}$ directly. + +If more points are required they should be of small values and powers of two such as $2^q$ and the related \textit{mirror points} +$\left (2^q \right )^{2n} \cdot \zeta_{2^{-q}}$ for small values of $q$. The term ``mirror point'' stems from the fact that +$\left (2^q \right )^{2n} \cdot \zeta_{2^{-q}}$ can be calculated in the exact opposite fashion as $\zeta_{2^q}$. For +example, when $n = 2$ and $q = 1$ then following two equations are equivalent to the point $\zeta_{2}$ and its mirror. + +\begin{eqnarray} +\zeta_{2} = f(2)g(2) = (4a_2 + 2a_1 + a_0)(4b_2 + 2b_1 + b_0) \nonumber \\ +16 \cdot \zeta_{1 \over 2} = 4f({1\over 2}) \cdot 4g({1 \over 2}) = (a_2 + 2a_1 + 4a_0)(b_2 + 2b_1 + 4b_0) +\end{eqnarray} + +Using such points will allow the values of $f(y)$ and $g(y)$ to be independently calculated using only left shifts. For example, when $n = 2$ the +polynomial $f(2^q)$ is equal to $2^q((2^qa_2) + a_1) + a_0$. This technique of polynomial representation is known as Horner's method. + +As a general rule of the algorithm when the inputs are split into $n$ parts each there are $2n - 1$ multiplications. Each multiplication is of +multiplicands that have $n$ times fewer digits than the inputs. The asymptotic running time of this algorithm is +$O \left ( k^{lg_n(2n - 1)} \right )$ for $k$ digit inputs (\textit{assuming they have the same number of digits}). Figure~\ref{fig:exponent} +summarizes the exponents for various values of $n$. + +\begin{figure} +\begin{center} +\begin{tabular}{|c|c|c|} +\hline \textbf{Split into $n$ Parts} & \textbf{Exponent} & \textbf{Notes}\\ +\hline $2$ & $1.584962501$ & This is Karatsuba Multiplication. \\ +\hline $3$ & $1.464973520$ & This is Toom-Cook Multiplication. \\ +\hline $4$ & $1.403677461$ &\\ +\hline $5$ & $1.365212389$ &\\ +\hline $10$ & $1.278753601$ &\\ +\hline $100$ & $1.149426538$ &\\ +\hline $1000$ & $1.100270931$ &\\ +\hline $10000$ & $1.075252070$ &\\ +\hline +\end{tabular} +\end{center} +\caption{Asymptotic Running Time of Polynomial Basis Multiplication} +\label{fig:exponent} +\end{figure} + +At first it may seem like a good idea to choose $n = 1000$ since the exponent is approximately $1.1$. However, the overhead +of solving for the 2001 terms of $W(x)$ will certainly consume any savings the algorithm could offer for all but exceedingly large +numbers. + +\subsubsection{Cutoff Point} +The polynomial basis multiplication algorithms all require fewer single precision multiplications than a straight Comba approach. However, +the algorithms incur an overhead (\textit{at the $O(n)$ work level}) since they require a system of equations to be solved. This makes the +polynomial basis approach more costly to use with small inputs. + +Let $m$ represent the number of digits in the multiplicands (\textit{assume both multiplicands have the same number of digits}). There exists a +point $y$ such that when $m < y$ the polynomial basis algorithms are more costly than Comba, when $m = y$ they are roughly the same cost and +when $m > y$ the Comba methods are slower than the polynomial basis algorithms. + +The exact location of $y$ depends on several key architectural elements of the computer platform in question. + +\begin{enumerate} +\item The ratio of clock cycles for single precision multiplication versus other simpler operations such as addition, shifting, etc. For example +on the AMD Athlon the ratio is roughly $17 : 1$ while on the Intel P4 it is $29 : 1$. The higher the ratio in favour of multiplication the lower +the cutoff point $y$ will be. + +\item The complexity of the linear system of equations (\textit{for the coefficients of $W(x)$}) is. Generally speaking as the number of splits +grows the complexity grows substantially. Ideally solving the system will only involve addition, subtraction and shifting of integers. This +directly reflects on the ratio previous mentioned. + +\item To a lesser extent memory bandwidth and function call overheads. Provided the values are in the processor cache this is less of an +influence over the cutoff point. + +\end{enumerate} + +A clean cutoff point separation occurs when a point $y$ is found such that all of the cutoff point conditions are met. For example, if the point +is too low then there will be values of $m$ such that $m > y$ and the Comba method is still faster. Finding the cutoff points is fairly simple when +a high resolution timer is available. + +\subsection{Karatsuba Multiplication} +Karatsuba \cite{KARA} multiplication when originally proposed in 1962 was among the first set of algorithms to break the $O(n^2)$ barrier for +general purpose multiplication. Given two polynomial basis representations $f(x) = ax + b$ and $g(x) = cx + d$, Karatsuba proved with +light algebra \cite{KARAP} that the following polynomial is equivalent to multiplication of the two integers the polynomials represent. + +\begin{equation} +f(x) \cdot g(x) = acx^2 + ((a - b)(c - d) - (ac + bd))x + bd +\end{equation} + +Using the observation that $ac$ and $bd$ could be re-used only three half sized multiplications would be required to produce the product. Applying +this algorithm recursively, the work factor becomes $O(n^{lg(3)})$ which is substantially better than the work factor $O(n^2)$ of the Comba technique. It turns +out what Karatsuba did not know or at least did not publish was that this is simply polynomial basis multiplication with the points +$\zeta_0$, $\zeta_{\infty}$ and $-\zeta_{-1}$. Consider the resultant system of equations. + +\begin{center} +\begin{tabular}{rcrcrcrc} +$\zeta_{0}$ & $=$ & & & & & $w_0$ \\ +$-\zeta_{-1}$ & $=$ & $-w_2$ & $+$ & $w_1$ & $-$ & $w_0$ \\ +$\zeta_{\infty}$ & $=$ & $w_2$ & & & & \\ +\end{tabular} +\end{center} + +By adding the first and last equation to the equation in the middle the term $w_1$ can be isolated and all three coefficients solved for. The simplicity +of this system of equations has made Karatsuba fairly popular. In fact the cutoff point is often fairly low\footnote{With LibTomMath 0.18 it is 70 and 109 digits for the Intel P4 and AMD Athlon respectively.} +making it an ideal algorithm to speed up certain public key cryptosystems such as RSA and Diffie-Hellman. It is worth noting that the point +$\zeta_1$ could be substituted for $-\zeta_{-1}$. In this case the first and third row are subtracted instead of added to the second row. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_karatsuba\_mul}. \\ +\textbf{Input}. mp\_int $a$ and mp\_int $b$ \\ +\textbf{Output}. $c \leftarrow \vert a \vert \cdot \vert b \vert$ \\ +\hline \\ +1. Init the following mp\_int variables: $x0$, $x1$, $y0$, $y1$, $t1$, $x0y0$, $x1y1$.\\ +2. If step 2 failed then return(\textit{MP\_MEM}). \\ +\\ +Split the input. e.g. $a = x1 \cdot \beta^B + x0$ \\ +3. $B \leftarrow \mbox{min}(a.used, b.used)/2$ \\ +4. $x0 \leftarrow a \mbox{ (mod }\beta^B\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +5. $y0 \leftarrow b \mbox{ (mod }\beta^B\mbox{)}$ \\ +6. $x1 \leftarrow \lfloor a / \beta^B \rfloor$ (\textit{mp\_rshd}) \\ +7. $y1 \leftarrow \lfloor b / \beta^B \rfloor$ \\ +\\ +Calculate the three products. \\ +8. $x0y0 \leftarrow x0 \cdot y0$ (\textit{mp\_mul}) \\ +9. $x1y1 \leftarrow x1 \cdot y1$ \\ +10. $t1 \leftarrow x1 - x0$ (\textit{mp\_sub}) \\ +11. $x0 \leftarrow y1 - y0$ \\ +12. $t1 \leftarrow t1 \cdot x0$ \\ +\\ +Calculate the middle term. \\ +13. $x0 \leftarrow x0y0 + x1y1$ \\ +14. $t1 \leftarrow x0 - t1$ \\ +\\ +Calculate the final product. \\ +15. $t1 \leftarrow t1 \cdot \beta^B$ (\textit{mp\_lshd}) \\ +16. $x1y1 \leftarrow x1y1 \cdot \beta^{2B}$ \\ +17. $t1 \leftarrow x0y0 + t1$ \\ +18. $c \leftarrow t1 + x1y1$ \\ +19. Clear all of the temporary variables. \\ +20. Return(\textit{MP\_OKAY}).\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_karatsuba\_mul} +\end{figure} + +\textbf{Algorithm mp\_karatsuba\_mul.} +This algorithm computes the unsigned product of two inputs using the Karatsuba multiplication algorithm. It is loosely based on the description +from Knuth \cite[pp. 294-295]{TAOCPV2}. + +\index{radix point} +In order to split the two inputs into their respective halves, a suitable \textit{radix point} must be chosen. The radix point chosen must +be used for both of the inputs meaning that it must be smaller than the smallest input. Step 3 chooses the radix point $B$ as half of the +smallest input \textbf{used} count. After the radix point is chosen the inputs are split into lower and upper halves. Step 4 and 5 +compute the lower halves. Step 6 and 7 computer the upper halves. + +After the halves have been computed the three intermediate half-size products must be computed. Step 8 and 9 compute the trivial products +$x0 \cdot y0$ and $x1 \cdot y1$. The mp\_int $x0$ is used as a temporary variable after $x1 - x0$ has been computed. By using $x0$ instead +of an additional temporary variable, the algorithm can avoid an addition memory allocation operation. + +The remaining steps 13 through 18 compute the Karatsuba polynomial through a variety of digit shifting and addition operations. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_karatsuba\_mul.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* c = |a| * |b| using Karatsuba Multiplication using +018 * three half size multiplications +019 * +020 * Let B represent the radix [e.g. 2**DIGIT_BIT] and +021 * let n represent half of the number of digits in +022 * the min(a,b) +023 * +024 * a = a1 * B**n + a0 +025 * b = b1 * B**n + b0 +026 * +027 * Then, a * b => +028 a1b1 * B**2n + ((a1 - a0)(b1 - b0) + a0b0 + a1b1) * B + a0b0 +029 * +030 * Note that a1b1 and a0b0 are used twice and only need to be +031 * computed once. So in total three half size (half # of +032 * digit) multiplications are performed, a0b0, a1b1 and +033 * (a1-b1)(a0-b0) +034 * +035 * Note that a multiplication of half the digits requires +036 * 1/4th the number of single precision multiplications so in +037 * total after one call 25% of the single precision multiplications +038 * are saved. Note also that the call to mp_mul can end up back +039 * in this function if the a0, a1, b0, or b1 are above the threshold. +040 * This is known as divide-and-conquer and leads to the famous +041 * O(N**lg(3)) or O(N**1.584) work which is asymptopically lower than +042 * the standard O(N**2) that the baseline/comba methods use. +043 * Generally though the overhead of this method doesn't pay off +044 * until a certain size (N ~ 80) is reached. +045 */ +046 int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c) +047 \{ +048 mp_int x0, x1, y0, y1, t1, x0y0, x1y1; +049 int B, err; +050 +051 /* default the return code to an error */ +052 err = MP_MEM; +053 +054 /* min # of digits */ +055 B = MIN (a->used, b->used); +056 +057 /* now divide in two */ +058 B = B >> 1; +059 +060 /* init copy all the temps */ +061 if (mp_init_size (&x0, B) != MP_OKAY) +062 goto ERR; +063 if (mp_init_size (&x1, a->used - B) != MP_OKAY) +064 goto X0; +065 if (mp_init_size (&y0, B) != MP_OKAY) +066 goto X1; +067 if (mp_init_size (&y1, b->used - B) != MP_OKAY) +068 goto Y0; +069 +070 /* init temps */ +071 if (mp_init_size (&t1, B * 2) != MP_OKAY) +072 goto Y1; +073 if (mp_init_size (&x0y0, B * 2) != MP_OKAY) +074 goto T1; +075 if (mp_init_size (&x1y1, B * 2) != MP_OKAY) +076 goto X0Y0; +077 +078 /* now shift the digits */ +079 x0.used = y0.used = B; +080 x1.used = a->used - B; +081 y1.used = b->used - B; +082 +083 \{ +084 register int x; +085 register mp_digit *tmpa, *tmpb, *tmpx, *tmpy; +086 +087 /* we copy the digits directly instead of using higher level functions +088 * since we also need to shift the digits +089 */ +090 tmpa = a->dp; +091 tmpb = b->dp; +092 +093 tmpx = x0.dp; +094 tmpy = y0.dp; +095 for (x = 0; x < B; x++) \{ +096 *tmpx++ = *tmpa++; +097 *tmpy++ = *tmpb++; +098 \} +099 +100 tmpx = x1.dp; +101 for (x = B; x < a->used; x++) \{ +102 *tmpx++ = *tmpa++; +103 \} +104 +105 tmpy = y1.dp; +106 for (x = B; x < b->used; x++) \{ +107 *tmpy++ = *tmpb++; +108 \} +109 \} +110 +111 /* only need to clamp the lower words since by definition the +112 * upper words x1/y1 must have a known number of digits +113 */ +114 mp_clamp (&x0); +115 mp_clamp (&y0); +116 +117 /* now calc the products x0y0 and x1y1 */ +118 /* after this x0 is no longer required, free temp [x0==t2]! */ +119 if (mp_mul (&x0, &y0, &x0y0) != MP_OKAY) +120 goto X1Y1; /* x0y0 = x0*y0 */ +121 if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY) +122 goto X1Y1; /* x1y1 = x1*y1 */ +123 +124 /* now calc x1-x0 and y1-y0 */ +125 if (mp_sub (&x1, &x0, &t1) != MP_OKAY) +126 goto X1Y1; /* t1 = x1 - x0 */ +127 if (mp_sub (&y1, &y0, &x0) != MP_OKAY) +128 goto X1Y1; /* t2 = y1 - y0 */ +129 if (mp_mul (&t1, &x0, &t1) != MP_OKAY) +130 goto X1Y1; /* t1 = (x1 - x0) * (y1 - y0) */ +131 +132 /* add x0y0 */ +133 if (mp_add (&x0y0, &x1y1, &x0) != MP_OKAY) +134 goto X1Y1; /* t2 = x0y0 + x1y1 */ +135 if (mp_sub (&x0, &t1, &t1) != MP_OKAY) +136 goto X1Y1; /* t1 = x0y0 + x1y1 - (x1-x0)*(y1-y0) */ +137 +138 /* shift by B */ +139 if (mp_lshd (&t1, B) != MP_OKAY) +140 goto X1Y1; /* t1 = (x0y0 + x1y1 - (x1-x0)*(y1-y0))<used, b->used) / 3; +037 +038 /* a = a2 * B**2 + a1 * B + a0 */ +039 if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) \{ +040 goto ERR; +041 \} +042 +043 if ((res = mp_copy(a, &a1)) != MP_OKAY) \{ +044 goto ERR; +045 \} +046 mp_rshd(&a1, B); +047 mp_mod_2d(&a1, DIGIT_BIT * B, &a1); +048 +049 if ((res = mp_copy(a, &a2)) != MP_OKAY) \{ +050 goto ERR; +051 \} +052 mp_rshd(&a2, B*2); +053 +054 /* b = b2 * B**2 + b1 * B + b0 */ +055 if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) \{ +056 goto ERR; +057 \} +058 +059 if ((res = mp_copy(b, &b1)) != MP_OKAY) \{ +060 goto ERR; +061 \} +062 mp_rshd(&b1, B); +063 mp_mod_2d(&b1, DIGIT_BIT * B, &b1); +064 +065 if ((res = mp_copy(b, &b2)) != MP_OKAY) \{ +066 goto ERR; +067 \} +068 mp_rshd(&b2, B*2); +069 +070 /* w0 = a0*b0 */ +071 if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) \{ +072 goto ERR; +073 \} +074 +075 /* w4 = a2 * b2 */ +076 if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) \{ +077 goto ERR; +078 \} +079 +080 /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */ +081 if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) \{ +082 goto ERR; +083 \} +084 if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) \{ +085 goto ERR; +086 \} +087 if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) \{ +088 goto ERR; +089 \} +090 if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) \{ +091 goto ERR; +092 \} +093 +094 if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) \{ +095 goto ERR; +096 \} +097 if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) \{ +098 goto ERR; +099 \} +100 if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) \{ +101 goto ERR; +102 \} +103 if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) \{ +104 goto ERR; +105 \} +106 +107 if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) \{ +108 goto ERR; +109 \} +110 +111 /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */ +112 if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) \{ +113 goto ERR; +114 \} +115 if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) \{ +116 goto ERR; +117 \} +118 if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) \{ +119 goto ERR; +120 \} +121 if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) \{ +122 goto ERR; +123 \} +124 +125 if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) \{ +126 goto ERR; +127 \} +128 if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) \{ +129 goto ERR; +130 \} +131 if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) \{ +132 goto ERR; +133 \} +134 if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) \{ +135 goto ERR; +136 \} +137 +138 if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) \{ +139 goto ERR; +140 \} +141 +142 +143 /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */ +144 if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) \{ +145 goto ERR; +146 \} +147 if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) \{ +148 goto ERR; +149 \} +150 if ((res = mp_add(&b2, &b1, &tmp2)) != MP_OKAY) \{ +151 goto ERR; +152 \} +153 if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) \{ +154 goto ERR; +155 \} +156 if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) \{ +157 goto ERR; +158 \} +159 +160 /* now solve the matrix +161 +162 0 0 0 0 1 +163 1 2 4 8 16 +164 1 1 1 1 1 +165 16 8 4 2 1 +166 1 0 0 0 0 +167 +168 using 12 subtractions, 4 shifts, +169 2 small divisions and 1 small multiplication +170 */ +171 +172 /* r1 - r4 */ +173 if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) \{ +174 goto ERR; +175 \} +176 /* r3 - r0 */ +177 if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) \{ +178 goto ERR; +179 \} +180 /* r1/2 */ +181 if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) \{ +182 goto ERR; +183 \} +184 /* r3/2 */ +185 if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) \{ +186 goto ERR; +187 \} +188 /* r2 - r0 - r4 */ +189 if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) \{ +190 goto ERR; +191 \} +192 if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) \{ +193 goto ERR; +194 \} +195 /* r1 - r2 */ +196 if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) \{ +197 goto ERR; +198 \} +199 /* r3 - r2 */ +200 if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) \{ +201 goto ERR; +202 \} +203 /* r1 - 8r0 */ +204 if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) \{ +205 goto ERR; +206 \} +207 if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) \{ +208 goto ERR; +209 \} +210 /* r3 - 8r4 */ +211 if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) \{ +212 goto ERR; +213 \} +214 if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) \{ +215 goto ERR; +216 \} +217 /* 3r2 - r1 - r3 */ +218 if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) \{ +219 goto ERR; +220 \} +221 if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) \{ +222 goto ERR; +223 \} +224 if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) \{ +225 goto ERR; +226 \} +227 /* r1 - r2 */ +228 if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) \{ +229 goto ERR; +230 \} +231 /* r3 - r2 */ +232 if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) \{ +233 goto ERR; +234 \} +235 /* r1/3 */ +236 if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) \{ +237 goto ERR; +238 \} +239 /* r3/3 */ +240 if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) \{ +241 goto ERR; +242 \} +243 +244 /* at this point shift W[n] by B*n */ +245 if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) \{ +246 goto ERR; +247 \} +248 if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) \{ +249 goto ERR; +250 \} +251 if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) \{ +252 goto ERR; +253 \} +254 if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) \{ +255 goto ERR; +256 \} +257 +258 if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) \{ +259 goto ERR; +260 \} +261 if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) \{ +262 goto ERR; +263 \} +264 if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) \{ +265 goto ERR; +266 \} +267 if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) \{ +268 goto ERR; +269 \} +270 +271 ERR: +272 mp_clear_multi(&w0, &w1, &w2, &w3, &w4, +273 &a0, &a1, &a2, &b0, &b1, +274 &b2, &tmp1, &tmp2, NULL); +275 return res; +276 \} +277 +278 #endif +\end{alltt} +\end{small} + +-- Comments to be added during editing phase. + +\subsection{Signed Multiplication} +Now that algorithms to handle multiplications of every useful dimensions have been developed, a rather simple finishing touch is required. So far all +of the multiplication algorithms have been unsigned multiplications which leaves only a signed multiplication algorithm to be established. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mul}. \\ +\textbf{Input}. mp\_int $a$ and mp\_int $b$ \\ +\textbf{Output}. $c \leftarrow a \cdot b$ \\ +\hline \\ +1. If $a.sign = b.sign$ then \\ +\hspace{3mm}1.1 $sign = MP\_ZPOS$ \\ +2. else \\ +\hspace{3mm}2.1 $sign = MP\_ZNEG$ \\ +3. If min$(a.used, b.used) \ge TOOM\_MUL\_CUTOFF$ then \\ +\hspace{3mm}3.1 $c \leftarrow a \cdot b$ using algorithm mp\_toom\_mul \\ +4. else if min$(a.used, b.used) \ge KARATSUBA\_MUL\_CUTOFF$ then \\ +\hspace{3mm}4.1 $c \leftarrow a \cdot b$ using algorithm mp\_karatsuba\_mul \\ +5. else \\ +\hspace{3mm}5.1 $digs \leftarrow a.used + b.used + 1$ \\ +\hspace{3mm}5.2 If $digs < MP\_ARRAY$ and min$(a.used, b.used) \le \delta$ then \\ +\hspace{6mm}5.2.1 $c \leftarrow a \cdot b \mbox{ (mod }\beta^{digs}\mbox{)}$ using algorithm fast\_s\_mp\_mul\_digs. \\ +\hspace{3mm}5.3 else \\ +\hspace{6mm}5.3.1 $c \leftarrow a \cdot b \mbox{ (mod }\beta^{digs}\mbox{)}$ using algorithm s\_mp\_mul\_digs. \\ +6. $c.sign \leftarrow sign$ \\ +7. Return the result of the unsigned multiplication performed. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mul} +\end{figure} + +\textbf{Algorithm mp\_mul.} +This algorithm performs the signed multiplication of two inputs. It will make use of any of the three unsigned multiplication algorithms +available when the input is of appropriate size. The \textbf{sign} of the result is not set until the end of the algorithm since algorithm +s\_mp\_mul\_digs will clear it. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_mul.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* high level multiplication (handles sign) */ +018 int mp_mul (mp_int * a, mp_int * b, mp_int * c) +019 \{ +020 int res, neg; +021 neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; +022 +023 /* use Toom-Cook? */ +024 #ifdef BN_MP_TOOM_MUL_C +025 if (MIN (a->used, b->used) >= TOOM_MUL_CUTOFF) \{ +026 res = mp_toom_mul(a, b, c); +027 \} else +028 #endif +029 #ifdef BN_MP_KARATSUBA_MUL_C +030 /* use Karatsuba? */ +031 if (MIN (a->used, b->used) >= KARATSUBA_MUL_CUTOFF) \{ +032 res = mp_karatsuba_mul (a, b, c); +033 \} else +034 #endif +035 \{ +036 /* can we use the fast multiplier? +037 * +038 * The fast multiplier can be used if the output will +039 * have less than MP_WARRAY digits and the number of +040 * digits won't affect carry propagation +041 */ +042 int digs = a->used + b->used + 1; +043 +044 #ifdef BN_FAST_S_MP_MUL_DIGS_C +045 if ((digs < MP_WARRAY) && +046 MIN(a->used, b->used) <= +047 (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) \{ +048 res = fast_s_mp_mul_digs (a, b, c, digs); +049 \} else +050 #endif +051 #ifdef BN_S_MP_MUL_DIGS_C +052 res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */ +053 #else +054 res = MP_VAL; +055 #endif +056 +057 \} +058 c->sign = (c->used > 0) ? neg : MP_ZPOS; +059 return res; +060 \} +061 #endif +\end{alltt} +\end{small} + +The implementation is rather simplistic and is not particularly noteworthy. Line 23 computes the sign of the result using the ``?'' +operator from the C programming language. Line 47 computes $\delta$ using the fact that $1 << k$ is equal to $2^k$. + +\section{Squaring} +\label{sec:basesquare} + +Squaring is a special case of multiplication where both multiplicands are equal. At first it may seem like there is no significant optimization +available but in fact there is. Consider the multiplication of $576$ against $241$. In total there will be nine single precision multiplications +performed which are $1\cdot 6$, $1 \cdot 7$, $1 \cdot 5$, $4 \cdot 6$, $4 \cdot 7$, $4 \cdot 5$, $2 \cdot 6$, $2 \cdot 7$ and $2 \cdot 5$. Now consider +the multiplication of $123$ against $123$. The nine products are $3 \cdot 3$, $3 \cdot 2$, $3 \cdot 1$, $2 \cdot 3$, $2 \cdot 2$, $2 \cdot 1$, +$1 \cdot 3$, $1 \cdot 2$ and $1 \cdot 1$. On closer inspection some of the products are equivalent. For example, $3 \cdot 2 = 2 \cdot 3$ +and $3 \cdot 1 = 1 \cdot 3$. + +For any $n$-digit input, there are ${{\left (n^2 + n \right)}\over 2}$ possible unique single precision multiplications required compared to the $n^2$ +required for multiplication. The following diagram gives an example of the operations required. + +\begin{figure}[here] +\begin{center} +\begin{tabular}{ccccc|c} +&&1&2&3&\\ +$\times$ &&1&2&3&\\ +\hline && $3 \cdot 1$ & $3 \cdot 2$ & $3 \cdot 3$ & Row 0\\ + & $2 \cdot 1$ & $2 \cdot 2$ & $2 \cdot 3$ && Row 1 \\ + $1 \cdot 1$ & $1 \cdot 2$ & $1 \cdot 3$ &&& Row 2 \\ +\end{tabular} +\end{center} +\caption{Squaring Optimization Diagram} +\end{figure} + +Starting from zero and numbering the columns from right to left a very simple pattern becomes obvious. For the purposes of this discussion let $x$ +represent the number being squared. The first observation is that in row $k$ the $2k$'th column of the product has a $\left (x_k \right)^2$ term in it. + +The second observation is that every column $j$ in row $k$ where $j \ne 2k$ is part of a double product. Every non-square term of a column will +appear twice hence the name ``double product''. Every odd column is made up entirely of double products. In fact every column is made up of double +products and at most one square (\textit{see the exercise section}). + +The third and final observation is that for row $k$ the first unique non-square term, that is, one that hasn't already appeared in an earlier row, +occurs at column $2k + 1$. For example, on row $1$ of the previous squaring, column one is part of the double product with column one from row zero. +Column two of row one is a square and column three is the first unique column. + +\subsection{The Baseline Squaring Algorithm} +The baseline squaring algorithm is meant to be a catch-all squaring algorithm. It will handle any of the input sizes that the faster routines +will not handle. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_sqr}. \\ +\textbf{Input}. mp\_int $a$ \\ +\textbf{Output}. $b \leftarrow a^2$ \\ +\hline \\ +1. Init a temporary mp\_int of at least $2 \cdot a.used +1$ digits. (\textit{mp\_init\_size}) \\ +2. If step 1 failed return(\textit{MP\_MEM}) \\ +3. $t.used \leftarrow 2 \cdot a.used + 1$ \\ +4. For $ix$ from 0 to $a.used - 1$ do \\ +\hspace{3mm}Calculate the square. \\ +\hspace{3mm}4.1 $\hat r \leftarrow t_{2ix} + \left (a_{ix} \right )^2$ \\ +\hspace{3mm}4.2 $t_{2ix} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}Calculate the double products after the square. \\ +\hspace{3mm}4.3 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +\hspace{3mm}4.4 For $iy$ from $ix + 1$ to $a.used - 1$ do \\ +\hspace{6mm}4.4.1 $\hat r \leftarrow 2 \cdot a_{ix}a_{iy} + t_{ix + iy} + u$ \\ +\hspace{6mm}4.4.2 $t_{ix + iy} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}4.4.3 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +\hspace{3mm}Set the last carry. \\ +\hspace{3mm}4.5 While $u > 0$ do \\ +\hspace{6mm}4.5.1 $iy \leftarrow iy + 1$ \\ +\hspace{6mm}4.5.2 $\hat r \leftarrow t_{ix + iy} + u$ \\ +\hspace{6mm}4.5.3 $t_{ix + iy} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}4.5.4 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +5. Clamp excess digits of $t$. (\textit{mp\_clamp}) \\ +6. Exchange $b$ and $t$. \\ +7. Clear $t$ (\textit{mp\_clear}) \\ +8. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm s\_mp\_sqr} +\end{figure} + +\textbf{Algorithm s\_mp\_sqr.} +This algorithm computes the square of an input using the three observations on squaring. It is based fairly faithfully on algorithm 14.16 of HAC +\cite[pp.596-597]{HAC}. Similar to algorithm s\_mp\_mul\_digs, a temporary mp\_int is allocated to hold the result of the squaring. This allows the +destination mp\_int to be the same as the source mp\_int. + +The outer loop of this algorithm begins on step 4. It is best to think of the outer loop as walking down the rows of the partial results, while +the inner loop computes the columns of the partial result. Step 4.1 and 4.2 compute the square term for each row, and step 4.3 and 4.4 propagate +the carry and compute the double products. + +The requirement that a mp\_word be able to represent the range $0 \le x < 2 \beta^2$ arises from this +very algorithm. The product $a_{ix}a_{iy}$ will lie in the range $0 \le x \le \beta^2 - 2\beta + 1$ which is obviously less than $\beta^2$ meaning that +when it is multiplied by two, it can be properly represented by a mp\_word. + +Similar to algorithm s\_mp\_mul\_digs, after every pass of the inner loop, the destination is correctly set to the sum of all of the partial +results calculated so far. This involves expensive carry propagation which will be eliminated in the next algorithm. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_s\_mp\_sqr.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ +018 int +019 s_mp_sqr (mp_int * a, mp_int * b) +020 \{ +021 mp_int t; +022 int res, ix, iy, pa; +023 mp_word r; +024 mp_digit u, tmpx, *tmpt; +025 +026 pa = a->used; +027 if ((res = mp_init_size (&t, 2*pa + 1)) != MP_OKAY) \{ +028 return res; +029 \} +030 +031 /* default used is maximum possible size */ +032 t.used = 2*pa + 1; +033 +034 for (ix = 0; ix < pa; ix++) \{ +035 /* first calculate the digit at 2*ix */ +036 /* calculate double precision result */ +037 r = ((mp_word) t.dp[2*ix]) + +038 ((mp_word)a->dp[ix])*((mp_word)a->dp[ix]); +039 +040 /* store lower part in result */ +041 t.dp[ix+ix] = (mp_digit) (r & ((mp_word) MP_MASK)); +042 +043 /* get the carry */ +044 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); +045 +046 /* left hand side of A[ix] * A[iy] */ +047 tmpx = a->dp[ix]; +048 +049 /* alias for where to store the results */ +050 tmpt = t.dp + (2*ix + 1); +051 +052 for (iy = ix + 1; iy < pa; iy++) \{ +053 /* first calculate the product */ +054 r = ((mp_word)tmpx) * ((mp_word)a->dp[iy]); +055 +056 /* now calculate the double precision result, note we use +057 * addition instead of *2 since it's easier to optimize +058 */ +059 r = ((mp_word) *tmpt) + r + r + ((mp_word) u); +060 +061 /* store lower part */ +062 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); +063 +064 /* get carry */ +065 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); +066 \} +067 /* propagate upwards */ +068 while (u != ((mp_digit) 0)) \{ +069 r = ((mp_word) *tmpt) + ((mp_word) u); +070 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); +071 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); +072 \} +073 \} +074 +075 mp_clamp (&t); +076 mp_exch (&t, b); +077 mp_clear (&t); +078 return MP_OKAY; +079 \} +080 #endif +\end{alltt} +\end{small} + +Inside the outer loop (\textit{see line 34}) the square term is calculated on line 37. Line 44 extracts the carry from the square +term. Aliases for $a_{ix}$ and $t_{ix+iy}$ are initialized on lines 47 and 50 respectively. The doubling is performed using two +additions (\textit{see line 59}) since it is usually faster than shifting,if not at least as fast. + +\subsection{Faster Squaring by the ``Comba'' Method} +A major drawback to the baseline method is the requirement for single precision shifting inside the $O(n^2)$ nested loop. Squaring has an additional +drawback that it must double the product inside the inner loop as well. As for multiplication, the Comba technique can be used to eliminate these +performance hazards. + +The first obvious solution is to make an array of mp\_words which will hold all of the columns. This will indeed eliminate all of the carry +propagation operations from the inner loop. However, the inner product must still be doubled $O(n^2)$ times. The solution stems from the simple fact +that $2a + 2b + 2c = 2(a + b + c)$. That is the sum of all of the double products is equal to double the sum of all the products. For example, +$ab + ba + ac + ca = 2ab + 2ac = 2(ab + ac)$. + +However, we cannot simply double all of the columns, since the squares appear only once per row. The most practical solution is to have two mp\_word +arrays. One array will hold the squares and the other array will hold the double products. With both arrays the doubling and carry propagation can be +moved to a $O(n)$ work level outside the $O(n^2)$ level. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{fast\_s\_mp\_sqr}. \\ +\textbf{Input}. mp\_int $a$ \\ +\textbf{Output}. $b \leftarrow a^2$ \\ +\hline \\ +Place two arrays of \textbf{MP\_WARRAY} mp\_words named $\hat W$ and $\hat {X}$ on the stack. \\ +1. If $b.alloc < 2a.used + 1$ then grow $b$ to $2a.used + 1$ digits. (\textit{mp\_grow}). \\ +2. If step 1 failed return(\textit{MP\_MEM}). \\ +3. for $ix$ from $0$ to $2a.used + 1$ do \\ +\hspace{3mm}3.1 $\hat W_{ix} \leftarrow 0$ \\ +\hspace{3mm}3.2 $\hat {X}_{ix} \leftarrow 0$ \\ +4. for $ix$ from $0$ to $a.used - 1$ do \\ +\hspace{3mm}Compute the square.\\ +\hspace{3mm}4.1 $\hat {X}_{ix+ix} \leftarrow \left ( a_{ix} \right )^2$ \\ +\\ +\hspace{3mm}Compute the double products.\\ +\hspace{3mm}4.2 for $iy$ from $ix + 1$ to $a.used - 1$ do \\ +\hspace{6mm}4.2.1 $\hat W_{ix+iy} \leftarrow \hat W_{ix+iy} + a_{ix}a_{iy}$ \\ +5. $oldused \leftarrow b.used$ \\ +6. $b.used \leftarrow 2a.used + 1$ \\ +\\ +Double the products and propagate the carries simultaneously. \\ +7. $\hat W_0 \leftarrow 2 \hat W_0 + \hat {X}_0$ \\ +8. for $ix$ from $1$ to $2a.used$ do \\ +\hspace{3mm}8.1 $\hat W_{ix} \leftarrow 2 \hat W_{ix} + \hat {X}_{ix}$ \\ +\hspace{3mm}8.2 $\hat W_{ix} \leftarrow \hat W_{ix} + \lfloor \hat W_{ix - 1} / \beta \rfloor$ \\ +\hspace{3mm}8.3 $b_{ix-1} \leftarrow W_{ix-1} \mbox{ (mod }\beta\mbox{)}$ \\ +9. $b_{2a.used} \leftarrow \hat W_{2a.used} \mbox{ (mod }\beta\mbox{)}$ \\ +10. if $2a.used + 1 < oldused$ then do \\ +\hspace{3mm}10.1 for $ix$ from $2a.used + 1$ to $oldused$ do \\ +\hspace{6mm}10.1.1 $b_{ix} \leftarrow 0$ \\ +11. Clamp excess digits from $b$. (\textit{mp\_clamp}) \\ +12. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm fast\_s\_mp\_sqr} +\end{figure} + +\textbf{Algorithm fast\_s\_mp\_sqr.} +This algorithm computes the square of an input using the Comba technique. It is designed to be a replacement for algorithm s\_mp\_sqr when +the number of input digits is less than \textbf{MP\_WARRAY} and less than $\delta \over 2$. + +This routine requires two arrays of mp\_words to be placed on the stack. The first array $\hat W$ will hold the double products and the second +array $\hat X$ will hold the squares. Though only at most $MP\_WARRAY \over 2$ words of $\hat X$ are used, it has proven faster on most +processors to simply make it a full size array. + +The loop on step 3 will zero the two arrays to prepare them for the squaring step. Step 4.1 computes the squares of the product. Note how +it simply assigns the value into the $\hat X$ array. The nested loop on step 4.2 computes the doubles of the products. This loop +computes the sum of the products for each column. They are not doubled until later. + +After the squaring loop, the products stored in $\hat W$ musted be doubled and the carries propagated forwards. It makes sense to do both +operations at the same time. The expression $\hat W_{ix} \leftarrow 2 \hat W_{ix} + \hat {X}_{ix}$ computes the sum of the double product and the +squares in place. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_fast\_s\_mp\_sqr.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* fast squaring +018 * +019 * This is the comba method where the columns of the product +020 * are computed first then the carries are computed. This +021 * has the effect of making a very simple inner loop that +022 * is executed the most +023 * +024 * W2 represents the outer products and W the inner. +025 * +026 * A further optimizations is made because the inner +027 * products are of the form "A * B * 2". The *2 part does +028 * not need to be computed until the end which is good +029 * because 64-bit shifts are slow! +030 * +031 * Based on Algorithm 14.16 on pp.597 of HAC. +032 * +033 */ +034 /* the jist of squaring... +035 +036 you do like mult except the offset of the tmpx [one that starts closer to ze + ro] +037 can't equal the offset of tmpy. So basically you set up iy like before then + you min it with +038 (ty-tx) so that it never happens. You double all those you add in the inner + loop +039 +040 After that loop you do the squares and add them in. +041 +042 Remove W2 and don't memset W +043 +044 */ +045 +046 int fast_s_mp_sqr (mp_int * a, mp_int * b) +047 \{ +048 int olduse, res, pa, ix, iz; +049 mp_digit W[MP_WARRAY], *tmpx; +050 mp_word W1; +051 +052 /* grow the destination as required */ +053 pa = a->used + a->used; +054 if (b->alloc < pa) \{ +055 if ((res = mp_grow (b, pa)) != MP_OKAY) \{ +056 return res; +057 \} +058 \} +059 +060 /* number of output digits to produce */ +061 W1 = 0; +062 for (ix = 0; ix < pa; ix++) \{ +063 int tx, ty, iy; +064 mp_word _W; +065 mp_digit *tmpy; +066 +067 /* clear counter */ +068 _W = 0; +069 +070 /* get offsets into the two bignums */ +071 ty = MIN(a->used-1, ix); +072 tx = ix - ty; +073 +074 /* setup temp aliases */ +075 tmpx = a->dp + tx; +076 tmpy = a->dp + ty; +077 +078 /* this is the number of times the loop will iterrate, essentially its + +079 while (tx++ < a->used && ty-- >= 0) \{ ... \} +080 */ +081 iy = MIN(a->used-tx, ty+1); +082 +083 /* now for squaring tx can never equal ty +084 * we halve the distance since they approach at a rate of 2x +085 * and we have to round because odd cases need to be executed +086 */ +087 iy = MIN(iy, (ty-tx+1)>>1); +088 +089 /* execute loop */ +090 for (iz = 0; iz < iy; iz++) \{ +091 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); +092 \} +093 +094 /* double the inner product and add carry */ +095 _W = _W + _W + W1; +096 +097 /* even columns have the square term in them */ +098 if ((ix&1) == 0) \{ +099 _W += ((mp_word)a->dp[ix>>1])*((mp_word)a->dp[ix>>1]); +100 \} +101 +102 /* store it */ +103 W[ix] = _W; +104 +105 /* make next carry */ +106 W1 = _W >> ((mp_word)DIGIT_BIT); +107 \} +108 +109 /* setup dest */ +110 olduse = b->used; +111 b->used = a->used+a->used; +112 +113 \{ +114 mp_digit *tmpb; +115 tmpb = b->dp; +116 for (ix = 0; ix < pa; ix++) \{ +117 *tmpb++ = W[ix] & MP_MASK; +118 \} +119 +120 /* clear unused digits [that existed in the old copy of c] */ +121 for (; ix < olduse; ix++) \{ +122 *tmpb++ = 0; +123 \} +124 \} +125 mp_clamp (b); +126 return MP_OKAY; +127 \} +128 #endif +\end{alltt} +\end{small} + +-- Write something deep and insightful later, Tom. + +\subsection{Polynomial Basis Squaring} +The same algorithm that performs optimal polynomial basis multiplication can be used to perform polynomial basis squaring. The minor exception +is that $\zeta_y = f(y)g(y)$ is actually equivalent to $\zeta_y = f(y)^2$ since $f(y) = g(y)$. Instead of performing $2n + 1$ +multiplications to find the $\zeta$ relations, squaring operations are performed instead. + +\subsection{Karatsuba Squaring} +Let $f(x) = ax + b$ represent the polynomial basis representation of a number to square. +Let $h(x) = \left ( f(x) \right )^2$ represent the square of the polynomial. The Karatsuba equation can be modified to square a +number with the following equation. + +\begin{equation} +h(x) = a^2x^2 + \left (a^2 + b^2 - (a - b)^2 \right )x + b^2 +\end{equation} + +Upon closer inspection this equation only requires the calculation of three half-sized squares: $a^2$, $b^2$ and $(a - b)^2$. As in +Karatsuba multiplication, this algorithm can be applied recursively on the input and will achieve an asymptotic running time of +$O \left ( n^{lg(3)} \right )$. + +If the asymptotic times of Karatsuba squaring and multiplication are the same, why not simply use the multiplication algorithm +instead? The answer to this arises from the cutoff point for squaring. As in multiplication there exists a cutoff point, at which the +time required for a Comba based squaring and a Karatsuba based squaring meet. Due to the overhead inherent in the Karatsuba method, the cutoff +point is fairly high. For example, on an AMD Athlon XP processor with $\beta = 2^{28}$, the cutoff point is around 127 digits. + +Consider squaring a 200 digit number with this technique. It will be split into two 100 digit halves which are subsequently squared. +The 100 digit halves will not be squared using Karatsuba, but instead using the faster Comba based squaring algorithm. If Karatsuba multiplication +were used instead, the 100 digit numbers would be squared with a slower Comba based multiplication. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_karatsuba\_sqr}. \\ +\textbf{Input}. mp\_int $a$ \\ +\textbf{Output}. $b \leftarrow a^2$ \\ +\hline \\ +1. Initialize the following temporary mp\_ints: $x0$, $x1$, $t1$, $t2$, $x0x0$ and $x1x1$. \\ +2. If any of the initializations on step 1 failed return(\textit{MP\_MEM}). \\ +\\ +Split the input. e.g. $a = x1\beta^B + x0$ \\ +3. $B \leftarrow \lfloor a.used / 2 \rfloor$ \\ +4. $x0 \leftarrow a \mbox{ (mod }\beta^B\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +5. $x1 \leftarrow \lfloor a / \beta^B \rfloor$ (\textit{mp\_lshd}) \\ +\\ +Calculate the three squares. \\ +6. $x0x0 \leftarrow x0^2$ (\textit{mp\_sqr}) \\ +7. $x1x1 \leftarrow x1^2$ \\ +8. $t1 \leftarrow x1 - x0$ (\textit{mp\_sub}) \\ +9. $t1 \leftarrow t1^2$ \\ +\\ +Compute the middle term. \\ +10. $t2 \leftarrow x0x0 + x1x1$ (\textit{s\_mp\_add}) \\ +11. $t1 \leftarrow t2 - t1$ \\ +\\ +Compute final product. \\ +12. $t1 \leftarrow t1\beta^B$ (\textit{mp\_lshd}) \\ +13. $x1x1 \leftarrow x1x1\beta^{2B}$ \\ +14. $t1 \leftarrow t1 + x0x0$ \\ +15. $b \leftarrow t1 + x1x1$ \\ +16. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_karatsuba\_sqr} +\end{figure} + +\textbf{Algorithm mp\_karatsuba\_sqr.} +This algorithm computes the square of an input $a$ using the Karatsuba technique. This algorithm is very similar to the Karatsuba based +multiplication algorithm with the exception that the three half-size multiplications have been replaced with three half-size squarings. + +The radix point for squaring is simply placed exactly in the middle of the digits when the input has an odd number of digits, otherwise it is +placed just below the middle. Step 3, 4 and 5 compute the two halves required using $B$ +as the radix point. The first two squares in steps 6 and 7 are rather straightforward while the last square is of a more compact form. + +By expanding $\left (x1 - x0 \right )^2$, the $x1^2$ and $x0^2$ terms in the middle disappear, that is $x1^2 + x0^2 - (x1 - x0)^2 = 2 \cdot x0 \cdot x1$. +Now if $5n$ single precision additions and a squaring of $n$-digits is faster than multiplying two $n$-digit numbers and doubling then +this method is faster. Assuming no further recursions occur, the difference can be estimated with the following inequality. + +Let $p$ represent the cost of a single precision addition and $q$ the cost of a single precision multiplication both in terms of time\footnote{Or +machine clock cycles.}. + +\begin{equation} +5pn +{{q(n^2 + n)} \over 2} \le pn + qn^2 +\end{equation} + +For example, on an AMD Athlon XP processor $p = {1 \over 3}$ and $q = 6$. This implies that the following inequality should hold. +\begin{center} +\begin{tabular}{rcl} +${5n \over 3} + 3n^2 + 3n$ & $<$ & ${n \over 3} + 6n^2$ \\ +${5 \over 3} + 3n + 3$ & $<$ & ${1 \over 3} + 6n$ \\ +${13 \over 9}$ & $<$ & $n$ \\ +\end{tabular} +\end{center} + +This results in a cutoff point around $n = 2$. As a consequence it is actually faster to compute the middle term the ``long way'' on processors +where multiplication is substantially slower\footnote{On the Athlon there is a 1:17 ratio between clock cycles for addition and multiplication. On +the Intel P4 processor this ratio is 1:29 making this method even more beneficial. The only common exception is the ARMv4 processor which has a +ratio of 1:7. } than simpler operations such as addition. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_karatsuba\_sqr.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* Karatsuba squaring, computes b = a*a using three +018 * half size squarings +019 * +020 * See comments of karatsuba_mul for details. It +021 * is essentially the same algorithm but merely +022 * tuned to perform recursive squarings. +023 */ +024 int mp_karatsuba_sqr (mp_int * a, mp_int * b) +025 \{ +026 mp_int x0, x1, t1, t2, x0x0, x1x1; +027 int B, err; +028 +029 err = MP_MEM; +030 +031 /* min # of digits */ +032 B = a->used; +033 +034 /* now divide in two */ +035 B = B >> 1; +036 +037 /* init copy all the temps */ +038 if (mp_init_size (&x0, B) != MP_OKAY) +039 goto ERR; +040 if (mp_init_size (&x1, a->used - B) != MP_OKAY) +041 goto X0; +042 +043 /* init temps */ +044 if (mp_init_size (&t1, a->used * 2) != MP_OKAY) +045 goto X1; +046 if (mp_init_size (&t2, a->used * 2) != MP_OKAY) +047 goto T1; +048 if (mp_init_size (&x0x0, B * 2) != MP_OKAY) +049 goto T2; +050 if (mp_init_size (&x1x1, (a->used - B) * 2) != MP_OKAY) +051 goto X0X0; +052 +053 \{ +054 register int x; +055 register mp_digit *dst, *src; +056 +057 src = a->dp; +058 +059 /* now shift the digits */ +060 dst = x0.dp; +061 for (x = 0; x < B; x++) \{ +062 *dst++ = *src++; +063 \} +064 +065 dst = x1.dp; +066 for (x = B; x < a->used; x++) \{ +067 *dst++ = *src++; +068 \} +069 \} +070 +071 x0.used = B; +072 x1.used = a->used - B; +073 +074 mp_clamp (&x0); +075 +076 /* now calc the products x0*x0 and x1*x1 */ +077 if (mp_sqr (&x0, &x0x0) != MP_OKAY) +078 goto X1X1; /* x0x0 = x0*x0 */ +079 if (mp_sqr (&x1, &x1x1) != MP_OKAY) +080 goto X1X1; /* x1x1 = x1*x1 */ +081 +082 /* now calc (x1-x0)**2 */ +083 if (mp_sub (&x1, &x0, &t1) != MP_OKAY) +084 goto X1X1; /* t1 = x1 - x0 */ +085 if (mp_sqr (&t1, &t1) != MP_OKAY) +086 goto X1X1; /* t1 = (x1 - x0) * (x1 - x0) */ +087 +088 /* add x0y0 */ +089 if (s_mp_add (&x0x0, &x1x1, &t2) != MP_OKAY) +090 goto X1X1; /* t2 = x0x0 + x1x1 */ +091 if (mp_sub (&t2, &t1, &t1) != MP_OKAY) +092 goto X1X1; /* t1 = x0x0 + x1x1 - (x1-x0)*(x1-x0) */ +093 +094 /* shift by B */ +095 if (mp_lshd (&t1, B) != MP_OKAY) +096 goto X1X1; /* t1 = (x0x0 + x1x1 - (x1-x0)*(x1-x0))<used >= TOOM_SQR_CUTOFF) \{ +026 res = mp_toom_sqr(a, b); +027 /* Karatsuba? */ +028 \} else +029 #endif +030 #ifdef BN_MP_KARATSUBA_SQR_C +031 if (a->used >= KARATSUBA_SQR_CUTOFF) \{ +032 res = mp_karatsuba_sqr (a, b); +033 \} else +034 #endif +035 \{ +036 #ifdef BN_FAST_S_MP_SQR_C +037 /* can we use the fast comba multiplier? */ +038 if ((a->used * 2 + 1) < MP_WARRAY && +039 a->used < +040 (1 << (sizeof(mp_word) * CHAR_BIT - 2*DIGIT_BIT - 1))) \{ +041 res = fast_s_mp_sqr (a, b); +042 \} else +043 #endif +044 #ifdef BN_S_MP_SQR_C +045 res = s_mp_sqr (a, b); +046 #else +047 res = MP_VAL; +048 #endif +049 \} +050 b->sign = MP_ZPOS; +051 return res; +052 \} +053 #endif +\end{alltt} +\end{small} + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 3 \right ] $ & Devise an efficient algorithm for selection of the radix point to handle inputs \\ + & that have different number of digits in Karatsuba multiplication. \\ + & \\ +$\left [ 3 \right ] $ & In section 5.3 the fact that every column of a squaring is made up \\ + & of double products and at most one square is stated. Prove this statement. \\ + & \\ +$\left [ 2 \right ] $ & In the Comba squaring algorithm half of the $\hat X$ variables are not used. \\ + & Revise algorithm fast\_s\_mp\_sqr to shrink the $\hat X$ array. \\ + & \\ +$\left [ 3 \right ] $ & Prove the equation for Karatsuba squaring. \\ + & \\ +$\left [ 1 \right ] $ & Prove that Karatsuba squaring requires $O \left (n^{lg(3)} \right )$ time. \\ + & \\ +$\left [ 2 \right ] $ & Determine the minimal ratio between addition and multiplication clock cycles \\ + & required for equation $6.7$ to be true. \\ + & \\ +\end{tabular} + +\chapter{Modular Reduction} +\section{Basics of Modular Reduction} +\index{modular residue} +Modular reduction is an operation that arises quite often within public key cryptography algorithms and various number theoretic algorithms, +such as factoring. Modular reduction algorithms are the third class of algorithms of the ``multipliers'' set. A number $a$ is said to be \textit{reduced} +modulo another number $b$ by finding the remainder of the division $a/b$. Full integer division with remainder is a topic to be covered +in~\ref{sec:division}. + +Modular reduction is equivalent to solving for $r$ in the following equation. $a = bq + r$ where $q = \lfloor a/b \rfloor$. The result +$r$ is said to be ``congruent to $a$ modulo $b$'' which is also written as $r \equiv a \mbox{ (mod }b\mbox{)}$. In other vernacular $r$ is known as the +``modular residue'' which leads to ``quadratic residue''\footnote{That's fancy talk for $b \equiv a^2 \mbox{ (mod }p\mbox{)}$.} and +other forms of residues. + +Modular reductions are normally used to create either finite groups, rings or fields. The most common usage for performance driven modular reductions +is in modular exponentiation algorithms. That is to compute $d = a^b \mbox{ (mod }c\mbox{)}$ as fast as possible. This operation is used in the +RSA and Diffie-Hellman public key algorithms, for example. Modular multiplication and squaring also appears as a fundamental operation in +Elliptic Curve cryptographic algorithms. As will be discussed in the subsequent chapter there exist fast algorithms for computing modular +exponentiations without having to perform (\textit{in this example}) $b - 1$ multiplications. These algorithms will produce partial results in the +range $0 \le x < c^2$ which can be taken advantage of to create several efficient algorithms. They have also been used to create redundancy check +algorithms known as CRCs, error correction codes such as Reed-Solomon and solve a variety of number theoeretic problems. + +\section{The Barrett Reduction} +The Barrett reduction algorithm \cite{BARRETT} was inspired by fast division algorithms which multiply by the reciprocal to emulate +division. Barretts observation was that the residue $c$ of $a$ modulo $b$ is equal to + +\begin{equation} +c = a - b \cdot \lfloor a/b \rfloor +\end{equation} + +Since algorithms such as modular exponentiation would be using the same modulus extensively, typical DSP\footnote{It is worth noting that Barrett's paper +targeted the DSP56K processor.} intuition would indicate the next step would be to replace $a/b$ by a multiplication by the reciprocal. However, +DSP intuition on its own will not work as these numbers are considerably larger than the precision of common DSP floating point data types. +It would take another common optimization to optimize the algorithm. + +\subsection{Fixed Point Arithmetic} +The trick used to optimize the above equation is based on a technique of emulating floating point data types with fixed precision integers. Fixed +point arithmetic would become very popular as it greatly optimize the ``3d-shooter'' genre of games in the mid 1990s when floating point units were +fairly slow if not unavailable. The idea behind fixed point arithmetic is to take a normal $k$-bit integer data type and break it into $p$-bit +integer and a $q$-bit fraction part (\textit{where $p+q = k$}). + +In this system a $k$-bit integer $n$ would actually represent $n/2^q$. For example, with $q = 4$ the integer $n = 37$ would actually represent the +value $2.3125$. To multiply two fixed point numbers the integers are multiplied using traditional arithmetic and subsequently normalized by +moving the implied decimal point back to where it should be. For example, with $q = 4$ to multiply the integers $9$ and $5$ they must be converted +to fixed point first by multiplying by $2^q$. Let $a = 9(2^q)$ represent the fixed point representation of $9$ and $b = 5(2^q)$ represent the +fixed point representation of $5$. The product $ab$ is equal to $45(2^{2q})$ which when normalized by dividing by $2^q$ produces $45(2^q)$. + +This technique became popular since a normal integer multiplication and logical shift right are the only required operations to perform a multiplication +of two fixed point numbers. Using fixed point arithmetic, division can be easily approximated by multiplying by the reciprocal. If $2^q$ is +equivalent to one than $2^q/b$ is equivalent to the fixed point approximation of $1/b$ using real arithmetic. Using this fact dividing an integer +$a$ by another integer $b$ can be achieved with the following expression. + +\begin{equation} +\lfloor a / b \rfloor \mbox{ }\approx\mbox{ } \lfloor (a \cdot \lfloor 2^q / b \rfloor)/2^q \rfloor +\end{equation} + +The precision of the division is proportional to the value of $q$. If the divisor $b$ is used frequently as is the case with +modular exponentiation pre-computing $2^q/b$ will allow a division to be performed with a multiplication and a right shift. Both operations +are considerably faster than division on most processors. + +Consider dividing $19$ by $5$. The correct result is $\lfloor 19/5 \rfloor = 3$. With $q = 3$ the reciprocal is $\lfloor 2^q/5 \rfloor = 1$ which +leads to a product of $19$ which when divided by $2^q$ produces $2$. However, with $q = 4$ the reciprocal is $\lfloor 2^q/5 \rfloor = 3$ and +the result of the emulated division is $\lfloor 3 \cdot 19 / 2^q \rfloor = 3$ which is correct. The value of $2^q$ must be close to or ideally +larger than the dividend. In effect if $a$ is the dividend then $q$ should allow $0 \le \lfloor a/2^q \rfloor \le 1$ in order for this approach +to work correctly. Plugging this form of divison into the original equation the following modular residue equation arises. + +\begin{equation} +c = a - b \cdot \lfloor (a \cdot \lfloor 2^q / b \rfloor)/2^q \rfloor +\end{equation} + +Using the notation from \cite{BARRETT} the value of $\lfloor 2^q / b \rfloor$ will be represented by the $\mu$ symbol. Using the $\mu$ +variable also helps re-inforce the idea that it is meant to be computed once and re-used. + +\begin{equation} +c = a - b \cdot \lfloor (a \cdot \mu)/2^q \rfloor +\end{equation} + +Provided that $2^q \ge a$ this algorithm will produce a quotient that is either exactly correct or off by a value of one. In the context of Barrett +reduction the value of $a$ is bound by $0 \le a \le (b - 1)^2$ meaning that $2^q \ge b^2$ is sufficient to ensure the reciprocal will have enough +precision. + +Let $n$ represent the number of digits in $b$. This algorithm requires approximately $2n^2$ single precision multiplications to produce the quotient and +another $n^2$ single precision multiplications to find the residue. In total $3n^2$ single precision multiplications are required to +reduce the number. + +For example, if $b = 1179677$ and $q = 41$ ($2^q > b^2$), then the reciprocal $\mu$ is equal to $\lfloor 2^q / b \rfloor = 1864089$. Consider reducing +$a = 180388626447$ modulo $b$ using the above reduction equation. The quotient using the new formula is $\lfloor (a \cdot \mu) / 2^q \rfloor = 152913$. +By subtracting $152913b$ from $a$ the correct residue $a \equiv 677346 \mbox{ (mod }b\mbox{)}$ is found. + +\subsection{Choosing a Radix Point} +Using the fixed point representation a modular reduction can be performed with $3n^2$ single precision multiplications. If that were the best +that could be achieved a full division\footnote{A division requires approximately $O(2cn^2)$ single precision multiplications for a small value of $c$. +See~\ref{sec:division} for further details.} might as well be used in its place. The key to optimizing the reduction is to reduce the precision of +the initial multiplication that finds the quotient. + +Let $a$ represent the number of which the residue is sought. Let $b$ represent the modulus used to find the residue. Let $m$ represent +the number of digits in $b$. For the purposes of this discussion we will assume that the number of digits in $a$ is $2m$, which is generally true if +two $m$-digit numbers have been multiplied. Dividing $a$ by $b$ is the same as dividing a $2m$ digit integer by a $m$ digit integer. Digits below the +$m - 1$'th digit of $a$ will contribute at most a value of $1$ to the quotient because $\beta^k < b$ for any $0 \le k \le m - 1$. Another way to +express this is by re-writing $a$ as two parts. If $a' \equiv a \mbox{ (mod }b^m\mbox{)}$ and $a'' = a - a'$ then +${a \over b} \equiv {{a' + a''} \over b}$ which is equivalent to ${a' \over b} + {a'' \over b}$. Since $a'$ is bound to be less than $b$ the quotient +is bound by $0 \le {a' \over b} < 1$. + +Since the digits of $a'$ do not contribute much to the quotient the observation is that they might as well be zero. However, if the digits +``might as well be zero'' they might as well not be there in the first place. Let $q_0 = \lfloor a/\beta^{m-1} \rfloor$ represent the input +with the irrelevant digits trimmed. Now the modular reduction is trimmed to the almost equivalent equation + +\begin{equation} +c = a - b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor +\end{equation} + +Note that the original divisor $2^q$ has been replaced with $\beta^{m+1}$ where in this case $q$ is a multiple of $lg(\beta)$. Also note that the +exponent on the divisor when added to the amount $q_0$ was shifted by equals $2m$. If the optimization had not been performed the divisor +would have the exponent $2m$ so in the end the exponents do ``add up''. Using the above equation the quotient +$\lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor$ can be off from the true quotient by at most two. The original fixed point quotient can be off +by as much as one (\textit{provided the radix point is chosen suitably}) and now that the lower irrelevent digits have been trimmed the quotient +can be off by an additional value of one for a total of at most two. This implies that +$0 \le a - b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor < 3b$. By first subtracting $b$ times the quotient and then conditionally subtracting +$b$ once or twice the residue is found. + +The quotient is now found using $(m + 1)(m) = m^2 + m$ single precision multiplications and the residue with an additional $m^2$ single +precision multiplications, ignoring the subtractions required. In total $2m^2 + m$ single precision multiplications are required to find the residue. +This is considerably faster than the original attempt. + +For example, let $\beta = 10$ represent the radix of the digits. Let $b = 9999$ represent the modulus which implies $m = 4$. Let $a = 99929878$ +represent the value of which the residue is desired. In this case $q = 8$ since $10^7 < 9999^2$ meaning that $\mu = \lfloor \beta^{q}/b \rfloor = 10001$. +With the new observation the multiplicand for the quotient is equal to $q_0 = \lfloor a / \beta^{m - 1} \rfloor = 99929$. The quotient is then +$\lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor = 9993$. Subtracting $9993b$ from $a$ and the correct residue $a \equiv 9871 \mbox{ (mod }b\mbox{)}$ +is found. + +\subsection{Trimming the Quotient} +So far the reduction algorithm has been optimized from $3m^2$ single precision multiplications down to $2m^2 + m$ single precision multiplications. As +it stands now the algorithm is already fairly fast compared to a full integer division algorithm. However, there is still room for +optimization. + +After the first multiplication inside the quotient ($q_0 \cdot \mu$) the value is shifted right by $m + 1$ places effectively nullifying the lower +half of the product. It would be nice to be able to remove those digits from the product to effectively cut down the number of single precision +multiplications. If the number of digits in the modulus $m$ is far less than $\beta$ a full product is not required for the algorithm to work properly. +In fact the lower $m - 2$ digits will not affect the upper half of the product at all and do not need to be computed. + +The value of $\mu$ is a $m$-digit number and $q_0$ is a $m + 1$ digit number. Using a full multiplier $(m + 1)(m) = m^2 + m$ single precision +multiplications would be required. Using a multiplier that will only produce digits at and above the $m - 1$'th digit reduces the number +of single precision multiplications to ${m^2 + m} \over 2$ single precision multiplications. + +\subsection{Trimming the Residue} +After the quotient has been calculated it is used to reduce the input. As previously noted the algorithm is not exact and it can be off by a small +multiple of the modulus, that is $0 \le a - b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor < 3b$. If $b$ is $m$ digits than the +result of reduction equation is a value of at most $m + 1$ digits (\textit{provided $3 < \beta$}) implying that the upper $m - 1$ digits are +implicitly zero. + +The next optimization arises from this very fact. Instead of computing $b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor$ using a full +$O(m^2)$ multiplication algorithm only the lower $m+1$ digits of the product have to be computed. Similarly the value of $a$ can +be reduced modulo $\beta^{m+1}$ before the multiple of $b$ is subtracted which simplifes the subtraction as well. A multiplication that produces +only the lower $m+1$ digits requires ${m^2 + 3m - 2} \over 2$ single precision multiplications. + +With both optimizations in place the algorithm is the algorithm Barrett proposed. It requires $m^2 + 2m - 1$ single precision multiplications which +is considerably faster than the straightforward $3m^2$ method. + +\subsection{The Barrett Algorithm} +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce}. \\ +\textbf{Input}. mp\_int $a$, mp\_int $b$ and $\mu = \lfloor \beta^{2m}/b \rfloor, m = \lceil lg_{\beta}(b) \rceil, (0 \le a < b^2, b > 1)$ \\ +\textbf{Output}. $a \mbox{ (mod }b\mbox{)}$ \\ +\hline \\ +Let $m$ represent the number of digits in $b$. \\ +1. Make a copy of $a$ and store it in $q$. (\textit{mp\_init\_copy}) \\ +2. $q \leftarrow \lfloor q / \beta^{m - 1} \rfloor$ (\textit{mp\_rshd}) \\ +\\ +Produce the quotient. \\ +3. $q \leftarrow q \cdot \mu$ (\textit{note: only produce digits at or above $m-1$}) \\ +4. $q \leftarrow \lfloor q / \beta^{m + 1} \rfloor$ \\ +\\ +Subtract the multiple of modulus from the input. \\ +5. $a \leftarrow a \mbox{ (mod }\beta^{m+1}\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +6. $q \leftarrow q \cdot b \mbox{ (mod }\beta^{m+1}\mbox{)}$ (\textit{s\_mp\_mul\_digs}) \\ +7. $a \leftarrow a - q$ (\textit{mp\_sub}) \\ +\\ +Add $\beta^{m+1}$ if a carry occured. \\ +8. If $a < 0$ then (\textit{mp\_cmp\_d}) \\ +\hspace{3mm}8.1 $q \leftarrow 1$ (\textit{mp\_set}) \\ +\hspace{3mm}8.2 $q \leftarrow q \cdot \beta^{m+1}$ (\textit{mp\_lshd}) \\ +\hspace{3mm}8.3 $a \leftarrow a + q$ \\ +\\ +Now subtract the modulus if the residue is too large (e.g. quotient too small). \\ +9. While $a \ge b$ do (\textit{mp\_cmp}) \\ +\hspace{3mm}9.1 $c \leftarrow a - b$ \\ +10. Clear $q$. \\ +11. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce} +\end{figure} + +\textbf{Algorithm mp\_reduce.} +This algorithm will reduce the input $a$ modulo $b$ in place using the Barrett algorithm. It is loosely based on algorithm 14.42 of HAC +\cite[pp. 602]{HAC} which is based on the paper from Paul Barrett \cite{BARRETT}. The algorithm has several restrictions and assumptions which must +be adhered to for the algorithm to work. + +First the modulus $b$ is assumed to be positive and greater than one. If the modulus were less than or equal to one than subtracting +a multiple of it would either accomplish nothing or actually enlarge the input. The input $a$ must be in the range $0 \le a < b^2$ in order +for the quotient to have enough precision. If $a$ is the product of two numbers that were already reduced modulo $b$, this will not be a problem. +Technically the algorithm will still work if $a \ge b^2$ but it will take much longer to finish. The value of $\mu$ is passed as an argument to this +algorithm and is assumed to be calculated and stored before the algorithm is used. + +Recall that the multiplication for the quotient on step 3 must only produce digits at or above the $m-1$'th position. An algorithm called +$s\_mp\_mul\_high\_digs$ which has not been presented is used to accomplish this task. The algorithm is based on $s\_mp\_mul\_digs$ except that +instead of stopping at a given level of precision it starts at a given level of precision. This optimal algorithm can only be used if the number +of digits in $b$ is very much smaller than $\beta$. + +While it is known that +$a \ge b \cdot \lfloor (q_0 \cdot \mu) / \beta^{m+1} \rfloor$ only the lower $m+1$ digits are being used to compute the residue, so an implied +``borrow'' from the higher digits might leave a negative result. After the multiple of the modulus has been subtracted from $a$ the residue must be +fixed up in case it is negative. The invariant $\beta^{m+1}$ must be added to the residue to make it positive again. + +The while loop at step 9 will subtract $b$ until the residue is less than $b$. If the algorithm is performed correctly this step is +performed at most twice, and on average once. However, if $a \ge b^2$ than it will iterate substantially more times than it should. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_reduce.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* reduces x mod m, assumes 0 < x < m**2, mu is +018 * precomputed via mp_reduce_setup. +019 * From HAC pp.604 Algorithm 14.42 +020 */ +021 int +022 mp_reduce (mp_int * x, mp_int * m, mp_int * mu) +023 \{ +024 mp_int q; +025 int res, um = m->used; +026 +027 /* q = x */ +028 if ((res = mp_init_copy (&q, x)) != MP_OKAY) \{ +029 return res; +030 \} +031 +032 /* q1 = x / b**(k-1) */ +033 mp_rshd (&q, um - 1); +034 +035 /* according to HAC this optimization is ok */ +036 if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) \{ +037 if ((res = mp_mul (&q, mu, &q)) != MP_OKAY) \{ +038 goto CLEANUP; +039 \} +040 \} else \{ +041 #ifdef BN_S_MP_MUL_HIGH_DIGS_C +042 if ((res = s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) \{ +043 goto CLEANUP; +044 \} +045 #elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) +046 if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) \{ +047 goto CLEANUP; +048 \} +049 #else +050 \{ +051 res = MP_VAL; +052 goto CLEANUP; +053 \} +054 #endif +055 \} +056 +057 /* q3 = q2 / b**(k+1) */ +058 mp_rshd (&q, um + 1); +059 +060 /* x = x mod b**(k+1), quick (no division) */ +061 if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) \{ +062 goto CLEANUP; +063 \} +064 +065 /* q = q * m mod b**(k+1), quick (no division) */ +066 if ((res = s_mp_mul_digs (&q, m, &q, um + 1)) != MP_OKAY) \{ +067 goto CLEANUP; +068 \} +069 +070 /* x = x - q */ +071 if ((res = mp_sub (x, &q, x)) != MP_OKAY) \{ +072 goto CLEANUP; +073 \} +074 +075 /* If x < 0, add b**(k+1) to it */ +076 if (mp_cmp_d (x, 0) == MP_LT) \{ +077 mp_set (&q, 1); +078 if ((res = mp_lshd (&q, um + 1)) != MP_OKAY) +079 goto CLEANUP; +080 if ((res = mp_add (x, &q, x)) != MP_OKAY) +081 goto CLEANUP; +082 \} +083 +084 /* Back off if it's too big */ +085 while (mp_cmp (x, m) != MP_LT) \{ +086 if ((res = s_mp_sub (x, m, x)) != MP_OKAY) \{ +087 goto CLEANUP; +088 \} +089 \} +090 +091 CLEANUP: +092 mp_clear (&q); +093 +094 return res; +095 \} +096 #endif +\end{alltt} +\end{small} + +The first multiplication that determines the quotient can be performed by only producing the digits from $m - 1$ and up. This essentially halves +the number of single precision multiplications required. However, the optimization is only safe if $\beta$ is much larger than the number of digits +in the modulus. In the source code this is evaluated on lines 36 to 44 where algorithm s\_mp\_mul\_high\_digs is used when it is +safe to do so. + +\subsection{The Barrett Setup Algorithm} +In order to use algorithm mp\_reduce the value of $\mu$ must be calculated in advance. Ideally this value should be computed once and stored for +future use so that the Barrett algorithm can be used without delay. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce\_setup}. \\ +\textbf{Input}. mp\_int $a$ ($a > 1$) \\ +\textbf{Output}. $\mu \leftarrow \lfloor \beta^{2m}/a \rfloor$ \\ +\hline \\ +1. $\mu \leftarrow 2^{2 \cdot lg(\beta) \cdot m}$ (\textit{mp\_2expt}) \\ +2. $\mu \leftarrow \lfloor \mu / b \rfloor$ (\textit{mp\_div}) \\ +3. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce\_setup} +\end{figure} + +\textbf{Algorithm mp\_reduce\_setup.} +This algorithm computes the reciprocal $\mu$ required for Barrett reduction. First $\beta^{2m}$ is calculated as $2^{2 \cdot lg(\beta) \cdot m}$ which +is equivalent and much faster. The final value is computed by taking the integer quotient of $\lfloor \mu / b \rfloor$. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_reduce\_setup.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* pre-calculate the value required for Barrett reduction +018 * For a given modulus "b" it calulates the value required in "a" +019 */ +020 int mp_reduce_setup (mp_int * a, mp_int * b) +021 \{ +022 int res; +023 +024 if ((res = mp_2expt (a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) \{ +025 return res; +026 \} +027 return mp_div (a, b, a, NULL); +028 \} +029 #endif +\end{alltt} +\end{small} + +This simple routine calculates the reciprocal $\mu$ required by Barrett reduction. Note the extended usage of algorithm mp\_div where the variable +which would received the remainder is passed as NULL. As will be discussed in~\ref{sec:division} the division routine allows both the quotient and the +remainder to be passed as NULL meaning to ignore the value. + +\section{The Montgomery Reduction} +Montgomery reduction\footnote{Thanks to Niels Ferguson for his insightful explanation of the algorithm.} \cite{MONT} is by far the most interesting +form of reduction in common use. It computes a modular residue which is not actually equal to the residue of the input yet instead equal to a +residue times a constant. However, as perplexing as this may sound the algorithm is relatively simple and very efficient. + +Throughout this entire section the variable $n$ will represent the modulus used to form the residue. As will be discussed shortly the value of +$n$ must be odd. The variable $x$ will represent the quantity of which the residue is sought. Similar to the Barrett algorithm the input +is restricted to $0 \le x < n^2$. To begin the description some simple number theory facts must be established. + +\textbf{Fact 1.} Adding $n$ to $x$ does not change the residue since in effect it adds one to the quotient $\lfloor x / n \rfloor$. Another way +to explain this is that $n$ is (\textit{or multiples of $n$ are}) congruent to zero modulo $n$. Adding zero will not change the value of the residue. + +\textbf{Fact 2.} If $x$ is even then performing a division by two in $\Z$ is congruent to $x \cdot 2^{-1} \mbox{ (mod }n\mbox{)}$. Actually +this is an application of the fact that if $x$ is evenly divisible by any $k \in \Z$ then division in $\Z$ will be congruent to +multiplication by $k^{-1}$ modulo $n$. + +From these two simple facts the following simple algorithm can be derived. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Montgomery Reduction}. \\ +\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Output}. $2^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +1. for $t$ from $1$ to $k$ do \\ +\hspace{3mm}1.1 If $x$ is odd then \\ +\hspace{6mm}1.1.1 $x \leftarrow x + n$ \\ +\hspace{3mm}1.2 $x \leftarrow x/2$ \\ +2. Return $x$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Montgomery Reduction} +\end{figure} + +The algorithm reduces the input one bit at a time using the two congruencies stated previously. Inside the loop $n$, which is odd, is +added to $x$ if $x$ is odd. This forces $x$ to be even which allows the division by two in $\Z$ to be congruent to a modular division by two. Since +$x$ is assumed to be initially much larger than $n$ the addition of $n$ will contribute an insignificant magnitude to $x$. Let $r$ represent the +final result of the Montgomery algorithm. If $k > lg(n)$ and $0 \le x < n^2$ then the final result is limited to +$0 \le r < \lfloor x/2^k \rfloor + n$. As a result at most a single subtraction is required to get the residue desired. + +\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{|c|l|} +\hline \textbf{Step number ($t$)} & \textbf{Result ($x$)} \\ +\hline $1$ & $x + n = 5812$, $x/2 = 2906$ \\ +\hline $2$ & $x/2 = 1453$ \\ +\hline $3$ & $x + n = 1710$, $x/2 = 855$ \\ +\hline $4$ & $x + n = 1112$, $x/2 = 556$ \\ +\hline $5$ & $x/2 = 278$ \\ +\hline $6$ & $x/2 = 139$ \\ +\hline $7$ & $x + n = 396$, $x/2 = 198$ \\ +\hline $8$ & $x/2 = 99$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Example of Montgomery Reduction (I)} +\label{fig:MONT1} +\end{figure} + +Consider the example in figure~\ref{fig:MONT1} which reduces $x = 5555$ modulo $n = 257$ when $k = 8$. The result of the algorithm $r = 99$ is +congruent to the value of $2^{-8} \cdot 5555 \mbox{ (mod }257\mbox{)}$. When $r$ is multiplied by $2^8$ modulo $257$ the correct residue +$r \equiv 158$ is produced. + +Let $k = \lfloor lg(n) \rfloor + 1$ represent the number of bits in $n$. The current algorithm requires $2k^2$ single precision shifts +and $k^2$ single precision additions. At this rate the algorithm is most certainly slower than Barrett reduction and not terribly useful. +Fortunately there exists an alternative representation of the algorithm. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Montgomery Reduction} (modified I). \\ +\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Output}. $2^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +1. for $t$ from $0$ to $k - 1$ do \\ +\hspace{3mm}1.1 If the $t$'th bit of $x$ is one then \\ +\hspace{6mm}1.1.1 $x \leftarrow x + 2^tn$ \\ +2. Return $x/2^k$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Montgomery Reduction (modified I)} +\end{figure} + +This algorithm is equivalent since $2^tn$ is a multiple of $n$ and the lower $k$ bits of $x$ are zero by step 2. The number of single +precision shifts has now been reduced from $2k^2$ to $k^2 + k$ which is only a small improvement. + +\begin{figure}[here] +\begin{small} +\begin{center} +\begin{tabular}{|c|l|r|} +\hline \textbf{Step number ($t$)} & \textbf{Result ($x$)} & \textbf{Result ($x$) in Binary} \\ +\hline -- & $5555$ & $1010110110011$ \\ +\hline $1$ & $x + 2^{0}n = 5812$ & $1011010110100$ \\ +\hline $2$ & $5812$ & $1011010110100$ \\ +\hline $3$ & $x + 2^{2}n = 6840$ & $1101010111000$ \\ +\hline $4$ & $x + 2^{3}n = 8896$ & $10001011000000$ \\ +\hline $5$ & $8896$ & $10001011000000$ \\ +\hline $6$ & $8896$ & $10001011000000$ \\ +\hline $7$ & $x + 2^{6}n = 25344$ & $110001100000000$ \\ +\hline $8$ & $25344$ & $110001100000000$ \\ +\hline -- & $x/2^k = 99$ & \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Example of Montgomery Reduction (II)} +\label{fig:MONT2} +\end{figure} + +Figure~\ref{fig:MONT2} demonstrates the modified algorithm reducing $x = 5555$ modulo $n = 257$ with $k = 8$. +With this algorithm a single shift right at the end is the only right shift required to reduce the input instead of $k$ right shifts inside the +loop. Note that for the iterations $t = 2, 5, 6$ and $8$ where the result $x$ is not changed. In those iterations the $t$'th bit of $x$ is +zero and the appropriate multiple of $n$ does not need to be added to force the $t$'th bit of the result to zero. + +\subsection{Digit Based Montgomery Reduction} +Instead of computing the reduction on a bit-by-bit basis it is actually much faster to compute it on digit-by-digit basis. Consider the +previous algorithm re-written to compute the Montgomery reduction in this new fashion. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Montgomery Reduction} (modified II). \\ +\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Output}. $\beta^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +1. for $t$ from $0$ to $k - 1$ do \\ +\hspace{3mm}1.1 $x \leftarrow x + \mu n \beta^t$ \\ +2. Return $x/\beta^k$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Montgomery Reduction (modified II)} +\end{figure} + +The value $\mu n \beta^t$ is a multiple of the modulus $n$ meaning that it will not change the residue. If the first digit of +the value $\mu n \beta^t$ equals the negative (modulo $\beta$) of the $t$'th digit of $x$ then the addition will result in a zero digit. This +problem breaks down to solving the following congruency. + +\begin{center} +\begin{tabular}{rcl} +$x_t + \mu n_0$ & $\equiv$ & $0 \mbox{ (mod }\beta\mbox{)}$ \\ +$\mu n_0$ & $\equiv$ & $-x_t \mbox{ (mod }\beta\mbox{)}$ \\ +$\mu$ & $\equiv$ & $-x_t/n_0 \mbox{ (mod }\beta\mbox{)}$ \\ +\end{tabular} +\end{center} + +In each iteration of the loop on step 1 a new value of $\mu$ must be calculated. The value of $-1/n_0 \mbox{ (mod }\beta\mbox{)}$ is used +extensively in this algorithm and should be precomputed. Let $\rho$ represent the negative of the modular inverse of $n_0$ modulo $\beta$. + +For example, let $\beta = 10$ represent the radix. Let $n = 17$ represent the modulus which implies $k = 2$ and $\rho \equiv 7$. Let $x = 33$ +represent the value to reduce. + +\newpage\begin{figure} +\begin{center} +\begin{tabular}{|c|c|c|} +\hline \textbf{Step ($t$)} & \textbf{Value of $x$} & \textbf{Value of $\mu$} \\ +\hline -- & $33$ & --\\ +\hline $0$ & $33 + \mu n = 50$ & $1$ \\ +\hline $1$ & $50 + \mu n \beta = 900$ & $5$ \\ +\hline +\end{tabular} +\end{center} +\caption{Example of Montgomery Reduction} +\end{figure} + +The final result $900$ is then divided by $\beta^k$ to produce the final result $9$. The first observation is that $9 \nequiv x \mbox{ (mod }n\mbox{)}$ +which implies the result is not the modular residue of $x$ modulo $n$. However, recall that the residue is actually multiplied by $\beta^{-k}$ in +the algorithm. To get the true residue the value must be multiplied by $\beta^k$. In this case $\beta^k \equiv 15 \mbox{ (mod }n\mbox{)}$ and +the correct residue is $9 \cdot 15 \equiv 16 \mbox{ (mod }n\mbox{)}$. + +\subsection{Baseline Montgomery Reduction} +The baseline Montgomery reduction algorithm will produce the residue for any size input. It is designed to be a catch-all algororithm for +Montgomery reductions. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_montgomery\_reduce}. \\ +\textbf{Input}. mp\_int $x$, mp\_int $n$ and a digit $\rho \equiv -1/n_0 \mbox{ (mod }n\mbox{)}$. \\ +\hspace{11.5mm}($0 \le x < n^2, n > 1, (n, \beta) = 1, \beta^k > n$) \\ +\textbf{Output}. $\beta^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +1. $digs \leftarrow 2n.used + 1$ \\ +2. If $digs < MP\_ARRAY$ and $m.used < \delta$ then \\ +\hspace{3mm}2.1 Use algorithm fast\_mp\_montgomery\_reduce instead. \\ +\\ +Setup $x$ for the reduction. \\ +3. If $x.alloc < digs$ then grow $x$ to $digs$ digits. \\ +4. $x.used \leftarrow digs$ \\ +\\ +Eliminate the lower $k$ digits. \\ +5. For $ix$ from $0$ to $k - 1$ do \\ +\hspace{3mm}5.1 $\mu \leftarrow x_{ix} \cdot \rho \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}5.2 $u \leftarrow 0$ \\ +\hspace{3mm}5.3 For $iy$ from $0$ to $k - 1$ do \\ +\hspace{6mm}5.3.1 $\hat r \leftarrow \mu n_{iy} + x_{ix + iy} + u$ \\ +\hspace{6mm}5.3.2 $x_{ix + iy} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{6mm}5.3.3 $u \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +\hspace{3mm}5.4 While $u > 0$ do \\ +\hspace{6mm}5.4.1 $iy \leftarrow iy + 1$ \\ +\hspace{6mm}5.4.2 $x_{ix + iy} \leftarrow x_{ix + iy} + u$ \\ +\hspace{6mm}5.4.3 $u \leftarrow \lfloor x_{ix+iy} / \beta \rfloor$ \\ +\hspace{6mm}5.4.4 $x_{ix + iy} \leftarrow x_{ix+iy} \mbox{ (mod }\beta\mbox{)}$ \\ +\\ +Divide by $\beta^k$ and fix up as required. \\ +6. $x \leftarrow \lfloor x / \beta^k \rfloor$ \\ +7. If $x \ge n$ then \\ +\hspace{3mm}7.1 $x \leftarrow x - n$ \\ +8. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_montgomery\_reduce} +\end{figure} + +\textbf{Algorithm mp\_montgomery\_reduce.} +This algorithm reduces the input $x$ modulo $n$ in place using the Montgomery reduction algorithm. The algorithm is loosely based +on algorithm 14.32 of \cite[pp.601]{HAC} except it merges the multiplication of $\mu n \beta^t$ with the addition in the inner loop. The +restrictions on this algorithm are fairly easy to adapt to. First $0 \le x < n^2$ bounds the input to numbers in the same range as +for the Barrett algorithm. Additionally if $n > 1$ and $n$ is odd there will exist a modular inverse $\rho$. $\rho$ must be calculated in +advance of this algorithm. Finally the variable $k$ is fixed and a pseudonym for $n.used$. + +Step 2 decides whether a faster Montgomery algorithm can be used. It is based on the Comba technique meaning that there are limits on +the size of the input. This algorithm is discussed in sub-section 6.3.3. + +Step 5 is the main reduction loop of the algorithm. The value of $\mu$ is calculated once per iteration in the outer loop. The inner loop +calculates $x + \mu n \beta^{ix}$ by multiplying $\mu n$ and adding the result to $x$ shifted by $ix$ digits. Both the addition and +multiplication are performed in the same loop to save time and memory. Step 5.4 will handle any additional carries that escape the inner loop. + +Using a quick inspection this algorithm requires $n$ single precision multiplications for the outer loop and $n^2$ single precision multiplications +in the inner loop. In total $n^2 + n$ single precision multiplications which compares favourably to Barrett at $n^2 + 2n - 1$ single precision +multiplications. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_montgomery\_reduce.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* computes xR**-1 == x (mod N) via Montgomery Reduction */ +018 int +019 mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +020 \{ +021 int ix, res, digs; +022 mp_digit mu; +023 +024 /* can the fast reduction [comba] method be used? +025 * +026 * Note that unlike in mul you're safely allowed *less* +027 * than the available columns [255 per default] since carries +028 * are fixed up in the inner loop. +029 */ +030 digs = n->used * 2 + 1; +031 if ((digs < MP_WARRAY) && +032 n->used < +033 (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) \{ +034 return fast_mp_montgomery_reduce (x, n, rho); +035 \} +036 +037 /* grow the input as required */ +038 if (x->alloc < digs) \{ +039 if ((res = mp_grow (x, digs)) != MP_OKAY) \{ +040 return res; +041 \} +042 \} +043 x->used = digs; +044 +045 for (ix = 0; ix < n->used; ix++) \{ +046 /* mu = ai * rho mod b +047 * +048 * The value of rho must be precalculated via +049 * montgomery_setup() such that +050 * it equals -1/n0 mod b this allows the +051 * following inner loop to reduce the +052 * input one digit at a time +053 */ +054 mu = (mp_digit) (((mp_word)x->dp[ix]) * ((mp_word)rho) & MP_MASK); +055 +056 /* a = a + mu * m * b**i */ +057 \{ +058 register int iy; +059 register mp_digit *tmpn, *tmpx, u; +060 register mp_word r; +061 +062 /* alias for digits of the modulus */ +063 tmpn = n->dp; +064 +065 /* alias for the digits of x [the input] */ +066 tmpx = x->dp + ix; +067 +068 /* set the carry to zero */ +069 u = 0; +070 +071 /* Multiply and add in place */ +072 for (iy = 0; iy < n->used; iy++) \{ +073 /* compute product and sum */ +074 r = ((mp_word)mu) * ((mp_word)*tmpn++) + +075 ((mp_word) u) + ((mp_word) * tmpx); +076 +077 /* get carry */ +078 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); +079 +080 /* fix digit */ +081 *tmpx++ = (mp_digit)(r & ((mp_word) MP_MASK)); +082 \} +083 /* At this point the ix'th digit of x should be zero */ +084 +085 +086 /* propagate carries upwards as required*/ +087 while (u) \{ +088 *tmpx += u; +089 u = *tmpx >> DIGIT_BIT; +090 *tmpx++ &= MP_MASK; +091 \} +092 \} +093 \} +094 +095 /* at this point the n.used'th least +096 * significant digits of x are all zero +097 * which means we can shift x to the +098 * right by n.used digits and the +099 * residue is unchanged. +100 */ +101 +102 /* x = x/b**n.used */ +103 mp_clamp(x); +104 mp_rshd (x, n->used); +105 +106 /* if x >= n then x = x - n */ +107 if (mp_cmp_mag (x, n) != MP_LT) \{ +108 return s_mp_sub (x, n, x); +109 \} +110 +111 return MP_OKAY; +112 \} +113 #endif +\end{alltt} +\end{small} + +This is the baseline implementation of the Montgomery reduction algorithm. Lines 30 to 35 determine if the Comba based +routine can be used instead. Line 48 computes the value of $\mu$ for that particular iteration of the outer loop. + +The multiplication $\mu n \beta^{ix}$ is performed in one step in the inner loop. The alias $tmpx$ refers to the $ix$'th digit of $x$ and +the alias $tmpn$ refers to the modulus $n$. + +\subsection{Faster ``Comba'' Montgomery Reduction} + +The Montgomery reduction requires fewer single precision multiplications than a Barrett reduction, however it is much slower due to the serial +nature of the inner loop. The Barrett reduction algorithm requires two slightly modified multipliers which can be implemented with the Comba +technique. The Montgomery reduction algorithm cannot directly use the Comba technique to any significant advantage since the inner loop calculates +a $k \times 1$ product $k$ times. + +The biggest obstacle is that at the $ix$'th iteration of the outer loop the value of $x_{ix}$ is required to calculate $\mu$. This means the +carries from $0$ to $ix - 1$ must have been propagated upwards to form a valid $ix$'th digit. The solution as it turns out is very simple. +Perform a Comba like multiplier and inside the outer loop just after the inner loop fix up the $ix + 1$'th digit by forwarding the carry. + +With this change in place the Montgomery reduction algorithm can be performed with a Comba style multiplication loop which substantially increases +the speed of the algorithm. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{fast\_mp\_montgomery\_reduce}. \\ +\textbf{Input}. mp\_int $x$, mp\_int $n$ and a digit $\rho \equiv -1/n_0 \mbox{ (mod }n\mbox{)}$. \\ +\hspace{11.5mm}($0 \le x < n^2, n > 1, (n, \beta) = 1, \beta^k > n$) \\ +\textbf{Output}. $\beta^{-k}x \mbox{ (mod }n\mbox{)}$ \\ +\hline \\ +Place an array of \textbf{MP\_WARRAY} mp\_word variables called $\hat W$ on the stack. \\ +1. if $x.alloc < n.used + 1$ then grow $x$ to $n.used + 1$ digits. \\ +Copy the digits of $x$ into the array $\hat W$ \\ +2. For $ix$ from $0$ to $x.used - 1$ do \\ +\hspace{3mm}2.1 $\hat W_{ix} \leftarrow x_{ix}$ \\ +3. For $ix$ from $x.used$ to $2n.used - 1$ do \\ +\hspace{3mm}3.1 $\hat W_{ix} \leftarrow 0$ \\ +Elimiate the lower $k$ digits. \\ +4. for $ix$ from $0$ to $n.used - 1$ do \\ +\hspace{3mm}4.1 $\mu \leftarrow \hat W_{ix} \cdot \rho \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}4.2 For $iy$ from $0$ to $n.used - 1$ do \\ +\hspace{6mm}4.2.1 $\hat W_{iy + ix} \leftarrow \hat W_{iy + ix} + \mu \cdot n_{iy}$ \\ +\hspace{3mm}4.3 $\hat W_{ix + 1} \leftarrow \hat W_{ix + 1} + \lfloor \hat W_{ix} / \beta \rfloor$ \\ +Propagate carries upwards. \\ +5. for $ix$ from $n.used$ to $2n.used + 1$ do \\ +\hspace{3mm}5.1 $\hat W_{ix + 1} \leftarrow \hat W_{ix + 1} + \lfloor \hat W_{ix} / \beta \rfloor$ \\ +Shift right and reduce modulo $\beta$ simultaneously. \\ +6. for $ix$ from $0$ to $n.used + 1$ do \\ +\hspace{3mm}6.1 $x_{ix} \leftarrow \hat W_{ix + n.used} \mbox{ (mod }\beta\mbox{)}$ \\ +Zero excess digits and fixup $x$. \\ +7. if $x.used > n.used + 1$ then do \\ +\hspace{3mm}7.1 for $ix$ from $n.used + 1$ to $x.used - 1$ do \\ +\hspace{6mm}7.1.1 $x_{ix} \leftarrow 0$ \\ +8. $x.used \leftarrow n.used + 1$ \\ +9. Clamp excessive digits of $x$. \\ +10. If $x \ge n$ then \\ +\hspace{3mm}10.1 $x \leftarrow x - n$ \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm fast\_mp\_montgomery\_reduce} +\end{figure} + +\textbf{Algorithm fast\_mp\_montgomery\_reduce.} +This algorithm will compute the Montgomery reduction of $x$ modulo $n$ using the Comba technique. It is on most computer platforms significantly +faster than algorithm mp\_montgomery\_reduce and algorithm mp\_reduce (\textit{Barrett reduction}). The algorithm has the same restrictions +on the input as the baseline reduction algorithm. An additional two restrictions are imposed on this algorithm. The number of digits $k$ in the +the modulus $n$ must not violate $MP\_WARRAY > 2k +1$ and $n < \delta$. When $\beta = 2^{28}$ this algorithm can be used to reduce modulo +a modulus of at most $3,556$ bits in length. + +As in the other Comba reduction algorithms there is a $\hat W$ array which stores the columns of the product. It is initially filled with the +contents of $x$ with the excess digits zeroed. The reduction loop is very similar the to the baseline loop at heart. The multiplication on step +4.1 can be single precision only since $ab \mbox{ (mod }\beta\mbox{)} \equiv (a \mbox{ mod }\beta)(b \mbox{ mod }\beta)$. Some multipliers such +as those on the ARM processors take a variable length time to complete depending on the number of bytes of result it must produce. By performing +a single precision multiplication instead half the amount of time is spent. + +Also note that digit $\hat W_{ix}$ must have the carry from the $ix - 1$'th digit propagated upwards in order for this to work. That is what step +4.3 will do. In effect over the $n.used$ iterations of the outer loop the $n.used$'th lower columns all have the their carries propagated forwards. Note +how the upper bits of those same words are not reduced modulo $\beta$. This is because those values will be discarded shortly and there is no +point. + +Step 5 will propagate the remainder of the carries upwards. On step 6 the columns are reduced modulo $\beta$ and shifted simultaneously as they are +stored in the destination $x$. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_fast\_mp\_montgomery\_reduce.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* computes xR**-1 == x (mod N) via Montgomery Reduction +018 * +019 * This is an optimized implementation of montgomery_reduce +020 * which uses the comba method to quickly calculate the columns of the +021 * reduction. +022 * +023 * Based on Algorithm 14.32 on pp.601 of HAC. +024 */ +025 int +026 fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +027 \{ +028 int ix, res, olduse; +029 mp_word W[MP_WARRAY]; +030 +031 /* get old used count */ +032 olduse = x->used; +033 +034 /* grow a as required */ +035 if (x->alloc < n->used + 1) \{ +036 if ((res = mp_grow (x, n->used + 1)) != MP_OKAY) \{ +037 return res; +038 \} +039 \} +040 +041 /* first we have to get the digits of the input into +042 * an array of double precision words W[...] +043 */ +044 \{ +045 register mp_word *_W; +046 register mp_digit *tmpx; +047 +048 /* alias for the W[] array */ +049 _W = W; +050 +051 /* alias for the digits of x*/ +052 tmpx = x->dp; +053 +054 /* copy the digits of a into W[0..a->used-1] */ +055 for (ix = 0; ix < x->used; ix++) \{ +056 *_W++ = *tmpx++; +057 \} +058 +059 /* zero the high words of W[a->used..m->used*2] */ +060 for (; ix < n->used * 2 + 1; ix++) \{ +061 *_W++ = 0; +062 \} +063 \} +064 +065 /* now we proceed to zero successive digits +066 * from the least significant upwards +067 */ +068 for (ix = 0; ix < n->used; ix++) \{ +069 /* mu = ai * m' mod b +070 * +071 * We avoid a double precision multiplication (which isn't required) +072 * by casting the value down to a mp_digit. Note this requires +073 * that W[ix-1] have the carry cleared (see after the inner loop) +074 */ +075 register mp_digit mu; +076 mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK); +077 +078 /* a = a + mu * m * b**i +079 * +080 * This is computed in place and on the fly. The multiplication +081 * by b**i is handled by offseting which columns the results +082 * are added to. +083 * +084 * Note the comba method normally doesn't handle carries in the +085 * inner loop In this case we fix the carry from the previous +086 * column since the Montgomery reduction requires digits of the +087 * result (so far) [see above] to work. This is +088 * handled by fixing up one carry after the inner loop. The +089 * carry fixups are done in order so after these loops the +090 * first m->used words of W[] have the carries fixed +091 */ +092 \{ +093 register int iy; +094 register mp_digit *tmpn; +095 register mp_word *_W; +096 +097 /* alias for the digits of the modulus */ +098 tmpn = n->dp; +099 +100 /* Alias for the columns set by an offset of ix */ +101 _W = W + ix; +102 +103 /* inner loop */ +104 for (iy = 0; iy < n->used; iy++) \{ +105 *_W++ += ((mp_word)mu) * ((mp_word)*tmpn++); +106 \} +107 \} +108 +109 /* now fix carry for next digit, W[ix+1] */ +110 W[ix + 1] += W[ix] >> ((mp_word) DIGIT_BIT); +111 \} +112 +113 /* now we have to propagate the carries and +114 * shift the words downward [all those least +115 * significant digits we zeroed]. +116 */ +117 \{ +118 register mp_digit *tmpx; +119 register mp_word *_W, *_W1; +120 +121 /* nox fix rest of carries */ +122 +123 /* alias for current word */ +124 _W1 = W + ix; +125 +126 /* alias for next word, where the carry goes */ +127 _W = W + ++ix; +128 +129 for (; ix <= n->used * 2 + 1; ix++) \{ +130 *_W++ += *_W1++ >> ((mp_word) DIGIT_BIT); +131 \} +132 +133 /* copy out, A = A/b**n +134 * +135 * The result is A/b**n but instead of converting from an +136 * array of mp_word to mp_digit than calling mp_rshd +137 * we just copy them in the right order +138 */ +139 +140 /* alias for destination word */ +141 tmpx = x->dp; +142 +143 /* alias for shifted double precision result */ +144 _W = W + n->used; +145 +146 for (ix = 0; ix < n->used + 1; ix++) \{ +147 *tmpx++ = (mp_digit)(*_W++ & ((mp_word) MP_MASK)); +148 \} +149 +150 /* zero oldused digits, if the input a was larger than +151 * m->used+1 we'll have to clear the digits +152 */ +153 for (; ix < olduse; ix++) \{ +154 *tmpx++ = 0; +155 \} +156 \} +157 +158 /* set the max used and clamp */ +159 x->used = n->used + 1; +160 mp_clamp (x); +161 +162 /* if A >= m then A = A - m */ +163 if (mp_cmp_mag (x, n) != MP_LT) \{ +164 return s_mp_sub (x, n, x); +165 \} +166 return MP_OKAY; +167 \} +168 #endif +\end{alltt} +\end{small} + +The $\hat W$ array is first filled with digits of $x$ on line 48 then the rest of the digits are zeroed on line 55. Both loops share +the same alias variables to make the code easier to read. + +The value of $\mu$ is calculated in an interesting fashion. First the value $\hat W_{ix}$ is reduced modulo $\beta$ and cast to a mp\_digit. This +forces the compiler to use a single precision multiplication and prevents any concerns about loss of precision. Line 110 fixes the carry +for the next iteration of the loop by propagating the carry from $\hat W_{ix}$ to $\hat W_{ix+1}$. + +The for loop on line 109 propagates the rest of the carries upwards through the columns. The for loop on line 126 reduces the columns +modulo $\beta$ and shifts them $k$ places at the same time. The alias $\_ \hat W$ actually refers to the array $\hat W$ starting at the $n.used$'th +digit, that is $\_ \hat W_{t} = \hat W_{n.used + t}$. + +\subsection{Montgomery Setup} +To calculate the variable $\rho$ a relatively simple algorithm will be required. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_montgomery\_setup}. \\ +\textbf{Input}. mp\_int $n$ ($n > 1$ and $(n, 2) = 1$) \\ +\textbf{Output}. $\rho \equiv -1/n_0 \mbox{ (mod }\beta\mbox{)}$ \\ +\hline \\ +1. $b \leftarrow n_0$ \\ +2. If $b$ is even return(\textit{MP\_VAL}) \\ +3. $x \leftarrow ((b + 2) \mbox{ AND } 4) << 1) + b$ \\ +4. for $k$ from 0 to $\lceil lg(lg(\beta)) \rceil - 2$ do \\ +\hspace{3mm}4.1 $x \leftarrow x \cdot (2 - bx)$ \\ +5. $\rho \leftarrow \beta - x \mbox{ (mod }\beta\mbox{)}$ \\ +6. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_montgomery\_setup} +\end{figure} + +\textbf{Algorithm mp\_montgomery\_setup.} +This algorithm will calculate the value of $\rho$ required within the Montgomery reduction algorithms. It uses a very interesting trick +to calculate $1/n_0$ when $\beta$ is a power of two. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_montgomery\_setup.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* setups the montgomery reduction stuff */ +018 int +019 mp_montgomery_setup (mp_int * n, mp_digit * rho) +020 \{ +021 mp_digit x, b; +022 +023 /* fast inversion mod 2**k +024 * +025 * Based on the fact that +026 * +027 * XA = 1 (mod 2**n) => (X(2-XA)) A = 1 (mod 2**2n) +028 * => 2*X*A - X*X*A*A = 1 +029 * => 2*(1) - (1) = 1 +030 */ +031 b = n->dp[0]; +032 +033 if ((b & 1) == 0) \{ +034 return MP_VAL; +035 \} +036 +037 x = (((b + 2) & 4) << 1) + b; /* here x*a==1 mod 2**4 */ +038 x *= 2 - b * x; /* here x*a==1 mod 2**8 */ +039 #if !defined(MP_8BIT) +040 x *= 2 - b * x; /* here x*a==1 mod 2**16 */ +041 #endif +042 #if defined(MP_64BIT) || !(defined(MP_8BIT) || defined(MP_16BIT)) +043 x *= 2 - b * x; /* here x*a==1 mod 2**32 */ +044 #endif +045 #ifdef MP_64BIT +046 x *= 2 - b * x; /* here x*a==1 mod 2**64 */ +047 #endif +048 +049 /* rho = -1/m mod b */ +050 *rho = (((mp_word)1 << ((mp_word) DIGIT_BIT)) - x) & MP_MASK; +051 +052 return MP_OKAY; +053 \} +054 #endif +\end{alltt} +\end{small} + +This source code computes the value of $\rho$ required to perform Montgomery reduction. It has been modified to avoid performing excess +multiplications when $\beta$ is not the default 28-bits. + +\section{The Diminished Radix Algorithm} +The Diminished Radix method of modular reduction \cite{DRMET} is a fairly clever technique which can be more efficient than either the Barrett +or Montgomery methods for certain forms of moduli. The technique is based on the following simple congruence. + +\begin{equation} +(x \mbox{ mod } n) + k \lfloor x / n \rfloor \equiv x \mbox{ (mod }(n - k)\mbox{)} +\end{equation} + +This observation was used in the MMB \cite{MMB} block cipher to create a diffusion primitive. It used the fact that if $n = 2^{31}$ and $k=1$ that +then a x86 multiplier could produce the 62-bit product and use the ``shrd'' instruction to perform a double-precision right shift. The proof +of the above equation is very simple. First write $x$ in the product form. + +\begin{equation} +x = qn + r +\end{equation} + +Now reduce both sides modulo $(n - k)$. + +\begin{equation} +x \equiv qk + r \mbox{ (mod }(n-k)\mbox{)} +\end{equation} + +The variable $n$ reduces modulo $n - k$ to $k$. By putting $q = \lfloor x/n \rfloor$ and $r = x \mbox{ mod } n$ +into the equation the original congruence is reproduced, thus concluding the proof. The following algorithm is based on this observation. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Diminished Radix Reduction}. \\ +\textbf{Input}. Integer $x$, $n$, $k$ \\ +\textbf{Output}. $x \mbox{ mod } (n - k)$ \\ +\hline \\ +1. $q \leftarrow \lfloor x / n \rfloor$ \\ +2. $q \leftarrow k \cdot q$ \\ +3. $x \leftarrow x \mbox{ (mod }n\mbox{)}$ \\ +4. $x \leftarrow x + q$ \\ +5. If $x \ge (n - k)$ then \\ +\hspace{3mm}5.1 $x \leftarrow x - (n - k)$ \\ +\hspace{3mm}5.2 Goto step 1. \\ +6. Return $x$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Diminished Radix Reduction} +\label{fig:DR} +\end{figure} + +This algorithm will reduce $x$ modulo $n - k$ and return the residue. If $0 \le x < (n - k)^2$ then the algorithm will loop almost always +once or twice and occasionally three times. For simplicity sake the value of $x$ is bounded by the following simple polynomial. + +\begin{equation} +0 \le x < n^2 + k^2 - 2nk +\end{equation} + +The true bound is $0 \le x < (n - k - 1)^2$ but this has quite a few more terms. The value of $q$ after step 1 is bounded by the following. + +\begin{equation} +q < n - 2k - k^2/n +\end{equation} + +Since $k^2$ is going to be considerably smaller than $n$ that term will always be zero. The value of $x$ after step 3 is bounded trivially as +$0 \le x < n$. By step four the sum $x + q$ is bounded by + +\begin{equation} +0 \le q + x < (k + 1)n - 2k^2 - 1 +\end{equation} + +With a second pass $q$ will be loosely bounded by $0 \le q < k^2$ after step 2 while $x$ will still be loosely bounded by $0 \le x < n$ after step 3. After the second pass it is highly unlike that the +sum in step 4 will exceed $n - k$. In practice fewer than three passes of the algorithm are required to reduce virtually every input in the +range $0 \le x < (n - k - 1)^2$. + +\begin{figure} +\begin{small} +\begin{center} +\begin{tabular}{|l|} +\hline +$x = 123456789, n = 256, k = 3$ \\ +\hline $q \leftarrow \lfloor x/n \rfloor = 482253$ \\ +$q \leftarrow q*k = 1446759$ \\ +$x \leftarrow x \mbox{ mod } n = 21$ \\ +$x \leftarrow x + q = 1446780$ \\ +$x \leftarrow x - (n - k) = 1446527$ \\ +\hline +$q \leftarrow \lfloor x/n \rfloor = 5650$ \\ +$q \leftarrow q*k = 16950$ \\ +$x \leftarrow x \mbox{ mod } n = 127$ \\ +$x \leftarrow x + q = 17077$ \\ +$x \leftarrow x - (n - k) = 16824$ \\ +\hline +$q \leftarrow \lfloor x/n \rfloor = 65$ \\ +$q \leftarrow q*k = 195$ \\ +$x \leftarrow x \mbox{ mod } n = 184$ \\ +$x \leftarrow x + q = 379$ \\ +$x \leftarrow x - (n - k) = 126$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Example Diminished Radix Reduction} +\label{fig:EXDR} +\end{figure} + +Figure~\ref{fig:EXDR} demonstrates the reduction of $x = 123456789$ modulo $n - k = 253$ when $n = 256$ and $k = 3$. Note that even while $x$ +is considerably larger than $(n - k - 1)^2 = 63504$ the algorithm still converges on the modular residue exceedingly fast. In this case only +three passes were required to find the residue $x \equiv 126$. + + +\subsection{Choice of Moduli} +On the surface this algorithm looks like a very expensive algorithm. It requires a couple of subtractions followed by multiplication and other +modular reductions. The usefulness of this algorithm becomes exceedingly clear when an appropriate modulus is chosen. + +Division in general is a very expensive operation to perform. The one exception is when the division is by a power of the radix of representation used. +Division by ten for example is simple for pencil and paper mathematics since it amounts to shifting the decimal place to the right. Similarly division +by two (\textit{or powers of two}) is very simple for binary computers to perform. It would therefore seem logical to choose $n$ of the form $2^p$ +which would imply that $\lfloor x / n \rfloor$ is a simple shift of $x$ right $p$ bits. + +However, there is one operation related to division of power of twos that is even faster than this. If $n = \beta^p$ then the division may be +performed by moving whole digits to the right $p$ places. In practice division by $\beta^p$ is much faster than division by $2^p$ for any $p$. +Also with the choice of $n = \beta^p$ reducing $x$ modulo $n$ merely requires zeroing the digits above the $p-1$'th digit of $x$. + +Throughout the next section the term ``restricted modulus'' will refer to a modulus of the form $\beta^p - k$ whereas the term ``unrestricted +modulus'' will refer to a modulus of the form $2^p - k$. The word ``restricted'' in this case refers to the fact that it is based on the +$2^p$ logic except $p$ must be a multiple of $lg(\beta)$. + +\subsection{Choice of $k$} +Now that division and reduction (\textit{step 1 and 3 of figure~\ref{fig:DR}}) have been optimized to simple digit operations the multiplication by $k$ +in step 2 is the most expensive operation. Fortunately the choice of $k$ is not terribly limited. For all intents and purposes it might +as well be a single digit. The smaller the value of $k$ is the faster the algorithm will be. + +\subsection{Restricted Diminished Radix Reduction} +The restricted Diminished Radix algorithm can quickly reduce an input modulo a modulus of the form $n = \beta^p - k$. This algorithm can reduce +an input $x$ within the range $0 \le x < n^2$ using only a couple passes of the algorithm demonstrated in figure~\ref{fig:DR}. The implementation +of this algorithm has been optimized to avoid additional overhead associated with a division by $\beta^p$, the multiplication by $k$ or the addition +of $x$ and $q$. The resulting algorithm is very efficient and can lead to substantial improvements over Barrett and Montgomery reduction when modular +exponentiations are performed. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_dr\_reduce}. \\ +\textbf{Input}. mp\_int $x$, $n$ and a mp\_digit $k = \beta - n_0$ \\ +\hspace{11.5mm}($0 \le x < n^2$, $n > 1$, $0 < k < \beta$) \\ +\textbf{Output}. $x \mbox{ mod } n$ \\ +\hline \\ +1. $m \leftarrow n.used$ \\ +2. If $x.alloc < 2m$ then grow $x$ to $2m$ digits. \\ +3. $\mu \leftarrow 0$ \\ +4. for $i$ from $0$ to $m - 1$ do \\ +\hspace{3mm}4.1 $\hat r \leftarrow k \cdot x_{m+i} + x_{i} + \mu$ \\ +\hspace{3mm}4.2 $x_{i} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}4.3 $\mu \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +5. $x_{m} \leftarrow \mu$ \\ +6. for $i$ from $m + 1$ to $x.used - 1$ do \\ +\hspace{3mm}6.1 $x_{i} \leftarrow 0$ \\ +7. Clamp excess digits of $x$. \\ +8. If $x \ge n$ then \\ +\hspace{3mm}8.1 $x \leftarrow x - n$ \\ +\hspace{3mm}8.2 Goto step 3. \\ +9. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_dr\_reduce} +\end{figure} + +\textbf{Algorithm mp\_dr\_reduce.} +This algorithm will perform the Dimished Radix reduction of $x$ modulo $n$. It has similar restrictions to that of the Barrett reduction +with the addition that $n$ must be of the form $n = \beta^m - k$ where $0 < k <\beta$. + +This algorithm essentially implements the pseudo-code in figure~\ref{fig:DR} except with a slight optimization. The division by $\beta^m$, multiplication by $k$ +and addition of $x \mbox{ mod }\beta^m$ are all performed simultaneously inside the loop on step 4. The division by $\beta^m$ is emulated by accessing +the term at the $m+i$'th position which is subsequently multiplied by $k$ and added to the term at the $i$'th position. After the loop the $m$'th +digit is set to the carry and the upper digits are zeroed. Steps 5 and 6 emulate the reduction modulo $\beta^m$ that should have happend to +$x$ before the addition of the multiple of the upper half. + +At step 8 if $x$ is still larger than $n$ another pass of the algorithm is required. First $n$ is subtracted from $x$ and then the algorithm resumes +at step 3. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_dr\_reduce.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* reduce "x" in place modulo "n" using the Diminished Radix algorithm. +018 * +019 * Based on algorithm from the paper +020 * +021 * "Generating Efficient Primes for Discrete Log Cryptosystems" +022 * Chae Hoon Lim, Pil Joong Lee, +023 * POSTECH Information Research Laboratories +024 * +025 * The modulus must be of a special format [see manual] +026 * +027 * Has been modified to use algorithm 7.10 from the LTM book instead +028 * +029 * Input x must be in the range 0 <= x <= (n-1)**2 +030 */ +031 int +032 mp_dr_reduce (mp_int * x, mp_int * n, mp_digit k) +033 \{ +034 int err, i, m; +035 mp_word r; +036 mp_digit mu, *tmpx1, *tmpx2; +037 +038 /* m = digits in modulus */ +039 m = n->used; +040 +041 /* ensure that "x" has at least 2m digits */ +042 if (x->alloc < m + m) \{ +043 if ((err = mp_grow (x, m + m)) != MP_OKAY) \{ +044 return err; +045 \} +046 \} +047 +048 /* top of loop, this is where the code resumes if +049 * another reduction pass is required. +050 */ +051 top: +052 /* aliases for digits */ +053 /* alias for lower half of x */ +054 tmpx1 = x->dp; +055 +056 /* alias for upper half of x, or x/B**m */ +057 tmpx2 = x->dp + m; +058 +059 /* set carry to zero */ +060 mu = 0; +061 +062 /* compute (x mod B**m) + k * [x/B**m] inline and inplace */ +063 for (i = 0; i < m; i++) \{ +064 r = ((mp_word)*tmpx2++) * ((mp_word)k) + *tmpx1 + mu; +065 *tmpx1++ = (mp_digit)(r & MP_MASK); +066 mu = (mp_digit)(r >> ((mp_word)DIGIT_BIT)); +067 \} +068 +069 /* set final carry */ +070 *tmpx1++ = mu; +071 +072 /* zero words above m */ +073 for (i = m + 1; i < x->used; i++) \{ +074 *tmpx1++ = 0; +075 \} +076 +077 /* clamp, sub and return */ +078 mp_clamp (x); +079 +080 /* if x >= n then subtract and reduce again +081 * Each successive "recursion" makes the input smaller and smaller. +082 */ +083 if (mp_cmp_mag (x, n) != MP_LT) \{ +084 s_mp_sub(x, n, x); +085 goto top; +086 \} +087 return MP_OKAY; +088 \} +089 #endif +\end{alltt} +\end{small} + +The first step is to grow $x$ as required to $2m$ digits since the reduction is performed in place on $x$. The label on line 51 is where +the algorithm will resume if further reduction passes are required. In theory it could be placed at the top of the function however, the size of +the modulus and question of whether $x$ is large enough are invariant after the first pass meaning that it would be a waste of time. + +The aliases $tmpx1$ and $tmpx2$ refer to the digits of $x$ where the latter is offset by $m$ digits. By reading digits from $x$ offset by $m$ digits +a division by $\beta^m$ can be simulated virtually for free. The loop on line 63 performs the bulk of the work (\textit{corresponds to step 4 of algorithm 7.11}) +in this algorithm. + +By line 70 the pointer $tmpx1$ points to the $m$'th digit of $x$ which is where the final carry will be placed. Similarly by line 73 the +same pointer will point to the $m+1$'th digit where the zeroes will be placed. + +Since the algorithm is only valid if both $x$ and $n$ are greater than zero an unsigned comparison suffices to determine if another pass is required. +With the same logic at line 84 the value of $x$ is known to be greater than or equal to $n$ meaning that an unsigned subtraction can be used +as well. Since the destination of the subtraction is the larger of the inputs the call to algorithm s\_mp\_sub cannot fail and the return code +does not need to be checked. + +\subsubsection{Setup} +To setup the restricted Diminished Radix algorithm the value $k = \beta - n_0$ is required. This algorithm is not really complicated but provided for +completeness. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_dr\_setup}. \\ +\textbf{Input}. mp\_int $n$ \\ +\textbf{Output}. $k = \beta - n_0$ \\ +\hline \\ +1. $k \leftarrow \beta - n_0$ \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_dr\_setup} +\end{figure} + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_dr\_setup.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* determines the setup value */ +018 void mp_dr_setup(mp_int *a, mp_digit *d) +019 \{ +020 /* the casts are required if DIGIT_BIT is one less than +021 * the number of bits in a mp_digit [e.g. DIGIT_BIT==31] +022 */ +023 *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) - +024 ((mp_word)a->dp[0])); +025 \} +026 +027 #endif +\end{alltt} +\end{small} + +\subsubsection{Modulus Detection} +Another algorithm which will be useful is the ability to detect a restricted Diminished Radix modulus. An integer is said to be +of restricted Diminished Radix form if all of the digits are equal to $\beta - 1$ except the trailing digit which may be any value. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_dr\_is\_modulus}. \\ +\textbf{Input}. mp\_int $n$ \\ +\textbf{Output}. $1$ if $n$ is in D.R form, $0$ otherwise \\ +\hline +1. If $n.used < 2$ then return($0$). \\ +2. for $ix$ from $1$ to $n.used - 1$ do \\ +\hspace{3mm}2.1 If $n_{ix} \ne \beta - 1$ return($0$). \\ +3. Return($1$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_dr\_is\_modulus} +\end{figure} + +\textbf{Algorithm mp\_dr\_is\_modulus.} +This algorithm determines if a value is in Diminished Radix form. Step 1 rejects obvious cases where fewer than two digits are +in the mp\_int. Step 2 tests all but the first digit to see if they are equal to $\beta - 1$. If the algorithm manages to get to +step 3 then $n$ must be of Diminished Radix form. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_dr\_is\_modulus.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* determines if a number is a valid DR modulus */ +018 int mp_dr_is_modulus(mp_int *a) +019 \{ +020 int ix; +021 +022 /* must be at least two digits */ +023 if (a->used < 2) \{ +024 return 0; +025 \} +026 +027 /* must be of the form b**k - a [a <= b] so all +028 * but the first digit must be equal to -1 (mod b). +029 */ +030 for (ix = 1; ix < a->used; ix++) \{ +031 if (a->dp[ix] != MP_MASK) \{ +032 return 0; +033 \} +034 \} +035 return 1; +036 \} +037 +038 #endif +\end{alltt} +\end{small} + +\subsection{Unrestricted Diminished Radix Reduction} +The unrestricted Diminished Radix algorithm allows modular reductions to be performed when the modulus is of the form $2^p - k$. This algorithm +is a straightforward adaptation of algorithm~\ref{fig:DR}. + +In general the restricted Diminished Radix reduction algorithm is much faster since it has considerably lower overhead. However, this new +algorithm is much faster than either Montgomery or Barrett reduction when the moduli are of the appropriate form. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce\_2k}. \\ +\textbf{Input}. mp\_int $a$ and $n$. mp\_digit $k$ \\ +\hspace{11.5mm}($a \ge 0$, $n > 1$, $0 < k < \beta$, $n + k$ is a power of two) \\ +\textbf{Output}. $a \mbox{ (mod }n\mbox{)}$ \\ +\hline +1. $p \leftarrow \lceil lg(n) \rceil$ (\textit{mp\_count\_bits}) \\ +2. While $a \ge n$ do \\ +\hspace{3mm}2.1 $q \leftarrow \lfloor a / 2^p \rfloor$ (\textit{mp\_div\_2d}) \\ +\hspace{3mm}2.2 $a \leftarrow a \mbox{ (mod }2^p\mbox{)}$ (\textit{mp\_mod\_2d}) \\ +\hspace{3mm}2.3 $q \leftarrow q \cdot k$ (\textit{mp\_mul\_d}) \\ +\hspace{3mm}2.4 $a \leftarrow a - q$ (\textit{s\_mp\_sub}) \\ +\hspace{3mm}2.5 If $a \ge n$ then do \\ +\hspace{6mm}2.5.1 $a \leftarrow a - n$ \\ +3. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce\_2k} +\end{figure} + +\textbf{Algorithm mp\_reduce\_2k.} +This algorithm quickly reduces an input $a$ modulo an unrestricted Diminished Radix modulus $n$. Division by $2^p$ is emulated with a right +shift which makes the algorithm fairly inexpensive to use. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_reduce\_2k.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* reduces a modulo n where n is of the form 2**p - d */ +018 int +019 mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) +020 \{ +021 mp_int q; +022 int p, res; +023 +024 if ((res = mp_init(&q)) != MP_OKAY) \{ +025 return res; +026 \} +027 +028 p = mp_count_bits(n); +029 top: +030 /* q = a/2**p, a = a mod 2**p */ +031 if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) \{ +032 goto ERR; +033 \} +034 +035 if (d != 1) \{ +036 /* q = q * d */ +037 if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) \{ +038 goto ERR; +039 \} +040 \} +041 +042 /* a = a + q */ +043 if ((res = s_mp_add(a, &q, a)) != MP_OKAY) \{ +044 goto ERR; +045 \} +046 +047 if (mp_cmp_mag(a, n) != MP_LT) \{ +048 s_mp_sub(a, n, a); +049 goto top; +050 \} +051 +052 ERR: +053 mp_clear(&q); +054 return res; +055 \} +056 +057 #endif +\end{alltt} +\end{small} + +The algorithm mp\_count\_bits calculates the number of bits in an mp\_int which is used to find the initial value of $p$. The call to mp\_div\_2d +on line 31 calculates both the quotient $q$ and the remainder $a$ required. By doing both in a single function call the code size +is kept fairly small. The multiplication by $k$ is only performed if $k > 1$. This allows reductions modulo $2^p - 1$ to be performed without +any multiplications. + +The unsigned s\_mp\_add, mp\_cmp\_mag and s\_mp\_sub are used in place of their full sign counterparts since the inputs are only valid if they are +positive. By using the unsigned versions the overhead is kept to a minimum. + +\subsubsection{Unrestricted Setup} +To setup this reduction algorithm the value of $k = 2^p - n$ is required. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce\_2k\_setup}. \\ +\textbf{Input}. mp\_int $n$ \\ +\textbf{Output}. $k = 2^p - n$ \\ +\hline +1. $p \leftarrow \lceil lg(n) \rceil$ (\textit{mp\_count\_bits}) \\ +2. $x \leftarrow 2^p$ (\textit{mp\_2expt}) \\ +3. $x \leftarrow x - n$ (\textit{mp\_sub}) \\ +4. $k \leftarrow x_0$ \\ +5. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce\_2k\_setup} +\end{figure} + +\textbf{Algorithm mp\_reduce\_2k\_setup.} +This algorithm computes the value of $k$ required for the algorithm mp\_reduce\_2k. By making a temporary variable $x$ equal to $2^p$ a subtraction +is sufficient to solve for $k$. Alternatively if $n$ has more than one digit the value of $k$ is simply $\beta - n_0$. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_reduce\_2k\_setup.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* determines the setup value */ +018 int +019 mp_reduce_2k_setup(mp_int *a, mp_digit *d) +020 \{ +021 int res, p; +022 mp_int tmp; +023 +024 if ((res = mp_init(&tmp)) != MP_OKAY) \{ +025 return res; +026 \} +027 +028 p = mp_count_bits(a); +029 if ((res = mp_2expt(&tmp, p)) != MP_OKAY) \{ +030 mp_clear(&tmp); +031 return res; +032 \} +033 +034 if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) \{ +035 mp_clear(&tmp); +036 return res; +037 \} +038 +039 *d = tmp.dp[0]; +040 mp_clear(&tmp); +041 return MP_OKAY; +042 \} +043 #endif +\end{alltt} +\end{small} + +\subsubsection{Unrestricted Detection} +An integer $n$ is a valid unrestricted Diminished Radix modulus if either of the following are true. + +\begin{enumerate} +\item The number has only one digit. +\item The number has more than one digit and every bit from the $\beta$'th to the most significant is one. +\end{enumerate} + +If either condition is true than there is a power of two $2^p$ such that $0 < 2^p - n < \beta$. If the input is only +one digit than it will always be of the correct form. Otherwise all of the bits above the first digit must be one. This arises from the fact +that there will be value of $k$ that when added to the modulus causes a carry in the first digit which propagates all the way to the most +significant bit. The resulting sum will be a power of two. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_reduce\_is\_2k}. \\ +\textbf{Input}. mp\_int $n$ \\ +\textbf{Output}. $1$ if of proper form, $0$ otherwise \\ +\hline +1. If $n.used = 0$ then return($0$). \\ +2. If $n.used = 1$ then return($1$). \\ +3. $p \leftarrow \lceil lg(n) \rceil$ (\textit{mp\_count\_bits}) \\ +4. for $x$ from $lg(\beta)$ to $p$ do \\ +\hspace{3mm}4.1 If the ($x \mbox{ mod }lg(\beta)$)'th bit of the $\lfloor x / lg(\beta) \rfloor$ of $n$ is zero then return($0$). \\ +5. Return($1$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_reduce\_is\_2k} +\end{figure} + +\textbf{Algorithm mp\_reduce\_is\_2k.} +This algorithm quickly determines if a modulus is of the form required for algorithm mp\_reduce\_2k to function properly. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_reduce\_is\_2k.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* determines if mp_reduce_2k can be used */ +018 int mp_reduce_is_2k(mp_int *a) +019 \{ +020 int ix, iy, iw; +021 mp_digit iz; +022 +023 if (a->used == 0) \{ +024 return 0; +025 \} else if (a->used == 1) \{ +026 return 1; +027 \} else if (a->used > 1) \{ +028 iy = mp_count_bits(a); +029 iz = 1; +030 iw = 1; +031 +032 /* Test every bit from the second digit up, must be 1 */ +033 for (ix = DIGIT_BIT; ix < iy; ix++) \{ +034 if ((a->dp[iw] & iz) == 0) \{ +035 return 0; +036 \} +037 iz <<= 1; +038 if (iz > (mp_digit)MP_MASK) \{ +039 ++iw; +040 iz = 1; +041 \} +042 \} +043 \} +044 return 1; +045 \} +046 +047 #endif +\end{alltt} +\end{small} + + + +\section{Algorithm Comparison} +So far three very different algorithms for modular reduction have been discussed. Each of the algorithms have their own strengths and weaknesses +that makes having such a selection very useful. The following table sumarizes the three algorithms along with comparisons of work factors. Since +all three algorithms have the restriction that $0 \le x < n^2$ and $n > 1$ those limitations are not included in the table. + +\begin{center} +\begin{small} +\begin{tabular}{|c|c|c|c|c|c|} +\hline \textbf{Method} & \textbf{Work Required} & \textbf{Limitations} & \textbf{$m = 8$} & \textbf{$m = 32$} & \textbf{$m = 64$} \\ +\hline Barrett & $m^2 + 2m - 1$ & None & $79$ & $1087$ & $4223$ \\ +\hline Montgomery & $m^2 + m$ & $n$ must be odd & $72$ & $1056$ & $4160$ \\ +\hline D.R. & $2m$ & $n = \beta^m - k$ & $16$ & $64$ & $128$ \\ +\hline +\end{tabular} +\end{small} +\end{center} + +In theory Montgomery and Barrett reductions would require roughly the same amount of time to complete. However, in practice since Montgomery +reduction can be written as a single function with the Comba technique it is much faster. Barrett reduction suffers from the overhead of +calling the half precision multipliers, addition and division by $\beta$ algorithms. + +For almost every cryptographic algorithm Montgomery reduction is the algorithm of choice. The one set of algorithms where Diminished Radix reduction truly +shines are based on the discrete logarithm problem such as Diffie-Hellman \cite{DH} and ElGamal \cite{ELGAMAL}. In these algorithms +primes of the form $\beta^m - k$ can be found and shared amongst users. These primes will allow the Diminished Radix algorithm to be used in +modular exponentiation to greatly speed up the operation. + + + +\section*{Exercises} +\begin{tabular}{cl} +$\left [ 3 \right ]$ & Prove that the ``trick'' in algorithm mp\_montgomery\_setup actually \\ + & calculates the correct value of $\rho$. \\ + & \\ +$\left [ 2 \right ]$ & Devise an algorithm to reduce modulo $n + k$ for small $k$ quickly. \\ + & \\ +$\left [ 4 \right ]$ & Prove that the pseudo-code algorithm ``Diminished Radix Reduction'' \\ + & (\textit{figure~\ref{fig:DR}}) terminates. Also prove the probability that it will \\ + & terminate within $1 \le k \le 10$ iterations. \\ + & \\ +\end{tabular} + + +\chapter{Exponentiation} +Exponentiation is the operation of raising one variable to the power of another, for example, $a^b$. A variant of exponentiation, computed +in a finite field or ring, is called modular exponentiation. This latter style of operation is typically used in public key +cryptosystems such as RSA and Diffie-Hellman. The ability to quickly compute modular exponentiations is of great benefit to any +such cryptosystem and many methods have been sought to speed it up. + +\section{Exponentiation Basics} +A trivial algorithm would simply multiply $a$ against itself $b - 1$ times to compute the exponentiation desired. However, as $b$ grows in size +the number of multiplications becomes prohibitive. Imagine what would happen if $b$ $\approx$ $2^{1024}$ as is the case when computing an RSA signature +with a $1024$-bit key. Such a calculation could never be completed as it would take simply far too long. + +Fortunately there is a very simple algorithm based on the laws of exponents. Recall that $lg_a(a^b) = b$ and that $lg_a(a^ba^c) = b + c$ which +are two trivial relationships between the base and the exponent. Let $b_i$ represent the $i$'th bit of $b$ starting from the least +significant bit. If $b$ is a $k$-bit integer than the following equation is true. + +\begin{equation} +a^b = \prod_{i=0}^{k-1} a^{2^i \cdot b_i} +\end{equation} + +By taking the base $a$ logarithm of both sides of the equation the following equation is the result. + +\begin{equation} +b = \sum_{i=0}^{k-1}2^i \cdot b_i +\end{equation} + +The term $a^{2^i}$ can be found from the $i - 1$'th term by squaring the term since $\left ( a^{2^i} \right )^2$ is equal to +$a^{2^{i+1}}$. This observation forms the basis of essentially all fast exponentiation algorithms. It requires $k$ squarings and on average +$k \over 2$ multiplications to compute the result. This is indeed quite an improvement over simply multiplying by $a$ a total of $b-1$ times. + +While this current method is a considerable speed up there are further improvements to be made. For example, the $a^{2^i}$ term does not need to +be computed in an auxilary variable. Consider the following equivalent algorithm. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Left to Right Exponentiation}. \\ +\textbf{Input}. Integer $a$, $b$ and $k$ \\ +\textbf{Output}. $c = a^b$ \\ +\hline \\ +1. $c \leftarrow 1$ \\ +2. for $i$ from $k - 1$ to $0$ do \\ +\hspace{3mm}2.1 $c \leftarrow c^2$ \\ +\hspace{3mm}2.2 $c \leftarrow c \cdot a^{b_i}$ \\ +3. Return $c$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Left to Right Exponentiation} +\label{fig:LTOR} +\end{figure} + +This algorithm starts from the most significant bit and works towards the least significant bit. When the $i$'th bit of $b$ is set $a$ is +multiplied against the current product. In each iteration the product is squared which doubles the exponent of the individual terms of the +product. + +For example, let $b = 101100_2 \equiv 44_{10}$. The following chart demonstrates the actions of the algorithm. + +\newpage\begin{figure} +\begin{center} +\begin{tabular}{|c|c|} +\hline \textbf{Value of $i$} & \textbf{Value of $c$} \\ +\hline - & $1$ \\ +\hline $5$ & $a$ \\ +\hline $4$ & $a^2$ \\ +\hline $3$ & $a^4 \cdot a$ \\ +\hline $2$ & $a^8 \cdot a^2 \cdot a$ \\ +\hline $1$ & $a^{16} \cdot a^4 \cdot a^2$ \\ +\hline $0$ & $a^{32} \cdot a^8 \cdot a^4$ \\ +\hline +\end{tabular} +\end{center} +\caption{Example of Left to Right Exponentiation} +\end{figure} + +When the product $a^{32} \cdot a^8 \cdot a^4$ is simplified it is equal $a^{44}$ which is the desired exponentiation. This particular algorithm is +called ``Left to Right'' because it reads the exponent in that order. All of the exponentiation algorithms that will be presented are of this nature. + +\subsection{Single Digit Exponentiation} +The first algorithm in the series of exponentiation algorithms will be an unbounded algorithm where the exponent is a single digit. It is intended +to be used when a small power of an input is required (\textit{e.g. $a^5$}). It is faster than simply multiplying $b - 1$ times for all values of +$b$ that are greater than three. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_expt\_d}. \\ +\textbf{Input}. mp\_int $a$ and mp\_digit $b$ \\ +\textbf{Output}. $c = a^b$ \\ +\hline \\ +1. $g \leftarrow a$ (\textit{mp\_init\_copy}) \\ +2. $c \leftarrow 1$ (\textit{mp\_set}) \\ +3. for $x$ from 1 to $lg(\beta)$ do \\ +\hspace{3mm}3.1 $c \leftarrow c^2$ (\textit{mp\_sqr}) \\ +\hspace{3mm}3.2 If $b$ AND $2^{lg(\beta) - 1} \ne 0$ then \\ +\hspace{6mm}3.2.1 $c \leftarrow c \cdot g$ (\textit{mp\_mul}) \\ +\hspace{3mm}3.3 $b \leftarrow b << 1$ \\ +4. Clear $g$. \\ +5. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_expt\_d} +\end{figure} + +\textbf{Algorithm mp\_expt\_d.} +This algorithm computes the value of $a$ raised to the power of a single digit $b$. It uses the left to right exponentiation algorithm to +quickly compute the exponentiation. It is loosely based on algorithm 14.79 of HAC \cite[pp. 615]{HAC} with the difference that the +exponent is a fixed width. + +A copy of $a$ is made first to allow destination variable $c$ be the same as the source variable $a$. The result is set to the initial value of +$1$ in the subsequent step. + +Inside the loop the exponent is read from the most significant bit first down to the least significant bit. First $c$ is invariably squared +on step 3.1. In the following step if the most significant bit of $b$ is one the copy of $a$ is multiplied against $c$. The value +of $b$ is shifted left one bit to make the next bit down from the most signficant bit the new most significant bit. In effect each +iteration of the loop moves the bits of the exponent $b$ upwards to the most significant location. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_expt\_d.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* calculate c = a**b using a square-multiply algorithm */ +018 int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) +019 \{ +020 int res, x; +021 mp_int g; +022 +023 if ((res = mp_init_copy (&g, a)) != MP_OKAY) \{ +024 return res; +025 \} +026 +027 /* set initial result */ +028 mp_set (c, 1); +029 +030 for (x = 0; x < (int) DIGIT_BIT; x++) \{ +031 /* square */ +032 if ((res = mp_sqr (c, c)) != MP_OKAY) \{ +033 mp_clear (&g); +034 return res; +035 \} +036 +037 /* if the bit is set multiply */ +038 if ((b & (mp_digit) (((mp_digit)1) << (DIGIT_BIT - 1))) != 0) \{ +039 if ((res = mp_mul (c, &g, c)) != MP_OKAY) \{ +040 mp_clear (&g); +041 return res; +042 \} +043 \} +044 +045 /* shift to next bit */ +046 b <<= 1; +047 \} +048 +049 mp_clear (&g); +050 return MP_OKAY; +051 \} +052 #endif +\end{alltt} +\end{small} + +Line 28 sets the initial value of the result to $1$. Next the loop on line 30 steps through each bit of the exponent starting from +the most significant down towards the least significant. The invariant squaring operation placed on line 32 is performed first. After +the squaring the result $c$ is multiplied by the base $g$ if and only if the most significant bit of the exponent is set. The shift on line +46 moves all of the bits of the exponent upwards towards the most significant location. + +\section{$k$-ary Exponentiation} +When calculating an exponentiation the most time consuming bottleneck is the multiplications which are in general a small factor +slower than squaring. Recall from the previous algorithm that $b_{i}$ refers to the $i$'th bit of the exponent $b$. Suppose instead it referred to +the $i$'th $k$-bit digit of the exponent of $b$. For $k = 1$ the definitions are synonymous and for $k > 1$ algorithm~\ref{fig:KARY} +computes the same exponentiation. A group of $k$ bits from the exponent is called a \textit{window}. That is it is a small window on only a +portion of the entire exponent. Consider the following modification to the basic left to right exponentiation algorithm. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{$k$-ary Exponentiation}. \\ +\textbf{Input}. Integer $a$, $b$, $k$ and $t$ \\ +\textbf{Output}. $c = a^b$ \\ +\hline \\ +1. $c \leftarrow 1$ \\ +2. for $i$ from $t - 1$ to $0$ do \\ +\hspace{3mm}2.1 $c \leftarrow c^{2^k} $ \\ +\hspace{3mm}2.2 Extract the $i$'th $k$-bit word from $b$ and store it in $g$. \\ +\hspace{3mm}2.3 $c \leftarrow c \cdot a^g$ \\ +3. Return $c$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{$k$-ary Exponentiation} +\label{fig:KARY} +\end{figure} + +The squaring on step 2.1 can be calculated by squaring the value $c$ successively $k$ times. If the values of $a^g$ for $0 < g < 2^k$ have been +precomputed this algorithm requires only $t$ multiplications and $tk$ squarings. The table can be generated with $2^{k - 1} - 1$ squarings and +$2^{k - 1} + 1$ multiplications. This algorithm assumes that the number of bits in the exponent is evenly divisible by $k$. +However, when it is not the remaining $0 < x \le k - 1$ bits can be handled with algorithm~\ref{fig:LTOR}. + +Suppose $k = 4$ and $t = 100$. This modified algorithm will require $109$ multiplications and $408$ squarings to compute the exponentiation. The +original algorithm would on average have required $200$ multiplications and $400$ squrings to compute the same value. The total number of squarings +has increased slightly but the number of multiplications has nearly halved. + +\subsection{Optimal Values of $k$} +An optimal value of $k$ will minimize $2^{k} + \lceil n / k \rceil + n - 1$ for a fixed number of bits in the exponent $n$. The simplest +approach is to brute force search amongst the values $k = 2, 3, \ldots, 8$ for the lowest result. Table~\ref{fig:OPTK} lists optimal values of $k$ +for various exponent sizes and compares the number of multiplication and squarings required against algorithm~\ref{fig:LTOR}. + +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|c|c|c|c|c|c|} +\hline \textbf{Exponent (bits)} & \textbf{Optimal $k$} & \textbf{Work at $k$} & \textbf{Work with ~\ref{fig:LTOR}} \\ +\hline $16$ & $2$ & $27$ & $24$ \\ +\hline $32$ & $3$ & $49$ & $48$ \\ +\hline $64$ & $3$ & $92$ & $96$ \\ +\hline $128$ & $4$ & $175$ & $192$ \\ +\hline $256$ & $4$ & $335$ & $384$ \\ +\hline $512$ & $5$ & $645$ & $768$ \\ +\hline $1024$ & $6$ & $1257$ & $1536$ \\ +\hline $2048$ & $6$ & $2452$ & $3072$ \\ +\hline $4096$ & $7$ & $4808$ & $6144$ \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Optimal Values of $k$ for $k$-ary Exponentiation} +\label{fig:OPTK} +\end{figure} + +\subsection{Sliding-Window Exponentiation} +A simple modification to the previous algorithm is only generate the upper half of the table in the range $2^{k-1} \le g < 2^k$. Essentially +this is a table for all values of $g$ where the most significant bit of $g$ is a one. However, in order for this to be allowed in the +algorithm values of $g$ in the range $0 \le g < 2^{k-1}$ must be avoided. + +Table~\ref{fig:OPTK2} lists optimal values of $k$ for various exponent sizes and compares the work required against algorithm~\ref{fig:KARY}. + +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|c|c|c|c|c|c|} +\hline \textbf{Exponent (bits)} & \textbf{Optimal $k$} & \textbf{Work at $k$} & \textbf{Work with ~\ref{fig:KARY}} \\ +\hline $16$ & $3$ & $24$ & $27$ \\ +\hline $32$ & $3$ & $45$ & $49$ \\ +\hline $64$ & $4$ & $87$ & $92$ \\ +\hline $128$ & $4$ & $167$ & $175$ \\ +\hline $256$ & $5$ & $322$ & $335$ \\ +\hline $512$ & $6$ & $628$ & $645$ \\ +\hline $1024$ & $6$ & $1225$ & $1257$ \\ +\hline $2048$ & $7$ & $2403$ & $2452$ \\ +\hline $4096$ & $8$ & $4735$ & $4808$ \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{Optimal Values of $k$ for Sliding Window Exponentiation} +\label{fig:OPTK2} +\end{figure} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Sliding Window $k$-ary Exponentiation}. \\ +\textbf{Input}. Integer $a$, $b$, $k$ and $t$ \\ +\textbf{Output}. $c = a^b$ \\ +\hline \\ +1. $c \leftarrow 1$ \\ +2. for $i$ from $t - 1$ to $0$ do \\ +\hspace{3mm}2.1 If the $i$'th bit of $b$ is a zero then \\ +\hspace{6mm}2.1.1 $c \leftarrow c^2$ \\ +\hspace{3mm}2.2 else do \\ +\hspace{6mm}2.2.1 $c \leftarrow c^{2^k}$ \\ +\hspace{6mm}2.2.2 Extract the $k$ bits from $(b_{i}b_{i-1}\ldots b_{i-(k-1)})$ and store it in $g$. \\ +\hspace{6mm}2.2.3 $c \leftarrow c \cdot a^g$ \\ +\hspace{6mm}2.2.4 $i \leftarrow i - k$ \\ +3. Return $c$. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Sliding Window $k$-ary Exponentiation} +\end{figure} + +Similar to the previous algorithm this algorithm must have a special handler when fewer than $k$ bits are left in the exponent. While this +algorithm requires the same number of squarings it can potentially have fewer multiplications. The pre-computed table $a^g$ is also half +the size as the previous table. + +Consider the exponent $b = 111101011001000_2 \equiv 31432_{10}$ with $k = 3$ using both algorithms. The first algorithm will divide the exponent up as +the following five $3$-bit words $b \equiv \left ( 111, 101, 011, 001, 000 \right )_{2}$. The second algorithm will break the +exponent as $b \equiv \left ( 111, 101, 0, 110, 0, 100, 0 \right )_{2}$. The single digit $0$ in the second representation are where +a single squaring took place instead of a squaring and multiplication. In total the first method requires $10$ multiplications and $18$ +squarings. The second method requires $8$ multiplications and $18$ squarings. + +In general the sliding window method is never slower than the generic $k$-ary method and often it is slightly faster. + +\section{Modular Exponentiation} + +Modular exponentiation is essentially computing the power of a base within a finite field or ring. For example, computing +$d \equiv a^b \mbox{ (mod }c\mbox{)}$ is a modular exponentiation. Instead of first computing $a^b$ and then reducing it +modulo $c$ the intermediate result is reduced modulo $c$ after every squaring or multiplication operation. + +This guarantees that any intermediate result is bounded by $0 \le d \le c^2 - 2c + 1$ and can be reduced modulo $c$ quickly using +one of the algorithms presented in chapter six. + +Before the actual modular exponentiation algorithm can be written a wrapper algorithm must be written first. This algorithm +will allow the exponent $b$ to be negative which is computed as $c \equiv \left (1 / a \right )^{\vert b \vert} \mbox{(mod }d\mbox{)}$. The +value of $(1/a) \mbox{ mod }c$ is computed using the modular inverse (\textit{see \ref{sec;modinv}}). If no inverse exists the algorithm +terminates with an error. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_exptmod}. \\ +\textbf{Input}. mp\_int $a$, $b$ and $c$ \\ +\textbf{Output}. $y \equiv g^x \mbox{ (mod }p\mbox{)}$ \\ +\hline \\ +1. If $c.sign = MP\_NEG$ return(\textit{MP\_VAL}). \\ +2. If $b.sign = MP\_NEG$ then \\ +\hspace{3mm}2.1 $g' \leftarrow g^{-1} \mbox{ (mod }c\mbox{)}$ \\ +\hspace{3mm}2.2 $x' \leftarrow \vert x \vert$ \\ +\hspace{3mm}2.3 Compute $d \equiv g'^{x'} \mbox{ (mod }c\mbox{)}$ via recursion. \\ +3. if $p$ is odd \textbf{OR} $p$ is a D.R. modulus then \\ +\hspace{3mm}3.1 Compute $y \equiv g^{x} \mbox{ (mod }p\mbox{)}$ via algorithm mp\_exptmod\_fast. \\ +4. else \\ +\hspace{3mm}4.1 Compute $y \equiv g^{x} \mbox{ (mod }p\mbox{)}$ via algorithm s\_mp\_exptmod. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_exptmod} +\end{figure} + +\textbf{Algorithm mp\_exptmod.} +The first algorithm which actually performs modular exponentiation is algorithm s\_mp\_exptmod. It is a sliding window $k$-ary algorithm +which uses Barrett reduction to reduce the product modulo $p$. The second algorithm mp\_exptmod\_fast performs the same operation +except it uses either Montgomery or Diminished Radix reduction. The two latter reduction algorithms are clumped in the same exponentiation +algorithm since their arguments are essentially the same (\textit{two mp\_ints and one mp\_digit}). + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_exptmod.c +\vspace{-3mm} +\begin{alltt} +016 +017 +018 /* this is a shell function that calls either the normal or Montgomery +019 * exptmod functions. Originally the call to the montgomery code was +020 * embedded in the normal function but that wasted alot of stack space +021 * for nothing (since 99% of the time the Montgomery code would be called) +022 */ +023 int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +024 \{ +025 int dr; +026 +027 /* modulus P must be positive */ +028 if (P->sign == MP_NEG) \{ +029 return MP_VAL; +030 \} +031 +032 /* if exponent X is negative we have to recurse */ +033 if (X->sign == MP_NEG) \{ +034 #ifdef BN_MP_INVMOD_C +035 mp_int tmpG, tmpX; +036 int err; +037 +038 /* first compute 1/G mod P */ +039 if ((err = mp_init(&tmpG)) != MP_OKAY) \{ +040 return err; +041 \} +042 if ((err = mp_invmod(G, P, &tmpG)) != MP_OKAY) \{ +043 mp_clear(&tmpG); +044 return err; +045 \} +046 +047 /* now get |X| */ +048 if ((err = mp_init(&tmpX)) != MP_OKAY) \{ +049 mp_clear(&tmpG); +050 return err; +051 \} +052 if ((err = mp_abs(X, &tmpX)) != MP_OKAY) \{ +053 mp_clear_multi(&tmpG, &tmpX, NULL); +054 return err; +055 \} +056 +057 /* and now compute (1/G)**|X| instead of G**X [X < 0] */ +058 err = mp_exptmod(&tmpG, &tmpX, P, Y); +059 mp_clear_multi(&tmpG, &tmpX, NULL); +060 return err; +061 #else +062 /* no invmod */ +063 return MP_VAL; +064 #endif +065 \} +066 +067 #ifdef BN_MP_DR_IS_MODULUS_C +068 /* is it a DR modulus? */ +069 dr = mp_dr_is_modulus(P); +070 #else +071 dr = 0; +072 #endif +073 +074 #ifdef BN_MP_REDUCE_IS_2K_C +075 /* if not, is it a uDR modulus? */ +076 if (dr == 0) \{ +077 dr = mp_reduce_is_2k(P) << 1; +078 \} +079 #endif +080 +081 /* if the modulus is odd or dr != 0 use the fast method */ +082 #ifdef BN_MP_EXPTMOD_FAST_C +083 if (mp_isodd (P) == 1 || dr != 0) \{ +084 return mp_exptmod_fast (G, X, P, Y, dr); +085 \} else \{ +086 #endif +087 #ifdef BN_S_MP_EXPTMOD_C +088 /* otherwise use the generic Barrett reduction technique */ +089 return s_mp_exptmod (G, X, P, Y); +090 #else +091 /* no exptmod for evens */ +092 return MP_VAL; +093 #endif +094 #ifdef BN_MP_EXPTMOD_FAST_C +095 \} +096 #endif +097 \} +098 +099 #endif +\end{alltt} +\end{small} + +In order to keep the algorithms in a known state the first step on line 28 is to reject any negative modulus as input. If the exponent is +negative the algorithm tries to perform a modular exponentiation with the modular inverse of the base $G$. The temporary variable $tmpG$ is assigned +the modular inverse of $G$ and $tmpX$ is assigned the absolute value of $X$. The algorithm will recuse with these new values with a positive +exponent. + +If the exponent is positive the algorithm resumes the exponentiation. Line 69 determines if the modulus is of the restricted Diminished Radix +form. If it is not line 77 attempts to determine if it is of a unrestricted Diminished Radix form. The integer $dr$ will take on one +of three values. + +\begin{enumerate} +\item $dr = 0$ means that the modulus is not of either restricted or unrestricted Diminished Radix form. +\item $dr = 1$ means that the modulus is of restricted Diminished Radix form. +\item $dr = 2$ means that the modulus is of unrestricted Diminished Radix form. +\end{enumerate} + +Line 67 determines if the fast modular exponentiation algorithm can be used. It is allowed if $dr \ne 0$ or if the modulus is odd. Otherwise, +the slower s\_mp\_exptmod algorithm is used which uses Barrett reduction. + +\subsection{Barrett Modular Exponentiation} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_exptmod}. \\ +\textbf{Input}. mp\_int $a$, $b$ and $c$ \\ +\textbf{Output}. $y \equiv g^x \mbox{ (mod }p\mbox{)}$ \\ +\hline \\ +1. $k \leftarrow lg(x)$ \\ +2. $winsize \leftarrow \left \lbrace \begin{array}{ll} + 2 & \mbox{if }k \le 7 \\ + 3 & \mbox{if }7 < k \le 36 \\ + 4 & \mbox{if }36 < k \le 140 \\ + 5 & \mbox{if }140 < k \le 450 \\ + 6 & \mbox{if }450 < k \le 1303 \\ + 7 & \mbox{if }1303 < k \le 3529 \\ + 8 & \mbox{if }3529 < k \\ + \end{array} \right .$ \\ +3. Initialize $2^{winsize}$ mp\_ints in an array named $M$ and one mp\_int named $\mu$ \\ +4. Calculate the $\mu$ required for Barrett Reduction (\textit{mp\_reduce\_setup}). \\ +5. $M_1 \leftarrow g \mbox{ (mod }p\mbox{)}$ \\ +\\ +Setup the table of small powers of $g$. First find $g^{2^{winsize}}$ and then all multiples of it. \\ +6. $k \leftarrow 2^{winsize - 1}$ \\ +7. $M_{k} \leftarrow M_1$ \\ +8. for $ix$ from 0 to $winsize - 2$ do \\ +\hspace{3mm}8.1 $M_k \leftarrow \left ( M_k \right )^2$ (\textit{mp\_sqr}) \\ +\hspace{3mm}8.2 $M_k \leftarrow M_k \mbox{ (mod }p\mbox{)}$ (\textit{mp\_reduce}) \\ +9. for $ix$ from $2^{winsize - 1} + 1$ to $2^{winsize} - 1$ do \\ +\hspace{3mm}9.1 $M_{ix} \leftarrow M_{ix - 1} \cdot M_{1}$ (\textit{mp\_mul}) \\ +\hspace{3mm}9.2 $M_{ix} \leftarrow M_{ix} \mbox{ (mod }p\mbox{)}$ (\textit{mp\_reduce}) \\ +10. $res \leftarrow 1$ \\ +\\ +Start Sliding Window. \\ +11. $mode \leftarrow 0, bitcnt \leftarrow 1, buf \leftarrow 0, digidx \leftarrow x.used - 1, bitcpy \leftarrow 0, bitbuf \leftarrow 0$ \\ +12. Loop \\ +\hspace{3mm}12.1 $bitcnt \leftarrow bitcnt - 1$ \\ +\hspace{3mm}12.2 If $bitcnt = 0$ then do \\ +\hspace{6mm}12.2.1 If $digidx = -1$ goto step 13. \\ +\hspace{6mm}12.2.2 $buf \leftarrow x_{digidx}$ \\ +\hspace{6mm}12.2.3 $digidx \leftarrow digidx - 1$ \\ +\hspace{6mm}12.2.4 $bitcnt \leftarrow lg(\beta)$ \\ +Continued on next page. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm s\_mp\_exptmod} +\end{figure} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{s\_mp\_exptmod} (\textit{continued}). \\ +\textbf{Input}. mp\_int $a$, $b$ and $c$ \\ +\textbf{Output}. $y \equiv g^x \mbox{ (mod }p\mbox{)}$ \\ +\hline \\ +\hspace{3mm}12.3 $y \leftarrow (buf >> (lg(\beta) - 1))$ AND $1$ \\ +\hspace{3mm}12.4 $buf \leftarrow buf << 1$ \\ +\hspace{3mm}12.5 if $mode = 0$ and $y = 0$ then goto step 12. \\ +\hspace{3mm}12.6 if $mode = 1$ and $y = 0$ then do \\ +\hspace{6mm}12.6.1 $res \leftarrow res^2$ \\ +\hspace{6mm}12.6.2 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +\hspace{6mm}12.6.3 Goto step 12. \\ +\hspace{3mm}12.7 $bitcpy \leftarrow bitcpy + 1$ \\ +\hspace{3mm}12.8 $bitbuf \leftarrow bitbuf + (y << (winsize - bitcpy))$ \\ +\hspace{3mm}12.9 $mode \leftarrow 2$ \\ +\hspace{3mm}12.10 If $bitcpy = winsize$ then do \\ +\hspace{6mm}Window is full so perform the squarings and single multiplication. \\ +\hspace{6mm}12.10.1 for $ix$ from $0$ to $winsize -1$ do \\ +\hspace{9mm}12.10.1.1 $res \leftarrow res^2$ \\ +\hspace{9mm}12.10.1.2 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +\hspace{6mm}12.10.2 $res \leftarrow res \cdot M_{bitbuf}$ \\ +\hspace{6mm}12.10.3 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +\hspace{6mm}Reset the window. \\ +\hspace{6mm}12.10.4 $bitcpy \leftarrow 0, bitbuf \leftarrow 0, mode \leftarrow 1$ \\ +\\ +No more windows left. Check for residual bits of exponent. \\ +13. If $mode = 2$ and $bitcpy > 0$ then do \\ +\hspace{3mm}13.1 for $ix$ form $0$ to $bitcpy - 1$ do \\ +\hspace{6mm}13.1.1 $res \leftarrow res^2$ \\ +\hspace{6mm}13.1.2 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +\hspace{6mm}13.1.3 $bitbuf \leftarrow bitbuf << 1$ \\ +\hspace{6mm}13.1.4 If $bitbuf$ AND $2^{winsize} \ne 0$ then do \\ +\hspace{9mm}13.1.4.1 $res \leftarrow res \cdot M_{1}$ \\ +\hspace{9mm}13.1.4.2 $res \leftarrow res \mbox{ (mod }p\mbox{)}$ \\ +14. $y \leftarrow res$ \\ +15. Clear $res$, $mu$ and the $M$ array. \\ +16. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm s\_mp\_exptmod (continued)} +\end{figure} + +\textbf{Algorithm s\_mp\_exptmod.} +This algorithm computes the $x$'th power of $g$ modulo $p$ and stores the result in $y$. It takes advantage of the Barrett reduction +algorithm to keep the product small throughout the algorithm. + +The first two steps determine the optimal window size based on the number of bits in the exponent. The larger the exponent the +larger the window size becomes. After a window size $winsize$ has been chosen an array of $2^{winsize}$ mp\_int variables is allocated. This +table will hold the values of $g^x \mbox{ (mod }p\mbox{)}$ for $2^{winsize - 1} \le x < 2^{winsize}$. + +After the table is allocated the first power of $g$ is found. Since $g \ge p$ is allowed it must be first reduced modulo $p$ to make +the rest of the algorithm more efficient. The first element of the table at $2^{winsize - 1}$ is found by squaring $M_1$ successively $winsize - 2$ +times. The rest of the table elements are found by multiplying the previous element by $M_1$ modulo $p$. + +Now that the table is available the sliding window may begin. The following list describes the functions of all the variables in the window. +\begin{enumerate} +\item The variable $mode$ dictates how the bits of the exponent are interpreted. +\begin{enumerate} + \item When $mode = 0$ the bits are ignored since no non-zero bit of the exponent has been seen yet. For example, if the exponent were simply + $1$ then there would be $lg(\beta) - 1$ zero bits before the first non-zero bit. In this case bits are ignored until a non-zero bit is found. + \item When $mode = 1$ a non-zero bit has been seen before and a new $winsize$-bit window has not been formed yet. In this mode leading $0$ bits + are read and a single squaring is performed. If a non-zero bit is read a new window is created. + \item When $mode = 2$ the algorithm is in the middle of forming a window and new bits are appended to the window from the most significant bit + downwards. +\end{enumerate} +\item The variable $bitcnt$ indicates how many bits are left in the current digit of the exponent left to be read. When it reaches zero a new digit + is fetched from the exponent. +\item The variable $buf$ holds the currently read digit of the exponent. +\item The variable $digidx$ is an index into the exponents digits. It starts at the leading digit $x.used - 1$ and moves towards the trailing digit. +\item The variable $bitcpy$ indicates how many bits are in the currently formed window. When it reaches $winsize$ the window is flushed and + the appropriate operations performed. +\item The variable $bitbuf$ holds the current bits of the window being formed. +\end{enumerate} + +All of step 12 is the window processing loop. It will iterate while there are digits available form the exponent to read. The first step +inside this loop is to extract a new digit if no more bits are available in the current digit. If there are no bits left a new digit is +read and if there are no digits left than the loop terminates. + +After a digit is made available step 12.3 will extract the most significant bit of the current digit and move all other bits in the digit +upwards. In effect the digit is read from most significant bit to least significant bit and since the digits are read from leading to +trailing edges the entire exponent is read from most significant bit to least significant bit. + +At step 12.5 if the $mode$ and currently extracted bit $y$ are both zero the bit is ignored and the next bit is read. This prevents the +algorithm from having to perform trivial squaring and reduction operations before the first non-zero bit is read. Step 12.6 and 12.7-10 handle +the two cases of $mode = 1$ and $mode = 2$ respectively. + +\begin{center} +\begin{figure}[here] +\includegraphics{pics/expt_state.ps} +\caption{Sliding Window State Diagram} +\label{pic:expt_state} +\end{figure} +\end{center} + +By step 13 there are no more digits left in the exponent. However, there may be partial bits in the window left. If $mode = 2$ then +a Left-to-Right algorithm is used to process the remaining few bits. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_s\_mp\_exptmod.c +\vspace{-3mm} +\begin{alltt} +016 +017 #ifdef MP_LOW_MEM +018 #define TAB_SIZE 32 +019 #else +020 #define TAB_SIZE 256 +021 #endif +022 +023 int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +024 \{ +025 mp_int M[TAB_SIZE], res, mu; +026 mp_digit buf; +027 int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; +028 +029 /* find window size */ +030 x = mp_count_bits (X); +031 if (x <= 7) \{ +032 winsize = 2; +033 \} else if (x <= 36) \{ +034 winsize = 3; +035 \} else if (x <= 140) \{ +036 winsize = 4; +037 \} else if (x <= 450) \{ +038 winsize = 5; +039 \} else if (x <= 1303) \{ +040 winsize = 6; +041 \} else if (x <= 3529) \{ +042 winsize = 7; +043 \} else \{ +044 winsize = 8; +045 \} +046 +047 #ifdef MP_LOW_MEM +048 if (winsize > 5) \{ +049 winsize = 5; +050 \} +051 #endif +052 +053 /* init M array */ +054 /* init first cell */ +055 if ((err = mp_init(&M[1])) != MP_OKAY) \{ +056 return err; +057 \} +058 +059 /* now init the second half of the array */ +060 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ +061 if ((err = mp_init(&M[x])) != MP_OKAY) \{ +062 for (y = 1<<(winsize-1); y < x; y++) \{ +063 mp_clear (&M[y]); +064 \} +065 mp_clear(&M[1]); +066 return err; +067 \} +068 \} +069 +070 /* create mu, used for Barrett reduction */ +071 if ((err = mp_init (&mu)) != MP_OKAY) \{ +072 goto LBL_M; +073 \} +074 if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) \{ +075 goto LBL_MU; +076 \} +077 +078 /* create M table +079 * +080 * The M table contains powers of the base, +081 * e.g. M[x] = G**x mod P +082 * +083 * The first half of the table is not +084 * computed though accept for M[0] and M[1] +085 */ +086 if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) \{ +087 goto LBL_MU; +088 \} +089 +090 /* compute the value at M[1<<(winsize-1)] by squaring +091 * M[1] (winsize-1) times +092 */ +093 if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) \{ +094 goto LBL_MU; +095 \} +096 +097 for (x = 0; x < (winsize - 1); x++) \{ +098 if ((err = mp_sqr (&M[1 << (winsize - 1)], +099 &M[1 << (winsize - 1)])) != MP_OKAY) \{ +100 goto LBL_MU; +101 \} +102 if ((err = mp_reduce (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) \{ +103 goto LBL_MU; +104 \} +105 \} +106 +107 /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) +108 * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) +109 */ +110 for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) \{ +111 if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) \{ +112 goto LBL_MU; +113 \} +114 if ((err = mp_reduce (&M[x], P, &mu)) != MP_OKAY) \{ +115 goto LBL_MU; +116 \} +117 \} +118 +119 /* setup result */ +120 if ((err = mp_init (&res)) != MP_OKAY) \{ +121 goto LBL_MU; +122 \} +123 mp_set (&res, 1); +124 +125 /* set initial mode and bit cnt */ +126 mode = 0; +127 bitcnt = 1; +128 buf = 0; +129 digidx = X->used - 1; +130 bitcpy = 0; +131 bitbuf = 0; +132 +133 for (;;) \{ +134 /* grab next digit as required */ +135 if (--bitcnt == 0) \{ +136 /* if digidx == -1 we are out of digits */ +137 if (digidx == -1) \{ +138 break; +139 \} +140 /* read next digit and reset the bitcnt */ +141 buf = X->dp[digidx--]; +142 bitcnt = (int) DIGIT_BIT; +143 \} +144 +145 /* grab the next msb from the exponent */ +146 y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; +147 buf <<= (mp_digit)1; +148 +149 /* if the bit is zero and mode == 0 then we ignore it +150 * These represent the leading zero bits before the first 1 bit +151 * in the exponent. Technically this opt is not required but it +152 * does lower the # of trivial squaring/reductions used +153 */ +154 if (mode == 0 && y == 0) \{ +155 continue; +156 \} +157 +158 /* if the bit is zero and mode == 1 then we square */ +159 if (mode == 1 && y == 0) \{ +160 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +161 goto LBL_RES; +162 \} +163 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ +164 goto LBL_RES; +165 \} +166 continue; +167 \} +168 +169 /* else we add it to the window */ +170 bitbuf |= (y << (winsize - ++bitcpy)); +171 mode = 2; +172 +173 if (bitcpy == winsize) \{ +174 /* ok window is filled so square as required and multiply */ +175 /* square first */ +176 for (x = 0; x < winsize; x++) \{ +177 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +178 goto LBL_RES; +179 \} +180 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ +181 goto LBL_RES; +182 \} +183 \} +184 +185 /* then multiply */ +186 if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) \{ +187 goto LBL_RES; +188 \} +189 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ +190 goto LBL_RES; +191 \} +192 +193 /* empty window and reset */ +194 bitcpy = 0; +195 bitbuf = 0; +196 mode = 1; +197 \} +198 \} +199 +200 /* if bits remain then square/multiply */ +201 if (mode == 2 && bitcpy > 0) \{ +202 /* square then multiply if the bit is set */ +203 for (x = 0; x < bitcpy; x++) \{ +204 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +205 goto LBL_RES; +206 \} +207 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ +208 goto LBL_RES; +209 \} +210 +211 bitbuf <<= 1; +212 if ((bitbuf & (1 << winsize)) != 0) \{ +213 /* then multiply */ +214 if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) \{ +215 goto LBL_RES; +216 \} +217 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ +218 goto LBL_RES; +219 \} +220 \} +221 \} +222 \} +223 +224 mp_exch (&res, Y); +225 err = MP_OKAY; +226 LBL_RES:mp_clear (&res); +227 LBL_MU:mp_clear (&mu); +228 LBL_M: +229 mp_clear(&M[1]); +230 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ +231 mp_clear (&M[x]); +232 \} +233 return err; +234 \} +235 #endif +\end{alltt} +\end{small} + +Lines 31 through 41 determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted +from smallest to greatest so that in each \textbf{if} statement only one condition must be tested. For example, by the \textbf{if} statement +on line 33 the value of $x$ is already known to be greater than $140$. + +The conditional piece of code beginning on line 47 allows the window size to be restricted to five bits. This logic is used to ensure +the table of precomputed powers of $G$ remains relatively small. + +The for loop on line 60 initializes the $M$ array while lines 61 and 74 compute the value of $\mu$ required for +Barrett reduction. + +-- More later. + +\section{Quick Power of Two} +Calculating $b = 2^a$ can be performed much quicker than with any of the previous algorithms. Recall that a logical shift left $m << k$ is +equivalent to $m \cdot 2^k$. By this logic when $m = 1$ a quick power of two can be achieved. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_2expt}. \\ +\textbf{Input}. integer $b$ \\ +\textbf{Output}. $a \leftarrow 2^b$ \\ +\hline \\ +1. $a \leftarrow 0$ \\ +2. If $a.alloc < \lfloor b / lg(\beta) \rfloor + 1$ then grow $a$ appropriately. \\ +3. $a.used \leftarrow \lfloor b / lg(\beta) \rfloor + 1$ \\ +4. $a_{\lfloor b / lg(\beta) \rfloor} \leftarrow 1 << (b \mbox{ mod } lg(\beta))$ \\ +5. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_2expt} +\end{figure} + +\textbf{Algorithm mp\_2expt.} + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_2expt.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* computes a = 2**b +018 * +019 * Simple algorithm which zeroes the int, grows it then just sets one bit +020 * as required. +021 */ +022 int +023 mp_2expt (mp_int * a, int b) +024 \{ +025 int res; +026 +027 /* zero a as per default */ +028 mp_zero (a); +029 +030 /* grow a to accomodate the single bit */ +031 if ((res = mp_grow (a, b / DIGIT_BIT + 1)) != MP_OKAY) \{ +032 return res; +033 \} +034 +035 /* set the used count of where the bit will go */ +036 a->used = b / DIGIT_BIT + 1; +037 +038 /* put the single bit in its place */ +039 a->dp[b / DIGIT_BIT] = ((mp_digit)1) << (b % DIGIT_BIT); +040 +041 return MP_OKAY; +042 \} +043 #endif +\end{alltt} +\end{small} + +\chapter{Higher Level Algorithms} + +This chapter discusses the various higher level algorithms that are required to complete a well rounded multiple precision integer package. These +routines are less performance oriented than the algorithms of chapters five, six and seven but are no less important. + +The first section describes a method of integer division with remainder that is universally well known. It provides the signed division logic +for the package. The subsequent section discusses a set of algorithms which allow a single digit to be the 2nd operand for a variety of operations. +These algorithms serve mostly to simplify other algorithms where small constants are required. The last two sections discuss how to manipulate +various representations of integers. For example, converting from an mp\_int to a string of character. + +\section{Integer Division with Remainder} +\label{sec:division} + +Integer division aside from modular exponentiation is the most intensive algorithm to compute. Like addition, subtraction and multiplication +the basis of this algorithm is the long-hand division algorithm taught to school children. Throughout this discussion several common variables +will be used. Let $x$ represent the divisor and $y$ represent the dividend. Let $q$ represent the integer quotient $\lfloor y / x \rfloor$ and +let $r$ represent the remainder $r = y - x \lfloor y / x \rfloor$. The following simple algorithm will be used to start the discussion. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Radix-$\beta$ Integer Division}. \\ +\textbf{Input}. integer $x$ and $y$ \\ +\textbf{Output}. $q = \lfloor y/x\rfloor, r = y - xq$ \\ +\hline \\ +1. $q \leftarrow 0$ \\ +2. $n \leftarrow \vert \vert y \vert \vert - \vert \vert x \vert \vert$ \\ +3. for $t$ from $n$ down to $0$ do \\ +\hspace{3mm}3.1 Maximize $k$ such that $kx\beta^t$ is less than or equal to $y$ and $(k + 1)x\beta^t$ is greater. \\ +\hspace{3mm}3.2 $q \leftarrow q + k\beta^t$ \\ +\hspace{3mm}3.3 $y \leftarrow y - kx\beta^t$ \\ +4. $r \leftarrow y$ \\ +5. Return($q, r$) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Radix-$\beta$ Integer Division} +\label{fig:raddiv} +\end{figure} + +As children we are taught this very simple algorithm for the case of $\beta = 10$. Almost instinctively several optimizations are taught for which +their reason of existing are never explained. For this example let $y = 5471$ represent the dividend and $x = 23$ represent the divisor. + +To find the first digit of the quotient the value of $k$ must be maximized such that $kx\beta^t$ is less than or equal to $y$ and +simultaneously $(k + 1)x\beta^t$ is greater than $y$. Implicitly $k$ is the maximum value the $t$'th digit of the quotient may have. The habitual method +used to find the maximum is to ``eyeball'' the two numbers, typically only the leading digits and quickly estimate a quotient. By only using leading +digits a much simpler division may be used to form an educated guess at what the value must be. In this case $k = \lfloor 54/23\rfloor = 2$ quickly +arises as a possible solution. Indeed $2x\beta^2 = 4600$ is less than $y = 5471$ and simultaneously $(k + 1)x\beta^2 = 6900$ is larger than $y$. +As a result $k\beta^2$ is added to the quotient which now equals $q = 200$ and $4600$ is subtracted from $y$ to give a remainder of $y = 841$. + +Again this process is repeated to produce the quotient digit $k = 3$ which makes the quotient $q = 200 + 3\beta = 230$ and the remainder +$y = 841 - 3x\beta = 181$. Finally the last iteration of the loop produces $k = 7$ which leads to the quotient $q = 230 + 7 = 237$ and the +remainder $y = 181 - 7x = 20$. The final quotient and remainder found are $q = 237$ and $r = y = 20$ which are indeed correct since +$237 \cdot 23 + 20 = 5471$ is true. + +\subsection{Quotient Estimation} +\label{sec:divest} +As alluded to earlier the quotient digit $k$ can be estimated from only the leading digits of both the divisor and dividend. When $p$ leading +digits are used from both the divisor and dividend to form an estimation the accuracy of the estimation rises as $p$ grows. Technically +speaking the estimation is based on assuming the lower $\vert \vert y \vert \vert - p$ and $\vert \vert x \vert \vert - p$ lower digits of the +dividend and divisor are zero. + +The value of the estimation may off by a few values in either direction and in general is fairly correct. A simplification \cite[pp. 271]{TAOCPV2} +of the estimation technique is to use $t + 1$ digits of the dividend and $t$ digits of the divisor, in particularly when $t = 1$. The estimate +using this technique is never too small. For the following proof let $t = \vert \vert y \vert \vert - 1$ and $s = \vert \vert x \vert \vert - 1$ +represent the most significant digits of the dividend and divisor respectively. + +\textbf{Proof.}\textit{ The quotient $\hat k = \lfloor (y_t\beta + y_{t-1}) / x_s \rfloor$ is greater than or equal to +$k = \lfloor y / (x \cdot \beta^{\vert \vert y \vert \vert - \vert \vert x \vert \vert - 1}) \rfloor$. } +The first obvious case is when $\hat k = \beta - 1$ in which case the proof is concluded since the real quotient cannot be larger. For all other +cases $\hat k = \lfloor (y_t\beta + y_{t-1}) / x_s \rfloor$ and $\hat k x_s \ge y_t\beta + y_{t-1} - x_s + 1$. The latter portion of the inequalility +$-x_s + 1$ arises from the fact that a truncated integer division will give the same quotient for at most $x_s - 1$ values. Next a series of +inequalities will prove the hypothesis. + +\begin{equation} +y - \hat k x \le y - \hat k x_s\beta^s +\end{equation} + +This is trivially true since $x \ge x_s\beta^s$. Next we replace $\hat kx_s\beta^s$ by the previous inequality for $\hat kx_s$. + +\begin{equation} +y - \hat k x \le y_t\beta^t + \ldots + y_0 - (y_t\beta^t + y_{t-1}\beta^{t-1} - x_s\beta^t + \beta^s) +\end{equation} + +By simplifying the previous inequality the following inequality is formed. + +\begin{equation} +y - \hat k x \le y_{t-2}\beta^{t-2} + \ldots + y_0 + x_s\beta^s - \beta^s +\end{equation} + +Subsequently, + +\begin{equation} +y_{t-2}\beta^{t-2} + \ldots + y_0 + x_s\beta^s - \beta^s < x_s\beta^s \le x +\end{equation} + +Which proves that $y - \hat kx \le x$ and by consequence $\hat k \ge k$ which concludes the proof. \textbf{QED} + + +\subsection{Normalized Integers} +For the purposes of division a normalized input is when the divisors leading digit $x_n$ is greater than or equal to $\beta / 2$. By multiplying both +$x$ and $y$ by $j = \lfloor (\beta / 2) / x_n \rfloor$ the quotient remains unchanged and the remainder is simply $j$ times the original +remainder. The purpose of normalization is to ensure the leading digit of the divisor is sufficiently large such that the estimated quotient will +lie in the domain of a single digit. Consider the maximum dividend $(\beta - 1) \cdot \beta + (\beta - 1)$ and the minimum divisor $\beta / 2$. + +\begin{equation} +{{\beta^2 - 1} \over { \beta / 2}} \le 2\beta - {2 \over \beta} +\end{equation} + +At most the quotient approaches $2\beta$, however, in practice this will not occur since that would imply the previous quotient digit was too small. + +\subsection{Radix-$\beta$ Division with Remainder} +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div}. \\ +\textbf{Input}. mp\_int $a, b$ \\ +\textbf{Output}. $c = \lfloor a/b \rfloor$, $d = a - bc$ \\ +\hline \\ +1. If $b = 0$ return(\textit{MP\_VAL}). \\ +2. If $\vert a \vert < \vert b \vert$ then do \\ +\hspace{3mm}2.1 $d \leftarrow a$ \\ +\hspace{3mm}2.2 $c \leftarrow 0$ \\ +\hspace{3mm}2.3 Return(\textit{MP\_OKAY}). \\ +\\ +Setup the quotient to receive the digits. \\ +3. Grow $q$ to $a.used + 2$ digits. \\ +4. $q \leftarrow 0$ \\ +5. $x \leftarrow \vert a \vert , y \leftarrow \vert b \vert$ \\ +6. $sign \leftarrow \left \lbrace \begin{array}{ll} + MP\_ZPOS & \mbox{if }a.sign = b.sign \\ + MP\_NEG & \mbox{otherwise} \\ + \end{array} \right .$ \\ +\\ +Normalize the inputs such that the leading digit of $y$ is greater than or equal to $\beta / 2$. \\ +7. $norm \leftarrow (lg(\beta) - 1) - (\lceil lg(y) \rceil \mbox{ (mod }lg(\beta)\mbox{)})$ \\ +8. $x \leftarrow x \cdot 2^{norm}, y \leftarrow y \cdot 2^{norm}$ \\ +\\ +Find the leading digit of the quotient. \\ +9. $n \leftarrow x.used - 1, t \leftarrow y.used - 1$ \\ +10. $y \leftarrow y \cdot \beta^{n - t}$ \\ +11. While ($x \ge y$) do \\ +\hspace{3mm}11.1 $q_{n - t} \leftarrow q_{n - t} + 1$ \\ +\hspace{3mm}11.2 $x \leftarrow x - y$ \\ +12. $y \leftarrow \lfloor y / \beta^{n-t} \rfloor$ \\ +\\ +Continued on the next page. \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div} +\end{figure} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div} (continued). \\ +\textbf{Input}. mp\_int $a, b$ \\ +\textbf{Output}. $c = \lfloor a/b \rfloor$, $d = a - bc$ \\ +\hline \\ +Now find the remainder fo the digits. \\ +13. for $i$ from $n$ down to $(t + 1)$ do \\ +\hspace{3mm}13.1 If $i > x.used$ then jump to the next iteration of this loop. \\ +\hspace{3mm}13.2 If $x_{i} = y_{t}$ then \\ +\hspace{6mm}13.2.1 $q_{i - t - 1} \leftarrow \beta - 1$ \\ +\hspace{3mm}13.3 else \\ +\hspace{6mm}13.3.1 $\hat r \leftarrow x_{i} \cdot \beta + x_{i - 1}$ \\ +\hspace{6mm}13.3.2 $\hat r \leftarrow \lfloor \hat r / y_{t} \rfloor$ \\ +\hspace{6mm}13.3.3 $q_{i - t - 1} \leftarrow \hat r$ \\ +\hspace{3mm}13.4 $q_{i - t - 1} \leftarrow q_{i - t - 1} + 1$ \\ +\\ +Fixup quotient estimation. \\ +\hspace{3mm}13.5 Loop \\ +\hspace{6mm}13.5.1 $q_{i - t - 1} \leftarrow q_{i - t - 1} - 1$ \\ +\hspace{6mm}13.5.2 t$1 \leftarrow 0$ \\ +\hspace{6mm}13.5.3 t$1_0 \leftarrow y_{t - 1}, $ t$1_1 \leftarrow y_t,$ t$1.used \leftarrow 2$ \\ +\hspace{6mm}13.5.4 $t1 \leftarrow t1 \cdot q_{i - t - 1}$ \\ +\hspace{6mm}13.5.5 t$2_0 \leftarrow x_{i - 2}, $ t$2_1 \leftarrow x_{i - 1}, $ t$2_2 \leftarrow x_i, $ t$2.used \leftarrow 3$ \\ +\hspace{6mm}13.5.6 If $\vert t1 \vert > \vert t2 \vert$ then goto step 13.5. \\ +\hspace{3mm}13.6 t$1 \leftarrow y \cdot q_{i - t - 1}$ \\ +\hspace{3mm}13.7 t$1 \leftarrow $ t$1 \cdot \beta^{i - t - 1}$ \\ +\hspace{3mm}13.8 $x \leftarrow x - $ t$1$ \\ +\hspace{3mm}13.9 If $x.sign = MP\_NEG$ then \\ +\hspace{6mm}13.10 t$1 \leftarrow y$ \\ +\hspace{6mm}13.11 t$1 \leftarrow $ t$1 \cdot \beta^{i - t - 1}$ \\ +\hspace{6mm}13.12 $x \leftarrow x + $ t$1$ \\ +\hspace{6mm}13.13 $q_{i - t - 1} \leftarrow q_{i - t - 1} - 1$ \\ +\\ +Finalize the result. \\ +14. Clamp excess digits of $q$ \\ +15. $c \leftarrow q, c.sign \leftarrow sign$ \\ +16. $x.sign \leftarrow a.sign$ \\ +17. $d \leftarrow \lfloor x / 2^{norm} \rfloor$ \\ +18. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div (continued)} +\end{figure} +\textbf{Algorithm mp\_div.} +This algorithm will calculate quotient and remainder from an integer division given a dividend and divisor. The algorithm is a signed +division and will produce a fully qualified quotient and remainder. + +First the divisor $b$ must be non-zero which is enforced in step one. If the divisor is larger than the dividend than the quotient is implicitly +zero and the remainder is the dividend. + +After the first two trivial cases of inputs are handled the variable $q$ is setup to receive the digits of the quotient. Two unsigned copies of the +divisor $y$ and dividend $x$ are made as well. The core of the division algorithm is an unsigned division and will only work if the values are +positive. Now the two values $x$ and $y$ must be normalized such that the leading digit of $y$ is greater than or equal to $\beta / 2$. +This is performed by shifting both to the left by enough bits to get the desired normalization. + +At this point the division algorithm can begin producing digits of the quotient. Recall that maximum value of the estimation used is +$2\beta - {2 \over \beta}$ which means that a digit of the quotient must be first produced by another means. In this case $y$ is shifted +to the left (\textit{step ten}) so that it has the same number of digits as $x$. The loop on step eleven will subtract multiples of the +shifted copy of $y$ until $x$ is smaller. Since the leading digit of $y$ is greater than or equal to $\beta/2$ this loop will iterate at most two +times to produce the desired leading digit of the quotient. + +Now the remainder of the digits can be produced. The equation $\hat q = \lfloor {{x_i \beta + x_{i-1}}\over y_t} \rfloor$ is used to fairly +accurately approximate the true quotient digit. The estimation can in theory produce an estimation as high as $2\beta - {2 \over \beta}$ but by +induction the upper quotient digit is correct (\textit{as established on step eleven}) and the estimate must be less than $\beta$. + +Recall from section~\ref{sec:divest} that the estimation is never too low but may be too high. The next step of the estimation process is +to refine the estimation. The loop on step 13.5 uses $x_i\beta^2 + x_{i-1}\beta + x_{i-2}$ and $q_{i - t - 1}(y_t\beta + y_{t-1})$ as a higher +order approximation to adjust the quotient digit. + +After both phases of estimation the quotient digit may still be off by a value of one\footnote{This is similar to the error introduced +by optimizing Barrett reduction.}. Steps 13.6 and 13.7 subtract the multiple of the divisor from the dividend (\textit{Similar to step 3.3 of +algorithm~\ref{fig:raddiv}} and then subsequently add a multiple of the divisor if the quotient was too large. + +Now that the quotient has been determine finializing the result is a matter of clamping the quotient, fixing the sizes and de-normalizing the +remainder. An important aspect of this algorithm seemingly overlooked in other descriptions such as that of Algorithm 14.20 HAC \cite[pp. 598]{HAC} +is that when the estimations are being made (\textit{inside the loop on step 13.5}) that the digits $y_{t-1}$, $x_{i-2}$ and $x_{i-1}$ may lie +outside their respective boundaries. For example, if $t = 0$ or $i \le 1$ then the digits would be undefined. In those cases the digits should +respectively be replaced with a zero. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_div.c +\vspace{-3mm} +\begin{alltt} +016 +017 #ifdef BN_MP_DIV_SMALL +018 +019 /* slower bit-bang division... also smaller */ +020 int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d) +021 \{ +022 mp_int ta, tb, tq, q; +023 int res, n, n2; +024 +025 /* is divisor zero ? */ +026 if (mp_iszero (b) == 1) \{ +027 return MP_VAL; +028 \} +029 +030 /* if a < b then q=0, r = a */ +031 if (mp_cmp_mag (a, b) == MP_LT) \{ +032 if (d != NULL) \{ +033 res = mp_copy (a, d); +034 \} else \{ +035 res = MP_OKAY; +036 \} +037 if (c != NULL) \{ +038 mp_zero (c); +039 \} +040 return res; +041 \} +042 +043 /* init our temps */ +044 if ((res = mp_init_multi(&ta, &tb, &tq, &q, NULL) != MP_OKAY)) \{ +045 return res; +046 \} +047 +048 +049 mp_set(&tq, 1); +050 n = mp_count_bits(a) - mp_count_bits(b); +051 if (((res = mp_abs(a, &ta)) != MP_OKAY) || +052 ((res = mp_abs(b, &tb)) != MP_OKAY) || +053 ((res = mp_mul_2d(&tb, n, &tb)) != MP_OKAY) || +054 ((res = mp_mul_2d(&tq, n, &tq)) != MP_OKAY)) \{ +055 goto LBL_ERR; +056 \} +057 +058 while (n-- >= 0) \{ +059 if (mp_cmp(&tb, &ta) != MP_GT) \{ +060 if (((res = mp_sub(&ta, &tb, &ta)) != MP_OKAY) || +061 ((res = mp_add(&q, &tq, &q)) != MP_OKAY)) \{ +062 goto LBL_ERR; +063 \} +064 \} +065 if (((res = mp_div_2d(&tb, 1, &tb, NULL)) != MP_OKAY) || +066 ((res = mp_div_2d(&tq, 1, &tq, NULL)) != MP_OKAY)) \{ +067 goto LBL_ERR; +068 \} +069 \} +070 +071 /* now q == quotient and ta == remainder */ +072 n = a->sign; +073 n2 = (a->sign == b->sign ? MP_ZPOS : MP_NEG); +074 if (c != NULL) \{ +075 mp_exch(c, &q); +076 c->sign = (mp_iszero(c) == MP_YES) ? MP_ZPOS : n2; +077 \} +078 if (d != NULL) \{ +079 mp_exch(d, &ta); +080 d->sign = (mp_iszero(d) == MP_YES) ? MP_ZPOS : n; +081 \} +082 LBL_ERR: +083 mp_clear_multi(&ta, &tb, &tq, &q, NULL); +084 return res; +085 \} +086 +087 #else +088 +089 /* integer signed division. +090 * c*b + d == a [e.g. a/b, c=quotient, d=remainder] +091 * HAC pp.598 Algorithm 14.20 +092 * +093 * Note that the description in HAC is horribly +094 * incomplete. For example, it doesn't consider +095 * the case where digits are removed from 'x' in +096 * the inner loop. It also doesn't consider the +097 * case that y has fewer than three digits, etc.. +098 * +099 * The overall algorithm is as described as +100 * 14.20 from HAC but fixed to treat these cases. +101 */ +102 int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +103 \{ +104 mp_int q, x, y, t1, t2; +105 int res, n, t, i, norm, neg; +106 +107 /* is divisor zero ? */ +108 if (mp_iszero (b) == 1) \{ +109 return MP_VAL; +110 \} +111 +112 /* if a < b then q=0, r = a */ +113 if (mp_cmp_mag (a, b) == MP_LT) \{ +114 if (d != NULL) \{ +115 res = mp_copy (a, d); +116 \} else \{ +117 res = MP_OKAY; +118 \} +119 if (c != NULL) \{ +120 mp_zero (c); +121 \} +122 return res; +123 \} +124 +125 if ((res = mp_init_size (&q, a->used + 2)) != MP_OKAY) \{ +126 return res; +127 \} +128 q.used = a->used + 2; +129 +130 if ((res = mp_init (&t1)) != MP_OKAY) \{ +131 goto LBL_Q; +132 \} +133 +134 if ((res = mp_init (&t2)) != MP_OKAY) \{ +135 goto LBL_T1; +136 \} +137 +138 if ((res = mp_init_copy (&x, a)) != MP_OKAY) \{ +139 goto LBL_T2; +140 \} +141 +142 if ((res = mp_init_copy (&y, b)) != MP_OKAY) \{ +143 goto LBL_X; +144 \} +145 +146 /* fix the sign */ +147 neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; +148 x.sign = y.sign = MP_ZPOS; +149 +150 /* normalize both x and y, ensure that y >= b/2, [b == 2**DIGIT_BIT] */ +151 norm = mp_count_bits(&y) % DIGIT_BIT; +152 if (norm < (int)(DIGIT_BIT-1)) \{ +153 norm = (DIGIT_BIT-1) - norm; +154 if ((res = mp_mul_2d (&x, norm, &x)) != MP_OKAY) \{ +155 goto LBL_Y; +156 \} +157 if ((res = mp_mul_2d (&y, norm, &y)) != MP_OKAY) \{ +158 goto LBL_Y; +159 \} +160 \} else \{ +161 norm = 0; +162 \} +163 +164 /* note hac does 0 based, so if used==5 then its 0,1,2,3,4, e.g. use 4 */ +165 n = x.used - 1; +166 t = y.used - 1; +167 +168 /* while (x >= y*b**n-t) do \{ q[n-t] += 1; x -= y*b**\{n-t\} \} */ +169 if ((res = mp_lshd (&y, n - t)) != MP_OKAY) \{ /* y = y*b**\{n-t\} */ +170 goto LBL_Y; +171 \} +172 +173 while (mp_cmp (&x, &y) != MP_LT) \{ +174 ++(q.dp[n - t]); +175 if ((res = mp_sub (&x, &y, &x)) != MP_OKAY) \{ +176 goto LBL_Y; +177 \} +178 \} +179 +180 /* reset y by shifting it back down */ +181 mp_rshd (&y, n - t); +182 +183 /* step 3. for i from n down to (t + 1) */ +184 for (i = n; i >= (t + 1); i--) \{ +185 if (i > x.used) \{ +186 continue; +187 \} +188 +189 /* step 3.1 if xi == yt then set q\{i-t-1\} to b-1, +190 * otherwise set q\{i-t-1\} to (xi*b + x\{i-1\})/yt */ +191 if (x.dp[i] == y.dp[t]) \{ +192 q.dp[i - t - 1] = ((((mp_digit)1) << DIGIT_BIT) - 1); +193 \} else \{ +194 mp_word tmp; +195 tmp = ((mp_word) x.dp[i]) << ((mp_word) DIGIT_BIT); +196 tmp |= ((mp_word) x.dp[i - 1]); +197 tmp /= ((mp_word) y.dp[t]); +198 if (tmp > (mp_word) MP_MASK) +199 tmp = MP_MASK; +200 q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK)); +201 \} +202 +203 /* while (q\{i-t-1\} * (yt * b + y\{t-1\})) > +204 xi * b**2 + xi-1 * b + xi-2 +205 +206 do q\{i-t-1\} -= 1; +207 */ +208 q.dp[i - t - 1] = (q.dp[i - t - 1] + 1) & MP_MASK; +209 do \{ +210 q.dp[i - t - 1] = (q.dp[i - t - 1] - 1) & MP_MASK; +211 +212 /* find left hand */ +213 mp_zero (&t1); +214 t1.dp[0] = (t - 1 < 0) ? 0 : y.dp[t - 1]; +215 t1.dp[1] = y.dp[t]; +216 t1.used = 2; +217 if ((res = mp_mul_d (&t1, q.dp[i - t - 1], &t1)) != MP_OKAY) \{ +218 goto LBL_Y; +219 \} +220 +221 /* find right hand */ +222 t2.dp[0] = (i - 2 < 0) ? 0 : x.dp[i - 2]; +223 t2.dp[1] = (i - 1 < 0) ? 0 : x.dp[i - 1]; +224 t2.dp[2] = x.dp[i]; +225 t2.used = 3; +226 \} while (mp_cmp_mag(&t1, &t2) == MP_GT); +227 +228 /* step 3.3 x = x - q\{i-t-1\} * y * b**\{i-t-1\} */ +229 if ((res = mp_mul_d (&y, q.dp[i - t - 1], &t1)) != MP_OKAY) \{ +230 goto LBL_Y; +231 \} +232 +233 if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) \{ +234 goto LBL_Y; +235 \} +236 +237 if ((res = mp_sub (&x, &t1, &x)) != MP_OKAY) \{ +238 goto LBL_Y; +239 \} +240 +241 /* if x < 0 then \{ x = x + y*b**\{i-t-1\}; q\{i-t-1\} -= 1; \} */ +242 if (x.sign == MP_NEG) \{ +243 if ((res = mp_copy (&y, &t1)) != MP_OKAY) \{ +244 goto LBL_Y; +245 \} +246 if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) \{ +247 goto LBL_Y; +248 \} +249 if ((res = mp_add (&x, &t1, &x)) != MP_OKAY) \{ +250 goto LBL_Y; +251 \} +252 +253 q.dp[i - t - 1] = (q.dp[i - t - 1] - 1UL) & MP_MASK; +254 \} +255 \} +256 +257 /* now q is the quotient and x is the remainder +258 * [which we have to normalize] +259 */ +260 +261 /* get sign before writing to c */ +262 x.sign = x.used == 0 ? MP_ZPOS : a->sign; +263 +264 if (c != NULL) \{ +265 mp_clamp (&q); +266 mp_exch (&q, c); +267 c->sign = neg; +268 \} +269 +270 if (d != NULL) \{ +271 mp_div_2d (&x, norm, &x, NULL); +272 mp_exch (&x, d); +273 \} +274 +275 res = MP_OKAY; +276 +277 LBL_Y:mp_clear (&y); +278 LBL_X:mp_clear (&x); +279 LBL_T2:mp_clear (&t2); +280 LBL_T1:mp_clear (&t1); +281 LBL_Q:mp_clear (&q); +282 return res; +283 \} +284 +285 #endif +286 +287 #endif +\end{alltt} +\end{small} + +The implementation of this algorithm differs slightly from the pseudo code presented previously. In this algorithm either of the quotient $c$ or +remainder $d$ may be passed as a \textbf{NULL} pointer which indicates their value is not desired. For example, the C code to call the division +algorithm with only the quotient is + +\begin{verbatim} +mp_div(&a, &b, &c, NULL); /* c = [a/b] */ +\end{verbatim} + +Lines 37 and 44 handle the two trivial cases of inputs which are division by zero and dividend smaller than the divisor +respectively. After the two trivial cases all of the temporary variables are initialized. Line 105 determines the sign of +the quotient and line 76 ensures that both $x$ and $y$ are positive. + +The number of bits in the leading digit is calculated on line 105. Implictly an mp\_int with $r$ digits will require $lg(\beta)(r-1) + k$ bits +of precision which when reduced modulo $lg(\beta)$ produces the value of $k$. In this case $k$ is the number of bits in the leading digit which is +exactly what is required. For the algorithm to operate $k$ must equal $lg(\beta) - 1$ and when it does not the inputs must be normalized by shifting +them to the left by $lg(\beta) - 1 - k$ bits. + +Throughout the variables $n$ and $t$ will represent the highest digit of $x$ and $y$ respectively. These are first used to produce the +leading digit of the quotient. The loop beginning on line 183 will produce the remainder of the quotient digits. + +The conditional ``continue'' on line 114 is used to prevent the algorithm from reading past the leading edge of $x$ which can occur when the +algorithm eliminates multiple non-zero digits in a single iteration. This ensures that $x_i$ is always non-zero since by definition the digits +above the $i$'th position $x$ must be zero in order for the quotient to be precise\footnote{Precise as far as integer division is concerned.}. + +Lines 130, 130 and 134 through 134 manually construct the high accuracy estimations by setting the digits of the two mp\_int +variables directly. + +\section{Single Digit Helpers} + +This section briefly describes a series of single digit helper algorithms which come in handy when working with small constants. All of +the helper functions assume the single digit input is positive and will treat them as such. + +\subsection{Single Digit Addition and Subtraction} + +Both addition and subtraction are performed by ``cheating'' and using mp\_set followed by the higher level addition or subtraction +algorithms. As a result these algorithms are subtantially simpler with a slight cost in performance. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_add\_d}. \\ +\textbf{Input}. mp\_int $a$ and a mp\_digit $b$ \\ +\textbf{Output}. $c = a + b$ \\ +\hline \\ +1. $t \leftarrow b$ (\textit{mp\_set}) \\ +2. $c \leftarrow a + t$ \\ +3. Return(\textit{MP\_OKAY}) \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_add\_d} +\end{figure} + +\textbf{Algorithm mp\_add\_d.} +This algorithm initiates a temporary mp\_int with the value of the single digit and uses algorithm mp\_add to add the two values together. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_add\_d.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* single digit addition */ +018 int +019 mp_add_d (mp_int * a, mp_digit b, mp_int * c) +020 \{ +021 int res, ix, oldused; +022 mp_digit *tmpa, *tmpc, mu; +023 +024 /* grow c as required */ +025 if (c->alloc < a->used + 1) \{ +026 if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) \{ +027 return res; +028 \} +029 \} +030 +031 /* if a is negative and |a| >= b, call c = |a| - b */ +032 if (a->sign == MP_NEG && (a->used > 1 || a->dp[0] >= b)) \{ +033 /* temporarily fix sign of a */ +034 a->sign = MP_ZPOS; +035 +036 /* c = |a| - b */ +037 res = mp_sub_d(a, b, c); +038 +039 /* fix sign */ +040 a->sign = c->sign = MP_NEG; +041 +042 return res; +043 \} +044 +045 /* old number of used digits in c */ +046 oldused = c->used; +047 +048 /* sign always positive */ +049 c->sign = MP_ZPOS; +050 +051 /* source alias */ +052 tmpa = a->dp; +053 +054 /* destination alias */ +055 tmpc = c->dp; +056 +057 /* if a is positive */ +058 if (a->sign == MP_ZPOS) \{ +059 /* add digit, after this we're propagating +060 * the carry. +061 */ +062 *tmpc = *tmpa++ + b; +063 mu = *tmpc >> DIGIT_BIT; +064 *tmpc++ &= MP_MASK; +065 +066 /* now handle rest of the digits */ +067 for (ix = 1; ix < a->used; ix++) \{ +068 *tmpc = *tmpa++ + mu; +069 mu = *tmpc >> DIGIT_BIT; +070 *tmpc++ &= MP_MASK; +071 \} +072 /* set final carry */ +073 ix++; +074 *tmpc++ = mu; +075 +076 /* setup size */ +077 c->used = a->used + 1; +078 \} else \{ +079 /* a was negative and |a| < b */ +080 c->used = 1; +081 +082 /* the result is a single digit */ +083 if (a->used == 1) \{ +084 *tmpc++ = b - a->dp[0]; +085 \} else \{ +086 *tmpc++ = b; +087 \} +088 +089 /* setup count so the clearing of oldused +090 * can fall through correctly +091 */ +092 ix = 1; +093 \} +094 +095 /* now zero to oldused */ +096 while (ix++ < oldused) \{ +097 *tmpc++ = 0; +098 \} +099 mp_clamp(c); +100 +101 return MP_OKAY; +102 \} +103 +104 #endif +\end{alltt} +\end{small} + +Clever use of the letter 't'. + +\subsubsection{Subtraction} +The single digit subtraction algorithm mp\_sub\_d is essentially the same except it uses mp\_sub to subtract the digit from the mp\_int. + +\subsection{Single Digit Multiplication} +Single digit multiplication arises enough in division and radix conversion that it ought to be implement as a special case of the baseline +multiplication algorithm. Essentially this algorithm is a modified version of algorithm s\_mp\_mul\_digs where one of the multiplicands +only has one digit. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_mul\_d}. \\ +\textbf{Input}. mp\_int $a$ and a mp\_digit $b$ \\ +\textbf{Output}. $c = ab$ \\ +\hline \\ +1. $pa \leftarrow a.used$ \\ +2. Grow $c$ to at least $pa + 1$ digits. \\ +3. $oldused \leftarrow c.used$ \\ +4. $c.used \leftarrow pa + 1$ \\ +5. $c.sign \leftarrow a.sign$ \\ +6. $\mu \leftarrow 0$ \\ +7. for $ix$ from $0$ to $pa - 1$ do \\ +\hspace{3mm}7.1 $\hat r \leftarrow \mu + a_{ix}b$ \\ +\hspace{3mm}7.2 $c_{ix} \leftarrow \hat r \mbox{ (mod }\beta\mbox{)}$ \\ +\hspace{3mm}7.3 $\mu \leftarrow \lfloor \hat r / \beta \rfloor$ \\ +8. $c_{pa} \leftarrow \mu$ \\ +9. for $ix$ from $pa + 1$ to $oldused$ do \\ +\hspace{3mm}9.1 $c_{ix} \leftarrow 0$ \\ +10. Clamp excess digits of $c$. \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_mul\_d} +\end{figure} +\textbf{Algorithm mp\_mul\_d.} +This algorithm quickly multiplies an mp\_int by a small single digit value. It is specially tailored to the job and has a minimal of overhead. +Unlike the full multiplication algorithms this algorithm does not require any significnat temporary storage or memory allocations. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_mul\_d.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* multiply by a digit */ +018 int +019 mp_mul_d (mp_int * a, mp_digit b, mp_int * c) +020 \{ +021 mp_digit u, *tmpa, *tmpc; +022 mp_word r; +023 int ix, res, olduse; +024 +025 /* make sure c is big enough to hold a*b */ +026 if (c->alloc < a->used + 1) \{ +027 if ((res = mp_grow (c, a->used + 1)) != MP_OKAY) \{ +028 return res; +029 \} +030 \} +031 +032 /* get the original destinations used count */ +033 olduse = c->used; +034 +035 /* set the sign */ +036 c->sign = a->sign; +037 +038 /* alias for a->dp [source] */ +039 tmpa = a->dp; +040 +041 /* alias for c->dp [dest] */ +042 tmpc = c->dp; +043 +044 /* zero carry */ +045 u = 0; +046 +047 /* compute columns */ +048 for (ix = 0; ix < a->used; ix++) \{ +049 /* compute product and carry sum for this term */ +050 r = ((mp_word) u) + ((mp_word)*tmpa++) * ((mp_word)b); +051 +052 /* mask off higher bits to get a single digit */ +053 *tmpc++ = (mp_digit) (r & ((mp_word) MP_MASK)); +054 +055 /* send carry into next iteration */ +056 u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); +057 \} +058 +059 /* store final carry [if any] */ +060 *tmpc++ = u; +061 +062 /* now zero digits above the top */ +063 while (ix++ < olduse) \{ +064 *tmpc++ = 0; +065 \} +066 +067 /* set used count */ +068 c->used = a->used + 1; +069 mp_clamp(c); +070 +071 return MP_OKAY; +072 \} +073 #endif +\end{alltt} +\end{small} + +In this implementation the destination $c$ may point to the same mp\_int as the source $a$ since the result is written after the digit is +read from the source. This function uses pointer aliases $tmpa$ and $tmpc$ for the digits of $a$ and $c$ respectively. + +\subsection{Single Digit Division} +Like the single digit multiplication algorithm, single digit division is also a fairly common algorithm used in radix conversion. Since the +divisor is only a single digit a specialized variant of the division algorithm can be used to compute the quotient. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_div\_d}. \\ +\textbf{Input}. mp\_int $a$ and a mp\_digit $b$ \\ +\textbf{Output}. $c = \lfloor a / b \rfloor, d = a - cb$ \\ +\hline \\ +1. If $b = 0$ then return(\textit{MP\_VAL}).\\ +2. If $b = 3$ then use algorithm mp\_div\_3 instead. \\ +3. Init $q$ to $a.used$ digits. \\ +4. $q.used \leftarrow a.used$ \\ +5. $q.sign \leftarrow a.sign$ \\ +6. $\hat w \leftarrow 0$ \\ +7. for $ix$ from $a.used - 1$ down to $0$ do \\ +\hspace{3mm}7.1 $\hat w \leftarrow \hat w \beta + a_{ix}$ \\ +\hspace{3mm}7.2 If $\hat w \ge b$ then \\ +\hspace{6mm}7.2.1 $t \leftarrow \lfloor \hat w / b \rfloor$ \\ +\hspace{6mm}7.2.2 $\hat w \leftarrow \hat w \mbox{ (mod }b\mbox{)}$ \\ +\hspace{3mm}7.3 else\\ +\hspace{6mm}7.3.1 $t \leftarrow 0$ \\ +\hspace{3mm}7.4 $q_{ix} \leftarrow t$ \\ +8. $d \leftarrow \hat w$ \\ +9. Clamp excess digits of $q$. \\ +10. $c \leftarrow q$ \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_div\_d} +\end{figure} +\textbf{Algorithm mp\_div\_d.} +This algorithm divides the mp\_int $a$ by the single mp\_digit $b$ using an optimized approach. Essentially in every iteration of the +algorithm another digit of the dividend is reduced and another digit of quotient produced. Provided $b < \beta$ the value of $\hat w$ +after step 7.1 will be limited such that $0 \le \lfloor \hat w / b \rfloor < \beta$. + +If the divisor $b$ is equal to three a variant of this algorithm is used which is called mp\_div\_3. It replaces the division by three with +a multiplication by $\lfloor \beta / 3 \rfloor$ and the appropriate shift and residual fixup. In essence it is much like the Barrett reduction +from chapter seven. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_div\_d.c +\vspace{-3mm} +\begin{alltt} +016 +017 static int s_is_power_of_two(mp_digit b, int *p) +018 \{ +019 int x; +020 +021 for (x = 1; x < DIGIT_BIT; x++) \{ +022 if (b == (((mp_digit)1)<dp[0] & ((((mp_digit)1)<used)) != MP_OKAY) \{ +074 return res; +075 \} +076 +077 q.used = a->used; +078 q.sign = a->sign; +079 w = 0; +080 for (ix = a->used - 1; ix >= 0; ix--) \{ +081 w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]); +082 +083 if (w >= b) \{ +084 t = (mp_digit)(w / b); +085 w -= ((mp_word)t) * ((mp_word)b); +086 \} else \{ +087 t = 0; +088 \} +089 q.dp[ix] = (mp_digit)t; +090 \} +091 +092 if (d != NULL) \{ +093 *d = (mp_digit)w; +094 \} +095 +096 if (c != NULL) \{ +097 mp_clamp(&q); +098 mp_exch(&q, c); +099 \} +100 mp_clear(&q); +101 +102 return res; +103 \} +104 +105 #endif +\end{alltt} +\end{small} + +Like the implementation of algorithm mp\_div this algorithm allows either of the quotient or remainder to be passed as a \textbf{NULL} pointer to +indicate the respective value is not required. This allows a trivial single digit modular reduction algorithm, mp\_mod\_d to be created. + +The division and remainder on lines 43 and @45,%@ can be replaced often by a single division on most processors. For example, the 32-bit x86 based +processors can divide a 64-bit quantity by a 32-bit quantity and produce the quotient and remainder simultaneously. Unfortunately the GCC +compiler does not recognize that optimization and will actually produce two function calls to find the quotient and remainder respectively. + +\subsection{Single Digit Root Extraction} + +Finding the $n$'th root of an integer is fairly easy as far as numerical analysis is concerned. Algorithms such as the Newton-Raphson approximation +(\ref{eqn:newton}) series will converge very quickly to a root for any continuous function $f(x)$. + +\begin{equation} +x_{i+1} = x_i - {f(x_i) \over f'(x_i)} +\label{eqn:newton} +\end{equation} + +In this case the $n$'th root is desired and $f(x) = x^n - a$ where $a$ is the integer of which the root is desired. The derivative of $f(x)$ is +simply $f'(x) = nx^{n - 1}$. Of particular importance is that this algorithm will be used over the integers not over the a more continuous domain +such as the real numbers. As a result the root found can be above the true root by few and must be manually adjusted. Ideally at the end of the +algorithm the $n$'th root $b$ of an integer $a$ is desired such that $b^n \le a$. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_n\_root}. \\ +\textbf{Input}. mp\_int $a$ and a mp\_digit $b$ \\ +\textbf{Output}. $c^b \le a$ \\ +\hline \\ +1. If $b$ is even and $a.sign = MP\_NEG$ return(\textit{MP\_VAL}). \\ +2. $sign \leftarrow a.sign$ \\ +3. $a.sign \leftarrow MP\_ZPOS$ \\ +4. t$2 \leftarrow 2$ \\ +5. Loop \\ +\hspace{3mm}5.1 t$1 \leftarrow $ t$2$ \\ +\hspace{3mm}5.2 t$3 \leftarrow $ t$1^{b - 1}$ \\ +\hspace{3mm}5.3 t$2 \leftarrow $ t$3 $ $\cdot$ t$1$ \\ +\hspace{3mm}5.4 t$2 \leftarrow $ t$2 - a$ \\ +\hspace{3mm}5.5 t$3 \leftarrow $ t$3 \cdot b$ \\ +\hspace{3mm}5.6 t$3 \leftarrow \lfloor $t$2 / $t$3 \rfloor$ \\ +\hspace{3mm}5.7 t$2 \leftarrow $ t$1 - $ t$3$ \\ +\hspace{3mm}5.8 If t$1 \ne $ t$2$ then goto step 5. \\ +6. Loop \\ +\hspace{3mm}6.1 t$2 \leftarrow $ t$1^b$ \\ +\hspace{3mm}6.2 If t$2 > a$ then \\ +\hspace{6mm}6.2.1 t$1 \leftarrow $ t$1 - 1$ \\ +\hspace{6mm}6.2.2 Goto step 6. \\ +7. $a.sign \leftarrow sign$ \\ +8. $c \leftarrow $ t$1$ \\ +9. $c.sign \leftarrow sign$ \\ +10. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_n\_root} +\end{figure} +\textbf{Algorithm mp\_n\_root.} +This algorithm finds the integer $n$'th root of an input using the Newton-Raphson approach. It is partially optimized based on the observation +that the numerator of ${f(x) \over f'(x)}$ can be derived from a partial denominator. That is at first the denominator is calculated by finding +$x^{b - 1}$. This value can then be multiplied by $x$ and have $a$ subtracted from it to find the numerator. This saves a total of $b - 1$ +multiplications by t$1$ inside the loop. + +The initial value of the approximation is t$2 = 2$ which allows the algorithm to start with very small values and quickly converge on the +root. Ideally this algorithm is meant to find the $n$'th root of an input where $n$ is bounded by $2 \le n \le 5$. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_n\_root.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* find the n'th root of an integer +018 * +019 * Result found such that (c)**b <= a and (c+1)**b > a +020 * +021 * This algorithm uses Newton's approximation +022 * x[i+1] = x[i] - f(x[i])/f'(x[i]) +023 * which will find the root in log(N) time where +024 * each step involves a fair bit. This is not meant to +025 * find huge roots [square and cube, etc]. +026 */ +027 int mp_n_root (mp_int * a, mp_digit b, mp_int * c) +028 \{ +029 mp_int t1, t2, t3; +030 int res, neg; +031 +032 /* input must be positive if b is even */ +033 if ((b & 1) == 0 && a->sign == MP_NEG) \{ +034 return MP_VAL; +035 \} +036 +037 if ((res = mp_init (&t1)) != MP_OKAY) \{ +038 return res; +039 \} +040 +041 if ((res = mp_init (&t2)) != MP_OKAY) \{ +042 goto LBL_T1; +043 \} +044 +045 if ((res = mp_init (&t3)) != MP_OKAY) \{ +046 goto LBL_T2; +047 \} +048 +049 /* if a is negative fudge the sign but keep track */ +050 neg = a->sign; +051 a->sign = MP_ZPOS; +052 +053 /* t2 = 2 */ +054 mp_set (&t2, 2); +055 +056 do \{ +057 /* t1 = t2 */ +058 if ((res = mp_copy (&t2, &t1)) != MP_OKAY) \{ +059 goto LBL_T3; +060 \} +061 +062 /* t2 = t1 - ((t1**b - a) / (b * t1**(b-1))) */ +063 +064 /* t3 = t1**(b-1) */ +065 if ((res = mp_expt_d (&t1, b - 1, &t3)) != MP_OKAY) \{ +066 goto LBL_T3; +067 \} +068 +069 /* numerator */ +070 /* t2 = t1**b */ +071 if ((res = mp_mul (&t3, &t1, &t2)) != MP_OKAY) \{ +072 goto LBL_T3; +073 \} +074 +075 /* t2 = t1**b - a */ +076 if ((res = mp_sub (&t2, a, &t2)) != MP_OKAY) \{ +077 goto LBL_T3; +078 \} +079 +080 /* denominator */ +081 /* t3 = t1**(b-1) * b */ +082 if ((res = mp_mul_d (&t3, b, &t3)) != MP_OKAY) \{ +083 goto LBL_T3; +084 \} +085 +086 /* t3 = (t1**b - a)/(b * t1**(b-1)) */ +087 if ((res = mp_div (&t2, &t3, &t3, NULL)) != MP_OKAY) \{ +088 goto LBL_T3; +089 \} +090 +091 if ((res = mp_sub (&t1, &t3, &t2)) != MP_OKAY) \{ +092 goto LBL_T3; +093 \} +094 \} while (mp_cmp (&t1, &t2) != MP_EQ); +095 +096 /* result can be off by a few so check */ +097 for (;;) \{ +098 if ((res = mp_expt_d (&t1, b, &t2)) != MP_OKAY) \{ +099 goto LBL_T3; +100 \} +101 +102 if (mp_cmp (&t2, a) == MP_GT) \{ +103 if ((res = mp_sub_d (&t1, 1, &t1)) != MP_OKAY) \{ +104 goto LBL_T3; +105 \} +106 \} else \{ +107 break; +108 \} +109 \} +110 +111 /* reset the sign of a first */ +112 a->sign = neg; +113 +114 /* set the result */ +115 mp_exch (&t1, c); +116 +117 /* set the sign of the result */ +118 c->sign = neg; +119 +120 res = MP_OKAY; +121 +122 LBL_T3:mp_clear (&t3); +123 LBL_T2:mp_clear (&t2); +124 LBL_T1:mp_clear (&t1); +125 return res; +126 \} +127 #endif +\end{alltt} +\end{small} + +\section{Random Number Generation} + +Random numbers come up in a variety of activities from public key cryptography to simple simulations and various randomized algorithms. Pollard-Rho +factoring for example, can make use of random values as starting points to find factors of a composite integer. In this case the algorithm presented +is solely for simulations and not intended for cryptographic use. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_rand}. \\ +\textbf{Input}. An integer $b$ \\ +\textbf{Output}. A pseudo-random number of $b$ digits \\ +\hline \\ +1. $a \leftarrow 0$ \\ +2. If $b \le 0$ return(\textit{MP\_OKAY}) \\ +3. Pick a non-zero random digit $d$. \\ +4. $a \leftarrow a + d$ \\ +5. for $ix$ from 1 to $d - 1$ do \\ +\hspace{3mm}5.1 $a \leftarrow a \cdot \beta$ \\ +\hspace{3mm}5.2 Pick a random digit $d$. \\ +\hspace{3mm}5.3 $a \leftarrow a + d$ \\ +6. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_rand} +\end{figure} +\textbf{Algorithm mp\_rand.} +This algorithm produces a pseudo-random integer of $b$ digits. By ensuring that the first digit is non-zero the algorithm also guarantees that the +final result has at least $b$ digits. It relies heavily on a third-part random number generator which should ideally generate uniformly all of +the integers from $0$ to $\beta - 1$. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_rand.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* makes a pseudo-random int of a given size */ +018 int +019 mp_rand (mp_int * a, int digits) +020 \{ +021 int res; +022 mp_digit d; +023 +024 mp_zero (a); +025 if (digits <= 0) \{ +026 return MP_OKAY; +027 \} +028 +029 /* first place a random non-zero digit */ +030 do \{ +031 d = ((mp_digit) abs (rand ())); +032 \} while (d == 0); +033 +034 if ((res = mp_add_d (a, d, a)) != MP_OKAY) \{ +035 return res; +036 \} +037 +038 while (digits-- > 0) \{ +039 if ((res = mp_lshd (a, 1)) != MP_OKAY) \{ +040 return res; +041 \} +042 +043 if ((res = mp_add_d (a, ((mp_digit) abs (rand ())), a)) != MP_OKAY) \{ +044 return res; +045 \} +046 \} +047 +048 return MP_OKAY; +049 \} +050 #endif +\end{alltt} +\end{small} + +\section{Formatted Representations} +The ability to emit a radix-$n$ textual representation of an integer is useful for interacting with human parties. For example, the ability to +be given a string of characters such as ``114585'' and turn it into the radix-$\beta$ equivalent would make it easier to enter numbers +into a program. + +\subsection{Reading Radix-n Input} +For the purposes of this text we will assume that a simple lower ASCII map (\ref{fig:ASC}) is used for the values of from $0$ to $63$ to +printable characters. For example, when the character ``N'' is read it represents the integer $23$. The first $16$ characters of the +map are for the common representations up to hexadecimal. After that they match the ``base64'' encoding scheme which are suitable chosen +such that they are printable. While outputting as base64 may not be too helpful for human operators it does allow communication via non binary +mediums. + +\newpage\begin{figure}[here] +\begin{center} +\begin{tabular}{cc|cc|cc|cc} +\hline \textbf{Value} & \textbf{Char} & \textbf{Value} & \textbf{Char} & \textbf{Value} & \textbf{Char} & \textbf{Value} & \textbf{Char} \\ +\hline +0 & 0 & 1 & 1 & 2 & 2 & 3 & 3 \\ +4 & 4 & 5 & 5 & 6 & 6 & 7 & 7 \\ +8 & 8 & 9 & 9 & 10 & A & 11 & B \\ +12 & C & 13 & D & 14 & E & 15 & F \\ +16 & G & 17 & H & 18 & I & 19 & J \\ +20 & K & 21 & L & 22 & M & 23 & N \\ +24 & O & 25 & P & 26 & Q & 27 & R \\ +28 & S & 29 & T & 30 & U & 31 & V \\ +32 & W & 33 & X & 34 & Y & 35 & Z \\ +36 & a & 37 & b & 38 & c & 39 & d \\ +40 & e & 41 & f & 42 & g & 43 & h \\ +44 & i & 45 & j & 46 & k & 47 & l \\ +48 & m & 49 & n & 50 & o & 51 & p \\ +52 & q & 53 & r & 54 & s & 55 & t \\ +56 & u & 57 & v & 58 & w & 59 & x \\ +60 & y & 61 & z & 62 & $+$ & 63 & $/$ \\ +\hline +\end{tabular} +\end{center} +\caption{Lower ASCII Map} +\label{fig:ASC} +\end{figure} + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_read\_radix}. \\ +\textbf{Input}. A string $str$ of length $sn$ and radix $r$. \\ +\textbf{Output}. The radix-$\beta$ equivalent mp\_int. \\ +\hline \\ +1. If $r < 2$ or $r > 64$ return(\textit{MP\_VAL}). \\ +2. $ix \leftarrow 0$ \\ +3. If $str_0 =$ ``-'' then do \\ +\hspace{3mm}3.1 $ix \leftarrow ix + 1$ \\ +\hspace{3mm}3.2 $sign \leftarrow MP\_NEG$ \\ +4. else \\ +\hspace{3mm}4.1 $sign \leftarrow MP\_ZPOS$ \\ +5. $a \leftarrow 0$ \\ +6. for $iy$ from $ix$ to $sn - 1$ do \\ +\hspace{3mm}6.1 Let $y$ denote the position in the map of $str_{iy}$. \\ +\hspace{3mm}6.2 If $str_{iy}$ is not in the map or $y \ge r$ then goto step 7. \\ +\hspace{3mm}6.3 $a \leftarrow a \cdot r$ \\ +\hspace{3mm}6.4 $a \leftarrow a + y$ \\ +7. If $a \ne 0$ then $a.sign \leftarrow sign$ \\ +8. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_read\_radix} +\end{figure} +\textbf{Algorithm mp\_read\_radix.} +This algorithm will read an ASCII string and produce the radix-$\beta$ mp\_int representation of the same integer. A minus symbol ``-'' may precede the +string to indicate the value is negative, otherwise it is assumed to be positive. The algorithm will read up to $sn$ characters from the input +and will stop when it reads a character it cannot map the algorithm stops reading characters from the string. This allows numbers to be embedded +as part of larger input without any significant problem. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_read\_radix.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* read a string [ASCII] in a given radix */ +018 int mp_read_radix (mp_int * a, char *str, int radix) +019 \{ +020 int y, res, neg; +021 char ch; +022 +023 /* make sure the radix is ok */ +024 if (radix < 2 || radix > 64) \{ +025 return MP_VAL; +026 \} +027 +028 /* if the leading digit is a +029 * minus set the sign to negative. +030 */ +031 if (*str == '-') \{ +032 ++str; +033 neg = MP_NEG; +034 \} else \{ +035 neg = MP_ZPOS; +036 \} +037 +038 /* set the integer to the default of zero */ +039 mp_zero (a); +040 +041 /* process each digit of the string */ +042 while (*str) \{ +043 /* if the radix < 36 the conversion is case insensitive +044 * this allows numbers like 1AB and 1ab to represent the same value +045 * [e.g. in hex] +046 */ +047 ch = (char) ((radix < 36) ? toupper (*str) : *str); +048 for (y = 0; y < 64; y++) \{ +049 if (ch == mp_s_rmap[y]) \{ +050 break; +051 \} +052 \} +053 +054 /* if the char was found in the map +055 * and is less than the given radix add it +056 * to the number, otherwise exit the loop. +057 */ +058 if (y < radix) \{ +059 if ((res = mp_mul_d (a, (mp_digit) radix, a)) != MP_OKAY) \{ +060 return res; +061 \} +062 if ((res = mp_add_d (a, (mp_digit) y, a)) != MP_OKAY) \{ +063 return res; +064 \} +065 \} else \{ +066 break; +067 \} +068 ++str; +069 \} +070 +071 /* set the sign only if a != 0 */ +072 if (mp_iszero(a) != 1) \{ +073 a->sign = neg; +074 \} +075 return MP_OKAY; +076 \} +077 #endif +\end{alltt} +\end{small} + +\subsection{Generating Radix-$n$ Output} +Generating radix-$n$ output is fairly trivial with a division and remainder algorithm. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_toradix}. \\ +\textbf{Input}. A mp\_int $a$ and an integer $r$\\ +\textbf{Output}. The radix-$r$ representation of $a$ \\ +\hline \\ +1. If $r < 2$ or $r > 64$ return(\textit{MP\_VAL}). \\ +2. If $a = 0$ then $str = $ ``$0$'' and return(\textit{MP\_OKAY}). \\ +3. $t \leftarrow a$ \\ +4. $str \leftarrow$ ``'' \\ +5. if $t.sign = MP\_NEG$ then \\ +\hspace{3mm}5.1 $str \leftarrow str + $ ``-'' \\ +\hspace{3mm}5.2 $t.sign = MP\_ZPOS$ \\ +6. While ($t \ne 0$) do \\ +\hspace{3mm}6.1 $d \leftarrow t \mbox{ (mod }r\mbox{)}$ \\ +\hspace{3mm}6.2 $t \leftarrow \lfloor t / r \rfloor$ \\ +\hspace{3mm}6.3 Look up $d$ in the map and store the equivalent character in $y$. \\ +\hspace{3mm}6.4 $str \leftarrow str + y$ \\ +7. If $str_0 = $``$-$'' then \\ +\hspace{3mm}7.1 Reverse the digits $str_1, str_2, \ldots str_n$. \\ +8. Otherwise \\ +\hspace{3mm}8.1 Reverse the digits $str_0, str_1, \ldots str_n$. \\ +9. Return(\textit{MP\_OKAY}).\\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_toradix} +\end{figure} +\textbf{Algorithm mp\_toradix.} +This algorithm computes the radix-$r$ representation of an mp\_int $a$. The ``digits'' of the representation are extracted by reducing +successive powers of $\lfloor a / r^k \rfloor$ the input modulo $r$ until $r^k > a$. Note that instead of actually dividing by $r^k$ in +each iteration the quotient $\lfloor a / r \rfloor$ is saved for the next iteration. As a result a series of trivial $n \times 1$ divisions +are required instead of a series of $n \times k$ divisions. One design flaw of this approach is that the digits are produced in the reverse order +(see~\ref{fig:mpradix}). To remedy this flaw the digits must be swapped or simply ``reversed''. + +\begin{figure} +\begin{center} +\begin{tabular}{|c|c|c|} +\hline \textbf{Value of $a$} & \textbf{Value of $d$} & \textbf{Value of $str$} \\ +\hline $1234$ & -- & -- \\ +\hline $123$ & $4$ & ``4'' \\ +\hline $12$ & $3$ & ``43'' \\ +\hline $1$ & $2$ & ``432'' \\ +\hline $0$ & $1$ & ``4321'' \\ +\hline +\end{tabular} +\end{center} +\caption{Example of Algorithm mp\_toradix.} +\label{fig:mpradix} +\end{figure} + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_toradix.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* stores a bignum as a ASCII string in a given radix (2..64) */ +018 int mp_toradix (mp_int * a, char *str, int radix) +019 \{ +020 int res, digs; +021 mp_int t; +022 mp_digit d; +023 char *_s = str; +024 +025 /* check range of the radix */ +026 if (radix < 2 || radix > 64) \{ +027 return MP_VAL; +028 \} +029 +030 /* quick out if its zero */ +031 if (mp_iszero(a) == 1) \{ +032 *str++ = '0'; +033 *str = '\symbol{92}0'; +034 return MP_OKAY; +035 \} +036 +037 if ((res = mp_init_copy (&t, a)) != MP_OKAY) \{ +038 return res; +039 \} +040 +041 /* if it is negative output a - */ +042 if (t.sign == MP_NEG) \{ +043 ++_s; +044 *str++ = '-'; +045 t.sign = MP_ZPOS; +046 \} +047 +048 digs = 0; +049 while (mp_iszero (&t) == 0) \{ +050 if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) \{ +051 mp_clear (&t); +052 return res; +053 \} +054 *str++ = mp_s_rmap[d]; +055 ++digs; +056 \} +057 +058 /* reverse the digits of the string. In this case _s points +059 * to the first digit [exluding the sign] of the number] +060 */ +061 bn_reverse ((unsigned char *)_s, digs); +062 +063 /* append a NULL so the string is properly terminated */ +064 *str = '\symbol{92}0'; +065 +066 mp_clear (&t); +067 return MP_OKAY; +068 \} +069 +070 #endif +\end{alltt} +\end{small} + +\chapter{Number Theoretic Algorithms} +This chapter discusses several fundamental number theoretic algorithms such as the greatest common divisor, least common multiple and Jacobi +symbol computation. These algorithms arise as essential components in several key cryptographic algorithms such as the RSA public key algorithm and +various Sieve based factoring algorithms. + +\section{Greatest Common Divisor} +The greatest common divisor of two integers $a$ and $b$, often denoted as $(a, b)$ is the largest integer $k$ that is a proper divisor of +both $a$ and $b$. That is, $k$ is the largest integer such that $0 \equiv a \mbox{ (mod }k\mbox{)}$ and $0 \equiv b \mbox{ (mod }k\mbox{)}$ occur +simultaneously. + +The most common approach (cite) is to reduce one input modulo another. That is if $a$ and $b$ are divisible by some integer $k$ and if $qa + r = b$ then +$r$ is also divisible by $k$. The reduction pattern follows $\left < a , b \right > \rightarrow \left < b, a \mbox{ mod } b \right >$. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Greatest Common Divisor (I)}. \\ +\textbf{Input}. Two positive integers $a$ and $b$ greater than zero. \\ +\textbf{Output}. The greatest common divisor $(a, b)$. \\ +\hline \\ +1. While ($b > 0$) do \\ +\hspace{3mm}1.1 $r \leftarrow a \mbox{ (mod }b\mbox{)}$ \\ +\hspace{3mm}1.2 $a \leftarrow b$ \\ +\hspace{3mm}1.3 $b \leftarrow r$ \\ +2. Return($a$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Greatest Common Divisor (I)} +\label{fig:gcd1} +\end{figure} + +This algorithm will quickly converge on the greatest common divisor since the residue $r$ tends diminish rapidly. However, divisions are +relatively expensive operations to perform and should ideally be avoided. There is another approach based on a similar relationship of +greatest common divisors. The faster approach is based on the observation that if $k$ divides both $a$ and $b$ it will also divide $a - b$. +In particular, we would like $a - b$ to decrease in magnitude which implies that $b \ge a$. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Greatest Common Divisor (II)}. \\ +\textbf{Input}. Two positive integers $a$ and $b$ greater than zero. \\ +\textbf{Output}. The greatest common divisor $(a, b)$. \\ +\hline \\ +1. While ($b > 0$) do \\ +\hspace{3mm}1.1 Swap $a$ and $b$ such that $a$ is the smallest of the two. \\ +\hspace{3mm}1.2 $b \leftarrow b - a$ \\ +2. Return($a$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Greatest Common Divisor (II)} +\label{fig:gcd2} +\end{figure} + +\textbf{Proof} \textit{Algorithm~\ref{fig:gcd2} will return the greatest common divisor of $a$ and $b$.} +The algorithm in figure~\ref{fig:gcd2} will eventually terminate since $b \ge a$ the subtraction in step 1.2 will be a value less than $b$. In other +words in every iteration that tuple $\left < a, b \right >$ decrease in magnitude until eventually $a = b$. Since both $a$ and $b$ are always +divisible by the greatest common divisor (\textit{until the last iteration}) and in the last iteration of the algorithm $b = 0$, therefore, in the +second to last iteration of the algorithm $b = a$ and clearly $(a, a) = a$ which concludes the proof. \textbf{QED}. + +As a matter of practicality algorithm \ref{fig:gcd1} decreases far too slowly to be useful. Specially if $b$ is much larger than $a$ such that +$b - a$ is still very much larger than $a$. A simple addition to the algorithm is to divide $b - a$ by a power of some integer $p$ which does +not divide the greatest common divisor but will divide $b - a$. In this case ${b - a} \over p$ is also an integer and still divisible by +the greatest common divisor. + +However, instead of factoring $b - a$ to find a suitable value of $p$ the powers of $p$ can be removed from $a$ and $b$ that are in common first. +Then inside the loop whenever $b - a$ is divisible by some power of $p$ it can be safely removed. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{Greatest Common Divisor (III)}. \\ +\textbf{Input}. Two positive integers $a$ and $b$ greater than zero. \\ +\textbf{Output}. The greatest common divisor $(a, b)$. \\ +\hline \\ +1. $k \leftarrow 0$ \\ +2. While $a$ and $b$ are both divisible by $p$ do \\ +\hspace{3mm}2.1 $a \leftarrow \lfloor a / p \rfloor$ \\ +\hspace{3mm}2.2 $b \leftarrow \lfloor b / p \rfloor$ \\ +\hspace{3mm}2.3 $k \leftarrow k + 1$ \\ +3. While $a$ is divisible by $p$ do \\ +\hspace{3mm}3.1 $a \leftarrow \lfloor a / p \rfloor$ \\ +4. While $b$ is divisible by $p$ do \\ +\hspace{3mm}4.1 $b \leftarrow \lfloor b / p \rfloor$ \\ +5. While ($b > 0$) do \\ +\hspace{3mm}5.1 Swap $a$ and $b$ such that $a$ is the smallest of the two. \\ +\hspace{3mm}5.2 $b \leftarrow b - a$ \\ +\hspace{3mm}5.3 While $b$ is divisible by $p$ do \\ +\hspace{6mm}5.3.1 $b \leftarrow \lfloor b / p \rfloor$ \\ +6. Return($a \cdot p^k$). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm Greatest Common Divisor (III)} +\label{fig:gcd3} +\end{figure} + +This algorithm is based on the first except it removes powers of $p$ first and inside the main loop to ensure the tuple $\left < a, b \right >$ +decreases more rapidly. The first loop on step two removes powers of $p$ that are in common. A count, $k$, is kept which will present a common +divisor of $p^k$. After step two the remaining common divisor of $a$ and $b$ cannot be divisible by $p$. This means that $p$ can be safely +divided out of the difference $b - a$ so long as the division leaves no remainder. + +In particular the value of $p$ should be chosen such that the division on step 5.3.1 occur often. It also helps that division by $p$ be easy +to compute. The ideal choice of $p$ is two since division by two amounts to a right logical shift. Another important observation is that by +step five both $a$ and $b$ are odd. Therefore, the diffrence $b - a$ must be even which means that each iteration removes one bit from the +largest of the pair. + +\subsection{Complete Greatest Common Divisor} +The algorithms presented so far cannot handle inputs which are zero or negative. The following algorithm can handle all input cases properly +and will produce the greatest common divisor. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_gcd}. \\ +\textbf{Input}. mp\_int $a$ and $b$ \\ +\textbf{Output}. The greatest common divisor $c = (a, b)$. \\ +\hline \\ +1. If $a = 0$ and $b \ne 0$ then \\ +\hspace{3mm}1.1 $c \leftarrow b$ \\ +\hspace{3mm}1.2 Return(\textit{MP\_OKAY}). \\ +2. If $a \ne 0$ and $b = 0$ then \\ +\hspace{3mm}2.1 $c \leftarrow a$ \\ +\hspace{3mm}2.2 Return(\textit{MP\_OKAY}). \\ +3. If $a = b = 0$ then \\ +\hspace{3mm}3.1 $c \leftarrow 1$ \\ +\hspace{3mm}3.2 Return(\textit{MP\_OKAY}). \\ +4. $u \leftarrow \vert a \vert, v \leftarrow \vert b \vert$ \\ +5. $k \leftarrow 0$ \\ +6. While $u.used > 0$ and $v.used > 0$ and $u_0 \equiv v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}6.1 $k \leftarrow k + 1$ \\ +\hspace{3mm}6.2 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +\hspace{3mm}6.3 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +7. While $u.used > 0$ and $u_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}7.1 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +8. While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}8.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +9. While $v.used > 0$ \\ +\hspace{3mm}9.1 If $\vert u \vert > \vert v \vert$ then \\ +\hspace{6mm}9.1.1 Swap $u$ and $v$. \\ +\hspace{3mm}9.2 $v \leftarrow \vert v \vert - \vert u \vert$ \\ +\hspace{3mm}9.3 While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{6mm}9.3.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +10. $c \leftarrow u \cdot 2^k$ \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_gcd} +\end{figure} +\textbf{Algorithm mp\_gcd.} +This algorithm will produce the greatest common divisor of two mp\_ints $a$ and $b$. The algorithm was originally based on Algorithm B of +Knuth \cite[pp. 338]{TAOCPV2} but has been modified to be simpler to explain. In theory it achieves the same asymptotic working time as +Algorithm B and in practice this appears to be true. + +The first three steps handle the cases where either one of or both inputs are zero. If either input is zero the greatest common divisor is the +largest input or zero if they are both zero. If the inputs are not trivial than $u$ and $v$ are assigned the absolute values of +$a$ and $b$ respectively and the algorithm will proceed to reduce the pair. + +Step six will divide out any common factors of two and keep track of the count in the variable $k$. After this step two is no longer a +factor of the remaining greatest common divisor between $u$ and $v$ and can be safely evenly divided out of either whenever they are even. Step +seven and eight ensure that the $u$ and $v$ respectively have no more factors of two. At most only one of the while loops will iterate since +they cannot both be even. + +By step nine both of $u$ and $v$ are odd which is required for the inner logic. First the pair are swapped such that $v$ is equal to +or greater than $u$. This ensures that the subtraction on step 9.2 will always produce a positive and even result. Step 9.3 removes any +factors of two from the difference $u$ to ensure that in the next iteration of the loop both are once again odd. + +After $v = 0$ occurs the variable $u$ has the greatest common divisor of the pair $\left < u, v \right >$ just after step six. The result +must be adjusted by multiplying by the common factors of two ($2^k$) removed earlier. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_gcd.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* Greatest Common Divisor using the binary method */ +018 int mp_gcd (mp_int * a, mp_int * b, mp_int * c) +019 \{ +020 mp_int u, v; +021 int k, u_lsb, v_lsb, res; +022 +023 /* either zero than gcd is the largest */ +024 if (mp_iszero (a) == 1 && mp_iszero (b) == 0) \{ +025 return mp_abs (b, c); +026 \} +027 if (mp_iszero (a) == 0 && mp_iszero (b) == 1) \{ +028 return mp_abs (a, c); +029 \} +030 +031 /* optimized. At this point if a == 0 then +032 * b must equal zero too +033 */ +034 if (mp_iszero (a) == 1) \{ +035 mp_zero(c); +036 return MP_OKAY; +037 \} +038 +039 /* get copies of a and b we can modify */ +040 if ((res = mp_init_copy (&u, a)) != MP_OKAY) \{ +041 return res; +042 \} +043 +044 if ((res = mp_init_copy (&v, b)) != MP_OKAY) \{ +045 goto LBL_U; +046 \} +047 +048 /* must be positive for the remainder of the algorithm */ +049 u.sign = v.sign = MP_ZPOS; +050 +051 /* B1. Find the common power of two for u and v */ +052 u_lsb = mp_cnt_lsb(&u); +053 v_lsb = mp_cnt_lsb(&v); +054 k = MIN(u_lsb, v_lsb); +055 +056 if (k > 0) \{ +057 /* divide the power of two out */ +058 if ((res = mp_div_2d(&u, k, &u, NULL)) != MP_OKAY) \{ +059 goto LBL_V; +060 \} +061 +062 if ((res = mp_div_2d(&v, k, &v, NULL)) != MP_OKAY) \{ +063 goto LBL_V; +064 \} +065 \} +066 +067 /* divide any remaining factors of two out */ +068 if (u_lsb != k) \{ +069 if ((res = mp_div_2d(&u, u_lsb - k, &u, NULL)) != MP_OKAY) \{ +070 goto LBL_V; +071 \} +072 \} +073 +074 if (v_lsb != k) \{ +075 if ((res = mp_div_2d(&v, v_lsb - k, &v, NULL)) != MP_OKAY) \{ +076 goto LBL_V; +077 \} +078 \} +079 +080 while (mp_iszero(&v) == 0) \{ +081 /* make sure v is the largest */ +082 if (mp_cmp_mag(&u, &v) == MP_GT) \{ +083 /* swap u and v to make sure v is >= u */ +084 mp_exch(&u, &v); +085 \} +086 +087 /* subtract smallest from largest */ +088 if ((res = s_mp_sub(&v, &u, &v)) != MP_OKAY) \{ +089 goto LBL_V; +090 \} +091 +092 /* Divide out all factors of two */ +093 if ((res = mp_div_2d(&v, mp_cnt_lsb(&v), &v, NULL)) != MP_OKAY) \{ +094 goto LBL_V; +095 \} +096 \} +097 +098 /* multiply by 2**k which we divided out at the beginning */ +099 if ((res = mp_mul_2d (&u, k, c)) != MP_OKAY) \{ +100 goto LBL_V; +101 \} +102 c->sign = MP_ZPOS; +103 res = MP_OKAY; +104 LBL_V:mp_clear (&u); +105 LBL_U:mp_clear (&v); +106 return res; +107 \} +108 #endif +\end{alltt} +\end{small} + +This function makes use of the macros mp\_iszero and mp\_iseven. The former evaluates to $1$ if the input mp\_int is equivalent to the +integer zero otherwise it evaluates to $0$. The latter evaluates to $1$ if the input mp\_int represents a non-zero even integer otherwise +it evaluates to $0$. Note that just because mp\_iseven may evaluate to $0$ does not mean the input is odd, it could also be zero. The three +trivial cases of inputs are handled on lines 24 through 37. After those lines the inputs are assumed to be non-zero. + +Lines 34 and 40 make local copies $u$ and $v$ of the inputs $a$ and $b$ respectively. At this point the common factors of two +must be divided out of the two inputs. The while loop on line 80 iterates so long as both are even. The local integer $k$ is used to +keep track of how many factors of $2$ are pulled out of both values. It is assumed that the number of factors will not exceed the maximum +value of a C ``int'' data type\footnote{Strictly speaking no array in C may have more than entries than are accessible by an ``int'' so this is not +a limitation.}. + +At this point there are no more common factors of two in the two values. The while loops on lines 80 and 80 remove any independent +factors of two such that both $u$ and $v$ are guaranteed to be an odd integer before hitting the main body of the algorithm. The while loop +on line 80 performs the reduction of the pair until $v$ is equal to zero. The unsigned comparison and subtraction algorithms are used in +place of the full signed routines since both values are guaranteed to be positive and the result of the subtraction is guaranteed to be non-negative. + +\section{Least Common Multiple} +The least common multiple of a pair of integers is their product divided by their greatest common divisor. For two integers $a$ and $b$ the +least common multiple is normally denoted as $[ a, b ]$ and numerically equivalent to ${ab} \over {(a, b)}$. For example, if $a = 2 \cdot 2 \cdot 3 = 12$ +and $b = 2 \cdot 3 \cdot 3 \cdot 7 = 126$ the least common multiple is ${126 \over {(12, 126)}} = {126 \over 6} = 21$. + +The least common multiple arises often in coding theory as well as number theory. If two functions have periods of $a$ and $b$ respectively they will +collide, that is be in synchronous states, after only $[ a, b ]$ iterations. This is why, for example, random number generators based on +Linear Feedback Shift Registers (LFSR) tend to use registers with periods which are co-prime (\textit{e.g. the greatest common divisor is one.}). +Similarly in number theory if a composite $n$ has two prime factors $p$ and $q$ then maximal order of any unit of $\Z/n\Z$ will be $[ p - 1, q - 1] $. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_lcm}. \\ +\textbf{Input}. mp\_int $a$ and $b$ \\ +\textbf{Output}. The least common multiple $c = [a, b]$. \\ +\hline \\ +1. $c \leftarrow (a, b)$ \\ +2. $t \leftarrow a \cdot b$ \\ +3. $c \leftarrow \lfloor t / c \rfloor$ \\ +4. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_lcm} +\end{figure} +\textbf{Algorithm mp\_lcm.} +This algorithm computes the least common multiple of two mp\_int inputs $a$ and $b$. It computes the least common multiple directly by +dividing the product of the two inputs by their greatest common divisor. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_lcm.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* computes least common multiple as |a*b|/(a, b) */ +018 int mp_lcm (mp_int * a, mp_int * b, mp_int * c) +019 \{ +020 int res; +021 mp_int t1, t2; +022 +023 +024 if ((res = mp_init_multi (&t1, &t2, NULL)) != MP_OKAY) \{ +025 return res; +026 \} +027 +028 /* t1 = get the GCD of the two inputs */ +029 if ((res = mp_gcd (a, b, &t1)) != MP_OKAY) \{ +030 goto LBL_T; +031 \} +032 +033 /* divide the smallest by the GCD */ +034 if (mp_cmp_mag(a, b) == MP_LT) \{ +035 /* store quotient in t2 such that t2 * b is the LCM */ +036 if ((res = mp_div(a, &t1, &t2, NULL)) != MP_OKAY) \{ +037 goto LBL_T; +038 \} +039 res = mp_mul(b, &t2, c); +040 \} else \{ +041 /* store quotient in t2 such that t2 * a is the LCM */ +042 if ((res = mp_div(b, &t1, &t2, NULL)) != MP_OKAY) \{ +043 goto LBL_T; +044 \} +045 res = mp_mul(a, &t2, c); +046 \} +047 +048 /* fix the sign to positive */ +049 c->sign = MP_ZPOS; +050 +051 LBL_T: +052 mp_clear_multi (&t1, &t2, NULL); +053 return res; +054 \} +055 #endif +\end{alltt} +\end{small} + +\section{Jacobi Symbol Computation} +To explain the Jacobi Symbol we shall first discuss the Legendre function\footnote{Arrg. What is the name of this?} off which the Jacobi symbol is +defined. The Legendre function computes whether or not an integer $a$ is a quadratic residue modulo an odd prime $p$. Numerically it is +equivalent to equation \ref{eqn:legendre}. + +\begin{equation} +a^{(p-1)/2} \equiv \begin{array}{rl} + -1 & \mbox{if }a\mbox{ is a quadratic non-residue.} \\ + 0 & \mbox{if }a\mbox{ divides }p\mbox{.} \\ + 1 & \mbox{if }a\mbox{ is a quadratic residue}. + \end{array} \mbox{ (mod }p\mbox{)} +\label{eqn:legendre} +\end{equation} + +\textbf{Proof.} \textit{Equation \ref{eqn:legendre} correctly identifies the residue status of an integer $a$ modulo a prime $p$.} +An integer $a$ is a quadratic residue if the following equation has a solution. + +\begin{equation} +x^2 \equiv a \mbox{ (mod }p\mbox{)} +\label{eqn:root} +\end{equation} + +Consider the following equation. + +\begin{equation} +0 \equiv x^{p-1} - 1 \equiv \left \lbrace \left (x^2 \right )^{(p-1)/2} - a^{(p-1)/2} \right \rbrace + \left ( a^{(p-1)/2} - 1 \right ) \mbox{ (mod }p\mbox{)} +\label{eqn:rooti} +\end{equation} + +Whether equation \ref{eqn:root} has a solution or not equation \ref{eqn:rooti} is always true. If $a^{(p-1)/2} - 1 \equiv 0 \mbox{ (mod }p\mbox{)}$ +then the quantity in the braces must be zero. By reduction, + +\begin{eqnarray} +\left (x^2 \right )^{(p-1)/2} - a^{(p-1)/2} \equiv 0 \nonumber \\ +\left (x^2 \right )^{(p-1)/2} \equiv a^{(p-1)/2} \nonumber \\ +x^2 \equiv a \mbox{ (mod }p\mbox{)} +\end{eqnarray} + +As a result there must be a solution to the quadratic equation and in turn $a$ must be a quadratic residue. If $a$ does not divide $p$ and $a$ +is not a quadratic residue then the only other value $a^{(p-1)/2}$ may be congruent to is $-1$ since +\begin{equation} +0 \equiv a^{p - 1} - 1 \equiv (a^{(p-1)/2} + 1)(a^{(p-1)/2} - 1) \mbox{ (mod }p\mbox{)} +\end{equation} +One of the terms on the right hand side must be zero. \textbf{QED} + +\subsection{Jacobi Symbol} +The Jacobi symbol is a generalization of the Legendre function for any odd non prime moduli $p$ greater than 2. If $p = \prod_{i=0}^n p_i$ then +the Jacobi symbol $\left ( { a \over p } \right )$ is equal to the following equation. + +\begin{equation} +\left ( { a \over p } \right ) = \left ( { a \over p_0} \right ) \left ( { a \over p_1} \right ) \ldots \left ( { a \over p_n} \right ) +\end{equation} + +By inspection if $p$ is prime the Jacobi symbol is equivalent to the Legendre function. The following facts\footnote{See HAC \cite[pp. 72-74]{HAC} for +further details.} will be used to derive an efficient Jacobi symbol algorithm. Where $p$ is an odd integer greater than two and $a, b \in \Z$ the +following are true. + +\begin{enumerate} +\item $\left ( { a \over p} \right )$ equals $-1$, $0$ or $1$. +\item $\left ( { ab \over p} \right ) = \left ( { a \over p} \right )\left ( { b \over p} \right )$. +\item If $a \equiv b$ then $\left ( { a \over p} \right ) = \left ( { b \over p} \right )$. +\item $\left ( { 2 \over p} \right )$ equals $1$ if $p \equiv 1$ or $7 \mbox{ (mod }8\mbox{)}$. Otherwise, it equals $-1$. +\item $\left ( { a \over p} \right ) \equiv \left ( { p \over a} \right ) \cdot (-1)^{(p-1)(a-1)/4}$. More specifically +$\left ( { a \over p} \right ) = \left ( { p \over a} \right )$ if $p \equiv a \equiv 1 \mbox{ (mod }4\mbox{)}$. +\end{enumerate} + +Using these facts if $a = 2^k \cdot a'$ then + +\begin{eqnarray} +\left ( { a \over p } \right ) = \left ( {{2^k} \over p } \right ) \left ( {a' \over p} \right ) \nonumber \\ + = \left ( {2 \over p } \right )^k \left ( {a' \over p} \right ) +\label{eqn:jacobi} +\end{eqnarray} + +By fact five, + +\begin{equation} +\left ( { a \over p } \right ) = \left ( { p \over a } \right ) \cdot (-1)^{(p-1)(a-1)/4} +\end{equation} + +Subsequently by fact three since $p \equiv (p \mbox{ mod }a) \mbox{ (mod }a\mbox{)}$ then + +\begin{equation} +\left ( { a \over p } \right ) = \left ( { {p \mbox{ mod } a} \over a } \right ) \cdot (-1)^{(p-1)(a-1)/4} +\end{equation} + +By putting both observations into equation \ref{eqn:jacobi} the following simplified equation is formed. + +\begin{equation} +\left ( { a \over p } \right ) = \left ( {2 \over p } \right )^k \left ( {{p\mbox{ mod }a'} \over a'} \right ) \cdot (-1)^{(p-1)(a'-1)/4} +\end{equation} + +The value of $\left ( {{p \mbox{ mod }a'} \over a'} \right )$ can be found by using the same equation recursively. The value of +$\left ( {2 \over p } \right )^k$ equals $1$ if $k$ is even otherwise it equals $\left ( {2 \over p } \right )$. Using this approach the +factors of $p$ do not have to be known. Furthermore, if $(a, p) = 1$ then the algorithm will terminate when the recursion requests the +Jacobi symbol computation of $\left ( {1 \over a'} \right )$ which is simply $1$. + +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_jacobi}. \\ +\textbf{Input}. mp\_int $a$ and $p$, $a \ge 0$, $p \ge 3$, $p \equiv 1 \mbox{ (mod }2\mbox{)}$ \\ +\textbf{Output}. The Jacobi symbol $c = \left ( {a \over p } \right )$. \\ +\hline \\ +1. If $a = 0$ then \\ +\hspace{3mm}1.1 $c \leftarrow 0$ \\ +\hspace{3mm}1.2 Return(\textit{MP\_OKAY}). \\ +2. If $a = 1$ then \\ +\hspace{3mm}2.1 $c \leftarrow 1$ \\ +\hspace{3mm}2.2 Return(\textit{MP\_OKAY}). \\ +3. $a' \leftarrow a$ \\ +4. $k \leftarrow 0$ \\ +5. While $a'.used > 0$ and $a'_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}5.1 $k \leftarrow k + 1$ \\ +\hspace{3mm}5.2 $a' \leftarrow \lfloor a' / 2 \rfloor$ \\ +6. If $k \equiv 0 \mbox{ (mod }2\mbox{)}$ then \\ +\hspace{3mm}6.1 $s \leftarrow 1$ \\ +7. else \\ +\hspace{3mm}7.1 $r \leftarrow p_0 \mbox{ (mod }8\mbox{)}$ \\ +\hspace{3mm}7.2 If $r = 1$ or $r = 7$ then \\ +\hspace{6mm}7.2.1 $s \leftarrow 1$ \\ +\hspace{3mm}7.3 else \\ +\hspace{6mm}7.3.1 $s \leftarrow -1$ \\ +8. If $p_0 \equiv a'_0 \equiv 3 \mbox{ (mod }4\mbox{)}$ then \\ +\hspace{3mm}8.1 $s \leftarrow -s$ \\ +9. If $a' \ne 1$ then \\ +\hspace{3mm}9.1 $p' \leftarrow p \mbox{ (mod }a'\mbox{)}$ \\ +\hspace{3mm}9.2 $s \leftarrow s \cdot \mbox{mp\_jacobi}(p', a')$ \\ +10. $c \leftarrow s$ \\ +11. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_jacobi} +\end{figure} +\textbf{Algorithm mp\_jacobi.} +This algorithm computes the Jacobi symbol for an arbitrary positive integer $a$ with respect to an odd integer $p$ greater than three. The algorithm +is based on algorithm 2.149 of HAC \cite[pp. 73]{HAC}. + +Step numbers one and two handle the trivial cases of $a = 0$ and $a = 1$ respectively. Step five determines the number of two factors in the +input $a$. If $k$ is even than the term $\left ( { 2 \over p } \right )^k$ must always evaluate to one. If $k$ is odd than the term evaluates to one +if $p_0$ is congruent to one or seven modulo eight, otherwise it evaluates to $-1$. After the the $\left ( { 2 \over p } \right )^k$ term is handled +the $(-1)^{(p-1)(a'-1)/4}$ is computed and multiplied against the current product $s$. The latter term evaluates to one if both $p$ and $a'$ +are congruent to one modulo four, otherwise it evaluates to negative one. + +By step nine if $a'$ does not equal one a recursion is required. Step 9.1 computes $p' \equiv p \mbox{ (mod }a'\mbox{)}$ and will recurse to compute +$\left ( {p' \over a'} \right )$ which is multiplied against the current Jacobi product. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_jacobi.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* computes the jacobi c = (a | n) (or Legendre if n is prime) +018 * HAC pp. 73 Algorithm 2.149 +019 */ +020 int mp_jacobi (mp_int * a, mp_int * p, int *c) +021 \{ +022 mp_int a1, p1; +023 int k, s, r, res; +024 mp_digit residue; +025 +026 /* if p <= 0 return MP_VAL */ +027 if (mp_cmp_d(p, 0) != MP_GT) \{ +028 return MP_VAL; +029 \} +030 +031 /* step 1. if a == 0, return 0 */ +032 if (mp_iszero (a) == 1) \{ +033 *c = 0; +034 return MP_OKAY; +035 \} +036 +037 /* step 2. if a == 1, return 1 */ +038 if (mp_cmp_d (a, 1) == MP_EQ) \{ +039 *c = 1; +040 return MP_OKAY; +041 \} +042 +043 /* default */ +044 s = 0; +045 +046 /* step 3. write a = a1 * 2**k */ +047 if ((res = mp_init_copy (&a1, a)) != MP_OKAY) \{ +048 return res; +049 \} +050 +051 if ((res = mp_init (&p1)) != MP_OKAY) \{ +052 goto LBL_A1; +053 \} +054 +055 /* divide out larger power of two */ +056 k = mp_cnt_lsb(&a1); +057 if ((res = mp_div_2d(&a1, k, &a1, NULL)) != MP_OKAY) \{ +058 goto LBL_P1; +059 \} +060 +061 /* step 4. if e is even set s=1 */ +062 if ((k & 1) == 0) \{ +063 s = 1; +064 \} else \{ +065 /* else set s=1 if p = 1/7 (mod 8) or s=-1 if p = 3/5 (mod 8) */ +066 residue = p->dp[0] & 7; +067 +068 if (residue == 1 || residue == 7) \{ +069 s = 1; +070 \} else if (residue == 3 || residue == 5) \{ +071 s = -1; +072 \} +073 \} +074 +075 /* step 5. if p == 3 (mod 4) *and* a1 == 3 (mod 4) then s = -s */ +076 if ( ((p->dp[0] & 3) == 3) && ((a1.dp[0] & 3) == 3)) \{ +077 s = -s; +078 \} +079 +080 /* if a1 == 1 we're done */ +081 if (mp_cmp_d (&a1, 1) == MP_EQ) \{ +082 *c = s; +083 \} else \{ +084 /* n1 = n mod a1 */ +085 if ((res = mp_mod (p, &a1, &p1)) != MP_OKAY) \{ +086 goto LBL_P1; +087 \} +088 if ((res = mp_jacobi (&p1, &a1, &r)) != MP_OKAY) \{ +089 goto LBL_P1; +090 \} +091 *c = s * r; +092 \} +093 +094 /* done */ +095 res = MP_OKAY; +096 LBL_P1:mp_clear (&p1); +097 LBL_A1:mp_clear (&a1); +098 return res; +099 \} +100 #endif +\end{alltt} +\end{small} + +As a matter of practicality the variable $a'$ as per the pseudo-code is reprensented by the variable $a1$ since the $'$ symbol is not valid for a C +variable name character. + +The two simple cases of $a = 0$ and $a = 1$ are handled at the very beginning to simplify the algorithm. If the input is non-trivial the algorithm +has to proceed compute the Jacobi. The variable $s$ is used to hold the current Jacobi product. Note that $s$ is merely a C ``int'' data type since +the values it may obtain are merely $-1$, $0$ and $1$. + +After a local copy of $a$ is made all of the factors of two are divided out and the total stored in $k$. Technically only the least significant +bit of $k$ is required, however, it makes the algorithm simpler to follow to perform an addition. In practice an exclusive-or and addition have the same +processor requirements and neither is faster than the other. + +Line 61 through 70 determines the value of $\left ( { 2 \over p } \right )^k$. If the least significant bit of $k$ is zero than +$k$ is even and the value is one. Otherwise, the value of $s$ depends on which residue class $p$ belongs to modulo eight. The value of +$(-1)^{(p-1)(a'-1)/4}$ is compute and multiplied against $s$ on lines 75 through 73. + +Finally, if $a1$ does not equal one the algorithm must recurse and compute $\left ( {p' \over a'} \right )$. + +\textit{-- Comment about default $s$ and such...} + +\section{Modular Inverse} +\label{sec:modinv} +The modular inverse of a number actually refers to the modular multiplicative inverse. Essentially for any integer $a$ such that $(a, p) = 1$ there +exist another integer $b$ such that $ab \equiv 1 \mbox{ (mod }p\mbox{)}$. The integer $b$ is called the multiplicative inverse of $a$ which is +denoted as $b = a^{-1}$. Technically speaking modular inversion is a well defined operation for any finite ring or field not just for rings and +fields of integers. However, the former will be the matter of discussion. + +The simplest approach is to compute the algebraic inverse of the input. That is to compute $b \equiv a^{\Phi(p) - 1}$. If $\Phi(p)$ is the +order of the multiplicative subgroup modulo $p$ then $b$ must be the multiplicative inverse of $a$. The proof of which is trivial. + +\begin{equation} +ab \equiv a \left (a^{\Phi(p) - 1} \right ) \equiv a^{\Phi(p)} \equiv a^0 \equiv 1 \mbox{ (mod }p\mbox{)} +\end{equation} + +However, as simple as this approach may be it has two serious flaws. It requires that the value of $\Phi(p)$ be known which if $p$ is composite +requires all of the prime factors. This approach also is very slow as the size of $p$ grows. + +A simpler approach is based on the observation that solving for the multiplicative inverse is equivalent to solving the linear +Diophantine\footnote{See LeVeque \cite[pp. 40-43]{LeVeque} for more information.} equation. + +\begin{equation} +ab + pq = 1 +\end{equation} + +Where $a$, $b$, $p$ and $q$ are all integers. If such a pair of integers $ \left < b, q \right >$ exist than $b$ is the multiplicative inverse of +$a$ modulo $p$. The extended Euclidean algorithm (Knuth \cite[pp. 342]{TAOCPV2}) can be used to solve such equations provided $(a, p) = 1$. +However, instead of using that algorithm directly a variant known as the binary Extended Euclidean algorithm will be used in its place. The +binary approach is very similar to the binary greatest common divisor algorithm except it will produce a full solution to the Diophantine +equation. + +\subsection{General Case} +\newpage\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_invmod}. \\ +\textbf{Input}. mp\_int $a$ and $b$, $(a, b) = 1$, $p \ge 2$, $0 < a < p$. \\ +\textbf{Output}. The modular inverse $c \equiv a^{-1} \mbox{ (mod }b\mbox{)}$. \\ +\hline \\ +1. If $b \le 0$ then return(\textit{MP\_VAL}). \\ +2. If $b_0 \equiv 1 \mbox{ (mod }2\mbox{)}$ then use algorithm fast\_mp\_invmod. \\ +3. $x \leftarrow \vert a \vert, y \leftarrow b$ \\ +4. If $x_0 \equiv y_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ then return(\textit{MP\_VAL}). \\ +5. $B \leftarrow 0, C \leftarrow 0, A \leftarrow 1, D \leftarrow 1$ \\ +6. While $u.used > 0$ and $u_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}6.1 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +\hspace{3mm}6.2 If ($A.used > 0$ and $A_0 \equiv 1 \mbox{ (mod }2\mbox{)}$) or ($B.used > 0$ and $B_0 \equiv 1 \mbox{ (mod }2\mbox{)}$) then \\ +\hspace{6mm}6.2.1 $A \leftarrow A + y$ \\ +\hspace{6mm}6.2.2 $B \leftarrow B - x$ \\ +\hspace{3mm}6.3 $A \leftarrow \lfloor A / 2 \rfloor$ \\ +\hspace{3mm}6.4 $B \leftarrow \lfloor B / 2 \rfloor$ \\ +7. While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}7.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +\hspace{3mm}7.2 If ($C.used > 0$ and $C_0 \equiv 1 \mbox{ (mod }2\mbox{)}$) or ($D.used > 0$ and $D_0 \equiv 1 \mbox{ (mod }2\mbox{)}$) then \\ +\hspace{6mm}7.2.1 $C \leftarrow C + y$ \\ +\hspace{6mm}7.2.2 $D \leftarrow D - x$ \\ +\hspace{3mm}7.3 $C \leftarrow \lfloor C / 2 \rfloor$ \\ +\hspace{3mm}7.4 $D \leftarrow \lfloor D / 2 \rfloor$ \\ +8. If $u \ge v$ then \\ +\hspace{3mm}8.1 $u \leftarrow u - v$ \\ +\hspace{3mm}8.2 $A \leftarrow A - C$ \\ +\hspace{3mm}8.3 $B \leftarrow B - D$ \\ +9. else \\ +\hspace{3mm}9.1 $v \leftarrow v - u$ \\ +\hspace{3mm}9.2 $C \leftarrow C - A$ \\ +\hspace{3mm}9.3 $D \leftarrow D - B$ \\ +10. If $u \ne 0$ goto step 6. \\ +11. If $v \ne 1$ return(\textit{MP\_VAL}). \\ +12. While $C \le 0$ do \\ +\hspace{3mm}12.1 $C \leftarrow C + b$ \\ +13. While $C \ge b$ do \\ +\hspace{3mm}13.1 $C \leftarrow C - b$ \\ +14. $c \leftarrow C$ \\ +15. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\end{figure} +\textbf{Algorithm mp\_invmod.} +This algorithm computes the modular multiplicative inverse of an integer $a$ modulo an integer $b$. This algorithm is a variation of the +extended binary Euclidean algorithm from HAC \cite[pp. 608]{HAC}. It has been modified to only compute the modular inverse and not a complete +Diophantine solution. + +If $b \le 0$ than the modulus is invalid and MP\_VAL is returned. Similarly if both $a$ and $b$ are even then there cannot be a multiplicative +inverse for $a$ and the error is reported. + +The astute reader will observe that steps seven through nine are very similar to the binary greatest common divisor algorithm mp\_gcd. In this case +the other variables to the Diophantine equation are solved. The algorithm terminates when $u = 0$ in which case the solution is + +\begin{equation} +Ca + Db = v +\end{equation} + +If $v$, the greatest common divisor of $a$ and $b$ is not equal to one then the algorithm will report an error as no inverse exists. Otherwise, $C$ +is the modular inverse of $a$. The actual value of $C$ is congruent to, but not necessarily equal to, the ideal modular inverse which should lie +within $1 \le a^{-1} < b$. Step numbers twelve and thirteen adjust the inverse until it is in range. If the original input $a$ is within $0 < a < p$ +then only a couple of additions or subtractions will be required to adjust the inverse. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_invmod.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* hac 14.61, pp608 */ +018 int mp_invmod (mp_int * a, mp_int * b, mp_int * c) +019 \{ +020 /* b cannot be negative */ +021 if (b->sign == MP_NEG || mp_iszero(b) == 1) \{ +022 return MP_VAL; +023 \} +024 +025 #ifdef BN_FAST_MP_INVMOD_C +026 /* if the modulus is odd we can use a faster routine instead */ +027 if (mp_isodd (b) == 1) \{ +028 return fast_mp_invmod (a, b, c); +029 \} +030 #endif +031 +032 #ifdef BN_MP_INVMOD_SLOW_C +033 return mp_invmod_slow(a, b, c); +034 #endif +035 +036 return MP_VAL; +037 \} +038 #endif +\end{alltt} +\end{small} + +\subsubsection{Odd Moduli} + +When the modulus $b$ is odd the variables $A$ and $C$ are fixed and are not required to compute the inverse. In particular by attempting to solve +the Diophantine $Cb + Da = 1$ only $B$ and $D$ are required to find the inverse of $a$. + +The algorithm fast\_mp\_invmod is a direct adaptation of algorithm mp\_invmod with all all steps involving either $A$ or $C$ removed. This +optimization will halve the time required to compute the modular inverse. + +\section{Primality Tests} + +A non-zero integer $a$ is said to be prime if it is not divisible by any other integer excluding one and itself. For example, $a = 7$ is prime +since the integers $2 \ldots 6$ do not evenly divide $a$. By contrast, $a = 6$ is not prime since $a = 6 = 2 \cdot 3$. + +Prime numbers arise in cryptography considerably as they allow finite fields to be formed. The ability to determine whether an integer is prime or +not quickly has been a viable subject in cryptography and number theory for considerable time. The algorithms that will be presented are all +probablistic algorithms in that when they report an integer is composite it must be composite. However, when the algorithms report an integer is +prime the algorithm may be incorrect. + +As will be discussed it is possible to limit the probability of error so well that for practical purposes the probablity of error might as +well be zero. For the purposes of these discussions let $n$ represent the candidate integer of which the primality is in question. + +\subsection{Trial Division} + +Trial division means to attempt to evenly divide a candidate integer by small prime integers. If the candidate can be evenly divided it obviously +cannot be prime. By dividing by all primes $1 < p \le \sqrt{n}$ this test can actually prove whether an integer is prime. However, such a test +would require a prohibitive amount of time as $n$ grows. + +Instead of dividing by every prime, a smaller, more mangeable set of primes may be used instead. By performing trial division with only a subset +of the primes less than $\sqrt{n} + 1$ the algorithm cannot prove if a candidate is prime. However, often it can prove a candidate is not prime. + +The benefit of this test is that trial division by small values is fairly efficient. Specially compared to the other algorithms that will be +discussed shortly. The probability that this approach correctly identifies a composite candidate when tested with all primes upto $q$ is given by +$1 - {1.12 \over ln(q)}$. The graph (\ref{pic:primality}, will be added later) demonstrates the probability of success for the range +$3 \le q \le 100$. + +At approximately $q = 30$ the gain of performing further tests diminishes fairly quickly. At $q = 90$ further testing is generally not going to +be of any practical use. In the case of LibTomMath the default limit $q = 256$ was chosen since it is not too high and will eliminate +approximately $80\%$ of all candidate integers. The constant \textbf{PRIME\_SIZE} is equal to the number of primes in the test base. The +array \_\_prime\_tab is an array of the first \textbf{PRIME\_SIZE} prime numbers. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_prime\_is\_divisible}. \\ +\textbf{Input}. mp\_int $a$ \\ +\textbf{Output}. $c = 1$ if $n$ is divisible by a small prime, otherwise $c = 0$. \\ +\hline \\ +1. for $ix$ from $0$ to $PRIME\_SIZE$ do \\ +\hspace{3mm}1.1 $d \leftarrow n \mbox{ (mod }\_\_prime\_tab_{ix}\mbox{)}$ \\ +\hspace{3mm}1.2 If $d = 0$ then \\ +\hspace{6mm}1.2.1 $c \leftarrow 1$ \\ +\hspace{6mm}1.2.2 Return(\textit{MP\_OKAY}). \\ +2. $c \leftarrow 0$ \\ +3. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_prime\_is\_divisible} +\end{figure} +\textbf{Algorithm mp\_prime\_is\_divisible.} +This algorithm attempts to determine if a candidate integer $n$ is composite by performing trial divisions. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_prime\_is\_divisible.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* determines if an integers is divisible by one +018 * of the first PRIME_SIZE primes or not +019 * +020 * sets result to 0 if not, 1 if yes +021 */ +022 int mp_prime_is_divisible (mp_int * a, int *result) +023 \{ +024 int err, ix; +025 mp_digit res; +026 +027 /* default to not */ +028 *result = MP_NO; +029 +030 for (ix = 0; ix < PRIME_SIZE; ix++) \{ +031 /* what is a mod LBL_prime_tab[ix] */ +032 if ((err = mp_mod_d (a, ltm_prime_tab[ix], &res)) != MP_OKAY) \{ +033 return err; +034 \} +035 +036 /* is the residue zero? */ +037 if (res == 0) \{ +038 *result = MP_YES; +039 return MP_OKAY; +040 \} +041 \} +042 +043 return MP_OKAY; +044 \} +045 #endif +\end{alltt} +\end{small} + +The algorithm defaults to a return of $0$ in case an error occurs. The values in the prime table are all specified to be in the range of a +mp\_digit. The table \_\_prime\_tab is defined in the following file. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_prime\_tab.c +\vspace{-3mm} +\begin{alltt} +016 const mp_digit ltm_prime_tab[] = \{ +017 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, +018 0x0017, 0x001D, 0x001F, 0x0025, 0x0029, 0x002B, 0x002F, 0x0035, +019 0x003B, 0x003D, 0x0043, 0x0047, 0x0049, 0x004F, 0x0053, 0x0059, +020 0x0061, 0x0065, 0x0067, 0x006B, 0x006D, 0x0071, 0x007F, +021 #ifndef MP_8BIT +022 0x0083, +023 0x0089, 0x008B, 0x0095, 0x0097, 0x009D, 0x00A3, 0x00A7, 0x00AD, +024 0x00B3, 0x00B5, 0x00BF, 0x00C1, 0x00C5, 0x00C7, 0x00D3, 0x00DF, +025 0x00E3, 0x00E5, 0x00E9, 0x00EF, 0x00F1, 0x00FB, 0x0101, 0x0107, +026 0x010D, 0x010F, 0x0115, 0x0119, 0x011B, 0x0125, 0x0133, 0x0137, +027 +028 0x0139, 0x013D, 0x014B, 0x0151, 0x015B, 0x015D, 0x0161, 0x0167, +029 0x016F, 0x0175, 0x017B, 0x017F, 0x0185, 0x018D, 0x0191, 0x0199, +030 0x01A3, 0x01A5, 0x01AF, 0x01B1, 0x01B7, 0x01BB, 0x01C1, 0x01C9, +031 0x01CD, 0x01CF, 0x01D3, 0x01DF, 0x01E7, 0x01EB, 0x01F3, 0x01F7, +032 0x01FD, 0x0209, 0x020B, 0x021D, 0x0223, 0x022D, 0x0233, 0x0239, +033 0x023B, 0x0241, 0x024B, 0x0251, 0x0257, 0x0259, 0x025F, 0x0265, +034 0x0269, 0x026B, 0x0277, 0x0281, 0x0283, 0x0287, 0x028D, 0x0293, +035 0x0295, 0x02A1, 0x02A5, 0x02AB, 0x02B3, 0x02BD, 0x02C5, 0x02CF, +036 +037 0x02D7, 0x02DD, 0x02E3, 0x02E7, 0x02EF, 0x02F5, 0x02F9, 0x0301, +038 0x0305, 0x0313, 0x031D, 0x0329, 0x032B, 0x0335, 0x0337, 0x033B, +039 0x033D, 0x0347, 0x0355, 0x0359, 0x035B, 0x035F, 0x036D, 0x0371, +040 0x0373, 0x0377, 0x038B, 0x038F, 0x0397, 0x03A1, 0x03A9, 0x03AD, +041 0x03B3, 0x03B9, 0x03C7, 0x03CB, 0x03D1, 0x03D7, 0x03DF, 0x03E5, +042 0x03F1, 0x03F5, 0x03FB, 0x03FD, 0x0407, 0x0409, 0x040F, 0x0419, +043 0x041B, 0x0425, 0x0427, 0x042D, 0x043F, 0x0443, 0x0445, 0x0449, +044 0x044F, 0x0455, 0x045D, 0x0463, 0x0469, 0x047F, 0x0481, 0x048B, +045 +046 0x0493, 0x049D, 0x04A3, 0x04A9, 0x04B1, 0x04BD, 0x04C1, 0x04C7, +047 0x04CD, 0x04CF, 0x04D5, 0x04E1, 0x04EB, 0x04FD, 0x04FF, 0x0503, +048 0x0509, 0x050B, 0x0511, 0x0515, 0x0517, 0x051B, 0x0527, 0x0529, +049 0x052F, 0x0551, 0x0557, 0x055D, 0x0565, 0x0577, 0x0581, 0x058F, +050 0x0593, 0x0595, 0x0599, 0x059F, 0x05A7, 0x05AB, 0x05AD, 0x05B3, +051 0x05BF, 0x05C9, 0x05CB, 0x05CF, 0x05D1, 0x05D5, 0x05DB, 0x05E7, +052 0x05F3, 0x05FB, 0x0607, 0x060D, 0x0611, 0x0617, 0x061F, 0x0623, +053 0x062B, 0x062F, 0x063D, 0x0641, 0x0647, 0x0649, 0x064D, 0x0653 +054 #endif +055 \}; +056 #endif +\end{alltt} +\end{small} + +Note that there are two possible tables. When an mp\_digit is 7-bits long only the primes upto $127$ may be included, otherwise the primes +upto $1619$ are used. Note that the value of \textbf{PRIME\_SIZE} is a constant dependent on the size of a mp\_digit. + +\subsection{The Fermat Test} +The Fermat test is probably one the oldest tests to have a non-trivial probability of success. It is based on the fact that if $n$ is in +fact prime then $a^{n} \equiv a \mbox{ (mod }n\mbox{)}$ for all $0 < a < n$. The reason being that if $n$ is prime than the order of +the multiplicative sub group is $n - 1$. Any base $a$ must have an order which divides $n - 1$ and as such $a^n$ is equivalent to +$a^1 = a$. + +If $n$ is composite then any given base $a$ does not have to have a period which divides $n - 1$. In which case +it is possible that $a^n \nequiv a \mbox{ (mod }n\mbox{)}$. However, this test is not absolute as it is possible that the order +of a base will divide $n - 1$ which would then be reported as prime. Such a base yields what is known as a Fermat pseudo-prime. Several +integers known as Carmichael numbers will be a pseudo-prime to all valid bases. Fortunately such numbers are extremely rare as $n$ grows +in size. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_prime\_fermat}. \\ +\textbf{Input}. mp\_int $a$ and $b$, $a \ge 2$, $0 < b < a$. \\ +\textbf{Output}. $c = 1$ if $b^a \equiv b \mbox{ (mod }a\mbox{)}$, otherwise $c = 0$. \\ +\hline \\ +1. $t \leftarrow b^a \mbox{ (mod }a\mbox{)}$ \\ +2. If $t = b$ then \\ +\hspace{3mm}2.1 $c = 1$ \\ +3. else \\ +\hspace{3mm}3.1 $c = 0$ \\ +4. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_prime\_fermat} +\end{figure} +\textbf{Algorithm mp\_prime\_fermat.} +This algorithm determines whether an mp\_int $a$ is a Fermat prime to the base $b$ or not. It uses a single modular exponentiation to +determine the result. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_prime\_fermat.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* performs one Fermat test. +018 * +019 * If "a" were prime then b**a == b (mod a) since the order of +020 * the multiplicative sub-group would be phi(a) = a-1. That means +021 * it would be the same as b**(a mod (a-1)) == b**1 == b (mod a). +022 * +023 * Sets result to 1 if the congruence holds, or zero otherwise. +024 */ +025 int mp_prime_fermat (mp_int * a, mp_int * b, int *result) +026 \{ +027 mp_int t; +028 int err; +029 +030 /* default to composite */ +031 *result = MP_NO; +032 +033 /* ensure b > 1 */ +034 if (mp_cmp_d(b, 1) != MP_GT) \{ +035 return MP_VAL; +036 \} +037 +038 /* init t */ +039 if ((err = mp_init (&t)) != MP_OKAY) \{ +040 return err; +041 \} +042 +043 /* compute t = b**a mod a */ +044 if ((err = mp_exptmod (b, a, a, &t)) != MP_OKAY) \{ +045 goto LBL_T; +046 \} +047 +048 /* is it equal to b? */ +049 if (mp_cmp (&t, b) == MP_EQ) \{ +050 *result = MP_YES; +051 \} +052 +053 err = MP_OKAY; +054 LBL_T:mp_clear (&t); +055 return err; +056 \} +057 #endif +\end{alltt} +\end{small} + +\subsection{The Miller-Rabin Test} +The Miller-Rabin (citation) test is another primality test which has tighter error bounds than the Fermat test specifically with sequentially chosen +candidate integers. The algorithm is based on the observation that if $n - 1 = 2^kr$ and if $b^r \nequiv \pm 1$ then after upto $k - 1$ squarings the +value must be equal to $-1$. The squarings are stopped as soon as $-1$ is observed. If the value of $1$ is observed first it means that +some value not congruent to $\pm 1$ when squared equals one which cannot occur if $n$ is prime. + +\begin{figure}[!here] +\begin{small} +\begin{center} +\begin{tabular}{l} +\hline Algorithm \textbf{mp\_prime\_miller\_rabin}. \\ +\textbf{Input}. mp\_int $a$ and $b$, $a \ge 2$, $0 < b < a$. \\ +\textbf{Output}. $c = 1$ if $a$ is a Miller-Rabin prime to the base $a$, otherwise $c = 0$. \\ +\hline +1. $a' \leftarrow a - 1$ \\ +2. $r \leftarrow n1$ \\ +3. $c \leftarrow 0, s \leftarrow 0$ \\ +4. While $r.used > 0$ and $r_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}4.1 $s \leftarrow s + 1$ \\ +\hspace{3mm}4.2 $r \leftarrow \lfloor r / 2 \rfloor$ \\ +5. $y \leftarrow b^r \mbox{ (mod }a\mbox{)}$ \\ +6. If $y \nequiv \pm 1$ then \\ +\hspace{3mm}6.1 $j \leftarrow 1$ \\ +\hspace{3mm}6.2 While $j \le (s - 1)$ and $y \nequiv a'$ \\ +\hspace{6mm}6.2.1 $y \leftarrow y^2 \mbox{ (mod }a\mbox{)}$ \\ +\hspace{6mm}6.2.2 If $y = 1$ then goto step 8. \\ +\hspace{6mm}6.2.3 $j \leftarrow j + 1$ \\ +\hspace{3mm}6.3 If $y \nequiv a'$ goto step 8. \\ +7. $c \leftarrow 1$\\ +8. Return(\textit{MP\_OKAY}). \\ +\hline +\end{tabular} +\end{center} +\end{small} +\caption{Algorithm mp\_prime\_miller\_rabin} +\end{figure} +\textbf{Algorithm mp\_prime\_miller\_rabin.} +This algorithm performs one trial round of the Miller-Rabin algorithm to the base $b$. It will set $c = 1$ if the algorithm cannot determine +if $b$ is composite or $c = 0$ if $b$ is provably composite. The values of $s$ and $r$ are computed such that $a' = a - 1 = 2^sr$. + +If the value $y \equiv b^r$ is congruent to $\pm 1$ then the algorithm cannot prove if $a$ is composite or not. Otherwise, the algorithm will +square $y$ upto $s - 1$ times stopping only when $y \equiv -1$. If $y^2 \equiv 1$ and $y \nequiv \pm 1$ then the algorithm can report that $a$ +is provably composite. If the algorithm performs $s - 1$ squarings and $y \nequiv -1$ then $a$ is provably composite. If $a$ is not provably +composite then it is \textit{probably} prime. + +\vspace{+3mm}\begin{small} +\hspace{-5.1mm}{\bf File}: bn\_mp\_prime\_miller\_rabin.c +\vspace{-3mm} +\begin{alltt} +016 +017 /* Miller-Rabin test of "a" to the base of "b" as described in +018 * HAC pp. 139 Algorithm 4.24 +019 * +020 * Sets result to 0 if definitely composite or 1 if probably prime. +021 * Randomly the chance of error is no more than 1/4 and often +022 * very much lower. +023 */ +024 int mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result) +025 \{ +026 mp_int n1, y, r; +027 int s, j, err; +028 +029 /* default */ +030 *result = MP_NO; +031 +032 /* ensure b > 1 */ +033 if (mp_cmp_d(b, 1) != MP_GT) \{ +034 return MP_VAL; +035 \} +036 +037 /* get n1 = a - 1 */ +038 if ((err = mp_init_copy (&n1, a)) != MP_OKAY) \{ +039 return err; +040 \} +041 if ((err = mp_sub_d (&n1, 1, &n1)) != MP_OKAY) \{ +042 goto LBL_N1; +043 \} +044 +045 /* set 2**s * r = n1 */ +046 if ((err = mp_init_copy (&r, &n1)) != MP_OKAY) \{ +047 goto LBL_N1; +048 \} +049 +050 /* count the number of least significant bits +051 * which are zero +052 */ +053 s = mp_cnt_lsb(&r); +054 +055 /* now divide n - 1 by 2**s */ +056 if ((err = mp_div_2d (&r, s, &r, NULL)) != MP_OKAY) \{ +057 goto LBL_R; +058 \} +059 +060 /* compute y = b**r mod a */ +061 if ((err = mp_init (&y)) != MP_OKAY) \{ +062 goto LBL_R; +063 \} +064 if ((err = mp_exptmod (b, &r, a, &y)) != MP_OKAY) \{ +065 goto LBL_Y; +066 \} +067 +068 /* if y != 1 and y != n1 do */ +069 if (mp_cmp_d (&y, 1) != MP_EQ && mp_cmp (&y, &n1) != MP_EQ) \{ +070 j = 1; +071 /* while j <= s-1 and y != n1 */ +072 while ((j <= (s - 1)) && mp_cmp (&y, &n1) != MP_EQ) \{ +073 if ((err = mp_sqrmod (&y, a, &y)) != MP_OKAY) \{ +074 goto LBL_Y; +075 \} +076 +077 /* if y == 1 then composite */ +078 if (mp_cmp_d (&y, 1) == MP_EQ) \{ +079 goto LBL_Y; +080 \} +081 +082 ++j; +083 \} +084 +085 /* if y != n1 then composite */ +086 if (mp_cmp (&y, &n1) != MP_EQ) \{ +087 goto LBL_Y; +088 \} +089 \} +090 +091 /* probably prime now */ +092 *result = MP_YES; +093 LBL_Y:mp_clear (&y); +094 LBL_R:mp_clear (&r); +095 LBL_N1:mp_clear (&n1); +096 return err; +097 \} +098 #endif +\end{alltt} +\end{small} + + + + +\backmatter +\appendix +\begin{thebibliography}{ABCDEF} +\bibitem[1]{TAOCPV2} +Donald Knuth, \textit{The Art of Computer Programming}, Third Edition, Volume Two, Seminumerical Algorithms, Addison-Wesley, 1998 + +\bibitem[2]{HAC} +A. Menezes, P. van Oorschot, S. Vanstone, \textit{Handbook of Applied Cryptography}, CRC Press, 1996 + +\bibitem[3]{ROSE} +Michael Rosing, \textit{Implementing Elliptic Curve Cryptography}, Manning Publications, 1999 + +\bibitem[4]{COMBA} +Paul G. Comba, \textit{Exponentiation Cryptosystems on the IBM PC}. IBM Systems Journal 29(4): 526-538 (1990) + +\bibitem[5]{KARA} +A. Karatsuba, Doklay Akad. Nauk SSSR 145 (1962), pp.293-294 + +\bibitem[6]{KARAP} +Andre Weimerskirch and Christof Paar, \textit{Generalizations of the Karatsuba Algorithm for Polynomial Multiplication}, Submitted to Design, Codes and Cryptography, March 2002 + +\bibitem[7]{BARRETT} +Paul Barrett, \textit{Implementing the Rivest Shamir and Adleman Public Key Encryption Algorithm on a Standard Digital Signal Processor}, Advances in Cryptology, Crypto '86, Springer-Verlag. + +\bibitem[8]{MONT} +P.L.Montgomery. \textit{Modular multiplication without trial division}. Mathematics of Computation, 44(170):519-521, April 1985. + +\bibitem[9]{DRMET} +Chae Hoon Lim and Pil Joong Lee, \textit{Generating Efficient Primes for Discrete Log Cryptosystems}, POSTECH Information Research Laboratories + +\bibitem[10]{MMB} +J. Daemen and R. Govaerts and J. Vandewalle, \textit{Block ciphers based on Modular Arithmetic}, State and {P}rogress in the {R}esearch of {C}ryptography, 1993, pp. 80-89 + +\bibitem[11]{RSAREF} +R.L. Rivest, A. Shamir, L. Adleman, \textit{A Method for Obtaining Digital Signatures and Public-Key Cryptosystems} + +\bibitem[12]{DHREF} +Whitfield Diffie, Martin E. Hellman, \textit{New Directions in Cryptography}, IEEE Transactions on Information Theory, 1976 + +\bibitem[13]{IEEE} +IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985) + +\bibitem[14]{GMP} +GNU Multiple Precision (GMP), \url{http://www.swox.com/gmp/} + +\bibitem[15]{MPI} +Multiple Precision Integer Library (MPI), Michael Fromberger, \url{http://thayer.dartmouth.edu/~sting/mpi/} + +\bibitem[16]{OPENSSL} +OpenSSL Cryptographic Toolkit, \url{http://openssl.org} + +\bibitem[17]{LIP} +Large Integer Package, \url{http://home.hetnet.nl/~ecstr/LIP.zip} + +\bibitem[18]{ISOC} +JTC1/SC22/WG14, ISO/IEC 9899:1999, ``A draft rationale for the C99 standard.'' + +\bibitem[19]{JAVA} +The Sun Java Website, \url{http://java.sun.com/} + +\end{thebibliography} + +\input{tommath.ind} + +\end{document} diff --git a/libtommath/tommath_class.h b/libtommath/tommath_class.h new file mode 100644 index 0000000..53bfa31 --- /dev/null +++ b/libtommath/tommath_class.h @@ -0,0 +1,952 @@ +#if !(defined(LTM1) && defined(LTM2) && defined(LTM3)) +#if defined(LTM2) +#define LTM3 +#endif +#if defined(LTM1) +#define LTM2 +#endif +#define LTM1 + +#if defined(LTM_ALL) +#define BN_ERROR_C +#define BN_FAST_MP_INVMOD_C +#define BN_FAST_MP_MONTGOMERY_REDUCE_C +#define BN_FAST_S_MP_MUL_DIGS_C +#define BN_FAST_S_MP_MUL_HIGH_DIGS_C +#define BN_FAST_S_MP_SQR_C +#define BN_MP_2EXPT_C +#define BN_MP_ABS_C +#define BN_MP_ADD_C +#define BN_MP_ADD_D_C +#define BN_MP_ADDMOD_C +#define BN_MP_AND_C +#define BN_MP_CLAMP_C +#define BN_MP_CLEAR_C +#define BN_MP_CLEAR_MULTI_C +#define BN_MP_CMP_C +#define BN_MP_CMP_D_C +#define BN_MP_CMP_MAG_C +#define BN_MP_CNT_LSB_C +#define BN_MP_COPY_C +#define BN_MP_COUNT_BITS_C +#define BN_MP_DIV_C +#define BN_MP_DIV_2_C +#define BN_MP_DIV_2D_C +#define BN_MP_DIV_3_C +#define BN_MP_DIV_D_C +#define BN_MP_DR_IS_MODULUS_C +#define BN_MP_DR_REDUCE_C +#define BN_MP_DR_SETUP_C +#define BN_MP_EXCH_C +#define BN_MP_EXPT_D_C +#define BN_MP_EXPTMOD_C +#define BN_MP_EXPTMOD_FAST_C +#define BN_MP_EXTEUCLID_C +#define BN_MP_FREAD_C +#define BN_MP_FWRITE_C +#define BN_MP_GCD_C +#define BN_MP_GET_INT_C +#define BN_MP_GROW_C +#define BN_MP_INIT_C +#define BN_MP_INIT_COPY_C +#define BN_MP_INIT_MULTI_C +#define BN_MP_INIT_SET_C +#define BN_MP_INIT_SET_INT_C +#define BN_MP_INIT_SIZE_C +#define BN_MP_INVMOD_C +#define BN_MP_INVMOD_SLOW_C +#define BN_MP_IS_SQUARE_C +#define BN_MP_JACOBI_C +#define BN_MP_KARATSUBA_MUL_C +#define BN_MP_KARATSUBA_SQR_C +#define BN_MP_LCM_C +#define BN_MP_LSHD_C +#define BN_MP_MOD_C +#define BN_MP_MOD_2D_C +#define BN_MP_MOD_D_C +#define BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +#define BN_MP_MONTGOMERY_REDUCE_C +#define BN_MP_MONTGOMERY_SETUP_C +#define BN_MP_MUL_C +#define BN_MP_MUL_2_C +#define BN_MP_MUL_2D_C +#define BN_MP_MUL_D_C +#define BN_MP_MULMOD_C +#define BN_MP_N_ROOT_C +#define BN_MP_NEG_C +#define BN_MP_OR_C +#define BN_MP_PRIME_FERMAT_C +#define BN_MP_PRIME_IS_DIVISIBLE_C +#define BN_MP_PRIME_IS_PRIME_C +#define BN_MP_PRIME_MILLER_RABIN_C +#define BN_MP_PRIME_NEXT_PRIME_C +#define BN_MP_PRIME_RABIN_MILLER_TRIALS_C +#define BN_MP_PRIME_RANDOM_EX_C +#define BN_MP_RADIX_SIZE_C +#define BN_MP_RADIX_SMAP_C +#define BN_MP_RAND_C +#define BN_MP_READ_RADIX_C +#define BN_MP_READ_SIGNED_BIN_C +#define BN_MP_READ_UNSIGNED_BIN_C +#define BN_MP_REDUCE_C +#define BN_MP_REDUCE_2K_C +#define BN_MP_REDUCE_2K_SETUP_C +#define BN_MP_REDUCE_IS_2K_C +#define BN_MP_REDUCE_SETUP_C +#define BN_MP_RSHD_C +#define BN_MP_SET_C +#define BN_MP_SET_INT_C +#define BN_MP_SHRINK_C +#define BN_MP_SIGNED_BIN_SIZE_C +#define BN_MP_SQR_C +#define BN_MP_SQRMOD_C +#define BN_MP_SQRT_C +#define BN_MP_SUB_C +#define BN_MP_SUB_D_C +#define BN_MP_SUBMOD_C +#define BN_MP_TO_SIGNED_BIN_C +#define BN_MP_TO_UNSIGNED_BIN_C +#define BN_MP_TOOM_MUL_C +#define BN_MP_TOOM_SQR_C +#define BN_MP_TORADIX_C +#define BN_MP_TORADIX_N_C +#define BN_MP_UNSIGNED_BIN_SIZE_C +#define BN_MP_XOR_C +#define BN_MP_ZERO_C +#define BN_PRIME_TAB_C +#define BN_REVERSE_C +#define BN_S_MP_ADD_C +#define BN_S_MP_EXPTMOD_C +#define BN_S_MP_MUL_DIGS_C +#define BN_S_MP_MUL_HIGH_DIGS_C +#define BN_S_MP_SQR_C +#define BN_S_MP_SUB_C +#define BNCORE_C +#endif + +#if defined(BN_ERROR_C) + #define BN_MP_ERROR_TO_STRING_C +#endif + +#if defined(BN_FAST_MP_INVMOD_C) + #define BN_MP_ISEVEN_C + #define BN_MP_INIT_MULTI_C + #define BN_MP_COPY_C + #define BN_MP_ABS_C + #define BN_MP_SET_C + #define BN_MP_DIV_2_C + #define BN_MP_ISODD_C + #define BN_MP_SUB_C + #define BN_MP_CMP_C + #define BN_MP_ISZERO_C + #define BN_MP_CMP_D_C + #define BN_MP_ADD_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_FAST_MP_MONTGOMERY_REDUCE_C) + #define BN_MP_GROW_C + #define BN_MP_RSHD_C + #define BN_MP_CLAMP_C + #define BN_MP_CMP_MAG_C + #define BN_S_MP_SUB_C +#endif + +#if defined(BN_FAST_S_MP_MUL_DIGS_C) + #define BN_MP_GROW_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) + #define BN_MP_GROW_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_FAST_S_MP_SQR_C) + #define BN_MP_GROW_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_2EXPT_C) + #define BN_MP_ZERO_C + #define BN_MP_GROW_C +#endif + +#if defined(BN_MP_ABS_C) + #define BN_MP_COPY_C +#endif + +#if defined(BN_MP_ADD_C) + #define BN_S_MP_ADD_C + #define BN_MP_CMP_MAG_C + #define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_ADD_D_C) + #define BN_MP_GROW_C + #define BN_MP_SUB_D_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_ADDMOD_C) + #define BN_MP_INIT_C + #define BN_MP_ADD_C + #define BN_MP_CLEAR_C + #define BN_MP_MOD_C +#endif + +#if defined(BN_MP_AND_C) + #define BN_MP_INIT_COPY_C + #define BN_MP_CLAMP_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_CLAMP_C) +#endif + +#if defined(BN_MP_CLEAR_C) +#endif + +#if defined(BN_MP_CLEAR_MULTI_C) + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_CMP_C) + #define BN_MP_CMP_MAG_C +#endif + +#if defined(BN_MP_CMP_D_C) +#endif + +#if defined(BN_MP_CMP_MAG_C) +#endif + +#if defined(BN_MP_CNT_LSB_C) + #define BN_MP_ISZERO_C +#endif + +#if defined(BN_MP_COPY_C) + #define BN_MP_GROW_C +#endif + +#if defined(BN_MP_COUNT_BITS_C) +#endif + +#if defined(BN_MP_DIV_C) + #define BN_MP_ISZERO_C + #define BN_MP_CMP_MAG_C + #define BN_MP_COPY_C + #define BN_MP_ZERO_C + #define BN_MP_INIT_MULTI_C + #define BN_MP_SET_C + #define BN_MP_COUNT_BITS_C + #define BN_MP_ABS_C + #define BN_MP_MUL_2D_C + #define BN_MP_CMP_C + #define BN_MP_SUB_C + #define BN_MP_ADD_C + #define BN_MP_DIV_2D_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_MULTI_C + #define BN_MP_INIT_SIZE_C + #define BN_MP_INIT_C + #define BN_MP_INIT_COPY_C + #define BN_MP_LSHD_C + #define BN_MP_RSHD_C + #define BN_MP_MUL_D_C + #define BN_MP_CLAMP_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_DIV_2_C) + #define BN_MP_GROW_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_DIV_2D_C) + #define BN_MP_COPY_C + #define BN_MP_ZERO_C + #define BN_MP_INIT_C + #define BN_MP_MOD_2D_C + #define BN_MP_CLEAR_C + #define BN_MP_RSHD_C + #define BN_MP_CLAMP_C + #define BN_MP_EXCH_C +#endif + +#if defined(BN_MP_DIV_3_C) + #define BN_MP_INIT_SIZE_C + #define BN_MP_CLAMP_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_DIV_D_C) + #define BN_MP_ISZERO_C + #define BN_MP_COPY_C + #define BN_MP_DIV_2D_C + #define BN_MP_DIV_3_C + #define BN_MP_INIT_SIZE_C + #define BN_MP_CLAMP_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_DR_IS_MODULUS_C) +#endif + +#if defined(BN_MP_DR_REDUCE_C) + #define BN_MP_GROW_C + #define BN_MP_CLAMP_C + #define BN_MP_CMP_MAG_C + #define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_DR_SETUP_C) +#endif + +#if defined(BN_MP_EXCH_C) +#endif + +#if defined(BN_MP_EXPT_D_C) + #define BN_MP_INIT_COPY_C + #define BN_MP_SET_C + #define BN_MP_SQR_C + #define BN_MP_CLEAR_C + #define BN_MP_MUL_C +#endif + +#if defined(BN_MP_EXPTMOD_C) + #define BN_MP_INIT_C + #define BN_MP_INVMOD_C + #define BN_MP_CLEAR_C + #define BN_MP_ABS_C + #define BN_MP_CLEAR_MULTI_C + #define BN_MP_DR_IS_MODULUS_C + #define BN_MP_REDUCE_IS_2K_C + #define BN_MP_ISODD_C + #define BN_MP_EXPTMOD_FAST_C + #define BN_S_MP_EXPTMOD_C +#endif + +#if defined(BN_MP_EXPTMOD_FAST_C) + #define BN_MP_COUNT_BITS_C + #define BN_MP_INIT_C + #define BN_MP_CLEAR_C + #define BN_MP_MONTGOMERY_SETUP_C + #define BN_FAST_MP_MONTGOMERY_REDUCE_C + #define BN_MP_MONTGOMERY_REDUCE_C + #define BN_MP_DR_SETUP_C + #define BN_MP_DR_REDUCE_C + #define BN_MP_REDUCE_2K_SETUP_C + #define BN_MP_REDUCE_2K_C + #define BN_MP_MONTGOMERY_CALC_NORMALIZATION_C + #define BN_MP_MULMOD_C + #define BN_MP_SET_C + #define BN_MP_MOD_C + #define BN_MP_COPY_C + #define BN_MP_SQR_C + #define BN_MP_MUL_C + #define BN_MP_EXCH_C +#endif + +#if defined(BN_MP_EXTEUCLID_C) + #define BN_MP_INIT_MULTI_C + #define BN_MP_SET_C + #define BN_MP_COPY_C + #define BN_MP_ISZERO_C + #define BN_MP_DIV_C + #define BN_MP_MUL_C + #define BN_MP_SUB_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_FREAD_C) + #define BN_MP_ZERO_C + #define BN_MP_S_RMAP_C + #define BN_MP_MUL_D_C + #define BN_MP_ADD_D_C + #define BN_MP_CMP_D_C +#endif + +#if defined(BN_MP_FWRITE_C) + #define BN_MP_RADIX_SIZE_C + #define BN_MP_TORADIX_C +#endif + +#if defined(BN_MP_GCD_C) + #define BN_MP_ISZERO_C + #define BN_MP_ABS_C + #define BN_MP_ZERO_C + #define BN_MP_INIT_COPY_C + #define BN_MP_CNT_LSB_C + #define BN_MP_DIV_2D_C + #define BN_MP_CMP_MAG_C + #define BN_MP_EXCH_C + #define BN_S_MP_SUB_C + #define BN_MP_MUL_2D_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_GET_INT_C) +#endif + +#if defined(BN_MP_GROW_C) +#endif + +#if defined(BN_MP_INIT_C) +#endif + +#if defined(BN_MP_INIT_COPY_C) + #define BN_MP_COPY_C +#endif + +#if defined(BN_MP_INIT_MULTI_C) + #define BN_MP_ERR_C + #define BN_MP_INIT_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_INIT_SET_C) + #define BN_MP_INIT_C + #define BN_MP_SET_C +#endif + +#if defined(BN_MP_INIT_SET_INT_C) + #define BN_MP_INIT_C + #define BN_MP_SET_INT_C +#endif + +#if defined(BN_MP_INIT_SIZE_C) + #define BN_MP_INIT_C +#endif + +#if defined(BN_MP_INVMOD_C) + #define BN_MP_ISZERO_C + #define BN_MP_ISODD_C + #define BN_FAST_MP_INVMOD_C + #define BN_MP_INVMOD_SLOW_C +#endif + +#if defined(BN_MP_INVMOD_SLOW_C) + #define BN_MP_ISZERO_C + #define BN_MP_INIT_MULTI_C + #define BN_MP_COPY_C + #define BN_MP_ISEVEN_C + #define BN_MP_SET_C + #define BN_MP_DIV_2_C + #define BN_MP_ISODD_C + #define BN_MP_ADD_C + #define BN_MP_SUB_C + #define BN_MP_CMP_C + #define BN_MP_CMP_D_C + #define BN_MP_CMP_MAG_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_IS_SQUARE_C) + #define BN_MP_MOD_D_C + #define BN_MP_INIT_SET_INT_C + #define BN_MP_MOD_C + #define BN_MP_GET_INT_C + #define BN_MP_SQRT_C + #define BN_MP_SQR_C + #define BN_MP_CMP_MAG_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_JACOBI_C) + #define BN_MP_CMP_D_C + #define BN_MP_ISZERO_C + #define BN_MP_INIT_COPY_C + #define BN_MP_CNT_LSB_C + #define BN_MP_DIV_2D_C + #define BN_MP_MOD_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_KARATSUBA_MUL_C) + #define BN_MP_MUL_C + #define BN_MP_INIT_SIZE_C + #define BN_MP_CLAMP_C + #define BN_MP_SUB_C + #define BN_MP_ADD_C + #define BN_MP_LSHD_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_KARATSUBA_SQR_C) + #define BN_MP_INIT_SIZE_C + #define BN_MP_CLAMP_C + #define BN_MP_SQR_C + #define BN_MP_SUB_C + #define BN_S_MP_ADD_C + #define BN_MP_LSHD_C + #define BN_MP_ADD_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_LCM_C) + #define BN_MP_INIT_MULTI_C + #define BN_MP_GCD_C + #define BN_MP_CMP_MAG_C + #define BN_MP_DIV_C + #define BN_MP_MUL_C + #define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_LSHD_C) + #define BN_MP_GROW_C + #define BN_MP_RSHD_C +#endif + +#if defined(BN_MP_MOD_C) + #define BN_MP_INIT_C + #define BN_MP_DIV_C + #define BN_MP_CLEAR_C + #define BN_MP_ADD_C + #define BN_MP_EXCH_C +#endif + +#if defined(BN_MP_MOD_2D_C) + #define BN_MP_ZERO_C + #define BN_MP_COPY_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_MOD_D_C) + #define BN_MP_DIV_D_C +#endif + +#if defined(BN_MP_MONTGOMERY_CALC_NORMALIZATION_C) + #define BN_MP_COUNT_BITS_C + #define BN_MP_2EXPT_C + #define BN_MP_SET_C + #define BN_MP_MUL_2_C + #define BN_MP_CMP_MAG_C + #define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_MONTGOMERY_REDUCE_C) + #define BN_FAST_MP_MONTGOMERY_REDUCE_C + #define BN_MP_GROW_C + #define BN_MP_CLAMP_C + #define BN_MP_RSHD_C + #define BN_MP_CMP_MAG_C + #define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_MONTGOMERY_SETUP_C) +#endif + +#if defined(BN_MP_MUL_C) + #define BN_MP_TOOM_MUL_C + #define BN_MP_KARATSUBA_MUL_C + #define BN_FAST_S_MP_MUL_DIGS_C + #define BN_S_MP_MUL_C + #define BN_S_MP_MUL_DIGS_C +#endif + +#if defined(BN_MP_MUL_2_C) + #define BN_MP_GROW_C +#endif + +#if defined(BN_MP_MUL_2D_C) + #define BN_MP_COPY_C + #define BN_MP_GROW_C + #define BN_MP_LSHD_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_MUL_D_C) + #define BN_MP_GROW_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_MULMOD_C) + #define BN_MP_INIT_C + #define BN_MP_MUL_C + #define BN_MP_CLEAR_C + #define BN_MP_MOD_C +#endif + +#if defined(BN_MP_N_ROOT_C) + #define BN_MP_INIT_C + #define BN_MP_SET_C + #define BN_MP_COPY_C + #define BN_MP_EXPT_D_C + #define BN_MP_MUL_C + #define BN_MP_SUB_C + #define BN_MP_MUL_D_C + #define BN_MP_DIV_C + #define BN_MP_CMP_C + #define BN_MP_SUB_D_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_NEG_C) + #define BN_MP_COPY_C + #define BN_MP_ISZERO_C +#endif + +#if defined(BN_MP_OR_C) + #define BN_MP_INIT_COPY_C + #define BN_MP_CLAMP_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_FERMAT_C) + #define BN_MP_CMP_D_C + #define BN_MP_INIT_C + #define BN_MP_EXPTMOD_C + #define BN_MP_CMP_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_IS_DIVISIBLE_C) + #define BN_MP_MOD_D_C +#endif + +#if defined(BN_MP_PRIME_IS_PRIME_C) + #define BN_MP_CMP_D_C + #define BN_MP_PRIME_IS_DIVISIBLE_C + #define BN_MP_INIT_C + #define BN_MP_SET_C + #define BN_MP_PRIME_MILLER_RABIN_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_MILLER_RABIN_C) + #define BN_MP_CMP_D_C + #define BN_MP_INIT_COPY_C + #define BN_MP_SUB_D_C + #define BN_MP_CNT_LSB_C + #define BN_MP_DIV_2D_C + #define BN_MP_EXPTMOD_C + #define BN_MP_CMP_C + #define BN_MP_SQRMOD_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_NEXT_PRIME_C) + #define BN_MP_CMP_D_C + #define BN_MP_SET_C + #define BN_MP_SUB_D_C + #define BN_MP_ISEVEN_C + #define BN_MP_MOD_D_C + #define BN_MP_INIT_C + #define BN_MP_ADD_D_C + #define BN_MP_PRIME_MILLER_RABIN_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_RABIN_MILLER_TRIALS_C) +#endif + +#if defined(BN_MP_PRIME_RANDOM_EX_C) + #define BN_MP_READ_UNSIGNED_BIN_C + #define BN_MP_PRIME_IS_PRIME_C + #define BN_MP_SUB_D_C + #define BN_MP_DIV_2_C + #define BN_MP_MUL_2_C + #define BN_MP_ADD_D_C +#endif + +#if defined(BN_MP_RADIX_SIZE_C) + #define BN_MP_COUNT_BITS_C + #define BN_MP_INIT_COPY_C + #define BN_MP_ISZERO_C + #define BN_MP_DIV_D_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_RADIX_SMAP_C) + #define BN_MP_S_RMAP_C +#endif + +#if defined(BN_MP_RAND_C) + #define BN_MP_ZERO_C + #define BN_MP_ADD_D_C + #define BN_MP_LSHD_C +#endif + +#if defined(BN_MP_READ_RADIX_C) + #define BN_MP_ZERO_C + #define BN_MP_S_RMAP_C + #define BN_MP_MUL_D_C + #define BN_MP_ADD_D_C + #define BN_MP_ISZERO_C +#endif + +#if defined(BN_MP_READ_SIGNED_BIN_C) + #define BN_MP_READ_UNSIGNED_BIN_C +#endif + +#if defined(BN_MP_READ_UNSIGNED_BIN_C) + #define BN_MP_GROW_C + #define BN_MP_ZERO_C + #define BN_MP_MUL_2D_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_REDUCE_C) + #define BN_MP_REDUCE_SETUP_C + #define BN_MP_INIT_COPY_C + #define BN_MP_RSHD_C + #define BN_MP_MUL_C + #define BN_S_MP_MUL_HIGH_DIGS_C + #define BN_FAST_S_MP_MUL_HIGH_DIGS_C + #define BN_MP_MOD_2D_C + #define BN_S_MP_MUL_DIGS_C + #define BN_MP_SUB_C + #define BN_MP_CMP_D_C + #define BN_MP_SET_C + #define BN_MP_LSHD_C + #define BN_MP_ADD_C + #define BN_MP_CMP_C + #define BN_S_MP_SUB_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_REDUCE_2K_C) + #define BN_MP_INIT_C + #define BN_MP_COUNT_BITS_C + #define BN_MP_DIV_2D_C + #define BN_MP_MUL_D_C + #define BN_S_MP_ADD_C + #define BN_MP_CMP_MAG_C + #define BN_S_MP_SUB_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_REDUCE_2K_SETUP_C) + #define BN_MP_INIT_C + #define BN_MP_COUNT_BITS_C + #define BN_MP_2EXPT_C + #define BN_MP_CLEAR_C + #define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_REDUCE_IS_2K_C) + #define BN_MP_REDUCE_2K_C + #define BN_MP_COUNT_BITS_C +#endif + +#if defined(BN_MP_REDUCE_SETUP_C) + #define BN_MP_2EXPT_C + #define BN_MP_DIV_C +#endif + +#if defined(BN_MP_RSHD_C) + #define BN_MP_ZERO_C +#endif + +#if defined(BN_MP_SET_C) + #define BN_MP_ZERO_C +#endif + +#if defined(BN_MP_SET_INT_C) + #define BN_MP_ZERO_C + #define BN_MP_MUL_2D_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_SHRINK_C) +#endif + +#if defined(BN_MP_SIGNED_BIN_SIZE_C) + #define BN_MP_UNSIGNED_BIN_SIZE_C +#endif + +#if defined(BN_MP_SQR_C) + #define BN_MP_TOOM_SQR_C + #define BN_MP_KARATSUBA_SQR_C + #define BN_FAST_S_MP_SQR_C + #define BN_S_MP_SQR_C +#endif + +#if defined(BN_MP_SQRMOD_C) + #define BN_MP_INIT_C + #define BN_MP_SQR_C + #define BN_MP_CLEAR_C + #define BN_MP_MOD_C +#endif + +#if defined(BN_MP_SQRT_C) + #define BN_MP_N_ROOT_C + #define BN_MP_ISZERO_C + #define BN_MP_ZERO_C + #define BN_MP_INIT_COPY_C + #define BN_MP_RSHD_C + #define BN_MP_DIV_C + #define BN_MP_ADD_C + #define BN_MP_DIV_2_C + #define BN_MP_CMP_MAG_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_SUB_C) + #define BN_S_MP_ADD_C + #define BN_MP_CMP_MAG_C + #define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_SUB_D_C) + #define BN_MP_GROW_C + #define BN_MP_ADD_D_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_SUBMOD_C) + #define BN_MP_INIT_C + #define BN_MP_SUB_C + #define BN_MP_CLEAR_C + #define BN_MP_MOD_C +#endif + +#if defined(BN_MP_TO_SIGNED_BIN_C) + #define BN_MP_TO_UNSIGNED_BIN_C +#endif + +#if defined(BN_MP_TO_UNSIGNED_BIN_C) + #define BN_MP_INIT_COPY_C + #define BN_MP_ISZERO_C + #define BN_MP_DIV_2D_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_TOOM_MUL_C) + #define BN_MP_INIT_MULTI_C + #define BN_MP_MOD_2D_C + #define BN_MP_COPY_C + #define BN_MP_RSHD_C + #define BN_MP_MUL_C + #define BN_MP_MUL_2_C + #define BN_MP_ADD_C + #define BN_MP_SUB_C + #define BN_MP_DIV_2_C + #define BN_MP_MUL_2D_C + #define BN_MP_MUL_D_C + #define BN_MP_DIV_3_C + #define BN_MP_LSHD_C + #define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_TOOM_SQR_C) + #define BN_MP_INIT_MULTI_C + #define BN_MP_MOD_2D_C + #define BN_MP_COPY_C + #define BN_MP_RSHD_C + #define BN_MP_SQR_C + #define BN_MP_MUL_2_C + #define BN_MP_ADD_C + #define BN_MP_SUB_C + #define BN_MP_DIV_2_C + #define BN_MP_MUL_2D_C + #define BN_MP_MUL_D_C + #define BN_MP_DIV_3_C + #define BN_MP_LSHD_C + #define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_TORADIX_C) + #define BN_MP_ISZERO_C + #define BN_MP_INIT_COPY_C + #define BN_MP_DIV_D_C + #define BN_MP_CLEAR_C + #define BN_MP_S_RMAP_C +#endif + +#if defined(BN_MP_TORADIX_N_C) + #define BN_MP_ISZERO_C + #define BN_MP_INIT_COPY_C + #define BN_MP_DIV_D_C + #define BN_MP_CLEAR_C + #define BN_MP_S_RMAP_C +#endif + +#if defined(BN_MP_UNSIGNED_BIN_SIZE_C) + #define BN_MP_COUNT_BITS_C +#endif + +#if defined(BN_MP_XOR_C) + #define BN_MP_INIT_COPY_C + #define BN_MP_CLAMP_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_ZERO_C) +#endif + +#if defined(BN_PRIME_TAB_C) +#endif + +#if defined(BN_REVERSE_C) +#endif + +#if defined(BN_S_MP_ADD_C) + #define BN_MP_GROW_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BN_S_MP_EXPTMOD_C) + #define BN_MP_COUNT_BITS_C + #define BN_MP_INIT_C + #define BN_MP_CLEAR_C + #define BN_MP_REDUCE_SETUP_C + #define BN_MP_MOD_C + #define BN_MP_COPY_C + #define BN_MP_SQR_C + #define BN_MP_REDUCE_C + #define BN_MP_MUL_C + #define BN_MP_SET_C + #define BN_MP_EXCH_C +#endif + +#if defined(BN_S_MP_MUL_DIGS_C) + #define BN_FAST_S_MP_MUL_DIGS_C + #define BN_MP_INIT_SIZE_C + #define BN_MP_CLAMP_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_S_MP_MUL_HIGH_DIGS_C) + #define BN_FAST_S_MP_MUL_HIGH_DIGS_C + #define BN_MP_INIT_SIZE_C + #define BN_MP_CLAMP_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_S_MP_SQR_C) + #define BN_MP_INIT_SIZE_C + #define BN_MP_CLAMP_C + #define BN_MP_EXCH_C + #define BN_MP_CLEAR_C +#endif + +#if defined(BN_S_MP_SUB_C) + #define BN_MP_GROW_C + #define BN_MP_CLAMP_C +#endif + +#if defined(BNCORE_C) +#endif + +#ifdef LTM3 +#define LTM_LAST +#endif +#include +#include +#else +#define LTM_LAST +#endif diff --git a/libtommath/tommath_superclass.h b/libtommath/tommath_superclass.h new file mode 100644 index 0000000..b50ecb0 --- /dev/null +++ b/libtommath/tommath_superclass.h @@ -0,0 +1,72 @@ +/* super class file for PK algos */ + +/* default ... include all MPI */ +#define LTM_ALL + +/* RSA only (does not support DH/DSA/ECC) */ +// #define SC_RSA_1 + +/* For reference.... On an Athlon64 optimizing for speed... + + LTM's mpi.o with all functions [striped] is 142KiB in size. + +*/ + +/* Works for RSA only, mpi.o is 68KiB */ +#ifdef SC_RSA_1 + #define BN_MP_SHRINK_C + #define BN_MP_LCM_C + #define BN_MP_PRIME_RANDOM_EX_C + #define BN_MP_INVMOD_C + #define BN_MP_GCD_C + #define BN_MP_MOD_C + #define BN_MP_MULMOD_C + #define BN_MP_ADDMOD_C + #define BN_MP_EXPTMOD_C + #define BN_MP_SET_INT_C + #define BN_MP_INIT_MULTI_C + #define BN_MP_CLEAR_MULTI_C + #define BN_MP_UNSIGNED_BIN_SIZE_C + #define BN_MP_TO_UNSIGNED_BIN_C + #define BN_MP_MOD_D_C + #define BN_MP_PRIME_RABIN_MILLER_TRIALS_C + #define BN_REVERSE_C + #define BN_PRIME_TAB_C + + /* other modifiers */ + #define BN_MP_DIV_SMALL /* Slower division, not critical */ + + /* here we are on the last pass so we turn things off. The functions classes are still there + * but we remove them specifically from the build. This also invokes tweaks in functions + * like removing support for even moduli, etc... + */ +#ifdef LTM_LAST + #undef BN_MP_TOOM_MUL_C + #undef BN_MP_TOOM_SQR_C + #undef BN_MP_KARATSUBA_MUL_C + #undef BN_MP_KARATSUBA_SQR_C + #undef BN_MP_REDUCE_C + #undef BN_MP_REDUCE_SETUP_C + #undef BN_MP_DR_IS_MODULUS_C + #undef BN_MP_DR_SETUP_C + #undef BN_MP_DR_REDUCE_C + #undef BN_MP_REDUCE_IS_2K_C + #undef BN_MP_REDUCE_2K_SETUP_C + #undef BN_MP_REDUCE_2K_C + #undef BN_S_MP_EXPTMOD_C + #undef BN_MP_DIV_3_C + #undef BN_S_MP_MUL_HIGH_DIGS_C + #undef BN_FAST_S_MP_MUL_HIGH_DIGS_C + #undef BN_FAST_MP_INVMOD_C + + /* To safely undefine these you have to make sure your RSA key won't exceed the Comba threshold + * which is roughly 255 digits [7140 bits for 32-bit machines, 15300 bits for 64-bit machines] + * which means roughly speaking you can handle upto 2536-bit RSA keys with these defined without + * trouble. + */ + #undef BN_S_MP_MUL_DIGS_C + #undef BN_S_MP_SQR_C + #undef BN_MP_MONTGOMERY_REDUCE_C +#endif + +#endif -- cgit v0.12 From b8cca4b689b37496808c9a8ab25d09ef88e42e52 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 25 Jan 2005 06:54:33 +0000 Subject: * unix/tcl.m4 (Darwin): fixed bug with static build linking to dynamic library in /usr/lib etc instead of linking to static library earlier in search path. [Tcl Bug 956908] Removed obsolete references to Rhapsody. * unix/configure: autoconf-2.13 --- ChangeLog | 8 ++++++++ unix/configure | 6 +++--- unix/tcl.m4 | 6 +++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8b9d9a9..571fdb0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-01-25 Daniel Steffen + + * unix/tcl.m4 (Darwin): fixed bug with static build linking to + dynamic library in /usr/lib etc instead of linking to static library + earlier in search path. [Tcl Bug 956908] + Removed obsolete references to Rhapsody. + * unix/configure: autoconf-2.13 + 2005-01-19 Mo DeJong * win/tclWinChan.c (FileCloseProc): Invoke diff --git a/unix/configure b/unix/configure index 6d429bc..067be0b 100755 --- a/unix/configure +++ b/unix/configure @@ -3015,7 +3015,7 @@ rm -f conftest* ;; esac ;; - Rhapsody-*|Darwin-*) + Darwin-*) SHLIB_CFLAGS="-fno-common" SHLIB_LD="cc -dynamiclib \${LDFLAGS}" TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000" @@ -3025,7 +3025,7 @@ rm -f conftest* DL_OBJS="tclLoadDyld.o" PLAT_OBJS=\$\(MAC\_OSX_OBJS\) DL_LIBS="" - LDFLAGS="$LDFLAGS -prebind" + LDFLAGS="$LDFLAGS -prebind -Wl,-search_paths_first" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" CFLAGS_OPTIMIZE="-Os" @@ -3524,7 +3524,7 @@ fi ;; NetBSD-*|FreeBSD-*|OpenBSD-*) ;; - Rhapsody-*|Darwin-*) + Darwin-*) ;; RISCos-*) ;; diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 2ebb13a..155ff07 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1368,7 +1368,7 @@ dnl AC_CHECK_TOOL(AR, ar) ;; esac ;; - Rhapsody-*|Darwin-*) + Darwin-*) SHLIB_CFLAGS="-fno-common" SHLIB_LD="cc -dynamiclib \${LDFLAGS}" TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000" @@ -1378,7 +1378,7 @@ dnl AC_CHECK_TOOL(AR, ar) DL_OBJS="tclLoadDyld.o" PLAT_OBJS=\$\(MAC\_OSX_OBJS\) DL_LIBS="" - LDFLAGS="$LDFLAGS -prebind" + LDFLAGS="$LDFLAGS -prebind -Wl,-search_paths_first" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" CFLAGS_OPTIMIZE="-Os" @@ -1764,7 +1764,7 @@ dnl AC_CHECK_TOOL(AR, ar) ;; NetBSD-*|FreeBSD-*|OpenBSD-*) ;; - Rhapsody-*|Darwin-*) + Darwin-*) ;; RISCos-*) ;; -- cgit v0.12 From 9dbc38faed5d13bbc3656501c291dbda19ff86e7 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 25 Jan 2005 17:58:38 +0000 Subject: * library/auto.tcl: Updated [auto_reset] to clear auto-loaded procs in namespaces other than :: [Bug 1101670]. --- ChangeLog | 5 +++++ library/auto.tcl | 31 ++++++++++++++++--------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 571fdb0..001b182 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-01-25 Don Porter + + * library/auto.tcl: Updated [auto_reset] to clear auto-loaded + procs in namespaces other than :: [Bug 1101670]. + 2005-01-25 Daniel Steffen * unix/tcl.m4 (Darwin): fixed bug with static build linking to diff --git a/library/auto.tcl b/library/auto.tcl index 276a4aa..e2b503e 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.3 2004/12/01 22:07:57 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.4 2005/01/25 17:58:44 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -16,26 +16,27 @@ # # Destroy all cached information for auto-loading and auto-execution, # so that the information gets recomputed the next time it's needed. -# Also delete any procedures that are listed in the auto-load index -# except those defined in this file. +# Also delete any procedures that are listed in the auto-load index, +# except some of those defined in the Tcl script library. # # Arguments: # None. proc auto_reset {} { - global auto_execs auto_index auto_oldpath - foreach p [info procs] { - if {[info exists auto_index($p)] && ![string match auto_* $p] - && ([lsearch -exact {unknown pkg_mkIndex tclPkgSetup - tcl_findLibrary pkg_compareExtension - tclPkgUnknown tcl::MacOSXPkgUnknown - tcl::MacPkgUnknown} $p] < 0)} { - rename $p {} - } + if {[array exists ::auto_index]} { + foreach cmdName [array names ::auto_index] { + if {[string match auto_* $cmdName]} {continue} + set fqcn [namespace which $cmdName] + if {$fqcn eq ""} {continue} + if {[catch {info args $fqcn}]} {continue} + if {[lsearch -exact { + ::unknown ::pkg_mkIndex ::tclPkgSetup ::tcl_findLibrary + ::pkg_compareExtension ::tclPkgUnknown ::tcl::MacOSXPkgUnknown + ::tcl::MacPkgUnknown} $fqcn] != -1)} {continue} + rename $fqcn {} + } } - catch {unset auto_execs} - catch {unset auto_index} - catch {unset auto_oldpath} + unset -nocomplain ::auto_execs ::auto_index ::auto_oldpath } # tcl_findLibrary -- -- cgit v0.12 From ea9b9e398b69f4bf77129c1ce31259f184ac2120 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 27 Jan 2005 22:26:17 +0000 Subject: typo --- library/auto.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/auto.tcl b/library/auto.tcl index e2b503e..3262f5f 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.4 2005/01/25 17:58:44 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.5 2005/01/27 22:26:17 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -32,7 +32,7 @@ proc auto_reset {} { if {[lsearch -exact { ::unknown ::pkg_mkIndex ::tclPkgSetup ::tcl_findLibrary ::pkg_compareExtension ::tclPkgUnknown ::tcl::MacOSXPkgUnknown - ::tcl::MacPkgUnknown} $fqcn] != -1)} {continue} + ::tcl::MacPkgUnknown} $fqcn] != -1} {continue} rename $fqcn {} } } -- cgit v0.12 From 2123231f4d20076fce7107118855c3b04308298b Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 27 Jan 2005 22:53:23 +0000 Subject: TIP#218 IMPLEMENTATION * generic/tclDecls.h: Regenerated from tcl.decls. * generic/tclStubInit.c: * doc/CrtChannel.3: Documentation of extended API, * generic/tcl.decls: extended testsuite, and * generic/tcl.h: implementation. Removal of old * generic/tclIO.c: driver-specific TclpCut/Splice * generic/tclInt.h: functions. Replaced with generic * tests/io.test: thread-action calls through the * unix/tclUnixChan.c: new hooks. Update of all builtin * unix/tclUnixPipe.c: channel drivers to version 4. * unix/tclUnixSock.c: Windows drivers extended to * win/tclWinChan.c: manage thread state in a thread * win/tclWinConsole.c: action handler. * win/tclWinPipe.c: * win/tclWinSerial.c: * win/tclWinSock.c: * mac/tclMacChan.c: --- ChangeLog | 23 ++++++ doc/CrtChannel.3 | 71 ++++++++++++++++--- generic/tcl.decls | 20 +++++- generic/tcl.h | 23 +++++- generic/tclDecls.h | 190 +++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclIO.c | 72 +++++++++++++++---- generic/tclInt.h | 4 +- generic/tclStubInit.c | 63 ++++++++++++++++- mac/tclMacChan.c | 117 ++++++++++++------------------- tests/io.test | 8 ++- unix/tclUnixChan.c | 129 ++++++++++++++-------------------- unix/tclUnixPipe.c | 6 +- win/tclWinChan.c | 114 +++++++++++------------------- win/tclWinConsole.c | 80 ++++++++++++++++++--- win/tclWinPipe.c | 67 ++++++++++++++++-- win/tclWinSerial.c | 87 +++++++++++++++++++---- win/tclWinSock.c | 123 ++++++++++++++++++++++++++------ 17 files changed, 891 insertions(+), 306 deletions(-) diff --git a/ChangeLog b/ChangeLog index 001b182..f3bf04d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2005-01-27 Andreas Kupries + + TIP#218 IMPLEMENTATION + + * generic/tclDecls.h: Regenerated from tcl.decls. + * generic/tclStubInit.c: + + * doc/CrtChannel.3: Documentation of extended API, + * generic/tcl.decls: extended testsuite, and + * generic/tcl.h: implementation. Removal of old + * generic/tclIO.c: driver-specific TclpCut/Splice + * generic/tclInt.h: functions. Replaced with generic + * tests/io.test: thread-action calls through the + * unix/tclUnixChan.c: new hooks. Update of all builtin + * unix/tclUnixPipe.c: channel drivers to version 4. + * unix/tclUnixSock.c: Windows drivers extended to + * win/tclWinChan.c: manage thread state in a thread + * win/tclWinConsole.c: action handler. + * win/tclWinPipe.c: + * win/tclWinSerial.c: + * win/tclWinSock.c: + * mac/tclMacChan.c: + 2005-01-25 Don Porter * library/auto.tcl: Updated [auto_reset] to clear auto-loaded diff --git a/doc/CrtChannel.3 b/doc/CrtChannel.3 index b2360ba..73cea4a 100644 --- a/doc/CrtChannel.3 +++ b/doc/CrtChannel.3 @@ -5,13 +5,13 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.2 2004/11/02 09:21:25 dkf Exp $ +'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.3 2005/01/27 22:53:27 andreas_kupries Exp $ .so man.macros -.TH Tcl_CreateChannel 3 8.3 Tcl "Tcl Library Procedures" +.TH Tcl_CreateChannel 3 8.4 Tcl "Tcl Library Procedures" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME -Tcl_CreateChannel, Tcl_GetChannelInstanceData, Tcl_GetChannelType, Tcl_GetChannelName, Tcl_GetChannelHandle, Tcl_GetChannelMode, Tcl_GetChannelBufferSize, Tcl_SetChannelBufferSize, Tcl_NotifyChannel, Tcl_BadChannelOption, Tcl_ChannelName, Tcl_ChannelVersion, Tcl_ChannelBlockModeProc, Tcl_ChannelCloseProc, Tcl_ChannelClose2Proc, Tcl_ChannelInputProc, Tcl_ChannelOutputProc, Tcl_ChannelSeekProc, Tcl_ChannelWideSeekProc, Tcl_ChannelSetOptionProc, Tcl_ChannelGetOptionProc, Tcl_ChannelWatchProc, Tcl_ChannelGetHandleProc, Tcl_ChannelFlushProc, Tcl_ChannelHandlerProc, Tcl_IsChannelShared, Tcl_IsChannelRegistered, Tcl_CutChannel, Tcl_SpliceChannel, Tcl_IsChannelExisting, Tcl_ClearChannelHandlers, Tcl_GetChannelThread, Tcl_ChannelBuffered \- procedures for creating and manipulating channels +Tcl_CreateChannel, Tcl_GetChannelInstanceData, Tcl_GetChannelType, Tcl_GetChannelName, Tcl_GetChannelHandle, Tcl_GetChannelMode, Tcl_GetChannelBufferSize, Tcl_SetChannelBufferSize, Tcl_NotifyChannel, Tcl_BadChannelOption, Tcl_ChannelName, Tcl_ChannelVersion, Tcl_ChannelBlockModeProc, Tcl_ChannelCloseProc, Tcl_ChannelClose2Proc, Tcl_ChannelInputProc, Tcl_ChannelOutputProc, Tcl_ChannelSeekProc, Tcl_ChannelWideSeekProc, Tcl_ChannelSetOptionProc, Tcl_ChannelGetOptionProc, Tcl_ChannelWatchProc, Tcl_ChannelGetHandleProc, Tcl_ChannelFlushProc, Tcl_ChannelHandlerProc, Tcl_ChannelThreadActionProc, Tcl_IsChannelShared, Tcl_IsChannelRegistered, Tcl_CutChannel, Tcl_SpliceChannel, Tcl_IsChannelExisting, Tcl_ClearChannelHandlers, Tcl_GetChannelThread, Tcl_ChannelBuffered \- procedures for creating and manipulating channels .SH SYNOPSIS .nf \fB#include \fR @@ -99,6 +99,9 @@ Tcl_DriverSeekProc * .VS 8.4 Tcl_DriverWideSeekProc * \fBTcl_ChannelWideSeekProc\fR(\fItypePtr\fR) +.sp +Tcl_DriverThreadActionProc * +\fBTcl_ChannelThreadActionProc\fR(\fItypePtr\fR) .VE 8.4 .sp Tcl_DriverSetOptionProc * @@ -289,10 +292,20 @@ name is registered in the (thread)-global list of all channels (result (thread)global list of all channels (of the current thread). Application to a channel still registered in some interpreter is not allowed. +.VS 8.4 +Also notifies the driver if the \fBTcl_ChannelType\fR version is +\fBTCL_CHANNEL_VERSION_4\fR (or higher), and +\fBTcl_DriverThreadActionProc\fR is defined for it. +.VE 8.4 .PP \fBTcl_SpliceChannel\fR adds the specified \fIchannel\fR to the (thread)global list of all channels (of the current thread). Application to a channel registered in some interpreter is not allowed. +.VS 8.4 +Also notifies the driver if the \fBTcl_ChannelType\fR version is +\fBTCL_CHANNEL_VERSION_4\fR (or higher), and +\fBTcl_DriverThreadActionProc\fR is defined for it. +.VE 8.4 .PP \fBTcl_ClearChannelHandlers\fR removes all channelhandlers and event scripts associated with the specified \fIchannel\fR, thus shutting @@ -326,6 +339,7 @@ typedef struct Tcl_ChannelType { Tcl_DriverFlushProc *\fIflushProc\fR; Tcl_DriverHandlerProc *\fIhandlerProc\fR; Tcl_DriverWideSeekProc *\fIwideSeekProc\fR; + Tcl_DriverThreadActionProc *\fIthreadActionProc\fR; } Tcl_ChannelType; .CE .PP @@ -346,6 +360,7 @@ structure, the following functions should be used to obtain the values: \fBTcl_ChannelOutputProc\fR, \fBTcl_ChannelSeekProc\fR, .VS 8.4 \fBTcl_ChannelWideSeekProc\fR, +\fBTcl_ChannelThreadActionProc\fR, .VE 8.4 \fBTcl_ChannelSetOptionProc\fR, \fBTcl_ChannelGetOptionProc\fR, \fBTcl_ChannelWatchProc\fR, \fBTcl_ChannelGetHandleProc\fR, @@ -367,18 +382,27 @@ a pointer to the string. .SH VERSION .PP -The \fIversion\fR field should be set to \fBTCL_CHANNEL_VERSION_2\fR. -If it is not set to this value \fBTCL_CHANNEL_VERSION_3\fR, then this -\fBTcl_ChannelType\fR is assumed to have the older structure. See + +The \fIversion\fR field should be set to the version of the structure +that you require. \fBTCL_CHANNEL_VERSION_2\fR is the minimum recommended. +.VS 8.4 +\fBTCL_CHANNEL_VERSION_3\fR must be set to specifiy the \fIwideSeekProc\fR member. +.VE 8.4 +.VS 8.4 +\fBTCL_CHANNEL_VERSION_4\fR must be set to specifiy the +\fIthreadActionProc\fR member (includes \fIwideSeekProc\fR). +.VE 8.4 +If it is not set to any of these, then this +\fBTcl_ChannelType\fR is assumed to have the original structure. See \fBOLD CHANNEL TYPES\fR for more details. While Tcl will recognize -and function with either structure, stacked channels must be of at +and function with either structures, stacked channels must be of at least \fBTCL_CHANNEL_VERSION_2\fR to function correctly. .PP This value can be retrieved with \fBTcl_ChannelVersion\fR, which returns .VS 8.4 -one of \fBTCL_CHANNEL_VERSION_3\fR, +one of \fBTCL_CHANNEL_VERSION_4\fR, \fBTCL_CHANNEL_VERSION_3\fR, .VE 8.4 -\fBTCL_CHANNEL_VERSION_2\fR or \fBTCL_CHANNEL_VERSION_1\fR. +\fBTCL_CHANNEL_VERSION_2\fR, or \fBTCL_CHANNEL_VERSION_1\fR. .SH BLOCKMODEPROC .PP @@ -790,6 +814,35 @@ type of event occurred on this channel. This value can be retrieved with \fBTcl_ChannelHandlerProc\fR, which returns a pointer to the function. +.VS 8.4 +.SH "THREADACTIONPROC" +.PP +The \fthreadActionProc\fR field contains the address of the function +called by the generic layer when a channel is created, closed, or +going to move to a different thread, i.e. whenever thread-specific +driver state might have to initialized or updated. It can be NULL. +The action \fITCL_CHANNEL_THREAD_REMOVE\fR is used to notify the +driver that it should update or remove any thread-specific data it +might be maintaining for the channel. +.PP +The action \fITCL_CHANNEL_THREAD_INSERT\fR is used to notify the +driver that it should update or initialize any thread-specific data it +might be maintaining using the calling thread as the associate. See +\fBTcl_CutChannel\fR and \fBTcl_SpliceChannel\fR for more detail. +.PP +.CS +typedef void Tcl_DriverThreadActionProc( + ClientData \fIinstanceData\fR, + int \fIaction\fR); +.CE +.PP +\fIInstanceData\fR is the same as the value passed to +\fBTcl_CreateChannel\fR when this channel was created. +.PP +These values can be retrieved with \fBTcl_ChannelThreadActionProc\fR, +which returns a pointer to the function. +.VE 8.4 + .SH TCL_BADCHANNELOPTION .PP This procedure generates a "bad option" error message in an diff --git a/generic/tcl.decls b/generic/tcl.decls index 86151b0..ed95c57 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tcl.decls,v 1.94.2.2 2003/05/13 09:57:40 mistachkin Exp $ +# RCS: @(#) $Id: tcl.decls,v 1.94.2.3 2005/01/27 22:53:28 andreas_kupries Exp $ library tcl @@ -1754,6 +1754,24 @@ declare 493 generic { Tcl_ChannelType *chanTypePtr) } +# Slots 494 to 553 are taken already by 8.5 +# #111 - Dicts (494 ... 504) +# #59 - Config (505) +# #139 - Namespace API (506 ... 517) +# #137 - source -encoding (518) +# #121 - ExitProc (519) +# #121 - Resource Limits (520 ... 534) +# #226 - S/R Interp State (535 ... 537) +# #227 - S/G Return Opts (538 ... 539) +# #235 - Ensemble C API (540 ... 551) +# #233 - Virtualized Time (552 ... 553) + +# TIP#218 (Driver Thread Actions) davygrvy/akupries ChannelType ver 4 +# These slots are used by 8.5 as well. +declare 554 generic { + Tcl_DriverThreadActionProc *Tcl_ChannelThreadActionProc(Tcl_ChannelType *chanTypePtr) +} + ############################################################################## # Define the platform specific public Tcl interface. These functions are diff --git a/generic/tcl.h b/generic/tcl.h index 75418e3..242e352 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.16 2004/11/25 00:19:27 hobbs Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.17 2005/01/27 22:53:29 andreas_kupries Exp $ */ #ifndef _TCL @@ -1425,6 +1425,14 @@ typedef int (Tcl_WaitForEventProc) _ANSI_ARGS_((Tcl_Time *timePtr)); #define TCL_CHANNEL_VERSION_1 ((Tcl_ChannelTypeVersion) 0x1) #define TCL_CHANNEL_VERSION_2 ((Tcl_ChannelTypeVersion) 0x2) #define TCL_CHANNEL_VERSION_3 ((Tcl_ChannelTypeVersion) 0x3) +#define TCL_CHANNEL_VERSION_4 ((Tcl_ChannelTypeVersion) 0x4) + +/* + * TIP #218: Channel Actions, Ids for Tcl_DriverThreadActionProc + */ + +#define TCL_CHANNEL_THREAD_INSERT (0) +#define TCL_CHANNEL_THREAD_REMOVE (1) /* * Typedefs for the various operations in a channel type: @@ -1460,6 +1468,9 @@ typedef Tcl_WideInt (Tcl_DriverWideSeekProc) _ANSI_ARGS_(( ClientData instanceData, Tcl_WideInt offset, int mode, int *errorCodePtr)); + /* TIP #218, Channel Thread Actions */ +typedef void (Tcl_DriverThreadActionProc) _ANSI_ARGS_ (( + ClientData instanceData, int action)); /* * The following declarations either map ckalloc and ckfree to @@ -1550,6 +1561,16 @@ typedef struct Tcl_ChannelType { * handle 64-bit offsets. May be * NULL, and must be NULL if * seekProc is NULL. */ + + /* + * Only valid in TCL_CHANNEL_VERSION_4 channels or later + * TIP #218, Channel Thread Actions + */ + Tcl_DriverThreadActionProc *threadActionProc; + /* Procedure to call to notify + * the driver of thread specific + * activity for a channel. + * May be NULL. */ } Tcl_ChannelType; /* diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 7cb8616..8ecbe80 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDecls.h,v 1.93.2.5 2004/06/10 17:17:42 andreas_kupries Exp $ + * RCS: @(#) $Id: tclDecls.h,v 1.93.2.6 2005/01/27 22:53:30 andreas_kupries Exp $ */ #ifndef _TCLDECLS @@ -1564,6 +1564,69 @@ EXTERN Tcl_WideInt Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); /* 493 */ EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( Tcl_ChannelType * chanTypePtr)); +/* Slot 494 is reserved */ +/* Slot 495 is reserved */ +/* Slot 496 is reserved */ +/* Slot 497 is reserved */ +/* Slot 498 is reserved */ +/* Slot 499 is reserved */ +/* Slot 500 is reserved */ +/* Slot 501 is reserved */ +/* Slot 502 is reserved */ +/* Slot 503 is reserved */ +/* Slot 504 is reserved */ +/* Slot 505 is reserved */ +/* Slot 506 is reserved */ +/* Slot 507 is reserved */ +/* Slot 508 is reserved */ +/* Slot 509 is reserved */ +/* Slot 510 is reserved */ +/* Slot 511 is reserved */ +/* Slot 512 is reserved */ +/* Slot 513 is reserved */ +/* Slot 514 is reserved */ +/* Slot 515 is reserved */ +/* Slot 516 is reserved */ +/* Slot 517 is reserved */ +/* Slot 518 is reserved */ +/* Slot 519 is reserved */ +/* Slot 520 is reserved */ +/* Slot 521 is reserved */ +/* Slot 522 is reserved */ +/* Slot 523 is reserved */ +/* Slot 524 is reserved */ +/* Slot 525 is reserved */ +/* Slot 526 is reserved */ +/* Slot 527 is reserved */ +/* Slot 528 is reserved */ +/* Slot 529 is reserved */ +/* Slot 530 is reserved */ +/* Slot 531 is reserved */ +/* Slot 532 is reserved */ +/* Slot 533 is reserved */ +/* Slot 534 is reserved */ +/* Slot 535 is reserved */ +/* Slot 536 is reserved */ +/* Slot 537 is reserved */ +/* Slot 538 is reserved */ +/* Slot 539 is reserved */ +/* Slot 540 is reserved */ +/* Slot 541 is reserved */ +/* Slot 542 is reserved */ +/* Slot 543 is reserved */ +/* Slot 544 is reserved */ +/* Slot 545 is reserved */ +/* Slot 546 is reserved */ +/* Slot 547 is reserved */ +/* Slot 548 is reserved */ +/* Slot 549 is reserved */ +/* Slot 550 is reserved */ +/* Slot 551 is reserved */ +/* Slot 552 is reserved */ +/* Slot 553 is reserved */ +/* 554 */ +EXTERN Tcl_DriverThreadActionProc * Tcl_ChannelThreadActionProc _ANSI_ARGS_(( + Tcl_ChannelType * chanTypePtr)); typedef struct TclStubHooks { struct TclPlatStubs *tclPlatStubs; @@ -2117,6 +2180,67 @@ typedef struct TclStubs { Tcl_WideInt (*tcl_Seek) _ANSI_ARGS_((Tcl_Channel chan, Tcl_WideInt offset, int mode)); /* 491 */ Tcl_WideInt (*tcl_Tell) _ANSI_ARGS_((Tcl_Channel chan)); /* 492 */ Tcl_DriverWideSeekProc * (*tcl_ChannelWideSeekProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 493 */ + void *reserved494; + void *reserved495; + void *reserved496; + void *reserved497; + void *reserved498; + void *reserved499; + void *reserved500; + void *reserved501; + void *reserved502; + void *reserved503; + void *reserved504; + void *reserved505; + void *reserved506; + void *reserved507; + void *reserved508; + void *reserved509; + void *reserved510; + void *reserved511; + void *reserved512; + void *reserved513; + void *reserved514; + void *reserved515; + void *reserved516; + void *reserved517; + void *reserved518; + void *reserved519; + void *reserved520; + void *reserved521; + void *reserved522; + void *reserved523; + void *reserved524; + void *reserved525; + void *reserved526; + void *reserved527; + void *reserved528; + void *reserved529; + void *reserved530; + void *reserved531; + void *reserved532; + void *reserved533; + void *reserved534; + void *reserved535; + void *reserved536; + void *reserved537; + void *reserved538; + void *reserved539; + void *reserved540; + void *reserved541; + void *reserved542; + void *reserved543; + void *reserved544; + void *reserved545; + void *reserved546; + void *reserved547; + void *reserved548; + void *reserved549; + void *reserved550; + void *reserved551; + void *reserved552; + void *reserved553; + Tcl_DriverThreadActionProc * (*tcl_ChannelThreadActionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 554 */ } TclStubs; #ifdef __cplusplus @@ -4133,6 +4257,70 @@ extern TclStubs *tclStubsPtr; #define Tcl_ChannelWideSeekProc \ (tclStubsPtr->tcl_ChannelWideSeekProc) /* 493 */ #endif +/* Slot 494 is reserved */ +/* Slot 495 is reserved */ +/* Slot 496 is reserved */ +/* Slot 497 is reserved */ +/* Slot 498 is reserved */ +/* Slot 499 is reserved */ +/* Slot 500 is reserved */ +/* Slot 501 is reserved */ +/* Slot 502 is reserved */ +/* Slot 503 is reserved */ +/* Slot 504 is reserved */ +/* Slot 505 is reserved */ +/* Slot 506 is reserved */ +/* Slot 507 is reserved */ +/* Slot 508 is reserved */ +/* Slot 509 is reserved */ +/* Slot 510 is reserved */ +/* Slot 511 is reserved */ +/* Slot 512 is reserved */ +/* Slot 513 is reserved */ +/* Slot 514 is reserved */ +/* Slot 515 is reserved */ +/* Slot 516 is reserved */ +/* Slot 517 is reserved */ +/* Slot 518 is reserved */ +/* Slot 519 is reserved */ +/* Slot 520 is reserved */ +/* Slot 521 is reserved */ +/* Slot 522 is reserved */ +/* Slot 523 is reserved */ +/* Slot 524 is reserved */ +/* Slot 525 is reserved */ +/* Slot 526 is reserved */ +/* Slot 527 is reserved */ +/* Slot 528 is reserved */ +/* Slot 529 is reserved */ +/* Slot 530 is reserved */ +/* Slot 531 is reserved */ +/* Slot 532 is reserved */ +/* Slot 533 is reserved */ +/* Slot 534 is reserved */ +/* Slot 535 is reserved */ +/* Slot 536 is reserved */ +/* Slot 537 is reserved */ +/* Slot 538 is reserved */ +/* Slot 539 is reserved */ +/* Slot 540 is reserved */ +/* Slot 541 is reserved */ +/* Slot 542 is reserved */ +/* Slot 543 is reserved */ +/* Slot 544 is reserved */ +/* Slot 545 is reserved */ +/* Slot 546 is reserved */ +/* Slot 547 is reserved */ +/* Slot 548 is reserved */ +/* Slot 549 is reserved */ +/* Slot 550 is reserved */ +/* Slot 551 is reserved */ +/* Slot 552 is reserved */ +/* Slot 553 is reserved */ +#ifndef Tcl_ChannelThreadActionProc +#define Tcl_ChannelThreadActionProc \ + (tclStubsPtr->tcl_ChannelThreadActionProc) /* 554 */ +#endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclIO.c b/generic/tclIO.c index 054cc89..90451c1 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.8 2004/09/10 20:06:41 dkf Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.9 2005/01/27 22:53:32 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1208,18 +1208,19 @@ Tcl_CreateChannel(typePtr, chanName, instanceData, mask) * in the list on exit. * * JH: Could call Tcl_SpliceChannel, but need to avoid NULL check. + * + * TIP #218. + * AK: Just initialize the field to NULL before invoking Tcl_SpliceChannel + * We need Tcl_SpliceChannel, for the threadAction calls. + * There is no real reason to duplicate all of this. + * NOTE: All drivers using thread actions now have to perform their TSD + * manipulation only in their thread action proc. Doing it when + * creating their instance structures will collide with the thread + * action activity and lead to damaged lists. */ - statePtr->nextCSPtr = tsdPtr->firstCSPtr; - tsdPtr->firstCSPtr = statePtr; - - /* - * TIP #10. Mark the current thread as the one managing the new - * channel. Note: 'Tcl_GetCurrentThread' returns sensible - * values even for a non-threaded core. - */ - - statePtr->managingThread = Tcl_GetCurrentThread (); + statePtr->nextCSPtr = (ChannelState *) NULL; + Tcl_SpliceChannel ((Tcl_Channel) chanPtr); /* * Install this channel in the first empty standard channel slot, if @@ -2378,7 +2379,7 @@ CloseChannel(interp, chanPtr, errorCode) * Resets the field 'nextCSPtr' of the specified channel state to NULL. * * NOTE: - * The channel to splice out of the list must not be referenced + * The channel to cut out of the list must not be referenced * in any interpreter. This is something this procedure cannot * check (despite the refcount) because the caller usually wants * fiddle with the channel (like transfering it to a different @@ -2400,6 +2401,7 @@ Tcl_CutChannel(chan) * channel out of the list on close. */ ChannelState *statePtr = ((Channel *) chan)->state; /* state of the channel stack. */ + Tcl_DriverThreadActionProc *threadActionProc; /* * Remove this channel from of the list of all channels @@ -2422,7 +2424,12 @@ Tcl_CutChannel(chan) statePtr->nextCSPtr = (ChannelState *) NULL; - TclpCutFileChannel(chan); + /* TIP #218, Channel Thread Actions */ + threadActionProc = Tcl_ChannelThreadActionProc (Tcl_GetChannelType (chan)); + if (threadActionProc != NULL) { + (*threadActionProc) (Tcl_GetChannelInstanceData(chan), + TCL_CHANNEL_THREAD_REMOVE); + } } /* @@ -2441,7 +2448,7 @@ Tcl_CutChannel(chan) * Nothing. * * NOTE: - * The channel to add to the list must not be referenced in any + * The channel to splice into the list must not be referenced in any * interpreter. This is something this procedure cannot check * (despite the refcount) because the caller usually wants figgle * with the channel (like transfering it to a different thread) @@ -2459,6 +2466,7 @@ Tcl_SpliceChannel(chan) { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); ChannelState *statePtr = ((Channel *) chan)->state; + Tcl_DriverThreadActionProc *threadActionProc; if (statePtr->nextCSPtr != (ChannelState *) NULL) { panic("Tcl_SpliceChannel: trying to add channel used in different list"); @@ -2475,7 +2483,12 @@ Tcl_SpliceChannel(chan) statePtr->managingThread = Tcl_GetCurrentThread (); - TclpSpliceFileChannel(chan); + /* TIP #218, Channel Thread Actions */ + threadActionProc = Tcl_ChannelThreadActionProc (Tcl_GetChannelType (chan)); + if (threadActionProc != NULL) { + (*threadActionProc) (Tcl_GetChannelInstanceData(chan), + TCL_CHANNEL_THREAD_INSERT); + } } /* @@ -8902,6 +8915,8 @@ Tcl_ChannelVersion(chanTypePtr) return TCL_CHANNEL_VERSION_2; } else if (chanTypePtr->version == TCL_CHANNEL_VERSION_3) { return TCL_CHANNEL_VERSION_3; + } else if (chanTypePtr->version == TCL_CHANNEL_VERSION_4) { + return TCL_CHANNEL_VERSION_4; } else { /* * In threadActionProc; + } else { + return NULL; + } +} #if 0 /* For future debugging work, a simple function to print the flags of diff --git a/generic/tclInt.h b/generic/tclInt.h index c3c0904..81d1304 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.7 2004/07/21 01:30:57 hobbs Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.8 2005/01/27 22:53:33 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -1749,8 +1749,6 @@ EXTERN int TclpObjStat _ANSI_ARGS_((Tcl_Obj *pathPtr, Tcl_StatBuf *buf)); EXTERN Tcl_Channel TclpOpenFileChannel _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *pathPtr, int mode, int permissions)); -EXTERN void TclpCutFileChannel _ANSI_ARGS_((Tcl_Channel chan)); -EXTERN void TclpSpliceFileChannel _ANSI_ARGS_((Tcl_Channel chan)); EXTERN void TclpPanic _ANSI_ARGS_(TCL_VARARGS(CONST char *, format)); EXTERN char * TclpReadlink _ANSI_ARGS_((CONST char *fileName, diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index d054577..b61bf2c 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.8 2004/10/14 15:30:52 dkf Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.9 2005/01/27 22:53:34 andreas_kupries Exp $ */ #include "tclInt.h" @@ -953,6 +953,67 @@ TclStubs tclStubs = { Tcl_Seek, /* 491 */ Tcl_Tell, /* 492 */ Tcl_ChannelWideSeekProc, /* 493 */ + NULL, /* 494 */ + NULL, /* 495 */ + NULL, /* 496 */ + NULL, /* 497 */ + NULL, /* 498 */ + NULL, /* 499 */ + NULL, /* 500 */ + NULL, /* 501 */ + NULL, /* 502 */ + NULL, /* 503 */ + NULL, /* 504 */ + NULL, /* 505 */ + NULL, /* 506 */ + NULL, /* 507 */ + NULL, /* 508 */ + NULL, /* 509 */ + NULL, /* 510 */ + NULL, /* 511 */ + NULL, /* 512 */ + NULL, /* 513 */ + NULL, /* 514 */ + NULL, /* 515 */ + NULL, /* 516 */ + NULL, /* 517 */ + NULL, /* 518 */ + NULL, /* 519 */ + NULL, /* 520 */ + NULL, /* 521 */ + NULL, /* 522 */ + NULL, /* 523 */ + NULL, /* 524 */ + NULL, /* 525 */ + NULL, /* 526 */ + NULL, /* 527 */ + NULL, /* 528 */ + NULL, /* 529 */ + NULL, /* 530 */ + NULL, /* 531 */ + NULL, /* 532 */ + NULL, /* 533 */ + NULL, /* 534 */ + NULL, /* 535 */ + NULL, /* 536 */ + NULL, /* 537 */ + NULL, /* 538 */ + NULL, /* 539 */ + NULL, /* 540 */ + NULL, /* 541 */ + NULL, /* 542 */ + NULL, /* 543 */ + NULL, /* 544 */ + NULL, /* 545 */ + NULL, /* 546 */ + NULL, /* 547 */ + NULL, /* 548 */ + NULL, /* 549 */ + NULL, /* 550 */ + NULL, /* 551 */ + NULL, /* 552 */ + NULL, /* 553 */ + Tcl_ChannelThreadActionProc, /* 554 */ }; /* !END!: Do not edit above this line. */ diff --git a/mac/tclMacChan.c b/mac/tclMacChan.c index 555e333..4c40c01 100644 --- a/mac/tclMacChan.c +++ b/mac/tclMacChan.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacChan.c,v 1.21 2003/03/03 20:22:42 das Exp $ + * RCS: @(#) $Id: tclMacChan.c,v 1.21.2.1 2005/01/27 22:53:34 andreas_kupries Exp $ */ #include "tclInt.h" @@ -102,6 +102,8 @@ static int FileSeek _ANSI_ARGS_((ClientData instanceData, long offset, int mode, int *errorCode)); static void FileSetupProc _ANSI_ARGS_((ClientData clientData, int flags)); +static void FileThreadActionProc _ANSI_ARGS_ (( + ClientData instanceData, int action)); static Tcl_Channel OpenFileChannel _ANSI_ARGS_((CONST char *fileName, int mode, int permissions, int *errorCodePtr)); static int StdIOBlockMode _ANSI_ARGS_((ClientData instanceData, @@ -123,7 +125,7 @@ static int StdReady _ANSI_ARGS_((ClientData instanceData, static Tcl_ChannelType consoleChannelType = { "file", /* Type name. */ - (Tcl_ChannelTypeVersion)StdIOBlockMode, /* Set blocking/nonblocking mode.*/ + TCL_CHANNEL_VERSION_4, /* v4 channel */ StdIOClose, /* Close proc. */ StdIOInput, /* Input proc. */ StdIOOutput, /* Output proc. */ @@ -132,6 +134,12 @@ static Tcl_ChannelType consoleChannelType = { NULL, /* Get option proc. */ CommonWatch, /* Initialize notifier. */ CommonGetHandle /* Get OS handles out of channel. */ + NULL, /* close2proc. */ + StdIOBlockMode, /* Set blocking/nonblocking mode.*/ + NULL, /* flush proc. */ + NULL, /* handler proc. */ + NULL, /* wide seek proc. */ + NULL, /* thread actions */ }; /* @@ -140,8 +148,7 @@ static Tcl_ChannelType consoleChannelType = { static Tcl_ChannelType fileChannelType = { "file", /* Type name. */ - (Tcl_ChannelTypeVersion)FileBlockMode, /* Set blocking or - * non-blocking mode.*/ + TCL_CHANNEL_VERSION_4, /* v4 channel */ FileClose, /* Close proc. */ FileInput, /* Input proc. */ FileOutput, /* Output proc. */ @@ -150,6 +157,12 @@ static Tcl_ChannelType fileChannelType = { NULL, /* Get option proc. */ CommonWatch, /* Initialize notifier. */ CommonGetHandle /* Get OS handles out of channel. */ + NULL, /* close2proc. */ + FileBlockMode, /* Set blocking/nonblocking mode.*/ + NULL, /* flush proc. */ + NULL, /* handler proc. */ + NULL, /* wide seek proc. */ + FileThreadActionProc, /* thread actions */ }; @@ -1212,10 +1225,9 @@ CommonWatch( /* *---------------------------------------------------------------------- * - * TclpCutFileChannel -- + * FileThreadActionProc -- * - * Remove any thread local refs to this channel. See - * Tcl_CutChannel for more info. + * Insert or remove any thread local refs to this channel. * * Results: * None. @@ -1226,75 +1238,38 @@ CommonWatch( *---------------------------------------------------------------------- */ -void -TclpCutFileChannel(chan) - Tcl_Channel chan; /* The channel being removed. Must - * not be referenced in any - * interpreter. */ +static void +FileThreadActionProc (instanceData, action) + ClientData instanceData; + int action; { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - Channel *chanPtr = (Channel *) chan; - FileState *infoPtr; - FileState **nextPtrPtr; - int removed = 0; + FileState *infoPtr = (FileState *) instanceData; - if (chanPtr->typePtr != &fileChannelType) - return; + if (action == TCL_CHANNEL_THREAD_INSERT) { + infoPtr->nextPtr = tsdPtr->firstFilePtr; + tsdPtr->firstFilePtr = infoPtr; + } else { + FileState **nextPtrPtr; + int removed = 0; + + for (nextPtrPtr = &(tsdPtr->firstFilePtr); (*nextPtrPtr) != NULL; + nextPtrPtr = &((*nextPtrPtr)->nextPtr)) { + if ((*nextPtrPtr) == infoPtr) { + (*nextPtrPtr) = infoPtr->nextPtr; + removed = 1; + break; + } + } - infoPtr = (FileState *) chanPtr->instanceData; + /* + * This could happen if the channel was created in one thread + * and then moved to another without updating the thread + * local data in each thread. + */ - for (nextPtrPtr = &(tsdPtr->firstFilePtr); (*nextPtrPtr) != NULL; - nextPtrPtr = &((*nextPtrPtr)->nextPtr)) { - if ((*nextPtrPtr) == infoPtr) { - (*nextPtrPtr) = infoPtr->nextPtr; - removed = 1; - break; + if (!removed) { + panic("file info ptr not on thread channel list"); } } - - /* - * This could happen if the channel was created in one thread - * and then moved to another without updating the thread - * local data in each thread. - */ - - if (!removed) - panic("file info ptr not on thread channel list"); - -} - -/* - *---------------------------------------------------------------------- - * - * TclpSpliceFileChannel -- - * - * Insert thread local ref for this channel. - * Tcl_SpliceChannel for more info. - * - * Results: - * None. - * - * Side effects: - * Changes thread local list of valid channels. - * - *---------------------------------------------------------------------- - */ - -void -TclpSpliceFileChannel(chan) - Tcl_Channel chan; /* The channel being removed. Must - * not be referenced in any - * interpreter. */ -{ - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - Channel *chanPtr = (Channel *) chan; - FileState *infoPtr; - - if (chanPtr->typePtr != &fileChannelType) - return; - - infoPtr = (FileState *) chanPtr->instanceData; - - infoPtr->nextPtr = tsdPtr->firstFilePtr; - tsdPtr->firstFilePtr = infoPtr; } diff --git a/tests/io.test b/tests/io.test index 9492b22..ce9fce1 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.8 2004/11/11 01:16:20 das Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.9 2005/01/27 22:53:34 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -1712,6 +1712,12 @@ test io-14.9 {reuse of stdio special channels} {stdio openpipe fileevent} { set f [open "|[list [interpreter] $path(script) [array get path]]" r] set c [gets $f] close $f + # Added delay to give Windows time to stop the spawned process and clean + # up its grip on the file test1. Added delete as proper test cleanup. + # The failing tests were 18.1 and 18.2 as first re-users of file "test1". + after 10000 + file delete $path(script) + file delete $path(test1) set c } hello diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index b875e08..b25d23f 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.4 2004/11/17 02:52:25 hobbs Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.5 2005/01/27 22:53:35 andreas_kupries Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -250,6 +250,10 @@ static int FileOutputProc _ANSI_ARGS_(( int toWrite, int *errorCode)); static int FileSeekProc _ANSI_ARGS_((ClientData instanceData, long offset, int mode, int *errorCode)); +#ifdef DEPRECATED +static void FileThreadActionProc _ANSI_ARGS_ (( + ClientData instanceData, int action)); +#endif static Tcl_WideInt FileWideSeekProc _ANSI_ARGS_((ClientData instanceData, Tcl_WideInt offset, int mode, int *errorCode)); static void FileWatchProc _ANSI_ARGS_((ClientData instanceData, @@ -305,7 +309,7 @@ static Tcl_Channel MakeTcpClientChannelMode _ANSI_ARGS_( static Tcl_ChannelType fileChannelType = { "file", /* Type name. */ - TCL_CHANNEL_VERSION_3, /* v3 channel */ + TCL_CHANNEL_VERSION_4, /* v4 channel */ FileCloseProc, /* Close proc. */ FileInputProc, /* Input proc. */ FileOutputProc, /* Output proc. */ @@ -319,6 +323,11 @@ static Tcl_ChannelType fileChannelType = { NULL, /* flush proc. */ NULL, /* handler proc. */ FileWideSeekProc, /* wide seek proc. */ +#ifdef DEPRECATED + FileThreadActionProc, /* thread actions */ +#else + NULL, +#endif }; #ifdef SUPPORTS_TTY @@ -329,7 +338,7 @@ static Tcl_ChannelType fileChannelType = { static Tcl_ChannelType ttyChannelType = { "tty", /* Type name. */ - TCL_CHANNEL_VERSION_2, /* v2 channel */ + TCL_CHANNEL_VERSION_4, /* v4 channel */ TtyCloseProc, /* Close proc. */ FileInputProc, /* Input proc. */ #if BAD_TIP35_FLUSH @@ -346,6 +355,8 @@ static Tcl_ChannelType ttyChannelType = { FileBlockModeProc, /* Set blocking or non-blocking mode.*/ NULL, /* flush proc. */ NULL, /* handler proc. */ + NULL, /* wide seek proc. */ + NULL, /* thread action proc. */ }; #endif /* SUPPORTS_TTY */ @@ -356,7 +367,7 @@ static Tcl_ChannelType ttyChannelType = { static Tcl_ChannelType tcpChannelType = { "tcp", /* Type name. */ - TCL_CHANNEL_VERSION_2, /* v2 channel */ + TCL_CHANNEL_VERSION_4, /* v4 channel */ TcpCloseProc, /* Close proc. */ TcpInputProc, /* Input proc. */ TcpOutputProc, /* Output proc. */ @@ -369,6 +380,8 @@ static Tcl_ChannelType tcpChannelType = { TcpBlockModeProc, /* Set blocking or non-blocking mode.*/ NULL, /* flush proc. */ NULL, /* handler proc. */ + NULL, /* wide seek proc. */ + NULL, /* thread action proc. */ }; @@ -1840,8 +1853,11 @@ TclpOpenFileChannel(interp, pathPtr, mode, permissions) #ifdef DEPRECATED if (channelTypePtr == &fileChannelType) { - fsPtr->nextPtr = tsdPtr->firstFilePtr; - tsdPtr->firstFilePtr = fsPtr; + /* TIP #218. Removed the code inserting the new structure + * into the global list. This is now handled in the thread + * action callbacks, and only there. + */ + fsPtr->nextPtr = NULL; } #endif /* DEPRECATED */ fsPtr->validMask = channelPermissions | TCL_EXCEPTION; @@ -3281,13 +3297,13 @@ TclUnixWaitForFile(fd, mask, timeout) return result; } +#ifdef DEPRECATED /* *---------------------------------------------------------------------- * - * TclpCutFileChannel -- + * FileThreadActionProc -- * - * Remove any thread local refs to this channel. See - * Tcl_CutChannel for more info. + * Insert or remove any thread local refs to this channel. * * Results: * None. @@ -3298,79 +3314,40 @@ TclUnixWaitForFile(fd, mask, timeout) *---------------------------------------------------------------------- */ -void -TclpCutFileChannel(chan) - Tcl_Channel chan; /* The channel being removed. Must - * not be referenced in any - * interpreter. */ +static void +FileThreadActionProc (instanceData, action) + ClientData instanceData; + int action; { -#ifdef DEPRECATED ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - Channel *chanPtr = (Channel *) chan; - FileState *fsPtr; - FileState **nextPtrPtr; - int removed = 0; + FileState *fsPtr = (FileState *) instanceData; - if (chanPtr->typePtr != &fileChannelType) - return; + if (action == TCL_CHANNEL_THREAD_INSERT) { + fsPtr->nextPtr = tsdPtr->firstFilePtr; + tsdPtr->firstFilePtr = fsPtr; + } else { + FileState **nextPtrPtr; + int removed = 0; + + for (nextPtrPtr = &(tsdPtr->firstFilePtr); (*nextPtrPtr) != NULL; + nextPtrPtr = &((*nextPtrPtr)->nextPtr)) { + if ((*nextPtrPtr) == fsPtr) { + (*nextPtrPtr) = fsPtr->nextPtr; + removed = 1; + break; + } + } - fsPtr = (FileState *) chanPtr->instanceData; + /* + * This could happen if the channel was created in one + * thread and then moved to another without updating + * the thread local data in each thread. + */ - for (nextPtrPtr = &(tsdPtr->firstFilePtr); (*nextPtrPtr) != NULL; - nextPtrPtr = &((*nextPtrPtr)->nextPtr)) { - if ((*nextPtrPtr) == fsPtr) { - (*nextPtrPtr) = fsPtr->nextPtr; - removed = 1; - break; + if (!removed) { + panic("file info ptr not on thread channel list"); } } - - /* - * This could happen if the channel was created in one thread - * and then moved to another without updating the thread - * local data in each thread. - */ - - if (!removed) - panic("file info ptr not on thread channel list"); - -#endif /* DEPRECATED */ } - -/* - *---------------------------------------------------------------------- - * - * TclpSpliceFileChannel -- - * - * Insert thread local ref for this channel. - * Tcl_SpliceChannel for more info. - * - * Results: - * None. - * - * Side effects: - * Changes thread local list of valid channels. - * - *---------------------------------------------------------------------- - */ - -void -TclpSpliceFileChannel(chan) - Tcl_Channel chan; /* The channel being removed. Must - * not be referenced in any - * interpreter. */ -{ -#ifdef DEPRECATED - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - Channel *chanPtr = (Channel *) chan; - FileState *fsPtr; - - if (chanPtr->typePtr != &fileChannelType) - return; - - fsPtr = (FileState *) chanPtr->instanceData; - - fsPtr->nextPtr = tsdPtr->firstFilePtr; - tsdPtr->firstFilePtr = fsPtr; #endif /* DEPRECATED */ -} + diff --git a/unix/tclUnixPipe.c b/unix/tclUnixPipe.c index 77788ce..f410fc3 100644 --- a/unix/tclUnixPipe.c +++ b/unix/tclUnixPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.2 2004/06/08 20:43:33 dgp Exp $ + * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.3 2005/01/27 22:53:36 andreas_kupries Exp $ */ #include "tclInt.h" @@ -72,7 +72,7 @@ static int SetupStdFile _ANSI_ARGS_((TclFile file, int type)); static Tcl_ChannelType pipeChannelType = { "pipe", /* Type name. */ - TCL_CHANNEL_VERSION_2, /* v2 channel */ + TCL_CHANNEL_VERSION_4, /* v4 channel */ PipeCloseProc, /* Close proc. */ PipeInputProc, /* Input proc. */ PipeOutputProc, /* Output proc. */ @@ -85,6 +85,8 @@ static Tcl_ChannelType pipeChannelType = { PipeBlockModeProc, /* Set blocking or non-blocking mode.*/ NULL, /* flush proc. */ NULL, /* handler proc. */ + NULL, /* wide seek proc */ + NULL, /* thread action proc */ }; /* diff --git a/win/tclWinChan.c b/win/tclWinChan.c index 9333726..b743b55 100644 --- a/win/tclWinChan.c +++ b/win/tclWinChan.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.2 2005/01/19 22:09:58 mdejong Exp $ + * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.3 2005/01/27 22:53:36 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -98,6 +98,8 @@ static void FileSetupProc _ANSI_ARGS_((ClientData clientData, int flags)); static void FileWatchProc _ANSI_ARGS_((ClientData instanceData, int mask)); +static void FileThreadActionProc _ANSI_ARGS_ (( + ClientData instanceData, int action)); /* @@ -106,7 +108,7 @@ static void FileWatchProc _ANSI_ARGS_((ClientData instanceData, static Tcl_ChannelType fileChannelType = { "file", /* Type name. */ - TCL_CHANNEL_VERSION_3, /* v3 channel */ + TCL_CHANNEL_VERSION_4, /* v4 channel */ FileCloseProc, /* Close proc. */ FileInputProc, /* Input proc. */ FileOutputProc, /* Output proc. */ @@ -120,6 +122,7 @@ static Tcl_ChannelType fileChannelType = { NULL, /* flush proc. */ NULL, /* handler proc. */ FileWideSeekProc, /* Wide seek proc. */ + FileThreadActionProc, /* Thread action proc. */ }; #if defined(HAVE_NO_SEH) && defined(TCL_MEM_DEBUG) @@ -436,11 +439,11 @@ FileCloseProc(instanceData, interp) if (infoPtr == fileInfoPtr) { /* * This channel exists on the thread local list. It should - * have been removed by an earlier call to TclpCutFileChannel, + * have been removed by an earlier Thread Action call, * but do that now since just deallocating fileInfoPtr would * leave an deallocated pointer on the thread local list. */ - TclpCutFileChannel(fileInfoPtr->channel); + FileThreadActionProc(fileInfoPtr,TCL_CHANNEL_THREAD_REMOVE); break; } } @@ -1319,8 +1322,11 @@ TclWinOpenFileChannel(handle, channelName, permissions, appendMode) } infoPtr = (FileInfo *) ckalloc((unsigned) sizeof(FileInfo)); - infoPtr->nextPtr = tsdPtr->firstFilePtr; - tsdPtr->firstFilePtr = infoPtr; + /* TIP #218. Removed the code inserting the new structure + * into the global list. This is now handled in the thread + * action callbacks, and only there. + */ + infoPtr->nextPtr = NULL; infoPtr->validMask = permissions; infoPtr->watchMask = 0; infoPtr->flags = appendMode; @@ -1389,10 +1395,9 @@ TclWinFlushDirtyChannels () /* *---------------------------------------------------------------------- * - * TclpCutFileChannel -- + * FileThreadActionProc -- * - * Remove any thread local refs to this channel. See - * Tcl_CutChannel for more info. + * Insert or remove any thread local refs to this channel. * * Results: * None. @@ -1403,75 +1408,38 @@ TclWinFlushDirtyChannels () *---------------------------------------------------------------------- */ -void -TclpCutFileChannel(chan) - Tcl_Channel chan; /* The channel being removed. Must - * not be referenced in any - * interpreter. */ +static void +FileThreadActionProc (instanceData, action) + ClientData instanceData; + int action; { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - Channel *chanPtr = (Channel *) chan; - FileInfo *infoPtr; - FileInfo **nextPtrPtr; - int removed = 0; + FileInfo *infoPtr = (FileInfo *) instanceData; - if (chanPtr->typePtr != &fileChannelType) - return; + if (action == TCL_CHANNEL_THREAD_INSERT) { + infoPtr->nextPtr = tsdPtr->firstFilePtr; + tsdPtr->firstFilePtr = infoPtr; + } else { + FileInfo **nextPtrPtr; + int removed = 0; + + for (nextPtrPtr = &(tsdPtr->firstFilePtr); (*nextPtrPtr) != NULL; + nextPtrPtr = &((*nextPtrPtr)->nextPtr)) { + if ((*nextPtrPtr) == infoPtr) { + (*nextPtrPtr) = infoPtr->nextPtr; + removed = 1; + break; + } + } - infoPtr = (FileInfo *) chanPtr->instanceData; + /* + * This could happen if the channel was created in one thread + * and then moved to another without updating the thread + * local data in each thread. + */ - for (nextPtrPtr = &(tsdPtr->firstFilePtr); (*nextPtrPtr) != NULL; - nextPtrPtr = &((*nextPtrPtr)->nextPtr)) { - if ((*nextPtrPtr) == infoPtr) { - (*nextPtrPtr) = infoPtr->nextPtr; - removed = 1; - break; + if (!removed) { + panic("file info ptr not on thread channel list"); } } - - /* - * This could happen if the channel was created in one thread - * and then moved to another without updating the thread - * local data in each thread. - */ - - if (!removed) - panic("file info ptr not on thread channel list"); - -} - -/* - *---------------------------------------------------------------------- - * - * TclpSpliceFileChannel -- - * - * Insert thread local ref for this channel. - * Tcl_SpliceChannel for more info. - * - * Results: - * None. - * - * Side effects: - * Changes thread local list of valid channels. - * - *---------------------------------------------------------------------- - */ - -void -TclpSpliceFileChannel(chan) - Tcl_Channel chan; /* The channel being removed. Must - * not be referenced in any - * interpreter. */ -{ - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - Channel *chanPtr = (Channel *) chan; - FileInfo *infoPtr; - - if (chanPtr->typePtr != &fileChannelType) - return; - - infoPtr = (FileInfo *) chanPtr->instanceData; - - infoPtr->nextPtr = tsdPtr->firstFilePtr; - tsdPtr->firstFilePtr = infoPtr; } diff --git a/win/tclWinConsole.c b/win/tclWinConsole.c index 6d3709c..2370a22 100644 --- a/win/tclWinConsole.c +++ b/win/tclWinConsole.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinConsole.c,v 1.11 2002/11/26 22:41:58 davygrvy Exp $ + * RCS: @(#) $Id: tclWinConsole.c,v 1.11.2.1 2005/01/27 22:53:37 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -148,7 +148,7 @@ static int ConsoleEventProc(Tcl_Event *evPtr, int flags); static void ConsoleExitHandler(ClientData clientData); static int ConsoleGetHandleProc(ClientData instanceData, int direction, ClientData *handlePtr); -static ThreadSpecificData *ConsoleInit(void); +static void ConsoleInit(void); static int ConsoleInputProc(ClientData instanceData, char *buf, int toRead, int *errorCode); static int ConsoleOutputProc(ClientData instanceData, @@ -160,6 +160,9 @@ static DWORD WINAPI ConsoleWriterThread(LPVOID arg); static void ProcExitHandler(ClientData clientData); static int WaitForRead(ConsoleInfo *infoPtr, int blocking); +static void ConsoleThreadActionProc _ANSI_ARGS_ (( + ClientData instanceData, int action)); + /* * This structure describes the channel type structure for command console * based IO. @@ -167,7 +170,7 @@ static int WaitForRead(ConsoleInfo *infoPtr, int blocking); static Tcl_ChannelType consoleChannelType = { "console", /* Type name. */ - TCL_CHANNEL_VERSION_2, /* v2 channel */ + TCL_CHANNEL_VERSION_4, /* v4 channel */ ConsoleCloseProc, /* Close proc. */ ConsoleInputProc, /* Input proc. */ ConsoleOutputProc, /* Output proc. */ @@ -180,6 +183,8 @@ static Tcl_ChannelType consoleChannelType = { ConsoleBlockModeProc, /* Set blocking or non-blocking mode.*/ NULL, /* flush proc. */ NULL, /* handler proc. */ + NULL, /* wide seek proc */ + ConsoleThreadActionProc, /* thread action proc */ }; /* @@ -198,7 +203,7 @@ static Tcl_ChannelType consoleChannelType = { *---------------------------------------------------------------------- */ -static ThreadSpecificData * +static void ConsoleInit() { ThreadSpecificData *tsdPtr; @@ -224,7 +229,6 @@ ConsoleInit() Tcl_CreateEventSource(ConsoleSetupProc, ConsoleCheckProc, NULL); Tcl_CreateThreadExitHandler(ConsoleExitHandler, NULL); } - return tsdPtr; } /* @@ -1170,7 +1174,10 @@ ConsoleReaderThread(LPVOID arg) */ Tcl_MutexLock(&consoleMutex); - Tcl_ThreadAlert(infoPtr->threadId); + if (infoPtr->threadId != NULL) { + /* TIP #218. When in flight ignore the event, no one will receive it anyway */ + Tcl_ThreadAlert(infoPtr->threadId); + } Tcl_MutexUnlock(&consoleMutex); } @@ -1256,7 +1263,10 @@ ConsoleWriterThread(LPVOID arg) */ Tcl_MutexLock(&consoleMutex); - Tcl_ThreadAlert(infoPtr->threadId); + if (infoPtr->threadId != NULL) { + /* TIP #218. When in flight ignore the event, no one will receive it anyway */ + Tcl_ThreadAlert(infoPtr->threadId); + } Tcl_MutexUnlock(&consoleMutex); } @@ -1291,10 +1301,9 @@ TclWinOpenConsoleChannel(handle, channelName, permissions) { char encoding[4 + TCL_INTEGER_SPACE]; ConsoleInfo *infoPtr; - ThreadSpecificData *tsdPtr; DWORD id, modes; - tsdPtr = ConsoleInit(); + ConsoleInit(); /* * See if a channel with this handle already exists. @@ -1305,9 +1314,12 @@ TclWinOpenConsoleChannel(handle, channelName, permissions) infoPtr->validMask = permissions; infoPtr->handle = handle; + infoPtr->channel = (Tcl_Channel) NULL; wsprintfA(encoding, "cp%d", GetConsoleCP()); + infoPtr->threadId = Tcl_GetCurrentThread(); + /* * Use the pointer for the name of the result channel. * This keeps the channel names unique, since some may share @@ -1319,8 +1331,6 @@ TclWinOpenConsoleChannel(handle, channelName, permissions) infoPtr->channel = Tcl_CreateChannel(&consoleChannelType, channelName, (ClientData) infoPtr, permissions); - infoPtr->threadId = Tcl_GetCurrentThread(); - if (permissions & TCL_READABLE) { /* * Make sure the console input buffer is ready for only character @@ -1361,3 +1371,51 @@ TclWinOpenConsoleChannel(handle, channelName, permissions) return infoPtr->channel; } + +/* + *---------------------------------------------------------------------- + * + * ConsoleThreadActionProc -- + * + * Insert or remove any thread local refs to this channel. + * + * Results: + * None. + * + * Side effects: + * Changes thread local list of valid channels. + * + *---------------------------------------------------------------------- + */ + +static void +ConsoleThreadActionProc (instanceData, action) + ClientData instanceData; + int action; +{ + ConsoleInfo *infoPtr = (ConsoleInfo *) instanceData; + + /* We do not access firstConsolePtr in the thread structures. This is + * not for all serials managed by the thread, but only those we are + * watching. Removal of the filevent handlers before transfer thus + * takes care of this structure. + */ + + Tcl_MutexLock(&consoleMutex); + if (action == TCL_CHANNEL_THREAD_INSERT) { + /* We can't copy the thread information from the channel when + * the channel is created. At this time the channel back + * pointer has not been set yet. However in that case the + * threadId has already been set by TclpCreateCommandChannel + * itself, so the structure is still good. + */ + + ConsoleInit (); + if (infoPtr->channel != NULL) { + infoPtr->threadId = Tcl_GetChannelThread (infoPtr->channel); + } + } else { + infoPtr->threadId = NULL; + } + Tcl_MutexUnlock(&consoleMutex); +} diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index aa54a29..57858f0 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.8 2004/05/10 20:55:44 davygrvy Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.9 2005/01/27 22:53:37 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -205,6 +205,9 @@ static void ProcExitHandler(ClientData clientData); static int TempFileName(WCHAR name[MAX_PATH]); static int WaitForRead(PipeInfo *infoPtr, int blocking); +static void PipeThreadActionProc _ANSI_ARGS_ (( + ClientData instanceData, int action)); + /* * This structure describes the channel type structure for command pipe * based IO. @@ -212,7 +215,7 @@ static int WaitForRead(PipeInfo *infoPtr, int blocking); static Tcl_ChannelType pipeChannelType = { "pipe", /* Type name. */ - TCL_CHANNEL_VERSION_2, /* v2 channel */ + TCL_CHANNEL_VERSION_4, /* v4 channel */ TCL_CLOSE2PROC, /* Close proc. */ PipeInputProc, /* Input proc. */ PipeOutputProc, /* Output proc. */ @@ -225,6 +228,8 @@ static Tcl_ChannelType pipeChannelType = { PipeBlockModeProc, /* Set blocking or non-blocking mode.*/ NULL, /* flush proc. */ NULL, /* handler proc. */ + NULL, /* wide seek proc */ + PipeThreadActionProc, /* thread action proc */ }; /* @@ -1689,6 +1694,7 @@ TclpCreateCommandChannel( infoPtr->writeBuf = 0; infoPtr->writeBufLen = 0; infoPtr->writeError = 0; + infoPtr->channel = (Tcl_Channel) NULL; /* * Use one of the fds associated with the channel as the @@ -2931,7 +2937,10 @@ PipeReaderThread(LPVOID arg) */ Tcl_MutexLock(&pipeMutex); - Tcl_ThreadAlert(infoPtr->threadId); + if (infoPtr->threadId != NULL) { + /* TIP #218. When in flight ignore the event, no one will receive it anyway */ + Tcl_ThreadAlert(infoPtr->threadId); + } Tcl_MutexUnlock(&pipeMutex); } @@ -3019,10 +3028,60 @@ PipeWriterThread(LPVOID arg) */ Tcl_MutexLock(&pipeMutex); - Tcl_ThreadAlert(infoPtr->threadId); + if (infoPtr->threadId != NULL) { + /* TIP #218. When in flight ignore the event, no one will receive it anyway */ + Tcl_ThreadAlert(infoPtr->threadId); + } Tcl_MutexUnlock(&pipeMutex); } return 0; } +/* + *---------------------------------------------------------------------- + * + * PipeThreadActionProc -- + * + * Insert or remove any thread local refs to this channel. + * + * Results: + * None. + * + * Side effects: + * Changes thread local list of valid channels. + * + *---------------------------------------------------------------------- + */ + +static void +PipeThreadActionProc (instanceData, action) + ClientData instanceData; + int action; +{ + PipeInfo *infoPtr = (PipeInfo *) instanceData; + + /* We do not access firstPipePtr in the thread structures. This is + * not for all pipes managed by the thread, but only those we are + * watching. Removal of the filevent handlers before transfer thus + * takes care of this structure. + */ + + Tcl_MutexLock(&pipeMutex); + if (action == TCL_CHANNEL_THREAD_INSERT) { + /* We can't copy the thread information from the channel when + * the channel is created. At this time the channel back + * pointer has not been set yet. However in that case the + * threadId has already been set by TclpCreateCommandChannel + * itself, so the structure is still good. + */ + + PipeInit (); + if (infoPtr->channel != NULL) { + infoPtr->threadId = Tcl_GetChannelThread (infoPtr->channel); + } + } else { + infoPtr->threadId = NULL; + } + Tcl_MutexUnlock(&pipeMutex); +} diff --git a/win/tclWinSerial.c b/win/tclWinSerial.c index 17678f2..0d363a5 100644 --- a/win/tclWinSerial.c +++ b/win/tclWinSerial.c @@ -11,7 +11,7 @@ * * Serial functionality implemented by Rolf.Schroedter@dlr.de * - * RCS: @(#) $Id: tclWinSerial.c,v 1.25.2.1 2003/05/11 00:31:41 hobbs Exp $ + * RCS: @(#) $Id: tclWinSerial.c,v 1.25.2.2 2005/01/27 22:53:38 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -190,6 +190,9 @@ static int SerialSetOptionProc _ANSI_ARGS_((ClientData instanceData, CONST char *value)); static DWORD WINAPI SerialWriterThread(LPVOID arg); +static void SerialThreadActionProc _ANSI_ARGS_ (( + ClientData instanceData, int action)); + /* * This structure describes the channel type structure for command serial * based IO. @@ -197,7 +200,7 @@ static DWORD WINAPI SerialWriterThread(LPVOID arg); static Tcl_ChannelType serialChannelType = { "serial", /* Type name. */ - TCL_CHANNEL_VERSION_2, /* v2 channel */ + TCL_CHANNEL_VERSION_4, /* v4 channel */ SerialCloseProc, /* Close proc. */ SerialInputProc, /* Input proc. */ SerialOutputProc, /* Output proc. */ @@ -210,6 +213,8 @@ static Tcl_ChannelType serialChannelType = { SerialBlockProc, /* Set blocking or non-blocking mode.*/ NULL, /* flush proc. */ NULL, /* handler proc. */ + NULL, /* wide seek proc */ + SerialThreadActionProc, /* thread action proc */ }; /* @@ -1346,7 +1351,10 @@ SerialWriterThread(LPVOID arg) */ Tcl_MutexLock(&serialMutex); - Tcl_ThreadAlert(infoPtr->threadId); + if (infoPtr->threadId != NULL) { + /* TIP #218. When in flight ignore the event, no one will receive it anyway */ + Tcl_ThreadAlert(infoPtr->threadId); + } Tcl_MutexUnlock(&serialMutex); } @@ -1419,16 +1427,25 @@ TclWinOpenSerialChannel(handle, channelName, permissions) int permissions; { SerialInfo *infoPtr; - ThreadSpecificData *tsdPtr; DWORD id; - tsdPtr = SerialInit(); + SerialInit(); infoPtr = (SerialInfo *) ckalloc((unsigned) sizeof(SerialInfo)); memset(infoPtr, 0, sizeof(SerialInfo)); - infoPtr->validMask = permissions; - infoPtr->handle = handle; + infoPtr->validMask = permissions; + infoPtr->handle = handle; + infoPtr->channel = (Tcl_Channel) NULL; + infoPtr->readable = 0; + infoPtr->writable = 1; + infoPtr->toWrite = infoPtr->writeQueue = 0; + infoPtr->blockTime = SERIAL_DEFAULT_BLOCKTIME; + infoPtr->lastEventTime = 0; + infoPtr->lastError = infoPtr->error = 0; + infoPtr->threadId = Tcl_GetCurrentThread(); + infoPtr->sysBufRead = 4096; + infoPtr->sysBufWrite = 4096; /* * Use the pointer to keep the channel names unique, in case @@ -1440,14 +1457,6 @@ TclWinOpenSerialChannel(handle, channelName, permissions) infoPtr->channel = Tcl_CreateChannel(&serialChannelType, channelName, (ClientData) infoPtr, permissions); - infoPtr->readable = 0; - infoPtr->writable = 1; - infoPtr->toWrite = infoPtr->writeQueue = 0; - infoPtr->blockTime = SERIAL_DEFAULT_BLOCKTIME; - infoPtr->lastEventTime = 0; - infoPtr->lastError = infoPtr->error = 0; - infoPtr->threadId = Tcl_GetCurrentThread(); - infoPtr->sysBufRead = infoPtr->sysBufWrite = 4096; SetupComm(handle, infoPtr->sysBufRead, infoPtr->sysBufWrite); PurgeComm(handle, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR @@ -2107,3 +2116,51 @@ SerialGetOptionProc(instanceData, interp, optionName, dsPtr) "mode pollinterval lasterror queue sysbuffer ttystatus xchar"); } } + +/* + *---------------------------------------------------------------------- + * + * SerialThreadActionProc -- + * + * Insert or remove any thread local refs to this channel. + * + * Results: + * None. + * + * Side effects: + * Changes thread local list of valid channels. + * + *---------------------------------------------------------------------- + */ + +static void +SerialThreadActionProc (instanceData, action) + ClientData instanceData; + int action; +{ + SerialInfo *infoPtr = (SerialInfo *) instanceData; + + /* We do not access firstSerialPtr in the thread structures. This is + * not for all serials managed by the thread, but only those we are + * watching. Removal of the filevent handlers before transfer thus + * takes care of this structure. + */ + + Tcl_MutexLock(&serialMutex); + if (action == TCL_CHANNEL_THREAD_INSERT) { + /* We can't copy the thread information from the channel when + * the channel is created. At this time the channel back + * pointer has not been set yet. However in that case the + * threadId has already been set by TclpCreateCommandChannel + * itself, so the structure is still good. + */ + + SerialInit (); + if (infoPtr->channel != NULL) { + infoPtr->threadId = Tcl_GetChannelThread (infoPtr->channel); + } + } else { + infoPtr->threadId = NULL; + } + Tcl_MutexUnlock(&serialMutex); +} diff --git a/win/tclWinSock.c b/win/tclWinSock.c index 3d0d5f0..9af7d3e 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.2 2004/05/06 01:03:56 davygrvy Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.3 2005/01/27 22:53:39 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -265,6 +265,10 @@ static int WaitForSocketEvent _ANSI_ARGS_(( int *errorCodePtr)); static DWORD WINAPI SocketThread _ANSI_ARGS_((LPVOID arg)); +static void TcpThreadActionProc _ANSI_ARGS_ (( + ClientData instanceData, int action)); + + /* * This structure describes the channel type structure for TCP socket * based IO. @@ -272,7 +276,7 @@ static DWORD WINAPI SocketThread _ANSI_ARGS_((LPVOID arg)); static Tcl_ChannelType tcpChannelType = { "tcp", /* Type name. */ - TCL_CHANNEL_VERSION_2, /* v2 channel */ + TCL_CHANNEL_VERSION_4, /* v4 channel */ TcpCloseProc, /* Close proc. */ TcpInputProc, /* Input proc. */ TcpOutputProc, /* Output proc. */ @@ -285,6 +289,8 @@ static Tcl_ChannelType tcpChannelType = { TcpBlockProc, /* Set socket into (non-)blocking mode. */ NULL, /* flush proc. */ NULL, /* handler proc. */ + NULL, /* wide seek proc */ + TcpThreadActionProc, /* thread action proc */ }; @@ -970,7 +976,7 @@ TcpCloseProc(instanceData, interp) Tcl_Interp *interp; /* Unused. */ { SocketInfo *infoPtr = (SocketInfo *) instanceData; - SocketInfo **nextPtrPtr; + /* TIP #218 */ int errorCode = 0; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); @@ -995,20 +1001,12 @@ TcpCloseProc(instanceData, interp) } } - /* - * Remove the socket from socketList. + /* TIP #218. Removed the code removing the structure + * from the global socket list. This is now done by + * the thread action callbacks, and only there. This + * happens before this code is called. We can free + * without fear of damanging the list. */ - - WaitForSingleObject(tsdPtr->socketListLock, INFINITE); - for (nextPtrPtr = &(tsdPtr->socketList); (*nextPtrPtr) != NULL; - nextPtrPtr = &((*nextPtrPtr)->nextPtr)) { - if ((*nextPtrPtr) == infoPtr) { - (*nextPtrPtr) = infoPtr->nextPtr; - break; - } - } - - SetEvent(tsdPtr->socketListLock); ckfree((char *) infoPtr); return errorCode; } @@ -1025,7 +1023,7 @@ TcpCloseProc(instanceData, interp) * Returns a newly allocated SocketInfo. * * Side effects: - * Adds the socket to the global socket list. + * None, except for allocation of memory. * *---------------------------------------------------------------------- */ @@ -1047,10 +1045,11 @@ NewSocketInfo(socket) infoPtr->acceptProc = NULL; infoPtr->lastError = 0; - WaitForSingleObject(tsdPtr->socketListLock, INFINITE); - infoPtr->nextPtr = tsdPtr->socketList; - tsdPtr->socketList = infoPtr; - SetEvent(tsdPtr->socketListLock); + /* TIP #218. Removed the code inserting the new structure + * into the global list. This is now handled in the thread + * action callbacks, and only there. + */ + infoPtr->nextPtr = NULL; return infoPtr; } @@ -1067,7 +1066,7 @@ NewSocketInfo(socket) * Returns a new SocketInfo, or NULL with an error in interp. * * Side effects: - * Adds a new socket to the socketList. + * None, except for allocation of memory. * *---------------------------------------------------------------------- */ @@ -2659,5 +2658,85 @@ TclWinGetServByName(const char * name, const char * proto) return winSock.getservbyname(name, proto); } + +/* + *---------------------------------------------------------------------- + * + * TcpThreadActionProc -- + * + * Insert or remove any thread local refs to this channel. + * + * Results: + * None. + * + * Side effects: + * Changes thread local list of valid channels. + * + *---------------------------------------------------------------------- + */ +static void +TcpThreadActionProc (instanceData, action) + ClientData instanceData; + int action; +{ + ThreadSpecificData *tsdPtr; + SocketInfo *infoPtr = (SocketInfo *) instanceData; + int notifyCmd; + + if (action == TCL_CHANNEL_THREAD_INSERT) { + /* + * Ensure that socket subsystem is initialized in this thread, or + * else sockets will not work. + */ + + Tcl_MutexLock(&socketMutex); + InitSockets(); + Tcl_MutexUnlock(&socketMutex); + tsdPtr = TCL_TSD_INIT(&dataKey); + + WaitForSingleObject(tsdPtr->socketListLock, INFINITE); + infoPtr->nextPtr = tsdPtr->socketList; + tsdPtr->socketList = infoPtr; + SetEvent(tsdPtr->socketListLock); + + notifyCmd = SELECT; + } else { + SocketInfo **nextPtrPtr; + int removed = 0; + + tsdPtr = TCL_TSD_INIT(&dataKey); + + /* TIP #218, Bugfix: All access to socketList has to be protected by the lock */ + WaitForSingleObject(tsdPtr->socketListLock, INFINITE); + for (nextPtrPtr = &(tsdPtr->socketList); (*nextPtrPtr) != NULL; + nextPtrPtr = &((*nextPtrPtr)->nextPtr)) { + if ((*nextPtrPtr) == infoPtr) { + (*nextPtrPtr) = infoPtr->nextPtr; + removed = 1; + break; + } + } + SetEvent(tsdPtr->socketListLock); + + /* + * This could happen if the channel was created in one thread + * and then moved to another without updating the thread + * local data in each thread. + */ + + if (!removed) { + Tcl_Panic("file info ptr not on thread channel list"); + } + + notifyCmd = UNSELECT; + } + + /* + * Ensure that, or stop, notifications for the socket occur in this thread. + */ + + SendMessage(tsdPtr->hwnd, SOCKET_SELECT, + (WPARAM) notifyCmd, (LPARAM) infoPtr); +} -- cgit v0.12 From 46fc28eab3f694dfc885d8087face2b939d48059 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 28 Jan 2005 01:50:25 +0000 Subject: * generic/tclBasic.c (Tcl_ExprBoolean, Tcl_ExprDouble) (Tcl_ExprLong): Fix to recognize Tcl_WideInt type. [Bug 1109484] --- ChangeLog | 5 +++++ generic/tclBasic.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index f3bf04d..ec2584d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-01-27 Jeff Hobbs + + * generic/tclBasic.c (Tcl_ExprBoolean, Tcl_ExprDouble) + (Tcl_ExprLong): Fix to recognize Tcl_WideInt type. [Bug 1109484] + 2005-01-27 Andreas Kupries TIP#218 IMPLEMENTATION diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 8b199ce..9d6255c 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.10 2004/09/29 19:36:36 msofer Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.11 2005/01/28 01:50:26 hobbs Exp $ */ #include "tclInt.h" @@ -4139,11 +4139,29 @@ Tcl_ExprLong(interp, string, ptr) /* * Store an integer based on the expression result. */ - + if (resultPtr->typePtr == &tclIntType) { *ptr = resultPtr->internalRep.longValue; } else if (resultPtr->typePtr == &tclDoubleType) { *ptr = (long) resultPtr->internalRep.doubleValue; + } else if (resultPtr->typePtr == &tclWideIntType) { +#ifndef TCL_WIDE_INT_IS_LONG + /* + * See Tcl_GetIntFromObj for conversion comments. + */ + Tcl_WideInt w = resultPtr->internalRep.wideValue; + if ((w >= -(Tcl_WideInt)(ULONG_MAX)) + && (w <= (Tcl_WideInt)(ULONG_MAX))) { + *ptr = Tcl_WideAsLong(w); + } else { + Tcl_SetResult(interp, + "integer value too large to represent as non-long integer", + TCL_STATIC); + result = TCL_ERROR; + } +#else + *ptr = resultPtr->internalRep.longValue; +#endif } else { Tcl_SetResult(interp, "expression didn't have numeric value", TCL_STATIC); @@ -4190,11 +4208,29 @@ Tcl_ExprDouble(interp, string, ptr) /* * Store a double based on the expression result. */ - + if (resultPtr->typePtr == &tclIntType) { *ptr = (double) resultPtr->internalRep.longValue; } else if (resultPtr->typePtr == &tclDoubleType) { *ptr = resultPtr->internalRep.doubleValue; + } else if (resultPtr->typePtr == &tclWideIntType) { +#ifndef TCL_WIDE_INT_IS_LONG + /* + * See Tcl_GetIntFromObj for conversion comments. + */ + Tcl_WideInt w = resultPtr->internalRep.wideValue; + if ((w >= -(Tcl_WideInt)(ULONG_MAX)) + && (w <= (Tcl_WideInt)(ULONG_MAX))) { + *ptr = (double) Tcl_WideAsLong(w); + } else { + Tcl_SetResult(interp, + "integer value too large to represent as non-long integer", + TCL_STATIC); + result = TCL_ERROR; + } +#else + *ptr = (double) resultPtr->internalRep.longValue; +#endif } else { Tcl_SetResult(interp, "expression didn't have numeric value", TCL_STATIC); @@ -4241,11 +4277,17 @@ Tcl_ExprBoolean(interp, string, ptr) /* * Store a boolean based on the expression result. */ - + if (resultPtr->typePtr == &tclIntType) { *ptr = (resultPtr->internalRep.longValue != 0); } else if (resultPtr->typePtr == &tclDoubleType) { *ptr = (resultPtr->internalRep.doubleValue != 0.0); + } else if (resultPtr->typePtr == &tclWideIntType) { +#ifndef TCL_WIDE_INT_IS_LONG + *ptr = (resultPtr->internalRep.wideValue != 0); +#else + *ptr = (resultPtr->internalRep.longValue != 0); +#endif } else { result = Tcl_GetBooleanFromObj(interp, resultPtr, ptr); } -- cgit v0.12 From b9a0e77feb6255d4dfa61aa0dfab2cb58fcae684 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 28 Jan 2005 20:53:08 +0000 Subject: * unix/configure, unix/tcl.m4: add solaris 64-bit gcc build support. [Bug 1021871] --- ChangeLog | 5 + unix/configure | 525 ++++++++++++++++++++++++++++++--------------------------- unix/tcl.m4 | 23 ++- 3 files changed, 298 insertions(+), 255 deletions(-) diff --git a/ChangeLog b/ChangeLog index ec2584d..2ff1abd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-01-28 Jeff Hobbs + + * unix/configure, unix/tcl.m4: add solaris 64-bit gcc build + support. [Bug 1021871] + 2005-01-27 Jeff Hobbs * generic/tclBasic.c (Tcl_ExprBoolean, Tcl_ExprDouble) diff --git a/unix/configure b/unix/configure index 067be0b..dd8c682 100755 --- a/unix/configure +++ b/unix/configure @@ -3251,7 +3251,15 @@ EOF arch=`isainfo` if test "$arch" = "sparcv9 sparc" ; then if test "$GCC" = "yes" ; then - echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 + if test "`gcc -dumpversion` | awk -F. '{print }'" -lt "3" ; then + echo "configure: warning: 64bit mode not supported with GCC < 3.2 on $system" 1>&2 + else + do64bit_ok=yes + CFLAGS="$CFLAGS -m64 -mcpu=v9" + LDFLAGS="$LDFLAGS -m64 -mcpu=v9" + SHLIB_CFLAGS="-fPIC" + SHLIB_LD_FLAGS="" + fi else do64bit_ok=yes if test "$do64bitVIS" = "yes" ; then @@ -3261,9 +3269,11 @@ EOF CFLAGS="$CFLAGS -xarch=v9" LDFLAGS="$LDFLAGS -xarch=v9" fi + # Solaris 64 uses this as well + #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" fi else - echo "configure: warning: "64bit mode only supported sparcv9 system"" 1>&2 + echo "configure: warning: 64bit mode only supported sparcv9 system" 1>&2 fi fi @@ -3278,6 +3288,15 @@ EOF SHLIB_LD="$CC -shared" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + if test "$do64bit" = "yes" ; then + # We need to specify -static-libgcc or we need to + # add the path to the sparv9 libgcc. + SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" + # for finding sparcv9 libgcc, get the regular libgcc + # path, remove so name and append 'sparcv9' + #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." + #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + fi else SHLIB_LD="/usr/ccs/bin/ld -G -z text" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' @@ -3309,17 +3328,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3313: checking for ld accepts -Bexport flag" >&5 +echo "configure:3332: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3360,9 +3379,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3364: checking sys/exec.h" >&5 +echo "configure:3383: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3380,7 +3399,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3384: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3403: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3398,9 +3417,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3402: checking a.out.h" >&5 +echo "configure:3421: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3418,7 +3437,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3436,9 +3455,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3440: checking sys/exec_aout.h" >&5 +echo "configure:3459: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3456,7 +3475,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3460: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3607,7 +3626,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3611: checking for build with symbols" >&5 +echo "configure:3630: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3668,21 +3687,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3672: checking for required early compiler flags" >&5 +echo "configure:3691: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3705: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3690,7 +3709,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3698,7 +3717,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3721: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3724,14 +3743,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3754: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3739,7 +3758,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3747,7 +3766,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3751: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3776,7 +3795,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3780: checking for 64-bit integer type" >&5 +echo "configure:3799: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3784,14 +3803,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3805,7 +3824,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3839,13 +3858,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3843: checking for struct dirent64" >&5 +echo "configure:3862: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3853,7 +3872,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3874,13 +3893,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3878: checking for struct stat64" >&5 +echo "configure:3897: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3888,7 +3907,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3892: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3911: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3909,13 +3928,13 @@ EOF echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:3913: checking for off64_t" >&5 +echo "configure:3932: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3923,7 +3942,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:3927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -3938,12 +3957,12 @@ fi for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3942: checking for $ac_func" >&5 +echo "configure:3961: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4009,14 +4028,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4013: checking whether byte ordering is bigendian" >&5 +echo "configure:4032: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4027,11 +4046,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4031: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4042,7 +4061,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4062,7 +4081,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4108,12 +4127,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4112: checking for $ac_func" >&5 +echo "configure:4131: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4170,12 +4189,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4174: checking for $ac_func" >&5 +echo "configure:4193: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4228,12 +4247,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4232: checking for $ac_func" >&5 +echo "configure:4251: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4283,12 +4302,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4287: checking for strerror" >&5 +echo "configure:4306: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4335,12 +4354,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4339: checking for getwd" >&5 +echo "configure:4358: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4387,12 +4406,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4391: checking for wait3" >&5 +echo "configure:4410: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4439,12 +4458,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4443: checking for uname" >&5 +echo "configure:4462: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4491,12 +4510,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4495: checking for realpath" >&5 +echo "configure:4514: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4554,9 +4573,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4558: checking dirent.h" >&5 +echo "configure:4577: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -4582,7 +4601,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -4603,17 +4622,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4607: checking for errno.h" >&5 +echo "configure:4626: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4640,17 +4659,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4644: checking for float.h" >&5 +echo "configure:4663: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4673: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4677,17 +4696,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4681: checking for values.h" >&5 +echo "configure:4700: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4710: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4714,17 +4733,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4718: checking for limits.h" >&5 +echo "configure:4737: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4728: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4747: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4754,17 +4773,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4758: checking for stdlib.h" >&5 +echo "configure:4777: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4787: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4787,7 +4806,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4801,7 +4820,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4815,7 +4834,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4836,17 +4855,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4840: checking for string.h" >&5 +echo "configure:4859: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4850: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4869: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4869,7 +4888,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4883,7 +4902,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4909,17 +4928,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4913: checking for sys/wait.h" >&5 +echo "configure:4932: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4946,17 +4965,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4950: checking for dlfcn.h" >&5 +echo "configure:4969: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4960: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4979: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4988,17 +5007,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4992: checking for $ac_hdr" >&5 +echo "configure:5011: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5021: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5038,17 +5057,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5042: checking for $ac_hdr" >&5 +echo "configure:5061: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5052: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5071: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5075,7 +5094,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5079: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5098: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5084,7 +5103,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5099,7 +5118,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5116,7 +5135,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5130,7 +5149,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5148,7 +5167,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5163,7 +5182,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5181,7 +5200,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5198,7 +5217,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5216,7 +5235,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5232,7 +5251,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5250,7 +5269,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5267,7 +5286,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5310,19 +5329,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5314: checking for fd_set in sys/types" >&5 +echo "configure:5333: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5338,12 +5357,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5342: checking for fd_mask in sys/select" >&5 +echo "configure:5361: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5380,12 +5399,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5384: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5403: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5393,7 +5412,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5418,17 +5437,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5422: checking for $ac_hdr" >&5 +echo "configure:5441: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5455,12 +5474,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5459: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5478: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5469,7 +5488,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5492: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5490,12 +5509,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5494: checking for tm_zone in struct tm" >&5 +echo "configure:5513: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5503,7 +5522,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5523,12 +5542,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5527: checking for tzname" >&5 +echo "configure:5546: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5538,7 +5557,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5563,12 +5582,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5567: checking for $ac_func" >&5 +echo "configure:5586: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5617,19 +5636,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5621: checking tm_tzadj in struct tm" >&5 +echo "configure:5640: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5652: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5650,19 +5669,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5654: checking tm_gmtoff in struct tm" >&5 +echo "configure:5673: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5685: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5687,12 +5706,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5691: checking long timezone variable" >&5 +echo "configure:5710: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5701,7 +5720,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5705: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5724,12 +5743,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5728: checking time_t timezone variable" >&5 +echo "configure:5747: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5738,7 +5757,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5742: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5761: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5765,12 +5784,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5769: checking for st_blksize in struct stat" >&5 +echo "configure:5788: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5778,7 +5797,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5799,12 +5818,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5803: checking for fstatfs" >&5 +echo "configure:5822: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5856,7 +5875,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5860: checking for 8-bit clean memcmp" >&5 +echo "configure:5879: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5864,7 +5883,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5898,12 +5917,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5902: checking for memmove" >&5 +echo "configure:5921: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5959,12 +5978,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5963: checking proper strstr implementation" >&5 +echo "configure:5982: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6000,12 +6019,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6004: checking for strtoul" >&5 +echo "configure:6023: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6052,7 +6071,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6091,12 +6110,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6095: checking for strtod" >&5 +echo "configure:6114: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6143,7 +6162,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6185,12 +6204,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6189: checking for strtod" >&5 +echo "configure:6208: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6235,7 +6254,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6239: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6258: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6244,7 +6263,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6300,12 +6319,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6304: checking for ANSI C header files" >&5 +echo "configure:6323: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6313,7 +6332,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6330,7 +6349,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6348,7 +6367,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6369,7 +6388,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6380,7 +6399,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6404,12 +6423,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6408: checking for mode_t" >&5 +echo "configure:6427: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6437,12 +6456,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6441: checking for pid_t" >&5 +echo "configure:6460: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6470,12 +6489,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6474: checking for size_t" >&5 +echo "configure:6493: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6503,12 +6522,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6507: checking for uid_t in sys/types.h" >&5 +echo "configure:6526: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6538,12 +6557,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6542: checking for socklen_t" >&5 +echo "configure:6561: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6582,12 +6601,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6586: checking for opendir" >&5 +echo "configure:6605: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6643,12 +6662,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6647: checking union wait" >&5 +echo "configure:6666: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6660,7 +6679,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6687,12 +6706,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6691: checking for strncasecmp" >&5 +echo "configure:6710: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6737,7 +6756,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6741: checking for strncasecmp in -lsocket" >&5 +echo "configure:6760: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6745,7 +6764,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6780,7 +6799,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6784: checking for strncasecmp in -linet" >&5 +echo "configure:6803: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6788,7 +6807,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6837,12 +6856,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6841: checking for BSDgettimeofday" >&5 +echo "configure:6860: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6887,12 +6906,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6891: checking for gettimeofday" >&5 +echo "configure:6910: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6942,12 +6961,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6946: checking for gettimeofday declaration" >&5 +echo "configure:6965: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6978,14 +6997,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:6982: checking whether char is unsigned" >&5 +echo "configure:7001: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7041,12 +7060,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7045: checking signed char declarations" >&5 +echo "configure:7064: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7081,7 +7100,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7085: checking for a putenv() that copies the buffer" >&5 +echo "configure:7104: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7089,7 +7108,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7111,7 +7130,7 @@ else } EOF -if { (eval echo configure:7115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7153,17 +7172,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7157: checking for langinfo.h" >&5 +echo "configure:7176: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7167: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7188,17 +7207,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7192: checking whether to use nl_langinfo" >&5 +echo "configure:7211: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7233,17 +7252,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7237: checking for $ac_hdr" >&5 +echo "configure:7256: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7266: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7273,17 +7292,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7277: checking for $ac_hdr" >&5 +echo "configure:7296: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7306: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7310,7 +7329,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7314: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7333: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7373,7 +7392,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7377: checking how to package libraries" >&5 +echo "configure:7396: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 155ff07..af4f8e4 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1577,7 +1577,15 @@ dnl AC_CHECK_TOOL(AR, ar) arch=`isainfo` if test "$arch" = "sparcv9 sparc" ; then if test "$GCC" = "yes" ; then - AC_MSG_WARN("64bit mode not supported with GCC on $system") + if test "`gcc -dumpversion` | awk -F. '{print $1}'" -lt "3" ; then + AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system]) + else + do64bit_ok=yes + CFLAGS="$CFLAGS -m64 -mcpu=v9" + LDFLAGS="$LDFLAGS -m64 -mcpu=v9" + SHLIB_CFLAGS="-fPIC" + SHLIB_LD_FLAGS="" + fi else do64bit_ok=yes if test "$do64bitVIS" = "yes" ; then @@ -1587,9 +1595,11 @@ dnl AC_CHECK_TOOL(AR, ar) CFLAGS="$CFLAGS -xarch=v9" LDFLAGS="$LDFLAGS -xarch=v9" fi + # Solaris 64 uses this as well + #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" fi else - AC_MSG_WARN("64bit mode only supported sparcv9 system") + AC_MSG_WARN([64bit mode only supported sparcv9 system]) fi fi @@ -1604,6 +1614,15 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD="$CC -shared" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + if test "$do64bit" = "yes" ; then + # We need to specify -static-libgcc or we need to + # add the path to the sparv9 libgcc. + SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" + # for finding sparcv9 libgcc, get the regular libgcc + # path, remove so name and append 'sparcv9' + #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." + #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + fi else SHLIB_LD="/usr/ccs/bin/ld -G -z text" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' -- cgit v0.12 From 4d610d964131b4cf922a0f235f5e0f3a20999282 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sat, 29 Jan 2005 02:18:02 +0000 Subject: correct autoconf generation for sol64-gcc support --- unix/configure | 8 ++++---- unix/tcl.m4 | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/unix/configure b/unix/configure index dd8c682..fad4a47 100755 --- a/unix/configure +++ b/unix/configure @@ -3245,13 +3245,13 @@ EOF SHLIB_CFLAGS="-KPIC" - + # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then arch=`isainfo` if test "$arch" = "sparcv9 sparc" ; then if test "$GCC" = "yes" ; then - if test "`gcc -dumpversion` | awk -F. '{print }'" -lt "3" ; then + if test "`gcc -dumpversion | awk -F. '{print $1}'`" -lt "3" ; then echo "configure: warning: 64bit mode not supported with GCC < 3.2 on $system" 1>&2 else do64bit_ok=yes @@ -3288,7 +3288,7 @@ EOF SHLIB_LD="$CC -shared" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - if test "$do64bit" = "yes" ; then + if test "$do64bit_ok" = "yes" ; then # We need to specify -static-libgcc or we need to # add the path to the sparv9 libgcc. SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" @@ -3355,7 +3355,7 @@ rm -f conftest* esac if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then - echo "configure: warning: "64bit support being disabled -- don\'t know magic for this platform"" 1>&2 + echo "configure: warning: 64bit support being disabled -- don't know magic for this platform" 1>&2 fi # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic diff --git a/unix/tcl.m4 b/unix/tcl.m4 index af4f8e4..bc1025b 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1571,13 +1571,13 @@ dnl AC_CHECK_TOOL(AR, ar) AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) SHLIB_CFLAGS="-KPIC" - + # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then arch=`isainfo` if test "$arch" = "sparcv9 sparc" ; then if test "$GCC" = "yes" ; then - if test "`gcc -dumpversion` | awk -F. '{print $1}'" -lt "3" ; then + if test "`gcc -dumpversion | awk -F. '{print [$]1}'`" -lt "3" ; then AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system]) else do64bit_ok=yes @@ -1614,7 +1614,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_LD="$CC -shared" CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - if test "$do64bit" = "yes" ; then + if test "$do64bit_ok" = "yes" ; then # We need to specify -static-libgcc or we need to # add the path to the sparv9 libgcc. SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" @@ -1664,7 +1664,7 @@ dnl AC_CHECK_TOOL(AR, ar) esac if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then - AC_MSG_WARN("64bit support being disabled -- don\'t know magic for this platform") + AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform]) fi # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic -- cgit v0.12 From 09420076cacf4e1fa0d7ca3f044af5fda0b2cf65 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 1 Feb 2005 17:26:28 +0000 Subject: * generic/tclExecute.c (TclCompEvalObj): Removed stray statement left behind in prior code reorganization. --- ChangeLog | 5 +++++ generic/tclExecute.c | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2ff1abd..0760372 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-02-01 Don Porter + + * generic/tclExecute.c (TclCompEvalObj): Removed stray statement + left behind in prior code reorganization. + 2005-01-28 Jeff Hobbs * unix/configure, unix/tcl.m4: add solaris 64-bit gcc build diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 04862e4..99e1d67 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.10 2004/11/02 15:46:35 dkf Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.11 2005/02/01 17:26:32 dgp Exp $ */ #include "tclInt.h" @@ -922,7 +922,6 @@ TclCompEvalObj(interp, objPtr) iPtr->numLevels--; return result; } - iPtr->evalFlags = 0; codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; } else { /* -- cgit v0.12 From 7c7f5ce019e8eff60777b642821f2232c1ef7d3b Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 10 Feb 2005 10:28:02 +0000 Subject: More consistency. [Bug 1117017] --- ChangeLog | 5 +++++ doc/binary.n | 14 +++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0760372..76e0127 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-02-10 Donal K. Fellows + + * doc/binary.n: Made the documentation of sign bit masking and + [binary scan] consistent. [Bug 1117017] + 2005-02-01 Don Porter * generic/tclExecute.c (TclCompEvalObj): Removed stray statement diff --git a/doc/binary.n b/doc/binary.n index 582b562..d25e120 100644 --- a/doc/binary.n +++ b/doc/binary.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: binary.n,v 1.11.2.7 2004/10/27 14:23:41 dkf Exp $ +'\" RCS: @(#) $Id: binary.n,v 1.11.2.8 2005/02/10 10:28:21 dkf Exp $ '\" .so man.macros .TH binary n 8.0 Tcl "Tcl Built-In Commands" @@ -476,7 +476,7 @@ stored in \fBvar2\fR. Note that the integers returned are signed, but they can be converted to unsigned 8-bit quantities using an expression like: .CS -\fBexpr ( $num + 0x100 ) % 0x100\fR +\fBexpr { $num & 0xff }\fR .CE .RE .IP \fBs\fR 5 @@ -495,7 +495,7 @@ stored in \fBvar2\fR. Note that the integers returned are signed, but they can be converted to unsigned 16-bit quantities using an expression like: .CS -\fBexpr ( $num + 0x10000 ) % 0x10000\fR +\fBexpr { $num & 0xffff }\fR .CE .RE .IP \fBS\fR 5 @@ -521,8 +521,12 @@ example, \fBbinary scan \\x05\\x00\\x00\\x00\\x07\\x00\\x00\\x00\\xf0\\xff\\xff\\xff i2i* var1 var2\fR .CE will return \fB2\fR with \fB5 7\fR stored in \fBvar1\fR and \fB-16\fR -stored in \fBvar2\fR. Note that the integers returned are signed and -cannot be represented by Tcl as unsigned values. +stored in \fBvar2\fR. Note that the integers returned are signed, but +they can be converted to unsigned 32-bit quantities using an expression +like: +.CS +\fBexpr { $num & 0xffffffff }\fR +.CE .RE .IP \fBI\fR 5 This form is the same as \fBI\fR except that the data is interpreted -- cgit v0.12 From 07e0b116171eb0e1b10cd691be7995103106a174 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Thu, 10 Feb 2005 18:58:30 +0000 Subject: * generic/tclBasic.c (Tcl_EvalObjEx): * tests/basic.test (basic-26.2): preserve the arguments passed to TEOV in the pure-list branch, in case the list shimmers away. Fix for [Bug 1119369], reported by Peter MacDonald. --- ChangeLog | 7 +++++++ generic/tclBasic.c | 23 ++++++++++++++++++++--- tests/basic.test | 20 +++++++++++++++++++- 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 76e0127..d6ee926 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-02-10 Miguel Sofer + + * generic/tclBasic.c (Tcl_EvalObjEx): + * tests/basic.test (basic-26.2): preserve the arguments passed to + TEOV in the pure-list branch, in case the list shimmers away. Fix + for [Bug 1119369], reported by Peter MacDonald. + 2005-02-10 Donal K. Fellows * doc/binary.n: Made the documentation of sign bit masking and diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 9d6255c..ea3bdf8 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.11 2005/01/28 01:50:26 hobbs Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.12 2005/02/10 18:58:35 msofer Exp $ */ #include "tclInt.h" @@ -4003,8 +4003,25 @@ Tcl_EvalObjEx(interp, objPtr, flags) (objPtr->bytes == NULL) /* ...without a string rep */) { register List *listRepPtr = (List *) objPtr->internalRep.twoPtrValue.ptr1; - result = Tcl_EvalObjv(interp, listRepPtr->elemCount, - listRepPtr->elements, flags); + int i, objc = listRepPtr->elemCount; +#define TEOE_PREALLOC 10 + Tcl_Obj *staticObjv[TEOE_PREALLOC], **objv = staticObjv; + + if (objc > TEOE_PREALLOC) { + objv = (Tcl_Obj **) ckalloc(objc*sizeof(Tcl_Obj *)); + } +#undef TEOE_PREALLOC + for (i=0; i < objc; i++) { + objv[i] = listRepPtr->elements[i]; + Tcl_IncrRefCount(objv[i]); + } + result = Tcl_EvalObjv(interp, objc, objv, flags); + for (i=0; i < objc; i++) { + TclDecrRefCount(objv[i]); + } + if (objv != staticObjv) { + ckfree((char *) objv); + } } else { script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); result = Tcl_EvalEx(interp, script, numSrcBytes, flags); diff --git a/tests/basic.test b/tests/basic.test index 294746f..2c8a6a7 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.25.2.5 2004/10/26 20:14:32 dgp Exp $ +# RCS: @(#) $Id: basic.test,v 1.25.2.6 2005/02/10 18:58:36 msofer Exp $ # package require tcltest 2 @@ -432,6 +432,24 @@ test basic-26.1 {Tcl_EvalObj: preserve object while evaling it} { set x } "foo\n while executing\n\"error foo\"" +test basic-26.2 {Tcl_EvalObjEx, pure-list branch: preserve "objv"} { + # + # Follow the pure-list branch in a manner that + # a - the pure-list internal rep is destroyed by shimmering + # b - the command returns an error + # As the error code in Tcl_EvalObjv accesses the list elements, this will + # cause a segfault if [Bug 1119369] has not been fixed. + # + + set SRC [list foo 1] ;# pure-list command + proc foo str { + # Shimmer pure-list to cmdName, cleanup and error + proc $::SRC {} {}; $::SRC + error "BAD CALL" + } + catch {eval $SRC} +} 1 + test basic-27.1 {Tcl_ExprLong} {emptyTest} { } {} -- cgit v0.12 From 79cafbd6c0706fdb54e160111eb9a04bfcd5da64 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Thu, 10 Feb 2005 19:03:59 +0000 Subject: added comments --- generic/tclBasic.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index ea3bdf8..f61fc6a 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.12 2005/02/10 18:58:35 msofer Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.13 2005/02/10 19:03:59 msofer Exp $ */ #include "tclInt.h" @@ -4011,6 +4011,11 @@ Tcl_EvalObjEx(interp, objPtr, flags) objv = (Tcl_Obj **) ckalloc(objc*sizeof(Tcl_Obj *)); } #undef TEOE_PREALLOC + /* + * Copy the list elements here, to avoid a segfault if objPtr + * loses its List internal rep [Bug 1119369] + */ + for (i=0; i < objc; i++) { objv[i] = listRepPtr->elements[i]; Tcl_IncrRefCount(objv[i]); -- cgit v0.12 From 767ffd22849381d6abc8bd53097e43ee6e136cb1 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 10 Feb 2005 23:40:08 +0000 Subject: * unix/Makefile.in: remove SHLIB_LD_FLAGS (only for AIX, inlined * unix/tcl.m4: into SHLIB_LD). Combine AIX-* and AIX-5 * unix/configure: branches in SC_CONFIG_CFLAGS. Enable 64-bit gcc builds for AIX-4+, correct gcc builds for HP-UX-11. --- ChangeLog | 7 + unix/Makefile.in | 3 +- unix/configure | 618 ++++++++++++++++++++++++++----------------------------- unix/tcl.m4 | 70 ++----- 4 files changed, 315 insertions(+), 383 deletions(-) diff --git a/ChangeLog b/ChangeLog index d6ee926..e4d34f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-02-10 Jeff Hobbs + + * unix/Makefile.in: remove SHLIB_LD_FLAGS (only for AIX, inlined + * unix/tcl.m4: into SHLIB_LD). Combine AIX-* and AIX-5 + * unix/configure: branches in SC_CONFIG_CFLAGS. Enable 64-bit + gcc builds for AIX-4+, correct gcc builds for HP-UX-11. + 2005-02-10 Miguel Sofer * generic/tclBasic.c (Tcl_EvalObjEx): diff --git a/unix/Makefile.in b/unix/Makefile.in index 8d0b64e..abb41e5 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.9 2004/11/18 10:21:55 rmax Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.10 2005/02/10 23:40:17 hobbs Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -193,7 +193,6 @@ TCL_EXE = tclsh STLIB_LD = @STLIB_LD@ SHLIB_LD = @SHLIB_LD@ SHLIB_CFLAGS = @SHLIB_CFLAGS@ -SHLIB_LD_FLAGS = @SHLIB_LD_FLAGS@ SHLIB_LD_LIBS = @SHLIB_LD_LIBS@ TCL_SHLIB_LD_EXTRAS = @TCL_SHLIB_LD_EXTRAS@ diff --git a/unix/configure b/unix/configure index fad4a47..353c3ca 100755 --- a/unix/configure +++ b/unix/configure @@ -2244,7 +2244,7 @@ fi LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" PLAT_OBJS="" case $system in - AIX-5.*) + AIX-*) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then # AIX requires the _r compiler when gcc isn't being used if test "${CC}" != "cc_r" ; then @@ -2253,7 +2253,6 @@ fi echo "$ac_t""Using $CC for compiling with threads" 1>&6 fi LIBS="$LIBS -lc" - # AIX-5 uses ELF style dynamic libraries SHLIB_CFLAGS="" # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. @@ -2261,14 +2260,13 @@ fi SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" - LD_LIBRARY_PATH_VAR="LIBPATH" - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then + # Check to enable 64-bit flags for compiler/linker on AIX 4+ + if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then if test "$GCC" = "yes" ; then - echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 - else + echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 + else do64bit_ok=yes CFLAGS="$CFLAGS -q64" LDFLAGS="$LDFLAGS -q64" @@ -2290,33 +2288,18 @@ fi fi LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' else - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" + if test "$GCC" = "yes" ; then + SHLIB_LD="gcc -shared" + else + SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" + fi + SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}" DL_LIBS="-ldl" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} TCL_NEEDS_EXP_FILE=1 TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' fi - ;; - AIX-*) - if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then - # AIX requires the _r compiler when gcc isn't being used - if test "${CC}" != "cc_r" ; then - CC=${CC}_r - fi - echo "$ac_t""Using $CC for compiling with threads" 1>&6 - fi - LIBS="$LIBS -lc" - SHLIB_CFLAGS="" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - LD_LIBRARY_PATH_VAR="LIBPATH" - TCL_NEEDS_EXP_FILE=1 - TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' # AIX v<=4.1 has some different flags than 4.2+ if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then @@ -2324,21 +2307,6 @@ fi DL_LIBS="-lld" fi - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 - else - do64bit_ok=yes - CFLAGS="$CFLAGS -q64" - LDFLAGS="$LDFLAGS -q64" - RANLIB="${RANLIB} -X64" - AR="${AR} -X64" - SHLIB_LD_FLAGS="-b64" - fi - fi - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" - # On AIX <=v4 systems, libbsd.a has to be linked in to support # non-blocking file IO. This library has to be linked in after # the MATH_LIBS or it breaks the pow() function. The way to @@ -2352,7 +2320,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2356: checking for gettimeofday in -lbsd" >&5 +echo "configure:2324: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2360,7 +2328,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2414,7 +2382,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2418: checking for inet_ntoa in -lbind" >&5 +echo "configure:2386: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2422,7 +2390,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2499,7 +2467,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2503: checking for shl_load in -ldld" >&5 +echo "configure:2471: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2507,7 +2475,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2553,8 +2521,7 @@ fi if test "$GCC" = "yes" ; then SHLIB_LD="gcc -shared" SHLIB_LD_LIBS='${LIBS}' - LD_SEARCH_FLAGS='' - CC_SEARCH_FLAGS='' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} fi # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc @@ -2570,8 +2537,8 @@ fi do64bit_ok=yes SHLIB_LD="gcc -shared" SHLIB_LD_LIBS='${LIBS}' - LD_SEARCH_FLAGS='' - CC_SEARCH_FLAGS='' + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ;; *) echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 @@ -2587,7 +2554,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2591: checking for shl_load in -ldld" >&5 +echo "configure:2558: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2595,7 +2562,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2730,17 +2697,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2734: checking for dld.h" >&5 +echo "configure:2701: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2804,17 +2771,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2808: checking for dld.h" >&5 +echo "configure:2775: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2870,17 +2837,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2874: checking for dlfcn.h" >&5 +echo "configure:2841: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2884: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2907,9 +2874,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2911: checking for ELF" >&5 +echo "configure:2878: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2965: checking for ELF" >&5 +echo "configure:2932: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:3332: checking for ld accepts -Bexport flag" >&5 +echo "configure:3298: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3379,9 +3345,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3383: checking sys/exec.h" >&5 +echo "configure:3349: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3399,7 +3365,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3403: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3417,9 +3383,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3421: checking a.out.h" >&5 +echo "configure:3387: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3437,7 +3403,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3455,9 +3421,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3459: checking sys/exec_aout.h" >&5 +echo "configure:3425: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3475,7 +3441,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3445: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3567,7 +3533,7 @@ fi if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then LIB_SUFFIX=${SHARED_LIB_SUFFIX} - MAKE_LIB='${SHLIB_LD} -o $@ ${SHLIB_LD_FLAGS} ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' + MAKE_LIB='${SHLIB_LD} -o $@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' else LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} @@ -3615,7 +3581,6 @@ fi - @@ -3626,7 +3591,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3630: checking for build with symbols" >&5 +echo "configure:3595: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3687,21 +3652,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3691: checking for required early compiler flags" >&5 +echo "configure:3656: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3705: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3709,7 +3674,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3717,7 +3682,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3721: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3743,14 +3708,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3754: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3758,7 +3723,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3766,7 +3731,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3795,7 +3760,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3799: checking for 64-bit integer type" >&5 +echo "configure:3764: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3803,14 +3768,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3824,7 +3789,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3802: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3858,13 +3823,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3862: checking for struct dirent64" >&5 +echo "configure:3827: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3872,7 +3837,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3893,13 +3858,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3897: checking for struct stat64" >&5 +echo "configure:3862: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3907,7 +3872,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3911: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3928,13 +3893,13 @@ EOF echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:3932: checking for off64_t" >&5 +echo "configure:3897: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3942,7 +3907,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:3946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3911: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -3957,12 +3922,12 @@ fi for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3961: checking for $ac_func" >&5 +echo "configure:3926: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4028,14 +3993,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4032: checking whether byte ordering is bigendian" >&5 +echo "configure:3997: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4046,11 +4011,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4061,7 +4026,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4081,7 +4046,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4127,12 +4092,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4131: checking for $ac_func" >&5 +echo "configure:4096: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4189,12 +4154,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4193: checking for $ac_func" >&5 +echo "configure:4158: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4247,12 +4212,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4251: checking for $ac_func" >&5 +echo "configure:4216: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4302,12 +4267,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4306: checking for strerror" >&5 +echo "configure:4271: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4354,12 +4319,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4358: checking for getwd" >&5 +echo "configure:4323: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4406,12 +4371,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4410: checking for wait3" >&5 +echo "configure:4375: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4458,12 +4423,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4462: checking for uname" >&5 +echo "configure:4427: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4510,12 +4475,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4514: checking for realpath" >&5 +echo "configure:4479: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4573,9 +4538,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4577: checking dirent.h" >&5 +echo "configure:4542: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -4601,7 +4566,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -4622,17 +4587,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4626: checking for errno.h" >&5 +echo "configure:4591: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4659,17 +4624,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4663: checking for float.h" >&5 +echo "configure:4628: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4673: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4696,17 +4661,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4700: checking for values.h" >&5 +echo "configure:4665: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4710: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4675: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4733,17 +4698,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4737: checking for limits.h" >&5 +echo "configure:4702: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4747: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4712: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4773,17 +4738,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4777: checking for stdlib.h" >&5 +echo "configure:4742: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4787: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4806,7 +4771,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4820,7 +4785,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4834,7 +4799,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4855,17 +4820,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4859: checking for string.h" >&5 +echo "configure:4824: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4869: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4888,7 +4853,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4902,7 +4867,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4928,17 +4893,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4932: checking for sys/wait.h" >&5 +echo "configure:4897: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4907: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4965,17 +4930,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4969: checking for dlfcn.h" >&5 +echo "configure:4934: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4979: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5007,17 +4972,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5011: checking for $ac_hdr" >&5 +echo "configure:4976: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5021: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4986: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5057,17 +5022,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5061: checking for $ac_hdr" >&5 +echo "configure:5026: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5071: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5094,7 +5059,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5098: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5063: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5103,7 +5068,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5118,7 +5083,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5135,7 +5100,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5149,7 +5114,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5167,7 +5132,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5182,7 +5147,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5200,7 +5165,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5217,7 +5182,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5235,7 +5200,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5251,7 +5216,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5269,7 +5234,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5286,7 +5251,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5329,19 +5294,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5333: checking for fd_set in sys/types" >&5 +echo "configure:5298: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5357,12 +5322,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5361: checking for fd_mask in sys/select" >&5 +echo "configure:5326: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5399,12 +5364,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5403: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5368: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5412,7 +5377,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5437,17 +5402,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5441: checking for $ac_hdr" >&5 +echo "configure:5406: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5416: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5474,12 +5439,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5478: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5443: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5488,7 +5453,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5492: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5509,12 +5474,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5513: checking for tm_zone in struct tm" >&5 +echo "configure:5478: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5522,7 +5487,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5542,12 +5507,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5546: checking for tzname" >&5 +echo "configure:5511: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5557,7 +5522,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5582,12 +5547,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5586: checking for $ac_func" >&5 +echo "configure:5551: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5579: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5636,19 +5601,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5640: checking tm_tzadj in struct tm" >&5 +echo "configure:5605: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5652: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5669,19 +5634,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5673: checking tm_gmtoff in struct tm" >&5 +echo "configure:5638: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5685: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5706,12 +5671,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5710: checking long timezone variable" >&5 +echo "configure:5675: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5720,7 +5685,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5743,12 +5708,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5747: checking time_t timezone variable" >&5 +echo "configure:5712: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5757,7 +5722,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5761: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5726: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5784,12 +5749,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5788: checking for st_blksize in struct stat" >&5 +echo "configure:5753: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5797,7 +5762,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5766: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5818,12 +5783,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5822: checking for fstatfs" >&5 +echo "configure:5787: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5875,7 +5840,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5879: checking for 8-bit clean memcmp" >&5 +echo "configure:5844: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5883,7 +5848,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5917,12 +5882,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5921: checking for memmove" >&5 +echo "configure:5886: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5978,12 +5943,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5982: checking proper strstr implementation" >&5 +echo "configure:5947: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6019,12 +5984,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6023: checking for strtoul" >&5 +echo "configure:5988: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6071,7 +6036,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6110,12 +6075,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6114: checking for strtod" >&5 +echo "configure:6079: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6162,7 +6127,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6204,12 +6169,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6208: checking for strtod" >&5 +echo "configure:6173: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6254,7 +6219,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6258: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6223: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6263,7 +6228,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6319,12 +6284,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6323: checking for ANSI C header files" >&5 +echo "configure:6288: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6332,7 +6297,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6301: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6349,7 +6314,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6367,7 +6332,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6388,7 +6353,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6399,7 +6364,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6423,12 +6388,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6427: checking for mode_t" >&5 +echo "configure:6392: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6456,12 +6421,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6460: checking for pid_t" >&5 +echo "configure:6425: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6489,12 +6454,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6493: checking for size_t" >&5 +echo "configure:6458: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6522,12 +6487,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6526: checking for uid_t in sys/types.h" >&5 +echo "configure:6491: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6557,12 +6522,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6561: checking for socklen_t" >&5 +echo "configure:6526: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6601,12 +6566,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6605: checking for opendir" >&5 +echo "configure:6570: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6662,12 +6627,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6666: checking union wait" >&5 +echo "configure:6631: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6679,7 +6644,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6706,12 +6671,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6710: checking for strncasecmp" >&5 +echo "configure:6675: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6756,7 +6721,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6760: checking for strncasecmp in -lsocket" >&5 +echo "configure:6725: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6764,7 +6729,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6799,7 +6764,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6803: checking for strncasecmp in -linet" >&5 +echo "configure:6768: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6807,7 +6772,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6856,12 +6821,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6860: checking for BSDgettimeofday" >&5 +echo "configure:6825: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6906,12 +6871,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6910: checking for gettimeofday" >&5 +echo "configure:6875: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6961,12 +6926,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6965: checking for gettimeofday declaration" >&5 +echo "configure:6930: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6997,14 +6962,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7001: checking whether char is unsigned" >&5 +echo "configure:6966: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7060,12 +7025,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7064: checking signed char declarations" >&5 +echo "configure:7029: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7044: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7100,7 +7065,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7104: checking for a putenv() that copies the buffer" >&5 +echo "configure:7069: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7108,7 +7073,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7130,7 +7095,7 @@ else } EOF -if { (eval echo configure:7134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7172,17 +7137,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7176: checking for langinfo.h" >&5 +echo "configure:7141: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7151: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7207,17 +7172,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7211: checking whether to use nl_langinfo" >&5 +echo "configure:7176: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7186: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7252,17 +7217,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7256: checking for $ac_hdr" >&5 +echo "configure:7221: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7266: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7231: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7292,17 +7257,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7296: checking for $ac_hdr" >&5 +echo "configure:7261: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7306: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7329,7 +7294,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7333: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7298: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7392,7 +7357,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7396: checking how to package libraries" >&5 +echo "configure:7361: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -7721,7 +7686,6 @@ s%@STLIB_LD@%$STLIB_LD%g s%@SHLIB_LD@%$SHLIB_LD%g s%@TCL_SHLIB_LD_EXTRAS@%$TCL_SHLIB_LD_EXTRAS%g s%@TK_SHLIB_LD_EXTRAS@%$TK_SHLIB_LD_EXTRAS%g -s%@SHLIB_LD_FLAGS@%$SHLIB_LD_FLAGS%g s%@SHLIB_LD_LIBS@%$SHLIB_LD_LIBS%g s%@SHLIB_CFLAGS@%$SHLIB_CFLAGS%g s%@SHLIB_SUFFIX@%$SHLIB_SUFFIX%g diff --git a/unix/tcl.m4 b/unix/tcl.m4 index bc1025b..16eb892 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -747,9 +747,6 @@ AC_DEFUN(SC_CONFIG_MANPAGES, [ # code, among other things). # SHLIB_LD - Base command to use for combining object files # into a shared library. -# SHLIB_LD_FLAGS -Flags to pass when building a shared library. This -# differes from the SHLIB_CFLAGS as it is not used -# when building object files or executables. # SHLIB_LD_LIBS - Dependent libraries for the linker to scan when # creating shared libraries. This symbol typically # goes at the end of the "ld" commands that build @@ -891,16 +888,15 @@ dnl AC_CHECK_TOOL(AR, ar) LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" PLAT_OBJS="" case $system in - AIX-5.*) + AIX-*) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then # AIX requires the _r compiler when gcc isn't being used if test "${CC}" != "cc_r" ; then CC=${CC}_r fi - AC_MSG_RESULT(Using $CC for compiling with threads) + AC_MSG_RESULT([Using $CC for compiling with threads]) fi LIBS="$LIBS -lc" - # AIX-5 uses ELF style dynamic libraries SHLIB_CFLAGS="" # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. @@ -908,14 +904,13 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" - LD_LIBRARY_PATH_VAR="LIBPATH" - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then + # Check to enable 64-bit flags for compiler/linker on AIX 4+ + if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then if test "$GCC" = "yes" ; then - AC_MSG_WARN("64bit mode not supported with GCC on $system") - else + AC_MSG_WARN([64bit mode not supported with GCC on $system]) + else do64bit_ok=yes CFLAGS="$CFLAGS -q64" LDFLAGS="$LDFLAGS -q64" @@ -937,33 +932,18 @@ dnl AC_CHECK_TOOL(AR, ar) fi LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' else - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" + if test "$GCC" = "yes" ; then + SHLIB_LD="gcc -shared" + else + SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" + fi + SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}" DL_LIBS="-ldl" CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} TCL_NEEDS_EXP_FILE=1 TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' fi - ;; - AIX-*) - if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then - # AIX requires the _r compiler when gcc isn't being used - if test "${CC}" != "cc_r" ; then - CC=${CC}_r - fi - AC_MSG_RESULT(Using $CC for compiling with threads) - fi - LIBS="$LIBS -lc" - SHLIB_CFLAGS="" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - LD_LIBRARY_PATH_VAR="LIBPATH" - TCL_NEEDS_EXP_FILE=1 - TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' # AIX v<=4.1 has some different flags than 4.2+ if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then @@ -971,21 +951,6 @@ dnl AC_CHECK_TOOL(AR, ar) DL_LIBS="-lld" fi - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - AC_MSG_WARN("64bit mode not supported with GCC on $system") - else - do64bit_ok=yes - CFLAGS="$CFLAGS -q64" - LDFLAGS="$LDFLAGS -q64" - RANLIB="${RANLIB} -X64" - AR="${AR} -X64" - SHLIB_LD_FLAGS="-b64" - fi - fi - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry ${SHLIB_LD_FLAGS}" - # On AIX <=v4 systems, libbsd.a has to be linked in to support # non-blocking file IO. This library has to be linked in after # the MATH_LIBS or it breaks the pow() function. The way to @@ -1072,8 +1037,7 @@ dnl AC_CHECK_TOOL(AR, ar) if test "$GCC" = "yes" ; then SHLIB_LD="gcc -shared" SHLIB_LD_LIBS='${LIBS}' - LD_SEARCH_FLAGS='' - CC_SEARCH_FLAGS='' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} fi # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc @@ -1089,8 +1053,8 @@ dnl AC_CHECK_TOOL(AR, ar) do64bit_ok=yes SHLIB_LD="gcc -shared" SHLIB_LD_LIBS='${LIBS}' - LD_SEARCH_FLAGS='' - CC_SEARCH_FLAGS='' + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ;; *) AC_MSG_WARN("64bit mode not supported with GCC on $system") @@ -1584,7 +1548,6 @@ dnl AC_CHECK_TOOL(AR, ar) CFLAGS="$CFLAGS -m64 -mcpu=v9" LDFLAGS="$LDFLAGS -m64 -mcpu=v9" SHLIB_CFLAGS="-fPIC" - SHLIB_LD_FLAGS="" fi else do64bit_ok=yes @@ -1807,7 +1770,7 @@ dnl AC_CHECK_TOOL(AR, ar) if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then LIB_SUFFIX=${SHARED_LIB_SUFFIX} - MAKE_LIB='${SHLIB_LD} -o [$]@ ${SHLIB_LD_FLAGS} ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' + MAKE_LIB='${SHLIB_LD} -o [$]@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' else LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} @@ -1865,7 +1828,6 @@ dnl esac AC_SUBST(SHLIB_LD) AC_SUBST(TCL_SHLIB_LD_EXTRAS) AC_SUBST(TK_SHLIB_LD_EXTRAS) - AC_SUBST(SHLIB_LD_FLAGS) AC_SUBST(SHLIB_LD_LIBS) AC_SUBST(SHLIB_CFLAGS) AC_SUBST(SHLIB_SUFFIX) -- cgit v0.12 From 862bc678a59d18ae7386cc88cef1909240641ba8 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 10 Feb 2005 23:41:07 +0000 Subject: correct ChangeLog notes --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e4d34f3..fa5ad09 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,8 +2,8 @@ * unix/Makefile.in: remove SHLIB_LD_FLAGS (only for AIX, inlined * unix/tcl.m4: into SHLIB_LD). Combine AIX-* and AIX-5 - * unix/configure: branches in SC_CONFIG_CFLAGS. Enable 64-bit - gcc builds for AIX-4+, correct gcc builds for HP-UX-11. + * unix/configure: branches in SC_CONFIG_CFLAGS. + Correct gcc builds for AIX-4+ and HP-UX-11. 2005-02-10 Miguel Sofer -- cgit v0.12 From a277081417ca7ce77a114fabd3b2f658afb3005b Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Wed, 16 Feb 2005 18:52:53 +0000 Subject: * /doc/variable.n: fix for [Bug 1124160], variables are detected by [info vars] but not by [info locals]. --- ChangeLog | 5 +++++ doc/variable.n | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index fa5ad09..34f0e52 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-02-16 Miguel Sofer + + * /doc/variable.n: fix for [Bug 1124160], variables are detected + by [info vars] but not by [info locals]. + 2005-02-10 Jeff Hobbs * unix/Makefile.in: remove SHLIB_LD_FLAGS (only for AIX, inlined diff --git a/doc/variable.n b/doc/variable.n index 908e5ae..4e6a2a4 100644 --- a/doc/variable.n +++ b/doc/variable.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: variable.n,v 1.4.18.1 2004/10/27 14:43:15 dkf Exp $ +'\" RCS: @(#) $Id: variable.n,v 1.4.18.2 2005/02/16 18:53:02 msofer Exp $ '\" .so man.macros .TH variable n 8.0 Tcl "Tcl Built-In Commands" @@ -43,7 +43,7 @@ command, but not to the \fBinfo exists\fR command. If the \fBvariable\fR command is executed inside a Tcl procedure, it creates local variables linked to the corresponding namespace variables (and therefore these -variables are listed by \fBinfo locals\fR.) +variables are listed by \fBinfo vars\fR.) In this way the \fBvariable\fR command resembles the \fBglobal\fR command, although the \fBglobal\fR command only links to variables in the global namespace. -- cgit v0.12 From a5b53a8dd972652d3f80cd6041f2c702bbc9b49b Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 17 Feb 2005 18:31:47 +0000 Subject: * win/tclWinFCmd.c (TraverseWinTree): use wcslen on wchar, not Tcl_UniCharLen. --- ChangeLog | 11 ++++++++--- win/tclWinFCmd.c | 6 +++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 34f0e52..8977657 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ +2005-02-17 Jeff Hobbs + + * win/tclWinFCmd.c (TraverseWinTree): use wcslen on wchar, not + Tcl_UniCharLen. + 2005-02-16 Miguel Sofer - * /doc/variable.n: fix for [Bug 1124160], variables are detected + * doc/variable.n: fix for [Bug 1124160], variables are detected by [info vars] but not by [info locals]. 2005-02-10 Jeff Hobbs @@ -62,8 +67,8 @@ 2005-01-25 Don Porter - * library/auto.tcl: Updated [auto_reset] to clear auto-loaded - procs in namespaces other than :: [Bug 1101670]. + * library/auto.tcl: Updated [auto_reset] to clear auto-loaded + procs in namespaces other than :: [Bug 1101670]. 2005-01-25 Daniel Steffen diff --git a/win/tclWinFCmd.c b/win/tclWinFCmd.c index e8033f9..29094c4 100644 --- a/win/tclWinFCmd.c +++ b/win/tclWinFCmd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFCmd.c,v 1.35.2.2 2004/06/21 22:07:32 mdejong Exp $ + * RCS: @(#) $Id: tclWinFCmd.c,v 1.35.2.3 2005/02/17 18:31:54 hobbs Exp $ */ #include "tclWinInt.h" @@ -1291,7 +1291,7 @@ TraverseWinTree( } } nativeName = (TCHAR *) data.w.cFileName; - len = Tcl_UniCharLen(data.w.cFileName) * sizeof(WCHAR); + len = wcslen(data.w.cFileName) * sizeof(WCHAR); } else { if ((strcmp(data.a.cFileName, ".") == 0) || (strcmp(data.a.cFileName, "..") == 0)) { @@ -1356,7 +1356,7 @@ TraverseWinTree( } result = TCL_ERROR; } - + return result; } -- cgit v0.12 From a9d28b8ae2346d71a2bca2a7e85c4e7c8af1fc17 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 23 Feb 2005 10:27:44 +0000 Subject: Formatting typo fix. [Bug 1149605] --- ChangeLog | 4 ++++ doc/CrtChannel.3 | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8977657..a1ecd5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-02-23 Donal K. Fellows + + * doc/CrtChannel.3 (THREADACTIONPROC): Formatting fix. [Bug 1149605] + 2005-02-17 Jeff Hobbs * win/tclWinFCmd.c (TraverseWinTree): use wcslen on wchar, not diff --git a/doc/CrtChannel.3 b/doc/CrtChannel.3 index 73cea4a..ee5ea72 100644 --- a/doc/CrtChannel.3 +++ b/doc/CrtChannel.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.3 2005/01/27 22:53:27 andreas_kupries Exp $ +'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.4 2005/02/23 10:27:45 dkf Exp $ .so man.macros .TH Tcl_CreateChannel 3 8.4 Tcl "Tcl Library Procedures" .BS @@ -817,7 +817,7 @@ a pointer to the function. .VS 8.4 .SH "THREADACTIONPROC" .PP -The \fthreadActionProc\fR field contains the address of the function +The \fIthreadActionProc\fR field contains the address of the function called by the generic layer when a channel is created, closed, or going to move to a different thread, i.e. whenever thread-specific driver state might have to initialized or updated. It can be NULL. -- cgit v0.12 From 3a81884e6d8e9430f86b677654f99c195817f1b4 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 24 Feb 2005 18:03:31 +0000 Subject: * library/tcltest/tcltest.tcl: Better use of [glob -types] to avoid * tests/tcltest.test: failed attempts to [source] a directory, and similar matters. Thanks to "mpettigr". [Bug 1119798] * library/tcltest/pkgIndex.tcl: Bump to tcltest 2.2.8 --- ChangeLog | 8 ++++++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 31 ++++++++++++++----------------- tests/tcltest.test | 19 ++++++++++++++++--- 4 files changed, 39 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index a1ecd5b..8c223ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-02-24 Don Porter + + * library/tcltest/tcltest.tcl: Better use of [glob -types] to avoid + * tests/tcltest.test: failed attempts to [source] a directory, and + similar matters. Thanks to "mpettigr". [Bug 1119798] + + * library/tcltest/pkgIndex.tcl: Bump to tcltest 2.2.8 + 2005-02-23 Donal K. Fellows * doc/CrtChannel.3 (THREADACTIONPROC): Formatting fix. [Bug 1149605] diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index fe594b6..1aa4a46 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.3]} {return} -package ifneeded tcltest 2.2.7 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.2.8 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index eac8278..4e42932 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.12 2004/11/02 19:03:07 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.13 2005/02/24 18:03:36 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.2.7 + variable Version 2.2.8 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -2569,14 +2569,16 @@ proc tcltest::GetMatchingFiles { args } { set matchFileList [list] foreach match [matchFiles] { set matchFileList [concat $matchFileList \ - [glob -directory $directory -nocomplain -- $match]] + [glob -directory $directory -types {b c f p s} \ + -nocomplain -- $match]] } # List files in $directory that match patterns to skip. set skipFileList [list] foreach skip [skipFiles] { set skipFileList [concat $skipFileList \ - [glob -directory $directory -nocomplain -- $skip]] + [glob -directory $directory -types {b c f p s} \ + -nocomplain -- $skip]] } # Add to result list all files in match list and not in skip list @@ -2618,25 +2620,20 @@ proc tcltest::GetMatchingDirectories {rootdir} { # comes up to avoid infinite loops. set skipDirs [list $rootdir] foreach pattern [skipDirectories] { - foreach path [glob -directory $rootdir -nocomplain -- $pattern] { - if {[file isdirectory $path]} { - lappend skipDirs $path - } - } + set skipDirs [concat $skipDirs [glob -directory $rootdir -types d \ + -nocomplain -- $pattern]] } # Now step through the matching directories, prune out the skipped ones # as you go. set matchDirs [list] foreach pattern [matchDirectories] { - foreach path [glob -directory $rootdir -nocomplain -- $pattern] { - if {[file isdirectory $path]} { - if {[lsearch -exact $skipDirs $path] == -1} { - set matchDirs [concat $matchDirs \ - [GetMatchingDirectories $path]] - if {[file exists [file join $path all.tcl]]} { - lappend matchDirs $path - } + foreach path [glob -directory $rootdir -types d -nocomplain -- \ + $pattern] { + if {[lsearch -exact $skipDirs $path] == -1} { + set matchDirs [concat $matchDirs [GetMatchingDirectories $path]] + if {[file exists [file join $path all.tcl]]} { + lappend matchDirs $path } } } diff --git a/tests/tcltest.test b/tests/tcltest.test index 99efabf..5397e1e 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.8 2004/11/25 11:31:32 rmax Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.9 2005/02/24 18:03:37 dgp Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -703,7 +703,7 @@ test tcltest-9.1 {-file a*.tcl} -constraints {unixOrPc} -setup { set old [testsDirectory] testsDirectory [file dirname [info script]] } -body { - slave msg [file join [testsDirectory] all.tcl] -file a*.test + slave msg [file join [testsDirectory] all.tcl] -file as*.test set msg } -cleanup { testsDirectory $old @@ -714,7 +714,7 @@ test tcltest-9.2 {-file a*.tcl} -constraints {unixOrPc} -setup { testsDirectory [file dirname [info script]] } -body { slave msg [file join [testsDirectory] all.tcl] \ - -file a*.test -notfile assocd* + -file as*.test -notfile assocd* regexp {assocd\.test} $msg } -cleanup { testsDirectory $old @@ -746,6 +746,19 @@ test tcltest-9.4 {skipFiles} { -result {foo bar} } +test tcltest-9.5 {GetMatchingFiles: Bug 1119798} -setup { + file copy [file join [file dirname [info script]] all.tcl] [temporaryDirectory] + makeDirectory foo + makeFile {} fee +} -body { + slave msg [file join [temporaryDirectory] all.tcl] -file f* + regexp {exiting with errors:} $msg +} -cleanup { + removeFile fee + removeDirectory foo + file delete [file join [temporaryDirectory] all.tcl] +} -result 0 + # -preservecore, [preserveCore] set mc [makeFile { package require tcltest -- cgit v0.12 From 78b19eb0cf87919273d02fb4b527223ad94b0e0b Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 25 Feb 2005 22:37:52 +0000 Subject: backport tcltest test improvements --- tests/tcltest.test | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/tests/tcltest.test b/tests/tcltest.test index 5397e1e..7d3b1c4 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.9 2005/02/24 18:03:37 dgp Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.10 2005/02/25 22:37:52 dgp Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -561,7 +561,7 @@ switch $tcl_platform(platform) { } } -test tcltest-8.3 {tcltest a.tcl -tmpdir notReadableDir} {unixOnly notRoot} { +test tcltest-8.3 {tcltest a.tcl -tmpdir notReadableDir} {unix notRoot} { slave msg $a -tmpdir $notReadableDir string match {*not readable*} $msg } {1} @@ -621,7 +621,7 @@ test tcltest-8.11 {tcltest a.tcl -testdir thisdirectoryisafile} {unixOrPc} { string match "*not a directory*" $msg } {1} -test tcltest-8.12 {tcltest a.tcl -testdir notReadableDir} {unixOnly notRoot} { +test tcltest-8.12 {tcltest a.tcl -testdir notReadableDir} {unix notRoot} { slave msg $a -testdir $notReadableDir string match {*not readable*} $msg } {1} @@ -699,23 +699,23 @@ removeFile thisdirectoryisafile removeDirectory normaldirectory # -file, -notfile, [matchFiles], [skipFiles] -test tcltest-9.1 {-file a*.tcl} -constraints {unixOrPc} -setup { +test tcltest-9.1 {-file d*.tcl} -constraints {unixOrPc} -setup { set old [testsDirectory] testsDirectory [file dirname [info script]] } -body { - slave msg [file join [testsDirectory] all.tcl] -file as*.test + slave msg [file join [testsDirectory] all.tcl] -file d*.test set msg } -cleanup { testsDirectory $old -} -match regexp -result {assocd\.test} +} -match regexp -result {dstring\.test} -test tcltest-9.2 {-file a*.tcl} -constraints {unixOrPc} -setup { +test tcltest-9.2 {-file d*.tcl} -constraints {unixOrPc} -setup { set old [testsDirectory] testsDirectory [file dirname [info script]] } -body { slave msg [file join [testsDirectory] all.tcl] \ - -file as*.test -notfile assocd* - regexp {assocd\.test} $msg + -file d*.test -notfile dstring* + regexp {dstring\.test} $msg } -cleanup { testsDirectory $old } -result 0 @@ -747,16 +747,18 @@ test tcltest-9.4 {skipFiles} { } test tcltest-9.5 {GetMatchingFiles: Bug 1119798} -setup { - file copy [file join [file dirname [info script]] all.tcl] [temporaryDirectory] - makeDirectory foo - makeFile {} fee + set d [makeDirectory tmp] + makeDirectory foo $d + makeFile {} fee $d + file copy [file join [file dirname [info script]] all.tcl] $d } -body { slave msg [file join [temporaryDirectory] all.tcl] -file f* regexp {exiting with errors:} $msg } -cleanup { - removeFile fee - removeDirectory foo - file delete [file join [temporaryDirectory] all.tcl] + file delete [file join $d all.tcl] + removeFile fee $d + removeDirectory foo $d + removeDirectory tmp } -result 0 # -preservecore, [preserveCore] -- cgit v0.12 From dd554b7d2ad1bdc8a120c1f6627e43035d454420 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 8 Mar 2005 21:50:34 +0000 Subject: * win/makefile.vc: clarify necessary defined vars that can come from MSVC or the Platform SDK. --- ChangeLog | 5 +++++ win/makefile.vc | 32 ++++++++++++++++++-------------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8c223ec..419d674 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-03-08 Jeff Hobbs + + * win/makefile.vc: clarify necessary defined vars that can come + from MSVC or the Platform SDK. + 2005-02-24 Don Porter * library/tcltest/tcltest.tcl: Better use of [glob -types] to avoid diff --git a/win/makefile.vc b/win/makefile.vc index b03f1f4..31b5b67 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -8,36 +8,40 @@ # # Copyright (c) 1995-1996 Sun Microsystems, Inc. # Copyright (c) 1998-2000 Ajuba Solutions. -# Copyright (c) 2001 ActiveState Corporation. +# Copyright (c) 2001-2005 ActiveState Corporation. # Copyright (c) 2001-2002 David Gravereaux. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.100.2.5 2004/11/16 23:39:52 andreas_kupries Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.100.2.6 2005/03/08 21:50:37 hobbs Exp $ #------------------------------------------------------------------------------ -!if "$(MSVCDIR)" == "" +# Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) +# or with the MS Platform SDK (MSSDK) +!if !defined(MSDEVDIR) && !defined(MSVCDIR) && !defined(MSSDK) MSG = ^ -You'll need to run vcvars32.bat from Developer Studio, first, to setup^ -the environment. Jump to this line to read the new instructions. +You need to run vcvars32.bat from Developer Studio or setenv.bat from the^ +Platform SDK first to setup the environment. Jump to this line to read^ +the build instructions. !error $(MSG) !endif #------------------------------------------------------------------------------ # HOW TO USE this makefile: # -# 1) It is now necessary to have %MSVCDir% set in the environment. This is used -# as a check to see if vcvars32.bat had been run prior to running nmake or -# during the installation of Microsoft Visual C++, MSVCDir had been set -# globally and the PATH adjusted. Either way is valid. +# 1) It is now necessary to have MSVCDir, MSDevDir or MSSDK set in the +# environment. This is used as a check to see if vcvars32.bat had been +# run prior to running nmake or during the installation of Microsoft +# Visual C++, MSVCDir had been set globally and the PATH adjusted. +# Either way is valid. # # You'll need to run vcvars32.bat contained in the MsDev's vc(98)/bin -# directory to setup the proper environment, if needed, for your current -# setup. This is a needed bootstrap requirement and allows the swapping of -# different environments to be easier. +# directory to setup the proper environment, if needed, for your +# current setup. This is a needed bootstrap requirement and allows the +# swapping of different environments to be easier. # # 2) To use the Platform SDK (not expressly needed), run setenv.bat after -# vcvars32.bat according to the instructions for it. This can also turn on -# the 64-bit compiler, if your SDK has it. +# vcvars32.bat according to the instructions for it. This can also +# turn on the 64-bit compiler, if your SDK has it. # # 3) Targets are: # release -- Builds the core, the shell and the dlls. (default) -- cgit v0.12 From 05d3c7804d87884e7d7f1abb843602a31a5aeb73 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 10 Mar 2005 20:22:34 +0000 Subject: * generic/tclCmdMZ.c (TclCheckInterpTraces): Corrected mistaken cast of ClientData to (TraceCommandInfo *) when not warranted. Thanks to Yuri Victorovich for the report. [Bug 1153871] --- ChangeLog | 6 ++++++ generic/tclCmdMZ.c | 23 +++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 419d674..e8be7a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-03-10 Don Porter + + * generic/tclCmdMZ.c (TclCheckInterpTraces): Corrected mistaken + cast of ClientData to (TraceCommandInfo *) when not warranted. + Thanks to Yuri Victorovich for the report. [Bug 1153871] + 2005-03-08 Jeff Hobbs * win/makefile.vc: clarify necessary defined vars that can come diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index b4313cb..0b71be6 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.13 2004/11/15 21:14:32 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.14 2005/03/10 20:22:42 dgp Exp $ */ #include "tclInt.h" @@ -4263,7 +4263,6 @@ TclCheckInterpTraces(interp, command, numChars, cmdPtr, code, ActiveInterpTrace active; int curLevel; int traceCode = TCL_OK; - TraceCommandInfo* tcmdPtr; if (command == NULL || iPtr->tracePtr == NULL || (iPtr->flags & INTERP_TRACE_IN_PROGRESS)) { @@ -4313,16 +4312,16 @@ TclCheckInterpTraces(interp, command, numChars, cmdPtr, code, if (tracePtr->flags & (TCL_TRACE_ENTER_EXEC | TCL_TRACE_LEAVE_EXEC)) { /* New style trace */ - if ((tracePtr->flags != TCL_TRACE_EXEC_IN_PROGRESS) && - ((tracePtr->flags & traceFlags) != 0)) { - tcmdPtr = (TraceCommandInfo*)tracePtr->clientData; - tcmdPtr->curFlags = traceFlags; - tcmdPtr->curCode = code; - traceCode = (tracePtr->proc)((ClientData)tcmdPtr, - (Tcl_Interp*)interp, - curLevel, command, - (Tcl_Command)cmdPtr, - objc, objv); + if (tracePtr->flags & traceFlags) { + if (tracePtr->proc == TraceExecutionProc) { + TraceCommandInfo *tcmdPtr = + (TraceCommandInfo *) tracePtr->clientData; + tcmdPtr->curFlags = traceFlags; + tcmdPtr->curCode = code; + } + traceCode = (tracePtr->proc)(tracePtr->clientData, + interp, curLevel, command, (Tcl_Command)cmdPtr, + objc, objv); } } else { /* Old-style trace */ -- cgit v0.12 From 8fcf4b23507f94dd3ea8de33640f7cf34431a022 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Tue, 15 Mar 2005 00:15:59 +0000 Subject: Make it all work on OpenBSD. Imported patch from ports tree. --- ChangeLog | 5 + unix/configure | 556 ++++++++++++++++++++++++++++++--------------------------- unix/tcl.m4 | 54 ++++-- 3 files changed, 334 insertions(+), 281 deletions(-) diff --git a/ChangeLog b/ChangeLog index e8be7a0..a0a4fa6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-03-15 Pat Thoyts + + * unix/tcl.m4: Make it work on OpenBSD again. Imported patch + from the OpenBSD ports tree. + 2005-03-10 Don Porter * generic/tclCmdMZ.c (TclCheckInterpTraces): Corrected mistaken diff --git a/unix/configure b/unix/configure index 353c3ca..97d0df0 100755 --- a/unix/configure +++ b/unix/configure @@ -2920,37 +2920,61 @@ fi TCL_LIB_VERSIONS_OK=nodots ;; OpenBSD-*) - SHLIB_LD="${CC} -shared" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2932: checking for ELF" >&5 - cat > conftest.$ac_ext <&6 +echo "configure:2954: checking for ELF" >&5 + cat > conftest.$ac_ext <&5 | egrep "yes" >/dev/null 2>&1; then rm -rf conftest* echo "$ac_t""yes" 1>&6 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + LDFLAGS=-Wl,-export-dynamic else rm -rf conftest* echo "$ac_t""no" 1>&6 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - + LDFLAGS="" + fi rm -f conftest* + ;; + esac # OpenBSD doesn't do version numbers with dots. UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' @@ -3294,17 +3318,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3298: checking for ld accepts -Bexport flag" >&5 +echo "configure:3322: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3345,9 +3369,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3349: checking sys/exec.h" >&5 +echo "configure:3373: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3365,7 +3389,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3393: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3383,9 +3407,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3387: checking a.out.h" >&5 +echo "configure:3411: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3403,7 +3427,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3421,9 +3445,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3425: checking sys/exec_aout.h" >&5 +echo "configure:3449: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3441,7 +3465,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3445: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3591,7 +3615,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3595: checking for build with symbols" >&5 +echo "configure:3619: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3652,21 +3676,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3656: checking for required early compiler flags" >&5 +echo "configure:3680: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3674,7 +3698,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3682,7 +3706,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3708,14 +3732,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3743: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3723,7 +3747,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3731,7 +3755,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3760,7 +3784,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3764: checking for 64-bit integer type" >&5 +echo "configure:3788: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3768,14 +3792,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3789,7 +3813,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3823,13 +3847,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3827: checking for struct dirent64" >&5 +echo "configure:3851: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3837,7 +3861,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3865: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3858,13 +3882,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3862: checking for struct stat64" >&5 +echo "configure:3886: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3872,7 +3896,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3893,13 +3917,13 @@ EOF echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:3897: checking for off64_t" >&5 +echo "configure:3921: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3907,7 +3931,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:3911: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -3922,12 +3946,12 @@ fi for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3926: checking for $ac_func" >&5 +echo "configure:3950: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3993,14 +4017,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3997: checking whether byte ordering is bigendian" >&5 +echo "configure:4021: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4011,11 +4035,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4026,7 +4050,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4046,7 +4070,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4092,12 +4116,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4096: checking for $ac_func" >&5 +echo "configure:4120: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4154,12 +4178,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4158: checking for $ac_func" >&5 +echo "configure:4182: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4212,12 +4236,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4216: checking for $ac_func" >&5 +echo "configure:4240: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4267,12 +4291,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4271: checking for strerror" >&5 +echo "configure:4295: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4319,12 +4343,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4323: checking for getwd" >&5 +echo "configure:4347: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4371,12 +4395,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4375: checking for wait3" >&5 +echo "configure:4399: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4423,12 +4447,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4427: checking for uname" >&5 +echo "configure:4451: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4475,12 +4499,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4479: checking for realpath" >&5 +echo "configure:4503: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4538,9 +4562,9 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4542: checking dirent.h" >&5 +echo "configure:4566: checking dirent.h" >&5 cat > conftest.$ac_ext < #include @@ -4566,7 +4590,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_ok=yes else @@ -4587,17 +4611,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4591: checking for errno.h" >&5 +echo "configure:4615: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4625: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4624,17 +4648,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4628: checking for float.h" >&5 +echo "configure:4652: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4661,17 +4685,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4665: checking for values.h" >&5 +echo "configure:4689: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4675: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4699: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4698,17 +4722,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4702: checking for limits.h" >&5 +echo "configure:4726: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4712: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4738,17 +4762,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4742: checking for stdlib.h" >&5 +echo "configure:4766: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4771,7 +4795,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4785,7 +4809,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4799,7 +4823,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4820,17 +4844,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4824: checking for string.h" >&5 +echo "configure:4848: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4858: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4853,7 +4877,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4867,7 +4891,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4893,17 +4917,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4897: checking for sys/wait.h" >&5 +echo "configure:4921: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4907: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4931: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4930,17 +4954,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4934: checking for dlfcn.h" >&5 +echo "configure:4958: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4972,17 +4996,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4976: checking for $ac_hdr" >&5 +echo "configure:5000: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4986: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5010: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5022,17 +5046,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5026: checking for $ac_hdr" >&5 +echo "configure:5050: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5060: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5059,7 +5083,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5063: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5087: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5068,7 +5092,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5083,7 +5107,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5100,7 +5124,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5114,7 +5138,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5132,7 +5156,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5147,7 +5171,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5165,7 +5189,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5182,7 +5206,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5200,7 +5224,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5216,7 +5240,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5234,7 +5258,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5251,7 +5275,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5294,19 +5318,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5298: checking for fd_set in sys/types" >&5 +echo "configure:5322: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5322,12 +5346,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5326: checking for fd_mask in sys/select" >&5 +echo "configure:5350: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5364,12 +5388,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5368: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5392: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5377,7 +5401,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5405: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5402,17 +5426,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5406: checking for $ac_hdr" >&5 +echo "configure:5430: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5416: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5439,12 +5463,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5443: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5467: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5453,7 +5477,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5474,12 +5498,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5478: checking for tm_zone in struct tm" >&5 +echo "configure:5502: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5487,7 +5511,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5507,12 +5531,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5511: checking for tzname" >&5 +echo "configure:5535: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5522,7 +5546,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5547,12 +5571,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5551: checking for $ac_func" >&5 +echo "configure:5575: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5601,19 +5625,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5605: checking tm_tzadj in struct tm" >&5 +echo "configure:5629: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5634,19 +5658,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5638: checking tm_gmtoff in struct tm" >&5 +echo "configure:5662: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5671,12 +5695,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5675: checking long timezone variable" >&5 +echo "configure:5699: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5685,7 +5709,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5708,12 +5732,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5712: checking time_t timezone variable" >&5 +echo "configure:5736: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5722,7 +5746,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5726: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5750: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5749,12 +5773,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5753: checking for st_blksize in struct stat" >&5 +echo "configure:5777: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5762,7 +5786,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5766: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5783,12 +5807,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5787: checking for fstatfs" >&5 +echo "configure:5811: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5840,7 +5864,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5844: checking for 8-bit clean memcmp" >&5 +echo "configure:5868: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5848,7 +5872,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5882,12 +5906,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5886: checking for memmove" >&5 +echo "configure:5910: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5943,12 +5967,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5947: checking proper strstr implementation" >&5 +echo "configure:5971: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -5984,12 +6008,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:5988: checking for strtoul" >&5 +echo "configure:6012: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6036,7 +6060,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6075,12 +6099,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6079: checking for strtod" >&5 +echo "configure:6103: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6127,7 +6151,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6169,12 +6193,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6173: checking for strtod" >&5 +echo "configure:6197: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6219,7 +6243,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6223: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6247: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6228,7 +6252,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6284,12 +6308,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6288: checking for ANSI C header files" >&5 +echo "configure:6312: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6297,7 +6321,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6301: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6314,7 +6338,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6332,7 +6356,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6353,7 +6377,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6364,7 +6388,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6388,12 +6412,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6392: checking for mode_t" >&5 +echo "configure:6416: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6421,12 +6445,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6425: checking for pid_t" >&5 +echo "configure:6449: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6454,12 +6478,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6458: checking for size_t" >&5 +echo "configure:6482: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6487,12 +6511,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6491: checking for uid_t in sys/types.h" >&5 +echo "configure:6515: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6522,12 +6546,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6526: checking for socklen_t" >&5 +echo "configure:6550: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6566,12 +6590,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6570: checking for opendir" >&5 +echo "configure:6594: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6627,12 +6651,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6631: checking union wait" >&5 +echo "configure:6655: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6644,7 +6668,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6671,12 +6695,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6675: checking for strncasecmp" >&5 +echo "configure:6699: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6721,7 +6745,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6725: checking for strncasecmp in -lsocket" >&5 +echo "configure:6749: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6729,7 +6753,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6764,7 +6788,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6768: checking for strncasecmp in -linet" >&5 +echo "configure:6792: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6772,7 +6796,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6821,12 +6845,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6825: checking for BSDgettimeofday" >&5 +echo "configure:6849: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6871,12 +6895,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6875: checking for gettimeofday" >&5 +echo "configure:6899: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6926,12 +6950,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6930: checking for gettimeofday declaration" >&5 +echo "configure:6954: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6962,14 +6986,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:6966: checking whether char is unsigned" >&5 +echo "configure:6990: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7025,12 +7049,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7029: checking signed char declarations" >&5 +echo "configure:7053: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7065,7 +7089,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7069: checking for a putenv() that copies the buffer" >&5 +echo "configure:7093: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7073,7 +7097,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7095,7 +7119,7 @@ else } EOF -if { (eval echo configure:7099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7137,17 +7161,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7141: checking for langinfo.h" >&5 +echo "configure:7165: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7151: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7172,17 +7196,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7176: checking whether to use nl_langinfo" >&5 +echo "configure:7200: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7186: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7217,17 +7241,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7221: checking for $ac_hdr" >&5 +echo "configure:7245: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7231: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7257,17 +7281,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7261: checking for $ac_hdr" >&5 +echo "configure:7285: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7295: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7294,7 +7318,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7298: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7322: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7357,7 +7381,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7361: checking how to package libraries" >&5 +echo "configure:7385: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 16eb892..92722c4 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1283,24 +1283,48 @@ dnl AC_CHECK_TOOL(AR, ar) TCL_LIB_VERSIONS_OK=nodots ;; OpenBSD-*) - SHLIB_LD="${CC} -shared" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - AC_MSG_CHECKING(for ELF) - AC_EGREP_CPP(yes, [ + case `arch -s` in + m88k|vax) + SHLIB_CFLAGS="" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".a" + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + ;; + *) + # OpenBSD/SPARC[64] needs -fPIC, -fpic will not do. + case `machine` in + sparc|sparc64) + SHLIB_CFLAGS="-fPIC";; + *) + SHLIB_CFLAGS="-fpic";; + esac + SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + AC_MSG_CHECKING(for ELF) + AC_EGREP_CPP(yes, [ #ifdef __ELF__ yes #endif - ], - [AC_MSG_RESULT(yes) - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'], - [AC_MSG_RESULT(no) - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'] - ) + ], + AC_MSG_RESULT(yes) + [ LDFLAGS=-Wl,-export-dynamic ], + AC_MSG_RESULT(no) + LDFLAGS="" + ) + ;; + esac # OpenBSD doesn't do version numbers with dots. UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' -- cgit v0.12 From d1efd01d81c6ab8a8172b42147ecb529524894b3 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 15 Mar 2005 16:29:50 +0000 Subject: replaced 'long' times with wides, to cope with Win64 --- ChangeLog | 12 ++++++++++++ generic/tclClock.c | 26 +++++++++++++------------- generic/tclDate.c | 12 ++++++------ generic/tclGetDate.y | 12 ++++++------ generic/tclInt.decls | 8 ++++---- generic/tclIntDecls.h | 12 ++++++------ unix/tclUnixTime.c | 4 ++-- win/tclWinTime.c | 4 ++-- 8 files changed, 51 insertions(+), 39 deletions(-) diff --git a/ChangeLog b/ChangeLog index a0a4fa6..012078b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2005-03-15 Kevin B. Kenny + + * generic/tclClock.c: + * generic/tclDate.c: + * generic/tclGetDate.y: + * generic/tclInt.decls: + * unix/tclUnixTime.c: + * win/tclWinTime.c: Replaced 'unsigned long' variable holding + times with 'Tcl_WideInt', to cope with systems on which a time_t + is wider than a long (Win64) [Bug 1163422] + * generic/tclIntDecls.h: Regen + 2005-03-15 Pat Thoyts * unix/tcl.m4: Make it work on OpenBSD again. Imported patch diff --git a/generic/tclClock.c b/generic/tclClock.c index 9683abb..d476795 100644 --- a/generic/tclClock.c +++ b/generic/tclClock.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclClock.c,v 1.20.2.1 2004/05/14 21:41:11 kennykb Exp $ + * RCS: @(#) $Id: tclClock.c,v 1.20.2.2 2005/03/15 16:29:53 kennykb Exp $ */ #include "tcl.h" @@ -29,7 +29,7 @@ TCL_DECLARE_MUTEX(clockMutex) */ static int FormatClock _ANSI_ARGS_((Tcl_Interp *interp, - unsigned long clockVal, int useGMT, + Tcl_WideInt clockVal, int useGMT, char *format)); /* @@ -62,7 +62,7 @@ Tcl_ClockObjCmd (client, interp, objc, objv) int useGMT = 0; char *format = "%a %b %d %X %Z %Y"; int dummy; - unsigned long baseClock, clockVal; + Tcl_WideInt baseClock, clockVal; long zone; Tcl_Obj *baseObjPtr = NULL; char *scanStr; @@ -128,7 +128,7 @@ Tcl_ClockObjCmd (client, interp, objc, objv) return TCL_ERROR; } - if (Tcl_GetLongFromObj(interp, objv[2], (long*) &clockVal) + if (Tcl_GetWideIntFromObj(interp, objv[2], &clockVal) != TCL_OK) { return TCL_ERROR; } @@ -157,7 +157,7 @@ Tcl_ClockObjCmd (client, interp, objc, objv) if (objc != 0) { goto wrongFmtArgs; } - return FormatClock(interp, (unsigned long) clockVal, useGMT, + return FormatClock(interp, clockVal, useGMT, format); case COMMAND_SCAN: /* scan */ @@ -194,8 +194,8 @@ Tcl_ClockObjCmd (client, interp, objc, objv) } if (baseObjPtr != NULL) { - if (Tcl_GetLongFromObj(interp, baseObjPtr, - (long*) &baseClock) != TCL_OK) { + if (Tcl_GetWideIntFromObj(interp, baseObjPtr, + &baseClock) != TCL_OK) { return TCL_ERROR; } } else { @@ -205,13 +205,13 @@ Tcl_ClockObjCmd (client, interp, objc, objv) if (useGMT) { zone = -50000; /* Force GMT */ } else { - zone = TclpGetTimeZone((unsigned long) baseClock); + zone = TclpGetTimeZone(baseClock); } scanStr = Tcl_GetStringFromObj(objv[2], &dummy); Tcl_MutexLock(&clockMutex); - if (TclGetDate(scanStr, (unsigned long) baseClock, zone, - (unsigned long *) &clockVal) < 0) { + if (TclGetDate(scanStr, baseClock, zone, + &clockVal) < 0) { Tcl_MutexUnlock(&clockMutex); Tcl_AppendStringsToObj(resultPtr, "unable to convert date-time string \"", @@ -220,7 +220,7 @@ Tcl_ClockObjCmd (client, interp, objc, objv) } Tcl_MutexUnlock(&clockMutex); - Tcl_SetLongObj(resultPtr, (long) clockVal); + Tcl_SetWideIntObj(resultPtr, clockVal); return TCL_OK; case COMMAND_SECONDS: /* seconds */ @@ -255,7 +255,7 @@ Tcl_ClockObjCmd (client, interp, objc, objv) static int FormatClock(interp, clockVal, useGMT, format) Tcl_Interp *interp; /* Current interpreter. */ - unsigned long clockVal; /* Time in seconds. */ + Tcl_WideInt clockVal; /* Time in seconds. */ int useGMT; /* Boolean */ char *format; /* Format string */ { @@ -317,7 +317,7 @@ FormatClock(interp, clockVal, useGMT, format) } #endif - tclockVal = clockVal; + tclockVal = (time_t) clockVal; timeDataPtr = TclpGetDate((TclpTime_t) &tclockVal, useGMT); /* diff --git a/generic/tclDate.c b/generic/tclDate.c index 31576d2..870988f 100644 --- a/generic/tclDate.c +++ b/generic/tclDate.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDate.c,v 1.20 2001/10/18 20:20:28 hobbs Exp $ + * RCS: @(#) $Id: tclDate.c,v 1.20.4.1 2005/03/15 16:29:53 kennykb Exp $ */ #include "tclInt.h" @@ -832,9 +832,9 @@ TclDatelex() int TclGetDate(p, now, zone, timePtr) char *p; - unsigned long now; + Tcl_WideInt now; long zone; - unsigned long *timePtr; + Tcl_WideInt *timePtr; { struct tm *tm; time_t Start; @@ -844,8 +844,8 @@ TclGetDate(p, now, zone, timePtr) TclDateInput = p; /* now has to be cast to a time_t for 64bit compliance */ - Start = now; - tm = TclpGetDate((TclpTime_t) &Start, 0); + Start = (time_t) now; + tm = TclpGetDate((TclpTime_t) &Start, (zone == -50000)); thisyear = tm->tm_year + TM_YEAR_BASE; TclDateYear = thisyear; TclDateMonth = tm->tm_mon + 1; @@ -904,7 +904,7 @@ TclGetDate(p, now, zone, timePtr) return -1; } } else { - Start = now; + Start = (time_t) now; if (!TclDateHaveRel) { Start -= ((tm->tm_hour * 60L * 60L) + tm->tm_min * 60L) + tm->tm_sec; diff --git a/generic/tclGetDate.y b/generic/tclGetDate.y index 14b9869..62a70c8 100644 --- a/generic/tclGetDate.y +++ b/generic/tclGetDate.y @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclGetDate.y,v 1.18 2001/10/18 20:20:28 hobbs Exp $ + * RCS: @(#) $Id: tclGetDate.y,v 1.18.4.1 2005/03/15 16:29:53 kennykb Exp $ */ %{ @@ -1051,9 +1051,9 @@ yylex() int TclGetDate(p, now, zone, timePtr) char *p; - unsigned long now; + Tcl_WideInt now; long zone; - unsigned long *timePtr; + Tcl_WideInt *timePtr; { struct tm *tm; time_t Start; @@ -1063,8 +1063,8 @@ TclGetDate(p, now, zone, timePtr) yyInput = p; /* now has to be cast to a time_t for 64bit compliance */ - Start = now; - tm = TclpGetDate((TclpTime_t) &Start, 0); + Start = (time_t) now; + tm = TclpGetDate((TclpTime_t) &Start, (zone == -50000)); thisyear = tm->tm_year + TM_YEAR_BASE; yyYear = thisyear; yyMonth = tm->tm_mon + 1; @@ -1123,7 +1123,7 @@ TclGetDate(p, now, zone, timePtr) return -1; } } else { - Start = now; + Start = (time_t) now; if (!yyHaveRel) { Start -= ((tm->tm_hour * 60L * 60L) + tm->tm_min * 60L) + tm->tm_sec; diff --git a/generic/tclInt.decls b/generic/tclInt.decls index 71434b5..82d5e49 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.59.2.5 2004/10/28 16:06:32 kennykb Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.59.2.6 2005/03/15 16:29:53 kennykb Exp $ library tcl @@ -124,8 +124,8 @@ declare 25 generic { # char * TclGetCwd(Tcl_Interp *interp) # } declare 27 generic { - int TclGetDate(char *p, unsigned long now, long zone, - unsigned long *timePtr) + int TclGetDate(char *p, Tcl_WideInt now, long zone, + Tcl_WideInt *timePtr) } declare 28 generic { Tcl_Channel TclpGetDefaultStdChannel(int type) @@ -312,7 +312,7 @@ declare 77 generic { } declare 78 generic { - int TclpGetTimeZone(unsigned long time) + int TclpGetTimeZone(Tcl_WideInt time) } # Replaced by Tcl_FSListVolumes in 8.4: #declare 79 generic { diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index e70baf1..c761ae1 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.7 2004/10/28 16:06:33 kennykb Exp $ + * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.8 2005/03/15 16:29:53 kennykb Exp $ */ #ifndef _TCLINTDECLS @@ -115,8 +115,8 @@ EXTERN int TclFormatInt _ANSI_ARGS_((char * buffer, long n)); EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp * iPtr)); /* Slot 26 is reserved */ /* 27 */ -EXTERN int TclGetDate _ANSI_ARGS_((char * p, unsigned long now, - long zone, unsigned long * timePtr)); +EXTERN int TclGetDate _ANSI_ARGS_((char * p, Tcl_WideInt now, + long zone, Tcl_WideInt * timePtr)); /* 28 */ EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type)); /* Slot 29 is reserved */ @@ -241,7 +241,7 @@ EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void)); /* 77 */ EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time * time)); /* 78 */ -EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time)); +EXTERN int TclpGetTimeZone _ANSI_ARGS_((Tcl_WideInt time)); /* Slot 79 is reserved */ /* Slot 80 is reserved */ /* 81 */ @@ -580,7 +580,7 @@ typedef struct TclIntStubs { int (*tclFormatInt) _ANSI_ARGS_((char * buffer, long n)); /* 24 */ void (*tclFreePackageInfo) _ANSI_ARGS_((Interp * iPtr)); /* 25 */ void *reserved26; - int (*tclGetDate) _ANSI_ARGS_((char * p, unsigned long now, long zone, unsigned long * timePtr)); /* 27 */ + int (*tclGetDate) _ANSI_ARGS_((char * p, Tcl_WideInt now, long zone, Tcl_WideInt * timePtr)); /* 27 */ Tcl_Channel (*tclpGetDefaultStdChannel) _ANSI_ARGS_((int type)); /* 28 */ void *reserved29; void *reserved30; @@ -631,7 +631,7 @@ typedef struct TclIntStubs { unsigned long (*tclpGetClicks) _ANSI_ARGS_((void)); /* 75 */ unsigned long (*tclpGetSeconds) _ANSI_ARGS_((void)); /* 76 */ void (*tclpGetTime) _ANSI_ARGS_((Tcl_Time * time)); /* 77 */ - int (*tclpGetTimeZone) _ANSI_ARGS_((unsigned long time)); /* 78 */ + int (*tclpGetTimeZone) _ANSI_ARGS_((Tcl_WideInt time)); /* 78 */ void *reserved79; void *reserved80; char * (*tclpRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 81 */ diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c index 0e0268f..da03440 100644 --- a/unix/tclUnixTime.c +++ b/unix/tclUnixTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.3 2004/10/28 16:06:50 kennykb Exp $ + * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.4 2005/03/15 16:29:54 kennykb Exp $ */ #include "tclInt.h" @@ -131,7 +131,7 @@ TclpGetClicks() int TclpGetTimeZone (currentTime) - unsigned long currentTime; + Tcl_WideInt currentTime; { /* * We prefer first to use the time zone in "struct tm" if the diff --git a/win/tclWinTime.c b/win/tclWinTime.c index 0eb21b3..5696ffc 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.6 2004/10/28 16:06:51 kennykb Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.7 2005/03/15 16:29:55 kennykb Exp $ */ #include "tclWinInt.h" @@ -223,7 +223,7 @@ TclpGetClicks() int TclpGetTimeZone (currentTime) - unsigned long currentTime; + Tcl_WideInt currentTime; { int timeZone; -- cgit v0.12 From 54eca4bde86a1e41d123a643f2aadf95caf433da Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Tue, 15 Mar 2005 18:08:20 +0000 Subject: fix to file norm, file pathtype on windows reserved filenames --- ChangeLog | 7 +++++ generic/tclFileName.c | 37 ++++++++++++----------- tests/winFCmd.test | 50 ++++++++++++++++++++++++++++++- win/tclWinFile.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 155 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index 012078b..46d5b0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-03-15 Vince Darley + + * generic/tclFileName.c: + * win/tclWinFile.c: + * tests/winFCMd.test: fix to 'file pathtype' and 'file norm' + failures on reserved filenames like 'COM1:', etc. + 2005-03-15 Kevin B. Kenny * generic/tclClock.c: diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 7fbfb7f..cc1f91a 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.7 2004/03/09 12:56:59 vincentdarley Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.8 2005/03/15 18:08:21 vincentdarley Exp $ */ #include "tclInt.h" @@ -244,37 +244,38 @@ ExtractWinRoot(path, resultPtr, offset, typePtr) } } else { int abs = 0; - if (path[0] == 'c' && path[1] == 'o') { - if (path[2] == 'm' && path[3] >= '1' && path[3] <= '9') { - /* May have match for 'com[1-9]:?', which is a serial port */ - if (path[4] == '\0') { - abs = 4; - } else if (path [4] == ':' && path[5] == '\0') { + if ((path[0] == 'c' || path[0] == 'C') + && (path[1] == 'o' || path[1] == 'O')) { + if ((path[2] == 'm' || path[2] == 'M') + && path[3] >= '1' && path[3] <= '4') { + /* May have match for 'com[1-4]:?', which is a serial port */ + if (path[4] == '\0') { + abs = 4; + } else if (path [4] == ':' && path[5] == '\0') { abs = 5; - } - } else if (path[2] == 'n' && path[3] == '\0') { + } + } else if ((path[2] == 'n' || path[2] == 'N') && path[3] == '\0') { /* Have match for 'con' */ abs = 3; } - } else if (path[0] == 'l' && path[1] == 'p' && path[2] == 't') { - if (path[3] >= '1' && path[3] <= '9') { - /* May have match for 'lpt[1-9]:?' */ + } else if ((path[0] == 'l' || path[0] == 'L') + && (path[1] == 'p' || path[1] == 'P') + && (path[2] == 't' || path[2] == 'T')) { + if (path[3] >= '1' && path[3] <= '3') { + /* May have match for 'lpt[1-3]:?' */ if (path[4] == '\0') { abs = 4; } else if (path [4] == ':' && path[5] == '\0') { abs = 5; } } - } else if (path[0] == 'p' && path[1] == 'r' - && path[2] == 'n' && path[3] == '\0') { + } else if (stricmp(path, "prn") == 0) { /* Have match for 'prn' */ abs = 3; - } else if (path[0] == 'n' && path[1] == 'u' - && path[2] == 'l' && path[3] == '\0') { + } else if (stricmp(path, "nul") == 0) { /* Have match for 'nul' */ abs = 3; - } else if (path[0] == 'a' && path[1] == 'u' - && path[2] == 'x' && path[3] == '\0') { + } else if (stricmp(path, "aux") == 0) { /* Have match for 'aux' */ abs = 3; } diff --git a/tests/winFCmd.test b/tests/winFCmd.test index 49bae98..937aef3 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.20.2.6 2005/01/17 13:04:44 vincentdarley Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.20.2.7 2005/03/15 18:08:24 vincentdarley Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -1020,6 +1020,54 @@ test winFCmd-16.12 {Windows file normalization} {pcOnly} { cd $pwd unset d dd pwd +test winFCmd-18.1 {Windows reserved path names} -constraints win -body { + file pathtype com1 +} -result "absolute" + +test winFCmd-18.1.2 {Windows reserved path names} -constraints win -body { + file pathtype com4 +} -result "absolute" + +test winFCmd-18.1.3 {Windows reserved path names} -constraints win -body { + file pathtype com5 +} -result "relative" + +test winFCmd-18.1.4 {Windows reserved path names} -constraints win -body { + file pathtype lpt3 +} -result "absolute" + +test winFCmd-18.1.5 {Windows reserved path names} -constraints win -body { + file pathtype lpt4 +} -result "relative" + +test winFCmd-18.2 {Windows reserved path names} -constraints win -body { + file pathtype com1: +} -result "absolute" + +test winFCmd-18.3 {Windows reserved path names} -constraints win -body { + file pathtype COM1 +} -result "absolute" + +test winFCmd-18.4 {Windows reserved path names} -constraints win -body { + file pathtype CoM1: +} -result "absolute" + +test winFCmd-18.5 {Windows reserved path names} -constraints win -body { + file normalize com1: +} -result COM1 + +test winFCmd-18.6 {Windows reserved path names} -constraints win -body { + file normalize COM1: +} -result COM1 + +test winFCmd-18.7 {Windows reserved path names} -constraints win -body { + file normalize cOm1 +} -result COM1 + +test winFCmd-18.8 {Windows reserved path names} -constraints win -body { + file normalize cOm1: +} -result COM1 + # This block of code used to occur after the "return" call, so I'm # commenting it out and assuming that this code is still under construction. #foreach source {tef ted tnf tnd "" nul com1} { diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 1ad7da8..18c4787 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.10 2004/10/08 20:16:42 hobbs Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.11 2005/03/15 18:08:24 vincentdarley Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -178,6 +178,7 @@ static int NativeWriteReparse(CONST TCHAR* LinkDirectory, static int NativeMatchType(int isDrive, DWORD attr, CONST TCHAR* nativeName, Tcl_GlobTypeData *types); static int WinIsDrive(CONST char *name, int nameLen); +static int WinIsReserved(CONST char *path); static Tcl_Obj* WinReadLink(CONST TCHAR* LinkSource); static Tcl_Obj* WinReadLinkDirectory(CONST TCHAR* LinkDirectory); static int WinLink(CONST TCHAR* LinkSource, CONST TCHAR* LinkTarget, @@ -1010,6 +1011,52 @@ WinIsDrive( return 0; } +/* + * Does the given path represent a reserved window path name? If not + * return 0, if true, return the number of characters of the path that + * we actually want (not any trailing :). + */ +static int WinIsReserved( + CONST char *path) /* Path in UTF-8 */ +{ + if ((path[0] == 'c' || path[0] == 'C') + && (path[1] == 'o' || path[1] == 'O')) { + if ((path[2] == 'm' || path[2] == 'M') + && path[3] >= '1' && path[3] <= '4') { + /* May have match for 'com[1-4]:?', which is a serial port */ + if (path[4] == '\0') { + return 4; + } else if (path [4] == ':' && path[5] == '\0') { + return 4; + } + } else if ((path[2] == 'n' || path[2] == 'N') && path[3] == '\0') { + /* Have match for 'con' */ + return 3; + } + } else if ((path[0] == 'l' || path[0] == 'L') + && (path[1] == 'p' || path[1] == 'P') + && (path[2] == 't' || path[2] == 'T')) { + if (path[3] >= '1' && path[3] <= '3') { + /* May have match for 'lpt[1-3]:?' */ + if (path[4] == '\0') { + return 4; + } else if (path [4] == ':' && path[5] == '\0') { + return 4; + } + } + } else if (stricmp(path, "prn") == 0) { + /* Have match for 'prn' */ + return 3; + } else if (stricmp(path, "nul") == 0) { + /* Have match for 'nul' */ + return 3; + } else if (stricmp(path, "aux") == 0) { + /* Have match for 'aux' */ + return 3; + } + return 0; +} + /* *---------------------------------------------------------------------- * @@ -2140,9 +2187,22 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) * the current normalized path, if the file exists. */ if (isDrive) { - if (GetFileAttributesA(nativePath) - == 0xffffffff) { + if (GetFileAttributesA(nativePath) == 0xffffffff) { /* File doesn't exist */ + if (isDrive) { + int len = WinIsReserved(path); + if (len > 0) { + /* Actually it does exist - COM1, etc */ + int i; + for (i=0;i= 'a') { + ((char*)nativePath)[i] -= ('a' - 'A'); + } + } + Tcl_DStringAppend(&dsNorm, nativePath, len); + lastValidPathEnd = currentPathEndPosition; + } + } Tcl_DStringFree(&ds); break; } @@ -2209,6 +2269,23 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) if ((*tclWinProcs->getFileAttributesExProc)(nativePath, GetFileExInfoStandard, &data) != TRUE) { /* File doesn't exist */ + if (isDrive) { + int len = WinIsReserved(path); + if (len > 0) { + /* Actually it does exist - COM1, etc */ + int i; + for (i=0;i= L'a') { + wc -= (L'a' - L'A'); + ((WCHAR*)nativePath)[i] = wc; + } + } + Tcl_DStringAppend(&dsNorm, nativePath, + sizeof(WCHAR)*len); + lastValidPathEnd = currentPathEndPosition; + } + } Tcl_DStringFree(&ds); break; } -- cgit v0.12 From 04c179bb5098db811c7e1fc19fb7c8dbb5c03d56 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Tue, 15 Mar 2005 18:41:32 +0000 Subject: fix to file norm, file pathtype on windows reserved filenames - ensure build ok on unix --- generic/tclFileName.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/generic/tclFileName.c b/generic/tclFileName.c index cc1f91a..5ccd455 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.8 2005/03/15 18:08:21 vincentdarley Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.9 2005/03/15 18:41:32 vincentdarley Exp $ */ #include "tclInt.h" @@ -269,13 +269,19 @@ ExtractWinRoot(path, resultPtr, offset, typePtr) abs = 5; } } - } else if (stricmp(path, "prn") == 0) { + } else if ((path[0] == 'p' || path[0] == 'P') + && (path[1] == 'r' || path[1] == 'R') + && (path[2] == 'n' || path[2] == 'N')) { /* Have match for 'prn' */ abs = 3; - } else if (stricmp(path, "nul") == 0) { + } else if ((path[0] == 'n' || path[0] == 'N') + && (path[1] == 'u' || path[1] == 'U') + && (path[2] == 'l' || path[2] == 'L')) { /* Have match for 'nul' */ abs = 3; - } else if (stricmp(path, "aux") == 0) { + } else if ((path[0] == 'a' || path[0] == 'A') + && (path[1] == 'u' || path[1] == 'U') + && (path[2] == 'x' || path[2] == 'X')) { /* Have match for 'aux' */ abs = 3; } -- cgit v0.12 From 06cfdf8d7716b24e5778cbeaef05d8756622d010 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Tue, 15 Mar 2005 22:10:58 +0000 Subject: more tests and a fix to bug 1158199 --- generic/tclFileName.c | 11 +++++++---- tests/winFCmd.test | 10 +++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 5ccd455..67d606d 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.9 2005/03/15 18:41:32 vincentdarley Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.10 2005/03/15 22:10:58 vincentdarley Exp $ */ #include "tclInt.h" @@ -271,17 +271,20 @@ ExtractWinRoot(path, resultPtr, offset, typePtr) } } else if ((path[0] == 'p' || path[0] == 'P') && (path[1] == 'r' || path[1] == 'R') - && (path[2] == 'n' || path[2] == 'N')) { + && (path[2] == 'n' || path[2] == 'N') + && path[3] == '\0') { /* Have match for 'prn' */ abs = 3; } else if ((path[0] == 'n' || path[0] == 'N') && (path[1] == 'u' || path[1] == 'U') - && (path[2] == 'l' || path[2] == 'L')) { + && (path[2] == 'l' || path[2] == 'L') + && path[3] == '\0') { /* Have match for 'nul' */ abs = 3; } else if ((path[0] == 'a' || path[0] == 'A') && (path[1] == 'u' || path[1] == 'U') - && (path[2] == 'x' || path[2] == 'X')) { + && (path[2] == 'x' || path[2] == 'X') + && path[3] == '\0') { /* Have match for 'aux' */ abs = 3; } diff --git a/tests/winFCmd.test b/tests/winFCmd.test index 937aef3..a6221c4 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.20.2.7 2005/03/15 18:08:24 vincentdarley Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.20.2.8 2005/03/15 22:10:58 vincentdarley Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -1040,6 +1040,14 @@ test winFCmd-18.1.5 {Windows reserved path names} -constraints win -body { file pathtype lpt4 } -result "relative" +test winFCmd-18.1.6 {Windows reserved path names} -constraints win -body { + file pathtype nul +} -result "absolute" + +test winFCmd-18.1.7 {Windows reserved path names} -constraints win -body { + file pathtype null +} -result "relative" + test winFCmd-18.2 {Windows reserved path names} -constraints win -body { file pathtype com1: } -result "absolute" -- cgit v0.12 From 5a484df86936621e5bf60c2a78ab5832ed886485 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Mar 2005 15:32:27 +0000 Subject: * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks for immediate operand usage to permit leading space and sign characters. [Bug 1165671] --- ChangeLog | 6 ++++++ generic/tclCompCmds.c | 26 +++++++++++--------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 46d5b0b..4f1666a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-03-17 Don Porter + + * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks + for immediate operand usage to permit leading space and sign + characters. [Bug 1165671] + 2005-03-15 Vince Darley * generic/tclFileName.c: diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 42b8448..300feb2 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.2 2003/07/15 20:51:49 dgp Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.3 2005/03/18 15:32:29 dgp Exp $ */ #include "tclInt.h" @@ -1526,31 +1526,28 @@ TclCompileIncrCmd(interp, parsePtr, envPtr) */ haveImmValue = 0; - immValue = 0; + immValue = 1; if (parsePtr->numWords == 3) { incrTokenPtr = varTokenPtr + (varTokenPtr->numComponents + 1); if (incrTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) { CONST char *word = incrTokenPtr[1].start; int numBytes = incrTokenPtr[1].size; - int validLength = TclParseInteger(word, numBytes); - long n; /* * Note there is a danger that modifying the string could have - * undesirable side effects. In this case, TclLooksLikeInt and - * TclGetLong do not have any dependencies on shared strings so we - * should be safe. + * undesirable side effects. In this case, TclLooksLikeInt has + * no dependencies on shared strings so we should be safe. */ - if (validLength == numBytes) { + if (TclLooksLikeInt(word, numBytes)) { int code; - Tcl_Obj *longObj = Tcl_NewStringObj(word, numBytes); - Tcl_IncrRefCount(longObj); - code = Tcl_GetLongFromObj(NULL, longObj, &n); - Tcl_DecrRefCount(longObj); - if ((code == TCL_OK) && (-127 <= n) && (n <= 127)) { + Tcl_Obj *intObj = Tcl_NewStringObj(word, numBytes); + Tcl_IncrRefCount(intObj); + code = Tcl_GetIntFromObj(NULL, intObj, &immValue); + Tcl_DecrRefCount(intObj); + if ((code == TCL_OK) + && (-127 <= immValue) && (immValue <= 127)) { haveImmValue = 1; - immValue = n; } } if (!haveImmValue) { @@ -1566,7 +1563,6 @@ TclCompileIncrCmd(interp, parsePtr, envPtr) } } else { /* no incr amount given so use 1 */ haveImmValue = 1; - immValue = 1; } /* -- cgit v0.12 From 38aa6b01bae64c7dfadc6191237627723343a0a3 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Mar 2005 16:33:32 +0000 Subject: * generic/tclBasic.c (Tcl_EvalEx,TclEvalTokensStandard): * generic/tclCmdMZ.c (Tcl_SubstObj): * tests/basic.test (basic-46.4): Restored recursion limit * tests/parse.test (parse-19.*): testing in nested command substitutions within direct script evaluation (Tcl_EvalEx) that got lost in the parser reforms of Tcl 8.1. Added tests for correct behavior. [Bug 1115904] --- ChangeLog | 15 ++++++++++++--- generic/tclBasic.c | 35 +++++++++++++++++++++-------------- generic/tclCmdMZ.c | 10 ++++++++-- tests/basic.test | 6 ++---- tests/parse.test | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 90 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4f1666a..9d78dba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,17 @@ 2005-03-17 Don Porter - * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks - for immediate operand usage to permit leading space and sign - characters. [Bug 1165671] + * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks + for immediate operand usage to permit leading space and sign + characters. Restores more efficient bytecode for [incr x -1] + that got lost in the CONST string reforms of Tcl 8.4. [Bug 1165671] + + * generic/tclBasic.c (Tcl_EvalEx,TclEvalTokensStandard): + * generic/tclCmdMZ.c (Tcl_SubstObj): + * tests/basic.test (basic-46.4): Restored recursion limit + * tests/parse.test (parse-19.*): testing in nested command + substitutions within direct script evaluation (Tcl_EvalEx) + that got lost in the parser reforms of Tcl 8.1. Added tests for + correct behavior. [Bug 1115904] 2005-03-15 Vince Darley diff --git a/generic/tclBasic.c b/generic/tclBasic.c index f61fc6a..dfa24e8 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.13 2005/02/10 19:03:59 msofer Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.14 2005/03/18 16:33:41 dgp Exp $ */ #include "tclInt.h" @@ -3405,14 +3405,21 @@ Tcl_EvalTokensStandard(interp, tokenPtr, count) p = buffer; break; - case TCL_TOKEN_COMMAND: - code = Tcl_EvalEx(interp, tokenPtr->start+1, tokenPtr->size-2, - 0); + case TCL_TOKEN_COMMAND: { + Interp *iPtr = (Interp *) interp; + iPtr->numLevels++; + code = TclInterpReady(interp); + if (code == TCL_OK) { + code = Tcl_EvalEx(interp, + tokenPtr->start+1, tokenPtr->size-2, 0); + } + iPtr->numLevels--; if (code != TCL_OK) { goto done; } valuePtr = Tcl_GetObjResult(interp); break; + } case TCL_TOKEN_VARIABLE: if (tokenPtr->numComponents == 1) { @@ -3683,16 +3690,6 @@ Tcl_EvalEx(interp, script, numBytes, flags) parse.commandStart, parse.commandSize, 0); iPtr->numLevels--; if (code != TCL_OK) { - if (iPtr->numLevels == 0) { - if (code == TCL_RETURN) { - code = TclUpdateReturnInfo(iPtr); - } - if ((code != TCL_OK) && (code != TCL_ERROR) - && !allowExceptions) { - ProcessUnexpectedResult(interp, code); - code = TCL_ERROR; - } - } goto error; } for (i = 0; i < objectsUsed; i++) { @@ -3749,6 +3746,16 @@ Tcl_EvalEx(interp, script, numBytes, flags) * to the command. */ + if (iPtr->numLevels == 0) { + if (code == TCL_RETURN) { + code = TclUpdateReturnInfo(iPtr); + } + if ((code != TCL_OK) && (code != TCL_ERROR) + && !allowExceptions) { + ProcessUnexpectedResult(interp, code); + code = TCL_ERROR; + } + } if ((code == TCL_ERROR) && !(iPtr->flags & ERR_ALREADY_LOGGED)) { commandLength = parse.commandSize; if (parse.term == parse.commandStart + commandLength - 1) { diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 0b71be6..ce28e54 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,12 +14,13 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.14 2005/03/10 20:22:42 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.15 2005/03/18 16:33:42 dgp Exp $ */ #include "tclInt.h" #include "tclPort.h" #include "tclRegexp.h" +#include "tclCompile.h" /* * Structure used to hold information about variable traces: @@ -2652,7 +2653,12 @@ Tcl_SubstObj(interp, objPtr, flags) Tcl_AppendToObj(resultObj, old, p-old); } iPtr->evalFlags = TCL_BRACKET_TERM; - code = Tcl_EvalEx(interp, p+1, -1, 0); + iPtr->numLevels++; + code = TclInterpReady(interp); + if (code == TCL_OK) { + code = Tcl_EvalEx(interp, p+1, -1, 0); + } + iPtr->numLevels--; switch (code) { case TCL_ERROR: goto errorResult; diff --git a/tests/basic.test b/tests/basic.test index 2c8a6a7..0a995ba 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.25.2.6 2005/02/10 18:58:36 msofer Exp $ +# RCS: @(#) $Id: basic.test,v 1.25.2.7 2005/03/18 16:33:43 dgp Exp $ # package require tcltest 2 @@ -652,9 +652,7 @@ test basic-46.4 {Tcl_AllowExceptions: exception return not allowed} -setup { } -cleanup { removeFile BREAKtest } -returnCodes error -match glob -result {invoked "break" outside of a loop - while executing -"break" - invoked from within + while executing* "foo \[set a 1] \[break]" (file "*BREAKtest" line 2)} diff --git a/tests/parse.test b/tests/parse.test index 8007fc2..124ab0f 100644 --- a/tests/parse.test +++ b/tests/parse.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parse.test,v 1.11.2.1 2003/03/27 13:49:22 dkf Exp $ +# RCS: @(#) $Id: parse.test,v 1.11.2.2 2005/03/18 16:33:43 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -744,6 +744,52 @@ test parse-17.1 {Correct return codes from errors during substitution} { catch {eval {w[continue]}} } 4 +test parse-19.1 {Bug 1115904: recursion limit in Tcl_EvalEx} -constraints { + testevalex +} -setup { + interp create i + load {} Tcltest i + i eval {proc {} args {}} + interp recursionlimit i 3 +} -body { + i eval {testevalex {[]}} +} -cleanup { + interp delete i +} + +test parse-19.2 {Bug 1115904: recursion limit in Tcl_EvalEx} -constraints { + testevalex +} -setup { + interp create i + load {} Tcltest i + i eval {proc {} args {}} + interp recursionlimit i 3 +} -body { + i eval {testevalex {[[]]}} +} -cleanup { + interp delete i +} -returnCodes error -match glob -result {too many nested*} + +test parse-19.3 {Bug 1115904: recursion limit in Tcl_EvalEx} -setup { + interp create i + i eval {proc {} args {}} + interp recursionlimit i 3 +} -body { + i eval {subst {[]}} +} -cleanup { + interp delete i +} + +test parse-19.4 {Bug 1115904: recursion limit in Tcl_EvalEx} -setup { + interp create i + i eval {proc {} args {}} + interp recursionlimit i 3 +} -body { + i eval {subst {[[]]}} +} -cleanup { + interp delete i +} -returnCodes error -match glob -result {too many nested*} + # cleanup catch {unset a} ::tcltest::cleanupTests -- cgit v0.12 From 02235dc65890aa96049e6e357603f18712153c06 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Mar 2005 16:33:59 +0000 Subject: date typo --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9d78dba..0735139 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2005-03-17 Don Porter +2005-03-18 Don Porter * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks for immediate operand usage to permit leading space and sign -- cgit v0.12 From 53f060e88ded7c62161650d8252b22e4f2d8456b Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 23 Mar 2005 21:58:17 +0000 Subject: purge outdated comment --- generic/tclTimer.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/generic/tclTimer.c b/generic/tclTimer.c index 6dd912d..0e14f4d 100644 --- a/generic/tclTimer.c +++ b/generic/tclTimer.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTimer.c,v 1.6.2.1 2004/09/07 18:21:16 kennykb Exp $ + * RCS: @(#) $Id: tclTimer.c,v 1.6.2.2 2005/03/23 21:58:17 dgp Exp $ */ #include "tclInt.h" @@ -757,9 +757,7 @@ Tcl_AfterObjCmd(clientData, interp, objc, objv) /* * Create the "after" information associated for this interpreter, - * if it doesn't already exist. Associate it with the command too, - * so that it will be passed in as the ClientData argument in the - * future. + * if it doesn't already exist. */ assocPtr = Tcl_GetAssocData( interp, "tclAfter", NULL ); -- cgit v0.12 From b39b3b72cd4898667fe49e7f3620f786b1233087 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Mar 2005 05:30:59 +0000 Subject: * win/tclWinTime.c (TclpGetDate): use time_t for 'time' --- ChangeLog | 20 ++++++++++++-------- win/tclWinTime.c | 15 ++++++--------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0735139..0eff810 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,16 +1,20 @@ +2005-03-29 Jeff Hobbs + + * win/tclWinTime.c (TclpGetDate): use time_t for 'time' + 2005-03-18 Don Porter - * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks - for immediate operand usage to permit leading space and sign - characters. Restores more efficient bytecode for [incr x -1] - that got lost in the CONST string reforms of Tcl 8.4. [Bug 1165671] + * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks + for immediate operand usage to permit leading space and sign + characters. Restores more efficient bytecode for [incr x -1] + that got lost in the CONST string reforms of Tcl 8.4. [Bug 1165671] - * generic/tclBasic.c (Tcl_EvalEx,TclEvalTokensStandard): + * generic/tclBasic.c (Tcl_EvalEx,TclEvalTokensStandard): * generic/tclCmdMZ.c (Tcl_SubstObj): - * tests/basic.test (basic-46.4): Restored recursion limit - * tests/parse.test (parse-19.*): testing in nested command + * tests/basic.test (basic-46.4): Restored recursion limit + * tests/parse.test (parse-19.*): testing in nested command substitutions within direct script evaluation (Tcl_EvalEx) - that got lost in the parser reforms of Tcl 8.1. Added tests for + that got lost in the parser reforms of Tcl 8.1. Added tests for correct behavior. [Bug 1115904] 2005-03-15 Vince Darley diff --git a/win/tclWinTime.c b/win/tclWinTime.c index 5696ffc..dbb6dbc 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.7 2005/03/15 16:29:55 kennykb Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.8 2005/03/30 05:31:13 hobbs Exp $ */ #include "tclWinInt.h" @@ -260,7 +260,6 @@ void Tcl_GetTime(timePtr) Tcl_Time *timePtr; /* Location to store time information. */ { - struct timeb t; int useFtime = 1; /* Flag == TRUE if we need to fall back @@ -379,7 +378,6 @@ Tcl_GetTime(timePtr) } if ( timeInfo.perfCounterAvailable ) { - /* * Query the performance counter and use it to calculate the * current time. @@ -417,7 +415,7 @@ Tcl_GetTime(timePtr) */ if ( curCounter.QuadPart - timeInfo.perfCounterLastCall.QuadPart < 11 * timeInfo.curCounterFreq.QuadPart / 10 ) { - + curFileTime = timeInfo.fileTimeLastCall.QuadPart + ( ( curCounter.QuadPart - timeInfo.perfCounterLastCall.QuadPart ) * 10000000 / timeInfo.curCounterFreq.QuadPart ); @@ -431,9 +429,8 @@ Tcl_GetTime(timePtr) LeaveCriticalSection( &timeInfo.cs ); } - + if ( useFtime ) { - /* High resolution timer is not available. Just use ftime */ ftime(&t); @@ -581,7 +578,7 @@ TclpGetDate(t, useGMT) { const time_t *tp = (const time_t *) t; struct tm *tmPtr; - long time; + time_t time; if (!useGMT) { tzset(); @@ -597,7 +594,7 @@ TclpGetDate(t, useGMT) } time = *tp - _timezone; - + /* * If we aren't near to overflowing the long, just add the bias and * use the normal calculation. Otherwise we will need to adjust @@ -623,7 +620,7 @@ TclpGetDate(t, useGMT) tmPtr->tm_sec += 60; time -= 60; } - + time = tmPtr->tm_min + time/60; tmPtr->tm_min = (int)(time % 60); if (tmPtr->tm_min < 0) { -- cgit v0.12 From ee6a3a70463ffbf998a1c7769fcfdfcae003fa56 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Mar 2005 06:17:58 +0000 Subject: * win/tcl.m4, win/configure: do not require cygpath in macros to allow msys alone as an alternative. --- ChangeLog | 5 ++++- win/configure | 59 +++++++++++++++++++++++++++++++---------------------------- win/tcl.m4 | 37 ++++++++++++++++++++----------------- 3 files changed, 55 insertions(+), 46 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0eff810..100c77c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,9 @@ 2005-03-29 Jeff Hobbs - * win/tclWinTime.c (TclpGetDate): use time_t for 'time' + * win/tcl.m4, win/configure: do not require cygpath in macros to + allow msys alone as an alternative. + + * win/tclWinTime.c (TclpGetDate): use time_t for 'time' [Bug 1163422] 2005-03-18 Don Porter diff --git a/win/configure b/win/configure index 42bfd0e..72d3822 100755 --- a/win/configure +++ b/win/configure @@ -1663,9 +1663,7 @@ echo "configure:1521: checking compiler flags" >&5 if test "x${MSSDK}x" = "xx" ; then MSSDK="C:/Progra~1/Microsoft SDK" fi - # In order to work in the tortured autoconf environment, - # we need to ensure that this path has no spaces - MSSDK=$(cygpath -w -s "$MSSDK" | sed -e 's!\\!/!g') + MSSDK=`echo "$MSSDK" | sed -e 's!\\\!/!g'` if test ! -d "${MSSDK}/bin/win64" ; then echo "configure: warning: "could not find 64-bit SDK to enable 64bit mode"" 1>&2 do64bit="no" @@ -1674,18 +1672,21 @@ echo "configure:1521: checking compiler flags" >&5 if test "$do64bit" = "yes" ; then # All this magic is necessary for the Win64 SDK RC1 - hobbs - CC="${MSSDK}/Bin/Win64/cl.exe \ - -I${MSSDK}/Include/prerelease \ - -I${MSSDK}/Include/Win64/crt \ - -I${MSSDK}/Include/Win64/crt/sys \ - -I${MSSDK}/Include" - RC="${MSSDK}/bin/rc.exe" + # The space-based-path will work for the Makefile, but will + # not work if AC_TRY_COMPILE is called. TEA has the + # TEA_PATH_NOSPACE to avoid this issue. + CC="\"${MSSDK}/Bin/Win64/cl.exe\" \ + -I\"${MSSDK}/Include/prerelease\" \ + -I\"${MSSDK}/Include/Win64/crt\" \ + -I\"${MSSDK}/Include/Win64/crt/sys\" \ + -I\"${MSSDK}/Include\"" + RC="\"${MSSDK}/bin/rc.exe\"" CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" - CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" - lflags="-MACHINE:IA64 -LIBPATH:${MSSDK}/Lib/IA64 \ - -LIBPATH:${MSSDK}/Lib/Prerelease/IA64" - STLIB_LD="${MSSDK}/bin/win64/lib.exe -nologo ${lflags}" - LINKBIN="${MSSDK}/bin/win64/link.exe ${lflags}" + # Do not use -O2 for Win64 - this has proved buggy in code gen. + CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}" + lflags="-MACHINE:IA64 -LIBPATH:\"${MSSDK}/Lib/IA64\" \ + -LIBPATH:\"${MSSDK}/Lib/Prerelease/IA64\" -nologo" + LINKBIN="\"${MSSDK}/bin/win64/link.exe\"" else RC="rc" # -Od - no optimization @@ -1693,13 +1694,15 @@ echo "configure:1521: checking compiler flags" >&5 CFLAGS_DEBUG="-nologo -Z7 -Od -WX ${runtime}d" # -O2 - create fast code (/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy) CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" - STLIB_LD="link -lib -nologo" + lflags="-nologo" LINKBIN="link" fi - SHLIB_LD="${LINKBIN} -dll -nologo -incremental:no" LIBS="user32.lib advapi32.lib" LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib comctl32.lib shell32.lib" + SHLIB_LD="${LINKBIN} -dll -incremental:no ${lflags}" + # link -lib only works when -lib is the first arg + STLIB_LD="${LINKBIN} -lib ${lflags}" RC_OUT=-fo RC_TYPE=-r RC_INCLUDE=-i @@ -1712,7 +1715,7 @@ echo "configure:1521: checking compiler flags" >&5 EXTRA_CFLAGS="" CFLAGS_WARNING="-W3" - LDFLAGS_DEBUG="-debug:full -debugtype:both" + LDFLAGS_DEBUG="-debug:full" LDFLAGS_OPTIMIZE="-release" # Specify the CC output file names based on the target name @@ -1740,7 +1743,7 @@ echo "configure:1521: checking compiler flags" >&5 echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:1744: checking for build with symbols" >&5 +echo "configure:1747: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -1800,7 +1803,7 @@ TCL_DBGX=${DBGX} #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1804: checking how to run the C preprocessor" >&5 +echo "configure:1807: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1815,13 +1818,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1828: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1832,13 +1835,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1842: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1845: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1849,13 +1852,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1862: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1881,17 +1884,17 @@ echo "$ac_t""$CPP" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1885: checking for errno.h" >&5 +echo "configure:1888: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1898: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* diff --git a/win/tcl.m4 b/win/tcl.m4 index 3219f41..c7b615c 100644 --- a/win/tcl.m4 +++ b/win/tcl.m4 @@ -571,9 +571,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ if test "x${MSSDK}x" = "xx" ; then MSSDK="C:/Progra~1/Microsoft SDK" fi - # In order to work in the tortured autoconf environment, - # we need to ensure that this path has no spaces - MSSDK=$(cygpath -w -s "$MSSDK" | sed -e 's!\\!/!g') + MSSDK=`echo "$MSSDK" | sed -e 's!\\\!/!g'` if test ! -d "${MSSDK}/bin/win64" ; then AC_MSG_WARN("could not find 64-bit SDK to enable 64bit mode") do64bit="no" @@ -582,18 +580,21 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ if test "$do64bit" = "yes" ; then # All this magic is necessary for the Win64 SDK RC1 - hobbs - CC="${MSSDK}/Bin/Win64/cl.exe \ - -I${MSSDK}/Include/prerelease \ - -I${MSSDK}/Include/Win64/crt \ - -I${MSSDK}/Include/Win64/crt/sys \ - -I${MSSDK}/Include" - RC="${MSSDK}/bin/rc.exe" + # The space-based-path will work for the Makefile, but will + # not work if AC_TRY_COMPILE is called. TEA has the + # TEA_PATH_NOSPACE to avoid this issue. + CC="\"${MSSDK}/Bin/Win64/cl.exe\" \ + -I\"${MSSDK}/Include/prerelease\" \ + -I\"${MSSDK}/Include/Win64/crt\" \ + -I\"${MSSDK}/Include/Win64/crt/sys\" \ + -I\"${MSSDK}/Include\"" + RC="\"${MSSDK}/bin/rc.exe\"" CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" - CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" - lflags="-MACHINE:IA64 -LIBPATH:${MSSDK}/Lib/IA64 \ - -LIBPATH:${MSSDK}/Lib/Prerelease/IA64" - STLIB_LD="${MSSDK}/bin/win64/lib.exe -nologo ${lflags}" - LINKBIN="${MSSDK}/bin/win64/link.exe ${lflags}" + # Do not use -O2 for Win64 - this has proved buggy in code gen. + CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}" + lflags="-MACHINE:IA64 -LIBPATH:\"${MSSDK}/Lib/IA64\" \ + -LIBPATH:\"${MSSDK}/Lib/Prerelease/IA64\" -nologo" + LINKBIN="\"${MSSDK}/bin/win64/link.exe\"" else RC="rc" # -Od - no optimization @@ -601,13 +602,15 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ CFLAGS_DEBUG="-nologo -Z7 -Od -WX ${runtime}d" # -O2 - create fast code (/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy) CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" - STLIB_LD="link -lib -nologo" + lflags="-nologo" LINKBIN="link" fi - SHLIB_LD="${LINKBIN} -dll -nologo -incremental:no" LIBS="user32.lib advapi32.lib" LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib comctl32.lib shell32.lib" + SHLIB_LD="${LINKBIN} -dll -incremental:no ${lflags}" + # link -lib only works when -lib is the first arg + STLIB_LD="${LINKBIN} -lib ${lflags}" RC_OUT=-fo RC_TYPE=-r RC_INCLUDE=-i @@ -620,7 +623,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ EXTRA_CFLAGS="" CFLAGS_WARNING="-W3" - LDFLAGS_DEBUG="-debug:full -debugtype:both" + LDFLAGS_DEBUG="-debug:full" LDFLAGS_OPTIMIZE="-release" # Specify the CC output file names based on the target name -- cgit v0.12 From f67da7eac043413a7e37d04e4ff19fcb39bafc58 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 5 Apr 2005 16:39:58 +0000 Subject: * generic/tclExecute.c (ExprSrandFunc): Replaced incursions into the * generic/tclUtil.c (TclGetIntForIndex): intreps of numeric types with simpler calls of Tcl_GetIntFromObj and Tcl_GetLongFromObj, now that those routines are better behaved wrt shimmering. [Patch 1177219] --- ChangeLog | 8 ++++++++ generic/tclExecute.c | 8 ++------ generic/tclUtil.c | 46 +++------------------------------------------- 3 files changed, 13 insertions(+), 49 deletions(-) diff --git a/ChangeLog b/ChangeLog index 100c77c..10cdeac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-04-05 Don Porter + + * generic/tclExecute.c (ExprSrandFunc): Replaced incursions into the + * generic/tclUtil.c (TclGetIntForIndex): intreps of numeric types + with simpler calls of Tcl_GetIntFromObj and Tcl_GetLongFromObj, + now that those routines are better behaved wrt shimmering. + [Patch 1177219] + 2005-03-29 Jeff Hobbs * win/tcl.m4, win/configure: do not require cygpath in macros to diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 99e1d67..2809466 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.11 2005/02/01 17:26:32 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.12 2005/04/05 16:40:11 dgp Exp $ */ #include "tclInt.h" @@ -5555,11 +5555,7 @@ ExprSrandFunc(interp, eePtr, clientData) goto badValue; } - if (valuePtr->typePtr == &tclIntType) { - i = valuePtr->internalRep.longValue; - } else if (valuePtr->typePtr == &tclWideIntType) { - TclGetLongFromWide(i,valuePtr); - } else { + if (Tcl_GetLongFromObj(NULL, valuePtr, &i) != TCL_OK) { /* * At this point, the only other possible type is double */ diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 59872ce..57fc6e0 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.36.2.5 2004/10/14 15:28:39 dkf Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.36.2.6 2005/04/05 16:40:16 dgp Exp $ */ #include "tclInt.h" @@ -2276,32 +2276,10 @@ TclGetIntForIndex(interp, objPtr, endValue, indexPtr) int *indexPtr; /* Location filled in with an integer * representing an index. */ { - char *bytes; - int offset; - Tcl_WideInt wideOffset; - - /* - * If the object is already an integer, use it. - */ - - if (objPtr->typePtr == &tclIntType) { - *indexPtr = (int)objPtr->internalRep.longValue; + if (Tcl_GetIntFromObj(NULL, objPtr, indexPtr) == TCL_OK) { return TCL_OK; } - /* - * If the object is already a wide-int, and it is not out of range - * for an integer, use it. [Bug #526717] - */ - if (objPtr->typePtr == &tclWideIntType) { - TclGetWide(wideOffset,objPtr); - if (wideOffset >= Tcl_LongAsWide(INT_MIN) - && wideOffset <= Tcl_LongAsWide(INT_MAX)) { - *indexPtr = (int) Tcl_WideAsLong(wideOffset); - return TCL_OK; - } - } - if (SetEndOffsetFromAny(NULL, objPtr) == TCL_OK) { /* * If the object is already an offset from the end of the @@ -2310,31 +2288,13 @@ TclGetIntForIndex(interp, objPtr, endValue, indexPtr) *indexPtr = endValue + objPtr->internalRep.longValue; - } else if (Tcl_GetWideIntFromObj(NULL, objPtr, &wideOffset) == TCL_OK) { - /* - * If the object can be converted to a wide integer, use - * that. [Bug #526717] - */ - - offset = (int) Tcl_WideAsLong(wideOffset); - if (Tcl_LongAsWide(offset) == wideOffset) { - /* - * But it is representable as a narrow integer, so we - * prefer that (so preserving old behaviour in the - * majority of cases.) - */ - objPtr->typePtr = &tclIntType; - objPtr->internalRep.longValue = offset; - } - *indexPtr = offset; - } else { /* * Report a parse error. */ if (interp != NULL) { - bytes = Tcl_GetString(objPtr); + char *bytes = Tcl_GetString(objPtr); /* * The result might not be empty; this resets it which * should be both a cheap operation, and of little problem -- cgit v0.12 From cd1f05c5c994b178f62d69e7d3065f36efd0383d Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Apr 2005 11:24:13 +0000 Subject: Added prototypes for TclpFreeAllocCache() and TclFreeAllocCache(). Part of fixing the Tcl Bug #1178445. --- generic/tclInt.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/generic/tclInt.h b/generic/tclInt.h index 81d1304..300a14c 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.8 2005/01/27 22:53:33 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.9 2005/04/07 11:24:13 vasiljevic Exp $ */ #ifndef _TCLINT @@ -2136,8 +2136,10 @@ EXTERN Tcl_Obj *TclPtrIncrVar _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, EXTERN Tcl_Obj *TclThreadAllocObj _ANSI_ARGS_((void)); EXTERN void TclThreadFreeObj _ANSI_ARGS_((Tcl_Obj *)); +EXTERN void TclFreeAllocCache _ANSI_ARGS_((void *)); EXTERN void TclFinalizeThreadAlloc _ANSI_ARGS_((void)); EXTERN void TclpFreeAllocMutex _ANSI_ARGS_((Tcl_Mutex* mutex)); +EXTERN void TclpFreeAllocCache _ANSI_ARGS_((void *)); # define TclAllocObjStorage(objPtr) \ -- cgit v0.12 From c9b947d0bbffda30051c5afb7e1223f129e9d090 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Apr 2005 11:27:17 +0000 Subject: Modified TclFinalizeThreadAlloc() to explicitly call TclpFreeAllocCache with the NULL-ptr as argument signalling cleanup of private tsd key used only by the threading allocator. Part of fixing the Tcl Bug #1178445. --- generic/tclThreadAlloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index fdddeff..6b02906 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.5 2004/10/28 21:12:38 andreas_kupries Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.6 2005/04/07 11:27:17 vasiljevic Exp $ */ #include "tclInt.h" @@ -980,6 +980,8 @@ TclFinalizeThreadAlloc() TclpFreeAllocMutex(listLockPtr); listLockPtr = NULL; + + TclpFreeAllocCache(NULL); } #else /* ! defined(TCL_THREADS) && ! defined(USE_THREAD_ALLOC) */ -- cgit v0.12 From b1b25f985a53897c4403e2236c236453ecf5e4b4 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Apr 2005 11:28:22 +0000 Subject: Fixed TclpFreeAllocCache() to recognize when being called with NULL argument. This is a signal for it to clean up the tsd key associated with the threading allocator. Part of fixing the Tcl Bug #1178445. --- unix/tclUnixThrd.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index ee080ba..bdac40d 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -927,13 +927,16 @@ TclpFreeAllocMutex(mutex) void TclpFreeAllocCache(ptr) void *ptr; { - extern void TclFreeAllocCache(void *); - - TclFreeAllocCache(ptr); - /* - * Perform proper cleanup of things done in TclpGetAllocCache. - */ - if (initialized) { + if (ptr != NULL) { + /* + * Called by the pthread lib when a thread exits + */ + TclFreeAllocCache(ptr); + } else if (initialized) { + /* + * Called by us in TclFinalizeThreadAlloc() during + * the library finalization initiated from Tcl_Finalize() + */ pthread_key_delete(key); initialized = 0; } -- cgit v0.12 From 6ca86ff55e9908c05d9fff0366e849a58dfa4d2f Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Apr 2005 11:29:33 +0000 Subject: Renamed TclWinFreeAllocCache to TclpFreeAllocCache and fixed to recognize when being called with NULL argument. This is a signal for it to clean up the tsd key associated with the threading allocator. Part of fixing the Tcl Bug #1178445. --- win/tclWinThrd.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index 05a321b..953a154 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.9 2004/10/28 21:12:38 andreas_kupries Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.10 2005/04/07 11:29:33 vasiljevic Exp $ */ #include "tclWinInt.h" @@ -680,13 +680,16 @@ TclpFinalizeThreadData(keyPtr) DWORD *indexPtr; BOOL success; -#if defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) - TclWinFreeAllocCache(); -#endif if (*keyPtr != NULL) { indexPtr = *(DWORD **)keyPtr; result = (VOID *)TlsGetValue(*indexPtr); if (result != NULL) { +#if defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) + if (indexPtr == &key) { + TclpFreeAllocCache(result); + return; + } +#endif ckfree((char *)result); success = TlsSetValue(*indexPtr, (void *)NULL); if (!success) { @@ -1078,7 +1081,7 @@ TclpGetAllocCache(void) if (!once) { /* - * We need to make sure that TclWinFreeAllocCache is called + * We need to make sure that TclpFreeAllocCache is called * on each thread that calls this, but only on threads that * call this. */ @@ -1107,30 +1110,28 @@ TclpSetAllocCache(void *ptr) } void -TclWinFreeAllocCache(void) +TclpFreeAllocCache(void *ptr) { - void *ptr; BOOL success; - ptr = TlsGetValue(key); if (ptr != NULL) { - success = TlsSetValue(key, NULL); + /* + * Called by the pthread lib when a thread exits + */ + TclFreeAllocCache(ptr); + success = TlsSetValue(key, NULL); if (!success) { - panic("TlsSetValue failed from TclWinFreeAllocCache!"); + panic("TlsSetValue failed from TclpFreeAllocCache!"); } - TclFreeAllocCache(ptr); - } else { - if (GetLastError() != NO_ERROR) { - panic("TlsGetValue failed from TclWinFreeAllocCache!"); - } - } - - if (once) { + } else if (once) { + /* + * Called by us in TclFinalizeThreadAlloc() during + * the library finalization initiated from Tcl_Finalize() + */ success = TlsFree(key); if (!success) { - Tcl_Panic("TlsFree failed from TclWinFreeAllocCache!"); + Tcl_Panic("TlsFree failed from TclpFreeAllocCache!"); } - once = 0; /* reset for next time. */ } } -- cgit v0.12 From b2c1ff759d079fa84741dbdd6731c219a380ac1b Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Apr 2005 11:33:33 +0000 Subject: See file. --- ChangeLog | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ChangeLog b/ChangeLog index 10cdeac..b833fc8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,29 @@ +2005-04-05 Zoran Vasiljevic + + Set of changes correcting huge memory waste (not a leak) + when a thread exits. This has been introduced in 8.4.7 + within an attempt to correctly cleanup after ourselves when + Tcl library is being unloaded with the Tcl_Finalize() call. + + This fixes the Tcl Bug #1178445. + + * generic/tclInt.h: added prototypes for TclpFreeAllocCache() + and TclFreeAllocCache() + + * generic/tclThreadAlloc.c: modified TclFinalizeThreadAlloc() + to explicitly call TclpFreeAllocCache with the NULL-ptr as + argument signalling cleanup of private tsd key used only by + the threading allocator. + + * unix/tclUnixThrd.c: fixed TclpFreeAllocCache() to recognize + when being called with NULL argument. This is a signal for it + to clean up the tsd key associated with the threading allocator. + + * win/tclWinThrd.c: renamed TclWinFreeAllocCache to TclpFreeAllocCache + and fixed to recognize when being called with NULL argument. + This is a signal for it to clean up the tsd key associated with the + threading allocator. + 2005-04-05 Don Porter * generic/tclExecute.c (ExprSrandFunc): Replaced incursions into the -- cgit v0.12 From a0f3eee0fbdd6275d2107addc2324142975644f0 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 9 Apr 2005 10:16:54 +0000 Subject: * unix/tcl.m4 (Darwin): added -single_module linker flag to TCL_SHLIB_LD_EXTRAS and TK_SHLIB_LD_EXTRAS. * unix/configure: autoconf-2.13 --- ChangeLog | 6 ++++++ unix/configure | 4 ++-- unix/tcl.m4 | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b833fc8..71a2ce1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-04-09 Daniel Steffen + + * unix/tcl.m4 (Darwin): added -single_module linker flag to + TCL_SHLIB_LD_EXTRAS and TK_SHLIB_LD_EXTRAS. + * unix/configure: autoconf-2.13 + 2005-04-05 Zoran Vasiljevic Set of changes correcting huge memory waste (not a leak) diff --git a/unix/configure b/unix/configure index 97d0df0..c9ee57b 100755 --- a/unix/configure +++ b/unix/configure @@ -3009,8 +3009,8 @@ rm -f conftest* Darwin-*) SHLIB_CFLAGS="-fno-common" SHLIB_LD="cc -dynamiclib \${LDFLAGS}" - TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000" - TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TK_LIB_FILE} -prebind -seg1addr 0xb000000" + TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000 -Wl,-single_module" + TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TK_LIB_FILE} -prebind -seg1addr 0xb000000 -Wl,-single_module" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 92722c4..ccd9946 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1359,8 +1359,8 @@ dnl AC_CHECK_TOOL(AR, ar) Darwin-*) SHLIB_CFLAGS="-fno-common" SHLIB_LD="cc -dynamiclib \${LDFLAGS}" - TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000" - TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TK_LIB_FILE} -prebind -seg1addr 0xb000000" + TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000 -Wl,-single_module" + TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TK_LIB_FILE} -prebind -seg1addr 0xb000000 -Wl,-single_module" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" -- cgit v0.12 From ee1da5406c345e9e5cddc43adb4558ca64015115 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 9 Apr 2005 15:39:22 +0000 Subject: * macosx/README: updated requirements for OS & developer tool versions + other small fixes/cleanup. --- ChangeLog | 3 +++ macosx/README | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 71a2ce1..55f45bc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-04-09 Daniel Steffen + * macosx/README: updated requirements for OS & developer tool + versions + other small fixes/cleanup. + * unix/tcl.m4 (Darwin): added -single_module linker flag to TCL_SHLIB_LD_EXTRAS and TK_SHLIB_LD_EXTRAS. * unix/configure: autoconf-2.13 diff --git a/macosx/README b/macosx/README index ced6d99..348f14b 100644 --- a/macosx/README +++ b/macosx/README @@ -1,7 +1,7 @@ Tcl MacOSX README ----------------- -RCS: @(#) $Id: README,v 1.1.2.1 2003/07/15 01:15:51 das Exp $ +RCS: @(#) $Id: README,v 1.1.2.2 2005/04/09 15:39:23 das Exp $ This is the README file for the Mac OS X native version of Tcl (framework build). @@ -34,10 +34,10 @@ tracker and not the tcl one. 2. Using Tcl on MacOSX ---------------------- -- Mac OS X 10.1 (or higher) is required to run Tcl on MacOSX. +- Mac OS X 10.2 (or higher) is required to run Tcl on MacOSX. -- Tcl built on Mac OS X 10.2 or higher will not run on 10.1 due to missing -symbols in libSystem, however Tcl built on 10.1 will run on 10.2 (but without +- Tcl built on Mac OS X 10.3 or higher will not run on 10.2 due to missing +symbols in libSystem, however Tcl built on 10.2 will run on 10.3 (but without prebinding and other optimizations). - Tcl extensions will be found in any of: @@ -51,7 +51,7 @@ in the Resources/Scripts directory of the framework. - The Tcl framework contains documentation in html format in the standard location for frameworks: - Tcl.framework/Resources/English.lproj/Documentation/Reference/Tcl + Tcl.framework/Resources/Documentation/Reference/Tcl No manpages are installed by default. - the framework Tcl.framework can be placed in any of the system's standard @@ -68,13 +68,13 @@ not supported. 3. Building Tcl.framework ------------------------- -- Mac OS X 10.1.5 (or higher) is required to build Tcl on MacOSX. +- Mac OS X 10.2 (or higher) is required to build Tcl on MacOSX. -- Apple's Developer Tools CD needs to be installed (the version matching your OS -release, but no earlier than April 2002). This CD should have come with Mac OS X -retail or should be present as a disk image on new macs that came with OSX -preinstalled. It can also be downloaded from http://connect.apple.com (after you -register for free ADC membership). +- Apple's Developer Tools CD needs to be installed (the most recent version +matching your OS release, but no earlier than December 2002). This CD should +have come with Mac OS X retail or should be present as a disk image on new macs +that came with OSX preinstalled. It can also be downloaded from +http://connect.apple.com (after you register for free ADC membership). - Tcl is built as a Mac OS X framework via the Makefile in tcl/macosx, but can also be built from Apple's ProjectBuilder IDE using the Tcl.pbproj project (which -- cgit v0.12 From d2b645df1ab7b43093f7553808c64fedaa3b3a49 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sun, 10 Apr 2005 23:54:55 +0000 Subject: Import of tommath 0.35 --- libtommath/bn.pdf | Bin 335112 -> 337204 bytes libtommath/bn.tex | 29 +- libtommath/bn_fast_mp_invmod.c | 5 +- libtommath/bn_fast_mp_montgomery_reduce.c | 3 +- libtommath/bn_fast_s_mp_mul_digs.c | 11 +- libtommath/bn_fast_s_mp_mul_high_digs.c | 5 +- libtommath/bn_fast_s_mp_sqr.c | 33 +- libtommath/bn_mp_exptmod.c | 14 +- libtommath/bn_mp_exptmod_fast.c | 3 +- libtommath/bn_mp_exteuclid.c | 7 + libtommath/bn_mp_invmod_slow.c | 4 +- libtommath/bn_mp_montgomery_calc_normalization.c | 1 - libtommath/bn_mp_mul_d.c | 3 +- libtommath/bn_mp_neg.c | 10 +- libtommath/bn_mp_prime_random_ex.c | 4 +- libtommath/bn_mp_radix_size.c | 19 +- libtommath/bn_mp_rand.c | 4 +- libtommath/bn_mp_read_radix.c | 2 +- libtommath/bn_mp_reduce.c | 7 +- libtommath/bn_mp_reduce_2k.c | 3 +- libtommath/bn_mp_reduce_2k_setup.c | 3 +- libtommath/bn_mp_reduce_is_2k.c | 8 +- libtommath/bn_mp_to_signed_bin.c | 3 +- libtommath/bn_mp_to_unsigned_bin.c | 3 +- libtommath/bn_mp_toom_mul.c | 7 +- libtommath/bn_mp_unsigned_bin_size.c | 3 +- libtommath/bn_mp_xor.c | 2 +- libtommath/bn_mp_zero.c | 12 +- libtommath/bn_s_mp_exptmod.c | 35 +- libtommath/bn_s_mp_mul_digs.c | 3 +- libtommath/bn_s_mp_sqr.c | 3 +- libtommath/bncore.c | 5 +- libtommath/callgraph.txt | 5504 ++++++++++++++-------- libtommath/changes.txt | 23 + libtommath/demo/demo.c | 975 ++-- libtommath/demo/timing.c | 398 +- libtommath/dep.pl | 2 + libtommath/etc/timer.asm | 72 +- libtommath/etc/tune.c | 35 +- libtommath/logs/README | 24 +- libtommath/logs/add.log | 14 +- libtommath/logs/addsub.png | Bin 6254 -> 6253 bytes libtommath/logs/expt.log | 14 +- libtommath/logs/expt.png | Bin 6605 -> 6604 bytes libtommath/logs/expt_2k.log | 11 +- libtommath/logs/expt_dr.log | 14 +- libtommath/logs/invmod.png | Bin 4918 -> 4917 bytes libtommath/logs/mult.log | 227 +- libtommath/logs/mult.png | Bin 6770 -> 6769 bytes libtommath/logs/mult_kara.log | 117 +- libtommath/logs/sqr.log | 227 +- libtommath/logs/sqr_kara.log | 117 +- libtommath/logs/sub.log | 30 +- libtommath/makefile | 6 +- libtommath/makefile.bcc | 4 +- libtommath/makefile.cygwin_dll | 4 +- libtommath/makefile.icc | 4 +- libtommath/makefile.msvc | 4 +- libtommath/makefile.shared | 7 +- libtommath/pics/expt_state.tif | Bin 87542 -> 87540 bytes libtommath/pics/primality.tif | Bin 85514 -> 85512 bytes libtommath/poster.pdf | Bin 40821 -> 40821 bytes libtommath/pre_gen/mpi.c | 437 +- libtommath/tommath.h | 15 +- libtommath/tommath.pdf | Bin 1159120 -> 1160406 bytes libtommath/tommath.src | 499 +- libtommath/tommath.tex | 2797 +++++------ libtommath/tommath_class.h | 48 +- 68 files changed, 7145 insertions(+), 4738 deletions(-) diff --git a/libtommath/bn.pdf b/libtommath/bn.pdf index 9b873e1..615ff4e 100644 Binary files a/libtommath/bn.pdf and b/libtommath/bn.pdf differ diff --git a/libtommath/bn.tex b/libtommath/bn.tex index 962d6ea..244bd6f 100644 --- a/libtommath/bn.tex +++ b/libtommath/bn.tex @@ -49,7 +49,7 @@ \begin{document} \frontmatter \pagestyle{empty} -\title{LibTomMath User Manual \\ v0.33} +\title{LibTomMath User Manual \\ v0.35} \author{Tom St Denis \\ tomstdenis@iahu.ca} \maketitle This text, the library and the accompanying textbook are all hereby placed in the public domain. This book has been @@ -263,12 +263,12 @@ are the pros and cons of LibTomMath by comparing it to the math routines from Gn \begin{center} \begin{tabular}{|l|c|c|l|} \hline \textbf{Criteria} & \textbf{Pro} & \textbf{Con} & \textbf{Notes} \\ -\hline Few lines of code per file & X & & GnuPG $ = 300.9$, LibTomMath $ = 76.04$ \\ +\hline Few lines of code per file & X & & GnuPG $ = 300.9$, LibTomMath $ = 71.97$ \\ \hline Commented function prototypes & X && GnuPG function names are cryptic. \\ \hline Speed && X & LibTomMath is slower. \\ \hline Totally free & X & & GPL has unfavourable restrictions.\\ \hline Large function base & X & & GnuPG is barebones. \\ -\hline Four modular reduction algorithms & X & & Faster modular exponentiation. \\ +\hline Five modular reduction algorithms & X & & Faster modular exponentiation for a variety of moduli. \\ \hline Portable & X & & GnuPG requires configuration to build. \\ \hline \end{tabular} @@ -284,9 +284,12 @@ would require when working with large integers. So it may feel tempting to just rip the math code out of GnuPG (or GnuMP where it was taken from originally) in your own application but I think there are reasons not to. While LibTomMath is slower than libraries such as GnuMP it is not normally significantly slower. On x86 machines the difference is normally a factor of two when performing modular -exponentiations. +exponentiations. It depends largely on the processor, compiler and the moduli being used. -Essentially the only time you wouldn't use LibTomMath is when blazing speed is the primary concern. +Essentially the only time you wouldn't use LibTomMath is when blazing speed is the primary concern. However, +on the other side of the coin LibTomMath offers you a totally free (public domain) well structured math library +that is very flexible, complete and performs well in resource contrained environments. Fast RSA for example can +be performed with as little as 8KB of ram for data (again depending on build options). \chapter{Getting Started with LibTomMath} \section{Building Programs} @@ -809,7 +812,7 @@ mp\_int variables based on their digits only. \index{mp\_cmp\_mag} \begin{alltt} -int mp_cmp(mp_int * a, mp_int * b); +int mp_cmp_mag(mp_int * a, mp_int * b); \end{alltt} This will compare $a$ to $b$ placing $a$ to the left of $b$. This function cannot fail and will return one of the three compare codes listed in figure \ref{fig:CMP}. @@ -1220,12 +1223,13 @@ int mp_sqr (mp_int * a, mp_int * b); \end{alltt} Will square $a$ and store it in $b$. Like the case of multiplication there are four different squaring -algorithms all which can be called from mp\_sqr(). It is ideal to use mp\_sqr over mp\_mul when squaring terms. +algorithms all which can be called from mp\_sqr(). It is ideal to use mp\_sqr over mp\_mul when squaring terms because +of the speed difference. \section{Tuning Polynomial Basis Routines} Both of the Toom-Cook and Karatsuba multiplication algorithms are faster than the traditional $O(n^2)$ approach that -the Comba and baseline algorithms use. At $O(n^{1.464973})$ and $O(n^{1.584962})$ running times respectfully they require +the Comba and baseline algorithms use. At $O(n^{1.464973})$ and $O(n^{1.584962})$ running times respectively they require considerably less work. For example, a 10000-digit multiplication would take roughly 724,000 single precision multiplications with Toom-Cook or 100,000,000 single precision multiplications with the standard Comba (a factor of 138). @@ -1297,14 +1301,14 @@ of $b$. This algorithm accepts an input $a$ of any range and is not limited by \section{Barrett Reduction} Barrett reduction is a generic optimized reduction algorithm that requires pre--computation to achieve -a decent speedup over straight division. First a $mu$ value must be precomputed with the following function. +a decent speedup over straight division. First a $\mu$ value must be precomputed with the following function. \index{mp\_reduce\_setup} \begin{alltt} int mp_reduce_setup(mp_int *a, mp_int *b); \end{alltt} -Given a modulus in $b$ this produces the required $mu$ value in $a$. For any given modulus this only has to +Given a modulus in $b$ this produces the required $\mu$ value in $a$. For any given modulus this only has to be computed once. Modular reduction can now be performed with the following. \index{mp\_reduce} @@ -1312,7 +1316,7 @@ be computed once. Modular reduction can now be performed with the following. int mp_reduce(mp_int *a, mp_int *b, mp_int *c); \end{alltt} -This will reduce $a$ in place modulo $b$ with the precomputed $mu$ value in $c$. $a$ must be in the range +This will reduce $a$ in place modulo $b$ with the precomputed $\mu$ value in $c$. $a$ must be in the range $0 \le a < b^2$. \begin{alltt} @@ -1578,7 +1582,8 @@ will return $-2$. This algorithm uses the ``Newton Approximation'' method and will converge on the correct root fairly quickly. Since the algorithm requires raising $a$ to the power of $b$ it is not ideal to attempt to find roots for large values of $b$. If particularly large roots are required then a factor method could be used instead. For example, -$a^{1/16}$ is equivalent to $\left (a^{1/4} \right)^{1/4}$. +$a^{1/16}$ is equivalent to $\left (a^{1/4} \right)^{1/4}$ or simply +$\left ( \left ( \left ( a^{1/2} \right )^{1/2} \right )^{1/2} \right )^{1/2}$ \chapter{Prime Numbers} \section{Trial Division} diff --git a/libtommath/bn_fast_mp_invmod.c b/libtommath/bn_fast_mp_invmod.c index b5b9f10..acc8364 100644 --- a/libtommath/bn_fast_mp_invmod.c +++ b/libtommath/bn_fast_mp_invmod.c @@ -21,8 +21,7 @@ * Based on slow invmod except this is optimized for the case where b is * odd as per HAC Note 14.64 on pp. 610 */ -int -fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) +int fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) { mp_int x, y, u, v, B, D; int res, neg; @@ -43,7 +42,7 @@ fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) } /* we need y = |a| */ - if ((res = mp_abs (a, &y)) != MP_OKAY) { + if ((res = mp_mod (a, b, &y)) != MP_OKAY) { goto LBL_ERR; } diff --git a/libtommath/bn_fast_mp_montgomery_reduce.c b/libtommath/bn_fast_mp_montgomery_reduce.c index 7373ae6..14f307f 100644 --- a/libtommath/bn_fast_mp_montgomery_reduce.c +++ b/libtommath/bn_fast_mp_montgomery_reduce.c @@ -23,8 +23,7 @@ * * Based on Algorithm 14.32 on pp.601 of HAC. */ -int -fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) { int ix, res, olduse; mp_word W[MP_WARRAY]; diff --git a/libtommath/bn_fast_s_mp_mul_digs.c b/libtommath/bn_fast_s_mp_mul_digs.c index e1ff5f3..df3da26 100644 --- a/libtommath/bn_fast_s_mp_mul_digs.c +++ b/libtommath/bn_fast_s_mp_mul_digs.c @@ -31,8 +31,7 @@ * Based on Algorithm 14.12 on pp.595 of HAC. * */ -int -fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) { int olduse, res, pa, ix, iz; mp_digit W[MP_WARRAY]; @@ -63,7 +62,7 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) tmpx = a->dp + tx; tmpy = b->dp + ty; - /* this is the number of times the loop will iterrate, essentially its + /* this is the number of times the loop will iterrate, essentially while (tx++ < a->used && ty-- >= 0) { ... } */ iy = MIN(a->used-tx, ty+1); @@ -81,16 +80,16 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } /* store final carry */ - W[ix] = _W; + W[ix] = (mp_digit)(_W & MP_MASK); /* setup dest */ olduse = c->used; - c->used = digs; + c->used = pa; { register mp_digit *tmpc; tmpc = c->dp; - for (ix = 0; ix < digs; ix++) { + for (ix = 0; ix < pa+1; ix++) { /* now extract the previous digit [below the carry] */ *tmpc++ = W[ix]; } diff --git a/libtommath/bn_fast_s_mp_mul_high_digs.c b/libtommath/bn_fast_s_mp_mul_high_digs.c index 064a9dd..ee657f9 100644 --- a/libtommath/bn_fast_s_mp_mul_high_digs.c +++ b/libtommath/bn_fast_s_mp_mul_high_digs.c @@ -24,8 +24,7 @@ * * Based on Algorithm 14.12 on pp.595 of HAC. */ -int -fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) { int olduse, res, pa, ix, iz; mp_digit W[MP_WARRAY]; @@ -72,7 +71,7 @@ fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } /* store final carry */ - W[ix] = _W; + W[ix] = (mp_digit)(_W & MP_MASK); /* setup dest */ olduse = c->used; diff --git a/libtommath/bn_fast_s_mp_sqr.c b/libtommath/bn_fast_s_mp_sqr.c index d6014ab..66a2942 100644 --- a/libtommath/bn_fast_s_mp_sqr.c +++ b/libtommath/bn_fast_s_mp_sqr.c @@ -15,33 +15,14 @@ * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org */ -/* fast squaring - * - * This is the comba method where the columns of the product - * are computed first then the carries are computed. This - * has the effect of making a very simple inner loop that - * is executed the most - * - * W2 represents the outer products and W the inner. - * - * A further optimizations is made because the inner - * products are of the form "A * B * 2". The *2 part does - * not need to be computed until the end which is good - * because 64-bit shifts are slow! - * - * Based on Algorithm 14.16 on pp.597 of HAC. - * - */ /* the jist of squaring... - -you do like mult except the offset of the tmpx [one that starts closer to zero] -can't equal the offset of tmpy. So basically you set up iy like before then you min it with -(ty-tx) so that it never happens. You double all those you add in the inner loop + * you do like mult except the offset of the tmpx [one that + * starts closer to zero] can't equal the offset of tmpy. + * So basically you set up iy like before then you min it with + * (ty-tx) so that it never happens. You double all those + * you add in the inner loop After that loop you do the squares and add them in. - -Remove W2 and don't memset W - */ int fast_s_mp_sqr (mp_int * a, mp_int * b) @@ -76,7 +57,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) tmpx = a->dp + tx; tmpy = a->dp + ty; - /* this is the number of times the loop will iterrate, essentially its + /* this is the number of times the loop will iterrate, essentially while (tx++ < a->used && ty-- >= 0) { ... } */ iy = MIN(a->used-tx, ty+1); @@ -101,7 +82,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) } /* store it */ - W[ix] = _W; + W[ix] = (mp_digit)(_W & MP_MASK); /* make next carry */ W1 = _W >> ((mp_word)DIGIT_BIT); diff --git a/libtommath/bn_mp_exptmod.c b/libtommath/bn_mp_exptmod.c index 7309170..7c4e2f8 100644 --- a/libtommath/bn_mp_exptmod.c +++ b/libtommath/bn_mp_exptmod.c @@ -65,21 +65,29 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif } +/* modified diminished radix reduction */ +#if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) + if (mp_reduce_is_2k_l(P) == MP_YES) { + return s_mp_exptmod(G, X, P, Y, 1); + } +#endif + #ifdef BN_MP_DR_IS_MODULUS_C /* is it a DR modulus? */ dr = mp_dr_is_modulus(P); #else + /* default to no */ dr = 0; #endif #ifdef BN_MP_REDUCE_IS_2K_C - /* if not, is it a uDR modulus? */ + /* if not, is it a unrestricted DR modulus? */ if (dr == 0) { dr = mp_reduce_is_2k(P) << 1; } #endif - /* if the modulus is odd or dr != 0 use the fast method */ + /* if the modulus is odd or dr != 0 use the montgomery method */ #ifdef BN_MP_EXPTMOD_FAST_C if (mp_isodd (P) == 1 || dr != 0) { return mp_exptmod_fast (G, X, P, Y, dr); @@ -87,7 +95,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif #ifdef BN_S_MP_EXPTMOD_C /* otherwise use the generic Barrett reduction technique */ - return s_mp_exptmod (G, X, P, Y); + return s_mp_exptmod (G, X, P, Y, 0); #else /* no exptmod for evens */ return MP_VAL; diff --git a/libtommath/bn_mp_exptmod_fast.c b/libtommath/bn_mp_exptmod_fast.c index 255e9d9..82be9ac 100644 --- a/libtommath/bn_mp_exptmod_fast.c +++ b/libtommath/bn_mp_exptmod_fast.c @@ -29,8 +29,7 @@ #define TAB_SIZE 256 #endif -int -mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) +int mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) { mp_int M[TAB_SIZE], res; mp_digit buf, mp; diff --git a/libtommath/bn_mp_exteuclid.c b/libtommath/bn_mp_exteuclid.c index 545450b..c4ebab4 100644 --- a/libtommath/bn_mp_exteuclid.c +++ b/libtommath/bn_mp_exteuclid.c @@ -59,6 +59,13 @@ int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3) if ((err = mp_copy(&t3, &v3)) != MP_OKAY) { goto _ERR; } } + /* make sure U3 >= 0 */ + if (u3.sign == MP_NEG) { + mp_neg(&u1, &u1); + mp_neg(&u2, &u2); + mp_neg(&u3, &u3); + } + /* copy result out */ if (U1 != NULL) { mp_exch(U1, &u1); } if (U2 != NULL) { mp_exch(U2, &u2); } diff --git a/libtommath/bn_mp_invmod_slow.c b/libtommath/bn_mp_invmod_slow.c index c1884c0..c048655 100644 --- a/libtommath/bn_mp_invmod_slow.c +++ b/libtommath/bn_mp_invmod_slow.c @@ -33,8 +33,8 @@ int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c) } /* x = a, y = b */ - if ((res = mp_copy (a, &x)) != MP_OKAY) { - goto LBL_ERR; + if ((res = mp_mod(a, b, &x)) != MP_OKAY) { + goto LBL_ERR; } if ((res = mp_copy (b, &y)) != MP_OKAY) { goto LBL_ERR; diff --git a/libtommath/bn_mp_montgomery_calc_normalization.c b/libtommath/bn_mp_montgomery_calc_normalization.c index 0a760cf..e2efc34 100644 --- a/libtommath/bn_mp_montgomery_calc_normalization.c +++ b/libtommath/bn_mp_montgomery_calc_normalization.c @@ -28,7 +28,6 @@ int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) /* how many bits of last digit does b use */ bits = mp_count_bits (b) % DIGIT_BIT; - if (b->used > 1) { if ((res = mp_2expt (a, (b->used - 1) * DIGIT_BIT + bits - 1)) != MP_OKAY) { return res; diff --git a/libtommath/bn_mp_mul_d.c b/libtommath/bn_mp_mul_d.c index f936361..9e11eef 100644 --- a/libtommath/bn_mp_mul_d.c +++ b/libtommath/bn_mp_mul_d.c @@ -57,8 +57,9 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); } - /* store final carry [if any] */ + /* store final carry [if any] and increment ix offset */ *tmpc++ = u; + ++ix; /* now zero digits above the top */ while (ix++ < olduse) { diff --git a/libtommath/bn_mp_neg.c b/libtommath/bn_mp_neg.c index 3a991db..159cd74 100644 --- a/libtommath/bn_mp_neg.c +++ b/libtommath/bn_mp_neg.c @@ -19,12 +19,18 @@ int mp_neg (mp_int * a, mp_int * b) { int res; - if ((res = mp_copy (a, b)) != MP_OKAY) { - return res; + if (a != b) { + if ((res = mp_copy (a, b)) != MP_OKAY) { + return res; + } } + if (mp_iszero(b) != MP_YES) { b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; + } else { + b->sign = MP_ZPOS; } + return MP_OKAY; } #endif diff --git a/libtommath/bn_mp_prime_random_ex.c b/libtommath/bn_mp_prime_random_ex.c index 2010ebe..78c0583 100644 --- a/libtommath/bn_mp_prime_random_ex.c +++ b/libtommath/bn_mp_prime_random_ex.c @@ -60,7 +60,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback /* calc the maskOR_msb */ maskOR_msb = 0; - maskOR_msb_offset = (size - 2) >> 3; + maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0; if (flags & LTM_PRIME_2MSB_ON) { maskOR_msb |= 1 << ((size - 2) & 7); } else if (flags & LTM_PRIME_2MSB_OFF) { @@ -68,7 +68,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback } /* get the maskOR_lsb */ - maskOR_lsb = 0; + maskOR_lsb = 1; if (flags & LTM_PRIME_BBS) { maskOR_lsb |= 3; } diff --git a/libtommath/bn_mp_radix_size.c b/libtommath/bn_mp_radix_size.c index 30b78d9..3d423ba 100644 --- a/libtommath/bn_mp_radix_size.c +++ b/libtommath/bn_mp_radix_size.c @@ -35,22 +35,29 @@ int mp_radix_size (mp_int * a, int radix, int *size) return MP_VAL; } - /* init a copy of the input */ - if ((res = mp_init_copy (&t, a)) != MP_OKAY) { - return res; + if (mp_iszero(a) == MP_YES) { + *size = 2; + return MP_OKAY; } /* digs is the digit count */ digs = 0; /* if it's negative add one for the sign */ - if (t.sign == MP_NEG) { + if (a->sign == MP_NEG) { ++digs; - t.sign = MP_ZPOS; } + /* init a copy of the input */ + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + /* force temp to positive */ + t.sign = MP_ZPOS; + /* fetch out all of the digits */ - while (mp_iszero (&t) == 0) { + while (mp_iszero (&t) == MP_NO) { if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { mp_clear (&t); return res; diff --git a/libtommath/bn_mp_rand.c b/libtommath/bn_mp_rand.c index 1cc47f1..0dc7019 100644 --- a/libtommath/bn_mp_rand.c +++ b/libtommath/bn_mp_rand.c @@ -29,14 +29,14 @@ mp_rand (mp_int * a, int digits) /* first place a random non-zero digit */ do { - d = ((mp_digit) abs (rand ())); + d = ((mp_digit) abs (rand ())) & MP_MASK; } while (d == 0); if ((res = mp_add_d (a, d, a)) != MP_OKAY) { return res; } - while (digits-- > 0) { + while (--digits > 0) { if ((res = mp_lshd (a, 1)) != MP_OKAY) { return res; } diff --git a/libtommath/bn_mp_read_radix.c b/libtommath/bn_mp_read_radix.c index 704bd0f..1ec3937 100644 --- a/libtommath/bn_mp_read_radix.c +++ b/libtommath/bn_mp_read_radix.c @@ -16,7 +16,7 @@ */ /* read a string [ASCII] in a given radix */ -int mp_read_radix (mp_int * a, char *str, int radix) +int mp_read_radix (mp_int * a, const char *str, int radix) { int y, res, neg; char ch; diff --git a/libtommath/bn_mp_reduce.c b/libtommath/bn_mp_reduce.c index cfcb55a..d746445 100644 --- a/libtommath/bn_mp_reduce.c +++ b/libtommath/bn_mp_reduce.c @@ -19,8 +19,7 @@ * precomputed via mp_reduce_setup. * From HAC pp.604 Algorithm 14.42 */ -int -mp_reduce (mp_int * x, mp_int * m, mp_int * mu) +int mp_reduce (mp_int * x, mp_int * m, mp_int * mu) { mp_int q; int res, um = m->used; @@ -40,11 +39,11 @@ mp_reduce (mp_int * x, mp_int * m, mp_int * mu) } } else { #ifdef BN_S_MP_MUL_HIGH_DIGS_C - if ((res = s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) { + if ((res = s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) { goto CLEANUP; } #elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) - if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) { + if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) { goto CLEANUP; } #else diff --git a/libtommath/bn_mp_reduce_2k.c b/libtommath/bn_mp_reduce_2k.c index a5a9c74..28c3a00 100644 --- a/libtommath/bn_mp_reduce_2k.c +++ b/libtommath/bn_mp_reduce_2k.c @@ -16,8 +16,7 @@ */ /* reduces a modulo n where n is of the form 2**p - d */ -int -mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) +int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) { mp_int q; int p, res; diff --git a/libtommath/bn_mp_reduce_2k_setup.c b/libtommath/bn_mp_reduce_2k_setup.c index 5e1fb6e..585e1b7 100644 --- a/libtommath/bn_mp_reduce_2k_setup.c +++ b/libtommath/bn_mp_reduce_2k_setup.c @@ -16,8 +16,7 @@ */ /* determines the setup value */ -int -mp_reduce_2k_setup(mp_int *a, mp_digit *d) +int mp_reduce_2k_setup(mp_int *a, mp_digit *d) { int res, p; mp_int tmp; diff --git a/libtommath/bn_mp_reduce_is_2k.c b/libtommath/bn_mp_reduce_is_2k.c index fc81397..0fb8384 100644 --- a/libtommath/bn_mp_reduce_is_2k.c +++ b/libtommath/bn_mp_reduce_is_2k.c @@ -22,9 +22,9 @@ int mp_reduce_is_2k(mp_int *a) mp_digit iz; if (a->used == 0) { - return 0; + return MP_NO; } else if (a->used == 1) { - return 1; + return MP_YES; } else if (a->used > 1) { iy = mp_count_bits(a); iz = 1; @@ -33,7 +33,7 @@ int mp_reduce_is_2k(mp_int *a) /* Test every bit from the second digit up, must be 1 */ for (ix = DIGIT_BIT; ix < iy; ix++) { if ((a->dp[iw] & iz) == 0) { - return 0; + return MP_NO; } iz <<= 1; if (iz > (mp_digit)MP_MASK) { @@ -42,7 +42,7 @@ int mp_reduce_is_2k(mp_int *a) } } } - return 1; + return MP_YES; } #endif diff --git a/libtommath/bn_mp_to_signed_bin.c b/libtommath/bn_mp_to_signed_bin.c index 0e40d0f..b0a597e 100644 --- a/libtommath/bn_mp_to_signed_bin.c +++ b/libtommath/bn_mp_to_signed_bin.c @@ -16,8 +16,7 @@ */ /* store in signed [big endian] format */ -int -mp_to_signed_bin (mp_int * a, unsigned char *b) +int mp_to_signed_bin (mp_int * a, unsigned char *b) { int res; diff --git a/libtommath/bn_mp_to_unsigned_bin.c b/libtommath/bn_mp_to_unsigned_bin.c index 763e346..000967e 100644 --- a/libtommath/bn_mp_to_unsigned_bin.c +++ b/libtommath/bn_mp_to_unsigned_bin.c @@ -16,8 +16,7 @@ */ /* store in unsigned [big endian] format */ -int -mp_to_unsigned_bin (mp_int * a, unsigned char *b) +int mp_to_unsigned_bin (mp_int * a, unsigned char *b) { int x, res; mp_int t; diff --git a/libtommath/bn_mp_toom_mul.c b/libtommath/bn_mp_toom_mul.c index 2d66779..125331b 100644 --- a/libtommath/bn_mp_toom_mul.c +++ b/libtommath/bn_mp_toom_mul.c @@ -17,9 +17,10 @@ /* multiplication using the Toom-Cook 3-way algorithm * - * Much more complicated than Karatsuba but has a lower asymptotic running time of - * O(N**1.464). This algorithm is only particularly useful on VERY large - * inputs (we're talking 1000s of digits here...). + * Much more complicated than Karatsuba but has a lower + * asymptotic running time of O(N**1.464). This algorithm is + * only particularly useful on VERY large inputs + * (we're talking 1000s of digits here...). */ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) { diff --git a/libtommath/bn_mp_unsigned_bin_size.c b/libtommath/bn_mp_unsigned_bin_size.c index 80da415..091f406 100644 --- a/libtommath/bn_mp_unsigned_bin_size.c +++ b/libtommath/bn_mp_unsigned_bin_size.c @@ -16,8 +16,7 @@ */ /* get the size for an unsigned equivalent */ -int -mp_unsigned_bin_size (mp_int * a) +int mp_unsigned_bin_size (mp_int * a) { int size = mp_count_bits (a); return (size / 8 + ((size & 7) != 0 ? 1 : 0)); diff --git a/libtommath/bn_mp_xor.c b/libtommath/bn_mp_xor.c index 192aacc..de7e62c 100644 --- a/libtommath/bn_mp_xor.c +++ b/libtommath/bn_mp_xor.c @@ -37,7 +37,7 @@ mp_xor (mp_int * a, mp_int * b, mp_int * c) } for (ix = 0; ix < px; ix++) { - + t.dp[ix] ^= x->dp[ix]; } mp_clamp (&t); mp_exch (c, &t); diff --git a/libtommath/bn_mp_zero.c b/libtommath/bn_mp_zero.c index 0097598..c8d8907 100644 --- a/libtommath/bn_mp_zero.c +++ b/libtommath/bn_mp_zero.c @@ -16,11 +16,17 @@ */ /* set to zero */ -void -mp_zero (mp_int * a) +void mp_zero (mp_int * a) { + int n; + mp_digit *tmp; + a->sign = MP_ZPOS; a->used = 0; - memset (a->dp, 0, sizeof (mp_digit) * a->alloc); + + tmp = a->dp; + for (n = 0; n < a->alloc; n++) { + *tmp++ = 0; + } } #endif diff --git a/libtommath/bn_s_mp_exptmod.c b/libtommath/bn_s_mp_exptmod.c index 01a766f..597e877 100644 --- a/libtommath/bn_s_mp_exptmod.c +++ b/libtommath/bn_s_mp_exptmod.c @@ -21,11 +21,12 @@ #define TAB_SIZE 256 #endif -int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) { mp_int M[TAB_SIZE], res, mu; mp_digit buf; int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + int (*redux)(mp_int*,mp_int*,mp_int*); /* find window size */ x = mp_count_bits (X); @@ -72,9 +73,18 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_init (&mu)) != MP_OKAY) { goto LBL_M; } - if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { - goto LBL_MU; - } + + if (redmode == 0) { + if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce; + } else { + if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce_2k_l; + } /* create M table * @@ -96,11 +106,14 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) } for (x = 0; x < (winsize - 1); x++) { + /* square it */ if ((err = mp_sqr (&M[1 << (winsize - 1)], &M[1 << (winsize - 1)])) != MP_OKAY) { goto LBL_MU; } - if ((err = mp_reduce (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { + + /* reduce modulo P */ + if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { goto LBL_MU; } } @@ -112,7 +125,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) { goto LBL_MU; } - if ((err = mp_reduce (&M[x], P, &mu)) != MP_OKAY) { + if ((err = redux (&M[x], P, &mu)) != MP_OKAY) { goto LBL_MU; } } @@ -161,7 +174,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } continue; @@ -178,7 +191,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } } @@ -187,7 +200,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } @@ -205,7 +218,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } @@ -215,7 +228,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } } diff --git a/libtommath/bn_s_mp_mul_digs.c b/libtommath/bn_s_mp_mul_digs.c index d9f0a56..b40ae2e 100644 --- a/libtommath/bn_s_mp_mul_digs.c +++ b/libtommath/bn_s_mp_mul_digs.c @@ -19,8 +19,7 @@ * HAC pp. 595, Algorithm 14.12 Modified so you can control how * many digits of output are created. */ -int -s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) { mp_int t; int res, pa, pb, ix, iy; diff --git a/libtommath/bn_s_mp_sqr.c b/libtommath/bn_s_mp_sqr.c index 4d12804..9cdb563 100644 --- a/libtommath/bn_s_mp_sqr.c +++ b/libtommath/bn_s_mp_sqr.c @@ -16,8 +16,7 @@ */ /* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ -int -s_mp_sqr (mp_int * a, mp_int * b) +int s_mp_sqr (mp_int * a, mp_int * b) { mp_int t; int res, ix, iy, pa; diff --git a/libtommath/bncore.c b/libtommath/bncore.c index cf8a15a..82e3132 100644 --- a/libtommath/bncore.c +++ b/libtommath/bncore.c @@ -20,11 +20,12 @@ CPU /Compiler /MUL CUTOFF/SQR CUTOFF ------------------------------------------------------------- Intel P4 Northwood /GCC v3.4.1 / 88/ 128/LTM 0.32 ;-) + AMD Athlon64 /GCC v3.4.4 / 74/ 124/LTM 0.34 */ -int KARATSUBA_MUL_CUTOFF = 88, /* Min. number of digits before Karatsuba multiplication is used. */ - KARATSUBA_SQR_CUTOFF = 128, /* Min. number of digits before Karatsuba squaring is used. */ +int KARATSUBA_MUL_CUTOFF = 74, /* Min. number of digits before Karatsuba multiplication is used. */ + KARATSUBA_SQR_CUTOFF = 124, /* Min. number of digits before Karatsuba squaring is used. */ TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ TOOM_SQR_CUTOFF = 400; diff --git a/libtommath/callgraph.txt b/libtommath/callgraph.txt index 4dc4cba..2efcf24 100644 --- a/libtommath/callgraph.txt +++ b/libtommath/callgraph.txt @@ -907,7 +907,64 @@ BN_MP_EXPTMOD_C | | | +--->BN_MP_CLEAR_C | | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C -| | +--->BN_MP_ABS_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C | | +--->BN_MP_SET_C | | | +--->BN_MP_ZERO_C | | +--->BN_MP_DIV_2_C @@ -938,6 +995,66 @@ BN_MP_EXPTMOD_C | +--->BN_MP_INVMOD_SLOW_C | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C | | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C | | +--->BN_MP_SET_C @@ -973,93 +1090,63 @@ BN_MP_EXPTMOD_C | +--->BN_MP_COPY_C | | +--->BN_MP_GROW_C +--->BN_MP_CLEAR_MULTI_C -+--->BN_MP_DR_IS_MODULUS_C -+--->BN_MP_REDUCE_IS_2K_C -| +--->BN_MP_REDUCE_2K_C -| | +--->BN_MP_COUNT_BITS_C -| | +--->BN_MP_DIV_2D_C -| | | +--->BN_MP_COPY_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | +--->BN_MP_MUL_D_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_ADD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_COUNT_BITS_C -+--->BN_MP_EXPTMOD_FAST_C ++--->BN_MP_REDUCE_IS_2K_L_C ++--->BN_S_MP_EXPTMOD_C | +--->BN_MP_COUNT_BITS_C -| +--->BN_MP_MONTGOMERY_SETUP_C -| +--->BN_FAST_MP_MONTGOMERY_REDUCE_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_RSHD_C -| | | +--->BN_MP_ZERO_C -| | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| +--->BN_MP_MONTGOMERY_REDUCE_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -| | +--->BN_MP_RSHD_C -| | | +--->BN_MP_ZERO_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| +--->BN_MP_DR_SETUP_C -| +--->BN_MP_DR_REDUCE_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| +--->BN_MP_REDUCE_2K_SETUP_C +| +--->BN_MP_REDUCE_SETUP_C | | +--->BN_MP_2EXPT_C | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_GROW_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_REDUCE_2K_C -| | +--->BN_MP_DIV_2D_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C -| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_MUL_D_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_ADD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_CLAMP_C -| +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C -| | +--->BN_MP_2EXPT_C -| | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_GROW_C -| | +--->BN_MP_SET_C +| +--->BN_MP_REDUCE_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C | | | +--->BN_MP_ZERO_C -| | +--->BN_MP_MUL_2_C -| | | +--->BN_MP_GROW_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_MULMOD_C | | +--->BN_MP_MUL_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C @@ -1070,8 +1157,6 @@ BN_MP_EXPTMOD_C | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_MUL_2_C | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_ADD_C @@ -1123,8 +1208,6 @@ BN_MP_EXPTMOD_C | | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_LSHD_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C @@ -1132,62 +1215,150 @@ BN_MP_EXPTMOD_C | | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_MOD_C -| | | +--->BN_MP_DIV_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_MP_COPY_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_SET_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_RSHD_C +| | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_D_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_2K_SETUP_L_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_2K_L_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_SUB_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C | | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C | | | | | +--->BN_S_MP_SUB_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_SUB_C | | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C | | | | | +--->BN_S_MP_SUB_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2D_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_INIT_COPY_C -| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_MUL_2D_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_MUL_D_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| +--->BN_MP_SET_C -| | +--->BN_MP_ZERO_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C | +--->BN_MP_MOD_C | | +--->BN_MP_DIV_C | | | +--->BN_MP_CMP_MAG_C @@ -1195,6 +1366,7 @@ BN_MP_EXPTMOD_C | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C | | | +--->BN_MP_MUL_2D_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_LSHD_C @@ -1379,73 +1551,239 @@ BN_MP_EXPTMOD_C | | | +--->BN_MP_INIT_SIZE_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_EXCH_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C | +--->BN_MP_EXCH_C -+--->BN_S_MP_EXPTMOD_C -| +--->BN_MP_COUNT_BITS_C -| +--->BN_MP_REDUCE_SETUP_C -| | +--->BN_MP_2EXPT_C -| | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_GROW_C -| | +--->BN_MP_DIV_C -| | | +--->BN_MP_CMP_MAG_C ++--->BN_MP_DR_IS_MODULUS_C ++--->BN_MP_REDUCE_IS_2K_C +| +--->BN_MP_REDUCE_2K_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_DIV_2D_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_SET_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2D_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MOD_2D_C | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_INIT_COPY_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C | | | +--->BN_MP_RSHD_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_CLAMP_C -| +--->BN_MP_MOD_C -| | +--->BN_MP_DIV_C -| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_COUNT_BITS_C ++--->BN_MP_EXPTMOD_FAST_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_MONTGOMERY_SETUP_C +| +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| +--->BN_MP_MONTGOMERY_REDUCE_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| +--->BN_MP_DR_SETUP_C +| +--->BN_MP_DR_REDUCE_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| +--->BN_MP_REDUCE_2K_SETUP_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_2K_C +| | +--->BN_MP_DIV_2D_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_SET_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MOD_2D_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MULMOD_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_S_MP_SUB_C @@ -1554,163 +1892,49 @@ BN_MP_EXPTMOD_C | | | +--->BN_MP_INIT_SIZE_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_EXCH_C -| +--->BN_MP_REDUCE_C -| | +--->BN_MP_INIT_COPY_C -| | +--->BN_MP_RSHD_C -| | | +--->BN_MP_ZERO_C -| | +--->BN_MP_MUL_C -| | | +--->BN_MP_TOOM_MUL_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_3_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C | | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_KARATSUBA_MUL_C -| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_DIV_3_C | | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C -| | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_MP_LSHD_C | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MOD_2D_C -| | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_MUL_DIGS_C -| | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | +--->BN_MP_SUB_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_D_C -| | +--->BN_MP_SET_C -| | | +--->BN_MP_ZERO_C -| | +--->BN_MP_LSHD_C -| | | +--->BN_MP_GROW_C -| | +--->BN_MP_ADD_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_C -| | | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_MUL_C -| | +--->BN_MP_TOOM_MUL_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_2_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_3_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_KARATSUBA_MUL_C | | | +--->BN_MP_INIT_SIZE_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_SUB_C @@ -1736,8 +1960,6 @@ BN_MP_EXPTMOD_C | | | +--->BN_MP_INIT_SIZE_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_EXCH_C -| +--->BN_MP_SET_C -| | +--->BN_MP_ZERO_C | +--->BN_MP_EXCH_C @@ -1769,7 +1991,64 @@ BN_MP_PRIME_FERMAT_C | | | | +--->BN_MP_CLEAR_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_SET_C | | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_DIV_2_C @@ -1799,6 +2078,66 @@ BN_MP_PRIME_FERMAT_C | | +--->BN_MP_INVMOD_SLOW_C | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_SET_C @@ -1833,93 +2172,63 @@ BN_MP_PRIME_FERMAT_C | | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C | +--->BN_MP_CLEAR_MULTI_C -| +--->BN_MP_DR_IS_MODULUS_C -| +--->BN_MP_REDUCE_IS_2K_C -| | +--->BN_MP_REDUCE_2K_C -| | | +--->BN_MP_COUNT_BITS_C -| | | +--->BN_MP_DIV_2D_C +| +--->BN_MP_REDUCE_IS_2K_L_C +| +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_REDUCE_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C | | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_COUNT_BITS_C -| +--->BN_MP_EXPTMOD_FAST_C -| | +--->BN_MP_COUNT_BITS_C -| | +--->BN_MP_MONTGOMERY_SETUP_C -| | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | +--->BN_MP_MONTGOMERY_REDUCE_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | +--->BN_MP_DR_SETUP_C -| | +--->BN_MP_DR_REDUCE_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | +--->BN_MP_REDUCE_2K_SETUP_C -| | | +--->BN_MP_2EXPT_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_REDUCE_2K_C -| | | +--->BN_MP_DIV_2D_C +| | +--->BN_MP_REDUCE_C +| | | +--->BN_MP_INIT_COPY_C | | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C -| | | +--->BN_MP_2EXPT_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_SET_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_2_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MULMOD_C | | | +--->BN_MP_MUL_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C @@ -1930,8 +2239,6 @@ BN_MP_PRIME_FERMAT_C | | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_MUL_2_C | | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_ADD_C @@ -1983,8 +2290,6 @@ BN_MP_PRIME_FERMAT_C | | | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C @@ -1992,62 +2297,149 @@ BN_MP_PRIME_FERMAT_C | | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_MOD_C -| | | | +--->BN_MP_DIV_C -| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_L_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_SET_C -| | | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_SUB_C +| | | | | +--->BN_MP_ADD_C | | | | | | +--->BN_S_MP_ADD_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C | | | | | | +--->BN_S_MP_SUB_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_SUB_C | | | | | | +--->BN_S_MP_ADD_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C | | | | | | +--->BN_S_MP_SUB_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2D_C -| | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_INIT_COPY_C -| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_MUL_2D_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_MUL_D_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_SET_C -| | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MOD_C | | | +--->BN_MP_DIV_C | | | | +--->BN_MP_CMP_MAG_C @@ -2055,6 +2447,7 @@ BN_MP_PRIME_FERMAT_C | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C | | | | +--->BN_MP_MUL_2D_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_LSHD_C @@ -2239,57 +2632,224 @@ BN_MP_PRIME_FERMAT_C | | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C | | +--->BN_MP_EXCH_C -| +--->BN_S_MP_EXPTMOD_C -| | +--->BN_MP_COUNT_BITS_C -| | +--->BN_MP_REDUCE_SETUP_C -| | | +--->BN_MP_2EXPT_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_DIV_C -| | | | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_DR_IS_MODULUS_C +| +--->BN_MP_REDUCE_IS_2K_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_DIV_2D_C | | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_SET_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MOD_2D_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_EXPTMOD_FAST_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MONTGOMERY_SETUP_C +| | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_DR_SETUP_C +| | +--->BN_MP_DR_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_REDUCE_2K_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MULMOD_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_MUL_2D_C | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_MUL_D_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2D_C -| | | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_INIT_COPY_C -| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C | | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C | | +--->BN_MP_MOD_C | | | +--->BN_MP_DIV_C | | | | +--->BN_MP_CMP_MAG_C @@ -2297,7 +2857,6 @@ BN_MP_PRIME_FERMAT_C | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_SET_C | | | | +--->BN_MP_MUL_2D_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_LSHD_C @@ -2414,135 +2973,22 @@ BN_MP_PRIME_FERMAT_C | | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_REDUCE_C -| | | +--->BN_MP_INIT_COPY_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_C -| | | | +--->BN_MP_TOOM_MUL_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SET_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MUL_C -| | | +--->BN_MP_TOOM_MUL_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_SUB_C @@ -2595,8 +3041,6 @@ BN_MP_PRIME_FERMAT_C | | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_SET_C -| | | +--->BN_MP_ZERO_C | | +--->BN_MP_EXCH_C +--->BN_MP_CMP_C | +--->BN_MP_CMP_MAG_C @@ -2901,7 +3345,65 @@ BN_MP_INVMOD_C | | +--->BN_MP_CLEAR_C | +--->BN_MP_COPY_C | | +--->BN_MP_GROW_C -| +--->BN_MP_ABS_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C | +--->BN_MP_SET_C | | +--->BN_MP_ZERO_C | +--->BN_MP_DIV_2_C @@ -2933,6 +3435,67 @@ BN_MP_INVMOD_C | +--->BN_MP_INIT_MULTI_C | | +--->BN_MP_INIT_C | | +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C | +--->BN_MP_COPY_C | | +--->BN_MP_GROW_C | +--->BN_MP_SET_C @@ -2985,43 +3548,101 @@ BN_FAST_MP_INVMOD_C | +--->BN_MP_CLEAR_C +--->BN_MP_COPY_C | +--->BN_MP_GROW_C -+--->BN_MP_ABS_C -+--->BN_MP_SET_C -| +--->BN_MP_ZERO_C -+--->BN_MP_DIV_2_C -| +--->BN_MP_GROW_C -| +--->BN_MP_CLAMP_C -+--->BN_MP_SUB_C -| +--->BN_S_MP_ADD_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -| +--->BN_MP_CMP_MAG_C -| +--->BN_S_MP_SUB_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -+--->BN_MP_CMP_C -| +--->BN_MP_CMP_MAG_C -+--->BN_MP_CMP_D_C -+--->BN_MP_ADD_C -| +--->BN_S_MP_ADD_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -| +--->BN_MP_CMP_MAG_C -| +--->BN_S_MP_SUB_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -+--->BN_MP_EXCH_C -+--->BN_MP_CLEAR_MULTI_C -| +--->BN_MP_CLEAR_C - - -BN_MP_FWRITE_C -+--->BN_MP_RADIX_SIZE_C -| +--->BN_MP_COUNT_BITS_C -| +--->BN_MP_INIT_COPY_C -| | +--->BN_MP_COPY_C -| | | +--->BN_MP_GROW_C -| +--->BN_MP_DIV_D_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_CMP_D_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_FWRITE_C ++--->BN_MP_RADIX_SIZE_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_D_C | | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C | | +--->BN_MP_DIV_2D_C @@ -3473,7 +4094,55 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | +--->BN_MP_CLEAR_C | | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_DIV_2_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C @@ -3501,6 +4170,57 @@ BN_MP_PRIME_RANDOM_EX_C | | | | +--->BN_MP_INVMOD_SLOW_C | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_DIV_2_C @@ -3533,75 +4253,54 @@ BN_MP_PRIME_RANDOM_EX_C | | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_CLEAR_MULTI_C -| | | +--->BN_MP_DR_IS_MODULUS_C -| | | +--->BN_MP_REDUCE_IS_2K_C -| | | | +--->BN_MP_REDUCE_2K_C -| | | | | +--->BN_MP_COUNT_BITS_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_COUNT_BITS_C -| | | +--->BN_MP_EXPTMOD_FAST_C +| | | +--->BN_MP_REDUCE_IS_2K_L_C +| | | +--->BN_S_MP_EXPTMOD_C | | | | +--->BN_MP_COUNT_BITS_C -| | | | +--->BN_MP_MONTGOMERY_SETUP_C -| | | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_MONTGOMERY_REDUCE_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_DR_SETUP_C -| | | | +--->BN_MP_DR_REDUCE_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | | +--->BN_MP_REDUCE_SETUP_C | | | | | +--->BN_MP_2EXPT_C | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_REDUCE_2K_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C -| | | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MULMOD_C -| | | | | +--->BN_MP_MUL_C -| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C | | | | | | | | +--->BN_MP_ZERO_C @@ -3610,8 +4309,6 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_COPY_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | +--->BN_MP_ZERO_C | | | | | | | +--->BN_MP_MUL_2_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_ADD_C @@ -3663,8 +4360,6 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C @@ -3672,52 +4367,138 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_MOD_C -| | | | | | +--->BN_MP_DIV_C -| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_L_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_COPY_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_C -| | | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_MP_ADD_C | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_SUB_C | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_DIV_2_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_MOD_C | | | | | +--->BN_MP_DIV_C | | | | | | +--->BN_MP_CMP_MAG_C @@ -3903,53 +4684,196 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_EXCH_C -| | | +--->BN_S_MP_EXPTMOD_C +| | | +--->BN_MP_DR_IS_MODULUS_C +| | | +--->BN_MP_REDUCE_IS_2K_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_COUNT_BITS_C -| | | | +--->BN_MP_REDUCE_SETUP_C +| | | +--->BN_MP_EXPTMOD_FAST_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_DR_SETUP_C +| | | | +--->BN_MP_DR_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_C | | | | | +--->BN_MP_2EXPT_C | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_DIV_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_MP_COPY_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MOD_C -| | | | | +--->BN_MP_DIV_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_MP_COPY_C -| | | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MULMOD_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MUL_2D_C @@ -4061,116 +4985,6 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_REDUCE_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_MUL_C -| | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_SUB_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_D_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_3_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_SUB_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_MUL_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C @@ -4753,7 +5567,55 @@ BN_MP_PRIME_IS_PRIME_C | | | | | +--->BN_MP_CLEAR_C | | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_DIV_2_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C @@ -4781,6 +5643,57 @@ BN_MP_PRIME_IS_PRIME_C | | | +--->BN_MP_INVMOD_SLOW_C | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_DIV_2_C @@ -4813,73 +5726,52 @@ BN_MP_PRIME_IS_PRIME_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C | | +--->BN_MP_CLEAR_MULTI_C -| | +--->BN_MP_DR_IS_MODULUS_C -| | +--->BN_MP_REDUCE_IS_2K_C -| | | +--->BN_MP_REDUCE_2K_C -| | | | +--->BN_MP_COUNT_BITS_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_COUNT_BITS_C -| | +--->BN_MP_EXPTMOD_FAST_C +| | +--->BN_MP_REDUCE_IS_2K_L_C +| | +--->BN_S_MP_EXPTMOD_C | | | +--->BN_MP_COUNT_BITS_C -| | | +--->BN_MP_MONTGOMERY_SETUP_C -| | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_MONTGOMERY_REDUCE_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_DR_SETUP_C -| | | +--->BN_MP_DR_REDUCE_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | +--->BN_MP_REDUCE_SETUP_C | | | | +--->BN_MP_2EXPT_C | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_REDUCE_2K_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C -| | | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MULMOD_C +| | | +--->BN_MP_REDUCE_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_MUL_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C @@ -4890,8 +5782,6 @@ BN_MP_PRIME_IS_PRIME_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_COPY_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_MUL_2_C | | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_ADD_C @@ -4943,8 +5833,6 @@ BN_MP_PRIME_IS_PRIME_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C @@ -4952,60 +5840,146 @@ BN_MP_PRIME_IS_PRIME_C | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_MOD_C -| | | | | +--->BN_MP_DIV_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_MP_COPY_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_MOD_C -| | | | +--->BN_MP_DIV_C -| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_L_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_RSHD_C @@ -5183,48 +6157,191 @@ BN_MP_PRIME_IS_PRIME_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_EXCH_C -| | +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_DR_IS_MODULUS_C +| | +--->BN_MP_REDUCE_IS_2K_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_COUNT_BITS_C -| | | +--->BN_MP_REDUCE_SETUP_C +| | +--->BN_MP_EXPTMOD_FAST_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_DR_SETUP_C +| | | +--->BN_MP_DR_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_REDUCE_2K_SETUP_C | | | | +--->BN_MP_2EXPT_C | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_DIV_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_MP_COPY_C -| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | +--->BN_MP_2EXPT_C | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MULMOD_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_MUL_2D_C | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_MUL_D_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_MOD_C | | | | +--->BN_MP_DIV_C | | | | | +--->BN_MP_CMP_MAG_C @@ -5341,116 +6458,6 @@ BN_MP_PRIME_IS_PRIME_C | | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_REDUCE_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_C -| | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_3_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_MUL_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C @@ -6496,7 +7503,55 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | +--->BN_MP_CLEAR_C | | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_DIV_2_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C @@ -6524,105 +7579,135 @@ BN_MP_PRIME_NEXT_PRIME_C | | | +--->BN_MP_INVMOD_SLOW_C | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_MP_COPY_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | +--->BN_MP_CLEAR_C -| | +--->BN_MP_CLEAR_C -| | +--->BN_MP_ABS_C -| | | +--->BN_MP_COPY_C -| | | | +--->BN_MP_GROW_C -| | +--->BN_MP_CLEAR_MULTI_C -| | +--->BN_MP_DR_IS_MODULUS_C -| | +--->BN_MP_REDUCE_IS_2K_C -| | | +--->BN_MP_REDUCE_2K_C -| | | | +--->BN_MP_COUNT_BITS_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_DIV_2_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_COUNT_BITS_C -| | +--->BN_MP_EXPTMOD_FAST_C -| | | +--->BN_MP_COUNT_BITS_C -| | | +--->BN_MP_MONTGOMERY_SETUP_C -| | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_MONTGOMERY_REDUCE_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C | | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_DR_SETUP_C -| | | +--->BN_MP_DR_REDUCE_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ABS_C +| | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_REDUCE_2K_SETUP_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_REDUCE_IS_2K_L_C +| | +--->BN_S_MP_EXPTMOD_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_REDUCE_SETUP_C | | | | +--->BN_MP_2EXPT_C | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_REDUCE_2K_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C -| | | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MULMOD_C +| | | +--->BN_MP_REDUCE_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_MUL_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C @@ -6633,8 +7718,6 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_COPY_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_MUL_2_C | | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_ADD_C @@ -6686,8 +7769,6 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C @@ -6695,52 +7776,138 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_MOD_C -| | | | | +--->BN_MP_DIV_C -| | | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_L_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_COPY_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_MP_ADD_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_SUB_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_DIV_2_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_MUL_2D_C | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_MUL_D_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_MOD_C | | | | +--->BN_MP_DIV_C | | | | | +--->BN_MP_CMP_MAG_C @@ -6926,48 +8093,191 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_EXCH_C -| | +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_DR_IS_MODULUS_C +| | +--->BN_MP_REDUCE_IS_2K_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_COUNT_BITS_C -| | | +--->BN_MP_REDUCE_SETUP_C +| | +--->BN_MP_EXPTMOD_FAST_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_DR_SETUP_C +| | | +--->BN_MP_DR_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_REDUCE_2K_SETUP_C | | | | +--->BN_MP_2EXPT_C | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_DIV_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_MP_COPY_C -| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | +--->BN_MP_2EXPT_C | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MULMOD_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_ADD_C | | | | | | +--->BN_S_MP_ADD_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C | | | | | | +--->BN_S_MP_SUB_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_MOD_C | | | | +--->BN_MP_DIV_C | | | | | +--->BN_MP_CMP_MAG_C @@ -7030,170 +8340,60 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | +--->BN_S_MP_ADD_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_FAST_S_MP_SQR_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SQR_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_REDUCE_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_C -| | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_3_C -| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C | | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_DIV_3_C | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_KARATSUBA_SQR_C | | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_SQR_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_MUL_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C @@ -7406,6 +8606,67 @@ BN_MP_INVMOD_SLOW_C +--->BN_MP_INIT_MULTI_C | +--->BN_MP_INIT_C | +--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +--->BN_MP_COPY_C | +--->BN_MP_GROW_C +--->BN_MP_SET_C @@ -7484,49 +8745,143 @@ BN_MP_LCM_C | +--->BN_MP_MUL_2D_C | | +--->BN_MP_GROW_C | | +--->BN_MP_LSHD_C -| | | +--->BN_MP_RSHD_C -| | +--->BN_MP_CLAMP_C -| +--->BN_MP_CMP_C -| +--->BN_MP_SUB_C -| | +--->BN_S_MP_ADD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_ADD_C -| | +--->BN_S_MP_ADD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INIT_COPY_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_DIV_2D_C -| | +--->BN_MP_INIT_C -| | +--->BN_MP_MOD_2D_C -| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C | | +--->BN_MP_CLEAR_C -| | +--->BN_MP_RSHD_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_EXCH_C -| +--->BN_MP_EXCH_C -| +--->BN_MP_CLEAR_MULTI_C | | +--->BN_MP_CLEAR_C -| +--->BN_MP_INIT_SIZE_C -| | +--->BN_MP_INIT_C -| +--->BN_MP_INIT_C -| +--->BN_MP_INIT_COPY_C -| +--->BN_MP_LSHD_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_RSHD_C -| +--->BN_MP_RSHD_C -| +--->BN_MP_MUL_D_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_REDUCE_2K_L_C ++--->BN_MP_INIT_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C | | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C | | +--->BN_MP_CLAMP_C -| +--->BN_MP_CLAMP_C | +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +--->BN_MP_MUL_C | +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C | | +--->BN_MP_MOD_2D_C | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_COPY_C @@ -7542,6 +8897,7 @@ BN_MP_LCM_C | | | +--->BN_S_MP_ADD_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C | | | +--->BN_S_MP_SUB_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C @@ -7549,6 +8905,7 @@ BN_MP_LCM_C | | | +--->BN_S_MP_ADD_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C | | | +--->BN_S_MP_SUB_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C @@ -7564,7 +8921,6 @@ BN_MP_LCM_C | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_DIV_3_C | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_INIT_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_CLEAR_C @@ -7574,16 +8930,17 @@ BN_MP_LCM_C | | | +--->BN_MP_CLEAR_C | +--->BN_MP_KARATSUBA_MUL_C | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_INIT_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_SUB_C | | | +--->BN_S_MP_ADD_C | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C | | | +--->BN_S_MP_SUB_C | | | | +--->BN_MP_GROW_C | | +--->BN_MP_ADD_C | | | +--->BN_S_MP_ADD_C | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C | | | +--->BN_S_MP_SUB_C | | | | +--->BN_MP_GROW_C | | +--->BN_MP_LSHD_C @@ -7596,12 +8953,17 @@ BN_MP_LCM_C | | +--->BN_MP_CLAMP_C | +--->BN_S_MP_MUL_DIGS_C | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_INIT_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_EXCH_C | | +--->BN_MP_CLEAR_C -+--->BN_MP_CLEAR_MULTI_C -| +--->BN_MP_CLEAR_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C BN_REVERSE_C @@ -7671,6 +9033,18 @@ BN_MP_GCD_C +--->BN_MP_CLEAR_C +BN_MP_REDUCE_2K_SETUP_L_C ++--->BN_MP_INIT_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_COUNT_BITS_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + BN_MP_READ_RADIX_C +--->BN_MP_ZERO_C +--->BN_MP_MUL_D_C @@ -7942,46 +9316,266 @@ BN_S_MP_EXPTMOD_C | | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C | | +--->BN_MP_ZERO_C -| | +--->BN_MP_INIT_MULTI_C -| | +--->BN_MP_SET_C -| | +--->BN_MP_ABS_C -| | +--->BN_MP_MUL_2D_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_RSHD_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_2K_SETUP_L_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_2K_L_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_C -| | +--->BN_MP_SUB_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_ADD_C -| | | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_MUL_2D_C | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_MUL_D_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_DIV_2D_C -| | | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | +--->BN_MP_EXCH_C -| | +--->BN_MP_CLEAR_MULTI_C -| | +--->BN_MP_INIT_SIZE_C -| | +--->BN_MP_INIT_COPY_C -| | +--->BN_MP_LSHD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_RSHD_C -| | +--->BN_MP_RSHD_C -| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C | | | +--->BN_MP_GROW_C | | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C | | +--->BN_MP_CLAMP_C +--->BN_MP_MOD_C | +--->BN_MP_DIV_C @@ -8110,121 +9704,6 @@ BN_S_MP_EXPTMOD_C | | +--->BN_MP_INIT_SIZE_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_EXCH_C -+--->BN_MP_REDUCE_C -| +--->BN_MP_INIT_COPY_C -| +--->BN_MP_RSHD_C -| | +--->BN_MP_ZERO_C -| +--->BN_MP_MUL_C -| | +--->BN_MP_TOOM_MUL_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_2_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_3_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLEAR_MULTI_C -| | +--->BN_MP_KARATSUBA_MUL_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_MUL_DIGS_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| +--->BN_S_MP_MUL_HIGH_DIGS_C -| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_INIT_SIZE_C -| | +--->BN_MP_CLAMP_C -| | +--->BN_MP_EXCH_C -| +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -| +--->BN_MP_MOD_2D_C -| | +--->BN_MP_ZERO_C -| | +--->BN_MP_CLAMP_C -| +--->BN_S_MP_MUL_DIGS_C -| | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_INIT_SIZE_C -| | +--->BN_MP_CLAMP_C -| | +--->BN_MP_EXCH_C -| +--->BN_MP_SUB_C -| | +--->BN_S_MP_ADD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_CMP_D_C -| +--->BN_MP_SET_C -| | +--->BN_MP_ZERO_C -| +--->BN_MP_LSHD_C -| | +--->BN_MP_GROW_C -| +--->BN_MP_ADD_C -| | +--->BN_S_MP_ADD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_CMP_C -| | +--->BN_MP_CMP_MAG_C -| +--->BN_S_MP_SUB_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C +--->BN_MP_MUL_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C @@ -8529,6 +10008,31 @@ BN_MP_ADD_C | +--->BN_MP_CLAMP_C +BN_MP_TO_SIGNED_BIN_N_C ++--->BN_MP_SIGNED_BIN_SIZE_C +| +--->BN_MP_UNSIGNED_BIN_SIZE_C +| | +--->BN_MP_COUNT_BITS_C ++--->BN_MP_TO_SIGNED_BIN_C +| +--->BN_MP_TO_UNSIGNED_BIN_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C + + +BN_MP_REDUCE_IS_2K_L_C + + BN_MP_RAND_C +--->BN_MP_ZERO_C +--->BN_MP_ADD_D_C @@ -8556,6 +10060,26 @@ BN_MP_RSHD_C BN_MP_SHRINK_C +BN_MP_TO_UNSIGNED_BIN_N_C ++--->BN_MP_UNSIGNED_BIN_SIZE_C +| +--->BN_MP_COUNT_BITS_C ++--->BN_MP_TO_UNSIGNED_BIN_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + BN_MP_REDUCE_C +--->BN_MP_REDUCE_SETUP_C | +--->BN_MP_2EXPT_C @@ -9062,6 +10586,7 @@ BN_MP_EXTEUCLID_C | +--->BN_S_MP_SUB_C | | +--->BN_MP_GROW_C | | +--->BN_MP_CLAMP_C ++--->BN_MP_NEG_C +--->BN_MP_EXCH_C +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_CLEAR_C @@ -9269,7 +10794,56 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | +--->BN_MP_CLEAR_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_SET_C | | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_DIV_2_C @@ -9299,6 +10873,58 @@ BN_MP_PRIME_MILLER_RABIN_C | | +--->BN_MP_INVMOD_SLOW_C | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_SET_C @@ -9333,75 +10959,176 @@ BN_MP_PRIME_MILLER_RABIN_C | | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C | +--->BN_MP_CLEAR_MULTI_C -| +--->BN_MP_DR_IS_MODULUS_C -| +--->BN_MP_REDUCE_IS_2K_C -| | +--->BN_MP_REDUCE_2K_C -| | | +--->BN_MP_COUNT_BITS_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_COUNT_BITS_C -| +--->BN_MP_EXPTMOD_FAST_C +| +--->BN_MP_REDUCE_IS_2K_L_C +| +--->BN_S_MP_EXPTMOD_C | | +--->BN_MP_COUNT_BITS_C -| | +--->BN_MP_MONTGOMERY_SETUP_C -| | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | +--->BN_MP_MONTGOMERY_REDUCE_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | +--->BN_MP_DR_SETUP_C -| | +--->BN_MP_DR_REDUCE_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | +--->BN_MP_REDUCE_2K_SETUP_C +| | +--->BN_MP_REDUCE_SETUP_C | | | +--->BN_MP_2EXPT_C | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_GROW_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_REDUCE_2K_C -| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C | | | +--->BN_S_MP_SUB_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | +--->BN_MP_REDUCE_2K_SETUP_L_C | | | +--->BN_MP_2EXPT_C | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_SET_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_2_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CMP_MAG_C | | | +--->BN_S_MP_SUB_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MULMOD_C +| | +--->BN_MP_REDUCE_2K_L_C | | | +--->BN_MP_MUL_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C @@ -9474,55 +11201,13 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_MOD_C -| | | | +--->BN_MP_DIV_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_MP_COPY_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_SET_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_SET_C -| | | +--->BN_MP_ZERO_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MOD_C | | | +--->BN_MP_DIV_C | | | | +--->BN_MP_CMP_MAG_C @@ -9530,6 +11215,7 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C | | | | +--->BN_MP_MUL_2D_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_LSHD_C @@ -9653,104 +11339,253 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_DR_IS_MODULUS_C +| +--->BN_MP_REDUCE_IS_2K_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_EXPTMOD_FAST_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MONTGOMERY_SETUP_C +| | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_DR_SETUP_C +| | +--->BN_MP_DR_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_REDUCE_2K_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MULMOD_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_MUL_D_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_3_C +| | | | +--->BN_S_MP_MUL_DIGS_C | | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_KARATSUBA_MUL_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C | | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_MUL_2D_C | | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_EXCH_C -| +--->BN_S_MP_EXPTMOD_C -| | +--->BN_MP_COUNT_BITS_C -| | +--->BN_MP_REDUCE_SETUP_C -| | | +--->BN_MP_2EXPT_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_DIV_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_MP_COPY_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_SET_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_ADD_C | | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C | | | | | +--->BN_S_MP_SUB_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C | | +--->BN_MP_MOD_C | | | +--->BN_MP_DIV_C | | | | +--->BN_MP_CMP_MAG_C @@ -9758,7 +11593,6 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_SET_C | | | | +--->BN_MP_MUL_2D_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_LSHD_C @@ -9868,118 +11702,6 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_REDUCE_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_C -| | | | +--->BN_MP_TOOM_MUL_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SET_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MUL_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C @@ -10048,8 +11770,6 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_SET_C -| | | +--->BN_MP_ZERO_C | | +--->BN_MP_EXCH_C +--->BN_MP_CMP_C | +--->BN_MP_CMP_MAG_C diff --git a/libtommath/changes.txt b/libtommath/changes.txt index 0d1ec2e..99e40c1 100644 --- a/libtommath/changes.txt +++ b/libtommath/changes.txt @@ -1,3 +1,26 @@ +March 12th, 2005 +v0.35 -- Stupid XOR function missing line again... oops. + -- Fixed bug in invmod not handling negative inputs correctly [Wolfgang Ehrhardt] + -- Made exteuclid always give positive u3 output...[ Wolfgang Ehrhardt ] + -- [Wolfgang Ehrhardt] Suggested a fix for mp_reduce() which avoided underruns. ;-) + -- mp_rand() would emit one too many digits and it was possible to get a 0 out of it ... oops + -- Added montgomery to the testing to make sure it handles 1..10 digit moduli correctly + -- Fixed bug in comba that would lead to possible erroneous outputs when "pa < digs" + -- Fixed bug in mp_toradix_size for "0" [Kevin Kenny] + -- Updated chapters 1-5 of the textbook ;-) It now talks about the new comba code! + +February 12th, 2005 +v0.34 -- Fixed two more small errors in mp_prime_random_ex() + -- Fixed overflow in mp_mul_d() [Kevin Kenny] + -- Added mp_to_(un)signed_bin_n() functions which do bounds checking for ya [and report the size] + -- Added "large" diminished radix support. Speeds up things like DSA where the moduli is of the form 2^k - P for some P < 2^(k/2) or so + Actually is faster than Montgomery on my AMD64 (and probably much faster on a P4) + -- Updated the manual a bit + -- Ok so I haven't done the textbook work yet... My current freelance gig has landed me in France till the + end of Feb/05. Once I get back I'll have tons of free time and I plan to go to town on the book. + As of this release the API will freeze. At least until the book catches up with all the changes. I welcome + bug reports but new algorithms will have to wait. + December 23rd, 2004 v0.33 -- Fixed "small" variant for mp_div() which would munge with negative dividends... -- Fixed bug in mp_prime_random_ex() which would set the most significant byte to zero when diff --git a/libtommath/demo/demo.c b/libtommath/demo/demo.c index 62615cd..0a6115a 100644 --- a/libtommath/demo/demo.c +++ b/libtommath/demo/demo.c @@ -9,15 +9,16 @@ #include "tommath.h" -void ndraw(mp_int *a, char *name) +void ndraw(mp_int * a, char *name) { char buf[16000]; + printf("%s: ", name); mp_toradix(a, buf, 10); printf("%s\n", buf); } -static void draw(mp_int *a) +static void draw(mp_int * a) { ndraw(a, ""); } @@ -39,20 +40,23 @@ int lbit(void) int myrng(unsigned char *dst, int len, void *dat) { int x; - for (x = 0; x < len; x++) dst[x] = rand() & 0xFF; + + for (x = 0; x < len; x++) + dst[x] = rand() & 0xFF; return len; } - char cmd[4096], buf[4096]; +char cmd[4096], buf[4096]; int main(void) { mp_int a, b, c, d, e, f; - unsigned long expt_n, add_n, sub_n, mul_n, div_n, sqr_n, mul2d_n, div2d_n, gcd_n, lcm_n, inv_n, - div2_n, mul2_n, add_d_n, sub_d_n, t; + unsigned long expt_n, add_n, sub_n, mul_n, div_n, sqr_n, mul2d_n, div2d_n, + gcd_n, lcm_n, inv_n, div2_n, mul2_n, add_d_n, sub_d_n, t; unsigned rr; int i, n, err, cnt, ix, old_kara_m, old_kara_s; + mp_digit mp; mp_init(&a); @@ -65,108 +69,152 @@ int main(void) srand(time(NULL)); #if 0 - // test mp_get_int - printf("Testing: mp_get_int\n"); - for(i=0;i<1000;++i) { - t = ((unsigned long)rand()*rand()+1)&0xFFFFFFFF; - mp_set_int(&a,t); - if (t!=mp_get_int(&a)) { + // test montgomery + printf("Testing montgomery...\n"); + for (i = 1; i < 10; i++) { + printf("Testing digit size: %d\n", i); + for (n = 0; n < 1000; n++) { + mp_rand(&a, i); + a.dp[0] |= 1; + + // let's see if R is right + mp_montgomery_calc_normalization(&b, &a); + mp_montgomery_setup(&a, &mp); + + // now test a random reduction + for (ix = 0; ix < 100; ix++) { + mp_rand(&c, 1 + abs(rand()) % (2*i)); + mp_copy(&c, &d); + mp_copy(&c, &e); + + mp_mod(&d, &a, &d); + mp_montgomery_reduce(&c, &a, mp); + mp_mulmod(&c, &b, &a, &c); + + if (mp_cmp(&c, &d) != MP_EQ) { +printf("d = e mod a, c = e MOD a\n"); +mp_todecimal(&a, buf); printf("a = %s\n", buf); +mp_todecimal(&e, buf); printf("e = %s\n", buf); +mp_todecimal(&d, buf); printf("d = %s\n", buf); +mp_todecimal(&c, buf); printf("c = %s\n", buf); +printf("compare no compare!\n"); exit(EXIT_FAILURE); } + } + } + } + printf("done\n"); + + // test mp_get_int + printf("Testing: mp_get_int\n"); + for (i = 0; i < 1000; ++i) { + t = ((unsigned long) rand() * rand() + 1) & 0xFFFFFFFF; + mp_set_int(&a, t); + if (t != mp_get_int(&a)) { + printf("mp_get_int() bad result!\n"); + return 1; + } + } + mp_set_int(&a, 0); + if (mp_get_int(&a) != 0) { printf("mp_get_int() bad result!\n"); return 1; - } - } - mp_set_int(&a,0); - if (mp_get_int(&a)!=0) - { printf("mp_get_int() bad result!\n"); - return 1; - } - mp_set_int(&a,0xffffffff); - if (mp_get_int(&a)!=0xffffffff) - { printf("mp_get_int() bad result!\n"); - return 1; - } - - // test mp_sqrt - printf("Testing: mp_sqrt\n"); - for (i=0;i<1000;++i) { - printf("%6d\r", i); fflush(stdout); - n = (rand()&15)+1; - mp_rand(&a,n); - if (mp_sqrt(&a,&b) != MP_OKAY) - { printf("mp_sqrt() error!\n"); - return 1; - } - mp_n_root(&a,2,&a); - if (mp_cmp_mag(&b,&a) != MP_EQ) - { printf("mp_sqrt() bad result!\n"); - return 1; - } - } - - printf("\nTesting: mp_is_square\n"); - for (i=0;i<1000;++i) { - printf("%6d\r", i); fflush(stdout); - - /* test mp_is_square false negatives */ - n = (rand()&7)+1; - mp_rand(&a,n); - mp_sqr(&a,&a); - if (mp_is_square(&a,&n)!=MP_OKAY) { - printf("fn:mp_is_square() error!\n"); - return 1; - } - if (n==0) { - printf("fn:mp_is_square() bad result!\n"); + } + mp_set_int(&a, 0xffffffff); + if (mp_get_int(&a) != 0xffffffff) { + printf("mp_get_int() bad result!\n"); return 1; - } + } + // test mp_sqrt + printf("Testing: mp_sqrt\n"); + for (i = 0; i < 1000; ++i) { + printf("%6d\r", i); + fflush(stdout); + n = (rand() & 15) + 1; + mp_rand(&a, n); + if (mp_sqrt(&a, &b) != MP_OKAY) { + printf("mp_sqrt() error!\n"); + return 1; + } + mp_n_root(&a, 2, &a); + if (mp_cmp_mag(&b, &a) != MP_EQ) { + printf("mp_sqrt() bad result!\n"); + return 1; + } + } - /* test for false positives */ - mp_add_d(&a, 1, &a); - if (mp_is_square(&a,&n)!=MP_OKAY) { - printf("fp:mp_is_square() error!\n"); - return 1; - } - if (n==1) { - printf("fp:mp_is_square() bad result!\n"); - return 1; - } + printf("\nTesting: mp_is_square\n"); + for (i = 0; i < 1000; ++i) { + printf("%6d\r", i); + fflush(stdout); + + /* test mp_is_square false negatives */ + n = (rand() & 7) + 1; + mp_rand(&a, n); + mp_sqr(&a, &a); + if (mp_is_square(&a, &n) != MP_OKAY) { + printf("fn:mp_is_square() error!\n"); + return 1; + } + if (n == 0) { + printf("fn:mp_is_square() bad result!\n"); + return 1; + } - } - printf("\n\n"); + /* test for false positives */ + mp_add_d(&a, 1, &a); + if (mp_is_square(&a, &n) != MP_OKAY) { + printf("fp:mp_is_square() error!\n"); + return 1; + } + if (n == 1) { + printf("fp:mp_is_square() bad result!\n"); + return 1; + } + + } + printf("\n\n"); /* test for size */ - for (ix = 10; ix < 256; ix++) { - printf("Testing (not safe-prime): %9d bits \r", ix); fflush(stdout); - err = mp_prime_random_ex(&a, 8, ix, (rand()&1)?LTM_PRIME_2MSB_OFF:LTM_PRIME_2MSB_ON, myrng, NULL); - if (err != MP_OKAY) { - printf("failed with err code %d\n", err); - return EXIT_FAILURE; - } - if (mp_count_bits(&a) != ix) { - printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); - return EXIT_FAILURE; - } + for (ix = 10; ix < 128; ix++) { + printf("Testing (not safe-prime): %9d bits \r", ix); + fflush(stdout); + err = + mp_prime_random_ex(&a, 8, ix, + (rand() & 1) ? LTM_PRIME_2MSB_OFF : + LTM_PRIME_2MSB_ON, myrng, NULL); + if (err != MP_OKAY) { + printf("failed with err code %d\n", err); + return EXIT_FAILURE; + } + if (mp_count_bits(&a) != ix) { + printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); + return EXIT_FAILURE; + } } - for (ix = 16; ix < 256; ix++) { - printf("Testing ( safe-prime): %9d bits \r", ix); fflush(stdout); - err = mp_prime_random_ex(&a, 8, ix, ((rand()&1)?LTM_PRIME_2MSB_OFF:LTM_PRIME_2MSB_ON)|LTM_PRIME_SAFE, myrng, NULL); - if (err != MP_OKAY) { - printf("failed with err code %d\n", err); - return EXIT_FAILURE; - } - if (mp_count_bits(&a) != ix) { - printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); - return EXIT_FAILURE; - } - /* let's see if it's really a safe prime */ - mp_sub_d(&a, 1, &a); - mp_div_2(&a, &a); - mp_prime_is_prime(&a, 8, &cnt); - if (cnt != MP_YES) { - printf("sub is not prime!\n"); - return EXIT_FAILURE; - } + for (ix = 16; ix < 128; ix++) { + printf("Testing ( safe-prime): %9d bits \r", ix); + fflush(stdout); + err = + mp_prime_random_ex(&a, 8, ix, + ((rand() & 1) ? LTM_PRIME_2MSB_OFF : + LTM_PRIME_2MSB_ON) | LTM_PRIME_SAFE, myrng, + NULL); + if (err != MP_OKAY) { + printf("failed with err code %d\n", err); + return EXIT_FAILURE; + } + if (mp_count_bits(&a) != ix) { + printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); + return EXIT_FAILURE; + } + /* let's see if it's really a safe prime */ + mp_sub_d(&a, 1, &a); + mp_div_2(&a, &a); + mp_prime_is_prime(&a, 8, &cnt); + if (cnt != MP_YES) { + printf("sub is not prime!\n"); + return EXIT_FAILURE; + } } printf("\n\n"); @@ -194,51 +242,56 @@ int main(void) printf("testing mp_cnt_lsb...\n"); mp_set(&a, 1); for (ix = 0; ix < 1024; ix++) { - if (mp_cnt_lsb(&a) != ix) { - printf("Failed at %d, %d\n", ix, mp_cnt_lsb(&a)); - return 0; - } - mp_mul_2(&a, &a); + if (mp_cnt_lsb(&a) != ix) { + printf("Failed at %d, %d\n", ix, mp_cnt_lsb(&a)); + return 0; + } + mp_mul_2(&a, &a); } /* test mp_reduce_2k */ printf("Testing mp_reduce_2k...\n"); for (cnt = 3; cnt <= 128; ++cnt) { - mp_digit tmp; - mp_2expt(&a, cnt); - mp_sub_d(&a, 2, &a); /* a = 2**cnt - 2 */ - - - printf("\nTesting %4d bits", cnt); - printf("(%d)", mp_reduce_is_2k(&a)); - mp_reduce_2k_setup(&a, &tmp); - printf("(%d)", tmp); - for (ix = 0; ix < 1000; ix++) { - if (!(ix & 127)) {printf("."); fflush(stdout); } - mp_rand(&b, (cnt/DIGIT_BIT + 1) * 2); - mp_copy(&c, &b); - mp_mod(&c, &a, &c); - mp_reduce_2k(&b, &a, 1); - if (mp_cmp(&c, &b)) { - printf("FAILED\n"); - exit(0); - } - } - } + mp_digit tmp; + + mp_2expt(&a, cnt); + mp_sub_d(&a, 2, &a); /* a = 2**cnt - 2 */ + + + printf("\nTesting %4d bits", cnt); + printf("(%d)", mp_reduce_is_2k(&a)); + mp_reduce_2k_setup(&a, &tmp); + printf("(%d)", tmp); + for (ix = 0; ix < 1000; ix++) { + if (!(ix & 127)) { + printf("."); + fflush(stdout); + } + mp_rand(&b, (cnt / DIGIT_BIT + 1) * 2); + mp_copy(&c, &b); + mp_mod(&c, &a, &c); + mp_reduce_2k(&b, &a, 2); + if (mp_cmp(&c, &b)) { + printf("FAILED\n"); + exit(0); + } + } + } /* test mp_div_3 */ printf("Testing mp_div_3...\n"); mp_set(&d, 3); - for (cnt = 0; cnt < 10000; ) { + for (cnt = 0; cnt < 10000;) { mp_digit r1, r2; - if (!(++cnt & 127)) printf("%9d\r", cnt); + if (!(++cnt & 127)) + printf("%9d\r", cnt); mp_rand(&a, abs(rand()) % 128 + 1); mp_div(&a, &d, &b, &e); mp_div_3(&a, &c, &r2); if (mp_cmp(&b, &c) || mp_cmp_d(&e, r2)) { - printf("\n\nmp_div_3 => Failure\n"); + printf("\n\nmp_div_3 => Failure\n"); } } printf("\n\nPassed div_3 testing\n"); @@ -246,270 +299,438 @@ int main(void) /* test the DR reduction */ printf("testing mp_dr_reduce...\n"); for (cnt = 2; cnt < 32; cnt++) { - printf("%d digit modulus\n", cnt); - mp_grow(&a, cnt); - mp_zero(&a); - for (ix = 1; ix < cnt; ix++) { - a.dp[ix] = MP_MASK; - } - a.used = cnt; - a.dp[0] = 3; - - mp_rand(&b, cnt - 1); - mp_copy(&b, &c); + printf("%d digit modulus\n", cnt); + mp_grow(&a, cnt); + mp_zero(&a); + for (ix = 1; ix < cnt; ix++) { + a.dp[ix] = MP_MASK; + } + a.used = cnt; + a.dp[0] = 3; + + mp_rand(&b, cnt - 1); + mp_copy(&b, &c); rr = 0; do { - if (!(rr & 127)) { printf("%9lu\r", rr); fflush(stdout); } - mp_sqr(&b, &b); mp_add_d(&b, 1, &b); - mp_copy(&b, &c); - - mp_mod(&b, &a, &b); - mp_dr_reduce(&c, &a, (((mp_digit)1)< - #endif - return __getReg (3116); - #else - #error need rdtsc function for this build - #endif - } +#elif defined _M_IX86 + __asm rdtsc +#elif defined _M_AMD64 + return __rdtsc(); +#elif defined _M_IA64 +#if defined __INTEL_COMPILER +#include +#endif + return __getReg(3116); +#else +#error need rdtsc function for this build +#endif +} #define DO(x) x; x; //#define DO4(x) DO2(x); DO2(x); @@ -77,7 +81,7 @@ static ulong64 TIMFUNC (void) int main(void) { ulong64 tt, gg, CLK_PER_SEC; - FILE *log, *logb, *logc; + FILE *log, *logb, *logc, *logd; mp_int a, b, c, d, e, f; int n, cnt, ix, old_kara_m, old_kara_s; unsigned rr; @@ -90,168 +94,191 @@ int main(void) mp_init(&f); srand(time(NULL)); - - - /* temp. turn off TOOM */ - TOOM_MUL_CUTOFF = TOOM_SQR_CUTOFF = 100000; - - CLK_PER_SEC = TIMFUNC(); - sleep(1); - CLK_PER_SEC = TIMFUNC() - CLK_PER_SEC; - - printf("CLK_PER_SEC == %llu\n", CLK_PER_SEC); - - log = fopen("logs/add.log", "w"); - for (cnt = 8; cnt <= 128; cnt += 8) { - SLEEP; - mp_rand(&a, cnt); - mp_rand(&b, cnt); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_add(&a,&b,&c)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 100000); - printf("Adding\t\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", cnt*DIGIT_BIT, tt); fflush(log); - } - fclose(log); - log = fopen("logs/sub.log", "w"); - for (cnt = 8; cnt <= 128; cnt += 8) { - SLEEP; - mp_rand(&a, cnt); - mp_rand(&b, cnt); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_sub(&a,&b,&c)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 100000); - - printf("Subtracting\t\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", cnt*DIGIT_BIT, tt); fflush(log); - } - fclose(log); + + /* temp. turn off TOOM */ + TOOM_MUL_CUTOFF = TOOM_SQR_CUTOFF = 100000; + + CLK_PER_SEC = TIMFUNC(); + sleep(1); + CLK_PER_SEC = TIMFUNC() - CLK_PER_SEC; + + printf("CLK_PER_SEC == %llu\n", CLK_PER_SEC); + goto exptmod; + log = fopen("logs/add.log", "w"); + for (cnt = 8; cnt <= 128; cnt += 8) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_add(&a, &b, &c)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 100000); + printf("Adding\t\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", cnt * DIGIT_BIT, tt); + fflush(log); + } + fclose(log); + + log = fopen("logs/sub.log", "w"); + for (cnt = 8; cnt <= 128; cnt += 8) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_sub(&a, &b, &c)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 100000); + + printf("Subtracting\t\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", cnt * DIGIT_BIT, tt); + fflush(log); + } + fclose(log); /* do mult/square twice, first without karatsuba and second with */ + multtest: old_kara_m = KARATSUBA_MUL_CUTOFF; old_kara_s = KARATSUBA_SQR_CUTOFF; - for (ix = 0; ix < 1; ix++) { - printf("With%s Karatsuba\n", (ix==0)?"out":""); - - KARATSUBA_MUL_CUTOFF = (ix==0)?9999:old_kara_m; - KARATSUBA_SQR_CUTOFF = (ix==0)?9999:old_kara_s; - - log = fopen((ix==0)?"logs/mult.log":"logs/mult_kara.log", "w"); - for (cnt = 4; cnt <= 288; cnt += 2) { - SLEEP; - mp_rand(&a, cnt); - mp_rand(&b, cnt); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_mul(&a, &b, &c)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 100); - printf("Multiplying\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); fflush(log); + for (ix = 0; ix < 2; ix++) { + printf("With%s Karatsuba\n", (ix == 0) ? "out" : ""); + + KARATSUBA_MUL_CUTOFF = (ix == 0) ? 9999 : old_kara_m; + KARATSUBA_SQR_CUTOFF = (ix == 0) ? 9999 : old_kara_s; + + log = fopen((ix == 0) ? "logs/mult.log" : "logs/mult_kara.log", "w"); + for (cnt = 4; cnt <= 10240 / DIGIT_BIT; cnt += 2) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_mul(&a, &b, &c)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 100); + printf("Multiplying\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); + fflush(log); } fclose(log); - log = fopen((ix==0)?"logs/sqr.log":"logs/sqr_kara.log", "w"); - for (cnt = 4; cnt <= 288; cnt += 2) { - SLEEP; - mp_rand(&a, cnt); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_sqr(&a, &b)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 100); - printf("Squaring\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); fflush(log); + log = fopen((ix == 0) ? "logs/sqr.log" : "logs/sqr_kara.log", "w"); + for (cnt = 4; cnt <= 10240 / DIGIT_BIT; cnt += 2) { + SLEEP; + mp_rand(&a, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_sqr(&a, &b)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 100); + printf("Squaring\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); + fflush(log); } fclose(log); } + exptmod: - { + { char *primes[] = { - /* 2K moduli mersenne primes */ - "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151", - "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127", - "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087", - "1475979915214180235084898622737381736312066145333169775147771216478570297878078949377407337049389289382748507531496480477281264838760259191814463365330269540496961201113430156902396093989090226259326935025281409614983499388222831448598601834318536230923772641390209490231836446899608210795482963763094236630945410832793769905399982457186322944729636418890623372171723742105636440368218459649632948538696905872650486914434637457507280441823676813517852099348660847172579408422316678097670224011990280170474894487426924742108823536808485072502240519452587542875349976558572670229633962575212637477897785501552646522609988869914013540483809865681250419497686697771007", - "259117086013202627776246767922441530941818887553125427303974923161874019266586362086201209516800483406550695241733194177441689509238807017410377709597512042313066624082916353517952311186154862265604547691127595848775610568757931191017711408826252153849035830401185072116424747461823031471398340229288074545677907941037288235820705892351068433882986888616658650280927692080339605869308790500409503709875902119018371991620994002568935113136548829739112656797303241986517250116412703509705427773477972349821676443446668383119322540099648994051790241624056519054483690809616061625743042361721863339415852426431208737266591962061753535748892894599629195183082621860853400937932839420261866586142503251450773096274235376822938649407127700846077124211823080804139298087057504713825264571448379371125032081826126566649084251699453951887789613650248405739378594599444335231188280123660406262468609212150349937584782292237144339628858485938215738821232393687046160677362909315071", - "190797007524439073807468042969529173669356994749940177394741882673528979787005053706368049835514900244303495954950709725762186311224148828811920216904542206960744666169364221195289538436845390250168663932838805192055137154390912666527533007309292687539092257043362517857366624699975402375462954490293259233303137330643531556539739921926201438606439020075174723029056838272505051571967594608350063404495977660656269020823960825567012344189908927956646011998057988548630107637380993519826582389781888135705408653045219655801758081251164080554609057468028203308718724654081055323215860189611391296030471108443146745671967766308925858547271507311563765171008318248647110097614890313562856541784154881743146033909602737947385055355960331855614540900081456378659068370317267696980001187750995491090350108417050917991562167972281070161305972518044872048331306383715094854938415738549894606070722584737978176686422134354526989443028353644037187375385397838259511833166416134323695660367676897722287918773420968982326089026150031515424165462111337527431154890666327374921446276833564519776797633875503548665093914556482031482248883127023777039667707976559857333357013727342079099064400455741830654320379350833236245819348824064783585692924881021978332974949906122664421376034687815350484991", - - /* DR moduli */ - "14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203368612079", - "101745825697019260773923519755878567461315282017759829107608914364075275235254395622580447400994175578963163918967182013639660669771108475957692810857098847138903161308502419410142185759152435680068435915159402496058513611411688900243039", - "736335108039604595805923406147184530889923370574768772191969612422073040099331944991573923112581267542507986451953227192970402893063850485730703075899286013451337291468249027691733891486704001513279827771740183629161065194874727962517148100775228363421083691764065477590823919364012917984605619526140821797602431", - "38564998830736521417281865696453025806593491967131023221754800625044118265468851210705360385717536794615180260494208076605798671660719333199513807806252394423283413430106003596332513246682903994829528690198205120921557533726473585751382193953592127439965050261476810842071573684505878854588706623484573925925903505747545471088867712185004135201289273405614415899438276535626346098904241020877974002916168099951885406379295536200413493190419727789712076165162175783", - "542189391331696172661670440619180536749994166415993334151601745392193484590296600979602378676624808129613777993466242203025054573692562689251250471628358318743978285860720148446448885701001277560572526947619392551574490839286458454994488665744991822837769918095117129546414124448777033941223565831420390846864429504774477949153794689948747680362212954278693335653935890352619041936727463717926744868338358149568368643403037768649616778526013610493696186055899318268339432671541328195724261329606699831016666359440874843103020666106568222401047720269951530296879490444224546654729111504346660859907296364097126834834235287147", - "1487259134814709264092032648525971038895865645148901180585340454985524155135260217788758027400478312256339496385275012465661575576202252063145698732079880294664220579764848767704076761853197216563262660046602703973050798218246170835962005598561669706844469447435461092542265792444947706769615695252256130901271870341005768912974433684521436211263358097522726462083917939091760026658925757076733484173202927141441492573799914240222628795405623953109131594523623353044898339481494120112723445689647986475279242446083151413667587008191682564376412347964146113898565886683139407005941383669325997475076910488086663256335689181157957571445067490187939553165903773554290260531009121879044170766615232300936675369451260747671432073394867530820527479172464106442450727640226503746586340279816318821395210726268291535648506190714616083163403189943334431056876038286530365757187367147446004855912033137386225053275419626102417236133948503", - "1095121115716677802856811290392395128588168592409109494900178008967955253005183831872715423151551999734857184538199864469605657805519106717529655044054833197687459782636297255219742994736751541815269727940751860670268774903340296040006114013971309257028332849679096824800250742691718610670812374272414086863715763724622797509437062518082383056050144624962776302147890521249477060215148275163688301275847155316042279405557632639366066847442861422164832655874655824221577849928863023018366835675399949740429332468186340518172487073360822220449055340582568461568645259954873303616953776393853174845132081121976327462740354930744487429617202585015510744298530101547706821590188733515880733527449780963163909830077616357506845523215289297624086914545378511082534229620116563260168494523906566709418166011112754529766183554579321224940951177394088465596712620076240067370589036924024728375076210477267488679008016579588696191194060127319035195370137160936882402244399699172017835144537488486396906144217720028992863941288217185353914991583400421682751000603596655790990815525126154394344641336397793791497068253936771017031980867706707490224041075826337383538651825493679503771934836094655802776331664261631740148281763487765852746577808019633679", - - /* generic unrestricted moduli */ - "17933601194860113372237070562165128350027320072176844226673287945873370751245439587792371960615073855669274087805055507977323024886880985062002853331424203", - "2893527720709661239493896562339544088620375736490408468011883030469939904368086092336458298221245707898933583190713188177399401852627749210994595974791782790253946539043962213027074922559572312141181787434278708783207966459019479487", - "347743159439876626079252796797422223177535447388206607607181663903045907591201940478223621722118173270898487582987137708656414344685816179420855160986340457973820182883508387588163122354089264395604796675278966117567294812714812796820596564876450716066283126720010859041484786529056457896367683122960411136319", - "47266428956356393164697365098120418976400602706072312735924071745438532218237979333351774907308168340693326687317443721193266215155735814510792148768576498491199122744351399489453533553203833318691678263241941706256996197460424029012419012634671862283532342656309677173602509498417976091509154360039893165037637034737020327399910409885798185771003505320583967737293415979917317338985837385734747478364242020380416892056650841470869294527543597349250299539682430605173321029026555546832473048600327036845781970289288898317888427517364945316709081173840186150794397479045034008257793436817683392375274635794835245695887", - "436463808505957768574894870394349739623346440601945961161254440072143298152040105676491048248110146278752857839930515766167441407021501229924721335644557342265864606569000117714935185566842453630868849121480179691838399545644365571106757731317371758557990781880691336695584799313313687287468894148823761785582982549586183756806449017542622267874275103877481475534991201849912222670102069951687572917937634467778042874315463238062009202992087620963771759666448266532858079402669920025224220613419441069718482837399612644978839925207109870840278194042158748845445131729137117098529028886770063736487420613144045836803985635654192482395882603511950547826439092832800532152534003936926017612446606135655146445620623395788978726744728503058670046885876251527122350275750995227", - "11424167473351836398078306042624362277956429440521137061889702611766348760692206243140413411077394583180726863277012016602279290144126785129569474909173584789822341986742719230331946072730319555984484911716797058875905400999504305877245849119687509023232790273637466821052576859232452982061831009770786031785669030271542286603956118755585683996118896215213488875253101894663403069677745948305893849505434201763745232895780711972432011344857521691017896316861403206449421332243658855453435784006517202894181640562433575390821384210960117518650374602256601091379644034244332285065935413233557998331562749140202965844219336298970011513882564935538704289446968322281451907487362046511461221329799897350993370560697505809686438782036235372137015731304779072430260986460269894522159103008260495503005267165927542949439526272736586626709581721032189532726389643625590680105784844246152702670169304203783072275089194754889511973916207", - "1214855636816562637502584060163403830270705000634713483015101384881871978446801224798536155406895823305035467591632531067547890948695117172076954220727075688048751022421198712032848890056357845974246560748347918630050853933697792254955890439720297560693579400297062396904306270145886830719309296352765295712183040773146419022875165382778007040109957609739589875590885701126197906063620133954893216612678838507540777138437797705602453719559017633986486649523611975865005712371194067612263330335590526176087004421363598470302731349138773205901447704682181517904064735636518462452242791676541725292378925568296858010151852326316777511935037531017413910506921922450666933202278489024521263798482237150056835746454842662048692127173834433089016107854491097456725016327709663199738238442164843147132789153725513257167915555162094970853584447993125488607696008169807374736711297007473812256272245489405898470297178738029484459690836250560495461579533254473316340608217876781986188705928270735695752830825527963838355419762516246028680280988020401914551825487349990306976304093109384451438813251211051597392127491464898797406789175453067960072008590614886532333015881171367104445044718144312416815712216611576221546455968770801413440778423979", - NULL + /* 2K large moduli */ + "179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586239334100047359817950870678242457666208137217", + "32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123930385521914333389668342420684974786564569494856176035326322058077805659331026192708460314150258592864177116725943603718461857357598351152301645904403697613233287231227125684710820209725157101726931323469678542580656697935045997268352998638099733077152121140120031150424541696791951097529546801429027668869927491725169", + "1044388881413152506691752710716624382579964249047383780384233483283953907971557456848826811934997558340890106714439262837987573438185793607263236087851365277945956976543709998340361590134383718314428070011855946226376318839397712745672334684344586617496807908705803704071284048740118609114467977783598029006686938976881787785946905630190260940599579453432823469303026696443059025015972399867714215541693835559885291486318237914434496734087811872639496475100189041349008417061675093668333850551032972088269550769983616369411933015213796825837188091833656751221318492846368125550225998300412344784862595674492194617023806505913245610825731835380087608622102834270197698202313169017678006675195485079921636419370285375124784014907159135459982790513399611551794271106831134090584272884279791554849782954323534517065223269061394905987693002122963395687782878948440616007412945674919823050571642377154816321380631045902916136926708342856440730447899971901781465763473223850267253059899795996090799469201774624817718449867455659250178329070473119433165550807568221846571746373296884912819520317457002440926616910874148385078411929804522981857338977648103126085902995208257421855249796721729039744118165938433694823325696642096892124547425283", + /* 2K moduli mersenne primes */ + "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151", + "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127", + "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087", + "1475979915214180235084898622737381736312066145333169775147771216478570297878078949377407337049389289382748507531496480477281264838760259191814463365330269540496961201113430156902396093989090226259326935025281409614983499388222831448598601834318536230923772641390209490231836446899608210795482963763094236630945410832793769905399982457186322944729636418890623372171723742105636440368218459649632948538696905872650486914434637457507280441823676813517852099348660847172579408422316678097670224011990280170474894487426924742108823536808485072502240519452587542875349976558572670229633962575212637477897785501552646522609988869914013540483809865681250419497686697771007", + "259117086013202627776246767922441530941818887553125427303974923161874019266586362086201209516800483406550695241733194177441689509238807017410377709597512042313066624082916353517952311186154862265604547691127595848775610568757931191017711408826252153849035830401185072116424747461823031471398340229288074545677907941037288235820705892351068433882986888616658650280927692080339605869308790500409503709875902119018371991620994002568935113136548829739112656797303241986517250116412703509705427773477972349821676443446668383119322540099648994051790241624056519054483690809616061625743042361721863339415852426431208737266591962061753535748892894599629195183082621860853400937932839420261866586142503251450773096274235376822938649407127700846077124211823080804139298087057504713825264571448379371125032081826126566649084251699453951887789613650248405739378594599444335231188280123660406262468609212150349937584782292237144339628858485938215738821232393687046160677362909315071", + "190797007524439073807468042969529173669356994749940177394741882673528979787005053706368049835514900244303495954950709725762186311224148828811920216904542206960744666169364221195289538436845390250168663932838805192055137154390912666527533007309292687539092257043362517857366624699975402375462954490293259233303137330643531556539739921926201438606439020075174723029056838272505051571967594608350063404495977660656269020823960825567012344189908927956646011998057988548630107637380993519826582389781888135705408653045219655801758081251164080554609057468028203308718724654081055323215860189611391296030471108443146745671967766308925858547271507311563765171008318248647110097614890313562856541784154881743146033909602737947385055355960331855614540900081456378659068370317267696980001187750995491090350108417050917991562167972281070161305972518044872048331306383715094854938415738549894606070722584737978176686422134354526989443028353644037187375385397838259511833166416134323695660367676897722287918773420968982326089026150031515424165462111337527431154890666327374921446276833564519776797633875503548665093914556482031482248883127023777039667707976559857333357013727342079099064400455741830654320379350833236245819348824064783585692924881021978332974949906122664421376034687815350484991", + + /* DR moduli */ + "14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203368612079", + "101745825697019260773923519755878567461315282017759829107608914364075275235254395622580447400994175578963163918967182013639660669771108475957692810857098847138903161308502419410142185759152435680068435915159402496058513611411688900243039", + "736335108039604595805923406147184530889923370574768772191969612422073040099331944991573923112581267542507986451953227192970402893063850485730703075899286013451337291468249027691733891486704001513279827771740183629161065194874727962517148100775228363421083691764065477590823919364012917984605619526140821797602431", + "38564998830736521417281865696453025806593491967131023221754800625044118265468851210705360385717536794615180260494208076605798671660719333199513807806252394423283413430106003596332513246682903994829528690198205120921557533726473585751382193953592127439965050261476810842071573684505878854588706623484573925925903505747545471088867712185004135201289273405614415899438276535626346098904241020877974002916168099951885406379295536200413493190419727789712076165162175783", + "542189391331696172661670440619180536749994166415993334151601745392193484590296600979602378676624808129613777993466242203025054573692562689251250471628358318743978285860720148446448885701001277560572526947619392551574490839286458454994488665744991822837769918095117129546414124448777033941223565831420390846864429504774477949153794689948747680362212954278693335653935890352619041936727463717926744868338358149568368643403037768649616778526013610493696186055899318268339432671541328195724261329606699831016666359440874843103020666106568222401047720269951530296879490444224546654729111504346660859907296364097126834834235287147", + "1487259134814709264092032648525971038895865645148901180585340454985524155135260217788758027400478312256339496385275012465661575576202252063145698732079880294664220579764848767704076761853197216563262660046602703973050798218246170835962005598561669706844469447435461092542265792444947706769615695252256130901271870341005768912974433684521436211263358097522726462083917939091760026658925757076733484173202927141441492573799914240222628795405623953109131594523623353044898339481494120112723445689647986475279242446083151413667587008191682564376412347964146113898565886683139407005941383669325997475076910488086663256335689181157957571445067490187939553165903773554290260531009121879044170766615232300936675369451260747671432073394867530820527479172464106442450727640226503746586340279816318821395210726268291535648506190714616083163403189943334431056876038286530365757187367147446004855912033137386225053275419626102417236133948503", + "1095121115716677802856811290392395128588168592409109494900178008967955253005183831872715423151551999734857184538199864469605657805519106717529655044054833197687459782636297255219742994736751541815269727940751860670268774903340296040006114013971309257028332849679096824800250742691718610670812374272414086863715763724622797509437062518082383056050144624962776302147890521249477060215148275163688301275847155316042279405557632639366066847442861422164832655874655824221577849928863023018366835675399949740429332468186340518172487073360822220449055340582568461568645259954873303616953776393853174845132081121976327462740354930744487429617202585015510744298530101547706821590188733515880733527449780963163909830077616357506845523215289297624086914545378511082534229620116563260168494523906566709418166011112754529766183554579321224940951177394088465596712620076240067370589036924024728375076210477267488679008016579588696191194060127319035195370137160936882402244399699172017835144537488486396906144217720028992863941288217185353914991583400421682751000603596655790990815525126154394344641336397793791497068253936771017031980867706707490224041075826337383538651825493679503771934836094655802776331664261631740148281763487765852746577808019633679", + + /* generic unrestricted moduli */ + "17933601194860113372237070562165128350027320072176844226673287945873370751245439587792371960615073855669274087805055507977323024886880985062002853331424203", + "2893527720709661239493896562339544088620375736490408468011883030469939904368086092336458298221245707898933583190713188177399401852627749210994595974791782790253946539043962213027074922559572312141181787434278708783207966459019479487", + "347743159439876626079252796797422223177535447388206607607181663903045907591201940478223621722118173270898487582987137708656414344685816179420855160986340457973820182883508387588163122354089264395604796675278966117567294812714812796820596564876450716066283126720010859041484786529056457896367683122960411136319", + "47266428956356393164697365098120418976400602706072312735924071745438532218237979333351774907308168340693326687317443721193266215155735814510792148768576498491199122744351399489453533553203833318691678263241941706256996197460424029012419012634671862283532342656309677173602509498417976091509154360039893165037637034737020327399910409885798185771003505320583967737293415979917317338985837385734747478364242020380416892056650841470869294527543597349250299539682430605173321029026555546832473048600327036845781970289288898317888427517364945316709081173840186150794397479045034008257793436817683392375274635794835245695887", + "436463808505957768574894870394349739623346440601945961161254440072143298152040105676491048248110146278752857839930515766167441407021501229924721335644557342265864606569000117714935185566842453630868849121480179691838399545644365571106757731317371758557990781880691336695584799313313687287468894148823761785582982549586183756806449017542622267874275103877481475534991201849912222670102069951687572917937634467778042874315463238062009202992087620963771759666448266532858079402669920025224220613419441069718482837399612644978839925207109870840278194042158748845445131729137117098529028886770063736487420613144045836803985635654192482395882603511950547826439092832800532152534003936926017612446606135655146445620623395788978726744728503058670046885876251527122350275750995227", + "11424167473351836398078306042624362277956429440521137061889702611766348760692206243140413411077394583180726863277012016602279290144126785129569474909173584789822341986742719230331946072730319555984484911716797058875905400999504305877245849119687509023232790273637466821052576859232452982061831009770786031785669030271542286603956118755585683996118896215213488875253101894663403069677745948305893849505434201763745232895780711972432011344857521691017896316861403206449421332243658855453435784006517202894181640562433575390821384210960117518650374602256601091379644034244332285065935413233557998331562749140202965844219336298970011513882564935538704289446968322281451907487362046511461221329799897350993370560697505809686438782036235372137015731304779072430260986460269894522159103008260495503005267165927542949439526272736586626709581721032189532726389643625590680105784844246152702670169304203783072275089194754889511973916207", + "1214855636816562637502584060163403830270705000634713483015101384881871978446801224798536155406895823305035467591632531067547890948695117172076954220727075688048751022421198712032848890056357845974246560748347918630050853933697792254955890439720297560693579400297062396904306270145886830719309296352765295712183040773146419022875165382778007040109957609739589875590885701126197906063620133954893216612678838507540777138437797705602453719559017633986486649523611975865005712371194067612263330335590526176087004421363598470302731349138773205901447704682181517904064735636518462452242791676541725292378925568296858010151852326316777511935037531017413910506921922450666933202278489024521263798482237150056835746454842662048692127173834433089016107854491097456725016327709663199738238442164843147132789153725513257167915555162094970853584447993125488607696008169807374736711297007473812256272245489405898470297178738029484459690836250560495461579533254473316340608217876781986188705928270735695752830825527963838355419762516246028680280988020401914551825487349990306976304093109384451438813251211051597392127491464898797406789175453067960072008590614886532333015881171367104445044718144312416815712216611576221546455968770801413440778423979", + NULL }; - log = fopen("logs/expt.log", "w"); - logb = fopen("logs/expt_dr.log", "w"); - logc = fopen("logs/expt_2k.log", "w"); - for (n = 0; primes[n]; n++) { - SLEEP; - mp_read_radix(&a, primes[n], 10); - mp_zero(&b); - for (rr = 0; rr < (unsigned)mp_count_bits(&a); rr++) { - mp_mul_2(&b, &b); - b.dp[0] |= lbit(); - b.used += 1; - } - mp_sub_d(&a, 1, &c); - mp_mod(&b, &c, &b); - mp_set(&c, 3); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_exptmod(&c, &b, &a, &d)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 10); - mp_sub_d(&a, 1, &e); - mp_sub(&e, &b, &b); - mp_exptmod(&c, &b, &a, &e); /* c^(p-1-b) mod a */ - mp_mulmod(&e, &d, &a, &d); /* c^b * c^(p-1-b) == c^p-1 == 1 */ - if (mp_cmp_d(&d, 1)) { - printf("Different (%d)!!!\n", mp_count_bits(&a)); - draw(&d); - exit(0); + log = fopen("logs/expt.log", "w"); + logb = fopen("logs/expt_dr.log", "w"); + logc = fopen("logs/expt_2k.log", "w"); + logd = fopen("logs/expt_2kl.log", "w"); + for (n = 0; primes[n]; n++) { + SLEEP; + mp_read_radix(&a, primes[n], 10); + mp_zero(&b); + for (rr = 0; rr < (unsigned) mp_count_bits(&a); rr++) { + mp_mul_2(&b, &b); + b.dp[0] |= lbit(); + b.used += 1; + } + mp_sub_d(&a, 1, &c); + mp_mod(&b, &c, &b); + mp_set(&c, 3); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_exptmod(&c, &b, &a, &d)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 10); + mp_sub_d(&a, 1, &e); + mp_sub(&e, &b, &b); + mp_exptmod(&c, &b, &a, &e); /* c^(p-1-b) mod a */ + mp_mulmod(&e, &d, &a, &d); /* c^b * c^(p-1-b) == c^p-1 == 1 */ + if (mp_cmp_d(&d, 1)) { + printf("Different (%d)!!!\n", mp_count_bits(&a)); + draw(&d); + exit(0); + } + printf("Exponentiating\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(n < 4 ? logd : (n < 9) ? logc : (n < 16) ? logb : log, + "%d %9llu\n", mp_count_bits(&a), tt); } - printf("Exponentiating\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf((n < 6) ? logc : (n < 13) ? logb : log, "%d %9llu\n", mp_count_bits(&a), tt); - } } fclose(log); fclose(logb); fclose(logc); + fclose(logd); log = fopen("logs/invmod.log", "w"); for (cnt = 4; cnt <= 128; cnt += 4) { @@ -260,28 +287,29 @@ int main(void) mp_rand(&b, cnt); do { - mp_add_d(&b, 1, &b); - mp_gcd(&a, &b, &c); + mp_add_d(&b, 1, &b); + mp_gcd(&a, &b, &c); } while (mp_cmp_d(&c, 1) != MP_EQ); - rr = 0; - tt = -1; + rr = 0; + tt = -1; do { - gg = TIMFUNC(); - DO(mp_invmod(&b, &a, &c)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; + gg = TIMFUNC(); + DO(mp_invmod(&b, &a, &c)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; } while (++rr < 1000); mp_mulmod(&b, &c, &a, &d); if (mp_cmp_d(&d, 1) != MP_EQ) { - printf("Failed to invert\n"); - return 0; + printf("Failed to invert\n"); + return 0; } - printf("Inverting mod\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", cnt*DIGIT_BIT, tt); + printf("Inverting mod\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", cnt * DIGIT_BIT, tt); } fclose(log); return 0; } - diff --git a/libtommath/dep.pl b/libtommath/dep.pl index 22266e3..c39e27e 100644 --- a/libtommath/dep.pl +++ b/libtommath/dep.pl @@ -13,6 +13,8 @@ print CLASS "#if !(defined(LTM1) && defined(LTM2) && defined(LTM3))\n#if defined foreach my $filename (glob "bn*.c") { my $define = $filename; +print "Processing $filename\n"; + # convert filename to upper case so we can use it as a define $define =~ tr/[a-z]/[A-Z]/; $define =~ tr/\./_/; diff --git a/libtommath/etc/timer.asm b/libtommath/etc/timer.asm index 35890d9..326a947 100644 --- a/libtommath/etc/timer.asm +++ b/libtommath/etc/timer.asm @@ -1,37 +1,37 @@ -; x86 timer in NASM -; -; Tom St Denis, tomstdenis@iahu.ca -[bits 32] -[section .data] -time dd 0, 0 - -[section .text] - -%ifdef USE_ELF -[global t_start] -t_start: -%else -[global _t_start] -_t_start: -%endif - push edx - push eax - rdtsc - mov [time+0],edx - mov [time+4],eax - pop eax - pop edx - ret - -%ifdef USE_ELF -[global t_read] -t_read: -%else -[global _t_read] -_t_read: -%endif - rdtsc - sub eax,[time+4] - sbb edx,[time+0] - ret +; x86 timer in NASM +; +; Tom St Denis, tomstdenis@iahu.ca +[bits 32] +[section .data] +time dd 0, 0 + +[section .text] + +%ifdef USE_ELF +[global t_start] +t_start: +%else +[global _t_start] +_t_start: +%endif + push edx + push eax + rdtsc + mov [time+0],edx + mov [time+4],eax + pop eax + pop edx + ret + +%ifdef USE_ELF +[global t_read] +t_read: +%else +[global _t_read] +_t_read: +%endif + rdtsc + sub eax,[time+4] + sbb edx,[time+0] + ret \ No newline at end of file diff --git a/libtommath/etc/tune.c b/libtommath/etc/tune.c index 14aace2..d054d10 100644 --- a/libtommath/etc/tune.c +++ b/libtommath/etc/tune.c @@ -10,13 +10,44 @@ */ #define TIMES (1UL<<14UL) +/* RDTSC from Scott Duplichan */ +static ulong64 TIMFUNC (void) + { + #if defined __GNUC__ + #if defined(__i386__) || defined(__x86_64__) + unsigned long long a; + __asm__ __volatile__ ("rdtsc\nmovl %%eax,%0\nmovl %%edx,4+%0\n"::"m"(a):"%eax","%edx"); + return a; + #else /* gcc-IA64 version */ + unsigned long result; + __asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory"); + while (__builtin_expect ((int) result == -1, 0)) + __asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory"); + return result; + #endif + + // Microsoft and Intel Windows compilers + #elif defined _M_IX86 + __asm rdtsc + #elif defined _M_AMD64 + return __rdtsc (); + #elif defined _M_IA64 + #if defined __INTEL_COMPILER + #include + #endif + return __getReg (3116); + #else + #error need rdtsc function for this build + #endif + } + #ifndef X86_TIMER /* generic ISO C timer */ ulong64 LBL_T; -void t_start(void) { LBL_T = clock(); } -ulong64 t_read(void) { return clock() - LBL_T; } +void t_start(void) { LBL_T = TIMFUNC(); } +ulong64 t_read(void) { return TIMFUNC() - LBL_T; } #else extern void t_start(void); diff --git a/libtommath/logs/README b/libtommath/logs/README index ea20c81..965e7c8 100644 --- a/libtommath/logs/README +++ b/libtommath/logs/README @@ -1,13 +1,13 @@ -To use the pretty graphs you have to first build/run the ltmtest from the root directory of the package. -Todo this type - -make timing ; ltmtest - -in the root. It will run for a while [about ten minutes on most PCs] and produce a series of .log files in logs/. - -After doing that run "gnuplot graphs.dem" to make the PNGs. If you managed todo that all so far just open index.html to view -them all :-) - -Have fun - +To use the pretty graphs you have to first build/run the ltmtest from the root directory of the package. +Todo this type + +make timing ; ltmtest + +in the root. It will run for a while [about ten minutes on most PCs] and produce a series of .log files in logs/. + +After doing that run "gnuplot graphs.dem" to make the PNGs. If you managed todo that all so far just open index.html to view +them all :-) + +Have fun + Tom \ No newline at end of file diff --git a/libtommath/logs/add.log b/libtommath/logs/add.log index fa11039..43503ac 100644 --- a/libtommath/logs/add.log +++ b/libtommath/logs/add.log @@ -1,10 +1,10 @@ -480 88 -960 113 -1440 138 -1920 163 -2400 202 -2880 226 -3360 251 +480 87 +960 111 +1440 135 +1920 159 +2400 200 +2880 224 +3360 248 3840 272 4320 296 4800 320 diff --git a/libtommath/logs/addsub.png b/libtommath/logs/addsub.png index a5679ac..441c7b2 100644 Binary files a/libtommath/logs/addsub.png and b/libtommath/logs/addsub.png differ diff --git a/libtommath/logs/expt.log b/libtommath/logs/expt.log index e65e927..920ba55 100644 --- a/libtommath/logs/expt.log +++ b/libtommath/logs/expt.log @@ -1,7 +1,7 @@ -513 1499509 -769 3682671 -1025 8098887 -2049 49332743 -2561 89647783 -3073 149440713 -4097 326135364 +513 1489160 +769 3688476 +1025 8162061 +2049 49260015 +2561 89579052 +3073 148797060 +4097 324449263 diff --git a/libtommath/logs/expt.png b/libtommath/logs/expt.png index 9ee8bb7..d779cc5 100644 Binary files a/libtommath/logs/expt.png and b/libtommath/logs/expt.png differ diff --git a/libtommath/logs/expt_2k.log b/libtommath/logs/expt_2k.log index d106280..56b50db 100644 --- a/libtommath/logs/expt_2k.log +++ b/libtommath/logs/expt_2k.log @@ -1,6 +1,5 @@ -521 1423346 -607 1841305 -1279 8375656 -2203 34104708 -3217 83830729 -4253 167916804 +607 2272809 +1279 9557382 +2203 36250309 +3217 87666486 +4253 174168369 diff --git a/libtommath/logs/expt_dr.log b/libtommath/logs/expt_dr.log index 6cfc874..eb93fc9 100644 --- a/libtommath/logs/expt_dr.log +++ b/libtommath/logs/expt_dr.log @@ -1,7 +1,7 @@ -532 1803110 -784 3607375 -1036 6089790 -1540 14739797 -2072 33251589 -3080 82794331 -4116 165212734 +532 1989592 +784 3898697 +1036 6519700 +1540 15676650 +2072 33128187 +3080 82963362 +4116 168358337 diff --git a/libtommath/logs/invmod.png b/libtommath/logs/invmod.png index 0a8a4ad..9dcd7d8 100644 Binary files a/libtommath/logs/invmod.png and b/libtommath/logs/invmod.png differ diff --git a/libtommath/logs/mult.log b/libtommath/logs/mult.log index 864de46..33563fc 100644 --- a/libtommath/logs/mult.log +++ b/libtommath/logs/mult.log @@ -1,143 +1,84 @@ -271 580 -390 861 -511 1177 -630 1598 -749 2115 -871 2670 -991 3276 -1111 3987 -1231 4722 -1351 5474 -1471 6281 -1589 7126 -1710 8114 -1831 8988 -1946 10038 -2071 10995 -2188 12286 -2310 13152 -2430 14480 -2549 15521 -2671 17171 -2790 18081 -2911 19754 -3031 20809 -3150 22849 -3269 23757 -3391 25772 -3508 26832 -3631 29304 -3750 30149 -3865 32581 -3988 33644 -4111 36565 -4231 37309 -4351 40152 -4471 41188 -4590 44658 -4710 45256 -4827 48538 -4951 49490 -5070 53472 -5190 53902 -5308 57619 -5431 58509 -5550 63044 -5664 63333 -5791 67542 -5911 68279 -6028 73477 -6150 73475 -6271 78189 -6390 78842 -6510 84691 -6631 84444 -6751 89721 -6871 90186 -6991 96665 -7111 96119 -7231 101937 -7350 102212 -7471 109439 -7591 108491 -7709 114965 -7829 115025 -7951 123002 -8071 121630 -8190 128725 -8311 128536 -8430 137298 -8550 135568 -8671 143265 -8791 142793 -8911 152432 -9030 150202 -9151 158616 -9271 157848 -9391 168374 -9511 165651 -9627 174775 -9750 173375 -9871 185067 -9985 181845 -10111 191708 -10229 190239 -10351 202585 -10467 198704 -10591 209193 -10711 207322 -10831 220842 -10950 215882 -11071 227761 -11191 225501 -11311 239669 -11430 234809 -11550 243511 -11671 255947 -11791 255243 -11906 267828 -12029 263437 -12149 276571 -12270 275579 -12390 288963 -12510 284001 -12631 298196 -12751 297018 -12869 310848 -12990 305369 -13111 319086 -13230 318940 -13349 333685 -13471 327495 -13588 343678 -13711 341817 -13831 357181 -13948 350440 -14071 367526 -14189 365330 -14311 381551 -14429 374149 -14549 392203 -14670 389764 -14791 406761 -14910 398652 -15026 417718 -15150 414733 -15269 432759 -15390 1037071 -15511 1053454 -15631 1069198 -15748 1086164 -15871 1112820 -15991 1129676 -16111 1145924 -16230 1163016 -16345 1179911 -16471 1197048 -16586 1214352 -16711 1232095 -16829 1249338 -16947 1266987 -17071 1284181 -17188 1302521 -17311 1320539 +271 555 +390 855 +508 1161 +631 1605 +749 2117 +871 2687 +991 3329 +1108 4084 +1231 4786 +1351 5624 +1470 6392 +1586 7364 +1710 8218 +1830 9255 +1951 10217 +2067 11461 +2191 12463 +2308 13677 +2430 14800 +2551 16232 +2671 17460 +2791 18899 +2902 20247 +3028 21902 +3151 23240 +3267 24927 +3391 26441 +3511 28277 +3631 29838 +3749 31751 +3869 33673 +3989 35431 +4111 37518 +4231 39426 +4349 41504 +4471 43567 +4591 45786 +4711 47876 +4831 50299 +4951 52427 +5071 54785 +5189 57241 +5307 59730 +5431 62194 +5551 64761 +5670 67322 +5789 70073 +5907 72663 +6030 75437 +6151 78242 +6268 81202 +6389 83948 +6509 86985 +6631 89903 +6747 93184 +6869 96044 +6991 99286 +7109 102395 +7229 105917 +7351 108940 +7470 112490 +7589 115702 +7711 119508 +7831 122632 +7951 126410 +8071 129808 +8190 133895 +8311 137146 +8431 141218 +8549 144732 +8667 149131 +8790 152462 +8911 156754 +9030 160479 +9149 165138 +9271 168601 +9391 173185 +9511 176988 +9627 181976 +9751 185539 +9870 190388 +9991 194335 +10110 199605 +10228 203298 diff --git a/libtommath/logs/mult.png b/libtommath/logs/mult.png index 4f7a4ee..d22e8c8 100644 Binary files a/libtommath/logs/mult.png and b/libtommath/logs/mult.png differ diff --git a/libtommath/logs/mult_kara.log b/libtommath/logs/mult_kara.log index 086feaf..7136c79 100644 --- a/libtommath/logs/mult_kara.log +++ b/libtommath/logs/mult_kara.log @@ -1,33 +1,84 @@ -924 16686 -1146 25334 -1371 35304 -1591 47122 -1820 61500 -2044 75254 -2266 91732 -2492 111656 -2716 129428 -2937 147508 -3164 167758 -3388 188248 -3612 210826 -3836 233814 -4059 256898 -4284 280210 -4508 310372 -4731 333902 -4955 376502 -5179 402854 -5404 432004 -5626 459010 -5849 491868 -6076 520550 -6300 547400 -6524 575968 -6747 608482 -6971 642850 -7196 673670 -7419 710680 -7644 743942 -7868 780394 -8092 817342 +271 560 +391 870 +511 1159 +631 1605 +750 2111 +871 2737 +991 3361 +1111 4054 +1231 4778 +1351 5600 +1471 6404 +1591 7323 +1710 8255 +1831 9239 +1948 10257 +2070 11397 +2190 12531 +2308 13665 +2429 14870 +2550 16175 +2671 17539 +2787 18879 +2911 20350 +3031 21807 +3150 23415 +3270 24897 +3388 26567 +3511 28205 +3627 30076 +3751 31744 +3869 33657 +3991 35425 +4111 37522 +4229 39363 +4351 41503 +4470 43491 +4590 45827 +4711 47795 +4828 50166 +4951 52318 +5070 54911 +5191 57036 +5308 58237 +5431 60248 +5551 62678 +5671 64786 +5791 67294 +5908 69343 +6031 71607 +6151 74166 +6271 76590 +6391 78734 +6511 81175 +6631 83742 +6750 86403 +6868 88873 +6990 91150 +7110 94211 +7228 96922 +7351 99445 +7469 102216 +7589 104968 +7711 108113 +7827 110758 +7950 113714 +8071 116511 +8186 119643 +8310 122679 +8425 125581 +8551 128715 +8669 131778 +8788 135116 +8910 138138 +9031 141628 +9148 144754 +9268 148367 +9391 151551 +9511 155033 +9631 158652 +9751 162125 +9871 165248 +9988 168627 +10111 172427 +10231 176412 diff --git a/libtommath/logs/sqr.log b/libtommath/logs/sqr.log index 0898342..cd29fc5 100644 --- a/libtommath/logs/sqr.log +++ b/libtommath/logs/sqr.log @@ -1,143 +1,84 @@ -271 552 -389 883 -510 1191 -629 1572 -750 1996 -863 2428 -991 2891 -1108 3539 -1231 4182 -1351 4980 -1471 5771 -1590 6551 -1711 7313 -1830 8240 -1951 9184 -2070 10087 -2191 11140 -2311 12111 -2431 13219 -2550 14247 -2669 15353 -2791 16446 -2911 17692 -3029 18848 -3151 20028 -3268 21282 -3391 22696 -3511 23971 -3631 25303 -3751 26675 -3871 28245 -3990 29736 -4111 31124 -4229 32714 -4347 34397 -4471 35877 -4587 37269 -4710 39011 -4831 40884 -4950 42501 -5070 44005 -5191 46026 -5310 48168 -5431 49801 -5551 51385 -5671 53604 -5787 55942 -5910 57757 -6031 59391 -6151 61754 -6271 64234 -6390 66110 -6511 67845 -6627 70474 -6751 73113 -6871 75064 -6990 76940 -7111 79681 -7230 82548 -7351 84597 -7471 86507 -7591 89497 -7711 225216 -7831 232192 -7951 239583 -8071 247302 -8191 255497 -8308 261587 -8431 271490 -8550 279492 -8671 286927 -8790 294680 -8910 302974 -9030 311300 -9150 318635 -9271 326740 -9390 335304 -9511 344297 -9630 352056 -9748 358652 -9870 369723 -9991 379119 -10111 386982 -10231 396075 -10349 404396 -10470 415375 -10590 424146 -10711 433390 -10829 442662 -10950 453238 -11071 462178 -11186 469811 -11311 482529 -11431 493214 -11550 503210 -11671 513486 -11791 524244 -11911 535277 -12031 544872 -12151 555695 -12271 566893 -12391 578385 -12510 588658 -12628 596914 -12751 611324 -12871 623437 -12991 633907 -13110 645605 -13231 657684 -13351 670037 -13471 680939 -13591 693047 -13710 705363 -13829 718178 -13949 727930 -14069 739641 -14190 754817 -14310 768192 -14431 779875 -14551 792655 -14667 802847 -14791 819806 -14911 831684 -15031 844936 -15151 858813 -15270 873037 -15387 882123 -15510 899117 -15631 913465 -15750 927989 -15870 940790 -15991 954948 -16110 969483 -16231 984544 -16350 997837 -16470 1012445 -16590 1027834 -16710 1043032 -16831 1056394 -16951 1071408 -17069 1097263 -17191 1113364 -17306 1123650 +265 562 +389 882 +509 1207 +631 1572 +750 1990 +859 2433 +991 2894 +1109 3555 +1230 4228 +1350 5018 +1471 5805 +1591 6579 +1709 7415 +1829 8329 +1949 9225 +2071 10139 +2188 11239 +2309 12178 +2431 13212 +2551 14294 +2671 15551 +2791 16512 +2911 17718 +3030 18876 +3150 20259 +3270 21374 +3391 22650 +3511 23948 +3631 25493 +3750 26756 +3870 28225 +3989 29705 +4110 31409 +4230 32834 +4351 34327 +4471 35818 +4591 37636 +4711 39228 +4830 40868 +4949 42393 +5070 44541 +5191 46269 +5310 48162 +5429 49728 +5548 51985 +5671 53948 +5791 55885 +5910 57584 +6031 60082 +6150 62239 +6270 64309 +6390 66014 +6511 68766 +6631 71012 +6750 73172 +6871 74952 +6991 77909 +7111 80371 +7231 82666 +7351 84531 +7469 87698 +7589 90318 +7711 225384 +7830 232428 +7950 240009 +8070 246522 +8190 253662 +8310 260961 +8431 269253 +8549 275743 +8671 283769 +8789 290811 +8911 300034 +9030 306873 +9149 315085 +9270 323944 +9390 332390 +9508 337519 +9631 348986 +9749 356904 +9871 367013 +9989 373831 +10108 381033 +10230 393475 diff --git a/libtommath/logs/sqr_kara.log b/libtommath/logs/sqr_kara.log index cafe458..06355a7 100644 --- a/libtommath/logs/sqr_kara.log +++ b/libtommath/logs/sqr_kara.log @@ -1,33 +1,84 @@ -922 11272 -1148 16004 -1370 21958 -1596 28684 -1817 37832 -2044 46386 -2262 56218 -2492 66388 -2716 77478 -2940 89380 -3163 103680 -3385 116274 -3612 135334 -3836 151332 -4057 164938 -4284 183178 -4508 198864 -4731 215222 -4954 231986 -5180 251660 -5404 269414 -5626 288454 -5850 307806 -6076 329458 -6299 347726 -6523 369864 -6748 387832 -6971 413010 -7194 453310 -7415 476936 -7643 497118 -7867 521394 -8091 540224 +271 560 +388 878 +511 1179 +629 1625 +751 1988 +871 2423 +989 2896 +1111 3561 +1231 4209 +1350 5015 +1470 5804 +1591 6556 +1709 7420 +1831 8263 +1951 9173 +2070 10153 +2191 11229 +2310 12167 +2431 13211 +2550 14309 +2671 15524 +2788 16525 +2910 17712 +3028 18822 +3148 20220 +3271 21343 +3391 22652 +3511 23944 +3630 25485 +3750 26778 +3868 28201 +3990 29653 +4111 31393 +4225 32841 +4350 34328 +4471 35786 +4590 37652 +4711 39245 +4830 40876 +4951 42433 +5068 44547 +5191 46321 +5311 48140 +5430 49727 +5550 52034 +5671 53954 +5791 55921 +5908 57597 +6031 60084 +6148 62226 +6270 64295 +6390 66045 +6511 68779 +6629 71003 +6751 73169 +6871 74992 +6991 77895 +7110 80376 +7231 82628 +7351 84468 +7470 87664 +7591 90284 +7711 91352 +7828 93995 +7950 96276 +8071 98691 +8190 101256 +8308 103631 +8431 105222 +8550 108343 +8671 110281 +8787 112764 +8911 115397 +9031 117690 +9151 120266 +9271 122715 +9391 124624 +9510 127937 +9630 130313 +9750 132914 +9871 136129 +9991 138517 +10108 141525 +10231 144225 diff --git a/libtommath/logs/sub.log b/libtommath/logs/sub.log index a42d91e..9f84fa2 100644 --- a/libtommath/logs/sub.log +++ b/libtommath/logs/sub.log @@ -1,16 +1,16 @@ -480 87 -960 114 -1440 139 -1920 159 -2400 204 -2880 228 -3360 250 -3840 273 -4320 300 +480 94 +960 116 +1440 140 +1920 164 +2400 205 +2880 229 +3360 253 +3840 277 +4320 299 4800 321 -5280 348 -5760 370 -6240 393 -6720 420 -7200 444 -7680 466 +5280 345 +5760 371 +6240 395 +6720 419 +7200 441 +7680 465 diff --git a/libtommath/makefile b/libtommath/makefile index 164a0ab..17873ee 100644 --- a/libtommath/makefile +++ b/libtommath/makefile @@ -3,7 +3,7 @@ #Tom St Denis #version of library -VERSION=0.33 +VERSION=0.35 CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare @@ -57,11 +57,13 @@ bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ -bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ +bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o libtommath.a: $(OBJECTS) $(AR) $(ARFLAGS) libtommath.a $(OBJECTS) diff --git a/libtommath/makefile.bcc b/libtommath/makefile.bcc index 775e9ff..647c69a 100644 --- a/libtommath/makefile.bcc +++ b/libtommath/makefile.bcc @@ -27,11 +27,13 @@ bn_mp_prime_is_prime.obj bn_mp_prime_next_prime.obj bn_mp_dr_reduce.obj \ bn_mp_dr_is_modulus.obj bn_mp_dr_setup.obj bn_mp_reduce_setup.obj \ bn_mp_toom_mul.obj bn_mp_toom_sqr.obj bn_mp_div_3.obj bn_s_mp_exptmod.obj \ bn_mp_reduce_2k.obj bn_mp_reduce_is_2k.obj bn_mp_reduce_2k_setup.obj \ +bn_mp_reduce_2k_l.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_2k_setup_l.obj \ bn_mp_radix_smap.obj bn_mp_read_radix.obj bn_mp_toradix.obj bn_mp_radix_size.obj \ bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_cnt_lsb.obj bn_error.obj \ bn_mp_init_multi.obj bn_mp_clear_multi.obj bn_mp_exteuclid.obj bn_mp_toradix_n.obj \ bn_mp_prime_random_ex.obj bn_mp_get_int.obj bn_mp_sqrt.obj bn_mp_is_square.obj \ -bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj +bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj \ +bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin_n.obj TARGET = libtommath.lib diff --git a/libtommath/makefile.cygwin_dll b/libtommath/makefile.cygwin_dll index c90e5d9..85b10c7 100644 --- a/libtommath/makefile.cygwin_dll +++ b/libtommath/makefile.cygwin_dll @@ -32,11 +32,13 @@ bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ -bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ +bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o # make a Windows DLL via Cygwin windll: $(OBJECTS) diff --git a/libtommath/makefile.icc b/libtommath/makefile.icc index 3775b20..e764253 100644 --- a/libtommath/makefile.icc +++ b/libtommath/makefile.icc @@ -59,11 +59,13 @@ bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ -bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ +bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o libtommath.a: $(OBJECTS) $(AR) $(ARFLAGS) libtommath.a $(OBJECTS) diff --git a/libtommath/makefile.msvc b/libtommath/makefile.msvc index cf59943..dbbf9f3 100644 --- a/libtommath/makefile.msvc +++ b/libtommath/makefile.msvc @@ -26,11 +26,13 @@ bn_mp_prime_is_prime.obj bn_mp_prime_next_prime.obj bn_mp_dr_reduce.obj \ bn_mp_dr_is_modulus.obj bn_mp_dr_setup.obj bn_mp_reduce_setup.obj \ bn_mp_toom_mul.obj bn_mp_toom_sqr.obj bn_mp_div_3.obj bn_s_mp_exptmod.obj \ bn_mp_reduce_2k.obj bn_mp_reduce_is_2k.obj bn_mp_reduce_2k_setup.obj \ +bn_mp_reduce_2k_l.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_2k_setup_l.obj \ bn_mp_radix_smap.obj bn_mp_read_radix.obj bn_mp_toradix.obj bn_mp_radix_size.obj \ bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_cnt_lsb.obj bn_error.obj \ bn_mp_init_multi.obj bn_mp_clear_multi.obj bn_mp_exteuclid.obj bn_mp_toradix_n.obj \ bn_mp_prime_random_ex.obj bn_mp_get_int.obj bn_mp_sqrt.obj bn_mp_is_square.obj \ -bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj +bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj \ +bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin_n.obj library: $(OBJECTS) lib /out:tommath.lib $(OBJECTS) diff --git a/libtommath/makefile.shared b/libtommath/makefile.shared index 86a3786..7c35881 100644 --- a/libtommath/makefile.shared +++ b/libtommath/makefile.shared @@ -1,7 +1,7 @@ #Makefile for GCC # #Tom St Denis -VERSION=0:33 +VERSION=0:35 CC = libtool --mode=compile gcc CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare @@ -53,11 +53,14 @@ bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ -bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ +bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o + libtommath.la: $(OBJECTS) libtool --mode=link gcc *.lo -o libtommath.la -rpath $(LIBPATH) -version-info $(VERSION) diff --git a/libtommath/pics/expt_state.tif b/libtommath/pics/expt_state.tif index cb06e8e..0aaee39 100644 Binary files a/libtommath/pics/expt_state.tif and b/libtommath/pics/expt_state.tif differ diff --git a/libtommath/pics/primality.tif b/libtommath/pics/primality.tif index 76d6be3..83aafe0 100644 Binary files a/libtommath/pics/primality.tif and b/libtommath/pics/primality.tif differ diff --git a/libtommath/poster.pdf b/libtommath/poster.pdf index e0b4f84..4c3e365 100644 Binary files a/libtommath/poster.pdf and b/libtommath/poster.pdf differ diff --git a/libtommath/pre_gen/mpi.c b/libtommath/pre_gen/mpi.c index 7d832e7..8ec8a10 100644 --- a/libtommath/pre_gen/mpi.c +++ b/libtommath/pre_gen/mpi.c @@ -69,8 +69,7 @@ char *mp_error_to_string(int code) * Based on slow invmod except this is optimized for the case where b is * odd as per HAC Note 14.64 on pp. 610 */ -int -fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) +int fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) { mp_int x, y, u, v, B, D; int res, neg; @@ -91,7 +90,7 @@ fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) } /* we need y = |a| */ - if ((res = mp_abs (a, &y)) != MP_OKAY) { + if ((res = mp_mod (a, b, &y)) != MP_OKAY) { goto LBL_ERR; } @@ -220,8 +219,7 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL); * * Based on Algorithm 14.32 on pp.601 of HAC. */ -int -fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) { int ix, res, olduse; mp_word W[MP_WARRAY]; @@ -401,8 +399,7 @@ fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) * Based on Algorithm 14.12 on pp.595 of HAC. * */ -int -fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) { int olduse, res, pa, ix, iz; mp_digit W[MP_WARRAY]; @@ -433,7 +430,7 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) tmpx = a->dp + tx; tmpy = b->dp + ty; - /* this is the number of times the loop will iterrate, essentially its + /* this is the number of times the loop will iterrate, essentially while (tx++ < a->used && ty-- >= 0) { ... } */ iy = MIN(a->used-tx, ty+1); @@ -451,16 +448,16 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } /* store final carry */ - W[ix] = _W; + W[ix] = (mp_digit)(_W & MP_MASK); /* setup dest */ olduse = c->used; - c->used = digs; + c->used = pa; { register mp_digit *tmpc; tmpc = c->dp; - for (ix = 0; ix < digs; ix++) { + for (ix = 0; ix < pa+1; ix++) { /* now extract the previous digit [below the carry] */ *tmpc++ = W[ix]; } @@ -504,8 +501,7 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) * * Based on Algorithm 14.12 on pp.595 of HAC. */ -int -fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) { int olduse, res, pa, ix, iz; mp_digit W[MP_WARRAY]; @@ -552,7 +548,7 @@ fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } /* store final carry */ - W[ix] = _W; + W[ix] = (mp_digit)(_W & MP_MASK); /* setup dest */ olduse = c->used; @@ -597,33 +593,14 @@ fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org */ -/* fast squaring - * - * This is the comba method where the columns of the product - * are computed first then the carries are computed. This - * has the effect of making a very simple inner loop that - * is executed the most - * - * W2 represents the outer products and W the inner. - * - * A further optimizations is made because the inner - * products are of the form "A * B * 2". The *2 part does - * not need to be computed until the end which is good - * because 64-bit shifts are slow! - * - * Based on Algorithm 14.16 on pp.597 of HAC. - * - */ /* the jist of squaring... - -you do like mult except the offset of the tmpx [one that starts closer to zero] -can't equal the offset of tmpy. So basically you set up iy like before then you min it with -(ty-tx) so that it never happens. You double all those you add in the inner loop + * you do like mult except the offset of the tmpx [one that + * starts closer to zero] can't equal the offset of tmpy. + * So basically you set up iy like before then you min it with + * (ty-tx) so that it never happens. You double all those + * you add in the inner loop After that loop you do the squares and add them in. - -Remove W2 and don't memset W - */ int fast_s_mp_sqr (mp_int * a, mp_int * b) @@ -658,7 +635,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) tmpx = a->dp + tx; tmpy = a->dp + ty; - /* this is the number of times the loop will iterrate, essentially its + /* this is the number of times the loop will iterrate, essentially while (tx++ < a->used && ty-- >= 0) { ... } */ iy = MIN(a->used-tx, ty+1); @@ -683,7 +660,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) } /* store it */ - W[ix] = _W; + W[ix] = (mp_digit)(_W & MP_MASK); /* make next carry */ W1 = _W >> ((mp_word)DIGIT_BIT); @@ -2467,21 +2444,29 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif } +/* modified diminished radix reduction */ +#if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) + if (mp_reduce_is_2k_l(P) == MP_YES) { + return s_mp_exptmod(G, X, P, Y, 1); + } +#endif + #ifdef BN_MP_DR_IS_MODULUS_C /* is it a DR modulus? */ dr = mp_dr_is_modulus(P); #else + /* default to no */ dr = 0; #endif #ifdef BN_MP_REDUCE_IS_2K_C - /* if not, is it a uDR modulus? */ + /* if not, is it a unrestricted DR modulus? */ if (dr == 0) { dr = mp_reduce_is_2k(P) << 1; } #endif - /* if the modulus is odd or dr != 0 use the fast method */ + /* if the modulus is odd or dr != 0 use the montgomery method */ #ifdef BN_MP_EXPTMOD_FAST_C if (mp_isodd (P) == 1 || dr != 0) { return mp_exptmod_fast (G, X, P, Y, dr); @@ -2489,7 +2474,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif #ifdef BN_S_MP_EXPTMOD_C /* otherwise use the generic Barrett reduction technique */ - return s_mp_exptmod (G, X, P, Y); + return s_mp_exptmod (G, X, P, Y, 0); #else /* no exptmod for evens */ return MP_VAL; @@ -2535,8 +2520,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #define TAB_SIZE 256 #endif -int -mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) +int mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) { mp_int M[TAB_SIZE], res; mp_digit buf, mp; @@ -2887,6 +2871,13 @@ int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3) if ((err = mp_copy(&t3, &v3)) != MP_OKAY) { goto _ERR; } } + /* make sure U3 >= 0 */ + if (u3.sign == MP_NEG) { + mp_neg(&u1, &u1); + mp_neg(&u2, &u2); + mp_neg(&u3, &u3); + } + /* copy result out */ if (U1 != NULL) { mp_exch(U1, &u1); } if (U2 != NULL) { mp_exch(U2, &u2); } @@ -3561,8 +3552,8 @@ int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c) } /* x = a, y = b */ - if ((res = mp_copy (a, &x)) != MP_OKAY) { - goto LBL_ERR; + if ((res = mp_mod(a, b, &x)) != MP_OKAY) { + goto LBL_ERR; } if ((res = mp_copy (b, &y)) != MP_OKAY) { goto LBL_ERR; @@ -4490,7 +4481,6 @@ int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) /* how many bits of last digit does b use */ bits = mp_count_bits (b) % DIGIT_BIT; - if (b->used > 1) { if ((res = mp_2expt (a, (b->used - 1) * DIGIT_BIT + bits - 1)) != MP_OKAY) { return res; @@ -4989,8 +4979,9 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); } - /* store final carry [if any] */ + /* store final carry [if any] and increment ix offset */ *tmpc++ = u; + ++ix; /* now zero digits above the top */ while (ix++ < olduse) { @@ -5202,12 +5193,18 @@ LBL_T1:mp_clear (&t1); int mp_neg (mp_int * a, mp_int * b) { int res; - if ((res = mp_copy (a, b)) != MP_OKAY) { - return res; + if (a != b) { + if ((res = mp_copy (a, b)) != MP_OKAY) { + return res; + } } + if (mp_iszero(b) != MP_YES) { b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; + } else { + b->sign = MP_ZPOS; } + return MP_OKAY; } #endif @@ -5847,7 +5844,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback /* calc the maskOR_msb */ maskOR_msb = 0; - maskOR_msb_offset = (size - 2) >> 3; + maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0; if (flags & LTM_PRIME_2MSB_ON) { maskOR_msb |= 1 << ((size - 2) & 7); } else if (flags & LTM_PRIME_2MSB_OFF) { @@ -5855,7 +5852,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback } /* get the maskOR_lsb */ - maskOR_lsb = 0; + maskOR_lsb = 1; if (flags & LTM_PRIME_BBS) { maskOR_lsb |= 3; } @@ -5949,22 +5946,29 @@ int mp_radix_size (mp_int * a, int radix, int *size) return MP_VAL; } - /* init a copy of the input */ - if ((res = mp_init_copy (&t, a)) != MP_OKAY) { - return res; + if (mp_iszero(a) == MP_YES) { + *size = 2; + return MP_OKAY; } /* digs is the digit count */ digs = 0; /* if it's negative add one for the sign */ - if (t.sign == MP_NEG) { + if (a->sign == MP_NEG) { ++digs; - t.sign = MP_ZPOS; } + /* init a copy of the input */ + if ((res = mp_init_copy (&t, a)) != MP_OKAY) { + return res; + } + + /* force temp to positive */ + t.sign = MP_ZPOS; + /* fetch out all of the digits */ - while (mp_iszero (&t) == 0) { + while (mp_iszero (&t) == MP_NO) { if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { mp_clear (&t); return res; @@ -6038,14 +6042,14 @@ mp_rand (mp_int * a, int digits) /* first place a random non-zero digit */ do { - d = ((mp_digit) abs (rand ())); + d = ((mp_digit) abs (rand ())) & MP_MASK; } while (d == 0); if ((res = mp_add_d (a, d, a)) != MP_OKAY) { return res; } - while (digits-- > 0) { + while (--digits > 0) { if ((res = mp_lshd (a, 1)) != MP_OKAY) { return res; } @@ -6080,7 +6084,7 @@ mp_rand (mp_int * a, int digits) */ /* read a string [ASCII] in a given radix */ -int mp_read_radix (mp_int * a, char *str, int radix) +int mp_read_radix (mp_int * a, const char *str, int radix) { int y, res, neg; char ch; @@ -6263,8 +6267,7 @@ mp_read_unsigned_bin (mp_int * a, unsigned char *b, int c) * precomputed via mp_reduce_setup. * From HAC pp.604 Algorithm 14.42 */ -int -mp_reduce (mp_int * x, mp_int * m, mp_int * mu) +int mp_reduce (mp_int * x, mp_int * m, mp_int * mu) { mp_int q; int res, um = m->used; @@ -6284,11 +6287,11 @@ mp_reduce (mp_int * x, mp_int * m, mp_int * mu) } } else { #ifdef BN_S_MP_MUL_HIGH_DIGS_C - if ((res = s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) { + if ((res = s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) { goto CLEANUP; } #elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) - if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) { + if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) { goto CLEANUP; } #else @@ -6361,8 +6364,7 @@ CLEANUP: */ /* reduces a modulo n where n is of the form 2**p - d */ -int -mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) +int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) { mp_int q; int p, res; @@ -6404,6 +6406,68 @@ ERR: /* End: bn_mp_reduce_2k.c */ +/* Start: bn_mp_reduce_2k_l.c */ +#include +#ifdef BN_MP_REDUCE_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduces a modulo n where n is of the form 2**p - d + This differs from reduce_2k since "d" can be larger + than a single digit. +*/ +int mp_reduce_2k_l(mp_int *a, mp_int *n, mp_int *d) +{ + mp_int q; + int p, res; + + if ((res = mp_init(&q)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(n); +top: + /* q = a/2**p, a = a mod 2**p */ + if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { + goto ERR; + } + + /* q = q * d */ + if ((res = mp_mul(&q, d, &q)) != MP_OKAY) { + goto ERR; + } + + /* a = a + q */ + if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { + goto ERR; + } + + if (mp_cmp_mag(a, n) != MP_LT) { + s_mp_sub(a, n, a); + goto top; + } + +ERR: + mp_clear(&q); + return res; +} + +#endif + +/* End: bn_mp_reduce_2k_l.c */ + /* Start: bn_mp_reduce_2k_setup.c */ #include #ifdef BN_MP_REDUCE_2K_SETUP_C @@ -6423,8 +6487,7 @@ ERR: */ /* determines the setup value */ -int -mp_reduce_2k_setup(mp_int *a, mp_digit *d) +int mp_reduce_2k_setup(mp_int *a, mp_digit *d) { int res, p; mp_int tmp; @@ -6452,6 +6515,50 @@ mp_reduce_2k_setup(mp_int *a, mp_digit *d) /* End: bn_mp_reduce_2k_setup.c */ +/* Start: bn_mp_reduce_2k_setup_l.c */ +#include +#ifdef BN_MP_REDUCE_2K_SETUP_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines the setup value */ +int mp_reduce_2k_setup_l(mp_int *a, mp_int *d) +{ + int res; + mp_int tmp; + + if ((res = mp_init(&tmp)) != MP_OKAY) { + return res; + } + + if ((res = mp_2expt(&tmp, mp_count_bits(a))) != MP_OKAY) { + goto ERR; + } + + if ((res = s_mp_sub(&tmp, a, d)) != MP_OKAY) { + goto ERR; + } + +ERR: + mp_clear(&tmp); + return res; +} +#endif + +/* End: bn_mp_reduce_2k_setup_l.c */ + /* Start: bn_mp_reduce_is_2k.c */ #include #ifdef BN_MP_REDUCE_IS_2K_C @@ -6477,9 +6584,9 @@ int mp_reduce_is_2k(mp_int *a) mp_digit iz; if (a->used == 0) { - return 0; + return MP_NO; } else if (a->used == 1) { - return 1; + return MP_YES; } else if (a->used > 1) { iy = mp_count_bits(a); iz = 1; @@ -6488,7 +6595,7 @@ int mp_reduce_is_2k(mp_int *a) /* Test every bit from the second digit up, must be 1 */ for (ix = DIGIT_BIT; ix < iy; ix++) { if ((a->dp[iw] & iz) == 0) { - return 0; + return MP_NO; } iz <<= 1; if (iz > (mp_digit)MP_MASK) { @@ -6497,13 +6604,57 @@ int mp_reduce_is_2k(mp_int *a) } } } - return 1; + return MP_YES; } #endif /* End: bn_mp_reduce_is_2k.c */ +/* Start: bn_mp_reduce_is_2k_l.c */ +#include +#ifdef BN_MP_REDUCE_IS_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if reduce_2k_l can be used */ +int mp_reduce_is_2k_l(mp_int *a) +{ + int ix, iy; + + if (a->used == 0) { + return MP_NO; + } else if (a->used == 1) { + return MP_YES; + } else if (a->used > 1) { + /* if more than half of the digits are -1 we're sold */ + for (iy = ix = 0; ix < a->used; ix++) { + if (a->dp[ix] == MP_MASK) { + ++iy; + } + } + return (iy >= (a->used/2)) ? MP_YES : MP_NO; + + } + return MP_NO; +} + +#endif + +/* End: bn_mp_reduce_is_2k_l.c */ + /* Start: bn_mp_reduce_setup.c */ #include #ifdef BN_MP_REDUCE_SETUP_C @@ -7138,8 +7289,7 @@ mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) */ /* store in signed [big endian] format */ -int -mp_to_signed_bin (mp_int * a, unsigned char *b) +int mp_to_signed_bin (mp_int * a, unsigned char *b) { int res; @@ -7153,6 +7303,37 @@ mp_to_signed_bin (mp_int * a, unsigned char *b) /* End: bn_mp_to_signed_bin.c */ +/* Start: bn_mp_to_signed_bin_n.c */ +#include +#ifdef BN_MP_TO_SIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in signed [big endian] format */ +int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_signed_bin_size(a)) { + return MP_VAL; + } + *outlen = mp_signed_bin_size(a); + return mp_to_signed_bin(a, b); +} +#endif + +/* End: bn_mp_to_signed_bin_n.c */ + /* Start: bn_mp_to_unsigned_bin.c */ #include #ifdef BN_MP_TO_UNSIGNED_BIN_C @@ -7172,8 +7353,7 @@ mp_to_signed_bin (mp_int * a, unsigned char *b) */ /* store in unsigned [big endian] format */ -int -mp_to_unsigned_bin (mp_int * a, unsigned char *b) +int mp_to_unsigned_bin (mp_int * a, unsigned char *b) { int x, res; mp_int t; @@ -7202,6 +7382,37 @@ mp_to_unsigned_bin (mp_int * a, unsigned char *b) /* End: bn_mp_to_unsigned_bin.c */ +/* Start: bn_mp_to_unsigned_bin_n.c */ +#include +#ifdef BN_MP_TO_UNSIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in unsigned [big endian] format */ +int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_unsigned_bin_size(a)) { + return MP_VAL; + } + *outlen = mp_unsigned_bin_size(a); + return mp_to_unsigned_bin(a, b); +} +#endif + +/* End: bn_mp_to_unsigned_bin_n.c */ + /* Start: bn_mp_toom_mul.c */ #include #ifdef BN_MP_TOOM_MUL_C @@ -7222,9 +7433,10 @@ mp_to_unsigned_bin (mp_int * a, unsigned char *b) /* multiplication using the Toom-Cook 3-way algorithm * - * Much more complicated than Karatsuba but has a lower asymptotic running time of - * O(N**1.464). This algorithm is only particularly useful on VERY large - * inputs (we're talking 1000s of digits here...). + * Much more complicated than Karatsuba but has a lower + * asymptotic running time of O(N**1.464). This algorithm is + * only particularly useful on VERY large inputs + * (we're talking 1000s of digits here...). */ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) { @@ -7894,8 +8106,7 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) */ /* get the size for an unsigned equivalent */ -int -mp_unsigned_bin_size (mp_int * a) +int mp_unsigned_bin_size (mp_int * a) { int size = mp_count_bits (a); return (size / 8 + ((size & 7) != 0 ? 1 : 0)); @@ -7944,7 +8155,7 @@ mp_xor (mp_int * a, mp_int * b, mp_int * c) } for (ix = 0; ix < px; ix++) { - + t.dp[ix] ^= x->dp[ix]; } mp_clamp (&t); mp_exch (c, &t); @@ -7974,12 +8185,18 @@ mp_xor (mp_int * a, mp_int * b, mp_int * c) */ /* set to zero */ -void -mp_zero (mp_int * a) +void mp_zero (mp_int * a) { + int n; + mp_digit *tmp; + a->sign = MP_ZPOS; a->used = 0; - memset (a->dp, 0, sizeof (mp_digit) * a->alloc); + + tmp = a->dp; + for (n = 0; n < a->alloc; n++) { + *tmp++ = 0; + } } #endif @@ -8218,11 +8435,12 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) #define TAB_SIZE 256 #endif -int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) { mp_int M[TAB_SIZE], res, mu; mp_digit buf; int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + int (*redux)(mp_int*,mp_int*,mp_int*); /* find window size */ x = mp_count_bits (X); @@ -8269,9 +8487,18 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_init (&mu)) != MP_OKAY) { goto LBL_M; } - if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { - goto LBL_MU; - } + + if (redmode == 0) { + if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce; + } else { + if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce_2k_l; + } /* create M table * @@ -8293,11 +8520,14 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) } for (x = 0; x < (winsize - 1); x++) { + /* square it */ if ((err = mp_sqr (&M[1 << (winsize - 1)], &M[1 << (winsize - 1)])) != MP_OKAY) { goto LBL_MU; } - if ((err = mp_reduce (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { + + /* reduce modulo P */ + if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { goto LBL_MU; } } @@ -8309,7 +8539,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) { goto LBL_MU; } - if ((err = mp_reduce (&M[x], P, &mu)) != MP_OKAY) { + if ((err = redux (&M[x], P, &mu)) != MP_OKAY) { goto LBL_MU; } } @@ -8358,7 +8588,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } continue; @@ -8375,7 +8605,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } } @@ -8384,7 +8614,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } @@ -8402,7 +8632,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } @@ -8412,7 +8642,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } } @@ -8456,8 +8686,7 @@ LBL_M: * HAC pp. 595, Algorithm 14.12 Modified so you can control how * many digits of output are created. */ -int -s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) { mp_int t; int res, pa, pb, ix, iy; @@ -8625,8 +8854,7 @@ s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) */ /* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ -int -s_mp_sqr (mp_int * a, mp_int * b) +int s_mp_sqr (mp_int * a, mp_int * b) { mp_int t; int res, ix, iy, pa; @@ -8803,11 +9031,12 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) CPU /Compiler /MUL CUTOFF/SQR CUTOFF ------------------------------------------------------------- Intel P4 Northwood /GCC v3.4.1 / 88/ 128/LTM 0.32 ;-) + AMD Athlon64 /GCC v3.4.4 / 74/ 124/LTM 0.34 */ -int KARATSUBA_MUL_CUTOFF = 88, /* Min. number of digits before Karatsuba multiplication is used. */ - KARATSUBA_SQR_CUTOFF = 128, /* Min. number of digits before Karatsuba squaring is used. */ +int KARATSUBA_MUL_CUTOFF = 74, /* Min. number of digits before Karatsuba multiplication is used. */ + KARATSUBA_SQR_CUTOFF = 124, /* Min. number of digits before Karatsuba squaring is used. */ TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ TOOM_SQR_CUTOFF = 400; diff --git a/libtommath/tommath.h b/libtommath/tommath.h index 7cc92c2..bcb9d86 100644 --- a/libtommath/tommath.h +++ b/libtommath/tommath.h @@ -429,6 +429,15 @@ int mp_reduce_2k_setup(mp_int *a, mp_digit *d); /* reduces a modulo b where b is of the form 2**p - k [0 <= a] */ int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d); +/* returns true if a can be reduced with mp_reduce_2k_l */ +int mp_reduce_is_2k_l(mp_int *a); + +/* determines k value for 2k reduction */ +int mp_reduce_2k_setup_l(mp_int *a, mp_int *d); + +/* reduces a modulo b where b is of the form 2**p - k [0 <= a] */ +int mp_reduce_2k_l(mp_int *a, mp_int *n, mp_int *d); + /* d = a**b (mod c) */ int mp_exptmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d); @@ -511,12 +520,14 @@ int mp_count_bits(mp_int *a); int mp_unsigned_bin_size(mp_int *a); int mp_read_unsigned_bin(mp_int *a, unsigned char *b, int c); int mp_to_unsigned_bin(mp_int *a, unsigned char *b); +int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); int mp_signed_bin_size(mp_int *a); int mp_read_signed_bin(mp_int *a, unsigned char *b, int c); int mp_to_signed_bin(mp_int *a, unsigned char *b); +int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); -int mp_read_radix(mp_int *a, char *str, int radix); +int mp_read_radix(mp_int *a, const char *str, int radix); int mp_toradix(mp_int *a, char *str, int radix); int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen); int mp_radix_size(mp_int *a, int radix, int *size); @@ -554,7 +565,7 @@ int fast_mp_invmod(mp_int *a, mp_int *b, mp_int *c); int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c); int fast_mp_montgomery_reduce(mp_int *a, mp_int *m, mp_digit mp); int mp_exptmod_fast(mp_int *G, mp_int *X, mp_int *P, mp_int *Y, int mode); -int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y); +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int mode); void bn_reverse(unsigned char *s, int len); extern const char *mp_s_rmap; diff --git a/libtommath/tommath.pdf b/libtommath/tommath.pdf index 88e2dc7..c486d29 100644 Binary files a/libtommath/tommath.pdf and b/libtommath/tommath.pdf differ diff --git a/libtommath/tommath.src b/libtommath/tommath.src index 6ee842d..7a53860 100644 --- a/libtommath/tommath.src +++ b/libtommath/tommath.src @@ -49,7 +49,7 @@ \begin{document} \frontmatter \pagestyle{empty} -\title{Implementing Multiple Precision Arithmetic \\ ~ \\ Draft Edition } +\title{Multi--Precision Math} \author{\mbox{ %\begin{small} \begin{tabular}{c} @@ -66,7 +66,7 @@ QUALCOMM Australia \\ } } \maketitle -This text has been placed in the public domain. This text corresponds to the v0.30 release of the +This text has been placed in the public domain. This text corresponds to the v0.35 release of the LibTomMath project. \begin{alltt} @@ -85,66 +85,32 @@ This text is formatted to the international B5 paper size of 176mm wide by 250mm \tableofcontents \listoffigures -\chapter*{Prefaces to the Draft Edition} -I started this text in April 2003 to complement my LibTomMath library. That is, explain how to implement the functions -contained in LibTomMath. The goal is to have a textbook that any Computer Science student can use when implementing their -own multiple precision arithmetic. The plan I wanted to follow was flesh out all the -ideas and concepts I had floating around in my head and then work on it afterwards refining a little bit at a time. Chance -would have it that I ended up with my summer off from Algonquin College and I was given four months solid to work on the -text. - -Choosing to not waste any time I dove right into the project even before my spring semester was finished. I wrote a bit -off and on at first. The moment my exams were finished I jumped into long 12 to 16 hour days. The result after only -a couple of months was a ten chapter, three hundred page draft that I quickly had distributed to anyone who wanted -to read it. I had Jean-Luc Cooke print copies for me and I brought them to Crypto'03 in Santa Barbara. So far I have -managed to grab a certain level of attention having people from around the world ask me for copies of the text was certain -rewarding. - -Now we are past December 2003. By this time I had pictured that I would have at least finished my second draft of the text. -Currently I am far off from this goal. I've done partial re-writes of chapters one, two and three but they are not even -finished yet. I haven't given up on the project, only had some setbacks. First O'Reilly declined to publish the text then -Addison-Wesley and Greg is tried another which I don't know the name of. However, at this point I want to focus my energy -onto finishing the book not securing a contract. - -So why am I writing this text? It seems like a lot of work right? Most certainly it is a lot of work writing a textbook. -Even the simplest introductory material has to be lined with references and figures. A lot of the text has to be re-written -from point form to prose form to ensure an easier read. Why am I doing all this work for free then? Simple. My philosophy -is quite simply ``Open Source. Open Academia. Open Minds'' which means that to achieve a goal of open minds, that is, -people willing to accept new ideas and explore the unknown you have to make available material they can access freely -without hinderance. - -I've been writing free software since I was about sixteen but only recently have I hit upon software that people have come -to depend upon. I started LibTomCrypt in December 2001 and now several major companies use it as integral portions of their -software. Several educational institutions use it as a matter of course and many freelance developers use it as -part of their projects. To further my contributions I started the LibTomMath project in December 2002 aimed at providing -multiple precision arithmetic routines that students could learn from. That is write routines that are not only easy -to understand and follow but provide quite impressive performance considering they are all in standard portable ISO C. - -The second leg of my philosophy is ``Open Academia'' which is where this textbook comes in. In the end, when all is -said and done the text will be useable by educational institutions as a reference on multiple precision arithmetic. - -At this time I feel I should share a little information about myself. The most common question I was asked at -Crypto'03, perhaps just out of professional courtesy, was which school I either taught at or attended. The unfortunate -truth is that I neither teach at or attend a school of academic reputation. I'm currently at Algonquin College which -is what I'd like to call ``somewhat academic but mostly vocational'' college. In otherwords, job training. - -I'm a 21 year old computer science student mostly self-taught in the areas I am aware of (which includes a half-dozen -computer science fields, a few fields of mathematics and some English). I look forward to teaching someday but I am -still far off from that goal. - -Now it would be improper for me to not introduce the rest of the texts co-authors. While they are only contributing -corrections and editorial feedback their support has been tremendously helpful in presenting the concepts laid out -in the text so far. Greg has always been there for me. He has tracked my LibTom projects since their inception and even -sent cheques to help pay tuition from time to time. His background has provided a wonderful source to bounce ideas off -of and improve the quality of my writing. Mads is another fellow who has just ``been there''. I don't even recall what -his interest in the LibTom projects is but I'm definitely glad he has been around. His ability to catch logical errors -in my written English have saved me on several occasions to say the least. - -What to expect next? Well this is still a rough draft. I've only had the chance to update a few chapters. However, I've -been getting the feeling that people are starting to use my text and I owe them some updated material. My current tenative -plan is to edit one chapter every two weeks starting January 4th. It seems insane but my lower course load at college -should provide ample time. By Crypto'04 I plan to have a 2nd draft of the text polished and ready to hand out to as many -people who will take it. +\chapter*{Prefaces} +When I tell people about my LibTom projects and that I release them as public domain they are often puzzled. +They ask why I did it and especially why I continue to work on them for free. The best I can explain it is ``Because I can.'' +Which seems odd and perhaps too terse for adult conversation. I often qualify it with ``I am able, I am willing.'' which +perhaps explains it better. I am the first to admit there is not anything that special with what I have done. Perhaps +others can see that too and then we would have a society to be proud of. My LibTom projects are what I am doing to give +back to society in the form of tools and knowledge that can help others in their endeavours. + +I started writing this book because it was the most logical task to further my goal of open academia. The LibTomMath source +code itself was written to be easy to follow and learn from. There are times, however, where pure C source code does not +explain the algorithms properly. Hence this book. The book literally starts with the foundation of the library and works +itself outwards to the more complicated algorithms. The use of both pseudo--code and verbatim source code provides a duality +of ``theory'' and ``practice'' that the computer science students of the world shall appreciate. I never deviate too far +from relatively straightforward algebra and I hope that this book can be a valuable learning asset. + +This book and indeed much of the LibTom projects would not exist in their current form if it was not for a plethora +of kind people donating their time, resources and kind words to help support my work. Writing a text of significant +length (along with the source code) is a tiresome and lengthy process. Currently the LibTom project is four years old, +comprises of literally thousands of users and over 100,000 lines of source code, TeX and other material. People like Mads and Greg +were there at the beginning to encourage me to work well. It is amazing how timely validation from others can boost morale to +continue the project. Definitely my parents were there for me by providing room and board during the many months of work in 2003. + +To my many friends whom I have met through the years I thank you for the good times and the words of encouragement. I hope I +honour your kind gestures with this project. + +Open Source. Open Academia. Open Minds. \begin{flushright} Tom St Denis \end{flushright} @@ -937,7 +903,7 @@ assumed to contain undefined values they are initially set to zero. EXAM,bn_mp_grow.c -A quick optimization is to first determine if a memory re-allocation is required at all. The if statement (line @23,if@) checks +A quick optimization is to first determine if a memory re-allocation is required at all. The if statement (line @24,alloc@) checks if the \textbf{alloc} member of the mp\_int is smaller than the requested digit count. If the count is not larger than \textbf{alloc} the function skips the re-allocation part thus saving time. @@ -1310,7 +1276,7 @@ After the function is completed, all of the digits are zeroed, the \textbf{used} With the mp\_int representation of an integer, calculating the absolute value is trivial. The mp\_abs algorithm will compute the absolute value of an mp\_int. -\newpage\begin{figure}[here] +\begin{figure}[here] \begin{center} \begin{tabular}{l} \hline Algorithm \textbf{mp\_abs}. \\ @@ -1335,6 +1301,9 @@ logic to handle it. EXAM,bn_mp_abs.c +This fairly trivial algorithm first eliminates non--required duplications (line @27,a != b@) and then sets the +\textbf{sign} flag to \textbf{MP\_ZPOS}. + \subsection{Integer Negation} With the mp\_int representation of an integer, calculating the negation is also trivial. The mp\_neg algorithm will compute the negative of an mp\_int input. @@ -1368,11 +1337,15 @@ zero as negative. EXAM,bn_mp_neg.c +Like mp\_abs() this function avoids non--required duplications (line @21,a != b@) and then sets the sign. We +have to make sure that only non--zero values get a \textbf{sign} of \textbf{MP\_NEG}. If the mp\_int is zero +than the \textbf{sign} is hard--coded to \textbf{MP\_ZPOS}. + \section{Small Constants} \subsection{Setting Small Constants} Often a mp\_int must be set to a relatively small value such as $1$ or $2$. For these cases the mp\_set algorithm is useful. -\begin{figure}[here] +\newpage\begin{figure}[here] \begin{center} \begin{tabular}{l} \hline Algorithm \textbf{mp\_set}. \\ @@ -1397,11 +1370,14 @@ single digit is set (\textit{modulo $\beta$}) and the \textbf{used} count is adj EXAM,bn_mp_set.c -Line @21,mp_zero@ calls mp\_zero() to clear the mp\_int and reset the sign. Line @22,MP_MASK@ copies the digit -into the least significant location. Note the usage of a new constant \textbf{MP\_MASK}. This constant is used to quickly -reduce an integer modulo $\beta$. Since $\beta$ is of the form $2^k$ for any suitable $k$ it suffices to perform a binary AND with -$MP\_MASK = 2^k - 1$ to perform the reduction. Finally line @23,a->used@ will set the \textbf{used} member with respect to the -digit actually set. This function will always make the integer positive. +First we zero (line @21,mp_zero@) the mp\_int to make sure that the other members are initialized for a +small positive constant. mp\_zero() ensures that the \textbf{sign} is positive and the \textbf{used} count +is zero. Next we set the digit and reduce it modulo $\beta$ (line @22,MP_MASK@). After this step we have to +check if the resulting digit is zero or not. If it is not then we set the \textbf{used} count to one, otherwise +to zero. + +We can quickly reduce modulo $\beta$ since it is of the form $2^k$ and a quick binary AND operation with +$2^k - 1$ will perform the same operation. One important limitation of this function is that it will only set one digit. The size of a digit is not fixed, meaning source that uses this function should take that into account. Only trivially small constants can be set using this function. @@ -1503,10 +1479,12 @@ the zero'th digit. If after all of the digits have been compared, no difference EXAM,bn_mp_cmp_mag.c -The two if statements on lines @24,if@ and @28,if@ compare the number of digits in the two inputs. These two are performed before all of the digits -are compared since it is a very cheap test to perform and can potentially save considerable time. The implementation given is also not valid -without those two statements. $b.alloc$ may be smaller than $a.used$, meaning that undefined values will be read from $b$ past the end of the -array of digits. +The two if statements (lines @24,if@ and @28,if@) compare the number of digits in the two inputs. These two are +performed before all of the digits are compared since it is a very cheap test to perform and can potentially save +considerable time. The implementation given is also not valid without those two statements. $b.alloc$ may be +smaller than $a.used$, meaning that undefined values will be read from $b$ past the end of the array of digits. + + \subsection{Signed Comparisons} Comparing with sign considerations is also fairly critical in several routines (\textit{division for example}). Based on an unsigned magnitude @@ -1539,9 +1517,9 @@ $\vert a \vert < \vert b \vert$. Step number four will compare the two when the EXAM,bn_mp_cmp.c -The two if statements on lines @22,if@ and @26,if@ perform the initial sign comparison. If the signs are not the equal then which ever -has the positive sign is larger. At line @30,if@, the inputs are compared based on magnitudes. If the signs were both negative then -the unsigned comparison is performed in the opposite direction (\textit{line @31,mp_cmp_mag@}). Otherwise, the signs are assumed to +The two if statements (lines @22,if@ and @26,if@) perform the initial sign comparison. If the signs are not the equal then which ever +has the positive sign is larger. The inputs are compared (line @30,if@) based on magnitudes. If the signs were both +negative then the unsigned comparison is performed in the opposite direction (line @31,mp_cmp_mag@). Otherwise, the signs are assumed to be both positive and a forward direction unsigned comparison is performed. \section*{Exercises} @@ -1664,19 +1642,21 @@ The final carry is stored in $c_{max}$ and digits above $max$ upto $oldused$ are EXAM,bn_s_mp_add.c -Lines @27,if@ to @35,}@ perform the initial sorting of the inputs and determine the $min$ and $max$ variables. Note that $x$ is a pointer to a -mp\_int assigned to the largest input, in effect it is a local alias. Lines @37,init@ to @42,}@ ensure that the destination is grown to -accomodate the result of the addition. +We first sort (lines @27,if@ to @35,}@) the inputs based on magnitude and determine the $min$ and $max$ variables. +Note that $x$ is a pointer to an mp\_int assigned to the largest input, in effect it is a local alias. Next we +grow the destination (@37,init@ to @42,}@) ensure that it can accomodate the result of the addition. Similar to the implementation of mp\_copy this function uses the braced code and local aliases coding style. The three aliases that are on lines @56,tmpa@, @59,tmpb@ and @62,tmpc@ represent the two inputs and destination variables respectively. These aliases are used to ensure the compiler does not have to dereference $a$, $b$ or $c$ (respectively) to access the digits of the respective mp\_int. -The initial carry $u$ is cleared on line @65,u = 0@, note that $u$ is of type mp\_digit which ensures type compatibility within the -implementation. The initial addition loop begins on line @66,for@ and ends on line @75,}@. Similarly the conditional addition loop -begins on line @81,for@ and ends on line @90,}@. The addition is finished with the final carry being stored in $tmpc$ on line @94,tmpc++@. -Note the ``++'' operator on the same line. After line @94,tmpc++@ $tmpc$ will point to the $c.used$'th digit of the mp\_int $c$. This is useful -for the next loop on lines @97,for@ to @99,}@ which set any old upper digits to zero. +The initial carry $u$ will be cleared (line @65,u = 0@), note that $u$ is of type mp\_digit which ensures type +compatibility within the implementation. The initial addition (line @66,for@ to @75,}@) adds digits from +both inputs until the smallest input runs out of digits. Similarly the conditional addition loop +(line @81,for@ to @90,}@) adds the remaining digits from the larger of the two inputs. The addition is finished +with the final carry being stored in $tmpc$ (line @94,tmpc++@). Note the ``++'' operator within the same expression. +After line @94,tmpc++@, $tmpc$ will point to the $c.used$'th digit of the mp\_int $c$. This is useful +for the next loop (line @97,for@ to @99,}@) which set any old upper digits to zero. \subsection{Low Level Subtraction} The low level unsigned subtraction algorithm is very similar to the low level unsigned addition algorithm. The principle difference is that the @@ -1692,7 +1672,7 @@ this algorithm we will assume that the variable $\gamma$ represents the number o mp\_digit (\textit{this implies $2^{\gamma} > \beta$}). For example, the default for LibTomMath is to use a ``unsigned long'' for the mp\_digit ``type'' while $\beta = 2^{28}$. In ISO C an ``unsigned long'' -data type must be able to represent $0 \le x < 2^{32}$ meaning that in this case $\gamma = 32$. +data type must be able to represent $0 \le x < 2^{32}$ meaning that in this case $\gamma \ge 32$. \newpage\begin{figure}[!here] \begin{center} @@ -1759,20 +1739,23 @@ If $b$ has a smaller magnitude than $a$ then step 9 will force the carry and cop EXAM,bn_s_mp_sub.c -Line @24,min@ and @25,max@ perform the initial hardcoded sorting of the inputs. In reality the $min$ and $max$ variables are only aliases and are only -used to make the source code easier to read. Again the pointer alias optimization is used within this algorithm. Lines @42,tmpa@, @43,tmpb@ and @44,tmpc@ initialize the aliases for -$a$, $b$ and $c$ respectively. +Like low level addition we ``sort'' the inputs. Except in this case the sorting is hardcoded +(lines @24,min@ and @25,max@). In reality the $min$ and $max$ variables are only aliases and are only +used to make the source code easier to read. Again the pointer alias optimization is used +within this algorithm. The aliases $tmpa$, $tmpb$ and $tmpc$ are initialized +(lines @42,tmpa@, @43,tmpb@ and @44,tmpc@) for $a$, $b$ and $c$ respectively. -The first subtraction loop occurs on lines @47,u = 0@ through @61,}@. The theory behind the subtraction loop is exactly the same as that for -the addition loop. As remarked earlier there is an implementation reason for using the ``awkward'' method of extracting the carry -(\textit{see line @57, >>@}). The traditional method for extracting the carry would be to shift by $lg(\beta)$ positions and logically AND -the least significant bit. The AND operation is required because all of the bits above the $\lg(\beta)$'th bit will be set to one after a carry -occurs from subtraction. This carry extraction requires two relatively cheap operations to extract the carry. The other method is to simply -shift the most significant bit to the least significant bit thus extracting the carry with a single cheap operation. This optimization only works on -twos compliment machines which is a safe assumption to make. +The first subtraction loop (lines @47,u = 0@ through @61,}@) subtract digits from both inputs until the smaller of +the two inputs has been exhausted. As remarked earlier there is an implementation reason for using the ``awkward'' +method of extracting the carry (line @57, >>@). The traditional method for extracting the carry would be to shift +by $lg(\beta)$ positions and logically AND the least significant bit. The AND operation is required because all of +the bits above the $\lg(\beta)$'th bit will be set to one after a carry occurs from subtraction. This carry +extraction requires two relatively cheap operations to extract the carry. The other method is to simply shift the +most significant bit to the least significant bit thus extracting the carry with a single cheap operation. This +optimization only works on twos compliment machines which is a safe assumption to make. -If $a$ has a larger magnitude than $b$ an additional loop (\textit{see lines @64,for@ through @73,}@}) is required to propagate the carry through -$a$ and copy the result to $c$. +If $a$ has a larger magnitude than $b$ an additional loop (lines @64,for@ through @73,}@) is required to propagate +the carry through $a$ and copy the result to $c$. \subsection{High Level Addition} Now that both lower level addition and subtraction algorithms have been established an effective high level signed addition algorithm can be @@ -2098,10 +2081,11 @@ FIGU,sliding_window,Sliding Window Movement EXAM,bn_mp_lshd.c -The if statement on line @24,if@ ensures that the $b$ variable is greater than zero. The \textbf{used} count is incremented by $b$ before -the copy loop begins. This elminates the need for an additional variable in the for loop. The variable $top$ on line @42,top@ is an alias -for the leading digit while $bottom$ on line @45,bottom@ is an alias for the trailing edge. The aliases form a window of exactly $b$ digits -over the input. +The if statement (line @24,if@) ensures that the $b$ variable is greater than zero since we do not interpret negative +shift counts properly. The \textbf{used} count is incremented by $b$ before the copy loop begins. This elminates +the need for an additional variable in the for loop. The variable $top$ (line @42,top@) is an alias +for the leading digit while $bottom$ (line @45,bottom@) is an alias for the trailing edge. The aliases form a +window of exactly $b$ digits over the input. \subsection{Division by $x$} @@ -2151,9 +2135,9 @@ Once the window copy is complete the upper digits must be zeroed and the \textbf EXAM,bn_mp_rshd.c -The only noteworthy element of this routine is the lack of a return type. - --- Will update later to give it a return type...Tom +The only noteworthy element of this routine is the lack of a return type since it cannot fail. Like mp\_lshd() we +form a sliding window except we copy in the other direction. After the window (line @59,for (;@) we then zero +the upper digits of the input to make sure the result is correct. \section{Powers of Two} @@ -2214,7 +2198,15 @@ complete. It is possible to optimize this algorithm down to a $O(n)$ algorithm EXAM,bn_mp_mul_2d.c -Notes to be revised when code is updated. -- Tom +The shifting is performed in--place which means the first step (line @24,a != c@) is to copy the input to the +destination. We avoid calling mp\_copy() by making sure the mp\_ints are different. The destination then +has to be grown (line @31,grow@) to accomodate the result. + +If the shift count $b$ is larger than $lg(\beta)$ then a call to mp\_lshd() is used to handle all of the multiples +of $lg(\beta)$. Leaving only a remaining shift of $lg(\beta) - 1$ or fewer bits left. Inside the actual shift +loop (lines @45,if@ to @76,}@) we make use of pre--computed values $shift$ and $mask$. These are used to +extract the carry bit(s) to pass into the next iteration of the loop. The $r$ and $rr$ variables form a +chain between consecutive iterations to propagate the carry. \subsection{Division by Power of Two} @@ -2263,7 +2255,8 @@ ignored by passing \textbf{NULL} as the pointer to the mp\_int variable. The result of the remainder operation until the end. This allows $d$ and $a$ to represent the same mp\_int without modifying $a$ before the quotient is obtained. -The remainder of the source code is essentially the same as the source code for mp\_mul\_2d. (-- Fix this paragraph up later, Tom). +The remainder of the source code is essentially the same as the source code for mp\_mul\_2d. The only significant difference is +the direction of the shifts. \subsection{Remainder of Division by Power of Two} @@ -2306,7 +2299,13 @@ is copied to $b$, leading digits are removed and the remaining leading digit is EXAM,bn_mp_mod_2d.c --- Add comments later, Tom. +We first avoid cases of $b \le 0$ by simply mp\_zero()'ing the destination in such cases. Next if $2^b$ is larger +than the input we just mp\_copy() the input and return right away. After this point we know we must actually +perform some work to produce the remainder. + +Recalling that reducing modulo $2^k$ and a binary ``and'' with $2^k - 1$ are numerically equivalent we can quickly reduce +the number. First we zero any digits above the last digit in $2^b$ (line @41,for@). Next we reduce the +leading digit of both (line @45,&=@) and then mp\_clamp(). \section*{Exercises} \begin{tabular}{cl} @@ -2464,33 +2463,46 @@ exceed the precision requested. EXAM,bn_s_mp_mul_digs.c -Lines @31,if@ to @35,}@ determine if the Comba method can be used first. The conditions for using the Comba routine are that min$(a.used, b.used) < \delta$ and -the number of digits of output is less than \textbf{MP\_WARRAY}. This new constant is used to control -the stack usage in the Comba routines. By default it is set to $\delta$ but can be reduced when memory is at a premium. +First we determine (line @30,if@) if the Comba method can be used first since it's faster. The conditions for +sing the Comba routine are that min$(a.used, b.used) < \delta$ and the number of digits of output is less than +\textbf{MP\_WARRAY}. This new constant is used to control the stack usage in the Comba routines. By default it is +set to $\delta$ but can be reduced when memory is at a premium. + +If we cannot use the Comba method we proceed to setup the baseline routine. We allocate the the destination mp\_int +$t$ (line @36,init@) to the exact size of the output to avoid further re--allocations. At this point we now +begin the $O(n^2)$ loop. -Of particular importance is the calculation of the $ix+iy$'th column on lines @64,mp_word@, @65,mp_word@ and @66,mp_word@. Note how all of the -variables are cast to the type \textbf{mp\_word}, which is also the type of variable $\hat r$. That is to ensure that double precision operations -are used instead of single precision. The multiplication on line @65,) * (@ makes use of a specific GCC optimizer behaviour. On the outset it looks like -the compiler will have to use a double precision multiplication to produce the result required. Such an operation would be horribly slow on most -processors and drag this to a crawl. However, GCC is smart enough to realize that double wide output single precision multipliers can be used. For -example, the instruction ``MUL'' on the x86 processor can multiply two 32-bit values and produce a 64-bit result. +This implementation of multiplication has the caveat that it can be trimmed to only produce a variable number of +digits as output. In each iteration of the outer loop the $pb$ variable is set (line @48,MIN@) to the maximum +number of inner loop iterations. + +Inside the inner loop we calculate $\hat r$ as the mp\_word product of the two mp\_digits and the addition of the +carry from the previous iteration. A particularly important observation is that most modern optimizing +C compilers (GCC for instance) can recognize that a $N \times N \rightarrow 2N$ multiplication is all that +is required for the product. In x86 terms for example, this means using the MUL instruction. + +Each digit of the product is stored in turn (line @68,tmpt@) and the carry propagated (line @71,>>@) to the +next iteration. \subsection{Faster Multiplication by the ``Comba'' Method} MARK,COMBA -One of the huge drawbacks of the ``baseline'' algorithms is that at the $O(n^2)$ level the carry must be computed and propagated upwards. This -makes the nested loop very sequential and hard to unroll and implement in parallel. The ``Comba'' \cite{COMBA} method is named after little known -(\textit{in cryptographic venues}) Paul G. Comba who described a method of implementing fast multipliers that do not require nested -carry fixup operations. As an interesting aside it seems that Paul Barrett describes a similar technique in -his 1986 paper \cite{BARRETT} written five years before. +One of the huge drawbacks of the ``baseline'' algorithms is that at the $O(n^2)$ level the carry must be +computed and propagated upwards. This makes the nested loop very sequential and hard to unroll and implement +in parallel. The ``Comba'' \cite{COMBA} method is named after little known (\textit{in cryptographic venues}) Paul G. +Comba who described a method of implementing fast multipliers that do not require nested carry fixup operations. As an +interesting aside it seems that Paul Barrett describes a similar technique in his 1986 paper \cite{BARRETT} written +five years before. -At the heart of the Comba technique is once again the long-hand algorithm. Except in this case a slight twist is placed on how -the columns of the result are produced. In the standard long-hand algorithm rows of products are produced then added together to form the -final result. In the baseline algorithm the columns are added together after each iteration to get the result instantaneously. +At the heart of the Comba technique is once again the long-hand algorithm. Except in this case a slight +twist is placed on how the columns of the result are produced. In the standard long-hand algorithm rows of products +are produced then added together to form the final result. In the baseline algorithm the columns are added together +after each iteration to get the result instantaneously. -In the Comba algorithm the columns of the result are produced entirely independently of each other. That is at the $O(n^2)$ level a -simple multiplication and addition step is performed. The carries of the columns are propagated after the nested loop to reduce the amount -of work requiored. Succintly the first step of the algorithm is to compute the product vector $\vec x$ as follows. +In the Comba algorithm the columns of the result are produced entirely independently of each other. That is at +the $O(n^2)$ level a simple multiplication and addition step is performed. The carries of the columns are propagated +after the nested loop to reduce the amount of work requiored. Succintly the first step of the algorithm is to compute +the product vector $\vec x$ as follows. \begin{equation} \vec x_n = \sum_{i+j = n} a_ib_j, \forall n \in \lbrace 0, 1, 2, \ldots, i + j \rbrace @@ -2584,38 +2596,32 @@ $256$ digits would allow for numbers in the range of $0 \le x < 2^{7168}$ which, \textbf{Input}. mp\_int $a$, mp\_int $b$ and an integer $digs$ \\ \textbf{Output}. $c \leftarrow \vert a \vert \cdot \vert b \vert \mbox{ (mod }\beta^{digs}\mbox{)}$. \\ \hline \\ -Place an array of \textbf{MP\_WARRAY} double precision digits named $\hat W$ on the stack. \\ +Place an array of \textbf{MP\_WARRAY} single precision digits named $W$ on the stack. \\ 1. If $c.alloc < digs$ then grow $c$ to $digs$ digits. (\textit{mp\_grow}) \\ 2. If step 1 failed return(\textit{MP\_MEM}).\\ \\ -Zero the temporary array $\hat W$. \\ -3. for $n$ from $0$ to $digs - 1$ do \\ -\hspace{3mm}3.1 $\hat W_n \leftarrow 0$ \\ +3. $pa \leftarrow \mbox{MIN}(digs, a.used + b.used)$ \\ \\ -Compute the columns. \\ -4. for $ix$ from $0$ to $a.used - 1$ do \\ -\hspace{3mm}4.1 $pb \leftarrow \mbox{min}(b.used, digs - ix)$ \\ -\hspace{3mm}4.2 If $pb < 1$ then goto step 5. \\ -\hspace{3mm}4.3 for $iy$ from $0$ to $pb - 1$ do \\ -\hspace{6mm}4.3.1 $\hat W_{ix+iy} \leftarrow \hat W_{ix+iy} + a_{ix}b_{iy}$ \\ +4. $\_ \hat W \leftarrow 0$ \\ +5. for $ix$ from 0 to $pa - 1$ do \\ +\hspace{3mm}5.1 $ty \leftarrow \mbox{MIN}(b.used - 1, ix)$ \\ +\hspace{3mm}5.2 $tx \leftarrow ix - ty$ \\ +\hspace{3mm}5.3 $iy \leftarrow \mbox{MIN}(a.used - tx, ty + 1)$ \\ +\hspace{3mm}5.4 for $iz$ from 0 to $iy - 1$ do \\ +\hspace{6mm}5.4.1 $\_ \hat W \leftarrow \_ \hat W + a_{tx+iy}b_{ty-iy}$ \\ +\hspace{3mm}5.5 $W_{ix} \leftarrow \_ \hat W (\mbox{mod }\beta)$\\ +\hspace{3mm}5.6 $\_ \hat W \leftarrow \lfloor \_ \hat W / \beta \rfloor$ \\ +6. $W_{pa} \leftarrow \_ \hat W (\mbox{mod }\beta)$ \\ \\ -Propagate the carries upwards. \\ -5. $oldused \leftarrow c.used$ \\ -6. $c.used \leftarrow digs$ \\ -7. If $digs > 1$ then do \\ -\hspace{3mm}7.1. for $ix$ from $1$ to $digs - 1$ do \\ -\hspace{6mm}7.1.1 $\hat W_{ix} \leftarrow \hat W_{ix} + \lfloor \hat W_{ix-1} / \beta \rfloor$ \\ -\hspace{6mm}7.1.2 $c_{ix - 1} \leftarrow \hat W_{ix - 1} \mbox{ (mod }\beta\mbox{)}$ \\ -8. else do \\ -\hspace{3mm}8.1 $ix \leftarrow 0$ \\ -9. $c_{ix} \leftarrow \hat W_{ix} \mbox{ (mod }\beta\mbox{)}$ \\ +7. $oldused \leftarrow c.used$ \\ +8. $c.used \leftarrow digs$ \\ +9. for $ix$ from $0$ to $pa$ do \\ +\hspace{3mm}9.1 $c_{ix} \leftarrow W_{ix}$ \\ +10. for $ix$ from $pa + 1$ to $oldused - 1$ do \\ +\hspace{3mm}10.1 $c_{ix} \leftarrow 0$ \\ \\ -Zero excess digits. \\ -10. If $digs < oldused$ then do \\ -\hspace{3mm}10.1 for $n$ from $digs$ to $oldused - 1$ do \\ -\hspace{6mm}10.1.1 $c_n \leftarrow 0$ \\ -11. Clamp excessive digits of $c$. (\textit{mp\_clamp}) \\ -12. Return(\textit{MP\_OKAY}). \\ +11. Clamp $c$. \\ +12. Return MP\_OKAY. \\ \hline \end{tabular} \end{center} @@ -2625,15 +2631,24 @@ Zero excess digits. \\ \end{figure} \textbf{Algorithm fast\_s\_mp\_mul\_digs.} -This algorithm performs the unsigned multiplication of $a$ and $b$ using the Comba method limited to $digs$ digits of precision. The algorithm -essentially peforms the same calculation as algorithm s\_mp\_mul\_digs, just much faster. +This algorithm performs the unsigned multiplication of $a$ and $b$ using the Comba method limited to $digs$ digits of precision. + +The outer loop of this algorithm is more complicated than that of the baseline multiplier. This is because on the inside of the +loop we want to produce one column per pass. This allows the accumulator $\_ \hat W$ to be placed in CPU registers and +reduce the memory bandwidth to two \textbf{mp\_digit} reads per iteration. + +The $ty$ variable is set to the minimum count of $ix$ or the number of digits in $b$. That way if $a$ has more digits than +$b$ this will be limited to $b.used - 1$. The $tx$ variable is set to the to the distance past $b.used$ the variable +$ix$ is. This is used for the immediately subsequent statement where we find $iy$. -The array $\hat W$ is meant to be on the stack when the algorithm is used. The size of the array does not change which is ideal. Note also that -unlike algorithm s\_mp\_mul\_digs no temporary mp\_int is required since the result is calculated directly in $\hat W$. +The variable $iy$ is the minimum digits we can read from either $a$ or $b$ before running out. Computing one column at a time +means we have to scan one integer upwards and the other downwards. $a$ starts at $tx$ and $b$ starts at $ty$. In each +pass we are producing the $ix$'th output column and we note that $tx + ty = ix$. As we move $tx$ upwards we have to +move $ty$ downards so the equality remains valid. The $iy$ variable is the number of iterations until +$tx \ge a.used$ or $ty < 0$ occurs. -The $O(n^2)$ loop on step four is where the Comba method's advantages begin to show through in comparison to the baseline algorithm. The lack of -a carry variable or propagation in this loop allows the loop to be performed with only single precision multiplication and additions. Now that each -iteration of the inner loop can be performed independent of the others the inner loop can be performed with a high level of parallelism. +After every inner pass we store the lower half of the accumulator into $W_{ix}$ and then propagate the carry of the accumulator +into the next round by dividing $\_ \hat W$ by $\beta$. To measure the benefits of the Comba method over the baseline method consider the number of operations that are required. If the cost in terms of time of a multiply and addition is $p$ and the cost of a carry propagation is $q$ then a baseline multiplication would require @@ -2643,20 +2658,20 @@ and addition operations in the nested loop in parallel. EXAM,bn_fast_s_mp_mul_digs.c -The memset on line @47,memset@ clears the initial $\hat W$ array to zero in a single step. Like the slower baseline multiplication -implementation a series of aliases (\textit{lines @67, tmpx@, @70, tmpy@ and @75,_W@}) are used to simplify the inner $O(n^2)$ loop. -In this case a new alias $\_\hat W$ has been added which refers to the double precision columns offset by $ix$ in each pass. +As per the pseudo--code we first calculate $pa$ (line @47,MIN@) as the number of digits to output. Next we begin the outer loop +to produce the individual columns of the product. We use the two aliases $tmpx$ and $tmpy$ (lines @61,tmpx@, @62,tmpy@) to point +inside the two multiplicands quickly. -The inner loop on lines @83,for@, @84,mp_word@ and @85,}@ is where the algorithm will spend the majority of the time, which is why it has been -stripped to the bones of any extra baggage\footnote{Hence the pointer aliases.}. On x86 processors the multiplication and additions amount to at the -very least five instructions (\textit{two loads, two additions, one multiply}) while on the ARMv4 processors they amount to only three -(\textit{one load, one store, one multiply-add}). For both of the x86 and ARMv4 processors the GCC compiler performs a good job at unrolling the loop -and scheduling the instructions so there are very few dependency stalls. +The inner loop (lines @70,for@ to @72,}@) of this implementation is where the tradeoff come into play. Originally this comba +implementation was ``row--major'' which means it adds to each of the columns in each pass. After the outer loop it would then fix +the carries. This was very fast except it had an annoying drawback. You had to read a mp\_word and two mp\_digits and write +one mp\_word per iteration. On processors such as the Athlon XP and P4 this did not matter much since the cache bandwidth +is very high and it can keep the ALU fed with data. It did, however, matter on older and embedded cpus where cache is often +slower and also often doesn't exist. This new algorithm only performs two reads per iteration under the assumption that the +compiler has aliased $\_ \hat W$ to a CPU register. -In theory the difference between the baseline and comba algorithms is a mere $O(qn)$ time difference. However, in the $O(n^2)$ nested loop of the -baseline method there are dependency stalls as the algorithm must wait for the multiplier to finish before propagating the carry to the next -digit. As a result fewer of the often multiple execution units\footnote{The AMD Athlon has three execution units and the Intel P4 has four.} can -be simultaneously used. +After the inner loop we store the current accumulator in $W$ and shift $\_ \hat W$ (lines @75,W[ix]@, @78,>>@) to forward it as +a carry for the next pass. After the outer loop we use the final carry (line @82,W[ix]@) as the last digit of the product. \subsection{Polynomial Basis Multiplication} To break the $O(n^2)$ barrier in multiplication requires a completely different look at integer multiplication. In the following algorithms @@ -2976,13 +2991,26 @@ result $a \cdot b$ is produced. EXAM,bn_mp_toom_mul.c --- Comments to be added during editing phase. +The first obvious thing to note is that this algorithm is complicated. The complexity is worth it if you are multiplying very +large numbers. For example, a 10,000 digit multiplication takes approximaly 99,282,205 fewer single precision multiplications with +Toom--Cook than a Comba or baseline approach (this is a savings of more than 99$\%$). For most ``crypto'' sized numbers this +algorithm is not practical as Karatsuba has a much lower cutoff point. + +First we split $a$ and $b$ into three roughly equal portions. This has been accomplished (lines @40,mod@ to @69,rshd@) with +combinations of mp\_rshd() and mp\_mod\_2d() function calls. At this point $a = a2 \cdot \beta^2 + a1 \cdot \beta + a0$ and similiarly +for $b$. + +Next we compute the five points $w0, w1, w2, w3$ and $w4$. Recall that $w0$ and $w4$ can be computed directly from the portions so +we get those out of the way first (lines @72,mul@ and @77,mul@). Next we compute $w1, w2$ and $w3$ using Horners method. + +After this point we solve for the actual values of $w1, w2$ and $w3$ by reducing the $5 \times 5$ system which is relatively +straight forward. \subsection{Signed Multiplication} Now that algorithms to handle multiplications of every useful dimensions have been developed, a rather simple finishing touch is required. So far all of the multiplication algorithms have been unsigned multiplications which leaves only a signed multiplication algorithm to be established. -\newpage\begin{figure}[!here] +\begin{figure}[!here] \begin{small} \begin{center} \begin{tabular}{l} @@ -3065,7 +3093,7 @@ Column two of row one is a square and column three is the first unique column. The baseline squaring algorithm is meant to be a catch-all squaring algorithm. It will handle any of the input sizes that the faster routines will not handle. -\newpage\begin{figure}[!here] +\begin{figure}[!here] \begin{small} \begin{center} \begin{tabular}{l} @@ -3121,9 +3149,14 @@ results calculated so far. This involves expensive carry propagation which will EXAM,bn_s_mp_sqr.c -Inside the outer loop (\textit{see line @32,for@}) the square term is calculated on line @35,r =@. Line @42,>>@ extracts the carry from the square -term. Aliases for $a_{ix}$ and $t_{ix+iy}$ are initialized on lines @45,tmpx@ and @48,tmpt@ respectively. The doubling is performed using two -additions (\textit{see line @57,r + r@}) since it is usually faster than shifting,if not at least as fast. +Inside the outer loop (line @32,for@) the square term is calculated on line @35,r =@. The carry (line @42,>>@) has been +extracted from the mp\_word accumulator using a right shift. Aliases for $a_{ix}$ and $t_{ix+iy}$ are initialized +(lines @45,tmpx@ and @48,tmpt@) to simplify the inner loop. The doubling is performed using two +additions (line @57,r + r@) since it is usually faster than shifting, if not at least as fast. + +The important observation is that the inner loop does not begin at $iy = 0$ like for multiplication. As such the inner loops +get progressively shorter as the algorithm proceeds. This is what leads to the savings compared to using a multiplication to +square a number. \subsection{Faster Squaring by the ``Comba'' Method} A major drawback to the baseline method is the requirement for single precision shifting inside the $O(n^2)$ nested loop. Squaring has an additional @@ -3135,9 +3168,9 @@ propagation operations from the inner loop. However, the inner product must sti that $2a + 2b + 2c = 2(a + b + c)$. That is the sum of all of the double products is equal to double the sum of all the products. For example, $ab + ba + ac + ca = 2ab + 2ac = 2(ab + ac)$. -However, we cannot simply double all of the columns, since the squares appear only once per row. The most practical solution is to have two mp\_word -arrays. One array will hold the squares and the other array will hold the double products. With both arrays the doubling and carry propagation can be -moved to a $O(n)$ work level outside the $O(n^2)$ level. +However, we cannot simply double all of the columns, since the squares appear only once per row. The most practical solution is to have two +mp\_word arrays. One array will hold the squares and the other array will hold the double products. With both arrays the doubling and +carry propagation can be moved to a $O(n)$ work level outside the $O(n^2)$ level. In this case, we have an even simpler solution in mind. \newpage\begin{figure}[!here] \begin{small} @@ -3147,34 +3180,34 @@ moved to a $O(n)$ work level outside the $O(n^2)$ level. \textbf{Input}. mp\_int $a$ \\ \textbf{Output}. $b \leftarrow a^2$ \\ \hline \\ -Place two arrays of \textbf{MP\_WARRAY} mp\_words named $\hat W$ and $\hat {X}$ on the stack. \\ +Place an array of \textbf{MP\_WARRAY} mp\_digits named $W$ on the stack. \\ 1. If $b.alloc < 2a.used + 1$ then grow $b$ to $2a.used + 1$ digits. (\textit{mp\_grow}). \\ 2. If step 1 failed return(\textit{MP\_MEM}). \\ -3. for $ix$ from $0$ to $2a.used + 1$ do \\ -\hspace{3mm}3.1 $\hat W_{ix} \leftarrow 0$ \\ -\hspace{3mm}3.2 $\hat {X}_{ix} \leftarrow 0$ \\ -4. for $ix$ from $0$ to $a.used - 1$ do \\ -\hspace{3mm}Compute the square.\\ -\hspace{3mm}4.1 $\hat {X}_{ix+ix} \leftarrow \left ( a_{ix} \right )^2$ \\ \\ -\hspace{3mm}Compute the double products.\\ -\hspace{3mm}4.2 for $iy$ from $ix + 1$ to $a.used - 1$ do \\ -\hspace{6mm}4.2.1 $\hat W_{ix+iy} \leftarrow \hat W_{ix+iy} + a_{ix}a_{iy}$ \\ -5. $oldused \leftarrow b.used$ \\ -6. $b.used \leftarrow 2a.used + 1$ \\ +3. $pa \leftarrow 2 \cdot a.used$ \\ +4. $\hat W1 \leftarrow 0$ \\ +5. for $ix$ from $0$ to $pa - 1$ do \\ +\hspace{3mm}5.1 $\_ \hat W \leftarrow 0$ \\ +\hspace{3mm}5.2 $ty \leftarrow \mbox{MIN}(a.used - 1, ix)$ \\ +\hspace{3mm}5.3 $tx \leftarrow ix - ty$ \\ +\hspace{3mm}5.4 $iy \leftarrow \mbox{MIN}(a.used - tx, ty + 1)$ \\ +\hspace{3mm}5.5 $iy \leftarrow \mbox{MIN}(iy, \lfloor \left (ty - tx + 1 \right )/2 \rfloor)$ \\ +\hspace{3mm}5.6 for $iz$ from $0$ to $iz - 1$ do \\ +\hspace{6mm}5.6.1 $\_ \hat W \leftarrow \_ \hat W + a_{tx + iz}a_{ty - iz}$ \\ +\hspace{3mm}5.7 $\_ \hat W \leftarrow 2 \cdot \_ \hat W + \hat W1$ \\ +\hspace{3mm}5.8 if $ix$ is even then \\ +\hspace{6mm}5.8.1 $\_ \hat W \leftarrow \_ \hat W + \left ( a_{\lfloor ix/2 \rfloor}\right )^2$ \\ +\hspace{3mm}5.9 $W_{ix} \leftarrow \_ \hat W (\mbox{mod }\beta)$ \\ +\hspace{3mm}5.10 $\hat W1 \leftarrow \lfloor \_ \hat W / \beta \rfloor$ \\ \\ -Double the products and propagate the carries simultaneously. \\ -7. $\hat W_0 \leftarrow 2 \hat W_0 + \hat {X}_0$ \\ -8. for $ix$ from $1$ to $2a.used$ do \\ -\hspace{3mm}8.1 $\hat W_{ix} \leftarrow 2 \hat W_{ix} + \hat {X}_{ix}$ \\ -\hspace{3mm}8.2 $\hat W_{ix} \leftarrow \hat W_{ix} + \lfloor \hat W_{ix - 1} / \beta \rfloor$ \\ -\hspace{3mm}8.3 $b_{ix-1} \leftarrow W_{ix-1} \mbox{ (mod }\beta\mbox{)}$ \\ -9. $b_{2a.used} \leftarrow \hat W_{2a.used} \mbox{ (mod }\beta\mbox{)}$ \\ -10. if $2a.used + 1 < oldused$ then do \\ -\hspace{3mm}10.1 for $ix$ from $2a.used + 1$ to $oldused$ do \\ -\hspace{6mm}10.1.1 $b_{ix} \leftarrow 0$ \\ -11. Clamp excess digits from $b$. (\textit{mp\_clamp}) \\ -12. Return(\textit{MP\_OKAY}). \\ +6. $oldused \leftarrow b.used$ \\ +7. $b.used \leftarrow 2 \cdot a.used$ \\ +8. for $ix$ from $0$ to $pa - 1$ do \\ +\hspace{3mm}8.1 $b_{ix} \leftarrow W_{ix}$ \\ +9. for $ix$ from $pa$ to $oldused - 1$ do \\ +\hspace{3mm}9.1 $b_{ix} \leftarrow 0$ \\ +10. Clamp excess digits from $b$. (\textit{mp\_clamp}) \\ +11. Return(\textit{MP\_OKAY}). \\ \hline \end{tabular} \end{center} @@ -3183,24 +3216,24 @@ Double the products and propagate the carries simultaneously. \\ \end{figure} \textbf{Algorithm fast\_s\_mp\_sqr.} -This algorithm computes the square of an input using the Comba technique. It is designed to be a replacement for algorithm s\_mp\_sqr when -the number of input digits is less than \textbf{MP\_WARRAY} and less than $\delta \over 2$. +This algorithm computes the square of an input using the Comba technique. It is designed to be a replacement for algorithm +s\_mp\_sqr when the number of input digits is less than \textbf{MP\_WARRAY} and less than $\delta \over 2$. +This algorithm is very similar to the Comba multiplier except with a few key differences we shall make note of. -This routine requires two arrays of mp\_words to be placed on the stack. The first array $\hat W$ will hold the double products and the second -array $\hat X$ will hold the squares. Though only at most $MP\_WARRAY \over 2$ words of $\hat X$ are used, it has proven faster on most -processors to simply make it a full size array. +First, we have an accumulator and carry variables $\_ \hat W$ and $\hat W1$ respectively. This is because the inner loop +products are to be doubled. If we had added the previous carry in we would be doubling too much. Next we perform an +addition MIN condition on $iy$ (step 5.5) to prevent overlapping digits. For example, $a_3 \cdot a_5$ is equal +$a_5 \cdot a_3$. Whereas in the multiplication case we would have $5 < a.used$ and $3 \ge 0$ is maintained since we double the sum +of the products just outside the inner loop we have to avoid doing this. This is also a good thing since we perform +fewer multiplications and the routine ends up being faster. -The loop on step 3 will zero the two arrays to prepare them for the squaring step. Step 4.1 computes the squares of the product. Note how -it simply assigns the value into the $\hat X$ array. The nested loop on step 4.2 computes the doubles of the products. This loop -computes the sum of the products for each column. They are not doubled until later. - -After the squaring loop, the products stored in $\hat W$ musted be doubled and the carries propagated forwards. It makes sense to do both -operations at the same time. The expression $\hat W_{ix} \leftarrow 2 \hat W_{ix} + \hat {X}_{ix}$ computes the sum of the double product and the -squares in place. +Finally the last difference is the addition of the ``square'' term outside the inner loop (step 5.8). We add in the square +only to even outputs and it is the square of the term at the $\lfloor ix / 2 \rfloor$ position. EXAM,bn_fast_s_mp_sqr.c --- Write something deep and insightful later, Tom. +This implementation is essentially a copy of Comba multiplication with the appropriate changes added to make it faster for +the special case of squaring. \subsection{Polynomial Basis Squaring} The same algorithm that performs optimal polynomial basis multiplication can be used to perform polynomial basis squaring. The minor exception @@ -3312,14 +3345,13 @@ By inlining the copy and shift operations the cutoff point for Karatsuba multipl is exactly at the point where Comba squaring can no longer be used (\textit{128 digits}). On slower processors such as the Intel P4 it is actually below the Comba limit (\textit{at 110 digits}). -This routine uses the same error trap coding style as mp\_karatsuba\_sqr. As the temporary variables are initialized errors are redirected to -the error trap higher up. If the algorithm completes without error the error code is set to \textbf{MP\_OKAY} and mp\_clears are executed normally. - -\textit{Last paragraph sucks. re-write! -- Tom} +This routine uses the same error trap coding style as mp\_karatsuba\_sqr. As the temporary variables are initialized errors are +redirected to the error trap higher up. If the algorithm completes without error the error code is set to \textbf{MP\_OKAY} and +mp\_clears are executed normally. \subsection{Toom-Cook Squaring} The Toom-Cook squaring algorithm mp\_toom\_sqr is heavily based on the algorithm mp\_toom\_mul with the exception that squarings are used -instead of multiplication to find the five relations.. The reader is encouraged to read the description of the latter algorithm and try to +instead of multiplication to find the five relations. The reader is encouraged to read the description of the latter algorithm and try to derive their own Toom-Cook squaring algorithm. \subsection{High Level Squaring} @@ -3362,12 +3394,9 @@ EXAM,bn_mp_sqr.c $\left [ 3 \right ] $ & Devise an efficient algorithm for selection of the radix point to handle inputs \\ & that have different number of digits in Karatsuba multiplication. \\ & \\ -$\left [ 3 \right ] $ & In ~SQUARE~ the fact that every column of a squaring is made up \\ +$\left [ 2 \right ] $ & In ~SQUARE~ the fact that every column of a squaring is made up \\ & of double products and at most one square is stated. Prove this statement. \\ & \\ -$\left [ 2 \right ] $ & In the Comba squaring algorithm half of the $\hat X$ variables are not used. \\ - & Revise algorithm fast\_s\_mp\_sqr to shrink the $\hat X$ array. \\ - & \\ $\left [ 3 \right ] $ & Prove the equation for Karatsuba squaring. \\ & \\ $\left [ 1 \right ] $ & Prove that Karatsuba squaring requires $O \left (n^{lg(3)} \right )$ time. \\ @@ -3375,6 +3404,14 @@ $\left [ 1 \right ] $ & Prove that Karatsuba squaring requires $O \left (n^{lg(3 $\left [ 2 \right ] $ & Determine the minimal ratio between addition and multiplication clock cycles \\ & required for equation $6.7$ to be true. \\ & \\ +$\left [ 3 \right ] $ & Implement a threaded version of Comba multiplication (and squaring) where you \\ + & compute subsets of the columns in each thread. Determine a cutoff point where \\ + & it is effective and add the logic to mp\_mul() and mp\_sqr(). \\ + &\\ +$\left [ 4 \right ] $ & Same as the previous but also modify the Karatsuba and Toom-Cook. You must \\ + & increase the throughput of mp\_exptmod() for random odd moduli in the range \\ + & $512 \ldots 4096$ bits significantly ($> 2x$) to complete this challenge. \\ + & \\ \end{tabular} \chapter{Modular Reduction} @@ -3394,7 +3431,7 @@ other forms of residues. Modular reductions are normally used to create either finite groups, rings or fields. The most common usage for performance driven modular reductions is in modular exponentiation algorithms. That is to compute $d = a^b \mbox{ (mod }c\mbox{)}$ as fast as possible. This operation is used in the RSA and Diffie-Hellman public key algorithms, for example. Modular multiplication and squaring also appears as a fundamental operation in -Elliptic Curve cryptographic algorithms. As will be discussed in the subsequent chapter there exist fast algorithms for computing modular +elliptic curve cryptographic algorithms. As will be discussed in the subsequent chapter there exist fast algorithms for computing modular exponentiations without having to perform (\textit{in this example}) $b - 1$ multiplications. These algorithms will produce partial results in the range $0 \le x < c^2$ which can be taken advantage of to create several efficient algorithms. They have also been used to create redundancy check algorithms known as CRCs, error correction codes such as Reed-Solomon and solve a variety of number theoeretic problems. @@ -3610,7 +3647,7 @@ safe to do so. In order to use algorithm mp\_reduce the value of $\mu$ must be calculated in advance. Ideally this value should be computed once and stored for future use so that the Barrett algorithm can be used without delay. -\begin{figure}[!here] +\newpage\begin{figure}[!here] \begin{small} \begin{center} \begin{tabular}{l} @@ -5818,6 +5855,8 @@ To explain the Jacobi Symbol we shall first discuss the Legendre function\footno defined. The Legendre function computes whether or not an integer $a$ is a quadratic residue modulo an odd prime $p$. Numerically it is equivalent to equation \ref{eqn:legendre}. +\textit{-- Tom, don't be an ass, cite your source here...!} + \begin{equation} a^{(p-1)/2} \equiv \begin{array}{rl} -1 & \mbox{if }a\mbox{ is a quadratic non-residue.} \\ diff --git a/libtommath/tommath.tex b/libtommath/tommath.tex index 9c4dc82..b016010 100644 --- a/libtommath/tommath.tex +++ b/libtommath/tommath.tex @@ -49,7 +49,7 @@ \begin{document} \frontmatter \pagestyle{empty} -\title{Implementing Multiple Precision Arithmetic \\ ~ \\ Draft Edition } +\title{Multi--Precision Math} \author{\mbox{ %\begin{small} \begin{tabular}{c} @@ -66,7 +66,7 @@ QUALCOMM Australia \\ } } \maketitle -This text has been placed in the public domain. This text corresponds to the v0.30 release of the +This text has been placed in the public domain. This text corresponds to the v0.35 release of the LibTomMath project. \begin{alltt} @@ -85,66 +85,32 @@ This text is formatted to the international B5 paper size of 176mm wide by 250mm \tableofcontents \listoffigures -\chapter*{Prefaces to the Draft Edition} -I started this text in April 2003 to complement my LibTomMath library. That is, explain how to implement the functions -contained in LibTomMath. The goal is to have a textbook that any Computer Science student can use when implementing their -own multiple precision arithmetic. The plan I wanted to follow was flesh out all the -ideas and concepts I had floating around in my head and then work on it afterwards refining a little bit at a time. Chance -would have it that I ended up with my summer off from Algonquin College and I was given four months solid to work on the -text. - -Choosing to not waste any time I dove right into the project even before my spring semester was finished. I wrote a bit -off and on at first. The moment my exams were finished I jumped into long 12 to 16 hour days. The result after only -a couple of months was a ten chapter, three hundred page draft that I quickly had distributed to anyone who wanted -to read it. I had Jean-Luc Cooke print copies for me and I brought them to Crypto'03 in Santa Barbara. So far I have -managed to grab a certain level of attention having people from around the world ask me for copies of the text was certain -rewarding. - -Now we are past December 2003. By this time I had pictured that I would have at least finished my second draft of the text. -Currently I am far off from this goal. I've done partial re-writes of chapters one, two and three but they are not even -finished yet. I haven't given up on the project, only had some setbacks. First O'Reilly declined to publish the text then -Addison-Wesley and Greg is tried another which I don't know the name of. However, at this point I want to focus my energy -onto finishing the book not securing a contract. - -So why am I writing this text? It seems like a lot of work right? Most certainly it is a lot of work writing a textbook. -Even the simplest introductory material has to be lined with references and figures. A lot of the text has to be re-written -from point form to prose form to ensure an easier read. Why am I doing all this work for free then? Simple. My philosophy -is quite simply ``Open Source. Open Academia. Open Minds'' which means that to achieve a goal of open minds, that is, -people willing to accept new ideas and explore the unknown you have to make available material they can access freely -without hinderance. - -I've been writing free software since I was about sixteen but only recently have I hit upon software that people have come -to depend upon. I started LibTomCrypt in December 2001 and now several major companies use it as integral portions of their -software. Several educational institutions use it as a matter of course and many freelance developers use it as -part of their projects. To further my contributions I started the LibTomMath project in December 2002 aimed at providing -multiple precision arithmetic routines that students could learn from. That is write routines that are not only easy -to understand and follow but provide quite impressive performance considering they are all in standard portable ISO C. - -The second leg of my philosophy is ``Open Academia'' which is where this textbook comes in. In the end, when all is -said and done the text will be useable by educational institutions as a reference on multiple precision arithmetic. - -At this time I feel I should share a little information about myself. The most common question I was asked at -Crypto'03, perhaps just out of professional courtesy, was which school I either taught at or attended. The unfortunate -truth is that I neither teach at or attend a school of academic reputation. I'm currently at Algonquin College which -is what I'd like to call ``somewhat academic but mostly vocational'' college. In otherwords, job training. - -I'm a 21 year old computer science student mostly self-taught in the areas I am aware of (which includes a half-dozen -computer science fields, a few fields of mathematics and some English). I look forward to teaching someday but I am -still far off from that goal. - -Now it would be improper for me to not introduce the rest of the texts co-authors. While they are only contributing -corrections and editorial feedback their support has been tremendously helpful in presenting the concepts laid out -in the text so far. Greg has always been there for me. He has tracked my LibTom projects since their inception and even -sent cheques to help pay tuition from time to time. His background has provided a wonderful source to bounce ideas off -of and improve the quality of my writing. Mads is another fellow who has just ``been there''. I don't even recall what -his interest in the LibTom projects is but I'm definitely glad he has been around. His ability to catch logical errors -in my written English have saved me on several occasions to say the least. - -What to expect next? Well this is still a rough draft. I've only had the chance to update a few chapters. However, I've -been getting the feeling that people are starting to use my text and I owe them some updated material. My current tenative -plan is to edit one chapter every two weeks starting January 4th. It seems insane but my lower course load at college -should provide ample time. By Crypto'04 I plan to have a 2nd draft of the text polished and ready to hand out to as many -people who will take it. +\chapter*{Prefaces} +When I tell people about my LibTom projects and that I release them as public domain they are often puzzled. +They ask why I did it and especially why I continue to work on them for free. The best I can explain it is ``Because I can.'' +Which seems odd and perhaps too terse for adult conversation. I often qualify it with ``I am able, I am willing.'' which +perhaps explains it better. I am the first to admit there is not anything that special with what I have done. Perhaps +others can see that too and then we would have a society to be proud of. My LibTom projects are what I am doing to give +back to society in the form of tools and knowledge that can help others in their endeavours. + +I started writing this book because it was the most logical task to further my goal of open academia. The LibTomMath source +code itself was written to be easy to follow and learn from. There are times, however, where pure C source code does not +explain the algorithms properly. Hence this book. The book literally starts with the foundation of the library and works +itself outwards to the more complicated algorithms. The use of both pseudo--code and verbatim source code provides a duality +of ``theory'' and ``practice'' that the computer science students of the world shall appreciate. I never deviate too far +from relatively straightforward algebra and I hope that this book can be a valuable learning asset. + +This book and indeed much of the LibTom projects would not exist in their current form if it was not for a plethora +of kind people donating their time, resources and kind words to help support my work. Writing a text of significant +length (along with the source code) is a tiresome and lengthy process. Currently the LibTom project is four years old, +comprises of literally thousands of users and over 100,000 lines of source code, TeX and other material. People like Mads and Greg +were there at the beginning to encourage me to work well. It is amazing how timely validation from others can boost morale to +continue the project. Definitely my parents were there for me by providing room and board during the many months of work in 2003. + +To my many friends whom I have met through the years I thank you for the good times and the words of encouragement. I hope I +honour your kind gestures with this project. + +Open Source. Open Academia. Open Minds. \begin{flushright} Tom St Denis \end{flushright} @@ -1045,7 +1011,7 @@ assumed to contain undefined values they are initially set to zero. \end{alltt} \end{small} -A quick optimization is to first determine if a memory re-allocation is required at all. The if statement (line 23) checks +A quick optimization is to first determine if a memory re-allocation is required at all. The if statement (line 24) checks if the \textbf{alloc} member of the mp\_int is smaller than the requested digit count. If the count is not larger than \textbf{alloc} the function skips the re-allocation part thus saving time. @@ -1590,14 +1556,20 @@ This algorithm simply resets a mp\_int to the default state. \begin{alltt} 016 017 /* set to zero */ -018 void -019 mp_zero (mp_int * a) -020 \{ -021 a->sign = MP_ZPOS; -022 a->used = 0; -023 memset (a->dp, 0, sizeof (mp_digit) * a->alloc); -024 \} -025 #endif +018 void mp_zero (mp_int * a) +019 \{ +020 int n; +021 mp_digit *tmp; +022 +023 a->sign = MP_ZPOS; +024 a->used = 0; +025 +026 tmp = a->dp; +027 for (n = 0; n < a->alloc; n++) \{ +028 *tmp++ = 0; +029 \} +030 \} +031 #endif \end{alltt} \end{small} @@ -1609,7 +1581,7 @@ After the function is completed, all of the digits are zeroed, the \textbf{used} With the mp\_int representation of an integer, calculating the absolute value is trivial. The mp\_abs algorithm will compute the absolute value of an mp\_int. -\newpage\begin{figure}[here] +\begin{figure}[here] \begin{center} \begin{tabular}{l} \hline Algorithm \textbf{mp\_abs}. \\ @@ -1662,6 +1634,9 @@ logic to handle it. \end{alltt} \end{small} +This fairly trivial algorithm first eliminates non--required duplications (line 27) and then sets the +\textbf{sign} flag to \textbf{MP\_ZPOS}. + \subsection{Integer Negation} With the mp\_int representation of an integer, calculating the negation is also trivial. The mp\_neg algorithm will compute the negative of an mp\_int input. @@ -1702,23 +1677,33 @@ zero as negative. 018 int mp_neg (mp_int * a, mp_int * b) 019 \{ 020 int res; -021 if ((res = mp_copy (a, b)) != MP_OKAY) \{ -022 return res; -023 \} -024 if (mp_iszero(b) != MP_YES) \{ -025 b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; -026 \} -027 return MP_OKAY; -028 \} -029 #endif +021 if (a != b) \{ +022 if ((res = mp_copy (a, b)) != MP_OKAY) \{ +023 return res; +024 \} +025 \} +026 +027 if (mp_iszero(b) != MP_YES) \{ +028 b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; +029 \} else \{ +030 b->sign = MP_ZPOS; +031 \} +032 +033 return MP_OKAY; +034 \} +035 #endif \end{alltt} \end{small} +Like mp\_abs() this function avoids non--required duplications (line 21) and then sets the sign. We +have to make sure that only non--zero values get a \textbf{sign} of \textbf{MP\_NEG}. If the mp\_int is zero +than the \textbf{sign} is hard--coded to \textbf{MP\_ZPOS}. + \section{Small Constants} \subsection{Setting Small Constants} Often a mp\_int must be set to a relatively small value such as $1$ or $2$. For these cases the mp\_set algorithm is useful. -\begin{figure}[here] +\newpage\begin{figure}[here] \begin{center} \begin{tabular}{l} \hline Algorithm \textbf{mp\_set}. \\ @@ -1757,11 +1742,14 @@ single digit is set (\textit{modulo $\beta$}) and the \textbf{used} count is adj \end{alltt} \end{small} -Line 20 calls mp\_zero() to clear the mp\_int and reset the sign. Line 21 copies the digit -into the least significant location. Note the usage of a new constant \textbf{MP\_MASK}. This constant is used to quickly -reduce an integer modulo $\beta$. Since $\beta$ is of the form $2^k$ for any suitable $k$ it suffices to perform a binary AND with -$MP\_MASK = 2^k - 1$ to perform the reduction. Finally line 22 will set the \textbf{used} member with respect to the -digit actually set. This function will always make the integer positive. +First we zero (line 20) the mp\_int to make sure that the other members are initialized for a +small positive constant. mp\_zero() ensures that the \textbf{sign} is positive and the \textbf{used} count +is zero. Next we set the digit and reduce it modulo $\beta$ (line 21). After this step we have to +check if the resulting digit is zero or not. If it is not then we set the \textbf{used} count to one, otherwise +to zero. + +We can quickly reduce modulo $\beta$ since it is of the form $2^k$ and a quick binary AND operation with +$2^k - 1$ will perform the same operation. One important limitation of this function is that it will only set one digit. The size of a digit is not fixed, meaning source that uses this function should take that into account. Only trivially small constants can be set using this function. @@ -1936,10 +1924,12 @@ the zero'th digit. If after all of the digits have been compared, no difference \end{alltt} \end{small} -The two if statements on lines 24 and 28 compare the number of digits in the two inputs. These two are performed before all of the digits -are compared since it is a very cheap test to perform and can potentially save considerable time. The implementation given is also not valid -without those two statements. $b.alloc$ may be smaller than $a.used$, meaning that undefined values will be read from $b$ past the end of the -array of digits. +The two if statements (lines 24 and 28) compare the number of digits in the two inputs. These two are +performed before all of the digits are compared since it is a very cheap test to perform and can potentially save +considerable time. The implementation given is also not valid without those two statements. $b.alloc$ may be +smaller than $a.used$, meaning that undefined values will be read from $b$ past the end of the array of digits. + + \subsection{Signed Comparisons} Comparing with sign considerations is also fairly critical in several routines (\textit{division for example}). Based on an unsigned magnitude @@ -2000,9 +1990,9 @@ $\vert a \vert < \vert b \vert$. Step number four will compare the two when the \end{alltt} \end{small} -The two if statements on lines 22 and 23 perform the initial sign comparison. If the signs are not the equal then which ever -has the positive sign is larger. At line 31, the inputs are compared based on magnitudes. If the signs were both negative then -the unsigned comparison is performed in the opposite direction (\textit{line 33}). Otherwise, the signs are assumed to +The two if statements (lines 22 and 23) perform the initial sign comparison. If the signs are not the equal then which ever +has the positive sign is larger. The inputs are compared (line 31) based on magnitudes. If the signs were both +negative then the unsigned comparison is performed in the opposite direction (line 33). Otherwise, the signs are assumed to be both positive and a forward direction unsigned comparison is performed. \section*{Exercises} @@ -2218,19 +2208,21 @@ The final carry is stored in $c_{max}$ and digits above $max$ upto $oldused$ are \end{alltt} \end{small} -Lines 27 to 35 perform the initial sorting of the inputs and determine the $min$ and $max$ variables. Note that $x$ is a pointer to a -mp\_int assigned to the largest input, in effect it is a local alias. Lines 37 to 42 ensure that the destination is grown to -accomodate the result of the addition. +We first sort (lines 27 to 35) the inputs based on magnitude and determine the $min$ and $max$ variables. +Note that $x$ is a pointer to an mp\_int assigned to the largest input, in effect it is a local alias. Next we +grow the destination (37 to 42) ensure that it can accomodate the result of the addition. Similar to the implementation of mp\_copy this function uses the braced code and local aliases coding style. The three aliases that are on lines 55, 58 and 61 represent the two inputs and destination variables respectively. These aliases are used to ensure the compiler does not have to dereference $a$, $b$ or $c$ (respectively) to access the digits of the respective mp\_int. -The initial carry $u$ is cleared on line 64, note that $u$ is of type mp\_digit which ensures type compatibility within the -implementation. The initial addition loop begins on line 65 and ends on line 74. Similarly the conditional addition loop -begins on line 80 and ends on line 90. The addition is finished with the final carry being stored in $tmpc$ on line 93. -Note the ``++'' operator on the same line. After line 93 $tmpc$ will point to the $c.used$'th digit of the mp\_int $c$. This is useful -for the next loop on lines 96 to 99 which set any old upper digits to zero. +The initial carry $u$ will be cleared (line 64), note that $u$ is of type mp\_digit which ensures type +compatibility within the implementation. The initial addition (line 65 to 74) adds digits from +both inputs until the smallest input runs out of digits. Similarly the conditional addition loop +(line 80 to 90) adds the remaining digits from the larger of the two inputs. The addition is finished +with the final carry being stored in $tmpc$ (line 93). Note the ``++'' operator within the same expression. +After line 93, $tmpc$ will point to the $c.used$'th digit of the mp\_int $c$. This is useful +for the next loop (line 96 to 99) which set any old upper digits to zero. \subsection{Low Level Subtraction} The low level unsigned subtraction algorithm is very similar to the low level unsigned addition algorithm. The principle difference is that the @@ -2245,7 +2237,7 @@ this algorithm we will assume that the variable $\gamma$ represents the number o mp\_digit (\textit{this implies $2^{\gamma} > \beta$}). For example, the default for LibTomMath is to use a ``unsigned long'' for the mp\_digit ``type'' while $\beta = 2^{28}$. In ISO C an ``unsigned long'' -data type must be able to represent $0 \le x < 2^{32}$ meaning that in this case $\gamma = 32$. +data type must be able to represent $0 \le x < 2^{32}$ meaning that in this case $\gamma \ge 32$. \newpage\begin{figure}[!here] \begin{center} @@ -2387,20 +2379,23 @@ If $b$ has a smaller magnitude than $a$ then step 9 will force the carry and cop \end{alltt} \end{small} -Line 24 and 25 perform the initial hardcoded sorting of the inputs. In reality the $min$ and $max$ variables are only aliases and are only -used to make the source code easier to read. Again the pointer alias optimization is used within this algorithm. Lines 41, 42 and 43 initialize the aliases for -$a$, $b$ and $c$ respectively. +Like low level addition we ``sort'' the inputs. Except in this case the sorting is hardcoded +(lines 24 and 25). In reality the $min$ and $max$ variables are only aliases and are only +used to make the source code easier to read. Again the pointer alias optimization is used +within this algorithm. The aliases $tmpa$, $tmpb$ and $tmpc$ are initialized +(lines 41, 42 and 43) for $a$, $b$ and $c$ respectively. -The first subtraction loop occurs on lines 46 through 60. The theory behind the subtraction loop is exactly the same as that for -the addition loop. As remarked earlier there is an implementation reason for using the ``awkward'' method of extracting the carry -(\textit{see line 56}). The traditional method for extracting the carry would be to shift by $lg(\beta)$ positions and logically AND -the least significant bit. The AND operation is required because all of the bits above the $\lg(\beta)$'th bit will be set to one after a carry -occurs from subtraction. This carry extraction requires two relatively cheap operations to extract the carry. The other method is to simply -shift the most significant bit to the least significant bit thus extracting the carry with a single cheap operation. This optimization only works on -twos compliment machines which is a safe assumption to make. +The first subtraction loop (lines 46 through 60) subtract digits from both inputs until the smaller of +the two inputs has been exhausted. As remarked earlier there is an implementation reason for using the ``awkward'' +method of extracting the carry (line 56). The traditional method for extracting the carry would be to shift +by $lg(\beta)$ positions and logically AND the least significant bit. The AND operation is required because all of +the bits above the $\lg(\beta)$'th bit will be set to one after a carry occurs from subtraction. This carry +extraction requires two relatively cheap operations to extract the carry. The other method is to simply shift the +most significant bit to the least significant bit thus extracting the carry with a single cheap operation. This +optimization only works on twos compliment machines which is a safe assumption to make. -If $a$ has a larger magnitude than $b$ an additional loop (\textit{see lines 63 through 72}) is required to propagate the carry through -$a$ and copy the result to $c$. +If $a$ has a larger magnitude than $b$ an additional loop (lines 63 through 72) is required to propagate +the carry through $a$ and copy the result to $c$. \subsection{High Level Addition} Now that both lower level addition and subtraction algorithms have been established an effective high level signed addition algorithm can be @@ -2985,10 +2980,11 @@ step 8 sets the lower $b$ digits to zero. \end{alltt} \end{small} -The if statement on line 23 ensures that the $b$ variable is greater than zero. The \textbf{used} count is incremented by $b$ before -the copy loop begins. This elminates the need for an additional variable in the for loop. The variable $top$ on line 41 is an alias -for the leading digit while $bottom$ on line 44 is an alias for the trailing edge. The aliases form a window of exactly $b$ digits -over the input. +The if statement (line 23) ensures that the $b$ variable is greater than zero since we do not interpret negative +shift counts properly. The \textbf{used} count is incremented by $b$ before the copy loop begins. This elminates +the need for an additional variable in the for loop. The variable $top$ (line 41) is an alias +for the leading digit while $bottom$ (line 44) is an alias for the trailing edge. The aliases form a +window of exactly $b$ digits over the input. \subsection{Division by $x$} @@ -3095,9 +3091,9 @@ Once the window copy is complete the upper digits must be zeroed and the \textbf \end{alltt} \end{small} -The only noteworthy element of this routine is the lack of a return type. - --- Will update later to give it a return type...Tom +The only noteworthy element of this routine is the lack of a return type since it cannot fail. Like mp\_lshd() we +form a sliding window except we copy in the other direction. After the window (line 59) we then zero +the upper digits of the input to make sure the result is correct. \section{Powers of Two} @@ -3228,7 +3224,15 @@ complete. It is possible to optimize this algorithm down to a $O(n)$ algorithm \end{alltt} \end{small} -Notes to be revised when code is updated. -- Tom +The shifting is performed in--place which means the first step (line 24) is to copy the input to the +destination. We avoid calling mp\_copy() by making sure the mp\_ints are different. The destination then +has to be grown (line 31) to accomodate the result. + +If the shift count $b$ is larger than $lg(\beta)$ then a call to mp\_lshd() is used to handle all of the multiples +of $lg(\beta)$. Leaving only a remaining shift of $lg(\beta) - 1$ or fewer bits left. Inside the actual shift +loop (lines 45 to 76) we make use of pre--computed values $shift$ and $mask$. These are used to +extract the carry bit(s) to pass into the next iteration of the loop. The $r$ and $rr$ variables form a +chain between consecutive iterations to propagate the carry. \subsection{Division by Power of Two} @@ -3361,7 +3365,8 @@ ignored by passing \textbf{NULL} as the pointer to the mp\_int variable. The result of the remainder operation until the end. This allows $d$ and $a$ to represent the same mp\_int without modifying $a$ before the quotient is obtained. -The remainder of the source code is essentially the same as the source code for mp\_mul\_2d. (-- Fix this paragraph up later, Tom). +The remainder of the source code is essentially the same as the source code for mp\_mul\_2d. The only significant difference is +the direction of the shifts. \subsection{Remainder of Division by Power of Two} @@ -3446,7 +3451,13 @@ is copied to $b$, leading digits are removed and the remaining leading digit is \end{alltt} \end{small} --- Add comments later, Tom. +We first avoid cases of $b \le 0$ by simply mp\_zero()'ing the destination in such cases. Next if $2^b$ is larger +than the input we just mp\_copy() the input and return right away. After this point we know we must actually +perform some work to produce the remainder. + +Recalling that reducing modulo $2^k$ and a binary ``and'' with $2^k - 1$ are numerically equivalent we can quickly reduce +the number. First we zero any digits above the last digit in $2^b$ (line 41). Next we reduce the +leading digit of both (line 45) and then mp\_clamp(). \section*{Exercises} \begin{tabular}{cl} @@ -3611,101 +3622,113 @@ exceed the precision requested. 018 * HAC pp. 595, Algorithm 14.12 Modified so you can control how 019 * many digits of output are created. 020 */ -021 int -022 s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) -023 \{ -024 mp_int t; -025 int res, pa, pb, ix, iy; -026 mp_digit u; -027 mp_word r; -028 mp_digit tmpx, *tmpt, *tmpy; -029 -030 /* can we use the fast multiplier? */ -031 if (((digs) < MP_WARRAY) && -032 MIN (a->used, b->used) < -033 (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) \{ -034 return fast_s_mp_mul_digs (a, b, c, digs); -035 \} -036 -037 if ((res = mp_init_size (&t, digs)) != MP_OKAY) \{ -038 return res; -039 \} -040 t.used = digs; -041 -042 /* compute the digits of the product directly */ -043 pa = a->used; -044 for (ix = 0; ix < pa; ix++) \{ -045 /* set the carry to zero */ -046 u = 0; -047 -048 /* limit ourselves to making digs digits of output */ -049 pb = MIN (b->used, digs - ix); -050 -051 /* setup some aliases */ -052 /* copy of the digit from a used within the nested loop */ -053 tmpx = a->dp[ix]; -054 -055 /* an alias for the destination shifted ix places */ -056 tmpt = t.dp + ix; -057 -058 /* an alias for the digits of b */ -059 tmpy = b->dp; -060 -061 /* compute the columns of the output and propagate the carry */ -062 for (iy = 0; iy < pb; iy++) \{ -063 /* compute the column as a mp_word */ -064 r = ((mp_word)*tmpt) + -065 ((mp_word)tmpx) * ((mp_word)*tmpy++) + -066 ((mp_word) u); -067 -068 /* the new column is the lower part of the result */ -069 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); -070 -071 /* get the carry word from the result */ -072 u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); -073 \} -074 /* set carry if it is placed below digs */ -075 if (ix + iy < digs) \{ -076 *tmpt = u; -077 \} -078 \} -079 -080 mp_clamp (&t); -081 mp_exch (&t, c); -082 -083 mp_clear (&t); -084 return MP_OKAY; -085 \} -086 #endif +021 int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +022 \{ +023 mp_int t; +024 int res, pa, pb, ix, iy; +025 mp_digit u; +026 mp_word r; +027 mp_digit tmpx, *tmpt, *tmpy; +028 +029 /* can we use the fast multiplier? */ +030 if (((digs) < MP_WARRAY) && +031 MIN (a->used, b->used) < +032 (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) \{ +033 return fast_s_mp_mul_digs (a, b, c, digs); +034 \} +035 +036 if ((res = mp_init_size (&t, digs)) != MP_OKAY) \{ +037 return res; +038 \} +039 t.used = digs; +040 +041 /* compute the digits of the product directly */ +042 pa = a->used; +043 for (ix = 0; ix < pa; ix++) \{ +044 /* set the carry to zero */ +045 u = 0; +046 +047 /* limit ourselves to making digs digits of output */ +048 pb = MIN (b->used, digs - ix); +049 +050 /* setup some aliases */ +051 /* copy of the digit from a used within the nested loop */ +052 tmpx = a->dp[ix]; +053 +054 /* an alias for the destination shifted ix places */ +055 tmpt = t.dp + ix; +056 +057 /* an alias for the digits of b */ +058 tmpy = b->dp; +059 +060 /* compute the columns of the output and propagate the carry */ +061 for (iy = 0; iy < pb; iy++) \{ +062 /* compute the column as a mp_word */ +063 r = ((mp_word)*tmpt) + +064 ((mp_word)tmpx) * ((mp_word)*tmpy++) + +065 ((mp_word) u); +066 +067 /* the new column is the lower part of the result */ +068 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); +069 +070 /* get the carry word from the result */ +071 u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); +072 \} +073 /* set carry if it is placed below digs */ +074 if (ix + iy < digs) \{ +075 *tmpt = u; +076 \} +077 \} +078 +079 mp_clamp (&t); +080 mp_exch (&t, c); +081 +082 mp_clear (&t); +083 return MP_OKAY; +084 \} +085 #endif \end{alltt} \end{small} -Lines 31 to 35 determine if the Comba method can be used first. The conditions for using the Comba routine are that min$(a.used, b.used) < \delta$ and -the number of digits of output is less than \textbf{MP\_WARRAY}. This new constant is used to control -the stack usage in the Comba routines. By default it is set to $\delta$ but can be reduced when memory is at a premium. +First we determine (line 30) if the Comba method can be used first since it's faster. The conditions for +sing the Comba routine are that min$(a.used, b.used) < \delta$ and the number of digits of output is less than +\textbf{MP\_WARRAY}. This new constant is used to control the stack usage in the Comba routines. By default it is +set to $\delta$ but can be reduced when memory is at a premium. + +If we cannot use the Comba method we proceed to setup the baseline routine. We allocate the the destination mp\_int +$t$ (line 36) to the exact size of the output to avoid further re--allocations. At this point we now +begin the $O(n^2)$ loop. -Of particular importance is the calculation of the $ix+iy$'th column on lines 64, 65 and 66. Note how all of the -variables are cast to the type \textbf{mp\_word}, which is also the type of variable $\hat r$. That is to ensure that double precision operations -are used instead of single precision. The multiplication on line 65 makes use of a specific GCC optimizer behaviour. On the outset it looks like -the compiler will have to use a double precision multiplication to produce the result required. Such an operation would be horribly slow on most -processors and drag this to a crawl. However, GCC is smart enough to realize that double wide output single precision multipliers can be used. For -example, the instruction ``MUL'' on the x86 processor can multiply two 32-bit values and produce a 64-bit result. +This implementation of multiplication has the caveat that it can be trimmed to only produce a variable number of +digits as output. In each iteration of the outer loop the $pb$ variable is set (line 48) to the maximum +number of inner loop iterations. + +Inside the inner loop we calculate $\hat r$ as the mp\_word product of the two mp\_digits and the addition of the +carry from the previous iteration. A particularly important observation is that most modern optimizing +C compilers (GCC for instance) can recognize that a $N \times N \rightarrow 2N$ multiplication is all that +is required for the product. In x86 terms for example, this means using the MUL instruction. + +Each digit of the product is stored in turn (line 68) and the carry propagated (line 71) to the +next iteration. \subsection{Faster Multiplication by the ``Comba'' Method} -One of the huge drawbacks of the ``baseline'' algorithms is that at the $O(n^2)$ level the carry must be computed and propagated upwards. This -makes the nested loop very sequential and hard to unroll and implement in parallel. The ``Comba'' \cite{COMBA} method is named after little known -(\textit{in cryptographic venues}) Paul G. Comba who described a method of implementing fast multipliers that do not require nested -carry fixup operations. As an interesting aside it seems that Paul Barrett describes a similar technique in -his 1986 paper \cite{BARRETT} written five years before. +One of the huge drawbacks of the ``baseline'' algorithms is that at the $O(n^2)$ level the carry must be +computed and propagated upwards. This makes the nested loop very sequential and hard to unroll and implement +in parallel. The ``Comba'' \cite{COMBA} method is named after little known (\textit{in cryptographic venues}) Paul G. +Comba who described a method of implementing fast multipliers that do not require nested carry fixup operations. As an +interesting aside it seems that Paul Barrett describes a similar technique in his 1986 paper \cite{BARRETT} written +five years before. -At the heart of the Comba technique is once again the long-hand algorithm. Except in this case a slight twist is placed on how -the columns of the result are produced. In the standard long-hand algorithm rows of products are produced then added together to form the -final result. In the baseline algorithm the columns are added together after each iteration to get the result instantaneously. +At the heart of the Comba technique is once again the long-hand algorithm. Except in this case a slight +twist is placed on how the columns of the result are produced. In the standard long-hand algorithm rows of products +are produced then added together to form the final result. In the baseline algorithm the columns are added together +after each iteration to get the result instantaneously. -In the Comba algorithm the columns of the result are produced entirely independently of each other. That is at the $O(n^2)$ level a -simple multiplication and addition step is performed. The carries of the columns are propagated after the nested loop to reduce the amount -of work requiored. Succintly the first step of the algorithm is to compute the product vector $\vec x$ as follows. +In the Comba algorithm the columns of the result are produced entirely independently of each other. That is at +the $O(n^2)$ level a simple multiplication and addition step is performed. The carries of the columns are propagated +after the nested loop to reduce the amount of work requiored. Succintly the first step of the algorithm is to compute +the product vector $\vec x$ as follows. \begin{equation} \vec x_n = \sum_{i+j = n} a_ib_j, \forall n \in \lbrace 0, 1, 2, \ldots, i + j \rbrace @@ -3799,38 +3822,32 @@ $256$ digits would allow for numbers in the range of $0 \le x < 2^{7168}$ which, \textbf{Input}. mp\_int $a$, mp\_int $b$ and an integer $digs$ \\ \textbf{Output}. $c \leftarrow \vert a \vert \cdot \vert b \vert \mbox{ (mod }\beta^{digs}\mbox{)}$. \\ \hline \\ -Place an array of \textbf{MP\_WARRAY} double precision digits named $\hat W$ on the stack. \\ +Place an array of \textbf{MP\_WARRAY} single precision digits named $W$ on the stack. \\ 1. If $c.alloc < digs$ then grow $c$ to $digs$ digits. (\textit{mp\_grow}) \\ 2. If step 1 failed return(\textit{MP\_MEM}).\\ \\ -Zero the temporary array $\hat W$. \\ -3. for $n$ from $0$ to $digs - 1$ do \\ -\hspace{3mm}3.1 $\hat W_n \leftarrow 0$ \\ +3. $pa \leftarrow \mbox{MIN}(digs, a.used + b.used)$ \\ \\ -Compute the columns. \\ -4. for $ix$ from $0$ to $a.used - 1$ do \\ -\hspace{3mm}4.1 $pb \leftarrow \mbox{min}(b.used, digs - ix)$ \\ -\hspace{3mm}4.2 If $pb < 1$ then goto step 5. \\ -\hspace{3mm}4.3 for $iy$ from $0$ to $pb - 1$ do \\ -\hspace{6mm}4.3.1 $\hat W_{ix+iy} \leftarrow \hat W_{ix+iy} + a_{ix}b_{iy}$ \\ +4. $\_ \hat W \leftarrow 0$ \\ +5. for $ix$ from 0 to $pa - 1$ do \\ +\hspace{3mm}5.1 $ty \leftarrow \mbox{MIN}(b.used - 1, ix)$ \\ +\hspace{3mm}5.2 $tx \leftarrow ix - ty$ \\ +\hspace{3mm}5.3 $iy \leftarrow \mbox{MIN}(a.used - tx, ty + 1)$ \\ +\hspace{3mm}5.4 for $iz$ from 0 to $iy - 1$ do \\ +\hspace{6mm}5.4.1 $\_ \hat W \leftarrow \_ \hat W + a_{tx+iy}b_{ty-iy}$ \\ +\hspace{3mm}5.5 $W_{ix} \leftarrow \_ \hat W (\mbox{mod }\beta)$\\ +\hspace{3mm}5.6 $\_ \hat W \leftarrow \lfloor \_ \hat W / \beta \rfloor$ \\ +6. $W_{pa} \leftarrow \_ \hat W (\mbox{mod }\beta)$ \\ \\ -Propagate the carries upwards. \\ -5. $oldused \leftarrow c.used$ \\ -6. $c.used \leftarrow digs$ \\ -7. If $digs > 1$ then do \\ -\hspace{3mm}7.1. for $ix$ from $1$ to $digs - 1$ do \\ -\hspace{6mm}7.1.1 $\hat W_{ix} \leftarrow \hat W_{ix} + \lfloor \hat W_{ix-1} / \beta \rfloor$ \\ -\hspace{6mm}7.1.2 $c_{ix - 1} \leftarrow \hat W_{ix - 1} \mbox{ (mod }\beta\mbox{)}$ \\ -8. else do \\ -\hspace{3mm}8.1 $ix \leftarrow 0$ \\ -9. $c_{ix} \leftarrow \hat W_{ix} \mbox{ (mod }\beta\mbox{)}$ \\ +7. $oldused \leftarrow c.used$ \\ +8. $c.used \leftarrow digs$ \\ +9. for $ix$ from $0$ to $pa$ do \\ +\hspace{3mm}9.1 $c_{ix} \leftarrow W_{ix}$ \\ +10. for $ix$ from $pa + 1$ to $oldused - 1$ do \\ +\hspace{3mm}10.1 $c_{ix} \leftarrow 0$ \\ \\ -Zero excess digits. \\ -10. If $digs < oldused$ then do \\ -\hspace{3mm}10.1 for $n$ from $digs$ to $oldused - 1$ do \\ -\hspace{6mm}10.1.1 $c_n \leftarrow 0$ \\ -11. Clamp excessive digits of $c$. (\textit{mp\_clamp}) \\ -12. Return(\textit{MP\_OKAY}). \\ +11. Clamp $c$. \\ +12. Return MP\_OKAY. \\ \hline \end{tabular} \end{center} @@ -3840,15 +3857,24 @@ Zero excess digits. \\ \end{figure} \textbf{Algorithm fast\_s\_mp\_mul\_digs.} -This algorithm performs the unsigned multiplication of $a$ and $b$ using the Comba method limited to $digs$ digits of precision. The algorithm -essentially peforms the same calculation as algorithm s\_mp\_mul\_digs, just much faster. +This algorithm performs the unsigned multiplication of $a$ and $b$ using the Comba method limited to $digs$ digits of precision. + +The outer loop of this algorithm is more complicated than that of the baseline multiplier. This is because on the inside of the +loop we want to produce one column per pass. This allows the accumulator $\_ \hat W$ to be placed in CPU registers and +reduce the memory bandwidth to two \textbf{mp\_digit} reads per iteration. -The array $\hat W$ is meant to be on the stack when the algorithm is used. The size of the array does not change which is ideal. Note also that -unlike algorithm s\_mp\_mul\_digs no temporary mp\_int is required since the result is calculated directly in $\hat W$. +The $ty$ variable is set to the minimum count of $ix$ or the number of digits in $b$. That way if $a$ has more digits than +$b$ this will be limited to $b.used - 1$. The $tx$ variable is set to the to the distance past $b.used$ the variable +$ix$ is. This is used for the immediately subsequent statement where we find $iy$. -The $O(n^2)$ loop on step four is where the Comba method's advantages begin to show through in comparison to the baseline algorithm. The lack of -a carry variable or propagation in this loop allows the loop to be performed with only single precision multiplication and additions. Now that each -iteration of the inner loop can be performed independent of the others the inner loop can be performed with a high level of parallelism. +The variable $iy$ is the minimum digits we can read from either $a$ or $b$ before running out. Computing one column at a time +means we have to scan one integer upwards and the other downwards. $a$ starts at $tx$ and $b$ starts at $ty$. In each +pass we are producing the $ix$'th output column and we note that $tx + ty = ix$. As we move $tx$ upwards we have to +move $ty$ downards so the equality remains valid. The $iy$ variable is the number of iterations until +$tx \ge a.used$ or $ty < 0$ occurs. + +After every inner pass we store the lower half of the accumulator into $W_{ix}$ and then propagate the carry of the accumulator +into the next round by dividing $\_ \hat W$ by $\beta$. To measure the benefits of the Comba method over the baseline method consider the number of operations that are required. If the cost in terms of time of a multiply and addition is $p$ and the cost of a carry propagation is $q$ then a baseline multiplication would require @@ -3877,97 +3903,95 @@ and addition operations in the nested loop in parallel. 030 * Based on Algorithm 14.12 on pp.595 of HAC. 031 * 032 */ -033 int -034 fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) -035 \{ -036 int olduse, res, pa, ix, iz; -037 mp_digit W[MP_WARRAY]; -038 register mp_word _W; -039 -040 /* grow the destination as required */ -041 if (c->alloc < digs) \{ -042 if ((res = mp_grow (c, digs)) != MP_OKAY) \{ -043 return res; -044 \} -045 \} -046 -047 /* number of output digits to produce */ -048 pa = MIN(digs, a->used + b->used); -049 -050 /* clear the carry */ -051 _W = 0; -052 for (ix = 0; ix < pa; ix++) \{ -053 int tx, ty; -054 int iy; -055 mp_digit *tmpx, *tmpy; -056 -057 /* get offsets into the two bignums */ -058 ty = MIN(b->used-1, ix); -059 tx = ix - ty; -060 -061 /* setup temp aliases */ -062 tmpx = a->dp + tx; -063 tmpy = b->dp + ty; -064 -065 /* this is the number of times the loop will iterrate, essentially its - -066 while (tx++ < a->used && ty-- >= 0) \{ ... \} -067 */ -068 iy = MIN(a->used-tx, ty+1); -069 -070 /* execute loop */ -071 for (iz = 0; iz < iy; ++iz) \{ -072 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); -073 \} -074 -075 /* store term */ -076 W[ix] = ((mp_digit)_W) & MP_MASK; -077 -078 /* make next carry */ -079 _W = _W >> ((mp_word)DIGIT_BIT); -080 \} -081 -082 /* store final carry */ -083 W[ix] = _W; -084 -085 /* setup dest */ -086 olduse = c->used; -087 c->used = digs; -088 -089 \{ -090 register mp_digit *tmpc; -091 tmpc = c->dp; -092 for (ix = 0; ix < digs; ix++) \{ -093 /* now extract the previous digit [below the carry] */ -094 *tmpc++ = W[ix]; -095 \} -096 -097 /* clear unused digits [that existed in the old copy of c] */ -098 for (; ix < olduse; ix++) \{ -099 *tmpc++ = 0; -100 \} -101 \} -102 mp_clamp (c); -103 return MP_OKAY; -104 \} -105 #endif +033 int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +034 \{ +035 int olduse, res, pa, ix, iz; +036 mp_digit W[MP_WARRAY]; +037 register mp_word _W; +038 +039 /* grow the destination as required */ +040 if (c->alloc < digs) \{ +041 if ((res = mp_grow (c, digs)) != MP_OKAY) \{ +042 return res; +043 \} +044 \} +045 +046 /* number of output digits to produce */ +047 pa = MIN(digs, a->used + b->used); +048 +049 /* clear the carry */ +050 _W = 0; +051 for (ix = 0; ix < pa; ix++) \{ +052 int tx, ty; +053 int iy; +054 mp_digit *tmpx, *tmpy; +055 +056 /* get offsets into the two bignums */ +057 ty = MIN(b->used-1, ix); +058 tx = ix - ty; +059 +060 /* setup temp aliases */ +061 tmpx = a->dp + tx; +062 tmpy = b->dp + ty; +063 +064 /* this is the number of times the loop will iterrate, essentially +065 while (tx++ < a->used && ty-- >= 0) \{ ... \} +066 */ +067 iy = MIN(a->used-tx, ty+1); +068 +069 /* execute loop */ +070 for (iz = 0; iz < iy; ++iz) \{ +071 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); +072 \} +073 +074 /* store term */ +075 W[ix] = ((mp_digit)_W) & MP_MASK; +076 +077 /* make next carry */ +078 _W = _W >> ((mp_word)DIGIT_BIT); +079 \} +080 +081 /* store final carry */ +082 W[ix] = (mp_digit)(_W & MP_MASK); +083 +084 /* setup dest */ +085 olduse = c->used; +086 c->used = pa; +087 +088 \{ +089 register mp_digit *tmpc; +090 tmpc = c->dp; +091 for (ix = 0; ix < pa+1; ix++) \{ +092 /* now extract the previous digit [below the carry] */ +093 *tmpc++ = W[ix]; +094 \} +095 +096 /* clear unused digits [that existed in the old copy of c] */ +097 for (; ix < olduse; ix++) \{ +098 *tmpc++ = 0; +099 \} +100 \} +101 mp_clamp (c); +102 return MP_OKAY; +103 \} +104 #endif \end{alltt} \end{small} -The memset on line @47,memset@ clears the initial $\hat W$ array to zero in a single step. Like the slower baseline multiplication -implementation a series of aliases (\textit{lines 62, 63 and 76}) are used to simplify the inner $O(n^2)$ loop. -In this case a new alias $\_\hat W$ has been added which refers to the double precision columns offset by $ix$ in each pass. +As per the pseudo--code we first calculate $pa$ (line 47) as the number of digits to output. Next we begin the outer loop +to produce the individual columns of the product. We use the two aliases $tmpx$ and $tmpy$ (lines 61, 62) to point +inside the two multiplicands quickly. -The inner loop on lines 92, 79 and 80 is where the algorithm will spend the majority of the time, which is why it has been -stripped to the bones of any extra baggage\footnote{Hence the pointer aliases.}. On x86 processors the multiplication and additions amount to at the -very least five instructions (\textit{two loads, two additions, one multiply}) while on the ARMv4 processors they amount to only three -(\textit{one load, one store, one multiply-add}). For both of the x86 and ARMv4 processors the GCC compiler performs a good job at unrolling the loop -and scheduling the instructions so there are very few dependency stalls. +The inner loop (lines 70 to 72) of this implementation is where the tradeoff come into play. Originally this comba +implementation was ``row--major'' which means it adds to each of the columns in each pass. After the outer loop it would then fix +the carries. This was very fast except it had an annoying drawback. You had to read a mp\_word and two mp\_digits and write +one mp\_word per iteration. On processors such as the Athlon XP and P4 this did not matter much since the cache bandwidth +is very high and it can keep the ALU fed with data. It did, however, matter on older and embedded cpus where cache is often +slower and also often doesn't exist. This new algorithm only performs two reads per iteration under the assumption that the +compiler has aliased $\_ \hat W$ to a CPU register. -In theory the difference between the baseline and comba algorithms is a mere $O(qn)$ time difference. However, in the $O(n^2)$ nested loop of the -baseline method there are dependency stalls as the algorithm must wait for the multiplier to finish before propagating the carry to the next -digit. As a result fewer of the often multiple execution units\footnote{The AMD Athlon has three execution units and the Intel P4 has four.} can -be simultaneously used. +After the inner loop we store the current accumulator in $W$ and shift $\_ \hat W$ (lines 75, 78) to forward it as +a carry for the next pass. After the outer loop we use the final carry (line 82) as the last digit of the product. \subsection{Polynomial Basis Multiplication} To break the $O(n^2)$ barrier in multiplication requires a completely different look at integer multiplication. In the following algorithms @@ -4444,277 +4468,290 @@ result $a \cdot b$ is produced. 016 017 /* multiplication using the Toom-Cook 3-way algorithm 018 * -019 * Much more complicated than Karatsuba but has a lower asymptotic running t - ime of -020 * O(N**1.464). This algorithm is only particularly useful on VERY large -021 * inputs (we're talking 1000s of digits here...). -022 */ -023 int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) -024 \{ -025 mp_int w0, w1, w2, w3, w4, tmp1, tmp2, a0, a1, a2, b0, b1, b2; -026 int res, B; -027 -028 /* init temps */ -029 if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, -030 &a0, &a1, &a2, &b0, &b1, -031 &b2, &tmp1, &tmp2, NULL)) != MP_OKAY) \{ -032 return res; -033 \} -034 -035 /* B */ -036 B = MIN(a->used, b->used) / 3; -037 -038 /* a = a2 * B**2 + a1 * B + a0 */ -039 if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) \{ -040 goto ERR; -041 \} -042 -043 if ((res = mp_copy(a, &a1)) != MP_OKAY) \{ -044 goto ERR; -045 \} -046 mp_rshd(&a1, B); -047 mp_mod_2d(&a1, DIGIT_BIT * B, &a1); -048 -049 if ((res = mp_copy(a, &a2)) != MP_OKAY) \{ -050 goto ERR; -051 \} -052 mp_rshd(&a2, B*2); -053 -054 /* b = b2 * B**2 + b1 * B + b0 */ -055 if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) \{ -056 goto ERR; -057 \} -058 -059 if ((res = mp_copy(b, &b1)) != MP_OKAY) \{ -060 goto ERR; -061 \} -062 mp_rshd(&b1, B); -063 mp_mod_2d(&b1, DIGIT_BIT * B, &b1); -064 -065 if ((res = mp_copy(b, &b2)) != MP_OKAY) \{ -066 goto ERR; -067 \} -068 mp_rshd(&b2, B*2); -069 -070 /* w0 = a0*b0 */ -071 if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) \{ -072 goto ERR; -073 \} -074 -075 /* w4 = a2 * b2 */ -076 if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) \{ -077 goto ERR; -078 \} -079 -080 /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */ -081 if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) \{ -082 goto ERR; -083 \} -084 if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) \{ -085 goto ERR; -086 \} -087 if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) \{ -088 goto ERR; -089 \} -090 if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) \{ -091 goto ERR; -092 \} -093 -094 if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) \{ -095 goto ERR; -096 \} -097 if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) \{ -098 goto ERR; -099 \} -100 if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) \{ -101 goto ERR; -102 \} -103 if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) \{ -104 goto ERR; -105 \} -106 -107 if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) \{ -108 goto ERR; -109 \} -110 -111 /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */ -112 if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) \{ -113 goto ERR; -114 \} -115 if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) \{ -116 goto ERR; -117 \} -118 if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) \{ -119 goto ERR; -120 \} -121 if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) \{ -122 goto ERR; -123 \} -124 -125 if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) \{ -126 goto ERR; -127 \} -128 if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) \{ -129 goto ERR; -130 \} -131 if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) \{ -132 goto ERR; -133 \} -134 if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) \{ -135 goto ERR; -136 \} -137 -138 if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) \{ -139 goto ERR; -140 \} -141 -142 -143 /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */ -144 if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) \{ -145 goto ERR; -146 \} -147 if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) \{ -148 goto ERR; -149 \} -150 if ((res = mp_add(&b2, &b1, &tmp2)) != MP_OKAY) \{ -151 goto ERR; -152 \} -153 if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) \{ -154 goto ERR; -155 \} -156 if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) \{ -157 goto ERR; -158 \} -159 -160 /* now solve the matrix -161 -162 0 0 0 0 1 -163 1 2 4 8 16 -164 1 1 1 1 1 -165 16 8 4 2 1 -166 1 0 0 0 0 -167 -168 using 12 subtractions, 4 shifts, -169 2 small divisions and 1 small multiplication -170 */ -171 -172 /* r1 - r4 */ -173 if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) \{ -174 goto ERR; -175 \} -176 /* r3 - r0 */ -177 if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) \{ -178 goto ERR; -179 \} -180 /* r1/2 */ -181 if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) \{ -182 goto ERR; -183 \} -184 /* r3/2 */ -185 if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) \{ -186 goto ERR; -187 \} -188 /* r2 - r0 - r4 */ -189 if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) \{ -190 goto ERR; -191 \} -192 if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) \{ -193 goto ERR; -194 \} -195 /* r1 - r2 */ -196 if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) \{ -197 goto ERR; -198 \} -199 /* r3 - r2 */ -200 if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) \{ -201 goto ERR; -202 \} -203 /* r1 - 8r0 */ -204 if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) \{ -205 goto ERR; -206 \} -207 if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) \{ -208 goto ERR; -209 \} -210 /* r3 - 8r4 */ -211 if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) \{ -212 goto ERR; -213 \} -214 if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) \{ -215 goto ERR; -216 \} -217 /* 3r2 - r1 - r3 */ -218 if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) \{ -219 goto ERR; -220 \} -221 if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) \{ -222 goto ERR; -223 \} -224 if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) \{ -225 goto ERR; -226 \} -227 /* r1 - r2 */ -228 if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) \{ -229 goto ERR; -230 \} -231 /* r3 - r2 */ -232 if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) \{ -233 goto ERR; -234 \} -235 /* r1/3 */ -236 if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) \{ -237 goto ERR; -238 \} -239 /* r3/3 */ -240 if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) \{ -241 goto ERR; -242 \} -243 -244 /* at this point shift W[n] by B*n */ -245 if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) \{ -246 goto ERR; -247 \} -248 if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) \{ -249 goto ERR; -250 \} -251 if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) \{ -252 goto ERR; -253 \} -254 if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) \{ -255 goto ERR; -256 \} -257 -258 if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) \{ -259 goto ERR; -260 \} -261 if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) \{ -262 goto ERR; -263 \} -264 if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) \{ -265 goto ERR; -266 \} -267 if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) \{ -268 goto ERR; -269 \} -270 -271 ERR: -272 mp_clear_multi(&w0, &w1, &w2, &w3, &w4, -273 &a0, &a1, &a2, &b0, &b1, -274 &b2, &tmp1, &tmp2, NULL); -275 return res; -276 \} -277 -278 #endif +019 * Much more complicated than Karatsuba but has a lower +020 * asymptotic running time of O(N**1.464). This algorithm is +021 * only particularly useful on VERY large inputs +022 * (we're talking 1000s of digits here...). +023 */ +024 int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) +025 \{ +026 mp_int w0, w1, w2, w3, w4, tmp1, tmp2, a0, a1, a2, b0, b1, b2; +027 int res, B; +028 +029 /* init temps */ +030 if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, +031 &a0, &a1, &a2, &b0, &b1, +032 &b2, &tmp1, &tmp2, NULL)) != MP_OKAY) \{ +033 return res; +034 \} +035 +036 /* B */ +037 B = MIN(a->used, b->used) / 3; +038 +039 /* a = a2 * B**2 + a1 * B + a0 */ +040 if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) \{ +041 goto ERR; +042 \} +043 +044 if ((res = mp_copy(a, &a1)) != MP_OKAY) \{ +045 goto ERR; +046 \} +047 mp_rshd(&a1, B); +048 mp_mod_2d(&a1, DIGIT_BIT * B, &a1); +049 +050 if ((res = mp_copy(a, &a2)) != MP_OKAY) \{ +051 goto ERR; +052 \} +053 mp_rshd(&a2, B*2); +054 +055 /* b = b2 * B**2 + b1 * B + b0 */ +056 if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) \{ +057 goto ERR; +058 \} +059 +060 if ((res = mp_copy(b, &b1)) != MP_OKAY) \{ +061 goto ERR; +062 \} +063 mp_rshd(&b1, B); +064 mp_mod_2d(&b1, DIGIT_BIT * B, &b1); +065 +066 if ((res = mp_copy(b, &b2)) != MP_OKAY) \{ +067 goto ERR; +068 \} +069 mp_rshd(&b2, B*2); +070 +071 /* w0 = a0*b0 */ +072 if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) \{ +073 goto ERR; +074 \} +075 +076 /* w4 = a2 * b2 */ +077 if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) \{ +078 goto ERR; +079 \} +080 +081 /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */ +082 if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) \{ +083 goto ERR; +084 \} +085 if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) \{ +086 goto ERR; +087 \} +088 if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) \{ +089 goto ERR; +090 \} +091 if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) \{ +092 goto ERR; +093 \} +094 +095 if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) \{ +096 goto ERR; +097 \} +098 if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) \{ +099 goto ERR; +100 \} +101 if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) \{ +102 goto ERR; +103 \} +104 if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) \{ +105 goto ERR; +106 \} +107 +108 if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) \{ +109 goto ERR; +110 \} +111 +112 /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */ +113 if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) \{ +114 goto ERR; +115 \} +116 if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) \{ +117 goto ERR; +118 \} +119 if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) \{ +120 goto ERR; +121 \} +122 if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) \{ +123 goto ERR; +124 \} +125 +126 if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) \{ +127 goto ERR; +128 \} +129 if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) \{ +130 goto ERR; +131 \} +132 if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) \{ +133 goto ERR; +134 \} +135 if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) \{ +136 goto ERR; +137 \} +138 +139 if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) \{ +140 goto ERR; +141 \} +142 +143 +144 /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */ +145 if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) \{ +146 goto ERR; +147 \} +148 if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) \{ +149 goto ERR; +150 \} +151 if ((res = mp_add(&b2, &b1, &tmp2)) != MP_OKAY) \{ +152 goto ERR; +153 \} +154 if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) \{ +155 goto ERR; +156 \} +157 if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) \{ +158 goto ERR; +159 \} +160 +161 /* now solve the matrix +162 +163 0 0 0 0 1 +164 1 2 4 8 16 +165 1 1 1 1 1 +166 16 8 4 2 1 +167 1 0 0 0 0 +168 +169 using 12 subtractions, 4 shifts, +170 2 small divisions and 1 small multiplication +171 */ +172 +173 /* r1 - r4 */ +174 if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) \{ +175 goto ERR; +176 \} +177 /* r3 - r0 */ +178 if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) \{ +179 goto ERR; +180 \} +181 /* r1/2 */ +182 if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) \{ +183 goto ERR; +184 \} +185 /* r3/2 */ +186 if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) \{ +187 goto ERR; +188 \} +189 /* r2 - r0 - r4 */ +190 if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) \{ +191 goto ERR; +192 \} +193 if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) \{ +194 goto ERR; +195 \} +196 /* r1 - r2 */ +197 if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) \{ +198 goto ERR; +199 \} +200 /* r3 - r2 */ +201 if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) \{ +202 goto ERR; +203 \} +204 /* r1 - 8r0 */ +205 if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) \{ +206 goto ERR; +207 \} +208 if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) \{ +209 goto ERR; +210 \} +211 /* r3 - 8r4 */ +212 if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) \{ +213 goto ERR; +214 \} +215 if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) \{ +216 goto ERR; +217 \} +218 /* 3r2 - r1 - r3 */ +219 if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) \{ +220 goto ERR; +221 \} +222 if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) \{ +223 goto ERR; +224 \} +225 if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) \{ +226 goto ERR; +227 \} +228 /* r1 - r2 */ +229 if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) \{ +230 goto ERR; +231 \} +232 /* r3 - r2 */ +233 if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) \{ +234 goto ERR; +235 \} +236 /* r1/3 */ +237 if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) \{ +238 goto ERR; +239 \} +240 /* r3/3 */ +241 if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) \{ +242 goto ERR; +243 \} +244 +245 /* at this point shift W[n] by B*n */ +246 if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) \{ +247 goto ERR; +248 \} +249 if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) \{ +250 goto ERR; +251 \} +252 if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) \{ +253 goto ERR; +254 \} +255 if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) \{ +256 goto ERR; +257 \} +258 +259 if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) \{ +260 goto ERR; +261 \} +262 if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) \{ +263 goto ERR; +264 \} +265 if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) \{ +266 goto ERR; +267 \} +268 if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) \{ +269 goto ERR; +270 \} +271 +272 ERR: +273 mp_clear_multi(&w0, &w1, &w2, &w3, &w4, +274 &a0, &a1, &a2, &b0, &b1, +275 &b2, &tmp1, &tmp2, NULL); +276 return res; +277 \} +278 +279 #endif \end{alltt} \end{small} --- Comments to be added during editing phase. +The first obvious thing to note is that this algorithm is complicated. The complexity is worth it if you are multiplying very +large numbers. For example, a 10,000 digit multiplication takes approximaly 99,282,205 fewer single precision multiplications with +Toom--Cook than a Comba or baseline approach (this is a savings of more than 99$\%$). For most ``crypto'' sized numbers this +algorithm is not practical as Karatsuba has a much lower cutoff point. + +First we split $a$ and $b$ into three roughly equal portions. This has been accomplished (lines 40 to 69) with +combinations of mp\_rshd() and mp\_mod\_2d() function calls. At this point $a = a2 \cdot \beta^2 + a1 \cdot \beta + a0$ and similiarly +for $b$. + +Next we compute the five points $w0, w1, w2, w3$ and $w4$. Recall that $w0$ and $w4$ can be computed directly from the portions so +we get those out of the way first (lines 72 and 77). Next we compute $w1, w2$ and $w3$ using Horners method. + +After this point we solve for the actual values of $w1, w2$ and $w3$ by reducing the $5 \times 5$ system which is relatively +straight forward. \subsection{Signed Multiplication} Now that algorithms to handle multiplications of every useful dimensions have been developed, a rather simple finishing touch is required. So far all of the multiplication algorithms have been unsigned multiplications which leaves only a signed multiplication algorithm to be established. -\newpage\begin{figure}[!here] +\begin{figure}[!here] \begin{small} \begin{center} \begin{tabular}{l} @@ -4847,7 +4884,7 @@ Column two of row one is a square and column three is the first unique column. The baseline squaring algorithm is meant to be a catch-all squaring algorithm. It will handle any of the input sizes that the faster routines will not handle. -\newpage\begin{figure}[!here] +\begin{figure}[!here] \begin{small} \begin{center} \begin{tabular}{l} @@ -4907,75 +4944,79 @@ results calculated so far. This involves expensive carry propagation which will \begin{alltt} 016 017 /* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ -018 int -019 s_mp_sqr (mp_int * a, mp_int * b) -020 \{ -021 mp_int t; -022 int res, ix, iy, pa; -023 mp_word r; -024 mp_digit u, tmpx, *tmpt; -025 -026 pa = a->used; -027 if ((res = mp_init_size (&t, 2*pa + 1)) != MP_OKAY) \{ -028 return res; -029 \} -030 -031 /* default used is maximum possible size */ -032 t.used = 2*pa + 1; -033 -034 for (ix = 0; ix < pa; ix++) \{ -035 /* first calculate the digit at 2*ix */ -036 /* calculate double precision result */ -037 r = ((mp_word) t.dp[2*ix]) + -038 ((mp_word)a->dp[ix])*((mp_word)a->dp[ix]); -039 -040 /* store lower part in result */ -041 t.dp[ix+ix] = (mp_digit) (r & ((mp_word) MP_MASK)); -042 -043 /* get the carry */ -044 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); -045 -046 /* left hand side of A[ix] * A[iy] */ -047 tmpx = a->dp[ix]; -048 -049 /* alias for where to store the results */ -050 tmpt = t.dp + (2*ix + 1); -051 -052 for (iy = ix + 1; iy < pa; iy++) \{ -053 /* first calculate the product */ -054 r = ((mp_word)tmpx) * ((mp_word)a->dp[iy]); -055 -056 /* now calculate the double precision result, note we use -057 * addition instead of *2 since it's easier to optimize -058 */ -059 r = ((mp_word) *tmpt) + r + r + ((mp_word) u); -060 -061 /* store lower part */ -062 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); -063 -064 /* get carry */ -065 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); -066 \} -067 /* propagate upwards */ -068 while (u != ((mp_digit) 0)) \{ -069 r = ((mp_word) *tmpt) + ((mp_word) u); -070 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); -071 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); -072 \} -073 \} -074 -075 mp_clamp (&t); -076 mp_exch (&t, b); -077 mp_clear (&t); -078 return MP_OKAY; -079 \} -080 #endif +018 int s_mp_sqr (mp_int * a, mp_int * b) +019 \{ +020 mp_int t; +021 int res, ix, iy, pa; +022 mp_word r; +023 mp_digit u, tmpx, *tmpt; +024 +025 pa = a->used; +026 if ((res = mp_init_size (&t, 2*pa + 1)) != MP_OKAY) \{ +027 return res; +028 \} +029 +030 /* default used is maximum possible size */ +031 t.used = 2*pa + 1; +032 +033 for (ix = 0; ix < pa; ix++) \{ +034 /* first calculate the digit at 2*ix */ +035 /* calculate double precision result */ +036 r = ((mp_word) t.dp[2*ix]) + +037 ((mp_word)a->dp[ix])*((mp_word)a->dp[ix]); +038 +039 /* store lower part in result */ +040 t.dp[ix+ix] = (mp_digit) (r & ((mp_word) MP_MASK)); +041 +042 /* get the carry */ +043 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); +044 +045 /* left hand side of A[ix] * A[iy] */ +046 tmpx = a->dp[ix]; +047 +048 /* alias for where to store the results */ +049 tmpt = t.dp + (2*ix + 1); +050 +051 for (iy = ix + 1; iy < pa; iy++) \{ +052 /* first calculate the product */ +053 r = ((mp_word)tmpx) * ((mp_word)a->dp[iy]); +054 +055 /* now calculate the double precision result, note we use +056 * addition instead of *2 since it's easier to optimize +057 */ +058 r = ((mp_word) *tmpt) + r + r + ((mp_word) u); +059 +060 /* store lower part */ +061 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); +062 +063 /* get carry */ +064 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); +065 \} +066 /* propagate upwards */ +067 while (u != ((mp_digit) 0)) \{ +068 r = ((mp_word) *tmpt) + ((mp_word) u); +069 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); +070 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); +071 \} +072 \} +073 +074 mp_clamp (&t); +075 mp_exch (&t, b); +076 mp_clear (&t); +077 return MP_OKAY; +078 \} +079 #endif \end{alltt} \end{small} -Inside the outer loop (\textit{see line 34}) the square term is calculated on line 37. Line 44 extracts the carry from the square -term. Aliases for $a_{ix}$ and $t_{ix+iy}$ are initialized on lines 47 and 50 respectively. The doubling is performed using two -additions (\textit{see line 59}) since it is usually faster than shifting,if not at least as fast. +Inside the outer loop (line 33) the square term is calculated on line 36. The carry (line 43) has been +extracted from the mp\_word accumulator using a right shift. Aliases for $a_{ix}$ and $t_{ix+iy}$ are initialized +(lines 46 and 49) to simplify the inner loop. The doubling is performed using two +additions (line 58) since it is usually faster than shifting, if not at least as fast. + +The important observation is that the inner loop does not begin at $iy = 0$ like for multiplication. As such the inner loops +get progressively shorter as the algorithm proceeds. This is what leads to the savings compared to using a multiplication to +square a number. \subsection{Faster Squaring by the ``Comba'' Method} A major drawback to the baseline method is the requirement for single precision shifting inside the $O(n^2)$ nested loop. Squaring has an additional @@ -4987,9 +5028,9 @@ propagation operations from the inner loop. However, the inner product must sti that $2a + 2b + 2c = 2(a + b + c)$. That is the sum of all of the double products is equal to double the sum of all the products. For example, $ab + ba + ac + ca = 2ab + 2ac = 2(ab + ac)$. -However, we cannot simply double all of the columns, since the squares appear only once per row. The most practical solution is to have two mp\_word -arrays. One array will hold the squares and the other array will hold the double products. With both arrays the doubling and carry propagation can be -moved to a $O(n)$ work level outside the $O(n^2)$ level. +However, we cannot simply double all of the columns, since the squares appear only once per row. The most practical solution is to have two +mp\_word arrays. One array will hold the squares and the other array will hold the double products. With both arrays the doubling and +carry propagation can be moved to a $O(n)$ work level outside the $O(n^2)$ level. In this case, we have an even simpler solution in mind. \newpage\begin{figure}[!here] \begin{small} @@ -4999,34 +5040,34 @@ moved to a $O(n)$ work level outside the $O(n^2)$ level. \textbf{Input}. mp\_int $a$ \\ \textbf{Output}. $b \leftarrow a^2$ \\ \hline \\ -Place two arrays of \textbf{MP\_WARRAY} mp\_words named $\hat W$ and $\hat {X}$ on the stack. \\ +Place an array of \textbf{MP\_WARRAY} mp\_digits named $W$ on the stack. \\ 1. If $b.alloc < 2a.used + 1$ then grow $b$ to $2a.used + 1$ digits. (\textit{mp\_grow}). \\ 2. If step 1 failed return(\textit{MP\_MEM}). \\ -3. for $ix$ from $0$ to $2a.used + 1$ do \\ -\hspace{3mm}3.1 $\hat W_{ix} \leftarrow 0$ \\ -\hspace{3mm}3.2 $\hat {X}_{ix} \leftarrow 0$ \\ -4. for $ix$ from $0$ to $a.used - 1$ do \\ -\hspace{3mm}Compute the square.\\ -\hspace{3mm}4.1 $\hat {X}_{ix+ix} \leftarrow \left ( a_{ix} \right )^2$ \\ \\ -\hspace{3mm}Compute the double products.\\ -\hspace{3mm}4.2 for $iy$ from $ix + 1$ to $a.used - 1$ do \\ -\hspace{6mm}4.2.1 $\hat W_{ix+iy} \leftarrow \hat W_{ix+iy} + a_{ix}a_{iy}$ \\ -5. $oldused \leftarrow b.used$ \\ -6. $b.used \leftarrow 2a.used + 1$ \\ +3. $pa \leftarrow 2 \cdot a.used$ \\ +4. $\hat W1 \leftarrow 0$ \\ +5. for $ix$ from $0$ to $pa - 1$ do \\ +\hspace{3mm}5.1 $\_ \hat W \leftarrow 0$ \\ +\hspace{3mm}5.2 $ty \leftarrow \mbox{MIN}(a.used - 1, ix)$ \\ +\hspace{3mm}5.3 $tx \leftarrow ix - ty$ \\ +\hspace{3mm}5.4 $iy \leftarrow \mbox{MIN}(a.used - tx, ty + 1)$ \\ +\hspace{3mm}5.5 $iy \leftarrow \mbox{MIN}(iy, \lfloor \left (ty - tx + 1 \right )/2 \rfloor)$ \\ +\hspace{3mm}5.6 for $iz$ from $0$ to $iz - 1$ do \\ +\hspace{6mm}5.6.1 $\_ \hat W \leftarrow \_ \hat W + a_{tx + iz}a_{ty - iz}$ \\ +\hspace{3mm}5.7 $\_ \hat W \leftarrow 2 \cdot \_ \hat W + \hat W1$ \\ +\hspace{3mm}5.8 if $ix$ is even then \\ +\hspace{6mm}5.8.1 $\_ \hat W \leftarrow \_ \hat W + \left ( a_{\lfloor ix/2 \rfloor}\right )^2$ \\ +\hspace{3mm}5.9 $W_{ix} \leftarrow \_ \hat W (\mbox{mod }\beta)$ \\ +\hspace{3mm}5.10 $\hat W1 \leftarrow \lfloor \_ \hat W / \beta \rfloor$ \\ \\ -Double the products and propagate the carries simultaneously. \\ -7. $\hat W_0 \leftarrow 2 \hat W_0 + \hat {X}_0$ \\ -8. for $ix$ from $1$ to $2a.used$ do \\ -\hspace{3mm}8.1 $\hat W_{ix} \leftarrow 2 \hat W_{ix} + \hat {X}_{ix}$ \\ -\hspace{3mm}8.2 $\hat W_{ix} \leftarrow \hat W_{ix} + \lfloor \hat W_{ix - 1} / \beta \rfloor$ \\ -\hspace{3mm}8.3 $b_{ix-1} \leftarrow W_{ix-1} \mbox{ (mod }\beta\mbox{)}$ \\ -9. $b_{2a.used} \leftarrow \hat W_{2a.used} \mbox{ (mod }\beta\mbox{)}$ \\ -10. if $2a.used + 1 < oldused$ then do \\ -\hspace{3mm}10.1 for $ix$ from $2a.used + 1$ to $oldused$ do \\ -\hspace{6mm}10.1.1 $b_{ix} \leftarrow 0$ \\ -11. Clamp excess digits from $b$. (\textit{mp\_clamp}) \\ -12. Return(\textit{MP\_OKAY}). \\ +6. $oldused \leftarrow b.used$ \\ +7. $b.used \leftarrow 2 \cdot a.used$ \\ +8. for $ix$ from $0$ to $pa - 1$ do \\ +\hspace{3mm}8.1 $b_{ix} \leftarrow W_{ix}$ \\ +9. for $ix$ from $pa$ to $oldused - 1$ do \\ +\hspace{3mm}9.1 $b_{ix} \leftarrow 0$ \\ +10. Clamp excess digits from $b$. (\textit{mp\_clamp}) \\ +11. Return(\textit{MP\_OKAY}). \\ \hline \end{tabular} \end{center} @@ -5035,146 +5076,123 @@ Double the products and propagate the carries simultaneously. \\ \end{figure} \textbf{Algorithm fast\_s\_mp\_sqr.} -This algorithm computes the square of an input using the Comba technique. It is designed to be a replacement for algorithm s\_mp\_sqr when -the number of input digits is less than \textbf{MP\_WARRAY} and less than $\delta \over 2$. +This algorithm computes the square of an input using the Comba technique. It is designed to be a replacement for algorithm +s\_mp\_sqr when the number of input digits is less than \textbf{MP\_WARRAY} and less than $\delta \over 2$. +This algorithm is very similar to the Comba multiplier except with a few key differences we shall make note of. -This routine requires two arrays of mp\_words to be placed on the stack. The first array $\hat W$ will hold the double products and the second -array $\hat X$ will hold the squares. Though only at most $MP\_WARRAY \over 2$ words of $\hat X$ are used, it has proven faster on most -processors to simply make it a full size array. +First, we have an accumulator and carry variables $\_ \hat W$ and $\hat W1$ respectively. This is because the inner loop +products are to be doubled. If we had added the previous carry in we would be doubling too much. Next we perform an +addition MIN condition on $iy$ (step 5.5) to prevent overlapping digits. For example, $a_3 \cdot a_5$ is equal +$a_5 \cdot a_3$. Whereas in the multiplication case we would have $5 < a.used$ and $3 \ge 0$ is maintained since we double the sum +of the products just outside the inner loop we have to avoid doing this. This is also a good thing since we perform +fewer multiplications and the routine ends up being faster. -The loop on step 3 will zero the two arrays to prepare them for the squaring step. Step 4.1 computes the squares of the product. Note how -it simply assigns the value into the $\hat X$ array. The nested loop on step 4.2 computes the doubles of the products. This loop -computes the sum of the products for each column. They are not doubled until later. - -After the squaring loop, the products stored in $\hat W$ musted be doubled and the carries propagated forwards. It makes sense to do both -operations at the same time. The expression $\hat W_{ix} \leftarrow 2 \hat W_{ix} + \hat {X}_{ix}$ computes the sum of the double product and the -squares in place. +Finally the last difference is the addition of the ``square'' term outside the inner loop (step 5.8). We add in the square +only to even outputs and it is the square of the term at the $\lfloor ix / 2 \rfloor$ position. \vspace{+3mm}\begin{small} \hspace{-5.1mm}{\bf File}: bn\_fast\_s\_mp\_sqr.c \vspace{-3mm} \begin{alltt} 016 -017 /* fast squaring -018 * -019 * This is the comba method where the columns of the product -020 * are computed first then the carries are computed. This -021 * has the effect of making a very simple inner loop that -022 * is executed the most -023 * -024 * W2 represents the outer products and W the inner. -025 * -026 * A further optimizations is made because the inner -027 * products are of the form "A * B * 2". The *2 part does -028 * not need to be computed until the end which is good -029 * because 64-bit shifts are slow! -030 * -031 * Based on Algorithm 14.16 on pp.597 of HAC. -032 * -033 */ -034 /* the jist of squaring... -035 -036 you do like mult except the offset of the tmpx [one that starts closer to ze - ro] -037 can't equal the offset of tmpy. So basically you set up iy like before then - you min it with -038 (ty-tx) so that it never happens. You double all those you add in the inner - loop -039 -040 After that loop you do the squares and add them in. -041 -042 Remove W2 and don't memset W -043 -044 */ -045 -046 int fast_s_mp_sqr (mp_int * a, mp_int * b) -047 \{ -048 int olduse, res, pa, ix, iz; -049 mp_digit W[MP_WARRAY], *tmpx; -050 mp_word W1; -051 -052 /* grow the destination as required */ -053 pa = a->used + a->used; -054 if (b->alloc < pa) \{ -055 if ((res = mp_grow (b, pa)) != MP_OKAY) \{ -056 return res; -057 \} -058 \} -059 -060 /* number of output digits to produce */ -061 W1 = 0; -062 for (ix = 0; ix < pa; ix++) \{ -063 int tx, ty, iy; -064 mp_word _W; -065 mp_digit *tmpy; -066 -067 /* clear counter */ -068 _W = 0; +017 /* the jist of squaring... +018 * you do like mult except the offset of the tmpx [one that +019 * starts closer to zero] can't equal the offset of tmpy. +020 * So basically you set up iy like before then you min it with +021 * (ty-tx) so that it never happens. You double all those +022 * you add in the inner loop +023 +024 After that loop you do the squares and add them in. +025 */ +026 +027 int fast_s_mp_sqr (mp_int * a, mp_int * b) +028 \{ +029 int olduse, res, pa, ix, iz; +030 mp_digit W[MP_WARRAY], *tmpx; +031 mp_word W1; +032 +033 /* grow the destination as required */ +034 pa = a->used + a->used; +035 if (b->alloc < pa) \{ +036 if ((res = mp_grow (b, pa)) != MP_OKAY) \{ +037 return res; +038 \} +039 \} +040 +041 /* number of output digits to produce */ +042 W1 = 0; +043 for (ix = 0; ix < pa; ix++) \{ +044 int tx, ty, iy; +045 mp_word _W; +046 mp_digit *tmpy; +047 +048 /* clear counter */ +049 _W = 0; +050 +051 /* get offsets into the two bignums */ +052 ty = MIN(a->used-1, ix); +053 tx = ix - ty; +054 +055 /* setup temp aliases */ +056 tmpx = a->dp + tx; +057 tmpy = a->dp + ty; +058 +059 /* this is the number of times the loop will iterrate, essentially +060 while (tx++ < a->used && ty-- >= 0) \{ ... \} +061 */ +062 iy = MIN(a->used-tx, ty+1); +063 +064 /* now for squaring tx can never equal ty +065 * we halve the distance since they approach at a rate of 2x +066 * and we have to round because odd cases need to be executed +067 */ +068 iy = MIN(iy, (ty-tx+1)>>1); 069 -070 /* get offsets into the two bignums */ -071 ty = MIN(a->used-1, ix); -072 tx = ix - ty; -073 -074 /* setup temp aliases */ -075 tmpx = a->dp + tx; -076 tmpy = a->dp + ty; +070 /* execute loop */ +071 for (iz = 0; iz < iy; iz++) \{ +072 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); +073 \} +074 +075 /* double the inner product and add carry */ +076 _W = _W + _W + W1; 077 -078 /* this is the number of times the loop will iterrate, essentially its - -079 while (tx++ < a->used && ty-- >= 0) \{ ... \} -080 */ -081 iy = MIN(a->used-tx, ty+1); +078 /* even columns have the square term in them */ +079 if ((ix&1) == 0) \{ +080 _W += ((mp_word)a->dp[ix>>1])*((mp_word)a->dp[ix>>1]); +081 \} 082 -083 /* now for squaring tx can never equal ty -084 * we halve the distance since they approach at a rate of 2x -085 * and we have to round because odd cases need to be executed -086 */ -087 iy = MIN(iy, (ty-tx+1)>>1); -088 -089 /* execute loop */ -090 for (iz = 0; iz < iy; iz++) \{ -091 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); -092 \} +083 /* store it */ +084 W[ix] = (mp_digit)(_W & MP_MASK); +085 +086 /* make next carry */ +087 W1 = _W >> ((mp_word)DIGIT_BIT); +088 \} +089 +090 /* setup dest */ +091 olduse = b->used; +092 b->used = a->used+a->used; 093 -094 /* double the inner product and add carry */ -095 _W = _W + _W + W1; -096 -097 /* even columns have the square term in them */ -098 if ((ix&1) == 0) \{ -099 _W += ((mp_word)a->dp[ix>>1])*((mp_word)a->dp[ix>>1]); -100 \} -101 -102 /* store it */ -103 W[ix] = _W; -104 -105 /* make next carry */ -106 W1 = _W >> ((mp_word)DIGIT_BIT); -107 \} -108 -109 /* setup dest */ -110 olduse = b->used; -111 b->used = a->used+a->used; -112 -113 \{ -114 mp_digit *tmpb; -115 tmpb = b->dp; -116 for (ix = 0; ix < pa; ix++) \{ -117 *tmpb++ = W[ix] & MP_MASK; -118 \} -119 -120 /* clear unused digits [that existed in the old copy of c] */ -121 for (; ix < olduse; ix++) \{ -122 *tmpb++ = 0; -123 \} -124 \} -125 mp_clamp (b); -126 return MP_OKAY; -127 \} -128 #endif +094 \{ +095 mp_digit *tmpb; +096 tmpb = b->dp; +097 for (ix = 0; ix < pa; ix++) \{ +098 *tmpb++ = W[ix] & MP_MASK; +099 \} +100 +101 /* clear unused digits [that existed in the old copy of c] */ +102 for (; ix < olduse; ix++) \{ +103 *tmpb++ = 0; +104 \} +105 \} +106 mp_clamp (b); +107 return MP_OKAY; +108 \} +109 #endif \end{alltt} \end{small} --- Write something deep and insightful later, Tom. +This implementation is essentially a copy of Comba multiplication with the appropriate changes added to make it faster for +the special case of squaring. \subsection{Polynomial Basis Squaring} The same algorithm that performs optimal polynomial basis multiplication can be used to perform polynomial basis squaring. The minor exception @@ -5392,14 +5410,13 @@ By inlining the copy and shift operations the cutoff point for Karatsuba multipl is exactly at the point where Comba squaring can no longer be used (\textit{128 digits}). On slower processors such as the Intel P4 it is actually below the Comba limit (\textit{at 110 digits}). -This routine uses the same error trap coding style as mp\_karatsuba\_sqr. As the temporary variables are initialized errors are redirected to -the error trap higher up. If the algorithm completes without error the error code is set to \textbf{MP\_OKAY} and mp\_clears are executed normally. - -\textit{Last paragraph sucks. re-write! -- Tom} +This routine uses the same error trap coding style as mp\_karatsuba\_sqr. As the temporary variables are initialized errors are +redirected to the error trap higher up. If the algorithm completes without error the error code is set to \textbf{MP\_OKAY} and +mp\_clears are executed normally. \subsection{Toom-Cook Squaring} The Toom-Cook squaring algorithm mp\_toom\_sqr is heavily based on the algorithm mp\_toom\_mul with the exception that squarings are used -instead of multiplication to find the five relations.. The reader is encouraged to read the description of the latter algorithm and try to +instead of multiplication to find the five relations. The reader is encouraged to read the description of the latter algorithm and try to derive their own Toom-Cook squaring algorithm. \subsection{High Level Squaring} @@ -5485,12 +5502,9 @@ neither of the polynomial basis algorithms should be used then either the Comba $\left [ 3 \right ] $ & Devise an efficient algorithm for selection of the radix point to handle inputs \\ & that have different number of digits in Karatsuba multiplication. \\ & \\ -$\left [ 3 \right ] $ & In section 5.3 the fact that every column of a squaring is made up \\ +$\left [ 2 \right ] $ & In section 5.3 the fact that every column of a squaring is made up \\ & of double products and at most one square is stated. Prove this statement. \\ & \\ -$\left [ 2 \right ] $ & In the Comba squaring algorithm half of the $\hat X$ variables are not used. \\ - & Revise algorithm fast\_s\_mp\_sqr to shrink the $\hat X$ array. \\ - & \\ $\left [ 3 \right ] $ & Prove the equation for Karatsuba squaring. \\ & \\ $\left [ 1 \right ] $ & Prove that Karatsuba squaring requires $O \left (n^{lg(3)} \right )$ time. \\ @@ -5498,6 +5512,14 @@ $\left [ 1 \right ] $ & Prove that Karatsuba squaring requires $O \left (n^{lg(3 $\left [ 2 \right ] $ & Determine the minimal ratio between addition and multiplication clock cycles \\ & required for equation $6.7$ to be true. \\ & \\ +$\left [ 3 \right ] $ & Implement a threaded version of Comba multiplication (and squaring) where you \\ + & compute subsets of the columns in each thread. Determine a cutoff point where \\ + & it is effective and add the logic to mp\_mul() and mp\_sqr(). \\ + &\\ +$\left [ 4 \right ] $ & Same as the previous but also modify the Karatsuba and Toom-Cook. You must \\ + & increase the throughput of mp\_exptmod() for random odd moduli in the range \\ + & $512 \ldots 4096$ bits significantly ($> 2x$) to complete this challenge. \\ + & \\ \end{tabular} \chapter{Modular Reduction} @@ -5516,7 +5538,7 @@ other forms of residues. Modular reductions are normally used to create either finite groups, rings or fields. The most common usage for performance driven modular reductions is in modular exponentiation algorithms. That is to compute $d = a^b \mbox{ (mod }c\mbox{)}$ as fast as possible. This operation is used in the RSA and Diffie-Hellman public key algorithms, for example. Modular multiplication and squaring also appears as a fundamental operation in -Elliptic Curve cryptographic algorithms. As will be discussed in the subsequent chapter there exist fast algorithms for computing modular +elliptic curve cryptographic algorithms. As will be discussed in the subsequent chapter there exist fast algorithms for computing modular exponentiations without having to perform (\textit{in this example}) $b - 1$ multiplications. These algorithms will produce partial results in the range $0 \le x < c^2$ which can be taken advantage of to create several efficient algorithms. They have also been used to create redundancy check algorithms known as CRCs, error correction codes such as Reed-Solomon and solve a variety of number theoeretic problems. @@ -5730,95 +5752,94 @@ performed at most twice, and on average once. However, if $a \ge b^2$ than it wi 018 * precomputed via mp_reduce_setup. 019 * From HAC pp.604 Algorithm 14.42 020 */ -021 int -022 mp_reduce (mp_int * x, mp_int * m, mp_int * mu) -023 \{ -024 mp_int q; -025 int res, um = m->used; -026 -027 /* q = x */ -028 if ((res = mp_init_copy (&q, x)) != MP_OKAY) \{ -029 return res; -030 \} -031 -032 /* q1 = x / b**(k-1) */ -033 mp_rshd (&q, um - 1); -034 -035 /* according to HAC this optimization is ok */ -036 if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) \{ -037 if ((res = mp_mul (&q, mu, &q)) != MP_OKAY) \{ -038 goto CLEANUP; -039 \} -040 \} else \{ -041 #ifdef BN_S_MP_MUL_HIGH_DIGS_C -042 if ((res = s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) \{ -043 goto CLEANUP; -044 \} -045 #elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) -046 if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) \{ -047 goto CLEANUP; -048 \} -049 #else -050 \{ -051 res = MP_VAL; -052 goto CLEANUP; -053 \} -054 #endif -055 \} -056 -057 /* q3 = q2 / b**(k+1) */ -058 mp_rshd (&q, um + 1); -059 -060 /* x = x mod b**(k+1), quick (no division) */ -061 if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) \{ -062 goto CLEANUP; -063 \} -064 -065 /* q = q * m mod b**(k+1), quick (no division) */ -066 if ((res = s_mp_mul_digs (&q, m, &q, um + 1)) != MP_OKAY) \{ -067 goto CLEANUP; -068 \} -069 -070 /* x = x - q */ -071 if ((res = mp_sub (x, &q, x)) != MP_OKAY) \{ -072 goto CLEANUP; -073 \} -074 -075 /* If x < 0, add b**(k+1) to it */ -076 if (mp_cmp_d (x, 0) == MP_LT) \{ -077 mp_set (&q, 1); -078 if ((res = mp_lshd (&q, um + 1)) != MP_OKAY) -079 goto CLEANUP; -080 if ((res = mp_add (x, &q, x)) != MP_OKAY) -081 goto CLEANUP; -082 \} -083 -084 /* Back off if it's too big */ -085 while (mp_cmp (x, m) != MP_LT) \{ -086 if ((res = s_mp_sub (x, m, x)) != MP_OKAY) \{ -087 goto CLEANUP; -088 \} -089 \} -090 -091 CLEANUP: -092 mp_clear (&q); -093 -094 return res; -095 \} -096 #endif +021 int mp_reduce (mp_int * x, mp_int * m, mp_int * mu) +022 \{ +023 mp_int q; +024 int res, um = m->used; +025 +026 /* q = x */ +027 if ((res = mp_init_copy (&q, x)) != MP_OKAY) \{ +028 return res; +029 \} +030 +031 /* q1 = x / b**(k-1) */ +032 mp_rshd (&q, um - 1); +033 +034 /* according to HAC this optimization is ok */ +035 if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) \{ +036 if ((res = mp_mul (&q, mu, &q)) != MP_OKAY) \{ +037 goto CLEANUP; +038 \} +039 \} else \{ +040 #ifdef BN_S_MP_MUL_HIGH_DIGS_C +041 if ((res = s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) \{ +042 goto CLEANUP; +043 \} +044 #elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) +045 if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) \{ +046 goto CLEANUP; +047 \} +048 #else +049 \{ +050 res = MP_VAL; +051 goto CLEANUP; +052 \} +053 #endif +054 \} +055 +056 /* q3 = q2 / b**(k+1) */ +057 mp_rshd (&q, um + 1); +058 +059 /* x = x mod b**(k+1), quick (no division) */ +060 if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) \{ +061 goto CLEANUP; +062 \} +063 +064 /* q = q * m mod b**(k+1), quick (no division) */ +065 if ((res = s_mp_mul_digs (&q, m, &q, um + 1)) != MP_OKAY) \{ +066 goto CLEANUP; +067 \} +068 +069 /* x = x - q */ +070 if ((res = mp_sub (x, &q, x)) != MP_OKAY) \{ +071 goto CLEANUP; +072 \} +073 +074 /* If x < 0, add b**(k+1) to it */ +075 if (mp_cmp_d (x, 0) == MP_LT) \{ +076 mp_set (&q, 1); +077 if ((res = mp_lshd (&q, um + 1)) != MP_OKAY) +078 goto CLEANUP; +079 if ((res = mp_add (x, &q, x)) != MP_OKAY) +080 goto CLEANUP; +081 \} +082 +083 /* Back off if it's too big */ +084 while (mp_cmp (x, m) != MP_LT) \{ +085 if ((res = s_mp_sub (x, m, x)) != MP_OKAY) \{ +086 goto CLEANUP; +087 \} +088 \} +089 +090 CLEANUP: +091 mp_clear (&q); +092 +093 return res; +094 \} +095 #endif \end{alltt} \end{small} The first multiplication that determines the quotient can be performed by only producing the digits from $m - 1$ and up. This essentially halves the number of single precision multiplications required. However, the optimization is only safe if $\beta$ is much larger than the number of digits -in the modulus. In the source code this is evaluated on lines 36 to 44 where algorithm s\_mp\_mul\_high\_digs is used when it is +in the modulus. In the source code this is evaluated on lines 36 to 43 where algorithm s\_mp\_mul\_high\_digs is used when it is safe to do so. \subsection{The Barrett Setup Algorithm} In order to use algorithm mp\_reduce the value of $\mu$ must be calculated in advance. Ideally this value should be computed once and stored for future use so that the Barrett algorithm can be used without delay. -\begin{figure}[!here] +\newpage\begin{figure}[!here] \begin{small} \begin{center} \begin{tabular}{l} @@ -6314,161 +6335,160 @@ stored in the destination $x$. 022 * 023 * Based on Algorithm 14.32 on pp.601 of HAC. 024 */ -025 int -026 fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) -027 \{ -028 int ix, res, olduse; -029 mp_word W[MP_WARRAY]; -030 -031 /* get old used count */ -032 olduse = x->used; -033 -034 /* grow a as required */ -035 if (x->alloc < n->used + 1) \{ -036 if ((res = mp_grow (x, n->used + 1)) != MP_OKAY) \{ -037 return res; -038 \} -039 \} -040 -041 /* first we have to get the digits of the input into -042 * an array of double precision words W[...] -043 */ -044 \{ -045 register mp_word *_W; -046 register mp_digit *tmpx; -047 -048 /* alias for the W[] array */ -049 _W = W; -050 -051 /* alias for the digits of x*/ -052 tmpx = x->dp; -053 -054 /* copy the digits of a into W[0..a->used-1] */ -055 for (ix = 0; ix < x->used; ix++) \{ -056 *_W++ = *tmpx++; -057 \} -058 -059 /* zero the high words of W[a->used..m->used*2] */ -060 for (; ix < n->used * 2 + 1; ix++) \{ -061 *_W++ = 0; -062 \} -063 \} -064 -065 /* now we proceed to zero successive digits -066 * from the least significant upwards -067 */ -068 for (ix = 0; ix < n->used; ix++) \{ -069 /* mu = ai * m' mod b -070 * -071 * We avoid a double precision multiplication (which isn't required) -072 * by casting the value down to a mp_digit. Note this requires -073 * that W[ix-1] have the carry cleared (see after the inner loop) -074 */ -075 register mp_digit mu; -076 mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK); -077 -078 /* a = a + mu * m * b**i -079 * -080 * This is computed in place and on the fly. The multiplication -081 * by b**i is handled by offseting which columns the results -082 * are added to. -083 * -084 * Note the comba method normally doesn't handle carries in the -085 * inner loop In this case we fix the carry from the previous -086 * column since the Montgomery reduction requires digits of the -087 * result (so far) [see above] to work. This is -088 * handled by fixing up one carry after the inner loop. The -089 * carry fixups are done in order so after these loops the -090 * first m->used words of W[] have the carries fixed -091 */ -092 \{ -093 register int iy; -094 register mp_digit *tmpn; -095 register mp_word *_W; -096 -097 /* alias for the digits of the modulus */ -098 tmpn = n->dp; -099 -100 /* Alias for the columns set by an offset of ix */ -101 _W = W + ix; -102 -103 /* inner loop */ -104 for (iy = 0; iy < n->used; iy++) \{ -105 *_W++ += ((mp_word)mu) * ((mp_word)*tmpn++); -106 \} -107 \} -108 -109 /* now fix carry for next digit, W[ix+1] */ -110 W[ix + 1] += W[ix] >> ((mp_word) DIGIT_BIT); -111 \} -112 -113 /* now we have to propagate the carries and -114 * shift the words downward [all those least -115 * significant digits we zeroed]. -116 */ -117 \{ -118 register mp_digit *tmpx; -119 register mp_word *_W, *_W1; -120 -121 /* nox fix rest of carries */ -122 -123 /* alias for current word */ -124 _W1 = W + ix; -125 -126 /* alias for next word, where the carry goes */ -127 _W = W + ++ix; -128 -129 for (; ix <= n->used * 2 + 1; ix++) \{ -130 *_W++ += *_W1++ >> ((mp_word) DIGIT_BIT); -131 \} -132 -133 /* copy out, A = A/b**n -134 * -135 * The result is A/b**n but instead of converting from an -136 * array of mp_word to mp_digit than calling mp_rshd -137 * we just copy them in the right order -138 */ -139 -140 /* alias for destination word */ -141 tmpx = x->dp; -142 -143 /* alias for shifted double precision result */ -144 _W = W + n->used; -145 -146 for (ix = 0; ix < n->used + 1; ix++) \{ -147 *tmpx++ = (mp_digit)(*_W++ & ((mp_word) MP_MASK)); -148 \} -149 -150 /* zero oldused digits, if the input a was larger than -151 * m->used+1 we'll have to clear the digits -152 */ -153 for (; ix < olduse; ix++) \{ -154 *tmpx++ = 0; -155 \} -156 \} -157 -158 /* set the max used and clamp */ -159 x->used = n->used + 1; -160 mp_clamp (x); -161 -162 /* if A >= m then A = A - m */ -163 if (mp_cmp_mag (x, n) != MP_LT) \{ -164 return s_mp_sub (x, n, x); -165 \} -166 return MP_OKAY; -167 \} -168 #endif +025 int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +026 \{ +027 int ix, res, olduse; +028 mp_word W[MP_WARRAY]; +029 +030 /* get old used count */ +031 olduse = x->used; +032 +033 /* grow a as required */ +034 if (x->alloc < n->used + 1) \{ +035 if ((res = mp_grow (x, n->used + 1)) != MP_OKAY) \{ +036 return res; +037 \} +038 \} +039 +040 /* first we have to get the digits of the input into +041 * an array of double precision words W[...] +042 */ +043 \{ +044 register mp_word *_W; +045 register mp_digit *tmpx; +046 +047 /* alias for the W[] array */ +048 _W = W; +049 +050 /* alias for the digits of x*/ +051 tmpx = x->dp; +052 +053 /* copy the digits of a into W[0..a->used-1] */ +054 for (ix = 0; ix < x->used; ix++) \{ +055 *_W++ = *tmpx++; +056 \} +057 +058 /* zero the high words of W[a->used..m->used*2] */ +059 for (; ix < n->used * 2 + 1; ix++) \{ +060 *_W++ = 0; +061 \} +062 \} +063 +064 /* now we proceed to zero successive digits +065 * from the least significant upwards +066 */ +067 for (ix = 0; ix < n->used; ix++) \{ +068 /* mu = ai * m' mod b +069 * +070 * We avoid a double precision multiplication (which isn't required) +071 * by casting the value down to a mp_digit. Note this requires +072 * that W[ix-1] have the carry cleared (see after the inner loop) +073 */ +074 register mp_digit mu; +075 mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK); +076 +077 /* a = a + mu * m * b**i +078 * +079 * This is computed in place and on the fly. The multiplication +080 * by b**i is handled by offseting which columns the results +081 * are added to. +082 * +083 * Note the comba method normally doesn't handle carries in the +084 * inner loop In this case we fix the carry from the previous +085 * column since the Montgomery reduction requires digits of the +086 * result (so far) [see above] to work. This is +087 * handled by fixing up one carry after the inner loop. The +088 * carry fixups are done in order so after these loops the +089 * first m->used words of W[] have the carries fixed +090 */ +091 \{ +092 register int iy; +093 register mp_digit *tmpn; +094 register mp_word *_W; +095 +096 /* alias for the digits of the modulus */ +097 tmpn = n->dp; +098 +099 /* Alias for the columns set by an offset of ix */ +100 _W = W + ix; +101 +102 /* inner loop */ +103 for (iy = 0; iy < n->used; iy++) \{ +104 *_W++ += ((mp_word)mu) * ((mp_word)*tmpn++); +105 \} +106 \} +107 +108 /* now fix carry for next digit, W[ix+1] */ +109 W[ix + 1] += W[ix] >> ((mp_word) DIGIT_BIT); +110 \} +111 +112 /* now we have to propagate the carries and +113 * shift the words downward [all those least +114 * significant digits we zeroed]. +115 */ +116 \{ +117 register mp_digit *tmpx; +118 register mp_word *_W, *_W1; +119 +120 /* nox fix rest of carries */ +121 +122 /* alias for current word */ +123 _W1 = W + ix; +124 +125 /* alias for next word, where the carry goes */ +126 _W = W + ++ix; +127 +128 for (; ix <= n->used * 2 + 1; ix++) \{ +129 *_W++ += *_W1++ >> ((mp_word) DIGIT_BIT); +130 \} +131 +132 /* copy out, A = A/b**n +133 * +134 * The result is A/b**n but instead of converting from an +135 * array of mp_word to mp_digit than calling mp_rshd +136 * we just copy them in the right order +137 */ +138 +139 /* alias for destination word */ +140 tmpx = x->dp; +141 +142 /* alias for shifted double precision result */ +143 _W = W + n->used; +144 +145 for (ix = 0; ix < n->used + 1; ix++) \{ +146 *tmpx++ = (mp_digit)(*_W++ & ((mp_word) MP_MASK)); +147 \} +148 +149 /* zero oldused digits, if the input a was larger than +150 * m->used+1 we'll have to clear the digits +151 */ +152 for (; ix < olduse; ix++) \{ +153 *tmpx++ = 0; +154 \} +155 \} +156 +157 /* set the max used and clamp */ +158 x->used = n->used + 1; +159 mp_clamp (x); +160 +161 /* if A >= m then A = A - m */ +162 if (mp_cmp_mag (x, n) != MP_LT) \{ +163 return s_mp_sub (x, n, x); +164 \} +165 return MP_OKAY; +166 \} +167 #endif \end{alltt} \end{small} -The $\hat W$ array is first filled with digits of $x$ on line 48 then the rest of the digits are zeroed on line 55. Both loops share +The $\hat W$ array is first filled with digits of $x$ on line 50 then the rest of the digits are zeroed on line 54. Both loops share the same alias variables to make the code easier to read. The value of $\mu$ is calculated in an interesting fashion. First the value $\hat W_{ix}$ is reduced modulo $\beta$ and cast to a mp\_digit. This -forces the compiler to use a single precision multiplication and prevents any concerns about loss of precision. Line 110 fixes the carry +forces the compiler to use a single precision multiplication and prevents any concerns about loss of precision. Line 109 fixes the carry for the next iteration of the loop by propagating the carry from $\hat W_{ix}$ to $\hat W_{ix+1}$. -The for loop on line 109 propagates the rest of the carries upwards through the columns. The for loop on line 126 reduces the columns +The for loop on line 108 propagates the rest of the carries upwards through the columns. The for loop on line 125 reduces the columns modulo $\beta$ and shifts them $k$ places at the same time. The alias $\_ \hat W$ actually refers to the array $\hat W$ starting at the $n.used$'th digit, that is $\_ \hat W_{t} = \hat W_{n.used + t}$. @@ -6968,51 +6988,50 @@ shift which makes the algorithm fairly inexpensive to use. \begin{alltt} 016 017 /* reduces a modulo n where n is of the form 2**p - d */ -018 int -019 mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) -020 \{ -021 mp_int q; -022 int p, res; -023 -024 if ((res = mp_init(&q)) != MP_OKAY) \{ -025 return res; -026 \} -027 -028 p = mp_count_bits(n); -029 top: -030 /* q = a/2**p, a = a mod 2**p */ -031 if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) \{ -032 goto ERR; -033 \} -034 -035 if (d != 1) \{ -036 /* q = q * d */ -037 if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) \{ -038 goto ERR; -039 \} -040 \} -041 -042 /* a = a + q */ -043 if ((res = s_mp_add(a, &q, a)) != MP_OKAY) \{ -044 goto ERR; -045 \} -046 -047 if (mp_cmp_mag(a, n) != MP_LT) \{ -048 s_mp_sub(a, n, a); -049 goto top; -050 \} -051 -052 ERR: -053 mp_clear(&q); -054 return res; -055 \} -056 -057 #endif +018 int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) +019 \{ +020 mp_int q; +021 int p, res; +022 +023 if ((res = mp_init(&q)) != MP_OKAY) \{ +024 return res; +025 \} +026 +027 p = mp_count_bits(n); +028 top: +029 /* q = a/2**p, a = a mod 2**p */ +030 if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) \{ +031 goto ERR; +032 \} +033 +034 if (d != 1) \{ +035 /* q = q * d */ +036 if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) \{ +037 goto ERR; +038 \} +039 \} +040 +041 /* a = a + q */ +042 if ((res = s_mp_add(a, &q, a)) != MP_OKAY) \{ +043 goto ERR; +044 \} +045 +046 if (mp_cmp_mag(a, n) != MP_LT) \{ +047 s_mp_sub(a, n, a); +048 goto top; +049 \} +050 +051 ERR: +052 mp_clear(&q); +053 return res; +054 \} +055 +056 #endif \end{alltt} \end{small} The algorithm mp\_count\_bits calculates the number of bits in an mp\_int which is used to find the initial value of $p$. The call to mp\_div\_2d -on line 31 calculates both the quotient $q$ and the remainder $a$ required. By doing both in a single function call the code size +on line 30 calculates both the quotient $q$ and the remainder $a$ required. By doing both in a single function call the code size is kept fairly small. The multiplication by $k$ is only performed if $k > 1$. This allows reductions modulo $2^p - 1$ to be performed without any multiplications. @@ -7052,32 +7071,31 @@ is sufficient to solve for $k$. Alternatively if $n$ has more than one digit th \begin{alltt} 016 017 /* determines the setup value */ -018 int -019 mp_reduce_2k_setup(mp_int *a, mp_digit *d) -020 \{ -021 int res, p; -022 mp_int tmp; -023 -024 if ((res = mp_init(&tmp)) != MP_OKAY) \{ -025 return res; -026 \} -027 -028 p = mp_count_bits(a); -029 if ((res = mp_2expt(&tmp, p)) != MP_OKAY) \{ -030 mp_clear(&tmp); -031 return res; -032 \} -033 -034 if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) \{ -035 mp_clear(&tmp); -036 return res; -037 \} -038 -039 *d = tmp.dp[0]; -040 mp_clear(&tmp); -041 return MP_OKAY; -042 \} -043 #endif +018 int mp_reduce_2k_setup(mp_int *a, mp_digit *d) +019 \{ +020 int res, p; +021 mp_int tmp; +022 +023 if ((res = mp_init(&tmp)) != MP_OKAY) \{ +024 return res; +025 \} +026 +027 p = mp_count_bits(a); +028 if ((res = mp_2expt(&tmp, p)) != MP_OKAY) \{ +029 mp_clear(&tmp); +030 return res; +031 \} +032 +033 if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) \{ +034 mp_clear(&tmp); +035 return res; +036 \} +037 +038 *d = tmp.dp[0]; +039 mp_clear(&tmp); +040 return MP_OKAY; +041 \} +042 #endif \end{alltt} \end{small} @@ -7130,9 +7148,9 @@ This algorithm quickly determines if a modulus is of the form required for algor 021 mp_digit iz; 022 023 if (a->used == 0) \{ -024 return 0; +024 return MP_NO; 025 \} else if (a->used == 1) \{ -026 return 1; +026 return MP_YES; 027 \} else if (a->used > 1) \{ 028 iy = mp_count_bits(a); 029 iz = 1; @@ -7141,7 +7159,7 @@ This algorithm quickly determines if a modulus is of the form required for algor 032 /* Test every bit from the second digit up, must be 1 */ 033 for (ix = DIGIT_BIT; ix < iy; ix++) \{ 034 if ((a->dp[iw] & iz) == 0) \{ -035 return 0; +035 return MP_NO; 036 \} 037 iz <<= 1; 038 if (iz > (mp_digit)MP_MASK) \{ @@ -7150,7 +7168,7 @@ This algorithm quickly determines if a modulus is of the form required for algor 041 \} 042 \} 043 \} -044 return 1; +044 return MP_YES; 045 \} 046 047 #endif @@ -7601,39 +7619,47 @@ algorithm since their arguments are essentially the same (\textit{two mp\_ints a 064 #endif 065 \} 066 -067 #ifdef BN_MP_DR_IS_MODULUS_C -068 /* is it a DR modulus? */ -069 dr = mp_dr_is_modulus(P); -070 #else -071 dr = 0; +067 /* modified diminished radix reduction */ +068 #if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) +069 if (mp_reduce_is_2k_l(P) == MP_YES) \{ +070 return s_mp_exptmod(G, X, P, Y, 1); +071 \} 072 #endif 073 -074 #ifdef BN_MP_REDUCE_IS_2K_C -075 /* if not, is it a uDR modulus? */ -076 if (dr == 0) \{ -077 dr = mp_reduce_is_2k(P) << 1; -078 \} -079 #endif -080 -081 /* if the modulus is odd or dr != 0 use the fast method */ -082 #ifdef BN_MP_EXPTMOD_FAST_C -083 if (mp_isodd (P) == 1 || dr != 0) \{ -084 return mp_exptmod_fast (G, X, P, Y, dr); -085 \} else \{ -086 #endif -087 #ifdef BN_S_MP_EXPTMOD_C -088 /* otherwise use the generic Barrett reduction technique */ -089 return s_mp_exptmod (G, X, P, Y); -090 #else -091 /* no exptmod for evens */ -092 return MP_VAL; -093 #endif -094 #ifdef BN_MP_EXPTMOD_FAST_C -095 \} -096 #endif -097 \} -098 -099 #endif +074 #ifdef BN_MP_DR_IS_MODULUS_C +075 /* is it a DR modulus? */ +076 dr = mp_dr_is_modulus(P); +077 #else +078 /* default to no */ +079 dr = 0; +080 #endif +081 +082 #ifdef BN_MP_REDUCE_IS_2K_C +083 /* if not, is it a unrestricted DR modulus? */ +084 if (dr == 0) \{ +085 dr = mp_reduce_is_2k(P) << 1; +086 \} +087 #endif +088 +089 /* if the modulus is odd or dr != 0 use the montgomery method */ +090 #ifdef BN_MP_EXPTMOD_FAST_C +091 if (mp_isodd (P) == 1 || dr != 0) \{ +092 return mp_exptmod_fast (G, X, P, Y, dr); +093 \} else \{ +094 #endif +095 #ifdef BN_S_MP_EXPTMOD_C +096 /* otherwise use the generic Barrett reduction technique */ +097 return s_mp_exptmod (G, X, P, Y, 0); +098 #else +099 /* no exptmod for evens */ +100 return MP_VAL; +101 #endif +102 #ifdef BN_MP_EXPTMOD_FAST_C +103 \} +104 #endif +105 \} +106 +107 #endif \end{alltt} \end{small} @@ -7642,8 +7668,8 @@ negative the algorithm tries to perform a modular exponentiation with the modula the modular inverse of $G$ and $tmpX$ is assigned the absolute value of $X$. The algorithm will recuse with these new values with a positive exponent. -If the exponent is positive the algorithm resumes the exponentiation. Line 69 determines if the modulus is of the restricted Diminished Radix -form. If it is not line 77 attempts to determine if it is of a unrestricted Diminished Radix form. The integer $dr$ will take on one +If the exponent is positive the algorithm resumes the exponentiation. Line 76 determines if the modulus is of the restricted Diminished Radix +form. If it is not line 69 attempts to determine if it is of a unrestricted Diminished Radix form. The integer $dr$ will take on one of three values. \begin{enumerate} @@ -7652,7 +7678,7 @@ of three values. \item $dr = 2$ means that the modulus is of unrestricted Diminished Radix form. \end{enumerate} -Line 67 determines if the fast modular exponentiation algorithm can be used. It is allowed if $dr \ne 0$ or if the modulus is odd. Otherwise, +Line 69 determines if the fast modular exponentiation algorithm can be used. It is allowed if $dr \ne 0$ or if the modulus is odd. Otherwise, the slower s\_mp\_exptmod algorithm is used which uses Barrett reduction. \subsection{Barrett Modular Exponentiation} @@ -7820,230 +7846,244 @@ a Left-to-Right algorithm is used to process the remaining few bits. 020 #define TAB_SIZE 256 021 #endif 022 -023 int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +023 int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmod + e) 024 \{ 025 mp_int M[TAB_SIZE], res, mu; 026 mp_digit buf; 027 int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; -028 -029 /* find window size */ -030 x = mp_count_bits (X); -031 if (x <= 7) \{ -032 winsize = 2; -033 \} else if (x <= 36) \{ -034 winsize = 3; -035 \} else if (x <= 140) \{ -036 winsize = 4; -037 \} else if (x <= 450) \{ -038 winsize = 5; -039 \} else if (x <= 1303) \{ -040 winsize = 6; -041 \} else if (x <= 3529) \{ -042 winsize = 7; -043 \} else \{ -044 winsize = 8; -045 \} -046 -047 #ifdef MP_LOW_MEM -048 if (winsize > 5) \{ -049 winsize = 5; -050 \} -051 #endif -052 -053 /* init M array */ -054 /* init first cell */ -055 if ((err = mp_init(&M[1])) != MP_OKAY) \{ -056 return err; -057 \} -058 -059 /* now init the second half of the array */ -060 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ -061 if ((err = mp_init(&M[x])) != MP_OKAY) \{ -062 for (y = 1<<(winsize-1); y < x; y++) \{ -063 mp_clear (&M[y]); -064 \} -065 mp_clear(&M[1]); -066 return err; -067 \} -068 \} -069 -070 /* create mu, used for Barrett reduction */ -071 if ((err = mp_init (&mu)) != MP_OKAY) \{ -072 goto LBL_M; -073 \} -074 if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) \{ -075 goto LBL_MU; -076 \} -077 -078 /* create M table -079 * -080 * The M table contains powers of the base, -081 * e.g. M[x] = G**x mod P -082 * -083 * The first half of the table is not -084 * computed though accept for M[0] and M[1] -085 */ -086 if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) \{ -087 goto LBL_MU; -088 \} -089 -090 /* compute the value at M[1<<(winsize-1)] by squaring -091 * M[1] (winsize-1) times -092 */ -093 if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) \{ -094 goto LBL_MU; -095 \} -096 -097 for (x = 0; x < (winsize - 1); x++) \{ -098 if ((err = mp_sqr (&M[1 << (winsize - 1)], -099 &M[1 << (winsize - 1)])) != MP_OKAY) \{ -100 goto LBL_MU; -101 \} -102 if ((err = mp_reduce (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) \{ -103 goto LBL_MU; -104 \} +028 int (*redux)(mp_int*,mp_int*,mp_int*); +029 +030 /* find window size */ +031 x = mp_count_bits (X); +032 if (x <= 7) \{ +033 winsize = 2; +034 \} else if (x <= 36) \{ +035 winsize = 3; +036 \} else if (x <= 140) \{ +037 winsize = 4; +038 \} else if (x <= 450) \{ +039 winsize = 5; +040 \} else if (x <= 1303) \{ +041 winsize = 6; +042 \} else if (x <= 3529) \{ +043 winsize = 7; +044 \} else \{ +045 winsize = 8; +046 \} +047 +048 #ifdef MP_LOW_MEM +049 if (winsize > 5) \{ +050 winsize = 5; +051 \} +052 #endif +053 +054 /* init M array */ +055 /* init first cell */ +056 if ((err = mp_init(&M[1])) != MP_OKAY) \{ +057 return err; +058 \} +059 +060 /* now init the second half of the array */ +061 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ +062 if ((err = mp_init(&M[x])) != MP_OKAY) \{ +063 for (y = 1<<(winsize-1); y < x; y++) \{ +064 mp_clear (&M[y]); +065 \} +066 mp_clear(&M[1]); +067 return err; +068 \} +069 \} +070 +071 /* create mu, used for Barrett reduction */ +072 if ((err = mp_init (&mu)) != MP_OKAY) \{ +073 goto LBL_M; +074 \} +075 +076 if (redmode == 0) \{ +077 if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) \{ +078 goto LBL_MU; +079 \} +080 redux = mp_reduce; +081 \} else \{ +082 if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) \{ +083 goto LBL_MU; +084 \} +085 redux = mp_reduce_2k_l; +086 \} +087 +088 /* create M table +089 * +090 * The M table contains powers of the base, +091 * e.g. M[x] = G**x mod P +092 * +093 * The first half of the table is not +094 * computed though accept for M[0] and M[1] +095 */ +096 if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) \{ +097 goto LBL_MU; +098 \} +099 +100 /* compute the value at M[1<<(winsize-1)] by squaring +101 * M[1] (winsize-1) times +102 */ +103 if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) \{ +104 goto LBL_MU; 105 \} 106 -107 /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) -108 * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) -109 */ -110 for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) \{ -111 if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) \{ -112 goto LBL_MU; -113 \} -114 if ((err = mp_reduce (&M[x], P, &mu)) != MP_OKAY) \{ -115 goto LBL_MU; -116 \} -117 \} -118 -119 /* setup result */ -120 if ((err = mp_init (&res)) != MP_OKAY) \{ -121 goto LBL_MU; -122 \} -123 mp_set (&res, 1); -124 -125 /* set initial mode and bit cnt */ -126 mode = 0; -127 bitcnt = 1; -128 buf = 0; -129 digidx = X->used - 1; -130 bitcpy = 0; -131 bitbuf = 0; -132 -133 for (;;) \{ -134 /* grab next digit as required */ -135 if (--bitcnt == 0) \{ -136 /* if digidx == -1 we are out of digits */ -137 if (digidx == -1) \{ -138 break; -139 \} -140 /* read next digit and reset the bitcnt */ -141 buf = X->dp[digidx--]; -142 bitcnt = (int) DIGIT_BIT; -143 \} -144 -145 /* grab the next msb from the exponent */ -146 y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; -147 buf <<= (mp_digit)1; -148 -149 /* if the bit is zero and mode == 0 then we ignore it -150 * These represent the leading zero bits before the first 1 bit -151 * in the exponent. Technically this opt is not required but it -152 * does lower the # of trivial squaring/reductions used -153 */ -154 if (mode == 0 && y == 0) \{ -155 continue; +107 for (x = 0; x < (winsize - 1); x++) \{ +108 /* square it */ +109 if ((err = mp_sqr (&M[1 << (winsize - 1)], +110 &M[1 << (winsize - 1)])) != MP_OKAY) \{ +111 goto LBL_MU; +112 \} +113 +114 /* reduce modulo P */ +115 if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) \{ +116 goto LBL_MU; +117 \} +118 \} +119 +120 /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) +121 * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) +122 */ +123 for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) \{ +124 if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) \{ +125 goto LBL_MU; +126 \} +127 if ((err = redux (&M[x], P, &mu)) != MP_OKAY) \{ +128 goto LBL_MU; +129 \} +130 \} +131 +132 /* setup result */ +133 if ((err = mp_init (&res)) != MP_OKAY) \{ +134 goto LBL_MU; +135 \} +136 mp_set (&res, 1); +137 +138 /* set initial mode and bit cnt */ +139 mode = 0; +140 bitcnt = 1; +141 buf = 0; +142 digidx = X->used - 1; +143 bitcpy = 0; +144 bitbuf = 0; +145 +146 for (;;) \{ +147 /* grab next digit as required */ +148 if (--bitcnt == 0) \{ +149 /* if digidx == -1 we are out of digits */ +150 if (digidx == -1) \{ +151 break; +152 \} +153 /* read next digit and reset the bitcnt */ +154 buf = X->dp[digidx--]; +155 bitcnt = (int) DIGIT_BIT; 156 \} 157 -158 /* if the bit is zero and mode == 1 then we square */ -159 if (mode == 1 && y == 0) \{ -160 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -161 goto LBL_RES; -162 \} -163 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -164 goto LBL_RES; -165 \} -166 continue; -167 \} -168 -169 /* else we add it to the window */ -170 bitbuf |= (y << (winsize - ++bitcpy)); -171 mode = 2; -172 -173 if (bitcpy == winsize) \{ -174 /* ok window is filled so square as required and multiply */ -175 /* square first */ -176 for (x = 0; x < winsize; x++) \{ -177 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -178 goto LBL_RES; -179 \} -180 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -181 goto LBL_RES; -182 \} -183 \} -184 -185 /* then multiply */ -186 if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) \{ -187 goto LBL_RES; -188 \} -189 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -190 goto LBL_RES; -191 \} -192 -193 /* empty window and reset */ -194 bitcpy = 0; -195 bitbuf = 0; -196 mode = 1; -197 \} -198 \} -199 -200 /* if bits remain then square/multiply */ -201 if (mode == 2 && bitcpy > 0) \{ -202 /* square then multiply if the bit is set */ -203 for (x = 0; x < bitcpy; x++) \{ -204 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -205 goto LBL_RES; -206 \} -207 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -208 goto LBL_RES; -209 \} -210 -211 bitbuf <<= 1; -212 if ((bitbuf & (1 << winsize)) != 0) \{ -213 /* then multiply */ -214 if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) \{ -215 goto LBL_RES; -216 \} -217 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -218 goto LBL_RES; -219 \} -220 \} -221 \} -222 \} +158 /* grab the next msb from the exponent */ +159 y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; +160 buf <<= (mp_digit)1; +161 +162 /* if the bit is zero and mode == 0 then we ignore it +163 * These represent the leading zero bits before the first 1 bit +164 * in the exponent. Technically this opt is not required but it +165 * does lower the # of trivial squaring/reductions used +166 */ +167 if (mode == 0 && y == 0) \{ +168 continue; +169 \} +170 +171 /* if the bit is zero and mode == 1 then we square */ +172 if (mode == 1 && y == 0) \{ +173 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +174 goto LBL_RES; +175 \} +176 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +177 goto LBL_RES; +178 \} +179 continue; +180 \} +181 +182 /* else we add it to the window */ +183 bitbuf |= (y << (winsize - ++bitcpy)); +184 mode = 2; +185 +186 if (bitcpy == winsize) \{ +187 /* ok window is filled so square as required and multiply */ +188 /* square first */ +189 for (x = 0; x < winsize; x++) \{ +190 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +191 goto LBL_RES; +192 \} +193 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +194 goto LBL_RES; +195 \} +196 \} +197 +198 /* then multiply */ +199 if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) \{ +200 goto LBL_RES; +201 \} +202 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +203 goto LBL_RES; +204 \} +205 +206 /* empty window and reset */ +207 bitcpy = 0; +208 bitbuf = 0; +209 mode = 1; +210 \} +211 \} +212 +213 /* if bits remain then square/multiply */ +214 if (mode == 2 && bitcpy > 0) \{ +215 /* square then multiply if the bit is set */ +216 for (x = 0; x < bitcpy; x++) \{ +217 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +218 goto LBL_RES; +219 \} +220 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +221 goto LBL_RES; +222 \} 223 -224 mp_exch (&res, Y); -225 err = MP_OKAY; -226 LBL_RES:mp_clear (&res); -227 LBL_MU:mp_clear (&mu); -228 LBL_M: -229 mp_clear(&M[1]); -230 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ -231 mp_clear (&M[x]); -232 \} -233 return err; -234 \} -235 #endif +224 bitbuf <<= 1; +225 if ((bitbuf & (1 << winsize)) != 0) \{ +226 /* then multiply */ +227 if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) \{ +228 goto LBL_RES; +229 \} +230 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +231 goto LBL_RES; +232 \} +233 \} +234 \} +235 \} +236 +237 mp_exch (&res, Y); +238 err = MP_OKAY; +239 LBL_RES:mp_clear (&res); +240 LBL_MU:mp_clear (&mu); +241 LBL_M: +242 mp_clear(&M[1]); +243 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ +244 mp_clear (&M[x]); +245 \} +246 return err; +247 \} +248 #endif \end{alltt} \end{small} -Lines 31 through 41 determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted +Lines 21 through 40 determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted from smallest to greatest so that in each \textbf{if} statement only one condition must be tested. For example, by the \textbf{if} statement -on line 33 the value of $x$ is already known to be greater than $140$. +on line 32 the value of $x$ is already known to be greater than $140$. -The conditional piece of code beginning on line 47 allows the window size to be restricted to five bits. This logic is used to ensure +The conditional piece of code beginning on line 48 allows the window size to be restricted to five bits. This logic is used to ensure the table of precomputed powers of $G$ remains relatively small. -The for loop on line 60 initializes the $M$ array while lines 61 and 74 compute the value of $\mu$ required for +The for loop on line 61 initializes the $M$ array while lines 62 and 77 compute the value of $\mu$ required for Barrett reduction. -- More later. @@ -8873,21 +8913,22 @@ Unlike the full multiplication algorithms this algorithm does not require any si 056 u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); 057 \} 058 -059 /* store final carry [if any] */ +059 /* store final carry [if any] and increment ix offset */ 060 *tmpc++ = u; -061 -062 /* now zero digits above the top */ -063 while (ix++ < olduse) \{ -064 *tmpc++ = 0; -065 \} -066 -067 /* set used count */ -068 c->used = a->used + 1; -069 mp_clamp(c); -070 -071 return MP_OKAY; -072 \} -073 #endif +061 ++ix; +062 +063 /* now zero digits above the top */ +064 while (ix++ < olduse) \{ +065 *tmpc++ = 0; +066 \} +067 +068 /* set used count */ +069 c->used = a->used + 1; +070 mp_clamp(c); +071 +072 return MP_OKAY; +073 \} +074 #endif \end{alltt} \end{small} @@ -9275,14 +9316,14 @@ the integers from $0$ to $\beta - 1$. 028 029 /* first place a random non-zero digit */ 030 do \{ -031 d = ((mp_digit) abs (rand ())); +031 d = ((mp_digit) abs (rand ())) & MP_MASK; 032 \} while (d == 0); 033 034 if ((res = mp_add_d (a, d, a)) != MP_OKAY) \{ 035 return res; 036 \} 037 -038 while (digits-- > 0) \{ +038 while (--digits > 0) \{ 039 if ((res = mp_lshd (a, 1)) != MP_OKAY) \{ 040 return res; 041 \} @@ -9379,7 +9420,7 @@ as part of larger input without any significant problem. \begin{alltt} 016 017 /* read a string [ASCII] in a given radix */ -018 int mp_read_radix (mp_int * a, char *str, int radix) +018 int mp_read_radix (mp_int * a, const char *str, int radix) 019 \{ 020 int y, res, neg; 021 char ch; @@ -9941,6 +9982,8 @@ To explain the Jacobi Symbol we shall first discuss the Legendre function\footno defined. The Legendre function computes whether or not an integer $a$ is a quadratic residue modulo an odd prime $p$. Numerically it is equivalent to equation \ref{eqn:legendre}. +\textit{-- Tom, don't be an ass, cite your source here...!} + \begin{equation} a^{(p-1)/2} \equiv \begin{array}{rl} -1 & \mbox{if }a\mbox{ is a quadratic non-residue.} \\ diff --git a/libtommath/tommath_class.h b/libtommath/tommath_class.h index 53bfa31..6d05b7b 100644 --- a/libtommath/tommath_class.h +++ b/libtommath/tommath_class.h @@ -90,8 +90,11 @@ #define BN_MP_READ_UNSIGNED_BIN_C #define BN_MP_REDUCE_C #define BN_MP_REDUCE_2K_C +#define BN_MP_REDUCE_2K_L_C #define BN_MP_REDUCE_2K_SETUP_C +#define BN_MP_REDUCE_2K_SETUP_L_C #define BN_MP_REDUCE_IS_2K_C +#define BN_MP_REDUCE_IS_2K_L_C #define BN_MP_REDUCE_SETUP_C #define BN_MP_RSHD_C #define BN_MP_SET_C @@ -105,7 +108,9 @@ #define BN_MP_SUB_D_C #define BN_MP_SUBMOD_C #define BN_MP_TO_SIGNED_BIN_C +#define BN_MP_TO_SIGNED_BIN_N_C #define BN_MP_TO_UNSIGNED_BIN_C +#define BN_MP_TO_UNSIGNED_BIN_N_C #define BN_MP_TOOM_MUL_C #define BN_MP_TOOM_SQR_C #define BN_MP_TORADIX_C @@ -132,7 +137,7 @@ #define BN_MP_ISEVEN_C #define BN_MP_INIT_MULTI_C #define BN_MP_COPY_C - #define BN_MP_ABS_C + #define BN_MP_MOD_C #define BN_MP_SET_C #define BN_MP_DIV_2_C #define BN_MP_ISODD_C @@ -324,11 +329,12 @@ #define BN_MP_CLEAR_C #define BN_MP_ABS_C #define BN_MP_CLEAR_MULTI_C + #define BN_MP_REDUCE_IS_2K_L_C + #define BN_S_MP_EXPTMOD_C #define BN_MP_DR_IS_MODULUS_C #define BN_MP_REDUCE_IS_2K_C #define BN_MP_ISODD_C #define BN_MP_EXPTMOD_FAST_C - #define BN_S_MP_EXPTMOD_C #endif #if defined(BN_MP_EXPTMOD_FAST_C) @@ -360,6 +366,7 @@ #define BN_MP_DIV_C #define BN_MP_MUL_C #define BN_MP_SUB_C + #define BN_MP_NEG_C #define BN_MP_EXCH_C #define BN_MP_CLEAR_MULTI_C #endif @@ -434,6 +441,7 @@ #if defined(BN_MP_INVMOD_SLOW_C) #define BN_MP_ISZERO_C #define BN_MP_INIT_MULTI_C + #define BN_MP_MOD_C #define BN_MP_COPY_C #define BN_MP_ISEVEN_C #define BN_MP_SET_C @@ -725,6 +733,17 @@ #define BN_MP_CLEAR_C #endif +#if defined(BN_MP_REDUCE_2K_L_C) + #define BN_MP_INIT_C + #define BN_MP_COUNT_BITS_C + #define BN_MP_DIV_2D_C + #define BN_MP_MUL_C + #define BN_S_MP_ADD_C + #define BN_MP_CMP_MAG_C + #define BN_S_MP_SUB_C + #define BN_MP_CLEAR_C +#endif + #if defined(BN_MP_REDUCE_2K_SETUP_C) #define BN_MP_INIT_C #define BN_MP_COUNT_BITS_C @@ -733,11 +752,22 @@ #define BN_S_MP_SUB_C #endif +#if defined(BN_MP_REDUCE_2K_SETUP_L_C) + #define BN_MP_INIT_C + #define BN_MP_2EXPT_C + #define BN_MP_COUNT_BITS_C + #define BN_S_MP_SUB_C + #define BN_MP_CLEAR_C +#endif + #if defined(BN_MP_REDUCE_IS_2K_C) #define BN_MP_REDUCE_2K_C #define BN_MP_COUNT_BITS_C #endif +#if defined(BN_MP_REDUCE_IS_2K_L_C) +#endif + #if defined(BN_MP_REDUCE_SETUP_C) #define BN_MP_2EXPT_C #define BN_MP_DIV_C @@ -815,6 +845,11 @@ #define BN_MP_TO_UNSIGNED_BIN_C #endif +#if defined(BN_MP_TO_SIGNED_BIN_N_C) + #define BN_MP_SIGNED_BIN_SIZE_C + #define BN_MP_TO_SIGNED_BIN_C +#endif + #if defined(BN_MP_TO_UNSIGNED_BIN_C) #define BN_MP_INIT_COPY_C #define BN_MP_ISZERO_C @@ -822,6 +857,11 @@ #define BN_MP_CLEAR_C #endif +#if defined(BN_MP_TO_UNSIGNED_BIN_N_C) + #define BN_MP_UNSIGNED_BIN_SIZE_C + #define BN_MP_TO_UNSIGNED_BIN_C +#endif + #if defined(BN_MP_TOOM_MUL_C) #define BN_MP_INIT_MULTI_C #define BN_MP_MOD_2D_C @@ -902,10 +942,12 @@ #define BN_MP_INIT_C #define BN_MP_CLEAR_C #define BN_MP_REDUCE_SETUP_C + #define BN_MP_REDUCE_C + #define BN_MP_REDUCE_2K_SETUP_L_C + #define BN_MP_REDUCE_2K_L_C #define BN_MP_MOD_C #define BN_MP_COPY_C #define BN_MP_SQR_C - #define BN_MP_REDUCE_C #define BN_MP_MUL_C #define BN_MP_SET_C #define BN_MP_EXCH_C -- cgit v0.12 From f1157acccf54ea62a06c14c775142b095cfb2276 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 12 Apr 2005 18:28:51 +0000 Subject: added definition of NULL to strstr.c for Bug 1175161 --- ChangeLog | 6 ++++++ compat/strstr.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 55f45bc..5a78308 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-04-12 Kevin B. Kenny + + * compat/strstr.c: Added default definition of NULL to + accommodate building on systems with badly broken headers. + [Bug #1175161] + 2005-04-09 Daniel Steffen * macosx/README: updated requirements for OS & developer tool diff --git a/compat/strstr.c b/compat/strstr.c index c83c209..d6f5cab 100644 --- a/compat/strstr.c +++ b/compat/strstr.c @@ -9,9 +9,14 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: strstr.c,v 1.3 2002/01/26 01:10:08 dgp Exp $ + * RCS: @(#) $Id: strstr.c,v 1.3.2.1 2005/04/12 18:28:56 kennykb Exp $ */ +#include +#ifndef NULL +#define NULL 0 +#endif + /* *---------------------------------------------------------------------- * -- cgit v0.12 From a67b1b3bbeb88556675d7fde92fea842d50ef35f Mon Sep 17 00:00:00 2001 From: davygrvy Date: Thu, 14 Apr 2005 07:09:34 +0000 Subject: * generic/tclIO.c (Tcl_SetChannelBufferSize): Lowest size limit * tests/io.test: changed from ten bytes to one byte. Need * tests/iogt.test: for this change was proven by Ross Cartlidge where [read stdin 1] was grabbing 10 bytes followed by starting a child process that was intended to continue reading from stdin. Even with -buffersize set to one, nine chars were getting lost by the buffersize over reading for the native read() caused by [read]. --- ChangeLog | 11 +++++++++++ generic/tclIO.c | 17 +++++++++-------- tests/io.test | 4 ++-- tests/iogt.test | 6 +++--- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5a78308..b4f0907 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2005-04-13 David Gravereaux + + * generic/tclIO.c (Tcl_SetChannelBufferSize): Lowest size limit + * tests/io.test: changed from ten bytes to one byte. Need + * tests/iogt.test: for this change was proven by + Ross Cartlidge where [read stdin 1] was grabbing + 10 bytes followed by starting a child process that was intended to + continue reading from stdin. Even with -buffersize set to one, + nine chars were getting lost by the buffersize over reading for + the native read() caused by [read]. + 2005-04-12 Kevin B. Kenny * compat/strstr.c: Added default definition of NULL to diff --git a/generic/tclIO.c b/generic/tclIO.c index 90451c1..46ebf28 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.9 2005/01/27 22:53:32 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.10 2005/04/14 07:10:06 davygrvy Exp $ */ #include "tclInt.h" @@ -5998,7 +5998,7 @@ Tcl_ChannelBuffered(chan) * Tcl_SetChannelBufferSize -- * * Sets the size of buffers to allocate to store input or output - * in the channel. The size must be between 10 bytes and 1 MByte. + * in the channel. The size must be between 1 byte and 1 MByte. * * Results: * None. @@ -6018,11 +6018,11 @@ Tcl_SetChannelBufferSize(chan, sz) ChannelState *statePtr; /* State of real channel structure. */ /* - * If the buffer size is smaller than 10 bytes or larger than one MByte, + * If the buffer size is smaller than 1 byte or larger than one MByte, * do not accept the requested size and leave the current buffer size. */ - if (sz < 10) { + if (sz < 1) { return; } if (sz > (1024 * 1024)) { @@ -6473,10 +6473,11 @@ Tcl_SetChannelOption(interp, chan, optionName, newValue) return TCL_OK; } else if ((len > 7) && (optionName[1] == 'b') && (strncmp(optionName, "-buffersize", len) == 0)) { - statePtr->bufSize = atoi(newValue); /* INTL: "C", UTF safe. */ - if ((statePtr->bufSize < 10) || (statePtr->bufSize > (1024 * 1024))) { - statePtr->bufSize = CHANNELBUFFER_DEFAULT_SIZE; - } + int newBufferSize; + if (Tcl_GetInt(interp, newValue, &newBufferSize) == TCL_ERROR) { + return TCL_ERROR; + } + Tcl_SetChannelBufferSize(chan, newBufferSize); } else if ((len > 2) && (optionName[1] == 'e') && (strncmp(optionName, "-encoding", len) == 0)) { Tcl_Encoding encoding; diff --git a/tests/io.test b/tests/io.test index ce9fce1..50ba5c6 100644 --- a/tests/io.test +++ b/tests/io.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.9 2005/01/27 22:53:34 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.10 2005/04/14 07:10:52 davygrvy Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -4816,7 +4816,7 @@ test io-38.2 {Tcl_SetChannelBufferSize, Tcl_GetChannelBufferSize} { lappend l [fconfigure $f -buffersize] close $f set l -} {4096 10000 4096 4096 4096 100000 4096} +} {4096 10000 1 1 1 100000 100000} test io-38.3 {Tcl_SetChannelBufferSize, changing buffersize between reads} { # This test crashes the interp if Bug #427196 is not fixed diff --git a/tests/iogt.test b/tests/iogt.test index 2494b91..f64b49a 100644 --- a/tests/iogt.test +++ b/tests/iogt.test @@ -10,7 +10,7 @@ # Copyright (c) 2000 Andreas Kupries. # All rights reserved. # -# RCS: @(#) $Id: iogt.test,v 1.7 2002/07/04 15:46:55 andreas_kupries Exp $ +# RCS: @(#) $Id: iogt.test,v 1.7.2.1 2005/04/14 07:10:57 davygrvy Exp $ if {[catch {package require tcltest 2.1}]} { puts stderr "Skipping tests in [info script]. tcltest 2.1 required." @@ -498,7 +498,7 @@ test iogt-2.1 {basic I/O, operation trail} {testchannel unixOnly} { audit_ops aout -attach $fout fconfigure $fin -buffersize 10 - fconfigure $fout -buffersize 5 + fconfigure $fout -buffersize 10 fcopy $fin $fout @@ -548,7 +548,7 @@ test iogt-2.2 {basic I/O, data trail} {testchannel unixOnly} { audit_flow aout -attach $fout fconfigure $fin -buffersize 10 - fconfigure $fout -buffersize 5 + fconfigure $fout -buffersize 10 fcopy $fin $fout -- cgit v0.12 From dcd2e428a1d1f9e3e9948ec66db8fc00a50f5f78 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Tue, 19 Apr 2005 16:28:22 +0000 Subject: * win/tclWinPipe.c: The pipe channel driver now respects the -blocking option when closing. The windows pipe driver now has the same behavior as the UNIX side. This change is to avoid a hung shell when exiting due to open pipes that refuse to close in a graceful manner. * doc/open.n: Added a note about -blocking 0 and lack of exit status as it had never been documented. [Bug 947693] ***POTENTIAL INCOMPATIBILITY*** Scripts that use async pipes on windows, must (like the UNIX side) set -blocking to 1 before calling [close] to receive the exit status. * tests/winPipe.test (winpipe-6.1/2): added 'fconfigure $f -blocking 1' so the exit status can be acquired. --- doc/open.n | 5 +++-- tests/winPipe.test | 4 +++- win/tclWinPipe.c | 49 ++++++++++++++++++++++++++++++++----------------- 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/doc/open.n b/doc/open.n index 4322dde..003739b 100644 --- a/doc/open.n +++ b/doc/open.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: open.n,v 1.16.2.2 2004/10/27 14:23:57 dkf Exp $ +'\" RCS: @(#) $Id: open.n,v 1.16.2.3 2005/04/19 16:30:21 davygrvy Exp $ '\" .so man.macros .TH open n 8.3 Tcl "Tcl Built-In Commands" @@ -136,7 +136,8 @@ command, using the channel id returned by \fBopen\fR as argument. If the command (or one of the commands) executed in the command pipeline returns an error (according to the definition in \fBexec\fR), a Tcl error is generated when \fBclose\fR is called on the channel -(similar to the \fBclose\fR command.) +unless the pipeline is in non-blocking mode then no exit status is +returned (a silent \fBclose\fR with -blocking 0). .PP It is often useful to use the \fBfileevent\fR command with pipelines so other processing may happen at the same time as running the command diff --git a/tests/winPipe.test b/tests/winPipe.test index 4cc6e26..34de9bb 100644 --- a/tests/winPipe.test +++ b/tests/winPipe.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winPipe.test,v 1.22.2.2 2004/10/28 00:01:12 dgp Exp $ +# RCS: @(#) $Id: winPipe.test,v 1.22.2.3 2005/04/19 16:28:34 davygrvy Exp $ package require tcltest namespace import -force ::tcltest::* @@ -295,6 +295,7 @@ test winpipe-6.1 {PipeSetupProc & PipeCheckProc: read threads} \ lappend x [read $f] after 100 { lappend x timeout } vwait x + fconfigure $f -blocking 1 lappend x [catch {close $f} msg] $msg } {writable timeout readable {foobar } timeout 1 stderr32} @@ -309,6 +310,7 @@ test winpipe-6.2 {PipeSetupProc & PipeCheckProc: write threads} \ flush $f after 100 { lappend x timeout } vwait x + fconfigure $f -blocking 1 lappend x [catch {close $f} msg] $msg } {writable timeout 0 {}} diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 57858f0..0206ac5 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.9 2005/01/27 22:53:37 andreas_kupries Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.10 2005/04/19 16:28:22 davygrvy Exp $ */ #include "tclWinInt.h" @@ -2046,27 +2046,42 @@ PipeClose2Proc( } } - /* - * Wrap the error file into a channel and give it to the cleanup - * routine. - */ + if ((pipePtr->flags & PIPE_ASYNC) || TclInExit()) { + /* + * If the channel is non-blocking or Tcl is being cleaned up, + * just detach the children PIDs, reap them (important if we are + * in a dynamic load module), and discard the errorFile. + */ - if (pipePtr->errorFile) { - WinFile *filePtr; + Tcl_DetachPids(pipePtr->numPids, pipePtr->pidPtr); + Tcl_ReapDetachedProcs(); - filePtr = (WinFile*)pipePtr->errorFile; - errChan = Tcl_MakeFileChannel((ClientData) filePtr->handle, - TCL_READABLE); - ckfree((char *) filePtr); + if (pipePtr->errorFile) { + TclpCloseFile(pipePtr->errorFile); + } } else { - errChan = NULL; - } + /* + * Wrap the error file into a channel and give it to the cleanup + * routine. + */ + + if (pipePtr->errorFile) { + WinFile *filePtr; - result = TclCleanupChildren(interp, pipePtr->numPids, pipePtr->pidPtr, - errChan); + filePtr = (WinFile*)pipePtr->errorFile; + errChan = Tcl_MakeFileChannel((ClientData) filePtr->handle, + TCL_READABLE); + ckfree((char *) filePtr); + } else { + errChan = NULL; + } + + result = TclCleanupChildren(interp, pipePtr->numPids, + pipePtr->pidPtr, errChan); + } if (pipePtr->numPids > 0) { - ckfree((char *) pipePtr->pidPtr); + ckfree((char *) pipePtr->pidPtr); } if (pipePtr->writeBuf != NULL) { @@ -2076,7 +2091,7 @@ PipeClose2Proc( ckfree((char*) pipePtr); if (errorCode == 0) { - return result; + return result; } return errorCode; } -- cgit v0.12 From 2d05f5cdb712b67bf5db128baf8b7a39953ba536 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Tue, 19 Apr 2005 16:31:13 +0000 Subject: no message --- ChangeLog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ChangeLog b/ChangeLog index b4f0907..1a573ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2005-04-19 David Gravereaux + + * win/tclWinPipe.c: The pipe channel driver now respects + the -blocking option when closing. The windows pipe driver + now has the same behavior as the UNIX side. This change is + to avoid a hung shell when exiting due to open pipes that + refuse to close in a graceful manner. + * doc/open.n: Added a note about -blocking 0 and lack of + exit status as it had never been documented. [Bug 947693] + + ***POTENTIAL INCOMPATIBILITY*** + + Scripts that use async pipes on windows, must (like the + UNIX side) set -blocking to 1 before calling [close] to + receive the exit status. + + * tests/winPipe.test (winpipe-6.1/2): added 'fconfigure $f + -blocking 1' so the exit status can be acquired. + 2005-04-13 David Gravereaux * generic/tclIO.c (Tcl_SetChannelBufferSize): Lowest size limit -- cgit v0.12 From 83b7caad0f7cbf70e83ec99688ef29b77d0f762d Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 20 Apr 2005 00:14:54 +0000 Subject: * tests/winPipe.test (winpipe-6.2): remove -blocking 1 as this one can truly block. --- ChangeLog | 5 +++++ tests/winPipe.test | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1a573ec..21497a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-04-19 Jeff Hobbs + + * tests/winPipe.test (winpipe-6.2): remove -blocking 1 as this one + can truly block. + 2005-04-19 David Gravereaux * win/tclWinPipe.c: The pipe channel driver now respects diff --git a/tests/winPipe.test b/tests/winPipe.test index 34de9bb..c67132b 100644 --- a/tests/winPipe.test +++ b/tests/winPipe.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winPipe.test,v 1.22.2.3 2005/04/19 16:28:34 davygrvy Exp $ +# RCS: @(#) $Id: winPipe.test,v 1.22.2.4 2005/04/20 00:14:54 hobbs Exp $ package require tcltest namespace import -force ::tcltest::* @@ -310,7 +310,6 @@ test winpipe-6.2 {PipeSetupProc & PipeCheckProc: write threads} \ flush $f after 100 { lappend x timeout } vwait x - fconfigure $f -blocking 1 lappend x [catch {close $f} msg] $msg } {writable timeout 0 {}} -- cgit v0.12 From 7661d10d9c8f7d52761d3481a52e770ba3f8b3fe Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 20 Apr 2005 16:06:16 +0000 Subject: * generic/tclGet.c (Tcl_GetInt): Corrected error that did not * generic/tclObj.c (Tcl_GetIntFromObj): permit 0x80000000 to be recognized as an integer on TCL_WIDE_INT_IS_LONG systems [Bug 1090869]. --- ChangeLog | 6 ++++++ generic/tclGet.c | 8 ++++++-- generic/tclObj.c | 53 +++++++++++++++++------------------------------------ 3 files changed, 29 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index 21497a1..9cc0576 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-04-20 Don Porter + + * generic/tclGet.c (Tcl_GetInt): Corrected error that did not + * generic/tclObj.c (Tcl_GetIntFromObj): permit 0x80000000 to be + recognized as an integer on TCL_WIDE_INT_IS_LONG systems [Bug 1090869]. + 2005-04-19 Jeff Hobbs * tests/winPipe.test (winpipe-6.2): remove -blocking 1 as this one diff --git a/generic/tclGet.c b/generic/tclGet.c index 6819322..307b386 100644 --- a/generic/tclGet.c +++ b/generic/tclGet.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclGet.c,v 1.8 2002/11/19 02:34:49 hobbs Exp $ + * RCS: @(#) $Id: tclGet.c,v 1.8.2.1 2005/04/20 16:06:17 dgp Exp $ */ #include "tclInt.h" @@ -92,7 +92,11 @@ Tcl_GetInt(interp, string, intPtr) * an int. */ - if ((errno == ERANGE) || (((long)(int) i) != i)) { + if ((errno == ERANGE) +#if (LONG_MAX > INT_MAX) + || (i > UINT_MAX) || (i < -(long)UINT_MAX) +#endif + ) { if (interp != (Tcl_Interp *) NULL) { Tcl_SetResult(interp, "integer value too large to represent", TCL_STATIC); diff --git a/generic/tclObj.c b/generic/tclObj.c index 9c34908..3cf3760 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.9 2004/10/27 15:39:36 kennykb Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.10 2005/04/20 16:06:17 dgp Exp $ */ #include "tclInt.h" @@ -1745,8 +1745,8 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) register Tcl_Obj *objPtr; /* The object from which to get a int. */ register int *intPtr; /* Place to store resulting int. */ { - register long l = 0; int result; + Tcl_WideInt w = 0; /* * If the object isn't already an integer of any width, try to @@ -1764,45 +1764,26 @@ Tcl_GetIntFromObj(interp, objPtr, intPtr) * Object should now be either int or wide. Get its value. */ - if (objPtr->typePtr == &tclIntType) { - l = objPtr->internalRep.longValue; - } else if (objPtr->typePtr == &tclWideIntType) { #ifndef TCL_WIDE_INT_IS_LONG - /* - * If the object is already a wide integer, don't convert it. - * This code allows for any integer in the range -ULONG_MAX to - * ULONG_MAX to be converted to a long, ignoring overflow. - * The rule preserves existing semantics for conversion of - * integers on input, but avoids inadvertent demotion of - * wide integers to 32-bit ones in the internal rep. - */ - - Tcl_WideInt w = objPtr->internalRep.wideValue; - if (w >= -(Tcl_WideInt)(ULONG_MAX) && w <= (Tcl_WideInt)(ULONG_MAX)) { - l = Tcl_WideAsLong(w); - } else { - goto tooBig; - } -#else - l = objPtr->internalRep.longValue; + if (objPtr->typePtr == &tclWideIntType) { + w = objPtr->internalRep.wideValue; + } else #endif - } else { - Tcl_Panic( "string->integer conversion failed to convert the obj." ); + { + w = Tcl_LongAsWide(objPtr->internalRep.longValue); } - if (((long)((int)l)) == l) { - *intPtr = (int)l; - return TCL_OK; - } -#ifndef TCL_WIDE_INT_IS_LONG - tooBig: -#endif - if (interp != NULL) { - Tcl_ResetResult(interp); - Tcl_AppendToObj(Tcl_GetObjResult(interp), - "integer value too large to represent as non-long integer", -1); + if ((LLONG_MAX > UINT_MAX) + && ((w > UINT_MAX) || (w < -(Tcl_WideInt)UINT_MAX))) { + if (interp != NULL) { + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "integer value too large to represent as non-long integer", + -1)); + } + return TCL_ERROR; } - return TCL_ERROR; + *intPtr = (int)w; + return TCL_OK; } /* -- cgit v0.12 From 9925d5b2fcaa8ed663d1558fbf0b2227607f40e0 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 21 Apr 2005 23:42:27 +0000 Subject: * tests/unixInit.test (7.1): fixed failure when running tests with -tmpdir arg not set to working dir. --- ChangeLog | 5 +++++ tests/unixInit.test | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9cc0576..9b676f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-04-22 Daniel Steffen + + * tests/unixInit.test (7.1): fixed failure when running tests + with -tmpdir arg not set to working dir. + 2005-04-20 Don Porter * generic/tclGet.c (Tcl_GetInt): Corrected error that did not diff --git a/tests/unixInit.test b/tests/unixInit.test index 20ee51e..88a9638 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.10 2004/11/19 06:29:23 das Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.11 2005/04/21 23:42:28 das Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -367,7 +367,7 @@ test unixInit-7.1 {closed standard channel: Bug 772288} -constraints { makeFile {puts [open /dev/null]} crash.tcl makeFile " close stdin - [list exec $tclsh crash.tcl] + [list exec $tclsh [file join [temporaryDirectory] crash.tcl]] " crashtest.tcl exec $tclsh [file join [temporaryDirectory] crashtest.tcl] } -cleanup { -- cgit v0.12 From e3d20a2783044861949b7a0230410548b1c59982 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 22 Apr 2005 16:29:57 +0000 Subject: * generic/tclCmdMZ.c: Corrected intrep-dependence of * tests/string.test: [string is boolean] [Bug 1187123] --- ChangeLog | 5 +++++ generic/tclCmdMZ.c | 12 +++--------- tests/string.test | 11 ++++++++++- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9b676f7..eaecb51 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-04-22 Don Porter + + * generic/tclCmdMZ.c: Corrected intrep-dependence of + * tests/string.test: [string is boolean] [Bug 1187123] + 2005-04-22 Daniel Steffen * tests/unixInit.test (7.1): fixed failure when running tests diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index ce28e54..45a2bed 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.15 2005/03/18 16:33:42 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.16 2005/04/22 16:30:02 dgp Exp $ */ #include "tclInt.h" @@ -1592,14 +1592,8 @@ Tcl_StringObjCmd(dummy, interp, objc, objv) case STR_IS_BOOL: case STR_IS_TRUE: case STR_IS_FALSE: - if (objPtr->typePtr == &tclBooleanType) { - if ((((enum isOptions) index == STR_IS_TRUE) && - objPtr->internalRep.longValue == 0) || - (((enum isOptions) index == STR_IS_FALSE) && - objPtr->internalRep.longValue != 0)) { - result = 0; - } - } else if ((Tcl_GetBoolean(NULL, string1, &i) + /* Optimizers, beware Bug 1187123 ! */ + if ((Tcl_GetBoolean(NULL, string1, &i) == TCL_ERROR) || (((enum isOptions) index == STR_IS_TRUE) && i == 0) || diff --git a/tests/string.test b/tests/string.test index a48df1c..71e94ec 100644 --- a/tests/string.test +++ b/tests/string.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: string.test,v 1.36.2.3 2004/08/30 18:15:25 dkf Exp $ +# RCS: @(#) $Id: string.test,v 1.36.2.4 2005/04/22 16:30:10 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -23,6 +23,8 @@ if {[lsearch [namespace children] ::tcltest] == -1} { set ::tcltest::testConstraints(testobj) \ [expr {[info commands testobj] != {}}] +set ::tcltest::testConstraints(testindexobj) \ + [expr {[info commands testindexobj] != {}}] test string-1.1 {error conditions} { list [catch {string gorp a b} msg] $msg @@ -1340,6 +1342,13 @@ test string-22.13 {string wordstart, unicode} { string wordstart "\uc700\uc700 abc" 8 } 3 +test string-23.0 {string is boolean, Bug 1187123} testindexobj { + set x 5 + catch {testindexobj $x foo bar soom} + string is boolean $x +} 0 + + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 24fcde64c436af06b6824359ff50920a2933af27 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 26 Apr 2005 00:46:01 +0000 Subject: * compat/string.h: fixed memchr() protoype for __APPLE__ so that we build on Mac OS X 10.1 again. * generic/tclNotify.c (TclFinalizeNotifier): fixed notifier not being finalized in unthreaded core (was testing for notifier initialization in current thread by checking thread id != 0 but thread id is always 0 in untreaded core). * unix/tclUnixNotfy.c (Tcl_WaitForEvent): sync with HEAD: only declare and use timeout var in unthreaded core. * unix/Makefile.in: added @PLAT_SRCS@ to SRCS and split out NOTIFY_SRCS from UNIX_SRCS for parity with UNIX_OBJS & NOTIFY_OBJS. * unix/configure.in: only run check for broken strstr implementation if AC_REPLACE_FUNCS(strstr) hasn't already determined that strstr is unavailable, otherwise compat/strstr.o will be used twice (resulting in duplicate symbol link errors on Mac OS X 10.1) * unix/tcl.m4 (Darwin): added configure checks for recently added linker flags -single_module and -search_paths_first to allow building with older tools (and on Mac OS X 10.1), use -single_module in SHLIB_LD and not just T{CL,K}_SHLIB_LD_EXTRAS, added unexporting from Tk of symbols from libtclstub to avoid duplicate symbol warnings, added PLAT_SRCS definition for Mac OS X. (SC_MISSING_POSIX_HEADERS): added caching of dirent.h check. (SC_TCL_64BIT_FLAGS): fixed 'checking for off64_t' message output. * unix/configure: autoconf-2.13 --- ChangeLog | 32 +++ compat/string.h | 6 +- generic/tclNotify.c | 9 +- unix/Makefile.in | 10 +- unix/configure | 724 +++++++++++++++++++++++++++++----------------------- unix/configure.in | 32 +-- unix/tcl.m4 | 38 ++- unix/tclUnixNotfy.c | 12 +- 8 files changed, 503 insertions(+), 360 deletions(-) diff --git a/ChangeLog b/ChangeLog index eaecb51..de6a51f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,35 @@ +2005-04-25 Daniel Steffen + + * compat/string.h: fixed memchr() protoype for __APPLE__ so that we + build on Mac OS X 10.1 again. + + * generic/tclNotify.c (TclFinalizeNotifier): fixed notifier not being + finalized in unthreaded core (was testing for notifier initialization in + current thread by checking thread id != 0 but thread id is always 0 in + untreaded core). + + * unix/tclUnixNotfy.c (Tcl_WaitForEvent): sync with HEAD: only declare + and use timeout var in unthreaded core. + + * unix/Makefile.in: added @PLAT_SRCS@ to SRCS and split out NOTIFY_SRCS + from UNIX_SRCS for parity with UNIX_OBJS & NOTIFY_OBJS. + + * unix/configure.in: only run check for broken strstr implementation if + AC_REPLACE_FUNCS(strstr) hasn't already determined that strstr is + unavailable, otherwise compat/strstr.o will be used twice (resulting in + duplicate symbol link errors on Mac OS X 10.1) + + * unix/tcl.m4 (Darwin): added configure checks for recently added linker + flags -single_module and -search_paths_first to allow building with + older tools (and on Mac OS X 10.1), use -single_module in SHLIB_LD and + not just T{CL,K}_SHLIB_LD_EXTRAS, added unexporting from Tk of symbols + from libtclstub to avoid duplicate symbol warnings, added PLAT_SRCS + definition for Mac OS X. + (SC_MISSING_POSIX_HEADERS): added caching of dirent.h check. + (SC_TCL_64BIT_FLAGS): fixed 'checking for off64_t' message output. + + * unix/configure: autoconf-2.13 + 2005-04-22 Don Porter * generic/tclCmdMZ.c: Corrected intrep-dependence of diff --git a/compat/string.h b/compat/string.h index 37e5140..15f60fb 100644 --- a/compat/string.h +++ b/compat/string.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: string.h,v 1.4 2000/07/18 18:16:17 ericm Exp $ + * RCS: @(#) $Id: string.h,v 1.4.18.1 2005/04/26 00:46:02 das Exp $ */ #ifndef _STRING @@ -28,7 +28,11 @@ #include #endif +#ifdef __APPLE__ +extern VOID * memchr _ANSI_ARGS_((CONST VOID *s, int c, size_t n)); +#else extern char * memchr _ANSI_ARGS_((CONST VOID *s, int c, size_t n)); +#endif extern int memcmp _ANSI_ARGS_((CONST VOID *s1, CONST VOID *s2, size_t n)); extern char * memcpy _ANSI_ARGS_((VOID *t, CONST VOID *f, size_t n)); diff --git a/generic/tclNotify.c b/generic/tclNotify.c index abd4e04..c09d851 100644 --- a/generic/tclNotify.c +++ b/generic/tclNotify.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNotify.c,v 1.11.2.1 2004/07/15 21:20:25 vasiljevic Exp $ + * RCS: @(#) $Id: tclNotify.c,v 1.11.2.2 2005/04/26 00:46:02 das Exp $ */ #include "tclInt.h" @@ -68,6 +68,7 @@ typedef struct ThreadSpecificData { Tcl_ThreadId threadId; /* Thread that owns this notifier instance. */ ClientData clientData; /* Opaque handle for platform specific * notifier. */ + int initialized; /* 1 if notifier has been initialized. */ struct ThreadSpecificData *nextPtr; /* Next notifier in global list of notifiers. * Access is controlled by the listLock global @@ -118,6 +119,7 @@ TclInitNotifier() tsdPtr->threadId = Tcl_GetCurrentThread(); tsdPtr->clientData = tclStubs.tcl_InitNotifier(); + tsdPtr->initialized = 1; tsdPtr->nextPtr = firstNotifierPtr; firstNotifierPtr = tsdPtr; @@ -157,7 +159,7 @@ TclFinalizeNotifier() ThreadSpecificData **prevPtrPtr; Tcl_Event *evPtr, *hold; - if (tsdPtr->threadId == (Tcl_ThreadId)0) { + if (!tsdPtr->initialized) { return; /* Notifier not initialized for the current thread */ } @@ -184,6 +186,7 @@ TclFinalizeNotifier() break; } } + tsdPtr->initialized = 0; Tcl_MutexUnlock(&listLock); } @@ -876,7 +879,7 @@ Tcl_DoOneEvent(flags) */ if (Tcl_ServiceEvent(flags)) { - result = 1; + result = 1; break; } diff --git a/unix/Makefile.in b/unix/Makefile.in index abb41e5..00a2141 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.10 2005/02/10 23:40:17 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.11 2005/04/26 00:46:02 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -416,7 +416,6 @@ UNIX_SRCS = \ $(UNIX_DIR)/tclUnixEvent.c \ $(UNIX_DIR)/tclUnixFCmd.c \ $(UNIX_DIR)/tclUnixFile.c \ - $(UNIX_DIR)/tclUnixNotfy.c \ $(UNIX_DIR)/tclUnixPipe.c \ $(UNIX_DIR)/tclUnixSock.c \ $(UNIX_DIR)/tclUnixTest.c \ @@ -424,6 +423,9 @@ UNIX_SRCS = \ $(UNIX_DIR)/tclUnixTime.c \ $(UNIX_DIR)/tclUnixInit.c +NOTIFY_SRCS = \ + $(UNIX_DIR)/tclUnixNotfy.c + DL_SRCS = \ $(UNIX_DIR)/tclLoadAix.c \ $(UNIX_DIR)/tclLoadAout.c \ @@ -442,7 +444,7 @@ MAC_OSX_SRCS = \ # files won't compile on the current machine, and they will cause # problems for things like "make depend". -SRCS = $(GENERIC_SRCS) $(UNIX_SRCS) $(STUB_SRCS) +SRCS = $(GENERIC_SRCS) $(UNIX_SRCS) $(NOTIFY_SRCS) $(STUB_SRCS) @PLAT_SRCS@ all: binaries libraries doc @@ -1029,7 +1031,7 @@ tclUnixInit.o: $(UNIX_DIR)/tclUnixInit.c $(GENERIC_DIR)/tclInitScript.h tclConfi -DTCL_PACKAGE_PATH="\"${TCL_PACKAGE_PATH}\"" \ $(UNIX_DIR)/tclUnixInit.c -# This is the CFBundle interface. It is only used on Mac OS X. +# The following are Mac OS X only sources: tclMacOSXBundle.o: $(MAC_OSX_DIR)/tclMacOSXBundle.c $(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tclMacOSXBundle.c diff --git a/unix/configure b/unix/configure index c9ee57b..cbbbd8d 100755 --- a/unix/configure +++ b/unix/configure @@ -2243,6 +2243,7 @@ fi STLIB_LD='${AR} cr' LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" PLAT_OBJS="" + PLAT_SRCS="" case $system in AIX-*) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then @@ -2320,7 +2321,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2324: checking for gettimeofday in -lbsd" >&5 +echo "configure:2325: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2328,7 +2329,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2382,7 +2383,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2386: checking for inet_ntoa in -lbind" >&5 +echo "configure:2387: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2390,7 +2391,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2467,7 +2468,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2471: checking for shl_load in -ldld" >&5 +echo "configure:2472: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2475,7 +2476,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2554,7 +2555,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2558: checking for shl_load in -ldld" >&5 +echo "configure:2559: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2562,7 +2563,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2697,17 +2698,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2701: checking for dld.h" >&5 +echo "configure:2702: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2712: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2771,17 +2772,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2775: checking for dld.h" >&5 +echo "configure:2776: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2837,17 +2838,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2841: checking for dlfcn.h" >&5 +echo "configure:2842: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2852: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2874,9 +2875,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2878: checking for ELF" >&5 +echo "configure:2879: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2954: checking for ELF" >&5 +echo "configure:2955: checking for ELF" >&5 cat > conftest.$ac_ext <&6 +echo "configure:3016: checking if ld accepts -single_module flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_ld_single_module=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_ld_single_module=no +fi +rm -f conftest* + LDFLAGS=$hold_ldflags +fi + +echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 + if test $tcl_cv_ld_single_module = yes; then + SHLIB_LD="${SHLIB_LD} -Wl,-single_module" + fi SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" - PLAT_OBJS=\$\(MAC\_OSX_OBJS\) DL_LIBS="" - LDFLAGS="$LDFLAGS -prebind -Wl,-search_paths_first" + LDFLAGS="$LDFLAGS -prebind" + echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 +echo "configure:3054: checking if ld accepts -search_paths_first flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_ld_search_paths_first=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_ld_search_paths_first=no +fi +rm -f conftest* + LDFLAGS=$hold_ldflags +fi + +echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 + if test $tcl_cv_ld_search_paths_first = yes; then + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" - CFLAGS_OPTIMIZE="-Os" LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" + PLAT_OBJS=\$\(MAC\_OSX_OBJS\) + PLAT_SRCS=\$\(MAC\_OSX_SRCS\) + TCL_SHLIB_LD_EXTRAS='-compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' + TK_SHLIB_LD_EXTRAS=' -compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TK_LIB_FILE} -seg1addr 0xb000000 -unexported_symbols_list $$(f=$(TCL_STUB_LIB_FILE).E && nm -gjp $(TCL_BIN_DIR)/$(TCL_STUB_LIB_FILE) | tail +3 > $$f && echo $$f)' + LIBS="$LIBS -framework CoreFoundation" cat >> confdefs.h <<\EOF #define MAC_OSX_TCL 1 EOF @@ -3037,7 +3106,6 @@ EOF #define TCL_DEFAULT_ENCODING "utf-8" EOF - LIBS="$LIBS -framework CoreFoundation" ;; NEXTSTEP-*) SHLIB_CFLAGS="" @@ -3318,17 +3386,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3322: checking for ld accepts -Bexport flag" >&5 +echo "configure:3390: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3369,9 +3437,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3373: checking sys/exec.h" >&5 +echo "configure:3441: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3389,7 +3457,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3393: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3461: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3407,9 +3475,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3411: checking a.out.h" >&5 +echo "configure:3479: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3427,7 +3495,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3499: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3445,9 +3513,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3449: checking sys/exec_aout.h" >&5 +echo "configure:3517: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3465,7 +3533,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3591,6 +3659,7 @@ fi + @@ -3615,7 +3684,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3619: checking for build with symbols" >&5 +echo "configure:3688: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3676,21 +3745,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3680: checking for required early compiler flags" >&5 +echo "configure:3749: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3698,7 +3767,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3706,7 +3775,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3732,14 +3801,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3743: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3812: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3747,7 +3816,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3755,7 +3824,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3784,7 +3853,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3788: checking for 64-bit integer type" >&5 +echo "configure:3857: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3792,14 +3861,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3813,7 +3882,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3895: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3847,13 +3916,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3851: checking for struct dirent64" >&5 +echo "configure:3920: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3861,7 +3930,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3865: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3882,13 +3951,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3886: checking for struct stat64" >&5 +echo "configure:3955: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3896,7 +3965,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3916,42 +3985,15 @@ EOF fi echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 - echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:3921: checking for off64_t" >&5 - if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext < -int main() { -off64_t offset; - -; return 0; } -EOF -if { (eval echo configure:3935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_type_off64_t=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_type_off64_t=no -fi -rm -f conftest* -fi - for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3950: checking for $ac_func" >&5 +echo "configure:3992: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3998,6 +4040,33 @@ else fi done + echo $ac_n "checking for off64_t""... $ac_c" 1>&6 +echo "configure:4045: checking for off64_t" >&5 + if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < +int main() { +off64_t offset; + +; return 0; } +EOF +if { (eval echo configure:4059: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_type_off64_t=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_type_off64_t=no +fi +rm -f conftest* +fi + if test "x${tcl_cv_type_off64_t}" = "xyes" && \ test "x${ac_cv_func_lseek64}" = "xyes" && \ test "x${ac_cv_func_open64}" = "xyes" ; then @@ -4017,14 +4086,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4021: checking whether byte ordering is bigendian" >&5 +echo "configure:4090: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4035,11 +4104,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4050,7 +4119,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4070,7 +4139,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4116,12 +4185,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4120: checking for $ac_func" >&5 +echo "configure:4189: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4178,12 +4247,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4182: checking for $ac_func" >&5 +echo "configure:4251: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4236,12 +4305,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4240: checking for $ac_func" >&5 +echo "configure:4309: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4291,12 +4360,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4295: checking for strerror" >&5 +echo "configure:4364: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4343,12 +4412,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4347: checking for getwd" >&5 +echo "configure:4416: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4395,12 +4464,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4399: checking for wait3" >&5 +echo "configure:4468: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4447,12 +4516,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4451: checking for uname" >&5 +echo "configure:4520: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4499,12 +4568,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4503: checking for realpath" >&5 +echo "configure:4572: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4562,9 +4631,12 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4566: checking dirent.h" >&5 - cat > conftest.$ac_ext <&5 + if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < #include @@ -4590,18 +4662,20 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_ok=yes + tcl_cv_dirent_h=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=no + tcl_cv_dirent_h=no fi rm -f conftest* +fi + - if test $tcl_ok = no; then + if test $tcl_cv_dirent_h = no; then cat >> confdefs.h <<\EOF #define NO_DIRENT_H 1 EOF @@ -4611,17 +4685,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4615: checking for errno.h" >&5 +echo "configure:4689: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4625: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4699: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4648,17 +4722,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4652: checking for float.h" >&5 +echo "configure:4726: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4685,17 +4759,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4689: checking for values.h" >&5 +echo "configure:4763: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4699: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4773: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4722,17 +4796,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4726: checking for limits.h" >&5 +echo "configure:4800: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4810: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4762,17 +4836,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4766: checking for stdlib.h" >&5 +echo "configure:4840: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4850: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4795,7 +4869,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4809,7 +4883,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4823,7 +4897,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4844,17 +4918,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4848: checking for string.h" >&5 +echo "configure:4922: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4858: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4877,7 +4951,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4891,7 +4965,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4917,17 +4991,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4921: checking for sys/wait.h" >&5 +echo "configure:4995: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4931: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5005: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4954,17 +5028,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:4958: checking for dlfcn.h" >&5 +echo "configure:5032: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5042: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4996,17 +5070,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5000: checking for $ac_hdr" >&5 +echo "configure:5074: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5010: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5084: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5046,17 +5120,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5050: checking for $ac_hdr" >&5 +echo "configure:5124: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5060: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5134: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5083,7 +5157,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5087: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5161: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5092,7 +5166,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5107,7 +5181,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5124,7 +5198,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5138,7 +5212,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5156,7 +5230,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5171,7 +5245,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5189,7 +5263,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5206,7 +5280,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5224,7 +5298,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5240,7 +5314,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5258,7 +5332,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5275,7 +5349,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5318,19 +5392,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5322: checking for fd_set in sys/types" >&5 +echo "configure:5396: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5408: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5346,12 +5420,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5350: checking for fd_mask in sys/select" >&5 +echo "configure:5424: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5388,12 +5462,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5392: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5466: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5401,7 +5475,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5405: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5426,17 +5500,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5430: checking for $ac_hdr" >&5 +echo "configure:5504: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5514: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5463,12 +5537,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5467: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5541: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5477,7 +5551,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5555: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5498,12 +5572,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5502: checking for tm_zone in struct tm" >&5 +echo "configure:5576: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5511,7 +5585,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5531,12 +5605,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5535: checking for tzname" >&5 +echo "configure:5609: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5546,7 +5620,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5571,12 +5645,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5575: checking for $ac_func" >&5 +echo "configure:5649: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5625,19 +5699,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5629: checking tm_tzadj in struct tm" >&5 +echo "configure:5703: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5658,19 +5732,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5662: checking tm_gmtoff in struct tm" >&5 +echo "configure:5736: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5695,12 +5769,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5699: checking long timezone variable" >&5 +echo "configure:5773: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5709,7 +5783,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5732,12 +5806,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5736: checking time_t timezone variable" >&5 +echo "configure:5810: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5746,7 +5820,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5750: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5773,12 +5847,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5777: checking for st_blksize in struct stat" >&5 +echo "configure:5851: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5786,7 +5860,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5807,12 +5881,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5811: checking for fstatfs" >&5 +echo "configure:5885: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5864,7 +5938,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5868: checking for 8-bit clean memcmp" >&5 +echo "configure:5942: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5872,7 +5946,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5906,12 +5980,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5910: checking for memmove" >&5 +echo "configure:5984: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -5965,24 +6039,24 @@ fi # On some systems strstr is broken: it returns a pointer even # even if the original string is empty. #-------------------------------------------------------------------- - -echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:5971: checking proper strstr implementation" >&5 -if test "$cross_compiling" = yes; then +if test "x${ac_cv_func_strstr}" = "xyes"; then + echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 +echo "configure:6045: checking proper strstr implementation" >&5 + if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -5994,11 +6068,12 @@ fi rm -fr conftest* fi -if test $tcl_ok = yes; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""broken, using substitute" 1>&6 - LIBOBJS="$LIBOBJS strstr.o" + if test $tcl_ok = yes; then + echo "$ac_t""yes" 1>&6 + else + echo "$ac_t""broken, using substitute" 1>&6 + LIBOBJS="$LIBOBJS strstr.o" + fi fi #-------------------------------------------------------------------- @@ -6008,12 +6083,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6012: checking for strtoul" >&5 +echo "configure:6087: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6060,7 +6135,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6099,12 +6174,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6103: checking for strtod" >&5 +echo "configure:6178: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6151,7 +6226,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6193,12 +6268,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6197: checking for strtod" >&5 +echo "configure:6272: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6243,7 +6318,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6247: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6322: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6252,7 +6327,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6308,12 +6383,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6312: checking for ANSI C header files" >&5 +echo "configure:6387: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6321,7 +6396,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6338,7 +6413,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6356,7 +6431,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6377,7 +6452,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6388,7 +6463,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6412,12 +6487,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6416: checking for mode_t" >&5 +echo "configure:6491: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6445,12 +6520,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6449: checking for pid_t" >&5 +echo "configure:6524: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6478,12 +6553,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6482: checking for size_t" >&5 +echo "configure:6557: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6511,12 +6586,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6515: checking for uid_t in sys/types.h" >&5 +echo "configure:6590: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6546,12 +6621,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6550: checking for socklen_t" >&5 +echo "configure:6625: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6590,12 +6665,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6594: checking for opendir" >&5 +echo "configure:6669: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6651,12 +6726,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6655: checking union wait" >&5 +echo "configure:6730: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6668,7 +6743,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6695,12 +6770,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6699: checking for strncasecmp" >&5 +echo "configure:6774: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6745,7 +6820,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6749: checking for strncasecmp in -lsocket" >&5 +echo "configure:6824: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6753,7 +6828,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6788,7 +6863,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6792: checking for strncasecmp in -linet" >&5 +echo "configure:6867: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6796,7 +6871,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6845,12 +6920,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6849: checking for BSDgettimeofday" >&5 +echo "configure:6924: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6895,12 +6970,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6899: checking for gettimeofday" >&5 +echo "configure:6974: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -6950,12 +7025,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:6954: checking for gettimeofday declaration" >&5 +echo "configure:7029: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6986,14 +7061,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:6990: checking whether char is unsigned" >&5 +echo "configure:7065: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7049,12 +7124,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7053: checking signed char declarations" >&5 +echo "configure:7128: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7089,7 +7164,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7093: checking for a putenv() that copies the buffer" >&5 +echo "configure:7168: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7097,7 +7172,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7119,7 +7194,7 @@ else } EOF -if { (eval echo configure:7123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7161,17 +7236,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7165: checking for langinfo.h" >&5 +echo "configure:7240: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7250: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7196,17 +7271,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7200: checking whether to use nl_langinfo" >&5 +echo "configure:7275: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7241,17 +7316,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7245: checking for $ac_hdr" >&5 +echo "configure:7320: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7330: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7281,17 +7356,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7285: checking for $ac_hdr" >&5 +echo "configure:7360: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7295: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7370: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7318,7 +7393,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7322: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7397: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7381,7 +7456,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7385: checking how to package libraries" >&5 +echo "configure:7460: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -7699,6 +7774,7 @@ s%@AR@%$AR%g s%@DL_LIBS@%$DL_LIBS%g s%@DL_OBJS@%$DL_OBJS%g s%@PLAT_OBJS@%$PLAT_OBJS%g +s%@PLAT_SRCS@%$PLAT_SRCS%g s%@CFLAGS_DEBUG@%$CFLAGS_DEBUG%g s%@CFLAGS_OPTIMIZE@%$CFLAGS_OPTIMIZE%g s%@CFLAGS_WARNING@%$CFLAGS_WARNING%g diff --git a/unix/configure.in b/unix/configure.in index 4368615..bb68eb2 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.12 2004/11/25 00:19:33 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.13 2005/04/26 00:46:03 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -206,20 +206,22 @@ AC_CHECK_FUNC(memmove, , [AC_DEFINE(NO_MEMMOVE) AC_DEFINE(NO_STRING_H)]) # On some systems strstr is broken: it returns a pointer even # even if the original string is empty. #-------------------------------------------------------------------- - -AC_MSG_CHECKING([proper strstr implementation]) -AC_TRY_RUN([ -extern int strstr(); -int main() -{ - exit(strstr("\0test", "test") ? 1 : 0); -} -], tcl_ok=yes, tcl_ok=no, tcl_ok=no) -if test $tcl_ok = yes; then - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT([broken, using substitute]) - LIBOBJS="$LIBOBJS strstr.o" +dnl only run if AC_REPLACE_FUNCS(strstr) hasn't already added strstr.o +if test "x${ac_cv_func_strstr}" = "xyes"; then + AC_MSG_CHECKING([proper strstr implementation]) + AC_TRY_RUN([ + extern int strstr(); + int main() + { + exit(strstr("\0test", "test") ? 1 : 0); + } + ], tcl_ok=yes, tcl_ok=no, tcl_ok=no) + if test $tcl_ok = yes; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT([broken, using substitute]) + LIBOBJS="$LIBOBJS strstr.o" + fi fi #-------------------------------------------------------------------- diff --git a/unix/tcl.m4 b/unix/tcl.m4 index ccd9946..5eb6c72 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -887,6 +887,7 @@ dnl AC_CHECK_TOOL(AR, ar) STLIB_LD='${AR} cr' LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" PLAT_OBJS="" + PLAT_SRCS="" case $system in AIX-*) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then @@ -1357,25 +1358,42 @@ dnl AC_CHECK_TOOL(AR, ar) esac ;; Darwin-*) + CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" SHLIB_LD="cc -dynamiclib \${LDFLAGS}" - TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000 -Wl,-single_module" - TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TK_LIB_FILE} -prebind -seg1addr 0xb000000 -Wl,-single_module" + AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [ + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" + AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no) + LDFLAGS=$hold_ldflags]) + if test $tcl_cv_ld_single_module = yes; then + SHLIB_LD="${SHLIB_LD} -Wl,-single_module" + fi SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" - PLAT_OBJS=\$\(MAC\_OSX_OBJS\) DL_LIBS="" - LDFLAGS="$LDFLAGS -prebind -Wl,-search_paths_first" + LDFLAGS="$LDFLAGS -prebind" + AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [ + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no) + LDFLAGS=$hold_ldflags]) + if test $tcl_cv_ld_search_paths_first = yes; then + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" - CFLAGS_OPTIMIZE="-Os" LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" + PLAT_OBJS=\$\(MAC\_OSX_OBJS\) + PLAT_SRCS=\$\(MAC\_OSX_SRCS\) + TCL_SHLIB_LD_EXTRAS='-compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' + TK_SHLIB_LD_EXTRAS=' -compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TK_LIB_FILE} -seg1addr 0xb000000 -unexported_symbols_list $$(f=$(TCL_STUB_LIB_FILE).E && nm -gjp $(TCL_BIN_DIR)/$(TCL_STUB_LIB_FILE) | tail +3 > $$f && echo $$f)' + LIBS="$LIBS -framework CoreFoundation" AC_DEFINE(MAC_OSX_TCL) AC_DEFINE(HAVE_CFBUNDLE) AC_DEFINE(USE_VFORK) AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8") - LIBS="$LIBS -framework CoreFoundation" ;; NEXTSTEP-*) SHLIB_CFLAGS="" @@ -1837,6 +1855,7 @@ dnl esac AC_SUBST(DL_OBJS) AC_SUBST(PLAT_OBJS) + AC_SUBST(PLAT_SRCS) AC_SUBST(CFLAGS) AC_SUBST(CFLAGS_DEBUG) AC_SUBST(CFLAGS_OPTIMIZE) @@ -2016,6 +2035,7 @@ int main() { AC_DEFUN(SC_MISSING_POSIX_HEADERS, [ AC_MSG_CHECKING(dirent.h) + AC_CACHE_VAL(tcl_cv_dirent_h, AC_TRY_LINK([#include #include ], [ #ifndef _POSIX_SOURCE @@ -2035,9 +2055,9 @@ d = opendir("foobar"); entryPtr = readdir(d); p = entryPtr->d_name; closedir(d); -], tcl_ok=yes, tcl_ok=no) +], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no)) - if test $tcl_ok = no; then + if test $tcl_cv_dirent_h = no; then AC_DEFINE(NO_DIRENT_H) fi @@ -2545,12 +2565,12 @@ AC_DEFUN(SC_TCL_64BIT_FLAGS, [ fi AC_MSG_RESULT(${tcl_cv_struct_stat64}) + AC_CHECK_FUNCS(open64 lseek64) AC_MSG_CHECKING([for off64_t]) AC_CACHE_VAL(tcl_cv_type_off64_t,[ AC_TRY_COMPILE([#include ],[off64_t offset; ], tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)]) - AC_CHECK_FUNCS(open64 lseek64) dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the dnl functions lseek64 and open64 are defined. if test "x${tcl_cv_type_off64_t}" = "xyes" && \ diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index fc15eaf..7482646 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.7 2004/12/07 00:07:54 hobbs Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.8 2005/04/26 00:46:02 das Exp $ */ #include "tclInt.h" @@ -653,11 +653,15 @@ Tcl_WaitForEvent(timePtr) { FileHandler *filePtr; FileHandlerEvent *fileEvPtr; - struct timeval timeout, *timeoutPtr; int mask; #ifdef TCL_THREADS int waitForFiles; #else + /* Impl. notes: timeout & timeoutPtr are used if, and only if + * threads are not enabled. They are the arguments for the regular + * select() used when the core is not thread-enabled. */ + + struct timeval timeout, *timeoutPtr; int numFound; #endif ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); @@ -666,6 +670,7 @@ Tcl_WaitForEvent(timePtr) return tclStubs.tcl_WaitForEvent(timePtr); } +#ifndef TCL_THREADS /* * Set up the timeout structure. Note that if there are no events to * check for, we return with a negative result rather than blocking @@ -676,7 +681,6 @@ Tcl_WaitForEvent(timePtr) timeout.tv_sec = timePtr->sec; timeout.tv_usec = timePtr->usec; timeoutPtr = &timeout; -#ifndef TCL_THREADS } else if (tsdPtr->numFdBits == 0) { /* * If there are no threads, no timeout, and no fds registered, @@ -687,10 +691,10 @@ Tcl_WaitForEvent(timePtr) */ return -1; -#endif } else { timeoutPtr = NULL; } +#endif #ifdef TCL_THREADS /* -- cgit v0.12 From fd15e0bf67810cb7675d509031bf0c4f59f62d0a Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 27 Apr 2005 21:07:49 +0000 Subject: * tests/unixInit.test (7.1): Alternative fix for the 2005-04-22 commit. --- ChangeLog | 5 +++++ tests/unixInit.test | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index de6a51f..d5ae083 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-04-27 Don Porter + + * tests/unixInit.test (7.1): Alternative fix for the + 2005-04-22 commit. + 2005-04-25 Daniel Steffen * compat/string.h: fixed memchr() protoype for __APPLE__ so that we diff --git a/tests/unixInit.test b/tests/unixInit.test index 88a9638..f4a2fc7 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixInit.test,v 1.30.2.11 2005/04/21 23:42:28 das Exp $ +# RCS: @(#) $Id: unixInit.test,v 1.30.2.12 2005/04/27 21:07:52 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -364,12 +364,12 @@ test unixInit-7.1 {closed standard channel: Bug 772288} -constraints { unixOnly stdio } -body { set tclsh [interpreter] - makeFile {puts [open /dev/null]} crash.tcl - makeFile " + set crash [makeFile {puts [open /dev/null]} crash.tcl] + set crashtest [makeFile " close stdin - [list exec $tclsh [file join [temporaryDirectory] crash.tcl]] - " crashtest.tcl - exec $tclsh [file join [temporaryDirectory] crashtest.tcl] + [list exec $tclsh $crash] + " crashtest.tcl] + exec $tclsh $crashtest } -cleanup { removeFile crash.tcl removeFile crashtest.tcl -- cgit v0.12 From 5ae9191e36b48e5ff2789da3317c118db29a6a6c Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 28 Apr 2005 05:34:39 +0000 Subject: * library/init.tcl: Corrected flaw in interactive command * tests/main.test: auto-completion. [Bug 1191409]. --- ChangeLog | 3 +++ library/init.tcl | 4 ++-- tests/main.test | 18 +++++++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index d5ae083..c01933e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-04-27 Don Porter + * library/init.tcl: Corrected flaw in interactive command + * tests/main.test: auto-completion. [Bug 1191409]. + * tests/unixInit.test (7.1): Alternative fix for the 2005-04-22 commit. diff --git a/library/init.tcl b/library/init.tcl index 0e7cd94..ea1cd85 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.55.2.4 2004/11/13 00:41:58 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.55.2.5 2005/04/28 05:34:40 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -321,7 +321,7 @@ proc unknown args { } } if {[llength $cmds] == 1} { - return [uplevel 1 [lreplace $args 0 0 $cmds]] + return [uplevel 1 [lreplace $args 0 0 [lindex $cmds 0]]] } if {[llength $cmds]} { if {[string equal $name ""]} { diff --git a/tests/main.test b/tests/main.test index 6778b88..54f012b 100644 --- a/tests/main.test +++ b/tests/main.test @@ -1,6 +1,6 @@ # This file contains a collection of tests for generic/tclMain.c. # -# RCS: @(#) $Id: main.test,v 1.13 2003/02/16 01:36:32 msofer Exp $ +# RCS: @(#) $Id: main.test,v 1.13.2.1 2005/04/28 05:34:40 dgp Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -840,6 +840,22 @@ namespace eval ::tcl::test::main { file delete result } -result "1\n% " + test Tcl_Main-6.7 { + [unknown]: interactive auto-completion. + } -constraints { + exec + } -body { + exec [interpreter] << { + proc foo\{ x {} + set tcl_interactive 1 + foo y} >& result + set f [open result] + read $f + } -cleanup { + close $f + file delete result + } -result "1\n% % " + # Tests Tcl_Main-7.*: exiting test Tcl_Main-7.1 { -- cgit v0.12 From 35cd060950989f216061666b4e8214348f6cd6c0 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 29 Apr 2005 14:09:30 +0000 Subject: Backported doc fix --- ChangeLog | 4 ++++ doc/FileSystem.3 | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c01933e..774f630 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-04-29 Donal K. Fellows + + * doc/FileSystem.3: Backport of doc fix. [Bug 1172401] + 2005-04-27 Don Porter * library/init.tcl: Corrected flaw in interactive command diff --git a/doc/FileSystem.3 b/doc/FileSystem.3 index 8cc70b0..1188778 100644 --- a/doc/FileSystem.3 +++ b/doc/FileSystem.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: FileSystem.3,v 1.32.2.2 2003/10/03 17:24:34 vincentdarley Exp $ +'\" RCS: @(#) $Id: FileSystem.3,v 1.32.2.3 2005/04/29 14:09:35 dkf Exp $ '\" .so man.macros .TH Filesystem 3 8.4 Tcl "Tcl Library Procedures" @@ -58,7 +58,8 @@ int \fBTcl_FSEvalFile\fR(\fIinterp, pathPtr\fR) .sp int -\fBTcl_FSLoadFile\fR(\fIinterp, pathPtr, sym1, sym2, proc1Ptr, proc2Ptr, handlePtr, unloadProcPtr\fR) +\fBTcl_FSLoadFile\fR(\fIinterp, pathPtr, sym1, sym2, proc1Ptr, proc2Ptr, + handlePtr, unloadProcPtr\fR) .sp int \fBTcl_FSMatchInDirectory\fR(\fIinterp, result, pathPtr, pattern, types\fR) @@ -200,6 +201,8 @@ Name of a procedure to look up in the file's symbol table Filled with the init function for this code. .AP Tcl_PackageInitProc **proc2Ptr out Filled with the safe-init function for this code. +.AP Tcl_LoadHandle *handlePtr out +Filled with an abstract token representing the loaded file. .AP ClientData *clientDataPtr out Filled with the clientData value to pass to this code's unload function when it is called. -- cgit v0.12 From 9aa7d073c0f7ee0f28465adc0aa1962761b78e19 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 3 May 2005 17:53:41 +0000 Subject: documentation improvements. --- doc/Environment.3 | 6 +++--- doc/ExprLong.3 | 10 ++-------- doc/ExprLongObj.3 | 4 ++-- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/doc/Environment.3 b/doc/Environment.3 index 5b7ff29..feda8a6 100644 --- a/doc/Environment.3 +++ b/doc/Environment.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Environment.3,v 1.1 2001/04/04 21:32:18 andreas_kupries Exp $ +'\" RCS: @(#) $Id: Environment.3,v 1.1.18.1 2005/05/03 17:53:41 dgp Exp $ '\" .so man.macros .TH Tcl_PutEnv 3 "7.5" Tcl "Tcl Library Procedures" @@ -19,8 +19,8 @@ int \fBTcl_PutEnv\fR(\fIstring\fR) .SH ARGUMENTS .AP "CONST char" *string in -Info about environment variable in the form NAME=value. The string is -in native format. +Info about environment variable in the form NAME=value. +The \fIstring\fR argument is in the system encoding. .BE .SH DESCRIPTION diff --git a/doc/ExprLong.3 b/doc/ExprLong.3 index 23f3a67..29d520b 100644 --- a/doc/ExprLong.3 +++ b/doc/ExprLong.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: ExprLong.3,v 1.6 2002/08/05 03:24:39 dgp Exp $ +'\" RCS: @(#) $Id: ExprLong.3,v 1.6.2.1 2005/05/03 17:53:41 dgp Exp $ '\" .so man.macros .TH Tcl_ExprLong 3 7.0 Tcl "Tcl Library Procedures" @@ -30,7 +30,7 @@ int .SH ARGUMENTS .AS Tcl_Interp *booleanPtr .AP Tcl_Interp *interp in -Interpreter in whose context to evaluate \fIstring\fR or \fIobjPtr\fR. +Interpreter in whose context to evaluate \fIstring\fR. .VS 8.4 .AP "CONST char" *string in .VE @@ -98,12 +98,6 @@ such as ``yes'' or ``no'', or else an error occurs. .PP \fBTcl_ExprString\fR returns the value of the expression as a string stored in the interpreter's result. -If the expression's actual value is an integer -then \fBTcl_ExprString\fR converts it to a string using \fBsprintf\fR -with a ``%d'' converter. -If the expression's actual value is a floating-point -number, then \fBTcl_ExprString\fR calls \fBTcl_PrintDouble\fR -to convert it to a string. .SH "SEE ALSO" Tcl_ExprLongObj, Tcl_ExprDoubleObj, Tcl_ExprBooleanObj, Tcl_ExprObj diff --git a/doc/ExprLongObj.3 b/doc/ExprLongObj.3 index 5892b4c..6b52f78 100644 --- a/doc/ExprLongObj.3 +++ b/doc/ExprLongObj.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: ExprLongObj.3,v 1.3 2001/09/03 09:38:50 dkf Exp $ +'\" RCS: @(#) $Id: ExprLongObj.3,v 1.3.12.1 2005/05/03 17:53:41 dgp Exp $ '\" .so man.macros .TH Tcl_ExprLongObj 3 8.0 Tcl "Tcl Library Procedures" @@ -29,7 +29,7 @@ int .SH ARGUMENTS .AS Tcl_Interp **resultPtrPtr out .AP Tcl_Interp *interp in -Interpreter in whose context to evaluate \fIstring\fR or \fIobjPtr\fR. +Interpreter in whose context to evaluate \fIobjPtr\fR. .AP Tcl_Obj *objPtr in Pointer to an object containing the expression to evaluate. .AP long *longPtr out -- cgit v0.12 From 8875f24d634bf125138e65e7dc33d134f8c8bf32 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sat, 7 May 2005 00:00:38 +0000 Subject: * unix/tcl.m4, unix/configure: correct Solaris 10 (5.10) check and add support for x86_64 Solaris cc builds. --- ChangeLog | 5 + unix/configure | 516 +++++++++++++++++++++++++++++---------------------------- unix/tcl.m4 | 14 +- 3 files changed, 278 insertions(+), 257 deletions(-) diff --git a/ChangeLog b/ChangeLog index 774f630..0d98a5a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-05-06 Jeff Hobbs + + * unix/tcl.m4, unix/configure: correct Solaris 10 (5.10) check and + add support for x86_64 Solaris cc builds. + 2005-04-29 Donal K. Fellows * doc/FileSystem.3: Backport of doc fix. [Bug 1172401] diff --git a/unix/configure b/unix/configure index cbbbd8d..f71498e 100755 --- a/unix/configure +++ b/unix/configure @@ -3256,7 +3256,8 @@ EOF UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' TCL_LIB_VERSIONS_OK=nodots ;; - SunOS-5.[0-6]*) + SunOS-5.[0-6]) + # Careful to not let 5.10+ fall into this case # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. @@ -3290,7 +3291,6 @@ EOF fi ;; SunOS-5*) - # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. @@ -3330,8 +3330,16 @@ EOF # Solaris 64 uses this as well #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" fi + elif test "$arch" = "amd64 i386" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 + else + do64bit_ok=yes + CFLAGS="$CFLAGS -xarch=amd64" + LDFLAGS="$LDFLAGS -xarch=amd64" + fi else - echo "configure: warning: 64bit mode only supported sparcv9 system" 1>&2 + echo "configure: warning: 64bit mode not supported for $arch" 1>&2 fi fi @@ -3386,17 +3394,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3390: checking for ld accepts -Bexport flag" >&5 +echo "configure:3398: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3437,9 +3445,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3441: checking sys/exec.h" >&5 +echo "configure:3449: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3457,7 +3465,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3461: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3475,9 +3483,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3479: checking a.out.h" >&5 +echo "configure:3487: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3495,7 +3503,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3499: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3513,9 +3521,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3517: checking sys/exec_aout.h" >&5 +echo "configure:3525: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3533,7 +3541,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3684,7 +3692,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3688: checking for build with symbols" >&5 +echo "configure:3696: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3745,21 +3753,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3749: checking for required early compiler flags" >&5 +echo "configure:3757: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3767,7 +3775,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3775,7 +3783,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3801,14 +3809,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3812: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3816,7 +3824,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3824,7 +3832,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3836: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3853,7 +3861,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3857: checking for 64-bit integer type" >&5 +echo "configure:3865: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3861,14 +3869,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3880: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3882,7 +3890,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3916,13 +3924,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3920: checking for struct dirent64" >&5 +echo "configure:3928: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3930,7 +3938,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3951,13 +3959,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3955: checking for struct stat64" >&5 +echo "configure:3963: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3965,7 +3973,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3988,12 +3996,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3992: checking for $ac_func" >&5 +echo "configure:4000: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4041,13 +4049,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4045: checking for off64_t" >&5 +echo "configure:4053: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4055,7 +4063,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4059: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4086,14 +4094,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4090: checking whether byte ordering is bigendian" >&5 +echo "configure:4098: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4104,11 +4112,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4119,7 +4127,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4131: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4139,7 +4147,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4185,12 +4193,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4189: checking for $ac_func" >&5 +echo "configure:4197: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4247,12 +4255,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4251: checking for $ac_func" >&5 +echo "configure:4259: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4305,12 +4313,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4309: checking for $ac_func" >&5 +echo "configure:4317: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4360,12 +4368,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4364: checking for strerror" >&5 +echo "configure:4372: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4412,12 +4420,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4416: checking for getwd" >&5 +echo "configure:4424: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4464,12 +4472,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4468: checking for wait3" >&5 +echo "configure:4476: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4516,12 +4524,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4520: checking for uname" >&5 +echo "configure:4528: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4568,12 +4576,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4572: checking for realpath" >&5 +echo "configure:4580: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4631,12 +4639,12 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4635: checking dirent.h" >&5 +echo "configure:4643: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4662,7 +4670,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -4685,17 +4693,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4689: checking for errno.h" >&5 +echo "configure:4697: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4699: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4707: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4722,17 +4730,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4726: checking for float.h" >&5 +echo "configure:4734: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4759,17 +4767,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4763: checking for values.h" >&5 +echo "configure:4771: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4773: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4781: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4796,17 +4804,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4800: checking for limits.h" >&5 +echo "configure:4808: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4810: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4836,17 +4844,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4840: checking for stdlib.h" >&5 +echo "configure:4848: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4850: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4858: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4869,7 +4877,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4883,7 +4891,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4897,7 +4905,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4918,17 +4926,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4922: checking for string.h" >&5 +echo "configure:4930: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4951,7 +4959,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4965,7 +4973,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4991,17 +4999,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:4995: checking for sys/wait.h" >&5 +echo "configure:5003: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5005: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5013: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5028,17 +5036,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:5032: checking for dlfcn.h" >&5 +echo "configure:5040: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5042: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5050: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5070,17 +5078,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5074: checking for $ac_hdr" >&5 +echo "configure:5082: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5084: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5120,17 +5128,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5124: checking for $ac_hdr" >&5 +echo "configure:5132: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5134: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5142: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5157,7 +5165,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5161: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5169: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5166,7 +5174,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5181,7 +5189,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5198,7 +5206,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5212,7 +5220,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5230,7 +5238,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5245,7 +5253,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5263,7 +5271,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5280,7 +5288,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5298,7 +5306,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5314,7 +5322,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5332,7 +5340,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5349,7 +5357,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5392,19 +5400,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5396: checking for fd_set in sys/types" >&5 +echo "configure:5404: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5408: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5420,12 +5428,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5424: checking for fd_mask in sys/select" >&5 +echo "configure:5432: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5462,12 +5470,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5466: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5474: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5475,7 +5483,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5500,17 +5508,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5504: checking for $ac_hdr" >&5 +echo "configure:5512: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5514: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5537,12 +5545,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5541: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5549: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5551,7 +5559,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5555: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5572,12 +5580,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5576: checking for tm_zone in struct tm" >&5 +echo "configure:5584: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5585,7 +5593,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5605,12 +5613,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5609: checking for tzname" >&5 +echo "configure:5617: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5620,7 +5628,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5645,12 +5653,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5649: checking for $ac_func" >&5 +echo "configure:5657: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5699,19 +5707,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5703: checking tm_tzadj in struct tm" >&5 +echo "configure:5711: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5723: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5732,19 +5740,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5736: checking tm_gmtoff in struct tm" >&5 +echo "configure:5744: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5769,12 +5777,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5773: checking long timezone variable" >&5 +echo "configure:5781: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5783,7 +5791,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5806,12 +5814,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5810: checking time_t timezone variable" >&5 +echo "configure:5818: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5820,7 +5828,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5847,12 +5855,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5851: checking for st_blksize in struct stat" >&5 +echo "configure:5859: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5860,7 +5868,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5881,12 +5889,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5885: checking for fstatfs" >&5 +echo "configure:5893: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5938,7 +5946,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5942: checking for 8-bit clean memcmp" >&5 +echo "configure:5950: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5946,7 +5954,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5980,12 +5988,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5984: checking for memmove" >&5 +echo "configure:5992: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6041,12 +6049,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6045: checking proper strstr implementation" >&5 +echo "configure:6053: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6083,12 +6091,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6087: checking for strtoul" >&5 +echo "configure:6095: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6135,7 +6143,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6174,12 +6182,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6178: checking for strtod" >&5 +echo "configure:6186: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6226,7 +6234,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6268,12 +6276,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6272: checking for strtod" >&5 +echo "configure:6280: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6318,7 +6326,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6322: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6330: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6327,7 +6335,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6383,12 +6391,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6387: checking for ANSI C header files" >&5 +echo "configure:6395: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6396,7 +6404,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6413,7 +6421,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6431,7 +6439,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6452,7 +6460,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6463,7 +6471,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6487,12 +6495,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6491: checking for mode_t" >&5 +echo "configure:6499: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6520,12 +6528,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6524: checking for pid_t" >&5 +echo "configure:6532: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6553,12 +6561,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6557: checking for size_t" >&5 +echo "configure:6565: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6586,12 +6594,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6590: checking for uid_t in sys/types.h" >&5 +echo "configure:6598: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6621,12 +6629,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6625: checking for socklen_t" >&5 +echo "configure:6633: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6665,12 +6673,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6669: checking for opendir" >&5 +echo "configure:6677: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6726,12 +6734,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6730: checking union wait" >&5 +echo "configure:6738: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6743,7 +6751,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6770,12 +6778,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6774: checking for strncasecmp" >&5 +echo "configure:6782: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6820,7 +6828,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6824: checking for strncasecmp in -lsocket" >&5 +echo "configure:6832: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6828,7 +6836,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6863,7 +6871,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6867: checking for strncasecmp in -linet" >&5 +echo "configure:6875: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6871,7 +6879,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6920,12 +6928,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6924: checking for BSDgettimeofday" >&5 +echo "configure:6932: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6970,12 +6978,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6974: checking for gettimeofday" >&5 +echo "configure:6982: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7025,12 +7033,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7029: checking for gettimeofday declaration" >&5 +echo "configure:7037: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7061,14 +7069,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7065: checking whether char is unsigned" >&5 +echo "configure:7073: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7124,12 +7132,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7128: checking signed char declarations" >&5 +echo "configure:7136: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7164,7 +7172,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7168: checking for a putenv() that copies the buffer" >&5 +echo "configure:7176: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7172,7 +7180,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7194,7 +7202,7 @@ else } EOF -if { (eval echo configure:7198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7236,17 +7244,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7240: checking for langinfo.h" >&5 +echo "configure:7248: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7250: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7271,17 +7279,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7275: checking whether to use nl_langinfo" >&5 +echo "configure:7283: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7316,17 +7324,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7320: checking for $ac_hdr" >&5 +echo "configure:7328: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7330: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7356,17 +7364,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7360: checking for $ac_hdr" >&5 +echo "configure:7368: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7370: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7378: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7393,7 +7401,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7397: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7405: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7456,7 +7464,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7460: checking how to package libraries" >&5 +echo "configure:7468: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 5eb6c72..8239fb8 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1541,7 +1541,8 @@ dnl AC_CHECK_TOOL(AR, ar) UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' TCL_LIB_VERSIONS_OK=nodots ;; - SunOS-5.[[0-6]]*) + SunOS-5.[[0-6]]) + # Careful to not let 5.10+ fall into this case # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. @@ -1569,7 +1570,6 @@ dnl AC_CHECK_TOOL(AR, ar) fi ;; SunOS-5*) - # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. @@ -1603,8 +1603,16 @@ dnl AC_CHECK_TOOL(AR, ar) # Solaris 64 uses this as well #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" fi + elif test "$arch" = "amd64 i386" ; then + if test "$GCC" = "yes" ; then + AC_MSG_WARN([64bit mode not supported with GCC on $system]) + else + do64bit_ok=yes + CFLAGS="$CFLAGS -xarch=amd64" + LDFLAGS="$LDFLAGS -xarch=amd64" + fi else - AC_MSG_WARN([64bit mode only supported sparcv9 system]) + AC_MSG_WARN([64bit mode not supported for $arch]) fi fi -- cgit v0.12 From 8bcd5484836bddde955023ae76b23f0a78357033 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 11 May 2005 00:47:58 +0000 Subject: * tests/string.test: string-10.[21-30] * generic/tclCmdMZ.c (Tcl_StringObjCmd): add extra checks to prevent possible UMR in unichar cmp function for string map. --- ChangeLog | 32 +++++++++++++++++++------------- generic/tclCmdMZ.c | 7 +++++-- tests/string.test | 32 +++++++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0d98a5a..85c486b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-05-10 Jeff Hobbs + + * tests/string.test: string-10.[21-30] + * generic/tclCmdMZ.c (Tcl_StringObjCmd): add extra checks to + prevent possible UMR in unichar cmp function for string map. + 2005-05-06 Jeff Hobbs * unix/tcl.m4, unix/configure: correct Solaris 10 (5.10) check and @@ -20,10 +26,10 @@ * compat/string.h: fixed memchr() protoype for __APPLE__ so that we build on Mac OS X 10.1 again. - * generic/tclNotify.c (TclFinalizeNotifier): fixed notifier not being - finalized in unthreaded core (was testing for notifier initialization in - current thread by checking thread id != 0 but thread id is always 0 in - untreaded core). + * generic/tclNotify.c (TclFinalizeNotifier): fixed notifier not + being finalized in unthreaded core (was testing for notifier + initialization in current thread by checking thread id != 0 but + thread id is always 0 in untreaded core). * unix/tclUnixNotfy.c (Tcl_WaitForEvent): sync with HEAD: only declare and use timeout var in unthreaded core. @@ -36,12 +42,12 @@ unavailable, otherwise compat/strstr.o will be used twice (resulting in duplicate symbol link errors on Mac OS X 10.1) - * unix/tcl.m4 (Darwin): added configure checks for recently added linker - flags -single_module and -search_paths_first to allow building with - older tools (and on Mac OS X 10.1), use -single_module in SHLIB_LD and - not just T{CL,K}_SHLIB_LD_EXTRAS, added unexporting from Tk of symbols - from libtclstub to avoid duplicate symbol warnings, added PLAT_SRCS - definition for Mac OS X. + * unix/tcl.m4 (Darwin): added configure checks for recently added + linker flags -single_module and -search_paths_first to allow + building with older tools (and on Mac OS X 10.1), use + -single_module in SHLIB_LD and not just T{CL,K}_SHLIB_LD_EXTRAS, + added unexporting from Tk of symbols from libtclstub to avoid + duplicate symbol warnings, added PLAT_SRCS definition for Mac OS X. (SC_MISSING_POSIX_HEADERS): added caching of dirent.h check. (SC_TCL_64BIT_FLAGS): fixed 'checking for off64_t' message output. @@ -59,9 +65,9 @@ 2005-04-20 Don Porter - * generic/tclGet.c (Tcl_GetInt): Corrected error that did not - * generic/tclObj.c (Tcl_GetIntFromObj): permit 0x80000000 to be - recognized as an integer on TCL_WIDE_INT_IS_LONG systems [Bug 1090869]. + * generic/tclGet.c (Tcl_GetInt): Corrected error that did not + * generic/tclObj.c (Tcl_GetIntFromObj): permit 0x80000000 to be + recognized as an integer on TCL_WIDE_INT_IS_LONG systems [Bug 1090869]. 2005-04-19 Jeff Hobbs diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 45a2bed..c61afc5 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.16 2005/04/22 16:30:02 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.17 2005/05/11 00:48:01 hobbs Exp $ */ #include "tclInt.h" @@ -1936,7 +1936,8 @@ Tcl_StringObjCmd(dummy, interp, objc, objv) ustring2 = Tcl_GetUnicodeFromObj(mapElemv[0], &length2); p = ustring1; - if (length2 == 0) { + if ((length2 > length1) || (length2 == 0)) { + /* match string is either longer than input or empty */ ustring1 = end; } else { mapString = Tcl_GetUnicodeFromObj(mapElemv[1], &mapLen); @@ -1994,6 +1995,8 @@ Tcl_StringObjCmd(dummy, interp, objc, objv) if ((length2 > 0) && ((*ustring1 == *ustring2) || (nocase && (Tcl_UniCharToLower(*ustring1) == u2lc[index/2]))) && + /* restrict max compare length */ + ((end - ustring1) >= length2) && ((length2 == 1) || strCmpFn(ustring2, ustring1, (unsigned long) length2) == 0)) { if (p != ustring1) { diff --git a/tests/string.test b/tests/string.test index 71e94ec..ec730b7 100644 --- a/tests/string.test +++ b/tests/string.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: string.test,v 1.36.2.4 2005/04/22 16:30:10 dgp Exp $ +# RCS: @(#) $Id: string.test,v 1.36.2.5 2005/05/11 00:48:01 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -766,6 +766,36 @@ test string-10.20 {string map, nasty sharing crash from [Bug 1018562]} { set a {a b} string map $a $a } {b b} +test string-10.21 {string map, ABR checks} { + string map {longstring foob} long +} long +test string-10.22 {string map, ABR checks} { + string map {long foob} long +} foob +test string-10.23 {string map, ABR checks} { + string map {lon foob} long +} foobg +test string-10.24 {string map, ABR checks} { + string map {lon foob} longlo +} foobglo +test string-10.25 {string map, ABR checks} { + string map {lon foob} longlon +} foobgfoob +test string-10.26 {string map, ABR checks} { + string map {longstring foob longstring bar} long +} long +test string-10.27 {string map, ABR checks} { + string map {long foob longstring bar} long +} foob +test string-10.28 {string map, ABR checks} { + string map {lon foob longstring bar} long +} foobg +test string-10.29 {string map, ABR checks} { + string map {lon foob longstring bar} longlo +} foobglo +test string-10.30 {string map, ABR checks} { + string map {lon foob longstring bar} longlon +} foobgfoob test string-11.1 {string match, too few args} { list [catch {string match a} msg] $msg -- cgit v0.12 From 059da8747325b6904a2b0a2be8bc25294ef6f782 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 12 May 2005 16:23:11 +0000 Subject: Corrected example that confused [namespace which] and [namespace origin] --- doc/namespace.n | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/namespace.n b/doc/namespace.n index e93a704..0c5079d 100644 --- a/doc/namespace.n +++ b/doc/namespace.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: namespace.n,v 1.9.2.1 2004/10/27 14:23:57 dkf Exp $ +'\" RCS: @(#) $Id: namespace.n,v 1.9.2.2 2005/05/12 16:23:11 dgp Exp $ '\" .so man.macros .TH namespace n 8.0 Tcl "Tcl Built-In Commands" @@ -610,7 +610,7 @@ grill .PP Look up where the command imported in the previous example came from: .CS -puts "grill came from [\fBnamespace which\fR grill]" +puts "grill came from [\fBnamespace origin\fR grill]" .CE .SH "SEE ALSO" -- cgit v0.12 From 65286b9f063c3c50f48935273423c3157b0c2926 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 14 May 2005 20:52:30 +0000 Subject: * macosx/tclMacOSXBundle.c: * unix/tclUnixInit.c: * unix/tcl.m4 (Darwin): made use of CoreFoundation API configurable and added test of CoreFoundation availablility to allow building on ppc64, replaced HAVE_CFBUNDLE by HAVE_COREFOUNDATION; test for availability of Tiger or later OSSpinLockLock API. * unix/tclUnixNotfy.c: * unix/Makefile.in: * macosx/tclMacOSXNotify.c (new file): when CoreFoundation is available, use new CFRunLoop based notifier: allows easy integration with other event loops on Mac OS X, in particular the TkAqua Carbon event loop is now integrated via a standard tcl event source (instead of TkAqua upon loading having to finalize the exsting notifier and replace it with its custom version). [Patch 1202052] * tests/unixNotfy.test: don't run unthreaded tests on Darwin since notifier may be using threads even in unthreaded core. * unix/tclUnixPort.h: * unix/tcl.m4 (Darwin): test for thread-unsafe realpath durning configure, as Darwin 7 and later realpath is threadsafe. * macosx/tclMacOSXBundle.c: * unix/tclLoadDyld.c: * unix/tclUnixInit.c: fixed gcc 4.0 warnings. * unix/configure: autoconf-2.13 --- ChangeLog | 31 ++ macosx/tclMacOSXBundle.c | 9 +- macosx/tclMacOSXNotify.c | 1030 ++++++++++++++++++++++++++++++++++++++++++++++ tests/unixNotfy.test | 11 +- unix/Makefile.in | 10 +- unix/configure | 958 +++++++++++++++++++++++++----------------- unix/tcl.m4 | 32 +- unix/tclLoadDyld.c | 12 +- unix/tclUnixInit.c | 24 +- unix/tclUnixNotfy.c | 6 +- unix/tclUnixPort.h | 9 +- 11 files changed, 1717 insertions(+), 415 deletions(-) create mode 100644 macosx/tclMacOSXNotify.c diff --git a/ChangeLog b/ChangeLog index 85c486b..a2545c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,34 @@ +2005-05-14 Daniel Steffen + + * macosx/tclMacOSXBundle.c: + * unix/tclUnixInit.c: + * unix/tcl.m4 (Darwin): made use of CoreFoundation API configurable + and added test of CoreFoundation availablility to allow building on + ppc64, replaced HAVE_CFBUNDLE by HAVE_COREFOUNDATION; test for + availability of Tiger or later OSSpinLockLock API. + + * unix/tclUnixNotfy.c: + * unix/Makefile.in: + * macosx/tclMacOSXNotify.c (new file): when CoreFoundation is + available, use new CFRunLoop based notifier: allows easy integration + with other event loops on Mac OS X, in particular the TkAqua Carbon + event loop is now integrated via a standard tcl event source (instead + of TkAqua upon loading having to finalize the exsting notifier and + replace it with its custom version). [Patch 1202052] + + * tests/unixNotfy.test: don't run unthreaded tests on Darwin + since notifier may be using threads even in unthreaded core. + + * unix/tclUnixPort.h: + * unix/tcl.m4 (Darwin): test for thread-unsafe realpath durning + configure, as Darwin 7 and later realpath is threadsafe. + + * macosx/tclMacOSXBundle.c: + * unix/tclLoadDyld.c: + * unix/tclUnixInit.c: fixed gcc 4.0 warnings. + + * unix/configure: autoconf-2.13 + 2005-05-10 Jeff Hobbs * tests/string.test: string-10.[21-30] diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 8d50494..75b871c 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -51,8 +51,11 @@ * license. */ +#ifdef HAVE_COREFOUNDATION #include #include +#endif /* HAVE_COREFOUNDATION */ + #include "tcl.h" /* @@ -119,6 +122,7 @@ Tcl_MacOSXOpenVersionedBundleResources( int maxPathLen, char *libraryPath) { +#ifdef HAVE_COREFOUNDATION CFBundleRef bundleRef; CFStringRef bundleNameRef; CFURLRef libURL; @@ -199,7 +203,7 @@ Tcl_MacOSXOpenVersionedBundleResources( */ CFURLGetFileSystemRepresentation(libURL, TRUE, - libraryPath, maxPathLen); + (unsigned char*) libraryPath, maxPathLen); CFRelease(libURL); } } @@ -209,4 +213,7 @@ Tcl_MacOSXOpenVersionedBundleResources( } else { return TCL_ERROR; } +#else /* HAVE_COREFOUNDATION */ + return TCL_ERROR; +#endif /* HAVE_COREFOUNDATION */ } diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c new file mode 100644 index 0000000..bf3b9bc --- /dev/null +++ b/macosx/tclMacOSXNotify.c @@ -0,0 +1,1030 @@ +/* + * tclMacOSXNotify.c -- + * + * This file contains the implementation of a merged + * CFRunLoop/select-based notifier, which is the lowest-level part + * of the Tcl event loop. This file works together with + * generic/tclNotify.c. + * + * Copyright (c) 1995-1997 Sun Microsystems, Inc. + * Copyright 2001, Apple Computer, Inc. + * Copyright 2005, Tcl Core Team. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.2 2005/05/14 20:52:31 das Exp $ + */ + +#ifdef HAVE_COREFOUNDATION /* Traditional unix select-based notifier + * is in tclUnixNotfy.c */ +#include "tclInt.h" +#include "tclPort.h" +#include +#include + +extern TclStubs tclStubs; +extern Tcl_NotifierProcs tclOriginalNotifier; + +/* + * This structure is used to keep track of the notifier info for a + * a registered file. + */ + +typedef struct FileHandler { + int fd; + int mask; /* Mask of desired events: TCL_READABLE, + * etc. */ + int readyMask; /* Mask of events that have been seen since the + * last time file handlers were invoked for + * this file. */ + Tcl_FileProc *proc; /* Procedure to call, in the style of + * Tcl_CreateFileHandler. */ + ClientData clientData; /* Argument to pass to proc. */ + struct FileHandler *nextPtr;/* Next in list of all files we care about. */ +} FileHandler; + +/* + * The following structure is what is added to the Tcl event queue when + * file handlers are ready to fire. + */ + +typedef struct FileHandlerEvent { + Tcl_Event header; /* Information that is standard for + * all events. */ + int fd; /* File descriptor that is ready. Used + * to find the FileHandler structure for + * the file (can't point directly to the + * FileHandler structure because it could + * go away while the event is queued). */ +} FileHandlerEvent; + +/* + * + * The following structure contains a set of select() masks to track + * readable, writable, and exceptional conditions. + */ + +typedef struct SelectMasks { + fd_set readable; + fd_set writable; + fd_set exceptional; +} SelectMasks; + +/* + * The following static structure contains the state information for the + * select based implementation of the Tcl notifier. One of these structures + * is created for each thread that is using the notifier. + */ + +typedef struct ThreadSpecificData { + FileHandler *firstFileHandlerPtr; + /* Pointer to head of file handler list. */ + + SelectMasks checkMasks; /* This structure is used to build up the masks + * to be used in the next call to select. + * Bits are set in response to calls to + * Tcl_CreateFileHandler. */ + SelectMasks readyMasks; /* This array reflects the readable/writable + * conditions that were found to exist by the + * last call to select. */ + int numFdBits; /* Number of valid bits in checkMasks + * (one more than highest fd for which + * Tcl_WatchFile has been called). */ + int onList; /* True if it is in this list */ + unsigned int pollState; /* pollState is used to implement a polling + * handshake between each thread and the + * notifier thread. Bits defined below. */ + struct ThreadSpecificData *nextPtr, *prevPtr; + /* All threads that are currently waiting on + * an event have their ThreadSpecificData + * structure on a doubly-linked listed formed + * from these pointers. You must hold the + * notifierLock before accessing these + * fields. */ + CFRunLoopSourceRef runLoopSource; + /* Any other thread alerts a notifier + * that an event is ready to be processed + * by signaling this CFRunLoopSource. */ + CFRunLoopRef runLoop; /* This thread's CFRunLoop, needs to be woken + * up whenever the runLoopSource is signaled. */ + int eventReady; /* True if an event is ready to be processed. */ +} ThreadSpecificData; + +static Tcl_ThreadDataKey dataKey; + +/* + * The following static indicates the number of threads that have + * initialized notifiers. + * + * You must hold the notifierInitLock before accessing this variable. + */ + +static int notifierCount = 0; + +/* + * The following variable points to the head of a doubly-linked list of + * of ThreadSpecificData structures for all threads that are currently + * waiting on an event. + * + * You must hold the notifierLock before accessing this list. + */ + +static ThreadSpecificData *waitingListPtr = NULL; + +/* + * The notifier thread spends all its time in select() waiting for a + * file descriptor associated with one of the threads on the waitingListPtr + * list to do something interesting. But if the contents of the + * waitingListPtr list ever changes, we need to wake up and restart + * the select() system call. You can wake up the notifier thread by + * writing a single byte to the file descriptor defined below. This + * file descriptor is the input-end of a pipe and the notifier thread is + * listening for data on the output-end of the same pipe. Hence writing + * to this file descriptor will cause the select() system call to return + * and wake up the notifier thread. + * + * You must hold the notifierLock lock before writing to the pipe. + */ + +static int triggerPipe = -1; +static int receivePipe = -1; /* Output end of triggerPipe */ + +/* + * We use Darwin-native spinlocks instead of pthread mutexes for notifier + * locking: this radically simplifies the implementation and lowers + * overhead. Note that these are not pure spinlocks, they employ various + * strategies to back off, making them immune to most priority-inversion + * livelocks (c.f. man 3 OSSpinLockLock). + */ + +#if defined(HAVE_LIBKERN_OSATOMIC_H) && defined(HAVE_OSSPINLOCKLOCK) +/* Use OSSpinLock API where available (Tiger or later) */ +#include +#else +/* Otherwise, use commpage spinlock SPI directly */ +typedef uint32_t OSSpinLock; +extern void _spin_lock(OSSpinLock *lock); +extern void _spin_unlock(OSSpinLock *lock); +#define OSSpinLockLock(p) _spin_lock(p) +#define OSSpinLockUnlock(p) _spin_unlock(p) +#endif + +/* + * These spinlocks lock access to the global notifier state. + */ + +static OSSpinLock notifierInitLock = 0; +static OSSpinLock notifierLock = 0; + +/* + * Macros abstracting notifier locking/unlocking + */ + +#define LOCK_NOTIFIER_INIT OSSpinLockLock(¬ifierInitLock) +#define UNLOCK_NOTIFIER_INIT OSSpinLockUnlock(¬ifierInitLock) +#define LOCK_NOTIFIER OSSpinLockLock(¬ifierLock) +#define UNLOCK_NOTIFIER OSSpinLockUnlock(¬ifierLock) + +/* + * The pollState bits + * POLL_WANT is set by each thread before it waits on its condition + * variable. It is checked by the notifier before it does + * select. + * POLL_DONE is set by the notifier if it goes into select after + * seeing POLL_WANT. The idea is to ensure it tries a select + * with the same bits the initial thread had set. + */ +#define POLL_WANT 0x1 +#define POLL_DONE 0x2 + +/* + * This is the thread ID of the notifier thread that does select. + */ +static pthread_t notifierThread; + +/* + * Static routines defined in this file. + */ + +static void NotifierThreadProc(ClientData clientData); +static int FileHandlerEventProc(Tcl_Event *evPtr, int flags); + +/* + *---------------------------------------------------------------------- + * + * Tcl_InitNotifier -- + * + * Initializes the platform specific notifier state. + * + * Results: + * Returns a handle to the notifier state for this thread.. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +ClientData +Tcl_InitNotifier() +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + tsdPtr->eventReady = 0; + + /* + * Initialize CFRunLoopSource and add it to CFRunLoop of this thread + */ + + if (!tsdPtr->runLoop) { + CFRunLoopRef runLoop = CFRunLoopGetCurrent(); + CFRunLoopSourceRef runLoopSource; + CFRunLoopSourceContext runLoopSourceContext; + + bzero(&runLoopSourceContext, sizeof(CFRunLoopSourceContext)); + runLoopSourceContext.info = tsdPtr; + runLoopSource = CFRunLoopSourceCreate(NULL, 0, &runLoopSourceContext); + if (!runLoopSource) { + Tcl_Panic("Tcl_InitNotifier: could not create CFRunLoopSource."); + } + CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopCommonModes); + CFRelease(runLoopSource); + tsdPtr->runLoopSource = runLoopSource; + tsdPtr->runLoop = runLoop; + } + + /* + * Initialize trigger pipe and start the Notifier thread if necessary. + */ + + LOCK_NOTIFIER_INIT; + if (notifierCount == 0) { + int fds[2], status, result; + pthread_attr_t attr; + + if (pipe(fds) != 0) { + Tcl_Panic("Tcl_InitNotifier: could not create trigger pipe."); + } + + status = fcntl(fds[0], F_GETFL); + status |= O_NONBLOCK; + if (fcntl(fds[0], F_SETFL, status) < 0) { + Tcl_Panic("Tcl_InitNotifier: could not make receive pipe non blocking."); + } + status = fcntl(fds[1], F_GETFL); + status |= O_NONBLOCK; + if (fcntl(fds[1], F_SETFL, status) < 0) { + Tcl_Panic("Tcl_InitNotifier: could not make trigger pipe non blocking."); + } + + receivePipe = fds[0]; + triggerPipe = fds[1]; + + pthread_attr_init(&attr); + pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + pthread_attr_setstacksize(&attr, 60 * 1024); + result = pthread_create(¬ifierThread, &attr, (void * (*)(void *))NotifierThreadProc, NULL); + pthread_attr_destroy(&attr); + if (result) { + Tcl_Panic("Tcl_InitNotifier: unable to start notifier thread."); + } + } + notifierCount++; + UNLOCK_NOTIFIER_INIT; + + return (ClientData) tsdPtr; +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_FinalizeNotifier -- + * + * This function is called to cleanup the notifier state before + * a thread is terminated. + * + * Results: + * None. + * + * Side effects: + * May terminate the background notifier thread if this is the + * last notifier instance. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_FinalizeNotifier(clientData) + ClientData clientData; /* Not used. */ +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + LOCK_NOTIFIER_INIT; + notifierCount--; + + /* + * If this is the last thread to use the notifier, close the notifier + * pipe and wait for the background thread to terminate. + */ + + if (notifierCount == 0) { + int result; + + if (triggerPipe < 0) { + Tcl_Panic("Tcl_FinalizeNotifier: notifier pipe not initialized."); + } + + /* + * Send "q" message to the notifier thread so that it will + * terminate. The notifier will return from its call to select() + * and notice that a "q" message has arrived, it will then close + * its side of the pipe and terminate its thread. Note the we can + * not just close the pipe and check for EOF in the notifier + * thread because if a background child process was created with + * exec, select() would not register the EOF on the pipe until the + * child processes had terminated. [Bug: 4139] + */ + write(triggerPipe, "q", 1); + close(triggerPipe); + + result = pthread_join(notifierThread, NULL); + if (result) { + Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread."); + } + + close(receivePipe); + triggerPipe = -1; + } + UNLOCK_NOTIFIER_INIT; + + LOCK_NOTIFIER; /* for concurrency with Tcl_AlertNotifier */ + if (tsdPtr->runLoop) { + tsdPtr->runLoop = NULL; + /* Remove runLoopSource from all CFRunLoops and release it */ + CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); + tsdPtr->runLoopSource = NULL; + } + UNLOCK_NOTIFIER; +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_AlertNotifier -- + * + * Wake up the specified notifier from any thread. This routine + * is called by the platform independent notifier code whenever + * the Tcl_ThreadAlert routine is called. This routine is + * guaranteed not to be called on a given notifier after + * Tcl_FinalizeNotifier is called for that notifier. + * + * Results: + * None. + * + * Side effects: + * Signals the notifier condition variable for the specified + * notifier. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_AlertNotifier(clientData) + ClientData clientData; +{ + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) clientData; + LOCK_NOTIFIER; + if (tsdPtr->runLoop) { + tsdPtr->eventReady = 1; + CFRunLoopSourceSignal(tsdPtr->runLoopSource); + CFRunLoopWakeUp(tsdPtr->runLoop); + } + UNLOCK_NOTIFIER; +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_SetTimer -- + * + * This procedure sets the current notifier timer value. This + * interface is not implemented in this notifier because we are + * always running inside of Tcl_DoOneEvent. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_SetTimer(timePtr) + Tcl_Time *timePtr; /* Timeout value, may be NULL. */ +{ + /* + * The interval timer doesn't do anything in this implementation, + * because the only event loop is via Tcl_DoOneEvent, which passes + * timeout values to Tcl_WaitForEvent. + */ + + if (tclStubs.tcl_SetTimer != tclOriginalNotifier.setTimerProc) { + tclStubs.tcl_SetTimer(timePtr); + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_ServiceModeHook -- + * + * This function is invoked whenever the service mode changes. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_ServiceModeHook(mode) + int mode; /* Either TCL_SERVICE_ALL, or + * TCL_SERVICE_NONE. */ +{ +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_CreateFileHandler -- + * + * This procedure registers a file handler with the select notifier. + * + * Results: + * None. + * + * Side effects: + * Creates a new file handler structure. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_CreateFileHandler(fd, mask, proc, clientData) + int fd; /* Handle of stream to watch. */ + int mask; /* OR'ed combination of TCL_READABLE, + * TCL_WRITABLE, and TCL_EXCEPTION: + * indicates conditions under which + * proc should be called. */ + Tcl_FileProc *proc; /* Procedure to call for each + * selected event. */ + ClientData clientData; /* Arbitrary data to pass to proc. */ +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + FileHandler *filePtr; + + if (tclStubs.tcl_CreateFileHandler != tclOriginalNotifier.createFileHandlerProc) { + tclStubs.tcl_CreateFileHandler(fd, mask, proc, clientData); + return; + } + + for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL; + filePtr = filePtr->nextPtr) { + if (filePtr->fd == fd) { + break; + } + } + if (filePtr == NULL) { + filePtr = (FileHandler*) ckalloc(sizeof(FileHandler)); + filePtr->fd = fd; + filePtr->readyMask = 0; + filePtr->nextPtr = tsdPtr->firstFileHandlerPtr; + tsdPtr->firstFileHandlerPtr = filePtr; + } + filePtr->proc = proc; + filePtr->clientData = clientData; + filePtr->mask = mask; + + /* + * Update the check masks for this file. + */ + + if (mask & TCL_READABLE) { + FD_SET(fd, &(tsdPtr->checkMasks.readable)); + } else { + FD_CLR(fd, &(tsdPtr->checkMasks.readable)); + } + if (mask & TCL_WRITABLE) { + FD_SET(fd, &(tsdPtr->checkMasks.writable)); + } else { + FD_CLR(fd, &(tsdPtr->checkMasks.writable)); + } + if (mask & TCL_EXCEPTION) { + FD_SET(fd, &(tsdPtr->checkMasks.exceptional)); + } else { + FD_CLR(fd, &(tsdPtr->checkMasks.exceptional)); + } + if (tsdPtr->numFdBits <= fd) { + tsdPtr->numFdBits = fd+1; + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_DeleteFileHandler -- + * + * Cancel a previously-arranged callback arrangement for + * a file. + * + * Results: + * None. + * + * Side effects: + * If a callback was previously registered on file, remove it. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_DeleteFileHandler(fd) + int fd; /* Stream id for which to remove callback procedure. */ +{ + FileHandler *filePtr, *prevPtr; + int i; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + if (tclStubs.tcl_DeleteFileHandler != tclOriginalNotifier.deleteFileHandlerProc) { + tclStubs.tcl_DeleteFileHandler(fd); + return; + } + + /* + * Find the entry for the given file (and return if there isn't one). + */ + + for (prevPtr = NULL, filePtr = tsdPtr->firstFileHandlerPtr; ; + prevPtr = filePtr, filePtr = filePtr->nextPtr) { + if (filePtr == NULL) { + return; + } + if (filePtr->fd == fd) { + break; + } + } + + /* + * Update the check masks for this file. + */ + + if (filePtr->mask & TCL_READABLE) { + FD_CLR(fd, &(tsdPtr->checkMasks.readable)); + } + if (filePtr->mask & TCL_WRITABLE) { + FD_CLR(fd, &(tsdPtr->checkMasks.writable)); + } + if (filePtr->mask & TCL_EXCEPTION) { + FD_CLR(fd, &(tsdPtr->checkMasks.exceptional)); + } + + /* + * Find current max fd. + */ + + if (fd+1 == tsdPtr->numFdBits) { + tsdPtr->numFdBits = 0; + for (i = fd-1; i >= 0; i--) { + if (FD_ISSET(i, &(tsdPtr->checkMasks.readable)) + || FD_ISSET(i, &(tsdPtr->checkMasks.writable)) + || FD_ISSET(i, &(tsdPtr->checkMasks.exceptional))) { + tsdPtr->numFdBits = i+1; + break; + } + } + } + + /* + * Clean up information in the callback record. + */ + + if (prevPtr == NULL) { + tsdPtr->firstFileHandlerPtr = filePtr->nextPtr; + } else { + prevPtr->nextPtr = filePtr->nextPtr; + } + ckfree((char *) filePtr); +} + +/* + *---------------------------------------------------------------------- + * + * FileHandlerEventProc -- + * + * This procedure is called by Tcl_ServiceEvent when a file event + * reaches the front of the event queue. This procedure is + * responsible for actually handling the event by invoking the + * callback for the file handler. + * + * Results: + * Returns 1 if the event was handled, meaning it should be removed + * from the queue. Returns 0 if the event was not handled, meaning + * it should stay on the queue. The only time the event isn't + * handled is if the TCL_FILE_EVENTS flag bit isn't set. + * + * Side effects: + * Whatever the file handler's callback procedure does. + * + *---------------------------------------------------------------------- + */ + +static int +FileHandlerEventProc(evPtr, flags) + Tcl_Event *evPtr; /* Event to service. */ + int flags; /* Flags that indicate what events to + * handle, such as TCL_FILE_EVENTS. */ +{ + int mask; + FileHandler *filePtr; + FileHandlerEvent *fileEvPtr = (FileHandlerEvent *) evPtr; + ThreadSpecificData *tsdPtr; + + if (!(flags & TCL_FILE_EVENTS)) { + return 0; + } + + /* + * Search through the file handlers to find the one whose handle matches + * the event. We do this rather than keeping a pointer to the file + * handler directly in the event, so that the handler can be deleted + * while the event is queued without leaving a dangling pointer. + */ + + tsdPtr = TCL_TSD_INIT(&dataKey); + for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL; + filePtr = filePtr->nextPtr) { + if (filePtr->fd != fileEvPtr->fd) { + continue; + } + + /* + * The code is tricky for two reasons: + * 1. The file handler's desired events could have changed + * since the time when the event was queued, so AND the + * ready mask with the desired mask. + * 2. The file could have been closed and re-opened since + * the time when the event was queued. This is why the + * ready mask is stored in the file handler rather than + * the queued event: it will be zeroed when a new + * file handler is created for the newly opened file. + */ + + mask = filePtr->readyMask & filePtr->mask; + filePtr->readyMask = 0; + if (mask != 0) { + (*filePtr->proc)(filePtr->clientData, mask); + } + break; + } + return 1; +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_WaitForEvent -- + * + * This function is called by Tcl_DoOneEvent to wait for new + * events on the message queue. If the block time is 0, then + * Tcl_WaitForEvent just polls without blocking. + * + * Results: + * Returns -1 if the select would block forever, otherwise + * returns 0. + * + * Side effects: + * Queues file events that are detected by the select. + * + *---------------------------------------------------------------------- + */ + +int +Tcl_WaitForEvent(timePtr) + Tcl_Time *timePtr; /* Maximum block time, or NULL. */ +{ + FileHandler *filePtr; + FileHandlerEvent *fileEvPtr; + int mask; + int waitForFiles; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + if (tclStubs.tcl_WaitForEvent != tclOriginalNotifier.waitForEventProc) { + return tclStubs.tcl_WaitForEvent(timePtr); + } + + /* + * Place this thread on the list of interested threads, signal the + * notifier thread, and wait for a response or a timeout. + */ + + LOCK_NOTIFIER; + + waitForFiles = (tsdPtr->numFdBits > 0); + if (timePtr != NULL && timePtr->sec == 0 && timePtr->usec == 0) { + /* + * Cannot emulate a polling select with a polling condition variable. + * Instead, pretend to wait for files and tell the notifier + * thread what we are doing. The notifier thread makes sure + * it goes through select with its select mask in the same state + * as ours currently is. We block until that happens. + */ + + waitForFiles = 1; + tsdPtr->pollState = POLL_WANT; + timePtr = NULL; + } else { + tsdPtr->pollState = 0; + } + + if (waitForFiles) { + /* + * Add the ThreadSpecificData structure of this thread to the list + * of ThreadSpecificData structures of all threads that are waiting + * on file events. + */ + + tsdPtr->nextPtr = waitingListPtr; + if (waitingListPtr) { + waitingListPtr->prevPtr = tsdPtr; + } + tsdPtr->prevPtr = 0; + waitingListPtr = tsdPtr; + tsdPtr->onList = 1; + + write(triggerPipe, "", 1); + } + + FD_ZERO(&(tsdPtr->readyMasks.readable)); + FD_ZERO(&(tsdPtr->readyMasks.writable)); + FD_ZERO(&(tsdPtr->readyMasks.exceptional)); + + if (!tsdPtr->eventReady) { + CFTimeInterval waitTime; + + if (timePtr == NULL) { + waitTime = 1.0e10; /* Wait forever, as per CFRunLoop.c */ + } else { + waitTime = timePtr->sec + 1.0e-6 * timePtr->usec; + } + UNLOCK_NOTIFIER; + CFRunLoopRunInMode(kCFRunLoopDefaultMode, waitTime, TRUE); + LOCK_NOTIFIER; + } + tsdPtr->eventReady = 0; + + if (waitForFiles && tsdPtr->onList) { + /* + * Remove the ThreadSpecificData structure of this thread from the + * waiting list. Alert the notifier thread to recompute its select + * masks - skipping this caused a hang when trying to close a pipe + * which the notifier thread was still doing a select on. + */ + + if (tsdPtr->prevPtr) { + tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; + } else { + waitingListPtr = tsdPtr->nextPtr; + } + if (tsdPtr->nextPtr) { + tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr; + } + tsdPtr->nextPtr = tsdPtr->prevPtr = NULL; + tsdPtr->onList = 0; + write(triggerPipe, "", 1); + } + + + /* + * Queue all detected file events before returning. + */ + + for (filePtr = tsdPtr->firstFileHandlerPtr; (filePtr != NULL); + filePtr = filePtr->nextPtr) { + + mask = 0; + if (FD_ISSET(filePtr->fd, &(tsdPtr->readyMasks.readable))) { + mask |= TCL_READABLE; + } + if (FD_ISSET(filePtr->fd, &(tsdPtr->readyMasks.writable))) { + mask |= TCL_WRITABLE; + } + if (FD_ISSET(filePtr->fd, &(tsdPtr->readyMasks.exceptional))) { + mask |= TCL_EXCEPTION; + } + + if (!mask) { + continue; + } + + /* + * Don't bother to queue an event if the mask was previously + * non-zero since an event must still be on the queue. + */ + + if (filePtr->readyMask == 0) { + fileEvPtr = (FileHandlerEvent *) ckalloc(sizeof(FileHandlerEvent)); + fileEvPtr->header.proc = FileHandlerEventProc; + fileEvPtr->fd = filePtr->fd; + Tcl_QueueEvent((Tcl_Event *) fileEvPtr, TCL_QUEUE_TAIL); + } + filePtr->readyMask = mask; + } + UNLOCK_NOTIFIER; + return 0; +} + +/* + *---------------------------------------------------------------------- + * + * NotifierThreadProc -- + * + * This routine is the initial (and only) function executed by the + * special notifier thread. Its job is to wait for file descriptors + * to become readable or writable or to have an exception condition + * and then to notify other threads who are interested in this + * information by signalling a condition variable. Other threads + * can signal this notifier thread of a change in their interests + * by writing a single byte to a special pipe that the notifier + * thread is monitoring. + * + * Result: + * None. Once started, this routine never exits. It dies with + * the overall process. + * + * Side effects: + * The trigger pipe used to signal the notifier thread is created + * when the notifier thread first starts. + * + *---------------------------------------------------------------------- + */ + +static void +NotifierThreadProc(clientData) + ClientData clientData; /* Not used. */ +{ + ThreadSpecificData *tsdPtr; + fd_set readableMask; + fd_set writableMask; + fd_set exceptionalMask; + int i, numFdBits = 0; + long found; + struct timeval poll = {0., 0.}, *timePtr; + char buf[2]; + + /* + * Look for file events and report them to interested threads. + */ + + while (1) { + FD_ZERO(&readableMask); + FD_ZERO(&writableMask); + FD_ZERO(&exceptionalMask); + + /* + * Compute the logical OR of the select masks from all the + * waiting notifiers. + */ + + LOCK_NOTIFIER; + timePtr = NULL; + for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { + for (i = tsdPtr->numFdBits-1; i >= 0; --i) { + if (FD_ISSET(i, &(tsdPtr->checkMasks.readable))) { + FD_SET(i, &readableMask); + } + if (FD_ISSET(i, &(tsdPtr->checkMasks.writable))) { + FD_SET(i, &writableMask); + } + if (FD_ISSET(i, &(tsdPtr->checkMasks.exceptional))) { + FD_SET(i, &exceptionalMask); + } + } + if (tsdPtr->numFdBits > numFdBits) { + numFdBits = tsdPtr->numFdBits; + } + if (tsdPtr->pollState & POLL_WANT) { + /* + * Here we make sure we go through select() with the same + * mask bits that were present when the thread tried to poll. + */ + + tsdPtr->pollState |= POLL_DONE; + timePtr = &poll; + } + } + UNLOCK_NOTIFIER; + + /* + * Set up the select mask to include the receive pipe. + */ + + if (receivePipe >= numFdBits) { + numFdBits = receivePipe + 1; + } + FD_SET(receivePipe, &readableMask); + + if (select(numFdBits, &readableMask, &writableMask, &exceptionalMask, + timePtr) == -1) { + /* + * Try again immediately on an error. + */ + + continue; + } + + /* + * Alert any threads that are waiting on a ready file descriptor. + */ + + LOCK_NOTIFIER; + for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { + found = 0; + + for (i = tsdPtr->numFdBits-1; i >= 0; --i) { + if (FD_ISSET(i, &(tsdPtr->checkMasks.readable)) + && FD_ISSET(i, &readableMask)) { + FD_SET(i, &(tsdPtr->readyMasks.readable)); + found = 1; + } + if (FD_ISSET(i, &(tsdPtr->checkMasks.writable)) + && FD_ISSET(i, &writableMask)) { + FD_SET(i, &(tsdPtr->readyMasks.writable)); + found = 1; + } + if (FD_ISSET(i, &(tsdPtr->checkMasks.exceptional)) + && FD_ISSET(i, &exceptionalMask)) { + FD_SET(i, &(tsdPtr->readyMasks.exceptional)); + found = 1; + } + } + + if (found || (tsdPtr->pollState & POLL_DONE)) { + tsdPtr->eventReady = 1; + if (tsdPtr->onList) { + /* + * Remove the ThreadSpecificData structure of this + * thread from the waiting list. This prevents us from + * continuously spining on select until the other + * threads runs and services the file event. + */ + + if (tsdPtr->prevPtr) { + tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; + } else { + waitingListPtr = tsdPtr->nextPtr; + } + if (tsdPtr->nextPtr) { + tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr; + } + tsdPtr->nextPtr = tsdPtr->prevPtr = NULL; + tsdPtr->onList = 0; + tsdPtr->pollState = 0; + } + if (tsdPtr->runLoop) { + CFRunLoopSourceSignal(tsdPtr->runLoopSource); + CFRunLoopWakeUp(tsdPtr->runLoop); + } + } + } + UNLOCK_NOTIFIER; + + /* + * Consume the next byte from the notifier pipe if the pipe was + * readable. Note that there may be multiple bytes pending, but + * to avoid a race condition we only read one at a time. + */ + + if (FD_ISSET(receivePipe, &readableMask)) { + i = read(receivePipe, buf, 1); + + if ((i == 0) || ((i == 1) && (buf[0] == 'q'))) { + /* + * Someone closed the write end of the pipe or sent us a + * Quit message [Bug: 4139] and then closed the write end + * of the pipe so we need to shut down the notifier thread. + */ + + break; + } + } + } + pthread_exit (0); +} + +#endif /* HAVE_COREFOUNDATION */ diff --git a/tests/unixNotfy.test b/tests/unixNotfy.test index 27f5160..c75c745 100644 --- a/tests/unixNotfy.test +++ b/tests/unixNotfy.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixNotfy.test,v 1.11.2.3 2004/06/22 11:55:36 vasiljevic Exp $ +# RCS: @(#) $Id: unixNotfy.test,v 1.11.2.4 2005/05/14 20:52:31 das Exp $ # The tests should not be run if you have a notifier which is unable to # detect infinite vwaits, as the tests below will hang. The presence of @@ -29,13 +29,18 @@ if {[info exists tk_version]} { set ::tcltest::testConstraints(testthread) \ [expr {[info commands testthread] != {}}] +# Darwin always uses a threaded notifier +testConstraint unthreaded [expr { + (![info exist tcl_platform(threaded)] || !$tcl_platform(threaded)) + && $tcl_platform(os) ne "Darwin" +}] # The next two tests will hang if threads are enabled because the notifier # will not necessarily wait for ever in this case, so it does not generate # an error. test unixNotfy-1.1 {Tcl_DeleteFileHandler} \ - -constraints {unixOnly && !testthread} \ + -constraints {unixOnly && unthreaded} \ -body { catch {vwait x} set f [open [makeFile "" foo] w] @@ -51,7 +56,7 @@ test unixNotfy-1.1 {Tcl_DeleteFileHandler} \ } test unixNotfy-1.2 {Tcl_DeleteFileHandler} \ - -constraints {unixOnly && !testthread} \ + -constraints {unixOnly && unthreaded} \ -body { catch {vwait x} set f1 [open [makeFile "" foo] w] diff --git a/unix/Makefile.in b/unix/Makefile.in index 00a2141..ff89291 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.11 2005/04/26 00:46:02 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.12 2005/05/14 20:52:31 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -318,7 +318,7 @@ GENERIC_OBJS = regcomp.o regexec.o regfree.o regerror.o tclAlloc.o \ STUB_LIB_OBJS = tclStubLib.o ${COMPAT_OBJS} -MAC_OSX_OBJS = tclMacOSXBundle.o +MAC_OSX_OBJS = tclMacOSXBundle.o tclMacOSXNotify.o OBJS = ${GENERIC_OBJS} ${UNIX_OBJS} ${NOTIFY_OBJS} ${COMPAT_OBJS} \ @DL_OBJS@ @PLAT_OBJS@ @@ -438,7 +438,8 @@ DL_SRCS = \ $(UNIX_DIR)/tclLoadShl.c MAC_OSX_SRCS = \ - $(MAC_OSX_DIR)/tclMacOSXBundle.c + $(MAC_OSX_DIR)/tclMacOSXBundle.c \ + $(MAC_OSX_DIR)/tclMacOSXNotify.c # Note: don't include DL_SRCS or MAC_OSX_SRCS in SRCS: most of those # files won't compile on the current machine, and they will cause @@ -1035,6 +1036,9 @@ tclUnixInit.o: $(UNIX_DIR)/tclUnixInit.c $(GENERIC_DIR)/tclInitScript.h tclConfi tclMacOSXBundle.o: $(MAC_OSX_DIR)/tclMacOSXBundle.c $(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tclMacOSXBundle.c +tclMacOSXNotify.o: $(MAC_OSX_DIR)/tclMacOSXNotify.c + $(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tclMacOSXNotify.c + # The following targets are not completely general. They are provide # purely for documentation purposes so people who are interested in # the Xt based notifier can modify them to suit their own installation. diff --git a/unix/configure b/unix/configure index f71498e..f9a9375 100755 --- a/unix/configure +++ b/unix/configure @@ -29,6 +29,8 @@ ac_help="$ac_help ac_help="$ac_help --enable-64bit-vis enable 64bit Sparc VIS support" ac_help="$ac_help + --enable-corefoundation use CoreFoundation API [--enable-corefoundation]" +ac_help="$ac_help --disable-load disallow dynamic loading and "load" command" ac_help="$ac_help --enable-symbols build with debugging symbols [--disable-symbols]" @@ -575,7 +577,7 @@ TCL_SRC_DIR=`cd $srcdir/..; pwd` echo $ac_n "checking whether to use symlinks for manpages""... $ac_c" 1>&6 -echo "configure:579: checking whether to use symlinks for manpages" >&5 +echo "configure:581: checking whether to use symlinks for manpages" >&5 # Check whether --enable-man-symlinks or --disable-man-symlinks was given. if test "${enable_man_symlinks+set}" = set; then enableval="$enable_man_symlinks" @@ -587,7 +589,7 @@ fi echo "$ac_t""$enableval" 1>&6 echo $ac_n "checking whether to compress the manpages""... $ac_c" 1>&6 -echo "configure:591: checking whether to compress the manpages" >&5 +echo "configure:593: checking whether to compress the manpages" >&5 # Check whether --enable-man-compression or --disable-man-compression was given. if test "${enable_man_compression+set}" = set; then enableval="$enable_man_compression" @@ -600,7 +602,7 @@ fi echo "$ac_t""$enableval" 1>&6 if test "$enableval" != "no"; then echo $ac_n "checking for compressed file suffix""... $ac_c" 1>&6 -echo "configure:604: checking for compressed file suffix" >&5 +echo "configure:606: checking for compressed file suffix" >&5 touch TeST $enableval TeST Z=`ls TeST* | sed 's/^....//'` @@ -610,7 +612,7 @@ echo "configure:604: checking for compressed file suffix" >&5 fi echo $ac_n "checking whether to add a package name suffix for the manpages""... $ac_c" 1>&6 -echo "configure:614: checking whether to add a package name suffix for the manpages" >&5 +echo "configure:616: checking whether to add a package name suffix for the manpages" >&5 # Check whether --enable-man-suffix or --disable-man-suffix was given. if test "${enable_man_suffix+set}" = set; then enableval="$enable_man_suffix" @@ -638,7 +640,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:642: checking for $ac_word" >&5 +echo "configure:644: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -668,7 +670,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:672: checking for $ac_word" >&5 +echo "configure:674: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -719,7 +721,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:723: checking for $ac_word" >&5 +echo "configure:725: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -751,7 +753,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:755: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:757: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -762,12 +764,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 766 "configure" +#line 768 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -793,12 +795,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:797: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:799: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:802: checking whether we are using GNU C" >&5 +echo "configure:804: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -807,7 +809,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -826,7 +828,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:830: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:832: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -864,7 +866,7 @@ fi echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:868: checking for building with threads" >&5 +echo "configure:870: checking for building with threads" >&5 # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then enableval="$enable_threads" @@ -906,7 +908,7 @@ EOF EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:910: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:912: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -914,7 +916,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -953,7 +955,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:957: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:959: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -961,7 +963,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1000,7 +1002,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1004: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:1006: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1008,7 +1010,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1045,7 +1047,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1049: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1051: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1053,7 +1055,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1087,7 +1089,7 @@ fi if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1091: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1093: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1095,7 +1097,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1146,12 +1148,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1150: checking for $ac_func" >&5 +echo "configure:1152: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1201,12 +1203,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1205: checking for $ac_func" >&5 +echo "configure:1207: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1257,12 +1259,12 @@ done for ac_func in readdir_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1261: checking for $ac_func" >&5 +echo "configure:1263: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1311,14 +1313,14 @@ done if test "x$ac_cv_func_readdir_r" = "xyes"; then echo $ac_n "checking how many args readdir_r takes""... $ac_c" 1>&6 -echo "configure:1315: checking how many args readdir_r takes" >&5 +echo "configure:1317: checking how many args readdir_r takes" >&5 # IRIX 5.3 has a 2 arg version of readdir_r # while other systems have a 3 arg version. if eval "test \"`echo '$''{'tcl_cv_two_arg_readdir_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1333,7 +1335,7 @@ int main() { readdir_r(NULL, NULL); ; return 0; } EOF -if { (eval echo configure:1337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_two_arg_readdir_r=yes else @@ -1349,7 +1351,7 @@ fi echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1364,7 +1366,7 @@ int main() { readdir_r(NULL, NULL, NULL); ; return 0; } EOF -if { (eval echo configure:1368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1370: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_three_arg_readdir_r=yes else @@ -1407,18 +1409,18 @@ EOF if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1411: checking if the compiler understands -pipe" >&5 +echo "configure:1413: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1437,7 +1439,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1441: checking how to run the C preprocessor" >&5 +echo "configure:1443: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1452,13 +1454,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1469,13 +1471,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1481: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1486,13 +1488,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1525,12 +1527,12 @@ echo "$ac_t""$CPP" 1>&6 #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1529: checking for sin" >&5 +echo "configure:1531: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1574,7 +1576,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1578: checking for main in -lieee" >&5 +echo "configure:1580: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1582,14 +1584,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1616,7 +1618,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1620: checking for main in -linet" >&5 +echo "configure:1622: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1624,14 +1626,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1653,17 +1655,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:1657: checking for net/errno.h" >&5 +echo "configure:1659: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1669: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1708,12 +1710,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1712: checking for connect" >&5 +echo "configure:1714: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1758,12 +1760,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:1762: checking for setsockopt" >&5 +echo "configure:1764: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -1804,7 +1806,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:1808: checking for setsockopt in -lsocket" >&5 +echo "configure:1810: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1812,7 +1814,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1851,12 +1853,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:1855: checking for accept" >&5 +echo "configure:1857: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -1901,12 +1903,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1905: checking for gethostbyname" >&5 +echo "configure:1907: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1947,7 +1949,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1951: checking for gethostbyname in -lnsl" >&5 +echo "configure:1953: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1955,7 +1957,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2003,7 +2005,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:2007: checking how to build libraries" >&5 +echo "configure:2009: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2042,7 +2044,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2046: checking for $ac_word" >&5 +echo "configure:2048: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2074,7 +2076,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2078: checking if 64bit support is requested" >&5 +echo "configure:2080: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -2094,7 +2096,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2098: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2100: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2118,7 +2120,7 @@ fi # there are a few systems, like Next, where this doesn't work. echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:2122: checking system version (for dynamic loading)" >&5 +echo "configure:2124: checking system version (for dynamic loading)" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -2144,7 +2146,7 @@ echo "configure:2122: checking system version (for dynamic loading)" >&5 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2148: checking for dlopen in -ldl" >&5 +echo "configure:2150: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2152,7 +2154,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2211,7 +2213,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2215: checking for $ac_word" >&5 +echo "configure:2217: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2321,7 +2323,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2325: checking for gettimeofday in -lbsd" >&5 +echo "configure:2327: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2329,7 +2331,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2346: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2383,7 +2385,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2387: checking for inet_ntoa in -lbind" >&5 +echo "configure:2389: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2391,7 +2393,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2468,7 +2470,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2472: checking for shl_load in -ldld" >&5 +echo "configure:2474: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2476,7 +2478,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2555,7 +2557,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2559: checking for shl_load in -ldld" >&5 +echo "configure:2561: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2563,7 +2565,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2698,17 +2700,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2702: checking for dld.h" >&5 +echo "configure:2704: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2712: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2772,17 +2774,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2776: checking for dld.h" >&5 +echo "configure:2778: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2838,17 +2840,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2842: checking for dlfcn.h" >&5 +echo "configure:2844: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2852: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2875,9 +2877,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2879: checking for ELF" >&5 +echo "configure:2881: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2955: checking for ELF" >&5 +echo "configure:2957: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:3016: checking if ld accepts -single_module flag" >&5 +echo "configure:3018: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3020,14 +3022,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3050,7 +3052,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 DL_LIBS="" LDFLAGS="$LDFLAGS -prebind" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3054: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3056: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3058,14 +3060,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3089,13 +3091,153 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_SRCS=\$\(MAC\_OSX_SRCS\) TCL_SHLIB_LD_EXTRAS='-compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' TK_SHLIB_LD_EXTRAS=' -compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TK_LIB_FILE} -seg1addr 0xb000000 -unexported_symbols_list $$(f=$(TCL_STUB_LIB_FILE).E && nm -gjp $(TCL_BIN_DIR)/$(TCL_STUB_LIB_FILE) | tail +3 > $$f && echo $$f)' - LIBS="$LIBS -framework CoreFoundation" - cat >> confdefs.h <<\EOF -#define MAC_OSX_TCL 1 + echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 +echo "configure:3096: checking whether to use CoreFoundation" >&5 + # Check whether --enable-corefoundation or --disable-corefoundation was given. +if test "${enable_corefoundation+set}" = set; then + enableval="$enable_corefoundation" + tcl_corefoundation=$enableval +else + tcl_corefoundation=yes +fi + + echo "$ac_t""$tcl_corefoundation" 1>&6 + if test $tcl_corefoundation = yes; then + echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 +echo "configure:3108: checking for CoreFoundation.framework" >&5 +if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_libs=$LIBS + LIBS="$LIBS -framework CoreFoundation" + cat > conftest.$ac_ext < +int main() { +CFBundleRef b = CFBundleGetMainBundle(); +; return 0; } +EOF +if { (eval echo configure:3123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_lib_corefoundation=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_lib_corefoundation=no +fi +rm -f conftest* + LIBS=$hold_libs +fi + +echo "$ac_t""$tcl_cv_lib_corefoundation" 1>&6 + if test $tcl_cv_lib_corefoundation = yes; then + LIBS="$LIBS -framework CoreFoundation" + cat >> confdefs.h <<\EOF +#define HAVE_COREFOUNDATION 1 +EOF + + fi + fi + for ac_hdr in libkern/OSAtomic.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:3149: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3159: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + for ac_func in OSSpinLockLock +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:3188: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } EOF +if { (eval echo configure:3216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done cat >> confdefs.h <<\EOF -#define HAVE_CFBUNDLE 1 +#define MAC_OSX_TCL 1 EOF cat >> confdefs.h <<\EOF @@ -3106,6 +3248,60 @@ EOF #define TCL_DEFAULT_ENCODING "utf-8" EOF + # prior to Darwin 7, realpath is not threadsafe, so don't + # use it when threads are enabled, c.f. bug # 711232: + echo $ac_n "checking for realpath""... $ac_c" 1>&6 +echo "configure:3255: checking for realpath" >&5 +if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char realpath(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_realpath) || defined (__stub___realpath) +choke me +#else +realpath(); +#endif + +; return 0; } +EOF +if { (eval echo configure:3283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_realpath=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_realpath=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +fi + + if test "$ac_cv_func_realpath" = yes -a "${TCL_THREADS}" = 1 \ + -a `uname -r | awk -F. '{print $1}'` -lt 7 ; then + ac_cv_func_realpath=no + fi ;; NEXTSTEP-*) SHLIB_CFLAGS="" @@ -3394,17 +3590,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3398: checking for ld accepts -Bexport flag" >&5 +echo "configure:3594: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3445,9 +3641,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3449: checking sys/exec.h" >&5 +echo "configure:3645: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3465,7 +3661,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3483,9 +3679,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3487: checking a.out.h" >&5 +echo "configure:3683: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3503,7 +3699,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3521,9 +3717,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3525: checking sys/exec_aout.h" >&5 +echo "configure:3721: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3541,7 +3737,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3692,7 +3888,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3696: checking for build with symbols" >&5 +echo "configure:3892: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3753,21 +3949,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3757: checking for required early compiler flags" >&5 +echo "configure:3953: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3775,7 +3971,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3783,7 +3979,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3809,14 +4005,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4016: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3824,7 +4020,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3832,7 +4028,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3836: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4032: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3861,7 +4057,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3865: checking for 64-bit integer type" >&5 +echo "configure:4061: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3869,14 +4065,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4076: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3890,7 +4086,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4099: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3924,13 +4120,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3928: checking for struct dirent64" >&5 +echo "configure:4124: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3938,7 +4134,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:3942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -3959,13 +4155,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:3963: checking for struct stat64" >&5 +echo "configure:4159: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3973,7 +4169,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:3977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -3996,12 +4192,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4000: checking for $ac_func" >&5 +echo "configure:4196: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4049,13 +4245,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4053: checking for off64_t" >&5 +echo "configure:4249: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4063,7 +4259,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4263: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4094,14 +4290,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4098: checking whether byte ordering is bigendian" >&5 +echo "configure:4294: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4112,11 +4308,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4127,7 +4323,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4131: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4327: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4147,7 +4343,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4193,12 +4389,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4197: checking for $ac_func" >&5 +echo "configure:4393: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4255,12 +4451,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4259: checking for $ac_func" >&5 +echo "configure:4455: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4313,12 +4509,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4317: checking for $ac_func" >&5 +echo "configure:4513: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4368,12 +4564,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4372: checking for strerror" >&5 +echo "configure:4568: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4420,12 +4616,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4424: checking for getwd" >&5 +echo "configure:4620: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4472,12 +4668,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4476: checking for wait3" >&5 +echo "configure:4672: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4524,12 +4720,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4528: checking for uname" >&5 +echo "configure:4724: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4576,12 +4772,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4580: checking for realpath" >&5 +echo "configure:4776: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4639,12 +4835,12 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4643: checking dirent.h" >&5 +echo "configure:4839: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4670,7 +4866,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -4693,17 +4889,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4697: checking for errno.h" >&5 +echo "configure:4893: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4707: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4903: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4730,17 +4926,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4734: checking for float.h" >&5 +echo "configure:4930: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4767,17 +4963,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4771: checking for values.h" >&5 +echo "configure:4967: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4781: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4804,17 +5000,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4808: checking for limits.h" >&5 +echo "configure:5004: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5014: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4844,17 +5040,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4848: checking for stdlib.h" >&5 +echo "configure:5044: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4858: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5054: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4877,7 +5073,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4891,7 +5087,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4905,7 +5101,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4926,17 +5122,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4930: checking for string.h" >&5 +echo "configure:5126: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4959,7 +5155,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4973,7 +5169,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4999,17 +5195,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:5003: checking for sys/wait.h" >&5 +echo "configure:5199: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5013: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5036,17 +5232,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:5040: checking for dlfcn.h" >&5 +echo "configure:5236: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5050: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5078,17 +5274,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5082: checking for $ac_hdr" >&5 +echo "configure:5278: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5128,17 +5324,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5132: checking for $ac_hdr" >&5 +echo "configure:5328: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5142: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5165,7 +5361,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5169: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5365: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5174,7 +5370,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5189,7 +5385,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5206,7 +5402,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5220,7 +5416,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5238,7 +5434,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5253,7 +5449,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5271,7 +5467,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5288,7 +5484,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5306,7 +5502,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5322,7 +5518,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5340,7 +5536,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5357,7 +5553,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5400,19 +5596,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5404: checking for fd_set in sys/types" >&5 +echo "configure:5600: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5428,12 +5624,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5432: checking for fd_mask in sys/select" >&5 +echo "configure:5628: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5470,12 +5666,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5474: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5670: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5483,7 +5679,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5508,17 +5704,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5512: checking for $ac_hdr" >&5 +echo "configure:5708: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5545,12 +5741,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5549: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5745: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5559,7 +5755,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5580,12 +5776,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5584: checking for tm_zone in struct tm" >&5 +echo "configure:5780: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5593,7 +5789,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5613,12 +5809,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5617: checking for tzname" >&5 +echo "configure:5813: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5628,7 +5824,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5653,12 +5849,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5657: checking for $ac_func" >&5 +echo "configure:5853: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5707,19 +5903,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5711: checking tm_tzadj in struct tm" >&5 +echo "configure:5907: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5723: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5740,19 +5936,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5744: checking tm_gmtoff in struct tm" >&5 +echo "configure:5940: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5952: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5777,12 +5973,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5781: checking long timezone variable" >&5 +echo "configure:5977: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5791,7 +5987,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5814,12 +6010,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5818: checking time_t timezone variable" >&5 +echo "configure:6014: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5828,7 +6024,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5855,12 +6051,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5859: checking for st_blksize in struct stat" >&5 +echo "configure:6055: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5868,7 +6064,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5889,12 +6085,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5893: checking for fstatfs" >&5 +echo "configure:6089: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5946,7 +6142,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5950: checking for 8-bit clean memcmp" >&5 +echo "configure:6146: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5954,7 +6150,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5988,12 +6184,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5992: checking for memmove" >&5 +echo "configure:6188: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6049,12 +6245,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6053: checking proper strstr implementation" >&5 +echo "configure:6249: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6091,12 +6287,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6095: checking for strtoul" >&5 +echo "configure:6291: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6143,7 +6339,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6182,12 +6378,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6186: checking for strtod" >&5 +echo "configure:6382: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6234,7 +6430,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6276,12 +6472,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6280: checking for strtod" >&5 +echo "configure:6476: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6326,7 +6522,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6330: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6526: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6335,7 +6531,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6391,12 +6587,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6395: checking for ANSI C header files" >&5 +echo "configure:6591: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6404,7 +6600,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6421,7 +6617,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6439,7 +6635,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6460,7 +6656,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6471,7 +6667,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6495,12 +6691,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6499: checking for mode_t" >&5 +echo "configure:6695: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6528,12 +6724,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6532: checking for pid_t" >&5 +echo "configure:6728: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6561,12 +6757,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6565: checking for size_t" >&5 +echo "configure:6761: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6594,12 +6790,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6598: checking for uid_t in sys/types.h" >&5 +echo "configure:6794: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6629,12 +6825,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6633: checking for socklen_t" >&5 +echo "configure:6829: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6673,12 +6869,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6677: checking for opendir" >&5 +echo "configure:6873: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6734,12 +6930,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6738: checking union wait" >&5 +echo "configure:6934: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6751,7 +6947,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6778,12 +6974,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6782: checking for strncasecmp" >&5 +echo "configure:6978: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6828,7 +7024,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6832: checking for strncasecmp in -lsocket" >&5 +echo "configure:7028: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6836,7 +7032,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6871,7 +7067,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6875: checking for strncasecmp in -linet" >&5 +echo "configure:7071: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6879,7 +7075,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6928,12 +7124,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6932: checking for BSDgettimeofday" >&5 +echo "configure:7128: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -6978,12 +7174,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:6982: checking for gettimeofday" >&5 +echo "configure:7178: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7033,12 +7229,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7037: checking for gettimeofday declaration" >&5 +echo "configure:7233: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7069,14 +7265,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7073: checking whether char is unsigned" >&5 +echo "configure:7269: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7132,12 +7328,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7136: checking signed char declarations" >&5 +echo "configure:7332: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7172,7 +7368,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7176: checking for a putenv() that copies the buffer" >&5 +echo "configure:7372: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7180,7 +7376,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7202,7 +7398,7 @@ else } EOF -if { (eval echo configure:7206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7244,17 +7440,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7248: checking for langinfo.h" >&5 +echo "configure:7444: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7279,17 +7475,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7283: checking whether to use nl_langinfo" >&5 +echo "configure:7479: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7324,17 +7520,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7328: checking for $ac_hdr" >&5 +echo "configure:7524: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7364,17 +7560,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7368: checking for $ac_hdr" >&5 +echo "configure:7564: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7378: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7401,7 +7597,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7405: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7601: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7464,7 +7660,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7468: checking how to package libraries" >&5 +echo "configure:7664: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -7488,6 +7684,10 @@ fi echo "configure: warning: "Frameworks can only be built if --enable-shared is yes"" 1>&2 FRAMEWORK_BUILD=0 fi + if test $tcl_corefoundation = no; then + echo "configure: warning: "Frameworks can only be used when CoreFoundation is available"" 1>&2 + FRAMEWORK_BUILD=0 + fi else echo "$ac_t""standard shared library" 1>&6 FRAMEWORK_BUILD=0 diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 8239fb8..73fb065 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -387,6 +387,10 @@ AC_DEFUN(SC_ENABLE_FRAMEWORK, [ AC_MSG_WARN("Frameworks can only be built if --enable-shared is yes") FRAMEWORK_BUILD=0 fi + if test $tcl_corefoundation = no; then + AC_MSG_WARN("Frameworks can only be used when CoreFoundation is available") + FRAMEWORK_BUILD=0 + fi else AC_MSG_RESULT([standard shared library]) FRAMEWORK_BUILD=0 @@ -1389,11 +1393,35 @@ dnl AC_CHECK_TOOL(AR, ar) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) TCL_SHLIB_LD_EXTRAS='-compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' TK_SHLIB_LD_EXTRAS=' -compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TK_LIB_FILE} -seg1addr 0xb000000 -unexported_symbols_list $$(f=$(TCL_STUB_LIB_FILE).E && nm -gjp $(TCL_BIN_DIR)/$(TCL_STUB_LIB_FILE) | tail +3 > $$f && echo $$f)' - LIBS="$LIBS -framework CoreFoundation" + AC_MSG_CHECKING([whether to use CoreFoundation]) + AC_ARG_ENABLE(corefoundation, [ --enable-corefoundation use CoreFoundation API [--enable-corefoundation]], + [tcl_corefoundation=$enableval], [tcl_corefoundation=yes]) + AC_MSG_RESULT([$tcl_corefoundation]) + if test $tcl_corefoundation = yes; then + AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [ + hold_libs=$LIBS + LIBS="$LIBS -framework CoreFoundation" + AC_TRY_LINK([#include ], + [CFBundleRef b = CFBundleGetMainBundle();], + tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no) + LIBS=$hold_libs]) + if test $tcl_cv_lib_corefoundation = yes; then + LIBS="$LIBS -framework CoreFoundation" + AC_DEFINE(HAVE_COREFOUNDATION) + fi + fi + AC_CHECK_HEADERS(libkern/OSAtomic.h) + AC_CHECK_FUNCS(OSSpinLockLock) AC_DEFINE(MAC_OSX_TCL) - AC_DEFINE(HAVE_CFBUNDLE) AC_DEFINE(USE_VFORK) AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8") + # prior to Darwin 7, realpath is not threadsafe, so don't + # use it when threads are enabled, c.f. bug # 711232: + AC_CHECK_FUNC(realpath) + if test "$ac_cv_func_realpath" = yes -a "${TCL_THREADS}" = 1 \ + -a `uname -r | awk -F. '{print [$]1}'` -lt 7 ; then + ac_cv_func_realpath=no + fi ;; NEXTSTEP-*) SHLIB_CFLAGS="" diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 906cce3..1bace2e 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14 2002/10/29 00:04:08 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.1 2005/05/14 20:52:33 das Exp $ */ #include "tclInt.h" @@ -24,7 +24,7 @@ typedef struct Tcl_DyldModuleHandle { } Tcl_DyldModuleHandle; typedef struct Tcl_DyldLoadHandle { - const struct mach_header *dyld_lib; + CONST struct mach_header *dyld_lib; Tcl_DyldModuleHandle *firstModuleHandle; } Tcl_DyldLoadHandle; @@ -60,7 +60,7 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) * this file. */ { Tcl_DyldLoadHandle *dyldLoadHandle; - const struct mach_header *dyld_lib; + CONST struct mach_header *dyld_lib; CONST char *native; /* @@ -90,7 +90,7 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) if (!dyld_lib) { NSLinkEditErrors editError; - char *name, *msg; + CONST char *name, *msg; NSLinkEditError(&editError, &errno, &name, &msg); Tcl_AppendResult(interp, msg, (char *) NULL); return TCL_ERROR; @@ -153,7 +153,7 @@ TclpFindSymbol(interp, loadHandle, symbol) } } else { NSLinkEditErrors editError; - char *name, *msg; + CONST char *name, *msg; NSLinkEditError(&editError, &errno, &name, &msg); Tcl_AppendResult(interp, msg, (char *) NULL); } @@ -199,7 +199,7 @@ TclpUnloadFile(loadHandle) dyldModuleHandle = dyldModuleHandle->nextModuleHandle; ckfree(ptr); } - ckfree(dyldLoadHandle); + ckfree((char*) dyldLoadHandle); } /* diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 0c6fbe9..8403f6b 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,10 +7,10 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.6 2005/01/05 22:14:43 dkf Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.7 2005/05/14 20:52:33 das Exp $ */ -#if defined(HAVE_CFBUNDLE) +#if defined(HAVE_COREFOUNDATION) #include #endif #include "tclInt.h" @@ -145,9 +145,9 @@ static CONST LocaleTable localeTable[] = { {NULL, NULL} }; -#ifdef HAVE_CFBUNDLE +#ifdef HAVE_COREFOUNDATION static int Tcl_MacOSXGetLibraryPath(Tcl_Interp *interp, int maxPathLen, char *tclLibPath); -#endif /* HAVE_CFBUNDLE */ +#endif /* HAVE_COREFOUNDATION */ /* @@ -441,13 +441,13 @@ CONST char *path; /* Path to the executable in native */ { -#ifdef HAVE_CFBUNDLE +#ifdef HAVE_COREFOUNDATION char tclLibPath[MAXPATHLEN + 1]; if (Tcl_MacOSXGetLibraryPath(NULL, MAXPATHLEN, tclLibPath) == TCL_OK) { str = tclLibPath; } else -#endif /* HAVE_CFBUNDLE */ +#endif /* HAVE_COREFOUNDATION */ { str = defaultLibraryDir; } @@ -739,7 +739,7 @@ TclpSetVariables(interp) CONST char *user; Tcl_DString ds; -#ifdef HAVE_CFBUNDLE +#ifdef HAVE_COREFOUNDATION char tclLibPath[MAXPATHLEN + 1]; if (Tcl_MacOSXGetLibraryPath(interp, MAXPATHLEN, tclLibPath) == TCL_OK) { @@ -771,7 +771,7 @@ TclpSetVariables(interp) Tcl_StatBuf statBuf; if((frameworksURL = CFBundleCopyPrivateFrameworksURL(bundleRef))) { if(CFURLGetFileSystemRepresentation(frameworksURL, TRUE, - tclLibPath, MAXPATHLEN) && + (unsigned char*) tclLibPath, MAXPATHLEN) && ! TclOSstat(tclLibPath, &statBuf) && S_ISDIR(statBuf.st_mode)) { Tcl_SetVar(interp, "tcl_pkgPath", tclLibPath, @@ -783,7 +783,7 @@ TclpSetVariables(interp) } if((frameworksURL = CFBundleCopySharedFrameworksURL(bundleRef))) { if(CFURLGetFileSystemRepresentation(frameworksURL, TRUE, - tclLibPath, MAXPATHLEN) && + (unsigned char*) tclLibPath, MAXPATHLEN) && ! TclOSstat(tclLibPath, &statBuf) && S_ISDIR(statBuf.st_mode)) { Tcl_SetVar(interp, "tcl_pkgPath", tclLibPath, @@ -797,7 +797,7 @@ TclpSetVariables(interp) Tcl_SetVar(interp, "tcl_pkgPath", pkgPath, TCL_GLOBAL_ONLY | TCL_APPEND_VALUE); } else -#endif /* HAVE_CFBUNDLE */ +#endif /* HAVE_COREFOUNDATION */ { Tcl_SetVar(interp, "tclDefaultLibrary", defaultLibraryDir, TCL_GLOBAL_ONLY); @@ -1053,7 +1053,7 @@ TclpCheckStackSpace() return 1; } -#ifdef HAVE_CFBUNDLE +#ifdef HAVE_COREFOUNDATION /* *---------------------------------------------------------------------- * @@ -1080,5 +1080,5 @@ static int Tcl_MacOSXGetLibraryPath(Tcl_Interp *interp, int maxPathLen, char *tc #endif return foundInFramework; } -#endif /* HAVE_CFBUNDLE */ +#endif /* HAVE_COREFOUNDATION */ diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 7482646..d44144c 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,9 +11,11 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.8 2005/04/26 00:46:02 das Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.9 2005/05/14 20:52:33 das Exp $ */ +#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier + * is in tclMacOSXNotify.c */ #include "tclInt.h" #include "tclPort.h" #include @@ -1063,3 +1065,5 @@ NotifierThreadProc(clientData) TclpThreadExit (0); } #endif + +#endif /* HAVE_COREFOUNDATION */ diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 0c1d9b7..7f20eda 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.4 2004/05/17 14:26:50 kennykb Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.5 2005/05/14 20:52:33 das Exp $ */ #ifndef _TCLUNIXPORT @@ -575,13 +575,6 @@ EXTERN char * TclpInetNtoa(struct in_addr); #define inet_ntoa(x) TclpInetNtoa(x) #undef TclOSreaddir #define TclOSreaddir(x) TclpReaddir(x) -#ifdef MAC_OSX_TCL -/* - * On Mac OS X, realpath is currently not - * thread safe, c.f. SF bug # 711232. - */ -#define NO_REALPATH -#endif #else typedef int TclpMutex; #define TclpMutexInit(a) -- cgit v0.12 From 5c0ba9966cd9fdeb4869125d15121e9465dfca55 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 19 May 2005 13:28:33 +0000 Subject: * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): fixed crashing CFRelease of runLoopSource in Tcl_InitNotifier (reported by Zoran): CFRunLoopAddSource doesn't CFRetain, so can only CFRelease the runLoopSource in Tcl_FinalizeNotifier. --- ChangeLog | 7 +++++++ macosx/tclMacOSXNotify.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a2545c4..d048e29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-05-19 Daniel Steffen + + * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): fixed crashing + CFRelease of runLoopSource in Tcl_InitNotifier (reported by Zoran): + CFRunLoopAddSource doesn't CFRetain, so can only CFRelease the + runLoopSource in Tcl_FinalizeNotifier. + 2005-05-14 Daniel Steffen * macosx/tclMacOSXBundle.c: diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index bf3b9bc..8cc5af2 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.2 2005/05/14 20:52:31 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.3 2005/05/19 13:28:34 das Exp $ */ #ifdef HAVE_COREFOUNDATION /* Traditional unix select-based notifier @@ -249,7 +249,6 @@ Tcl_InitNotifier() Tcl_Panic("Tcl_InitNotifier: could not create CFRunLoopSource."); } CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopCommonModes); - CFRelease(runLoopSource); tsdPtr->runLoopSource = runLoopSource; tsdPtr->runLoop = runLoop; } @@ -364,6 +363,7 @@ Tcl_FinalizeNotifier(clientData) tsdPtr->runLoop = NULL; /* Remove runLoopSource from all CFRunLoops and release it */ CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); + CFRelease(runLoopSource); tsdPtr->runLoopSource = NULL; } UNLOCK_NOTIFIER; -- cgit v0.12 From 1346d27686eee342d81cc069ffc0ca803d4dc7bf Mon Sep 17 00:00:00 2001 From: das Date: Fri, 20 May 2005 02:50:36 +0000 Subject: * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): fixed crashing CFRelease of runLoopSource in Tcl_InitNotifier (reported by Zoran): CFRunLoopAddSource doesn't CFRetain, so can only CFRelease the runLoopSource in Tcl_FinalizeNotifier. --- macosx/tclMacOSXNotify.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index 8cc5af2..898d075 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.3 2005/05/19 13:28:34 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.4 2005/05/20 02:50:36 das Exp $ */ #ifdef HAVE_COREFOUNDATION /* Traditional unix select-based notifier @@ -363,7 +363,7 @@ Tcl_FinalizeNotifier(clientData) tsdPtr->runLoop = NULL; /* Remove runLoopSource from all CFRunLoops and release it */ CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); - CFRelease(runLoopSource); + CFRelease(tsdPtr->runLoopSource); tsdPtr->runLoopSource = NULL; } UNLOCK_NOTIFIER; -- cgit v0.12 From 30ab2e7be77da7f6eb286f441ae86da6d775b842 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 May 2005 15:28:14 +0000 Subject: * generic/tclParseExpr.c: Corrected parser to recognize all boolean literals accepted by Tcl_GetBoolean, including prefixes like "y" and "f", and to allow "eq" and "ne" as function names in the proper context. [Bug 1201589]. --- ChangeLog | 7 ++++ generic/tclParseExpr.c | 98 +++++++++++++++++++------------------------------- 2 files changed, 44 insertions(+), 61 deletions(-) diff --git a/ChangeLog b/ChangeLog index d048e29..cd2c436 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-05-20 Don Porter + + * generic/tclParseExpr.c: Corrected parser to recognize all + boolean literals accepted by Tcl_GetBoolean, including prefixes + like "y" and "f", and to allow "eq" and "ne" as function names + in the proper context. [Bug 1201589]. + 2005-05-19 Daniel Steffen * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): fixed crashing diff --git a/generic/tclParseExpr.c b/generic/tclParseExpr.c index bb88159..2bb1b6f 100644 --- a/generic/tclParseExpr.c +++ b/generic/tclParseExpr.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParseExpr.c,v 1.17 2003/02/16 01:36:32 msofer Exp $ + * RCS: @(#) $Id: tclParseExpr.c,v 1.17.2.1 2005/05/20 15:28:17 dgp Exp $ */ #include "tclInt.h" @@ -1181,6 +1181,7 @@ ParsePrimaryExpr(infoPtr) * Int or double number. */ + tokenizeLiteral: if (parsePtr->numTokens == parsePtr->tokensAvailable) { TclExpandTokenArray(parsePtr); } @@ -1368,26 +1369,36 @@ ParsePrimaryExpr(infoPtr) } break; - case FUNC_NAME: + case STREQ: + case STRNEQ: + case FUNC_NAME: { /* * math_func '(' expr {',' expr} ')' */ - - if (parsePtr->numTokens == parsePtr->tokensAvailable) { - TclExpandTokenArray(parsePtr); - } - tokenPtr = &parsePtr->tokenPtr[parsePtr->numTokens]; - tokenPtr->type = TCL_TOKEN_OPERATOR; - tokenPtr->start = infoPtr->start; - tokenPtr->size = infoPtr->size; - tokenPtr->numComponents = 0; - parsePtr->numTokens++; + + ParseInfo savedInfo = *infoPtr; code = GetLexeme(infoPtr); /* skip over function name */ if (code != TCL_OK) { return code; } if (infoPtr->lexeme != OPEN_PAREN) { + int code; + Tcl_DString functionName; + Tcl_HashEntry *hPtr; + Interp *iPtr = (Interp *) infoPtr->parsePtr->interp; + Tcl_Obj *errMsg, *objPtr + = Tcl_NewStringObj(savedInfo.start, savedInfo.size); + + /* Check for boolean literals (true, false, yes, no, on, off) */ + Tcl_IncrRefCount(objPtr); + code = Tcl_ConvertToType(NULL, objPtr, &tclBooleanType); + Tcl_DecrRefCount(objPtr); + if (code == TCL_OK) { + *infoPtr = savedInfo; + goto tokenizeLiteral; + } + /* * Guess what kind of error we have by trying to tell * whether we have a function or variable name here. @@ -1396,9 +1407,6 @@ ParsePrimaryExpr(infoPtr) * give a sensible message here. Still, it is not too * serious as this is only done when generating an error. */ - Interp *iPtr = (Interp *) infoPtr->parsePtr->interp; - Tcl_DString functionName; - Tcl_HashEntry *hPtr; /* * Look up the name as a function name. We need a writable @@ -1408,8 +1416,8 @@ ParsePrimaryExpr(infoPtr) */ Tcl_DStringInit(&functionName); hPtr = Tcl_FindHashEntry(&iPtr->mathFuncTable, - Tcl_DStringAppend(&functionName, tokenPtr->start, - tokenPtr->size)); + Tcl_DStringAppend(&functionName, + savedInfo.start, savedInfo.size)); Tcl_DStringFree(&functionName); /* @@ -1426,6 +1434,17 @@ ParsePrimaryExpr(infoPtr) } return TCL_ERROR; } + + if (parsePtr->numTokens == parsePtr->tokensAvailable) { + TclExpandTokenArray(parsePtr); + } + tokenPtr = &parsePtr->tokenPtr[parsePtr->numTokens]; + tokenPtr->type = TCL_TOKEN_OPERATOR; + tokenPtr->start = savedInfo.start; + tokenPtr->size = savedInfo.size; + tokenPtr->numComponents = 0; + parsePtr->numTokens++; + code = GetLexeme(infoPtr); /* skip over '(' */ if (code != TCL_OK) { return code; @@ -1453,6 +1472,7 @@ ParsePrimaryExpr(infoPtr) exprTokenPtr->size = (infoPtr->next - exprTokenPtr->start); exprTokenPtr->numComponents = parsePtr->numTokens - firstIndex; break; + } case COMMA: LogSyntaxError(infoPtr, @@ -1844,50 +1864,6 @@ GetLexeme(infoPtr) infoPtr->size = (src - infoPtr->start); infoPtr->next = src; parsePtr->term = infoPtr->next; - /* - * Check for boolean literals (true, false, yes, no, on, off) - */ - switch (infoPtr->start[0]) { - case 'f': - if (infoPtr->size == 5 && - strncmp("false", infoPtr->start, 5) == 0) { - infoPtr->lexeme = LITERAL; - return TCL_OK; - } - break; - case 'n': - if (infoPtr->size == 2 && - strncmp("no", infoPtr->start, 2) == 0) { - infoPtr->lexeme = LITERAL; - return TCL_OK; - } - break; - case 'o': - if (infoPtr->size == 3 && - strncmp("off", infoPtr->start, 3) == 0) { - infoPtr->lexeme = LITERAL; - return TCL_OK; - } else if (infoPtr->size == 2 && - strncmp("on", infoPtr->start, 2) == 0) { - infoPtr->lexeme = LITERAL; - return TCL_OK; - } - break; - case 't': - if (infoPtr->size == 4 && - strncmp("true", infoPtr->start, 4) == 0) { - infoPtr->lexeme = LITERAL; - return TCL_OK; - } - break; - case 'y': - if (infoPtr->size == 3 && - strncmp("yes", infoPtr->start, 3) == 0) { - infoPtr->lexeme = LITERAL; - return TCL_OK; - } - break; - } return TCL_OK; } infoPtr->lexeme = UNKNOWN_CHAR; -- cgit v0.12 From 4bac401c88cba259c4111739010cfad50ed6403e Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 20 May 2005 17:19:06 +0000 Subject: Removed unreferenced stack variable --- ChangeLog | 5 +++++ generic/tclParseExpr.c | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index cd2c436..9dd987f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-05-20 Zoran Vasiljevic + + * generic/tclParseExpr.c: removed unreferenced stack variable "errMsg" + probably included by fixing the Bug #1201589 (see below). + 2005-05-20 Don Porter * generic/tclParseExpr.c: Corrected parser to recognize all diff --git a/generic/tclParseExpr.c b/generic/tclParseExpr.c index 2bb1b6f..a1f9d78 100644 --- a/generic/tclParseExpr.c +++ b/generic/tclParseExpr.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParseExpr.c,v 1.17.2.1 2005/05/20 15:28:17 dgp Exp $ + * RCS: @(#) $Id: tclParseExpr.c,v 1.17.2.2 2005/05/20 17:19:10 vasiljevic Exp $ */ #include "tclInt.h" @@ -1387,8 +1387,7 @@ ParsePrimaryExpr(infoPtr) Tcl_DString functionName; Tcl_HashEntry *hPtr; Interp *iPtr = (Interp *) infoPtr->parsePtr->interp; - Tcl_Obj *errMsg, *objPtr - = Tcl_NewStringObj(savedInfo.start, savedInfo.size); + Tcl_Obj *objPtr = Tcl_NewStringObj(savedInfo.start, savedInfo.size); /* Check for boolean literals (true, false, yes, no, on, off) */ Tcl_IncrRefCount(objPtr); -- cgit v0.12 From 753360929f8d1c7c1184864fe3cd7e5bb9acf497 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 24 May 2005 04:18:54 +0000 Subject: * generic/tclCmdMZ.c (Tcl_TimeObjCmd): change [time] called with a count > 1 to return a string with a float value instead of a rounded off integer. [Bug 1202178] --- generic/tclCmdMZ.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index c61afc5..d26f33c 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.17 2005/05/11 00:48:01 hobbs Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.18 2005/05/24 04:18:54 das Exp $ */ #include "tclInt.h" @@ -2912,11 +2912,11 @@ Tcl_TimeObjCmd(dummy, interp, objc, objv) Tcl_Obj *CONST objv[]; /* Argument objects. */ { register Tcl_Obj *objPtr; + Tcl_Obj *objs[4]; register int i, result; int count; double totalMicroSec; Tcl_Time start, stop; - char buf[100]; if (objc == 2) { count = 1; @@ -2943,10 +2943,15 @@ Tcl_TimeObjCmd(dummy, interp, objc, objv) totalMicroSec = ( ( (double) ( stop.sec - start.sec ) ) * 1.0e6 + ( stop.usec - start.usec ) ); - sprintf(buf, "%.0f microseconds per iteration", - ((count <= 0) ? 0 : totalMicroSec/count)); - Tcl_ResetResult(interp); - Tcl_AppendToObj(Tcl_GetObjResult(interp), buf, -1); + if (count <= 1) { + objs[0] = Tcl_NewIntObj((count <= 0) ? 0 : totalMicroSec); + } else { + objs[0] = Tcl_NewDoubleObj(totalMicroSec/count); + } + objs[1] = Tcl_NewStringObj("microseconds", -1); + objs[2] = Tcl_NewStringObj("per", -1); + objs[3] = Tcl_NewStringObj("iteration", -1); + Tcl_SetObjResult(interp, Tcl_NewListObj(4, objs)); return TCL_OK; } -- cgit v0.12 From fca40523b43d3d77abecf7ffcd91efb66fdc7893 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 24 May 2005 04:19:32 +0000 Subject: * generic/tclIOUtil.c (TclLoadFile): * generic/tclInt.h: * unix/tcl.m4: * unix/tclLoadDyld.c: added support for [load]ing .bundle binaries in addition to .dylib's: .bundle's can be [unload]ed (unlike .dylib's), and can be [load]ed from memory, e.g. directly from VFS without needing to be written out to a temporary location first. [Bug 1202209] * unix/configure: autoconf-2.13 --- generic/tclIOUtil.c | 52 ++++++++- generic/tclInt.h | 11 +- unix/tclLoadDyld.c | 322 +++++++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 342 insertions(+), 43 deletions(-) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 07ad92c..2647a8b 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.20 2004/12/02 18:48:14 vincentdarley Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.21 2005/05/24 04:19:32 das Exp $ */ #include "tclInt.h" @@ -2785,6 +2785,56 @@ Tcl_FSLoadFile(interp, pathPtr, sym1, sym2, proc1Ptr, proc2Ptr, return TCL_ERROR; } +#ifdef TCL_LOAD_FROM_MEMORY + /* + * The platform supports loading code from memory, so ask for a + * buffer of the appropriate size, read the file into it and + * load the code from the buffer: + */ + do { + int ret, size; + void *buffer; + Tcl_StatBuf statBuf; + Tcl_Channel data; + + ret = Tcl_FSStat(pathPtr, &statBuf); + if (ret < 0) { + break; + } + size = (int) statBuf.st_size; + /* Tcl_Read takes an int: check that file size isn't wide */ + if (size != (Tcl_WideInt)statBuf.st_size) { + break; + } + data = Tcl_FSOpenFileChannel(interp, pathPtr, "r", 0666); + if (!data) { + break; + } + buffer = TclpLoadMemoryGetBuffer(interp, size); + if (!buffer) { + Tcl_Close(interp, data); + break; + } + Tcl_SetChannelOption(interp, data, "-translation", "binary"); + ret = Tcl_Read(data, buffer, size); + Tcl_Close(interp, data); + ret = TclpLoadMemory(interp, buffer, size, ret, handlePtr, unloadProcPtr); + if (ret == TCL_OK) { + if (*handlePtr == NULL) { + break; + } + if (sym1 != NULL) { + *proc1Ptr = TclpFindSymbol(interp, *handlePtr, sym1); + } + if (sym2 != NULL) { + *proc2Ptr = TclpFindSymbol(interp, *handlePtr, sym2); + } + return TCL_OK; + } + } while (0); + Tcl_ResetResult(interp); +#endif + /* * Get a temporary filename to use, first to * copy the file into, and then to load. diff --git a/generic/tclInt.h b/generic/tclInt.h index 300a14c..7f555ec 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.9 2005/04/07 11:24:13 vasiljevic Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.10 2005/05/24 04:19:33 das Exp $ */ #ifndef _TCLINT @@ -1789,6 +1789,15 @@ EXTERN int TclpDlopen _ANSI_ARGS_((Tcl_Interp *interp, EXTERN int TclpUtime _ANSI_ARGS_((Tcl_Obj *pathPtr, struct utimbuf *tval)); +#ifdef TCL_LOAD_FROM_MEMORY +EXTERN void* TclpLoadMemoryGetBuffer _ANSI_ARGS_(( + Tcl_Interp *interp, int size)); +EXTERN int TclpLoadMemory _ANSI_ARGS_((Tcl_Interp *interp, + void *buffer, int size, int codeSize, + Tcl_LoadHandle *loadHandle, + Tcl_FSUnloadFileProc **unloadProcPtr)); +#endif + /* *---------------------------------------------------------------- * Command procedures in the generic core: diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 1bace2e..4a42b51 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -11,12 +11,13 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.1 2005/05/14 20:52:33 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.2 2005/05/24 04:19:33 das Exp $ */ #include "tclInt.h" #include "tclPort.h" #include +#include typedef struct Tcl_DyldModuleHandle { struct Tcl_DyldModuleHandle *nextModuleHandle; @@ -28,6 +29,59 @@ typedef struct Tcl_DyldLoadHandle { Tcl_DyldModuleHandle *firstModuleHandle; } Tcl_DyldLoadHandle; +#ifdef TCL_LOAD_FROM_MEMORY +typedef struct ThreadSpecificData { + int haveLoadMemory; +} ThreadSpecificData; + +static Tcl_ThreadDataKey dataKey; +#endif + +/* + *---------------------------------------------------------------------- + * + * DyldOFIErrorMsg -- + * + * Converts a numerical NSObjectFileImage error into an + * error message string. + * + * Results: + * Error message string. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static CONST char* DyldOFIErrorMsg(int err) { + CONST char *ofi_msg = NULL; + + if (err != NSObjectFileImageSuccess) { + switch(err) { + case NSObjectFileImageFailure: + ofi_msg = "object file setup failure"; + break; + case NSObjectFileImageInappropriateFile: + ofi_msg = "not a Mach-O MH_BUNDLE file"; + break; + case NSObjectFileImageArch: + ofi_msg = "no object for this architecture"; + break; + case NSObjectFileImageFormat: + ofi_msg = "bad object file format"; + break; + case NSObjectFileImageAccess: + ofi_msg = "can't read object file"; + break; + default: + ofi_msg = "unknown error"; + break; + } + } + return ofi_msg; +} + /* *---------------------------------------------------------------------- * @@ -61,6 +115,8 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) { Tcl_DyldLoadHandle *dyldLoadHandle; CONST struct mach_header *dyld_lib; + NSObjectFileImage dyld_ofi = NULL; + Tcl_DyldModuleHandle *dyldModuleHandle = NULL; CONST char *native; /* @@ -74,32 +130,66 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) NSADDIMAGE_OPTION_RETURN_ON_ERROR); if (!dyld_lib) { - /* - * Let the OS loader examine the binary search path for - * whatever string the user gave us which hopefully refers - * to a file on the binary path - */ - Tcl_DString ds; - char *fileName = Tcl_GetString(pathPtr); - native = Tcl_UtfToExternalDString(NULL, fileName, -1, &ds); - dyld_lib = NSAddImage(native, - NSADDIMAGE_OPTION_WITH_SEARCHING | - NSADDIMAGE_OPTION_RETURN_ON_ERROR); - Tcl_DStringFree(&ds); - } - - if (!dyld_lib) { NSLinkEditErrors editError; - CONST char *name, *msg; + CONST char *name, *msg, *ofi_msg = NULL; + NSLinkEditError(&editError, &errno, &name, &msg); - Tcl_AppendResult(interp, msg, (char *) NULL); - return TCL_ERROR; + if (editError == NSLinkEditFileAccessError) { + /* The requested file was not found: + * let the OS loader examine the binary search path for + * whatever string the user gave us which hopefully refers + * to a file on the binary path + */ + Tcl_DString ds; + char *fileName = Tcl_GetString(pathPtr); + CONST char *native = Tcl_UtfToExternalDString(NULL, fileName, -1, &ds); + dyld_lib = NSAddImage(native, + NSADDIMAGE_OPTION_WITH_SEARCHING | + NSADDIMAGE_OPTION_RETURN_ON_ERROR); + Tcl_DStringFree(&ds); + if (!dyld_lib) { + NSLinkEditError(&editError, &errno, &name, &msg); + } + } else if ((editError == NSLinkEditFileFormatError && errno == EBADMACHO)) { + /* The requested file was found but was not of type MH_DYLIB, + * attempt to load it as a MH_BUNDLE: */ + NSObjectFileImageReturnCode err; + err = NSCreateObjectFileImageFromFile(native, &dyld_ofi); + ofi_msg = DyldOFIErrorMsg(err); + } + if (!dyld_lib && !dyld_ofi) { + Tcl_AppendResult(interp, msg, (char *) NULL); + if (ofi_msg) { + Tcl_AppendResult(interp, "NSCreateObjectFileImageFromFile() error: ", + ofi_msg, (char *) NULL); + } + return TCL_ERROR; + } } + if (dyld_ofi) { + NSModule module; + module = NSLinkModule(dyld_ofi, native, NSLINKMODULE_OPTION_BINDNOW | + NSLINKMODULE_OPTION_RETURN_ON_ERROR); + NSDestroyObjectFileImage(dyld_ofi); + if (module) { + dyldModuleHandle = (Tcl_DyldModuleHandle *) + ckalloc(sizeof(Tcl_DyldModuleHandle)); + if (!dyldModuleHandle) return TCL_ERROR; + dyldModuleHandle->module = module; + dyldModuleHandle->nextModuleHandle = NULL; + } else { + NSLinkEditErrors editError; + CONST char *name, *msg; + NSLinkEditError(&editError, &errno, &name, &msg); + Tcl_AppendResult(interp, msg, (char *) NULL); + return TCL_ERROR; + } + } dyldLoadHandle = (Tcl_DyldLoadHandle *) ckalloc(sizeof(Tcl_DyldLoadHandle)); if (!dyldLoadHandle) return TCL_ERROR; dyldLoadHandle->dyld_lib = dyld_lib; - dyldLoadHandle->firstModuleHandle = NULL; + dyldLoadHandle->firstModuleHandle = dyldModuleHandle; *loadHandle = (Tcl_LoadHandle) dyldLoadHandle; *unloadProcPtr = &TclpUnloadFile; return TCL_OK; @@ -134,35 +224,54 @@ TclpFindSymbol(interp, loadHandle, symbol) /* * dyld adds an underscore to the beginning of symbol names. */ - native = Tcl_UtfToExternalDString(NULL, symbol, -1, &ds); Tcl_DStringInit(&newName); Tcl_DStringAppend(&newName, "_", 1); native = Tcl_DStringAppend(&newName, native, -1); - nsSymbol = NSLookupSymbolInImage(dyldLoadHandle->dyld_lib, native, - NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW | - NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR); - if(nsSymbol) { - Tcl_DyldModuleHandle *dyldModuleHandle; - proc = NSAddressOfSymbol(nsSymbol); - dyldModuleHandle = (Tcl_DyldModuleHandle *) ckalloc(sizeof(Tcl_DyldModuleHandle)); - if (dyldModuleHandle) { - dyldModuleHandle->module = NSModuleForSymbol(nsSymbol); - dyldModuleHandle->nextModuleHandle = dyldLoadHandle->firstModuleHandle; - dyldLoadHandle->firstModuleHandle = dyldModuleHandle; - } + if (dyldLoadHandle->dyld_lib) { + nsSymbol = NSLookupSymbolInImage(dyldLoadHandle->dyld_lib, native, + NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW | + NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR); + if(nsSymbol) { + /* until dyld supports unloading of MY_DYLIB binaries, the + * following is not needed: */ +#ifdef DYLD_SUPPORTS_DYLIB_UNLOADING + NSModule module = NSModuleForSymbol(nsSymbol); + Tcl_DyldModuleHandle *dyldModuleHandle = dyldLoadHandle->firstModuleHandle; + while (dyldModuleHandle) { + if (module == dyldModuleHandle->module) break; + dyldModuleHandle = dyldModuleHandle->nextModuleHandle; + } + if (!dyldModuleHandle) { + dyldModuleHandle = (Tcl_DyldModuleHandle *) + ckalloc(sizeof(Tcl_DyldModuleHandle)); + if (dyldModuleHandle) { + dyldModuleHandle->module = module; + dyldModuleHandle->nextModuleHandle = + dyldLoadHandle->firstModuleHandle; + dyldLoadHandle->firstModuleHandle = dyldModuleHandle; + } + } +#endif /* DYLD_SUPPORTS_DYLIB_UNLOADING */ + } else { + NSLinkEditErrors editError; + CONST char *name, *msg; + NSLinkEditError(&editError, &errno, &name, &msg); + Tcl_AppendResult(interp, msg, (char *) NULL); + } } else { - NSLinkEditErrors editError; - CONST char *name, *msg; - NSLinkEditError(&editError, &errno, &name, &msg); - Tcl_AppendResult(interp, msg, (char *) NULL); + nsSymbol = NSLookupSymbolInModule(dyldLoadHandle->firstModuleHandle->module, + native); + } + if(nsSymbol) { + proc = NSAddressOfSymbol(nsSymbol); } Tcl_DStringFree(&newName); Tcl_DStringFree(&ds); return proc; } - + /* *---------------------------------------------------------------------- * @@ -177,7 +286,8 @@ TclpFindSymbol(interp, loadHandle, symbol) * * Side effects: * Code dissapears from memory. - * Note that this is a no-op on older (OpenStep) versions of dyld. + * Note that dyld currently only supports unloading of binaries of + * type MH_BUNDLE loaded with NSLinkModule() in TclpDlopen() above. * *---------------------------------------------------------------------- */ @@ -194,14 +304,15 @@ TclpUnloadFile(loadHandle) void *ptr; while (dyldModuleHandle) { - NSUnLinkModule(dyldModuleHandle->module, NSUNLINKMODULE_OPTION_NONE); + NSUnLinkModule(dyldModuleHandle->module, + NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES); ptr = dyldModuleHandle; dyldModuleHandle = dyldModuleHandle->nextModuleHandle; ckfree(ptr); } ckfree((char*) dyldLoadHandle); } - + /* *---------------------------------------------------------------------- * @@ -231,3 +342,132 @@ TclGuessPackageName(fileName, bufPtr) { return 0; } + +#ifdef TCL_LOAD_FROM_MEMORY +/* + *---------------------------------------------------------------------- + * + * TclpLoadMemoryGetBuffer -- + * + * Allocate a buffer that can be used with TclpLoadMemory() below. + * + * Results: + * Pointer to allocated buffer or NULL if an error occurs. + * + * Side effects: + * Buffer is allocated. + * + *---------------------------------------------------------------------- + */ + +void* +TclpLoadMemoryGetBuffer(interp, size) + Tcl_Interp *interp; /* Used for error reporting. */ + int size; /* Size of desired buffer */ +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + void * buffer = NULL; + + if (!tsdPtr->haveLoadMemory) { + /* NSCreateObjectFileImageFromMemory is available but always + * fails prior to Darwin 7 */ + struct utsname name; + if (!uname(&name)) { + long release = strtol(name.release, NULL, 10); + tsdPtr->haveLoadMemory = (release >= 7) ? 1 : -1; + } + } + if (tsdPtr->haveLoadMemory > 0) { + /* We must allocate the buffer using vm_allocate, because + * NSCreateObjectFileImageFromMemory will dispose of it + * using vm_deallocate. + */ + int err = vm_allocate(mach_task_self(), + (vm_address_t*)&buffer, size, 1); + if (err) { + buffer = NULL; + } + } + return buffer; +} + +/* + *---------------------------------------------------------------------- + * + * TclpLoadMemory -- + * + * Dynamically loads binary code file from memory and returns + * a handle to the new code. + * + * Results: + * A standard Tcl completion code. If an error occurs, an error + * message is left in the interpreter's result. + * + * Side effects: + * New code is loaded from memory. + * + *---------------------------------------------------------------------- + */ + +int +TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) + Tcl_Interp *interp; /* Used for error reporting. */ + void *buffer; /* Buffer containing the desired code + * (allocated with TclpLoadMemoryGetBuffer). */ + int size; /* Allocation size of buffer. */ + int codeSize; /* Size of code data read into buffer or -1 if + * an error occurred and the buffer should + * just be freed. */ + Tcl_LoadHandle *loadHandle; /* Filled with token for dynamically loaded + * file which will be passed back to + * (*unloadProcPtr)() to unload the file. */ + Tcl_FSUnloadFileProc **unloadProcPtr; + /* Filled with address of Tcl_FSUnloadFileProc + * function which should be used for + * this file. */ +{ + Tcl_DyldLoadHandle *dyldLoadHandle; + NSObjectFileImage dyld_ofi = NULL; + Tcl_DyldModuleHandle *dyldModuleHandle; + CONST char *ofi_msg = NULL; + + if (codeSize >= 0) { + NSObjectFileImageReturnCode err; + err = NSCreateObjectFileImageFromMemory(buffer, codeSize, &dyld_ofi); + ofi_msg = DyldOFIErrorMsg(err); + } + if (!dyld_ofi) { + vm_deallocate(mach_task_self(), (vm_address_t) buffer, size); + if (ofi_msg) { + Tcl_AppendResult(interp, "NSCreateObjectFileImageFromFile() error: ", + ofi_msg, (char *) NULL); + } + return TCL_ERROR; + } else { + NSModule module; + module = NSLinkModule(dyld_ofi, "[Memory Based Bundle]", + NSLINKMODULE_OPTION_BINDNOW |NSLINKMODULE_OPTION_RETURN_ON_ERROR); + NSDestroyObjectFileImage(dyld_ofi); + if (module) { + dyldModuleHandle = (Tcl_DyldModuleHandle *) + ckalloc(sizeof(Tcl_DyldModuleHandle)); + if (!dyldModuleHandle) return TCL_ERROR; + dyldModuleHandle->module = module; + dyldModuleHandle->nextModuleHandle = NULL; + } else { + NSLinkEditErrors editError; + CONST char *name, *msg; + NSLinkEditError(&editError, &errno, &name, &msg); + Tcl_AppendResult(interp, msg, (char *) NULL); + return TCL_ERROR; + } + } + dyldLoadHandle = (Tcl_DyldLoadHandle *) ckalloc(sizeof(Tcl_DyldLoadHandle)); + if (!dyldLoadHandle) return TCL_ERROR; + dyldLoadHandle->dyld_lib = NULL; + dyldLoadHandle->firstModuleHandle = dyldModuleHandle; + *loadHandle = (Tcl_LoadHandle) dyldLoadHandle; + *unloadProcPtr = &TclpUnloadFile; + return TCL_OK; +} +#endif -- cgit v0.12 From 1f8ced7c37e71e5e0c6563a50e8aa53ea2242fa5 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 24 May 2005 04:20:05 +0000 Subject: * macosx/Makefile: * macosx/README: * macosx/Tcl-Info.plist.in (new file): * unix/Makefile.in: * unix/configure.in: * unix/tcl.m4: * unix/tclUnixInit.c: moved all Darwin framework build support from macosx/Makefile into the standard unix configure/make buildsystem, the macosx/Makefile is no longer required to build Tcl.framework (but its functionality is still available for backwards compatibility). * unix/configure: autoconf-2.13 --- ChangeLog | 27 ++ macosx/Makefile | 199 ++++------ macosx/README | 14 +- macosx/Tcl-Info.plist.in | 27 ++ unix/Makefile.in | 93 +++-- unix/configure | 928 +++++++++++++++++++++++++---------------------- unix/configure.in | 114 ++++-- unix/tcl.m4 | 3 +- unix/tclUnixInit.c | 27 +- 9 files changed, 801 insertions(+), 631 deletions(-) create mode 100644 macosx/Tcl-Info.plist.in diff --git a/ChangeLog b/ChangeLog index 9dd987f..c9f5365 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +2005-05-24 Daniel Steffen + + * macosx/Makefile: + * macosx/README: + * macosx/Tcl-Info.plist.in (new file): + * unix/Makefile.in: + * unix/configure.in: + * unix/tcl.m4: + * unix/tclUnixInit.c: moved all Darwin framework build support from + macosx/Makefile into the standard unix configure/make buildsystem, the + macosx/Makefile is no longer required to build Tcl.framework (but its + functionality is still available for backwards compatibility). + * unix/configure: autoconf-2.13 + + * generic/tclIOUtil.c (TclLoadFile): + * generic/tclInt.h: + * unix/tcl.m4: + * unix/tclLoadDyld.c: added support for [load]ing .bundle binaries in + addition to .dylib's: .bundle's can be [unload]ed (unlike .dylib's), + and can be [load]ed from memory, e.g. directly from VFS without + needing to be written out to a temporary location first. [Bug 1202209] + * unix/configure: autoconf-2.13 + + * generic/tclCmdMZ.c (Tcl_TimeObjCmd): change [time] called with a + count > 1 to return a string with a float value instead of a rounded + off integer. [Bug 1202178] + 2005-05-20 Zoran Vasiljevic * generic/tclParseExpr.c: removed unreferenced stack variable "errMsg" diff --git a/macosx/Makefile b/macosx/Makefile index 6458cb1..7883d12 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -1,9 +1,10 @@ ######################################################################################################## # -# Makefile to build Tcl on Mac OS X packaged as a Framework -# uses standard unix build system in tcl/unix +# Makefile wrapper to build tcl on Mac OS X in a way compatible with the tk/macosx Xcode buildsystem +# uses the standard unix build system in tcl/unix (which can be used directly instead of this +# if you are not using the tk/macosx projects). # -# RCS: @(#) $Id: Makefile,v 1.5.2.10 2004/11/19 06:29:23 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.11 2005/05/24 04:20:08 das Exp $ # ######################################################################################################## @@ -21,17 +22,14 @@ EXTRA_CONFIGURE_ARGS ?= EXTRA_MAKE_ARGS ?= INSTALL_PATH ?= /Library/Frameworks -PREFIX ?= /usr +PREFIX ?= /usr/local BINDIR ?= ${PREFIX}/bin +LIBDIR ?= ${INSTALL_PATH} MANDIR ?= ${PREFIX}/man # set to non-empty value to install manpages in addition to html help: INSTALL_MANPAGES ?= -TCL_PACKAGE_PATH ?= "~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl \ - ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks \ - /System/Library/Frameworks" - #------------------------------------------------------------------------------------------------------- # meta targets @@ -48,7 +46,7 @@ install-%: action := install- embedded := ${styles:%=embedded-%} embedded : embedded-deploy -install-embedded := $(embedded:%=install-%) +install-embedded := ${embedded:%=install-%} install-embedded : install-embedded-deploy clean := ${styles:%=clean-%} @@ -67,15 +65,17 @@ targets := $(foreach v,${meta},${$v}) #------------------------------------------------------------------------------------------------------- # build styles +BUILD_STYLE = +CONFIGURE_ARGS = +OBJ_DIR = ${OBJROOT}/${BUILD_STYLE} + develop_make_args := BUILD_STYLE=Development CONFIGURE_ARGS=--enable-symbols -deploy_make_args := BUILD_STYLE=Deployment \ - MAKE_ARGS=INSTALL_PROGRAM="'$$\$${INSTALL} $$\$${INSTALL_STRIP_PROGRAM}'" \ - MAKE_ARGS+=INSTALL_LIBRARY="'$$\$${INSTALL} $$\$${INSTALL_STRIP_LIBRARY}'" \ - MAKE_ARGS+=MEM_DEBUG_FLAGS="-DNDEBUG" +deploy_make_args := BUILD_STYLE=Deployment INSTALL_TARGET=install-strip \ + GENERIC_FLAGS=-DNDEBUG embedded_make_args := EMBEDDED_BUILD=1 install_make_args := INSTALL_BUILD=1 -$(targets): +${targets}: ${MAKE} ${action}${PROJECT} \ $(foreach s,${styles} embedded install,$(if $(findstring $s,$@),${${s}_make_args})) @@ -86,37 +86,36 @@ PROJECT := tcl PRODUCT_NAME := Tcl UNIX_DIR := ${CURDIR}/../unix -GENERIC_DIR := ${CURDIR}/../generic +VERSION := $(shell awk -F= '/^TCL_VERSION/ {print $$2; nextfile}' ${UNIX_DIR}/configure.in) +TCLSH := tclsh${VERSION} -PRODUCT_VERSION := $(shell eval $$(grep '^TCL_VERSION=' ${UNIX_DIR}/configure.in); \ - echo "$${TCL_VERSION}") -PRODUCT_LONGVERSION := $(shell eval $$(grep '^TCL_PATCH_LEVEL=' ${UNIX_DIR}/configure.in); \ - echo "${PRODUCT_VERSION}$${TCL_PATCH_LEVEL}") -YEAR := $(shell date +%Y) +BUILD_TARGET := tclsh tcltest +INSTALL_TARGET := install -PRIVATE_HEADERS := tclInt.h tclIntDecls.h tclIntPlatDecls.h tclMath.h -TARGETS := tclsh tcltest -TCLSH := tclsh${PRODUCT_VERSION} -TCL_EXE ?= ${SYMROOT}/${TCLSH} +export CPPROG := cp -p -DYLIB_INSTALL_PATH ?= ${INSTALL_PATH} +INSTALL_TARGETS = install-binaries install-libraries +ifeq (${EMBEDDED_BUILD},) +INSTALL_TARGETS += install-private-headers +endif +ifeq (${INSTALL_BUILD}_${EMBEDDED_BUILD}_${BUILD_STYLE},1__Deployment) +INSTALL_TARGETS += html-tcl +ifneq (${INSTALL_MANPAGES},) +INSTALL_TARGETS += install-doc +endif +endif -LIBDIR := ${INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${PRODUCT_VERSION} -DYLIB_INSTALL_DIR := ${DYLIB_INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${PRODUCT_VERSION} -INCLUDEDIR := ${LIBDIR}/Headers -PRIVATEINCLUDEDIR := ${LIBDIR}/PrivateHeaders -SCRIPTDIR := ${LIBDIR}/Resources/Scripts -DOCDIR := ${LIBDIR}/Resources/Documentation/Reference -INFOPLIST := ${LIBDIR}/Resources/Info.plist +MAKE_VARS := INSTALL_ROOT INSTALL_TARGETS VERSION GENERIC_FLAGS +MAKE_ARGS_V = $(foreach v,${MAKE_VARS},$v='${$v}') -BUILD_STYLE = -OBJ_DIR = ${OBJROOT}/${BUILD_STYLE} +build-${PROJECT}: target = ${TARGET} +install-${PROJECT}: target = ${INSTALL_TARGET} +clean-${PROJECT} distclean-${PROJECT} test-${PROJECT}: \ + target = $* -${PROJECT}: override INSTALL_ROOT = ${OBJ_DIR}/ +DO_MAKE = +${MAKE} -C ${OBJ_DIR} ${target} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} -MAKE_VARS := INSTALL_ROOT TCL_PACKAGE_PATH DYLIB_INSTALL_DIR -MAKE_ARGS_V = $(foreach v,${MAKE_VARS},$v=${$v}) -export CPPROG := cp -p +${PROJECT}: override INSTALL_ROOT := ${OBJ_DIR}/ #------------------------------------------------------------------------------------------------------- # build rules @@ -126,109 +125,65 @@ ${PROJECT}: install-${PROJECT} ${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && ${UNIX_DIR}/configure \ --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} \ - --includedir=${INCLUDEDIR} --mandir=${MANDIR} --enable-threads \ - --enable-framework ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} - cd ${OBJ_DIR} && mkdir -p ${PRODUCT_NAME}.framework && \ - ln -fs ../${PRODUCT_NAME} ${PRODUCT_NAME}.framework/${PRODUCT_NAME} + --mandir=${MANDIR} --enable-threads --enable-framework \ + ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} build-${PROJECT}: ${OBJ_DIR}/Makefile - ${MAKE} -C ${OBJ_DIR} ${TARGETS} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} +ifeq (${EMBEDDED_BUILD}_${INSTALL_ROOT},1_) + @echo "Cannot install-embedded with empty INSTALL_ROOT !" && false +else + @rm -rf "${INSTALL_ROOT}/${LIBDIR}/Tcl.framework" +endif + ${DO_MAKE} # symolic link hackery to trick # 'make install INSTALL_ROOT=${OBJ_DIR}' # into building Tcl.framework and tclsh in ${SYMROOT} - cd ${OBJ_DIR}; mkdir -p $(dir ./${INSTALL_PATH}) $(dir ./${BINDIR}) ${SYMROOT}; \ - rm -f ./${INSTALL_PATH}; ln -fs ${SYMROOT} ./${INSTALL_PATH}; \ - rm -f ./${BINDIR}; ln -fs ${SYMROOT} ./${BINDIR}; \ - ln -fs ${OBJ_DIR}/tcltest ${SYMROOT} - -clean-${PROJECT}: - ${MAKE} -C ${OBJ_DIR} clean ${EXTRA_MAKE_ARGS} - -distclean-${PROJECT}: - ${MAKE} -C ${OBJ_DIR} distclean ${EXTRA_MAKE_ARGS} - rm -rf ${OBJ_DIR} ${PRODUCT_NAME}.framework tclsh${PRODUCT_VERSION} tcltest - -test-${PROJECT}: build-${PROJECT} - ${MAKE} -C ${OBJ_DIR} test ${EXTRA_MAKE_ARGS} + @cd ${OBJ_DIR} && mkdir -p $(dir ./${LIBDIR}) $(dir ./${BINDIR}) ${SYMROOT} && \ + rm -f ./${LIBDIR} ./${BINDIR} && ln -fs ${SYMROOT} ./${LIBDIR} && \ + ln -fs ${SYMROOT} ./${BINDIR} && ln -fs ${OBJ_DIR}/tcltest ${SYMROOT} install-${PROJECT}: build-${PROJECT} -# install to ${INSTALL_ROOT} with optional stripping - ${MAKE} -C ${OBJ_DIR} install-binaries install-libraries \ - SCRIPT_INSTALL_DIR=${INSTALL_ROOT}${SCRIPTDIR} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} - mkdir -p ${INSTALL_ROOT}${PRIVATEINCLUDEDIR} && \ - cd ${GENERIC_DIR} && ${CPPROG} ${PRIVATE_HEADERS} ${INSTALL_ROOT}${PRIVATEINCLUDEDIR} -ifeq (${BUILD_STYLE},Development) -# keep copy of debug library around, so that -# Deployment build can be installed on top -# of Development build without overwriting -# the debug library - cd ${INSTALL_ROOT}${LIBDIR} && ln -f "${PRODUCT_NAME}" "${PRODUCT_NAME}_debug" -endif -# fixup Framework structure - cd ${INSTALL_ROOT}${LIBDIR}/.. && \ - rm -f Current && ln -fs ${PRODUCT_VERSION} Current && \ - cd .. && ln -fs Versions/Current/* . && \ - ln -fs Versions/${PRODUCT_VERSION}/lib*stub* . + ${DO_MAKE} ifeq (${INSTALL_BUILD},1) ifeq (${EMBEDDED_BUILD},1) # if we are embedding frameworks, don't install tclsh - rm -f "${INSTALL_ROOT}${BINDIR}/${TCLSH}" - -rmdir -p "${INSTALL_ROOT}${BINDIR}" 2>&- + @rm -f "${INSTALL_ROOT}${BINDIR}/${TCLSH}" && \ + rmdir -p "${INSTALL_ROOT}${BINDIR}" 2>&- || true else # redo prebinding - cd ${INSTALL_ROOT}/; \ - if [ ! -d usr/lib ]; then mkdir -p usr; ln -fs /usr/lib usr/; RM_USRLIB=1; fi; \ - if [ ! -d System ]; then ln -fs /System .; RM_SYSTEM=1; fi; \ + @cd ${INSTALL_ROOT}/ && \ + if [ ! -d usr/lib ]; then mkdir -p usr && ln -fs /usr/lib usr/ && RM_USRLIB=1; fi; \ + if [ ! -d System ]; then ln -fs /System . && RM_SYSTEM=1; fi; \ + redo_prebinding -r . "./${LIBDIR}/${PRODUCT_NAME}.framework/Versions/${VERSION}/${PRODUCT_NAME}"; \ redo_prebinding -r . "./${BINDIR}/${TCLSH}"; \ if [ -n "$${RM_USRLIB:-}" ]; then rm -f usr/lib; rmdir -p usr 2>&-; fi; \ if [ -n "$${RM_SYSTEM:-}" ]; then rm -f System; fi # install tclsh symbolic link - ln -fs ${TCLSH} ${INSTALL_ROOT}${BINDIR}/tclsh -ifeq (${BUILD_STYLE},Deployment) -ifneq (${INSTALL_MANPAGES},) -# install manpages - ${MAKE} -C ${OBJ_DIR} install-doc ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} -endif -# build html documentation - export DYLD_FRAMEWORK_PATH=${SYMROOT} && \ - ${MAKE} -C ${OBJ_DIR} html-tcl ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} \ - DISTDIR=${INSTALL_ROOT}${DOCDIR} TCL_EXE=${TCL_EXE} && \ - cd ${INSTALL_ROOT}${DOCDIR} && ln -fs contents.htm html/${PRODUCT_NAME}TOC.html && \ - rm -fr "${PRODUCT_NAME}" && mv -f html "${PRODUCT_NAME}" + @ln -fs ${TCLSH} ${INSTALL_ROOT}${BINDIR}/tclsh endif endif +ifeq (${BUILD_STYLE}_${EMBEDDED_BUILD},Development_) +# keep copy of debug library around, so that +# Deployment build can be installed on top +# of Development build without overwriting +# the debug library + @cd ${INSTALL_ROOT}${LIBDIR}/${PRODUCT_NAME}.framework/Versions/${VERSION} && \ + ln -f "${PRODUCT_NAME}" "${PRODUCT_NAME}_debug" endif -# write Info.plist file - @printf > ${INSTALL_ROOT}${INFOPLIST} '\ - \n\ - \n\ - \n\ - \n\ - CFBundleDevelopmentRegion\n\ - English\n\ - CFBundleExecutable\n\ - Tcl\n\ - CFBundleGetInfoString\n\ - Tcl Library ${PRODUCT_VERSION}, Copyright © ${YEAR} Tcl Core Team.\n\ - MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright\ - © 2001-2002, Apple Computer, Inc.\n\ - CFBundleIdentifier\n\ - com.tcltk.tcllibrary\n\ - CFBundleInfoDictionaryVersion\n\ - 6.0\n\ - CFBundleName\n\ - Tcl Library ${PRODUCT_VERSION}\n\ - CFBundlePackageType\n\ - FMWK\n\ - CFBundleShortVersionString\n\ - ${PRODUCT_LONGVERSION}\n\ - CFBundleSignature\n\ - Tcl \n\ - CFBundleVersion\n\ - ${PRODUCT_LONGVERSION}\n\ - \n\ - \n' + +clean-${PROJECT}: %-${PROJECT}: + ${DO_MAKE} + rm -rf ${SYMROOT}/{${PRODUCT_NAME}.framework,${TCLSH},tcltest} + rm -f ${OBJ_DIR}{${LIBDIR},${BINDIR}} && \ + rmdir -p ${OBJ_DIR}$(dir ${LIBDIR}) 2>&- || true && \ + rmdir -p ${OBJ_DIR}$(dir ${BINDIR}) 2>&- || true + +distclean-${PROJECT}: %-${PROJECT}: clean-${PROJECT} + ${DO_MAKE} + rm -rf ${OBJ_DIR} + +test-${PROJECT}: %-${PROJECT}: build-${PROJECT} + ${DO_MAKE} #------------------------------------------------------------------------------------------------------- diff --git a/macosx/README b/macosx/README index 348f14b..7c0d4ee 100644 --- a/macosx/README +++ b/macosx/README @@ -1,7 +1,7 @@ Tcl MacOSX README ----------------- -RCS: @(#) $Id: README,v 1.1.2.2 2005/04/09 15:39:23 das Exp $ +RCS: @(#) $Id: README,v 1.1.2.3 2005/05/24 04:20:08 das Exp $ This is the README file for the Mac OS X native version of Tcl (framework build). @@ -77,8 +77,12 @@ that came with OSX preinstalled. It can also be downloaded from http://connect.apple.com (after you register for free ADC membership). - Tcl is built as a Mac OS X framework via the Makefile in tcl/macosx, but can -also be built from Apple's ProjectBuilder IDE using the Tcl.pbproj project (which -calls through to the Makefile). +but can also be built directly with the standard unix configure and make +buildsystem in tcl/unix. + +- It is still possible to build with Apple's Xcode IDE using the Tcl.pbproj +project but this is not recommended anymore (currently Tcl.pbproj calls through +to the tcl/macosx/Makefile so there should be no build differences). - Unpack the tcl source release archive. @@ -94,9 +98,7 @@ set ${ver} to the empty string instead: set ver="" ;: if your shell is csh ver="" ;: if your shell is sh -- If you're only interested in _building_ Tcl.framework and don't plan on doing -development with the ProjectBuilder projects, using the Makefile is easiest. -The following steps will build Tcl from the Terminal, assuming you are +- The following steps will build Tcl from the Terminal, assuming you are located in the directory containing the tcl source tree: make -C tcl${ver}/macosx and the following will then install Tcl onto the root volume (admin password diff --git a/macosx/Tcl-Info.plist.in b/macosx/Tcl-Info.plist.in new file mode 100644 index 0000000..b942956 --- /dev/null +++ b/macosx/Tcl-Info.plist.in @@ -0,0 +1,27 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + @TCL_LIB_FILE@ + CFBundleGetInfoString + Tcl Library @TCL_VERSION@, Copyright © @TCL_YEAR@ Tcl Core Team. +Initial MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright © 2001-2002, Apple Computer, Inc. + CFBundleIdentifier + com.tcltk.tcllibrary + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Tcl Library @TCL_VERSION@ + CFBundlePackageType + FMWK + CFBundleShortVersionString + @TCL_VERSION@@TCL_PATCH_LEVEL@ + CFBundleSignature + Tcl + CFBundleVersion + @TCL_VERSION@@TCL_PATCH_LEVEL@ + + diff --git a/unix/Makefile.in b/unix/Makefile.in index ff89291..53169e6 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.12 2005/05/14 20:52:31 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.13 2005/05/24 04:20:08 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -38,10 +38,10 @@ mandir = @mandir@ # to be different than those used for actually reference files at # run-time. INSTALL_ROOT is prepended to $prefix and $exec_prefix # when installing files. -INSTALL_ROOT = +INSTALL_ROOT = $(DESTDIR) # Path for the platform independent Tcl scripting libraries: -TCL_LIBRARY = $(prefix)/lib/tcl$(VERSION) +TCL_LIBRARY = @TCL_LIBRARY@ # Path to use at runtime to refer to LIB_INSTALL_DIR: LIB_RUNTIME_DIR = $(libdir) @@ -58,6 +58,12 @@ SCRIPT_INSTALL_DIR = $(INSTALL_ROOT)$(TCL_LIBRARY) # Directory in which to install the include file tcl.h: INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir) +# Path to the private tcl header dir: +PRIVATE_INCLUDE_DIR = @PRIVATE_INCLUDE_DIR@ + +# Directory in which to (optionally) install the private tcl headers: +PRIVATE_INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(PRIVATE_INCLUDE_DIR) + # Top-level directory in which to install manual entries: MAN_INSTALL_DIR = $(INSTALL_ROOT)$(mandir) @@ -72,6 +78,12 @@ MAN3_INSTALL_DIR = $(MAN_INSTALL_DIR)/man3 # Tcl commands: MANN_INSTALL_DIR = $(MAN_INSTALL_DIR)/mann +# Path to the html documentation dir: +HTML_DIR = @HTML_DIR@ + +# Directory in which to install html documentation: +HTML_INSTALL_DIR = $(INSTALL_ROOT)$(HTML_DIR) + # Package search path. TCL_PACKAGE_PATH = @TCL_PACKAGE_PATH@ @@ -170,7 +182,7 @@ SHELL = /bin/sh # with the distribution, which is slower but guaranteed to work. INSTALL_STRIP_PROGRAM = -s -INSTALL_STRIP_LIBRARY = -S -S +INSTALL_STRIP_LIBRARY = -S -S INSTALL = @srcdir@/install-sh -c INSTALL_PROGRAM = ${INSTALL} @@ -242,11 +254,11 @@ AC_FLAGS = @DEFS@ AR = @AR@ RANLIB = @RANLIB@ SRC_DIR = @srcdir@ -TOP_DIR = @srcdir@/.. +TOP_DIR = $(SRC_DIR)/.. GENERIC_DIR = $(TOP_DIR)/generic COMPAT_DIR = $(TOP_DIR)/compat TOOL_DIR = $(TOP_DIR)/tools -UNIX_DIR = $(TOP_DIR)/unix +UNIX_DIR = $(SRC_DIR) MAC_OSX_DIR = $(TOP_DIR)/macosx # Must be absolute because of the cd dltest $(DLTEST_DIR)/configure below. DLTEST_DIR = @TCL_SRC_DIR@/unix/dltest @@ -258,7 +270,7 @@ CC = @CC@ # Flags to be passed to installManPage to control whether the manpages # should be compressed and linked with softlinks -MAN_FLAGS = @MAN_FLAGS@ +MAN_FLAGS = @MAN_FLAGS@ #---------------------------------------------------------------- # The information below is usually usable as is. The configure @@ -280,19 +292,19 @@ CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \ -I${GENERIC_DIR} -I${SRC_DIR} \ ${AC_FLAGS} ${MATH_FLAGS} ${GENERIC_FLAGS} ${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} \ ${COMPILE_DEBUG_FLAGS} ${NO_DEPRECATED_FLAGS} ${ENV_FLAGS} \ --DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\" +-DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\" @EXTRA_CC_SWITCHES@ STUB_CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \ -I${GENERIC_DIR} -I${SRC_DIR} \ ${AC_FLAGS} ${MATH_FLAGS} ${GENERIC_FLAGS} ${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} \ -${COMPILE_DEBUG_FLAGS} ${ENV_FLAGS} -DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\" +${COMPILE_DEBUG_FLAGS} ${ENV_FLAGS} -DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\" @EXTRA_CC_SWITCHES@ LIBS = @DL_LIBS@ @LIBS@ $(MATH_LIBS) DEPEND_SWITCHES = ${CFLAGS} -I${GENERIC_DIR} -I${SRC_DIR} \ ${AC_FLAGS} ${MATH_FLAGS} \ ${GENERIC_FLAGS} ${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} \ --DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\" +-DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\" @EXTRA_CC_SWITCHES@ TCLSH_OBJS = tclAppInit.o @@ -501,46 +513,46 @@ tcltest-real: # % make test TESTFLAGS="-verbose bps -file fileName.test" test: tcltest - @LD_LIBRARY_PATH_VAR@=`pwd`:${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ + @LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \ ./tcltest $(TOP_DIR)/tests/all.tcl $(TESTFLAGS) $(TCLTESTARGS) # Useful target to launch a built tcltest with the proper path,... runtest: tcltest - @LD_LIBRARY_PATH_VAR@=`pwd`:${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ + @LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \ ./tcltest # Useful target for running the test suite with an unwritable current # directory... ro-test: tcltest - @LD_LIBRARY_PATH_VAR@=`pwd`:${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ + @LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \ echo 'exec chmod -w .;package require tcltest;tcltest::temporaryDirectory /tmp;source ../tests/all.tcl;exec chmod +w .' | ./tcltest # This target can be used to run tclsh from the build directory # via `make shell SCRIPT=/tmp/foo.tcl` shell: tclsh - @@LD_LIBRARY_PATH_VAR@=`pwd`:${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ + @LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \ ./tclsh $(SCRIPT) # This target can be used to run tclsh inside either gdb or insight gdb: tclsh - @echo "set env @LD_LIBRARY_PATH_VAR@=`pwd`:${@LD_LIBRARY_PATH_VAR@}" > gdb.run + @echo "set env @LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}" > gdb.run @echo "set env TCL_LIBRARY=${TCL_BUILDTIME_LIBRARY}" >> gdb.run $(GDB) ./tclsh --command=gdb.run rm gdb.run # This target can be used to run tclsh inside ddd ddd: tclsh - @echo "set env @LD_LIBRARY_PATH_VAR@=`pwd`:${@LD_LIBRARY_PATH_VAR@}" > gdb.run + @echo "set env @LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}" > gdb.run @echo "set env TCL_LIBRARY=${TCL_BUILDTIME_LIBRARY}" >> gdb.run $(DDD) -command=gdb.run ./tclsh rm gdb.run valgrind: tclsh tcltest - @LD_LIBRARY_PATH_VAR@=`pwd`:${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ + @LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \ valgrind --num-callers=8 --leak-resolution=high -v --leak-check=yes --show-reachable=yes $(VALGRINDARGS) ./tcltest $(TOP_DIR)/tests/all.tcl -singleproc 1 $(TESTFLAGS) $(TCLTESTARGS) @@ -579,10 +591,12 @@ gendate: dltest.marker: cd dltest ; $(MAKE) -install: install-binaries install-libraries install-doc +INSTALL_TARGETS = install-binaries install-libraries install-doc @EXTRA_INSTALL@ + +install: $(INSTALL_TARGETS) install-strip: - $(MAKE) install \ + $(MAKE) $(INSTALL_TARGETS) \ INSTALL_PROGRAM="$(INSTALL_PROGRAM) ${INSTALL_STRIP_PROGRAM}" \ INSTALL_LIBRARY="$(INSTALL_LIBRARY) ${INSTALL_STRIP_LIBRARY}" @@ -619,6 +633,7 @@ install-binaries: binaries echo "Installing $(STUB_LIB_FILE) to $(LIB_INSTALL_DIR)/"; \ @INSTALL_STUB_LIB@ ; \ fi + @EXTRA_INSTALL_BINARIES@ install-libraries: libraries @for i in $(INCLUDE_INSTALL_DIR) $(SCRIPT_INSTALL_DIR); \ @@ -644,7 +659,7 @@ install-libraries: libraries fi @echo "Installing header files"; @for i in $(GENERIC_DIR)/tcl.h $(GENERIC_DIR)/tclDecls.h \ - $(GENERIC_DIR)/tclPlatDecls.h ; \ + $(GENERIC_DIR)/tclPlatDecls.h; \ do \ $(INSTALL_DATA) $$i $(INCLUDE_INSTALL_DIR); \ done; @@ -711,17 +726,39 @@ install-doc: doc $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MANN_INSTALL_DIR); \ done +# Optional target to install private headers +install-private-headers: libraries + @for i in $(PRIVATE_INCLUDE_INSTALL_DIR); \ + do \ + if [ ! -d $$i ] ; then \ + echo "Making directory $$i"; \ + mkdir -p $$i; \ + chmod 755 $$i; \ + else true; \ + fi; \ + done; + @if test ! -x $(SRC_DIR)/install-sh; then \ + chmod +x $(SRC_DIR)/install-sh; \ + fi + @echo "Installing private header files"; + @for i in $(GENERIC_DIR)/tclInt.h $(GENERIC_DIR)/tclIntDecls.h \ + $(GENERIC_DIR)/tclIntPlatDecls.h $(GENERIC_DIR)/tclPort.h \ + $(UNIX_DIR)/tclUnixPort.h $(GENERIC_DIR)/tclMath.h; \ + do \ + $(INSTALL_DATA) $$i $(PRIVATE_INCLUDE_INSTALL_DIR); \ + done; + Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in $(SHELL) config.status clean: rm -f *.a *.o libtcl* core errs *~ \#* TAGS *.E a.out \ - errors tclsh tcltest lib.exp + errors tclsh tcltest lib.exp Tcl cd dltest ; $(MAKE) clean distclean: clean rm -rf Makefile config.status config.cache config.log tclConfig.sh \ - $(PACKAGE).* prototype + $(PACKAGE).* prototype *.plist Tcl.framework cd dltest ; $(MAKE) distclean depend: @@ -1101,7 +1138,6 @@ waitpid.o: $(COMPAT_DIR)/waitpid.c # Stub library binaries, these must be compiled for use in a shared library # even though they will be placed in a static archive - tclStubLib.o: $(GENERIC_DIR)/tclStubLib.c $(CC) -c $(STUB_CC_SWITCHES) $(GENERIC_DIR)/tclStubLib.c @@ -1190,7 +1226,7 @@ rpm: all /bin/rpm # # Target to create a proper Tcl distribution from information in the # master source directory. DISTDIR must be defined to indicate where -# to put the distribution. +# to put the distribution. DISTDIR must be an absolute path name. # DISTROOT = /tmp/dist @@ -1276,7 +1312,7 @@ dist: cp -p $(TOP_DIR)/license.terms $(DISTDIR)/mac mkdir $(DISTDIR)/macosx cp -p $(TOP_DIR)/macosx/Makefile \ - $(TOP_DIR)/macosx/*.c \ + $(TOP_DIR)/macosx/*.c $(TOP_DIR)/macosx/*.in \ $(DISTDIR)/macosx mkdir $(DISTDIR)/macosx/Tcl.pbproj cp -p $(TOP_DIR)/macosx/Tcl.pbproj/*.pbx* $(DISTDIR)/macosx/Tcl.pbproj @@ -1332,13 +1368,18 @@ allpatch: dist html: $(BUILD_HTML) + @EXTRA_BUILD_HTML@ html-tcl: $(BUILD_HTML) --tcl + @EXTRA_BUILD_HTML@ html-tk: $(BUILD_HTML) --tk + @EXTRA_BUILD_HTML@ BUILD_HTML = \ - $(TCL_EXE) $(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(DISTDIR)/html \ + @@LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ + TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \ + ./tclsh $(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(HTML_INSTALL_DIR) \ --srcdir=$(TOP_DIR)/.. # diff --git a/unix/configure b/unix/configure index f9a9375..c1f4759 100755 --- a/unix/configure +++ b/unix/configure @@ -567,8 +567,6 @@ fi if test "${exec_prefix}" = "NONE"; then exec_prefix=$prefix fi -# libdir must be a fully qualified path and (not ${exec_prefix}/lib) -eval libdir="$libdir" TCL_SRC_DIR=`cd $srcdir/..; pwd` #------------------------------------------------------------------------ @@ -577,7 +575,7 @@ TCL_SRC_DIR=`cd $srcdir/..; pwd` echo $ac_n "checking whether to use symlinks for manpages""... $ac_c" 1>&6 -echo "configure:581: checking whether to use symlinks for manpages" >&5 +echo "configure:579: checking whether to use symlinks for manpages" >&5 # Check whether --enable-man-symlinks or --disable-man-symlinks was given. if test "${enable_man_symlinks+set}" = set; then enableval="$enable_man_symlinks" @@ -589,7 +587,7 @@ fi echo "$ac_t""$enableval" 1>&6 echo $ac_n "checking whether to compress the manpages""... $ac_c" 1>&6 -echo "configure:593: checking whether to compress the manpages" >&5 +echo "configure:591: checking whether to compress the manpages" >&5 # Check whether --enable-man-compression or --disable-man-compression was given. if test "${enable_man_compression+set}" = set; then enableval="$enable_man_compression" @@ -602,7 +600,7 @@ fi echo "$ac_t""$enableval" 1>&6 if test "$enableval" != "no"; then echo $ac_n "checking for compressed file suffix""... $ac_c" 1>&6 -echo "configure:606: checking for compressed file suffix" >&5 +echo "configure:604: checking for compressed file suffix" >&5 touch TeST $enableval TeST Z=`ls TeST* | sed 's/^....//'` @@ -612,7 +610,7 @@ echo "configure:606: checking for compressed file suffix" >&5 fi echo $ac_n "checking whether to add a package name suffix for the manpages""... $ac_c" 1>&6 -echo "configure:616: checking whether to add a package name suffix for the manpages" >&5 +echo "configure:614: checking whether to add a package name suffix for the manpages" >&5 # Check whether --enable-man-suffix or --disable-man-suffix was given. if test "${enable_man_suffix+set}" = set; then enableval="$enable_man_suffix" @@ -640,7 +638,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:644: checking for $ac_word" >&5 +echo "configure:642: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -670,7 +668,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:674: checking for $ac_word" >&5 +echo "configure:672: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -721,7 +719,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:725: checking for $ac_word" >&5 +echo "configure:723: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -753,7 +751,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:757: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:755: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -764,12 +762,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 768 "configure" +#line 766 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -795,12 +793,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:799: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:797: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:804: checking whether we are using GNU C" >&5 +echo "configure:802: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -809,7 +807,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -828,7 +826,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:832: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:830: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -866,7 +864,7 @@ fi echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:870: checking for building with threads" >&5 +echo "configure:868: checking for building with threads" >&5 # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then enableval="$enable_threads" @@ -908,7 +906,7 @@ EOF EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:912: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:910: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -916,7 +914,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -955,7 +953,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:959: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:957: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -963,7 +961,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1002,7 +1000,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1006: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:1004: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1010,7 +1008,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1047,7 +1045,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1051: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1049: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1055,7 +1053,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1089,7 +1087,7 @@ fi if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1093: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1091: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1097,7 +1095,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1148,12 +1146,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1152: checking for $ac_func" >&5 +echo "configure:1150: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1203,12 +1201,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1207: checking for $ac_func" >&5 +echo "configure:1205: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1259,12 +1257,12 @@ done for ac_func in readdir_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1263: checking for $ac_func" >&5 +echo "configure:1261: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1313,14 +1311,14 @@ done if test "x$ac_cv_func_readdir_r" = "xyes"; then echo $ac_n "checking how many args readdir_r takes""... $ac_c" 1>&6 -echo "configure:1317: checking how many args readdir_r takes" >&5 +echo "configure:1315: checking how many args readdir_r takes" >&5 # IRIX 5.3 has a 2 arg version of readdir_r # while other systems have a 3 arg version. if eval "test \"`echo '$''{'tcl_cv_two_arg_readdir_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1335,7 +1333,7 @@ int main() { readdir_r(NULL, NULL); ; return 0; } EOF -if { (eval echo configure:1339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_two_arg_readdir_r=yes else @@ -1351,7 +1349,7 @@ fi echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1366,7 +1364,7 @@ int main() { readdir_r(NULL, NULL, NULL); ; return 0; } EOF -if { (eval echo configure:1370: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_three_arg_readdir_r=yes else @@ -1409,18 +1407,18 @@ EOF if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1413: checking if the compiler understands -pipe" >&5 +echo "configure:1411: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1439,7 +1437,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1443: checking how to run the C preprocessor" >&5 +echo "configure:1441: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1454,13 +1452,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1471,13 +1469,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1481: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1488,13 +1486,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1527,12 +1525,12 @@ echo "$ac_t""$CPP" 1>&6 #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1531: checking for sin" >&5 +echo "configure:1529: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1576,7 +1574,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1580: checking for main in -lieee" >&5 +echo "configure:1578: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1584,14 +1582,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1618,7 +1616,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1622: checking for main in -linet" >&5 +echo "configure:1620: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1626,14 +1624,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1655,17 +1653,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:1659: checking for net/errno.h" >&5 +echo "configure:1657: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1669: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1710,12 +1708,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1714: checking for connect" >&5 +echo "configure:1712: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1760,12 +1758,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:1764: checking for setsockopt" >&5 +echo "configure:1762: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -1806,7 +1804,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:1810: checking for setsockopt in -lsocket" >&5 +echo "configure:1808: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1814,7 +1812,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1853,12 +1851,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:1857: checking for accept" >&5 +echo "configure:1855: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -1903,12 +1901,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1907: checking for gethostbyname" >&5 +echo "configure:1905: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1949,7 +1947,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1953: checking for gethostbyname in -lnsl" >&5 +echo "configure:1951: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1957,7 +1955,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2000,12 +1998,11 @@ fi # Add the threads support libraries - LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:2009: checking how to build libraries" >&5 +echo "configure:2006: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2044,7 +2041,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2048: checking for $ac_word" >&5 +echo "configure:2045: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2076,7 +2073,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2080: checking if 64bit support is requested" >&5 +echo "configure:2077: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -2096,7 +2093,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2100: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2097: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2120,7 +2117,7 @@ fi # there are a few systems, like Next, where this doesn't work. echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:2124: checking system version (for dynamic loading)" >&5 +echo "configure:2121: checking system version (for dynamic loading)" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -2146,7 +2143,7 @@ echo "configure:2124: checking system version (for dynamic loading)" >&5 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2150: checking for dlopen in -ldl" >&5 +echo "configure:2147: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2154,7 +2151,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2213,7 +2210,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2217: checking for $ac_word" >&5 +echo "configure:2214: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2323,7 +2320,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2327: checking for gettimeofday in -lbsd" >&5 +echo "configure:2324: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2331,7 +2328,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2385,7 +2382,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2389: checking for inet_ntoa in -lbind" >&5 +echo "configure:2386: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2393,7 +2390,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2470,7 +2467,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2474: checking for shl_load in -ldld" >&5 +echo "configure:2471: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2478,7 +2475,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2557,7 +2554,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2561: checking for shl_load in -ldld" >&5 +echo "configure:2558: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2565,7 +2562,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2700,17 +2697,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2704: checking for dld.h" >&5 +echo "configure:2701: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2774,17 +2771,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2778: checking for dld.h" >&5 +echo "configure:2775: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2840,17 +2837,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2844: checking for dlfcn.h" >&5 +echo "configure:2841: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2877,9 +2874,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2881: checking for ELF" >&5 +echo "configure:2878: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2957: checking for ELF" >&5 +echo "configure:2954: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:3018: checking if ld accepts -single_module flag" >&5 +echo "configure:3015: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3022,14 +3019,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3052,7 +3049,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 DL_LIBS="" LDFLAGS="$LDFLAGS -prebind" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3056: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3053: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3060,14 +3057,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3089,10 +3086,8 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) - TCL_SHLIB_LD_EXTRAS='-compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' - TK_SHLIB_LD_EXTRAS=' -compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TK_LIB_FILE} -seg1addr 0xb000000 -unexported_symbols_list $$(f=$(TCL_STUB_LIB_FILE).E && nm -gjp $(TCL_BIN_DIR)/$(TCL_STUB_LIB_FILE) | tail +3 > $$f && echo $$f)' echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3096: checking whether to use CoreFoundation" >&5 +echo "configure:3091: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3104,7 +3099,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3108: checking for CoreFoundation.framework" >&5 +echo "configure:3103: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3112,14 +3107,14 @@ else hold_libs=$LIBS LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3145,17 +3140,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3149: checking for $ac_hdr" >&5 +echo "configure:3144: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3159: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3184,12 +3179,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3188: checking for $ac_func" >&5 +echo "configure:3183: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3248,15 +3243,19 @@ EOF #define TCL_DEFAULT_ENCODING "utf-8" EOF + cat >> confdefs.h <<\EOF +#define TCL_LOAD_FROM_MEMORY 1 +EOF + # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3255: checking for realpath" >&5 +echo "configure:3254: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -3590,17 +3589,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3594: checking for ld accepts -Bexport flag" >&5 +echo "configure:3593: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3641,9 +3640,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3645: checking sys/exec.h" >&5 +echo "configure:3644: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3661,7 +3660,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3664: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3679,9 +3678,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3683: checking a.out.h" >&5 +echo "configure:3682: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3699,7 +3698,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3717,9 +3716,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3721: checking sys/exec_aout.h" >&5 +echo "configure:3720: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3737,7 +3736,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3888,7 +3887,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3892: checking for build with symbols" >&5 +echo "configure:3891: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3949,21 +3948,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3953: checking for required early compiler flags" >&5 +echo "configure:3952: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3971,7 +3970,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3979,7 +3978,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4005,14 +4004,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4016: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4020,7 +4019,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4028,7 +4027,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4032: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4031: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4057,7 +4056,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4061: checking for 64-bit integer type" >&5 +echo "configure:4060: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4065,14 +4064,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4086,7 +4085,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4098: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4120,13 +4119,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4124: checking for struct dirent64" >&5 +echo "configure:4123: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4134,7 +4133,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4155,13 +4154,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4159: checking for struct stat64" >&5 +echo "configure:4158: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4169,7 +4168,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4172: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4192,12 +4191,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4196: checking for $ac_func" >&5 +echo "configure:4195: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4245,13 +4244,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4249: checking for off64_t" >&5 +echo "configure:4248: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4259,7 +4258,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4263: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4290,14 +4289,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4294: checking whether byte ordering is bigendian" >&5 +echo "configure:4293: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4308,11 +4307,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4323,7 +4322,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4327: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4343,7 +4342,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4389,12 +4388,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4393: checking for $ac_func" >&5 +echo "configure:4392: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4451,12 +4450,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4455: checking for $ac_func" >&5 +echo "configure:4454: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4509,12 +4508,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4513: checking for $ac_func" >&5 +echo "configure:4512: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4564,12 +4563,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4568: checking for strerror" >&5 +echo "configure:4567: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4616,12 +4615,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4620: checking for getwd" >&5 +echo "configure:4619: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4668,12 +4667,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4672: checking for wait3" >&5 +echo "configure:4671: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4720,12 +4719,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4724: checking for uname" >&5 +echo "configure:4723: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4772,12 +4771,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4776: checking for realpath" >&5 +echo "configure:4775: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4835,12 +4834,12 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4839: checking dirent.h" >&5 +echo "configure:4838: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4866,7 +4865,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -4889,17 +4888,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4893: checking for errno.h" >&5 +echo "configure:4892: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4903: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4902: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4926,17 +4925,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4930: checking for float.h" >&5 +echo "configure:4929: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4963,17 +4962,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4967: checking for values.h" >&5 +echo "configure:4966: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4976: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5000,17 +4999,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:5004: checking for limits.h" >&5 +echo "configure:5003: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5014: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5013: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5040,17 +5039,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:5044: checking for stdlib.h" >&5 +echo "configure:5043: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5054: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5073,7 +5072,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -5087,7 +5086,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5101,7 +5100,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5122,17 +5121,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:5126: checking for string.h" >&5 +echo "configure:5125: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5155,7 +5154,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -5169,7 +5168,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5195,17 +5194,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:5199: checking for sys/wait.h" >&5 +echo "configure:5198: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5208: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5232,17 +5231,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:5236: checking for dlfcn.h" >&5 +echo "configure:5235: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5274,17 +5273,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5278: checking for $ac_hdr" >&5 +echo "configure:5277: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5324,17 +5323,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5328: checking for $ac_hdr" >&5 +echo "configure:5327: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5337: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5361,7 +5360,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5365: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5364: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5370,7 +5369,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5385,7 +5384,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5402,7 +5401,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5416,7 +5415,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5434,7 +5433,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5449,7 +5448,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5467,7 +5466,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5484,7 +5483,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5502,7 +5501,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5518,7 +5517,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5536,7 +5535,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5553,7 +5552,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5596,19 +5595,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5600: checking for fd_set in sys/types" >&5 +echo "configure:5599: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5624,12 +5623,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5628: checking for fd_mask in sys/select" >&5 +echo "configure:5627: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5666,12 +5665,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5670: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5669: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5679,7 +5678,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5704,17 +5703,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5708: checking for $ac_hdr" >&5 +echo "configure:5707: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5741,12 +5740,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5745: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5744: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5755,7 +5754,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5776,12 +5775,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5780: checking for tm_zone in struct tm" >&5 +echo "configure:5779: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5789,7 +5788,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5792: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5809,12 +5808,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5813: checking for tzname" >&5 +echo "configure:5812: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5824,7 +5823,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5849,12 +5848,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5853: checking for $ac_func" >&5 +echo "configure:5852: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5903,19 +5902,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5907: checking tm_tzadj in struct tm" >&5 +echo "configure:5906: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5936,19 +5935,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5940: checking tm_gmtoff in struct tm" >&5 +echo "configure:5939: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5952: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5951: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5973,12 +5972,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5977: checking long timezone variable" >&5 +echo "configure:5976: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5987,7 +5986,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6010,12 +6009,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6014: checking time_t timezone variable" >&5 +echo "configure:6013: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6024,7 +6023,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6027: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6051,12 +6050,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6055: checking for st_blksize in struct stat" >&5 +echo "configure:6054: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6064,7 +6063,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6085,12 +6084,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6089: checking for fstatfs" >&5 +echo "configure:6088: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6142,7 +6141,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6146: checking for 8-bit clean memcmp" >&5 +echo "configure:6145: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6150,7 +6149,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6184,12 +6183,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6188: checking for memmove" >&5 +echo "configure:6187: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6245,12 +6244,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6249: checking proper strstr implementation" >&5 +echo "configure:6248: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6287,12 +6286,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6291: checking for strtoul" >&5 +echo "configure:6290: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6339,7 +6338,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6378,12 +6377,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6382: checking for strtod" >&5 +echo "configure:6381: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6430,7 +6429,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6472,12 +6471,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6476: checking for strtod" >&5 +echo "configure:6475: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6522,7 +6521,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6526: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6525: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6531,7 +6530,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6587,12 +6586,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6591: checking for ANSI C header files" >&5 +echo "configure:6590: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6600,7 +6599,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6603: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6617,7 +6616,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6635,7 +6634,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6656,7 +6655,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6667,7 +6666,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6691,12 +6690,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6695: checking for mode_t" >&5 +echo "configure:6694: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6724,12 +6723,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6728: checking for pid_t" >&5 +echo "configure:6727: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6757,12 +6756,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6761: checking for size_t" >&5 +echo "configure:6760: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6790,12 +6789,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6794: checking for uid_t in sys/types.h" >&5 +echo "configure:6793: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6825,12 +6824,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6829: checking for socklen_t" >&5 +echo "configure:6828: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6869,12 +6868,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6873: checking for opendir" >&5 +echo "configure:6872: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6930,12 +6929,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6934: checking union wait" >&5 +echo "configure:6933: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6947,7 +6946,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6974,12 +6973,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6978: checking for strncasecmp" >&5 +echo "configure:6977: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7024,7 +7023,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7028: checking for strncasecmp in -lsocket" >&5 +echo "configure:7027: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7032,7 +7031,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7067,7 +7066,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7071: checking for strncasecmp in -linet" >&5 +echo "configure:7070: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7075,7 +7074,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7124,12 +7123,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7128: checking for BSDgettimeofday" >&5 +echo "configure:7127: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7174,12 +7173,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7178: checking for gettimeofday" >&5 +echo "configure:7177: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7229,12 +7228,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7233: checking for gettimeofday declaration" >&5 +echo "configure:7232: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7265,14 +7264,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7269: checking whether char is unsigned" >&5 +echo "configure:7268: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7328,12 +7327,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7332: checking signed char declarations" >&5 +echo "configure:7331: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7346: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7368,7 +7367,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7372: checking for a putenv() that copies the buffer" >&5 +echo "configure:7371: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7376,7 +7375,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7398,7 +7397,7 @@ else } EOF -if { (eval echo configure:7402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7440,17 +7439,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7444: checking for langinfo.h" >&5 +echo "configure:7443: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7453: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7475,17 +7474,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7479: checking whether to use nl_langinfo" >&5 +echo "configure:7478: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7520,17 +7519,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7524: checking for $ac_hdr" >&5 +echo "configure:7523: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7560,17 +7559,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7564: checking for $ac_hdr" >&5 +echo "configure:7563: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7573: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7597,7 +7596,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7601: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7600: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7658,9 +7657,26 @@ TCL_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} TCL_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX} eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" +# tclConfig.sh needs a version of the _LIB_SUFFIX that has been eval'ed +# so that the backslashes quoting the DBX braces are dropped. +# Trick to replace DBGX with TCL_DBGX +DBGX='${TCL_DBGX}' +eval "TCL_LIB_FILE=${TCL_LIB_FILE}" + +TCL_LIBRARY='$(prefix)/lib/tcl$(VERSION)' +PRIVATE_INCLUDE_DIR='$(includedir)' +HTML_DIR='$(DISTDIR)/html' + +# Note: in the following variable, it's important to use the absolute +# path name of the Tcl directory rather than "..": this is because +# AIX remembers this path and will attempt to use it at run-time to look +# up the Tcl library. + +if test "`uname -s`" = "Darwin" ; then + echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7664: checking how to package libraries" >&5 +echo "configure:7680: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -7693,48 +7709,68 @@ fi FRAMEWORK_BUILD=0 fi - -# tclConfig.sh needs a version of the _LIB_SUFFIX that has been eval'ed -# so that the backslashes quoting the DBX braces are dropped. - -# Trick to replace DBGX with TCL_DBGX -DBGX='${TCL_DBGX}' -eval "TCL_LIB_FILE=${TCL_LIB_FILE}" - -# Note: in the following variable, it's important to use the absolute -# path name of the Tcl directory rather than "..": this is because -# AIX remembers this path and will attempt to use it at run-time to look -# up the Tcl library. + TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version ${TCL_VERSION}`echo ${TCL_PATCH_LEVEL} | awk '{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}'`" + TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' +fi if test "$FRAMEWORK_BUILD" = "1" ; then - TCL_BUILD_LIB_SPEC="-F`pwd` -framework Tcl" - TCL_LIB_SPEC="-framework Tcl" - TCL_LIB_FILE="Tcl" cat >> confdefs.h <<\EOF #define TCL_FRAMEWORK 1 EOF -elif test "$SHARED_BUILD" = "0" || test "$TCL_NEEDS_EXP_FILE" = "0"; then - if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then - TCL_LIB_FLAG="-ltcl${TCL_VERSION}\${TCL_DBGX}" - else - TCL_LIB_FLAG="-ltcl`echo ${TCL_VERSION} | tr -d .`\${TCL_DBGX}" - fi - TCL_BUILD_LIB_SPEC="-L`pwd` ${TCL_LIB_FLAG}" - TCL_LIB_SPEC="-L${libdir} ${TCL_LIB_FLAG}" -else - TCL_BUILD_EXP_FILE="lib.exp" - eval "TCL_EXP_FILE=libtcl${TCL_EXPORT_FILE_SUFFIX}" - - # Replace DBGX with TCL_DBGX - eval "TCL_EXP_FILE=\"${TCL_EXP_FILE}\"" + tcl_config_files="${tcl_config_files} Tcl-Info.plist:../macosx/Tcl-Info.plist.in" + # Construct a fake local framework structure to make linking with + # '-framework Tcl' and running of tcltest work - if test "$GCC" = "yes" ; then - TCL_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TCL_BUILD_EXP_FILE} -L`pwd`" - TCL_LIB_SPEC="-Wl,-bI:${libdir}/${TCL_EXP_FILE} -L`pwd`" + LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH" + if test "${libdir}" = '${exec_prefix}/lib'; then + # override libdir default + libdir="/Library/Frameworks" + fi + TCL_LIB_FILE="Tcl" + TCL_LIB_FLAG="-framework Tcl" + TCL_BUILD_LIB_SPEC="-F`pwd` -framework Tcl" + TCL_LIB_SPEC="-F${libdir} -framework Tcl" + libdir="${libdir}/Tcl.framework/Versions/\${VERSION}" + TCL_LIBRARY="${libdir}/Resources/Scripts" + includedir="${libdir}/Headers" + PRIVATE_INCLUDE_DIR="${libdir}/PrivateHeaders" + HTML_DIR="${libdir}/Resources/Documentation/Reference/Tcl" + EXTRA_INSTALL="install-private-headers html-tcl" + EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' + EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' + EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" "$(STUB_LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done' + TCL_YEAR="`date +%Y`" + # Don't use AC_DEFINE for the following as the framework version define + # needs to go into the Makefile even when using autoheader, so that we + # can pick up a potential make override of VERSION. Also, don't put this + # into CFLAGS as it should not go into tclConfig.sh + EXTRA_CC_SWITCHES='-DTCL_FRAMEWORK_VERSION=\"$(VERSION)\"' +else + # libdir must be a fully qualified path and not ${exec_prefix}/lib + eval libdir="$libdir" + if test "$SHARED_BUILD" = "0" || test "$TCL_NEEDS_EXP_FILE" = "0"; then + if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then + TCL_LIB_FLAG="-ltcl${TCL_VERSION}\${TCL_DBGX}" + else + TCL_LIB_FLAG="-ltcl`echo ${TCL_VERSION} | tr -d .`\${TCL_DBGX}" + fi + TCL_BUILD_LIB_SPEC="-L`pwd` ${TCL_LIB_FLAG}" + TCL_LIB_SPEC="-L${libdir} ${TCL_LIB_FLAG}" else - TCL_BUILD_LIB_SPEC="-bI:`pwd`/${TCL_BUILD_EXP_FILE}" - TCL_LIB_SPEC="-bI:${libdir}/${TCL_EXP_FILE}" + TCL_BUILD_EXP_FILE="lib.exp" + eval "TCL_EXP_FILE=libtcl${TCL_EXPORT_FILE_SUFFIX}" + + # Replace DBGX with TCL_DBGX + eval "TCL_EXP_FILE=\"${TCL_EXP_FILE}\"" + + if test "$GCC" = "yes" ; then + TCL_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TCL_BUILD_EXP_FILE} -L`pwd`" + TCL_LIB_SPEC="-Wl,-bI:${libdir}/${TCL_EXP_FILE} -L`pwd`" + else + TCL_BUILD_LIB_SPEC="-bI:`pwd`/${TCL_BUILD_EXP_FILE}" + TCL_LIB_SPEC="-bI:${libdir}/${TCL_EXP_FILE}" + fi fi fi VERSION='${VERSION}' @@ -7751,7 +7787,7 @@ VERSION=${TCL_VERSION} #-------------------------------------------------------------------- if test "$FRAMEWORK_BUILD" = "1" ; then - TCL_PACKAGE_PATH="${libdir}/Resources/Scripts" + TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks" elif test "$prefix" != "$exec_prefix"; then TCL_PACKAGE_PATH="${libdir} ${prefix}/lib" else @@ -7767,6 +7803,7 @@ fi eval "TCL_STUB_LIB_FILE=libtclstub${TCL_UNSHARED_LIB_SUFFIX}" # Replace DBGX with TCL_DBGX eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\"" +eval "TCL_STUB_LIB_DIR=${libdir}" if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then TCL_STUB_LIB_FLAG="-ltclstub${TCL_VERSION}\${TCL_DBGX}" @@ -7775,9 +7812,9 @@ else fi TCL_BUILD_STUB_LIB_SPEC="-L`pwd` ${TCL_STUB_LIB_FLAG}" -TCL_STUB_LIB_SPEC="-L${libdir} ${TCL_STUB_LIB_FLAG}" +TCL_STUB_LIB_SPEC="-L${TCL_STUB_LIB_DIR} ${TCL_STUB_LIB_FLAG}" TCL_BUILD_STUB_LIB_PATH="`pwd`/${TCL_STUB_LIB_FILE}" -TCL_STUB_LIB_PATH="${libdir}/${TCL_STUB_LIB_FILE}" +TCL_STUB_LIB_PATH="${TCL_STUB_LIB_DIR}/${TCL_STUB_LIB_FILE}" # Install time header dir can be set via --includedir eval "TCL_INCLUDE_SPEC=\"-I${includedir}\"" @@ -7827,6 +7864,17 @@ TCL_SHARED_BUILD=${SHARED_BUILD} + + + + + + + + + + +tcl_config_files="${tcl_config_files} Makefile dltest/Makefile tclConfig.sh" trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure @@ -7939,7 +7987,7 @@ done ac_given_srcdir=$srcdir -trap 'rm -fr `echo "Makefile dltest/Makefile tclConfig.sh" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +trap 'rm -fr `echo "${tcl_config_files}" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then @@ -8132,9 +8188,17 @@ rm -f conftest.s* EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +n=Tcl && echo "creating $n.framework" && + f=$n.framework && v=Versions/$VERSION && + rm -rf $f && mkdir -p $f/$v/Resources && + ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && + ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && + unset n f v + exit 0 EOF diff --git a/unix/configure.in b/unix/configure.in index bb68eb2..e56f3f1 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.13 2005/04/26 00:46:03 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.14 2005/05/24 04:20:12 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -24,8 +24,6 @@ fi if test "${exec_prefix}" = "NONE"; then exec_prefix=$prefix fi -# libdir must be a fully qualified path and (not ${exec_prefix}/lib) -eval libdir="$libdir" TCL_SRC_DIR=`cd $srcdir/..; pwd` #------------------------------------------------------------------------ @@ -75,7 +73,6 @@ fi SC_TCL_LINK_LIBS # Add the threads support libraries - LIBS="$LIBS$THREADS_LIBS" SC_ENABLE_SHARED @@ -455,8 +452,6 @@ TCL_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} TCL_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX} eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" -SC_ENABLE_FRAMEWORK - # tclConfig.sh needs a version of the _LIB_SUFFIX that has been eval'ed # so that the backslashes quoting the DBX braces are dropped. @@ -464,37 +459,82 @@ SC_ENABLE_FRAMEWORK DBGX='${TCL_DBGX}' eval "TCL_LIB_FILE=${TCL_LIB_FILE}" +TCL_LIBRARY='$(prefix)/lib/tcl$(VERSION)' +PRIVATE_INCLUDE_DIR='$(includedir)' +HTML_DIR='$(DISTDIR)/html' + # Note: in the following variable, it's important to use the absolute # path name of the Tcl directory rather than "..": this is because # AIX remembers this path and will attempt to use it at run-time to look # up the Tcl library. +if test "`uname -s`" = "Darwin" ; then + SC_ENABLE_FRAMEWORK + TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version ${TCL_VERSION}`echo ${TCL_PATCH_LEVEL} | awk ['{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}']`" + TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' +fi + if test "$FRAMEWORK_BUILD" = "1" ; then - TCL_BUILD_LIB_SPEC="-F`pwd` -framework Tcl" - TCL_LIB_SPEC="-framework Tcl" - TCL_LIB_FILE="Tcl" AC_DEFINE(TCL_FRAMEWORK) -elif test "$SHARED_BUILD" = "0" || test "$TCL_NEEDS_EXP_FILE" = "0"; then - if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then - TCL_LIB_FLAG="-ltcl${TCL_VERSION}\${TCL_DBGX}" - else - TCL_LIB_FLAG="-ltcl`echo ${TCL_VERSION} | tr -d .`\${TCL_DBGX}" + tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in]" + # Construct a fake local framework structure to make linking with + # '-framework Tcl' and running of tcltest work + AC_OUTPUT_COMMANDS([n=Tcl && echo "creating $n.framework" && + f=$n.framework && v=Versions/$VERSION && + rm -rf $f && mkdir -p $f/$v/Resources && + ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && + ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && + unset n f v + ], VERSION=${TCL_VERSION}) + LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH" + if test "${libdir}" = '${exec_prefix}/lib'; then + # override libdir default + libdir="/Library/Frameworks" fi - TCL_BUILD_LIB_SPEC="-L`pwd` ${TCL_LIB_FLAG}" - TCL_LIB_SPEC="-L${libdir} ${TCL_LIB_FLAG}" + TCL_LIB_FILE="Tcl" + TCL_LIB_FLAG="-framework Tcl" + TCL_BUILD_LIB_SPEC="-F`pwd` -framework Tcl" + TCL_LIB_SPEC="-F${libdir} -framework Tcl" + libdir="${libdir}/Tcl.framework/Versions/\${VERSION}" + TCL_LIBRARY="${libdir}/Resources/Scripts" + includedir="${libdir}/Headers" + PRIVATE_INCLUDE_DIR="${libdir}/PrivateHeaders" + HTML_DIR="${libdir}/Resources/Documentation/Reference/Tcl" + EXTRA_INSTALL="install-private-headers html-tcl" + EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' + EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' + EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" "$(STUB_LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done' + TCL_YEAR="`date +%Y`" + # Don't use AC_DEFINE for the following as the framework version define + # needs to go into the Makefile even when using autoheader, so that we + # can pick up a potential make override of VERSION. Also, don't put this + # into CFLAGS as it should not go into tclConfig.sh + EXTRA_CC_SWITCHES='-DTCL_FRAMEWORK_VERSION=\"$(VERSION)\"' else - TCL_BUILD_EXP_FILE="lib.exp" - eval "TCL_EXP_FILE=libtcl${TCL_EXPORT_FILE_SUFFIX}" - - # Replace DBGX with TCL_DBGX - eval "TCL_EXP_FILE=\"${TCL_EXP_FILE}\"" - - if test "$GCC" = "yes" ; then - TCL_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TCL_BUILD_EXP_FILE} -L`pwd`" - TCL_LIB_SPEC="-Wl,-bI:${libdir}/${TCL_EXP_FILE} -L`pwd`" + # libdir must be a fully qualified path and not ${exec_prefix}/lib + eval libdir="$libdir" + if test "$SHARED_BUILD" = "0" || test "$TCL_NEEDS_EXP_FILE" = "0"; then + if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then + TCL_LIB_FLAG="-ltcl${TCL_VERSION}\${TCL_DBGX}" + else + TCL_LIB_FLAG="-ltcl`echo ${TCL_VERSION} | tr -d .`\${TCL_DBGX}" + fi + TCL_BUILD_LIB_SPEC="-L`pwd` ${TCL_LIB_FLAG}" + TCL_LIB_SPEC="-L${libdir} ${TCL_LIB_FLAG}" else - TCL_BUILD_LIB_SPEC="-bI:`pwd`/${TCL_BUILD_EXP_FILE}" - TCL_LIB_SPEC="-bI:${libdir}/${TCL_EXP_FILE}" + TCL_BUILD_EXP_FILE="lib.exp" + eval "TCL_EXP_FILE=libtcl${TCL_EXPORT_FILE_SUFFIX}" + + # Replace DBGX with TCL_DBGX + eval "TCL_EXP_FILE=\"${TCL_EXP_FILE}\"" + + if test "$GCC" = "yes" ; then + TCL_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TCL_BUILD_EXP_FILE} -L`pwd`" + TCL_LIB_SPEC="-Wl,-bI:${libdir}/${TCL_EXP_FILE} -L`pwd`" + else + TCL_BUILD_LIB_SPEC="-bI:`pwd`/${TCL_BUILD_EXP_FILE}" + TCL_LIB_SPEC="-bI:${libdir}/${TCL_EXP_FILE}" + fi fi fi VERSION='${VERSION}' @@ -511,7 +551,7 @@ VERSION=${TCL_VERSION} #-------------------------------------------------------------------- if test "$FRAMEWORK_BUILD" = "1" ; then - TCL_PACKAGE_PATH="${libdir}/Resources/Scripts" + TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks" elif test "$prefix" != "$exec_prefix"; then TCL_PACKAGE_PATH="${libdir} ${prefix}/lib" else @@ -527,6 +567,7 @@ fi eval "TCL_STUB_LIB_FILE=libtclstub${TCL_UNSHARED_LIB_SUFFIX}" # Replace DBGX with TCL_DBGX eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\"" +eval "TCL_STUB_LIB_DIR=${libdir}" if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then TCL_STUB_LIB_FLAG="-ltclstub${TCL_VERSION}\${TCL_DBGX}" @@ -535,9 +576,9 @@ else fi TCL_BUILD_STUB_LIB_SPEC="-L`pwd` ${TCL_STUB_LIB_FLAG}" -TCL_STUB_LIB_SPEC="-L${libdir} ${TCL_STUB_LIB_FLAG}" +TCL_STUB_LIB_SPEC="-L${TCL_STUB_LIB_DIR} ${TCL_STUB_LIB_FLAG}" TCL_BUILD_STUB_LIB_PATH="`pwd`/${TCL_STUB_LIB_FILE}" -TCL_STUB_LIB_PATH="${libdir}/${TCL_STUB_LIB_FILE}" +TCL_STUB_LIB_PATH="${TCL_STUB_LIB_DIR}/${TCL_STUB_LIB_FILE}" # Install time header dir can be set via --includedir eval "TCL_INCLUDE_SPEC=\"-I${includedir}\"" @@ -552,6 +593,7 @@ AC_SUBST(TCL_VERSION) AC_SUBST(TCL_MAJOR_VERSION) AC_SUBST(TCL_MINOR_VERSION) AC_SUBST(TCL_PATCH_LEVEL) +AC_SUBST(TCL_YEAR) AC_SUBST(TCL_LIB_FILE) AC_SUBST(TCL_LIB_FLAG) @@ -587,4 +629,14 @@ AC_SUBST(TCL_HAS_LONGLONG) AC_SUBST(BUILD_DLTEST) AC_SUBST(TCL_PACKAGE_PATH) -AC_OUTPUT([Makefile dltest/Makefile tclConfig.sh]) +AC_SUBST(TCL_LIBRARY) +AC_SUBST(PRIVATE_INCLUDE_DIR) +AC_SUBST(HTML_DIR) + +AC_SUBST(EXTRA_CC_SWITCHES) +AC_SUBST(EXTRA_INSTALL) +AC_SUBST(EXTRA_INSTALL_BINARIES) +AC_SUBST(EXTRA_BUILD_HTML) + +tcl_config_files="${tcl_config_files} [Makefile dltest/Makefile tclConfig.sh]" +AC_OUTPUT([${tcl_config_files}]) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 73fb065..fc91c3d 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1391,8 +1391,6 @@ dnl AC_CHECK_TOOL(AR, ar) LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) - TCL_SHLIB_LD_EXTRAS='-compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' - TK_SHLIB_LD_EXTRAS=' -compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TK_LIB_FILE} -seg1addr 0xb000000 -unexported_symbols_list $$(f=$(TCL_STUB_LIB_FILE).E && nm -gjp $(TCL_BIN_DIR)/$(TCL_STUB_LIB_FILE) | tail +3 > $$f && echo $$f)' AC_MSG_CHECKING([whether to use CoreFoundation]) AC_ARG_ENABLE(corefoundation, [ --enable-corefoundation use CoreFoundation API [--enable-corefoundation]], [tcl_corefoundation=$enableval], [tcl_corefoundation=yes]) @@ -1415,6 +1413,7 @@ dnl AC_CHECK_TOOL(AR, ar) AC_DEFINE(MAC_OSX_TCL) AC_DEFINE(USE_VFORK) AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8") + AC_DEFINE(TCL_LOAD_FROM_MEMORY) # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: AC_CHECK_FUNC(realpath) diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 8403f6b..a47e763 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.7 2005/05/14 20:52:33 das Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.8 2005/05/24 04:20:12 das Exp $ */ #if defined(HAVE_COREFOUNDATION) @@ -146,7 +146,9 @@ static CONST LocaleTable localeTable[] = { }; #ifdef HAVE_COREFOUNDATION -static int Tcl_MacOSXGetLibraryPath(Tcl_Interp *interp, int maxPathLen, char *tclLibPath); +static int MacOSXGetLibraryPath _ANSI_ARGS_(( + Tcl_Interp *interp, int maxPathLen, + char *tclLibPath)); #endif /* HAVE_COREFOUNDATION */ @@ -439,12 +441,12 @@ CONST char *path; /* Path to the executable in native * This is needed when users install Tcl with an exec-prefix that * is different from the prtefix. */ - + { #ifdef HAVE_COREFOUNDATION char tclLibPath[MAXPATHLEN + 1]; - - if (Tcl_MacOSXGetLibraryPath(NULL, MAXPATHLEN, tclLibPath) == TCL_OK) { + + if (MacOSXGetLibraryPath(NULL, MAXPATHLEN, tclLibPath) == TCL_OK) { str = tclLibPath; } else #endif /* HAVE_COREFOUNDATION */ @@ -741,8 +743,8 @@ TclpSetVariables(interp) #ifdef HAVE_COREFOUNDATION char tclLibPath[MAXPATHLEN + 1]; - - if (Tcl_MacOSXGetLibraryPath(interp, MAXPATHLEN, tclLibPath) == TCL_OK) { + + if (MacOSXGetLibraryPath(interp, MAXPATHLEN, tclLibPath) == TCL_OK) { CONST char *str; Tcl_DString ds; CFBundleRef bundleRef; @@ -1053,11 +1055,10 @@ TclpCheckStackSpace() return 1; } -#ifdef HAVE_COREFOUNDATION /* *---------------------------------------------------------------------- * - * Tcl_MacOSXGetLibraryPath -- + * MacOSXGetLibraryPath -- * * If we have a bundle structure for the Tcl installation, * then check there first to see if we can find the libraries @@ -1071,14 +1072,16 @@ TclpCheckStackSpace() * *---------------------------------------------------------------------- */ -static int Tcl_MacOSXGetLibraryPath(Tcl_Interp *interp, int maxPathLen, char *tclLibPath) + +#ifdef HAVE_COREFOUNDATION +static int +MacOSXGetLibraryPath(Tcl_Interp *interp, int maxPathLen, char *tclLibPath) { int foundInFramework = TCL_ERROR; #ifdef TCL_FRAMEWORK foundInFramework = Tcl_MacOSXOpenVersionedBundleResources(interp, - "com.tcltk.tcllibrary", TCL_VERSION, 0, maxPathLen, tclLibPath); + "com.tcltk.tcllibrary", TCL_FRAMEWORK_VERSION, 0, maxPathLen, tclLibPath); #endif return foundInFramework; } #endif /* HAVE_COREFOUNDATION */ - -- cgit v0.12 From 8af47f49023ddb3e0743fe10acd99bbe66d80fe1 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 24 May 2005 04:44:30 +0000 Subject: * tests/env.test: added DYLD_FRAMEWORK_PATH to the list of env vars that need to be handled specially. --- ChangeLog | 3 +++ tests/env.test | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c9f5365..d2ee091 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-05-24 Daniel Steffen + * tests/env.test: added DYLD_FRAMEWORK_PATH to the list of env vars + that need to be handled specially. + * macosx/Makefile: * macosx/README: * macosx/Tcl-Info.plist.in (new file): diff --git a/tests/env.test b/tests/env.test index af23dfd..b8f2def 100644 --- a/tests/env.test +++ b/tests/env.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: env.test,v 1.17.2.1 2004/08/26 17:37:42 das Exp $ +# RCS: @(#) $Id: env.test,v 1.17.2.2 2005/05/24 04:44:32 das Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -75,7 +75,7 @@ set printenvScript [makeFile { lrem names ComSpec lrem names "" } - foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH PURE_PROG_NAME DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH __CF_USER_TEXT_ENCODING } { + foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH PURE_PROG_NAME DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH __CF_USER_TEXT_ENCODING } { lrem names $name } foreach p $names { @@ -105,7 +105,7 @@ foreach name [array names env] { # Added the following lines so that child tcltest can actually find its # library if the initial tcltest is run from a non-standard place. # ('saved' env vars) -foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH} { +foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH} { if {[info exists env2($name)]} { set env($name) $env2($name); } -- cgit v0.12 From a037b38a4b352395866f07d29197d83129a22526 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 25 May 2005 18:49:07 +0000 Subject: * unix/configure, unix/configure.in: ensure false Tcl.framework is only created with --enable-framework --- ChangeLog | 9 +++++++-- unix/configure | 14 +++++++------- unix/configure.in | 16 ++++++++-------- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index d2ee091..1138c21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ +2005-05-25 Jeff Hobbs + + * unix/configure.in: ensure false Tcl.framework is only created + with --enable-framework + 2005-05-24 Daniel Steffen - * tests/env.test: added DYLD_FRAMEWORK_PATH to the list of env vars - that need to be handled specially. + * tests/env.test: added DYLD_FRAMEWORK_PATH to the list of env vars + that need to be handled specially. * macosx/Makefile: * macosx/README: diff --git a/unix/configure b/unix/configure index c1f4759..a37fbfb 100755 --- a/unix/configure +++ b/unix/configure @@ -8188,16 +8188,16 @@ rm -f conftest.s* EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -n=Tcl && echo "creating $n.framework" && - f=$n.framework && v=Versions/$VERSION && - rm -rf $f && mkdir -p $f/$v/Resources && - ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && - ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && - unset n f v +test "$FRAMEWORK_BUILD" = "1" && + n=Tcl && f=$n.framework && v=Versions/$VERSION && + echo "creating $f" && rm -rf $f && mkdir -p $f/$v/Resources && + ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && + ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && + unset n f v exit 0 diff --git a/unix/configure.in b/unix/configure.in index e56f3f1..b2d1793 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.14 2005/05/24 04:20:12 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.15 2005/05/25 18:49:28 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -479,13 +479,13 @@ if test "$FRAMEWORK_BUILD" = "1" ; then tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in]" # Construct a fake local framework structure to make linking with # '-framework Tcl' and running of tcltest work - AC_OUTPUT_COMMANDS([n=Tcl && echo "creating $n.framework" && - f=$n.framework && v=Versions/$VERSION && - rm -rf $f && mkdir -p $f/$v/Resources && - ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && - ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && - unset n f v - ], VERSION=${TCL_VERSION}) + AC_OUTPUT_COMMANDS([test "$FRAMEWORK_BUILD" = "1" && + n=Tcl && f=$n.framework && v=Versions/$VERSION && + echo "creating $f" && rm -rf $f && mkdir -p $f/$v/Resources && + ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && + ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && + unset n f v + ], [VERSION=${TCL_VERSION} FRAMEWORK_BUILD=${FRAMEWORK_BUILD}]) LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH" if test "${libdir}" = '${exec_prefix}/lib'; then # override libdir default -- cgit v0.12 From a4cdc865d7714654fd17a2e9ebb03a26826daecc Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 25 May 2005 19:25:55 +0000 Subject: * generic/tclCmdMZ.c (Tcl_TimeObjCmd): add necessary cast --- ChangeLog | 6 ++++-- generic/tclCmdMZ.c | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1138c21..4f94942 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,9 @@ 2005-05-25 Jeff Hobbs - * unix/configure.in: ensure false Tcl.framework is only created - with --enable-framework + * generic/tclCmdMZ.c (Tcl_TimeObjCmd): add necessary cast + + * unix/configure, unix/configure.in: ensure false Tcl.framework is + only created with --enable-framework 2005-05-24 Daniel Steffen diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index d26f33c..0c9ff94 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.18 2005/05/24 04:18:54 das Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.19 2005/05/25 19:25:57 hobbs Exp $ */ #include "tclInt.h" @@ -2944,7 +2944,8 @@ Tcl_TimeObjCmd(dummy, interp, objc, objv) totalMicroSec = ( ( (double) ( stop.sec - start.sec ) ) * 1.0e6 + ( stop.usec - start.usec ) ); if (count <= 1) { - objs[0] = Tcl_NewIntObj((count <= 0) ? 0 : totalMicroSec); + /* Use int obj since we know time is not fractional [Bug 1202178] */ + objs[0] = Tcl_NewIntObj((count <= 0) ? 0 : (int) totalMicroSec); } else { objs[0] = Tcl_NewDoubleObj(totalMicroSec/count); } -- cgit v0.12 From 57ee6386d1f294a81696dd756f6650c50201d918 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 26 May 2005 11:19:25 +0000 Subject: * macosx/Makefile: moved & corrected EMBEDDED_BUILD check. * unix/configure.in: corrected framework finalization to softlink stub library to Versions/8.x subdir instead of Versions/Current. * unix/configure: autoconf-2.59 --- ChangeLog | 8 ++++++++ macosx/Makefile | 13 +++++++------ unix/configure | 6 +++--- unix/configure.in | 8 ++++---- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4f94942..537f5c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-05-26 Daniel Steffen + + * macosx/Makefile: moved & corrected EMBEDDED_BUILD check. + + * unix/configure.in: corrected framework finalization to softlink + stub library to Versions/8.x subdir instead of Versions/Current. + * unix/configure: autoconf-2.13 + 2005-05-25 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_TimeObjCmd): add necessary cast diff --git a/macosx/Makefile b/macosx/Makefile index 7883d12..fe59e7b 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -4,7 +4,7 @@ # uses the standard unix build system in tcl/unix (which can be used directly instead of this # if you are not using the tk/macosx projects). # -# RCS: @(#) $Id: Makefile,v 1.5.2.11 2005/05/24 04:20:08 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.12 2005/05/26 11:19:32 das Exp $ # ######################################################################################################## @@ -129,11 +129,6 @@ ${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} build-${PROJECT}: ${OBJ_DIR}/Makefile -ifeq (${EMBEDDED_BUILD}_${INSTALL_ROOT},1_) - @echo "Cannot install-embedded with empty INSTALL_ROOT !" && false -else - @rm -rf "${INSTALL_ROOT}/${LIBDIR}/Tcl.framework" -endif ${DO_MAKE} # symolic link hackery to trick # 'make install INSTALL_ROOT=${OBJ_DIR}' @@ -143,6 +138,12 @@ endif ln -fs ${SYMROOT} ./${BINDIR} && ln -fs ${OBJ_DIR}/tcltest ${SYMROOT} install-${PROJECT}: build-${PROJECT} +ifeq (${EMBEDDED_BUILD}_${INSTALL_ROOT},1_) + @echo "Cannot install-embedded with empty INSTALL_ROOT !" && false +endif +ifeq (${EMBEDDED_BUILD},1) + @rm -rf "${INSTALL_ROOT}/${LIBDIR}/Tcl.framework" +endif ${DO_MAKE} ifeq (${INSTALL_BUILD},1) ifeq (${EMBEDDED_BUILD},1) diff --git a/unix/configure b/unix/configure index a37fbfb..2932e09 100755 --- a/unix/configure +++ b/unix/configure @@ -7739,7 +7739,7 @@ EOF EXTRA_INSTALL="install-private-headers html-tcl" EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' - EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" "$(STUB_LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done' + EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."' TCL_YEAR="`date +%Y`" # Don't use AC_DEFINE for the following as the framework version define # needs to go into the Makefile even when using autoheader, so that we @@ -8192,8 +8192,8 @@ VERSION=${TCL_VERSION} FRAMEWORK_BUILD=${FRAMEWORK_BUILD} EOF cat >> $CONFIG_STATUS <<\EOF -test "$FRAMEWORK_BUILD" = "1" && - n=Tcl && f=$n.framework && v=Versions/$VERSION && +test "$FRAMEWORK_BUILD" = "1" && n=Tcl && + f=$n.framework && v=Versions/$VERSION && echo "creating $f" && rm -rf $f && mkdir -p $f/$v/Resources && ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && diff --git a/unix/configure.in b/unix/configure.in index b2d1793..df40574 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.15 2005/05/25 18:49:28 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.16 2005/05/26 11:19:51 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -479,8 +479,8 @@ if test "$FRAMEWORK_BUILD" = "1" ; then tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in]" # Construct a fake local framework structure to make linking with # '-framework Tcl' and running of tcltest work - AC_OUTPUT_COMMANDS([test "$FRAMEWORK_BUILD" = "1" && - n=Tcl && f=$n.framework && v=Versions/$VERSION && + AC_OUTPUT_COMMANDS([test "$FRAMEWORK_BUILD" = "1" && n=Tcl && + f=$n.framework && v=Versions/$VERSION && echo "creating $f" && rm -rf $f && mkdir -p $f/$v/Resources && ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && @@ -503,7 +503,7 @@ if test "$FRAMEWORK_BUILD" = "1" ; then EXTRA_INSTALL="install-private-headers html-tcl" EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' - EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" "$(STUB_LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done' + EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."' TCL_YEAR="`date +%Y`" # Don't use AC_DEFINE for the following as the framework version define # needs to go into the Makefile even when using autoheader, so that we -- cgit v0.12 From 71b7a083e1bc15a4781e943883921eaa1440a346 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 27 May 2005 18:51:03 +0000 Subject: * README: Bumped patchlevel to 8.4.10 * generic/tcl.h: * tools/tcl.wse.in: * unix/tcl.spec, unix/configure, unix/configure.in: * win/configure, win/configure.in: --- ChangeLog | 8 ++++++++ README | 4 ++-- generic/tcl.h | 8 ++++---- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 9 files changed, 23 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 537f5c8..8077a6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-05-27 Jeff Hobbs + + * README: Bumped patchlevel to 8.4.10 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/tcl.spec, unix/configure, unix/configure.in: + * win/configure, win/configure.in: + 2005-05-26 Daniel Steffen * macosx/Makefile: moved & corrected EMBEDDED_BUILD check. diff --git a/README b/README index e7488c3..6d9378d 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.9 source distribution. + This is the Tcl 8.4.10 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.9 2004/11/25 00:19:27 hobbs Exp $ +RCS: @(#) $Id: README,v 1.49.2.10 2005/05/27 18:51:13 hobbs Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 242e352..5a73e3d 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.17 2005/01/27 22:53:29 andreas_kupries Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.18 2005/05/27 18:51:14 hobbs Exp $ */ #ifndef _TCL @@ -26,7 +26,7 @@ #ifdef __cplusplus extern "C" { #endif - + /* * The following defines are used to indicate the various release levels. */ @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 9 +#define TCL_RELEASE_SERIAL 10 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.9" +#define TCL_PATCH_LEVEL "8.4.10" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index ac54599..e86d3c4 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.9 + Disk Label=tcl8.4.10 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 2932e09..7b173b5 100755 --- a/unix/configure +++ b/unix/configure @@ -554,7 +554,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".9" +TCL_PATCH_LEVEL=".10" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index df40574..36da8b6 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.16 2005/05/26 11:19:51 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.17 2005/05/27 18:51:26 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".9" +TCL_PATCH_LEVEL=".10" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 815a5c3..27f7bd6 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.9 2004/11/25 00:19:33 hobbs Exp $ +# $Id: tcl.spec,v 1.16.2.10 2005/05/27 18:51:22 hobbs Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.9 +%define version 8.4.10 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/configure b/win/configure index 72d3822..52f0982 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".9" +TCL_PATCH_LEVEL=".10" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 1119445..6131536 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.11 2004/11/25 00:19:36 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.12 2005/05/27 18:51:26 hobbs Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".9" +TCL_PATCH_LEVEL=".10" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From d12a2d20059a5e4ff46fbf8a93cf1170f5862c33 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 30 May 2005 01:36:35 +0000 Subject: * win/tclWinThrd.c (TclpFinalizeThreadData): move tlsKey defn to top of file and clarify name (was 'key'). [Bug 1204064] --- ChangeLog | 5 +++++ win/tclWinThrd.c | 46 ++++++++++++++++++++++++++-------------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8077a6d..5d094da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-05-29 Jeff Hobbs + + * win/tclWinThrd.c (TclpFinalizeThreadData): move tlsKey defn + to top of file and clarify name (was 'key'). [Bug 1204064] + 2005-05-27 Jeff Hobbs * README: Bumped patchlevel to 8.4.10 diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index 953a154..e82b26a 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.10 2005/04/07 11:29:33 vasiljevic Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.11 2005/05/30 01:36:53 hobbs Exp $ */ #include "tclWinInt.h" @@ -88,6 +88,20 @@ static Tcl_ThreadDataKey dataKey; #endif /* TCL_THREADS */ /* + * Additions by AOL for specialized thread memory allocator. + */ + +#if defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) +static int once; +static DWORD tlsKey; + +typedef struct allocMutex { + Tcl_Mutex tlock; + CRITICAL_SECTION wlock; +} allocMutex; +#endif + +/* * State bits for the thread. * WIN_THREAD_UNINIT Uninitialized. Must be zero because * of the way ThreadSpecificData is created. @@ -685,10 +699,10 @@ TclpFinalizeThreadData(keyPtr) result = (VOID *)TlsGetValue(*indexPtr); if (result != NULL) { #if defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) - if (indexPtr == &key) { - TclpFreeAllocCache(result); - return; - } + if (indexPtr == &tlsKey) { + TclpFreeAllocCache(result); + return; + } #endif ckfree((char *)result); success = TlsSetValue(*indexPtr, (void *)NULL); @@ -1042,14 +1056,6 @@ TclpFinalizeCondition(condPtr) */ #if defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) -static int once; -static DWORD key; - -typedef struct allocMutex { - Tcl_Mutex tlock; - CRITICAL_SECTION wlock; -} allocMutex; - Tcl_Mutex * TclpNewAllocMutex(void) { @@ -1085,14 +1091,14 @@ TclpGetAllocCache(void) * on each thread that calls this, but only on threads that * call this. */ - key = TlsAlloc(); + tlsKey = TlsAlloc(); once = 1; - if (key == TLS_OUT_OF_INDEXES) { + if (tlsKey == TLS_OUT_OF_INDEXES) { panic("could not allocate thread local storage"); } } - result = TlsGetValue(key); + result = TlsGetValue(tlsKey); if ((result == NULL) && (GetLastError() != NO_ERROR)) { panic("TlsGetValue failed from TclpGetAllocCache!"); } @@ -1103,7 +1109,7 @@ void TclpSetAllocCache(void *ptr) { BOOL success; - success = TlsSetValue(key, ptr); + success = TlsSetValue(tlsKey, ptr); if (!success) { panic("TlsSetValue failed from TclpSetAllocCache!"); } @@ -1119,7 +1125,7 @@ TclpFreeAllocCache(void *ptr) * Called by the pthread lib when a thread exits */ TclFreeAllocCache(ptr); - success = TlsSetValue(key, NULL); + success = TlsSetValue(tlsKey, NULL); if (!success) { panic("TlsSetValue failed from TclpFreeAllocCache!"); } @@ -1127,8 +1133,8 @@ TclpFreeAllocCache(void *ptr) /* * Called by us in TclFinalizeThreadAlloc() during * the library finalization initiated from Tcl_Finalize() - */ - success = TlsFree(key); + */ + success = TlsFree(tlsKey); if (!success) { Tcl_Panic("TlsFree failed from TclpFreeAllocCache!"); } -- cgit v0.12 From 6b46a57162508aa2b627ad5dc9664be0ba1b44f0 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 30 May 2005 18:31:09 +0000 Subject: update to patchlevel 8.4.10 --- win/README.binary | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/win/README.binary b/win/README.binary index 231ad47..b463c01 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.9 2004/11/25 00:19:33 hobbs Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.10 2005/05/30 18:31:09 hobbs Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.9 for +This directory contains the binary distribution of Tcl/Tk 8.4.10 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. -- cgit v0.12 From 323b868f7dfe5140b031b9bf17ad691d722e23b0 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 31 May 2005 08:18:31 +0000 Subject: Notifier thread is created as joinable. Attempt to solve the Tcl Bug #1082283. --- unix/tclUnixNotfy.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index d44144c..f4368c5 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.9 2005/05/14 20:52:33 das Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.10 2005/05/31 08:18:31 vasiljevic Exp $ */ #ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier @@ -222,7 +222,7 @@ Tcl_InitNotifier() Tcl_MutexLock(¬ifierMutex); if (notifierCount == 0) { if (TclpThreadCreate(¬ifierThread, NotifierThreadProc, NULL, - TCL_THREAD_STACK_DEFAULT, TCL_THREAD_NOFLAGS) != TCL_OK) { + TCL_THREAD_STACK_DEFAULT, TCL_THREAD_JOINABLE) != TCL_OK) { panic("Tcl_InitNotifier: unable to start notifier thread"); } } @@ -275,11 +275,12 @@ Tcl_FinalizeNotifier(clientData) */ if (notifierCount == 0) { + int result; if (triggerPipe < 0) { panic("Tcl_FinalizeNotifier: notifier pipe not initialized"); } - /* + /* * Send "q" message to the notifier thread so that it will * terminate. The notifier will return from its call to select() * and notice that a "q" message has arrived, it will then close @@ -293,6 +294,10 @@ Tcl_FinalizeNotifier(clientData) close(triggerPipe); Tcl_ConditionWait(¬ifierCV, ¬ifierMutex, NULL); + result = Tcl_JoinThread(notifierThread); + if (result) { + Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread"); + } } /* -- cgit v0.12 From ea57b5c21323d62f1770ec945e8e4af7a77a532e Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 31 May 2005 08:25:02 +0000 Subject: See file. --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5d094da..b601112 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-05-31 Zoran Vasiljevic + + * unix/tclUnixNotfy.c: the notifier thread is now created as + joinable thread and it is properly joined in Tcl_FinalizeNotifier. + This is an attempt to fix the Tcl Bug #1082283. + 2005-05-29 Jeff Hobbs * win/tclWinThrd.c (TclpFinalizeThreadData): move tlsKey defn -- cgit v0.12 From 8d8ce1873b699933663bdc6197c621c92ac6850b Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 31 May 2005 08:29:10 +0000 Subject: Cosmetic change (fixed identation in Tcl_FinalizeNotifier) --- unix/tclUnixNotfy.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index f4368c5..44f8a24 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.10 2005/05/31 08:18:31 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.11 2005/05/31 08:29:10 vasiljevic Exp $ */ #ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier @@ -295,9 +295,9 @@ Tcl_FinalizeNotifier(clientData) Tcl_ConditionWait(¬ifierCV, ¬ifierMutex, NULL); result = Tcl_JoinThread(notifierThread); - if (result) { - Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread"); - } + if (result) { + Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread"); + } } /* -- cgit v0.12 From ee5c95665c3801b0f3c47b2281f37d1dffb37c49 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 2 Jun 2005 16:54:33 +0000 Subject: updated changes for 8.4.10 release --- changes | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/changes b/changes index 4ef603d..d2f7905 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.16 2004/12/03 00:34:46 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.79.2.17 2005/06/02 16:54:33 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6136,3 +6136,71 @@ search path uniqification added in 8.4.8 (porter) by 'glob' (darley) --- Released 8.4.9, December 6, 2004 --- See ChangeLog for details --- + +2004-12-29 (platform support)[1092952,1091967] MSVC7, gcc OPT compiles (hobbs) + +2005-01-05 (bug fix)[1084595] encoding maps for some Chinese locales (fellows) + +2005-01-06 (performance)[1020491] [http::mapReply] (fellows) +=> http 2.5.1 + +2005-01-25 (bug fix)[1101670] [auto_reset] update for [namespace] (porter) + +2005-01-27 (new feature)[TIP 218] Tcl_Channel API update for threads (kupries) + +2005-01-27 (bug fix)[1109484] Tcl_Expr* updates for Tcl_WideInt (hobbs) + +2005-01-28 (platform support)[1021871] Solaris gcc 64-bit support (hobbs) + +2005-02-10 (bug fix)[1119369] Tcl_EvalObjEx: avoid shimmer loss of List intrep +(sofer,macdonald) + +2005-02-10 (platform support) correct gcc builds for AIX-4+, HP-UX-11 (hobbs) + +2005-02-24 (bug fix)[1119798] prevent [source $directory] (porter,mpettigr) +=> tcltest 2.2.8 + +2005-03-10 (bug fix)[1153871] bad ClientData cast (porter,victorovich) + +2005-03-15 (platform support) OpenBSD ports patch (thoyts) + +2005-03-15 (platform support)[1163422] time_t wider than long (kenny) + +2005-03-18 (bug fix)[1115904] restore recursion limit in direct eval (porter) + +2005-03-29 (platform support) allow msys alone, no cugwin requirement (hobbs) + +2005-04-06 (bug fix)[1178445] memory waste at thread exit (vasiljevic) + +2005-04-13 (bug fix) min buffer size dropped from 10 to 1 byte (gravereaux) + +2005-04-19 (bug fix)[947693] Win pipes honor -blocking during close (gravereaux) +***POTENTIAL INCOMPATIBILITY*** +async pipes on windows, set -blocking 1 before [close] to receive exit status + +2005-04-20 (bug fix)[1090869] Tcl_GetInt accept 0x80000000, 64-bit(porter,singh) + +2005-04-22 (bug fix)[1187123] [string is boolean] respect EIAS (porter) + +2005-04-25 (platform support) builds on Mac OS X 10.1 (steffen) + +2005-05-06 (platform support) x86_64 Solarix cc and Solaris 10 builds (hobbs) + +2005-05-14 (platform support) Mac OSX: configurable CoreFoundation API (steffen) + +2005-05-14 (platform support) Mac OSX: use realpath when threadsafe (steffen) + +2005-05-20 (bug fix)[1201589] boolean literal prefix in expressions (porter) + +2005-05-24 (platform support) Darwin build support merged into unix (steffen) + +2005-05-24 (new feature)[1202209] Mac OSX: support [load] of .bundle binaries +Can support [load] from memory as well (steffen) + +2005-05-24 (new feature)[1202178] [time] returns non-integer result (steffen) + +2005-05-31 (bug fix)[1082283] Unix: notifier thread now joinable (vasiljevic) + +Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] + +--- Released 8.4.10, June XX, 2005 --- See ChangeLog for details --- -- cgit v0.12 From ca7106107072a3bfbf0bb86fda24c2e995c8d494 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 2 Jun 2005 22:52:07 +0000 Subject: minor corrections for 8.4.10 release --- ChangeLog | 4 ++++ changes | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index b601112..5689f80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-06-02 Jeff Hobbs + + * changes: updated for 8.4.10 release (porter) + 2005-05-31 Zoran Vasiljevic * unix/tclUnixNotfy.c: the notifier thread is now created as diff --git a/changes b/changes index d2f7905..64242fa 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.17 2005/06/02 16:54:33 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.18 2005/06/02 22:52:15 hobbs Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6168,17 +6168,18 @@ by 'glob' (darley) 2005-03-18 (bug fix)[1115904] restore recursion limit in direct eval (porter) -2005-03-29 (platform support) allow msys alone, no cugwin requirement (hobbs) +2005-03-29 (platform support) allow msys builds without cygwin (hobbs) -2005-04-06 (bug fix)[1178445] memory waste at thread exit (vasiljevic) +2005-04-06 (bug fix)[1178445] fix memory waste at thread exit (vasiljevic) 2005-04-13 (bug fix) min buffer size dropped from 10 to 1 byte (gravereaux) -2005-04-19 (bug fix)[947693] Win pipes honor -blocking during close (gravereaux) -***POTENTIAL INCOMPATIBILITY*** +2005-04-19 (bug fix)[947693] Windows pipes honor -blocking during close +(gravereaux) ***POTENTIAL INCOMPATIBILITY*** async pipes on windows, set -blocking 1 before [close] to receive exit status -2005-04-20 (bug fix)[1090869] Tcl_GetInt accept 0x80000000, 64-bit(porter,singh) +2005-04-20 (bug fix)[1090869] Tcl_GetInt accept 0x80000000, 64-bit +(porter,singh) 2005-04-22 (bug fix)[1187123] [string is boolean] respect EIAS (porter) @@ -6186,7 +6187,8 @@ async pipes on windows, set -blocking 1 before [close] to receive exit status 2005-05-06 (platform support) x86_64 Solarix cc and Solaris 10 builds (hobbs) -2005-05-14 (platform support) Mac OSX: configurable CoreFoundation API (steffen) +2005-05-14 (platform support) Mac OSX: configurable CoreFoundation API +(steffen) 2005-05-14 (platform support) Mac OSX: use realpath when threadsafe (steffen) @@ -6203,4 +6205,4 @@ Can support [load] from memory as well (steffen) Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] ---- Released 8.4.10, June XX, 2005 --- See ChangeLog for details --- +--- Released 8.4.10, June 4, 2005 --- See ChangeLog for details --- -- cgit v0.12 From 2a85d2c829f45d6981d321525ef4cc0f28741d9e Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 2 Jun 2005 22:52:46 +0000 Subject: * unix/Makefile.in (html): add BUILD_HTML_FLAGS optional var * tools/tcltk-man2html.tcl: add a --useversion to prevent confusion when multiple Tcl source dirs exist. --- ChangeLog | 4 ++++ tools/tcltk-man2html.tcl | 41 +++++++++++++++++++++++++---------------- unix/Makefile.in | 6 +++--- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5689f80..ec2b6d2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-06-02 Jeff Hobbs + * unix/Makefile.in (html): add BUILD_HTML_FLAGS optional var + * tools/tcltk-man2html.tcl: add a --useversion to prevent + confusion when multiple Tcl source dirs exist. + * changes: updated for 8.4.10 release (porter) 2005-05-31 Zoran Vasiljevic diff --git a/tools/tcltk-man2html.tcl b/tools/tcltk-man2html.tcl index b9c8280..f1b1b33 100755 --- a/tools/tcltk-man2html.tcl +++ b/tools/tcltk-man2html.tcl @@ -81,9 +81,12 @@ proc parse_command_line {} { set webdir ../html set build_tcl 0 set build_tk 0 + # Default search version is a glob pattern + set useversion {{,[8-9].[0-9]{,.[0-9]}}} # Handle arguments a la GNU: # --version + # --useversion= # --help # --srcdir=/path # --htmldir=/path @@ -103,6 +106,7 @@ proc parse_command_line {} { puts " --htmldir=DIR put generated HTML in DIR" puts " --tcl build tcl help" puts " --tk build tk help" + puts " --useversion version of tcl/tk to search for" exit 0 } @@ -116,6 +120,11 @@ proc parse_command_line {} { set webdir [string range $option 10 end] } + --useversion=* { + # length of "--useversion=" is 13 + set useversion [string range $option 13 end] + } + --tcl { set build_tcl 1 } @@ -134,25 +143,25 @@ proc parse_command_line {} { if {!$build_tcl && !$build_tk} {set build_tcl 1; set build_tk 1} if {$build_tcl} { - # Find Tcl. - set tcldir [lindex [lsort [glob -nocomplain -tails -type d \ - -directory $tcltkdir {tcl{,[8-9].[0-9]{,.[0-9]}}}]] end] - if {$tcldir == ""} then { - puts stderr "tcltk-man-html: couldn't find Tcl below $tcltkdir" - exit 1 - } - puts "using Tcl source directory $tcldir" + # Find Tcl. + set tcldir [lindex [lsort [glob -nocomplain -tails -type d \ + -directory $tcltkdir tcl$useversion]] end] + if {$tcldir == ""} then { + puts stderr "tcltk-man-html: couldn't find Tcl below $tcltkdir" + exit 1 + } + puts "using Tcl source directory $tcldir" } if {$build_tk} { - # Find Tk. - set tkdir [lindex [lsort [glob -nocomplain -tails -type d \ - -directory $tcltkdir {tk{,[8-9].[0-9]{,.[0-9]}}}]] end] - if {$tkdir == ""} then { - puts stderr "tcltk-man-html: couldn't find Tk below $tcltkdir" - exit 1 - } - puts "using Tk source directory $tkdir" + # Find Tk. + set tkdir [lindex [lsort [glob -nocomplain -tails -type d \ + -directory $tcltkdir tk$useversion]] end] + if {$tkdir == ""} then { + puts stderr "tcltk-man-html: couldn't find Tk below $tcltkdir" + exit 1 + } + puts "using Tk source directory $tkdir" } # the title for the man pages overall diff --git a/unix/Makefile.in b/unix/Makefile.in index 53169e6..552b343 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.13 2005/05/24 04:20:08 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.14 2005/06/02 22:52:51 hobbs Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1362,7 +1362,7 @@ allpatch: dist # This target creates the HTML folder for Tcl & Tk and places it # in DISTDIR/html. It uses the tcltk-man2html.tcl tool from # the Tcl group's tool workspace. It depends on the Tcl & Tk being -# in directories called tcl8.3 & tk8.3 up two directories from the +# in directories called tcl8.* & tk8.* up two directories from the # TOOL_DIR. # @@ -1380,7 +1380,7 @@ BUILD_HTML = \ @@LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \ ./tclsh $(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(HTML_INSTALL_DIR) \ - --srcdir=$(TOP_DIR)/.. + --srcdir=$(TOP_DIR)/.. $(BUILD_HTML_FLAGS) # # Target to create a Macintosh version of the distribution. This will -- cgit v0.12 From 990dc3c3dc679e98615c7d8227296f351142fde9 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 2 Jun 2005 23:14:51 +0000 Subject: note 8.4.10 tag date --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index ec2b6d2..9769863 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-06-02 Jeff Hobbs + *** 8.4.10 TAGGED FOR RELEASE *** + * unix/Makefile.in (html): add BUILD_HTML_FLAGS optional var * tools/tcltk-man2html.tcl: add a --useversion to prevent confusion when multiple Tcl source dirs exist. -- cgit v0.12 From 680a0c41fa203c90d00c1e021fcd6c04ded699cf Mon Sep 17 00:00:00 2001 From: das Date: Fri, 3 Jun 2005 08:53:11 +0000 Subject: * macosx/Makefile: fixed 'embedded' target. --- ChangeLog | 6 +++++- macosx/Makefile | 7 +++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9769863..4b334fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,11 @@ -2005-06-02 Jeff Hobbs +2005-06-03 Daniel Steffen *** 8.4.10 TAGGED FOR RELEASE *** + * macosx/Makefile: fixed 'embedded' target. + +2005-06-02 Jeff Hobbs + * unix/Makefile.in (html): add BUILD_HTML_FLAGS optional var * tools/tcltk-man2html.tcl: add a --useversion to prevent confusion when multiple Tcl source dirs exist. diff --git a/macosx/Makefile b/macosx/Makefile index fe59e7b..105ac08 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -4,7 +4,7 @@ # uses the standard unix build system in tcl/unix (which can be used directly instead of this # if you are not using the tk/macosx projects). # -# RCS: @(#) $Id: Makefile,v 1.5.2.12 2005/05/26 11:19:32 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.13 2005/06/03 08:53:12 das Exp $ # ######################################################################################################## @@ -115,12 +115,11 @@ clean-${PROJECT} distclean-${PROJECT} test-${PROJECT}: \ DO_MAKE = +${MAKE} -C ${OBJ_DIR} ${target} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} -${PROJECT}: override INSTALL_ROOT := ${OBJ_DIR}/ - #------------------------------------------------------------------------------------------------------- # build rules -${PROJECT}: install-${PROJECT} +${PROJECT}: + ${MAKE} install-${PROJECT} INSTALL_ROOT=${OBJ_DIR}/ ${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && ${UNIX_DIR}/configure \ -- cgit v0.12 From 5b9dc1f301235283676383d32e57f593e0f1cec6 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 4 Jun 2005 07:05:10 +0000 Subject: * unix/tclLoadDyld.c: fixed header confilict when building this file with USE_TCL_STUBS. --- ChangeLog | 3 +++ unix/tclLoadDyld.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4b334fd..c56bcf2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ *** 8.4.10 TAGGED FOR RELEASE *** + * unix/tclLoadDyld.c: fixed header confilict when building this file + with USE_TCL_STUBS. + * macosx/Makefile: fixed 'embedded' target. 2005-06-02 Jeff Hobbs diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 4a42b51..10afad7 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -11,12 +11,13 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.2 2005/05/24 04:19:33 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.3 2005/06/04 07:05:14 das Exp $ */ #include "tclInt.h" #include "tclPort.h" #include +#undef panic #include typedef struct Tcl_DyldModuleHandle { -- cgit v0.12 From c4145a46a5110b3353c45819c1adaa04255af185 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 6 Jun 2005 13:04:53 +0000 Subject: typo --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c56bcf2..d803879 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,7 @@ *** 8.4.10 TAGGED FOR RELEASE *** - * unix/tclLoadDyld.c: fixed header confilict when building this file + * unix/tclLoadDyld.c: fixed header conflict when building this file with USE_TCL_STUBS. * macosx/Makefile: fixed 'embedded' target. -- cgit v0.12 From 9e2048760ff54bef0c32741a572785bdda40381c Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 6 Jun 2005 21:04:37 +0000 Subject: Correct crash in stack.test on gcc/win32 --- ChangeLog | 5 + win/tclWin32Dll.c | 540 ++++++++++++++++++++++++------------------------------ 2 files changed, 247 insertions(+), 298 deletions(-) diff --git a/ChangeLog b/ChangeLog index d803879..bf416c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-06-06 Kevin B. Kenny + + * win/tclWin32Dll.c: Corrected another buglet in the assembly + code for stack probing on Win32/gcc. [Bug #1213678] + 2005-06-03 Daniel Steffen *** 8.4.10 TAGGED FOR RELEASE *** diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index 5e72682..bd2ebd0 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.6 2004/09/01 17:28:04 hobbs Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.7 2005/06/06 21:04:47 kennykb Exp $ */ #include "tclWinInt.h" @@ -37,46 +37,25 @@ typedef VOID (WINAPI UTUNREGISTER)(HANDLE hModule); static HINSTANCE hInstance; /* HINSTANCE of this DLL. */ static int platformId; /* Running under NT, or 95/98? */ -#if defined(HAVE_NO_SEH) && defined(TCL_MEM_DEBUG) -static void *INITIAL_ESP, - *INITIAL_EBP, - *INITIAL_HANDLER, - *RESTORED_ESP, - *RESTORED_EBP, - *RESTORED_HANDLER; -#endif /* HAVE_NO_SEH && TCL_MEM_DEBUG */ - #ifdef HAVE_NO_SEH -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_dllmain_detach_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext); - -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_checkstackspace_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext); - -static -__attribute__((cdecl)) -EXCEPTION_DISPOSITION -_except_TclWinCPUID_detach_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext); +/* + * Unlike Borland and Microsoft, we don't register exception handlers + * by pushing registration records onto the runtime stack. Instead, we + * register them by creating an EXCEPTION_REGISTRATION within the activation + * record. + */ -#endif /* HAVE_NO_SEH */ +typedef struct EXCEPTION_REGISTRATION { + struct EXCEPTION_REGISTRATION* link; + EXCEPTION_DISPOSITION (*handler)( struct _EXCEPTION_RECORD*, void*, + struct _CONTEXT*, void* ); + void* ebp; + void* esp; + int status; +} EXCEPTION_REGISTRATION; +#endif /* * VC++ 5.x has no 'cpuid' assembler instruction, so we @@ -293,6 +272,10 @@ DllMain(hInst, reason, reserved) DWORD reason; /* Reason this function is being called. */ LPVOID reserved; /* Not used. */ { +#ifdef HAVE_NO_SEH + EXCEPTION_REGISTRATION registration; +#endif + switch (reason) { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hInst); @@ -306,102 +289,85 @@ DllMain(hInst, reason, reserved) * be unstable. */ #ifdef HAVE_NO_SEH -# ifdef TCL_MEM_DEBUG - __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(INITIAL_ESP), - "=m"(INITIAL_EBP), - "=r"(INITIAL_HANDLER) ); -# endif /* TCL_MEM_DEBUG */ + __asm__ __volatile__ ( + + /* + * Construct an EXCEPTION_REGISTRATION to protect the + * call to Tcl_Finalize + */ + "leal %[registration], %%edx" "\n\t" + "movl %%fs:0, %%eax" "\n\t" + "movl %%eax, 0x0(%%edx)" "\n\t" /* link */ + "leal 1f, %%eax" "\n\t" + "movl %%eax, 0x4(%%edx)" "\n\t" /* handler */ + "movl %%ebp, 0x8(%%edx)" "\n\t" /* ebp */ + "movl %%esp, 0xc(%%edx)" "\n\t" /* esp */ + "movl %[error], 0x10(%%edx)" "\n\t" /* status */ + + /* + * Link the EXCEPTION_REGISTRATION on the chain + */ + "movl %%edx, %%fs:0" "\n\t" + + /* + * Call Tcl_Finalize + */ + "call _Tcl_Finalize" "\n\t" + + /* + * Come here on a normal exit. Recover the EXCEPTION_REGISTRATION + * and store a TCL_OK status + */ + + "movl %%fs:0, %%edx" "\n\t" + "movl %[ok], %%eax" "\n\t" + "movl %%eax, 0x10(%%edx)" "\n\t" + "jmp 2f" "\n" + + /* + * Come here on an exception. Get the EXCEPTION_REGISTRATION + * that we previously put on the chain. + */ + + "1:" "\t" + "movl %%fs:0, %%edx" "\n\t" + "movl 0x8(%%edx), %%edx" "\n" + + + /* + * Come here however we exited. Restore context from the + * EXCEPTION_REGISTRATION in case the stack is unbalanced. + */ + + "2:" "\t" + "movl 0xc(%%edx), %%esp" "\n\t" + "movl 0x8(%%edx), %%ebp" "\n\t" + "movl 0x0(%%edx), %%eax" "\n\t" + "movl %%eax, %%fs:0" "\n\t" - __asm__ __volatile__ ( - "pushl %%ebp" "\n\t" - "pushl %0" "\n\t" - "pushl %%fs:0" "\n\t" - "movl %%esp, %%fs:0" : - : "r" (_except_dllmain_detach_handler) ); -#else - __try { -#endif /* HAVE_NO_SEH */ - - Tcl_Finalize(); - -#ifdef HAVE_NO_SEH - __asm__ __volatile__ ( - "jmp dllmain_detach_pop" "\n" - "dllmain_detach_reentry:" "\n\t" - "movl %%fs:0, %%eax" "\n\t" - "movl 0x8(%%eax), %%esp" "\n\t" - "movl 0x8(%%esp), %%ebp" "\n" - "dllmain_detach_pop:" "\n\t" - "movl (%%esp), %%eax" "\n\t" - "movl %%eax, %%fs:0" "\n\t" - "add $12, %%esp" "\n\t" + /* No outputs */ : + [registration] "m" (registration), + [ok] "i" (TCL_OK), + [error] "i" (TCL_ERROR) : - : "%eax"); + "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory" + ); -# ifdef TCL_MEM_DEBUG - __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(RESTORED_ESP), - "=m"(RESTORED_EBP), - "=r"(RESTORED_HANDLER) ); - - if (INITIAL_ESP != RESTORED_ESP) - Tcl_Panic("ESP restored incorrectly"); - if (INITIAL_EBP != RESTORED_EBP) - Tcl_Panic("EBP restored incorrectly"); - if (INITIAL_HANDLER != RESTORED_HANDLER) - Tcl_Panic("HANDLER restored incorrectly"); -# endif /* TCL_MEM_DEBUG */ -#else +#else /* HAVE_NO_SEH */ + __try { + Tcl_Finalize(); } __except (EXCEPTION_EXECUTE_HANDLER) { /* empty handler body. */ } -#endif /* HAVE_NO_SEH */ +#endif + break; } return TRUE; } - -/* - *---------------------------------------------------------------------- - * - * _except_dllmain_detach_handler -- - * - * SEH exception handler for DllMain. - * - * Results: - * See DllMain. - * - * Side effects: - * See DllMain. - * - *---------------------------------------------------------------------- - */ -#ifdef HAVE_NO_SEH -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_dllmain_detach_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext) -{ - __asm__ __volatile__ ( - "jmp dllmain_detach_reentry"); - return 0; /* Function does not return */ -} -#endif /* HAVE_NO_SEH */ - #endif /* !STATIC_BUILD */ #endif /* __WIN32__ */ @@ -544,6 +510,10 @@ TclWinNoBackslash( int TclpCheckStackSpace() { + +#ifdef HAVE_NO_SEH + EXCEPTION_REGISTRATION registration; +#endif int retval = 0; /* @@ -554,113 +524,97 @@ TclpCheckStackSpace() */ #ifdef HAVE_NO_SEH -# ifdef TCL_MEM_DEBUG __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(INITIAL_ESP), - "=m"(INITIAL_EBP), - "=r"(INITIAL_HANDLER) ); -# endif /* TCL_MEM_DEBUG */ - __asm__ __volatile__ ( - "pushl %%ebp" "\n\t" - "pushl %0" "\n\t" - "pushl %%fs:0" "\n\t" - "movl %%esp, %%fs:0" - : - : "r" (_except_checkstackspace_handler) ); -#else + /* + * Construct an EXCEPTION_REGISTRATION to protect the + * call to __alloca + */ + "leal %[registration], %%edx" "\n\t" + "movl %%fs:0, %%eax" "\n\t" + "movl %%eax, 0x0(%%edx)" "\n\t" /* link */ + "leal 1f, %%eax" "\n\t" + "movl %%eax, 0x4(%%edx)" "\n\t" /* handler */ + "movl %%ebp, 0x8(%%edx)" "\n\t" /* ebp */ + "movl %%esp, 0xc(%%edx)" "\n\t" /* esp */ + "movl %[error], 0x10(%%edx)" "\n\t" /* status */ + + /* + * Link the EXCEPTION_REGISTRATION on the chain + */ + "movl %%edx, %%fs:0" "\n\t" + + /* + * Attempt a call to __alloca, to determine whether there's + * sufficient memory to be had. + */ + + "movl %[size], %%eax" "\n\t" + "pushl %%eax" "\n\t" + "call __alloca" "\n\t" + + /* + * Come here on a normal exit. Recover the EXCEPTION_REGISTRATION + * and store a TCL_OK status + */ + "movl %%fs:0, %%edx" "\n\t" + "movl %[ok], %%eax" "\n\t" + "movl %%eax, 0x10(%%edx)" "\n\t" + "jmp 2f" "\n" + + /* + * Come here on an exception. Get the EXCEPTION_REGISTRATION + * that we previously put on the chain. + */ + "1:" "\t" + "movl %%fs:0, %%edx" "\n\t" + "movl 0x8(%%edx), %%edx" "\n\t" + + /* + * Come here however we exited. Restore context from the + * EXCEPTION_REGISTRATION in case the stack is unbalanced. + */ + + "2:" "\t" + "movl 0xc(%%edx), %%esp" "\n\t" + "movl 0x8(%%edx), %%ebp" "\n\t" + "movl 0x0(%%edx), %%eax" "\n\t" + "movl %%eax, %%fs:0" "\n\t" + + : + /* No outputs */ + : + [registration] "m" (registration), + [ok] "i" (TCL_OK), + [error] "i" (TCL_ERROR), + [size] "i" (TCL_WIN_STACK_THRESHOLD) + : + "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory" + ); + retval = (registration.status == TCL_OK); + +#else /* !HAVE_NO_SEH */ __try { -#endif /* HAVE_NO_SEH */ #ifdef HAVE_ALLOCA_GCC_INLINE - __asm__ __volatile__ ( + __asm__ __volatile__ ( "movl %0, %%eax" "\n\t" "call __alloca" "\n\t" : : "i"(TCL_WIN_STACK_THRESHOLD) : "%eax"); #else - alloca(TCL_WIN_STACK_THRESHOLD); + alloca(TCL_WIN_STACK_THRESHOLD); #endif /* HAVE_ALLOCA_GCC_INLINE */ - retval = 1; -#ifdef HAVE_NO_SEH - __asm__ __volatile__ ( - "movl %%fs:0, %%esp" "\n\t" - "jmp checkstackspace_pop" "\n" - "checkstackspace_reentry:" "\n\t" - "movl %%fs:0, %%eax" "\n\t" - "movl 0x8(%%eax), %%esp" "\n\t" - "movl 0x8(%%esp), %%ebp" "\n" - "checkstackspace_pop:" "\n\t" - "movl (%%esp), %%eax" "\n\t" - "movl %%eax, %%fs:0" "\n\t" - "add $12, %%esp" "\n\t" - : - : - : "%eax"); - -# ifdef TCL_MEM_DEBUG - __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(RESTORED_ESP), - "=m"(RESTORED_EBP), - "=r"(RESTORED_HANDLER) ); - - if (INITIAL_ESP != RESTORED_ESP) - panic("ESP restored incorrectly"); - if (INITIAL_EBP != RESTORED_EBP) - panic("EBP restored incorrectly"); - if (INITIAL_HANDLER != RESTORED_HANDLER) - panic("HANDLER restored incorrectly"); -# endif /* TCL_MEM_DEBUG */ -#else + retval = 1; } __except (EXCEPTION_EXECUTE_HANDLER) {} #endif /* HAVE_NO_SEH */ - /* - * Avoid using control flow statements in the SEH guarded block! - */ return retval; } /* *---------------------------------------------------------------------- * - * _except_checkstackspace_handler -- - * - * SEH exception handler for TclpCheckStackSpace. - * - * Results: - * See TclpCheckStackSpace. - * - * Side effects: - * See TclpCheckStackSpace. - * - *---------------------------------------------------------------------- - */ -#ifdef HAVE_NO_SEH -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_checkstackspace_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext) -{ - __asm__ __volatile__ ( - "jmp checkstackspace_reentry"); - return 0; /* Function does not return */ -} -#endif /* HAVE_NO_SEH */ - -/* - *---------------------------------------------------------------------- - * * TclWinGetPlatform -- * * This is a kludge that allows the test library to get access @@ -1055,70 +1009,93 @@ Tcl_WinTCharToUtf(string, len, dsPtr) int TclWinCPUID( unsigned int index, /* Which CPUID value to retrieve */ - register unsigned int * regsPtr ) /* Registers after the CPUID */ + unsigned int * regsPtr ) /* Registers after the CPUID */ { +#ifdef HAVE_NO_SEH + EXCEPTION_REGISTRATION registration; +#endif int status = TCL_ERROR; -#if defined(__GNUC__) - - /* Establish structured exception handling */ +#if defined(__GNUC__) && !defined(_WIN64) -# ifdef HAVE_NO_SEH + /* + * Execute the CPUID instruction with the given index, and + * store results off 'regPtr'. + */ + __asm__ __volatile__ ( - "pushl %%ebp" "\n\t" - "pushl %0" "\n\t" - "pushl %%fs:0" "\n\t" - "movl %%esp, %%fs:0" - : - : "r" (_except_TclWinCPUID_detach_handler) ); -# else - __try { -# endif - - /* - * Execute the CPUID instruction with the given index, and - * store results off 'regPtr'. - */ - - __asm__ __volatile__ ( - "movl %4, %%eax" "\n\t" - "cpuid" "\n\t" - "movl %%eax, %0" "\n\t" - "movl %%ebx, %1" "\n\t" - "movl %%ecx, %2" "\n\t" - "movl %%edx, %3" - : - "=m"(regsPtr[0]), - "=m"(regsPtr[1]), - "=m"(regsPtr[2]), - "=m"(regsPtr[3]) - : "m"(index) - : "%eax", "%ebx", "%ecx", "%edx" ); - status = TCL_OK; - - /* End the structured exception handler */ - -# ifndef HAVE_NO_SEH - } __except( EXCEPTION_EXECUTE_HANDLER ) { - /* do nothing */ - } -# else - __asm __volatile__ ( - "jmp TclWinCPUID_detach_pop" "\n" - "TclWinCPUID_detach_reentry:" "\n\t" - "movl %%fs:0, %%eax" "\n\t" - "movl 0x8(%%eax), %%esp" "\n\t" - "movl 0x8(%%esp), %%ebp" "\n" - "TclWinCPUID_detach_pop:" "\n\t" - "movl (%%esp), %%eax" "\n\t" - "movl %%eax, %%fs:0" "\n\t" - "add $12, %%esp" "\n\t" - : - : - : "%eax"); -# endif + /* + * Construct an EXCEPTION_REGISTRATION to protect the + * CPUID instruction (early 486's don't have CPUID) + */ + "leal %[registration], %%edx" "\n\t" + "movl %%fs:0, %%eax" "\n\t" + "movl %%eax, 0x0(%%edx)" "\n\t" /* link */ + "leal 1f, %%eax" "\n\t" + "movl %%eax, 0x4(%%edx)" "\n\t" /* handler */ + "movl %%ebp, 0x8(%%edx)" "\n\t" /* ebp */ + "movl %%esp, 0xc(%%edx)" "\n\t" /* esp */ + "movl %[error], 0x10(%%edx)" "\n\t" /* status */ + + /* + * Link the EXCEPTION_REGISTRATION on the chain + */ + "movl %%edx, %%fs:0" "\n\t" + + /* + * Do the CPUID instruction, and save the results in + * the 'regsPtr' area + */ + + "movl %[rptr], %%edi" "\n\t" + "movl %[index], %%eax" "\n\t" + "cpuid" "\n\t" + "movl %%eax, 0x0(%%edi)" "\n\t" + "movl %%ebx, 0x4(%%edi)" "\n\t" + "movl %%ecx, 0x8(%%edi)" "\n\t" + "movl %%edx, 0xc(%%edi)" "\n\t" + + /* + * Come here on a normal exit. Recover the EXCEPTION_REGISTRATION + * and store a TCL_OK status + */ + "movl %%fs:0, %%edx" "\n\t" + "movl %[ok], %%eax" "\n\t" + "movl %%eax, 0x10(%%edx)" "\n\t" + "jmp 2f" "\n" + + /* + * Come here on an exception. Get the EXCEPTION_REGISTRATION + * that we previously put on the chain. + */ + "1:" "\t" + "movl %%fs:0, %%edx" "\n\t" + "movl 0x8(%%edx), %%edx" "\n\t" + + /* + * Come here however we exited. Restore context from the + * EXCEPTION_REGISTRATION in case the stack is unbalanced. + */ + + "2:" "\t" + "movl 0xc(%%edx), %%esp" "\n\t" + "movl 0x8(%%edx), %%ebp" "\n\t" + "movl 0x0(%%edx), %%eax" "\n\t" + "movl %%eax, %%fs:0" "\n\t" + + : + /* No outputs */ + : + [index] "m" (index), + [rptr] "m" (regsPtr), + [registration] "m" (registration), + [ok] "i" (TCL_OK), + [error] "i" (TCL_ERROR) + : + "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory" ); + status = registration.status; #elif defined(_MSC_VER) && !defined(_WIN64) @@ -1140,7 +1117,7 @@ TclWinCPUID( unsigned int index, /* Which CPUID value to retrieve */ push ecx push edx mov eax, regs.dw0 - cpuid + cpuid mov regs.dw0, eax mov regs.dw1, ebx mov regs.dw2, ecx @@ -1167,36 +1144,3 @@ TclWinCPUID( unsigned int index, /* Which CPUID value to retrieve */ #endif return status; } - -/* - *---------------------------------------------------------------------- - * - * _except_TclWinCPUID_detach_handler -- - * - * SEH exception handler for TclWinCPUID. - * - * Results: - * See TclWinCPUID. - * - * Side effects: - * See TclWinCPUID. - * - *---------------------------------------------------------------------- - */ - -#if defined( HAVE_NO_SEH ) -static -__attribute__((cdecl)) -EXCEPTION_DISPOSITION -_except_TclWinCPUID_detach_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext) -{ - __asm__ __volatile__ ( - "jmp TclWinCPUID_detach_reentry" ); - return 0; /* Function does not return */ -} -#endif - -- cgit v0.12 From a36b4c045ab06380df9b554a4cd8ebfefe9da25d Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 7 Jun 2005 10:26:56 +0000 Subject: Backport unix threading fix --- ChangeLog | 5 +++++ unix/tclUnixNotfy.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index bf416c5..dec2092 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-06-07 Donal K. Fellows + + * unix/tclUnixNotfy.c (Tcl_FinalizeNotifier): Add dummy variable + so threaded build compiles. + 2005-06-06 Kevin B. Kenny * win/tclWin32Dll.c: Corrected another buglet in the assembly diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 44f8a24..1f1615d 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.11 2005/05/31 08:29:10 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.12 2005/06/07 10:26:58 dkf Exp $ */ #ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier @@ -275,7 +275,7 @@ Tcl_FinalizeNotifier(clientData) */ if (notifierCount == 0) { - int result; + int result, dummy; if (triggerPipe < 0) { panic("Tcl_FinalizeNotifier: notifier pipe not initialized"); } @@ -294,7 +294,7 @@ Tcl_FinalizeNotifier(clientData) close(triggerPipe); Tcl_ConditionWait(¬ifierCV, ¬ifierMutex, NULL); - result = Tcl_JoinThread(notifierThread); + result = Tcl_JoinThread(notifierThread, &dummy); if (result) { Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread"); } -- cgit v0.12 From 17efc09f1ef6cf0d49925423ef414a55c83320b2 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 17 Jun 2005 23:26:06 +0000 Subject: Fix bug in [format %hx] handling on selected platforms. [Bug 1154163] --- ChangeLog | 5 +++++ generic/tclCmdAH.c | 38 ++++++++++++++++++++++---------------- tests/format.test | 6 +++++- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index dec2092..f9e9186 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-06-18 Donal K. Fellows + + * generic/tclCmdAH.c (Tcl_FormatObjCmd): Fix for [Bug 1154163]; only + * tests/format.test: insert 'l' modifier when it is needed. + 2005-06-07 Donal K. Fellows * unix/tclUnixNotfy.c (Tcl_FinalizeNotifier): Add dummy variable diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 4d99fbd..9c9fe7e 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.11 2004/10/30 21:00:09 msofer Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.12 2005/06/17 23:26:20 dkf Exp $ */ #include "tclInt.h" @@ -2187,31 +2187,37 @@ Tcl_FormatObjCmd(dummy, interp, objc, objv) case 'u': case 'x': case 'X': - if ( useWide ) { - if ( Tcl_GetWideIntFromObj( interp, /* INTL: Tcl source. */ - objv[objIndex], &wideValue ) - != TCL_OK ) { + if (useWide) { + if (Tcl_GetWideIntFromObj(interp, /* INTL: Tcl source. */ + objv[objIndex], &wideValue) != TCL_OK) { goto fmtError; } whichValue = WIDE_VALUE; size = 40 + precision; break; } - if ( Tcl_GetLongFromObj( interp, /* INTL: Tcl source. */ - objv[objIndex], &intValue ) != TCL_OK ) { + if (Tcl_GetLongFromObj(interp, /* INTL: Tcl source. */ + objv[objIndex], &intValue) != TCL_OK) { goto fmtError; } #if (LONG_MAX > INT_MAX) - /* - * Add the 'l' for long format type because we are on an - * LP64 archtecture and we are really going to pass a long - * argument to sprintf. - */ - newPtr++; - *newPtr = 0; - newPtr[-1] = newPtr[-2]; - newPtr[-2] = 'l'; + if (!useShort) { + /* + * Add the 'l' for long format type because we are on an + * LP64 archtecture and we are really going to pass a long + * argument to sprintf. + * + * Do not add this if we're going to pass in a short (i.e. + * if we've got an 'h' modifier already in the string); some + * libc implementations of sprintf() do not like it at all. + * [Bug 1154163] + */ + newPtr++; + *newPtr = 0; + newPtr[-1] = newPtr[-2]; + newPtr[-2] = 'l'; + } #endif /* LONG_MAX > INT_MAX */ whichValue = INT_VALUE; size = 40 + precision; diff --git a/tests/format.test b/tests/format.test index 3ca51ac..448f162 100644 --- a/tests/format.test +++ b/tests/format.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: format.test,v 1.11.2.6 2004/10/27 17:55:14 kennykb Exp $ +# RCS: @(#) $Id: format.test,v 1.11.2.7 2005/06/17 23:26:20 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -365,6 +365,10 @@ test format-10.2 {"h" format specifier} {nonPortable} { test format-10.3 {"h" format specifier} {nonPortable} { format %hd 0x10000 } 0 +test format-10.4 {"h" format specifier} { + # Bug 1154163: This is minimal behaviour for %hx specifier! + format %hx 1 +} 1 test format-11.1 {XPG3 %$n specifiers} { format {%2$d %1$d} 4 5 -- cgit v0.12 From 3af0a1bec85c9cf7e161e48fff91936d2d8dcceb Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 18 Jun 2005 19:24:13 +0000 Subject: * README: Bump version number to 8.4.11 * generic/tcl.h: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf * win/configure: --- ChangeLog | 13 +++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index f9e9186..26432b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2005-06-18 Don Porter + + * README: Bump version number to 8.4.11 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf + * win/configure: + 2005-06-18 Donal K. Fellows * generic/tclCmdAH.c (Tcl_FormatObjCmd): Fix for [Bug 1154163]; only diff --git a/README b/README index 6d9378d..8a1bf2d 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.10 source distribution. + This is the Tcl 8.4.11 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.10 2005/05/27 18:51:13 hobbs Exp $ +RCS: @(#) $Id: README,v 1.49.2.11 2005/06/18 19:24:16 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 5a73e3d..2a10fd1 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.18 2005/05/27 18:51:14 hobbs Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.19 2005/06/18 19:24:16 dgp Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 10 +#define TCL_RELEASE_SERIAL 11 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.10" +#define TCL_PATCH_LEVEL "8.4.11" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index e86d3c4..f2296e9 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.10 + Disk Label=tcl8.4.11 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 7b173b5..89b4116 100755 --- a/unix/configure +++ b/unix/configure @@ -554,7 +554,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".10" +TCL_PATCH_LEVEL=".11" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 36da8b6..ad3cc18 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.17 2005/05/27 18:51:26 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.18 2005/06/18 19:24:25 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".10" +TCL_PATCH_LEVEL=".11" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 27f7bd6..377434c 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.10 2005/05/27 18:51:22 hobbs Exp $ +# $Id: tcl.spec,v 1.16.2.11 2005/06/18 19:24:25 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.10 +%define version 8.4.11 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index b463c01..90d372b 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.10 2005/05/30 18:31:09 hobbs Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.11 2005/06/18 19:24:25 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.10 for +This directory contains the binary distribution of Tcl/Tk 8.4.11 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 52f0982..31603d1 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".10" +TCL_PATCH_LEVEL=".11" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 6131536..5e38034 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.12 2005/05/27 18:51:26 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.13 2005/06/18 19:24:25 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".10" +TCL_PATCH_LEVEL=".11" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 2036c0911f728af395f4e38d571be3bbc13b5a56 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 18 Jun 2005 19:52:33 +0000 Subject: * changes: Update changes for 8.4.11 release --- ChangeLog | 2 ++ changes | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 26432b5..d6192a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-06-18 Don Porter + * changes: Update changes for 8.4.11 release + * README: Bump version number to 8.4.11 * generic/tcl.h: * tools/tcl.wse.in: diff --git a/changes b/changes index 64242fa..1e6bf4d 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.18 2005/06/02 22:52:15 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.79.2.19 2005/06/18 19:52:36 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6206,3 +6206,11 @@ Can support [load] from memory as well (steffen) Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] --- Released 8.4.10, June 4, 2005 --- See ChangeLog for details --- + +2005-06-06 (bug fix)[1213678] Windows/gcc: crash in stack.test (kenny) + +2005-06-07 (bug fix) Unix: --enable-threads compile failure (fellows) + +2005-06-18 (bug fix)[1154163] [format %h] on 64-bit OS's (kraft,fellows) + +--- Released 8.4.11, June 24, 2005 --- See ChangeLog for details --- -- cgit v0.12 From dc7b4ae71649cd0d47f0f27aa88a411c0e65f782 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 18 Jun 2005 20:19:51 +0000 Subject: release tag --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index d6192a8..dca7618 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-06-18 Don Porter + *** 8.4.11 TAGGED FOR RELEASE *** + * changes: Update changes for 8.4.11 release * README: Bump version number to 8.4.11 -- cgit v0.12 From f9864f346be2acee6721e241f42b7840bbec9c3e Mon Sep 17 00:00:00 2001 From: das Date: Sat, 18 Jun 2005 21:46:40 +0000 Subject: *** 8.4.11 TAGGED FOR RELEASE *** * generic/tclInt.h: ensure WORDS_BIGENDIAN is defined correctly with fat compiles on Darwin (i.e. ppc and i386 at the same time), the configure AC_C_BIGENDIAN check is not sufficient in this case because a single run of the compiler builds for two architectures with different endianness. * unix/tcl.m4 (Darwin): add -headerpad_max_install_names to LDFLAGS to ensure we can always relocate binaries with install_name_tool. * unix/configure: autoconf-2.13 --- ChangeLog | 14 ++++++++++++++ generic/tclInt.h | 27 ++++++++++++++++++++++++++- unix/configure | 2 +- unix/tcl.m4 | 2 +- 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index dca7618..9bf583b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2005-06-18 Daniel Steffen + + *** 8.4.11 TAGGED FOR RELEASE *** + + * generic/tclInt.h: ensure WORDS_BIGENDIAN is defined correctly with fat + compiles on Darwin (i.e. ppc and i386 at the same time), the configure + AC_C_BIGENDIAN check is not sufficient in this case because a single run + of the compiler builds for two architectures with different endianness. + + * unix/tcl.m4 (Darwin): add -headerpad_max_install_names to LDFLAGS to + ensure we can always relocate binaries with install_name_tool. + + * unix/configure: autoconf-2.13 + 2005-06-18 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** diff --git a/generic/tclInt.h b/generic/tclInt.h index 7f555ec..2716467 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.10 2005/05/24 04:19:33 das Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.11 2005/06/18 21:46:42 das Exp $ */ #ifndef _TCLINT @@ -51,6 +51,31 @@ #include #endif +/* + * Ensure WORDS_BIGENDIAN is defined correcly: + * Needs to happen here in addition to configure to work with + * fat compiles on Darwin (i.e. ppc and i386 at the same time). + */ + +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_PARAM_H +# include +#endif +#ifdef BYTE_ORDER +# ifdef BIG_ENDIAN +# if BYTE_ORDER == BIG_ENDIAN +# define WORDS_BIGENDIAN +# endif +# endif +# ifdef LITTLE_ENDIAN +# if BYTE_ORDER == LITTLE_ENDIAN +# undef WORDS_BIGENDIAN +# endif +# endif +#endif + #undef TCL_STORAGE_CLASS #ifdef BUILD_tcl # define TCL_STORAGE_CLASS DLLEXPORT diff --git a/unix/configure b/unix/configure index 89b4116..add3aff 100755 --- a/unix/configure +++ b/unix/configure @@ -3047,7 +3047,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" DL_LIBS="" - LDFLAGS="$LDFLAGS -prebind" + LDFLAGS="$LDFLAGS -prebind -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 echo "configure:3053: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then diff --git a/unix/tcl.m4 b/unix/tcl.m4 index fc91c3d..4749011 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1377,7 +1377,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" DL_LIBS="" - LDFLAGS="$LDFLAGS -prebind" + LDFLAGS="$LDFLAGS -prebind -headerpad_max_install_names" AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [ hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" -- cgit v0.12 From a48d21d6d90a8d20726f094c95a2898eb87f22a1 Mon Sep 17 00:00:00 2001 From: dgp Date: Sun, 19 Jun 2005 21:51:38 +0000 Subject: update release tag --- ChangeLog | 2 -- 1 file changed, 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9bf583b..1429b4c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,8 +14,6 @@ 2005-06-18 Don Porter - *** 8.4.11 TAGGED FOR RELEASE *** - * changes: Update changes for 8.4.11 release * README: Bump version number to 8.4.11 -- cgit v0.12 From f65f3d5b643a1584556701c5bc4b39f7687ab62b Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 20 Jun 2005 16:57:40 +0000 Subject: * doc/FileSystem.3: added missing Tcl_GlobTypeData documentation [Bug 935853] --- ChangeLog | 7 ++++++- doc/FileSystem.3 | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1429b4c..4fed9a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ -2005-06-18 Daniel Steffen +2005-06-18 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** + * doc/FileSystem.3: added missing Tcl_GlobTypeData documentation + [Bug 935853] + +2005-06-18 Daniel Steffen + * generic/tclInt.h: ensure WORDS_BIGENDIAN is defined correctly with fat compiles on Darwin (i.e. ppc and i386 at the same time), the configure AC_C_BIGENDIAN check is not sufficient in this case because a single run diff --git a/doc/FileSystem.3 b/doc/FileSystem.3 index 1188778..54236c8 100644 --- a/doc/FileSystem.3 +++ b/doc/FileSystem.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: FileSystem.3,v 1.32.2.3 2005/04/29 14:09:35 dkf Exp $ +'\" RCS: @(#) $Id: FileSystem.3,v 1.32.2.4 2005/06/20 16:57:43 dgp Exp $ '\" .so man.macros .TH Filesystem 3 8.4 Tcl "Tcl Library Procedures" @@ -1027,15 +1027,43 @@ documented whether \fIpathPtr\fR will have a file separator at its end of not, so code should be flexible to both possibilities. .PP The return value is a standard Tcl result indicating whether an error -occurred in the matching process. Error messages are placed in interp, -but on a TCL_OK result, the interpreter should not be modified, but -rather results should be added to the \fIresult\fR object given -(which can be assumed to be a valid Tcl list). The matches added +occurred in the matching process. Error messages are placed in +\fIinterp\fR; on a \fBTCL_OK\fR result, results should be added to the +\fIresult\fR object given (which can be assumed to be a valid +unshared Tcl list). The matches added to \fIresult\fR should include any path prefix given in \fIpathPtr\fR (this usually means they will be absolute path specifications). Note that if no matches are found, that simply leads to an empty -result --- errors are only signaled for actual file or filesystem +result; errors are only signaled for actual file or filesystem problems which may occur during the matching process. +.PP +The \fBTcl_GlobTypeData\fR structure passed in the \fItypes\fR +parameter contains the following fields: +.CS +typedef struct Tcl_GlobTypeData { + /* Corresponds to bcdpfls as in 'find -t' */ + int \fItype\fR; + /* Corresponds to file permissions */ + int \fIperm\fR; + /* Acceptable mac type */ + Tcl_Obj *\fImacType\fR; + /* Acceptable mac creator */ + Tcl_Obj *\fImacCreator\fR; +} Tcl_GlobTypeData; +.CE +.PP +There are two specific cases which it is important to handle correctly, +both when \fItypes\fR is non-NULL. The two cases are when \fItypes->types +& TCL_GLOB_TYPE_DIR\fR or \fItypes->types & TCL_GLOB_TYPE_MOUNT\fR are +true (and in particular when the other flags are false). In the first of +these cases, the function must list the contained directories. Tcl uses +this to implement recursive globbing, so it is critical that filesystems +implement directory matching correctly. In the second of these cases, +with \fBTCL_GLOB_TYPE_MOUNT\fR, the filesystem must list the mount points +which lie within the given \fIpathPtr\fR (and in this case, \fIpathPtr\fR +need not lie within the same filesystem - different to all other cases in +which this function is called). Support for this is critical if Tcl is +to have seamless transitions between from one filesystem to another. .SH UTIMEPROC .PP Function to process a \fBTcl_FSUtime()\fR call. Required to allow setting -- cgit v0.12 From dc23572f7107ba3cf664769fbb78653dad3c6188 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 20 Jun 2005 17:12:55 +0000 Subject: date fix --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4fed9a9..6d140a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2005-06-18 Don Porter +2005-06-20 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** -- cgit v0.12 From 179120bc16b5d9ec51d765d0b4c9deb94e32b77e Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 21 Jun 2005 14:44:55 +0000 Subject: * generic/tclBasic.c (Tcl_DeleteTrace): Added missing walk of the * tests/trace.test (trace-34.1): list of active traces to cleanup references to traces being deleted. [Bug 1201035] --- ChangeLog | 9 ++++++++- generic/tclBasic.c | 16 +++++++++++++++- tests/trace.test | 19 ++++++++++++++++++- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6d140a7..1907a0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,14 @@ -2005-06-20 Don Porter +2005-06-21 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** + * generic/tclBasic.c (Tcl_DeleteTrace): Added missing walk of the + * tests/trace.test (trace-34.1): list of active traces to + cleanup references to traces being deleted. [Bug 1201035] + +2005-06-20 Don Porter + + * doc/FileSystem.3: added missing Tcl_GlobTypeData documentation [Bug 935853] diff --git a/generic/tclBasic.c b/generic/tclBasic.c index dfa24e8..ccb6de9 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.14 2005/03/18 16:33:41 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.15 2005/06/21 14:44:58 dgp Exp $ */ #include "tclInt.h" @@ -5160,6 +5160,7 @@ Tcl_DeleteTrace(interp, trace) Interp *iPtr = (Interp *) interp; Trace *tracePtr = (Trace *) trace; register Trace **tracePtr2 = &(iPtr->tracePtr); + ActiveInterpTrace *activePtr; /* * Locate the trace entry in the interpreter's trace list, @@ -5175,6 +5176,19 @@ Tcl_DeleteTrace(interp, trace) (*tracePtr2) = (*tracePtr2)->nextPtr; /* + * The code below makes it possible to delete traces while traces + * are active: it makes sure that the deleted trace won't be + * processed by TclCheckInterpTraces. + */ + + for (activePtr = iPtr->activeInterpTracePtr; activePtr != NULL; + activePtr = activePtr->nextPtr) { + if (activePtr->nextTracePtr == tracePtr) { + activePtr->nextTracePtr = tracePtr->nextPtr; + } + } + + /* * If the trace forbids bytecode compilation, change the interpreter's * state. If bytecode compilation is now permitted, flag the fact and * advance the compilation epoch so that procs will be recompiled to diff --git a/tests/trace.test b/tests/trace.test index 322f761..4456afa 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.4 2004/11/15 21:14:34 dgp Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.5 2005/06/21 14:44:59 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -2139,6 +2139,23 @@ test trace-33.1 {variable match with remove variable} { llength [trace info variable x] } 0 +test trace-34.1 {Bug 1201035} { + set ::x [list] + proc foo {} {lappend ::x foo} + proc bar args { + lappend ::x $args + trace remove execution foo leavestep bar + trace remove execution foo enterstep bar + trace add execution foo leavestep bar + trace add execution foo enterstep bar + lappend ::x done + } + trace add execution foo leavestep bar + trace add execution foo enterstep bar + foo + set ::x +} {{{lappend ::x foo} enterstep} done foo} + # Delete procedures when done, so we don't clash with other tests # (e.g. foobar will clash with 'unknown' tests). catch {rename foobar {}} -- cgit v0.12 From a0b5a0ccd26e0fa70be2e05583c04493b7ecb627 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 21 Jun 2005 14:47:09 +0000 Subject: formatting --- ChangeLog | 1 - 1 file changed, 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1907a0b..f31078e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,7 +8,6 @@ 2005-06-20 Don Porter - * doc/FileSystem.3: added missing Tcl_GlobTypeData documentation [Bug 935853] -- cgit v0.12 From 2e99120257a8ebe71af4bcfeab8cc1d031a4bd24 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 21 Jun 2005 17:19:36 +0000 Subject: * generic/tclBasic.c: Made the walk of the active trace list aware * generic/tclCmdMZ.c: of the direction of trace scanning, so the * generic/tclInt.h: proper correction can be made. [Bug 1224585] * tests/trace.test (trace-34.2,3): --- ChangeLog | 5 +++++ changes | 4 +++- generic/tclBasic.c | 13 ++++++++++--- generic/tclCmdMZ.c | 20 ++++++++++++++++---- generic/tclInt.h | 6 +++++- tests/trace.test | 18 +++++++++++++++++- 6 files changed, 56 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index f31078e..f4e887b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,11 @@ *** 8.4.11 TAGGED FOR RELEASE *** + * generic/tclBasic.c: Made the walk of the active trace list aware + * generic/tclCmdMZ.c: of the direction of trace scanning, so the + * generic/tclInt.h: proper correction can be made. [Bug 1224585] + * tests/trace.test (trace-34.2,3): + * generic/tclBasic.c (Tcl_DeleteTrace): Added missing walk of the * tests/trace.test (trace-34.1): list of active traces to cleanup references to traces being deleted. [Bug 1201035] diff --git a/changes b/changes index 1e6bf4d..cf603c4 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.19 2005/06/18 19:52:36 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.20 2005/06/21 17:19:40 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6213,4 +6213,6 @@ Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] 2005-06-18 (bug fix)[1154163] [format %h] on 64-bit OS's (kraft,fellows) +2005-06-21 (bug fix)[1201035,1224585] execution trace crashes (porter) + --- Released 8.4.11, June 24, 2005 --- See ChangeLog for details --- diff --git a/generic/tclBasic.c b/generic/tclBasic.c index ccb6de9..f1423cf 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.15 2005/06/21 14:44:58 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.16 2005/06/21 17:19:40 dgp Exp $ */ #include "tclInt.h" @@ -2585,6 +2585,7 @@ CallCommandTraces(iPtr, cmdPtr, oldName, newName, flags) result = NULL; active.nextPtr = iPtr->activeCmdTracePtr; + active.reverseScan = 0; iPtr->activeCmdTracePtr = &active; if (flags & TCL_TRACE_DELETE) { @@ -5158,7 +5159,7 @@ Tcl_DeleteTrace(interp, trace) * Tcl_CreateTrace). */ { Interp *iPtr = (Interp *) interp; - Trace *tracePtr = (Trace *) trace; + Trace *prevPtr, *tracePtr = (Trace *) trace; register Trace **tracePtr2 = &(iPtr->tracePtr); ActiveInterpTrace *activePtr; @@ -5167,7 +5168,9 @@ Tcl_DeleteTrace(interp, trace) * and remove it from the list. */ + prevPtr = NULL; while ((*tracePtr2) != NULL && (*tracePtr2) != tracePtr) { + prevPtr = *tracePtr2; tracePtr2 = &((*tracePtr2)->nextPtr); } if (*tracePtr2 == NULL) { @@ -5184,7 +5187,11 @@ Tcl_DeleteTrace(interp, trace) for (activePtr = iPtr->activeInterpTracePtr; activePtr != NULL; activePtr = activePtr->nextPtr) { if (activePtr->nextTracePtr == tracePtr) { - activePtr->nextTracePtr = tracePtr->nextPtr; + if (activePtr->reverseScan) { + activePtr->nextTracePtr = prevPtr; + } else { + activePtr->nextTracePtr = tracePtr->nextPtr; + } } } diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 0c9ff94..1ab108f 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.19 2005/05/25 19:25:57 hobbs Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.20 2005/06/21 17:19:42 dgp Exp $ */ #include "tclInt.h" @@ -3972,7 +3972,11 @@ Tcl_UntraceCommand(interp, cmdName, flags, proc, clientData) for (activePtr = iPtr->activeCmdTracePtr; activePtr != NULL; activePtr = activePtr->nextPtr) { if (activePtr->nextTracePtr == tracePtr) { - activePtr->nextTracePtr = tracePtr->nextPtr; + if (activePtr->reverseScan) { + activePtr->nextTracePtr = prevPtr; + } else { + activePtr->nextTracePtr = tracePtr->nextPtr; + } } } if (prevPtr == NULL) { @@ -4201,6 +4205,7 @@ TclCheckExecutionTraces(interp, command, numChars, cmdPtr, code, tracePtr = active.nextTracePtr) { if (traceFlags & TCL_TRACE_LEAVE_EXEC) { /* execute the trace command in order of creation for "leave" */ + active.reverseScan = 1; active.nextTracePtr = NULL; tracePtr = cmdPtr->tracePtr; while (tracePtr->nextPtr != lastTracePtr) { @@ -4208,6 +4213,7 @@ TclCheckExecutionTraces(interp, command, numChars, cmdPtr, code, tracePtr = tracePtr->nextPtr; } } else { + active.reverseScan = 0; active.nextTracePtr = tracePtr->nextPtr; } tcmdPtr = (TraceCommandInfo*)tracePtr->clientData; @@ -4225,7 +4231,9 @@ TclCheckExecutionTraces(interp, command, numChars, cmdPtr, code, ckfree((char*)tcmdPtr); } } - lastTracePtr = tracePtr; + if (active.nextTracePtr) { + lastTracePtr = active.nextTracePtr->nextPtr; + } } iPtr->activeCmdTracePtr = active.nextPtr; return(traceCode); @@ -4296,6 +4304,7 @@ TclCheckInterpTraces(interp, command, numChars, cmdPtr, code, * Tcl_CreateObjTrace creates one more linked list of traces * which results in one more reversal of trace invocation. */ + active.reverseScan = 1; active.nextTracePtr = NULL; tracePtr = iPtr->tracePtr; while (tracePtr->nextPtr != lastTracePtr) { @@ -4303,6 +4312,7 @@ TclCheckInterpTraces(interp, command, numChars, cmdPtr, code, tracePtr = tracePtr->nextPtr; } } else { + active.reverseScan = 0; active.nextTracePtr = tracePtr->nextPtr; } if (tracePtr->level > 0 && curLevel > tracePtr->level) { @@ -4347,7 +4357,9 @@ TclCheckInterpTraces(interp, command, numChars, cmdPtr, code, tracePtr->flags &= ~TCL_TRACE_EXEC_IN_PROGRESS; Tcl_Release((ClientData) tracePtr); } - lastTracePtr = tracePtr; + if (active.nextTracePtr) { + lastTracePtr = active.nextTracePtr->nextPtr; + } } iPtr->activeInterpTracePtr = active.nextPtr; return(traceCode); diff --git a/generic/tclInt.h b/generic/tclInt.h index 2716467..45eb8ff 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.11 2005/06/18 21:46:42 das Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.12 2005/06/21 17:19:43 dgp Exp $ */ #ifndef _TCLINT @@ -336,6 +336,8 @@ typedef struct ActiveCommandTrace { * trace procedure returns; if this * trace gets deleted, must update pointer * to avoid using free'd memory. */ + int reverseScan; /* Boolean set true when the traces + * are scanning in reverse order. */ } ActiveCommandTrace; /* @@ -709,6 +711,8 @@ typedef struct ActiveInterpTrace { * trace procedure returns; if this * trace gets deleted, must update pointer * to avoid using free'd memory. */ + int reverseScan; /* Boolean set true when the traces + * are scanning in reverse order. */ } ActiveInterpTrace; /* diff --git a/tests/trace.test b/tests/trace.test index 4456afa..e0c6648 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.5 2005/06/21 14:44:59 dgp Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.6 2005/06/21 17:19:43 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -2156,6 +2156,22 @@ test trace-34.1 {Bug 1201035} { set ::x } {{{lappend ::x foo} enterstep} done foo} +test trace-34.2 {Bug 1224585} { + proc foo {} {} + proc bar args {trace remove execution foo leave soom} + trace add execution foo leave bar + trace add execution foo leave soom + foo +} {} + +test trace-34.3 {Bug 1224585} { + proc foo {} {set x {}} + proc bar args {trace remove execution foo enterstep soom} + trace add execution foo enterstep soom + trace add execution foo enterstep bar + foo +} {} + # Delete procedures when done, so we don't clash with other tests # (e.g. foobar will clash with 'unknown' tests). catch {rename foobar {}} -- cgit v0.12 From 0a8e0f35a2edeb0b51aef1e06df239c2c64ef776 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 21 Jun 2005 19:07:31 +0000 Subject: bugs 1194458 and 1225044 --- ChangeLog | 9 +++++++++ generic/tclFileName.c | 24 +++++++++++++++--------- tests/fileName.test | 9 ++++++++- win/tclWinPipe.c | 49 +++++++++++++++++-------------------------------- 4 files changed, 49 insertions(+), 42 deletions(-) diff --git a/ChangeLog b/ChangeLog index f4e887b..0285404 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-06-21 Kevin Kenny + + * generic/tclFileName.c: Corrected a problem where a directory name + containing a colon can crash the process on Windows [Bug 1194458]. + * tests/fileName.test: Added test for [file split] and + [file join] with a name containing a colon. + * win/tclWinPipe.c: Reverted davygrvy's changes of 2005-04-19; + they cause multiple failures in io.test. [Bug 1225044, still open]. + 2005-06-21 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 67d606d..eb59182 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.10 2005/03/15 22:10:58 vincentdarley Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.11 2005/06/21 19:07:41 kennykb Exp $ */ #include "tclInt.h" @@ -792,8 +792,9 @@ SplitWinPath(path) Tcl_DStringFree(&buf); /* - * Split on slashes. Embedded elements that start with tilde will be - * prefixed with "./" so they are not affected by tilde substitution. + * Split on slashes. Embedded elements that start with tilde + * or a drive letter will be prefixed with "./" so they are not + * affected by tilde substitution. */ do { @@ -804,7 +805,10 @@ SplitWinPath(path) length = p - elementStart; if (length > 0) { Tcl_Obj *nextElt; - if ((elementStart[0] == '~') && (elementStart != path)) { + if ((elementStart != path) + && ((elementStart[0] == '~') + || (isalpha(UCHAR(elementStart[0])) + && elementStart[1] == ':'))) { nextElt = Tcl_NewStringObj("./",2); Tcl_AppendToObj(nextElt, elementStart, length); } else { @@ -1125,23 +1129,25 @@ TclpNativeJoinPath(prefix, joining) start = Tcl_GetStringFromObj(prefix, &length); /* - * Remove the ./ from tilde prefixed elements unless - * it is the first component. + * Remove the ./ from tilde prefixed elements, and drive-letter + * prefixed elements on Windows, unless it is the first component. */ p = joining; if (length != 0) { - if ((p[0] == '.') && (p[1] == '/') && (p[2] == '~')) { + if ((p[0] == '.') && (p[1] == '/') + && ((p[2] == '~') + || ((tclPlatform == TCL_PLATFORM_WINDOWS) + && isalpha(UCHAR(p[2])) + && (p[3] == ':')))) { p += 2; } } - if (*p == '\0') { return; } - switch (tclPlatform) { case TCL_PLATFORM_UNIX: /* diff --git a/tests/fileName.test b/tests/fileName.test index d0497de..7635e2d 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.6 2004/11/11 01:16:19 das Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.7 2005/06/21 19:07:58 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -2001,6 +2001,13 @@ test filename-17.2 {windows specific glob with executable} {winOnly} { set res } {abc.exe} +test fileName-18.1 {windows - split ADS name correctly} {winOnly} { + # bug 1194458 + set x [file split c:/c:d] + set y [eval [linsert $x 0 file join]] + list $x $y +} {{c:/ ./c:d} c:/c:d} + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 0206ac5..8dfc2ad 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.10 2005/04/19 16:28:22 davygrvy Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.11 2005/06/21 19:07:58 kennykb Exp $ */ #include "tclWinInt.h" @@ -2046,42 +2046,27 @@ PipeClose2Proc( } } - if ((pipePtr->flags & PIPE_ASYNC) || TclInExit()) { - /* - * If the channel is non-blocking or Tcl is being cleaned up, - * just detach the children PIDs, reap them (important if we are - * in a dynamic load module), and discard the errorFile. - */ + /* + * Wrap the error file into a channel and give it to the cleanup + * routine. + */ - Tcl_DetachPids(pipePtr->numPids, pipePtr->pidPtr); - Tcl_ReapDetachedProcs(); + if (pipePtr->errorFile) { + WinFile *filePtr; - if (pipePtr->errorFile) { - TclpCloseFile(pipePtr->errorFile); - } + filePtr = (WinFile*)pipePtr->errorFile; + errChan = Tcl_MakeFileChannel((ClientData) filePtr->handle, + TCL_READABLE); + ckfree((char *) filePtr); } else { - /* - * Wrap the error file into a channel and give it to the cleanup - * routine. - */ - - if (pipePtr->errorFile) { - WinFile *filePtr; - - filePtr = (WinFile*)pipePtr->errorFile; - errChan = Tcl_MakeFileChannel((ClientData) filePtr->handle, - TCL_READABLE); - ckfree((char *) filePtr); - } else { - errChan = NULL; - } - - result = TclCleanupChildren(interp, pipePtr->numPids, - pipePtr->pidPtr, errChan); + errChan = NULL; } + result = TclCleanupChildren(interp, pipePtr->numPids, pipePtr->pidPtr, + errChan); + if (pipePtr->numPids > 0) { - ckfree((char *) pipePtr->pidPtr); + ckfree((char *) pipePtr->pidPtr); } if (pipePtr->writeBuf != NULL) { @@ -2091,7 +2076,7 @@ PipeClose2Proc( ckfree((char*) pipePtr); if (errorCode == 0) { - return result; + return result; } return errorCode; } -- cgit v0.12 From 6022b097fe4d12d7fc98bef079d9378fc4f7e16e Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 21 Jun 2005 19:38:21 +0000 Subject: update changes and release tag --- ChangeLog | 4 ++-- changes | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0285404..430c0a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-06-21 Kevin Kenny + *** 8.4.11 TAGGED FOR RELEASE *** + * generic/tclFileName.c: Corrected a problem where a directory name containing a colon can crash the process on Windows [Bug 1194458]. * tests/fileName.test: Added test for [file split] and @@ -9,8 +11,6 @@ 2005-06-21 Don Porter - *** 8.4.11 TAGGED FOR RELEASE *** - * generic/tclBasic.c: Made the walk of the active trace list aware * generic/tclCmdMZ.c: of the direction of trace scanning, so the * generic/tclInt.h: proper correction can be made. [Bug 1224585] diff --git a/changes b/changes index cf603c4..58010b8 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.20 2005/06/21 17:19:40 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.21 2005/06/21 19:38:40 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6215,4 +6215,11 @@ Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] 2005-06-21 (bug fix)[1201035,1224585] execution trace crashes (porter) +2005-06-21 (bug fix)[1194458] Windows: [file split] (kenny,porter) + +2005-06-21 (revert)[947693,1225044] Windows: 2005-04-19 change to honor +blocking during close led to multiple test suite failures. Undone. (kenny) +***POTENTIAL INCOMPATIBILITY*** +with Tcl 8.4.10 and 8.5. Restores compatibility with 8.4.9 and earlier. + --- Released 8.4.11, June 24, 2005 --- See ChangeLog for details --- -- cgit v0.12 From 010b2be795506ccc6a4626b8fdfffc07d24da07f Mon Sep 17 00:00:00 2001 From: patthoyts Date: Tue, 21 Jun 2005 22:59:00 +0000 Subject: * tests/winDde.test: Added some waits to the dde server script to let event processing run after we create the dde server and before we exit the server process. This avoids 'server did not respond' errors. --- ChangeLog | 7 ++++++ tests/winDde.test | 72 ++++++++++++++++++++++++++++++------------------------- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/ChangeLog b/ChangeLog index 430c0a7..bd337c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-06-21 Pat Thoyts + + * tests/winDde.test: Added some waits to the dde server script to + let event processing run after we create the dde server and before + we exit the server process. This avoids 'server did not respond' + errors. + 2005-06-21 Kevin Kenny *** 8.4.11 TAGGED FOR RELEASE *** diff --git a/tests/winDde.test b/tests/winDde.test index a1472fa..699ffb6 100644 --- a/tests/winDde.test +++ b/tests/winDde.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winDde.test,v 1.13.2.1 2004/06/15 13:00:57 patthoyts Exp $ +# RCS: @(#) $Id: winDde.test,v 1.13.2.2 2005/06/21 22:59:03 patthoyts Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -52,14 +52,18 @@ proc createChildProcess { ddeServerName } { } puts $f [list dde servername $ddeServerName] puts $f { + after 200 {set ready 1} + vwait ready puts ready vwait done - update + after 200 {set final 1} + vwait final exit } close $f set f [open |[list [interpreter] $::scriptName] r] + fconfigure $f -buffering line -blocking 1 gets $f return $f } @@ -113,42 +117,46 @@ test winDde-3.5 {DDE request locally} {pcOnly} { } "foo\x00" test winDde-4.1 {DDE execute remotely} {stdio pcOnly} { - set a "" - set child [createChildProcess child] - dde execute TclEval child {set a "foo"} - dde execute TclEval child {set done 1} - - set a -} "" + list [catch { + set a "" + set child [createChildProcess child] + dde execute TclEval child {set a "foo"} + dde execute TclEval child {set done 1} + set a + } err] $err +} [list 0 ""] test winDde-4.2 {DDE execute remotely} {stdio pcOnly} { - set a "" - set child [createChildProcess child] - dde execute -async TclEval child {set a "foo"} - update - dde execute TclEval child {set done 1} - - set a -} "" + list [catch { + set a "" + set child [createChildProcess child] + dde execute -async TclEval child {set a "foo"} + after 400 {set ::_dde_forever 1} ; vwait ::_dde_forever; #update + dde execute TclEval child {set done 1} + set a + } err] $err +} [list 0 ""] test winDde-4.3 {DDE request locally} {stdio pcOnly} { - set a "" - set child [createChildProcess child] - dde execute TclEval child {set a "foo"} - set a [dde request TclEval child a] - dde execute TclEval child {set done 1} - - set a -} foo + list [catch { + set a "" + set child [createChildProcess child] + dde execute TclEval child {set a "foo"} + set a [dde request TclEval child a] + dde execute TclEval child {set done 1} + set a + } err] $err +} [list 0 foo] test winDde-4.4 {DDE eval locally} {stdio pcOnly} { - set a "" - set child [createChildProcess child] - set a [dde eval child set a "foo"] - dde execute TclEval child {set done 1} - - set a -} foo + list [catch { + set a "" + set child [createChildProcess child] + set a [dde eval child set a "foo"] + dde execute TclEval child {set done 1} + set a + } err] $err +} [list 0 foo] test winDde-5.1 {check for bad arguments} {pcOnly} { catch {dde execute "" "" "" ""} result -- cgit v0.12 From 0b6f67ac8fecd83b2b1d800423a25f9cc16cc01d Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 22 Jun 2005 16:02:38 +0000 Subject: * tests/safe.test: Backport performance improvement from reduced $::auto_path. --- ChangeLog | 9 +++++++-- tests/safe.test | 6 +++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index bd337c2..71a4025 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-06-22 Don Porter + + *** 8.4.11 TAGGED FOR RELEASE *** + + * tests/safe.test: Backport performance improvement from + reduced $::auto_path. + 2005-06-21 Pat Thoyts * tests/winDde.test: Added some waits to the dde server script to @@ -7,8 +14,6 @@ 2005-06-21 Kevin Kenny - *** 8.4.11 TAGGED FOR RELEASE *** - * generic/tclFileName.c: Corrected a problem where a directory name containing a colon can crash the process on Windows [Bug 1194458]. * tests/fileName.test: Added test for [file split] and diff --git a/tests/safe.test b/tests/safe.test index 21fad12..a26cb92 100644 --- a/tests/safe.test +++ b/tests/safe.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: safe.test,v 1.13 2002/05/10 18:47:11 dgp Exp $ +# RCS: @(#) $Id: safe.test,v 1.13.2.1 2005/06/22 16:02:42 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -21,6 +21,9 @@ foreach i [interp slaves] { interp delete $i } +set saveAutoPath $::auto_path +set ::auto_path [info library] + # Force actual loading of the safe package # because we use un exported (and thus un-autoindexed) APIs # in this test result arguments: @@ -519,6 +522,7 @@ test safe-11.8 {testing safe encoding} { } {1 {wrong # args: should be "encoding convertto ?encoding? data"} {}} +set ::auto_path $saveAutoPath # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 7164775ff1dd6d93ea1029b267d07872a35a62f8 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 22 Jun 2005 16:49:23 +0000 Subject: * generic/tclInt.h: Followup to change made on 2005-06-18 by Daniel Steffen. There are compilers (*) who error out on the redefinition of WORDS_BIGENDIAN. We have to undef the previous definition (on the command line) first to make this acceptable. (*): AIX native. --- ChangeLog | 8 ++++++++ generic/tclInt.h | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 71a4025..15a1fc4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-06-22 Andreas Kupries + + * generic/tclInt.h: Followup to change made on 2005-06-18 by + Daniel Steffen. There are compilers (*) who error out on the + redefinition of WORDS_BIGENDIAN. We have to undef the previous + definition (on the command line) first to make this + acceptable. (*): AIX native. + 2005-06-22 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** diff --git a/generic/tclInt.h b/generic/tclInt.h index 45eb8ff..c0f1982 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.12 2005/06/21 17:19:43 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.13 2005/06/22 16:49:28 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -66,6 +66,7 @@ #ifdef BYTE_ORDER # ifdef BIG_ENDIAN # if BYTE_ORDER == BIG_ENDIAN +# undef WORDS_BIGENDIAN # define WORDS_BIGENDIAN # endif # endif -- cgit v0.12 From 37d7859f69fa858cde620a429a5616ced9059d3f Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 22 Jun 2005 19:35:10 +0000 Subject: bug 1225727 --- ChangeLog | 12 ++++++++++++ generic/tclEvent.c | 17 ++++++++++++++++- generic/tclIO.c | 3 ++- generic/tclInt.h | 3 ++- unix/tclUnixPipe.c | 23 ++++++++++++++++++++++- win/tclWinPipe.c | 11 ++++------- 6 files changed, 58 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 15a1fc4..8ba2b0e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2005-06-22 Kevin Kenny + + * generic/tclInt.h: Changed the finalization + * generic/tclEvent.c (Tcl_Finalize): logic to defer the + * generic/tclIO.c (TclFinalizeIOSubsystem): shutdown of the pipe + * unix/tclUnixPipe.c (TclFinalizePipes): management until after + * win/tclWinPipe.c (TclFinalizePipes): all channels have been + closed, in order to avoid a situation where the Windows + PipeCloseProc2 would re-establish the exit handler after + exit handlers had already run, corrupting the heap. + [Bug #1225727] + 2005-06-22 Andreas Kupries * generic/tclInt.h: Followup to change made on 2005-06-18 by diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 059871c..81b6b2d 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.9 2004/07/30 15:15:57 dgp Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.10 2005/06/22 19:35:15 kennykb Exp $ */ #include "tclInt.h" @@ -895,11 +895,26 @@ Tcl_Finalize() TclResetFilesystem(); /* + * There have been several bugs in the past that cause + * exit handlers to be established during Tcl_Finalize + * processing. Such exit handlers leave malloc'ed memory, + * and Tcl_FinalizeThreadAlloc or Tcl_FinalizeMemorySubsystem + * will result in a corrupted heap. The result can be a + * mysterious crash on process exit. Check here that + * nobody's done this. + */ + + if ( firstExitPtr != NULL ) { + Tcl_Panic( "exit handlers were created during Tcl_Finalize" ); + } + + /* * There shouldn't be any malloc'ed memory after this. */ #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) && !defined(PURIFY) TclFinalizeThreadAlloc(); #endif + TclFinalizeMemorySubsystem(); inFinalize = 0; } diff --git a/generic/tclIO.c b/generic/tclIO.c index 46ebf28..f983a9a 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.10 2005/04/14 07:10:06 davygrvy Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.11 2005/06/22 19:35:16 kennykb Exp $ */ #include "tclInt.h" @@ -274,6 +274,7 @@ TclFinalizeIOSubsystem() statePtr->flags |= CHANNEL_DEAD; } } + TclpFinalizePipes(); } diff --git a/generic/tclInt.h b/generic/tclInt.h index c0f1982..23bd5aa 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.13 2005/06/22 16:49:28 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.14 2005/06/22 19:35:18 kennykb Exp $ */ #ifndef _TCLINT @@ -1721,6 +1721,7 @@ EXTERN int TclpDeleteFile _ANSI_ARGS_((CONST char *path)); EXTERN void TclpFinalizeCondition _ANSI_ARGS_(( Tcl_Condition *condPtr)); EXTERN void TclpFinalizeMutex _ANSI_ARGS_((Tcl_Mutex *mutexPtr)); +EXTERN void TclpFinalizePipes _ANSI_ARGS_((void)); EXTERN void TclpFinalizeThreadData _ANSI_ARGS_(( Tcl_ThreadDataKey *keyPtr)); EXTERN void TclpFinalizeThreadDataKey _ANSI_ARGS_(( diff --git a/unix/tclUnixPipe.c b/unix/tclUnixPipe.c index f410fc3..dd9bc1c 100644 --- a/unix/tclUnixPipe.c +++ b/unix/tclUnixPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.3 2005/01/27 22:53:36 andreas_kupries Exp $ + * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.4 2005/06/22 19:36:35 kennykb Exp $ */ #include "tclInt.h" @@ -1247,3 +1247,24 @@ Tcl_PidObjCmd(dummy, interp, objc, objv) } return TCL_OK; } + +/* + *---------------------------------------------------------------------- + * + * TclpFinalizePipes -- + * + * Cleans up the pipe subsystem from Tcl_FinalizeThread + * + * Results: + * None. + * + * This procedure carries out no operation on Unix. + * + *---------------------------------------------------------------------- + */ + +void +TclpFinalizePipes() +{ +} + diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 8dfc2ad..de56e33 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.11 2005/06/21 19:07:58 kennykb Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.12 2005/06/22 19:36:35 kennykb Exp $ */ #include "tclWinInt.h" @@ -201,7 +201,6 @@ static DWORD WINAPI PipeReaderThread(LPVOID arg); static void PipeSetupProc(ClientData clientData, int flags); static void PipeWatchProc(ClientData instanceData, int mask); static DWORD WINAPI PipeWriterThread(LPVOID arg); -static void ProcExitHandler(ClientData clientData); static int TempFileName(WCHAR name[MAX_PATH]); static int WaitForRead(PipeInfo *infoPtr, int blocking); @@ -263,7 +262,6 @@ PipeInit() if (!initialized) { initialized = 1; procList = NULL; - Tcl_CreateExitHandler(ProcExitHandler, NULL); } Tcl_MutexUnlock(&pipeMutex); } @@ -304,7 +302,7 @@ PipeExitHandler( /* *---------------------------------------------------------------------- * - * ProcExitHandler -- + * TclpFinalizePipes -- * * This function is called to cleanup the process list before * Tcl is unloaded. @@ -318,9 +316,8 @@ PipeExitHandler( *---------------------------------------------------------------------- */ -static void -ProcExitHandler( - ClientData clientData) /* Old window proc */ +void +TclpFinalizePipes() { Tcl_MutexLock(&pipeMutex); initialized = 0; -- cgit v0.12 From ae6de3127e8d6bef55078a9e0deca23676388b04 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 22 Jun 2005 20:19:21 +0000 Subject: release tag --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8ba2b0e..bd0986b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-06-22 Kevin Kenny + *** 8.4.11 TAGGED FOR RELEASE *** + * generic/tclInt.h: Changed the finalization * generic/tclEvent.c (Tcl_Finalize): logic to defer the * generic/tclIO.c (TclFinalizeIOSubsystem): shutdown of the pipe @@ -20,8 +22,6 @@ 2005-06-22 Don Porter - *** 8.4.11 TAGGED FOR RELEASE *** - * tests/safe.test: Backport performance improvement from reduced $::auto_path. -- cgit v0.12 From c020600660d7f30a3cf6a153883cfaa7364ffa8c Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 22 Jun 2005 20:26:22 +0000 Subject: update for 8.4.11 --- changes | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/changes b/changes index 58010b8..b9e0cd1 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.21 2005/06/21 19:38:40 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.22 2005/06/22 20:26:22 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6222,4 +6222,6 @@ blocking during close led to multiple test suite failures. Undone. (kenny) ***POTENTIAL INCOMPATIBILITY*** with Tcl 8.4.10 and 8.5. Restores compatibility with 8.4.9 and earlier. +2005-06-22 (bug fix)[1225727] Windows: pipe finalization crash (kenny) + --- Released 8.4.11, June 24, 2005 --- See ChangeLog for details --- -- cgit v0.12 From 84af1814b20547d7a009bf91c11e11eb572ef724 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 22 Jun 2005 21:23:32 +0000 Subject: * win/tclWinFile.c: Potential buffer overflow. [Bug 1225571] Thanks to Pat Thoyts for discovery and fix. --- ChangeLog | 3 +++ win/tclWinFile.c | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index bd0986b..0a04112 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,6 +22,9 @@ 2005-06-22 Don Porter + * win/tclWinFile.c: Potential buffer overflow. [Bug 1225571] + Thanks to Pat Thoyts for discovery and fix. + * tests/safe.test: Backport performance improvement from reduced $::auto_path. diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 18c4787..d58fa35 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.11 2005/03/15 18:08:24 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.12 2005/06/22 21:23:33 dgp Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -2085,7 +2085,7 @@ TclpFilesystemPathType(pathObjPtr) { #define VOL_BUF_SIZE 32 int found; - char volType[VOL_BUF_SIZE]; + WCHAR volType[VOL_BUF_SIZE]; char* firstSeparator; CONST char *path; @@ -2114,7 +2114,7 @@ TclpFilesystemPathType(pathObjPtr) Tcl_DString ds; Tcl_Obj *objPtr; - Tcl_WinTCharToUtf(volType, -1, &ds); + Tcl_WinTCharToUtf((CONST char *)volType, -1, &ds); objPtr = Tcl_NewStringObj(Tcl_DStringValue(&ds),Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); return objPtr; -- cgit v0.12 From 40ec34c69d75cff73a8d0f130c16e6ecf8f0e7eb Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 22 Jun 2005 21:30:17 +0000 Subject: bug 1225044 --- ChangeLog | 3 +++ win/tclWinPipe.c | 62 +++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0a04112..3a328db 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,9 @@ PipeCloseProc2 would re-establish the exit handler after exit handlers had already run, corrupting the heap. [Bug #1225727] + Corrected a read of uninitialized memory in PipeCloseProc2, + which (at least on certain configurations) caused a great + number of tests to either fail or hang [Bug #1225044]. 2005-06-22 Andreas Kupries diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index de56e33..323302a 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.12 2005/06/22 19:36:35 kennykb Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.13 2005/06/22 21:30:20 kennykb Exp $ */ #include "tclWinInt.h" @@ -1884,7 +1884,7 @@ PipeClose2Proc( errorCode = 0; if ((!flags || (flags == TCL_CLOSE_READ)) - && (pipePtr->readFile != NULL)) { + && (pipePtr->readFile != NULL)) { /* * Clean up the background thread if necessary. Note that this * must be done before we can close the file, since the @@ -1913,7 +1913,7 @@ PipeClose2Proc( */ if (WaitForSingleObject(pipePtr->readThread, 20) - == WAIT_TIMEOUT) { + == WAIT_TIMEOUT) { /* * The thread must be blocked waiting for the pipe to * become readable in ReadFile(). There isn't a clean way @@ -1949,7 +1949,7 @@ PipeClose2Proc( pipePtr->readFile = NULL; } if ((!flags || (flags & TCL_CLOSE_WRITE)) - && (pipePtr->writeFile != NULL)) { + && (pipePtr->writeFile != NULL)) { if (pipePtr->writeThread) { /* @@ -1982,7 +1982,7 @@ PipeClose2Proc( */ if (WaitForSingleObject(pipePtr->writeThread, 20) - == WAIT_TIMEOUT) { + == WAIT_TIMEOUT) { /* * The thread must be blocked waiting for the pipe to * consume input in WriteFile(). There isn't a clean way @@ -2035,32 +2035,52 @@ PipeClose2Proc( */ for (nextPtrPtr = &(tsdPtr->firstPipePtr), infoPtr = *nextPtrPtr; - infoPtr != NULL; - nextPtrPtr = &infoPtr->nextPtr, infoPtr = *nextPtrPtr) { + infoPtr != NULL; + nextPtrPtr = &infoPtr->nextPtr, infoPtr = *nextPtrPtr) { if (infoPtr == (PipeInfo *)pipePtr) { *nextPtrPtr = infoPtr->nextPtr; break; } } - /* - * Wrap the error file into a channel and give it to the cleanup - * routine. - */ + if ((pipePtr->flags & PIPE_ASYNC) || TclInExit()) { + /* + * If the channel is non-blocking or Tcl is being cleaned up, + * just detach the children PIDs, reap them (important if we are + * in a dynamic load module), and discard the errorFile. + */ - if (pipePtr->errorFile) { - WinFile *filePtr; + Tcl_DetachPids(pipePtr->numPids, pipePtr->pidPtr); + Tcl_ReapDetachedProcs(); - filePtr = (WinFile*)pipePtr->errorFile; - errChan = Tcl_MakeFileChannel((ClientData) filePtr->handle, - TCL_READABLE); - ckfree((char *) filePtr); + if (pipePtr->errorFile) { + if (TclpCloseFile(pipePtr->errorFile) != 0) { + if ( errorCode == 0 ) { + errorCode = errno; + } + } + } + result = 0; } else { - errChan = NULL; - } + /* + * Wrap the error file into a channel and give it to the cleanup + * routine. + */ - result = TclCleanupChildren(interp, pipePtr->numPids, pipePtr->pidPtr, - errChan); + if (pipePtr->errorFile) { + WinFile *filePtr; + + filePtr = (WinFile*)pipePtr->errorFile; + errChan = Tcl_MakeFileChannel((ClientData) filePtr->handle, + TCL_READABLE); + ckfree((char *) filePtr); + } else { + errChan = NULL; + } + + result = TclCleanupChildren(interp, pipePtr->numPids, + pipePtr->pidPtr, errChan); + } if (pipePtr->numPids > 0) { ckfree((char *) pipePtr->pidPtr); -- cgit v0.12 From ea03fe1abe7cd5423ac0862722f132777d5a54a9 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 22 Jun 2005 21:44:11 +0000 Subject: update changes for 8.4.11 --- changes | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/changes b/changes index b9e0cd1..18e3413 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.22 2005/06/22 20:26:22 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.23 2005/06/22 21:44:11 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6217,11 +6217,10 @@ Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] 2005-06-21 (bug fix)[1194458] Windows: [file split] (kenny,porter) -2005-06-21 (revert)[947693,1225044] Windows: 2005-04-19 change to honor -blocking during close led to multiple test suite failures. Undone. (kenny) -***POTENTIAL INCOMPATIBILITY*** -with Tcl 8.4.10 and 8.5. Restores compatibility with 8.4.9 and earlier. - 2005-06-22 (bug fix)[1225727] Windows: pipe finalization crash (kenny) +2005-06-22 (bug fix)[1225571] Windows: [file pathtype] buffer overflow (thoyts) + +2005-06-22 (bug fix)[1225044] Windows: UMR in pipe close (kenny) + --- Released 8.4.11, June 24, 2005 --- See ChangeLog for details --- -- cgit v0.12 From 2c19fc89f99ba7fd4d1ebb17dfa5110383ef9ebc Mon Sep 17 00:00:00 2001 From: das Date: Thu, 23 Jun 2005 05:59:39 +0000 Subject: * unix/Makefile.in (install-private-headers): rewrite tclPort.h when installing private headers to remove ../unix relative #include path to tclUnixPort.h (which is incorrect at the installed location). --- ChangeLog | 8 +++++++- unix/Makefile.in | 7 +++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3a328db..2526927 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,13 @@ -2005-06-22 Kevin Kenny +2005-06-23 Daniel Steffen *** 8.4.11 TAGGED FOR RELEASE *** + * unix/Makefile.in (install-private-headers): rewrite tclPort.h when + installing private headers to remove ../unix relative #include path to + tclUnixPort.h (which is incorrect at the installed location). + +2005-06-22 Kevin Kenny + * generic/tclInt.h: Changed the finalization * generic/tclEvent.c (Tcl_Finalize): logic to defer the * generic/tclIO.c (TclFinalizeIOSubsystem): shutdown of the pipe diff --git a/unix/Makefile.in b/unix/Makefile.in index 552b343..fce9f09 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.14 2005/06/02 22:52:51 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.15 2005/06/23 05:59:51 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -742,11 +742,14 @@ install-private-headers: libraries fi @echo "Installing private header files"; @for i in $(GENERIC_DIR)/tclInt.h $(GENERIC_DIR)/tclIntDecls.h \ - $(GENERIC_DIR)/tclIntPlatDecls.h $(GENERIC_DIR)/tclPort.h \ + $(GENERIC_DIR)/tclIntPlatDecls.h \ $(UNIX_DIR)/tclUnixPort.h $(GENERIC_DIR)/tclMath.h; \ do \ $(INSTALL_DATA) $$i $(PRIVATE_INCLUDE_INSTALL_DIR); \ done; + @sed -e 's#\.\./unix/##' $(GENERIC_DIR)/tclPort.h > tclPort.h; \ + $(INSTALL_DATA) tclPort.h $(PRIVATE_INCLUDE_INSTALL_DIR); \ + rm -f tclPort.h Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in $(SHELL) config.status -- cgit v0.12 From 44923bc34fe816fdbe6c0dcc3fe5b63b390cbf0b Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Thu, 23 Jun 2005 15:05:15 +0000 Subject: bug #1225957 --- ChangeLog | 7 + win/tclWinChan.c | 213 ++++++++++++++---------------- win/tclWinFCmd.c | 390 +++++++++++++++++++++++++++---------------------------- 3 files changed, 296 insertions(+), 314 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2526927..3ec32d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-06-23 Kevin Kenny + + * win/tclWinChan.c: More rewriting of __asm__ blocks that + * win/tclWinFCmd.c: implement SEH in GCC, because mingw's + gcc 3.4.2 is not as forgiving of violations committed by + the old code and caused panics. [Bug #1225957] + 2005-06-23 Daniel Steffen *** 8.4.11 TAGGED FOR RELEASE *** diff --git a/win/tclWinChan.c b/win/tclWinChan.c index b743b55..5d2175c 100644 --- a/win/tclWinChan.c +++ b/win/tclWinChan.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.3 2005/01/27 22:53:36 andreas_kupries Exp $ + * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.4 2005/06/23 15:05:22 kennykb Exp $ */ #include "tclWinInt.h" @@ -125,26 +125,25 @@ static Tcl_ChannelType fileChannelType = { FileThreadActionProc, /* Thread action proc. */ }; -#if defined(HAVE_NO_SEH) && defined(TCL_MEM_DEBUG) -static void *INITIAL_ESP, - *INITIAL_EBP, - *INITIAL_HANDLER, - *RESTORED_ESP, - *RESTORED_EBP, - *RESTORED_HANDLER; -#endif /* HAVE_NO_SEH && TCL_MEM_DEBUG */ - #ifdef HAVE_NO_SEH -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_makefilechannel_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext); -#endif +/* + * Unlike Borland and Microsoft, we don't register exception handlers + * by pushing registration records onto the runtime stack. Instead, we + * register them by creating an EXCEPTION_REGISTRATION within the activation + * record. + */ + +typedef struct EXCEPTION_REGISTRATION { + struct EXCEPTION_REGISTRATION* link; + EXCEPTION_DISPOSITION (*handler)( struct _EXCEPTION_RECORD*, void*, + struct _CONTEXT*, void* ); + void* ebp; + void* esp; + int status; +} EXCEPTION_REGISTRATION; + +#endif /* *---------------------------------------------------------------------- @@ -987,6 +986,9 @@ Tcl_MakeFileChannel(rawHandle, mode) int mode; /* ORed combination of TCL_READABLE and * TCL_WRITABLE to indicate file mode. */ { +#ifdef HAVE_NO_SEH + EXCEPTION_REGISTRATION registration; +#endif char channelName[16 + TCL_INTEGER_SPACE]; Tcl_Channel channel = NULL; HANDLE handle = (HANDLE) rawHandle; @@ -1078,77 +1080,93 @@ Tcl_MakeFileChannel(rawHandle, mode) * of this duped handle which might throw EXCEPTION_INVALID_HANDLE. */ -#ifdef HAVE_NO_SEH -# ifdef TCL_MEM_DEBUG - __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(INITIAL_ESP), - "=m"(INITIAL_EBP), - "=r"(INITIAL_HANDLER) ); -# endif /* TCL_MEM_DEBUG */ - - result = 0; - - __asm__ __volatile__ ( - "pushl %%ebp" "\n\t" - "pushl %0" "\n\t" - "pushl %%fs:0" "\n\t" - "movl %%esp, %%fs:0" - : - : "r" (_except_makefilechannel_handler) - ); -#else + result = 0; +#ifndef HAVE_NO_SEH __try { -#endif /* HAVE_NO_SEH */ CloseHandle(dupedHandle); -#ifdef HAVE_NO_SEH - __asm__ __volatile__ ( - "jmp makefilechannel_pop" "\n" - "makefilechannel_reentry:" "\n\t" - "movl %%fs:0, %%eax" "\n\t" - "movl 0x8(%%eax), %%esp" "\n\t" - "movl 0x8(%%esp), %%ebp" "\n" - "movl $1, %0" "\n" - "makefilechannel_pop:" "\n\t" - "movl (%%esp), %%eax" "\n\t" - "movl %%eax, %%fs:0" "\n\t" - "add $12, %%esp" "\n\t" - : "=m"(result) - : - : "%eax"); - -# ifdef TCL_MEM_DEBUG - __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(RESTORED_ESP), - "=m"(RESTORED_EBP), - "=r"(RESTORED_HANDLER) ); - - if (INITIAL_ESP != RESTORED_ESP) - panic("ESP restored incorrectly"); - if (INITIAL_EBP != RESTORED_EBP) - panic("EBP restored incorrectly"); - if (INITIAL_HANDLER != RESTORED_HANDLER) - panic("HANDLER restored incorrectly"); -# endif /* TCL_MEM_DEBUG */ - - if (result) - return NULL; + result = 1; + } __except (EXCEPTION_EXECUTE_HANDLER) {} #else - } - __except (EXCEPTION_EXECUTE_HANDLER) { + /* + * Don't have SEH available, do things the hard way. + * Note that this needs to be one block of asm, to avoid stack + * imbalance; also, it is illegal for one asm block to contain + * a jump to another. + */ + + __asm__ __volatile__ ( + /* - * Definately an invalid handle. So, therefore, the original - * is invalid also. + * Pick up parameters before messing with the stack */ + "movl %[dupedHandle], %%ebx" "\n\t" + + /* + * Construct an EXCEPTION_REGISTRATION to protect the + * call to CloseHandle + */ + "leal %[registration], %%edx" "\n\t" + "movl %%fs:0, %%eax" "\n\t" + "movl %%eax, 0x0(%%edx)" "\n\t" /* link */ + "leal 1f, %%eax" "\n\t" + "movl %%eax, 0x4(%%edx)" "\n\t" /* handler */ + "movl %%ebp, 0x8(%%edx)" "\n\t" /* ebp */ + "movl %%esp, 0xc(%%edx)" "\n\t" /* esp */ + "movl $0, 0x10(%%edx)" "\n\t" /* status */ + + /* Link the EXCEPTION_REGISTRATION on the chain */ + + "movl %%edx, %%fs:0" "\n\t" + + /* Call CloseHandle( dupedHandle ) */ + + "pushl %%ebx" "\n\t" + "call _CloseHandle@4" "\n\t" + + /* + * Come here on normal exit. Recover the EXCEPTION_REGISTRATION + * and put a TRUE status return into it. + */ + + "movl %%fs:0, %%edx" "\n\t" + "movl $1, %%eax" "\n\t" + "movl %%eax, 0x10(%%edx)" "\n\t" + "jmp 2f" "\n" + + /* + * Come here on an exception. Recover the EXCEPTION_REGISTRATION + */ + + "1:" "\t" + "movl %%fs:0, %%edx" "\n\t" + "movl 0x8(%%edx), %%edx" "\n\t" + + /* + * Come here however we exited. Restore context from the + * EXCEPTION_REGISTRATION in case the stack is unbalanced. + */ + + "2:" "\t" + "movl 0xc(%%edx), %%esp" "\n\t" + "movl 0x8(%%edx), %%ebp" "\n\t" + "movl 0x0(%%edx), %%eax" "\n\t" + "movl %%eax, %%fs:0" "\n\t" + + : + /* No outputs */ + : + [registration] "m" (registration), + [dupedHandle] "m" (dupedHandle) + : + "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory" + ); + result = registration.status; + +#endif + if (result == FALSE) { return NULL; } -#endif /* HAVE_NO_SEH */ /* Fall through, the handle is valid. */ @@ -1166,37 +1184,6 @@ Tcl_MakeFileChannel(rawHandle, mode) /* *---------------------------------------------------------------------- * - * _except_makefilechannel_handler -- - * - * SEH exception handler for Tcl_MakeFileChannel. - * - * Results: - * See Tcl_MakeFileChannel. - * - * Side effects: - * See Tcl_MakeFileChannel. - * - *---------------------------------------------------------------------- - */ -#ifdef HAVE_NO_SEH -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_makefilechannel_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext) -{ - __asm__ __volatile__ ( - "jmp makefilechannel_reentry"); - return 0; /* Function does not return */ -} -#endif - -/* - *---------------------------------------------------------------------- - * * TclpGetDefaultStdChannel -- * * Constructs a channel for the specified standard OS handle. diff --git a/win/tclWinFCmd.c b/win/tclWinFCmd.c index 29094c4..b8d1564 100644 --- a/win/tclWinFCmd.c +++ b/win/tclWinFCmd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFCmd.c,v 1.35.2.3 2005/02/17 18:31:54 hobbs Exp $ + * RCS: @(#) $Id: tclWinFCmd.c,v 1.35.2.4 2005/06/23 15:05:22 kennykb Exp $ */ #include "tclWinInt.h" @@ -73,35 +73,25 @@ CONST TclFileAttrProcs tclpFileAttrProcs[] = { {GetWinFileShortName, CannotSetAttribute}, {GetWinFileAttributes, SetWinFileAttributes}}; -#if defined(HAVE_NO_SEH) && defined(TCL_MEM_DEBUG) -static void *INITIAL_ESP, - *INITIAL_EBP, - *INITIAL_HANDLER, - *RESTORED_ESP, - *RESTORED_EBP, - *RESTORED_HANDLER; -#endif /* HAVE_NO_SEH && TCL_MEM_DEBUG */ - #ifdef HAVE_NO_SEH -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_dorenamefile_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext); - -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_docopyfile_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext); - -#endif /* HAVE_NO_SEH */ + +/* + * Unlike Borland and Microsoft, we don't register exception handlers + * by pushing registration records onto the runtime stack. Instead, we + * register them by creating an EXCEPTION_REGISTRATION within the activation + * record. + */ + +typedef struct EXCEPTION_REGISTRATION { + struct EXCEPTION_REGISTRATION* link; + EXCEPTION_DISPOSITION (*handler)( struct _EXCEPTION_RECORD*, void*, + struct _CONTEXT*, void* ); + void* ebp; + void* esp; + int status; +} EXCEPTION_REGISTRATION; + +#endif /* * Prototype for the TraverseWinTree callback function. @@ -192,6 +182,9 @@ DoRenameFile( CONST TCHAR *nativeDst) /* New pathname for file or directory * (native). */ { +#ifdef HAVE_NO_SEH + EXCEPTION_REGISTRATION registration; +#endif DWORD srcAttr, dstAttr; int retval = -1; @@ -211,69 +204,95 @@ DoRenameFile( * if one of the arguments is a char block device. */ -#ifdef HAVE_NO_SEH -# ifdef TCL_MEM_DEBUG - __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(INITIAL_ESP), - "=m"(INITIAL_EBP), - "=r"(INITIAL_HANDLER) ); -# endif /* TCL_MEM_DEBUG */ - - __asm__ __volatile__ ( - "pushl %%ebp" "\n\t" - "pushl %0" "\n\t" - "pushl %%fs:0" "\n\t" - "movl %%esp, %%fs:0" - : - : "r" (_except_dorenamefile_handler) - ); -#else +#ifndef HAVE_NO_SEH __try { -#endif /* HAVE_NO_SEH */ if ((*tclWinProcs->moveFileProc)(nativeSrc, nativeDst) != FALSE) { retval = TCL_OK; } -#ifdef HAVE_NO_SEH - __asm__ __volatile__ ( - "jmp dorenamefile_pop" "\n" - "dorenamefile_reentry:" "\n\t" - "movl %%fs:0, %%eax" "\n\t" - "movl 0x8(%%eax), %%esp" "\n\t" - "movl 0x8(%%esp), %%ebp" "\n" - "dorenamefile_pop:" "\n\t" - "movl (%%esp), %%eax" "\n\t" - "movl %%eax, %%fs:0" "\n\t" - "add $12, %%esp" "\n\t" - : - : - : "%eax"); - -# ifdef TCL_MEM_DEBUG - __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(RESTORED_ESP), - "=m"(RESTORED_EBP), - "=r"(RESTORED_HANDLER) ); - - if (INITIAL_ESP != RESTORED_ESP) - panic("ESP restored incorrectly"); - if (INITIAL_EBP != RESTORED_EBP) - panic("EBP restored incorrectly"); - if (INITIAL_HANDLER != RESTORED_HANDLER) - panic("HANDLER restored incorrectly"); -# endif /* TCL_MEM_DEBUG */ -#else } __except (EXCEPTION_EXECUTE_HANDLER) {} -#endif /* HAVE_NO_SEH */ +#else /* - * Avoid using control flow statements in the SEH guarded block! + * Don't have SEH available, do things the hard way. + * Note that this needs to be one block of asm, to avoid stack + * imbalance; also, it is illegal for one asm block to contain + * a jump to another. */ + + __asm__ __volatile__ ( + /* + * Pick up params before messing with the stack */ + + "movl %[nativeDst], %%ebx" "\n\t" + "movl %[nativeSrc], %%ecx" "\n\t" + + /* + * Construct an EXCEPTION_REGISTRATION to protect the + * call to MoveFile + */ + "leal %[registration], %%edx" "\n\t" + "movl %%fs:0, %%eax" "\n\t" + "movl %%eax, 0x0(%%edx)" "\n\t" /* link */ + "leal 1f, %%eax" "\n\t" + "movl %%eax, 0x4(%%edx)" "\n\t" /* handler */ + "movl %%ebp, 0x8(%%edx)" "\n\t" /* ebp */ + "movl %%esp, 0xc(%%edx)" "\n\t" /* esp */ + "movl $0, 0x10(%%edx)" "\n\t" /* status */ + + /* Link the EXCEPTION_REGISTRATION on the chain */ + + "movl %%edx, %%fs:0" "\n\t" + + /* Call MoveFile( nativeSrc, nativeDst ) */ + + "pushl %%ebx" "\n\t" + "pushl %%ecx" "\n\t" + "movl %[moveFile], %%eax" "\n\t" + "call *%%eax" "\n\t" + + /* + * Come here on normal exit. Recover the EXCEPTION_REGISTRATION + * and put the status return from MoveFile into it. + */ + + "movl %%fs:0, %%edx" "\n\t" + "movl %%eax, 0x10(%%edx)" "\n\t" + "jmp 2f" "\n" + + /* + * Come here on an exception. Recover the EXCEPTION_REGISTRATION + */ + + "1:" "\t" + "movl %%fs:0, %%edx" "\n\t" + "movl 0x8(%%edx), %%edx" "\n\t" + + /* + * Come here however we exited. Restore context from the + * EXCEPTION_REGISTRATION in case the stack is unbalanced. + */ + + "2:" "\t" + "movl 0xc(%%edx), %%esp" "\n\t" + "movl 0x8(%%edx), %%ebp" "\n\t" + "movl 0x0(%%edx), %%eax" "\n\t" + "movl %%eax, %%fs:0" "\n\t" + + : + /* No outputs */ + : + [registration] "m" (registration), + [nativeDst] "m" (nativeDst), + [nativeSrc] "m" (nativeSrc), + [moveFile] "r" (tclWinProcs->moveFileProc) + : + "%eax", "%ebx", "%ecx", "%edx", "memory" + ); + if (registration.status != FALSE) { + retval = TCL_OK; + } +#endif + if (retval != -1) return retval; @@ -493,37 +512,6 @@ DoRenameFile( } /* - *---------------------------------------------------------------------- - * - * _except_dorenamefile_handler -- - * - * SEH exception handler for DoRenameFile. - * - * Results: - * See DoRenameFile. - * - * Side effects: - * See DoRenameFile. - * - *---------------------------------------------------------------------- - */ -#ifdef HAVE_NO_SEH -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_dorenamefile_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext) -{ - __asm__ __volatile__ ( - "jmp dorenamefile_reentry"); - return 0; /* Function does not return */ -} -#endif /* HAVE_NO_SEH */ - -/* *--------------------------------------------------------------------------- * * TclpObjCopyFile, DoCopyFile -- @@ -564,6 +552,9 @@ DoCopyFile( CONST TCHAR *nativeSrc, /* Pathname of file to be copied (native). */ CONST TCHAR *nativeDst) /* Pathname of file to copy to (native). */ { +#ifdef HAVE_NO_SEH + EXCEPTION_REGISTRATION registration; +#endif int retval = -1; /* @@ -582,69 +573,97 @@ DoCopyFile( * of the arguments is a char block device. */ -#ifdef HAVE_NO_SEH -# ifdef TCL_MEM_DEBUG - __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(INITIAL_ESP), - "=m"(INITIAL_EBP), - "=r"(INITIAL_HANDLER) ); -# endif /* TCL_MEM_DEBUG */ - - __asm__ __volatile__ ( - "pushl %%ebp" "\n\t" - "pushl %0" "\n\t" - "pushl %%fs:0" "\n\t" - "movl %%esp, %%fs:0" - : - : "r" (_except_docopyfile_handler) - ); -#else +#ifndef HAVE_NO_SEH __try { -#endif /* HAVE_NO_SEH */ if ((*tclWinProcs->copyFileProc)(nativeSrc, nativeDst, 0) != FALSE) { retval = TCL_OK; } -#ifdef HAVE_NO_SEH - __asm__ __volatile__ ( - "jmp docopyfile_pop" "\n" - "docopyfile_reentry:" "\n\t" - "movl %%fs:0, %%eax" "\n\t" - "movl 0x8(%%eax), %%esp" "\n\t" - "movl 0x8(%%esp), %%ebp" "\n" - "docopyfile_pop:" "\n\t" - "movl (%%esp), %%eax" "\n\t" - "movl %%eax, %%fs:0" "\n\t" - "add $12, %%esp" "\n\t" - : - : - : "%eax"); - -# ifdef TCL_MEM_DEBUG - __asm__ __volatile__ ( - "movl %%esp, %0" "\n\t" - "movl %%ebp, %1" "\n\t" - "movl %%fs:0, %2" "\n\t" - : "=m"(RESTORED_ESP), - "=m"(RESTORED_EBP), - "=r"(RESTORED_HANDLER) ); - - if (INITIAL_ESP != RESTORED_ESP) - panic("ESP restored incorrectly"); - if (INITIAL_EBP != RESTORED_EBP) - panic("EBP restored incorrectly"); - if (INITIAL_HANDLER != RESTORED_HANDLER) - panic("HANDLER restored incorrectly"); -# endif /* TCL_MEM_DEBUG */ -#else } __except (EXCEPTION_EXECUTE_HANDLER) {} -#endif /* HAVE_NO_SEH */ +#else /* - * Avoid using control flow statements in the SEH guarded block! + * Don't have SEH available, do things the hard way. + * Note that this needs to be one block of asm, to avoid stack + * imbalance; also, it is illegal for one asm block to contain + * a jump to another. */ + + __asm__ __volatile__ ( + + /* + * Pick up parameters before messing with the stack + */ + + "movl %[nativeDst], %%ebx" "\n\t" + "movl %[nativeSrc], %%ecx" "\n\t" + /* + * Construct an EXCEPTION_REGISTRATION to protect the + * call to CopyFile + */ + "leal %[registration], %%edx" "\n\t" + "movl %%fs:0, %%eax" "\n\t" + "movl %%eax, 0x0(%%edx)" "\n\t" /* link */ + "leal 1f, %%eax" "\n\t" + "movl %%eax, 0x4(%%edx)" "\n\t" /* handler */ + "movl %%ebp, 0x8(%%edx)" "\n\t" /* ebp */ + "movl %%esp, 0xc(%%edx)" "\n\t" /* esp */ + "movl $0, 0x10(%%edx)" "\n\t" /* status */ + + /* Link the EXCEPTION_REGISTRATION on the chain */ + + "movl %%edx, %%fs:0" "\n\t" + + /* Call CopyFile( nativeSrc, nativeDst, 0 ) */ + + "movl %[copyFile], %%eax" "\n\t" + "pushl $0" "\n\t" + "pushl %%ebx" "\n\t" + "pushl %%ecx" "\n\t" + "call *%%eax" "\n\t" + + /* + * Come here on normal exit. Recover the EXCEPTION_REGISTRATION + * and put the status return from CopyFile into it. + */ + + "movl %%fs:0, %%edx" "\n\t" + "movl %%eax, 0x10(%%edx)" "\n\t" + "jmp 2f" "\n" + + /* + * Come here on an exception. Recover the EXCEPTION_REGISTRATION + */ + + "1:" "\t" + "movl %%fs:0, %%edx" "\n\t" + "movl 0x8(%%edx), %%edx" "\n\t" + + /* + * Come here however we exited. Restore context from the + * EXCEPTION_REGISTRATION in case the stack is unbalanced. + */ + + "2:" "\t" + "movl 0xc(%%edx), %%esp" "\n\t" + "movl 0x8(%%edx), %%ebp" "\n\t" + "movl 0x0(%%edx), %%eax" "\n\t" + "movl %%eax, %%fs:0" "\n\t" + + : + /* No outputs */ + : + [registration] "m" (registration), + [nativeDst] "m" (nativeDst), + [nativeSrc] "m" (nativeSrc), + [copyFile] "r" (tclWinProcs->copyFileProc) + : + "%eax", "%ebx", "%ecx", "%edx", "memory" + ); + if (registration.status != FALSE) { + retval = TCL_OK; + } +#endif + if (retval != -1) return retval; @@ -692,37 +711,6 @@ DoCopyFile( } /* - *---------------------------------------------------------------------- - * - * _except_docopyfile_handler -- - * - * SEH exception handler for DoCopyFile. - * - * Results: - * See DoCopyFile. - * - * Side effects: - * See DoCopyFile. - * - *---------------------------------------------------------------------- - */ -#ifdef HAVE_NO_SEH -static -__attribute__ ((cdecl)) -EXCEPTION_DISPOSITION -_except_docopyfile_handler( - struct _EXCEPTION_RECORD *ExceptionRecord, - void *EstablisherFrame, - struct _CONTEXT *ContextRecord, - void *DispatcherContext) -{ - __asm__ __volatile__ ( - "jmp docopyfile_reentry"); - return 0; /* Function does not return */ -} -#endif /* HAVE_NO_SEH */ - -/* *--------------------------------------------------------------------------- * * TclpObjDeleteFile, TclpDeleteFile -- -- cgit v0.12 From 05aa355aebd2f1cac41585bf8feae258f79fb446 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 23 Jun 2005 15:45:13 +0000 Subject: release tag / changes updates --- ChangeLog | 4 ++-- changes | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3ec32d8..732660d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-06-23 Kevin Kenny + *** 8.4.11 TAGGED FOR RELEASE *** + * win/tclWinChan.c: More rewriting of __asm__ blocks that * win/tclWinFCmd.c: implement SEH in GCC, because mingw's gcc 3.4.2 is not as forgiving of violations committed by @@ -7,8 +9,6 @@ 2005-06-23 Daniel Steffen - *** 8.4.11 TAGGED FOR RELEASE *** - * unix/Makefile.in (install-private-headers): rewrite tclPort.h when installing private headers to remove ../unix relative #include path to tclUnixPort.h (which is incorrect at the installed location). diff --git a/changes b/changes index 18e3413..b2ea181 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.23 2005/06/22 21:44:11 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.24 2005/06/23 15:45:24 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6223,4 +6223,6 @@ Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] 2005-06-22 (bug fix)[1225044] Windows: UMR in pipe close (kenny) +2005-06-23 (bug fix)[1225957] Windows/gcc: crashes in assembler code (kenny) + --- Released 8.4.11, June 24, 2005 --- See ChangeLog for details --- -- cgit v0.12 From 6cc404a7baf34ab2a0434806af8b2d46414b9570 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 23 Jun 2005 17:01:12 +0000 Subject: * tools/tcltk-man2html.tcl: fixed useversion glob pattern to accept multi-digit patchlevels. --- ChangeLog | 7 ++++++- tools/tcltk-man2html.tcl | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 732660d..d9f6e0c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ -2005-06-23 Kevin Kenny +2005-06-23 Daniel Steffen *** 8.4.11 TAGGED FOR RELEASE *** + * tools/tcltk-man2html.tcl: fixed useversion glob pattern to accept + multi-digit patchlevels. + +2005-06-23 Kevin Kenny + * win/tclWinChan.c: More rewriting of __asm__ blocks that * win/tclWinFCmd.c: implement SEH in GCC, because mingw's gcc 3.4.2 is not as forgiving of violations committed by diff --git a/tools/tcltk-man2html.tcl b/tools/tcltk-man2html.tcl index f1b1b33..db24a9a 100755 --- a/tools/tcltk-man2html.tcl +++ b/tools/tcltk-man2html.tcl @@ -82,7 +82,7 @@ proc parse_command_line {} { set build_tcl 0 set build_tk 0 # Default search version is a glob pattern - set useversion {{,[8-9].[0-9]{,.[0-9]}}} + set useversion {{,[8-9].[0-9]{,.[0-9]{,[0-9]}}}} # Handle arguments a la GNU: # --version -- cgit v0.12 From b6b0abd7fc4e42fefd8b602b67656b9fb5224ae8 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 23 Jun 2005 20:25:24 +0000 Subject: new 8.4.11 release date: June 28 --- changes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changes b/changes index b2ea181..4e0c048 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.24 2005/06/23 15:45:24 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.25 2005/06/23 20:25:24 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6225,4 +6225,4 @@ Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] 2005-06-23 (bug fix)[1225957] Windows/gcc: crashes in assembler code (kenny) ---- Released 8.4.11, June 24, 2005 --- See ChangeLog for details --- +--- Released 8.4.11, June 28, 2005 --- See ChangeLog for details --- -- cgit v0.12 From 398b7259c8c32271fc056be36fa16930498ca341 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 24 Jun 2005 15:02:03 +0000 Subject: * library/auto.tcl: Make file safe to re-[source] without destroying registered auto_mkindex_parser hooks. --- ChangeLog | 7 ++++++- library/auto.tcl | 47 +++++++++++++++++++++++++++-------------------- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index d9f6e0c..27ee03e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ -2005-06-23 Daniel Steffen +2005-06-24 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** + * library/auto.tcl: Make file safe to re-[source] without + destroying registered auto_mkindex_parser hooks. + +2005-06-23 Daniel Steffen + * tools/tcltk-man2html.tcl: fixed useversion glob pattern to accept multi-digit patchlevels. diff --git a/library/auto.tcl b/library/auto.tcl index 3262f5f..35ce6f2 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.5 2005/01/27 22:26:17 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.6 2005/06/24 15:02:25 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -309,7 +309,10 @@ namespace eval auto_mkindex_parser { variable scriptFile "" ;# name of file being processed variable contextStack "" ;# stack of namespace scopes variable imports "" ;# keeps track of all imported cmds - variable initCommands "" ;# list of commands that create aliases + variable initCommands ;# list of commands that create aliases + if {![info exists initCommands]} { + set initCommands [list] + } proc init {} { variable parser @@ -533,24 +536,6 @@ proc auto_mkindex_parser::fullname {name} { return $name } -# Register all of the procedures for the auto_mkindex parser that -# will build the "tclIndex" file. - -# AUTO MKINDEX: proc name arglist body -# Adds an entry to the auto index list for the given procedure name. - -auto_mkindex_parser::command proc {name args} { - variable index - variable scriptFile - # Do some fancy reformatting on the "source" call to handle platform - # differences with respect to pathnames. Use format just so that the - # command is a little easier to read (otherwise it'd be full of - # backslashed dollar signs, etc. - append index [list set auto_index([fullname $name])] \ - [format { [list source [file join $dir %s]]} \ - [file split $scriptFile]] "\n" -} - # Conditionally add support for Tcl byte code files. There are some # tricky details here. First, we need to get the tbcload library # initialized in the current interpreter. We cannot load tbcload into the @@ -584,6 +569,28 @@ auto_mkindex_parser::hook { } } +if {[llength $::auto_mkindex_parser::initCommands]} { + return +} + +# Register all of the procedures for the auto_mkindex parser that +# will build the "tclIndex" file. + +# AUTO MKINDEX: proc name arglist body +# Adds an entry to the auto index list for the given procedure name. + +auto_mkindex_parser::command proc {name args} { + variable index + variable scriptFile + # Do some fancy reformatting on the "source" call to handle platform + # differences with respect to pathnames. Use format just so that the + # command is a little easier to read (otherwise it'd be full of + # backslashed dollar signs, etc. + append index [list set auto_index([fullname $name])] \ + [format { [list source [file join $dir %s]]} \ + [file split $scriptFile]] "\n" +} + # AUTO MKINDEX: namespace eval name command ?arg arg...? # Adds the namespace name onto the context stack and evaluates the # associated body of commands. -- cgit v0.12 From 59a6d33cced0379c77fe74ddfe007f79ca0c0f40 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 24 Jun 2005 18:21:36 +0000 Subject: finalize Tcl_Preserve after exit handlers --- ChangeLog | 12 ++++++++++++ generic/tclEvent.c | 5 ++++- generic/tclInt.h | 7 ++++--- generic/tclPreserve.c | 17 ++++------------- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 27ee03e..61bfe56 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2005-06-24 Kevin Kenny + + * generic/tclEvent.c (Tcl_Finalize): + * generic/tclInt.h: + * generic/tclPreserve.c (TclFinalizePreserve): Changed the + finalization logic so that Tcl_Preserve finalizes after exit + handlers run; a lot of code called from Tk's exit handlers + presumes tha Tcl_Preserve will still work even from an exit + handler. Also, made the assertion check that no exit handlers + are created in Tcl_Finalize conditional on TCL_MEM_DEBUG to + avoid spurios panics in the "stable" release. + 2005-06-24 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 81b6b2d..acabcc0 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.10 2005/06/22 19:35:15 kennykb Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.11 2005/06/24 18:21:39 kennykb Exp $ */ #include "tclInt.h" @@ -904,13 +904,16 @@ Tcl_Finalize() * nobody's done this. */ +#ifdef TCL_MEM_DEBUG if ( firstExitPtr != NULL ) { Tcl_Panic( "exit handlers were created during Tcl_Finalize" ); } +#endif /* * There shouldn't be any malloc'ed memory after this. */ + TclFinalizePreserve(); #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) && !defined(PURIFY) TclFinalizeThreadAlloc(); #endif diff --git a/generic/tclInt.h b/generic/tclInt.h index 23bd5aa..115866d 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.14 2005/06/22 19:35:18 kennykb Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.15 2005/06/24 18:21:40 kennykb Exp $ */ #ifndef _TCLINT @@ -1652,6 +1652,7 @@ EXTERN int TclFileMakeDirsCmd _ANSI_ARGS_((Tcl_Interp *interp, EXTERN int TclFileRenameCmd _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])) ; EXTERN void TclFinalizeAllocSubsystem _ANSI_ARGS_((void)); +EXTERN void TclFinalizeAsync _ANSI_ARGS_((void)); EXTERN void TclFinalizeCompExecEnv _ANSI_ARGS_((void)); EXTERN void TclFinalizeCompilation _ANSI_ARGS_((void)); EXTERN void TclFinalizeEncodingSubsystem _ANSI_ARGS_((void)); @@ -1661,11 +1662,11 @@ EXTERN void TclFinalizeIOSubsystem _ANSI_ARGS_((void)); EXTERN void TclFinalizeFilesystem _ANSI_ARGS_((void)); EXTERN void TclResetFilesystem _ANSI_ARGS_((void)); EXTERN void TclFinalizeLoad _ANSI_ARGS_((void)); +EXTERN void TclFinalizeLock _ANSI_ARGS_((void)); EXTERN void TclFinalizeMemorySubsystem _ANSI_ARGS_((void)); EXTERN void TclFinalizeNotifier _ANSI_ARGS_((void)); -EXTERN void TclFinalizeAsync _ANSI_ARGS_((void)); +EXTERN void TclFinalizePreserve _ANSI_ARGS_((void)); EXTERN void TclFinalizeSynchronization _ANSI_ARGS_((void)); -EXTERN void TclFinalizeLock _ANSI_ARGS_((void)); EXTERN void TclFinalizeThreadData _ANSI_ARGS_((void)); EXTERN int TclGlob _ANSI_ARGS_((Tcl_Interp *interp, char *pattern, Tcl_Obj *unquotedPrefix, diff --git a/generic/tclPreserve.c b/generic/tclPreserve.c index 04615b7..9352e84 100644 --- a/generic/tclPreserve.c +++ b/generic/tclPreserve.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPreserve.c,v 1.3.34.1 2003/07/16 21:25:07 hobbs Exp $ + * RCS: @(#) $Id: tclPreserve.c,v 1.3.34.2 2005/06/24 18:21:41 kennykb Exp $ */ #include "tclInt.h" @@ -66,17 +66,11 @@ typedef struct HandleStruct { } HandleStruct; -/* - * Static routines in this file: - */ - -static void PreserveExitProc _ANSI_ARGS_((ClientData clientData)); - /* *---------------------------------------------------------------------- * - * PreserveExitProc -- + * TclFinalizePreserve -- * * Called during exit processing to clean up the reference array. * @@ -90,9 +84,8 @@ static void PreserveExitProc _ANSI_ARGS_((ClientData clientData)); */ /* ARGSUSED */ -static void -PreserveExitProc(clientData) - ClientData clientData; /* NULL -Unused. */ +void +TclFinalizePreserve() { Tcl_MutexLock(&preserveMutex); if (spaceAvl != 0) { @@ -151,8 +144,6 @@ Tcl_Preserve(clientData) if (inUse == spaceAvl) { if (spaceAvl == 0) { - Tcl_CreateExitHandler((Tcl_ExitProc *) PreserveExitProc, - (ClientData) NULL); refArray = (Reference *) ckalloc((unsigned) (INITIAL_SIZE*sizeof(Reference))); spaceAvl = INITIAL_SIZE; -- cgit v0.12 From 8f7acc02bcd8a64423e1652bcb5f43f8615ddf8d Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 24 Jun 2005 19:36:57 +0000 Subject: release tag/spelling --- ChangeLog | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 61bfe56..94e561d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-06-24 Kevin Kenny + *** 8.4.11 TAGGED FOR RELEASE *** + * generic/tclEvent.c (Tcl_Finalize): * generic/tclInt.h: * generic/tclPreserve.c (TclFinalizePreserve): Changed the @@ -8,12 +10,10 @@ presumes tha Tcl_Preserve will still work even from an exit handler. Also, made the assertion check that no exit handlers are created in Tcl_Finalize conditional on TCL_MEM_DEBUG to - avoid spurios panics in the "stable" release. + avoid spurious panics in the "stable" release. 2005-06-24 Don Porter - *** 8.4.11 TAGGED FOR RELEASE *** - * library/auto.tcl: Make file safe to re-[source] without destroying registered auto_mkindex_parser hooks. -- cgit v0.12 From 8cd33b52416f2fe2176bf5a616770ee521dbff99 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 24 Jun 2005 23:13:10 +0000 Subject: * library/auto.tcl: Make file safe to re-[source] without destroying registered auto_mkindex_parser hooks. --- library/auto.tcl | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/library/auto.tcl b/library/auto.tcl index 35ce6f2..d251fd0 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.6 2005/06/24 15:02:25 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.7 2005/06/24 23:13:10 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -536,6 +536,28 @@ proc auto_mkindex_parser::fullname {name} { return $name } +if {[llength $::auto_mkindex_parser::initCommands]} { + return +} + +# Register all of the procedures for the auto_mkindex parser that +# will build the "tclIndex" file. + +# AUTO MKINDEX: proc name arglist body +# Adds an entry to the auto index list for the given procedure name. + +auto_mkindex_parser::command proc {name args} { + variable index + variable scriptFile + # Do some fancy reformatting on the "source" call to handle platform + # differences with respect to pathnames. Use format just so that the + # command is a little easier to read (otherwise it'd be full of + # backslashed dollar signs, etc. + append index [list set auto_index([fullname $name])] \ + [format { [list source [file join $dir %s]]} \ + [file split $scriptFile]] "\n" +} + # Conditionally add support for Tcl byte code files. There are some # tricky details here. First, we need to get the tbcload library # initialized in the current interpreter. We cannot load tbcload into the @@ -569,28 +591,6 @@ auto_mkindex_parser::hook { } } -if {[llength $::auto_mkindex_parser::initCommands]} { - return -} - -# Register all of the procedures for the auto_mkindex parser that -# will build the "tclIndex" file. - -# AUTO MKINDEX: proc name arglist body -# Adds an entry to the auto index list for the given procedure name. - -auto_mkindex_parser::command proc {name args} { - variable index - variable scriptFile - # Do some fancy reformatting on the "source" call to handle platform - # differences with respect to pathnames. Use format just so that the - # command is a little easier to read (otherwise it'd be full of - # backslashed dollar signs, etc. - append index [list set auto_index([fullname $name])] \ - [format { [list source [file join $dir %s]]} \ - [file split $scriptFile]] "\n" -} - # AUTO MKINDEX: namespace eval name command ?arg arg...? # Adds the namespace name onto the context stack and evaluates the # associated body of commands. -- cgit v0.12 From 4902e44b93795162d58668f2a51ed99f94cb894a Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 27 Jun 2005 18:19:06 +0000 Subject: * library/auto.tcl: Reverted to Revision 1.12.2.3 (Tcl 8.4.9). Restores the (buggy) behavior of [auto_reset] that fails to clear away auto-loaded commands from non-global namespaces. Fixing this bug exposed an unknown number of buggy files out there (including at least portions of the Tk script library) that cannot tolerate double [source]-ing. The burden of fixing these exposed bugs will not be forced on package/extension/application authors until Tcl 8.5. --- ChangeLog | 13 ++++++++++++- changes | 5 ++++- library/auto.tcl | 40 ++++++++++++++++------------------------ 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index 94e561d..1d805ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,18 @@ -2005-06-24 Kevin Kenny +2005-06-24 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** + * library/auto.tcl: Reverted to Revision 1.12.2.3 (Tcl 8.4.9). + Restores the (buggy) behavior of [auto_reset] that fails to clear + away auto-loaded commands from non-global namespaces. Fixing this + bug exposed an unknown number of buggy files out there (including at + least portions of the Tk script library) that cannot tolerate double + [source]-ing. The burden of fixing these exposed bugs will not be + forced on package/extension/application authors until Tcl 8.5. + +2005-06-24 Kevin Kenny + + * generic/tclEvent.c (Tcl_Finalize): * generic/tclInt.h: * generic/tclPreserve.c (TclFinalizePreserve): Changed the diff --git a/changes b/changes index 4e0c048..7adc31e 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.25 2005/06/23 20:25:24 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.26 2005/06/27 18:20:16 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6225,4 +6225,7 @@ Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] 2005-06-23 (bug fix)[1225957] Windows/gcc: crashes in assembler code (kenny) +2005-06-27 (revert)[1101670] [auto_reset] disabled in non-global namespace. +Restores Tcl 8.4.9 behavior (porter) + --- Released 8.4.11, June 28, 2005 --- See ChangeLog for details --- diff --git a/library/auto.tcl b/library/auto.tcl index d251fd0..b02b77f 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.7 2005/06/24 23:13:10 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.8 2005/06/27 18:20:26 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -16,27 +16,26 @@ # # Destroy all cached information for auto-loading and auto-execution, # so that the information gets recomputed the next time it's needed. -# Also delete any procedures that are listed in the auto-load index, -# except some of those defined in the Tcl script library. +# Also delete any procedures that are listed in the auto-load index +# except those defined in this file. # # Arguments: # None. proc auto_reset {} { - if {[array exists ::auto_index]} { - foreach cmdName [array names ::auto_index] { - if {[string match auto_* $cmdName]} {continue} - set fqcn [namespace which $cmdName] - if {$fqcn eq ""} {continue} - if {[catch {info args $fqcn}]} {continue} - if {[lsearch -exact { - ::unknown ::pkg_mkIndex ::tclPkgSetup ::tcl_findLibrary - ::pkg_compareExtension ::tclPkgUnknown ::tcl::MacOSXPkgUnknown - ::tcl::MacPkgUnknown} $fqcn] != -1} {continue} - rename $fqcn {} - } + global auto_execs auto_index auto_oldpath + foreach p [info procs] { + if {[info exists auto_index($p)] && ![string match auto_* $p] + && ([lsearch -exact {unknown pkg_mkIndex tclPkgSetup + tcl_findLibrary pkg_compareExtension + tclPkgUnknown tcl::MacOSXPkgUnknown + tcl::MacPkgUnknown} $p] < 0)} { + rename $p {} + } } - unset -nocomplain ::auto_execs ::auto_index ::auto_oldpath + catch {unset auto_execs} + catch {unset auto_index} + catch {unset auto_oldpath} } # tcl_findLibrary -- @@ -309,10 +308,7 @@ namespace eval auto_mkindex_parser { variable scriptFile "" ;# name of file being processed variable contextStack "" ;# stack of namespace scopes variable imports "" ;# keeps track of all imported cmds - variable initCommands ;# list of commands that create aliases - if {![info exists initCommands]} { - set initCommands [list] - } + variable initCommands "" ;# list of commands that create aliases proc init {} { variable parser @@ -536,10 +532,6 @@ proc auto_mkindex_parser::fullname {name} { return $name } -if {[llength $::auto_mkindex_parser::initCommands]} { - return -} - # Register all of the procedures for the auto_mkindex parser that # will build the "tclIndex" file. -- cgit v0.12 From 147a52438f07a90a4dead54c7bd37d5ec18a350f Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 27 Jun 2005 20:00:45 +0000 Subject: typo in date --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1d805ba..579885b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2005-06-24 Don Porter +2005-06-27 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** -- cgit v0.12 From 2cc4f650037df0ba4caa9c95eb23665b2384c3ed Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 27 Jun 2005 20:06:27 +0000 Subject: formatting --- ChangeLog | 1 - 1 file changed, 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 579885b..9a160a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,7 +12,6 @@ 2005-06-24 Kevin Kenny - * generic/tclEvent.c (Tcl_Finalize): * generic/tclInt.h: * generic/tclPreserve.c (TclFinalizePreserve): Changed the -- cgit v0.12 From e539042615457f25e32cc481db82a48146b76495 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 1 Jul 2005 10:57:56 +0000 Subject: Protect against spurious wake-ups while waiting on the condition variable when tearing down the notifier thread [Bug# 1222872]. --- ChangeLog | 6 ++++++ unix/tclUnixNotfy.c | 14 ++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9a160a7..6cc9f05 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-07-01 Zoran Vasiljevic + + * unix/tclUnixNotfy.c: protect against spurious wake-ups while + waiting on the condition variable when tearing down the notifier + thread [Bug# 1222872]. + 2005-06-27 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 1f1615d..24d552f 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.12 2005/06/07 10:26:58 dkf Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.13 2005/07/01 10:57:59 vasiljevic Exp $ */ #ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier @@ -275,7 +275,7 @@ Tcl_FinalizeNotifier(clientData) */ if (notifierCount == 0) { - int result, dummy; + int result; if (triggerPipe < 0) { panic("Tcl_FinalizeNotifier: notifier pipe not initialized"); } @@ -288,13 +288,15 @@ Tcl_FinalizeNotifier(clientData) * not just close the pipe and check for EOF in the notifier * thread because if a background child process was created with * exec, select() would not register the EOF on the pipe until the - * child processes had terminated. [Bug: 4139] + * child processes had terminated. [Bug: 4139] [Bug: 1222872] */ + write(triggerPipe, "q", 1); close(triggerPipe); - - Tcl_ConditionWait(¬ifierCV, ¬ifierMutex, NULL); - result = Tcl_JoinThread(notifierThread, &dummy); + while(triggerPipe >= 0) { + Tcl_ConditionWait(¬ifierCV, ¬ifierMutex, NULL); + } + result = Tcl_JoinThread(notifierThread, NULL); if (result) { Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread"); } -- cgit v0.12 From bf7695058ddedaee83cf8f2386277dded31a5260 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 5 Jul 2005 17:27:06 +0000 Subject: * generic/tclNamesp.c: Allow for [namespace import] of a command * tests/namespace.test: over a previous [namespace import] of itself without throwing an error. [RFE 1230597] --- ChangeLog | 6 ++++++ generic/tclNamesp.c | 12 +++++++++++- tests/namespace.test | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6cc9f05..a9c5495 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-07-05 Don Porter + + * generic/tclNamesp.c: Allow for [namespace import] of a command + * tests/namespace.test: over a previous [namespace import] of itself + without throwing an error. [RFE 1230597] + 2005-07-01 Zoran Vasiljevic * unix/tclUnixNotfy.c: protect against spurious wake-ups while diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 55e92af..3eb1bb2 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.6 2004/10/05 16:22:34 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.7 2005/07/05 17:27:08 dgp Exp $ */ #include "tclInt.h" @@ -1277,6 +1277,16 @@ Tcl_Import(interp, namespacePtr, pattern, allowOverwrite) refPtr->nextPtr = cmdPtr->importRefPtr; cmdPtr->importRefPtr = refPtr; } else { + Command *overwrite = (Command *) Tcl_GetHashValue(found); + if (overwrite->deleteProc == DeleteImportedCmd) { + ImportedCmdData *dataPtr = + (ImportedCmdData *) overwrite->objClientData; + if (dataPtr->realCmdPtr + == (Command *) Tcl_GetHashValue(hPtr)) { + /* Repeated import of same command -- acceptable */ + return TCL_OK; + } + } Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "can't import command \"", cmdName, "\": already exists", (char *) NULL); diff --git a/tests/namespace.test b/tests/namespace.test index 096af88..311f3af 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21.2.5 2004/10/28 00:01:11 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.6 2005/07/05 17:27:09 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -244,7 +244,7 @@ test namespace-9.4 {Tcl_Import, simple import} { } {cmd1: 123} test namespace-9.5 {Tcl_Import, can't redefine cmd unless allowOverwrite!=0} { list [catch {namespace eval test_ns_import {namespace import ::test_ns_export::*}} msg] $msg -} {1 {can't import command "cmd1": already exists}} +} {0 {}} test namespace-9.6 {Tcl_Import, cmd redefinition ok if allowOverwrite!=0} { namespace eval test_ns_import { namespace import -force ::test_ns_export::* -- cgit v0.12 From b70197afbdb6e71461ae861830db8f544fc47505 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 5 Jul 2005 21:18:14 +0000 Subject: * generic/tclCmdAH.c New "encoding" Tcl_ObjType (not registered) * generic/tclEncoding.c that permits longer lifetimes of the * generic/tclInt.h Tcl_Encoding values kept as intreps of Tcl_Obj's. Reduces the need for repeated reading of encoding definition files from the filesystem. [Bug 1077262] --- ChangeLog | 6 ++++ generic/tclCmdAH.c | 15 ++++----- generic/tclEncoding.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclInt.h | 4 ++- 4 files changed, 104 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index a9c5495..a8c435e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2005-07-05 Don Porter + * generic/tclCmdAH.c New "encoding" Tcl_ObjType (not registered) + * generic/tclEncoding.c that permits longer lifetimes of the + * generic/tclInt.h Tcl_Encoding values kept as intreps of + Tcl_Obj's. Reduces the need for repeated reading of encoding + definition files from the filesystem. [Bug 1077262] + * generic/tclNamesp.c: Allow for [namespace import] of a command * tests/namespace.test: over a previous [namespace import] of itself without throwing an error. [RFE 1230597] diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 9c9fe7e..545af15 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.12 2005/06/17 23:26:20 dkf Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.13 2005/07/05 21:18:23 dgp Exp $ */ #include "tclInt.h" @@ -440,24 +440,21 @@ Tcl_EncodingObjCmd(dummy, interp, objc, objv) switch ((enum options) index) { case ENC_CONVERTTO: case ENC_CONVERTFROM: { - char *name; Tcl_Obj *data; if (objc == 3) { - name = NULL; + encoding = Tcl_GetEncoding(interp, NULL); data = objv[2]; } else if (objc == 4) { - name = Tcl_GetString(objv[2]); + if (TclGetEncodingFromObj(interp, objv[2], &encoding) + != TCL_OK) { + return TCL_ERROR; + } data = objv[3]; } else { Tcl_WrongNumArgs(interp, 2, objv, "?encoding? data"); return TCL_ERROR; } - encoding = Tcl_GetEncoding(interp, name); - if (!encoding) { - return TCL_ERROR; - } - if ((enum options) index == ENC_CONVERTFROM) { /* * Treat the string as binary data. diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index d35cd4c..efe5905 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.6 2004/11/12 23:42:00 hobbs Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.7 2005/07/05 21:18:23 dgp Exp $ */ #include "tclInt.h" @@ -178,6 +178,8 @@ static int BinaryProc _ANSI_ARGS_((ClientData clientData, Tcl_EncodingState *statePtr, char *dst, int dstLen, int *srcReadPtr, int *dstWrotePtr, int *dstCharsPtr)); +static void DupEncodingIntRep _ANSI_ARGS_((Tcl_Obj *srcPtr, + Tcl_Obj *dupPtr)); static void EscapeFreeProc _ANSI_ARGS_((ClientData clientData)); static int EscapeFromUtfProc _ANSI_ARGS_((ClientData clientData, CONST char *src, int srcLen, int flags, @@ -190,6 +192,7 @@ static int EscapeToUtfProc _ANSI_ARGS_((ClientData clientData, int *srcReadPtr, int *dstWrotePtr, int *dstCharsPtr)); static void FreeEncoding _ANSI_ARGS_((Tcl_Encoding encoding)); +static void FreeEncodingIntRep _ANSI_ARGS_((Tcl_Obj *objPtr)); static Encoding * GetTableEncoding _ANSI_ARGS_(( EscapeEncodingData *dataPtr, int state)); static Tcl_Encoding LoadEncodingFile _ANSI_ARGS_((Tcl_Interp *interp, @@ -239,6 +242,91 @@ static int UtfExtToUtfIntProc _ANSI_ARGS_((ClientData clientData, int *dstCharsPtr)); static int TclFindEncodings _ANSI_ARGS_((CONST char *argv0)); +/* + * A Tcl_ObjType for holding a cached Tcl_Encoding as the intrep. + * This should help the lifetime of encodings be more useful. + * See concerns raised in [Bug 1077262]. + */ + +static Tcl_ObjType EncodingType = { + "encoding", FreeEncodingIntRep, DupEncodingIntRep, NULL, NULL +}; + + +/* + *---------------------------------------------------------------------- + * + * TclGetEncodingFromObj -- + * + * Writes to (*encodingPtr) the Tcl_Encoding value of (*objPtr), + * if possible, and returns TCL_OK. If no such encoding exists, + * TCL_ERROR is returned, and if interp is non-NULL, an error message + * is written there. + * + * Results: + * Standard Tcl return code. + * + * Side effects: + * Caches the Tcl_Encoding value as the internal rep of (*objPtr). + * + *---------------------------------------------------------------------- + */ +int +TclGetEncodingFromObj(interp, objPtr, encodingPtr) + Tcl_Interp *interp; + Tcl_Obj *objPtr; + Tcl_Encoding *encodingPtr; +{ + CONST char *name = Tcl_GetString(objPtr); + if (objPtr->typePtr != &EncodingType) { + Tcl_Encoding encoding = Tcl_GetEncoding(interp, name); + + if (encoding == NULL) { + return TCL_ERROR; + } + if (objPtr->typePtr && objPtr->typePtr->freeIntRepProc) { + objPtr->typePtr->freeIntRepProc(objPtr); + } + objPtr->internalRep.otherValuePtr = (VOID *) encoding; + objPtr->typePtr = &EncodingType; + } + *encodingPtr = Tcl_GetEncoding(NULL, name); + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * + * FreeEncodingIntRep -- + * + * The Tcl_FreeInternalRepProc for the "encoding" Tcl_ObjType. + * + *---------------------------------------------------------------------- + */ +static void +FreeEncodingIntRep(objPtr) + Tcl_Obj *objPtr; +{ + Tcl_FreeEncoding((Tcl_Encoding) objPtr->internalRep.otherValuePtr); +} + +/* + *---------------------------------------------------------------------- + * + * DupEncodingIntRep -- + * + * The Tcl_DupInternalRepProc for the "encoding" Tcl_ObjType. + * + *---------------------------------------------------------------------- + */ +static void +DupEncodingIntRep(srcPtr, dupPtr) + Tcl_Obj *srcPtr; + Tcl_Obj *dupPtr; +{ + dupPtr->internalRep.otherValuePtr = (VOID *) + Tcl_GetEncoding(NULL, srcPtr->bytes); +} /* *--------------------------------------------------------------------------- diff --git a/generic/tclInt.h b/generic/tclInt.h index 115866d..d3f1ce1 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.15 2005/06/24 18:21:40 kennykb Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.16 2005/07/05 21:18:23 dgp Exp $ */ #ifndef _TCLINT @@ -1668,6 +1668,8 @@ EXTERN void TclFinalizeNotifier _ANSI_ARGS_((void)); EXTERN void TclFinalizePreserve _ANSI_ARGS_((void)); EXTERN void TclFinalizeSynchronization _ANSI_ARGS_((void)); EXTERN void TclFinalizeThreadData _ANSI_ARGS_((void)); +EXTERN int TclGetEncodingFromObj _ANSI_ARGS_((Tcl_Interp *interp, + Tcl_Obj *objPtr, Tcl_Encoding *encodingPtr)); EXTERN int TclGlob _ANSI_ARGS_((Tcl_Interp *interp, char *pattern, Tcl_Obj *unquotedPrefix, int globFlags, Tcl_GlobTypeData* types)); -- cgit v0.12 From c7cbce40a31cd045bd4d15ebf401f13f6172ab2b Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 8 Jul 2005 01:06:05 +0000 Subject: * unix/tcl.m4, unix/configure: Backported [Bug 1095909], removing * unix/tclUnixPort.h: any use of readdir_r as it is not * unix/tclUnixThrd.c: necessary and just confuses things. --- ChangeLog | 18 +- unix/configure | 837 ++++++++++++++++++++++------------------------------- unix/tcl.m4 | 48 +-- unix/tclUnixPort.h | 7 +- unix/tclUnixThrd.c | 52 +--- 5 files changed, 378 insertions(+), 584 deletions(-) diff --git a/ChangeLog b/ChangeLog index a8c435e..1de88f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,14 +1,20 @@ +2005-07-07 Jeff Hobbs + + * unix/tcl.m4, unix/configure: Backported [Bug 1095909], removing + * unix/tclUnixPort.h: any use of readdir_r as it is not + * unix/tclUnixThrd.c: necessary and just confuses things. + 2005-07-05 Don Porter - * generic/tclCmdAH.c New "encoding" Tcl_ObjType (not registered) - * generic/tclEncoding.c that permits longer lifetimes of the - * generic/tclInt.h Tcl_Encoding values kept as intreps of + * generic/tclCmdAH.c: New "encoding" Tcl_ObjType (not registered) + * generic/tclEncoding.c: that permits longer lifetimes of the + * generic/tclInt.h: Tcl_Encoding values kept as intreps of Tcl_Obj's. Reduces the need for repeated reading of encoding definition files from the filesystem. [Bug 1077262] - * generic/tclNamesp.c: Allow for [namespace import] of a command - * tests/namespace.test: over a previous [namespace import] of itself - without throwing an error. [RFE 1230597] + * generic/tclNamesp.c: Allow for [namespace import] of a command + * tests/namespace.test: over a previous [namespace import] of itself + without throwing an error. [RFE 1230597] 2005-07-01 Zoran Vasiljevic diff --git a/unix/configure b/unix/configure index add3aff..a59ced9 100755 --- a/unix/configure +++ b/unix/configure @@ -1254,144 +1254,6 @@ fi done LIBS=$ac_saved_libs - for ac_func in readdir_r -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1261: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - if test "x$ac_cv_func_readdir_r" = "xyes"; then - echo $ac_n "checking how many args readdir_r takes""... $ac_c" 1>&6 -echo "configure:1315: checking how many args readdir_r takes" >&5 - # IRIX 5.3 has a 2 arg version of readdir_r - # while other systems have a 3 arg version. - if eval "test \"`echo '$''{'tcl_cv_two_arg_readdir_r'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#ifdef NO_DIRENT_H -# include /* logic from tcl/compat/dirent.h * -# define dirent direct * */ -#else -# include -#endif - -int main() { -readdir_r(NULL, NULL); -; return 0; } -EOF -if { (eval echo configure:1337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_two_arg_readdir_r=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_two_arg_readdir_r=no -fi -rm -f conftest* -fi - - if eval "test \"`echo '$''{'tcl_cv_three_arg_readdir_r'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#ifdef NO_DIRENT_H -# include /* logic from tcl/compat/dirent.h * -# define dirent direct * */ -#else -# include -#endif - -int main() { -readdir_r(NULL, NULL, NULL); -; return 0; } -EOF -if { (eval echo configure:1368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_three_arg_readdir_r=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_three_arg_readdir_r=no -fi -rm -f conftest* -fi - - if test "x$tcl_cv_two_arg_readdir_r" = "xyes" ; then - echo "$ac_t""2" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_TWO_ARG_READDIR_R 1 -EOF - - elif test "x$tcl_cv_three_arg_readdir_r" = "xyes" ; then - echo "$ac_t""3" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_THREE_ARG_READDIR_R 1 -EOF - - else - { echo "configure: error: unknown number of args for readdir_r" 1>&2; exit 1; } - fi - fi else TCL_THREADS=0 echo "$ac_t""no (default)" 1>&6 @@ -1407,18 +1269,18 @@ EOF if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1411: checking if the compiler understands -pipe" >&5 +echo "configure:1273: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1284: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1437,7 +1299,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1441: checking how to run the C preprocessor" >&5 +echo "configure:1303: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1452,13 +1314,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1469,13 +1331,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1486,13 +1348,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1525,12 +1387,12 @@ echo "$ac_t""$CPP" 1>&6 #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1529: checking for sin" >&5 +echo "configure:1391: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1574,7 +1436,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1578: checking for main in -lieee" >&5 +echo "configure:1440: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1582,14 +1444,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1616,7 +1478,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1620: checking for main in -linet" >&5 +echo "configure:1482: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1624,14 +1486,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1653,17 +1515,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:1657: checking for net/errno.h" >&5 +echo "configure:1519: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1708,12 +1570,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1712: checking for connect" >&5 +echo "configure:1574: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1758,12 +1620,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:1762: checking for setsockopt" >&5 +echo "configure:1624: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -1804,7 +1666,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:1808: checking for setsockopt in -lsocket" >&5 +echo "configure:1670: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1812,7 +1674,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1851,12 +1713,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:1855: checking for accept" >&5 +echo "configure:1717: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -1901,12 +1763,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1905: checking for gethostbyname" >&5 +echo "configure:1767: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1947,7 +1809,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1951: checking for gethostbyname in -lnsl" >&5 +echo "configure:1813: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1955,7 +1817,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2002,7 +1864,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:2006: checking how to build libraries" >&5 +echo "configure:1868: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2041,7 +1903,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2045: checking for $ac_word" >&5 +echo "configure:1907: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2073,7 +1935,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2077: checking if 64bit support is requested" >&5 +echo "configure:1939: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -2093,7 +1955,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2097: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:1959: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2117,7 +1979,7 @@ fi # there are a few systems, like Next, where this doesn't work. echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:2121: checking system version (for dynamic loading)" >&5 +echo "configure:1983: checking system version (for dynamic loading)" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -2143,7 +2005,7 @@ echo "configure:2121: checking system version (for dynamic loading)" >&5 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2147: checking for dlopen in -ldl" >&5 +echo "configure:2009: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2151,7 +2013,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2210,7 +2072,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2214: checking for $ac_word" >&5 +echo "configure:2076: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2247,9 +2109,14 @@ fi AIX-*) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then # AIX requires the _r compiler when gcc isn't being used - if test "${CC}" != "cc_r" ; then - CC=${CC}_r - fi + case "${CC}" in + *_r) + # ok ... + ;; + *) + CC=${CC}_r + ;; + esac echo "$ac_t""Using $CC for compiling with threads" 1>&6 fi LIBS="$LIBS -lc" @@ -2320,7 +2187,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2324: checking for gettimeofday in -lbsd" >&5 +echo "configure:2191: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2328,7 +2195,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2382,7 +2249,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2386: checking for inet_ntoa in -lbind" >&5 +echo "configure:2253: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2390,7 +2257,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2467,7 +2334,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2471: checking for shl_load in -ldld" >&5 +echo "configure:2338: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2475,7 +2342,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2554,7 +2421,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2558: checking for shl_load in -ldld" >&5 +echo "configure:2425: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2562,7 +2429,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2697,17 +2564,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2701: checking for dld.h" >&5 +echo "configure:2568: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2578: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2771,17 +2638,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2775: checking for dld.h" >&5 +echo "configure:2642: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2652: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2837,17 +2704,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2841: checking for dlfcn.h" >&5 +echo "configure:2708: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2874,9 +2741,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2878: checking for ELF" >&5 +echo "configure:2745: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2954: checking for ELF" >&5 +echo "configure:2821: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:3015: checking if ld accepts -single_module flag" >&5 +echo "configure:2882: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3019,14 +2886,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3049,7 +2916,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 DL_LIBS="" LDFLAGS="$LDFLAGS -prebind -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3053: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:2920: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3057,14 +2924,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3087,7 +2954,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3091: checking whether to use CoreFoundation" >&5 +echo "configure:2958: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3099,7 +2966,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3103: checking for CoreFoundation.framework" >&5 +echo "configure:2970: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3107,14 +2974,14 @@ else hold_libs=$LIBS LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3140,17 +3007,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3144: checking for $ac_hdr" >&5 +echo "configure:3011: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3021: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3179,12 +3046,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3183: checking for $ac_func" >&5 +echo "configure:3050: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3250,12 +3117,12 @@ EOF # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3254: checking for realpath" >&5 +echo "configure:3121: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -3589,17 +3456,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3593: checking for ld accepts -Bexport flag" >&5 +echo "configure:3460: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3640,9 +3507,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3644: checking sys/exec.h" >&5 +echo "configure:3511: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3660,7 +3527,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3664: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3678,9 +3545,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3682: checking a.out.h" >&5 +echo "configure:3549: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3698,7 +3565,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3716,9 +3583,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3720: checking sys/exec_aout.h" >&5 +echo "configure:3587: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3736,7 +3603,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3887,7 +3754,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3891: checking for build with symbols" >&5 +echo "configure:3758: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3948,21 +3815,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3952: checking for required early compiler flags" >&5 +echo "configure:3819: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3970,7 +3837,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3978,7 +3845,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3849: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4004,14 +3871,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4019,7 +3886,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4027,7 +3894,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4031: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4056,7 +3923,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4060: checking for 64-bit integer type" >&5 +echo "configure:3927: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4064,14 +3931,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4085,7 +3952,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4119,13 +3986,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4123: checking for struct dirent64" >&5 +echo "configure:3990: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4133,7 +4000,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4154,13 +4021,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4158: checking for struct stat64" >&5 +echo "configure:4025: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4168,7 +4035,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4172: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4191,12 +4058,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4195: checking for $ac_func" >&5 +echo "configure:4062: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4244,13 +4111,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4248: checking for off64_t" >&5 +echo "configure:4115: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4258,7 +4125,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4289,14 +4156,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4293: checking whether byte ordering is bigendian" >&5 +echo "configure:4160: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4307,11 +4174,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4322,7 +4189,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4342,7 +4209,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4388,12 +4255,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4392: checking for $ac_func" >&5 +echo "configure:4259: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4450,12 +4317,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4454: checking for $ac_func" >&5 +echo "configure:4321: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4508,12 +4375,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4512: checking for $ac_func" >&5 +echo "configure:4379: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4563,12 +4430,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4567: checking for strerror" >&5 +echo "configure:4434: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4615,12 +4482,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4619: checking for getwd" >&5 +echo "configure:4486: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4667,12 +4534,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4671: checking for wait3" >&5 +echo "configure:4538: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4719,12 +4586,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4723: checking for uname" >&5 +echo "configure:4590: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4771,12 +4638,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4775: checking for realpath" >&5 +echo "configure:4642: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4834,12 +4701,12 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4838: checking dirent.h" >&5 +echo "configure:4705: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4865,7 +4732,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -4888,17 +4755,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4892: checking for errno.h" >&5 +echo "configure:4759: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4902: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4925,17 +4792,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4929: checking for float.h" >&5 +echo "configure:4796: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4806: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4962,17 +4829,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4966: checking for values.h" >&5 +echo "configure:4833: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4976: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4999,17 +4866,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:5003: checking for limits.h" >&5 +echo "configure:4870: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5013: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5039,17 +4906,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:5043: checking for stdlib.h" >&5 +echo "configure:4910: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5072,7 +4939,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -5086,7 +4953,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5100,7 +4967,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5121,17 +4988,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:5125: checking for string.h" >&5 +echo "configure:4992: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5154,7 +5021,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -5168,7 +5035,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5194,17 +5061,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:5198: checking for sys/wait.h" >&5 +echo "configure:5065: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5208: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5231,17 +5098,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:5235: checking for dlfcn.h" >&5 +echo "configure:5102: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5112: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5273,17 +5140,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5277: checking for $ac_hdr" >&5 +echo "configure:5144: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5323,17 +5190,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5327: checking for $ac_hdr" >&5 +echo "configure:5194: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5337: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5360,7 +5227,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5364: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5231: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5369,7 +5236,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5384,7 +5251,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5401,7 +5268,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5415,7 +5282,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5433,7 +5300,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5448,7 +5315,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5466,7 +5333,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5483,7 +5350,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5501,7 +5368,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5517,7 +5384,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5535,7 +5402,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5552,7 +5419,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5595,19 +5462,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5599: checking for fd_set in sys/types" >&5 +echo "configure:5466: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5623,12 +5490,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5627: checking for fd_mask in sys/select" >&5 +echo "configure:5494: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5665,12 +5532,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5669: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5536: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5678,7 +5545,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5549: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5703,17 +5570,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5707: checking for $ac_hdr" >&5 +echo "configure:5574: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5740,12 +5607,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5744: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5611: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5754,7 +5621,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5775,12 +5642,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5779: checking for tm_zone in struct tm" >&5 +echo "configure:5646: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5788,7 +5655,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5792: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5808,12 +5675,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5812: checking for tzname" >&5 +echo "configure:5679: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5823,7 +5690,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5848,12 +5715,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5852: checking for $ac_func" >&5 +echo "configure:5719: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5902,19 +5769,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5906: checking tm_tzadj in struct tm" >&5 +echo "configure:5773: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5935,19 +5802,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5939: checking tm_gmtoff in struct tm" >&5 +echo "configure:5806: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5951: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5972,12 +5839,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5976: checking long timezone variable" >&5 +echo "configure:5843: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5986,7 +5853,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6009,12 +5876,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6013: checking time_t timezone variable" >&5 +echo "configure:5880: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6023,7 +5890,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6027: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6050,12 +5917,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6054: checking for st_blksize in struct stat" >&5 +echo "configure:5921: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6063,7 +5930,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6084,12 +5951,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6088: checking for fstatfs" >&5 +echo "configure:5955: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6141,7 +6008,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6145: checking for 8-bit clean memcmp" >&5 +echo "configure:6012: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6149,7 +6016,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6183,12 +6050,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6187: checking for memmove" >&5 +echo "configure:6054: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6244,12 +6111,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6248: checking proper strstr implementation" >&5 +echo "configure:6115: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6286,12 +6153,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6290: checking for strtoul" >&5 +echo "configure:6157: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6338,7 +6205,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6377,12 +6244,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6381: checking for strtod" >&5 +echo "configure:6248: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6429,7 +6296,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6471,12 +6338,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6475: checking for strtod" >&5 +echo "configure:6342: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6521,7 +6388,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6525: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6392: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6530,7 +6397,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6586,12 +6453,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6590: checking for ANSI C header files" >&5 +echo "configure:6457: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6599,7 +6466,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6603: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6616,7 +6483,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6634,7 +6501,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6655,7 +6522,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6666,7 +6533,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6690,12 +6557,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6694: checking for mode_t" >&5 +echo "configure:6561: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6723,12 +6590,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6727: checking for pid_t" >&5 +echo "configure:6594: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6756,12 +6623,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6760: checking for size_t" >&5 +echo "configure:6627: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6789,12 +6656,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6793: checking for uid_t in sys/types.h" >&5 +echo "configure:6660: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6824,12 +6691,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6828: checking for socklen_t" >&5 +echo "configure:6695: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6868,12 +6735,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6872: checking for opendir" >&5 +echo "configure:6739: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6929,12 +6796,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6933: checking union wait" >&5 +echo "configure:6800: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6946,7 +6813,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6973,12 +6840,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6977: checking for strncasecmp" >&5 +echo "configure:6844: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7023,7 +6890,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7027: checking for strncasecmp in -lsocket" >&5 +echo "configure:6894: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7031,7 +6898,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7066,7 +6933,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7070: checking for strncasecmp in -linet" >&5 +echo "configure:6937: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7074,7 +6941,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7123,12 +6990,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7127: checking for BSDgettimeofday" >&5 +echo "configure:6994: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7173,12 +7040,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7177: checking for gettimeofday" >&5 +echo "configure:7044: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7228,12 +7095,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7232: checking for gettimeofday declaration" >&5 +echo "configure:7099: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7264,14 +7131,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7268: checking whether char is unsigned" >&5 +echo "configure:7135: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7327,12 +7194,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7331: checking signed char declarations" >&5 +echo "configure:7198: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7213: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7367,7 +7234,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7371: checking for a putenv() that copies the buffer" >&5 +echo "configure:7238: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7375,7 +7242,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7397,7 +7264,7 @@ else } EOF -if { (eval echo configure:7401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7439,17 +7306,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7443: checking for langinfo.h" >&5 +echo "configure:7310: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7453: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7474,17 +7341,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7478: checking whether to use nl_langinfo" >&5 +echo "configure:7345: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7519,17 +7386,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7523: checking for $ac_hdr" >&5 +echo "configure:7390: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7559,17 +7426,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7563: checking for $ac_hdr" >&5 +echo "configure:7430: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7573: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7596,7 +7463,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7600: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7467: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7676,7 +7543,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7680: checking how to package libraries" >&5 +echo "configure:7547: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 4749011..1d59355 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -484,43 +484,6 @@ AC_DEFUN(SC_ENABLE_THREADS, [ AC_CHECK_FUNCS(pthread_attr_setstacksize) AC_CHECK_FUNCS(pthread_atfork) LIBS=$ac_saved_libs - AC_CHECK_FUNCS(readdir_r) - if test "x$ac_cv_func_readdir_r" = "xyes"; then - AC_MSG_CHECKING([how many args readdir_r takes]) - # IRIX 5.3 has a 2 arg version of readdir_r - # while other systems have a 3 arg version. - AC_CACHE_VAL(tcl_cv_two_arg_readdir_r, - AC_TRY_COMPILE([#include -#include -#ifdef NO_DIRENT_H -# include /* logic from tcl/compat/dirent.h * -# define dirent direct * */ -#else -# include -#endif -], [readdir_r(NULL, NULL);], - tcl_cv_two_arg_readdir_r=yes, tcl_cv_two_arg_readdir_r=no)) - AC_CACHE_VAL(tcl_cv_three_arg_readdir_r, - AC_TRY_COMPILE([#include -#include -#ifdef NO_DIRENT_H -# include /* logic from tcl/compat/dirent.h * -# define dirent direct * */ -#else -# include -#endif -], [readdir_r(NULL, NULL, NULL);], - tcl_cv_three_arg_readdir_r=yes, tcl_cv_three_arg_readdir_r=no)) - if test "x$tcl_cv_two_arg_readdir_r" = "xyes" ; then - AC_MSG_RESULT([2]) - AC_DEFINE(HAVE_TWO_ARG_READDIR_R) - elif test "x$tcl_cv_three_arg_readdir_r" = "xyes" ; then - AC_MSG_RESULT([3]) - AC_DEFINE(HAVE_THREE_ARG_READDIR_R) - else - AC_MSG_ERROR([unknown number of args for readdir_r]) - fi - fi else TCL_THREADS=0 AC_MSG_RESULT([no (default)]) @@ -896,9 +859,14 @@ dnl AC_CHECK_TOOL(AR, ar) AIX-*) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then # AIX requires the _r compiler when gcc isn't being used - if test "${CC}" != "cc_r" ; then - CC=${CC}_r - fi + case "${CC}" in + *_r) + # ok ... + ;; + *) + CC=${CC}_r + ;; + esac AC_MSG_RESULT([Using $CC for compiling with threads]) fi LIBS="$LIBS -lc" diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 7f20eda..10e1659 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.5 2005/05/14 20:52:33 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.6 2005/07/08 01:06:13 hobbs Exp $ */ #ifndef _TCLUNIXPORT @@ -60,11 +60,9 @@ #ifdef HAVE_STRUCT_DIRENT64 typedef struct dirent64 Tcl_DirEntry; # define TclOSreaddir readdir64 -# define TclOSreaddir_r readdir64_r #else typedef struct dirent Tcl_DirEntry; # define TclOSreaddir readdir -# define TclOSreaddir_r readdir_r #endif #ifdef HAVE_TYPE_OFF64_T @@ -571,10 +569,7 @@ EXTERN struct tm * TclpLocaltime(CONST TclpTime_t); EXTERN struct tm * TclpGmtime(CONST TclpTime_t); #endif EXTERN char * TclpInetNtoa(struct in_addr); -#define readdir(x) TclpReaddir(x) #define inet_ntoa(x) TclpInetNtoa(x) -#undef TclOSreaddir -#define TclOSreaddir(x) TclpReaddir(x) #else typedef int TclpMutex; #define TclpMutexInit(a) diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index bdac40d..30b1fc6 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -21,10 +21,6 @@ typedef struct ThreadSpecificData { char nabuf[16]; - struct { - Tcl_DirEntry ent; - char name[MAXNAMLEN+1]; - } rdbuf; } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; @@ -819,56 +815,18 @@ TclpFinalizeCondition(condPtr) * Side effects: * See documentation of C functions. * + * Notes: + * TclpReaddir is no longer used by the core (see 1095909), + * but it appears in the internal stubs table (see #589526). *---------------------------------------------------------------------- */ -#if defined(TCL_THREADS) && !defined(HAVE_READDIR_R) -TCL_DECLARE_MUTEX( rdMutex ) -#undef readdir -#endif - Tcl_DirEntry * TclpReaddir(DIR * dir) { - Tcl_DirEntry *ent; -#ifdef TCL_THREADS - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - -#ifdef HAVE_READDIR_R - ent = &tsdPtr->rdbuf.ent; -# ifdef HAVE_TWO_ARG_READDIR_R - if (TclOSreaddir_r(dir, ent) != 0) { -# else /* HAVE_THREE_ARG_READDIR_R */ - if (TclOSreaddir_r(dir, ent, &ent) != 0) { -# endif /* HAVE_TWO_ARG_READDIR_R */ - ent = NULL; - } - -#else /* !HAVE_READDIR_R */ - - Tcl_MutexLock(&rdMutex); -# ifdef HAVE_STRUCT_DIRENT64 - ent = readdir64(dir); -# else /* !HAVE_STRUCT_DIRENT64 */ - ent = readdir(dir); -# endif /* HAVE_STRUCT_DIRENT64 */ - if (ent != NULL) { - memcpy((VOID *) &tsdPtr->rdbuf.ent, (VOID *) ent, - sizeof(tsdPtr->rdbuf)); - ent = &tsdPtr->rdbuf.ent; - } - Tcl_MutexUnlock(&rdMutex); - -#endif /* HAVE_READDIR_R */ -#else -# ifdef HAVE_STRUCT_DIRENT64 - ent = readdir64(dir); -# else /* !HAVE_STRUCT_DIRENT64 */ - ent = readdir(dir); -# endif /* HAVE_STRUCT_DIRENT64 */ -#endif - return ent; + return TclOSreaddir(dir); } + char * TclpInetNtoa(struct in_addr addr) { -- cgit v0.12 From 14816591e601d46ce04cda2a9046995076aa51f5 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 22 Jul 2005 21:59:36 +0000 Subject: * library/auto.tcl: Updates to the Tcl script library to make * library/history.tcl: use of Tcl 8.4 feautures. Thanks to * library/init.tcl: Patrick Fradin for prompting on this. * library/package.tcl: [Patch 1237755]. * library/safe.tcl: * library/word.tcl: --- ChangeLog | 9 +++++ library/auto.tcl | 42 +++++++++------------ library/history.tcl | 17 ++++----- library/init.tcl | 105 ++++++++++++++++++++++++++-------------------------- library/package.tcl | 37 +++++++++--------- library/safe.tcl | 28 +++++++------- library/word.tcl | 8 ++-- 7 files changed, 124 insertions(+), 122 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1de88f6..8907845 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-07-22 Don Porter + + * library/auto.tcl: Updates to the Tcl script library to make + * library/history.tcl: use of Tcl 8.4 feautures. Thanks to + * library/init.tcl: Patrick Fradin for prompting on this. + * library/package.tcl: [Patch 1237755]. + * library/safe.tcl: + * library/word.tcl: + 2005-07-07 Jeff Hobbs * unix/tcl.m4, unix/configure: Backported [Bug 1095909], removing diff --git a/library/auto.tcl b/library/auto.tcl index b02b77f..90f8b14 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.8 2005/06/27 18:20:26 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.9 2005/07/22 21:59:39 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -33,9 +33,7 @@ proc auto_reset {} { rename $p {} } } - catch {unset auto_execs} - catch {unset auto_index} - catch {unset auto_oldpath} + unset -nocomplain auto_execs auto_index auto_oldpath } # tcl_findLibrary -- @@ -61,8 +59,7 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { # The C application may have hardwired a path, which we honor - set variableSet [info exists the_library] - if {$variableSet && $the_library ne ""} { + if {[info exists the_library] && $the_library ne ""} { lappend dirs $the_library } else { @@ -164,9 +161,7 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { } } } - if {!$variableSet} { - unset the_library - } + unset -nocomplain the_library set msg "Can't find a usable $initScript in the following directories: \n" append msg " $dirs\n\n" append msg "$errors\n\n" @@ -219,12 +214,12 @@ proc auto_mkindex {dir args} { append index "# sets an element in the auto_index array, where the\n" append index "# element name is the name of a command and the value is\n" append index "# a script that loads the command.\n\n" - if {$args == ""} { + if {[llength $args] == 0} { set args *.tcl } auto_mkindex_parser::init - foreach file [eval glob $args] { + foreach file [eval [linsert $args 0 glob --]] { if {[catch {auto_mkindex_parser::mkindex $file} msg] == 0} { append index $msg } else { @@ -257,10 +252,10 @@ proc auto_mkindex_old {dir args} { append index "# sets an element in the auto_index array, where the\n" append index "# element name is the name of a command and the value is\n" append index "# a script that loads the command.\n\n" - if {[string equal $args ""]} { + if {[llength $args] == 0} { set args *.tcl } - foreach file [eval glob $args] { + foreach file [eval [linsert $args 0 glob --]] { set f "" set error [catch { set f [open $file] @@ -378,7 +373,7 @@ proc auto_mkindex_parser::mkindex {file} { # in case there were any $ in the proc name. This will cause a problem # if somebody actually tries to have a \0 in their proc name. Too bad # for them. - regsub -all {\$} $contents "\0" contents + set contents [string map "$ \u0000" $contents] set index "" set contextStack "" @@ -456,12 +451,10 @@ proc auto_mkindex_parser::commandInit {name arglist body} { set ns [namespace qualifiers $name] set tail [namespace tail $name] - if {[string equal $ns ""]} { - set fakeName "[namespace current]::_%@fake_$tail" + if {$ns eq ""} { + set fakeName [namespace current]::_%@fake_$tail } else { - set fakeName "_%@fake_$name" - regsub -all {::} $fakeName "_" fakeName - set fakeName "[namespace current]::$fakeName" + set fakeName [namespace current]::[string map {:: _} _%@fake_$name] } proc $fakeName $arglist $body @@ -470,7 +463,7 @@ proc auto_mkindex_parser::commandInit {name arglist body} { # we have to build procs with the fully qualified names, and # have the procs point to the aliases. - if {[regexp {::} $name]} { + if {[string match *::* $name]} { set exportCmd [list _%@namespace export [namespace tail $name]] $parser eval [list _%@namespace eval $ns $exportCmd] @@ -520,7 +513,7 @@ proc auto_mkindex_parser::fullname {name} { } } - if {[string equal [namespace qualifiers $name] ""]} { + if {[namespace qualifiers $name] eq ""} { set name [namespace tail $name] } elseif {![string match ::* $name]} { set name "::$name" @@ -528,8 +521,7 @@ proc auto_mkindex_parser::fullname {name} { # Earlier, mkindex replaced all $'s with \0. Now, we have to reverse # that replacement. - regsub -all "\0" $name "\$" name - return $name + return [string map "\u0000 $" $name] } # Register all of the procedures for the auto_mkindex parser that @@ -561,7 +553,7 @@ auto_mkindex_parser::command proc {name args} { auto_mkindex_parser::hook { if {![catch {package require tbcload}]} { - if {[llength [info commands tbcload::bcproc]] == 0} { + if {[namespace which -command tbcload::bcproc] ne ""} { auto_load tbcload::bcproc } load {} tbcload $auto_mkindex_parser::parser @@ -612,7 +604,7 @@ auto_mkindex_parser::command namespace {op args} { variable parser variable imports foreach pattern $args { - if {[string compare $pattern "-force"]} { + if {$pattern ne "-force"} { lappend imports $pattern } } diff --git a/library/history.tcl b/library/history.tcl index d75c354..b8e27ce 100644 --- a/library/history.tcl +++ b/library/history.tcl @@ -2,7 +2,7 @@ # # Implementation of the history command. # -# RCS: @(#) $Id: history.tcl,v 1.5 2001/05/17 08:18:56 hobbs Exp $ +# RCS: @(#) $Id: history.tcl,v 1.5.14.1 2005/07/22 21:59:40 dgp Exp $ # # Copyright (c) 1997 Sun Microsystems, Inc. # @@ -168,14 +168,14 @@ proc history {args} { variable history # Do not add empty commands to the history - if {[string trim $command] == ""} { + if {[string trim $command] eq ""} { return "" } set i [incr history(nextid)] set history($i) $command set j [incr history(oldest)] - if {[info exists history($j)]} {unset history($j)} + unset -nocomplain history($j) if {[string match e* $exec]} { return [uplevel #0 $command] } else { @@ -198,13 +198,13 @@ proc history {args} { proc tcl::HistKeep {{limit {}}} { variable history - if {[string length $limit] == 0} { + if {$limit eq ""} { return $history(keep) } else { set oldold $history(oldest) set history(oldest) [expr {$history(nextid) - $limit}] for {} {$oldold <= $history(oldest)} {incr oldold} { - if {[info exists history($oldold)]} {unset history($oldold)} + unset -nocomplain history($oldold) } set history(keep) $limit } @@ -246,7 +246,7 @@ proc history {args} { proc tcl::HistInfo {{num {}}} { variable history - if {$num == {}} { + if {$num eq ""} { set num [expr {$history(keep) + 1}] } set result {} @@ -256,8 +256,7 @@ proc history {args} { if {![info exists history($i)]} { continue } - set cmd [string trimright $history($i) \ \n] - regsub -all \n $cmd "\n\t" cmd + set cmd [string map [list \n \n\t] [string trimright $history($i) \ \n]] append result $newline[format "%6d %s" $i $cmd] set newline \n } @@ -281,7 +280,7 @@ proc history {args} { proc tcl::HistRedo {{event -1}} { variable history - if {[string length $event] == 0} { + if {$event eq ""} { set event -1 } set i [HistIndex $event] diff --git a/library/init.tcl b/library/init.tcl index ea1cd85..8105642 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.55.2.5 2005/04/28 05:34:40 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.55.2.6 2005/07/22 21:59:40 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -48,7 +48,7 @@ if {![info exists auto_path]} { } namespace eval tcl { variable Dir - if {[info library] != ""} { + if {[info library] ne ""} { foreach Dir [list [info library] [file dirname [info library]]] { if {[lsearch -exact $::auto_path $Dir] < 0} { lappend ::auto_path $Dir @@ -71,7 +71,7 @@ namespace eval tcl { # Windows specific end of initialization -if {(![interp issafe]) && [string equal $tcl_platform(platform) "windows"]} { +if {(![interp issafe]) && $tcl_platform(platform) eq "windows"} { namespace eval tcl { proc EnvTraceProc {lo n1 n2 op} { set x $::env($n2) @@ -82,23 +82,23 @@ if {(![interp issafe]) && [string equal $tcl_platform(platform) "windows"]} { global env tcl_platform foreach p [array names env] { set u [string toupper $p] - if {![string equal $u $p]} { + if {$u ne $p} { switch -- $u { COMSPEC - PATH { if {![info exists env($u)]} { set env($u) $env($p) } - trace variable env($p) w \ + trace add variable env($p) write \ [namespace code [list EnvTraceProc $p]] - trace variable env($u) w \ + trace add variable env($u) write \ [namespace code [list EnvTraceProc $p]] } } } } if {![info exists env(COMSPEC)]} { - if {[string equal $tcl_platform(os) "Windows NT"]} { + if {$tcl_platform(os) eq "Windows NT"} { set env(COMSPEC) cmd.exe } else { set env(COMSPEC) command.com @@ -115,18 +115,18 @@ package unknown tclPkgUnknown if {![interp issafe]} { # setup platform specific unknown package handlers - if {[string equal $::tcl_platform(platform) "unix"] && \ - [string equal $::tcl_platform(os) "Darwin"]} { + if {$::tcl_platform(platform) eq "unix" + && $::tcl_platform(os) eq "Darwin"} { package unknown [list tcl::MacOSXPkgUnknown [package unknown]] } - if {[string equal $::tcl_platform(platform) "macintosh"]} { + if {$::tcl_platform(platform) eq "macintosh"} { package unknown [list tcl::MacPkgUnknown [package unknown]] } } # Conditionalize for presence of exec. -if {[llength [info commands exec]] == 0} { +if {[namespace which -command exec] eq ""} { # Some machines, such as the Macintosh, do not have exec. Also, on all # platforms, safe interpreters do not have exec. @@ -139,7 +139,7 @@ set errorInfo "" # Define a log command (which can be overwitten to log errors # differently, specially when stderr is not available) -if {[llength [info commands tclLog]] == 0} { +if {[namespace which -command tclLog] eq ""} { proc tclLog {string} { catch {puts stderr $string} } @@ -199,7 +199,7 @@ proc unknown args { } set savedErrorCode $errorCode set savedErrorInfo $errorInfo - set name [lindex $args 0] + set name $cmd if {![info exists auto_noload]} { # # Make sure we're not trying to load the same proc twice. @@ -273,15 +273,15 @@ proc unknown args { } } - if {([info level] == 1) && [string equal [info script] ""] \ + if {([info level] == 1) && [info script] eq "" \ && [info exists tcl_interactive] && $tcl_interactive} { if {![info exists auto_noexec]} { set new [auto_execok $name] - if {$new != ""} { + if {$new ne ""} { set errorCode $savedErrorCode set errorInfo $savedErrorInfo set redir "" - if {[string equal [info commands console] ""]} { + if {[namespace which -command console] eq ""} { set redir ">&@stdout <@stdin" } return [uplevel 1 exec $redir $new [lrange $args 1 end]] @@ -289,11 +289,11 @@ proc unknown args { } set errorCode $savedErrorCode set errorInfo $savedErrorInfo - if {[string equal $name "!!"]} { + if {$name eq "!!"} { set newcmd [history event] - } elseif {[regexp {^!(.+)$} $name dummy event]} { + } elseif {[regexp {^!(.+)$} $name -> event]} { set newcmd [history event $event] - } elseif {[regexp {^\^([^^]*)\^([^^]*)\^?$} $name dummy old new]} { + } elseif {[regexp {^\^([^^]*)\^([^^]*)\^?$} $name -> old new]} { set newcmd [history event -1] catch {regsub -all -- $old $newcmd $new newcmd} } @@ -304,7 +304,7 @@ proc unknown args { } set ret [catch {set candidates [info commands $name*]} msg] - if {[string equal $name "::"]} { + if {$name eq "::"} { set name "" } if {$ret != 0} { @@ -312,11 +312,18 @@ proc unknown args { "error in unknown while checking if \"$name\" is\ a unique command abbreviation:\n$msg" } + # Handle empty $name separately due to strangeness in [string first] + if {$name eq ""} { + if {[llength $candidates] != 1} { + return -code error "empty command name \"\"" + } + return [uplevel 1 [lreplace $args 0 0 [lindex $candidates 0]]] + } # Filter out bogus matches when $name contained # a glob-special char [Bug 946952] set cmds [list] foreach x $candidates { - if {[string range $x 0 [expr [string length $name]-1]] eq $name} { + if {[string first $name $x] == 0} { lappend cmds $x } } @@ -324,12 +331,7 @@ proc unknown args { return [uplevel 1 [lreplace $args 0 0 [lindex $cmds 0]]] } if {[llength $cmds]} { - if {[string equal $name ""]} { - return -code error "empty command name \"\"" - } else { - return -code error \ - "ambiguous command name \"$name\": [lsort $cmds]" - } + return -code error "ambiguous command name \"$name\": [lsort $cmds]" } } return -code error "invalid command name \"$name\"" @@ -350,7 +352,7 @@ proc unknown args { proc auto_load {cmd {namespace {}}} { global auto_index auto_oldpath auto_path - if {[string length $namespace] == 0} { + if {$namespace eq ""} { set namespace [uplevel 1 [list ::namespace current]] } set nameList [auto_qualify $cmd $namespace] @@ -402,8 +404,7 @@ proc auto_load {cmd {namespace {}}} { proc auto_load_index {} { global auto_index auto_oldpath auto_path errorInfo errorCode - if {[info exists auto_oldpath] && \ - [string equal $auto_oldpath $auto_path]} { + if {[info exists auto_oldpath] && $auto_oldpath eq $auto_path} { return 0 } set auto_oldpath $auto_path @@ -422,12 +423,11 @@ proc auto_load_index {} { } else { set error [catch { set id [gets $f] - if {[string equal $id \ - "# Tcl autoload index file, version 2.0"]} { + if {$id eq "# Tcl autoload index file, version 2.0"} { eval [read $f] - } elseif {[string equal $id "# Tcl autoload index file: each line identifies a Tcl"]} { + } elseif {$id eq "# Tcl autoload index file: each line identifies a Tcl"} { while {[gets $f line] >= 0} { - if {[string equal [string index $line 0] "#"] \ + if {[string index $line 0] eq "#" || ([llength $line] != 2)} { continue } @@ -439,7 +439,7 @@ proc auto_load_index {} { error "[file join $dir tclIndex] isn't a proper Tcl index file" } } msg] - if {$f != ""} { + if {$f ne ""} { close $f } if {$error} { @@ -478,13 +478,13 @@ proc auto_qualify {cmd namespace} { # with the following form : # ( inputCmd, inputNameSpace) -> output - if {[regexp {^::(.*)$} $cmd x tail]} { + if {[string match ::* $cmd]} { if {$n > 1} { # ( ::foo::bar , * ) -> ::foo::bar return [list $cmd] } else { # ( ::global , * ) -> global - return [list $tail] + return [list [string range $cmd 2 end]] } } @@ -492,14 +492,14 @@ proc auto_qualify {cmd namespace} { # (if the current namespace is not the global one) if {$n == 0} { - if {[string equal $namespace ::]} { + if {$namespace eq "::"} { # ( nocolons , :: ) -> nocolons return [list $cmd] } else { # ( nocolons , ::sub ) -> ::sub::nocolons nocolons return [list ${namespace}::$cmd $cmd] } - } elseif {[string equal $namespace ::]} { + } elseif {$namespace eq "::"} { # ( foo::bar , :: ) -> ::foo::bar return [list ::$cmd] } else { @@ -554,7 +554,7 @@ proc auto_import {pattern} { # Arguments: # name - Name of a command. -if {[string equal windows $tcl_platform(platform)]} { +if {$tcl_platform(platform) eq "windows"} { # Windows version. # # Note that info executable doesn't work under Windows, so we have to @@ -572,7 +572,7 @@ proc auto_execok name { set shellBuiltins [list cls copy date del erase dir echo mkdir \ md rename ren rmdir rd time type ver vol] - if {[string equal $tcl_platform(os) "Windows NT"]} { + if {$tcl_platform(os) eq "Windows NT"} { # NT includes the 'start' built-in lappend shellBuiltins "start" } @@ -609,7 +609,7 @@ proc auto_execok name { set windir $env(WINDIR) } if {[info exists windir]} { - if {[string equal $tcl_platform(os) "Windows NT"]} { + if {$tcl_platform(os) eq "Windows NT"} { append path "$windir/system32;" } append path "$windir/system;$windir;" @@ -623,7 +623,7 @@ proc auto_execok name { foreach dir [split $path {;}] { # Skip already checked directories - if {[info exists checked($dir)] || [string equal {} $dir]} { continue } + if {[info exists checked($dir)] || $dir eq {}} { continue } set checked($dir) {} foreach ext $execExtensions { set file [file join $dir ${name}${ext}] @@ -652,7 +652,7 @@ proc auto_execok name { return $auto_execs($name) } foreach dir [split $env(PATH) :] { - if {[string equal $dir ""]} { + if {$dir eq ""} { set dir . } set file [file join $dir $name] @@ -683,7 +683,7 @@ proc auto_execok name { proc tcl::CopyDirectory {action src dest} { set nsrc [file normalize $src] set ndest [file normalize $dest] - if {[string equal $action "renaming"]} { + if {$action eq "renaming"} { # Can't rename volumes. We could give a more precise # error message here, but that would break the test suite. if {[lsearch -exact [file volumes] $nsrc] != -1} { @@ -693,12 +693,12 @@ proc tcl::CopyDirectory {action src dest} { } } if {[file exists $dest]} { - if {$nsrc == $ndest} { + if {$nsrc eq $ndest} { return -code error "error $action \"$src\" to\ \"$dest\": trying to rename a volume or move a directory\ into itself" } - if {[string equal $action "copying"]} { + if {$action eq "copying"} { return -code error "error $action \"$src\" to\ \"$dest\": file already exists" } else { @@ -707,10 +707,11 @@ proc tcl::CopyDirectory {action src dest} { # can be returned in various combinations. Anyway, # if any other file is returned, we must signal an error. set existing [glob -nocomplain -directory $dest * .*] - eval [list lappend existing] \ - [glob -nocomplain -directory $dest -type hidden * .*] + eval [linsert \ + [glob -nocomplain -directory $dest -type hidden * .*] 0 \ + lappend existing] foreach s $existing { - if {([file tail $s] != ".") && ([file tail $s] != "..")} { + if {([file tail $s] ne ".") && ([file tail $s] ne "..")} { return -code error "error $action \"$src\" to\ \"$dest\": file already exists" } @@ -720,7 +721,7 @@ proc tcl::CopyDirectory {action src dest} { if {[string first $nsrc $ndest] != -1} { set srclen [expr {[llength [file split $nsrc]] -1}] set ndest [lindex [file split $ndest] $srclen] - if {$ndest == [file tail $nsrc]} { + if {$ndest eq [file tail $nsrc]} { return -code error "error $action \"$src\" to\ \"$dest\": trying to rename a volume or move a directory\ into itself" @@ -738,7 +739,7 @@ proc tcl::CopyDirectory {action src dest} { [glob -nocomplain -directory $src -types hidden *]] foreach s [lsort -unique $filelist] { - if {([file tail $s] != ".") && ([file tail $s] != "..")} { + if {([file tail $s] ne ".") && ([file tail $s] ne "..")} { file copy $s [file join $dest [file tail $s]] } } diff --git a/library/package.tcl b/library/package.tcl index fa6f445..fa6b01c 100644 --- a/library/package.tcl +++ b/library/package.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl which can be loaded on demand # for package management. # -# RCS: @(#) $Id: package.tcl,v 1.23.2.2 2003/07/24 08:23:17 rmax Exp $ +# RCS: @(#) $Id: package.tcl,v 1.23.2.3 2005/07/22 21:59:41 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -33,8 +33,8 @@ namespace eval ::pkg { proc pkg_compareExtension { fileName {ext {}} } { global tcl_platform - if {![string length $ext]} {set ext [info sharedlibextension]} - if {[string equal $tcl_platform(platform) "windows"]} { + if {$ext eq ""} {set ext [info sharedlibextension]} + if {$tcl_platform(platform) eq "windows"} { return [string equal -nocase [file extension $fileName] $ext] } else { # Some unices add trailing numbers after the .so, so @@ -42,7 +42,7 @@ proc pkg_compareExtension { fileName {ext {}} } { set root $fileName while {1} { set currExt [file extension $root] - if {[string equal $currExt $ext]} { + if {$currExt eq $ext} { return 1 } @@ -140,7 +140,7 @@ proc pkg_mkIndex {args} { set oldDir [pwd] cd $dir - if {[catch {eval glob $patternList} fileList]} { + if {[catch {eval [linsert $patternList 0 glob --]} fileList]} { global errorCode errorInfo cd $oldDir return -code error -errorcode $errorCode -errorinfo $errorInfo $fileList @@ -151,7 +151,7 @@ proc pkg_mkIndex {args} { # interpreter, and get a list of the new commands and packages # that are defined. - if {[string equal $file "pkgIndex.tcl"]} { + if {$file eq "pkgIndex.tcl"} { continue } @@ -165,7 +165,7 @@ proc pkg_mkIndex {args} { # Load into the child any packages currently loaded in the parent # interpreter that match the -load pattern. - if {[string length $loadPat]} { + if {$loadPat ne ""} { if {$doVerbose} { tclLog "currently loaded packages: '[info loaded]'" tclLog "trying to load all packages matching $loadPat" @@ -191,7 +191,7 @@ proc pkg_mkIndex {args} { } elseif {$doVerbose} { tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]" } - if {[string equal [lindex $pkg 1] "Tk"]} { + if {[lindex $pkg 1] eq "Tk"} { # Withdraw . if Tk was loaded, to avoid showing a window. $c eval [list wm withdraw .] } @@ -206,7 +206,7 @@ proc pkg_mkIndex {args} { proc package {what args} { switch -- $what { require { return ; # ignore transitive requires } - default { eval __package_orig {$what} $args } + default { uplevel 1 [linsert $args 0 __package_orig $what] } } } proc tclPkgUnknown args {} @@ -261,7 +261,8 @@ proc pkg_mkIndex {args} { proc ::tcl::GetAllNamespaces {{root ::}} { set list $root foreach ns [namespace children $root] { - eval lappend list [::tcl::GetAllNamespaces $ns] + eval [linsert [::tcl::GetAllNamespaces $ns] 0 \ + lappend list] } return $list } @@ -272,7 +273,7 @@ proc pkg_mkIndex {args} { set ::tcl::namespaces($::tcl::x) 1 } foreach ::tcl::x [package names] { - if {[string compare [package provide $::tcl::x] ""]} { + if {[package provide $::tcl::x] ne ""} { set ::tcl::packages($::tcl::x) 1 } } @@ -320,7 +321,7 @@ proc pkg_mkIndex {args} { set ::tcl::newCmds($::tcl::x) 1 } foreach ::tcl::x $::tcl::origCmds { - catch {unset ::tcl::newCmds($::tcl::x)} + unset -nocomplain ::tcl::newCmds($::tcl::x) } foreach ::tcl::x [array names ::tcl::newCmds] { # determine which namespace a command comes from @@ -333,7 +334,7 @@ proc pkg_mkIndex {args} { set ::tcl::abs \ [lindex [auto_qualify $::tcl::abs ::] 0] - if {[string compare $::tcl::x $::tcl::abs]} { + if {$::tcl::x ne $::tcl::abs} { # Name changed during qualification set ::tcl::newCmds($::tcl::abs) 1 @@ -347,7 +348,7 @@ proc pkg_mkIndex {args} { # a version provided, then record it foreach ::tcl::x [package names] { - if {[string compare [package provide $::tcl::x] ""] \ + if {[package provide $::tcl::x] ne "" && ![info exists ::tcl::packages($::tcl::x)]} { lappend ::tcl::newPkgs \ [list $::tcl::x [package provide $::tcl::x]] @@ -447,7 +448,7 @@ proc tclPkgSetup {dir pkg version files} { set f [lindex $fileInfo 0] set type [lindex $fileInfo 1] foreach cmd [lindex $fileInfo 2] { - if {[string equal $type "load"]} { + if {$type eq "load"} { set auto_index($cmd) [list load [file join $dir $f] $pkg] } else { set auto_index($cmd) [list source [file join $dir $f]] @@ -595,7 +596,7 @@ proc tcl::MacOSXPkgUnknown {original name version {exact {}}} { } } set use_path [lrange $use_path 0 end-1] - if {[string compare $old_path $auto_path]} { + if {$old_path ne $auto_path} { foreach dir $auto_path { lappend use_path $dir } @@ -640,7 +641,7 @@ proc tcl::MacPkgUnknown {original name version {exact {}}} { if {[file isfile $x]} { set res [resource open $x] foreach y [resource list TEXT $res] { - if {[string equal $y "pkgIndex"]} {source -rsrc pkgIndex} + if {$y eq "pkgIndex"} {source -rsrc pkgIndex} } catch {resource close $res} } @@ -649,7 +650,7 @@ proc tcl::MacPkgUnknown {original name version {exact {}}} { } } set use_path [lrange $use_path 0 end-1] - if {[string compare $old_path $auto_path]} { + if {$old_path ne $auto_path} { foreach dir $auto_path { lappend use_path $dir } diff --git a/library/safe.tcl b/library/safe.tcl index f34fea2..9c8aff5 100644 --- a/library/safe.tcl +++ b/library/safe.tcl @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: safe.tcl,v 1.9.2.2 2004/06/29 09:39:01 dkf Exp $ +# RCS: @(#) $Id: safe.tcl,v 1.9.2.3 2005/07/22 21:59:41 dgp Exp $ # # The implementation is based on namespaces. These naming conventions @@ -77,7 +77,7 @@ namespace eval ::safe { upvar $v $v } set flag [::tcl::OptProcArgGiven -noStatics]; - if {$flag && ($noStatics == $statics) + if {$flag && (!$noStatics == !$statics) && ([::tcl::OptProcArgGiven -statics])} { return -code error\ "conflicting values given for -statics and -noStatics" @@ -98,7 +98,7 @@ namespace eval ::safe { set flag [::tcl::OptProcArgGiven -nestedLoadOk]; # note that the test here is the opposite of the "InterpStatics" # one (it is not -noNested... because of the wanted default value) - if {$flag && ($nestedLoadOk != $nested) + if {$flag && (!$nestedLoadOk != !$nested) && ([::tcl::OptProcArgGiven -nested])} { return -code error\ "conflicting values given for -nested and -nestedLoadOk" @@ -324,7 +324,7 @@ namespace eval ::safe { nestedok deletehook} { # determine and store the access path if empty - if {[string equal "" $access_path]} { + if {$access_path eq ""} { set access_path [uplevel \#0 set auto_path] # Make sure that tcl_library is in auto_path # and at the first position (needed by setAccessPath) @@ -640,15 +640,15 @@ proc ::safe::setLogCmd {args} { } # set/get values proc Set {args} { - eval [list Toplevel set] $args + eval [linsert $args 0 Toplevel set] } # lappend on toplevel vars proc Lappend {args} { - eval [list Toplevel lappend] $args + eval [linsert $args 0 Toplevel lappend] } # unset a var/token (currently just an global level eval) proc Unset {args} { - eval [list Toplevel unset] $args + eval [linsert $args 0 Toplevel unset] } # test existance proc Exists {varname} { @@ -778,7 +778,7 @@ proc ::safe::setLogCmd {args} { # Determine where to load. load use a relative interp path # and {} means self, so we can directly and safely use passed arg. set target [lindex $args 1] - if {[string length $target]} { + if {$target ne ""} { # we will try to load into a sub sub interp # check that we want to authorize that. if {![NestedOk $slave]} { @@ -790,9 +790,9 @@ proc ::safe::setLogCmd {args} { } # Determine what kind of load is requested - if {[string length $file] == 0} { + if {$file eq ""} { # static package loading - if {[string length $package] == 0} { + if {$package eq ""} { set msg "load error: empty filename and no package name" Log $slave $msg return -code error $msg @@ -860,7 +860,7 @@ proc ::safe::setLogCmd {args} { proc Subset {slave command okpat args} { set subcommand [lindex $args 0] if {[regexp $okpat $subcommand]} { - return [eval [list $command $subcommand] [lrange $args 1 end]] + return [eval [linsert $args 0 $command]] } set msg "not allowed to invoke subcommand $subcommand of $command" Log $slave $msg @@ -895,11 +895,11 @@ proc ::safe::setLogCmd {args} { set subcommand [lindex $args 0] if {[regexp $okpat $subcommand]} { - return [eval ::interp invokehidden $slave encoding $subcommand \ - [lrange $args 1 end]] + return [eval [linsert $args 0 \ + ::interp invokehidden $slave encoding]] } - if {[string match $subcommand system]} { + if {[string first $subcommand system] == 0} { if {$argc == 1} { # passed all the tests , lets source it: if {[catch {::interp invokehidden \ diff --git a/library/word.tcl b/library/word.tcl index edcb93a..c18c961 100644 --- a/library/word.tcl +++ b/library/word.tcl @@ -10,12 +10,12 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: word.tcl,v 1.7 2002/11/01 00:28:51 andreas_kupries Exp $ +# RCS: @(#) $Id: word.tcl,v 1.7.2.1 2005/07/22 21:59:41 dgp Exp $ # The following variables are used to determine which characters are # interpreted as white space. -if {[string equal $::tcl_platform(platform) "windows"]} { +if {$::tcl_platform(platform) eq "windows"} { # Windows style - any but a unicode space char set tcl_wordchars "\\S" set tcl_nonwordchars "\\s" @@ -58,7 +58,7 @@ proc tcl_wordBreakAfter {str start} { proc tcl_wordBreakBefore {str start} { global tcl_nonwordchars tcl_wordchars - if {[string equal $start end]} { + if {$start eq "end"} { set start [string length $str] } if {[regexp -indices "^.*($tcl_wordchars$tcl_nonwordchars|$tcl_nonwordchars$tcl_wordchars)" [string range $str 0 $start] result]} { @@ -120,7 +120,7 @@ proc tcl_startOfNextWord {str start} { proc tcl_startOfPreviousWord {str start} { global tcl_nonwordchars tcl_wordchars - if {[string equal $start end]} { + if {$start eq "end"} { set start [string length $str] } if {[regexp -indices \ -- cgit v0.12 From 7f920790d8f824c489075223c18017f9656bb717 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 23 Jul 2005 03:31:41 +0000 Subject: correction to reversed logic --- library/auto.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/auto.tcl b/library/auto.tcl index 90f8b14..80fc2a2 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.9 2005/07/22 21:59:39 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.10 2005/07/23 03:31:41 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -553,7 +553,7 @@ auto_mkindex_parser::command proc {name args} { auto_mkindex_parser::hook { if {![catch {package require tbcload}]} { - if {[namespace which -command tbcload::bcproc] ne ""} { + if {[namespace which -command tbcload::bcproc] eq ""} { auto_load tbcload::bcproc } load {} tbcload $auto_mkindex_parser::parser -- cgit v0.12 From eb02536e79e9a0ada6a15791221f37b803ab6bb9 Mon Sep 17 00:00:00 2001 From: mdejong Date: Mon, 25 Jul 2005 01:17:02 +0000 Subject: * unix/tcl.m4 (SC_PROG_TCLSH, SC_BUILD_TCLSH): * win/tcl.m4 (SC_PROG_TCLSH, SC_BUILD_TCLSH): Split confused search for tclsh on PATH and build and install locations into two macros. SC_PROG_TCLSH searches just the PATH. SC_BUILD_TCLSH determines the name of the tclsh executable in the Tcl build directory. [Tcl bug 1160114] [Tcl patch 1244153] --- ChangeLog | 12 ++++++++++ unix/tcl.m4 | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ win/tcl.m4 | 55 ++++++++++++++++++++++++++++++++-------------- 3 files changed, 123 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8907845..4a08eaa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2005-07-24 Mo DeJong + + * unix/tcl.m4 (SC_PROG_TCLSH, SC_BUILD_TCLSH): + * win/tcl.m4 (SC_PROG_TCLSH, SC_BUILD_TCLSH): + Split confused search for tclsh on PATH and + build and install locations into two macros. + SC_PROG_TCLSH searches just the PATH. + SC_BUILD_TCLSH determines the name of the tclsh + executable in the Tcl build directory. + [Tcl bug 1160114] + [Tcl patch 1244153] + 2005-07-22 Don Porter * library/auto.tcl: Updates to the Tcl script library to make diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 1d59355..a48c114 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -307,6 +307,79 @@ AC_DEFUN(SC_LOAD_TKCONFIG, [ ]) #------------------------------------------------------------------------ +# SC_PROG_TCLSH +# Locate a tclsh shell installed on the system path. This macro +# will only find a Tcl shell that already exists on the system. +# It will not find a Tcl shell in the Tcl build directory or +# a Tcl shell that has been installed from the Tcl build directory. +# If a Tcl shell can't be located on the PATH, then TCLSH_PROG will +# be set to "". Extensions should take care not to create Makefile +# rules that are run by default and depend on TCLSH_PROG. An +# extension can't assume that an executable Tcl shell exists at +# build time. +# +# Arguments +# none +# +# Results +# Subst's the following values: +# TCLSH_PROG +#------------------------------------------------------------------------ + +AC_DEFUN(SC_PROG_TCLSH, [ + AC_MSG_CHECKING([for tclsh]) + + AC_CACHE_VAL(ac_cv_path_tclsh, [ + search_path=`echo ${PATH} | sed -e 's/:/ /g'` + for dir in $search_path ; do + for j in `ls -r $dir/tclsh[[8-9]]* 2> /dev/null` \ + `ls -r $dir/tclsh* 2> /dev/null` ; do + if test x"$ac_cv_path_tclsh" = x ; then + if test -f "$j" ; then + ac_cv_path_tclsh=$j + break + fi + fi + done + done + ]) + + if test -f "$ac_cv_path_tclsh" ; then + TCLSH_PROG="$ac_cv_path_tclsh" + AC_MSG_RESULT($TCLSH_PROG) + else + # It is not an error if an installed version of Tcl can't be located. + TCLSH_PROG="" + AC_MSG_RESULT([No tclsh found on PATH]) + fi + AC_SUBST(TCLSH_PROG) +]) + +#------------------------------------------------------------------------ +# SC_BUILD_TCLSH +# Determine the fully qualified path name of the tclsh executable +# in the Tcl build directory. This macro will correctly determine +# the name of the tclsh executable even if tclsh has not yet +# been built in the build directory. The build tclsh must be used +# when running tests from an extension build directory. It is not +# correct to use the TCLSH_PROG in cases like this. +# +# Arguments +# none +# +# Results +# Subst's the following values: +# BUILD_TCLSH +#------------------------------------------------------------------------ + +AC_DEFUN(SC_BUILD_TCLSH, [ + AC_MSG_CHECKING([for tclsh in Tcl build directory]) + BUILD_TCLSH=${TCL_BIN_DIR}/tclsh + AC_MSG_RESULT($BUILD_TCLSH) + AC_SUBST(BUILD_TCLSH) +]) + +#------------------------------------------------------------------------ # SC_ENABLE_SHARED -- # # Allows the building of shared libraries diff --git a/win/tcl.m4 b/win/tcl.m4 index c7b615c..540fcc1 100644 --- a/win/tcl.m4 +++ b/win/tcl.m4 @@ -680,18 +680,17 @@ AC_DEFUN(SC_WITH_TCL, [ AC_SUBST(TCL_BIN_DIR) ]) -# FIXME : SC_PROG_TCLSH should really look for the installed tclsh and -# not the build version. If we want to use the build version in the -# tk script, it is better to hardcode that! - #------------------------------------------------------------------------ # SC_PROG_TCLSH -# Locate a tclsh shell in the following directories: -# ${exec_prefix}/bin -# ${prefix}/bin -# ${TCL_BIN_DIR} -# ${TCL_BIN_DIR}/../bin -# ${PATH} +# Locate a tclsh shell installed on the system path. This macro +# will only find a Tcl shell that already exists on the system. +# It will not find a Tcl shell in the Tcl build directory or +# a Tcl shell that has been installed from the Tcl build directory. +# If a Tcl shell can't be located on the PATH, then TCLSH_PROG will +# be set to "". Extensions should take care not to create Makefile +# rules that are run by default and depend on TCLSH_PROG. An +# extension can't assume that an executable Tcl shell exists at +# build time. # # Arguments # none @@ -705,7 +704,7 @@ AC_DEFUN(SC_PROG_TCLSH, [ AC_MSG_CHECKING([for tclsh]) AC_CACHE_VAL(ac_cv_path_tclsh, [ - search_path=`echo ${exec_prefix}/bin:${prefix}/bin:${TCL_BIN_DIR}:${TCL_BIN_DIR}/../bin:${PATH} | sed -e 's/:/ /g'` + search_path=`echo ${PATH} | sed -e 's/:/ /g'` for dir in $search_path ; do for j in `ls -r $dir/tclsh[[8-9]]*.exe 2> /dev/null` \ `ls -r $dir/tclsh* 2> /dev/null` ; do @@ -722,13 +721,35 @@ AC_DEFUN(SC_PROG_TCLSH, [ if test -f "$ac_cv_path_tclsh" ; then TCLSH_PROG="$ac_cv_path_tclsh" AC_MSG_RESULT($TCLSH_PROG) - elif test -f "$TCL_BIN_DIR/tclConfig.sh" ; then - # One-tree build. - ac_cv_path_tclsh="$TCL_BIN_DIR/tclsh" - TCLSH_PROG="$ac_cv_path_tclsh" - AC_MSG_RESULT($TCLSH_PROG) else - AC_MSG_ERROR(No tclsh found in PATH: $search_path) + # It is not an error if an installed version of Tcl can't be located. + TCLSH_PROG="" + AC_MSG_RESULT([No tclsh found on PATH]) fi AC_SUBST(TCLSH_PROG) ]) + +#------------------------------------------------------------------------ +# SC_BUILD_TCLSH +# Determine the fully qualified path name of the tclsh executable +# in the Tcl build directory. This macro will correctly determine +# the name of the tclsh executable even if tclsh has not yet +# been built in the build directory. The build tclsh must be used +# when running tests from an extension build directory. It is not +# correct to use the TCLSH_PROG in cases like this. +# +# Arguments +# none +# +# Results +# Subst's the following values: +# BUILD_TCLSH +#------------------------------------------------------------------------ + +AC_DEFUN(SC_BUILD_TCLSH, [ + AC_MSG_CHECKING([for tclsh in Tcl build directory]) + BUILD_TCLSH=${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT} + AC_MSG_RESULT($BUILD_TCLSH) + AC_SUBST(BUILD_TCLSH) +]) + -- cgit v0.12 From d7c1ae018c2a9e4e28b9af2f1c6d5bfab48e2a02 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 26 Jul 2005 16:20:38 +0000 Subject: * generic/tclNamesp.c (TclTeardownNamespace): Re-ordering so that * tests/trace.test (trace-34.4): command delete traces fire while the command still exists. [Bug 1047286] --- ChangeLog | 6 ++++++ generic/tclNamesp.c | 32 ++++++++++++++++---------------- tests/trace.test | 13 ++++++++++++- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4a08eaa..2905807 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-07-26 Don Porter + + * generic/tclNamesp.c (TclTeardownNamespace): Re-ordering so that + * tests/trace.test (trace-34.4): command delete traces fire + while the command still exists. [Bug 1047286] + 2005-07-24 Mo DeJong * unix/tcl.m4 (SC_PROG_TCLSH, SC_BUILD_TCLSH): diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 3eb1bb2..1f72076 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.7 2005/07/05 17:27:08 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.8 2005/07/26 16:20:44 dgp Exp $ */ #include "tclInt.h" @@ -737,6 +737,21 @@ TclTeardownNamespace(nsPtr) } /* + * Delete all commands in this namespace. Be careful when traversing the + * hash table: when each command is deleted, it removes itself from the + * command table. + */ + + for (entryPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search); + entryPtr != NULL; + entryPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search)) { + cmd = (Tcl_Command) Tcl_GetHashValue(entryPtr); + Tcl_DeleteCommandFromToken((Tcl_Interp *) iPtr, cmd); + } + Tcl_DeleteHashTable(&nsPtr->cmdTable); + Tcl_InitHashTable(&nsPtr->cmdTable, TCL_STRING_KEYS); + + /* * Remove the namespace from its parent's child hashtable. */ @@ -766,21 +781,6 @@ TclTeardownNamespace(nsPtr) } /* - * Delete all commands in this namespace. Be careful when traversing the - * hash table: when each command is deleted, it removes itself from the - * command table. - */ - - for (entryPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search); - entryPtr != NULL; - entryPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search)) { - cmd = (Tcl_Command) Tcl_GetHashValue(entryPtr); - Tcl_DeleteCommandFromToken((Tcl_Interp *) iPtr, cmd); - } - Tcl_DeleteHashTable(&nsPtr->cmdTable); - Tcl_InitHashTable(&nsPtr->cmdTable, TCL_STRING_KEYS); - - /* * Free the namespace's export pattern array. */ diff --git a/tests/trace.test b/tests/trace.test index e0c6648..7df886f 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.6 2005/06/21 17:19:43 dgp Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.7 2005/07/26 16:20:46 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -2172,6 +2172,17 @@ test trace-34.3 {Bug 1224585} { foo } {} +test trace-34.4 {Bug 1047286} { + variable x notrace + proc callback {old - -} { + variable x "$old exists" [namespace which -command $old]" + } + namespace eval ::foo {proc bar {} {}} + trace add command ::foo::bar delete [namespace code callback] + namespace delete ::foo + set x +} {::foo::bar exists: ::foo::bar} + # Delete procedures when done, so we don't clash with other tests # (e.g. foobar will clash with 'unknown' tests). catch {rename foobar {}} -- cgit v0.12 From b4aa907f7b232da983bc1a84cf6ed978f0145be2 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 26 Jul 2005 16:23:59 +0000 Subject: typo --- tests/trace.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/trace.test b/tests/trace.test index 7df886f..3e1f9bb 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.7 2005/07/26 16:20:46 dgp Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.8 2005/07/26 16:23:59 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -2175,7 +2175,7 @@ test trace-34.3 {Bug 1224585} { test trace-34.4 {Bug 1047286} { variable x notrace proc callback {old - -} { - variable x "$old exists" [namespace which -command $old]" + variable x "$old exists: [namespace which -command $old]" } namespace eval ::foo {proc bar {} {}} trace add command ::foo::bar delete [namespace code callback] -- cgit v0.12 From 9d5713e7c5fda9f025636e41099395211bc6612d Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 26 Jul 2005 17:05:28 +0000 Subject: * generic/tclBasic.c (Tcl_CallWhenDeleted): Converted to use per-thread counter, rather than a process global one that required mutex protection. [RFE 1077194] --- ChangeLog | 4 ++++ generic/tclBasic.c | 15 ++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2905807..24ab4e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-07-26 Don Porter + * generic/tclBasic.c (Tcl_CallWhenDeleted): Converted to use + per-thread counter, rather than a process global one that required + mutex protection. [RFE 1077194] + * generic/tclNamesp.c (TclTeardownNamespace): Re-ordering so that * tests/trace.test (trace-34.4): command delete traces fire while the command still exists. [Bug 1047286] diff --git a/generic/tclBasic.c b/generic/tclBasic.c index f1423cf..00673d5 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.16 2005/06/21 17:19:40 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.17 2005/07/26 17:05:43 dgp Exp $ */ #include "tclInt.h" @@ -648,19 +648,16 @@ Tcl_CallWhenDeleted(interp, proc, clientData) ClientData clientData; /* One-word value to pass to proc. */ { Interp *iPtr = (Interp *) interp; - static int assocDataCounter = 0; -#ifdef TCL_THREADS - static Tcl_Mutex assocMutex; -#endif + static Tcl_ThreadDataKey assocDataCounterKey; + int *assocDataCounterPtr = + Tcl_GetThreadData(&assocDataCounterKey, (int)sizeof(int)); int new; char buffer[32 + TCL_INTEGER_SPACE]; AssocData *dPtr = (AssocData *) ckalloc(sizeof(AssocData)); Tcl_HashEntry *hPtr; - Tcl_MutexLock(&assocMutex); - sprintf(buffer, "Assoc Data Key #%d", assocDataCounter); - assocDataCounter++; - Tcl_MutexUnlock(&assocMutex); + sprintf(buffer, "Assoc Data Key #%d", *assocDataCounterPtr); + (*assocDataCounterPtr)++; if (iPtr->assocData == (Tcl_HashTable *) NULL) { iPtr->assocData = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); -- cgit v0.12 From 82117336431423ec510476abc4c9d414e174bed5 Mon Sep 17 00:00:00 2001 From: mdejong Date: Tue, 26 Jul 2005 20:26:27 +0000 Subject: * unix/configure: Regen. * unix/configure.in: Check for a $prefix/share directory and add it the the package if found. This will check for Tcl packages in /usr/local/share when Tcl is configured with the default dist install. [patch 1231015] --- ChangeLog | 9 +++++++++ unix/configure | 7 +++++++ unix/configure.in | 9 ++++++++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 24ab4e8..0229a0e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-07-26 Mo DeJong + + * unix/configure: Regen. + * unix/configure.in: Check for a $prefix/share + directory and add it the the package if found. + This will check for Tcl packages in /usr/local/share + when Tcl is configured with the default dist install. + [patch 1231015] + 2005-07-26 Don Porter * generic/tclBasic.c (Tcl_CallWhenDeleted): Converted to use diff --git a/unix/configure b/unix/configure index a59ced9..6da3455 100755 --- a/unix/configure +++ b/unix/configure @@ -7661,6 +7661,13 @@ else TCL_PACKAGE_PATH="${prefix}/lib" fi +# If a system share directory like /usr/local/share already exists, then add +# it to the package search path. + +if test -d "${prefix}/share" ; then + TCL_PACKAGE_PATH="${TCL_PACKAGE_PATH} ${prefix}/share" +fi + #-------------------------------------------------------------------- # The statements below define various symbols relating to Tcl # stub support. diff --git a/unix/configure.in b/unix/configure.in index ad3cc18..e408a9e 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.18 2005/06/18 19:24:25 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.19 2005/07/26 20:26:34 mdejong Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -558,6 +558,13 @@ else TCL_PACKAGE_PATH="${prefix}/lib" fi +# If a system share directory like /usr/local/share already exists, then add +# it to the package search path. + +if test -d "${prefix}/share" ; then + TCL_PACKAGE_PATH="${TCL_PACKAGE_PATH} ${prefix}/share" +fi + #-------------------------------------------------------------------- # The statements below define various symbols relating to Tcl # stub support. -- cgit v0.12 From a11fa9c7b80f3d0e7ef52862e03d260647cb05ea Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 26 Jul 2005 21:39:18 +0000 Subject: * doc/tclvars.n: Improved $errorCode documentation. [RFE 776921] --- ChangeLog | 2 ++ doc/tclvars.n | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0229a0e..0efc97f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,8 @@ 2005-07-26 Don Porter + * doc/tclvars.n: Improved $errorCode documentation. [RFE 776921] + * generic/tclBasic.c (Tcl_CallWhenDeleted): Converted to use per-thread counter, rather than a process global one that required mutex protection. [RFE 1077194] diff --git a/doc/tclvars.n b/doc/tclvars.n index 532fb5c..eb9a99f 100644 --- a/doc/tclvars.n +++ b/doc/tclvars.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tclvars.n,v 1.13.2.2 2004/11/16 10:07:00 dkf Exp $ +'\" RCS: @(#) $Id: tclvars.n,v 1.13.2.3 2005/07/26 21:39:22 dgp Exp $ '\" .so man.macros .TH tclvars n 8.0 Tcl "Tcl Built-In Commands" @@ -110,9 +110,8 @@ applications needs. .TP \fBerrorCode\fR After an error has occurred, this variable will be set to hold -additional information about the error in a form that is easy -to process with programs. -\fBerrorCode\fR consists of a Tcl list with one or more elements. +a list value representing additional information about the error +in a form that is easy to process with programs. The first element of the list identifies a general class of errors, and determines the format of the rest of the list. The following formats for \fBerrorCode\fR are used by the -- cgit v0.12 From 425be14f5a21104533dbeb1df9edd1bc5363b2b1 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 28 Jul 2005 15:27:55 +0000 Subject: Backport of fix for [Bug 1245953] --- ChangeLog | 9 +++++++++ generic/tclPipe.c | 10 ++++++++-- tests/exec.test | 30 +++++++++++++++++++++++++++++- unix/tclUnixPipe.c | 4 ++-- win/tclWinPipe.c | 4 ++-- 5 files changed, 50 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0efc97f..7d5a0f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-07-28 Donal K. Fellows + + * generic/tclPipe.c (TclCreatePipeline): Arrange for POSIX systems to + * unix/tclUnixPipe.c (TclpOpenFile): use the O_APPEND flag for + * tests/exec.test (exec-19.1): files opened in a pipeline + like ">>this". Note that Windows cannot support such access; there is + no equivalent flag on the handle that can be set at the kernel-call + level. The test is unix-specific in every way. [Bug 1245953] + 2005-07-26 Mo DeJong * unix/configure: Regen. diff --git a/generic/tclPipe.c b/generic/tclPipe.c index 7339926..fc0e6c0 100644 --- a/generic/tclPipe.c +++ b/generic/tclPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPipe.c,v 1.7.2.1 2004/07/02 23:37:31 hobbs Exp $ + * RCS: @(#) $Id: tclPipe.c,v 1.7.2.2 2005/07/28 15:27:58 dkf Exp $ */ #include "tclInt.h" @@ -605,7 +605,13 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, if (*p == '>') { p++; atOK = 0; - flags = O_WRONLY | O_CREAT; + + /* + * Note that the O_APPEND flag only has an effect on POSIX + * platforms. On Windows, we just have to carry on regardless. + */ + + flags = O_WRONLY | O_CREAT | O_APPEND; } if (*p == '&') { if (errorClose != 0) { diff --git a/tests/exec.test b/tests/exec.test index 3613cba..bb6ecd4 100644 --- a/tests/exec.test +++ b/tests/exec.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: exec.test,v 1.16.2.4 2004/10/28 00:01:06 dgp Exp $ +# RCS: @(#) $Id: exec.test,v 1.16.2.5 2005/07/28 15:27:59 dkf Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -600,6 +600,34 @@ test exec-18.1 { exec cat deals with weird file names} {exec tempNotWin} { set res } {0 contents} +# Note that this test cannot be adapted to work on Windows; that platform has +# no kernel support for an analog of O_APPEND. +test exec-19.1 {exec >> uses O_APPEND} { + -constraints {exec unix} + -setup { + set tmpfile [makeFile {0} tmpfile.exec-19.1] + } + -body { + # Note that we have to allow for the current contents of the + # temporary file, which is why the result is 14 and not 12 + exec /bin/sh -c \ + {for a in 1 2 3; do sleep 1; echo $a; done} >>$tmpfile & + exec /bin/sh -c \ + {for a in a b c; do sleep 1; echo $a; done} >>$tmpfile & + # The above two shell invokations take about 3 seconds to + # finish, so allow 5s (in case the machine is busy) + after 5000 + # Check that no bytes have got lost through mixups with + # overlapping appends, which is only guaranteed to work when + # we set O_APPEND on the file descriptor in the [exec >>...] + file size $tmpfile + } + -cleanup { + removeFile $tmpfile + } + -result 14 +} + # cleanup foreach file {script gorp.file gorp.file2 echo cat wc sh sleep exit err} { diff --git a/unix/tclUnixPipe.c b/unix/tclUnixPipe.c index dd9bc1c..0d3bd0b 100644 --- a/unix/tclUnixPipe.c +++ b/unix/tclUnixPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.4 2005/06/22 19:36:35 kennykb Exp $ + * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.5 2005/07/28 15:27:59 dkf Exp $ */ #include "tclInt.h" @@ -156,7 +156,7 @@ TclpOpenFile(fname, mode) * so we can append to any data already in the file. */ - if (mode & O_WRONLY) { + if ((mode & O_WRONLY) && !(mode & O_APPEND)) { TclOSseek(fd, (Tcl_SeekOffset) 0, SEEK_END); } diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 323302a..dc9a917 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.13 2005/06/22 21:30:20 kennykb Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.14 2005/07/28 15:27:59 dkf Exp $ */ #include "tclWinInt.h" @@ -670,7 +670,7 @@ TclpOpenFile(path, mode) * Seek to the end of file if we are writing. */ - if (mode & O_WRONLY) { + if (mode & (O_WRONLY|O_APPEND)) { SetFilePointer(handle, 0, NULL, FILE_END); } -- cgit v0.12 From 55164c3fb43310af750cc7c02a86f163a1fefee7 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 28 Jul 2005 18:39:38 +0000 Subject: * unix/configure, unix/tcl.m4: defined TCL_LOAD_FROM_MEMORY on Darwin only for SHARED_BUILD --- ChangeLog | 5 + unix/configure | 512 +++++++++++++++++++++++++++++---------------------------- unix/tcl.m4 | 4 +- 3 files changed, 265 insertions(+), 256 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d5a0f5..b15fc59 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-07-28 Jeff Hobbs + + * unix/configure, unix/tcl.m4: defined TCL_LOAD_FROM_MEMORY on + Darwin only for SHARED_BUILD + 2005-07-28 Donal K. Fellows * generic/tclPipe.c (TclCreatePipeline): Arrange for POSIX systems to diff --git a/unix/configure b/unix/configure index 6da3455..fcce633 100755 --- a/unix/configure +++ b/unix/configure @@ -3110,19 +3110,21 @@ EOF #define TCL_DEFAULT_ENCODING "utf-8" EOF - cat >> confdefs.h <<\EOF + if test "$SHARED_BUILD" = "1" ; then + cat >> confdefs.h <<\EOF #define TCL_LOAD_FROM_MEMORY 1 EOF + fi # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3121: checking for realpath" >&5 +echo "configure:3123: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -3456,17 +3458,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3460: checking for ld accepts -Bexport flag" >&5 +echo "configure:3462: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3507,9 +3509,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3511: checking sys/exec.h" >&5 +echo "configure:3513: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3527,7 +3529,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3545,9 +3547,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3549: checking a.out.h" >&5 +echo "configure:3551: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3565,7 +3567,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3583,9 +3585,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3587: checking sys/exec_aout.h" >&5 +echo "configure:3589: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3603,7 +3605,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3754,7 +3756,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3758: checking for build with symbols" >&5 +echo "configure:3760: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3815,21 +3817,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3819: checking for required early compiler flags" >&5 +echo "configure:3821: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3835: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3837,7 +3839,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3845,7 +3847,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3849: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3871,14 +3873,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3884: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3886,7 +3888,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3894,7 +3896,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3923,7 +3925,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3927: checking for 64-bit integer type" >&5 +echo "configure:3929: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3931,14 +3933,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3952,7 +3954,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3986,13 +3988,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3990: checking for struct dirent64" >&5 +echo "configure:3992: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4000,7 +4002,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4006: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4021,13 +4023,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4025: checking for struct stat64" >&5 +echo "configure:4027: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4035,7 +4037,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4041: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4058,12 +4060,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4062: checking for $ac_func" >&5 +echo "configure:4064: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4111,13 +4113,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4115: checking for off64_t" >&5 +echo "configure:4117: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4125,7 +4127,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4131: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4156,14 +4158,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4160: checking whether byte ordering is bigendian" >&5 +echo "configure:4162: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4174,11 +4176,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4180: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4189,7 +4191,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4209,7 +4211,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4255,12 +4257,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4259: checking for $ac_func" >&5 +echo "configure:4261: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4317,12 +4319,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4321: checking for $ac_func" >&5 +echo "configure:4323: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4375,12 +4377,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4379: checking for $ac_func" >&5 +echo "configure:4381: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4430,12 +4432,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4434: checking for strerror" >&5 +echo "configure:4436: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4482,12 +4484,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4486: checking for getwd" >&5 +echo "configure:4488: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4534,12 +4536,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4538: checking for wait3" >&5 +echo "configure:4540: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4586,12 +4588,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4590: checking for uname" >&5 +echo "configure:4592: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4638,12 +4640,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4642: checking for realpath" >&5 +echo "configure:4644: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4701,12 +4703,12 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4705: checking dirent.h" >&5 +echo "configure:4707: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4732,7 +4734,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -4755,17 +4757,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4759: checking for errno.h" >&5 +echo "configure:4761: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4771: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4792,17 +4794,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4796: checking for float.h" >&5 +echo "configure:4798: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4806: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4829,17 +4831,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4833: checking for values.h" >&5 +echo "configure:4835: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4845: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4866,17 +4868,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4870: checking for limits.h" >&5 +echo "configure:4872: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4882: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4906,17 +4908,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4910: checking for stdlib.h" >&5 +echo "configure:4912: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4922: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4939,7 +4941,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4953,7 +4955,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4967,7 +4969,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4988,17 +4990,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4992: checking for string.h" >&5 +echo "configure:4994: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5004: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5021,7 +5023,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -5035,7 +5037,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5061,17 +5063,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:5065: checking for sys/wait.h" >&5 +echo "configure:5067: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5077: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5098,17 +5100,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:5102: checking for dlfcn.h" >&5 +echo "configure:5104: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5112: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5114: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5140,17 +5142,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5144: checking for $ac_hdr" >&5 +echo "configure:5146: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5156: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5190,17 +5192,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5194: checking for $ac_hdr" >&5 +echo "configure:5196: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5206: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5227,7 +5229,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5231: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5233: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5236,7 +5238,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5251,7 +5253,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5268,7 +5270,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5282,7 +5284,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5300,7 +5302,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5315,7 +5317,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5333,7 +5335,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5350,7 +5352,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5368,7 +5370,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5384,7 +5386,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5402,7 +5404,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5419,7 +5421,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5462,19 +5464,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5466: checking for fd_set in sys/types" >&5 +echo "configure:5468: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5480: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5490,12 +5492,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5494: checking for fd_mask in sys/select" >&5 +echo "configure:5496: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5532,12 +5534,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5536: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5538: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5545,7 +5547,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5549: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5570,17 +5572,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5574: checking for $ac_hdr" >&5 +echo "configure:5576: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5607,12 +5609,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5611: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5613: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5621,7 +5623,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5627: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5642,12 +5644,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5646: checking for tm_zone in struct tm" >&5 +echo "configure:5648: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5655,7 +5657,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5661: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5675,12 +5677,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5679: checking for tzname" >&5 +echo "configure:5681: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5690,7 +5692,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5715,12 +5717,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5719: checking for $ac_func" >&5 +echo "configure:5721: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5769,19 +5771,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5773: checking tm_tzadj in struct tm" >&5 +echo "configure:5775: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5802,19 +5804,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5806: checking tm_gmtoff in struct tm" >&5 +echo "configure:5808: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5839,12 +5841,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5843: checking long timezone variable" >&5 +echo "configure:5845: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5853,7 +5855,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5876,12 +5878,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5880: checking time_t timezone variable" >&5 +echo "configure:5882: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5890,7 +5892,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5896: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5917,12 +5919,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5921: checking for st_blksize in struct stat" >&5 +echo "configure:5923: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5930,7 +5932,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5951,12 +5953,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5955: checking for fstatfs" >&5 +echo "configure:5957: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6008,7 +6010,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6012: checking for 8-bit clean memcmp" >&5 +echo "configure:6014: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6016,7 +6018,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6050,12 +6052,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6054: checking for memmove" >&5 +echo "configure:6056: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6111,12 +6113,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6115: checking proper strstr implementation" >&5 +echo "configure:6117: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6153,12 +6155,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6157: checking for strtoul" >&5 +echo "configure:6159: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6205,7 +6207,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6244,12 +6246,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6248: checking for strtod" >&5 +echo "configure:6250: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6296,7 +6298,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6338,12 +6340,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6342: checking for strtod" >&5 +echo "configure:6344: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6388,7 +6390,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6392: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6394: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6397,7 +6399,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6453,12 +6455,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6457: checking for ANSI C header files" >&5 +echo "configure:6459: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6466,7 +6468,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6472: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6483,7 +6485,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6501,7 +6503,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6522,7 +6524,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6533,7 +6535,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6557,12 +6559,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6561: checking for mode_t" >&5 +echo "configure:6563: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6590,12 +6592,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6594: checking for pid_t" >&5 +echo "configure:6596: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6623,12 +6625,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6627: checking for size_t" >&5 +echo "configure:6629: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6656,12 +6658,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6660: checking for uid_t in sys/types.h" >&5 +echo "configure:6662: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6691,12 +6693,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6695: checking for socklen_t" >&5 +echo "configure:6697: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6735,12 +6737,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6739: checking for opendir" >&5 +echo "configure:6741: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6796,12 +6798,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6800: checking union wait" >&5 +echo "configure:6802: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6813,7 +6815,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6840,12 +6842,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6844: checking for strncasecmp" >&5 +echo "configure:6846: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6890,7 +6892,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6894: checking for strncasecmp in -lsocket" >&5 +echo "configure:6896: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6898,7 +6900,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6933,7 +6935,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6937: checking for strncasecmp in -linet" >&5 +echo "configure:6939: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6941,7 +6943,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6990,12 +6992,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6994: checking for BSDgettimeofday" >&5 +echo "configure:6996: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7040,12 +7042,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7044: checking for gettimeofday" >&5 +echo "configure:7046: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7095,12 +7097,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7099: checking for gettimeofday declaration" >&5 +echo "configure:7101: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7131,14 +7133,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7135: checking whether char is unsigned" >&5 +echo "configure:7137: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7194,12 +7196,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7198: checking signed char declarations" >&5 +echo "configure:7200: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7234,7 +7236,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7238: checking for a putenv() that copies the buffer" >&5 +echo "configure:7240: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7242,7 +7244,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7264,7 +7266,7 @@ else } EOF -if { (eval echo configure:7268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7306,17 +7308,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7310: checking for langinfo.h" >&5 +echo "configure:7312: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7322: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7341,17 +7343,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7345: checking whether to use nl_langinfo" >&5 +echo "configure:7347: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7386,17 +7388,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7390: checking for $ac_hdr" >&5 +echo "configure:7392: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7402: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7426,17 +7428,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7430: checking for $ac_hdr" >&5 +echo "configure:7432: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7463,7 +7465,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7467: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7469: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7543,7 +7545,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7547: checking how to package libraries" >&5 +echo "configure:7549: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index a48c114..1ea2f5f 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1454,7 +1454,9 @@ dnl AC_CHECK_TOOL(AR, ar) AC_DEFINE(MAC_OSX_TCL) AC_DEFINE(USE_VFORK) AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8") - AC_DEFINE(TCL_LOAD_FROM_MEMORY) + if test "$SHARED_BUILD" = "1" ; then + AC_DEFINE(TCL_LOAD_FROM_MEMORY) + fi # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: AC_CHECK_FUNC(realpath) -- cgit v0.12 From cfb0529d87cadc7480b14d0b3379ecf7ed5802c9 Mon Sep 17 00:00:00 2001 From: mdejong Date: Fri, 29 Jul 2005 03:50:31 +0000 Subject: * win/README: Update link to msys_mingw8.zip. Remove old Cygwin + Mingw info, people should just build with the msys + mingw configuration. --- ChangeLog | 6 ++++++ win/README | 15 ++------------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index b15fc59..17782af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-07-28 Mo DeJong + + * win/README: Update link to msys_mingw8.zip. + Remove old Cygwin + Mingw info, people should + just build with the msys + mingw configuration. + 2005-07-28 Jeff Hobbs * unix/configure, unix/tcl.m4: defined TCL_LOAD_FROM_MEMORY on diff --git a/win/README b/win/README index b6c955d..644dc45 100644 --- a/win/README +++ b/win/README @@ -1,6 +1,6 @@ Tcl 8.4 for Windows -RCS: @(#) $Id: README,v 1.30 2003/01/27 03:34:04 mdejong Exp $ +RCS: @(#) $Id: README,v 1.30.2.1 2005/07/29 03:50:51 mdejong Exp $ 1. Introduction --------------- @@ -30,7 +30,7 @@ In order to compile Tcl for Windows, you need the following: Msys + Mingw - http://prdownloads.sourceforge.net/tcl/msys_mingw6.zip + http://prdownloads.sourceforge.net/tcl/msys_mingw8.zip This Msys + Mingw download is the minimal environment needed to build Tcl/Tk under Windows. It includes a @@ -41,17 +41,6 @@ In order to compile Tcl for Windows, you need the following: to launch the msys shell, you then run the configure script in the tcl/win directory. - or - - Cygwin 1.1 or newer (See http://sources.redhat.com/cygwin) - - Mingw 2.0 (http://prdownloads.sourceforge.net/mingw/MinGW-2.0.0-3.exe) - - Extract the contents of the archive file into /usr/local/mingw - and place /usr/local/mingw/bin at the front of your PATH env var - before running the configure script in the tcl/win directory. - - In practice, this release is built with Visual C++ 6.0 and the TEA Makefile. -- cgit v0.12 From 34c1b26fda7971d730ebcf6498ef36793dc84609 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 29 Jul 2005 14:57:25 +0000 Subject: Take care with globals that have an entry in the var table but "don't exist" --- ChangeLog | 5 +++++ generic/tclCmdIL.c | 9 ++++++--- tests/info.test | 17 +++++++++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 17782af..9b1b01d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-07-29 Donal K. Fellows + + * generic/tclCmdIL.c (InfoGlobalsCmd): Even in high-speed mode, + still have to take care with non-existant variables. [Bug 1247135] + 2005-07-28 Mo DeJong * win/README: Update link to msys_mingw8.zip. diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 283d842..ab5c876 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.5 2004/11/24 19:28:12 dgp Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.6 2005/07/29 14:57:26 dkf Exp $ */ #include "tclInt.h" @@ -1105,8 +1105,11 @@ InfoGlobalsCmd(dummy, interp, objc, objv) if (pattern != NULL && TclMatchIsTrivial(pattern)) { entryPtr = Tcl_FindHashEntry(&globalNsPtr->varTable, pattern); if (entryPtr != NULL) { - Tcl_ListObjAppendElement(interp, listPtr, - Tcl_NewStringObj(pattern, -1)); + varPtr = (Var *) Tcl_GetHashValue(entryPtr); + if (!TclIsVarUndefined(varPtr)) { + Tcl_ListObjAppendElement(interp, listPtr, + Tcl_NewStringObj(pattern, -1)); + } } } else { for (entryPtr = Tcl_FirstHashEntry(&globalNsPtr->varTable, &search); diff --git a/tests/info.test b/tests/info.test index 0f65324..7a31b27 100644 --- a/tests/info.test +++ b/tests/info.test @@ -11,10 +11,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.3 2004/11/24 19:28:13 dgp Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.4 2005/07/29 14:57:28 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -295,6 +295,19 @@ test info-8.4 {info globals option: may have leading namespace qualifiers} { set x 0 list [info globals x] [info globals :x] [info globals ::x] [info globals :::x] [info globals ::::x] } {x {} x x x} +test info-8.5 {info globals option: only return existing global variables} { + -setup { + catch {unset ::NO_SUCH_VAR} + proc evalInProc script {eval $script} + } + -body { + evalInProc {global NO_SUCH_VAR; info globals NO_SUCH_VAR} + } + -cleanup { + rename evalInProc {} + } + -result {} +} test info-9.1 {info level option} { info level -- cgit v0.12 From c918210ee55ae018cc40f8a8b411feed5af07de4 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 30 Jul 2005 07:58:11 +0000 Subject: * unix/configure, unix/tcl.m4: revert 2005-07-28 change. * unix/tclLoadDyld.c (TclpDlopen, TclpLoadMemory): workarounds for bugs/changes in behaviour in Mac OS X 10.4 Tiger, sync formatting changes from HEAD. --- ChangeLog | 8 + unix/configure | 512 +++++++++++++++++++++++---------------------- unix/tcl.m4 | 4 +- unix/tclLoadDyld.c | 594 +++++++++++++++++++++++++++++------------------------ 4 files changed, 595 insertions(+), 523 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9b1b01d..f96fcbc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-07-30 Daniel Steffen + + * unix/configure, unix/tcl.m4: revert 2005-07-28 change. + + * unix/tclLoadDyld.c (TclpDlopen, TclpLoadMemory): workarounds + for bugs/changes in behaviour in Mac OS X 10.4 Tiger, sync + formatting changes from HEAD. + 2005-07-29 Donal K. Fellows * generic/tclCmdIL.c (InfoGlobalsCmd): Even in high-speed mode, diff --git a/unix/configure b/unix/configure index fcce633..6da3455 100755 --- a/unix/configure +++ b/unix/configure @@ -3110,21 +3110,19 @@ EOF #define TCL_DEFAULT_ENCODING "utf-8" EOF - if test "$SHARED_BUILD" = "1" ; then - cat >> confdefs.h <<\EOF + cat >> confdefs.h <<\EOF #define TCL_LOAD_FROM_MEMORY 1 EOF - fi # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3123: checking for realpath" >&5 +echo "configure:3121: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -3458,17 +3456,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3462: checking for ld accepts -Bexport flag" >&5 +echo "configure:3460: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3509,9 +3507,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3513: checking sys/exec.h" >&5 +echo "configure:3511: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3529,7 +3527,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3547,9 +3545,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3551: checking a.out.h" >&5 +echo "configure:3549: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3567,7 +3565,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3585,9 +3583,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3589: checking sys/exec_aout.h" >&5 +echo "configure:3587: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3605,7 +3603,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3756,7 +3754,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3760: checking for build with symbols" >&5 +echo "configure:3758: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3817,21 +3815,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3821: checking for required early compiler flags" >&5 +echo "configure:3819: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3835: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3839,7 +3837,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3847,7 +3845,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3849: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3873,14 +3871,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3884: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3888,7 +3886,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3896,7 +3894,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3925,7 +3923,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3929: checking for 64-bit integer type" >&5 +echo "configure:3927: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3933,14 +3931,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3954,7 +3952,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3988,13 +3986,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3992: checking for struct dirent64" >&5 +echo "configure:3990: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4002,7 +4000,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4006: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4023,13 +4021,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4027: checking for struct stat64" >&5 +echo "configure:4025: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4037,7 +4035,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4041: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4060,12 +4058,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4064: checking for $ac_func" >&5 +echo "configure:4062: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4113,13 +4111,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4117: checking for off64_t" >&5 +echo "configure:4115: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4127,7 +4125,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4131: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4158,14 +4156,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4162: checking whether byte ordering is bigendian" >&5 +echo "configure:4160: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4176,11 +4174,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4180: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4191,7 +4189,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4211,7 +4209,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4257,12 +4255,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4261: checking for $ac_func" >&5 +echo "configure:4259: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4319,12 +4317,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4323: checking for $ac_func" >&5 +echo "configure:4321: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4377,12 +4375,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4381: checking for $ac_func" >&5 +echo "configure:4379: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4432,12 +4430,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4436: checking for strerror" >&5 +echo "configure:4434: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4484,12 +4482,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4488: checking for getwd" >&5 +echo "configure:4486: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4536,12 +4534,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4540: checking for wait3" >&5 +echo "configure:4538: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4588,12 +4586,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4592: checking for uname" >&5 +echo "configure:4590: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4640,12 +4638,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4644: checking for realpath" >&5 +echo "configure:4642: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4703,12 +4701,12 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4707: checking dirent.h" >&5 +echo "configure:4705: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4734,7 +4732,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -4757,17 +4755,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4761: checking for errno.h" >&5 +echo "configure:4759: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4771: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4794,17 +4792,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4798: checking for float.h" >&5 +echo "configure:4796: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4806: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4831,17 +4829,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4835: checking for values.h" >&5 +echo "configure:4833: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4845: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4868,17 +4866,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4872: checking for limits.h" >&5 +echo "configure:4870: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4882: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4908,17 +4906,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4912: checking for stdlib.h" >&5 +echo "configure:4910: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4922: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4941,7 +4939,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4955,7 +4953,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4969,7 +4967,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4990,17 +4988,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4994: checking for string.h" >&5 +echo "configure:4992: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5004: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5023,7 +5021,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -5037,7 +5035,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5063,17 +5061,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:5067: checking for sys/wait.h" >&5 +echo "configure:5065: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5077: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5100,17 +5098,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:5104: checking for dlfcn.h" >&5 +echo "configure:5102: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5114: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5112: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5142,17 +5140,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5146: checking for $ac_hdr" >&5 +echo "configure:5144: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5156: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5192,17 +5190,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5196: checking for $ac_hdr" >&5 +echo "configure:5194: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5206: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5229,7 +5227,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5233: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5231: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5238,7 +5236,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5253,7 +5251,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5270,7 +5268,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5284,7 +5282,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5302,7 +5300,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5317,7 +5315,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5335,7 +5333,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5352,7 +5350,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5370,7 +5368,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5386,7 +5384,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5404,7 +5402,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5421,7 +5419,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5464,19 +5462,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5468: checking for fd_set in sys/types" >&5 +echo "configure:5466: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5480: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5492,12 +5490,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5496: checking for fd_mask in sys/select" >&5 +echo "configure:5494: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5534,12 +5532,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5538: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5536: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5547,7 +5545,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5549: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5572,17 +5570,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5576: checking for $ac_hdr" >&5 +echo "configure:5574: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5609,12 +5607,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5613: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5611: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5623,7 +5621,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5627: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5644,12 +5642,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5648: checking for tm_zone in struct tm" >&5 +echo "configure:5646: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5657,7 +5655,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5661: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5677,12 +5675,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5681: checking for tzname" >&5 +echo "configure:5679: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5692,7 +5690,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5717,12 +5715,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5721: checking for $ac_func" >&5 +echo "configure:5719: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5771,19 +5769,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5775: checking tm_tzadj in struct tm" >&5 +echo "configure:5773: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5804,19 +5802,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5808: checking tm_gmtoff in struct tm" >&5 +echo "configure:5806: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5841,12 +5839,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5845: checking long timezone variable" >&5 +echo "configure:5843: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5855,7 +5853,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5878,12 +5876,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5882: checking time_t timezone variable" >&5 +echo "configure:5880: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5892,7 +5890,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5896: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5919,12 +5917,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5923: checking for st_blksize in struct stat" >&5 +echo "configure:5921: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5932,7 +5930,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5953,12 +5951,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5957: checking for fstatfs" >&5 +echo "configure:5955: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6010,7 +6008,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6014: checking for 8-bit clean memcmp" >&5 +echo "configure:6012: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6018,7 +6016,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6052,12 +6050,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6056: checking for memmove" >&5 +echo "configure:6054: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6113,12 +6111,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6117: checking proper strstr implementation" >&5 +echo "configure:6115: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6155,12 +6153,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6159: checking for strtoul" >&5 +echo "configure:6157: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6207,7 +6205,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6246,12 +6244,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6250: checking for strtod" >&5 +echo "configure:6248: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6298,7 +6296,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6340,12 +6338,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6344: checking for strtod" >&5 +echo "configure:6342: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6390,7 +6388,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6394: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6392: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6399,7 +6397,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6455,12 +6453,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6459: checking for ANSI C header files" >&5 +echo "configure:6457: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6468,7 +6466,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6472: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6485,7 +6483,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6503,7 +6501,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6524,7 +6522,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6535,7 +6533,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6559,12 +6557,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6563: checking for mode_t" >&5 +echo "configure:6561: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6592,12 +6590,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6596: checking for pid_t" >&5 +echo "configure:6594: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6625,12 +6623,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6629: checking for size_t" >&5 +echo "configure:6627: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6658,12 +6656,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6662: checking for uid_t in sys/types.h" >&5 +echo "configure:6660: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6693,12 +6691,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6697: checking for socklen_t" >&5 +echo "configure:6695: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6737,12 +6735,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6741: checking for opendir" >&5 +echo "configure:6739: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6798,12 +6796,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6802: checking union wait" >&5 +echo "configure:6800: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6815,7 +6813,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6842,12 +6840,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6846: checking for strncasecmp" >&5 +echo "configure:6844: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6892,7 +6890,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6896: checking for strncasecmp in -lsocket" >&5 +echo "configure:6894: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6900,7 +6898,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6935,7 +6933,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6939: checking for strncasecmp in -linet" >&5 +echo "configure:6937: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6943,7 +6941,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6992,12 +6990,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6996: checking for BSDgettimeofday" >&5 +echo "configure:6994: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7042,12 +7040,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7046: checking for gettimeofday" >&5 +echo "configure:7044: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7097,12 +7095,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7101: checking for gettimeofday declaration" >&5 +echo "configure:7099: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7133,14 +7131,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7137: checking whether char is unsigned" >&5 +echo "configure:7135: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7196,12 +7194,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7200: checking signed char declarations" >&5 +echo "configure:7198: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7213: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7236,7 +7234,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7240: checking for a putenv() that copies the buffer" >&5 +echo "configure:7238: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7244,7 +7242,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7266,7 +7264,7 @@ else } EOF -if { (eval echo configure:7270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7308,17 +7306,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7312: checking for langinfo.h" >&5 +echo "configure:7310: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7322: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7343,17 +7341,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7347: checking whether to use nl_langinfo" >&5 +echo "configure:7345: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7388,17 +7386,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7392: checking for $ac_hdr" >&5 +echo "configure:7390: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7402: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7428,17 +7426,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7432: checking for $ac_hdr" >&5 +echo "configure:7430: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7465,7 +7463,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7469: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7467: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7545,7 +7543,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7549: checking how to package libraries" >&5 +echo "configure:7547: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 1ea2f5f..a48c114 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1454,9 +1454,7 @@ dnl AC_CHECK_TOOL(AR, ar) AC_DEFINE(MAC_OSX_TCL) AC_DEFINE(USE_VFORK) AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8") - if test "$SHARED_BUILD" = "1" ; then - AC_DEFINE(TCL_LOAD_FROM_MEMORY) - fi + AC_DEFINE(TCL_LOAD_FROM_MEMORY) # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: AC_CHECK_FUNC(realpath) diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 10afad7..1796307 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -1,17 +1,18 @@ -/* +/* * tclLoadDyld.c -- * - * This procedure provides a version of the TclLoadFile that - * works with Apple's dyld dynamic loading. This file - * provided by Wilfredo Sanchez (wsanchez@apple.com). - * This works on Mac OS X. + * This procedure provides a version of the TclLoadFile that works with + * Apple's dyld dynamic loading. + * Original version of his file (now superseded long ago) provided by + * Wilfredo Sanchez (wsanchez@apple.com). * * Copyright (c) 1995 Apple Computer, Inc. + * Copyright (c) 2005 Daniel A. Steffen * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.3 2005/06/04 07:05:14 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.4 2005/07/30 07:58:16 das Exp $ */ #include "tclInt.h" @@ -21,18 +22,18 @@ #include typedef struct Tcl_DyldModuleHandle { - struct Tcl_DyldModuleHandle *nextModuleHandle; + struct Tcl_DyldModuleHandle *nextPtr; NSModule module; } Tcl_DyldModuleHandle; typedef struct Tcl_DyldLoadHandle { - CONST struct mach_header *dyld_lib; - Tcl_DyldModuleHandle *firstModuleHandle; + CONST struct mach_header *dyldLibHeader; + Tcl_DyldModuleHandle *modulePtr; } Tcl_DyldLoadHandle; #ifdef TCL_LOAD_FROM_MEMORY typedef struct ThreadSpecificData { - int haveLoadMemory; + int haveLoadMemory; } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; @@ -43,44 +44,36 @@ static Tcl_ThreadDataKey dataKey; * * DyldOFIErrorMsg -- * - * Converts a numerical NSObjectFileImage error into an - * error message string. + * Converts a numerical NSObjectFileImage error into an error message + * string. * * Results: - * Error message string. + * Error message string. * * Side effects: - * None. + * None. * *---------------------------------------------------------------------- */ -static CONST char* DyldOFIErrorMsg(int err) { - CONST char *ofi_msg = NULL; - - if (err != NSObjectFileImageSuccess) { - switch(err) { - case NSObjectFileImageFailure: - ofi_msg = "object file setup failure"; - break; - case NSObjectFileImageInappropriateFile: - ofi_msg = "not a Mach-O MH_BUNDLE file"; - break; - case NSObjectFileImageArch: - ofi_msg = "no object for this architecture"; - break; - case NSObjectFileImageFormat: - ofi_msg = "bad object file format"; - break; - case NSObjectFileImageAccess: - ofi_msg = "can't read object file"; - break; - default: - ofi_msg = "unknown error"; - break; - } +static CONST char* +DyldOFIErrorMsg(int err) { + switch(err) { + case NSObjectFileImageSuccess: + return NULL; + case NSObjectFileImageFailure: + return "object file setup failure"; + case NSObjectFileImageInappropriateFile: + return "not a Mach-O MH_BUNDLE file"; + case NSObjectFileImageArch: + return "no object for this architecture"; + case NSObjectFileImageFormat: + return "bad object file format"; + case NSObjectFileImageAccess: + return "can't read object file"; + default: + return "unknown error"; } - return ofi_msg; } /* @@ -88,15 +81,15 @@ static CONST char* DyldOFIErrorMsg(int err) { * * TclpDlopen -- * - * Dynamically loads a binary code file into memory and returns - * a handle to the new code. + * Dynamically loads a binary code file into memory and returns a handle + * to the new code. * * Results: - * A standard Tcl completion code. If an error occurs, an error - * message is left in the interpreter's result. + * A standard Tcl completion code. If an error occurs, an error message + * is left in the interpreter's result. * * Side effects: - * New code suddenly appears in memory. + * New code suddenly appears in memory. * *---------------------------------------------------------------------- */ @@ -107,90 +100,108 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) Tcl_Obj *pathPtr; /* Name of the file containing the desired * code (UTF-8). */ Tcl_LoadHandle *loadHandle; /* Filled with token for dynamically loaded - * file which will be passed back to + * file which will be passed back to * (*unloadProcPtr)() to unload the file. */ - Tcl_FSUnloadFileProc **unloadProcPtr; + Tcl_FSUnloadFileProc **unloadProcPtr; /* Filled with address of Tcl_FSUnloadFileProc - * function which should be used for - * this file. */ + * function which should be used for this + * file. */ { Tcl_DyldLoadHandle *dyldLoadHandle; - CONST struct mach_header *dyld_lib; - NSObjectFileImage dyld_ofi = NULL; - Tcl_DyldModuleHandle *dyldModuleHandle = NULL; + CONST struct mach_header *dyldLibHeader; + NSObjectFileImage dyldObjFileImage = NULL; + Tcl_DyldModuleHandle *modulePtr = NULL; CONST char *native; - /* - * First try the full path the user gave us. This is particularly - * important if the cwd is inside a vfs, and we are trying to load - * using a relative path. + /* + * First try the full path the user gave us. This is particularly + * important if the cwd is inside a vfs, and we are trying to load using a + * relative path. */ + native = Tcl_FSGetNativePath(pathPtr); - dyld_lib = NSAddImage(native, - NSADDIMAGE_OPTION_WITH_SEARCHING | - NSADDIMAGE_OPTION_RETURN_ON_ERROR); - - if (!dyld_lib) { - NSLinkEditErrors editError; - CONST char *name, *msg, *ofi_msg = NULL; - - NSLinkEditError(&editError, &errno, &name, &msg); - if (editError == NSLinkEditFileAccessError) { - /* The requested file was not found: - * let the OS loader examine the binary search path for - * whatever string the user gave us which hopefully refers - * to a file on the binary path - */ - Tcl_DString ds; - char *fileName = Tcl_GetString(pathPtr); - CONST char *native = Tcl_UtfToExternalDString(NULL, fileName, -1, &ds); - dyld_lib = NSAddImage(native, - NSADDIMAGE_OPTION_WITH_SEARCHING | - NSADDIMAGE_OPTION_RETURN_ON_ERROR); - Tcl_DStringFree(&ds); - if (!dyld_lib) { - NSLinkEditError(&editError, &errno, &name, &msg); - } - } else if ((editError == NSLinkEditFileFormatError && errno == EBADMACHO)) { - /* The requested file was found but was not of type MH_DYLIB, - * attempt to load it as a MH_BUNDLE: */ - NSObjectFileImageReturnCode err; - err = NSCreateObjectFileImageFromFile(native, &dyld_ofi); - ofi_msg = DyldOFIErrorMsg(err); - } - if (!dyld_lib && !dyld_ofi) { - Tcl_AppendResult(interp, msg, (char *) NULL); - if (ofi_msg) { - Tcl_AppendResult(interp, "NSCreateObjectFileImageFromFile() error: ", - ofi_msg, (char *) NULL); - } - return TCL_ERROR; - } + dyldLibHeader = NSAddImage(native, NSADDIMAGE_OPTION_WITH_SEARCHING | + NSADDIMAGE_OPTION_RETURN_ON_ERROR); + + if (!dyldLibHeader) { + NSLinkEditErrors editError; + int errorNumber; + CONST char *name, *msg, *objFileImageErrMsg = NULL; + + NSLinkEditError(&editError, &errorNumber, &name, &msg); + + if (editError == NSLinkEditFileAccessError) { + /* + * The requested file was not found. Let the OS loader examine the + * binary search path for whatever string the user gave us which + * hopefully refers to a file on the binary path. + */ + + Tcl_DString ds; + char *fileName = Tcl_GetString(pathPtr); + CONST char *native = + Tcl_UtfToExternalDString(NULL, fileName, -1, &ds); + + dyldLibHeader = NSAddImage(native, NSADDIMAGE_OPTION_WITH_SEARCHING + | NSADDIMAGE_OPTION_RETURN_ON_ERROR); + Tcl_DStringFree(&ds); + if (!dyldLibHeader) { + NSLinkEditError(&editError, &errorNumber, &name, &msg); + } + } else if ((editError==NSLinkEditFileFormatError && errorNumber==EBADMACHO) + || editError == NSLinkEditOtherError){ + /* + * The requested file was found but was not of type MH_DYLIB, + * attempt to load it as a MH_BUNDLE. + */ + + NSObjectFileImageReturnCode err = + NSCreateObjectFileImageFromFile(native, &dyldObjFileImage); + objFileImageErrMsg = DyldOFIErrorMsg(err); + } + + if (!dyldLibHeader && !dyldObjFileImage) { + Tcl_AppendResult(interp, msg, (char *) NULL); + if (msg && *msg) { + Tcl_AppendResult(interp, "\n", (char *) NULL); + } + if (objFileImageErrMsg) { + Tcl_AppendResult(interp, + "NSCreateObjectFileImageFromFile() error: ", + objFileImageErrMsg, (char *) NULL); + } + return TCL_ERROR; + } } - - if (dyld_ofi) { - NSModule module; - module = NSLinkModule(dyld_ofi, native, NSLINKMODULE_OPTION_BINDNOW | - NSLINKMODULE_OPTION_RETURN_ON_ERROR); - NSDestroyObjectFileImage(dyld_ofi); - if (module) { - dyldModuleHandle = (Tcl_DyldModuleHandle *) - ckalloc(sizeof(Tcl_DyldModuleHandle)); - if (!dyldModuleHandle) return TCL_ERROR; - dyldModuleHandle->module = module; - dyldModuleHandle->nextModuleHandle = NULL; - } else { - NSLinkEditErrors editError; - CONST char *name, *msg; - NSLinkEditError(&editError, &errno, &name, &msg); - Tcl_AppendResult(interp, msg, (char *) NULL); - return TCL_ERROR; - } + + if (dyldObjFileImage) { + NSModule module; + + module = NSLinkModule(dyldObjFileImage, native, + NSLINKMODULE_OPTION_BINDNOW + | NSLINKMODULE_OPTION_RETURN_ON_ERROR); + NSDestroyObjectFileImage(dyldObjFileImage); + + if (!module) { + NSLinkEditErrors editError; + int errorNumber; + CONST char *name, *msg; + + NSLinkEditError(&editError, &errorNumber, &name, &msg); + Tcl_AppendResult(interp, msg, (char *) NULL); + return TCL_ERROR; + } + + modulePtr = (Tcl_DyldModuleHandle *) + ckalloc(sizeof(Tcl_DyldModuleHandle)); + modulePtr->module = module; + modulePtr->nextPtr = NULL; } - dyldLoadHandle = (Tcl_DyldLoadHandle *) ckalloc(sizeof(Tcl_DyldLoadHandle)); - if (!dyldLoadHandle) return TCL_ERROR; - dyldLoadHandle->dyld_lib = dyld_lib; - dyldLoadHandle->firstModuleHandle = dyldModuleHandle; + + dyldLoadHandle = (Tcl_DyldLoadHandle *) + ckalloc(sizeof(Tcl_DyldLoadHandle)); + dyldLoadHandle->dyldLibHeader = dyldLibHeader; + dyldLoadHandle->modulePtr = modulePtr; *loadHandle = (Tcl_LoadHandle) dyldLoadHandle; *unloadProcPtr = &TclpUnloadFile; return TCL_OK; @@ -201,75 +212,85 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) * * TclpFindSymbol -- * - * Looks up a symbol, by name, through a handle associated with - * a previously loaded piece of code (shared library). + * Looks up a symbol, by name, through a handle associated with a + * previously loaded piece of code (shared library). * * Results: - * Returns a pointer to the function associated with 'symbol' if - * it is found. Otherwise returns NULL and may leave an error - * message in the interp's result. + * Returns a pointer to the function associated with 'symbol' if it is + * found. Otherwise returns NULL and may leave an error message in the + * interp's result. * *---------------------------------------------------------------------- */ + Tcl_PackageInitProc* -TclpFindSymbol(interp, loadHandle, symbol) - Tcl_Interp *interp; - Tcl_LoadHandle loadHandle; - CONST char *symbol; +TclpFindSymbol(interp, loadHandle, symbol) + Tcl_Interp *interp; /* For error reporting. */ + Tcl_LoadHandle loadHandle; /* Handle from TclpDlopen. */ + CONST char *symbol; /* Symbol name to look up. */ { NSSymbol nsSymbol; CONST char *native; Tcl_DString newName, ds; Tcl_PackageInitProc* proc = NULL; Tcl_DyldLoadHandle *dyldLoadHandle = (Tcl_DyldLoadHandle *) loadHandle; - /* + + /* * dyld adds an underscore to the beginning of symbol names. */ + native = Tcl_UtfToExternalDString(NULL, symbol, -1, &ds); Tcl_DStringInit(&newName); Tcl_DStringAppend(&newName, "_", 1); native = Tcl_DStringAppend(&newName, native, -1); - if (dyldLoadHandle->dyld_lib) { - nsSymbol = NSLookupSymbolInImage(dyldLoadHandle->dyld_lib, native, - NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW | - NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR); - if(nsSymbol) { - /* until dyld supports unloading of MY_DYLIB binaries, the - * following is not needed: */ + + if (dyldLoadHandle->dyldLibHeader) { + nsSymbol = NSLookupSymbolInImage(dyldLoadHandle->dyldLibHeader, native, + NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW | + NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR); + if (nsSymbol) { + /* + * Until dyld supports unloading of MY_DYLIB binaries, the + * following is not needed. + */ + #ifdef DYLD_SUPPORTS_DYLIB_UNLOADING - NSModule module = NSModuleForSymbol(nsSymbol); - Tcl_DyldModuleHandle *dyldModuleHandle = dyldLoadHandle->firstModuleHandle; - while (dyldModuleHandle) { - if (module == dyldModuleHandle->module) break; - dyldModuleHandle = dyldModuleHandle->nextModuleHandle; - } - if (!dyldModuleHandle) { - dyldModuleHandle = (Tcl_DyldModuleHandle *) - ckalloc(sizeof(Tcl_DyldModuleHandle)); - if (dyldModuleHandle) { - dyldModuleHandle->module = module; - dyldModuleHandle->nextModuleHandle = - dyldLoadHandle->firstModuleHandle; - dyldLoadHandle->firstModuleHandle = dyldModuleHandle; - } - } + NSModule module = NSModuleForSymbol(nsSymbol); + Tcl_DyldModuleHandle *modulePtr = dyldLoadHandle->modulePtr; + + while (modulePtr != NULL) { + if (module == modulePtr->module) { + break; + } + modulePtr = modulePtr->nextPtr; + } + if (modulePtr == NULL) { + modulePtr = (Tcl_DyldModuleHandle *) + ckalloc(sizeof(Tcl_DyldModuleHandle)); + modulePtr->module = module; + modulePtr->nextPtr = dyldLoadHandle->modulePtr; + dyldLoadHandle->modulePtr = modulePtr; + } #endif /* DYLD_SUPPORTS_DYLIB_UNLOADING */ - } else { - NSLinkEditErrors editError; - CONST char *name, *msg; - NSLinkEditError(&editError, &errno, &name, &msg); - Tcl_AppendResult(interp, msg, (char *) NULL); - } + + } else { + NSLinkEditErrors editError; + int errorNumber; + CONST char *name, *msg; + + NSLinkEditError(&editError, &errorNumber, &name, &msg); + Tcl_AppendResult(interp, msg, (char *) NULL); + } } else { - nsSymbol = NSLookupSymbolInModule(dyldLoadHandle->firstModuleHandle->module, - native); + nsSymbol = NSLookupSymbolInModule(dyldLoadHandle->modulePtr->module, + native); } - if(nsSymbol) { - proc = NSAddressOfSymbol(nsSymbol); + if (nsSymbol) { + proc = NSAddressOfSymbol(nsSymbol); } Tcl_DStringFree(&newName); Tcl_DStringFree(&ds); - + return proc; } @@ -278,37 +299,37 @@ TclpFindSymbol(interp, loadHandle, symbol) * * TclpUnloadFile -- * - * Unloads a dynamically loaded binary code file from memory. - * Code pointers in the formerly loaded file are no longer valid - * after calling this function. + * Unloads a dynamically loaded binary code file from memory. Code + * pointers in the formerly loaded file are no longer valid after calling + * this function. * * Results: - * None. + * None. * * Side effects: - * Code dissapears from memory. - * Note that dyld currently only supports unloading of binaries of - * type MH_BUNDLE loaded with NSLinkModule() in TclpDlopen() above. + * Code dissapears from memory. Note that dyld currently only supports + * unloading of binaries of type MH_BUNDLE loaded with NSLinkModule() in + * TclpDlopen() above. * *---------------------------------------------------------------------- */ void TclpUnloadFile(loadHandle) - Tcl_LoadHandle loadHandle; /* loadHandle returned by a previous call - * to TclpDlopen(). The loadHandle is - * a token that represents the loaded - * file. */ + Tcl_LoadHandle loadHandle; /* loadHandle returned by a previous call to + * TclpDlopen(). The loadHandle is a token + * that represents the loaded file. */ { Tcl_DyldLoadHandle *dyldLoadHandle = (Tcl_DyldLoadHandle *) loadHandle; - Tcl_DyldModuleHandle *dyldModuleHandle = dyldLoadHandle->firstModuleHandle; - void *ptr; - - while (dyldModuleHandle) { - NSUnLinkModule(dyldModuleHandle->module, - NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES); - ptr = dyldModuleHandle; - dyldModuleHandle = dyldModuleHandle->nextModuleHandle; + Tcl_DyldModuleHandle *modulePtr = dyldLoadHandle->modulePtr; + + while (modulePtr != NULL) { + void *ptr; + + NSUnLinkModule(modulePtr->module, + NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES); + ptr = modulePtr; + modulePtr = modulePtr->nextPtr; ckfree(ptr); } ckfree((char*) dyldLoadHandle); @@ -319,27 +340,27 @@ TclpUnloadFile(loadHandle) * * TclGuessPackageName -- * - * If the "load" command is invoked without providing a package - * name, this procedure is invoked to try to figure it out. + * If the "load" command is invoked without providing a package name, + * this procedure is invoked to try to figure it out. * * Results: - * Always returns 0 to indicate that we couldn't figure out a - * package name; generic code will then try to guess the package - * from the file name. A return value of 1 would have meant that - * we figured out the package name and put it in bufPtr. + * Always returns 0 to indicate that we couldn't figure out a package + * name; generic code will then try to guess the package from the file + * name. A return value of 1 would have meant that we figured out the + * package name and put it in bufPtr. * * Side effects: - * None. + * None. * *---------------------------------------------------------------------- */ int TclGuessPackageName(fileName, bufPtr) - CONST char *fileName; /* Name of file containing package (already - * translated to local form if needed). */ - Tcl_DString *bufPtr; /* Initialized empty dstring. Append - * package name to this if possible. */ + CONST char *fileName; /* Name of file containing package (already + * translated to local form if needed). */ + Tcl_DString *bufPtr; /* Initialized empty dstring. Append package + * name to this if possible. */ { return 0; } @@ -353,10 +374,10 @@ TclGuessPackageName(fileName, bufPtr) * Allocate a buffer that can be used with TclpLoadMemory() below. * * Results: - * Pointer to allocated buffer or NULL if an error occurs. + * Pointer to allocated buffer or NULL if an error occurs. * * Side effects: - * Buffer is allocated. + * Buffer is allocated. * *---------------------------------------------------------------------- */ @@ -364,30 +385,34 @@ TclGuessPackageName(fileName, bufPtr) void* TclpLoadMemoryGetBuffer(interp, size) Tcl_Interp *interp; /* Used for error reporting. */ - int size; /* Size of desired buffer */ + int size; /* Size of desired buffer. */ { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - void * buffer = NULL; - + void *buffer = NULL; + if (!tsdPtr->haveLoadMemory) { - /* NSCreateObjectFileImageFromMemory is available but always - * fails prior to Darwin 7 */ - struct utsname name; - if (!uname(&name)) { - long release = strtol(name.release, NULL, 10); - tsdPtr->haveLoadMemory = (release >= 7) ? 1 : -1; - } + /* + * NSCreateObjectFileImageFromMemory is available but always fails + * prior to Darwin 7. + */ + + struct utsname name; + + if (!uname(&name)) { + long release = strtol(name.release, NULL, 10); + tsdPtr->haveLoadMemory = (release >= 7) ? 1 : -1; + } } if (tsdPtr->haveLoadMemory > 0) { - /* We must allocate the buffer using vm_allocate, because - * NSCreateObjectFileImageFromMemory will dispose of it - * using vm_deallocate. - */ - int err = vm_allocate(mach_task_self(), - (vm_address_t*)&buffer, size, 1); - if (err) { - buffer = NULL; - } + /* + * We must allocate the buffer using vm_allocate, because + * NSCreateObjectFileImageFromMemory will dispose of it using + * vm_deallocate. + */ + + if (vm_allocate(mach_task_self(), (vm_address_t *) &buffer, size, 1)) { + buffer = NULL; + } } return buffer; } @@ -397,15 +422,15 @@ TclpLoadMemoryGetBuffer(interp, size) * * TclpLoadMemory -- * - * Dynamically loads binary code file from memory and returns - * a handle to the new code. + * Dynamically loads binary code file from memory and returns a handle to + * the new code. * * Results: - * A standard Tcl completion code. If an error occurs, an error - * message is left in the interpreter's result. + * A standard Tcl completion code. If an error occurs, an error message + * is left in the interpreter's result. * * Side effects: - * New code is loaded from memory. + * New code is loaded from memory. * *---------------------------------------------------------------------- */ @@ -415,60 +440,103 @@ TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) Tcl_Interp *interp; /* Used for error reporting. */ void *buffer; /* Buffer containing the desired code * (allocated with TclpLoadMemoryGetBuffer). */ - int size; /* Allocation size of buffer. */ - int codeSize; /* Size of code data read into buffer or -1 if - * an error occurred and the buffer should - * just be freed. */ + int size; /* Allocation size of buffer. */ + int codeSize; /* Size of code data read into buffer or -1 if + * an error occurred and the buffer should + * just be freed. */ Tcl_LoadHandle *loadHandle; /* Filled with token for dynamically loaded - * file which will be passed back to + * file which will be passed back to * (*unloadProcPtr)() to unload the file. */ - Tcl_FSUnloadFileProc **unloadProcPtr; + Tcl_FSUnloadFileProc **unloadProcPtr; /* Filled with address of Tcl_FSUnloadFileProc - * function which should be used for - * this file. */ + * function which should be used for this + * file. */ { Tcl_DyldLoadHandle *dyldLoadHandle; - NSObjectFileImage dyld_ofi = NULL; - Tcl_DyldModuleHandle *dyldModuleHandle; - CONST char *ofi_msg = NULL; + NSObjectFileImage dyldObjFileImage = NULL; + Tcl_DyldModuleHandle *modulePtr; + NSModule module; + CONST char *objFileImageErrMsg = NULL; + + /* + * Try to create an object file image that we can load from. + */ if (codeSize >= 0) { - NSObjectFileImageReturnCode err; - err = NSCreateObjectFileImageFromMemory(buffer, codeSize, &dyld_ofi); - ofi_msg = DyldOFIErrorMsg(err); + NSObjectFileImageReturnCode err = NSObjectFileImageSuccess; + +#ifndef __LP64__ + struct mach_header *mh = buffer; + if (codeSize < sizeof(struct mach_header) || mh->magic != MH_MAGIC +#else + struct mach_header_64 *mh = buffer; + if (codeSize < sizeof(struct mach_header_64) || mh->magic != MH_MAGIC_64 +#endif + || mh->filetype != MH_BUNDLE) { + err = NSObjectFileImageInappropriateFile; + } + if (err == NSObjectFileImageSuccess) { + err = NSCreateObjectFileImageFromMemory(buffer, codeSize, + &dyldObjFileImage); + } + objFileImageErrMsg = DyldOFIErrorMsg(err); } - if (!dyld_ofi) { - vm_deallocate(mach_task_self(), (vm_address_t) buffer, size); - if (ofi_msg) { - Tcl_AppendResult(interp, "NSCreateObjectFileImageFromFile() error: ", - ofi_msg, (char *) NULL); - } - return TCL_ERROR; - } else { - NSModule module; - module = NSLinkModule(dyld_ofi, "[Memory Based Bundle]", - NSLINKMODULE_OPTION_BINDNOW |NSLINKMODULE_OPTION_RETURN_ON_ERROR); - NSDestroyObjectFileImage(dyld_ofi); - if (module) { - dyldModuleHandle = (Tcl_DyldModuleHandle *) - ckalloc(sizeof(Tcl_DyldModuleHandle)); - if (!dyldModuleHandle) return TCL_ERROR; - dyldModuleHandle->module = module; - dyldModuleHandle->nextModuleHandle = NULL; - } else { - NSLinkEditErrors editError; - CONST char *name, *msg; - NSLinkEditError(&editError, &errno, &name, &msg); - Tcl_AppendResult(interp, msg, (char *) NULL); - return TCL_ERROR; - } + + /* + * If it went wrong (or we were asked to just deallocate), get rid of the + * memory block and create an error message. + */ + + if (dyldObjFileImage == NULL) { + vm_deallocate(mach_task_self(), (vm_address_t) buffer, size); + if (objFileImageErrMsg != NULL) { + Tcl_AppendResult(interp, + "NSCreateObjectFileImageFromFile() error: ", + objFileImageErrMsg, (char *) NULL); + } + return TCL_ERROR; } - dyldLoadHandle = (Tcl_DyldLoadHandle *) ckalloc(sizeof(Tcl_DyldLoadHandle)); - if (!dyldLoadHandle) return TCL_ERROR; - dyldLoadHandle->dyld_lib = NULL; - dyldLoadHandle->firstModuleHandle = dyldModuleHandle; + + /* + * Extract the module we want from the image of the object file. + */ + + module = NSLinkModule(dyldObjFileImage, "[Memory Based Bundle]", + NSLINKMODULE_OPTION_BINDNOW | NSLINKMODULE_OPTION_RETURN_ON_ERROR); + NSDestroyObjectFileImage(dyldObjFileImage); + + if (!module) { + NSLinkEditErrors editError; + int errorNumber; + CONST char *name, *msg; + + NSLinkEditError(&editError, &errorNumber, &name, &msg); + Tcl_AppendResult(interp, msg, (char *) NULL); + return TCL_ERROR; + } + + /* + * Stash the module reference within the load handle we create and return. + */ + + modulePtr = (Tcl_DyldModuleHandle *) ckalloc(sizeof(Tcl_DyldModuleHandle)); + modulePtr->module = module; + modulePtr->nextPtr = NULL; + + dyldLoadHandle = (Tcl_DyldLoadHandle *) + ckalloc(sizeof(Tcl_DyldLoadHandle)); + dyldLoadHandle->dyldLibHeader = NULL; + dyldLoadHandle->modulePtr = modulePtr; *loadHandle = (Tcl_LoadHandle) dyldLoadHandle; *unloadProcPtr = &TclpUnloadFile; return TCL_OK; } #endif + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ -- cgit v0.12 From 3a01c00096553941d5e1f1cc1e2048bb9b119376 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 3 Aug 2005 22:23:16 +0000 Subject: * generic/tclCompExpr.c: Untangled some dependencies in the * generic/tclEvent.c: order of finalization routines. * generic/tclInt.h: [Bug 1251399] * generic/tclObj.c: --- ChangeLog | 7 +++++++ generic/tclCompExpr.c | 6 ++---- generic/tclEvent.c | 38 +++++++++++++++++++++++++++----------- generic/tclInt.h | 4 ++-- generic/tclObj.c | 22 ++++++++++++---------- 5 files changed, 50 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index f96fcbc..d54268a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-08-03 Don Porter + + * generic/tclCompExpr.c: Untangled some dependencies in the + * generic/tclEvent.c: order of finalization routines. + * generic/tclInt.h: [Bug 1251399] + * generic/tclObj.c: + 2005-07-30 Daniel Steffen * unix/configure, unix/tcl.m4: revert 2005-07-28 change. diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index 1465f69..68e1e11 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompExpr.c,v 1.13 2003/02/16 01:36:32 msofer Exp $ + * RCS: @(#) $Id: tclCompExpr.c,v 1.13.2.1 2005/08/03 22:23:35 dgp Exp $ */ #include "tclInt.h" @@ -286,9 +286,7 @@ TclCompileExpr(interp, script, numBytes, envPtr) * TclFinalizeCompilation -- * * Clean up the compilation environment so it can later be - * properly reinitialized. This procedure is called by - * TclFinalizeCompExecEnv() in tclObj.c, which in turn is called - * by Tcl_Finalize(). + * properly reinitialized. This procedure is called by Tcl_Finalize(). * * Results: * None. diff --git a/generic/tclEvent.c b/generic/tclEvent.c index acabcc0..c8944f7 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.11 2005/06/24 18:21:39 kennykb Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.12 2005/08/03 22:23:42 dgp Exp $ */ #include "tclInt.h" @@ -833,15 +833,29 @@ Tcl_Finalize() * order dependencies. */ - TclFinalizeCompExecEnv(); + TclFinalizeCompilation(); + TclFinalizeExecution(); TclFinalizeEnvironment(); /* * Finalizing the filesystem must come after anything which * might conceivably interact with the 'Tcl_FS' API. */ + TclFinalizeFilesystem(); + /* + * Undo all the Tcl_ObjType registrations, and reset the master list + * of free Tcl_Obj's. After this returns, no more Tcl_Obj's should + * be allocated or freed. + * + * Note in particular that TclFinalizeObjects() must follow + * TclFinalizeFilesystem() because TclFinalizeFilesystem free's + * the Tcl_Obj that holds the path of the current working directory. + */ + + TclFinalizeObjects(); + /* * We must be sure the encoding finalization doesn't need * to examine the filesystem in any way. Since it only @@ -870,13 +884,6 @@ Tcl_Finalize() Tcl_SetPanicProc(NULL); /* - * Free synchronization objects. There really should only be one - * thread alive at this moment. - */ - - TclFinalizeSynchronization(); - - /* * We defer unloading of packages until very late * to avoid memory access issues. Both exit callbacks and * synchronization variables may be stored in packages. @@ -910,14 +917,23 @@ Tcl_Finalize() } #endif + TclFinalizePreserve(); + /* - * There shouldn't be any malloc'ed memory after this. + * Free synchronization objects. There really should only be one + * thread alive at this moment. */ - TclFinalizePreserve(); + + TclFinalizeSynchronization(); + #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC) && !defined(TCL_MEM_DEBUG) && !defined(PURIFY) TclFinalizeThreadAlloc(); #endif + /* + * At this point, there should no longer be any ckalloc'ed memory. + */ + TclFinalizeMemorySubsystem(); inFinalize = 0; } diff --git a/generic/tclInt.h b/generic/tclInt.h index d3f1ce1..2538772 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.16 2005/07/05 21:18:23 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.17 2005/08/03 22:23:42 dgp Exp $ */ #ifndef _TCLINT @@ -1653,7 +1653,6 @@ EXTERN int TclFileRenameCmd _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])) ; EXTERN void TclFinalizeAllocSubsystem _ANSI_ARGS_((void)); EXTERN void TclFinalizeAsync _ANSI_ARGS_((void)); -EXTERN void TclFinalizeCompExecEnv _ANSI_ARGS_((void)); EXTERN void TclFinalizeCompilation _ANSI_ARGS_((void)); EXTERN void TclFinalizeEncodingSubsystem _ANSI_ARGS_((void)); EXTERN void TclFinalizeEnvironment _ANSI_ARGS_((void)); @@ -1665,6 +1664,7 @@ EXTERN void TclFinalizeLoad _ANSI_ARGS_((void)); EXTERN void TclFinalizeLock _ANSI_ARGS_((void)); EXTERN void TclFinalizeMemorySubsystem _ANSI_ARGS_((void)); EXTERN void TclFinalizeNotifier _ANSI_ARGS_((void)); +EXTERN void TclFinalizeObjects _ANSI_ARGS_((void)); EXTERN void TclFinalizePreserve _ANSI_ARGS_((void)); EXTERN void TclFinalizeSynchronization _ANSI_ARGS_((void)); EXTERN void TclFinalizeThreadData _ANSI_ARGS_((void)); diff --git a/generic/tclObj.c b/generic/tclObj.c index 3cf3760..494b80e 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.10 2005/04/20 16:06:17 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.11 2005/08/03 22:23:43 dgp Exp $ */ #include "tclInt.h" @@ -272,23 +272,22 @@ TclInitObjSubsystem() /* *---------------------------------------------------------------------- * - * TclFinalizeCompExecEnv -- + * TclFinalizeObjects -- * - * This procedure is called by Tcl_Finalize to clean up the Tcl - * compilation and execution environment so it can later be properly - * reinitialized. + * This procedure is called by Tcl_Finalize to clean up all + * registered Tcl_ObjType's and to reset the tclFreeObjList. * * Results: * None. * * Side effects: - * Cleans up the compilation and execution environment + * None. * *---------------------------------------------------------------------- */ void -TclFinalizeCompExecEnv() +TclFinalizeObjects() { Tcl_MutexLock(&tableMutex); if (typeTableInitialized) { @@ -296,12 +295,15 @@ TclFinalizeCompExecEnv() typeTableInitialized = 0; } Tcl_MutexUnlock(&tableMutex); + + /* + * All we do here is reset the head pointer of the linked list of + * free Tcl_Obj's to NULL; the memory finalization will take care + * of releasing memory for us. + */ Tcl_MutexLock(&tclObjMutex); tclFreeObjList = NULL; Tcl_MutexUnlock(&tclObjMutex); - - TclFinalizeCompilation(); - TclFinalizeExecution(); } /* -- cgit v0.12 From de38cb44855bf216eaabff353f78edbd0bc7a7b7 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 4 Aug 2005 15:55:29 +0000 Subject: * generic/tclObj.c: Simplified routines that manage the typeTable. --- ChangeLog | 4 ++++ generic/tclObj.c | 61 +++++++++++++++++++++++--------------------------------- 2 files changed, 29 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index d54268a..6eacdf0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-08-04 Don Porter + + * generic/tclObj.c: Simplified routines that manage the typeTable. + 2005-08-03 Don Porter * generic/tclCompExpr.c: Untangled some dependencies in the diff --git a/generic/tclObj.c b/generic/tclObj.c index 494b80e..edc4fd8 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.11 2005/08/03 22:23:43 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.12 2005/08/04 15:55:30 dgp Exp $ */ #include "tclInt.h" @@ -331,26 +331,10 @@ Tcl_RegisterObjType(typePtr) * storage must be statically * allocated (must live forever). */ { - register Tcl_HashEntry *hPtr; int new; - - /* - * If there's already an object type with the given name, remove it. - */ Tcl_MutexLock(&tableMutex); - hPtr = Tcl_FindHashEntry(&typeTable, typePtr->name); - if (hPtr != (Tcl_HashEntry *) NULL) { - Tcl_DeleteHashEntry(hPtr); - } - - /* - * Now insert the new object type. - */ - - hPtr = Tcl_CreateHashEntry(&typeTable, typePtr->name, &new); - if (new) { - Tcl_SetHashValue(hPtr, typePtr); - } + Tcl_SetHashValue( + Tcl_CreateHashEntry(&typeTable, typePtr->name, &new), typePtr); Tcl_MutexUnlock(&tableMutex); } @@ -388,23 +372,27 @@ Tcl_AppendAllObjTypes(interp, objPtr) { register Tcl_HashEntry *hPtr; Tcl_HashSearch search; - Tcl_ObjType *typePtr; - int result; - + int result, objc; + Tcl_Obj **objv; + /* - * This code assumes that types names do not contain embedded NULLs. + * Get the test for a valid list out of the way first. + */ + + if (Tcl_ListObjGetElements(interp, objPtr, &objc, &objv) != TCL_OK) { + return TCL_ERROR; + } + + /* + * Type names are NUL-terminated, not counted strings. + * This code relies on that. */ Tcl_MutexLock(&tableMutex); for (hPtr = Tcl_FirstHashEntry(&typeTable, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { - typePtr = (Tcl_ObjType *) Tcl_GetHashValue(hPtr); - result = Tcl_ListObjAppendElement(interp, objPtr, - Tcl_NewStringObj(typePtr->name, -1)); - if (result == TCL_ERROR) { - Tcl_MutexUnlock(&tableMutex); - return result; - } + Tcl_ListObjAppendElement(NULL, objPtr, + Tcl_NewStringObj(Tcl_GetHashKey(&typeTable, hPtr), -1)); } Tcl_MutexUnlock(&tableMutex); return TCL_OK; @@ -433,17 +421,15 @@ Tcl_GetObjType(typeName) CONST char *typeName; /* Name of Tcl object type to look up. */ { register Tcl_HashEntry *hPtr; - Tcl_ObjType *typePtr; + Tcl_ObjType *typePtr = NULL; Tcl_MutexLock(&tableMutex); hPtr = Tcl_FindHashEntry(&typeTable, typeName); if (hPtr != (Tcl_HashEntry *) NULL) { typePtr = (Tcl_ObjType *) Tcl_GetHashValue(hPtr); - Tcl_MutexUnlock(&tableMutex); - return typePtr; } Tcl_MutexUnlock(&tableMutex); - return NULL; + return typePtr; } /* @@ -631,7 +617,10 @@ TclAllocateFreeObjects() * This has been noted by Purify to be a potential leak. The problem is * that Tcl, when not TCL_MEM_DEBUG compiled, keeps around all allocated * Tcl_Obj's, pointed to by tclFreeObjList, when freed instead of - * actually freeing the memory. These never do get freed properly. + * actually freeing the memory. TclFinalizeObjects() does not ckfree() + * this memory, but leaves it to Tcl's memory subsystem finalziation to + * release it. Purify apparently can't figure that out, and fires a + * false alarm. */ basePtr = (char *) ckalloc(bytesToAlloc); @@ -889,7 +878,7 @@ Tcl_InvalidateStringRep(objPtr) * Tcl_NewBooleanObj -- * * This procedure is normally called when not debugging: i.e., when - * TCL_MEM_DEBUG is not defined. It creates a new boolean object and + * TCL_MEM_DEBUG is not defined. It creates a new Tcl_Obj and * initializes it from the argument boolean value. A nonzero * "boolValue" is coerced to 1. * -- cgit v0.12 From 2af5fccf013d0106280ab267b33a07945bcfb272 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 4 Aug 2005 19:54:29 +0000 Subject: silence compiler warning --- generic/tclObj.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclObj.c b/generic/tclObj.c index edc4fd8..7ae0b5e 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.12 2005/08/04 15:55:30 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.13 2005/08/04 19:54:29 dgp Exp $ */ #include "tclInt.h" @@ -372,7 +372,7 @@ Tcl_AppendAllObjTypes(interp, objPtr) { register Tcl_HashEntry *hPtr; Tcl_HashSearch search; - int result, objc; + int objc; Tcl_Obj **objv; /* -- cgit v0.12 From 67c0945cef73efba280dda5e10e75f8f740ca1ae Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 5 Aug 2005 19:19:01 +0000 Subject: fix abs(MIN_INT) [Bug 1241572] --- ChangeLog | 7 +++++++ generic/tclExecute.c | 18 ++++++++++++++---- tests/expr.test | 8 +++++++- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6eacdf0..935d45d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-08-05 Kevin Kenny + + * generic/tclExecute.c (TclExecuteByteCode): Fixed a corner case + * tests/expr.test (expr-38.1): where applying abs to + MIN_INT failed to promote the result to a wide integer. + [Bug #1241572] + 2005-08-04 Don Porter * generic/tclObj.c: Simplified routines that manage the typeTable. diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 2809466..82aaf62 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.12 2005/04/05 16:40:11 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.13 2005/08/05 19:19:11 kennykb Exp $ */ #include "tclInt.h" @@ -5077,13 +5077,23 @@ ExprAbsFunc(interp, eePtr, clientData) if (i < 0) { iResult = -i; if (iResult < 0) { - Tcl_ResetResult(interp); - Tcl_AppendToObj(Tcl_GetObjResult(interp), - "integer value too large to represent", -1); +#ifdef TCL_WIDE_INT_IS_LONG + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "integer value too large to represent", -1)); Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", "integer value too large to represent", (char *) NULL); result = TCL_ERROR; goto done; +#else + /* + * Special case: abs(MIN_INT) must promote to wide. + */ + + PUSH_OBJECT( Tcl_NewWideIntObj(-(Tcl_WideInt) i) ); + result = TCL_OK; + goto done; +#endif + } } else { iResult = i; diff --git a/tests/expr.test b/tests/expr.test index 6ba6732..b3707b8 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.4 2004/11/02 15:46:35 dkf Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.5 2005/08/05 19:19:14 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -21,6 +21,7 @@ testConstraint registeredMathFuncs [expr { ([catch {expr T1()} msg] != 1) || ($msg ne {unknown math function "T1"}) }] +testConstraint wideIs64bit [expr {(0x80000000 > 0) && (0x8000000000000000 < 0)}] # procedures used below proc put_hello_char {c} { @@ -822,6 +823,11 @@ test expr-24.7 {expr edge cases; shifting} {expr wide(5)<<31} 10737418240 test expr-24.8 {expr edge cases; shifting} nonPortable {expr wide(5)<<63} -9223372036854775808 test expr-24.9 {expr edge cases; shifting} {expr 5>>32} 0 +test expr-38.1 {abs of smallest 32-bit integer [Bug 1241572]} {wideIs64bit} { + expr {abs(int(-2147483648))} +} 2147483648 + + # cleanup if {[info exists a]} { unset a -- cgit v0.12 From ae439fa7370d07b215450d9016c40b4196bb0b95 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 5 Aug 2005 20:48:18 +0000 Subject: Solaris mis-names the cp1251 encoding. --- ChangeLog | 6 ++++++ unix/tclUnixInit.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 935d45d..27ddb3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-08-05 Donal K. Fellows + + * unix/tclUnixInit.c (localeTable): Solaris uses a non-standard + name for the cp1251 charset. Thanks to Victor Wagner for reporting + this. [Bug 1252475] + 2005-08-05 Kevin Kenny * generic/tclExecute.c (TclExecuteByteCode): Fixed a corner case diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index a47e763..e63160d 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.8 2005/05/24 04:20:12 das Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.9 2005/08/05 20:48:19 dkf Exp $ */ #if defined(HAVE_COREFOUNDATION) @@ -81,6 +81,7 @@ typedef struct LocaleTable { static CONST LocaleTable localeTable[] = { #ifdef HAVE_LANGINFO {"gb2312-1980", "gb2312"}, + {"ansi-1251", "cp1251"}, /* Solaris gets this wrong. */ #ifdef __hpux {"SJIS", "shiftjis"}, {"eucjp", "euc-jp"}, -- cgit v0.12 From 2eb6a95d75570627224f1fd4981d636cf0d7bed9 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 16 Aug 2005 15:23:56 +0000 Subject: backport of 2005-08-10 fix to tclEvent.c --- ChangeLog | 7 +++++++ generic/tclEvent.c | 38 +++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 27ddb3f..5a18b04 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-08-16 Kevin Kenny + + * generic/tclEvent.c (Tcl_Finalize): Pushed Tcl_FinalizeLoad and + Tcl_ResetFilesystem down after Tcl_FinalizeThreadAlloc because + unloading DLLs can't happen while they still own TSD keys. + (This is a backport of changes made in the HEAD on 2005-08-10.) + 2005-08-05 Donal K. Fellows * unix/tclUnixInit.c (localeTable): Solaris uses a non-standard diff --git a/generic/tclEvent.c b/generic/tclEvent.c index c8944f7..ba065eb 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.12 2005/08/03 22:23:42 dgp Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.13 2005/08/16 15:23:56 kennykb Exp $ */ #include "tclInt.h" @@ -884,24 +884,6 @@ Tcl_Finalize() Tcl_SetPanicProc(NULL); /* - * We defer unloading of packages until very late - * to avoid memory access issues. Both exit callbacks and - * synchronization variables may be stored in packages. - * - * Note that TclFinalizeLoad unloads packages in the reverse - * of the order they were loaded in (i.e. last to be loaded - * is the first to be unloaded). This can be important for - * correct unloading when dependencies exist. - * - * Once load has been finalized, we will have deleted any - * temporary copies of shared libraries and can therefore - * reset the filesystem to its original state. - */ - - TclFinalizeLoad(); - TclResetFilesystem(); - - /* * There have been several bugs in the past that cause * exit handlers to be established during Tcl_Finalize * processing. Such exit handlers leave malloc'ed memory, @@ -931,6 +913,24 @@ Tcl_Finalize() #endif /* + * We defer unloading of packages until very late + * to avoid memory access issues. Both exit callbacks and + * synchronization variables may be stored in packages. + * + * Note that TclFinalizeLoad unloads packages in the reverse + * of the order they were loaded in (i.e. last to be loaded + * is the first to be unloaded). This can be important for + * correct unloading when dependencies exist. + * + * Once load has been finalized, we will have deleted any + * temporary copies of shared libraries and can therefore + * reset the filesystem to its original state. + */ + + TclFinalizeLoad(); + TclResetFilesystem(); + + /* * At this point, there should no longer be any ckalloc'ed memory. */ -- cgit v0.12 From b80a4cf9a7f8276fabaf13a2c74ea777ed30031a Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 17 Aug 2005 17:46:36 +0000 Subject: * generic/tclFCmd.c (TclFileMakeDirsCmd): fix to race condition in file mkdir (backport from head 2005-06-13) [Bug 1217375] --- ChangeLog | 5 +++++ generic/tclFCmd.c | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5a18b04..d311abd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-08-17 Jeff Hobbs + + * generic/tclFCmd.c (TclFileMakeDirsCmd): fix to race condition in + file mkdir (backport from head 2005-06-13) [Bug 1217375] + 2005-08-16 Kevin Kenny * generic/tclEvent.c (Tcl_Finalize): Pushed Tcl_FinalizeLoad and diff --git a/generic/tclFCmd.c b/generic/tclFCmd.c index a105f6e..0f4d1b0 100644 --- a/generic/tclFCmd.c +++ b/generic/tclFCmd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFCmd.c,v 1.20.2.1 2003/06/23 10:21:16 vincentdarley Exp $ + * RCS: @(#) $Id: tclFCmd.c,v 1.20.2.2 2005/08/17 17:46:36 hobbs Exp $ */ #include "tclInt.h" @@ -261,19 +261,45 @@ TclFileMakeDirsCmd(interp, objc, objv) errfile = target; goto done; } - } else if ((errno != ENOENT) - || (Tcl_FSCreateDirectory(target) != TCL_OK)) { + } else if (errno != ENOENT) { + /* + * If Tcl_FSStat() failed and the error is anything + * other than non-existence of the target, throw the + * error. + */ errfile = target; goto done; + } else if (Tcl_FSCreateDirectory(target) != TCL_OK) { + /* + * Create might have failed because of being in a race + * condition with another process trying to create the + * same subdirectory. + */ + if (errno == EEXIST) { + if ((Tcl_FSStat(target, &statBuf) == 0) + && S_ISDIR(statBuf.st_mode)) { + /* + * It is a directory that wasn't there before, + * so keep going without error. + */ + Tcl_ResetResult(interp); + } else { + errfile = target; + goto done; + } + } else { + errfile = target; + goto done; + } } - /* Forget about this sub-path */ + /* Forget about this sub-path */ Tcl_DecrRefCount(target); target = NULL; } Tcl_DecrRefCount(split); split = NULL; } - + done: if (errfile != NULL) { Tcl_AppendResult(interp, "can't create directory \"", -- cgit v0.12 From d9a0eba67b5c86ae91a6dfa013879646fc6d3e8f Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 25 Aug 2005 22:27:08 +0000 Subject: Backport of fix for [Bug 1267380] --- ChangeLog | 6 ++++++ generic/tclListObj.c | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d311abd..5ed5e36 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-08-25 Donal K. Fellows + + * generic/tclListObj.c (UpdateStringOfList): Stop uncontrolled and + unsafe crashes from happening when working with very large string + representations. [Bug 1267380] + 2005-08-17 Jeff Hobbs * generic/tclFCmd.c (TclFileMakeDirsCmd): fix to race condition in diff --git a/generic/tclListObj.c b/generic/tclListObj.c index 446a67e..bdc2bc0 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclListObj.c,v 1.13.4.1 2004/11/11 01:18:07 das Exp $ + * RCS: @(#) $Id: tclListObj.c,v 1.13.4.2 2005/08/25 22:27:08 dkf Exp $ */ #include "tclInt.h" @@ -1623,6 +1623,12 @@ UpdateStringOfList(listPtr) elem = Tcl_GetStringFromObj(listRepPtr->elements[i], &length); listPtr->length += Tcl_ScanCountedElement(elem, length, &flagPtr[i]) + 1; + /* + * Check for continued sanity. [Bug 1267380] + */ + if (listPtr->length < 1) { + Tcl_Panic("string representation size exceeds sane bounds"); + } } /* -- cgit v0.12 From 4961bc02318255d76a3cdfee3c8ae9fe8f6465ed Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 29 Aug 2005 16:37:42 +0000 Subject: Bug 1275043 --- ChangeLog | 8 ++++++ generic/tclExecute.c | 33 +++++++++++++++++------- tests/expr.test | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 103 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5ed5e36..7127890 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-08-29 Kevin Kenny + + * generic/tclBasic.c (ExprMathFunc): Restored "round away from + * tests/expr.test (expr-39.*): zero" behaviour to the + "round" function. Added + test cases for the behavior, including the awkward case of a + number whose fractional part is 1/2-1/2ulp. [Bug 1275043] + 2005-08-25 Donal K. Fellows * generic/tclListObj.c (UpdateStringOfList): Stop uncontrolled and diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 82aaf62..5161b17 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.13 2005/08/05 19:19:11 kennykb Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.14 2005/08/29 16:37:42 kennykb Exp $ */ #include "tclInt.h" @@ -5462,7 +5462,7 @@ ExprRoundFunc(interp, eePtr, clientData) Tcl_Obj **stackPtr; /* Cached evaluation stack base pointer. */ register int stackTop; /* Cached top index of evaluation stack. */ Tcl_Obj *valuePtr, *resPtr; - double d; + double d, f, i; int result; /* @@ -5488,22 +5488,35 @@ ExprRoundFunc(interp, eePtr, clientData) result = TCL_OK; resPtr = valuePtr; } else { + + /* + * Round the number to the nearest integer. I'd like to use round(), + * but it's C99 (or BSD), and not yet universal. + */ + d = valuePtr->internalRep.doubleValue; + f = modf(d, &i); if (d < 0.0) { - if (d <= Tcl_WideAsDouble(LLONG_MIN)-0.5) { + if (f <= -0.5) { + i += -1.0; + } + if (i <= Tcl_WideAsDouble(LLONG_MIN)) { goto tooLarge; - } else if (d <= (((double) (long) LONG_MIN) - 0.5)) { - resPtr = Tcl_NewWideIntObj(Tcl_DoubleAsWide(d - 0.5)); + } else if (d <= (double) LONG_MIN) { + resPtr = Tcl_NewWideIntObj(Tcl_DoubleAsWide(i)); } else { - resPtr = Tcl_NewLongObj((long) (d - 0.5)); + resPtr = Tcl_NewLongObj((long) i); } } else { - if (d >= Tcl_WideAsDouble(LLONG_MAX)+0.5) { + if (f >= 0.5) { + i += 1.0; + } + if (i >= Tcl_WideAsDouble(LLONG_MAX)) { goto tooLarge; - } else if (d >= (((double) LONG_MAX + 0.5))) { - resPtr = Tcl_NewWideIntObj(Tcl_DoubleAsWide(d + 0.5)); + } else if (i >= (double) LONG_MAX) { + resPtr = Tcl_NewWideIntObj(Tcl_DoubleAsWide(i)); } else { - resPtr = Tcl_NewLongObj((long) (d + 0.5)); + resPtr = Tcl_NewLongObj((long) i); } } } diff --git a/tests/expr.test b/tests/expr.test index b3707b8..af9b55c 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.5 2005/08/05 19:19:14 kennykb Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.6 2005/08/29 16:37:45 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -827,6 +827,77 @@ test expr-38.1 {abs of smallest 32-bit integer [Bug 1241572]} {wideIs64bit} { expr {abs(int(-2147483648))} } 2147483648 +test expr-39.1 {round() rounds to +-infinity} { + expr round(0.5) +} 1 +test expr-39.2 {round() rounds to +-infinity} { + expr round(1.5) +} 2 +test expr-39.3 {round() rounds to +-infinity} { + expr round(-0.5) +} -1 +test expr-39.4 {round() rounds to +-infinity} { + expr round(-1.5) +} -2 +test expr-39.5 {round() overflow} { + list [catch {expr round(9.2233720368547758e+018)} result] $result +} {1 {integer value too large to represent}} +test expr-39.6 {round() overflow} { + list [catch {expr round(-9.2233720368547758e+018)} result] $result +} {1 {integer value too large to represent}} +test expr-39.7 {round() bad value} { + set x trash + list [catch {expr {round($x)}} result] $result +} {1 {argument to math function didn't have numeric value}} +test expr-39.8 {round() already an integer} { + set x 123456789012 + incr x + expr round($x) +} 123456789013 +test expr-39.9 {round() boundary case - 1/2 - 1 ulp} { + set x 0.25 + set bit 0.125 + while 1 { + set newx [expr {$x + $bit}] + if { $newx == $x || $newx == 0.5 } break + set x $newx + set bit [expr { $bit / 2.0 }] + } + expr {round($x)} +} 0 +test expr-39.10 {round() boundary case - 1/2 + 1 ulp} { + set x 0.75 + set bit 0.125 + while 1 { + set newx [expr { $x - $bit }] + if { $newx == $x || $newx == 0.5 } break + set x $newx + set bit [expr { $bit / 2.0 }] + } + expr {round($x)} +} 1 +test expr-39.11 {round() boundary case - -1/2 - 1 ulp} { + set x -0.75 + set bit 0.125 + while 1 { + set newx [expr { $x + $bit }] + if { $newx == $x || $newx == -0.5 } break + set x $newx + set bit [expr { $bit / 2.0 }] + } + expr {round($x)} +} -1 +test expr-39.10 {round() boundary case - -1/2 + 1 ulp} { + set x -0.25 + set bit 0.125 + while 1 { + set newx [expr { $x - $bit }] + if { $newx == $x || $newx == -0.5 } break + set x $newx + set bit [expr { $bit / 2.0 }] + } + expr {round($x)} +} 0 # cleanup if {[info exists a]} { -- cgit v0.12 From b28ca78703b600e8c1887fa87bb47eaae1ad5afc Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 29 Aug 2005 16:38:36 +0000 Subject: fix test case numbering --- tests/expr.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/expr.test b/tests/expr.test index af9b55c..ddbbc1f 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.6 2005/08/29 16:37:45 kennykb Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.7 2005/08/29 16:38:36 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -887,7 +887,7 @@ test expr-39.11 {round() boundary case - -1/2 - 1 ulp} { } expr {round($x)} } -1 -test expr-39.10 {round() boundary case - -1/2 + 1 ulp} { +test expr-39.12 {round() boundary case - -1/2 + 1 ulp} { set x -0.25 set bit 0.125 while 1 { -- cgit v0.12 From f1fab031095240c82752590963ffa7bbeca994fa Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 29 Aug 2005 17:56:22 +0000 Subject: renumber expr-39.* to expr-46.* --- ChangeLog | 2 +- tests/expr.test | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7127890..b2498d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ 2005-08-29 Kevin Kenny * generic/tclBasic.c (ExprMathFunc): Restored "round away from - * tests/expr.test (expr-39.*): zero" behaviour to the + * tests/expr.test (expr-46.*): zero" behaviour to the "round" function. Added test cases for the behavior, including the awkward case of a number whose fractional part is 1/2-1/2ulp. [Bug 1275043] diff --git a/tests/expr.test b/tests/expr.test index ddbbc1f..1928a84 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.7 2005/08/29 16:38:36 kennykb Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.8 2005/08/29 17:56:22 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -827,34 +827,34 @@ test expr-38.1 {abs of smallest 32-bit integer [Bug 1241572]} {wideIs64bit} { expr {abs(int(-2147483648))} } 2147483648 -test expr-39.1 {round() rounds to +-infinity} { +test expr-46.1 {round() rounds to +-infinity} { expr round(0.5) } 1 -test expr-39.2 {round() rounds to +-infinity} { +test expr-46.2 {round() rounds to +-infinity} { expr round(1.5) } 2 -test expr-39.3 {round() rounds to +-infinity} { +test expr-46.3 {round() rounds to +-infinity} { expr round(-0.5) } -1 -test expr-39.4 {round() rounds to +-infinity} { +test expr-46.4 {round() rounds to +-infinity} { expr round(-1.5) } -2 -test expr-39.5 {round() overflow} { +test expr-46.5 {round() overflow} { list [catch {expr round(9.2233720368547758e+018)} result] $result } {1 {integer value too large to represent}} -test expr-39.6 {round() overflow} { +test expr-46.6 {round() overflow} { list [catch {expr round(-9.2233720368547758e+018)} result] $result } {1 {integer value too large to represent}} -test expr-39.7 {round() bad value} { +test expr-46.7 {round() bad value} { set x trash list [catch {expr {round($x)}} result] $result } {1 {argument to math function didn't have numeric value}} -test expr-39.8 {round() already an integer} { +test expr-46.8 {round() already an integer} { set x 123456789012 incr x expr round($x) } 123456789013 -test expr-39.9 {round() boundary case - 1/2 - 1 ulp} { +test expr-46.9 {round() boundary case - 1/2 - 1 ulp} { set x 0.25 set bit 0.125 while 1 { @@ -865,7 +865,7 @@ test expr-39.9 {round() boundary case - 1/2 - 1 ulp} { } expr {round($x)} } 0 -test expr-39.10 {round() boundary case - 1/2 + 1 ulp} { +test expr-46.10 {round() boundary case - 1/2 + 1 ulp} { set x 0.75 set bit 0.125 while 1 { @@ -876,7 +876,7 @@ test expr-39.10 {round() boundary case - 1/2 + 1 ulp} { } expr {round($x)} } 1 -test expr-39.11 {round() boundary case - -1/2 - 1 ulp} { +test expr-46.11 {round() boundary case - -1/2 - 1 ulp} { set x -0.75 set bit 0.125 while 1 { @@ -887,7 +887,7 @@ test expr-39.11 {round() boundary case - -1/2 - 1 ulp} { } expr {round($x)} } -1 -test expr-39.12 {round() boundary case - -1/2 + 1 ulp} { +test expr-46.12 {round() boundary case - -1/2 + 1 ulp} { set x -0.25 set bit 0.125 while 1 { -- cgit v0.12 From 2d710b7bfb946720a165117b51982657462c87c2 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 7 Sep 2005 14:35:56 +0000 Subject: * generic/tclUtf.c (Tcl_UniCharToUtf): Corrected handling of negative * tests/utf.test (utf-1.5): Tcl_UniChar input value. Incorrect handling was producing byte sequences outside of Tcl's legal internal encoding. [Bug 1283976]. --- ChangeLog | 7 ++++++ generic/tclUtf.c | 74 +++++++++++++++++++++++++++++--------------------------- tests/utf.test | 5 +++- 3 files changed, 49 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index b2498d0..76230dd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-09-07 Don Porter + + * generic/tclUtf.c (Tcl_UniCharToUtf): Corrected handling of negative + * tests/utf.test (utf-1.5): Tcl_UniChar input value. Incorrect + handling was producing byte sequences outside of Tcl's legal internal + encoding. [Bug 1283976]. + 2005-08-29 Kevin Kenny * generic/tclBasic.c (ExprMathFunc): Restored "round away from diff --git a/generic/tclUtf.c b/generic/tclUtf.c index b7a6277..923f49f 100644 --- a/generic/tclUtf.c +++ b/generic/tclUtf.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtf.c,v 1.30.2.2 2003/10/08 14:21:20 dkf Exp $ + * RCS: @(#) $Id: tclUtf.c,v 1.30.2.3 2005/09/07 14:35:56 dgp Exp $ */ #include "tclInt.h" @@ -169,45 +169,47 @@ Tcl_UniCharToUtf(ch, str) str[0] = (char) ch; return 1; } - if (ch <= 0x7FF) { - str[1] = (char) ((ch | 0x80) & 0xBF); - str[0] = (char) ((ch >> 6) | 0xC0); - return 2; - } - if (ch <= 0xFFFF) { + if (ch >= 0) { + if (ch <= 0x7FF) { + str[1] = (char) ((ch | 0x80) & 0xBF); + str[0] = (char) ((ch >> 6) | 0xC0); + return 2; + } + if (ch <= 0xFFFF) { three: - str[2] = (char) ((ch | 0x80) & 0xBF); - str[1] = (char) (((ch >> 6) | 0x80) & 0xBF); - str[0] = (char) ((ch >> 12) | 0xE0); - return 3; - } + str[2] = (char) ((ch | 0x80) & 0xBF); + str[1] = (char) (((ch >> 6) | 0x80) & 0xBF); + str[0] = (char) ((ch >> 12) | 0xE0); + return 3; + } #if TCL_UTF_MAX > 3 - if (ch <= 0x1FFFFF) { - str[3] = (char) ((ch | 0x80) & 0xBF); - str[2] = (char) (((ch >> 6) | 0x80) & 0xBF); - str[1] = (char) (((ch >> 12) | 0x80) & 0xBF); - str[0] = (char) ((ch >> 18) | 0xF0); - return 4; - } - if (ch <= 0x3FFFFFF) { - str[4] = (char) ((ch | 0x80) & 0xBF); - str[3] = (char) (((ch >> 6) | 0x80) & 0xBF); - str[2] = (char) (((ch >> 12) | 0x80) & 0xBF); - str[1] = (char) (((ch >> 18) | 0x80) & 0xBF); - str[0] = (char) ((ch >> 24) | 0xF8); - return 5; - } - if (ch <= 0x7FFFFFFF) { - str[5] = (char) ((ch | 0x80) & 0xBF); - str[4] = (char) (((ch >> 6) | 0x80) & 0xBF); - str[3] = (char) (((ch >> 12) | 0x80) & 0xBF); - str[2] = (char) (((ch >> 18) | 0x80) & 0xBF); - str[1] = (char) (((ch >> 24) | 0x80) & 0xBF); - str[0] = (char) ((ch >> 30) | 0xFC); - return 6; - } + if (ch <= 0x1FFFFF) { + str[3] = (char) ((ch | 0x80) & 0xBF); + str[2] = (char) (((ch >> 6) | 0x80) & 0xBF); + str[1] = (char) (((ch >> 12) | 0x80) & 0xBF); + str[0] = (char) ((ch >> 18) | 0xF0); + return 4; + } + if (ch <= 0x3FFFFFF) { + str[4] = (char) ((ch | 0x80) & 0xBF); + str[3] = (char) (((ch >> 6) | 0x80) & 0xBF); + str[2] = (char) (((ch >> 12) | 0x80) & 0xBF); + str[1] = (char) (((ch >> 18) | 0x80) & 0xBF); + str[0] = (char) ((ch >> 24) | 0xF8); + return 5; + } + if (ch <= 0x7FFFFFFF) { + str[5] = (char) ((ch | 0x80) & 0xBF); + str[4] = (char) (((ch >> 6) | 0x80) & 0xBF); + str[3] = (char) (((ch >> 12) | 0x80) & 0xBF); + str[2] = (char) (((ch >> 18) | 0x80) & 0xBF); + str[1] = (char) (((ch >> 24) | 0x80) & 0xBF); + str[0] = (char) ((ch >> 30) | 0xFC); + return 6; + } #endif + } ch = 0xFFFD; goto three; diff --git a/tests/utf.test b/tests/utf.test index 7e4adf0..09fc5b1 100644 --- a/tests/utf.test +++ b/tests/utf.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: utf.test,v 1.8.14.4 2003/10/08 15:24:01 dgp Exp $ +# RCS: @(#) $Id: utf.test,v 1.8.14.5 2005/09/07 14:35:56 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -29,6 +29,9 @@ test utf-1.3 {Tcl_UniCharToUtf: 2 byte sequences} { test utf-1.4 {Tcl_UniCharToUtf: 3 byte sequences} { set x "\u4e4e" } [bytestring "\xe4\xb9\x8e"] +test utf-1.5 {Tcl_UniCharToUtf: negative Tcl_UniChar} { + string length [format %c -1] +} 1 test utf-2.1 {Tcl_UtfToUniChar: low ascii} { string length "abc" -- cgit v0.12 From 7d09565720b2955832749fffa7a2570775b4f57e Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 15 Sep 2005 15:25:17 +0000 Subject: Added yet another corner-case hack, this time for RHEL3. [Bug 1287638] --- ChangeLog | 21 +++++++++++++-------- unix/tcl.m4 | 3 +++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 76230dd..0c6a296 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,15 +1,20 @@ -2005-09-07 Don Porter +2005-09-15 Donal K. Fellows - * generic/tclUtf.c (Tcl_UniCharToUtf): Corrected handling of negative - * tests/utf.test (utf-1.5): Tcl_UniChar input value. Incorrect - handling was producing byte sequences outside of Tcl's legal internal - encoding. [Bug 1283976]. + * unix/tcl.m4 (SC_TCL_EARLY_FLAGS): Added extra hack to allow Tcl + to transparently open large files on RHEL 3. [Bug 1287638] -2005-08-29 Kevin Kenny +2005-09-07 Don Porter + + * generic/tclUtf.c (Tcl_UniCharToUtf): Corrected handling of negative + * tests/utf.test (utf-1.5): Tcl_UniChar input value. Incorrect + handling was producing byte sequences outside of Tcl's legal internal + encoding. [Bug 1283976]. + +2005-08-29 Kevin Kenny * generic/tclBasic.c (ExprMathFunc): Restored "round away from - * tests/expr.test (expr-46.*): zero" behaviour to the - "round" function. Added + * tests/expr.test (expr-46.*): zero" behaviour to the + "round" function. Added test cases for the behavior, including the awkward case of a number whose fractional part is 1/2-1/2ulp. [Bug 1275043] diff --git a/unix/tcl.m4 b/unix/tcl.m4 index a48c114..63dc0e6 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -2553,6 +2553,7 @@ AC_DEFUN(SC_TCL_LINK_LIBS, [ # Might define the following vars: # _ISOC99_SOURCE # _LARGEFILE64_SOURCE +# _LARGEFILE_SOURCE64 # #-------------------------------------------------------------------- @@ -2575,6 +2576,8 @@ AC_DEFUN(SC_TCL_EARLY_FLAGS,[ [char *p = (char *)strtoll; char *q = (char *)strtoull;]) SC_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include ], [struct stat64 buf; int i = stat64("/", &buf);]) + SC_TCL_EARLY_FLAG(_LARGEFILE_SOURCE64,[#include ], + [char *p = (char *)open64;]) if test "x${tcl_flags}" = "x" ; then AC_MSG_RESULT(none) else -- cgit v0.12 From 0fdc7161c3f11598b0e57981c8dc9e7a029d2aa5 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 15 Sep 2005 16:29:12 +0000 Subject: autoconf-2.13 --- ChangeLog | 2 + unix/configure | 507 +++++++++++++++++++++++++++++++-------------------------- 2 files changed, 280 insertions(+), 229 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0c6a296..47373e4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,8 @@ * unix/tcl.m4 (SC_TCL_EARLY_FLAGS): Added extra hack to allow Tcl to transparently open large files on RHEL 3. [Bug 1287638] + * unix/configure: autoconf-2.13 + 2005-09-07 Don Porter * generic/tclUtf.c (Tcl_UniCharToUtf): Corrected handling of negative diff --git a/unix/configure b/unix/configure index 6da3455..6fb5d7a 100755 --- a/unix/configure +++ b/unix/configure @@ -3915,6 +3915,55 @@ EOF tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" fi + + if eval "test \"`echo '$''{'tcl_cv_flag__largefile_source64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +char *p = (char *)open64; +; return 0; } +EOF +if { (eval echo configure:3931: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_flag__largefile_source64=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext < +int main() { +char *p = (char *)open64; +; return 0; } +EOF +if { (eval echo configure:3947: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_flag__largefile_source64=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_flag__largefile_source64=no +fi +rm -f conftest* +fi +rm -f conftest* +fi + + if test "x${tcl_cv_flag__largefile_source64}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define _LARGEFILE_SOURCE64 1 +EOF + + tcl_flags="$tcl_flags _LARGEFILE_SOURCE64" + fi if test "x${tcl_flags}" = "x" ; then echo "$ac_t""none" 1>&6 else @@ -3923,7 +3972,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3927: checking for 64-bit integer type" >&5 +echo "configure:3976: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3931,14 +3980,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -3952,7 +4001,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -3986,13 +4035,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:3990: checking for struct dirent64" >&5 +echo "configure:4039: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4000,7 +4049,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4021,13 +4070,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4025: checking for struct stat64" >&5 +echo "configure:4074: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4035,7 +4084,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4088: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4058,12 +4107,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4062: checking for $ac_func" >&5 +echo "configure:4111: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4111,13 +4160,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4115: checking for off64_t" >&5 +echo "configure:4164: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4125,7 +4174,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4156,14 +4205,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4160: checking whether byte ordering is bigendian" >&5 +echo "configure:4209: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4174,11 +4223,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4227: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4189,7 +4238,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4242: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4209,7 +4258,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4255,12 +4304,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4259: checking for $ac_func" >&5 +echo "configure:4308: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4317,12 +4366,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4321: checking for $ac_func" >&5 +echo "configure:4370: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4375,12 +4424,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4379: checking for $ac_func" >&5 +echo "configure:4428: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4430,12 +4479,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4434: checking for strerror" >&5 +echo "configure:4483: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4482,12 +4531,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4486: checking for getwd" >&5 +echo "configure:4535: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4534,12 +4583,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4538: checking for wait3" >&5 +echo "configure:4587: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4586,12 +4635,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4590: checking for uname" >&5 +echo "configure:4639: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4638,12 +4687,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4642: checking for realpath" >&5 +echo "configure:4691: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4701,12 +4750,12 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4705: checking dirent.h" >&5 +echo "configure:4754: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4732,7 +4781,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -4755,17 +4804,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4759: checking for errno.h" >&5 +echo "configure:4808: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4792,17 +4841,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4796: checking for float.h" >&5 +echo "configure:4845: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4806: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4855: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4829,17 +4878,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4833: checking for values.h" >&5 +echo "configure:4882: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4866,17 +4915,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4870: checking for limits.h" >&5 +echo "configure:4919: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4906,17 +4955,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4910: checking for stdlib.h" >&5 +echo "configure:4959: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4939,7 +4988,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -4953,7 +5002,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4967,7 +5016,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -4988,17 +5037,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:4992: checking for string.h" >&5 +echo "configure:5041: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5051: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5021,7 +5070,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -5035,7 +5084,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5061,17 +5110,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:5065: checking for sys/wait.h" >&5 +echo "configure:5114: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5124: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5098,17 +5147,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:5102: checking for dlfcn.h" >&5 +echo "configure:5151: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5112: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5161: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5140,17 +5189,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5144: checking for $ac_hdr" >&5 +echo "configure:5193: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5190,17 +5239,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5194: checking for $ac_hdr" >&5 +echo "configure:5243: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5227,7 +5276,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5231: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5280: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5236,7 +5285,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5251,7 +5300,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5268,7 +5317,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5282,7 +5331,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5300,7 +5349,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5315,7 +5364,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5333,7 +5382,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5350,7 +5399,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5368,7 +5417,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5384,7 +5433,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5402,7 +5451,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5419,7 +5468,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5462,19 +5511,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5466: checking for fd_set in sys/types" >&5 +echo "configure:5515: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5490,12 +5539,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5494: checking for fd_mask in sys/select" >&5 +echo "configure:5543: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5532,12 +5581,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5536: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5585: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5545,7 +5594,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5549: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5598: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5570,17 +5619,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5574: checking for $ac_hdr" >&5 +echo "configure:5623: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5633: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5607,12 +5656,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5611: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5660: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5621,7 +5670,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5642,12 +5691,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5646: checking for tm_zone in struct tm" >&5 +echo "configure:5695: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5655,7 +5704,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5675,12 +5724,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5679: checking for tzname" >&5 +echo "configure:5728: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5690,7 +5739,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5715,12 +5764,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5719: checking for $ac_func" >&5 +echo "configure:5768: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5769,19 +5818,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5773: checking tm_tzadj in struct tm" >&5 +echo "configure:5822: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5834: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5802,19 +5851,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5806: checking tm_gmtoff in struct tm" >&5 +echo "configure:5855: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5839,12 +5888,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5843: checking long timezone variable" >&5 +echo "configure:5892: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5853,7 +5902,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5876,12 +5925,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5880: checking time_t timezone variable" >&5 +echo "configure:5929: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5890,7 +5939,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5943: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5917,12 +5966,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5921: checking for st_blksize in struct stat" >&5 +echo "configure:5970: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5930,7 +5979,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5951,12 +6000,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5955: checking for fstatfs" >&5 +echo "configure:6004: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6008,7 +6057,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6012: checking for 8-bit clean memcmp" >&5 +echo "configure:6061: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6016,7 +6065,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6050,12 +6099,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6054: checking for memmove" >&5 +echo "configure:6103: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6111,12 +6160,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6115: checking proper strstr implementation" >&5 +echo "configure:6164: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6153,12 +6202,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6157: checking for strtoul" >&5 +echo "configure:6206: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6205,7 +6254,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6244,12 +6293,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6248: checking for strtod" >&5 +echo "configure:6297: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6296,7 +6345,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6338,12 +6387,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6342: checking for strtod" >&5 +echo "configure:6391: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6388,7 +6437,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6392: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6441: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6397,7 +6446,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6453,12 +6502,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6457: checking for ANSI C header files" >&5 +echo "configure:6506: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6466,7 +6515,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6483,7 +6532,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6501,7 +6550,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6522,7 +6571,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6533,7 +6582,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6557,12 +6606,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6561: checking for mode_t" >&5 +echo "configure:6610: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6590,12 +6639,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6594: checking for pid_t" >&5 +echo "configure:6643: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6623,12 +6672,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6627: checking for size_t" >&5 +echo "configure:6676: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6656,12 +6705,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6660: checking for uid_t in sys/types.h" >&5 +echo "configure:6709: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6691,12 +6740,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6695: checking for socklen_t" >&5 +echo "configure:6744: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6735,12 +6784,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6739: checking for opendir" >&5 +echo "configure:6788: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6796,12 +6845,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6800: checking union wait" >&5 +echo "configure:6849: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6813,7 +6862,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6840,12 +6889,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6844: checking for strncasecmp" >&5 +echo "configure:6893: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6890,7 +6939,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6894: checking for strncasecmp in -lsocket" >&5 +echo "configure:6943: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6898,7 +6947,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6933,7 +6982,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6937: checking for strncasecmp in -linet" >&5 +echo "configure:6986: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6941,7 +6990,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6990,12 +7039,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6994: checking for BSDgettimeofday" >&5 +echo "configure:7043: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7040,12 +7089,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7044: checking for gettimeofday" >&5 +echo "configure:7093: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7095,12 +7144,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7099: checking for gettimeofday declaration" >&5 +echo "configure:7148: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7131,14 +7180,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7135: checking whether char is unsigned" >&5 +echo "configure:7184: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7194,12 +7243,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7198: checking signed char declarations" >&5 +echo "configure:7247: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7234,7 +7283,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7238: checking for a putenv() that copies the buffer" >&5 +echo "configure:7287: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7242,7 +7291,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7264,7 +7313,7 @@ else } EOF -if { (eval echo configure:7268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7306,17 +7355,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7310: checking for langinfo.h" >&5 +echo "configure:7359: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7341,17 +7390,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7345: checking whether to use nl_langinfo" >&5 +echo "configure:7394: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7404: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7386,17 +7435,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7390: checking for $ac_hdr" >&5 +echo "configure:7439: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7426,17 +7475,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7430: checking for $ac_hdr" >&5 +echo "configure:7479: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7489: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7463,7 +7512,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7467: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7516: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7543,7 +7592,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7547: checking how to package libraries" >&5 +echo "configure:7596: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" -- cgit v0.12 From 261a0e33fa4af47700e2bc2e480b19e4dfb446ba Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Thu, 15 Sep 2005 23:21:36 +0000 Subject: * doc/ParseCmd.3: copy/paste fix [Bug 1292427] --- ChangeLog | 4 ++++ doc/ParseCmd.3 | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 47373e4..bbba41b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-09-15 Miguel Sofer + + * doc/ParseCmd.3: copy/paste fix [Bug 1292427] + 2005-09-15 Donal K. Fellows * unix/tcl.m4 (SC_TCL_EARLY_FLAGS): Added extra hack to allow Tcl diff --git a/doc/ParseCmd.3 b/doc/ParseCmd.3 index ac03337..a5f7ddf 100644 --- a/doc/ParseCmd.3 +++ b/doc/ParseCmd.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: ParseCmd.3,v 1.10.2.1 2003/03/19 20:06:50 dgp Exp $ +'\" RCS: @(#) $Id: ParseCmd.3,v 1.10.2.2 2005/09/15 23:21:37 msofer Exp $ '\" .so man.macros .TH Tcl_ParseCommand 3 8.3 Tcl "Tcl Library Procedures" @@ -108,7 +108,7 @@ result, and no information is left at \fI*parsePtr\fR. .PP \fBTcl_ParseExpr\fR parses Tcl expressions. Given a pointer to a script containing an expression, -\fBTcl_ParseCommand\fR parses the expression. +\fBTcl_ParseExpr\fR parses the expression. If the expression was parsed successfully, \fBTcl_ParseExpr\fR returns \fBTCL_OK\fR and fills in the structure pointed to by \fIparsePtr\fR with information about the -- cgit v0.12 From 36537913f69228c5a11335a42637feba36c96677 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 26 Sep 2005 16:31:55 +0000 Subject: Import of libtommath 0.36 --- libtommath/bn.pdf | Bin 337204 -> 340684 bytes libtommath/bn.tex | 2 +- libtommath/bn_error.c | 4 + libtommath/bn_fast_mp_invmod.c | 4 + libtommath/bn_fast_mp_montgomery_reduce.c | 4 + libtommath/bn_fast_s_mp_mul_digs.c | 5 + libtommath/bn_fast_s_mp_mul_high_digs.c | 4 + libtommath/bn_fast_s_mp_sqr.c | 4 + libtommath/bn_mp_2expt.c | 4 + libtommath/bn_mp_abs.c | 4 + libtommath/bn_mp_add.c | 4 + libtommath/bn_mp_add_d.c | 4 + libtommath/bn_mp_addmod.c | 4 + libtommath/bn_mp_and.c | 4 + libtommath/bn_mp_clamp.c | 4 + libtommath/bn_mp_clear.c | 4 + libtommath/bn_mp_clear_multi.c | 4 + libtommath/bn_mp_cmp.c | 4 + libtommath/bn_mp_cmp_d.c | 4 + libtommath/bn_mp_cmp_mag.c | 4 + libtommath/bn_mp_cnt_lsb.c | 4 + libtommath/bn_mp_copy.c | 4 + libtommath/bn_mp_count_bits.c | 4 + libtommath/bn_mp_div.c | 4 + libtommath/bn_mp_div_2.c | 4 + libtommath/bn_mp_div_2d.c | 4 + libtommath/bn_mp_div_3.c | 4 + libtommath/bn_mp_div_d.c | 4 + libtommath/bn_mp_dr_is_modulus.c | 4 + libtommath/bn_mp_dr_reduce.c | 4 + libtommath/bn_mp_dr_setup.c | 4 + libtommath/bn_mp_exch.c | 4 + libtommath/bn_mp_expt_d.c | 4 + libtommath/bn_mp_exptmod.c | 6 +- libtommath/bn_mp_exptmod_fast.c | 4 + libtommath/bn_mp_exteuclid.c | 4 + libtommath/bn_mp_fread.c | 4 + libtommath/bn_mp_fwrite.c | 4 + libtommath/bn_mp_gcd.c | 4 + libtommath/bn_mp_get_int.c | 4 + libtommath/bn_mp_grow.c | 4 + libtommath/bn_mp_init.c | 4 + libtommath/bn_mp_init_copy.c | 4 + libtommath/bn_mp_init_multi.c | 4 + libtommath/bn_mp_init_set.c | 4 + libtommath/bn_mp_init_set_int.c | 4 + libtommath/bn_mp_init_size.c | 4 + libtommath/bn_mp_invmod.c | 4 + libtommath/bn_mp_invmod_slow.c | 4 + libtommath/bn_mp_is_square.c | 4 + libtommath/bn_mp_jacobi.c | 4 + libtommath/bn_mp_karatsuba_mul.c | 20 +- libtommath/bn_mp_karatsuba_sqr.c | 12 +- libtommath/bn_mp_lcm.c | 4 + libtommath/bn_mp_lshd.c | 4 + libtommath/bn_mp_mod.c | 4 + libtommath/bn_mp_mod_2d.c | 4 + libtommath/bn_mp_mod_d.c | 4 + libtommath/bn_mp_montgomery_calc_normalization.c | 4 + libtommath/bn_mp_montgomery_reduce.c | 4 + libtommath/bn_mp_montgomery_setup.c | 4 + libtommath/bn_mp_mul.c | 4 + libtommath/bn_mp_mul_2.c | 4 + libtommath/bn_mp_mul_2d.c | 4 + libtommath/bn_mp_mul_d.c | 4 + libtommath/bn_mp_mulmod.c | 7 +- libtommath/bn_mp_n_root.c | 4 + libtommath/bn_mp_neg.c | 4 + libtommath/bn_mp_or.c | 4 + libtommath/bn_mp_prime_fermat.c | 4 + libtommath/bn_mp_prime_is_divisible.c | 4 + libtommath/bn_mp_prime_is_prime.c | 4 + libtommath/bn_mp_prime_miller_rabin.c | 4 + libtommath/bn_mp_prime_next_prime.c | 4 + libtommath/bn_mp_prime_rabin_miller_trials.c | 4 + libtommath/bn_mp_prime_random_ex.c | 10 +- libtommath/bn_mp_radix_size.c | 4 + libtommath/bn_mp_radix_smap.c | 4 + libtommath/bn_mp_rand.c | 4 + libtommath/bn_mp_read_radix.c | 4 + libtommath/bn_mp_read_signed_bin.c | 7 +- libtommath/bn_mp_read_unsigned_bin.c | 7 +- libtommath/bn_mp_reduce.c | 4 + libtommath/bn_mp_reduce_2k.c | 4 + libtommath/bn_mp_reduce_2k_l.c | 4 + libtommath/bn_mp_reduce_2k_setup.c | 4 + libtommath/bn_mp_reduce_2k_setup_l.c | 4 + libtommath/bn_mp_reduce_is_2k.c | 4 + libtommath/bn_mp_reduce_is_2k_l.c | 4 + libtommath/bn_mp_reduce_setup.c | 4 + libtommath/bn_mp_rshd.c | 4 + libtommath/bn_mp_set.c | 4 + libtommath/bn_mp_set_int.c | 4 + libtommath/bn_mp_shrink.c | 4 + libtommath/bn_mp_signed_bin_size.c | 4 + libtommath/bn_mp_sqr.c | 4 + libtommath/bn_mp_sqrmod.c | 4 + libtommath/bn_mp_sqrt.c | 4 + libtommath/bn_mp_sub.c | 4 + libtommath/bn_mp_sub_d.c | 4 + libtommath/bn_mp_submod.c | 4 + libtommath/bn_mp_to_signed_bin.c | 4 + libtommath/bn_mp_to_signed_bin_n.c | 4 + libtommath/bn_mp_to_unsigned_bin.c | 4 + libtommath/bn_mp_to_unsigned_bin_n.c | 4 + libtommath/bn_mp_toom_mul.c | 4 + libtommath/bn_mp_toom_sqr.c | 4 + libtommath/bn_mp_toradix.c | 4 + libtommath/bn_mp_toradix_n.c | 4 + libtommath/bn_mp_unsigned_bin_size.c | 4 + libtommath/bn_mp_xor.c | 4 + libtommath/bn_mp_zero.c | 4 + libtommath/bn_prime_tab.c | 4 + libtommath/bn_reverse.c | 4 + libtommath/bn_s_mp_add.c | 4 + libtommath/bn_s_mp_exptmod.c | 5 +- libtommath/bn_s_mp_mul_digs.c | 4 + libtommath/bn_s_mp_mul_high_digs.c | 4 + libtommath/bn_s_mp_sqr.c | 4 + libtommath/bn_s_mp_sub.c | 4 + libtommath/bncore.c | 10 +- libtommath/booker.pl | 3 + libtommath/changes.txt | 12 + libtommath/demo/demo.c | 8 +- libtommath/demo/timing.c | 4 + libtommath/etc/2kprime.c | 4 + libtommath/etc/drprime.c | 4 + libtommath/etc/makefile.icc | 2 +- libtommath/etc/mersenne.c | 4 + libtommath/etc/mont.c | 4 + libtommath/etc/pprime.c | 4 + libtommath/etc/tune.c | 4 + libtommath/logs/expt.log | 14 +- libtommath/logs/expt_2k.log | 10 +- libtommath/logs/expt_2kl.log | 8 +- libtommath/logs/expt_dr.log | 14 +- libtommath/logs/index.html | 5 +- libtommath/makefile | 51 +- libtommath/makefile.cygwin_dll | 4 + libtommath/makefile.icc | 2 +- libtommath/makefile.msvc | 4 +- libtommath/makefile.shared | 47 +- libtommath/mtest/logtab.h | 4 + libtommath/mtest/mpi-config.h | 6 +- libtommath/mtest/mpi-types.h | 4 + libtommath/mtest/mpi.c | 6 +- libtommath/mtest/mpi.h | 6 +- libtommath/mtest/mtest.c | 4 + libtommath/poster.pdf | Bin 40821 -> 37806 bytes libtommath/pre_gen/mpi.c | 525 +++++++++++++++++- libtommath/tommath.h | 26 +- libtommath/tommath.pdf | Bin 1160406 -> 1159839 bytes libtommath/tommath.src | 31 +- libtommath/tommath.tex | 670 +++++++++++++---------- libtommath/tommath_class.h | 5 + libtommath/tommath_superclass.h | 6 +- 156 files changed, 1587 insertions(+), 445 deletions(-) diff --git a/libtommath/bn.pdf b/libtommath/bn.pdf index 615ff4e..b8b8f8e 100644 Binary files a/libtommath/bn.pdf and b/libtommath/bn.pdf differ diff --git a/libtommath/bn.tex b/libtommath/bn.tex index 244bd6f..8b37766 100644 --- a/libtommath/bn.tex +++ b/libtommath/bn.tex @@ -49,7 +49,7 @@ \begin{document} \frontmatter \pagestyle{empty} -\title{LibTomMath User Manual \\ v0.35} +\title{LibTomMath User Manual \\ v0.36} \author{Tom St Denis \\ tomstdenis@iahu.ca} \maketitle This text, the library and the accompanying textbook are all hereby placed in the public domain. This book has been diff --git a/libtommath/bn_error.c b/libtommath/bn_error.c index 1546784..e260763 100644 --- a/libtommath/bn_error.c +++ b/libtommath/bn_error.c @@ -41,3 +41,7 @@ char *mp_error_to_string(int code) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_error.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_fast_mp_invmod.c b/libtommath/bn_fast_mp_invmod.c index acc8364..9f4a4da 100644 --- a/libtommath/bn_fast_mp_invmod.c +++ b/libtommath/bn_fast_mp_invmod.c @@ -142,3 +142,7 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL); return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_mp_invmod.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_fast_mp_montgomery_reduce.c b/libtommath/bn_fast_mp_montgomery_reduce.c index 14f307f..e676c6e 100644 --- a/libtommath/bn_fast_mp_montgomery_reduce.c +++ b/libtommath/bn_fast_mp_montgomery_reduce.c @@ -166,3 +166,7 @@ int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_mp_montgomery_reduce.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_fast_s_mp_mul_digs.c b/libtommath/bn_fast_s_mp_mul_digs.c index df3da26..0c715be 100644 --- a/libtommath/bn_fast_s_mp_mul_digs.c +++ b/libtommath/bn_fast_s_mp_mul_digs.c @@ -70,6 +70,7 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) /* execute loop */ for (iz = 0; iz < iy; ++iz) { _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); + } /* store term */ @@ -103,3 +104,7 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_s_mp_mul_digs.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_fast_s_mp_mul_high_digs.c b/libtommath/bn_fast_s_mp_mul_high_digs.c index ee657f9..7c10ce4 100644 --- a/libtommath/bn_fast_s_mp_mul_high_digs.c +++ b/libtommath/bn_fast_s_mp_mul_high_digs.c @@ -95,3 +95,7 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_s_mp_mul_high_digs.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_fast_s_mp_sqr.c b/libtommath/bn_fast_s_mp_sqr.c index 66a2942..c8f0dc6 100644 --- a/libtommath/bn_fast_s_mp_sqr.c +++ b/libtommath/bn_fast_s_mp_sqr.c @@ -108,3 +108,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_s_mp_sqr.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_2expt.c b/libtommath/bn_mp_2expt.c index 45a6818..d859623 100644 --- a/libtommath/bn_mp_2expt.c +++ b/libtommath/bn_mp_2expt.c @@ -42,3 +42,7 @@ mp_2expt (mp_int * a, int b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_2expt.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_abs.c b/libtommath/bn_mp_abs.c index 34f810f..7231a27 100644 --- a/libtommath/bn_mp_abs.c +++ b/libtommath/bn_mp_abs.c @@ -37,3 +37,7 @@ mp_abs (mp_int * a, mp_int * b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_abs.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_add.c b/libtommath/bn_mp_add.c index 554b7f7..74dcb48 100644 --- a/libtommath/bn_mp_add.c +++ b/libtommath/bn_mp_add.c @@ -47,3 +47,7 @@ int mp_add (mp_int * a, mp_int * b, mp_int * c) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_add.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_add_d.c b/libtommath/bn_mp_add_d.c index bdd0280..fde3cee 100644 --- a/libtommath/bn_mp_add_d.c +++ b/libtommath/bn_mp_add_d.c @@ -103,3 +103,7 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_add_d.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_addmod.c b/libtommath/bn_mp_addmod.c index 13eb33f..5cf1604 100644 --- a/libtommath/bn_mp_addmod.c +++ b/libtommath/bn_mp_addmod.c @@ -35,3 +35,7 @@ mp_addmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_addmod.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_and.c b/libtommath/bn_mp_and.c index 61dc386..9715308 100644 --- a/libtommath/bn_mp_and.c +++ b/libtommath/bn_mp_and.c @@ -51,3 +51,7 @@ mp_and (mp_int * a, mp_int * b, mp_int * c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_and.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_clamp.c b/libtommath/bn_mp_clamp.c index c172611..56a6362 100644 --- a/libtommath/bn_mp_clamp.c +++ b/libtommath/bn_mp_clamp.c @@ -38,3 +38,7 @@ mp_clamp (mp_int * a) } } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_clamp.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_clear.c b/libtommath/bn_mp_clear.c index 5342648..7564fff 100644 --- a/libtommath/bn_mp_clear.c +++ b/libtommath/bn_mp_clear.c @@ -38,3 +38,7 @@ mp_clear (mp_int * a) } } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_clear.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_clear_multi.c b/libtommath/bn_mp_clear_multi.c index 24cbe73..2766907 100644 --- a/libtommath/bn_mp_clear_multi.c +++ b/libtommath/bn_mp_clear_multi.c @@ -28,3 +28,7 @@ void mp_clear_multi(mp_int *mp, ...) va_end(args); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_clear_multi.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_cmp.c b/libtommath/bn_mp_cmp.c index 583b5f8..ce82baf 100644 --- a/libtommath/bn_mp_cmp.c +++ b/libtommath/bn_mp_cmp.c @@ -37,3 +37,7 @@ mp_cmp (mp_int * a, mp_int * b) } } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_cmp.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_cmp_d.c b/libtommath/bn_mp_cmp_d.c index 882b1c9..2d98647 100644 --- a/libtommath/bn_mp_cmp_d.c +++ b/libtommath/bn_mp_cmp_d.c @@ -38,3 +38,7 @@ int mp_cmp_d(mp_int * a, mp_digit b) } } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_cmp_d.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_cmp_mag.c b/libtommath/bn_mp_cmp_mag.c index a0f351c..3ade54f 100644 --- a/libtommath/bn_mp_cmp_mag.c +++ b/libtommath/bn_mp_cmp_mag.c @@ -49,3 +49,7 @@ int mp_cmp_mag (mp_int * a, mp_int * b) return MP_EQ; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_cmp_mag.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_cnt_lsb.c b/libtommath/bn_mp_cnt_lsb.c index 571f03f..6ff212d 100644 --- a/libtommath/bn_mp_cnt_lsb.c +++ b/libtommath/bn_mp_cnt_lsb.c @@ -47,3 +47,7 @@ int mp_cnt_lsb(mp_int *a) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_cnt_lsb.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_copy.c b/libtommath/bn_mp_copy.c index 183ec9b..f2de108 100644 --- a/libtommath/bn_mp_copy.c +++ b/libtommath/bn_mp_copy.c @@ -62,3 +62,7 @@ mp_copy (mp_int * a, mp_int * b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_copy.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_count_bits.c b/libtommath/bn_mp_count_bits.c index f3f85ac..cfab837 100644 --- a/libtommath/bn_mp_count_bits.c +++ b/libtommath/bn_mp_count_bits.c @@ -39,3 +39,7 @@ mp_count_bits (mp_int * a) return r; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_count_bits.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_div.c b/libtommath/bn_mp_div.c index 6b2b8f0..a0a9d7c 100644 --- a/libtommath/bn_mp_div.c +++ b/libtommath/bn_mp_div.c @@ -286,3 +286,7 @@ LBL_Q:mp_clear (&q); #endif #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_div_2.c b/libtommath/bn_mp_div_2.c index 5777997..23cd43a 100644 --- a/libtommath/bn_mp_div_2.c +++ b/libtommath/bn_mp_div_2.c @@ -62,3 +62,7 @@ int mp_div_2(mp_int * a, mp_int * b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div_2.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_div_2d.c b/libtommath/bn_mp_div_2d.c index cf103f2..305eeaa 100644 --- a/libtommath/bn_mp_div_2d.c +++ b/libtommath/bn_mp_div_2d.c @@ -91,3 +91,7 @@ int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div_2d.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_div_3.c b/libtommath/bn_mp_div_3.c index 7cbafc1..69d25cf 100644 --- a/libtommath/bn_mp_div_3.c +++ b/libtommath/bn_mp_div_3.c @@ -73,3 +73,7 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div_3.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_div_d.c b/libtommath/bn_mp_div_d.c index 9b58aa6..c3afceb 100644 --- a/libtommath/bn_mp_div_d.c +++ b/libtommath/bn_mp_div_d.c @@ -104,3 +104,7 @@ int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div_d.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_dr_is_modulus.c b/libtommath/bn_mp_dr_is_modulus.c index 5ef78a3..b11bc0c 100644 --- a/libtommath/bn_mp_dr_is_modulus.c +++ b/libtommath/bn_mp_dr_is_modulus.c @@ -37,3 +37,7 @@ int mp_dr_is_modulus(mp_int *a) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_dr_is_modulus.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_dr_reduce.c b/libtommath/bn_mp_dr_reduce.c index 9bb7ad7..c7119a1 100644 --- a/libtommath/bn_mp_dr_reduce.c +++ b/libtommath/bn_mp_dr_reduce.c @@ -88,3 +88,7 @@ top: return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_dr_reduce.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_dr_setup.c b/libtommath/bn_mp_dr_setup.c index 029d310..c177199 100644 --- a/libtommath/bn_mp_dr_setup.c +++ b/libtommath/bn_mp_dr_setup.c @@ -26,3 +26,7 @@ void mp_dr_setup(mp_int *a, mp_digit *d) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_dr_setup.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_exch.c b/libtommath/bn_mp_exch.c index 0ef485a..7bb1169 100644 --- a/libtommath/bn_mp_exch.c +++ b/libtommath/bn_mp_exch.c @@ -28,3 +28,7 @@ mp_exch (mp_int * a, mp_int * b) *b = t; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_exch.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_expt_d.c b/libtommath/bn_mp_expt_d.c index fdb8bd9..d5067ab 100644 --- a/libtommath/bn_mp_expt_d.c +++ b/libtommath/bn_mp_expt_d.c @@ -51,3 +51,7 @@ int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_expt_d.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_exptmod.c b/libtommath/bn_mp_exptmod.c index 7c4e2f8..f0b205b 100644 --- a/libtommath/bn_mp_exptmod.c +++ b/libtommath/bn_mp_exptmod.c @@ -66,7 +66,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) } /* modified diminished radix reduction */ -#if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) +#if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) && defined(BN_S_MP_EXPTMOD_C) if (mp_reduce_is_2k_l(P) == MP_YES) { return s_mp_exptmod(G, X, P, Y, 1); } @@ -106,3 +106,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_exptmod.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_exptmod_fast.c b/libtommath/bn_mp_exptmod_fast.c index 82be9ac..e4f25df 100644 --- a/libtommath/bn_mp_exptmod_fast.c +++ b/libtommath/bn_mp_exptmod_fast.c @@ -315,3 +315,7 @@ LBL_M: } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_exptmod_fast.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_exteuclid.c b/libtommath/bn_mp_exteuclid.c index c4ebab4..f0ae8e5 100644 --- a/libtommath/bn_mp_exteuclid.c +++ b/libtommath/bn_mp_exteuclid.c @@ -76,3 +76,7 @@ _ERR: mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL return err; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_exteuclid.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_fread.c b/libtommath/bn_mp_fread.c index 293df3f..f1c72fd 100644 --- a/libtommath/bn_mp_fread.c +++ b/libtommath/bn_mp_fread.c @@ -61,3 +61,7 @@ int mp_fread(mp_int *a, int radix, FILE *stream) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_fread.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_fwrite.c b/libtommath/bn_mp_fwrite.c index 8fa3129..29c0a2b 100644 --- a/libtommath/bn_mp_fwrite.c +++ b/libtommath/bn_mp_fwrite.c @@ -46,3 +46,7 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_fwrite.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_gcd.c b/libtommath/bn_mp_gcd.c index 6265df1..f0141ac 100644 --- a/libtommath/bn_mp_gcd.c +++ b/libtommath/bn_mp_gcd.c @@ -107,3 +107,7 @@ LBL_U:mp_clear (&v); return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_gcd.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_get_int.c b/libtommath/bn_mp_get_int.c index 034467b..e9282aa 100644 --- a/libtommath/bn_mp_get_int.c +++ b/libtommath/bn_mp_get_int.c @@ -39,3 +39,7 @@ unsigned long mp_get_int(mp_int * a) return res & 0xFFFFFFFFUL; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_get_int.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_grow.c b/libtommath/bn_mp_grow.c index 12a78a8..047c6af 100644 --- a/libtommath/bn_mp_grow.c +++ b/libtommath/bn_mp_grow.c @@ -51,3 +51,7 @@ int mp_grow (mp_int * a, int size) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_grow.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_init.c b/libtommath/bn_mp_init.c index 9d70554..7a59a39 100644 --- a/libtommath/bn_mp_init.c +++ b/libtommath/bn_mp_init.c @@ -40,3 +40,7 @@ int mp_init (mp_int * a) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_init_copy.c b/libtommath/bn_mp_init_copy.c index b1b0fa2..2b3248d 100644 --- a/libtommath/bn_mp_init_copy.c +++ b/libtommath/bn_mp_init_copy.c @@ -26,3 +26,7 @@ int mp_init_copy (mp_int * a, mp_int * b) return mp_copy (b, a); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_copy.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_init_multi.c b/libtommath/bn_mp_init_multi.c index 8cb123a..5af771f 100644 --- a/libtommath/bn_mp_init_multi.c +++ b/libtommath/bn_mp_init_multi.c @@ -53,3 +53,7 @@ int mp_init_multi(mp_int *mp, ...) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_multi.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_init_set.c b/libtommath/bn_mp_init_set.c index 0251e61..ded8617 100644 --- a/libtommath/bn_mp_init_set.c +++ b/libtommath/bn_mp_init_set.c @@ -26,3 +26,7 @@ int mp_init_set (mp_int * a, mp_digit b) return err; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_set.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_init_set_int.c b/libtommath/bn_mp_init_set_int.c index f59fd19..45341fe 100644 --- a/libtommath/bn_mp_init_set_int.c +++ b/libtommath/bn_mp_init_set_int.c @@ -25,3 +25,7 @@ int mp_init_set_int (mp_int * a, unsigned long b) return mp_set_int(a, b); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_set_int.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_init_size.c b/libtommath/bn_mp_init_size.c index 845ce2c..74afbf9 100644 --- a/libtommath/bn_mp_init_size.c +++ b/libtommath/bn_mp_init_size.c @@ -42,3 +42,7 @@ int mp_init_size (mp_int * a, int size) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_size.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_invmod.c b/libtommath/bn_mp_invmod.c index 46118ad..bf35b0a 100644 --- a/libtommath/bn_mp_invmod.c +++ b/libtommath/bn_mp_invmod.c @@ -37,3 +37,7 @@ int mp_invmod (mp_int * a, mp_int * b, mp_int * c) return MP_VAL; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_invmod.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_invmod_slow.c b/libtommath/bn_mp_invmod_slow.c index c048655..50a9b6f 100644 --- a/libtommath/bn_mp_invmod_slow.c +++ b/libtommath/bn_mp_invmod_slow.c @@ -169,3 +169,7 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL); return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_invmod_slow.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_is_square.c b/libtommath/bn_mp_is_square.c index 969d237..8ee84c7 100644 --- a/libtommath/bn_mp_is_square.c +++ b/libtommath/bn_mp_is_square.c @@ -103,3 +103,7 @@ ERR:mp_clear(&t); return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_is_square.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_jacobi.c b/libtommath/bn_mp_jacobi.c index 74cbbf3..8178454 100644 --- a/libtommath/bn_mp_jacobi.c +++ b/libtommath/bn_mp_jacobi.c @@ -99,3 +99,7 @@ LBL_A1:mp_clear (&a1); return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_jacobi.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_karatsuba_mul.c b/libtommath/bn_mp_karatsuba_mul.c index daa78c7..a1ff713 100644 --- a/libtommath/bn_mp_karatsuba_mul.c +++ b/libtommath/bn_mp_karatsuba_mul.c @@ -26,12 +26,12 @@ * b = b1 * B**n + b0 * * Then, a * b => - a1b1 * B**2n + ((a1 - a0)(b1 - b0) + a0b0 + a1b1) * B + a0b0 + a1b1 * B**2n + ((a1 + a0)(b1 + b0) - (a0b0 + a1b1)) * B + a0b0 * * Note that a1b1 and a0b0 are used twice and only need to be * computed once. So in total three half size (half # of * digit) multiplications are performed, a0b0, a1b1 and - * (a1-b1)(a0-b0) + * (a1+b1)(a0+b0) * * Note that a multiplication of half the digits requires * 1/4th the number of single precision multiplications so in @@ -122,19 +122,19 @@ int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c) if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY) goto X1Y1; /* x1y1 = x1*y1 */ - /* now calc x1-x0 and y1-y0 */ - if (mp_sub (&x1, &x0, &t1) != MP_OKAY) + /* now calc x1+x0 and y1+y0 */ + if (s_mp_add (&x1, &x0, &t1) != MP_OKAY) goto X1Y1; /* t1 = x1 - x0 */ - if (mp_sub (&y1, &y0, &x0) != MP_OKAY) + if (s_mp_add (&y1, &y0, &x0) != MP_OKAY) goto X1Y1; /* t2 = y1 - y0 */ if (mp_mul (&t1, &x0, &t1) != MP_OKAY) - goto X1Y1; /* t1 = (x1 - x0) * (y1 - y0) */ + goto X1Y1; /* t1 = (x1 + x0) * (y1 + y0) */ /* add x0y0 */ if (mp_add (&x0y0, &x1y1, &x0) != MP_OKAY) goto X1Y1; /* t2 = x0y0 + x1y1 */ - if (mp_sub (&x0, &t1, &t1) != MP_OKAY) - goto X1Y1; /* t1 = x0y0 + x1y1 - (x1-x0)*(y1-y0) */ + if (s_mp_sub (&t1, &x0, &t1) != MP_OKAY) + goto X1Y1; /* t1 = (x1+x0)*(y1+y0) - (x1y1 + x0y0) */ /* shift by B */ if (mp_lshd (&t1, B) != MP_OKAY) @@ -161,3 +161,7 @@ ERR: return err; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_karatsuba_mul.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_karatsuba_sqr.c b/libtommath/bn_mp_karatsuba_sqr.c index 315ceab..3bfe157 100644 --- a/libtommath/bn_mp_karatsuba_sqr.c +++ b/libtommath/bn_mp_karatsuba_sqr.c @@ -80,8 +80,8 @@ int mp_karatsuba_sqr (mp_int * a, mp_int * b) if (mp_sqr (&x1, &x1x1) != MP_OKAY) goto X1X1; /* x1x1 = x1*x1 */ - /* now calc (x1-x0)**2 */ - if (mp_sub (&x1, &x0, &t1) != MP_OKAY) + /* now calc (x1+x0)**2 */ + if (s_mp_add (&x1, &x0, &t1) != MP_OKAY) goto X1X1; /* t1 = x1 - x0 */ if (mp_sqr (&t1, &t1) != MP_OKAY) goto X1X1; /* t1 = (x1 - x0) * (x1 - x0) */ @@ -89,8 +89,8 @@ int mp_karatsuba_sqr (mp_int * a, mp_int * b) /* add x0y0 */ if (s_mp_add (&x0x0, &x1x1, &t2) != MP_OKAY) goto X1X1; /* t2 = x0x0 + x1x1 */ - if (mp_sub (&t2, &t1, &t1) != MP_OKAY) - goto X1X1; /* t1 = x0x0 + x1x1 - (x1-x0)*(x1-x0) */ + if (s_mp_sub (&t1, &t2, &t1) != MP_OKAY) + goto X1X1; /* t1 = (x1+x0)**2 - (x0x0 + x1x1) */ /* shift by B */ if (mp_lshd (&t1, B) != MP_OKAY) @@ -115,3 +115,7 @@ ERR: return err; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_karatsuba_sqr.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_lcm.c b/libtommath/bn_mp_lcm.c index 8e3a759..7bdaa43 100644 --- a/libtommath/bn_mp_lcm.c +++ b/libtommath/bn_mp_lcm.c @@ -54,3 +54,7 @@ LBL_T: return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_lcm.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_lshd.c b/libtommath/bn_mp_lshd.c index 398b648..5ddeb62 100644 --- a/libtommath/bn_mp_lshd.c +++ b/libtommath/bn_mp_lshd.c @@ -61,3 +61,7 @@ int mp_lshd (mp_int * a, int b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_lshd.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_mod.c b/libtommath/bn_mp_mod.c index 75779bb..22cb069 100644 --- a/libtommath/bn_mp_mod.c +++ b/libtommath/bn_mp_mod.c @@ -42,3 +42,7 @@ mp_mod (mp_int * a, mp_int * b, mp_int * c) return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mod.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_mod_2d.c b/libtommath/bn_mp_mod_2d.c index 589e4ba..935d97d 100644 --- a/libtommath/bn_mp_mod_2d.c +++ b/libtommath/bn_mp_mod_2d.c @@ -49,3 +49,7 @@ mp_mod_2d (mp_int * a, int b, mp_int * c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mod_2d.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_mod_d.c b/libtommath/bn_mp_mod_d.c index 8a2ad24..329594a 100644 --- a/libtommath/bn_mp_mod_d.c +++ b/libtommath/bn_mp_mod_d.c @@ -21,3 +21,7 @@ mp_mod_d (mp_int * a, mp_digit b, mp_digit * c) return mp_div_d(a, b, NULL, c); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mod_d.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_montgomery_calc_normalization.c b/libtommath/bn_mp_montgomery_calc_normalization.c index e2efc34..0da933f 100644 --- a/libtommath/bn_mp_montgomery_calc_normalization.c +++ b/libtommath/bn_mp_montgomery_calc_normalization.c @@ -53,3 +53,7 @@ int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_montgomery_calc_normalization.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_montgomery_reduce.c b/libtommath/bn_mp_montgomery_reduce.c index 3095fa7..d556332 100644 --- a/libtommath/bn_mp_montgomery_reduce.c +++ b/libtommath/bn_mp_montgomery_reduce.c @@ -112,3 +112,7 @@ mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_montgomery_reduce.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_montgomery_setup.c b/libtommath/bn_mp_montgomery_setup.c index 9dfc087..e55e974 100644 --- a/libtommath/bn_mp_montgomery_setup.c +++ b/libtommath/bn_mp_montgomery_setup.c @@ -53,3 +53,7 @@ mp_montgomery_setup (mp_int * n, mp_digit * rho) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_montgomery_setup.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_mul.c b/libtommath/bn_mp_mul.c index f9cfa09..8fd3872 100644 --- a/libtommath/bn_mp_mul.c +++ b/libtommath/bn_mp_mul.c @@ -60,3 +60,7 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c) return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mul.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_mul_2.c b/libtommath/bn_mp_mul_2.c index 6936681..7409f1c 100644 --- a/libtommath/bn_mp_mul_2.c +++ b/libtommath/bn_mp_mul_2.c @@ -76,3 +76,7 @@ int mp_mul_2(mp_int * a, mp_int * b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mul_2.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_mul_2d.c b/libtommath/bn_mp_mul_2d.c index 04cb8dd..800646d 100644 --- a/libtommath/bn_mp_mul_2d.c +++ b/libtommath/bn_mp_mul_2d.c @@ -79,3 +79,7 @@ int mp_mul_2d (mp_int * a, int b, mp_int * c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mul_2d.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_mul_d.c b/libtommath/bn_mp_mul_d.c index 9e11eef..061199f 100644 --- a/libtommath/bn_mp_mul_d.c +++ b/libtommath/bn_mp_mul_d.c @@ -73,3 +73,7 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mul_d.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_mulmod.c b/libtommath/bn_mp_mulmod.c index d34e90a..cb605ed 100644 --- a/libtommath/bn_mp_mulmod.c +++ b/libtommath/bn_mp_mulmod.c @@ -16,8 +16,7 @@ */ /* d = a * b (mod c) */ -int -mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) { int res; mp_int t; @@ -35,3 +34,7 @@ mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mulmod.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_n_root.c b/libtommath/bn_mp_n_root.c index 7b11aa2..2fadc6c 100644 --- a/libtommath/bn_mp_n_root.c +++ b/libtommath/bn_mp_n_root.c @@ -126,3 +126,7 @@ LBL_T1:mp_clear (&t1); return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_n_root.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_neg.c b/libtommath/bn_mp_neg.c index 159cd74..9cc654a 100644 --- a/libtommath/bn_mp_neg.c +++ b/libtommath/bn_mp_neg.c @@ -34,3 +34,7 @@ int mp_neg (mp_int * a, mp_int * b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_neg.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_or.c b/libtommath/bn_mp_or.c index dccee7e..14c0f19 100644 --- a/libtommath/bn_mp_or.c +++ b/libtommath/bn_mp_or.c @@ -44,3 +44,7 @@ int mp_or (mp_int * a, mp_int * b, mp_int * c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_or.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_prime_fermat.c b/libtommath/bn_mp_prime_fermat.c index fd74dbe..9b647cb 100644 --- a/libtommath/bn_mp_prime_fermat.c +++ b/libtommath/bn_mp_prime_fermat.c @@ -56,3 +56,7 @@ LBL_T:mp_clear (&t); return err; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_fermat.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_prime_is_divisible.c b/libtommath/bn_mp_prime_is_divisible.c index f85fe7c..11a2f27 100644 --- a/libtommath/bn_mp_prime_is_divisible.c +++ b/libtommath/bn_mp_prime_is_divisible.c @@ -44,3 +44,7 @@ int mp_prime_is_divisible (mp_int * a, int *result) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_is_divisible.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_prime_is_prime.c b/libtommath/bn_mp_prime_is_prime.c index 188053a..3e0e36b 100644 --- a/libtommath/bn_mp_prime_is_prime.c +++ b/libtommath/bn_mp_prime_is_prime.c @@ -77,3 +77,7 @@ LBL_B:mp_clear (&b); return err; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_is_prime.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_prime_miller_rabin.c b/libtommath/bn_mp_prime_miller_rabin.c index 758a2c3..712f20d 100644 --- a/libtommath/bn_mp_prime_miller_rabin.c +++ b/libtommath/bn_mp_prime_miller_rabin.c @@ -97,3 +97,7 @@ LBL_N1:mp_clear (&n1); return err; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_miller_rabin.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_prime_next_prime.c b/libtommath/bn_mp_prime_next_prime.c index 24f93c4..48b8f02 100644 --- a/libtommath/bn_mp_prime_next_prime.c +++ b/libtommath/bn_mp_prime_next_prime.c @@ -164,3 +164,7 @@ LBL_ERR: } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_next_prime.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_prime_rabin_miller_trials.c b/libtommath/bn_mp_prime_rabin_miller_trials.c index d1d0867..c4c9f5e 100644 --- a/libtommath/bn_mp_prime_rabin_miller_trials.c +++ b/libtommath/bn_mp_prime_rabin_miller_trials.c @@ -46,3 +46,7 @@ int mp_prime_rabin_miller_trials(int size) #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_rabin_miller_trials.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_prime_random_ex.c b/libtommath/bn_mp_prime_random_ex.c index 78c0583..daca61c 100644 --- a/libtommath/bn_mp_prime_random_ex.c +++ b/libtommath/bn_mp_prime_random_ex.c @@ -62,10 +62,8 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback maskOR_msb = 0; maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0; if (flags & LTM_PRIME_2MSB_ON) { - maskOR_msb |= 1 << ((size - 2) & 7); - } else if (flags & LTM_PRIME_2MSB_OFF) { - maskAND &= ~(1 << ((size - 2) & 7)); - } + maskOR_msb |= 0x80 >> ((9 - size) & 7); + } /* get the maskOR_lsb */ maskOR_lsb = 1; @@ -121,3 +119,7 @@ error: #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_random_ex.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_radix_size.c b/libtommath/bn_mp_radix_size.c index 3d423ba..7c5d8b5 100644 --- a/libtommath/bn_mp_radix_size.c +++ b/libtommath/bn_mp_radix_size.c @@ -72,3 +72,7 @@ int mp_radix_size (mp_int * a, int radix, int *size) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_radix_size.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_radix_smap.c b/libtommath/bn_mp_radix_smap.c index bc7517d..b9b88f9 100644 --- a/libtommath/bn_mp_radix_smap.c +++ b/libtommath/bn_mp_radix_smap.c @@ -18,3 +18,7 @@ /* chars used in radix conversions */ const char *mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_radix_smap.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_rand.c b/libtommath/bn_mp_rand.c index 0dc7019..94b0e7f 100644 --- a/libtommath/bn_mp_rand.c +++ b/libtommath/bn_mp_rand.c @@ -49,3 +49,7 @@ mp_rand (mp_int * a, int digits) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_rand.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_read_radix.c b/libtommath/bn_mp_read_radix.c index 1ec3937..ca2bde5 100644 --- a/libtommath/bn_mp_read_radix.c +++ b/libtommath/bn_mp_read_radix.c @@ -76,3 +76,7 @@ int mp_read_radix (mp_int * a, const char *str, int radix) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_read_radix.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_read_signed_bin.c b/libtommath/bn_mp_read_signed_bin.c index 814d6c1..05b1c9c 100644 --- a/libtommath/bn_mp_read_signed_bin.c +++ b/libtommath/bn_mp_read_signed_bin.c @@ -16,8 +16,7 @@ */ /* read signed bin, big endian, first byte is 0==positive or 1==negative */ -int -mp_read_signed_bin (mp_int * a, unsigned char *b, int c) +int mp_read_signed_bin (mp_int * a, const unsigned char *b, int c) { int res; @@ -36,3 +35,7 @@ mp_read_signed_bin (mp_int * a, unsigned char *b, int c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_read_signed_bin.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_read_unsigned_bin.c b/libtommath/bn_mp_read_unsigned_bin.c index 946457d..655415a 100644 --- a/libtommath/bn_mp_read_unsigned_bin.c +++ b/libtommath/bn_mp_read_unsigned_bin.c @@ -16,8 +16,7 @@ */ /* reads a unsigned char array, assumes the msb is stored first [big endian] */ -int -mp_read_unsigned_bin (mp_int * a, unsigned char *b, int c) +int mp_read_unsigned_bin (mp_int * a, const unsigned char *b, int c) { int res; @@ -50,3 +49,7 @@ mp_read_unsigned_bin (mp_int * a, unsigned char *b, int c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_read_unsigned_bin.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_reduce.c b/libtommath/bn_mp_reduce.c index d746445..dbc38c8 100644 --- a/libtommath/bn_mp_reduce.c +++ b/libtommath/bn_mp_reduce.c @@ -94,3 +94,7 @@ CLEANUP: return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_reduce_2k.c b/libtommath/bn_mp_reduce_2k.c index 28c3a00..790ac3c 100644 --- a/libtommath/bn_mp_reduce_2k.c +++ b/libtommath/bn_mp_reduce_2k.c @@ -55,3 +55,7 @@ ERR: } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_2k.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_reduce_2k_l.c b/libtommath/bn_mp_reduce_2k_l.c index 1d7e1f0..6a013cf 100644 --- a/libtommath/bn_mp_reduce_2k_l.c +++ b/libtommath/bn_mp_reduce_2k_l.c @@ -56,3 +56,7 @@ ERR: } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_2k_l.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_reduce_2k_setup.c b/libtommath/bn_mp_reduce_2k_setup.c index 585e1b7..17c54c5 100644 --- a/libtommath/bn_mp_reduce_2k_setup.c +++ b/libtommath/bn_mp_reduce_2k_setup.c @@ -41,3 +41,7 @@ int mp_reduce_2k_setup(mp_int *a, mp_digit *d) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_2k_setup.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_reduce_2k_setup_l.c b/libtommath/bn_mp_reduce_2k_setup_l.c index 810a456..2913162 100644 --- a/libtommath/bn_mp_reduce_2k_setup_l.c +++ b/libtommath/bn_mp_reduce_2k_setup_l.c @@ -38,3 +38,7 @@ ERR: return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_2k_setup_l.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_reduce_is_2k.c b/libtommath/bn_mp_reduce_is_2k.c index 0fb8384..ad14107 100644 --- a/libtommath/bn_mp_reduce_is_2k.c +++ b/libtommath/bn_mp_reduce_is_2k.c @@ -46,3 +46,7 @@ int mp_reduce_is_2k(mp_int *a) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_is_2k.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_reduce_is_2k_l.c b/libtommath/bn_mp_reduce_is_2k_l.c index ceba0ed..160b2ce 100644 --- a/libtommath/bn_mp_reduce_is_2k_l.c +++ b/libtommath/bn_mp_reduce_is_2k_l.c @@ -38,3 +38,7 @@ int mp_reduce_is_2k_l(mp_int *a) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_is_2k_l.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_reduce_setup.c b/libtommath/bn_mp_reduce_setup.c index 99f158a..4d2d99f 100644 --- a/libtommath/bn_mp_reduce_setup.c +++ b/libtommath/bn_mp_reduce_setup.c @@ -28,3 +28,7 @@ int mp_reduce_setup (mp_int * a, mp_int * b) return mp_div (a, b, a, NULL); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_setup.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_rshd.c b/libtommath/bn_mp_rshd.c index 913dda6..d5a75c6 100644 --- a/libtommath/bn_mp_rshd.c +++ b/libtommath/bn_mp_rshd.c @@ -66,3 +66,7 @@ void mp_rshd (mp_int * a, int b) a->used -= b; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_rshd.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_set.c b/libtommath/bn_mp_set.c index 078fd5f..af01b3c 100644 --- a/libtommath/bn_mp_set.c +++ b/libtommath/bn_mp_set.c @@ -23,3 +23,7 @@ void mp_set (mp_int * a, mp_digit b) a->used = (a->dp[0] != 0) ? 1 : 0; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_set.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_set_int.c b/libtommath/bn_mp_set_int.c index bd47136..c7ddb79 100644 --- a/libtommath/bn_mp_set_int.c +++ b/libtommath/bn_mp_set_int.c @@ -42,3 +42,7 @@ int mp_set_int (mp_int * a, unsigned long b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_set_int.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_shrink.c b/libtommath/bn_mp_shrink.c index b31f9d2..a40b65c 100644 --- a/libtommath/bn_mp_shrink.c +++ b/libtommath/bn_mp_shrink.c @@ -29,3 +29,7 @@ int mp_shrink (mp_int * a) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_shrink.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_signed_bin_size.c b/libtommath/bn_mp_signed_bin_size.c index 30048cb..4dbbeb8 100644 --- a/libtommath/bn_mp_signed_bin_size.c +++ b/libtommath/bn_mp_signed_bin_size.c @@ -21,3 +21,7 @@ int mp_signed_bin_size (mp_int * a) return 1 + mp_unsigned_bin_size (a); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_signed_bin_size.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_sqr.c b/libtommath/bn_mp_sqr.c index b1fdb57..ac926e9 100644 --- a/libtommath/bn_mp_sqr.c +++ b/libtommath/bn_mp_sqr.c @@ -52,3 +52,7 @@ if (a->used >= KARATSUBA_SQR_CUTOFF) { return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sqr.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_sqrmod.c b/libtommath/bn_mp_sqrmod.c index 1923be4..fe5f4bb 100644 --- a/libtommath/bn_mp_sqrmod.c +++ b/libtommath/bn_mp_sqrmod.c @@ -35,3 +35,7 @@ mp_sqrmod (mp_int * a, mp_int * b, mp_int * c) return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sqrmod.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_sqrt.c b/libtommath/bn_mp_sqrt.c index 76cec87..ac8c2b8 100644 --- a/libtommath/bn_mp_sqrt.c +++ b/libtommath/bn_mp_sqrt.c @@ -75,3 +75,7 @@ E2: mp_clear(&t1); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sqrt.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_sub.c b/libtommath/bn_mp_sub.c index 97495f4..52e1e43 100644 --- a/libtommath/bn_mp_sub.c +++ b/libtommath/bn_mp_sub.c @@ -53,3 +53,7 @@ mp_sub (mp_int * a, mp_int * b, mp_int * c) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sub.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_sub_d.c b/libtommath/bn_mp_sub_d.c index 4923dde..0b31cbe 100644 --- a/libtommath/bn_mp_sub_d.c +++ b/libtommath/bn_mp_sub_d.c @@ -83,3 +83,7 @@ mp_sub_d (mp_int * a, mp_digit b, mp_int * c) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sub_d.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_submod.c b/libtommath/bn_mp_submod.c index b999c85..f735e9e 100644 --- a/libtommath/bn_mp_submod.c +++ b/libtommath/bn_mp_submod.c @@ -36,3 +36,7 @@ mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) return res; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_submod.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_to_signed_bin.c b/libtommath/bn_mp_to_signed_bin.c index b0a597e..bc07d1e 100644 --- a/libtommath/bn_mp_to_signed_bin.c +++ b/libtommath/bn_mp_to_signed_bin.c @@ -27,3 +27,7 @@ int mp_to_signed_bin (mp_int * a, unsigned char *b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_to_signed_bin.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_to_signed_bin_n.c b/libtommath/bn_mp_to_signed_bin_n.c index 0f765ee..ff2a768 100644 --- a/libtommath/bn_mp_to_signed_bin_n.c +++ b/libtommath/bn_mp_to_signed_bin_n.c @@ -25,3 +25,7 @@ int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) return mp_to_signed_bin(a, b); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_to_signed_bin_n.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_to_unsigned_bin.c b/libtommath/bn_mp_to_unsigned_bin.c index 000967e..29b8d36 100644 --- a/libtommath/bn_mp_to_unsigned_bin.c +++ b/libtommath/bn_mp_to_unsigned_bin.c @@ -42,3 +42,7 @@ int mp_to_unsigned_bin (mp_int * a, unsigned char *b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_to_unsigned_bin.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_to_unsigned_bin_n.c b/libtommath/bn_mp_to_unsigned_bin_n.c index d0256b4..415e87d 100644 --- a/libtommath/bn_mp_to_unsigned_bin_n.c +++ b/libtommath/bn_mp_to_unsigned_bin_n.c @@ -25,3 +25,7 @@ int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) return mp_to_unsigned_bin(a, b); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_to_unsigned_bin_n.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_toom_mul.c b/libtommath/bn_mp_toom_mul.c index 125331b..e6fb523 100644 --- a/libtommath/bn_mp_toom_mul.c +++ b/libtommath/bn_mp_toom_mul.c @@ -278,3 +278,7 @@ ERR: } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_toom_mul.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_toom_sqr.c b/libtommath/bn_mp_toom_sqr.c index 8c46fea..ba800a0 100644 --- a/libtommath/bn_mp_toom_sqr.c +++ b/libtommath/bn_mp_toom_sqr.c @@ -220,3 +220,7 @@ ERR: } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_toom_sqr.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_toradix.c b/libtommath/bn_mp_toradix.c index a206d5e..96ac736 100644 --- a/libtommath/bn_mp_toradix.c +++ b/libtommath/bn_mp_toradix.c @@ -69,3 +69,7 @@ int mp_toradix (mp_int * a, char *str, int radix) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_toradix.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_toradix_n.c b/libtommath/bn_mp_toradix_n.c index 7d43558..d07ba95 100644 --- a/libtommath/bn_mp_toradix_n.c +++ b/libtommath/bn_mp_toradix_n.c @@ -83,3 +83,7 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_toradix_n.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_unsigned_bin_size.c b/libtommath/bn_mp_unsigned_bin_size.c index 091f406..9622dbf 100644 --- a/libtommath/bn_mp_unsigned_bin_size.c +++ b/libtommath/bn_mp_unsigned_bin_size.c @@ -22,3 +22,7 @@ int mp_unsigned_bin_size (mp_int * a) return (size / 8 + ((size & 7) != 0 ? 1 : 0)); } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_unsigned_bin_size.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_xor.c b/libtommath/bn_mp_xor.c index de7e62c..ae9f29b 100644 --- a/libtommath/bn_mp_xor.c +++ b/libtommath/bn_mp_xor.c @@ -45,3 +45,7 @@ mp_xor (mp_int * a, mp_int * b, mp_int * c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_xor.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_mp_zero.c b/libtommath/bn_mp_zero.c index c8d8907..6f7469c 100644 --- a/libtommath/bn_mp_zero.c +++ b/libtommath/bn_mp_zero.c @@ -30,3 +30,7 @@ void mp_zero (mp_int * a) } } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_zero.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_prime_tab.c b/libtommath/bn_prime_tab.c index 14306c2..9ec6d7a 100644 --- a/libtommath/bn_prime_tab.c +++ b/libtommath/bn_prime_tab.c @@ -55,3 +55,7 @@ const mp_digit ltm_prime_tab[] = { #endif }; #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_prime_tab.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_reverse.c b/libtommath/bn_reverse.c index 851a6e8..ad119ff 100644 --- a/libtommath/bn_reverse.c +++ b/libtommath/bn_reverse.c @@ -33,3 +33,7 @@ bn_reverse (unsigned char *s, int len) } } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_reverse.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_s_mp_add.c b/libtommath/bn_s_mp_add.c index 2b378ae..f196f3e 100644 --- a/libtommath/bn_s_mp_add.c +++ b/libtommath/bn_s_mp_add.c @@ -103,3 +103,7 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_add.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_s_mp_exptmod.c b/libtommath/bn_s_mp_exptmod.c index 597e877..d33558a 100644 --- a/libtommath/bn_s_mp_exptmod.c +++ b/libtommath/bn_s_mp_exptmod.c @@ -14,7 +14,6 @@ * * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org */ - #ifdef MP_LOW_MEM #define TAB_SIZE 32 #else @@ -247,3 +246,7 @@ LBL_M: return err; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_exptmod.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_s_mp_mul_digs.c b/libtommath/bn_s_mp_mul_digs.c index b40ae2e..e296640 100644 --- a/libtommath/bn_s_mp_mul_digs.c +++ b/libtommath/bn_s_mp_mul_digs.c @@ -84,3 +84,7 @@ int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_mul_digs.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_s_mp_mul_high_digs.c b/libtommath/bn_s_mp_mul_high_digs.c index a060248..972918f 100644 --- a/libtommath/bn_s_mp_mul_high_digs.c +++ b/libtommath/bn_s_mp_mul_high_digs.c @@ -75,3 +75,7 @@ s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_mul_high_digs.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_s_mp_sqr.c b/libtommath/bn_s_mp_sqr.c index 9cdb563..1b1e0b4 100644 --- a/libtommath/bn_s_mp_sqr.c +++ b/libtommath/bn_s_mp_sqr.c @@ -78,3 +78,7 @@ int s_mp_sqr (mp_int * a, mp_int * b) return MP_OKAY; } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_sqr.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bn_s_mp_sub.c b/libtommath/bn_s_mp_sub.c index 5b7aef9..fb2ea21 100644 --- a/libtommath/bn_s_mp_sub.c +++ b/libtommath/bn_s_mp_sub.c @@ -83,3 +83,7 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) } #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_sub.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/bncore.c b/libtommath/bncore.c index 82e3132..fad10d2 100644 --- a/libtommath/bncore.c +++ b/libtommath/bncore.c @@ -20,13 +20,17 @@ CPU /Compiler /MUL CUTOFF/SQR CUTOFF ------------------------------------------------------------- Intel P4 Northwood /GCC v3.4.1 / 88/ 128/LTM 0.32 ;-) - AMD Athlon64 /GCC v3.4.4 / 74/ 124/LTM 0.34 + AMD Athlon64 /GCC v3.4.4 / 80/ 120/LTM 0.35 */ -int KARATSUBA_MUL_CUTOFF = 74, /* Min. number of digits before Karatsuba multiplication is used. */ - KARATSUBA_SQR_CUTOFF = 124, /* Min. number of digits before Karatsuba squaring is used. */ +int KARATSUBA_MUL_CUTOFF = 80, /* Min. number of digits before Karatsuba multiplication is used. */ + KARATSUBA_SQR_CUTOFF = 120, /* Min. number of digits before Karatsuba squaring is used. */ TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ TOOM_SQR_CUTOFF = 400; #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bncore.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:56 $ */ diff --git a/libtommath/booker.pl b/libtommath/booker.pl index 5c77e53..f419ab4 100644 --- a/libtommath/booker.pl +++ b/libtommath/booker.pl @@ -89,6 +89,9 @@ while () { $inline = 0; while () { + next if ($_ =~ /\$Source/); + next if ($_ =~ /\$Revision/); + next if ($_ =~ /\$Date/); $text[$line++] = $_; ++$inline; chomp($_); diff --git a/libtommath/changes.txt b/libtommath/changes.txt index 99e40c1..4f27d63 100644 --- a/libtommath/changes.txt +++ b/libtommath/changes.txt @@ -1,3 +1,15 @@ +August 1st, 2005 +v0.36 -- LTM_PRIME_2MSB_ON was fixed and the "OFF" flag was removed. + -- [Peter LaDow] found a typo in the XREALLOC macro + -- [Peter LaDow] pointed out that mp_read_(un)signed_bin should have "const" on the input + -- Ported LTC patch to fix the prime_random_ex() function to get the bitsize correct [and the maskOR flags] + -- Kevin Kenny pointed out a stray // + -- David Hulton pointed out a typo in the textbook [mp_montgomery_setup() pseudo-code] + -- Neal Hamilton (Elliptic Semiconductor) pointed out that my Karatsuba notation was backwards and that I could use + unsigned operations in the routine. + -- Paul Schmidt pointed out a linking error in mp_exptmod() when BN_S_MP_EXPTMOD_C is undefined (and another for read_radix) + -- Updated makefiles to be way more flexible + March 12th, 2005 v0.35 -- Stupid XOR function missing line again... oops. -- Fixed bug in invmod not handling negative inputs correctly [Wolfgang Ehrhardt] diff --git a/libtommath/demo/demo.c b/libtommath/demo/demo.c index 0a6115a..0555366 100644 --- a/libtommath/demo/demo.c +++ b/libtommath/demo/demo.c @@ -389,8 +389,8 @@ printf("compare no compare!\n"); exit(EXIT_FAILURE); } sub_d_n = 0; /* force KARA and TOOM to enable despite cutoffs */ - KARATSUBA_SQR_CUTOFF = KARATSUBA_MUL_CUTOFF = 110; - TOOM_SQR_CUTOFF = TOOM_MUL_CUTOFF = 150; + KARATSUBA_SQR_CUTOFF = KARATSUBA_MUL_CUTOFF = 8; + TOOM_SQR_CUTOFF = TOOM_MUL_CUTOFF = 16; for (;;) { /* randomly clear and re-init one variable, this has the affect of triming the alloc space */ @@ -734,3 +734,7 @@ printf("compare no compare!\n"); exit(EXIT_FAILURE); } } return 0; } + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/demo/demo.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/demo/timing.c b/libtommath/demo/timing.c index bb3be52..cf0f39c 100644 --- a/libtommath/demo/timing.c +++ b/libtommath/demo/timing.c @@ -313,3 +313,7 @@ int main(void) return 0; } + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/demo/timing.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/etc/2kprime.c b/libtommath/etc/2kprime.c index d48b83e..d8ea97c 100644 --- a/libtommath/etc/2kprime.c +++ b/libtommath/etc/2kprime.c @@ -78,3 +78,7 @@ int main(void) + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/etc/2kprime.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/etc/drprime.c b/libtommath/etc/drprime.c index 0ab8ea6..eec89ed 100644 --- a/libtommath/etc/drprime.c +++ b/libtommath/etc/drprime.c @@ -58,3 +58,7 @@ int main(void) return 0; } + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/etc/drprime.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/etc/makefile.icc b/libtommath/etc/makefile.icc index 0a50728..8a1ffff 100644 --- a/libtommath/etc/makefile.icc +++ b/libtommath/etc/makefile.icc @@ -16,7 +16,7 @@ CFLAGS += -I../ # B - Blend of P4 and PM [mobile] # # Default to just generic max opts -CFLAGS += -O3 -xN -ip +CFLAGS += -O3 -xP -ip # default lib name (requires install with root) # LIBNAME=-ltommath diff --git a/libtommath/etc/mersenne.c b/libtommath/etc/mersenne.c index 1cd5b50..939616f 100644 --- a/libtommath/etc/mersenne.c +++ b/libtommath/etc/mersenne.c @@ -138,3 +138,7 @@ main (void) } return 0; } + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/etc/mersenne.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/etc/mont.c b/libtommath/etc/mont.c index dbf1735..c6a8e32 100644 --- a/libtommath/etc/mont.c +++ b/libtommath/etc/mont.c @@ -44,3 +44,7 @@ int main(void) + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/etc/mont.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/etc/pprime.c b/libtommath/etc/pprime.c index 26e0d84..a922b64 100644 --- a/libtommath/etc/pprime.c +++ b/libtommath/etc/pprime.c @@ -394,3 +394,7 @@ main (void) return 0; } + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/etc/pprime.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/etc/tune.c b/libtommath/etc/tune.c index d054d10..b09c7d9 100644 --- a/libtommath/etc/tune.c +++ b/libtommath/etc/tune.c @@ -136,3 +136,7 @@ main (void) return 0; } + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/etc/tune.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/logs/expt.log b/libtommath/logs/expt.log index 920ba55..70932ab 100644 --- a/libtommath/logs/expt.log +++ b/libtommath/logs/expt.log @@ -1,7 +1,7 @@ -513 1489160 -769 3688476 -1025 8162061 -2049 49260015 -2561 89579052 -3073 148797060 -4097 324449263 +513 1435869 +769 3544970 +1025 7791638 +2049 46902238 +2561 85334899 +3073 141451412 +4097 308770310 diff --git a/libtommath/logs/expt_2k.log b/libtommath/logs/expt_2k.log index 56b50db..97d325f 100644 --- a/libtommath/logs/expt_2k.log +++ b/libtommath/logs/expt_2k.log @@ -1,5 +1,5 @@ -607 2272809 -1279 9557382 -2203 36250309 -3217 87666486 -4253 174168369 +607 2109225 +1279 10148314 +2203 34126877 +3217 82716424 +4253 161569606 diff --git a/libtommath/logs/expt_2kl.log b/libtommath/logs/expt_2kl.log index b2eb8c2..d9ad4be 100644 --- a/libtommath/logs/expt_2kl.log +++ b/libtommath/logs/expt_2kl.log @@ -1,4 +1,4 @@ -1024 6954080 -2048 35993987 -4096 176068521 -521 1683720 +1024 7705271 +2048 34286851 +4096 165207491 +521 1618631 diff --git a/libtommath/logs/expt_dr.log b/libtommath/logs/expt_dr.log index eb93fc9..c6bbe07 100644 --- a/libtommath/logs/expt_dr.log +++ b/libtommath/logs/expt_dr.log @@ -1,7 +1,7 @@ -532 1989592 -784 3898697 -1036 6519700 -1540 15676650 -2072 33128187 -3080 82963362 -4116 168358337 +532 1928550 +784 3763908 +1036 7564221 +1540 16566059 +2072 32283784 +3080 79851565 +4116 157843530 diff --git a/libtommath/logs/index.html b/libtommath/logs/index.html index 19fe403..2b65a0b 100644 --- a/libtommath/logs/index.html +++ b/libtommath/logs/index.html @@ -21,4 +21,7 @@
- \ No newline at end of file + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/logs/index.html,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/makefile b/libtommath/makefile index 17873ee..a4697d4 100644 --- a/libtommath/makefile +++ b/libtommath/makefile @@ -3,12 +3,14 @@ #Tom St Denis #version of library -VERSION=0.35 +VERSION=0.36 CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare +ifndef IGNORE_SPEED + #for speed -CFLAGS += -O3 -funroll-all-loops +CFLAGS += -O3 -funroll-loops #for size #CFLAGS += -Os @@ -19,14 +21,27 @@ CFLAGS += -fomit-frame-pointer #debug #CFLAGS += -g3 +endif + #install as this user -USER=root -GROUP=root +ifndef INSTALL_GROUP + GROUP=wheel +else + GROUP=$(INSTALL_GROUP) +endif + +ifndef INSTALL_USER + USER=root +else + USER=$(INSTALL_USER) +endif default: libtommath.a #default files to install -LIBNAME=libtommath.a +ifndef LIBNAME + LIBNAME=libtommath.a +endif HEADERS=tommath.h tommath_class.h tommath_superclass.h #LIBPATH-The directory for libtommath to be installed to. @@ -65,9 +80,9 @@ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_ini bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o -libtommath.a: $(OBJECTS) - $(AR) $(ARFLAGS) libtommath.a $(OBJECTS) - ranlib libtommath.a +$(LIBNAME): $(OBJECTS) + $(AR) $(ARFLAGS) $@ $(OBJECTS) + ranlib $@ #make a profiled library (takes a while!!!) # @@ -89,23 +104,23 @@ profiled_single: ./ltmtest rm -f *.o ltmtest $(CC) $(CFLAGS) -fbranch-probabilities -DTESTING -c mpi.c -o mpi.o - $(AR) $(ARFLAGS) libtommath.a mpi.o - ranlib libtommath.a + $(AR) $(ARFLAGS) $(LIBNAME) mpi.o + ranlib $(LIBNAME) -install: libtommath.a +install: $(LIBNAME) install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH) install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH) install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) -test: libtommath.a demo/demo.o - $(CC) $(CFLAGS) demo/demo.o libtommath.a -o test +test: $(LIBNAME) demo/demo.o + $(CC) $(CFLAGS) demo/demo.o $(LIBNAME) -o test mtest: test cd mtest ; $(CC) $(CFLAGS) mtest.c -o mtest -timing: libtommath.a - $(CC) $(CFLAGS) -DTIMER demo/timing.c libtommath.a -o ltmtest +timing: $(LIBNAME) + $(CC) $(CFLAGS) -DTIMER demo/timing.c $(LIBNAME) -o ltmtest # makes the LTM book DVI file, requires tetex, perl and makeindex [part of tetex I think] docdvi: tommath.src @@ -151,6 +166,12 @@ clean: cd etc ; make clean cd pics ; make clean +#zipup the project (take that!) +no_oops: clean + cd .. ; cvs commit + echo Scanning for scratch/dirty files + find . -type f | grep -v CVS | xargs -n 1 bash mess.sh + zipup: clean manual poster docs perl gen.pl ; mv mpi.c pre_gen/ ; \ cd .. ; rm -rf ltm* libtommath-$(VERSION) ; mkdir libtommath-$(VERSION) ; \ diff --git a/libtommath/makefile.cygwin_dll b/libtommath/makefile.cygwin_dll index 85b10c7..dae65ae 100644 --- a/libtommath/makefile.cygwin_dll +++ b/libtommath/makefile.cygwin_dll @@ -49,3 +49,7 @@ windll: $(OBJECTS) test: $(OBJECTS) windll gcc $(CFLAGS) demo/demo.c libtommath.dll.a -Wl,--enable-auto-import -o test -s cd mtest ; $(CC) -O3 -fomit-frame-pointer -funroll-loops mtest.c -o mtest -s + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/makefile.cygwin_dll,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:57 $ */ diff --git a/libtommath/makefile.icc b/libtommath/makefile.icc index e764253..cf70ab0 100644 --- a/libtommath/makefile.icc +++ b/libtommath/makefile.icc @@ -19,7 +19,7 @@ CFLAGS += -I./ # B - Blend of P4 and PM [mobile] # # Default to just generic max opts -CFLAGS += -O3 -xN +CFLAGS += -O3 -xP -ip #install as this user USER=root diff --git a/libtommath/makefile.msvc b/libtommath/makefile.msvc index dbbf9f3..5edebec 100644 --- a/libtommath/makefile.msvc +++ b/libtommath/makefile.msvc @@ -2,7 +2,7 @@ # #Tom St Denis -CFLAGS = /I. /Ox /DWIN32 /W4 +CFLAGS = /I. /Ox /DWIN32 /W3 /Fo$@ default: library @@ -34,5 +34,7 @@ bn_mp_prime_random_ex.obj bn_mp_get_int.obj bn_mp_sqrt.obj bn_mp_is_square.obj \ bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj \ bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin_n.obj +HEADERS=tommath.h tommath_class.h tommath_superclass.h + library: $(OBJECTS) lib /out:tommath.lib $(OBJECTS) diff --git a/libtommath/makefile.shared b/libtommath/makefile.shared index 7c35881..821558c 100644 --- a/libtommath/makefile.shared +++ b/libtommath/makefile.shared @@ -1,11 +1,14 @@ #Makefile for GCC # #Tom St Denis -VERSION=0:35 +VERSION=0:36 CC = libtool --mode=compile gcc + CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare +ifndef IGNORE_SPEED + #for speed CFLAGS += -O3 -funroll-loops @@ -15,14 +18,30 @@ CFLAGS += -O3 -funroll-loops #x86 optimizations [should be valid for any GCC install though] CFLAGS += -fomit-frame-pointer +endif + #install as this user -USER=root -GROUP=root +ifndef INSTALL_GROUP + GROUP=wheel +else + GROUP=$(INSTALL_GROUP) +endif + +ifndef INSTALL_USER + USER=root +else + USER=$(INSTALL_USER) +endif default: libtommath.la #default files to install -LIBNAME=libtommath.la +ifndef LIBNAME + LIBNAME=libtommath.la +endif +ifndef LIBNAME_S + LIBNAME_S=libtommath.a +endif HEADERS=tommath.h tommath_class.h tommath_superclass.h #LIBPATH-The directory for libtommath to be installed to. @@ -61,20 +80,20 @@ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_ini bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o - -libtommath.la: $(OBJECTS) - libtool --mode=link gcc *.lo -o libtommath.la -rpath $(LIBPATH) -version-info $(VERSION) - libtool --mode=link gcc *.o -o libtommath.a - libtool --mode=install install -c libtommath.la $(LIBPATH)/libtommath.la +$(LIBNAME): $(OBJECTS) + libtool --mode=link gcc *.lo -o $(LIBNAME) -rpath $(LIBPATH) -version-info $(VERSION) + libtool --mode=link gcc *.o -o $(LIBNAME_S) + ranlib $(LIBNAME_S) + libtool --mode=install install -c $(LIBNAME) $(LIBPATH)/$@ install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) -test: libtommath.a demo/demo.o +test: $(LIBNAME) demo/demo.o gcc $(CFLAGS) -c demo/demo.c -o demo/demo.o - libtool --mode=link gcc -o test demo/demo.o libtommath.la + libtool --mode=link gcc -o test demo/demo.o $(LIBNAME_S) mtest: test - cd mtest ; gcc $(CFLAGS) mtest.c -o mtest -s + cd mtest ; gcc $(CFLAGS) mtest.c -o mtest -timing: libtommath.la - gcc $(CFLAGS) -DTIMER demo/timing.c libtommath.a -o ltmtest -s +timing: $(LIBNAME) + gcc $(CFLAGS) -DTIMER demo/timing.c $(LIBNAME_S) -o ltmtest diff --git a/libtommath/mtest/logtab.h b/libtommath/mtest/logtab.h index 68462bd..4c8774c 100644 --- a/libtommath/mtest/logtab.h +++ b/libtommath/mtest/logtab.h @@ -18,3 +18,7 @@ const float s_logv_2[] = { 0.166666667 }; + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/mtest/logtab.h,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:17 $ */ diff --git a/libtommath/mtest/mpi-config.h b/libtommath/mtest/mpi-config.h index dcdbd35..e6ffbc4 100644 --- a/libtommath/mtest/mpi-config.h +++ b/libtommath/mtest/mpi-config.h @@ -1,5 +1,5 @@ /* Default configuration for MPI library */ -/* $Id: mpi-config.h,v 1.1.1.1 2005/01/19 22:41:29 kennykb Exp $ */ +/* $Id: mpi-config.h,v 1.1.1.2 2005/09/26 16:32:17 kennykb Exp $ */ #ifndef MPI_CONFIG_H_ #define MPI_CONFIG_H_ @@ -84,3 +84,7 @@ /* crc==3287762869, version==2, Sat Feb 02 06:43:53 2002 */ + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/mtest/mpi-config.h,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:17 $ */ diff --git a/libtommath/mtest/mpi-types.h b/libtommath/mtest/mpi-types.h index e097188..96d5967 100644 --- a/libtommath/mtest/mpi-types.h +++ b/libtommath/mtest/mpi-types.h @@ -14,3 +14,7 @@ typedef int mp_err; #define DIGIT_FMT "%04X" #define RADIX (MP_DIGIT_MAX+1) + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/mtest/mpi-types.h,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:17 $ */ diff --git a/libtommath/mtest/mpi.c b/libtommath/mtest/mpi.c index 0517602..1b6f114 100644 --- a/libtommath/mtest/mpi.c +++ b/libtommath/mtest/mpi.c @@ -6,7 +6,7 @@ Arbitrary precision integer arithmetic library - $Id: mpi.c,v 1.1.1.1 2005/01/19 22:41:29 kennykb Exp $ + $Id: mpi.c,v 1.1.1.2 2005/09/26 16:32:17 kennykb Exp $ */ #include "mpi.h" @@ -3979,3 +3979,7 @@ int s_mp_outlen(int bits, int r) /*------------------------------------------------------------------------*/ /* HERE THERE BE DRAGONS */ /* crc==4242132123, version==2, Sat Feb 02 06:43:52 2002 */ + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/mtest/mpi.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:17 $ */ diff --git a/libtommath/mtest/mpi.h b/libtommath/mtest/mpi.h index b7a8cb5..1bd0680 100644 --- a/libtommath/mtest/mpi.h +++ b/libtommath/mtest/mpi.h @@ -6,7 +6,7 @@ Arbitrary precision integer arithmetic library - $Id: mpi.h,v 1.1.1.1 2005/01/19 22:41:29 kennykb Exp $ + $Id: mpi.h,v 1.1.1.2 2005/09/26 16:32:17 kennykb Exp $ */ #ifndef _H_MPI_ @@ -225,3 +225,7 @@ int mp_char2value(char ch, int r); const char *mp_strerror(mp_err ec); #endif /* end _H_MPI_ */ + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/mtest/mpi.h,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:17 $ */ diff --git a/libtommath/mtest/mtest.c b/libtommath/mtest/mtest.c index d46f456..f18dc00 100644 --- a/libtommath/mtest/mtest.c +++ b/libtommath/mtest/mtest.c @@ -302,3 +302,7 @@ int main(void) fclose(rng); return 0; } + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/mtest/mtest.c,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:17 $ */ diff --git a/libtommath/poster.pdf b/libtommath/poster.pdf index 4c3e365..faceef1 100644 Binary files a/libtommath/poster.pdf and b/libtommath/poster.pdf differ diff --git a/libtommath/pre_gen/mpi.c b/libtommath/pre_gen/mpi.c index 8ec8a10..78945ac 100644 --- a/libtommath/pre_gen/mpi.c +++ b/libtommath/pre_gen/mpi.c @@ -43,6 +43,10 @@ char *mp_error_to_string(int code) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_error.c */ /* Start: bn_fast_mp_invmod.c */ @@ -191,6 +195,10 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL); } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_fast_mp_invmod.c */ /* Start: bn_fast_mp_montgomery_reduce.c */ @@ -363,6 +371,10 @@ int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_fast_mp_montgomery_reduce.c */ /* Start: bn_fast_s_mp_mul_digs.c */ @@ -438,6 +450,7 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) /* execute loop */ for (iz = 0; iz < iy; ++iz) { _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); + } /* store term */ @@ -472,6 +485,10 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_fast_s_mp_mul_digs.c */ /* Start: bn_fast_s_mp_mul_high_digs.c */ @@ -573,6 +590,10 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_fast_s_mp_mul_high_digs.c */ /* Start: bn_fast_s_mp_sqr.c */ @@ -687,6 +708,10 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_fast_s_mp_sqr.c */ /* Start: bn_mp_2expt.c */ @@ -735,6 +760,10 @@ mp_2expt (mp_int * a, int b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_2expt.c */ /* Start: bn_mp_abs.c */ @@ -778,6 +807,10 @@ mp_abs (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_abs.c */ /* Start: bn_mp_add.c */ @@ -831,6 +864,10 @@ int mp_add (mp_int * a, mp_int * b, mp_int * c) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_add.c */ /* Start: bn_mp_add_d.c */ @@ -940,6 +977,10 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_add_d.c */ /* Start: bn_mp_addmod.c */ @@ -981,6 +1022,10 @@ mp_addmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_addmod.c */ /* Start: bn_mp_and.c */ @@ -1038,6 +1083,10 @@ mp_and (mp_int * a, mp_int * b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_and.c */ /* Start: bn_mp_clamp.c */ @@ -1082,6 +1131,10 @@ mp_clamp (mp_int * a) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_clamp.c */ /* Start: bn_mp_clear.c */ @@ -1126,6 +1179,10 @@ mp_clear (mp_int * a) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_clear.c */ /* Start: bn_mp_clear_multi.c */ @@ -1160,6 +1217,10 @@ void mp_clear_multi(mp_int *mp, ...) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_clear_multi.c */ /* Start: bn_mp_cmp.c */ @@ -1203,6 +1264,10 @@ mp_cmp (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_cmp.c */ /* Start: bn_mp_cmp_d.c */ @@ -1247,6 +1312,10 @@ int mp_cmp_d(mp_int * a, mp_digit b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_cmp_d.c */ /* Start: bn_mp_cmp_mag.c */ @@ -1302,6 +1371,10 @@ int mp_cmp_mag (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_cmp_mag.c */ /* Start: bn_mp_cnt_lsb.c */ @@ -1355,6 +1428,10 @@ int mp_cnt_lsb(mp_int *a) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_cnt_lsb.c */ /* Start: bn_mp_copy.c */ @@ -1423,6 +1500,10 @@ mp_copy (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_copy.c */ /* Start: bn_mp_count_bits.c */ @@ -1468,6 +1549,10 @@ mp_count_bits (mp_int * a) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_count_bits.c */ /* Start: bn_mp_div.c */ @@ -1760,6 +1845,10 @@ LBL_Q:mp_clear (&q); #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_div.c */ /* Start: bn_mp_div_2.c */ @@ -1828,6 +1917,10 @@ int mp_div_2(mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_div_2.c */ /* Start: bn_mp_div_2d.c */ @@ -1925,6 +2018,10 @@ int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_div_2d.c */ /* Start: bn_mp_div_3.c */ @@ -2004,6 +2101,10 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_div_3.c */ /* Start: bn_mp_div_d.c */ @@ -2114,6 +2215,10 @@ int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_div_d.c */ /* Start: bn_mp_dr_is_modulus.c */ @@ -2157,6 +2262,10 @@ int mp_dr_is_modulus(mp_int *a) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_dr_is_modulus.c */ /* Start: bn_mp_dr_reduce.c */ @@ -2251,6 +2360,10 @@ top: } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_dr_reduce.c */ /* Start: bn_mp_dr_setup.c */ @@ -2283,6 +2396,10 @@ void mp_dr_setup(mp_int *a, mp_digit *d) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_dr_setup.c */ /* Start: bn_mp_exch.c */ @@ -2317,6 +2434,10 @@ mp_exch (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_exch.c */ /* Start: bn_mp_expt_d.c */ @@ -2374,6 +2495,10 @@ int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_expt_d.c */ /* Start: bn_mp_exptmod.c */ @@ -2445,7 +2570,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) } /* modified diminished radix reduction */ -#if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) +#if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) && defined(BN_S_MP_EXPTMOD_C) if (mp_reduce_is_2k_l(P) == MP_YES) { return s_mp_exptmod(G, X, P, Y, 1); } @@ -2486,6 +2611,10 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_exptmod.c */ /* Start: bn_mp_exptmod_fast.c */ @@ -2807,6 +2936,10 @@ LBL_M: #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_exptmod_fast.c */ /* Start: bn_mp_exteuclid.c */ @@ -2889,6 +3022,10 @@ _ERR: mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_exteuclid.c */ /* Start: bn_mp_fread.c */ @@ -2956,6 +3093,10 @@ int mp_fread(mp_int *a, int radix, FILE *stream) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_fread.c */ /* Start: bn_mp_fwrite.c */ @@ -3008,6 +3149,10 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_fwrite.c */ /* Start: bn_mp_gcd.c */ @@ -3121,6 +3266,10 @@ LBL_U:mp_clear (&v); } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_gcd.c */ /* Start: bn_mp_get_int.c */ @@ -3166,6 +3315,10 @@ unsigned long mp_get_int(mp_int * a) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_get_int.c */ /* Start: bn_mp_grow.c */ @@ -3223,6 +3376,10 @@ int mp_grow (mp_int * a, int size) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_grow.c */ /* Start: bn_mp_init.c */ @@ -3269,6 +3426,10 @@ int mp_init (mp_int * a) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_init.c */ /* Start: bn_mp_init_copy.c */ @@ -3301,6 +3462,10 @@ int mp_init_copy (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_init_copy.c */ /* Start: bn_mp_init_multi.c */ @@ -3360,6 +3525,10 @@ int mp_init_multi(mp_int *mp, ...) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_init_multi.c */ /* Start: bn_mp_init_set.c */ @@ -3392,6 +3561,10 @@ int mp_init_set (mp_int * a, mp_digit b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_init_set.c */ /* Start: bn_mp_init_set_int.c */ @@ -3423,6 +3596,10 @@ int mp_init_set_int (mp_int * a, unsigned long b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_init_set_int.c */ /* Start: bn_mp_init_size.c */ @@ -3471,6 +3648,10 @@ int mp_init_size (mp_int * a, int size) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_init_size.c */ /* Start: bn_mp_invmod.c */ @@ -3514,6 +3695,10 @@ int mp_invmod (mp_int * a, mp_int * b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_invmod.c */ /* Start: bn_mp_invmod_slow.c */ @@ -3689,6 +3874,10 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL); } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_invmod_slow.c */ /* Start: bn_mp_is_square.c */ @@ -3798,6 +3987,10 @@ ERR:mp_clear(&t); } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_is_square.c */ /* Start: bn_mp_jacobi.c */ @@ -3903,6 +4096,10 @@ LBL_A1:mp_clear (&a1); } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_jacobi.c */ /* Start: bn_mp_karatsuba_mul.c */ @@ -3934,12 +4131,12 @@ LBL_A1:mp_clear (&a1); * b = b1 * B**n + b0 * * Then, a * b => - a1b1 * B**2n + ((a1 - a0)(b1 - b0) + a0b0 + a1b1) * B + a0b0 + a1b1 * B**2n + ((a1 + a0)(b1 + b0) - (a0b0 + a1b1)) * B + a0b0 * * Note that a1b1 and a0b0 are used twice and only need to be * computed once. So in total three half size (half # of * digit) multiplications are performed, a0b0, a1b1 and - * (a1-b1)(a0-b0) + * (a1+b1)(a0+b0) * * Note that a multiplication of half the digits requires * 1/4th the number of single precision multiplications so in @@ -4030,19 +4227,19 @@ int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c) if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY) goto X1Y1; /* x1y1 = x1*y1 */ - /* now calc x1-x0 and y1-y0 */ - if (mp_sub (&x1, &x0, &t1) != MP_OKAY) + /* now calc x1+x0 and y1+y0 */ + if (s_mp_add (&x1, &x0, &t1) != MP_OKAY) goto X1Y1; /* t1 = x1 - x0 */ - if (mp_sub (&y1, &y0, &x0) != MP_OKAY) + if (s_mp_add (&y1, &y0, &x0) != MP_OKAY) goto X1Y1; /* t2 = y1 - y0 */ if (mp_mul (&t1, &x0, &t1) != MP_OKAY) - goto X1Y1; /* t1 = (x1 - x0) * (y1 - y0) */ + goto X1Y1; /* t1 = (x1 + x0) * (y1 + y0) */ /* add x0y0 */ if (mp_add (&x0y0, &x1y1, &x0) != MP_OKAY) goto X1Y1; /* t2 = x0y0 + x1y1 */ - if (mp_sub (&x0, &t1, &t1) != MP_OKAY) - goto X1Y1; /* t1 = x0y0 + x1y1 - (x1-x0)*(y1-y0) */ + if (s_mp_sub (&t1, &x0, &t1) != MP_OKAY) + goto X1Y1; /* t1 = (x1+x0)*(y1+y0) - (x1y1 + x0y0) */ /* shift by B */ if (mp_lshd (&t1, B) != MP_OKAY) @@ -4070,6 +4267,10 @@ ERR: } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_karatsuba_mul.c */ /* Start: bn_mp_karatsuba_sqr.c */ @@ -4155,8 +4356,8 @@ int mp_karatsuba_sqr (mp_int * a, mp_int * b) if (mp_sqr (&x1, &x1x1) != MP_OKAY) goto X1X1; /* x1x1 = x1*x1 */ - /* now calc (x1-x0)**2 */ - if (mp_sub (&x1, &x0, &t1) != MP_OKAY) + /* now calc (x1+x0)**2 */ + if (s_mp_add (&x1, &x0, &t1) != MP_OKAY) goto X1X1; /* t1 = x1 - x0 */ if (mp_sqr (&t1, &t1) != MP_OKAY) goto X1X1; /* t1 = (x1 - x0) * (x1 - x0) */ @@ -4164,8 +4365,8 @@ int mp_karatsuba_sqr (mp_int * a, mp_int * b) /* add x0y0 */ if (s_mp_add (&x0x0, &x1x1, &t2) != MP_OKAY) goto X1X1; /* t2 = x0x0 + x1x1 */ - if (mp_sub (&t2, &t1, &t1) != MP_OKAY) - goto X1X1; /* t1 = x0x0 + x1x1 - (x1-x0)*(x1-x0) */ + if (s_mp_sub (&t1, &t2, &t1) != MP_OKAY) + goto X1X1; /* t1 = (x1+x0)**2 - (x0x0 + x1x1) */ /* shift by B */ if (mp_lshd (&t1, B) != MP_OKAY) @@ -4191,6 +4392,10 @@ ERR: } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_karatsuba_sqr.c */ /* Start: bn_mp_lcm.c */ @@ -4251,6 +4456,10 @@ LBL_T: } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_lcm.c */ /* Start: bn_mp_lshd.c */ @@ -4318,6 +4527,10 @@ int mp_lshd (mp_int * a, int b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_lshd.c */ /* Start: bn_mp_mod.c */ @@ -4366,6 +4579,10 @@ mp_mod (mp_int * a, mp_int * b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_mod.c */ /* Start: bn_mp_mod_2d.c */ @@ -4421,6 +4638,10 @@ mp_mod_2d (mp_int * a, int b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_mod_2d.c */ /* Start: bn_mp_mod_d.c */ @@ -4448,6 +4669,10 @@ mp_mod_d (mp_int * a, mp_digit b, mp_digit * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_mod_d.c */ /* Start: bn_mp_montgomery_calc_normalization.c */ @@ -4507,6 +4732,10 @@ int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_montgomery_calc_normalization.c */ /* Start: bn_mp_montgomery_reduce.c */ @@ -4625,6 +4854,10 @@ mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_montgomery_reduce.c */ /* Start: bn_mp_montgomery_setup.c */ @@ -4684,6 +4917,10 @@ mp_montgomery_setup (mp_int * n, mp_digit * rho) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_montgomery_setup.c */ /* Start: bn_mp_mul.c */ @@ -4750,6 +4987,10 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_mul.c */ /* Start: bn_mp_mul_2.c */ @@ -4832,6 +5073,10 @@ int mp_mul_2(mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_mul_2.c */ /* Start: bn_mp_mul_2d.c */ @@ -4917,6 +5162,10 @@ int mp_mul_2d (mp_int * a, int b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_mul_2d.c */ /* Start: bn_mp_mul_d.c */ @@ -4996,6 +5245,10 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_mul_d.c */ /* Start: bn_mp_mulmod.c */ @@ -5017,8 +5270,7 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) */ /* d = a * b (mod c) */ -int -mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) { int res; mp_int t; @@ -5037,6 +5289,10 @@ mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_mulmod.c */ /* Start: bn_mp_n_root.c */ @@ -5169,6 +5425,10 @@ LBL_T1:mp_clear (&t1); } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_n_root.c */ /* Start: bn_mp_neg.c */ @@ -5209,6 +5469,10 @@ int mp_neg (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_neg.c */ /* Start: bn_mp_or.c */ @@ -5259,6 +5523,10 @@ int mp_or (mp_int * a, mp_int * b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_or.c */ /* Start: bn_mp_prime_fermat.c */ @@ -5321,6 +5589,10 @@ LBL_T:mp_clear (&t); } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_prime_fermat.c */ /* Start: bn_mp_prime_is_divisible.c */ @@ -5371,6 +5643,10 @@ int mp_prime_is_divisible (mp_int * a, int *result) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_prime_is_divisible.c */ /* Start: bn_mp_prime_is_prime.c */ @@ -5454,6 +5730,10 @@ LBL_B:mp_clear (&b); } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_prime_is_prime.c */ /* Start: bn_mp_prime_miller_rabin.c */ @@ -5557,6 +5837,10 @@ LBL_N1:mp_clear (&n1); } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_prime_miller_rabin.c */ /* Start: bn_mp_prime_next_prime.c */ @@ -5727,6 +6011,10 @@ LBL_ERR: #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_prime_next_prime.c */ /* Start: bn_mp_prime_rabin_miller_trials.c */ @@ -5779,6 +6067,10 @@ int mp_prime_rabin_miller_trials(int size) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_prime_rabin_miller_trials.c */ /* Start: bn_mp_prime_random_ex.c */ @@ -5846,10 +6138,8 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback maskOR_msb = 0; maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0; if (flags & LTM_PRIME_2MSB_ON) { - maskOR_msb |= 1 << ((size - 2) & 7); - } else if (flags & LTM_PRIME_2MSB_OFF) { - maskAND &= ~(1 << ((size - 2) & 7)); - } + maskOR_msb |= 0x80 >> ((9 - size) & 7); + } /* get the maskOR_lsb */ maskOR_lsb = 1; @@ -5906,6 +6196,10 @@ error: #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_prime_random_ex.c */ /* Start: bn_mp_radix_size.c */ @@ -5984,6 +6278,10 @@ int mp_radix_size (mp_int * a, int radix, int *size) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_radix_size.c */ /* Start: bn_mp_radix_smap.c */ @@ -6008,6 +6306,10 @@ int mp_radix_size (mp_int * a, int radix, int *size) const char *mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_radix_smap.c */ /* Start: bn_mp_rand.c */ @@ -6063,6 +6365,10 @@ mp_rand (mp_int * a, int digits) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_rand.c */ /* Start: bn_mp_read_radix.c */ @@ -6145,6 +6451,10 @@ int mp_read_radix (mp_int * a, const char *str, int radix) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_read_radix.c */ /* Start: bn_mp_read_signed_bin.c */ @@ -6166,8 +6476,7 @@ int mp_read_radix (mp_int * a, const char *str, int radix) */ /* read signed bin, big endian, first byte is 0==positive or 1==negative */ -int -mp_read_signed_bin (mp_int * a, unsigned char *b, int c) +int mp_read_signed_bin (mp_int * a, const unsigned char *b, int c) { int res; @@ -6187,6 +6496,10 @@ mp_read_signed_bin (mp_int * a, unsigned char *b, int c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_read_signed_bin.c */ /* Start: bn_mp_read_unsigned_bin.c */ @@ -6208,8 +6521,7 @@ mp_read_signed_bin (mp_int * a, unsigned char *b, int c) */ /* reads a unsigned char array, assumes the msb is stored first [big endian] */ -int -mp_read_unsigned_bin (mp_int * a, unsigned char *b, int c) +int mp_read_unsigned_bin (mp_int * a, const unsigned char *b, int c) { int res; @@ -6243,6 +6555,10 @@ mp_read_unsigned_bin (mp_int * a, unsigned char *b, int c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_read_unsigned_bin.c */ /* Start: bn_mp_reduce.c */ @@ -6343,6 +6659,10 @@ CLEANUP: } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_reduce.c */ /* Start: bn_mp_reduce_2k.c */ @@ -6404,6 +6724,10 @@ ERR: #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_reduce_2k.c */ /* Start: bn_mp_reduce_2k_l.c */ @@ -6466,6 +6790,10 @@ ERR: #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_reduce_2k_l.c */ /* Start: bn_mp_reduce_2k_setup.c */ @@ -6513,6 +6841,10 @@ int mp_reduce_2k_setup(mp_int *a, mp_digit *d) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_reduce_2k_setup.c */ /* Start: bn_mp_reduce_2k_setup_l.c */ @@ -6557,6 +6889,10 @@ ERR: } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_reduce_2k_setup_l.c */ /* Start: bn_mp_reduce_is_2k.c */ @@ -6609,6 +6945,10 @@ int mp_reduce_is_2k(mp_int *a) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_reduce_is_2k.c */ /* Start: bn_mp_reduce_is_2k_l.c */ @@ -6653,6 +6993,10 @@ int mp_reduce_is_2k_l(mp_int *a) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_reduce_is_2k_l.c */ /* Start: bn_mp_reduce_setup.c */ @@ -6687,6 +7031,10 @@ int mp_reduce_setup (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_reduce_setup.c */ /* Start: bn_mp_rshd.c */ @@ -6759,6 +7107,10 @@ void mp_rshd (mp_int * a, int b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_rshd.c */ /* Start: bn_mp_set.c */ @@ -6788,6 +7140,10 @@ void mp_set (mp_int * a, mp_digit b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_set.c */ /* Start: bn_mp_set_int.c */ @@ -6836,6 +7192,10 @@ int mp_set_int (mp_int * a, unsigned long b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_set_int.c */ /* Start: bn_mp_shrink.c */ @@ -6871,6 +7231,10 @@ int mp_shrink (mp_int * a) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_shrink.c */ /* Start: bn_mp_signed_bin_size.c */ @@ -6898,6 +7262,10 @@ int mp_signed_bin_size (mp_int * a) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_signed_bin_size.c */ /* Start: bn_mp_sqr.c */ @@ -6956,6 +7324,10 @@ if (a->used >= KARATSUBA_SQR_CUTOFF) { } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_sqr.c */ /* Start: bn_mp_sqrmod.c */ @@ -6997,6 +7369,10 @@ mp_sqrmod (mp_int * a, mp_int * b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_sqrmod.c */ /* Start: bn_mp_sqrt.c */ @@ -7078,6 +7454,10 @@ E2: mp_clear(&t1); #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_sqrt.c */ /* Start: bn_mp_sub.c */ @@ -7137,6 +7517,10 @@ mp_sub (mp_int * a, mp_int * b, mp_int * c) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_sub.c */ /* Start: bn_mp_sub_d.c */ @@ -7226,6 +7610,10 @@ mp_sub_d (mp_int * a, mp_digit b, mp_int * c) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_sub_d.c */ /* Start: bn_mp_submod.c */ @@ -7268,6 +7656,10 @@ mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_submod.c */ /* Start: bn_mp_to_signed_bin.c */ @@ -7301,6 +7693,10 @@ int mp_to_signed_bin (mp_int * a, unsigned char *b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_to_signed_bin.c */ /* Start: bn_mp_to_signed_bin_n.c */ @@ -7332,6 +7728,10 @@ int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_to_signed_bin_n.c */ /* Start: bn_mp_to_unsigned_bin.c */ @@ -7380,6 +7780,10 @@ int mp_to_unsigned_bin (mp_int * a, unsigned char *b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_to_unsigned_bin.c */ /* Start: bn_mp_to_unsigned_bin_n.c */ @@ -7411,6 +7815,10 @@ int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_to_unsigned_bin_n.c */ /* Start: bn_mp_toom_mul.c */ @@ -7695,6 +8103,10 @@ ERR: #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_toom_mul.c */ /* Start: bn_mp_toom_sqr.c */ @@ -7921,6 +8333,10 @@ ERR: #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_toom_sqr.c */ /* Start: bn_mp_toradix.c */ @@ -7996,6 +8412,10 @@ int mp_toradix (mp_int * a, char *str, int radix) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_toradix.c */ /* Start: bn_mp_toradix_n.c */ @@ -8085,6 +8505,10 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_toradix_n.c */ /* Start: bn_mp_unsigned_bin_size.c */ @@ -8113,6 +8537,10 @@ int mp_unsigned_bin_size (mp_int * a) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_unsigned_bin_size.c */ /* Start: bn_mp_xor.c */ @@ -8164,6 +8592,10 @@ mp_xor (mp_int * a, mp_int * b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_xor.c */ /* Start: bn_mp_zero.c */ @@ -8200,6 +8632,10 @@ void mp_zero (mp_int * a) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_mp_zero.c */ /* Start: bn_prime_tab.c */ @@ -8261,6 +8697,10 @@ const mp_digit ltm_prime_tab[] = { }; #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_prime_tab.c */ /* Start: bn_reverse.c */ @@ -8300,6 +8740,10 @@ bn_reverse (unsigned char *s, int len) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_reverse.c */ /* Start: bn_s_mp_add.c */ @@ -8409,6 +8853,10 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_s_mp_add.c */ /* Start: bn_s_mp_exptmod.c */ @@ -8428,7 +8876,6 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) * * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org */ - #ifdef MP_LOW_MEM #define TAB_SIZE 32 #else @@ -8662,6 +9109,10 @@ LBL_M: } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_s_mp_exptmod.c */ /* Start: bn_s_mp_mul_digs.c */ @@ -8752,6 +9203,10 @@ int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_s_mp_mul_digs.c */ /* Start: bn_s_mp_mul_high_digs.c */ @@ -8833,6 +9288,10 @@ s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_s_mp_mul_high_digs.c */ /* Start: bn_s_mp_sqr.c */ @@ -8917,6 +9376,10 @@ int s_mp_sqr (mp_int * a, mp_int * b) } #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_s_mp_sqr.c */ /* Start: bn_s_mp_sub.c */ @@ -9006,6 +9469,10 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bn_s_mp_sub.c */ /* Start: bncore.c */ @@ -9031,17 +9498,21 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) CPU /Compiler /MUL CUTOFF/SQR CUTOFF ------------------------------------------------------------- Intel P4 Northwood /GCC v3.4.1 / 88/ 128/LTM 0.32 ;-) - AMD Athlon64 /GCC v3.4.4 / 74/ 124/LTM 0.34 + AMD Athlon64 /GCC v3.4.4 / 80/ 120/LTM 0.35 */ -int KARATSUBA_MUL_CUTOFF = 74, /* Min. number of digits before Karatsuba multiplication is used. */ - KARATSUBA_SQR_CUTOFF = 124, /* Min. number of digits before Karatsuba squaring is used. */ +int KARATSUBA_MUL_CUTOFF = 80, /* Min. number of digits before Karatsuba multiplication is used. */ + KARATSUBA_SQR_CUTOFF = 120, /* Min. number of digits before Karatsuba squaring is used. */ TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ TOOM_SQR_CUTOFF = 400; #endif +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:22 $ */ + /* End: bncore.c */ diff --git a/libtommath/tommath.h b/libtommath/tommath.h index bcb9d86..43517b4 100644 --- a/libtommath/tommath.h +++ b/libtommath/tommath.h @@ -23,10 +23,13 @@ #include -#undef MIN -#define MIN(x,y) ((x)<(y)?(x):(y)) -#undef MAX -#define MAX(x,y) ((x)>(y)?(x):(y)) +#ifndef MIN + #define MIN(x,y) ((x)<(y)?(x):(y)) +#endif + +#ifndef MAX + #define MAX(x,y) ((x)>(y)?(x):(y)) +#endif #ifdef __cplusplus extern "C" { @@ -112,7 +115,7 @@ extern "C" { #else /* prototypes for our heap functions */ extern void *XMALLOC(size_t n); - extern void *REALLOC(void *p, size_t n); + extern void *XREALLOC(void *p, size_t n); extern void *XCALLOC(size_t n, size_t s); extern void XFREE(void *p); #endif @@ -147,7 +150,6 @@ extern "C" { /* Primality generation flags */ #define LTM_PRIME_BBS 0x0001 /* BBS style prime */ #define LTM_PRIME_SAFE 0x0002 /* Safe prime (p-1)/2 == prime */ -#define LTM_PRIME_2MSB_OFF 0x0004 /* force 2nd MSB to 0 */ #define LTM_PRIME_2MSB_ON 0x0008 /* force 2nd MSB to 1 */ typedef int mp_err; @@ -164,7 +166,7 @@ extern int KARATSUBA_MUL_CUTOFF, /* default precision */ #ifndef MP_PREC #ifndef MP_LOW_MEM - #define MP_PREC 64 /* default digits of precision */ + #define MP_PREC 32 /* default digits of precision */ #else #define MP_PREC 8 /* default digits of precision */ #endif @@ -518,13 +520,13 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback int mp_count_bits(mp_int *a); int mp_unsigned_bin_size(mp_int *a); -int mp_read_unsigned_bin(mp_int *a, unsigned char *b, int c); +int mp_read_unsigned_bin(mp_int *a, const unsigned char *b, int c); int mp_to_unsigned_bin(mp_int *a, unsigned char *b); int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); int mp_signed_bin_size(mp_int *a); -int mp_read_signed_bin(mp_int *a, unsigned char *b, int c); -int mp_to_signed_bin(mp_int *a, unsigned char *b); +int mp_read_signed_bin(mp_int *a, const unsigned char *b, int c); +int mp_to_signed_bin(mp_int *a, unsigned char *b); int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); int mp_read_radix(mp_int *a, const char *str, int radix); @@ -576,3 +578,7 @@ extern const char *mp_s_rmap; #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/tommath.h,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:31:58 $ */ diff --git a/libtommath/tommath.pdf b/libtommath/tommath.pdf index c486d29..08f6a1e 100644 Binary files a/libtommath/tommath.pdf and b/libtommath/tommath.pdf differ diff --git a/libtommath/tommath.src b/libtommath/tommath.src index 7a53860..b392ead 100644 --- a/libtommath/tommath.src +++ b/libtommath/tommath.src @@ -66,7 +66,7 @@ QUALCOMM Australia \\ } } \maketitle -This text has been placed in the public domain. This text corresponds to the v0.35 release of the +This text has been placed in the public domain. This text corresponds to the v0.36 release of the LibTomMath project. \begin{alltt} @@ -2775,26 +2775,25 @@ general purpose multiplication. Given two polynomial basis representations $f(x light algebra \cite{KARAP} that the following polynomial is equivalent to multiplication of the two integers the polynomials represent. \begin{equation} -f(x) \cdot g(x) = acx^2 + ((a - b)(c - d) - (ac + bd))x + bd +f(x) \cdot g(x) = acx^2 + ((a + b)(c + d) - (ac + bd))x + bd \end{equation} Using the observation that $ac$ and $bd$ could be re-used only three half sized multiplications would be required to produce the product. Applying this algorithm recursively, the work factor becomes $O(n^{lg(3)})$ which is substantially better than the work factor $O(n^2)$ of the Comba technique. It turns out what Karatsuba did not know or at least did not publish was that this is simply polynomial basis multiplication with the points -$\zeta_0$, $\zeta_{\infty}$ and $-\zeta_{-1}$. Consider the resultant system of equations. +$\zeta_0$, $\zeta_{\infty}$ and $\zeta_{1}$. Consider the resultant system of equations. \begin{center} \begin{tabular}{rcrcrcrc} $\zeta_{0}$ & $=$ & & & & & $w_0$ \\ -$-\zeta_{-1}$ & $=$ & $-w_2$ & $+$ & $w_1$ & $-$ & $w_0$ \\ +$\zeta_{1}$ & $=$ & $w_2$ & $+$ & $w_1$ & $+$ & $w_0$ \\ $\zeta_{\infty}$ & $=$ & $w_2$ & & & & \\ \end{tabular} \end{center} By adding the first and last equation to the equation in the middle the term $w_1$ can be isolated and all three coefficients solved for. The simplicity of this system of equations has made Karatsuba fairly popular. In fact the cutoff point is often fairly low\footnote{With LibTomMath 0.18 it is 70 and 109 digits for the Intel P4 and AMD Athlon respectively.} -making it an ideal algorithm to speed up certain public key cryptosystems such as RSA and Diffie-Hellman. It is worth noting that the point -$\zeta_1$ could be substituted for $-\zeta_{-1}$. In this case the first and third row are subtracted instead of added to the second row. +making it an ideal algorithm to speed up certain public key cryptosystems such as RSA and Diffie-Hellman. \newpage\begin{figure}[!here] \begin{small} @@ -2817,13 +2816,13 @@ Split the input. e.g. $a = x1 \cdot \beta^B + x0$ \\ Calculate the three products. \\ 8. $x0y0 \leftarrow x0 \cdot y0$ (\textit{mp\_mul}) \\ 9. $x1y1 \leftarrow x1 \cdot y1$ \\ -10. $t1 \leftarrow x1 - x0$ (\textit{mp\_sub}) \\ -11. $x0 \leftarrow y1 - y0$ \\ +10. $t1 \leftarrow x1 + x0$ (\textit{mp\_add}) \\ +11. $x0 \leftarrow y1 + y0$ \\ 12. $t1 \leftarrow t1 \cdot x0$ \\ \\ Calculate the middle term. \\ 13. $x0 \leftarrow x0y0 + x1y1$ \\ -14. $t1 \leftarrow x0 - t1$ \\ +14. $t1 \leftarrow t1 - x0$ (\textit{s\_mp\_sub}) \\ \\ Calculate the final product. \\ 15. $t1 \leftarrow t1 \cdot \beta^B$ (\textit{mp\_lshd}) \\ @@ -2850,7 +2849,7 @@ smallest input \textbf{used} count. After the radix point is chosen the inputs compute the lower halves. Step 6 and 7 computer the upper halves. After the halves have been computed the three intermediate half-size products must be computed. Step 8 and 9 compute the trivial products -$x0 \cdot y0$ and $x1 \cdot y1$. The mp\_int $x0$ is used as a temporary variable after $x1 - x0$ has been computed. By using $x0$ instead +$x0 \cdot y0$ and $x1 \cdot y1$. The mp\_int $x0$ is used as a temporary variable after $x1 + x0$ has been computed. By using $x0$ instead of an additional temporary variable, the algorithm can avoid an addition memory allocation operation. The remaining steps 13 through 18 compute the Karatsuba polynomial through a variety of digit shifting and addition operations. @@ -3246,10 +3245,10 @@ Let $h(x) = \left ( f(x) \right )^2$ represent the square of the polynomial. Th number with the following equation. \begin{equation} -h(x) = a^2x^2 + \left (a^2 + b^2 - (a - b)^2 \right )x + b^2 +h(x) = a^2x^2 + \left ((a + b)^2 - (a^2 + b^2) \right )x + b^2 \end{equation} -Upon closer inspection this equation only requires the calculation of three half-sized squares: $a^2$, $b^2$ and $(a - b)^2$. As in +Upon closer inspection this equation only requires the calculation of three half-sized squares: $a^2$, $b^2$ and $(a + b)^2$. As in Karatsuba multiplication, this algorithm can be applied recursively on the input and will achieve an asymptotic running time of $O \left ( n^{lg(3)} \right )$. @@ -3281,12 +3280,12 @@ Split the input. e.g. $a = x1\beta^B + x0$ \\ Calculate the three squares. \\ 6. $x0x0 \leftarrow x0^2$ (\textit{mp\_sqr}) \\ 7. $x1x1 \leftarrow x1^2$ \\ -8. $t1 \leftarrow x1 - x0$ (\textit{mp\_sub}) \\ +8. $t1 \leftarrow x1 + x0$ (\textit{s\_mp\_add}) \\ 9. $t1 \leftarrow t1^2$ \\ \\ Compute the middle term. \\ 10. $t2 \leftarrow x0x0 + x1x1$ (\textit{s\_mp\_add}) \\ -11. $t1 \leftarrow t2 - t1$ \\ +11. $t1 \leftarrow t1 - t2$ \\ \\ Compute final product. \\ 12. $t1 \leftarrow t1\beta^B$ (\textit{mp\_lshd}) \\ @@ -3309,7 +3308,7 @@ The radix point for squaring is simply placed exactly in the middle of the digit placed just below the middle. Step 3, 4 and 5 compute the two halves required using $B$ as the radix point. The first two squares in steps 6 and 7 are rather straightforward while the last square is of a more compact form. -By expanding $\left (x1 - x0 \right )^2$, the $x1^2$ and $x0^2$ terms in the middle disappear, that is $x1^2 + x0^2 - (x1 - x0)^2 = 2 \cdot x0 \cdot x1$. +By expanding $\left (x1 + x0 \right )^2$, the $x1^2$ and $x0^2$ terms in the middle disappear, that is $(x0 - x1)^2 - (x1^2 + x0^2) = 2 \cdot x0 \cdot x1$. Now if $5n$ single precision additions and a squaring of $n$-digits is faster than multiplying two $n$-digit numbers and doubling then this method is faster. Assuming no further recursions occur, the difference can be estimated with the following inequality. @@ -4035,7 +4034,7 @@ To calculate the variable $\rho$ a relatively simple algorithm will be required. \hline \\ 1. $b \leftarrow n_0$ \\ 2. If $b$ is even return(\textit{MP\_VAL}) \\ -3. $x \leftarrow ((b + 2) \mbox{ AND } 4) << 1) + b$ \\ +3. $x \leftarrow (((b + 2) \mbox{ AND } 4) << 1) + b$ \\ 4. for $k$ from 0 to $\lceil lg(lg(\beta)) \rceil - 2$ do \\ \hspace{3mm}4.1 $x \leftarrow x \cdot (2 - bx)$ \\ 5. $\rho \leftarrow \beta - x \mbox{ (mod }\beta\mbox{)}$ \\ diff --git a/libtommath/tommath.tex b/libtommath/tommath.tex index b016010..b69421b 100644 --- a/libtommath/tommath.tex +++ b/libtommath/tommath.tex @@ -66,7 +66,7 @@ QUALCOMM Australia \\ } } \maketitle -This text has been placed in the public domain. This text corresponds to the v0.35 release of the +This text has been placed in the public domain. This text corresponds to the v0.36 release of the LibTomMath project. \begin{alltt} @@ -814,6 +814,7 @@ decrementally. 039 return MP_OKAY; 040 \} 041 #endif +042 \end{alltt} \end{small} @@ -902,6 +903,7 @@ with the exception of algorithms mp\_init, mp\_init\_copy, mp\_init\_size and mp 037 \} 038 \} 039 #endif +040 \end{alltt} \end{small} @@ -1008,6 +1010,7 @@ assumed to contain undefined values they are initially set to zero. 050 return MP_OKAY; 051 \} 052 #endif +053 \end{alltt} \end{small} @@ -1096,6 +1099,7 @@ correct no further memory re-allocations are required to work with the mp\_int. 041 return MP_OKAY; 042 \} 043 #endif +044 \end{alltt} \end{small} @@ -1183,6 +1187,7 @@ initialization which allows for quick recovery from runtime errors. 052 \} 053 054 #endif +055 \end{alltt} \end{small} @@ -1268,6 +1273,7 @@ when all of the digits are zero to ensure that the mp\_int is valid at all times 037 \} 038 \} 039 #endif +040 \end{alltt} \end{small} @@ -1405,6 +1411,7 @@ implement the pseudo-code. 061 return MP_OKAY; 062 \} 063 #endif +064 \end{alltt} \end{small} @@ -1519,6 +1526,7 @@ such this algorithm will perform two operations in one step. 025 return mp_copy (b, a); 026 \} 027 #endif +028 \end{alltt} \end{small} @@ -1570,6 +1578,7 @@ This algorithm simply resets a mp\_int to the default state. 029 \} 030 \} 031 #endif +032 \end{alltt} \end{small} @@ -1631,6 +1640,7 @@ logic to handle it. 036 return MP_OKAY; 037 \} 038 #endif +039 \end{alltt} \end{small} @@ -1692,6 +1702,7 @@ zero as negative. 033 return MP_OKAY; 034 \} 035 #endif +036 \end{alltt} \end{small} @@ -1739,6 +1750,7 @@ single digit is set (\textit{modulo $\beta$}) and the \textbf{used} count is adj 022 a->used = (a->dp[0] != 0) ? 1 : 0; 023 \} 024 #endif +025 \end{alltt} \end{small} @@ -1819,6 +1831,7 @@ Excess zero digits are trimmed in steps 2.1 and 3 by using higher level algorith 041 return MP_OKAY; 042 \} 043 #endif +044 \end{alltt} \end{small} @@ -1921,6 +1934,7 @@ the zero'th digit. If after all of the digits have been compared, no difference 048 return MP_EQ; 049 \} 050 #endif +051 \end{alltt} \end{small} @@ -1987,6 +2001,7 @@ $\vert a \vert < \vert b \vert$. Step number four will compare the two when the 036 \} 037 \} 038 #endif +039 \end{alltt} \end{small} @@ -2205,6 +2220,7 @@ The final carry is stored in $c_{max}$ and digits above $max$ upto $oldused$ are 102 return MP_OKAY; 103 \} 104 #endif +105 \end{alltt} \end{small} @@ -2376,6 +2392,7 @@ If $b$ has a smaller magnitude than $a$ then step 9 will force the carry and cop 082 \} 083 084 #endif +085 \end{alltt} \end{small} @@ -2511,6 +2528,7 @@ within algorithm s\_mp\_add will force $-0$ to become $0$. 046 \} 047 048 #endif +049 \end{alltt} \end{small} @@ -2623,6 +2641,7 @@ algorithm from producing $-a - -a = -0$ as a result. 052 \} 053 054 #endif +055 \end{alltt} \end{small} @@ -2757,6 +2776,7 @@ Step 8 clears any leading digits of $b$ in case it originally had a larger magni 075 return MP_OKAY; 076 \} 077 #endif +078 \end{alltt} \end{small} @@ -2857,6 +2877,7 @@ least significant bit not the most significant bit. 061 return MP_OKAY; 062 \} 063 #endif +064 \end{alltt} \end{small} @@ -2977,6 +2998,7 @@ step 8 sets the lower $b$ digits to zero. 060 return MP_OKAY; 061 \} 062 #endif +063 \end{alltt} \end{small} @@ -3088,6 +3110,7 @@ Once the window copy is complete the upper digits must be zeroed and the \textbf 065 a->used -= b; 066 \} 067 #endif +068 \end{alltt} \end{small} @@ -3221,6 +3244,7 @@ complete. It is possible to optimize this algorithm down to a $O(n)$ algorithm 078 return MP_OKAY; 079 \} 080 #endif +081 \end{alltt} \end{small} @@ -3357,6 +3381,7 @@ by using algorithm mp\_mod\_2d. 090 return MP_OKAY; 091 \} 092 #endif +093 \end{alltt} \end{small} @@ -3448,6 +3473,7 @@ is copied to $b$, leading digits are removed and the remaining leading digit is 048 return MP_OKAY; 049 \} 050 #endif +051 \end{alltt} \end{small} @@ -3687,6 +3713,7 @@ exceed the precision requested. 083 return MP_OKAY; 084 \} 085 #endif +086 \end{alltt} \end{small} @@ -3942,39 +3969,41 @@ and addition operations in the nested loop in parallel. 069 /* execute loop */ 070 for (iz = 0; iz < iy; ++iz) \{ 071 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); -072 \} -073 -074 /* store term */ -075 W[ix] = ((mp_digit)_W) & MP_MASK; -076 -077 /* make next carry */ -078 _W = _W >> ((mp_word)DIGIT_BIT); -079 \} -080 -081 /* store final carry */ -082 W[ix] = (mp_digit)(_W & MP_MASK); -083 -084 /* setup dest */ -085 olduse = c->used; -086 c->used = pa; -087 -088 \{ -089 register mp_digit *tmpc; -090 tmpc = c->dp; -091 for (ix = 0; ix < pa+1; ix++) \{ -092 /* now extract the previous digit [below the carry] */ -093 *tmpc++ = W[ix]; -094 \} -095 -096 /* clear unused digits [that existed in the old copy of c] */ -097 for (; ix < olduse; ix++) \{ -098 *tmpc++ = 0; -099 \} -100 \} -101 mp_clamp (c); -102 return MP_OKAY; -103 \} -104 #endif +072 +073 \} +074 +075 /* store term */ +076 W[ix] = ((mp_digit)_W) & MP_MASK; +077 +078 /* make next carry */ +079 _W = _W >> ((mp_word)DIGIT_BIT); +080 \} +081 +082 /* store final carry */ +083 W[ix] = (mp_digit)(_W & MP_MASK); +084 +085 /* setup dest */ +086 olduse = c->used; +087 c->used = pa; +088 +089 \{ +090 register mp_digit *tmpc; +091 tmpc = c->dp; +092 for (ix = 0; ix < pa+1; ix++) \{ +093 /* now extract the previous digit [below the carry] */ +094 *tmpc++ = W[ix]; +095 \} +096 +097 /* clear unused digits [that existed in the old copy of c] */ +098 for (; ix < olduse; ix++) \{ +099 *tmpc++ = 0; +100 \} +101 \} +102 mp_clamp (c); +103 return MP_OKAY; +104 \} +105 #endif +106 \end{alltt} \end{small} @@ -3982,7 +4011,7 @@ As per the pseudo--code we first calculate $pa$ (line 47) as the number of digit to produce the individual columns of the product. We use the two aliases $tmpx$ and $tmpy$ (lines 61, 62) to point inside the two multiplicands quickly. -The inner loop (lines 70 to 72) of this implementation is where the tradeoff come into play. Originally this comba +The inner loop (lines 70 to 73) of this implementation is where the tradeoff come into play. Originally this comba implementation was ``row--major'' which means it adds to each of the columns in each pass. After the outer loop it would then fix the carries. This was very fast except it had an annoying drawback. You had to read a mp\_word and two mp\_digits and write one mp\_word per iteration. On processors such as the Athlon XP and P4 this did not matter much since the cache bandwidth @@ -3990,8 +4019,8 @@ is very high and it can keep the ALU fed with data. It did, however, matter on slower and also often doesn't exist. This new algorithm only performs two reads per iteration under the assumption that the compiler has aliased $\_ \hat W$ to a CPU register. -After the inner loop we store the current accumulator in $W$ and shift $\_ \hat W$ (lines 75, 78) to forward it as -a carry for the next pass. After the outer loop we use the final carry (line 82) as the last digit of the product. +After the inner loop we store the current accumulator in $W$ and shift $\_ \hat W$ (lines 76, 79) to forward it as +a carry for the next pass. After the outer loop we use the final carry (line 83) as the last digit of the product. \subsection{Polynomial Basis Multiplication} To break the $O(n^2)$ barrier in multiplication requires a completely different look at integer multiplication. In the following algorithms @@ -4095,26 +4124,25 @@ general purpose multiplication. Given two polynomial basis representations $f(x light algebra \cite{KARAP} that the following polynomial is equivalent to multiplication of the two integers the polynomials represent. \begin{equation} -f(x) \cdot g(x) = acx^2 + ((a - b)(c - d) - (ac + bd))x + bd +f(x) \cdot g(x) = acx^2 + ((a + b)(c + d) - (ac + bd))x + bd \end{equation} Using the observation that $ac$ and $bd$ could be re-used only three half sized multiplications would be required to produce the product. Applying this algorithm recursively, the work factor becomes $O(n^{lg(3)})$ which is substantially better than the work factor $O(n^2)$ of the Comba technique. It turns out what Karatsuba did not know or at least did not publish was that this is simply polynomial basis multiplication with the points -$\zeta_0$, $\zeta_{\infty}$ and $-\zeta_{-1}$. Consider the resultant system of equations. +$\zeta_0$, $\zeta_{\infty}$ and $\zeta_{1}$. Consider the resultant system of equations. \begin{center} \begin{tabular}{rcrcrcrc} $\zeta_{0}$ & $=$ & & & & & $w_0$ \\ -$-\zeta_{-1}$ & $=$ & $-w_2$ & $+$ & $w_1$ & $-$ & $w_0$ \\ +$\zeta_{1}$ & $=$ & $w_2$ & $+$ & $w_1$ & $+$ & $w_0$ \\ $\zeta_{\infty}$ & $=$ & $w_2$ & & & & \\ \end{tabular} \end{center} By adding the first and last equation to the equation in the middle the term $w_1$ can be isolated and all three coefficients solved for. The simplicity of this system of equations has made Karatsuba fairly popular. In fact the cutoff point is often fairly low\footnote{With LibTomMath 0.18 it is 70 and 109 digits for the Intel P4 and AMD Athlon respectively.} -making it an ideal algorithm to speed up certain public key cryptosystems such as RSA and Diffie-Hellman. It is worth noting that the point -$\zeta_1$ could be substituted for $-\zeta_{-1}$. In this case the first and third row are subtracted instead of added to the second row. +making it an ideal algorithm to speed up certain public key cryptosystems such as RSA and Diffie-Hellman. \newpage\begin{figure}[!here] \begin{small} @@ -4137,13 +4165,13 @@ Split the input. e.g. $a = x1 \cdot \beta^B + x0$ \\ Calculate the three products. \\ 8. $x0y0 \leftarrow x0 \cdot y0$ (\textit{mp\_mul}) \\ 9. $x1y1 \leftarrow x1 \cdot y1$ \\ -10. $t1 \leftarrow x1 - x0$ (\textit{mp\_sub}) \\ -11. $x0 \leftarrow y1 - y0$ \\ +10. $t1 \leftarrow x1 + x0$ (\textit{mp\_add}) \\ +11. $x0 \leftarrow y1 + y0$ \\ 12. $t1 \leftarrow t1 \cdot x0$ \\ \\ Calculate the middle term. \\ 13. $x0 \leftarrow x0y0 + x1y1$ \\ -14. $t1 \leftarrow x0 - t1$ \\ +14. $t1 \leftarrow t1 - x0$ (\textit{s\_mp\_sub}) \\ \\ Calculate the final product. \\ 15. $t1 \leftarrow t1 \cdot \beta^B$ (\textit{mp\_lshd}) \\ @@ -4170,7 +4198,7 @@ smallest input \textbf{used} count. After the radix point is chosen the inputs compute the lower halves. Step 6 and 7 computer the upper halves. After the halves have been computed the three intermediate half-size products must be computed. Step 8 and 9 compute the trivial products -$x0 \cdot y0$ and $x1 \cdot y1$. The mp\_int $x0$ is used as a temporary variable after $x1 - x0$ has been computed. By using $x0$ instead +$x0 \cdot y0$ and $x1 \cdot y1$. The mp\_int $x0$ is used as a temporary variable after $x1 + x0$ has been computed. By using $x0$ instead of an additional temporary variable, the algorithm can avoid an addition memory allocation operation. The remaining steps 13 through 18 compute the Karatsuba polynomial through a variety of digit shifting and addition operations. @@ -4191,12 +4219,12 @@ The remaining steps 13 through 18 compute the Karatsuba polynomial through a var 025 * b = b1 * B**n + b0 026 * 027 * Then, a * b => -028 a1b1 * B**2n + ((a1 - a0)(b1 - b0) + a0b0 + a1b1) * B + a0b0 +028 a1b1 * B**2n + ((a1 + a0)(b1 + b0) - (a0b0 + a1b1)) * B + a0b0 029 * 030 * Note that a1b1 and a0b0 are used twice and only need to be 031 * computed once. So in total three half size (half # of 032 * digit) multiplications are performed, a0b0, a1b1 and -033 * (a1-b1)(a0-b0) +033 * (a1+b1)(a0+b0) 034 * 035 * Note that a multiplication of half the digits requires 036 * 1/4th the number of single precision multiplications so in @@ -4287,19 +4315,19 @@ The remaining steps 13 through 18 compute the Karatsuba polynomial through a var 121 if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY) 122 goto X1Y1; /* x1y1 = x1*y1 */ 123 -124 /* now calc x1-x0 and y1-y0 */ -125 if (mp_sub (&x1, &x0, &t1) != MP_OKAY) +124 /* now calc x1+x0 and y1+y0 */ +125 if (s_mp_add (&x1, &x0, &t1) != MP_OKAY) 126 goto X1Y1; /* t1 = x1 - x0 */ -127 if (mp_sub (&y1, &y0, &x0) != MP_OKAY) +127 if (s_mp_add (&y1, &y0, &x0) != MP_OKAY) 128 goto X1Y1; /* t2 = y1 - y0 */ 129 if (mp_mul (&t1, &x0, &t1) != MP_OKAY) -130 goto X1Y1; /* t1 = (x1 - x0) * (y1 - y0) */ +130 goto X1Y1; /* t1 = (x1 + x0) * (y1 + y0) */ 131 132 /* add x0y0 */ 133 if (mp_add (&x0y0, &x1y1, &x0) != MP_OKAY) 134 goto X1Y1; /* t2 = x0y0 + x1y1 */ -135 if (mp_sub (&x0, &t1, &t1) != MP_OKAY) -136 goto X1Y1; /* t1 = x0y0 + x1y1 - (x1-x0)*(y1-y0) */ +135 if (s_mp_sub (&t1, &x0, &t1) != MP_OKAY) +136 goto X1Y1; /* t1 = (x1+x0)*(y1+y0) - (x1y1 + x0y0) */ 137 138 /* shift by B */ 139 if (mp_lshd (&t1, B) != MP_OKAY) @@ -4326,6 +4354,7 @@ The remaining steps 13 through 18 compute the Karatsuba polynomial through a var 160 return err; 161 \} 162 #endif +163 \end{alltt} \end{small} @@ -4729,6 +4758,7 @@ result $a \cdot b$ is produced. 277 \} 278 279 #endif +280 \end{alltt} \end{small} @@ -4837,6 +4867,7 @@ s\_mp\_mul\_digs will clear it. 059 return res; 060 \} 061 #endif +062 \end{alltt} \end{small} @@ -5006,6 +5037,7 @@ results calculated so far. This involves expensive carry propagation which will 077 return MP_OKAY; 078 \} 079 #endif +080 \end{alltt} \end{small} @@ -5188,6 +5220,7 @@ only to even outputs and it is the square of the term at the $\lfloor ix / 2 \rf 107 return MP_OKAY; 108 \} 109 #endif +110 \end{alltt} \end{small} @@ -5205,10 +5238,10 @@ Let $h(x) = \left ( f(x) \right )^2$ represent the square of the polynomial. Th number with the following equation. \begin{equation} -h(x) = a^2x^2 + \left (a^2 + b^2 - (a - b)^2 \right )x + b^2 +h(x) = a^2x^2 + \left ((a + b)^2 - (a^2 + b^2) \right )x + b^2 \end{equation} -Upon closer inspection this equation only requires the calculation of three half-sized squares: $a^2$, $b^2$ and $(a - b)^2$. As in +Upon closer inspection this equation only requires the calculation of three half-sized squares: $a^2$, $b^2$ and $(a + b)^2$. As in Karatsuba multiplication, this algorithm can be applied recursively on the input and will achieve an asymptotic running time of $O \left ( n^{lg(3)} \right )$. @@ -5240,12 +5273,12 @@ Split the input. e.g. $a = x1\beta^B + x0$ \\ Calculate the three squares. \\ 6. $x0x0 \leftarrow x0^2$ (\textit{mp\_sqr}) \\ 7. $x1x1 \leftarrow x1^2$ \\ -8. $t1 \leftarrow x1 - x0$ (\textit{mp\_sub}) \\ +8. $t1 \leftarrow x1 + x0$ (\textit{s\_mp\_add}) \\ 9. $t1 \leftarrow t1^2$ \\ \\ Compute the middle term. \\ 10. $t2 \leftarrow x0x0 + x1x1$ (\textit{s\_mp\_add}) \\ -11. $t1 \leftarrow t2 - t1$ \\ +11. $t1 \leftarrow t1 - t2$ \\ \\ Compute final product. \\ 12. $t1 \leftarrow t1\beta^B$ (\textit{mp\_lshd}) \\ @@ -5268,7 +5301,7 @@ The radix point for squaring is simply placed exactly in the middle of the digit placed just below the middle. Step 3, 4 and 5 compute the two halves required using $B$ as the radix point. The first two squares in steps 6 and 7 are rather straightforward while the last square is of a more compact form. -By expanding $\left (x1 - x0 \right )^2$, the $x1^2$ and $x0^2$ terms in the middle disappear, that is $x1^2 + x0^2 - (x1 - x0)^2 = 2 \cdot x0 \cdot x1$. +By expanding $\left (x1 + x0 \right )^2$, the $x1^2$ and $x0^2$ terms in the middle disappear, that is $(x0 - x1)^2 - (x1^2 + x0^2) = 2 \cdot x0 \cdot x1$. Now if $5n$ single precision additions and a squaring of $n$-digits is faster than multiplying two $n$-digit numbers and doubling then this method is faster. Assuming no further recursions occur, the difference can be estimated with the following inequality. @@ -5363,8 +5396,8 @@ ratio of 1:7. } than simpler operations such as addition. 079 if (mp_sqr (&x1, &x1x1) != MP_OKAY) 080 goto X1X1; /* x1x1 = x1*x1 */ 081 -082 /* now calc (x1-x0)**2 */ -083 if (mp_sub (&x1, &x0, &t1) != MP_OKAY) +082 /* now calc (x1+x0)**2 */ +083 if (s_mp_add (&x1, &x0, &t1) != MP_OKAY) 084 goto X1X1; /* t1 = x1 - x0 */ 085 if (mp_sqr (&t1, &t1) != MP_OKAY) 086 goto X1X1; /* t1 = (x1 - x0) * (x1 - x0) */ @@ -5372,8 +5405,8 @@ ratio of 1:7. } than simpler operations such as addition. 088 /* add x0y0 */ 089 if (s_mp_add (&x0x0, &x1x1, &t2) != MP_OKAY) 090 goto X1X1; /* t2 = x0x0 + x1x1 */ -091 if (mp_sub (&t2, &t1, &t1) != MP_OKAY) -092 goto X1X1; /* t1 = x0x0 + x1x1 - (x1-x0)*(x1-x0) */ +091 if (s_mp_sub (&t1, &t2, &t1) != MP_OKAY) +092 goto X1X1; /* t1 = (x1+x0)**2 - (x0x0 + x1x1) */ 093 094 /* shift by B */ 095 if (mp_lshd (&t1, B) != MP_OKAY) @@ -5398,6 +5431,7 @@ ratio of 1:7. } than simpler operations such as addition. 114 return err; 115 \} 116 #endif +117 \end{alltt} \end{small} @@ -5494,6 +5528,7 @@ neither of the polynomial basis algorithms should be used then either the Comba 051 return res; 052 \} 053 #endif +054 \end{alltt} \end{small} @@ -5827,6 +5862,7 @@ performed at most twice, and on average once. However, if $a \ge b^2$ than it wi 093 return res; 094 \} 095 #endif +096 \end{alltt} \end{small} @@ -5879,6 +5915,7 @@ is equivalent and much faster. The final value is computed by taking the intege 027 return mp_div (a, b, a, NULL); 028 \} 029 #endif +030 \end{alltt} \end{small} @@ -6234,6 +6271,7 @@ multiplications. 111 return MP_OKAY; 112 \} 113 #endif +114 \end{alltt} \end{small} @@ -6478,6 +6516,7 @@ stored in the destination $x$. 165 return MP_OKAY; 166 \} 167 #endif +168 \end{alltt} \end{small} @@ -6505,7 +6544,7 @@ To calculate the variable $\rho$ a relatively simple algorithm will be required. \hline \\ 1. $b \leftarrow n_0$ \\ 2. If $b$ is even return(\textit{MP\_VAL}) \\ -3. $x \leftarrow ((b + 2) \mbox{ AND } 4) << 1) + b$ \\ +3. $x \leftarrow (((b + 2) \mbox{ AND } 4) << 1) + b$ \\ 4. for $k$ from 0 to $\lceil lg(lg(\beta)) \rceil - 2$ do \\ \hspace{3mm}4.1 $x \leftarrow x \cdot (2 - bx)$ \\ 5. $\rho \leftarrow \beta - x \mbox{ (mod }\beta\mbox{)}$ \\ @@ -6564,6 +6603,7 @@ to calculate $1/n_0$ when $\beta$ is a power of two. 052 return MP_OKAY; 053 \} 054 #endif +055 \end{alltt} \end{small} @@ -6830,6 +6870,7 @@ at step 3. 087 return MP_OKAY; 088 \} 089 #endif +090 \end{alltt} \end{small} @@ -6885,6 +6926,7 @@ completeness. 025 \} 026 027 #endif +028 \end{alltt} \end{small} @@ -6943,6 +6985,7 @@ step 3 then $n$ must be of Diminished Radix form. 036 \} 037 038 #endif +039 \end{alltt} \end{small} @@ -7027,6 +7070,7 @@ shift which makes the algorithm fairly inexpensive to use. 054 \} 055 056 #endif +057 \end{alltt} \end{small} @@ -7096,6 +7140,7 @@ is sufficient to solve for $k$. Alternatively if $n$ has more than one digit th 040 return MP_OKAY; 041 \} 042 #endif +043 \end{alltt} \end{small} @@ -7172,6 +7217,7 @@ This algorithm quickly determines if a modulus is of the form required for algor 045 \} 046 047 #endif +048 \end{alltt} \end{small} @@ -7381,6 +7427,7 @@ iteration of the loop moves the bits of the exponent $b$ upwards to the most sig 050 return MP_OKAY; 051 \} 052 #endif +053 \end{alltt} \end{small} @@ -7620,7 +7667,8 @@ algorithm since their arguments are essentially the same (\textit{two mp\_ints a 065 \} 066 067 /* modified diminished radix reduction */ -068 #if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) +068 #if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) && defin + ed(BN_S_MP_EXPTMOD_C) 069 if (mp_reduce_is_2k_l(P) == MP_YES) \{ 070 return s_mp_exptmod(G, X, P, Y, 1); 071 \} @@ -7660,6 +7708,7 @@ algorithm since their arguments are essentially the same (\textit{two mp\_ints a 105 \} 106 107 #endif +108 \end{alltt} \end{small} @@ -7839,251 +7888,251 @@ a Left-to-Right algorithm is used to process the remaining few bits. \hspace{-5.1mm}{\bf File}: bn\_s\_mp\_exptmod.c \vspace{-3mm} \begin{alltt} -016 -017 #ifdef MP_LOW_MEM -018 #define TAB_SIZE 32 -019 #else -020 #define TAB_SIZE 256 -021 #endif -022 -023 int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmod +016 #ifdef MP_LOW_MEM +017 #define TAB_SIZE 32 +018 #else +019 #define TAB_SIZE 256 +020 #endif +021 +022 int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmod e) -024 \{ -025 mp_int M[TAB_SIZE], res, mu; -026 mp_digit buf; -027 int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; -028 int (*redux)(mp_int*,mp_int*,mp_int*); -029 -030 /* find window size */ -031 x = mp_count_bits (X); -032 if (x <= 7) \{ -033 winsize = 2; -034 \} else if (x <= 36) \{ -035 winsize = 3; -036 \} else if (x <= 140) \{ -037 winsize = 4; -038 \} else if (x <= 450) \{ -039 winsize = 5; -040 \} else if (x <= 1303) \{ -041 winsize = 6; -042 \} else if (x <= 3529) \{ -043 winsize = 7; -044 \} else \{ -045 winsize = 8; -046 \} -047 -048 #ifdef MP_LOW_MEM -049 if (winsize > 5) \{ -050 winsize = 5; -051 \} -052 #endif -053 -054 /* init M array */ -055 /* init first cell */ -056 if ((err = mp_init(&M[1])) != MP_OKAY) \{ -057 return err; -058 \} -059 -060 /* now init the second half of the array */ -061 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ -062 if ((err = mp_init(&M[x])) != MP_OKAY) \{ -063 for (y = 1<<(winsize-1); y < x; y++) \{ -064 mp_clear (&M[y]); -065 \} -066 mp_clear(&M[1]); -067 return err; -068 \} -069 \} -070 -071 /* create mu, used for Barrett reduction */ -072 if ((err = mp_init (&mu)) != MP_OKAY) \{ -073 goto LBL_M; -074 \} -075 -076 if (redmode == 0) \{ -077 if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) \{ -078 goto LBL_MU; -079 \} -080 redux = mp_reduce; -081 \} else \{ -082 if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) \{ -083 goto LBL_MU; -084 \} -085 redux = mp_reduce_2k_l; -086 \} -087 -088 /* create M table -089 * -090 * The M table contains powers of the base, -091 * e.g. M[x] = G**x mod P -092 * -093 * The first half of the table is not -094 * computed though accept for M[0] and M[1] -095 */ -096 if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) \{ -097 goto LBL_MU; -098 \} -099 -100 /* compute the value at M[1<<(winsize-1)] by squaring -101 * M[1] (winsize-1) times -102 */ -103 if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) \{ -104 goto LBL_MU; -105 \} -106 -107 for (x = 0; x < (winsize - 1); x++) \{ -108 /* square it */ -109 if ((err = mp_sqr (&M[1 << (winsize - 1)], -110 &M[1 << (winsize - 1)])) != MP_OKAY) \{ -111 goto LBL_MU; -112 \} -113 -114 /* reduce modulo P */ -115 if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) \{ -116 goto LBL_MU; -117 \} -118 \} -119 -120 /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) -121 * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) -122 */ -123 for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) \{ -124 if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) \{ -125 goto LBL_MU; -126 \} -127 if ((err = redux (&M[x], P, &mu)) != MP_OKAY) \{ -128 goto LBL_MU; -129 \} -130 \} -131 -132 /* setup result */ -133 if ((err = mp_init (&res)) != MP_OKAY) \{ -134 goto LBL_MU; -135 \} -136 mp_set (&res, 1); -137 -138 /* set initial mode and bit cnt */ -139 mode = 0; -140 bitcnt = 1; -141 buf = 0; -142 digidx = X->used - 1; -143 bitcpy = 0; -144 bitbuf = 0; -145 -146 for (;;) \{ -147 /* grab next digit as required */ -148 if (--bitcnt == 0) \{ -149 /* if digidx == -1 we are out of digits */ -150 if (digidx == -1) \{ -151 break; -152 \} -153 /* read next digit and reset the bitcnt */ -154 buf = X->dp[digidx--]; -155 bitcnt = (int) DIGIT_BIT; -156 \} -157 -158 /* grab the next msb from the exponent */ -159 y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; -160 buf <<= (mp_digit)1; -161 -162 /* if the bit is zero and mode == 0 then we ignore it -163 * These represent the leading zero bits before the first 1 bit -164 * in the exponent. Technically this opt is not required but it -165 * does lower the # of trivial squaring/reductions used -166 */ -167 if (mode == 0 && y == 0) \{ -168 continue; -169 \} -170 -171 /* if the bit is zero and mode == 1 then we square */ -172 if (mode == 1 && y == 0) \{ -173 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -174 goto LBL_RES; -175 \} -176 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -177 goto LBL_RES; -178 \} -179 continue; -180 \} -181 -182 /* else we add it to the window */ -183 bitbuf |= (y << (winsize - ++bitcpy)); -184 mode = 2; -185 -186 if (bitcpy == winsize) \{ -187 /* ok window is filled so square as required and multiply */ -188 /* square first */ -189 for (x = 0; x < winsize; x++) \{ -190 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -191 goto LBL_RES; -192 \} -193 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -194 goto LBL_RES; -195 \} -196 \} -197 -198 /* then multiply */ -199 if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) \{ -200 goto LBL_RES; -201 \} -202 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -203 goto LBL_RES; -204 \} -205 -206 /* empty window and reset */ -207 bitcpy = 0; -208 bitbuf = 0; -209 mode = 1; -210 \} -211 \} -212 -213 /* if bits remain then square/multiply */ -214 if (mode == 2 && bitcpy > 0) \{ -215 /* square then multiply if the bit is set */ -216 for (x = 0; x < bitcpy; x++) \{ -217 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -218 goto LBL_RES; -219 \} -220 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -221 goto LBL_RES; -222 \} -223 -224 bitbuf <<= 1; -225 if ((bitbuf & (1 << winsize)) != 0) \{ -226 /* then multiply */ -227 if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) \{ -228 goto LBL_RES; -229 \} -230 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -231 goto LBL_RES; -232 \} -233 \} -234 \} -235 \} -236 -237 mp_exch (&res, Y); -238 err = MP_OKAY; -239 LBL_RES:mp_clear (&res); -240 LBL_MU:mp_clear (&mu); -241 LBL_M: -242 mp_clear(&M[1]); -243 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ -244 mp_clear (&M[x]); -245 \} -246 return err; -247 \} -248 #endif +023 \{ +024 mp_int M[TAB_SIZE], res, mu; +025 mp_digit buf; +026 int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; +027 int (*redux)(mp_int*,mp_int*,mp_int*); +028 +029 /* find window size */ +030 x = mp_count_bits (X); +031 if (x <= 7) \{ +032 winsize = 2; +033 \} else if (x <= 36) \{ +034 winsize = 3; +035 \} else if (x <= 140) \{ +036 winsize = 4; +037 \} else if (x <= 450) \{ +038 winsize = 5; +039 \} else if (x <= 1303) \{ +040 winsize = 6; +041 \} else if (x <= 3529) \{ +042 winsize = 7; +043 \} else \{ +044 winsize = 8; +045 \} +046 +047 #ifdef MP_LOW_MEM +048 if (winsize > 5) \{ +049 winsize = 5; +050 \} +051 #endif +052 +053 /* init M array */ +054 /* init first cell */ +055 if ((err = mp_init(&M[1])) != MP_OKAY) \{ +056 return err; +057 \} +058 +059 /* now init the second half of the array */ +060 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ +061 if ((err = mp_init(&M[x])) != MP_OKAY) \{ +062 for (y = 1<<(winsize-1); y < x; y++) \{ +063 mp_clear (&M[y]); +064 \} +065 mp_clear(&M[1]); +066 return err; +067 \} +068 \} +069 +070 /* create mu, used for Barrett reduction */ +071 if ((err = mp_init (&mu)) != MP_OKAY) \{ +072 goto LBL_M; +073 \} +074 +075 if (redmode == 0) \{ +076 if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) \{ +077 goto LBL_MU; +078 \} +079 redux = mp_reduce; +080 \} else \{ +081 if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) \{ +082 goto LBL_MU; +083 \} +084 redux = mp_reduce_2k_l; +085 \} +086 +087 /* create M table +088 * +089 * The M table contains powers of the base, +090 * e.g. M[x] = G**x mod P +091 * +092 * The first half of the table is not +093 * computed though accept for M[0] and M[1] +094 */ +095 if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) \{ +096 goto LBL_MU; +097 \} +098 +099 /* compute the value at M[1<<(winsize-1)] by squaring +100 * M[1] (winsize-1) times +101 */ +102 if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) \{ +103 goto LBL_MU; +104 \} +105 +106 for (x = 0; x < (winsize - 1); x++) \{ +107 /* square it */ +108 if ((err = mp_sqr (&M[1 << (winsize - 1)], +109 &M[1 << (winsize - 1)])) != MP_OKAY) \{ +110 goto LBL_MU; +111 \} +112 +113 /* reduce modulo P */ +114 if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) \{ +115 goto LBL_MU; +116 \} +117 \} +118 +119 /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) +120 * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) +121 */ +122 for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) \{ +123 if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) \{ +124 goto LBL_MU; +125 \} +126 if ((err = redux (&M[x], P, &mu)) != MP_OKAY) \{ +127 goto LBL_MU; +128 \} +129 \} +130 +131 /* setup result */ +132 if ((err = mp_init (&res)) != MP_OKAY) \{ +133 goto LBL_MU; +134 \} +135 mp_set (&res, 1); +136 +137 /* set initial mode and bit cnt */ +138 mode = 0; +139 bitcnt = 1; +140 buf = 0; +141 digidx = X->used - 1; +142 bitcpy = 0; +143 bitbuf = 0; +144 +145 for (;;) \{ +146 /* grab next digit as required */ +147 if (--bitcnt == 0) \{ +148 /* if digidx == -1 we are out of digits */ +149 if (digidx == -1) \{ +150 break; +151 \} +152 /* read next digit and reset the bitcnt */ +153 buf = X->dp[digidx--]; +154 bitcnt = (int) DIGIT_BIT; +155 \} +156 +157 /* grab the next msb from the exponent */ +158 y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; +159 buf <<= (mp_digit)1; +160 +161 /* if the bit is zero and mode == 0 then we ignore it +162 * These represent the leading zero bits before the first 1 bit +163 * in the exponent. Technically this opt is not required but it +164 * does lower the # of trivial squaring/reductions used +165 */ +166 if (mode == 0 && y == 0) \{ +167 continue; +168 \} +169 +170 /* if the bit is zero and mode == 1 then we square */ +171 if (mode == 1 && y == 0) \{ +172 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +173 goto LBL_RES; +174 \} +175 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +176 goto LBL_RES; +177 \} +178 continue; +179 \} +180 +181 /* else we add it to the window */ +182 bitbuf |= (y << (winsize - ++bitcpy)); +183 mode = 2; +184 +185 if (bitcpy == winsize) \{ +186 /* ok window is filled so square as required and multiply */ +187 /* square first */ +188 for (x = 0; x < winsize; x++) \{ +189 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +190 goto LBL_RES; +191 \} +192 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +193 goto LBL_RES; +194 \} +195 \} +196 +197 /* then multiply */ +198 if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) \{ +199 goto LBL_RES; +200 \} +201 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +202 goto LBL_RES; +203 \} +204 +205 /* empty window and reset */ +206 bitcpy = 0; +207 bitbuf = 0; +208 mode = 1; +209 \} +210 \} +211 +212 /* if bits remain then square/multiply */ +213 if (mode == 2 && bitcpy > 0) \{ +214 /* square then multiply if the bit is set */ +215 for (x = 0; x < bitcpy; x++) \{ +216 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +217 goto LBL_RES; +218 \} +219 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +220 goto LBL_RES; +221 \} +222 +223 bitbuf <<= 1; +224 if ((bitbuf & (1 << winsize)) != 0) \{ +225 /* then multiply */ +226 if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) \{ +227 goto LBL_RES; +228 \} +229 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +230 goto LBL_RES; +231 \} +232 \} +233 \} +234 \} +235 +236 mp_exch (&res, Y); +237 err = MP_OKAY; +238 LBL_RES:mp_clear (&res); +239 LBL_MU:mp_clear (&mu); +240 LBL_M: +241 mp_clear(&M[1]); +242 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ +243 mp_clear (&M[x]); +244 \} +245 return err; +246 \} +247 #endif +248 \end{alltt} \end{small} -Lines 21 through 40 determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted +Lines 31 through 41 determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted from smallest to greatest so that in each \textbf{if} statement only one condition must be tested. For example, by the \textbf{if} statement -on line 32 the value of $x$ is already known to be greater than $140$. +on line 33 the value of $x$ is already known to be greater than $140$. -The conditional piece of code beginning on line 48 allows the window size to be restricted to five bits. This logic is used to ensure +The conditional piece of code beginning on line 47 allows the window size to be restricted to five bits. This logic is used to ensure the table of precomputed powers of $G$ remains relatively small. -The for loop on line 61 initializes the $M$ array while lines 62 and 77 compute the value of $\mu$ required for +The for loop on line 60 initializes the $M$ array while lines 61 and 76 compute the value of $\mu$ required for Barrett reduction. -- More later. @@ -8146,6 +8195,7 @@ equivalent to $m \cdot 2^k$. By this logic when $m = 1$ a quick power of two ca 041 return MP_OKAY; 042 \} 043 #endif +044 \end{alltt} \end{small} @@ -8666,6 +8716,7 @@ respectively be replaced with a zero. 285 #endif 286 287 #endif +288 \end{alltt} \end{small} @@ -8820,6 +8871,7 @@ This algorithm initiates a temporary mp\_int with the value of the single digit 102 \} 103 104 #endif +105 \end{alltt} \end{small} @@ -8929,6 +8981,7 @@ Unlike the full multiplication algorithms this algorithm does not require any si 072 return MP_OKAY; 073 \} 074 #endif +075 \end{alltt} \end{small} @@ -9074,6 +9127,7 @@ from chapter seven. 103 \} 104 105 #endif +106 \end{alltt} \end{small} @@ -9260,6 +9314,7 @@ root. Ideally this algorithm is meant to find the $n$'th root of an input where 125 return res; 126 \} 127 #endif +128 \end{alltt} \end{small} @@ -9336,6 +9391,7 @@ the integers from $0$ to $\beta - 1$. 048 return MP_OKAY; 049 \} 050 #endif +051 \end{alltt} \end{small} @@ -9480,6 +9536,7 @@ as part of larger input without any significant problem. 075 return MP_OKAY; 076 \} 077 #endif +078 \end{alltt} \end{small} @@ -9599,6 +9656,7 @@ are required instead of a series of $n \times k$ divisions. One design flaw of 068 \} 069 070 #endif +071 \end{alltt} \end{small} @@ -9879,6 +9937,7 @@ must be adjusted by multiplying by the common factors of two ($2^k$) removed ear 106 return res; 107 \} 108 #endif +109 \end{alltt} \end{small} @@ -9974,6 +10033,7 @@ dividing the product of the two inputs by their greatest common divisor. 053 return res; 054 \} 055 #endif +056 \end{alltt} \end{small} @@ -10218,6 +10278,7 @@ $\left ( {p' \over a'} \right )$ which is multiplied against the current Jacobi 098 return res; 099 \} 100 #endif +101 \end{alltt} \end{small} @@ -10366,6 +10427,7 @@ then only a couple of additions or subtractions will be required to adjust the i 036 return MP_VAL; 037 \} 038 #endif +039 \end{alltt} \end{small} @@ -10467,6 +10529,7 @@ This algorithm attempts to determine if a candidate integer $n$ is composite by 043 return MP_OKAY; 044 \} 045 #endif +046 \end{alltt} \end{small} @@ -10518,6 +10581,7 @@ mp\_digit. The table \_\_prime\_tab is defined in the following file. 054 #endif 055 \}; 056 #endif +057 \end{alltt} \end{small} @@ -10606,6 +10670,7 @@ determine the result. 055 return err; 056 \} 057 #endif +058 \end{alltt} \end{small} @@ -10741,6 +10806,7 @@ composite then it is \textit{probably} prime. 096 return err; 097 \} 098 #endif +099 \end{alltt} \end{small} diff --git a/libtommath/tommath_class.h b/libtommath/tommath_class.h index 6d05b7b..29e36fc 100644 --- a/libtommath/tommath_class.h +++ b/libtommath/tommath_class.h @@ -687,6 +687,7 @@ #if defined(BN_MP_READ_RADIX_C) #define BN_MP_ZERO_C #define BN_MP_S_RMAP_C + #define BN_MP_RADIX_SMAP_C #define BN_MP_MUL_D_C #define BN_MP_ADD_D_C #define BN_MP_ISZERO_C @@ -992,3 +993,7 @@ #else #define LTM_LAST #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/tommath_class.h,v $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ diff --git a/libtommath/tommath_superclass.h b/libtommath/tommath_superclass.h index b50ecb0..6722510 100644 --- a/libtommath/tommath_superclass.h +++ b/libtommath/tommath_superclass.h @@ -4,7 +4,7 @@ #define LTM_ALL /* RSA only (does not support DH/DSA/ECC) */ -// #define SC_RSA_1 +/* #define SC_RSA_1 */ /* For reference.... On an Athlon64 optimizing for speed... @@ -70,3 +70,7 @@ #endif #endif + +/* $Source: /root/tcl/repos-to-convert/tcl/libtommath/tommath_superclass.h,v $ */ +/* $Revision: 1.1.1.2 $ */ +/* $Date: 2005/09/26 16:32:16 $ */ -- cgit v0.12 From 23d966feecf52e4d2f8ffb358c375bf4ecee8d8a Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 26 Sep 2005 16:53:54 +0000 Subject: re-import of three damaged PDF's --- libtommath/bn.pdf | Bin 340684 -> 340681 bytes libtommath/poster.pdf | Bin 37806 -> 37805 bytes libtommath/tommath.pdf | Bin 1159839 -> 1159821 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/libtommath/bn.pdf b/libtommath/bn.pdf index b8b8f8e..0124c71 100644 Binary files a/libtommath/bn.pdf and b/libtommath/bn.pdf differ diff --git a/libtommath/poster.pdf b/libtommath/poster.pdf index faceef1..5a39a04 100644 Binary files a/libtommath/poster.pdf and b/libtommath/poster.pdf differ diff --git a/libtommath/tommath.pdf b/libtommath/tommath.pdf index 08f6a1e..71ddffe 100644 Binary files a/libtommath/tommath.pdf and b/libtommath/tommath.pdf differ -- cgit v0.12 From 44c36899ef2859af28128849cfbbb85c911bbb2f Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 27 Sep 2005 15:44:12 +0000 Subject: Fix [Bug 1116542] --- ChangeLog | 6 ++++++ generic/tclBinary.c | 20 ++++++++++++++++++-- tests/binary.test | 6 +++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index bbba41b..f3e3de1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-09-27 Donal K. Fellows + + * generic/tclBinary.c (FormatNumber): Factorize out copying of + double values to a helper to work around ugly broken compiler + problems. [Bug 1116542] + 2005-09-15 Miguel Sofer * doc/ParseCmd.3: copy/paste fix [Bug 1292427] diff --git a/generic/tclBinary.c b/generic/tclBinary.c index 546a35b..cf83b99 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBinary.c,v 1.13.2.2 2003/12/17 18:38:28 das Exp $ + * RCS: @(#) $Id: tclBinary.c,v 1.13.2.3 2005/09/27 15:44:13 dkf Exp $ */ #include "tclInt.h" @@ -53,6 +53,8 @@ static void DupByteArrayInternalRep _ANSI_ARGS_((Tcl_Obj *srcPtr, Tcl_Obj *copyPtr)); static int FormatNumber _ANSI_ARGS_((Tcl_Interp *interp, int type, Tcl_Obj *src, unsigned char **cursorPtr)); +static void CopyNumber _ANSI_ARGS_((CONST VOID *from, VOID *to, + unsigned int length)); static void FreeByteArrayInternalRep _ANSI_ARGS_((Tcl_Obj *objPtr)); static int GetFormatSpec _ANSI_ARGS_((char **formatPtr, char *cmdPtr, int *countPtr)); @@ -1461,7 +1463,11 @@ FormatNumber(interp, type, src, cursorPtr) return TCL_ERROR; } if (type == 'd') { - memcpy((VOID *) *cursorPtr, (VOID *) &dvalue, sizeof(double)); + /* + * Can't just memcpy() here. [Bug 1116542] + */ + + CopyNumber(&dvalue, *cursorPtr, sizeof(double)); *cursorPtr += sizeof(double); } else { float fvalue; @@ -1538,6 +1544,16 @@ FormatNumber(interp, type, src, cursorPtr) } } +/* Ugly workaround for old and broken compiler! */ +static void +CopyNumber(from, to, length) + CONST VOID *from; + VOID *to; + unsigned int length; +{ + memcpy(to, from, length); +} + /* *---------------------------------------------------------------------- * diff --git a/tests/binary.test b/tests/binary.test index 98eb4fc..f792dd8 100644 --- a/tests/binary.test +++ b/tests/binary.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: binary.test,v 1.11.2.2 2003/12/02 09:31:54 dkf Exp $ +# RCS: @(#) $Id: binary.test,v 1.11.2.3 2005/09/27 15:44:13 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -532,6 +532,10 @@ test binary-14.17 {Tcl_BinaryObjCmd: format} {nonPortable pcOnly} { set a {1.6 3.4} binary format d1 $a } \x9a\x99\x99\x99\x99\x99\xf9\x3f +test binary-14.18 {FormatNumber: Bug 1116542} { + binary scan [binary format d 1.25] d w + set w +} 1.25 test binary-15.1 {Tcl_BinaryObjCmd: format} { list [catch {binary format ax*a "y" "z"} msg] $msg -- cgit v0.12 From aba1eff34b67c5292b0d38c4ebdf88247b85f5e8 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 30 Sep 2005 19:28:55 +0000 Subject: * generic/tclMain.c: Separate encoding conversion of command line arguments from list formatting. [Bug 1306162]. --- ChangeLog | 5 +++++ generic/tclMain.c | 49 +++++++++++++++++++++++-------------------------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index f3e3de1..1fb2a28 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-09-30 Don Porter + + * generic/tclMain.c: Separate encoding conversion of command line + arguments from list formatting. [Bug 1306162]. + 2005-09-27 Donal K. Fellows * generic/tclBinary.c (FormatNumber): Factorize out copying of diff --git a/generic/tclMain.c b/generic/tclMain.c index 1380ce8..1b73be6 100644 --- a/generic/tclMain.c +++ b/generic/tclMain.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMain.c,v 1.20 2002/05/29 22:59:33 dgp Exp $ + * RCS: @(#) $Id: tclMain.c,v 1.20.2.1 2005/09/30 19:28:55 dgp Exp $ */ #include "tcl.h" @@ -204,15 +204,12 @@ Tcl_Main(argc, argv, appInitProc) * initialization but before starting to * execute commands. */ { - Tcl_Obj *resultPtr; - Tcl_Obj *commandPtr = NULL; - char buffer[TCL_INTEGER_SPACE + 5], *args; + Tcl_Obj *resultPtr, *argvPtr, *commandPtr = NULL; PromptType prompt = PROMPT_START; - int code, length, tty; - int exitCode = 0; + int code, length, tty, exitCode = 0; Tcl_Channel inChannel, outChannel, errChannel; Tcl_Interp *interp; - Tcl_DString argString; + Tcl_DString appName; Tcl_FindExecutable(argv[0]); @@ -233,28 +230,28 @@ Tcl_Main(argc, argv, appInitProc) } } - /* - * The CONST casting is safe, and better we do it here than force - * all callers of Tcl_Main to do it. (Those callers are likely - * in a main() that can't easily change its signature.) - */ - - args = Tcl_Merge(argc-1, (CONST char **)argv+1); - Tcl_ExternalToUtfDString(NULL, args, -1, &argString); - Tcl_SetVar(interp, "argv", Tcl_DStringValue(&argString), TCL_GLOBAL_ONLY); - Tcl_DStringFree(&argString); - ckfree(args); - if (TclGetStartupScriptPath() == NULL) { - Tcl_ExternalToUtfDString(NULL, argv[0], -1, &argString); + Tcl_ExternalToUtfDString(NULL, argv[0], -1, &appName); } else { TclSetStartupScriptFileName(Tcl_ExternalToUtfDString(NULL, - TclGetStartupScriptFileName(), -1, &argString)); + TclGetStartupScriptFileName(), -1, &appName)); } - - TclFormatInt(buffer, (long) argc-1); - Tcl_SetVar(interp, "argc", buffer, TCL_GLOBAL_ONLY); - Tcl_SetVar(interp, "argv0", Tcl_DStringValue(&argString), TCL_GLOBAL_ONLY); + Tcl_SetVar(interp, "argv0", Tcl_DStringValue(&appName), TCL_GLOBAL_ONLY); + Tcl_DStringFree(&appName); + argc--; + argv++; + + Tcl_SetVar2Ex(interp, "argc", NULL, Tcl_NewIntObj(argc), TCL_GLOBAL_ONLY); + + argvPtr = Tcl_NewListObj(0, NULL); + while (argc--) { + Tcl_DString ds; + Tcl_ExternalToUtfDString(NULL, *argv++, -1, &ds); + Tcl_ListObjAppendElement(NULL, argvPtr, Tcl_NewStringObj( + Tcl_DStringValue(&ds), Tcl_DStringLength(&ds))); + Tcl_DStringFree(&ds); + } + Tcl_SetVar2Ex(interp, "argv", NULL, argvPtr, TCL_GLOBAL_ONLY); /* * Set the "tcl_interactive" variable. @@ -308,7 +305,6 @@ Tcl_Main(argc, argv, appInitProc) } goto done; } - Tcl_DStringFree(&argString); /* * We're running interactively. Source a user-specific startup @@ -496,6 +492,7 @@ Tcl_Main(argc, argv, appInitProc) */ if (!Tcl_InterpDeleted(interp)) { + char buffer[TCL_INTEGER_SPACE + 5]; sprintf(buffer, "exit %d", exitCode); Tcl_Eval(interp, buffer); -- cgit v0.12 From cee7aab42e96de098d7fab4437ef46fd153d8b70 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 4 Oct 2005 18:14:14 +0000 Subject: Tcl_ClearChannelHandlers(): bail out early if passed NULL argument --- generic/tclTimer.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/generic/tclTimer.c b/generic/tclTimer.c index 0e14f4d..5832382 100644 --- a/generic/tclTimer.c +++ b/generic/tclTimer.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTimer.c,v 1.6.2.2 2005/03/23 21:58:17 dgp Exp $ + * RCS: @(#) $Id: tclTimer.c,v 1.6.2.3 2005/10/04 18:14:14 vasiljevic Exp $ */ #include "tclInt.h" @@ -303,9 +303,12 @@ Tcl_DeleteTimerHandler(token) * Tcl_DeleteTimerHandler. */ { register TimerHandler *timerHandlerPtr, *prevPtr; - ThreadSpecificData *tsdPtr; + ThreadSpecificData *tsdPtr = InitTimer(); + + if (token == NULL) { + return; + } - tsdPtr = InitTimer(); for (timerHandlerPtr = tsdPtr->firstTimerHandlerPtr, prevPtr = NULL; timerHandlerPtr != NULL; prevPtr = timerHandlerPtr, timerHandlerPtr = timerHandlerPtr->nextPtr) { -- cgit v0.12 From 59a00f60a2573aeca8a788c18f34e5a8f9c5702a Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 4 Oct 2005 18:15:09 +0000 Subject: Tcl_ClearChannelHandlers(): now deletes any outstanding timer for the channel. Also, prevents events still in the event queue from triggering on the current channel. --- generic/tclIO.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/generic/tclIO.c b/generic/tclIO.c index f983a9a..ccc107b 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.11 2005/06/22 19:35:16 kennykb Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.12 2005/10/04 18:15:09 vasiljevic Exp $ */ #include "tclInt.h" @@ -2659,6 +2659,12 @@ Tcl_ClearChannelHandlers (channel) chanPtr = statePtr->topChanPtr; /* + * Cancel any outstanding timer. + */ + + Tcl_DeleteTimerHandler(statePtr->timer); + + /* * Remove any references to channel handlers for this channel that * may be about to be invoked. */ @@ -2696,10 +2702,16 @@ Tcl_ClearChannelHandlers (channel) * will occur if Tcl_DoOneEvent is called before the channel is * finally deleted in FlushChannel. This can happen if the channel * has a background flush active. + * Also, delete all registered file handlers for this channel + * (and for the current thread). This prevents executing of pending + * file-events still sitting in the event queue of the current thread. + * We deliberately do not call UpdateInterest() because this could + * re-schedule new events if the channel still needs to be flushed. */ statePtr->interestMask = 0; - + (chanPtr->typePtr->watchProc)(chanPtr->instanceData, 0); + /* * Remove any EventScript records for this channel. */ -- cgit v0.12 From b66bbd92b9d131723686e1ff389cc1932d60218e Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 4 Oct 2005 18:16:01 +0000 Subject: See file. --- ChangeLog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ChangeLog b/ChangeLog index 1fb2a28..e57b082 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-10-04 Zoran Vasiljevic + + * generic/tclIO.c (Tcl_ClearChannelHandlers): now deletes any + outstanding timer for the channel. Also, prevents events still + in the event queue from triggering on the current channel. + + * generic/tclTimer.c (Tcl_DeleteTimerHandler): bail out early + if passed NULL argument. + 2005-09-30 Don Porter * generic/tclMain.c: Separate encoding conversion of command line -- cgit v0.12 From 25bf089e2d2828dbd9700ac450feed10b2848e56 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 5 Oct 2005 04:23:55 +0000 Subject: * unix/tclLoadShl.c (TclpDlopen): use DYNAMIC_PATH on second shl_load only. [Bug 1204237] --- ChangeLog | 5 +++++ unix/tclLoadShl.c | 11 +++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index e57b082..6e4cd96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-10-04 Jeff Hobbs + + * unix/tclLoadShl.c (TclpDlopen): use DYNAMIC_PATH on second + shl_load only. [Bug 1204237] + 2005-10-04 Zoran Vasiljevic * generic/tclIO.c (Tcl_ClearChannelHandlers): now deletes any diff --git a/unix/tclLoadShl.c b/unix/tclLoadShl.c index 60919a7..693e0fd 100644 --- a/unix/tclLoadShl.c +++ b/unix/tclLoadShl.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadShl.c,v 1.13 2002/10/10 12:25:53 vincentdarley Exp $ + * RCS: @(#) $Id: tclLoadShl.c,v 1.13.2.1 2005/10/05 04:23:56 hobbs Exp $ */ #include @@ -71,17 +71,16 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) */ - /* + /* * First try the full path the user gave us. This is particularly * important if the cwd is inside a vfs, and we are trying to load * using a relative path. */ native = Tcl_FSGetNativePath(pathPtr); - handle = shl_load(native, - BIND_DEFERRED|BIND_VERBOSE|DYNAMIC_PATH, 0L); - + handle = shl_load(native, BIND_DEFERRED|BIND_VERBOSE, 0L); + if (handle == NULL) { - /* + /* * Let the OS loader examine the binary search path for * whatever string the user gave us which hopefully refers * to a file on the binary path -- cgit v0.12 From ac08c2624bd5c89d68f61d6899b692051cf75fb1 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 5 Oct 2005 04:27:38 +0000 Subject: * generic/tclIOUtil.c (TclFSNormalizeAbsolutePath): make static * generic/tclEncoding.c (TclFindEncodings): make static --- ChangeLog | 3 +++ generic/tclEncoding.c | 8 ++++---- generic/tclIOUtil.c | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6e4cd96..817996d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-10-04 Jeff Hobbs + * generic/tclIOUtil.c (TclFSNormalizeAbsolutePath): make static + * generic/tclEncoding.c (TclFindEncodings): make static + * unix/tclLoadShl.c (TclpDlopen): use DYNAMIC_PATH on second shl_load only. [Bug 1204237] diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index efe5905..6a8ae6e 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.7 2005/07/05 21:18:23 dgp Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.8 2005/10/05 04:27:38 hobbs Exp $ */ #include "tclInt.h" @@ -3058,7 +3058,7 @@ unilen(src) *------------------------------------------------------------------------- */ -int +static int TclFindEncodings(argv0) CONST char *argv0; /* Name of executable from argv[0] to main() * in native multi-byte encoding. */ @@ -3093,7 +3093,7 @@ TclFindEncodings(argv0) * convert the UTF string back to native before setting the new * default encoding. */ - + pathPtr = TclGetLibraryPath(); if ((pathPtr != NULL) && mustCleanUtf) { Tcl_UtfToExternalDString(NULL, Tcl_GetString(pathPtr), -1, @@ -3105,7 +3105,7 @@ TclFindEncodings(argv0) /* * Now convert the native string back to UTF. */ - + if ((pathPtr != NULL) && mustCleanUtf) { Tcl_ExternalToUtfDString(NULL, Tcl_DStringValue(&libPath), -1, &buffer); diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 2647a8b..50882ec 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.21 2005/05/24 04:19:32 das Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.22 2005/10/05 04:27:38 hobbs Exp $ */ #include "tclInt.h" @@ -1319,7 +1319,7 @@ Tcl_FSData(fsPtr) * *--------------------------------------------------------------------------- */ -Tcl_Obj* +static Tcl_Obj * TclFSNormalizeAbsolutePath(interp, pathPtr, clientDataPtr) Tcl_Interp* interp; /* Interpreter to use */ Tcl_Obj *pathPtr; /* Absolute path to normalize */ -- cgit v0.12 From 9f6bbd3b79f74a8449023467afca0207c7621dad Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 5 Oct 2005 05:01:37 +0000 Subject: * tests/http.test: do not URI encode -._~ according * library/http/http.tcl (init): to RFC3986. [Bug 1182373] (aho) --- ChangeLog | 3 +++ library/http/http.tcl | 10 +++++++--- tests/http.test | 6 +++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 817996d..b04f1ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-10-04 Jeff Hobbs + * tests/http.test: do not URI encode -._~ according + * library/http/http.tcl (init): to RFC3986. [Bug 1182373] (aho) + * generic/tclIOUtil.c (TclFSNormalizeAbsolutePath): make static * generic/tclEncoding.c (TclFindEncodings): make static diff --git a/library/http/http.tcl b/library/http/http.tcl index 4c87fab..8b846e5 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.6 2005/01/06 15:16:03 dkf Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.7 2005/10/05 05:01:37 hobbs Exp $ # Rough version history: # 1.0 Old http_get interface @@ -40,10 +40,14 @@ namespace eval http { proc init {} { # Set up the map for quoting chars - # The spec says: "non-alphanumeric characters are replaced by '%HH'" + # RFC3986 Section 2.3 say percent encode all except: + # "... percent-encoded octets in the ranges of ALPHA + # (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), + # period (%2E), underscore (%5F), or tilde (%7E) should + # not be created by URI producers ..." for {set i 0} {$i <= 256} {incr i} { set c [format %c $i] - if {![string match {[a-zA-Z0-9]} $c]} { + if {![string match {[-._~a-zA-Z0-9]} $c]} { set map($c) %[format %.2x $i] } } diff --git a/tests/http.test b/tests/http.test index 942c9a5..b0020e7 100644 --- a/tests/http.test +++ b/tests/http.test @@ -12,7 +12,7 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # -# RCS: @(#) $Id: http.test,v 1.33.2.2 2004/05/25 22:50:47 hobbs Exp $ +# RCS: @(#) $Id: http.test,v 1.33.2.3 2005/10/05 05:01:37 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -483,7 +483,7 @@ test http-5.3 {http::formatQuery} { test http-5.4 {http::formatQuery} { http::formatQuery name1 ~bwelch name2 \xa1\xa2\xa2 -} {name1=%7ebwelch&name2=%c2%a1%c2%a2%c2%a2} +} {name1=~bwelch&name2=%c2%a1%c2%a2%c2%a2} test http-5.5 {http::formatQuery} { set enc [http::config -urlencoding] @@ -491,7 +491,7 @@ test http-5.5 {http::formatQuery} { set res [http::formatQuery name1 ~bwelch name2 \xa1\xa2\xa2] http::config -urlencoding $enc set res -} {name1=%7ebwelch&name2=%a1%a2%a2} +} {name1=~bwelch&name2=%a1%a2%a2} test http-6.1 {http::ProxyRequired} { http::config -proxyhost [info hostname] -proxyport $port -- cgit v0.12 From 001484010656fc7ed52edb2c9a770f18cc7e6dc3 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 5 Oct 2005 06:33:51 +0000 Subject: win/tclWinSerial.c (SerialSetOptionProc): free argv [Bug 1067708] --- ChangeLog | 2 + win/tclWinSerial.c | 853 +++++++++++++++++++++++++++-------------------------- 2 files changed, 431 insertions(+), 424 deletions(-) diff --git a/ChangeLog b/ChangeLog index b04f1ce..8693f38 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-10-04 Jeff Hobbs + * win/tclWinSerial.c (SerialSetOptionProc): free argv [Bug 1067708] + * tests/http.test: do not URI encode -._~ according * library/http/http.tcl (init): to RFC3986. [Bug 1182373] (aho) diff --git a/win/tclWinSerial.c b/win/tclWinSerial.c index 0d363a5..4041a89 100644 --- a/win/tclWinSerial.c +++ b/win/tclWinSerial.c @@ -11,7 +11,7 @@ * * Serial functionality implemented by Rolf.Schroedter@dlr.de * - * RCS: @(#) $Id: tclWinSerial.c,v 1.25.2.2 2005/01/27 22:53:38 andreas_kupries Exp $ + * RCS: @(#) $Id: tclWinSerial.c,v 1.25.2.3 2005/10/05 06:33:52 hobbs Exp $ */ #include "tclWinInt.h" @@ -1579,10 +1579,10 @@ SerialModemStatusStr(status, dsPtr) */ static int SerialSetOptionProc(instanceData, interp, optionName, value) - ClientData instanceData; /* File state. */ - Tcl_Interp *interp; /* For error reporting - can be NULL. */ - CONST char *optionName; /* Which option to set? */ - CONST char *value; /* New value for option. */ + ClientData instanceData; /* File state. */ + Tcl_Interp *interp; /* For error reporting - can be NULL. */ + CONST char *optionName; /* Which option to set? */ + CONST char *value; /* New value for option. */ { SerialInfo *infoPtr; DCB dcb; @@ -1592,310 +1592,315 @@ SerialSetOptionProc(instanceData, interp, optionName, value) CONST TCHAR *native; int argc; CONST char **argv; - + infoPtr = (SerialInfo *) instanceData; - - /* - * Parse options - */ + + /* + * Parse options + */ len = strlen(optionName); vlen = strlen(value); - /* - * Option -mode baud,parity,databits,stopbits - */ + /* + * Option -mode baud,parity,databits,stopbits + */ if ((len > 2) && (strncmp(optionName, "-mode", len) == 0)) { - - if (! GetCommState(infoPtr->handle, &dcb)) { - if (interp) { - Tcl_AppendResult(interp, - "can't get comm state", (char *) NULL); - } - return TCL_ERROR; - } - native = Tcl_WinUtfToTChar(value, -1, &ds); - result = (*tclWinProcs->buildCommDCBProc)(native, &dcb); - Tcl_DStringFree(&ds); - - if (result == FALSE) { - if (interp) { - Tcl_AppendResult(interp, - "bad value for -mode: should be baud,parity,data,stop", - (char *) NULL); - } - return TCL_ERROR; - } + if (! GetCommState(infoPtr->handle, &dcb)) { + if (interp) { + Tcl_AppendResult(interp, + "can't get comm state", (char *) NULL); + } + return TCL_ERROR; + } + native = Tcl_WinUtfToTChar(value, -1, &ds); + result = (*tclWinProcs->buildCommDCBProc)(native, &dcb); + Tcl_DStringFree(&ds); + + if (result == FALSE) { + if (interp) { + Tcl_AppendResult(interp, + "bad value for -mode: should be baud,parity,data,stop", + (char *) NULL); + } + return TCL_ERROR; + } - /* Default settings for serial communications */ - dcb.fBinary = TRUE; - dcb.fErrorChar = FALSE; - dcb.fNull = FALSE; - dcb.fAbortOnError = FALSE; + /* Default settings for serial communications */ + dcb.fBinary = TRUE; + dcb.fErrorChar = FALSE; + dcb.fNull = FALSE; + dcb.fAbortOnError = FALSE; - if (! SetCommState(infoPtr->handle, &dcb) ) { - if (interp) { - Tcl_AppendResult(interp, - "can't set comm state", (char *) NULL); - } - return TCL_ERROR; - } - return TCL_OK; + if (! SetCommState(infoPtr->handle, &dcb) ) { + if (interp) { + Tcl_AppendResult(interp, + "can't set comm state", (char *) NULL); + } + return TCL_ERROR; + } + return TCL_OK; } - - /* - * Option -handshake none|xonxoff|rtscts|dtrdsr - */ + + /* + * Option -handshake none|xonxoff|rtscts|dtrdsr + */ if ((len > 1) && (strncmp(optionName, "-handshake", len) == 0)) { - - if (! GetCommState(infoPtr->handle, &dcb)) { - if (interp) { - Tcl_AppendResult(interp, - "can't get comm state", (char *) NULL); - } - return TCL_ERROR; - } - /* - * Reset all handshake options - * DTR and RTS are ON by default - */ - dcb.fOutX = dcb.fInX = FALSE; - dcb.fOutxCtsFlow = dcb.fOutxDsrFlow = dcb.fDsrSensitivity = FALSE; - dcb.fDtrControl = DTR_CONTROL_ENABLE; - dcb.fRtsControl = RTS_CONTROL_ENABLE; - dcb.fTXContinueOnXoff = FALSE; + if (! GetCommState(infoPtr->handle, &dcb)) { + if (interp) { + Tcl_AppendResult(interp, + "can't get comm state", (char *) NULL); + } + return TCL_ERROR; + } + /* + * Reset all handshake options + * DTR and RTS are ON by default + */ + dcb.fOutX = dcb.fInX = FALSE; + dcb.fOutxCtsFlow = dcb.fOutxDsrFlow = dcb.fDsrSensitivity = FALSE; + dcb.fDtrControl = DTR_CONTROL_ENABLE; + dcb.fRtsControl = RTS_CONTROL_ENABLE; + dcb.fTXContinueOnXoff = FALSE; - /* - * Adjust the handshake limits. - * Yes, the XonXoff limits seem to influence even hardware handshake - */ - dcb.XonLim = (WORD) (infoPtr->sysBufRead*1/2); - dcb.XoffLim = (WORD) (infoPtr->sysBufRead*1/4); - - if (strnicmp(value, "NONE", vlen) == 0) { - /* leave all handshake options disabled */ - } else if (strnicmp(value, "XONXOFF", vlen) == 0) { - dcb.fOutX = dcb.fInX = TRUE; - } else if (strnicmp(value, "RTSCTS", vlen) == 0) { - dcb.fOutxCtsFlow = TRUE; - dcb.fRtsControl = RTS_CONTROL_HANDSHAKE; - } else if (strnicmp(value, "DTRDSR", vlen) == 0) { - dcb.fOutxDsrFlow = TRUE; - dcb.fDtrControl = DTR_CONTROL_HANDSHAKE; - } else { - if (interp) { - Tcl_AppendResult(interp, "bad value for -handshake: ", - "must be one of xonxoff, rtscts, dtrdsr or none", - (char *) NULL); - return TCL_ERROR; - } - } - - if (! SetCommState(infoPtr->handle, &dcb)) { - if (interp) { - Tcl_AppendResult(interp, - "can't set comm state", (char *) NULL); - } - return TCL_ERROR; - } - return TCL_OK; + /* + * Adjust the handshake limits. + * Yes, the XonXoff limits seem to influence even hardware handshake + */ + dcb.XonLim = (WORD) (infoPtr->sysBufRead*1/2); + dcb.XoffLim = (WORD) (infoPtr->sysBufRead*1/4); + + if (strnicmp(value, "NONE", vlen) == 0) { + /* leave all handshake options disabled */ + } else if (strnicmp(value, "XONXOFF", vlen) == 0) { + dcb.fOutX = dcb.fInX = TRUE; + } else if (strnicmp(value, "RTSCTS", vlen) == 0) { + dcb.fOutxCtsFlow = TRUE; + dcb.fRtsControl = RTS_CONTROL_HANDSHAKE; + } else if (strnicmp(value, "DTRDSR", vlen) == 0) { + dcb.fOutxDsrFlow = TRUE; + dcb.fDtrControl = DTR_CONTROL_HANDSHAKE; + } else { + if (interp) { + Tcl_AppendResult(interp, "bad value for -handshake: ", + "must be one of xonxoff, rtscts, dtrdsr or none", + (char *) NULL); + return TCL_ERROR; + } + } + + if (! SetCommState(infoPtr->handle, &dcb)) { + if (interp) { + Tcl_AppendResult(interp, + "can't set comm state", (char *) NULL); + } + return TCL_ERROR; + } + return TCL_OK; } - - /* - * Option -xchar {\x11 \x13} - */ + + /* + * Option -xchar {\x11 \x13} + */ if ((len > 1) && (strncmp(optionName, "-xchar", len) == 0)) { - - if (! GetCommState(infoPtr->handle, &dcb)) { - if (interp) { - Tcl_AppendResult(interp, - "can't get comm state", (char *) NULL); - } - return TCL_ERROR; - } - - if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) { - return TCL_ERROR; - } - if (argc == 2) { - dcb.XonChar = argv[0][0]; - dcb.XoffChar = argv[1][0]; - } else { - if (interp) { - Tcl_AppendResult(interp, - "bad value for -xchar: should be a list of two elements", - (char *) NULL); - } - return TCL_ERROR; - } - - if (! SetCommState(infoPtr->handle, &dcb)) { - if (interp) { - Tcl_AppendResult(interp, - "can't set comm state", (char *) NULL); - } - return TCL_ERROR; - } - return TCL_OK; + if (! GetCommState(infoPtr->handle, &dcb)) { + if (interp) { + Tcl_AppendResult(interp, + "can't get comm state", (char *) NULL); + } + return TCL_ERROR; + } + + if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) { + return TCL_ERROR; + } + if (argc == 2) { + dcb.XonChar = argv[0][0]; + dcb.XoffChar = argv[1][0]; + ckfree((char *) argv); + } else { + if (interp) { + Tcl_AppendResult(interp, + "bad value for -xchar: should be a list of two elements", + (char *) NULL); + } + ckfree((char *) argv); + return TCL_ERROR; + } + + if (! SetCommState(infoPtr->handle, &dcb)) { + if (interp) { + Tcl_AppendResult(interp, + "can't set comm state", (char *) NULL); + } + return TCL_ERROR; + } + return TCL_OK; } - - /* - * Option -ttycontrol {DTR 1 RTS 0 BREAK 0} - */ + + /* + * Option -ttycontrol {DTR 1 RTS 0 BREAK 0} + */ if ((len > 4) && (strncmp(optionName, "-ttycontrol", len) == 0)) { - - if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) { - return TCL_ERROR; - } - if ((argc % 2) == 1) { - if (interp) { - Tcl_AppendResult(interp, - "bad value for -ttycontrol: should be a list of signal,value pairs", - (char *) NULL); - } - return TCL_ERROR; - } - while (argc > 1) { - if (Tcl_GetBoolean(interp, argv[1], &flag) == TCL_ERROR) { - return TCL_ERROR; - } - if (strnicmp(argv[0], "DTR", strlen(argv[0])) == 0) { - if (! EscapeCommFunction(infoPtr->handle, flag ? - (DWORD) SETDTR : (DWORD) CLRDTR)) { - if (interp) { - Tcl_AppendResult(interp, - "can't set DTR signal", (char *) NULL); - } - return TCL_ERROR; - } - } else if (strnicmp(argv[0], "RTS", strlen(argv[0])) == 0) { - if (! EscapeCommFunction(infoPtr->handle, flag ? - (DWORD) SETRTS : (DWORD) CLRRTS)) { - if (interp) { - Tcl_AppendResult(interp, - "can't set RTS signal", (char *) NULL); - } - return TCL_ERROR; - } - } else if (strnicmp(argv[0], "BREAK", strlen(argv[0])) == 0) { - if (! EscapeCommFunction(infoPtr->handle, flag ? - (DWORD) SETBREAK : (DWORD) CLRBREAK)) { - if (interp) { - Tcl_AppendResult(interp, - "can't set BREAK signal", (char *) NULL); - } - return TCL_ERROR; - } - } else { - if (interp) { - Tcl_AppendResult(interp, - "bad signal for -ttycontrol: must be DTR, RTS or BREAK", - (char *) NULL); - } - return TCL_ERROR; - } - argc -= 2, argv += 2; - } /* while (argc > 1) */ - - return TCL_OK; + int i, result = TCL_OK; + + if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) { + return TCL_ERROR; + } + if ((argc % 2) == 1) { + if (interp) { + Tcl_AppendResult(interp, + "bad value for -ttycontrol: should be a list of signal,value pairs", + (char *) NULL); + } + ckfree((char *) argv); + return TCL_ERROR; + } + for (i = 0; i < argc - 1; i += 2) { + if (Tcl_GetBoolean(interp, argv[i+1], &flag) == TCL_ERROR) { + result = TCL_ERROR; + break; + } + if (strnicmp(argv[i], "DTR", strlen(argv[i])) == 0) { + if (!EscapeCommFunction(infoPtr->handle, flag ? + (DWORD) SETDTR : (DWORD) CLRDTR)) { + if (interp) { + Tcl_AppendResult(interp, + "can't set DTR signal", (char *) NULL); + } + result = TCL_ERROR; + break; + } + } else if (strnicmp(argv[i], "RTS", strlen(argv[i])) == 0) { + if (!EscapeCommFunction(infoPtr->handle, flag ? + (DWORD) SETRTS : (DWORD) CLRRTS)) { + if (interp) { + Tcl_AppendResult(interp, + "can't set RTS signal", (char *) NULL); + } + result = TCL_ERROR; + break; + } + } else if (strnicmp(argv[i], "BREAK", strlen(argv[i])) == 0) { + if (!EscapeCommFunction(infoPtr->handle, flag ? + (DWORD) SETBREAK : (DWORD) CLRBREAK)) { + if (interp) { + Tcl_AppendResult(interp, + "can't set BREAK signal", (char *) NULL); + } + result = TCL_ERROR; + break; + } + } else { + if (interp) { + Tcl_AppendResult(interp, "bad signal for -ttycontrol: ", + "must be DTR, RTS or BREAK", (char *) NULL); + } + result = TCL_ERROR; + break; + } + } + + ckfree((char *) argv); + return result; } - - /* - * Option -sysbuffer {read_size write_size} - * Option -sysbuffer read_size - */ + + /* + * Option -sysbuffer {read_size write_size} + * Option -sysbuffer read_size + */ if ((len > 1) && (strncmp(optionName, "-sysbuffer", len) == 0)) { - - /* - * -sysbuffer 4096 or -sysbuffer {64536 4096} - */ - size_t inSize = (size_t) -1, outSize = (size_t) -1; - - if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) { - return TCL_ERROR; - } - if (argc == 1) { - inSize = atoi(argv[0]); - outSize = infoPtr->sysBufWrite; - } else if (argc == 2) { - inSize = atoi(argv[0]); - outSize = atoi(argv[1]); - } - if ( (inSize <= 0) || (outSize <= 0) ) { - if (interp) { - Tcl_AppendResult(interp, - "bad value for -sysbuffer: should be a list of one or two integers > 0", - (char *) NULL); - } - return TCL_ERROR; - } - if (! SetupComm(infoPtr->handle, inSize, outSize)) { - if (interp) { - Tcl_AppendResult(interp, - "can't setup comm buffers", (char *) NULL); - } - return TCL_ERROR; - } - infoPtr->sysBufRead = inSize; - infoPtr->sysBufWrite = outSize; - - /* - * Adjust the handshake limits. - * Yes, the XonXoff limits seem to influence even hardware handshake - */ - if (! GetCommState(infoPtr->handle, &dcb)) { - if (interp) { - Tcl_AppendResult(interp, - "can't get comm state", (char *) NULL); - } - return TCL_ERROR; - } - dcb.XonLim = (WORD) (infoPtr->sysBufRead*1/2); - dcb.XoffLim = (WORD) (infoPtr->sysBufRead*1/4); - if (! SetCommState(infoPtr->handle, &dcb)) { - if (interp) { - Tcl_AppendResult(interp, - "can't set comm state", (char *) NULL); - } - return TCL_ERROR; - } - return TCL_OK; + /* + * -sysbuffer 4096 or -sysbuffer {64536 4096} + */ + size_t inSize = (size_t) -1, outSize = (size_t) -1; + + if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) { + return TCL_ERROR; + } + if (argc == 1) { + inSize = atoi(argv[0]); + outSize = infoPtr->sysBufWrite; + } else if (argc == 2) { + inSize = atoi(argv[0]); + outSize = atoi(argv[1]); + } + ckfree((char *) argv); + if ((inSize <= 0) || (outSize <= 0)) { + if (interp) { + Tcl_AppendResult(interp, + "bad value for -sysbuffer: should be a list of one or two integers > 0", + (char *) NULL); + } + return TCL_ERROR; + } + if (! SetupComm(infoPtr->handle, inSize, outSize)) { + if (interp) { + Tcl_AppendResult(interp, + "can't setup comm buffers", (char *) NULL); + } + return TCL_ERROR; + } + infoPtr->sysBufRead = inSize; + infoPtr->sysBufWrite = outSize; + + /* + * Adjust the handshake limits. + * Yes, the XonXoff limits seem to influence even hardware handshake + */ + if (! GetCommState(infoPtr->handle, &dcb)) { + if (interp) { + Tcl_AppendResult(interp, + "can't get comm state", (char *) NULL); + } + return TCL_ERROR; + } + dcb.XonLim = (WORD) (infoPtr->sysBufRead*1/2); + dcb.XoffLim = (WORD) (infoPtr->sysBufRead*1/4); + if (! SetCommState(infoPtr->handle, &dcb)) { + if (interp) { + Tcl_AppendResult(interp, + "can't set comm state", (char *) NULL); + } + return TCL_ERROR; + } + return TCL_OK; } - /* - * Option -pollinterval msec - */ + /* + * Option -pollinterval msec + */ if ((len > 1) && (strncmp(optionName, "-pollinterval", len) == 0)) { - - if ( Tcl_GetInt(interp, value, &(infoPtr->blockTime)) != TCL_OK ) { - return TCL_ERROR; - } - return TCL_OK; + + if ( Tcl_GetInt(interp, value, &(infoPtr->blockTime)) != TCL_OK ) { + return TCL_ERROR; + } + return TCL_OK; } - - /* - * Option -timeout msec - */ + + /* + * Option -timeout msec + */ if ((len > 2) && (strncmp(optionName, "-timeout", len) == 0)) { - int msec; - COMMTIMEOUTS tout = {0,0,0,0,0}; - - if ( Tcl_GetInt(interp, value, &msec) != TCL_OK ) { - return TCL_ERROR; - } - tout.ReadTotalTimeoutConstant = msec; - if (! SetCommTimeouts(infoPtr->handle, &tout)) { - if (interp) { - Tcl_AppendResult(interp, - "can't set comm timeouts", (char *) NULL); - } - return TCL_ERROR; - } + int msec; + COMMTIMEOUTS tout = {0,0,0,0,0}; - return TCL_OK; + if ( Tcl_GetInt(interp, value, &msec) != TCL_OK ) { + return TCL_ERROR; + } + tout.ReadTotalTimeoutConstant = msec; + if (! SetCommTimeouts(infoPtr->handle, &tout)) { + if (interp) { + Tcl_AppendResult(interp, + "can't set comm timeouts", (char *) NULL); + } + return TCL_ERROR; + } + + return TCL_OK; } - + return Tcl_BadChannelOption(interp, optionName, - "mode handshake pollinterval sysbuffer timeout ttycontrol xchar"); + "mode handshake pollinterval sysbuffer timeout ttycontrol xchar"); } /* @@ -1920,200 +1925,200 @@ SerialSetOptionProc(instanceData, interp, optionName, value) */ static int SerialGetOptionProc(instanceData, interp, optionName, dsPtr) - ClientData instanceData; /* File state. */ - Tcl_Interp *interp; /* For error reporting - can be NULL. */ - CONST char *optionName; /* Option to get. */ - Tcl_DString *dsPtr; /* Where to store value(s). */ + ClientData instanceData; /* File state. */ + Tcl_Interp *interp; /* For error reporting - can be NULL. */ + CONST char *optionName; /* Option to get. */ + Tcl_DString *dsPtr; /* Where to store value(s). */ { SerialInfo *infoPtr; DCB dcb; size_t len; int valid = 0; /* flag if valid option parsed */ - + infoPtr = (SerialInfo *) instanceData; - + if (optionName == NULL) { - len = 0; + len = 0; } else { - len = strlen(optionName); + len = strlen(optionName); } - + /* - * get option -mode - */ - + * get option -mode + */ + if (len == 0) { - Tcl_DStringAppendElement(dsPtr, "-mode"); + Tcl_DStringAppendElement(dsPtr, "-mode"); } if ((len == 0) || - ((len > 2) && (strncmp(optionName, "-mode", len) == 0))) { - - char parity; - char *stop; - char buf[2 * TCL_INTEGER_SPACE + 16]; - - if (! GetCommState(infoPtr->handle, &dcb)) { - if (interp) { - Tcl_AppendResult(interp, - "can't get comm state", (char *) NULL); - } - return TCL_ERROR; - } - - valid = 1; - parity = 'n'; - if (dcb.Parity <= 4) { - parity = "noems"[dcb.Parity]; - } - stop = (dcb.StopBits == ONESTOPBIT) ? "1" : - (dcb.StopBits == ONE5STOPBITS) ? "1.5" : "2"; - - wsprintfA(buf, "%d,%c,%d,%s", dcb.BaudRate, parity, - dcb.ByteSize, stop); - Tcl_DStringAppendElement(dsPtr, buf); + ((len > 2) && (strncmp(optionName, "-mode", len) == 0))) { + + char parity; + char *stop; + char buf[2 * TCL_INTEGER_SPACE + 16]; + + if (! GetCommState(infoPtr->handle, &dcb)) { + if (interp) { + Tcl_AppendResult(interp, + "can't get comm state", (char *) NULL); + } + return TCL_ERROR; + } + + valid = 1; + parity = 'n'; + if (dcb.Parity <= 4) { + parity = "noems"[dcb.Parity]; + } + stop = (dcb.StopBits == ONESTOPBIT) ? "1" : + (dcb.StopBits == ONE5STOPBITS) ? "1.5" : "2"; + + wsprintfA(buf, "%d,%c,%d,%s", dcb.BaudRate, parity, + dcb.ByteSize, stop); + Tcl_DStringAppendElement(dsPtr, buf); } - + /* - * get option -pollinterval - */ - + * get option -pollinterval + */ + if (len == 0) { - Tcl_DStringAppendElement(dsPtr, "-pollinterval"); + Tcl_DStringAppendElement(dsPtr, "-pollinterval"); } if ((len == 0) || - ((len > 1) && (strncmp(optionName, "-pollinterval", len) == 0))) { - char buf[TCL_INTEGER_SPACE + 1]; - - valid = 1; - wsprintfA(buf, "%d", infoPtr->blockTime); - Tcl_DStringAppendElement(dsPtr, buf); + ((len > 1) && (strncmp(optionName, "-pollinterval", len) == 0))) { + char buf[TCL_INTEGER_SPACE + 1]; + + valid = 1; + wsprintfA(buf, "%d", infoPtr->blockTime); + Tcl_DStringAppendElement(dsPtr, buf); } - + /* - * get option -sysbuffer - */ - + * get option -sysbuffer + */ + if (len == 0) { - Tcl_DStringAppendElement(dsPtr, "-sysbuffer"); - Tcl_DStringStartSublist(dsPtr); + Tcl_DStringAppendElement(dsPtr, "-sysbuffer"); + Tcl_DStringStartSublist(dsPtr); } if ((len == 0) || - ((len > 1) && (strncmp(optionName, "-sysbuffer", len) == 0))) { + ((len > 1) && (strncmp(optionName, "-sysbuffer", len) == 0))) { - char buf[TCL_INTEGER_SPACE + 1]; - valid = 1; + char buf[TCL_INTEGER_SPACE + 1]; + valid = 1; - wsprintfA(buf, "%d", infoPtr->sysBufRead); - Tcl_DStringAppendElement(dsPtr, buf); - wsprintfA(buf, "%d", infoPtr->sysBufWrite); - Tcl_DStringAppendElement(dsPtr, buf); + wsprintfA(buf, "%d", infoPtr->sysBufRead); + Tcl_DStringAppendElement(dsPtr, buf); + wsprintfA(buf, "%d", infoPtr->sysBufWrite); + Tcl_DStringAppendElement(dsPtr, buf); } if (len == 0) { - Tcl_DStringEndSublist(dsPtr); + Tcl_DStringEndSublist(dsPtr); } - + /* - * get option -xchar - */ - + * get option -xchar + */ + if (len == 0) { - Tcl_DStringAppendElement(dsPtr, "-xchar"); - Tcl_DStringStartSublist(dsPtr); + Tcl_DStringAppendElement(dsPtr, "-xchar"); + Tcl_DStringStartSublist(dsPtr); } if ((len == 0) || - ((len > 1) && (strncmp(optionName, "-xchar", len) == 0))) { + ((len > 1) && (strncmp(optionName, "-xchar", len) == 0))) { - char buf[4]; - valid = 1; + char buf[4]; + valid = 1; - if (! GetCommState(infoPtr->handle, &dcb)) { - if (interp) { - Tcl_AppendResult(interp, - "can't get comm state", (char *) NULL); - } - return TCL_ERROR; - } - sprintf(buf, "%c", dcb.XonChar); - Tcl_DStringAppendElement(dsPtr, buf); - sprintf(buf, "%c", dcb.XoffChar); - Tcl_DStringAppendElement(dsPtr, buf); + if (! GetCommState(infoPtr->handle, &dcb)) { + if (interp) { + Tcl_AppendResult(interp, + "can't get comm state", (char *) NULL); + } + return TCL_ERROR; + } + sprintf(buf, "%c", dcb.XonChar); + Tcl_DStringAppendElement(dsPtr, buf); + sprintf(buf, "%c", dcb.XoffChar); + Tcl_DStringAppendElement(dsPtr, buf); } if (len == 0) { - Tcl_DStringEndSublist(dsPtr); + Tcl_DStringEndSublist(dsPtr); } /* - * get option -lasterror - * option is readonly and returned by [fconfigure chan -lasterror] - * but not returned by unnamed [fconfigure chan] - */ - + * get option -lasterror + * option is readonly and returned by [fconfigure chan -lasterror] + * but not returned by unnamed [fconfigure chan] + */ + if ( (len > 1) && (strncmp(optionName, "-lasterror", len) == 0) ) { - valid = 1; - SerialErrorStr(infoPtr->lastError, dsPtr); + valid = 1; + SerialErrorStr(infoPtr->lastError, dsPtr); } - + /* - * get option -queue - * option is readonly and returned by [fconfigure chan -queue] - */ - + * get option -queue + * option is readonly and returned by [fconfigure chan -queue] + */ + if ((len > 1) && (strncmp(optionName, "-queue", len) == 0)) { - char buf[TCL_INTEGER_SPACE + 1]; - COMSTAT cStat; - DWORD error; + char buf[TCL_INTEGER_SPACE + 1]; + COMSTAT cStat; + DWORD error; int inBuffered, outBuffered, count; - valid = 1; + valid = 1; - /* - * Query the pending data in Tcl's internal queues - */ - inBuffered = Tcl_InputBuffered(infoPtr->channel); + /* + * Query the pending data in Tcl's internal queues + */ + inBuffered = Tcl_InputBuffered(infoPtr->channel); outBuffered = Tcl_OutputBuffered(infoPtr->channel); - /* - * Query the number of bytes in our output queue: - * 1. The bytes pending in the output thread - * 2. The bytes in the system drivers buffer - * The writer thread should not interfere this action. - */ - EnterCriticalSection(&infoPtr->csWrite); - ClearCommError( infoPtr->handle, &error, &cStat ); - count = (int)cStat.cbOutQue + infoPtr->writeQueue; - LeaveCriticalSection(&infoPtr->csWrite); + /* + * Query the number of bytes in our output queue: + * 1. The bytes pending in the output thread + * 2. The bytes in the system drivers buffer + * The writer thread should not interfere this action. + */ + EnterCriticalSection(&infoPtr->csWrite); + ClearCommError( infoPtr->handle, &error, &cStat ); + count = (int)cStat.cbOutQue + infoPtr->writeQueue; + LeaveCriticalSection(&infoPtr->csWrite); - wsprintfA(buf, "%d", inBuffered + cStat.cbInQue); - Tcl_DStringAppendElement(dsPtr, buf); - wsprintfA(buf, "%d", outBuffered + count); - Tcl_DStringAppendElement(dsPtr, buf); + wsprintfA(buf, "%d", inBuffered + cStat.cbInQue); + Tcl_DStringAppendElement(dsPtr, buf); + wsprintfA(buf, "%d", outBuffered + count); + Tcl_DStringAppendElement(dsPtr, buf); } /* - * get option -ttystatus - * option is readonly and returned by [fconfigure chan -ttystatus] - * but not returned by unnamed [fconfigure chan] - */ - if ( (len > 4) && (strncmp(optionName, "-ttystatus", len) == 0) ) { - - DWORD status; - - if (! GetCommModemStatus(infoPtr->handle, &status)) { - if (interp) { - Tcl_AppendResult(interp, - "can't get tty status", (char *) NULL); - } - return TCL_ERROR; - } - valid = 1; - SerialModemStatusStr(status, dsPtr); + * get option -ttystatus + * option is readonly and returned by [fconfigure chan -ttystatus] + * but not returned by unnamed [fconfigure chan] + */ + if ((len > 4) && (strncmp(optionName, "-ttystatus", len) == 0)) { + + DWORD status; + + if (! GetCommModemStatus(infoPtr->handle, &status)) { + if (interp) { + Tcl_AppendResult(interp, + "can't get tty status", (char *) NULL); + } + return TCL_ERROR; + } + valid = 1; + SerialModemStatusStr(status, dsPtr); } - + if (valid) { - return TCL_OK; + return TCL_OK; } else { - return Tcl_BadChannelOption(interp, optionName, - "mode pollinterval lasterror queue sysbuffer ttystatus xchar"); + return Tcl_BadChannelOption(interp, optionName, + "mode pollinterval lasterror queue sysbuffer ttystatus xchar"); } } -- cgit v0.12 From 244bc931a8bd5bd2daf06b45906027f9035a5943 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 5 Oct 2005 08:02:19 +0000 Subject: * win/tclWinPort.h: define USE_PUTENV_FOR_UNSET 1 * generic/tclEnv.c (TclSetEnv, TclUnsetEnv): add USE_PUTENV_FOR_UNSET to existing USE_PUTENV define to account for various systems that have putenv(), but can't unset env vars with it. Note difference between Windows and Linux for actually unsetting the env var (use of '='). Correct the resizing of the environ array. We assume that we are in full ownership, but that's not correct.[Bug 979640] --- ChangeLog | 11 +++++++++++ generic/tclEnv.c | 45 ++++++++++++++++++++++++++++++++------------- win/tclWinPort.h | 5 +++-- 3 files changed, 46 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8693f38..b555297 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2005-10-05 Jeff Hobbs + + * win/tclWinPort.h: define USE_PUTENV_FOR_UNSET 1 + * generic/tclEnv.c (TclSetEnv, TclUnsetEnv): add + USE_PUTENV_FOR_UNSET to existing USE_PUTENV define to account for + various systems that have putenv(), but can't unset env vars with + it. Note difference between Windows and Linux for actually + unsetting the env var (use of '='). + Correct the resizing of the environ array. We assume that we are + in full ownership, but that's not correct.[Bug 979640] + 2005-10-04 Jeff Hobbs * win/tclWinSerial.c (SerialSetOptionProc): free argv [Bug 1067708] diff --git a/generic/tclEnv.c b/generic/tclEnv.c index 1e171ff..947d397 100644 --- a/generic/tclEnv.c +++ b/generic/tclEnv.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEnv.c,v 1.20.2.1 2003/05/14 17:17:46 hobbs Exp $ + * RCS: @(#) $Id: tclEnv.c,v 1.20.2.2 2005/10/05 08:02:20 hobbs Exp $ */ #include "tclInt.h" @@ -26,6 +26,11 @@ static char **environCache = NULL; * strings that Tcl has allocated. */ #ifndef USE_PUTENV +static char **ourEnviron = NULL;/* Cache of the array that we allocate. + * We need to track this in case another + * subsystem swaps around the environ array + * like we do. + */ static int environSize = 0; /* Non-zero means that the environ array was * malloced and has this many total entries * allocated to it (not all may be in use at @@ -191,17 +196,22 @@ TclSetEnv(name, value) if (index == -1) { #ifndef USE_PUTENV - if ((length + 2) > environSize) { + /* + * We need to handle the case where the environment may be changed + * outside our control. environSize is only valid if the current + * environment is the one we allocated. [Bug 979640] + */ + if ((ourEnviron != environ) || ((length + 2) > environSize)) { char **newEnviron; newEnviron = (char **) ckalloc((unsigned) ((length + 5) * sizeof(char *))); memcpy((VOID *) newEnviron, (VOID *) environ, length*sizeof(char *)); - if (environSize != 0) { - ckfree((char *) environ); + if ((environSize != 0) && (ourEnviron != NULL)) { + ckfree((char *) ourEnviron); } - environ = newEnviron; + environ = ourEnviron = newEnviron; environSize = length + 5; #if defined(__APPLE__) && defined(__DYNAMIC__) { @@ -237,7 +247,6 @@ TclSetEnv(name, value) oldValue = environ[index]; nameLength = length; } - /* * Create a new entry. Build a complete UTF string that contains @@ -378,7 +387,7 @@ TclUnsetEnv(name) char *oldValue; int length; int index; -#ifdef USE_PUTENV +#ifdef USE_PUTENV_FOR_UNSET Tcl_DString envString; char *string; #else @@ -392,7 +401,7 @@ TclUnsetEnv(name) * First make sure that the environment variable exists to avoid * doing needless work and to avoid recursion on the unset. */ - + if (index == -1) { Tcl_MutexUnlock(&envMutex); return; @@ -408,12 +417,22 @@ TclUnsetEnv(name) * update the interpreters or we will recurse. */ -#ifdef USE_PUTENV +#ifdef USE_PUTENV_FOR_UNSET + /* + * For those platforms that support putenv to unset, Linux indicates + * that no = should be included, and Windows requires it. + */ +#ifdef WIN32 string = ckalloc((unsigned int) length+2); memcpy((VOID *) string, (VOID *) name, (size_t) length); string[length] = '='; string[length+1] = '\0'; - +#else + string = ckalloc((unsigned int) length+1); + memcpy((VOID *) string, (VOID *) name, (size_t) length); + string[length] = '\0'; +#endif + Tcl_UtfToExternalDString(NULL, string, -1, &envString); string = ckrealloc(string, (unsigned) (Tcl_DStringLength(&envString)+1)); strcpy(string, Tcl_DStringValue(&envString)); @@ -633,7 +652,7 @@ ReplaceString(oldStr, newStr) if (environCache[i]) { ckfree(environCache[i]); } - + if (newStr) { environCache[i] = newStr; } else { @@ -642,7 +661,7 @@ ReplaceString(oldStr, newStr) } environCache[cacheSize-1] = NULL; } - } else { + } else { int allocatedSize = (cacheSize + 5) * sizeof(char *); /* @@ -651,7 +670,7 @@ ReplaceString(oldStr, newStr) newCache = (char **) ckalloc((unsigned) allocatedSize); (VOID *) memset(newCache, (int) 0, (size_t) allocatedSize); - + if (environCache) { memcpy((VOID *) newCache, (VOID *) environCache, (size_t) (cacheSize * sizeof(char*))); diff --git a/win/tclWinPort.h b/win/tclWinPort.h index c553ea6..47545ba 100644 --- a/win/tclWinPort.h +++ b/win/tclWinPort.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPort.h,v 1.36 2002/11/27 18:13:38 davygrvy Exp $ + * RCS: @(#) $Id: tclWinPort.h,v 1.36.2.1 2005/10/05 08:02:20 hobbs Exp $ */ #ifndef _TCLWINPORT @@ -423,7 +423,8 @@ * the C level environment in synch with the system level environment. */ -#define USE_PUTENV 1 +#define USE_PUTENV 1 +#define USE_PUTENV_FOR_UNSET 1 /* * Msvcrt's putenv() copies the string rather than takes ownership of it. -- cgit v0.12 From 86e4d8437abab92436107fb9afd4297403c19f9d Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 5 Oct 2005 08:03:17 +0000 Subject: test to fix for 979640 --- ChangeLog | 1 + tests/env.test | 21 ++++++++------------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index b555297..5cc15b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 2005-10-05 Jeff Hobbs + * tests/env.test (env-6.1): * win/tclWinPort.h: define USE_PUTENV_FOR_UNSET 1 * generic/tclEnv.c (TclSetEnv, TclUnsetEnv): add USE_PUTENV_FOR_UNSET to existing USE_PUTENV define to account for diff --git a/tests/env.test b/tests/env.test index b8f2def..7bfeb3c 100644 --- a/tests/env.test +++ b/tests/env.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: env.test,v 1.17.2.2 2005/05/24 04:44:32 das Exp $ +# RCS: @(#) $Id: env.test,v 1.17.2.3 2005/10/05 08:03:18 hobbs Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -231,6 +231,13 @@ test env-5.5 {corner cases - cannot have null entries on Windows} {pcOnly} { catch {set env()} } {1} +test env-6.1 {corner cases - add lots of env variables} {} { + set size [array size env] + for {set i 0} {$i < 100} {incr i} { + set env(BOGUS$i) $i + } + expr {[array size env] - $size} +} 100 # Restore the environment variables at the end of the test. @@ -245,15 +252,3 @@ foreach name [array names env2] { removeFile $printenvScript ::tcltest::cleanupTests return - - - - - - - - - - - - -- cgit v0.12 From 9d629aa4b4b08b3986e112798e2808772d664131 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 5 Oct 2005 20:35:45 +0000 Subject: * doc/CrtChannel.3: Fixed [SF Tcl Bug 1104682], by application of David Welton's patch for it, and added a note about wideSeekProc. --- ChangeLog | 6 ++++++ doc/CrtChannel.3 | 18 ++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5cc15b6..a056201 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-05 Andreas Kupries + + * doc/CrtChannel.3: Fixed [SF Tcl Bug 1104682], by application of + David Welton's patch for it, and added a note about + wideSeekProc. + 2005-10-05 Jeff Hobbs * tests/env.test (env-6.1): diff --git a/doc/CrtChannel.3 b/doc/CrtChannel.3 index ee5ea72..bd45c6c 100644 --- a/doc/CrtChannel.3 +++ b/doc/CrtChannel.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.4 2005/02/23 10:27:45 dkf Exp $ +'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.5 2005/10/05 20:35:45 andreas_kupries Exp $ .so man.macros .TH Tcl_CreateChannel 3 8.4 Tcl "Tcl Library Procedures" .BS @@ -343,13 +343,15 @@ typedef struct Tcl_ChannelType { } Tcl_ChannelType; .CE .PP -The driver must provide implementations for all functions except -\fIblockModeProc\fR, \fIseekProc\fR, \fIsetOptionProc\fR, -\fIgetOptionProc\fR, and \fIclose2Proc\fR, which may be specified as -NULL. Other functions that can not be implemented for this type of -device should return \fBEINVAL\fR when invoked to indicate that they -are not implemented, except in the case of \fIflushProc\fR and -\fIhandlerProc\fR, which should specified as NULL if not otherwise defined. +It is not necessary to provide implementations for all channel +operations. Those which are not necessary may be set to NULL in the +struct: \fIblockModeProc\fR, \fIseekProc\fR, \fIsetOptionProc\fR, +\fIgetOptionProc\fR, and \fIclose2Proc\fR, in addition to +\fIflushProc\fR, \fIhandlerProc\fR, and \fIthreadActionProc\fR. Other +functions that cannot be implemented in a meaningful way should return +\fBEINVAL\fR when called, to indicate that the operations they +represent are not available. Also note that \fIwideSeekProc\fR can be +NULL if \fIseekProc\fR is. .PP The user should only use the above structure for \fBTcl_ChannelType\fR instantiation. When referencing fields in a \fBTcl_ChannelType\fR -- cgit v0.12 From c7476f19d45e568e5d766eda62807a5017b18687 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 5 Oct 2005 22:09:11 +0000 Subject: * generic/tclPipe.c (TclCreatePipeline): Fixed [SF Tcl Bug 1109294]. Applied the patch provided by David Gravereaux. --- ChangeLog | 3 +++ generic/tclPipe.c | 18 +++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index a056201..aaaa289 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-10-05 Andreas Kupries + * generic/tclPipe.c (TclCreatePipeline): Fixed [SF Tcl Bug + 1109294]. Applied the patch provided by David Gravereaux. + * doc/CrtChannel.3: Fixed [SF Tcl Bug 1104682], by application of David Welton's patch for it, and added a note about wideSeekProc. diff --git a/generic/tclPipe.c b/generic/tclPipe.c index fc0e6c0..9750131 100644 --- a/generic/tclPipe.c +++ b/generic/tclPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPipe.c,v 1.7.2.2 2005/07/28 15:27:58 dkf Exp $ + * RCS: @(#) $Id: tclPipe.c,v 1.7.2.3 2005/10/05 22:09:11 andreas_kupries Exp $ */ #include "tclInt.h" @@ -508,6 +508,7 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, * closed when cleaning up. */ int errorRelease = 0; CONST char *p; + CONST char *nextArg; int skip, lastBar, lastArg, i, j, atOK, flags, errorToOutput = 0; Tcl_DString execBuffer; TclFile pipeIn; @@ -581,7 +582,7 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, inputLiteral = p + 1; skip = 1; if (*inputLiteral == '\0') { - inputLiteral = argv[i + 1]; + inputLiteral = ((i + 1) == argc) ? NULL : argv[i + 1]; if (inputLiteral == NULL) { Tcl_AppendResult(interp, "can't specify \"", argv[i], "\" as last word in command", (char *) NULL); @@ -590,9 +591,10 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, skip = 2; } } else { + nextArg = ((i + 1) == argc) ? NULL : argv[i + 1]; inputLiteral = NULL; inputFile = FileForRedirect(interp, p, 1, argv[i], - argv[i + 1], O_RDONLY, &skip, &inputClose, &inputRelease); + nextArg, O_RDONLY, &skip, &inputClose, &inputRelease); if (inputFile == NULL) { goto error; } @@ -643,8 +645,9 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, TclpReleaseFile(outputFile); } } + nextArg = ((i + 1) == argc) ? NULL : argv[i + 1]; outputFile = FileForRedirect(interp, p, atOK, argv[i], - argv[i + 1], flags, &skip, &outputClose, &outputRelease); + nextArg, flags, &skip, &outputClose, &outputRelease); if (outputFile == NULL) { goto error; } @@ -696,8 +699,9 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, errorToOutput = 2; skip = 1; } else { + nextArg = ((i + 1) == argc) ? NULL : argv[i + 1]; errorFile = FileForRedirect(interp, p, atOK, argv[i], - argv[i + 1], flags, &skip, &errorClose, &errorRelease); + nextArg, flags, &skip, &errorClose, &errorRelease); if (errorFile == NULL) { goto error; } @@ -864,7 +868,6 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, } } } - argv[lastArg] = NULL; /* * If this is the last segment, use the specified outputFile. @@ -872,9 +875,10 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, * curInFile for the next segment of the pipe. */ - if (lastArg == argc) { + if (lastArg == argc) { curOutFile = outputFile; } else { + argv[lastArg] = NULL; if (TclpCreatePipe(&pipeIn, &curOutFile) == 0) { Tcl_AppendResult(interp, "couldn't create pipe: ", Tcl_PosixError(interp), (char *) NULL); -- cgit v0.12 From dae8beb32c6c48c608924febeac3c27ca52e9d67 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 7 Oct 2005 22:35:02 +0000 Subject: * unix/tclUnixFCmd.c (TraverseUnixTree): Adjust 2004-11-11 change to * tests/fCmd.test (fCmd-20.2): account for NFS special files with a readdir rewind threshold. [Bug 1034337] --- ChangeLog | 6 +++ tests/fCmd.test | 4 +- unix/tclUnixFCmd.c | 105 +++++++++++++++++++++++++++++++---------------------- 3 files changed, 69 insertions(+), 46 deletions(-) diff --git a/ChangeLog b/ChangeLog index aaaa289..47f87eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-07 Jeff Hobbs + + * unix/tclUnixFCmd.c (TraverseUnixTree): Adjust 2004-11-11 change to + * tests/fCmd.test (fCmd-20.2): account for NFS special + files with a readdir rewind threshold. [Bug 1034337] + 2005-10-05 Andreas Kupries * generic/tclPipe.c (TclCreatePipeline): Fixed [SF Tcl Bug diff --git a/tests/fCmd.test b/tests/fCmd.test index bb94d42..cb6d200 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.26.2.6 2004/11/25 11:31:31 rmax Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.26.2.7 2005/10/07 22:35:03 hobbs Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -1833,7 +1833,7 @@ test fCmd-20.2 {TraverseUnixTree : recursive delete of large directory: Bug 1034 {unix notRoot} { catch {file delete -force -- tfa} file mkdir tfa - for {set i 1} {$i <= 200} {incr i} {createfile tfa/testfile_$i} + for {set i 1} {$i <= 300} {incr i} {createfile tfa/testfile_$i} set result [catch {file delete -force tfa} msg] while {[catch {file delete -force tfa}]} {} list $result $msg diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index a96291f..c600ff3 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.4 2005/01/10 11:21:51 dkf Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.5 2005/10/07 22:35:03 hobbs Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -124,6 +124,21 @@ CONST TclFileAttrProcs tclpFileAttrProcs[] = { }; /* + * This is the maximum number of consecutive readdir/unlink calls that can be + * made (with no intervening rewinddir or closedir/opendir) before triggering + * a bug that makes readdir return NULL even though some directory entries + * have not been processed. The bug afflicts SunOS's readdir when applied to + * ufs file systems and Darwin 6.5's (and OSX v.10.3.8's) HFS+. JH found the + * Darwin readdir to reset at 172, so 150 is chosen to be conservative. We + * can't do a general rewind on failure as NFS can create special files that + * recreate themselves when you try and delete them. 8.4.8 added a solution + * that was affected by a single such NFS file, this solution should not be + * affected by less than THRESHOLD such files. [Bug 1034337] + */ + +#define MAX_READDIR_UNLINK_THRESHOLD 150 + +/* * Declarations for local procedures defined in this file: */ @@ -476,7 +491,7 @@ CopyFile(src, dst, statBufPtr) break; } } - + ckfree(buffer); close(srcFd); if ((close(dstFd) != 0) || (nread == -1)) { @@ -769,7 +784,7 @@ DoRemoveDirectory(pathPtr, recursive, errorPtr) } return result; } - + /* *--------------------------------------------------------------------------- * @@ -808,13 +823,13 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) * loop should be rewound whenever * traverseProc has returned TCL_OK; this is * required when traverseProc modifies the - * source hierarchy, e.g. by deleting files. */ + * source hierarchy, e.g. by deleting files. */ { Tcl_StatBuf statBuf; CONST char *source, *errfile; int result, sourceLen; int targetLen; - int needRewind; + int numProcessed = 0; Tcl_DirEntry *dirEntPtr; DIR *dirPtr; @@ -850,56 +865,58 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) closedir(dirPtr); return result; } - + Tcl_DStringAppend(sourcePtr, "/", 1); - sourceLen = Tcl_DStringLength(sourcePtr); + sourceLen = Tcl_DStringLength(sourcePtr); if (targetPtr != NULL) { Tcl_DStringAppend(targetPtr, "/", 1); targetLen = Tcl_DStringLength(targetPtr); } - do { - needRewind = 0; - while ((dirEntPtr = TclOSreaddir(dirPtr)) != NULL) { /* INTL: Native. */ - if ((dirEntPtr->d_name[0] == '.') - && ((dirEntPtr->d_name[1] == '\0') - || (strcmp(dirEntPtr->d_name, "..") == 0))) { - continue; - } - - /* - * Append name after slash, and recurse on the file. - */ - - Tcl_DStringAppend(sourcePtr, dirEntPtr->d_name, -1); - if (targetPtr != NULL) { - Tcl_DStringAppend(targetPtr, dirEntPtr->d_name, -1); - } - result = TraverseUnixTree(traverseProc, sourcePtr, targetPtr, - errorPtr, doRewind); - if (result != TCL_OK) { - needRewind = 0; - break; - } else { - needRewind = doRewind; - } - + while ((dirEntPtr = TclOSreaddir(dirPtr)) != NULL) { /* INTL: Native. */ + if ((dirEntPtr->d_name[0] == '.') + && ((dirEntPtr->d_name[1] == '\0') + || (strcmp(dirEntPtr->d_name, "..") == 0))) { + continue; + } + + /* + * Append name after slash, and recurse on the file. + */ + + Tcl_DStringAppend(sourcePtr, dirEntPtr->d_name, -1); + if (targetPtr != NULL) { + Tcl_DStringAppend(targetPtr, dirEntPtr->d_name, -1); + } + result = TraverseUnixTree(traverseProc, sourcePtr, targetPtr, + errorPtr, doRewind); + if (result != TCL_OK) { + break; + } else { + numProcessed++; + } + + /* + * Remove name after slash. + */ + + Tcl_DStringSetLength(sourcePtr, sourceLen); + if (targetPtr != NULL) { + Tcl_DStringSetLength(targetPtr, targetLen); + } + if (doRewind && (numProcessed > MAX_READDIR_UNLINK_THRESHOLD)) { /* - * Remove name after slash. + * Call rewinddir if we've called unlink or rmdir so many times + * (since the opendir or the previous rewinddir), to avoid + * a NULL-return that may a symptom of a buggy readdir. */ - - Tcl_DStringSetLength(sourcePtr, sourceLen); - if (targetPtr != NULL) { - Tcl_DStringSetLength(targetPtr, targetLen); - } - } - if (needRewind) { rewinddir(dirPtr); + numProcessed = 0; } - } while (needRewind); + } closedir(dirPtr); - + /* * Strip off the trailing slash we added */ @@ -925,7 +942,7 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) } result = TCL_ERROR; } - + return result; } -- cgit v0.12 From 8852033a0d6f9349d59a2255f40749b022e97b6b Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 10 Oct 2005 21:33:08 +0000 Subject: ensure MODULE_SCOPE decl --- ChangeLog | 4 ++++ generic/tclInt.h | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 47f87eb..a39aaf4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-10-10 Jeff Hobbs + + * generic/tclInt.h: ensure MODULE_SCOPE decl + 2005-10-07 Jeff Hobbs * unix/tclUnixFCmd.c (TraverseUnixTree): Adjust 2004-11-11 change to diff --git a/generic/tclInt.h b/generic/tclInt.h index 2538772..d2da3b7 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.17 2005/08/03 22:23:42 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.18 2005/10/10 21:33:09 hobbs Exp $ */ #ifndef _TCLINT @@ -77,6 +77,19 @@ # endif #endif +/* + * Used to tag functions that are only to be visible within the module being + * built and not outside it (where this is supported by the linker). + */ + +#ifndef MODULE_SCOPE +# ifdef __cplusplus +# define MODULE_SCOPE extern "C" +# else +# define MODULE_SCOPE extern +# endif +#endif + #undef TCL_STORAGE_CLASS #ifdef BUILD_tcl # define TCL_STORAGE_CLASS DLLEXPORT -- cgit v0.12 From 0b42fef27ab23118bccd94430fb01b98b826b97d Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 13 Oct 2005 20:40:47 +0000 Subject: Temporary ifdef TCL_THREADS changes done to de-activate pending event processing when channel is being closed/cutted. --- ChangeLog | 6 ++++++ generic/tclIO.c | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a39aaf4..974ae0f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-13 Zoran Vasiljevic + + * generic/tclIO.c (Tcl_ClearChannelHandlers): temporary + ifdef TCL_THREADS changes done to de-activate pending + event processing when channel is being closed/cutted. + 2005-10-10 Jeff Hobbs * generic/tclInt.h: ensure MODULE_SCOPE decl diff --git a/generic/tclIO.c b/generic/tclIO.c index ccc107b..208fb69 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.12 2005/10/04 18:15:09 vasiljevic Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.13 2005/10/13 20:40:48 vasiljevic Exp $ */ #include "tclInt.h" @@ -2710,7 +2710,14 @@ Tcl_ClearChannelHandlers (channel) */ statePtr->interestMask = 0; + + /* + * TEMPORARILY DEFINED FOR THREADED BUILD ONLY. SEE SF BUG# 1323992 + */ + +#ifdef TCL_THREADS (chanPtr->typePtr->watchProc)(chanPtr->instanceData, 0); +#endif /* * Remove any EventScript records for this channel. -- cgit v0.12 From 298c91d0d2026e4bfb0630d0cee9bfbb1f73e760 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 13 Oct 2005 21:01:41 +0000 Subject: Added some more clarifying comments in Tcl_ClearChannelHandlers() --- generic/tclIO.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/generic/tclIO.c b/generic/tclIO.c index 208fb69..e3abd8a 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.13 2005/10/13 20:40:48 vasiljevic Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.14 2005/10/13 21:01:41 vasiljevic Exp $ */ #include "tclInt.h" @@ -2707,14 +2707,13 @@ Tcl_ClearChannelHandlers (channel) * file-events still sitting in the event queue of the current thread. * We deliberately do not call UpdateInterest() because this could * re-schedule new events if the channel still needs to be flushed. + * This should happen all the time, but Linux 2.4 systems seem to lose + * the flush on close in some cases (socket-9.2 socket-11.13) if this is + * used, so restrict it to TCL_THREADS, where you can otherwise crash + * numerous systems. [Bug 1323992] */ statePtr->interestMask = 0; - - /* - * TEMPORARILY DEFINED FOR THREADED BUILD ONLY. SEE SF BUG# 1323992 - */ - #ifdef TCL_THREADS (chanPtr->typePtr->watchProc)(chanPtr->instanceData, 0); #endif -- cgit v0.12 From 06be524fb096bbdcf2eb156ca47dfd09cdf92fbe Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 13 Oct 2005 21:45:29 +0000 Subject: Fix [Bug 1284178] and tweak tests to accommodate. --- ChangeLog | 5 +++++ generic/tclCmdAH.c | 8 ++++++-- tests/format.test | 14 +++++++++----- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 974ae0f..c81e7e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-10-13 Donal K. Fellows + + * generic/tclCmdAH.c (Tcl_FormatObjCmd): Stop [format] from seeing + the difference between ints and wides. [Bug 1284178] + 2005-10-13 Zoran Vasiljevic * generic/tclIO.c (Tcl_ClearChannelHandlers): temporary diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 545af15..aaf37ac 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.13 2005/07/05 21:18:23 dgp Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.14 2005/10/13 21:45:32 dkf Exp $ */ #include "tclInt.h" @@ -2195,7 +2195,11 @@ Tcl_FormatObjCmd(dummy, interp, objc, objv) } if (Tcl_GetLongFromObj(interp, /* INTL: Tcl source. */ objv[objIndex], &intValue) != TCL_OK) { - goto fmtError; + if (Tcl_GetWideIntFromObj(interp, /* INTL: Tcl source. */ + objv[objIndex], &wideValue) != TCL_OK) { + goto fmtError; + } + intValue = Tcl_WideAsLong(wideValue); } #if (LONG_MAX > INT_MAX) diff --git a/tests/format.test b/tests/format.test index 448f162..02af0d3 100644 --- a/tests/format.test +++ b/tests/format.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: format.test,v 1.11.2.7 2005/06/17 23:26:20 dkf Exp $ +# RCS: @(#) $Id: format.test,v 1.11.2.8 2005/10/13 21:45:32 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -369,6 +369,10 @@ test format-10.4 {"h" format specifier} { # Bug 1154163: This is minimal behaviour for %hx specifier! format %hx 1 } 1 +test format-10.5 {"h" format specifier} { + # Bug 1284178: Highly out-of-range values shouldn't cause errors + format %hu 0x100000000 +} 0 test format-11.1 {XPG3 %$n specifiers} { format {%2$d %1$d} 4 5 @@ -497,8 +501,8 @@ for {set i 290} {$i < 400} {incr i} { [expr {wide(0x80000000) != int(0x80000000)}] test format-17.1 {testing %d with wide} {64bitInts wideIntExpressions} { - list [catch {format %d 7810179016327718216} msg] $msg -} {1 {integer value too large to represent}} + format %d 7810179016327718216 +} 1819043144 test format-17.2 {testing %ld with wide} {64bitInts} { format %ld 7810179016327718216 } 7810179016327718216 @@ -536,8 +540,8 @@ test format-18.1 {do not demote existing numeric values} { test format-18.2 {do not demote existing numeric values} {wideIntExpressions} { set a [expr {0xaaaaaaaaaa + 1}] set b 0xaaaaaaaaab - list [catch {format %08x $a} msg] $msg [expr {$a == $b}] -} {1 {integer value too large to represent} 1} + list [format %08x $a] [expr {$a == $b}] +} {aaaaaaab 1} test format-19.1 { regression test - tcl-core message by Brian Griffin on -- cgit v0.12 From 41ccd3c8b08e1da5660979e6bc9450800f08d1cd Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 14 Oct 2005 17:12:32 +0000 Subject: Backed off change from 2005-10-04 (see ChangeLog and Tcl Bug# 1323992 for more info. --- generic/tclIO.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/generic/tclIO.c b/generic/tclIO.c index e3abd8a..4cf62ad 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.14 2005/10/13 21:01:41 vasiljevic Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.15 2005/10/14 17:12:32 vasiljevic Exp $ */ #include "tclInt.h" @@ -2702,21 +2702,9 @@ Tcl_ClearChannelHandlers (channel) * will occur if Tcl_DoOneEvent is called before the channel is * finally deleted in FlushChannel. This can happen if the channel * has a background flush active. - * Also, delete all registered file handlers for this channel - * (and for the current thread). This prevents executing of pending - * file-events still sitting in the event queue of the current thread. - * We deliberately do not call UpdateInterest() because this could - * re-schedule new events if the channel still needs to be flushed. - * This should happen all the time, but Linux 2.4 systems seem to lose - * the flush on close in some cases (socket-9.2 socket-11.13) if this is - * used, so restrict it to TCL_THREADS, where you can otherwise crash - * numerous systems. [Bug 1323992] */ - + statePtr->interestMask = 0; -#ifdef TCL_THREADS - (chanPtr->typePtr->watchProc)(chanPtr->instanceData, 0); -#endif /* * Remove any EventScript records for this channel. -- cgit v0.12 From 6fbb31930b626c92e0e3130fe86fa0c2ffc6946b Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 14 Oct 2005 17:13:50 +0000 Subject: See file. --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index c81e7e9..5353cdc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-14 Zoran Vasiljevic + + * generic/tclIO.c (Tcl_ClearChannelHandlers): removed + change dated 2005-10-04 below. Look into Bug# 1323992 + for detailed discussion. + 2005-10-13 Donal K. Fellows * generic/tclCmdAH.c (Tcl_FormatObjCmd): Stop [format] from seeing -- cgit v0.12 From 352f9db6131a948693af4acd7d5ae471c54635c2 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sat, 22 Oct 2005 03:07:45 +0000 Subject: * generic/tclExecute.c (INST_CONCAT): disable the optimisation for wide integers, [Bug 1251791]. --- ChangeLog | 5 +++++ generic/tclExecute.c | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5353cdc..095edc1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-10-22 Miguel Sofer + + * generic/tclExecute.c (INST_CONCAT): disable the optimisation for + wide integers, [Bug 1251791]. + 2005-10-14 Zoran Vasiljevic * generic/tclIO.c (Tcl_ClearChannelHandlers): removed diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 5161b17..ef4b7d4 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.14 2005/08/29 16:37:42 kennykb Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.15 2005/10/22 03:07:45 msofer Exp $ */ #include "tclInt.h" @@ -1265,10 +1265,12 @@ TclExecuteByteCode(interp, codePtr) /* * Peephole optimisation for appending an empty string. * This enables replacing 'K $x [set x{}]' by '$x[set x{}]' - * for fastest execution. + * for fastest execution. Avoid doing the optimisation for wide + * ints - a case where equal strings may refer to different values + * (see [Bug 1251791]). */ - if (opnd == 2) { + if ((opnd == 2) && (stackPtr[stackTop-1]->typePtr != &tclWideIntType)) { Tcl_GetStringFromObj(stackPtr[stackTop], &length); if (length == 0) { /* Just drop the top item from the stack */ -- cgit v0.12 From 337481bde00a01912f25ffeda6d5bd4351057c7d Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sun, 23 Oct 2005 22:01:27 +0000 Subject: * generic/tclBasic.c: * generic/tclBinary.c: * generic/tclCmdAH.c: * generic/tclCmdIL.c: * generic/tclCmdMZ.c: * generic/tclExecute.c: * generic/tclLink.c: * generic/tclMain.c: * generic/tclProc.c: * generic/tclScan.c: * generic/tclTest.c: * generic/tclVar.c: * mac/tclMacInit.c: * unix/tclUnixInit.c: * win/tclWinInit.c: Insure that the core never calls TclPtrSetVar, Tcl_SetVar2Ex, Tcl_ObjSetVar2 or Tcl_SetObjErrorCode with a 0-ref new value. It is not possible to handle error returns correctly in that case [Bug 1334947], one has the choice of leaking the object in some cases, or else risk crashing in some others. --- ChangeLog | 22 +++++++++++++++++++++ generic/tclBasic.c | 22 +++++++++++++-------- generic/tclBinary.c | 16 +++++++++------ generic/tclCmdAH.c | 9 +++------ generic/tclCmdIL.c | 5 +++-- generic/tclCmdMZ.c | 19 ++++++++++++------ generic/tclExecute.c | 9 +++------ generic/tclLink.c | 56 ++++++++++++++++++++++++++++++++++++++-------------- generic/tclMain.c | 12 ++++++++--- generic/tclProc.c | 15 +++++++++----- generic/tclScan.c | 10 ++++++---- generic/tclTest.c | 5 +++-- generic/tclVar.c | 21 ++++++++------------ mac/tclMacInit.c | 4 +++- unix/tclUnixInit.c | 4 +++- win/tclWinInit.c | 4 +++- 16 files changed, 154 insertions(+), 79 deletions(-) diff --git a/ChangeLog b/ChangeLog index 095edc1..cc4795c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2005-10-23 Miguel Sofer + + * generic/tclBasic.c: + * generic/tclBinary.c: + * generic/tclCmdAH.c: + * generic/tclCmdIL.c: + * generic/tclCmdMZ.c: + * generic/tclExecute.c: + * generic/tclLink.c: + * generic/tclMain.c: + * generic/tclProc.c: + * generic/tclScan.c: + * generic/tclTest.c: + * generic/tclVar.c: + * mac/tclMacInit.c: + * unix/tclUnixInit.c: + * win/tclWinInit.c: Insure that the core never calls TclPtrSetVar, + Tcl_SetVar2Ex, Tcl_ObjSetVar2 or Tcl_SetObjErrorCode with a 0-ref + new value. It is not possible to handle error returns correctly in + that case [Bug 1334947], one has the choice of leaking the object + in some cases, or else risk crashing in some others. + 2005-10-22 Miguel Sofer * generic/tclExecute.c (INST_CONCAT): disable the optimisation for diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 00673d5..4871844 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.17 2005/07/26 17:05:43 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.18 2005/10/23 22:01:28 msofer Exp $ */ #include "tclInt.h" @@ -5284,7 +5284,7 @@ Tcl_AddObjErrorInfo(interp, message, length) * NULL byte. */ { register Interp *iPtr = (Interp *) interp; - Tcl_Obj *messagePtr; + Tcl_Obj *objPtr; /* * If we are just starting to log an error, errorInfo is initialized @@ -5298,8 +5298,11 @@ Tcl_AddObjErrorInfo(interp, message, length) Tcl_ObjSetVar2(interp, iPtr->execEnvPtr->errorInfo, NULL, iPtr->objResultPtr, TCL_GLOBAL_ONLY); } else { /* use the string result */ + objPtr = Tcl_NewStringObj(interp->result, -1); + Tcl_IncrRefCount(objPtr); Tcl_ObjSetVar2(interp, iPtr->execEnvPtr->errorInfo, NULL, - Tcl_NewStringObj(interp->result, -1), TCL_GLOBAL_ONLY); + objPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(objPtr); } /* @@ -5308,8 +5311,11 @@ Tcl_AddObjErrorInfo(interp, message, length) */ if (!(iPtr->flags & ERROR_CODE_SET)) { + objPtr = Tcl_NewStringObj("NONE", -1); + Tcl_IncrRefCount(objPtr); Tcl_ObjSetVar2(interp, iPtr->execEnvPtr->errorCode, NULL, - Tcl_NewStringObj("NONE", -1), TCL_GLOBAL_ONLY); + objPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(objPtr); } } @@ -5318,11 +5324,11 @@ Tcl_AddObjErrorInfo(interp, message, length) */ if (length != 0) { - messagePtr = Tcl_NewStringObj(message, length); - Tcl_IncrRefCount(messagePtr); + objPtr = Tcl_NewStringObj(message, length); + Tcl_IncrRefCount(objPtr); Tcl_ObjSetVar2(interp, iPtr->execEnvPtr->errorInfo, NULL, - messagePtr, (TCL_GLOBAL_ONLY | TCL_APPEND_VALUE)); - Tcl_DecrRefCount(messagePtr); /* free msg object appended above */ + objPtr, (TCL_GLOBAL_ONLY | TCL_APPEND_VALUE)); + Tcl_DecrRefCount(objPtr); /* free msg object appended above */ } } diff --git a/generic/tclBinary.c b/generic/tclBinary.c index cf83b99..fcc0061 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBinary.c,v 1.13.2.3 2005/09/27 15:44:13 dkf Exp $ + * RCS: @(#) $Id: tclBinary.c,v 1.13.2.4 2005/10/23 22:01:29 msofer Exp $ */ #include "tclInt.h" @@ -1083,12 +1083,13 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) } } valuePtr = Tcl_NewByteArrayObj(src, size); + Tcl_IncrRefCount(valuePtr); resultPtr = Tcl_ObjSetVar2(interp, objv[arg], NULL, valuePtr, TCL_LEAVE_ERR_MSG); + Tcl_DecrRefCount(valuePtr); arg++; if (resultPtr == NULL) { DeleteScanNumberCache(numberCachePtr); - Tcl_DecrRefCount(valuePtr); /* unneeded */ return TCL_ERROR; } offset += count; @@ -1137,13 +1138,14 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) *dest++ = (char) ((value & 0x80) ? '1' : '0'); } } - + + Tcl_IncrRefCount(valuePtr); resultPtr = Tcl_ObjSetVar2(interp, objv[arg], NULL, valuePtr, TCL_LEAVE_ERR_MSG); + Tcl_DecrRefCount(valuePtr); arg++; if (resultPtr == NULL) { DeleteScanNumberCache(numberCachePtr); - Tcl_DecrRefCount(valuePtr); /* unneeded */ return TCL_ERROR; } offset += (count + 7 ) / 8; @@ -1195,12 +1197,13 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) } } + Tcl_IncrRefCount(valuePtr); resultPtr = Tcl_ObjSetVar2(interp, objv[arg], NULL, valuePtr, TCL_LEAVE_ERR_MSG); + Tcl_DecrRefCount(valuePtr); arg++; if (resultPtr == NULL) { DeleteScanNumberCache(numberCachePtr); - Tcl_DecrRefCount(valuePtr); /* unneeded */ return TCL_ERROR; } offset += (count + 1) / 2; @@ -1266,12 +1269,13 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) offset += count*size; } + Tcl_IncrRefCount(valuePtr); resultPtr = Tcl_ObjSetVar2(interp, objv[arg], NULL, valuePtr, TCL_LEAVE_ERR_MSG); + Tcl_DecrRefCount(valuePtr); arg++; if (resultPtr == NULL) { DeleteScanNumberCache(numberCachePtr); - Tcl_DecrRefCount(valuePtr); /* unneeded */ return TCL_ERROR; } break; diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index aaf37ac..c3402ef 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.14 2005/10/13 21:45:32 dkf Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.15 2005/10/23 22:01:29 msofer Exp $ */ #include "tclInt.h" @@ -1826,20 +1826,17 @@ Tcl_ForeachObjCmd(dummy, interp, objc, objv) for (v = 0; v < varcList[i]; v++) { int k = index[i]++; Tcl_Obj *valuePtr, *varValuePtr; - int isEmptyObj = 0; if (k < argcList[i]) { valuePtr = argvList[i][k]; } else { valuePtr = Tcl_NewObj(); /* empty string */ - isEmptyObj = 1; } + Tcl_IncrRefCount(valuePtr); varValuePtr = Tcl_ObjSetVar2(interp, varvList[i][v], NULL, valuePtr, 0); + Tcl_DecrRefCount(valuePtr); if (varValuePtr == NULL) { - if (isEmptyObj) { - Tcl_DecrRefCount(valuePtr); - } Tcl_ResetResult(interp); Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "couldn't set loop variable: \"", diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index ab5c876..f38011b 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.6 2005/07/29 14:57:26 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.7 2005/10/23 22:01:29 msofer Exp $ */ #include "tclInt.h" @@ -933,10 +933,11 @@ InfoDefaultCmd(dummy, interp, objc, objv) Tcl_SetIntObj(Tcl_GetObjResult(interp), 1); } else { Tcl_Obj *nullObjPtr = Tcl_NewObj(); + Tcl_IncrRefCount(nullObjPtr); valueObjPtr = Tcl_ObjSetVar2(interp, objv[4], NULL, nullObjPtr, 0); + Tcl_DecrRefCount(nullObjPtr); /* free unneeded obj */ if (valueObjPtr == NULL) { - Tcl_DecrRefCount(nullObjPtr); /* free unneeded obj */ goto defStoreError; } Tcl_SetIntObj(Tcl_GetObjResult(interp), 0); diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 1ab108f..d1cb609 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.20 2005/06/21 17:19:42 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.21 2005/10/23 22:01:29 msofer Exp $ */ #include "tclInt.h" @@ -461,9 +461,10 @@ Tcl_RegexpObjCmd(dummy, interp, objc, objv) } } else { Tcl_Obj *valuePtr; + Tcl_IncrRefCount(newPtr); valuePtr = Tcl_ObjSetVar2(interp, objv[i], NULL, newPtr, 0); + Tcl_DecrRefCount(newPtr); if (valuePtr == NULL) { - Tcl_DecrRefCount(newPtr); Tcl_AppendResult(interp, "couldn't set variable \"", Tcl_GetString(objv[i]), "\"", (char *) NULL); return TCL_ERROR; @@ -1758,10 +1759,16 @@ Tcl_StringObjCmd(dummy, interp, objc, objv) * Only set the failVarObj when we will return 0 * and we have indicated a valid fail index (>= 0) */ - if ((result == 0) && (failVarObj != NULL) && - Tcl_ObjSetVar2(interp, failVarObj, NULL, Tcl_NewIntObj(failat), - TCL_LEAVE_ERR_MSG) == NULL) { - return TCL_ERROR; + if ((result == 0) && (failVarObj != NULL)) { + Tcl_Obj *resPtr, *tmpPtr = Tcl_NewIntObj(failat); + + Tcl_IncrRefCount(tmpPtr); + resPtr = Tcl_ObjSetVar2(interp, failVarObj, NULL, tmpPtr, + TCL_LEAVE_ERR_MSG); + Tcl_DecrRefCount(tmpPtr); + if (resPtr == NULL) { + return TCL_ERROR; + } } Tcl_SetBooleanObj(resultPtr, result); break; diff --git a/generic/tclExecute.c b/generic/tclExecute.c index ef4b7d4..20f34e6 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.15 2005/10/22 03:07:45 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.16 2005/10/23 22:01:29 msofer Exp $ */ #include "tclInt.h" @@ -4038,9 +4038,7 @@ TclExecuteByteCode(interp, codePtr) valIndex = (iterNum * numVars); for (j = 0; j < numVars; j++) { - int setEmptyStr = 0; if (valIndex >= listLen) { - setEmptyStr = 1; TclNewObj(valuePtr); } else { valuePtr = listRepPtr->elements[valIndex]; @@ -4068,16 +4066,15 @@ TclExecuteByteCode(interp, codePtr) } } else { DECACHE_STACK_INFO(); + Tcl_IncrRefCount(valuePtr); value2Ptr = TclPtrSetVar(interp, varPtr, NULL, part1, NULL, valuePtr, TCL_LEAVE_ERR_MSG); + TclDecrRefCount(valuePtr); CACHE_STACK_INFO(); if (value2Ptr == NULL) { TRACE_WITH_OBJ(("%u => ERROR init. index temp %d: ", opnd, varIndex), Tcl_GetObjResult(interp)); - if (setEmptyStr) { - TclDecrRefCount(valuePtr); - } result = TCL_ERROR; goto checkForCatch; } diff --git a/generic/tclLink.c b/generic/tclLink.c index 3476766..f31ad8e 100644 --- a/generic/tclLink.c +++ b/generic/tclLink.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLink.c,v 1.8 2002/08/05 03:24:41 dgp Exp $ + * RCS: @(#) $Id: tclLink.c,v 1.8.2.1 2005/10/23 22:01:30 msofer Exp $ */ #include "tclInt.h" @@ -95,7 +95,7 @@ Tcl_LinkVar(interp, varName, addr, type) * Also may have TCL_LINK_READ_ONLY * OR'ed in. */ { - Tcl_Obj *objPtr; + Tcl_Obj *objPtr, *resPtr; Link *linkPtr; int code; @@ -111,10 +111,12 @@ Tcl_LinkVar(interp, varName, addr, type) linkPtr->flags = 0; } objPtr = ObjValue(linkPtr); - if (Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, objPtr, - TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG) == NULL) { + Tcl_IncrRefCount(objPtr); + resPtr = Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, objPtr, + TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG); + Tcl_DecrRefCount(objPtr); + if (resPtr == NULL) { Tcl_DecrRefCount(linkPtr->varName); - Tcl_DecrRefCount(objPtr); ckfree((char *) linkPtr); return TCL_ERROR; } @@ -191,6 +193,7 @@ Tcl_UpdateLinkedVar(interp, varName) { Link *linkPtr; int savedFlag; + Tcl_Obj *objPtr; linkPtr = (Link *) Tcl_VarTraceInfo(interp, varName, TCL_GLOBAL_ONLY, LinkTraceProc, (ClientData) NULL); @@ -199,8 +202,10 @@ Tcl_UpdateLinkedVar(interp, varName) } savedFlag = linkPtr->flags & LINK_BEING_UPDATED; linkPtr->flags |= LINK_BEING_UPDATED; - Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, ObjValue(linkPtr), - TCL_GLOBAL_ONLY); + objPtr = ObjValue(linkPtr); + Tcl_IncrRefCount(objPtr); + Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, objPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(objPtr); linkPtr->flags = (linkPtr->flags & ~LINK_BEING_UPDATED) | savedFlag; } @@ -237,7 +242,7 @@ LinkTraceProc(clientData, interp, name1, name2, flags) int changed, valueLength; CONST char *value; char **pp, *result; - Tcl_Obj *objPtr, *valueObj; + Tcl_Obj *objPtr, *valueObj, *tmpPtr; /* * If the variable is being unset, then just re-create it (with a @@ -249,8 +254,11 @@ LinkTraceProc(clientData, interp, name1, name2, flags) Tcl_DecrRefCount(linkPtr->varName); ckfree((char *) linkPtr); } else if (flags & TCL_TRACE_DESTROYED) { - Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, ObjValue(linkPtr), + tmpPtr = ObjValue(linkPtr); + Tcl_IncrRefCount(tmpPtr); + Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, tmpPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(tmpPtr); Tcl_TraceVar(interp, Tcl_GetString(linkPtr->varName), TCL_GLOBAL_ONLY|TCL_TRACE_READS|TCL_TRACE_WRITES |TCL_TRACE_UNSETS, LinkTraceProc, (ClientData) linkPtr); @@ -293,8 +301,11 @@ LinkTraceProc(clientData, interp, name1, name2, flags) return "internal error: bad linked variable type"; } if (changed) { - Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, ObjValue(linkPtr), + tmpPtr = ObjValue(linkPtr); + Tcl_IncrRefCount(tmpPtr); + Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, tmpPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(tmpPtr); } return NULL; } @@ -309,8 +320,11 @@ LinkTraceProc(clientData, interp, name1, name2, flags) */ if (linkPtr->flags & LINK_READ_ONLY) { - Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, ObjValue(linkPtr), + tmpPtr = ObjValue(linkPtr); + Tcl_IncrRefCount(tmpPtr); + Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, tmpPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(tmpPtr); return "linked variable is read-only"; } valueObj = Tcl_ObjGetVar2(interp, linkPtr->varName,NULL, TCL_GLOBAL_ONLY); @@ -331,8 +345,11 @@ LinkTraceProc(clientData, interp, name1, name2, flags) if (Tcl_GetIntFromObj(interp, valueObj, &linkPtr->lastValue.i) != TCL_OK) { Tcl_SetObjResult(interp, objPtr); - Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, ObjValue(linkPtr), + tmpPtr = ObjValue(linkPtr); + Tcl_IncrRefCount(tmpPtr); + Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, tmpPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(tmpPtr); result = "variable must have integer value"; goto end; } @@ -343,8 +360,11 @@ LinkTraceProc(clientData, interp, name1, name2, flags) if (Tcl_GetWideIntFromObj(interp, valueObj, &linkPtr->lastValue.w) != TCL_OK) { Tcl_SetObjResult(interp, objPtr); - Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, ObjValue(linkPtr), + tmpPtr = ObjValue(linkPtr); + Tcl_IncrRefCount(tmpPtr); + Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, tmpPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(tmpPtr); result = "variable must have integer value"; goto end; } @@ -355,8 +375,11 @@ LinkTraceProc(clientData, interp, name1, name2, flags) if (Tcl_GetDoubleFromObj(interp, valueObj, &linkPtr->lastValue.d) != TCL_OK) { Tcl_SetObjResult(interp, objPtr); - Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, ObjValue(linkPtr), + tmpPtr = ObjValue(linkPtr); + Tcl_IncrRefCount(tmpPtr); + Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, tmpPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(tmpPtr); result = "variable must have real value"; goto end; } @@ -367,8 +390,11 @@ LinkTraceProc(clientData, interp, name1, name2, flags) if (Tcl_GetBooleanFromObj(interp, valueObj, &linkPtr->lastValue.i) != TCL_OK) { Tcl_SetObjResult(interp, objPtr); - Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, ObjValue(linkPtr), + tmpPtr = ObjValue(linkPtr); + Tcl_IncrRefCount(tmpPtr); + Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, tmpPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(tmpPtr); result = "variable must have boolean value"; goto end; } diff --git a/generic/tclMain.c b/generic/tclMain.c index 1b73be6..2847bd8 100644 --- a/generic/tclMain.c +++ b/generic/tclMain.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMain.c,v 1.20.2.1 2005/09/30 19:28:55 dgp Exp $ + * RCS: @(#) $Id: tclMain.c,v 1.20.2.2 2005/10/23 22:01:30 msofer Exp $ */ #include "tcl.h" @@ -210,6 +210,7 @@ Tcl_Main(argc, argv, appInitProc) Tcl_Channel inChannel, outChannel, errChannel; Tcl_Interp *interp; Tcl_DString appName; + Tcl_Obj *objPtr; Tcl_FindExecutable(argv[0]); @@ -241,8 +242,11 @@ Tcl_Main(argc, argv, appInitProc) argc--; argv++; - Tcl_SetVar2Ex(interp, "argc", NULL, Tcl_NewIntObj(argc), TCL_GLOBAL_ONLY); - + objPtr = Tcl_NewIntObj(argc); + Tcl_IncrRefCount(objPtr); + Tcl_SetVar2Ex(interp, "argc", NULL, objPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(objPtr); + argvPtr = Tcl_NewListObj(0, NULL); while (argc--) { Tcl_DString ds; @@ -251,7 +255,9 @@ Tcl_Main(argc, argv, appInitProc) Tcl_DStringValue(&ds), Tcl_DStringLength(&ds))); Tcl_DStringFree(&ds); } + Tcl_IncrRefCount(argvPtr); Tcl_SetVar2Ex(interp, "argv", NULL, argvPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(argvPtr); /* * Set the "tcl_interactive" variable. diff --git a/generic/tclProc.c b/generic/tclProc.c index 40c8ceb..2cb8be2 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.2 2004/05/02 21:07:16 msofer Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.3 2005/10/23 22:01:30 msofer Exp $ */ #include "tclInt.h" @@ -1464,19 +1464,24 @@ TclUpdateReturnInfo(iPtr) { int code; char *errorCode; + Tcl_Obj *objPtr; code = iPtr->returnCode; iPtr->returnCode = TCL_OK; if (code == TCL_ERROR) { errorCode = ((iPtr->errorCode != NULL) ? iPtr->errorCode : "NONE"); + objPtr = Tcl_NewStringObj(errorCode, -1); + Tcl_IncrRefCount(objPtr); Tcl_ObjSetVar2((Tcl_Interp *) iPtr, iPtr->execEnvPtr->errorCode, - NULL, Tcl_NewStringObj(errorCode, -1), - TCL_GLOBAL_ONLY); + NULL, objPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(objPtr); iPtr->flags |= ERROR_CODE_SET; if (iPtr->errorInfo != NULL) { + objPtr = Tcl_NewStringObj(iPtr->errorInfo, -1); + Tcl_IncrRefCount(objPtr); Tcl_ObjSetVar2((Tcl_Interp *) iPtr, iPtr->execEnvPtr->errorInfo, - NULL, Tcl_NewStringObj(iPtr->errorInfo, -1), - TCL_GLOBAL_ONLY); + NULL, objPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(objPtr); iPtr->flags |= ERR_IN_PROGRESS; } } diff --git a/generic/tclScan.c b/generic/tclScan.c index 693fa60..19cec54 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclScan.c,v 1.12.2.1 2004/08/19 21:12:04 dkf Exp $ + * RCS: @(#) $Id: tclScan.c,v 1.12.2.2 2005/10/23 22:01:30 msofer Exp $ */ #include "tclInt.h" @@ -1168,15 +1168,17 @@ Tcl_ScanObjCmd(dummy, interp, objc, objv) */ for (i = 0; i < totalVars; i++) { if (objs[i] != NULL) { + Tcl_Obj *tmpPtr; + result++; - if (Tcl_ObjSetVar2(interp, objv[i+3], NULL, - objs[i], 0) == NULL) { + tmpPtr = Tcl_ObjSetVar2(interp, objv[i+3], NULL, objs[i], 0); + Tcl_DecrRefCount(objs[i]); + if (tmpPtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "couldn't set variable \"", Tcl_GetString(objv[i+3]), "\"", (char *) NULL); code = TCL_ERROR; } - Tcl_DecrRefCount(objs[i]); } } } else { diff --git a/generic/tclTest.c b/generic/tclTest.c index dbd2b8e..e02ba13 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.9 2004/08/16 14:18:25 msofer Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.10 2005/10/23 22:01:30 msofer Exp $ */ #define TCL_TEST @@ -3437,9 +3437,10 @@ TestregexpObjCmd(dummy, interp, objc, objv) info.matches[ii].end - 1); } } + Tcl_IncrRefCount(newPtr); valuePtr = Tcl_ObjSetVar2(interp, varPtr, NULL, newPtr, 0); + Tcl_DecrRefCount(newPtr); if (valuePtr == NULL) { - Tcl_DecrRefCount(newPtr); Tcl_AppendResult(interp, "couldn't set variable \"", Tcl_GetString(varPtr), "\"", (char *) NULL); return TCL_ERROR; diff --git a/generic/tclVar.c b/generic/tclVar.c index a78b3f6..52fec78 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.8 2004/10/01 00:09:36 dgp Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.9 2005/10/23 22:01:31 msofer Exp $ */ #include "tclInt.h" @@ -2686,7 +2686,7 @@ Tcl_LappendObjCmd(dummy, interp, objc, objv) Tcl_Obj *varValuePtr, *newValuePtr; register List *listRepPtr; register Tcl_Obj **elemPtrs; - int numElems, numRequired, createdNewObj, createVar, i, j; + int numElems, numRequired, createdNewObj, i, j; Var *varPtr, *arrayPtr; char *part1; @@ -2703,10 +2703,11 @@ Tcl_LappendObjCmd(dummy, interp, objc, objv) */ varValuePtr = Tcl_NewObj(); + Tcl_IncrRefCount(varValuePtr); newValuePtr = Tcl_ObjSetVar2(interp, objv[1], NULL, varValuePtr, TCL_LEAVE_ERR_MSG); + Tcl_DecrRefCount(varValuePtr); if (newValuePtr == NULL) { - Tcl_DecrRefCount(varValuePtr); /* free unneeded object */ return TCL_ERROR; } } @@ -2719,12 +2720,7 @@ Tcl_LappendObjCmd(dummy, interp, objc, objv) * the variable will now each only be called once. Also, if the * variable's old value is unshared we modify it directly, otherwise * we create a new copy to modify: this is "copy on write". - */ - - createdNewObj = 0; - createVar = 1; - - /* + * * Use the TCL_TRACE_READS flag to ensure that if we have an * array with no elements set yet, but with a read trace on it, * we will create the variable and get read traces triggered. @@ -2750,6 +2746,7 @@ Tcl_LappendObjCmd(dummy, interp, objc, objv) arrayPtr->refCount--; } + createdNewObj = 0; if (varValuePtr == NULL) { /* * We couldn't read the old value: either the var doesn't yet @@ -2757,7 +2754,6 @@ Tcl_LappendObjCmd(dummy, interp, objc, objv) * create it with Tcl_ObjSetVar2 below. */ - createVar = (TclIsVarUndefined(varPtr)); varValuePtr = Tcl_NewObj(); createdNewObj = 1; } else if (Tcl_IsShared(varValuePtr)) { @@ -2824,12 +2820,11 @@ Tcl_LappendObjCmd(dummy, interp, objc, objv) * was new and we didn't create the variable. */ + Tcl_IncrRefCount(varValuePtr); newValuePtr = TclPtrSetVar(interp, varPtr, arrayPtr, part1, NULL, varValuePtr, TCL_LEAVE_ERR_MSG); + Tcl_DecrRefCount(varValuePtr); if (newValuePtr == NULL) { - if (createdNewObj && !createVar) { - Tcl_DecrRefCount(varValuePtr); /* free unneeded obj */ - } return TCL_ERROR; } } diff --git a/mac/tclMacInit.c b/mac/tclMacInit.c index a319713..afae114 100644 --- a/mac/tclMacInit.c +++ b/mac/tclMacInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacInit.c,v 1.9.2.1 2004/03/29 18:49:36 hobbs Exp $ + * RCS: @(#) $Id: tclMacInit.c,v 1.9.2.2 2005/10/23 22:01:31 msofer Exp $ */ #include @@ -712,7 +712,9 @@ Tcl_Init( if (pathPtr == NULL) { pathPtr = Tcl_NewObj(); } + Tcl_IncrRefCount(pathPtr); Tcl_SetVar2Ex(interp, "auto_path", NULL, pathPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(pathPtr); return Tcl_Eval(interp, initCmd); } diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index e63160d..3f4b454 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.9 2005/08/05 20:48:19 dkf Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.10 2005/10/23 22:01:31 msofer Exp $ */ #if defined(HAVE_COREFOUNDATION) @@ -963,7 +963,9 @@ Tcl_Init(interp) if (pathPtr == NULL) { pathPtr = Tcl_NewObj(); } + Tcl_IncrRefCount(pathPtr); Tcl_SetVar2Ex(interp, "tcl_libPath", NULL, pathPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(pathPtr); return Tcl_Eval(interp, initScript); } diff --git a/win/tclWinInit.c b/win/tclWinInit.c index d7ddbb5..7fb65c2 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.5 2004/03/29 18:49:36 hobbs Exp $ + * RCS: @(#) $Id: tclWinInit.c,v 1.40.2.6 2005/10/23 22:01:31 msofer Exp $ */ #include "tclWinInt.h" @@ -847,7 +847,9 @@ Tcl_Init(interp) if (pathPtr == NULL) { pathPtr = Tcl_NewObj(); } + Tcl_IncrRefCount(pathPtr); Tcl_SetVar2Ex(interp, "tcl_libPath", NULL, pathPtr, TCL_GLOBAL_ONLY); + Tcl_DecrRefCount(pathPtr); return Tcl_Eval(interp, initScript); } -- cgit v0.12 From 71b715c88b019bf819a112ac7e8b0aa68c6dc9e8 Mon Sep 17 00:00:00 2001 From: mdejong Date: Fri, 28 Oct 2005 03:26:32 +0000 Subject: * generic/tclExecute.c (ExprRoundFunc): Fix typo where number before rounding is compared with smallest integer instead of number after rounding. This fix does not change the results of any tests. * tests/expr.test: Add round() tests for cases near the min and max int values. * tests/util.test: Remove pointless warning code about testobj command. --- generic/tclExecute.c | 4 ++-- tests/expr.test | 33 ++++++++++++++++++++++++++++++++- tests/util.test | 9 +-------- 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 20f34e6..c238a98 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.16 2005/10/23 22:01:29 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.17 2005/10/28 03:26:32 mdejong Exp $ */ #include "tclInt.h" @@ -5501,7 +5501,7 @@ ExprRoundFunc(interp, eePtr, clientData) } if (i <= Tcl_WideAsDouble(LLONG_MIN)) { goto tooLarge; - } else if (d <= (double) LONG_MIN) { + } else if (i <= (double) LONG_MIN) { resPtr = Tcl_NewWideIntObj(Tcl_DoubleAsWide(i)); } else { resPtr = Tcl_NewLongObj((long) i); diff --git a/tests/expr.test b/tests/expr.test index 1928a84..6fa2129 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.8 2005/08/29 17:56:22 kennykb Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.9 2005/10/28 03:26:32 mdejong Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -899,6 +899,37 @@ test expr-46.12 {round() boundary case - -1/2 + 1 ulp} { expr {round($x)} } 0 +test expr-46.13 {round() boundary case - largest int} { + set imax [expr {((1<<31) + 1) * -1}] + expr {round($imax - 0.51)} +} 2147483646 + +test expr-46.14 {round() boundary case - largest int} { + set imax [expr {((1<<31) + 1) * -1}] + expr {round($imax - 0.50)} +} 2147483647 + +test expr-46.15 {round() boundary case - becomes wide int} { + set imax [expr {((1<<31) + 1) * -1}] + expr {round($imax + 0.50)} +} 2147483648 + +test expr-46.16 {round() boundary case - smallest int} { + set imin [expr {1<<31}] + expr {round($imin + 0.51)} +} -2147483647 + +test expr-46.17 {round() boundary case - smallest int} { + set imin [expr {1<<31}] + expr {round($imin + 0.50)} +} -2147483648 + +test expr-46.18 {round() boundary case - becomes wide int} { + set imin [expr {1<<31}] + expr {round($imin - 0.50)} +} -2147483649 + + # cleanup if {[info exists a]} { unset a diff --git a/tests/util.test b/tests/util.test index c16cd58..b71906d 100644 --- a/tests/util.test +++ b/tests/util.test @@ -7,20 +7,13 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: util.test,v 1.10.4.3 2004/11/03 22:12:17 dgp Exp $ +# RCS: @(#) $Id: util.test,v 1.10.4.4 2005/10/28 03:26:33 mdejong Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import -force ::tcltest::* } -if {[info commands testobj] == {}} { - puts "This application hasn't been compiled with the \"testobj\"" - puts "command, so I can't test the Tcl type and object support." - ::tcltest::cleanupTests - return -} - test util-1.1 {TclFindElement procedure - binary element in middle of list} { lindex {0 foo\x00help 1} 1 } "foo\x00help" -- cgit v0.12 From 905504b25f37317b91c478e7a9fc1d5166250a73 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sat, 29 Oct 2005 17:45:22 +0000 Subject: * generic/tclCmdMZ.c (TraceVarProc): [Bug 1337229], partial fix. Insure that a second call with TCL_TRACE_DESTROYED does not lead to a second call to Tcl_EventuallyFree(). It is still true that that second call should not happen, so the bug is not completely fixed. * tests/trace.test (test-18.3-4): added tests for bugs #1337229 and 1338280. --- ChangeLog | 10 ++++++++++ generic/tclCmdMZ.c | 10 ++++++---- tests/trace.test | 19 ++++++++++++++++++- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index cc4795c..5e32db8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2005-10-23 Miguel Sofer + * generic/tclCmdMZ.c (TraceVarProc): [Bug 1337229], partial + fix. Insure that a second call with TCL_TRACE_DESTROYED does not + lead to a second call to Tcl_EventuallyFree(). It is still true + that that second call should not happen, so the bug is not + completely fixed. + * tests/trace.test (test-18.3-4): added tests for bugs #1337229 + and 1338280. + +2005-10-23 Miguel Sofer + * generic/tclBasic.c: * generic/tclBinary.c: * generic/tclCmdAH.c: diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index d1cb609..b2f5919 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.21 2005/10/23 22:01:29 msofer Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.22 2005/10/29 17:45:23 msofer Exp $ */ #include "tclInt.h" @@ -4694,7 +4694,7 @@ TraceVarProc(clientData, interp, name1, name2, flags) Tcl_SavedResult state; TraceVarInfo *tvarPtr = (TraceVarInfo *) clientData; char *result; - int code; + int code, destroy = 0; Tcl_DString cmd; /* @@ -4755,7 +4755,9 @@ TraceVarProc(clientData, interp, name1, name2, flags) */ Tcl_SaveResult(interp, &state); - if (flags & TCL_TRACE_DESTROYED) { + if ((flags & TCL_TRACE_DESTROYED) + && !(tvarPtr->flags & TCL_TRACE_DESTROYED)) { + destroy = 1; tvarPtr->flags |= TCL_TRACE_DESTROYED; } @@ -4772,7 +4774,7 @@ TraceVarProc(clientData, interp, name1, name2, flags) Tcl_DStringFree(&cmd); } } - if (flags & TCL_TRACE_DESTROYED) { + if (destroy) { if (result != NULL) { register Tcl_Obj *errMsgObj = (Tcl_Obj *) result; diff --git a/tests/trace.test b/tests/trace.test index 3e1f9bb..7862e4b 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.8 2005/07/26 16:23:59 dgp Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.9 2005/10/29 17:45:23 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1158,6 +1158,23 @@ test trace-18.2 {namespace delete / trace vdelete combo} { namespace delete ::foo info exists ::foo::x } 0 +test trace-18.3 {namespace delete / trace vdelete combo, Bug \#1337229} { + namespace eval ::ns {} + trace add variable ::ns::var unset {unset ::ns::var ;#} + namespace delete ::ns +} {} +test trace-18.4 {namespace delete / trace vdelete combo, Bug \#1338280} { + namespace eval ::ref {} + set ::ref::var1 AAA + trace add variable ::ref::var1 {unset} [list doTrace] + set ::ref::var2 BBB + trace add variable ::ref::var2 {unset} [list doTrace] + proc doTrace {vtraced vidx op} { + lappend ::witness [info vars ::ref::*] + } + namespace delete ::ref + lappend ::witness [info vars ::ref::*] +} {{::ref::var1 ::ref::var2} ::ref::var2 {}} # Delete arrays when done, so they can be re-used as scalars # elsewhere. -- cgit v0.12 From 6c7b04e2be3623961517853cb96c6e74c5a19d6f Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sat, 29 Oct 2005 18:44:53 +0000 Subject: fix new test trace-18.4 [Bug 1338280] --- tests/trace.test | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/trace.test b/tests/trace.test index 7862e4b..c60bc9b 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.9 2005/10/29 17:45:23 msofer Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.10 2005/10/29 18:44:53 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1166,15 +1166,18 @@ test trace-18.3 {namespace delete / trace vdelete combo, Bug \#1337229} { test trace-18.4 {namespace delete / trace vdelete combo, Bug \#1338280} { namespace eval ::ref {} set ::ref::var1 AAA - trace add variable ::ref::var1 {unset} [list doTrace] + trace add variable ::ref::var1 unset doTrace set ::ref::var2 BBB - trace add variable ::ref::var2 {unset} [list doTrace] + trace add variable ::ref::var2 {unset} doTrace proc doTrace {vtraced vidx op} { - lappend ::witness [info vars ::ref::*] + global info + append info [catch {set ::$vtraced}][llength [info vars ::ref::*]] } + set info {} namespace delete ::ref - lappend ::witness [info vars ::ref::*] -} {{::ref::var1 ::ref::var2} ::ref::var2 {}} + rename doTrace {} + set info +} 1110 # Delete arrays when done, so they can be re-used as scalars # elsewhere. -- cgit v0.12 From dc124c044dd934b96c8b7b90c3d7fc451cc85c84 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sat, 29 Oct 2005 19:14:19 +0000 Subject: fix Changelog entry date --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5e32db8..1f7ead3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2005-10-23 Miguel Sofer +2005-10-29 Miguel Sofer * generic/tclCmdMZ.c (TraceVarProc): [Bug 1337229], partial fix. Insure that a second call with TCL_TRACE_DESTROYED does not -- cgit v0.12 From 6be14f61697812be0c6c88514b8ca2ae46b24c41 Mon Sep 17 00:00:00 2001 From: mdejong Date: Sat, 29 Oct 2005 19:58:03 +0000 Subject: * tests/expr.test: Fix problems in new round() tests that lead to correct result only on 32 bit long systems. [Bug 1341368] --- ChangeLog | 18 ++++++++++++++++++ tests/expr.test | 54 +++++++++++++++++++++++++++++------------------------- 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1f7ead3..f3d0f84 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-29 Mo DeJong + + * tests/expr.test: Fix problems in new round() + tests that lead to correct result only on 32 + bit long systems. [Bug 1341368] + 2005-10-29 Miguel Sofer * generic/tclCmdMZ.c (TraceVarProc): [Bug 1337229], partial @@ -8,6 +14,18 @@ * tests/trace.test (test-18.3-4): added tests for bugs #1337229 and 1338280. +2005-10-27 Mo DeJong + + * generic/tclExecute.c (ExprRoundFunc): + Fix typo where number before rounding is + compared with smallest integer instead of + number after rounding. This fix does not + change the results of any tests. + * tests/expr.test: Add round() tests + for cases near the min and max int values. + * tests/util.test: Remove pointless + warning code about testobj command. + 2005-10-23 Miguel Sofer * generic/tclBasic.c: diff --git a/tests/expr.test b/tests/expr.test index 6fa2129..ff4bc0f 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.9 2005/10/28 03:26:32 mdejong Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.10 2005/10/29 19:58:04 mdejong Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -899,35 +899,39 @@ test expr-46.12 {round() boundary case - -1/2 + 1 ulp} { expr {round($x)} } 0 -test expr-46.13 {round() boundary case - largest int} { - set imax [expr {((1<<31) + 1) * -1}] - expr {round($imax - 0.51)} -} 2147483646 +if {int(0x80000000) < 0} { + # 32 bit long + set min_long -2147483648 + set max_long 2147483647 +} else { + # 64 bit long + set min_long -9223372036854775808 + set max_long 9223372036854775807 +} -test expr-46.14 {round() boundary case - largest int} { - set imax [expr {((1<<31) + 1) * -1}] - expr {round($imax - 0.50)} -} 2147483647 +test expr-46.13 {round() boundary case - round down} { + expr {round($max_long - 0.51)} +} [expr {$max_long - 1}] -test expr-46.15 {round() boundary case - becomes wide int} { - set imax [expr {((1<<31) + 1) * -1}] - expr {round($imax + 0.50)} -} 2147483648 +test expr-46.14 {round() boundary case - round up} { + expr {round($max_long - 0.50)} +} $max_long + +test expr-46.15 {round() boundary case - round up to wide} { + expr {round($max_long + 0.50)} +} [expr {wide($max_long) + 1}] -test expr-46.16 {round() boundary case - smallest int} { - set imin [expr {1<<31}] - expr {round($imin + 0.51)} -} -2147483647 +test expr-46.16 {round() boundary case - round up} { + expr {round($min_long + 0.51)} +} [expr {$min_long + 1}] -test expr-46.17 {round() boundary case - smallest int} { - set imin [expr {1<<31}] - expr {round($imin + 0.50)} -} -2147483648 +test expr-46.17 {round() boundary case - round down} { + expr {round($min_long + 0.50)} +} $min_long -test expr-46.18 {round() boundary case - becomes wide int} { - set imin [expr {1<<31}] - expr {round($imin - 0.50)} -} -2147483649 +test expr-46.18 {round() boundary case - round down to wide} { + expr {round($min_long - 0.50)} +} [expr {wide($min_long) - 1}] # cleanup -- cgit v0.12 From 20a6d5a7afe92a3d2c19ab3a2588ecbf20442f9d Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 1 Nov 2005 16:18:15 +0000 Subject: * tests/expr-old.test (expr-32.52): Use int(.) to restrict result of left shift to the C long range. --- ChangeLog | 5 +++++ tests/expr-old.test | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f3d0f84..0b8c170 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-11-01 Don Porter + + * tests/expr-old.test (expr-32.52): Use int(.) to restrict + result of left shift to the C long range. + 2005-10-29 Mo DeJong * tests/expr.test: Fix problems in new round() diff --git a/tests/expr-old.test b/tests/expr-old.test index b984ba9..684ec01 100644 --- a/tests/expr-old.test +++ b/tests/expr-old.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr-old.test,v 1.16.2.3 2004/11/03 22:12:17 dgp Exp $ +# RCS: @(#) $Id: expr-old.test,v 1.16.2.4 2005/11/01 16:18:16 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -826,7 +826,7 @@ test expr-old-32.51 {math functions in expressions} { list [catch {expr {srand([lindex "6ty" 0])}} msg] $msg } {1 {argument to math function didn't have numeric value}} test expr-old-32.52 {math functions in expressions} { - expr {srand(1<<37) < 1} + expr {srand(int(1<<37)) < 1} } {1} test expr-old-32.53 {math functions in expressions} { expr {srand((1<<31) - 1) > 0} -- cgit v0.12 From 239e8679aa5bc2c3e8db30277a67a2df86fc893a Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 1 Nov 2005 20:19:26 +0000 Subject: * generic/tclCmdMZ.c (TclCheckExecutionTraces): Corrected mistaken assumption that all command traces are set at the script level. Report/fix from Jacques H. de Villiers. [Bug 1337941] --- ChangeLog | 4 ++++ generic/tclCmdMZ.c | 30 ++++++++++++++++-------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0b8c170..9232bb0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-11-01 Don Porter + * generic/tclCmdMZ.c (TclCheckExecutionTraces): Corrected mistaken + assumption that all command traces are set at the script level. + Report/fix from Jacques H. de Villiers. [Bug 1337941] + * tests/expr-old.test (expr-32.52): Use int(.) to restrict result of left shift to the C long range. diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index b2f5919..f4c7765 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.22 2005/10/29 17:45:23 msofer Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.23 2005/11/01 20:19:26 dgp Exp $ */ #include "tclInt.h" @@ -4223,19 +4223,21 @@ TclCheckExecutionTraces(interp, command, numChars, cmdPtr, code, active.reverseScan = 0; active.nextTracePtr = tracePtr->nextPtr; } - tcmdPtr = (TraceCommandInfo*)tracePtr->clientData; - if (tcmdPtr->flags != 0) { - tcmdPtr->curFlags = traceFlags | TCL_TRACE_EXEC_DIRECT; - tcmdPtr->curCode = code; - tcmdPtr->refCount++; - traceCode = TraceExecutionProc((ClientData)tcmdPtr, interp, - curLevel, command, (Tcl_Command)cmdPtr, objc, objv); - tcmdPtr->refCount--; - if (tcmdPtr->refCount < 0) { - Tcl_Panic("TclCheckExecutionTraces: negative TraceCommandInfo refCount"); - } - if (tcmdPtr->refCount == 0) { - ckfree((char*)tcmdPtr); + if (tracePtr->traceProc == TraceCommandProc) { + tcmdPtr = (TraceCommandInfo*)tracePtr->clientData; + if (tcmdPtr->flags != 0) { + tcmdPtr->curFlags = traceFlags | TCL_TRACE_EXEC_DIRECT; + tcmdPtr->curCode = code; + tcmdPtr->refCount++; + traceCode = TraceExecutionProc((ClientData)tcmdPtr, interp, + curLevel, command, (Tcl_Command)cmdPtr, objc, objv); + tcmdPtr->refCount--; + if (tcmdPtr->refCount < 0) { + Tcl_Panic("TclCheckExecutionTraces: negative TraceCommandInfo refCount"); + } + if (tcmdPtr->refCount == 0) { + ckfree((char*)tcmdPtr); + } } } if (active.nextTracePtr) { -- cgit v0.12 From 70b0f37994c80b2ecf30178e140a144d45afcb8b Mon Sep 17 00:00:00 2001 From: patthoyts Date: Thu, 3 Nov 2005 11:53:59 +0000 Subject: * win/tclWin32Dll.c: Backported Anton Kovalenko's patch #1256872 * win/tclWinConsole.c: to give unicode console support on * win/tclWinInt.h: suitable systems (eg: NT/XP) --- ChangeLog | 6 ++++ win/tclWin32Dll.c | 6 +++- win/tclWinConsole.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++------ win/tclWinInt.h | 16 +++++++++- 4 files changed, 102 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9232bb0..9573811 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-11-03 Pat Thoyts + + * win/tclWin32Dll.c: Backported Anton Kovalenko's patch #1256872 + * win/tclWinConsole.c: to give unicode console support on + * win/tclWinInt.h: suitable systems (eg: NT/XP) + 2005-11-01 Don Porter * generic/tclCmdMZ.c (TclCheckExecutionTraces): Corrected mistaken diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index bd2ebd0..1e4a0b3 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.7 2005/06/06 21:04:47 kennykb Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.8 2005/11/03 11:53:59 patthoyts Exp $ */ #include "tclWinInt.h" @@ -118,6 +118,8 @@ static TclWinProcs asciiProcs = { (int (__cdecl*)(CONST TCHAR *, struct _utimbuf *)) _utime, NULL, NULL, + (BOOL (WINAPI *)(HANDLE, LPVOID, DWORD, LPDWORD, LPVOID)) ReadConsoleA, + (BOOL (WINAPI *)(HANDLE, const VOID*, DWORD, LPDWORD, LPVOID)) WriteConsoleA }; static TclWinProcs unicodeProcs = { @@ -167,6 +169,8 @@ static TclWinProcs unicodeProcs = { (int (__cdecl*)(CONST TCHAR *, struct _utimbuf *)) _wutime, NULL, NULL, + (BOOL (WINAPI *)(HANDLE, LPVOID, DWORD, LPDWORD, LPVOID)) ReadConsoleW, + (BOOL (WINAPI *)(HANDLE, const VOID*, DWORD, LPDWORD, LPVOID)) WriteConsoleW }; TclWinProcs *tclWinProcs; diff --git a/win/tclWinConsole.c b/win/tclWinConsole.c index 2370a22..fa38a6c 100644 --- a/win/tclWinConsole.c +++ b/win/tclWinConsole.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinConsole.c,v 1.11.2.1 2005/01/27 22:53:37 andreas_kupries Exp $ + * RCS: @(#) $Id: tclWinConsole.c,v 1.11.2.2 2005/11/03 11:53:59 patthoyts Exp $ */ #include "tclWinInt.h" @@ -190,6 +190,70 @@ static Tcl_ChannelType consoleChannelType = { /* *---------------------------------------------------------------------- * + * readConsoleBytes -- + * + * Wrapper for ReadConsole{A,W}, that takes and returns number of + * bytes instead of number of TCHARS + * + * Results: + * FALSE if there was a problem else TRUE + * + * Side effects: + * Reads characters from the console. + * + *---------------------------------------------------------------------- + */ + +static BOOL +readConsoleBytes(HANDLE hConsole, LPVOID lpBuffer, + DWORD nbytes, LPDWORD nbytesread) +{ + DWORD ntchars; + BOOL result; + int tcharsize; + tcharsize = tclWinProcs->useWide? 2 : 1; + result = tclWinProcs->readConsoleProc( + hConsole, lpBuffer, nbytes / tcharsize, &ntchars, NULL); + if (nbytesread) + *nbytesread = (ntchars*tcharsize); + return result; +} + +/* + *---------------------------------------------------------------------- + * + * writeConsoleBytes -- + * + * Wrapper for WriteConsole{A,W}, that takes and returns number of + * bytes instead of number of TCHARS + * + * Results: + * FALSE if there was a problem else TRUE + * + * Side effects: + * Writes characters from the console. + * + *---------------------------------------------------------------------- + */ + +static BOOL +writeConsoleBytes(HANDLE hConsole, const VOID *lpBuffer, + DWORD nbytes, LPDWORD nbyteswritten) +{ + DWORD ntchars; + BOOL result; + int tcharsize; + tcharsize = tclWinProcs->useWide? 2 : 1; + result = tclWinProcs->writeConsoleProc( + hConsole, lpBuffer, nbytes / tcharsize, &ntchars, NULL); + if (nbyteswritten) + *nbyteswritten = (ntchars*tcharsize); + return result; +} + +/* + *---------------------------------------------------------------------- + * * ConsoleInit -- * * This function initializes the static variables for this file. @@ -705,8 +769,8 @@ ConsoleInputProc( * at least one byte is available or an EOF occurs. */ - if (ReadConsole(infoPtr->handle, (LPVOID) buf, (DWORD) bufSize, &count, - (LPOVERLAPPED) NULL) == TRUE) { + if (readConsoleBytes(infoPtr->handle, (LPVOID) buf, + (DWORD) bufSize, &count) == TRUE) { buf[count] = '\0'; return count; } @@ -792,8 +856,8 @@ ConsoleOutputProc( * This avoids an unnecessary copy. */ - if (WriteFile(infoPtr->handle, (LPVOID) buf, (DWORD) toWrite, - &bytesWritten, (LPOVERLAPPED) NULL) == FALSE) { + if (writeConsoleBytes(infoPtr->handle, (LPVOID) buf, (DWORD) toWrite, + &bytesWritten) == FALSE) { TclWinConvertError(GetLastError()); goto error; } @@ -1144,8 +1208,8 @@ ConsoleReaderThread(LPVOID arg) * Look for data on the console, but first ignore any events * that are not KEY_EVENTs */ - if (ReadConsoleA(handle, infoPtr->buffer, CONSOLE_BUFFER_SIZE, - (LPDWORD) &infoPtr->bytesRead, NULL) != FALSE) { + if (readConsoleBytes(handle, infoPtr->buffer, CONSOLE_BUFFER_SIZE, + (LPDWORD) &infoPtr->bytesRead) != FALSE) { /* * Data was stored in the buffer. */ @@ -1240,7 +1304,7 @@ ConsoleWriterThread(LPVOID arg) */ while (toWrite > 0) { - if (WriteConsoleA(handle, buf, toWrite, &count, NULL) == FALSE) { + if (writeConsoleBytes(handle, buf, toWrite, &count) == FALSE) { infoPtr->writeError = GetLastError(); break; } else { @@ -1367,7 +1431,10 @@ TclWinOpenConsoleChannel(handle, channelName, permissions) Tcl_SetChannelOption(NULL, infoPtr->channel, "-translation", "auto"); Tcl_SetChannelOption(NULL, infoPtr->channel, "-eofchar", "\032 {}"); - Tcl_SetChannelOption(NULL, infoPtr->channel, "-encoding", encoding); + if (tclWinProcs->useWide) + Tcl_SetChannelOption(NULL, infoPtr->channel, "-encoding", "unicode"); + else + Tcl_SetChannelOption(NULL, infoPtr->channel, "-encoding", encoding); return infoPtr->channel; } diff --git a/win/tclWinInt.h b/win/tclWinInt.h index 7ff2775..5cefc9d 100644 --- a/win/tclWinInt.h +++ b/win/tclWinInt.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.3 2004/05/03 18:01:37 kennykb Exp $ + * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.4 2005/11/03 11:53:59 patthoyts Exp $ */ #ifndef _TCLWININT @@ -111,6 +111,20 @@ typedef struct TclWinProcs { LPVOID, UINT, LPVOID, DWORD); BOOL (WINAPI *getVolumeNameForVMPProc)(CONST TCHAR*, TCHAR*, DWORD); + + /* + * Unicode console support. WriteConsole and ReadConsole + */ + BOOL (WINAPI *readConsoleProc)(HANDLE hConsoleInput, + LPVOID lpBuffer, + DWORD nNumberOfCharsToRead, + LPDWORD lpNumberOfCharsRead, + LPVOID lpReserved); + BOOL (WINAPI *writeConsoleProc)(HANDLE hConsoleOutput, + const VOID* lpBuffer, + DWORD nNumberOfCharsToWrite, + LPDWORD lpNumberOfCharsWritten, + LPVOID lpReserved); } TclWinProcs; EXTERN TclWinProcs *tclWinProcs; -- cgit v0.12 From b6a925833d204aad9696d5bdeb784724a67ea504 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 3 Nov 2005 16:16:28 +0000 Subject: * generic/tclUnixInit.c (TclpSetInitialEncodings): Modified so that multiple calls can continue to atttempt to properly set the system encoding. Needed for Tclkit to properly support non-default encodings. Thanks to Yaroslav Schekin. [Bug 1201171]. --- ChangeLog | 7 +++++++ unix/tclUnixInit.c | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9573811..ad282ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-11-03 Don Porter + + * generic/tclUnixInit.c (TclpSetInitialEncodings): Modified so + that multiple calls can continue to atttempt to properly set the + system encoding. Needed for Tclkit to properly support non-default + encodings. Thanks to Yaroslav Schekin. [Bug 1201171]. + 2005-11-03 Pat Thoyts * win/tclWin32Dll.c: Backported Anton Kovalenko's patch #1256872 diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 3f4b454..13a8cee 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.10 2005/10/23 22:01:31 msofer Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.11 2005/11/03 16:16:29 dgp Exp $ */ #if defined(HAVE_COREFOUNDATION) @@ -493,7 +493,6 @@ CONST char *path; /* Path to the executable in native void TclpSetInitialEncodings() { - if (libraryPathEncodingFixed == 0) { CONST char *encoding = NULL; int i, setSysEncCode = TCL_ERROR; Tcl_Obj *pathPtr; @@ -657,6 +656,8 @@ TclpSetInitialEncodings() setlocale(LC_NUMERIC, "C"); + if ((libraryPathEncodingFixed == 0) && strcmp("identity", + Tcl_GetEncodingName(Tcl_GetEncoding(NULL, NULL))) ) { /* * Until the system encoding was actually set, the library path was * actually in the native multi-byte encoding, and not really UTF-8 -- cgit v0.12 From c2f30c4326efeeaff9b28a2015ab079750bfd038 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Fri, 4 Nov 2005 01:15:19 +0000 Subject: * generic/tclInt.h: * generic/tclNamesp.c: * generic/tclVar.c: fix for [Bugs 1338280/1337229]. Thanks Don. * tests/trace.test: fix duplicate test numbers --- ChangeLog | 8 ++ generic/tclInt.h | 3 +- generic/tclNamesp.c | 8 +- generic/tclVar.c | 219 +++++++++++++++++++++++++++++++++++++++++----------- tests/trace.test | 6 +- 5 files changed, 189 insertions(+), 55 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad282ba..d657763 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-11-04 Miguel Sofer + + * generic/tclInt.h: + * generic/tclNamesp.c: + * generic/tclVar.c: fix for [Bugs 1338280/1337229]. Thanks Don. + + * tests/trace.test: fix duplicate test numbers + 2005-11-03 Don Porter * generic/tclUnixInit.c (TclpSetInitialEncodings): Modified so diff --git a/generic/tclInt.h b/generic/tclInt.h index d2da3b7..60fe1d8 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.18 2005/10/10 21:33:09 hobbs Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.19 2005/11/04 01:15:20 msofer Exp $ */ #ifndef _TCLINT @@ -1652,6 +1652,7 @@ EXTERN int TclArraySet _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *arrayNameObj, Tcl_Obj *arrayElemObj)); EXTERN int TclCheckBadOctal _ANSI_ARGS_((Tcl_Interp *interp, CONST char *value)); +EXTERN void TclDeleteNamespaceVars _ANSI_ARGS_((Namespace *nsPtr)); EXTERN void TclExpandTokenArray _ANSI_ARGS_(( Tcl_Parse *parsePtr)); EXTERN int TclFileAttrsCmd _ANSI_ARGS_((Tcl_Interp *interp, diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 1f72076..029051c 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.8 2005/07/26 16:20:44 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.9 2005/11/04 01:15:20 msofer Exp $ */ #include "tclInt.h" @@ -629,7 +629,7 @@ Tcl_DeleteNamespace(namespacePtr) * variable list one last time. */ - TclDeleteVars((Interp *) nsPtr->interp, &nsPtr->varTable); + TclDeleteNamespaceVars(nsPtr); Tcl_DeleteHashTable(&nsPtr->childTable); Tcl_DeleteHashTable(&nsPtr->cmdTable); @@ -713,7 +713,7 @@ TclTeardownNamespace(nsPtr) Tcl_IncrRefCount(errorCode); } - TclDeleteVars(iPtr, &nsPtr->varTable); + TclDeleteNamespaceVars(nsPtr); Tcl_InitHashTable(&nsPtr->varTable, TCL_STRING_KEYS); if (errorInfo) { @@ -732,7 +732,7 @@ TclTeardownNamespace(nsPtr) * frees it, so we reinitialize it afterwards. */ - TclDeleteVars(iPtr, &nsPtr->varTable); + TclDeleteNamespaceVars(nsPtr); Tcl_InitHashTable(&nsPtr->varTable, TCL_STRING_KEYS); } diff --git a/generic/tclVar.c b/generic/tclVar.c index 52fec78..5945bfb 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.9 2005/10/23 22:01:31 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.10 2005/11/04 01:15:20 msofer Exp $ */ #include "tclInt.h" @@ -66,7 +66,9 @@ static void VarErrMsg _ANSI_ARGS_((Tcl_Interp *interp, CONST char *operation, CONST char *reason)); static int SetArraySearchObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); - +static void UnsetVarStruct _ANSI_ARGS_((Var *varPtr, Var *arrayPtr, + Interp *iPtr, CONST char *part1, CONST char *part2, + int flags)); /* * Functions defined in this file that may be exported in the future @@ -1996,12 +1998,9 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) * TCL_GLOBAL_ONLY, TCL_NAMESPACE_ONLY, * TCL_LEAVE_ERR_MSG. */ { - Var dummyVar; - Var *varPtr, *dummyVarPtr; + Var *varPtr; Interp *iPtr = (Interp *) interp; Var *arrayPtr; - ActiveVarTrace *activePtr; - Tcl_Obj *objPtr; int result; char *part1; @@ -2014,11 +2013,106 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) result = (TclIsVarUndefined(varPtr)? TCL_ERROR : TCL_OK); + /* + * Keep the variable alive until we're done with it. We used to + * increase/decrease the refCount for each operation, making it + * hard to find [Bug 735335] - caused by unsetting the variable + * whose value was the variable's name. + */ + + varPtr->refCount++; + + UnsetVarStruct(varPtr, arrayPtr, iPtr, part1, part2, flags); + + /* + * It's an error to unset an undefined variable. + */ + + if (result != TCL_OK) { + if (flags & TCL_LEAVE_ERR_MSG) { + VarErrMsg(interp, part1, part2, "unset", + ((arrayPtr == NULL) ? noSuchVar : noSuchElement)); + } + } + + /* + * Try to avoid keeping the Var struct allocated due to a tclNsVarNameType + * keeping a reference. This removes some additional exteriorisations of + * [Bug 736729], but may be a good thing independently of the bug. + */ + + if (part1Ptr->typePtr == &tclNsVarNameType) { + part1Ptr->typePtr->freeIntRepProc(part1Ptr); + part1Ptr->typePtr = NULL; + } + + /* + * Finally, if the variable is truly not in use then free up its Var + * structure and remove it from its hash table, if any. The ref count of + * its value object, if any, was decremented above. + */ + + varPtr->refCount--; + CleanupVar(varPtr, arrayPtr); + return result; +} + +/* + *---------------------------------------------------------------------- + * + * UnsetVarStruct -- + * + * Unset and delete a variable. This does the internal work for + * TclObjUnsetVar2 and TclDeleteNamespaceVars, which call here for each + * variable to be unset and deleted. + * + * Results: + * None. + * + * Side effects: + * If the arguments indicate a local or global variable in iPtr, it is + * unset and deleted. + * + *---------------------------------------------------------------------- + */ + +static void +UnsetVarStruct(varPtr, arrayPtr, iPtr, part1, part2, flags) + Var *varPtr; + Var *arrayPtr; + Interp *iPtr; + CONST char *part1; + CONST char *part2; + int flags; +{ + Var dummyVar; + Var *dummyVarPtr; + ActiveVarTrace *activePtr; + if ((arrayPtr != NULL) && (arrayPtr->searchPtr != NULL)) { DeleteSearches(arrayPtr); } /* + * For global/upvar variables referenced in procedures, decrement + * the reference count on the variable referred to, and free + * the referenced variable if it's no longer needed. + */ + + if (TclIsVarLink(varPtr)) { + Var *linkPtr = varPtr->value.linkPtr; + linkPtr->refCount--; + if ((linkPtr->refCount == 0) && TclIsVarUndefined(linkPtr) + && (linkPtr->tracePtr == NULL) + && (linkPtr->flags & VAR_IN_HASHTABLE)) { + if (linkPtr->hPtr != NULL) { + Tcl_DeleteHashEntry(linkPtr->hPtr); + } + ckfree((char *) linkPtr); + } + } + + /* * The code below is tricky, because of the possibility that * a trace procedure might try to access a variable being * deleted. To handle this situation gracefully, do things @@ -2039,15 +2133,6 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) varPtr->searchPtr = NULL; /* - * Keep the variable alive until we're done with it. We used to - * increase/decrease the refCount for each operation, making it - * hard to find [Bug 735335] - caused by unsetting the variable - * whose value was the variable's name. - */ - - varPtr->refCount++; - - /* * Call trace procedures for the variable being deleted. Then delete * its traces. Be sure to abort any other traces for the variable * that are still pending. Special tricks: @@ -2104,7 +2189,7 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) } if (TclIsVarScalar(dummyVarPtr) && (dummyVarPtr->value.objPtr != NULL)) { - objPtr = dummyVarPtr->value.objPtr; + Tcl_Obj *objPtr = dummyVarPtr->value.objPtr; TclDecrRefCount(objPtr); dummyVarPtr->value.objPtr = NULL; } @@ -2118,37 +2203,6 @@ TclObjUnsetVar2(interp, part1Ptr, part2, flags) varPtr->refCount--; } - /* - * It's an error to unset an undefined variable. - */ - - if (result != TCL_OK) { - if (flags & TCL_LEAVE_ERR_MSG) { - VarErrMsg(interp, part1, part2, "unset", - ((arrayPtr == NULL) ? noSuchVar : noSuchElement)); - } - } - - /* - * Try to avoid keeping the Var struct allocated due to a tclNsVarNameType - * keeping a reference. This removes some additional exteriorisations of - * [Bug 736729], but may be a good thing independently of the bug. - */ - - if (part1Ptr->typePtr == &tclNsVarNameType) { - part1Ptr->typePtr->freeIntRepProc(part1Ptr); - part1Ptr->typePtr = NULL; - } - - /* - * Finally, if the variable is truly not in use then free up its Var - * structure and remove it from its hash table, if any. The ref count of - * its value object, if any, was decremented above. - */ - - varPtr->refCount--; - CleanupVar(varPtr, arrayPtr); - return result; } /* @@ -4513,6 +4567,77 @@ DeleteSearches(arrayVarPtr) /* *---------------------------------------------------------------------- * + * TclDeleteNamespaceVars -- + * + * This procedure is called to recycle all the storage space + * associated with a namespace's table of variables. + * + * Results: + * None. + * + * Side effects: + * Variables are deleted and trace procedures are invoked, if + * any are declared. + * + *---------------------------------------------------------------------- + */ + +void +TclDeleteNamespaceVars(nsPtr) + Namespace *nsPtr; +{ + Tcl_HashTable *tablePtr = &nsPtr->varTable; + Tcl_Interp *interp = nsPtr->interp; + Interp *iPtr = (Interp *)interp; + Tcl_HashSearch search; + Tcl_HashEntry *hPtr; + int flags = 0; + Namespace *currNsPtr = (Namespace *) Tcl_GetCurrentNamespace(interp); + + /* + * Determine what flags to pass to the trace callback procedures. + */ + + if (nsPtr == iPtr->globalNsPtr) { + flags = TCL_GLOBAL_ONLY; + } else if (nsPtr == currNsPtr) { + flags = TCL_NAMESPACE_ONLY; + } + if (Tcl_InterpDeleted(interp)) { + flags |= TCL_INTERP_DESTROYED; + } + + for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr != NULL; + hPtr = Tcl_FirstHashEntry(tablePtr, &search)) { + register Var *varPtr = (Var *) Tcl_GetHashValue(hPtr); + Tcl_Obj *objPtr = Tcl_NewObj(); + varPtr->refCount++; /* Make sure we get to remove from hash */ + Tcl_IncrRefCount(objPtr); + Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, objPtr); + UnsetVarStruct(varPtr, NULL, iPtr, Tcl_GetString(objPtr), NULL, flags); + Tcl_DecrRefCount(objPtr); /* free no longer needed obj */ + varPtr->refCount--; + + /* Remove the variable from the table and force it undefined + * in case an unset trace brought it back from the dead */ + Tcl_DeleteHashEntry(hPtr); + varPtr->hPtr = NULL; + TclSetVarUndefined(varPtr); + TclSetVarScalar(varPtr); + while (varPtr->tracePtr != NULL) { + VarTrace *tracePtr = varPtr->tracePtr; + varPtr->tracePtr = tracePtr->nextPtr; + Tcl_EventuallyFree((ClientData) tracePtr, TCL_DYNAMIC); + } + CleanupVar(varPtr, NULL); + } + Tcl_DeleteHashTable(tablePtr); +} + + +/* + *---------------------------------------------------------------------- + * * TclDeleteVars -- * * This procedure is called to recycle all the storage space diff --git a/tests/trace.test b/tests/trace.test index c60bc9b..9569ae0 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.10 2005/10/29 18:44:53 msofer Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.11 2005/11/04 01:15:21 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1185,12 +1185,12 @@ test trace-18.4 {namespace delete / trace vdelete combo, Bug \#1338280} { catch {unset x} catch {unset y} -test trace-18.3 {trace add command (command existence)} { +test trace-19.0.1 {trace add command (command existence)} { # Just in case! catch {rename nosuchname ""} list [catch {trace add command nosuchname rename traceCommand} msg] $msg } {1 {unknown command "nosuchname"}} -test trace-18.4 {trace add command (command existence in ns)} { +test trace-19.0.2 {trace add command (command existence in ns)} { list [catch {trace add command nosuchns::nosuchname rename traceCommand} msg] $msg } {1 {unknown command "nosuchns::nosuchname"}} -- cgit v0.12 From 05f6317032522fa4b68966fe3c1ef854d87fbf6e Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 4 Nov 2005 18:18:03 +0000 Subject: Bug 1317477 --- ChangeLog | 7 +++++++ compat/strftime.c | 32 ++++++++++++++++++++------------ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index d657763..629f7e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-11-04 Kevin Kenny + + * compat/strftime.c: Fixed a problem where the name of the + time zone was double-converted from system encoding to + UTF-8. Thanks to the anonymous submitter of [Bug 1317477] + for the report and the patch. + 2005-11-04 Miguel Sofer * generic/tclInt.h: diff --git a/compat/strftime.c b/compat/strftime.c index 609c193..7d2c416 100644 --- a/compat/strftime.c +++ b/compat/strftime.c @@ -10,7 +10,7 @@ * * Changes 2002 Copyright (c) 2002 ActiveState Corporation. * - * RCS: @(#) $Id: strftime.c,v 1.10.2.2 2004/09/08 18:32:20 kennykb Exp $ + * RCS: @(#) $Id: strftime.c,v 1.10.2.3 2005/11/04 18:18:04 kennykb Exp $ */ /* @@ -47,7 +47,7 @@ */ #if defined(LIBC_SCCS) -static char *rcsid = "$Id: strftime.c,v 1.10.2.2 2004/09/08 18:32:20 kennykb Exp $"; +static char *rcsid = "$Id: strftime.c,v 1.10.2.3 2005/11/04 18:18:04 kennykb Exp $"; #endif /* LIBC_SCCS */ #include @@ -339,9 +339,11 @@ _fmt(format, t) * we must make use of the special localized calls. */ case 'c': - if (!GetDateFormat(LOCALE_USER_DEFAULT, DATE_LONGDATE, - &syst, NULL, buf, BUF_SIZ) || !_add(buf) - || !_add(" ")) { + if (!GetDateFormat(LOCALE_USER_DEFAULT, + DATE_LONGDATE | LOCALE_USE_CP_ACP, + &syst, NULL, buf, BUF_SIZ) + || !_add(buf) + || !_add(" ")) { return(0); } /* @@ -349,14 +351,18 @@ _fmt(format, t) * so continue to %X case here. */ case 'X': - if (!GetTimeFormat(LOCALE_USER_DEFAULT, 0, - &syst, NULL, buf, BUF_SIZ) || !_add(buf)) { + if (!GetTimeFormat(LOCALE_USER_DEFAULT, + LOCALE_USE_CP_ACP, + &syst, NULL, buf, BUF_SIZ) + || !_add(buf)) { return(0); } continue; case 'x': - if (!GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, - &syst, NULL, buf, BUF_SIZ) || !_add(buf)) { + if (!GetDateFormat(LOCALE_USER_DEFAULT, + DATE_SHORTDATE | LOCALE_USE_CP_ACP, + &syst, NULL, buf, BUF_SIZ) + || !_add(buf)) { return(0); } continue; @@ -385,9 +391,11 @@ _fmt(format, t) continue; case 'Z': { char *name = (isGMT ? "GMT" : TclpGetTZName(t->tm_isdst)); - if (name && !_add(name)) { - return 0; - } + int wrote; + Tcl_UtfToExternal(NULL, NULL, name, -1, 0, NULL, + pt, gsize, NULL, &wrote, NULL); + pt += wrote; + gsize -= wrote; continue; } case '%': -- cgit v0.12 From 841c2af7dcfcd20b68bd3f05f5ecce6498b35a18 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Fri, 4 Nov 2005 18:33:34 +0000 Subject: * win/tclWinPipe.c: Applied patch #1267871 by Matt Newman which * win/tclWinPort.h: provides extended error code support. * tests/exec.test: Wrote some tests for this feature. --- ChangeLog | 6 ++++++ tests/exec.test | 47 ++++++++++++++++++++++++++++++++++++++++++++++- win/tclWinPipe.c | 20 ++++++++------------ win/tclWinPort.h | 10 +++++----- 4 files changed, 65 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 629f7e0..640d9fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-11-04 Pat Thoyts + + * win/tclWinPipe.c: Applied patch #1267871 by Matt Newman which + * win/tclWinPort.h: provides extended error code support. + * tests/exec.test: Wrote some tests for this feature. + 2005-11-04 Kevin Kenny * compat/strftime.c: Fixed a problem where the name of the diff --git a/tests/exec.test b/tests/exec.test index bb6ecd4..0dccf37 100644 --- a/tests/exec.test +++ b/tests/exec.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: exec.test,v 1.16.2.5 2005/07/28 15:27:59 dkf Exp $ +# RCS: @(#) $Id: exec.test,v 1.16.2.6 2005/11/04 18:33:35 patthoyts Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -485,6 +485,51 @@ test exec-13.3 {setting errorCode variable} {exec} { [string tolower [lrange $errorCode 2 end]] } {1 {couldn't execute "_weird_cmd_": no such file or directory} POSIX {{no such file or directory}}} +test exec-13.4 {extended exit result codes} { + -constraints {win} + -setup { + set tmp [makeFile {exit 0x00000101} tmpfile.exec-13.4] + } + -body { + list [catch {exec [interpreter] $tmp} err]\ + [lreplace $::errorCode 1 1 {}] + } + -cleanup { + removeFile $tmp + } + -result {1 {CHILDSTATUS {} 257}} +} + +test exec-13.5 {extended exit result codes: max value} { + -constraints {win} + -setup { + set tmp [makeFile {exit 0x3fffffff} tmpfile.exec-13.5] + } + -body { + list [catch {exec [interpreter] $tmp} err]\ + [lreplace $::errorCode 1 1 {}] + } + -cleanup { + removeFile $tmp + } + -result {1 {CHILDSTATUS {} 1073741823}} +} + +test exec-13.6 {extended exit result codes: signalled} { + -constraints {win} + -setup { + set tmp [makeFile {exit 0xffffffff} tmpfile.exec-13.6] + } + -body { + list [catch {exec [interpreter] $tmp} err]\ + [lreplace $::errorCode 1 1 {}] + } + -cleanup { + removeFile $tmp + } + -result {1 {CHILDKILLED {} SIGABRT SIGABRT}} +} + # Switches before the first argument test exec-14.1 {-keepnewline switch} {exec} { diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index dc9a917..8dc41d0 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.14 2005/07/28 15:27:59 dkf Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.15 2005/11/04 18:33:35 patthoyts Exp $ */ #include "tclWinInt.h" @@ -2576,12 +2576,12 @@ Tcl_WaitPid( case EXCEPTION_FLT_UNDERFLOW: case EXCEPTION_INT_DIVIDE_BY_ZERO: case EXCEPTION_INT_OVERFLOW: - *statPtr = SIGFPE; + *statPtr = 0xC0000000 | SIGFPE; break; case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: - *statPtr = SIGILL; + *statPtr = 0xC0000000 | SIGILL; break; case EXCEPTION_ACCESS_VIOLATION: @@ -2592,28 +2592,24 @@ Tcl_WaitPid( case EXCEPTION_INVALID_DISPOSITION: case EXCEPTION_GUARD_PAGE: case EXCEPTION_INVALID_HANDLE: - *statPtr = SIGSEGV; + *statPtr = 0xC0000000 | SIGSEGV; break; case CONTROL_C_EXIT: - *statPtr = SIGINT; + *statPtr = 0xC0000000 | SIGINT; break; default: - *statPtr = SIGABRT; + *statPtr = 0xC0000000 | SIGABRT; break; } } else { - /* - * Non exception, normal, exit code. Note that the exit code - * is truncated to a byte range. - */ - *statPtr = ((exitCode << 8) & 0xff00); + *statPtr = exitCode; } result = pid; } else { errno = ECHILD; - *statPtr = ECHILD; + *statPtr = 0xC0000000 | ECHILD; result = (Tcl_Pid) -1; } diff --git a/win/tclWinPort.h b/win/tclWinPort.h index 47545ba..4062d6c 100644 --- a/win/tclWinPort.h +++ b/win/tclWinPort.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPort.h,v 1.36.2.1 2005/10/05 08:02:20 hobbs Exp $ + * RCS: @(#) $Id: tclWinPort.h,v 1.36.2.2 2005/11/04 18:33:35 patthoyts Exp $ */ #ifndef _TCLWINPORT @@ -230,15 +230,15 @@ #endif /* TCL_UNION_WAIT */ #ifndef WIFEXITED -# define WIFEXITED(stat) (((*((int *) &(stat))) & 0xff) == 0) +# define WIFEXITED(stat) (((*((int *) &(stat))) & 0xC0000000) == 0) #endif #ifndef WEXITSTATUS -# define WEXITSTATUS(stat) (((*((int *) &(stat))) >> 8) & 0xff) +# define WEXITSTATUS(stat) (*((int *) &(stat))) #endif #ifndef WIFSIGNALED -# define WIFSIGNALED(stat) (((*((int *) &(stat)))) && ((*((int *) &(stat))) == ((*((int *) &(stat))) & 0x00ff))) +# define WIFSIGNALED(stat) ((*((int *) &(stat))) & 0xC0000000) #endif #ifndef WTERMSIG @@ -246,7 +246,7 @@ #endif #ifndef WIFSTOPPED -# define WIFSTOPPED(stat) (((*((int *) &(stat))) & 0xff) == 0177) +# define WIFSTOPPED(stat) 0 #endif #ifndef WSTOPSIG -- cgit v0.12 From 4c89643d5733ab937ba7d73e67c9e1d8a5d9a13e Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 4 Nov 2005 20:15:08 +0000 Subject: Bug 1298737 --- ChangeLog | 4 ++++ generic/tclDate.c | 5 ++++- generic/tclGetDate.y | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 640d9fb..a370199 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,10 @@ 2005-11-04 Kevin Kenny + * generic/tclGetDate.y: Added abbreviations for the Korean + timezone. + * generic/tclDate.c: Regenerated. + * compat/strftime.c: Fixed a problem where the name of the time zone was double-converted from system encoding to UTF-8. Thanks to the anonymous submitter of [Bug 1317477] diff --git a/generic/tclDate.c b/generic/tclDate.c index 870988f..e6a8a90 100644 --- a/generic/tclDate.c +++ b/generic/tclDate.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDate.c,v 1.20.4.1 2005/03/15 16:29:53 kennykb Exp $ + * RCS: @(#) $Id: tclDate.c,v 1.20.4.2 2005/11/04 20:15:09 kennykb Exp $ */ #include "tclInt.h" @@ -334,6 +334,9 @@ static TABLE TimezoneTable[] = { { "jt", tZONE, -HOUR(15/2) }, /* Java (3pm in Cronusland!) */ { "cct", tZONE, -HOUR( 8) }, /* China Coast, USSR Zone 7 */ { "jst", tZONE, -HOUR( 9) }, /* Japan Standard, USSR Zone 8 */ + { "jdt", tDAYZONE, -HOUR( 9) }, /* Japan Daylight */ + { "kst", tZONE, -HOUR( 9) }, /* Korea Standard */ + { "kdt", tDAYZONE, -HOUR( 9) }, /* Korea Daylight */ { "cast", tZONE, -HOUR(19/2) }, /* Central Australian Standard */ { "cadt", tDAYZONE, -HOUR(19/2) }, /* Central Australian Daylight */ { "east", tZONE, -HOUR(10) }, /* Eastern Australian Standard */ diff --git a/generic/tclGetDate.y b/generic/tclGetDate.y index 62a70c8..fdcfe88 100644 --- a/generic/tclGetDate.y +++ b/generic/tclGetDate.y @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclGetDate.y,v 1.18.4.1 2005/03/15 16:29:53 kennykb Exp $ + * RCS: @(#) $Id: tclGetDate.y,v 1.18.4.2 2005/11/04 20:15:09 kennykb Exp $ */ %{ @@ -553,6 +553,9 @@ static TABLE TimezoneTable[] = { { "jt", tZONE, -HOUR(15/2) }, /* Java (3pm in Cronusland!) */ { "cct", tZONE, -HOUR( 8) }, /* China Coast, USSR Zone 7 */ { "jst", tZONE, -HOUR( 9) }, /* Japan Standard, USSR Zone 8 */ + { "jdt", tDAYZONE, -HOUR( 9) }, /* Japan Daylight */ + { "kst", tZONE, -HOUR( 9) }, /* Korea Standard */ + { "kdt", tDAYZONE, -HOUR( 9) }, /* Korea Daylight */ { "cast", tZONE, -HOUR(19/2) }, /* Central Australian Standard */ { "cadt", tDAYZONE, -HOUR(19/2) }, /* Central Australian Daylight */ { "east", tZONE, -HOUR(10) }, /* Eastern Australian Standard */ -- cgit v0.12 From ee791e433719e8e012bc9eaee159cf37384203cb Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 4 Nov 2005 21:40:21 +0000 Subject: * unix/tcl.m4: Added code to enable [load] on LynxOS. Thanks to heidibr@users.sf.net for the patch. [Bug 1163896]. * unix/configure: autoconf-2.13. --- ChangeLog | 7 + unix/configure | 574 +++++++++++++++++++++++++++++---------------------------- unix/tcl.m4 | 12 ++ 3 files changed, 312 insertions(+), 281 deletions(-) diff --git a/ChangeLog b/ChangeLog index a370199..471ddde 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-11-04 Don Porter + + * unix/tcl.m4: Added code to enable [load] on LynxOS. Thanks to + heidibr@users.sf.net for the patch. [Bug 1163896]. + + * unix/configure: autoconf-2.13. + 2005-11-04 Pat Thoyts * win/tclWinPipe.c: Applied patch #1267871 by Matt Newman which diff --git a/unix/configure b/unix/configure index 6fb5d7a..a8d1ed4 100755 --- a/unix/configure +++ b/unix/configure @@ -2679,6 +2679,18 @@ fi CFLAGS="$CFLAGS -mieee" fi ;; + Lynx*) + SHLIB_CFLAGS="-fPIC" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + CFLAGS_OPTIMIZE=-02 + SHLIB_LD="${CC} -shared " + DL_OBJS="tclLoadDl.o" + DL_LIBS="-mshared -ldl" + LD_FLAGS="-Wl,--export-dynamic" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + ;; MP-RAS-02*) SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" @@ -2704,17 +2716,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2708: checking for dlfcn.h" >&5 +echo "configure:2720: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2741,9 +2753,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2745: checking for ELF" >&5 +echo "configure:2757: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2821: checking for ELF" >&5 +echo "configure:2833: checking for ELF" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2882: checking if ld accepts -single_module flag" >&5 +echo "configure:2894: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2886,14 +2898,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -2916,7 +2928,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 DL_LIBS="" LDFLAGS="$LDFLAGS -prebind -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:2920: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:2932: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2924,14 +2936,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -2954,7 +2966,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:2958: checking whether to use CoreFoundation" >&5 +echo "configure:2970: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -2966,7 +2978,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:2970: checking for CoreFoundation.framework" >&5 +echo "configure:2982: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2974,14 +2986,14 @@ else hold_libs=$LIBS LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:2985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3007,17 +3019,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3011: checking for $ac_hdr" >&5 +echo "configure:3023: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3021: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3033: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3046,12 +3058,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3050: checking for $ac_func" >&5 +echo "configure:3062: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3117,12 +3129,12 @@ EOF # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3121: checking for realpath" >&5 +echo "configure:3133: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -3456,17 +3468,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3460: checking for ld accepts -Bexport flag" >&5 +echo "configure:3472: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -3507,9 +3519,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3511: checking sys/exec.h" >&5 +echo "configure:3523: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3527,7 +3539,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3543: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3545,9 +3557,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3549: checking a.out.h" >&5 +echo "configure:3561: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3565,7 +3577,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3581: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3583,9 +3595,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3587: checking sys/exec_aout.h" >&5 +echo "configure:3599: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -3603,7 +3615,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -3754,7 +3766,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3758: checking for build with symbols" >&5 +echo "configure:3770: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -3815,21 +3827,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3819: checking for required early compiler flags" >&5 +echo "configure:3831: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3845: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -3837,7 +3849,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3845,7 +3857,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:3849: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -3871,14 +3883,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -3886,7 +3898,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3894,7 +3906,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:3898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3910: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -3920,14 +3932,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:3931: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3943: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -3935,7 +3947,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -3943,7 +3955,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:3947: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3959: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -3972,7 +3984,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3976: checking for 64-bit integer type" >&5 +echo "configure:3988: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3980,14 +3992,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4003: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4001,7 +4013,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4026: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4035,13 +4047,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4039: checking for struct dirent64" >&5 +echo "configure:4051: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4049,7 +4061,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4070,13 +4082,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4074: checking for struct stat64" >&5 +echo "configure:4086: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4084,7 +4096,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4088: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4107,12 +4119,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4111: checking for $ac_func" >&5 +echo "configure:4123: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4160,13 +4172,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4164: checking for off64_t" >&5 +echo "configure:4176: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4174,7 +4186,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4205,14 +4217,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4209: checking whether byte ordering is bigendian" >&5 +echo "configure:4221: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4223,11 +4235,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4227: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4238,7 +4250,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4242: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4258,7 +4270,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4304,12 +4316,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4308: checking for $ac_func" >&5 +echo "configure:4320: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4366,12 +4378,12 @@ done for ac_func in opendir strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4370: checking for $ac_func" >&5 +echo "configure:4382: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4424,12 +4436,12 @@ done for ac_func in strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4428: checking for $ac_func" >&5 +echo "configure:4440: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4479,12 +4491,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4483: checking for strerror" >&5 +echo "configure:4495: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4531,12 +4543,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4535: checking for getwd" >&5 +echo "configure:4547: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4583,12 +4595,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4587: checking for wait3" >&5 +echo "configure:4599: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -4635,12 +4647,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4639: checking for uname" >&5 +echo "configure:4651: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -4687,12 +4699,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4691: checking for realpath" >&5 +echo "configure:4703: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4750,12 +4762,12 @@ fi echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4754: checking dirent.h" >&5 +echo "configure:4766: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4781,7 +4793,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:4785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -4804,17 +4816,17 @@ EOF echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4808: checking for errno.h" >&5 +echo "configure:4820: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4830: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4841,17 +4853,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4845: checking for float.h" >&5 +echo "configure:4857: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4855: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4878,17 +4890,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4882: checking for values.h" >&5 +echo "configure:4894: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4904: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4915,17 +4927,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4919: checking for limits.h" >&5 +echo "configure:4931: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4941: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4955,17 +4967,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4959: checking for stdlib.h" >&5 +echo "configure:4971: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4981: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4988,7 +5000,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -5002,7 +5014,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5016,7 +5028,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5037,17 +5049,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:5041: checking for string.h" >&5 +echo "configure:5053: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5051: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5063: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5070,7 +5082,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -5084,7 +5096,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -5110,17 +5122,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:5114: checking for sys/wait.h" >&5 +echo "configure:5126: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5124: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5147,17 +5159,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:5151: checking for dlfcn.h" >&5 +echo "configure:5163: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5161: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5173: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5189,17 +5201,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5193: checking for $ac_hdr" >&5 +echo "configure:5205: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5215: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5239,17 +5251,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5243: checking for $ac_hdr" >&5 +echo "configure:5255: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5276,7 +5288,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5280: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5292: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5285,7 +5297,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5300,7 +5312,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5317,7 +5329,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5331,7 +5343,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5349,7 +5361,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5364,7 +5376,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5382,7 +5394,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5399,7 +5411,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5417,7 +5429,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5433,7 +5445,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5451,7 +5463,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5468,7 +5480,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5511,19 +5523,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5515: checking for fd_set in sys/types" >&5 +echo "configure:5527: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5539: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5539,12 +5551,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tk_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5543: checking for fd_mask in sys/select" >&5 +echo "configure:5555: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5581,12 +5593,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5585: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5597: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5594,7 +5606,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5598: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5619,17 +5631,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5623: checking for $ac_hdr" >&5 +echo "configure:5635: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5633: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5656,12 +5668,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5660: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5672: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5670,7 +5682,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5691,12 +5703,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5695: checking for tm_zone in struct tm" >&5 +echo "configure:5707: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5704,7 +5716,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5724,12 +5736,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5728: checking for tzname" >&5 +echo "configure:5740: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5739,7 +5751,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5764,12 +5776,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5768: checking for $ac_func" >&5 +echo "configure:5780: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5818,19 +5830,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5822: checking tm_tzadj in struct tm" >&5 +echo "configure:5834: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5834: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5846: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5851,19 +5863,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5855: checking tm_gmtoff in struct tm" >&5 +echo "configure:5867: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5888,12 +5900,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5892: checking long timezone variable" >&5 +echo "configure:5904: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5902,7 +5914,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5925,12 +5937,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5929: checking time_t timezone variable" >&5 +echo "configure:5941: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5939,7 +5951,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5943: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5955: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5966,12 +5978,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5970: checking for st_blksize in struct stat" >&5 +echo "configure:5982: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5979,7 +5991,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6000,12 +6012,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6004: checking for fstatfs" >&5 +echo "configure:6016: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6057,7 +6069,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6061: checking for 8-bit clean memcmp" >&5 +echo "configure:6073: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6065,7 +6077,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6099,12 +6111,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6103: checking for memmove" >&5 +echo "configure:6115: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6160,12 +6172,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6164: checking proper strstr implementation" >&5 +echo "configure:6176: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6202,12 +6214,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6206: checking for strtoul" >&5 +echo "configure:6218: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6254,7 +6266,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6293,12 +6305,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6297: checking for strtod" >&5 +echo "configure:6309: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6345,7 +6357,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6387,12 +6399,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6391: checking for strtod" >&5 +echo "configure:6403: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6437,7 +6449,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6441: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6453: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6446,7 +6458,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6502,12 +6514,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6506: checking for ANSI C header files" >&5 +echo "configure:6518: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6515,7 +6527,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6531: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6532,7 +6544,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6550,7 +6562,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6571,7 +6583,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6582,7 +6594,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6606,12 +6618,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6610: checking for mode_t" >&5 +echo "configure:6622: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6639,12 +6651,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6643: checking for pid_t" >&5 +echo "configure:6655: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6672,12 +6684,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6676: checking for size_t" >&5 +echo "configure:6688: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6705,12 +6717,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6709: checking for uid_t in sys/types.h" >&5 +echo "configure:6721: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6740,12 +6752,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6744: checking for socklen_t" >&5 +echo "configure:6756: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6784,12 +6796,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6788: checking for opendir" >&5 +echo "configure:6800: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6845,12 +6857,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6849: checking union wait" >&5 +echo "configure:6861: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6862,7 +6874,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6889,12 +6901,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6893: checking for strncasecmp" >&5 +echo "configure:6905: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6939,7 +6951,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6943: checking for strncasecmp in -lsocket" >&5 +echo "configure:6955: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6947,7 +6959,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6982,7 +6994,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6986: checking for strncasecmp in -linet" >&5 +echo "configure:6998: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6990,7 +7002,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7039,12 +7051,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7043: checking for BSDgettimeofday" >&5 +echo "configure:7055: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7089,12 +7101,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7093: checking for gettimeofday" >&5 +echo "configure:7105: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7144,12 +7156,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7148: checking for gettimeofday declaration" >&5 +echo "configure:7160: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7180,14 +7192,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7184: checking whether char is unsigned" >&5 +echo "configure:7196: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7243,12 +7255,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7247: checking signed char declarations" >&5 +echo "configure:7259: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7274: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7283,7 +7295,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7287: checking for a putenv() that copies the buffer" >&5 +echo "configure:7299: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7291,7 +7303,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7313,7 +7325,7 @@ else } EOF -if { (eval echo configure:7317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7355,17 +7367,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7359: checking for langinfo.h" >&5 +echo "configure:7371: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7390,17 +7402,17 @@ fi fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7394: checking whether to use nl_langinfo" >&5 +echo "configure:7406: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7404: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* langinfo_ok=yes else @@ -7435,17 +7447,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7439: checking for $ac_hdr" >&5 +echo "configure:7451: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7475,17 +7487,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7479: checking for $ac_hdr" >&5 +echo "configure:7491: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7489: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7512,7 +7524,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7516: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7528: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7592,7 +7604,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7596: checking how to package libraries" >&5 +echo "configure:7608: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 63dc0e6..fc87dcb 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1267,6 +1267,18 @@ dnl AC_CHECK_TOOL(AR, ar) CFLAGS="$CFLAGS -mieee" fi ;; + Lynx*) + SHLIB_CFLAGS="-fPIC" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + CFLAGS_OPTIMIZE=-02 + SHLIB_LD="${CC} -shared " + DL_OBJS="tclLoadDl.o" + DL_LIBS="-mshared -ldl" + LD_FLAGS="-Wl,--export-dynamic" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + ;; MP-RAS-02*) SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" -- cgit v0.12 From e2f09c4107bf748b1afc2f40e341fa7cb19feb4d Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 7 Nov 2005 10:28:01 +0000 Subject: * tests/trace.test (trace-13.2-4): added tests to detect leak, see [Bug 1348775]. --- tests/trace.test | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/tests/trace.test b/tests/trace.test index 9569ae0..4eba508 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,13 +11,21 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.11 2005/11/04 01:15:21 msofer Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.12 2005/11/07 10:28:01 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import -force ::tcltest::* } +# Used for constraining memory leak tests +testConstraint memory [llength [info commands memory]] + +proc getbytes {} { + set lines [split [memory info] "\n"] + lindex [lindex $lines 3] 3 +} + proc traceScalar {name1 name2 op} { global info set info [list $name1 $name2 $op [catch {uplevel set $name1} msg] $msg] @@ -713,7 +721,7 @@ test trace-12.8 {errors when setting variable traces} { list [catch {trace add variable x(0) write traceProc} msg] $msg } {1 {can't trace "x(0)": variable isn't array}} -# Check deleting one trace from another. +# Check trace deletion test trace-13.1 {delete one trace from another} { proc delTraces {args} { @@ -734,6 +742,52 @@ test trace-13.1 {delete one trace from another} { set x set info } {5 1} +test trace-13.2 {leak when unsetting traced variable} \ + -constraints memory -body { + set end [getbytes] + proc f args {} + for {set i 0} {$i < 5} {incr i} { + trace add variable bepa write f + set bepa a + unset bepa + set tmp $end + set end [getbytes] + } + expr {$end - $tmp} + } -cleanup { + unset -nocomplain end i tmp + } -result 0 +test trace-13.3 {leak when removing traces} \ + -constraints memory -body { + set end [getbytes] + proc f args {} + for {set i 0} {$i < 5} {incr i} { + trace add variable bepa write f + set bepa a + trace remove variable bepa write f + set tmp $end + set end [getbytes] + } + expr {$end - $tmp} + } -cleanup { + unset -nocomplain end i tmp + } -result 0 +test trace-13.4 {leaks in error returns from traces} \ + -constraints memory -body { + set end [getbytes] + for {set i 0} {$i < 5} {incr i} { + set apa {a 1 b 2} + set bepa [lrange $apa 0 end] + trace add variable bepa write {error hej} + catch {set bepa a} + unset bepa + set tmp $end + set end [getbytes] + } + expr {$end - $tmp} + } -cleanup { + unset -nocomplain end i tmp + } -result 0 # Check operation and syntax of "trace" command. -- cgit v0.12 From 33fe2ceea14c2b74aea080a8b8df209ee5032a15 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 7 Nov 2005 10:28:38 +0000 Subject: missed Changelog entry --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 471ddde..d4fb83c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-11-07 Miguel Sofer + + * tests/trace.test (trace-13.2-4): added tests to detect leak, see [Bug + 1348775]. + 2005-11-04 Don Porter * unix/tcl.m4: Added code to enable [load] on LynxOS. Thanks to -- cgit v0.12 From b896a6e4fe8cb265e2149fddf237aaec9f9c9c80 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 8 Nov 2005 14:53:12 +0000 Subject: Fix [Bug 1348775] using Miguel's patch --- ChangeLog | 7 +++++++ generic/tclCmdMZ.c | 61 +++++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 51 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index d4fb83c..db4f8b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-11-08 Donal K. Fellows + + * generic/tclCmdMZ.c (TclTraceVariableObjCmd, TraceVarProc): + Applied Miguel's fix for [Bug 1348775]. It is not quite as elegant + as the one applied to the HEAD, but it is easier to use it rather + than fully backporting. + 2005-11-07 Miguel Sofer * tests/trace.test (trace-13.2-4): added tests to detect leak, see [Bug diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index f4c7765..ea272b7 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.23 2005/11/01 20:19:26 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.24 2005/11/08 14:53:12 dkf Exp $ */ #include "tclInt.h" @@ -23,7 +23,7 @@ #include "tclCompile.h" /* - * Structure used to hold information about variable traces: + * Structures used to hold information about variable traces: */ typedef struct { @@ -37,6 +37,11 @@ typedef struct { * be larger than 4 bytes. */ } TraceVarInfo; +typedef struct { + VarTrace trace; + TraceVarInfo tvar; +} CompoundVarTrace; + /* * Structure used to hold information about command traces: */ @@ -3678,10 +3683,24 @@ TclTraceVariableObjCmd(interp, optionIndex, objc, objv) command = Tcl_GetStringFromObj(objv[5], &commandLength); length = (size_t) commandLength; if ((enum traceOptions) optionIndex == TRACE_ADD) { + /* + * This code essentially mallocs together the VarTrace and the + * TraceVarInfo, then inlines the Tcl_TraceVar(). This is + * necessary in order to have the TraceVarInfo to be freed + * automatically when the VarTrace is freed [Bug 1348775] + */ + + CompoundVarTrace *compTracePtr; TraceVarInfo *tvarPtr; - tvarPtr = (TraceVarInfo *) ckalloc((unsigned) - (sizeof(TraceVarInfo) - sizeof(tvarPtr->command) + Var *varPtr, *arrayPtr; + VarTrace *tracePtr; + int flagMask; + + compTracePtr = (CompoundVarTrace *) ckalloc((unsigned) + (sizeof(CompoundVarTrace) - sizeof(tvarPtr->command) + length + 1)); + tracePtr = &(compTracePtr->trace); + tvarPtr = &(compTracePtr->tvar); tvarPtr->flags = flags; if (objv[0] == NULL) { tvarPtr->flags |= TCL_TRACE_OLD_STYLE; @@ -3690,11 +3709,25 @@ TclTraceVariableObjCmd(interp, optionIndex, objc, objv) flags |= TCL_TRACE_UNSETS | TCL_TRACE_RESULT_OBJECT; strcpy(tvarPtr->command, command); name = Tcl_GetString(objv[3]); - if (Tcl_TraceVar(interp, name, flags, TraceVarProc, - (ClientData) tvarPtr) != TCL_OK) { - ckfree((char *) tvarPtr); + flagMask = TCL_GLOBAL_ONLY | TCL_NAMESPACE_ONLY; + varPtr = TclLookupVar(interp, name, NULL, + (flags & flagMask) | TCL_LEAVE_ERR_MSG, "trace", + /*createPart1*/ 1, /*createPart2*/ 1, &arrayPtr); + if (varPtr == NULL) { + ckfree((char *) tracePtr); return TCL_ERROR; } + flagMask = TCL_TRACE_READS | TCL_TRACE_WRITES + | TCL_TRACE_UNSETS | TCL_TRACE_ARRAY + | TCL_TRACE_RESULT_DYNAMIC | TCL_TRACE_RESULT_OBJECT; +#ifndef TCL_REMOVE_OBSOLETE_TRACES + flagMask |= TCL_TRACE_OLD_STYLE; +#endif + tracePtr->traceProc = TraceVarProc; + tracePtr->clientData = (ClientData) tvarPtr; + tracePtr->flags = flags & flagMask; + tracePtr->nextPtr = varPtr->tracePtr; + varPtr->tracePtr = tracePtr; } else { /* * Search through all of our traces on this variable to @@ -3715,7 +3748,6 @@ TclTraceVariableObjCmd(interp, optionIndex, objc, objv) Tcl_UntraceVar2(interp, name, NULL, flags | TCL_TRACE_UNSETS | TCL_TRACE_RESULT_OBJECT, TraceVarProc, clientData); - Tcl_EventuallyFree((ClientData) tvarPtr, TCL_DYNAMIC); break; } } @@ -4700,15 +4732,12 @@ TraceVarProc(clientData, interp, name1, name2, flags) Tcl_DString cmd; /* - * We might call Tcl_Eval() below, and that might evaluate - * [trace vdelete] which might try to free tvarPtr. We want - * to use tvarPtr until the end of this function, so we use - * Tcl_Preserve() and Tcl_Release() to be sure it is not - * freed while we still need it. + * We might call Tcl_Eval() below, and that might evaluate [trace + * vdelete] which might try to free tvarPtr. However we do not + * need to protect anything here; it's done by our caller because + * the TraceVarInfo is really part of a CompoundVarTrace. [Bug 1348775] */ - Tcl_Preserve((ClientData) tvarPtr); - result = NULL; if ((tvarPtr->flags & flags) && !(flags & TCL_INTERP_DESTROYED)) { if (tvarPtr->length != (size_t) 0) { @@ -4783,9 +4812,7 @@ TraceVarProc(clientData, interp, name1, name2, flags) Tcl_DecrRefCount(errMsgObj); result = NULL; } - Tcl_EventuallyFree((ClientData) tvarPtr, TCL_DYNAMIC); } - Tcl_Release((ClientData) tvarPtr); return result; } -- cgit v0.12 From 50aa9cf6430fa3273369544087dea5fdf761e7a4 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 8 Nov 2005 18:28:56 +0000 Subject: * generic/tclPkg.c: Corrected inconsistencies in the value returned * tests/pkg.test: by Tcl_PkgRequire(Ex) so that the returned values will always agree with what is stored in the package database. This way repeated calls to Tcl_PkgRequire(Ex) have the same results. Thanks to Hemang Lavana. [Bug 1162286]. * tests/namespace.test (25.7,8): Backport test of knownBug. --- ChangeLog | 9 +++ generic/tclPkg.c | 90 +++++++++++++++++---- tests/namespace.test | 14 +++- tests/pkg.test | 223 +++++++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 298 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index db4f8b4..f17d586 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-11-08 Don Porter + + * generic/tclPkg.c: Corrected inconsistencies in the value returned + * tests/pkg.test: by Tcl_PkgRequire(Ex) so that the returned + values will always agree with what is stored in the package database. + This way repeated calls to Tcl_PkgRequire(Ex) have the same results. + Thanks to Hemang Lavana. [Bug 1162286]. + * tests/namespace.test (25.7,8): Backport test of knownBug. + 2005-11-08 Donal K. Fellows * generic/tclCmdMZ.c (TclTraceVariableObjCmd, TraceVarProc): diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 43d859b..0597179 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9 2002/02/22 22:36:09 dgp Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.1 2005/11/08 18:28:56 dgp Exp $ */ #include "tclInt.h" @@ -275,6 +275,21 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) break; } + /* + * Check whether we're already attempting to load some version + * of this package (circular dependency detection). + */ + + if (pkgPtr->clientData != NULL) { + Tcl_AppendResult(interp, "circular package dependency: ", + "attempt to provide ", name, " ", + (char *)(pkgPtr->clientData), " requires ", name, NULL); + if (version != NULL) { + Tcl_AppendResult(interp, " ", version, NULL); + } + return NULL; + } + /* * The package isn't yet present. Search the list of available * versions and invoke the script for the best available version. @@ -306,20 +321,62 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) * script itself from deletion and (b) don't assume that bestPtr * will still exist when the script completes. */ - + + CONST char *versionToProvide = bestPtr->version; script = bestPtr->script; + pkgPtr->clientData = (ClientData) versionToProvide; Tcl_Preserve((ClientData) script); + Tcl_Preserve((ClientData) versionToProvide); code = Tcl_GlobalEval(interp, script); Tcl_Release((ClientData) script); + pkgPtr = FindPackage(interp, name); + if (code == TCL_OK) { + Tcl_ResetResult(interp); + if (pkgPtr->version == NULL) { + code = TCL_ERROR; + Tcl_AppendResult(interp, "attempt to provide package ", + name, " ", versionToProvide, + " failed: no version of package ", name, + " provided", NULL); + } else if (0 != ComparePkgVersions( + pkgPtr->version, versionToProvide, NULL)) { + code = TCL_ERROR; + Tcl_AppendResult(interp, "attempt to provide package ", + name, " ", versionToProvide, " failed: package ", + name, " ", pkgPtr->version, " provided instead", + NULL); + } + } else if (code != TCL_ERROR) { + Tcl_Obj *codePtr = Tcl_NewIntObj(code); + Tcl_ResetResult(interp); + Tcl_AppendResult(interp, "attempt to provide package ", + name, " ", versionToProvide, " failed: ", + "bad return code: ", Tcl_GetString(codePtr), NULL); + Tcl_DecrRefCount(codePtr); + code = TCL_ERROR; + } + Tcl_Release((ClientData) versionToProvide); + if (code != TCL_OK) { - if (code == TCL_ERROR) { - Tcl_AddErrorInfo(interp, - "\n (\"package ifneeded\" script)"); + /* + * Take a non-TCL_OK code from the script as an + * indication the package wasn't loaded properly, + * so the package system should not remember an + * improper load. + * + * This is consistent with our returning NULL. + * If we're not willing to tell our caller we + * got a particular version, we shouldn't store + * that version for telling future callers either. + */ + Tcl_AddErrorInfo(interp, "\n (\"package ifneeded\" script)"); + if (pkgPtr->version != NULL) { + ckfree(pkgPtr->version); + pkgPtr->version = NULL; } + pkgPtr->clientData = NULL; return NULL; } - Tcl_ResetResult(interp); - pkgPtr = FindPackage(interp, name); break; } @@ -345,11 +402,16 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) } code = Tcl_GlobalEval(interp, Tcl_DStringValue(&command)); Tcl_DStringFree(&command); - if (code != TCL_OK) { - if (code == TCL_ERROR) { - Tcl_AddErrorInfo(interp, - "\n (\"package unknown\" script)"); - } + if ((code != TCL_OK) && (code != TCL_ERROR)) { + Tcl_Obj *codePtr = Tcl_NewIntObj(code); + Tcl_ResetResult(interp); + Tcl_AppendResult(interp, "bad return code: ", + Tcl_GetString(codePtr), NULL); + Tcl_DecrRefCount(codePtr); + code = TCL_ERROR; + } + if (code == TCL_ERROR) { + Tcl_AddErrorInfo(interp, "\n (\"package unknown\" script)"); return NULL; } Tcl_ResetResult(interp); @@ -559,7 +621,7 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) while (pkgPtr->availPtr != NULL) { availPtr = pkgPtr->availPtr; pkgPtr->availPtr = availPtr->nextPtr; - ckfree(availPtr->version); + Tcl_EventuallyFree((ClientData)availPtr->version, TCL_DYNAMIC); Tcl_EventuallyFree((ClientData)availPtr->script, TCL_DYNAMIC); ckfree((char *) availPtr); } @@ -878,7 +940,7 @@ TclFreePackageInfo(iPtr) while (pkgPtr->availPtr != NULL) { availPtr = pkgPtr->availPtr; pkgPtr->availPtr = availPtr->nextPtr; - ckfree(availPtr->version); + Tcl_EventuallyFree((ClientData)availPtr->version, TCL_DYNAMIC); Tcl_EventuallyFree((ClientData)availPtr->script, TCL_DYNAMIC); ckfree((char *) availPtr); } diff --git a/tests/namespace.test b/tests/namespace.test index 311f3af..9887ddc 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21.2.6 2005/07/05 17:27:09 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.7 2005/11/08 18:28:56 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -961,6 +961,18 @@ test namespace-25.6 {NamespaceEvalCmd, error in eval'd script} { (in namespace eval "::test_ns_1" script line 1) invoked from within "namespace eval test_ns_1 {xxxx}"}} +test namespace-25.7 {NamespaceEvalCmd, error in eval'd script} { + list [catch {namespace eval test_ns_1 {error foo bar baz}} msg] $msg $errorInfo +} {1 foo {bar + (in namespace eval "::test_ns_1" script line 1) + invoked from within +"namespace eval test_ns_1 {error foo bar baz}"}} +test namespace-25.8 {NamespaceEvalCmd, error in eval'd script} knownBug { + list [catch {namespace eval test_ns_1 error foo bar baz} msg] $msg $errorInfo +} {1 foo {bar + (in namespace eval "::test_ns_1" script line 1) + invoked from within +"namespace eval test_ns_1 error foo bar baz"}} catch {unset v} test namespace-26.1 {NamespaceExportCmd, no args and new ns} { diff --git a/tests/pkg.test b/tests/pkg.test index 9dd0784..74f91be 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,10 +10,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9 2001/08/06 19:13:29 dgp Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.1 2005/11/08 18:28:56 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -21,7 +21,7 @@ if {[lsearch [namespace children] ::tcltest] == -1} { # package list set i [interp create] interp eval $i [list set argv $argv] -interp eval $i [list package require tcltest] +interp eval $i [list package require tcltest 2] interp eval $i [list namespace import -force ::tcltest::*] interp eval $i { @@ -130,22 +130,22 @@ test pkg-2.9 {Tcl_PkgRequire procedure, can't find suitable version} { package unknown {} list [catch {package require t} msg] $msg } {1 {can't find package t}} -test pkg-2.10 {Tcl_PkgRequire procedure, error in ifneeded script} { +test pkg-2.10 {Tcl_PkgRequire procedure, error in ifneeded script} -body { package forget t package ifneeded t 2.1 {package provide t 2.1; error "ifneeded test"} list [catch {package require t 2.1} msg] $msg $errorInfo -} {1 {ifneeded test} {ifneeded test +} -match glob -result {1 {ifneeded test} {ifneeded test while executing "error "ifneeded test"" - ("package ifneeded" script) + ("package ifneeded*" script) invoked from within "package require t 2.1"}} -test pkg-2.11 {Tcl_PkgRequire procedure, ifneeded script doesn't provide package} { +test pkg-2.11 {Tcl_PkgRequire procedure, ifneeded script doesn't provide package} -body { package forget t package ifneeded t 2.1 "set x invoked" set x xxx list [catch {package require t 2.1} msg] $msg $x -} {1 {can't find package t 2.1} invoked} +} -match glob -result {1 * invoked} test pkg-2.12 {Tcl_PkgRequire procedure, self-deleting script} { package forget t package ifneeded t 1.2 "package forget t; set x 1.2; package provide t 1.2" @@ -261,6 +261,194 @@ test pkg-2.24 {Tcl_PkgRequire procedure, version checks} { package provide t 2.3 list [catch {package require -exact t 2.2} msg] $msg } {1 {version conflict for package "t": have 2.3, need 2.2}} +test pkg-2.25 {Tcl_PkgRequire procedure, error in ifneeded script} -body { + package forget t + package ifneeded t 2.1 {package provide t 2.1; error "ifneeded test" EI} + list [catch {package require t 2.1} msg] $msg $errorInfo +} -match glob -result {1 {ifneeded test} {EI + ("package ifneeded*" script) + invoked from within +"package require t 2.1"}} -constraints knownBug +test pkg-2.26 {Tcl_PkgRequire procedure, error in ifneeded script} -body { + package forget t + package ifneeded t 2.1 {package provide t 2.1; foreach x 1 {error "ifneeded test" EI}} + list [catch {package require t 2.1} msg] $msg $errorInfo +} -match glob -result {1 {ifneeded test} {EI + ("foreach" body line 1) + invoked from within +"foreach x 1 {error "ifneeded test" EI}" + ("package ifneeded*" script) + invoked from within +"package require t 2.1"}} +test pkg-2.27 {Tcl_PkgRequire: circular dependency} -setup { + package forget foo +} -body { + package ifneeded foo 1 {package require foo 1} + package require foo 1 +} -cleanup { + package forget foo +} -returnCodes error -match glob -result {circular package dependency:*} +test pkg-2.28 {Tcl_PkgRequire: circular dependency} -setup { + package forget foo +} -body { + package ifneeded foo 1 {package require foo 2} + package require foo 1 +} -cleanup { + package forget foo +} -returnCodes error -match glob -result {circular package dependency:*} +test pkg-2.29 {Tcl_PkgRequire: circular dependency} -setup { + package forget foo + package forget bar +} -body { + package ifneeded foo 1 {package require bar 1; package provide foo 1} + package ifneeded bar 1 {package require foo 1; package provide bar 1} + package require foo 1 +} -cleanup { + package forget foo + package forget bar +} -returnCodes error -match glob -result {circular package dependency:*} +test pkg-2.30 {Tcl_PkgRequire: circular dependency} -setup { + package forget foo + package forget bar +} -body { + package ifneeded foo 1 {package require bar 1; package provide foo 1} + package ifneeded foo 2 {package provide foo 2} + package ifneeded bar 1 {package require foo 2; package provide bar 1} + package require foo 1 +} -cleanup { + package forget foo + package forget bar +} -returnCodes error -match glob -result {circular package dependency:*} +test pkg-2.31 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1 {package provide foo 1; error foo} + package require foo 1 +} -cleanup { + package forget foo +} -returnCodes error -match glob -result foo +test pkg-2.32 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1 {package provide foo 1; error foo} + catch {package require foo 1} + package provide foo +} -cleanup { + package forget foo +} -result {} +test pkg-2.33 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1 {package provide foo 2} + package require foo 1 +} -cleanup { + package forget foo +} -returnCodes error -match glob -result {attempt to provide package * failed:*} +test pkg-2.34 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1 {package provide foo 1.1} + package require foo 1 +} -cleanup { + package forget foo +} -returnCodes error -match glob -result {attempt to provide package * failed:*} +test pkg-2.35 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1 {} + package require foo 1 +} -cleanup { + package forget foo +} -returnCodes error -match glob -result {attempt to provide package * failed:*} +test pkg-2.35 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1 {break} + package require foo 1 +} -cleanup { + package forget foo +} -returnCodes error -match glob \ +-result {attempt to provide package * failed: bad return code:*} +test pkg-2.36 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1 {continue} + package require foo 1 +} -cleanup { + package forget foo +} -returnCodes error -match glob \ +-result {attempt to provide package * failed: bad return code:*} +test pkg-2.37 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1 {return} + package require foo 1 +} -cleanup { + package forget foo +} -returnCodes error -match glob \ +-result {attempt to provide package * failed: bad return code:*} +test pkg-2.38 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1 {proc x {} {return -code 10}; x} + package require foo 1 +} -cleanup { + rename x {} + package forget foo +} -returnCodes error -match glob \ +-result {attempt to provide package * failed: bad return code:*} +test pkg-2.39 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo + set saveUnknown [package unknown] + package unknown {package provide foo 2 ;#} +} -body { + package require foo 1 +} -cleanup { + package forget foo + package unknown $saveUnknown +} -returnCodes error -match glob -result * +test pkg-2.40 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo + set saveUnknown [package unknown] + package unknown {break ;#} +} -body { + package require foo 1 +} -cleanup { + package forget foo + package unknown $saveUnknown +} -returnCodes error -match glob -result {bad return code:*} +test pkg-2.41 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo + set saveUnknown [package unknown] + package unknown {continue ;#} +} -body { + package require foo 1 +} -cleanup { + package forget foo + package unknown $saveUnknown +} -returnCodes error -match glob -result {bad return code:*} +test pkg-2.42 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo + set saveUnknown [package unknown] + package unknown {return ;#} +} -body { + package require foo 1 +} -cleanup { + package forget foo + package unknown $saveUnknown +} -returnCodes error -match glob -result {bad return code:*} +test pkg-2.43 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo + set saveUnknown [package unknown] + proc x args {return -code 10} + package unknown x +} -body { + package require foo 1 +} -cleanup { + rename x {} + package forget foo + package unknown $saveUnknown +} -returnCodes error -match glob -result {bad return code:*} test pkg-3.1 {Tcl_PackageCmd procedure} { list [catch {package} msg] $msg @@ -510,7 +698,7 @@ test pkg-4.1 {TclFreePackageInfo procedure} { } interp delete foo } {} -test pkg-4.2 {TclFreePackageInfo procedure} { +test pkg-4.2 {TclFreePackageInfo procedure} -body { interp create foo foo eval { package ifneeded t 2.3 x @@ -522,8 +710,8 @@ test pkg-4.2 {TclFreePackageInfo procedure} { proc kill {} { interp delete foo } - list [catch {foo eval package require x 3.1} msg] $msg -} {1 {can't find package x 3.1}} + foo eval package require x 3.1 +} -returnCodes error -match glob -result * test pkg-5.1 {CheckVersion procedure} { list [catch {package vcompare 1 2.1} msg] $msg @@ -645,21 +833,10 @@ set auto_path $oldPath package unknown $oldPkgUnknown concat +cleanupTests } # cleanup interp delete $i ::tcltest::cleanupTests return - - - - - - - - - - - - -- cgit v0.12 From e7ec6bc405c6249174bd55f84b73d1bd6becd185 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 8 Nov 2005 20:21:33 +0000 Subject: * tests/expr.test: Portable tests expr-46.13-18 [Bug 1341368] --- ChangeLog | 2 ++ tests/expr.test | 38 +++++++++++++------------------------- 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index f17d586..037abfd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-11-08 Don Porter + * tests/expr.test: Portable tests expr-46.13-18 [Bug 1341368] + * generic/tclPkg.c: Corrected inconsistencies in the value returned * tests/pkg.test: by Tcl_PkgRequire(Ex) so that the returned values will always agree with what is stored in the package database. diff --git a/tests/expr.test b/tests/expr.test index ff4bc0f..0c42b5d 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.10 2005/10/29 19:58:04 mdejong Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.11 2005/11/08 20:21:34 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -899,40 +899,28 @@ test expr-46.12 {round() boundary case - -1/2 + 1 ulp} { expr {round($x)} } 0 -if {int(0x80000000) < 0} { - # 32 bit long - set min_long -2147483648 - set max_long 2147483647 -} else { - # 64 bit long - set min_long -9223372036854775808 - set max_long 9223372036854775807 -} - test expr-46.13 {round() boundary case - round down} { - expr {round($max_long - 0.51)} -} [expr {$max_long - 1}] + expr {round(2147483647 - 0.51)} +} 2147483646 test expr-46.14 {round() boundary case - round up} { - expr {round($max_long - 0.50)} -} $max_long + expr {round(2147483647 - 0.50)} +} 2147483647 test expr-46.15 {round() boundary case - round up to wide} { - expr {round($max_long + 0.50)} -} [expr {wide($max_long) + 1}] + expr {round(2147483647 + 0.50)} +} [expr {wide(2147483647) + 1}] test expr-46.16 {round() boundary case - round up} { - expr {round($min_long + 0.51)} -} [expr {$min_long + 1}] + expr {round(-2147483648 + 0.51)} +} -2147483647 test expr-46.17 {round() boundary case - round down} { - expr {round($min_long + 0.50)} -} $min_long - + expr {round(-2147483648 + 0.50)} +} -2147483648 test expr-46.18 {round() boundary case - round down to wide} { - expr {round($min_long - 0.50)} -} [expr {wide($min_long) - 1}] - + expr {round(-2147483648 - 0.50)} +} [expr {wide(-2147483648) - 1}] # cleanup if {[info exists a]} { -- cgit v0.12 From 198c3c32b977b8c0f383c6951d63edfa8c0b6ac8 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 9 Nov 2005 00:53:05 +0000 Subject: * unix/tclUnixFCmd.c (MAX_READDIR_UNLINK_THRESHOLD): reduce to 130 based on errors seen on OS X 10.3 with lots of links in a dir. [Bug 1034337 followup] --- ChangeLog | 6 ++++++ unix/tclUnixFCmd.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 037abfd..210ce5a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-11-08 Jeff Hobbs + + * unix/tclUnixFCmd.c (MAX_READDIR_UNLINK_THRESHOLD): reduce to 130 + based on errors seen on OS X 10.3 with lots of links in a dir. + [Bug 1034337 followup] + 2005-11-08 Don Porter * tests/expr.test: Portable tests expr-46.13-18 [Bug 1341368] diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index c600ff3..e9d60ab 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.5 2005/10/07 22:35:03 hobbs Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.6 2005/11/09 00:53:06 hobbs Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -129,14 +129,14 @@ CONST TclFileAttrProcs tclpFileAttrProcs[] = { * a bug that makes readdir return NULL even though some directory entries * have not been processed. The bug afflicts SunOS's readdir when applied to * ufs file systems and Darwin 6.5's (and OSX v.10.3.8's) HFS+. JH found the - * Darwin readdir to reset at 172, so 150 is chosen to be conservative. We + * Darwin readdir to reset at 147, so 130 is chosen to be conservative. We * can't do a general rewind on failure as NFS can create special files that * recreate themselves when you try and delete them. 8.4.8 added a solution * that was affected by a single such NFS file, this solution should not be * affected by less than THRESHOLD such files. [Bug 1034337] */ -#define MAX_READDIR_UNLINK_THRESHOLD 150 +#define MAX_READDIR_UNLINK_THRESHOLD 130 /* * Declarations for local procedures defined in this file: -- cgit v0.12 From 1c1f56b0e990e69f5709492ea21320c4927e7e94 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 9 Nov 2005 21:26:14 +0000 Subject: doc changes with 1162286 fix --- doc/package.n | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/doc/package.n b/doc/package.n index 02ac630..cac5482 100644 --- a/doc/package.n +++ b/doc/package.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: package.n,v 1.6.2.1 2004/10/27 14:23:57 dkf Exp $ +'\" RCS: @(#) $Id: package.n,v 1.6.2.2 2005/11/09 21:26:14 dgp Exp $ '\" .so man.macros .TH package n 7.5 Tcl "Tcl Built-In Commands" @@ -206,13 +206,6 @@ if {[catch {\fBpackage require\fR Snack}]} { # Set up a dummy interface to work around the absence } .CE -.PP -When writing a package implementation, you should put the following at -the \fIbottom\fR of your library script so it is only called once the -package has been successfully set up: -.CS -\fBpackage provide\fR foobar 1.0 -.CE .SH "SEE ALSO" msgcat(n), packagens(n), pkgMkIndex(n) -- cgit v0.12 From de7a13a1ea31d6c10dabac82980991548cfac45a Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 9 Nov 2005 21:46:19 +0000 Subject: Bug 1350293 --- ChangeLog | 5 +++++ generic/tclTimer.c | 5 +++-- tests/timer.test | 24 +++++++++++------------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 210ce5a..5c7b243 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-11-09 Kevin B. Kenny + + * generic/tclTimer.c: Changed [after] so that it behaves correctly + * tests/timer.test: with negative arguments [Bug 1350293]. + 2005-11-08 Jeff Hobbs * unix/tclUnixFCmd.c (MAX_READDIR_UNLINK_THRESHOLD): reduce to 130 diff --git a/generic/tclTimer.c b/generic/tclTimer.c index 5832382..ef9bf24 100644 --- a/generic/tclTimer.c +++ b/generic/tclTimer.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTimer.c,v 1.6.2.3 2005/10/04 18:14:14 vasiljevic Exp $ + * RCS: @(#) $Id: tclTimer.c,v 1.6.2.4 2005/11/09 21:46:20 kennykb Exp $ */ #include "tclInt.h" @@ -781,7 +781,8 @@ Tcl_AfterObjCmd(clientData, interp, objc, objv) goto processInteger; } argString = Tcl_GetStringFromObj(objv[1], &length); - if (isdigit(UCHAR(argString[0]))) { /* INTL: digit */ + if (argString[0] == '+' || argString[0] == '-' + || isdigit(UCHAR(argString[0]))) { /* INTL: digit */ if (Tcl_GetIntFromObj(interp, objv[1], &ms) != TCL_OK) { return TCL_ERROR; } diff --git a/tests/timer.test b/tests/timer.test index cd76ef0..cf0e312 100644 --- a/tests/timer.test +++ b/tests/timer.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: timer.test,v 1.7.22.1 2004/10/26 20:14:51 dgp Exp $ +# RCS: @(#) $Id: timer.test,v 1.7.22.2 2005/11/09 21:46:20 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -549,18 +549,16 @@ test timer-10.1 {Bug 1016167: [after] overwrites imports} -setup { interp delete slave } -result ::after +test timer-11.2 {Bug 1350293: [after] negative argument} \ + -body { + set l {} + after 100 {lappend l 100; set done 1} + after -1 {lappend l -1} + vwait done + set l + } \ + -result {-1 100} + # cleanup ::tcltest::cleanupTests return - - - - - - - - - - - - -- cgit v0.12 From 3e3cbca74cb86cb694a6a95e849daaabcda74a31 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 15 Nov 2005 16:41:40 +0000 Subject: Bugs 926106 and 1353840 --- ChangeLog | 11 +++++ tests/cmdAH.test | 14 +++++- win/tclWinFile.c | 145 ++++++++++++++++++++++++++++++++----------------------- 3 files changed, 109 insertions(+), 61 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5c7b243..23c0fe8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2005-11-15 Kevin B. Kenny + + * tests/cmdAH.test: Backported the fix for [Bug 926016] because of + * win/tclWinFile.c: a repeated bug report in 8.4 [Bug 1353840]. + Windows [file mtime] will now return seconds from the Posix epoch + correctly (except for FAT32 file systems after a DST change + without a reboot - for which there is no help). A side effect is + that file times will appear different in Tcl from the way they do + in Windows Explorer or a 'dir' listing, because the Microsoft + tools get the DST state wrong in the listings. + 2005-11-09 Kevin B. Kenny * generic/tclTimer.c: Changed [after] so that it behaves correctly diff --git a/tests/cmdAH.test b/tests/cmdAH.test index cbd8947..6b0e053 100644 --- a/tests/cmdAH.test +++ b/tests/cmdAH.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: cmdAH.test,v 1.30.2.4 2004/04/06 08:47:01 dkf Exp $ +# RCS: @(#) $Id: cmdAH.test,v 1.30.2.5 2005/11/15 16:41:41 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -1437,6 +1437,18 @@ test cmdAH-24.11 {Tcl_FileObjCmd: mtime touch with non-ascii chars} winOnly { removeFile touch.me rename waitForEvenSecondForFAT {} +test cmdAH-24.12 {Tcl_FileObjCmd: mtime and daylight savings} { + set name [file join [temporaryDirectory] clockchange] + + file delete -force $name + close [open $name w] + set time [clock scan "21:00:00 October 30 2004 GMT"] + file mtime $name $time + set newmtime [file mtime $name] + file delete $name + expr {$newmtime == $time ? 1 : "$newmtime != $time"} +} {1} + # owned test cmdAH-25.1 {Tcl_FileObjCmd: owned} { diff --git a/win/tclWinFile.c b/win/tclWinFile.c index d58fa35..4171e67 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.12 2005/06/22 21:23:33 dgp Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.13 2005/11/15 16:41:41 kennykb Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -23,6 +23,13 @@ #include /* For TclpGetUserHome(). */ /* + * The number of 100-ns intervals between the Windows system epoch (1601-01-01 + * on the proleptic Gregorian calendar) and the Posix epoch (1970-01-01). + */ + +#define POSIX_EPOCH_AS_FILETIME 116444736000000000 + +/* * Declarations for 'link' related information. This information * should come with VC++ 6.0, but is not in some older SDKs. * In any case it is not well documented. @@ -151,6 +158,7 @@ typedef enum _FINDEX_SEARCH_OPS { /* Other typedefs required by this code */ static time_t ToCTime(FILETIME fileTime); +static void FromCTime(time_t posixTime, FILETIME *fileTime); typedef NET_API_STATUS NET_API_FUNCTION NETUSERGETINFOPROC (LPWSTR servername, LPWSTR username, DWORD level, LPBYTE *bufptr); @@ -1860,57 +1868,57 @@ NativeStatMode(DWORD attr, int checkLinks, int isExec) return (unsigned short)mode; } +/* + *------------------------------------------------------------------------ + * + * ToCTime -- + * + * Converts a Windows FILETIME to a time_t in UTC. + * + * Results: + * Returns the count of seconds from the Posix epoch. + * + *------------------------------------------------------------------------ + */ + static time_t ToCTime( - FILETIME fileTime) /* UTC Time to convert to local time_t. */ + FILETIME fileTime) /* UTC time */ { - FILETIME localFileTime; - SYSTEMTIME systemTime; - struct tm tm; - - if (FileTimeToLocalFileTime(&fileTime, &localFileTime) == 0) { - return 0; - } - if (FileTimeToSystemTime(&localFileTime, &systemTime) == 0) { - return 0; - } - tm.tm_sec = systemTime.wSecond; - tm.tm_min = systemTime.wMinute; - tm.tm_hour = systemTime.wHour; - tm.tm_mday = systemTime.wDay; - tm.tm_mon = systemTime.wMonth - 1; - tm.tm_year = systemTime.wYear - 1900; - tm.tm_wday = 0; - tm.tm_yday = 0; - tm.tm_isdst = -1; - - return mktime(&tm); -} - -#if 0 - - /* - * Borland's stat doesn't take into account localtime. - */ - - if ((result == 0) && (buf->st_mtime != 0)) { - TIME_ZONE_INFORMATION tz; - int time, bias; - - time = GetTimeZoneInformation(&tz); - bias = tz.Bias; - if (time == TIME_ZONE_ID_DAYLIGHT) { - bias += tz.DaylightBias; - } - bias *= 60; - buf->st_atime -= bias; - buf->st_ctime -= bias; - buf->st_mtime -= bias; - } + LARGE_INTEGER convertedTime; -#endif + convertedTime.LowPart = fileTime.dwLowDateTime; + convertedTime.HighPart = (LONG) fileTime.dwHighDateTime; + return (time_t) ((convertedTime.QuadPart + - (Tcl_WideInt) POSIX_EPOCH_AS_FILETIME) / (Tcl_WideInt) 10000000); +} + +/* + *------------------------------------------------------------------------ + * + * FromCTime -- + * + * Converts a time_t to a Windows FILETIME + * + * Results: + * Returns the count of 100-ns ticks seconds from the Windows epoch. + * + *------------------------------------------------------------------------ + */ +static void +FromCTime( + time_t posixTime, + FILETIME* fileTime) /* UTC Time */ +{ + LARGE_INTEGER convertedTime; + convertedTime.QuadPart = ((LONGLONG) posixTime) * 10000000 + + POSIX_EPOCH_AS_FILETIME; + fileTime->dwLowDateTime = convertedTime.LowPart; + fileTime->dwHighDateTime = convertedTime.HighPart; +} + #if 0 /* *------------------------------------------------------------------------- @@ -2443,6 +2451,7 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) return nextCheckpoint; } + /* *--------------------------------------------------------------------------- * @@ -2454,25 +2463,41 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) * 0 on success, -1 on error. * * Side effects: - * None. + * Sets errno to a representation of any Windows problem that's observed + * in the process. * *--------------------------------------------------------------------------- */ + int -TclpUtime(pathPtr, tval) - Tcl_Obj *pathPtr; /* File to modify */ - struct utimbuf *tval; /* New modification date structure */ +TclpUtime( + Tcl_Obj *pathPtr, /* File to modify */ + struct utimbuf *tval) /* New modification date structure */ { - int res; - /* - * Windows uses a slightly different structure name and, possibly, - * contents, so we have to copy the information over + int res = 0; + HANDLE fileHandle; + FILETIME lastAccessTime, lastModTime; + + FromCTime(tval->actime, &lastAccessTime); + FromCTime(tval->modtime, &lastModTime); + + /* + * We use the native APIs (not 'utime') because there are some daylight + * savings complications that utime gets wrong. */ - struct _utimbuf buf; - - buf.actime = tval->actime; - buf.modtime = tval->modtime; - - res = (*tclWinProcs->utimeProc)(Tcl_FSGetNativePath(pathPtr),&buf); + + fileHandle = (tclWinProcs->createFileProc) ( + (CONST TCHAR *) Tcl_FSGetNativePath(pathPtr), + FILE_WRITE_ATTRIBUTES, 0, NULL, OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, NULL); + + if (fileHandle == INVALID_HANDLE_VALUE || + !SetFileTime(fileHandle, NULL, &lastAccessTime, &lastModTime)) { + TclWinConvertError(GetLastError()); + res = -1; + } + if (fileHandle != INVALID_HANDLE_VALUE) { + CloseHandle(fileHandle); + } return res; } -- cgit v0.12 From 63dd61062cf091ad5d474947bc32773b486005e6 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 15 Nov 2005 22:58:13 +0000 Subject: Bump to http 2.5.2 to cover changing rules in [http::mapReply] [1182373] --- library/http/http.tcl | 4 ++-- library/http/pkgIndex.tcl | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/library/http/http.tcl b/library/http/http.tcl index 8b846e5..08a0888 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.7 2005/10/05 05:01:37 hobbs Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.8 2005/11/15 22:58:13 dgp Exp $ # Rough version history: # 1.0 Old http_get interface @@ -25,7 +25,7 @@ package require Tcl 8.4 # keep this in sync with pkgIndex.tcl # and with the install directories in Makefiles -package provide http 2.5.1 +package provide http 2.5.2 namespace eval http { variable http diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index c937b60..1691b51 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.5.1 [list tclPkgSetup $dir http 2.5.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] +package ifneeded http 2.5.2 [list tclPkgSetup $dir http 2.5.2 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] -- cgit v0.12 From 3c0b36f822c3675fd06380b2c01bbd1e811bca4f Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 15 Nov 2005 23:41:17 +0000 Subject: * changes: Update changes for 8.4.12 release --- ChangeLog | 8 ++++++ changes | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 91 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 23c0fe8..3a05d23 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-11-15 Don Porter + + * changes: Update changes for 8.4.12 release + 2005-11-15 Kevin B. Kenny * tests/cmdAH.test: Backported the fix for [Bug 926016] because of @@ -29,6 +33,10 @@ values will always agree with what is stored in the package database. This way repeated calls to Tcl_PkgRequire(Ex) have the same results. Thanks to Hemang Lavana. [Bug 1162286]. + ***POTENTIAL INCOMPATIBILITY***: Incompatible with those existing + packages that are accustomed to the [package] command forgiving + their bugs. + * tests/namespace.test (25.7,8): Backport test of knownBug. 2005-11-08 Donal K. Fellows diff --git a/changes b/changes index 7adc31e..befecc6 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.26 2005/06/27 18:20:16 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.27 2005/11/15 23:41:18 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -4218,7 +4218,7 @@ input lines. (redman) This is used on Windows to avoid the various problems that people have been seeing where the system hangs when tclsh is running outside of the event loop. As part of this, renamed -TclpAlertNotifier back to Tcl_AlertNotifier since it is public. +TcapAlertNotifier back to Tcl_AlertNotifier since it is public. (stanton) 3/23/99 (feature change) Test suite now uses "tcltest" namespace to @@ -6229,3 +6229,84 @@ Documentation improvements [1075433,1085127,1117017,1124160,1149605,etc.] Restores Tcl 8.4.9 behavior (porter) --- Released 8.4.11, June 28, 2005 --- See ChangeLog for details --- + +2005-07-01 (bug fix)[1222872] notifier spurious wake-up protection (vasiljevic) + +2005-07-05 (bug fix)[1077262] improved Tcl_Encoding lifetimes (porter) + +2005-07-05 (bug fix)[1230597] allow idempotent [namespace import] (porter) + +2005-07-07 (bug fix)[1095909] readdir_r usage purged (hobbs) + +2005-07-22 (enhancement)[1237755] 8.4 features in script library (fradin,porter) + +2005-07-24 (new feature) configure macros SC_PROG_TCLSH, SC_BUILD_TCLSH (dejong) +2005-07-26 (bug fix)[1047286] cmd delete traces during namespace delete (porter) + +2005-07-26 (new unix feature)[1231015] ${prefix}/share on ::tcl_pkgPath (dejong) + +2005-07-28 (unix bug fix)[1245953] O_APPEND for >> redirection (fellows) + +2005-07-29 (bug fix)[1247135] [info globals] return only existing vars (fellows) + +2005-07-30 (new Darwin feature) TCL_LOAD_FROM_MEMORY configuration (steffen) + +2005-08-05 (bug fix)[1241572] correct [expr abs($LONG_MIN)] (kenny) + +2005-08-05 (Solaris bug fix)[1252475] recognize cp1251 encoding (wagner,fellows) + +2005-08-17 (bug fix)[1217375] [file mkdir] race (diekhans,darley) + +2005-08-25 (bug fix)[1267380] [lrepeat] buffer overflow prevention (fellows) + +2005-08-29 (bug fix)[1275043] restore round() away from zero (kenny) + +2005-09-07 (bug fix)[1283976] invalid [format %c -1] result (porter) + +2005-09-15 (RHEL bug fix)[1287638] support open >2GB files RHEL 3 (palan) + +2005-09-30 (bug fix)[1306162] $argv encoding and list formatting (porter) + +2005-10-04 (bug fix)[1067708] [fconfigure -ttycontrol] leak (hobbs) + +2005-10-04 (bug fix)[1182373] [http::mapReply] update to RFC 3986 (aho,hobbs) +=> http 2.5.2 + +2005-10-04 (HPUX bug fix)[1204237] shl_load() and DYNAMIC_PATH (collins,hobbs) + +2005-10-05 (bug fix)[979640] buffer overrun mixing putenv(), ::env (bold,hobbs) + +2005-10-07 (Darwin bug fix)[1034337] recursive file delete, MacOSX, NFS (hobbs) + +2005-10-13 (bug fix)[1284178] [format] accept all integer values (porter) + +2005-10-22 (bug fix)[1251791] optimization exposed wide/int difference(sofer) + +2005-10-23 (bug fix)[1334947] value refcount error in var setting (sofer) + +2005-11-01 (bug fix)[1337941] Tcl_TraceCommand() -> crash (devilliers,porter) + +2005-11-03 (new Win NT/XP feature) Unicode console support (kovalenko,thoyts) + +2005-11-03 (bug fix)[1201171] [encoding system] in Tclkit (schekin,porter) + +2005-11-04 (bug fix)[1337229,1338280] [namespace delete] / unset traces (porter) + +2005-11-04 (enhancement) Korean timezone abbreviations (kenny) + +2005-11-04 (bug fix)[1317477] double encoding of time zone (kenny) + +2005-11-04 (Win enhancement)[1267871] extended exit codes (newman,thoyts) + +2005-11-04 (platform support)[1163896] LynxOS [load] (heidibr) + +2005-11-08 (bug fix)[1348775] unset trace memory leak (sofer) + +2005-11-08 (bug fix)[1162286] [package ifneeded] errors reported (lavana,porter) + *** POTENTIAL INCOMPATIBILITY *** + +2005-11-09 (bug fix)[1350293] [after $negative $script] fixed (kenny) + +2005-11-15 (Win bug fix)[926016,1353840] correct [file mtime] (kenny) + +--- Released 8.4.12, November 30, 2005 --- See ChangeLog for details --- -- cgit v0.12 From bf9ba7ca8af34836442083790985ace7603a1141 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 16 Nov 2005 22:05:26 +0000 Subject: * README: Bump version number to 8.4.12 * generic/tcl.h: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf-2.13 * win/configure: --- ChangeLog | 13 +++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3a05d23..ee32ad7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2005-11-16 Don Porter + + * README: Bump version number to 8.4.12 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf-2.13 + * win/configure: + 2005-11-15 Don Porter * changes: Update changes for 8.4.12 release diff --git a/README b/README index 8a1bf2d..3127941 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.11 source distribution. + This is the Tcl 8.4.12 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.11 2005/06/18 19:24:16 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.12 2005/11/16 22:05:26 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 2a10fd1..51dba46 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.19 2005/06/18 19:24:16 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.20 2005/11/16 22:05:26 dgp Exp $ */ #ifndef _TCL @@ -58,10 +58,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 11 +#define TCL_RELEASE_SERIAL 12 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.11" +#define TCL_PATCH_LEVEL "8.4.12" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index f2296e9..62150c6 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.11 + Disk Label=tcl8.4.12 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index a8d1ed4..111e53e 100755 --- a/unix/configure +++ b/unix/configure @@ -554,7 +554,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".11" +TCL_PATCH_LEVEL=".12" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index e408a9e..b781697 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.19 2005/07/26 20:26:34 mdejong Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.20 2005/11/16 22:05:28 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".11" +TCL_PATCH_LEVEL=".12" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 377434c..2b3a8c7 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.11 2005/06/18 19:24:25 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.12 2005/11/16 22:05:28 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.11 +%define version 8.4.12 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index 90d372b..f4dd165 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.11 2005/06/18 19:24:25 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.12 2005/11/16 22:05:28 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.11 for +This directory contains the binary distribution of Tcl/Tk 8.4.12 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 31603d1..78a498a 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".11" +TCL_PATCH_LEVEL=".12" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 5e38034..4145804 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.13 2005/06/18 19:24:25 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.14 2005/11/16 22:05:29 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".11" +TCL_PATCH_LEVEL=".12" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 14f3572945fca6c99e0103cd0f4021c76d33509b Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 18 Nov 2005 15:20:45 +0000 Subject: Backport of improved URL parsing. [Bug 1358369] --- ChangeLog | 5 + library/http/http.tcl | 296 +++++++++++++++++++++++++++++++++----------------- tests/http.test | 129 ++++++++++------------ 3 files changed, 260 insertions(+), 170 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee32ad7..14df576 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-11-18 Donal K. Fellows + + * library/http/http.tcl (http::geturl): Improved syntactic validation + of URLs, and better error messages in some cases. [Bug 1358369] + 2005-11-16 Don Porter * README: Bump version number to 8.4.12 diff --git a/library/http/http.tcl b/library/http/http.tcl index 08a0888..6c7e636 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -1,30 +1,29 @@ # http.tcl -- # -# Client-side HTTP for GET, POST, and HEAD commands. -# These routines can be used in untrusted code that uses -# the Safesock security policy. These procedures use a -# callback interface to avoid using vwait, which is not +# Client-side HTTP for GET, POST, and HEAD commands. These routines can +# be used in untrusted code that uses the Safesock security policy. These +# procedures use a callback interface to avoid using vwait, which is not # defined in the safe base. # -# See the file "license.terms" for information on usage and -# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.8 2005/11/15 22:58:13 dgp Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.9 2005/11/18 15:20:47 dkf Exp $ # Rough version history: -# 1.0 Old http_get interface -# 2.0 http:: namespace and http::geturl -# 2.1 Added callbacks to handle arriving data, and timeouts -# 2.2 Added ability to fetch into a channel -# 2.3 Added SSL support, and ability to post from a channel -# This version also cleans up error cases and eliminates the -# "ioerror" status in favor of raising an error -# 2.4 Added -binary option to http::geturl and charset element -# to the state array. +# 1.0 Old http_get interface. +# 2.0 http:: namespace and http::geturl. +# 2.1 Added callbacks to handle arriving data, and timeouts. +# 2.2 Added ability to fetch into a channel. +# 2.3 Added SSL support, and ability to post from a channel. This version +# also cleans up error cases and eliminates the "ioerror" status in +# favor of raising an error +# 2.4 Added -binary option to http::geturl and charset element to the state +# array. package require Tcl 8.4 -# keep this in sync with pkgIndex.tcl -# and with the install directories in Makefiles +# Keep this in sync with pkgIndex.tcl and with the install directories +# in Makefiles package provide http 2.5.2 namespace eval http { @@ -39,12 +38,11 @@ namespace eval http { set http(-useragent) "Tcl http client package [package provide http]" proc init {} { - # Set up the map for quoting chars - # RFC3986 Section 2.3 say percent encode all except: - # "... percent-encoded octets in the ranges of ALPHA - # (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), - # period (%2E), underscore (%5F), or tilde (%7E) should - # not be created by URI producers ..." + # Set up the map for quoting chars. RFC3986 Section 2.3 say percent + # encode all except: "... percent-encoded octets in the ranges of ALPHA + # (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E), + # underscore (%5F), or tilde (%7E) should not be created by URI + # producers ..." for {set i 0} {$i <= 256} {incr i} { set c [format %c $i] if {![string match {[-._~a-zA-Z0-9]} $c]} { @@ -152,9 +150,9 @@ proc http::config {args} { # Arguments: # token Connection token. # errormsg (optional) If set, forces status to error. -# skipCB (optional) If set, don't call the -command callback. This +# skipCB (optional) If set, don't call the -command callback. This # is useful when geturl wants to throw an exception instead -# of calling the callback. That way, the same error isn't +# of calling the callback. That way, the same error isn't # reported to two places. # # Side Effects: @@ -218,17 +216,16 @@ proc http::reset { token {why reset} } { # args Option value pairs. Valid options include: # -blocksize, -validate, -headers, -timeout # Results: -# Returns a token for this connection. -# This token is the name of an array that the caller should -# unset to garbage collect the state. +# Returns a token for this connection. This token is the name of an array +# that the caller should unset to garbage collect the state. proc http::geturl { url args } { variable http variable urlTypes variable defaultCharset - # Initialize the state variable, an array. We'll return the - # name of this array as the token for the transaction. + # Initialize the state variable, an array. We'll return the name of this + # array as the token for the transaction. if {![info exists http(uid)]} { set http(uid) 0 @@ -301,17 +298,118 @@ proc http::geturl { url args } { } # Validate URL, determine the server host and port, and check proxy case - # Recognize user:pass@host URLs also, although we do not do anything - # with that info yet. + # Recognize user:pass@host URLs also, although we do not do anything with + # that info yet. + + # URLs have basically four parts. + # First, before the colon, is the protocol scheme (e.g. http) + # Second, for HTTP-like protocols, is the authority + # The authority is preceded by // and lasts up to (but not including) + # the following / and it identifies up to four parts, of which only one, + # the host, is required (if an authority is present at all). All other + # parts of the authority (user name, password, port number) are optional. + # Third is the resource name, which is split into two parts at a ? + # The first part (from the single "/" up to "?") is the path, and the + # second part (from that "?" up to "#") is the query. *HOWEVER*, we do + # not need to separate them; we send the whole lot to the server. + # Fourth is the fragment identifier, which is everything after the first + # "#" in the URL. The fragment identifier MUST NOT be sent to the server + # and indeed, we don't bother to validate it (it could be an error to + # pass it in here, but it's cheap to strip). + # + # An example of a URL that has all the parts: + # http://jschmoe:xyzzy@www.bogus.net:8000/foo/bar.tml?q=foo#changes + # The "http" is the protocol, the user is "jschmoe", the password is + # "xyzzy", the host is "www.bogus.net", the port is "8000", the path is + # "/foo/bar.tml", the query is "q=foo", and the fragment is "changes". + # + # Note that the RE actually combines the user and password parts, as + # recommended in RFC 3986. Indeed, that RFC states that putting passwords + # in URLs is a Really Bad Idea, something with which I would agree utterly. + # Also note that we do not currently support IPv6 addresses. + # + # From a validation perspective, we need to ensure that the parts of the + # URL that are going to the server are correctly encoded. + + set URLmatcher {(?x) # this is _expanded_ syntax + ^ + (?: (\w+) : ) ? # + (?: // + (?: + ( + [^@/\#?]+ # + ) @ + )? + ( [^/:\#?]+ ) # + (?: : (\d+) )? # + )? + ( / [^\#?]* (?: \? [^\#?]* )?)? # (including query) + (?: \# (.*) )? # + $ + } - set exp {^(([^:]*)://)?([^@]+@)?([^/:]+)(:([0-9]+))?(/.*)?$} - if {![regexp -nocase $exp $url x prefix proto user host y port srvurl]} { + # Phase one: parse + if {![regexp -- $URLmatcher $url -> proto user host port srvurl]} { unset $token return -code error "Unsupported URL: $url" } + # Phase two: validate + if {$host eq ""} { + # Caller has to provide a host name; we do not have a "default host" + # that would enable us to handle relative URLs. + unset $token + return -code error "Missing host part: $url" + # Note that we don't check the hostname for validity here; if it's + # invalid, we'll simply fail to resolve it later on. + } + if {$port ne "" && $port>65535} { + unset $token + return -code error "Invalid port number: $port" + } + # The user identification and resource identification parts of the URL can + # have encoded characters in them; take care! + if {$user ne ""} { + # Check for validity according to RFC 3986, Appendix A + set validityRE {(?xi) + ^ + (?: [-\w.~!$&'()*+,;=:] | %[0-9a-f][0-9a-f] )+ + $ + } + if {![regexp -- $validityRE $user]} { + unset $token + # Provide a better error message in this error case + if {[regexp {(?i)%(?![0-9a-f][0-9a-f]).?.?} $user bad]} { + return -code error \ + "Illegal encoding character usage \"$bad\" in URL user" + } + return -code error "Illegal characters in URL user" + } + } + if {$srvurl ne ""} { + # Check for validity according to RFC 3986, Appendix A + set validityRE {(?xi) + ^ + # Path part (already must start with / character) + (?: [-\w.~!$&'()*+,;=:@/] | %[0-9a-f][0-9a-f] )* + # Query part (optional, permits ? characters) + (?: \? (?: [-\w.~!$&'()*+,;=:@/?] | %[0-9a-f][0-9a-f] )* )? + $ + } + if {![regexp -- $validityRE $srvurl]} { + unset $token + # Provide a better error message in this error case + if {[regexp {(?i)%(?![0-9a-f][0-9a-f])..} $srvurl bad]} { + return -code error \ + "Illegal encoding character usage \"$bad\" in URL path" + } + return -code error "Illegal characters in URL path" + } + } else { + set srvurl / + } if {[string length $proto] == 0} { set proto http - set url ${proto}://$url + set url ${proto}:$url } if {![info exists urlTypes($proto)]} { unset $token @@ -323,20 +421,27 @@ proc http::geturl { url args } { if {[string length $port] == 0} { set port $defport } - if {[string length $srvurl] == 0} { - set srvurl / - } - if {[string length $proto] == 0} { - set url http://$url - } - set state(url) $url if {![catch {$http(-proxyfilter) $host} proxy]} { set phost [lindex $proxy 0] set pport [lindex $proxy 1] } - # If a timeout is specified we set up the after event - # and arrange for an asynchronous socket connection. + # OK, now reassemble into a full URL + set url ${proto}:// + if {$user ne ""} { + append url $user + append url @ + } + append url $host + if {$port != $defport} { + append url : $port + } + append url $srvurl + # Don't append the fragment! + set state(url) $url + + # If a timeout is specified we set up the after event and arrange for an + # asynchronous socket connection. if {$state(-timeout) > 0} { set state(after) [after $state(-timeout) \ @@ -346,8 +451,8 @@ proc http::geturl { url args } { set async "" } - # If we are using the proxy, we must pass in the full URL that - # includes the server name. + # If we are using the proxy, we must pass in the full URL that includes + # the server name. if {[info exists phost] && [string length $phost]} { set srvurl $url @@ -355,11 +460,11 @@ proc http::geturl { url args } { } else { set conStat [catch {eval $defcmd $async {$host $port}} s] } - if {$conStat} { - # something went wrong while trying to establish the connection - # Clean up after events and such, but DON'T call the command callback - # (if available) because we're going to throw an exception from here + if {$conStat} { + # Something went wrong while trying to establish the connection. Clean + # up after events and such, but DON'T call the command callback (if + # available) because we're going to throw an exception from here # instead. Finish $token "" 1 cleanup $token @@ -367,16 +472,16 @@ proc http::geturl { url args } { } set state(sock) $s - # Wait for the connection to complete + # Wait for the connection to complete. if {$state(-timeout) > 0} { fileevent $s writable [list http::Connect $token] http::wait $token if {$state(status) eq "error"} { - # something went wrong while trying to establish the connection + # Something went wrong while trying to establish the connection. # Clean up after events and such, but DON'T call the command - # callback (if available) because we're going to throw an + # callback (if available) because we're going to throw an # exception from here instead. set err [lindex $state(error) 0] cleanup $token @@ -392,8 +497,8 @@ proc http::geturl { url args } { fconfigure $s -translation {auto crlf} -buffersize $state(-blocksize) - # The following is disallowed in safe interpreters, but the socket - # is already in non-blocking mode in that case. + # The following is disallowed in safe interpreters, but the socket is + # already in non-blocking mode in that case. catch {fconfigure $s -blocking off} set how GET @@ -403,7 +508,7 @@ proc http::geturl { url args } { set how POST set contDone 0 } else { - # there's no query data + # There's no query data. unset state(-query) set isQuery 0 } @@ -421,8 +526,8 @@ proc http::geturl { url args } { puts $s "$how $srvurl HTTP/1.0" puts $s "Accept: $http(-accept)" if {$port == $defport} { - # Don't add port in this case, to handle broken servers. - # [Bug #504508] + # Don't add port in this case, to handle broken servers. [Bug + # 504508] puts $s "Host: $host" } else { puts $s "Host: $host:$port" @@ -440,8 +545,8 @@ proc http::geturl { url args } { } } if {$isQueryChannel && $state(querylength) == 0} { - # Try to determine size of data in channel - # If we cannot seek, the surrounding catch will trap us + # Try to determine size of data in channel. If we cannot seek, the + # surrounding catch will trap us set start [tell $state(-querychannel)] seek $state(-querychannel) 0 end @@ -450,22 +555,21 @@ proc http::geturl { url args } { seek $state(-querychannel) $start } - # Flush the request header and set up the fileevent that will - # either push the POST data or read the response. + # Flush the request header and set up the fileevent that will either + # push the POST data or read the response. # # fileevent note: # - # It is possible to have both the read and write fileevents active - # at this point. The only scenario it seems to affect is a server - # that closes the connection without reading the POST data. - # (e.g., early versions TclHttpd in various error cases). - # Depending on the platform, the client may or may not be able to - # get the response from the server because of the error it will - # get trying to write the post data. Having both fileevents active - # changes the timing and the behavior, but no two platforms - # (among Solaris, Linux, and NT) behave the same, and none - # behave all that well in any case. Servers should always read thier - # POST data if they expect the client to read their response. + # It is possible to have both the read and write fileevents active at + # this point. The only scenario it seems to affect is a server that + # closes the connection without reading the POST data. (e.g., early + # versions TclHttpd in various error cases). Depending on the platform, + # the client may or may not be able to get the response from the server + # because of the error it will get trying to write the post data. + # Having both fileevents active changes the timing and the behavior, + # but no two platforms (among Solaris, Linux, and NT) behave the same, + # and none behave all that well in any case. Servers should always read + # their POST data if they expect the client to read their response. if {$isQuery || $isQueryChannel} { puts $s "Content-Type: $state(-type)" @@ -482,9 +586,8 @@ proc http::geturl { url args } { } if {! [info exists state(-command)]} { - - # geturl does EVERYTHING asynchronously, so if the user - # calls it synchronously, we just do a wait here. + # geturl does EVERYTHING asynchronously, so if the user calls it + # synchronously, we just do a wait here. wait $token if {$state(status) eq "error"} { @@ -494,8 +597,8 @@ proc http::geturl { url args } { } } } err]} { - # The socket probably was never connected, - # or the connection dropped later. + # The socket probably was never connected, or the connection dropped + # later. # Clean up after events and such, but DON'T call the command callback # (if available) because we're going to throw an exception from here @@ -622,8 +725,8 @@ proc http::Write {token} { # Catch I/O errors on dead sockets if {[info exists state(-query)]} { - # Chop up large query strings so queryprogress callback - # can give smooth feedback + # Chop up large query strings so queryprogress callback can give + # smooth feedback. puts -nonewline $s \ [string range $state(-query) $state(queryoffset) \ @@ -644,8 +747,8 @@ proc http::Write {token} { } } } err]} { - # Do not call Finish here, but instead let the read half of - # the socket process whatever server reply there is to get. + # Do not call Finish here, but instead let the read half of the socket + # process whatever server reply there is to get. set state(posterror) $err set done 1 @@ -656,7 +759,7 @@ proc http::Write {token} { fileevent $s readable [list http::Event $token] } - # Callback to the client after we've completely handled everything + # Callback to the client after we've completely handled everything. if {[string length $state(-queryprogress)]} { eval $state(-queryprogress) [list $token $state(querylength)\ @@ -698,10 +801,10 @@ proc http::Event {token} { fconfigure $state(-channel) -translation binary } } else { - # If we are getting text, set the incoming channel's - # encoding correctly. iso8859-1 is the RFC default, but - # this could be any IANA charset. However, we only know - # how to convert what we have encodings for. + # If we are getting text, set the incoming channel's encoding + # correctly. iso8859-1 is the RFC default, but this could be + # any IANA charset. However, we only know how to convert what + # we have encodings for. set idx [lsearch -exact $encodings \ [string tolower $state(charset)]] if {$idx >= 0} { @@ -855,16 +958,15 @@ proc http::wait {token} { # http::formatQuery -- # -# See documentaion for details. -# Call http::formatQuery with an even number of arguments, where -# the first is a name, the second is a value, the third is another -# name, and so on. +# See documentaion for details. Call http::formatQuery with an even +# number of arguments, where the first is a name, the second is a value, +# the third is another name, and so on. # # Arguments: # args A list of name-value pairs. # # Results: -# TODO +# TODO proc http::formatQuery {args} { set result "" @@ -894,9 +996,9 @@ proc http::mapReply {string} { variable http variable formMap - # The spec says: "non-alphanumeric characters are replaced by '%HH'" - # Use a pre-computed map and [string map] to do the conversion - # (much faster than [regsub]/[subst]). [Bug 1020491] + # The spec says: "non-alphanumeric characters are replaced by '%HH'". Use + # a pre-computed map and [string map] to do the conversion (much faster + # than [regsub]/[subst]). [Bug 1020491] if {$http(-urlencoding) ne ""} { set string [encoding convertto $http(-urlencoding) $string] @@ -913,7 +1015,7 @@ proc http::mapReply {string} { } # http::ProxyRequired -- -# Default proxy filter. +# Default proxy filter. # # Arguments: # host The destination host diff --git a/tests/http.test b/tests/http.test index b0020e7..773b7b3 100644 --- a/tests/http.test +++ b/tests/http.test @@ -12,7 +12,7 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # -# RCS: @(#) $Id: http.test,v 1.33.2.3 2005/10/05 05:01:37 hobbs Exp $ +# RCS: @(#) $Id: http.test,v 1.33.2.4 2005/11/18 15:20:47 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -82,19 +82,15 @@ if {[info commands testthread] == "testthread" && [file exists $httpdFile]} { } } - test http-1.1 {http::config} { http::config } [list -accept */* -proxyfilter http::ProxyRequired -proxyhost {} -proxyport {} -urlencoding utf-8 -useragent "Tcl http client package $version"] - test http-1.2 {http::config} { http::config -proxyfilter } http::ProxyRequired - test http-1.3 {http::config} { catch {http::config -junk} } 1 - test http-1.4 {http::config} { set savedconf [http::config] http::config -proxyhost nowhere.come -proxyport 8080 \ @@ -104,11 +100,9 @@ test http-1.4 {http::config} { eval http::config $savedconf set x } {-accept */* -proxyfilter myFilter -proxyhost nowhere.come -proxyport 8080 -urlencoding iso8859-1 -useragent {Tcl Test Suite}} - test http-1.5 {http::config} { list [catch {http::config -proxyhost {} -junk 8080} msg] $msg } {1 {Unknown option -junk, must be: -accept, -proxyfilter, -proxyhost, -proxyport, -urlencoding, -useragent}} - test http-1.6 {http::config} { set enc [list [http::config -urlencoding]] http::config -urlencoding iso8859-1 @@ -117,7 +111,6 @@ test http-1.6 {http::config} { set enc } {utf-8 iso8859-1} - test http-2.1 {http::reset} { catch {http::reset http#1} } 0 @@ -125,14 +118,12 @@ test http-2.1 {http::reset} { test http-3.1 {http::geturl} { list [catch {http::geturl -bogus flag} msg] $msg } {1 {Unknown option flag, can be: -binary, -blocksize, -channel, -command, -handler, -headers, -progress, -query, -queryblocksize, -querychannel, -queryprogress, -validate, -timeout, -type}} - test http-3.2 {http::geturl} { catch {http::geturl http:junk} err set err } {Unsupported URL: http:junk} - -set url [info hostname]:$port -set badurl [info hostname]:6666 +set url //[info hostname]:$port +set badurl //[info hostname]:6666 test http-3.3 {http::geturl} { set token [http::geturl $url] http::data $token @@ -140,14 +131,12 @@ test http-3.3 {http::geturl} {

Hello, World!

GET /

" - set tail /a/b/c -set url [info hostname]:$port/a/b/c +set url //[info hostname]:$port/a/b/c set fullurl http://user:pass@[info hostname]:$port/a/b/c -set binurl [info hostname]:$port/binary -set posturl [info hostname]:$port/post -set badposturl [info hostname]:$port/droppost - +set binurl //[info hostname]:$port/binary +set posturl //[info hostname]:$port/post +set badposturl //[info hostname]:$port/droppost test http-3.4 {http::geturl} { set token [http::geturl $url] http::data $token @@ -155,7 +144,6 @@ test http-3.4 {http::geturl} {

Hello, World!

GET $tail

" - proc selfproxy {host} { global port return [list [info hostname] $port] @@ -167,9 +155,8 @@ test http-3.5 {http::geturl} { http::data $token } "HTTP/1.0 TEST

Hello, World!

-

GET http://$url

+

GET http:$url

" - test http-3.6 {http::geturl} { http::config -proxyfilter bogus set token [http::geturl $url] @@ -179,7 +166,6 @@ test http-3.6 {http::geturl} {

Hello, World!

GET $tail

" - test http-3.7 {http::geturl} { set token [http::geturl $url -headers {Pragma no-cache}] http::data $token @@ -187,7 +173,6 @@ test http-3.7 {http::geturl} {

Hello, World!

GET $tail

" - test http-3.8 {http::geturl} { set token [http::geturl $url -query Name=Value&Foo=Bar -timeout 2000] http::data $token @@ -200,12 +185,10 @@ test http-3.8 {http::geturl} {
Foo
Bar
" - test http-3.9 {http::geturl} { set token [http::geturl $url -validate 1] http::code $token } "HTTP/1.0 200 OK" - test http-3.10 {http::geturl queryprogress} { set query foo=bar set sep "" @@ -227,7 +210,6 @@ test http-3.10 {http::geturl queryprogress} { http::wait $t list [http::status $t] [string length $query] $postProgress [http::data $t] } {ok 122879 {16384 32768 49152 65536 81920 98304 114688 122879} {Got 122879 bytes}} - test http-3.11 {http::geturl querychannel with -command} { set query foo=bar set sep "" @@ -263,14 +245,11 @@ test http-3.11 {http::geturl querychannel with -command} { removeFile outdata set testRes } {ok 122879 {Got 122880 bytes} ok {PostStart {Got 122880 bytes}}} - -# On Linux platforms when the client and server are on the same -# host, the client is unable to read the server's response one -# it hits the write error. The status is "eof" - -# On Windows, the http::wait procedure gets a -# "connection reset by peer" error while reading the reply - +# On Linux platforms when the client and server are on the same host, the +# client is unable to read the server's response one it hits the write error. +# The status is "eof". +# On Windows, the http::wait procedure gets a "connection reset by peer" error +# while reading the reply. test http-3.12 {http::geturl querychannel with aborted request} {nonPortable} { set query foo=bar set sep "" @@ -308,21 +287,49 @@ test http-3.12 {http::geturl querychannel with aborted request} {nonPortable} { removeFile outdata list [http::status $t] [http::code $t] } {ok {HTTP/1.0 200 Data follows}} - test http-3.13 {http::geturl socket leak test} { set chanCount [llength [file channels]] for {set i 0} {$i < 3} {incr i} { - catch {http::geturl $badurl -timeout 5000} + catch {http::geturl $badurl -timeout 5000} } # No extra channels should be taken expr {[llength [file channels]] == $chanCount} } 1 - test http-3.14 "http::geturl $fullurl" { set token [http::geturl $fullurl -validate 1] http::code $token } "HTTP/1.0 200 OK" +test http-3.15 {http::geturl parse failures} -body { + http::geturl "{invalid}:url" +} -returnCodes error -result {Unsupported URL: {invalid}:url} +test http-3.16 {http::geturl parse failures} -body { + http::geturl http:relative/url +} -returnCodes error -result {Unsupported URL: http:relative/url} +test http-3.17 {http::geturl parse failures} -body { + http::geturl /absolute/url +} -returnCodes error -result {Missing host part: /absolute/url} +test http-3.18 {http::geturl parse failures} -body { + http::geturl http://somewhere:123456789/ +} -returnCodes error -result {Invalid port number: 123456789} +test http-3.19 {http::geturl parse failures} -body { + http::geturl http://{user}@somewhere +} -returnCodes error -result {Illegal characters in URL user} +test http-3.20 {http::geturl parse failures} -body { + http::geturl http://%user@somewhere +} -returnCodes error -result {Illegal encoding character usage "%us" in URL user} +test http-3.21 {http::geturl parse failures} -body { + http::geturl http://somewhere/{path} +} -returnCodes error -result {Illegal characters in URL path} +test http-3.22 {http::geturl parse failures} -body { + http::geturl http://somewhere/%path +} -returnCodes error -result {Illegal encoding character usage "%pa" in URL path} +test http-3.23 {http::geturl parse failures} -body { + http::geturl http://somewhere/path?{query} +} -returnCodes error -result {Illegal characters in URL path} +test http-3.24 {http::geturl parse failures} -body { + http::geturl http://somewhere/path?%query +} -returnCodes error -result {Illegal encoding character usage "%qu" in URL path} test http-4.1 {http::Event} { set token [http::geturl $url] @@ -330,19 +337,16 @@ test http-4.1 {http::Event} { array set meta $data(meta) expr ($data(totalsize) == $meta(Content-Length)) } 1 - test http-4.2 {http::Event} { set token [http::geturl $url] upvar #0 $token data array set meta $data(meta) string compare $data(type) [string trim $meta(Content-Type)] } 0 - test http-4.3 {http::Event} { set token [http::geturl $url] http::code $token } {HTTP/1.0 200 Data follows} - test http-4.4 {http::Event} { set testfile [makeFile "" testfile] set out [open $testfile w] @@ -357,7 +361,6 @@ test http-4.4 {http::Event} {

Hello, World!

GET $tail

" - test http-4.5 {http::Event} { set testfile [makeFile "" testfile] set out [open $testfile w] @@ -367,7 +370,6 @@ test http-4.5 {http::Event} { removeFile $testfile expr $data(currentsize) == $data(totalsize) } 1 - test http-4.6 {http::Event} { set testfile [makeFile "" testfile] set out [open $testfile w] @@ -379,8 +381,7 @@ test http-4.6 {http::Event} { close $in removeFile $testfile set x -} "$bindata$binurl" - +} "$bindata[string trimleft $binurl /]" proc myProgress {token total current} { global progress httpLog if {[info exists httpLog] && $httpLog} { @@ -391,7 +392,7 @@ proc myProgress {token total current} { if 0 { # This test hangs on Windows95 because the client never gets EOF set httpLog 1 - test http-4.6 {http::Event} { + test http-4.6.1 {http::Event} knownBug { set token [http::geturl $url -blocksize 50 -progress myProgress] set progress } {111 111} @@ -412,38 +413,29 @@ test http-4.10 {http::Event} { set token [http::geturl $url -progress myProgress] http::size $token } {111} - # Timeout cases - -# Short timeout to working server (the test server) -# This lets us try a reset during the connection - +# Short timeout to working server (the test server). This lets us try a +# reset during the connection. test http-4.11 {http::Event} { set token [http::geturl $url -timeout 1 -command {#}] http::reset $token http::status $token } {reset} - -# Longer timeout with reset - +# Longer timeout with reset. test http-4.12 {http::Event} { set token [http::geturl $url/?timeout=10 -command {#}] http::reset $token http::status $token } {reset} - -# Medium timeout to working server that waits even longer -# The timeout hits while waiting for a reply - +# Medium timeout to working server that waits even longer. The timeout +# hits while waiting for a reply. test http-4.13 {http::Event} { set token [http::geturl $url?timeout=30 -timeout 10 -command {#}] http::wait $token http::status $token } {timeout} - -# Longer timeout to good host, bad port, gets an error -# after the connection "completes" but the socket is bad - +# Longer timeout to good host, bad port, gets an error after the +# connection "completes" but the socket is bad. test http-4.14 {http::Event} { set code [catch { set token [http::geturl $badurl/?timeout=10 -timeout 10000 -command {#}] @@ -456,14 +448,12 @@ test http-4.14 {http::Event} { # error code varies among platforms. list $code [regexp {(connect failed|couldn't open socket)} $err] } {1 1} - # Bogus host - test http-4.15 {http::Event} { # This test may fail if you use a proxy server. That is to be # expected and is not a problem with Tcl. set code [catch { - set token [http::geturl not_a_host.tcl.tk -timeout 1000 -command {#}] + set token [http::geturl //not_a_host.tcl.tk -timeout 1000 -command {#}] http::wait $token http::status $token } err] @@ -474,17 +464,13 @@ test http-4.15 {http::Event} { test http-5.1 {http::formatQuery} { http::formatQuery name1 value1 name2 "value two" } {name1=value1&name2=value+two} - -# test http-5.2 obsoleted by 5.4 and 5.4 with http 2.5 - +# test http-5.2 obsoleted by 5.4 and 5.5 with http 2.5 test http-5.3 {http::formatQuery} { http::formatQuery lines "line1\nline2\nline3" } {lines=line1%0d%0aline2%0d%0aline3} - test http-5.4 {http::formatQuery} { http::formatQuery name1 ~bwelch name2 \xa1\xa2\xa2 } {name1=~bwelch&name2=%c2%a1%c2%a2%c2%a2} - test http-5.5 {http::formatQuery} { set enc [http::config -urlencoding] http::config -urlencoding iso8859-1 @@ -502,19 +488,17 @@ test http-6.1 {http::ProxyRequired} { set data(body) } "HTTP/1.0 TEST

Hello, World!

-

GET http://$url

+

GET http:$url

" test http-7.1 {http::mapReply} { http::mapReply "abc\$\[\]\"\\()\}\{" } {abc%24%5b%5d%22%5c%28%29%7d%7b} - test http-7.2 {http::mapReply} { # RFC 2718 specifies that we pass urlencoding on utf-8 chars by default, # so make sure this gets converted to utf-8 then urlencoded. http::mapReply "\u2208" } {%e2%88%88} - test http-7.3 {http::formatQuery} { set enc [http::config -urlencoding] # this would be reverting to http <=2.4 behavior @@ -523,7 +507,6 @@ test http-7.3 {http::formatQuery} { http::config -urlencoding $enc set res } [list 1 "can't read \"formMap(\u2208)\": no such element in array"] - test http-7.4 {http::formatQuery} { set enc [http::config -urlencoding] # this would be reverting to http <=2.4 behavior w/o errors -- cgit v0.12 From 9111fc11c29a3c9209dfc0baf0672eaff01e6ef3 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Nov 2005 15:49:06 +0000 Subject: update changes --- changes | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/changes b/changes index befecc6..2c24194 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.27 2005/11/15 23:41:18 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.28 2005/11/18 15:49:06 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6309,4 +6309,6 @@ Restores Tcl 8.4.9 behavior (porter) 2005-11-15 (Win bug fix)[926016,1353840] correct [file mtime] (kenny) +2005-11-18 (bug fix)[1358369] URL parsing standards compliance (wu,fellows) + --- Released 8.4.12, November 30, 2005 --- See ChangeLog for details --- -- cgit v0.12 From b809fb72efb2a94910bd1a8519b3565ccfdc8911 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 18 Nov 2005 17:14:51 +0000 Subject: * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Pat Thoyts' patch for [SF Tcl Bug 1359094]. This moves the retrieval of the next channel state to the end of the loop, as the called closeproc may close other channels, i.e. modify the list we are iterating, invalidating any pointer retrieved earlier. --- ChangeLog | 8 ++++++++ generic/tclIO.c | 8 ++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14df576..5695874 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-11-18 Andreas Kupries + + * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Pat Thoyts' + patch for [SF Tcl Bug 1359094]. This moves the retrieval of the + next channel state to the end of the loop, as the called + closeproc may close other channels, i.e. modify the list we are + iterating, invalidating any pointer retrieved earlier. + 2005-11-18 Donal K. Fellows * library/http/http.tcl (http::geturl): Improved syntactic validation diff --git a/generic/tclIO.c b/generic/tclIO.c index 4cf62ad..0c56c12 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.15 2005/10/14 17:12:32 vasiljevic Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.16 2005/11/18 17:14:52 andreas_kupries Exp $ */ #include "tclInt.h" @@ -210,7 +210,6 @@ TclFinalizeIOSubsystem() for (statePtr = tsdPtr->firstCSPtr; statePtr != (ChannelState *) NULL; statePtr = nextCSPtr) { chanPtr = statePtr->topChanPtr; - nextCSPtr = statePtr->nextCSPtr; /* * Set the channel back into blocking mode to ensure that we wait @@ -273,6 +272,11 @@ TclFinalizeIOSubsystem() chanPtr->instanceData = (ClientData) NULL; statePtr->flags |= CHANNEL_DEAD; } + /* + * We look for the next pointer now in case we had one closed on up during + * the current channel's closeproc. (eg: rechan extension). [PT] + */ + nextCSPtr = statePtr->nextCSPtr; } TclpFinalizePipes(); } -- cgit v0.12 From 67ebf80a04ed5cf5b8b7ced4f57f06a132b2d452 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Nov 2005 19:27:19 +0000 Subject: * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 * tests/pkg.test: to be more forgiving of package version mismatch errors in [package ifneeded] commands. This reduces the ***POTENTIAL INCOMPATIBILITY*** noted for that change. --- ChangeLog | 7 +++++++ generic/tclPkg.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++------- tests/pkg.test | 18 +++++++++++++++++- 3 files changed, 75 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5695874..62624b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-11-18 Don Porter + + * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 + * tests/pkg.test: to be more forgiving of package version + mismatch errors in [package ifneeded] commands. This reduces the + ***POTENTIAL INCOMPATIBILITY*** noted for that change. + 2005-11-18 Andreas Kupries * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Pat Thoyts' diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 0597179..6a46981 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9.2.1 2005/11/08 18:28:56 dgp Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.2 2005/11/18 19:27:19 dgp Exp $ */ #include "tclInt.h" @@ -331,8 +331,8 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) Tcl_Release((ClientData) script); pkgPtr = FindPackage(interp, name); if (code == TCL_OK) { - Tcl_ResetResult(interp); if (pkgPtr->version == NULL) { + Tcl_ResetResult(interp); code = TCL_ERROR; Tcl_AppendResult(interp, "attempt to provide package ", name, " ", versionToProvide, @@ -340,11 +340,55 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) " provided", NULL); } else if (0 != ComparePkgVersions( pkgPtr->version, versionToProvide, NULL)) { - code = TCL_ERROR; - Tcl_AppendResult(interp, "attempt to provide package ", - name, " ", versionToProvide, " failed: package ", - name, " ", pkgPtr->version, " provided instead", - NULL); + /* At this point, it is clear that a prior + * [package ifneeded] command lied to us. It said + * that to get a particular version of a particular + * package, we needed to evaluate a particular script. + * However, we evaluated that script and got a different + * version than we were told. This is an error, and we + * ought to report it. + * + * However, we've been letting this type of error slide + * for a long time, and as a result, a lot of packages + * suffer from them. + * + * It's a bit too harsh to make a large number of + * existing packages start failing by releasing a + * new patch release, so we forgive this type of error + * for the rest of the Tcl 8.4 series, and only report + * a warning. We limit the error reporting to only + * the situation where a broken ifneeded script leads + * to a failure to satisfy the requirement. + */ + if (version) { + result = ComparePkgVersions( + pkgPtr->version, version, &satisfies); + if (result && (exact || !satisfies)) { + Tcl_ResetResult(interp); + code = TCL_ERROR; + Tcl_AppendResult(interp, + "attempt to provide package ", name, " ", + versionToProvide, " failed: package ", + name, " ", pkgPtr->version, + " provided instead", NULL); + } + } + if (code == TCL_OK) { + /* Forgiving the error, report warning instead */ + Tcl_Obj *msg = Tcl_NewStringObj( + "attempt to provide package ", -1); + Tcl_Obj *cmdPtr = Tcl_NewListObj(0, NULL); + Tcl_ListObjAppendElement(NULL, cmdPtr, + Tcl_NewStringObj("tclLog", -1)); + Tcl_AppendStringsToObj(msg, name, " ", versionToProvide, + " failed: package ", name, " ", + pkgPtr->version, " provided instead", NULL); + Tcl_ListObjAppendElement(NULL, cmdPtr, msg); + Tcl_IncrRefCount(cmdPtr); + Tcl_GlobalEvalObj(interp, cmdPtr); + Tcl_DecrRefCount(cmdPtr); + Tcl_ResetResult(interp); + } } } else if (code != TCL_ERROR) { Tcl_Obj *codePtr = Tcl_NewIntObj(code); diff --git a/tests/pkg.test b/tests/pkg.test index 74f91be..0a7833f 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.1 2005/11/08 18:28:56 dgp Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.2 2005/11/18 19:27:19 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -351,6 +351,22 @@ test pkg-2.34 {Tcl_PkgRequire: consistent return values (1162286)} -setup { package require foo 1 } -cleanup { package forget foo +} -match glob -result 1.1 -errorOutput {attempt to provide package * failed:*} +test pkg-2.34.1 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1.1 {package provide foo 1} + package require foo 1 +} -cleanup { + package forget foo +} -match glob -result 1 -errorOutput {attempt to provide package * failed:*} +test pkg-2.34.2 {Tcl_PkgRequire: consistent return values (1162286)} -setup { + package forget foo +} -body { + package ifneeded foo 1.1 {package provide foo 1} + package require foo 1.1 +} -cleanup { + package forget foo } -returnCodes error -match glob -result {attempt to provide package * failed:*} test pkg-2.35 {Tcl_PkgRequire: consistent return values (1162286)} -setup { package forget foo -- cgit v0.12 From cb651f0210eff616b6ee84c8c2146bd5f1f2f320 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 18 Nov 2005 19:38:02 +0000 Subject: * generic/tclIO.c (TclFinalizeIOSubsystem): preserve statePtr until we netrieve next statePtr from it. --- ChangeLog | 5 +++++ generic/tclIO.c | 23 +++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 62624b6..1b3cf33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-11-18 Jeff Hobbs + + * generic/tclIO.c (TclFinalizeIOSubsystem): preserve statePtr + until we netrieve next statePtr from it. + 2005-11-18 Don Porter * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 diff --git a/generic/tclIO.c b/generic/tclIO.c index 0c56c12..e0cf01a 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.16 2005/11/18 17:14:52 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.17 2005/11/18 19:38:02 hobbs Exp $ */ #include "tclInt.h" @@ -209,20 +209,19 @@ TclFinalizeIOSubsystem() for (statePtr = tsdPtr->firstCSPtr; statePtr != (ChannelState *) NULL; statePtr = nextCSPtr) { - chanPtr = statePtr->topChanPtr; + chanPtr = statePtr->topChanPtr; /* * Set the channel back into blocking mode to ensure that we wait * for all data to flush out. */ - + (void) Tcl_SetChannelOption(NULL, (Tcl_Channel) chanPtr, "-blocking", "on"); if ((chanPtr == (Channel *) tsdPtr->stdinChannel) || (chanPtr == (Channel *) tsdPtr->stdoutChannel) || (chanPtr == (Channel *) tsdPtr->stderrChannel)) { - /* * Decrement the refcount which was earlier artificially bumped * up to keep the channel from being closed. @@ -231,6 +230,11 @@ TclFinalizeIOSubsystem() statePtr->refCount--; } + /* + * Preserve statePtr from disappearing until we can get the + * nextCSPtr below. + */ + Tcl_Preserve(statePtr); if (statePtr->refCount <= 0) { /* @@ -240,9 +244,7 @@ TclFinalizeIOSubsystem() */ (void) Tcl_Close((Tcl_Interp *) NULL, (Tcl_Channel) chanPtr); - } else { - /* * The refcount is greater than zero, so flush the channel. */ @@ -253,7 +255,7 @@ TclFinalizeIOSubsystem() * Call the device driver to actually close the underlying * device for this channel. */ - + if (chanPtr->typePtr->closeProc != TCL_CLOSE2PROC) { (chanPtr->typePtr->closeProc)(chanPtr->instanceData, (Tcl_Interp *) NULL); @@ -273,11 +275,12 @@ TclFinalizeIOSubsystem() statePtr->flags |= CHANNEL_DEAD; } /* - * We look for the next pointer now in case we had one closed on up during - * the current channel's closeproc. (eg: rechan extension). [PT] + * We look for the next pointer now in case we had one closed on up + * during the current channel's closeproc (eg: rechan extension) */ nextCSPtr = statePtr->nextCSPtr; - } + Tcl_Release(statePtr); + } TclpFinalizePipes(); } -- cgit v0.12 From c97535ea03fe482ec1293e11b276eb40fd2faeb8 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Fri, 18 Nov 2005 23:07:26 +0000 Subject: * generic/tclBasic.c (Tcl_DeleteCommandFromToken): * generic/tclCmdMZ.c (TraceCommandProc): * generic/tclInt.h (NS_KILLED): * generic/tclNamesp.c (Tcl_DeleteNamespace * tests/namespace.test (namespace-7.3-6): * tests/trace.test (trace-20.13-16): fix [Bugs 1355942/1355342]. --- ChangeLog | 9 +++++++++ generic/tclBasic.c | 16 ++++++++-------- generic/tclCmdMZ.c | 11 ++++++++++- generic/tclInt.h | 5 ++++- generic/tclNamesp.c | 21 +++++++++++++-------- tests/namespace.test | 34 +++++++++++++++++++++++++++++++++- tests/trace.test | 23 ++++++++++++++++++++++- 7 files changed, 99 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1b3cf33..afba03a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-11-18 Miguel Sofer + + * generic/tclBasic.c (Tcl_DeleteCommandFromToken): + * generic/tclCmdMZ.c (TraceCommandProc): + * generic/tclInt.h (NS_KILLED): + * generic/tclNamesp.c (Tcl_DeleteNamespace + * tests/namespace.test (namespace-7.3-6): + * tests/trace.test (trace-20.13-16): fix [Bugs 1355942/1355342]. + 2005-11-18 Jeff Hobbs * generic/tclIO.c (TclFinalizeIOSubsystem): preserve statePtr diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 4871844..b3474bb 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.18 2005/10/23 22:01:28 msofer Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.19 2005/11/18 23:07:26 msofer Exp $ */ #include "tclInt.h" @@ -2431,6 +2431,13 @@ Tcl_DeleteCommandFromToken(interp, cmd) cmdPtr->flags |= CMD_IS_DELETED; /* + * Bump the command epoch counter. This will invalidate all cached + * references that point to this command. + */ + + cmdPtr->cmdEpoch++; + + /* * Call trace procedures for the command being deleted. Then delete * its traces. */ @@ -2485,13 +2492,6 @@ Tcl_DeleteCommandFromToken(interp, cmd) } /* - * Bump the command epoch counter. This will invalidate all cached - * references that point to this command. - */ - - cmdPtr->cmdEpoch++; - - /* * If this command was imported into other namespaces, then imported * commands were created that refer back to this command. Delete these * imported commands now. diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index ea272b7..9aaa6cb 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.24 2005/11/08 14:53:12 dkf Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.25 2005/11/18 23:07:27 msofer Exp $ */ #include "tclInt.h" @@ -4167,9 +4167,18 @@ TraceCommandProc(clientData, interp, oldName, newName, flags) * Remove the trace since TCL_TRACE_DESTROYED tells us to, or the * command we're tracing has just gone away. Then decrement the * clientData refCount that was set up by trace creation. + * + * Note that we save the (return) state of the interpreter to prevent + * bizarre error messages. */ + + Tcl_SaveResult(interp, &state); + stateCode = iPtr->returnCode; Tcl_UntraceCommand(interp, oldName, untraceFlags, TraceCommandProc, clientData); + Tcl_RestoreResult(interp, &state); + iPtr->returnCode = stateCode; + tcmdPtr->refCount--; } tcmdPtr->refCount--; diff --git a/generic/tclInt.h b/generic/tclInt.h index 60fe1d8..014ba06 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.19 2005/11/04 01:15:20 msofer Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.20 2005/11/18 23:07:27 msofer Exp $ */ #ifndef _TCLINT @@ -270,10 +270,13 @@ typedef struct Namespace { * in any byte code code unit that refers to the namespace has * been freed (i.e., when the namespace's refCount is 0), the * namespace's storage will be freed. + * NS_KILLED 1 means that TclTeardownNamespace has already been called on + * this namespace and it should not be called again [Bug 1355942] */ #define NS_DYING 0x01 #define NS_DEAD 0x02 +#define NS_KILLED 0x04 /* * Flag passed to TclGetNamespaceForQualName to have it create all namespace diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 029051c..0400c1e 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.9 2005/11/04 01:15:20 msofer Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.10 2005/11/18 23:07:27 msofer Exp $ */ #include "tclInt.h" @@ -612,13 +612,17 @@ Tcl_DeleteNamespace(namespacePtr) } } nsPtr->parentPtr = NULL; - } else { + } else if (!(nsPtr->flags & NS_KILLED)) { /* * Delete the namespace and everything in it. If this is the global * namespace, then clear it but don't free its storage unless the - * interpreter is being torn down. + * interpreter is being torn down. Set the NS_KILLED flag to avoid + * recursive calls here - if the namespace is really in the process of + * being deleted, ignore any second call. */ + nsPtr->flags |= (NS_DYING|NS_KILLED); + TclTeardownNamespace(nsPtr); if ((nsPtr != globalNsPtr) || (iPtr->flags & DELETED)) { @@ -2048,11 +2052,12 @@ Tcl_FindCommand(interp, name, contextNsPtr, flags) if ((nsPtr[search] != NULL) && (simpleName != NULL)) { entryPtr = Tcl_FindHashEntry(&nsPtr[search]->cmdTable, simpleName); - if (entryPtr != NULL) { - cmdPtr = (Command *) Tcl_GetHashValue(entryPtr); - } - } + if (entryPtr != NULL) { + cmdPtr = (Command *) Tcl_GetHashValue(entryPtr); + } + } } + if (cmdPtr != NULL) { return (Tcl_Command) cmdPtr; } else if (flags & TCL_LEAVE_ERR_MSG) { @@ -2887,7 +2892,7 @@ NamespaceDeleteCmd(dummy, interp, objc, objv) name = Tcl_GetString(objv[i]); namespacePtr = Tcl_FindNamespace(interp, name, (Tcl_Namespace *) NULL, /*flags*/ 0); - if (namespacePtr == NULL) { + if (namespacePtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "unknown namespace \"", Tcl_GetString(objv[i]), "\" in namespace delete command", (char *) NULL); diff --git a/tests/namespace.test b/tests/namespace.test index 9887ddc..2c36171 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21.2.7 2005/11/08 18:28:56 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.8 2005/11/18 23:07:27 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -133,6 +133,38 @@ test namespace-7.2 {Tcl_DeleteNamespace, no active call frames in ns} { } list [test_ns_2::p] [namespace delete test_ns_2] } {::test_ns_2 {}} +test namespace-7.3 {recursive Tcl_DeleteNamespace, active call frames in ns} { + # [Bug 1355942] + namespace eval test_ns_2 { + set x 1 + trace add variable x unset "namespace delete [namespace current];#" + namespace delete [namespace current] + } +} {} +test namespace-7.4 {recursive Tcl_DeleteNamespace, active call frames in ns} { + # [Bug 1355942] + namespace eval test_ns_2 { + proc x {} {} + trace add command x delete "namespace delete [namespace current];#" + namespace delete [namespace current] + } +} {} +test namespace-7.5 {recursive Tcl_DeleteNamespace, no active call frames in ns} { + # [Bug 1355942] + namespace eval test_ns_2 { + set x 1 + trace add variable x unset "namespace delete [namespace current];#" + } + namespace delete test_ns_2 +} {} +test namespace-7.6 {recursive Tcl_DeleteNamespace, no active call frames in ns} { + # [Bug 1355942] + namespace eval test_ns_2 { + proc x {} {} + trace add command x delete "namespace delete [namespace current];#" + } + namespace delete test_ns_2 +} {} test namespace-8.1 {TclTeardownNamespace, delete global namespace} { catch {interp delete test_interp} diff --git a/tests/trace.test b/tests/trace.test index 4eba508..91cc98b 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.12 2005/11/07 10:28:01 msofer Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.13 2005/11/18 23:07:27 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1481,6 +1481,27 @@ test trace-20.12 {delete trace renames command} { list [info commands foo] [info commands bar] [info commands someothername] } {{} {} {}} +test trace-20.13 {rename trace discards result [Bug 1355342]} { + proc foo {} {} + trace add command foo rename {set w Aha!;#} + list [rename foo bar] [rename bar {}] +} {{} {}} +test trace-20.14 {rename trace discards error result [Bug 1355342]} { + proc foo {} {} + trace add command foo rename {error} + list [rename foo bar] [rename bar {}] +} {{} {}} +test trace-20.15 {delete trace discards result [Bug 1355342]} { + proc foo {} {} + trace add command foo delete {set w Aha!;#} + rename foo {} +} {} +test trace-20.16 {delete trace discards error result [Bug 1355342]} { + proc foo {} {} + trace add command foo delete {error} + rename foo {} +} {} + proc foo {b} { set a $b } -- cgit v0.12 From d97668ebc72a19373c62850e8b3e461c428c8f92 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Fri, 18 Nov 2005 23:44:37 +0000 Subject: * tests/trace.test (trace-34.5): [Bug 1047286], added a second test illustrating the role of "ns in callStack" in the ns's visibility during deletion traces. --- ChangeLog | 4 ++++ tests/trace.test | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index afba03a..2838024 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-11-18 Miguel Sofer + * tests/trace.test (trace-34.5): [Bug 1047286], added a second + test illustrating the role of "ns in callStack" in the ns's + visibility during deletion traces. + * generic/tclBasic.c (Tcl_DeleteCommandFromToken): * generic/tclCmdMZ.c (TraceCommandProc): * generic/tclInt.h (NS_KILLED): diff --git a/tests/trace.test b/tests/trace.test index 91cc98b..4409fe1 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.13 2005/11/18 23:07:27 msofer Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.14 2005/11/18 23:44:37 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -2267,10 +2267,12 @@ test trace-34.3 {Bug 1224585} { foo } {} +# We test here for the half-documented and currently valid interplay between +# delete traces and namespace deletion. test trace-34.4 {Bug 1047286} { variable x notrace proc callback {old - -} { - variable x "$old exists: [namespace which -command $old]" + variable x "$old exists: [namespace which -command $old]" } namespace eval ::foo {proc bar {} {}} trace add command ::foo::bar delete [namespace code callback] @@ -2278,6 +2280,17 @@ test trace-34.4 {Bug 1047286} { set x } {::foo::bar exists: ::foo::bar} +test trace-34.5 {Bug 1047286} { + variable x notrace + proc callback {old - -} { + variable x "$old exists: [namespace which -command $old]" + } + namespace eval ::foo {proc bar {} {}} + trace add command ::foo::bar delete [namespace code callback] + namespace eval ::foo namespace delete ::foo + set x +} {::foo::bar exists: } + # Delete procedures when done, so we don't clash with other tests # (e.g. foobar will clash with 'unknown' tests). catch {rename foobar {}} -- cgit v0.12 From 697fc6f988df717f0b7b05f1054f0e79ccf6c15e Mon Sep 17 00:00:00 2001 From: jenglish Date: Sun, 20 Nov 2005 18:23:03 +0000 Subject: Don't set tclStubsPtr to 0 when Tcl_PkgRequireEx() fails [Fix for #1091431 "Tcl_InitStubs failure crashes wish"] --- ChangeLog | 6 ++++++ generic/tclStubLib.c | 12 ++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2838024..0c5ff97 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-11-20 Joe English + + * generic/tclStubLib.c: Don't set tclStubsPtr to 0 when + Tcl_PkgRequireEx() fails [Fix for #1091431 "Tcl_InitStubs failure + crashes wish"] + 2005-11-18 Miguel Sofer * tests/trace.test (trace-34.5): [Bug 1047286], added a second diff --git a/generic/tclStubLib.c b/generic/tclStubLib.c index c650dac..466a003 100644 --- a/generic/tclStubLib.c +++ b/generic/tclStubLib.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubLib.c,v 1.6 2002/12/04 07:07:59 hobbs Exp $ + * RCS: @(#) $Id: tclStubLib.c,v 1.6.2.1 2005/11/20 18:23:03 jenglish Exp $ */ /* @@ -33,9 +33,6 @@ * functions should be built as non-exported symbols. */ -#undef TCL_STORAGE_CLASS -#define TCL_STORAGE_CLASS DLLEXPORT - TclStubs *tclStubsPtr = NULL; TclPlatStubs *tclPlatStubsPtr = NULL; TclIntStubs *tclIntStubsPtr = NULL; @@ -87,7 +84,7 @@ Tcl_InitStubs (interp, version, exact) int exact; { CONST char *actualVersion = NULL; - TclStubs *tmp; + ClientData pkgData = NULL; /* * We can't optimize this check by caching tclStubsPtr because @@ -100,12 +97,11 @@ Tcl_InitStubs (interp, version, exact) return NULL; } - actualVersion = Tcl_PkgRequireEx(interp, "Tcl", version, exact, - (ClientData *) &tmp); + actualVersion = Tcl_PkgRequireEx(interp, "Tcl", version, exact, &pkgData); if (actualVersion == NULL) { - tclStubsPtr = NULL; return NULL; } + tclStubsPtr = (TclStubs*)pkgData; if (tclStubsPtr->hooks) { tclPlatStubsPtr = tclStubsPtr->hooks->tclPlatStubs; -- cgit v0.12 From 6ac7a57e2334ef01629b511af9388158bb0d1034 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 21 Nov 2005 18:31:42 +0000 Subject: update changes --- changes | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/changes b/changes index 2c24194..46d3109 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.28 2005/11/18 15:49:06 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.29 2005/11/21 18:31:42 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6302,7 +6302,7 @@ Restores Tcl 8.4.9 behavior (porter) 2005-11-08 (bug fix)[1348775] unset trace memory leak (sofer) -2005-11-08 (bug fix)[1162286] [package ifneeded] errors reported (lavana,porter) +2005-11-08 (bug fix)[1162286] [package ifneeded] warns reported (lavana,porter) *** POTENTIAL INCOMPATIBILITY *** 2005-11-09 (bug fix)[1350293] [after $negative $script] fixed (kenny) @@ -6311,4 +6311,10 @@ Restores Tcl 8.4.9 behavior (porter) 2005-11-18 (bug fix)[1358369] URL parsing standards compliance (wu,fellows) +2005-11-18 (bug fix)[1359094] Tclkit crash (thoyts, kupries) + +2005-11-18 (bug fix)[1355942,1355342] cmd delete trace/ namespace delete (sofer) + +2005-11-20 (bug fix)[1091431] Tcl_InitStubs failure crashes wish (english) + --- Released 8.4.12, November 30, 2005 --- See ChangeLog for details --- -- cgit v0.12 From ba70aa95d3d6bd4d0fd9fdd2292fdf970a08c1ae Mon Sep 17 00:00:00 2001 From: das Date: Sun, 27 Nov 2005 02:34:41 +0000 Subject: * unix/tcl.m4 (Darwin): add 64bit support, check for Tiger copyfile(), add CFLAGS to SHLIB_LD to support passing -isysroot in env(CFLAGS) to configure (flag can't be present twice, so can't be in both CFLAGS and LDFLAGS during configure), don't use -prebind when deploying on 10.4, define TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING (rdar://3171542). (SC_ENABLE_LANGINFO, SC_TIME_HANDLER): add/fix caching, fix obsolete autoconf macros. Sync with tk/unix/tcl.m4, sync whitespace with HEAD. * unix/configure.in: fix obsolete autoconf macros, sync gratuitous formatting/ordering differences with tk/unix/configure.in. * unix/Makefile.in: add CFLAGS to tclsh/tcltest link to make executable linking the same as during configure (needed to avoid loosing any linker relevant flags in CFLAGS, in particular flags that can't be in LDFLAGS). Avoid concurrent linking of tclsh and compiling of tclTestInit.o or xtTestInit.o during parallel make. (checkstubs, checkdoc, checkexports): dependency and Darwin fixes * unix/tclLoadDyld.c (TclpDlopen): use NSADDIMAGE_OPTION_WITH_SEARCHING on second NSAddImage only. [Bug 1204237] (TclGuessPackageName): should not be MODULE_SCOPE. (TclpLoadMemory): ppc64 and endian (i386) fixes, add support for loading universal (fat) bundles from memory. * unix/tclUnixPort.h: * unix/tclUnixFCmd.c: add support for new Tiger copyfile() API to enable copying of xattrs & ACLs by [file copy]. * generic/tcl.h: add Darwin specifc configure overrides for TCL_WIDE defines to support fat compiles of ppc and ppc64 at the same time, (replaces Darwin CVS fix by emoy, rdar://3693001). add/correct location of version numbers in macosx files. * generic/tclInt.h: clarify fat compile comment. * unix/tclUnixPort.h: add Darwin specifc configure overrides to support fat compiles, where configure runs only once for multiple architectures (replaces Darwin CVS fix by emoy, rdar://3693001). * macosx/tclMacOSXBundle.c: * macosx/tclMacOSXNotify.c: * unix/tclUnixNotfy.c: * unix/tclUnixPort.h: fix #include order to support compile time override of HAVE_COREFOUNDATION in tclUnixPort.h when building for ppc64 * macosx/Tcl.pbproj/default.pbxuser (new file): * macosx/Tcl.pbproj/jingham.pbxuser: * macosx/Tcl.pbproj/project.pbxproj: sync with HEAD. * macosx/README: clarification/cleanup, sync with HEAD, document universal (fat) builds via CFLAGS (i.e. all of ppc ppc64 i386 at once). * macosx/Makefile: add support for reusing configure cache, build target fixes, remove GENERIC_FLAGS override now handled by tcl.m4. * generic/tclIOUtil.c: * generic/tclRegexp.c: * generic/tclVar.c: declare globals used only in own file as static (sync with HEAD). * generic/rege_dfa.c (getvacant): * generic/regexec.c (cfind): * generic/tclCompExpr.c (CompileSubExpr): * unix/tclUnixChan.c (TclUnixWaitForFile): initialise variables to silence gcc 4 warnings. * generic/regguts.h: only #define NDEBUG if not already #defined. * macosx/tclMacOSXNotify.c: sync whitespace & comments with HEAD * unix/configure: regen. --- ChangeLog | 76 +- generic/rege_dfa.c | 2 +- generic/regexec.c | 2 +- generic/regguts.h | 2 + generic/tcl.h | 20 +- generic/tclCompExpr.c | 5 +- generic/tclIOUtil.c | 4 +- generic/tclInt.h | 6 +- generic/tclRegexp.c | 4 +- generic/tclVar.c | 8 +- macosx/Makefile | 14 +- macosx/README | 142 +- macosx/Tcl.pbproj/default.pbxuser | 173 + macosx/Tcl.pbproj/jingham.pbxuser | 154 +- macosx/Tcl.pbproj/project.pbxproj | 354 +- macosx/tclMacOSXBundle.c | 4 +- macosx/tclMacOSXNotify.c | 519 +-- unix/Makefile.in | 30 +- unix/configure | 6646 +++++++++++++++++++------------------ unix/configure.in | 47 +- unix/tcl.m4 | 129 +- unix/tclLoadDyld.c | 67 +- unix/tclUnixChan.c | 4 +- unix/tclUnixFCmd.c | 8 +- unix/tclUnixNotfy.c | 6 +- unix/tclUnixPort.h | 35 +- 26 files changed, 4646 insertions(+), 3815 deletions(-) create mode 100644 macosx/Tcl.pbproj/default.pbxuser diff --git a/ChangeLog b/ChangeLog index 0c5ff97..654d986 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,77 @@ +2005-11-27 Daniel Steffen + + * unix/tcl.m4 (Darwin): add 64bit support, check for Tiger copyfile(), + add CFLAGS to SHLIB_LD to support passing -isysroot in env(CFLAGS) to + configure (flag can't be present twice, so can't be in both CFLAGS and + LDFLAGS during configure), don't use -prebind when deploying on 10.4, + define TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING (rdar://3171542). + (SC_ENABLE_LANGINFO, SC_TIME_HANDLER): add/fix caching, fix obsolete + autoconf macros. Sync with tk/unix/tcl.m4, sync whitespace with HEAD. + + * unix/configure.in: fix obsolete autoconf macros, sync gratuitous + formatting/ordering differences with tk/unix/configure.in. + + * unix/Makefile.in: add CFLAGS to tclsh/tcltest link to make executable + linking the same as during configure (needed to avoid loosing any linker + relevant flags in CFLAGS, in particular flags that can't be in LDFLAGS). + Avoid concurrent linking of tclsh and compiling of tclTestInit.o or + xtTestInit.o during parallel make. + (checkstubs, checkdoc, checkexports): dependency and Darwin fixes + + * unix/tclLoadDyld.c (TclpDlopen): use NSADDIMAGE_OPTION_WITH_SEARCHING + on second NSAddImage only. [Bug 1204237] + (TclGuessPackageName): should not be MODULE_SCOPE. + (TclpLoadMemory): ppc64 and endian (i386) fixes, add support for loading + universal (fat) bundles from memory. + + * unix/tclUnixPort.h: + * unix/tclUnixFCmd.c: add support for new Tiger copyfile() API to enable + copying of xattrs & ACLs by [file copy]. + + * generic/tcl.h: add Darwin specifc configure overrides for TCL_WIDE + defines to support fat compiles of ppc and ppc64 at the same time, + (replaces Darwin CVS fix by emoy, rdar://3693001). + add/correct location of version numbers in macosx files. + + * generic/tclInt.h: clarify fat compile comment. + + * unix/tclUnixPort.h: add Darwin specifc configure overrides to support + fat compiles, where configure runs only once for multiple architectures + (replaces Darwin CVS fix by emoy, rdar://3693001). + + * macosx/tclMacOSXBundle.c: + * macosx/tclMacOSXNotify.c: + * unix/tclUnixNotfy.c: + * unix/tclUnixPort.h: fix #include order to support compile time + override of HAVE_COREFOUNDATION in tclUnixPort.h when building for ppc64 + + * macosx/Tcl.pbproj/default.pbxuser (new file): + * macosx/Tcl.pbproj/jingham.pbxuser: + * macosx/Tcl.pbproj/project.pbxproj: sync with HEAD. + + * macosx/README: clarification/cleanup, sync with HEAD, document + universal (fat) builds via CFLAGS (i.e. all of ppc ppc64 i386 at once). + + * macosx/Makefile: add support for reusing configure cache, build target + fixes, remove GENERIC_FLAGS override now handled by tcl.m4. + + * generic/tclIOUtil.c: + * generic/tclRegexp.c: + * generic/tclVar.c: declare globals used only in own file as static + (sync with HEAD). + + * generic/rege_dfa.c (getvacant): + * generic/regexec.c (cfind): + * generic/tclCompExpr.c (CompileSubExpr): + * unix/tclUnixChan.c (TclUnixWaitForFile): initialise variables to + silence gcc 4 warnings. + + * generic/regguts.h: only #define NDEBUG if not already #defined. + + * macosx/tclMacOSXNotify.c: sync whitespace & comments with HEAD + + * unix/configure: regen. + 2005-11-20 Joe English * generic/tclStubLib.c: Don't set tclStubsPtr to 0 when @@ -69,7 +143,7 @@ that file times will appear different in Tcl from the way they do in Windows Explorer or a 'dir' listing, because the Microsoft tools get the DST state wrong in the listings. - + 2005-11-09 Kevin B. Kenny * generic/tclTimer.c: Changed [after] so that it behaves correctly diff --git a/generic/rege_dfa.c b/generic/rege_dfa.c index 313892c..bc391fd 100644 --- a/generic/rege_dfa.c +++ b/generic/rege_dfa.c @@ -561,7 +561,7 @@ chr *start; struct sset *ss; struct sset *p; struct arcp ap; - struct arcp lastap; + struct arcp lastap = {NULL, 0}; /* silence gcc 4 warning */ color co; ss = pickss(v, d, cp, start); diff --git a/generic/regexec.c b/generic/regexec.c index 41d49bd..3eb73d1 100644 --- a/generic/regexec.c +++ b/generic/regexec.c @@ -349,7 +349,7 @@ struct colormap *cm; { struct dfa *s; struct dfa *d; - chr *cold; + chr *cold = NULL; /* silence gcc 4 warning */ int ret; s = newdfa(v, &v->g->search, cm, &v->dfa1); diff --git a/generic/regguts.h b/generic/regguts.h index 36e5092..b6152f4 100644 --- a/generic/regguts.h +++ b/generic/regguts.h @@ -55,8 +55,10 @@ /* assertions */ #ifndef assert # ifndef REG_DEBUG +# ifndef NDEBUG # define NDEBUG /* no assertions */ # endif +# endif #include #endif diff --git a/generic/tcl.h b/generic/tcl.h index 51dba46..4c2d7ed 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.20 2005/11/16 22:05:26 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.21 2005/11/27 02:34:41 das Exp $ */ #ifndef _TCL @@ -46,7 +46,8 @@ extern "C" { * win/makefile.vc (not patchlevel) 2 LOC * README (sections 0 and 2) * mac/README (2 LOC, not patchlevel) - * macosx/Tcl.pbproj/project.pbxproj (not patchlevel) 2 LOC + * macosx/Tcl.pbproj/project.pbxproj (not patchlevel) 1 LOC + * macosx/Tcl.pbproj/default.pbxuser (not patchlevel) 1 LOC * win/README.binary (sections 0-4) * win/README (not patchlevel) (sections 0 and 2) * unix/tcl.spec (2 LOC Major/Minor, 1 LOC patch) @@ -328,6 +329,21 @@ typedef long LONG; #endif /* + * Darwin specifc configure overrides (to support fat compiles, where + * configure runs only once for multiple architectures): + */ + +#ifdef __APPLE__ +# ifdef __LP64__ +# undef TCL_WIDE_INT_TYPE +# define TCL_WIDE_INT_IS_LONG 1 +# else /* !__LP64__ */ +# define TCL_WIDE_INT_TYPE long long +# undef TCL_WIDE_INT_IS_LONG +# endif /* __LP64__ */ +#endif /* __APPLE__ */ + +/* * Define Tcl_WideInt to be a type that is (at least) 64-bits wide, * and define Tcl_WideUInt to be the unsigned variant of that type * (assuming that where we have one, we can have the other.) diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index 68e1e11..bedf35d 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompExpr.c,v 1.13.2.1 2005/08/03 22:23:35 dgp Exp $ + * RCS: @(#) $Id: tclCompExpr.c,v 1.13.2.2 2005/11/27 02:34:41 das Exp $ */ #include "tclInt.h" @@ -338,7 +338,8 @@ CompileSubExpr(exprTokenPtr, infoPtr, envPtr) CompileEnv *envPtr; /* Holds resulting instructions. */ { Tcl_Interp *interp = infoPtr->interp; - Tcl_Token *tokenPtr, *endPtr, *afterSubexprPtr; + Tcl_Token *tokenPtr, *endPtr = NULL; /* silence gcc 4 warning */ + Tcl_Token *afterSubexprPtr; OperatorDesc *opDescPtr; Tcl_HashEntry *hPtr; CONST char *operator; diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 50882ec..73f824d 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.22 2005/10/05 04:27:38 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.23 2005/11/27 02:34:41 das Exp $ */ #include "tclInt.h" @@ -4592,7 +4592,7 @@ static int FindSplitPos _ANSI_ARGS_((char *path, char *separator)); * Define the 'path' object type, which Tcl uses to represent * file paths internally. */ -Tcl_ObjType tclFsPathType = { +static Tcl_ObjType tclFsPathType = { "path", /* name */ FreeFsPathInternalRep, /* freeIntRepProc */ DupFsPathInternalRep, /* dupIntRepProc */ diff --git a/generic/tclInt.h b/generic/tclInt.h index 014ba06..64a6bbe 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.20 2005/11/18 23:07:27 msofer Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.21 2005/11/27 02:34:41 das Exp $ */ #ifndef _TCLINT @@ -53,8 +53,8 @@ /* * Ensure WORDS_BIGENDIAN is defined correcly: - * Needs to happen here in addition to configure to work with - * fat compiles on Darwin (i.e. ppc and i386 at the same time). + * Needs to happen here in addition to configure to work with fat compiles on + * Darwin (where configure runs only once for multiple architectures). */ #ifdef HAVE_SYS_TYPES_H diff --git a/generic/tclRegexp.c b/generic/tclRegexp.c index 3722278..276ea55 100644 --- a/generic/tclRegexp.c +++ b/generic/tclRegexp.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclRegexp.c,v 1.14 2002/01/17 03:03:12 dgp Exp $ + * RCS: @(#) $Id: tclRegexp.c,v 1.14.4.1 2005/11/27 02:34:41 das Exp $ */ #include "tclInt.h" @@ -105,7 +105,7 @@ static int SetRegexpFromAny _ANSI_ARGS_((Tcl_Interp *interp, * of the compiled form of the regular expression. */ -Tcl_ObjType tclRegexpType = { +static Tcl_ObjType tclRegexpType = { "regexp", /* name */ FreeRegexpInternalRep, /* freeIntRepProc */ DupRegexpInternalRep, /* dupIntRepProc */ diff --git a/generic/tclVar.c b/generic/tclVar.c index 5945bfb..c926e4e 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.10 2005/11/04 01:15:20 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.11 2005/11/27 02:34:41 das Exp $ */ #include "tclInt.h" @@ -111,17 +111,17 @@ static Tcl_UpdateStringProc UpdateParsedVarName; * it is a scalar variable */ -Tcl_ObjType tclLocalVarNameType = { +static Tcl_ObjType tclLocalVarNameType = { "localVarName", FreeLocalVarName, DupLocalVarName, UpdateLocalVarName, NULL }; -Tcl_ObjType tclNsVarNameType = { +static Tcl_ObjType tclNsVarNameType = { "namespaceVarName", FreeNsVarName, DupNsVarName, NULL, NULL }; -Tcl_ObjType tclParsedVarNameType = { +static Tcl_ObjType tclParsedVarNameType = { "parsedVarName", FreeParsedVarName, DupParsedVarName, UpdateParsedVarName, NULL }; diff --git a/macosx/Makefile b/macosx/Makefile index 105ac08..39779db 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -4,7 +4,7 @@ # uses the standard unix build system in tcl/unix (which can be used directly instead of this # if you are not using the tk/macosx projects). # -# RCS: @(#) $Id: Makefile,v 1.5.2.13 2005/06/03 08:53:12 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.14 2005/11/27 02:34:41 das Exp $ # ######################################################################################################## @@ -89,7 +89,7 @@ UNIX_DIR := ${CURDIR}/../unix VERSION := $(shell awk -F= '/^TCL_VERSION/ {print $$2; nextfile}' ${UNIX_DIR}/configure.in) TCLSH := tclsh${VERSION} -BUILD_TARGET := tclsh tcltest +BUILD_TARGET := all tcltest INSTALL_TARGET := install export CPPROG := cp -p @@ -108,7 +108,7 @@ endif MAKE_VARS := INSTALL_ROOT INSTALL_TARGETS VERSION GENERIC_FLAGS MAKE_ARGS_V = $(foreach v,${MAKE_VARS},$v='${$v}') -build-${PROJECT}: target = ${TARGET} +build-${PROJECT}: target = ${BUILD_TARGET} install-${PROJECT}: target = ${INSTALL_TARGET} clean-${PROJECT} distclean-${PROJECT} test-${PROJECT}: \ target = $* @@ -121,11 +121,13 @@ DO_MAKE = +${MAKE} -C ${OBJ_DIR} ${target} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA ${PROJECT}: ${MAKE} install-${PROJECT} INSTALL_ROOT=${OBJ_DIR}/ -${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure - mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && ${UNIX_DIR}/configure \ +${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure \ + ${UNIX_DIR}/tclConfig.sh.in Tcl-Info.plist.in + mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && \ + if [ ${UNIX_DIR}/configure -nt config.status ]; then ${UNIX_DIR}/configure \ --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} \ --mandir=${MANDIR} --enable-threads --enable-framework \ - ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} + ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS}; else ./config.status; fi build-${PROJECT}: ${OBJ_DIR}/Makefile ${DO_MAKE} diff --git a/macosx/README b/macosx/README index 7c0d4ee..46469cb 100644 --- a/macosx/README +++ b/macosx/README @@ -1,107 +1,123 @@ -Tcl MacOSX README +Tcl Mac OS X README ----------------- -RCS: @(#) $Id: README,v 1.1.2.3 2005/05/24 04:20:08 das Exp $ +RCS: @(#) $Id: README,v 1.1.2.4 2005/11/27 02:34:41 das Exp $ -This is the README file for the Mac OS X native version of Tcl (framework build). +This is the README file for the Mac OS X/Darwin version of Tcl. -1. General ----------- +1. Where to go for support +-------------------------- -- The tcl-mac mailing list on sourceforge is the canonical place for questions +- The tcl-mac mailing list on sourceforge is the best place to ask questions specific to Tcl & Tk on Mac OS X: http://lists.sourceforge.net/lists/listinfo/tcl-mac (this page also has a link to searchable archives of the list, please check them before asking on the list, many questions have already been answered). -- For general tcl/tk questions, the newsgroup comp.lang.tcl is your best bet, -but also check the Tcl'ers Wiki for a wealth of information: - http://wiki.tcl.tk/ +- For general Tcl/Tk questions, the newsgroup comp.lang.tcl is your best bet: + http://groups.google.com/group/comp.lang.tcl/ -- The wiki has a page listing known bugs in Mac OS X Tcl/Tk (and other tips) - http://wiki.tcl.tk/MacOS%20X -as well as a page with info on building Tcl/Tk on Mac OS X - http://wiki.tcl.tk/Steps%20to%20build%20Tcl/Tk%208.4.0%20on%20MacOS%20X +- The Tcl'ers Wiki also has many pages dealing with Tcl & Tk on Mac OS X, see + http://wiki.tcl.tk/references/3753! + http://wiki.tcl.tk/references/8361! -- You should report bugs to the sourceforge bug trackers as usual: - Tcl: https://sourceforge.net/tracker/?func=add&group_id=10894&atid=110894 - Tk: https://sourceforge.net/tracker/?func=add&group_id=12997&atid=112997 -please make sure that your report Tk specific bugs to the tktoolkit bug -tracker and not the tcl one. +- Please report bugs with Tcl or Tk on Mac OS X to the sourceforge bug trackers: + Tcl: http://sf.net/tracker/?func=add&group_id=10894&atid=110894 + Tk: http://sf.net/tracker/?func=add&group_id=12997&atid=112997 +please make sure that your report Tk specific bugs to the tktoolkit project bug +tracker rather than the tcl project bug tracker. +Mac OS X specific bugs should usually be assigned to 'das' or 'wolfsuit'. -2. Using Tcl on MacOSX ----------------------- +2. Using Tcl on Mac OS X +------------------------ -- Mac OS X 10.2 (or higher) is required to run Tcl on MacOSX. +- At a minimum, Mac OS X 10.1 is required to run Tcl, but OS X 10.3 or higher is +recommended (certain [file] operations behave incorrectly on earlier releases). -- Tcl built on Mac OS X 10.3 or higher will not run on 10.2 due to missing -symbols in libSystem, however Tcl built on 10.2 will run on 10.3 (but without -prebinding and other optimizations). +- Tcl built on Mac OS X 10.x will not run on 10.y for y < x, on the other hand +Tcl built on 10.y will run on 10.x for y < x (but without any of the fixes and +optimizations that would be available in a binary built on 10.x). -- Tcl extensions will be found in any of: +- Tcl extensions can be installed in any of: $HOME/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl $HOME/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks (searched in that order). Given a potential package directory $pkg, Tcl on OSX checks for the file $pkg/Resources/Scripts/pkgIndex.tcl as well as the usual $pkg/pkgIndex.tcl. -This allows building extensions as frameworks with all script files contained -in the Resources/Scripts directory of the framework. +This allows building extensions as frameworks with all script files contained in +the Resources/Scripts directory of the framework. -- The Tcl framework contains documentation in html format in the -standard location for frameworks: +- [load]able binary extensions can linked as either ordinary shared libraries +(.dylib) or as MachO bundles (since 8.4.10/8.5a3); only bundles can be unloaded, +and bundles are also loaded more efficiently from VFS (no temporary copy to the +native filesystem required). + +- The 'deploy' target of macosx/Makefile installs the html manpages into the +standard documentation location in the Tcl framework: Tcl.framework/Resources/Documentation/Reference/Tcl -No manpages are installed by default. +No nroff manpages are installed by default by the Makefile. -- the framework Tcl.framework can be placed in any of the system's standard +- The Tcl framework can be installed in any of the system's standard framework directories: $HOME/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks -and /usr/bin/tclsh will work. - -- the format of binary extensions expected by [load] is that of ordinary shared -libraries (.dylib) and not MachO bundles, at present loading of MachO bundles is -not supported. -3. Building Tcl.framework -------------------------- +3. Building Tcl on Mac OS X +--------------------------- -- Mac OS X 10.2 (or higher) is required to build Tcl on MacOSX. - -- Apple's Developer Tools CD needs to be installed (the most recent version -matching your OS release, but no earlier than December 2002). This CD should -have come with Mac OS X retail or should be present as a disk image on new macs -that came with OSX preinstalled. It can also be downloaded from +- At least Mac OS X 10.1 is required to build Tcl, and Apple's Developer Tools +need to be installed (only the most recent version matching your OS release is +supported). The Developer Tools installer is available on Mac OS X retail disks +or is present in /Applications/Installers on Macs that came with OS X +preinstalled. The most recent version can be downloaded from the ADC website http://connect.apple.com (after you register for free ADC membership). -- Tcl is built as a Mac OS X framework via the Makefile in tcl/macosx, but can -but can also be built directly with the standard unix configure and make -buildsystem in tcl/unix. - -- It is still possible to build with Apple's Xcode IDE using the Tcl.pbproj -project but this is not recommended anymore (currently Tcl.pbproj calls through -to the tcl/macosx/Makefile so there should be no build differences). +- Tcl is most easily built as a Mac OS X framework via Makefile in tcl/macosx +(see below for details), but can also be built with the standard unix configure +and make buildsystem in tcl/unix as on any other unix platform (indeed, the +Makefile is just a wrapper around the unix buildsystem). +The Mac OS X specifc configure flags are --enable-framework and +--disable-corefoundation (which disables CF and notably reverts to the standard +select based notifier, you will only need this if your require use of naked fork +(i.e. not followed by execve) in an unthreaded core). + +- It is also possible to build with Apple's IDE via the tcl/macosx/Tcl.pbproj +project, this simply calls through to the tcl/macosx/GNUMakefile. + +- To build universal binaires, set CFLAGS as follows: + export CFLAGS="-arch ppc -arch ppc64 -arch i386 \ + -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" +This requires Mac OS X 10.4 and Xcode 2.2 (_not_ Xcode 2.1) and will work on any +of the architectures (on i386 DTKs, the -isysroot is not required). Note that it +is not possible to configure correctly if the current architecture is not +present in CFLAGS (i.e. -arch `arch` must always be there). Universal builds of +Tcl TEA extensions are also possible with CFLAGS set as above, they will be +[load]able by universal as well as thin binaries of Tcl. + +Detailed Instructions for building with macosx/Makefile +------------------------------------------------------- - Unpack the tcl source release archive. -- The following instructions assume the tcl source tree is named "tcl${ver}", -where ${ver} is a shell variable containing the tcl version number (for -example '8.4.2'). +- The following instructions assume the tcl source tree is named "tcl${ver}", +where ${ver} is a shell variable containing the tcl version number (for example +'8.4.12'). Setup the shell variable as follows: - set ver="8.4.2" ;: if your shell is csh - ver="8.4.2" ;: if your shell is sh + set ver="8.4.12" ;: if your shell is csh + ver="8.4.12" ;: if your shell is sh The source tree will be named this way only if you are building from a release archive, if you are building from CVS, the version numbers will be missing; so set ${ver} to the empty string instead: - set ver="" ;: if your shell is csh - ver="" ;: if your shell is sh + set ver="" ;: if your shell is csh + ver="" ;: if your shell is sh -- The following steps will build Tcl from the Terminal, assuming you are -located in the directory containing the tcl source tree: +- The following steps will build Tcl from the Terminal, assuming you are located +in the directory containing the tcl source tree: make -C tcl${ver}/macosx -and the following will then install Tcl onto the root volume (admin password +and the following will then install Tcl onto the root volume (admin password required): sudo make -C tcl${ver}/macosx install if you don't have the admin password, you can install into your home directory, @@ -109,8 +125,8 @@ instead by passing an INSTALL_ROOT argument to make: make -C tcl${ver}/macosx install INSTALL_ROOT="${HOME}/" - The default Makefile targets will build _both_ debug and optimized versions of -the Tcl framework with the standard convention of naming the debug -library Tcl.framework/Tcl_debug. +the Tcl framework with the standard convention of naming the debug library +Tcl.framework/Tcl_debug. This allows you to dynamically link to the debug libraries at runtime by setting setenv DYLD_IMAGE_SUFFIX _debug (c.f. man dyld for more details) diff --git a/macosx/Tcl.pbproj/default.pbxuser b/macosx/Tcl.pbproj/default.pbxuser new file mode 100644 index 0000000..22035d0 --- /dev/null +++ b/macosx/Tcl.pbproj/default.pbxuser @@ -0,0 +1,173 @@ +// !$*UTF8*$! +{ + 00E2F845016E82EB0ACA28DC = { + activeBuildStyle = 00E2F847016E82EB0ACA28DC; + activeExecutable = F594E5F1030774B1016F146B; + activeTarget = 00E2F84C016E8B780ACA28DC; + addToTargets = ( + ); + codeSenseManager = F9D167E40610239A0027C147; + executables = ( + F53ACC52031D9AFE016F146B, + F594E5F1030774B1016F146B, + ); + sourceControlManager = F9D167E30610239A0027C147; + userBuildSettings = { + SYMROOT = "${SRCROOT}/../../build/tcl"; + }; + }; + 00E2F84C016E8B780ACA28DC = { + activeExec = 0; + }; + F53ACC52031D9AFE016F146B = { + activeArgIndex = 2147483647; + activeArgIndices = ( + NO, + NO, + ); + argumentStrings = ( + "${SRCROOT}/../../tcl/tests/all.tcl", + "-verbose \"\"", + ); + configStateDict = { + "PBXLSLaunchAction-0" = { + PBXLSLaunchAction = 0; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXLSRunLaunchConfig; + displayName = "Executable Runner"; + identifier = com.apple.Xcode.launch.runConfig; + remoteHostInfo = ""; + startActionInfo = ""; + }; + "PBXLSLaunchAction-1" = { + PBXLSLaunchAction = 1; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXGDB_LaunchConfig; + displayName = GDB; + identifier = com.apple.Xcode.launch.GDBMI_Config; + remoteHostInfo = ""; + startActionInfo = ""; + }; + }; + cppStopOnCatchEnabled = 0; + cppStopOnThrowEnabled = 0; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = _debug; + enableDebugStr = 0; + environmentEntries = ( + { + active = YES; + name = TCL_LIBRARY; + value = "${SRCROOT}/../../tcl/library"; + }, + { + active = NO; + name = DYLD_PRINT_LIBRARIES; + }, + ); + isa = PBXExecutable; + launchableReference = F5C37CF303D5BEDF016F146B; + libgmallocEnabled = 0; + name = tcltest; + shlibInfoDictList = ( + ); + sourceDirectories = ( + ); + startupPath = "<>"; + }; + F594E5F1030774B1016F146B = { + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + configStateDict = { + "PBXLSLaunchAction-0" = { + PBXLSLaunchAction = 0; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXLSRunLaunchConfig; + displayName = "Executable Runner"; + identifier = com.apple.Xcode.launch.runConfig; + remoteHostInfo = ""; + startActionInfo = ""; + }; + "PBXLSLaunchAction-1" = { + PBXLSLaunchAction = 1; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXGDB_LaunchConfig; + displayName = GDB; + identifier = com.apple.Xcode.launch.GDBMI_Config; + remoteHostInfo = ""; + startActionInfo = ""; + }; + }; + cppStopOnCatchEnabled = 0; + cppStopOnThrowEnabled = 0; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = _debug; + enableDebugStr = 0; + environmentEntries = ( + { + active = NO; + name = DYLD_PRINT_LIBRARIES; + }, + ); + isa = PBXExecutable; + launchableReference = F98F02E608E7EF9A00D0320A; + libgmallocEnabled = 0; + name = tclsh; + shlibInfoDictList = ( + ); + sourceDirectories = ( + ); + startupPath = "<>"; + }; + F5C37CF303D5BEDF016F146B = { + isa = PBXFileReference; + lastKnownFileType = "compiled.mach-o.executable"; + path = tcltest; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; + }; + F98F02E608E7EF9A00D0320A = { + isa = PBXFileReference; + lastKnownFileType = "compiled.mach-o.executable"; + path = tclsh8.4; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; + }; + F9D167E30610239A0027C147 = { + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + isa = PBXSourceControlManager; + scmConfiguration = { + }; + scmType = scm.cvs; + }; + F9D167E40610239A0027C147 = { + indexTemplatePath = ""; + isa = PBXCodeSenseManager; + usesDefaults = 1; + wantsCodeCompletion = 1; + wantsCodeCompletionAutoSuggestions = 1; + wantsCodeCompletionCaseSensitivity = 1; + wantsCodeCompletionListAlways = 1; + wantsCodeCompletionOnlyMatchingItems = 1; + wantsCodeCompletionParametersIncluded = 1; + wantsCodeCompletionPlaceholdersInserted = 1; + wantsCodeCompletionTabCompletes = 1; + wantsIndex = 1; + }; +} diff --git a/macosx/Tcl.pbproj/jingham.pbxuser b/macosx/Tcl.pbproj/jingham.pbxuser index 10f0b57..22035d0 100644 --- a/macosx/Tcl.pbproj/jingham.pbxuser +++ b/macosx/Tcl.pbproj/jingham.pbxuser @@ -2,78 +2,172 @@ { 00E2F845016E82EB0ACA28DC = { activeBuildStyle = 00E2F847016E82EB0ACA28DC; - activeExecutable = F9A61CCE04C2B5A8006F5A0B; + activeExecutable = F594E5F1030774B1016F146B; activeTarget = 00E2F84C016E8B780ACA28DC; - breakpoints = ( + addToTargets = ( ); + codeSenseManager = F9D167E40610239A0027C147; executables = ( - F9A61CCE04C2B5A8006F5A0B, - F973FC3204852E75006F146B, + F53ACC52031D9AFE016F146B, + F594E5F1030774B1016F146B, ); - perUserDictionary = { - PBXPerProjectTemplateStateSaveDate = 79872121; - }; - projectwideBuildSettings = { + sourceControlManager = F9D167E30610239A0027C147; + userBuildSettings = { SYMROOT = "${SRCROOT}/../../build/tcl"; }; - wantsIndex = 1; - wantsSCM = -1; }; 00E2F84C016E8B780ACA28DC = { activeExec = 0; }; - F973FC3204852E75006F146B = { + F53ACC52031D9AFE016F146B = { activeArgIndex = 2147483647; activeArgIndices = ( + NO, + NO, ); argumentStrings = ( + "${SRCROOT}/../../tcl/tests/all.tcl", + "-verbose \"\"", ); configStateDict = { + "PBXLSLaunchAction-0" = { + PBXLSLaunchAction = 0; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXLSRunLaunchConfig; + displayName = "Executable Runner"; + identifier = com.apple.Xcode.launch.runConfig; + remoteHostInfo = ""; + startActionInfo = ""; + }; + "PBXLSLaunchAction-1" = { + PBXLSLaunchAction = 1; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXGDB_LaunchConfig; + displayName = GDB; + identifier = com.apple.Xcode.launch.GDBMI_Config; + remoteHostInfo = ""; + startActionInfo = ""; + }; }; + cppStopOnCatchEnabled = 0; + cppStopOnThrowEnabled = 0; + customDataFormattersEnabled = 1; debuggerPlugin = GDBDebugging; - dylibVariantSuffix = ""; - enableDebugStr = 1; + disassemblyDisplayState = 0; + dylibVariantSuffix = _debug; + enableDebugStr = 0; environmentEntries = ( + { + active = YES; + name = TCL_LIBRARY; + value = "${SRCROOT}/../../tcl/library"; + }, + { + active = NO; + name = DYLD_PRINT_LIBRARIES; + }, ); isa = PBXExecutable; - launchableReference = F9A61CCD04C2B5A5006F5A0B; - name = tclsh8.4; + launchableReference = F5C37CF303D5BEDF016F146B; + libgmallocEnabled = 0; + name = tcltest; shlibInfoDictList = ( ); sourceDirectories = ( ); + startupPath = "<>"; }; - F9A61CCD04C2B5A5006F5A0B = { - isa = PBXFileReference; - name = tclsh8.4; - path = ../../build/tcl/tclsh8.4; - refType = 4; - }; - F9A61CCE04C2B5A8006F5A0B = { + F594E5F1030774B1016F146B = { activeArgIndex = 2147483647; activeArgIndices = ( ); argumentStrings = ( ); configStateDict = { + "PBXLSLaunchAction-0" = { + PBXLSLaunchAction = 0; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXLSRunLaunchConfig; + displayName = "Executable Runner"; + identifier = com.apple.Xcode.launch.runConfig; + remoteHostInfo = ""; + startActionInfo = ""; + }; + "PBXLSLaunchAction-1" = { + PBXLSLaunchAction = 1; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXGDB_LaunchConfig; + displayName = GDB; + identifier = com.apple.Xcode.launch.GDBMI_Config; + remoteHostInfo = ""; + startActionInfo = ""; + }; }; + cppStopOnCatchEnabled = 0; + cppStopOnThrowEnabled = 0; + customDataFormattersEnabled = 1; debuggerPlugin = GDBDebugging; - dylibVariantSuffix = ""; - enableDebugStr = 1; + disassemblyDisplayState = 0; + dylibVariantSuffix = _debug; + enableDebugStr = 0; environmentEntries = ( + { + active = NO; + name = DYLD_PRINT_LIBRARIES; + }, ); isa = PBXExecutable; - launchableReference = F9A61CD104C2B5B4006F5A0B; - name = tcltest; + launchableReference = F98F02E608E7EF9A00D0320A; + libgmallocEnabled = 0; + name = tclsh; shlibInfoDictList = ( ); sourceDirectories = ( ); + startupPath = "<>"; }; - F9A61CD104C2B5B4006F5A0B = { + F5C37CF303D5BEDF016F146B = { isa = PBXFileReference; - name = tcltest; - path = ../../build/tcl/tcltest; - refType = 4; + lastKnownFileType = "compiled.mach-o.executable"; + path = tcltest; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; + }; + F98F02E608E7EF9A00D0320A = { + isa = PBXFileReference; + lastKnownFileType = "compiled.mach-o.executable"; + path = tclsh8.4; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; + }; + F9D167E30610239A0027C147 = { + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + isa = PBXSourceControlManager; + scmConfiguration = { + }; + scmType = scm.cvs; + }; + F9D167E40610239A0027C147 = { + indexTemplatePath = ""; + isa = PBXCodeSenseManager; + usesDefaults = 1; + wantsCodeCompletion = 1; + wantsCodeCompletionAutoSuggestions = 1; + wantsCodeCompletionCaseSensitivity = 1; + wantsCodeCompletionListAlways = 1; + wantsCodeCompletionOnlyMatchingItems = 1; + wantsCodeCompletionParametersIncluded = 1; + wantsCodeCompletionPlaceholdersInserted = 1; + wantsCodeCompletionTabCompletes = 1; + wantsIndex = 1; }; } diff --git a/macosx/Tcl.pbproj/project.pbxproj b/macosx/Tcl.pbproj/project.pbxproj index 4d2b2ca..7949108 100644 --- a/macosx/Tcl.pbproj/project.pbxproj +++ b/macosx/Tcl.pbproj/project.pbxproj @@ -3,9 +3,11 @@ archiveVersion = 1; classes = { }; - objectVersion = 38; + objectVersion = 39; objects = { 00E2F845016E82EB0ACA28DC = { + buildSettings = { + }; buildStyles = ( 00E2F847016E82EB0ACA28DC, 00E2F848016E82EB0ACA28DC, @@ -32,10 +34,9 @@ ); isa = PBXGroup; refType = 4; + sourceTree = ""; }; 00E2F847016E82EB0ACA28DC = { - buildRules = ( - ); buildSettings = { MAKE_TARGET = develop; }; @@ -43,8 +44,6 @@ name = Development; }; 00E2F848016E82EB0ACA28DC = { - buildRules = ( - ); buildSettings = { MAKE_TARGET = deploy; }; @@ -53,38 +52,36 @@ }; 00E2F84A016E8A830ACA28DC = { children = ( - F9A61C9D04C2B4E3006F5A0B, - F53ACC5C031D9D11016F146B, F53ACC73031DA405016F146B, + F53ACC5C031D9D11016F146B, + F9A61C9D04C2B4E3006F5A0B, ); isa = PBXGroup; name = Products; refType = 4; + sourceTree = ""; }; 00E2F84C016E8B780ACA28DC = { - buildArgumentsString = "-c \"if [ \\\"${ACTION}\\\" != \\\"clean\\\" ]; then if [ \\\"${ACTION}\\\" = \\\"install\\\" ]; then MAKE_ACTION=\"install-\"; fi; else MAKE_ACTION=\"distclean-\"; fi; gnumake \\${MAKE_ACTION:-}${MAKE_TARGET}"; + buildArgumentsString = "-c \"cd \\\"${TCL_SRCROOT}/macosx\\\" && ACTION=${ACTION} && gnumake \\${ACTION:+\\${ACTION/clean/distclean}-}${MAKE_TARGET} INSTALL_ROOT=\\\"${DSTROOT}\\\" INSTALL_PATH=\\\"${INSTALL_PATH}\\\" PREFIX=\\\"${PREFIX}\\\" BINDIR=\\\"${BINDIR}\\\" MANDIR=\\\"${MANDIR}\\\" \\${EXTRA_MAKE_FLAGS} ${ALL_SETTINGS}\""; buildPhases = ( ); buildSettings = { - EXTRA_CONFIGURE_ARGS = ""; - EXTRA_MAKE_ARGS = ""; + BINDIR = "${PREFIX}/bin"; INSTALL_PATH = /Library/Frameworks; - INSTALL_ROOT = "${DSTROOT}"; - PREFIX = /usr; + MANDIR = "${PREFIX}/man"; + PREFIX = /usr/local; PRODUCT_NAME = Tcl; - SYMROOT = "${SRCROOT}/../../build/tcl"; + TCL_SRCROOT = "${SRCROOT}/../../tcl"; + TEMP_DIR = "${PROJECT_TEMP_DIR}"; }; - buildToolPath = /bin/sh; + buildToolPath = /bin/bash; buildWorkingDirectory = "${SRCROOT}"; dependencies = ( ); isa = PBXLegacyTarget; name = Tcl; - passBuildSettingsInEnvironment = 1; + passBuildSettingsInEnvironment = 0; productName = Tcl; - settingsToExpand = 6; - settingsToPassInEnvironment = 287; - settingsToPassOnCommandLine = 280; }; 00E2F854016E922C0ACA28DC = { children = ( @@ -168,6 +165,7 @@ name = Sources; path = ""; refType = 4; + sourceTree = ""; }; 00E2F855016E922C0ACA28DC = { children = ( @@ -177,6 +175,7 @@ isa = PBXGroup; name = generic; refType = 4; + sourceTree = ""; }; 00E2F856016E92B00ACA28DC = { children = ( @@ -200,6 +199,7 @@ isa = PBXGroup; name = Headers; refType = 4; + sourceTree = ""; }; 00E2F857016E92B00ACA28DC = { children = ( @@ -209,6 +209,7 @@ isa = PBXGroup; name = macosx; refType = 4; + sourceTree = ""; }; 00E2F858016E92B00ACA28DC = { children = ( @@ -216,6 +217,7 @@ isa = PBXGroup; name = Headers; refType = 4; + sourceTree = ""; }; 00E2F859016E92B00ACA28DC = { children = ( @@ -224,6 +226,7 @@ isa = PBXGroup; name = Sources; refType = 4; + sourceTree = ""; }; 00E2F85A016E92B00ACA28DC = { children = ( @@ -233,6 +236,7 @@ isa = PBXGroup; name = unix; refType = 4; + sourceTree = ""; }; 00E2F85B016E92B00ACA28DC = { children = ( @@ -242,6 +246,7 @@ isa = PBXGroup; name = Headers; refType = 4; + sourceTree = ""; }; 00E2F85C016E92B00ACA28DC = { children = ( @@ -264,6 +269,7 @@ isa = PBXGroup; name = Sources; refType = 4; + sourceTree = ""; }; //000 //001 @@ -284,51 +290,64 @@ isa = PBXGroup; name = "Build System"; refType = 4; + sourceTree = ""; }; F5306CA003CAC9AE016F146B = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = text; name = ChangeLog; path = ../ChangeLog; refType = 2; + sourceTree = SOURCE_ROOT; }; F5306CA103CAC9DE016F146B = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = text.script.sh; name = configure.in; path = ../unix/configure.in; refType = 2; + sourceTree = SOURCE_ROOT; }; F5306CA203CAC9DE016F146B = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = text; name = Makefile.in; path = ../unix/Makefile.in; refType = 2; + sourceTree = SOURCE_ROOT; }; F5306CA303CAC9DE016F146B = { isa = PBXFileReference; + lastKnownFileType = text; name = tcl.m4; path = ../unix/tcl.m4; refType = 2; + sourceTree = SOURCE_ROOT; }; F53ACC5C031D9D11016F146B = { - isa = PBXExecutableFileReference; - name = tclsh8.4; - path = ../../build/tcl/tclsh8.4; - refType = 2; + isa = PBXFileReference; + lastKnownFileType = "compiled.mach-o.executable"; + path = tclsh8.4; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; }; F53ACC73031DA405016F146B = { - isa = PBXExecutableFileReference; - name = tcltest; - path = ../../build/tcl/tcltest; - refType = 2; + isa = PBXFileReference; + lastKnownFileType = "compiled.mach-o.executable"; + path = tcltest; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; }; F5A1836F018242A501DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; path = tclMacOSXBundle.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5C88655017D604601DC9062 = { children = ( @@ -339,780 +358,1003 @@ isa = PBXGroup; name = "Header Tools"; refType = 4; + sourceTree = ""; }; F5C88656017D604601DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = genStubs.tcl; path = ../tools/genStubs.tcl; refType = 2; + sourceTree = SOURCE_ROOT; }; F5C88657017D60C901DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = tcl.decls; path = ../generic/tcl.decls; refType = 2; + sourceTree = SOURCE_ROOT; }; F5C88658017D60C901DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = tclInt.decls; path = ../generic/tclInt.decls; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F6B016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = regcustom.h; path = ../generic/regcustom.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F6C016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = regerrs.h; path = ../generic/regerrs.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F6D016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = regguts.h; path = ../generic/regguts.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F6E016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tcl.h; path = ../generic/tcl.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F6F016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclCompile.h; path = ../generic/tclCompile.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F70016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclDecls.h; path = ../generic/tclDecls.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F71016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclInitScript.h; path = ../generic/tclInitScript.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F72016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclInt.h; path = ../generic/tclInt.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F73016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclIntDecls.h; path = ../generic/tclIntDecls.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F74016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclIntPlatDecls.h; path = ../generic/tclIntPlatDecls.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F75016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclIO.h; path = ../generic/tclIO.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F76016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclMath.h; path = ../generic/tclMath.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F77016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclPlatDecls.h; path = ../generic/tclPlatDecls.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F78016ECAA401DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclRegexp.h; path = ../generic/tclRegexp.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F87016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regc_color.c; path = ../generic/regc_color.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F88016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regc_cvec.c; path = ../generic/regc_cvec.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F89016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regc_lex.c; path = ../generic/regc_lex.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F8A016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regc_locale.c; path = ../generic/regc_locale.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F8B016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regc_nfa.c; path = ../generic/regc_nfa.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F8C016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regcomp.c; path = ../generic/regcomp.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F8D016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = rege_dfa.c; path = ../generic/rege_dfa.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F8E016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regerror.c; path = ../generic/regerror.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F8F016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regexec.c; path = ../generic/regexec.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F90016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regfree.c; path = ../generic/regfree.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F91016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = regfronts.c; path = ../generic/regfronts.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F92016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclAlloc.c; path = ../generic/tclAlloc.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F93016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclAsync.c; path = ../generic/tclAsync.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F94016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclBasic.c; path = ../generic/tclBasic.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F95016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclBinary.c; path = ../generic/tclBinary.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F96016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclCkalloc.c; path = ../generic/tclCkalloc.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F97016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclClock.c; path = ../generic/tclClock.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F98016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclCmdAH.c; path = ../generic/tclCmdAH.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F99016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclCmdIL.c; path = ../generic/tclCmdIL.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F9A016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclCmdMZ.c; path = ../generic/tclCmdMZ.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F9B016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclCompCmds.c; path = ../generic/tclCompCmds.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F9C016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclCompExpr.c; path = ../generic/tclCompExpr.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F9D016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclCompile.c; path = ../generic/tclCompile.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F9E016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclDate.c; path = ../generic/tclDate.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24F9F016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclEncoding.c; path = ../generic/tclEncoding.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA0016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclEnv.c; path = ../generic/tclEnv.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA1016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclEvent.c; path = ../generic/tclEvent.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA2016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclExecute.c; path = ../generic/tclExecute.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA3016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclFCmd.c; path = ../generic/tclFCmd.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA4016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclFileName.c; path = ../generic/tclFileName.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA5016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclGet.c; path = ../generic/tclGet.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA6016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclHash.c; path = ../generic/tclHash.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA7016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclHistory.c; path = ../generic/tclHistory.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA8016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclIndexObj.c; path = ../generic/tclIndexObj.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FA9016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclInterp.c; path = ../generic/tclInterp.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FAA016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclIO.c; path = ../generic/tclIO.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FAB016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclIOCmd.c; path = ../generic/tclIOCmd.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FAC016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclIOGT.c; path = ../generic/tclIOGT.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FAD016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclIOSock.c; path = ../generic/tclIOSock.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FAE016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclIOUtil.c; path = ../generic/tclIOUtil.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FAF016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclLink.c; path = ../generic/tclLink.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB0016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclListObj.c; path = ../generic/tclListObj.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB1016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclLiteral.c; path = ../generic/tclLiteral.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB2016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclLoad.c; path = ../generic/tclLoad.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB3016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclLoadNone.c; path = ../generic/tclLoadNone.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB4016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclMain.c; path = ../generic/tclMain.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB5016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclNamesp.c; path = ../generic/tclNamesp.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB6016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclNotify.c; path = ../generic/tclNotify.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB7016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclObj.c; path = ../generic/tclObj.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB8016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclPanic.c; path = ../generic/tclPanic.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FB9016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclParse.c; path = ../generic/tclParse.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FBA016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclParseExpr.c; path = ../generic/tclParseExpr.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FBB016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclPipe.c; path = ../generic/tclPipe.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FBC016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclPosixStr.c; path = ../generic/tclPosixStr.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FBD016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclPreserve.c; path = ../generic/tclPreserve.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FBE016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclProc.c; path = ../generic/tclProc.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FBF016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclRegexp.c; path = ../generic/tclRegexp.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC0016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclResolve.c; path = ../generic/tclResolve.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC1016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclResult.c; path = ../generic/tclResult.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC2016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclScan.c; path = ../generic/tclScan.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC3016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclStringObj.c; path = ../generic/tclStringObj.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC4016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclStubInit.c; path = ../generic/tclStubInit.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC5016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclStubLib.c; path = ../generic/tclStubLib.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC6016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclTest.c; path = ../generic/tclTest.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC7016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclTestObj.c; path = ../generic/tclTestObj.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC8016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclTestProcBodyObj.c; path = ../generic/tclTestProcBodyObj.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FC9016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclThread.c; path = ../generic/tclThread.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FCA016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclThreadJoin.c; path = ../generic/tclThreadJoin.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FCB016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclThreadTest.c; path = ../generic/tclThreadTest.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FCC016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclTimer.c; path = ../generic/tclTimer.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FCD016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUniData.c; path = ../generic/tclUniData.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FCE016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUtf.c; path = ../generic/tclUtf.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FCF016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUtil.c; path = ../generic/tclUtil.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FD0016ECAFC01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclVar.c; path = ../generic/tclVar.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FD1016ECB1E01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = regex.h; path = ../generic/regex.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FD2016ECB1E01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclPort.h; path = ../generic/tclPort.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FD3016ECB4901DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclPkg.c; path = ../generic/tclPkg.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FD6016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclUnixPort.h; path = ../unix/tclUnixPort.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FD7016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = tclUnixThrd.h; path = ../unix/tclUnixThrd.h; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FD8016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclAppInit.c; path = ../unix/tclAppInit.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FD9016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclLoadDyld.c; path = ../unix/tclLoadDyld.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FDB016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixChan.c; path = ../unix/tclUnixChan.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FDC016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixEvent.c; path = ../unix/tclUnixEvent.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FDD016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixFCmd.c; path = ../unix/tclUnixFCmd.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FDE016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixFile.c; path = ../unix/tclUnixFile.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FDF016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixInit.c; path = ../unix/tclUnixInit.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FE0016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixNotfy.c; path = ../unix/tclUnixNotfy.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FE1016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixPipe.c; path = ../unix/tclUnixPipe.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FE2016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixSock.c; path = ../unix/tclUnixSock.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FE3016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixTest.c; path = ../unix/tclUnixTest.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FE4016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixThrd.c; path = ../unix/tclUnixThrd.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FE5016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclUnixTime.c; path = ../unix/tclUnixTime.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FE6016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclXtNotify.c; path = ../unix/tclXtNotify.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FE7016ECC0F01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = tclXtTest.c; path = ../unix/tclXtTest.c; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FEE016ED0DF01DC9062 = { children = ( @@ -1137,117 +1379,152 @@ isa = PBXGroup; name = Scripts; refType = 4; + sourceTree = ""; }; F5F24FEF016ED0DF01DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = auto.tcl; path = ../library/auto.tcl; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FF0016ED0DF01DC9062 = { includeInIndex = 0; - isa = PBXFolderReference; + isa = PBXFileReference; + lastKnownFileType = folder; name = dde; path = ../library/dde; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FF3016ED0DF01DC9062 = { includeInIndex = 0; - isa = PBXFolderReference; + isa = PBXFileReference; + lastKnownFileType = folder; name = encoding; path = ../library/encoding; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FF4016ED0DF01DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = history.tcl; path = ../library/history.tcl; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FF5016ED0DF01DC9062 = { includeInIndex = 0; - isa = PBXFolderReference; + isa = PBXFileReference; + lastKnownFileType = folder; name = http; path = ../library/http; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FF6016ED0DF01DC9062 = { includeInIndex = 0; - isa = PBXFolderReference; + isa = PBXFileReference; + lastKnownFileType = folder; name = http1.0; path = ../library/http1.0; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FFA016ED0DF01DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = init.tcl; path = ../library/init.tcl; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FFB016ED0DF01DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = ldAout.tcl; path = ../library/ldAout.tcl; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FFC016ED0DF01DC9062 = { includeInIndex = 0; - isa = PBXFolderReference; + isa = PBXFileReference; + lastKnownFileType = folder; name = msgcat; path = ../library/msgcat; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F24FFE016ED0DF01DC9062 = { includeInIndex = 0; - isa = PBXFolderReference; + isa = PBXFileReference; + lastKnownFileType = folder; name = opt; path = ../library/opt; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F25001016ED0DF01DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = package.tcl; path = ../library/package.tcl; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F25002016ED0DF01DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = parray.tcl; path = ../library/parray.tcl; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F25003016ED0DF01DC9062 = { includeInIndex = 0; - isa = PBXFolderReference; + isa = PBXFileReference; + lastKnownFileType = folder; name = reg; path = ../library/reg; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F25005016ED0DF01DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = safe.tcl; path = ../library/safe.tcl; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F25007016ED0DF01DC9062 = { fileEncoding = 5; isa = PBXFileReference; + lastKnownFileType = text; name = tclIndex; path = ../library/tclIndex; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F25008016ED0DF01DC9062 = { includeInIndex = 0; - isa = PBXFolderReference; + isa = PBXFileReference; + lastKnownFileType = folder; name = tcltest; path = ../library/tcltest; refType = 2; + sourceTree = SOURCE_ROOT; }; F5F2500A016ED0DF01DC9062 = { isa = PBXFileReference; + lastKnownFileType = text; name = word.tcl; path = ../library/word.tcl; refType = 2; + sourceTree = SOURCE_ROOT; }; //F50 //F51 @@ -1260,10 +1537,11 @@ //F93 //F94 F9A61C9D04C2B4E3006F5A0B = { - isa = PBXFrameworkReference; - name = Tcl.framework; - path = ../../build/tcl/Tcl.framework; - refType = 2; + explicitFileType = wrapper.framework; + isa = PBXFileReference; + path = Tcl.framework; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; }; }; rootObject = 00E2F845016E82EB0ACA28DC; diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 75b871c..28e4977 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -51,13 +51,13 @@ * license. */ +#include "tclPort.h" + #ifdef HAVE_COREFOUNDATION #include #include #endif /* HAVE_COREFOUNDATION */ -#include "tcl.h" - /* *---------------------------------------------------------------------- * diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index 898d075..cd09ccf 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -1,25 +1,25 @@ /* * tclMacOSXNotify.c -- * - * This file contains the implementation of a merged - * CFRunLoop/select-based notifier, which is the lowest-level part - * of the Tcl event loop. This file works together with - * generic/tclNotify.c. + * This file contains the implementation of a merged CFRunLoop/select() + * based notifier, which is the lowest-level part of the Tcl event loop. + * This file works together with generic/tclNotify.c. * * Copyright (c) 1995-1997 Sun Microsystems, Inc. * Copyright 2001, Apple Computer, Inc. - * Copyright 2005, Tcl Core Team. + * Copyright (c) 2005 Tcl Core Team. + * Copyright (c) 2005 Daniel A. Steffen * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.4 2005/05/20 02:50:36 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.5 2005/11/27 02:34:41 das Exp $ */ -#ifdef HAVE_COREFOUNDATION /* Traditional unix select-based notifier - * is in tclUnixNotfy.c */ #include "tclInt.h" #include "tclPort.h" +#ifdef HAVE_COREFOUNDATION /* Traditional unix select-based notifier is + * in tclUnixNotfy.c */ #include #include @@ -27,42 +27,41 @@ extern TclStubs tclStubs; extern Tcl_NotifierProcs tclOriginalNotifier; /* - * This structure is used to keep track of the notifier info for a - * a registered file. + * This structure is used to keep track of the notifier info for a registered + * file. */ typedef struct FileHandler { int fd; int mask; /* Mask of desired events: TCL_READABLE, * etc. */ - int readyMask; /* Mask of events that have been seen since the - * last time file handlers were invoked for - * this file. */ - Tcl_FileProc *proc; /* Procedure to call, in the style of + int readyMask; /* Mask of events that have been seen since + * the last time file handlers were invoked + * for this file. */ + Tcl_FileProc *proc; /* Function to call, in the style of * Tcl_CreateFileHandler. */ ClientData clientData; /* Argument to pass to proc. */ struct FileHandler *nextPtr;/* Next in list of all files we care about. */ } FileHandler; /* - * The following structure is what is added to the Tcl event queue when - * file handlers are ready to fire. + * The following structure is what is added to the Tcl event queue when file + * handlers are ready to fire. */ typedef struct FileHandlerEvent { - Tcl_Event header; /* Information that is standard for - * all events. */ - int fd; /* File descriptor that is ready. Used - * to find the FileHandler structure for - * the file (can't point directly to the - * FileHandler structure because it could - * go away while the event is queued). */ + Tcl_Event header; /* Information that is standard for all + * events. */ + int fd; /* File descriptor that is ready. Used to find + * the FileHandler structure for the file + * (can't point directly to the FileHandler + * structure because it could go away while + * the event is queued). */ } FileHandlerEvent; /* - * - * The following structure contains a set of select() masks to track - * readable, writable, and exceptional conditions. + * The following structure contains a set of select() masks to track readable, + * writable, and exceptional conditions. */ typedef struct SelectMasks { @@ -73,49 +72,50 @@ typedef struct SelectMasks { /* * The following static structure contains the state information for the - * select based implementation of the Tcl notifier. One of these structures - * is created for each thread that is using the notifier. + * select based implementation of the Tcl notifier. One of these structures is + * created for each thread that is using the notifier. */ typedef struct ThreadSpecificData { FileHandler *firstFileHandlerPtr; /* Pointer to head of file handler list. */ - - SelectMasks checkMasks; /* This structure is used to build up the masks - * to be used in the next call to select. - * Bits are set in response to calls to - * Tcl_CreateFileHandler. */ + SelectMasks checkMasks; /* This structure is used to build up the + * masks to be used in the next call to + * select. Bits are set in response to calls + * to Tcl_CreateFileHandler. */ SelectMasks readyMasks; /* This array reflects the readable/writable * conditions that were found to exist by the * last call to select. */ - int numFdBits; /* Number of valid bits in checkMasks - * (one more than highest fd for which + int numFdBits; /* Number of valid bits in checkMasks (one + * more than highest fd for which * Tcl_WatchFile has been called). */ int onList; /* True if it is in this list */ - unsigned int pollState; /* pollState is used to implement a polling + unsigned int pollState; /* pollState is used to implement a polling * handshake between each thread and the * notifier thread. Bits defined below. */ struct ThreadSpecificData *nextPtr, *prevPtr; - /* All threads that are currently waiting on + /* All threads that are currently waiting on * an event have their ThreadSpecificData * structure on a doubly-linked listed formed - * from these pointers. You must hold the + * from these pointers. You must hold the * notifierLock before accessing these * fields. */ CFRunLoopSourceRef runLoopSource; - /* Any other thread alerts a notifier - * that an event is ready to be processed - * by signaling this CFRunLoopSource. */ - CFRunLoopRef runLoop; /* This thread's CFRunLoop, needs to be woken - * up whenever the runLoopSource is signaled. */ - int eventReady; /* True if an event is ready to be processed. */ + /* Any other thread alerts a notifier that an + * event is ready to be processed by signaling + * this CFRunLoopSource. */ + CFRunLoopRef runLoop; /* This thread's CFRunLoop, needs to be woken + * up whenever the runLoopSource is + * signaled. */ + int eventReady; /* True if an event is ready to be + * processed. */ } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; /* - * The following static indicates the number of threads that have - * initialized notifiers. + * The following static indicates the number of threads that have initialized + * notifiers. * * You must hold the notifierInitLock before accessing this variable. */ @@ -123,9 +123,9 @@ static Tcl_ThreadDataKey dataKey; static int notifierCount = 0; /* - * The following variable points to the head of a doubly-linked list of - * of ThreadSpecificData structures for all threads that are currently - * waiting on an event. + * The following variable points to the head of a doubly-linked list of + * ThreadSpecificData structures for all threads that are currently waiting on + * an event. * * You must hold the notifierLock before accessing this list. */ @@ -133,16 +133,15 @@ static int notifierCount = 0; static ThreadSpecificData *waitingListPtr = NULL; /* - * The notifier thread spends all its time in select() waiting for a - * file descriptor associated with one of the threads on the waitingListPtr - * list to do something interesting. But if the contents of the - * waitingListPtr list ever changes, we need to wake up and restart - * the select() system call. You can wake up the notifier thread by - * writing a single byte to the file descriptor defined below. This - * file descriptor is the input-end of a pipe and the notifier thread is - * listening for data on the output-end of the same pipe. Hence writing - * to this file descriptor will cause the select() system call to return - * and wake up the notifier thread. + * The notifier thread spends all its time in select() waiting for a file + * descriptor associated with one of the threads on the waitingListPtr list to + * do something interesting. But if the contents of the waitingListPtr list + * ever changes, we need to wake up and restart the select() system call. You + * can wake up the notifier thread by writing a single byte to the file + * descriptor defined below. This file descriptor is the input-end of a pipe + * and the notifier thread is listening for data on the output-end of the same + * pipe. Hence writing to this file descriptor will cause the select() system + * call to return and wake up the notifier thread. * * You must hold the notifierLock lock before writing to the pipe. */ @@ -152,55 +151,64 @@ static int receivePipe = -1; /* Output end of triggerPipe */ /* * We use Darwin-native spinlocks instead of pthread mutexes for notifier - * locking: this radically simplifies the implementation and lowers - * overhead. Note that these are not pure spinlocks, they employ various - * strategies to back off, making them immune to most priority-inversion - * livelocks (c.f. man 3 OSSpinLockLock). + * locking: this radically simplifies the implementation and lowers overhead. + * Note that these are not pure spinlocks, they employ various strategies to + * back off, making them immune to most priority-inversion livelocks (c.f. man + * 3 OSSpinLockLock). */ #if defined(HAVE_LIBKERN_OSATOMIC_H) && defined(HAVE_OSSPINLOCKLOCK) -/* Use OSSpinLock API where available (Tiger or later) */ +/* + * Use OSSpinLock API where available (Tiger or later). + */ + #include + #else -/* Otherwise, use commpage spinlock SPI directly */ +/* + * Otherwise, use commpage spinlock SPI directly. + */ + typedef uint32_t OSSpinLock; -extern void _spin_lock(OSSpinLock *lock); -extern void _spin_unlock(OSSpinLock *lock); -#define OSSpinLockLock(p) _spin_lock(p) -#define OSSpinLockUnlock(p) _spin_unlock(p) -#endif +extern void _spin_lock(OSSpinLock *lock); +extern void _spin_unlock(OSSpinLock *lock); +#define OSSpinLockLock(p) _spin_lock(p) +#define OSSpinLockUnlock(p) _spin_unlock(p) + +#endif /* HAVE_LIBKERN_OSATOMIC_H && HAVE_OSSPINLOCKLOCK */ /* - * These spinlocks lock access to the global notifier state. + * These spinlocks lock access to the global notifier state. */ static OSSpinLock notifierInitLock = 0; static OSSpinLock notifierLock = 0; -/* +/* * Macros abstracting notifier locking/unlocking */ -#define LOCK_NOTIFIER_INIT OSSpinLockLock(¬ifierInitLock) -#define UNLOCK_NOTIFIER_INIT OSSpinLockUnlock(¬ifierInitLock) -#define LOCK_NOTIFIER OSSpinLockLock(¬ifierLock) -#define UNLOCK_NOTIFIER OSSpinLockUnlock(¬ifierLock) +#define LOCK_NOTIFIER_INIT OSSpinLockLock(¬ifierInitLock) +#define UNLOCK_NOTIFIER_INIT OSSpinLockUnlock(¬ifierInitLock) +#define LOCK_NOTIFIER OSSpinLockLock(¬ifierLock) +#define UNLOCK_NOTIFIER OSSpinLockUnlock(¬ifierLock) /* * The pollState bits * POLL_WANT is set by each thread before it waits on its condition - * variable. It is checked by the notifier before it does - * select. - * POLL_DONE is set by the notifier if it goes into select after - * seeing POLL_WANT. The idea is to ensure it tries a select - * with the same bits the initial thread had set. + * variable. It is checked by the notifier before it does select. + * POLL_DONE is set by the notifier if it goes into select after seeing + * POLL_WANT. The idea is to ensure it tries a select with the + * same bits the initial thread had set. */ + #define POLL_WANT 0x1 #define POLL_DONE 0x2 /* * This is the thread ID of the notifier thread that does select. */ + static pthread_t notifierThread; /* @@ -227,30 +235,30 @@ static int FileHandlerEventProc(Tcl_Event *evPtr, int flags); */ ClientData -Tcl_InitNotifier() +Tcl_InitNotifier(void) { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); tsdPtr->eventReady = 0; - - /* + + /* * Initialize CFRunLoopSource and add it to CFRunLoop of this thread */ - + if (!tsdPtr->runLoop) { - CFRunLoopRef runLoop = CFRunLoopGetCurrent(); - CFRunLoopSourceRef runLoopSource; - CFRunLoopSourceContext runLoopSourceContext; - - bzero(&runLoopSourceContext, sizeof(CFRunLoopSourceContext)); - runLoopSourceContext.info = tsdPtr; - runLoopSource = CFRunLoopSourceCreate(NULL, 0, &runLoopSourceContext); - if (!runLoopSource) { - Tcl_Panic("Tcl_InitNotifier: could not create CFRunLoopSource."); - } - CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopCommonModes); - tsdPtr->runLoopSource = runLoopSource; - tsdPtr->runLoop = runLoop; + CFRunLoopRef runLoop = CFRunLoopGetCurrent(); + CFRunLoopSourceRef runLoopSource; + CFRunLoopSourceContext runLoopSourceContext; + + bzero(&runLoopSourceContext, sizeof(CFRunLoopSourceContext)); + runLoopSourceContext.info = tsdPtr; + runLoopSource = CFRunLoopSourceCreate(NULL, 0, &runLoopSourceContext); + if (!runLoopSource) { + Tcl_Panic("Tcl_InitNotifier: could not create CFRunLoopSource."); + } + CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopCommonModes); + tsdPtr->runLoopSource = runLoopSource; + tsdPtr->runLoop = runLoop; } /* @@ -259,40 +267,41 @@ Tcl_InitNotifier() LOCK_NOTIFIER_INIT; if (notifierCount == 0) { - int fds[2], status, result; - pthread_attr_t attr; - - if (pipe(fds) != 0) { - Tcl_Panic("Tcl_InitNotifier: could not create trigger pipe."); - } - - status = fcntl(fds[0], F_GETFL); - status |= O_NONBLOCK; - if (fcntl(fds[0], F_SETFL, status) < 0) { - Tcl_Panic("Tcl_InitNotifier: could not make receive pipe non blocking."); - } - status = fcntl(fds[1], F_GETFL); - status |= O_NONBLOCK; - if (fcntl(fds[1], F_SETFL, status) < 0) { - Tcl_Panic("Tcl_InitNotifier: could not make trigger pipe non blocking."); - } - - receivePipe = fds[0]; - triggerPipe = fds[1]; - - pthread_attr_init(&attr); - pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); - pthread_attr_setstacksize(&attr, 60 * 1024); - result = pthread_create(¬ifierThread, &attr, (void * (*)(void *))NotifierThreadProc, NULL); - pthread_attr_destroy(&attr); + int fds[2], status, result; + pthread_attr_t attr; + + if (pipe(fds) != 0) { + Tcl_Panic("Tcl_InitNotifier: could not create trigger pipe."); + } + + status = fcntl(fds[0], F_GETFL); + status |= O_NONBLOCK; + if (fcntl(fds[0], F_SETFL, status) < 0) { + Tcl_Panic("Tcl_InitNotifier: could not make receive pipe non blocking."); + } + status = fcntl(fds[1], F_GETFL); + status |= O_NONBLOCK; + if (fcntl(fds[1], F_SETFL, status) < 0) { + Tcl_Panic("Tcl_InitNotifier: could not make trigger pipe non blocking."); + } + + receivePipe = fds[0]; + triggerPipe = fds[1]; + + pthread_attr_init(&attr); + pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + pthread_attr_setstacksize(&attr, 60 * 1024); + result = pthread_create(¬ifierThread, &attr, + (void * (*)(void *))NotifierThreadProc, NULL); + pthread_attr_destroy(&attr); if (result) { Tcl_Panic("Tcl_InitNotifier: unable to start notifier thread."); } } notifierCount++; UNLOCK_NOTIFIER_INIT; - + return (ClientData) tsdPtr; } @@ -301,15 +310,15 @@ Tcl_InitNotifier() * * Tcl_FinalizeNotifier -- * - * This function is called to cleanup the notifier state before - * a thread is terminated. + * This function is called to cleanup the notifier state before a thread + * is terminated. * * Results: * None. * * Side effects: - * May terminate the background notifier thread if this is the - * last notifier instance. + * May terminate the background notifier thread if this is the last + * notifier instance. * *---------------------------------------------------------------------- */ @@ -324,47 +333,52 @@ Tcl_FinalizeNotifier(clientData) notifierCount--; /* - * If this is the last thread to use the notifier, close the notifier - * pipe and wait for the background thread to terminate. + * If this is the last thread to use the notifier, close the notifier pipe + * and wait for the background thread to terminate. */ if (notifierCount == 0) { - int result; - + int result; + if (triggerPipe < 0) { Tcl_Panic("Tcl_FinalizeNotifier: notifier pipe not initialized."); } /* - * Send "q" message to the notifier thread so that it will - * terminate. The notifier will return from its call to select() - * and notice that a "q" message has arrived, it will then close - * its side of the pipe and terminate its thread. Note the we can - * not just close the pipe and check for EOF in the notifier - * thread because if a background child process was created with - * exec, select() would not register the EOF on the pipe until the - * child processes had terminated. [Bug: 4139] + * Send "q" message to the notifier thread so that it will terminate. + * The notifier will return from its call to select() and notice that + * a "q" message has arrived, it will then close its side of the pipe + * and terminate its thread. Note the we can not just close the pipe + * and check for EOF in the notifier thread because if a background + * child process was created with exec, select() would not register + * the EOF on the pipe until the child processes had terminated. [Bug: + * 4139] [Bug: 1222872] */ + write(triggerPipe, "q", 1); close(triggerPipe); - result = pthread_join(notifierThread, NULL); + result = pthread_join(notifierThread, NULL); if (result) { Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread."); } - + close(receivePipe); - triggerPipe = -1; + triggerPipe = -1; } UNLOCK_NOTIFIER_INIT; - - LOCK_NOTIFIER; /* for concurrency with Tcl_AlertNotifier */ + + LOCK_NOTIFIER; /* for concurrency with Tcl_AlertNotifier */ if (tsdPtr->runLoop) { - tsdPtr->runLoop = NULL; - /* Remove runLoopSource from all CFRunLoops and release it */ - CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); - CFRelease(tsdPtr->runLoopSource); - tsdPtr->runLoopSource = NULL; + tsdPtr->runLoop = NULL; + + /* + * Remove runLoopSource from all CFRunLoops and release it. + */ + + CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); + CFRelease(tsdPtr->runLoopSource); + tsdPtr->runLoopSource = NULL; } UNLOCK_NOTIFIER; } @@ -374,18 +388,16 @@ Tcl_FinalizeNotifier(clientData) * * Tcl_AlertNotifier -- * - * Wake up the specified notifier from any thread. This routine - * is called by the platform independent notifier code whenever - * the Tcl_ThreadAlert routine is called. This routine is - * guaranteed not to be called on a given notifier after - * Tcl_FinalizeNotifier is called for that notifier. + * Wake up the specified notifier from any thread. This routine is called + * by the platform independent notifier code whenever the Tcl_ThreadAlert + * routine is called. This routine is guaranteed not to be called on a + * given notifier after Tcl_FinalizeNotifier is called for that notifier. * * Results: * None. * * Side effects: - * Signals the notifier condition variable for the specified - * notifier. + * Signals the notifier condition variable for the specified notifier. * *---------------------------------------------------------------------- */ @@ -395,11 +407,12 @@ Tcl_AlertNotifier(clientData) ClientData clientData; { ThreadSpecificData *tsdPtr = (ThreadSpecificData *) clientData; + LOCK_NOTIFIER; if (tsdPtr->runLoop) { - tsdPtr->eventReady = 1; - CFRunLoopSourceSignal(tsdPtr->runLoopSource); - CFRunLoopWakeUp(tsdPtr->runLoop); + tsdPtr->eventReady = 1; + CFRunLoopSourceSignal(tsdPtr->runLoopSource); + CFRunLoopWakeUp(tsdPtr->runLoop); } UNLOCK_NOTIFIER; } @@ -409,9 +422,9 @@ Tcl_AlertNotifier(clientData) * * Tcl_SetTimer -- * - * This procedure sets the current notifier timer value. This - * interface is not implemented in this notifier because we are - * always running inside of Tcl_DoOneEvent. + * This function sets the current notifier timer value. This interface is + * not implemented in this notifier because we are always running inside + * of Tcl_DoOneEvent. * * Results: * None. @@ -427,9 +440,9 @@ Tcl_SetTimer(timePtr) Tcl_Time *timePtr; /* Timeout value, may be NULL. */ { /* - * The interval timer doesn't do anything in this implementation, - * because the only event loop is via Tcl_DoOneEvent, which passes - * timeout values to Tcl_WaitForEvent. + * The interval timer doesn't do anything in this implementation, because + * the only event loop is via Tcl_DoOneEvent, which passes timeout values + * to Tcl_WaitForEvent. */ if (tclStubs.tcl_SetTimer != tclOriginalNotifier.setTimerProc) { @@ -465,7 +478,7 @@ Tcl_ServiceModeHook(mode) * * Tcl_CreateFileHandler -- * - * This procedure registers a file handler with the select notifier. + * This function registers a file handler with the select notifier. * * Results: * None. @@ -480,17 +493,18 @@ void Tcl_CreateFileHandler(fd, mask, proc, clientData) int fd; /* Handle of stream to watch. */ int mask; /* OR'ed combination of TCL_READABLE, - * TCL_WRITABLE, and TCL_EXCEPTION: - * indicates conditions under which - * proc should be called. */ - Tcl_FileProc *proc; /* Procedure to call for each - * selected event. */ + * TCL_WRITABLE, and TCL_EXCEPTION: indicates + * conditions under which proc should be + * called. */ + Tcl_FileProc *proc; /* Function to call for each selected + * event. */ ClientData clientData; /* Arbitrary data to pass to proc. */ { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); FileHandler *filePtr; - if (tclStubs.tcl_CreateFileHandler != tclOriginalNotifier.createFileHandlerProc) { + if (tclStubs.tcl_CreateFileHandler != + tclOriginalNotifier.createFileHandlerProc) { tclStubs.tcl_CreateFileHandler(fd, mask, proc, clientData); return; } @@ -541,8 +555,7 @@ Tcl_CreateFileHandler(fd, mask, proc, clientData) * * Tcl_DeleteFileHandler -- * - * Cancel a previously-arranged callback arrangement for - * a file. + * Cancel a previously-arranged callback arrangement for a file. * * Results: * None. @@ -555,13 +568,15 @@ Tcl_CreateFileHandler(fd, mask, proc, clientData) void Tcl_DeleteFileHandler(fd) - int fd; /* Stream id for which to remove callback procedure. */ + int fd; /* Stream id for which to remove callback + * function. */ { FileHandler *filePtr, *prevPtr; int i; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - if (tclStubs.tcl_DeleteFileHandler != tclOriginalNotifier.deleteFileHandlerProc) { + if (tclStubs.tcl_DeleteFileHandler != + tclOriginalNotifier.deleteFileHandlerProc) { tclStubs.tcl_DeleteFileHandler(fd); return; } @@ -627,19 +642,19 @@ Tcl_DeleteFileHandler(fd) * * FileHandlerEventProc -- * - * This procedure is called by Tcl_ServiceEvent when a file event - * reaches the front of the event queue. This procedure is - * responsible for actually handling the event by invoking the - * callback for the file handler. + * This function is called by Tcl_ServiceEvent when a file event reaches + * the front of the event queue. This function is responsible for + * actually handling the event by invoking the callback for the file + * handler. * * Results: - * Returns 1 if the event was handled, meaning it should be removed - * from the queue. Returns 0 if the event was not handled, meaning - * it should stay on the queue. The only time the event isn't - * handled is if the TCL_FILE_EVENTS flag bit isn't set. + * Returns 1 if the event was handled, meaning it should be removed from + * the queue. Returns 0 if the event was not handled, meaning it should + * stay on the queue. The only time the event isn't handled is if the + * TCL_FILE_EVENTS flag bit isn't set. * * Side effects: - * Whatever the file handler's callback procedure does. + * Whatever the file handler's callback function does. * *---------------------------------------------------------------------- */ @@ -647,8 +662,8 @@ Tcl_DeleteFileHandler(fd) static int FileHandlerEventProc(evPtr, flags) Tcl_Event *evPtr; /* Event to service. */ - int flags; /* Flags that indicate what events to - * handle, such as TCL_FILE_EVENTS. */ + int flags; /* Flags that indicate what events to handle, + * such as TCL_FILE_EVENTS. */ { int mask; FileHandler *filePtr; @@ -661,9 +676,9 @@ FileHandlerEventProc(evPtr, flags) /* * Search through the file handlers to find the one whose handle matches - * the event. We do this rather than keeping a pointer to the file - * handler directly in the event, so that the handler can be deleted - * while the event is queued without leaving a dangling pointer. + * the event. We do this rather than keeping a pointer to the file handler + * directly in the event, so that the handler can be deleted while the + * event is queued without leaving a dangling pointer. */ tsdPtr = TCL_TSD_INIT(&dataKey); @@ -675,14 +690,14 @@ FileHandlerEventProc(evPtr, flags) /* * The code is tricky for two reasons: - * 1. The file handler's desired events could have changed - * since the time when the event was queued, so AND the - * ready mask with the desired mask. - * 2. The file could have been closed and re-opened since - * the time when the event was queued. This is why the - * ready mask is stored in the file handler rather than - * the queued event: it will be zeroed when a new - * file handler is created for the newly opened file. + * 1. The file handler's desired events could have changed since the + * time when the event was queued, so AND the ready mask with the + * desired mask. + * 2. The file could have been closed and re-opened since the time + * when the event was queued. This is why the ready mask is stored + * in the file handler rather than the queued event: it will be + * zeroed when a new file handler is created for the newly opened + * file. */ mask = filePtr->readyMask & filePtr->mask; @@ -700,13 +715,12 @@ FileHandlerEventProc(evPtr, flags) * * Tcl_WaitForEvent -- * - * This function is called by Tcl_DoOneEvent to wait for new - * events on the message queue. If the block time is 0, then - * Tcl_WaitForEvent just polls without blocking. + * This function is called by Tcl_DoOneEvent to wait for new events on + * the message queue. If the block time is 0, then Tcl_WaitForEvent just + * polls without blocking. * * Results: - * Returns -1 if the select would block forever, otherwise - * returns 0. + * Returns -1 if the select would block forever, otherwise returns 0. * * Side effects: * Queues file events that are detected by the select. @@ -739,10 +753,10 @@ Tcl_WaitForEvent(timePtr) if (timePtr != NULL && timePtr->sec == 0 && timePtr->usec == 0) { /* * Cannot emulate a polling select with a polling condition variable. - * Instead, pretend to wait for files and tell the notifier - * thread what we are doing. The notifier thread makes sure - * it goes through select with its select mask in the same state - * as ours currently is. We block until that happens. + * Instead, pretend to wait for files and tell the notifier thread + * what we are doing. The notifier thread makes sure it goes through + * select with its select mask in the same state as ours currently is. + * We block until that happens. */ waitForFiles = 1; @@ -754,9 +768,9 @@ Tcl_WaitForEvent(timePtr) if (waitForFiles) { /* - * Add the ThreadSpecificData structure of this thread to the list - * of ThreadSpecificData structures of all threads that are waiting - * on file events. + * Add the ThreadSpecificData structure of this thread to the list of + * ThreadSpecificData structures of all threads that are waiting on + * file events. */ tsdPtr->nextPtr = waitingListPtr; @@ -775,23 +789,23 @@ Tcl_WaitForEvent(timePtr) FD_ZERO(&(tsdPtr->readyMasks.exceptional)); if (!tsdPtr->eventReady) { - CFTimeInterval waitTime; - - if (timePtr == NULL) { - waitTime = 1.0e10; /* Wait forever, as per CFRunLoop.c */ - } else { - waitTime = timePtr->sec + 1.0e-6 * timePtr->usec; - } - UNLOCK_NOTIFIER; - CFRunLoopRunInMode(kCFRunLoopDefaultMode, waitTime, TRUE); - LOCK_NOTIFIER; + CFTimeInterval waitTime; + + if (timePtr == NULL) { + waitTime = 1.0e10; /* Wait forever, as per CFRunLoop.c */ + } else { + waitTime = timePtr->sec + 1.0e-6 * timePtr->usec; + } + UNLOCK_NOTIFIER; + CFRunLoopRunInMode(kCFRunLoopDefaultMode, waitTime, TRUE); + LOCK_NOTIFIER; } tsdPtr->eventReady = 0; if (waitForFiles && tsdPtr->onList) { /* * Remove the ThreadSpecificData structure of this thread from the - * waiting list. Alert the notifier thread to recompute its select + * waiting list. Alert the notifier thread to recompute its select * masks - skipping this caused a hang when trying to close a pipe * which the notifier thread was still doing a select on. */ @@ -809,7 +823,6 @@ Tcl_WaitForEvent(timePtr) write(triggerPipe, "", 1); } - /* * Queue all detected file events before returning. */ @@ -833,8 +846,8 @@ Tcl_WaitForEvent(timePtr) } /* - * Don't bother to queue an event if the mask was previously - * non-zero since an event must still be on the queue. + * Don't bother to queue an event if the mask was previously non-zero + * since an event must still be on the queue. */ if (filePtr->readyMask == 0) { @@ -855,21 +868,20 @@ Tcl_WaitForEvent(timePtr) * NotifierThreadProc -- * * This routine is the initial (and only) function executed by the - * special notifier thread. Its job is to wait for file descriptors - * to become readable or writable or to have an exception condition - * and then to notify other threads who are interested in this - * information by signalling a condition variable. Other threads - * can signal this notifier thread of a change in their interests - * by writing a single byte to a special pipe that the notifier - * thread is monitoring. + * special notifier thread. Its job is to wait for file descriptors to + * become readable or writable or to have an exception condition and then + * to notify other threads who are interested in this information by + * signalling a condition variable. Other threads can signal this + * notifier thread of a change in their interests by writing a single + * byte to a special pipe that the notifier thread is monitoring. * * Result: - * None. Once started, this routine never exits. It dies with - * the overall process. + * None. Once started, this routine never exits. It dies with the overall + * process. * * Side effects: - * The trigger pipe used to signal the notifier thread is created - * when the notifier thread first starts. + * The trigger pipe used to signal the notifier thread is created when + * the notifier thread first starts. * *---------------------------------------------------------------------- */ @@ -897,8 +909,8 @@ NotifierThreadProc(clientData) FD_ZERO(&exceptionalMask); /* - * Compute the logical OR of the select masks from all the - * waiting notifiers. + * Compute the logical OR of the select masks from all the waiting + * notifiers. */ LOCK_NOTIFIER; @@ -920,8 +932,8 @@ NotifierThreadProc(clientData) } if (tsdPtr->pollState & POLL_WANT) { /* - * Here we make sure we go through select() with the same - * mask bits that were present when the thread tried to poll. + * Here we make sure we go through select() with the same mask + * bits that were present when the thread tried to poll. */ tsdPtr->pollState |= POLL_DONE; @@ -978,10 +990,10 @@ NotifierThreadProc(clientData) tsdPtr->eventReady = 1; if (tsdPtr->onList) { /* - * Remove the ThreadSpecificData structure of this - * thread from the waiting list. This prevents us from - * continuously spining on select until the other - * threads runs and services the file event. + * Remove the ThreadSpecificData structure of this thread + * from the waiting list. This prevents us from + * continuously spining on select until the other threads + * runs and services the file event. */ if (tsdPtr->prevPtr) { @@ -1006,8 +1018,8 @@ NotifierThreadProc(clientData) /* * Consume the next byte from the notifier pipe if the pipe was - * readable. Note that there may be multiple bytes pending, but - * to avoid a race condition we only read one at a time. + * readable. Note that there may be multiple bytes pending, but to + * avoid a race condition we only read one at a time. */ if (FD_ISSET(receivePipe, &readableMask)) { @@ -1015,9 +1027,9 @@ NotifierThreadProc(clientData) if ((i == 0) || ((i == 1) && (buf[0] == 'q'))) { /* - * Someone closed the write end of the pipe or sent us a - * Quit message [Bug: 4139] and then closed the write end - * of the pipe so we need to shut down the notifier thread. + * Someone closed the write end of the pipe or sent us a Quit + * message [Bug: 4139] and then closed the write end of the + * pipe so we need to shut down the notifier thread. */ break; @@ -1026,5 +1038,4 @@ NotifierThreadProc(clientData) } pthread_exit (0); } - #endif /* HAVE_COREFOUNDATION */ diff --git a/unix/Makefile.in b/unix/Makefile.in index fce9f09..0f816e7 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.15 2005/06/23 05:59:51 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.16 2005/11/27 02:34:41 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -490,7 +490,7 @@ objs: ${OBJS} tclsh: ${TCLSH_OBJS} ${TCL_LIB_FILE} - ${CC} ${LDFLAGS} ${TCLSH_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} \ + ${CC} ${CFLAGS} ${LDFLAGS} ${TCLSH_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} \ ${CC_SEARCH_FLAGS} -o tclsh # Resetting the LIB_RUNTIME_DIR below is required so that @@ -502,7 +502,7 @@ tcltest: ${TCLTEST_OBJS} ${TCL_LIB_FILE} ${BUILD_DLTEST} $(MAKE) tcltest-real LIB_RUNTIME_DIR=`pwd` tcltest-real: - ${CC} ${LDFLAGS} ${TCLTEST_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} \ + ${CC} ${CFLAGS} ${LDFLAGS} ${TCLTEST_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} \ ${CC_SEARCH_FLAGS} -o tcltest # Note, in the target below TCL_LIBRARY needs to be set or else @@ -771,8 +771,12 @@ depend: # complicated because they are compiled from tclAppInit.c. Can't use # the "-o" option because this doesn't work on some strange compilers # (e.g. UnixWare). +# To enable concurrent parallel make of tclsh and tcltest resp xttest, these +# targets have to depend on tclsh, this ensures that linking of tclsh with +# tclAppInit.o does not execute concurrently with the renaming and recompiling +# of that same object file in the targets below. -tclTestInit.o: $(UNIX_DIR)/tclAppInit.c +tclTestInit.o: $(UNIX_DIR)/tclAppInit.c tclsh @if test -f tclAppInit.o ; then \ rm -f tclAppInit.sav; \ mv tclAppInit.o tclAppInit.sav; \ @@ -786,7 +790,7 @@ tclTestInit.o: $(UNIX_DIR)/tclAppInit.c mv tclAppInit.sav tclAppInit.o; \ fi; -xtTestInit.o: $(UNIX_DIR)/tclAppInit.c +xtTestInit.o: $(UNIX_DIR)/tclAppInit.c tclsh @if test -f tclAppInit.o ; then \ rm -f tclAppInit.sav; \ mv tclAppInit.o tclAppInit.sav; \ @@ -1166,12 +1170,13 @@ genstubs: # tables. # -checkstubs: - -@for i in `nm -p $(TCL_LIB_FILE) | awk '$$2 ~ /T/ { print $$3 }' \ +checkstubs: $(TCL_LIB_FILE) + -@for i in `nm -p $(TCL_LIB_FILE) \ + | awk '$$2 ~ /^[TDBCS]$$/ { sub("^_", "", $$3); print $$3 }' \ | sort -n`; do \ match=0; \ for j in $(TCL_DECLS); do \ - if [ `grep -c $$i $$j` -gt 0 ]; then \ + if [ `grep -c "$$i *(" $$j` -gt 0 ]; then \ match=1; \ fi; \ done; \ @@ -1184,7 +1189,7 @@ checkstubs: # manpages. # -checkdoc: +checkdoc: $(TCL_LIB_FILE) -@for i in `nm -p $(TCL_LIB_FILE) | awk '$$3 ~ /Tcl_/ { print $$3 }' \ | grep -v 'Cmd$$' | sort -n`; do \ match=0; \ @@ -1209,7 +1214,9 @@ checkuchar: # checkexports: $(TCL_LIB_FILE) - -nm -p $(TCL_LIB_FILE) | awk '$$2 ~ /[TDB]/ { print $$3 }' | sort -n | grep -v '^[Tt]cl' + -@nm -p $(TCL_LIB_FILE) \ + | awk '$$2 ~ /^[TDBCS]$$/ { sub("^_", "", $$3); print $$3 }' \ + | sort -n | grep -E -v '^[Tt]cl' || true # # Target to create a Tcl RPM for Linux. Requires that you be on a Linux @@ -1314,12 +1321,11 @@ dist: cp -p $(TOP_DIR)/mac/*.doc $(TOP_DIR)/mac/*.html $(DISTDIR)/mac cp -p $(TOP_DIR)/license.terms $(DISTDIR)/mac mkdir $(DISTDIR)/macosx - cp -p $(TOP_DIR)/macosx/Makefile \ + cp -p $(TOP_DIR)/macosx/Makefile $(TOP_DIR)/macosx/README \ $(TOP_DIR)/macosx/*.c $(TOP_DIR)/macosx/*.in \ $(DISTDIR)/macosx mkdir $(DISTDIR)/macosx/Tcl.pbproj cp -p $(TOP_DIR)/macosx/Tcl.pbproj/*.pbx* $(DISTDIR)/macosx/Tcl.pbproj - cp -p $(TOP_DIR)/macosx/README $(DISTDIR)/macosx mkdir $(DISTDIR)/unix/dltest cp -p $(UNIX_DIR)/dltest/*.c $(UNIX_DIR)/dltest/Makefile.in \ $(UNIX_DIR)/dltest/README \ diff --git a/unix/configure b/unix/configure index 111e53e..16bcd62 100755 --- a/unix/configure +++ b/unix/configure @@ -15,11 +15,11 @@ ac_help="$ac_help --enable-man-symlinks use symlinks for the manpages" ac_help="$ac_help --enable-man-compression=PROG - compress the manpages with PROG" + compress the manpages with PROG" ac_help="$ac_help --enable-man-suffix=STRING - use STRING as a suffix to manpage file names - (default: tcl)" + use STRING as a suffix to manpage file names + (default: tcl)" ac_help="$ac_help --enable-threads build with threads" ac_help="$ac_help @@ -567,16 +567,17 @@ fi if test "${exec_prefix}" = "NONE"; then exec_prefix=$prefix fi +# Make sure srcdir is fully qualified! +srcdir=`cd $srcdir ; pwd` TCL_SRC_DIR=`cd $srcdir/..; pwd` #------------------------------------------------------------------------ # Compress and/or soft link the manpages? #------------------------------------------------------------------------ - - echo $ac_n "checking whether to use symlinks for manpages""... $ac_c" 1>&6 -echo "configure:579: checking whether to use symlinks for manpages" >&5 - # Check whether --enable-man-symlinks or --disable-man-symlinks was given. + echo $ac_n "checking whether to use symlinks for manpages""... $ac_c" 1>&6 +echo "configure:580: checking whether to use symlinks for manpages" >&5 + # Check whether --enable-man-symlinks or --disable-man-symlinks was given. if test "${enable_man_symlinks+set}" = set; then enableval="$enable_man_symlinks" test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks" @@ -584,45 +585,45 @@ else enableval="no" fi - echo "$ac_t""$enableval" 1>&6 + echo "$ac_t""$enableval" 1>&6 - echo $ac_n "checking whether to compress the manpages""... $ac_c" 1>&6 -echo "configure:591: checking whether to compress the manpages" >&5 - # Check whether --enable-man-compression or --disable-man-compression was given. + echo $ac_n "checking whether to compress the manpages""... $ac_c" 1>&6 +echo "configure:592: checking whether to compress the manpages" >&5 + # Check whether --enable-man-compression or --disable-man-compression was given. if test "${enable_man_compression+set}" = set; then enableval="$enable_man_compression" test "$enableval" = "yes" && { echo "configure: error: missing argument to --enable-man-compression" 1>&2; exit 1; } - test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --compress $enableval" + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --compress $enableval" else enableval="no" fi - echo "$ac_t""$enableval" 1>&6 - if test "$enableval" != "no"; then - echo $ac_n "checking for compressed file suffix""... $ac_c" 1>&6 -echo "configure:604: checking for compressed file suffix" >&5 - touch TeST - $enableval TeST - Z=`ls TeST* | sed 's/^....//'` - rm -f TeST* - MAN_FLAGS="$MAN_FLAGS --extension $Z" - echo "$ac_t""$Z" 1>&6 - fi + echo "$ac_t""$enableval" 1>&6 + if test "$enableval" != "no"; then + echo $ac_n "checking for compressed file suffix""... $ac_c" 1>&6 +echo "configure:605: checking for compressed file suffix" >&5 + touch TeST + $enableval TeST + Z=`ls TeST* | sed 's/^....//'` + rm -f TeST* + MAN_FLAGS="$MAN_FLAGS --extension $Z" + echo "$ac_t""$Z" 1>&6 + fi - echo $ac_n "checking whether to add a package name suffix for the manpages""... $ac_c" 1>&6 -echo "configure:614: checking whether to add a package name suffix for the manpages" >&5 - # Check whether --enable-man-suffix or --disable-man-suffix was given. + echo $ac_n "checking whether to add a package name suffix for the manpages""... $ac_c" 1>&6 +echo "configure:615: checking whether to add a package name suffix for the manpages" >&5 + # Check whether --enable-man-suffix or --disable-man-suffix was given. if test "${enable_man_suffix+set}" = set; then enableval="$enable_man_suffix" test "$enableval" = "yes" && enableval="tcl" - test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --suffix $enableval" + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --suffix $enableval" else enableval="no" fi - echo "$ac_t""$enableval" 1>&6 + echo "$ac_t""$enableval" 1>&6 - + #------------------------------------------------------------------------ @@ -638,7 +639,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:642: checking for $ac_word" >&5 +echo "configure:643: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -668,7 +669,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:672: checking for $ac_word" >&5 +echo "configure:673: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -719,7 +720,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:723: checking for $ac_word" >&5 +echo "configure:724: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -751,7 +752,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:755: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:756: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -762,12 +763,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 766 "configure" +#line 767 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -793,12 +794,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:797: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:798: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:802: checking whether we are using GNU C" >&5 +echo "configure:803: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -807,7 +808,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -826,7 +827,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:830: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:831: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -858,674 +859,547 @@ else fi -#------------------------------------------------------------------------ -# Threads support -#------------------------------------------------------------------------ - +#-------------------------------------------------------------------- +# Supply substitutes for missing POSIX header files. Special +# notes: +# - stdlib.h doesn't define strtol, strtoul, or +# strtod insome versions of SunOS +# - some versions of string.h don't declare procedures such +# as strstr +# Do this early, otherwise an autoconf bug throws errors on configure +#-------------------------------------------------------------------- - echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:868: checking for building with threads" >&5 - # Check whether --enable-threads or --disable-threads was given. -if test "${enable_threads+set}" = set; then - enableval="$enable_threads" - tcl_ok=$enableval -else - tcl_ok=no +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:874: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= fi - - - if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then - if test "${TCL_THREADS}" = 1; then - echo "$ac_t""yes (threaded core)" 1>&6 - else - echo "$ac_t""yes" 1>&6 - fi - TCL_THREADS=1 - cat >> confdefs.h <<\EOF -#define TCL_THREADS 1 -EOF - - # USE_THREAD_ALLOC tells us to try the special thread-based - # allocator that significantly reduces lock contention - cat >> confdefs.h <<\EOF -#define USE_THREAD_ALLOC 1 -EOF - - cat >> confdefs.h <<\EOF -#define _REENTRANT 1 -EOF - - if test "`uname -s`" = "SunOS" ; then - cat >> confdefs.h <<\EOF -#define _POSIX_PTHREAD_SEMANTICS 1 -EOF - - fi - cat >> confdefs.h <<\EOF -#define _THREAD_SAFE 1 -EOF - - echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:910: checking for pthread_mutex_init in -lpthread" >&5 -ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lpthread $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < +Syntax Error EOF -if { (eval echo configure:929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:912: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_ok=yes +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" else - echo "$ac_t""no" 1>&6 -tcl_ok=no + ac_cv_prog_CPP="$CPP" fi +echo "$ac_t""$CPP" 1>&6 - if test "$tcl_ok" = "no"; then - # Check a little harder for __pthread_mutex_init in the same - # library, as some systems hide it there until pthread.h is - # defined. We could alternatively do an AC_TRY_COMPILE with - # pthread.h, but that will work with libpthread really doesn't - # exist, like AIX 4.2. [Bug: 4359] - echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:957: checking for __pthread_mutex_init in -lpthread" >&5 -ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + + echo $ac_n "checking dirent.h""... $ac_c" 1>&6 +echo "configure:955: checking dirent.h" >&5 + if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lpthread $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < +#include int main() { -__pthread_mutex_init() + +#ifndef _POSIX_SOURCE +# ifdef __Lynx__ + /* + * Generate compilation error to make the test fail: Lynx headers + * are only valid if really in the POSIX environment. + */ + + missing_procedure(); +# endif +#endif +DIR *d; +struct dirent *entryPtr; +char *p; +d = opendir("foobar"); +entryPtr = readdir(d); +p = entryPtr->d_name; +closedir(d); + ; return 0; } EOF -if { (eval echo configure:976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + tcl_cv_dirent_h=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + tcl_cv_dirent_h=no fi rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_ok=yes -else - echo "$ac_t""no" 1>&6 -tcl_ok=no fi - fi - if test "$tcl_ok" = "yes"; then - # The space is needed - THREADS_LIBS=" -lpthread" - else - echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1004: checking for pthread_mutex_init in -lpthreads" >&5 -ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + if test $tcl_cv_dirent_h = no; then + cat >> confdefs.h <<\EOF +#define NO_DIRENT_H 1 +EOF + + fi + + echo "$ac_t""$tcl_ok" 1>&6 + ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for errno.h""... $ac_c" 1>&6 +echo "configure:1009: checking for errno.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lpthreads $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:1023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=yes + : else echo "$ac_t""no" 1>&6 -tcl_ok=no +cat >> confdefs.h <<\EOF +#define NO_ERRNO_H 1 +EOF + fi - if test "$tcl_ok" = "yes"; then - # The space is needed - THREADS_LIBS=" -lpthreads" - else - echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1049: checking for pthread_mutex_init in -lc" >&5 -ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for float.h""... $ac_c" 1>&6 +echo "configure:1046: checking for float.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lc $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:1068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1056: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=yes + : else echo "$ac_t""no" 1>&6 -tcl_ok=no +cat >> confdefs.h <<\EOF +#define NO_FLOAT_H 1 +EOF + fi - if test "$tcl_ok" = "no"; then - echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1091: checking for pthread_mutex_init in -lc_r" >&5 -ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for values.h""... $ac_c" 1>&6 +echo "configure:1083: checking for values.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lc_r $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:1110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=yes + : else echo "$ac_t""no" 1>&6 -tcl_ok=no -fi - - if test "$tcl_ok" = "yes"; then - # The space is needed - THREADS_LIBS=" -pthread" - else - TCL_THREADS=0 - echo "configure: warning: "Don t know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..."" 1>&2 - fi - fi - fi - fi +cat >> confdefs.h <<\EOF +#define NO_VALUES_H 1 +EOF - # Does the pthread-implementation provide - # 'pthread_attr_setstacksize' ? +fi - ac_saved_libs=$LIBS - LIBS="$LIBS $THREADS_LIBS" - for ac_func in pthread_attr_setstacksize -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1150: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for limits.h""... $ac_c" 1>&6 +echo "configure:1120: checking for limits.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } +#include EOF -if { (eval echo configure:1178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <> confdefs.h <<\EOF +#define HAVE_LIMITS_H 1 EOF - + else echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_LIMITS_H 1 +EOF + fi -done - for ac_func in pthread_atfork -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1205: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 +echo "configure:1160: checking for stdlib.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } +#include EOF -if { (eval echo configure:1233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 +tcl_ok=0 fi -done - - LIBS=$ac_saved_libs - else - TCL_THREADS=0 - echo "$ac_t""no (default)" 1>&6 - fi - - - -#------------------------------------------------------------------------ -# If we're using GCC, see if the compiler understands -pipe. If so, use it. -# It makes compiling go faster. (This is only a performance feature.) -#------------------------------------------------------------------------ -if test -z "$no_pipe"; then -if test -n "$GCC"; then - echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1273: checking if the compiler understands -pipe" >&5 - OLDCC="$CC" - CC="$CC -pipe" - cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:1284: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - echo "$ac_t""yes" 1>&6 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "strtol" >/dev/null 2>&1; then + : else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - CC="$OLDCC" - echo "$ac_t""no" 1>&6 + tcl_ok=0 fi rm -f conftest* -fi -fi - -#-------------------------------------------------------------------- -# Look for libraries that we will need when compiling the Tcl shell -#-------------------------------------------------------------------- -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1303: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < conftest.$ac_ext < -Syntax Error +#include EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "strtoul" >/dev/null 2>&1; then : else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error + tcl_ok=0 +fi +rm -f conftest* + + cat > conftest.$ac_ext < EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "strtod" >/dev/null 2>&1; then : else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - CPP="${CC-cc} -nologo -E" + tcl_ok=0 +fi +rm -f conftest* + + if test $tcl_ok = 0; then + cat >> confdefs.h <<\EOF +#define NO_STDLIB_H 1 +EOF + + fi + ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for string.h""... $ac_c" 1>&6 +echo "configure:1242: checking for string.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else cat > conftest.$ac_ext < -Syntax Error +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then - : + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* - ac_cv_prog_CPP="$CPP" fi - CPP="$ac_cv_prog_CPP" +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 else - ac_cv_prog_CPP="$CPP" + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi -echo "$ac_t""$CPP" 1>&6 - - - #-------------------------------------------------------------------- - # On a few very rare systems, all of the libm.a stuff is - # already in libc.a. Set compiler flags accordingly. - # Also, Linux requires the "ieee" library for math to work - # right (and it must appear before "-lm"). - #-------------------------------------------------------------------- - echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1391: checking for sin" >&5 -if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char sin(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_sin) || defined (__stub___sin) -choke me -#else -sin(); -#endif - -; return 0; } +#include EOF -if { (eval echo configure:1419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_sin=yes" +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "strstr" >/dev/null 2>&1; then + : else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_sin=no" + tcl_ok=0 fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then - echo "$ac_t""yes" 1>&6 - MATH_LIBS="" + cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "strerror" >/dev/null 2>&1; then + : else - echo "$ac_t""no" 1>&6 -MATH_LIBS="-lm" + rm -rf conftest* + tcl_ok=0 fi +rm -f conftest* - echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1440: checking for main in -lieee" >&5 -ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + + # See also memmove check below for a place where NO_STRING_H can be + # set and why. + + if test $tcl_ok = 0; then + cat >> confdefs.h <<\EOF +#define NO_STRING_H 1 +EOF + + fi + + ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 +echo "configure:1315: checking for sys/wait.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lieee $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:1455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - MATH_LIBS="-lieee $MATH_LIBS" + : else echo "$ac_t""no" 1>&6 -fi - +cat >> confdefs.h <<\EOF +#define NO_SYS_WAIT_H 1 +EOF - #-------------------------------------------------------------------- - # Interactive UNIX requires -linet instead of -lsocket, plus it - # needs net/errno.h to define the socket-related error codes. - #-------------------------------------------------------------------- +fi - echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1482: checking for main in -linet" >&5 -ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 +echo "configure:1352: checking for dlfcn.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-linet $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:1497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -linet" + : else echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_DLFCN_H 1 +EOF + fi - ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:1519: checking for net/errno.h" >&5 + + # OS/390 lacks sys/param.h (and doesn't need it, by chance). + for ac_hdr in unistd.h sys/param.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1393: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1541,151 +1415,166 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_NET_ERRNO_H 1 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 fi +done - #-------------------------------------------------------------------- - # Check for the existence of the -lsocket and -lnsl libraries. - # The order here is important, so that they end up in the right - # order in the command line generated by make. Here are some - # special considerations: - # 1. Use "connect" and "accept" to check for -lsocket, and - # "gethostbyname" to check for -lnsl. - # 2. Use each function name only once: can't redo a check because - # autoconf caches the results of the last check and won't redo it. - # 3. Use -lnsl and -lsocket only if they supply procedures that - # aren't already present in the normal libraries. This is because - # IRIX 5.2 has libraries, but they aren't needed and they're - # bogus: they goof up name resolution if used. - # 4. On some SVR4 systems, can't use -lsocket without -lnsl too. - # To get around this problem, check for both libraries together - # if -lsocket doesn't work by itself. - #-------------------------------------------------------------------- - tcl_checkBoth=0 - echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1574: checking for connect" >&5 -if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else +#------------------------------------------------------------------------ +# If we're using GCC, see if the compiler understands -pipe. If so, use it. +# It makes compiling go faster. (This is only a performance feature.) +#------------------------------------------------------------------------ + +if test -z "$no_pipe"; then +if test -n "$GCC"; then + echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 +echo "configure:1439: checking if the compiler understands -pipe" >&5 + OLDCC="$CC" + CC="$CC -pipe" cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char connect(); int main() { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_connect) || defined (__stub___connect) -choke me -#else -connect(); -#endif - ; return 0; } EOF -if { (eval echo configure:1602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1450: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_connect=yes" + echo "$ac_t""yes" 1>&6 else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_connect=no" + CC="$OLDCC" + echo "$ac_t""no" 1>&6 fi rm -f conftest* +fi fi -if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_checkSocket=0 +#------------------------------------------------------------------------ +# Threads support +#------------------------------------------------------------------------ + + + echo $ac_n "checking for building with threads""... $ac_c" 1>&6 +echo "configure:1470: checking for building with threads" >&5 + # Check whether --enable-threads or --disable-threads was given. +if test "${enable_threads+set}" = set; then + enableval="$enable_threads" + tcl_ok=$enableval else - echo "$ac_t""no" 1>&6 -tcl_checkSocket=1 + tcl_ok=no fi - if test "$tcl_checkSocket" = 1; then - echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:1624: checking for setsockopt" >&5 -if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then + + if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then + if test "${TCL_THREADS}" = 1; then + echo "$ac_t""yes (threaded core)" 1>&6 + else + echo "$ac_t""yes" 1>&6 + fi + TCL_THREADS=1 + cat >> confdefs.h <<\EOF +#define TCL_THREADS 1 +EOF + + # USE_THREAD_ALLOC tells us to try the special thread-based + # allocator that significantly reduces lock contention + cat >> confdefs.h <<\EOF +#define USE_THREAD_ALLOC 1 +EOF + + cat >> confdefs.h <<\EOF +#define _REENTRANT 1 +EOF + + if test "`uname -s`" = "SunOS" ; then + cat >> confdefs.h <<\EOF +#define _POSIX_PTHREAD_SEMANTICS 1 +EOF + + fi + cat >> confdefs.h <<\EOF +#define _THREAD_SAFE 1 +EOF + + echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 +echo "configure:1512: checking for pthread_mutex_init in -lpthread" >&5 +ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char setsockopt(); +char pthread_mutex_init(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_setsockopt) || defined (__stub___setsockopt) -choke me -#else -setsockopt(); -#endif - +pthread_mutex_init() ; return 0; } EOF -if { (eval echo configure:1652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_setsockopt=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_setsockopt=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -fi +LIBS="$ac_save_LIBS" -if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + tcl_ok=yes else echo "$ac_t""no" 1>&6 -echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:1670: checking for setsockopt in -lsocket" >&5 -ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` +tcl_ok=no +fi + + if test "$tcl_ok" = "no"; then + # Check a little harder for __pthread_mutex_init in the same + # library, as some systems hide it there until pthread.h is + # defined. We could alternatively do an AC_TRY_COMPILE with + # pthread.h, but that will work with libpthread really doesn't + # exist, like AIX 4.2. [Bug: 4359] + echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 +echo "configure:1559: checking for __pthread_mutex_init in -lpthread" >&5 +ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-lsocket $LIBS" +LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1700,135 +1589,126 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -lsocket" + tcl_ok=yes else echo "$ac_t""no" 1>&6 -tcl_checkBoth=1 +tcl_ok=no fi -fi + fi - fi - if test "$tcl_checkBoth" = 1; then - tk_oldLibs=$LIBS - LIBS="$LIBS -lsocket -lnsl" - echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:1717: checking for accept" >&5 -if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then + if test "$tcl_ok" = "yes"; then + # The space is needed + THREADS_LIBS=" -lpthread" + else + echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 +echo "configure:1606: checking for pthread_mutex_init in -lpthreads" >&5 +ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char accept(); +char pthread_mutex_init(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_accept) || defined (__stub___accept) -choke me -#else -accept(); -#endif - +pthread_mutex_init() ; return 0; } EOF -if { (eval echo configure:1745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_accept=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_accept=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -fi +LIBS="$ac_save_LIBS" -if eval "test \"`echo '$ac_cv_func_'accept`\" = yes"; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_checkNsl=0 + tcl_ok=yes else echo "$ac_t""no" 1>&6 -LIBS=$tk_oldLibs +tcl_ok=no fi - fi - echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1767: checking for gethostbyname" >&5 -if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then + if test "$tcl_ok" = "yes"; then + # The space is needed + THREADS_LIBS=" -lpthreads" + else + echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 +echo "configure:1651: checking for pthread_mutex_init in -lc" >&5 +ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char gethostbyname(); +char pthread_mutex_init(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) -choke me -#else -gethostbyname(); -#endif - +pthread_mutex_init() ; return 0; } EOF -if { (eval echo configure:1795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_gethostbyname=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_gethostbyname=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -fi +LIBS="$ac_save_LIBS" -if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + tcl_ok=yes else echo "$ac_t""no" 1>&6 -echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1813: checking for gethostbyname in -lnsl" >&5 -ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` +tcl_ok=no +fi + + if test "$tcl_ok" = "no"; then + echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 +echo "configure:1693: checking for pthread_mutex_init in -lc_r" >&5 +ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-lnsl $LIBS" +LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1843,370 +1723,224 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -lnsl" + tcl_ok=yes else echo "$ac_t""no" 1>&6 +tcl_ok=no fi -fi - - - # Don't perform the eval of the libraries here because DL_LIBS - # won't be set until we call SC_CONFIG_CFLAGS - - TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}' - - - - -# Add the threads support libraries -LIBS="$LIBS$THREADS_LIBS" + if test "$tcl_ok" = "yes"; then + # The space is needed + THREADS_LIBS=" -pthread" + else + TCL_THREADS=0 + echo "configure: warning: "Don t know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..."" 1>&2 + fi + fi + fi + fi + # Does the pthread-implementation provide + # 'pthread_attr_setstacksize' ? - echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:1868: checking how to build libraries" >&5 - # Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - tcl_ok=$enableval -else - tcl_ok=yes -fi + ac_saved_libs=$LIBS + LIBS="$LIBS $THREADS_LIBS" + for ac_func in pthread_attr_setstacksize +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1752: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); +int main() { - if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - tcl_ok=$enableval - else - tcl_ok=yes - fi +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif - if test "$tcl_ok" = "yes" ; then - echo "$ac_t""shared" 1>&6 - SHARED_BUILD=1 - else - echo "$ac_t""static" 1>&6 - SHARED_BUILD=0 - cat >> confdefs.h <<\EOF -#define STATIC_BUILD 1 +; return 0; } EOF - - fi - - -#-------------------------------------------------------------------- -# The statements below define a collection of compile flags. This -# macro depends on the value of SHARED_BUILD, and should be called -# after SC_ENABLE_SHARED checks the configure switches. -#-------------------------------------------------------------------- - -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1907: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +if { (eval echo configure:1780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" fi +rm -f conftest* fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi +done + for ac_func in pthread_atfork +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1807: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); +int main() { - # Step 0.a: Enable 64 bit support? +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif - echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:1939: checking if 64bit support is requested" >&5 - # Check whether --enable-64bit or --disable-64bit was given. -if test "${enable_64bit+set}" = set; then - enableval="$enable_64bit" - : +; return 0; } +EOF +if { (eval echo configure:1835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" else - enableval="no" + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* fi - - if test "$enableval" = "yes"; then - do64bit=yes - else - do64bit=no - fi - echo "$ac_t""$do64bit" 1>&6 - - # Step 0.b: Enable Solaris 64 bit VIS support? - - echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:1959: checking if 64bit Sparc VIS support is requested" >&5 - # Check whether --enable-64bit-vis or --disable-64bit-vis was given. -if test "${enable_64bit_vis+set}" = set; then - enableval="$enable_64bit_vis" - : +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi +done - - if test "$enableval" = "yes"; then - # Force 64bit on with VIS - do64bit=yes - do64bitVIS=yes + LIBS=$ac_saved_libs else - do64bitVIS=no + TCL_THREADS=0 + echo "$ac_t""no (default)" 1>&6 fi - echo "$ac_t""$do64bitVIS" 1>&6 + - # Step 1: set the variable "system" to hold the name and version number - # for the system. This can usually be done via the "uname" command, but - # there are a few systems, like Next, where this doesn't work. - echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:1983: checking system version (for dynamic loading)" >&5 - if test -f /usr/lib/NextStep/software_version; then - system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` - else - system=`uname -s`-`uname -r` - if test "$?" -ne 0 ; then - echo "$ac_t""unknown (can't find uname command)" 1>&6 - system=unknown - else - # Special check for weird MP-RAS system (uname returns weird - # results, and the version is kept in special file). - - if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print }' /etc/.relid'` - fi - if test "`uname -s`" = "AIX" ; then - system=AIX-`uname -v`.`uname -r` - fi - echo "$ac_t""$system" 1>&6 - fi - fi +#-------------------------------------------------------------------- +# Look for libraries that we will need when compiling the Tcl shell +#-------------------------------------------------------------------- - # Step 2: check for existence of -ldl library. This is needed because - # Linux can use either -ldl or -ldld for dynamic loading. - echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2009: checking for dlopen in -ldl" >&5 -ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + #-------------------------------------------------------------------- + # On a few very rare systems, all of the libm.a stuff is + # already in libc.a. Set compiler flags accordingly. + # Also, Linux requires the "ieee" library for math to work + # right (and it must appear before "-lm"). + #-------------------------------------------------------------------- + + echo $ac_n "checking for sin""... $ac_c" 1>&6 +echo "configure:1880: checking for sin" >&5 +if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-ldl $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char dlopen(); +char sin(); int main() { -dlopen() + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_sin) || defined (__stub___sin) +choke me +#else +sin(); +#endif + ; return 0; } EOF -if { (eval echo configure:2028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_func_sin=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_func_sin=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then echo "$ac_t""yes" 1>&6 - have_dl=yes + MATH_LIBS="" else echo "$ac_t""no" 1>&6 -have_dl=no +MATH_LIBS="-lm" fi - - # Require ranlib early so we can override it in special cases below. - - - - # Step 3: set configuration options based on system name and version. - - do64bit_ok=no - LDFLAGS_ORIG="$LDFLAGS" - TCL_EXPORT_FILE_SUFFIX="" - UNSHARED_LIB_SUFFIX="" - TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' - ECHO_VERSION='`echo ${VERSION}`' - TCL_LIB_VERSIONS_OK=ok - CFLAGS_DEBUG=-g - CFLAGS_OPTIMIZE=-O - if test "$GCC" = "yes" ; then - CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing" - else - CFLAGS_WARNING="" - fi - TCL_NEEDS_EXP_FILE=0 - TCL_BUILD_EXP_FILE="" - TCL_EXP_FILE="" - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2076: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_AR="ar" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -AR="$ac_cv_prog_AR" -if test -n "$AR"; then - echo "$ac_t""$AR" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test "${AR}" = "" ; then - { echo "configure: error: Required archive tool 'ar' not found on PATH." 1>&2; exit 1; } - fi - STLIB_LD='${AR} cr' - LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" - PLAT_OBJS="" - PLAT_SRCS="" - case $system in - AIX-*) - if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then - # AIX requires the _r compiler when gcc isn't being used - case "${CC}" in - *_r) - # ok ... - ;; - *) - CC=${CC}_r - ;; - esac - echo "$ac_t""Using $CC for compiling with threads" 1>&6 - fi - LIBS="$LIBS -lc" - SHLIB_CFLAGS="" - # Note: need the LIBS below, otherwise Tk won't find Tcl's - # symbols when dynamically loaded into tclsh. - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - - DL_OBJS="tclLoadDl.o" - LD_LIBRARY_PATH_VAR="LIBPATH" - - # Check to enable 64-bit flags for compiler/linker on AIX 4+ - if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then - if test "$GCC" = "yes" ; then - echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 - else - do64bit_ok=yes - CFLAGS="$CFLAGS -q64" - LDFLAGS="$LDFLAGS -q64" - RANLIB="${RANLIB} -X64" - AR="${AR} -X64" - SHLIB_LD_FLAGS="-b64" - fi - fi - - if test "`uname -m`" = "ia64" ; then - # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC - SHLIB_LD="/usr/ccs/bin/ld -G -z text" - # AIX-5 has dl* in libc.so - DL_LIBS="" - if test "$GCC" = "yes" ; then - CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' - else - CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' - fi - LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' - else - if test "$GCC" = "yes" ; then - SHLIB_LD="gcc -shared" - else - SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" - fi - SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - TCL_NEEDS_EXP_FILE=1 - TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' - fi - - # AIX v<=4.1 has some different flags than 4.2+ - if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then - LIBOBJS="$LIBOBJS tclLoadAix.o" - DL_LIBS="-lld" - fi - - # On AIX <=v4 systems, libbsd.a has to be linked in to support - # non-blocking file IO. This library has to be linked in after - # the MATH_LIBS or it breaks the pow() function. The way to - # insure proper sequencing, is to add it to the tail of MATH_LIBS. - # This library also supplies gettimeofday. - # - # AIX does not have a timezone field in struct tm. When the AIX - # bsd library is used, the timezone global and the gettimeofday - # methods are to be avoided for timezone deduction instead, we - # deduce the timezone by comparing the localtime result on a - # known GMT value. - - echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2191: checking for gettimeofday in -lbsd" >&5 -ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lbsd $LIBS" -cat > conftest.$ac_ext <&6 +echo "configure:1929: checking for main in -lieee" >&5 +ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lieee $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2221,54 +1955,34 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - libbsd=yes + MATH_LIBS="-lieee $MATH_LIBS" else echo "$ac_t""no" 1>&6 -libbsd=no fi - if test $libbsd = yes; then - MATH_LIBS="$MATH_LIBS -lbsd" - cat >> confdefs.h <<\EOF -#define USE_DELTA_FOR_TZ 1 -EOF - fi - ;; - BeOS*) - SHLIB_CFLAGS="-fPIC" - SHLIB_LD="${CC} -nostart" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" + #-------------------------------------------------------------------- + # Interactive UNIX requires -linet instead of -lsocket, plus it + # needs net/errno.h to define the socket-related error codes. + #-------------------------------------------------------------------- - #----------------------------------------------------------- - # Check for inet_ntoa in -lbind, for BeOS (which also needs - # -lsocket, even if the network functions are in -lnet which - # is always linked to, for compatibility. - #----------------------------------------------------------- - echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2253: checking for inet_ntoa in -lbind" >&5 -ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` + echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 +echo "configure:1971: checking for main in -linet" >&5 +ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-lbind $LIBS" +LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2283,1848 +1997,1672 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -lbind -lsocket" + LIBS="$LIBS -linet" else echo "$ac_t""no" 1>&6 fi - ;; - BSD/OS-2.1*|BSD/OS-3*) - SHLIB_CFLAGS="" - SHLIB_LD="shlicc -r" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - BSD/OS-4.*) - SHLIB_CFLAGS="-export-dynamic -fPIC" - SHLIB_LD="cc -shared" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="$LDFLAGS -export-dynamic" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - dgux*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD="cc -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - HP-UX-*.11.*) - # Use updated header definitions where possible - cat >> confdefs.h <<\EOF -#define _XOPEN_SOURCE 1 -EOF - # Use the XOPEN network library - cat >> confdefs.h <<\EOF -#define _XOPEN_SOURCE_EXTENDED 1 -EOF - # Use the XOPEN network library - LIBS="$LIBS -lxnet" # Use the XOPEN network library - - SHLIB_SUFFIX=".sl" - echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2338: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 +echo "configure:2008: checking for net/errno.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:2357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=yes + cat >> confdefs.h <<\EOF +#define HAVE_NET_ERRNO_H 1 +EOF + else echo "$ac_t""no" 1>&6 -tcl_ok=no fi - if test "$tcl_ok" = yes; then - SHLIB_CFLAGS="+z" - SHLIB_LD="ld -b" - SHLIB_LD_LIBS='${LIBS}' - DL_OBJS="tclLoadShl.o" - DL_LIBS="-ldld" - LDFLAGS="$LDFLAGS -Wl,-E" - CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' - LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' - LD_LIBRARY_PATH_VAR="SHLIB_PATH" - fi - if test "$GCC" = "yes" ; then - SHLIB_LD="gcc -shared" - SHLIB_LD_LIBS='${LIBS}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - fi - # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc - #CFLAGS="$CFLAGS +DAportable" + #-------------------------------------------------------------------- + # Check for the existence of the -lsocket and -lnsl libraries. + # The order here is important, so that they end up in the right + # order in the command line generated by make. Here are some + # special considerations: + # 1. Use "connect" and "accept" to check for -lsocket, and + # "gethostbyname" to check for -lnsl. + # 2. Use each function name only once: can't redo a check because + # autoconf caches the results of the last check and won't redo it. + # 3. Use -lnsl and -lsocket only if they supply procedures that + # aren't already present in the normal libraries. This is because + # IRIX 5.2 has libraries, but they aren't needed and they're + # bogus: they goof up name resolution if used. + # 4. On some SVR4 systems, can't use -lsocket without -lnsl too. + # To get around this problem, check for both libraries together + # if -lsocket doesn't work by itself. + #-------------------------------------------------------------------- - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - hpux_arch=`gcc -dumpmachine` - case $hpux_arch in - hppa64*) - # 64-bit gcc in use. Fix flags for GNU ld. - do64bit_ok=yes - SHLIB_LD="gcc -shared" - SHLIB_LD_LIBS='${LIBS}' - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - ;; - *) - echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 - ;; - esac - else - do64bit_ok=yes - CFLAGS="$CFLAGS +DD64" - LDFLAGS="$LDFLAGS +DD64" - fi - fi - ;; - HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) - SHLIB_SUFFIX=".sl" - echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2425: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + tcl_checkBoth=0 + echo $ac_n "checking for connect""... $ac_c" 1>&6 +echo "configure:2063: checking for connect" >&5 +if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char shl_load(); +char connect(); int main() { -shl_load() + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_connect) || defined (__stub___connect) +choke me +#else +connect(); +#endif + ; return 0; } EOF -if { (eval echo configure:2444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_func_connect=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_func_connect=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=yes + tcl_checkSocket=0 else echo "$ac_t""no" 1>&6 -tcl_ok=no +tcl_checkSocket=1 fi - if test "$tcl_ok" = yes; then - SHLIB_CFLAGS="+z" - SHLIB_LD="ld -b" - SHLIB_LD_LIBS="" - DL_OBJS="tclLoadShl.o" - DL_LIBS="-ldld" - LDFLAGS="$LDFLAGS -Wl,-E" - CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' - LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' - LD_LIBRARY_PATH_VAR="SHLIB_PATH" - fi - ;; - IRIX-4.*) - SHLIB_CFLAGS="-G 0" - SHLIB_SUFFIX=".a" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" - SHLIB_LD_LIBS='${LIBS}' - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - LDFLAGS="$LDFLAGS -Wl,-D,08000000" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' - ;; - IRIX-5.*) - SHLIB_CFLAGS="" - SHLIB_LD="ld -shared -rdata_shared" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - ;; - IRIX-6.*) - SHLIB_CFLAGS="" - SHLIB_LD="ld -n32 -shared -rdata_shared" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - if test "$GCC" = "yes" ; then - CFLAGS="$CFLAGS -mabi=n32" - LDFLAGS="$LDFLAGS -mabi=n32" - else - case $system in - IRIX-6.3) - # Use to build 6.2 compatible binaries on 6.3. - CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS" - ;; - *) - CFLAGS="$CFLAGS -n32" - ;; - esac - LDFLAGS="$LDFLAGS -n32" - fi - ;; - IRIX64-6.*) - SHLIB_CFLAGS="" - SHLIB_LD="ld -n32 -shared -rdata_shared" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - - # Check to enable 64-bit flags for compiler/linker - - if test "$do64bit" = "yes" ; then - if test "$GCC" = "yes" ; then - echo "configure: warning: 64bit mode not supported by gcc" 1>&2 - else - do64bit_ok=yes - SHLIB_LD="ld -64 -shared -rdata_shared" - CFLAGS="$CFLAGS -64" - LDFLAGS="$LDFLAGS -64" - fi - fi - ;; - Linux*) - SHLIB_CFLAGS="-fPIC" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - - CFLAGS_OPTIMIZE=-O2 - # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings - # when you inline the string and math operations. Turn this off to - # get rid of the warnings. - #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" - - if test "$have_dl" = yes; then - SHLIB_LD="${CC} -shared" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="$LDFLAGS -Wl,--export-dynamic" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - else - ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2568: checking for dld.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + if test "$tcl_checkSocket" = 1; then + echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 +echo "configure:2113: checking for setsockopt" >&5 +if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char setsockopt(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char setsockopt(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_setsockopt) || defined (__stub___setsockopt) +choke me +#else +setsockopt(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2578: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:2141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_setsockopt=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_func_setsockopt=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then echo "$ac_t""yes" 1>&6 - - SHLIB_LD="ld -shared" - DL_OBJS="tclLoadDld.o" - DL_LIBS="-ldld" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" + : else echo "$ac_t""no" 1>&6 -fi - - fi - if test "`uname -m`" = "alpha" ; then - CFLAGS="$CFLAGS -mieee" - fi - - # The combo of gcc + glibc has a bug related - # to inlining of functions like strtod(). The - # -fno-builtin flag should address this problem - # but it does not work. The -fno-inline flag - # is kind of overkill but it works. - # Disable inlining only when one of the - # files in compat/*.c is being linked in. - if test x"${LIBOBJS}" != x ; then - CFLAGS="$CFLAGS -fno-inline" - fi +echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 +echo "configure:2159: checking for setsockopt in -lsocket" >&5 +ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <> confdefs.h <<\EOF -#define PEEK_XCLOSEIM 1 +int main() { +setsockopt() +; return 0; } EOF +if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lsocket" +else + echo "$ac_t""no" 1>&6 +tcl_checkBoth=1 +fi - ;; - GNU*) - SHLIB_CFLAGS="-fPIC" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" +fi - if test "$have_dl" = yes; then - SHLIB_LD="${CC} -shared" - DL_OBJS="" - DL_LIBS="-ldl" - LDFLAGS="$LDFLAGS -Wl,--export-dynamic" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - else - ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2642: checking for dld.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + fi + if test "$tcl_checkBoth" = 1; then + tk_oldLibs=$LIBS + LIBS="$LIBS -lsocket -lnsl" + echo $ac_n "checking for accept""... $ac_c" 1>&6 +echo "configure:2206: checking for accept" >&5 +if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char accept(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char accept(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_accept) || defined (__stub___accept) +choke me +#else +accept(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2652: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:2234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_accept=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_func_accept=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'accept`\" = yes"; then echo "$ac_t""yes" 1>&6 - - SHLIB_LD="ld -shared" - DL_OBJS="" - DL_LIBS="-ldld" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" + tcl_checkNsl=0 else echo "$ac_t""no" 1>&6 +LIBS=$tk_oldLibs fi - fi - if test "`uname -m`" = "alpha" ; then - CFLAGS="$CFLAGS -mieee" - fi - ;; - Lynx*) - SHLIB_CFLAGS="-fPIC" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - CFLAGS_OPTIMIZE=-02 - SHLIB_LD="${CC} -shared " - DL_OBJS="tclLoadDl.o" - DL_LIBS="-mshared -ldl" - LD_FLAGS="-Wl,--export-dynamic" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - ;; - MP-RAS-02*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD="cc -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - MP-RAS-*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD="cc -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="$LDFLAGS -Wl,-Bexport" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - NetBSD-*|FreeBSD-[1-2].*) - # Not available on all versions: check for include file. - ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2720: checking for dlfcn.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + fi + echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 +echo "configure:2256: checking for gethostbyname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostbyname(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +choke me +#else +gethostbyname(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:2284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_gethostbyname=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_func_gethostbyname=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then echo "$ac_t""yes" 1>&6 - - # NetBSD/SPARC needs -fPIC, -fpic will not do. - SHLIB_CFLAGS="-fPIC" - SHLIB_LD="ld -Bshareable -x" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2757: checking for ELF" >&5 - cat > conftest.$ac_ext <&6 +echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 +echo "configure:2302: checking for gethostbyname in -lnsl" >&5 +ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lnsl $LIBS" +cat > conftest.$ac_ext <&5 | - egrep "yes" >/dev/null 2>&1; then +if { (eval echo configure:2321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - echo "$ac_t""yes" 1>&6 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' + eval "ac_cv_lib_$ac_lib_var=yes" else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - echo "$ac_t""no" 1>&6 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" - +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lnsl" else echo "$ac_t""no" 1>&6 +fi - SHLIB_CFLAGS="" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".a" - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - fi + + # Don't perform the eval of the libraries here because DL_LIBS + # won't be set until we call SC_CONFIG_CFLAGS - # FreeBSD doesn't handle version numbers with dots. + TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}' + + - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - TCL_LIB_VERSIONS_OK=nodots - ;; - OpenBSD-*) - case `arch -s` in - m88k|vax) - SHLIB_CFLAGS="" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".a" - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - LDFLAGS="" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - ;; - *) - # OpenBSD/SPARC[64] needs -fPIC, -fpic will not do. - case `machine` in - sparc|sparc64) - SHLIB_CFLAGS="-fPIC";; - *) - SHLIB_CFLAGS="-fpic";; - esac - SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2833: checking for ELF" >&5 - cat > conftest.$ac_ext <&6 +echo "configure:2357: checking how to build libraries" >&5 + # Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + tcl_ok=$enableval +else + tcl_ok=yes +fi + + + if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + tcl_ok=$enableval + else + tcl_ok=yes + fi + + if test "$tcl_ok" = "yes" ; then + echo "$ac_t""shared" 1>&6 + SHARED_BUILD=1 + else + echo "$ac_t""static" 1>&6 + SHARED_BUILD=0 + cat >> confdefs.h <<\EOF +#define STATIC_BUILD 1 EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - echo "$ac_t""yes" 1>&6 - LDFLAGS=-Wl,-export-dynamic + + fi + + +#-------------------------------------------------------------------- +# The statements below define a collection of compile flags. This +# macro depends on the value of SHARED_BUILD, and should be called +# after SC_ENABLE_SHARED checks the configure switches. +#-------------------------------------------------------------------- + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2396: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 else - rm -rf conftest* echo "$ac_t""no" 1>&6 - LDFLAGS="" - fi -rm -f conftest* - ;; - esac - # OpenBSD doesn't do version numbers with dots. - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - TCL_LIB_VERSIONS_OK=nodots - ;; - FreeBSD-*) - # FreeBSD 3.* and greater have ELF. - SHLIB_CFLAGS="-fPIC" - SHLIB_LD="ld -Bshareable -x" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - LDFLAGS="$LDFLAGS -export-dynamic" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - if test "${TCL_THREADS}" = "1" ; then - # The -pthread needs to go in the CFLAGS, not LIBS - LIBS=`echo $LIBS | sed s/-pthread//` - CFLAGS="$CFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" + + # Step 0.a: Enable 64 bit support? + + echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 +echo "configure:2428: checking if 64bit support is requested" >&5 + # Check whether --enable-64bit or --disable-64bit was given. +if test "${enable_64bit+set}" = set; then + enableval="$enable_64bit" + : +else + enableval="no" +fi + + + if test "$enableval" = "yes"; then + do64bit=yes + else + do64bit=no + fi + echo "$ac_t""$do64bit" 1>&6 + + # Step 0.b: Enable Solaris 64 bit VIS support? + + echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 +echo "configure:2448: checking if 64bit Sparc VIS support is requested" >&5 + # Check whether --enable-64bit-vis or --disable-64bit-vis was given. +if test "${enable_64bit_vis+set}" = set; then + enableval="$enable_64bit_vis" + : +else + enableval="no" +fi + + + if test "$enableval" = "yes"; then + # Force 64bit on with VIS + do64bit=yes + do64bitVIS=yes + else + do64bitVIS=no + fi + echo "$ac_t""$do64bitVIS" 1>&6 + + # Step 1: set the variable "system" to hold the name and version number + # for the system. This can usually be done via the "uname" command, but + # there are a few systems, like Next, where this doesn't work. + + echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 +echo "configure:2472: checking system version (for dynamic loading)" >&5 + if test -f /usr/lib/NextStep/software_version; then + system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` + else + system=`uname -s`-`uname -r` + if test "$?" -ne 0 ; then + echo "$ac_t""unknown (can't find uname command)" 1>&6 + system=unknown + else + # Special check for weird MP-RAS system (uname returns weird + # results, and the version is kept in special file). + + if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then + system=MP-RAS-`awk '{print }' /etc/.relid'` fi - case $system in - FreeBSD-3.*) - # FreeBSD-3 doesn't handle version numbers with dots. - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' - TCL_LIB_VERSIONS_OK=nodots - ;; - esac - ;; - Darwin-*) - CFLAGS_OPTIMIZE="-Os" - SHLIB_CFLAGS="-fno-common" - SHLIB_LD="cc -dynamiclib \${LDFLAGS}" - echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:2894: checking if ld accepts -single_module flag" >&5 -if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then + if test "`uname -s`" = "AIX" ; then + system=AIX-`uname -v`.`uname -r` + fi + echo "$ac_t""$system" 1>&6 + fi + fi + + # Step 2: check for existence of -ldl library. This is needed because + # Linux can use either -ldl or -ldld for dynamic loading. + + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "configure:2498: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - hold_ldflags=$LDFLAGS - LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" - cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_ld_single_module=yes + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_ld_single_module=no + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* - LDFLAGS=$hold_ldflags +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + have_dl=yes +else + echo "$ac_t""no" 1>&6 +have_dl=no fi -echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 - if test $tcl_cv_ld_single_module = yes; then - SHLIB_LD="${SHLIB_LD} -Wl,-single_module" + + # Require ranlib early so we can override it in special cases below. + + + + # Step 3: set configuration options based on system name and version. + + do64bit_ok=no + LDFLAGS_ORIG="$LDFLAGS" + TCL_EXPORT_FILE_SUFFIX="" + UNSHARED_LIB_SUFFIX="" + TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' + ECHO_VERSION='`echo ${VERSION}`' + TCL_LIB_VERSIONS_OK=ok + CFLAGS_DEBUG=-g + CFLAGS_OPTIMIZE=-O + if test "$GCC" = "yes" ; then + CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing" + else + CFLAGS_WARNING="" + fi + TCL_NEEDS_EXP_FILE=0 + TCL_BUILD_EXP_FILE="" + TCL_EXP_FILE="" + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2565: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_AR="ar" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +AR="$ac_cv_prog_AR" +if test -n "$AR"; then + echo "$ac_t""$AR" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test "${AR}" = "" ; then + { echo "configure: error: Required archive tool 'ar' not found on PATH." 1>&2; exit 1; } + fi + STLIB_LD='${AR} cr' + LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" + PLAT_OBJS="" + PLAT_SRCS="" + case $system in + AIX-*) + if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then + # AIX requires the _r compiler when gcc isn't being used + case "${CC}" in + *_r) + # ok ... + ;; + *) + CC=${CC}_r + ;; + esac + echo "$ac_t""Using $CC for compiling with threads" 1>&6 fi + LIBS="$LIBS -lc" + SHLIB_CFLAGS="" + # Note: need the LIBS below, otherwise Tk won't find Tcl's + # symbols when dynamically loaded into tclsh. SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".dylib" - DL_OBJS="tclLoadDyld.o" - DL_LIBS="" - LDFLAGS="$LDFLAGS -prebind -headerpad_max_install_names" - echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:2932: checking if ld accepts -search_paths_first flag" >&5 -if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then + SHLIB_SUFFIX=".so" + + DL_OBJS="tclLoadDl.o" + LD_LIBRARY_PATH_VAR="LIBPATH" + + # Check to enable 64-bit flags for compiler/linker on AIX 4+ + if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 + else + do64bit_ok=yes + CFLAGS="$CFLAGS -q64" + LDFLAGS="$LDFLAGS -q64" + RANLIB="${RANLIB} -X64" + AR="${AR} -X64" + SHLIB_LD_FLAGS="-b64" + fi + fi + + if test "`uname -m`" = "ia64" ; then + # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC + SHLIB_LD="/usr/ccs/bin/ld -G -z text" + # AIX-5 has dl* in libc.so + DL_LIBS="" + if test "$GCC" = "yes" ; then + CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + else + CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' + fi + LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' + else + if test "$GCC" = "yes" ; then + SHLIB_LD="gcc -shared" + else + SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" + fi + SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + TCL_NEEDS_EXP_FILE=1 + TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp' + fi + + # AIX v<=4.1 has some different flags than 4.2+ + if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then + LIBOBJS="$LIBOBJS tclLoadAix.o" + DL_LIBS="-lld" + fi + + # On AIX <=v4 systems, libbsd.a has to be linked in to support + # non-blocking file IO. This library has to be linked in after + # the MATH_LIBS or it breaks the pow() function. The way to + # insure proper sequencing, is to add it to the tail of MATH_LIBS. + # This library also supplies gettimeofday. + # + # AIX does not have a timezone field in struct tm. When the AIX + # bsd library is used, the timezone global and the gettimeofday + # methods are to be avoided for timezone deduction instead, we + # deduce the timezone by comparing the localtime result on a + # known GMT value. + + echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 +echo "configure:2680: checking for gettimeofday in -lbsd" >&5 +ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - hold_ldflags=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_ld_search_paths_first=yes + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_ld_search_paths_first=no + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* - LDFLAGS=$hold_ldflags -fi +LIBS="$ac_save_LIBS" -echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 - if test $tcl_cv_ld_search_paths_first = yes; then - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - fi - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" - PLAT_OBJS=\$\(MAC\_OSX_OBJS\) - PLAT_SRCS=\$\(MAC\_OSX_SRCS\) - echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:2970: checking whether to use CoreFoundation" >&5 - # Check whether --enable-corefoundation or --disable-corefoundation was given. -if test "${enable_corefoundation+set}" = set; then - enableval="$enable_corefoundation" - tcl_corefoundation=$enableval +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + libbsd=yes else - tcl_corefoundation=yes + echo "$ac_t""no" 1>&6 +libbsd=no fi - echo "$ac_t""$tcl_corefoundation" 1>&6 - if test $tcl_corefoundation = yes; then - echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:2982: checking for CoreFoundation.framework" >&5 -if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then + if test $libbsd = yes; then + MATH_LIBS="$MATH_LIBS -lbsd" + cat >> confdefs.h <<\EOF +#define USE_DELTA_FOR_TZ 1 +EOF + + fi + ;; + BeOS*) + SHLIB_CFLAGS="-fPIC" + SHLIB_LD="${CC} -nostart" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + + #----------------------------------------------------------- + # Check for inet_ntoa in -lbind, for BeOS (which also needs + # -lsocket, even if the network functions are in -lnet which + # is always linked to, for compatibility. + #----------------------------------------------------------- + echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 +echo "configure:2742: checking for inet_ntoa in -lbind" >&5 +ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - hold_libs=$LIBS - LIBS="$LIBS -framework CoreFoundation" - cat > conftest.$ac_ext < conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char inet_ntoa(); + int main() { -CFBundleRef b = CFBundleGetMainBundle(); +inet_ntoa() ; return 0; } EOF -if { (eval echo configure:2997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_lib_corefoundation=yes + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_lib_corefoundation=no + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* - LIBS=$hold_libs +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lbind -lsocket" +else + echo "$ac_t""no" 1>&6 fi -echo "$ac_t""$tcl_cv_lib_corefoundation" 1>&6 - if test $tcl_cv_lib_corefoundation = yes; then - LIBS="$LIBS -framework CoreFoundation" - cat >> confdefs.h <<\EOF -#define HAVE_COREFOUNDATION 1 -EOF - - fi - fi - for ac_hdr in libkern/OSAtomic.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3023: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < + ;; + BSD/OS-2.1*|BSD/OS-3*) + SHLIB_CFLAGS="" + SHLIB_LD="shlicc -r" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + BSD/OS-4.*) + SHLIB_CFLAGS="-export-dynamic -fPIC" + SHLIB_LD="cc -shared" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="$LDFLAGS -export-dynamic" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + dgux*) + SHLIB_CFLAGS="-K PIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + HP-UX-*.11.*) + # Use updated header definitions where possible + cat >> confdefs.h <<\EOF +#define _XOPEN_SOURCE 1 EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3033: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <> confdefs.h <<\EOF +#define _XOPEN_SOURCE_EXTENDED 1 EOF - -else - echo "$ac_t""no" 1>&6 -fi -done + # Use the XOPEN network library + LIBS="$LIBS -lxnet" # Use the XOPEN network library - for ac_func in OSSpinLockLock -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3062: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + SHLIB_SUFFIX=".sl" + echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "configure:2827: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char $ac_func(); +char shl_load(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - +shl_load() ; return 0; } EOF -if { (eval echo configure:3090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -fi +LIBS="$ac_save_LIBS" -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 +tcl_ok=no fi -done - cat >> confdefs.h <<\EOF -#define MAC_OSX_TCL 1 -EOF - - cat >> confdefs.h <<\EOF -#define USE_VFORK 1 -EOF - - cat >> confdefs.h <<\EOF -#define TCL_DEFAULT_ENCODING "utf-8" -EOF + if test "$tcl_ok" = yes; then + SHLIB_CFLAGS="+z" + SHLIB_LD="ld -b" + SHLIB_LD_LIBS='${LIBS}' + DL_OBJS="tclLoadShl.o" + DL_LIBS="-ldld" + LDFLAGS="$LDFLAGS -Wl,-E" + CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' + LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' + LD_LIBRARY_PATH_VAR="SHLIB_PATH" + fi + if test "$GCC" = "yes" ; then + SHLIB_LD="gcc -shared" + SHLIB_LD_LIBS='${LIBS}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + fi - cat >> confdefs.h <<\EOF -#define TCL_LOAD_FROM_MEMORY 1 -EOF + # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc + #CFLAGS="$CFLAGS +DAportable" - # prior to Darwin 7, realpath is not threadsafe, so don't - # use it when threads are enabled, c.f. bug # 711232: - echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3133: checking for realpath" >&5 -if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + hpux_arch=`gcc -dumpmachine` + case $hpux_arch in + hppa64*) + # 64-bit gcc in use. Fix flags for GNU ld. + do64bit_ok=yes + SHLIB_LD="gcc -shared" + SHLIB_LD_LIBS='${LIBS}' + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + ;; + *) + echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 + ;; + esac + else + do64bit_ok=yes + CFLAGS="$CFLAGS +DD64" + LDFLAGS="$LDFLAGS +DD64" + fi + fi + ;; + HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) + SHLIB_SUFFIX=".sl" + echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "configure:2914: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char realpath(); +char shl_load(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_realpath) || defined (__stub___realpath) -choke me -#else -realpath(); -#endif - +shl_load() ; return 0; } EOF -if { (eval echo configure:3161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_realpath=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_realpath=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -fi +LIBS="$ac_save_LIBS" -if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + tcl_ok=yes else echo "$ac_t""no" 1>&6 +tcl_ok=no fi - if test "$ac_cv_func_realpath" = yes -a "${TCL_THREADS}" = 1 \ - -a `uname -r | awk -F. '{print $1}'` -lt 7 ; then - ac_cv_func_realpath=no + if test "$tcl_ok" = yes; then + SHLIB_CFLAGS="+z" + SHLIB_LD="ld -b" + SHLIB_LD_LIBS="" + DL_OBJS="tclLoadShl.o" + DL_LIBS="-ldld" + LDFLAGS="$LDFLAGS -Wl,-E" + CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' + LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.' + LD_LIBRARY_PATH_VAR="SHLIB_PATH" fi ;; - NEXTSTEP-*) - SHLIB_CFLAGS="" - SHLIB_LD="cc -nostdlib -r" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadNext.o" + IRIX-4.*) + SHLIB_CFLAGS="-G 0" + SHLIB_SUFFIX=".a" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + SHLIB_LD_LIBS='${LIBS}' + DL_OBJS="tclLoadAout.o" DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" + LDFLAGS="$LDFLAGS -Wl,-D,08000000" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' ;; - OS/390-*) - CFLAGS_OPTIMIZE="" # Optimizer is buggy - cat >> confdefs.h <<\EOF -#define _OE_SOCKETS 1 -EOF - # needed in sys/socket.h - ;; - OSF1-1.0|OSF1-1.1|OSF1-1.2) - # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 + IRIX-5.*) SHLIB_CFLAGS="" - # Hack: make package name same as library name - SHLIB_LD='ld -R -export :' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadOSF.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - OSF1-1.*) - # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 - SHLIB_CFLAGS="-fPIC" - if test "$SHARED_BUILD" = "1" ; then - SHLIB_LD="ld -shared" - else - SHLIB_LD="ld -non_shared" - fi - SHLIB_LD_LIBS="" + SHLIB_LD="ld -shared -rdata_shared" + SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' ;; - OSF1-V*) - # Digital OSF/1 + IRIX-6.*) SHLIB_CFLAGS="" - if test "$SHARED_BUILD" = "1" ; then - SHLIB_LD='ld -shared -expect_unresolved "*"' - else - SHLIB_LD='ld -non_shared -expect_unresolved "*"' - fi - SHLIB_LD_LIBS="" + SHLIB_LD="ld -n32 -shared -rdata_shared" + SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' if test "$GCC" = "yes" ; then - CFLAGS="$CFLAGS -mieee" - else - CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee" - fi - # see pthread_intro(3) for pthread support on osf1, k.furukawa - if test "${TCL_THREADS}" = "1" ; then - CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" - CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" - LIBS=`echo $LIBS | sed s/-lpthreads//` - if test "$GCC" = "yes" ; then - LIBS="$LIBS -lpthread -lmach -lexc" - else - CFLAGS="$CFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" - fi + CFLAGS="$CFLAGS -mabi=n32" + LDFLAGS="$LDFLAGS -mabi=n32" + else + case $system in + IRIX-6.3) + # Use to build 6.2 compatible binaries on 6.3. + CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS" + ;; + *) + CFLAGS="$CFLAGS -n32" + ;; + esac + LDFLAGS="$LDFLAGS -n32" fi - - ;; - QNX-6*) - # QNX RTP - # This may work for all QNX, but it was only reported for v6. - SHLIB_CFLAGS="-fPIC" - SHLIB_LD="ld -Bshareable -x" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - # dlopen is in -lc on QNX - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" ;; - RISCos-*) - SHLIB_CFLAGS="-G 0" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + IRIX64-6.*) + SHLIB_CFLAGS="" + SHLIB_LD="ld -n32 -shared -rdata_shared" SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".a" - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - LDFLAGS="$LDFLAGS -Wl,-D,08000000" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - ;; - SCO_SV-3.2*) - # Note, dlopen is available only on SCO 3.2.5 and greater. However, - # this test works, since "uname -s" was non-standard in 3.2.4 and - # below. - if test "$GCC" = "yes" ; then - SHLIB_CFLAGS="-fPIC -melf" - LDFLAGS="$LDFLAGS -melf -Wl,-Bexport" - else - SHLIB_CFLAGS="-Kpic -belf" - LDFLAGS="$LDFLAGS -belf -Wl,-Bexport" - fi - SHLIB_LD="ld -G" - SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - SINIX*5.4*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD="cc -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - SunOS-4*) - SHLIB_CFLAGS="-PIC" - SHLIB_LD="ld" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - # SunOS can't handle version numbers with dots in them in library - # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it - # requires an extra version number at the end of .so file names. - # So, the library has to have a name like libtcl75.so.1.0 + # Check to enable 64-bit flags for compiler/linker - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - TCL_LIB_VERSIONS_OK=nodots + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: 64bit mode not supported by gcc" 1>&2 + else + do64bit_ok=yes + SHLIB_LD="ld -64 -shared -rdata_shared" + CFLAGS="$CFLAGS -64" + LDFLAGS="$LDFLAGS -64" + fi + fi ;; - SunOS-5.[0-6]) - # Careful to not let 5.10+ fall into this case - - # Note: If _REENTRANT isn't defined, then Solaris - # won't define thread-safe library routines. - - cat >> confdefs.h <<\EOF -#define _REENTRANT 1 -EOF - - cat >> confdefs.h <<\EOF -#define _POSIX_PTHREAD_SEMANTICS 1 -EOF - - - SHLIB_CFLAGS="-KPIC" - - # Note: need the LIBS below, otherwise Tk won't find Tcl's - # symbols when dynamically loaded into tclsh. - + Linux*) + SHLIB_CFLAGS="-fPIC" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - if test "$GCC" = "yes" ; then - SHLIB_LD="$CC -shared" - CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + + CFLAGS_OPTIMIZE=-O2 + # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings + # when you inline the string and math operations. Turn this off to + # get rid of the warnings. + #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" + + if test "$have_dl" = yes; then + SHLIB_LD="${CC} -shared" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} else - SHLIB_LD="/usr/ccs/bin/ld -G -z text" - CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dld.h""... $ac_c" 1>&6 +echo "configure:3057: checking for dld.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3067: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + SHLIB_LD="ld -shared" + DL_OBJS="tclLoadDld.o" + DL_LIBS="-ldld" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" +else + echo "$ac_t""no" 1>&6 +fi + + fi + if test "`uname -m`" = "alpha" ; then + CFLAGS="$CFLAGS -mieee" fi - ;; - SunOS-5*) - # Note: If _REENTRANT isn't defined, then Solaris - # won't define thread-safe library routines. - cat >> confdefs.h <<\EOF -#define _REENTRANT 1 -EOF + # The combo of gcc + glibc has a bug related + # to inlining of functions like strtod(). The + # -fno-builtin flag should address this problem + # but it does not work. The -fno-inline flag + # is kind of overkill but it works. + # Disable inlining only when one of the + # files in compat/*.c is being linked in. + if test x"${LIBOBJS}" != x ; then + CFLAGS="$CFLAGS -fno-inline" + fi + # XIM peeking works under XFree86. cat >> confdefs.h <<\EOF -#define _POSIX_PTHREAD_SEMANTICS 1 +#define PEEK_XCLOSEIM 1 EOF - SHLIB_CFLAGS="-KPIC" - - # Check to enable 64-bit flags for compiler/linker - if test "$do64bit" = "yes" ; then - arch=`isainfo` - if test "$arch" = "sparcv9 sparc" ; then - if test "$GCC" = "yes" ; then - if test "`gcc -dumpversion | awk -F. '{print $1}'`" -lt "3" ; then - echo "configure: warning: 64bit mode not supported with GCC < 3.2 on $system" 1>&2 - else - do64bit_ok=yes - CFLAGS="$CFLAGS -m64 -mcpu=v9" - LDFLAGS="$LDFLAGS -m64 -mcpu=v9" - SHLIB_CFLAGS="-fPIC" - fi - else - do64bit_ok=yes - if test "$do64bitVIS" = "yes" ; then - CFLAGS="$CFLAGS -xarch=v9a" - LDFLAGS="$LDFLAGS -xarch=v9a" - else - CFLAGS="$CFLAGS -xarch=v9" - LDFLAGS="$LDFLAGS -xarch=v9" - fi - # Solaris 64 uses this as well - #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" - fi - elif test "$arch" = "amd64 i386" ; then - if test "$GCC" = "yes" ; then - echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 - else - do64bit_ok=yes - CFLAGS="$CFLAGS -xarch=amd64" - LDFLAGS="$LDFLAGS -xarch=amd64" - fi - else - echo "configure: warning: 64bit mode not supported for $arch" 1>&2 - fi - fi - - # Note: need the LIBS below, otherwise Tk won't find Tcl's - # symbols when dynamically loaded into tclsh. - + ;; + GNU*) + SHLIB_CFLAGS="-fPIC" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - if test "$GCC" = "yes" ; then - SHLIB_LD="$CC -shared" - CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - if test "$do64bit_ok" = "yes" ; then - # We need to specify -static-libgcc or we need to - # add the path to the sparv9 libgcc. - SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" - # for finding sparcv9 libgcc, get the regular libgcc - # path, remove so name and append 'sparcv9' - #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." - #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" - fi + + if test "$have_dl" = yes; then + SHLIB_LD="${CC} -shared" + DL_OBJS="" + DL_LIBS="-ldl" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" else - SHLIB_LD="/usr/ccs/bin/ld -G -z text" - CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' + ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dld.h""... $ac_c" 1>&6 +echo "configure:3131: checking for dld.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3141: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + SHLIB_LD="ld -shared" + DL_OBJS="" + DL_LIBS="-ldld" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" +else + echo "$ac_t""no" 1>&6 +fi + + fi + if test "`uname -m`" = "alpha" ; then + CFLAGS="$CFLAGS -mieee" fi ;; - ULTRIX-4.*) - SHLIB_CFLAGS="-G 0" - SHLIB_SUFFIX=".a" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + Lynx*) + SHLIB_CFLAGS="-fPIC" SHLIB_LD_LIBS='${LIBS}' - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - LDFLAGS="$LDFLAGS -Wl,-D,08000000" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - if test "$GCC" != "yes" ; then - CFLAGS="$CFLAGS -DHAVE_TZSET -std1" - fi + SHLIB_SUFFIX=".so" + CFLAGS_OPTIMIZE=-02 + SHLIB_LD="${CC} -shared " + DL_OBJS="tclLoadDl.o" + DL_LIBS="-mshared -ldl" + LD_FLAGS="-Wl,--export-dynamic" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' ;; - UNIX_SV* | UnixWare-5*) - SHLIB_CFLAGS="-KPIC" + MP-RAS-02*) + SHLIB_CFLAGS="-K PIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + MP-RAS-*) + SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers - # that don't grok the -Bexport option. Test that it does. - hold_ldflags=$LDFLAGS - echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3472: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" - cat > conftest.$ac_ext <&6 +echo "configure:3209: checking for dlfcn.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < EOF -if { (eval echo configure:3482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - found=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - LDFLAGS=$hold_ldflags found=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* - echo "$ac_t""$found" 1>&6 - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - esac - - if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then - echo "configure: warning: 64bit support being disabled -- don't know magic for this platform" 1>&2 - fi - - # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic - # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop, - # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need - # to determine which of several header files defines the a.out file - # format (a.out.h, sys/exec.h, or sys/exec_aout.h). At present, we - # support only a file format that is more or less version-7-compatible. - # In particular, - # - a.out files must begin with `struct exec'. - # - the N_TXTOFF on the `struct exec' must compute the seek address - # of the text segment - # - The `struct exec' must contain a_magic, a_text, a_data, a_bss - # and a_entry fields. - # The following compilation should succeed if and only if either sys/exec.h - # or a.out.h is usable for the purpose. - # - # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the - # `struct exec' includes a second header that contains information that - # duplicates the v7 fields that are needed. - - if test "x$DL_OBJS" = "xtclLoadAout.o" ; then - echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3523: checking sys/exec.h" >&5 - cat > conftest.$ac_ext <&6 + + # NetBSD/SPARC needs -fPIC, -fpic will not do. + SHLIB_CFLAGS="-fPIC" + SHLIB_LD="ld -Bshareable -x" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' + echo $ac_n "checking for ELF""... $ac_c" 1>&6 +echo "configure:3246: checking for ELF" >&5 + cat > conftest.$ac_ext < -int main() { - struct exec foo; - unsigned long seek; - int flag; -#if defined(__mips) || defined(mips) - seek = N_TXTOFF (foo.ex_f, foo.ex_o); -#else - seek = N_TXTOFF (foo); +#ifdef __ELF__ + yes #endif - flag = (foo.a_magic == OMAGIC); - return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - -; return 0; } + EOF -if { (eval echo configure:3543: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then rm -rf conftest* - tcl_ok=usable + echo "$ac_t""yes" 1>&6 + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=unusable + echo "$ac_t""no" 1>&6 + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + fi rm -f conftest* - echo "$ac_t""$tcl_ok" 1>&6 - if test $tcl_ok = usable; then - cat >> confdefs.h <<\EOF -#define USE_SYS_EXEC_H 1 -EOF - else - echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3561: checking a.out.h" >&5 - cat > conftest.$ac_ext <&6 + + SHLIB_CFLAGS="" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".a" + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + +fi + + + # FreeBSD doesn't handle version numbers with dots. + + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + TCL_LIB_VERSIONS_OK=nodots + ;; + OpenBSD-*) + case `arch -s` in + m88k|vax) + SHLIB_CFLAGS="" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".a" + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + ;; + *) + # OpenBSD/SPARC[64] needs -fPIC, -fpic will not do. + case `machine` in + sparc|sparc64) + SHLIB_CFLAGS="-fPIC";; + *) + SHLIB_CFLAGS="-fpic";; + esac + SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + echo $ac_n "checking for ELF""... $ac_c" 1>&6 +echo "configure:3322: checking for ELF" >&5 + cat > conftest.$ac_ext < -int main() { - struct exec foo; - unsigned long seek; - int flag; -#if defined(__mips) || defined(mips) - seek = N_TXTOFF (foo.ex_f, foo.ex_o); -#else - seek = N_TXTOFF (foo); +#ifdef __ELF__ + yes #endif - flag = (foo.a_magic == OMAGIC); - return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - + +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + LDFLAGS=-Wl,-export-dynamic +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 + LDFLAGS="" + +fi +rm -f conftest* + + ;; + esac + + # OpenBSD doesn't do version numbers with dots. + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + TCL_LIB_VERSIONS_OK=nodots + ;; + FreeBSD-*) + # FreeBSD 3.* and greater have ELF. + SHLIB_CFLAGS="-fPIC" + SHLIB_LD="ld -Bshareable -x" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + LDFLAGS="$LDFLAGS -export-dynamic" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' + if test "${TCL_THREADS}" = "1" ; then + # The -pthread needs to go in the CFLAGS, not LIBS + LIBS=`echo $LIBS | sed s/-pthread//` + CFLAGS="$CFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" + fi + case $system in + FreeBSD-3.*) + # FreeBSD-3 doesn't handle version numbers with dots. + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' + TCL_LIB_VERSIONS_OK=nodots + ;; + esac + ;; + Darwin-*) + CFLAGS_OPTIMIZE="-Os" + SHLIB_CFLAGS="-fno-common" + if test $do64bit = yes; then + do64bit_ok=yes + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + fi + SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' + echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 +echo "configure:3387: checking if ld accepts -single_module flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_ok=usable + tcl_cv_ld_single_module=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=unusable + tcl_cv_ld_single_module=no fi rm -f conftest* - echo "$ac_t""$tcl_ok" 1>&6 - if test $tcl_ok = usable; then - cat >> confdefs.h <<\EOF -#define USE_A_OUT_H 1 -EOF + LDFLAGS=$hold_ldflags +fi - else - echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3599: checking sys/exec_aout.h" >&5 - cat > conftest.$ac_ext <&6 + if test $tcl_cv_ld_single_module = yes; then + SHLIB_LD="${SHLIB_LD} -Wl,-single_module" + fi + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".dylib" + DL_OBJS="tclLoadDyld.o" + DL_LIBS="" + # Don't use -prebind when building for Mac OS X 10.4 or later only: + if test -z "${MACOSX_DEPLOYMENT_TARGET}" -o \ + `echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print $2}'` -lt 4; then + LDFLAGS="$LDFLAGS -prebind" + fi + LDFLAGS="$LDFLAGS -headerpad_max_install_names" + echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 +echo "configure:3430: checking if ld accepts -search_paths_first flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + cat > conftest.$ac_ext < -int main() { - struct exec foo; - unsigned long seek; - int flag; -#if defined(__mips) || defined(mips) - seek = N_TXTOFF (foo.ex_f, foo.ex_o); -#else - seek = N_TXTOFF (foo); -#endif - flag = (foo.a_midmag == OMAGIC); - return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - +int main() { +int i; ; return 0; } EOF -if { (eval echo configure:3619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_ok=usable + tcl_cv_ld_search_paths_first=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=unusable + tcl_cv_ld_search_paths_first=no fi rm -f conftest* - echo "$ac_t""$tcl_ok" 1>&6 - if test $tcl_ok = usable; then - cat >> confdefs.h <<\EOF -#define USE_SYS_EXEC_AOUT_H 1 -EOF + LDFLAGS=$hold_ldflags +fi - else - DL_OBJS="" - fi +echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 + if test $tcl_cv_ld_search_paths_first = yes; then + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" fi - fi - fi - - # Step 5: disable dynamic loading if requested via a command-line switch. + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" + PLAT_OBJS=\$\(MAC\_OSX_OBJS\) + PLAT_SRCS=\$\(MAC\_OSX_SRCS\) + echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 +echo "configure:3468: checking whether to use CoreFoundation" >&5 + # Check whether --enable-corefoundation or --disable-corefoundation was given. +if test "${enable_corefoundation+set}" = set; then + enableval="$enable_corefoundation" + tcl_corefoundation=$enableval +else + tcl_corefoundation=yes +fi - # Check whether --enable-load or --disable-load was given. -if test "${enable_load+set}" = set; then - enableval="$enable_load" - tcl_ok=$enableval + echo "$ac_t""$tcl_corefoundation" 1>&6 + if test $tcl_corefoundation = yes; then + echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 +echo "configure:3480: checking for CoreFoundation.framework" >&5 +if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - tcl_ok=yes + + hold_libs=$LIBS; hold_cflags=$CFLAGS + if test $do64bit_ok = no ; then + # remove -arch ppc64 from CFLAGS while testing presence + # of CF, otherwise all archs will have CF disabled. + # CF for ppc64 is disabled in tclUnixPort.h instead. + CFLAGS="`echo "$CFLAGS" | sed -e 's/-arch ppc64/-arch ppc/'`" + fi + LIBS="$LIBS -framework CoreFoundation" + cat > conftest.$ac_ext < +int main() { +CFBundleRef b = CFBundleGetMainBundle(); +; return 0; } +EOF +if { (eval echo configure:3501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_lib_corefoundation=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_lib_corefoundation=no +fi +rm -f conftest* + LIBS=$hold_libs; CFLAGS=$hold_cflags fi - if test "$tcl_ok" = "no"; then - DL_OBJS="" - fi +echo "$ac_t""$tcl_cv_lib_corefoundation" 1>&6 + if test $tcl_cv_lib_corefoundation = yes; then + LIBS="$LIBS -framework CoreFoundation" + cat >> confdefs.h <<\EOF +#define HAVE_COREFOUNDATION 1 +EOF - if test "x$DL_OBJS" != "x" ; then - BUILD_DLTEST="\$(DLTEST_TARGETS)" - else - echo "Can't figure out how to do dynamic loading or shared libraries" - echo "on this system." - SHLIB_CFLAGS="" - SHLIB_LD="" - SHLIB_SUFFIX="" - DL_OBJS="tclLoadNone.o" - DL_LIBS="" - LDFLAGS="$LDFLAGS_ORIG" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - BUILD_DLTEST="" - fi - - # If we're running gcc, then change the C flags for compiling shared - # libraries to the right flags for gcc, instead of those for the - # standard manufacturer compiler. - - if test "$DL_OBJS" != "tclLoadNone.o" ; then - if test "$GCC" = "yes" ; then - case $system in - AIX-*) - ;; - BSD/OS*) - ;; - IRIX*) - ;; - NetBSD-*|FreeBSD-*|OpenBSD-*) - ;; - Darwin-*) - ;; - RISCos-*) - ;; - SCO_SV-3.2*) - ;; - ULTRIX-4.*) - ;; - *) - SHLIB_CFLAGS="-fPIC" - ;; - esac - fi - fi - - if test "$SHARED_LIB_SUFFIX" = "" ; then - SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}' - fi - if test "$UNSHARED_LIB_SUFFIX" = "" ; then - UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' - fi - - if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then - LIB_SUFFIX=${SHARED_LIB_SUFFIX} - MAKE_LIB='${SHLIB_LD} -o $@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' - INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' - else - LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} - - if test "$RANLIB" = "" ; then - MAKE_LIB='$(STLIB_LD) $@ ${OBJS}' - INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' - else - MAKE_LIB='${STLIB_LD} $@ ${OBJS} ; ${RANLIB} $@' - INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))' - fi - - fi - - - # Stub lib does not depend on shared/static configuration - if test "$RANLIB" = "" ; then - MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS}' - INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)' - else - MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS} ; ${RANLIB} $@' - INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))' - fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:3770: checking for build with symbols" >&5 - # Check whether --enable-symbols or --disable-symbols was given. -if test "${enable_symbols+set}" = set; then - enableval="$enable_symbols" - tcl_ok=$enableval -else - tcl_ok=no -fi - -# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT. - if test "$tcl_ok" = "no"; then - CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)' - LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)' - DBGX="" - echo "$ac_t""no" 1>&6 - else - CFLAGS_DEFAULT='$(CFLAGS_DEBUG)' - LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)' - DBGX=g - if test "$tcl_ok" = "yes"; then - echo "$ac_t""yes (standard debugging)" 1>&6 - fi - fi - - - - if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then - cat >> confdefs.h <<\EOF -#define TCL_MEM_DEBUG 1 -EOF - - fi - - if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then - cat >> confdefs.h <<\EOF -#define TCL_COMPILE_DEBUG 1 -EOF - - cat >> confdefs.h <<\EOF -#define TCL_COMPILE_STATS 1 -EOF - - fi - - if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then - if test "$tcl_ok" = "all"; then - echo "$ac_t""enabled symbols mem compile debugging" 1>&6 - else - echo "$ac_t""enabled $tcl_ok debugging" 1>&6 - fi - fi - - -TCL_DBGX=${DBGX} - -#-------------------------------------------------------------------- -# Detect what compiler flags to set for 64-bit support. -#-------------------------------------------------------------------- - - - echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:3831: checking for required early compiler flags" >&5 - tcl_flags="" - - if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then + fi + fi + for ac_hdr in libkern/OSAtomic.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:3527: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -int main() { -char *p = (char *)strtoll; char *q = (char *)strtoull; -; return 0; } -EOF -if { (eval echo configure:3845: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_flag__isoc99_source=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - cat > conftest.$ac_ext < -int main() { -char *p = (char *)strtoll; char *q = (char *)strtoull; -; return 0; } +#include <$ac_hdr> EOF -if { (eval echo configure:3861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3537: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - tcl_cv_flag__isoc99_source=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_flag__isoc99_source=no -fi -rm -f conftest* + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi - - if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define _ISOC99_SOURCE 1 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done - tcl_flags="$tcl_flags _ISOC99_SOURCE" - fi - - if eval "test \"`echo '$''{'tcl_cv_flag__largefile64_source'+set}'`\" = set"; then + for ac_func in OSSpinLockLock +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:3566: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + int main() { -struct stat64 buf; int i = stat64("/", &buf); + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + ; return 0; } EOF -if { (eval echo configure:3894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_flag__largefile64_source=no + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - cat > conftest.$ac_ext < -int main() { -struct stat64 buf; int i = stat64("/", &buf); -; return 0; } -EOF -if { (eval echo configure:3910: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_flag__largefile64_source=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_flag__largefile64_source=no -fi -rm -f conftest* -fi -rm -f conftest* -fi - - if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define _LARGEFILE64_SOURCE 1 -EOF - - tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" - fi - - if eval "test \"`echo '$''{'tcl_cv_flag__largefile_source64'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -char *p = (char *)open64; -; return 0; } -EOF -if { (eval echo configure:3943: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_flag__largefile_source64=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - cat > conftest.$ac_ext < -int main() { -char *p = (char *)open64; -; return 0; } -EOF -if { (eval echo configure:3959: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_flag__largefile_source64=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_flag__largefile_source64=no -fi -rm -f conftest* + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi - if test "x${tcl_cv_flag__largefile_source64}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define _LARGEFILE_SOURCE64 1 -EOF - - tcl_flags="$tcl_flags _LARGEFILE_SOURCE64" - fi - if test "x${tcl_flags}" = "x" ; then - echo "$ac_t""none" 1>&6 - else - echo "$ac_t""${tcl_flags}" 1>&6 - fi - - - echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:3988: checking for 64-bit integer type" >&5 - if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - tcl_cv_type_64bit=none - # See if the compiler knows natively about __int64 - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_type_64bit=__int64 -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_type_64bit="long long" -fi -rm -f conftest* - # See if we should use long anyway Note that we substitute in the - # type that is our current guess for a 64-bit type inside this check - # program, so it should be modified only carefully... - cat > conftest.$ac_ext <&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_type_64bit=${tcl_type_64bit} + else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* + echo "$ac_t""no" 1>&6 fi +done - if test "${tcl_cv_type_64bit}" = none ; then - cat >> confdefs.h <<\EOF -#define TCL_WIDE_INT_IS_LONG 1 -EOF - - echo "$ac_t""using long" 1>&6 - else - cat >> confdefs.h <&6 - - # Now check for auxiliary declarations - echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4051: checking for struct dirent64" >&5 - if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then + for ac_hdr in copyfile.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:3622: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - cat > conftest.$ac_ext < conftest.$ac_ext < -#include -int main() { -struct dirent64 p; -; return 0; } +#include <$ac_hdr> EOF -if { (eval echo configure:4065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3632: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - tcl_cv_struct_dirent64=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_struct_dirent64=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi - - if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define HAVE_STRUCT_DIRENT64 1 -EOF - - fi - echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 - - echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4086: checking for struct stat64" >&5 - if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext < -int main() { -struct stat64 p; - -; return 0; } +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_struct_stat64=yes + else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_struct_stat64=no -fi -rm -f conftest* + echo "$ac_t""no" 1>&6 fi +done - if test "x${tcl_cv_struct_stat64}" = "xyes" ; then - cat >> confdefs.h <<\EOF -#define HAVE_STRUCT_STAT64 1 -EOF - - fi - echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 - - for ac_func in open64 lseek64 + for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4123: checking for $ac_func" >&5 +echo "configure:3661: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4171,1073 +3709,1591 @@ else fi done - echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4176: checking for off64_t" >&5 - if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then + cat >> confdefs.h <<\EOF +#define MAC_OSX_TCL 1 +EOF + + cat >> confdefs.h <<\EOF +#define USE_VFORK 1 +EOF + + cat >> confdefs.h <<\EOF +#define TCL_DEFAULT_ENCODING "utf-8" +EOF + + cat >> confdefs.h <<\EOF +#define TCL_LOAD_FROM_MEMORY 1 +EOF + + cat >> confdefs.h <<\EOF +#define TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING 1 +EOF + + # prior to Darwin 7, realpath is not threadsafe, so don't + # use it when threads are enabled, c.f. bug # 711232: + echo $ac_n "checking for realpath""... $ac_c" 1>&6 +echo "configure:3736: checking for realpath" >&5 +if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - cat > conftest.$ac_ext < conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char realpath(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char realpath(); + int main() { -off64_t offset; + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_realpath) || defined (__stub___realpath) +choke me +#else +realpath(); +#endif ; return 0; } EOF -if { (eval echo configure:4190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_type_off64_t=yes + eval "ac_cv_func_realpath=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_type_off64_t=no + eval "ac_cv_func_realpath=no" fi rm -f conftest* fi - if test "x${tcl_cv_type_off64_t}" = "xyes" && \ - test "x${ac_cv_func_lseek64}" = "xyes" && \ - test "x${ac_cv_func_open64}" = "xyes" ; then +if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +fi + + if test $ac_cv_func_realpath = yes -a "${TCL_THREADS}" = 1 \ + -a `uname -r | awk -F. '{print $1}'` -lt 7 ; then + ac_cv_func_realpath=no + fi + ;; + NEXTSTEP-*) + SHLIB_CFLAGS="" + SHLIB_LD="cc -nostdlib -r" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadNext.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + OS/390-*) + CFLAGS_OPTIMIZE="" # Optimizer is buggy cat >> confdefs.h <<\EOF -#define HAVE_TYPE_OFF64_T 1 +#define _OE_SOCKETS 1 EOF + # needed in sys/socket.h + ;; + OSF1-1.0|OSF1-1.1|OSF1-1.2) + # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 + SHLIB_CFLAGS="" + # Hack: make package name same as library name + SHLIB_LD='ld -R -export :' + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadOSF.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + OSF1-1.*) + # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 + SHLIB_CFLAGS="-fPIC" + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD="ld -shared" + else + SHLIB_LD="ld -non_shared" + fi + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + OSF1-V*) + # Digital OSF/1 + SHLIB_CFLAGS="" + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD='ld -shared -expect_unresolved "*"' + else + SHLIB_LD='ld -non_shared -expect_unresolved "*"' + fi + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' + if test "$GCC" = "yes" ; then + CFLAGS="$CFLAGS -mieee" + else + CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee" + fi + # see pthread_intro(3) for pthread support on osf1, k.furukawa + if test "${TCL_THREADS}" = "1" ; then + CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" + CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" + LIBS=`echo $LIBS | sed s/-lpthreads//` + if test "$GCC" = "yes" ; then + LIBS="$LIBS -lpthread -lmach -lexc" + else + CFLAGS="$CFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" + fi + fi - echo "$ac_t""yes" 1>&6 - else - echo "$ac_t""no" 1>&6 - fi + ;; + QNX-6*) + # QNX RTP + # This may work for all QNX, but it was only reported for v6. + SHLIB_CFLAGS="-fPIC" + SHLIB_LD="ld -Bshareable -x" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + # dlopen is in -lc on QNX + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + RISCos-*) + SHLIB_CFLAGS="-G 0" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".a" + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="$LDFLAGS -Wl,-D,08000000" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + ;; + SCO_SV-3.2*) + # Note, dlopen is available only on SCO 3.2.5 and greater. However, + # this test works, since "uname -s" was non-standard in 3.2.4 and + # below. + if test "$GCC" = "yes" ; then + SHLIB_CFLAGS="-fPIC -melf" + LDFLAGS="$LDFLAGS -melf -Wl,-Bexport" + else + SHLIB_CFLAGS="-Kpic -belf" + LDFLAGS="$LDFLAGS -belf -Wl,-Bexport" + fi + SHLIB_LD="ld -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + SINIX*5.4*) + SHLIB_CFLAGS="-K PIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + SunOS-4*) + SHLIB_CFLAGS="-PIC" + SHLIB_LD="ld" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + + # SunOS can't handle version numbers with dots in them in library + # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it + # requires an extra version number at the end of .so file names. + # So, the library has to have a name like libtcl75.so.1.0 + + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + TCL_LIB_VERSIONS_OK=nodots + ;; + SunOS-5.[0-6]) + # Careful to not let 5.10+ fall into this case + + # Note: If _REENTRANT isn't defined, then Solaris + # won't define thread-safe library routines. + + cat >> confdefs.h <<\EOF +#define _REENTRANT 1 +EOF + + cat >> confdefs.h <<\EOF +#define _POSIX_PTHREAD_SEMANTICS 1 +EOF + + + SHLIB_CFLAGS="-KPIC" + + # Note: need the LIBS below, otherwise Tk won't find Tcl's + # symbols when dynamically loaded into tclsh. + + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + if test "$GCC" = "yes" ; then + SHLIB_LD="$CC -shared" + CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + else + SHLIB_LD="/usr/ccs/bin/ld -G -z text" + CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + fi + ;; + SunOS-5*) + # Note: If _REENTRANT isn't defined, then Solaris + # won't define thread-safe library routines. + + cat >> confdefs.h <<\EOF +#define _REENTRANT 1 +EOF + + cat >> confdefs.h <<\EOF +#define _POSIX_PTHREAD_SEMANTICS 1 +EOF + + + SHLIB_CFLAGS="-KPIC" + + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + arch=`isainfo` + if test "$arch" = "sparcv9 sparc" ; then + if test "$GCC" = "yes" ; then + if test "`gcc -dumpversion | awk -F. '{print $1}'`" -lt "3" ; then + echo "configure: warning: 64bit mode not supported with GCC < 3.2 on $system" 1>&2 + else + do64bit_ok=yes + CFLAGS="$CFLAGS -m64 -mcpu=v9" + LDFLAGS="$LDFLAGS -m64 -mcpu=v9" + SHLIB_CFLAGS="-fPIC" + fi + else + do64bit_ok=yes + if test "$do64bitVIS" = "yes" ; then + CFLAGS="$CFLAGS -xarch=v9a" + LDFLAGS="$LDFLAGS -xarch=v9a" + else + CFLAGS="$CFLAGS -xarch=v9" + LDFLAGS="$LDFLAGS -xarch=v9" + fi + # Solaris 64 uses this as well + #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" + fi + elif test "$arch" = "amd64 i386" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 + else + do64bit_ok=yes + CFLAGS="$CFLAGS -xarch=amd64" + LDFLAGS="$LDFLAGS -xarch=amd64" + fi + else + echo "configure: warning: 64bit mode not supported for $arch" 1>&2 + fi + fi + + # Note: need the LIBS below, otherwise Tk won't find Tcl's + # symbols when dynamically loaded into tclsh. + + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + if test "$GCC" = "yes" ; then + SHLIB_LD="$CC -shared" + CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + if test "$do64bit_ok" = "yes" ; then + # We need to specify -static-libgcc or we need to + # add the path to the sparv9 libgcc. + SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" + # for finding sparcv9 libgcc, get the regular libgcc + # path, remove so name and append 'sparcv9' + #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." + #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + fi + else + SHLIB_LD="/usr/ccs/bin/ld -G -z text" + CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' + fi + ;; + ULTRIX-4.*) + SHLIB_CFLAGS="-G 0" + SHLIB_SUFFIX=".a" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + SHLIB_LD_LIBS='${LIBS}' + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="$LDFLAGS -Wl,-D,08000000" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + if test "$GCC" != "yes" ; then + CFLAGS="$CFLAGS -DHAVE_TZSET -std1" + fi + ;; + UNIX_SV* | UnixWare-5*) + SHLIB_CFLAGS="-KPIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers + # that don't grok the -Bexport option. Test that it does. + hold_ldflags=$LDFLAGS + echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 +echo "configure:4075: checking for ld accepts -Bexport flag" >&5 + LDFLAGS="$LDFLAGS -Wl,-Bexport" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + found=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + LDFLAGS=$hold_ldflags found=no +fi +rm -f conftest* + echo "$ac_t""$found" 1>&6 + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + esac + + if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then + echo "configure: warning: 64bit support being disabled -- don't know magic for this platform" 1>&2 fi -#-------------------------------------------------------------------- -# Check endianness because we can optimize comparisons of -# Tcl_UniChar strings to memcmp on big-endian systems. -#-------------------------------------------------------------------- + # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic + # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop, + # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need + # to determine which of several header files defines the a.out file + # format (a.out.h, sys/exec.h, or sys/exec_aout.h). At present, we + # support only a file format that is more or less version-7-compatible. + # In particular, + # - a.out files must begin with `struct exec'. + # - the N_TXTOFF on the `struct exec' must compute the seek address + # of the text segment + # - The `struct exec' must contain a_magic, a_text, a_data, a_bss + # and a_entry fields. + # The following compilation should succeed if and only if either sys/exec.h + # or a.out.h is usable for the purpose. + # + # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the + # `struct exec' includes a second header that contains information that + # duplicates the v7 fields that are needed. -echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4221: checking whether byte ordering is bigendian" >&5 -if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + if test "x$DL_OBJS" = "xtclLoadAout.o" ; then + echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 +echo "configure:4126: checking sys/exec.h" >&5 + cat > conftest.$ac_ext < +int main() { + + struct exec foo; + unsigned long seek; + int flag; +#if defined(__mips) || defined(mips) + seek = N_TXTOFF (foo.ex_f, foo.ex_o); +#else + seek = N_TXTOFF (foo); +#endif + flag = (foo.a_magic == OMAGIC); + return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; + +; return 0; } +EOF +if { (eval echo configure:4146: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_ok=usable else - ac_cv_c_bigendian=unknown -# See if sys/param.h defines the BYTE_ORDER macro. -cat > conftest.$ac_ext <&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_ok=unusable +fi +rm -f conftest* + echo "$ac_t""$tcl_ok" 1>&6 + if test $tcl_ok = usable; then + cat >> confdefs.h <<\EOF +#define USE_SYS_EXEC_H 1 +EOF + + else + echo $ac_n "checking a.out.h""... $ac_c" 1>&6 +echo "configure:4164: checking a.out.h" >&5 + cat > conftest.$ac_ext < -#include +#include int main() { -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros + struct exec foo; + unsigned long seek; + int flag; +#if defined(__mips) || defined(mips) + seek = N_TXTOFF (foo.ex_f, foo.ex_o); +#else + seek = N_TXTOFF (foo); #endif + flag = (foo.a_magic == OMAGIC); + return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; + ; return 0; } EOF -if { (eval echo configure:4239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - # It does; now see whether it defined to BIG_ENDIAN or not. -cat > conftest.$ac_ext <&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_ok=unusable +fi +rm -f conftest* + echo "$ac_t""$tcl_ok" 1>&6 + if test $tcl_ok = usable; then + cat >> confdefs.h <<\EOF +#define USE_A_OUT_H 1 +EOF + + else + echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 +echo "configure:4202: checking sys/exec_aout.h" >&5 + cat > conftest.$ac_ext < -#include +#include int main() { -#if BYTE_ORDER != BIG_ENDIAN - not big endian + struct exec foo; + unsigned long seek; + int flag; +#if defined(__mips) || defined(mips) + seek = N_TXTOFF (foo.ex_f, foo.ex_o); +#else + seek = N_TXTOFF (foo); #endif + flag = (foo.a_midmag == OMAGIC); + return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; + ; return 0; } EOF -if { (eval echo configure:4254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_c_bigendian=yes + tcl_ok=usable else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_c_bigendian=no -fi -rm -f conftest* -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 + tcl_ok=unusable fi rm -f conftest* -if test $ac_cv_c_bigendian = unknown; then -if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext <&6 + if test $tcl_ok = usable; then + cat >> confdefs.h <<\EOF +#define USE_SYS_EXEC_AOUT_H 1 EOF -if { (eval echo configure:4287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_c_bigendian=no + + else + DL_OBJS="" + fi + fi + fi + fi + + # Step 5: disable dynamic loading if requested via a command-line switch. + + # Check whether --enable-load or --disable-load was given. +if test "${enable_load+set}" = set; then + enableval="$enable_load" + tcl_ok=$enableval else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_bigendian=yes -fi -rm -fr conftest* + tcl_ok=yes fi -fi + if test "$tcl_ok" = "no"; then + DL_OBJS="" + fi + + if test "x$DL_OBJS" != "x" ; then + BUILD_DLTEST="\$(DLTEST_TARGETS)" + else + echo "Can't figure out how to do dynamic loading or shared libraries" + echo "on this system." + SHLIB_CFLAGS="" + SHLIB_LD="" + SHLIB_SUFFIX="" + DL_OBJS="tclLoadNone.o" + DL_LIBS="" + LDFLAGS="$LDFLAGS_ORIG" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + BUILD_DLTEST="" + fi + + # If we're running gcc, then change the C flags for compiling shared + # libraries to the right flags for gcc, instead of those for the + # standard manufacturer compiler. + + if test "$DL_OBJS" != "tclLoadNone.o" ; then + if test "$GCC" = "yes" ; then + case $system in + AIX-*) + ;; + BSD/OS*) + ;; + IRIX*) + ;; + NetBSD-*|FreeBSD-*|OpenBSD-*) + ;; + Darwin-*) + ;; + RISCos-*) + ;; + SCO_SV-3.2*) + ;; + ULTRIX-4.*) + ;; + *) + SHLIB_CFLAGS="-fPIC" + ;; + esac + fi + fi + + if test "$SHARED_LIB_SUFFIX" = "" ; then + SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}' + fi + if test "$UNSHARED_LIB_SUFFIX" = "" ; then + UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' + fi + + if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then + LIB_SUFFIX=${SHARED_LIB_SUFFIX} + MAKE_LIB='${SHLIB_LD} -o $@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' + INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' + else + LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} + + if test "$RANLIB" = "" ; then + MAKE_LIB='$(STLIB_LD) $@ ${OBJS}' + INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' + else + MAKE_LIB='${STLIB_LD} $@ ${OBJS} ; ${RANLIB} $@' + INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))' + fi + + fi + + + # Stub lib does not depend on shared/static configuration + if test "$RANLIB" = "" ; then + MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS}' + INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)' + else + MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS} ; ${RANLIB} $@' + INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))' + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 +echo "configure:4373: checking for build with symbols" >&5 + # Check whether --enable-symbols or --disable-symbols was given. +if test "${enable_symbols+set}" = set; then + enableval="$enable_symbols" + tcl_ok=$enableval +else + tcl_ok=no fi -echo "$ac_t""$ac_cv_c_bigendian" 1>&6 -if test $ac_cv_c_bigendian = yes; then - cat >> confdefs.h <<\EOF -#define WORDS_BIGENDIAN 1 +# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT. + if test "$tcl_ok" = "no"; then + CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)' + LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)' + DBGX="" + echo "$ac_t""no" 1>&6 + else + CFLAGS_DEFAULT='$(CFLAGS_DEBUG)' + LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)' + DBGX=g + if test "$tcl_ok" = "yes"; then + echo "$ac_t""yes (standard debugging)" 1>&6 + fi + fi + + + + if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then + cat >> confdefs.h <<\EOF +#define TCL_MEM_DEBUG 1 +EOF + + fi + + if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then + cat >> confdefs.h <<\EOF +#define TCL_COMPILE_DEBUG 1 +EOF + + cat >> confdefs.h <<\EOF +#define TCL_COMPILE_STATS 1 EOF -fi + fi + + if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then + if test "$tcl_ok" = "all"; then + echo "$ac_t""enabled symbols mem compile debugging" 1>&6 + else + echo "$ac_t""enabled $tcl_ok debugging" 1>&6 + fi + fi + +TCL_DBGX=${DBGX} #-------------------------------------------------------------------- -# Supply substitutes for missing POSIX library procedures, or -# set flags so Tcl uses alternate procedures. +# Detect what compiler flags to set for 64-bit support. #-------------------------------------------------------------------- -# Check if Posix compliant getcwd exists, if not we'll use getwd. -for ac_func in getcwd -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4320: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + + echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 +echo "configure:4434: checking for required early compiler flags" >&5 + tcl_flags="" + + if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - +#include int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - +char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + tcl_cv_flag__isoc99_source=no else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -cat >> confdefs.h <<\EOF -#define USEGETWD 1 -EOF - -fi -done - -# Nb: if getcwd uses popen and pwd(1) (like SunOS 4) we should really -# define USEGETWD even if the posix getcwd exists. Add a test ? - -for ac_func in opendir strstr -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4382: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - +#define _ISOC99_SOURCE 1 +#include int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - +char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + tcl_cv_flag__isoc99_source=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + tcl_cv_flag__isoc99_source=no fi rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" +rm -f conftest* fi -done - + if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define _ISOC99_SOURCE 1 +EOF -for ac_func in strtol strtoll strtoull tmpnam waitpid -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4440: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + tcl_flags="$tcl_flags _ISOC99_SOURCE" + fi + + if eval "test \"`echo '$''{'tcl_cv_flag__largefile64_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - +#include int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - +struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + tcl_cv_flag__largefile64_source=no else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + cat > conftest.$ac_ext < +int main() { +struct stat64 buf; int i = stat64("/", &buf); +; return 0; } +EOF +if { (eval echo configure:4513: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_flag__largefile64_source=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_flag__largefile64_source=no fi rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" +rm -f conftest* fi -done + if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define _LARGEFILE64_SOURCE 1 +EOF -echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4495: checking for strerror" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then + tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" + fi + + if eval "test \"`echo '$''{'tcl_cv_flag__largefile_source64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strerror(); - +#include int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_strerror) || defined (__stub___strerror) -choke me -#else -strerror(); -#endif - +char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4546: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_strerror=yes" + tcl_cv_flag__largefile_source64=no else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_strerror=no" + cat > conftest.$ac_ext < +int main() { +char *p = (char *)open64; +; return 0; } +EOF +if { (eval echo configure:4562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_flag__largefile_source64=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_flag__largefile_source64=no +fi +rm -f conftest* fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'strerror`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_STRERROR 1 + if test "x${tcl_cv_flag__largefile_source64}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define _LARGEFILE_SOURCE64 1 EOF -fi + tcl_flags="$tcl_flags _LARGEFILE_SOURCE64" + fi + if test "x${tcl_flags}" = "x" ; then + echo "$ac_t""none" 1>&6 + else + echo "$ac_t""${tcl_flags}" 1>&6 + fi -echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4547: checking for getwd" >&5 -if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then + + echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 +echo "configure:4591: checking for 64-bit integer type" >&5 + if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_type_64bit=__int64 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_type_64bit="long long" +fi +rm -f conftest* + # See if we should use long anyway Note that we substitute in the + # type that is our current guess for a 64-bit type inside this check + # program, so it should be modified only carefully... + cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getwd(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_getwd) || defined (__stub___getwd) -choke me -#else -getwd(); -#endif - +switch (0) { + case 1: case (sizeof(${tcl_type_64bit})==sizeof(long)): ; + } ; return 0; } EOF -if { (eval echo configure:4575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_getwd=yes" + tcl_cv_type_64bit=${tcl_type_64bit} else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_getwd=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'getwd`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_GETWD 1 + if test "${tcl_cv_type_64bit}" = none ; then + cat >> confdefs.h <<\EOF +#define TCL_WIDE_INT_IS_LONG 1 EOF -fi + echo "$ac_t""using long" 1>&6 + else + cat >> confdefs.h <&6 -echo "configure:4599: checking for wait3" >&5 -if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then + echo "$ac_t""${tcl_cv_type_64bit}" 1>&6 + + # Now check for auxiliary declarations + echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 +echo "configure:4654: checking for struct dirent64" >&5 + if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char wait3(); - +#include +#include int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_wait3) || defined (__stub___wait3) -choke me -#else -wait3(); -#endif - +struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_wait3=yes" + tcl_cv_struct_dirent64=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_wait3=no" + tcl_cv_struct_dirent64=no fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'wait3`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_WAIT3 1 + if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_DIRENT64 1 EOF -fi + fi + echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 -echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:4651: checking for uname" >&5 -if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then + echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 +echo "configure:4689: checking for struct stat64" >&5 + if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char uname(); - +#include int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_uname) || defined (__stub___uname) -choke me -#else -uname(); -#endif +struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_uname=yes" + tcl_cv_struct_stat64=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_uname=no" + tcl_cv_struct_stat64=no fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'uname`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_UNAME 1 + if test "x${tcl_cv_struct_stat64}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_STAT64 1 EOF -fi + fi + echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 -echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:4703: checking for realpath" >&5 -if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then + for ac_func in open64 lseek64 +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4726: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char realpath(); +char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_realpath) || defined (__stub___realpath) +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -realpath(); +$ac_func(); #endif ; return 0; } EOF -if { (eval echo configure:4731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_realpath=yes" + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_realpath=no" + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 -cat >> confdefs.h <<\EOF -#define NO_REALPATH 1 -EOF - fi +done - -#-------------------------------------------------------------------- -# Supply substitutes for missing POSIX header files. Special -# notes: -# - stdlib.h doesn't define strtol, strtoul, or -# strtod insome versions of SunOS -# - some versions of string.h don't declare procedures such -# as strstr -#-------------------------------------------------------------------- - - - echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:4766: checking dirent.h" >&5 - if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then + echo $ac_n "checking for off64_t""... $ac_c" 1>&6 +echo "configure:4779: checking for off64_t" >&5 + if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -#include int main() { - -#ifndef _POSIX_SOURCE -# ifdef __Lynx__ - /* - * Generate compilation error to make the test fail: Lynx headers - * are only valid if really in the POSIX environment. - */ - - missing_procedure(); -# endif -#endif -DIR *d; -struct dirent *entryPtr; -char *p; -d = opendir("foobar"); -entryPtr = readdir(d); -p = entryPtr->d_name; -closedir(d); +off64_t offset; ; return 0; } EOF -if { (eval echo configure:4797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_cv_dirent_h=yes + tcl_cv_type_off64_t=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_dirent_h=no + tcl_cv_type_off64_t=no fi rm -f conftest* fi - - if test $tcl_cv_dirent_h = no; then - cat >> confdefs.h <<\EOF -#define NO_DIRENT_H 1 -EOF - - fi - - echo "$ac_t""$tcl_ok" 1>&6 - ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:4820: checking for errno.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4830: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_ERRNO_H 1 + if test "x${tcl_cv_type_off64_t}" = "xyes" && \ + test "x${ac_cv_func_lseek64}" = "xyes" && \ + test "x${ac_cv_func_open64}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_TYPE_OFF64_T 1 EOF -fi + echo "$ac_t""yes" 1>&6 + else + echo "$ac_t""no" 1>&6 + fi + fi - ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:4857: checking for float.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +#-------------------------------------------------------------------- +# Check endianness because we can optimize comparisons of +# Tcl_UniChar strings to memcmp on big-endian systems. +#-------------------------------------------------------------------- + +echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +echo "configure:4824: checking whether byte ordering is bigendian" >&5 +if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < +#include +#include +int main() { + +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:4842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + # It does; now see whether it defined to BIG_ENDIAN or not. +cat > conftest.$ac_ext < +#include +int main() { + +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif +; return 0; } +EOF +if { (eval echo configure:4857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + ac_cv_c_bigendian=no fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_FLOAT_H 1 -EOF - + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 fi - - ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:4894: checking for values.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +rm -f conftest* +if test $ac_cv_c_bigendian = unknown; then +if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < +main () { + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4904: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" +if { (eval echo configure:4890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_c_bigendian=no else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + rm -fr conftest* + ac_cv_c_bigendian=yes fi -rm -f conftest* +rm -fr conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_VALUES_H 1 + +fi +fi + +echo "$ac_t""$ac_cv_c_bigendian" 1>&6 +if test $ac_cv_c_bigendian = yes; then + cat >> confdefs.h <<\EOF +#define WORDS_BIGENDIAN 1 EOF fi - ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:4931: checking for limits.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + +#-------------------------------------------------------------------- +# Supply substitutes for missing POSIX library procedures, or +# set flags so Tcl uses alternate procedures. +#-------------------------------------------------------------------- + +# Check if Posix compliant getcwd exists, if not we'll use getwd. +for ac_func in getcwd +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4923: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4941: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:4951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_$ac_func=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_LIMITS_H 1 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 cat >> confdefs.h <<\EOF -#define NO_LIMITS_H 1 +#define USEGETWD 1 EOF fi +done - ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:4971: checking for stdlib.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +# Nb: if getcwd uses popen and pwd(1) (like SunOS 4) we should really +# define USEGETWD even if the posix getcwd exists. Add a test ? + +for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4985: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4981: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:5013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_$ac_func=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_ok=1 -else - echo "$ac_t""no" 1>&6 -tcl_ok=0 -fi - - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strtol" >/dev/null 2>&1; then - : -else - rm -rf conftest* - tcl_ok=0 + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* - - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strtoul" >/dev/null 2>&1; then - : -else - rm -rf conftest* - tcl_ok=0 fi -rm -f conftest* - cat > conftest.$ac_ext < +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&5 | - egrep "strtod" >/dev/null 2>&1; then - : + else - rm -rf conftest* - tcl_ok=0 + echo "$ac_t""no" 1>&6 +LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" fi -rm -f conftest* +done - if test $tcl_ok = 0; then - cat >> confdefs.h <<\EOF -#define NO_STDLIB_H 1 -EOF - fi - ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:5053: checking for string.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking for strerror""... $ac_c" 1>&6 +echo "configure:5040: checking for strerror" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strerror(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strerror) || defined (__stub___strerror) +choke me +#else +strerror(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5063: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:5068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_strerror=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_func_strerror=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'strerror`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=1 + : else echo "$ac_t""no" 1>&6 -tcl_ok=0 +cat >> confdefs.h <<\EOF +#define NO_STRERROR 1 +EOF + fi - cat > conftest.$ac_ext <&6 +echo "configure:5092: checking for getwd" >&5 +if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char getwd(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getwd(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_getwd) || defined (__stub___getwd) +choke me +#else +getwd(); +#endif + +; return 0; } EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strstr" >/dev/null 2>&1; then - : +if { (eval echo configure:5120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getwd=yes" else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=0 + eval "ac_cv_func_getwd=no" fi rm -f conftest* +fi - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strerror" >/dev/null 2>&1; then +if eval "test \"`echo '$ac_cv_func_'getwd`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - rm -rf conftest* - tcl_ok=0 -fi -rm -f conftest* - - - # See also memmove check below for a place where NO_STRING_H can be - # set and why. - - if test $tcl_ok = 0; then - cat >> confdefs.h <<\EOF -#define NO_STRING_H 1 + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_GETWD 1 EOF - fi +fi - ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:5126: checking for sys/wait.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking for wait3""... $ac_c" 1>&6 +echo "configure:5144: checking for wait3" >&5 +if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wait3(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wait3(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_wait3) || defined (__stub___wait3) +choke me +#else +wait3(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:5172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_wait3=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_func_wait3=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'wait3`\" = yes"; then echo "$ac_t""yes" 1>&6 : else echo "$ac_t""no" 1>&6 cat >> confdefs.h <<\EOF -#define NO_SYS_WAIT_H 1 +#define NO_WAIT3 1 EOF fi - ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:5163: checking for dlfcn.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking for uname""... $ac_c" 1>&6 +echo "configure:5196: checking for uname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char uname(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char uname(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_uname) || defined (__stub___uname) +choke me +#else +uname(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5173: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:5224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_uname=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_func_uname=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'uname`\" = yes"; then echo "$ac_t""yes" 1>&6 : else echo "$ac_t""no" 1>&6 cat >> confdefs.h <<\EOF -#define NO_DLFCN_H 1 +#define NO_UNAME 1 EOF fi - - # OS/390 lacks sys/param.h (and doesn't need it, by chance). - - for ac_hdr in unistd.h sys/param.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5205: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking for realpath""... $ac_c" 1>&6 +echo "configure:5248: checking for realpath" >&5 +if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char realpath(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char realpath(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_realpath) || defined (__stub___realpath) +choke me +#else +realpath(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5215: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:5276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_realpath=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_func_realpath=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - +cat >> confdefs.h <<\EOF +#define NO_REALPATH 1 +EOF +fi #--------------------------------------------------------------------------- @@ -5251,17 +5307,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5255: checking for $ac_hdr" >&5 +echo "configure:5311: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5288,7 +5344,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5292: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5348: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5297,7 +5353,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5312,7 +5368,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5329,7 +5385,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5343,7 +5399,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5361,7 +5417,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5376,7 +5432,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5394,7 +5450,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5411,7 +5467,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5429,7 +5485,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5445,7 +5501,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5463,7 +5519,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5480,7 +5536,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5523,19 +5579,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5527: checking for fd_set in sys/types" >&5 +echo "configure:5583: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5539: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5595: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5548,15 +5604,15 @@ rm -f conftest* fi echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 -tk_ok=$tcl_cv_type_fd_set +tcl_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5555: checking for fd_mask in sys/select" >&5 +echo "configure:5611: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5578,10 +5634,10 @@ fi #define HAVE_SYS_SELECT_H 1 EOF - tk_ok=yes + tcl_ok=yes fi fi -if test $tk_ok = no; then +if test $tcl_ok = no; then cat >> confdefs.h <<\EOF #define NO_FD_SET 1 EOF @@ -5593,12 +5649,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5597: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5653: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5606,7 +5662,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5631,17 +5687,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5635: checking for $ac_hdr" >&5 +echo "configure:5691: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5668,12 +5724,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5672: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5728: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5682,7 +5738,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5742: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5703,12 +5759,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5707: checking for tm_zone in struct tm" >&5 +echo "configure:5763: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5716,7 +5772,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5736,12 +5792,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5740: checking for tzname" >&5 +echo "configure:5796: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5751,7 +5807,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5776,12 +5832,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5780: checking for $ac_func" >&5 +echo "configure:5836: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5830,19 +5886,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5834: checking tm_tzadj in struct tm" >&5 +echo "configure:5890: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5846: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5902: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5863,19 +5919,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5867: checking tm_gmtoff in struct tm" >&5 +echo "configure:5923: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5900,12 +5956,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5904: checking long timezone variable" >&5 - if eval "test \"`echo '$''{'tcl_cv_var_timezone'+set}'`\" = set"; then +echo "configure:5960: checking long timezone variable" >&5 + if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5914,7 +5970,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5974: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5937,12 +5993,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5941: checking time_t timezone variable" >&5 +echo "configure:5997: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5951,7 +6007,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5955: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5978,12 +6034,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5982: checking for st_blksize in struct stat" >&5 +echo "configure:6038: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5991,7 +6047,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6012,12 +6068,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6016: checking for fstatfs" >&5 +echo "configure:6072: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6069,7 +6125,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6073: checking for 8-bit clean memcmp" >&5 +echo "configure:6129: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6077,7 +6133,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6111,12 +6167,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6115: checking for memmove" >&5 +echo "configure:6171: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6172,12 +6228,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6176: checking proper strstr implementation" >&5 +echo "configure:6232: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6214,12 +6270,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6218: checking for strtoul" >&5 +echo "configure:6274: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6266,7 +6322,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6305,12 +6361,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6309: checking for strtod" >&5 +echo "configure:6365: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6357,7 +6413,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6399,12 +6455,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6403: checking for strtod" >&5 +echo "configure:6459: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6449,7 +6505,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6453: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6509: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6458,7 +6514,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6514,12 +6570,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6518: checking for ANSI C header files" >&5 +echo "configure:6574: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6527,7 +6583,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6531: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6544,7 +6600,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6562,7 +6618,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6583,7 +6639,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6594,7 +6650,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6618,12 +6674,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6622: checking for mode_t" >&5 +echo "configure:6678: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6651,12 +6707,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6655: checking for pid_t" >&5 +echo "configure:6711: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6684,12 +6740,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6688: checking for size_t" >&5 +echo "configure:6744: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6717,12 +6773,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6721: checking for uid_t in sys/types.h" >&5 +echo "configure:6777: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6752,12 +6808,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6756: checking for socklen_t" >&5 +echo "configure:6812: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6796,12 +6852,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6800: checking for opendir" >&5 +echo "configure:6856: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6857,12 +6913,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6861: checking union wait" >&5 +echo "configure:6917: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6874,7 +6930,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6901,12 +6957,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6905: checking for strncasecmp" >&5 +echo "configure:6961: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6951,7 +7007,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6955: checking for strncasecmp in -lsocket" >&5 +echo "configure:7011: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6959,7 +7015,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6994,7 +7050,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6998: checking for strncasecmp in -linet" >&5 +echo "configure:7054: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7002,7 +7058,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7051,12 +7107,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7055: checking for BSDgettimeofday" >&5 +echo "configure:7111: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7101,12 +7157,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7105: checking for gettimeofday" >&5 +echo "configure:7161: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7156,12 +7212,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7160: checking for gettimeofday declaration" >&5 +echo "configure:7216: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7192,14 +7248,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7196: checking whether char is unsigned" >&5 +echo "configure:7252: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7255,12 +7311,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7259: checking signed char declarations" >&5 +echo "configure:7315: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7330: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7295,7 +7351,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7299: checking for a putenv() that copies the buffer" >&5 +echo "configure:7355: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7303,7 +7359,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7325,7 +7381,7 @@ else } EOF -if { (eval echo configure:7329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7364,20 +7420,19 @@ fi HAVE_LANGINFO=0 if test "$langinfo_ok" = "yes"; then - if test "$langinfo_ok" = "yes"; then - ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` + ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7371: checking for langinfo.h" >&5 +echo "configure:7426: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7436: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7399,40 +7454,43 @@ else langinfo_ok=no fi - fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7406: checking whether to use nl_langinfo" >&5 +echo "configure:7460: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then - cat > conftest.$ac_ext <&6 +else + cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - langinfo_ok=yes + tcl_cv_langinfo_h=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - langinfo_ok=no + tcl_cv_langinfo_h=no fi rm -f conftest* - if test "$langinfo_ok" = "no"; then - langinfo_ok="no (could not compile with nl_langinfo)"; - fi - if test "$langinfo_ok" = "yes"; then +fi + + echo "$ac_t""$tcl_cv_langinfo_h" 1>&6 + if test $tcl_cv_langinfo_h = yes; then cat >> confdefs.h <<\EOF #define HAVE_LANGINFO 1 EOF fi + else + echo "$ac_t""$langinfo_ok" 1>&6 fi - echo "$ac_t""$langinfo_ok" 1>&6 #-------------------------------------------------------------------- @@ -7447,17 +7505,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7451: checking for $ac_hdr" >&5 +echo "configure:7509: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7487,17 +7545,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7491: checking for $ac_hdr" >&5 +echo "configure:7549: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7559: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7524,7 +7582,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7528: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7586: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7604,7 +7662,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7608: checking how to package libraries" >&5 +echo "configure:7666: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -7956,8 +8014,8 @@ s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@MAN_FLAGS@%$MAN_FLAGS%g s%@CC@%$CC%g -s%@TCL_THREADS@%$TCL_THREADS%g s%@CPP@%$CPP%g +s%@TCL_THREADS@%$TCL_THREADS%g s%@TCL_LIBS@%$TCL_LIBS%g s%@MATH_LIBS@%$MATH_LIBS%g s%@RANLIB@%$RANLIB%g diff --git a/unix/configure.in b/unix/configure.in index b781697..791497f 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.20 2005/11/16 22:05:28 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.21 2005/11/27 02:34:42 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -24,6 +24,8 @@ fi if test "${exec_prefix}" = "NONE"; then exec_prefix=$prefix fi +# Make sure srcdir is fully qualified! +srcdir=`cd $srcdir ; pwd` TCL_SRC_DIR=`cd $srcdir/..; pwd` #------------------------------------------------------------------------ @@ -43,11 +45,17 @@ fi AC_PROG_CC -#------------------------------------------------------------------------ -# Threads support -#------------------------------------------------------------------------ +#-------------------------------------------------------------------- +# Supply substitutes for missing POSIX header files. Special +# notes: +# - stdlib.h doesn't define strtol, strtoul, or +# strtod insome versions of SunOS +# - some versions of string.h don't declare procedures such +# as strstr +# Do this early, otherwise an autoconf bug throws errors on configure +#-------------------------------------------------------------------- -SC_ENABLE_THREADS +SC_MISSING_POSIX_HEADERS #------------------------------------------------------------------------ # If we're using GCC, see if the compiler understands -pipe. If so, use it. @@ -66,6 +74,12 @@ if test -n "$GCC"; then fi fi +#------------------------------------------------------------------------ +# Threads support +#------------------------------------------------------------------------ + +SC_ENABLE_THREADS + #-------------------------------------------------------------------- # Look for libraries that we will need when compiling the Tcl shell #-------------------------------------------------------------------- @@ -114,26 +128,13 @@ AC_CHECK_FUNCS(getcwd, , [AC_DEFINE(USEGETWD)]) # Nb: if getcwd uses popen and pwd(1) (like SunOS 4) we should really # define USEGETWD even if the posix getcwd exists. Add a test ? -AC_REPLACE_FUNCS(opendir strstr) - -AC_REPLACE_FUNCS(strtol strtoll strtoull tmpnam waitpid) +AC_REPLACE_FUNCS(opendir strstr strtol strtoll strtoull tmpnam waitpid) AC_CHECK_FUNC(strerror, , [AC_DEFINE(NO_STRERROR)]) AC_CHECK_FUNC(getwd, , [AC_DEFINE(NO_GETWD)]) AC_CHECK_FUNC(wait3, , [AC_DEFINE(NO_WAIT3)]) AC_CHECK_FUNC(uname, , [AC_DEFINE(NO_UNAME)]) AC_CHECK_FUNC(realpath, , [AC_DEFINE(NO_REALPATH)]) -#-------------------------------------------------------------------- -# Supply substitutes for missing POSIX header files. Special -# notes: -# - stdlib.h doesn't define strtol, strtoul, or -# strtod insome versions of SunOS -# - some versions of string.h don't declare procedures such -# as strstr -#-------------------------------------------------------------------- - -SC_MISSING_POSIX_HEADERS - #--------------------------------------------------------------------------- # Determine which interface to use to talk to the serial port. # Note that #include lines must begin in leftmost column for @@ -157,19 +158,19 @@ AC_CACHE_VAL(tcl_cv_type_fd_set, AC_TRY_COMPILE([#include ],[fd_set readMask, writeMask;], tcl_cv_type_fd_set=yes, tcl_cv_type_fd_set=no)) AC_MSG_RESULT($tcl_cv_type_fd_set) -tk_ok=$tcl_cv_type_fd_set +tcl_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then AC_MSG_CHECKING([for fd_mask in sys/select]) AC_CACHE_VAL(tcl_cv_grep_fd_mask, - AC_HEADER_EGREP(fd_mask, sys/select.h, + AC_EGREP_HEADER(fd_mask, sys/select.h, tcl_cv_grep_fd_mask=present, tcl_cv_grep_fd_mask=missing)) AC_MSG_RESULT($tcl_cv_grep_fd_mask) if test $tcl_cv_grep_fd_mask = present; then AC_DEFINE(HAVE_SYS_SELECT_H) - tk_ok=yes + tcl_ok=yes fi fi -if test $tk_ok = no; then +if test $tcl_ok = no; then AC_DEFINE(NO_FD_SET) fi diff --git a/unix/tcl.m4 b/unix/tcl.m4 index fc87dcb..e8e5dc2 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -659,22 +659,20 @@ AC_DEFUN(SC_ENABLE_LANGINFO, [ HAVE_LANGINFO=0 if test "$langinfo_ok" = "yes"; then - if test "$langinfo_ok" = "yes"; then - AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no]) - fi + AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no]) fi AC_MSG_CHECKING([whether to use nl_langinfo]) if test "$langinfo_ok" = "yes"; then - AC_TRY_COMPILE([#include ], - [nl_langinfo(CODESET);],[langinfo_ok=yes],[langinfo_ok=no]) - if test "$langinfo_ok" = "no"; then - langinfo_ok="no (could not compile with nl_langinfo)"; - fi - if test "$langinfo_ok" = "yes"; then + AC_CACHE_VAL(tcl_cv_langinfo_h, + AC_TRY_COMPILE([#include ], [nl_langinfo(CODESET);], + [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])) + AC_MSG_RESULT($tcl_cv_langinfo_h) + if test $tcl_cv_langinfo_h = yes; then AC_DEFINE(HAVE_LANGINFO) fi + else + AC_MSG_RESULT([$langinfo_ok]) fi - AC_MSG_RESULT([$langinfo_ok]) ]) #-------------------------------------------------------------------- @@ -703,44 +701,44 @@ AC_DEFUN(SC_ENABLE_LANGINFO, [ # according to the user's selection. # #-------------------------------------------------------------------- -AC_DEFUN(SC_CONFIG_MANPAGES, [ - AC_MSG_CHECKING([whether to use symlinks for manpages]) - AC_ARG_ENABLE(man-symlinks, - [ --enable-man-symlinks use symlinks for the manpages], - test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks", - enableval="no") - AC_MSG_RESULT([$enableval]) - - AC_MSG_CHECKING([whether to compress the manpages]) - AC_ARG_ENABLE(man-compression, - [ --enable-man-compression=PROG - compress the manpages with PROG], - test "$enableval" = "yes" && AC_MSG_ERROR([missing argument to --enable-man-compression]) - test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --compress $enableval", - enableval="no") - AC_MSG_RESULT([$enableval]) - if test "$enableval" != "no"; then - AC_MSG_CHECKING([for compressed file suffix]) - touch TeST - $enableval TeST - Z=`ls TeST* | sed 's/^....//'` - rm -f TeST* - MAN_FLAGS="$MAN_FLAGS --extension $Z" - AC_MSG_RESULT([$Z]) - fi +AC_DEFUN(SC_CONFIG_MANPAGES, [ + AC_MSG_CHECKING([whether to use symlinks for manpages]) + AC_ARG_ENABLE(man-symlinks, + [ --enable-man-symlinks use symlinks for the manpages], + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks", + enableval="no") + AC_MSG_RESULT([$enableval]) + + AC_MSG_CHECKING([whether to compress the manpages]) + AC_ARG_ENABLE(man-compression, + [ --enable-man-compression=PROG + compress the manpages with PROG], + test "$enableval" = "yes" && AC_MSG_ERROR([missing argument to --enable-man-compression]) + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --compress $enableval", + enableval="no") + AC_MSG_RESULT([$enableval]) + if test "$enableval" != "no"; then + AC_MSG_CHECKING([for compressed file suffix]) + touch TeST + $enableval TeST + Z=`ls TeST* | sed 's/^....//'` + rm -f TeST* + MAN_FLAGS="$MAN_FLAGS --extension $Z" + AC_MSG_RESULT([$Z]) + fi - AC_MSG_CHECKING([whether to add a package name suffix for the manpages]) - AC_ARG_ENABLE(man-suffix, - [ --enable-man-suffix=STRING - use STRING as a suffix to manpage file names - (default: $1)], - test "$enableval" = "yes" && enableval="$1" - test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --suffix $enableval", - enableval="no") - AC_MSG_RESULT([$enableval]) - - AC_SUBST(MAN_FLAGS) + AC_MSG_CHECKING([whether to add a package name suffix for the manpages]) + AC_ARG_ENABLE(man-suffix, + [ --enable-man-suffix=STRING + use STRING as a suffix to manpage file names + (default: $1)], + test "$enableval" = "yes" && enableval="$1" + test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --suffix $enableval", + enableval="no") + AC_MSG_RESULT([$enableval]) + + AC_SUBST(MAN_FLAGS) ]) #-------------------------------------------------------------------- @@ -956,7 +954,7 @@ dnl AC_CHECK_TOOL(AR, ar) if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then if test "$GCC" = "yes" ; then AC_MSG_WARN([64bit mode not supported with GCC on $system]) - else + else do64bit_ok=yes CFLAGS="$CFLAGS -q64" LDFLAGS="$LDFLAGS -q64" @@ -1363,7 +1361,7 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_CFLAGS="-fpic";; esac SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}" - SHLIB_LD_LIBS="" + SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" @@ -1417,7 +1415,11 @@ dnl AC_CHECK_TOOL(AR, ar) Darwin-*) CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" - SHLIB_LD="cc -dynamiclib \${LDFLAGS}" + if test $do64bit = yes; then + do64bit_ok=yes + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + fi + SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [ hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" @@ -1430,7 +1432,12 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".dylib" DL_OBJS="tclLoadDyld.o" DL_LIBS="" - LDFLAGS="$LDFLAGS -prebind -headerpad_max_install_names" + # Don't use -prebind when building for Mac OS X 10.4 or later only: + if test -z "${MACOSX_DEPLOYMENT_TARGET}" -o \ + `echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print [$]2}'` -lt 4; then + LDFLAGS="$LDFLAGS -prebind" + fi + LDFLAGS="$LDFLAGS -headerpad_max_install_names" AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [ hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" @@ -1450,12 +1457,18 @@ dnl AC_CHECK_TOOL(AR, ar) AC_MSG_RESULT([$tcl_corefoundation]) if test $tcl_corefoundation = yes; then AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [ - hold_libs=$LIBS + hold_libs=$LIBS; hold_cflags=$CFLAGS + if test $do64bit_ok = no ; then + # remove -arch ppc64 from CFLAGS while testing presence + # of CF, otherwise all archs will have CF disabled. + # CF for ppc64 is disabled in tclUnixPort.h instead. + CFLAGS="`echo "$CFLAGS" | sed -e 's/-arch ppc64/-arch ppc/'`" + fi LIBS="$LIBS -framework CoreFoundation" AC_TRY_LINK([#include ], [CFBundleRef b = CFBundleGetMainBundle();], tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no) - LIBS=$hold_libs]) + LIBS=$hold_libs; CFLAGS=$hold_cflags]) if test $tcl_cv_lib_corefoundation = yes; then LIBS="$LIBS -framework CoreFoundation" AC_DEFINE(HAVE_COREFOUNDATION) @@ -1463,14 +1476,17 @@ dnl AC_CHECK_TOOL(AR, ar) fi AC_CHECK_HEADERS(libkern/OSAtomic.h) AC_CHECK_FUNCS(OSSpinLockLock) + AC_CHECK_HEADERS(copyfile.h) + AC_CHECK_FUNCS(copyfile) AC_DEFINE(MAC_OSX_TCL) AC_DEFINE(USE_VFORK) AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8") AC_DEFINE(TCL_LOAD_FROM_MEMORY) + AC_DEFINE(TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING) # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: AC_CHECK_FUNC(realpath) - if test "$ac_cv_func_realpath" = yes -a "${TCL_THREADS}" = 1 \ + if test $ac_cv_func_realpath = yes -a "${TCL_THREADS}" = 1 \ -a `uname -r | awk -F. '{print [$]1}'` -lt 7 ; then ac_cv_func_realpath=no fi @@ -2177,9 +2193,7 @@ closedir(d); AC_CHECK_HEADER(dlfcn.h, , [AC_DEFINE(NO_DLFCN_H)]) # OS/390 lacks sys/param.h (and doesn't need it, by chance). - AC_HAVE_HEADERS(unistd.h sys/param.h) - ]) #-------------------------------------------------------------------- @@ -2267,6 +2281,7 @@ AC_DEFUN(SC_PATH_X, [ XLIBSW=-lX11 fi ]) + #-------------------------------------------------------------------- # SC_BLOCKING_STYLE # @@ -2383,7 +2398,7 @@ AC_DEFUN(SC_TIME_HANDLER, [ # (like convex) have timezone functions, etc. # AC_MSG_CHECKING([long timezone variable]) - AC_CACHE_VAL(tcl_cv_var_timezone, + AC_CACHE_VAL(tcl_cv_timezone_long, AC_TRY_COMPILE([#include ], [extern long timezone; timezone += 1; @@ -2667,7 +2682,7 @@ AC_DEFUN(SC_TCL_64BIT_FLAGS, [ if test "x${tcl_cv_type_off64_t}" = "xyes" && \ test "x${ac_cv_func_lseek64}" = "xyes" && \ test "x${ac_cv_func_open64}" = "xyes" ; then - AC_DEFINE(HAVE_TYPE_OFF64_T, 1, [Is off64_t in ?]) + AC_DEFINE(HAVE_TYPE_OFF64_T) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 1796307..3e05bf3 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -12,12 +12,15 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.4 2005/07/30 07:58:16 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.5 2005/11/27 02:34:42 das Exp $ */ #include "tclInt.h" #include "tclPort.h" #include +#include +#include +#include #undef panic #include @@ -120,8 +123,7 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) */ native = Tcl_FSGetNativePath(pathPtr); - dyldLibHeader = NSAddImage(native, NSADDIMAGE_OPTION_WITH_SEARCHING | - NSADDIMAGE_OPTION_RETURN_ON_ERROR); + dyldLibHeader = NSAddImage(native, NSADDIMAGE_OPTION_RETURN_ON_ERROR); if (!dyldLibHeader) { NSLinkEditErrors editError; @@ -148,7 +150,8 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) if (!dyldLibHeader) { NSLinkEditError(&editError, &errorNumber, &name, &msg); } - } else if ((editError==NSLinkEditFileFormatError && errorNumber==EBADMACHO) + } else if ((editError == NSLinkEditFileFormatError + && errorNumber == EBADMACHO) || editError == NSLinkEditOtherError){ /* * The requested file was found but was not of type MH_DYLIB, @@ -232,7 +235,7 @@ TclpFindSymbol(interp, loadHandle, symbol) NSSymbol nsSymbol; CONST char *native; Tcl_DString newName, ds; - Tcl_PackageInitProc* proc = NULL; + Tcl_PackageInitProc *proc = NULL; Tcl_DyldLoadHandle *dyldLoadHandle = (Tcl_DyldLoadHandle *) loadHandle; /* @@ -464,15 +467,57 @@ TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) if (codeSize >= 0) { NSObjectFileImageReturnCode err = NSObjectFileImageSuccess; - + CONST struct fat_header *fh = buffer; + uint32_t ms = 0; #ifndef __LP64__ - struct mach_header *mh = buffer; - if (codeSize < sizeof(struct mach_header) || mh->magic != MH_MAGIC + CONST struct mach_header *mh = NULL; + #define mh_magic OSSwapHostToBigInt32(MH_MAGIC) + #define mh_size sizeof(struct mach_header) #else - struct mach_header_64 *mh = buffer; - if (codeSize < sizeof(struct mach_header_64) || mh->magic != MH_MAGIC_64 + CONST struct mach_header_64 *mh = NULL; + #define mh_magic OSSwapHostToBigInt32(MH_MAGIC_64) + #define mh_size sizeof(struct mach_header_64) #endif - || mh->filetype != MH_BUNDLE) { + + if (codeSize >= sizeof(struct fat_header) + && fh->magic == OSSwapHostToBigInt32(FAT_MAGIC)) { + /* + * Fat binary, try to find mach_header for our architecture + */ + uint32_t fh_nfat_arch = OSSwapBigToHostInt32(fh->nfat_arch); + + if (codeSize >= sizeof(struct fat_header) + + fh_nfat_arch * sizeof(struct fat_arch)) { + void *fatarchs = buffer + sizeof(struct fat_header); + CONST NXArchInfo *arch = NXGetLocalArchInfo(); + struct fat_arch *fa; + + if (fh->magic != FAT_MAGIC) { + swap_fat_arch(fatarchs, fh_nfat_arch, arch->byteorder); + } + fa = NXFindBestFatArch(arch->cputype, arch->cpusubtype, + fatarchs, fh_nfat_arch); + if (fa) { + mh = buffer + fa->offset; + ms = fa->size; + } else { + err = NSObjectFileImageInappropriateFile; + } + if (fh->magic != FAT_MAGIC) { + swap_fat_arch(fatarchs, fh_nfat_arch, arch->byteorder); + } + } else { + err = NSObjectFileImageInappropriateFile; + } + } else { + /* + * Thin binary + */ + mh = buffer; + ms = codeSize; + } + if (ms && !(ms >= mh_size && mh->magic == mh_magic && + mh->filetype == OSSwapHostToBigInt32(MH_BUNDLE))) { err = NSObjectFileImageInappropriateFile; } if (err == NSObjectFileImageSuccess) { diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index b25d23f..1508b39 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.5 2005/01/27 22:53:35 andreas_kupries Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.6 2005/11/27 02:34:42 das Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -3183,7 +3183,7 @@ TclUnixWaitForFile(fd, mask, timeout) * wait at all, and a value of -1 means * wait forever. */ { - Tcl_Time abortTime, now; + Tcl_Time abortTime = {0, 0}, now; /* silence gcc 4 warning */ struct timeval blockTime, *timeoutPtr; int index, bit, numFound, result = 0; fd_mask readyMasks[3*MASK_SIZE]; diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index e9d60ab..f5555b7 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.6 2005/11/09 00:53:06 hobbs Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.7 2005/11/27 02:34:42 das Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -397,6 +397,9 @@ DoCopyFile(src, dst) if (symlink(link, dst) < 0) { /* INTL: Native. */ return TCL_ERROR; } +#ifdef HAVE_COPYFILE + copyfile(src, dst, NULL, COPYFILE_XATTR|COPYFILE_NOFOLLOW_SRC); +#endif break; } #endif @@ -1118,6 +1121,9 @@ CopyFileAtts(src, dst, statBufPtr) if (utime(dst, &tval)) { /* INTL: Native. */ return TCL_ERROR; } +#ifdef HAVE_COPYFILE + copyfile(src, dst, NULL, COPYFILE_XATTR|COPYFILE_ACL); +#endif return TCL_OK; } diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 24d552f..7488cf1 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,13 +11,13 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.13 2005/07/01 10:57:59 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.14 2005/11/27 02:34:42 das Exp $ */ -#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier - * is in tclMacOSXNotify.c */ #include "tclInt.h" #include "tclPort.h" +#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier + * is in tclMacOSXNotify.c */ #include extern TclStubs tclStubs; diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 10e1659..ef8156f 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.6 2005/07/08 01:06:13 hobbs Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.7 2005/11/27 02:34:42 das Exp $ */ #ifndef _TCLUNIXPORT @@ -505,6 +505,39 @@ extern double strtod(); #define TclpPanic ((Tcl_PanicProc *) NULL) /* + * Darwin specifc configure overrides (to support fat compiles, where + * configure runs only once for multiple architectures): + */ + +#ifdef __APPLE__ +# ifdef __LP64__ +# undef HAVE_COREFOUNDATION +# endif /* __LP64__ */ +# ifdef __DARWIN_UNIX03 +# define USE_TERMIOS 1 +# undef HAVE_PUTENV_THAT_COPIES +# else /* !__DARWIN_UNIX03 */ +# undef USE_TERMIOS +# define HAVE_PUTENV_THAT_COPIES 1 +# endif /* __DARWIN_UNIX03 */ +#endif /* __APPLE__ */ + +/* + * Darwin 8 copyfile API + */ + +#ifdef HAVE_COPYFILE +#ifdef HAVE_COPYFILE_H +#include +#else +int copyfile(const char *from, const char *to, void *state, uint32_t flags); +#define COPYFILE_ACL (1<<0) +#define COPYFILE_XATTR (1<<2) +#define COPYFILE_NOFOLLOW_SRC (1<<18) +#endif +#endif + +/* *--------------------------------------------------------------------------- * The following macros and declarations represent the interface between * generic and unix-specific parts of Tcl. Some of the macros may override -- cgit v0.12 From e9d4af780f9f9de64703615f616fd9a8e61e5c02 Mon Sep 17 00:00:00 2001 From: das Date: Sun, 27 Nov 2005 06:09:19 +0000 Subject: add #include for OSX 10.2 --- unix/tclLoadDyld.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 3e05bf3..109aa37 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.5 2005/11/27 02:34:42 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.6 2005/11/27 06:09:19 das Exp $ */ #include "tclInt.h" @@ -21,6 +21,7 @@ #include #include #include +#include #undef panic #include -- cgit v0.12 From 2c6f5f96ac3e2cd2f9d6a94d2df7d40ad2e81c90 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 28 Nov 2005 09:49:57 +0000 Subject: Apply [Patch 1353853] to prevent UMR randomness. --- ChangeLog | 5 +++++ win/tclWinSock.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 654d986..2e7da5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-11-28 Donal K. Fellows + + * win/tclWinSock.c (CreateSocket): Applied [Patch 1353853] to prevent + reads of uninitialized variables during cleanup. + 2005-11-27 Daniel Steffen * unix/tcl.m4 (Darwin): add 64bit support, check for Tiger copyfile(), diff --git a/win/tclWinSock.c b/win/tclWinSock.c index 9af7d3e..6643345 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.3 2005/01/27 22:53:39 andreas_kupries Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.4 2005/11/28 09:49:57 dkf Exp $ */ #include "tclWinInt.h" @@ -1088,7 +1088,7 @@ CreateSocket(interp, port, host, server, myaddr, myport, async) * in progress. */ SOCKADDR_IN sockaddr; /* Socket address */ SOCKADDR_IN mysockaddr; /* Socket address for client */ - SOCKET sock; + SOCKET sock = INVALID_SOCKET; SocketInfo *infoPtr; /* The returned value. */ ThreadSpecificData *tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); -- cgit v0.12 From d8635a48cf1f669a2c8103dacc8a93e3e3269b87 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 29 Nov 2005 10:32:30 +0000 Subject: Fix [Bug 1366683] --- ChangeLog | 7 +++++++ generic/tclCmdIL.c | 21 ++++++++++++++++++--- tests/lsearch.test | 6 +++++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e7da5d..0e98fdc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-11-29 Donal K. Fellows + + * generic/tclCmdIL.c (Tcl_LsearchObjCmd): Allow [lsearch -regexp] to + process REs that contain backreferences. This expensive mode of + operation is only used if the RE would otherwise cause a compilation + failure. [Bug 1366683] + 2005-11-28 Donal K. Fellows * win/tclWinSock.c (CreateSocket): Applied [Patch 1353853] to prevent diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index f38011b..7a232a6 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.7 2005/10/23 22:01:29 msofer Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.8 2005/11/29 10:32:31 dkf Exp $ */ #include "tclInt.h" @@ -3017,11 +3017,26 @@ Tcl_LsearchObjCmd(clientData, interp, objc, objv) if ((enum modes) mode == REGEXP) { /* * We can shimmer regexp/list if listv[i] == pattern, so get the - * regexp rep before the list rep. + * regexp rep before the list rep. First time round, omit the interp + * and hope that the compilation will succeed. If it fails, we'll + * recompile in "expensive" mode with a place to put error messages. */ - regexp = Tcl_GetRegExpFromObj(interp, objv[objc - 1], + + regexp = Tcl_GetRegExpFromObj(NULL, objv[objc - 1], TCL_REG_ADVANCED | TCL_REG_NOSUB); if (regexp == NULL) { + /* + * Failed to compile the RE. Try again without the TCL_REG_NOSUB + * flag in case the RE had sub-expressions in it [Bug 1366683]. + * If this fails, an error message will be left in the + * interpreter. + */ + + regexp = Tcl_GetRegExpFromObj(interp, objv[objc - 1], + TCL_REG_ADVANCED); + } + + if (regexp == NULL) { if (startPtr) { Tcl_DecrRefCount(startPtr); } diff --git a/tests/lsearch.test b/tests/lsearch.test index 96ff415..47d4ffc 100644 --- a/tests/lsearch.test +++ b/tests/lsearch.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: lsearch.test,v 1.10.2.1 2003/03/27 13:11:16 dkf Exp $ +# RCS: @(#) $Id: lsearch.test,v 1.10.2.2 2005/11/29 10:32:31 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -349,6 +349,10 @@ test lsearch-16.1 {lsearch -regexp shared object} { set str a lsearch -regexp $str $str } 0 +# Bug 1366683 +test lsearch-16.2 {lsearch -regexp allows internal backrefs} { + lsearch -regexp {a aa b} {(.)\1} +} 1 # cleanup catch {unset res} -- cgit v0.12 From 78e4bd756c392b75621c7d8c46d00a7cc2c03701 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 29 Nov 2005 14:02:02 +0000 Subject: Fix [Bug 1310081]. --- ChangeLog | 3 +++ generic/tclObj.c | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0e98fdc..f59f68e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-11-29 Donal K. Fellows + * generic/tclObj.c (Tcl_GetWideIntFromObj): Add more efficient + conversion to wides from normal ints. [Bug 1310081] + * generic/tclCmdIL.c (Tcl_LsearchObjCmd): Allow [lsearch -regexp] to process REs that contain backreferences. This expensive mode of operation is only used if the RE would otherwise cause a compilation diff --git a/generic/tclObj.c b/generic/tclObj.c index 7ae0b5e..9d480d5 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.13 2005/08/04 19:54:29 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.14 2005/11/29 14:02:04 dkf Exp $ */ #include "tclInt.h" @@ -2574,9 +2574,20 @@ Tcl_GetWideIntFromObj(interp, objPtr, wideIntPtr) register int result; if (objPtr->typePtr == &tclWideIntType) { + gotWide: *wideIntPtr = objPtr->internalRep.wideValue; return TCL_OK; } + if (objPtr->typePtr == &tclIntType) { + /* + * This cast is safe; all valid ints/longs are wides. + */ + + objPtr->internalRep.wideValue = + Tcl_LongAsWide(objPtr->internalRep.longValue); + objPtr->typePtr = &tclWideIntType; + goto gotWide; + } result = SetWideIntFromAny(interp, objPtr); if (result == TCL_OK) { *wideIntPtr = objPtr->internalRep.wideValue; -- cgit v0.12 From 08315becbe85b5742b61c005317cc4586a8272b4 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Nov 2005 00:15:35 +0000 Subject: * win/tcl.m4: Add build support for Windows-x64 builds. * win/configure: --enable-64bit now accepts =amd64|ia64 for * win/Makefile.in: Windows 64-bit build variants (default: amd64) * win/makefile.vc: [Bug 1369597] --- ChangeLog | 45 +++++++++++++++++++--------------- win/Makefile.in | 4 +-- win/configure | 75 ++++++++++++++++++++++++++++++++++----------------------- win/makefile.vc | 8 ++++-- win/tcl.m4 | 53 +++++++++++++++++++++++++--------------- 5 files changed, 113 insertions(+), 72 deletions(-) diff --git a/ChangeLog b/ChangeLog index f59f68e..b7ebbdf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-11-29 Jeff Hobbs + + * win/tcl.m4: Add build support for Windows-x64 builds. + * win/configure: --enable-64bit now accepts =amd64|ia64 for + * win/Makefile.in: Windows 64-bit build variants (default: amd64) + * win/makefile.vc: [Bug 1369597] + 2005-11-29 Donal K. Fellows * generic/tclObj.c (Tcl_GetWideIntFromObj): Add more efficient @@ -26,22 +33,22 @@ * unix/configure.in: fix obsolete autoconf macros, sync gratuitous formatting/ordering differences with tk/unix/configure.in. - * unix/Makefile.in: add CFLAGS to tclsh/tcltest link to make executable - linking the same as during configure (needed to avoid loosing any linker - relevant flags in CFLAGS, in particular flags that can't be in LDFLAGS). - Avoid concurrent linking of tclsh and compiling of tclTestInit.o or - xtTestInit.o during parallel make. + * unix/Makefile.in: add CFLAGS to tclsh/tcltest link to make + executable linking the same as during configure (needed to avoid + loosing any linker relevant flags in CFLAGS, in particular flags + that can't be in LDFLAGS). Avoid concurrent linking of tclsh and + compiling of tclTestInit.o or xtTestInit.o during parallel make. (checkstubs, checkdoc, checkexports): dependency and Darwin fixes - * unix/tclLoadDyld.c (TclpDlopen): use NSADDIMAGE_OPTION_WITH_SEARCHING - on second NSAddImage only. [Bug 1204237] + * unix/tclLoadDyld.c (TclpDlopen): [Bug 1204237] use + NSADDIMAGE_OPTION_WITH_SEARCHING on second NSAddImage only. (TclGuessPackageName): should not be MODULE_SCOPE. - (TclpLoadMemory): ppc64 and endian (i386) fixes, add support for loading - universal (fat) bundles from memory. + (TclpLoadMemory): ppc64 and endian (i386) fixes, add support for + loading universal (fat) bundles from memory. * unix/tclUnixPort.h: - * unix/tclUnixFCmd.c: add support for new Tiger copyfile() API to enable - copying of xattrs & ACLs by [file copy]. + * unix/tclUnixFCmd.c: add support for new Tiger copyfile() API to + enable copying of xattrs & ACLs by [file copy]. * generic/tcl.h: add Darwin specifc configure overrides for TCL_WIDE defines to support fat compiles of ppc and ppc64 at the same time, @@ -50,15 +57,15 @@ * generic/tclInt.h: clarify fat compile comment. - * unix/tclUnixPort.h: add Darwin specifc configure overrides to support - fat compiles, where configure runs only once for multiple architectures - (replaces Darwin CVS fix by emoy, rdar://3693001). + * unix/tclUnixPort.h: add Darwin specifc configure overrides to + support fat compiles, where configure runs only once for multiple + architectures (replaces Darwin CVS fix by emoy, rdar://3693001). * macosx/tclMacOSXBundle.c: * macosx/tclMacOSXNotify.c: - * unix/tclUnixNotfy.c: - * unix/tclUnixPort.h: fix #include order to support compile time - override of HAVE_COREFOUNDATION in tclUnixPort.h when building for ppc64 + * unix/tclUnixNotfy.c: fix #include order to support compile time + * unix/tclUnixPort.h: override of HAVE_COREFOUNDATION in + tclUnixPort.h when building for ppc64 * macosx/Tcl.pbproj/default.pbxuser (new file): * macosx/Tcl.pbproj/jingham.pbxuser: @@ -67,8 +74,8 @@ * macosx/README: clarification/cleanup, sync with HEAD, document universal (fat) builds via CFLAGS (i.e. all of ppc ppc64 i386 at once). - * macosx/Makefile: add support for reusing configure cache, build target - fixes, remove GENERIC_FLAGS override now handled by tcl.m4. + * macosx/Makefile: add support for reusing configure cache, build + target fixes, remove GENERIC_FLAGS override now handled by tcl.m4. * generic/tclIOUtil.c: * generic/tclRegexp.c: diff --git a/win/Makefile.in b/win/Makefile.in index 1dd0684..0110120 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.68.2.2 2004/11/16 23:39:52 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.68.2.3 2005/11/30 00:15:39 hobbs Exp $ VERSION = @TCL_VERSION@ @@ -329,7 +329,7 @@ cat32.$(OBJEXT): cat.c $(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME) $(CAT32): cat32.$(OBJEXT) - $(CC) $(CFLAGS) cat32.$(OBJEXT) $(CC_EXENAME) $(LDFLAGS_CONSOLE) + $(CC) $(CFLAGS) cat32.$(OBJEXT) $(CC_EXENAME) $(LIBS) $(LDFLAGS_CONSOLE) # The following targets are configured by autoconf to generate either # a shared library or static library diff --git a/win/configure b/win/configure index 78a498a..4b9d6e5 100755 --- a/win/configure +++ b/win/configure @@ -16,7 +16,7 @@ ac_help="$ac_help ac_help="$ac_help --enable-shared build and link with shared libraries [--enable-shared]" ac_help="$ac_help - --enable-64bit enable 64bit support (where applicable)" + --enable-64bit enable 64bit support (where applicable = amd64|ia64)" ac_help="$ac_help --enable-symbols build with debugging symbols [--disable-symbols]" @@ -1519,7 +1519,7 @@ echo "configure:1500: checking for Windows native path bug in windres" >&5 echo $ac_n "checking compiler flags""... $ac_c" 1>&6 echo "configure:1521: checking compiler flags" >&5 if test "${GCC}" = "yes" ; then - if test "$do64bit" = "yes" ; then + if test "$do64bit" != "no" ; then echo "configure: warning: "64bit mode not supported with GCC on Windows"" 1>&2 fi SHLIB_LD="" @@ -1659,34 +1659,49 @@ echo "configure:1521: checking compiler flags" >&5 # This is a 2-stage check to make sure we have the 64-bit SDK # We have to know where the SDK is installed. - if test "$do64bit" = "yes" ; then + # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs + # MACHINE is IX86 for LINK, but this is used by the manifest, + # which requires x86|amd64|ia64. + MACHINE="X86" + if test "$do64bit" != "no" ; then if test "x${MSSDK}x" = "xx" ; then - MSSDK="C:/Progra~1/Microsoft SDK" + MSSDK="C:/Progra~1/Microsoft Platform SDK" fi MSSDK=`echo "$MSSDK" | sed -e 's!\\\!/!g'` - if test ! -d "${MSSDK}/bin/win64" ; then - echo "configure: warning: "could not find 64-bit SDK to enable 64bit mode"" 1>&2 + PATH64="" + case "$do64bit" in + amd64|x64|yes) + MACHINE="AMD64" ; # default to AMD64 64-bit build + PATH64="${MSSDK}/Bin/Win64/x86/AMD64" + ;; + ia64) + MACHINE="IA64" + PATH64="${MSSDK}/Bin/Win64" + ;; + esac + if test ! -d "${PATH64}" ; then + echo "configure: warning: Could not find 64-bit $MACHINE SDK to enable 64bit mode" 1>&2 + echo "configure: warning: Ensure latest Platform SDK is installed" 1>&2 do64bit="no" + else + echo "$ac_t"" Using 64-bit $MACHINE mode" 1>&6 fi fi - if test "$do64bit" = "yes" ; then - # All this magic is necessary for the Win64 SDK RC1 - hobbs + if test "$do64bit" != "no" ; then # The space-based-path will work for the Makefile, but will - # not work if AC_TRY_COMPILE is called. TEA has the - # TEA_PATH_NOSPACE to avoid this issue. - CC="\"${MSSDK}/Bin/Win64/cl.exe\" \ - -I\"${MSSDK}/Include/prerelease\" \ - -I\"${MSSDK}/Include/Win64/crt\" \ - -I\"${MSSDK}/Include/Win64/crt/sys\" \ - -I\"${MSSDK}/Include\"" + # not work if AC_TRY_COMPILE is called. + CC="\"${PATH64}/cl.exe\" -I\"${MSSDK}/Include\" \ + -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\"" RC="\"${MSSDK}/bin/rc.exe\"" CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" # Do not use -O2 for Win64 - this has proved buggy in code gen. CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}" - lflags="-MACHINE:IA64 -LIBPATH:\"${MSSDK}/Lib/IA64\" \ - -LIBPATH:\"${MSSDK}/Lib/Prerelease/IA64\" -nologo" - LINKBIN="\"${MSSDK}/bin/win64/link.exe\"" + lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\"" + LINKBIN="\"${PATH64}/link.exe\"" + # Avoid 'unresolved external symbol __security_cookie' errors. + # c.f. http://support.microsoft.com/?id=894573 + LIBS="user32.lib advapi32.lib bufferoverflowU.lib" else RC="rc" # -Od - no optimization @@ -1696,9 +1711,9 @@ echo "configure:1521: checking compiler flags" >&5 CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" lflags="-nologo" LINKBIN="link" + LIBS="user32.lib advapi32.lib" fi - LIBS="user32.lib advapi32.lib" LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib comctl32.lib shell32.lib" SHLIB_LD="${LINKBIN} -dll -incremental:no ${lflags}" # link -lib only works when -lib is the first arg @@ -1743,7 +1758,7 @@ echo "configure:1521: checking compiler flags" >&5 echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:1747: checking for build with symbols" >&5 +echo "configure:1762: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -1803,7 +1818,7 @@ TCL_DBGX=${DBGX} #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1807: checking how to run the C preprocessor" >&5 +echo "configure:1822: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1818,13 +1833,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1828: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1835,13 +1850,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1845: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1852,13 +1867,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1862: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1884,17 +1899,17 @@ echo "$ac_t""$CPP" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1888: checking for errno.h" >&5 +echo "configure:1903: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1898: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1913: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* diff --git a/win/makefile.vc b/win/makefile.vc index 31b5b67..7b8fe5f 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -12,7 +12,7 @@ # Copyright (c) 2001-2002 David Gravereaux. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.100.2.6 2005/03/08 21:50:37 hobbs Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.100.2.7 2005/11/30 00:15:39 hobbs Exp $ #------------------------------------------------------------------------------ # Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) @@ -399,7 +399,11 @@ conlflags = $(lflags) -subsystem:console guilflags = $(lflags) -subsystem:windows baselibs = kernel32.lib advapi32.lib user32.lib - +# Avoid 'unresolved external symbol __security_cookie' errors. +# c.f. http://support.microsoft.com/?id=894573 +!if "$(MACHINE)" == "IA64" || "$(MACHINE)" == "AMD64" +baselibs = $(baselibs) bufferoverflowU.lib +!endif #--------------------------------------------------------------------- # TclTest flags diff --git a/win/tcl.m4 b/win/tcl.m4 index 540fcc1..680c999 100644 --- a/win/tcl.m4 +++ b/win/tcl.m4 @@ -382,7 +382,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ # Step 0: Enable 64 bit support? AC_MSG_CHECKING([if 64bit support is requested]) - AC_ARG_ENABLE(64bit,[ --enable-64bit enable 64bit support (where applicable)], [do64bit=$enableval], [do64bit=no]) + AC_ARG_ENABLE(64bit,[ --enable-64bit enable 64bit support (where applicable = amd64|ia64)], [do64bit=$enableval], [do64bit=no]) AC_MSG_RESULT($do64bit) # Set some defaults (may get changed below) @@ -427,7 +427,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ AC_MSG_CHECKING([compiler flags]) if test "${GCC}" = "yes" ; then - if test "$do64bit" = "yes" ; then + if test "$do64bit" != "no" ; then AC_MSG_WARN("64bit mode not supported with GCC on Windows") fi SHLIB_LD="" @@ -567,34 +567,49 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ # This is a 2-stage check to make sure we have the 64-bit SDK # We have to know where the SDK is installed. - if test "$do64bit" = "yes" ; then + # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs + # MACHINE is IX86 for LINK, but this is used by the manifest, + # which requires x86|amd64|ia64. + MACHINE="X86" + if test "$do64bit" != "no" ; then if test "x${MSSDK}x" = "xx" ; then - MSSDK="C:/Progra~1/Microsoft SDK" + MSSDK="C:/Progra~1/Microsoft Platform SDK" fi MSSDK=`echo "$MSSDK" | sed -e 's!\\\!/!g'` - if test ! -d "${MSSDK}/bin/win64" ; then - AC_MSG_WARN("could not find 64-bit SDK to enable 64bit mode") + PATH64="" + case "$do64bit" in + amd64|x64|yes) + MACHINE="AMD64" ; # default to AMD64 64-bit build + PATH64="${MSSDK}/Bin/Win64/x86/AMD64" + ;; + ia64) + MACHINE="IA64" + PATH64="${MSSDK}/Bin/Win64" + ;; + esac + if test ! -d "${PATH64}" ; then + AC_MSG_WARN([Could not find 64-bit $MACHINE SDK to enable 64bit mode]) + AC_MSG_WARN([Ensure latest Platform SDK is installed]) do64bit="no" + else + AC_MSG_RESULT([ Using 64-bit $MACHINE mode]) fi fi - if test "$do64bit" = "yes" ; then - # All this magic is necessary for the Win64 SDK RC1 - hobbs + if test "$do64bit" != "no" ; then # The space-based-path will work for the Makefile, but will - # not work if AC_TRY_COMPILE is called. TEA has the - # TEA_PATH_NOSPACE to avoid this issue. - CC="\"${MSSDK}/Bin/Win64/cl.exe\" \ - -I\"${MSSDK}/Include/prerelease\" \ - -I\"${MSSDK}/Include/Win64/crt\" \ - -I\"${MSSDK}/Include/Win64/crt/sys\" \ - -I\"${MSSDK}/Include\"" + # not work if AC_TRY_COMPILE is called. + CC="\"${PATH64}/cl.exe\" -I\"${MSSDK}/Include\" \ + -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\"" RC="\"${MSSDK}/bin/rc.exe\"" CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" # Do not use -O2 for Win64 - this has proved buggy in code gen. CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}" - lflags="-MACHINE:IA64 -LIBPATH:\"${MSSDK}/Lib/IA64\" \ - -LIBPATH:\"${MSSDK}/Lib/Prerelease/IA64\" -nologo" - LINKBIN="\"${MSSDK}/bin/win64/link.exe\"" + lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\"" + LINKBIN="\"${PATH64}/link.exe\"" + # Avoid 'unresolved external symbol __security_cookie' errors. + # c.f. http://support.microsoft.com/?id=894573 + LIBS="user32.lib advapi32.lib bufferoverflowU.lib" else RC="rc" # -Od - no optimization @@ -604,9 +619,9 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" lflags="-nologo" LINKBIN="link" + LIBS="user32.lib advapi32.lib" fi - LIBS="user32.lib advapi32.lib" LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib comctl32.lib shell32.lib" SHLIB_LD="${LINKBIN} -dll -incremental:no ${lflags}" # link -lib only works when -lib is the first arg -- cgit v0.12 From 996e9f865262a177f68c7d008069098ec658fd08 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 1 Dec 2005 02:14:46 +0000 Subject: * unix/tcl.m4 (Darwin): fixed error when MACOSX_DEPLOYMENT_TARGET unset. * unix/configure: regen. --- ChangeLog | 5 + unix/configure | 483 ++++++++++++++++++++++++++++----------------------------- unix/tcl.m4 | 5 +- 3 files changed, 248 insertions(+), 245 deletions(-) diff --git a/ChangeLog b/ChangeLog index b7ebbdf..316a88c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-12-01 Daniel Steffen + + * unix/tcl.m4 (Darwin): fixed error when MACOSX_DEPLOYMENT_TARGET unset. + * unix/configure: regen. + 2005-11-29 Jeff Hobbs * win/tcl.m4: Add build support for Windows-x64 builds. diff --git a/unix/configure b/unix/configure index 16bcd62..44f82a0 100755 --- a/unix/configure +++ b/unix/configure @@ -3420,13 +3420,12 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 DL_OBJS="tclLoadDyld.o" DL_LIBS="" # Don't use -prebind when building for Mac OS X 10.4 or later only: - if test -z "${MACOSX_DEPLOYMENT_TARGET}" -o \ - `echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print $2}'` -lt 4; then + test -z "${MACOSX_DEPLOYMENT_TARGET}" || \ + test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print $2}'`" -lt 4 && \ LDFLAGS="$LDFLAGS -prebind" - fi LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3430: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3429: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3434,14 +3433,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3464,7 +3463,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3468: checking whether to use CoreFoundation" >&5 +echo "configure:3467: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3476,7 +3475,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3480: checking for CoreFoundation.framework" >&5 +echo "configure:3479: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3490,14 +3489,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3523,17 +3522,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3527: checking for $ac_hdr" >&5 +echo "configure:3526: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3537: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3536: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3562,12 +3561,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3566: checking for $ac_func" >&5 +echo "configure:3565: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3618,17 +3617,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3622: checking for $ac_hdr" >&5 +echo "configure:3621: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3632: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3631: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3657,12 +3656,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3661: checking for $ac_func" >&5 +echo "configure:3660: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3732,12 +3731,12 @@ EOF # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3736: checking for realpath" >&5 +echo "configure:3735: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4071,17 +4070,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4075: checking for ld accepts -Bexport flag" >&5 +echo "configure:4074: checking for ld accepts -Bexport flag" >&5 LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -4122,9 +4121,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4126: checking sys/exec.h" >&5 +echo "configure:4125: checking sys/exec.h" >&5 cat > conftest.$ac_ext < int main() { @@ -4142,7 +4141,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4146: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -4160,9 +4159,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4164: checking a.out.h" >&5 +echo "configure:4163: checking a.out.h" >&5 cat > conftest.$ac_ext < int main() { @@ -4180,7 +4179,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -4198,9 +4197,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4202: checking sys/exec_aout.h" >&5 +echo "configure:4201: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext < int main() { @@ -4218,7 +4217,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -4369,7 +4368,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4373: checking for build with symbols" >&5 +echo "configure:4372: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4430,21 +4429,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4434: checking for required early compiler flags" >&5 +echo "configure:4433: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4447: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4452,7 +4451,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4460,7 +4459,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4463: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4486,14 +4485,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4496: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4501,7 +4500,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4509,7 +4508,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4513: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4535,14 +4534,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4546: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4550,7 +4549,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4558,7 +4557,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4587,7 +4586,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4591: checking for 64-bit integer type" >&5 +echo "configure:4590: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4595,14 +4594,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4616,7 +4615,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4628: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4650,13 +4649,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4654: checking for struct dirent64" >&5 +echo "configure:4653: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4664,7 +4663,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4685,13 +4684,13 @@ EOF echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4689: checking for struct stat64" >&5 +echo "configure:4688: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4699,7 +4698,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4722,12 +4721,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4726: checking for $ac_func" >&5 +echo "configure:4725: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4775,13 +4774,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4779: checking for off64_t" >&5 +echo "configure:4778: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4789,7 +4788,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4792: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4820,14 +4819,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4824: checking whether byte ordering is bigendian" >&5 +echo "configure:4823: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4838,11 +4837,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4853,7 +4852,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4873,7 +4872,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4919,12 +4918,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4923: checking for $ac_func" >&5 +echo "configure:4922: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4981,12 +4980,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4985: checking for $ac_func" >&5 +echo "configure:4984: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5036,12 +5035,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5040: checking for strerror" >&5 +echo "configure:5039: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5088,12 +5087,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5092: checking for getwd" >&5 +echo "configure:5091: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5140,12 +5139,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5144: checking for wait3" >&5 +echo "configure:5143: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5192,12 +5191,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5196: checking for uname" >&5 +echo "configure:5195: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5244,12 +5243,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5248: checking for realpath" >&5 +echo "configure:5247: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5307,17 +5306,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5311: checking for $ac_hdr" >&5 +echo "configure:5310: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5344,7 +5343,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5348: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5347: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5353,7 +5352,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5368,7 +5367,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5385,7 +5384,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5399,7 +5398,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5417,7 +5416,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5432,7 +5431,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5450,7 +5449,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5467,7 +5466,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5485,7 +5484,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5501,7 +5500,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5519,7 +5518,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5536,7 +5535,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5579,19 +5578,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5583: checking for fd_set in sys/types" >&5 +echo "configure:5582: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5595: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5607,12 +5606,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_cv_type_fd_set = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5611: checking for fd_mask in sys/select" >&5 +echo "configure:5610: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5649,12 +5648,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5653: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5652: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5662,7 +5661,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5687,17 +5686,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5691: checking for $ac_hdr" >&5 +echo "configure:5690: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5700: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5724,12 +5723,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5728: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5727: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5738,7 +5737,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5742: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5759,12 +5758,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5763: checking for tm_zone in struct tm" >&5 +echo "configure:5762: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5772,7 +5771,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5792,12 +5791,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5796: checking for tzname" >&5 +echo "configure:5795: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5807,7 +5806,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5832,12 +5831,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5836: checking for $ac_func" >&5 +echo "configure:5835: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5886,19 +5885,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5890: checking tm_tzadj in struct tm" >&5 +echo "configure:5889: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5902: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5901: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5919,19 +5918,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5923: checking tm_gmtoff in struct tm" >&5 +echo "configure:5922: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5956,12 +5955,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5960: checking long timezone variable" >&5 +echo "configure:5959: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5970,7 +5969,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5974: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5993,12 +5992,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5997: checking time_t timezone variable" >&5 +echo "configure:5996: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6007,7 +6006,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6010: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6034,12 +6033,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6038: checking for st_blksize in struct stat" >&5 +echo "configure:6037: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6047,7 +6046,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6068,12 +6067,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6072: checking for fstatfs" >&5 +echo "configure:6071: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6125,7 +6124,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6129: checking for 8-bit clean memcmp" >&5 +echo "configure:6128: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6133,7 +6132,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6167,12 +6166,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6171: checking for memmove" >&5 +echo "configure:6170: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6228,12 +6227,12 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6232: checking proper strstr implementation" >&5 +echo "configure:6231: checking proper strstr implementation" >&5 if test "$cross_compiling" = yes; then tcl_ok=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=yes else @@ -6270,12 +6269,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6274: checking for strtoul" >&5 +echo "configure:6273: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6322,7 +6321,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6361,12 +6360,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6365: checking for strtod" >&5 +echo "configure:6364: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6413,7 +6412,7 @@ if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6455,12 +6454,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6459: checking for strtod" >&5 +echo "configure:6458: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6505,7 +6504,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6509: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6508: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6514,7 +6513,7 @@ else tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=1 else @@ -6570,12 +6569,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6574: checking for ANSI C header files" >&5 +echo "configure:6573: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6583,7 +6582,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6600,7 +6599,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6618,7 +6617,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6639,7 +6638,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6650,7 +6649,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6674,12 +6673,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6678: checking for mode_t" >&5 +echo "configure:6677: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6707,12 +6706,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6711: checking for pid_t" >&5 +echo "configure:6710: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6740,12 +6739,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6744: checking for size_t" >&5 +echo "configure:6743: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6773,12 +6772,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6777: checking for uid_t in sys/types.h" >&5 +echo "configure:6776: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6808,12 +6807,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6812: checking for socklen_t" >&5 +echo "configure:6811: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6852,12 +6851,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6856: checking for opendir" >&5 +echo "configure:6855: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6913,12 +6912,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6917: checking union wait" >&5 +echo "configure:6916: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6930,7 +6929,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6957,12 +6956,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6961: checking for strncasecmp" >&5 +echo "configure:6960: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7007,7 +7006,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7011: checking for strncasecmp in -lsocket" >&5 +echo "configure:7010: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7015,7 +7014,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7050,7 +7049,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7054: checking for strncasecmp in -linet" >&5 +echo "configure:7053: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7058,7 +7057,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7107,12 +7106,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7111: checking for BSDgettimeofday" >&5 +echo "configure:7110: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7157,12 +7156,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7161: checking for gettimeofday" >&5 +echo "configure:7160: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7212,12 +7211,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7216: checking for gettimeofday declaration" >&5 +echo "configure:7215: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7248,14 +7247,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7252: checking whether char is unsigned" >&5 +echo "configure:7251: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7311,12 +7310,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7315: checking signed char declarations" >&5 +echo "configure:7314: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7351,7 +7350,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7355: checking for a putenv() that copies the buffer" >&5 +echo "configure:7354: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7359,7 +7358,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7381,7 +7380,7 @@ else } EOF -if { (eval echo configure:7385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7422,17 +7421,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7426: checking for langinfo.h" >&5 +echo "configure:7425: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7436: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7456,20 +7455,20 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7460: checking whether to use nl_langinfo" >&5 +echo "configure:7459: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -7505,17 +7504,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7509: checking for $ac_hdr" >&5 +echo "configure:7508: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7518: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7545,17 +7544,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7549: checking for $ac_hdr" >&5 +echo "configure:7548: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7559: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7558: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7582,7 +7581,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7586: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7585: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7662,7 +7661,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7666: checking how to package libraries" >&5 +echo "configure:7665: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index e8e5dc2..01479b2 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1433,10 +1433,9 @@ dnl AC_CHECK_TOOL(AR, ar) DL_OBJS="tclLoadDyld.o" DL_LIBS="" # Don't use -prebind when building for Mac OS X 10.4 or later only: - if test -z "${MACOSX_DEPLOYMENT_TARGET}" -o \ - `echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print [$]2}'` -lt 4; then + test -z "${MACOSX_DEPLOYMENT_TARGET}" || \ + test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print [$]2}'`" -lt 4 && \ LDFLAGS="$LDFLAGS -prebind" - fi LDFLAGS="$LDFLAGS -headerpad_max_install_names" AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [ hold_ldflags=$LDFLAGS -- cgit v0.12 From a3f25f781d9dc0929f80cbf218b409823c046cb5 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 1 Dec 2005 18:29:45 +0000 Subject: 2005-12-01 Don Porter *** 8.4.12 TAGGED FOR RELEASE *** * changes: Update changes for 8.4.12 release --- ChangeLog | 6 ++++++ changes | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 316a88c..b42900a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-12-01 Don Porter + + *** 8.4.12 TAGGED FOR RELEASE *** + + * changes: Update changes for 8.4.12 release + 2005-12-01 Daniel Steffen * unix/tcl.m4 (Darwin): fixed error when MACOSX_DEPLOYMENT_TARGET unset. diff --git a/changes b/changes index 46d3109..eb68ac6 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.29 2005/11/21 18:31:42 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.30 2005/12/01 18:29:46 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6317,4 +6317,8 @@ Restores Tcl 8.4.9 behavior (porter) 2005-11-20 (bug fix)[1091431] Tcl_InitStubs failure crashes wish (english) ---- Released 8.4.12, November 30, 2005 --- See ChangeLog for details --- +2005-11-29 (bug fix)[1366683] [lsearch -regexp] backrefs (cleverly,fellows) + +2005-11-29 (enhancement)[1369597] Win 64: --enable-64bit=amd64|ia64 (hobbs) + +--- Released 8.4.12, Decemeber 1, 2005 --- See ChangeLog for details --- -- cgit v0.12 From 3ef6ec6516aa426cda15defa3c8da002e8b14075 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 2 Dec 2005 17:17:13 +0000 Subject: eliminate test name duplication --- tests/pkg.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pkg.test b/tests/pkg.test index 0a7833f..d3796af 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.2 2005/11/18 19:27:19 dgp Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.3 2005/12/02 17:17:13 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -376,7 +376,7 @@ test pkg-2.35 {Tcl_PkgRequire: consistent return values (1162286)} -setup { } -cleanup { package forget foo } -returnCodes error -match glob -result {attempt to provide package * failed:*} -test pkg-2.35 {Tcl_PkgRequire: consistent return values (1162286)} -setup { +test pkg-2.35.1 {Tcl_PkgRequire: consistent return values (1162286)} -setup { package forget foo } -body { package ifneeded foo 1 {break} -- cgit v0.12 From 22406a8452be45229f4fe19b8001ffb28c6536fe Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 2 Dec 2005 21:13:26 +0000 Subject: update README files --- README | 25 ++++++++++++------------- generic/README | 4 ++-- unix/README | 5 +++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README b/README index 3127941..90547a5 100644 --- a/README +++ b/README @@ -5,7 +5,7 @@ README: Tcl You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.12 2005/11/16 22:05:26 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.13 2005/12/02 21:13:26 dgp Exp $ Contents -------- @@ -57,8 +57,8 @@ by clicking on the relevant version. Information about Tcl itself can be found at http://www.tcl.tk/scripting/ -There have been many Tcl books on the market. Most are listed at - http://www.tcl.tk/resource/doc/books/ +There have been many Tcl books on the market. Many are mentioned in the Wiki: + http://wiki.tcl.tk/book/ 2a. Unix Documentation ---------------------- @@ -135,15 +135,14 @@ anonymous FTP. The archive also contains several FAQ ("frequently asked questions") documents that provide solutions to problems that are commonly encountered by Tcl newcomers. -7. Tcl Resource Center ----------------------- +7. The Tcler's Wiki +------------------- + +A Wiki-based open community site covering all aspects of Tcl/Tk is at: + + http://wiki.tcl.tk/ -Visit http://www.tcl.tk/resource/ to see an annotated index of -many Tcl resources available on the World Wide Web. This includes -papers, books, and FAQs, as well as development tools, extensions, -applications, binary releases, and patches. You can also recommend -additional URLs for the resource center using the forms labeled "Add a -Resource". +A wealth of useful information can be found there. 8. Mailing lists ---------------- @@ -181,10 +180,10 @@ The Tcl community is too large for us to provide much individual support for users. If you need help we suggest that you post questions to comp.lang.tcl. We read the newsgroup and will attempt to answer esoteric questions for which no one else is likely to know the answer. In addition, -see the following Web site for links to other organizations that offer +see the following page on the Wiki for links to other organizations that offer Tcl/Tk training: - http://www.tcl.tk/resource/community/commercial/training + http://wiki.tcl.tk/training 10. Thank You ------------- diff --git a/generic/README b/generic/README index 209ba44..0f7ee21 100644 --- a/generic/README +++ b/generic/README @@ -1,5 +1,5 @@ This directory contains Tcl source files that work on all the platforms where Tcl runs (e.g. UNIX, PCs, and Macintoshes). Platform-specific -sources are in the directories ../unix, ../win, and ../mac. +sources are in the directories ../unix, ../win, ../macosx, and ../mac. -RCS: @(#) $Id: README,v 1.2 1998/09/14 18:39:56 stanton Exp $ +RCS: @(#) $Id: README,v 1.2.40.1 2005/12/02 21:13:26 dgp Exp $ diff --git a/unix/README b/unix/README index d5607f6..ae2c3a9 100644 --- a/unix/README +++ b/unix/README @@ -1,7 +1,7 @@ Tcl UNIX README --------------- -RCS: @(#) $Id: README,v 1.24 2002/10/10 04:56:21 hobbs Exp $ +RCS: @(#) $Id: README,v 1.24.2.1 2005/12/02 21:13:26 dgp Exp $ This is the directory where you configure, compile, test, and install UNIX versions of Tcl. This directory also contains source files for Tcl @@ -22,7 +22,8 @@ changes on any UNIX-like system that approximates POSIX, BSD, or System V. We know that it runs on workstations from Sun, H-P, DEC, IBM, and SGI, as well as PCs running Linux, BSDI, and SCO UNIX. To compile for a PC running Windows, see the README file in the directory ../win. To -compile for a Macintosh, see the README file in the directory ../mac. +compile for Max OS X, see the README in the directory ../macosx. To +compile for a classic Macintosh, see the README file in the directory ../mac. How To Compile And Install Tcl: ------------------------------- -- cgit v0.12 From 73b0d77495ba7dd185924a7ac5ebf23049063b66 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 3 Dec 2005 00:35:44 +0000 Subject: documented macosx-only configure options. --- unix/README | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/unix/README b/unix/README index ae2c3a9..b090a63 100644 --- a/unix/README +++ b/unix/README @@ -1,7 +1,7 @@ Tcl UNIX README --------------- -RCS: @(#) $Id: README,v 1.24.2.1 2005/12/02 21:13:26 dgp Exp $ +RCS: @(#) $Id: README,v 1.24.2.2 2005/12/03 00:35:44 das Exp $ This is the directory where you configure, compile, test, and install UNIX versions of Tcl. This directory also contains source files for Tcl @@ -83,6 +83,11 @@ How To Compile And Install Tcl: should be reachable under several names. --enable-man-compression=PROG Compress the manpages using PROG. + Mac OS X only: + --enable-framework package Tcl as a framework. + --disable-corefoundation disable use of CoreFoundation API and revert to + standard select based notifier, required when + using naked fork (i.e. not followed by execve). Note: by default gcc will be used if it can be located on the PATH. if you want to use cc instead of gcc, set the CC environment variable -- cgit v0.12 From 1d10832f45fede13b8c2a81314eba05f1c7475c2 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sat, 3 Dec 2005 21:55:24 +0000 Subject: correct 2 README urls --- ChangeLog | 8 ++++++-- README | 6 +++--- changes | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index b42900a..7ec67d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,16 @@ -2005-12-01 Don Porter +2005-12-03 Jeff Hobbs *** 8.4.12 TAGGED FOR RELEASE *** + * README: correct 2 urls + +2005-12-01 Don Porter + * changes: Update changes for 8.4.12 release 2005-12-01 Daniel Steffen - * unix/tcl.m4 (Darwin): fixed error when MACOSX_DEPLOYMENT_TARGET unset. + * unix/tcl.m4 (Darwin): fixed error when MACOSX_DEPLOYMENT_TARGET unset * unix/configure: regen. 2005-11-29 Jeff Hobbs diff --git a/README b/README index 90547a5..a829614 100644 --- a/README +++ b/README @@ -5,7 +5,7 @@ README: Tcl You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.13 2005/12/02 21:13:26 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.14 2005/12/03 21:55:24 hobbs Exp $ Contents -------- @@ -55,10 +55,10 @@ by clicking on the relevant version. http://sourceforge.net/project/showfiles.php?group_id=10894 Information about Tcl itself can be found at - http://www.tcl.tk/scripting/ + http://www.tcl.tk/about/ There have been many Tcl books on the market. Many are mentioned in the Wiki: - http://wiki.tcl.tk/book/ + http://wiki.tcl.tk/book 2a. Unix Documentation ---------------------- diff --git a/changes b/changes index eb68ac6..017bb5b 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.30 2005/12/01 18:29:46 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.31 2005/12/03 21:55:24 hobbs Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6321,4 +6321,4 @@ Restores Tcl 8.4.9 behavior (porter) 2005-11-29 (enhancement)[1369597] Win 64: --enable-64bit=amd64|ia64 (hobbs) ---- Released 8.4.12, Decemeber 1, 2005 --- See ChangeLog for details --- +--- Released 8.4.12, Decemeber 3, 2005 --- See ChangeLog for details --- -- cgit v0.12 From 6d30b8c11fa8b57fff54beea68c7c8394ee305d6 Mon Sep 17 00:00:00 2001 From: das Date: Sun, 4 Dec 2005 00:50:03 +0000 Subject: * README: refer to macosx/README instead of mac/README. * mac/README: add note that mac classic port is no longer supported. --- ChangeLog | 7 ++++++- README | 4 ++-- mac/README | 14 +++++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ec67d9..40528f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ -2005-12-03 Jeff Hobbs +2005-12-04 Daniel Steffen *** 8.4.12 TAGGED FOR RELEASE *** + * README: refer to macosx/README instead of mac/README. + * mac/README: add note that mac classic port is no longer supported. + +2005-12-03 Jeff Hobbs + * README: correct 2 urls 2005-12-01 Don Porter diff --git a/README b/README index a829614..ddd5732 100644 --- a/README +++ b/README @@ -5,7 +5,7 @@ README: Tcl You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.14 2005/12/03 21:55:24 hobbs Exp $ +RCS: @(#) $Id: README,v 1.49.2.15 2005/12/04 00:50:03 das Exp $ Contents -------- @@ -92,7 +92,7 @@ Windows help Tcl documentation will appear in the "Start" menu: 3. Compiling and installing Tcl ------------------------------- -There are brief notes in the unix/README, win/README, and mac/README about +There are brief notes in the unix/README, win/README, and macosx/README about compiling on these different platforms. There is additional information about building Tcl from sources at diff --git a/mac/README b/mac/README index 6fa986c..05d9793 100644 --- a/mac/README +++ b/mac/README @@ -1,6 +1,18 @@ Tcl 8.4 for Macintosh -RCS: @(#) $Id: README,v 1.17 2002/03/04 23:26:03 hobbs Exp $ +RCS: @(#) $Id: README,v 1.17.2.1 2005/12/04 00:50:03 das Exp $ + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Note that Tcl on Mac OS Classic is no longer supported and likely no longer +compiles, the last release known to work is 8.4.2. The 'mac' source +directory and all other Mac Classic code have been removed from Tk 8.5. + +The Mac OS X port of Tcl can be found in the 'macosx' source directory. + +The information and URLs below are known to be outdated and incorrect. + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1. Introduction --------------- -- cgit v0.12 From e424d1746c959678c7f353e1ccc1aef32317b0e4 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 5 Dec 2005 15:10:31 +0000 Subject: 2005-12-05 Don Porter *** 8.4.12 TAGGED FOR RELEASE *** * unix/configure.in: Revised fix for [Bug 1034337] from Daniel * unix/tclUnixFCmd.c: Steffen. Uses fts_*() routines. * unix/configure: autoconf-2.13 * changes: Update changes for 8.4.12 release --- ChangeLog | 9 +++- changes | 6 +-- unix/configure | 60 +++++++++++++++++++++---- unix/configure.in | 20 ++++++++- unix/tclUnixFCmd.c | 130 +++++++++++++++++++++++++++++++++++++++++++---------- 5 files changed, 189 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 40528f9..290f823 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,14 @@ -2005-12-04 Daniel Steffen +2005-12-05 Don Porter *** 8.4.12 TAGGED FOR RELEASE *** + * unix/configure.in: Revised fix for [Bug 1034337] from Daniel + * unix/tclUnixFCmd.c: Steffen. Uses fts_*() routines. + * unix/configure: autoconf-2.13 + * changes: Update changes for 8.4.12 release + +2005-12-04 Daniel Steffen + * README: refer to macosx/README instead of mac/README. * mac/README: add note that mac classic port is no longer supported. diff --git a/changes b/changes index 017bb5b..f7178a3 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.31 2005/12/03 21:55:24 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.79.2.32 2005/12/05 15:10:32 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6276,8 +6276,6 @@ Restores Tcl 8.4.9 behavior (porter) 2005-10-05 (bug fix)[979640] buffer overrun mixing putenv(), ::env (bold,hobbs) -2005-10-07 (Darwin bug fix)[1034337] recursive file delete, MacOSX, NFS (hobbs) - 2005-10-13 (bug fix)[1284178] [format] accept all integer values (porter) 2005-10-22 (bug fix)[1251791] optimization exposed wide/int difference(sofer) @@ -6321,4 +6319,6 @@ Restores Tcl 8.4.9 behavior (porter) 2005-11-29 (enhancement)[1369597] Win 64: --enable-64bit=amd64|ia64 (hobbs) +2005-12-05 (Darwin bug fix)[1034337] NFS recursive file delete (steffen) + --- Released 8.4.12, Decemeber 3, 2005 --- See ChangeLog for details --- diff --git a/unix/configure b/unix/configure index 44f82a0..d243def 100755 --- a/unix/configure +++ b/unix/configure @@ -7493,6 +7493,50 @@ EOF #-------------------------------------------------------------------- +# Check for support of fts functions on Darwin (readdir replacement) +#-------------------------------------------------------------------- + +if test "`uname -s`" = "Darwin" ; then + echo $ac_n "checking for fts""... $ac_c" 1>&6 +echo "configure:7502: checking for fts" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < + #include + #include +int main() { +char*const p[2] = {"/", NULL}; + FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); + FTSENT *e = fts_read(f); fts_close(f); +; return 0; } +EOF +if { (eval echo configure:7519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_api_fts=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_api_fts=no +fi +rm -f conftest* +fi + +echo "$ac_t""$tcl_cv_api_fts" 1>&6 + if test $tcl_cv_api_fts = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_FTS 1 +EOF + + fi +fi + +#-------------------------------------------------------------------- # The statements below check for systems where POSIX-style # non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. # On these systems (mostly older ones), use the old BSD-style @@ -7504,17 +7548,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7508: checking for $ac_hdr" >&5 +echo "configure:7552: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7518: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7544,17 +7588,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7548: checking for $ac_hdr" >&5 +echo "configure:7592: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7558: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7581,7 +7625,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7585: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7629: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7661,7 +7705,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7665: checking how to package libraries" >&5 +echo "configure:7709: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/configure.in b/unix/configure.in index 791497f..18079e9 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.21 2005/11/27 02:34:42 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.22 2005/12/05 15:10:33 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -436,6 +436,24 @@ fi SC_ENABLE_LANGINFO #-------------------------------------------------------------------- +# Check for support of fts functions on Darwin (readdir replacement) +#-------------------------------------------------------------------- + +if test "`uname -s`" = "Darwin" ; then + AC_CACHE_CHECK([for fts], tcl_cv_api_fts, [ + AC_TRY_LINK([#include + #include + #include ], + [char*const p[2] = {"/", NULL}; + FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); + FTSENT *e = fts_read(f); fts_close(f);], + tcl_cv_api_fts=yes, tcl_cv_api_fts=no)]) + if test $tcl_cv_api_fts = yes; then + AC_DEFINE(HAVE_FTS) + fi +fi + +#-------------------------------------------------------------------- # The statements below check for systems where POSIX-style # non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. # On these systems (mostly older ones), use the old BSD-style diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index f5555b7..02bd513 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.7 2005/11/27 02:34:42 das Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.8 2005/12/05 15:10:33 dgp Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -56,6 +56,9 @@ #include #endif #endif +#ifdef HAVE_FTS +#include +#endif /* * The following constants specify the type of callback when @@ -147,7 +150,7 @@ static int CopyFile _ANSI_ARGS_((CONST char *src, static int CopyFileAtts _ANSI_ARGS_((CONST char *src, CONST char *dst, CONST Tcl_StatBuf *statBufPtr)); static int DoCopyFile _ANSI_ARGS_((CONST char *srcPtr, - CONST char *dstPtr)); + CONST char *dstPtr, CONST Tcl_StatBuf *statBufPtr)); static int DoCreateDirectory _ANSI_ARGS_((CONST char *pathPtr)); static int DoRemoveDirectory _ANSI_ARGS_((Tcl_DString *pathPtr, int recursive, Tcl_DString *errorPtr)); @@ -343,25 +346,26 @@ TclpObjCopyFile(srcPathPtr, destPathPtr) Tcl_Obj *srcPathPtr; Tcl_Obj *destPathPtr; { - return DoCopyFile(Tcl_FSGetNativePath(srcPathPtr), - Tcl_FSGetNativePath(destPathPtr)); + CONST char *src = Tcl_FSGetNativePath(srcPathPtr); + Tcl_StatBuf srcStatBuf; + + if (TclOSlstat(src, &srcStatBuf) != 0) { /* INTL: Native. */ + return TCL_ERROR; + } + + return DoCopyFile(src, Tcl_FSGetNativePath(destPathPtr), &srcStatBuf); } static int -DoCopyFile(src, dst) +DoCopyFile(src, dst, statBufPtr) CONST char *src; /* Pathname of file to be copied (native). */ CONST char *dst; /* Pathname of file to copy to (native). */ + CONST Tcl_StatBuf *statBufPtr; + /* Used to determine filetype. */ { - Tcl_StatBuf srcStatBuf, dstStatBuf; + Tcl_StatBuf dstStatBuf; - /* - * Have to do a stat() to determine the filetype. - */ - - if (TclOSlstat(src, &srcStatBuf) != 0) { /* INTL: Native. */ - return TCL_ERROR; - } - if (S_ISDIR(srcStatBuf.st_mode)) { + if (S_ISDIR(statBufPtr->st_mode)) { errno = EISDIR; return TCL_ERROR; } @@ -383,7 +387,7 @@ DoCopyFile(src, dst) } } - switch ((int) (srcStatBuf.st_mode & S_IFMT)) { + switch ((int) (statBufPtr->st_mode & S_IFMT)) { #ifndef DJGPP case S_IFLNK: { char link[MAXPATHLEN]; @@ -405,20 +409,20 @@ DoCopyFile(src, dst) #endif case S_IFBLK: case S_IFCHR: { - if (mknod(dst, srcStatBuf.st_mode, /* INTL: Native. */ - srcStatBuf.st_rdev) < 0) { + if (mknod(dst, statBufPtr->st_mode, /* INTL: Native. */ + statBufPtr->st_rdev) < 0) { return TCL_ERROR; } - return CopyFileAtts(src, dst, &srcStatBuf); + return CopyFileAtts(src, dst, statBufPtr); } case S_IFIFO: { - if (mkfifo(dst, srcStatBuf.st_mode) < 0) { /* INTL: Native. */ + if (mkfifo(dst, statBufPtr->st_mode) < 0) { /* INTL: Native. */ return TCL_ERROR; } - return CopyFileAtts(src, dst, &srcStatBuf); + return CopyFileAtts(src, dst, statBufPtr); } default: { - return CopyFile(src, dst, &srcStatBuf); + return CopyFile(src, dst, statBufPtr); } } return TCL_OK; @@ -832,9 +836,15 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) CONST char *source, *errfile; int result, sourceLen; int targetLen; +#ifndef HAVE_FTS int numProcessed = 0; Tcl_DirEntry *dirEntPtr; DIR *dirPtr; +#else + CONST char *paths[2] = {NULL, NULL}; + FTS *fts = NULL; + FTSENT *ent; +#endif errfile = NULL; result = TCL_OK; @@ -853,6 +863,7 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) return (*traverseProc)(sourcePtr, targetPtr, &statBuf, DOTREE_F, errorPtr); } +#ifndef HAVE_FTS dirPtr = opendir(source); /* INTL: Native. */ if (dirPtr == NULL) { /* @@ -938,6 +949,74 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) result = (*traverseProc)(sourcePtr, targetPtr, &statBuf, DOTREE_POSTD, errorPtr); } +#else /* HAVE_FTS */ + paths[0] = source; + fts = fts_open((char**)paths, FTS_PHYSICAL|FTS_NOCHDIR| +#ifdef HAVE_STRUCT_STAT64 + FTS_NOSTAT, /* fts doesn't do stat64 */ +#else + (doRewind ? FTS_NOSTAT : 0), /* no need to stat for delete */ +#endif + NULL); + if (fts == NULL) { + errfile = source; + goto end; + } + + sourceLen = Tcl_DStringLength(sourcePtr); + if (targetPtr != NULL) { + targetLen = Tcl_DStringLength(targetPtr); + } + + while ((ent = fts_read(fts)) != NULL) { + unsigned short info = ent->fts_info; + char * path = ent->fts_path + sourceLen; + unsigned short pathlen = ent->fts_pathlen - sourceLen; + int type; + Tcl_StatBuf *statBufPtr = NULL; + + if (info == FTS_DNR || info == FTS_ERR || info == FTS_NS) { + errfile = ent->fts_path; + break; + } + Tcl_DStringAppend(sourcePtr, path, pathlen); + if (targetPtr != NULL) { + Tcl_DStringAppend(targetPtr, path, pathlen); + } + switch (info) { + case FTS_D: + type = DOTREE_PRED; + break; + case FTS_DP: + type = DOTREE_POSTD; + break; + default: + type = DOTREE_F; + break; + } + if (!doRewind) { /* no need to stat for delete */ +#ifdef HAVE_STRUCT_STAT64 + statBufPtr = &statBuf; + if (TclOSlstat(ent->fts_path, statBufPtr) != 0) { + errfile = ent->fts_path; + break; + } +#else + statBufPtr = ent->fts_statp; +#endif + } + result = (*traverseProc)(sourcePtr, targetPtr, statBufPtr, type, + errorPtr); + if (result != TCL_OK) { + break; + } + Tcl_DStringSetLength(sourcePtr, sourceLen); + if (targetPtr != NULL) { + Tcl_DStringSetLength(targetPtr, targetLen); + } + } +#endif /* HAVE_FTS */ + end: if (errfile != NULL) { if (errorPtr != NULL) { @@ -945,6 +1024,11 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) } result = TCL_ERROR; } +#ifdef HAVE_FTS + if (fts != NULL) { + fts_close(fts); + } +#endif /* HAVE_FTS */ return result; } @@ -980,8 +1064,8 @@ TraversalCopy(srcPtr, dstPtr, statBufPtr, type, errorPtr) { switch (type) { case DOTREE_F: - if (DoCopyFile(Tcl_DStringValue(srcPtr), - Tcl_DStringValue(dstPtr)) == TCL_OK) { + if (DoCopyFile(Tcl_DStringValue(srcPtr), Tcl_DStringValue(dstPtr), + statBufPtr) == TCL_OK) { return TCL_OK; } break; -- cgit v0.12 From b2dd6e1abe85436999afebe24e3a7f37c7bea2e4 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 6 Dec 2005 08:21:22 +0000 Subject: * unix/tclUnixPort.h (Darwin): fix incorrect __DARWIN_UNIX03 configure overrides that were originally copied from Darwin CVS (rdar://3693001). --- ChangeLog | 5 +++++ unix/tclUnixPort.h | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 290f823..d712a48 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-12-05 Daniel Steffen + + * unix/tclUnixPort.h (Darwin): fix incorrect __DARWIN_UNIX03 configure + overrides that were originally copied from Darwin CVS (rdar://3693001). + 2005-12-05 Don Porter *** 8.4.12 TAGGED FOR RELEASE *** diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index ef8156f..fad82a8 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.7 2005/11/27 02:34:42 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.8 2005/12/06 08:21:23 das Exp $ */ #ifndef _TCLUNIXPORT @@ -513,13 +513,15 @@ extern double strtod(); # ifdef __LP64__ # undef HAVE_COREFOUNDATION # endif /* __LP64__ */ -# ifdef __DARWIN_UNIX03 -# define USE_TERMIOS 1 -# undef HAVE_PUTENV_THAT_COPIES -# else /* !__DARWIN_UNIX03 */ -# undef USE_TERMIOS -# define HAVE_PUTENV_THAT_COPIES 1 -# endif /* __DARWIN_UNIX03 */ +# include +# if defined(__DARWIN_UNIX03) +# if __DARWIN_UNIX03 +# undef HAVE_PUTENV_THAT_COPIES +# else /* !__DARWIN_UNIX03 */ +# define HAVE_PUTENV_THAT_COPIES 1 +# endif /* __DARWIN_UNIX03 */ +# define USE_TERMIOS 1 +# endif /* defined(__DARWIN_UNIX03) */ #endif /* __APPLE__ */ /* -- cgit v0.12 From d6fd12e506eab07e124e6007cf7622843fea8a33 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 6 Dec 2005 09:01:07 +0000 Subject: * unix/tclUnixPort.h (Darwin): fix incorrect __DARWIN_UNIX03 configure overrides that were originally copied from Darwin CVS (rdar://3693001). --- unix/tclUnixPort.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index fad82a8..5c4b195 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.8 2005/12/06 08:21:23 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.9 2005/12/06 09:01:07 das Exp $ */ #ifndef _TCLUNIXPORT @@ -521,6 +521,8 @@ extern double strtod(); # define HAVE_PUTENV_THAT_COPIES 1 # endif /* __DARWIN_UNIX03 */ # define USE_TERMIOS 1 +# undef USE_TERMIO +# undef USE_SGTTY # endif /* defined(__DARWIN_UNIX03) */ #endif /* __APPLE__ */ -- cgit v0.12 From 268ee946f3eb31ba016fd1d3275e202b7617dbe1 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 6 Dec 2005 15:54:40 +0000 Subject: advance core-8-4-12 tag --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d712a48..faef7af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,12 @@ 2005-12-05 Daniel Steffen + *** 8.4.12 TAGGED FOR RELEASE *** + * unix/tclUnixPort.h (Darwin): fix incorrect __DARWIN_UNIX03 configure overrides that were originally copied from Darwin CVS (rdar://3693001). 2005-12-05 Don Porter - *** 8.4.12 TAGGED FOR RELEASE *** - * unix/configure.in: Revised fix for [Bug 1034337] from Daniel * unix/tclUnixFCmd.c: Steffen. Uses fts_*() routines. * unix/configure: autoconf-2.13 -- cgit v0.12 From 935e1e7bff4e2328bdf256ef524c4a6a3aa9947e Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 9 Dec 2005 14:39:19 +0000 Subject: Fix [Bug 1374778] --- ChangeLog | 6 ++++++ generic/tclCmdIL.c | 15 +++++++++++++-- tests/lsearch.test | 14 +++++++++++++- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index faef7af..2c574b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-12-09 Donal K. Fellows + + * tests/lsearch.test (lsearch-10.8..10): If the -start is off the end, + * generic/tclCmdIL.c (Tcl_LsearchObjCmd): searching should find + nothing at all. [Bug 1374778] + 2005-12-05 Daniel Steffen *** 8.4.12 TAGGED FOR RELEASE *** diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 7a232a6..a867272 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.8 2005/11/29 10:32:31 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.9 2005/12/09 14:39:25 dkf Exp $ */ #include "tclInt.h" @@ -3066,8 +3066,19 @@ Tcl_LsearchObjCmd(clientData, interp, objc, objv) if (result != TCL_OK) { return result; } + + /* + * If the search started past the end of the list, we just return a + * "did not match anything at all" result straight away. [Bug 1374778] + */ + if (offset > listc-1) { - offset = listc-1; + if (allMatches || inlineReturn) { + Tcl_ResetResult(interp); + } else { + Tcl_SetObjResult(interp, Tcl_NewIntObj(-1)); + } + return TCL_OK; } if (offset < 0) { offset = 0; diff --git a/tests/lsearch.test b/tests/lsearch.test index 47d4ffc..86884c4 100644 --- a/tests/lsearch.test +++ b/tests/lsearch.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: lsearch.test,v 1.10.2.2 2005/11/29 10:32:31 dkf Exp $ +# RCS: @(#) $Id: lsearch.test,v 1.10.2.3 2005/12/09 14:39:25 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -293,6 +293,18 @@ test lsearch-10.7 {offset searching with an empty list} { # Stop bug #694232 from reocurring lsearch -start 0 {} x } -1 +test lsearch-10.8 {offset searching past the end of the list} { + # Stop [Bug 1374778] from reoccurring + lsearch -start 10 {a b c} c +} -1 +test lsearch-10.9 {offset searching past the end of the list} { + # Stop [Bug 1374778] from reoccurring + lsearch -start 10 -all {a b c} c +} {} +test lsearch-10.10 {offset searching past the end of the list} { + # Stop [Bug 1374778] from reoccurring + lsearch -start 10 -inline {a b c} c +} {} test lsearch-11.1 {negated searches} { lsearch -not {a a a b a a a} a -- cgit v0.12 From 7a116443a870099b88001b8017e2100cc8ee0937 Mon Sep 17 00:00:00 2001 From: rmax Date: Mon, 12 Dec 2005 11:28:22 +0000 Subject: * generic/tclExecute.c (ExprAbsFunc): fixed the abs(MIN_INT) case so that it doesn't break on compilers that don't assume integers to wrap around (e.g. gcc-4.1.0). --- ChangeLog | 6 ++++++ generic/tclExecute.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2c574b2..fd1b850 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-12-12 Reinhard Max + + * generic/tclExecute.c (ExprAbsFunc): fixed the abs(MIN_INT) case + so that it doesn't break on compilers that don't assume integers + to wrap around (e.g. gcc-4.1.0). + 2005-12-09 Donal K. Fellows * tests/lsearch.test (lsearch-10.8..10): If the -start is off the end, diff --git a/generic/tclExecute.c b/generic/tclExecute.c index c238a98..34e4ec1 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.17 2005/10/28 03:26:32 mdejong Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.18 2005/12/12 11:28:22 rmax Exp $ */ #include "tclInt.h" @@ -5074,8 +5074,7 @@ ExprAbsFunc(interp, eePtr, clientData) if (valuePtr->typePtr == &tclIntType) { i = valuePtr->internalRep.longValue; if (i < 0) { - iResult = -i; - if (iResult < 0) { + if (i == LONG_MIN) { #ifdef TCL_WIDE_INT_IS_LONG Tcl_SetObjResult(interp, Tcl_NewStringObj( "integer value too large to represent", -1)); @@ -5094,6 +5093,7 @@ ExprAbsFunc(interp, eePtr, clientData) #endif } + iResult = -i; } else { iResult = i; } -- cgit v0.12 From 02b4f5f29a47603fed5faa0d5fe64f5a398940cc Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 12 Dec 2005 20:53:59 +0000 Subject: * unix/tcl.m4, unix/configure: Fix sh quoting error reported in bash-3.1+ [Bug 1377619] (schafer) --- ChangeLog | 5 +++++ unix/configure | 4 ++-- unix/tcl.m4 | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index fd1b850..7a1de45 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-12-12 Jeff Hobbs + + * unix/tcl.m4, unix/configure: Fix sh quoting error reported in + bash-3.1+ [Bug 1377619] (schafer) + 2005-12-12 Reinhard Max * generic/tclExecute.c (ExprAbsFunc): fixed the abs(MIN_INT) case diff --git a/unix/configure b/unix/configure index d243def..d15bc30 100755 --- a/unix/configure +++ b/unix/configure @@ -2481,7 +2481,7 @@ echo "configure:2472: checking system version (for dynamic loading)" >&5 # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print }' /etc/.relid'` + system=MP-RAS-`awk '{print }' /etc/.relid` fi if test "`uname -s`" = "AIX" ; then system=AIX-`uname -v`.`uname -r` @@ -7637,7 +7637,7 @@ echo "configure:7629: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print }' /etc/.relid'` + system=MP-RAS-`awk '{print }' /etc/.relid` fi if test "`uname -s`" = "AIX" ; then system=AIX-`uname -v`.`uname -r` diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 01479b2..1c11781 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -879,7 +879,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print $3}' /etc/.relid'` + system=MP-RAS-`awk '{print $3}' /etc/.relid` fi if test "`uname -s`" = "AIX" ; then system=AIX-`uname -v`.`uname -r` @@ -2317,7 +2317,7 @@ AC_DEFUN(SC_BLOCKING_STYLE, [ # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print $3}' /etc/.relid'` + system=MP-RAS-`awk '{print $3}' /etc/.relid` fi if test "`uname -s`" = "AIX" ; then system=AIX-`uname -v`.`uname -r` -- cgit v0.12 From 395a015365e40d2f826658b1216096a6f110f064 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 14 Dec 2005 02:10:17 +0000 Subject: * unix/configure.in: run check for fts API on all platforms, since Linux glibc2 and *BSDs also have this and using fts is more efficient than recursive opendir/readdir (sync with HEAD). * unix/configure: regen. --- ChangeLog | 7 +++++++ unix/configure | 42 ++++++++++++++++++++---------------------- unix/configure.in | 26 ++++++++++++-------------- 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7a1de45..e61d115 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-12-14 Daniel Steffen + + * unix/configure.in: run check for fts API on all platforms, since Linux + glibc2 and *BSDs also have this and using fts is more efficient than + recursive opendir/readdir (sync with HEAD). + * unix/configure: regen. + 2005-12-12 Jeff Hobbs * unix/tcl.m4, unix/configure: Fix sh quoting error reported in diff --git a/unix/configure b/unix/configure index d15bc30..97281c5 100755 --- a/unix/configure +++ b/unix/configure @@ -7493,29 +7493,28 @@ EOF #-------------------------------------------------------------------- -# Check for support of fts functions on Darwin (readdir replacement) +# Check for support of fts functions (readdir replacement) #-------------------------------------------------------------------- -if test "`uname -s`" = "Darwin" ; then - echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:7502: checking for fts" >&5 +echo $ac_n "checking for fts""... $ac_c" 1>&6 +echo "configure:7501: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < - #include - #include + #include + #include int main() { char*const p[2] = {"/", NULL}; - FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); - FTSENT *e = fts_read(f); fts_close(f); + FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); + FTSENT *e = fts_read(f); fts_close(f); ; return 0; } EOF -if { (eval echo configure:7519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -7528,12 +7527,11 @@ rm -f conftest* fi echo "$ac_t""$tcl_cv_api_fts" 1>&6 - if test $tcl_cv_api_fts = yes; then - cat >> confdefs.h <<\EOF +if test $tcl_cv_api_fts = yes; then + cat >> confdefs.h <<\EOF #define HAVE_FTS 1 EOF - fi fi #-------------------------------------------------------------------- @@ -7548,17 +7546,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7552: checking for $ac_hdr" >&5 +echo "configure:7550: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7588,17 +7586,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7592: checking for $ac_hdr" >&5 +echo "configure:7590: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7625,7 +7623,7 @@ fi done echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7629: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7627: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -7705,7 +7703,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7709: checking how to package libraries" >&5 +echo "configure:7707: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/configure.in b/unix/configure.in index 18079e9..6c0dd88 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.22 2005/12/05 15:10:33 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.23 2005/12/14 02:10:21 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -436,21 +436,19 @@ fi SC_ENABLE_LANGINFO #-------------------------------------------------------------------- -# Check for support of fts functions on Darwin (readdir replacement) +# Check for support of fts functions (readdir replacement) #-------------------------------------------------------------------- -if test "`uname -s`" = "Darwin" ; then - AC_CACHE_CHECK([for fts], tcl_cv_api_fts, [ - AC_TRY_LINK([#include - #include - #include ], - [char*const p[2] = {"/", NULL}; - FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); - FTSENT *e = fts_read(f); fts_close(f);], - tcl_cv_api_fts=yes, tcl_cv_api_fts=no)]) - if test $tcl_cv_api_fts = yes; then - AC_DEFINE(HAVE_FTS) - fi +AC_CACHE_CHECK([for fts], tcl_cv_api_fts, [ + AC_TRY_LINK([#include + #include + #include ], + [char*const p[2] = {"/", NULL}; + FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); + FTSENT *e = fts_read(f); fts_close(f);], + tcl_cv_api_fts=yes, tcl_cv_api_fts=no)]) +if test $tcl_cv_api_fts = yes; then + AC_DEFINE(HAVE_FTS, 1, [Do we have fts functions?]) fi #-------------------------------------------------------------------- -- cgit v0.12 From 2be26782295e8963ba3080532c2ed3bd9aabb7e8 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 15 Dec 2005 04:08:26 +0000 Subject: * generic/tclIOUtil.c: workaround gcc warning "comparison is always * generic/tclTest.c: false due to limited range of data type". --- ChangeLog | 3 +++ generic/tclIOUtil.c | 13 ++++++++++++- generic/tclTest.c | 13 ++++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e61d115..2dec5ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-12-14 Daniel Steffen + * generic/tclIOUtil.c: workaround gcc warning "comparison is always + * generic/tclTest.c: false due to limited range of data type". + * unix/configure.in: run check for fts API on all platforms, since Linux glibc2 and *BSDs also have this and using fts is more efficient than recursive opendir/readdir (sync with HEAD). diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 73f824d..638355c 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.23 2005/11/27 02:34:41 das Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.24 2005/12/15 04:08:26 das Exp $ */ #include "tclInt.h" @@ -144,8 +144,19 @@ Tcl_Stat(path, oldStyleBuf) # define OUT_OF_RANGE(x) \ (((Tcl_WideInt)(x)) < Tcl_LongAsWide(LONG_MIN) || \ ((Tcl_WideInt)(x)) > Tcl_LongAsWide(LONG_MAX)) +#if defined(__GNUC__) && __GNUC__ >= 2 +/* + * Workaround gcc warning of "comparison is always false due to limited range of + * data type" in this macro by checking max type size, and when necessary ANDing + * with the complement of ULONG_MAX instead of the comparison: + */ +# define OUT_OF_URANGE(x) \ + ((((Tcl_WideUInt)(~ (__typeof__(x)) 0)) > (Tcl_WideUInt)ULONG_MAX) && \ + (((Tcl_WideUInt)(x)) & ~(Tcl_WideUInt)ULONG_MAX)) +#else # define OUT_OF_URANGE(x) \ (((Tcl_WideUInt)(x)) > (Tcl_WideUInt)ULONG_MAX) +#endif /* * Perform the result-buffer overflow check manually. diff --git a/generic/tclTest.c b/generic/tclTest.c index e02ba13..59c3148 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.10 2005/10/23 22:01:30 msofer Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.11 2005/12/15 04:08:26 das Exp $ */ #define TCL_TEST @@ -4715,8 +4715,19 @@ static int PretendTclpStat(path, buf) # define OUT_OF_RANGE(x) \ (((Tcl_WideInt)(x)) < Tcl_LongAsWide(LONG_MIN) || \ ((Tcl_WideInt)(x)) > Tcl_LongAsWide(LONG_MAX)) +#if defined(__GNUC__) && __GNUC__ >= 2 +/* + * Workaround gcc warning of "comparison is always false due to limited range of + * data type" in this macro by checking max type size, and when necessary ANDing + * with the complement of ULONG_MAX instead of the comparison: + */ +# define OUT_OF_URANGE(x) \ + ((((Tcl_WideUInt)(~ (__typeof__(x)) 0)) > (Tcl_WideUInt)ULONG_MAX) && \ + (((Tcl_WideUInt)(x)) & ~(Tcl_WideUInt)ULONG_MAX)) +#else # define OUT_OF_URANGE(x) \ (((Tcl_WideUInt)(x)) > (Tcl_WideUInt)ULONG_MAX) +#endif /* * Perform the result-buffer overflow check manually. -- cgit v0.12 From 0fcea2c01171ef4f697d53c90bede2b315d49dd6 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 19 Dec 2005 10:09:49 +0000 Subject: Clarify specification of variable substitution --- ChangeLog | 767 +++++++++++++++++++++++++++++++------------------------------- doc/Tcl.n | 5 +- 2 files changed, 389 insertions(+), 383 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2dec5ad..9716b22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,16 @@ +2005-12-19 Donal K. Fellows + + * doc/Tcl.n: Clarify what is going on in variable substitution + following thread on comp.lang.tcl. + 2005-12-14 Daniel Steffen - * generic/tclIOUtil.c: workaround gcc warning "comparison is always + * generic/tclIOUtil.c: workaround gcc warning "comparison is always * generic/tclTest.c: false due to limited range of data type". - - * unix/configure.in: run check for fts API on all platforms, since Linux - glibc2 and *BSDs also have this and using fts is more efficient than - recursive opendir/readdir (sync with HEAD). + + * unix/configure.in: run check for fts API on all platforms, since + Linux glibc2 and *BSDs also have this and using fts is more efficient + than recursive opendir/readdir (sync with HEAD). * unix/configure: regen. 2005-12-12 Jeff Hobbs @@ -34,7 +39,7 @@ 2005-12-05 Don Porter - * unix/configure.in: Revised fix for [Bug 1034337] from Daniel + * unix/configure.in: Revised fix for [Bug 1034337] from Daniel * unix/tclUnixFCmd.c: Steffen. Uses fts_*() routines. * unix/configure: autoconf-2.13 * changes: Update changes for 8.4.12 release @@ -163,14 +168,14 @@ * tests/trace.test (trace-34.5): [Bug 1047286], added a second test illustrating the role of "ns in callStack" in the ns's - visibility during deletion traces. + visibility during deletion traces. * generic/tclBasic.c (Tcl_DeleteCommandFromToken): * generic/tclCmdMZ.c (TraceCommandProc): * generic/tclInt.h (NS_KILLED): * generic/tclNamesp.c (Tcl_DeleteNamespace * tests/namespace.test (namespace-7.3-6): - * tests/trace.test (trace-20.13-16): fix [Bugs 1355942/1355342]. + * tests/trace.test (trace-20.13-16): fix [Bugs 1355942/1355342]. 2005-11-18 Jeff Hobbs @@ -208,7 +213,7 @@ * win/configure.in: * unix/configure: autoconf-2.13 - * win/configure: + * win/configure: 2005-11-15 Don Porter @@ -229,7 +234,7 @@ * generic/tclTimer.c: Changed [after] so that it behaves correctly * tests/timer.test: with negative arguments [Bug 1350293]. - + 2005-11-08 Jeff Hobbs * unix/tclUnixFCmd.c (MAX_READDIR_UNLINK_THRESHOLD): reduce to 130 @@ -261,18 +266,18 @@ 2005-11-07 Miguel Sofer * tests/trace.test (trace-13.2-4): added tests to detect leak, see [Bug - 1348775]. + 1348775]. 2005-11-04 Don Porter * unix/tcl.m4: Added code to enable [load] on LynxOS. Thanks to - heidibr@users.sf.net for the patch. [Bug 1163896]. + heidibr@users.sf.net for the patch. [Bug 1163896]. * unix/configure: autoconf-2.13. 2005-11-04 Pat Thoyts - * win/tclWinPipe.c: Applied patch #1267871 by Matt Newman which + * win/tclWinPipe.c: Applied patch #1267871 by Matt Newman which * win/tclWinPort.h: provides extended error code support. * tests/exec.test: Wrote some tests for this feature. @@ -281,19 +286,19 @@ * generic/tclGetDate.y: Added abbreviations for the Korean timezone. * generic/tclDate.c: Regenerated. - + * compat/strftime.c: Fixed a problem where the name of the time zone was double-converted from system encoding to UTF-8. Thanks to the anonymous submitter of [Bug 1317477] for the report and the patch. - + 2005-11-04 Miguel Sofer * generic/tclInt.h: - * generic/tclNamesp.c: + * generic/tclNamesp.c: * generic/tclVar.c: fix for [Bugs 1338280/1337229]. Thanks Don. - - * tests/trace.test: fix duplicate test numbers + + * tests/trace.test: fix duplicate test numbers 2005-11-03 Don Porter @@ -305,7 +310,7 @@ 2005-11-03 Pat Thoyts * win/tclWin32Dll.c: Backported Anton Kovalenko's patch #1256872 - * win/tclWinConsole.c: to give unicode console support on + * win/tclWinConsole.c: to give unicode console support on * win/tclWinInt.h: suitable systems (eg: NT/XP) 2005-11-01 Don Porter @@ -371,12 +376,12 @@ * generic/tclExecute.c (INST_CONCAT): disable the optimisation for wide integers, [Bug 1251791]. - + 2005-10-14 Zoran Vasiljevic * generic/tclIO.c (Tcl_ClearChannelHandlers): removed change dated 2005-10-04 below. Look into Bug# 1323992 - for detailed discussion. + for detailed discussion. 2005-10-13 Donal K. Fellows @@ -387,7 +392,7 @@ * generic/tclIO.c (Tcl_ClearChannelHandlers): temporary ifdef TCL_THREADS changes done to de-activate pending - event processing when channel is being closed/cutted. + event processing when channel is being closed/cutted. 2005-10-10 Jeff Hobbs @@ -475,10 +480,10 @@ * generic/tclBasic.c (ExprMathFunc): Restored "round away from * tests/expr.test (expr-46.*): zero" behaviour to the - "round" function. Added + "round" function. Added test cases for the behavior, including the awkward case of a number whose fractional part is 1/2-1/2ulp. [Bug 1275043] - + 2005-08-25 Donal K. Fellows * generic/tclListObj.c (UpdateStringOfList): Stop uncontrolled and @@ -496,7 +501,7 @@ Tcl_ResetFilesystem down after Tcl_FinalizeThreadAlloc because unloading DLLs can't happen while they still own TSD keys. (This is a backport of changes made in the HEAD on 2005-08-10.) - + 2005-08-05 Donal K. Fellows * unix/tclUnixInit.c (localeTable): Solaris uses a non-standard @@ -509,7 +514,7 @@ * tests/expr.test (expr-38.1): where applying abs to MIN_INT failed to promote the result to a wide integer. [Bug #1241572] - + 2005-08-04 Don Porter * generic/tclObj.c: Simplified routines that manage the typeTable. @@ -524,7 +529,7 @@ 2005-07-30 Daniel Steffen * unix/configure, unix/tcl.m4: revert 2005-07-28 change. - + * unix/tclLoadDyld.c (TclpDlopen, TclpLoadMemory): workarounds for bugs/changes in behaviour in Mac OS X 10.4 Tiger, sync formatting changes from HEAD. @@ -590,7 +595,7 @@ 2005-07-22 Don Porter * library/auto.tcl: Updates to the Tcl script library to make - * library/history.tcl: use of Tcl 8.4 feautures. Thanks to + * library/history.tcl: use of Tcl 8.4 feautures. Thanks to * library/init.tcl: Patrick Fradin for prompting on this. * library/package.tcl: [Patch 1237755]. * library/safe.tcl: @@ -605,7 +610,7 @@ 2005-07-05 Don Porter * generic/tclCmdAH.c: New "encoding" Tcl_ObjType (not registered) - * generic/tclEncoding.c: that permits longer lifetimes of the + * generic/tclEncoding.c: that permits longer lifetimes of the * generic/tclInt.h: Tcl_Encoding values kept as intreps of Tcl_Obj's. Reduces the need for repeated reading of encoding definition files from the filesystem. [Bug 1077262] @@ -643,7 +648,7 @@ handler. Also, made the assertion check that no exit handlers are created in Tcl_Finalize conditional on TCL_MEM_DEBUG to avoid spurious panics in the "stable" release. - + 2005-06-24 Don Porter * library/auto.tcl: Make file safe to re-[source] without @@ -653,14 +658,14 @@ * tools/tcltk-man2html.tcl: fixed useversion glob pattern to accept multi-digit patchlevels. - + 2005-06-23 Kevin Kenny * win/tclWinChan.c: More rewriting of __asm__ blocks that * win/tclWinFCmd.c: implement SEH in GCC, because mingw's gcc 3.4.2 is not as forgiving of violations committed by the old code and caused panics. [Bug #1225957] - + 2005-06-23 Daniel Steffen * unix/Makefile.in (install-private-headers): rewrite tclPort.h when @@ -681,7 +686,7 @@ Corrected a read of uninitialized memory in PipeCloseProc2, which (at least on certain configurations) caused a great number of tests to either fail or hang [Bug #1225044]. - + 2005-06-22 Andreas Kupries * generic/tclInt.h: Followup to change made on 2005-06-18 by @@ -695,7 +700,7 @@ * win/tclWinFile.c: Potential buffer overflow. [Bug 1225571] Thanks to Pat Thoyts for discovery and fix. - * tests/safe.test: Backport performance improvement from + * tests/safe.test: Backport performance improvement from reduced $::auto_path. 2005-06-21 Pat Thoyts @@ -713,7 +718,7 @@ [file join] with a name containing a colon. * win/tclWinPipe.c: Reverted davygrvy's changes of 2005-04-19; they cause multiple failures in io.test. [Bug 1225044, still open]. - + 2005-06-21 Don Porter * generic/tclBasic.c: Made the walk of the active trace list aware @@ -755,7 +760,7 @@ * win/configure.in: * unix/configure: autoconf - * win/configure: + * win/configure: 2005-06-18 Donal K. Fellows @@ -778,7 +783,7 @@ * unix/tclLoadDyld.c: fixed header conflict when building this file with USE_TCL_STUBS. - + * macosx/Makefile: fixed 'embedded' target. 2005-06-02 Jeff Hobbs @@ -804,14 +809,14 @@ * README: Bumped patchlevel to 8.4.10 * generic/tcl.h: - * tools/tcl.wse.in: + * tools/tcl.wse.in: * unix/tcl.spec, unix/configure, unix/configure.in: * win/configure, win/configure.in: 2005-05-26 Daniel Steffen * macosx/Makefile: moved & corrected EMBEDDED_BUILD check. - + * unix/configure.in: corrected framework finalization to softlink stub library to Versions/8.x subdir instead of Versions/Current. * unix/configure: autoconf-2.13 @@ -875,7 +880,7 @@ 2005-05-14 Daniel Steffen * macosx/tclMacOSXBundle.c: - * unix/tclUnixInit.c: + * unix/tclUnixInit.c: * unix/tcl.m4 (Darwin): made use of CoreFoundation API configurable and added test of CoreFoundation availablility to allow building on ppc64, replaced HAVE_CFBUNDLE by HAVE_COREFOUNDATION; test for @@ -887,7 +892,7 @@ available, use new CFRunLoop based notifier: allows easy integration with other event loops on Mac OS X, in particular the TkAqua Carbon event loop is now integrated via a standard tcl event source (instead - of TkAqua upon loading having to finalize the exsting notifier and + of TkAqua upon loading having to finalize the exsting notifier and replace it with its custom version). [Patch 1202052] * tests/unixNotfy.test: don't run unthreaded tests on Darwin @@ -946,7 +951,7 @@ AC_REPLACE_FUNCS(strstr) hasn't already determined that strstr is unavailable, otherwise compat/strstr.o will be used twice (resulting in duplicate symbol link errors on Mac OS X 10.1) - + * unix/tcl.m4 (Darwin): added configure checks for recently added linker flags -single_module and -search_paths_first to allow building with older tools (and on Mac OS X 10.1), use @@ -995,7 +1000,7 @@ UNIX side) set -blocking to 1 before calling [close] to receive the exit status. - * tests/winPipe.test (winpipe-6.1/2): added 'fconfigure $f + * tests/winPipe.test (winpipe-6.1/2): added 'fconfigure $f -blocking 1' so the exit status can be acquired. 2005-04-13 David Gravereaux @@ -1007,14 +1012,14 @@ 10 bytes followed by starting a child process that was intended to continue reading from stdin. Even with -buffersize set to one, nine chars were getting lost by the buffersize over reading for - the native read() caused by [read]. + the native read() caused by [read]. 2005-04-12 Kevin B. Kenny * compat/strstr.c: Added default definition of NULL to accommodate building on systems with badly broken headers. [Bug #1175161] - + 2005-04-09 Daniel Steffen * macosx/README: updated requirements for OS & developer tool @@ -1037,7 +1042,7 @@ and TclFreeAllocCache() * generic/tclThreadAlloc.c: modified TclFinalizeThreadAlloc() - to explicitly call TclpFreeAllocCache with the NULL-ptr as + to explicitly call TclpFreeAllocCache with the NULL-ptr as argument signalling cleanup of private tsd key used only by the threading allocator. @@ -1082,9 +1087,9 @@ 2005-03-15 Vince Darley - * generic/tclFileName.c: + * generic/tclFileName.c: * win/tclWinFile.c: - * tests/winFCMd.test: fix to 'file pathtype' and 'file norm' + * tests/winFCMd.test: fix to 'file pathtype' and 'file norm' failures on reserved filenames like 'COM1:', etc. 2005-03-15 Kevin B. Kenny @@ -1098,7 +1103,7 @@ times with 'Tcl_WideInt', to cope with systems on which a time_t is wider than a long (Win64) [Bug 1163422] * generic/tclIntDecls.h: Regen - + 2005-03-15 Pat Thoyts * unix/tcl.m4: Make it work on OpenBSD again. Imported patch @@ -1168,7 +1173,7 @@ 2005-01-27 Jeff Hobbs - * generic/tclBasic.c (Tcl_ExprBoolean, Tcl_ExprDouble) + * generic/tclBasic.c (Tcl_ExprBoolean, Tcl_ExprDouble) (Tcl_ExprLong): Fix to recognize Tcl_WideInt type. [Bug 1109484] 2005-01-27 Andreas Kupries @@ -1176,7 +1181,7 @@ TIP#218 IMPLEMENTATION * generic/tclDecls.h: Regenerated from tcl.decls. - * generic/tclStubInit.c: + * generic/tclStubInit.c: * doc/CrtChannel.3: Documentation of extended API, * generic/tcl.decls: extended testsuite, and @@ -1186,12 +1191,12 @@ * tests/io.test: thread-action calls through the * unix/tclUnixChan.c: new hooks. Update of all builtin * unix/tclUnixPipe.c: channel drivers to version 4. - * unix/tclUnixSock.c: Windows drivers extended to + * unix/tclUnixSock.c: Windows drivers extended to * win/tclWinChan.c: manage thread state in a thread * win/tclWinConsole.c: action handler. - * win/tclWinPipe.c: - * win/tclWinSerial.c: - * win/tclWinSock.c: + * win/tclWinPipe.c: + * win/tclWinSerial.c: + * win/tclWinSock.c: * mac/tclMacChan.c: 2005-01-25 Don Porter @@ -1204,7 +1209,7 @@ * unix/tcl.m4 (Darwin): fixed bug with static build linking to dynamic library in /usr/lib etc instead of linking to static library earlier in search path. [Tcl Bug 956908] - Removed obsolete references to Rhapsody. + Removed obsolete references to Rhapsody. * unix/configure: autoconf-2.13 2005-01-19 Mo DeJong @@ -1254,7 +1259,7 @@ * doc/clock.n: Clarify that the [clock scan] command does not accept the full range of ISO8601 point-in-time formats [Bug 1075433]. - + 2004-12-09 Donal K. Fellows * doc/Async.3: Reword for better grammar, better nroff and get the @@ -1296,7 +1301,7 @@ 2004-11-25 Zoran Vasiljevic - * doc/Notify.3: + * doc/Notify.3: * doc/Thread.3: Added doc fixes and hints from Tcl Bug #1068077. 2004-11-25 Reinhard Max @@ -1315,7 +1320,7 @@ * README: Bumped patchlevel to 8.4.9 * generic/tcl.h: - * tools/tcl.wse.in: + * tools/tcl.wse.in: * unix/tcl.spec, unix/configure, unix/configure.in: * win/configure, win/configure.in: @@ -1328,7 +1333,7 @@ manage their masks using the FD_CLR, FD_ISSET, FD_SET, and FD_ZERO macros rather than bit-whacking that failed under Solaris-Sparc-64. [Bug 1071807] - + 2004-11-23 Don Porter * generic/tclCmdIL.c (InfoVarsCmd): Corrected segfault in new @@ -1366,8 +1371,8 @@ 2004-11-19 Daniel Steffen - * macosx/Makefile: - * unix/configure.in: + * macosx/Makefile: + * unix/configure.in: * unix/tclUnixInit.c (MacOSXGetLibraryPath): changed detection of tcl framework build when determining tclLibPath from overloaded TCL_LIBRARY to configuration define TCL_FRAMEWORK. [Bug 1068088] @@ -1401,13 +1406,13 @@ * win/makefile.vc: Fixed bug in installation of http 2.5. * win/makefile.bc: Was installed into directory http2.4. * win/Makefile.in: This has been corrected. - * unix/Makefile.in: + * unix/Makefile.in: * tools/tcl.wse.in: * tools/tclmin.wse: 2004-11-16 Don Porter - * library/auto.tcl: Updated [tcl_findLibrary] search path + * library/auto.tcl: Updated [tcl_findLibrary] search path to include the $::auto_path. [RFE 695441]. 2004-11-16 Donal K. Fellows @@ -1438,7 +1443,7 @@ * doc/clock.n: * doc/registry.n: * doc/upvar.n: fixed *roff errors uncovered by running 'make html'. - + * tools/tcltk-man2html.tcl: added faked support for bullet point lists, i.e. *nroff ".IP \(bu" syntax. Synced other changes from HEAD. @@ -1498,7 +1503,7 @@ 2004-10-31 Donal K. Fellows - * generic/tclCmdIL.c (InfoGlobalsCmd): + * generic/tclCmdIL.c (InfoGlobalsCmd): * tests/info.test (info-8.4): Strip leading global-namespace specifiers from the pattern argument. [Bug 1057461] @@ -1532,19 +1537,19 @@ * win/configure.in: * unix/configure: autoconf (2.13) - * win/configure: + * win/configure: 2004-10-28 Kevin B. Kenny * generic/tclInt.decls: * unix/tclUnixTime.c (TclpGmtime, TclpLocaltime): - * win/tclWinTime.c (TclpGmtime, TclpLocaltime): + * win/tclWinTime.c (TclpGmtime, TclpLocaltime): Changed type signatures of TclpGmtime and TclpLocaltime to accept CONST TclpTime_t throughout, to avoid any possible confusion in pedantic compilers. [Bug 1001319] * generic/tclIntDecls.h: * generic/tclIntPlatDecls.h: Regenerated. - + 2004-10-27 Don Porter * generic/tclCmdAH.c (Tcl_FormatObjCmd): Restored missing @@ -1565,13 +1570,13 @@ 2004-10-26 Kevin B. Kenny - * generic/tclCmdAH.c (Tcl_FormatObjCmd): Backport a missing bit + * generic/tclCmdAH.c (Tcl_FormatObjCmd): Backport a missing bit of the bug 868489 fix. * generic/tclObj.c (SetBooleanFromAny): Backport fix for Bug 1026125. * tests/format.test (format-19.1): Additional regression test for Bug 868489. - + 2004-10-26 Donal K. Fellows * doc/*.n: Backporting of documentation updates. @@ -1711,7 +1716,7 @@ attempted to store the assoc data in the client data; the optimisation caused a bug that [after] would overwrite its imports. [Bug 1016167] - + 2004-09-02 Donal K. Fellows * doc/lsearch.n: Clarified meaning of -dictionary. [Bug 759545] @@ -1720,7 +1725,7 @@ * win/tclWinReg.c (BroadcastValue): WIN64 cast corrections - * win/tclWinDde.c (DdeClientWindowProc): + * win/tclWinDde.c (DdeClientWindowProc): (DdeServicesOnAck, DdeEnumWindowsCallback): WIN64 corrections * win/tclWin32Dll.c (TclWinCPUID): need _asm for WIN64 (Itanium), @@ -1770,7 +1775,7 @@ 2004-07-30 Daniel Steffen * unix/configure: - * unix/tcl.m4 (SC_CONFIG_CFLAGS): Darwin: instead of setting PLAT_OBJS + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Darwin: instead of setting PLAT_OBJS to explict object files in tcl.m4, refer to MAC_OSX_OBJS makefile var. * unix/Makefile.in: added MAC_OSX_OBJS variable. @@ -1816,7 +1821,7 @@ * unix/tcl.m4: fixed Darwin autoconf breakage caused by recent CFLAGS reordering. * unix/configure: regen - + * unix/tclConfig.sh.in: replaced EXTRA_CFLAGS with CFLAGS. * unix/dltest/Makefile.in: replaced EXTRA_CFLAGS with DEFS. @@ -1928,13 +1933,13 @@ * generic/tclEvent.c (NewThreadProc): Fixed broken build on Windows caused by missing TCL_THREAD_CREATE_RETURN. This is - backported from head. Thnx to Kevin Kenny for spotting this. + backported from head. Thnx to Kevin Kenny for spotting this. 2004-07-03 Miguel Sofer * generic/tclExecute.c (ExprRoundFunc): * tests/expr-old.test (39.1): added support for wide integers to - round(); [Bug 908375], reported by Hemang Lavana. + round(); [Bug 908375], reported by Hemang Lavana. 2004-07-02 Jeff Hobbs @@ -2010,7 +2015,7 @@ * generic/tclCompile.c: handle warning [Bug 969066] 2004-06-05 Kevin B. Kenny - + * generic/tcl.h: Corrected Tcl_WideInt declarations so that the mingw build works again. * generic/tclDecls.h: Changes to the tests for @@ -2021,15 +2026,15 @@ * generic/tclStubInit.c: all CPU's in the system share * tests/platform.test (platform-1.3): a common chip, and hence, * win/tclWin32Dll.c (TclWinCPUID): presumably, a common clock. - * win/tclWinTest.c (TestwincpuidCmd) This change necessitated a - * win/tclWinTime.c (Tcl_GetTime): small burst of assembly code + * win/tclWinTest.c (TestwincpuidCmd) This change necessitated a + * win/tclWinTime.c (Tcl_GetTime): small burst of assembly code to read CPU ID information, which was added as TclWinCPUID in the internal Stubs. To test this code in the common case of a single-processor machine, a 'testwincpuid' command was added to tclWinTest.c, and a test case in platform.test. Thanks to Jeff Godfrey and Richard Suchenwirth for reporting this bug. [Bug #976722] - + 2004-05-27 Kevin B. Kenny * tests/clock.test: Added a single test for the presence of %G @@ -2039,7 +2044,7 @@ 2004-05-27 Reinhard Max - * generic/tclEncoding.c: + * generic/tclEncoding.c: * tests/encoding.test: added support and tests for translating embedded null characters between real nullbytes and the internal representation on input/output (Bug #949905). @@ -2069,7 +2074,7 @@ that it doesn't misdetect some other sort of filesystem with a write-protected root as being a CD-ROM drive. [Bug 918267] - + 2004-05-24 Jeff Hobbs * generic/tclExecute.c (VerifyExprObjType): use GET_WIDE_OR_INT to @@ -2121,7 +2126,7 @@ * tests/clock.test: Major rework to the handling of ISO8601 week numbers. Now passes all the %G and %V test cases on Windows, Linux and Solaris [Bugs #500285, #500389, and #852944] - + 2004-05-17 Kevin B. Kenny * generic/tclInt.decls: Restored TclpTime_t kludge to all @@ -2129,7 +2134,7 @@ * unix/tclUnixPort.h changes of 14 May, because use of * unix/tclUnixTime.h native time_t in its place requires * win/tclWinTime.h: the 8.5 header reforms. [Bug #955146] - + 2004-05-17 Donal K. Fellows * doc/OpenFileChnl.3: Documented type of 'offset' argument to @@ -2145,7 +2150,7 @@ * generic/tclClock.c: Changed a buggy 'GMT' timezone specification to the correct 'GMT0'. [Bug #922848] - + * unix/tclUnixThrd.c: Moved TclpGmtime and TclpLocaltime to unix/tclUnixTime.c where they belong. @@ -2164,7 +2169,7 @@ * tests/clock.test (clock-3.14): Added test to make sure that changes to $env(TZ) take effect immediately. - + * win/tclWinTime.c (TclpLocaltime, TclpGmtime): Added porting layer for 'localtime' and 'gmtime' calls. @@ -2320,7 +2325,7 @@ 2004-03-29 Jeff Hobbs * generic/tclInt.h: - * generic/tclEncoding.c (TclFindEncodings, Tcl_FindExecutable): + * generic/tclEncoding.c (TclFindEncodings, Tcl_FindExecutable): * mac/tclMacInit.c (TclpInitLibraryPath): Correct handling of UTF * unix/tclUnixInit.c (TclpInitLibraryPath): data that is actually * win/tclWinFile.c (TclpFindExecutable): "clean", allowing the @@ -2414,17 +2419,17 @@ 2004-02-17 Jeff Hobbs (reverted due to test failures on Solaris, but not Win/Lin :/) - * generic/tclIOUtil.c: backport of rewrite of generic file + * generic/tclIOUtil.c: backport of rewrite of generic file normalization code to cope with links followed by '..'. [Bug 849514], and parts of [859251] - + * tests/unixInit.test: unixInit-7.1 * unix/tclUnixInit.c (TclpInitPlatform): ensure the std fds exist to prevent crash condition [Bug #772288] 2004-02-16 Jeff Hobbs - * generic/tclCmdMZ.c (TclTraceExecutionObjCmd) + * generic/tclCmdMZ.c (TclTraceExecutionObjCmd) (TclTraceCommandObjCmd): fix possible mem leak in trace info. 2004-02-12 Jeff Hobbs @@ -2475,7 +2480,7 @@ 2004-01-09 Vince Darley - * generic/tclIOUtil.c: fix to infinite loop in + * generic/tclIOUtil.c: fix to infinite loop in TclFinalizeFilesystem [Bug 873311] 2003-12-17 Daniel Steffen @@ -2530,14 +2535,14 @@ 2003-11-20 Miguel Sofer * generic/tclVar.c: fix flag bit collision between - LOOKUP_FOR_UPVAR and TCL_PARSE_PART1 (deprecated) [Bug 835020] - + LOOKUP_FOR_UPVAR and TCL_PARSE_PART1 (deprecated) [Bug 835020] + 2003-11-20 Vince Darley * generic/tclIOUtil.c: - * tests/winFCmd.test: fix to [Bug 845778] - Infinite recursion + * tests/winFCmd.test: fix to [Bug 845778] - Infinite recursion on [cd] (Windows only bug). - + 2003-11-18 Jeff Hobbs * changes: updated for 8.4.5 release @@ -2599,7 +2604,7 @@ * generic/tclTest.c: fix test suite memory leak (backport error) * unix/tclUnixFile.c: ensure translated path (required for correct error messages) is freed in both code paths. - + 2003-10-23 Andreas Kupries * unix/tclUnixChan.c (Tcl_MakeFileChannel): Applied [Patch 813606] @@ -2688,7 +2693,7 @@ * tests/ioCmd.test: other fixes from the HEAD. * tests/pid.test: [Bugs 675605, 675655, 675659] * tests/socket.test: - * tests/source.test: + * tests/source.test: * tests/fCmd.test: Run tests with the [temporaryDirectory] as the current directory, so that tests can depend on ability to write @@ -2757,7 +2762,7 @@ * win/configure.in: * unix/configure: autoconf (2.13) - * win/configure: + * win/configure: * library/http/http.tcl: Bumped to http 2.4.5 * library/http/pkgIndex.tcl: @@ -2793,7 +2798,7 @@ 2003-09-25 Daniel Steffen - * macosx/Makefile: ensure SYMROOT exists if OBJROOT is overridden + * macosx/Makefile: ensure SYMROOT exists if OBJROOT is overridden on command line. Replaced explict use of /usr/bin by ${BINDIR}. 2003-09-23 Don Porter @@ -2827,7 +2832,7 @@ * generic/tclUtil.c: Corrected [Bug 411825] and other bugs in TclNeedSpace() where non-breaking space (\u00A0) and backslash-escaped - spaces were handled incorrectly. + spaces were handled incorrectly. * tests/util.test: Added new tests util-8.[2-6]. 2003-08-06 Jeff Hobbs @@ -2849,12 +2854,12 @@ result is pushed onto the stack, to avoid keeping an extra reference that may cause costly Tcl_Obj duplication [Bug 781585] Detected by Franco Violi, analyzed by Peter Spjuth and Donal - Fellows. + Fellows. 2003-07-24 Reinhard Max * library/package.tcl: Fixed a typo that broke pkg_mkIndex -verbose. - + * tests/pkgMkIndex.test: Added a test for [pkg_mkIndex -verbose]. 2003-07-23 Daniel Steffen @@ -3054,7 +3059,7 @@ * unix/Makefile.in: Added targets for building only the tcl or tk help. - * macosx/README (new): Tcl specific excerpts of tk/macosx/README. + * macosx/README (new): Tcl specific excerpts of tk/macosx/README. * generic/tcl.h: Updated reminder comment about editing macosx/Tcl.pbproj/project.pbxproj when version number changes. @@ -3117,7 +3122,7 @@ * generic/tclBasic.c: * generic/tclExecute.c: let TclEvalObjvInternal call TclInterpReady instead of relying on its callers to do so; fix for - the part of [Bug 495830] that is new in 8.4. + the part of [Bug 495830] that is new in 8.4. * tests/interp.test: Added tests 18.9 (knownbug) and 18.10 2003-06-09 Don Porter @@ -3128,8 +3133,8 @@ 2003-06-04 Joe Mistachkin - * tools/man2help.tcl: Added duplicate help section checking - * tools/index.tcl: and corrected a comment typo for the + * tools/man2help.tcl: Added duplicate help section checking + * tools/index.tcl: and corrected a comment typo for the getTopics proc in index.tcl [Bug #748700]. 2003-05-23 Don Porter @@ -3151,7 +3156,7 @@ first call to Tcl_MacOSXOpenVersionedBundleResources() for a given bundle identifier to succeed. This caused the tcl runtime library not to be found in all interps created after the inital one. - + 2003-05-20 Jeff Hobbs * changes: updated for 8.4.3 @@ -3169,7 +3174,7 @@ 2003-05-16 Daniel Steffen * macosx/Tcl.pbproj/project.pbxproj: updated copyright year. - + 2003-05-15 Jeff Hobbs * win/tclWinFile.c (TclpMatchInDirectory): revert glob code to @@ -3222,27 +3227,27 @@ 2003-05-13 Joe Mistachkin - * generic/tcl.decls: Changed Tcl_JoinThread parameter name from + * generic/tcl.decls: Changed Tcl_JoinThread parameter name from * generic/tclDecls.h: "id" to "threadId". [Bug 732477] * unix/tclUnixThrd.c: - * win/tclWinThrd.c: + * win/tclWinThrd.c: * mac/tclMacThrd.c: 2003-05-13 Daniel Steffen * generic/tcl.decls: - * macosx/tclMacOSXBundle.c: added extended version of the + * macosx/tclMacOSXBundle.c: added extended version of the Tcl_MacOSXOpenBundleResources() API taking an extra version number argument: Tcl_MacOSXOpenVersionedBundleResources(). This is needed to be able to access bundle resources in versioned frameworks such as Tcl and Tk, otherwise if multiple versions were installed, only the latest version's resources could be accessed. [Bug 736774] - + * unix/tclUnixInit.c (Tcl_MacOSXGetLibraryPath): use new versioned bundle resource API to get tcl runtime library for TCL_VERSION. [Bug 736774] - + * generic/tclPlatDecls.h: * generic/tclStubInit.c: regen. @@ -3317,11 +3322,11 @@ * generic/tclFileName.c: fix to bug reported privately by Jeff where, for example, 'glob -path {[tcl]} *' gets confused by the leading special character (which is escaped internally), - and instead lists files in '/'. Bug only occurs on Windows + and instead lists files in '/'. Bug only occurs on Windows where '\' is also a directory separator. (Bug has been around at least since Tcl 8.3). * tests/fileName.test: added test for the above bug. - + 2003-04-25 Don Porter * generic/tclBasic.c: Tcl_EvalObjv() failed to honor the @@ -3357,7 +3362,7 @@ * doc/open.n: Moved serial port options from [fconfigure] * doc/fconfigure.n: to [open] as it is up to the creator of a channel to describe the channel's special - config options. [Bug 679010] + config options. [Bug 679010] 2003-04-16 Don Porter @@ -3381,7 +3386,7 @@ * generic/tclTest.c: the new macros above to do it. * generic/tclUtil.c: * generic/tclVar.c: - + 2003-04-17 Donal K. Fellows * doc/socket.n: Added a paragraph to remind people to specify @@ -3393,7 +3398,7 @@ but this was not documented. [Bug 709720] 2003-04-15 Kevin Kenny - + * win/tclWinTime.c: Corrected use of types to make compilation compatible with VC++5. @@ -3401,18 +3406,18 @@ * win/tclWinFile.c: added conditionals to restore compilation on VC++6, which was broken by recent changes. - + 2003-04-14 Vince Darley Merged various bug fixes from current cvs head: - - * tests/cmdAH.test: better fix to test suite problem + + * tests/cmdAH.test: better fix to test suite problem if /home is a symlink [Bug #703264] - + * generic/tclIOUtil.c: fix bad error message with 'cd ""' [Bug #704917] - * win/tclWinFile.c: - * win/tclWin32Dll.c: + * win/tclWinFile.c: + * win/tclWin32Dll.c: * win/tclWinInt.h: allow Tcl to differentiate between reparse points which are symlinks and mounted volumes, and correctly handle the latter. This involves some elaborate code to find @@ -3422,19 +3427,19 @@ in ordinary tcl interpreter. [Bug #705675] * generic/tclIOUtil.c: Some re-arrangement of code to bring it closer to cvs head. No functional changes. - - * tests/fCmd.test: + + * tests/fCmd.test: * win/tclWinFile.c: added some filesystem optimisation to the 'glob' implementation, and some new tests. - + * tests/winFile.test: * tests/ioUtil.test: * tests/unixFCmd.test: renumbered tests with duplicate numbers. (Bug #710361) - + 2003-04-12 Kevin Kenny - * tests/clock.test: Renumbered test cases to avoid + * tests/clock.test: Renumbered test cases to avoid duplicates [Bug 710310]. * tests/winTime.test: * win/tclWinTest.c (TestwinclockCmd, TestwinsleepCmd): @@ -3444,7 +3449,7 @@ to the phase-locked loop (replaced an IIR filter with an FIR one) in a quest for improved loop stability (Bug not logged at SF, but cited in private communication from Jeff Hobbs). - + 2003-04-11 Don Porter * generic/tclCmdMZ.c (Tcl_StringObjCmd,STR_IS_INT): Corrected @@ -3551,7 +3556,7 @@ * generic/tclVar.c: * tests/var.test: fixing ObjMakeUpvar's lookup algorithm for the created local variable, bugs #631741 (Chris Darroch) and #696893 - (David Hilker). + (David Hilker). 2003-03-22 Kevin Kenny @@ -3562,9 +3567,9 @@ for the patch. * win/makefile.vc: Added quoting around the script name in the 'test' target; Joe Mistachkin insists that he has a configuration - that fails to launch tcltest without it, and it appears harmless + that fails to launch tcltest without it, and it appears harmless otherwise. - + 2003-03-20 Don Porter * generic/tclInt.h (tclOriginalNotifier): @@ -3601,7 +3606,7 @@ * tests/registry.test: Changed the conditionals to avoid an abort if [testlocale] is missing, as when running the test in tclsh rather than tcltest. [Bug #705677] - + 2003-03-18 Daniel Steffen * tools/tcltk-man2html.tcl: added support for building 'make html' @@ -3615,7 +3620,7 @@ * generic/tclIOUtil.c: fix bad error message with 'cd ""' * win/tclWinFile.c: allow Tcl to differentiate between reparse points which are symlinks and mounted drives. - + These changes fix [Bug #703264], [Bug #704917], [Bug #697862] respectively. @@ -3642,7 +3647,7 @@ * win/makefile.vc: Backed the version to 8.4 on the 8.4 branch. (I just loathe sticky tags). - + 2003-03-12 Don Porter * generic/tcl.h: Removed TCL_PREFIX_IDENT and TCL_DEBUG_IDENT @@ -3695,7 +3700,7 @@ 2003-03-03 Kevin Kenny * win/Makefile.vc: corrected bug introduced by 'g' for debug builds. - + 2003-03-03 Don Porter * library/dde/pkgIndex.tcl: dde bumped to version 1.2.1 for @@ -3727,7 +3732,7 @@ 2003-02-27 Donal K. Fellows - * tests/lsearch.test (lsearch-10.7): + * tests/lsearch.test (lsearch-10.7): * generic/tclCmdIL.c (Tcl_LsearchObjCmd): Stopped -start option from causing an option when used with an empty list. [Bug #694232] @@ -3763,11 +3768,11 @@ 2003-02-22 Zoran Vasiljevic - * generic/tclEvent.c (Tcl_FinalizeThread): Fix [Bug #571002] + * generic/tclEvent.c (Tcl_FinalizeThread): Fix [Bug #571002] 2003-02-21 Donal K. Fellows - * tests/binary.test (binary-44.[34]): + * tests/binary.test (binary-44.[34]): * generic/tclBinary.c (ScanNumber): Fixed problem with unwanted sign-bit propagation when scanning wide ints. [Bug #690774] @@ -3821,7 +3826,7 @@ * generic/tclStringObj.c: restored Tcl_SetObjLength() side-effect of always invalidating unicode rep (if the obj has a string rep). Added hasUnicode flag to String struct, allows decoupling of - validity of unicode rep from buffer size allocated to it (improves + validity of unicode rep from buffer size allocated to it (improves memory allocation efficiency). [Bugs #686782, #671138, #635200] * macosx/Tcl.pbproj/project.pbxproj: @@ -3844,7 +3849,7 @@ variable "result" [Bug 664743] * generic/tclStringObj.c (UpdateStringOfString): remove unused variable "length" [Bug 664751] - * tests/execute.test (execute-7.30): fix for [Bug 664775] + * tests/execute.test (execute-7.30): fix for [Bug 664775] 2003-02-18 Andreas Kupries @@ -3877,7 +3882,7 @@ 2003-02-17 Miguel Sofer * generic/tclBasic.c (TclRenameCommand): fixing error in previous - commit. + commit. 2003-02-17 Jeff Hobbs @@ -3895,9 +3900,9 @@ 2003-02-17 Miguel Sofer * generic/tclBasic.c (TclRenameCommand): 'oldFullName' object was - not being freed on all function exits, causing a memory leak + not being freed on all function exits, causing a memory leak [Bug 684756] - + 2003-02-17 Mo DeJong * generic/tclIO.c (Tcl_GetsObj): Minor change @@ -3908,7 +3913,7 @@ 2003-02-17 Kevin Kenny * tests/notify.test: Removed Windows line terminators. [Bug 687913]. - + 2003-02-15 Miguel Sofer * generic/tclBasic.c (Tcl_EvalEx): @@ -3926,7 +3931,7 @@ 2003-02-15 Kevin Kenny - * tests/notify.test (new-file): + * tests/notify.test (new-file): * generic/tclTest.c (TclTest_Init, EventtestObjCmd, EventtestProc, EventTestDeleteProc): * generic/tclNotify.c (Tcl_DeleteEvents): Fixed Tcl_DeleteEvents @@ -3938,7 +3943,7 @@ * unix/tclUnixTest.c (TestfilehandlerCmd): Corrected a couple of typos in error messages. [Bug 596027] - + 2003-02-14 Jeff Hobbs * README: Bumped to version 8.4.2. @@ -3977,11 +3982,11 @@ * win/tclWinInit.c: Added conversion from the system encoding to tcl_platform(user), so that it works with non-ASCII7 user names. [Bug 685926] - + * doc/tclsh.1: Added language to describe the handling of the end-of-file character \u001a embedded in a script file. [Bug 685485] - + 2003-02-11 Vince Darley * tests/fileName.test: @@ -3993,7 +3998,7 @@ * tests/http.test: Corrected a problem where http-4.14 would fail when run in an environment with a proxy server. Replaced references to scriptics.com by tcl.tk. - + 2003-02-11 Jeff Hobbs * tests/lsearch.test: @@ -4011,12 +4016,12 @@ 2003-02-11 Miguel Sofer - * generic/tclParse.c (CommandComplete): + * generic/tclParse.c (CommandComplete): * tests/parse.test: fix for [Bug 684744], by Don Porter. 2003-02-11 Jeff Hobbs - * generic/tclIOUtil.c (Tcl_FSJoinPath, Tcl_FSGetNormalizedPath): + * generic/tclIOUtil.c (Tcl_FSJoinPath, Tcl_FSGetNormalizedPath): (UpdateStringOfFsPath): revert the cwdLen == 0 check and instead follow a different code path in Tcl_FSJoinPath. (Tcl_FSConvertToPathType, Tcl_FSGetNormalizedPath): @@ -4024,8 +4029,8 @@ before freeing the internal object. (darley) * tests/fileSystem.test: added test 8.3 - * generic/tclIOUtil.c (Tcl_FSGetNormalizedPath): - (UpdateStringOfFsPath): handle the cwdLen == 0 case + * generic/tclIOUtil.c (Tcl_FSGetNormalizedPath): + (UpdateStringOfFsPath): handle the cwdLen == 0 case * unix/tclUnixFile.c (TclpMatchInDirectory): simplify the hidden file match check. @@ -4085,10 +4090,10 @@ * generic/tclTest.c: * tests/fileSystem.text: fixed test 7.2 to avoid a possible crash, and not change the pwd. - + * tests/http.text: added comment to test 4.15, that it may fail if you use a proxy server. - + 2003-02-06 Mo DeJong * generic/tclCompCmds.c (TclCompileIncrCmd): @@ -4146,19 +4151,19 @@ issues to make filesystem much less dependent on encodings for its cleanup, and therefore allow it to be finalized later in the exit process. This fixes fileSystem.test-7.1. Also fixed one - more bug in setting of modification dates of files which have + more bug in setting of modification dates of files which have undergone cross-platform copies. [Patch 676271] - + * tests/basic.test: * tests/exec.test: * tests/fileName.test: - * tests/io.test: fixed some test failures when tests are run + * tests/io.test: fixed some test failures when tests are run from a directory containing spaces. - + * tests/fileSystem.test: * generic/tclTest.c: added regression test for the modification date setting of cross-platform file copies. - + 2003-02-03 Kevin Kenny * generic/tclBasic.c: Changed [trace add command] so that 'rename' @@ -4169,12 +4174,12 @@ callbacks. Added a case for renaming a proc within a namespace. * doc/trace.n: Added language about use of fully qualified names in trace callbacks. - + 2003-02-01 Kevin Kenny * generic/tclCompCmds.c: Removed an unused variable that caused compiler warnings on SGI. [Bug 664379] - + * generic/tclLoad.c: Changed the code so that if Tcl_StaticPackage is called to report the same package as being loaded in two interps, it shows up in [info loaded {}] in both of them (previously, @@ -4182,24 +4187,24 @@ * tests/load.test Added regression test for the above bug. [Bug 670042] - + * generic/tclClock.c: Fixed a bug that incorrectly allowed [clock clicks {}] and [clock clicks -] to be accepted as if they were [clock clicks -milliseconds]. - + * tests/clock.test: Added regression tests for the above bug. [Bug 675356] - + * tests/unixNotfy.test: Added cleanup of working files [Bug 675609] - + * doc/Tcl.n: Added headings to the eleven paragraphs, to improve formatting in the tools that attempt to extract tables of contents from the manual pages. [Bug 627455] * generic/tclClock.c: Expanded mutex protection around the setting of env(TZ) and the thread-unsafe call to tzset(). [Bug 656660] - + 2003-01-31 Don Porter * tests/tcltest.test: Cleaned up management of file/directory @@ -4219,10 +4224,10 @@ 2003-01-28 Vince Darley * generic/tclIOUtil.c: fix to setting modification date - in TclCrossFilesystemCopy. Also added 'panic' in + in TclCrossFilesystemCopy. Also added 'panic' in Tcl_FSGetFileSystemForPath under illegal calling circumstances which lead to hard-to-track-down bugs. - + * generic/tclTest.c: added test suite code to allow exercising a vfs-crash-on-exit bug in Tcl's finalization caused by the encodings being cleaned up before unloading occurs. @@ -4323,13 +4328,13 @@ 2003-01-24 Vince Darley - * generic/tclStringObj.c: proper fixes for Tcl_SetObjLength and + * generic/tclStringObj.c: proper fixes for Tcl_SetObjLength and Tcl_AttemptSetObjectLength dealing with string objects with - both pure-unicode and normal internal representations. + both pure-unicode and normal internal representations. Previous fix didn't handle all cases correctly. * generic/tclIO.c: Add 'Tcl_GetString()' to ensure the object has a valid 'objPtr->bytes' field before manipulating it directly. - + This fixes [Bug 635200] and [Bug 671138], but may reduce performance of Unicode string handling in some cases. A further patch will be applied to address this, once the code is known to be correct. @@ -4396,15 +4401,15 @@ the object has a unicode string rep. Fixes [Bug 635200] * tests/stringObj.test: removed 'knownBug' constraint from test 14.1 now that this bug is fixed. - + * generic/tclInt.h: * generic/tclBasic.c: * generic/tclCmdMZ.z: * tests/trace.test: execution and command tracing bug fixes and - cleanup. In particular fixed [Bug 655645], [Bug 615043], + cleanup. In particular fixed [Bug 655645], [Bug 615043], [Bug 571385] - - fixed some subtle cleanup problems with tracing. This - required replacing Tcl_Preserve/Tcl_Release with a more + - fixed some subtle cleanup problems with tracing. This + required replacing Tcl_Preserve/Tcl_Release with a more robust refCount approach. Solves at least one known crash caused by memory corruption. - fixed some confusion in the code between new style traces @@ -4513,14 +4518,14 @@ 2003-01-10 Vince Darley - * generic/tclIOUtil.c: + * generic/tclIOUtil.c: * win/tclWinInt.h: * win/tclWinInit.c: fix to new WinTcl crash on exit with vfs, introduced on 2002-12-06. Encodings must be cleaned up after the filesystem. - + * win/makefile.vc: fix to minor VC++ 5.2 syntax problem - + 2003-01-09 Don Porter * generic/tclCompCmds.c (TclCompilerReturnCmd): Corrected off-by-one @@ -4530,14 +4535,14 @@ * generic/tclFileName.c: remove unused variable 'macSpecialCase' [Bug 664749] - + * generic/tclIOUtil.c: * generic/tclInt.h: * unix/tclUnixFile.c: * mac/tclMacFile.c: * win/tclWinFile.c: * win/tclWinInt.h: - * win/tclWin32Dll.c: + * win/tclWin32Dll.c: * tests/cmdAH.test: fix to non-ascii chars in paths when setting mtime and atime through 'file (a|m)time $path $time' [Bug 634151] @@ -4549,8 +4554,8 @@ 2003-01-07 Don Porter - * generic/tclCompCmds.c (TclCompileReturnCmd): - * tests/compile.test: Corrects failure of bytecompiled + * generic/tclCompCmds.c (TclCompileReturnCmd): + * tests/compile.test: Corrects failure of bytecompiled [catch {return}] to have result TCL_RETURN (not TCL_OK) [Bug 633204]. This patch is a workaround for 8.4.X. A new opcode INST_RETURN is a better long term solution for 8.5 and later. @@ -4579,7 +4584,7 @@ 2002-12-17 Jeff Hobbs - * generic/tclNotify.c (TclFinalizeNotifier, Tcl_SetServiceMode): + * generic/tclNotify.c (TclFinalizeNotifier, Tcl_SetServiceMode): (Tcl_ThreadAlert): Check that the stub functions are non-NULL before calling them. They could be set to NULL by Tcl_SetNotifier. @@ -4652,7 +4657,7 @@ * win/tclWinPipe.c: reverted back to -r1.27 due to numerous test failures that need to be resolved first. The idea was good, but the details aren't. - + 2002-12-04 David Gravereaux * win/tclWinPipe.c (Tcl_WaitPid): When a process exits with an @@ -4678,7 +4683,7 @@ * generic/tclTestObj.c: patch omitted from previous change of 2002-11-13 - + 2002-12-03 Jeff Hobbs * generic/tclStubLib.c (Tcl_InitStubs): prevent the cached check of @@ -4794,7 +4799,7 @@ * generic/get.test: * generic/string.test: - * generic/tclObj.c (SetIntFromAny, SetWideIntFromAny): + * generic/tclObj.c (SetIntFromAny, SetWideIntFromAny): * generic/tclGet.c (TclGetLong, Tcl_GetInt): simplify sign handling before calling strtoul(l). [Bug #634856] @@ -4819,7 +4824,7 @@ * generic/tclCmdMZ.c: * tests/trace.test: applied patch from Hemang Levana to fix [Bug #615043] in execution traces with 'return -code error'. - + * generic/tclTestObj.c: * tests/stringObj.test: added 'knownBug' test for [Bug 635200] * generic/tclStringObj.c: corrected typos in comments @@ -4857,7 +4862,7 @@ to use memcmp in the one-byte/char case, also use direct index for INST_STR_INDEX in that case. - * generic/tclEncoding.c (UtfToUtfProc, UtfToUnicodeProc): + * generic/tclEncoding.c (UtfToUtfProc, UtfToUnicodeProc): (TableFromUtfProc, EscapeFromUtfProc): Use TclUtfToUniChar. (UnicodeToUtfProc, TableToUtfProc): add 1-byte char optimizations for Tcl_UniCharToUtf call. These improve encoded channel @@ -4882,7 +4887,7 @@ 2002-11-11 Kevin Kenny * doc/Tcl.n: Corrected indentation of the new language. Oops. - + 2002-11-10 Kevin Kenny * doc/Tcl.n: Added language to the Endekalogue to make it clear @@ -4947,7 +4952,7 @@ pointers which will be filled in when Tcl_FindExecutable is called, so that users don't report invalid bugs on this topic. (No code changes at all). - + 2002-10-29 Daniel Steffen * unix/tclLoadDyld.c (TclpFindSymbol): pass all dyld error @@ -5076,7 +5081,7 @@ * doc/Tcl.n: Clarified that namespace separators are legal in the variable names during $-subtitution. [Bug 615139] - + * doc/regexp.n: Typo correction. Thanks Ronnie Brunner. [Bug 606826] 2002-10-10 Vince Darley @@ -5127,7 +5132,7 @@ * mac/tclMacPort.h: removed incorrect definitions and obsolete definitions. - * mac/tclMacChan.c: removed obsolete GetOpenMode() and replaced + * mac/tclMacChan.c: removed obsolete GetOpenMode() and replaced associated constants with the analogues (they existing defs were inconsistent with which was causing havoc when Tcl_GetOpenMode was used instead of private GetOpenMode). @@ -5137,7 +5142,7 @@ * mac/tclMacLoad.c: CONSTification, fixes to Vince's last changes. - * mac/tclMacFile.c: + * mac/tclMacFile.c: * mac/tclMacTest.c: * mac/tclMacUnix.c: CONSTification. @@ -5145,7 +5150,7 @@ fix for missing autoname token from TclOSACompileCmd. (bdesgraupes) * mac/AppleScript.html(AppleScript delete): doc fix. (bdesgraupes) - * mac/tcltkMacBuildSupport.sea.hqx: updated MoreFiles to 1.5.3, + * mac/tcltkMacBuildSupport.sea.hqx: updated MoreFiles to 1.5.3, updated build instructions for 8.4. * mac/tclMacProjects.sea.hqx: rebuilt archive. @@ -5168,9 +5173,9 @@ 2002-10-03 Donal K. Fellows - * tools/man2help2.tcl: - * tests/http.test, tests/httpd, tests/httpold.test: - * tests/env.test, tests/binary.test, tests/autoMkindex.test: + * tools/man2help2.tcl: + * tests/http.test, tests/httpd, tests/httpold.test: + * tests/env.test, tests/binary.test, tests/autoMkindex.test: * library/init.tcl, library/http/http.tcl: [info exist] should really be [info exists]. [Bug 602566] @@ -5243,7 +5248,7 @@ * win/tcl.m4 (SC_PATH_TCLCONFIG): Support one-tree build. (SC_PATH_TKCONFIG): Likewise. (SC_PROG_TCLSH): Likewise. - (SC_CONFIG_CFLAGS): Assume real Cygwin port and remove -mno-cygwin + (SC_CONFIG_CFLAGS): Assume real Cygwin port and remove -mno-cygwin flags. Add -mwin32 to extra_cflags and extra_ldflags. Remove ``-e _WinMain@16'' from LDFLAGS_WINDOW. * win/configure.in: Allow Cygwin build. @@ -5257,11 +5262,11 @@ for Cygwin. * generic/tclEnv.c (Tcl_CygwinPutenv): putenv replacement for Cygwin. - * generic/tclFileName.c (Tcl_TranslateFileName): Convert POSIX + * generic/tclFileName.c (Tcl_TranslateFileName): Convert POSIX to native format. (TclDoGlob): Likewise. * generic/tclPlatDecls.h (TCHAR): Define for Cygwin. - * win/tclWinPort.h (putenv, TclpSysAlloc, TclpSysFree, + * win/tclWinPort.h (putenv, TclpSysAlloc, TclpSysFree, TclpSysRealloc): Define for Cygwin. 2002-09-26 Daniel Steffen @@ -5320,9 +5325,9 @@ * generic/tcl.h: * mac/tclMacApplication.r: * mac/tclMacLibrary.r: - * mac/tclMacResource.r: unified use of the two equivalent + * mac/tclMacResource.r: unified use of the two equivalent resource compiler header inclusion defines RC_INVOKED and - RESOURCE_INCLUDED, now use RC_INVOKED throughout. + RESOURCE_INCLUDED, now use RC_INVOKED throughout. 2002-09-10 Mo DeJong @@ -5348,7 +5353,7 @@ framework, i.e. using an dyld install_name containing @executable_path/../Frameworks via the new DYLIB_INSTALL_DIR unix/Makefile variable. - + 2002-09-10 Jeff Hobbs *** 8.4.0 TAGGED FOR RELEASE *** @@ -5392,7 +5397,7 @@ * generic/tclInterp.c (AliasCreate): a Tcl_Obj was leaked on error return from TclPreventAliasLoop. - + 2002-09-03 Daniel Steffen * macosx/Tcl.pbproj/project.pbxproj: Bumped version number to @@ -5465,10 +5470,10 @@ unfortunately, Tk uses "unix" to mean X11. So added platform keys for macosx (the little added to "unix"), "aqua" and "x11" to distinguish these for Tk. - + * generic/tcl.h: added a #ifnded RESOURCE_INCLUDED so that tcl.h can be passed to the resource compiler. - + * generic/tcl.h: * generic/tclNotify.c: added a few Notifier procs, to be able to modify more bits of the Tcl notifier dynamically. Required to get @@ -5551,10 +5556,10 @@ * generic/tclThreadAlloc.c: small optimisation, reducing the new allocator's overhead. - + 2002-08-23 Miguel Sofer - * generic/tclObj.c (USE_THREAD_ALLOC): fixed leak [Bug 597936]. + * generic/tclObj.c (USE_THREAD_ALLOC): fixed leak [Bug 597936]. Thanks to Zoran Vasiljevic. 2002-08-23 Miguel Sofer @@ -5570,7 +5575,7 @@ 2002-08-20 Andreas Kupries - * win/Makefile.in (CFLAGS): + * win/Makefile.in (CFLAGS): * unix/Makefile.in (MEM_DEBUG_FLAGS): Added usage of @MEM_DEBUG_FLAGS@. * win/configure.in: * unix/configure.in: Added usage of SC_ENABLE_MEMDEBUG. @@ -5597,7 +5602,7 @@ * library/http/http.tcl: Corrected installation directory of * library/msgcat/msgcat.tcl: the package tcltest 2.2. Added * library/opt/optparse.tcl: comments in other packages to remind - * library/tcltest/tcltest.tcl: that installation directories need + * library/tcltest/tcltest.tcl: that installation directories need * unix/Makefile.in: updates to match increasing version * win/Makefile.in: numbers. [Bug 597450] * win/makefile.bc: @@ -5627,17 +5632,17 @@ 2002-08-14 Miguel Sofer * generic/tclInt.h: - * generic/tclObj.c: (code cleanup) factored the parts in the macros + * generic/tclObj.c: (code cleanup) factored the parts in the macros TclNewObj() / TclDecrRefCount() into a common part for all memory allocators and two new macros TclAllocObjStorage() / TclFreeObjStorage() that are specific to each allocator and fully describe the differences. Removed allocator-specific code from tclObj.c by using the macros. - + 2002-08-12 Miguel Sofer * generic/tclCmdMZ.c: fixing UMR in delete traces, [Bug 589863]. - + 2002-08-08 David Gravereaux * tools/man2help.tcl: Fixed $argv handling bug where if -bitmap @@ -5648,7 +5653,7 @@ * tests/uplevel.test: added 6.1 to test [uplevel] with shadowed commands [Bug 524383] - * tests/subst.test: added 5.8-10 as further tests for [Bug 495207] + * tests/subst.test: added 5.8-10 as further tests for [Bug 495207] 2002-08-08 Don Porter @@ -5680,19 +5685,19 @@ * generic/tclObj.c: optimised Tcl_GetBooleanFromObj and SetBooleanFromAny to avoid parsing the string rep when it can be avoided [Bugs 584650, 472576] - + 2002-08-07 Miguel Sofer * generic/tclCompile.h: * generic/tclObj.c: making tclCmdNameType static ([Bug 584567], Don Porter). - + 2002-08-07 Miguel Sofer * generic/tclObj.c (Tcl_NewObj): added conditional code for USE_THREAD_ALLOC; objects allocated through Tcl_NewObj() were otherwise being leaked. [Bug 587488] reported by Sven Sass. - + 2002-08-06 Daniel Steffen * generic/tclInt.decls: @@ -5700,7 +5705,7 @@ non-threaded build for the tclUnixThrd.c procs TclpReaddir, TclpLocaltime, TclpGmtime and TclpInetNtoa. Fixes link errors in stubbed & threaded extensions that include - tclUnixPort.h and use any of the procs readdir, localtime, + tclUnixPort.h and use any of the procs readdir, localtime, gmtime or inet_ntoa (e.g. TclX 8.4) [Bug 589526] * generic/tclIntPlatDecls.h: * generic/tclStubInit.c: Regen. @@ -5720,7 +5725,7 @@ * doc/CmdCmplt.3: Applied Patch 585105 to fully CONST-ify * doc/Concat.3: all remaining public interfaces of Tcl. - * doc/CrtCommand.3: Notably, the parser no longer writes on + * doc/CrtCommand.3: Notably, the parser no longer writes on * doc/CrtSlave.3: the string it is parsing, so it is no * doc/CrtTrace.3: longer necessary for Tcl_Eval() to be * doc/Eval.3: given a writable string. Also, the @@ -5740,7 +5745,7 @@ * generic/tclCompile.h * generic/tclDecls.h Several bugs are also fixed by this patch. * generic/tclEnv.c [Bugs 584051,580433] [Patches 585105,582429] - * generic/tclEvent.c + * generic/tclEvent.c * generic/tclInt.decls * generic/tclInt.h * generic/tclIntDecls.h @@ -5769,7 +5774,7 @@ 2002-08-01 Miguel Sofer * generic/tclExecute.c: added a reference count for the complete - execution stack, instead of Tcl_Preserve/Tcl_Release. + execution stack, instead of Tcl_Preserve/Tcl_Release. 2002-08-01 Mo DeJong @@ -5789,7 +5794,7 @@ * generic/tclInt.h (USE_THREAD_ALLOC): for unshared objects, TclDecrRefCount now frees the internal rep before the string rep - - just like the non-macro Tcl_DecrRefCount/TclFreeObj [Bug 524802]. + just like the non-macro Tcl_DecrRefCount/TclFreeObj [Bug 524802]. For the other allocators the fix was done on 2002-03-06. 2002-07-31 Miguel Sofer @@ -5810,7 +5815,7 @@ 2002-07-30 Andreas Kupries - * tests/io.test: + * tests/io.test: * generic/tclIO.c (WriteChars): Added flag to break out of loop if nothing of the input is consumed at all, to prevent infinite looping of called with a non-UTF-8 string. Fixes Bug 584603 @@ -5833,25 +5838,25 @@ * unix/tcl.m4 (SC_SERIAL_PORT): Fixed detection for cases when configure's stdin is not a tty. - - * unix/tclUnixPort.h: + + * unix/tclUnixPort.h: * generic/tclIOSock.c: Changed size_t to socklen_t in socket-related function calls. * unix/configure.in: Added test and fallback definition for socklen_t. - + * unix/configure: generated. 2002-07-29 Miguel Sofer * generic/tclObj.c: fixed a comment - * generic/tcl.h: - * generic/tclBasic.c: + * generic/tcl.h: + * generic/tclBasic.c: * generic/tclInterp.c: added the new flag TCL_EVAL_INVOKE to the interface of the Tcl_Eval* functions, removing the - TCL_EVAL_NO_TRACEBACK added yesterday: alias invocations not only + TCL_EVAL_NO_TRACEBACK added yesterday: alias invocations not only require no tracebacks, but also look up the command name in the global scope - see new test interp-9.4 * tests/interp.test: added 9.3 to test for safety of aliases to @@ -5869,7 +5874,7 @@ 2002-07-28 Miguel Sofer - * generic/tcl.h: + * generic/tcl.h: * generic/tclBasic.c: added the new flag TCL_EVAL_NO_TRACEBACK to the interface of the Tcl_Eval* functions. Modified the error message for too many nested evaluations. @@ -5881,7 +5886,7 @@ * tests/interp.test: * tests/stack.test: adapted to the new error message. * tests/trace.test: added tests for aliases firing the exec - traces. + traces. 2002-07-27 Mo DeJong @@ -5911,11 +5916,11 @@ * generic/tclExecute.c: fixed Tcl_Obj leak in code corresponding to the macro NEXT_INST_V(x, 0, 1) [Bug 587495]. - + 2002-07-26 Miguel Sofer * generic/tclVar.c (TclObjLookupVar): leak fix and improved - comments. + comments. 2002-07-26 Jeff Hobbs @@ -5925,12 +5930,12 @@ 2002-07-24 Miguel Sofer - * generic/tclExecute.c: + * generic/tclExecute.c: * tests/expr-old.test: fix for erroneous error messages in [expr], [Bug 587140] reported by Martin Lemburg. 2002-07-25 Joe English - * generic/tclProc.c: fix for Tk Bug #219218 "error handling + * generic/tclProc.c: fix for Tk Bug #219218 "error handling with bgerror in Tk" 2002-07-24 Miguel Sofer @@ -5964,7 +5969,7 @@ * doc/OpenFileChnl.3: (Updates from Larry Virden) * doc/open.n: * doc/tclsh.1: Fix section numbers in Unix man page references. - * doc/lset.n: In EXAMPLES section, include command to set the + * doc/lset.n: In EXAMPLES section, include command to set the initial value used in subsequent examples. * doc/http.n: Package version updated to 2.4. @@ -5993,14 +5998,14 @@ added comments about its usage. * generic/tclLoad.c: * generic/tcl.h: - * generic/tcl.decls: + * generic/tcl.decls: * doc/FileSystem.3: converted last load-related ClientData - parameter to Tcl_LoadHandle opaque structure, removing a + parameter to Tcl_LoadHandle opaque structure, removing a couple of casts in the process. - + * generic/tclInt.h: removed tclNativeFilesystem declaration since it is now static again. - + 2002-07-22 Donal K. Fellows * tests/expr.test (expr-22.*): Added tests to help detect the @@ -6040,12 +6045,12 @@ * win/tclWinSerial.c (no_timeout): Made this variable static. - * generic/tclExecute.c, generic/tclCompile.c, generic/tclBasic.c: + * generic/tclExecute.c, generic/tclCompile.c, generic/tclBasic.c: * generic/tclCompile.h (builtinFuncTable, instructionTable): Added prefix to these symbols because they are visible outside the Tcl library. - * generic/tclCompExpr.c (operatorTable): + * generic/tclCompExpr.c (operatorTable): * unix/tclUnixTime.c (tmKey): * generic/tclIOUtil.c (theFilesystemEpoch, filesystemWantToModify, filesystemIteratorsInProgress, filesystemOkToModify): Made these @@ -6054,7 +6059,7 @@ * unix/tclUnixFile.c: Renamed nativeFilesystem to * win/tclWinFile.c: tclNativeFilesystem and declared * generic/tclIOUtil.c: it properly in tclInt.h - * generic/tclInt.h: + * generic/tclInt.h: * generic/tclUtf.c (totalBytes): Made this array static and const. @@ -6073,30 +6078,30 @@ * generic/tclInt.h: * generic/tcl.h: - * */*Load*.c: added comments on changes of 07/17 and + * */*Load*.c: added comments on changes of 07/17 and replaced clientData with Tcl_LoadHandle in all locations. * generic/tclFCmd.c: * tests/fileSystem.test: fixed a 'knownBug' with 'file attributes ""' - * tests/winFCmd.test: + * tests/winFCmd.test: * tests/winPipe.test: * tests/fCmd.test: * tessts/winFile.test: added 'pcOnly' constraint to some - tests to make for more useful 'tests skipped' log from + tests to make for more useful 'tests skipped' log from running all tests on non-Windows platforms. - + 2002-07-17 Miguel Sofer * generic/tclBasic.c (CallCommandTraces): delete traces now - receive the FQ old name of the command. + receive the FQ old name of the command. [Bug 582532] (Don Porter) 2002-07-18 Vince Darley * tests/ioUtil.test: added constraints to 1.4,2.4 so they don't run outside of tcltest. [Bugs 583276,583277] - + 2002-07-17 Miguel Sofer * generic/tclVar.c (DupParsedVarName): nasty bug fixed, reported @@ -6107,7 +6112,7 @@ * generic/tclVar.c (TclPtrIncrVar): missing CONST in declarations, inconsistent with tclInt.h. Thanks to Vince Darley for reporting, boo to gcc for not complaining. - + 2002-07-17 Vince Darley * generic/tclInt.h: @@ -6139,7 +6144,7 @@ * generic/tclStubInit.c: * generic/tclVar.c: removing the now redundant functions to access indexed variables: Tcl(Get|Set|Incr)IndexedScalar() and - Tcl(Get|Set|Incr)ElementOfIndexedArray(). + Tcl(Get|Set|Incr)ElementOfIndexedArray(). 2002-07-17 Donal K. Fellows @@ -6160,7 +6165,7 @@ ** WARNING FOR BYTECODE MAINTAINERS ** TCL_COMPILE_DEBUG is currently not functional; will be fixed ASAP. - + 2002-07-16 Mo DeJong * unix/Makefile.in: @@ -6184,26 +6189,26 @@ 2002-07-15 Miguel Sofer * generic/tclVar.c: inaccurate comment fixed - + 2002-07-15 Miguel Sofer * generic/tclBasic.c (Tcl_AddObjErrorInfo): * generic/tclExecute.c (TclUpdateReturnInfo): - * generic/tclInt.h: - * generic/tclProc.c: + * generic/tclInt.h: + * generic/tclProc.c: Added two Tcl_Obj to the ExecEnv structure to hold the fully qualified names "::errorInfo" and "::errorCode" to cache the addresses of the corresponding variables. The two most frequent setters of these variables now profit from the new variable name - caching. + caching. 2002-07-15 Miguel Sofer * generic/tclVar.c: refactorisation to reuse already looked-up Var pointers; definition of three new Tcl_Obj types to cache variable name parsing and lookup for later reuse; modification of internal - functions to profit from the caching. - + functions to profit from the caching. + * generic/tclInt.decls: * generic/tclInt.h: * generic/tclIntDecls.h: @@ -6218,7 +6223,7 @@ 2002-07-15 Don Porter - * tests/unixInit.test: Improved constraints to protect /tmp. + * tests/unixInit.test: Improved constraints to protect /tmp. [Bug 581403] 2002-07-15 Vince Darley @@ -6231,12 +6236,12 @@ * mac/tclMacFile.c: completed TclpObjLink implementation which was previously lacking. * generic/tclIOUtil.c: comment cleanup and code speedup. - + 2002-07-14 Don Porter * generic/tclInt.h: Removed declarations that duplicated entries in the (internal) stub table. - + * library/tcltest/tcltest.tcl: Corrected errors in handling of configuration options -constraints and -limitconstraints. @@ -6273,7 +6278,7 @@ 2002-07-11 Miguel Sofer * generic/tclCompile.c: now setting local vars undefined at - compile time, instead of waiting until the proc is initialized. + compile time, instead of waiting until the proc is initialized. * generic/tclProc.c: use macro TclSetVarUndefined instead of directly etting the flag. @@ -6284,7 +6289,7 @@ 2002-07-10 Donal K. Fellows - * tests/unixFCmd.test, tests/fileName.test: + * tests/unixFCmd.test, tests/fileName.test: * tests/fCmd.test: Removed [exec] of Unix utilities that have equivalents in standard Tcl. [Bug 579268] Also simplified some of unixFCmd.test while I was at it. @@ -6352,7 +6357,7 @@ functionality change. Also clarify that objects with refCount zero should not be passed in to the Tcl_FS API, and prevent segfaults from occuring on such user errors. [Bug 578617] - + 2002-07-06 Don Porter * tests/pkgMkIndex.test: Constrained tests of [load] package indexing @@ -6384,10 +6389,10 @@ * tests/event.test: Stop these tests from failing * tests/ioUtil.test: when the current directory is * tests/regexp.test: not writable... - * tests/regexpComp.test: - * tests/source.test: - * tests/unixFile.test: - * tests/unixNotfy.test: + * tests/regexpComp.test: + * tests/source.test: + * tests/unixFile.test: + * tests/unixNotfy.test: * tests/unixFCmd.test: Trying to make these test-files * tests/macFCmd.test: not bomb out with an error when @@ -6401,18 +6406,18 @@ 2002-07-04 Donal K. Fellows - * tests/cmdMZ.test (cmdMZ-1.4): + * tests/cmdMZ.test (cmdMZ-1.4): * tests/cmdAH.test: More fixing of writable-current-dir assumption. [Bug 575824] 2002-07-04 Miguel Sofer * tests/basic.test: Same issue as below; fixed [Bug 575817] - + 2002-07-04 Andreas Kupries - * tests/socket.test: - * tests/winPipe.test: + * tests/socket.test: + * tests/winPipe.test: * tests/pid.test: Fixed SF Bug #575848. See below for a description the general problem. @@ -6421,7 +6426,7 @@ * tests/iogt.test: Fixed bug #575860. * tests/io.test: Fixed bug #575862. - * tests/exec.test: + * tests/exec.test: * tests/ioCmd.test: Fixed bug #575836. 2002-07-03 Don Porter @@ -6494,7 +6499,7 @@ 2002-07-02 Vince Darley - * tests/fCmd.test: + * tests/fCmd.test: * generic/tclCmdAH.c: clearer error msgs for 'file link', as per the man page. @@ -6542,7 +6547,7 @@ when building with gcc to resolve problems with undefined symbols being present when tcl library used with non-gcc linker at later stage. Symbols were compiler-generated, so it is the compiler's - business to define them. [Bug #541181] + business to define them. [Bug #541181] 2002-07-01 Don Porter @@ -6633,14 +6638,14 @@ 2002-06-26 Vince Darley - * tests/fileSystem.test: + * tests/fileSystem.test: * generic/tclIOUtil.c: fix to handling of empty paths "" which are not claimed by any filesystem (Bug #573758). Ensure good error messages are given in all cases. * tests/cmdAH.test: * unix/tclUnixFCmd.c: fix to bug reported as part of (Patch #566669). Thanks to Taguchi, Takeshi for the report. - + 2002-06-26 Reinhard Max * unix/tclUnixTime.c: Make [clock format] respect locale settings. @@ -6650,8 +6655,8 @@ * doc/CrtInterp.3: * doc/StringObj.3: clarifications by Don Porter, bugs #493995 and - #500930. - + #500930. + 2002-06-24 Don Porter * library/tcltest/tcltest.tcl: Corrected suppression of -verbose skip @@ -6718,18 +6723,18 @@ 2002-06-22 Donal K. Fellows - * tools/tcl.wse.in (Disk Label), unix/tcl.spec (version): - * win/README.binary, README, win/configure.in, unix/configure.in: + * tools/tcl.wse.in (Disk Label), unix/tcl.spec (version): + * win/README.binary, README, win/configure.in, unix/configure.in: * generic/tcl.h (TCL_RELEASE_*, TCL_PATCH_LEVEL): Bump to beta1. 2002-06-21 Joe English * generic/tclCompExpr.c: - * generic/tclParseExpr.c: LogSyntaxError() should reset - the interpreter result [Bug 550142 "Tcl_ExprObj -> abort"] + * generic/tclParseExpr.c: LogSyntaxError() should reset + the interpreter result [Bug 550142 "Tcl_ExprObj -> abort"] 2002-06-21 Don Porter - + * unix/Makefile.in: Updated all package install directories * win/Makefile.in: to match current Major.minor versions * win/makefile.bc: of the packages. Added tcltest package @@ -6746,7 +6751,7 @@ * tests/fileSystem.test: native filesystems and in vfs's, * generic/tclTest.c: when the individual filesystem * generic/tclCmdAH.c: supports the concept. - * generic/tclIOUtil.c: + * generic/tclIOUtil.c: * generic/tcl.h: * generic/tcl.decls: * doc/FileSystem.3: @@ -6783,9 +6788,9 @@ 2002-06-18 Miguel Sofer - * generic/tclExecute.c (TEBC): + * generic/tclExecute.c (TEBC): - elimination of duplicated code in the non-immediate INST_INCR - instructions. + instructions. - elimination of 103 (!) TclDecrRefCount macros. The different instructions now jump back to a common "DecrRefCount zone" at the top of the loop. The macro "ADJUST_PC" was replaced by two @@ -6860,7 +6865,7 @@ * tests/msgcat.test: Revised locale initialization to interpret environment variable locale values according to XPG4, and to recognize the LC_ALL and LC_MESSAGES values over that of LANG. - Also added many Windows Registry locale values to those + Also added many Windows Registry locale values to those recognized by msgcat. Revised tests and docs. Bumped to version 1.3. Thanks to Bruno Haible for the report and assistance crafting the solution. [Bug 525522, 525525] @@ -6872,10 +6877,10 @@ 2002-06-16 Miguel Sofer - * generic/tclCompile.c (TclCompileTokens): + * generic/tclCompile.c (TclCompileTokens): * tests/compile.test: [Bug 569438] in the processing of dollar - variables; report by Georgios Petasis. - + variables; report by Georgios Petasis. + 2002-06-16 Miguel Sofer * generic/tclExecute.c: bug in the consolidation of the @@ -6902,7 +6907,7 @@ 2002-06-14 Donal K. Fellows - * doc/trace.n, tests/trace.test: + * doc/trace.n, tests/trace.test: * generic/tclCmdMZ.c (Tcl_TraceObjCmd,TclTraceCommandObjCmd) (TclTraceVariableObjCmd): Changed references to "trace list" to "trace info" as mandated by TIP#102. @@ -6938,7 +6943,7 @@ not documented; there, it causes the call to create the variable if it does not exist. The new usage in Tcl_(Obj)?SetVar.* remains undocumented too ... - + 2002-06-13 Vince Darley * tests/fCmd.test: @@ -6952,7 +6957,7 @@ * unix/tclUnixFile.c: * win/tclWinFile.c: fixed up further so both compiles and actually works with VC++ 5 or 6. - * win/tclWinInt.h: + * win/tclWinInt.h: * win/tclWin32Dll.c: cleaned up code and vfs tests and added tests for the internal changes of 2002-06-12, to see whether WinTcl on NTFS can coexist peacefully with links @@ -6965,7 +6970,7 @@ * tclBasic.c (Tcl_DeleteTrace): fixed [Bug 568123] (thanks to Hemang Lavana) - + 2002-06-12 Jeff Hobbs * win/tclWinFile.c: corrected the symbolic link handling code to @@ -6980,25 +6985,25 @@ * generic/tcl.decls: * generic/tclDecls.h: made code for Tcl_FSNewNativePath agree with man pages. - + * doc/FileSystem.3: clarified the circumstances under which certain functions are called in the presence of symlinks. - + * win/tclWinFile.c: - * win/tclWinPort.h: - * win/tclWinInt.h: - * win/tclWinFCmd.c: Fix for Windows to allow 'file lstat', - 'file type', 'glob -type l', 'file copy', 'file delete', - 'file normalize', and all VFS code to work correctly in the - presence of symlinks (previously Tcl's behaviour was not very - well defined). This also fixes possible serious problems in - all versions of WinTcl where 'file delete' on a NTFS symlink + * win/tclWinPort.h: + * win/tclWinInt.h: + * win/tclWinFCmd.c: Fix for Windows to allow 'file lstat', + 'file type', 'glob -type l', 'file copy', 'file delete', + 'file normalize', and all VFS code to work correctly in the + presence of symlinks (previously Tcl's behaviour was not very + well defined). This also fixes possible serious problems in + all versions of WinTcl where 'file delete' on a NTFS symlink could delete the original, not the symlink. Note: symlinks cannot yet be created in pure Tcl. 2002-06-11 Miguel Sofer - * generic/tclBasic.c: + * generic/tclBasic.c: * generic/tclCompCmds.c: * generic/tclInt.h: reverted the new compilation functions; replaced by a more general approach described below. @@ -7017,8 +7022,8 @@ * test/info.test: * generic/tclCmdIL.c: fix for [Bug 567386], [info locals] was reporting some linked variables. - - * generic/tclBasic.c: + + * generic/tclBasic.c: * generic/tclCompCmds.c: * generic/tclInt.h: added compile functions for [global], [variable] and [upvar]. They just declare the new local variables, @@ -7036,7 +7041,7 @@ * generic/tclIOUtil.c: improved and sped up handling of native paths (duplication and conversion to normalized paths), particularly on Windows. - * modified part of above commit, due to problems on Linux. + * modified part of above commit, due to problems on Linux. Will re-examine bug report and evaluate more closely. 2002-06-07 Don Porter @@ -7089,9 +7094,9 @@ case their thread-safe *_r counterparts are not available. * unix/tcl.m4: added configure check for readdir_r * unix/tcl.m4 (Darwin): set TCL_DEFAULT_ENCODING to utf-8 on - MacOSX (where posix file apis expect utf-8, not iso8859-1). + MacOSX (where posix file apis expect utf-8, not iso8859-1). * unix/configure: regen - * unix/Makefile.in: set DYLD_LIBRARY_PATH in parallel + * unix/Makefile.in: set DYLD_LIBRARY_PATH in parallel to LD_LIBRARY_PATH for MacOSX dynamic linker. * generic/tclEnv.c (TclSetEnv): fix env var setting on MacOSX (adapted from patch #524352 by jkbonfield). @@ -7144,7 +7149,7 @@ * generic/tclExecute.c: reverting an accidental modification in the last commit. - + 2002-06-03 Miguel Sofer * doc/Tcl.n: clarify the empty variable name issue ([Bug 549285] @@ -7189,14 +7194,14 @@ Tcl 8.4 bug in certain uses of 'glob -tails'. * tests/fileName.test: removed 'knownBug' flag from some tests, added some new tests for above bugs. - + 2002-05-29 Jeff Hobbs * unix/configure: regen'ed * unix/configure.in: replaced bigendian check with autoconf standard AC_C_BIG_ENDIAN, which defined WORDS_BIGENDIAN on bigendian systems. - * generic/tclUtf.c (Tcl_UniCharNcmp): + * generic/tclUtf.c (Tcl_UniCharNcmp): * generic/tclInt.h (TclUniCharNcmp): use WORDS_BIGENDIAN instead of TCL_OPTIMIZE_UNICODE_COMPARE to enable memcmp alternative. @@ -7214,7 +7219,7 @@ 2002-05-29 Donal K. Fellows - * generic/tclExecute.c (TclExecuteByteCode): + * generic/tclExecute.c (TclExecuteByteCode): * generic/tclCmdMZ.c (Tcl_StringObjCmd): Use the macro version. * generic/tclInt.h (TclUniCharNcmp): Optimised still further with a macro for use in sensitive places like tclExecute.c @@ -7278,9 +7283,9 @@ 2002-05-28 Vince Darley * generic/tclIOUtil.c: fixes to Tcl_FSLoadFile when called on - a file inside a vfs. This should avoid leaving temporary + a file inside a vfs. This should avoid leaving temporary files sitting around on exit. [Bug #545579] - + 2002-05-27 Donal K. Fellows * win/tclWinError.c: Added comment on conversion of @@ -7323,7 +7328,7 @@ (TCL_CHANNEL_VERSION_3): New channel version. 2002-05-24 Andreas Kupries - + * tests/winPipe.test: Applied patch for SF Tcl Bug #549617. Patch and bug report by Kevin Kenny . @@ -7350,7 +7355,7 @@ 2002-05-16 Joe English - * doc/CrtObjCmd.3: + * doc/CrtObjCmd.3: Added Tcl_GetCommandFromObj, Tcl_GetCommandFullName (Tcl Bug #547987, #414921) @@ -7369,7 +7374,7 @@ 2002-05-13 Vince Darley - * generic/tclEvent.c: + * generic/tclEvent.c: * generic/tclIOUtil.c: * generic/tclInt.h: clean up all memory allocated by the filesystem, via introduction of 'TclFinalizeFilesystem'. @@ -7377,7 +7382,7 @@ be sure it is called at just the right time. Fix bad comment also. [Bug #555078 and 'fs' part of #543549] * win/tclWinChan.c: fix comment referring to wrong function. - + 2002-05-10 Don Porter * tests/load.test: @@ -7414,7 +7419,7 @@ * tests/fileName.test: * tests/load.test: * tests/main.test: - * tests/tcltest.test: + * tests/tcltest.test: * tests/unixInit.test: Fixes to test suite when there's a space in the working path. Thanks to Kevin Kenny. @@ -7435,9 +7440,9 @@ 2002-05-07 Vince Darley - * generic/tclFileName.c: fix to similar segfault when using + * generic/tclFileName.c: fix to similar segfault when using 'glob -types nonsense -dir dirname -join * *'. [Bug 553320] - + * doc/FileSystem.3: further documentation on vfs. * tests/cmdAH.test: * tests/fileSystem.test: @@ -7453,9 +7458,9 @@ 2002-05-02 Vince Darley - * generic/tclFileName.c: fix to freeing a bad object + * generic/tclFileName.c: fix to freeing a bad object (i.e. segfault) when using 'glob -types nonsense -dir dirname'. - * generic/tclWinFile.c: fix to [Bug 551306], also wrapped some + * generic/tclWinFile.c: fix to [Bug 551306], also wrapped some long lines. * tests/fileName.test: added several tests for the above bugs. * doc/FileSystem.3: clarified documentation on refCount @@ -7465,15 +7470,15 @@ * unix/tclUnixFile.c: * mac/tclMacFile.c: moved TclpFilesystemPathType to the platform specific directories, so we can add missing platform- - specific implementations. On Windows, 'file system' now returns - useful results like "native NTFS", "native FAT" for that system. + specific implementations. On Windows, 'file system' now returns + useful results like "native NTFS", "native FAT" for that system. Unix and MacOS still only return "native". * doc/file.n: clarified documentation. * tests/winFile.test: test for 'file system' returning correct values. * tests/fileSystem.test: test for 'file system' returning correct values. Clean up after failed previous test run. - + 2002-04-26 Jeff Hobbs * unix/configure: @@ -7495,7 +7500,7 @@ 2002-04-23 Jeff Hobbs - * doc/exec.n: + * doc/exec.n: * doc/tclvars.n: doc updates [Patch #509426] (gravereaux) 2002-04-24 Daniel Steffen @@ -7574,7 +7579,7 @@ 2002-04-19 Donal K. Fellows - * tests/lindex.test (lindex-3.7): + * tests/lindex.test (lindex-3.7): * generic/tclUtil.c (TclGetIntForIndex): Stopped indexes from hitting wide ints. [Bug #526717] @@ -7592,7 +7597,7 @@ 2002-04-18 Donal K. Fellows - * generic/tclCmdIL.c (InfoBodyCmd): + * generic/tclCmdIL.c (InfoBodyCmd): * tests/info.test (info-2.6): Proc bodies without string reps would report as empty [Bug #545644] @@ -7610,7 +7615,7 @@ 2002-04-17 Jeff Hobbs - * generic/tclEncoding.c (EscapeFromUtfProc): + * generic/tclEncoding.c (EscapeFromUtfProc): * generic/tclIO.c (WriteChars, Tcl_Close): corrected the handling of outputting end escapes for escape-based encodings. [Bug #526524] (yamamoto) @@ -7637,11 +7642,11 @@ * generic/tclProc.c: * tests/proc-old.test: Improved stack trace for TCL_BREAK and TCL_CONTINUE returns from procs. Patch by Don Porter - [Bug 536955]. - + [Bug 536955]. + * generic/tclExecute.c: * tests/compile.test: made bytecodes check for a catch before - returning; the compiled [return] is otherwise non-catchable. + returning; the compiled [return] is otherwise non-catchable. [Bug 542142] reported by Andreas Kupries. 2002-04-15 Don Porter @@ -7688,7 +7693,7 @@ * tests/cmdAH.test: * tests/encoding.test: * tests/fileSystem.test: - * tests/ioCmd.test: fixed tests failing on mac: check for + * tests/ioCmd.test: fixed tests failing on mac: check for existence of [exec], changed some result strings. 2002-04-06 Jeff Hobbs @@ -7719,14 +7724,14 @@ user changes env(HOME). Fixes [Bug #535621]. Also cleaned up some of the documentation. * tests/fileSystem.test: added test for bug just fixed. - + 2002-04-01 Kevin Kenny * win/tclWinTime.c (Tcl_GetTime): made the checks of clock frequency more permissive to cope with the fact that Win98SE is observed to return 1.19318 in place of 1.193182 for the performance counter frequency. - + 2002-03-29 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_TraceObjCmd, TraceVarProc) @@ -7789,7 +7794,7 @@ errors in the man files. Having the contents of tcl.hpj(.in) inside makefile.vc allows for version numbers to be replaced with macros. - + The new nmakehlp.c is built by rules.vc in preprocessing and removes the need to use tricky shell syntax that wasn't compatible on Win9x systems. Clean targets made Win9x complient. This is a first draft @@ -7803,8 +7808,8 @@ 2002-03-28 Miguel Sofer * generic/tclBasic.c (Tcl_EvalEx): - * tests/basic.test: avoid exceptional returns at level 0 - [Bug 219181] + * tests/basic.test: avoid exceptional returns at level 0 + [Bug 219181] 2002-03-27 Don Porter @@ -7865,20 +7870,20 @@ * doc/file.n: * tests/cmdAH.test: * tests/fileName.test: - * tests/fileSystem.test: (new file) + * tests/fileSystem.test: (new file) * tests/winFCmd.test: fix [Bug 511666] and [Bug 511658], and improved documentation of some aspects of the filesystem, particularly 'Tcl_FSMatchInDirectory' which now might match a single file/directory only, and 'file normalize' which wasn't very clear before. Removed inconsistency betweens - docs and the Tcl_Filesystem structure. Also fixed - [Bug 523217] and corrected file normalization on Unix so that - it expands symbolic links. Added some new tests of the - filesystem code (in the new file 'fileSystem.test'), and + docs and the Tcl_Filesystem structure. Also fixed + [Bug 523217] and corrected file normalization on Unix so that + it expands symbolic links. Added some new tests of the + filesystem code (in the new file 'fileSystem.test'), and some extra tests for correct handling of symbolic links. Fix to [Bug 530960] which shows up on Win98. Made comparison with ".com" case insensitive in tclWinPipe.c - + ***POTENTIAL INCOMPATIBILITY***: But only between alpha releases (users of the new Tcl_Filesystem lookup table in Tcl 8.4a4 need to handle the new way in which Tcl may call @@ -7890,7 +7895,7 @@ * tests/basic.test (basic-46.1): adding test for [Bug 533758], fixed earlier today. - + 2002-03-22 Jeff Hobbs * win/tclWinInt.h: moved undef of TCL_STORAGE_CLASS. [Bug #478579] @@ -7899,7 +7904,7 @@ * generic/tclBasic.c (Tcl_EvalObjEx): * generic/tclExecute.c (TclCompEvalObj): fixed the errorInfo for - return codes other than (TCL_OK, TCL_ERROR) to runLevel 0 + return codes other than (TCL_OK, TCL_ERROR) to runLevel 0 [Bug 533758]. Removed the static RecordTracebackInfo(), as its functionality is easily replicated by Tcl_LogCommandInfo. Bug and redundancy noted by Don Porter. @@ -7929,7 +7934,7 @@ TclSetVar2Ex): Updated interfaces of generic/tclVar.c according to TIP 27. In particular, the "part2" arguments were CONSTified. [Patch 532642] - * generic/tclDecls.h: + * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs 2002-03-15 Donal K. Fellows @@ -8029,7 +8034,7 @@ * generic/tclInt.h: for unshared objects, TclDecrRefCount now frees the internal rep before the string rep - just like the - non-macro Tcl_DecrRefCount/TclFreeObj [Bug 524802]. + non-macro Tcl_DecrRefCount/TclFreeObj [Bug 524802]. 2002-03-06 Donal K. Fellows @@ -8073,8 +8078,8 @@ 2002-03-01 Jeff Hobbs - * library/encoding/iso2022-jp.enc: - * library/encoding/iso2022.enc: + * library/encoding/iso2022-jp.enc: + * library/encoding/iso2022.enc: * tools/encoding/iso2022-jp.esc: * tools/encoding/iso2022.esc: gave $B precedence over $@, based on comments (point 1) in [Bug #219283] (rfc 1468) @@ -8101,11 +8106,11 @@ * generic/tclNamesp.c: allow cached fully-qualified namespace names to be usable from different namespaces within the same - interpreter without forcing a new lookup [Patch 458872]. + interpreter without forcing a new lookup [Patch 458872]. 2002-02-28 Miguel Sofer - * generic/tclExecute.c: Replaced a few direct stack accesses + * generic/tclExecute.c: Replaced a few direct stack accesses with the POP_OBJECT() macro [Bug 507181] (Don Porter). 2002-02-27 Don Porter @@ -8229,9 +8234,9 @@ bodies, the exception range parameters were badly computed. Tests forthcoming: I still can't reproduce the conditions in the testsuite (!), although the bug (with assorted segfault or panic!) - can be triggered from the console or with the new parse.bench in + can be triggered from the console or with the new parse.bench in tclbench. - + 2002-02-25 Donal K. Fellows * compat/strtoul.c, compat/strtol.c, compat/strtod.c: Added UCHAR, @@ -8280,7 +8285,7 @@ * generic/tclCompCmds: [FR 465811]. Optimising [if], [for] and [while] for constant conditions; in addition, [for] and [while] are now compiled with the "loop rotation" optimisation (thanks to - Kevin Kenny). + Kevin Kenny). 2002-02-22 Donal K. Fellows @@ -8290,8 +8295,8 @@ * doc/regsub.n: Updated docs. * tests/regexp.test: Updated and added tests. - * compat/strtoll.c (strtoll): - * compat/strtoull.c (strtoull): + * compat/strtoll.c (strtoll): + * compat/strtoull.c (strtoull): * unix/tclUnixPort.h: * win/tclWinPort.h: Const-ing 64-bit compatability declarations. Note that the return pointer is non-const because it is entirely @@ -8416,7 +8421,7 @@ * tests/get.test: * win/Makefile.vc: Further tweaks to the TIP 72 patch to make it compile under VC++. - + 2002-02-15 Andreas Kupries * tclExecute.c: @@ -8468,7 +8473,7 @@ ***POTENTIAL INCOMPATIBILITY***: Extracted from the TIP - SUMMARY OF INCOMPATIBILITIES AND FIXES + SUMMARY OF INCOMPATIBILITIES AND FIXES ====================================== The behaviour of expressions containing constants that appear @@ -8531,7 +8536,7 @@ * generic/tclDecls.h: * generic/tclStubInit.c: Regenerated Stubs tables. - + 2002-02-08 Jeff Hobbs * unix/configure: @@ -8574,7 +8579,7 @@ Tcl_DStringAppendElement, Tcl_JoinPath, Tcl_TranslateFileName, Tcl_ExternalToUtfDString, Tcl_UtfToExternalDString, Tcl_UniCharToUtfDString, Tcl_GetCwd, Tcl_WinTCharToUtf. Also - restored Tcl_WinUtfToTChar to return (TCHAR *) and + restored Tcl_WinUtfToTChar to return (TCHAR *) and Tcl_UtfToUniCharDString to return (Tcl_UniChar *). Modified some callers. This change recognizes that Tcl_DStrings are de-facto white-box objects. @@ -8747,7 +8752,7 @@ Make -eofchar and -translation options read only for server sockets. [Bug 496733] - + * generic/tclIO.c (Tcl_GetChannelOption, Tcl_SetChannelOption): Instead of returning nothing for the -translation option on a server socket, always return "auto". Return the empty @@ -8853,7 +8858,7 @@ Tcl_ExternalToUtfDString,Tcl_UtfToExternalDString, OpenEncodingFile, LoadEscapeEncoding): * generic/tclFileName.c (DoTildeSubst,Tcl_JoinPath,Tcl_SplitPath, - Tcl_TranslateFileName): + Tcl_TranslateFileName): * generic/tclIOUtil.c (Tcl_FSMatchInDirectory): * generic/tclPipe.c (FileForRedirect,TclCreatePipeline, Tcl_OpenCommandChannel): @@ -8866,11 +8871,11 @@ generic/tclUtil.c, generic/tclVar.c and mac/tclMacResource.c according to TIP 27. Tcl_TranslateFileName rewritten as wrapper around VFS-aware version. - ***POTENTIAL INCOMPATIBILITY*** + ***POTENTIAL INCOMPATIBILITY*** Includes source incompatibilities: argv arguments of Tcl_Concat, Tcl_JoinPath, Tcl_OpenCommandChannel, Tcl_Merge; argvPtr arguments of Tcl_SplitList and Tcl_SplitPath. - * generic/tclDecls.h: + * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs * generic/tclCkalloc.c (MemoryCmd): @@ -8990,7 +8995,7 @@ * generic/tcl.decls (Tcl_TraceCommand,Tcl_UntraceCommand, Tcl_CommandTraceInfo): * generic/tclCmdMZ.c (Tcl_TraceCommand,Tcl_UntraceCommand, - Tcl_CommandTraceInfo): Updated APIs in generic/tclCmdMZ.c + Tcl_CommandTraceInfo): Updated APIs in generic/tclCmdMZ.c according to the guidelines of TIP 27. * generic/tclDecls.h: make genstubs @@ -9053,7 +9058,7 @@ * generic/tclIndexObj.c (Tcl_GetIndexFromObj,Tcl_GetIndexFromObjStruct): More TIP 27 updates in tclIOUtil.c and tclIndexObj.c that were overlooked before. [Patch 504671] - ***POTENTIAL INCOMPATIBILITY*** + ***POTENTIAL INCOMPATIBILITY*** Includes a source incompatibility in the tablePtr arguments of the Tcl_GetIndexFromObj* routines. * generic/tclDecls.h: make genstubs @@ -9103,7 +9108,7 @@ * mac/tclMacLoad.c (TclpLoadFile): * win/tclWinFile.c (TclpGetUserHome): Updated callers. - * generic/tclDecls.h: + * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs * doc/ParseCmd.3 (Tcl_ParseVar): @@ -9127,7 +9132,7 @@ Tcl_CreateSlave, Tcl_GetAlias, Tcl_GetAliasObj, Tcl_GetSlave): Updated APIs in the file generic/tclInterp.c according to the guidelines of TIP 27. [Patch 501371] - ***POTENTIAL INCOMPATIBILITY*** + ***POTENTIAL INCOMPATIBILITY*** Includes a source incompatibility in the targetCmdPtr arguments of the Tcl_GetAlias* routines. @@ -9230,7 +9235,7 @@ * win/configure.in: Use ${libdir} instead of ${exec_prefix}/lib to properly support the --libdir option to configure. [Bug 489370] -2002-01-11 Andreas Kupries +2002-01-11 Andreas Kupries * win/tclWinSerial.c (SerialSetOptionProc): Applied patch for SF bug #500348 supplied by Rolf Schroedter @@ -9254,12 +9259,12 @@ 2002-01-10 Don Porter , Kevin Kenny - + * unix/tclLoadDld.c (TclpLoadFile): syntax error: unbalanced parens. Kevin notes that it's far from clear that this file is ever included in an actual build; Linux without dlopen appears to be a nonexistent configuration. - + 2002-01-08 Don Porter , Kevin Kenny @@ -9278,7 +9283,7 @@ * unix/tclLoadNext.c (TclGuessPackageName): * unix/tclLoadOSF.c (TclGuessPackageName): * unix/tclLoadShl.c (TclGuessPackageName): - * win/tclWinLoad.c (TclGuessPackageName): Updated APIs in + * win/tclWinLoad.c (TclGuessPackageName): Updated APIs in the files */tcl*Load*.c according to the guidelines of TIP 27. [Patch 501096] diff --git a/doc/Tcl.n b/doc/Tcl.n index af6bd69..e497a06 100644 --- a/doc/Tcl.n +++ b/doc/Tcl.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Tcl.n,v 1.9 2003/02/01 19:48:23 kennykb Exp $ +'\" RCS: @(#) $Id: Tcl.n,v 1.9.2.1 2005/12/19 10:09:50 dkf Exp $ '\" .so man.macros .TH Tcl n "8.1" Tcl "Tcl Built-In Commands" @@ -76,7 +76,8 @@ characters between them. There may be any number of command substitutions in a single word. Command substitution is not performed on words enclosed in braces. .IP "[7] \fBVariable substitution.\fR" -If a word contains a dollar-sign (``$'') then Tcl performs \fIvariable +If a word contains a dollar-sign (``$'') followed by one of the forms +described below, then Tcl performs \fIvariable substitution\fR: the dollar-sign and the following characters are replaced in the word by the value of a variable. Variable substitution may take any of the following forms: -- cgit v0.12 From 10d55ac03132aa4b7caa60831c65e2c9c483f573 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 20 Dec 2005 22:16:33 +0000 Subject: Use %ld instead of %d in Tcl_GetMemoryInfo --- ChangeLog | 5 +++++ generic/tclThreadAlloc.c | 18 +++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9716b22..e4ec9c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-12-20 Donal K. Fellows + + * generic/tclThreadAlloc.c (Tcl_GetMemoryInfo): Format values as longs + and not ints, so they are less likely to wrap on 64-bit machines. + 2005-12-19 Donal K. Fellows * doc/Tcl.n: Clarify what is going on in variable substitution diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index 6b02906..69f0e9f 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.6 2005/04/07 11:27:17 vasiljevic Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.7 2005/12/20 22:16:34 dkf Exp $ */ #include "tclInt.h" @@ -90,12 +90,12 @@ typedef struct Block { typedef struct Bucket { Block *firstPtr; - int nfree; - int nget; - int nput; - int nwait; - int nlock; - int nrequest; + long nfree; + long nget; + long nput; + long nwait; + long nlock; + long nrequest; } Bucket; /* @@ -637,8 +637,8 @@ Tcl_GetMemoryInfo(Tcl_DString *dsPtr) Tcl_DStringAppendElement(dsPtr, buf); } for (n = 0; n < NBUCKETS; ++n) { - sprintf(buf, "%d %d %d %d %d %d %d", - (int) binfo[n].blocksize, + sprintf(buf, "%lu %ld %ld %ld %ld %ld %ld", + (unsigned long) binfo[n].blocksize, cachePtr->buckets[n].nfree, cachePtr->buckets[n].nget, cachePtr->buckets[n].nput, -- cgit v0.12 From 32dabb168bc76e93bb522c8de30e3023df038a0f Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 27 Dec 2005 17:59:37 +0000 Subject: Import of libtommath 0.37 --- libtommath/bn.pdf | Bin 340681 -> 341050 bytes libtommath/bn.tex | 2 +- libtommath/bn_mp_add_d.c | 7 +- libtommath/bn_mp_radix_size.c | 6 +- libtommath/bn_mp_read_radix.c | 7 +- libtommath/bn_mp_sub_d.c | 8 +- libtommath/bn_mp_toradix_n.c | 19 +- libtommath/booker.pl | 2 +- libtommath/changes.txt | 6 + libtommath/makefile | 19 +- libtommath/makefile.bcc | 2 +- libtommath/makefile.shared | 10 +- libtommath/poster.pdf | Bin 37805 -> 37800 bytes libtommath/pre_gen/mpi.c | 503 +++++++++++++++++++++--------------------- libtommath/tommath.pdf | Bin 1159821 -> 1160280 bytes libtommath/tommath.src | 2 +- libtommath/tommath.tex | 232 +++++++++---------- 17 files changed, 431 insertions(+), 394 deletions(-) diff --git a/libtommath/bn.pdf b/libtommath/bn.pdf index 0124c71..b54b602 100644 Binary files a/libtommath/bn.pdf and b/libtommath/bn.pdf differ diff --git a/libtommath/bn.tex b/libtommath/bn.tex index 8b37766..f89e200 100644 --- a/libtommath/bn.tex +++ b/libtommath/bn.tex @@ -49,7 +49,7 @@ \begin{document} \frontmatter \pagestyle{empty} -\title{LibTomMath User Manual \\ v0.36} +\title{LibTomMath User Manual \\ v0.37} \author{Tom St Denis \\ tomstdenis@iahu.ca} \maketitle This text, the library and the accompanying textbook are all hereby placed in the public domain. This book has been diff --git a/libtommath/bn_mp_add_d.c b/libtommath/bn_mp_add_d.c index fde3cee..3dba671 100644 --- a/libtommath/bn_mp_add_d.c +++ b/libtommath/bn_mp_add_d.c @@ -40,6 +40,9 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c) /* fix sign */ a->sign = c->sign = MP_NEG; + /* clamp */ + mp_clamp(c); + return res; } @@ -105,5 +108,5 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_add_d.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/12/27 17:59:37 $ */ diff --git a/libtommath/bn_mp_radix_size.c b/libtommath/bn_mp_radix_size.c index 7c5d8b5..7e01577 100644 --- a/libtommath/bn_mp_radix_size.c +++ b/libtommath/bn_mp_radix_size.c @@ -36,7 +36,7 @@ int mp_radix_size (mp_int * a, int radix, int *size) } if (mp_iszero(a) == MP_YES) { - *size = 2; + *size = 2; return MP_OKAY; } @@ -74,5 +74,5 @@ int mp_radix_size (mp_int * a, int radix, int *size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_radix_size.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 17:59:38 $ */ diff --git a/libtommath/bn_mp_read_radix.c b/libtommath/bn_mp_read_radix.c index ca2bde5..1aea788 100644 --- a/libtommath/bn_mp_read_radix.c +++ b/libtommath/bn_mp_read_radix.c @@ -21,6 +21,9 @@ int mp_read_radix (mp_int * a, const char *str, int radix) int y, res, neg; char ch; + /* zero the digit bignum */ + mp_zero(a); + /* make sure the radix is ok */ if (radix < 2 || radix > 64) { return MP_VAL; @@ -78,5 +81,5 @@ int mp_read_radix (mp_int * a, const char *str, int radix) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_read_radix.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 17:59:38 $ */ diff --git a/libtommath/bn_mp_sub_d.c b/libtommath/bn_mp_sub_d.c index 0b31cbe..ffeea09 100644 --- a/libtommath/bn_mp_sub_d.c +++ b/libtommath/bn_mp_sub_d.c @@ -36,6 +36,10 @@ mp_sub_d (mp_int * a, mp_digit b, mp_int * c) a->sign = MP_ZPOS; res = mp_add_d(a, b, c); a->sign = c->sign = MP_NEG; + + /* clamp */ + mp_clamp(c); + return res; } @@ -85,5 +89,5 @@ mp_sub_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sub_d.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/12/27 17:59:38 $ */ diff --git a/libtommath/bn_mp_toradix_n.c b/libtommath/bn_mp_toradix_n.c index d07ba95..607a4be 100644 --- a/libtommath/bn_mp_toradix_n.c +++ b/libtommath/bn_mp_toradix_n.c @@ -27,12 +27,12 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) char *_s = str; /* check range of the maxlen, radix */ - if (maxlen < 3 || radix < 2 || radix > 64) { + if (maxlen < 2 || radix < 2 || radix > 64) { return MP_VAL; } /* quick out if its zero */ - if (mp_iszero(a) == 1) { + if (mp_iszero(a) == MP_YES) { *str++ = '0'; *str = '\0'; return MP_OKAY; @@ -57,21 +57,20 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) digs = 0; while (mp_iszero (&t) == 0) { + if (--maxlen < 1) { + /* no more room */ + break; + } if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { mp_clear (&t); return res; } *str++ = mp_s_rmap[d]; ++digs; - - if (--maxlen == 1) { - /* no more room */ - break; - } } /* reverse the digits of the string. In this case _s points - * to the first digit [exluding the sign] of the number] + * to the first digit [exluding the sign] of the number */ bn_reverse ((unsigned char *)_s, digs); @@ -85,5 +84,5 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_toradix_n.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2005/12/27 17:59:38 $ */ diff --git a/libtommath/booker.pl b/libtommath/booker.pl index f419ab4..df8b30d 100644 --- a/libtommath/booker.pl +++ b/libtommath/booker.pl @@ -221,7 +221,7 @@ while () { $str = "chapter eight"; } elsif ($a == 9) { $str = "chapter nine"; - } elsif ($a == 2) { + } elsif ($a == 10) { $str = "chapter ten"; } } else { diff --git a/libtommath/changes.txt b/libtommath/changes.txt index 4f27d63..1322d14 100644 --- a/libtommath/changes.txt +++ b/libtommath/changes.txt @@ -1,3 +1,9 @@ +November 18th, 2005 +v0.37 -- [Don Porter] reported on a TCL list [HEY SEND ME BUGREPORTS ALREADY!!!] that mp_add_d() would compute -0 with some inputs. Fixed. + -- [rinick@gmail.com] reported the makefile.bcc was messed up. Fixed. + -- [Kevin Kenny] reported some issues with mp_toradix_n(). Now it doesn't require a min of 3 chars of output. + -- Made the make command renamable. Wee + August 1st, 2005 v0.36 -- LTM_PRIME_2MSB_ON was fixed and the "OFF" flag was removed. -- [Peter LaDow] found a typo in the XREALLOC macro diff --git a/libtommath/makefile b/libtommath/makefile index a4697d4..192e842 100644 --- a/libtommath/makefile +++ b/libtommath/makefile @@ -3,10 +3,14 @@ #Tom St Denis #version of library -VERSION=0.36 +VERSION=0.37 CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare +ifndef MAKE + MAKE=make +endif + ifndef IGNORE_SPEED #for speed @@ -124,7 +128,7 @@ timing: $(LIBNAME) # makes the LTM book DVI file, requires tetex, perl and makeindex [part of tetex I think] docdvi: tommath.src - cd pics ; make + cd pics ; MAKE=${MAKE} ${MAKE} echo "hello" > tommath.ind perl booker.pl latex tommath > /dev/null @@ -141,7 +145,7 @@ poster: poster.tex docs: docdvi dvipdf tommath rm -f tommath.log tommath.aux tommath.dvi tommath.idx tommath.toc tommath.lof tommath.ind tommath.ilg - cd pics ; make clean + cd pics ; MAKE=${MAKE} ${MAKE} clean #LTM user manual mandvi: bn.tex @@ -161,10 +165,10 @@ pretty: clean: rm -f *.bat *.pdf *.o *.a *.obj *.lib *.exe *.dll etclib/*.o demo/demo.o test ltmtest mpitest mtest/mtest mtest/mtest.exe \ - *.idx *.toc *.log *.aux *.dvi *.lof *.ind *.ilg *.ps *.log *.s mpi.c *.da *.dyn *.dpi tommath.tex `find -type f | grep [~] | xargs` *.lo *.la + *.idx *.toc *.log *.aux *.dvi *.lof *.ind *.ilg *.ps *.log *.s mpi.c *.da *.dyn *.dpi tommath.tex `find . -type f | grep [~] | xargs` *.lo *.la rm -rf .libs - cd etc ; make clean - cd pics ; make clean + cd etc ; MAKE=${MAKE} ${MAKE} clean + cd pics ; MAKE=${MAKE} ${MAKE} clean #zipup the project (take that!) no_oops: clean @@ -177,4 +181,5 @@ zipup: clean manual poster docs cd .. ; rm -rf ltm* libtommath-$(VERSION) ; mkdir libtommath-$(VERSION) ; \ cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; \ tar -c libtommath-$(VERSION)/* | bzip2 -9vvc > ltm-$(VERSION).tar.bz2 ; \ - zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/* + zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/* ; \ + mv -f ltm* ~ ; rm -rf libtommath-$(VERSION) diff --git a/libtommath/makefile.bcc b/libtommath/makefile.bcc index 647c69a..67743d9 100644 --- a/libtommath/makefile.bcc +++ b/libtommath/makefile.bcc @@ -39,6 +39,6 @@ TARGET = libtommath.lib $(TARGET): $(OBJECTS) -.c.objbjbjbj: +.c.obj: $(CC) $(CFLAGS) $< $(LIB) $(TARGET) -+$@ diff --git a/libtommath/makefile.shared b/libtommath/makefile.shared index 821558c..9d2c20a 100644 --- a/libtommath/makefile.shared +++ b/libtommath/makefile.shared @@ -1,7 +1,7 @@ #Makefile for GCC # #Tom St Denis -VERSION=0:36 +VERSION=0:37 CC = libtool --mode=compile gcc @@ -80,11 +80,13 @@ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_ini bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o +objs: $(OBJECTS) + $(LIBNAME): $(OBJECTS) libtool --mode=link gcc *.lo -o $(LIBNAME) -rpath $(LIBPATH) -version-info $(VERSION) - libtool --mode=link gcc *.o -o $(LIBNAME_S) - ranlib $(LIBNAME_S) - libtool --mode=install install -c $(LIBNAME) $(LIBPATH)/$@ + +install: $(LIBNAME) + libtool --mode=install install -c $(LIBNAME) $(LIBPATH)/$(LIBNAME) install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) diff --git a/libtommath/poster.pdf b/libtommath/poster.pdf index 5a39a04..95bf4b3 100644 Binary files a/libtommath/poster.pdf and b/libtommath/poster.pdf differ diff --git a/libtommath/pre_gen/mpi.c b/libtommath/pre_gen/mpi.c index 78945ac..d915a58 100644 --- a/libtommath/pre_gen/mpi.c +++ b/libtommath/pre_gen/mpi.c @@ -44,8 +44,8 @@ char *mp_error_to_string(int code) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_error.c */ @@ -196,8 +196,8 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_fast_mp_invmod.c */ @@ -372,8 +372,8 @@ int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_fast_mp_montgomery_reduce.c */ @@ -486,8 +486,8 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_fast_s_mp_mul_digs.c */ @@ -591,8 +591,8 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_fast_s_mp_mul_high_digs.c */ @@ -709,8 +709,8 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_fast_s_mp_sqr.c */ @@ -761,8 +761,8 @@ mp_2expt (mp_int * a, int b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_2expt.c */ @@ -808,8 +808,8 @@ mp_abs (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_abs.c */ @@ -865,8 +865,8 @@ int mp_add (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_add.c */ @@ -913,6 +913,9 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c) /* fix sign */ a->sign = c->sign = MP_NEG; + /* clamp */ + mp_clamp(c); + return res; } @@ -978,8 +981,8 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_add_d.c */ @@ -1023,8 +1026,8 @@ mp_addmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_addmod.c */ @@ -1084,8 +1087,8 @@ mp_and (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_and.c */ @@ -1132,8 +1135,8 @@ mp_clamp (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_clamp.c */ @@ -1180,8 +1183,8 @@ mp_clear (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_clear.c */ @@ -1218,8 +1221,8 @@ void mp_clear_multi(mp_int *mp, ...) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_clear_multi.c */ @@ -1265,8 +1268,8 @@ mp_cmp (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_cmp.c */ @@ -1313,8 +1316,8 @@ int mp_cmp_d(mp_int * a, mp_digit b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_cmp_d.c */ @@ -1372,8 +1375,8 @@ int mp_cmp_mag (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_cmp_mag.c */ @@ -1429,8 +1432,8 @@ int mp_cnt_lsb(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_cnt_lsb.c */ @@ -1501,8 +1504,8 @@ mp_copy (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_copy.c */ @@ -1550,8 +1553,8 @@ mp_count_bits (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_count_bits.c */ @@ -1846,8 +1849,8 @@ LBL_Q:mp_clear (&q); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_div.c */ @@ -1918,8 +1921,8 @@ int mp_div_2(mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_div_2.c */ @@ -2019,8 +2022,8 @@ int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_div_2d.c */ @@ -2102,8 +2105,8 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_div_3.c */ @@ -2216,8 +2219,8 @@ int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_div_d.c */ @@ -2263,8 +2266,8 @@ int mp_dr_is_modulus(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_dr_is_modulus.c */ @@ -2361,8 +2364,8 @@ top: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_dr_reduce.c */ @@ -2397,8 +2400,8 @@ void mp_dr_setup(mp_int *a, mp_digit *d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_dr_setup.c */ @@ -2435,8 +2438,8 @@ mp_exch (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_exch.c */ @@ -2496,8 +2499,8 @@ int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_expt_d.c */ @@ -2612,8 +2615,8 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_exptmod.c */ @@ -2937,8 +2940,8 @@ LBL_M: /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_exptmod_fast.c */ @@ -3023,8 +3026,8 @@ _ERR: mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_exteuclid.c */ @@ -3094,8 +3097,8 @@ int mp_fread(mp_int *a, int radix, FILE *stream) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_fread.c */ @@ -3150,8 +3153,8 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_fwrite.c */ @@ -3267,8 +3270,8 @@ LBL_U:mp_clear (&v); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_gcd.c */ @@ -3316,8 +3319,8 @@ unsigned long mp_get_int(mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_get_int.c */ @@ -3377,8 +3380,8 @@ int mp_grow (mp_int * a, int size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_grow.c */ @@ -3427,8 +3430,8 @@ int mp_init (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_init.c */ @@ -3463,8 +3466,8 @@ int mp_init_copy (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_init_copy.c */ @@ -3526,8 +3529,8 @@ int mp_init_multi(mp_int *mp, ...) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_init_multi.c */ @@ -3562,8 +3565,8 @@ int mp_init_set (mp_int * a, mp_digit b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_init_set.c */ @@ -3597,8 +3600,8 @@ int mp_init_set_int (mp_int * a, unsigned long b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_init_set_int.c */ @@ -3649,8 +3652,8 @@ int mp_init_size (mp_int * a, int size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_init_size.c */ @@ -3696,8 +3699,8 @@ int mp_invmod (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_invmod.c */ @@ -3875,8 +3878,8 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_invmod_slow.c */ @@ -3988,8 +3991,8 @@ ERR:mp_clear(&t); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_is_square.c */ @@ -4097,8 +4100,8 @@ LBL_A1:mp_clear (&a1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_jacobi.c */ @@ -4268,8 +4271,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_karatsuba_mul.c */ @@ -4393,8 +4396,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_karatsuba_sqr.c */ @@ -4457,8 +4460,8 @@ LBL_T: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_lcm.c */ @@ -4528,8 +4531,8 @@ int mp_lshd (mp_int * a, int b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_lshd.c */ @@ -4580,8 +4583,8 @@ mp_mod (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_mod.c */ @@ -4639,8 +4642,8 @@ mp_mod_2d (mp_int * a, int b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_mod_2d.c */ @@ -4670,8 +4673,8 @@ mp_mod_d (mp_int * a, mp_digit b, mp_digit * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_mod_d.c */ @@ -4733,8 +4736,8 @@ int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_montgomery_calc_normalization.c */ @@ -4855,8 +4858,8 @@ mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_montgomery_reduce.c */ @@ -4918,8 +4921,8 @@ mp_montgomery_setup (mp_int * n, mp_digit * rho) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_montgomery_setup.c */ @@ -4988,8 +4991,8 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_mul.c */ @@ -5074,8 +5077,8 @@ int mp_mul_2(mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_mul_2.c */ @@ -5163,8 +5166,8 @@ int mp_mul_2d (mp_int * a, int b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_mul_2d.c */ @@ -5246,8 +5249,8 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_mul_d.c */ @@ -5290,8 +5293,8 @@ int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_mulmod.c */ @@ -5426,8 +5429,8 @@ LBL_T1:mp_clear (&t1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_n_root.c */ @@ -5470,8 +5473,8 @@ int mp_neg (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_neg.c */ @@ -5524,8 +5527,8 @@ int mp_or (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_or.c */ @@ -5590,8 +5593,8 @@ LBL_T:mp_clear (&t); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_prime_fermat.c */ @@ -5644,8 +5647,8 @@ int mp_prime_is_divisible (mp_int * a, int *result) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_prime_is_divisible.c */ @@ -5731,8 +5734,8 @@ LBL_B:mp_clear (&b); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_prime_is_prime.c */ @@ -5838,8 +5841,8 @@ LBL_N1:mp_clear (&n1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_prime_miller_rabin.c */ @@ -6012,8 +6015,8 @@ LBL_ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_prime_next_prime.c */ @@ -6068,8 +6071,8 @@ int mp_prime_rabin_miller_trials(int size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_prime_rabin_miller_trials.c */ @@ -6197,8 +6200,8 @@ error: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_prime_random_ex.c */ @@ -6241,7 +6244,7 @@ int mp_radix_size (mp_int * a, int radix, int *size) } if (mp_iszero(a) == MP_YES) { - *size = 2; + *size = 2; return MP_OKAY; } @@ -6279,8 +6282,8 @@ int mp_radix_size (mp_int * a, int radix, int *size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_radix_size.c */ @@ -6307,8 +6310,8 @@ const char *mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_radix_smap.c */ @@ -6366,8 +6369,8 @@ mp_rand (mp_int * a, int digits) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_rand.c */ @@ -6395,6 +6398,9 @@ int mp_read_radix (mp_int * a, const char *str, int radix) int y, res, neg; char ch; + /* zero the digit bignum */ + mp_zero(a); + /* make sure the radix is ok */ if (radix < 2 || radix > 64) { return MP_VAL; @@ -6452,8 +6458,8 @@ int mp_read_radix (mp_int * a, const char *str, int radix) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_read_radix.c */ @@ -6497,8 +6503,8 @@ int mp_read_signed_bin (mp_int * a, const unsigned char *b, int c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_read_signed_bin.c */ @@ -6556,8 +6562,8 @@ int mp_read_unsigned_bin (mp_int * a, const unsigned char *b, int c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_read_unsigned_bin.c */ @@ -6660,8 +6666,8 @@ CLEANUP: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_reduce.c */ @@ -6725,8 +6731,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_reduce_2k.c */ @@ -6791,8 +6797,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_reduce_2k_l.c */ @@ -6842,8 +6848,8 @@ int mp_reduce_2k_setup(mp_int *a, mp_digit *d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_reduce_2k_setup.c */ @@ -6890,8 +6896,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_reduce_2k_setup_l.c */ @@ -6946,8 +6952,8 @@ int mp_reduce_is_2k(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_reduce_is_2k.c */ @@ -6994,8 +7000,8 @@ int mp_reduce_is_2k_l(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_reduce_is_2k_l.c */ @@ -7032,8 +7038,8 @@ int mp_reduce_setup (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_reduce_setup.c */ @@ -7108,8 +7114,8 @@ void mp_rshd (mp_int * a, int b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_rshd.c */ @@ -7141,8 +7147,8 @@ void mp_set (mp_int * a, mp_digit b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_set.c */ @@ -7193,8 +7199,8 @@ int mp_set_int (mp_int * a, unsigned long b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_set_int.c */ @@ -7232,8 +7238,8 @@ int mp_shrink (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_shrink.c */ @@ -7263,8 +7269,8 @@ int mp_signed_bin_size (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_signed_bin_size.c */ @@ -7325,8 +7331,8 @@ if (a->used >= KARATSUBA_SQR_CUTOFF) { #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_sqr.c */ @@ -7370,8 +7376,8 @@ mp_sqrmod (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_sqrmod.c */ @@ -7455,8 +7461,8 @@ E2: mp_clear(&t1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_sqrt.c */ @@ -7518,8 +7524,8 @@ mp_sub (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_sub.c */ @@ -7562,6 +7568,10 @@ mp_sub_d (mp_int * a, mp_digit b, mp_int * c) a->sign = MP_ZPOS; res = mp_add_d(a, b, c); a->sign = c->sign = MP_NEG; + + /* clamp */ + mp_clamp(c); + return res; } @@ -7611,8 +7621,8 @@ mp_sub_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_sub_d.c */ @@ -7657,8 +7667,8 @@ mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_submod.c */ @@ -7694,8 +7704,8 @@ int mp_to_signed_bin (mp_int * a, unsigned char *b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_to_signed_bin.c */ @@ -7729,8 +7739,8 @@ int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_to_signed_bin_n.c */ @@ -7781,8 +7791,8 @@ int mp_to_unsigned_bin (mp_int * a, unsigned char *b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_to_unsigned_bin.c */ @@ -7816,8 +7826,8 @@ int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_to_unsigned_bin_n.c */ @@ -8104,8 +8114,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_toom_mul.c */ @@ -8334,8 +8344,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_toom_sqr.c */ @@ -8413,8 +8423,8 @@ int mp_toradix (mp_int * a, char *str, int radix) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_toradix.c */ @@ -8448,12 +8458,12 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) char *_s = str; /* check range of the maxlen, radix */ - if (maxlen < 3 || radix < 2 || radix > 64) { + if (maxlen < 2 || radix < 2 || radix > 64) { return MP_VAL; } /* quick out if its zero */ - if (mp_iszero(a) == 1) { + if (mp_iszero(a) == MP_YES) { *str++ = '0'; *str = '\0'; return MP_OKAY; @@ -8478,21 +8488,20 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) digs = 0; while (mp_iszero (&t) == 0) { + if (--maxlen < 1) { + /* no more room */ + break; + } if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { mp_clear (&t); return res; } *str++ = mp_s_rmap[d]; ++digs; - - if (--maxlen == 1) { - /* no more room */ - break; - } } /* reverse the digits of the string. In this case _s points - * to the first digit [exluding the sign] of the number] + * to the first digit [exluding the sign] of the number */ bn_reverse ((unsigned char *)_s, digs); @@ -8506,8 +8515,8 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_toradix_n.c */ @@ -8538,8 +8547,8 @@ int mp_unsigned_bin_size (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_unsigned_bin_size.c */ @@ -8593,8 +8602,8 @@ mp_xor (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_xor.c */ @@ -8633,8 +8642,8 @@ void mp_zero (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_mp_zero.c */ @@ -8698,8 +8707,8 @@ const mp_digit ltm_prime_tab[] = { #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_prime_tab.c */ @@ -8741,8 +8750,8 @@ bn_reverse (unsigned char *s, int len) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_reverse.c */ @@ -8854,8 +8863,8 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_s_mp_add.c */ @@ -9110,8 +9119,8 @@ LBL_M: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_s_mp_exptmod.c */ @@ -9204,8 +9213,8 @@ int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_s_mp_mul_digs.c */ @@ -9289,8 +9298,8 @@ s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_s_mp_mul_high_digs.c */ @@ -9377,8 +9386,8 @@ int s_mp_sqr (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_s_mp_sqr.c */ @@ -9470,8 +9479,8 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bn_s_mp_sub.c */ @@ -9510,8 +9519,8 @@ int KARATSUBA_MUL_CUTOFF = 80, /* Min. number of digits before Karatsub #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:22 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2005/12/27 18:00:26 $ */ /* End: bncore.c */ diff --git a/libtommath/tommath.pdf b/libtommath/tommath.pdf index 71ddffe..5c314f5 100644 Binary files a/libtommath/tommath.pdf and b/libtommath/tommath.pdf differ diff --git a/libtommath/tommath.src b/libtommath/tommath.src index b392ead..8e03635 100644 --- a/libtommath/tommath.src +++ b/libtommath/tommath.src @@ -66,7 +66,7 @@ QUALCOMM Australia \\ } } \maketitle -This text has been placed in the public domain. This text corresponds to the v0.36 release of the +This text has been placed in the public domain. This text corresponds to the v0.37 release of the LibTomMath project. \begin{alltt} diff --git a/libtommath/tommath.tex b/libtommath/tommath.tex index b69421b..a852a8d 100644 --- a/libtommath/tommath.tex +++ b/libtommath/tommath.tex @@ -66,7 +66,7 @@ QUALCOMM Australia \\ } } \maketitle -This text has been placed in the public domain. This text corresponds to the v0.36 release of the +This text has been placed in the public domain. This text corresponds to the v0.37 release of the LibTomMath project. \begin{alltt} @@ -8808,70 +8808,73 @@ This algorithm initiates a temporary mp\_int with the value of the single digit 039 /* fix sign */ 040 a->sign = c->sign = MP_NEG; 041 -042 return res; -043 \} +042 /* clamp */ +043 mp_clamp(c); 044 -045 /* old number of used digits in c */ -046 oldused = c->used; +045 return res; +046 \} 047 -048 /* sign always positive */ -049 c->sign = MP_ZPOS; +048 /* old number of used digits in c */ +049 oldused = c->used; 050 -051 /* source alias */ -052 tmpa = a->dp; +051 /* sign always positive */ +052 c->sign = MP_ZPOS; 053 -054 /* destination alias */ -055 tmpc = c->dp; +054 /* source alias */ +055 tmpa = a->dp; 056 -057 /* if a is positive */ -058 if (a->sign == MP_ZPOS) \{ -059 /* add digit, after this we're propagating -060 * the carry. -061 */ -062 *tmpc = *tmpa++ + b; -063 mu = *tmpc >> DIGIT_BIT; -064 *tmpc++ &= MP_MASK; -065 -066 /* now handle rest of the digits */ -067 for (ix = 1; ix < a->used; ix++) \{ -068 *tmpc = *tmpa++ + mu; -069 mu = *tmpc >> DIGIT_BIT; -070 *tmpc++ &= MP_MASK; -071 \} -072 /* set final carry */ -073 ix++; -074 *tmpc++ = mu; -075 -076 /* setup size */ -077 c->used = a->used + 1; -078 \} else \{ -079 /* a was negative and |a| < b */ -080 c->used = 1; -081 -082 /* the result is a single digit */ -083 if (a->used == 1) \{ -084 *tmpc++ = b - a->dp[0]; -085 \} else \{ -086 *tmpc++ = b; -087 \} -088 -089 /* setup count so the clearing of oldused -090 * can fall through correctly -091 */ -092 ix = 1; -093 \} -094 -095 /* now zero to oldused */ -096 while (ix++ < oldused) \{ -097 *tmpc++ = 0; -098 \} -099 mp_clamp(c); -100 -101 return MP_OKAY; -102 \} +057 /* destination alias */ +058 tmpc = c->dp; +059 +060 /* if a is positive */ +061 if (a->sign == MP_ZPOS) \{ +062 /* add digit, after this we're propagating +063 * the carry. +064 */ +065 *tmpc = *tmpa++ + b; +066 mu = *tmpc >> DIGIT_BIT; +067 *tmpc++ &= MP_MASK; +068 +069 /* now handle rest of the digits */ +070 for (ix = 1; ix < a->used; ix++) \{ +071 *tmpc = *tmpa++ + mu; +072 mu = *tmpc >> DIGIT_BIT; +073 *tmpc++ &= MP_MASK; +074 \} +075 /* set final carry */ +076 ix++; +077 *tmpc++ = mu; +078 +079 /* setup size */ +080 c->used = a->used + 1; +081 \} else \{ +082 /* a was negative and |a| < b */ +083 c->used = 1; +084 +085 /* the result is a single digit */ +086 if (a->used == 1) \{ +087 *tmpc++ = b - a->dp[0]; +088 \} else \{ +089 *tmpc++ = b; +090 \} +091 +092 /* setup count so the clearing of oldused +093 * can fall through correctly +094 */ +095 ix = 1; +096 \} +097 +098 /* now zero to oldused */ +099 while (ix++ < oldused) \{ +100 *tmpc++ = 0; +101 \} +102 mp_clamp(c); 103 -104 #endif -105 +104 return MP_OKAY; +105 \} +106 +107 #endif +108 \end{alltt} \end{small} @@ -9481,62 +9484,65 @@ as part of larger input without any significant problem. 020 int y, res, neg; 021 char ch; 022 -023 /* make sure the radix is ok */ -024 if (radix < 2 || radix > 64) \{ -025 return MP_VAL; -026 \} -027 -028 /* if the leading digit is a -029 * minus set the sign to negative. -030 */ -031 if (*str == '-') \{ -032 ++str; -033 neg = MP_NEG; -034 \} else \{ -035 neg = MP_ZPOS; -036 \} -037 -038 /* set the integer to the default of zero */ -039 mp_zero (a); -040 -041 /* process each digit of the string */ -042 while (*str) \{ -043 /* if the radix < 36 the conversion is case insensitive -044 * this allows numbers like 1AB and 1ab to represent the same value -045 * [e.g. in hex] -046 */ -047 ch = (char) ((radix < 36) ? toupper (*str) : *str); -048 for (y = 0; y < 64; y++) \{ -049 if (ch == mp_s_rmap[y]) \{ -050 break; -051 \} -052 \} -053 -054 /* if the char was found in the map -055 * and is less than the given radix add it -056 * to the number, otherwise exit the loop. -057 */ -058 if (y < radix) \{ -059 if ((res = mp_mul_d (a, (mp_digit) radix, a)) != MP_OKAY) \{ -060 return res; -061 \} -062 if ((res = mp_add_d (a, (mp_digit) y, a)) != MP_OKAY) \{ +023 /* zero the digit bignum */ +024 mp_zero(a); +025 +026 /* make sure the radix is ok */ +027 if (radix < 2 || radix > 64) \{ +028 return MP_VAL; +029 \} +030 +031 /* if the leading digit is a +032 * minus set the sign to negative. +033 */ +034 if (*str == '-') \{ +035 ++str; +036 neg = MP_NEG; +037 \} else \{ +038 neg = MP_ZPOS; +039 \} +040 +041 /* set the integer to the default of zero */ +042 mp_zero (a); +043 +044 /* process each digit of the string */ +045 while (*str) \{ +046 /* if the radix < 36 the conversion is case insensitive +047 * this allows numbers like 1AB and 1ab to represent the same value +048 * [e.g. in hex] +049 */ +050 ch = (char) ((radix < 36) ? toupper (*str) : *str); +051 for (y = 0; y < 64; y++) \{ +052 if (ch == mp_s_rmap[y]) \{ +053 break; +054 \} +055 \} +056 +057 /* if the char was found in the map +058 * and is less than the given radix add it +059 * to the number, otherwise exit the loop. +060 */ +061 if (y < radix) \{ +062 if ((res = mp_mul_d (a, (mp_digit) radix, a)) != MP_OKAY) \{ 063 return res; 064 \} -065 \} else \{ -066 break; -067 \} -068 ++str; -069 \} -070 -071 /* set the sign only if a != 0 */ -072 if (mp_iszero(a) != 1) \{ -073 a->sign = neg; -074 \} -075 return MP_OKAY; -076 \} -077 #endif -078 +065 if ((res = mp_add_d (a, (mp_digit) y, a)) != MP_OKAY) \{ +066 return res; +067 \} +068 \} else \{ +069 break; +070 \} +071 ++str; +072 \} +073 +074 /* set the sign only if a != 0 */ +075 if (mp_iszero(a) != 1) \{ +076 a->sign = neg; +077 \} +078 return MP_OKAY; +079 \} +080 #endif +081 \end{alltt} \end{small} -- cgit v0.12 From 38ee79dc06785b01c4638025cb206a4bd275d29f Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 9 Jan 2006 18:34:17 +0000 Subject: * generic/tclNamesp.c (NamespaceInscopeCmd): [namespace inscope] * tests/namespace.test: commands were not reported by [info level] [Bug 1400572]. --- ChangeLog | 6 ++++++ generic/tclNamesp.c | 8 +++++--- tests/namespace.test | 9 ++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index e4ec9c9..9d2fb29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-01-09 Don Porter + + * generic/tclNamesp.c (NamespaceInscopeCmd): [namespace inscope] + * tests/namespace.test: commands were not reported by [info level] + [Bug 1400572]. + 2005-12-20 Donal K. Fellows * generic/tclThreadAlloc.c (Tcl_GetMemoryInfo): Format values as longs diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 0400c1e..1d12831 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.10 2005/11/18 23:07:27 msofer Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.11 2006/01/09 18:34:17 dgp Exp $ */ #include "tclInt.h" @@ -3357,7 +3357,7 @@ NamespaceInscopeCmd(dummy, interp, objc, objv) Tcl_Obj *CONST objv[]; /* Argument objects. */ { Tcl_Namespace *namespacePtr; - Tcl_CallFrame frame; + CallFrame frame; int i, result; if (objc < 4) { @@ -3384,11 +3384,13 @@ NamespaceInscopeCmd(dummy, interp, objc, objv) * Make the specified namespace the current namespace. */ - result = Tcl_PushCallFrame(interp, &frame, namespacePtr, + result = Tcl_PushCallFrame(interp, (Tcl_CallFrame *)&frame, namespacePtr, /*isProcCallFrame*/ 0); if (result != TCL_OK) { return result; } + frame.objc = objc; + frame.objv = objv; /* * Execute the command. If there is just one argument, just treat it as diff --git a/tests/namespace.test b/tests/namespace.test index 2c36171..68d0c66 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21.2.8 2005/11/18 23:07:27 msofer Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.9 2006/01/09 18:34:18 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1006,6 +1006,9 @@ test namespace-25.8 {NamespaceEvalCmd, error in eval'd script} knownBug { invoked from within "namespace eval test_ns_1 error foo bar baz"}} catch {unset v} +test namespace-25.9 {NamespaceEvalCmd, 545325} { + namespace eval test_ns_1 info level 0 +} {namespace eval test_ns_1 info level 0} test namespace-26.1 {NamespaceExportCmd, no args and new ns} { catch {eval namespace delete [namespace children :: test_ns_*]} @@ -1120,6 +1123,10 @@ test namespace-29.5 {NamespaceInscopeCmd, has lappend semantics} { list [namespace inscope test_ns_1 cmd x y z] \ [namespace eval test_ns_1 [concat cmd [list x y z]]] } {{::test_ns_1::cmd: v=747, args=x y z} {::test_ns_1::cmd: v=747, args=x y z}} +test namespace-29.6 {NamespaceInscopeCmd, 1400572} { + namespace inscope test_ns_1 {info level 0} +} {namespace inscope test_ns_1 {info level 0}} + test namespace-30.1 {NamespaceOriginCmd, bad args} { catch {eval namespace delete [namespace children :: test_ns_*]} -- cgit v0.12 From 8eaa65820026962a38882685aa573977b5b9069a Mon Sep 17 00:00:00 2001 From: das Date: Tue, 10 Jan 2006 05:37:01 +0000 Subject: * unix/configure: add caching, use AC_CACHE_CHECK instead of * unix/configure.in: AC_CACHE_VAL where possible, consistent message * unix/tcl.m4: quoting, sync relevant tclconfig/tcl.m4 and HEAD changes and gratuitous formatting differences, fix SC_CONFIG_MANPAGES with default argument, Darwin improvements to SC_LOAD_*CONFIG. --- ChangeLog | 8 + unix/configure | 1267 +++++++++++++++++++++++++++++------------------------ unix/configure.in | 142 +++--- unix/tcl.m4 | 476 ++++++++++++-------- 4 files changed, 1051 insertions(+), 842 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9d2fb29..25eb9fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-01-10 Daniel Steffen + + * unix/configure: add caching, use AC_CACHE_CHECK instead of + * unix/configure.in: AC_CACHE_VAL where possible, consistent message + * unix/tcl.m4: quoting, sync relevant tclconfig/tcl.m4 and HEAD + changes and gratuitous formatting differences, fix SC_CONFIG_MANPAGES + with default argument, Darwin improvements to SC_LOAD_*CONFIG. + 2006-01-09 Don Porter * generic/tclNamesp.c (NamespaceInscopeCmd): [namespace inscope] diff --git a/unix/configure b/unix/configure index 97281c5..5ce4285 100755 --- a/unix/configure +++ b/unix/configure @@ -575,8 +575,9 @@ TCL_SRC_DIR=`cd $srcdir/..; pwd` # Compress and/or soft link the manpages? #------------------------------------------------------------------------ + echo $ac_n "checking whether to use symlinks for manpages""... $ac_c" 1>&6 -echo "configure:580: checking whether to use symlinks for manpages" >&5 +echo "configure:581: checking whether to use symlinks for manpages" >&5 # Check whether --enable-man-symlinks or --disable-man-symlinks was given. if test "${enable_man_symlinks+set}" = set; then enableval="$enable_man_symlinks" @@ -588,12 +589,15 @@ fi echo "$ac_t""$enableval" 1>&6 echo $ac_n "checking whether to compress the manpages""... $ac_c" 1>&6 -echo "configure:592: checking whether to compress the manpages" >&5 +echo "configure:593: checking whether to compress the manpages" >&5 # Check whether --enable-man-compression or --disable-man-compression was given. if test "${enable_man_compression+set}" = set; then enableval="$enable_man_compression" - test "$enableval" = "yes" && { echo "configure: error: missing argument to --enable-man-compression" 1>&2; exit 1; } - test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --compress $enableval" + case $enableval in + yes) { echo "configure: error: missing argument to --enable-man-compression" 1>&2; exit 1; };; + no) ;; + *) MAN_FLAGS="$MAN_FLAGS --compress $enableval";; + esac else enableval="no" fi @@ -601,7 +605,7 @@ fi echo "$ac_t""$enableval" 1>&6 if test "$enableval" != "no"; then echo $ac_n "checking for compressed file suffix""... $ac_c" 1>&6 -echo "configure:605: checking for compressed file suffix" >&5 +echo "configure:609: checking for compressed file suffix" >&5 touch TeST $enableval TeST Z=`ls TeST* | sed 's/^....//'` @@ -611,12 +615,15 @@ echo "configure:605: checking for compressed file suffix" >&5 fi echo $ac_n "checking whether to add a package name suffix for the manpages""... $ac_c" 1>&6 -echo "configure:615: checking whether to add a package name suffix for the manpages" >&5 +echo "configure:619: checking whether to add a package name suffix for the manpages" >&5 # Check whether --enable-man-suffix or --disable-man-suffix was given. if test "${enable_man_suffix+set}" = set; then enableval="$enable_man_suffix" - test "$enableval" = "yes" && enableval="tcl" - test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --suffix $enableval" + case $enableval in + yes) enableval="tcl" MAN_FLAGS="$MAN_FLAGS --suffix $enableval";; + no) ;; + *) MAN_FLAGS="$MAN_FLAGS --suffix $enableval";; + esac else enableval="no" fi @@ -639,7 +646,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:643: checking for $ac_word" >&5 +echo "configure:650: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -669,7 +676,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:673: checking for $ac_word" >&5 +echo "configure:680: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -720,7 +727,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:724: checking for $ac_word" >&5 +echo "configure:731: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -752,7 +759,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:756: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:763: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -763,12 +770,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 767 "configure" +#line 774 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -794,12 +801,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:798: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:805: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:803: checking whether we are using GNU C" >&5 +echo "configure:810: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -808,7 +815,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:819: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -827,7 +834,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:831: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:838: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -860,17 +867,16 @@ fi #-------------------------------------------------------------------- -# Supply substitutes for missing POSIX header files. Special -# notes: -# - stdlib.h doesn't define strtol, strtoul, or -# strtod insome versions of SunOS -# - some versions of string.h don't declare procedures such -# as strstr +# Supply substitutes for missing POSIX header files. Special notes: +# - stdlib.h doesn't define strtol, strtoul, or +# strtod insome versions of SunOS +# - some versions of string.h don't declare procedures such +# as strstr # Do this early, otherwise an autoconf bug throws errors on configure #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:874: checking how to run the C preprocessor" >&5 +echo "configure:880: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -885,13 +891,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:901: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -902,13 +908,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:912: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -919,13 +925,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -951,12 +957,12 @@ echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:955: checking dirent.h" >&5 - if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then +echo "configure:961: checking dirent.h" >&5 +if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -982,7 +988,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -994,6 +1000,7 @@ fi rm -f conftest* fi +echo "$ac_t""$tcl_cv_dirent_h" 1>&6 if test $tcl_cv_dirent_h = no; then cat >> confdefs.h <<\EOF @@ -1002,20 +1009,19 @@ EOF fi - echo "$ac_t""$tcl_ok" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1009: checking for errno.h" >&5 +echo "configure:1015: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1042,17 +1048,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:1046: checking for float.h" >&5 +echo "configure:1052: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1056: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1079,17 +1085,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:1083: checking for values.h" >&5 +echo "configure:1089: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1116,17 +1122,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:1120: checking for limits.h" >&5 +echo "configure:1126: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1156,17 +1162,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:1160: checking for stdlib.h" >&5 +echo "configure:1166: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1176: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1189,7 +1195,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -1203,7 +1209,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -1217,7 +1223,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -1238,17 +1244,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:1242: checking for string.h" >&5 +echo "configure:1248: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1271,7 +1277,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -1285,7 +1291,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -1311,17 +1317,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:1315: checking for sys/wait.h" >&5 +echo "configure:1321: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1331: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1348,17 +1354,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:1352: checking for dlfcn.h" >&5 +echo "configure:1358: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1389,17 +1395,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1393: checking for $ac_hdr" >&5 +echo "configure:1399: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1435,18 +1441,18 @@ done if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1439: checking if the compiler understands -pipe" >&5 +echo "configure:1445: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1465,8 +1471,6 @@ fi #------------------------------------------------------------------------ - echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:1470: checking for building with threads" >&5 # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then enableval="$enable_threads" @@ -1476,17 +1480,12 @@ else fi + if test "${TCL_THREADS}" = 1; then + tcl_threaded_core=1; + fi + if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then - if test "${TCL_THREADS}" = 1; then - echo "$ac_t""yes (threaded core)" 1>&6 - else - echo "$ac_t""yes" 1>&6 - fi TCL_THREADS=1 - cat >> confdefs.h <<\EOF -#define TCL_THREADS 1 -EOF - # USE_THREAD_ALLOC tells us to try the special thread-based # allocator that significantly reduces lock contention cat >> confdefs.h <<\EOF @@ -1508,7 +1507,7 @@ EOF EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1512: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:1511: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1516,7 +1515,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1555,7 +1554,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1559: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:1558: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1563,7 +1562,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1602,7 +1601,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1606: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:1605: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1610,7 +1609,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1647,7 +1646,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1651: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1650: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1655,7 +1654,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1687,9 +1686,9 @@ else tcl_ok=no fi - if test "$tcl_ok" = "no"; then + if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1693: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1692: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1697,7 +1696,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1734,9 +1733,9 @@ fi THREADS_LIBS=" -pthread" else TCL_THREADS=0 - echo "configure: warning: "Don t know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..."" 1>&2 + echo "configure: warning: Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..." 1>&2 fi - fi + fi fi fi @@ -1748,12 +1747,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1752: checking for $ac_func" >&5 +echo "configure:1751: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1803,12 +1802,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1807: checking for $ac_func" >&5 +echo "configure:1806: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1858,8 +1857,24 @@ done LIBS=$ac_saved_libs else TCL_THREADS=0 + fi + # Do checking message here to not mess up interleaved configure output + echo $ac_n "checking for building with threads""... $ac_c" 1>&6 +echo "configure:1864: checking for building with threads" >&5 + if test "${TCL_THREADS}" = 1; then + cat >> confdefs.h <<\EOF +#define TCL_THREADS 1 +EOF + + if test "${tcl_threaded_core}" = 1; then + echo "$ac_t""yes (threaded core)" 1>&6 + else + echo "$ac_t""yes" 1>&6 + fi + else echo "$ac_t""no (default)" 1>&6 fi + @@ -1876,12 +1891,12 @@ done #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1880: checking for sin" >&5 +echo "configure:1895: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1925,7 +1940,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1929: checking for main in -lieee" >&5 +echo "configure:1944: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1933,14 +1948,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1967,7 +1982,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1971: checking for main in -linet" >&5 +echo "configure:1986: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1975,14 +1990,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2004,17 +2019,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:2008: checking for net/errno.h" >&5 +echo "configure:2023: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2033: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2059,12 +2074,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:2063: checking for connect" >&5 +echo "configure:2078: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -2109,12 +2124,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:2113: checking for setsockopt" >&5 +echo "configure:2128: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -2155,7 +2170,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:2159: checking for setsockopt in -lsocket" >&5 +echo "configure:2174: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2163,7 +2178,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2202,12 +2217,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:2206: checking for accept" >&5 +echo "configure:2221: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -2252,12 +2267,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:2256: checking for gethostbyname" >&5 +echo "configure:2271: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -2298,7 +2313,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:2302: checking for gethostbyname in -lnsl" >&5 +echo "configure:2317: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2306,7 +2321,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2353,7 +2368,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:2357: checking how to build libraries" >&5 +echo "configure:2372: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2392,7 +2407,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2396: checking for $ac_word" >&5 +echo "configure:2411: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2424,77 +2439,77 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2428: checking if 64bit support is requested" >&5 +echo "configure:2443: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" - : + do64bit=$enableval else - enableval="no" + do64bit=no fi - - if test "$enableval" = "yes"; then - do64bit=yes - else - do64bit=no - fi echo "$ac_t""$do64bit" 1>&6 # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2448: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2457: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" - : + do64bitVIS=$enableval else - enableval="no" + do64bitVIS=no fi + echo "$ac_t""$do64bitVIS" 1>&6 - if test "$enableval" = "yes"; then + if test "$do64bitVIS" = "yes"; then # Force 64bit on with VIS do64bit=yes - do64bitVIS=yes - else - do64bitVIS=no fi - echo "$ac_t""$do64bitVIS" 1>&6 # Step 1: set the variable "system" to hold the name and version number - # for the system. This can usually be done via the "uname" command, but - # there are a few systems, like Next, where this doesn't work. + # for the system. - echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:2472: checking system version (for dynamic loading)" >&5 - if test -f /usr/lib/NextStep/software_version; then - system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` - else - system=`uname -s`-`uname -r` - if test "$?" -ne 0 ; then - echo "$ac_t""unknown (can't find uname command)" 1>&6 - system=unknown + + echo $ac_n "checking system version""... $ac_c" 1>&6 +echo "configure:2478: checking system version" >&5 +if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + if test -f /usr/lib/NextStep/software_version; then + tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else - # Special check for weird MP-RAS system (uname returns weird - # results, and the version is kept in special file). - - if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print }' /etc/.relid` - fi - if test "`uname -s`" = "AIX" ; then - system=AIX-`uname -v`.`uname -r` + tcl_cv_sys_version=`uname -s`-`uname -r` + if test "$?" -ne 0 ; then + echo "configure: warning: can't find uname command" 1>&2 + tcl_cv_sys_version=unknown + else + # Special check for weird MP-RAS system (uname returns weird + # results, and the version is kept in special file). + + if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then + tcl_cv_sys_version=MP-RAS-`awk '{print }' /etc/.relid` + fi + if test "`uname -s`" = "AIX" ; then + tcl_cv_sys_version=AIX-`uname -v`.`uname -r` + fi fi - echo "$ac_t""$system" 1>&6 fi - fi + +fi + +echo "$ac_t""$tcl_cv_sys_version" 1>&6 + system=$tcl_cv_sys_version + # Step 2: check for existence of -ldl library. This is needed because # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2498: checking for dlopen in -ldl" >&5 +echo "configure:2513: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2502,7 +2517,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2561,7 +2576,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2565: checking for $ac_word" >&5 +echo "configure:2580: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2676,7 +2691,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2680: checking for gettimeofday in -lbsd" >&5 +echo "configure:2695: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2684,7 +2699,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2738,7 +2753,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2742: checking for inet_ntoa in -lbind" >&5 +echo "configure:2757: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2746,7 +2761,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2823,7 +2838,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2827: checking for shl_load in -ldld" >&5 +echo "configure:2842: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2831,7 +2846,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2886,18 +2901,18 @@ fi # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then - hpux_arch=`gcc -dumpmachine` + hpux_arch=`${CC} -dumpmachine` case $hpux_arch in hppa64*) # 64-bit gcc in use. Fix flags for GNU ld. do64bit_ok=yes - SHLIB_LD="gcc -shared" + SHLIB_LD="${CC} -shared" SHLIB_LD_LIBS='${LIBS}' CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ;; *) - echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 + echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 ;; esac else @@ -2910,7 +2925,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2914: checking for shl_load in -ldld" >&5 +echo "configure:2929: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2918,7 +2933,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3053,17 +3068,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3057: checking for dld.h" >&5 +echo "configure:3072: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3067: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3127,17 +3142,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3131: checking for dld.h" >&5 +echo "configure:3146: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3141: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3156: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3205,17 +3220,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3209: checking for dlfcn.h" >&5 +echo "configure:3224: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3242,29 +3257,38 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3246: checking for ELF" >&5 - cat > conftest.$ac_ext <&5 +if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <&5 | egrep "yes" >/dev/null 2>&1; then rm -rf conftest* - echo "$ac_t""yes" 1>&6 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' + tcl_cv_ld_elf=yes else rm -rf conftest* - echo "$ac_t""no" 1>&6 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - + tcl_cv_ld_elf=no fi rm -f conftest* +fi + +echo "$ac_t""$tcl_cv_ld_elf" 1>&6 + if test $tcl_cv_ld_elf = yes; then + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' + else + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + fi else echo "$ac_t""no" 1>&6 @@ -3318,29 +3342,38 @@ fi LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3322: checking for ELF" >&5 - cat > conftest.$ac_ext <&5 +if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <&5 | egrep "yes" >/dev/null 2>&1; then rm -rf conftest* - echo "$ac_t""yes" 1>&6 - LDFLAGS=-Wl,-export-dynamic + tcl_cv_ld_elf=yes else rm -rf conftest* - echo "$ac_t""no" 1>&6 - LDFLAGS="" - + tcl_cv_ld_elf=no fi rm -f conftest* +fi + +echo "$ac_t""$tcl_cv_ld_elf" 1>&6 + if test $tcl_cv_ld_elf = yes; then + LDFLAGS=-Wl,-export-dynamic + else + LDFLAGS="" + fi ;; esac @@ -3383,7 +3416,7 @@ rm -f conftest* fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3387: checking if ld accepts -single_module flag" >&5 +echo "configure:3420: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3391,14 +3424,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3425,7 +3458,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3429: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3462: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3433,14 +3466,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3463,7 +3496,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3467: checking whether to use CoreFoundation" >&5 +echo "configure:3500: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3475,7 +3508,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3479: checking for CoreFoundation.framework" >&5 +echo "configure:3512: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3489,14 +3522,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3522,17 +3555,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3526: checking for $ac_hdr" >&5 +echo "configure:3559: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3536: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3561,12 +3594,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3565: checking for $ac_func" >&5 +echo "configure:3598: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3617,17 +3650,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3621: checking for $ac_hdr" >&5 +echo "configure:3654: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3631: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3664: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3656,12 +3689,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3660: checking for $ac_func" >&5 +echo "configure:3693: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3731,12 +3764,12 @@ EOF # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3735: checking for realpath" >&5 +echo "configure:3768: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -3794,11 +3827,11 @@ fi LD_SEARCH_FLAGS="" ;; OS/390-*) - CFLAGS_OPTIMIZE="" # Optimizer is buggy + CFLAGS_OPTIMIZE="" # Optimizer is buggy cat >> confdefs.h <<\EOF #define _OE_SOCKETS 1 EOF - # needed in sys/socket.h + # needed in sys/socket.h ;; OSF1-1.0|OSF1-1.1|OSF1-1.2) # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 @@ -4068,29 +4101,39 @@ EOF DL_LIBS="-ldl" # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. - hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4074: checking for ld accepts -Bexport flag" >&5 - LDFLAGS="$LDFLAGS -Wl,-Bexport" - cat > conftest.$ac_ext <&5 +if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-Bexport" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - found=yes + tcl_cv_ld_Bexport=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - LDFLAGS=$hold_ldflags found=no + tcl_cv_ld_Bexport=no fi rm -f conftest* - echo "$ac_t""$found" 1>&6 + LDFLAGS=$hold_ldflags +fi + +echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 + if test $tcl_cv_ld_Bexport = yes; then + LDFLAGS="$LDFLAGS -Wl,-Bexport" + fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -4121,9 +4164,13 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4125: checking sys/exec.h" >&5 +echo "configure:4168: checking sys/exec.h" >&5 +if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < int main() { @@ -4141,27 +4188,33 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_ok=usable + tcl_cv_sysexec_h=usable else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=unusable + tcl_cv_sysexec_h=unusable fi rm -f conftest* - echo "$ac_t""$tcl_ok" 1>&6 - if test $tcl_ok = usable; then +fi + +echo "$ac_t""$tcl_cv_sysexec_h" 1>&6 + if test $tcl_cv_sysexec_h = usable; then cat >> confdefs.h <<\EOF #define USE_SYS_EXEC_H 1 EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4163: checking a.out.h" >&5 +echo "configure:4212: checking a.out.h" >&5 +if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < int main() { @@ -4179,27 +4232,33 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4236: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_ok=usable + tcl_cv_aout_h=usable else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=unusable + tcl_cv_aout_h=unusable fi rm -f conftest* - echo "$ac_t""$tcl_ok" 1>&6 - if test $tcl_ok = usable; then +fi + +echo "$ac_t""$tcl_cv_aout_h" 1>&6 + if test $tcl_cv_aout_h = usable; then cat >> confdefs.h <<\EOF #define USE_A_OUT_H 1 EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4201: checking sys/exec_aout.h" >&5 +echo "configure:4256: checking sys/exec_aout.h" >&5 +if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < int main() { @@ -4217,18 +4276,20 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_ok=usable + tcl_cv_sysexecaout_h=usable else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_ok=unusable + tcl_cv_sysexecaout_h=unusable fi rm -f conftest* - echo "$ac_t""$tcl_ok" 1>&6 - if test $tcl_ok = usable; then +fi + +echo "$ac_t""$tcl_cv_sysexecaout_h" 1>&6 + if test $tcl_cv_sysexecaout_h = usable; then cat >> confdefs.h <<\EOF #define USE_SYS_EXEC_AOUT_H 1 EOF @@ -4368,7 +4429,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4372: checking for build with symbols" >&5 +echo "configure:4433: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4429,21 +4490,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4433: checking for required early compiler flags" >&5 +echo "configure:4494: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4447: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4451,7 +4512,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4459,7 +4520,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4463: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4480,19 +4541,20 @@ EOF tcl_flags="$tcl_flags _ISOC99_SOURCE" fi + if eval "test \"`echo '$''{'tcl_cv_flag__largefile64_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4496: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4500,7 +4562,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4508,7 +4570,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4529,19 +4591,20 @@ EOF tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" fi + if eval "test \"`echo '$''{'tcl_cv_flag__largefile_source64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4549,7 +4612,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4557,7 +4620,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4624: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4578,6 +4641,7 @@ EOF tcl_flags="$tcl_flags _LARGEFILE_SOURCE64" fi + if test "x${tcl_flags}" = "x" ; then echo "$ac_t""none" 1>&6 else @@ -4585,8 +4649,9 @@ EOF fi + echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4590: checking for 64-bit integer type" >&5 +echo "configure:4655: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4594,14 +4659,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4615,7 +4680,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4693: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4649,13 +4714,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4653: checking for struct dirent64" >&5 - if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then +echo "configure:4718: checking for struct dirent64" >&5 +if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4663,7 +4728,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4732: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4675,22 +4740,22 @@ fi rm -f conftest* fi +echo "$ac_t""$tcl_cv_struct_dirent64" 1>&6 if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then cat >> confdefs.h <<\EOF #define HAVE_STRUCT_DIRENT64 1 EOF fi - echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4688: checking for struct stat64" >&5 - if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then +echo "configure:4753: checking for struct stat64" >&5 +if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4698,7 +4763,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4710,23 +4775,23 @@ fi rm -f conftest* fi +echo "$ac_t""$tcl_cv_struct_stat64" 1>&6 if test "x${tcl_cv_struct_stat64}" = "xyes" ; then cat >> confdefs.h <<\EOF #define HAVE_STRUCT_STAT64 1 EOF fi - echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4725: checking for $ac_func" >&5 +echo "configure:4790: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4774,13 +4839,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4778: checking for off64_t" >&5 +echo "configure:4843: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4788,7 +4853,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4792: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4813,20 +4878,21 @@ EOF fi fi + #-------------------------------------------------------------------- # Check endianness because we can optimize comparisons of # Tcl_UniChar strings to memcmp on big-endian systems. #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4823: checking whether byte ordering is bigendian" >&5 +echo "configure:4889: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4837,11 +4903,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4907: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4852,7 +4918,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4872,7 +4938,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4918,12 +4984,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4922: checking for $ac_func" >&5 +echo "configure:4988: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4980,12 +5046,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4984: checking for $ac_func" >&5 +echo "configure:5050: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5035,12 +5101,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5039: checking for strerror" >&5 +echo "configure:5105: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5087,12 +5153,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5091: checking for getwd" >&5 +echo "configure:5157: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5139,12 +5205,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5143: checking for wait3" >&5 +echo "configure:5209: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5191,12 +5257,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5195: checking for uname" >&5 +echo "configure:5261: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5243,12 +5309,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5247: checking for realpath" >&5 +echo "configure:5313: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5306,17 +5372,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5310: checking for $ac_hdr" >&5 +echo "configure:5376: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5343,8 +5409,8 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5347: checking termios vs. termio vs. sgtty" >&5 - if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then +echo "configure:5413: checking termios vs. termio vs. sgtty" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5352,7 +5418,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5367,7 +5433,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5384,7 +5450,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5398,7 +5464,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5416,7 +5482,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5431,7 +5497,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5449,7 +5515,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5466,7 +5532,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5484,7 +5550,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5500,7 +5566,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5518,7 +5584,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5535,7 +5601,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5550,6 +5616,7 @@ fi fi fi +echo "$ac_t""$tcl_cv_api_serial" 1>&6 case $tcl_cv_api_serial in termios) cat >> confdefs.h <<\EOF #define USE_TERMIOS 1 @@ -5564,7 +5631,6 @@ EOF EOF ;; esac - echo "$ac_t""$tcl_cv_api_serial" 1>&6 #-------------------------------------------------------------------- @@ -5578,19 +5644,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5582: checking for fd_set in sys/types" >&5 +echo "configure:5648: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5604,14 +5670,14 @@ fi echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set -if test $tcl_cv_type_fd_set = no; then +if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5610: checking for fd_mask in sys/select" >&5 - if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then +echo "configure:5676: checking for fd_mask in sys/select" >&5 +if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5627,7 +5693,7 @@ rm -f conftest* fi - echo "$ac_t""$tcl_cv_grep_fd_mask" 1>&6 +echo "$ac_t""$tcl_cv_grep_fd_mask" 1>&6 if test $tcl_cv_grep_fd_mask = present; then cat >> confdefs.h <<\EOF #define HAVE_SYS_SELECT_H 1 @@ -5648,12 +5714,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5652: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5718: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5661,7 +5727,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5686,17 +5752,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5690: checking for $ac_hdr" >&5 +echo "configure:5756: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5700: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5723,12 +5789,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5727: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5793: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5737,7 +5803,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5807: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5758,12 +5824,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5762: checking for tm_zone in struct tm" >&5 +echo "configure:5828: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5771,7 +5837,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5791,12 +5857,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5795: checking for tzname" >&5 +echo "configure:5861: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5806,7 +5872,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5831,12 +5897,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5835: checking for $ac_func" >&5 +echo "configure:5901: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5885,19 +5951,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5889: checking tm_tzadj in struct tm" >&5 - if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then +echo "configure:5955: checking tm_tzadj in struct tm" >&5 +if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5901: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5909,7 +5975,7 @@ fi rm -f conftest* fi - echo "$ac_t""$tcl_cv_member_tm_tzadj" 1>&6 +echo "$ac_t""$tcl_cv_member_tm_tzadj" 1>&6 if test $tcl_cv_member_tm_tzadj = yes ; then cat >> confdefs.h <<\EOF #define HAVE_TM_TZADJ 1 @@ -5918,19 +5984,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5922: checking tm_gmtoff in struct tm" >&5 - if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then +echo "configure:5988: checking tm_gmtoff in struct tm" >&5 +if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5942,7 +6008,7 @@ fi rm -f conftest* fi - echo "$ac_t""$tcl_cv_member_tm_gmtoff" 1>&6 +echo "$ac_t""$tcl_cv_member_tm_gmtoff" 1>&6 if test $tcl_cv_member_tm_gmtoff = yes ; then cat >> confdefs.h <<\EOF #define HAVE_TM_GMTOFF 1 @@ -5955,12 +6021,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5959: checking long timezone variable" >&5 - if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then +echo "configure:6025: checking long timezone variable" >&5 +if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5969,7 +6035,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5981,7 +6047,7 @@ fi rm -f conftest* fi - echo "$ac_t""$tcl_cv_timezone_long" 1>&6 +echo "$ac_t""$tcl_cv_timezone_long" 1>&6 if test $tcl_cv_timezone_long = yes ; then cat >> confdefs.h <<\EOF #define HAVE_TIMEZONE_VAR 1 @@ -5992,12 +6058,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5996: checking time_t timezone variable" >&5 - if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then +echo "configure:6062: checking time_t timezone variable" >&5 +if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6006,7 +6072,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6010: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6076: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6018,7 +6084,7 @@ fi rm -f conftest* fi - echo "$ac_t""$tcl_cv_timezone_time" 1>&6 +echo "$ac_t""$tcl_cv_timezone_time" 1>&6 if test $tcl_cv_timezone_time = yes ; then cat >> confdefs.h <<\EOF #define HAVE_TIMEZONE_VAR 1 @@ -6033,12 +6099,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6037: checking for st_blksize in struct stat" >&5 +echo "configure:6103: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6046,7 +6112,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6067,12 +6133,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6071: checking for fstatfs" >&5 +echo "configure:6137: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6124,7 +6190,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6128: checking for 8-bit clean memcmp" >&5 +echo "configure:6194: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6132,7 +6198,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6166,12 +6232,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6170: checking for memmove" >&5 +echo "configure:6236: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6227,37 +6293,40 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6231: checking proper strstr implementation" >&5 - if test "$cross_compiling" = yes; then - tcl_ok=no +echo "configure:6297: checking proper strstr implementation" >&5 +if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + if test "$cross_compiling" = yes; then + tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - tcl_ok=yes + tcl_cv_strstr_unbroken=ok else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - tcl_ok=no + tcl_cv_strstr_unbroken=broken fi rm -fr conftest* fi - if test $tcl_ok = yes; then - echo "$ac_t""yes" 1>&6 - else - echo "$ac_t""broken, using substitute" 1>&6 +fi + +echo "$ac_t""$tcl_cv_strstr_unbroken" 1>&6 + if test $tcl_cv_strstr_unbroken = broken; then LIBOBJS="$LIBOBJS strstr.o" fi fi @@ -6269,12 +6338,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6273: checking for strtoul" >&5 +echo "configure:6342: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6317,40 +6386,53 @@ else tcl_ok=0 fi -if test "$cross_compiling" = yes; then - tcl_ok=0 +if test $tcl_ok = 1; then + echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 +echo "configure:6392: checking proper strtoul implementation" >&5 +if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + if test "$cross_compiling" = yes; then + tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - : + tcl_cv_strtoul_unbroken=ok else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - tcl_ok=0 + tcl_cv_strtoul_unbroken=broken fi rm -fr conftest* fi -if test "$tcl_ok" = 0; then - test -n "$verbose" && echo " Adding strtoul.o." +fi + +echo "$ac_t""$tcl_cv_strtoul_unbroken" 1>&6 + if test $tcl_cv_strtoul_unbroken = broken; then + tcl_ok=0 + fi +fi +if test $tcl_ok = 0; then LIBOBJS="$LIBOBJS strtoul.o" fi @@ -6360,12 +6442,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6364: checking for strtod" >&5 +echo "configure:6446: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6408,40 +6490,53 @@ else tcl_ok=0 fi -if test "$cross_compiling" = yes; then - tcl_ok=0 +if test $tcl_ok = 1; then + echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 +echo "configure:6496: checking proper strtod implementation" >&5 +if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + if test "$cross_compiling" = yes; then + tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - : + tcl_cv_strtod_unbroken=ok else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - tcl_ok=0 + tcl_cv_strtod_unbroken=broken fi rm -fr conftest* fi -if test "$tcl_ok" = 0; then - test -n "$verbose" && echo " Adding strtod.o." +fi + +echo "$ac_t""$tcl_cv_strtod_unbroken" 1>&6 + if test $tcl_cv_strtod_unbroken = broken; then + tcl_ok=0 + fi +fi +if test $tcl_ok = 0; then LIBOBJS="$LIBOBJS strtod.o" fi @@ -6454,12 +6549,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6458: checking for strtod" >&5 +echo "configure:6553: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6504,16 +6599,16 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6508: checking for Solaris2.4/Tru64 strtod bugs" >&5 - if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then +echo "configure:6603: checking for Solaris2.4/Tru64 strtod bugs" >&5 +if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then - tcl_cv_strtod_buggy=0 + tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - tcl_cv_strtod_buggy=1 + tcl_cv_strtod_buggy=ok else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - tcl_cv_strtod_buggy=0 + tcl_cv_strtod_buggy=buggy fi rm -fr conftest* fi fi - if test "$tcl_cv_strtod_buggy" = 1; then - echo "$ac_t""ok" 1>&6 - else - echo "$ac_t""buggy" 1>&6 +echo "$ac_t""$tcl_cv_strtod_buggy" 1>&6 + if test "$tcl_cv_strtod_buggy" = buggy; then LIBOBJS="$LIBOBJS fixstrtod.o" cat >> confdefs.h <<\EOF #define strtod fixstrtod @@ -6569,12 +6662,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6573: checking for ANSI C header files" >&5 +echo "configure:6666: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6582,7 +6675,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6599,7 +6692,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6617,7 +6710,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6638,7 +6731,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6649,7 +6742,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6673,12 +6766,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6677: checking for mode_t" >&5 +echo "configure:6770: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6706,12 +6799,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6710: checking for pid_t" >&5 +echo "configure:6803: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6739,12 +6832,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6743: checking for size_t" >&5 +echo "configure:6836: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6772,12 +6865,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6776: checking for uid_t in sys/types.h" >&5 +echo "configure:6869: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6807,12 +6900,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6811: checking for socklen_t" >&5 +echo "configure:6904: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6851,12 +6944,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6855: checking for opendir" >&5 +echo "configure:6948: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6912,12 +7005,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6916: checking union wait" >&5 +echo "configure:7009: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6929,7 +7022,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6956,12 +7049,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6960: checking for strncasecmp" >&5 +echo "configure:7053: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7006,7 +7099,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7010: checking for strncasecmp in -lsocket" >&5 +echo "configure:7103: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7014,7 +7107,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7049,7 +7142,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7053: checking for strncasecmp in -linet" >&5 +echo "configure:7146: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7057,7 +7150,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7106,12 +7199,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7110: checking for BSDgettimeofday" >&5 +echo "configure:7203: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7156,12 +7249,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7160: checking for gettimeofday" >&5 +echo "configure:7253: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7211,12 +7304,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7215: checking for gettimeofday declaration" >&5 +echo "configure:7308: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7247,14 +7340,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7251: checking whether char is unsigned" >&5 +echo "configure:7344: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7310,12 +7403,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7314: checking signed char declarations" >&5 +echo "configure:7407: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7350,7 +7443,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7354: checking for a putenv() that copies the buffer" >&5 +echo "configure:7447: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7358,7 +7451,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7380,7 +7473,7 @@ else } EOF -if { (eval echo configure:7384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7421,17 +7514,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7425: checking for langinfo.h" >&5 +echo "configure:7518: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7528: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7455,20 +7548,20 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7459: checking whether to use nl_langinfo" >&5 +echo "configure:7552: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -7497,13 +7590,13 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:7501: checking for fts" >&5 +echo "configure:7594: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7514,7 +7607,7 @@ char*const p[2] = {"/", NULL}; FTSENT *e = fts_read(f); fts_close(f); ; return 0; } EOF -if { (eval echo configure:7518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -7546,17 +7639,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7550: checking for $ac_hdr" >&5 +echo "configure:7643: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7653: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7586,17 +7679,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7590: checking for $ac_hdr" >&5 +echo "configure:7683: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7693: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7622,26 +7715,40 @@ else fi done - echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7627: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 - if test -f /usr/lib/NextStep/software_version; then - system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` - else - system=`uname -s`-`uname -r` - if test "$?" -ne 0 ; then - system=unknown + + echo $ac_n "checking system version""... $ac_c" 1>&6 +echo "configure:7721: checking system version" >&5 +if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + if test -f /usr/lib/NextStep/software_version; then + tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else - # Special check for weird MP-RAS system (uname returns weird - # results, and the version is kept in special file). - - if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print }' /etc/.relid` - fi - if test "`uname -s`" = "AIX" ; then - system=AIX-`uname -v`.`uname -r` + tcl_cv_sys_version=`uname -s`-`uname -r` + if test "$?" -ne 0 ; then + echo "configure: warning: can't find uname command" 1>&2 + tcl_cv_sys_version=unknown + else + # Special check for weird MP-RAS system (uname returns weird + # results, and the version is kept in special file). + + if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then + tcl_cv_sys_version=MP-RAS-`awk '{print }' /etc/.relid` + fi + if test "`uname -s`" = "AIX" ; then + tcl_cv_sys_version=AIX-`uname -v`.`uname -r` + fi fi fi - fi + +fi + +echo "$ac_t""$tcl_cv_sys_version" 1>&6 + system=$tcl_cv_sys_version + + echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 +echo "configure:7752: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -7703,7 +7810,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7707: checking how to package libraries" >&5 +echo "configure:7814: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -7724,11 +7831,11 @@ fi echo "$ac_t""framework" 1>&6 FRAMEWORK_BUILD=1 if test "${SHARED_BUILD}" = "0" ; then - echo "configure: warning: "Frameworks can only be built if --enable-shared is yes"" 1>&2 + echo "configure: warning: Frameworks can only be built if --enable-shared is yes" 1>&2 FRAMEWORK_BUILD=0 fi if test $tcl_corefoundation = no; then - echo "configure: warning: "Frameworks can only be used when CoreFoundation is available"" 1>&2 + echo "configure: warning: Frameworks can only be used when CoreFoundation is available" 1>&2 FRAMEWORK_BUILD=0 fi else diff --git a/unix/configure.in b/unix/configure.in index 6c0dd88..1c7918c 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.23 2005/12/14 02:10:21 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.24 2006/01/10 05:37:06 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -31,6 +31,7 @@ TCL_SRC_DIR=`cd $srcdir/..; pwd` #------------------------------------------------------------------------ # Compress and/or soft link the manpages? #------------------------------------------------------------------------ + SC_CONFIG_MANPAGES([tcl]) #------------------------------------------------------------------------ @@ -46,12 +47,11 @@ fi AC_PROG_CC #-------------------------------------------------------------------- -# Supply substitutes for missing POSIX header files. Special -# notes: -# - stdlib.h doesn't define strtol, strtoul, or -# strtod insome versions of SunOS -# - some versions of string.h don't declare procedures such -# as strstr +# Supply substitutes for missing POSIX header files. Special notes: +# - stdlib.h doesn't define strtol, strtoul, or +# strtod insome versions of SunOS +# - some versions of string.h don't declare procedures such +# as strstr # Do this early, otherwise an autoconf bug throws errors on configure #-------------------------------------------------------------------- @@ -68,9 +68,9 @@ if test -n "$GCC"; then OLDCC="$CC" CC="$CC -pipe" AC_TRY_COMPILE(,, - AC_MSG_RESULT(yes), + AC_MSG_RESULT([yes]), CC="$OLDCC" - AC_MSG_RESULT(no)) + AC_MSG_RESULT([no])) fi fi @@ -153,18 +153,14 @@ SC_SERIAL_PORT # special flag. #-------------------------------------------------------------------- -AC_MSG_CHECKING([for fd_set in sys/types]) -AC_CACHE_VAL(tcl_cv_type_fd_set, +AC_CACHE_CHECK([for fd_set in sys/types], tcl_cv_type_fd_set, AC_TRY_COMPILE([#include ],[fd_set readMask, writeMask;], tcl_cv_type_fd_set=yes, tcl_cv_type_fd_set=no)) -AC_MSG_RESULT($tcl_cv_type_fd_set) tcl_ok=$tcl_cv_type_fd_set -if test $tcl_cv_type_fd_set = no; then - AC_MSG_CHECKING([for fd_mask in sys/select]) - AC_CACHE_VAL(tcl_cv_grep_fd_mask, +if test $tcl_ok = no; then + AC_CACHE_CHECK([for fd_mask in sys/select], tcl_cv_grep_fd_mask, AC_EGREP_HEADER(fd_mask, sys/select.h, tcl_cv_grep_fd_mask=present, tcl_cv_grep_fd_mask=missing)) - AC_MSG_RESULT($tcl_cv_grep_fd_mask) if test $tcl_cv_grep_fd_mask = present; then AC_DEFINE(HAVE_SYS_SELECT_H) tcl_ok=yes @@ -206,18 +202,15 @@ AC_CHECK_FUNC(memmove, , [AC_DEFINE(NO_MEMMOVE) AC_DEFINE(NO_STRING_H)]) #-------------------------------------------------------------------- dnl only run if AC_REPLACE_FUNCS(strstr) hasn't already added strstr.o if test "x${ac_cv_func_strstr}" = "xyes"; then - AC_MSG_CHECKING([proper strstr implementation]) - AC_TRY_RUN([ - extern int strstr(); - int main() - { - exit(strstr("\0test", "test") ? 1 : 0); - } - ], tcl_ok=yes, tcl_ok=no, tcl_ok=no) - if test $tcl_ok = yes; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT([broken, using substitute]) + AC_CACHE_CHECK([proper strstr implementation], tcl_cv_strstr_unbroken, [ + AC_TRY_RUN([ + extern int strstr(); + int main() + { + exit(strstr("\0test", "test") ? 1 : 0); + }], tcl_cv_strstr_unbroken=ok, tcl_cv_strstr_unbroken=broken, + tcl_cv_strstr_unbroken=broken)]) + if test $tcl_cv_strstr_unbroken = broken; then LIBOBJS="$LIBOBJS strstr.o" fi fi @@ -229,21 +222,27 @@ fi #-------------------------------------------------------------------- AC_CHECK_FUNC(strtoul, tcl_ok=1, tcl_ok=0) -AC_TRY_RUN([ -extern int strtoul(); -int main() -{ - char *string = "0"; - char *term; - int value; - value = strtoul(string, &term, 0); - if ((value != 0) || (term != (string+1))) { - exit(1); - } - exit(0); -}], , tcl_ok=0, tcl_ok=0) -if test "$tcl_ok" = 0; then - test -n "$verbose" && echo " Adding strtoul.o." +if test $tcl_ok = 1; then + AC_CACHE_CHECK([proper strtoul implementation], tcl_cv_strtoul_unbroken, [ + AC_TRY_RUN([ + extern int strtoul(); + int main() + { + char *string = "0"; + char *term; + int value; + value = strtoul(string, &term, 0); + if ((value != 0) || (term != (string+1))) { + exit(1); + } + exit(0); + }], tcl_cv_strtoul_unbroken=ok , tcl_cv_strtoul_unbroken=broken, + tcl_cv_strtoul_unbroken=broken)]) + if test $tcl_cv_strtoul_unbroken = broken; then + tcl_ok=0 + fi +fi +if test $tcl_ok = 0; then LIBOBJS="$LIBOBJS strtoul.o" fi @@ -253,21 +252,27 @@ fi #-------------------------------------------------------------------- AC_CHECK_FUNC(strtod, tcl_ok=1, tcl_ok=0) -AC_TRY_RUN([ -extern double strtod(); -int main() -{ - char *string = " +69"; - char *term; - double value; - value = strtod(string, &term); - if ((value != 69) || (term != (string+4))) { - exit(1); - } - exit(0); -}], , tcl_ok=0, tcl_ok=0) -if test "$tcl_ok" = 0; then - test -n "$verbose" && echo " Adding strtod.o." +if test $tcl_ok = 1; then + AC_CACHE_CHECK([proper strtod implementation], tcl_cv_strtod_unbroken, [ + AC_TRY_RUN([ + extern double strtod(); + int main() + { + char *string = " +69"; + char *term; + double value; + value = strtod(string, &term); + if ((value != 69) || (term != (string+4))) { + exit(1); + } + exit(0); + }], tcl_cv_strtod_unbroken=ok , tcl_cv_strtod_unbroken=broken, + tcl_cv_strtod_unbroken=broken)]) + if test $tcl_cv_strtod_unbroken = broken; then + tcl_ok=0 + fi +fi +if test $tcl_ok = 0; then LIBOBJS="$LIBOBJS strtod.o" fi @@ -290,8 +295,8 @@ AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UID_T -AC_MSG_CHECKING([for socklen_t]) -AC_CACHE_VAL(ac_cv_type_socklen_t,[AC_EGREP_CPP(changequote(<<,>>)dnl +AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, + [AC_EGREP_CPP(changequote(<<,>>)dnl <<(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]>>dnl changequote([,]),[ #include @@ -301,7 +306,6 @@ changequote([,]),[ #include #endif ], ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no)]) -AC_MSG_RESULT($ac_cv_type_socklen_t) if test $ac_cv_type_socklen_t = no; then AC_DEFINE(socklen_t, unsigned) fi @@ -323,15 +327,13 @@ AC_CHECK_FUNC(opendir, , [AC_DEFINE(USE_DIRENT2_H)]) # the trick. #-------------------------------------------------------------------- -AC_MSG_CHECKING([union wait]) -AC_CACHE_VAL(tcl_cv_union_wait, +AC_CACHE_CHECK([union wait], tcl_cv_union_wait, AC_TRY_LINK([#include #include ], [ union wait x; WIFEXITED(x); /* Generates compiler error if WIFEXITED * uses an int. */ ], tcl_cv_union_wait=yes, tcl_cv_union_wait=no)) -AC_MSG_RESULT($tcl_cv_union_wait) if test $tcl_cv_union_wait = no; then AC_DEFINE(NO_UNION_WAIT) fi @@ -368,11 +370,9 @@ AC_CHECK_FUNC(BSDgettimeofday, [AC_DEFINE(HAVE_BSDGETTIMEOFDAY)], [ AC_CHECK_FUNC(gettimeofday, , [AC_DEFINE(NO_GETTOD)]) ]) -AC_MSG_CHECKING([for gettimeofday declaration]) -AC_CACHE_VAL(tcl_cv_grep_gettimeofday, +AC_CACHE_CHECK([for gettimeofday declaration], tcl_cv_grep_gettimeofday, AC_EGREP_HEADER(gettimeofday, sys/time.h, tcl_cv_grep_gettimeofday=present, tcl_cv_grep_gettimeofday=missing)) -AC_MSG_RESULT($tcl_cv_grep_gettimeofday) if test $tcl_cv_grep_gettimeofday = missing ; then AC_DEFINE(GETTOD_NOT_DECLARED) fi @@ -384,13 +384,11 @@ fi #-------------------------------------------------------------------- AC_C_CHAR_UNSIGNED -AC_MSG_CHECKING([signed char declarations]) -AC_CACHE_VAL(tcl_cv_char_signed, +AC_CACHE_CHECK([signed char declarations], tcl_cv_char_signed, AC_TRY_COMPILE(, [ signed char *p; p = 0; ], tcl_cv_char_signed=yes, tcl_cv_char_signed=no)) -AC_MSG_RESULT($tcl_cv_char_signed) if test $tcl_cv_char_signed = yes; then AC_DEFINE(HAVE_SIGNED_CHAR) fi @@ -399,8 +397,7 @@ fi # Does putenv() copy or not? We need to know to avoid memory leaks. #-------------------------------------------------------------------- -AC_MSG_CHECKING([for a putenv() that copies the buffer]) -AC_CACHE_VAL(tcl_cv_putenv_copy, +AC_CACHE_CHECK([for a putenv() that copies the buffer], tcl_cv_putenv_copy, AC_TRY_RUN([ #include #define OURVAR "havecopy=yes" @@ -424,7 +421,6 @@ AC_CACHE_VAL(tcl_cv_putenv_copy, tcl_cv_putenv_copy=yes, tcl_cv_putenv_copy=no) ) -AC_MSG_RESULT($tcl_cv_putenv_copy) if test $tcl_cv_putenv_copy = yes; then AC_DEFINE(HAVE_PUTENV_THAT_COPIES) fi diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 1c11781..9b86a7b 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -62,9 +62,25 @@ AC_DEFUN(SC_PATH_TCLCONFIG, [ done fi + # on Darwin, check in Framework installation locations + if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then + for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ + `ls -d /Library/Frameworks 2>/dev/null` \ + `ls -d /Network/Library/Frameworks 2>/dev/null` \ + `ls -d /System/Library/Frameworks 2>/dev/null` \ + ; do + if test -f "$i/Tcl.framework/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)` + break + fi + done + fi + # check in a few common install locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ + `ls -d ${exec_prefix}/lib 2>/dev/null` \ + `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ @@ -93,12 +109,12 @@ AC_DEFUN(SC_PATH_TCLCONFIG, [ if test x"${ac_cv_c_tclconfig}" = x ; then TCL_BIN_DIR="# no Tcl configs found" - AC_MSG_WARN(Can't find Tcl configuration definitions) + AC_MSG_WARN([Can't find Tcl configuration definitions]) exit 0 else no_tcl= TCL_BIN_DIR=${ac_cv_c_tclconfig} - AC_MSG_RESULT(found $TCL_BIN_DIR/tclConfig.sh) + AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh]) fi fi ]) @@ -165,9 +181,26 @@ AC_DEFUN(SC_PATH_TKCONFIG, [ fi done fi + + # on Darwin, check in Framework installation locations + if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then + for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ + `ls -d /Library/Frameworks 2>/dev/null` \ + `ls -d /Network/Library/Frameworks 2>/dev/null` \ + `ls -d /System/Library/Frameworks 2>/dev/null` \ + ; do + if test -f "$i/Tk.framework/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)` + break + fi + done + fi + # check in a few common install locations if test x"${ac_cv_c_tkconfig}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ + `ls -d ${exec_prefix}/lib 2>/dev/null` \ + `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ @@ -192,17 +225,17 @@ AC_DEFUN(SC_PATH_TKCONFIG, [ done fi ]) + if test x"${ac_cv_c_tkconfig}" = x ; then TK_BIN_DIR="# no Tk configs found" - AC_MSG_WARN(Can't find Tk configuration definitions) + AC_MSG_WARN([Can't find Tk configuration definitions]) exit 0 else no_tk= TK_BIN_DIR=${ac_cv_c_tkconfig} - AC_MSG_RESULT(found $TK_BIN_DIR/tkConfig.sh) + AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh]) fi fi - ]) #------------------------------------------------------------------------ @@ -225,39 +258,55 @@ AC_DEFUN(SC_PATH_TKCONFIG, [ #------------------------------------------------------------------------ AC_DEFUN(SC_LOAD_TCLCONFIG, [ - AC_MSG_CHECKING([for existence of $TCL_BIN_DIR/tclConfig.sh]) + AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh]) - if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then + if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then AC_MSG_RESULT([loading]) - . $TCL_BIN_DIR/tclConfig.sh + . ${TCL_BIN_DIR}/tclConfig.sh else - AC_MSG_RESULT([file not found]) + AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh]) fi - # + # eval is required to do the TCL_DBGX substitution + eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\"" + eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\"" + # If the TCL_BIN_DIR is the build directory (not the install directory), # then set the common variable name to the value of the build variables. # For example, the variable TCL_LIB_SPEC will be set to the value # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC # instead of TCL_BUILD_LIB_SPEC since it will work with both an # installed and uninstalled version of Tcl. - # - - if test -f $TCL_BIN_DIR/Makefile ; then + if test -f ${TCL_BIN_DIR}/Makefile ; then TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC} TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC} TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH} + elif test "`uname -s`" = "Darwin"; then + # If Tcl was built as a framework, attempt to use the libraries + # from the framework at the given location so that linking works + # against Tcl.framework installed in an arbitary location. + case ${TCL_DEFS} in + *TCL_FRAMEWORK*) + if test -f ${TCL_BIN_DIR}/${TCL_LIB_FILE}; then + for i in "`cd ${TCL_BIN_DIR}; pwd`" \ + "`cd ${TCL_BIN_DIR}/../..; pwd`"; do + if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then + TCL_LIB_SPEC="-F`dirname "$i"` -framework ${TCL_LIB_FILE}" + break + fi + done + fi + if test -f ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}; then + TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}" + TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}" + fi + ;; + esac fi - # # eval is required to do the TCL_DBGX substitution - # - - eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\"" eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\"" eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\"" - - eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\"" eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\"" eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\"" @@ -291,19 +340,69 @@ AC_DEFUN(SC_LOAD_TCLCONFIG, [ #------------------------------------------------------------------------ AC_DEFUN(SC_LOAD_TKCONFIG, [ - AC_MSG_CHECKING([for existence of $TK_BIN_DIR/tkConfig.sh]) + AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh]) - if test -f "$TK_BIN_DIR/tkConfig.sh" ; then + if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then AC_MSG_RESULT([loading]) - . $TK_BIN_DIR/tkConfig.sh + . ${TK_BIN_DIR}/tkConfig.sh else - AC_MSG_RESULT([could not find $TK_BIN_DIR/tkConfig.sh]) + AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh]) fi + # eval is required to do the TK_DBGX substitution + eval "TK_LIB_FILE=\"${TK_LIB_FILE}\"" + eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\"" + + # If the TK_BIN_DIR is the build directory (not the install directory), + # then set the common variable name to the value of the build variables. + # For example, the variable TK_LIB_SPEC will be set to the value + # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC + # instead of TK_BUILD_LIB_SPEC since it will work with both an + # installed and uninstalled version of Tcl. + if test -f ${TK_BIN_DIR}/Makefile ; then + TK_LIB_SPEC=${TK_BUILD_LIB_SPEC} + TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC} + TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH} + elif test "`uname -s`" = "Darwin"; then + # If Tk was built as a framework, attempt to use the libraries + # from the framework at the given location so that linking works + # against Tk.framework installed in an arbitary location. + case ${TK_DEFS} in + *TK_FRAMEWORK*) + if test -f ${TK_BIN_DIR}/${TK_LIB_FILE}; then + for i in "`cd ${TK_BIN_DIR}; pwd`" \ + "`cd ${TK_BIN_DIR}/../..; pwd`"; do + if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then + TK_LIB_SPEC="-F`dirname "$i"` -framework ${TK_LIB_FILE}" + break + fi + done + fi + if test -f ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}; then + TK_STUB_LIB_SPEC="-L${TK_BIN_DIR} ${TK_STUB_LIB_FLAG}" + TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}" + fi + ;; + esac + fi + + # eval is required to do the TK_DBGX substitution + eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\"" + eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\"" + eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\"" + eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\"" + AC_SUBST(TK_VERSION) AC_SUBST(TK_BIN_DIR) AC_SUBST(TK_SRC_DIR) + AC_SUBST(TK_LIB_FILE) + AC_SUBST(TK_LIB_FLAG) + AC_SUBST(TK_LIB_SPEC) + + AC_SUBST(TK_STUB_LIB_FILE) + AC_SUBST(TK_STUB_LIB_FLAG) + AC_SUBST(TK_STUB_LIB_SPEC) ]) #------------------------------------------------------------------------ @@ -328,7 +427,6 @@ AC_DEFUN(SC_LOAD_TKCONFIG, [ AC_DEFUN(SC_PROG_TCLSH, [ AC_MSG_CHECKING([for tclsh]) - AC_CACHE_VAL(ac_cv_path_tclsh, [ search_path=`echo ${PATH} | sed -e 's/:/ /g'` for dir in $search_path ; do @@ -346,7 +444,7 @@ AC_DEFUN(SC_PROG_TCLSH, [ if test -f "$ac_cv_path_tclsh" ; then TCLSH_PROG="$ac_cv_path_tclsh" - AC_MSG_RESULT($TCLSH_PROG) + AC_MSG_RESULT([$TCLSH_PROG]) else # It is not an error if an installed version of Tcl can't be located. TCLSH_PROG="" @@ -375,7 +473,7 @@ AC_DEFUN(SC_PROG_TCLSH, [ AC_DEFUN(SC_BUILD_TCLSH, [ AC_MSG_CHECKING([for tclsh in Tcl build directory]) BUILD_TCLSH=${TCL_BIN_DIR}/tclsh - AC_MSG_RESULT($BUILD_TCLSH) + AC_MSG_RESULT([$BUILD_TCLSH]) AC_SUBST(BUILD_TCLSH) ]) @@ -457,11 +555,11 @@ AC_DEFUN(SC_ENABLE_FRAMEWORK, [ AC_MSG_RESULT([framework]) FRAMEWORK_BUILD=1 if test "${SHARED_BUILD}" = "0" ; then - AC_MSG_WARN("Frameworks can only be built if --enable-shared is yes") + AC_MSG_WARN([Frameworks can only be built if --enable-shared is yes]) FRAMEWORK_BUILD=0 fi if test $tcl_corefoundation = no; then - AC_MSG_WARN("Frameworks can only be used when CoreFoundation is available") + AC_MSG_WARN([Frameworks can only be used when CoreFoundation is available]) FRAMEWORK_BUILD=0 fi else @@ -496,18 +594,15 @@ AC_DEFUN(SC_ENABLE_FRAMEWORK, [ #------------------------------------------------------------------------ AC_DEFUN(SC_ENABLE_THREADS, [ - AC_MSG_CHECKING(for building with threads) AC_ARG_ENABLE(threads, [ --enable-threads build with threads], [tcl_ok=$enableval], [tcl_ok=no]) + if test "${TCL_THREADS}" = 1; then + tcl_threaded_core=1; + fi + if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then - if test "${TCL_THREADS}" = 1; then - AC_MSG_RESULT([yes (threaded core)]) - else - AC_MSG_RESULT([yes]) - fi TCL_THREADS=1 - AC_DEFINE(TCL_THREADS) # USE_THREAD_ALLOC tells us to try the special thread-based # allocator that significantly reduces lock contention AC_DEFINE(USE_THREAD_ALLOC) @@ -523,29 +618,33 @@ AC_DEFUN(SC_ENABLE_THREADS, [ # defined. We could alternatively do an AC_TRY_COMPILE with # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] - AC_CHECK_LIB(pthread,__pthread_mutex_init,tcl_ok=yes,tcl_ok=no) + AC_CHECK_LIB(pthread, __pthread_mutex_init, + tcl_ok=yes, tcl_ok=no) fi if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -lpthread" else - AC_CHECK_LIB(pthreads,pthread_mutex_init,tcl_ok=yes,tcl_ok=no) + AC_CHECK_LIB(pthreads, pthread_mutex_init, + tcl_ok=yes, tcl_ok=no) if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -lpthreads" else - AC_CHECK_LIB(c,pthread_mutex_init,tcl_ok=yes,tcl_ok=no) - if test "$tcl_ok" = "no"; then - AC_CHECK_LIB(c_r,pthread_mutex_init,tcl_ok=yes,tcl_ok=no) + AC_CHECK_LIB(c, pthread_mutex_init, + tcl_ok=yes, tcl_ok=no) + if test "$tcl_ok" = "no"; then + AC_CHECK_LIB(c_r, pthread_mutex_init, + tcl_ok=yes, tcl_ok=no) if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -pthread" else TCL_THREADS=0 - AC_MSG_WARN("Don t know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...") + AC_MSG_WARN([Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...]) fi - fi + fi fi fi @@ -559,8 +658,20 @@ AC_DEFUN(SC_ENABLE_THREADS, [ LIBS=$ac_saved_libs else TCL_THREADS=0 + fi + # Do checking message here to not mess up interleaved configure output + AC_MSG_CHECKING([for building with threads]) + if test "${TCL_THREADS}" = 1; then + AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?]) + if test "${tcl_threaded_core}" = 1; then + AC_MSG_RESULT([yes (threaded core)]) + else + AC_MSG_RESULT([yes]) + fi + else AC_MSG_RESULT([no (default)]) fi + AC_SUBST(TCL_THREADS) ]) @@ -666,7 +777,7 @@ AC_DEFUN(SC_ENABLE_LANGINFO, [ AC_CACHE_VAL(tcl_cv_langinfo_h, AC_TRY_COMPILE([#include ], [nl_langinfo(CODESET);], [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])) - AC_MSG_RESULT($tcl_cv_langinfo_h) + AC_MSG_RESULT([$tcl_cv_langinfo_h]) if test $tcl_cv_langinfo_h = yes; then AC_DEFINE(HAVE_LANGINFO) fi @@ -714,8 +825,11 @@ AC_DEFUN(SC_CONFIG_MANPAGES, [ AC_ARG_ENABLE(man-compression, [ --enable-man-compression=PROG compress the manpages with PROG], - test "$enableval" = "yes" && AC_MSG_ERROR([missing argument to --enable-man-compression]) - test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --compress $enableval", + [case $enableval in + yes) AC_MSG_ERROR([missing argument to --enable-man-compression]);; + no) ;; + *) MAN_FLAGS="$MAN_FLAGS --compress $enableval";; + esac], enableval="no") AC_MSG_RESULT([$enableval]) if test "$enableval" != "no"; then @@ -733,8 +847,11 @@ AC_DEFUN(SC_CONFIG_MANPAGES, [ [ --enable-man-suffix=STRING use STRING as a suffix to manpage file names (default: $1)], - test "$enableval" = "yes" && enableval="$1" - test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --suffix $enableval", + [case $enableval in + yes) enableval="$1" MAN_FLAGS="$MAN_FLAGS --suffix $enableval";; + no) ;; + *) MAN_FLAGS="$MAN_FLAGS --suffix $enableval";; + esac], enableval="no") AC_MSG_RESULT([$enableval]) @@ -742,6 +859,49 @@ AC_DEFUN(SC_CONFIG_MANPAGES, [ ]) #-------------------------------------------------------------------- +# SC_CONFIG_SYSTEM +# +# Determine what the system is (some things cannot be easily checked +# on a feature-driven basis, alas). This can usually be done via the +# "uname" command, but there are a few systems, like Next, where +# this doesn't work. +# +# Arguments: +# none +# +# Results: +# Defines the following var: +# +# system - System/platform/version identification code. +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_CONFIG_SYSTEM, [ + AC_CACHE_CHECK([system version], tcl_cv_sys_version, [ + if test -f /usr/lib/NextStep/software_version; then + tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` + else + tcl_cv_sys_version=`uname -s`-`uname -r` + if test "$?" -ne 0 ; then + AC_MSG_WARN([can't find uname command]) + tcl_cv_sys_version=unknown + else + # Special check for weird MP-RAS system (uname returns weird + # results, and the version is kept in special file). + + if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then + tcl_cv_sys_version=MP-RAS-`awk '{print $3}' /etc/.relid` + fi + if test "`uname -s`" = "AIX" ; then + tcl_cv_sys_version=AIX-`uname -v`.`uname -r` + fi + fi + fi + ]) + system=$tcl_cv_sys_version +]) + +#-------------------------------------------------------------------- # SC_CONFIG_CFLAGS # # Try to determine the proper flags to pass to the compiler @@ -839,54 +999,26 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ # Step 0.a: Enable 64 bit support? AC_MSG_CHECKING([if 64bit support is requested]) - AC_ARG_ENABLE(64bit,[ --enable-64bit enable 64bit support (where applicable)],,enableval="no") - - if test "$enableval" = "yes"; then - do64bit=yes - else - do64bit=no - fi - AC_MSG_RESULT($do64bit) + AC_ARG_ENABLE(64bit,[ --enable-64bit enable 64bit support (where applicable)], + [do64bit=$enableval], [do64bit=no]) + AC_MSG_RESULT([$do64bit]) # Step 0.b: Enable Solaris 64 bit VIS support? AC_MSG_CHECKING([if 64bit Sparc VIS support is requested]) - AC_ARG_ENABLE(64bit-vis,[ --enable-64bit-vis enable 64bit Sparc VIS support],,enableval="no") + AC_ARG_ENABLE(64bit-vis,[ --enable-64bit-vis enable 64bit Sparc VIS support], + [do64bitVIS=$enableval], [do64bitVIS=no]) + AC_MSG_RESULT([$do64bitVIS]) - if test "$enableval" = "yes"; then + if test "$do64bitVIS" = "yes"; then # Force 64bit on with VIS do64bit=yes - do64bitVIS=yes - else - do64bitVIS=no fi - AC_MSG_RESULT($do64bitVIS) # Step 1: set the variable "system" to hold the name and version number - # for the system. This can usually be done via the "uname" command, but - # there are a few systems, like Next, where this doesn't work. + # for the system. - AC_MSG_CHECKING([system version (for dynamic loading)]) - if test -f /usr/lib/NextStep/software_version; then - system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` - else - system=`uname -s`-`uname -r` - if test "$?" -ne 0 ; then - AC_MSG_RESULT([unknown (can't find uname command)]) - system=unknown - else - # Special check for weird MP-RAS system (uname returns weird - # results, and the version is kept in special file). - - if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print $3}' /etc/.relid` - fi - if test "`uname -s`" = "AIX" ; then - system=AIX-`uname -v`.`uname -r` - fi - AC_MSG_RESULT($system) - fi - fi + SC_CONFIG_SYSTEM # Step 2: check for existence of -ldl library. This is needed because # Linux can use either -ldl or -ldld for dynamic loading. @@ -1090,18 +1222,18 @@ dnl AC_CHECK_TOOL(AR, ar) # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then - hpux_arch=`gcc -dumpmachine` + hpux_arch=`${CC} -dumpmachine` case $hpux_arch in hppa64*) # 64-bit gcc in use. Fix flags for GNU ld. do64bit_ok=yes - SHLIB_LD="gcc -shared" + SHLIB_LD="${CC} -shared" SHLIB_LD_LIBS='${LIBS}' CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ;; *) - AC_MSG_WARN("64bit mode not supported with GCC on $system") + AC_MSG_WARN([64bit mode not supported with GCC on $system]) ;; esac else @@ -1310,17 +1442,17 @@ dnl AC_CHECK_TOOL(AR, ar) DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - AC_MSG_CHECKING(for ELF) - AC_EGREP_CPP(yes, [ + AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [ + AC_EGREP_CPP(yes, [ #ifdef __ELF__ yes #endif - ], - AC_MSG_RESULT(yes) - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so', - AC_MSG_RESULT(no) + ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)]) + if test $tcl_cv_ld_elf = yes; then + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' + else SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - ) + fi ], [ SHLIB_CFLAGS="" SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" @@ -1368,17 +1500,17 @@ dnl AC_CHECK_TOOL(AR, ar) CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - AC_MSG_CHECKING(for ELF) - AC_EGREP_CPP(yes, [ + AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [ + AC_EGREP_CPP(yes, [ #ifdef __ELF__ yes #endif - ], - AC_MSG_RESULT(yes) - [ LDFLAGS=-Wl,-export-dynamic ], - AC_MSG_RESULT(no) + ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)]) + if test $tcl_cv_ld_elf = yes; then + LDFLAGS=-Wl,-export-dynamic + else LDFLAGS="" - ) + fi ;; esac @@ -1501,8 +1633,8 @@ dnl AC_CHECK_TOOL(AR, ar) LD_SEARCH_FLAGS="" ;; OS/390-*) - CFLAGS_OPTIMIZE="" # Optimizer is buggy - AC_DEFINE(_OE_SOCKETS) # needed in sys/socket.h + CFLAGS_OPTIMIZE="" # Optimizer is buggy + AC_DEFINE(_OE_SOCKETS) # needed in sys/socket.h ;; OSF1-1.0|OSF1-1.1|OSF1-1.2) # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 @@ -1760,12 +1892,14 @@ dnl AC_CHECK_TOOL(AR, ar) DL_LIBS="-ldl" # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. - hold_ldflags=$LDFLAGS - AC_MSG_CHECKING(for ld accepts -Bexport flag) - LDFLAGS="$LDFLAGS -Wl,-Bexport" - AC_TRY_LINK(, [int i;], [found=yes], - [LDFLAGS=$hold_ldflags found=no]) - AC_MSG_RESULT($found) + AC_CACHE_CHECK([for ld accepts -Bexport flag], tcl_cv_ld_Bexport, [ + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-Bexport" + AC_TRY_LINK(, [int i;], tcl_cv_ld_Bexport=yes, tcl_cv_ld_Bexport=no) + LDFLAGS=$hold_ldflags]) + if test $tcl_cv_ld_Bexport = yes; then + LDFLAGS="$LDFLAGS -Wl,-Bexport" + fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; @@ -1795,7 +1929,7 @@ dnl AC_CHECK_TOOL(AR, ar) # duplicates the v7 fields that are needed. if test "x$DL_OBJS" = "xtclLoadAout.o" ; then - AC_MSG_CHECKING(sys/exec.h) + AC_CACHE_CHECK([sys/exec.h], tcl_cv_sysexec_h, [ AC_TRY_COMPILE([#include ],[ struct exec foo; unsigned long seek; @@ -1807,12 +1941,11 @@ dnl AC_CHECK_TOOL(AR, ar) #endif flag = (foo.a_magic == OMAGIC); return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - ], tcl_ok=usable, tcl_ok=unusable) - AC_MSG_RESULT($tcl_ok) - if test $tcl_ok = usable; then + ], tcl_cv_sysexec_h=usable, tcl_cv_sysexec_h=unusable)]) + if test $tcl_cv_sysexec_h = usable; then AC_DEFINE(USE_SYS_EXEC_H) else - AC_MSG_CHECKING(a.out.h) + AC_CACHE_CHECK([a.out.h], tcl_cv_aout_h, [ AC_TRY_COMPILE([#include ],[ struct exec foo; unsigned long seek; @@ -1824,12 +1957,11 @@ dnl AC_CHECK_TOOL(AR, ar) #endif flag = (foo.a_magic == OMAGIC); return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - ], tcl_ok=usable, tcl_ok=unusable) - AC_MSG_RESULT($tcl_ok) - if test $tcl_ok = usable; then + ], tcl_cv_aout_h=usable, tcl_cv_aout_h=unusable)]) + if test $tcl_cv_aout_h = usable; then AC_DEFINE(USE_A_OUT_H) else - AC_MSG_CHECKING(sys/exec_aout.h) + AC_CACHE_CHECK([sys/exec_aout.h], tcl_cv_sysexecaout_h, [ AC_TRY_COMPILE([#include ],[ struct exec foo; unsigned long seek; @@ -1841,9 +1973,8 @@ dnl AC_CHECK_TOOL(AR, ar) #endif flag = (foo.a_midmag == OMAGIC); return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - ], tcl_ok=usable, tcl_ok=unusable) - AC_MSG_RESULT($tcl_ok) - if test $tcl_ok = usable; then + ], tcl_cv_sysexecaout_h=usable, tcl_cv_sysexecaout_h=unusable)]) + if test $tcl_cv_sysexecaout_h = usable; then AC_DEFINE(USE_SYS_EXEC_AOUT_H) else DL_OBJS="" @@ -2009,8 +2140,7 @@ dnl esac AC_DEFUN(SC_SERIAL_PORT, [ AC_CHECK_HEADERS(sys/modem.h) - AC_MSG_CHECKING([termios vs. termio vs. sgtty]) - AC_CACHE_VAL(tcl_cv_api_serial, [ + AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [ AC_TRY_RUN([ #include @@ -2102,7 +2232,6 @@ int main() { termio) AC_DEFINE(USE_TERMIO);; sgtty) AC_DEFINE(USE_SGTTY);; esac - AC_MSG_RESULT($tcl_cv_api_serial) ]) #-------------------------------------------------------------------- @@ -2137,8 +2266,7 @@ int main() { #-------------------------------------------------------------------- AC_DEFUN(SC_MISSING_POSIX_HEADERS, [ - AC_MSG_CHECKING(dirent.h) - AC_CACHE_VAL(tcl_cv_dirent_h, + AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, AC_TRY_LINK([#include #include ], [ #ifndef _POSIX_SOURCE @@ -2164,7 +2292,6 @@ closedir(d); AC_DEFINE(NO_DIRENT_H) fi - AC_MSG_RESULT($tcl_ok) AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H)]) AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H)]) AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H)]) @@ -2229,14 +2356,14 @@ AC_DEFUN(SC_PATH_X, [ fi fi if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then - AC_MSG_CHECKING(for X11 header files) + AC_MSG_CHECKING([for X11 header files]) found_xincludes="no" AC_TRY_CPP([#include ], found_xincludes="yes", found_xincludes="no") if test "$found_xincludes" = "no"; then dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include" for i in $dirs ; do if test -r $i/X11/Intrinsic.h; then - AC_MSG_RESULT($i) + AC_MSG_RESULT([$i]) XINCLUDES=" -I$i" found_xincludes="yes" break @@ -2250,16 +2377,16 @@ AC_DEFUN(SC_PATH_X, [ fi fi if test found_xincludes = "no"; then - AC_MSG_RESULT(couldn't find any!) + AC_MSG_RESULT([couldn't find any!]) fi if test "$no_x" = yes; then - AC_MSG_CHECKING(for X11 libraries) + AC_MSG_CHECKING([for X11 libraries]) XLIBSW=nope dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib" for i in $dirs ; do if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then - AC_MSG_RESULT($i) + AC_MSG_RESULT([$i]) XLIBSW="-L$i -lX11" x_libraries="$i" break @@ -2276,7 +2403,7 @@ AC_DEFUN(SC_PATH_X, [ AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow) fi if test "$XLIBSW" = nope ; then - AC_MSG_RESULT(couldn't find any! Using -lX11.) + AC_MSG_RESULT([could not find any! Using -lX11.]) XLIBSW=-lX11 fi ]) @@ -2305,25 +2432,8 @@ AC_DEFUN(SC_PATH_X, [ AC_DEFUN(SC_BLOCKING_STYLE, [ AC_CHECK_HEADERS(sys/ioctl.h) AC_CHECK_HEADERS(sys/filio.h) + SC_CONFIG_SYSTEM AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O]) - if test -f /usr/lib/NextStep/software_version; then - system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` - else - system=`uname -s`-`uname -r` - if test "$?" -ne 0 ; then - system=unknown - else - # Special check for weird MP-RAS system (uname returns weird - # results, and the version is kept in special file). - - if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - system=MP-RAS-`awk '{print $3}' /etc/.relid` - fi - if test "`uname -s`" = "AIX" ; then - system=AIX-`uname -v`.`uname -r` - fi - fi - fi case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -2332,18 +2442,18 @@ AC_DEFUN(SC_BLOCKING_STYLE, [ OSF*) AC_DEFINE(USE_FIONBIO) - AC_MSG_RESULT(FIONBIO) + AC_MSG_RESULT([FIONBIO]) ;; SunOS-4*) AC_DEFINE(USE_FIONBIO) - AC_MSG_RESULT(FIONBIO) + AC_MSG_RESULT([FIONBIO]) ;; ULTRIX-4.*) AC_DEFINE(USE_FIONBIO) - AC_MSG_RESULT(FIONBIO) + AC_MSG_RESULT([FIONBIO]) ;; *) - AC_MSG_RESULT(O_NONBLOCK) + AC_MSG_RESULT([O_NONBLOCK]) ;; esac ]) @@ -2374,20 +2484,16 @@ AC_DEFUN(SC_TIME_HANDLER, [ AC_CHECK_FUNCS(gmtime_r localtime_r) - AC_MSG_CHECKING([tm_tzadj in struct tm]) - AC_CACHE_VAL(tcl_cv_member_tm_tzadj, + AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_tzadj;], tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)) - AC_MSG_RESULT($tcl_cv_member_tm_tzadj) if test $tcl_cv_member_tm_tzadj = yes ; then AC_DEFINE(HAVE_TM_TZADJ) fi - AC_MSG_CHECKING([tm_gmtoff in struct tm]) - AC_CACHE_VAL(tcl_cv_member_tm_gmtoff, + AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_gmtoff;], tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)) - AC_MSG_RESULT($tcl_cv_member_tm_gmtoff) if test $tcl_cv_member_tm_gmtoff = yes ; then AC_DEFINE(HAVE_TM_GMTOFF) fi @@ -2396,28 +2502,24 @@ AC_DEFUN(SC_TIME_HANDLER, [ # Its important to include time.h in this check, as some systems # (like convex) have timezone functions, etc. # - AC_MSG_CHECKING([long timezone variable]) - AC_CACHE_VAL(tcl_cv_timezone_long, + AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, AC_TRY_COMPILE([#include ], [extern long timezone; timezone += 1; exit (0);], tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)) - AC_MSG_RESULT($tcl_cv_timezone_long) if test $tcl_cv_timezone_long = yes ; then AC_DEFINE(HAVE_TIMEZONE_VAR) else # # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # - AC_MSG_CHECKING([time_t timezone variable]) - AC_CACHE_VAL(tcl_cv_timezone_time, + AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, AC_TRY_COMPILE([#include ], [extern time_t timezone; timezone += 1; exit (0);], tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)) - AC_MSG_RESULT($tcl_cv_timezone_time) if test $tcl_cv_timezone_time = yes ; then AC_DEFINE(HAVE_TIMEZONE_VAR) fi @@ -2447,8 +2549,7 @@ AC_DEFUN(SC_TIME_HANDLER, [ AC_DEFUN(SC_BUGGY_STRTOD, [ AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0) if test "$tcl_strtod" = 1; then - AC_MSG_CHECKING([for Solaris2.4/Tru64 strtod bugs]) - AC_CACHE_VAL(tcl_cv_strtod_buggy,[ + AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[ AC_TRY_RUN([ extern double strtod(); int main() { @@ -2468,11 +2569,9 @@ AC_DEFUN(SC_BUGGY_STRTOD, [ exit(1); } exit(0); - }], tcl_cv_strtod_buggy=1, tcl_cv_strtod_buggy=0, tcl_cv_strtod_buggy=0)]) - if test "$tcl_cv_strtod_buggy" = 1; then - AC_MSG_RESULT(ok) - else - AC_MSG_RESULT(buggy) + }], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy, + tcl_cv_strtod_buggy=buggy)]) + if test "$tcl_cv_strtod_buggy" = buggy; then LIBOBJS="$LIBOBJS fixstrtod.o" AC_DEFINE(strtod, fixstrtod) fi @@ -2593,7 +2692,8 @@ AC_DEFUN(SC_TCL_EARLY_FLAG,[ if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then AC_DEFINE($1) tcl_flags="$tcl_flags $1" - fi]) + fi +]) AC_DEFUN(SC_TCL_EARLY_FLAGS,[ AC_MSG_CHECKING([for required early compiler flags]) @@ -2605,10 +2705,11 @@ AC_DEFUN(SC_TCL_EARLY_FLAGS,[ SC_TCL_EARLY_FLAG(_LARGEFILE_SOURCE64,[#include ], [char *p = (char *)open64;]) if test "x${tcl_flags}" = "x" ; then - AC_MSG_RESULT(none) + AC_MSG_RESULT([none]) else - AC_MSG_RESULT(${tcl_flags}) - fi]) + AC_MSG_RESULT([${tcl_flags}]) + fi +]) #-------------------------------------------------------------------- # SC_TCL_64BIT_FLAGS @@ -2644,31 +2745,27 @@ AC_DEFUN(SC_TCL_64BIT_FLAGS, [ }],tcl_cv_type_64bit=${tcl_type_64bit})]) if test "${tcl_cv_type_64bit}" = none ; then AC_DEFINE(TCL_WIDE_INT_IS_LONG) - AC_MSG_RESULT(using long) + AC_MSG_RESULT([using long]) else AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit}) - AC_MSG_RESULT(${tcl_cv_type_64bit}) + AC_MSG_RESULT([${tcl_cv_type_64bit}]) # Now check for auxiliary declarations - AC_MSG_CHECKING([for struct dirent64]) - AC_CACHE_VAL(tcl_cv_struct_dirent64,[ + AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[ AC_TRY_COMPILE([#include #include ],[struct dirent64 p;], tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)]) if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then AC_DEFINE(HAVE_STRUCT_DIRENT64) fi - AC_MSG_RESULT(${tcl_cv_struct_dirent64}) - AC_MSG_CHECKING([for struct stat64]) - AC_CACHE_VAL(tcl_cv_struct_stat64,[ + AC_CACHE_CHECK([for struct stat64], tcl_cv_struct_stat64,[ AC_TRY_COMPILE([#include ],[struct stat64 p; ], tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)]) if test "x${tcl_cv_struct_stat64}" = "xyes" ; then AC_DEFINE(HAVE_STRUCT_STAT64) fi - AC_MSG_RESULT(${tcl_cv_struct_stat64}) AC_CHECK_FUNCS(open64 lseek64) AC_MSG_CHECKING([for off64_t]) @@ -2682,8 +2779,9 @@ AC_DEFUN(SC_TCL_64BIT_FLAGS, [ test "x${ac_cv_func_lseek64}" = "xyes" && \ test "x${ac_cv_func_open64}" = "xyes" ; then AC_DEFINE(HAVE_TYPE_OFF64_T) - AC_MSG_RESULT(yes) + AC_MSG_RESULT([yes]) else - AC_MSG_RESULT(no) + AC_MSG_RESULT([no]) fi - fi]) + fi +]) -- cgit v0.12 From a2bbe3ab2d309791fea2520b7aa162a2f8d27cf8 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 11 Jan 2006 17:15:46 +0000 Subject: * tests/error.test (error-7.0): Test the timing of write traces on ::errorInfo [Bug 1397843]. --- ChangeLog | 5 +++++ tests/error.test | 22 +++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 25eb9fe..8c030b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-01-11 Don Porter + + * tests/error.test (error-7.0): Test the timing of write traces + on ::errorInfo [Bug 1397843]. + 2006-01-10 Daniel Steffen * unix/configure: add caching, use AC_CACHE_CHECK instead of diff --git a/tests/error.test b/tests/error.test index 737faa4..b79a21f 100644 --- a/tests/error.test +++ b/tests/error.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: error.test,v 1.9.2.1 2004/10/26 20:14:36 dgp Exp $ +# RCS: @(#) $Id: error.test,v 1.9.2.2 2006/01/11 17:15:47 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -200,6 +200,26 @@ test error-6.9 {catch must reset error state} { list $errorCode } {NONE} +namespace eval ::tcl::test::error { + test error-7.0 {Bug 1397843} -body { + variable cmds + proc EIWrite args { + variable cmds + lappend cmds [lindex [info level -2] 0] + } + proc BadProc {} { + set i a + incr i + } + trace add variable ::errorInfo write [namespace code EIWrite] + catch BadProc + trace remove variable ::errorInfo write [namespace code EIWrite] + set cmds + } -match glob -result {*BadProc*} +} +namespace delete ::tcl::test::error + + # cleanup catch {rename p ""} -- cgit v0.12 From 4190757058d4216a53bcb641a6bf1ebd4cd15b00 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 11 Jan 2006 17:29:46 +0000 Subject: increment tcltest version requirement --- tests/error.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/error.test b/tests/error.test index b79a21f..2175080 100644 --- a/tests/error.test +++ b/tests/error.test @@ -11,10 +11,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: error.test,v 1.9.2.2 2006/01/11 17:15:47 dgp Exp $ +# RCS: @(#) $Id: error.test,v 1.9.2.3 2006/01/11 17:29:46 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } -- cgit v0.12 From 8fdd6a29a9c9eb192eadf1c481e74db3162cc3d3 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 12 Jan 2006 18:03:46 +0000 Subject: Fixed potential overwriting of already freed memory which caused all kinds of (rare but reproducible) coredumps all over the place. --- ChangeLog | 6 ++++++ generic/tclIOUtil.c | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8c030b8..0aeb4cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-01-12 Zoran Vasiljevic + + * generic/tclIOUtil.c (Tcl_FSGetInternalRep): fixed potential + overwriting of already freed memory which caused all kinds of + (rare but reproducible) coredumps all over the place. + 2006-01-11 Don Porter * tests/error.test (error-7.0): Test the timing of write traces diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 638355c..5e0acbb 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.24 2005/12/15 04:08:26 das Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.25 2006/01/12 18:03:48 vasiljevic Exp $ */ #include "tclInt.h" @@ -5863,12 +5863,16 @@ Tcl_FSGetInternalRep(pathObjPtr, fsPtr) if (srcFsPathPtr->nativePathPtr == NULL) { Tcl_FSCreateInternalRepProc *proc; - proc = srcFsPathPtr->fsRecPtr->fsPtr->createInternalRepProc; + char *nativePathPtr; + proc = srcFsPathPtr->fsRecPtr->fsPtr->createInternalRepProc; if (proc == NULL) { return NULL; } - srcFsPathPtr->nativePathPtr = (*proc)(pathObjPtr); + + nativePathPtr = (*proc)(pathObjPtr); + srcFsPathPtr = (FsPath*) PATHOBJ(pathObjPtr); + srcFsPathPtr->nativePathPtr = nativePathPtr; } return srcFsPathPtr->nativePathPtr; -- cgit v0.12 From f388a5c71529a9aa4ed00cadbd0551e19c8c32bb Mon Sep 17 00:00:00 2001 From: rmax Date: Mon, 16 Jan 2006 19:31:18 +0000 Subject: * generic/tclPipe.c (FileForRedirect): Prevent nameString from being freed without having been initialized. * tests/exec.test: Added a test for the above. --- ChangeLog | 6 ++++++ generic/tclPipe.c | 9 ++++----- tests/exec.test | 8 ++++++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0aeb4cc..6b6b24d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-01-16 Reinhard Max + + * generic/tclPipe.c (FileForRedirect): Prevent nameString from + being freed without having been initialized. + * tests/exec.test: Added a test for the above. + 2006-01-12 Zoran Vasiljevic * generic/tclIOUtil.c (Tcl_FSGetInternalRep): fixed potential diff --git a/generic/tclPipe.c b/generic/tclPipe.c index 9750131..accfd62 100644 --- a/generic/tclPipe.c +++ b/generic/tclPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPipe.c,v 1.7.2.3 2005/10/05 22:09:11 andreas_kupries Exp $ + * RCS: @(#) $Id: tclPipe.c,v 1.7.2.4 2006/01/16 19:31:18 rmax Exp $ */ #include "tclInt.h" @@ -135,11 +135,10 @@ FileForRedirect(interp, spec, atOK, arg, nextArg, flags, skipPtr, closePtr, *skipPtr = 2; } name = Tcl_TranslateFileName(interp, spec, &nameString); - if (name != NULL) { - file = TclpOpenFile(name, flags); - } else { - file = NULL; + if (name == NULL) { + return NULL; } + file = TclpOpenFile(name, flags); Tcl_DStringFree(&nameString); if (file == NULL) { Tcl_AppendResult(interp, "couldn't ", diff --git a/tests/exec.test b/tests/exec.test index 0dccf37..b4d3216 100644 --- a/tests/exec.test +++ b/tests/exec.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: exec.test,v 1.16.2.6 2005/11/04 18:33:35 patthoyts Exp $ +# RCS: @(#) $Id: exec.test,v 1.16.2.7 2006/01/16 19:31:19 rmax Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -402,7 +402,11 @@ test exec-10.20 {errors in exec invocation} {exec} { test exec-10.21 {errors in exec invocation} {exec} { list [catch {exec [interpreter] true | ~xyzzy_bad_user/x | false} msg] $msg } {1 {user "xyzzy_bad_user" doesn't exist}} - +test exec-10.22 {errors in exec invocation} \ +-constraints exec \ +-returnCodes 1 \ +-body {exec echo test > ~non_existent_user/foo/bar} \ +-result {user "non_existent_user" doesn't exist} # Commands in background. test exec-11.1 {commands in background} {exec} { -- cgit v0.12 From 81f0f7d83c0d31ad950d4d757b3e12848859d980 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 23 Jan 2006 11:24:36 +0000 Subject: * generic/tclStringObj.c: fixed incorrect handling of internal rep in Tcl_GetRange [Bug 1410553]. Thanks to twylite and Peter Spjuth. --- ChangeLog | 5 +++++ generic/tclStringObj.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6b6b24d..955cde2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-01-23 Miguel Sofer + + * generic/tclStringObj.c: fixed incorrect handling of internal rep + in Tcl_GetRange [Bug 1410553]. Thanks to twylite and Peter Spjuth. + 2006-01-16 Reinhard Max * generic/tclPipe.c (FileForRedirect): Prevent nameString from diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 5925451..9ec2f63 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32 2003/02/19 16:43:28 das Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.1 2006/01/23 11:24:36 msofer Exp $ */ #include "tclInt.h" @@ -642,7 +642,7 @@ Tcl_GetRange(objPtr, first, last) stringPtr = GET_STRING(objPtr); } - if (stringPtr->numChars == objPtr->length) { + if (objPtr->bytes && stringPtr->numChars == objPtr->length) { char *str = Tcl_GetString(objPtr); /* -- cgit v0.12 From 896bde52130e400c7a023c128d609664b290ab3b Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 23 Jan 2006 11:48:25 +0000 Subject: added test for [Bug 1410553] --- ChangeLog | 6 ++++-- tests/string.test | 12 +++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 955cde2..4d0695f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,9 @@ 2006-01-23 Miguel Sofer - * generic/tclStringObj.c: fixed incorrect handling of internal rep - in Tcl_GetRange [Bug 1410553]. Thanks to twylite and Peter Spjuth. + * generic/tclStringObj.c (Tcl_GetRange): + * tests/stringTest (string-12.21):fixed incorrect handling of + internal rep in Tcl_GetRange [Bug 1410553]. Thanks to twylite and + Peter Spjuth. 2006-01-16 Reinhard Max diff --git a/tests/string.test b/tests/string.test index ec730b7..8548c31 100644 --- a/tests/string.test +++ b/tests/string.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: string.test,v 1.36.2.5 2005/05/11 00:48:01 hobbs Exp $ +# RCS: @(#) $Id: string.test,v 1.36.2.6 2006/01/23 11:48:25 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1052,6 +1052,16 @@ test string-12.19 {string range, bytearray object} { test string-12.20 {string range, out of bounds indices} { string range \u00ff 0 1 } \u00ff +test string-12.21 {string range, unicode, bug 1410553} { + set buf {} + foreach ch "\x00 \x03 \x41" { + append buf $ch + if {$ch == "\x03"} { + string length $buf + } + } + expr {[string range $buf end-1 end] eq "\x03\x41"} +} 1 test string-13.1 {string repeat} { list [catch {string repeat} msg] $msg -- cgit v0.12 From 0bd132708f79e0993a249078c60184ec6d2d52b7 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 23 Jan 2006 12:11:15 +0000 Subject: replaced new test string-12.21 with dkf's version from HEAD --- tests/string.test | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/tests/string.test b/tests/string.test index 8548c31..8bd2dfa 100644 --- a/tests/string.test +++ b/tests/string.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: string.test,v 1.36.2.6 2006/01/23 11:48:25 msofer Exp $ +# RCS: @(#) $Id: string.test,v 1.36.2.7 2006/01/23 12:11:15 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1052,16 +1052,21 @@ test string-12.19 {string range, bytearray object} { test string-12.20 {string range, out of bounds indices} { string range \u00ff 0 1 } \u00ff -test string-12.21 {string range, unicode, bug 1410553} { - set buf {} - foreach ch "\x00 \x03 \x41" { - append buf $ch - if {$ch == "\x03"} { - string length $buf +test string-12.21 {string range, regenerates correct reps, bug 1410553} { + set bytes "\x00 \x03 \x41" + set rxBuffer {} + foreach ch $bytes { + append rxBuffer $ch + if {$ch eq "\x03"} { + string length $rxBuffer } } - expr {[string range $buf end-1 end] eq "\x03\x41"} -} 1 + set rxCRC [string range $rxBuffer end-1 end] + binary scan [join $bytes {}] "H*" input_hex + binary scan $rxBuffer "H*" rxBuffer_hex + binary scan $rxCRC "H*" rxCRC_hex + list $input_hex $rxBuffer_hex $rxCRC_hex +} {000341 000341 0341} test string-13.1 {string repeat} { list [catch {string repeat} msg] $msg -- cgit v0.12 From b298791bcca7b9d9ffc1af32bf415e7c5dcca498 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 25 Jan 2006 23:06:15 +0000 Subject: Backport of part of FreeBSD port --- ChangeLog | 5 +++++ unix/tclUnixInit.c | 13 ++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4d0695f..aaeef1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-01-25 Donal K. Fellows + + * unix/tclUnixInit.c (TclpInitPlatform): Improved conditions on when + to update the FP rounding mode on FreeBSD, taken from FreeBSD port. + 2006-01-23 Miguel Sofer * generic/tclStringObj.c (Tcl_GetRange): diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 13a8cee..34c36fb 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.11 2005/11/03 16:16:29 dgp Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.12 2006/01/25 23:06:16 dkf Exp $ */ #if defined(HAVE_COREFOUNDATION) @@ -19,7 +19,7 @@ #ifdef HAVE_LANGINFO #include #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && defined(__GNUC__) # include #endif #if defined(__bsdi__) @@ -204,7 +204,14 @@ TclpInitPlatform() (void) signal(SIGPIPE, SIG_IGN); #endif /* SIGPIPE */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && defined(__GNUC__) + /* + * Adjust the rounding mode to be more conventional. Note that FreeBSD + * only provides the __fpsetreg() used by the following two for the GNU + * Compiler. When using, say, Intel's icc they break. (Partially based on + * patch in BSD ports system from root@celsius.bychok.com) + */ + fpsetround(FP_RN); fpsetmask(0L); #endif -- cgit v0.12 From 2ee0284e217d46d0ed94cb877ea1fd72d5cd89ed Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 9 Feb 2006 15:23:51 +0000 Subject: * tests/main.test (Tcl_Main-6.7): Improved robustness of command auto-completion test. [Bug 1422736]. --- ChangeLog | 5 +++++ tests/main.test | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index aaeef1d..d6058fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-02-09 Don Porter + + * tests/main.test (Tcl_Main-6.7): Improved robustness of + command auto-completion test. [Bug 1422736]. + 2006-01-25 Donal K. Fellows * unix/tclUnixInit.c (TclpInitPlatform): Improved conditions on when diff --git a/tests/main.test b/tests/main.test index 54f012b..26b40eb 100644 --- a/tests/main.test +++ b/tests/main.test @@ -1,6 +1,6 @@ # This file contains a collection of tests for generic/tclMain.c. # -# RCS: @(#) $Id: main.test,v 1.13.2.1 2005/04/28 05:34:40 dgp Exp $ +# RCS: @(#) $Id: main.test,v 1.13.2.2 2006/02/09 15:23:52 dgp Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -847,6 +847,7 @@ namespace eval ::tcl::test::main { } -body { exec [interpreter] << { proc foo\{ x {} + set ::auto_noexec xxx set tcl_interactive 1 foo y} >& result set f [open result] -- cgit v0.12 From 8a69941cbf07e009343850ef3a370bcc7adf4f7e Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 15 Feb 2006 16:04:26 +0000 Subject: * generic/tclIO.c: Made several routines tolerant of * generic/tclIOUtil.c: interp == NULL arguments. [Bug 1380662] --- ChangeLog | 5 ++++ generic/tclIO.c | 66 +++++++++++++++++++++++++++++++++-------------------- generic/tclIOUtil.c | 6 +++-- 3 files changed, 50 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index d6058fd..ce43d9c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-02-15 Don Porter + + * generic/tclIO.c: Made several routines tolerant of + * generic/tclIOUtil.c: interp == NULL arguments. [Bug 1380662] + 2006-02-09 Don Porter * tests/main.test (Tcl_Main-6.7): Improved robustness of diff --git a/generic/tclIO.c b/generic/tclIO.c index e0cf01a..852af2b 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.17 2005/11/18 19:38:02 hobbs Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.18 2006/02/15 16:04:27 dgp Exp $ */ #include "tclInt.h" @@ -1310,8 +1310,10 @@ Tcl_StackChannel(interp, typePtr, instanceData, mask, prevChan) } if (statePtr == NULL) { - Tcl_AppendResult(interp, "couldn't find state for channel \"", - Tcl_GetChannelName(prevChan), "\"", (char *) NULL); + if (interp) { + Tcl_AppendResult(interp, "couldn't find state for channel \"", + Tcl_GetChannelName(prevChan), "\"", (char *) NULL); + } return (Tcl_Channel) NULL; } @@ -1329,9 +1331,11 @@ Tcl_StackChannel(interp, typePtr, instanceData, mask, prevChan) */ if ((mask & (statePtr->flags & (TCL_READABLE | TCL_WRITABLE))) == 0) { - Tcl_AppendResult(interp, - "reading and writing both disallowed for channel \"", - Tcl_GetChannelName(prevChan), "\"", (char *) NULL); + if (interp) { + Tcl_AppendResult(interp, + "reading and writing both disallowed for channel \"", + Tcl_GetChannelName(prevChan), "\"", (char *) NULL); + } return (Tcl_Channel) NULL; } @@ -1350,8 +1354,10 @@ Tcl_StackChannel(interp, typePtr, instanceData, mask, prevChan) if (Tcl_Flush((Tcl_Channel) prevChanPtr) != TCL_OK) { statePtr->csPtr = csPtr; - Tcl_AppendResult(interp, "could not flush channel \"", - Tcl_GetChannelName(prevChan), "\"", (char *) NULL); + if (interp) { + Tcl_AppendResult(interp, "could not flush channel \"", + Tcl_GetChannelName(prevChan), "\"", (char *) NULL); + } return (Tcl_Channel) NULL; } @@ -1477,9 +1483,11 @@ Tcl_UnstackChannel (interp, chan) if (Tcl_Flush((Tcl_Channel) chanPtr) != TCL_OK) { statePtr->csPtr = csPtr; - Tcl_AppendResult(interp, "could not flush channel \"", - Tcl_GetChannelName((Tcl_Channel) chanPtr), "\"", - (char *) NULL); + if (interp) { + Tcl_AppendResult(interp, "could not flush channel \"", + Tcl_GetChannelName((Tcl_Channel) chanPtr), "\"", + (char *) NULL); + } return TCL_ERROR; } @@ -2562,9 +2570,11 @@ Tcl_Close(interp, chan) } if (statePtr->flags & CHANNEL_INCLOSE) { - Tcl_AppendResult(interp, - "Illegal recursive call to close through close-handler of channel", - (char *) NULL); + if (interp) { + Tcl_AppendResult(interp, + "Illegal recursive call to close through close-handler of channel", + (char *) NULL); + } return TCL_ERROR; } statePtr->flags |= CHANNEL_INCLOSE; @@ -7574,13 +7584,17 @@ TclCopyChannel(interp, inChan, outChan, toRead, cmdPtr) outStatePtr = outPtr->state; if (inStatePtr->csPtr) { - Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "channel \"", - Tcl_GetChannelName(inChan), "\" is busy", NULL); + if (interp) { + Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "channel \"", + Tcl_GetChannelName(inChan), "\" is busy", NULL); + } return TCL_ERROR; } if (outStatePtr->csPtr) { - Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "channel \"", - Tcl_GetChannelName(outChan), "\" is busy", NULL); + if (interp) { + Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "channel \"", + Tcl_GetChannelName(outChan), "\" is busy", NULL); + } return TCL_ERROR; } @@ -7882,7 +7896,7 @@ CopyData(csPtr, mask) */ total = csPtr->total; - if (cmdPtr) { + if (cmdPtr && interp) { /* * Get a private copy of the command so we can mutate it * by adding arguments. Note that StopCopy frees our saved @@ -7906,12 +7920,14 @@ CopyData(csPtr, mask) Tcl_Release((ClientData) interp); } else { StopCopy(csPtr); - if (errObj) { - Tcl_SetObjResult(interp, errObj); - result = TCL_ERROR; - } else { - Tcl_ResetResult(interp); - Tcl_SetIntObj(Tcl_GetObjResult(interp), total); + if (interp) { + if (errObj) { + Tcl_SetObjResult(interp, errObj); + result = TCL_ERROR; + } else { + Tcl_ResetResult(interp); + Tcl_SetIntObj(Tcl_GetObjResult(interp), total); + } } } return result; diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 5e0acbb..84c9161 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.25 2006/01/12 18:03:48 vasiljevic Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.26 2006/02/15 16:04:29 dgp Exp $ */ #include "tclInt.h" @@ -1864,7 +1864,9 @@ Tcl_PosixError(interp) msg = Tcl_ErrnoMsg(errno); id = Tcl_ErrnoId(); - Tcl_SetErrorCode(interp, "POSIX", id, msg, (char *) NULL); + if (interp) { + Tcl_SetErrorCode(interp, "POSIX", id, msg, (char *) NULL); + } return msg; } -- cgit v0.12 From 516bd8eecdd1a001de9d6aff3e7ea01460b357b8 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 16 Feb 2006 20:21:54 +0000 Subject: * generic/tclIndexObj.c: Disallow the "ambiguous" error message * generic/indexObj.test: when TCL_EXACT matching is requested. --- ChangeLog | 5 +++++ generic/tclIndexObj.c | 6 +++--- tests/indexObj.test | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ce43d9c..7cfd7dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-02-16 Don Porter + + * generic/tclIndexObj.c: Disallow the "ambiguous" error message + * generic/indexObj.test: when TCL_EXACT matching is requested. + 2006-02-15 Don Porter * generic/tclIO.c: Made several routines tolerant of diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index 60d4931..bdfca15 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.1 2004/01/13 09:45:30 dkf Exp $ + * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.2 2006/02/16 20:21:54 dgp Exp $ */ #include "tclInt.h" @@ -274,8 +274,8 @@ Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, TclNewObj(resultPtr); Tcl_SetObjResult(interp, resultPtr); - Tcl_AppendStringsToObj(resultPtr, - (numAbbrev > 1) ? "ambiguous " : "bad ", msg, " \"", + Tcl_AppendStringsToObj(resultPtr, (numAbbrev > 1) && + !(flags & TCL_EXACT) ? "ambiguous " : "bad ", msg, " \"", key, "\": must be ", STRING_AT(tablePtr,offset,0), (char*)NULL); for (entryPtr = NEXT_ENTRY(tablePtr, offset), count = 0; *entryPtr != NULL; diff --git a/tests/indexObj.test b/tests/indexObj.test index 9a8a582..dee0dfa 100644 --- a/tests/indexObj.test +++ b/tests/indexObj.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: indexObj.test,v 1.7 2000/11/24 11:27:38 dkf Exp $ +# RCS: @(#) $Id: indexObj.test,v 1.7.18.1 2006/02/16 20:21:54 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -59,6 +59,9 @@ test indexObj-2.4 {ambiguous value} { test indexObj-2.5 {omit error message} { list [catch {testindexobj 0 1 d x} msg] $msg } {1 {}} +test indexObj-2.6 {TCL_EXACT => no "ambiguous" error message} { + list [catch {testindexobj 1 0 d dumb daughter a c} msg] $msg +} {1 {bad token "d": must be dumb, daughter, a, or c}} test indexObj-3.1 {cache result to skip next lookup} { testindexobj check 42 -- cgit v0.12 From 07a404f12e65c2c31b9f326556b7067abd8c9548 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 16 Feb 2006 20:24:00 +0000 Subject: typo --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7cfd7dc..7ab9659 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ 2006-02-16 Don Porter * generic/tclIndexObj.c: Disallow the "ambiguous" error message - * generic/indexObj.test: when TCL_EXACT matching is requested. + * tests/indexObj.test: when TCL_EXACT matching is requested. 2006-02-15 Don Porter -- cgit v0.12 From aea6c6f98570eb34604011e06d7fc4d5b9cc256a Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 28 Feb 2006 15:44:35 +0000 Subject: * generic/tclBasic.c: Corrections to be sure that TCL_EVAL_GLOBAL * tests/parse.test: evaluations act the same as [uplevel #0] * tests/trace.test: evaluations, even when execution traces or invocations of [::unknown] are present. [Bug 1439836]. --- ChangeLog | 7 +++++++ generic/tclBasic.c | 15 +++++++++++++-- tests/parse.test | 55 ++++++++++++++++++++++++++++++++++++++++++++---------- tests/trace.test | 36 ++++++++++++++++++++++++++++++++++- 4 files changed, 100 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ab9659..4b00641 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-02-28 Don Porter + + * generic/tclBasic.c: Corrections to be sure that TCL_EVAL_GLOBAL + * tests/parse.test: evaluations act the same as [uplevel #0] + * tests/trace.test: evaluations, even when execution traces or + invocations of [::unknown] are present. [Bug 1439836]. + 2006-02-16 Don Porter * generic/tclIndexObj.c: Disallow the "ambiguous" error message diff --git a/generic/tclBasic.c b/generic/tclBasic.c index b3474bb..f70af71 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.19 2005/11/18 23:07:26 msofer Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.20 2006/02/28 15:44:35 dgp Exp $ */ #include "tclInt.h" @@ -3034,7 +3034,8 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) code = TCL_ERROR; } else { iPtr->numLevels++; - code = TclEvalObjvInternal(interp, objc+1, newObjv, command, length, 0); + code = TclEvalObjvInternal(interp, objc+1, newObjv, + command, length, flags); iPtr->numLevels--; } Tcl_DecrRefCount(newObjv[0]); @@ -3053,6 +3054,10 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) * any existing traces, then the set checkTraces to 0 and * go through this while loop one more time. */ + savedVarFramePtr = iPtr->varFramePtr; + if (flags & TCL_EVAL_GLOBAL) { + iPtr->varFramePtr = NULL; + } if (iPtr->tracePtr != NULL && traceCode == TCL_OK) { traceCode = TclCheckInterpTraces(interp, command, length, cmdPtr, code, TCL_TRACE_ENTER_EXEC, objc, objv); @@ -3062,6 +3067,7 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) traceCode = TclCheckExecutionTraces(interp, command, length, cmdPtr, code, TCL_TRACE_ENTER_EXEC, objc, objv); } + iPtr->varFramePtr = savedVarFramePtr; cmdPtr->refCount--; if (cmdEpoch != cmdPtr->cmdEpoch) { /* The command has been modified in some way */ @@ -3095,6 +3101,10 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) if (!(cmdPtr->flags & CMD_IS_DELETED)) { int saveErrFlags = iPtr->flags & (ERR_IN_PROGRESS | ERR_ALREADY_LOGGED | ERROR_CODE_SET); + savedVarFramePtr = iPtr->varFramePtr; + if (flags & TCL_EVAL_GLOBAL) { + iPtr->varFramePtr = NULL; + } if ((cmdPtr->flags & CMD_HAS_EXEC_TRACES) && (traceCode == TCL_OK)) { traceCode = TclCheckExecutionTraces (interp, command, length, cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); @@ -3103,6 +3113,7 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) traceCode = TclCheckInterpTraces(interp, command, length, cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); } + iPtr->varFramePtr = savedVarFramePtr; if (traceCode == TCL_OK) { iPtr->flags |= saveErrFlags; } diff --git a/tests/parse.test b/tests/parse.test index 124ab0f..dae14e9 100644 --- a/tests/parse.test +++ b/tests/parse.test @@ -8,10 +8,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parse.test,v 1.11.2.2 2005/03/18 16:33:43 dgp Exp $ +# RCS: @(#) $Id: parse.test,v 1.11.2.3 2006/02/28 15:44:36 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -218,16 +218,17 @@ test parse-7.1 {Tcl_FreeParse and ExpandTokenArray procedures} { testparser {$a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) } 0 } {- {$a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) } 16 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 {}} -test parse-8.1 {Tcl_EvalObjv procedure} { +testConstraint testevalobjv [llength [info commands testevalobjv]] +test parse-8.1 {Tcl_EvalObjv procedure} testevalobjv { testevalobjv 0 concat this is a test } {this is a test} -test parse-8.2 {Tcl_EvalObjv procedure, unknown commands} { +test parse-8.2 {Tcl_EvalObjv procedure, unknown commands} testevalobjv { rename unknown unknown.old set x [catch {testevalobjv 10 asdf poiu} msg] rename unknown.old unknown list $x $msg } {1 {invalid command name "asdf"}} -test parse-8.3 {Tcl_EvalObjv procedure, unknown commands} { +test parse-8.3 {Tcl_EvalObjv procedure, unknown commands} testevalobjv { rename unknown unknown.old proc unknown args { return "unknown $args" @@ -237,7 +238,7 @@ test parse-8.3 {Tcl_EvalObjv procedure, unknown commands} { rename unknown.old unknown list $x $msg } {0 {unknown asdf poiu}} -test parse-8.4 {Tcl_EvalObjv procedure, unknown commands} { +test parse-8.4 {Tcl_EvalObjv procedure, unknown commands} testevalobjv { rename unknown unknown.old proc unknown args { error "I don't like that command" @@ -247,11 +248,11 @@ test parse-8.4 {Tcl_EvalObjv procedure, unknown commands} { rename unknown.old unknown list $x $msg } {1 {I don't like that command}} -test parse-8.5 {Tcl_EvalObjv procedure, command traces} { +test parse-8.5 {Tcl_EvalObjv procedure, command traces} testevalobjv { testevalobjv 0 set x 123 testcmdtrace tracetest {testevalobjv 0 set x $x} } {{testevalobjv 0 set x $x} {testevalobjv 0 set x 123} {set x 123} {set x 123}} -test parse-8.7 {Tcl_EvalObjv procedure, TCL_EVAL_GLOBAL flag} { +test parse-8.7 {Tcl_EvalObjv procedure, TCL_EVAL_GLOBAL flag} testevalobjv { proc x {} { set y 23 set z [testevalobjv 1 set y] @@ -261,7 +262,7 @@ test parse-8.7 {Tcl_EvalObjv procedure, TCL_EVAL_GLOBAL flag} { set y 16 x } {16 23} -test parse-8.8 {Tcl_EvalObjv procedure, async handlers} { +test parse-8.8 {Tcl_EvalObjv procedure, async handlers} testevalobjv { proc async1 {result code} { global aresult acode set aresult $result @@ -275,9 +276,43 @@ test parse-8.8 {Tcl_EvalObjv procedure, async handlers} { testasync delete set x } {0 {new result} 0 original} -test parse-8.9 {Tcl_EvalObjv procedure, exceptional return} { +test parse-8.9 {Tcl_EvalObjv procedure, exceptional return} testevalobjv { list [catch {testevalobjv 0 error message} msg] $msg } {1 message} +test parse-8.10 {Tcl_EvalObjv procedure, TCL_EVAL_GLOBAL} testevalobjv { + rename ::unknown unknown.save + proc ::unknown args {lappend ::info [info level]} + catch {rename ::noSuchCommand {}} + set ::info {} + namespace eval test_ns_1 { + testevalobjv 1 noSuchCommand + uplevel #0 noSuchCommand + } + namespace delete test_ns_1 + rename ::unknown {} + rename unknown.save ::unknown + set ::info +} {1 1} +test parse-8.11 {Tcl_EvalObjv procedure, TCL_EVAL_INVOKE} testevalobjv { + rename ::unknown unknown.save + proc ::unknown args {lappend ::info [info level]; uplevel 1 foo} + proc ::foo args {lappend ::info global} + catch {rename ::noSuchCommand {}} + set ::slave [interp create] + $::slave alias bar noSuchCommand + set ::info {} + namespace eval test_ns_1 { + proc foo args {lappend ::info namespace} + $::slave eval bar + testevalobjv 1 [list $::slave eval bar] + uplevel #0 [list $::slave eval bar] + } + namespace delete test_ns_1 + rename ::foo {} + rename ::unknown {} + rename unknown.save ::unknown + set ::info +} [subst {[set level 2; incr level [info level]] namespace 1 global 1 global}] test parse-9.1 {Tcl_LogCommandInfo, line numbers} { catch {unset x} diff --git a/tests/trace.test b/tests/trace.test index 4409fe1..21536ad 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.14 2005/11/18 23:44:37 msofer Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.15 2006/02/28 15:44:36 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -21,6 +21,8 @@ if {[lsearch [namespace children] ::tcltest] == -1} { # Used for constraining memory leak tests testConstraint memory [llength [info commands memory]] +testConstraint testevalobjv [llength [info commands testevalobjv]] + proc getbytes {} { set lines [split [memory info] "\n"] lindex [lindex $lines 3] 3 @@ -1590,6 +1592,38 @@ test trace-21.8 {trace execution: leavestep} { set info } {{foo {set b 3} 0 3 leavestep}} +test trace-21.9 {trace execution: TCL_EVAL_GLOBAL} testevalobjv { + trace add execution foo enter soom + proc ::soom args {lappend ::info SUCCESS [info level]} + set ::info {} + namespace eval test_ns_1 { + proc soom args {lappend ::info FAIL [info level]} + # [testevalobjv 1 ...] ought to produce the same + # results as [uplevel #0 ...]. + testevalobjv 1 foo x + uplevel #0 foo x + } + namespace delete test_ns_1 + trace remove execution foo enter soom + set ::info +} {SUCCESS 1 SUCCESS 1} + +test trace-21.10 {trace execution: TCL_EVAL_GLOBAL} testevalobjv { + trace add execution foo leave soom + proc ::soom args {lappend ::info SUCCESS [info level]} + set ::info {} + namespace eval test_ns_1 { + proc soom args {lappend ::info FAIL [info level]} + # [testevalobjv 1 ...] ought to produce the same + # results as [uplevel #0 ...]. + testevalobjv 1 foo x + uplevel #0 foo x + } + namespace delete test_ns_1 + trace remove execution foo leave soom + set ::info +} {SUCCESS 1 SUCCESS 1} + proc factorial {n} { if {$n != 1} { return [expr {$n * [factorial [expr {$n -1 }]]}] } return 1 -- cgit v0.12 From 4d8af4bcacdefec851b5633d2238e753b0b0437a Mon Sep 17 00:00:00 2001 From: patthoyts Date: Thu, 2 Mar 2006 01:08:00 +0000 Subject: * unix/tcl.m4: Fix for tk bug #1334613 to sort out shared library * unix/configure: issues on NetBSD. Regenerated configure script. --- ChangeLog | 5 +++++ unix/configure | 2 +- unix/tcl.m4 | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4b00641..d360344 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-03-02 Pat Thoyts + + * unix/tcl.m4: Fix for tk bug #1334613 to sort out shared library + * unix/configure: issues on NetBSD. Regenerated configure script. + 2006-02-28 Don Porter * generic/tclBasic.c: Corrections to be sure that TCL_EVAL_GLOBAL diff --git a/unix/configure b/unix/configure index 5ce4285..cb69701 100755 --- a/unix/configure +++ b/unix/configure @@ -3250,7 +3250,7 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then # NetBSD/SPARC needs -fPIC, -fpic will not do. SHLIB_CFLAGS="-fPIC" SHLIB_LD="ld -Bshareable -x" - SHLIB_LD_LIBS="" + SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 9b86a7b..462a443 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1436,7 +1436,7 @@ dnl AC_CHECK_TOOL(AR, ar) # NetBSD/SPARC needs -fPIC, -fpic will not do. SHLIB_CFLAGS="-fPIC" SHLIB_LD="ld -Bshareable -x" - SHLIB_LD_LIBS="" + SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" -- cgit v0.12 From ab8b6d06cfe67c28d49ea8cd2c93bd5e95d3bbaa Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 2 Mar 2006 21:06:36 +0000 Subject: []-quote ac_defun functions --- unix/tcl.m4 | 48 ++++++++++++++++++++++++------------------------ win/tcl.m4 | 22 +++++++++++----------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 462a443..353fc79 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -17,7 +17,7 @@ # the tclConfig.sh file #------------------------------------------------------------------------ -AC_DEFUN(SC_PATH_TCLCONFIG, [ +AC_DEFUN([SC_PATH_TCLCONFIG], [ # # Ok, lets find the tcl configuration # First, look for one uninstalled. @@ -137,7 +137,7 @@ AC_DEFUN(SC_PATH_TCLCONFIG, [ # the tkConfig.sh file #------------------------------------------------------------------------ -AC_DEFUN(SC_PATH_TKCONFIG, [ +AC_DEFUN([SC_PATH_TKCONFIG], [ # # Ok, lets find the tk configuration # First, look for one uninstalled. @@ -257,7 +257,7 @@ AC_DEFUN(SC_PATH_TKCONFIG, [ # #------------------------------------------------------------------------ -AC_DEFUN(SC_LOAD_TCLCONFIG, [ +AC_DEFUN([SC_LOAD_TCLCONFIG], [ AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh]) if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then @@ -339,7 +339,7 @@ AC_DEFUN(SC_LOAD_TCLCONFIG, [ # TK_BIN_DIR #------------------------------------------------------------------------ -AC_DEFUN(SC_LOAD_TKCONFIG, [ +AC_DEFUN([SC_LOAD_TKCONFIG], [ AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh]) if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then @@ -425,7 +425,7 @@ AC_DEFUN(SC_LOAD_TKCONFIG, [ # TCLSH_PROG #------------------------------------------------------------------------ -AC_DEFUN(SC_PROG_TCLSH, [ +AC_DEFUN([SC_PROG_TCLSH], [ AC_MSG_CHECKING([for tclsh]) AC_CACHE_VAL(ac_cv_path_tclsh, [ search_path=`echo ${PATH} | sed -e 's/:/ /g'` @@ -470,7 +470,7 @@ AC_DEFUN(SC_PROG_TCLSH, [ # BUILD_TCLSH #------------------------------------------------------------------------ -AC_DEFUN(SC_BUILD_TCLSH, [ +AC_DEFUN([SC_BUILD_TCLSH], [ AC_MSG_CHECKING([for tclsh in Tcl build directory]) BUILD_TCLSH=${TCL_BIN_DIR}/tclsh AC_MSG_RESULT([$BUILD_TCLSH]) @@ -498,7 +498,7 @@ AC_DEFUN(SC_BUILD_TCLSH, [ # SHARED_BUILD Value of 1 or 0 #------------------------------------------------------------------------ -AC_DEFUN(SC_ENABLE_SHARED, [ +AC_DEFUN([SC_ENABLE_SHARED], [ AC_MSG_CHECKING([how to build libraries]) AC_ARG_ENABLE(shared, [ --enable-shared build and link with shared libraries [--enable-shared]], @@ -538,7 +538,7 @@ AC_DEFUN(SC_ENABLE_SHARED, [ # FRAMEWORK_BUILD Value of 1 or 0 #------------------------------------------------------------------------ -AC_DEFUN(SC_ENABLE_FRAMEWORK, [ +AC_DEFUN([SC_ENABLE_FRAMEWORK], [ AC_MSG_CHECKING([how to package libraries]) AC_ARG_ENABLE(framework, [ --enable-framework package shared libraries in MacOSX frameworks [--disable-framework]], @@ -593,7 +593,7 @@ AC_DEFUN(SC_ENABLE_FRAMEWORK, [ # #------------------------------------------------------------------------ -AC_DEFUN(SC_ENABLE_THREADS, [ +AC_DEFUN([SC_ENABLE_THREADS], [ AC_ARG_ENABLE(threads, [ --enable-threads build with threads], [tcl_ok=$enableval], [tcl_ok=no]) @@ -705,7 +705,7 @@ AC_DEFUN(SC_ENABLE_THREADS, [ # #------------------------------------------------------------------------ -AC_DEFUN(SC_ENABLE_SYMBOLS, [ +AC_DEFUN([SC_ENABLE_SYMBOLS], [ AC_MSG_CHECKING([for build with symbols]) AC_ARG_ENABLE(symbols, [ --enable-symbols build with debugging symbols [--disable-symbols]], [tcl_ok=$enableval], [tcl_ok=no]) # FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT. @@ -762,7 +762,7 @@ AC_DEFUN(SC_ENABLE_SYMBOLS, [ # #------------------------------------------------------------------------ -AC_DEFUN(SC_ENABLE_LANGINFO, [ +AC_DEFUN([SC_ENABLE_LANGINFO], [ AC_ARG_ENABLE(langinfo, [ --enable-langinfo use nl_langinfo if possible to determine encoding at startup, otherwise use old heuristic], @@ -813,7 +813,7 @@ AC_DEFUN(SC_ENABLE_LANGINFO, [ # #-------------------------------------------------------------------- -AC_DEFUN(SC_CONFIG_MANPAGES, [ +AC_DEFUN([SC_CONFIG_MANPAGES], [ AC_MSG_CHECKING([whether to use symlinks for manpages]) AC_ARG_ENABLE(man-symlinks, [ --enable-man-symlinks use symlinks for the manpages], @@ -876,7 +876,7 @@ AC_DEFUN(SC_CONFIG_MANPAGES, [ # #-------------------------------------------------------------------- -AC_DEFUN(SC_CONFIG_SYSTEM, [ +AC_DEFUN([SC_CONFIG_SYSTEM], [ AC_CACHE_CHECK([system version], tcl_cv_sys_version, [ if test -f /usr/lib/NextStep/software_version; then tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` @@ -994,7 +994,7 @@ AC_DEFUN(SC_CONFIG_SYSTEM, [ # #-------------------------------------------------------------------- -AC_DEFUN(SC_CONFIG_CFLAGS, [ +AC_DEFUN([SC_CONFIG_CFLAGS], [ # Step 0.a: Enable 64 bit support? @@ -2138,7 +2138,7 @@ dnl esac # #-------------------------------------------------------------------- -AC_DEFUN(SC_SERIAL_PORT, [ +AC_DEFUN([SC_SERIAL_PORT], [ AC_CHECK_HEADERS(sys/modem.h) AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [ AC_TRY_RUN([ @@ -2265,7 +2265,7 @@ int main() { # #-------------------------------------------------------------------- -AC_DEFUN(SC_MISSING_POSIX_HEADERS, [ +AC_DEFUN([SC_MISSING_POSIX_HEADERS], [ AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, AC_TRY_LINK([#include #include ], [ @@ -2343,7 +2343,7 @@ closedir(d); # #-------------------------------------------------------------------- -AC_DEFUN(SC_PATH_X, [ +AC_DEFUN([SC_PATH_X], [ AC_PATH_X not_really_there="" if test "$no_x" = ""; then @@ -2429,7 +2429,7 @@ AC_DEFUN(SC_PATH_X, [ # #-------------------------------------------------------------------- -AC_DEFUN(SC_BLOCKING_STYLE, [ +AC_DEFUN([SC_BLOCKING_STYLE], [ AC_CHECK_HEADERS(sys/ioctl.h) AC_CHECK_HEADERS(sys/filio.h) SC_CONFIG_SYSTEM @@ -2477,7 +2477,7 @@ AC_DEFUN(SC_BLOCKING_STYLE, [ # #-------------------------------------------------------------------- -AC_DEFUN(SC_TIME_HANDLER, [ +AC_DEFUN([SC_TIME_HANDLER], [ AC_CHECK_HEADERS(sys/time.h) AC_HEADER_TIME AC_STRUCT_TIMEZONE @@ -2546,7 +2546,7 @@ AC_DEFUN(SC_TIME_HANDLER, [ # #-------------------------------------------------------------------- -AC_DEFUN(SC_BUGGY_STRTOD, [ +AC_DEFUN([SC_BUGGY_STRTOD], [ AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0) if test "$tcl_strtod" = 1; then AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[ @@ -2605,7 +2605,7 @@ AC_DEFUN(SC_BUGGY_STRTOD, [ # #-------------------------------------------------------------------- -AC_DEFUN(SC_TCL_LINK_LIBS, [ +AC_DEFUN([SC_TCL_LINK_LIBS], [ #-------------------------------------------------------------------- # On a few very rare systems, all of the libm.a stuff is # already in libc.a. Set compiler flags accordingly. @@ -2682,7 +2682,7 @@ AC_DEFUN(SC_TCL_LINK_LIBS, [ # #-------------------------------------------------------------------- -AC_DEFUN(SC_TCL_EARLY_FLAG,[ +AC_DEFUN([SC_TCL_EARLY_FLAG],[ AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]), AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no, AC_TRY_COMPILE([[#define ]$1[ 1 @@ -2695,7 +2695,7 @@ AC_DEFUN(SC_TCL_EARLY_FLAG,[ fi ]) -AC_DEFUN(SC_TCL_EARLY_FLAGS,[ +AC_DEFUN([SC_TCL_EARLY_FLAGS],[ AC_MSG_CHECKING([for required early compiler flags]) tcl_flags="" SC_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include ], @@ -2730,7 +2730,7 @@ AC_DEFUN(SC_TCL_EARLY_FLAGS,[ # #-------------------------------------------------------------------- -AC_DEFUN(SC_TCL_64BIT_FLAGS, [ +AC_DEFUN([SC_TCL_64BIT_FLAGS], [ AC_MSG_CHECKING([for 64-bit integer type]) AC_CACHE_VAL(tcl_cv_type_64bit,[ tcl_cv_type_64bit=none diff --git a/win/tcl.m4 b/win/tcl.m4 index 680c999..975ac18 100644 --- a/win/tcl.m4 +++ b/win/tcl.m4 @@ -17,7 +17,7 @@ # TCL_BIN_DIR Full path to the tclConfig.sh file #------------------------------------------------------------------------ -AC_DEFUN(SC_PATH_TCLCONFIG, [ +AC_DEFUN([SC_PATH_TCLCONFIG], [ AC_MSG_CHECKING([the location of tclConfig.sh]) if test -d ../../tcl8.4$1/win; then @@ -57,7 +57,7 @@ AC_DEFUN(SC_PATH_TCLCONFIG, [ # TK_BIN_DIR Full path to the tkConfig.sh file #------------------------------------------------------------------------ -AC_DEFUN(SC_PATH_TKCONFIG, [ +AC_DEFUN([SC_PATH_TKCONFIG], [ AC_MSG_CHECKING([the location of tkConfig.sh]) if test -d ../../tk8.4$1/win; then @@ -99,7 +99,7 @@ AC_DEFUN(SC_PATH_TKCONFIG, [ # #------------------------------------------------------------------------ -AC_DEFUN(SC_LOAD_TCLCONFIG, [ +AC_DEFUN([SC_LOAD_TCLCONFIG], [ AC_MSG_CHECKING([for existence of $TCL_BIN_DIR/tclConfig.sh]) if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then @@ -168,7 +168,7 @@ AC_DEFUN(SC_LOAD_TCLCONFIG, [ # TK_BIN_DIR #------------------------------------------------------------------------ -AC_DEFUN(SC_LOAD_TKCONFIG, [ +AC_DEFUN([SC_LOAD_TKCONFIG], [ AC_MSG_CHECKING([for existence of $TK_BIN_DIR/tkConfig.sh]) if test -f "$TK_BIN_DIR/tkConfig.sh" ; then @@ -205,7 +205,7 @@ AC_DEFUN(SC_LOAD_TKCONFIG, [ # SHARED_BUILD Value of 1 or 0 #------------------------------------------------------------------------ -AC_DEFUN(SC_ENABLE_SHARED, [ +AC_DEFUN([SC_ENABLE_SHARED], [ AC_MSG_CHECKING([how to build libraries]) AC_ARG_ENABLE(shared, [ --enable-shared build and link with shared libraries [--enable-shared]], @@ -245,7 +245,7 @@ AC_DEFUN(SC_ENABLE_SHARED, [ # TCL_THREADS #------------------------------------------------------------------------ -AC_DEFUN(SC_ENABLE_THREADS, [ +AC_DEFUN([SC_ENABLE_THREADS], [ AC_MSG_CHECKING(for building with threads) AC_ARG_ENABLE(threads, [ --enable-threads build with threads], [tcl_ok=$enableval], [tcl_ok=no]) @@ -292,7 +292,7 @@ AC_DEFUN(SC_ENABLE_THREADS, [ # #------------------------------------------------------------------------ -AC_DEFUN(SC_ENABLE_SYMBOLS, [ +AC_DEFUN([SC_ENABLE_SYMBOLS], [ AC_MSG_CHECKING([for build with symbols]) AC_ARG_ENABLE(symbols, [ --enable-symbols build with debugging symbols [--disable-symbols]], [tcl_ok=$enableval], [tcl_ok=no]) # FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT. @@ -377,7 +377,7 @@ AC_DEFUN(SC_ENABLE_SYMBOLS, [ # #-------------------------------------------------------------------- -AC_DEFUN(SC_CONFIG_CFLAGS, [ +AC_DEFUN([SC_CONFIG_CFLAGS], [ # Step 0: Enable 64 bit support? @@ -675,7 +675,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ # TCL_BIN_DIR Full path to the tcl build dir. #------------------------------------------------------------------------ -AC_DEFUN(SC_WITH_TCL, [ +AC_DEFUN([SC_WITH_TCL], [ if test -d ../../tcl8.4$1/win; then TCL_BIN_DEFAULT=../../tcl8.4$1/win else @@ -715,7 +715,7 @@ AC_DEFUN(SC_WITH_TCL, [ # TCLSH_PROG #------------------------------------------------------------------------ -AC_DEFUN(SC_PROG_TCLSH, [ +AC_DEFUN([SC_PROG_TCLSH], [ AC_MSG_CHECKING([for tclsh]) AC_CACHE_VAL(ac_cv_path_tclsh, [ @@ -761,7 +761,7 @@ AC_DEFUN(SC_PROG_TCLSH, [ # BUILD_TCLSH #------------------------------------------------------------------------ -AC_DEFUN(SC_BUILD_TCLSH, [ +AC_DEFUN([SC_BUILD_TCLSH], [ AC_MSG_CHECKING([for tclsh in Tcl build directory]) BUILD_TCLSH=${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT} AC_MSG_RESULT($BUILD_TCLSH) -- cgit v0.12 From 26ca8618340dcf03df4546ed7ccfa0da843f7791 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 2 Mar 2006 21:07:19 +0000 Subject: * win/Makefile.in: convert _NATIVE paths to use / to avoid ".\" path-as-escape issue. --- win/Makefile.in | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/win/Makefile.in b/win/Makefile.in index 0110120..e109014 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.68.2.3 2005/11/30 00:15:39 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.68.2.4 2006/03/02 21:07:19 hobbs Exp $ VERSION = @TCL_VERSION@ @@ -94,7 +94,7 @@ COMPILE_DEBUG_FLAGS = #COMPILE_DEBUG_FLAGS = -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS # Special compiler flags to use when building man2tcl on Windows. -MAN2TCLFLAGS = @MAN2TCLFLAGS@ +MAN2TCLFLAGS = @MAN2TCLFLAGS@ SRC_DIR = @srcdir@ ROOT_DIR = @srcdir@/.. @@ -105,11 +105,11 @@ COMPAT_DIR = @srcdir@/../compat # Converts a POSIX path to a Windows native path. CYGPATH = @CYGPATH@ -GENERIC_DIR_NATIVE = $(shell $(CYGPATH) '$(GENERIC_DIR)') -WIN_DIR_NATIVE = $(shell $(CYGPATH) '$(WIN_DIR)') -ROOT_DIR_NATIVE = $(shell $(CYGPATH) '$(ROOT_DIR)') +GENERIC_DIR_NATIVE = $(shell $(CYGPATH) '$(GENERIC_DIR)' | sed 's!\\!/!g') +WIN_DIR_NATIVE = $(shell $(CYGPATH) '$(WIN_DIR)' | sed 's!\\!/!g') +ROOT_DIR_NATIVE = $(shell $(CYGPATH) '$(ROOT_DIR)' | sed 's!\\!/!g') -LIBRARY_DIR = $(shell echo '$(ROOT_DIR_NATIVE)/library' | sed 's/\\/\//g' ) +LIBRARY_DIR = $(ROOT_DIR_NATIVE)/library DLLSUFFIX = @DLLSUFFIX@ LIBSUFFIX = @LIBSUFFIX@ -- cgit v0.12 From 76f698cfd03687bdb68303ca5f307f327006c40b Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 2 Mar 2006 22:33:28 +0000 Subject: see changes --- ChangeLog | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index d360344..a9b6b61 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-03-02 Jeff Hobbs + + * win/Makefile.in: convert _NATIVE paths to use / to avoid ".\" + path-as-escape issue. + + * unix/tcl.m4, win/tcl.m4: []-quote ac_defun functions. + 2006-03-02 Pat Thoyts * unix/tcl.m4: Fix for tk bug #1334613 to sort out shared library @@ -15,15 +22,15 @@ * generic/tclIndexObj.c: Disallow the "ambiguous" error message * tests/indexObj.test: when TCL_EXACT matching is requested. -2006-02-15 Don Porter +2006-02-15 Don Porter - * generic/tclIO.c: Made several routines tolerant of - * generic/tclIOUtil.c: interp == NULL arguments. [Bug 1380662] + * generic/tclIO.c: Made several routines tolerant of + * generic/tclIOUtil.c: interp == NULL arguments. [Bug 1380662] -2006-02-09 Don Porter +2006-02-09 Don Porter - * tests/main.test (Tcl_Main-6.7): Improved robustness of - command auto-completion test. [Bug 1422736]. + * tests/main.test (Tcl_Main-6.7): Improved robustness of + command auto-completion test. [Bug 1422736]. 2006-01-25 Donal K. Fellows @@ -384,9 +391,9 @@ 2005-11-03 Pat Thoyts - * win/tclWin32Dll.c: Backported Anton Kovalenko's patch #1256872 - * win/tclWinConsole.c: to give unicode console support on - * win/tclWinInt.h: suitable systems (eg: NT/XP) + * win/tclWin32Dll.c: Backported Anton Kovalenko's patch #1256872 + * win/tclWinConsole.c: to give unicode console support on + * win/tclWinInt.h: suitable systems (eg: NT/XP) 2005-11-01 Don Porter -- cgit v0.12 From f04a0f4fc371aae20e1d651be91414b3591fc4a4 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 6 Mar 2006 21:56:11 +0000 Subject: * generic/tclBasic.c: Revised handling of TCL_EVAL_* flags to * tests/parse.test: simplify TclEvalObjvInternal and to correct the auto-loading of alias targets (parse-8.12). [Bug 1444291]. --- ChangeLog | 6 ++++++ generic/tclBasic.c | 47 +++++++++++++++++++---------------------------- tests/parse.test | 24 ++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 30 deletions(-) diff --git a/ChangeLog b/ChangeLog index a9b6b61..128ece3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-03-06 Don Porter + + * generic/tclBasic.c: Revised handling of TCL_EVAL_* flags to + * tests/parse.test: simplify TclEvalObjvInternal and to correct + the auto-loading of alias targets (parse-8.12). [Bug 1444291]. + 2006-03-02 Jeff Hobbs * win/Makefile.in: convert _NATIVE paths to use / to avoid ".\" diff --git a/generic/tclBasic.c b/generic/tclBasic.c index f70af71..1941ca0 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.20 2006/02/28 15:44:35 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.21 2006/03/06 21:56:13 dgp Exp $ */ #include "tclInt.h" @@ -2984,6 +2984,7 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) int code = TCL_OK; int traceCode = TCL_OK; int checkTraces = 1; + Namespace *savedNsPtr = NULL; if (TclInterpReady(interp) == TCL_ERROR) { return TCL_ERROR; @@ -2993,6 +2994,15 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) return TCL_OK; } + /* Configure evaluation context to match the requested flags */ + savedVarFramePtr = iPtr->varFramePtr; + if (flags & TCL_EVAL_GLOBAL) { + iPtr->varFramePtr = NULL; + } else if ((flags & TCL_EVAL_INVOKE) && iPtr->varFramePtr) { + savedNsPtr = iPtr->varFramePtr->nsPtr; + iPtr->varFramePtr->nsPtr = iPtr->globalNsPtr; + } + /* * If any execution traces rename or delete the current command, * we may need (at most) two passes here. @@ -3005,19 +3015,8 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) * word array with "unknown" as the first word and the original * command words as arguments. Then call ourselves recursively * to execute it. - * - * If caller requests, or if we're resolving the target end of - * an interpeter alias (TCL_EVAL_INVOKE), be sure to do command - * name resolution in the global namespace. */ - - savedVarFramePtr = iPtr->varFramePtr; - if (flags & (TCL_EVAL_INVOKE | TCL_EVAL_GLOBAL)) { - iPtr->varFramePtr = NULL; - } cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, objv[0]); - iPtr->varFramePtr = savedVarFramePtr; - if (cmdPtr == NULL) { newObjv = (Tcl_Obj **) ckalloc((unsigned) ((objc + 1) * sizeof (Tcl_Obj *))); @@ -3035,13 +3034,19 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) } else { iPtr->numLevels++; code = TclEvalObjvInternal(interp, objc+1, newObjv, - command, length, flags); + command, length, 0); iPtr->numLevels--; } Tcl_DecrRefCount(newObjv[0]); ckfree((char *) newObjv); + if (savedNsPtr) { + iPtr->varFramePtr->nsPtr = savedNsPtr; + } goto done; } + if (savedNsPtr) { + iPtr->varFramePtr->nsPtr = savedNsPtr; + } /* * Call trace procedures if needed. @@ -3054,10 +3059,6 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) * any existing traces, then the set checkTraces to 0 and * go through this while loop one more time. */ - savedVarFramePtr = iPtr->varFramePtr; - if (flags & TCL_EVAL_GLOBAL) { - iPtr->varFramePtr = NULL; - } if (iPtr->tracePtr != NULL && traceCode == TCL_OK) { traceCode = TclCheckInterpTraces(interp, command, length, cmdPtr, code, TCL_TRACE_ENTER_EXEC, objc, objv); @@ -3067,7 +3068,6 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) traceCode = TclCheckExecutionTraces(interp, command, length, cmdPtr, code, TCL_TRACE_ENTER_EXEC, objc, objv); } - iPtr->varFramePtr = savedVarFramePtr; cmdPtr->refCount--; if (cmdEpoch != cmdPtr->cmdEpoch) { /* The command has been modified in some way */ @@ -3084,12 +3084,7 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) cmdPtr->refCount++; iPtr->cmdCount++; if ( code == TCL_OK && traceCode == TCL_OK) { - savedVarFramePtr = iPtr->varFramePtr; - if (flags & TCL_EVAL_GLOBAL) { - iPtr->varFramePtr = NULL; - } code = (*cmdPtr->objProc)(cmdPtr->objClientData, interp, objc, objv); - iPtr->varFramePtr = savedVarFramePtr; } if (Tcl_AsyncReady()) { code = Tcl_AsyncInvoke(interp, code); @@ -3101,10 +3096,6 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) if (!(cmdPtr->flags & CMD_IS_DELETED)) { int saveErrFlags = iPtr->flags & (ERR_IN_PROGRESS | ERR_ALREADY_LOGGED | ERROR_CODE_SET); - savedVarFramePtr = iPtr->varFramePtr; - if (flags & TCL_EVAL_GLOBAL) { - iPtr->varFramePtr = NULL; - } if ((cmdPtr->flags & CMD_HAS_EXEC_TRACES) && (traceCode == TCL_OK)) { traceCode = TclCheckExecutionTraces (interp, command, length, cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); @@ -3113,7 +3104,6 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) traceCode = TclCheckInterpTraces(interp, command, length, cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); } - iPtr->varFramePtr = savedVarFramePtr; if (traceCode == TCL_OK) { iPtr->flags |= saveErrFlags; } @@ -3143,6 +3133,7 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) } done: + iPtr->varFramePtr = savedVarFramePtr; return code; } diff --git a/tests/parse.test b/tests/parse.test index dae14e9..6820d80 100644 --- a/tests/parse.test +++ b/tests/parse.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parse.test,v 1.11.2.3 2006/02/28 15:44:36 dgp Exp $ +# RCS: @(#) $Id: parse.test,v 1.11.2.4 2006/03/06 21:56:13 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -312,7 +312,27 @@ test parse-8.11 {Tcl_EvalObjv procedure, TCL_EVAL_INVOKE} testevalobjv { rename ::unknown {} rename unknown.save ::unknown set ::info -} [subst {[set level 2; incr level [info level]] namespace 1 global 1 global}] +} [subst {[set level 2; incr level [info level]] global 1 global 1 global}] +test parse-8.12 {Tcl_EvalObjv procedure, TCL_EVAL_INVOKE} { + set ::auto_index(noSuchCommand) { + proc noSuchCommand {} {lappend ::info global} + } + set ::auto_index(::[string trimleft [namespace current]::test_ns_1::noSuchCommand :]) [list \ + proc [namespace current]::test_ns_1::noSuchCommand {} { + lappend ::info ns + }] + catch {rename ::noSuchCommand {}} + set ::slave [interp create] + $::slave alias bar noSuchCommand + set ::info {} + namespace eval test_ns_1 { + $::slave eval bar + } + namespace delete test_ns_1 + interp delete $::slave + catch {rename ::noSuchCommand {}} + set ::info +} global test parse-9.1 {Tcl_LogCommandInfo, line numbers} { catch {unset x} -- cgit v0.12 From 068750affd769da019d939002317ce85a8dde4a5 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Mar 2006 05:30:22 +0000 Subject: * README: Bump version number to 8.4.13 and update * changes: changes to start prep for an 8.4.13 release. * generic/tcl.h: * tools/tcl.wse.in: * unix/configure{.in}: * unix/tcl.spec: * win/README.binary: * win/configure{.in}: * tests/parse.test: Missing constraint --- ChangeLog | 13 +++++++++++++ README | 4 ++-- changes | 19 +++++++++++++++++-- generic/tcl.h | 6 +++--- tests/parse.test | 3 ++- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 12 files changed, 48 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 128ece3..e3c5df2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2006-03-07 Don Porter + + * README: Bump version number to 8.4.13 and update + * changes: changes to start prep for an 8.4.13 release. + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure{.in}: + * unix/tcl.spec: + * win/README.binary: + * win/configure{.in}: + + * tests/parse.test: Missing constraint + 2006-03-06 Don Porter * generic/tclBasic.c: Revised handling of TCL_EVAL_* flags to diff --git a/README b/README index ddd5732..53873bc 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.12 source distribution. + This is the Tcl 8.4.13 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.15 2005/12/04 00:50:03 das Exp $ +RCS: @(#) $Id: README,v 1.49.2.16 2006/03/07 05:30:23 dgp Exp $ Contents -------- diff --git a/changes b/changes index f7178a3..1773fb5 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.32 2005/12/05 15:10:32 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.33 2006/03/07 05:30:23 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6321,4 +6321,19 @@ Restores Tcl 8.4.9 behavior (porter) 2005-12-05 (Darwin bug fix)[1034337] NFS recursive file delete (steffen) ---- Released 8.4.12, Decemeber 3, 2005 --- See ChangeLog for details --- +--- Released 8.4.12, December 3, 2005 --- See ChangeLog for details --- + +2005-12-09 (bug fix)[137478] [lsearch -start $pastEnd] => -1 (fellows) + +2005-12-12 (bug fix)[1241572] correct [expr abs($LONG_MIN)] again (max) + +2005-12-12 (bug fix)[1377619] configure syntax error exposed in bash-3.1 (hobbs) + +2006-01-09 (bug fix)[1480572] [info level $l] => "namespace inscope" (porter) + +2006-01-23 (bug fix)[1410553] Tcl_GetRange Unicode confusion (twylite,spjuth) + +2006-03-06 (bug fix)[1430936,1444291] fix TCL_EVAL_{GLOBAL,INVOKE} handling +when auto-loading or exec traces are present (porter) + +--- Released 8.4.13, March 17, 2006 --- See ChangeLog for details --- diff --git a/generic/tcl.h b/generic/tcl.h index 4c2d7ed..c0dae74 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.21 2005/11/27 02:34:41 das Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.22 2006/03/07 05:30:24 dgp Exp $ */ #ifndef _TCL @@ -59,10 +59,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 12 +#define TCL_RELEASE_SERIAL 13 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.12" +#define TCL_PATCH_LEVEL "8.4.13" /* * The following definitions set up the proper options for Windows diff --git a/tests/parse.test b/tests/parse.test index 6820d80..0932776 100644 --- a/tests/parse.test +++ b/tests/parse.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parse.test,v 1.11.2.4 2006/03/06 21:56:13 dgp Exp $ +# RCS: @(#) $Id: parse.test,v 1.11.2.5 2006/03/07 05:30:24 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -219,6 +219,7 @@ test parse-7.1 {Tcl_FreeParse and ExpandTokenArray procedures} { } {- {$a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) } 16 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 {}} testConstraint testevalobjv [llength [info commands testevalobjv]] +testConstraint testevalex [llength [info commands testevalex]] test parse-8.1 {Tcl_EvalObjv procedure} testevalobjv { testevalobjv 0 concat this is a test } {this is a test} diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 62150c6..c0b09f7 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.12 + Disk Label=tcl8.4.13 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index cb69701..69f1d6d 100755 --- a/unix/configure +++ b/unix/configure @@ -554,7 +554,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".12" +TCL_PATCH_LEVEL=".13" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 1c7918c..99dd1a6 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.24 2006/01/10 05:37:06 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.25 2006/03/07 05:30:29 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".12" +TCL_PATCH_LEVEL=".13" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 2b3a8c7..dce5301 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.12 2005/11/16 22:05:28 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.13 2006/03/07 05:30:29 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.12 +%define version 8.4.13 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index f4dd165..fccb7c5 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.12 2005/11/16 22:05:28 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.13 2006/03/07 05:30:30 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.12 for +This directory contains the binary distribution of Tcl/Tk 8.4.13 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 4b9d6e5..eff5270 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".12" +TCL_PATCH_LEVEL=".13" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 4145804..0151749 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.14 2005/11/16 22:05:29 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.15 2006/03/07 05:30:30 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".12" +TCL_PATCH_LEVEL=".13" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 57a73a6df494c3537e10dbe374204493fc4ed562 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Mar 2006 18:59:00 +0000 Subject: *** 8.4.13 TAGGED FOR RELEASE *** * library/http/http.tcl: Bump to version 2.5.3 to cover bug fix * library/http/pkgIndex.tcl: in URL parsing. [Bug 1358369] --- ChangeLog | 5 +++++ library/http/http.tcl | 4 ++-- library/http/pkgIndex.tcl | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index e3c5df2..a60c65f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2006-03-07 Don Porter + *** 8.4.13 TAGGED FOR RELEASE *** + + * library/http/http.tcl: Bump to version 2.5.3 to cover bug fix + * library/http/pkgIndex.tcl: in URL parsing. [Bug 1358369] + * README: Bump version number to 8.4.13 and update * changes: changes to start prep for an 8.4.13 release. * generic/tcl.h: diff --git a/library/http/http.tcl b/library/http/http.tcl index 6c7e636..d062cd8 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.9 2005/11/18 15:20:47 dkf Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.10 2006/03/07 18:59:01 dgp Exp $ # Rough version history: # 1.0 Old http_get interface. @@ -24,7 +24,7 @@ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories # in Makefiles -package provide http 2.5.2 +package provide http 2.5.3 namespace eval http { variable http diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 1691b51..a72b48f 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.5.2 [list tclPkgSetup $dir http 2.5.2 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] +package ifneeded http 2.5.3 [list tclPkgSetup $dir http 2.5.3 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] -- cgit v0.12 From d5b85a589a88b870e7ab817bdce1fd0ab81fd9ce Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Mar 2006 19:01:43 +0000 Subject: * library/http/http.tcl: Bump to version 2.5.3 to cover bug fix * library/http/pkgIndex.tcl: in URL parsing. [Bug 1358369] --- changes | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/changes b/changes index 1773fb5..579ac6b 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.33 2006/03/07 05:30:23 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.34 2006/03/07 19:01:43 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6336,4 +6336,7 @@ Restores Tcl 8.4.9 behavior (porter) 2006-03-06 (bug fix)[1430936,1444291] fix TCL_EVAL_{GLOBAL,INVOKE} handling when auto-loading or exec traces are present (porter) +2006-03-07 (bug fix) Bump http version (should have done 2005-11-18) (porter) +=> http 2.5.3 + --- Released 8.4.13, March 17, 2006 --- See ChangeLog for details --- -- cgit v0.12 From d1a85e26fc21a4f27627f25eb5279c0152f1e77d Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Mar 2006 19:18:34 +0000 Subject: oops! got out of sync; reverting... --- ChangeLog | 3 --- changes | 5 +---- library/http/http.tcl | 4 ++-- library/http/pkgIndex.tcl | 2 +- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index a60c65f..173123a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,9 +2,6 @@ *** 8.4.13 TAGGED FOR RELEASE *** - * library/http/http.tcl: Bump to version 2.5.3 to cover bug fix - * library/http/pkgIndex.tcl: in URL parsing. [Bug 1358369] - * README: Bump version number to 8.4.13 and update * changes: changes to start prep for an 8.4.13 release. * generic/tcl.h: diff --git a/changes b/changes index 579ac6b..b936b97 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.34 2006/03/07 19:01:43 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.35 2006/03/07 19:18:35 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6336,7 +6336,4 @@ Restores Tcl 8.4.9 behavior (porter) 2006-03-06 (bug fix)[1430936,1444291] fix TCL_EVAL_{GLOBAL,INVOKE} handling when auto-loading or exec traces are present (porter) -2006-03-07 (bug fix) Bump http version (should have done 2005-11-18) (porter) -=> http 2.5.3 - --- Released 8.4.13, March 17, 2006 --- See ChangeLog for details --- diff --git a/library/http/http.tcl b/library/http/http.tcl index d062cd8..878f02d 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.10 2006/03/07 18:59:01 dgp Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.11 2006/03/07 19:18:39 dgp Exp $ # Rough version history: # 1.0 Old http_get interface. @@ -24,7 +24,7 @@ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories # in Makefiles -package provide http 2.5.3 +package provide http 2.5.2 namespace eval http { variable http diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index a72b48f..1691b51 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.5.3 [list tclPkgSetup $dir http 2.5.3 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] +package ifneeded http 2.5.2 [list tclPkgSetup $dir http 2.5.2 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] -- cgit v0.12 From 09cf2e4fceb1f452ed61b9691be235fc2d1a3df7 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Mar 2006 20:35:53 +0000 Subject: typo --- changes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changes b/changes index b936b97..2cc8d58 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.35 2006/03/07 19:18:35 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.36 2006/03/07 20:35:53 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6333,7 +6333,7 @@ Restores Tcl 8.4.9 behavior (porter) 2006-01-23 (bug fix)[1410553] Tcl_GetRange Unicode confusion (twylite,spjuth) -2006-03-06 (bug fix)[1430936,1444291] fix TCL_EVAL_{GLOBAL,INVOKE} handling +2006-03-06 (bug fix)[1439836,1444291] fix TCL_EVAL_{GLOBAL,INVOKE} handling when auto-loading or exec traces are present (porter) --- Released 8.4.13, March 17, 2006 --- See ChangeLog for details --- -- cgit v0.12 From 97c026f6bd5aab4ae53b4e69c328426c506a1805 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Thu, 9 Mar 2006 22:26:24 +0000 Subject: * generic/tclPanic.c (Tcl_PanicVA): added an unconditional abort at the end, to insure that a panic cannot return even if the actual procedure was overriden by a Tcl_SetPanicProc() call. Bug caught by looking at Coverity's analysis. --- ChangeLog | 7 +++++++ generic/tclPanic.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 173123a..2041c2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-02-09 Miguel Sofer + + * generic/tclPanic.c (Tcl_PanicVA): added an unconditional abort + at the end, to insure that a panic cannot return even if the + actual procedure was overriden by a Tcl_SetPanicProc() call. Bug + caught by looking at Coverity's analysis. + 2006-03-07 Don Porter *** 8.4.13 TAGGED FOR RELEASE *** diff --git a/generic/tclPanic.c b/generic/tclPanic.c index 5b9125e..a393f00 100644 --- a/generic/tclPanic.c +++ b/generic/tclPanic.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPanic.c,v 1.4 2001/06/17 03:48:19 dgp Exp $ + * RCS: @(#) $Id: tclPanic.c,v 1.4.12.1 2006/03/09 22:26:26 msofer Exp $ */ #include "tclInt.h" @@ -103,8 +103,8 @@ Tcl_PanicVA (format, argList) arg7, arg8); (void) fprintf(stderr, "\n"); (void) fflush(stderr); - abort(); } + abort(); } /* -- cgit v0.12 From 962568fbf7071d27b14e7329a74ac3ac9c91727f Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 9 Mar 2006 23:11:20 +0000 Subject: Undo latest commit. Controversy arose, and we're about to release. Save arguments about it for another day. --- ChangeLog | 7 ------- generic/tclPanic.c | 4 ++-- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2041c2e..173123a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,3 @@ -2006-02-09 Miguel Sofer - - * generic/tclPanic.c (Tcl_PanicVA): added an unconditional abort - at the end, to insure that a panic cannot return even if the - actual procedure was overriden by a Tcl_SetPanicProc() call. Bug - caught by looking at Coverity's analysis. - 2006-03-07 Don Porter *** 8.4.13 TAGGED FOR RELEASE *** diff --git a/generic/tclPanic.c b/generic/tclPanic.c index a393f00..356d3b2 100644 --- a/generic/tclPanic.c +++ b/generic/tclPanic.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPanic.c,v 1.4.12.1 2006/03/09 22:26:26 msofer Exp $ + * RCS: @(#) $Id: tclPanic.c,v 1.4.12.2 2006/03/09 23:11:23 dgp Exp $ */ #include "tclInt.h" @@ -103,8 +103,8 @@ Tcl_PanicVA (format, argList) arg7, arg8); (void) fprintf(stderr, "\n"); (void) fflush(stderr); + abort(); } - abort(); } /* -- cgit v0.12 From 016159504aae4e7bcafa2c3aef5c0a23d55fa308 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Fri, 10 Mar 2006 10:35:20 +0000 Subject: backport of some file readable/writable fixes from HEAD --- ChangeLog | 8 +++ win/tclWin32Dll.c | 43 ++++++++++++- win/tclWinFile.c | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++---- win/tclWinInt.h | 28 ++++++++- 4 files changed, 249 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 173123a..96987e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-03-10 Vince Darley + + * win/tclWin32Dll.c: + * win/tclWinInt.h: + * win/tclWinFile.c: backported some fixes from HEAD relating + to 'file readable' and 'file writable', but main 'file writable' + bug still outstanding. + 2006-03-07 Don Porter *** 8.4.13 TAGGED FOR RELEASE *** diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index 1e4a0b3..c107396 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.8 2005/11/03 11:53:59 patthoyts Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.9 2006/03/10 10:35:24 vincentdarley Exp $ */ #include "tclWinInt.h" @@ -118,6 +118,11 @@ static TclWinProcs asciiProcs = { (int (__cdecl*)(CONST TCHAR *, struct _utimbuf *)) _utime, NULL, NULL, + /* getLongPathNameProc */ + NULL, + /* Security SDK - not available on 95,98,ME */ + NULL, NULL, NULL, NULL, NULL, NULL, + /* ReadConsole and WriteConsole */ (BOOL (WINAPI *)(HANDLE, LPVOID, DWORD, LPDWORD, LPVOID)) ReadConsoleA, (BOOL (WINAPI *)(HANDLE, const VOID*, DWORD, LPDWORD, LPVOID)) WriteConsoleA }; @@ -169,6 +174,11 @@ static TclWinProcs unicodeProcs = { (int (__cdecl*)(CONST TCHAR *, struct _utimbuf *)) _wutime, NULL, NULL, + /* getLongPathNameProc */ + NULL, + /* Security SDK - will be filled in on NT,XP,2000,2003 */ + NULL, NULL, NULL, NULL, NULL, NULL, + /* ReadConsole and WriteConsole */ (BOOL (WINAPI *)(HANDLE, LPVOID, DWORD, LPDWORD, LPVOID)) ReadConsoleW, (BOOL (WINAPI *)(HANDLE, const VOID*, DWORD, LPDWORD, LPVOID)) WriteConsoleW }; @@ -692,6 +702,36 @@ TclWinSetInterfaces( "GetVolumeNameForVolumeMountPointW"); FreeLibrary(hInstance); } + hInstance = LoadLibraryA("advapi32"); + if (hInstance != NULL) { + tclWinProcs->getFileSecurityProc = (BOOL (WINAPI *)( + LPCTSTR lpFileName, + SECURITY_INFORMATION RequestedInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD nLength, LPDWORD lpnLengthNeeded)) + GetProcAddress(hInstance, "GetFileSecurityW"); + tclWinProcs->impersonateSelfProc = (BOOL (WINAPI *) ( + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel)) + GetProcAddress(hInstance, "ImpersonateSelf"); + tclWinProcs->openThreadTokenProc = (BOOL (WINAPI *) ( + HANDLE ThreadHandle, DWORD DesiredAccess, + BOOL OpenAsSelf, PHANDLE TokenHandle)) + GetProcAddress(hInstance, "OpenThreadToken"); + tclWinProcs->revertToSelfProc = (BOOL (WINAPI *) (void)) + GetProcAddress(hInstance, "RevertToSelf"); + tclWinProcs->mapGenericMaskProc = (VOID (WINAPI *) ( + PDWORD AccessMask, PGENERIC_MAPPING GenericMapping)) + GetProcAddress(hInstance, "MapGenericMask"); + tclWinProcs->accessCheckProc = (BOOL (WINAPI *)( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + HANDLE ClientToken, DWORD DesiredAccess, + PGENERIC_MAPPING GenericMapping, + PPRIVILEGE_SET PrivilegeSet, + LPDWORD PrivilegeSetLength, LPDWORD GrantedAccess, + LPBOOL AccessStatus)) GetProcAddress(hInstance, + "AccessCheck"); + FreeLibrary(hInstance); + } } } else { tclWinProcs = &asciiProcs; @@ -710,6 +750,7 @@ TclWinSetInterfaces( (HANDLE (WINAPI *)(CONST TCHAR*, UINT, LPVOID, UINT, LPVOID, DWORD)) GetProcAddress(hInstance, "FindFirstFileExA"); + tclWinProcs->getLongPathNameProc = NULL; tclWinProcs->getVolumeNameForVMPProc = (BOOL (WINAPI *)(CONST TCHAR*, TCHAR*, DWORD)) GetProcAddress(hInstance, diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 4171e67..f4d882b 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.13 2005/11/15 16:41:41 kennykb Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.14 2006/03/10 10:35:25 vincentdarley Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -1334,16 +1334,22 @@ NativeAccess( if (attr == 0xffffffff) { /* - * File doesn't exist. + * File doesn't exist. */ TclWinConvertError(GetLastError()); return -1; } - if ((mode & W_OK) && (attr & FILE_ATTRIBUTE_READONLY)) { + if ((mode & W_OK) + && !(attr & FILE_ATTRIBUTE_DIRECTORY) + /* && (tclWinProcs->getFileSecurityProc == NULL) */ + && (attr & FILE_ATTRIBUTE_READONLY)) { /* - * File is not writable. + * We don't have the advanced 'getFileSecurityProc', and + * our attributes say the file is not writable. If we + * do have 'getFileSecurityProc', we'll do a more + * robust XP-related check below. */ Tcl_SetErrno(EACCES); @@ -1351,20 +1357,174 @@ NativeAccess( } if (mode & X_OK) { - if (attr & FILE_ATTRIBUTE_DIRECTORY) { + if (!(attr & FILE_ATTRIBUTE_DIRECTORY) && !NativeIsExec(nativePath)) { /* - * Directories are always executable. + * It's not a directory and doesn't have the correct extension. + * Therefore it can't be executable + */ + + Tcl_SetErrno(EACCES); + return -1; + } + } + + /* + * It looks as if the permissions are ok, but if we are on NT, 2000 or XP, + * we have a more complex permissions structure so we try to check that. + * The code below is remarkably complex for such a simple thing as finding + * what permissions the OS has set for a file. + * + * If we are simply checking for file existence, then we don't need all + * these complications (which are really quite slow: with this code 'file + * readable' is 5-6 times slower than 'file exists'). + */ + + if ((mode != F_OK) && (tclWinProcs->getFileSecurityProc != NULL)) { + SECURITY_DESCRIPTOR *sdPtr = NULL; + unsigned long size; + GENERIC_MAPPING genMap; + HANDLE hToken = NULL; + DWORD desiredAccess = 0; + DWORD grantedAccess = 0; + BOOL accessYesNo = FALSE; + PRIVILEGE_SET privSet; + DWORD privSetSize = sizeof(PRIVILEGE_SET); + int error; + + /* + * First find out how big the buffer needs to be + */ + + size = 0; + (*tclWinProcs->getFileSecurityProc)(nativePath, + OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION + | DACL_SECURITY_INFORMATION, 0, 0, &size); + + /* + * Should have failed with ERROR_INSUFFICIENT_BUFFER + */ + + error = GetLastError(); + if (error != ERROR_INSUFFICIENT_BUFFER) { + /* + * Most likely case is ERROR_ACCESS_DENIED, which we will convert + * to EACCES - just what we want! + */ + + TclWinConvertError((DWORD)error); + return -1; + } + + /* + * Now size contains the size of buffer needed + */ + + sdPtr = (SECURITY_DESCRIPTOR *) HeapAlloc(GetProcessHeap(), 0, size); + + if (sdPtr == NULL) { + goto accessError; + } + + /* + * Call GetFileSecurity() for real + */ + + if (!(*tclWinProcs->getFileSecurityProc)(nativePath, + OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION + | DACL_SECURITY_INFORMATION, sdPtr, size, &size)) { + /* + * Error getting owner SD + */ + + goto accessError; + } + + /* + * Perform security impersonation of the user and open the + * resulting thread token. + */ + + if (!(*tclWinProcs->impersonateSelfProc)(SecurityImpersonation)) { + /* + * Unable to perform security impersonation. */ - return 0; + goto accessError; } - if (NativeIsExec(nativePath)) { - return 0; + if (!(*tclWinProcs->openThreadTokenProc)(GetCurrentThread (), + TOKEN_DUPLICATE | TOKEN_QUERY, FALSE, &hToken)) { + /* + * Unable to get current thread's token. + */ + + goto accessError; + } + + (*tclWinProcs->revertToSelfProc)(); + + /* + * Setup desiredAccess according to the access priveleges we are + * checking. + */ + + if (mode & R_OK) { + desiredAccess |= FILE_GENERIC_READ; + } + if (mode & W_OK) { + desiredAccess |= FILE_GENERIC_WRITE; + } + if (mode & X_OK) { + desiredAccess |= FILE_GENERIC_EXECUTE; + } + + memset (&genMap, 0x0, sizeof (GENERIC_MAPPING)); + genMap.GenericRead = FILE_GENERIC_READ; + genMap.GenericWrite = FILE_GENERIC_WRITE; + genMap.GenericExecute = FILE_GENERIC_EXECUTE; + genMap.GenericAll = FILE_ALL_ACCESS; + + /* + * Perform access check using the token. + */ + + if (!(*tclWinProcs->accessCheckProc)(sdPtr, hToken, desiredAccess, + &genMap, &privSet, &privSetSize, &grantedAccess, + &accessYesNo)) { + /* + * Unable to perform access check. + */ + + accessError: + TclWinConvertError(GetLastError()); + if (sdPtr != NULL) { + HeapFree(GetProcessHeap(), 0, sdPtr); + } + if (hToken != NULL) { + CloseHandle(hToken); + } + return -1; } - Tcl_SetErrno(EACCES); - return -1; - } + /* + * Clean up. + */ + + HeapFree(GetProcessHeap (), 0, sdPtr); + CloseHandle(hToken); + if (!accessYesNo) { + Tcl_SetErrno(EACCES); + return -1; + } + /* + * For directories the above checks are ok. For files, though, + * we must still check the 'attr' value. + */ + if ((mode & W_OK) + && (attr & FILE_ATTRIBUTE_READONLY)) { + Tcl_SetErrno(EACCES); + return -1; + } + } return 0; } diff --git a/win/tclWinInt.h b/win/tclWinInt.h index 5cefc9d..3b06f50 100644 --- a/win/tclWinInt.h +++ b/win/tclWinInt.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.4 2005/11/03 11:53:59 patthoyts Exp $ + * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.5 2006/03/10 10:35:25 vincentdarley Exp $ */ #ifndef _TCLWININT @@ -112,6 +112,32 @@ typedef struct TclWinProcs { LPVOID, DWORD); BOOL (WINAPI *getVolumeNameForVMPProc)(CONST TCHAR*, TCHAR*, DWORD); + DWORD (WINAPI *getLongPathNameProc)(CONST TCHAR*, TCHAR*, DWORD); + /* + * These six are for the security sdk to get correct file + * permissions on NT, 2000, XP, etc. On 95,98,ME they are + * always null. + */ + BOOL (WINAPI *getFileSecurityProc)(LPCTSTR lpFileName, + SECURITY_INFORMATION RequestedInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD nLength, + LPDWORD lpnLengthNeeded); + BOOL (WINAPI *impersonateSelfProc) (SECURITY_IMPERSONATION_LEVEL + ImpersonationLevel); + BOOL (WINAPI *openThreadTokenProc) (HANDLE ThreadHandle, + DWORD DesiredAccess, BOOL OpenAsSelf, + PHANDLE TokenHandle); + BOOL (WINAPI *revertToSelfProc) (void); + VOID (WINAPI *mapGenericMaskProc) (PDWORD AccessMask, + PGENERIC_MAPPING GenericMapping); + BOOL (WINAPI *accessCheckProc)(PSECURITY_DESCRIPTOR pSecurityDescriptor, + HANDLE ClientToken, DWORD DesiredAccess, + PGENERIC_MAPPING GenericMapping, + PPRIVILEGE_SET PrivilegeSet, + LPDWORD PrivilegeSetLength, + LPDWORD GrantedAccess, + LPBOOL AccessStatus); /* * Unicode console support. WriteConsole and ReadConsole */ -- cgit v0.12 From 02cfcc5c2ba62dba567c1b599fa76e225796ff70 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 10 Mar 2006 14:04:57 +0000 Subject: Cosmetic touches and identation --- generic/tclEvent.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index ba065eb..6456a40 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.13 2005/08/16 15:23:56 kennykb Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.14 2006/03/10 14:04:57 vasiljevic Exp $ */ #include "tclInt.h" @@ -961,9 +961,9 @@ void Tcl_FinalizeThread() { ExitHandler *exitPtr; - ThreadSpecificData *tsdPtr = - (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); + ThreadSpecificData *tsdPtr; + tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); if (tsdPtr != NULL) { tsdPtr->inExit = 1; @@ -994,17 +994,17 @@ Tcl_FinalizeThread() TclFinalizeAsync(); } - /* - * Blow away all thread local storage blocks. + /* + * Blow away all thread local storage blocks. * * Note that Tcl API allows creation of threads which do not use any * Tcl interp or other Tcl subsytems. Those threads might, however, * use thread local storage, so we must unconditionally finalize it. * * Fix [Bug #571002] - */ + */ - TclFinalizeThreadData(); + TclFinalizeThreadData(); } /* -- cgit v0.12 From 22be60059b2287091988d9439c16c781377358ef Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 10 Mar 2006 14:09:02 +0000 Subject: Added TclpFinalizeSockets() (Tcl Bug #1437595) --- generic/tclInt.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generic/tclInt.h b/generic/tclInt.h index 64a6bbe..0129b5a 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.21 2005/11/27 02:34:41 das Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.22 2006/03/10 14:09:02 vasiljevic Exp $ */ #ifndef _TCLINT @@ -1742,6 +1742,7 @@ EXTERN void TclpFinalizeCondition _ANSI_ARGS_(( Tcl_Condition *condPtr)); EXTERN void TclpFinalizeMutex _ANSI_ARGS_((Tcl_Mutex *mutexPtr)); EXTERN void TclpFinalizePipes _ANSI_ARGS_((void)); +EXTERN void TclpFinalizeSockets _ANSI_ARGS_((void)); EXTERN void TclpFinalizeThreadData _ANSI_ARGS_(( Tcl_ThreadDataKey *keyPtr)); EXTERN void TclpFinalizeThreadDataKey _ANSI_ARGS_(( -- cgit v0.12 From 27a60bbb6e8ed74aee449f6f51e1bade58953942 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 10 Mar 2006 14:12:14 +0000 Subject: Invokes TclpFinalizeSockets() as part of the TclFinalizeIOSubsystem() call. --- generic/tclIO.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/generic/tclIO.c b/generic/tclIO.c index 852af2b..c7c2e3f 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.18 2006/02/15 16:04:27 dgp Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.19 2006/03/10 14:12:14 vasiljevic Exp $ */ #include "tclInt.h" @@ -185,7 +185,7 @@ TclInitIOSubsystem() * * TclFinalizeIOSubsystem -- * - * Releases all resources used by this subsystem on a per-process + * Releases all resources used by this subsystem on a per-thread * basis. Closes all extant channels that have not already been * closed because they were not owned by any interp. * @@ -207,6 +207,11 @@ TclFinalizeIOSubsystem() ChannelState *nextCSPtr; /* Iterates over open channels. */ ChannelState *statePtr; /* state of channel stack */ + /* + * Walk all channel state structures known to this thread and + * close corresponding channels. + */ + for (statePtr = tsdPtr->firstCSPtr; statePtr != (ChannelState *) NULL; statePtr = nextCSPtr) { chanPtr = statePtr->topChanPtr; @@ -234,7 +239,9 @@ TclFinalizeIOSubsystem() * Preserve statePtr from disappearing until we can get the * nextCSPtr below. */ + Tcl_Preserve(statePtr); + if (statePtr->refCount <= 0) { /* @@ -244,7 +251,9 @@ TclFinalizeIOSubsystem() */ (void) Tcl_Close((Tcl_Interp *) NULL, (Tcl_Channel) chanPtr); + } else { + /* * The refcount is greater than zero, so flush the channel. */ @@ -274,13 +283,17 @@ TclFinalizeIOSubsystem() chanPtr->instanceData = (ClientData) NULL; statePtr->flags |= CHANNEL_DEAD; } + /* * We look for the next pointer now in case we had one closed on up * during the current channel's closeproc (eg: rechan extension) */ + nextCSPtr = statePtr->nextCSPtr; Tcl_Release(statePtr); - } + } + + TclpFinalizeSockets(); TclpFinalizePipes(); } -- cgit v0.12 From 08a3195989ceab4f125251811949e85431265fec Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 10 Mar 2006 14:18:54 +0000 Subject: Finalization of the pipes are now solely done in TclpFinalizePipes and not over the thread-exit handler, because the order of actions the Tcl generic core will impose may result in cores/hangs if the thread exit handler tearis down pipes too early (see Bug # 1437595). --- win/tclWinPipe.c | 45 +++++++++++---------------------------------- 1 file changed, 11 insertions(+), 34 deletions(-) diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 8dc41d0..e599b50 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.15 2005/11/04 18:33:35 patthoyts Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.16 2006/03/10 14:18:54 vasiljevic Exp $ */ #include "tclWinInt.h" @@ -189,7 +189,6 @@ static void PipeCheckProc(ClientData clientData, int flags); static int PipeClose2Proc(ClientData instanceData, Tcl_Interp *interp, int flags); static int PipeEventProc(Tcl_Event *evPtr, int flags); -static void PipeExitHandler(ClientData clientData); static int PipeGetHandleProc(ClientData instanceData, int direction, ClientData *handlePtr); static void PipeInit(void); @@ -271,57 +270,35 @@ PipeInit() tsdPtr = TCL_TSD_INIT(&dataKey); tsdPtr->firstPipePtr = NULL; Tcl_CreateEventSource(PipeSetupProc, PipeCheckProc, NULL); - Tcl_CreateThreadExitHandler(PipeExitHandler, NULL); } } /* *---------------------------------------------------------------------- * - * PipeExitHandler -- - * - * This function is called to cleanup the pipe module before - * Tcl is unloaded. - * - * Results: - * None. - * - * Side effects: - * Removes the pipe event source. - * - *---------------------------------------------------------------------- - */ - -static void -PipeExitHandler( - ClientData clientData) /* Old window proc */ -{ - Tcl_DeleteEventSource(PipeSetupProc, PipeCheckProc, NULL); -} - -/* - *---------------------------------------------------------------------- - * * TclpFinalizePipes -- * - * This function is called to cleanup the process list before - * Tcl is unloaded. + * This function is called from Tcl_FinalizeThread to finalize the + * platform specific pipe subsystem. * * Results: * None. * * Side effects: - * Resets the process list. + * Removes the pipe event source. * *---------------------------------------------------------------------- */ void TclpFinalizePipes() -{ - Tcl_MutexLock(&pipeMutex); - initialized = 0; - Tcl_MutexUnlock(&pipeMutex); +{ + ThreadSpecificData *tsdPtr; + + tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); + if (tsdPtr != NULL) { + Tcl_DeleteEventSource(PipeSetupProc, PipeCheckProc, NULL); + } } /* -- cgit v0.12 From 23596eee23da84c3e56fadc163dc8a2734b8f453 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 10 Mar 2006 14:23:50 +0000 Subject: Added no-op TclpFinalizeSockets() --- unix/tclUnixSock.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/unix/tclUnixSock.c b/unix/tclUnixSock.c index 8e5e3b7..a85fee4 100644 --- a/unix/tclUnixSock.c +++ b/unix/tclUnixSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixSock.c,v 1.6 2002/02/27 01:16:43 hobbs Exp $ + * RCS: @(#) $Id: tclUnixSock.c,v 1.6.2.1 2006/03/10 14:23:50 vasiljevic Exp $ */ #include "tcl.h" @@ -148,3 +148,25 @@ TclpHasSockets(interp) { return TCL_OK; } + +/* + *---------------------------------------------------------------------- + * + * TclpFinalizeSockets -- + * + * Performs per-thread socket subsystem finalization. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +TclpFinalizeSockets() +{ + return; +} -- cgit v0.12 From 5e0d82e5a916c0a59ba7a2827b695d74886edcf3 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 10 Mar 2006 14:27:41 +0000 Subject: Finalization of the sockets is now solely done in TclpFinalizeSockets() and not over the thread-exit handler, because the order of actions the Tcl generic core will impose may result in cores/hangs if the thread exit handler tears down socket subsystem too early (See Tcl Bug #1437595). --- mac/tclMacSock.c | 24 +++++----- win/tclWinSock.c | 134 ++++++++++++++++++++++++++++++------------------------- 2 files changed, 83 insertions(+), 75 deletions(-) diff --git a/mac/tclMacSock.c b/mac/tclMacSock.c index f272f87..195182e 100644 --- a/mac/tclMacSock.c +++ b/mac/tclMacSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacSock.c,v 1.14 2002/04/08 09:03:17 das Exp $ + * RCS: @(#) $Id: tclMacSock.c,v 1.14.2.1 2006/03/10 14:27:41 vasiljevic Exp $ */ #include "tclInt.h" @@ -159,7 +159,6 @@ static void SocketCheckProc _ANSI_ARGS_((ClientData clientData, int flags)); static int SocketEventProc _ANSI_ARGS_((Tcl_Event *evPtr, int flags)); -static void SocketExitHandler _ANSI_ARGS_((ClientData clientData)); static void SocketFreeProc _ANSI_ARGS_((ClientData clientData)); static int SocketReady _ANSI_ARGS_((TcpState *statePtr)); static void SocketSetupProc _ANSI_ARGS_((ClientData clientData, @@ -367,37 +366,36 @@ InitSockets() tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); if (tsdPtr == NULL) { + tsdPtr = TCL_TSD_INIT(&dataKey); tsdPtr->socketList = NULL; Tcl_CreateEventSource(SocketSetupProc, SocketCheckProc, NULL); - Tcl_CreateThreadExitHandler(SocketExitHandler, (ClientData) NULL); } } /* *---------------------------------------------------------------------- * - * SocketExitHandler -- + * TclpFinalizeSockets -- * - * Callback invoked during exit clean up to deinitialize the - * socket module. + * Invoked during exit clean up to deinitialize the socket module. * * Results: * None. * * Side effects: - * None. + * Removed event source. * *---------------------------------------------------------------------- */ -static void -SocketExitHandler( - ClientData clientData) /* Not used. */ +void +TclpFinalizeSockets() { - if (hasSockets) { + ThreadSpecificData *tsdPtr; + + tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); + if (tsdPtr != NULL) { Tcl_DeleteEventSource(SocketSetupProc, SocketCheckProc, NULL); - /* CleanUpExitProc(); - TclMacDeleteExitToShellPatch(CleanUpExitProc); */ } } diff --git a/win/tclWinSock.c b/win/tclWinSock.c index 6643345..99913ea 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.4 2005/11/28 09:49:57 dkf Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.5 2006/03/10 14:27:41 vasiljevic Exp $ */ #include "tclWinInt.h" @@ -249,7 +249,6 @@ static LRESULT CALLBACK SocketProc _ANSI_ARGS_((HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)); static Tcl_EventSetupProc SocketSetupProc; -static Tcl_ExitProc SocketThreadExitHandler; static int SocketsEnabled _ANSI_ARGS_((void)); static void TcpAccept _ANSI_ARGS_((SocketInfo *infoPtr)); static Tcl_DriverBlockModeProc TcpBlockProc; @@ -303,7 +302,7 @@ static Tcl_ChannelType tcpChannelType = { * library and set up the winSock function table. If successful, * registers the event window for the socket notifier code. * - * Assumes Mutex is held. + * Assumes socketMutex is held. * * Results: * None. @@ -491,45 +490,41 @@ InitSockets() if (tsdPtr == NULL) { tsdPtr = TCL_TSD_INIT(&dataKey); tsdPtr->socketList = NULL; - tsdPtr->hwnd = NULL; - - tsdPtr->threadId = Tcl_GetCurrentThread(); - + tsdPtr->hwnd = NULL; + tsdPtr->threadId = Tcl_GetCurrentThread(); tsdPtr->readyEvent = CreateEvent(NULL, FALSE, FALSE, NULL); + if (tsdPtr->readyEvent == NULL) { + goto unloadLibrary; + } tsdPtr->socketListLock = CreateEvent(NULL, FALSE, TRUE, NULL); + if (tsdPtr->socketListLock == NULL) { + goto unloadLibrary; + } tsdPtr->socketThread = CreateThread(NULL, 256, SocketThread, tsdPtr, 0, &id); - SetThreadPriority(tsdPtr->socketThread, THREAD_PRIORITY_HIGHEST); - if (tsdPtr->socketThread == NULL) { goto unloadLibrary; } - + + SetThreadPriority(tsdPtr->socketThread, THREAD_PRIORITY_HIGHEST); /* - * Wait for the thread to signal that the window has - * been created and is ready to go. Timeout after twenty - * seconds. + * Wait for the thread to signal when the window has + * been created and if it is ready to go. */ - - if (WaitForSingleObject(tsdPtr->readyEvent, 20000) - == WAIT_TIMEOUT) { - goto unloadLibrary; - } + + WaitForSingleObject(tsdPtr->readyEvent, INFINITE); if (tsdPtr->hwnd == NULL) { - goto unloadLibrary; + goto unloadLibrary; /* Trouble creating the window */ } - + Tcl_CreateEventSource(SocketSetupProc, SocketCheckProc, NULL); - Tcl_CreateThreadExitHandler(SocketThreadExitHandler, NULL); } return; unloadLibrary: - if (tsdPtr != NULL && tsdPtr->hwnd != NULL) { - SocketThreadExitHandler(0); - } + TclpFinalizeSockets(); FreeLibrary(winSock.hModule); winSock.hModule = NULL; return; @@ -568,7 +563,7 @@ SocketsEnabled() * * SocketExitHandler -- * - * Callback invoked during exit clean up to delete the socket + * Callback invoked during app exit clean up to delete the socket * communication window and to release the WinSock DLL. * * Results: @@ -591,7 +586,7 @@ SocketExitHandler(clientData) * Make sure the socket event handling window is cleaned-up * for, at most, this thread. */ - SocketThreadExitHandler(clientData); + TclpFinalizeSockets(); UnregisterClass("TclSocket", TclWinGetTclInstance()); winSock.WSACleanup(); FreeLibrary(winSock.hModule); @@ -605,49 +600,50 @@ SocketExitHandler(clientData) /* *---------------------------------------------------------------------- * - * SocketThreadExitHandler -- + * TclpFinalizeSockets -- * - * Callback invoked during thread clean up to delete the socket - * event source. + * This function is called from Tcl_FinalizeThread to finalize + * the platform specific socket subsystem. + * Also, it may be called from within this module to cleanup + * the state if unable to initialize the sockets subsystem. * * Results: * None. * * Side effects: - * Delete the event source. + * Deletes the event source and destroys the socket thread. * *---------------------------------------------------------------------- */ - /* ARGSUSED */ -static void -SocketThreadExitHandler(clientData) - ClientData clientData; /* Not used. */ +void +TclpFinalizeSockets() { - ThreadSpecificData *tsdPtr = - (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); - - if (tsdPtr != NULL && tsdPtr->socketThread != NULL) { - DWORD exitCode; - - GetExitCodeThread(tsdPtr->socketThread, &exitCode); - if (exitCode == STILL_ACTIVE) { - PostMessage(tsdPtr->hwnd, SOCKET_TERMINATE, 0, 0); - /* - * Wait for the thread to close. This ensures that we are - * completely cleaned up before we leave this function. - * If Tcl_Finalize was called from DllMain, the thread - * is in a paused state so we need to timeout and continue. - */ + ThreadSpecificData *tsdPtr; - WaitForSingleObject(tsdPtr->socketThread, 100); + tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); + if (tsdPtr != NULL) { + if (tsdPtr->socketThread != NULL) { + if (tsdPtr->hwnd != NULL) { + PostMessage(tsdPtr->hwnd, SOCKET_TERMINATE, 0, 0); + /* + * Wait for the thread to exit. This ensures that we are + * completely cleaned up before we leave this function. + */ + WaitForSingleObject(tsdPtr->readyEvent, INFINITE); + tsdPtr->hwnd = NULL; + } + CloseHandle(tsdPtr->socketThread); + tsdPtr->socketThread = NULL; + } + if (tsdPtr->readyEvent != NULL) { + CloseHandle(tsdPtr->readyEvent); + tsdPtr->readyEvent = NULL; + } + if (tsdPtr->socketListLock != NULL) { + CloseHandle(tsdPtr->socketListLock); + tsdPtr->socketListLock = NULL; } - CloseHandle(tsdPtr->socketThread); - tsdPtr->socketThread = NULL; - CloseHandle(tsdPtr->readyEvent); - CloseHandle(tsdPtr->socketListLock); - - Tcl_DeleteThreadExitHandler(SocketThreadExitHandler, NULL); Tcl_DeleteEventSource(SocketSetupProc, SocketCheckProc, NULL); } } @@ -1033,7 +1029,6 @@ NewSocketInfo(socket) SOCKET socket; { SocketInfo *infoPtr; - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); infoPtr = (SocketInfo *) ckalloc((unsigned) sizeof(SocketInfo)); infoPtr->socket = socket; @@ -2324,28 +2319,43 @@ SocketThread(LPVOID arg) MSG msg; ThreadSpecificData *tsdPtr = (ThreadSpecificData *)(arg); + /* + * Create a dummy window receiving socket events. + */ + tsdPtr->hwnd = CreateWindow("TclSocket", "TclSocket", WS_TILED, 0, 0, 0, 0, NULL, NULL, windowClass.hInstance, arg); /* - * Signal the main thread that the window has been created - * and that the socket thread is ready to go. + * Signalize thread creator that we are done creating the window. */ - + SetEvent(tsdPtr->readyEvent); - + + /* + * If unable to create the window, exit this thread immediately. + */ + if (tsdPtr->hwnd == NULL) { return 1; } /* * Process all messages on the socket window until WM_QUIT. + * This threads exits only when instructed to do so by the + * call to PostMessage(SOCKET_TERMINATE) in TclpFinalizeSockets(). */ while (GetMessage(&msg, NULL, 0, 0) > 0) { DispatchMessage(&msg); } + /* + * This releases waiters on thread exit in TclpFinalizeSockets() + */ + + SetEvent(tsdPtr->readyEvent); + return msg.wParam; } @@ -2703,7 +2713,7 @@ TcpThreadActionProc (instanceData, action) notifyCmd = SELECT; } else { - SocketInfo **nextPtrPtr; + SocketInfo **nextPtrPtr; int removed = 0; tsdPtr = TCL_TSD_INIT(&dataKey); -- cgit v0.12 From 53a131d83b8da01491182f48be42b23cf12aaf94 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 10 Mar 2006 14:33:03 +0000 Subject: Added notes about fixing Bug #1437595. --- ChangeLog | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ChangeLog b/ChangeLog index 96987e8..21249cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2006-02-10 Zoran Vasiljevic + + -- Summary of changes fixing Tcl Bug #1437595 -- + + * generic/tclEvent.c: Cosmetic touches and identation + * generic/tclInt.h: Added TclpFinalizeSockets() call. + + * generic/tclIO.c: Calls TclpFinalizeSockets() as part + of the TclFinalizeIOSubsystem(). + + * unix/tclUnixSock: Added no-op TclpFinalizeSockets(). + + * mac/tclMacSock.c: + * win/tclWinPipe.c + * win/tclWinSock.c: Finalization of the sockets/pipes + is now solely done in TclpFinalizeSockets() and + TclpFinalizePipes() and not over the thread-exit handler, + because the order of actions the Tcl generic core will + impose may result in cores/hangs if the thread exit handler + tears down corresponding subsystem(s) too early. + 2006-03-10 Vince Darley * win/tclWin32Dll.c: -- cgit v0.12 From 8f5ed3e68098da4c0f4b3403d3a32fee2bae0f03 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Mar 2006 16:26:10 +0000 Subject: typo --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 21249cb..54ee4a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2006-02-10 Zoran Vasiljevic +2006-03-10 Zoran Vasiljevic -- Summary of changes fixing Tcl Bug #1437595 -- -- cgit v0.12 From e96cb5c2cb64528117d94b92570a994523851d29 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 13 Mar 2006 20:41:48 +0000 Subject: * unix/configure.in: Revert change from 2005-07-26 that sometimes * unix/configure: added $prefix/share to the tcl_pkgPath. See [Patch 1231015]. autoconf-2.13. --- ChangeLog | 6 ++++++ changes | 6 +++++- unix/configure | 7 ------- unix/configure.in | 9 +-------- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 54ee4a5..1f75ecb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-03-13 Don Porter + + * unix/configure.in: Revert change from 2005-07-26 that sometimes + * unix/configure: added $prefix/share to the tcl_pkgPath. + See [Patch 1231015]. autoconf-2.13. + 2006-03-10 Zoran Vasiljevic -- Summary of changes fixing Tcl Bug #1437595 -- diff --git a/changes b/changes index 2cc8d58..205678d 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.36 2006/03/07 20:35:53 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.37 2006/03/13 20:41:52 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6336,4 +6336,8 @@ Restores Tcl 8.4.9 behavior (porter) 2006-03-06 (bug fix)[1439836,1444291] fix TCL_EVAL_{GLOBAL,INVOKE} handling when auto-loading or exec traces are present (porter) +2006-03-10 (bug fix)[1437595] Win socket finalize with threads (vasiljevic) + +2005-03-13 (revert 2005-07-26 change) ${prefix}/share on ::tcl_pkgPath (porter) + --- Released 8.4.13, March 17, 2006 --- See ChangeLog for details --- diff --git a/unix/configure b/unix/configure index 69f1d6d..d9a7c3a 100755 --- a/unix/configure +++ b/unix/configure @@ -7928,13 +7928,6 @@ else TCL_PACKAGE_PATH="${prefix}/lib" fi -# If a system share directory like /usr/local/share already exists, then add -# it to the package search path. - -if test -d "${prefix}/share" ; then - TCL_PACKAGE_PATH="${TCL_PACKAGE_PATH} ${prefix}/share" -fi - #-------------------------------------------------------------------- # The statements below define various symbols relating to Tcl # stub support. diff --git a/unix/configure.in b/unix/configure.in index 99dd1a6..f4caa29 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.25 2006/03/07 05:30:29 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.26 2006/03/13 20:41:56 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -571,13 +571,6 @@ else TCL_PACKAGE_PATH="${prefix}/lib" fi -# If a system share directory like /usr/local/share already exists, then add -# it to the package search path. - -if test -d "${prefix}/share" ; then - TCL_PACKAGE_PATH="${TCL_PACKAGE_PATH} ${prefix}/share" -fi - #-------------------------------------------------------------------- # The statements below define various symbols relating to Tcl # stub support. -- cgit v0.12 From 24f992668d4072421af7d022ad5015ab3c29d505 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 13 Mar 2006 20:57:08 +0000 Subject: * generic/tclEncoding.c: Report error when an escape encoding is missing one of its sub-encodings [Bug 506653]. --- ChangeLog | 3 +++ generic/tclEncoding.c | 29 ++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1f75ecb..efd6797 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2006-03-13 Don Porter + * generic/tclEncoding.c: Report error when an escape encoding + is missing one of its sub-encodings [Bug 506653]. + * unix/configure.in: Revert change from 2005-07-26 that sometimes * unix/configure: added $prefix/share to the tcl_pkgPath. See [Patch 1231015]. autoconf-2.13. diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 6a8ae6e..5fa799e 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.8 2005/10/05 04:27:38 hobbs Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.9 2006/03/13 20:57:09 dgp Exp $ */ #include "tclInt.h" @@ -1355,6 +1355,9 @@ LoadEncodingFile(interp, name) } if ((encoding == NULL) && (interp != NULL)) { Tcl_AppendResult(interp, "invalid encoding file \"", name, "\"", NULL); + if (ch == 'E') { + Tcl_AppendResult(interp, " or missing sub-encoding", NULL); + } } Tcl_Close(NULL, chan); return encoding; @@ -1722,7 +1725,7 @@ LoadEscapeEncoding(name, chan) CONST char *name; /* Name for new encoding. */ Tcl_Channel chan; /* File containing new encoding. */ { - int i; + int i, missingSubEncoding = 0; unsigned int size; Tcl_DString escapeData; char init[16], final[16]; @@ -1766,16 +1769,27 @@ LoadEscapeEncoding(name, chan) strncpy(est.name, argv[0], sizeof(est.name)); est.name[sizeof(est.name) - 1] = '\0'; - /* To avoid infinite recursion in [encoding system iso2022-*]*/ - Tcl_GetEncoding(NULL, est.name); + /* + * Load the subencodings first so we're never stuck + * trying to use a half-loaded system encoding to + * open/read a *.enc file. + */ - est.encodingPtr = NULL; + est.encodingPtr = (Encoding *) Tcl_GetEncoding(NULL, est.name); + if ((est.encodingPtr == NULL) + || (est.encodingPtr->toUtfProc != TableToUtfProc)) { + missingSubEncoding = 1; + } Tcl_DStringAppend(&escapeData, (char *) &est, sizeof(est)); } } ckfree((char *) argv); Tcl_DStringFree(&lineString); } + if (missingSubEncoding) { + Tcl_DStringFree(&escapeData); + return NULL; + } size = sizeof(EscapeEncodingData) - sizeof(EscapeSubTable) + Tcl_DStringLength(&escapeData); @@ -2997,6 +3011,11 @@ GetTableEncoding(dataPtr, state) subTablePtr = &dataPtr->subTables[state]; encodingPtr = subTablePtr->encodingPtr; if (encodingPtr == NULL) { + /* + * Now that escape encodings load their sub-encodings first, and + * fail to load if any sub-encodings are missing, this branch should + * never happen. + */ encodingPtr = (Encoding *) Tcl_GetEncoding(NULL, subTablePtr->name); if ((encodingPtr == NULL) || (encodingPtr->toUtfProc != TableToUtfProc)) { -- cgit v0.12 From 66e553d72e52824e2bb3f06814e9d3fc6f4a935d Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 14 Mar 2006 20:36:36 +0000 Subject: * win/tclWinPipe.c (Tcl_WaitPid): Backport of fix made to the head by David Gravereaux in 2004. See ChangeLog entry 2004-01-19. [Bug 1381436]. Fixed a thread-safety problem with the process list. The delayed cut operation after the wait was going stale by being outside the list lock. It now cuts within the lock and does a locked splice for when it needs to instead. [Bug 859820] --- ChangeLog | 11 +++++++++++ win/tclWinPipe.c | 26 +++++++++++++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index efd6797..6db203f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-03-14 Andreas Kupries + + * win/tclWinPipe.c (Tcl_WaitPid): Backport of fix made to the head + by David Gravereaux in 2004. See ChangeLog entry 2004-01-19. + [Bug 1381436]. + + Fixed a thread-safety problem with the process list. The delayed + cut operation after the wait was going stale by being outside + the list lock. It now cuts within the lock and does a locked + splice for when it needs to instead. [Bug 859820] + 2006-03-13 Don Porter * generic/tclEncoding.c: Report error when an escape encoding diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index e599b50..624aecc 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.16 2006/03/10 14:18:54 vasiljevic Exp $ + * RCS: @(#) $Id: tclWinPipe.c,v 1.33.2.17 2006/03/14 20:36:39 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -885,6 +885,8 @@ TclpGetPid( { ProcInfo *infoPtr; + PipeInit(); + Tcl_MutexLock(&pipeMutex); for (infoPtr = procList; infoPtr != NULL; infoPtr = infoPtr->nextPtr) { if (infoPtr->hProcess == (HANDLE) pid) { @@ -2479,7 +2481,7 @@ Tcl_WaitPid( int *statPtr, int options) { - ProcInfo *infoPtr, **prevPtrPtr; + ProcInfo *infoPtr = NULL, **prevPtrPtr; DWORD flags; Tcl_Pid result; DWORD ret, exitCode; @@ -2496,7 +2498,13 @@ Tcl_WaitPid( } /* - * Find the process on the process list. + * Find the process and cut it from the process list. + * SF Tcl Bug 859820, Backport of its fix. + * SF Tcl Bug 1381436, asking for the backport. + * + * [x] Cutting the infoPtr after the closehandle allows the + * pointer to become stale. We do it here, and compensate if the + * process was not done yet. */ Tcl_MutexLock(&pipeMutex); @@ -2504,6 +2512,7 @@ Tcl_WaitPid( for (infoPtr = procList; infoPtr != NULL; prevPtrPtr = &infoPtr->nextPtr, infoPtr = infoPtr->nextPtr) { if (infoPtr->hProcess == (HANDLE) pid) { + *prevPtrPtr = infoPtr->nextPtr; break; } } @@ -2533,6 +2542,14 @@ Tcl_WaitPid( if (ret == WAIT_TIMEOUT) { *statPtr = 0; if (options & WNOHANG) { + /* + * Re-insert the cut infoPtr back on the list. + * See [x] for explanation. + */ + Tcl_MutexLock(&pipeMutex); + infoPtr->nextPtr = procList; + procList = infoPtr; + Tcl_MutexUnlock(&pipeMutex); return 0; } else { result = 0; @@ -2591,11 +2608,10 @@ Tcl_WaitPid( } /* - * Remove the process from the process list and close the process handle. + * Officially close the process handle. */ CloseHandle(infoPtr->hProcess); - *prevPtrPtr = infoPtr->nextPtr; ckfree((char*)infoPtr); return result; -- cgit v0.12 From e8db060adb7f6b18464bedc29e9872d54ea7854e Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 14 Mar 2006 22:51:07 +0000 Subject: * doc/fconfigure.n: Clarified that -translation is binary is reported as lf when queried, because it is identical to lf, except for the special additional behaviour when setting it. [Bug 666770]. --- ChangeLog | 7 +++++++ doc/fconfigure.n | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 6db203f..3171f3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2006-03-14 Andreas Kupries + * doc/fconfigure.n: Clarified that -translation is binary is + reported as lf when queried, because it is identical to lf, + except for the special additional behaviour when setting + it. [Bug 666770]. + +2006-03-14 Andreas Kupries + * win/tclWinPipe.c (Tcl_WaitPid): Backport of fix made to the head by David Gravereaux in 2004. See ChangeLog entry 2004-01-19. [Bug 1381436]. diff --git a/doc/fconfigure.n b/doc/fconfigure.n index 16b81ad..9357994 100644 --- a/doc/fconfigure.n +++ b/doc/fconfigure.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: fconfigure.n,v 1.7.2.2 2004/10/27 12:52:40 dkf Exp $ +'\" RCS: @(#) $Id: fconfigure.n,v 1.7.2.3 2006/03/14 22:51:13 andreas_kupries Exp $ '\" .so man.macros .TH fconfigure n 8.3 Tcl "Tcl Built-In Commands" @@ -165,6 +165,13 @@ No end-of-line translations are performed. This is nearly identical to end-of-file character to the empty string (which disables it) and sets the encoding to \fBbinary\fR (which disables encoding filtering). See the description of \fB\-eofchar\fR and \fB\-encoding\fR for more information. +.PP +.RS +Internally, i.e. when it comes to the actual behaviour of the +translator this value \fBis\fR identical to \fBlf\fR and is therefore +reported as such when queried. Even if \fBbinary\fR was used to set +the translation. +.RE .TP \fBcr\fR . -- cgit v0.12 From 87c9ed6e567dfddf056590c104ffe303a3ace5b7 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 16 Mar 2006 00:35:53 +0000 Subject: * tests/socket.test: Extended the timeout in socket-11.11 from 10 to 40 seconds to allow for really slow machines. Also extended actual/expected results with value of variable 'done' to make it clearer when a test fails due to a timeout. [Bug 792159]. * generic/tclPipe.c (TclCreatePipeline): Modified the processing of pipebars to fail if the last bar is followed only by redirections. [Bug 768659]. --- ChangeLog | 13 +++++++++++++ generic/tclPipe.c | 20 ++++++++++++++++++-- tests/socket.test | 8 ++++---- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3171f3f..f59888f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2006-03-15 Andreas Kupries + + * tests/socket.test: Extended the timeout in socket-11.11 from 10 + to 40 seconds to allow for really slow machines. Also extended + actual/expected results with value of variable 'done' to make it + clearer when a test fails due to a timeout. [Bug 792159]. + +2006-03-14 Andreas Kupries + + * generic/tclPipe.c (TclCreatePipeline): Modified the processing + of pipebars to fail if the last bar is followed only by + redirections. [Bug 768659]. + 2006-03-14 Andreas Kupries * doc/fconfigure.n: Clarified that -translation is binary is diff --git a/generic/tclPipe.c b/generic/tclPipe.c index accfd62..c1097ca 100644 --- a/generic/tclPipe.c +++ b/generic/tclPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPipe.c,v 1.7.2.4 2006/01/16 19:31:18 rmax Exp $ + * RCS: @(#) $Id: tclPipe.c,v 1.7.2.5 2006/03/16 00:35:58 andreas_kupries Exp $ */ #include "tclInt.h" @@ -508,7 +508,7 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, int errorRelease = 0; CONST char *p; CONST char *nextArg; - int skip, lastBar, lastArg, i, j, atOK, flags, errorToOutput = 0; + int skip, lastBar, lastArg, i, j, atOK, flags, needCmd, errorToOutput = 0; Tcl_DString execBuffer; TclFile pipeIn; TclFile curInFile, curOutFile, curErrFile; @@ -546,6 +546,7 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, lastBar = -1; cmdCount = 1; + needCmd = 1; for (i = 0; i < argc; i++) { errorToOutput = 0; skip = 0; @@ -565,6 +566,7 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, } lastBar = i; cmdCount++; + needCmd = 1; break; case '<': @@ -706,6 +708,11 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, } } break; + + default: + /* Got a command word, not a redirection */ + needCmd = 0; + break; } if (skip != 0) { @@ -717,6 +724,15 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, } } + if (needCmd) { + /* We had a bar followed only by redirections. */ + + Tcl_SetResult(interp, + "illegal use of | or |& in command", + TCL_STATIC); + goto error; + } + if (inputFile == NULL) { if (inputLiteral != NULL) { /* diff --git a/tests/socket.test b/tests/socket.test index 0018a0a..9a53b35 100644 --- a/tests/socket.test +++ b/tests/socket.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: socket.test,v 1.26.2.5 2004/10/28 04:53:12 dgp Exp $ +# RCS: @(#) $Id: socket.test,v 1.26.2.6 2006/03/16 00:35:59 andreas_kupries Exp $ # Running socket tests with a remote server: # ------------------------------------------ @@ -1303,12 +1303,12 @@ test socket-11.11 {testing spurious events} {socket doTestsWithRemoteServer} { } set c [socket $remoteServerIP 2836] fileevent $c readable "readlittle $c" - set timer [after 10000 "set done timed_out"] + set timer [after 40000 "set done timed_out"] vwait done after cancel $timer sendCommand {close $socket10_13_test_server} - list $spurious $len -} {0 2690} + list $spurious $len $done +} {0 2690 1} test socket-11.12 {testing EOF stickyness} {socket doTestsWithRemoteServer} { set counter 0 -- cgit v0.12 From 278d6deed875d2e1041c37f225189680d09891bd Mon Sep 17 00:00:00 2001 From: das Date: Thu, 16 Mar 2006 09:15:50 +0000 Subject: typo in TclpLoadMemory() error msg --- unix/tclLoadDyld.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 109aa37..121792f 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.6 2005/11/27 06:09:19 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.7 2006/03/16 09:15:50 das Exp $ */ #include "tclInt.h" @@ -537,7 +537,7 @@ TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) vm_deallocate(mach_task_self(), (vm_address_t) buffer, size); if (objFileImageErrMsg != NULL) { Tcl_AppendResult(interp, - "NSCreateObjectFileImageFromFile() error: ", + "NSCreateObjectFileImageFromMemory() error: ", objFileImageErrMsg, (char *) NULL); } return TCL_ERROR; -- cgit v0.12 From 68c1d94957701240c5b06cdc75ae4a47d1a3cd7e Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 16 Mar 2006 18:23:18 +0000 Subject: * generic/tclIOUtil.c (TclGetOpenMode): Added the flag O_APPEND to the list of POSIX modes used when opening a file for 'a'ppend. This enables the proper automatic seek-to-end-on-write by the OS. See [Bug 680143] for longer discussion. * tests/ioCmd.test (iocmd-13.7.*): Extended the testsuite to check the new handling of 'a'. --- ChangeLog | 10 ++++++++++ generic/tclIOUtil.c | 8 ++++++-- tests/ioCmd.test | 39 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f59888f..ca4b1fa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-03-16 Andreas Kupries + + * generic/tclIOUtil.c (TclGetOpenMode): Added the flag O_APPEND to + the list of POSIX modes used when opening a file for + 'a'ppend. This enables the proper automatic seek-to-end-on-write + by the OS. See [Bug 680143] for longer discussion. + + * tests/ioCmd.test (iocmd-13.7.*): Extended the testsuite to check + the new handling of 'a'. + 2006-03-15 Andreas Kupries * tests/socket.test: Extended the timeout in socket-11.11 from 10 diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 84c9161..99240e4 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.26 2006/02/15 16:04:29 dgp Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.27 2006/03/16 18:23:22 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1567,7 +1567,11 @@ TclGetOpenMode(interp, string, seekFlagPtr) mode = O_WRONLY|O_CREAT|O_TRUNC; break; case 'a': - mode = O_WRONLY|O_CREAT; + /* [Bug 680143]. + * Added O_APPEND for proper automatic + * seek-to-end-on-write by the OS. + */ + mode = O_WRONLY|O_CREAT|O_APPEND; *seekFlagPtr = 1; break; default: diff --git a/tests/ioCmd.test b/tests/ioCmd.test index 448b222..29ddba7 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -1,3 +1,4 @@ +# -*- tcl -*- # Commands covered: open, close, gets, read, puts, seek, tell, eof, flush, # fblocked, fconfigure, open, channel, fcopy # @@ -12,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.16.2.2 2003/10/07 18:53:23 dgp Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.16.2.3 2006/03/16 18:23:24 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -459,6 +460,42 @@ test iocmd-13.6 {errors in open command} { string tolower $msg } {1 {couldn't open "_non_existent_": no such file or directory} {posix enoent {no such file or directory}}} + +test iocmd-13.7.1 {open for append, a mode} -setup { + set log [makeFile {} out] + set chans {} +} -body { + foreach i { 0 1 2 3 4 5 6 7 8 9 } { + puts [set ch [open $log a]] $i + lappend chans $ch + } + foreach ch $chans {catch {close $ch}} + lsort [split [string trim [viewFile out]] \n] +} -cleanup { + removeFile out + # Ensure that channels are gone, even if body failed to do so + foreach ch $chans {catch {close $ch}} +} -result {0 1 2 3 4 5 6 7 8 9} + +test iocmd-13.7.2 {open for append, O_APPEND} -setup { + set log [makeFile {} out] + set chans {} +} -body { + foreach i { 0 1 2 3 4 5 6 7 8 9 } { + puts [set ch [open $log {WRONLY CREAT APPEND}]] $i + lappend chans $ch + } + foreach ch $chans {catch {close $ch}} + lsort [split [string trim [viewFile out]] \n] +} -cleanup { + removeFile out + # Ensure that channels are gone, even if body failed to do so + foreach ch $chans {catch {close $ch}} +} -result {0 1 2 3 4 5 6 7 8 9} + + + + test iocmd-14.1 {file id parsing errors} { list [catch {eof gorp} msg] $msg $errorCode } {1 {can not find channel named "gorp"} NONE} -- cgit v0.12 From 641feadb4eb7727637f8a7508ce9f8f8d5a64e14 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 16 Mar 2006 19:12:31 +0000 Subject: * tests/io.test (io-43.1 io-44.[1234]): Rewritten to be self-contained with regard to setup and cleanup. [Bug 681793]. --- ChangeLog | 5 +++++ tests/io.test | 66 ++++++++++++++++++++++++++++++++++++++--------------------- 2 files changed, 48 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index ca4b1fa..46258c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2006-03-16 Andreas Kupries + * tests/io.test (io-43.1 io-44.[1234]): Rewritten to be + self-contained with regard to setup and cleanup. [Bug 681793]. + +2006-03-16 Andreas Kupries + * generic/tclIOUtil.c (TclGetOpenMode): Added the flag O_APPEND to the list of POSIX modes used when opening a file for 'a'ppend. This enables the proper automatic seek-to-end-on-write diff --git a/tests/io.test b/tests/io.test index 50ba5c6..4e782f7 100644 --- a/tests/io.test +++ b/tests/io.test @@ -1,3 +1,4 @@ +# -*- tcl -*- # Functionality covered: operation of all IO commands, and all procedures # defined in generic/tclIO.c. # @@ -12,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.10 2005/04/14 07:10:52 davygrvy Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.11 2006/03/16 19:12:32 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -5379,14 +5380,6 @@ test io-42.3 {Tcl_FileeventCmd: replacing, with NULL chars in script} {fileevent lappend result [fileevent $f readable] } {13 11 12 {}} -# -# Test fileevent on a pipe -# -if {[testConstraint openpipe]} { -catch {set f2 [open "|[list cat -u]" r+]} -catch {set f3 [open "|[list cat -u]" r+]} -} - test io-43.1 {Tcl_FileeventCmd: creating, deleting, querying} {stdio unixExecs fileevent} { set result {} fileevent $f readable "script 1" @@ -5398,7 +5391,10 @@ test io-43.1 {Tcl_FileeventCmd: creating, deleting, querying} {stdio unixExecs f fileevent $f writable {} lappend result [fileevent $f readable] [fileevent $f writable] } {{script 1} {} {script 1} {write script} {} {write script} {} {}} -test io-43.2 {Tcl_FileeventCmd: deleting when many present} {stdio unixExecs fileevent} { +test io-43.2 {Tcl_FileeventCmd: deleting when many present} -setup { + set f2 [open "|[list cat -u]" r+] + set f3 [open "|[list cat -u]" r+] +} -constraints {stdio unixExecs fileevent openpipe} -body { set result {} lappend result [fileevent $f r] [fileevent $f2 r] [fileevent $f3 r] fileevent $f r "read f" @@ -5411,9 +5407,15 @@ test io-43.2 {Tcl_FileeventCmd: deleting when many present} {stdio unixExecs fil lappend result [fileevent $f r] [fileevent $f2 r] [fileevent $f3 r] fileevent $f r {} lappend result [fileevent $f r] [fileevent $f2 r] [fileevent $f3 r] -} {{} {} {} {read f} {read f2} {read f3} {read f} {} {read f3} {read f} {} {} {} {} {}} - -test io-44.1 {FileEventProc procedure: normal read event} {stdio unixExecs fileevent} { +} -cleanup { + catch {close $f2} + catch {close $f3} +} -result {{} {} {} {read f} {read f2} {read f3} {read f} {} {read f3} {read f} {} {} {} {} {}} + +test io-44.1 {FileEventProc procedure: normal read event} -setup { + set f2 [open "|[list cat -u]" r+] + set f3 [open "|[list cat -u]" r+] +} -constraints {stdio unixExecs fileevent openpipe} -body { fileevent $f2 readable [namespace code { set x [gets $f2]; fileevent $f2 readable {} }] @@ -5421,8 +5423,14 @@ test io-44.1 {FileEventProc procedure: normal read event} {stdio unixExecs filee variable x initial vwait [namespace which -variable x] set x -} {text} -test io-44.2 {FileEventProc procedure: error in read event} {stdio unixExecs fileevent} { +} -cleanup { + catch {close $f2} + catch {close $f3} +} -result {text} +test io-44.2 {FileEventProc procedure: error in read event} -setup { + set f2 [open "|[list cat -u]" r+] + set f3 [open "|[list cat -u]" r+] +} -constraints {stdio unixExecs fileevent openpipe} -body { proc ::bgerror args "set [namespace which -variable x] \$args" fileevent $f2 readable {error bogus} puts $f2 text; flush $f2 @@ -5430,8 +5438,14 @@ test io-44.2 {FileEventProc procedure: error in read event} {stdio unixExecs fil vwait [namespace which -variable x] rename ::bgerror {} list $x [fileevent $f2 readable] -} {bogus {}} -test io-44.3 {FileEventProc procedure: normal write event} {stdio unixExecs fileevent} { +} -cleanup { + catch {close $f2} + catch {close $f3} +} -result {bogus {}} +test io-44.3 {FileEventProc procedure: normal write event} -setup { + set f2 [open "|[list cat -u]" r+] + set f3 [open "|[list cat -u]" r+] +} -constraints {stdio unixExecs fileevent openpipe} -body { fileevent $f2 writable [namespace code { lappend x "triggered" incr count -1 @@ -5445,15 +5459,24 @@ test io-44.3 {FileEventProc procedure: normal write event} {stdio unixExecs file vwait [namespace which -variable x] vwait [namespace which -variable x] set x -} {initial triggered triggered triggered} -test io-44.4 {FileEventProc procedure: eror in write event} {stdio unixExecs fileevent} { +} -cleanup { + catch {close $f2} + catch {close $f3} +} -result {initial triggered triggered triggered} +test io-44.4 {FileEventProc procedure: eror in write event} -setup { + set f2 [open "|[list cat -u]" r+] + set f3 [open "|[list cat -u]" r+] +} -constraints {stdio unixExecs fileevent openpipe} -body { proc ::bgerror args "set [namespace which -variable x] \$args" fileevent $f2 writable {error bad-write} variable x initial vwait [namespace which -variable x] rename ::bgerror {} list $x [fileevent $f2 writable] -} {bad-write {}} +} -cleanup { + catch {close $f2} + catch {close $f3} +} -result {bad-write {}} test io-44.5 {FileEventProc procedure: end of file} {stdio unixExecs openpipe fileevent} { set f4 [open "|[list [interpreter] $path(cat) << foo]" r] fileevent $f4 readable [namespace code { @@ -5471,9 +5494,6 @@ test io-44.5 {FileEventProc procedure: end of file} {stdio unixExecs openpipe fi set x } {initial foo eof} -catch {close $f2} -catch {close $f3} - close $f makeFile "foo bar" foo -- cgit v0.12 From 9c29bcca6782316025f4f7e2170f94d9dea24a79 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 16 Mar 2006 21:11:55 +0000 Subject: * doc/open.n: Documented the changed behaviour of 'a'ppend mode. --- ChangeLog | 4 ++-- doc/open.n | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 46258c6..fc6ce1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,10 @@ 2006-03-16 Andreas Kupries + * doc/open.n: Documented the changed behaviour of 'a'ppend mode. + * tests/io.test (io-43.1 io-44.[1234]): Rewritten to be self-contained with regard to setup and cleanup. [Bug 681793]. -2006-03-16 Andreas Kupries - * generic/tclIOUtil.c (TclGetOpenMode): Added the flag O_APPEND to the list of POSIX modes used when opening a file for 'a'ppend. This enables the proper automatic seek-to-end-on-write diff --git a/doc/open.n b/doc/open.n index 003739b..fb08313 100644 --- a/doc/open.n +++ b/doc/open.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: open.n,v 1.16.2.3 2005/04/19 16:30:21 davygrvy Exp $ +'\" RCS: @(#) $Id: open.n,v 1.16.2.4 2006/03/16 21:11:57 andreas_kupries Exp $ '\" .so man.macros .TH open n 8.3 Tcl "Tcl Built-In Commands" @@ -55,7 +55,7 @@ If it doesn't exist, create a new file. \fBa\fR Open the file for writing only. If the file doesn't exist, create a new empty file. -Set the initial access position to the end of the file. +Set the file pointer to the end of the file prior to each write. .TP 15 \fBa+\fR Open the file for reading and writing. If the file doesn't exist, -- cgit v0.12 From 72206dd82f0adc6ea37e52500b0be03bb3b830fb Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Sun, 19 Mar 2006 22:34:56 +0000 Subject: ensure test suite works on non-English systems --- win/tclWinTest.c | 343 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 342 insertions(+), 1 deletion(-) diff --git a/win/tclWinTest.c b/win/tclWinTest.c index f4e701e..d9e5a8a 100644 --- a/win/tclWinTest.c +++ b/win/tclWinTest.c @@ -8,13 +8,20 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.2 2004/06/05 17:25:40 kennykb Exp $ + * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.3 2006/03/19 22:34:56 vincentdarley Exp $ */ #define USE_COMPAT_CONST #include "tclWinInt.h" /* + * For TestplatformChmod on Windows + */ +#ifdef __WIN32__ +#include +#endif + +/* * Forward declarations of procedures defined later in this file: */ int TclplatformtestInit _ANSI_ARGS_((Tcl_Interp *interp)); @@ -36,6 +43,10 @@ static int TestwincpuidCmd _ANSI_ARGS_(( ClientData dummy, Tcl_Interp* interp, int objc, Tcl_Obj *CONST objv[] )); +static int TestplatformChmod _ANSI_ARGS_((CONST char *nativePath, + int pmode)); +static int TestchmodCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int argc, CONST char **argv)); /* @@ -63,6 +74,8 @@ TclplatformtestInit(interp) * Add commands for platform specific tests for Windows here. */ + Tcl_CreateCommand(interp, "testchmod", TestchmodCmd, + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testeventloop", TesteventloopCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateObjCommand(interp, "testvolumetype", TestvolumetypeCmd, @@ -501,3 +514,331 @@ TestExceptionCmd( /* NOTREACHED */ return TCL_OK; } + +static int +TestplatformChmod(CONST char *nativePath, int pmode) +{ + SID_IDENTIFIER_AUTHORITY userSidAuthority = + SECURITY_WORLD_SID_AUTHORITY; + + typedef DWORD (WINAPI *getSidLengthRequiredDef) ( UCHAR ); + typedef BOOL (WINAPI *initializeSidDef) ( PSID, + PSID_IDENTIFIER_AUTHORITY, BYTE ); + typedef PDWORD (WINAPI *getSidSubAuthorityDef) ( PSID, DWORD ); + + static getSidLengthRequiredDef getSidLengthRequiredProc; + static initializeSidDef initializeSidProc; + static getSidSubAuthorityDef getSidSubAuthorityProc; + static const char everyoneBuf[] = "EVERYONE"; + static const SECURITY_INFORMATION infoBits = OWNER_SECURITY_INFORMATION + | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION; + static const DWORD readOnlyMask = FILE_DELETE_CHILD | FILE_ADD_FILE + | FILE_ADD_SUBDIRECTORY | FILE_WRITE_EA | FILE_APPEND_DATA + | FILE_WRITE_DATA | DELETE; + + BYTE *secDesc = 0; + DWORD secDescLen; + + const BOOL set_readOnly = !(pmode & 0222); + BOOL acl_readOnly_found = FALSE; + + ACL_SIZE_INFORMATION ACLSize; + BOOL curAclPresent, curAclDefaulted; + PACL curAcl; + PACL newAcl = 0; + DWORD newAclSize; + + WORD j; + + DWORD userSidLen = 4096; + SID *userSid = 0; + DWORD userDomainLen = 32; + TCHAR *userDomain = 0; + SID_NAME_USE userSidUse; + + DWORD attr; + + int res = 0; + + /* + * One time initialization, dynamically load Windows NT features + */ + typedef DWORD (WINAPI *setNamedSecurityInfoADef)( IN LPSTR, + IN SE_OBJECT_TYPE, IN SECURITY_INFORMATION, IN PSID, IN PSID, + IN PACL, IN PACL ); + typedef BOOL (WINAPI *getAceDef) (PACL, DWORD, LPVOID *); + typedef BOOL (WINAPI *addAceDef) ( PACL, DWORD, DWORD, LPVOID, DWORD ); + typedef BOOL (WINAPI *equalSidDef) ( PSID, PSID ); + typedef BOOL (WINAPI *addAccessDeniedAceDef) ( PACL, DWORD, DWORD, PSID ); + typedef BOOL (WINAPI *initializeAclDef) ( PACL, DWORD, DWORD ); + typedef DWORD (WINAPI *getLengthSidDef) ( PSID ); + typedef BOOL (WINAPI *getAclInformationDef) (PACL, LPVOID, DWORD, + ACL_INFORMATION_CLASS ); + typedef BOOL (WINAPI *getSecurityDescriptorDaclDef) (PSECURITY_DESCRIPTOR, + LPBOOL, PACL *, LPBOOL ); + typedef BOOL (WINAPI *lookupAccountNameADef) ( LPCSTR, LPCSTR, PSID, + PDWORD, LPSTR, LPDWORD, PSID_NAME_USE ); + typedef BOOL (WINAPI *getFileSecurityADef) ( LPCSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, LPDWORD ); + + static setNamedSecurityInfoADef setNamedSecurityInfoProc; + static getAceDef getAceProc; + static addAceDef addAceProc; + static equalSidDef equalSidProc; + static addAccessDeniedAceDef addAccessDeniedAceProc; + static initializeAclDef initializeAclProc; + static getLengthSidDef getLengthSidProc; + static getAclInformationDef getAclInformationProc; + static getSecurityDescriptorDaclDef getSecurityDescriptorDaclProc; + static lookupAccountNameADef lookupAccountNameProc; + static getFileSecurityADef getFileSecurityProc; + + static int initialized = 0; + if (!initialized) { + TCL_DECLARE_MUTEX(initializeMutex) + Tcl_MutexLock(&initializeMutex); + if (!initialized) { + HINSTANCE hInstance = LoadLibrary("Advapi32"); + if (hInstance != NULL) { + setNamedSecurityInfoProc = (setNamedSecurityInfoADef) + GetProcAddress(hInstance, "SetNamedSecurityInfoA"); + getFileSecurityProc = (getFileSecurityADef) + GetProcAddress(hInstance, "GetFileSecurityA"); + getAceProc = (getAceDef) + GetProcAddress(hInstance, "GetAce"); + addAceProc = (addAceDef) + GetProcAddress(hInstance, "AddAce"); + equalSidProc = (equalSidDef) + GetProcAddress(hInstance, "EqualSid"); + addAccessDeniedAceProc = (addAccessDeniedAceDef) + GetProcAddress(hInstance, "AddAccessDeniedAce"); + initializeAclProc = (initializeAclDef) + GetProcAddress(hInstance, "InitializeAcl"); + getLengthSidProc = (getLengthSidDef) + GetProcAddress(hInstance, "GetLengthSid"); + getAclInformationProc = (getAclInformationDef) + GetProcAddress(hInstance, "GetAclInformation"); + getSecurityDescriptorDaclProc = (getSecurityDescriptorDaclDef) + GetProcAddress(hInstance, "GetSecurityDescriptorDacl"); + lookupAccountNameProc = (lookupAccountNameADef) + GetProcAddress(hInstance, "LookupAccountNameA"); + getSidLengthRequiredProc = (getSidLengthRequiredDef) + GetProcAddress(hInstance, "GetSidLengthRequired"); + initializeSidProc = (initializeSidDef) + GetProcAddress(hInstance, "InitializeSid"); + getSidSubAuthorityProc = (getSidSubAuthorityDef) + GetProcAddress(hInstance, "GetSidSubAuthority"); + if (setNamedSecurityInfoProc && getAceProc + && addAceProc && equalSidProc && addAccessDeniedAceProc + && initializeAclProc && getLengthSidProc + && getAclInformationProc && getSecurityDescriptorDaclProc + && lookupAccountNameProc && getFileSecurityProc + && getSidLengthRequiredProc && initializeSidProc + && getSidSubAuthorityProc) + initialized = 1; + } + if (!initialized) + initialized = -1; + } + Tcl_MutexUnlock(&initializeMutex); + } + + /* Process the chmod request */ + attr = GetFileAttributes(nativePath); + + /* nativePath not found */ + if (attr == 0xffffffff) { + res = -1; + goto done; + } + + /* If no ACL API is present or nativePath is not a directory, + * there is no special handling + */ + if (initialized < 0 || !(attr & FILE_ATTRIBUTE_DIRECTORY)) { + goto done; + } + + /* Set the result to error, if the ACL change is successful it will + * be reset to 0 + */ + res = -1; + + /* + * Read the security descriptor for the directory. Note the + * first call obtains the size of the security descriptor. + */ + if (!getFileSecurityProc(nativePath, infoBits, NULL, 0, &secDescLen)) { + if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { + DWORD secDescLen2 = 0; + secDesc = (BYTE *) ckalloc(secDescLen); + if (!getFileSecurityProc(nativePath, infoBits, secDesc, + secDescLen, &secDescLen2) + || (secDescLen < secDescLen2)) { + goto done; + } + } else { + goto done; + } + } + + /* Get the "Everyone" SID */ + userSid = (SID*) ckalloc(getSidLengthRequiredProc(1)); + initializeSidProc( userSid, &userSidAuthority, 1); + *(getSidSubAuthorityProc( userSid, 0)) = SECURITY_WORLD_RID; + userDomain = (TCHAR *) ckalloc(userDomainLen); + if (!lookupAccountNameProc(NULL, everyoneBuf, userSid, &userSidLen, + userDomain, &userDomainLen, &userSidUse)) { + if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { + ckfree((char *)userSid); + userSid = (SID *) ckalloc(userSidLen); + ckfree(userDomain); + userDomain = (TCHAR *) ckalloc(userDomainLen); + if (!lookupAccountNameProc(NULL, everyoneBuf, userSid, + &userSidLen, userDomain, &userDomainLen, &userSidUse)) + goto done; + } else + goto done; + } + + /* If curAclPresent == false then curAcl and curAclDefaulted not valid */ + if (!getSecurityDescriptorDaclProc(secDesc, &curAclPresent, + &curAcl, &curAclDefaulted)) + goto done; + + if (!curAclPresent || !curAcl) { + ACLSize.AclBytesInUse = 0; + ACLSize.AceCount = 0; + } else if (!getAclInformationProc(curAcl, &ACLSize, sizeof(ACLSize), + AclSizeInformation)) + goto done; + + /* Allocate memory for the new ACL */ + newAclSize = ACLSize.AclBytesInUse + sizeof (ACCESS_DENIED_ACE) + + getLengthSidProc(userSid) - sizeof (DWORD); + newAcl = (ACL *) ckalloc (newAclSize); + + /* Initialize the new ACL */ + if(!initializeAclProc(newAcl, newAclSize, ACL_REVISION)) { + goto done; + } + + /* Add denied to make readonly, this will be known as a "read-only tag" */ + if (set_readOnly && !addAccessDeniedAceProc(newAcl, ACL_REVISION, + readOnlyMask, userSid)) { + goto done; + } + + acl_readOnly_found = FALSE; + for (j = 0; j < ACLSize.AceCount; j++) { + PACL *pACE2; + ACE_HEADER *phACE2; + if (! getAceProc (curAcl, j, (LPVOID*) &pACE2)) { + goto done; + } + + phACE2 = ((ACE_HEADER *) pACE2); + + /* Do NOT propagate inherited ACEs */ + if (phACE2->AceFlags & INHERITED_ACE) { + continue; + } + + /* Skip the "read-only tag" restriction (either added above, or it + * is being removed) + */ + if (phACE2->AceType == ACCESS_DENIED_ACE_TYPE) { + ACCESS_DENIED_ACE *pACEd = (ACCESS_DENIED_ACE *)phACE2; + if (pACEd->Mask == readOnlyMask && equalSidProc(userSid, + (PSID)&(pACEd->SidStart))) { + acl_readOnly_found = TRUE; + continue; + } + } + + /* Copy the current ACE from the old to the new ACL */ + if(! addAceProc (newAcl, ACL_REVISION, MAXDWORD, pACE2, + ((PACE_HEADER) pACE2)->AceSize)) { + goto done; + } + } + + /* Apply the new ACL */ + if (set_readOnly == acl_readOnly_found + || setNamedSecurityInfoProc((LPSTR)nativePath, SE_FILE_OBJECT, + DACL_SECURITY_INFORMATION, NULL, NULL, newAcl, NULL) + == ERROR_SUCCESS ) { + res = 0; + } + + done: + if (secDesc) ckfree(secDesc); + if (newAcl) ckfree((char *)newAcl); + if (userSid) ckfree((char *)userSid); + if (userDomain) ckfree(userDomain); + + if (res != 0) + return res; + + /* Run normal chmod command */ + return chmod(nativePath, pmode); +} + +/* + *--------------------------------------------------------------------------- + * + * TestchmodCmd -- + * + * Implements the "testchmod" cmd. Used when testing "file" command. + * The only attribute used by the Windows platform is the user write + * flag; if this is not set, the file is made read-only. Otehrwise, the + * file is made read-write. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * Changes permissions of specified files. + * + *--------------------------------------------------------------------------- + */ + +static int +TestchmodCmd(dummy, interp, argc, argv) + ClientData dummy; /* Not used. */ + Tcl_Interp *interp; /* Current interpreter. */ + int argc; /* Number of arguments. */ + CONST char **argv; /* Argument strings. */ +{ + int i, mode; + char *rest; + + if (argc < 2) { + usage: + Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], + " mode file ?file ...?", NULL); + return TCL_ERROR; + } + + mode = (int) strtol(argv[1], &rest, 8); + if ((rest == argv[1]) || (*rest != '\0')) { + goto usage; + } + + for (i = 2; i < argc; i++) { + Tcl_DString buffer; + CONST char *translated; + + translated = Tcl_TranslateFileName(interp, argv[i], &buffer); + if (translated == NULL) { + return TCL_ERROR; + } + if (TestplatformChmod(translated, (unsigned) mode) != 0) { + Tcl_AppendResult(interp, translated, ": ", Tcl_PosixError(interp), + NULL); + return TCL_ERROR; + } + Tcl_DStringFree(&buffer); + } + return TCL_OK; +} -- cgit v0.12 From 65445fd58393fa26379df62078124e7ca893bb75 Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Sun, 19 Mar 2006 22:47:28 +0000 Subject: backport of file writable fixes --- ChangeLog | 10 +++++++++ generic/tclTest.c | 65 +----------------------------------------------------- tests/fCmd.test | 35 ++++++++++++++++++++++++++--- tests/tcltest.test | 3 ++- tests/winFCmd.test | 10 ++++----- unix/tclUnixTest.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++- win/tclWinFile.c | 7 +++--- 7 files changed, 117 insertions(+), 78 deletions(-) diff --git a/ChangeLog b/ChangeLog index fc6ce1d..c5272f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-03-18 Vince Darley + + * generic/tclTest.c: + * win/tclWinFile.c: + * win/tclWinTest.c: + * tests/fCmd.test: + * tests/winFCmd.test: + * tests/tcltest.test: Backport of [file writable] fixes for + Windows from HEAD. [Bug 1193497] + 2006-03-16 Andreas Kupries * doc/open.n: Documented the changed behaviour of 'a'ppend mode. diff --git a/generic/tclTest.c b/generic/tclTest.c index 59c3148..52ab14e 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.11 2005/12/15 04:08:26 das Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.12 2006/03/19 22:47:29 vincentdarley Exp $ */ #define TCL_TEST @@ -208,8 +208,6 @@ static int TestcmdtokenCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int argc, CONST char **argv)); static int TestcmdtraceCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int argc, CONST char **argv)); -static int TestchmodCmd _ANSI_ARGS_((ClientData dummy, - Tcl_Interp *interp, int argc, CONST char **argv)); static int TestcreatecommandCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int argc, CONST char **argv)); static int TestdcallCmd _ANSI_ARGS_((ClientData dummy, @@ -581,8 +579,6 @@ Tcltest_Init(interp) (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testchannelevent", TestChannelEventCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); - Tcl_CreateCommand(interp, "testchmod", TestchmodCmd, - (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testcmdtoken", TestcmdtokenCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testcmdinfo", TestcmdinfoCmd, (ClientData) 0, @@ -3999,65 +3995,6 @@ TestpanicCmd(dummy, interp, argc, argv) return TCL_OK; } -/* - *--------------------------------------------------------------------------- - * - * TestchmodCmd -- - * - * Implements the "testchmod" cmd. Used when testing "file" - * command. The only attribute used by the Mac and Windows platforms - * is the user write flag; if this is not set, the file is - * made read-only. Otehrwise, the file is made read-write. - * - * Results: - * A standard Tcl result. - * - * Side effects: - * Changes permissions of specified files. - * - *--------------------------------------------------------------------------- - */ - -static int -TestchmodCmd(dummy, interp, argc, argv) - ClientData dummy; /* Not used. */ - Tcl_Interp *interp; /* Current interpreter. */ - int argc; /* Number of arguments. */ - CONST char **argv; /* Argument strings. */ -{ - int i, mode; - char *rest; - - if (argc < 2) { - usage: - Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], - " mode file ?file ...?", (char *) NULL); - return TCL_ERROR; - } - - mode = (int) strtol(argv[1], &rest, 8); - if ((rest == argv[1]) || (*rest != '\0')) { - goto usage; - } - - for (i = 2; i < argc; i++) { - Tcl_DString buffer; - CONST char *translated; - - translated = Tcl_TranslateFileName(interp, argv[i], &buffer); - if (translated == NULL) { - return TCL_ERROR; - } - if (chmod(translated, (unsigned) mode) != 0) { - Tcl_AppendResult(interp, translated, ": ", Tcl_PosixError(interp), - (char *) NULL); - return TCL_ERROR; - } - Tcl_DStringFree(&buffer); - } - return TCL_OK; -} - static int TestfileCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ diff --git a/tests/fCmd.test b/tests/fCmd.test index cb6d200..c53f8d4 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.26.2.7 2005/10/07 22:35:03 hobbs Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.26.2.8 2006/03/19 22:47:30 vincentdarley Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -20,6 +20,8 @@ if {[lsearch [namespace children] ::tcltest] == -1} { tcltest::testConstraint testsetplatform [string equal testsetplatform [info commands testsetplatform]] tcltest::testConstraint testchmod [string equal testchmod [info commands testchmod]] +testConstraint 95or98 [expr {[testConstraint 95] || [testConstraint 98]}] +testConstraint 2000orNewer [expr {![testConstraint 95or98]}] # Several tests require need to match results against the unix username set user {} @@ -890,7 +892,7 @@ test fCmd-10.2 {file copy: comprehensive: file to new name} {notRoot testchmod} file copy tf2 tf4 list [lsort [glob tf*]] [contents tf3] [contents tf4] [file writable tf3] [file writable tf4] } {{tf1 tf2 tf3 tf4} tf1 tf2 1 0} -test fCmd-10.3 {file copy: comprehensive: dir to new name} {notRoot unixOrPc testchmod} { +test fCmd-10.3 {file copy: comprehensive: dir to new name} {notRoot unixOrPc 95or98 testchmod} { cleanup file mkdir [file join td1 tdx] file mkdir [file join td2 tdy] @@ -905,6 +907,20 @@ test fCmd-10.3 {file copy: comprehensive: dir to new name} {notRoot unixOrPc tes } set msg } [subst {{td1 td2 td3 td4} [file join td3 tdx] [file join td4 tdy] 1 0}] +test fCmd-10.3.1 {file copy: comprehensive: dir to new name} {notRoot pc 2000orNewer testchmod} { + # On Windows with ACLs, copying a directory is defined like this + cleanup + file mkdir [file join td1 tdx] + file mkdir [file join td2 tdy] + testchmod 555 td2 + file copy td1 td3 + file copy td2 td4 + set msg [list [lsort [glob td*]] [glob -directory td3 t*] \ + [glob -directory td4 t*] [file writable td3] [file writable td4]] + testchmod 755 td2 + testchmod 755 td4 + set msg +} [subst {{td1 td2 td3 td4} [file join td3 tdx] [file join td4 tdy] 1 1}] test fCmd-10.4 {file copy: comprehensive: file to existing file} {notRoot testchmod} { cleanup createfile tf1 @@ -977,7 +993,7 @@ test fCmd-10.7 {file rename: comprehensive: file to new name and dir} {notRoot t [file writable [file join td1 tf3]] [file writable [file join td1 tf4]] } [subst {{tf1 tf2} {[file join td1 tf3] [file join td1 tf4]} 1 0}] test fCmd-10.8 {file rename: comprehensive: dir to new name and dir} \ - {notRoot unixOrPc testchmod} { + {notRoot unixOrPc 95or98 testchmod} { cleanup file mkdir td1 file mkdir td2 @@ -988,6 +1004,19 @@ test fCmd-10.8 {file rename: comprehensive: dir to new name and dir} \ list [lsort [glob td*]] [lsort [glob -directory td3 t*]] \ [file writable [file join td3 td3]] [file writable [file join td3 td4]] } [subst {{td1 td2 td3} {[file join td3 td3] [file join td3 td4]} 1 0}] +test fCmd-10.8.1 {file rename: comprehensive: dir to new name and dir} \ + {notRoot pc 2000orNewer testchmod} { + # On Windows with ACLs, copying a directory is defined like this + cleanup + file mkdir td1 + file mkdir td2 + file mkdir td3 + testchmod 555 td2 + file copy td1 [file join td3 td3] + file copy td2 [file join td3 td4] + list [lsort [glob td*]] [lsort [glob -directory td3 t*]] \ + [file writable [file join td3 td3]] [file writable [file join td3 td4]] +} [subst {{td1 td2 td3} {[file join td3 td3] [file join td3 td4]} 1 1}] test fCmd-10.9 {file copy: comprehensive: source and target incompatible} \ {notRoot} { cleanup diff --git a/tests/tcltest.test b/tests/tcltest.test index 7d3b1c4..c40826b 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.37.2.10 2005/02/25 22:37:52 dgp Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.37.2.11 2006/03/19 22:47:30 vincentdarley Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -558,6 +558,7 @@ switch $tcl_platform(platform) { } default { catch {file attributes $notWriteableDir -readonly 1} + catch {testchmod 000 $notWriteableDir} } } diff --git a/tests/winFCmd.test b/tests/winFCmd.test index a6221c4..159317b 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.20.2.8 2005/03/15 22:10:58 vincentdarley Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.20.2.9 2006/03/19 22:47:30 vincentdarley Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -688,11 +688,11 @@ test winFCmd-7.10 {TraverseWinTree: can't read directory: handle == INVALID} \ test winFCmd-7.11 {TraverseWinTree: call TraversalCopy: DOTREE_PRED} {pcOnly} { cleanup file mkdir td1 - testchmod 000 td1 createfile td1/tf1 tf1 + testchmod 000 td1 testfile cpdir td1 td2 list [file exists td2] [file writable td2] -} {1 0} +} {1 1} test winFCmd-7.12 {TraverseWinTree: call TraversalDelete: DOTREE_PRED} {pcOnly} { cleanup file mkdir td1 @@ -744,11 +744,11 @@ test winFCmd-7.18 {TraverseWinTree: recurse on files: several files and dir} \ test winFCmd-7.19 {TraverseWinTree: call TraversalCopy: DOTREE_POSTD} {pcOnly} { cleanup file mkdir td1 - testchmod 000 td1 createfile td1/tf1 tf1 + testchmod 000 td1 testfile cpdir td1 td2 list [file exists td2] [file writable td2] -} {1 0} +} {1 1} test winFCmd-7.20 {TraverseWinTree: call TraversalDelete: DOTREE_POSTD} \ {pcOnly} { cleanup diff --git a/unix/tclUnixTest.c b/unix/tclUnixTest.c index e4c5662..905a986 100644 --- a/unix/tclUnixTest.c +++ b/unix/tclUnixTest.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTest.c,v 1.14.2.1 2003/10/13 01:00:38 hobbs Exp $ + * RCS: @(#) $Id: tclUnixTest.c,v 1.14.2.2 2006/03/19 22:47:30 vincentdarley Exp $ */ #include "tclInt.h" @@ -83,6 +83,8 @@ static int TestalarmCmd _ANSI_ARGS_((ClientData dummy, static int TestgotsigCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int argc, CONST char **argv)); static void AlarmHandler _ANSI_ARGS_(()); +static int TestchmodCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int argc, CONST char **argv)); /* *---------------------------------------------------------------------- @@ -105,6 +107,8 @@ int TclplatformtestInit(interp) Tcl_Interp *interp; /* Interpreter to add commands to. */ { + Tcl_CreateCommand(interp, "testchmod", TestchmodCmd, + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testfilehandler", TestfilehandlerCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testfilewait", TestfilewaitCmd, @@ -703,3 +707,62 @@ TestgotsigCmd(clientData, interp, argc, argv) gotsig = "0"; return TCL_OK; } + +/* + *--------------------------------------------------------------------------- + * + * TestchmodCmd -- + * + * Implements the "testchmod" cmd. Used when testing "file" command. + * The only attribute used by the Windows platform is the user write + * flag; if this is not set, the file is made read-only. Otehrwise, the + * file is made read-write. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * Changes permissions of specified files. + * + *--------------------------------------------------------------------------- + */ + +static int +TestchmodCmd(dummy, interp, argc, argv) + ClientData dummy; /* Not used. */ + Tcl_Interp *interp; /* Current interpreter. */ + int argc; /* Number of arguments. */ + CONST char **argv; /* Argument strings. */ +{ + int i, mode; + char *rest; + + if (argc < 2) { + usage: + Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], + " mode file ?file ...?", NULL); + return TCL_ERROR; + } + + mode = (int) strtol(argv[1], &rest, 8); + if ((rest == argv[1]) || (*rest != '\0')) { + goto usage; + } + + for (i = 2; i < argc; i++) { + Tcl_DString buffer; + CONST char *translated; + + translated = Tcl_TranslateFileName(interp, argv[i], &buffer); + if (translated == NULL) { + return TCL_ERROR; + } + if (chmod(translated, (unsigned) mode) != 0) { + Tcl_AppendResult(interp, translated, ": ", Tcl_PosixError(interp), + NULL); + return TCL_ERROR; + } + Tcl_DStringFree(&buffer); + } + return TCL_OK; +} diff --git a/win/tclWinFile.c b/win/tclWinFile.c index f4d882b..507c2a1 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.14 2006/03/10 10:35:25 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.15 2006/03/19 22:47:30 vincentdarley Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -1342,8 +1342,7 @@ NativeAccess( } if ((mode & W_OK) - && !(attr & FILE_ATTRIBUTE_DIRECTORY) - /* && (tclWinProcs->getFileSecurityProc == NULL) */ + && (tclWinProcs->getFileSecurityProc == NULL) && (attr & FILE_ATTRIBUTE_READONLY)) { /* * We don't have the advanced 'getFileSecurityProc', and @@ -1520,6 +1519,7 @@ NativeAccess( * we must still check the 'attr' value. */ if ((mode & W_OK) + && !(attr & FILE_ATTRIBUTE_DIRECTORY) && (attr & FILE_ATTRIBUTE_READONLY)) { Tcl_SetErrno(EACCES); return -1; @@ -2611,7 +2611,6 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) return nextCheckpoint; } - /* *--------------------------------------------------------------------------- * -- cgit v0.12 From 429d1d1c96179a7128fbaa793274ba3186c2fd6c Mon Sep 17 00:00:00 2001 From: vincentdarley Date: Tue, 21 Mar 2006 09:45:46 +0000 Subject: fix to permissions setting --- win/tclWinTest.c | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/win/tclWinTest.c b/win/tclWinTest.c index d9e5a8a..c220aa6 100644 --- a/win/tclWinTest.c +++ b/win/tclWinTest.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.3 2006/03/19 22:34:56 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.4 2006/03/21 09:45:46 vincentdarley Exp $ */ #define USE_COMPAT_CONST @@ -529,7 +529,6 @@ TestplatformChmod(CONST char *nativePath, int pmode) static getSidLengthRequiredDef getSidLengthRequiredProc; static initializeSidDef initializeSidProc; static getSidSubAuthorityDef getSidSubAuthorityProc; - static const char everyoneBuf[] = "EVERYONE"; static const SECURITY_INFORMATION infoBits = OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION; static const DWORD readOnlyMask = FILE_DELETE_CHILD | FILE_ADD_FILE @@ -554,7 +553,6 @@ TestplatformChmod(CONST char *nativePath, int pmode) SID *userSid = 0; DWORD userDomainLen = 32; TCHAR *userDomain = 0; - SID_NAME_USE userSidUse; DWORD attr; @@ -682,24 +680,10 @@ TestplatformChmod(CONST char *nativePath, int pmode) } } - /* Get the "Everyone" SID */ + /* Get the World SID */ userSid = (SID*) ckalloc(getSidLengthRequiredProc(1)); initializeSidProc( userSid, &userSidAuthority, 1); *(getSidSubAuthorityProc( userSid, 0)) = SECURITY_WORLD_RID; - userDomain = (TCHAR *) ckalloc(userDomainLen); - if (!lookupAccountNameProc(NULL, everyoneBuf, userSid, &userSidLen, - userDomain, &userDomainLen, &userSidUse)) { - if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { - ckfree((char *)userSid); - userSid = (SID *) ckalloc(userSidLen); - ckfree(userDomain); - userDomain = (TCHAR *) ckalloc(userDomainLen); - if (!lookupAccountNameProc(NULL, everyoneBuf, userSid, - &userSidLen, userDomain, &userDomainLen, &userSidUse)) - goto done; - } else - goto done; - } /* If curAclPresent == false then curAcl and curAclDefaulted not valid */ if (!getSecurityDescriptorDaclProc(secDesc, &curAclPresent, -- cgit v0.12 From cad7d1a3535d3b133d67f2b35e6eba3928c10f98 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 22 Mar 2006 14:12:02 +0000 Subject: * changes: updates for another RC. --- ChangeLog | 4 ++++ changes | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c5272f2..2a1aae6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-03-22 Don Porter + + * changes: updates for another RC. + 2006-03-18 Vince Darley * generic/tclTest.c: diff --git a/changes b/changes index 205678d..e3e408d 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.37 2006/03/13 20:41:52 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.38 2006/03/22 14:12:02 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6340,4 +6340,10 @@ when auto-loading or exec traces are present (porter) 2005-03-13 (revert 2005-07-26 change) ${prefix}/share on ::tcl_pkgPath (porter) ---- Released 8.4.13, March 17, 2006 --- See ChangeLog for details --- +2006-03-14 (bug fix)[1381436,859820] threadsafe Tcl_WaitPid (gravereaux,kupries) + +2006-03-14 (bug fix)[768659] pipeline error when last command missing (kupries) + +2006-03-18 (bug fix)[1193497] Win porting of [file writable] (darley,vogel) + +--- Released 8.4.13, March 30, 2006 --- See ChangeLog for details --- -- cgit v0.12 From 33ba22541b095cdbf9d99ff37cd7c0e8e8beddec Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 22 Mar 2006 14:12:47 +0000 Subject: tag move --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2a1aae6..13988dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2006-03-22 Don Porter + *** 8.4.13 TAGGED FOR RELEASE *** + * changes: updates for another RC. 2006-03-18 Vince Darley @@ -98,8 +100,6 @@ 2006-03-07 Don Porter - *** 8.4.13 TAGGED FOR RELEASE *** - * README: Bump version number to 8.4.13 and update * changes: changes to start prep for an 8.4.13 release. * generic/tcl.h: -- cgit v0.12 From 027dfbbcab29b4945149b074f70fe66da522f361 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 23 Mar 2006 16:40:31 +0000 Subject: * tests/expr.test: Nan self-inquality test silenced. [Bug 761471] --- ChangeLog | 4 ++++ tests/expr.test | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 13988dc..056922c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-03-23 Don Porter + + * tests/expr.test: Nan self-inquality test silenced. [Bug 761471] + 2006-03-22 Don Porter *** 8.4.13 TAGGED FOR RELEASE *** diff --git a/tests/expr.test b/tests/expr.test index 0c42b5d..7146914 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.17.2.11 2005/11/08 20:21:34 dgp Exp $ +# RCS: @(#) $Id: expr.test,v 1.17.2.12 2006/03/23 16:40:32 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -807,7 +807,7 @@ test expr-22.8 {non-numeric floats} nonPortable { list [catch {expr {1 / Inf}} msg] $msg } {1 {can't use infinite floating-point value as operand of "/"}} # Make sure [Bug 761471] stays fixed. -test expr-22.9 {non-numeric floats: shared object equality and NaN} { +test expr-22.9 {non-numeric floats: shared object equality and NaN} nonPortable { set x NaN expr {$x == $x} } 0 -- cgit v0.12 From 9cf223bba68473517e2d264b1477df4316d6f6c5 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Mon, 27 Mar 2006 23:14:19 +0000 Subject: Fixes for bug #1456373 and general warning silencing for gcc build. --- ChangeLog | 4 ++++ win/tclWinTest.c | 54 +++++++++++++++++++++++++++++------------------------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 056922c..b8db811 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-03-27 Pat Thoyts + + * win/tclWinTest.c: Fixes for bug #1456373 (mingw-gcc issue) + 2006-03-23 Don Porter * tests/expr.test: Nan self-inquality test silenced. [Bug 761471] diff --git a/win/tclWinTest.c b/win/tclWinTest.c index c220aa6..82bf841 100644 --- a/win/tclWinTest.c +++ b/win/tclWinTest.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.4 2006/03/21 09:45:46 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.5 2006/03/27 23:14:19 patthoyts Exp $ */ #define USE_COMPAT_CONST @@ -22,11 +22,18 @@ #endif /* + * MinGW 3.4.2 does not define this. + */ +#ifndef INHERITED_ACE +#define INHERITED_ACE (0x10) +#endif // INHERITED_ACE + +/* * Forward declarations of procedures defined later in this file: */ int TclplatformtestInit _ANSI_ARGS_((Tcl_Interp *interp)); static int TesteventloopCmd _ANSI_ARGS_((ClientData dummy, - Tcl_Interp *interp, int argc, char **argv)); + Tcl_Interp *interp, int argc, CONST84 char **argv)); static int TestvolumetypeCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); @@ -46,7 +53,7 @@ static int TestwincpuidCmd _ANSI_ARGS_(( ClientData dummy, static int TestplatformChmod _ANSI_ARGS_((CONST char *nativePath, int pmode)); static int TestchmodCmd _ANSI_ARGS_((ClientData dummy, - Tcl_Interp *interp, int argc, CONST char **argv)); + Tcl_Interp *interp, int argc, CONST84 char **argv)); /* @@ -75,21 +82,19 @@ TclplatformtestInit(interp) */ Tcl_CreateCommand(interp, "testchmod", TestchmodCmd, - (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testeventloop", TesteventloopCmd, - (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateObjCommand(interp, "testvolumetype", TestvolumetypeCmd, - (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateObjCommand(interp, "testwinclock", TestwinclockCmd, - (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateObjCommand(interp, "testwincpuid", TestwincpuidCmd, (ClientData) 0, (Tcl_CmdDeleteProc*) NULL ); - Tcl_CreateObjCommand( interp, - "testwinsleep", - TestwinsleepCmd, - (ClientData) 0, - (Tcl_CmdDeleteProc *) NULL ); - Tcl_CreateObjCommand(interp, "testexcept", TestExceptionCmd, NULL, NULL); + Tcl_CreateObjCommand(interp, "testwinsleep", TestwinsleepCmd, + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL ); + Tcl_CreateObjCommand(interp, "testexcept", TestExceptionCmd, + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); return TCL_OK; } @@ -116,7 +121,7 @@ TesteventloopCmd(clientData, interp, argc, argv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ - char **argv; /* Argument strings. */ + CONST84 char **argv; /* Argument strings. */ { static int *framePtr = NULL; /* Pointer to integer on stack frame of * innermost invocation of the "wait" @@ -155,7 +160,7 @@ TesteventloopCmd(clientData, interp, argc, argv) * and start unwinding. */ - PostQuitMessage(msg.wParam); + PostQuitMessage((int)msg.wParam); break; } TranslateMessage(&msg); @@ -519,7 +524,7 @@ static int TestplatformChmod(CONST char *nativePath, int pmode) { SID_IDENTIFIER_AUTHORITY userSidAuthority = - SECURITY_WORLD_SID_AUTHORITY; + { SECURITY_WORLD_SID_AUTHORITY }; typedef DWORD (WINAPI *getSidLengthRequiredDef) ( UCHAR ); typedef BOOL (WINAPI *initializeSidDef) ( PSID, @@ -549,10 +554,8 @@ TestplatformChmod(CONST char *nativePath, int pmode) WORD j; - DWORD userSidLen = 4096; SID *userSid = 0; - DWORD userDomainLen = 32; - TCHAR *userDomain = 0; + TCHAR *userDomain = NULL; DWORD attr; @@ -670,7 +673,8 @@ TestplatformChmod(CONST char *nativePath, int pmode) if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { DWORD secDescLen2 = 0; secDesc = (BYTE *) ckalloc(secDescLen); - if (!getFileSecurityProc(nativePath, infoBits, secDesc, + if (!getFileSecurityProc(nativePath, infoBits, + (PSECURITY_DESCRIPTOR)secDesc, secDescLen, &secDescLen2) || (secDescLen < secDescLen2)) { goto done; @@ -681,13 +685,13 @@ TestplatformChmod(CONST char *nativePath, int pmode) } /* Get the World SID */ - userSid = (SID*) ckalloc(getSidLengthRequiredProc(1)); - initializeSidProc( userSid, &userSidAuthority, 1); + userSid = (SID*) ckalloc(getSidLengthRequiredProc((UCHAR)1)); + initializeSidProc( userSid, &userSidAuthority, (BYTE)1); *(getSidSubAuthorityProc( userSid, 0)) = SECURITY_WORLD_RID; /* If curAclPresent == false then curAcl and curAclDefaulted not valid */ if (!getSecurityDescriptorDaclProc(secDesc, &curAclPresent, - &curAcl, &curAclDefaulted)) + &curAcl, &curAclDefaulted)) goto done; if (!curAclPresent || !curAcl) { @@ -792,7 +796,7 @@ TestchmodCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ - CONST char **argv; /* Argument strings. */ + CONST84 char **argv; /* Argument strings. */ { int i, mode; char *rest; @@ -817,7 +821,7 @@ TestchmodCmd(dummy, interp, argc, argv) if (translated == NULL) { return TCL_ERROR; } - if (TestplatformChmod(translated, (unsigned) mode) != 0) { + if (TestplatformChmod(translated, mode) != 0) { Tcl_AppendResult(interp, translated, ": ", Tcl_PosixError(interp), NULL); return TCL_ERROR; -- cgit v0.12 From b3a9263ebf9f221b0ce45ecdf5577324febd17a1 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Mon, 27 Mar 2006 23:30:54 +0000 Subject: Removed C++ comment --- win/tclWinTest.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/win/tclWinTest.c b/win/tclWinTest.c index 82bf841..c1f8ea5 100644 --- a/win/tclWinTest.c +++ b/win/tclWinTest.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.5 2006/03/27 23:14:19 patthoyts Exp $ + * RCS: @(#) $Id: tclWinTest.c,v 1.8.2.6 2006/03/27 23:30:54 patthoyts Exp $ */ #define USE_COMPAT_CONST @@ -26,7 +26,7 @@ */ #ifndef INHERITED_ACE #define INHERITED_ACE (0x10) -#endif // INHERITED_ACE +#endif /* * Forward declarations of procedures defined later in this file: -- cgit v0.12 From 5a8169617edbc1477821fe1097d13b63b87d8485 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 28 Mar 2006 10:44:52 +0000 Subject: typo in comment --- generic/tclIOUtil.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 99240e4..9709345 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.27 2006/03/16 18:23:22 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.28 2006/03/28 10:44:52 das Exp $ */ #include "tclInt.h" @@ -612,7 +612,7 @@ FsRecacheFilesystemList(void) /* * Code below operates on shared data. We * are already called under mutex lock so - * we can safely proceede. + * we can safely proceed. */ /* Locate tail of the global filesystem list */ -- cgit v0.12 From 6944091c09865070fd6e03deafe8942a329a74fb Mon Sep 17 00:00:00 2001 From: das Date: Tue, 28 Mar 2006 10:47:03 +0000 Subject: * unix/tclUnixFCmd.c (TclpObjNormalizePath): deal with *BSD/Darwin realpath() converting relative paths into absolute paths. [Bug 1064247] --- ChangeLog | 10 ++++++++++ unix/tclUnixFCmd.c | 14 +++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index b8db811..e76ab1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-03-28 Daniel Steffen + + * unix/tclUnixFCmd.c (TclpObjNormalizePath): deal with *BSD/Darwin + realpath() converting relative paths into absolute paths. [Bug 1064247] + +2006-03-28 Vince Darley + + * generic/tclIOUtil.c: fix to nativeFilesystemRecord comparisons + (lesser part of [Bug 1064247]) + 2006-03-27 Pat Thoyts * win/tclWinTest.c: Fixes for bug #1456373 (mingw-gcc issue) diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index 02bd513..317eca7 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.8 2005/12/05 15:10:33 dgp Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.9 2006/03/28 10:47:09 das Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -1821,9 +1821,17 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) nativePath = Tcl_UtfToExternalDString(NULL, path, lastDir - path, &ds); if (Realpath(nativePath, normPath) != NULL) { - nextCheckpoint = lastDir - path; - goto wholeStringOk; + if (*nativePath != '/' && *normPath == '/') { + /* + * realpath has transformed a relative path into an + * absolute path, we do not know how to handle this. + */ + } else { + nextCheckpoint = lastDir - path; + goto wholeStringOk; + } } + Tcl_DStringFree(&ds); } } /* Else do it the slow way */ -- cgit v0.12 From dcc8d48bc8b8bd5460c61afdd45f4d29023f41c4 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 28 Mar 2006 10:52:38 +0000 Subject: * generic/tclIOUtil.c: fix to nativeFilesystemRecord comparisons (lesser part of [Bug 1064247]) --- generic/tclIOUtil.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 9709345..55e8b32 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.28 2006/03/28 10:44:52 das Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.29 2006/03/28 10:52:38 das Exp $ */ #include "tclInt.h" @@ -748,7 +748,7 @@ TclFinalizeFilesystem() FilesystemRecord *tmpFsRecPtr = fsRecPtr->nextPtr; if (fsRecPtr->fileRefCount <= 0) { /* The native filesystem is static, so we don't free it */ - if (fsRecPtr != &nativeFilesystemRecord) { + if (fsRecPtr->fsPtr != &tclNativeFilesystem) { ckfree((char *)fsRecPtr); } } @@ -931,7 +931,7 @@ Tcl_FSUnregister(fsPtr) */ fsRecPtr = filesystemList; - while ((retVal == TCL_ERROR) && (fsRecPtr != &nativeFilesystemRecord)) { + while ((retVal == TCL_ERROR) && (fsRecPtr->fsPtr != &tclNativeFilesystem)) { if (fsRecPtr->fsPtr == fsPtr) { if (fsRecPtr->prevPtr) { fsRecPtr->prevPtr->nextPtr = fsRecPtr->nextPtr; @@ -1471,7 +1471,7 @@ TclFSNormalizeToUniquePath(interp, pathPtr, startAt, clientDataPtr) fsRecPtr = firstFsRecPtr; while (fsRecPtr != NULL) { - if (fsRecPtr == &nativeFilesystemRecord) { + if (fsRecPtr->fsPtr == &tclNativeFilesystem) { Tcl_FSNormalizePathProc *proc = fsRecPtr->fsPtr->normalizePathProc; if (proc != NULL) { startAt = (*proc)(interp, pathPtr, startAt); @@ -1484,7 +1484,7 @@ TclFSNormalizeToUniquePath(interp, pathPtr, startAt, clientDataPtr) fsRecPtr = firstFsRecPtr; while (fsRecPtr != NULL) { /* Skip the native system next time through */ - if (fsRecPtr != &nativeFilesystemRecord) { + if (fsRecPtr->fsPtr != &tclNativeFilesystem) { Tcl_FSNormalizePathProc *proc = fsRecPtr->fsPtr->normalizePathProc; if (proc != NULL) { startAt = (*proc)(interp, pathPtr, startAt); @@ -3278,7 +3278,7 @@ FsListMounts(pathPtr, pattern) fsRecPtr = FsGetFirstFilesystem(); while (fsRecPtr != NULL) { - if (fsRecPtr != &nativeFilesystemRecord) { + if (fsRecPtr->fsPtr != &tclNativeFilesystem) { Tcl_FSMatchInDirectoryProc *proc = fsRecPtr->fsPtr->matchInDirectoryProc; if (proc != NULL) { -- cgit v0.12 From 7ef929a5331e888efbd2ba9167f7fc3e2ccf735b Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 28 Mar 2006 21:02:36 +0000 Subject: * win/tclWinConsole.c: revert 2005-11-03 [Patch 1256872] change to add win32 unicode console support as it broke the ability to modify the encoding to the console. --- ChangeLog | 6 ++++ win/tclWinConsole.c | 85 ++++++----------------------------------------------- 2 files changed, 15 insertions(+), 76 deletions(-) diff --git a/ChangeLog b/ChangeLog index e76ab1d..0fa0b54 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-03-28 Jeff Hobbs + + * win/tclWinConsole.c: revert 2005-11-03 [Patch 1256872] change + to add win32 unicode console support as it broke the ability to + modify the encoding to the console. + 2006-03-28 Daniel Steffen * unix/tclUnixFCmd.c (TclpObjNormalizePath): deal with *BSD/Darwin diff --git a/win/tclWinConsole.c b/win/tclWinConsole.c index fa38a6c..56920bf 100644 --- a/win/tclWinConsole.c +++ b/win/tclWinConsole.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinConsole.c,v 1.11.2.2 2005/11/03 11:53:59 patthoyts Exp $ + * RCS: @(#) $Id: tclWinConsole.c,v 1.11.2.3 2006/03/28 21:02:37 hobbs Exp $ */ #include "tclWinInt.h" @@ -190,70 +190,6 @@ static Tcl_ChannelType consoleChannelType = { /* *---------------------------------------------------------------------- * - * readConsoleBytes -- - * - * Wrapper for ReadConsole{A,W}, that takes and returns number of - * bytes instead of number of TCHARS - * - * Results: - * FALSE if there was a problem else TRUE - * - * Side effects: - * Reads characters from the console. - * - *---------------------------------------------------------------------- - */ - -static BOOL -readConsoleBytes(HANDLE hConsole, LPVOID lpBuffer, - DWORD nbytes, LPDWORD nbytesread) -{ - DWORD ntchars; - BOOL result; - int tcharsize; - tcharsize = tclWinProcs->useWide? 2 : 1; - result = tclWinProcs->readConsoleProc( - hConsole, lpBuffer, nbytes / tcharsize, &ntchars, NULL); - if (nbytesread) - *nbytesread = (ntchars*tcharsize); - return result; -} - -/* - *---------------------------------------------------------------------- - * - * writeConsoleBytes -- - * - * Wrapper for WriteConsole{A,W}, that takes and returns number of - * bytes instead of number of TCHARS - * - * Results: - * FALSE if there was a problem else TRUE - * - * Side effects: - * Writes characters from the console. - * - *---------------------------------------------------------------------- - */ - -static BOOL -writeConsoleBytes(HANDLE hConsole, const VOID *lpBuffer, - DWORD nbytes, LPDWORD nbyteswritten) -{ - DWORD ntchars; - BOOL result; - int tcharsize; - tcharsize = tclWinProcs->useWide? 2 : 1; - result = tclWinProcs->writeConsoleProc( - hConsole, lpBuffer, nbytes / tcharsize, &ntchars, NULL); - if (nbyteswritten) - *nbyteswritten = (ntchars*tcharsize); - return result; -} - -/* - *---------------------------------------------------------------------- - * * ConsoleInit -- * * This function initializes the static variables for this file. @@ -769,8 +705,8 @@ ConsoleInputProc( * at least one byte is available or an EOF occurs. */ - if (readConsoleBytes(infoPtr->handle, (LPVOID) buf, - (DWORD) bufSize, &count) == TRUE) { + if (ReadConsole(infoPtr->handle, (LPVOID) buf, (DWORD) bufSize, &count, + (LPOVERLAPPED) NULL) == TRUE) { buf[count] = '\0'; return count; } @@ -856,8 +792,8 @@ ConsoleOutputProc( * This avoids an unnecessary copy. */ - if (writeConsoleBytes(infoPtr->handle, (LPVOID) buf, (DWORD) toWrite, - &bytesWritten) == FALSE) { + if (WriteFile(infoPtr->handle, (LPVOID) buf, (DWORD) toWrite, + &bytesWritten, (LPOVERLAPPED) NULL) == FALSE) { TclWinConvertError(GetLastError()); goto error; } @@ -1208,8 +1144,8 @@ ConsoleReaderThread(LPVOID arg) * Look for data on the console, but first ignore any events * that are not KEY_EVENTs */ - if (readConsoleBytes(handle, infoPtr->buffer, CONSOLE_BUFFER_SIZE, - (LPDWORD) &infoPtr->bytesRead) != FALSE) { + if (ReadConsoleA(handle, infoPtr->buffer, CONSOLE_BUFFER_SIZE, + (LPDWORD) &infoPtr->bytesRead, NULL) != FALSE) { /* * Data was stored in the buffer. */ @@ -1304,7 +1240,7 @@ ConsoleWriterThread(LPVOID arg) */ while (toWrite > 0) { - if (writeConsoleBytes(handle, buf, toWrite, &count) == FALSE) { + if (WriteConsoleA(handle, buf, toWrite, &count, NULL) == FALSE) { infoPtr->writeError = GetLastError(); break; } else { @@ -1431,10 +1367,7 @@ TclWinOpenConsoleChannel(handle, channelName, permissions) Tcl_SetChannelOption(NULL, infoPtr->channel, "-translation", "auto"); Tcl_SetChannelOption(NULL, infoPtr->channel, "-eofchar", "\032 {}"); - if (tclWinProcs->useWide) - Tcl_SetChannelOption(NULL, infoPtr->channel, "-encoding", "unicode"); - else - Tcl_SetChannelOption(NULL, infoPtr->channel, "-encoding", encoding); + Tcl_SetChannelOption(NULL, infoPtr->channel, "-encoding", encoding); return infoPtr->channel; } -- cgit v0.12 From d1dcee1f60ab850711da254e86738af719b25a8e Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 28 Mar 2006 21:16:14 +0000 Subject: * win/configure, win/tcl.m4: define MACHINE for gcc builds as well. Needed by Tk for manifest generation. --- ChangeLog | 3 +++ win/configure | 35 ++++++++++++++++++----------------- win/tcl.m4 | 7 ++++--- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0fa0b54..3f1b105 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2006-03-28 Jeff Hobbs + * win/configure, win/tcl.m4: define MACHINE for gcc builds as well. + Needed by Tk for manifest generation. + * win/tclWinConsole.c: revert 2005-11-03 [Patch 1256872] change to add win32 unicode console support as it broke the ability to modify the encoding to the console. diff --git a/win/configure b/win/configure index eff5270..cd4e32e 100755 --- a/win/configure +++ b/win/configure @@ -1482,6 +1482,10 @@ fi SHLIB_SUFFIX=".dll" + # MACHINE is IX86 for LINK, but this is used by the manifest, + # which requires x86|amd64|ia64. + MACHINE="X86" + # Check for a bug in gcc's windres that causes the # compile to fail when a Windows native path is # passed into windres. The mingw toolchain requires @@ -1496,9 +1500,9 @@ fi echo "END" >> $conftest echo $ac_n "checking for Windows native path bug in windres""... $ac_c" 1>&6 -echo "configure:1500: checking for Windows native path bug in windres" >&5 +echo "configure:1504: checking for Windows native path bug in windres" >&5 cyg_conftest=`$CYGPATH $conftest` - if { ac_try='$RC -o conftest.res.o $cyg_conftest'; { (eval echo configure:1502: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } ; then + if { ac_try='$RC -o conftest.res.o $cyg_conftest'; { (eval echo configure:1506: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } ; then echo "$ac_t""no" 1>&6 else echo "$ac_t""yes" 1>&6 @@ -1517,7 +1521,7 @@ echo "configure:1500: checking for Windows native path bug in windres" >&5 # set various compiler flags depending on whether we are using gcc or cl echo $ac_n "checking compiler flags""... $ac_c" 1>&6 -echo "configure:1521: checking compiler flags" >&5 +echo "configure:1525: checking compiler flags" >&5 if test "${GCC}" = "yes" ; then if test "$do64bit" != "no" ; then echo "configure: warning: "64bit mode not supported with GCC on Windows"" 1>&2 @@ -1660,9 +1664,6 @@ echo "configure:1521: checking compiler flags" >&5 # This is a 2-stage check to make sure we have the 64-bit SDK # We have to know where the SDK is installed. # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs - # MACHINE is IX86 for LINK, but this is used by the manifest, - # which requires x86|amd64|ia64. - MACHINE="X86" if test "$do64bit" != "no" ; then if test "x${MSSDK}x" = "xx" ; then MSSDK="C:/Progra~1/Microsoft Platform SDK" @@ -1758,7 +1759,7 @@ echo "configure:1521: checking compiler flags" >&5 echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:1762: checking for build with symbols" >&5 +echo "configure:1763: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -1818,7 +1819,7 @@ TCL_DBGX=${DBGX} #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1822: checking how to run the C preprocessor" >&5 +echo "configure:1823: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1833,13 +1834,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1844: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1850,13 +1851,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1861: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1867,13 +1868,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1899,17 +1900,17 @@ echo "$ac_t""$CPP" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1903: checking for errno.h" >&5 +echo "configure:1904: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1913: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1914: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* diff --git a/win/tcl.m4 b/win/tcl.m4 index 975ac18..3e8d5c8 100644 --- a/win/tcl.m4 +++ b/win/tcl.m4 @@ -392,6 +392,10 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ SHLIB_SUFFIX=".dll" + # MACHINE is IX86 for LINK, but this is used by the manifest, + # which requires x86|amd64|ia64. + MACHINE="X86" + # Check for a bug in gcc's windres that causes the # compile to fail when a Windows native path is # passed into windres. The mingw toolchain requires @@ -568,9 +572,6 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ # This is a 2-stage check to make sure we have the 64-bit SDK # We have to know where the SDK is installed. # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs - # MACHINE is IX86 for LINK, but this is used by the manifest, - # which requires x86|amd64|ia64. - MACHINE="X86" if test "$do64bit" != "no" ; then if test "x${MSSDK}x" = "xx" ; then MSSDK="C:/Progra~1/Microsoft Platform SDK" -- cgit v0.12 From 3fe923f507658ef0f1f26740f711135dc869f84f Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 5 Apr 2006 00:05:53 +0000 Subject: * generic/tclIO.c (ReadChars): Added check and panic and commentary to a piece of code which relies on BUFFER_PADDING to create enough space at the beginning of each buffer forthe insertion of partial multi-byte data at the beginning of a buffer. To explain why this code is ok, and as precaution if someone twiddled the BUFFER_PADDING into uselessness. * generic/tclIO.c (ReadChars): [SF Tcl Bug 1462248]. Added code temporarily suppress the use of TCL_ENCODING_END set when eof was reached while the buffer we are converting is not truly the last buffer in the queue. together with the Utf bug below it was possible to completely bollox the buffer data structures, eventually crashing Tcl. * generic/tclEncoding.c (UtfToUtfProc): Fixed problem where the function accessed memory beyond the end of the input buffer. When TCL_ENCODING_END is set and the last bytes of the buffer start a multi-byte sequence. This bug contributed to [SF Tcl Bug 1462248]. --- ChangeLog | 22 ++++++++++++++ generic/tclEncoding.c | 14 +++++++-- generic/tclIO.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 111 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3f1b105..9ace770 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2006-04-03 Andreas Kupries + + * generic/tclIO.c (ReadChars): Added check and panic and + commentary to a piece of code which relies on BUFFER_PADDING to + create enough space at the beginning of each buffer forthe + insertion of partial multi-byte data at the beginning of a + buffer. To explain why this code is ok, and as precaution if + someone twiddled the BUFFER_PADDING into uselessness. + + * generic/tclIO.c (ReadChars): [SF Tcl Bug 1462248]. Added code + temporarily suppress the use of TCL_ENCODING_END set when eof + was reached while the buffer we are converting is not truly the + last buffer in the queue. together with the Utf bug below it was + possible to completely bollox the buffer data structures, + eventually crashing Tcl. + + * generic/tclEncoding.c (UtfToUtfProc): Fixed problem where the + function accessed memory beyond the end of the input + buffer. When TCL_ENCODING_END is set and the last bytes of the + buffer start a multi-byte sequence. This bug contributed to [SF + Tcl Bug 1462248]. + 2006-03-28 Jeff Hobbs * win/configure, win/tcl.m4: define MACHINE for gcc builds as well. diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 5fa799e..2a3698f 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.9 2006/03/13 20:57:09 dgp Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.10 2006/04/05 00:06:02 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2083,13 +2083,23 @@ UtfToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, */ *dst++ = 0; src += 2; + } else if (!Tcl_UtfCharComplete(src, srcEnd - src)) { + /* Always check before using Tcl_UtfToUniChar. Not doing + * can so cause it run beyond the endof the buffer! If we + * * happen such an incomplete char its byts are made to * + * represent themselves. + */ + + ch = (Tcl_UniChar) *src; + src += 1; + dst += Tcl_UniCharToUtf(ch, dst); } else { src += Tcl_UtfToUniChar(src, &ch); dst += Tcl_UniCharToUtf(ch, dst); } } - *srcReadPtr = src - srcStart; + *srcReadPtr = src - srcStart; *dstWrotePtr = dst - dstStart; *dstCharsPtr = numChars; return result; diff --git a/generic/tclIO.c b/generic/tclIO.c index c7c2e3f..f82f648 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.19 2006/03/10 14:12:14 vasiljevic Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.20 2006/04/05 00:06:03 andreas_kupries Exp $ */ #include "tclInt.h" @@ -4727,12 +4727,13 @@ ReadChars(statePtr, objPtr, charsToRead, offsetPtr, factorPtr) ChannelBuffer *bufPtr; char *src, *dst; Tcl_EncodingState oldState; + int encEndFlagSuppressed = 0; factor = *factorPtr; offset = *offsetPtr; bufPtr = statePtr->inQueueHead; - src = bufPtr->buf + bufPtr->nextRemoved; + src = bufPtr->buf + bufPtr->nextRemoved; srcLen = bufPtr->nextAdded - bufPtr->nextRemoved; toRead = charsToRead; @@ -4776,6 +4777,54 @@ ReadChars(statePtr, objPtr, charsToRead, offsetPtr, factorPtr) } dst = objPtr->bytes + offset; + /* + * SF Tcl Bug 1462248 + * The cause of the crash reported in the referenced bug is this: + * + * - ReadChars, called with a single buffer, with a incomplete + * multi-byte character at the end (only the first byte of it). + * - Encoding translation fails, asks for more data + * - Data is read, and eof is reached, TCL_ENCODING_END (TEE) is set. + * - ReadChar is called again, converts the first buffer, but due + * to TEE it does not check for incomplete multi-byte data, and the + * character just after the end of the first buffer is a valid + * completion of the multi-byte header in the actual buffer. The + * conversion reads more characters from the buffer then present. + * This causes nextRemoved to overshoot nextAdded and the next + * reads compute a negative srcLen, cause further translations to + * fail, causing copying of data into the next buffer using bad + * arguments, causing the mecpy for to eventually fail. + * + * In the end it is a memory access bug spiraling out of control + * if the conditions are _just so_. And ultimate cause is that TEE + * is given to a conversion where it should not. TEE signals that + * this is the last buffer. Except in our case it is not. + * + * My solution is to suppress TEE if the first buffer is not the + * last. We will eventually need it given that EOF has been + * reached, but not right now. This is what the new flag + * "endEncSuppressFlag" is for. + * + * The bug in 'Tcl_Utf2UtfProc' where it read from memory behind + * the actual buffer has been fixed as well, and fixes the problem + * with the crash too, but this would still allow the generic + * layer to accidentially break a multi-byte sequence if the + * conditions are just right, because again the ExternalToUtf + * would be successful where it should not. + */ + + if ((statePtr->inputEncodingFlags & TCL_ENCODING_END) && + (bufPtr->nextPtr != NULL)) { + + /* TEE is set for a buffer which is not the last. Squash it + * for now, and restore it later, before yielding control to + * our caller. + */ + + statePtr->inputEncodingFlags &= ~TCL_ENCODING_END; + encEndFlagSuppressed = 1; + } + oldState = statePtr->inputEncodingState; if (statePtr->flags & INPUT_NEED_NL) { /* @@ -4801,12 +4850,21 @@ ReadChars(statePtr, objPtr, charsToRead, offsetPtr, factorPtr) } statePtr->inputEncodingFlags &= ~TCL_ENCODING_START; *offsetPtr += 1; + + if (encEndFlagSuppressed) { + statePtr->inputEncodingFlags |= TCL_ENCODING_END; + } return 1; } Tcl_ExternalToUtf(NULL, statePtr->encoding, src, srcLen, statePtr->inputEncodingFlags, &statePtr->inputEncodingState, dst, dstNeeded + TCL_UTF_MAX, &srcRead, &dstWrote, &numChars); + + if (encEndFlagSuppressed) { + statePtr->inputEncodingFlags |= TCL_ENCODING_END; + } + if (srcRead == 0) { /* * Not enough bytes in src buffer to make a complete char. Copy @@ -4837,6 +4895,23 @@ ReadChars(statePtr, objPtr, charsToRead, offsetPtr, factorPtr) } return -1; } + + /* Space is made at the beginning of the buffer to copy the + * previous unused bytes there. Check first if the buffer we + * are using actually has enough space at its beginning for + * the data we are copying. Because if not we will write over the + * buffer management information, especially the 'nextPtr'. + * + * Note that the BUFFER_PADDING (See AllocChannelBuffer) is + * used to prevent exactly this situation. I.e. it should + * never happen. Therefore it is ok to panic should it happen + * despite the precautions. + */ + + if (nextPtr->nextRemoved - srcLen < 0) { + Tcl_Panic ("Buffer Underflow, BUFFER_PADDING not enough"); + } + nextPtr->nextRemoved -= srcLen; memcpy((VOID *) (nextPtr->buf + nextPtr->nextRemoved), (VOID *) src, (size_t) srcLen); -- cgit v0.12 From 52433afc774a622cd099b4ea3ad887c4ec60eba0 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 Apr 2006 01:20:51 +0000 Subject: * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 to be even more forgiving of package version mismatch errors in [package ifneeded] commands, not even logging any warning messages. This further reduces the ***POTENTIAL INCOMPATIBILITY*** noted for that change. --- ChangeLog | 8 ++++++++ generic/tclPkg.c | 14 ++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ace770..6e5b5da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-04-04 Don Porter + + * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 + to be even more forgiving of package version mismatch errors in + [package ifneeded] commands, not even logging any warning messages. + This further reduces the ***POTENTIAL INCOMPATIBILITY*** noted for + that change. + 2006-04-03 Andreas Kupries * generic/tclIO.c (ReadChars): Added check and panic and diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 6a46981..3453020 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9.2.2 2005/11/18 19:27:19 dgp Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.3 2006/04/05 01:20:53 dgp Exp $ */ #include "tclInt.h" @@ -355,8 +355,12 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) * It's a bit too harsh to make a large number of * existing packages start failing by releasing a * new patch release, so we forgive this type of error - * for the rest of the Tcl 8.4 series, and only report - * a warning. We limit the error reporting to only + * for the rest of the Tcl 8.4 series. + * + * We considered reporting a warning, but in practice + * even that appears too harsh a change for a patch release. + * + * We limit the error reporting to only * the situation where a broken ifneeded script leads * to a failure to satisfy the requirement. */ @@ -373,8 +377,9 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) " provided instead", NULL); } } + /* + * Warning generation now disabled if (code == TCL_OK) { - /* Forgiving the error, report warning instead */ Tcl_Obj *msg = Tcl_NewStringObj( "attempt to provide package ", -1); Tcl_Obj *cmdPtr = Tcl_NewListObj(0, NULL); @@ -389,6 +394,7 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) Tcl_DecrRefCount(cmdPtr); Tcl_ResetResult(interp); } + */ } } else if (code != TCL_ERROR) { Tcl_Obj *codePtr = Tcl_NewIntObj(code); -- cgit v0.12 From a9e197a7ae5fbaf4553abbe4bdd7b287c6fe16b1 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 Apr 2006 01:42:10 +0000 Subject: * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 * tests/pkg.test: to be even more forgiving of package version mismatch errors in [package ifneeded] commands, not even logging any warning messages. This further reduces the ***POTENTIAL INCOMPATIBILITY*** noted for that change. --- ChangeLog | 8 ++++---- tests/pkg.test | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6e5b5da..a56bd78 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,10 @@ 2006-04-04 Don Porter * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 - to be even more forgiving of package version mismatch errors in - [package ifneeded] commands, not even logging any warning messages. - This further reduces the ***POTENTIAL INCOMPATIBILITY*** noted for - that change. + * tests/pkg.test: to be even more forgiving of package version + mismatch errors in [package ifneeded] commands, not even logging any + warning messages. This further reduces the + ***POTENTIAL INCOMPATIBILITY*** noted for that change. 2006-04-03 Andreas Kupries diff --git a/tests/pkg.test b/tests/pkg.test index d3796af..83488a1 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.3 2005/12/02 17:17:13 dgp Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.4 2006/04/05 01:42:16 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -351,7 +351,7 @@ test pkg-2.34 {Tcl_PkgRequire: consistent return values (1162286)} -setup { package require foo 1 } -cleanup { package forget foo -} -match glob -result 1.1 -errorOutput {attempt to provide package * failed:*} +} -result 1.1 test pkg-2.34.1 {Tcl_PkgRequire: consistent return values (1162286)} -setup { package forget foo } -body { @@ -359,7 +359,7 @@ test pkg-2.34.1 {Tcl_PkgRequire: consistent return values (1162286)} -setup { package require foo 1 } -cleanup { package forget foo -} -match glob -result 1 -errorOutput {attempt to provide package * failed:*} +} -result 1 test pkg-2.34.2 {Tcl_PkgRequire: consistent return values (1162286)} -setup { package forget foo } -body { -- cgit v0.12 From 1fbc814589c815aba033653af3694fc122ce1538 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 5 Apr 2006 13:20:00 +0000 Subject: Fix [Bug 1646039] --- ChangeLog | 6 ++++++ generic/tclIndexObj.c | 22 +++++++++------------- tests/indexObj.test | 26 +++++++++++++------------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index a56bd78..17d4313 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-04-05 Donal K. Fellows + + * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): Allow empty + strings to be matched by the Tcl_GetIndexFromObj machinery, but only + ever exactly. [Bug 1464039] + 2006-04-04 Don Porter * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index bdfca15..7bc046d 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.2 2006/02/16 20:21:54 dgp Exp $ + * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.3 2006/04/05 13:20:09 dkf Exp $ */ #include "tclInt.h" @@ -171,7 +171,7 @@ Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, int flags; /* 0 or TCL_EXACT */ int *indexPtr; /* Place to store resulting integer index. */ { - int index, length, i, numAbbrev; + int index, i, numAbbrev; char *key, *p1; CONST char *p2; CONST char * CONST *entryPtr; @@ -195,19 +195,11 @@ Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, * abbreviations unless TCL_EXACT is set in flags. */ - key = Tcl_GetStringFromObj(objPtr, &length); + key = TclGetString(objPtr); index = -1; numAbbrev = 0; /* - * The key should not be empty, otherwise it's not a match. - */ - - if (key[0] == '\0') { - goto error; - } - - /* * Scan the table looking for one of: * - An exact match (always preferred) * - A single abbreviation (allowed depending on flags) @@ -235,9 +227,13 @@ Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, } } /* - * Check if we were instructed to disallow abbreviations. + * Check if we were instructed to disallow abbreviations. Note that we do + * not allow the empty string as an abbreviation of anything; it is only + * processed by this function as a non-error case if the table of strings + * has an entry in it that is itself an empty string. This only matters in + * the case where the table has a singleton entry. */ - if ((flags & TCL_EXACT) || (numAbbrev != 1)) { + if ((flags & TCL_EXACT) || (key[0] == '\0') || (numAbbrev != 1)) { goto error; } diff --git a/tests/indexObj.test b/tests/indexObj.test index dee0dfa..168b225 100644 --- a/tests/indexObj.test +++ b/tests/indexObj.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: indexObj.test,v 1.7.18.1 2006/02/16 20:21:54 dgp Exp $ +# RCS: @(#) $Id: indexObj.test,v 1.7.18.2 2006/04/05 13:20:14 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -43,6 +43,12 @@ test indexObj-1.6 {forced exact match} { test indexObj-1.7 {forced exact match} { testindexobj 1 0 x abc def xalb xyz alm x } {5} +test indexObj-1.8 {exact match of empty values} { + testindexobj 1 1 {} a aa aaa {} b bb bbb +} 3 +test indexObj-1.9 {exact match of empty values} { + testindexobj 1 0 {} a aa aaa {} b bb bbb +} 3 test indexObj-2.1 {no match} { list [catch {testindexobj 1 1 dddd abc def xalb xyz alm x} msg] $msg @@ -62,6 +68,12 @@ test indexObj-2.5 {omit error message} { test indexObj-2.6 {TCL_EXACT => no "ambiguous" error message} { list [catch {testindexobj 1 0 d dumb daughter a c} msg] $msg } {1 {bad token "d": must be dumb, daughter, a, or c}} +test indexObj-2.7 {exact match of empty values} { + list [catch {testindexobj 1 1 {} a b c} msg] $msg +} {1 {ambiguous token "": must be a, b, or c}} +test indexObj-2.8 {exact match of empty values: singleton case} { + list [catch {testindexobj 1 1 {} a} msg] $msg +} {1 {bad token "": must be a}} test indexObj-3.1 {cache result to skip next lookup} { testindexobj check 42 @@ -114,15 +126,3 @@ test indexObj-6.4 {Tcl_GetIndexFromObjStruct} { # cleanup ::tcltest::cleanupTests return - - - - - - - - - - - - -- cgit v0.12 From 729b47be45a702ff78180857ffeaa1e7ce2c0de5 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 Apr 2006 15:16:46 +0000 Subject: * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): Allow empty strings to be matched by the Tcl_GetIndexFromObj machinery, in the same manner as any other key. [Bug 1464039] --- ChangeLog | 4 ++-- generic/tclIndexObj.c | 10 +++------- tests/binary.test | 6 +++--- tests/indexObj.test | 7 +++++-- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 17d4313..10a3722 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,8 @@ 2006-04-05 Donal K. Fellows * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): Allow empty - strings to be matched by the Tcl_GetIndexFromObj machinery, but only - ever exactly. [Bug 1464039] + strings to be matched by the Tcl_GetIndexFromObj machinery, in + the same manner as any other key. [Bug 1464039] 2006-04-04 Don Porter diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index 7bc046d..f22e7d4 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.3 2006/04/05 13:20:09 dkf Exp $ + * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.4 2006/04/05 15:17:05 dgp Exp $ */ #include "tclInt.h" @@ -227,13 +227,9 @@ Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, } } /* - * Check if we were instructed to disallow abbreviations. Note that we do - * not allow the empty string as an abbreviation of anything; it is only - * processed by this function as a non-error case if the table of strings - * has an entry in it that is itself an empty string. This only matters in - * the case where the table has a singleton entry. + * Check if we were instructed to disallow abbreviations. */ - if ((flags & TCL_EXACT) || (key[0] == '\0') || (numAbbrev != 1)) { + if ((flags & TCL_EXACT) || (numAbbrev != 1)) { goto error; } diff --git a/tests/binary.test b/tests/binary.test index f792dd8..fb137db 100644 --- a/tests/binary.test +++ b/tests/binary.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: binary.test,v 1.11.2.3 2005/09/27 15:44:13 dkf Exp $ +# RCS: @(#) $Id: binary.test,v 1.11.2.4 2006/04/05 15:17:06 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1460,9 +1460,9 @@ test binary-41.8 {ScanNumber: word alignment} {nonPortable pcOnly} { } {2 1 1.6} test binary-42.1 {Tcl_BinaryObjCmd: bad arguments} {} { - catch {binary ""} result + catch {binary ?} result set result -} {bad option "": must be format or scan} +} {bad option "?": must be format or scan} # Wide int (guaranteed at least 64-bit) handling test binary-43.1 {Tcl_BinaryObjCmd: format wide int} {} { diff --git a/tests/indexObj.test b/tests/indexObj.test index 168b225..0d8a21d 100644 --- a/tests/indexObj.test +++ b/tests/indexObj.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: indexObj.test,v 1.7.18.2 2006/04/05 13:20:14 dkf Exp $ +# RCS: @(#) $Id: indexObj.test,v 1.7.18.3 2006/04/05 15:17:06 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -72,8 +72,11 @@ test indexObj-2.7 {exact match of empty values} { list [catch {testindexobj 1 1 {} a b c} msg] $msg } {1 {ambiguous token "": must be a, b, or c}} test indexObj-2.8 {exact match of empty values: singleton case} { - list [catch {testindexobj 1 1 {} a} msg] $msg + list [catch {testindexobj 1 0 {} a} msg] $msg } {1 {bad token "": must be a}} +test indexObj-2.9 {non-exact match of empty values: singleton case} { + testindexobj 1 1 {} a +} 0 test indexObj-3.1 {cache result to skip next lookup} { testindexobj check 42 -- cgit v0.12 From a25e81eb8e73c48b8b3c8f4f7114f72d4b7b9d6f Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 Apr 2006 16:10:26 +0000 Subject: * library/dde/pkgIndex.tcl: Long overlooked bump to dde package * win/tclWinDde.c: version 1.2.4 (should have been done for the Tcl 8.4.8 release!) --- ChangeLog | 6 ++++++ library/dde/pkgIndex.tcl | 4 ++-- win/tclWinDde.c | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 10a3722..eddae33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-04-05 Don Porter + + * library/dde/pkgIndex.tcl: Long overlooked bump to dde package + * win/tclWinDde.c: version 1.2.4 (should have been done + for the Tcl 8.4.8 release!) + 2006-04-05 Donal K. Fellows * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): Allow empty diff --git a/library/dde/pkgIndex.tcl b/library/dde/pkgIndex.tcl index ca9a78f..f993012 100644 --- a/library/dde/pkgIndex.tcl +++ b/library/dde/pkgIndex.tcl @@ -1,7 +1,7 @@ if {![package vsatisfies [package provide Tcl] 8]} {return} if {[string compare $::tcl_platform(platform) windows]} {return} if {[info exists ::tcl_platform(debug)]} { - package ifneeded dde 1.2.3 [list load [file join $dir tcldde12g.dll] dde] + package ifneeded dde 1.2.4 [list load [file join $dir tcldde12g.dll] dde] } else { - package ifneeded dde 1.2.3 [list load [file join $dir tcldde12.dll] dde] + package ifneeded dde 1.2.4 [list load [file join $dir tcldde12.dll] dde] } diff --git a/win/tclWinDde.c b/win/tclWinDde.c index c00f697..eb73162 100644 --- a/win/tclWinDde.c +++ b/win/tclWinDde.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.4 2004/09/01 17:26:06 hobbs Exp $ + * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.5 2006/04/05 16:10:44 dgp Exp $ */ #include "tclPort.h" @@ -71,7 +71,7 @@ static DWORD ddeInstance; /* The application instance handle given * to us by DdeInitialize. */ static int ddeIsServer = 0; -#define TCL_DDE_VERSION "1.2.3" +#define TCL_DDE_VERSION "1.2.4" #define TCL_DDE_PACKAGE_NAME "dde" #define TCL_DDE_SERVICE_NAME "TclEval" -- cgit v0.12 From e9d6c1ac64c7eb4f8ca77319bfbd5398610ec1af Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 Apr 2006 16:21:55 +0000 Subject: * library/reg/pkgIndex.tcl: Long overlooked bump to registry package * win/tclWinReg.c: version 1.1.4 (should have been done for the Tcl 8.4.8 release!) --- ChangeLog | 4 ++++ library/reg/pkgIndex.tcl | 4 ++-- win/tclWinReg.c | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index eddae33..4c2d510 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2006-04-05 Don Porter + * library/reg/pkgIndex.tcl: Long overlooked bump to registry package + * win/tclWinReg.c: version 1.1.4 (should have been done + for the Tcl 8.4.8 release!) + * library/dde/pkgIndex.tcl: Long overlooked bump to dde package * win/tclWinDde.c: version 1.2.4 (should have been done for the Tcl 8.4.8 release!) diff --git a/library/reg/pkgIndex.tcl b/library/reg/pkgIndex.tcl index 55775f2..61c1d94 100755 --- a/library/reg/pkgIndex.tcl +++ b/library/reg/pkgIndex.tcl @@ -1,9 +1,9 @@ if {![package vsatisfies [package provide Tcl] 8]} {return} if {[string compare $::tcl_platform(platform) windows]} {return} if {[info exists ::tcl_platform(debug)]} { - package ifneeded registry 1.1.3 \ + package ifneeded registry 1.1.4 \ [list load [file join $dir tclreg11g.dll] registry] } else { - package ifneeded registry 1.1.3 \ + package ifneeded registry 1.1.4 \ [list load [file join $dir tclreg11.dll] registry] } diff --git a/win/tclWinReg.c b/win/tclWinReg.c index 0f02db0..ccd715a 100644 --- a/win/tclWinReg.c +++ b/win/tclWinReg.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.4 2004/09/01 17:26:04 hobbs Exp $ + * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.5 2006/04/05 16:22:18 dgp Exp $ */ #include @@ -228,7 +228,7 @@ Registry_Init( } Tcl_CreateObjCommand(interp, "registry", RegistryObjCmd, NULL, NULL); - return Tcl_PkgProvide(interp, "registry", "1.1.3"); + return Tcl_PkgProvide(interp, "registry", "1.1.4"); } /* -- cgit v0.12 From 97adef27be83b277e1414039b66f953fda97a25f Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 Apr 2006 16:49:53 +0000 Subject: * library/dde/pkgIndex.tcl: Backport dde 1.3.2 from HEAD. * win/tclWinDde.c: * win/Makefile.in: * win/configure.in: * win/configure: autoconf 2.13 --- ChangeLog | 8 +- library/dde/pkgIndex.tcl | 4 +- win/Makefile.in | 10 +- win/configure | 4 +- win/configure.in | 6 +- win/tclWinDde.c | 1885 +++++++++++++++++++++++++--------------------- 6 files changed, 1058 insertions(+), 859 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4c2d510..3405dea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,9 +4,11 @@ * win/tclWinReg.c: version 1.1.4 (should have been done for the Tcl 8.4.8 release!) - * library/dde/pkgIndex.tcl: Long overlooked bump to dde package - * win/tclWinDde.c: version 1.2.4 (should have been done - for the Tcl 8.4.8 release!) + * library/dde/pkgIndex.tcl: Backport dde 1.3.2 from HEAD. + * win/tclWinDde.c: + * win/Makefile.in: + * win/configure.in: + * win/configure: autoconf 2.13 2006-04-05 Donal K. Fellows diff --git a/library/dde/pkgIndex.tcl b/library/dde/pkgIndex.tcl index f993012..3125ada 100644 --- a/library/dde/pkgIndex.tcl +++ b/library/dde/pkgIndex.tcl @@ -1,7 +1,7 @@ if {![package vsatisfies [package provide Tcl] 8]} {return} if {[string compare $::tcl_platform(platform) windows]} {return} if {[info exists ::tcl_platform(debug)]} { - package ifneeded dde 1.2.4 [list load [file join $dir tcldde12g.dll] dde] + package ifneeded dde 1.3.2 [list load [file join $dir tcldde13g.dll] dde] } else { - package ifneeded dde 1.2.4 [list load [file join $dir tcldde12.dll] dde] + package ifneeded dde 1.3.2 [list load [file join $dir tcldde13.dll] dde] } diff --git a/win/Makefile.in b/win/Makefile.in index e109014..fcace15 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.68.2.4 2006/03/02 21:07:19 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.68.2.5 2006/04/05 16:50:04 dgp Exp $ VERSION = @TCL_VERSION@ @@ -437,7 +437,7 @@ install-binaries: binaries else true; \ fi; \ done; - @for i in dde1.2 reg1.1; \ + @for i in dde1.3 reg1.1; \ do \ if [ ! -d $(LIB_INSTALL_DIR)/$$i ] ; then \ echo "Making directory $(LIB_INSTALL_DIR)/$$i"; \ @@ -461,13 +461,13 @@ install-binaries: binaries done @if [ -f $(DDE_DLL_FILE) ]; then \ echo installing $(DDE_DLL_FILE); \ - $(COPY) $(DDE_DLL_FILE) $(LIB_INSTALL_DIR)/dde1.2; \ + $(COPY) $(DDE_DLL_FILE) $(LIB_INSTALL_DIR)/dde1.3; \ $(COPY) $(ROOT_DIR)/library/dde/pkgIndex.tcl \ - $(LIB_INSTALL_DIR)/dde1.2; \ + $(LIB_INSTALL_DIR)/dde1.3; \ fi @if [ -f $(DDE_LIB_FILE) ]; then \ echo installing $(DDE_LIB_FILE); \ - $(COPY) $(DDE_LIB_FILE) $(LIB_INSTALL_DIR)/dde1.2; \ + $(COPY) $(DDE_LIB_FILE) $(LIB_INSTALL_DIR)/dde1.3; \ fi @if [ -f $(REG_DLL_FILE) ]; then \ echo installing $(REG_DLL_FILE); \ diff --git a/win/configure b/win/configure index cd4e32e..721fffb 100755 --- a/win/configure +++ b/win/configure @@ -537,9 +537,9 @@ TCL_MINOR_VERSION=4 TCL_PATCH_LEVEL=".13" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION -TCL_DDE_VERSION=1.2 +TCL_DDE_VERSION=1.3 TCL_DDE_MAJOR_VERSION=1 -TCL_DDE_MINOR_VERSION=2 +TCL_DDE_MINOR_VERSION=3 DDEVER=$TCL_DDE_MAJOR_VERSION$TCL_DDE_MINOR_VERSION TCL_REG_VERSION=1.1 diff --git a/win/configure.in b/win/configure.in index 0151749..b63bba0 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.15 2006/03/07 05:30:30 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.16 2006/04/05 16:50:04 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -14,9 +14,9 @@ TCL_MINOR_VERSION=4 TCL_PATCH_LEVEL=".13" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION -TCL_DDE_VERSION=1.2 +TCL_DDE_VERSION=1.3 TCL_DDE_MAJOR_VERSION=1 -TCL_DDE_MINOR_VERSION=2 +TCL_DDE_MINOR_VERSION=3 DDEVER=$TCL_DDE_MAJOR_VERSION$TCL_DDE_MINOR_VERSION TCL_REG_VERSION=1.1 diff --git a/win/tclWinDde.c b/win/tclWinDde.c index eb73162..4a47684 100644 --- a/win/tclWinDde.c +++ b/win/tclWinDde.c @@ -1,33 +1,33 @@ -/* +/* * tclWinDde.c -- * - * This file provides procedures that implement the "send" - * command, allowing commands to be passed from interpreter - * to interpreter. + * This file provides functions that implement the "send" command, + * allowing commands to be passed from interpreter to interpreter. * * Copyright (c) 1997 by Sun Microsystems, Inc. * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.5 2006/04/05 16:10:44 dgp Exp $ + * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.6 2006/04/05 16:50:04 dgp Exp $ */ -#include "tclPort.h" +#include "tclInt.h" #include #include #include /* - * TCL_STORAGE_CLASS is set unconditionally to DLLEXPORT because the - * Registry_Init declaration is in the source file itself, which is only - * accessed when we are building a library. + * TCL_STORAGE_CLASS is set unconditionally to DLLEXPORT because the Dde_Init + * declaration is in the source file itself, which is only accessed when we + * are building a library. DO NOT MOVE BEFORE ANY #include LINES. ONLY USE + * EXTERN TO INDICATE EXPORTED FUNCTIONS FROM NOW ON. */ #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLEXPORT -/* +/* * The following structure is used to keep track of the interpreters * registered by this process. */ @@ -37,6 +37,7 @@ typedef struct RegisteredInterp { /* The next interp this application knows * about. */ char *name; /* Interpreter's name (malloc-ed). */ + Tcl_Obj *handlerPtr; /* The server handler command */ Tcl_Interp *interp; /* The interpreter attached to this name. */ } RegisteredInterp; @@ -52,64 +53,77 @@ typedef struct Conversation { Tcl_Obj *returnPackagePtr; /* The result package for this conversation. */ } Conversation; +typedef struct DdeEnumServices { + Tcl_Interp *interp; + int result; + ATOM service; + ATOM topic; + HWND hwnd; +} DdeEnumServices; + typedef struct ThreadSpecificData { Conversation *currentConversations; - /* A list of conversations currently - * being processed. */ + /* A list of conversations currently being + * processed. */ RegisteredInterp *interpListPtr; - /* List of all interpreters registered - * in the current process. */ + /* List of all interpreters registered in the + * current process. */ } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; /* - * The following variables cannot be placed in thread-local storage. - * The Mutex ddeMutex guards access to the ddeInstance. + * The following variables cannot be placed in thread-local storage. The Mutex + * ddeMutex guards access to the ddeInstance. */ + static HSZ ddeServiceGlobal = 0; -static DWORD ddeInstance; /* The application instance handle given - * to us by DdeInitialize. */ +static DWORD ddeInstance; /* The application instance handle given to us + * by DdeInitialize. */ static int ddeIsServer = 0; -#define TCL_DDE_VERSION "1.2.4" -#define TCL_DDE_PACKAGE_NAME "dde" -#define TCL_DDE_SERVICE_NAME "TclEval" +#define TCL_DDE_VERSION "1.3.2" +#define TCL_DDE_PACKAGE_NAME "dde" +#define TCL_DDE_SERVICE_NAME "TclEval" +#define TCL_DDE_EXECUTE_RESULT "$TCLEVAL$EXECUTE$RESULT" TCL_DECLARE_MUTEX(ddeMutex) /* - * Forward declarations for procedures defined later in this file. + * Forward declarations for functions defined later in this file. */ -static void DdeExitProc _ANSI_ARGS_((ClientData clientData)); -static void DeleteProc _ANSI_ARGS_((ClientData clientData)); -static Tcl_Obj * ExecuteRemoteObject _ANSI_ARGS_(( - RegisteredInterp *riPtr, - Tcl_Obj *ddeObjectPtr)); -static int MakeDdeConnection _ANSI_ARGS_((Tcl_Interp *interp, - char *name, HCONV *ddeConvPtr)); -static HDDEDATA CALLBACK DdeServerProc _ANSI_ARGS_((UINT uType, - UINT uFmt, HCONV hConv, HSZ ddeTopic, - HSZ ddeItem, HDDEDATA hData, DWORD dwData1, - DWORD dwData2)); -static void SetDdeError _ANSI_ARGS_((Tcl_Interp *interp)); -static int DdeGetServicesList _ANSI_ARGS_(( - Tcl_Interp *interp, - char *serviceName, - char *topicName)); -int Tcl_DdeObjCmd(ClientData clientData, /* Used only for deletion */ - Tcl_Interp *interp, /* The interp we are sending from */ - int objc, /* Number of arguments */ - Tcl_Obj *CONST objv[]); /* The arguments */ - -EXTERN int Dde_Init(Tcl_Interp *interp); +static LRESULT CALLBACK DdeClientWindowProc(HWND hwnd, UINT uMsg, + WPARAM wParam, LPARAM lParam); +static int DdeCreateClient(struct DdeEnumServices *es); +static BOOL CALLBACK DdeEnumWindowsCallback(HWND hwndTarget, LPARAM lParam); +static void DdeExitProc(ClientData clientData); +static int DdeGetServicesList(Tcl_Interp *interp, + char *serviceName, char *topicName); +static HDDEDATA CALLBACK DdeServerProc(UINT uType, UINT uFmt, HCONV hConv, + HSZ ddeTopic, HSZ ddeItem, HDDEDATA hData, + DWORD dwData1, DWORD dwData2); +static LRESULT DdeServicesOnAck(HWND hwnd, WPARAM wParam, + LPARAM lParam); +static void DeleteProc(ClientData clientData); +static Tcl_Obj * ExecuteRemoteObject(RegisteredInterp *riPtr, + Tcl_Obj *ddeObjectPtr); +static int MakeDdeConnection(Tcl_Interp *interp, char *name, + HCONV *ddeConvPtr); +static void SetDdeError(Tcl_Interp *interp); + +int Tcl_DdeObjCmd(ClientData clientData, + Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[]); + +EXTERN int Dde_Init(Tcl_Interp *interp); +EXTERN int Dde_SafeInit(Tcl_Interp *interp); /* *---------------------------------------------------------------------- * * Dde_Init -- * - * This procedure initializes the dde command. + * This function initializes the dde command. * * Results: * A standard Tcl result. @@ -131,17 +145,41 @@ Dde_Init( } Tcl_CreateObjCommand(interp, "dde", Tcl_DdeObjCmd, NULL, NULL); - tsdPtr = TCL_TSD_INIT(&dataKey); - Tcl_CreateExitHandler(DdeExitProc, NULL); - return Tcl_PkgProvide(interp, TCL_DDE_PACKAGE_NAME, TCL_DDE_VERSION); } /* *---------------------------------------------------------------------- * + * Dde_SafeInit -- + * + * This function initializes the dde command within a safe interp + * + * Results: + * A standard Tcl result. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +Dde_SafeInit( + Tcl_Interp *interp) +{ + int result = Dde_Init(interp); + if (result == TCL_OK) { + Tcl_HideCommand(interp, "dde", "dde"); + } + return result; +} + +/* + *---------------------------------------------------------------------- + * * Initialize -- * * Initialize the global DDE instance. @@ -160,11 +198,11 @@ Initialize(void) { int nameFound = 0; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - + /* - * See if the application is already registered; if so, remove its - * current name from the registry. The deletion of the command - * will take care of disposing of this entry. + * See if the application is already registered; if so, remove its current + * name from the registry. The deletion of the command will take care of + * disposing of this entry. */ if (tsdPtr->interpListPtr != NULL) { @@ -172,18 +210,16 @@ Initialize(void) } /* - * Make sure that the DDE server is there. This is done only once, - * add an exit handler tear it down. + * Make sure that the DDE server is there. This is done only once, add an + * exit handler tear it down. */ if (ddeInstance == 0) { Tcl_MutexLock(&ddeMutex); if (ddeInstance == 0) { if (DdeInitialize(&ddeInstance, DdeServerProc, - CBF_SKIP_REGISTRATIONS - | CBF_SKIP_UNREGISTRATIONS - | CBF_FAIL_POKES, 0) - != DMLERR_NO_ERROR) { + CBF_SKIP_REGISTRATIONS | CBF_SKIP_UNREGISTRATIONS + | CBF_FAIL_POKES, 0) != DMLERR_NO_ERROR) { ddeInstance = 0; } } @@ -194,7 +230,7 @@ Initialize(void) if ((ddeServiceGlobal == 0) && (nameFound != 0)) { ddeIsServer = 1; Tcl_CreateExitHandler(DdeExitProc, NULL); - ddeServiceGlobal = DdeCreateStringHandle(ddeInstance, \ + ddeServiceGlobal = DdeCreateStringHandle(ddeInstance, TCL_DDE_SERVICE_NAME, 0); DdeNameService(ddeInstance, ddeServiceGlobal, 0L, DNS_REGISTER); } else { @@ -202,54 +238,58 @@ Initialize(void) } Tcl_MutexUnlock(&ddeMutex); } -} +} /* - *-------------------------------------------------------------- + *---------------------------------------------------------------------- * * DdeSetServerName -- * - * This procedure is called to associate an ASCII name with a Dde - * server. If the interpreter has already been named, the - * name replaces the old one. + * This function is called to associate an ASCII name with a Dde server. + * If the interpreter has already been named, the name replaces the old + * one. * * Results: - * The return value is the name actually given to the interp. - * This will normally be the same as name, but if name was already - * in use for a Dde Server then a name of the form "name #2" will - * be chosen, with a high enough number to make the name unique. + * The return value is the name actually given to the interp. This will + * normally be the same as name, but if name was already in use for a Dde + * Server then a name of the form "name #2" will be chosen, with a high + * enough number to make the name unique. * * Side effects: - * Registration info is saved, thereby allowing the "send" command - * to be used later to invoke commands in the application. In - * addition, the "send" command is created in the application's - * interpreter. The registration will be removed automatically - * if the interpreter is deleted or the "send" command is removed. + * Registration info is saved, thereby allowing the "send" command to be + * used later to invoke commands in the application. In addition, the + * "send" command is created in the application's interpreter. The + * registration will be removed automatically if the interpreter is + * deleted or the "send" command is removed. * - *-------------------------------------------------------------- + *---------------------------------------------------------------------- */ static char * DdeSetServerName( Tcl_Interp *interp, - char *name /* The name that will be used to - * refer to the interpreter in later - * "send" commands. Must be globally - * unique. */ - ) + char *name, /* The name that will be used to refer to the + * interpreter in later "send" commands. Must + * be globally unique. */ + int exactName, /* Should we make a unique name? 0 = unique */ + Tcl_Obj *handlerPtr) /* Name of the optional proc/command to handle + * incoming Dde eval's */ { int suffix, offset; RegisteredInterp *riPtr, *prevPtr; Tcl_DString dString; + char *actualName; + Tcl_Obj *srvListPtr = NULL, **srvPtrPtr = NULL; + int n, srvCount = 0, lastSuffix, r = TCL_OK; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); /* - * See if the application is already registered; if so, remove its - * current name from the registry. The deletion of the command - * will take care of disposing of this entry. + * See if the application is already registered; if so, remove its current + * name from the registry. The deletion of the command will take care of + * disposing of this entry. */ - for (riPtr = tsdPtr->interpListPtr, prevPtr = NULL; riPtr != NULL; + for (riPtr = tsdPtr->interpListPtr, prevPtr = NULL; riPtr != NULL; prevPtr = riPtr, riPtr = riPtr->nextPtr) { if (riPtr->interp == interp) { if (name != NULL) { @@ -261,8 +301,8 @@ DdeSetServerName( break; } else { /* - * the name was NULL, so the caller is asking for - * the name of the current interp. + * The name was NULL, so the caller is asking for the name of + * the current interp. */ return riPtr->name; @@ -272,24 +312,74 @@ DdeSetServerName( if (name == NULL) { /* - * the name was NULL, so the caller is asking for - * the name of the current interp, but it doesn't - * have a name. + * The name was NULL, so the caller is asking for the name of the + * current interp, but it doesn't have a name. */ return ""; } - + /* - * Pick a name to use for the application. Use "name" if it's not - * already in use. Otherwise add a suffix such as " #2", trying - * larger and larger numbers until we eventually find one that is - * unique. + * Get the list of currently registered Tcl interpreters by calling the + * internal implementation of the 'dde services' command. */ - suffix = 1; - offset = 0; Tcl_DStringInit(&dString); + actualName = name; + + if (!exactName) { + r = DdeGetServicesList(interp, TCL_DDE_SERVICE_NAME, NULL); + if (r == TCL_OK) { + srvListPtr = Tcl_GetObjResult(interp); + } + if (r == TCL_OK) { + r = Tcl_ListObjGetElements(interp, srvListPtr, &srvCount, + &srvPtrPtr); + } + if (r != TCL_OK) { + OutputDebugString(Tcl_GetStringResult(interp)); + return NULL; + } + + /* + * Pick a name to use for the application. Use "name" if it's not + * already in use. Otherwise add a suffix such as " #2", trying larger + * and larger numbers until we eventually find one that is unique. + */ + + offset = lastSuffix = 0; + suffix = 1; + + while (suffix != lastSuffix) { + lastSuffix = suffix; + if (suffix > 1) { + if (suffix == 2) { + Tcl_DStringAppend(&dString, name, -1); + Tcl_DStringAppend(&dString, " #", 2); + offset = Tcl_DStringLength(&dString); + Tcl_DStringSetLength(&dString, offset + TCL_INTEGER_SPACE); + actualName = Tcl_DStringValue(&dString); + } + sprintf(Tcl_DStringValue(&dString) + offset, "%d", suffix); + } + + /* + * See if the name is already in use, if so increment suffix. + */ + + for (n = 0; n < srvCount; ++n) { + Tcl_Obj* namePtr; + + Tcl_ListObjIndex(interp, srvPtrPtr[n], 1, &namePtr); + if (strcmp(actualName, Tcl_GetString(namePtr)) == 0) { + suffix++; + break; + } + } + } + Tcl_DStringSetLength(&dString, + offset + strlen(Tcl_DStringValue(&dString)+offset)); + } /* * We have found a unique name. Now add it to the registry. @@ -297,10 +387,18 @@ DdeSetServerName( riPtr = (RegisteredInterp *) ckalloc(sizeof(RegisteredInterp)); riPtr->interp = interp; - riPtr->name = ckalloc((unsigned int) strlen(name) + 1); + riPtr->name = ckalloc((unsigned int) strlen(actualName) + 1); riPtr->nextPtr = tsdPtr->interpListPtr; + riPtr->handlerPtr = handlerPtr; + if (riPtr->handlerPtr != NULL) { + Tcl_IncrRefCount(riPtr->handlerPtr); + } tsdPtr->interpListPtr = riPtr; - strcpy(riPtr->name, name); + strcpy(riPtr->name, actualName); + + if (Tcl_IsSafe(interp)) { + Tcl_ExposeCommand(interp, "dde", "dde"); + } Tcl_CreateObjCommand(interp, "dde", Tcl_DdeObjCmd, (ClientData) riPtr, DeleteProc); @@ -310,19 +408,52 @@ DdeSetServerName( Tcl_DStringFree(&dString); /* - * re-initialize with the new name + * Re-initialize with the new name. */ + Initialize(); - + return riPtr->name; } /* - *-------------------------------------------------------------- + *---------------------------------------------------------------------- + * + * DdeGetRegistrationPtr + * + * Retrieve the registration info for an interpreter. + * + * Results: + * Returns a pointer to the registration structure or NULL + * + * Side effects: + * None + * + *---------------------------------------------------------------------- + */ + +static RegisteredInterp * +DdeGetRegistrationPtr( + Tcl_Interp *interp) +{ + RegisteredInterp *riPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; + riPtr = riPtr->nextPtr) { + if (riPtr->interp == interp) { + break; + } + } + return riPtr; +} + +/* + *---------------------------------------------------------------------- * * DeleteProc * - * This procedure is called when the command "dde" is destroyed. + * This function is called when the command "dde" is destroyed. * * Results: * none @@ -330,20 +461,20 @@ DdeSetServerName( * Side effects: * The interpreter given by riPtr is unregistered. * - *-------------------------------------------------------------- + *---------------------------------------------------------------------- */ static void -DeleteProc(clientData) - ClientData clientData; /* The interp we are deleting passed - * as ClientData. */ +DeleteProc( + ClientData clientData) /* The interp we are deleting passed as + * ClientData. */ { RegisteredInterp *riPtr = (RegisteredInterp *) clientData; RegisteredInterp *searchPtr, *prevPtr; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); for (searchPtr = tsdPtr->interpListPtr, prevPtr = NULL; - (searchPtr != NULL) && (searchPtr != riPtr); + searchPtr != NULL && searchPtr != riPtr; prevPtr = searchPtr, searchPtr = searchPtr->nextPtr) { /* * Empty loop body. @@ -358,31 +489,33 @@ DeleteProc(clientData) } } ckfree(riPtr->name); + if (riPtr->handlerPtr) { + Tcl_DecrRefCount(riPtr->handlerPtr); + } Tcl_EventuallyFree(clientData, TCL_DYNAMIC); } /* - *-------------------------------------------------------------- + *---------------------------------------------------------------------- * * ExecuteRemoteObject -- * - * Takes the package delivered by DDE and executes it in - * the server's interpreter. + * Takes the package delivered by DDE and executes it in the server's + * interpreter. * * Results: - * A list Tcl_Obj * that describes what happened. The first - * element is the numerical return code (TCL_ERROR, etc.). - * The second element is the result of the script. If the - * return result was TCL_ERROR, then the third element - * will be the value of the global "errorCode", and the - * fourth will be the value of the global "errorInfo". - * The return result will have a refCount of 0. + * A list Tcl_Obj * that describes what happened. The first element is + * the numerical return code (TCL_ERROR, etc.). The second element is the + * result of the script. If the return result was TCL_ERROR, then the + * third element will be the value of the global "errorCode", and the + * fourth will be the value of the global "errorInfo". The return result + * will have a refCount of 0. * * Side effects: - * A Tcl script is run, which can cause all kinds of other - * things to happen. + * A Tcl script is run, which can cause all kinds of other things to + * happen. * - *-------------------------------------------------------------- + *---------------------------------------------------------------------- */ static Tcl_Obj * @@ -390,63 +523,86 @@ ExecuteRemoteObject( RegisteredInterp *riPtr, /* Info about this server. */ Tcl_Obj *ddeObjectPtr) /* The object to execute. */ { - Tcl_Obj *errorObjPtr; Tcl_Obj *returnPackagePtr; - int result; + int result = TCL_OK; - result = Tcl_EvalObjEx(riPtr->interp, ddeObjectPtr, TCL_EVAL_GLOBAL); - returnPackagePtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); - Tcl_ListObjAppendElement(NULL, returnPackagePtr, - Tcl_NewIntObj(result)); + if (riPtr->handlerPtr == NULL && Tcl_IsSafe(riPtr->interp)) { + Tcl_SetObjResult(riPtr->interp, Tcl_NewStringObj("permission denied: " + "a handler procedure must be defined for use in a safe " + "interp", -1)); + result = TCL_ERROR; + } + + if (riPtr->handlerPtr != NULL) { + /* + * Add the dde request data to the handler proc list. + */ + + Tcl_Obj *cmdPtr = Tcl_DuplicateObj(riPtr->handlerPtr); + + result = Tcl_ListObjAppendElement(riPtr->interp, cmdPtr, ddeObjectPtr); + if (result == TCL_OK) { + ddeObjectPtr = cmdPtr; + } + } + + if (result == TCL_OK) { + result = Tcl_EvalObjEx(riPtr->interp, ddeObjectPtr, TCL_EVAL_GLOBAL); + } + + returnPackagePtr = Tcl_NewListObj(0, NULL); + + Tcl_ListObjAppendElement(NULL, returnPackagePtr, Tcl_NewIntObj(result)); Tcl_ListObjAppendElement(NULL, returnPackagePtr, Tcl_GetObjResult(riPtr->interp)); + if (result == TCL_ERROR) { - errorObjPtr = Tcl_GetVar2Ex(riPtr->interp, "errorCode", NULL, + Tcl_Obj *errorObjPtr = Tcl_GetVar2Ex(riPtr->interp, "errorCode", NULL, TCL_GLOBAL_ONLY); - Tcl_ListObjAppendElement(NULL, returnPackagePtr, errorObjPtr); + if (errorObjPtr) { + Tcl_ListObjAppendElement(NULL, returnPackagePtr, errorObjPtr); + } errorObjPtr = Tcl_GetVar2Ex(riPtr->interp, "errorInfo", NULL, TCL_GLOBAL_ONLY); - Tcl_ListObjAppendElement(NULL, returnPackagePtr, errorObjPtr); + if (errorObjPtr) { + Tcl_ListObjAppendElement(NULL, returnPackagePtr, errorObjPtr); + } } return returnPackagePtr; } /* - *-------------------------------------------------------------- + *---------------------------------------------------------------------- * * DdeServerProc -- * - * Handles all transactions for this server. Can handle - * execute, request, and connect protocols. Dde will - * call this routine when a client attempts to run a dde - * command using this server. + * Handles all transactions for this server. Can handle execute, request, + * and connect protocols. Dde will call this routine when a client + * attempts to run a dde command using this server. * * Results: * A DDE Handle with the result of the dde command. * * Side effects: - * Depending on which command is executed, arbitrary - * Tcl scripts can be run. + * Depending on which command is executed, arbitrary Tcl scripts can be + * run. * - *-------------------------------------------------------------- + *---------------------------------------------------------------------- */ static HDDEDATA CALLBACK -DdeServerProc ( - UINT uType, /* The type of DDE transaction we - * are performing. */ - UINT uFmt, /* The format that data is sent or - * received. */ - HCONV hConv, /* The conversation associated with the +DdeServerProc( + UINT uType, /* The type of DDE transaction we are + * performing. */ + UINT uFmt, /* The format that data is sent or received. */ + HCONV hConv, /* The conversation associated with the * current transaction. */ - HSZ ddeTopic, /* A string handle. Transaction-type - * dependent. */ - HSZ ddeItem, /* A string handle. Transaction-type + HSZ ddeTopic, HSZ ddeItem, /* String handles. Transaction-type * dependent. */ HDDEDATA hData, /* DDE data. Transaction-type dependent. */ - DWORD dwData1, /* Transaction-dependent data. */ - DWORD dwData2) /* Transaction-dependent data. */ + DWORD dwData1, DWORD dwData2) + /* Transaction-dependent data. */ { Tcl_DString dString; int len; @@ -459,125 +615,121 @@ DdeServerProc ( ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); switch(uType) { - case XTYP_CONNECT: - - /* - * Dde is trying to initialize a conversation with us. Check - * and make sure we have a valid topic. - */ + case XTYP_CONNECT: + /* + * Dde is trying to initialize a conversation with us. Check and make + * sure we have a valid topic. + */ - len = DdeQueryString(ddeInstance, ddeTopic, NULL, 0, 0); - Tcl_DStringInit(&dString); - Tcl_DStringSetLength(&dString, len); - utilString = Tcl_DStringValue(&dString); - DdeQueryString(ddeInstance, ddeTopic, utilString, (DWORD) len + 1, - CP_WINANSI); + len = DdeQueryString(ddeInstance, ddeTopic, NULL, 0, 0); + Tcl_DStringInit(&dString); + Tcl_DStringSetLength(&dString, len); + utilString = Tcl_DStringValue(&dString); + DdeQueryString(ddeInstance, ddeTopic, utilString, (DWORD) len + 1, + CP_WINANSI); - for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; - riPtr = riPtr->nextPtr) { - if (stricmp(utilString, riPtr->name) == 0) { - Tcl_DStringFree(&dString); - return (HDDEDATA) TRUE; - } + for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; + riPtr = riPtr->nextPtr) { + if (stricmp(utilString, riPtr->name) == 0) { + Tcl_DStringFree(&dString); + return (HDDEDATA) TRUE; } + } - Tcl_DStringFree(&dString); - return (HDDEDATA) FALSE; - - case XTYP_CONNECT_CONFIRM: + Tcl_DStringFree(&dString); + return (HDDEDATA) FALSE; - /* - * Dde has decided that we can connect, so it gives us a - * conversation handle. We need to keep track of it - * so we know which execution result to return in an - * XTYP_REQUEST. - */ + case XTYP_CONNECT_CONFIRM: + /* + * Dde has decided that we can connect, so it gives us a conversation + * handle. We need to keep track of it so we know which execution + * result to return in an XTYP_REQUEST. + */ - len = DdeQueryString(ddeInstance, ddeTopic, NULL, 0, 0); - Tcl_DStringInit(&dString); - Tcl_DStringSetLength(&dString, len); - utilString = Tcl_DStringValue(&dString); - DdeQueryString(ddeInstance, ddeTopic, utilString, (DWORD) len + 1, - CP_WINANSI); - for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; - riPtr = riPtr->nextPtr) { - if (stricmp(riPtr->name, utilString) == 0) { - convPtr = (Conversation *) ckalloc(sizeof(Conversation)); - convPtr->nextPtr = tsdPtr->currentConversations; - convPtr->returnPackagePtr = NULL; - convPtr->hConv = hConv; - convPtr->riPtr = riPtr; - tsdPtr->currentConversations = convPtr; - break; - } + len = DdeQueryString(ddeInstance, ddeTopic, NULL, 0, 0); + Tcl_DStringInit(&dString); + Tcl_DStringSetLength(&dString, len); + utilString = Tcl_DStringValue(&dString); + DdeQueryString(ddeInstance, ddeTopic, utilString, (DWORD) len + 1, + CP_WINANSI); + for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; + riPtr = riPtr->nextPtr) { + if (stricmp(riPtr->name, utilString) == 0) { + convPtr = (Conversation *) ckalloc(sizeof(Conversation)); + convPtr->nextPtr = tsdPtr->currentConversations; + convPtr->returnPackagePtr = NULL; + convPtr->hConv = hConv; + convPtr->riPtr = riPtr; + tsdPtr->currentConversations = convPtr; + break; } - Tcl_DStringFree(&dString); - return (HDDEDATA) TRUE; - - case XTYP_DISCONNECT: + } + Tcl_DStringFree(&dString); + return (HDDEDATA) TRUE; - /* - * The client has disconnected from our server. Forget this - * conversation. - */ + case XTYP_DISCONNECT: + /* + * The client has disconnected from our server. Forget this + * conversation. + */ - for (convPtr = tsdPtr->currentConversations, prevConvPtr = NULL; - convPtr != NULL; - prevConvPtr = convPtr, convPtr = convPtr->nextPtr) { - if (hConv == convPtr->hConv) { - if (prevConvPtr == NULL) { - tsdPtr->currentConversations = convPtr->nextPtr; - } else { - prevConvPtr->nextPtr = convPtr->nextPtr; - } - if (convPtr->returnPackagePtr != NULL) { - Tcl_DecrRefCount(convPtr->returnPackagePtr); - } - ckfree((char *) convPtr); - break; + for (convPtr = tsdPtr->currentConversations, prevConvPtr = NULL; + convPtr != NULL; + prevConvPtr = convPtr, convPtr = convPtr->nextPtr) { + if (hConv == convPtr->hConv) { + if (prevConvPtr == NULL) { + tsdPtr->currentConversations = convPtr->nextPtr; + } else { + prevConvPtr->nextPtr = convPtr->nextPtr; } + if (convPtr->returnPackagePtr != NULL) { + Tcl_DecrRefCount(convPtr->returnPackagePtr); + } + ckfree((char *) convPtr); + break; } - return (HDDEDATA) TRUE; + } + return (HDDEDATA) TRUE; - case XTYP_REQUEST: + case XTYP_REQUEST: + /* + * This could be either a request for a value of a Tcl variable, or it + * could be the send command requesting the results of the last + * execute. + */ + + if (uFmt != CF_TEXT) { + return (HDDEDATA) FALSE; + } + ddeReturn = (HDDEDATA) FALSE; + for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) + && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { /* - * This could be either a request for a value of a Tcl variable, - * or it could be the send command requesting the results of the - * last execute. + * Empty loop body. */ + } - if (uFmt != CF_TEXT) { - return (HDDEDATA) FALSE; - } + if (convPtr != NULL) { + char *returnString; - ddeReturn = (HDDEDATA) FALSE; - for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) - && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { - /* - * Empty loop body. - */ - } - - if (convPtr != NULL) { - char *returnString; - - len = DdeQueryString(ddeInstance, ddeItem, NULL, 0, - CP_WINANSI); - Tcl_DStringInit(&dString); - Tcl_DStringSetLength(&dString, len); - utilString = Tcl_DStringValue(&dString); - DdeQueryString(ddeInstance, ddeItem, utilString, - (DWORD) len + 1, CP_WINANSI); - if (stricmp(utilString, "$TCLEVAL$EXECUTE$RESULT") == 0) { - returnString = - Tcl_GetStringFromObj(convPtr->returnPackagePtr, &len); - ddeReturn = DdeCreateDataHandle(ddeInstance, - returnString, (DWORD) len+1, 0, ddeItem, CF_TEXT, - 0); + len = DdeQueryString(ddeInstance, ddeItem, NULL, 0, CP_WINANSI); + Tcl_DStringInit(&dString); + Tcl_DStringSetLength(&dString, len); + utilString = Tcl_DStringValue(&dString); + DdeQueryString(ddeInstance, ddeItem, utilString, (DWORD) len + 1, + CP_WINANSI); + if (stricmp(utilString, TCL_DDE_EXECUTE_RESULT) == 0) { + returnString = + Tcl_GetStringFromObj(convPtr->returnPackagePtr, &len); + ddeReturn = DdeCreateDataHandle(ddeInstance, returnString, + (DWORD) len+1, 0, ddeItem, CF_TEXT, 0); + } else { + if (Tcl_IsSafe(convPtr->riPtr->interp)) { + ddeReturn = NULL; } else { Tcl_Obj *variableObjPtr = Tcl_GetVar2Ex( - convPtr->riPtr->interp, utilString, NULL, + convPtr->riPtr->interp, utilString, NULL, TCL_GLOBAL_ONLY); if (variableObjPtr != NULL) { returnString = Tcl_GetStringFromObj(variableObjPtr, @@ -589,106 +741,101 @@ DdeServerProc ( ddeReturn = NULL; } } - Tcl_DStringFree(&dString); } - return ddeReturn; + Tcl_DStringFree(&dString); + } + return ddeReturn; - case XTYP_EXECUTE: { + case XTYP_EXECUTE: { + /* + * Execute this script. The results will be saved into a list object + * which will be retreived later. See ExecuteRemoteObject. + */ + Tcl_Obj *returnPackagePtr; + + for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) + && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { /* - * Execute this script. The results will be saved into - * a list object which will be retreived later. See - * ExecuteRemoteObject. + * Empty loop body. */ + } - Tcl_Obj *returnPackagePtr; - - for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) - && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { - /* - * Empty loop body. - */ - - } - - if (convPtr == NULL) { - return (HDDEDATA) DDE_FNOTPROCESSED; - } - - utilString = (char *) DdeAccessData(hData, &dlen); - len = dlen; - ddeObjectPtr = Tcl_NewStringObj(utilString, -1); - Tcl_IncrRefCount(ddeObjectPtr); - DdeUnaccessData(hData); - if (convPtr->returnPackagePtr != NULL) { - Tcl_DecrRefCount(convPtr->returnPackagePtr); - } - convPtr->returnPackagePtr = NULL; - returnPackagePtr = - ExecuteRemoteObject(convPtr->riPtr, ddeObjectPtr); - Tcl_IncrRefCount(returnPackagePtr); - for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) - && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { - /* - * Empty loop body. - */ - - } - if (convPtr != NULL) { - convPtr->returnPackagePtr = returnPackagePtr; - } else { - Tcl_DecrRefCount(returnPackagePtr); - } - Tcl_DecrRefCount(ddeObjectPtr); - if (returnPackagePtr == NULL) { - return (HDDEDATA) DDE_FNOTPROCESSED; - } else { - return (HDDEDATA) DDE_FACK; - } + if (convPtr == NULL) { + return (HDDEDATA) DDE_FNOTPROCESSED; } - - case XTYP_WILDCONNECT: { + utilString = (char *) DdeAccessData(hData, &dlen); + len = dlen; + ddeObjectPtr = Tcl_NewStringObj(utilString, -1); + Tcl_IncrRefCount(ddeObjectPtr); + DdeUnaccessData(hData); + if (convPtr->returnPackagePtr != NULL) { + Tcl_DecrRefCount(convPtr->returnPackagePtr); + } + convPtr->returnPackagePtr = NULL; + returnPackagePtr = ExecuteRemoteObject(convPtr->riPtr, ddeObjectPtr); + Tcl_IncrRefCount(returnPackagePtr); + for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) + && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { /* - * Dde wants a list of services and topics that we support. + * Empty loop body. */ + } + if (convPtr != NULL) { + convPtr->returnPackagePtr = returnPackagePtr; + } else { + Tcl_DecrRefCount(returnPackagePtr); + } + Tcl_DecrRefCount(ddeObjectPtr); + if (returnPackagePtr == NULL) { + return (HDDEDATA) DDE_FNOTPROCESSED; + } else { + return (HDDEDATA) DDE_FACK; + } + } - HSZPAIR *returnPtr; - int i; - int numItems; + case XTYP_WILDCONNECT: { + /* + * Dde wants a list of services and topics that we support. + */ - for (i = 0, riPtr = tsdPtr->interpListPtr; riPtr != NULL; - i++, riPtr = riPtr->nextPtr) { - /* - * Empty loop body. - */ + HSZPAIR *returnPtr; + int i; + int numItems; - } + for (i = 0, riPtr = tsdPtr->interpListPtr; riPtr != NULL; + i++, riPtr = riPtr->nextPtr) { + /* + * Empty loop body. + */ + } - numItems = i; - ddeReturn = DdeCreateDataHandle(ddeInstance, NULL, - (numItems + 1) * sizeof(HSZPAIR), 0, 0, 0, 0); - returnPtr = (HSZPAIR *) DdeAccessData(ddeReturn, &dlen); - len = dlen; - for (i = 0, riPtr = tsdPtr->interpListPtr; i < numItems; - i++, riPtr = riPtr->nextPtr) { - returnPtr[i].hszSvc = DdeCreateStringHandle( - ddeInstance, "TclEval", CP_WINANSI); - returnPtr[i].hszTopic = DdeCreateStringHandle( - ddeInstance, riPtr->name, CP_WINANSI); - } - returnPtr[i].hszSvc = NULL; - returnPtr[i].hszTopic = NULL; - DdeUnaccessData(ddeReturn); - return ddeReturn; + numItems = i; + ddeReturn = DdeCreateDataHandle(ddeInstance, NULL, + (numItems + 1) * sizeof(HSZPAIR), 0, 0, 0, 0); + returnPtr = (HSZPAIR *) DdeAccessData(ddeReturn, &dlen); + len = dlen; + for (i = 0, riPtr = tsdPtr->interpListPtr; i < numItems; + i++, riPtr = riPtr->nextPtr) { + returnPtr[i].hszSvc = DdeCreateStringHandle(ddeInstance, + TCL_DDE_SERVICE_NAME, CP_WINANSI); + returnPtr[i].hszTopic = DdeCreateStringHandle(ddeInstance, + riPtr->name, CP_WINANSI); } + returnPtr[i].hszSvc = NULL; + returnPtr[i].hszTopic = NULL; + DdeUnaccessData(ddeReturn); + return ddeReturn; + } + default: + return NULL; } - return NULL; } /* - *-------------------------------------------------------------- + *---------------------------------------------------------------------- * * DdeExitProc -- * @@ -700,7 +847,7 @@ DdeServerProc ( * Side effects: * The DDE server is deleted. * - *-------------------------------------------------------------- + *---------------------------------------------------------------------- */ static void @@ -713,21 +860,20 @@ DdeExitProc( } /* - *-------------------------------------------------------------- + *---------------------------------------------------------------------- * * MakeDdeConnection -- * - * This procedure is a utility used to connect to a DDE - * server when given a server name and a topic name. + * This function is a utility used to connect to a DDE server when given + * a server name and a topic name. * * Results: * A standard Tcl result. - * * * Side effects: * Passes back a conversation through ddeConvPtr * - *-------------------------------------------------------------- + *---------------------------------------------------------------------- */ static int @@ -738,8 +884,8 @@ MakeDdeConnection( { HSZ ddeTopic, ddeService; HCONV ddeConv; - - ddeService = DdeCreateStringHandle(ddeInstance, "TclEval", 0); + + ddeService = DdeCreateStringHandle(ddeInstance, TCL_DDE_SERVICE_NAME, 0); ddeTopic = DdeCreateStringHandle(ddeInstance, name, 0); ddeConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); @@ -749,7 +895,7 @@ MakeDdeConnection( if (ddeConv == (HCONV) NULL) { if (interp != NULL) { Tcl_AppendResult(interp, "no registered server named \"", - name, "\"", (char *) NULL); + name, "\"", NULL); } return TCL_ERROR; } @@ -759,14 +905,15 @@ MakeDdeConnection( } /* - *-------------------------------------------------------------- + *---------------------------------------------------------------------- * * DdeGetServicesList -- * - * This procedure obtains the list of DDE services. + * This function obtains the list of DDE services. * - * The functions between here and this procedure are all - * involved with handling the DDE callbacks for this. + * The functions between here and this function are all involved with + * handling the DDE callbacks for this. They are: DdeCreateClient, + * DdeClientWindowProc, DdeServicesOnAck, and DdeEnumWindowsCallback * * Results: * A standard Tcl result. @@ -774,24 +921,12 @@ MakeDdeConnection( * Side effects: * Sets the services list into the interp result. * - *-------------------------------------------------------------- + *---------------------------------------------------------------------- */ -typedef struct ddeEnumServices { - Tcl_Interp *interp; - int result; - ATOM service; - ATOM topic; - HWND hwnd; -} ddeEnumServices; - -LRESULT CALLBACK -DdeClientWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); -static LRESULT -DdeServicesOnAck(HWND hwnd, WPARAM wParam, LPARAM lParam); - static int -DdeCreateClient(ddeEnumServices *es) +DdeCreateClient( + struct DdeEnumServices *es) { WNDCLASSEX wc; static const char *szDdeClientClassName = "TclEval client class"; @@ -801,177 +936,196 @@ DdeCreateClient(ddeEnumServices *es) wc.cbSize = sizeof(wc); wc.lpfnWndProc = DdeClientWindowProc; wc.lpszClassName = szDdeClientClassName; - wc.cbWndExtra = sizeof(ddeEnumServices*); + wc.cbWndExtra = sizeof(struct DdeEnumServices *); + + /* + * Register and create the callback window. + */ - /* register and create the callback window */ RegisterClassEx(&wc); - es->hwnd = CreateWindowEx(0, szDdeClientClassName, - szDdeClientWindowName, - WS_POPUP, 0, 0, 0, 0, NULL, NULL, NULL, - (LPVOID)es); + es->hwnd = CreateWindowEx(0, szDdeClientClassName, szDdeClientWindowName, + WS_POPUP, 0, 0, 0, 0, NULL, NULL, NULL, (LPVOID)es); return TCL_OK; } -LRESULT CALLBACK -DdeClientWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +static LRESULT CALLBACK +DdeClientWindowProc( + HWND hwnd, /* What window is the message for */ + UINT uMsg, /* The type of message received */ + WPARAM wParam, + LPARAM lParam) /* (Potentially) our local handle */ { - LRESULT lr = 0L; switch (uMsg) { - case WM_CREATE: { - LPCREATESTRUCT lpcs = (LPCREATESTRUCT)lParam; - ddeEnumServices *es; - es = (ddeEnumServices*)lpcs->lpCreateParams; + case WM_CREATE: { + LPCREATESTRUCT lpcs = (LPCREATESTRUCT) lParam; + struct DdeEnumServices *es = + (struct DdeEnumServices *) lpcs->lpCreateParams; + #ifdef _WIN64 - SetWindowLongPtr(hwnd, GWLP_USERDATA, (long)es); + SetWindowLongPtr(hwnd, GWLP_USERDATA, (long)es); #else - SetWindowLong(hwnd, GWL_USERDATA, (long)es); + SetWindowLong(hwnd, GWL_USERDATA, (long)es); #endif - break; - } - case WM_DDE_ACK: - lr = DdeServicesOnAck(hwnd, wParam, lParam); - break; - default: - lr = DefWindowProc(hwnd, uMsg, wParam, lParam); + return (LRESULT) 0L; + } + case WM_DDE_ACK: + return DdeServicesOnAck(hwnd, wParam, lParam); + break; + default: + return DefWindowProc(hwnd, uMsg, wParam, lParam); } - return lr; } static LRESULT -DdeServicesOnAck(HWND hwnd, WPARAM wParam, LPARAM lParam) +DdeServicesOnAck( + HWND hwnd, + WPARAM wParam, + LPARAM lParam) { HWND hwndRemote = (HWND)wParam; ATOM service = (ATOM)LOWORD(lParam); ATOM topic = (ATOM)HIWORD(lParam); - ddeEnumServices *es; + struct DdeEnumServices *es; TCHAR sz[255]; #ifdef _WIN64 - es = (ddeEnumServices *)GetWindowLongPtr(hwnd, GWLP_USERDATA); + es = (struct DdeEnumServices *) GetWindowLongPtr(hwnd, GWLP_USERDATA); #else - es = (ddeEnumServices *)GetWindowLong(hwnd, GWL_USERDATA); + es = (struct DdeEnumServices *) GetWindowLong(hwnd, GWL_USERDATA); #endif if ((es->service == (ATOM)NULL || es->service == service) - && (es->topic == (ATOM)NULL || es->topic == topic)) { + && (es->topic == (ATOM)NULL || es->topic == topic)) { Tcl_Obj *matchPtr = Tcl_NewListObj(0, NULL); + Tcl_Obj *resultPtr = Tcl_GetObjResult(es->interp); GlobalGetAtomName(service, sz, 255); - Tcl_ListObjAppendElement(es->interp, matchPtr, - Tcl_NewStringObj(sz, -1)); + Tcl_ListObjAppendElement(NULL, matchPtr, Tcl_NewStringObj(sz, -1)); GlobalGetAtomName(topic, sz, 255); - Tcl_ListObjAppendElement(es->interp, matchPtr, - Tcl_NewStringObj(sz, -1)); - /* Adding the hwnd as a third list element provides a unique + Tcl_ListObjAppendElement(NULL, matchPtr, Tcl_NewStringObj(sz, -1)); + + /* + * Adding the hwnd as a third list element provides a unique * identifier in the case of multiple servers with the name * application and topic names. */ - /* Needs a TIP though - * Tcl_ListObjAppendElement(es->interp, matchPtr, + /* + * Needs a TIP though: + * Tcl_ListObjAppendElement(NULL, matchPtr, * Tcl_NewLongObj((long)hwndRemote)); */ - Tcl_ListObjAppendElement(es->interp, - Tcl_GetObjResult(es->interp), matchPtr); + + if (Tcl_IsShared(resultPtr)) { + resultPtr = Tcl_DuplicateObj(resultPtr); + } + if (Tcl_ListObjAppendElement(es->interp, resultPtr, + matchPtr) == TCL_OK) { + Tcl_SetObjResult(es->interp, resultPtr); + } } - /* tell the server we are no longer interested */ + /* + * Tell the server we are no longer interested. + */ + PostMessage(hwndRemote, WM_DDE_TERMINATE, (WPARAM)hwnd, 0L); return 0L; } - + static BOOL CALLBACK -DdeEnumWindowsCallback(HWND hwndTarget, LPARAM lParam) +DdeEnumWindowsCallback( + HWND hwndTarget, + LPARAM lParam) { LRESULT dwResult = 0; - ddeEnumServices *es = (ddeEnumServices *)lParam; - SendMessageTimeout(hwndTarget, WM_DDE_INITIATE, - (WPARAM)es->hwnd, - MAKELONG(es->service, es->topic), - SMTO_ABORTIFHUNG, 1000, &dwResult); + struct DdeEnumServices *es = (struct DdeEnumServices *) lParam; + + SendMessageTimeout(hwndTarget, WM_DDE_INITIATE, (WPARAM)es->hwnd, + MAKELONG(es->service, es->topic), SMTO_ABORTIFHUNG, 1000, + &dwResult); return TRUE; } - + static int -DdeGetServicesList(Tcl_Interp *interp, char *serviceName, char *topicName) +DdeGetServicesList( + Tcl_Interp *interp, + char *serviceName, + char *topicName) { - ddeEnumServices es; - int r = TCL_OK; + struct DdeEnumServices es; + es.interp = interp; es.result = TCL_OK; - es.service = (serviceName == NULL) - ? (ATOM)NULL : GlobalAddAtom(serviceName); - es.topic = (topicName == NULL) - ? (ATOM)NULL : GlobalAddAtom(topicName); - + es.service = (serviceName == NULL) + ? (ATOM)NULL : GlobalAddAtom(serviceName); + es.topic = (topicName == NULL) ? (ATOM)NULL : GlobalAddAtom(topicName); + Tcl_ResetResult(interp); /* our list is to be appended to result. */ DdeCreateClient(&es); EnumWindows(DdeEnumWindowsCallback, (LPARAM)&es); - - if (IsWindow(es.hwnd)) - DestroyWindow(es.hwnd); - if (es.service != (ATOM)NULL) + + if (IsWindow(es.hwnd)) { + DestroyWindow(es.hwnd); + } + if (es.service != (ATOM)NULL) { GlobalDeleteAtom(es.service); - if (es.topic != (ATOM)NULL) + } + if (es.topic != (ATOM)NULL) { GlobalDeleteAtom(es.topic); + } return es.result; } /* - *-------------------------------------------------------------- + *---------------------------------------------------------------------- * * SetDdeError -- * - * Sets the interp result to a cogent error message - * describing the last DDE error. + * Sets the interp result to a cogent error message describing the last + * DDE error. * * Results: * None. - * * * Side effects: * The interp's result object is changed. * - *-------------------------------------------------------------- + *---------------------------------------------------------------------- */ static void SetDdeError( - Tcl_Interp *interp) /* The interp to put the message in.*/ + Tcl_Interp *interp) /* The interp to put the message in. */ { - Tcl_Obj *resultPtr = Tcl_GetObjResult(interp); - int err; - - err = DdeGetLastError(ddeInstance); - switch (err) { - case DMLERR_DATAACKTIMEOUT: - case DMLERR_EXECACKTIMEOUT: - case DMLERR_POKEACKTIMEOUT: - Tcl_SetStringObj(resultPtr, - "remote interpreter did not respond", -1); - break; - - case DMLERR_BUSY: - Tcl_SetStringObj(resultPtr, "remote server is busy", -1); - break; - - case DMLERR_NOTPROCESSED: - Tcl_SetStringObj(resultPtr, - "remote server cannot handle this command", -1); - break; - - default: - Tcl_SetStringObj(resultPtr, "dde command failed", -1); + char *errorMessage; + + switch (DdeGetLastError(ddeInstance)) { + case DMLERR_DATAACKTIMEOUT: + case DMLERR_EXECACKTIMEOUT: + case DMLERR_POKEACKTIMEOUT: + errorMessage = "remote interpreter did not respond"; + break; + case DMLERR_BUSY: + errorMessage = "remote server is busy"; + break; + case DMLERR_NOTPROCESSED: + errorMessage = "remote server cannot handle this command"; + break; + default: + errorMessage = "dde command failed"; } + + Tcl_SetObjResult(interp, Tcl_NewStringObj(errorMessage, -1)); } /* - *-------------------------------------------------------------- + *---------------------------------------------------------------------- * * Tcl_DdeObjCmd -- * - * This procedure is invoked to process the "dde" Tcl command. - * See the user documentation for details on what it does. + * This function is invoked to process the "dde" Tcl command. See the + * user documentation for details on what it does. * * Results: * A standard Tcl result. @@ -979,7 +1133,7 @@ SetDdeError( * Side effects: * See the user documentation. * - *-------------------------------------------------------------- + *---------------------------------------------------------------------- */ int @@ -987,49 +1141,45 @@ Tcl_DdeObjCmd( ClientData clientData, /* Used only for deletion */ Tcl_Interp *interp, /* The interp we are sending from */ int objc, /* Number of arguments */ - Tcl_Obj *CONST objv[]) /* The arguments */ + Tcl_Obj *CONST * objv) /* The arguments */ { - enum { - DDE_SERVERNAME, - DDE_EXECUTE, - DDE_POKE, - DDE_REQUEST, - DDE_SERVICES, + static CONST char *ddeCommands[] = { + "servername", "execute", "poke", "request", "services", "eval", + (char *) NULL + }; + enum DdeSubcommands { + DDE_SERVERNAME, DDE_EXECUTE, DDE_POKE, DDE_REQUEST, DDE_SERVICES, DDE_EVAL }; + static CONST char *ddeSrvOptions[] = { + "-force", "-handler", "--", NULL + }; + enum DdeSrvOptions { + DDE_SERVERNAME_EXACT, DDE_SERVERNAME_HANDLER, DDE_SERVERNAME_LAST, + }; + static CONST char *ddeExecOptions[] = { + "-async", NULL + }; + static CONST char *ddeReqOptions[] = { + "-binary", NULL + }; - static CONST char *ddeCommands[] = {"servername", "execute", "poke", - "request", "services", "eval", - (char *) NULL}; - static CONST char *ddeOptions[] = {"-async", (char *) NULL}; - static CONST char *ddeReqOptions[] = {"-binary", (char *) NULL}; - int index, argIndex; - int async = 0, binary = 0; - int result = TCL_OK; - HSZ ddeService = NULL; - HSZ ddeTopic = NULL; - HSZ ddeItem = NULL; - HDDEDATA ddeData = NULL; - HDDEDATA ddeItemData = NULL; + int index, i, length; + int async = 0, binary = 0, exact = 0; + int result = TCL_OK, firstArg = 0; + HSZ ddeService = NULL, ddeTopic = NULL, ddeItem = NULL, ddeCookie = NULL; + HDDEDATA ddeData = NULL, ddeItemData = NULL, ddeReturn; HCONV hConv = NULL; - HSZ ddeCookie = 0; - char *serviceName, *topicName, *itemString, *dataString; - char *string; - int firstArg, length, dataLength; + char *serviceName = NULL, *topicName = NULL, *string; DWORD ddeResult; - HDDEDATA ddeReturn; - RegisteredInterp *riPtr; - Tcl_Interp *sendInterp; - Tcl_Obj *objPtr; - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + Tcl_Obj *objPtr, *handlerPtr = NULL; /* * Initialize DDE server/client */ - + if (objc < 2) { - Tcl_WrongNumArgs(interp, 1, objv, - "?-async? serviceName topicName value"); + Tcl_WrongNumArgs(interp, 1, objv, "command ?arg ...?"); return TCL_ERROR; } @@ -1038,105 +1188,124 @@ Tcl_DdeObjCmd( return TCL_ERROR; } - switch (index) { - case DDE_SERVERNAME: - if ((objc != 3) && (objc != 2)) { - Tcl_WrongNumArgs(interp, 1, objv, "servername ?serverName?"); - return TCL_ERROR; - } - firstArg = (objc - 1); - break; - case DDE_EXECUTE: - if ((objc < 5) || (objc > 6)) { - Tcl_WrongNumArgs(interp, 1, objv, - "execute ?-async? serviceName topicName value"); - return TCL_ERROR; - } - if (Tcl_GetIndexFromObj(NULL, objv[2], ddeOptions, "option", 0, - &argIndex) != TCL_OK) { - if (objc != 5) { - Tcl_WrongNumArgs(interp, 1, objv, - "execute ?-async? serviceName topicName value"); + switch ((enum DdeSubcommands) index) { + case DDE_SERVERNAME: + for (i = 2; i < objc; i++) { + int argIndex; + if (Tcl_GetIndexFromObj(interp, objv[i], ddeSrvOptions, + "option", 0, &argIndex) != TCL_OK) { + /* + * If it is the last argument, it might be a server name + * instead of a bad argument. + */ + + if (i != objc-1) { return TCL_ERROR; } - async = 0; - firstArg = 2; - } else { - if (objc != 6) { - Tcl_WrongNumArgs(interp, 1, objv, - "execute ?-async? serviceName topicName value"); - return TCL_ERROR; + Tcl_ResetResult(interp); + break; + } + if (argIndex == DDE_SERVERNAME_EXACT) { + exact = 1; + } else if (argIndex == DDE_SERVERNAME_HANDLER) { + if ((objc - i) == 1) { /* return current handler */ + RegisteredInterp *riPtr = DdeGetRegistrationPtr(interp); + + if (riPtr && riPtr->handlerPtr) { + Tcl_SetObjResult(interp, riPtr->handlerPtr); + } else { + Tcl_ResetResult(interp); + } + return TCL_OK; } - async = 1; - firstArg = 3; + handlerPtr = objv[++i]; + } else if (argIndex == DDE_SERVERNAME_LAST) { + i++; + break; } + } + + if ((objc - i) > 1) { + Tcl_ResetResult(interp); + Tcl_WrongNumArgs(interp, 2, objv, + "?-force? ?-handler proc? ?--? ?serverName?"); + return TCL_ERROR; + } + + firstArg = (objc == i) ? 1 : i; + break; + case DDE_EXECUTE: + if (objc == 5) { + firstArg = 2; break; - case DDE_POKE: - if (objc != 6) { - Tcl_WrongNumArgs(interp, 1, objv, - "poke serviceName topicName item value"); - return TCL_ERROR; + } else if (objc == 6) { + int dummy; + if (Tcl_GetIndexFromObj(NULL, objv[2], ddeExecOptions, "option", 0, + &dummy) == TCL_OK) { + async = 1; + firstArg = 3; + break; } + } + /* otherwise... */ + Tcl_WrongNumArgs(interp, 2, objv, + "?-async? serviceName topicName value"); + return TCL_ERROR; + case DDE_POKE: + if (objc != 6) { + Tcl_WrongNumArgs(interp, 2, objv, + "serviceName topicName item value"); + return TCL_ERROR; + } + firstArg = 2; + break; + case DDE_REQUEST: + if (objc == 5) { firstArg = 2; break; - case DDE_REQUEST: - if ((objc < 5) || (objc > 6)) { - Tcl_WrongNumArgs(interp, 1, objv, - "request ?-binary? serviceName topicName value"); - return TCL_ERROR; - } + } else if (objc == 6) { + int dummy; if (Tcl_GetIndexFromObj(NULL, objv[2], ddeReqOptions, "option", 0, - &argIndex) != TCL_OK) { - if (objc != 5) { - Tcl_WrongNumArgs(interp, 1, objv, - "request ?-binary? serviceName topicName value"); - return TCL_ERROR; - } - binary = 0; - firstArg = 2; - } else { - if (objc != 6) { - Tcl_WrongNumArgs(interp, 1, objv, - "request ?-binary? serviceName topicName value"); - return TCL_ERROR; - } + &dummy) == TCL_OK) { binary = 1; firstArg = 3; + break; } - break; - case DDE_SERVICES: - if (objc != 4) { - Tcl_WrongNumArgs(interp, 1, objv, - "services serviceName topicName"); - return TCL_ERROR; - } + } + + /* + * Otherwise ... + */ + + Tcl_WrongNumArgs(interp, 2, objv, + "?-binary? serviceName topicName value"); + return TCL_ERROR; + case DDE_SERVICES: + if (objc != 4) { + Tcl_WrongNumArgs(interp, 2, objv, "serviceName topicName"); + return TCL_ERROR; + } + firstArg = 2; + break; + case DDE_EVAL: + if (objc < 4) { + wrongDdeEvalArgs: + Tcl_WrongNumArgs(interp, 2, objv, "?-async? serviceName args"); + return TCL_ERROR; + } else { + int dummy; + firstArg = 2; - break; - case DDE_EVAL: - if (objc < 4) { - Tcl_WrongNumArgs(interp, 1, objv, - "eval ?-async? serviceName args"); - return TCL_ERROR; - } - if (Tcl_GetIndexFromObj(NULL, objv[2], ddeOptions, "option", 0, - &argIndex) != TCL_OK) { - if (objc < 4) { - Tcl_WrongNumArgs(interp, 1, objv, - "eval ?-async? serviceName args"); - return TCL_ERROR; - } - async = 0; - firstArg = 2; - } else { + if (Tcl_GetIndexFromObj(NULL, objv[2], ddeExecOptions, "option", 0, + &dummy) == TCL_OK) { if (objc < 5) { - Tcl_WrongNumArgs(interp, 1, objv, - "eval ?-async? serviceName args"); - return TCL_ERROR; + goto wrongDdeEvalArgs; } async = 1; - firstArg = 3; + firstArg++; } break; + } } Initialize(); @@ -1154,345 +1323,363 @@ Tcl_DdeObjCmd( CP_WINANSI); } - if ((index != DDE_SERVERNAME) &&(index != DDE_EVAL)) { + if ((index != DDE_SERVERNAME) && (index != DDE_EVAL)) { topicName = Tcl_GetStringFromObj(objv[firstArg + 1], &length); if (length == 0) { topicName = NULL; } else { - ddeTopic = DdeCreateStringHandle(ddeInstance, - topicName, CP_WINANSI); + ddeTopic = DdeCreateStringHandle(ddeInstance, topicName, + CP_WINANSI); } } - switch (index) { - case DDE_SERVERNAME: { - serviceName = DdeSetServerName(interp, serviceName); - if (serviceName != NULL) { - Tcl_SetStringObj(Tcl_GetObjResult(interp), - serviceName, -1); - } else { - Tcl_ResetResult(interp); - } + switch ((enum DdeSubcommands) index) { + case DDE_SERVERNAME: + serviceName = DdeSetServerName(interp, serviceName, exact, handlerPtr); + if (serviceName != NULL) { + Tcl_SetObjResult(interp, Tcl_NewStringObj(serviceName, -1)); + } else { + Tcl_ResetResult(interp); + } + break; + + case DDE_EXECUTE: { + int dataLength; + char *dataString = Tcl_GetStringFromObj(objv[firstArg + 2], + &dataLength); + + if (dataLength == 0) { + Tcl_SetObjResult(interp, + Tcl_NewStringObj("cannot execute null data", -1)); + result = TCL_ERROR; break; } - case DDE_EXECUTE: { - dataString = Tcl_GetStringFromObj(objv[firstArg + 2], &dataLength); - if (dataLength == 0) { - Tcl_SetStringObj(Tcl_GetObjResult(interp), - "cannot execute null data", -1); - result = TCL_ERROR; - break; - } - hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); - DdeFreeStringHandle(ddeInstance, ddeService); - DdeFreeStringHandle(ddeInstance, ddeTopic); + hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); + DdeFreeStringHandle(ddeInstance, ddeService); + DdeFreeStringHandle(ddeInstance, ddeTopic); - if (hConv == NULL) { - SetDdeError(interp); - result = TCL_ERROR; - break; + if (hConv == NULL) { + SetDdeError(interp); + result = TCL_ERROR; + break; + } + + ddeData = DdeCreateDataHandle(ddeInstance, dataString, + (DWORD) dataLength+1, 0, 0, CF_TEXT, 0); + if (ddeData != NULL) { + if (async) { + DdeClientTransaction((LPBYTE) ddeData, 0xFFFFFFFF, hConv, 0, + CF_TEXT, XTYP_EXECUTE, TIMEOUT_ASYNC, &ddeResult); + DdeAbandonTransaction(ddeInstance, hConv, ddeResult); + } else { + ddeReturn = DdeClientTransaction((LPBYTE) ddeData, 0xFFFFFFFF, + hConv, 0, CF_TEXT, XTYP_EXECUTE, 30000, NULL); + if (ddeReturn == 0) { + SetDdeError(interp); + result = TCL_ERROR; + } } + DdeFreeDataHandle(ddeData); + } else { + SetDdeError(interp); + result = TCL_ERROR; + } + break; + } + case DDE_REQUEST: { + char *itemString = Tcl_GetStringFromObj(objv[firstArg + 2], &length); + + if (length == 0) { + Tcl_SetObjResult(interp, + Tcl_NewStringObj("cannot request value of null data", -1)); + result = TCL_ERROR; + goto cleanup; + } + hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); + DdeFreeStringHandle(ddeInstance, ddeService); + DdeFreeStringHandle(ddeInstance, ddeTopic); - ddeData = DdeCreateDataHandle(ddeInstance, dataString, - (DWORD) dataLength+1, 0, 0, CF_TEXT, 0); - if (ddeData != NULL) { - if (async) { - DdeClientTransaction((LPBYTE) ddeData, 0xFFFFFFFF, hConv, 0, - CF_TEXT, XTYP_EXECUTE, TIMEOUT_ASYNC, &ddeResult); - DdeAbandonTransaction(ddeInstance, hConv, - ddeResult); + if (hConv == NULL) { + SetDdeError(interp); + result = TCL_ERROR; + } else { + Tcl_Obj *returnObjPtr; + ddeItem = DdeCreateStringHandle(ddeInstance, itemString, + CP_WINANSI); + if (ddeItem != NULL) { + ddeData = DdeClientTransaction(NULL, 0, hConv, ddeItem, + CF_TEXT, XTYP_REQUEST, 5000, NULL); + if (ddeData == NULL) { + SetDdeError(interp); + result = TCL_ERROR; } else { - ddeReturn = DdeClientTransaction((LPBYTE) ddeData, 0xFFFFFFFF, - hConv, 0, CF_TEXT, XTYP_EXECUTE, 30000, NULL); - if (ddeReturn == 0) { - SetDdeError(interp); - result = TCL_ERROR; + DWORD tmp; + char *dataString = DdeAccessData(ddeData, &tmp); + + if (binary) { + returnObjPtr = Tcl_NewByteArrayObj(dataString, + (int) tmp); + } else { + returnObjPtr = Tcl_NewStringObj(dataString, -1); } + DdeUnaccessData(ddeData); + DdeFreeDataHandle(ddeData); + Tcl_SetObjResult(interp, returnObjPtr); } - DdeFreeDataHandle(ddeData); } else { SetDdeError(interp); result = TCL_ERROR; } - break; } - case DDE_REQUEST: { - itemString = Tcl_GetStringFromObj(objv[firstArg + 2], &length); - if (length == 0) { - Tcl_SetStringObj(Tcl_GetObjResult(interp), - "cannot request value of null data", -1); - goto errorNoResult; - } - hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); - DdeFreeStringHandle(ddeInstance, ddeService); - DdeFreeStringHandle(ddeInstance, ddeTopic); - - if (hConv == NULL) { - SetDdeError(interp); - result = TCL_ERROR; - } else { - Tcl_Obj *returnObjPtr; - ddeItem = DdeCreateStringHandle(ddeInstance, - itemString, CP_WINANSI); - if (ddeItem != NULL) { - ddeData = DdeClientTransaction(NULL, 0, hConv, ddeItem, - CF_TEXT, XTYP_REQUEST, 5000, NULL); - if (ddeData == NULL) { - SetDdeError(interp); - result = TCL_ERROR; - } else { - DWORD tmp; - dataString = DdeAccessData(ddeData, &tmp); - dataLength = tmp; - if (binary) { - returnObjPtr = Tcl_NewByteArrayObj(dataString, - dataLength); - } else { - returnObjPtr = Tcl_NewStringObj(dataString, -1); - } - DdeUnaccessData(ddeData); - DdeFreeDataHandle(ddeData); - Tcl_SetObjResult(interp, returnObjPtr); - } - } else { - SetDdeError(interp); - result = TCL_ERROR; - } - } - break; + break; + } + case DDE_POKE: { + char *itemString = Tcl_GetStringFromObj(objv[firstArg + 2], &length); + char *dataString; + + if (length == 0) { + Tcl_SetObjResult(interp, + Tcl_NewStringObj("cannot have a null item", -1)); + result = TCL_ERROR; + goto cleanup; } - case DDE_POKE: { - itemString = Tcl_GetStringFromObj(objv[firstArg + 2], &length); - if (length == 0) { - Tcl_SetStringObj(Tcl_GetObjResult(interp), - "cannot have a null item", -1); - goto errorNoResult; - } - dataString = Tcl_GetStringFromObj(objv[firstArg + 3], &length); - - hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); - DdeFreeStringHandle(ddeInstance, ddeService); - DdeFreeStringHandle(ddeInstance, ddeTopic); + dataString = Tcl_GetStringFromObj(objv[firstArg + 3], &length); - if (hConv == NULL) { - SetDdeError(interp); - result = TCL_ERROR; - } else { - ddeItem = DdeCreateStringHandle(ddeInstance, itemString, - CP_WINANSI); - if (ddeItem != NULL) { - ddeData = DdeClientTransaction(dataString, (DWORD) length+1, - hConv, ddeItem, CF_TEXT, XTYP_POKE, 5000, NULL); - if (ddeData == NULL) { - SetDdeError(interp); - result = TCL_ERROR; - } - } else { + hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); + DdeFreeStringHandle(ddeInstance, ddeService); + DdeFreeStringHandle(ddeInstance, ddeTopic); + + if (hConv == NULL) { + SetDdeError(interp); + result = TCL_ERROR; + } else { + ddeItem = DdeCreateStringHandle(ddeInstance, itemString, + CP_WINANSI); + if (ddeItem != NULL) { + ddeData = DdeClientTransaction(dataString, (DWORD) length+1, + hConv, ddeItem, CF_TEXT, XTYP_POKE, 5000, NULL); + if (ddeData == NULL) { SetDdeError(interp); result = TCL_ERROR; } + } else { + SetDdeError(interp); + result = TCL_ERROR; } - break; } + break; + } - case DDE_SERVICES: { - result = DdeGetServicesList(interp, serviceName, topicName); - break; + case DDE_SERVICES: + result = DdeGetServicesList(interp, serviceName, topicName); + break; + + case DDE_EVAL: { + RegisteredInterp *riPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + if (serviceName == NULL) { + Tcl_SetObjResult(interp, + Tcl_NewStringObj("invalid service name \"\"", -1)); + result = TCL_ERROR; + goto cleanup; } - case DDE_EVAL: { - if (serviceName == NULL) { - Tcl_SetStringObj(Tcl_GetObjResult(interp), - "invalid service name \"\"", -1); - goto errorNoResult; + + objc -= (async + 3); + objv += (async + 3); + + /* + * See if the target interpreter is local. If so, execute the command + * directly without going through the DDE server. Don't exchange + * objects between interps. The target interp could compile an object, + * producing a bytecode structure that refers to other objects owned + * by the target interp. If the target interp is then deleted, the + * bytecode structure would be referring to deallocated objects. + */ + + for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; + riPtr = riPtr->nextPtr) { + if (stricmp(serviceName, riPtr->name) == 0) { + break; } + } + + if (riPtr != NULL) { + Tcl_Interp *sendInterp; - objc -= (async + 3); - ((Tcl_Obj **) objv) += (async + 3); - - /* - * See if the target interpreter is local. If so, execute - * the command directly without going through the DDE server. - * Don't exchange objects between interps. The target interp could - * compile an object, producing a bytecode structure that refers to - * other objects owned by the target interp. If the target interp - * is then deleted, the bytecode structure would be referring to - * deallocated objects. + /* + * This command is to a local interp. No need to go through the + * server. */ - - for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; - riPtr = riPtr->nextPtr) { - if (stricmp(serviceName, riPtr->name) == 0) { - break; - } - } - if (riPtr != NULL) { - /* - * This command is to a local interp. No need to go through - * the server. - */ - - Tcl_Preserve((ClientData) riPtr); - sendInterp = riPtr->interp; - Tcl_Preserve((ClientData) sendInterp); - - /* - * Don't exchange objects between interps. The target interp - * would compile an object, producing a bytecode structure that - * refers to other objects owned by the target interp. If the - * target interp is then deleted, the bytecode structure would - * be referring to deallocated objects. - */ + Tcl_Preserve((ClientData) riPtr); + sendInterp = riPtr->interp; + Tcl_Preserve((ClientData) sendInterp); - if (objc == 1) { - result = Tcl_EvalObjEx(sendInterp, objv[0], - TCL_EVAL_GLOBAL); - } else { + /* + * Don't exchange objects between interps. The target interp would + * compile an object, producing a bytecode structure that refers + * to other objects owned by the target interp. If the target + * interp is then deleted, the bytecode structure would be + * referring to deallocated objects. + */ + + if (Tcl_IsSafe(riPtr->interp) && riPtr->handlerPtr == NULL) { + Tcl_SetResult(riPtr->interp, "permission denied: " + "a handler procedure must be defined for use in " + "a safe interp", TCL_STATIC); + result = TCL_ERROR; + } + + if (result == TCL_OK) { + if (objc == 1) + objPtr = objv[0]; + else { objPtr = Tcl_ConcatObj(objc, objv); - Tcl_IncrRefCount(objPtr); - result = Tcl_EvalObjEx(sendInterp, objPtr, - TCL_EVAL_GLOBAL); - Tcl_DecrRefCount(objPtr); } - if (interp != sendInterp) { - if (result == TCL_ERROR) { - /* - * An error occurred, so transfer error information - * from the destination interpreter back to our - * interpreter. - */ - - Tcl_ResetResult(interp); - objPtr = Tcl_GetVar2Ex(sendInterp, "errorInfo", NULL, - TCL_GLOBAL_ONLY); + if (riPtr->handlerPtr != NULL) { + /* add the dde request data to the handler proc list */ + /* + *result = Tcl_ListObjReplace(sendInterp, objPtr, 0, 0, 1, + * &(riPtr->handlerPtr)); + */ + Tcl_Obj *cmdPtr = Tcl_DuplicateObj(riPtr->handlerPtr); + result = Tcl_ListObjAppendElement(sendInterp, cmdPtr, + objPtr); + if (result == TCL_OK) { + objPtr = cmdPtr; + } + } + } + if (result == TCL_OK) { + Tcl_IncrRefCount(objPtr); + result = Tcl_EvalObjEx(sendInterp, objPtr, TCL_EVAL_GLOBAL); + Tcl_DecrRefCount(objPtr); + } + if (interp != sendInterp) { + if (result == TCL_ERROR) { + /* + * An error occurred, so transfer error information from + * the destination interpreter back to our interpreter. + */ + + Tcl_ResetResult(interp); + objPtr = Tcl_GetVar2Ex(sendInterp, "errorInfo", NULL, + TCL_GLOBAL_ONLY); + if (objPtr) { string = Tcl_GetStringFromObj(objPtr, &length); Tcl_AddObjErrorInfo(interp, string, length); - - objPtr = Tcl_GetVar2Ex(sendInterp, "errorCode", NULL, - TCL_GLOBAL_ONLY); + } + + objPtr = Tcl_GetVar2Ex(sendInterp, "errorCode", NULL, + TCL_GLOBAL_ONLY); + if (objPtr) { Tcl_SetObjErrorCode(interp, objPtr); } - Tcl_SetObjResult(interp, Tcl_GetObjResult(sendInterp)); } - Tcl_Release((ClientData) riPtr); - Tcl_Release((ClientData) sendInterp); + Tcl_SetObjResult(interp, Tcl_GetObjResult(sendInterp)); + } + Tcl_Release((ClientData) riPtr); + Tcl_Release((ClientData) sendInterp); + } else { + /* + * This is a non-local request. Send the script to the server and + * poll it for a result. + */ + + if (MakeDdeConnection(interp, serviceName, &hConv) != TCL_OK) { + invalidServerResponse: + Tcl_SetObjResult(interp, + Tcl_NewStringObj("invalid data returned from server", + -1)); + result = TCL_ERROR; + goto cleanup; + } + + objPtr = Tcl_ConcatObj(objc, objv); + string = Tcl_GetStringFromObj(objPtr, &length); + ddeItemData = DdeCreateDataHandle(ddeInstance, string, + (DWORD) length+1, 0, 0, CF_TEXT, 0); + + if (async) { + ddeData = DdeClientTransaction((LPBYTE) ddeItemData, + 0xFFFFFFFF, hConv, 0, + CF_TEXT, XTYP_EXECUTE, TIMEOUT_ASYNC, &ddeResult); + DdeAbandonTransaction(ddeInstance, hConv, ddeResult); } else { + ddeData = DdeClientTransaction((LPBYTE) ddeItemData, + 0xFFFFFFFF, hConv, 0, + CF_TEXT, XTYP_EXECUTE, 30000, NULL); + if (ddeData != 0) { + ddeCookie = DdeCreateStringHandle(ddeInstance, + TCL_DDE_EXECUTE_RESULT, CP_WINANSI); + ddeData = DdeClientTransaction(NULL, 0, hConv, ddeCookie, + CF_TEXT, XTYP_REQUEST, 30000, NULL); + } + } + + Tcl_DecrRefCount(objPtr); + + if (ddeData == 0) { + SetDdeError(interp); + result = TCL_ERROR; + } + + if (async == 0) { + Tcl_Obj *resultPtr; + /* - * This is a non-local request. Send the script to the server - * and poll it for a result. + * The return handle has a two or four element list in it. The + * first element is the return code (TCL_OK, TCL_ERROR, etc.). + * The second is the result of the script. If the return code + * is TCL_ERROR, then the third element is the value of the + * variable "errorCode", and the fourth is the value of the + * variable "errorInfo". */ - - if (MakeDdeConnection(interp, serviceName, &hConv) != TCL_OK) { - goto error; + + resultPtr = Tcl_NewObj(); + length = DdeGetData(ddeData, NULL, 0, 0); + Tcl_SetObjLength(resultPtr, length); + string = Tcl_GetString(resultPtr); + DdeGetData(ddeData, string, (DWORD) length, 0); + Tcl_SetObjLength(resultPtr, (int) strlen(string)); + + if (Tcl_ListObjIndex(NULL, resultPtr, 0, &objPtr) != TCL_OK) { + Tcl_DecrRefCount(resultPtr); + goto invalidServerResponse; } - - objPtr = Tcl_ConcatObj(objc, objv); - string = Tcl_GetStringFromObj(objPtr, &length); - ddeItemData = DdeCreateDataHandle(ddeInstance, string, - (DWORD) length+1, 0, 0, CF_TEXT, 0); - - if (async) { - ddeData = DdeClientTransaction((LPBYTE) ddeItemData, - 0xFFFFFFFF, hConv, 0, - CF_TEXT, XTYP_EXECUTE, TIMEOUT_ASYNC, &ddeResult); - DdeAbandonTransaction(ddeInstance, hConv, ddeResult); - } else { - ddeData = DdeClientTransaction((LPBYTE) ddeItemData, - 0xFFFFFFFF, hConv, 0, - CF_TEXT, XTYP_EXECUTE, 30000, NULL); - if (ddeData != 0) { - - ddeCookie = DdeCreateStringHandle(ddeInstance, - "$TCLEVAL$EXECUTE$RESULT", CP_WINANSI); - ddeData = DdeClientTransaction(NULL, 0, hConv, - ddeCookie, CF_TEXT, XTYP_REQUEST, 30000, NULL); - } + if (Tcl_GetIntFromObj(NULL, objPtr, &result) != TCL_OK) { + Tcl_DecrRefCount(resultPtr); + goto invalidServerResponse; } + if (result == TCL_ERROR) { + Tcl_ResetResult(interp); - Tcl_DecrRefCount(objPtr); - - if (ddeData == 0) { - SetDdeError(interp); - goto errorNoResult; - } - - if (async == 0) { - Tcl_Obj *resultPtr; - - /* - * The return handle has a two or four element list in - * it. The first element is the return code (TCL_OK, - * TCL_ERROR, etc.). The second is the result of the - * script. If the return code is TCL_ERROR, then the third - * element is the value of the variable "errorCode", and - * the fourth is the value of the variable "errorInfo". - */ - - resultPtr = Tcl_NewObj(); - length = DdeGetData(ddeData, NULL, 0, 0); - Tcl_SetObjLength(resultPtr, length); - string = Tcl_GetString(resultPtr); - DdeGetData(ddeData, string, (DWORD) length, 0); - Tcl_SetObjLength(resultPtr, (int) strlen(string)); - - if (Tcl_ListObjIndex(NULL, resultPtr, 0, &objPtr) - != TCL_OK) { + if (Tcl_ListObjIndex(NULL, resultPtr, 3, + &objPtr) != TCL_OK) { Tcl_DecrRefCount(resultPtr); - goto error; + goto invalidServerResponse; } - if (Tcl_GetIntFromObj(NULL, objPtr, &result) != TCL_OK) { - Tcl_DecrRefCount(resultPtr); - goto error; - } - if (result == TCL_ERROR) { - Tcl_ResetResult(interp); + length = -1; + string = Tcl_GetStringFromObj(objPtr, &length); + Tcl_AddObjErrorInfo(interp, string, length); - if (Tcl_ListObjIndex(NULL, resultPtr, 3, &objPtr) - != TCL_OK) { - Tcl_DecrRefCount(resultPtr); - goto error; - } - length = -1; - string = Tcl_GetStringFromObj(objPtr, &length); - Tcl_AddObjErrorInfo(interp, string, length); - - Tcl_ListObjIndex(NULL, resultPtr, 2, &objPtr); - Tcl_SetObjErrorCode(interp, objPtr); - } - if (Tcl_ListObjIndex(NULL, resultPtr, 1, &objPtr) - != TCL_OK) { - Tcl_DecrRefCount(resultPtr); - goto error; - } - Tcl_SetObjResult(interp, objPtr); + Tcl_ListObjIndex(NULL, resultPtr, 2, &objPtr); + Tcl_SetObjErrorCode(interp, objPtr); + } + if (Tcl_ListObjIndex(NULL, resultPtr, 1, &objPtr) != TCL_OK) { Tcl_DecrRefCount(resultPtr); + goto invalidServerResponse; } + Tcl_SetObjResult(interp, objPtr); + Tcl_DecrRefCount(resultPtr); } } } - if (ddeCookie != NULL) { - DdeFreeStringHandle(ddeInstance, ddeCookie); - } - if (ddeItem != NULL) { - DdeFreeStringHandle(ddeInstance, ddeItem); - } - if (ddeItemData != NULL) { - DdeFreeDataHandle(ddeItemData); - } - if (ddeData != NULL) { - DdeFreeDataHandle(ddeData); } - if (hConv != NULL) { - DdeDisconnect(hConv); - } - return result; - error: - Tcl_SetStringObj(Tcl_GetObjResult(interp), - "invalid data returned from server", -1); - - errorNoResult: + cleanup: if (ddeCookie != NULL) { DdeFreeStringHandle(ddeInstance, ddeCookie); } @@ -1508,5 +1695,15 @@ Tcl_DdeObjCmd( if (hConv != NULL) { DdeDisconnect(hConv); } - return TCL_ERROR; + return result; } + +/* + * Local variables: + * mode: c + * indent-tabs-mode: t + * tab-width: 8 + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ -- cgit v0.12 From 64851d233f48b70a58856de35669a22004013dc1 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 Apr 2006 20:50:27 +0000 Subject: Revert attempted backport of dde 1.3 to the core-8-4-branch. --- ChangeLog | 8 +- library/dde/pkgIndex.tcl | 4 +- win/Makefile.in | 10 +- win/configure | 4 +- win/configure.in | 6 +- win/tclWinDde.c | 1885 +++++++++++++++++++++------------------------- 6 files changed, 859 insertions(+), 1058 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3405dea..4c2d510 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,11 +4,9 @@ * win/tclWinReg.c: version 1.1.4 (should have been done for the Tcl 8.4.8 release!) - * library/dde/pkgIndex.tcl: Backport dde 1.3.2 from HEAD. - * win/tclWinDde.c: - * win/Makefile.in: - * win/configure.in: - * win/configure: autoconf 2.13 + * library/dde/pkgIndex.tcl: Long overlooked bump to dde package + * win/tclWinDde.c: version 1.2.4 (should have been done + for the Tcl 8.4.8 release!) 2006-04-05 Donal K. Fellows diff --git a/library/dde/pkgIndex.tcl b/library/dde/pkgIndex.tcl index 3125ada..f993012 100644 --- a/library/dde/pkgIndex.tcl +++ b/library/dde/pkgIndex.tcl @@ -1,7 +1,7 @@ if {![package vsatisfies [package provide Tcl] 8]} {return} if {[string compare $::tcl_platform(platform) windows]} {return} if {[info exists ::tcl_platform(debug)]} { - package ifneeded dde 1.3.2 [list load [file join $dir tcldde13g.dll] dde] + package ifneeded dde 1.2.4 [list load [file join $dir tcldde12g.dll] dde] } else { - package ifneeded dde 1.3.2 [list load [file join $dir tcldde13.dll] dde] + package ifneeded dde 1.2.4 [list load [file join $dir tcldde12.dll] dde] } diff --git a/win/Makefile.in b/win/Makefile.in index fcace15..6c796ed 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.68.2.5 2006/04/05 16:50:04 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.68.2.6 2006/04/05 20:50:46 dgp Exp $ VERSION = @TCL_VERSION@ @@ -437,7 +437,7 @@ install-binaries: binaries else true; \ fi; \ done; - @for i in dde1.3 reg1.1; \ + @for i in dde1.2 reg1.1; \ do \ if [ ! -d $(LIB_INSTALL_DIR)/$$i ] ; then \ echo "Making directory $(LIB_INSTALL_DIR)/$$i"; \ @@ -461,13 +461,13 @@ install-binaries: binaries done @if [ -f $(DDE_DLL_FILE) ]; then \ echo installing $(DDE_DLL_FILE); \ - $(COPY) $(DDE_DLL_FILE) $(LIB_INSTALL_DIR)/dde1.3; \ + $(COPY) $(DDE_DLL_FILE) $(LIB_INSTALL_DIR)/dde1.2; \ $(COPY) $(ROOT_DIR)/library/dde/pkgIndex.tcl \ - $(LIB_INSTALL_DIR)/dde1.3; \ + $(LIB_INSTALL_DIR)/dde1.2; \ fi @if [ -f $(DDE_LIB_FILE) ]; then \ echo installing $(DDE_LIB_FILE); \ - $(COPY) $(DDE_LIB_FILE) $(LIB_INSTALL_DIR)/dde1.3; \ + $(COPY) $(DDE_LIB_FILE) $(LIB_INSTALL_DIR)/dde1.2; \ fi @if [ -f $(REG_DLL_FILE) ]; then \ echo installing $(REG_DLL_FILE); \ diff --git a/win/configure b/win/configure index 721fffb..cd4e32e 100755 --- a/win/configure +++ b/win/configure @@ -537,9 +537,9 @@ TCL_MINOR_VERSION=4 TCL_PATCH_LEVEL=".13" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION -TCL_DDE_VERSION=1.3 +TCL_DDE_VERSION=1.2 TCL_DDE_MAJOR_VERSION=1 -TCL_DDE_MINOR_VERSION=3 +TCL_DDE_MINOR_VERSION=2 DDEVER=$TCL_DDE_MAJOR_VERSION$TCL_DDE_MINOR_VERSION TCL_REG_VERSION=1.1 diff --git a/win/configure.in b/win/configure.in index b63bba0..51f1b5b 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.16 2006/04/05 16:50:04 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.17 2006/04/05 20:50:46 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -14,9 +14,9 @@ TCL_MINOR_VERSION=4 TCL_PATCH_LEVEL=".13" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION -TCL_DDE_VERSION=1.3 +TCL_DDE_VERSION=1.2 TCL_DDE_MAJOR_VERSION=1 -TCL_DDE_MINOR_VERSION=3 +TCL_DDE_MINOR_VERSION=2 DDEVER=$TCL_DDE_MAJOR_VERSION$TCL_DDE_MINOR_VERSION TCL_REG_VERSION=1.1 diff --git a/win/tclWinDde.c b/win/tclWinDde.c index 4a47684..00e41a9 100644 --- a/win/tclWinDde.c +++ b/win/tclWinDde.c @@ -1,33 +1,33 @@ -/* +/* * tclWinDde.c -- * - * This file provides functions that implement the "send" command, - * allowing commands to be passed from interpreter to interpreter. + * This file provides procedures that implement the "send" + * command, allowing commands to be passed from interpreter + * to interpreter. * * Copyright (c) 1997 by Sun Microsystems, Inc. * - * See the file "license.terms" for information on usage and redistribution of - * this file, and for a DISCLAIMER OF ALL WARRANTIES. + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.6 2006/04/05 16:50:04 dgp Exp $ + * RCS: @(#) $Id: tclWinDde.c,v 1.13.2.7 2006/04/05 20:50:46 dgp Exp $ */ -#include "tclInt.h" +#include "tclPort.h" #include #include #include /* - * TCL_STORAGE_CLASS is set unconditionally to DLLEXPORT because the Dde_Init - * declaration is in the source file itself, which is only accessed when we - * are building a library. DO NOT MOVE BEFORE ANY #include LINES. ONLY USE - * EXTERN TO INDICATE EXPORTED FUNCTIONS FROM NOW ON. + * TCL_STORAGE_CLASS is set unconditionally to DLLEXPORT because the + * Registry_Init declaration is in the source file itself, which is only + * accessed when we are building a library. */ #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLEXPORT -/* +/* * The following structure is used to keep track of the interpreters * registered by this process. */ @@ -37,7 +37,6 @@ typedef struct RegisteredInterp { /* The next interp this application knows * about. */ char *name; /* Interpreter's name (malloc-ed). */ - Tcl_Obj *handlerPtr; /* The server handler command */ Tcl_Interp *interp; /* The interpreter attached to this name. */ } RegisteredInterp; @@ -53,77 +52,64 @@ typedef struct Conversation { Tcl_Obj *returnPackagePtr; /* The result package for this conversation. */ } Conversation; -typedef struct DdeEnumServices { - Tcl_Interp *interp; - int result; - ATOM service; - ATOM topic; - HWND hwnd; -} DdeEnumServices; - typedef struct ThreadSpecificData { Conversation *currentConversations; - /* A list of conversations currently being - * processed. */ + /* A list of conversations currently + * being processed. */ RegisteredInterp *interpListPtr; - /* List of all interpreters registered in the - * current process. */ + /* List of all interpreters registered + * in the current process. */ } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; /* - * The following variables cannot be placed in thread-local storage. The Mutex - * ddeMutex guards access to the ddeInstance. + * The following variables cannot be placed in thread-local storage. + * The Mutex ddeMutex guards access to the ddeInstance. */ - static HSZ ddeServiceGlobal = 0; -static DWORD ddeInstance; /* The application instance handle given to us - * by DdeInitialize. */ +static DWORD ddeInstance; /* The application instance handle given + * to us by DdeInitialize. */ static int ddeIsServer = 0; -#define TCL_DDE_VERSION "1.3.2" -#define TCL_DDE_PACKAGE_NAME "dde" -#define TCL_DDE_SERVICE_NAME "TclEval" -#define TCL_DDE_EXECUTE_RESULT "$TCLEVAL$EXECUTE$RESULT" +#define TCL_DDE_VERSION "1.2.4" +#define TCL_DDE_PACKAGE_NAME "dde" +#define TCL_DDE_SERVICE_NAME "TclEval" TCL_DECLARE_MUTEX(ddeMutex) /* - * Forward declarations for functions defined later in this file. + * Forward declarations for procedures defined later in this file. */ -static LRESULT CALLBACK DdeClientWindowProc(HWND hwnd, UINT uMsg, - WPARAM wParam, LPARAM lParam); -static int DdeCreateClient(struct DdeEnumServices *es); -static BOOL CALLBACK DdeEnumWindowsCallback(HWND hwndTarget, LPARAM lParam); -static void DdeExitProc(ClientData clientData); -static int DdeGetServicesList(Tcl_Interp *interp, - char *serviceName, char *topicName); -static HDDEDATA CALLBACK DdeServerProc(UINT uType, UINT uFmt, HCONV hConv, - HSZ ddeTopic, HSZ ddeItem, HDDEDATA hData, - DWORD dwData1, DWORD dwData2); -static LRESULT DdeServicesOnAck(HWND hwnd, WPARAM wParam, - LPARAM lParam); -static void DeleteProc(ClientData clientData); -static Tcl_Obj * ExecuteRemoteObject(RegisteredInterp *riPtr, - Tcl_Obj *ddeObjectPtr); -static int MakeDdeConnection(Tcl_Interp *interp, char *name, - HCONV *ddeConvPtr); -static void SetDdeError(Tcl_Interp *interp); - -int Tcl_DdeObjCmd(ClientData clientData, - Tcl_Interp *interp, int objc, - Tcl_Obj *CONST objv[]); - -EXTERN int Dde_Init(Tcl_Interp *interp); -EXTERN int Dde_SafeInit(Tcl_Interp *interp); +static void DdeExitProc _ANSI_ARGS_((ClientData clientData)); +static void DeleteProc _ANSI_ARGS_((ClientData clientData)); +static Tcl_Obj * ExecuteRemoteObject _ANSI_ARGS_(( + RegisteredInterp *riPtr, + Tcl_Obj *ddeObjectPtr)); +static int MakeDdeConnection _ANSI_ARGS_((Tcl_Interp *interp, + char *name, HCONV *ddeConvPtr)); +static HDDEDATA CALLBACK DdeServerProc _ANSI_ARGS_((UINT uType, + UINT uFmt, HCONV hConv, HSZ ddeTopic, + HSZ ddeItem, HDDEDATA hData, DWORD dwData1, + DWORD dwData2)); +static void SetDdeError _ANSI_ARGS_((Tcl_Interp *interp)); +static int DdeGetServicesList _ANSI_ARGS_(( + Tcl_Interp *interp, + char *serviceName, + char *topicName)); +int Tcl_DdeObjCmd(ClientData clientData, /* Used only for deletion */ + Tcl_Interp *interp, /* The interp we are sending from */ + int objc, /* Number of arguments */ + Tcl_Obj *CONST objv[]); /* The arguments */ + +EXTERN int Dde_Init(Tcl_Interp *interp); /* *---------------------------------------------------------------------- * * Dde_Init -- * - * This function initializes the dde command. + * This procedure initializes the dde command. * * Results: * A standard Tcl result. @@ -145,36 +131,12 @@ Dde_Init( } Tcl_CreateObjCommand(interp, "dde", Tcl_DdeObjCmd, NULL, NULL); + tsdPtr = TCL_TSD_INIT(&dataKey); + Tcl_CreateExitHandler(DdeExitProc, NULL); - return Tcl_PkgProvide(interp, TCL_DDE_PACKAGE_NAME, TCL_DDE_VERSION); -} - -/* - *---------------------------------------------------------------------- - * - * Dde_SafeInit -- - * - * This function initializes the dde command within a safe interp - * - * Results: - * A standard Tcl result. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ -int -Dde_SafeInit( - Tcl_Interp *interp) -{ - int result = Dde_Init(interp); - if (result == TCL_OK) { - Tcl_HideCommand(interp, "dde", "dde"); - } - return result; + return Tcl_PkgProvide(interp, TCL_DDE_PACKAGE_NAME, TCL_DDE_VERSION); } /* @@ -198,11 +160,11 @@ Initialize(void) { int nameFound = 0; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - + /* - * See if the application is already registered; if so, remove its current - * name from the registry. The deletion of the command will take care of - * disposing of this entry. + * See if the application is already registered; if so, remove its + * current name from the registry. The deletion of the command + * will take care of disposing of this entry. */ if (tsdPtr->interpListPtr != NULL) { @@ -210,16 +172,18 @@ Initialize(void) } /* - * Make sure that the DDE server is there. This is done only once, add an - * exit handler tear it down. + * Make sure that the DDE server is there. This is done only once, + * add an exit handler tear it down. */ if (ddeInstance == 0) { Tcl_MutexLock(&ddeMutex); if (ddeInstance == 0) { if (DdeInitialize(&ddeInstance, DdeServerProc, - CBF_SKIP_REGISTRATIONS | CBF_SKIP_UNREGISTRATIONS - | CBF_FAIL_POKES, 0) != DMLERR_NO_ERROR) { + CBF_SKIP_REGISTRATIONS + | CBF_SKIP_UNREGISTRATIONS + | CBF_FAIL_POKES, 0) + != DMLERR_NO_ERROR) { ddeInstance = 0; } } @@ -230,7 +194,7 @@ Initialize(void) if ((ddeServiceGlobal == 0) && (nameFound != 0)) { ddeIsServer = 1; Tcl_CreateExitHandler(DdeExitProc, NULL); - ddeServiceGlobal = DdeCreateStringHandle(ddeInstance, + ddeServiceGlobal = DdeCreateStringHandle(ddeInstance, \ TCL_DDE_SERVICE_NAME, 0); DdeNameService(ddeInstance, ddeServiceGlobal, 0L, DNS_REGISTER); } else { @@ -238,58 +202,54 @@ Initialize(void) } Tcl_MutexUnlock(&ddeMutex); } -} +} /* - *---------------------------------------------------------------------- + *-------------------------------------------------------------- * * DdeSetServerName -- * - * This function is called to associate an ASCII name with a Dde server. - * If the interpreter has already been named, the name replaces the old - * one. + * This procedure is called to associate an ASCII name with a Dde + * server. If the interpreter has already been named, the + * name replaces the old one. * * Results: - * The return value is the name actually given to the interp. This will - * normally be the same as name, but if name was already in use for a Dde - * Server then a name of the form "name #2" will be chosen, with a high - * enough number to make the name unique. + * The return value is the name actually given to the interp. + * This will normally be the same as name, but if name was already + * in use for a Dde Server then a name of the form "name #2" will + * be chosen, with a high enough number to make the name unique. * * Side effects: - * Registration info is saved, thereby allowing the "send" command to be - * used later to invoke commands in the application. In addition, the - * "send" command is created in the application's interpreter. The - * registration will be removed automatically if the interpreter is - * deleted or the "send" command is removed. + * Registration info is saved, thereby allowing the "send" command + * to be used later to invoke commands in the application. In + * addition, the "send" command is created in the application's + * interpreter. The registration will be removed automatically + * if the interpreter is deleted or the "send" command is removed. * - *---------------------------------------------------------------------- + *-------------------------------------------------------------- */ static char * DdeSetServerName( Tcl_Interp *interp, - char *name, /* The name that will be used to refer to the - * interpreter in later "send" commands. Must - * be globally unique. */ - int exactName, /* Should we make a unique name? 0 = unique */ - Tcl_Obj *handlerPtr) /* Name of the optional proc/command to handle - * incoming Dde eval's */ + char *name /* The name that will be used to + * refer to the interpreter in later + * "send" commands. Must be globally + * unique. */ + ) { int suffix, offset; RegisteredInterp *riPtr, *prevPtr; Tcl_DString dString; - char *actualName; - Tcl_Obj *srvListPtr = NULL, **srvPtrPtr = NULL; - int n, srvCount = 0, lastSuffix, r = TCL_OK; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); /* - * See if the application is already registered; if so, remove its current - * name from the registry. The deletion of the command will take care of - * disposing of this entry. + * See if the application is already registered; if so, remove its + * current name from the registry. The deletion of the command + * will take care of disposing of this entry. */ - for (riPtr = tsdPtr->interpListPtr, prevPtr = NULL; riPtr != NULL; + for (riPtr = tsdPtr->interpListPtr, prevPtr = NULL; riPtr != NULL; prevPtr = riPtr, riPtr = riPtr->nextPtr) { if (riPtr->interp == interp) { if (name != NULL) { @@ -301,8 +261,8 @@ DdeSetServerName( break; } else { /* - * The name was NULL, so the caller is asking for the name of - * the current interp. + * the name was NULL, so the caller is asking for + * the name of the current interp. */ return riPtr->name; @@ -312,74 +272,24 @@ DdeSetServerName( if (name == NULL) { /* - * The name was NULL, so the caller is asking for the name of the - * current interp, but it doesn't have a name. + * the name was NULL, so the caller is asking for + * the name of the current interp, but it doesn't + * have a name. */ return ""; } - + /* - * Get the list of currently registered Tcl interpreters by calling the - * internal implementation of the 'dde services' command. + * Pick a name to use for the application. Use "name" if it's not + * already in use. Otherwise add a suffix such as " #2", trying + * larger and larger numbers until we eventually find one that is + * unique. */ + suffix = 1; + offset = 0; Tcl_DStringInit(&dString); - actualName = name; - - if (!exactName) { - r = DdeGetServicesList(interp, TCL_DDE_SERVICE_NAME, NULL); - if (r == TCL_OK) { - srvListPtr = Tcl_GetObjResult(interp); - } - if (r == TCL_OK) { - r = Tcl_ListObjGetElements(interp, srvListPtr, &srvCount, - &srvPtrPtr); - } - if (r != TCL_OK) { - OutputDebugString(Tcl_GetStringResult(interp)); - return NULL; - } - - /* - * Pick a name to use for the application. Use "name" if it's not - * already in use. Otherwise add a suffix such as " #2", trying larger - * and larger numbers until we eventually find one that is unique. - */ - - offset = lastSuffix = 0; - suffix = 1; - - while (suffix != lastSuffix) { - lastSuffix = suffix; - if (suffix > 1) { - if (suffix == 2) { - Tcl_DStringAppend(&dString, name, -1); - Tcl_DStringAppend(&dString, " #", 2); - offset = Tcl_DStringLength(&dString); - Tcl_DStringSetLength(&dString, offset + TCL_INTEGER_SPACE); - actualName = Tcl_DStringValue(&dString); - } - sprintf(Tcl_DStringValue(&dString) + offset, "%d", suffix); - } - - /* - * See if the name is already in use, if so increment suffix. - */ - - for (n = 0; n < srvCount; ++n) { - Tcl_Obj* namePtr; - - Tcl_ListObjIndex(interp, srvPtrPtr[n], 1, &namePtr); - if (strcmp(actualName, Tcl_GetString(namePtr)) == 0) { - suffix++; - break; - } - } - } - Tcl_DStringSetLength(&dString, - offset + strlen(Tcl_DStringValue(&dString)+offset)); - } /* * We have found a unique name. Now add it to the registry. @@ -387,18 +297,10 @@ DdeSetServerName( riPtr = (RegisteredInterp *) ckalloc(sizeof(RegisteredInterp)); riPtr->interp = interp; - riPtr->name = ckalloc((unsigned int) strlen(actualName) + 1); + riPtr->name = ckalloc((unsigned int) strlen(name) + 1); riPtr->nextPtr = tsdPtr->interpListPtr; - riPtr->handlerPtr = handlerPtr; - if (riPtr->handlerPtr != NULL) { - Tcl_IncrRefCount(riPtr->handlerPtr); - } tsdPtr->interpListPtr = riPtr; - strcpy(riPtr->name, actualName); - - if (Tcl_IsSafe(interp)) { - Tcl_ExposeCommand(interp, "dde", "dde"); - } + strcpy(riPtr->name, name); Tcl_CreateObjCommand(interp, "dde", Tcl_DdeObjCmd, (ClientData) riPtr, DeleteProc); @@ -408,52 +310,19 @@ DdeSetServerName( Tcl_DStringFree(&dString); /* - * Re-initialize with the new name. + * re-initialize with the new name */ - Initialize(); - + return riPtr->name; } /* - *---------------------------------------------------------------------- - * - * DdeGetRegistrationPtr - * - * Retrieve the registration info for an interpreter. - * - * Results: - * Returns a pointer to the registration structure or NULL - * - * Side effects: - * None - * - *---------------------------------------------------------------------- - */ - -static RegisteredInterp * -DdeGetRegistrationPtr( - Tcl_Interp *interp) -{ - RegisteredInterp *riPtr; - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - - for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; - riPtr = riPtr->nextPtr) { - if (riPtr->interp == interp) { - break; - } - } - return riPtr; -} - -/* - *---------------------------------------------------------------------- + *-------------------------------------------------------------- * * DeleteProc * - * This function is called when the command "dde" is destroyed. + * This procedure is called when the command "dde" is destroyed. * * Results: * none @@ -461,20 +330,20 @@ DdeGetRegistrationPtr( * Side effects: * The interpreter given by riPtr is unregistered. * - *---------------------------------------------------------------------- + *-------------------------------------------------------------- */ static void -DeleteProc( - ClientData clientData) /* The interp we are deleting passed as - * ClientData. */ +DeleteProc(clientData) + ClientData clientData; /* The interp we are deleting passed + * as ClientData. */ { RegisteredInterp *riPtr = (RegisteredInterp *) clientData; RegisteredInterp *searchPtr, *prevPtr; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); for (searchPtr = tsdPtr->interpListPtr, prevPtr = NULL; - searchPtr != NULL && searchPtr != riPtr; + (searchPtr != NULL) && (searchPtr != riPtr); prevPtr = searchPtr, searchPtr = searchPtr->nextPtr) { /* * Empty loop body. @@ -489,33 +358,31 @@ DeleteProc( } } ckfree(riPtr->name); - if (riPtr->handlerPtr) { - Tcl_DecrRefCount(riPtr->handlerPtr); - } Tcl_EventuallyFree(clientData, TCL_DYNAMIC); } /* - *---------------------------------------------------------------------- + *-------------------------------------------------------------- * * ExecuteRemoteObject -- * - * Takes the package delivered by DDE and executes it in the server's - * interpreter. + * Takes the package delivered by DDE and executes it in + * the server's interpreter. * * Results: - * A list Tcl_Obj * that describes what happened. The first element is - * the numerical return code (TCL_ERROR, etc.). The second element is the - * result of the script. If the return result was TCL_ERROR, then the - * third element will be the value of the global "errorCode", and the - * fourth will be the value of the global "errorInfo". The return result - * will have a refCount of 0. + * A list Tcl_Obj * that describes what happened. The first + * element is the numerical return code (TCL_ERROR, etc.). + * The second element is the result of the script. If the + * return result was TCL_ERROR, then the third element + * will be the value of the global "errorCode", and the + * fourth will be the value of the global "errorInfo". + * The return result will have a refCount of 0. * * Side effects: - * A Tcl script is run, which can cause all kinds of other things to - * happen. + * A Tcl script is run, which can cause all kinds of other + * things to happen. * - *---------------------------------------------------------------------- + *-------------------------------------------------------------- */ static Tcl_Obj * @@ -523,86 +390,63 @@ ExecuteRemoteObject( RegisteredInterp *riPtr, /* Info about this server. */ Tcl_Obj *ddeObjectPtr) /* The object to execute. */ { + Tcl_Obj *errorObjPtr; Tcl_Obj *returnPackagePtr; - int result = TCL_OK; - - if (riPtr->handlerPtr == NULL && Tcl_IsSafe(riPtr->interp)) { - Tcl_SetObjResult(riPtr->interp, Tcl_NewStringObj("permission denied: " - "a handler procedure must be defined for use in a safe " - "interp", -1)); - result = TCL_ERROR; - } - - if (riPtr->handlerPtr != NULL) { - /* - * Add the dde request data to the handler proc list. - */ - - Tcl_Obj *cmdPtr = Tcl_DuplicateObj(riPtr->handlerPtr); - - result = Tcl_ListObjAppendElement(riPtr->interp, cmdPtr, ddeObjectPtr); - if (result == TCL_OK) { - ddeObjectPtr = cmdPtr; - } - } - - if (result == TCL_OK) { - result = Tcl_EvalObjEx(riPtr->interp, ddeObjectPtr, TCL_EVAL_GLOBAL); - } - - returnPackagePtr = Tcl_NewListObj(0, NULL); + int result; - Tcl_ListObjAppendElement(NULL, returnPackagePtr, Tcl_NewIntObj(result)); + result = Tcl_EvalObjEx(riPtr->interp, ddeObjectPtr, TCL_EVAL_GLOBAL); + returnPackagePtr = Tcl_NewListObj(0, (Tcl_Obj **) NULL); + Tcl_ListObjAppendElement(NULL, returnPackagePtr, + Tcl_NewIntObj(result)); Tcl_ListObjAppendElement(NULL, returnPackagePtr, Tcl_GetObjResult(riPtr->interp)); - if (result == TCL_ERROR) { - Tcl_Obj *errorObjPtr = Tcl_GetVar2Ex(riPtr->interp, "errorCode", NULL, + errorObjPtr = Tcl_GetVar2Ex(riPtr->interp, "errorCode", NULL, TCL_GLOBAL_ONLY); - if (errorObjPtr) { - Tcl_ListObjAppendElement(NULL, returnPackagePtr, errorObjPtr); - } + Tcl_ListObjAppendElement(NULL, returnPackagePtr, errorObjPtr); errorObjPtr = Tcl_GetVar2Ex(riPtr->interp, "errorInfo", NULL, TCL_GLOBAL_ONLY); - if (errorObjPtr) { - Tcl_ListObjAppendElement(NULL, returnPackagePtr, errorObjPtr); - } + Tcl_ListObjAppendElement(NULL, returnPackagePtr, errorObjPtr); } return returnPackagePtr; } /* - *---------------------------------------------------------------------- + *-------------------------------------------------------------- * * DdeServerProc -- * - * Handles all transactions for this server. Can handle execute, request, - * and connect protocols. Dde will call this routine when a client - * attempts to run a dde command using this server. + * Handles all transactions for this server. Can handle + * execute, request, and connect protocols. Dde will + * call this routine when a client attempts to run a dde + * command using this server. * * Results: * A DDE Handle with the result of the dde command. * * Side effects: - * Depending on which command is executed, arbitrary Tcl scripts can be - * run. + * Depending on which command is executed, arbitrary + * Tcl scripts can be run. * - *---------------------------------------------------------------------- + *-------------------------------------------------------------- */ static HDDEDATA CALLBACK -DdeServerProc( - UINT uType, /* The type of DDE transaction we are - * performing. */ - UINT uFmt, /* The format that data is sent or received. */ - HCONV hConv, /* The conversation associated with the +DdeServerProc ( + UINT uType, /* The type of DDE transaction we + * are performing. */ + UINT uFmt, /* The format that data is sent or + * received. */ + HCONV hConv, /* The conversation associated with the * current transaction. */ - HSZ ddeTopic, HSZ ddeItem, /* String handles. Transaction-type + HSZ ddeTopic, /* A string handle. Transaction-type + * dependent. */ + HSZ ddeItem, /* A string handle. Transaction-type * dependent. */ HDDEDATA hData, /* DDE data. Transaction-type dependent. */ - DWORD dwData1, DWORD dwData2) - /* Transaction-dependent data. */ + DWORD dwData1, /* Transaction-dependent data. */ + DWORD dwData2) /* Transaction-dependent data. */ { Tcl_DString dString; int len; @@ -615,121 +459,125 @@ DdeServerProc( ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); switch(uType) { - case XTYP_CONNECT: - /* - * Dde is trying to initialize a conversation with us. Check and make - * sure we have a valid topic. - */ + case XTYP_CONNECT: - len = DdeQueryString(ddeInstance, ddeTopic, NULL, 0, 0); - Tcl_DStringInit(&dString); - Tcl_DStringSetLength(&dString, len); - utilString = Tcl_DStringValue(&dString); - DdeQueryString(ddeInstance, ddeTopic, utilString, (DWORD) len + 1, - CP_WINANSI); + /* + * Dde is trying to initialize a conversation with us. Check + * and make sure we have a valid topic. + */ - for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; - riPtr = riPtr->nextPtr) { - if (stricmp(utilString, riPtr->name) == 0) { - Tcl_DStringFree(&dString); - return (HDDEDATA) TRUE; + len = DdeQueryString(ddeInstance, ddeTopic, NULL, 0, 0); + Tcl_DStringInit(&dString); + Tcl_DStringSetLength(&dString, len); + utilString = Tcl_DStringValue(&dString); + DdeQueryString(ddeInstance, ddeTopic, utilString, (DWORD) len + 1, + CP_WINANSI); + + for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; + riPtr = riPtr->nextPtr) { + if (stricmp(utilString, riPtr->name) == 0) { + Tcl_DStringFree(&dString); + return (HDDEDATA) TRUE; + } } - } - Tcl_DStringFree(&dString); - return (HDDEDATA) FALSE; + Tcl_DStringFree(&dString); + return (HDDEDATA) FALSE; - case XTYP_CONNECT_CONFIRM: - /* - * Dde has decided that we can connect, so it gives us a conversation - * handle. We need to keep track of it so we know which execution - * result to return in an XTYP_REQUEST. - */ + case XTYP_CONNECT_CONFIRM: - len = DdeQueryString(ddeInstance, ddeTopic, NULL, 0, 0); - Tcl_DStringInit(&dString); - Tcl_DStringSetLength(&dString, len); - utilString = Tcl_DStringValue(&dString); - DdeQueryString(ddeInstance, ddeTopic, utilString, (DWORD) len + 1, - CP_WINANSI); - for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; - riPtr = riPtr->nextPtr) { - if (stricmp(riPtr->name, utilString) == 0) { - convPtr = (Conversation *) ckalloc(sizeof(Conversation)); - convPtr->nextPtr = tsdPtr->currentConversations; - convPtr->returnPackagePtr = NULL; - convPtr->hConv = hConv; - convPtr->riPtr = riPtr; - tsdPtr->currentConversations = convPtr; - break; + /* + * Dde has decided that we can connect, so it gives us a + * conversation handle. We need to keep track of it + * so we know which execution result to return in an + * XTYP_REQUEST. + */ + + len = DdeQueryString(ddeInstance, ddeTopic, NULL, 0, 0); + Tcl_DStringInit(&dString); + Tcl_DStringSetLength(&dString, len); + utilString = Tcl_DStringValue(&dString); + DdeQueryString(ddeInstance, ddeTopic, utilString, (DWORD) len + 1, + CP_WINANSI); + for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; + riPtr = riPtr->nextPtr) { + if (stricmp(riPtr->name, utilString) == 0) { + convPtr = (Conversation *) ckalloc(sizeof(Conversation)); + convPtr->nextPtr = tsdPtr->currentConversations; + convPtr->returnPackagePtr = NULL; + convPtr->hConv = hConv; + convPtr->riPtr = riPtr; + tsdPtr->currentConversations = convPtr; + break; + } } - } - Tcl_DStringFree(&dString); - return (HDDEDATA) TRUE; + Tcl_DStringFree(&dString); + return (HDDEDATA) TRUE; - case XTYP_DISCONNECT: - /* - * The client has disconnected from our server. Forget this - * conversation. - */ + case XTYP_DISCONNECT: - for (convPtr = tsdPtr->currentConversations, prevConvPtr = NULL; - convPtr != NULL; - prevConvPtr = convPtr, convPtr = convPtr->nextPtr) { - if (hConv == convPtr->hConv) { - if (prevConvPtr == NULL) { - tsdPtr->currentConversations = convPtr->nextPtr; - } else { - prevConvPtr->nextPtr = convPtr->nextPtr; - } - if (convPtr->returnPackagePtr != NULL) { - Tcl_DecrRefCount(convPtr->returnPackagePtr); + /* + * The client has disconnected from our server. Forget this + * conversation. + */ + + for (convPtr = tsdPtr->currentConversations, prevConvPtr = NULL; + convPtr != NULL; + prevConvPtr = convPtr, convPtr = convPtr->nextPtr) { + if (hConv == convPtr->hConv) { + if (prevConvPtr == NULL) { + tsdPtr->currentConversations = convPtr->nextPtr; + } else { + prevConvPtr->nextPtr = convPtr->nextPtr; + } + if (convPtr->returnPackagePtr != NULL) { + Tcl_DecrRefCount(convPtr->returnPackagePtr); + } + ckfree((char *) convPtr); + break; } - ckfree((char *) convPtr); - break; } - } - return (HDDEDATA) TRUE; + return (HDDEDATA) TRUE; - case XTYP_REQUEST: - /* - * This could be either a request for a value of a Tcl variable, or it - * could be the send command requesting the results of the last - * execute. - */ - - if (uFmt != CF_TEXT) { - return (HDDEDATA) FALSE; - } + case XTYP_REQUEST: - ddeReturn = (HDDEDATA) FALSE; - for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) - && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { /* - * Empty loop body. + * This could be either a request for a value of a Tcl variable, + * or it could be the send command requesting the results of the + * last execute. */ - } - if (convPtr != NULL) { - char *returnString; + if (uFmt != CF_TEXT) { + return (HDDEDATA) FALSE; + } - len = DdeQueryString(ddeInstance, ddeItem, NULL, 0, CP_WINANSI); - Tcl_DStringInit(&dString); - Tcl_DStringSetLength(&dString, len); - utilString = Tcl_DStringValue(&dString); - DdeQueryString(ddeInstance, ddeItem, utilString, (DWORD) len + 1, - CP_WINANSI); - if (stricmp(utilString, TCL_DDE_EXECUTE_RESULT) == 0) { - returnString = - Tcl_GetStringFromObj(convPtr->returnPackagePtr, &len); - ddeReturn = DdeCreateDataHandle(ddeInstance, returnString, - (DWORD) len+1, 0, ddeItem, CF_TEXT, 0); - } else { - if (Tcl_IsSafe(convPtr->riPtr->interp)) { - ddeReturn = NULL; + ddeReturn = (HDDEDATA) FALSE; + for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) + && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { + /* + * Empty loop body. + */ + } + + if (convPtr != NULL) { + char *returnString; + + len = DdeQueryString(ddeInstance, ddeItem, NULL, 0, + CP_WINANSI); + Tcl_DStringInit(&dString); + Tcl_DStringSetLength(&dString, len); + utilString = Tcl_DStringValue(&dString); + DdeQueryString(ddeInstance, ddeItem, utilString, + (DWORD) len + 1, CP_WINANSI); + if (stricmp(utilString, "$TCLEVAL$EXECUTE$RESULT") == 0) { + returnString = + Tcl_GetStringFromObj(convPtr->returnPackagePtr, &len); + ddeReturn = DdeCreateDataHandle(ddeInstance, + returnString, (DWORD) len+1, 0, ddeItem, CF_TEXT, + 0); } else { Tcl_Obj *variableObjPtr = Tcl_GetVar2Ex( - convPtr->riPtr->interp, utilString, NULL, + convPtr->riPtr->interp, utilString, NULL, TCL_GLOBAL_ONLY); if (variableObjPtr != NULL) { returnString = Tcl_GetStringFromObj(variableObjPtr, @@ -741,101 +589,106 @@ DdeServerProc( ddeReturn = NULL; } } + Tcl_DStringFree(&dString); } - Tcl_DStringFree(&dString); - } - return ddeReturn; + return ddeReturn; - case XTYP_EXECUTE: { - /* - * Execute this script. The results will be saved into a list object - * which will be retreived later. See ExecuteRemoteObject. - */ + case XTYP_EXECUTE: { - Tcl_Obj *returnPackagePtr; - - for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) - && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { /* - * Empty loop body. + * Execute this script. The results will be saved into + * a list object which will be retreived later. See + * ExecuteRemoteObject. */ - } - if (convPtr == NULL) { - return (HDDEDATA) DDE_FNOTPROCESSED; - } + Tcl_Obj *returnPackagePtr; + + for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) + && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { + /* + * Empty loop body. + */ + + } + + if (convPtr == NULL) { + return (HDDEDATA) DDE_FNOTPROCESSED; + } + + utilString = (char *) DdeAccessData(hData, &dlen); + len = dlen; + ddeObjectPtr = Tcl_NewStringObj(utilString, -1); + Tcl_IncrRefCount(ddeObjectPtr); + DdeUnaccessData(hData); + if (convPtr->returnPackagePtr != NULL) { + Tcl_DecrRefCount(convPtr->returnPackagePtr); + } + convPtr->returnPackagePtr = NULL; + returnPackagePtr = + ExecuteRemoteObject(convPtr->riPtr, ddeObjectPtr); + Tcl_IncrRefCount(returnPackagePtr); + for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) + && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { + /* + * Empty loop body. + */ - utilString = (char *) DdeAccessData(hData, &dlen); - len = dlen; - ddeObjectPtr = Tcl_NewStringObj(utilString, -1); - Tcl_IncrRefCount(ddeObjectPtr); - DdeUnaccessData(hData); - if (convPtr->returnPackagePtr != NULL) { - Tcl_DecrRefCount(convPtr->returnPackagePtr); + } + if (convPtr != NULL) { + convPtr->returnPackagePtr = returnPackagePtr; + } else { + Tcl_DecrRefCount(returnPackagePtr); + } + Tcl_DecrRefCount(ddeObjectPtr); + if (returnPackagePtr == NULL) { + return (HDDEDATA) DDE_FNOTPROCESSED; + } else { + return (HDDEDATA) DDE_FACK; + } } - convPtr->returnPackagePtr = NULL; - returnPackagePtr = ExecuteRemoteObject(convPtr->riPtr, ddeObjectPtr); - Tcl_IncrRefCount(returnPackagePtr); - for (convPtr = tsdPtr->currentConversations; (convPtr != NULL) - && (convPtr->hConv != hConv); convPtr = convPtr->nextPtr) { + + case XTYP_WILDCONNECT: { + /* - * Empty loop body. + * Dde wants a list of services and topics that we support. */ - } - if (convPtr != NULL) { - convPtr->returnPackagePtr = returnPackagePtr; - } else { - Tcl_DecrRefCount(returnPackagePtr); - } - Tcl_DecrRefCount(ddeObjectPtr); - if (returnPackagePtr == NULL) { - return (HDDEDATA) DDE_FNOTPROCESSED; - } else { - return (HDDEDATA) DDE_FACK; - } - } - case XTYP_WILDCONNECT: { - /* - * Dde wants a list of services and topics that we support. - */ + HSZPAIR *returnPtr; + int i; + int numItems; - HSZPAIR *returnPtr; - int i; - int numItems; + for (i = 0, riPtr = tsdPtr->interpListPtr; riPtr != NULL; + i++, riPtr = riPtr->nextPtr) { + /* + * Empty loop body. + */ - for (i = 0, riPtr = tsdPtr->interpListPtr; riPtr != NULL; - i++, riPtr = riPtr->nextPtr) { - /* - * Empty loop body. - */ - } + } - numItems = i; - ddeReturn = DdeCreateDataHandle(ddeInstance, NULL, - (numItems + 1) * sizeof(HSZPAIR), 0, 0, 0, 0); - returnPtr = (HSZPAIR *) DdeAccessData(ddeReturn, &dlen); - len = dlen; - for (i = 0, riPtr = tsdPtr->interpListPtr; i < numItems; - i++, riPtr = riPtr->nextPtr) { - returnPtr[i].hszSvc = DdeCreateStringHandle(ddeInstance, - TCL_DDE_SERVICE_NAME, CP_WINANSI); - returnPtr[i].hszTopic = DdeCreateStringHandle(ddeInstance, - riPtr->name, CP_WINANSI); + numItems = i; + ddeReturn = DdeCreateDataHandle(ddeInstance, NULL, + (numItems + 1) * sizeof(HSZPAIR), 0, 0, 0, 0); + returnPtr = (HSZPAIR *) DdeAccessData(ddeReturn, &dlen); + len = dlen; + for (i = 0, riPtr = tsdPtr->interpListPtr; i < numItems; + i++, riPtr = riPtr->nextPtr) { + returnPtr[i].hszSvc = DdeCreateStringHandle( + ddeInstance, "TclEval", CP_WINANSI); + returnPtr[i].hszTopic = DdeCreateStringHandle( + ddeInstance, riPtr->name, CP_WINANSI); + } + returnPtr[i].hszSvc = NULL; + returnPtr[i].hszTopic = NULL; + DdeUnaccessData(ddeReturn); + return ddeReturn; } - returnPtr[i].hszSvc = NULL; - returnPtr[i].hszTopic = NULL; - DdeUnaccessData(ddeReturn); - return ddeReturn; - } - default: - return NULL; } + return NULL; } /* - *---------------------------------------------------------------------- + *-------------------------------------------------------------- * * DdeExitProc -- * @@ -847,7 +700,7 @@ DdeServerProc( * Side effects: * The DDE server is deleted. * - *---------------------------------------------------------------------- + *-------------------------------------------------------------- */ static void @@ -860,20 +713,21 @@ DdeExitProc( } /* - *---------------------------------------------------------------------- + *-------------------------------------------------------------- * * MakeDdeConnection -- * - * This function is a utility used to connect to a DDE server when given - * a server name and a topic name. + * This procedure is a utility used to connect to a DDE + * server when given a server name and a topic name. * * Results: * A standard Tcl result. + * * * Side effects: * Passes back a conversation through ddeConvPtr * - *---------------------------------------------------------------------- + *-------------------------------------------------------------- */ static int @@ -884,8 +738,8 @@ MakeDdeConnection( { HSZ ddeTopic, ddeService; HCONV ddeConv; - - ddeService = DdeCreateStringHandle(ddeInstance, TCL_DDE_SERVICE_NAME, 0); + + ddeService = DdeCreateStringHandle(ddeInstance, "TclEval", 0); ddeTopic = DdeCreateStringHandle(ddeInstance, name, 0); ddeConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); @@ -895,7 +749,7 @@ MakeDdeConnection( if (ddeConv == (HCONV) NULL) { if (interp != NULL) { Tcl_AppendResult(interp, "no registered server named \"", - name, "\"", NULL); + name, "\"", (char *) NULL); } return TCL_ERROR; } @@ -905,15 +759,14 @@ MakeDdeConnection( } /* - *---------------------------------------------------------------------- + *-------------------------------------------------------------- * * DdeGetServicesList -- * - * This function obtains the list of DDE services. + * This procedure obtains the list of DDE services. * - * The functions between here and this function are all involved with - * handling the DDE callbacks for this. They are: DdeCreateClient, - * DdeClientWindowProc, DdeServicesOnAck, and DdeEnumWindowsCallback + * The functions between here and this procedure are all + * involved with handling the DDE callbacks for this. * * Results: * A standard Tcl result. @@ -921,12 +774,24 @@ MakeDdeConnection( * Side effects: * Sets the services list into the interp result. * - *---------------------------------------------------------------------- + *-------------------------------------------------------------- */ +typedef struct ddeEnumServices { + Tcl_Interp *interp; + int result; + ATOM service; + ATOM topic; + HWND hwnd; +} ddeEnumServices; + +LRESULT CALLBACK +DdeClientWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +static LRESULT +DdeServicesOnAck(HWND hwnd, WPARAM wParam, LPARAM lParam); + static int -DdeCreateClient( - struct DdeEnumServices *es) +DdeCreateClient(ddeEnumServices *es) { WNDCLASSEX wc; static const char *szDdeClientClassName = "TclEval client class"; @@ -936,196 +801,177 @@ DdeCreateClient( wc.cbSize = sizeof(wc); wc.lpfnWndProc = DdeClientWindowProc; wc.lpszClassName = szDdeClientClassName; - wc.cbWndExtra = sizeof(struct DdeEnumServices *); - - /* - * Register and create the callback window. - */ + wc.cbWndExtra = sizeof(ddeEnumServices*); + /* register and create the callback window */ RegisterClassEx(&wc); - es->hwnd = CreateWindowEx(0, szDdeClientClassName, szDdeClientWindowName, - WS_POPUP, 0, 0, 0, 0, NULL, NULL, NULL, (LPVOID)es); + es->hwnd = CreateWindowEx(0, szDdeClientClassName, + szDdeClientWindowName, + WS_POPUP, 0, 0, 0, 0, NULL, NULL, NULL, + (LPVOID)es); return TCL_OK; } -static LRESULT CALLBACK -DdeClientWindowProc( - HWND hwnd, /* What window is the message for */ - UINT uMsg, /* The type of message received */ - WPARAM wParam, - LPARAM lParam) /* (Potentially) our local handle */ +LRESULT CALLBACK +DdeClientWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { + LRESULT lr = 0L; switch (uMsg) { - case WM_CREATE: { - LPCREATESTRUCT lpcs = (LPCREATESTRUCT) lParam; - struct DdeEnumServices *es = - (struct DdeEnumServices *) lpcs->lpCreateParams; - + case WM_CREATE: { + LPCREATESTRUCT lpcs = (LPCREATESTRUCT)lParam; + ddeEnumServices *es; + es = (ddeEnumServices*)lpcs->lpCreateParams; #ifdef _WIN64 - SetWindowLongPtr(hwnd, GWLP_USERDATA, (long)es); + SetWindowLongPtr(hwnd, GWLP_USERDATA, (long)es); #else - SetWindowLong(hwnd, GWL_USERDATA, (long)es); + SetWindowLong(hwnd, GWL_USERDATA, (long)es); #endif - return (LRESULT) 0L; - } - case WM_DDE_ACK: - return DdeServicesOnAck(hwnd, wParam, lParam); - break; - default: - return DefWindowProc(hwnd, uMsg, wParam, lParam); + break; + } + case WM_DDE_ACK: + lr = DdeServicesOnAck(hwnd, wParam, lParam); + break; + default: + lr = DefWindowProc(hwnd, uMsg, wParam, lParam); } + return lr; } static LRESULT -DdeServicesOnAck( - HWND hwnd, - WPARAM wParam, - LPARAM lParam) +DdeServicesOnAck(HWND hwnd, WPARAM wParam, LPARAM lParam) { HWND hwndRemote = (HWND)wParam; ATOM service = (ATOM)LOWORD(lParam); ATOM topic = (ATOM)HIWORD(lParam); - struct DdeEnumServices *es; + ddeEnumServices *es; TCHAR sz[255]; #ifdef _WIN64 - es = (struct DdeEnumServices *) GetWindowLongPtr(hwnd, GWLP_USERDATA); + es = (ddeEnumServices *)GetWindowLongPtr(hwnd, GWLP_USERDATA); #else - es = (struct DdeEnumServices *) GetWindowLong(hwnd, GWL_USERDATA); + es = (ddeEnumServices *)GetWindowLong(hwnd, GWL_USERDATA); #endif if ((es->service == (ATOM)NULL || es->service == service) - && (es->topic == (ATOM)NULL || es->topic == topic)) { + && (es->topic == (ATOM)NULL || es->topic == topic)) { Tcl_Obj *matchPtr = Tcl_NewListObj(0, NULL); - Tcl_Obj *resultPtr = Tcl_GetObjResult(es->interp); GlobalGetAtomName(service, sz, 255); - Tcl_ListObjAppendElement(NULL, matchPtr, Tcl_NewStringObj(sz, -1)); + Tcl_ListObjAppendElement(es->interp, matchPtr, + Tcl_NewStringObj(sz, -1)); GlobalGetAtomName(topic, sz, 255); - Tcl_ListObjAppendElement(NULL, matchPtr, Tcl_NewStringObj(sz, -1)); - - /* - * Adding the hwnd as a third list element provides a unique + Tcl_ListObjAppendElement(es->interp, matchPtr, + Tcl_NewStringObj(sz, -1)); + /* Adding the hwnd as a third list element provides a unique * identifier in the case of multiple servers with the name * application and topic names. */ - /* - * Needs a TIP though: - * Tcl_ListObjAppendElement(NULL, matchPtr, + /* Needs a TIP though + * Tcl_ListObjAppendElement(es->interp, matchPtr, * Tcl_NewLongObj((long)hwndRemote)); */ - - if (Tcl_IsShared(resultPtr)) { - resultPtr = Tcl_DuplicateObj(resultPtr); - } - if (Tcl_ListObjAppendElement(es->interp, resultPtr, - matchPtr) == TCL_OK) { - Tcl_SetObjResult(es->interp, resultPtr); - } + Tcl_ListObjAppendElement(es->interp, + Tcl_GetObjResult(es->interp), matchPtr); } - /* - * Tell the server we are no longer interested. - */ - + /* tell the server we are no longer interested */ PostMessage(hwndRemote, WM_DDE_TERMINATE, (WPARAM)hwnd, 0L); return 0L; } - + static BOOL CALLBACK -DdeEnumWindowsCallback( - HWND hwndTarget, - LPARAM lParam) +DdeEnumWindowsCallback(HWND hwndTarget, LPARAM lParam) { LRESULT dwResult = 0; - struct DdeEnumServices *es = (struct DdeEnumServices *) lParam; - - SendMessageTimeout(hwndTarget, WM_DDE_INITIATE, (WPARAM)es->hwnd, - MAKELONG(es->service, es->topic), SMTO_ABORTIFHUNG, 1000, - &dwResult); + ddeEnumServices *es = (ddeEnumServices *)lParam; + SendMessageTimeout(hwndTarget, WM_DDE_INITIATE, + (WPARAM)es->hwnd, + MAKELONG(es->service, es->topic), + SMTO_ABORTIFHUNG, 1000, &dwResult); return TRUE; } - + static int -DdeGetServicesList( - Tcl_Interp *interp, - char *serviceName, - char *topicName) +DdeGetServicesList(Tcl_Interp *interp, char *serviceName, char *topicName) { - struct DdeEnumServices es; - + ddeEnumServices es; + int r = TCL_OK; es.interp = interp; es.result = TCL_OK; - es.service = (serviceName == NULL) - ? (ATOM)NULL : GlobalAddAtom(serviceName); - es.topic = (topicName == NULL) ? (ATOM)NULL : GlobalAddAtom(topicName); - + es.service = (serviceName == NULL) + ? (ATOM)NULL : GlobalAddAtom(serviceName); + es.topic = (topicName == NULL) + ? (ATOM)NULL : GlobalAddAtom(topicName); + Tcl_ResetResult(interp); /* our list is to be appended to result. */ DdeCreateClient(&es); EnumWindows(DdeEnumWindowsCallback, (LPARAM)&es); - - if (IsWindow(es.hwnd)) { - DestroyWindow(es.hwnd); - } - if (es.service != (ATOM)NULL) { + + if (IsWindow(es.hwnd)) + DestroyWindow(es.hwnd); + if (es.service != (ATOM)NULL) GlobalDeleteAtom(es.service); - } - if (es.topic != (ATOM)NULL) { + if (es.topic != (ATOM)NULL) GlobalDeleteAtom(es.topic); - } return es.result; } /* - *---------------------------------------------------------------------- + *-------------------------------------------------------------- * * SetDdeError -- * - * Sets the interp result to a cogent error message describing the last - * DDE error. + * Sets the interp result to a cogent error message + * describing the last DDE error. * * Results: * None. + * * * Side effects: * The interp's result object is changed. * - *---------------------------------------------------------------------- + *-------------------------------------------------------------- */ static void SetDdeError( - Tcl_Interp *interp) /* The interp to put the message in. */ + Tcl_Interp *interp) /* The interp to put the message in.*/ { - char *errorMessage; - - switch (DdeGetLastError(ddeInstance)) { - case DMLERR_DATAACKTIMEOUT: - case DMLERR_EXECACKTIMEOUT: - case DMLERR_POKEACKTIMEOUT: - errorMessage = "remote interpreter did not respond"; - break; - case DMLERR_BUSY: - errorMessage = "remote server is busy"; - break; - case DMLERR_NOTPROCESSED: - errorMessage = "remote server cannot handle this command"; - break; - default: - errorMessage = "dde command failed"; - } + Tcl_Obj *resultPtr = Tcl_GetObjResult(interp); + int err; + + err = DdeGetLastError(ddeInstance); + switch (err) { + case DMLERR_DATAACKTIMEOUT: + case DMLERR_EXECACKTIMEOUT: + case DMLERR_POKEACKTIMEOUT: + Tcl_SetStringObj(resultPtr, + "remote interpreter did not respond", -1); + break; + + case DMLERR_BUSY: + Tcl_SetStringObj(resultPtr, "remote server is busy", -1); + break; + + case DMLERR_NOTPROCESSED: + Tcl_SetStringObj(resultPtr, + "remote server cannot handle this command", -1); + break; - Tcl_SetObjResult(interp, Tcl_NewStringObj(errorMessage, -1)); + default: + Tcl_SetStringObj(resultPtr, "dde command failed", -1); + } } /* - *---------------------------------------------------------------------- + *-------------------------------------------------------------- * * Tcl_DdeObjCmd -- * - * This function is invoked to process the "dde" Tcl command. See the - * user documentation for details on what it does. + * This procedure is invoked to process the "dde" Tcl command. + * See the user documentation for details on what it does. * * Results: * A standard Tcl result. @@ -1133,7 +979,7 @@ SetDdeError( * Side effects: * See the user documentation. * - *---------------------------------------------------------------------- + *-------------------------------------------------------------- */ int @@ -1141,45 +987,49 @@ Tcl_DdeObjCmd( ClientData clientData, /* Used only for deletion */ Tcl_Interp *interp, /* The interp we are sending from */ int objc, /* Number of arguments */ - Tcl_Obj *CONST * objv) /* The arguments */ + Tcl_Obj *CONST objv[]) /* The arguments */ { - static CONST char *ddeCommands[] = { - "servername", "execute", "poke", "request", "services", "eval", - (char *) NULL - }; - enum DdeSubcommands { - DDE_SERVERNAME, DDE_EXECUTE, DDE_POKE, DDE_REQUEST, DDE_SERVICES, + enum { + DDE_SERVERNAME, + DDE_EXECUTE, + DDE_POKE, + DDE_REQUEST, + DDE_SERVICES, DDE_EVAL }; - static CONST char *ddeSrvOptions[] = { - "-force", "-handler", "--", NULL - }; - enum DdeSrvOptions { - DDE_SERVERNAME_EXACT, DDE_SERVERNAME_HANDLER, DDE_SERVERNAME_LAST, - }; - static CONST char *ddeExecOptions[] = { - "-async", NULL - }; - static CONST char *ddeReqOptions[] = { - "-binary", NULL - }; - int index, i, length; - int async = 0, binary = 0, exact = 0; - int result = TCL_OK, firstArg = 0; - HSZ ddeService = NULL, ddeTopic = NULL, ddeItem = NULL, ddeCookie = NULL; - HDDEDATA ddeData = NULL, ddeItemData = NULL, ddeReturn; + static CONST char *ddeCommands[] = {"servername", "execute", "poke", + "request", "services", "eval", + (char *) NULL}; + static CONST char *ddeOptions[] = {"-async", (char *) NULL}; + static CONST char *ddeReqOptions[] = {"-binary", (char *) NULL}; + int index, argIndex; + int async = 0, binary = 0; + int result = TCL_OK; + HSZ ddeService = NULL; + HSZ ddeTopic = NULL; + HSZ ddeItem = NULL; + HDDEDATA ddeData = NULL; + HDDEDATA ddeItemData = NULL; HCONV hConv = NULL; - char *serviceName = NULL, *topicName = NULL, *string; + HSZ ddeCookie = 0; + char *serviceName, *topicName, *itemString, *dataString; + char *string; + int firstArg, length, dataLength; DWORD ddeResult; - Tcl_Obj *objPtr, *handlerPtr = NULL; + HDDEDATA ddeReturn; + RegisteredInterp *riPtr; + Tcl_Interp *sendInterp; + Tcl_Obj *objPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); /* * Initialize DDE server/client */ - + if (objc < 2) { - Tcl_WrongNumArgs(interp, 1, objv, "command ?arg ...?"); + Tcl_WrongNumArgs(interp, 1, objv, + "?-async? serviceName topicName value"); return TCL_ERROR; } @@ -1188,124 +1038,105 @@ Tcl_DdeObjCmd( return TCL_ERROR; } - switch ((enum DdeSubcommands) index) { - case DDE_SERVERNAME: - for (i = 2; i < objc; i++) { - int argIndex; - if (Tcl_GetIndexFromObj(interp, objv[i], ddeSrvOptions, - "option", 0, &argIndex) != TCL_OK) { - /* - * If it is the last argument, it might be a server name - * instead of a bad argument. - */ - - if (i != objc-1) { + switch (index) { + case DDE_SERVERNAME: + if ((objc != 3) && (objc != 2)) { + Tcl_WrongNumArgs(interp, 1, objv, "servername ?serverName?"); + return TCL_ERROR; + } + firstArg = (objc - 1); + break; + case DDE_EXECUTE: + if ((objc < 5) || (objc > 6)) { + Tcl_WrongNumArgs(interp, 1, objv, + "execute ?-async? serviceName topicName value"); + return TCL_ERROR; + } + if (Tcl_GetIndexFromObj(NULL, objv[2], ddeOptions, "option", 0, + &argIndex) != TCL_OK) { + if (objc != 5) { + Tcl_WrongNumArgs(interp, 1, objv, + "execute ?-async? serviceName topicName value"); return TCL_ERROR; } - Tcl_ResetResult(interp); - break; - } - if (argIndex == DDE_SERVERNAME_EXACT) { - exact = 1; - } else if (argIndex == DDE_SERVERNAME_HANDLER) { - if ((objc - i) == 1) { /* return current handler */ - RegisteredInterp *riPtr = DdeGetRegistrationPtr(interp); - - if (riPtr && riPtr->handlerPtr) { - Tcl_SetObjResult(interp, riPtr->handlerPtr); - } else { - Tcl_ResetResult(interp); - } - return TCL_OK; + async = 0; + firstArg = 2; + } else { + if (objc != 6) { + Tcl_WrongNumArgs(interp, 1, objv, + "execute ?-async? serviceName topicName value"); + return TCL_ERROR; } - handlerPtr = objv[++i]; - } else if (argIndex == DDE_SERVERNAME_LAST) { - i++; - break; - } - } - - if ((objc - i) > 1) { - Tcl_ResetResult(interp); - Tcl_WrongNumArgs(interp, 2, objv, - "?-force? ?-handler proc? ?--? ?serverName?"); - return TCL_ERROR; - } - - firstArg = (objc == i) ? 1 : i; - break; - case DDE_EXECUTE: - if (objc == 5) { - firstArg = 2; - break; - } else if (objc == 6) { - int dummy; - if (Tcl_GetIndexFromObj(NULL, objv[2], ddeExecOptions, "option", 0, - &dummy) == TCL_OK) { async = 1; firstArg = 3; - break; } - } - /* otherwise... */ - Tcl_WrongNumArgs(interp, 2, objv, - "?-async? serviceName topicName value"); - return TCL_ERROR; - case DDE_POKE: - if (objc != 6) { - Tcl_WrongNumArgs(interp, 2, objv, - "serviceName topicName item value"); - return TCL_ERROR; - } - firstArg = 2; - break; - case DDE_REQUEST: - if (objc == 5) { + break; + case DDE_POKE: + if (objc != 6) { + Tcl_WrongNumArgs(interp, 1, objv, + "poke serviceName topicName item value"); + return TCL_ERROR; + } firstArg = 2; break; - } else if (objc == 6) { - int dummy; + case DDE_REQUEST: + if ((objc < 5) || (objc > 6)) { + Tcl_WrongNumArgs(interp, 1, objv, + "request ?-binary? serviceName topicName value"); + return TCL_ERROR; + } if (Tcl_GetIndexFromObj(NULL, objv[2], ddeReqOptions, "option", 0, - &dummy) == TCL_OK) { + &argIndex) != TCL_OK) { + if (objc != 5) { + Tcl_WrongNumArgs(interp, 1, objv, + "request ?-binary? serviceName topicName value"); + return TCL_ERROR; + } + binary = 0; + firstArg = 2; + } else { + if (objc != 6) { + Tcl_WrongNumArgs(interp, 1, objv, + "request ?-binary? serviceName topicName value"); + return TCL_ERROR; + } binary = 1; firstArg = 3; - break; } - } - - /* - * Otherwise ... - */ - - Tcl_WrongNumArgs(interp, 2, objv, - "?-binary? serviceName topicName value"); - return TCL_ERROR; - case DDE_SERVICES: - if (objc != 4) { - Tcl_WrongNumArgs(interp, 2, objv, "serviceName topicName"); - return TCL_ERROR; - } - firstArg = 2; - break; - case DDE_EVAL: - if (objc < 4) { - wrongDdeEvalArgs: - Tcl_WrongNumArgs(interp, 2, objv, "?-async? serviceName args"); - return TCL_ERROR; - } else { - int dummy; - + break; + case DDE_SERVICES: + if (objc != 4) { + Tcl_WrongNumArgs(interp, 1, objv, + "services serviceName topicName"); + return TCL_ERROR; + } firstArg = 2; - if (Tcl_GetIndexFromObj(NULL, objv[2], ddeExecOptions, "option", 0, - &dummy) == TCL_OK) { + break; + case DDE_EVAL: + if (objc < 4) { + Tcl_WrongNumArgs(interp, 1, objv, + "eval ?-async? serviceName args"); + return TCL_ERROR; + } + if (Tcl_GetIndexFromObj(NULL, objv[2], ddeOptions, "option", 0, + &argIndex) != TCL_OK) { + if (objc < 4) { + Tcl_WrongNumArgs(interp, 1, objv, + "eval ?-async? serviceName args"); + return TCL_ERROR; + } + async = 0; + firstArg = 2; + } else { if (objc < 5) { - goto wrongDdeEvalArgs; + Tcl_WrongNumArgs(interp, 1, objv, + "eval ?-async? serviceName args"); + return TCL_ERROR; } async = 1; - firstArg++; + firstArg = 3; } break; - } } Initialize(); @@ -1323,363 +1154,345 @@ Tcl_DdeObjCmd( CP_WINANSI); } - if ((index != DDE_SERVERNAME) && (index != DDE_EVAL)) { + if ((index != DDE_SERVERNAME) &&(index != DDE_EVAL)) { topicName = Tcl_GetStringFromObj(objv[firstArg + 1], &length); if (length == 0) { topicName = NULL; } else { - ddeTopic = DdeCreateStringHandle(ddeInstance, topicName, - CP_WINANSI); + ddeTopic = DdeCreateStringHandle(ddeInstance, + topicName, CP_WINANSI); } } - switch ((enum DdeSubcommands) index) { - case DDE_SERVERNAME: - serviceName = DdeSetServerName(interp, serviceName, exact, handlerPtr); - if (serviceName != NULL) { - Tcl_SetObjResult(interp, Tcl_NewStringObj(serviceName, -1)); - } else { - Tcl_ResetResult(interp); - } - break; - - case DDE_EXECUTE: { - int dataLength; - char *dataString = Tcl_GetStringFromObj(objv[firstArg + 2], - &dataLength); - - if (dataLength == 0) { - Tcl_SetObjResult(interp, - Tcl_NewStringObj("cannot execute null data", -1)); - result = TCL_ERROR; - break; - } - hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); - DdeFreeStringHandle(ddeInstance, ddeService); - DdeFreeStringHandle(ddeInstance, ddeTopic); - - if (hConv == NULL) { - SetDdeError(interp); - result = TCL_ERROR; - break; - } - - ddeData = DdeCreateDataHandle(ddeInstance, dataString, - (DWORD) dataLength+1, 0, 0, CF_TEXT, 0); - if (ddeData != NULL) { - if (async) { - DdeClientTransaction((LPBYTE) ddeData, 0xFFFFFFFF, hConv, 0, - CF_TEXT, XTYP_EXECUTE, TIMEOUT_ASYNC, &ddeResult); - DdeAbandonTransaction(ddeInstance, hConv, ddeResult); + switch (index) { + case DDE_SERVERNAME: { + serviceName = DdeSetServerName(interp, serviceName); + if (serviceName != NULL) { + Tcl_SetStringObj(Tcl_GetObjResult(interp), + serviceName, -1); } else { - ddeReturn = DdeClientTransaction((LPBYTE) ddeData, 0xFFFFFFFF, - hConv, 0, CF_TEXT, XTYP_EXECUTE, 30000, NULL); - if (ddeReturn == 0) { - SetDdeError(interp); - result = TCL_ERROR; - } + Tcl_ResetResult(interp); } - DdeFreeDataHandle(ddeData); - } else { - SetDdeError(interp); - result = TCL_ERROR; + break; } - break; - } - case DDE_REQUEST: { - char *itemString = Tcl_GetStringFromObj(objv[firstArg + 2], &length); + case DDE_EXECUTE: { + dataString = Tcl_GetStringFromObj(objv[firstArg + 2], &dataLength); + if (dataLength == 0) { + Tcl_SetStringObj(Tcl_GetObjResult(interp), + "cannot execute null data", -1); + result = TCL_ERROR; + break; + } + hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); + DdeFreeStringHandle(ddeInstance, ddeService); + DdeFreeStringHandle(ddeInstance, ddeTopic); - if (length == 0) { - Tcl_SetObjResult(interp, - Tcl_NewStringObj("cannot request value of null data", -1)); - result = TCL_ERROR; - goto cleanup; - } - hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); - DdeFreeStringHandle(ddeInstance, ddeService); - DdeFreeStringHandle(ddeInstance, ddeTopic); + if (hConv == NULL) { + SetDdeError(interp); + result = TCL_ERROR; + break; + } - if (hConv == NULL) { - SetDdeError(interp); - result = TCL_ERROR; - } else { - Tcl_Obj *returnObjPtr; - ddeItem = DdeCreateStringHandle(ddeInstance, itemString, - CP_WINANSI); - if (ddeItem != NULL) { - ddeData = DdeClientTransaction(NULL, 0, hConv, ddeItem, - CF_TEXT, XTYP_REQUEST, 5000, NULL); - if (ddeData == NULL) { - SetDdeError(interp); - result = TCL_ERROR; + ddeData = DdeCreateDataHandle(ddeInstance, dataString, + (DWORD) dataLength+1, 0, 0, CF_TEXT, 0); + if (ddeData != NULL) { + if (async) { + DdeClientTransaction((LPBYTE) ddeData, 0xFFFFFFFF, hConv, 0, + CF_TEXT, XTYP_EXECUTE, TIMEOUT_ASYNC, &ddeResult); + DdeAbandonTransaction(ddeInstance, hConv, + ddeResult); } else { - DWORD tmp; - char *dataString = DdeAccessData(ddeData, &tmp); - - if (binary) { - returnObjPtr = Tcl_NewByteArrayObj(dataString, - (int) tmp); - } else { - returnObjPtr = Tcl_NewStringObj(dataString, -1); + ddeReturn = DdeClientTransaction((LPBYTE) ddeData, 0xFFFFFFFF, + hConv, 0, CF_TEXT, XTYP_EXECUTE, 30000, NULL); + if (ddeReturn == 0) { + SetDdeError(interp); + result = TCL_ERROR; } - DdeUnaccessData(ddeData); - DdeFreeDataHandle(ddeData); - Tcl_SetObjResult(interp, returnObjPtr); } + DdeFreeDataHandle(ddeData); } else { SetDdeError(interp); result = TCL_ERROR; } + break; } + case DDE_REQUEST: { + itemString = Tcl_GetStringFromObj(objv[firstArg + 2], &length); + if (length == 0) { + Tcl_SetStringObj(Tcl_GetObjResult(interp), + "cannot request value of null data", -1); + goto errorNoResult; + } + hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); + DdeFreeStringHandle(ddeInstance, ddeService); + DdeFreeStringHandle(ddeInstance, ddeTopic); + + if (hConv == NULL) { + SetDdeError(interp); + result = TCL_ERROR; + } else { + Tcl_Obj *returnObjPtr; + ddeItem = DdeCreateStringHandle(ddeInstance, + itemString, CP_WINANSI); + if (ddeItem != NULL) { + ddeData = DdeClientTransaction(NULL, 0, hConv, ddeItem, + CF_TEXT, XTYP_REQUEST, 5000, NULL); + if (ddeData == NULL) { + SetDdeError(interp); + result = TCL_ERROR; + } else { + DWORD tmp; + dataString = DdeAccessData(ddeData, &tmp); + dataLength = tmp; + if (binary) { + returnObjPtr = Tcl_NewByteArrayObj(dataString, + dataLength); + } else { + returnObjPtr = Tcl_NewStringObj(dataString, -1); + } + DdeUnaccessData(ddeData); + DdeFreeDataHandle(ddeData); + Tcl_SetObjResult(interp, returnObjPtr); + } + } else { + SetDdeError(interp); + result = TCL_ERROR; + } + } - break; - } - case DDE_POKE: { - char *itemString = Tcl_GetStringFromObj(objv[firstArg + 2], &length); - char *dataString; - - if (length == 0) { - Tcl_SetObjResult(interp, - Tcl_NewStringObj("cannot have a null item", -1)); - result = TCL_ERROR; - goto cleanup; + break; } - dataString = Tcl_GetStringFromObj(objv[firstArg + 3], &length); - - hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); - DdeFreeStringHandle(ddeInstance, ddeService); - DdeFreeStringHandle(ddeInstance, ddeTopic); + case DDE_POKE: { + itemString = Tcl_GetStringFromObj(objv[firstArg + 2], &length); + if (length == 0) { + Tcl_SetStringObj(Tcl_GetObjResult(interp), + "cannot have a null item", -1); + goto errorNoResult; + } + dataString = Tcl_GetStringFromObj(objv[firstArg + 3], &length); + + hConv = DdeConnect(ddeInstance, ddeService, ddeTopic, NULL); + DdeFreeStringHandle(ddeInstance, ddeService); + DdeFreeStringHandle(ddeInstance, ddeTopic); - if (hConv == NULL) { - SetDdeError(interp); - result = TCL_ERROR; - } else { - ddeItem = DdeCreateStringHandle(ddeInstance, itemString, - CP_WINANSI); - if (ddeItem != NULL) { - ddeData = DdeClientTransaction(dataString, (DWORD) length+1, - hConv, ddeItem, CF_TEXT, XTYP_POKE, 5000, NULL); - if (ddeData == NULL) { + if (hConv == NULL) { + SetDdeError(interp); + result = TCL_ERROR; + } else { + ddeItem = DdeCreateStringHandle(ddeInstance, itemString, + CP_WINANSI); + if (ddeItem != NULL) { + ddeData = DdeClientTransaction(dataString, (DWORD) length+1, + hConv, ddeItem, CF_TEXT, XTYP_POKE, 5000, NULL); + if (ddeData == NULL) { + SetDdeError(interp); + result = TCL_ERROR; + } + } else { SetDdeError(interp); result = TCL_ERROR; } - } else { - SetDdeError(interp); - result = TCL_ERROR; } + break; } - break; - } - - case DDE_SERVICES: - result = DdeGetServicesList(interp, serviceName, topicName); - break; - - case DDE_EVAL: { - RegisteredInterp *riPtr; - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - if (serviceName == NULL) { - Tcl_SetObjResult(interp, - Tcl_NewStringObj("invalid service name \"\"", -1)); - result = TCL_ERROR; - goto cleanup; + case DDE_SERVICES: { + result = DdeGetServicesList(interp, serviceName, topicName); + break; } - - objc -= (async + 3); - objv += (async + 3); - - /* - * See if the target interpreter is local. If so, execute the command - * directly without going through the DDE server. Don't exchange - * objects between interps. The target interp could compile an object, - * producing a bytecode structure that refers to other objects owned - * by the target interp. If the target interp is then deleted, the - * bytecode structure would be referring to deallocated objects. - */ - - for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; - riPtr = riPtr->nextPtr) { - if (stricmp(serviceName, riPtr->name) == 0) { - break; + case DDE_EVAL: { + if (serviceName == NULL) { + Tcl_SetStringObj(Tcl_GetObjResult(interp), + "invalid service name \"\"", -1); + goto errorNoResult; } - } - - if (riPtr != NULL) { - Tcl_Interp *sendInterp; - - /* - * This command is to a local interp. No need to go through the - * server. - */ - - Tcl_Preserve((ClientData) riPtr); - sendInterp = riPtr->interp; - Tcl_Preserve((ClientData) sendInterp); - /* - * Don't exchange objects between interps. The target interp would - * compile an object, producing a bytecode structure that refers - * to other objects owned by the target interp. If the target - * interp is then deleted, the bytecode structure would be - * referring to deallocated objects. + objc -= (async + 3); + ((Tcl_Obj **) objv) += (async + 3); + + /* + * See if the target interpreter is local. If so, execute + * the command directly without going through the DDE server. + * Don't exchange objects between interps. The target interp could + * compile an object, producing a bytecode structure that refers to + * other objects owned by the target interp. If the target interp + * is then deleted, the bytecode structure would be referring to + * deallocated objects. */ - - if (Tcl_IsSafe(riPtr->interp) && riPtr->handlerPtr == NULL) { - Tcl_SetResult(riPtr->interp, "permission denied: " - "a handler procedure must be defined for use in " - "a safe interp", TCL_STATIC); - result = TCL_ERROR; + + for (riPtr = tsdPtr->interpListPtr; riPtr != NULL; + riPtr = riPtr->nextPtr) { + if (stricmp(serviceName, riPtr->name) == 0) { + break; + } } - if (result == TCL_OK) { - if (objc == 1) - objPtr = objv[0]; - else { + if (riPtr != NULL) { + /* + * This command is to a local interp. No need to go through + * the server. + */ + + Tcl_Preserve((ClientData) riPtr); + sendInterp = riPtr->interp; + Tcl_Preserve((ClientData) sendInterp); + + /* + * Don't exchange objects between interps. The target interp + * would compile an object, producing a bytecode structure that + * refers to other objects owned by the target interp. If the + * target interp is then deleted, the bytecode structure would + * be referring to deallocated objects. + */ + + if (objc == 1) { + result = Tcl_EvalObjEx(sendInterp, objv[0], + TCL_EVAL_GLOBAL); + } else { objPtr = Tcl_ConcatObj(objc, objv); + Tcl_IncrRefCount(objPtr); + result = Tcl_EvalObjEx(sendInterp, objPtr, + TCL_EVAL_GLOBAL); + Tcl_DecrRefCount(objPtr); } - if (riPtr->handlerPtr != NULL) { - /* add the dde request data to the handler proc list */ - /* - *result = Tcl_ListObjReplace(sendInterp, objPtr, 0, 0, 1, - * &(riPtr->handlerPtr)); - */ - Tcl_Obj *cmdPtr = Tcl_DuplicateObj(riPtr->handlerPtr); - result = Tcl_ListObjAppendElement(sendInterp, cmdPtr, - objPtr); - if (result == TCL_OK) { - objPtr = cmdPtr; - } - } - } - if (result == TCL_OK) { - Tcl_IncrRefCount(objPtr); - result = Tcl_EvalObjEx(sendInterp, objPtr, TCL_EVAL_GLOBAL); - Tcl_DecrRefCount(objPtr); - } - if (interp != sendInterp) { - if (result == TCL_ERROR) { - /* - * An error occurred, so transfer error information from - * the destination interpreter back to our interpreter. - */ - - Tcl_ResetResult(interp); - objPtr = Tcl_GetVar2Ex(sendInterp, "errorInfo", NULL, - TCL_GLOBAL_ONLY); - if (objPtr) { + if (interp != sendInterp) { + if (result == TCL_ERROR) { + /* + * An error occurred, so transfer error information + * from the destination interpreter back to our + * interpreter. + */ + + Tcl_ResetResult(interp); + objPtr = Tcl_GetVar2Ex(sendInterp, "errorInfo", NULL, + TCL_GLOBAL_ONLY); string = Tcl_GetStringFromObj(objPtr, &length); Tcl_AddObjErrorInfo(interp, string, length); - } - - objPtr = Tcl_GetVar2Ex(sendInterp, "errorCode", NULL, - TCL_GLOBAL_ONLY); - if (objPtr) { + + objPtr = Tcl_GetVar2Ex(sendInterp, "errorCode", NULL, + TCL_GLOBAL_ONLY); Tcl_SetObjErrorCode(interp, objPtr); } + Tcl_SetObjResult(interp, Tcl_GetObjResult(sendInterp)); } - Tcl_SetObjResult(interp, Tcl_GetObjResult(sendInterp)); - } - Tcl_Release((ClientData) riPtr); - Tcl_Release((ClientData) sendInterp); - } else { - /* - * This is a non-local request. Send the script to the server and - * poll it for a result. - */ - - if (MakeDdeConnection(interp, serviceName, &hConv) != TCL_OK) { - invalidServerResponse: - Tcl_SetObjResult(interp, - Tcl_NewStringObj("invalid data returned from server", - -1)); - result = TCL_ERROR; - goto cleanup; - } - - objPtr = Tcl_ConcatObj(objc, objv); - string = Tcl_GetStringFromObj(objPtr, &length); - ddeItemData = DdeCreateDataHandle(ddeInstance, string, - (DWORD) length+1, 0, 0, CF_TEXT, 0); - - if (async) { - ddeData = DdeClientTransaction((LPBYTE) ddeItemData, - 0xFFFFFFFF, hConv, 0, - CF_TEXT, XTYP_EXECUTE, TIMEOUT_ASYNC, &ddeResult); - DdeAbandonTransaction(ddeInstance, hConv, ddeResult); + Tcl_Release((ClientData) riPtr); + Tcl_Release((ClientData) sendInterp); } else { - ddeData = DdeClientTransaction((LPBYTE) ddeItemData, - 0xFFFFFFFF, hConv, 0, - CF_TEXT, XTYP_EXECUTE, 30000, NULL); - if (ddeData != 0) { - ddeCookie = DdeCreateStringHandle(ddeInstance, - TCL_DDE_EXECUTE_RESULT, CP_WINANSI); - ddeData = DdeClientTransaction(NULL, 0, hConv, ddeCookie, - CF_TEXT, XTYP_REQUEST, 30000, NULL); - } - } - - Tcl_DecrRefCount(objPtr); - - if (ddeData == 0) { - SetDdeError(interp); - result = TCL_ERROR; - } - - if (async == 0) { - Tcl_Obj *resultPtr; - /* - * The return handle has a two or four element list in it. The - * first element is the return code (TCL_OK, TCL_ERROR, etc.). - * The second is the result of the script. If the return code - * is TCL_ERROR, then the third element is the value of the - * variable "errorCode", and the fourth is the value of the - * variable "errorInfo". + * This is a non-local request. Send the script to the server + * and poll it for a result. */ - - resultPtr = Tcl_NewObj(); - length = DdeGetData(ddeData, NULL, 0, 0); - Tcl_SetObjLength(resultPtr, length); - string = Tcl_GetString(resultPtr); - DdeGetData(ddeData, string, (DWORD) length, 0); - Tcl_SetObjLength(resultPtr, (int) strlen(string)); - - if (Tcl_ListObjIndex(NULL, resultPtr, 0, &objPtr) != TCL_OK) { - Tcl_DecrRefCount(resultPtr); - goto invalidServerResponse; + + if (MakeDdeConnection(interp, serviceName, &hConv) != TCL_OK) { + goto error; } - if (Tcl_GetIntFromObj(NULL, objPtr, &result) != TCL_OK) { - Tcl_DecrRefCount(resultPtr); - goto invalidServerResponse; + + objPtr = Tcl_ConcatObj(objc, objv); + string = Tcl_GetStringFromObj(objPtr, &length); + ddeItemData = DdeCreateDataHandle(ddeInstance, string, + (DWORD) length+1, 0, 0, CF_TEXT, 0); + + if (async) { + ddeData = DdeClientTransaction((LPBYTE) ddeItemData, + 0xFFFFFFFF, hConv, 0, + CF_TEXT, XTYP_EXECUTE, TIMEOUT_ASYNC, &ddeResult); + DdeAbandonTransaction(ddeInstance, hConv, ddeResult); + } else { + ddeData = DdeClientTransaction((LPBYTE) ddeItemData, + 0xFFFFFFFF, hConv, 0, + CF_TEXT, XTYP_EXECUTE, 30000, NULL); + if (ddeData != 0) { + + ddeCookie = DdeCreateStringHandle(ddeInstance, + "$TCLEVAL$EXECUTE$RESULT", CP_WINANSI); + ddeData = DdeClientTransaction(NULL, 0, hConv, + ddeCookie, CF_TEXT, XTYP_REQUEST, 30000, NULL); + } } - if (result == TCL_ERROR) { - Tcl_ResetResult(interp); - if (Tcl_ListObjIndex(NULL, resultPtr, 3, - &objPtr) != TCL_OK) { + Tcl_DecrRefCount(objPtr); + + if (ddeData == 0) { + SetDdeError(interp); + goto errorNoResult; + } + + if (async == 0) { + Tcl_Obj *resultPtr; + + /* + * The return handle has a two or four element list in + * it. The first element is the return code (TCL_OK, + * TCL_ERROR, etc.). The second is the result of the + * script. If the return code is TCL_ERROR, then the third + * element is the value of the variable "errorCode", and + * the fourth is the value of the variable "errorInfo". + */ + + resultPtr = Tcl_NewObj(); + length = DdeGetData(ddeData, NULL, 0, 0); + Tcl_SetObjLength(resultPtr, length); + string = Tcl_GetString(resultPtr); + DdeGetData(ddeData, string, (DWORD) length, 0); + Tcl_SetObjLength(resultPtr, (int) strlen(string)); + + if (Tcl_ListObjIndex(NULL, resultPtr, 0, &objPtr) + != TCL_OK) { Tcl_DecrRefCount(resultPtr); - goto invalidServerResponse; + goto error; } - length = -1; - string = Tcl_GetStringFromObj(objPtr, &length); - Tcl_AddObjErrorInfo(interp, string, length); + if (Tcl_GetIntFromObj(NULL, objPtr, &result) != TCL_OK) { + Tcl_DecrRefCount(resultPtr); + goto error; + } + if (result == TCL_ERROR) { + Tcl_ResetResult(interp); - Tcl_ListObjIndex(NULL, resultPtr, 2, &objPtr); - Tcl_SetObjErrorCode(interp, objPtr); - } - if (Tcl_ListObjIndex(NULL, resultPtr, 1, &objPtr) != TCL_OK) { + if (Tcl_ListObjIndex(NULL, resultPtr, 3, &objPtr) + != TCL_OK) { + Tcl_DecrRefCount(resultPtr); + goto error; + } + length = -1; + string = Tcl_GetStringFromObj(objPtr, &length); + Tcl_AddObjErrorInfo(interp, string, length); + + Tcl_ListObjIndex(NULL, resultPtr, 2, &objPtr); + Tcl_SetObjErrorCode(interp, objPtr); + } + if (Tcl_ListObjIndex(NULL, resultPtr, 1, &objPtr) + != TCL_OK) { + Tcl_DecrRefCount(resultPtr); + goto error; + } + Tcl_SetObjResult(interp, objPtr); Tcl_DecrRefCount(resultPtr); - goto invalidServerResponse; } - Tcl_SetObjResult(interp, objPtr); - Tcl_DecrRefCount(resultPtr); } } } + if (ddeCookie != NULL) { + DdeFreeStringHandle(ddeInstance, ddeCookie); + } + if (ddeItem != NULL) { + DdeFreeStringHandle(ddeInstance, ddeItem); + } + if (ddeItemData != NULL) { + DdeFreeDataHandle(ddeItemData); + } + if (ddeData != NULL) { + DdeFreeDataHandle(ddeData); } + if (hConv != NULL) { + DdeDisconnect(hConv); + } + return result; - cleanup: + error: + Tcl_SetStringObj(Tcl_GetObjResult(interp), + "invalid data returned from server", -1); + + errorNoResult: if (ddeCookie != NULL) { DdeFreeStringHandle(ddeInstance, ddeCookie); } @@ -1695,15 +1508,5 @@ Tcl_DdeObjCmd( if (hConv != NULL) { DdeDisconnect(hConv); } - return result; + return TCL_ERROR; } - -/* - * Local variables: - * mode: c - * indent-tabs-mode: t - * tab-width: 8 - * c-basic-offset: 4 - * fill-column: 78 - * End: - */ -- cgit v0.12 From 5015d22ee0b8292bcbc90e93a922fa092b52b0c1 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 6 Apr 2006 09:26:03 +0000 Subject: * unix/tcl.m4: removed TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING define on Darwin. [Bug 1457515] * unix/configure: autoconf-2.13 --- ChangeLog | 42 +++--- unix/configure | 456 ++++++++++++++++++++++++++++----------------------------- unix/tcl.m4 | 1 - 3 files changed, 249 insertions(+), 250 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4c2d510..e0161b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-04-06 Daniel Steffen + + * unix/tcl.m4: removed TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING + define on Darwin. [Bug 1457515] + * unix/configure: autoconf-2.13 + 2006-04-05 Don Porter * library/reg/pkgIndex.tcl: Long overlooked bump to registry package @@ -24,25 +30,23 @@ 2006-04-03 Andreas Kupries - * generic/tclIO.c (ReadChars): Added check and panic and - commentary to a piece of code which relies on BUFFER_PADDING to - create enough space at the beginning of each buffer forthe - insertion of partial multi-byte data at the beginning of a - buffer. To explain why this code is ok, and as precaution if - someone twiddled the BUFFER_PADDING into uselessness. - - * generic/tclIO.c (ReadChars): [SF Tcl Bug 1462248]. Added code - temporarily suppress the use of TCL_ENCODING_END set when eof - was reached while the buffer we are converting is not truly the - last buffer in the queue. together with the Utf bug below it was - possible to completely bollox the buffer data structures, - eventually crashing Tcl. - - * generic/tclEncoding.c (UtfToUtfProc): Fixed problem where the - function accessed memory beyond the end of the input - buffer. When TCL_ENCODING_END is set and the last bytes of the - buffer start a multi-byte sequence. This bug contributed to [SF - Tcl Bug 1462248]. + * generic/tclIO.c (ReadChars): Added check, panic and commentary to a + piece of code which relies on BUFFER_PADDING to create enough space at + the beginning of each buffer for the insertion of partial multibyte + data at the beginning of a buffer. Commentary explains why this code + is OK, and the panic is as a precaution if someone twiddled the + BUFFER_PADDING into uselessness. + + * generic/tclIO.c (ReadChars): [Bug 1462248]. Temporarily suppress + the use of TCL_ENCODING_END set when EOF was reached while the buffer + we are converting is not truly the last buffer in the queue. Together + with the Utf bug below it was possible to completely wreck the buffer + data structures, eventually crashing Tcl. + + * generic/tclEncoding.c (UtfToUtfProc): Stop accessing memory beyond + the end of the input buffer when TCL_ENCODING_END is set and the last + bytes of the buffer start a multi-byte sequence. This bug contributed + to [Bug 1462248]. 2006-03-28 Jeff Hobbs diff --git a/unix/configure b/unix/configure index d9a7c3a..ee8035e 100755 --- a/unix/configure +++ b/unix/configure @@ -3757,19 +3757,15 @@ EOF #define TCL_LOAD_FROM_MEMORY 1 EOF - cat >> confdefs.h <<\EOF -#define TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING 1 -EOF - # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3768: checking for realpath" >&5 +echo "configure:3764: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -4102,7 +4098,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4106: checking for ld accepts -Bexport flag" >&5 +echo "configure:4102: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4110,14 +4106,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4164,13 +4160,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4168: checking sys/exec.h" >&5 +echo "configure:4164: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4188,7 +4184,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4188: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4208,13 +4204,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4212: checking a.out.h" >&5 +echo "configure:4208: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4232,7 +4228,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4236: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4252,13 +4248,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4256: checking sys/exec_aout.h" >&5 +echo "configure:4252: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4276,7 +4272,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4276: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4429,7 +4425,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4433: checking for build with symbols" >&5 +echo "configure:4429: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4490,21 +4486,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4494: checking for required early compiler flags" >&5 +echo "configure:4490: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4512,7 +4508,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4520,7 +4516,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4547,14 +4543,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4562,7 +4558,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4570,7 +4566,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4597,14 +4593,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4612,7 +4608,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4620,7 +4616,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4624: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4651,7 +4647,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4655: checking for 64-bit integer type" >&5 +echo "configure:4651: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4659,14 +4655,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4680,7 +4676,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4714,13 +4710,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4718: checking for struct dirent64" >&5 +echo "configure:4714: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4728,7 +4724,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4732: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4749,13 +4745,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4753: checking for struct stat64" >&5 +echo "configure:4749: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4763,7 +4759,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4786,12 +4782,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4790: checking for $ac_func" >&5 +echo "configure:4786: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4839,13 +4835,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4843: checking for off64_t" >&5 +echo "configure:4839: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4853,7 +4849,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4885,14 +4881,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4889: checking whether byte ordering is bigendian" >&5 +echo "configure:4885: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4903,11 +4899,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4907: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4918,7 +4914,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4938,7 +4934,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4984,12 +4980,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4988: checking for $ac_func" >&5 +echo "configure:4984: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5046,12 +5042,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5050: checking for $ac_func" >&5 +echo "configure:5046: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5101,12 +5097,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5105: checking for strerror" >&5 +echo "configure:5101: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5153,12 +5149,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5157: checking for getwd" >&5 +echo "configure:5153: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5205,12 +5201,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5209: checking for wait3" >&5 +echo "configure:5205: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5257,12 +5253,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5261: checking for uname" >&5 +echo "configure:5257: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5309,12 +5305,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5313: checking for realpath" >&5 +echo "configure:5309: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5372,17 +5368,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5376: checking for $ac_hdr" >&5 +echo "configure:5372: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5382: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5409,7 +5405,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5413: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5409: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5418,7 +5414,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5433,7 +5429,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5450,7 +5446,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5464,7 +5460,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5482,7 +5478,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5497,7 +5493,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5515,7 +5511,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5532,7 +5528,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5550,7 +5546,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5566,7 +5562,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5584,7 +5580,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5601,7 +5597,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5644,19 +5640,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5648: checking for fd_set in sys/types" >&5 +echo "configure:5644: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5672,12 +5668,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5676: checking for fd_mask in sys/select" >&5 +echo "configure:5672: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5714,12 +5710,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5718: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5714: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5727,7 +5723,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5752,17 +5748,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5756: checking for $ac_hdr" >&5 +echo "configure:5752: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5762: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5789,12 +5785,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5793: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5789: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5803,7 +5799,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5807: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5824,12 +5820,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5828: checking for tm_zone in struct tm" >&5 +echo "configure:5824: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5837,7 +5833,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5857,12 +5853,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5861: checking for tzname" >&5 +echo "configure:5857: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5872,7 +5868,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5897,12 +5893,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5901: checking for $ac_func" >&5 +echo "configure:5897: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5951,19 +5947,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5955: checking tm_tzadj in struct tm" >&5 +echo "configure:5951: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5984,19 +5980,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5988: checking tm_gmtoff in struct tm" >&5 +echo "configure:5984: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6021,12 +6017,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6025: checking long timezone variable" >&5 +echo "configure:6021: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6035,7 +6031,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6035: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6058,12 +6054,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6062: checking time_t timezone variable" >&5 +echo "configure:6058: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6072,7 +6068,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6076: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6099,12 +6095,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6103: checking for st_blksize in struct stat" >&5 +echo "configure:6099: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6112,7 +6108,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6112: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6133,12 +6129,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6137: checking for fstatfs" >&5 +echo "configure:6133: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6190,7 +6186,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6194: checking for 8-bit clean memcmp" >&5 +echo "configure:6190: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6198,7 +6194,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6232,12 +6228,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6236: checking for memmove" >&5 +echo "configure:6232: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6293,7 +6289,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6297: checking proper strstr implementation" >&5 +echo "configure:6293: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6302,7 +6298,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -6338,12 +6334,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6342: checking for strtoul" >&5 +echo "configure:6338: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6388,7 +6384,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:6392: checking proper strtoul implementation" >&5 +echo "configure:6388: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6397,7 +6393,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -6442,12 +6438,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6446: checking for strtod" >&5 +echo "configure:6442: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6492,7 +6488,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:6496: checking proper strtod implementation" >&5 +echo "configure:6492: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6501,7 +6497,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -6549,12 +6545,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6553: checking for strtod" >&5 +echo "configure:6549: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6599,7 +6595,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6603: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6599: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6608,7 +6604,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -6662,12 +6658,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6666: checking for ANSI C header files" >&5 +echo "configure:6662: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6675,7 +6671,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6675: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6692,7 +6688,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6710,7 +6706,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6731,7 +6727,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6742,7 +6738,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6766,12 +6762,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6770: checking for mode_t" >&5 +echo "configure:6766: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6799,12 +6795,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6803: checking for pid_t" >&5 +echo "configure:6799: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6832,12 +6828,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6836: checking for size_t" >&5 +echo "configure:6832: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6865,12 +6861,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6869: checking for uid_t in sys/types.h" >&5 +echo "configure:6865: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6900,12 +6896,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6904: checking for socklen_t" >&5 +echo "configure:6900: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6944,12 +6940,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6948: checking for opendir" >&5 +echo "configure:6944: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7005,12 +7001,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7009: checking union wait" >&5 +echo "configure:7005: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7022,7 +7018,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7049,12 +7045,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7053: checking for strncasecmp" >&5 +echo "configure:7049: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7099,7 +7095,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7103: checking for strncasecmp in -lsocket" >&5 +echo "configure:7099: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7107,7 +7103,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7142,7 +7138,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7146: checking for strncasecmp in -linet" >&5 +echo "configure:7142: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7150,7 +7146,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7199,12 +7195,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7203: checking for BSDgettimeofday" >&5 +echo "configure:7199: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7249,12 +7245,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7253: checking for gettimeofday" >&5 +echo "configure:7249: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7304,12 +7300,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7308: checking for gettimeofday declaration" >&5 +echo "configure:7304: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7340,14 +7336,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7344: checking whether char is unsigned" >&5 +echo "configure:7340: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7403,12 +7399,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7407: checking signed char declarations" >&5 +echo "configure:7403: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7443,7 +7439,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7447: checking for a putenv() that copies the buffer" >&5 +echo "configure:7443: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7451,7 +7447,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7473,7 +7469,7 @@ else } EOF -if { (eval echo configure:7477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7514,17 +7510,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7518: checking for langinfo.h" >&5 +echo "configure:7514: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7528: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7524: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7548,20 +7544,20 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7552: checking whether to use nl_langinfo" >&5 +echo "configure:7548: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -7590,13 +7586,13 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:7594: checking for fts" >&5 +echo "configure:7590: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7607,7 +7603,7 @@ char*const p[2] = {"/", NULL}; FTSENT *e = fts_read(f); fts_close(f); ; return 0; } EOF -if { (eval echo configure:7611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -7639,17 +7635,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7643: checking for $ac_hdr" >&5 +echo "configure:7639: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7653: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7649: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7679,17 +7675,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7683: checking for $ac_hdr" >&5 +echo "configure:7679: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7693: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7717,7 +7713,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:7721: checking system version" >&5 +echo "configure:7717: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7748,7 +7744,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7752: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7748: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -7810,7 +7806,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7814: checking how to package libraries" >&5 +echo "configure:7810: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 353fc79..24c17ea 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1613,7 +1613,6 @@ dnl AC_CHECK_TOOL(AR, ar) AC_DEFINE(USE_VFORK) AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8") AC_DEFINE(TCL_LOAD_FROM_MEMORY) - AC_DEFINE(TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING) # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: AC_CHECK_FUNC(realpath) -- cgit v0.12 From 710445dbed83ad9c1926d84500d59719893a739d Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 6 Apr 2006 18:57:12 +0000 Subject: * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): It seems * tests/indexObj.test: there are extensions that rely on the prior * doc/GetIndex.3: behavior that the empty string cannot succeed as a unique prefix matcher, so I'm restoring Donal Fellow's solution. Added mention of this detail to the documentation. [Bug 1464039] --- ChangeLog | 8 ++++++++ doc/GetIndex.3 | 4 ++-- generic/tclIndexObj.c | 4 ++-- tests/indexObj.test | 10 +++++++--- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0161b0..2e8e623 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-04-06 Don Porter + + * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): It seems + * tests/indexObj.test: there are extensions that rely on the prior + * doc/GetIndex.3: behavior that the empty string cannot succeed + as a unique prefix matcher, so I'm restoring Donal Fellow's solution. + Added mention of this detail to the documentation. [Bug 1464039] + 2006-04-06 Daniel Steffen * unix/tcl.m4: removed TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING diff --git a/doc/GetIndex.3 b/doc/GetIndex.3 index 82f978a..8ed972b 100644 --- a/doc/GetIndex.3 +++ b/doc/GetIndex.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: GetIndex.3,v 1.10.2.1 2003/07/18 15:20:51 dgp Exp $ +'\" RCS: @(#) $Id: GetIndex.3,v 1.10.2.2 2006/04/06 18:57:24 dgp Exp $ '\" .so man.macros .TH Tcl_GetIndexFromObj 3 8.1 Tcl "Tcl Library Procedures" @@ -64,7 +64,7 @@ an object must be one of a predefined set of values. \fIObjPtr\fR is compared against each of the strings in \fItablePtr\fR to find a match. A match occurs if \fIobjPtr\fR's string value is identical to one of the strings in -\fItablePtr\fR, or if it is a unique abbreviation +\fItablePtr\fR, or if it is a non-empty unique abbreviation for exactly one of the strings in \fItablePtr\fR and the \fBTCL_EXACT\fR flag was not specified; in either case the index of the matching entry is stored at \fI*indexPtr\fR diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index f22e7d4..02f8491 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.4 2006/04/05 15:17:05 dgp Exp $ + * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.5 2006/04/06 18:57:24 dgp Exp $ */ #include "tclInt.h" @@ -229,7 +229,7 @@ Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, /* * Check if we were instructed to disallow abbreviations. */ - if ((flags & TCL_EXACT) || (numAbbrev != 1)) { + if ((flags & TCL_EXACT) || (key[0] == '\0') || (numAbbrev != 1)) { goto error; } diff --git a/tests/indexObj.test b/tests/indexObj.test index 0d8a21d..c72729f 100644 --- a/tests/indexObj.test +++ b/tests/indexObj.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: indexObj.test,v 1.7.18.3 2006/04/05 15:17:06 dgp Exp $ +# RCS: @(#) $Id: indexObj.test,v 1.7.18.4 2006/04/06 18:57:30 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -75,8 +75,12 @@ test indexObj-2.8 {exact match of empty values: singleton case} { list [catch {testindexobj 1 0 {} a} msg] $msg } {1 {bad token "": must be a}} test indexObj-2.9 {non-exact match of empty values: singleton case} { - testindexobj 1 1 {} a -} 0 + # NOTE this is a special case. Although the empty string is a + # unique prefix, we have an established history of rejecting + # empty lookup keys, requiring any unique prefix match to have + # at least one character. + list [catch {testindexobj 1 1 {} a} msg] $msg +} {1 {bad token "": must be a}} test indexObj-3.1 {cache result to skip next lookup} { testindexobj check 42 -- cgit v0.12 From 08271a7f2decd6091f1a6de0f7f5610abd594037 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 7 Apr 2006 01:14:26 +0000 Subject: * generic/tclRegexp.c (FinalizeRegexp): full reset data to indicate that readiness for reinitialization. --- ChangeLog | 5 +++++ generic/tclRegexp.c | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2e8e623..ed9a099 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-04-06 Jeff Hobbs + + * generic/tclRegexp.c (FinalizeRegexp): full reset data to + indicate that readiness for reinitialization. + 2006-04-06 Don Porter * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): It seems diff --git a/generic/tclRegexp.c b/generic/tclRegexp.c index 276ea55..7e2a875 100644 --- a/generic/tclRegexp.c +++ b/generic/tclRegexp.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclRegexp.c,v 1.14.4.1 2005/11/27 02:34:41 das Exp $ + * RCS: @(#) $Id: tclRegexp.c,v 1.14.4.2 2006/04/07 01:14:28 hobbs Exp $ */ #include "tclInt.h" @@ -1024,5 +1024,11 @@ FinalizeRegexp(clientData) FreeRegexp(regexpPtr); } ckfree(tsdPtr->patterns[i]); + tsdPtr->patterns[i] = NULL; } + /* + * We may find ourselves reinitialized if another finalization routine + * invokes regexps. + */ + tsdPtr->initialized = 0; } -- cgit v0.12 From e5d972dc85e7f1928c032bf9322877cf169bc941 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 10 Apr 2006 17:34:26 +0000 Subject: *** 8.4.13 TAGGED FOR RELEASE *** * changes: updates for another RC. --- ChangeLog | 8 ++++++-- changes | 24 ++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ed9a099..4a6d969 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-04-10 Don Porter + + *** 8.4.13 TAGGED FOR RELEASE *** + + * changes: updates for another RC. + 2006-04-06 Jeff Hobbs * generic/tclRegexp.c (FinalizeRegexp): full reset data to @@ -90,8 +96,6 @@ 2006-03-22 Don Porter - *** 8.4.13 TAGGED FOR RELEASE *** - * changes: updates for another RC. 2006-03-18 Vince Darley diff --git a/changes b/changes index e3e408d..0c905a0 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.38 2006/03/22 14:12:02 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.39 2006/04/10 17:34:26 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6346,4 +6346,24 @@ when auto-loading or exec traces are present (porter) 2006-03-18 (bug fix)[1193497] Win porting of [file writable] (darley,vogel) ---- Released 8.4.13, March 30, 2006 --- See ChangeLog for details --- +2006-03-28 (bug fix)[1064247] BSD: path normalization with realpath() (steffen) + +2006-03-28 (revert 2005-11-03 feature) Unicode console support (hobbs) + *** POTENTIAL INCOMPATIBILITY *** + +2006-04-03 (bug fix)[1462248] crash reading utf-8 chars spanning multiple +buffers at end of file (kraft,kupries) + +2006-04-04 (revert 2005-11-08)[1162286] [package ifneeded] warns (porter) + *** POTENTIAL INCOMPATIBILITY *** + +2006-04-05 (bug fix)[1464039] Tcl_GetIndexFromObj: empty key (fellows) + +2006-04-05 (bug fix) overdue dde, registry patchelevel increments (porter) +=> dde 1.2.4 +=> registry 1.1.4 + +2006-04-06 (bug fix)[1457515] TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING +removed (steffen) + +--- Released 8.4.13, April 14, 2006 --- See ChangeLog for details --- -- cgit v0.12 From 4178b8327b6e6dbb1d85866a25606c3417ba68f4 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 11 Apr 2006 14:37:02 +0000 Subject: * generic/tclCmdMZ.c: Stop some interference between enter traces * tests/trace.test: and enterstep traces. [Bug 1458266] --- ChangeLog | 5 +++++ generic/tclCmdMZ.c | 15 ++++++++++----- tests/trace.test | 39 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4a6d969..72ee577 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-04-11 Don Porter + + * generic/tclCmdMZ.c: Stop some interference between enter traces + * tests/trace.test: and enterstep traces. [Bug 1458266] + 2006-04-10 Don Porter *** 8.4.13 TAGGED FOR RELEASE *** diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 9aaa6cb..1613799 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.25 2005/11/18 23:07:27 msofer Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.26 2006/04/11 14:37:04 dgp Exp $ */ #include "tclInt.h" @@ -4579,10 +4579,9 @@ TraceExecutionProc(ClientData clientData, Tcl_Interp *interp, */ if (call) { Tcl_SavedResult state; - int stateCode; + int stateCode, i, saveInterpFlags; Tcl_DString cmd; Tcl_DString sub; - int i; Tcl_DStringInit(&cmd); Tcl_DStringAppend(&cmd, tcmdPtr->command, (int)tcmdPtr->length); @@ -4636,8 +4635,9 @@ TraceExecutionProc(ClientData clientData, Tcl_Interp *interp, Tcl_SaveResult(interp, &state); stateCode = iPtr->returnCode; - tcmdPtr->flags |= TCL_TRACE_EXEC_IN_PROGRESS; + saveInterpFlags = iPtr->flags; iPtr->flags |= INTERP_TRACE_IN_PROGRESS; + tcmdPtr->flags |= TCL_TRACE_EXEC_IN_PROGRESS; tcmdPtr->refCount++; /* * This line can have quite arbitrary side-effects, @@ -4646,7 +4646,12 @@ TraceExecutionProc(ClientData clientData, Tcl_Interp *interp, */ traceCode = Tcl_Eval(interp, Tcl_DStringValue(&cmd)); tcmdPtr->flags &= ~TCL_TRACE_EXEC_IN_PROGRESS; - iPtr->flags &= ~INTERP_TRACE_IN_PROGRESS; + + /* + * Restore the interp tracing flag to prevent cmd traces + * from affecting interp traces + */ + iPtr->flags = saveInterpFlags;; if (tcmdPtr->flags == 0) { flags |= TCL_TRACE_DESTROYED; } diff --git a/tests/trace.test b/tests/trace.test index 21536ad..a85bda2 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.15 2006/02/28 15:44:36 dgp Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.16 2006/04/11 14:37:05 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -2325,6 +2325,43 @@ test trace-34.5 {Bug 1047286} { set x } {::foo::bar exists: } +test trace-34.6 {Bug 1458266} -setup { + proc dummy {} {} + proc stepTraceHandler {cmdString args} { + variable log + append log "[expr {[info level] - 1}]: [lindex [split $cmdString] 0]\n" + dummy + isTracedInside_2 + } + proc cmdTraceHandler {cmdString args} { + # silent + } + proc isTracedInside_1 {} { + isTracedInside_2 + } + proc isTracedInside_2 {} { + set x 2 + } +} -body { + variable log {} + trace add execution isTracedInside_1 enterstep stepTraceHandler + trace add execution isTracedInside_2 enterstep stepTraceHandler + isTracedInside_1 + variable first $log + set log {} + trace add execution dummy enter cmdTraceHandler + isTracedInside_1 + variable second $log + expr {($first eq $second) ? "ok" : "\n$first\nand\n\n$second\ndiffer"} +} -cleanup { + unset -nocomplain log first second + rename dummy {} + rename stepTraceHandler {} + rename cmdTraceHandler {} + rename isTracedInside_1 {} + rename isTracedInside_2 {} +} -result ok + # Delete procedures when done, so we don't clash with other tests # (e.g. foobar will clash with 'unknown' tests). catch {rename foobar {}} -- cgit v0.12 From a1a1ecb17b1c46c67fb416f5e8e9cd2af160bdb5 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 11 Apr 2006 15:21:10 +0000 Subject: typos --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 72ee577..3822691 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,13 +12,13 @@ 2006-04-06 Jeff Hobbs * generic/tclRegexp.c (FinalizeRegexp): full reset data to - indicate that readiness for reinitialization. + indicate readiness for reinitialization. 2006-04-06 Don Porter * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): It seems * tests/indexObj.test: there are extensions that rely on the prior - * doc/GetIndex.3: behavior that the empty string cannot succeed + * doc/GetIndex.3: behavior that the empty string cannot succeed as a unique prefix matcher, so I'm restoring Donal Fellow's solution. Added mention of this detail to the documentation. [Bug 1464039] -- cgit v0.12 From 4616dc02889e74e10888b73196e1961abc8f577f Mon Sep 17 00:00:00 2001 From: das Date: Wed, 12 Apr 2006 00:58:05 +0000 Subject: cosmetic fix to 'install' targets --- macosx/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/macosx/Makefile b/macosx/Makefile index 39779db..0a1869a 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -4,7 +4,7 @@ # uses the standard unix build system in tcl/unix (which can be used directly instead of this # if you are not using the tk/macosx projects). # -# RCS: @(#) $Id: Makefile,v 1.5.2.14 2005/11/27 02:34:41 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.15 2006/04/12 00:58:05 das Exp $ # ######################################################################################################## @@ -131,12 +131,14 @@ ${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure \ build-${PROJECT}: ${OBJ_DIR}/Makefile ${DO_MAKE} +ifeq (${INSTALL_BUILD},) # symolic link hackery to trick # 'make install INSTALL_ROOT=${OBJ_DIR}' # into building Tcl.framework and tclsh in ${SYMROOT} @cd ${OBJ_DIR} && mkdir -p $(dir ./${LIBDIR}) $(dir ./${BINDIR}) ${SYMROOT} && \ rm -f ./${LIBDIR} ./${BINDIR} && ln -fs ${SYMROOT} ./${LIBDIR} && \ ln -fs ${SYMROOT} ./${BINDIR} && ln -fs ${OBJ_DIR}/tcltest ${SYMROOT} +endif install-${PROJECT}: build-${PROJECT} ifeq (${EMBEDDED_BUILD}_${INSTALL_ROOT},1_) -- cgit v0.12 From ae9fb6b9eec7da538d2413f60b7433b1aa141aa9 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 12 Apr 2006 02:19:53 +0000 Subject: fix make-html error --- doc/re_syntax.n | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/re_syntax.n b/doc/re_syntax.n index dece078..1017bc3 100644 --- a/doc/re_syntax.n +++ b/doc/re_syntax.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: re_syntax.n,v 1.3 1999/07/14 19:09:36 jpeek Exp $ +'\" RCS: @(#) $Id: re_syntax.n,v 1.3.32.1 2006/04/12 02:19:53 das Exp $ '\" .so man.macros .TH re_syntax n "8.1" Tcl "Tcl Built-In Commands" @@ -279,8 +279,8 @@ Standard character classes are: .PP .RS .ne 5 -.nf .ta 3c +.nf \fBalpha\fR A letter. \fBupper\fR An upper-case letter. \fBlower\fR A lower-case letter. -- cgit v0.12 From c4cf4ed274cdbd0f8e272961e2f10b022d8c30cc Mon Sep 17 00:00:00 2001 From: das Date: Wed, 12 Apr 2006 02:20:16 +0000 Subject: silence re_syntax.n warning --- tools/tcltk-man2html.tcl | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/tcltk-man2html.tcl b/tools/tcltk-man2html.tcl index db24a9a..ae9d68f 100755 --- a/tools/tcltk-man2html.tcl +++ b/tools/tcltk-man2html.tcl @@ -1188,6 +1188,7 @@ proc output-directive {line} { {expr:MATH FUNCTIONS} - {history:DESCRIPTION} - {history:HISTORY REVISION} - + {re_syntax:BRACKET EXPRESSIONS} - {switch:DESCRIPTION} - {upvar:DESCRIPTION} { return; # fix.me -- cgit v0.12 From 29ccf114a131de1aa8e8e29d880ded5b929c4a6c Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 12 Apr 2006 15:20:16 +0000 Subject: * changes: updates for another RC. --- ChangeLog | 8 ++++++-- changes | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3822691..9824064 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-04-12 Don Porter + + *** 8.4.13 TAGGED FOR RELEASE *** + + * changes: updates for another RC. + 2006-04-11 Don Porter * generic/tclCmdMZ.c: Stop some interference between enter traces @@ -5,8 +11,6 @@ 2006-04-10 Don Porter - *** 8.4.13 TAGGED FOR RELEASE *** - * changes: updates for another RC. 2006-04-06 Jeff Hobbs diff --git a/changes b/changes index 0c905a0..c97d59c 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.39 2006/04/10 17:34:26 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.40 2006/04/12 15:20:16 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6366,4 +6366,6 @@ buffers at end of file (kraft,kupries) 2006-04-06 (bug fix)[1457515] TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING removed (steffen) ---- Released 8.4.13, April 14, 2006 --- See ChangeLog for details --- +2006-04-11 (bug fix)[1458266] enter/enterstep trace interference (leunissen) + +--- Released 8.4.13, April 19, 2006 --- See ChangeLog for details --- -- cgit v0.12 From 1b572d3904ba2a6e52219627f7e2f6c1c1486552 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 13 Apr 2006 21:16:54 +0000 Subject: typo --- changes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changes b/changes index c97d59c..36ce08b 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.40 2006/04/12 15:20:16 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.41 2006/04/13 21:16:54 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6323,7 +6323,7 @@ Restores Tcl 8.4.9 behavior (porter) --- Released 8.4.12, December 3, 2005 --- See ChangeLog for details --- -2005-12-09 (bug fix)[137478] [lsearch -start $pastEnd] => -1 (fellows) +2005-12-09 (bug fix)[1374778] [lsearch -start $pastEnd] => -1 (fellows) 2005-12-12 (bug fix)[1241572] correct [expr abs($LONG_MIN)] again (max) -- cgit v0.12 From b7704f4643daab2ba9d0a5a4aa3b904720ded05a Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 4 May 2006 12:34:37 +0000 Subject: * generic/tclExecute.c (ExprSrandFunc): Restore acceptance of wide * tests/expr-old.test: integer values by srand() [Bug 1480509]. --- ChangeLog | 7 ++++++- generic/tclExecute.c | 22 +++++++++++----------- tests/expr-old.test | 4 ++-- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9824064..67d49bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-05-04 Don Porter + + * generic/tclExecute.c (ExprSrandFunc): Restore acceptance of wide + * tests/expr-old.test: integer values by srand() [Bug 1480509]. + 2006-04-12 Don Porter *** 8.4.13 TAGGED FOR RELEASE *** @@ -1365,7 +1370,7 @@ * generic/tclUtil.c (TclGetIntForIndex): intreps of numeric types with simpler calls of Tcl_GetIntFromObj and Tcl_GetLongFromObj, now that those routines are better behaved wrt shimmering. - [Patch 1177219] + [Patch 1177129] 2005-03-29 Jeff Hobbs diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 34e4ec1..4717ae2 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.18 2005/12/12 11:28:22 rmax Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.19 2006/05/04 12:34:38 dgp Exp $ */ #include "tclInt.h" @@ -5578,17 +5578,17 @@ ExprSrandFunc(interp, eePtr, clientData) } if (Tcl_GetLongFromObj(NULL, valuePtr, &i) != TCL_OK) { - /* - * At this point, the only other possible type is double - */ - Tcl_ResetResult(interp); - Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), - "can't use floating-point value as argument to srand", - (char *) NULL); + Tcl_WideInt w; + + if (Tcl_GetWideIntFromObj(interp, valuePtr, &w) != TCL_OK) { badValue: - TclDecrRefCount(valuePtr); - DECACHE_STACK_INFO(); - return TCL_ERROR; + Tcl_AddErrorInfo(interp, "\n (argument to \"srand()\")"); + TclDecrRefCount(valuePtr); + DECACHE_STACK_INFO(); + return TCL_ERROR; + } + + i = Tcl_WideAsLong(w); } /* diff --git a/tests/expr-old.test b/tests/expr-old.test index 684ec01..85e346a 100644 --- a/tests/expr-old.test +++ b/tests/expr-old.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr-old.test,v 1.16.2.4 2005/11/01 16:18:16 dgp Exp $ +# RCS: @(#) $Id: expr-old.test,v 1.16.2.5 2006/05/04 12:34:39 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -811,7 +811,7 @@ test expr-old-32.47 {math functions in expressions} { } {1 {too few arguments for math function}} test expr-old-32.48 {math functions in expressions} { list [catch {expr srand(3.79)} msg] $msg -} {1 {can't use floating-point value as argument to srand}} +} {1 {expected integer but got "3.79"}} test expr-old-32.49 {math functions in expressions} { list [catch {expr srand("")} msg] $msg } {1 {argument to math function didn't have numeric value}} -- cgit v0.12 From 95abd51fd7b5108b75ff09404f65795308746f50 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 4 May 2006 13:09:14 +0000 Subject: * README: Bump version number to 8.4.14 * generic/tcl.h: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf-2.13 * win/configure: --- ChangeLog | 11 +++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 27 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 67d49bd..3f74546 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2006-05-04 Don Porter + * README: Bump version number to 8.4.14 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf-2.13 + * win/configure: + * generic/tclExecute.c (ExprSrandFunc): Restore acceptance of wide * tests/expr-old.test: integer values by srand() [Bug 1480509]. diff --git a/README b/README index 53873bc..7d13d81 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.13 source distribution. + This is the Tcl 8.4.14 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.16 2006/03/07 05:30:23 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.17 2006/05/04 13:09:16 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index c0dae74..50a2fa3 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.22 2006/03/07 05:30:24 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.23 2006/05/04 13:09:16 dgp Exp $ */ #ifndef _TCL @@ -59,10 +59,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 13 +#define TCL_RELEASE_SERIAL 14 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.13" +#define TCL_PATCH_LEVEL "8.4.14" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index c0b09f7..df68815 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.13 + Disk Label=tcl8.4.14 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index ee8035e..24f4c0e 100755 --- a/unix/configure +++ b/unix/configure @@ -554,7 +554,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".13" +TCL_PATCH_LEVEL=".14" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index f4caa29..13bc03e 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.26 2006/03/13 20:41:56 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.27 2006/05/04 13:09:19 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".13" +TCL_PATCH_LEVEL=".14" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index dce5301..ef7b5cd 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.13 2006/03/07 05:30:29 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.14 2006/05/04 13:09:19 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.13 +%define version 8.4.14 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index fccb7c5..145e6af 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.13 2006/03/07 05:30:30 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.14 2006/05/04 13:09:19 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.13 for +This directory contains the binary distribution of Tcl/Tk 8.4.14 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index cd4e32e..e2c2924 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".13" +TCL_PATCH_LEVEL=".14" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 51f1b5b..31b9532 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.17 2006/04/05 20:50:46 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.18 2006/05/04 13:09:19 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".13" +TCL_PATCH_LEVEL=".14" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 0a70b2484a2941f3b3eb30e8bd929525b231cc16 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 5 May 2006 18:08:57 +0000 Subject: * generic/tclMain.c (Tcl_Main): Corrected flaw that required * tests/main.test: (Tcl_Main-4.5): processing of one interactive command before passing control to the loop routine registered with Tcl_SetMainLoop() [Bug 1481986]. --- ChangeLog | 7 +++ generic/tclMain.c | 134 +++++++++++++++++++++++++++--------------------------- tests/main.test | 23 +++++++++- 3 files changed, 96 insertions(+), 68 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3f74546..d5c397f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-05-05 Don Porter + + * generic/tclMain.c (Tcl_Main): Corrected flaw that required + * tests/main.test: (Tcl_Main-4.5): processing of one interactive + command before passing control to the loop routine registered with + Tcl_SetMainLoop() [Bug 1481986]. + 2006-05-04 Don Porter * README: Bump version number to 8.4.14 diff --git a/generic/tclMain.c b/generic/tclMain.c index 2847bd8..937d2aa 100644 --- a/generic/tclMain.c +++ b/generic/tclMain.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMain.c,v 1.20.2.2 2005/10/23 22:01:30 msofer Exp $ + * RCS: @(#) $Id: tclMain.c,v 1.20.2.3 2006/05/05 18:08:58 dgp Exp $ */ #include "tcl.h" @@ -335,84 +335,84 @@ Tcl_Main(argc, argv, appInitProc) inChannel = Tcl_GetStdChannel(TCL_STDIN); outChannel = Tcl_GetStdChannel(TCL_STDOUT); while ((inChannel != (Tcl_Channel) NULL) && !Tcl_InterpDeleted(interp)) { - if (tty) { - Prompt(interp, &prompt); - if (Tcl_InterpDeleted(interp)) { - break; + if (mainLoopProc == NULL) { + if (tty) { + Prompt(interp, &prompt); + if (Tcl_InterpDeleted(interp)) { + break; + } + inChannel = Tcl_GetStdChannel(TCL_STDIN); + if (inChannel == (Tcl_Channel) NULL) { + break; + } } - inChannel = Tcl_GetStdChannel(TCL_STDIN); - if (inChannel == (Tcl_Channel) NULL) { - break; + if (Tcl_IsShared(commandPtr)) { + Tcl_DecrRefCount(commandPtr); + commandPtr = Tcl_DuplicateObj(commandPtr); + Tcl_IncrRefCount(commandPtr); } - } - if (Tcl_IsShared(commandPtr)) { - Tcl_DecrRefCount(commandPtr); - commandPtr = Tcl_DuplicateObj(commandPtr); - Tcl_IncrRefCount(commandPtr); - } - length = Tcl_GetsObj(inChannel, commandPtr); - if (length < 0) { - if (Tcl_InputBlocked(inChannel)) { + length = Tcl_GetsObj(inChannel, commandPtr); + if (length < 0) { + if (Tcl_InputBlocked(inChannel)) { + + /* + * This can only happen if stdin has been set to + * non-blocking. In that case cycle back and try + * again. This sets up a tight polling loop (since + * we have no event loop running). If this causes + * bad CPU hogging, we might try toggling the blocking + * on stdin instead. + */ + + continue; + } - /* - * This can only happen if stdin has been set to - * non-blocking. In that case cycle back and try - * again. This sets up a tight polling loop (since - * we have no event loop running). If this causes - * bad CPU hogging, we might try toggling the blocking - * on stdin instead. + /* + * Either EOF, or an error on stdin; we're done */ - continue; + break; } - /* - * Either EOF, or an error on stdin; we're done - */ - - break; - } + /* + * Add the newline removed by Tcl_GetsObj back to the string. + */ - /* - * Add the newline removed by Tcl_GetsObj back to the string. - */ + if (Tcl_IsShared(commandPtr)) { + Tcl_DecrRefCount(commandPtr); + commandPtr = Tcl_DuplicateObj(commandPtr); + Tcl_IncrRefCount(commandPtr); + } + Tcl_AppendToObj(commandPtr, "\n", 1); + if (!TclObjCommandComplete(commandPtr)) { + prompt = PROMPT_CONTINUE; + continue; + } - if (Tcl_IsShared(commandPtr)) { + prompt = PROMPT_START; + code = Tcl_RecordAndEvalObj(interp, commandPtr, TCL_EVAL_GLOBAL); + inChannel = Tcl_GetStdChannel(TCL_STDIN); + outChannel = Tcl_GetStdChannel(TCL_STDOUT); + errChannel = Tcl_GetStdChannel(TCL_STDERR); Tcl_DecrRefCount(commandPtr); - commandPtr = Tcl_DuplicateObj(commandPtr); + commandPtr = Tcl_NewObj(); Tcl_IncrRefCount(commandPtr); - } - Tcl_AppendToObj(commandPtr, "\n", 1); - if (!TclObjCommandComplete(commandPtr)) { - prompt = PROMPT_CONTINUE; - continue; - } - - prompt = PROMPT_START; - code = Tcl_RecordAndEvalObj(interp, commandPtr, TCL_EVAL_GLOBAL); - inChannel = Tcl_GetStdChannel(TCL_STDIN); - outChannel = Tcl_GetStdChannel(TCL_STDOUT); - errChannel = Tcl_GetStdChannel(TCL_STDERR); - Tcl_DecrRefCount(commandPtr); - commandPtr = Tcl_NewObj(); - Tcl_IncrRefCount(commandPtr); - if (code != TCL_OK) { - if (errChannel) { - Tcl_WriteObj(errChannel, Tcl_GetObjResult(interp)); - Tcl_WriteChars(errChannel, "\n", 1); - } - } else if (tty) { - resultPtr = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(resultPtr); - Tcl_GetStringFromObj(resultPtr, &length); - if ((length > 0) && outChannel) { - Tcl_WriteObj(outChannel, resultPtr); - Tcl_WriteChars(outChannel, "\n", 1); + if (code != TCL_OK) { + if (errChannel) { + Tcl_WriteObj(errChannel, Tcl_GetObjResult(interp)); + Tcl_WriteChars(errChannel, "\n", 1); + } + } else if (tty) { + resultPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(resultPtr); + Tcl_GetStringFromObj(resultPtr, &length); + if ((length > 0) && outChannel) { + Tcl_WriteObj(outChannel, resultPtr); + Tcl_WriteChars(outChannel, "\n", 1); + } + Tcl_DecrRefCount(resultPtr); } - Tcl_DecrRefCount(resultPtr); - } - if (mainLoopProc != NULL) { - + } else { /* (mainLoopProc != NULL) */ /* * If a main loop has been defined while running interactively, * we want to start a fileevent based prompt by establishing a diff --git a/tests/main.test b/tests/main.test index 26b40eb..4e91478 100644 --- a/tests/main.test +++ b/tests/main.test @@ -1,6 +1,6 @@ # This file contains a collection of tests for generic/tclMain.c. # -# RCS: @(#) $Id: main.test,v 1.13.2.2 2006/02/09 15:23:52 dgp Exp $ +# RCS: @(#) $Id: main.test,v 1.13.2.3 2006/05/05 18:08:58 dgp Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -499,6 +499,27 @@ namespace eval ::tcl::test::main { } -result "application-specific initialization failed:\ \nIn script\nExit MainLoop\nIn exit\neven 0\n" + test Tcl_Main-4.5 { + Tcl_Main: Bug 1481986 + } -constraints { + exec Tcltest + } -setup { + set rc [makeFile { + testsetmainloop + after 0 {puts "Event callback"} + } rc] + } -body { + set f [open "|[list [interpreter] -appinitprocsetrcfile $rc]" w+] + after 1000 + type $f {puts {Interactive output} + exit + } + read $f + } -cleanup { + catch {close $f} + removeFile rc + } -result "Event callback\nInteractive output\n" + # Tests Tcl_Main-5.*: interactive operations test Tcl_Main-5.1 { -- cgit v0.12 From 26603fe98b72353a826476c914038ca5c66cf9e1 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 13 May 2006 17:17:11 +0000 Subject: * generic/tclProc.c (ProcCompileProc): When a bump of the compile epoch forces the re-compile of a proc body, take care not to overwrite any Proc struct that may be referred to on the active call stack. This fixes [Bug 148218]. Note that the fix will not be effective for code that calls the private routine TclProcCompileProc() directly. --- ChangeLog | 9 ++++++ generic/tclProc.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 96 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index d5c397f..f4b5bac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-05-13 Don Porter + + * generic/tclProc.c (ProcCompileProc): When a bump of the compile + epoch forces the re-compile of a proc body, take care not to + overwrite any Proc struct that may be referred to on the active + call stack. This fixes [Bug 148218]. Note that the fix will not be + effective for code that calls the private routine TclProcCompileProc() + directly. + 2006-05-05 Don Porter * generic/tclMain.c (Tcl_Main): Corrected flaw that required diff --git a/generic/tclProc.c b/generic/tclProc.c index 2cb8be2..61653c9 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.3 2005/10/23 22:01:30 msofer Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.4 2006/05/13 17:17:11 dgp Exp $ */ #include "tclInt.h" @@ -25,6 +25,10 @@ static void ProcBodyFree _ANSI_ARGS_((Tcl_Obj *objPtr)); static int ProcBodySetFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); static void ProcBodyUpdateString _ANSI_ARGS_((Tcl_Obj *objPtr)); +static int ProcCompileProc _ANSI_ARGS_((Tcl_Interp *interp, + Proc *procPtr, Tcl_Obj *bodyPtr, Namespace *nsPtr, + CONST char *description, CONST char *procName, + Proc **procPtrPtr)); static int ProcessProcResultCode _ANSI_ARGS_((Tcl_Interp *interp, char *procName, int nameLen, int returnCode)); static int TclCompileNoOp _ANSI_ARGS_((Tcl_Interp *interp, @@ -902,7 +906,7 @@ TclObjInterpProc(clientData, interp, objc, objv) Tcl_Obj *CONST objv[]; /* Argument value objects. */ { Interp *iPtr = (Interp *) interp; - register Proc *procPtr = (Proc *) clientData; + Proc *procPtr = (Proc *) clientData; Namespace *nsPtr = procPtr->cmdPtr->nsPtr; CallFrame frame; register CallFrame *framePtr = &frame; @@ -935,8 +939,8 @@ TclObjInterpProc(clientData, interp, objc, objv) * while compiling. */ - result = TclProcCompileProc(interp, procPtr, procPtr->bodyPtr, nsPtr, - "body of proc", procName); + result = ProcCompileProc(interp, procPtr, procPtr->bodyPtr, nsPtr, + "body of proc", procName, &procPtr); if (result != TCL_OK) { return result; @@ -1153,11 +1157,31 @@ TclProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, procName) CONST char *description; /* string describing this body of code. */ CONST char *procName; /* Name of this procedure. */ { + return ProcCompileProc(interp, procPtr, bodyPtr, nsPtr, + description, procName, NULL); +} + +static int +ProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, + procName, procPtrPtr) + Tcl_Interp *interp; /* Interpreter containing procedure. */ + Proc *procPtr; /* Data associated with procedure. */ + Tcl_Obj *bodyPtr; /* Body of proc. (Usually procPtr->bodyPtr, + * but could be any code fragment compiled + * in the context of this procedure.) */ + Namespace *nsPtr; /* Namespace containing procedure. */ + CONST char *description; /* string describing this body of code. */ + CONST char *procName; /* Name of this procedure. */ + Proc **procPtrPtr; /* points to storage where a replacement + * (Proc *) value may be written, when + * appropriate */ +{ Interp *iPtr = (Interp*)interp; - int result; + int i, result; Tcl_CallFrame frame; Proc *saveProcPtr; ByteCode *codePtr = (ByteCode *) bodyPtr->internalRep.otherValuePtr; + CompiledLocal *localPtr; /* * If necessary, compile the procedure's body. The compiler will @@ -1223,8 +1247,65 @@ TclProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, procName) * proper namespace context, so that the byte codes are * compiled in the appropriate class context. */ - + saveProcPtr = iPtr->compiledProcPtr; + + if (procPtrPtr != NULL && procPtr->refCount > 1) { + Tcl_Command token; + Tcl_CmdInfo info; + Proc *new = (Proc *) ckalloc(sizeof(Proc)); + + new->iPtr = procPtr->iPtr; + new->refCount = 1; + token = (Tcl_Command) new->cmdPtr = procPtr->cmdPtr; + new->bodyPtr = Tcl_DuplicateObj(bodyPtr); + bodyPtr = new->bodyPtr; + Tcl_IncrRefCount(bodyPtr); + new->numArgs = procPtr->numArgs; + + new->numCompiledLocals = new->numArgs; + new->firstLocalPtr = NULL; + new->lastLocalPtr = NULL; + localPtr = procPtr->firstLocalPtr; + for (i = 0; i < new->numArgs; i++, localPtr = localPtr->nextPtr) { + CompiledLocal *copy = (CompiledLocal *) ckalloc((unsigned) + (sizeof(CompiledLocal) -sizeof(localPtr->name) + + localPtr->nameLength + 1)); + if (new->firstLocalPtr == NULL) { + new->firstLocalPtr = new->lastLocalPtr = copy; + } else { + new->lastLocalPtr->nextPtr = copy; + new->lastLocalPtr = copy; + } + copy->nextPtr = NULL; + copy->nameLength = localPtr->nameLength; + copy->frameIndex = localPtr->frameIndex; + copy->flags = localPtr->flags; + copy->defValuePtr = localPtr->defValuePtr; + if (copy->defValuePtr) { + Tcl_IncrRefCount(copy->defValuePtr); + } + copy->resolveInfo = localPtr->resolveInfo; + strcpy(copy->name, localPtr->name); + } + + + /* Reset the ClientData */ + Tcl_GetCommandInfoFromToken(token, &info); + if (info.objClientData == (ClientData) procPtr) { + info.objClientData = (ClientData) new; + } + if (info.clientData == (ClientData) procPtr) { + info.clientData = (ClientData) new; + } + if (info.deleteData == (ClientData) procPtr) { + info.deleteData = (ClientData) new; + } + Tcl_SetCommandInfoFromToken(token, &info); + + procPtr->refCount--; + *procPtrPtr = procPtr = new; + } iPtr->compiledProcPtr = procPtr; result = Tcl_PushCallFrame(interp, &frame, @@ -1263,7 +1344,6 @@ TclProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, procName) return result; } } else if (codePtr->nsEpoch != nsPtr->resolverEpoch) { - register CompiledLocal *localPtr; /* * The resolver epoch has changed, but we only need to invalidate -- cgit v0.12 From 6de03f6606a051f169d86acfa3eaace8d12dc2ce Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 13 May 2006 23:21:04 +0000 Subject: * generic/tclFileName.c (TclDoGlob): Disabled the partial normalization done by the recursive glob routine, since changing the precise string of the pathname broke [glob] on some Tcl_Filesystems. [Bug 943995] --- ChangeLog | 5 +++++ generic/tclFileName.c | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index f4b5bac..afef208 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2006-05-13 Don Porter + * generic/tclFileName.c (TclDoGlob): Disabled the partial + normalization done by the recursive glob routine, since changing the + precise string of the pathname broke [glob] on some Tcl_Filesystems. + [Bug 943995] + * generic/tclProc.c (ProcCompileProc): When a bump of the compile epoch forces the re-compile of a proc body, take care not to overwrite any Proc struct that may be referred to on the active diff --git a/generic/tclFileName.c b/generic/tclFileName.c index eb59182..0e6c35f 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.11 2005/06/21 19:07:41 kennykb Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.12 2006/05/13 23:21:04 dgp Exp $ */ #include "tclInt.h" @@ -2346,6 +2346,9 @@ TclDoGlob(interp, separators, headPtr, tail, types) } else if (strchr(separators, *tail) == NULL) { break; } + if (tclPlatform != TCL_PLATFORM_MAC) { + Tcl_DStringAppend(headPtr, tail, 1); + } count++; } @@ -2387,7 +2390,6 @@ TclDoGlob(interp, separators, headPtr, tail, types) * trailing slash if needed. Otherwise add the slash if * this is the first absolute element, or a later relative * element. Add an extra slash if this is a UNC path. - */ if (*name == ':') { Tcl_DStringAppend(headPtr, ":", 1); @@ -2403,13 +2405,13 @@ TclDoGlob(interp, separators, headPtr, tail, types) Tcl_DStringAppend(headPtr, "/", 1); } } + */ break; - case TCL_PLATFORM_UNIX: + case TCL_PLATFORM_UNIX: { /* * Add a separator if this is the first absolute element, or * a later relative element. - */ if ((*tail != '\0') && (((length > 0) @@ -2417,7 +2419,9 @@ TclDoGlob(interp, separators, headPtr, tail, types) || ((length == 0) && (count > 0)))) { Tcl_DStringAppend(headPtr, "/", 1); } + */ break; + } } /* -- cgit v0.12 From a079a2bceaef29f1cafa766ac53af37e59fdb305 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 15 May 2006 16:07:04 +0000 Subject: Silence compiler warning. --- generic/tclProc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/generic/tclProc.c b/generic/tclProc.c index 61653c9..aae5008 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.4 2006/05/13 17:17:11 dgp Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.5 2006/05/15 16:07:04 dgp Exp $ */ #include "tclInt.h" @@ -1257,7 +1257,8 @@ ProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, new->iPtr = procPtr->iPtr; new->refCount = 1; - token = (Tcl_Command) new->cmdPtr = procPtr->cmdPtr; + new->cmdPtr = procPtr->cmdPtr; + token = (Tcl_Command) new->cmdPtr; new->bodyPtr = Tcl_DuplicateObj(bodyPtr); bodyPtr = new->bodyPtr; Tcl_IncrRefCount(bodyPtr); -- cgit v0.12 From 04b7677ec76f85590ec47544c740fcdea7dec9c6 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 26 May 2006 19:19:21 +0000 Subject: sync 2006-05-24 change to tcl HEAD --- unix/tcl.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 24c17ea..923bf27 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -890,7 +890,7 @@ AC_DEFUN([SC_CONFIG_SYSTEM], [ # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - tcl_cv_sys_version=MP-RAS-`awk '{print $3}' /etc/.relid` + tcl_cv_sys_version=MP-RAS-`awk '{print [$]3}' /etc/.relid` fi if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` -- cgit v0.12 From e418082fbe2c98bfbe85fce60009909ce7b54f89 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 26 May 2006 19:20:07 +0000 Subject: autoconf-2.13 --- unix/configure | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/unix/configure b/unix/configure index 24f4c0e..5186d6c 100755 --- a/unix/configure +++ b/unix/configure @@ -2491,7 +2491,7 @@ else # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - tcl_cv_sys_version=MP-RAS-`awk '{print }' /etc/.relid` + tcl_cv_sys_version=MP-RAS-`awk '{print $3}' /etc/.relid` fi if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` @@ -7730,7 +7730,7 @@ else # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - tcl_cv_sys_version=MP-RAS-`awk '{print }' /etc/.relid` + tcl_cv_sys_version=MP-RAS-`awk '{print $3}' /etc/.relid` fi if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` -- cgit v0.12 From 320bb4b3448635298ea21beaba867aa0c7d5e84c Mon Sep 17 00:00:00 2001 From: das Date: Sat, 27 May 2006 05:23:03 +0000 Subject: * macosx/tclMacOSXNotify.c: implemented pthread_atfork() handler that * unix/tcl.m4 (Darwin): recreates CoreFoundation state and notifier thread in the child after a fork(). Note that pthread_atfork() is available starting with Tiger only. Because vfork() is used by the core on Darwin, [exec]/[open] are not affected by this fix, only extensions or embedders that call fork() directly (such as TclX). However, this only makes fork() safe from corefoundation tcl with --disable-threads; as on all platforms, forked children may deadlock in threaded tcl due to the potential for stale locked mutexes in the child. [Patch 923072] * unix/configure: autoconf-2.59 --- ChangeLog | 30 ++- macosx/tclMacOSXNotify.c | 115 ++++++++- unix/configure | 603 ++++++++++++++++++++++++++--------------------- unix/tcl.m4 | 77 +++--- 4 files changed, 504 insertions(+), 321 deletions(-) diff --git a/ChangeLog b/ChangeLog index afef208..cea8037 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2006-05-27 Daniel Steffen + + * macosx/tclMacOSXNotify.c: implemented pthread_atfork() handler that + * unix/tcl.m4 (Darwin): recreates CoreFoundation state and notifier + thread in the child after a fork(). Note that pthread_atfork() is + available starting with Tiger only. Because vfork() is used by the core + on Darwin, [exec]/[open] are not affected by this fix, only extensions + or embedders that call fork() directly (such as TclX). However, this + only makes fork() safe from corefoundation tcl with --disable-threads; + as on all platforms, forked children may deadlock in threaded tcl due to + the potential for stale locked mutexes in the child. [Patch 923072] + * unix/configure: autoconf-2.59 + +2006-05-24 Donal K. Fellows + + * unix/tcl.m4 (SC_CONFIG_SYSTEM): Fixed quoting of command script to + awk; it was a rarely used branch, but it was wrong. [Bug 1494160] + 2006-05-13 Don Porter * generic/tclFileName.c (TclDoGlob): Disabled the partial @@ -5,12 +23,12 @@ precise string of the pathname broke [glob] on some Tcl_Filesystems. [Bug 943995] - * generic/tclProc.c (ProcCompileProc): When a bump of the compile - epoch forces the re-compile of a proc body, take care not to - overwrite any Proc struct that may be referred to on the active - call stack. This fixes [Bug 148218]. Note that the fix will not be - effective for code that calls the private routine TclProcCompileProc() - directly. + * generic/tclProc.c (ProcCompileProc): When a bump of the compile + epoch forces the re-compile of a proc body, take care not to + overwrite any Proc struct that may be referred to on the active + call stack. This fixes [Bug 148218]. Note that the fix will not be + effective for code that calls the private routine TclProcCompileProc() + directly. 2006-05-05 Don Porter diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index cd09ccf..bdda1ce 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -8,12 +8,12 @@ * Copyright (c) 1995-1997 Sun Microsystems, Inc. * Copyright 2001, Apple Computer, Inc. * Copyright (c) 2005 Tcl Core Team. - * Copyright (c) 2005 Daniel A. Steffen + * Copyright (c) 2005-2006 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.5 2005/11/27 02:34:41 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.6 2006/05/27 05:23:04 das Exp $ */ #include "tclInt.h" @@ -217,6 +217,13 @@ static pthread_t notifierThread; static void NotifierThreadProc(ClientData clientData); static int FileHandlerEventProc(Tcl_Event *evPtr, int flags); + +#ifdef HAVE_PTHREAD_ATFORK +static int atForkInit = 0; +static void AtForkPrepare(void); +static void AtForkParent(void); +static void AtForkChild(void); +#endif /* *---------------------------------------------------------------------- @@ -226,7 +233,7 @@ static int FileHandlerEventProc(Tcl_Event *evPtr, int flags); * Initializes the platform specific notifier state. * * Results: - * Returns a handle to the notifier state for this thread.. + * Returns a handle to the notifier state for this thread. * * Side effects: * None. @@ -266,6 +273,20 @@ Tcl_InitNotifier(void) */ LOCK_NOTIFIER_INIT; +#ifdef HAVE_PTHREAD_ATFORK + /* + * Install pthread_atfork handlers to reinstall the notifier thread in the + * child of a fork. + */ + + if (!atForkInit) { + int result = pthread_atfork(AtForkPrepare, AtForkParent, AtForkChild); + if (result) { + Tcl_Panic("Tcl_InitNotifier: pthread_atfork failed"); + } + atForkInit = 1; + } +#endif if (notifierCount == 0) { int fds[2], status, result; pthread_attr_t attr; @@ -1038,4 +1059,92 @@ NotifierThreadProc(clientData) } pthread_exit (0); } + +#ifdef HAVE_PTHREAD_ATFORK +/* + *---------------------------------------------------------------------- + * + * AtForkPrepare -- + * + * Lock the notifier in preparation for a fork. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +AtForkPrepare(void) +{ + LOCK_NOTIFIER_INIT; + LOCK_NOTIFIER; +} + +/* + *---------------------------------------------------------------------- + * + * AtForkParent -- + * + * Unlock the notifier in the parent after a fork. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +AtForkParent(void) +{ + UNLOCK_NOTIFIER; + UNLOCK_NOTIFIER_INIT; +} + +/* + *---------------------------------------------------------------------- + * + * AtForkChild -- + * + * Unlock and reinstall the notifier in the child after a fork. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +AtForkChild(void) +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + UNLOCK_NOTIFIER; + UNLOCK_NOTIFIER_INIT; + if (tsdPtr->runLoop) { + tsdPtr->runLoop = NULL; + CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); + CFRelease(tsdPtr->runLoopSource); + tsdPtr->runLoopSource = NULL; + } + if (notifierCount > 0) { + notifierCount = 0; + /* Note that Tcl_FinalizeNotifier does not use its clientData + * parameter, so discard return value of Tcl_InitNotifier here and + * leave stale clientData in tclNotify.c's ThreadSpecificData. + */ + Tcl_InitNotifier(); + } +} +#endif /* HAVE_PTHREAD_ATFORK */ + #endif /* HAVE_COREFOUNDATION */ diff --git a/unix/configure b/unix/configure index 5186d6c..abb3353 100755 --- a/unix/configure +++ b/unix/configure @@ -3411,8 +3411,8 @@ echo "$ac_t""$tcl_cv_ld_elf" 1>&6 CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" if test $do64bit = yes; then - do64bit_ok=yes - CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + do64bit_ok=yes + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 @@ -3421,9 +3421,9 @@ if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - hold_ldflags=$LDFLAGS - LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" - cat > conftest.$ac_ext < conftest.$ac_ext <&6 if test $tcl_cv_ld_single_module = yes; then - SHLIB_LD="${SHLIB_LD} -Wl,-single_module" + SHLIB_LD="${SHLIB_LD} -Wl,-single_module" fi SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dylib" @@ -3463,9 +3463,9 @@ if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - hold_ldflags=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - cat > conftest.$ac_ext < conftest.$ac_ext <&6 if test $tcl_cv_ld_search_paths_first = yes; then - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) - echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 + echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 echo "configure:3500: checking whether to use CoreFoundation" >&5 - # Check whether --enable-corefoundation or --disable-corefoundation was given. + # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" tcl_corefoundation=$enableval @@ -3505,23 +3505,23 @@ else tcl_corefoundation=yes fi - echo "$ac_t""$tcl_corefoundation" 1>&6 - if test $tcl_corefoundation = yes; then - echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 + echo "$ac_t""$tcl_corefoundation" 1>&6 + if test $tcl_corefoundation = yes; then + echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 echo "configure:3512: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - hold_libs=$LIBS; hold_cflags=$CFLAGS - if test $do64bit_ok = no ; then - # remove -arch ppc64 from CFLAGS while testing presence - # of CF, otherwise all archs will have CF disabled. - # CF for ppc64 is disabled in tclUnixPort.h instead. - CFLAGS="`echo "$CFLAGS" | sed -e 's/-arch ppc64/-arch ppc/'`" - fi - LIBS="$LIBS -framework CoreFoundation" - cat > conftest.$ac_ext < conftest.$ac_ext < @@ -3539,33 +3539,31 @@ else tcl_cv_lib_corefoundation=no fi rm -f conftest* - LIBS=$hold_libs; CFLAGS=$hold_cflags + LIBS=$hold_libs; CFLAGS=$hold_cflags fi echo "$ac_t""$tcl_cv_lib_corefoundation" 1>&6 - if test $tcl_cv_lib_corefoundation = yes; then - LIBS="$LIBS -framework CoreFoundation" - cat >> confdefs.h <<\EOF + if test $tcl_cv_lib_corefoundation = yes; then + LIBS="$LIBS -framework CoreFoundation" + cat >> confdefs.h <<\EOF #define HAVE_COREFOUNDATION 1 EOF - fi - fi - for ac_hdr in libkern/OSAtomic.h + for ac_hdr in libkern/OSAtomic.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3559: checking for $ac_hdr" >&5 +echo "configure:3557: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3591,15 +3589,15 @@ else fi done - for ac_func in OSSpinLockLock + for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3598: checking for $ac_func" >&5 +echo "configure:3596: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3646,21 +3644,78 @@ else fi done + for ac_func in pthread_atfork +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:3651: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:3679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + fi + fi for ac_hdr in copyfile.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3654: checking for $ac_hdr" >&5 +echo "configure:3709: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3664: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3689,12 +3744,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3693: checking for $ac_func" >&5 +echo "configure:3748: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3760,12 +3815,12 @@ EOF # prior to Darwin 7, realpath is not threadsafe, so don't # use it when threads are enabled, c.f. bug # 711232: echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3764: checking for realpath" >&5 +echo "configure:3819: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -3808,8 +3863,8 @@ else fi if test $ac_cv_func_realpath = yes -a "${TCL_THREADS}" = 1 \ - -a `uname -r | awk -F. '{print $1}'` -lt 7 ; then - ac_cv_func_realpath=no + -a `uname -r | awk -F. '{print $1}'` -lt 7 ; then + ac_cv_func_realpath=no fi ;; NEXTSTEP-*) @@ -4098,7 +4153,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4102: checking for ld accepts -Bexport flag" >&5 +echo "configure:4157: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4106,14 +4161,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4160,13 +4215,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4164: checking sys/exec.h" >&5 +echo "configure:4219: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4184,7 +4239,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4188: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4204,13 +4259,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4208: checking a.out.h" >&5 +echo "configure:4263: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4228,7 +4283,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4287: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4248,13 +4303,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4252: checking sys/exec_aout.h" >&5 +echo "configure:4307: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4272,7 +4327,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4276: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4425,7 +4480,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4429: checking for build with symbols" >&5 +echo "configure:4484: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4486,21 +4541,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4490: checking for required early compiler flags" >&5 +echo "configure:4545: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4508,7 +4563,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4516,7 +4571,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4543,14 +4598,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4558,7 +4613,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4566,7 +4621,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4593,14 +4648,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4608,7 +4663,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4616,7 +4671,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4647,7 +4702,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4651: checking for 64-bit integer type" >&5 +echo "configure:4706: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4655,14 +4710,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4721: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4676,7 +4731,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4744: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4710,13 +4765,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4714: checking for struct dirent64" >&5 +echo "configure:4769: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4724,7 +4779,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4745,13 +4800,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4749: checking for struct stat64" >&5 +echo "configure:4804: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4759,7 +4814,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4782,12 +4837,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4786: checking for $ac_func" >&5 +echo "configure:4841: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4835,13 +4890,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4839: checking for off64_t" >&5 +echo "configure:4894: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4849,7 +4904,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4881,14 +4936,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4885: checking whether byte ordering is bigendian" >&5 +echo "configure:4940: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4899,11 +4954,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4958: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4914,7 +4969,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4934,7 +4989,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4980,12 +5035,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4984: checking for $ac_func" >&5 +echo "configure:5039: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5042,12 +5097,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5046: checking for $ac_func" >&5 +echo "configure:5101: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5097,12 +5152,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5101: checking for strerror" >&5 +echo "configure:5156: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5149,12 +5204,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5153: checking for getwd" >&5 +echo "configure:5208: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5201,12 +5256,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5205: checking for wait3" >&5 +echo "configure:5260: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5253,12 +5308,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5257: checking for uname" >&5 +echo "configure:5312: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5305,12 +5360,12 @@ EOF fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5309: checking for realpath" >&5 +echo "configure:5364: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5368,17 +5423,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5372: checking for $ac_hdr" >&5 +echo "configure:5427: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5382: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5437: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5405,7 +5460,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5409: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5464: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5414,7 +5469,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5429,7 +5484,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5446,7 +5501,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5460,7 +5515,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5478,7 +5533,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5493,7 +5548,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5511,7 +5566,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5528,7 +5583,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5546,7 +5601,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5562,7 +5617,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5580,7 +5635,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5597,7 +5652,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5640,19 +5695,19 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5644: checking for fd_set in sys/types" >&5 +echo "configure:5699: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5668,12 +5723,12 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5672: checking for fd_mask in sys/select" >&5 +echo "configure:5727: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5710,12 +5765,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5714: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5769: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5723,7 +5778,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5748,17 +5803,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5752: checking for $ac_hdr" >&5 +echo "configure:5807: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5762: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5817: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5785,12 +5840,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5789: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5844: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5799,7 +5854,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5820,12 +5875,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5824: checking for tm_zone in struct tm" >&5 +echo "configure:5879: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5833,7 +5888,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5892: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5853,12 +5908,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5857: checking for tzname" >&5 +echo "configure:5912: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5868,7 +5923,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5893,12 +5948,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5897: checking for $ac_func" >&5 +echo "configure:5952: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5947,19 +6002,19 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5951: checking tm_tzadj in struct tm" >&5 +echo "configure:6006: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5980,19 +6035,19 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5984: checking tm_gmtoff in struct tm" >&5 +echo "configure:6039: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6017,12 +6072,12 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6021: checking long timezone variable" >&5 +echo "configure:6076: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6031,7 +6086,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6035: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6054,12 +6109,12 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6058: checking time_t timezone variable" >&5 +echo "configure:6113: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6068,7 +6123,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6127: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6095,12 +6150,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6099: checking for st_blksize in struct stat" >&5 +echo "configure:6154: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6108,7 +6163,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6112: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6167: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6129,12 +6184,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6133: checking for fstatfs" >&5 +echo "configure:6188: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6186,7 +6241,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6190: checking for 8-bit clean memcmp" >&5 +echo "configure:6245: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6194,7 +6249,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6228,12 +6283,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6232: checking for memmove" >&5 +echo "configure:6287: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6289,7 +6344,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6293: checking proper strstr implementation" >&5 +echo "configure:6348: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6298,7 +6353,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -6334,12 +6389,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6338: checking for strtoul" >&5 +echo "configure:6393: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6384,7 +6439,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:6388: checking proper strtoul implementation" >&5 +echo "configure:6443: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6393,7 +6448,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -6438,12 +6493,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6442: checking for strtod" >&5 +echo "configure:6497: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6488,7 +6543,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:6492: checking proper strtod implementation" >&5 +echo "configure:6547: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6497,7 +6552,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -6545,12 +6600,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6549: checking for strtod" >&5 +echo "configure:6604: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6595,7 +6650,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6599: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6654: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6604,7 +6659,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -6658,12 +6713,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6662: checking for ANSI C header files" >&5 +echo "configure:6717: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6671,7 +6726,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6675: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6688,7 +6743,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6706,7 +6761,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6727,7 +6782,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6738,7 +6793,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6762,12 +6817,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6766: checking for mode_t" >&5 +echo "configure:6821: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6795,12 +6850,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6799: checking for pid_t" >&5 +echo "configure:6854: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6828,12 +6883,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6832: checking for size_t" >&5 +echo "configure:6887: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6861,12 +6916,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6865: checking for uid_t in sys/types.h" >&5 +echo "configure:6920: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6896,12 +6951,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6900: checking for socklen_t" >&5 +echo "configure:6955: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6940,12 +6995,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6944: checking for opendir" >&5 +echo "configure:6999: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7001,12 +7056,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7005: checking union wait" >&5 +echo "configure:7060: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7018,7 +7073,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7045,12 +7100,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7049: checking for strncasecmp" >&5 +echo "configure:7104: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7095,7 +7150,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7099: checking for strncasecmp in -lsocket" >&5 +echo "configure:7154: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7103,7 +7158,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7138,7 +7193,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7142: checking for strncasecmp in -linet" >&5 +echo "configure:7197: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7146,7 +7201,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7195,12 +7250,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7199: checking for BSDgettimeofday" >&5 +echo "configure:7254: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7245,12 +7300,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7249: checking for gettimeofday" >&5 +echo "configure:7304: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7300,12 +7355,12 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7304: checking for gettimeofday declaration" >&5 +echo "configure:7359: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7336,14 +7391,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7340: checking whether char is unsigned" >&5 +echo "configure:7395: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7399,12 +7454,12 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7403: checking signed char declarations" >&5 +echo "configure:7458: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7439,7 +7494,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7443: checking for a putenv() that copies the buffer" >&5 +echo "configure:7498: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7447,7 +7502,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7469,7 +7524,7 @@ else } EOF -if { (eval echo configure:7473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7510,17 +7565,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7514: checking for langinfo.h" >&5 +echo "configure:7569: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7524: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7579: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7544,20 +7599,20 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7548: checking whether to use nl_langinfo" >&5 +echo "configure:7603: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -7586,13 +7641,13 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:7590: checking for fts" >&5 +echo "configure:7645: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7603,7 +7658,7 @@ char*const p[2] = {"/", NULL}; FTSENT *e = fts_read(f); fts_close(f); ; return 0; } EOF -if { (eval echo configure:7607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -7635,17 +7690,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7639: checking for $ac_hdr" >&5 +echo "configure:7694: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7649: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7675,17 +7730,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7679: checking for $ac_hdr" >&5 +echo "configure:7734: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7713,7 +7768,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:7717: checking system version" >&5 +echo "configure:7772: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7744,7 +7799,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7748: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7803: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -7806,7 +7861,7 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7810: checking how to package libraries" >&5 +echo "configure:7865: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 923bf27..57b053e 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1548,17 +1548,17 @@ dnl AC_CHECK_TOOL(AR, ar) CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" if test $do64bit = yes; then - do64bit_ok=yes - CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + do64bit_ok=yes + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [ - hold_ldflags=$LDFLAGS - LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" - AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no) - LDFLAGS=$hold_ldflags]) + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" + AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no) + LDFLAGS=$hold_ldflags]) if test $tcl_cv_ld_single_module = yes; then - SHLIB_LD="${SHLIB_LD} -Wl,-single_module" + SHLIB_LD="${SHLIB_LD} -Wl,-single_module" fi SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".dylib" @@ -1570,43 +1570,44 @@ dnl AC_CHECK_TOOL(AR, ar) LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [ - hold_ldflags=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no) - LDFLAGS=$hold_ldflags]) + hold_ldflags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no) + LDFLAGS=$hold_ldflags]) if test $tcl_cv_ld_search_paths_first = yes; then - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) - AC_MSG_CHECKING([whether to use CoreFoundation]) - AC_ARG_ENABLE(corefoundation, [ --enable-corefoundation use CoreFoundation API [--enable-corefoundation]], - [tcl_corefoundation=$enableval], [tcl_corefoundation=yes]) - AC_MSG_RESULT([$tcl_corefoundation]) - if test $tcl_corefoundation = yes; then - AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [ - hold_libs=$LIBS; hold_cflags=$CFLAGS - if test $do64bit_ok = no ; then - # remove -arch ppc64 from CFLAGS while testing presence - # of CF, otherwise all archs will have CF disabled. - # CF for ppc64 is disabled in tclUnixPort.h instead. - CFLAGS="`echo "$CFLAGS" | sed -e 's/-arch ppc64/-arch ppc/'`" - fi - LIBS="$LIBS -framework CoreFoundation" - AC_TRY_LINK([#include ], - [CFBundleRef b = CFBundleGetMainBundle();], - tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no) - LIBS=$hold_libs; CFLAGS=$hold_cflags]) - if test $tcl_cv_lib_corefoundation = yes; then - LIBS="$LIBS -framework CoreFoundation" - AC_DEFINE(HAVE_COREFOUNDATION) - fi + AC_MSG_CHECKING([whether to use CoreFoundation]) + AC_ARG_ENABLE(corefoundation, [ --enable-corefoundation use CoreFoundation API [--enable-corefoundation]], + [tcl_corefoundation=$enableval], [tcl_corefoundation=yes]) + AC_MSG_RESULT([$tcl_corefoundation]) + if test $tcl_corefoundation = yes; then + AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [ + hold_libs=$LIBS; hold_cflags=$CFLAGS + if test $do64bit_ok = no ; then + # remove -arch ppc64 from CFLAGS while testing presence + # of CF, otherwise all archs will have CF disabled. + # CF for ppc64 is disabled in tclUnixPort.h instead. + CFLAGS="`echo "$CFLAGS" | sed -e 's/-arch ppc64/-arch ppc/'`" + fi + LIBS="$LIBS -framework CoreFoundation" + AC_TRY_LINK([#include ], + [CFBundleRef b = CFBundleGetMainBundle();], + tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no) + LIBS=$hold_libs; CFLAGS=$hold_cflags]) + if test $tcl_cv_lib_corefoundation = yes; then + LIBS="$LIBS -framework CoreFoundation" + AC_DEFINE(HAVE_COREFOUNDATION) + AC_CHECK_HEADERS(libkern/OSAtomic.h) + AC_CHECK_FUNCS(OSSpinLockLock) + AC_CHECK_FUNCS(pthread_atfork) + fi fi - AC_CHECK_HEADERS(libkern/OSAtomic.h) - AC_CHECK_FUNCS(OSSpinLockLock) AC_CHECK_HEADERS(copyfile.h) AC_CHECK_FUNCS(copyfile) AC_DEFINE(MAC_OSX_TCL) @@ -1617,8 +1618,8 @@ dnl AC_CHECK_TOOL(AR, ar) # use it when threads are enabled, c.f. bug # 711232: AC_CHECK_FUNC(realpath) if test $ac_cv_func_realpath = yes -a "${TCL_THREADS}" = 1 \ - -a `uname -r | awk -F. '{print [$]1}'` -lt 7 ; then - ac_cv_func_realpath=no + -a `uname -r | awk -F. '{print [$]1}'` -lt 7 ; then + ac_cv_func_realpath=no fi ;; NEXTSTEP-*) -- cgit v0.12 From aec2cb8f476764482a9061ea514f32ae532651a3 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 30 May 2006 00:29:37 +0000 Subject: * generic/tcl.h (Tcl_DecrRefCount): use if/else construct to allow placement in unbraced outer if/else conditions. (jcw) --- ChangeLog | 5 +++++ generic/tcl.h | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index cea8037..e78d7f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-05-29 Jeff Hobbs + + * generic/tcl.h (Tcl_DecrRefCount): use if/else construct to allow + placement in unbraced outer if/else conditions. (jcw) + 2006-05-27 Daniel Steffen * macosx/tclMacOSXNotify.c: implemented pthread_atfork() handler that diff --git a/generic/tcl.h b/generic/tcl.h index 50a2fa3..5d7f192 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.23 2006/05/04 13:09:16 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.24 2006/05/30 00:29:38 hobbs Exp $ */ #ifndef _TCL @@ -824,8 +824,11 @@ int Tcl_IsShared _ANSI_ARGS_((Tcl_Obj *objPtr)); #else # define Tcl_IncrRefCount(objPtr) \ ++(objPtr)->refCount + /* + * Use empty if ; else to handle use in unbraced outer if/else conditions + */ # define Tcl_DecrRefCount(objPtr) \ - if (--(objPtr)->refCount <= 0) TclFreeObj(objPtr) + if (--(objPtr)->refCount > 0) ; else TclFreeObj(objPtr) # define Tcl_IsShared(objPtr) \ ((objPtr)->refCount > 1) #endif -- cgit v0.12 From a6b26fc718d2d7390dc34b3a580e1726e7211bff Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 31 May 2006 23:29:28 +0000 Subject: * generic/tclNamesp.c (NamespaceInscopeCmd): revert [Bug 1400572] fix of 2006-01-09 for [namespace inscope] as it seems to mess with itcl scope decoding. Leaving namespace-29.6 test failure until final cause it determined. --- ChangeLog | 7 +++++++ generic/tclNamesp.c | 8 +++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index e78d7f2..db9eb45 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-05-31 Jeff Hobbs + + * generic/tclNamesp.c (NamespaceInscopeCmd): revert [Bug 1400572] + fix of 2006-01-09 for [namespace inscope] as it seems to mess with + itcl scope decoding. Leaving namespace-29.6 test failure until + final cause it determined. + 2006-05-29 Jeff Hobbs * generic/tcl.h (Tcl_DecrRefCount): use if/else construct to allow diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 1d12831..9955e02 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.11 2006/01/09 18:34:17 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.12 2006/05/31 23:29:31 hobbs Exp $ */ #include "tclInt.h" @@ -3357,7 +3357,7 @@ NamespaceInscopeCmd(dummy, interp, objc, objv) Tcl_Obj *CONST objv[]; /* Argument objects. */ { Tcl_Namespace *namespacePtr; - CallFrame frame; + Tcl_CallFrame frame; int i, result; if (objc < 4) { @@ -3384,13 +3384,11 @@ NamespaceInscopeCmd(dummy, interp, objc, objv) * Make the specified namespace the current namespace. */ - result = Tcl_PushCallFrame(interp, (Tcl_CallFrame *)&frame, namespacePtr, + result = Tcl_PushCallFrame(interp, &frame, namespacePtr, /*isProcCallFrame*/ 0); if (result != TCL_OK) { return result; } - frame.objc = objc; - frame.objv = objv; /* * Execute the command. If there is just one argument, just treat it as -- cgit v0.12 From 5e641ebc8094bafba9b515eea6e4df375039c0de Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 6 Jun 2006 20:07:35 +0000 Subject: * doc/GetStdChan.3: Added recommendation that each call to Tcl_SetStdChannel() be accompanied by a call to Tcl_RegisterChannel(). --- ChangeLog | 5 +++++ doc/GetStdChan.3 | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index db9eb45..a97ec70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-06-06 Don Porter + + * doc/GetStdChan.3: Added recommendation that each call to + Tcl_SetStdChannel() be accompanied by a call to Tcl_RegisterChannel(). + 2006-05-31 Jeff Hobbs * generic/tclNamesp.c (NamespaceInscopeCmd): revert [Bug 1400572] diff --git a/doc/GetStdChan.3 b/doc/GetStdChan.3 index 09c65d9..031f0db 100644 --- a/doc/GetStdChan.3 +++ b/doc/GetStdChan.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: GetStdChan.3,v 1.4 2001/12/10 15:50:46 dgp Exp $ +'\" RCS: @(#) $Id: GetStdChan.3,v 1.4.4.1 2006/06/06 20:07:36 dgp Exp $ '\" .so man.macros .TH Tcl_GetStdChannel 3 7.5 Tcl "Tcl Library Procedures" @@ -53,6 +53,16 @@ by calling \fBTcl_SetStdChannel\fR with a new channel or NULL in the \fBTcl_Close\fR, then the corresponding standard channel will automatically be set to NULL. .PP +If a non-NULL value for \fIchannel\fR is passed to \fBTcl_SetStdChannel\fR, +then that same value should be passed to \fBTcl_RegisterChannel\fR, like so: +.CS +Tcl_RegisterChannel(NULL, channel); +.CE +This is a workaround for a misfeature in \fBTcl_SetStdChannel\fR that it +fails to do some reference counting housekeeping. This misfeature cannot +be corrected without contradicting the assumptions of some existing +code that calls \fBTcl_SetStdChannel\fR. +.PP If \fBTcl_GetStdChannel\fR is called before \fBTcl_SetStdChannel\fR, Tcl will construct a new channel to wrap the appropriate platform-specific standard file handle. If \fBTcl_SetStdChannel\fR is called before -- cgit v0.12 From 0c32ed9ff184245f1517edf43a56d458a73b871f Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 13 Jun 2006 22:54:01 +0000 Subject: Workaround for silly compiler bug. [Bug 1503729] --- ChangeLog | 5 +++++ unix/tclLoadDl.c | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index a97ec70..957ccd0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-06-13 Donal K. Fellows + + * unix/tclLoadDl.c (TclpDlopen): Workaround for a compiler bug in Sun + Forte 6. [Bug 1503729] + 2006-06-06 Don Porter * doc/GetStdChan.3: Added recommendation that each call to diff --git a/unix/tclLoadDl.c b/unix/tclLoadDl.c index 1a51dd8..daaf6c9 100644 --- a/unix/tclLoadDl.c +++ b/unix/tclLoadDl.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDl.c,v 1.13 2002/10/10 12:25:53 vincentdarley Exp $ + * RCS: @(#) $Id: tclLoadDl.c,v 1.13.2.1 2006/06/13 22:54:01 dkf Exp $ */ #include "tclInt.h" @@ -90,9 +90,15 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) } if (handle == NULL) { + /* + * Write the string to a variable first to work around a compiler bug + * in the Sun Forte 6 compiler. [Bug 1503729] + */ + + CONST char *errorStr = dlerror(); + Tcl_AppendResult(interp, "couldn't load file \"", - Tcl_GetString(pathPtr), - "\": ", dlerror(), (char *) NULL); + Tcl_GetString(pathPtr), "\": ", errorStr, (char *) NULL); return TCL_ERROR; } -- cgit v0.12 From 509281cd2ab88a10a9e781f373d5e59f29f3bc79 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 14 Jun 2006 15:21:12 +0000 Subject: Enable building Tcl with Microsoft's latest compiler offering (VS2005). We have to handle a number of oddities as they have deprecated most of the standard C library and now generate manifest files to be linked into the binaries. SF bug #1424909 --- ChangeLog | 11 +++++ generic/regerror.c | 10 ++--- generic/tcl.h | 6 ++- generic/tclDate.c | 6 +-- tests/env.test | 8 ++-- win/makefile.vc | 32 +++++++------- win/nmakehlp.c | 54 ++++++++++++++++++++---- win/rules.vc | 120 ++++++++++++++++++++++++++++++++++++++++++++--------- win/tclWinTime.c | 18 ++++---- 9 files changed, 201 insertions(+), 64 deletions(-) diff --git a/ChangeLog b/ChangeLog index 957ccd0..0f64b36 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-06-14 Pat Thoyts + + * generic/regerror.c: Enable building Tcl with Microsoft's + * generic/tcl.h: latest compiler offering (VS2005). + * generic/tclDate.c: We have to handle a number of oddities + * tests/env.test: as they have deprecated most of the + * win/makefile.vc: standard C library and now generate + * win/nmakehlp.c: manifest files to be linked into the + * win/rules.vc: binaries. SF bug #1424909 + * win/tclWinTime.c: + 2006-06-13 Donal K. Fellows * unix/tclLoadDl.c (TclpDlopen): Workaround for a compiler bug in Sun diff --git a/generic/regerror.c b/generic/regerror.c index aca13aa..182830d 100644 --- a/generic/regerror.c +++ b/generic/regerror.c @@ -50,8 +50,8 @@ static struct rerr { */ /* ARGSUSED */ size_t /* actual space needed (including NUL) */ -regerror(errcode, preg, errbuf, errbuf_size) -int errcode; /* error code, or REG_ATOI or REG_ITOA */ +regerror(code, preg, errbuf, errbuf_size) +int code; /* error code, or REG_ATOI or REG_ITOA */ CONST regex_t *preg; /* associated regex_t (unused at present) */ char *errbuf; /* result buffer (unless errbuf_size==0) */ size_t errbuf_size; /* available space in errbuf, can be 0 */ @@ -62,7 +62,7 @@ size_t errbuf_size; /* available space in errbuf, can be 0 */ size_t len; int icode; - switch (errcode) { + switch (code) { case REG_ATOI: /* convert name to number */ for (r = rerrs; r->code >= 0; r++) if (strcmp(r->name, errbuf) == 0) @@ -84,12 +84,12 @@ size_t errbuf_size; /* available space in errbuf, can be 0 */ break; default: /* a real, normal error code */ for (r = rerrs; r->code >= 0; r++) - if (r->code == errcode) + if (r->code == code) break; if (r->code >= 0) msg = r->explain; else { /* unknown; say so */ - sprintf(convbuf, unk, errcode); + sprintf(convbuf, unk, code); msg = convbuf; } break; diff --git a/generic/tcl.h b/generic/tcl.h index 5d7f192..f960ea0 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.24 2006/05/30 00:29:38 hobbs Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.25 2006/06/14 15:21:14 patthoyts Exp $ */ #ifndef _TCL @@ -385,7 +385,11 @@ typedef struct stati64 Tcl_StatBuf; # define TCL_LL_MODIFIER "L" # define TCL_LL_MODIFIER_SIZE 1 # else /* __BORLANDC__ */ +# if _MSC_VER < 1400 typedef struct _stati64 Tcl_StatBuf; +# else +typedef struct _stat64 Tcl_StatBuf; +# endif /* _MSC_VER < 1400 */ # define TCL_LL_MODIFIER "I64" # define TCL_LL_MODIFIER_SIZE 3 # endif /* __BORLANDC__ */ diff --git a/generic/tclDate.c b/generic/tclDate.c index e6a8a90..be6ec42 100644 --- a/generic/tclDate.c +++ b/generic/tclDate.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDate.c,v 1.20.4.2 2005/11/04 20:15:09 kennykb Exp $ + * RCS: @(#) $Id: tclDate.c,v 1.20.4.3 2006/06/14 15:21:14 patthoyts Exp $ */ #include "tclInt.h" @@ -478,7 +478,7 @@ Convert(Month, Day, Year, Hours, Minutes, Seconds, Meridian, DSTmode, TimePtr) for (i = EPOCH; i < Year; i++) Julian += 365 + IsLeapYear(i); } else { - for (i = Year; i < EPOCH; i++) + for (i = (int)Year; i < EPOCH; i++) Julian -= 365 + IsLeapYear(i); } Julian *= SECSPERDAY; @@ -547,7 +547,7 @@ NamedMonth(Start, MonthOrdinal, MonthNumber) * doing next february from january gives us february of the current year) * set day to 1, time to 0 */ - tm->tm_year += MonthOrdinal; + tm->tm_year += (int)MonthOrdinal; if (tm->tm_mon < MonthNumber - 1) { tm->tm_year--; } diff --git a/tests/env.test b/tests/env.test index 7bfeb3c..7653b05 100644 --- a/tests/env.test +++ b/tests/env.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: env.test,v 1.17.2.3 2005/10/05 08:03:18 hobbs Exp $ +# RCS: @(#) $Id: env.test,v 1.17.2.4 2006/06/14 15:21:14 patthoyts Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -75,7 +75,7 @@ set printenvScript [makeFile { lrem names ComSpec lrem names "" } - foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH PURE_PROG_NAME DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH __CF_USER_TEXT_ENCODING } { + foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH PURE_PROG_NAME DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH __CF_USER_TEXT_ENCODING SYSTEMDRIVE SYSTEMROOT} { lrem names $name } foreach p $names { @@ -98,14 +98,14 @@ proc getenv {} { # Save the current environment variables at the start of the test. foreach name [array names env] { - set env2($name) $env($name) + set env2([string toupper $name]) $env($name) unset env($name) } # Added the following lines so that child tcltest can actually find its # library if the initial tcltest is run from a non-standard place. # ('saved' env vars) -foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH} { +foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH SYSTEMDRIVE SYSTEMROOT} { if {[info exists env2($name)]} { set env($name) $env2($name); } diff --git a/win/makefile.vc b/win/makefile.vc index 7b8fe5f..417b13f 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -12,12 +12,13 @@ # Copyright (c) 2001-2002 David Gravereaux. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.100.2.7 2005/11/30 00:15:39 hobbs Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.100.2.8 2006/06/14 15:21:14 patthoyts Exp $ #------------------------------------------------------------------------------ # Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) -# or with the MS Platform SDK (MSSDK) -!if !defined(MSDEVDIR) && !defined(MSVCDIR) && !defined(MSSDK) +# or with the MS Platform SDK (MSSDK). Visual Studio .NET 2003 and 2005 define +# VCINSTALLDIR instead. +!if !defined(MSDEVDIR) && !defined(MSVCDIR) && !defined(MSSDK) && !defined(VCINSTALLDIR) MSG = ^ You need to run vcvars32.bat from Developer Studio or setenv.bat from the^ Platform SDK first to setup the environment. Jump to this line to read^ @@ -322,27 +323,20 @@ WINDIR = $(ROOT)\win !if !$(DEBUG) !if $(OPTIMIZING) ### This cranks the optimization level to maximize speed -cdebug = -O2 -Op -Gs +cdebug = -O2 $(OPTIMIZATIONS) !else cdebug = !endif !else if "$(MACHINE)" == "IA64" ### Warnings are too many, can't support warnings into errors. -cdebug = -Z7 -Od +cdebug = -Z7 -Od $(DEBUGFLAGS) !else -cdebug = -Z7 -WX -Od +cdebug = -Z7 -WX $(DEBUGFLAGS) !endif ### Declarations common to all compiler options -cflags = -nologo -c -W3 -YX -Fp$(TMP_DIR)^\ - -!if $(PENT_0F_ERRATA) -cflags = $(cflags) -QI0f -!endif - -!if $(ITAN_B_ERRATA) -cflags = $(cflags) -QIA64_Bx -!endif +cwarn = -D _CRT_SECURE_NO_DEPRECATE -D _CRT_NONSTDC_NO_DEPRECATE +cflags = -nologo -c $(COMPILERFLAGS) $(cwarn) -Fp$(TMP_DIR)^\ !if $(MSVCRT) !if "$(DBGX)" == "" @@ -458,6 +452,7 @@ $** $(baselibs) @<< $** << + $(_VC_MANIFEST_EMBED_DLL) -@del $*.exp !endif @@ -466,13 +461,16 @@ $(TCLSTUBLIB): $(TCLSTUBOBJS) $(TCLSH): $(TCLSHOBJS) $(TCLIMPLIB) $(link32) $(conlflags) -stack:2300000 -out:$@ $(baselibs) $** + $(_VC_MANIFEST_EMBED_EXE) $(TCLTEST): $(TCLTESTOBJS) $(TCLIMPLIB) $(link32) $(conlflags) -stack:2300000 -out:$@ $(baselibs) $** + $(_VC_MANIFEST_EMBED_EXE) $(TCLPIPEDLL): $(WINDIR)\stub16.c $(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $(WINDIR)\stub16.c $(link32) $(conlflags) -out:$@ $(TMP_DIR)\stub16.obj $(baselibs) + $(_VC_MANIFEST_EMBED_DLL) !if $(STATIC_BUILD) $(TCLDDELIB): $(TMP_DIR)\tclWinDde.obj @@ -481,6 +479,7 @@ $(TCLDDELIB): $(TMP_DIR)\tclWinDde.obj $(TCLDDELIB): $(TMP_DIR)\tclWinDde.obj $(TCLSTUBLIB) $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tcldde -out:$@ \ $** $(baselibs) + $(_VC_MANIFEST_EMBED_DLL) -@del $*.exp -@del $*.lib !endif @@ -492,6 +491,7 @@ $(TCLREGLIB): $(TMP_DIR)\tclWinReg.obj $(TCLREGLIB): $(TMP_DIR)\tclWinReg.obj $(TCLSTUBLIB) $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tclreg -out:$@ \ $** $(baselibs) + $(_VC_MANIFEST_EMBED_DLL) -@del $*.exp -@del $*.lib !endif @@ -500,7 +500,7 @@ $(CAT32): $(WINDIR)\cat.c $(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $? $(link32) $(conlflags) -out:$@ -stack:16384 $(TMP_DIR)\cat.obj \ $(baselibs) - + $(_VC_MANIFEST_EMBED_EXE) #--------------------------------------------------------------------- # Regenerate the stubs files. [Development use only] diff --git a/win/nmakehlp.c b/win/nmakehlp.c index 4906303..48b82c4 100644 --- a/win/nmakehlp.c +++ b/win/nmakehlp.c @@ -9,9 +9,11 @@ * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * ---------------------------------------------------------------------------- - * RCS: @(#) $Id: nmakehlp.c,v 1.1 2002/03/27 21:15:43 davygrvy Exp $ + * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.1 2006/06/14 15:21:15 patthoyts Exp $ * ---------------------------------------------------------------------------- */ + +#define _CRT_SECURE_NO_DEPRECATE #include #pragma comment (lib, "user32.lib") #pragma comment (lib, "kernel32.lib") @@ -41,6 +43,19 @@ main (int argc, char *argv[]) DWORD dwWritten; int chars; + /* + * Make sure children (cl.exe and link.exe) are kept quiet. + */ + + SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); + + /* + * Make sure the compiler and linker aren't affected by the outside world. + */ + + SetEnvironmentVariable("CL", ""); + SetEnvironmentVariable("LINK", ""); + if (argc > 1 && *argv[1] == '-') { switch (*(argv[1]+1)) { case 'c': @@ -90,11 +105,11 @@ CheckForCompilerFeature (const char *option) STARTUPINFO si; PROCESS_INFORMATION pi; SECURITY_ATTRIBUTES sa; - DWORD threadID; + DWORD threadID, n; char msg[300]; BOOL ok; HANDLE hProcess, h, pipeThreads[2]; - char cmdline[100]; + char cmdline[256]; hProcess = GetCurrentProcess(); @@ -122,11 +137,16 @@ CheckForCompilerFeature (const char *option) 0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); /* base command line */ - strcpy(cmdline, "cl.exe -nologo -c -TC -Fdtemp "); + n = GetEnvironmentVariable("CC", cmdline, 255); + cmdline[n] = 0; + if (n == 0) + strcpy(cmdline, "cl.exe"); + strncat(cmdline, " -nologo -c -TC -Zs -X ", 255); + /* append our option for testing */ strcat(cmdline, option); /* filename to compile, which exists, but is nothing and empty. */ - strcat(cmdline, " nul"); + strcat(cmdline, " .\\nul"); ok = CreateProcess( NULL, /* Module name. */ @@ -175,8 +195,28 @@ CheckForCompilerFeature (const char *option) CloseHandle(pipeThreads[0]); CloseHandle(pipeThreads[1]); - /* look for the commandline warning code in both streams. */ - return !(strstr(Out.buffer, "D4002") != NULL || strstr(Err.buffer, "D4002") != NULL); +#ifdef _DEBUG + { + DWORD err = 0; + strcat(cmdline, "\n"); + WriteFile(GetStdHandle(STD_ERROR_HANDLE), cmdline, + strlen(cmdline), &err, NULL); + WriteFile(GetStdHandle(STD_ERROR_HANDLE), Out.buffer, + strlen(Out.buffer), &err,NULL); + WriteFile(GetStdHandle(STD_ERROR_HANDLE), Err.buffer, + strlen(Err.buffer), &err,NULL); + } +#endif + + /* + * Look for the commandline warning code in both streams. + * - in MSVC 6 & 7 we get D4002, in MSVC 8 we get D9002. + */ + + return !(strstr(Out.buffer, "D4002") != NULL + || strstr(Err.buffer, "D4002") != NULL + || strstr(Out.buffer, "D9002") != NULL + || strstr(Err.buffer, "D9002") != NULL); } int diff --git a/win/rules.vc b/win/rules.vc index 3cc84b0..05a3062 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -8,9 +8,10 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # Copyright (c) 2001-2002 David Gravereaux. +# Copyright (c) 2003 Patrick Thoyts # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: rules.vc,v 1.11 2003/03/01 01:22:46 hobbs Exp $ +# RCS: @(#) $Id: rules.vc,v 1.11.2.1 2006/06/14 15:21:15 patthoyts Exp $ #------------------------------------------------------------------------------ !ifndef _RULES_VC @@ -25,7 +26,7 @@ rc32 = $(RC) # built-in default. ### Assume the normal default. _INSTALLDIR = C:\Program Files\Tcl !else -### Fix the path seperators. +### Fix the path separators. _INSTALLDIR = $(INSTALLDIR:/=\) !endif @@ -61,7 +62,7 @@ RMDIR = deltree /Y #---------------------------------------------------------- !if !exist(nmakehlp.exe) -!if [$(cc32) -nologo -ML nmakehlp.c -link -subsystem:console > nul] +!if [$(cc32) -nologo nmakehlp.c -link -subsystem:console > nul] !endif !endif @@ -70,7 +71,7 @@ RMDIR = deltree /Y #---------------------------------------------------------- ### test for optimizations -!if [nmakehlp -c -Otip] +!if [nmakehlp -c -Ot] !message *** Compiler has 'Optimizations' OPTIMIZING = 1 !else @@ -78,15 +79,67 @@ OPTIMIZING = 1 OPTIMIZING = 0 !endif +OPTIMIZATIONS = + +!if [nmakehlp -c -Ot] +OPTIMIZATIONS = $(OPTIMIZATIONS) -Ot +!endif + +!if [nmakehlp -c -Oi] +OPTIMIZATIONS = $(OPTIMIZATIONS) -Oi +!endif + +!if [nmakehlp -c -Op] +OPTIMIZATIONS = $(OPTIMIZATIONS) -Op +!endif + +!if [nmakehlp -c -fp:strict] +OPTIMIZATIONS = $(OPTIMIZATIONS) -fp:strict +!endif + +!if [nmakehlp -c -Gs] +OPTIMIZATIONS = $(OPTIMIZATIONS) -Gs +!endif + +!if [nmakehlp -c -GS] +OPTIMIZATIONS = $(OPTIMIZATIONS) -GS +!endif + +DEBUGFLAGS = + +!if [nmakehlp -c -RTC1] +DEBUGFLAGS = $(DEBUGFLAGS) -RTC1 +!elseif [nmakehlp -c -GZ] +DEBUGFLAGS = $(DEBUGFLAGS) -GZ +!endif + +COMPILERFLAGS =-W3 + +!if [nmakehlp -c -YX] +OPTIMIZATIONS = $(OPTIMIZATIONS) -YX +!endif + !if "$(MACHINE)" == "IX86" ### test for pentium errata !if [nmakehlp -c -QI0f] !message *** Compiler has 'Pentium 0x0f fix' -PENT_0F_ERRATA = 1 +COMPILERFLAGS = $(COMPILERFLAGSS) -QI0f !else !message *** Compiler doesn't have 'Pentium 0x0f fix' -PENT_0F_ERRATA = 0 !endif +!endif + +!if "$(MACHINE)" == "IA64" +### test for Itanium errata +!if [nmakehlp -c -QIA64_Bx] +!message *** Compiler has 'B-stepping errata workarounds' +COMPILERFLAGS = $(COMPILERFLAGS) -QIA64_Bx +!else +!message *** Compiler does not have 'B-stepping errata workarounds' +!endif +!endif + +!if "$(MACHINE)" == "IX86" ### test for -align:4096, when align:512 will do. !if [nmakehlp -l -opt:nowin98] !message *** Linker has 'Win98 alignment problem' @@ -96,21 +149,26 @@ ALIGN98_HACK = 1 ALIGN98_HACK = 0 !endif !else -PENT_0F_ERRATA = 0 ALIGN98_HACK = 0 !endif -!if "$(MACHINE)" == "IA64" -### test for Itanium errata -!if [nmakehlp -c -QIA64_Bx] -!message *** Compiler has 'B-stepping errata workarounds' -ITAN_B_ERRATA = 1 -!else -!message *** Compiler doesn't have 'B-stepping errata workarounds' -ITAN_B_ERRATA = 0 -!endif +#---------------------------------------------------------- +# MSVC8 (ships with Visual Studio 2005) generates a manifest +# file that we should link into the binaries. This is how. +#---------------------------------------------------------- + +_VC_MANIFEST_EMBED_EXE= +_VC_MANIFEST_EMBED_DLL= +!if ![cl /Zs /Tc NUL 2>&1 | find "Version 12" > NUL] +VCVER=6 +!elseif ![cl /Zs /Tc NUL 2>&1 | find "Version 13" > NUL] +VCVER=7 +!elseif ![cl /Zs /Tc NUL 2>&1 | find "Version 14" > NUL] +VCVER=8 +_VC_MANIFEST_EMBED_EXE=if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;1 +_VC_MANIFEST_EMBED_DLL=if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;2 !else -ITAN_B_ERRATA = 0 +VCVER=0 !endif #---------------------------------------------------------- @@ -126,6 +184,7 @@ MSVCRT = 0 LOIMPACT = 0 TCL_USE_STATIC_PACKAGES = 0 USE_THREAD_ALLOC = 0 +UNCHECKED = 0 !else !if [nmakehlp -f $(OPTS) "static"] !message *** Doing static @@ -175,6 +234,12 @@ USE_THREAD_ALLOC = 1 !else USE_THREAD_ALLOC = 0 !endif +!if [nmakehlp -f $(OPTS) "unchecked"] +!message *** Doing unchecked +UNCHECKED = 1 +!else +UNCHECKED = 0 +!endif !endif @@ -203,6 +268,10 @@ DBGX = SUFX = $(SUFX:g=) !endif +!if $(VCVER) > 6 +BUILDDIRTOP =$(BUILDDIRTOP)_VC$(VCVER) +!endif + TMP_DIRFULL = .\$(BUILDDIRTOP)\$(PROJECT)_ThreadedDynamicStaticX !if !$(STATIC_BUILD) @@ -283,6 +352,18 @@ OPTDEFINES = $(OPTDEFINES) -DUSE_THREAD_ALLOC=1 OPTDEFINES = $(OPTDEFINES) -DSTATIC_BUILD !endif +!if $(DEBUG) +OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_DEBUG +!elseif $(OPTIMIZING) +OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_OPTIMIZED +!endif +!if $(PROFILE) +OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_PROFILED +!endif +!if "$(MACHINE)" == "IA64" || "$(MACHINE)" == "AMD64" +OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_DO64BIT +!endif + #---------------------------------------------------------- # Get common info used when building extensions. @@ -296,7 +377,7 @@ TCLINSTALL = 1 _TCLDIR = $(_INSTALLDIR) !else MSG=^ -Don't know where tcl.h is. Set the TCLDIR macro. +Failed to find tcl.h. Set the TCLDIR macro. !error $(MSG) !endif !else @@ -307,7 +388,7 @@ TCLINSTALL = 1 TCLINSTALL = 0 !else MSG =^ -Don't know where tcl.h is. The TCLDIR macro doesn't appear correct. +Failed to find tcl.h. The TCLDIR macro does not appear correct. !error $(MSG) !endif !endif @@ -356,5 +437,6 @@ TCLTOOLSDIR = $(_TCLDIR)\tools !message *** Output directory will be '$(OUT_DIR)' !message *** Suffix for binaries will be '$(SUFX)' !message *** Optional defines are '$(OPTDEFINES)' +!message *** Compiler version $(VCVER) options are '$(OPTIMIZATIONS) $(DEBUGFLAGS)' !endif diff --git a/win/tclWinTime.c b/win/tclWinTime.c index dbb6dbc..842d114 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.8 2005/03/30 05:31:13 hobbs Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.9 2006/06/14 15:21:15 patthoyts Exp $ */ #include "tclWinInt.h" @@ -422,7 +422,7 @@ Tcl_GetTime(timePtr) timeInfo.fileTimeLastCall.QuadPart = curFileTime; timeInfo.perfCounterLastCall.QuadPart = curCounter.QuadPart; usecSincePosixEpoch = ( curFileTime - posixEpoch.QuadPart ) / 10; - timePtr->sec = (time_t) ( usecSincePosixEpoch / 1000000 ); + timePtr->sec = (long) ( usecSincePosixEpoch / 1000000 ); timePtr->usec = (unsigned long ) ( usecSincePosixEpoch % 1000000 ); useFtime = 0; } @@ -434,7 +434,7 @@ Tcl_GetTime(timePtr) /* High resolution timer is not available. Just use ftime */ ftime(&t); - timePtr->sec = t.time; + timePtr->sec = (long)t.time; timePtr->usec = t.millitm * 1000; } } @@ -636,9 +636,9 @@ TclpGetDate(t, useGMT) } time /= 24; - tmPtr->tm_mday += time; - tmPtr->tm_yday += time; - tmPtr->tm_wday = (tmPtr->tm_wday + time) % 7; + tmPtr->tm_mday += (int)time; + tmPtr->tm_yday += (int)time; + tmPtr->tm_wday = (tmPtr->tm_wday + (int)time) % 7; } } else { tmPtr = ComputeGMT(tp); @@ -679,8 +679,8 @@ ComputeGMT(tp) * Compute the 4 year span containing the specified time. */ - tmp = *tp / SECSPER4YEAR; - rem = *tp % SECSPER4YEAR; + tmp = (long)(*tp / SECSPER4YEAR); + rem = (LONG)(*tp % SECSPER4YEAR); /* * Correct for weird mod semantics so the remainder is always positive. @@ -746,7 +746,7 @@ ComputeGMT(tp) * Compute day of week. Epoch started on a Thursday. */ - tmPtr->tm_wday = (*tp / SECSPERDAY) + 4; + tmPtr->tm_wday = (long)(*tp / SECSPERDAY) + 4; if ((*tp % SECSPERDAY) < 0) { tmPtr->tm_wday--; } -- cgit v0.12 From e4eabb48f7c89dda3e4ff784dced55eeda4bdee8 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 14 Jun 2006 15:24:19 +0000 Subject: Remove test chunk --- win/rules.vc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/win/rules.vc b/win/rules.vc index 05a3062..9b7a6c4 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -11,7 +11,7 @@ # Copyright (c) 2003 Patrick Thoyts # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: rules.vc,v 1.11.2.1 2006/06/14 15:21:15 patthoyts Exp $ +# RCS: @(#) $Id: rules.vc,v 1.11.2.2 2006/06/14 15:24:19 patthoyts Exp $ #------------------------------------------------------------------------------ !ifndef _RULES_VC @@ -268,9 +268,9 @@ DBGX = SUFX = $(SUFX:g=) !endif -!if $(VCVER) > 6 -BUILDDIRTOP =$(BUILDDIRTOP)_VC$(VCVER) -!endif +#!if $(VCVER) > 6 +#BUILDDIRTOP =$(BUILDDIRTOP)_VC$(VCVER) +#!endif TMP_DIRFULL = .\$(BUILDDIRTOP)\$(PROJECT)_ThreadedDynamicStaticX -- cgit v0.12 From e79404a6ffe899d49d9edfd38dc9560e989c335e Mon Sep 17 00:00:00 2001 From: das Date: Wed, 14 Jun 2006 21:12:18 +0000 Subject: * unix/tclUnixPort.h (Darwin): support for MAC_OS_X_VERSION_MAX_ALLOWED define from AvailabilityMacros.h: override configure detection and only use API available in the indicated OS version or earlier. --- ChangeLog | 6 ++++++ unix/tclUnixPort.h | 37 +++++++++++++++++++++++++++---------- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0f64b36..923b037 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-06-14 Daniel Steffen + + * unix/tclUnixPort.h (Darwin): support for MAC_OS_X_VERSION_MAX_ALLOWED + define from AvailabilityMacros.h: override configure detection and only + use API available in the indicated OS version or earlier. + 2006-06-14 Pat Thoyts * generic/regerror.c: Enable building Tcl with Microsoft's diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 5c4b195..6c57a3b 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.9 2005/12/06 09:01:07 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.10 2006/06/14 21:12:19 das Exp $ */ #ifndef _TCLUNIXPORT @@ -505,25 +505,42 @@ extern double strtod(); #define TclpPanic ((Tcl_PanicProc *) NULL) /* - * Darwin specifc configure overrides (to support fat compiles, where - * configure runs only once for multiple architectures): + * Darwin specifc configure overrides. */ #ifdef __APPLE__ +/* + * Support for fat compiles: configure runs only once for multiple architectures + */ # ifdef __LP64__ # undef HAVE_COREFOUNDATION # endif /* __LP64__ */ # include -# if defined(__DARWIN_UNIX03) +# ifdef __DARWIN_UNIX03 # if __DARWIN_UNIX03 # undef HAVE_PUTENV_THAT_COPIES -# else /* !__DARWIN_UNIX03 */ +# else # define HAVE_PUTENV_THAT_COPIES 1 -# endif /* __DARWIN_UNIX03 */ -# define USE_TERMIOS 1 -# undef USE_TERMIO -# undef USE_SGTTY -# endif /* defined(__DARWIN_UNIX03) */ +# endif +# define USE_TERMIOS 1 +# undef USE_TERMIO +# undef USE_SGTTY +# endif /* __DARWIN_UNIX03 */ +/* + * Support for MAC_OS_X_VERSION_MAX_ALLOWED define from AvailabilityMacros.h: + * only use API available in the indicated OS version or earlier. + */ +# ifdef MAC_OS_X_VERSION_MAX_ALLOWED +# if MAC_OS_X_VERSION_MAX_ALLOWED < 1040 +# undef HAVE_OSSPINLOCKLOCK +# undef HAVE_PTHREAD_ATFORK +# undef HAVE_COPYFILE +# endif +# if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 +# define NO_REALPATH 1 +# undef HAVE_LANGINFO +# endif +# endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ #endif /* __APPLE__ */ /* -- cgit v0.12 From 5a4c7ecdc63418f54f4588292fbc697f693cd2d3 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 15 Jun 2006 18:09:11 +0000 Subject: * changes: changes to start prep for an 8.4.14 release. --- ChangeLog | 6 +++++- changes | 20 ++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 923b037..35684cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-06-15 Don Porter + + * changes: changes to start prep for an 8.4.14 release. + 2006-06-14 Daniel Steffen * unix/tclUnixPort.h (Darwin): support for MAC_OS_X_VERSION_MAX_ALLOWED @@ -65,7 +69,7 @@ * generic/tclProc.c (ProcCompileProc): When a bump of the compile epoch forces the re-compile of a proc body, take care not to overwrite any Proc struct that may be referred to on the active - call stack. This fixes [Bug 148218]. Note that the fix will not be + call stack. This fixes [Bug 1482718]. Note that the fix will not be effective for code that calls the private routine TclProcCompileProc() directly. diff --git a/changes b/changes index 36ce08b..8458986 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.41 2006/04/13 21:16:54 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.42 2006/06/15 18:09:11 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6329,7 +6329,7 @@ Restores Tcl 8.4.9 behavior (porter) 2005-12-12 (bug fix)[1377619] configure syntax error exposed in bash-3.1 (hobbs) -2006-01-09 (bug fix)[1480572] [info level $l] => "namespace inscope" (porter) +2006-01-09 (bug fix)[1400572] [info level $l] => "namespace inscope" (porter) 2006-01-23 (bug fix)[1410553] Tcl_GetRange Unicode confusion (twylite,spjuth) @@ -6369,3 +6369,19 @@ removed (steffen) 2006-04-11 (bug fix)[1458266] enter/enterstep trace interference (leunissen) --- Released 8.4.13, April 19, 2006 --- See ChangeLog for details --- + +2006-05-04 (bug fix)[1480509] srand() accept wide input (porter,afredd) + +2006-05-05 (bug fix)[1481986] interactive Tcl_Main blocks main loop (porter,lin) + +2006-05-13 (bug fix)[1482718] proc re-compile: preserve the previous +bytecode while references still on the stack (porter,ryazanov) + +2006-05-13 (bug fix)[943995] fixed [glob] on VFS (porter) + +2006-05-31 (revert 2006-01-09)[1400572] namespace inscope & info level (porter) + *** POTENTIAL INCOMPATIBILITY *** + +2006-06-14 (platform support)[1424909] MS VS2005 support (thoyts) + +--- Released 8.4.13, June XX, 2006 --- See ChangeLog for details --- -- cgit v0.12 From 3ef936e22cb8b85468e7a94694e0217983d04cd2 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 15 Jun 2006 18:11:22 +0000 Subject: typo --- changes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changes b/changes index 8458986..3671238 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.42 2006/06/15 18:09:11 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.43 2006/06/15 18:11:22 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6384,4 +6384,4 @@ bytecode while references still on the stack (porter,ryazanov) 2006-06-14 (platform support)[1424909] MS VS2005 support (thoyts) ---- Released 8.4.13, June XX, 2006 --- See ChangeLog for details --- +--- Released 8.4.14, June XX, 2006 --- See ChangeLog for details --- -- cgit v0.12 From 233456b5b89245aad5a46c14f751cabf56377c65 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 15 Jun 2006 22:33:31 +0000 Subject: add ref to darwin fix --- changes | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/changes b/changes index 3671238..d8a0ea5 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.43 2006/06/15 18:11:22 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.44 2006/06/15 22:33:31 das Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6379,6 +6379,9 @@ bytecode while references still on the stack (porter,ryazanov) 2006-05-13 (bug fix)[943995] fixed [glob] on VFS (porter) +2006-05-13 (bug fix)[923072] Darwin: made unthreaded CoreFoundation notifier +naked-fork safe on Tiger (steffen) + 2006-05-31 (revert 2006-01-09)[1400572] namespace inscope & info level (porter) *** POTENTIAL INCOMPATIBILITY *** -- cgit v0.12 From 03cfbaf3dcd8848bcc9b3add4e8f78f34bbb5398 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 10 Jul 2006 23:01:06 +0000 Subject: * generic/tclIO.c (Tcl_CreateChannel): allow Tcl std channel inheritance to be #defined out (default remains in). --- ChangeLog | 9 +++++++-- generic/tclIO.c | 11 ++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 35684cc..818eeb8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-07-10 Jeff Hobbs + + * generic/tclIO.c (Tcl_CreateChannel): allow Tcl std channel + inheritance to be #defined out (default remains in). + 2006-06-15 Don Porter * changes: changes to start prep for an 8.4.14 release. @@ -26,8 +31,8 @@ 2006-06-06 Don Porter - * doc/GetStdChan.3: Added recommendation that each call to - Tcl_SetStdChannel() be accompanied by a call to Tcl_RegisterChannel(). + * doc/GetStdChan.3: Added recommendation that each call to + Tcl_SetStdChannel() be accompanied by a call to Tcl_RegisterChannel(). 2006-05-31 Jeff Hobbs diff --git a/generic/tclIO.c b/generic/tclIO.c index f82f648..2eb96a7 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.20 2006/04/05 00:06:03 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.21 2006/07/10 23:01:06 hobbs Exp $ */ #include "tclInt.h" @@ -18,6 +18,10 @@ #include "tclIO.h" #include +#ifndef TCL_INHERIT_STD_CHANNELS +#define TCL_INHERIT_STD_CHANNELS 1 +#endif + /* * All static variables used in this file are collected into a single @@ -1247,7 +1251,7 @@ Tcl_CreateChannel(typePtr, chanName, instanceData, mask) * Install this channel in the first empty standard channel slot, if * the channel was previously closed explicitly. */ - +#if TCL_INHERIT_STD_CHANNELS if ((tsdPtr->stdinChannel == NULL) && (tsdPtr->stdinInitialized == 1)) { Tcl_SetStdChannel((Tcl_Channel) chanPtr, TCL_STDIN); @@ -1260,7 +1264,8 @@ Tcl_CreateChannel(typePtr, chanName, instanceData, mask) (tsdPtr->stderrInitialized == 1)) { Tcl_SetStdChannel((Tcl_Channel) chanPtr, TCL_STDERR); Tcl_RegisterChannel((Tcl_Interp *) NULL, (Tcl_Channel) chanPtr); - } + } +#endif return (Tcl_Channel) chanPtr; } -- cgit v0.12 From b21d03a76b28dee1c88a2ccc05dd815364babd83 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Tue, 11 Jul 2006 13:18:10 +0000 Subject: Made Tcl_AsyncDelete() more tolerant when called after all thread TSD has been garbage-collected. --- ChangeLog | 5 +++++ generic/tclAsync.c | 37 +++++++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 818eeb8..4565862 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-07-11 Zoran Vasiljevic + + * generic/tclAsync.c: Made Tcl_AsyncDelete() more tolerant + when called after all thread TSD has been garbage-collected. + 2006-07-10 Jeff Hobbs * generic/tclIO.c (Tcl_CreateChannel): allow Tcl std channel diff --git a/generic/tclAsync.c b/generic/tclAsync.c index 76e3e28..c99cea9 100644 --- a/generic/tclAsync.c +++ b/generic/tclAsync.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAsync.c,v 1.6 2001/08/30 07:50:18 davygrvy Exp $ + * RCS: @(#) $Id: tclAsync.c,v 1.6.12.1 2006/07/11 13:18:10 vasiljevic Exp $ */ #include "tclInt.h" @@ -286,20 +286,29 @@ Tcl_AsyncDelete(async) AsyncHandler *asyncPtr = (AsyncHandler *) async; AsyncHandler *prevPtr; + /* + * Conservatively check the existence of the linked list of + * registered handlers, as we may come at this point even + * when the TSD's for the current thread have been already + * garbage-collected. + */ + Tcl_MutexLock(&tsdPtr->asyncMutex); - if (tsdPtr->firstHandler == asyncPtr) { - tsdPtr->firstHandler = asyncPtr->nextPtr; - if (tsdPtr->firstHandler == NULL) { - tsdPtr->lastHandler = NULL; - } - } else { - prevPtr = tsdPtr->firstHandler; - while (prevPtr->nextPtr != asyncPtr) { - prevPtr = prevPtr->nextPtr; - } - prevPtr->nextPtr = asyncPtr->nextPtr; - if (tsdPtr->lastHandler == asyncPtr) { - tsdPtr->lastHandler = prevPtr; + if (tsdPtr->firstHandler != NULL ) { + if (tsdPtr->firstHandler == asyncPtr) { + tsdPtr->firstHandler = asyncPtr->nextPtr; + if (tsdPtr->firstHandler == NULL) { + tsdPtr->lastHandler = NULL; + } + } else { + prevPtr = tsdPtr->firstHandler; + while (prevPtr->nextPtr != asyncPtr) { + prevPtr = prevPtr->nextPtr; + } + prevPtr->nextPtr = asyncPtr->nextPtr; + if (tsdPtr->lastHandler == asyncPtr) { + tsdPtr->lastHandler = prevPtr; + } } } Tcl_MutexUnlock(&tsdPtr->asyncMutex); -- cgit v0.12 From 8cb60c333409bcc5ab4d0388905e7840b41422b2 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 14 Jul 2006 16:20:23 +0000 Subject: * unix/tclUnixPort.h: Added the inclusion of . The missing header caused the upcoming #if conditions to wrongly exclude realpath, causing file normalize to ignore symbolic links in the path. --- ChangeLog | 7 +++++++ unix/tclUnixPort.h | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4565862..94b3257 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-07-13 Andreas Kupries + + * unix/tclUnixPort.h: Added the inclusion of + . The missing header caused the upcoming + #if conditions to wrongly exclude realpath, causing file + normalize to ignore symbolic links in the path. + 2006-07-11 Zoran Vasiljevic * generic/tclAsync.c: Made Tcl_AsyncDelete() more tolerant diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 6c57a3b..0fa3803 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.10 2006/06/14 21:12:19 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.11 2006/07/14 16:20:23 andreas_kupries Exp $ */ #ifndef _TCLUNIXPORT @@ -509,6 +509,11 @@ extern double strtod(); */ #ifdef __APPLE__ +/* + * Translate the symbolic values for MAC_OS_X_VERSION_MAX_ALLOWED to + * the numbers used in the comparisons below. + */ +#include /* * Support for fat compiles: configure runs only once for multiple architectures */ -- cgit v0.12 From bed796e06772e11d807d9394771ef16cf766b2cd Mon Sep 17 00:00:00 2001 From: das Date: Thu, 20 Jul 2006 06:21:41 +0000 Subject: * macosx/tclMacOSXNotify.c (Tcl_InitNotifier, Tcl_WaitForEvent): create notifier thread lazily upon first call to Tcl_WaitForEvent() rather than in Tcl_InitNotifier(). Allows calling exeve() in processes where the event loop has not yet been run (Darwin's execve() fails in processes with more than one thread), in particular allows embedders to call fork() followed by execve(), previously the pthread_atfork() child handler's call to Tcl_InitNotifier() would immediately recreate the notifier thread in the child after a fork. * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): add support for * unix/tclUnixFCmd.c (DoRenameFile, CopyFileAtts): weakly importing * unix/tclUnixInit.c (TclpSetInitialEncodings): symbols not available on OSX 10.2 or 10.3, enables binaires built on later OSX versions to run on earlier ones. * macosx/README: document how to enable weak-linking; cleanup. * unix/tclUnixPort.h: add support for weak-linking; conditionalize AvailabilityMacros.h inclusion; only disable realpath on 10.2 or earlier when threads are enabled. * unix/tclLoadDyld.c (TclpLoadMemoryGetBuffer): change runtime Darwin * unix/tclUnixInit.c (TclpInitPlatform): release check to use global initialized once. * unix/tclUnixFCmd.c (DoRenameFile, TclpObjNormalizePath): add runtime Darwin release check to determine if realpath is threadsafe. * unix/configure.in: add check on Darwin for compiler support of weak * unix/tcl.m4: import and for AvailabilityMacros.h header; move Darwin specific checks & defines that are only relevant to the tcl build out of tcl.m4; restrict framework option to Darwin; cleanup quoting. * unix/configure: autoconf-2.13 * unix/tclLoadDyld.c (TclpLoadMemory): * unix/tclUnixPipe.c (TclpCreateProcess): fix signed-with-unsigned comparison and other warnings from gcc4 -Wextra. --- ChangeLog | 35 + macosx/README | 34 +- macosx/tclMacOSXNotify.c | 138 +- unix/configure | 3749 +++++++++++++++++++++++----------------------- unix/configure.in | 93 +- unix/tcl.m4 | 83 +- unix/tclLoadDyld.c | 32 +- unix/tclUnixFCmd.c | 120 +- unix/tclUnixInit.c | 36 +- unix/tclUnixPipe.c | 7 +- unix/tclUnixPort.h | 43 +- 11 files changed, 2324 insertions(+), 2046 deletions(-) diff --git a/ChangeLog b/ChangeLog index 94b3257..3464427 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,38 @@ +2006-07-20 Daniel Steffen + + * macosx/tclMacOSXNotify.c (Tcl_InitNotifier, Tcl_WaitForEvent): create + notifier thread lazily upon first call to Tcl_WaitForEvent() rather than + in Tcl_InitNotifier(). Allows calling exeve() in processes where the + event loop has not yet been run (Darwin's execve() fails in processes + with more than one thread), in particular allows embedders to call + fork() followed by execve(), previously the pthread_atfork() child + handler's call to Tcl_InitNotifier() would immediately recreate the + notifier thread in the child after a fork. + + * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): add support for + * unix/tclUnixFCmd.c (DoRenameFile, CopyFileAtts): weakly importing + * unix/tclUnixInit.c (TclpSetInitialEncodings): symbols not available + on OSX 10.2 or 10.3, enables binaires built on later OSX versions to run + on earlier ones. + * macosx/README: document how to enable weak-linking; cleanup. + * unix/tclUnixPort.h: add support for weak-linking; conditionalize + AvailabilityMacros.h inclusion; only disable realpath on 10.2 or earlier + when threads are enabled. + * unix/tclLoadDyld.c (TclpLoadMemoryGetBuffer): change runtime Darwin + * unix/tclUnixInit.c (TclpInitPlatform): release check to use + global initialized once. + * unix/tclUnixFCmd.c (DoRenameFile, TclpObjNormalizePath): add runtime + Darwin release check to determine if realpath is threadsafe. + * unix/configure.in: add check on Darwin for compiler support of weak + * unix/tcl.m4: import and for AvailabilityMacros.h header; move + Darwin specific checks & defines that are only relevant to the tcl build + out of tcl.m4; restrict framework option to Darwin; cleanup quoting. + * unix/configure: autoconf-2.13 + + * unix/tclLoadDyld.c (TclpLoadMemory): + * unix/tclUnixPipe.c (TclpCreateProcess): fix signed-with-unsigned + comparison and other warnings from gcc4 -Wextra. + 2006-07-13 Andreas Kupries * unix/tclUnixPort.h: Added the inclusion of diff --git a/macosx/README b/macosx/README index 46469cb..2475ea2 100644 --- a/macosx/README +++ b/macosx/README @@ -1,7 +1,7 @@ Tcl Mac OS X README ----------------- -RCS: @(#) $Id: README,v 1.1.2.4 2005/11/27 02:34:41 das Exp $ +RCS: @(#) $Id: README,v 1.1.2.5 2006/07/20 06:21:41 das Exp $ This is the README file for the Mac OS X/Darwin version of Tcl. @@ -36,9 +36,12 @@ Mac OS X specific bugs should usually be assigned to 'das' or 'wolfsuit'. - At a minimum, Mac OS X 10.1 is required to run Tcl, but OS X 10.3 or higher is recommended (certain [file] operations behave incorrectly on earlier releases). -- Tcl built on Mac OS X 10.x will not run on 10.y for y < x, on the other hand -Tcl built on 10.y will run on 10.x for y < x (but without any of the fixes and -optimizations that would be available in a binary built on 10.x). +- Unless weak-linking is used, Tcl built on Mac OS X 10.x will not run on 10.y +with y < x; on the other hand Tcl built on 10.y will always run on 10.x with +y <= x (but without any of the fixes and optimizations that would be available +in a binary built on 10.x). +Weak-linking is available on OS X 10.2 or later, it additionally allows Tcl +built on 10.x to run on any 10.y with x > y >= z (for a chosen z >= 2). - Tcl extensions can be installed in any of: $HOME/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl @@ -79,10 +82,9 @@ http://connect.apple.com (after you register for free ADC membership). (see below for details), but can also be built with the standard unix configure and make buildsystem in tcl/unix as on any other unix platform (indeed, the Makefile is just a wrapper around the unix buildsystem). -The Mac OS X specifc configure flags are --enable-framework and +The Mac OS X specific configure flags are --enable-framework and --disable-corefoundation (which disables CF and notably reverts to the standard -select based notifier, you will only need this if your require use of naked fork -(i.e. not followed by execve) in an unthreaded core). +select based notifier). - It is also possible to build with Apple's IDE via the tcl/macosx/Tcl.pbproj project, this simply calls through to the tcl/macosx/GNUMakefile. @@ -91,12 +93,22 @@ project, this simply calls through to the tcl/macosx/GNUMakefile. export CFLAGS="-arch ppc -arch ppc64 -arch i386 \ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" This requires Mac OS X 10.4 and Xcode 2.2 (_not_ Xcode 2.1) and will work on any -of the architectures (on i386 DTKs, the -isysroot is not required). Note that it -is not possible to configure correctly if the current architecture is not +of the architectures (on intel Macs, the -isysroot is not required). Note that +it is not possible to configure correctly if the current architecture is not present in CFLAGS (i.e. -arch `arch` must always be there). Universal builds of Tcl TEA extensions are also possible with CFLAGS set as above, they will be [load]able by universal as well as thin binaries of Tcl. +- To enable weak-linking, set the MACOSX_DEPLOYMENT_TARGET environment variable +to the minimal OS version (>= 10.2) the binaries should be able to run on, e.g: + export MACOSX_DEPLOYMENT_TARGET=10.2 +This requires Mac OS X 10.2 and gcc 3.1; if you have gcc 4 or later you can set +CFLAGS instead: + export CFLAGS="-mmacosx-version-min=10.2" +The Tcl.xcodeproj is setup to produce binaires that can run on 10.2 or later, +except for the 'ReleaseUniversal'configuration, where they require 10.4. +Support for weak-linking was added to the code for 8.4.14/8.5a5. + Detailed Instructions for building with macosx/Makefile ------------------------------------------------------- @@ -127,8 +139,8 @@ instead by passing an INSTALL_ROOT argument to make: - The default Makefile targets will build _both_ debug and optimized versions of the Tcl framework with the standard convention of naming the debug library Tcl.framework/Tcl_debug. -This allows you to dynamically link to the debug libraries at runtime by setting - setenv DYLD_IMAGE_SUFFIX _debug +This allows switching to the debug libraries at runtime by setting + export DYLD_IMAGE_SUFFIX=_debug (c.f. man dyld for more details) If you only want to build and install the debug or optimized build, use the diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index bdda1ce..f9cd046 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.6 2006/05/27 05:23:04 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.7 2006/07/20 06:21:42 das Exp $ */ #include "tclInt.h" @@ -164,6 +164,32 @@ static int receivePipe = -1; /* Output end of triggerPipe */ #include +#if defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +/* + * Support for weakly importing spinlock API. + */ +#define WEAK_IMPORT_SPINLOCKLOCK +extern void OSSpinLockLock(OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +extern void OSSpinLockUnlock(OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +extern void _spin_lock(OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +extern void _spin_unlock(OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +static void (* lockLock)(OSSpinLock *lock) = NULL; +static void (* lockUnlock)(OSSpinLock *lock) = NULL; +static pthread_once_t spinLockLockInitControl = PTHREAD_ONCE_INIT; +static void SpinLockLockInit(void) { + lockLock = OSSpinLockLock != NULL ? OSSpinLockLock : _spin_lock; + lockUnlock = OSSpinLockUnlock != NULL ? OSSpinLockUnlock : _spin_unlock; + if (lockLock == NULL || lockUnlock == NULL) { + Tcl_Panic("SpinLockLockInit: no spinlock API available."); + } +} +#define SpinLockLock(p) lockLock(p) +#define SpinLockUnlock(p) lockUnlock(p) +#else +#define SpinLockLock(p) OSSpinLockLock(p) +#define SpinLockUnlock(p) OSSpinLockUnlock(p) +#endif /* HAVE_WEAK_IMPORT */ + #else /* * Otherwise, use commpage spinlock SPI directly. @@ -172,8 +198,8 @@ static int receivePipe = -1; /* Output end of triggerPipe */ typedef uint32_t OSSpinLock; extern void _spin_lock(OSSpinLock *lock); extern void _spin_unlock(OSSpinLock *lock); -#define OSSpinLockLock(p) _spin_lock(p) -#define OSSpinLockUnlock(p) _spin_unlock(p) +#define SpinLockLock(p) _spin_lock(p) +#define SpinLockUnlock(p) _spin_unlock(p) #endif /* HAVE_LIBKERN_OSATOMIC_H && HAVE_OSSPINLOCKLOCK */ @@ -188,10 +214,10 @@ static OSSpinLock notifierLock = 0; * Macros abstracting notifier locking/unlocking */ -#define LOCK_NOTIFIER_INIT OSSpinLockLock(¬ifierInitLock) -#define UNLOCK_NOTIFIER_INIT OSSpinLockUnlock(¬ifierInitLock) -#define LOCK_NOTIFIER OSSpinLockLock(¬ifierLock) -#define UNLOCK_NOTIFIER OSSpinLockUnlock(¬ifierLock) +#define LOCK_NOTIFIER_INIT SpinLockLock(¬ifierInitLock) +#define UNLOCK_NOTIFIER_INIT SpinLockUnlock(¬ifierInitLock) +#define LOCK_NOTIFIER SpinLockLock(¬ifierLock) +#define UNLOCK_NOTIFIER SpinLockUnlock(¬ifierLock) /* * The pollState bits @@ -223,7 +249,13 @@ static int atForkInit = 0; static void AtForkPrepare(void); static void AtForkParent(void); static void AtForkChild(void); -#endif +#if defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +/* Support for weakly importing pthread_atfork. */ +#define WEAK_IMPORT_PTHREAD_ATFORK +extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), + void (*child)(void)) WEAK_IMPORT_ATTRIBUTE; +#endif /* HAVE_WEAK_IMPORT */ +#endif /* HAVE_PTHREAD_ATFORK */ /* *---------------------------------------------------------------------- @@ -248,8 +280,17 @@ Tcl_InitNotifier(void) tsdPtr->eventReady = 0; +#ifdef WEAK_IMPORT_SPINLOCKLOCK + /* + * Initialize support for weakly imported spinlock API. + */ + if (pthread_once(&spinLockLockInitControl, SpinLockLockInit)) { + Tcl_Panic("Tcl_InitNotifier: pthread_once failed."); + } +#endif + /* - * Initialize CFRunLoopSource and add it to CFRunLoop of this thread + * Initialize CFRunLoopSource and add it to CFRunLoop of this thread. */ if (!tsdPtr->runLoop) { @@ -268,28 +309,31 @@ Tcl_InitNotifier(void) tsdPtr->runLoop = runLoop; } - /* - * Initialize trigger pipe and start the Notifier thread if necessary. - */ - LOCK_NOTIFIER_INIT; #ifdef HAVE_PTHREAD_ATFORK /* - * Install pthread_atfork handlers to reinstall the notifier thread in the + * Install pthread_atfork handlers to reinitialize the notifier in the * child of a fork. */ - if (!atForkInit) { + if ( +#ifdef WEAK_IMPORT_PTHREAD_ATFORK + pthread_atfork != NULL && +#endif + !atForkInit) { int result = pthread_atfork(AtForkPrepare, AtForkParent, AtForkChild); if (result) { - Tcl_Panic("Tcl_InitNotifier: pthread_atfork failed"); + Tcl_Panic("Tcl_InitNotifier: pthread_atfork failed."); } atForkInit = 1; } #endif if (notifierCount == 0) { - int fds[2], status, result; - pthread_attr_t attr; + int fds[2], status; + + /* + * Initialize trigger pipe. + */ if (pipe(fds) != 0) { Tcl_Panic("Tcl_InitNotifier: could not create trigger pipe."); @@ -309,16 +353,13 @@ Tcl_InitNotifier(void) receivePipe = fds[0]; triggerPipe = fds[1]; - pthread_attr_init(&attr); - pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); - pthread_attr_setstacksize(&attr, 60 * 1024); - result = pthread_create(¬ifierThread, &attr, - (void * (*)(void *))NotifierThreadProc, NULL); - pthread_attr_destroy(&attr); - if (result) { - Tcl_Panic("Tcl_InitNotifier: unable to start notifier thread."); - } + /* + * Create notifier thread lazily in Tcl_WaitForEvent() to avoid + * interfering with fork() followed immediately by execve() + * (cannot execve() when more than one thread is present). + */ + + notifierThread = 0; } notifierCount++; UNLOCK_NOTIFIER_INIT; @@ -379,9 +420,12 @@ Tcl_FinalizeNotifier(clientData) write(triggerPipe, "q", 1); close(triggerPipe); - result = pthread_join(notifierThread, NULL); - if (result) { - Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread."); + if (notifierThread) { + result = pthread_join(notifierThread, NULL); + if (result) { + Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread."); + } + notifierThread = 0; } close(receivePipe); @@ -764,6 +808,28 @@ Tcl_WaitForEvent(timePtr) } /* + * Start notifier thread if necessary. + */ + + LOCK_NOTIFIER_INIT; + if (!notifierThread) { + int result; + pthread_attr_t attr; + + pthread_attr_init(&attr); + pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + pthread_attr_setstacksize(&attr, 60 * 1024); + result = pthread_create(¬ifierThread, &attr, + (void * (*)(void *))NotifierThreadProc, NULL); + pthread_attr_destroy(&attr); + if (result || !notifierThread) { + Tcl_Panic("Tcl_WaitForEvent: unable to start notifier thread."); + } + } + UNLOCK_NOTIFIER_INIT; + + /* * Place this thread on the list of interested threads, signal the * notifier thread, and wait for a response or a timeout. */ @@ -1138,9 +1204,13 @@ AtForkChild(void) } if (notifierCount > 0) { notifierCount = 0; - /* Note that Tcl_FinalizeNotifier does not use its clientData - * parameter, so discard return value of Tcl_InitNotifier here and - * leave stale clientData in tclNotify.c's ThreadSpecificData. + /* + * Assume that the return value of Tcl_InitNotifier() in the child + * will be identical to the one stored as clientData in tclNotify.c's + * ThreadSpecificData by the parent's TclInitNotifier(), so discard + * the return value here. This assumption may require the fork() to + * be executed in the main thread of the parent, otherwise + * Tcl_AlertNotifier() may break in the child. */ Tcl_InitNotifier(); } diff --git a/unix/configure b/unix/configure index abb3353..66934ce 100755 --- a/unix/configure +++ b/unix/configure @@ -961,8 +961,9 @@ echo "configure:961: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < #include @@ -988,7 +989,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -1011,17 +1012,17 @@ EOF ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1015: checking for errno.h" >&5 +echo "configure:1016: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1048,17 +1049,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:1052: checking for float.h" >&5 +echo "configure:1053: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1063: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1085,17 +1086,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:1089: checking for values.h" >&5 +echo "configure:1090: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1100: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1122,17 +1123,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:1126: checking for limits.h" >&5 +echo "configure:1127: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1162,17 +1163,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:1166: checking for stdlib.h" >&5 +echo "configure:1167: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1176: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1195,7 +1196,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -1209,7 +1210,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -1223,7 +1224,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -1244,17 +1245,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:1248: checking for string.h" >&5 +echo "configure:1249: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1277,7 +1278,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -1291,7 +1292,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -1317,17 +1318,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:1321: checking for sys/wait.h" >&5 +echo "configure:1322: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1331: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1354,17 +1355,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:1358: checking for dlfcn.h" >&5 +echo "configure:1359: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1395,17 +1396,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1399: checking for $ac_hdr" >&5 +echo "configure:1400: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1410: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1441,18 +1442,18 @@ done if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1445: checking if the compiler understands -pipe" >&5 +echo "configure:1446: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1507,7 +1508,7 @@ EOF EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1511: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:1512: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1515,7 +1516,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1554,7 +1555,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1558: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:1559: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1562,7 +1563,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1601,7 +1602,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1605: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:1606: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1609,7 +1610,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1646,7 +1647,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1650: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1651: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1654,7 +1655,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1688,7 +1689,7 @@ fi if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1692: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1693: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1696,7 +1697,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1747,12 +1748,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1751: checking for $ac_func" >&5 +echo "configure:1752: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1802,12 +1803,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1806: checking for $ac_func" >&5 +echo "configure:1807: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1860,7 +1861,7 @@ done fi # Do checking message here to not mess up interleaved configure output echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:1864: checking for building with threads" >&5 +echo "configure:1865: checking for building with threads" >&5 if test "${TCL_THREADS}" = 1; then cat >> confdefs.h <<\EOF #define TCL_THREADS 1 @@ -1891,12 +1892,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1895: checking for sin" >&5 +echo "configure:1896: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1940,7 +1941,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1944: checking for main in -lieee" >&5 +echo "configure:1945: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1948,14 +1949,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1982,7 +1983,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1986: checking for main in -linet" >&5 +echo "configure:1987: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1990,14 +1991,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2019,17 +2020,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:2023: checking for net/errno.h" >&5 +echo "configure:2024: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2033: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2074,12 +2075,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:2078: checking for connect" >&5 +echo "configure:2079: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -2124,12 +2125,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:2128: checking for setsockopt" >&5 +echo "configure:2129: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -2170,7 +2171,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:2174: checking for setsockopt in -lsocket" >&5 +echo "configure:2175: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2178,7 +2179,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2217,12 +2218,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:2221: checking for accept" >&5 +echo "configure:2222: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -2267,12 +2268,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:2271: checking for gethostbyname" >&5 +echo "configure:2272: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -2313,7 +2314,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:2317: checking for gethostbyname in -lnsl" >&5 +echo "configure:2318: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2321,7 +2322,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2368,7 +2369,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:2372: checking how to build libraries" >&5 +echo "configure:2373: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2407,7 +2408,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2411: checking for $ac_word" >&5 +echo "configure:2412: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2439,7 +2440,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2443: checking if 64bit support is requested" >&5 +echo "configure:2444: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -2453,7 +2454,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2457: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2458: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2474,7 +2475,7 @@ fi echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:2478: checking system version" >&5 +echo "configure:2479: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2509,7 +2510,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2513: checking for dlopen in -ldl" >&5 +echo "configure:2514: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2517,7 +2518,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2576,7 +2577,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2580: checking for $ac_word" >&5 +echo "configure:2581: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2691,7 +2692,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2695: checking for gettimeofday in -lbsd" >&5 +echo "configure:2696: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2699,7 +2700,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2753,7 +2754,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2757: checking for inet_ntoa in -lbind" >&5 +echo "configure:2758: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2761,7 +2762,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2838,7 +2839,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2842: checking for shl_load in -ldld" >&5 +echo "configure:2843: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2846,7 +2847,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2925,7 +2926,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2929: checking for shl_load in -ldld" >&5 +echo "configure:2930: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2933,7 +2934,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3068,17 +3069,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3072: checking for dld.h" >&5 +echo "configure:3073: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3142,17 +3143,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3146: checking for dld.h" >&5 +echo "configure:3147: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3156: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3157: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3220,17 +3221,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3224: checking for dlfcn.h" >&5 +echo "configure:3225: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3257,13 +3258,13 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3261: checking for ELF" >&5 +echo "configure:3262: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:3346: checking for ELF" >&5 +echo "configure:3347: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3420: checking if ld accepts -single_module flag" >&5 +echo "configure:3421: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3424,14 +3425,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3458,7 +3459,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3462: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3463: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3466,14 +3467,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3496,7 +3497,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3500: checking whether to use CoreFoundation" >&5 +echo "configure:3501: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3508,7 +3509,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3512: checking for CoreFoundation.framework" >&5 +echo "configure:3513: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3522,14 +3523,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3534: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3549,485 +3550,176 @@ echo "$ac_t""$tcl_cv_lib_corefoundation" 1>&6 #define HAVE_COREFOUNDATION 1 EOF - for ac_hdr in libkern/OSAtomic.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3557: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < + else + tcl_corefoundation=no + fi + fi + cat >> confdefs.h <<\EOF +#define MAC_OSX_TCL 1 EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <> confdefs.h <<\EOF +#define _OE_SOCKETS 1 EOF - -else - echo "$ac_t""no" 1>&6 -fi -done + # needed in sys/socket.h + ;; + OSF1-1.0|OSF1-1.1|OSF1-1.2) + # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 + SHLIB_CFLAGS="" + # Hack: make package name same as library name + SHLIB_LD='ld -R -export :' + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadOSF.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + OSF1-1.*) + # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 + SHLIB_CFLAGS="-fPIC" + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD="ld -shared" + else + SHLIB_LD="ld -non_shared" + fi + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + OSF1-V*) + # Digital OSF/1 + SHLIB_CFLAGS="" + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD='ld -shared -expect_unresolved "*"' + else + SHLIB_LD='ld -non_shared -expect_unresolved "*"' + fi + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' + if test "$GCC" = "yes" ; then + CFLAGS="$CFLAGS -mieee" + else + CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee" + fi + # see pthread_intro(3) for pthread support on osf1, k.furukawa + if test "${TCL_THREADS}" = "1" ; then + CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" + CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" + LIBS=`echo $LIBS | sed s/-lpthreads//` + if test "$GCC" = "yes" ; then + LIBS="$LIBS -lpthread -lmach -lexc" + else + CFLAGS="$CFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" + fi + fi - for ac_func in OSSpinLockLock -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3596: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + ;; + QNX-6*) + # QNX RTP + # This may work for all QNX, but it was only reported for v6. + SHLIB_CFLAGS="-fPIC" + SHLIB_LD="ld -Bshareable -x" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + # dlopen is in -lc on QNX + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + RISCos-*) + SHLIB_CFLAGS="-G 0" + SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".a" + DL_OBJS="tclLoadAout.o" + DL_LIBS="" + LDFLAGS="$LDFLAGS -Wl,-D,08000000" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + ;; + SCO_SV-3.2*) + # Note, dlopen is available only on SCO 3.2.5 and greater. However, + # this test works, since "uname -s" was non-standard in 3.2.4 and + # below. + if test "$GCC" = "yes" ; then + SHLIB_CFLAGS="-fPIC -melf" + LDFLAGS="$LDFLAGS -melf -Wl,-Bexport" + else + SHLIB_CFLAGS="-Kpic -belf" + LDFLAGS="$LDFLAGS -belf -Wl,-Bexport" + fi + SHLIB_LD="ld -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + SINIX*5.4*) + SHLIB_CFLAGS="-K PIC" + SHLIB_LD="cc -G" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS="" + LD_SEARCH_FLAGS="" + ;; + SunOS-4*) + SHLIB_CFLAGS="-PIC" + SHLIB_LD="ld" + SHLIB_LD_LIBS="" + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} -int main() { + # SunOS can't handle version numbers with dots in them in library + # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it + # requires an extra version number at the end of .so file names. + # So, the library has to have a name like libtcl75.so.1.0 -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + TCL_LIB_VERSIONS_OK=nodots + ;; + SunOS-5.[0-6]) + # Careful to not let 5.10+ fall into this case -; return 0; } + # Note: If _REENTRANT isn't defined, then Solaris + # won't define thread-safe library routines. + + cat >> confdefs.h <<\EOF +#define _REENTRANT 1 EOF -if { (eval echo configure:3624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - for ac_func in pthread_atfork -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3651: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:3679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - fi - fi - for ac_hdr in copyfile.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3709: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - for ac_func in copyfile -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3748: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:3776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - cat >> confdefs.h <<\EOF -#define MAC_OSX_TCL 1 -EOF - - cat >> confdefs.h <<\EOF -#define USE_VFORK 1 -EOF - - cat >> confdefs.h <<\EOF -#define TCL_DEFAULT_ENCODING "utf-8" -EOF - - cat >> confdefs.h <<\EOF -#define TCL_LOAD_FROM_MEMORY 1 -EOF - - # prior to Darwin 7, realpath is not threadsafe, so don't - # use it when threads are enabled, c.f. bug # 711232: - echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:3819: checking for realpath" >&5 -if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char realpath(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_realpath) || defined (__stub___realpath) -choke me -#else -realpath(); -#endif - -; return 0; } -EOF -if { (eval echo configure:3847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_realpath=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_realpath=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -fi - - if test $ac_cv_func_realpath = yes -a "${TCL_THREADS}" = 1 \ - -a `uname -r | awk -F. '{print $1}'` -lt 7 ; then - ac_cv_func_realpath=no - fi - ;; - NEXTSTEP-*) - SHLIB_CFLAGS="" - SHLIB_LD="cc -nostdlib -r" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadNext.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - OS/390-*) - CFLAGS_OPTIMIZE="" # Optimizer is buggy - cat >> confdefs.h <<\EOF -#define _OE_SOCKETS 1 -EOF - # needed in sys/socket.h - ;; - OSF1-1.0|OSF1-1.1|OSF1-1.2) - # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 - SHLIB_CFLAGS="" - # Hack: make package name same as library name - SHLIB_LD='ld -R -export :' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadOSF.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - OSF1-1.*) - # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 - SHLIB_CFLAGS="-fPIC" - if test "$SHARED_BUILD" = "1" ; then - SHLIB_LD="ld -shared" - else - SHLIB_LD="ld -non_shared" - fi - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - OSF1-V*) - # Digital OSF/1 - SHLIB_CFLAGS="" - if test "$SHARED_BUILD" = "1" ; then - SHLIB_LD='ld -shared -expect_unresolved "*"' - else - SHLIB_LD='ld -non_shared -expect_unresolved "*"' - fi - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - if test "$GCC" = "yes" ; then - CFLAGS="$CFLAGS -mieee" - else - CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee" - fi - # see pthread_intro(3) for pthread support on osf1, k.furukawa - if test "${TCL_THREADS}" = "1" ; then - CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" - CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" - LIBS=`echo $LIBS | sed s/-lpthreads//` - if test "$GCC" = "yes" ; then - LIBS="$LIBS -lpthread -lmach -lexc" - else - CFLAGS="$CFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" - fi - fi - - ;; - QNX-6*) - # QNX RTP - # This may work for all QNX, but it was only reported for v6. - SHLIB_CFLAGS="-fPIC" - SHLIB_LD="ld -Bshareable -x" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - # dlopen is in -lc on QNX - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - RISCos-*) - SHLIB_CFLAGS="-G 0" - SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" - SHLIB_LD_LIBS='${LIBS}' - SHLIB_SUFFIX=".a" - DL_OBJS="tclLoadAout.o" - DL_LIBS="" - LDFLAGS="$LDFLAGS -Wl,-D,08000000" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - ;; - SCO_SV-3.2*) - # Note, dlopen is available only on SCO 3.2.5 and greater. However, - # this test works, since "uname -s" was non-standard in 3.2.4 and - # below. - if test "$GCC" = "yes" ; then - SHLIB_CFLAGS="-fPIC -melf" - LDFLAGS="$LDFLAGS -melf -Wl,-Bexport" - else - SHLIB_CFLAGS="-Kpic -belf" - LDFLAGS="$LDFLAGS -belf -Wl,-Bexport" - fi - SHLIB_LD="ld -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - SINIX*5.4*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD="cc -G" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - SunOS-4*) - SHLIB_CFLAGS="-PIC" - SHLIB_LD="ld" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - - # SunOS can't handle version numbers with dots in them in library - # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it - # requires an extra version number at the end of .so file names. - # So, the library has to have a name like libtcl75.so.1.0 - - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - TCL_LIB_VERSIONS_OK=nodots - ;; - SunOS-5.[0-6]) - # Careful to not let 5.10+ fall into this case - - # Note: If _REENTRANT isn't defined, then Solaris - # won't define thread-safe library routines. - - cat >> confdefs.h <<\EOF -#define _REENTRANT 1 -EOF - - cat >> confdefs.h <<\EOF -#define _POSIX_PTHREAD_SEMANTICS 1 + cat >> confdefs.h <<\EOF +#define _POSIX_PTHREAD_SEMANTICS 1 EOF @@ -4153,7 +3845,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4157: checking for ld accepts -Bexport flag" >&5 +echo "configure:3849: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4161,14 +3853,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4215,13 +3907,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4219: checking sys/exec.h" >&5 +echo "configure:3911: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4239,7 +3931,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4259,13 +3951,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4263: checking a.out.h" >&5 +echo "configure:3955: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4283,7 +3975,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4287: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4303,13 +3995,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4307: checking sys/exec_aout.h" >&5 +echo "configure:3999: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4327,7 +4019,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4480,7 +4172,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4484: checking for build with symbols" >&5 +echo "configure:4176: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4541,21 +4233,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4545: checking for required early compiler flags" >&5 +echo "configure:4237: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4251: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4563,7 +4255,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4571,7 +4263,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4267: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4598,14 +4290,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4613,7 +4305,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4621,7 +4313,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4317: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4648,14 +4340,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4351: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4663,7 +4355,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4671,7 +4363,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4702,7 +4394,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4706: checking for 64-bit integer type" >&5 +echo "configure:4398: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4710,14 +4402,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4731,7 +4423,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4436: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4765,13 +4457,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4769: checking for struct dirent64" >&5 +echo "configure:4461: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4779,7 +4471,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4800,13 +4492,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4804: checking for struct stat64" >&5 +echo "configure:4496: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4814,7 +4506,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4510: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4837,12 +4529,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4841: checking for $ac_func" >&5 +echo "configure:4533: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4890,13 +4582,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4894: checking for off64_t" >&5 +echo "configure:4586: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4904,7 +4596,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4600: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4936,14 +4628,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4940: checking whether byte ordering is bigendian" >&5 +echo "configure:4632: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4954,11 +4646,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4958: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4969,7 +4661,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4989,7 +4681,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -5035,12 +4727,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5039: checking for $ac_func" >&5 +echo "configure:4731: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4759: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5097,12 +4789,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5101: checking for $ac_func" >&5 +echo "configure:4793: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5152,12 +4844,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5156: checking for strerror" >&5 +echo "configure:4848: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5204,12 +4896,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5208: checking for getwd" >&5 +echo "configure:4900: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5256,12 +4948,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5260: checking for wait3" >&5 +echo "configure:4952: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5308,12 +5000,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5312: checking for uname" >&5 +echo "configure:5004: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5359,13 +5051,20 @@ EOF fi + +if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ + test "`uname -r | awk -F. '{print $1}'`" -lt 7; then + # prior to Darwin 7, realpath is not threadsafe, so don't + # use it when threads are enabled, c.f. bug # 711232 + ac_cv_func_realpath=no +fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5364: checking for realpath" >&5 +echo "configure:5063: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5423,17 +5122,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5427: checking for $ac_hdr" >&5 +echo "configure:5126: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5437: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5460,7 +5159,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5464: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5163: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5469,7 +5168,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5484,7 +5183,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5501,7 +5200,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5515,7 +5214,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5533,7 +5232,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5548,7 +5247,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5566,7 +5265,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5583,7 +5282,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5601,7 +5300,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5617,7 +5316,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5635,7 +5334,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5652,7 +5351,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5695,19 +5394,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5699: checking for fd_set in sys/types" >&5 +echo "configure:5398: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5411: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5723,12 +5423,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5727: checking for fd_mask in sys/select" >&5 +echo "configure:5427: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < EOF @@ -5765,12 +5466,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5769: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5470: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5778,7 +5479,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5803,1779 +5504,2126 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5807: checking for $ac_hdr" >&5 +echo "configure:5508: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5817: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5518: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +echo "configure:5545: checking whether time.h and sys/time.h may both be included" >&5 +if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +int main() { +struct tm *tp; +; return 0; } +EOF +if { (eval echo configure:5559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_time=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_header_time" 1>&6 +if test $ac_cv_header_time = yes; then + cat >> confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF + +fi + + echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 +echo "configure:5580: checking for tm_zone in struct tm" >&5 +if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include <$ac_cv_struct_tm> +int main() { +struct tm tm; tm.tm_zone; +; return 0; } +EOF +if { (eval echo configure:5593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_struct_tm_zone=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_struct_tm_zone=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_struct_tm_zone" 1>&6 +if test "$ac_cv_struct_tm_zone" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_TM_ZONE 1 +EOF + +else + echo $ac_n "checking for tzname""... $ac_c" 1>&6 +echo "configure:5613: checking for tzname" >&5 +if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +#endif +int main() { +atoi(*tzname); +; return 0; } +EOF +if { (eval echo configure:5628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ac_cv_var_tzname=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_var_tzname=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_var_tzname" 1>&6 + if test $ac_cv_var_tzname = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_TZNAME 1 +EOF + + fi +fi + + + for ac_func in gmtime_r localtime_r +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:5653: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:5681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + + echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 +echo "configure:5707: checking tm_tzadj in struct tm" >&5 +if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < +int main() { +struct tm tm; tm.tm_tzadj; +; return 0; } +EOF +if { (eval echo configure:5720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_member_tm_tzadj=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_member_tm_tzadj=no +fi +rm -f conftest* +fi + +echo "$ac_t""$tcl_cv_member_tm_tzadj" 1>&6 + if test $tcl_cv_member_tm_tzadj = yes ; then + cat >> confdefs.h <<\EOF +#define HAVE_TM_TZADJ 1 +EOF + + fi + + echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 +echo "configure:5741: checking tm_gmtoff in struct tm" >&5 +if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < +int main() { +struct tm tm; tm.tm_gmtoff; +; return 0; } +EOF +if { (eval echo configure:5754: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_member_tm_gmtoff=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_member_tm_gmtoff=no +fi +rm -f conftest* +fi + +echo "$ac_t""$tcl_cv_member_tm_gmtoff" 1>&6 + if test $tcl_cv_member_tm_gmtoff = yes ; then + cat >> confdefs.h <<\EOF +#define HAVE_TM_GMTOFF 1 +EOF + + fi + + # + # Its important to include time.h in this check, as some systems + # (like convex) have timezone functions, etc. + # + echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 +echo "configure:5779: checking long timezone variable" >&5 +if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < +int main() { +extern long timezone; + timezone += 1; + exit (0); +; return 0; } +EOF +if { (eval echo configure:5794: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_timezone_long=yes else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + tcl_cv_timezone_long=no fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 + if test $tcl_cv_timezone_long = yes ; then + cat >> confdefs.h <<\EOF +#define HAVE_TIMEZONE_VAR 1 EOF - -else - echo "$ac_t""no" 1>&6 -fi -done - echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5844: checking whether time.h and sys/time.h may both be included" >&5 -if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + else + # + # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. + # + echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 +echo "configure:5817: checking time_t timezone variable" >&5 +if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -#include #include int main() { -struct tm *tp; +extern time_t timezone; + timezone += 1; + exit (0); ; return 0; } EOF -if { (eval echo configure:5858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_header_time=yes + tcl_cv_timezone_time=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_header_time=no + tcl_cv_timezone_time=no fi rm -f conftest* fi -echo "$ac_t""$ac_cv_header_time" 1>&6 -if test $ac_cv_header_time = yes; then - cat >> confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 +echo "$ac_t""$tcl_cv_timezone_time" 1>&6 + if test $tcl_cv_timezone_time = yes ; then + cat >> confdefs.h <<\EOF +#define HAVE_TIMEZONE_VAR 1 EOF -fi + fi + fi - echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5879: checking for tm_zone in struct tm" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then + +#-------------------------------------------------------------------- +# Some systems (e.g., IRIX 4.0.5) lack the st_blksize field +# in struct stat. But we might be able to use fstatfs instead. +#-------------------------------------------------------------------- +echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 +echo "configure:5859: checking for st_blksize in struct stat" >&5 +if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#include <$ac_cv_struct_tm> +#include int main() { -struct tm tm; tm.tm_zone; +struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5892: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_struct_tm_zone=yes + ac_cv_struct_st_blksize=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_struct_tm_zone=no + ac_cv_struct_st_blksize=no fi rm -f conftest* fi -echo "$ac_t""$ac_cv_struct_tm_zone" 1>&6 -if test "$ac_cv_struct_tm_zone" = yes; then +echo "$ac_t""$ac_cv_struct_st_blksize" 1>&6 +if test $ac_cv_struct_st_blksize = yes; then cat >> confdefs.h <<\EOF -#define HAVE_TM_ZONE 1 +#define HAVE_ST_BLKSIZE 1 EOF -else - echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5912: checking for tzname" >&5 -if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then +fi + +echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 +echo "configure:5893: checking for fstatfs" >&5 +if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#ifndef tzname /* For SGI. */ -extern char *tzname[]; /* RS6000 and others reject char **tzname. */ -#endif +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char fstatfs(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char fstatfs(); + int main() { -atoi(*tzname); + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_fstatfs) || defined (__stub___fstatfs) +choke me +#else +fstatfs(); +#endif + ; return 0; } EOF -if { (eval echo configure:5927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_var_tzname=yes + eval "ac_cv_func_fstatfs=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_var_tzname=no + eval "ac_cv_func_fstatfs=no" fi rm -f conftest* fi -echo "$ac_t""$ac_cv_var_tzname" 1>&6 - if test $ac_cv_var_tzname = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_TZNAME 1 +if eval "test \"`echo '$ac_cv_func_'fstatfs`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_FSTATFS 1 EOF - fi fi - for ac_func in gmtime_r localtime_r -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5952: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then +#-------------------------------------------------------------------- +# Some system have no memcmp or it does not work with 8 bit +# data, this checks it and add memcmp.o to LIBOBJS if needed +#-------------------------------------------------------------------- +echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 +echo "configure:5950: checking for 8-bit clean memcmp" >&5 +if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_memcmp_clean=no +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_func_memcmp_clean=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_func_memcmp_clean=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 +test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" + + +#-------------------------------------------------------------------- +# Some system like SunOS 4 and other BSD like systems +# have no memmove (we assume they have bcopy instead). +# {The replacement define is in compat/string.h} +#-------------------------------------------------------------------- +echo $ac_n "checking for memmove""... $ac_c" 1>&6 +echo "configure:5992: checking for memmove" >&5 +if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char $ac_func(); +char memmove(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined (__stub_memmove) || defined (__stub___memmove) choke me #else -$ac_func(); +memmove(); #endif ; return 0; } EOF -if { (eval echo configure:5980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "ac_cv_func_memmove=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "ac_cv_func_memmove=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 +cat >> confdefs.h <<\EOF +#define NO_MEMMOVE 1 +EOF + cat >> confdefs.h <<\EOF +#define NO_STRING_H 1 +EOF + fi -done - echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6006: checking tm_tzadj in struct tm" >&5 -if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then +#-------------------------------------------------------------------- +# On some systems strstr is broken: it returns a pointer even +# even if the original string is empty. +#-------------------------------------------------------------------- +if test "x${ac_cv_func_strstr}" = "xyes"; then + echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 +echo "configure:6053: checking proper strstr implementation" >&5 +if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else + + if test "$cross_compiling" = yes; then + tcl_cv_strstr_unbroken=broken +else cat > conftest.$ac_ext < -int main() { -struct tm tm; tm.tm_tzadj; -; return 0; } + + extern int strstr(); + int main() + { + exit(strstr("\0test", "test") ? 1 : 0); + } EOF -if { (eval echo configure:6018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_member_tm_tzadj=yes +if { (eval echo configure:6071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_strstr_unbroken=ok else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_member_tm_tzadj=no + rm -fr conftest* + tcl_cv_strstr_unbroken=broken fi -rm -f conftest* +rm -fr conftest* fi -echo "$ac_t""$tcl_cv_member_tm_tzadj" 1>&6 - if test $tcl_cv_member_tm_tzadj = yes ; then - cat >> confdefs.h <<\EOF -#define HAVE_TM_TZADJ 1 -EOF +fi +echo "$ac_t""$tcl_cv_strstr_unbroken" 1>&6 + if test $tcl_cv_strstr_unbroken = broken; then + LIBOBJS="$LIBOBJS strstr.o" fi +fi - echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6039: checking tm_gmtoff in struct tm" >&5 -if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then +#-------------------------------------------------------------------- +# Check for strtoul function. This is tricky because under some +# versions of AIX strtoul returns an incorrect terminator +# pointer for the string "0". +#-------------------------------------------------------------------- + +echo $ac_n "checking for strtoul""... $ac_c" 1>&6 +echo "configure:6098: checking for strtoul" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strtoul(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strtoul(); + int main() { -struct tm tm; tm.tm_gmtoff; + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strtoul) || defined (__stub___strtoul) +choke me +#else +strtoul(); +#endif + ; return 0; } EOF -if { (eval echo configure:6051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_member_tm_gmtoff=yes + eval "ac_cv_func_strtoul=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_member_tm_gmtoff=no + eval "ac_cv_func_strtoul=no" fi rm -f conftest* fi -echo "$ac_t""$tcl_cv_member_tm_gmtoff" 1>&6 - if test $tcl_cv_member_tm_gmtoff = yes ; then - cat >> confdefs.h <<\EOF -#define HAVE_TM_GMTOFF 1 -EOF - - fi +if eval "test \"`echo '$ac_cv_func_'strtoul`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 +fi - # - # Its important to include time.h in this check, as some systems - # (like convex) have timezone functions, etc. - # - echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6076: checking long timezone variable" >&5 -if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then +if test $tcl_ok = 1; then + echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 +echo "configure:6148: checking proper strtoul implementation" >&5 +if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else + + if test "$cross_compiling" = yes; then + tcl_cv_strtoul_unbroken=broken +else cat > conftest.$ac_ext < -int main() { -extern long timezone; - timezone += 1; - exit (0); -; return 0; } + + extern int strtoul(); + int main() + { + char *string = "0"; + char *term; + int value; + value = strtoul(string, &term, 0); + if ((value != 0) || (term != (string+1))) { + exit(1); + } + exit(0); + } EOF -if { (eval echo configure:6090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - tcl_cv_timezone_long=yes +if { (eval echo configure:6173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_strtoul_unbroken=ok else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_timezone_long=no + rm -fr conftest* + tcl_cv_strtoul_unbroken=broken fi -rm -f conftest* +rm -fr conftest* fi -echo "$ac_t""$tcl_cv_timezone_long" 1>&6 - if test $tcl_cv_timezone_long = yes ; then - cat >> confdefs.h <<\EOF -#define HAVE_TIMEZONE_VAR 1 -EOF +fi - else - # - # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. - # - echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6113: checking time_t timezone variable" >&5 -if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then +echo "$ac_t""$tcl_cv_strtoul_unbroken" 1>&6 + if test $tcl_cv_strtoul_unbroken = broken; then + tcl_ok=0 + fi +fi +if test $tcl_ok = 0; then + LIBOBJS="$LIBOBJS strtoul.o" +fi + +#-------------------------------------------------------------------- +# Check for the strtod function. This is tricky because in some +# versions of Linux strtod mis-parses strings starting with "+". +#-------------------------------------------------------------------- + +echo $ac_n "checking for strtod""... $ac_c" 1>&6 +echo "configure:6202: checking for strtod" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strtod(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strtod(); + int main() { -extern time_t timezone; - timezone += 1; - exit (0); + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strtod) || defined (__stub___strtod) +choke me +#else +strtod(); +#endif + ; return 0; } EOF -if { (eval echo configure:6127: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_timezone_time=yes + eval "ac_cv_func_strtod=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_timezone_time=no + eval "ac_cv_func_strtod=no" fi rm -f conftest* fi -echo "$ac_t""$tcl_cv_timezone_time" 1>&6 - if test $tcl_cv_timezone_time = yes ; then - cat >> confdefs.h <<\EOF -#define HAVE_TIMEZONE_VAR 1 -EOF - - fi - fi - +if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 +fi -#-------------------------------------------------------------------- -# Some systems (e.g., IRIX 4.0.5) lack the st_blksize field -# in struct stat. But we might be able to use fstatfs instead. -#-------------------------------------------------------------------- -echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6154: checking for st_blksize in struct stat" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then +if test $tcl_ok = 1; then + echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 +echo "configure:6252: checking proper strtod implementation" >&5 +if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else + + if test "$cross_compiling" = yes; then + tcl_cv_strtod_unbroken=broken +else cat > conftest.$ac_ext < -#include -int main() { -struct stat s; s.st_blksize; -; return 0; } + + extern double strtod(); + int main() + { + char *string = " +69"; + char *term; + double value; + value = strtod(string, &term); + if ((value != 69) || (term != (string+4))) { + exit(1); + } + exit(0); + } EOF -if { (eval echo configure:6167: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_struct_st_blksize=yes +if { (eval echo configure:6277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_strtod_unbroken=ok else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_struct_st_blksize=no + rm -fr conftest* + tcl_cv_strtod_unbroken=broken fi -rm -f conftest* +rm -fr conftest* fi -echo "$ac_t""$ac_cv_struct_st_blksize" 1>&6 -if test $ac_cv_struct_st_blksize = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ST_BLKSIZE 1 -EOF +fi +echo "$ac_t""$tcl_cv_strtod_unbroken" 1>&6 + if test $tcl_cv_strtod_unbroken = broken; then + tcl_ok=0 + fi +fi +if test $tcl_ok = 0; then + LIBOBJS="$LIBOBJS strtod.o" fi -echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6188: checking for fstatfs" >&5 -if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then +#-------------------------------------------------------------------- +# Under Solaris 2.4, strtod returns the wrong value for the +# terminating character under some conditions. Check for this +# and if the problem exists use a substitute procedure +# "fixstrtod" that corrects the error. +#-------------------------------------------------------------------- + + + echo $ac_n "checking for strtod""... $ac_c" 1>&6 +echo "configure:6309: checking for strtod" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char fstatfs(); +char strtod(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_fstatfs) || defined (__stub___fstatfs) +#if defined (__stub_strtod) || defined (__stub___strtod) choke me #else -fstatfs(); +strtod(); #endif ; return 0; } EOF -if { (eval echo configure:6216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_fstatfs=yes" + eval "ac_cv_func_strtod=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_fstatfs=no" + eval "ac_cv_func_strtod=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'fstatfs`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + tcl_strtod=1 else echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_FSTATFS 1 -EOF - +tcl_strtod=0 fi - -#-------------------------------------------------------------------- -# Some system have no memcmp or it does not work with 8 bit -# data, this checks it and add memcmp.o to LIBOBJS if needed -#-------------------------------------------------------------------- -echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6245: checking for 8-bit clean memcmp" >&5 -if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then + if test "$tcl_strtod" = 1; then + echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 +echo "configure:6359: checking for Solaris2.4/Tru64 strtod bugs" >&5 +if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$cross_compiling" = yes; then - ac_cv_func_memcmp_clean=no + + if test "$cross_compiling" = yes; then + tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - ac_cv_func_memcmp_clean=yes + tcl_cv_strtod_buggy=ok else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - ac_cv_func_memcmp_clean=no + tcl_cv_strtod_buggy=buggy fi rm -fr conftest* fi fi -echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 -test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" +echo "$ac_t""$tcl_cv_strtod_buggy" 1>&6 + if test "$tcl_cv_strtod_buggy" = buggy; then + LIBOBJS="$LIBOBJS fixstrtod.o" + cat >> confdefs.h <<\EOF +#define strtod fixstrtod +EOF + + fi + fi #-------------------------------------------------------------------- -# Some system like SunOS 4 and other BSD like systems -# have no memmove (we assume they have bcopy instead). -# {The replacement define is in compat/string.h} +# Check for various typedefs and provide substitutes if +# they don't exist. #-------------------------------------------------------------------- -echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6287: checking for memmove" >&5 -if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:6422: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char memmove(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_memmove) || defined (__stub___memmove) -choke me -#else -memmove(); -#endif - -; return 0; } +#include +#include +#include +#include EOF -if { (eval echo configure:6315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:6435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_func_memmove=yes" + ac_cv_header_stdc=yes else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_memmove=no" + ac_cv_header_stdc=no fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then - echo "$ac_t""yes" 1>&6 +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_MEMMOVE 1 -EOF - cat >> confdefs.h <<\EOF -#define NO_STRING_H 1 -EOF - + rm -rf conftest* + ac_cv_header_stdc=no fi +rm -f conftest* +fi -#-------------------------------------------------------------------- -# On some systems strstr is broken: it returns a pointer even -# even if the original string is empty. -#-------------------------------------------------------------------- -if test "x${ac_cv_func_strstr}" = "xyes"; then - echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6348: checking proper strstr implementation" >&5 -if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : else - - if test "$cross_compiling" = yes; then - tcl_cv_strstr_unbroken=broken + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : else cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } - extern int strstr(); - int main() - { - exit(strstr("\0test", "test") ? 1 : 0); - } EOF -if { (eval echo configure:6366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - tcl_cv_strstr_unbroken=ok + : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - tcl_cv_strstr_unbroken=broken + ac_cv_header_stdc=no fi rm -fr conftest* fi fi - -echo "$ac_t""$tcl_cv_strstr_unbroken" 1>&6 - if test $tcl_cv_strstr_unbroken = broken; then - LIBOBJS="$LIBOBJS strstr.o" - fi fi -#-------------------------------------------------------------------- -# Check for strtoul function. This is tricky because under some -# versions of AIX strtoul returns an incorrect terminator -# pointer for the string "0". -#-------------------------------------------------------------------- +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF -echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6393: checking for strtoul" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then +fi + +echo $ac_n "checking for mode_t""... $ac_c" 1>&6 +echo "configure:6526: checking for mode_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strtoul(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_strtoul) || defined (__stub___strtoul) -choke me -#else -strtoul(); +#include +#if STDC_HEADERS +#include +#include #endif - -; return 0; } EOF -if { (eval echo configure:6421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* - eval "ac_cv_func_strtoul=yes" + ac_cv_type_mode_t=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_strtoul=no" + ac_cv_type_mode_t=no fi rm -f conftest* + fi +echo "$ac_t""$ac_cv_type_mode_t" 1>&6 +if test $ac_cv_type_mode_t = no; then + cat >> confdefs.h <<\EOF +#define mode_t int +EOF -if eval "test \"`echo '$ac_cv_func_'strtoul`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_ok=1 -else - echo "$ac_t""no" 1>&6 -tcl_ok=0 fi -if test $tcl_ok = 1; then - echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:6443: checking proper strtoul implementation" >&5 -if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then +echo $ac_n "checking for pid_t""... $ac_c" 1>&6 +echo "configure:6559: checking for pid_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - if test "$cross_compiling" = yes; then - tcl_cv_strtoul_unbroken=broken -else cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_pid_t=yes +else + rm -rf conftest* + ac_cv_type_pid_t=no +fi +rm -f conftest* - extern int strtoul(); - int main() - { - char *string = "0"; - char *term; - int value; - value = strtoul(string, &term, 0); - if ((value != 0) || (term != (string+1))) { - exit(1); - } - exit(0); - } +fi +echo "$ac_t""$ac_cv_type_pid_t" 1>&6 +if test $ac_cv_type_pid_t = no; then + cat >> confdefs.h <<\EOF +#define pid_t int +EOF + +fi + +echo $ac_n "checking for size_t""... $ac_c" 1>&6 +echo "configure:6592: checking for size_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif EOF -if { (eval echo configure:6468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_strtoul_unbroken=ok +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_size_t=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_strtoul_unbroken=broken -fi -rm -fr conftest* + rm -rf conftest* + ac_cv_type_size_t=no fi +rm -f conftest* fi +echo "$ac_t""$ac_cv_type_size_t" 1>&6 +if test $ac_cv_type_size_t = no; then + cat >> confdefs.h <<\EOF +#define size_t unsigned +EOF -echo "$ac_t""$tcl_cv_strtoul_unbroken" 1>&6 - if test $tcl_cv_strtoul_unbroken = broken; then - tcl_ok=0 - fi -fi -if test $tcl_ok = 0; then - LIBOBJS="$LIBOBJS strtoul.o" fi -#-------------------------------------------------------------------- -# Check for the strtod function. This is tricky because in some -# versions of Linux strtod mis-parses strings starting with "+". -#-------------------------------------------------------------------- - -echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6497: checking for strtod" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then +echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 +echo "configure:6625: checking for uid_t in sys/types.h" >&5 +if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strtod(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_strtod) || defined (__stub___strtod) -choke me -#else -strtod(); -#endif - -; return 0; } +#include EOF -if { (eval echo configure:6525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "uid_t" >/dev/null 2>&1; then rm -rf conftest* - eval "ac_cv_func_strtod=yes" + ac_cv_type_uid_t=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_strtod=no" + ac_cv_type_uid_t=no fi rm -f conftest* + fi -if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_ok=1 -else - echo "$ac_t""no" 1>&6 -tcl_ok=0 +echo "$ac_t""$ac_cv_type_uid_t" 1>&6 +if test $ac_cv_type_uid_t = no; then + cat >> confdefs.h <<\EOF +#define uid_t int +EOF + + cat >> confdefs.h <<\EOF +#define gid_t int +EOF + fi -if test $tcl_ok = 1; then - echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:6547: checking proper strtod implementation" >&5 -if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then + +echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 +echo "configure:6660: checking for socklen_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$cross_compiling" = yes; then - tcl_cv_strtod_unbroken=broken -else - cat > conftest.$ac_ext < conftest.$ac_ext < + #include + #if STDC_HEADERS + #include + #include + #endif + EOF -if { (eval echo configure:6572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_strtod_unbroken=ok +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_socklen_t=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_strtod_unbroken=broken -fi -rm -fr conftest* + rm -rf conftest* + ac_cv_type_socklen_t=no fi +rm -f conftest* fi -echo "$ac_t""$tcl_cv_strtod_unbroken" 1>&6 - if test $tcl_cv_strtod_unbroken = broken; then - tcl_ok=0 - fi -fi -if test $tcl_ok = 0; then - LIBOBJS="$LIBOBJS strtod.o" +echo "$ac_t""$ac_cv_type_socklen_t" 1>&6 +if test $ac_cv_type_socklen_t = no; then + cat >> confdefs.h <<\EOF +#define socklen_t unsigned +EOF + fi #-------------------------------------------------------------------- -# Under Solaris 2.4, strtod returns the wrong value for the -# terminating character under some conditions. Check for this -# and if the problem exists use a substitute procedure -# "fixstrtod" that corrects the error. +# If a system doesn't have an opendir function (man, that's old!) +# then we have to supply a different version of dirent.h which +# is compatible with the substitute version of opendir that's +# provided. This version only works with V7-style directories. #-------------------------------------------------------------------- - - echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6604: checking for strtod" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then +echo $ac_n "checking for opendir""... $ac_c" 1>&6 +echo "configure:6705: checking for opendir" >&5 +if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char strtod(); +char opendir(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_strtod) || defined (__stub___strtod) +#if defined (__stub_opendir) || defined (__stub___opendir) choke me #else -strtod(); +opendir(); #endif ; return 0; } EOF -if { (eval echo configure:6632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_strtod=yes" + eval "ac_cv_func_opendir=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_strtod=no" + eval "ac_cv_func_opendir=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'opendir`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_strtod=1 + : else echo "$ac_t""no" 1>&6 -tcl_strtod=0 -fi - - if test "$tcl_strtod" = 1; then - echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6654: checking for Solaris2.4/Tru64 strtod bugs" >&5 -if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - if test "$cross_compiling" = yes; then - tcl_cv_strtod_buggy=buggy -else - cat > conftest.$ac_ext <> confdefs.h <<\EOF +#define USE_DIRENT2_H 1 EOF -if { (eval echo configure:6686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_strtod_buggy=ok -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_strtod_buggy=buggy -fi -rm -fr conftest* -fi fi -echo "$ac_t""$tcl_cv_strtod_buggy" 1>&6 - if test "$tcl_cv_strtod_buggy" = buggy; then - LIBOBJS="$LIBOBJS fixstrtod.o" - cat >> confdefs.h <<\EOF -#define strtod fixstrtod -EOF - - fi - fi - #-------------------------------------------------------------------- -# Check for various typedefs and provide substitutes if -# they don't exist. +# The check below checks whether defines the type +# "union wait" correctly. It's needed because of weirdness in +# HP-UX where "union wait" is defined in both the BSD and SYS-V +# environments. Checking the usability of WIFEXITED seems to do +# the trick. #-------------------------------------------------------------------- -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6717: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then +echo $ac_n "checking union wait""... $ac_c" 1>&6 +echo "configure:6766: checking union wait" >&5 +if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -#include -#include -#include +#include +#include +int main() { + +union wait x; +WIFEXITED(x); /* Generates compiler error if WIFEXITED + * uses an int. */ + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:6784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_header_stdc=yes + tcl_cv_union_wait=yes else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no + tcl_cv_union_wait=no fi rm -f conftest* - fi -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext < +echo "$ac_t""$tcl_cv_union_wait" 1>&6 +if test $tcl_cv_union_wait = no; then + cat >> confdefs.h <<\EOF +#define NO_UNION_WAIT 1 EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* fi -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : +#-------------------------------------------------------------------- +# Check whether there is an strncasecmp function on this system. +# This is a bit tricky because under SCO it's in -lsocket and +# under Sequent Dynix it's in -linet. +#-------------------------------------------------------------------- + +echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 +echo "configure:6811: checking for strncasecmp" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strncasecmp(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strncasecmp(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strncasecmp) || defined (__stub___strncasecmp) +choke me +#else +strncasecmp(); +#endif +; return 0; } EOF -if { (eval echo configure:6797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : +if { (eval echo configure:6839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strncasecmp=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - + rm -rf conftest* + eval "ac_cv_func_strncasecmp=no" fi +rm -f conftest* fi -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - +if eval "test \"`echo '$ac_cv_func_'strncasecmp`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi -echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6821: checking for mode_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then +if test "$tcl_ok" = 0; then + echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 +echo "configure:6861: checking for strncasecmp in -lsocket" >&5 +ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strncasecmp(); + +int main() { +strncasecmp() +; return 0; } EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then +if { (eval echo configure:6880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_type_mode_t=yes + eval "ac_cv_lib_$ac_lib_var=yes" else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_type_mode_t=no + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" fi -echo "$ac_t""$ac_cv_type_mode_t" 1>&6 -if test $ac_cv_type_mode_t = no; then - cat >> confdefs.h <<\EOF -#define mode_t int -EOF - +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi -echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6854: checking for pid_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then +fi +if test "$tcl_ok" = 0; then + echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 +echo "configure:6904: checking for strncasecmp in -linet" >&5 +ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strncasecmp(); + +int main() { +strncasecmp() +; return 0; } EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then +if { (eval echo configure:6923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_type_pid_t=yes + eval "ac_cv_lib_$ac_lib_var=yes" else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_type_pid_t=no + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" fi -echo "$ac_t""$ac_cv_type_pid_t" 1>&6 -if test $ac_cv_type_pid_t = no; then - cat >> confdefs.h <<\EOF -#define pid_t int -EOF +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=1 +else + echo "$ac_t""no" 1>&6 +tcl_ok=0 +fi fi +if test "$tcl_ok" = 0; then + LIBOBJS="$LIBOBJS strncasecmp.o" +fi -echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6887: checking for size_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then +#-------------------------------------------------------------------- +# The code below deals with several issues related to gettimeofday: +# 1. Some systems don't provide a gettimeofday function at all +# (set NO_GETTOD if this is the case). +# 2. SGI systems don't use the BSD form of the gettimeofday function, +# but they have a BSDgettimeofday function that can be used instead. +# 3. See if gettimeofday is declared in the header file. +# if not, set the GETTOD_NOT_DECLARED flag so that tclPort.h can +# declare it. +#-------------------------------------------------------------------- + +echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 +echo "configure:6961: checking for BSDgettimeofday" >&5 +if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char BSDgettimeofday(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char BSDgettimeofday(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_BSDgettimeofday) || defined (__stub___BSDgettimeofday) +choke me +#else +BSDgettimeofday(); #endif + +; return 0; } EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then +if { (eval echo configure:6989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_type_size_t=yes + eval "ac_cv_func_BSDgettimeofday=yes" else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_type_size_t=no + eval "ac_cv_func_BSDgettimeofday=no" fi rm -f conftest* - fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then + +if eval "test \"`echo '$ac_cv_func_'BSDgettimeofday`\" = yes"; then + echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF -#define size_t unsigned +#define HAVE_BSDGETTIMEOFDAY 1 EOF -fi +else + echo "$ac_t""no" 1>&6 -echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6920: checking for uid_t in sys/types.h" >&5 -if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then + echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 +echo "configure:7011: checking for gettimeofday" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gettimeofday(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gettimeofday(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday) +choke me +#else +gettimeofday(); +#endif + +; return 0; } EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "uid_t" >/dev/null 2>&1; then +if { (eval echo configure:7039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_type_uid_t=yes + eval "ac_cv_func_gettimeofday=yes" else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_type_uid_t=no + eval "ac_cv_func_gettimeofday=no" fi rm -f conftest* - fi -echo "$ac_t""$ac_cv_type_uid_t" 1>&6 -if test $ac_cv_type_uid_t = no; then - cat >> confdefs.h <<\EOF -#define uid_t int -EOF - - cat >> confdefs.h <<\EOF -#define gid_t int +if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_GETTOD 1 EOF fi -echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6955: checking for socklen_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then +fi + +echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 +echo "configure:7066: checking for gettimeofday declaration" >&5 +if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < - #include - #if STDC_HEADERS - #include - #include - #endif - +#include EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + egrep "gettimeofday" >/dev/null 2>&1; then rm -rf conftest* - ac_cv_type_socklen_t=yes + tcl_cv_grep_gettimeofday=present else rm -rf conftest* - ac_cv_type_socklen_t=no + tcl_cv_grep_gettimeofday=missing fi rm -f conftest* fi -echo "$ac_t""$ac_cv_type_socklen_t" 1>&6 -if test $ac_cv_type_socklen_t = no; then +echo "$ac_t""$tcl_cv_grep_gettimeofday" 1>&6 +if test $tcl_cv_grep_gettimeofday = missing ; then cat >> confdefs.h <<\EOF -#define socklen_t unsigned +#define GETTOD_NOT_DECLARED 1 EOF fi #-------------------------------------------------------------------- -# If a system doesn't have an opendir function (man, that's old!) -# then we have to supply a different version of dirent.h which -# is compatible with the substitute version of opendir that's -# provided. This version only works with V7-style directories. +# The following code checks to see whether it is possible to get +# signed chars on this platform. This is needed in order to +# properly generate sign-extended ints from character values. #-------------------------------------------------------------------- -echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6999: checking for opendir" >&5 -if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then +echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 +echo "configure:7103: checking whether char is unsigned" >&5 +if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_opendir) || defined (__stub___opendir) -choke me -#else -opendir(); +#ifdef __CHAR_UNSIGNED__ + yes #endif -; return 0; } EOF -if { (eval echo configure:7027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then rm -rf conftest* - eval "ac_cv_func_opendir=yes" + ac_cv_c_char_unsigned=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_opendir=no" + ac_cv_c_char_unsigned=no fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'opendir`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define USE_DIRENT2_H 1 +if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_c_char_unsigned=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_char_unsigned=no +fi +rm -fr conftest* +fi fi +fi +echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6 +if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then + cat >> confdefs.h <<\EOF +#define __CHAR_UNSIGNED__ 1 +EOF -#-------------------------------------------------------------------- -# The check below checks whether defines the type -# "union wait" correctly. It's needed because of weirdness in -# HP-UX where "union wait" is defined in both the BSD and SYS-V -# environments. Checking the usability of WIFEXITED seems to do -# the trick. -#-------------------------------------------------------------------- +fi -echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7060: checking union wait" >&5 -if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then +echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 +echo "configure:7166: checking signed char declarations" >&5 +if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -#include + int main() { -union wait x; -WIFEXITED(x); /* Generates compiler error if WIFEXITED - * uses an int. */ - + signed char *p; + p = 0; + ; return 0; } EOF -if { (eval echo configure:7077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7182: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - tcl_cv_union_wait=yes + tcl_cv_char_signed=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_union_wait=no + tcl_cv_char_signed=no fi rm -f conftest* fi -echo "$ac_t""$tcl_cv_union_wait" 1>&6 -if test $tcl_cv_union_wait = no; then +echo "$ac_t""$tcl_cv_char_signed" 1>&6 +if test $tcl_cv_char_signed = yes; then cat >> confdefs.h <<\EOF -#define NO_UNION_WAIT 1 +#define HAVE_SIGNED_CHAR 1 EOF fi #-------------------------------------------------------------------- -# Check whether there is an strncasecmp function on this system. -# This is a bit tricky because under SCO it's in -lsocket and -# under Sequent Dynix it's in -linet. +# Does putenv() copy or not? We need to know to avoid memory leaks. #-------------------------------------------------------------------- -echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7104: checking for strncasecmp" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then +echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 +echo "configure:7207: checking for a putenv() that copies the buffer" >&5 +if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else + + if test "$cross_compiling" = yes; then + tcl_cv_putenv_copy=no +else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strncasecmp(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_strncasecmp) || defined (__stub___strncasecmp) -choke me -#else -strncasecmp(); -#endif -; return 0; } + #include + #define OURVAR "havecopy=yes" + int main (int argc, char *argv[]) + { + char *foo, *bar; + foo = (char *)strdup(OURVAR); + putenv(foo); + strcpy((char *)(strchr(foo, '=') + 1), "no"); + bar = getenv("havecopy"); + if (!strcmp(bar, "no")) { + /* doesnt copy */ + return 0; + } else { + /* does copy */ + return 1; + } + } + EOF -if { (eval echo configure:7132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_strncasecmp=yes" +if { (eval echo configure:7238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_putenv_copy=no else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_strncasecmp=no" + rm -fr conftest* + tcl_cv_putenv_copy=yes fi -rm -f conftest* +rm -fr conftest* +fi + +fi + +echo "$ac_t""$tcl_cv_putenv_copy" 1>&6 +if test $tcl_cv_putenv_copy = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_PUTENV_THAT_COPIES 1 +EOF + fi -if eval "test \"`echo '$ac_cv_func_'strncasecmp`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_ok=1 +#-------------------------------------------------------------------- +# Check for support of nl_langinfo function +#-------------------------------------------------------------------- + + + # Check whether --enable-langinfo or --disable-langinfo was given. +if test "${enable_langinfo+set}" = set; then + enableval="$enable_langinfo" + langinfo_ok=$enableval else - echo "$ac_t""no" 1>&6 -tcl_ok=0 + langinfo_ok=yes fi -if test "$tcl_ok" = 0; then - echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7154: checking for strncasecmp in -lsocket" >&5 -ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + + HAVE_LANGINFO=0 + if test "$langinfo_ok" = "yes"; then + ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 +echo "configure:7278: checking for langinfo.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-lsocket $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:7173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:7288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tcl_ok=1 + langinfo_ok=yes else echo "$ac_t""no" 1>&6 -tcl_ok=0 +langinfo_ok=no fi -fi -if test "$tcl_ok" = 0; then - echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7197: checking for strncasecmp in -linet" >&5 -ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + fi + echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 +echo "configure:7312: checking whether to use nl_langinfo" >&5 + if test "$langinfo_ok" = "yes"; then + if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_save_LIBS="$LIBS" -LIBS="-linet $LIBS" -cat > conftest.$ac_ext < conftest.$ac_ext < int main() { -strncasecmp() +nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + tcl_cv_langinfo_h=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + tcl_cv_langinfo_h=no fi rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - tcl_ok=1 -else - echo "$ac_t""no" 1>&6 -tcl_ok=0 fi -fi -if test "$tcl_ok" = 0; then - LIBOBJS="$LIBOBJS strncasecmp.o" -fi + echo "$ac_t""$tcl_cv_langinfo_h" 1>&6 + if test $tcl_cv_langinfo_h = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_LANGINFO 1 +EOF + + fi + else + echo "$ac_t""$langinfo_ok" 1>&6 + fi + #-------------------------------------------------------------------- -# The code below deals with several issues related to gettimeofday: -# 1. Some systems don't provide a gettimeofday function at all -# (set NO_GETTOD if this is the case). -# 2. SGI systems don't use the BSD form of the gettimeofday function, -# but they have a BSDgettimeofday function that can be used instead. -# 3. See if gettimeofday is declared in the header file. -# if not, set the GETTOD_NOT_DECLARED flag so that tclPort.h can -# declare it. +# Darwin specific API checks and defines #-------------------------------------------------------------------- -echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7254: checking for BSDgettimeofday" >&5 -if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then +if test "`uname -s`" = "Darwin" ; then + for ac_hdr in copyfile.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:7358: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char BSDgettimeofday(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_BSDgettimeofday) || defined (__stub___BSDgettimeofday) -choke me -#else -BSDgettimeofday(); -#endif - -; return 0; } +#include <$ac_hdr> EOF -if { (eval echo configure:7282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:7368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_func_BSDgettimeofday=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_BSDgettimeofday=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'BSDgettimeofday`\" = yes"; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_BSDGETTIMEOFDAY 1 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done - echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7304: checking for gettimeofday" >&5 -if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then + for ac_func in copyfile +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:7397: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char gettimeofday(); +char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday) +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -gettimeofday(); +$ac_func(); #endif ; return 0; } EOF -if { (eval echo configure:7332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_gettimeofday=yes" + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_gettimeofday=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_GETTOD 1 -EOF - -fi - - -fi - -echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7359: checking for gettimeofday declaration" >&5 -if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "gettimeofday" >/dev/null 2>&1; then - rm -rf conftest* - tcl_cv_grep_gettimeofday=present -else - rm -rf conftest* - tcl_cv_grep_gettimeofday=missing -fi -rm -f conftest* - -fi - -echo "$ac_t""$tcl_cv_grep_gettimeofday" 1>&6 -if test $tcl_cv_grep_gettimeofday = missing ; then - cat >> confdefs.h <<\EOF -#define GETTOD_NOT_DECLARED 1 -EOF - -fi - -#-------------------------------------------------------------------- -# The following code checks to see whether it is possible to get -# signed chars on this platform. This is needed in order to -# properly generate sign-extended ints from character values. -#-------------------------------------------------------------------- - -echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7395: checking whether char is unsigned" >&5 -if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$GCC" = yes; then - # GCC predefines this symbol on systems where it applies. -cat > conftest.$ac_ext <&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_c_char_unsigned=yes -else + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_c_char_unsigned=no + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&2; exit 1; } + echo "$ac_t""no" 1>&6 +fi +done + + if test $tcl_corefoundation = yes; then + for ac_hdr in libkern/OSAtomic.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:7454: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF -if { (eval echo configure:7434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_c_char_unsigned=yes +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:7464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_char_unsigned=no -fi -rm -fr conftest* -fi - + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi +rm -f conftest* fi - -echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6 -if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - cat >> confdefs.h <<\EOF -#define __CHAR_UNSIGNED__ 1 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 fi +done -echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7458: checking signed char declarations" >&5 -if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then + for ac_func in OSSpinLockLock +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:7493: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); int main() { - signed char *p; - p = 0; - +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + ; return 0; } EOF -if { (eval echo configure:7473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_char_signed=yes + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_char_signed=no + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi -echo "$ac_t""$tcl_cv_char_signed" 1>&6 -if test $tcl_cv_char_signed = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_SIGNED_CHAR 1 +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi +done -#-------------------------------------------------------------------- -# Does putenv() copy or not? We need to know to avoid memory leaks. -#-------------------------------------------------------------------- - -echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7498: checking for a putenv() that copies the buffer" >&5 -if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then + for ac_func in pthread_atfork +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:7548: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$cross_compiling" = yes; then - tcl_cv_putenv_copy=no -else cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); - #include - #define OURVAR "havecopy=yes" - int main (int argc, char *argv) - { - char *foo, *bar; - foo = (char *)strdup(OURVAR); - putenv(foo); - strcpy((char *)(strchr(foo, '=') + 1), "no"); - bar = getenv("havecopy"); - if (!strcmp(bar, "no")) { - /* doesnt copy */ - return 0; - } else { - /* does copy */ - return 1; - } - } - +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } EOF -if { (eval echo configure:7528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_putenv_copy=no +if { (eval echo configure:7576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_putenv_copy=yes + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" fi -rm -fr conftest* +rm -f conftest* fi - +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi +done -echo "$ac_t""$tcl_cv_putenv_copy" 1>&6 -if test $tcl_cv_putenv_copy = yes; then + fi cat >> confdefs.h <<\EOF -#define HAVE_PUTENV_THAT_COPIES 1 +#define USE_VFORK 1 EOF -fi - -#-------------------------------------------------------------------- -# Check for support of nl_langinfo function -#-------------------------------------------------------------------- - - - # Check whether --enable-langinfo or --disable-langinfo was given. -if test "${enable_langinfo+set}" = set; then - enableval="$enable_langinfo" - langinfo_ok=$enableval -else - langinfo_ok=yes -fi + cat >> confdefs.h <<\EOF +#define TCL_DEFAULT_ENCODING "utf-8" +EOF + cat >> confdefs.h <<\EOF +#define TCL_LOAD_FROM_MEMORY 1 +EOF - HAVE_LANGINFO=0 - if test "$langinfo_ok" = "yes"; then - ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7569: checking for langinfo.h" >&5 + for ac_hdr in AvailabilityMacros.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:7617: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7579: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7627: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7591,74 +7639,91 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - langinfo_ok=yes + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 -langinfo_ok=no fi +done - fi - echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7603: checking whether to use nl_langinfo" >&5 - if test "$langinfo_ok" = "yes"; then - if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then + if test "$ac_cv_header_AvailabilityMacros_h" = yes; then + echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 +echo "configure:7655: checking if weak import is available" >&5 +if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < + + #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1020 + #error __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1020 + #endif + #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1020 + #error MAC_OS_X_VERSION_MIN_REQUIRED < 1020 + #endif + int rand(void) __attribute__((weak_import)); + int main() { -nl_langinfo(CODESET); +rand(); ; return 0; } EOF -if { (eval echo configure:7616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - tcl_cv_langinfo_h=yes + tcl_cv_cc_weak_import=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - tcl_cv_langinfo_h=no + tcl_cv_cc_weak_import=no fi rm -f conftest* + CFLAGS=$hold_cflags fi - echo "$ac_t""$tcl_cv_langinfo_h" 1>&6 - if test $tcl_cv_langinfo_h = yes; then +echo "$ac_t""$tcl_cv_cc_weak_import" 1>&6 + if test $tcl_cv_cc_weak_import = yes; then cat >> confdefs.h <<\EOF -#define HAVE_LANGINFO 1 +#define HAVE_WEAK_IMPORT 1 EOF fi - else - echo "$ac_t""$langinfo_ok" 1>&6 fi - +fi #-------------------------------------------------------------------- # Check for support of fts functions (readdir replacement) #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:7645: checking for fts" >&5 +echo "configure:7706: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < - #include - #include + + #include + #include + #include + int main() { -char*const p[2] = {"/", NULL}; - FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); - FTSENT *e = fts_read(f); fts_close(f); + + char*const p[2] = {"/", NULL}; + FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); + FTSENT *e = fts_read(f); fts_close(f); + ; return 0; } EOF -if { (eval echo configure:7662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -7690,17 +7755,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7694: checking for $ac_hdr" >&5 +echo "configure:7759: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7730,17 +7795,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7734: checking for $ac_hdr" >&5 +echo "configure:7799: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7768,7 +7833,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:7772: checking system version" >&5 +echo "configure:7837: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7799,7 +7864,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7803: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7868: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -7860,38 +7925,38 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then - echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7865: checking how to package libraries" >&5 - # Check whether --enable-framework or --disable-framework was given. + if test "`uname -s`" = "Darwin" ; then + echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 +echo "configure:7931: checking how to package libraries" >&5 + # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" - tcl_ok=$enableval + enable_framework=$enableval else - tcl_ok=no + enable_framework=no fi - - if test "${enable_framework+set}" = set; then - enableval="$enable_framework" - tcl_ok=$enableval - else - tcl_ok=no - fi - - if test "$tcl_ok" = "yes" ; then - echo "$ac_t""framework" 1>&6 - FRAMEWORK_BUILD=1 - if test "${SHARED_BUILD}" = "0" ; then - echo "configure: warning: Frameworks can only be built if --enable-shared is yes" 1>&2 - FRAMEWORK_BUILD=0 + if test $enable_framework = yes; then + if test $SHARED_BUILD = 0; then + echo "configure: warning: Frameworks can only be built if --enable-shared is yes" 1>&2 + enable_framework=no + fi + if test $tcl_corefoundation = no; then + echo "configure: warning: Frameworks can only be used when CoreFoundation is available" 1>&2 + enable_framework=no + fi fi - if test $tcl_corefoundation = no; then - echo "configure: warning: Frameworks can only be used when CoreFoundation is available" 1>&2 + if test $enable_framework = yes; then + echo "$ac_t""framework" 1>&6 + FRAMEWORK_BUILD=1 + else + if test $SHARED_BUILD = 1; then + echo "$ac_t""shared library" 1>&6 + else + echo "$ac_t""static library" 1>&6 + fi FRAMEWORK_BUILD=0 fi - else - echo "$ac_t""standard shared library" 1>&6 - FRAMEWORK_BUILD=0 fi TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version ${TCL_VERSION}`echo ${TCL_PATCH_LEVEL} | awk '{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}'`" diff --git a/unix/configure.in b/unix/configure.in index 13bc03e..c4dc1b3 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.27 2006/05/04 13:09:19 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.28 2006/07/20 06:21:45 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -133,6 +133,13 @@ AC_CHECK_FUNC(strerror, , [AC_DEFINE(NO_STRERROR)]) AC_CHECK_FUNC(getwd, , [AC_DEFINE(NO_GETWD)]) AC_CHECK_FUNC(wait3, , [AC_DEFINE(NO_WAIT3)]) AC_CHECK_FUNC(uname, , [AC_DEFINE(NO_UNAME)]) + +if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ + test "`uname -r | awk -F. '{print [$]1}'`" -lt 7; then + # prior to Darwin 7, realpath is not threadsafe, so don't + # use it when threads are enabled, c.f. bug # 711232 + ac_cv_func_realpath=no +fi AC_CHECK_FUNC(realpath, , [AC_DEFINE(NO_REALPATH)]) #--------------------------------------------------------------------------- @@ -153,14 +160,14 @@ SC_SERIAL_PORT # special flag. #-------------------------------------------------------------------- -AC_CACHE_CHECK([for fd_set in sys/types], tcl_cv_type_fd_set, +AC_CACHE_CHECK([for fd_set in sys/types], tcl_cv_type_fd_set, [ AC_TRY_COMPILE([#include ],[fd_set readMask, writeMask;], - tcl_cv_type_fd_set=yes, tcl_cv_type_fd_set=no)) + tcl_cv_type_fd_set=yes, tcl_cv_type_fd_set=no)]) tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then - AC_CACHE_CHECK([for fd_mask in sys/select], tcl_cv_grep_fd_mask, + AC_CACHE_CHECK([for fd_mask in sys/select], tcl_cv_grep_fd_mask, [ AC_EGREP_HEADER(fd_mask, sys/select.h, - tcl_cv_grep_fd_mask=present, tcl_cv_grep_fd_mask=missing)) + tcl_cv_grep_fd_mask=present, tcl_cv_grep_fd_mask=missing)]) if test $tcl_cv_grep_fd_mask = present; then AC_DEFINE(HAVE_SYS_SELECT_H) tcl_ok=yes @@ -295,8 +302,8 @@ AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UID_T -AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, - [AC_EGREP_CPP(changequote(<<,>>)dnl +AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, [ + AC_EGREP_CPP(changequote(<<,>>)dnl <<(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]>>dnl changequote([,]),[ #include @@ -327,13 +334,13 @@ AC_CHECK_FUNC(opendir, , [AC_DEFINE(USE_DIRENT2_H)]) # the trick. #-------------------------------------------------------------------- -AC_CACHE_CHECK([union wait], tcl_cv_union_wait, +AC_CACHE_CHECK([union wait], tcl_cv_union_wait, [ AC_TRY_LINK([#include #include ], [ union wait x; WIFEXITED(x); /* Generates compiler error if WIFEXITED * uses an int. */ - ], tcl_cv_union_wait=yes, tcl_cv_union_wait=no)) + ], tcl_cv_union_wait=yes, tcl_cv_union_wait=no)]) if test $tcl_cv_union_wait = no; then AC_DEFINE(NO_UNION_WAIT) fi @@ -370,9 +377,9 @@ AC_CHECK_FUNC(BSDgettimeofday, [AC_DEFINE(HAVE_BSDGETTIMEOFDAY)], [ AC_CHECK_FUNC(gettimeofday, , [AC_DEFINE(NO_GETTOD)]) ]) -AC_CACHE_CHECK([for gettimeofday declaration], tcl_cv_grep_gettimeofday, +AC_CACHE_CHECK([for gettimeofday declaration], tcl_cv_grep_gettimeofday, [ AC_EGREP_HEADER(gettimeofday, sys/time.h, - tcl_cv_grep_gettimeofday=present, tcl_cv_grep_gettimeofday=missing)) + tcl_cv_grep_gettimeofday=present, tcl_cv_grep_gettimeofday=missing)]) if test $tcl_cv_grep_gettimeofday = missing ; then AC_DEFINE(GETTOD_NOT_DECLARED) fi @@ -384,11 +391,11 @@ fi #-------------------------------------------------------------------- AC_C_CHAR_UNSIGNED -AC_CACHE_CHECK([signed char declarations], tcl_cv_char_signed, +AC_CACHE_CHECK([signed char declarations], tcl_cv_char_signed, [ AC_TRY_COMPILE(, [ signed char *p; p = 0; - ], tcl_cv_char_signed=yes, tcl_cv_char_signed=no)) + ], tcl_cv_char_signed=yes, tcl_cv_char_signed=no)]) if test $tcl_cv_char_signed = yes; then AC_DEFINE(HAVE_SIGNED_CHAR) fi @@ -397,7 +404,7 @@ fi # Does putenv() copy or not? We need to know to avoid memory leaks. #-------------------------------------------------------------------- -AC_CACHE_CHECK([for a putenv() that copies the buffer], tcl_cv_putenv_copy, +AC_CACHE_CHECK([for a putenv() that copies the buffer], tcl_cv_putenv_copy, [ AC_TRY_RUN([ #include #define OURVAR "havecopy=yes" @@ -419,8 +426,7 @@ AC_CACHE_CHECK([for a putenv() that copies the buffer], tcl_cv_putenv_copy, ], tcl_cv_putenv_copy=no, tcl_cv_putenv_copy=yes, - tcl_cv_putenv_copy=no) -) + tcl_cv_putenv_copy=no)]) if test $tcl_cv_putenv_copy = yes; then AC_DEFINE(HAVE_PUTENV_THAT_COPIES) fi @@ -432,19 +438,58 @@ fi SC_ENABLE_LANGINFO #-------------------------------------------------------------------- +# Darwin specific API checks and defines +#-------------------------------------------------------------------- + +if test "`uname -s`" = "Darwin" ; then + AC_CHECK_HEADERS(copyfile.h) + AC_CHECK_FUNCS(copyfile) + if test $tcl_corefoundation = yes; then + AC_CHECK_HEADERS(libkern/OSAtomic.h) + AC_CHECK_FUNCS(OSSpinLockLock) + AC_CHECK_FUNCS(pthread_atfork) + fi + AC_DEFINE(USE_VFORK) + AC_DEFINE(TCL_DEFAULT_ENCODING, "utf-8") + AC_DEFINE(TCL_LOAD_FROM_MEMORY) + AC_CHECK_HEADERS(AvailabilityMacros.h) + if test "$ac_cv_header_AvailabilityMacros_h" = yes; then + AC_CACHE_CHECK([if weak import is available], tcl_cv_cc_weak_import, [ + hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" + AC_TRY_LINK([ + #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1020 + #error __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1020 + #endif + #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1020 + #error MAC_OS_X_VERSION_MIN_REQUIRED < 1020 + #endif + int rand(void) __attribute__((weak_import)); + ], [rand();], + tcl_cv_cc_weak_import=yes, tcl_cv_cc_weak_import=no) + CFLAGS=$hold_cflags]) + if test $tcl_cv_cc_weak_import = yes; then + AC_DEFINE(HAVE_WEAK_IMPORT) + fi + fi +fi + +#-------------------------------------------------------------------- # Check for support of fts functions (readdir replacement) #-------------------------------------------------------------------- AC_CACHE_CHECK([for fts], tcl_cv_api_fts, [ - AC_TRY_LINK([#include - #include - #include ], - [char*const p[2] = {"/", NULL}; - FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); - FTSENT *e = fts_read(f); fts_close(f);], - tcl_cv_api_fts=yes, tcl_cv_api_fts=no)]) + AC_TRY_LINK([ + #include + #include + #include + ], [ + char*const p[2] = {"/", NULL}; + FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); + FTSENT *e = fts_read(f); fts_close(f); + ], tcl_cv_api_fts=yes, tcl_cv_api_fts=no)]) if test $tcl_cv_api_fts = yes; then - AC_DEFINE(HAVE_FTS, 1, [Do we have fts functions?]) + AC_DEFINE(HAVE_FTS) fi #-------------------------------------------------------------------- diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 57b053e..f81af6d 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -539,32 +539,32 @@ AC_DEFUN([SC_ENABLE_SHARED], [ #------------------------------------------------------------------------ AC_DEFUN([SC_ENABLE_FRAMEWORK], [ - AC_MSG_CHECKING([how to package libraries]) - AC_ARG_ENABLE(framework, - [ --enable-framework package shared libraries in MacOSX frameworks [--disable-framework]], - [tcl_ok=$enableval], [tcl_ok=no]) - - if test "${enable_framework+set}" = set; then - enableval="$enable_framework" - tcl_ok=$enableval - else - tcl_ok=no - fi - - if test "$tcl_ok" = "yes" ; then - AC_MSG_RESULT([framework]) - FRAMEWORK_BUILD=1 - if test "${SHARED_BUILD}" = "0" ; then - AC_MSG_WARN([Frameworks can only be built if --enable-shared is yes]) - FRAMEWORK_BUILD=0 + if test "`uname -s`" = "Darwin" ; then + AC_MSG_CHECKING([how to package libraries]) + AC_ARG_ENABLE(framework, + [ --enable-framework package shared libraries in MacOSX frameworks [--disable-framework]], + [enable_framework=$enableval], [enable_framework=no]) + if test $enable_framework = yes; then + if test $SHARED_BUILD = 0; then + AC_MSG_WARN([Frameworks can only be built if --enable-shared is yes]) + enable_framework=no + fi + if test $tcl_corefoundation = no; then + AC_MSG_WARN([Frameworks can only be used when CoreFoundation is available]) + enable_framework=no + fi fi - if test $tcl_corefoundation = no; then - AC_MSG_WARN([Frameworks can only be used when CoreFoundation is available]) + if test $enable_framework = yes; then + AC_MSG_RESULT([framework]) + FRAMEWORK_BUILD=1 + else + if test $SHARED_BUILD = 1; then + AC_MSG_RESULT([shared library]) + else + AC_MSG_RESULT([static library]) + fi FRAMEWORK_BUILD=0 fi - else - AC_MSG_RESULT([standard shared library]) - FRAMEWORK_BUILD=0 fi ]) @@ -1603,24 +1603,11 @@ dnl AC_CHECK_TOOL(AR, ar) if test $tcl_cv_lib_corefoundation = yes; then LIBS="$LIBS -framework CoreFoundation" AC_DEFINE(HAVE_COREFOUNDATION) - AC_CHECK_HEADERS(libkern/OSAtomic.h) - AC_CHECK_FUNCS(OSSpinLockLock) - AC_CHECK_FUNCS(pthread_atfork) + else + tcl_corefoundation=no fi fi - AC_CHECK_HEADERS(copyfile.h) - AC_CHECK_FUNCS(copyfile) AC_DEFINE(MAC_OSX_TCL) - AC_DEFINE(USE_VFORK) - AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8") - AC_DEFINE(TCL_LOAD_FROM_MEMORY) - # prior to Darwin 7, realpath is not threadsafe, so don't - # use it when threads are enabled, c.f. bug # 711232: - AC_CHECK_FUNC(realpath) - if test $ac_cv_func_realpath = yes -a "${TCL_THREADS}" = 1 \ - -a `uname -r | awk -F. '{print [$]1}'` -lt 7 ; then - ac_cv_func_realpath=no - fi ;; NEXTSTEP-*) SHLIB_CFLAGS="" @@ -2266,7 +2253,7 @@ int main() { #-------------------------------------------------------------------- AC_DEFUN([SC_MISSING_POSIX_HEADERS], [ - AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, + AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, [ AC_TRY_LINK([#include #include ], [ #ifndef _POSIX_SOURCE @@ -2286,7 +2273,7 @@ d = opendir("foobar"); entryPtr = readdir(d); p = entryPtr->d_name; closedir(d); -], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no)) +], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no)]) if test $tcl_cv_dirent_h = no; then AC_DEFINE(NO_DIRENT_H) @@ -2484,16 +2471,16 @@ AC_DEFUN([SC_TIME_HANDLER], [ AC_CHECK_FUNCS(gmtime_r localtime_r) - AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, + AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [ AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_tzadj;], - tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)) + tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)]) if test $tcl_cv_member_tm_tzadj = yes ; then AC_DEFINE(HAVE_TM_TZADJ) fi - AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, + AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, [ AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_gmtoff;], - tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)) + tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)]) if test $tcl_cv_member_tm_gmtoff = yes ; then AC_DEFINE(HAVE_TM_GMTOFF) fi @@ -2502,24 +2489,24 @@ AC_DEFUN([SC_TIME_HANDLER], [ # Its important to include time.h in this check, as some systems # (like convex) have timezone functions, etc. # - AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, + AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, [ AC_TRY_COMPILE([#include ], [extern long timezone; timezone += 1; exit (0);], - tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)) + tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)]) if test $tcl_cv_timezone_long = yes ; then AC_DEFINE(HAVE_TIMEZONE_VAR) else # # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # - AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, + AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, [ AC_TRY_COMPILE([#include ], [extern time_t timezone; timezone += 1; exit (0);], - tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)) + tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)]) if test $tcl_cv_timezone_time = yes ; then AC_DEFINE(HAVE_TIMEZONE_VAR) fi diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 121792f..10dfd54 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.7 2006/03/16 09:15:50 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.8 2006/07/20 06:21:46 das Exp $ */ #include "tclInt.h" @@ -36,11 +36,7 @@ typedef struct Tcl_DyldLoadHandle { } Tcl_DyldLoadHandle; #ifdef TCL_LOAD_FROM_MEMORY -typedef struct ThreadSpecificData { - int haveLoadMemory; -} ThreadSpecificData; - -static Tcl_ThreadDataKey dataKey; +extern long tclMacOSXDarwinRelease; #endif /* @@ -391,23 +387,13 @@ TclpLoadMemoryGetBuffer(interp, size) Tcl_Interp *interp; /* Used for error reporting. */ int size; /* Size of desired buffer. */ { - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); void *buffer = NULL; - if (!tsdPtr->haveLoadMemory) { - /* - * NSCreateObjectFileImageFromMemory is available but always fails - * prior to Darwin 7. - */ - - struct utsname name; - - if (!uname(&name)) { - long release = strtol(name.release, NULL, 10); - tsdPtr->haveLoadMemory = (release >= 7) ? 1 : -1; - } - } - if (tsdPtr->haveLoadMemory > 0) { + /* + * NSCreateObjectFileImageFromMemory is available but always fails + * prior to Darwin 7. + */ + if (tclMacOSXDarwinRelease >= 7) { /* * We must allocate the buffer using vm_allocate, because * NSCreateObjectFileImageFromMemory will dispose of it using @@ -480,14 +466,14 @@ TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) #define mh_size sizeof(struct mach_header_64) #endif - if (codeSize >= sizeof(struct fat_header) + if ((size_t) codeSize >= sizeof(struct fat_header) && fh->magic == OSSwapHostToBigInt32(FAT_MAGIC)) { /* * Fat binary, try to find mach_header for our architecture */ uint32_t fh_nfat_arch = OSSwapBigToHostInt32(fh->nfat_arch); - if (codeSize >= sizeof(struct fat_header) + + if ((size_t) codeSize >= sizeof(struct fat_header) + fh_nfat_arch * sizeof(struct fat_arch)) { void *fatarchs = buffer + sizeof(struct fat_header); CONST NXArchInfo *arch = NXGetLocalArchInfo(); diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index 317eca7..84b819e 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.9 2006/03/28 10:47:09 das Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.10 2006/07/20 06:21:46 das Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -189,6 +189,22 @@ Realpath(path, resolved) #define Realpath realpath #endif +#ifndef NO_REALPATH +#if defined(__APPLE__) && defined(TCL_THREADS) && \ + defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ + MAC_OS_X_VERSION_MIN_REQUIRED < 1030 +/* + * prior to Darwin 7, realpath is not threadsafe, c.f. bug 711232; + * if we might potentially be running on pre-10.3 OSX, + * check Darwin release at runtime before using realpath. + */ +extern long tclMacOSXDarwinRelease; +#define haveRealpath (tclMacOSXDarwinRelease >= 7) +#else +#define haveRealpath 1 +#endif +#endif /* NO_REALPATH */ + /* *--------------------------------------------------------------------------- @@ -266,7 +282,7 @@ DoRenameFile(src, dst) * conditionally compiled because realpath() not defined on all systems. */ - if (errno == EINVAL) { + if (errno == EINVAL && haveRealpath) { char srcPath[MAXPATHLEN], dstPath[MAXPATHLEN]; DIR *dirPtr; Tcl_DirEntry *dirEntPtr; @@ -402,6 +418,9 @@ DoCopyFile(src, dst, statBufPtr) return TCL_ERROR; } #ifdef HAVE_COPYFILE +#ifdef WEAK_IMPORT_COPYFILE + if (copyfile != NULL) +#endif copyfile(src, dst, NULL, COPYFILE_XATTR|COPYFILE_NOFOLLOW_SRC); #endif break; @@ -1206,6 +1225,9 @@ CopyFileAtts(src, dst, statBufPtr) return TCL_ERROR; } #ifdef HAVE_COPYFILE +#ifdef WEAK_IMPORT_COPYFILE + if (copyfile != NULL) +#endif copyfile(src, dst, NULL, COPYFILE_XATTR|COPYFILE_ACL); #endif return TCL_OK; @@ -1815,7 +1837,7 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) #ifndef NO_REALPATH /* For speed, try to get the entire path in one go */ - if (nextCheckpoint == 0) { + if (nextCheckpoint == 0 && haveRealpath) { char *lastDir = strrchr(currentPathEndPosition, '/'); if (lastDir != NULL) { nativePath = Tcl_UtfToExternalDString(NULL, path, @@ -1869,57 +1891,59 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) * have 'realpath'. */ #ifndef NO_REALPATH - /* - * If we only had '/foo' or '/' then we never increment nextCheckpoint - * and we don't need or want to go through 'Realpath'. Also, on some - * platforms, passing an empty string to 'Realpath' will give us the - * normalized pwd, which is not what we want at all! - */ - if (nextCheckpoint == 0) return 0; - - nativePath = Tcl_UtfToExternalDString(NULL, path, nextCheckpoint, &ds); - if (Realpath(nativePath, normPath) != NULL) { - int newNormLen; - wholeStringOk: - newNormLen = strlen(normPath); - if ((newNormLen == Tcl_DStringLength(&ds)) - && (strcmp(normPath, nativePath) == 0)) { - /* String is unchanged */ + if (haveRealpath) { + /* + * If we only had '/foo' or '/' then we never increment nextCheckpoint + * and we don't need or want to go through 'Realpath'. Also, on some + * platforms, passing an empty string to 'Realpath' will give us the + * normalized pwd, which is not what we want at all! + */ + if (nextCheckpoint == 0) return 0; + + nativePath = Tcl_UtfToExternalDString(NULL, path, nextCheckpoint, &ds); + if (Realpath(nativePath, normPath) != NULL) { + int newNormLen; + wholeStringOk: + newNormLen = strlen(normPath); + if ((newNormLen == Tcl_DStringLength(&ds)) + && (strcmp(normPath, nativePath) == 0)) { + /* String is unchanged */ + Tcl_DStringFree(&ds); + if (path[nextCheckpoint] != '\0') { + nextCheckpoint++; + } + return nextCheckpoint; + } + + /* + * Free up the native path and put in its place the + * converted, normalized path. + */ Tcl_DStringFree(&ds); + Tcl_ExternalToUtfDString(NULL, normPath, (int) newNormLen, &ds); + if (path[nextCheckpoint] != '\0') { - nextCheckpoint++; + /* not at end, append remaining path */ + int normLen = Tcl_DStringLength(&ds); + Tcl_DStringAppend(&ds, path + nextCheckpoint, + pathLen - nextCheckpoint); + /* + * We recognise up to and including the directory + * separator. + */ + nextCheckpoint = normLen + 1; + } else { + /* We recognise the whole string */ + nextCheckpoint = Tcl_DStringLength(&ds); } - return nextCheckpoint; - } - - /* - * Free up the native path and put in its place the - * converted, normalized path. - */ - Tcl_DStringFree(&ds); - Tcl_ExternalToUtfDString(NULL, normPath, (int) newNormLen, &ds); - - if (path[nextCheckpoint] != '\0') { - /* not at end, append remaining path */ - int normLen = Tcl_DStringLength(&ds); - Tcl_DStringAppend(&ds, path + nextCheckpoint, - pathLen - nextCheckpoint); /* - * We recognise up to and including the directory - * separator. - */ - nextCheckpoint = normLen + 1; - } else { - /* We recognise the whole string */ - nextCheckpoint = Tcl_DStringLength(&ds); + * Overwrite with the normalized path. + */ + Tcl_SetStringObj(pathPtr, Tcl_DStringValue(&ds), + Tcl_DStringLength(&ds)); } - /* - * Overwrite with the normalized path. - */ - Tcl_SetStringObj(pathPtr, Tcl_DStringValue(&ds), - Tcl_DStringLength(&ds)); + Tcl_DStringFree(&ds); } - Tcl_DStringFree(&ds); #endif /* !NO_REALPATH */ return nextCheckpoint; diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 34c36fb..1c1f8fc 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.12 2006/01/25 23:06:16 dkf Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.13 2006/07/20 06:21:46 das Exp $ */ #if defined(HAVE_COREFOUNDATION) @@ -17,7 +17,14 @@ #include "tclPort.h" #include #ifdef HAVE_LANGINFO -#include +# include +# ifdef __APPLE__ +# if defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1030 + /* Support for weakly importing nl_langinfo on Darwin. */ +# define WEAK_IMPORT_NL_LANGINFO + extern char *nl_langinfo(nl_item) WEAK_IMPORT_ATTRIBUTE; +# endif +# endif #endif #if defined(__FreeBSD__) && defined(__GNUC__) # include @@ -151,6 +158,16 @@ static int MacOSXGetLibraryPath _ANSI_ARGS_(( Tcl_Interp *interp, int maxPathLen, char *tclLibPath)); #endif /* HAVE_COREFOUNDATION */ +#if defined(__APPLE__) && (defined(TCL_LOAD_FROM_MEMORY) || ( \ + defined(TCL_THREADS) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ + MAC_OS_X_VERSION_MIN_REQUIRED < 1030)) +/* + * Need to check Darwin release at runtime in tclUnixFCmd.c and tclLoadDyld.c: + * initialize release global at startup from uname(). + */ +#define GET_DARWIN_RELEASE 1 +long tclMacOSXDarwinRelease = 0; +#endif /* @@ -222,6 +239,15 @@ TclpInitPlatform() */ (void) dlopen (NULL, RTLD_NOW); /* INTL: Native. */ #endif + +#ifdef GET_DARWIN_RELEASE + { + struct utsname name; + if (!uname(&name)) { + tclMacOSXDarwinRelease = strtol(name.release, NULL, 10); + } + } +#endif } /* @@ -510,7 +536,11 @@ TclpSetInitialEncodings() * but this does not work on some systems (e.g. Linux/i386 RH 5.0). */ #ifdef HAVE_LANGINFO - if (setlocale(LC_CTYPE, "") != NULL) { + if ( +#ifdef WEAK_IMPORT_NL_LANGINFO + nl_langinfo != NULL && +#endif + setlocale(LC_CTYPE, "") != NULL) { Tcl_DString ds; /* diff --git a/unix/tclUnixPipe.c b/unix/tclUnixPipe.c index 0d3bd0b..de92407 100644 --- a/unix/tclUnixPipe.c +++ b/unix/tclUnixPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.5 2005/07/28 15:27:59 dkf Exp $ + * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.6 2006/07/20 06:21:46 das Exp $ */ #include "tclInt.h" @@ -398,7 +398,7 @@ TclpCreateProcess(interp, argc, argv, inputFile, outputFile, errorFile, * process. */ { TclFile errPipeIn, errPipeOut; - int joinThisError, count, status, fd; + int count, status, fd; char errSpace[200 + TCL_INTEGER_SPACE]; Tcl_DString *dsArray; char **newArgv; @@ -430,9 +430,10 @@ TclpCreateProcess(interp, argc, argv, inputFile, outputFile, errorFile, newArgv[i] = Tcl_UtfToExternalDString(NULL, argv[i], -1, &dsArray[i]); } - joinThisError = errorFile && (errorFile == outputFile); pid = fork(); if (pid == 0) { + int joinThisError = errorFile && (errorFile == outputFile); + fd = GetFd(errPipeOut); /* diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 0fa3803..023cad4 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.11 2006/07/14 16:20:23 andreas_kupries Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.12 2006/07/20 06:21:46 das Exp $ */ #ifndef _TCLUNIXPORT @@ -509,11 +509,6 @@ extern double strtod(); */ #ifdef __APPLE__ -/* - * Translate the symbolic values for MAC_OS_X_VERSION_MAX_ALLOWED to - * the numbers used in the comparisons below. - */ -#include /* * Support for fat compiles: configure runs only once for multiple architectures */ @@ -531,6 +526,25 @@ extern double strtod(); # undef USE_TERMIO # undef USE_SGTTY # endif /* __DARWIN_UNIX03 */ +/* + * Include AvailabilityMacros.h here (when available) to ensure any symbolic + * MAC_OS_X_VERSION_* constants passed on the command line are translated. + */ +# ifdef HAVE_AVAILABILITYMACROS_H +# include +# endif +/* + * Support for weak import. + */ +# ifdef HAVE_WEAK_IMPORT +# if !defined(HAVE_AVAILABILITYMACROS_H) || !defined(MAC_OS_X_VERSION_MIN_REQUIRED) +# undef HAVE_WEAK_IMPORT +# else +# ifndef WEAK_IMPORT_ATTRIBUTE +# define WEAK_IMPORT_ATTRIBUTE __attribute__((weak_import)) +# endif +# endif +# endif /* HAVE_WEAK_IMPORT */ /* * Support for MAC_OS_X_VERSION_MAX_ALLOWED define from AvailabilityMacros.h: * only use API available in the indicated OS version or earlier. @@ -542,14 +556,17 @@ extern double strtod(); # undef HAVE_COPYFILE # endif # if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 -# define NO_REALPATH 1 +# ifdef TCL_THREADS + /* prior to 10.3, realpath is not threadsafe, c.f. bug 711232 */ +# define NO_REALPATH 1 +# endif # undef HAVE_LANGINFO # endif # endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ #endif /* __APPLE__ */ /* - * Darwin 8 copyfile API + * Darwin 8 copyfile API. */ #ifdef HAVE_COPYFILE @@ -560,8 +577,14 @@ int copyfile(const char *from, const char *to, void *state, uint32_t flags); #define COPYFILE_ACL (1<<0) #define COPYFILE_XATTR (1<<2) #define COPYFILE_NOFOLLOW_SRC (1<<18) -#endif -#endif +#endif /* HAVE_COPYFILE_H */ +#if defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +/* Support for weakly importing copyfile. */ +#define WEAK_IMPORT_COPYFILE +extern int copyfile(const char *from, const char *to, void *state, + uint32_t flags) WEAK_IMPORT_ATTRIBUTE; +#endif /* HAVE_WEAK_IMPORT */ +#endif /* HAVE_COPYFILE */ /* *--------------------------------------------------------------------------- -- cgit v0.12 From b686e8f12340f7d8b2a73cb69edd95af5d9d99ed Mon Sep 17 00:00:00 2001 From: das Date: Thu, 20 Jul 2006 07:39:56 +0000 Subject: cleanup quoting and whitespace --- unix/configure | 73 +++++++++++++++++++++++++++++----------------------------- unix/tcl.m4 | 4 ++-- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/unix/configure b/unix/configure index 66934ce..ef629ee 100755 --- a/unix/configure +++ b/unix/configure @@ -7313,15 +7313,16 @@ echo "configure:7312: checking whether to use nl_langinfo" >&5 if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -7354,17 +7355,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7358: checking for $ac_hdr" >&5 +echo "configure:7359: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7393,12 +7394,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7397: checking for $ac_func" >&5 +echo "configure:7398: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7450,17 +7451,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7454: checking for $ac_hdr" >&5 +echo "configure:7455: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7465: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7489,12 +7490,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7493: checking for $ac_func" >&5 +echo "configure:7494: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7544,12 +7545,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7548: checking for $ac_func" >&5 +echo "configure:7549: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7613,17 +7614,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7617: checking for $ac_hdr" >&5 +echo "configure:7618: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7627: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7628: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7651,14 +7652,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:7655: checking if weak import is available" >&5 +echo "configure:7656: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -7702,13 +7703,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:7706: checking for fts" >&5 +echo "configure:7707: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7723,7 +7724,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:7727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -7755,17 +7756,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7759: checking for $ac_hdr" >&5 +echo "configure:7760: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7770: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7795,17 +7796,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7799: checking for $ac_hdr" >&5 +echo "configure:7800: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7810: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7833,7 +7834,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:7837: checking system version" >&5 +echo "configure:7838: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7864,7 +7865,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7868: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7869: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -7927,7 +7928,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7931: checking how to package libraries" >&5 +echo "configure:7932: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index f81af6d..6db9b10 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -774,9 +774,9 @@ AC_DEFUN([SC_ENABLE_LANGINFO], [ fi AC_MSG_CHECKING([whether to use nl_langinfo]) if test "$langinfo_ok" = "yes"; then - AC_CACHE_VAL(tcl_cv_langinfo_h, + AC_CACHE_VAL(tcl_cv_langinfo_h, [ AC_TRY_COMPILE([#include ], [nl_langinfo(CODESET);], - [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])) + [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])]) AC_MSG_RESULT([$tcl_cv_langinfo_h]) if test $tcl_cv_langinfo_h = yes; then AC_DEFINE(HAVE_LANGINFO) -- cgit v0.12 From 65c96823d8dee10bc519c849503248be004d6293 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 21 Jul 2006 06:02:59 +0000 Subject: typos --- macosx/README | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/macosx/README b/macosx/README index 2475ea2..d1e8c13 100644 --- a/macosx/README +++ b/macosx/README @@ -1,7 +1,7 @@ Tcl Mac OS X README ----------------- -RCS: @(#) $Id: README,v 1.1.2.5 2006/07/20 06:21:41 das Exp $ +RCS: @(#) $Id: README,v 1.1.2.6 2006/07/21 06:02:59 das Exp $ This is the README file for the Mac OS X/Darwin version of Tcl. @@ -89,7 +89,7 @@ select based notifier). - It is also possible to build with Apple's IDE via the tcl/macosx/Tcl.pbproj project, this simply calls through to the tcl/macosx/GNUMakefile. -- To build universal binaires, set CFLAGS as follows: +- To build universal binaries, set CFLAGS as follows: export CFLAGS="-arch ppc -arch ppc64 -arch i386 \ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" This requires Mac OS X 10.4 and Xcode 2.2 (_not_ Xcode 2.1) and will work on any @@ -105,8 +105,6 @@ to the minimal OS version (>= 10.2) the binaries should be able to run on, e.g: This requires Mac OS X 10.2 and gcc 3.1; if you have gcc 4 or later you can set CFLAGS instead: export CFLAGS="-mmacosx-version-min=10.2" -The Tcl.xcodeproj is setup to produce binaires that can run on 10.2 or later, -except for the 'ReleaseUniversal'configuration, where they require 10.4. Support for weak-linking was added to the code for 8.4.14/8.5a5. Detailed Instructions for building with macosx/Makefile -- cgit v0.12 From fd93fde8a4d1ac5c52620f882601361b6d2e1d87 Mon Sep 17 00:00:00 2001 From: jenglish Date: Sun, 30 Jul 2006 16:18:40 +0000 Subject: Fix typo [Bug 1496886] --- ChangeLog | 4 ++++ doc/AppInit.3 | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3464427..0f13d84 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-07-30 Joe English + + * doc/AppInit.3: Fix typo [Bug 1496886] + 2006-07-20 Daniel Steffen * macosx/tclMacOSXNotify.c (Tcl_InitNotifier, Tcl_WaitForEvent): create diff --git a/doc/AppInit.3 b/doc/AppInit.3 index 3412799..32862c2 100644 --- a/doc/AppInit.3 +++ b/doc/AppInit.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: AppInit.3,v 1.3 2000/04/14 23:01:48 hobbs Exp $ +'\" RCS: @(#) $Id: AppInit.3,v 1.3.24.1 2006/07/30 16:18:41 jenglish Exp $ '\" .so man.macros .TH Tcl_AppInit 3 7.0 Tcl "Tcl Library Procedures" @@ -34,7 +34,7 @@ To create a new application you write a new version of \fBTcl_AppInit\fR to replace the default version provided by Tcl, then link your new \fBTcl_AppInit\fR with the Tcl library. .PP -\fBTcl_AppInit\fR is invoked after by \fBTcl_Main\fR and \fBTk_Main\fR +\fBTcl_AppInit\fR is invoked by \fBTcl_Main\fR and \fBTk_Main\fR after their own initialization and before entering the main loop to process commands. Here are some examples of things that \fBTcl_AppInit\fR might do: -- cgit v0.12 From ce0022054c0176b268c48a6bc140cec484e6cc81 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sun, 30 Jul 2006 17:05:42 +0000 Subject: Bug 1513489 --- ChangeLog | 7 +++++++ tests/clock.test | 54 ++++++++++++++++++++++++++++++------------------------ 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0f13d84..5e138d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-07-30 Kevin Kenny + + * tests/clock.test: Allowed UTC as a synonym for GMT in two + tests that indirectly invoke 'strftime' with the result of + 'gmtime' to fix a bogus test failure on FreeBSD systems. + [Bug 1513489]. + 2006-07-30 Joe English * doc/AppInit.3: Fix typo [Bug 1496886] diff --git a/tests/clock.test b/tests/clock.test index 6599218..c526771 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.22.2.6 2004/09/08 18:32:20 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.22.2.7 2006/07/30 17:05:43 kennykb Exp $ set env(LC_TIME) POSIX @@ -63,17 +63,20 @@ test clock-3.1 {clock format tests} {unixOnly} { set clockval 657687766 clock format $clockval -format {%a %b %d %I:%M:%S %p %Y} -gmt true } {Sun Nov 04 03:02:46 AM 1990} -test clock-3.2 {clock format tests} { - # TCL_USE_TIMEZONE_VAR - - catch {set oldtz $env(TZ)} - set env(TZ) PST - set x {} - append x [clock format 863800000 -format %Z -gmt 1] - append x [set env(TZ)] - catch {unset env(TZ); set env(TZ) $oldtz} - set x -} {GMTPST} +test clock-3.2 {clock format tests} \ + -body { + # TCL_USE_TIMEZONE_VAR + + catch {set oldtz $env(TZ)} + set env(TZ) PST + set x {} + append x [clock format 863800000 -format %Z -gmt 1] + append x [set env(TZ)] + catch {unset env(TZ); set env(TZ) $oldtz} + set x + } \ + -match regexp \ + -result {(?:GMT|UTC)PST} test clock-3.3 {clock format tests} { # tzset() under Borland doesn't seem to set up tzname[] for local # timezone, which caused "clock format" to think that %Z was an invalid @@ -82,18 +85,21 @@ test clock-3.3 {clock format tests} { clock format 863800000 -format %Z set x {} } {} -test clock-3.4 {clock format tests} { - # tzset() under Borland doesn't seem to set up tzname[] for gmt timezone. - # tzset() under MSVC has the following weird observed behavior: - # First time we call "clock format [clock seconds] -format %Z -gmt 1" - # we get "GMT", but on all subsequent calls we get the current time - # zone string, even though env(TZ) is GMT and the variable _timezone - # is 0. - - set x {} - append x [clock format 863800000 -format %Z -gmt 1] - append x [clock format 863800000 -format %Z -gmt 1] -} {GMTGMT} +test clock-3.4 {clock format tests} \ + -body { + # tzset() under Borland doesn't seem to set up tzname[] for gmt + # timezone. tzset() under MSVC has the following weird observed + # behavior: + # First time we call "clock format [clock seconds] -format %Z -gmt 1" + # we get "GMT", but on all subsequent calls we get the current time + # zone string, even though env(TZ) is GMT and the variable _timezone + # is 0. + set x {} + append x [clock format 863800000 -format %Z -gmt 1] + append x [clock format 863800000 -format %Z -gmt 1] + } \ + -match regexp \ + -result {GMTGMT|UTCUTC} test clock-3.5 {clock format tests} { list [catch {clock format} msg] $msg } {1 {wrong # args: should be "clock format clockval ?-format string? ?-gmt boolean?"}} -- cgit v0.12 From 18500d2958ab58a718a10b5c7f98b2b3f3c398a9 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 2 Aug 2006 20:04:40 +0000 Subject: * unix/tclUnixPipe.c (TclpCreateProcess): for USE_VFORK: ensure standard channels are initialized before vfork() so that the child doesn't potentially corrupt global state in the parent's address space. --- ChangeLog | 6 ++++++ unix/tclUnixPipe.c | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5e138d1..9e9a23c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-08-03 Daniel Steffen + + * unix/tclUnixPipe.c (TclpCreateProcess): for USE_VFORK: ensure standard + channels are initialized before vfork() so that the child doesn't + potentially corrupt global state in the parent's address space. + 2006-07-30 Kevin Kenny * tests/clock.test: Allowed UTC as a synonym for GMT in two diff --git a/unix/tclUnixPipe.c b/unix/tclUnixPipe.c index de92407..6825f24 100644 --- a/unix/tclUnixPipe.c +++ b/unix/tclUnixPipe.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.6 2006/07/20 06:21:46 das Exp $ + * RCS: @(#) $Id: tclUnixPipe.c,v 1.23.2.7 2006/08/02 20:04:40 das Exp $ */ #include "tclInt.h" @@ -430,6 +430,23 @@ TclpCreateProcess(interp, argc, argv, inputFile, outputFile, errorFile, newArgv[i] = Tcl_UtfToExternalDString(NULL, argv[i], -1, &dsArray[i]); } +#ifdef USE_VFORK + /* + * After vfork(), do not call code in the child that changes global state, + * because it is using the parent's memory space at that point and writes + * might corrupt the parent: so ensure standard channels are initialized in + * the parent, otherwise SetupStdFile() might initialize them in the child. + */ + if (!inputFile) { + Tcl_GetStdChannel(TCL_STDIN); + } + if (!outputFile) { + Tcl_GetStdChannel(TCL_STDOUT); + } + if (!errorFile) { + Tcl_GetStdChannel(TCL_STDERR); + } +#endif pid = fork(); if (pid == 0) { int joinThisError = errorFile && (errorFile == outputFile); -- cgit v0.12 From 23337a910dff06fe7f10369619b17a42760935cf Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 9 Aug 2006 18:12:41 +0000 Subject: * generic/tclEncoding.c: Replace buffer copy in for loop with call to memcpy(). Thanks to afredd. [Patch 1530262] --- ChangeLog | 5 +++++ generic/tclEncoding.c | 6 ++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e9a23c..66eea53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-08-09 Don Porter + + * generic/tclEncoding.c: Replace buffer copy in for loop + with call to memcpy(). Thanks to afredd. [Patch 1530262] + 2006-08-03 Daniel Steffen * unix/tclUnixPipe.c (TclpCreateProcess): for USE_VFORK: ensure standard diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 2a3698f..5b2ae19 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.10 2006/04/05 00:06:02 andreas_kupries Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.11 2006/08/09 18:12:42 dgp Exp $ */ #include "tclInt.h" @@ -1882,9 +1882,7 @@ BinaryProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, *srcReadPtr = srcLen; *dstWrotePtr = srcLen; *dstCharsPtr = srcLen; - for ( ; --srcLen >= 0; ) { - *dst++ = *src++; - } + memcpy((void *) dst, (void *) src, (size_t) srcLen); return result; } -- cgit v0.12 From 14bd76d3ec59b713ec76126253b3ed6c91ffc64a Mon Sep 17 00:00:00 2001 From: das Date: Fri, 18 Aug 2006 07:45:41 +0000 Subject: * unix/tcl.m4 (Darwin): add support for --enable-64bit on x86_64, for universal builds including x86_64, for 64-bit CoreFoundation on Leopard and for use of -mmacosx-version-min instead of MACOSX_DEPLOYMENT_TARGET. * unix/configure: autoconf-2.13 * generic/tcl.h: add fixes for building on Leopard and support for * unix/tclUnixPort.h: 64-bit CoreFoundation on Leopard. * unix/tclUnixPort.h: on Darwin x86_64, disable use of vfork as it causes execve to fail intermittently. (rdar://4685553) * macosx/README: updates for x86_64 support and Xcode 2.3. --- ChangeLog | 15 ++ generic/tcl.h | 3 +- macosx/README | 19 +- unix/configure | 575 +++++++++++++++++++++++++++++------------------------ unix/tcl.m4 | 41 +++- unix/tclUnixPort.h | 30 ++- 6 files changed, 398 insertions(+), 285 deletions(-) diff --git a/ChangeLog b/ChangeLog index 66eea53..1bc4099 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2006-08-18 Daniel Steffen + + * unix/tcl.m4 (Darwin): add support for --enable-64bit on x86_64, for + universal builds including x86_64, for 64-bit CoreFoundation on Leopard + and for use of -mmacosx-version-min instead of MACOSX_DEPLOYMENT_TARGET. + * unix/configure: autoconf-2.13 + + * generic/tcl.h: add fixes for building on Leopard and support for + * unix/tclUnixPort.h: 64-bit CoreFoundation on Leopard. + + * unix/tclUnixPort.h: on Darwin x86_64, disable use of vfork as it + causes execve to fail intermittently. (rdar://4685553) + + * macosx/README: updates for x86_64 support and Xcode 2.3. + 2006-08-09 Don Porter * generic/tclEncoding.c: Replace buffer copy in for loop diff --git a/generic/tcl.h b/generic/tcl.h index f960ea0..b19fe11 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.25 2006/06/14 15:21:14 patthoyts Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.26 2006/08/18 07:45:42 das Exp $ */ #ifndef _TCL @@ -341,6 +341,7 @@ typedef long LONG; # define TCL_WIDE_INT_TYPE long long # undef TCL_WIDE_INT_IS_LONG # endif /* __LP64__ */ +# undef HAVE_STRUCT_STAT64 #endif /* __APPLE__ */ /* diff --git a/macosx/README b/macosx/README index d1e8c13..d989f6e 100644 --- a/macosx/README +++ b/macosx/README @@ -1,7 +1,7 @@ Tcl Mac OS X README ----------------- -RCS: @(#) $Id: README,v 1.1.2.6 2006/07/21 06:02:59 das Exp $ +RCS: @(#) $Id: README,v 1.1.2.7 2006/08/18 07:45:42 das Exp $ This is the README file for the Mac OS X/Darwin version of Tcl. @@ -87,17 +87,18 @@ The Mac OS X specific configure flags are --enable-framework and select based notifier). - It is also possible to build with Apple's IDE via the tcl/macosx/Tcl.pbproj -project, this simply calls through to the tcl/macosx/GNUMakefile. +project, this simply calls through to the tcl/macosx/Makefile. - To build universal binaries, set CFLAGS as follows: - export CFLAGS="-arch ppc -arch ppc64 -arch i386 \ + export CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 \ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" -This requires Mac OS X 10.4 and Xcode 2.2 (_not_ Xcode 2.1) and will work on any -of the architectures (on intel Macs, the -isysroot is not required). Note that -it is not possible to configure correctly if the current architecture is not -present in CFLAGS (i.e. -arch `arch` must always be there). Universal builds of -Tcl TEA extensions are also possible with CFLAGS set as above, they will be -[load]able by universal as well as thin binaries of Tcl. +This requires Mac OS X 10.4 and Xcode 2.3 (or Xcode 2.2 if -arch x86_64 is +omitted, but _not_ Xcode 2.1) and will work on any of the architectures (on +intel Macs, the -isysroot may not be required). Note that it is not possible to +configure universal builds correctly if the current architecture is not present +in CFLAGS (i.e. -arch `arch` must be there). +Universal builds of Tcl TEA extensions are also possible with CFLAGS set as +above, they will be [load]able by universal as well as thin binaries of Tcl. - To enable weak-linking, set the MACOSX_DEPLOYMENT_TARGET environment variable to the minimal OS version (>= 10.2) the binaries should be able to run on, e.g: diff --git a/unix/configure b/unix/configure index ef629ee..e2b2850 100755 --- a/unix/configure +++ b/unix/configure @@ -3413,11 +3413,24 @@ echo "$ac_t""$tcl_cv_ld_elf" 1>&6 SHLIB_CFLAGS="-fno-common" if test $do64bit = yes; then do64bit_ok=yes - CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + case `arch` in + ppc) + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5";; + i386) + CFLAGS="$CFLAGS -arch x86_64";; + *) + echo "configure: warning: Don't know how enable 64-bit on architecture `arch`" 1>&2 + do64bit_ok=no;; + esac + else + # Check for combined 32-bit and 64-bit fat build + echo "$CFLAGS " | grep -E -q -- '-arch (ppc64|x86_64) ' && \ + echo "$CFLAGS " | grep -E -q -- '-arch (ppc|i386) ' && \ + fat_32_64=yes fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3421: checking if ld accepts -single_module flag" >&5 +echo "configure:3434: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3425,14 +3438,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3454,12 +3467,12 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 DL_OBJS="tclLoadDyld.o" DL_LIBS="" # Don't use -prebind when building for Mac OS X 10.4 or later only: - test -z "${MACOSX_DEPLOYMENT_TARGET}" || \ - test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print $2}'`" -lt 4 && \ + test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int($2)}'`" -lt 4 -a \ + "`echo "${CFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int($2)}'`" -lt 4 && \ LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3463: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3476: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3467,14 +3480,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3497,7 +3510,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3501: checking whether to use CoreFoundation" >&5 +echo "configure:3514: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3509,28 +3522,28 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3513: checking for CoreFoundation.framework" >&5 +echo "configure:3526: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_libs=$LIBS; hold_cflags=$CFLAGS - if test $do64bit_ok = no ; then - # remove -arch ppc64 from CFLAGS while testing presence - # of CF, otherwise all archs will have CF disabled. - # CF for ppc64 is disabled in tclUnixPort.h instead. - CFLAGS="`echo "$CFLAGS" | sed -e 's/-arch ppc64/-arch ppc/'`" + if test "$fat_32_64" = yes; then + # On Tiger there is no 64-bit CF, so remove 64-bit archs + # from CFLAGS while testing for presence of CF. + # 64-bit CF is disabled in tclUnixPort.h if necessary. + CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc64 / /g' -e 's/-arch x86_64 / /g'`" fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3534: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3553,6 +3566,44 @@ EOF else tcl_corefoundation=no fi + if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then + echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 +echo "configure:3572: checking for 64-bit CoreFoundation" >&5 +if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_cflags=$CFLAGS + CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" + cat > conftest.$ac_ext < +int main() { +CFBundleRef b = CFBundleGetMainBundle(); +; return 0; } +EOF +if { (eval echo configure:3587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_lib_corefoundation_64=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_lib_corefoundation_64=no +fi +rm -f conftest* + CFLAGS=$hold_cflags +fi + +echo "$ac_t""$tcl_cv_lib_corefoundation_64" 1>&6 + if test $tcl_cv_lib_corefoundation_64 = no; then + cat >> confdefs.h <<\EOF +#define NO_COREFOUNDATION_64 1 +EOF + + fi + fi fi cat >> confdefs.h <<\EOF #define MAC_OSX_TCL 1 @@ -3845,7 +3896,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3849: checking for ld accepts -Bexport flag" >&5 +echo "configure:3900: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3853,14 +3904,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -3907,13 +3958,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3911: checking sys/exec.h" >&5 +echo "configure:3962: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3931,7 +3982,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -3951,13 +4002,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:3955: checking a.out.h" >&5 +echo "configure:4006: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3975,7 +4026,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -3995,13 +4046,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:3999: checking sys/exec_aout.h" >&5 +echo "configure:4050: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4019,7 +4070,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4172,7 +4223,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4176: checking for build with symbols" >&5 +echo "configure:4227: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4233,21 +4284,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4237: checking for required early compiler flags" >&5 +echo "configure:4288: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4251: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4255,7 +4306,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4263,7 +4314,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4267: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4318: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4290,14 +4341,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4305,7 +4356,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4313,7 +4364,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4317: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4340,14 +4391,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4351: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4355,7 +4406,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4363,7 +4414,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4394,7 +4445,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4398: checking for 64-bit integer type" >&5 +echo "configure:4449: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4402,14 +4453,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4423,7 +4474,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4457,13 +4508,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4461: checking for struct dirent64" >&5 +echo "configure:4512: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4471,7 +4522,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4492,13 +4543,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4496: checking for struct stat64" >&5 +echo "configure:4547: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4506,7 +4557,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4510: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4529,12 +4580,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4533: checking for $ac_func" >&5 +echo "configure:4584: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4582,13 +4633,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4586: checking for off64_t" >&5 +echo "configure:4637: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4596,7 +4647,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4600: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4628,14 +4679,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4632: checking whether byte ordering is bigendian" >&5 +echo "configure:4683: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4646,11 +4697,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4661,7 +4712,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4681,7 +4732,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4727,12 +4778,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4731: checking for $ac_func" >&5 +echo "configure:4782: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4789,12 +4840,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4793: checking for $ac_func" >&5 +echo "configure:4844: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4844,12 +4895,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4848: checking for strerror" >&5 +echo "configure:4899: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4896,12 +4947,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4900: checking for getwd" >&5 +echo "configure:4951: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4948,12 +4999,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:4952: checking for wait3" >&5 +echo "configure:5003: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5000,12 +5051,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5004: checking for uname" >&5 +echo "configure:5055: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5059,12 +5110,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5063: checking for realpath" >&5 +echo "configure:5114: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5122,17 +5173,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5126: checking for $ac_hdr" >&5 +echo "configure:5177: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5187: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5159,7 +5210,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5163: checking termios vs. termio vs. sgtty" >&5 +echo "configure:5214: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5168,7 +5219,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5183,7 +5234,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5200,7 +5251,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5214,7 +5265,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5232,7 +5283,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5247,7 +5298,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5265,7 +5316,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5282,7 +5333,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -5300,7 +5351,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -5316,7 +5367,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -5334,7 +5385,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -5351,7 +5402,7 @@ int main() { return 1; } EOF -if { (eval echo configure:5355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -5394,20 +5445,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5398: checking for fd_set in sys/types" >&5 +echo "configure:5449: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:5411: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5462: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -5423,13 +5474,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5427: checking for fd_mask in sys/select" >&5 +echo "configure:5478: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -5466,12 +5517,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5470: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:5521: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5479,7 +5530,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:5483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -5504,17 +5555,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5508: checking for $ac_hdr" >&5 +echo "configure:5559: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5518: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5541,12 +5592,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5545: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:5596: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5555,7 +5606,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:5559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -5576,12 +5627,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5580: checking for tm_zone in struct tm" >&5 +echo "configure:5631: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -5589,7 +5640,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:5593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -5609,12 +5660,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5613: checking for tzname" >&5 +echo "configure:5664: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -5624,7 +5675,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:5628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -5649,12 +5700,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5653: checking for $ac_func" >&5 +echo "configure:5704: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5703,20 +5754,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5707: checking tm_tzadj in struct tm" >&5 +echo "configure:5758: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:5720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -5737,20 +5788,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5741: checking tm_gmtoff in struct tm" >&5 +echo "configure:5792: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:5754: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -5775,13 +5826,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5779: checking long timezone variable" >&5 +echo "configure:5830: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5790,7 +5841,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5794: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5845: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -5813,13 +5864,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5817: checking time_t timezone variable" >&5 +echo "configure:5868: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -5828,7 +5879,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:5832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -5855,12 +5906,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5859: checking for st_blksize in struct stat" >&5 +echo "configure:5910: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5868,7 +5919,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:5872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -5889,12 +5940,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5893: checking for fstatfs" >&5 +echo "configure:5944: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -5946,7 +5997,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:5950: checking for 8-bit clean memcmp" >&5 +echo "configure:6001: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5954,7 +6005,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -5988,12 +6039,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:5992: checking for memmove" >&5 +echo "configure:6043: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6049,7 +6100,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6053: checking proper strstr implementation" >&5 +echo "configure:6104: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6058,7 +6109,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -6094,12 +6145,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6098: checking for strtoul" >&5 +echo "configure:6149: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -6144,7 +6195,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:6148: checking proper strtoul implementation" >&5 +echo "configure:6199: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6153,7 +6204,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -6198,12 +6249,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6202: checking for strtod" >&5 +echo "configure:6253: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6248,7 +6299,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:6252: checking proper strtod implementation" >&5 +echo "configure:6303: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6257,7 +6308,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -6305,12 +6356,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6309: checking for strtod" >&5 +echo "configure:6360: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -6355,7 +6406,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6359: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:6410: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6364,7 +6415,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -6418,12 +6469,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6422: checking for ANSI C header files" >&5 +echo "configure:6473: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6431,7 +6482,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6486: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6448,7 +6499,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6466,7 +6517,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6487,7 +6538,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6498,7 +6549,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6522,12 +6573,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6526: checking for mode_t" >&5 +echo "configure:6577: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6555,12 +6606,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6559: checking for pid_t" >&5 +echo "configure:6610: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6588,12 +6639,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6592: checking for size_t" >&5 +echo "configure:6643: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6621,12 +6672,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6625: checking for uid_t in sys/types.h" >&5 +echo "configure:6676: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6656,13 +6707,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6660: checking for socklen_t" >&5 +echo "configure:6711: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6701,12 +6752,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6705: checking for opendir" >&5 +echo "configure:6756: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -6762,13 +6813,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6766: checking union wait" >&5 +echo "configure:6817: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6780,7 +6831,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:6784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -6807,12 +6858,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6811: checking for strncasecmp" >&5 +echo "configure:6862: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -6857,7 +6908,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6861: checking for strncasecmp in -lsocket" >&5 +echo "configure:6912: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6865,7 +6916,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6900,7 +6951,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6904: checking for strncasecmp in -linet" >&5 +echo "configure:6955: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6908,7 +6959,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6957,12 +7008,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:6961: checking for BSDgettimeofday" >&5 +echo "configure:7012: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7007,12 +7058,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7011: checking for gettimeofday" >&5 +echo "configure:7062: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7062,13 +7113,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7066: checking for gettimeofday declaration" >&5 +echo "configure:7117: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7099,14 +7150,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7103: checking whether char is unsigned" >&5 +echo "configure:7154: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -7162,13 +7213,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7166: checking signed char declarations" >&5 +echo "configure:7217: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -7203,7 +7254,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7207: checking for a putenv() that copies the buffer" >&5 +echo "configure:7258: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7212,7 +7263,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -7234,7 +7285,7 @@ else } EOF -if { (eval echo configure:7238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -7274,17 +7325,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7278: checking for langinfo.h" >&5 +echo "configure:7329: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7308,21 +7359,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7312: checking whether to use nl_langinfo" >&5 +echo "configure:7363: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:7326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7377: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -7355,17 +7406,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7359: checking for $ac_hdr" >&5 +echo "configure:7410: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7420: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7394,12 +7445,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7398: checking for $ac_func" >&5 +echo "configure:7449: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7451,17 +7502,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7455: checking for $ac_hdr" >&5 +echo "configure:7506: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7465: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7516: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7490,12 +7541,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7494: checking for $ac_func" >&5 +echo "configure:7545: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7545,12 +7596,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7549: checking for $ac_func" >&5 +echo "configure:7600: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7614,17 +7665,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7618: checking for $ac_hdr" >&5 +echo "configure:7669: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7628: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7652,14 +7703,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:7656: checking if weak import is available" >&5 +echo "configure:7707: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -7703,13 +7754,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:7707: checking for fts" >&5 +echo "configure:7758: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7724,7 +7775,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:7728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -7756,17 +7807,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7760: checking for $ac_hdr" >&5 +echo "configure:7811: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7770: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7796,17 +7847,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7800: checking for $ac_hdr" >&5 +echo "configure:7851: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7810: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7861: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7834,7 +7885,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:7838: checking system version" >&5 +echo "configure:7889: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7865,7 +7916,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7869: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:7920: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -7928,7 +7979,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7932: checking how to package libraries" >&5 +echo "configure:7983: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 6db9b10..0dccb7c 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1549,7 +1549,20 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_CFLAGS="-fno-common" if test $do64bit = yes; then do64bit_ok=yes - CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + case `arch` in + ppc) + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5";; + i386) + CFLAGS="$CFLAGS -arch x86_64";; + *) + AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]) + do64bit_ok=no;; + esac + else + # Check for combined 32-bit and 64-bit fat build + echo "$CFLAGS " | grep -E -q -- '-arch (ppc64|x86_64) ' && \ + echo "$CFLAGS " | grep -E -q -- '-arch (ppc|i386) ' && \ + fat_32_64=yes fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [ @@ -1565,8 +1578,8 @@ dnl AC_CHECK_TOOL(AR, ar) DL_OBJS="tclLoadDyld.o" DL_LIBS="" # Don't use -prebind when building for Mac OS X 10.4 or later only: - test -z "${MACOSX_DEPLOYMENT_TARGET}" || \ - test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print [$]2}'`" -lt 4 && \ + test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int([$]2)}'`" -lt 4 -a \ + "`echo "${CFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int([$]2)}'`" -lt 4 && \ LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [ @@ -1589,11 +1602,11 @@ dnl AC_CHECK_TOOL(AR, ar) if test $tcl_corefoundation = yes; then AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [ hold_libs=$LIBS; hold_cflags=$CFLAGS - if test $do64bit_ok = no ; then - # remove -arch ppc64 from CFLAGS while testing presence - # of CF, otherwise all archs will have CF disabled. - # CF for ppc64 is disabled in tclUnixPort.h instead. - CFLAGS="`echo "$CFLAGS" | sed -e 's/-arch ppc64/-arch ppc/'`" + if test "$fat_32_64" = yes; then + # On Tiger there is no 64-bit CF, so remove 64-bit archs + # from CFLAGS while testing for presence of CF. + # 64-bit CF is disabled in tclUnixPort.h if necessary. + CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc64 / /g' -e 's/-arch x86_64 / /g'`" fi LIBS="$LIBS -framework CoreFoundation" AC_TRY_LINK([#include ], @@ -1606,6 +1619,18 @@ dnl AC_CHECK_TOOL(AR, ar) else tcl_corefoundation=no fi + if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then + AC_CACHE_CHECK([for 64-bit CoreFoundation], tcl_cv_lib_corefoundation_64, [ + hold_cflags=$CFLAGS + CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" + AC_TRY_LINK([#include ], + [CFBundleRef b = CFBundleGetMainBundle();], + tcl_cv_lib_corefoundation_64=yes, tcl_cv_lib_corefoundation_64=no) + CFLAGS=$hold_cflags]) + if test $tcl_cv_lib_corefoundation_64 = no; then + AC_DEFINE(NO_COREFOUNDATION_64) + fi + fi fi AC_DEFINE(MAC_OSX_TCL) ;; diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 023cad4..a747c40 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.12 2006/07/20 06:21:46 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.13 2006/08/18 07:45:43 das Exp $ */ #ifndef _TCLUNIXPORT @@ -512,9 +512,9 @@ extern double strtod(); /* * Support for fat compiles: configure runs only once for multiple architectures */ -# ifdef __LP64__ +# if defined(__LP64__) && defined (NO_COREFOUNDATION_64) # undef HAVE_COREFOUNDATION -# endif /* __LP64__ */ +# endif /* __LP64__ && NO_COREFOUNDATION_64 */ # include # ifdef __DARWIN_UNIX03 # if __DARWIN_UNIX03 @@ -550,6 +550,9 @@ extern double strtod(); * only use API available in the indicated OS version or earlier. */ # ifdef MAC_OS_X_VERSION_MAX_ALLOWED +# if MAC_OS_X_VERSION_MAX_ALLOWED < 1050 && defined(__LP64__) +# undef HAVE_COREFOUNDATION +# endif # if MAC_OS_X_VERSION_MAX_ALLOWED < 1040 # undef HAVE_OSSPINLOCKLOCK # undef HAVE_PTHREAD_ATFORK @@ -563,6 +566,17 @@ extern double strtod(); # undef HAVE_LANGINFO # endif # endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ +# if defined(HAVE_COREFOUNDATION) && defined(__LP64__) && \ + defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1050 +# warning "Weak import of 64-bit CoreFoundation is not supported, will not run on Mac OS X < 10.5." +# endif +/* + * At present, using vfork() instead of fork() causes execve() to fail + * intermittently on Darwin x86_64. rdar://4685553 + */ +# if defined(__x86_64__) && !defined(FIXED_RDAR_4685553) +# undef USE_VFORK +# endif /* __x86_64__ */ #endif /* __APPLE__ */ /* @@ -572,18 +586,24 @@ extern double strtod(); #ifdef HAVE_COPYFILE #ifdef HAVE_COPYFILE_H #include -#else +#if defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +/* Support for weakly importing copyfile. */ +#define WEAK_IMPORT_COPYFILE +extern int copyfile(const char *from, const char *to, copyfile_state_t state, + copyfile_flags_t flags) WEAK_IMPORT_ATTRIBUTE; +#endif /* HAVE_WEAK_IMPORT */ +#else /* HAVE_COPYFILE_H */ int copyfile(const char *from, const char *to, void *state, uint32_t flags); #define COPYFILE_ACL (1<<0) #define COPYFILE_XATTR (1<<2) #define COPYFILE_NOFOLLOW_SRC (1<<18) -#endif /* HAVE_COPYFILE_H */ #if defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 /* Support for weakly importing copyfile. */ #define WEAK_IMPORT_COPYFILE extern int copyfile(const char *from, const char *to, void *state, uint32_t flags) WEAK_IMPORT_ATTRIBUTE; #endif /* HAVE_WEAK_IMPORT */ +#endif /* HAVE_COPYFILE_H */ #endif /* HAVE_COPYFILE */ /* -- cgit v0.12 From c925813266e101493b3ca5049dbb21f4c1764d8b Mon Sep 17 00:00:00 2001 From: das Date: Fri, 18 Aug 2006 11:23:31 +0000 Subject: * unix/tclUnixChan.c (TclUnixWaitForFile): with timeout < 0, if select() returns early (e.g. due to a signal), call it again instead of returning a timeout result. Fixes intermittent event-13.8 failures. --- ChangeLog | 4 ++++ unix/tclUnixChan.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1bc4099..281e0c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,10 @@ * macosx/README: updates for x86_64 support and Xcode 2.3. + * unix/tclUnixChan.c (TclUnixWaitForFile): with timeout < 0, if select() + returns early (e.g. due to a signal), call it again instead of returning + a timeout result. Fixes intermittent event-13.8 failures. + 2006-08-09 Don Porter * generic/tclEncoding.c: Replace buffer copy in for loop diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 1508b39..2be6cbc 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.6 2005/11/27 02:34:42 das Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.7 2006/08/18 11:23:31 das Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -3282,6 +3282,9 @@ TclUnixWaitForFile(fd, mask, timeout) if (timeout == 0) { break; } + if (timeout < 0) { + continue; + } /* * The select returned early, so we need to recompute the timeout. -- cgit v0.12 From 56574b4e03aa9dfcdd5a8886bfa4474879b6b956 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 21 Aug 2006 01:08:09 +0000 Subject: * macosx/tclMacOSXNotify.c (Tcl_WaitForEvent): if the run loop is already running (e.g. if Tcl_WaitForEvent was called recursively), re-run it in a custom run loop mode containing only the source for the notifier thread, otherwise wakeups from other sources added to the common run loop modes might get lost; sync panic msg changes from HEAD. * unix/tclUnixNotfy.c (Tcl_WaitForEvent): on 64-bit Darwin, pthread_cond_timedwait() appears to have a bug that causes it to wait forever when passed an absolute time which has already been exceeded by the system time; as a workaround, when given a very brief timeout, just do a poll on that platform. [Bug 1457797] --- ChangeLog | 14 +++++++++++ macosx/tclMacOSXNotify.c | 64 +++++++++++++++++++++++++++++++++--------------- unix/tclUnixNotfy.c | 12 ++++++++- 3 files changed, 69 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 281e0c2..9ceecef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2006-08-21 Daniel Steffen + + * macosx/tclMacOSXNotify.c (Tcl_WaitForEvent): if the run loop is + already running (e.g. if Tcl_WaitForEvent was called recursively), + re-run it in a custom run loop mode containing only the source for the + notifier thread, otherwise wakeups from other sources added to the + common run loop modes might get lost; sync panic msg changes from HEAD. + + * unix/tclUnixNotfy.c (Tcl_WaitForEvent): on 64-bit Darwin, + pthread_cond_timedwait() appears to have a bug that causes it to wait + forever when passed an absolute time which has already been exceeded by + the system time; as a workaround, when given a very brief timeout, just + do a poll on that platform. [Bug 1457797] + 2006-08-18 Daniel Steffen * unix/tcl.m4 (Darwin): add support for --enable-64bit on x86_64, for diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index f9cd046..e591446 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.7 2006/07/20 06:21:42 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.8 2006/08/21 01:08:10 das Exp $ */ #include "tclInt.h" @@ -180,7 +180,7 @@ static void SpinLockLockInit(void) { lockLock = OSSpinLockLock != NULL ? OSSpinLockLock : _spin_lock; lockUnlock = OSSpinLockUnlock != NULL ? OSSpinLockUnlock : _spin_unlock; if (lockLock == NULL || lockUnlock == NULL) { - Tcl_Panic("SpinLockLockInit: no spinlock API available."); + Tcl_Panic("SpinLockLockInit: no spinlock API available"); } } #define SpinLockLock(p) lockLock(p) @@ -238,6 +238,14 @@ static OSSpinLock notifierLock = 0; static pthread_t notifierThread; /* + * Custom run loop mode containing only the run loop source for the + * notifier thread. + */ + +static const CFStringRef tclEventsOnlyRunLoopMode = + CFSTR("com.tcltk.tclEventsOnlyRunLoopMode"); + +/* * Static routines defined in this file. */ @@ -285,7 +293,7 @@ Tcl_InitNotifier(void) * Initialize support for weakly imported spinlock API. */ if (pthread_once(&spinLockLockInitControl, SpinLockLockInit)) { - Tcl_Panic("Tcl_InitNotifier: pthread_once failed."); + Tcl_Panic("Tcl_InitNotifier: pthread_once failed"); } #endif @@ -302,9 +310,10 @@ Tcl_InitNotifier(void) runLoopSourceContext.info = tsdPtr; runLoopSource = CFRunLoopSourceCreate(NULL, 0, &runLoopSourceContext); if (!runLoopSource) { - Tcl_Panic("Tcl_InitNotifier: could not create CFRunLoopSource."); + Tcl_Panic("Tcl_InitNotifier: could not create CFRunLoopSource"); } CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopCommonModes); + CFRunLoopAddSource(runLoop, runLoopSource, tclEventsOnlyRunLoopMode); tsdPtr->runLoopSource = runLoopSource; tsdPtr->runLoop = runLoop; } @@ -322,8 +331,8 @@ Tcl_InitNotifier(void) #endif !atForkInit) { int result = pthread_atfork(AtForkPrepare, AtForkParent, AtForkChild); - if (result) { - Tcl_Panic("Tcl_InitNotifier: pthread_atfork failed."); + if (result) { + Tcl_Panic("Tcl_InitNotifier: pthread_atfork failed"); } atForkInit = 1; } @@ -336,18 +345,18 @@ Tcl_InitNotifier(void) */ if (pipe(fds) != 0) { - Tcl_Panic("Tcl_InitNotifier: could not create trigger pipe."); + Tcl_Panic("Tcl_InitNotifier: could not create trigger pipe"); } status = fcntl(fds[0], F_GETFL); status |= O_NONBLOCK; if (fcntl(fds[0], F_SETFL, status) < 0) { - Tcl_Panic("Tcl_InitNotifier: could not make receive pipe non blocking."); + Tcl_Panic("Tcl_InitNotifier: could not make receive pipe non blocking"); } status = fcntl(fds[1], F_GETFL); status |= O_NONBLOCK; if (fcntl(fds[1], F_SETFL, status) < 0) { - Tcl_Panic("Tcl_InitNotifier: could not make trigger pipe non blocking."); + Tcl_Panic("Tcl_InitNotifier: could not make trigger pipe non blocking"); } receivePipe = fds[0]; @@ -358,7 +367,7 @@ Tcl_InitNotifier(void) * interfering with fork() followed immediately by execve() * (cannot execve() when more than one thread is present). */ - + notifierThread = 0; } notifierCount++; @@ -403,7 +412,7 @@ Tcl_FinalizeNotifier(clientData) int result; if (triggerPipe < 0) { - Tcl_Panic("Tcl_FinalizeNotifier: notifier pipe not initialized."); + Tcl_Panic("Tcl_FinalizeNotifier: notifier pipe not initialized"); } /* @@ -423,7 +432,7 @@ Tcl_FinalizeNotifier(clientData) if (notifierThread) { result = pthread_join(notifierThread, NULL); if (result) { - Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread."); + Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread"); } notifierThread = 0; } @@ -824,7 +833,7 @@ Tcl_WaitForEvent(timePtr) (void * (*)(void *))NotifierThreadProc, NULL); pthread_attr_destroy(&attr); if (result || !notifierThread) { - Tcl_Panic("Tcl_WaitForEvent: unable to start notifier thread."); + Tcl_Panic("Tcl_WaitForEvent: unable to start notifier thread"); } } UNLOCK_NOTIFIER_INIT; @@ -877,14 +886,27 @@ Tcl_WaitForEvent(timePtr) if (!tsdPtr->eventReady) { CFTimeInterval waitTime; + CFStringRef runLoopMode; if (timePtr == NULL) { waitTime = 1.0e10; /* Wait forever, as per CFRunLoop.c */ } else { waitTime = timePtr->sec + 1.0e-6 * timePtr->usec; } + /* + * If the run loop is already running (e.g. if Tcl_WaitForEvent was + * called recursively), re-run it in a custom run loop mode containing + * only the source for the notifier thread, otherwise wakeups from other + * sources added to the common run loop modes might get lost. + */ + if ((runLoopMode = CFRunLoopCopyCurrentMode(tsdPtr->runLoop))) { + CFRelease(runLoopMode); + runLoopMode = tclEventsOnlyRunLoopMode; + } else { + runLoopMode = kCFRunLoopDefaultMode; + } UNLOCK_NOTIFIER; - CFRunLoopRunInMode(kCFRunLoopDefaultMode, waitTime, TRUE); + CFRunLoopRunInMode(runLoopMode, waitTime, TRUE); LOCK_NOTIFIER; } tsdPtr->eventReady = 0; @@ -1204,14 +1226,16 @@ AtForkChild(void) } if (notifierCount > 0) { notifierCount = 0; + /* - * Assume that the return value of Tcl_InitNotifier() in the child - * will be identical to the one stored as clientData in tclNotify.c's - * ThreadSpecificData by the parent's TclInitNotifier(), so discard - * the return value here. This assumption may require the fork() to - * be executed in the main thread of the parent, otherwise - * Tcl_AlertNotifier() may break in the child. + * Assume that the return value of Tcl_InitNotifier in the child will + * be identical to the one stored as clientData in tclNotify.c's + * ThreadSpecificData by the parent's TclInitNotifier, so discard the + * return value here. This assumption may require the fork() to be + * executed in the main thread of the parent, otherwise + * Tcl_AlertNotifier may break in the child. */ + Tcl_InitNotifier(); } } diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 7488cf1..118fa79 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.14 2005/11/27 02:34:42 das Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.15 2006/08/21 01:08:10 das Exp $ */ #include "tclInt.h" @@ -715,6 +715,16 @@ Tcl_WaitForEvent(timePtr) waitForFiles = (tsdPtr->numFdBits > 0); if (timePtr != NULL && timePtr->sec == 0 && timePtr->usec == 0) { +#if defined(__APPLE__) && defined(__LP64__) + /* + * On 64-bit Darwin, pthread_cond_timedwait() appears to have a bug + * that causes it to wait forever when passed an absolute time which + * has already been exceeded by the system time; as a workaround, + * when given a very brief timeout, just do a poll. [Bug 1457797] + */ + || timePtr->usec < 10 +#endif + )) { /* * Cannot emulate a polling select with a polling condition variable. * Instead, pretend to wait for files and tell the notifier -- cgit v0.12 From f270dbabbe5911af0a1dec442df1d7fac1a4a7a7 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 21 Aug 2006 02:36:27 +0000 Subject: update with recent Darwin changes --- changes | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/changes b/changes index d8a0ea5..e55a1f2 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.44 2006/06/15 22:33:31 das Exp $ +RCS: @(#) $Id: changes,v 1.79.2.45 2006/08/21 02:36:27 das Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6379,7 +6379,7 @@ bytecode while references still on the stack (porter,ryazanov) 2006-05-13 (bug fix)[943995] fixed [glob] on VFS (porter) -2006-05-13 (bug fix)[923072] Darwin: made unthreaded CoreFoundation notifier +2006-05-27 (bug fix)[923072] Darwin: made unthreaded CoreFoundation notifier naked-fork safe on Tiger (steffen) 2006-05-31 (revert 2006-01-09)[1400572] namespace inscope & info level (porter) @@ -6387,4 +6387,14 @@ naked-fork safe on Tiger (steffen) 2006-06-14 (platform support)[1424909] MS VS2005 support (thoyts) +2006-07-20 (platform support) Mac OS X weak linking (steffen) + +2006-07-20 (bug fix) Darwin: execve() works iff event loop not yet run (steffen) + +2006-08-18 (platform support) Darwin x86_64 (steffen) + +2006-08-21 (bug fix)[1457797] Darwin 64-bit notifier hang (steffen) + +2006-08-21 (bug fix) Darwin: recursively called event loop (steffen) + --- Released 8.4.14, June XX, 2006 --- See ChangeLog for details --- -- cgit v0.12 From 24a1237af60c1f6ed662e89c824c6045ab7adc74 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 21 Aug 2006 03:50:53 +0000 Subject: add support for building without -fconstant-cfstrings, e.g. when MACOSX_DEPLOYMENT_TARGET unset. [Bug 1543715] --- macosx/tclMacOSXNotify.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index e591446..e8da55b 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.8 2006/08/21 01:08:10 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.9 2006/08/21 03:50:53 das Exp $ */ #include "tclInt.h" @@ -242,8 +242,14 @@ static pthread_t notifierThread; * notifier thread. */ -static const CFStringRef tclEventsOnlyRunLoopMode = - CFSTR("com.tcltk.tclEventsOnlyRunLoopMode"); +#ifndef TCL_EVENTS_ONLY_RUN_LOOP_MODE +#define TCL_EVENTS_ONLY_RUN_LOOP_MODE "com.tcltk.tclEventsOnlyRunLoopMode" +#endif +#ifdef __CONSTANT_CFSTRINGS__ +#define tclEventsOnlyRunLoopMode CFSTR(TCL_EVENTS_ONLY_RUN_LOOP_MODE) +#else +static CFStringRef tclEventsOnlyRunLoopMode = NULL; +#endif /* * Static routines defined in this file. @@ -297,6 +303,12 @@ Tcl_InitNotifier(void) } #endif +#ifndef __CONSTANT_CFSTRINGS__ + if (!tclEventsOnlyRunLoopMode) { + tclEventsOnlyRunLoopMode = CFSTR(TCL_EVENTS_ONLY_RUN_LOOP_MODE); + } +#endif + /* * Initialize CFRunLoopSource and add it to CFRunLoop of this thread. */ -- cgit v0.12 From 40c4ecfd456c65d392925accecc6bfcf589a502d Mon Sep 17 00:00:00 2001 From: das Date: Mon, 21 Aug 2006 05:37:25 +0000 Subject: * unix/tclUnixPort.h (Darwin): override potentially faulty configure detection of termios availability in all cases, since termios is known to be present on all Mac OS X releases since 10.0. [Bug 497147] --- ChangeLog | 4 ++++ unix/tclUnixPort.h | 20 +++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ceecef..f799715 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,10 @@ the system time; as a workaround, when given a very brief timeout, just do a poll on that platform. [Bug 1457797] + * unix/tclUnixPort.h (Darwin): override potentially faulty configure + detection of termios availability in all cases, since termios is known + to be present on all Mac OS X releases since 10.0. [Bug 497147] + 2006-08-18 Daniel Steffen * unix/tcl.m4 (Darwin): add support for --enable-64bit on x86_64, for diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index a747c40..2bbe201 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.13 2006/08/18 07:45:43 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.14 2006/08/21 05:37:26 das Exp $ */ #ifndef _TCLUNIXPORT @@ -509,7 +509,7 @@ extern double strtod(); */ #ifdef __APPLE__ -/* +/* * Support for fat compiles: configure runs only once for multiple architectures */ # if defined(__LP64__) && defined (NO_COREFOUNDATION_64) @@ -522,18 +522,24 @@ extern double strtod(); # else # define HAVE_PUTENV_THAT_COPIES 1 # endif -# define USE_TERMIOS 1 -# undef USE_TERMIO -# undef USE_SGTTY # endif /* __DARWIN_UNIX03 */ -/* +/* + * The termios configure test program relies on the configure script being run + * from a terminal, which is not the case e.g. when configuring from Xcode. + * Since termios is known to be present on all Mac OS X releases since 10.0, + * override the configure defines for serial API here. [Bug 497147] + */ +# define USE_TERMIOS 1 +# undef USE_TERMIO +# undef USE_SGTTY +/* * Include AvailabilityMacros.h here (when available) to ensure any symbolic * MAC_OS_X_VERSION_* constants passed on the command line are translated. */ # ifdef HAVE_AVAILABILITYMACROS_H # include # endif -/* +/* * Support for weak import. */ # ifdef HAVE_WEAK_IMPORT -- cgit v0.12 From 832279c65a06e9902986eb205dab78277687ee9a Mon Sep 17 00:00:00 2001 From: das Date: Mon, 21 Aug 2006 06:10:02 +0000 Subject: typo: s/Xcode 2.3/Xcode 2.4/ --- ChangeLog | 2 +- macosx/README | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f799715..a652ec4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -29,7 +29,7 @@ * unix/tclUnixPort.h: on Darwin x86_64, disable use of vfork as it causes execve to fail intermittently. (rdar://4685553) - * macosx/README: updates for x86_64 support and Xcode 2.3. + * macosx/README: updates for x86_64 support and Xcode 2.4. * unix/tclUnixChan.c (TclUnixWaitForFile): with timeout < 0, if select() returns early (e.g. due to a signal), call it again instead of returning diff --git a/macosx/README b/macosx/README index d989f6e..40fae5b 100644 --- a/macosx/README +++ b/macosx/README @@ -1,7 +1,7 @@ Tcl Mac OS X README ----------------- -RCS: @(#) $Id: README,v 1.1.2.7 2006/08/18 07:45:42 das Exp $ +RCS: @(#) $Id: README,v 1.1.2.8 2006/08/21 06:10:03 das Exp $ This is the README file for the Mac OS X/Darwin version of Tcl. @@ -92,7 +92,7 @@ project, this simply calls through to the tcl/macosx/Makefile. - To build universal binaries, set CFLAGS as follows: export CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 \ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" -This requires Mac OS X 10.4 and Xcode 2.3 (or Xcode 2.2 if -arch x86_64 is +This requires Mac OS X 10.4 and Xcode 2.4 (or Xcode 2.2 if -arch x86_64 is omitted, but _not_ Xcode 2.1) and will work on any of the architectures (on intel Macs, the -isysroot may not be required). Note that it is not possible to configure universal builds correctly if the current architecture is not present -- cgit v0.12 From cf3ed398bebbbfd6f95b102ff5cd6e0ba68d8602 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 21 Aug 2006 14:56:27 +0000 Subject: * generic/tclIOUtil.c: Revisions to complete the thread finalization of the cwdPathPtr. [Bug 1536142] --- ChangeLog | 5 +++++ generic/tclIOUtil.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a652ec4..8d9a571 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-08-21 Don Porter + + * generic/tclIOUtil.c: Revisions to complete the thread finalization + of the cwdPathPtr. [Bug 1536142] + 2006-08-21 Daniel Steffen * macosx/tclMacOSXNotify.c (Tcl_WaitForEvent): if the run loop is diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 55e8b32..b5cf2ec 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.29 2006/03/28 10:52:38 das Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.30 2006/08/21 14:56:28 dgp Exp $ */ #include "tclInt.h" @@ -546,6 +546,7 @@ FsThrExitProc(cd) /* Trash the cwd copy */ if (tsdPtr->cwdPathPtr != NULL) { Tcl_DecrRefCount(tsdPtr->cwdPathPtr); + tsdPtr->cwdPathPtr = NULL; } /* Trash the filesystems cache */ fsRecPtr = tsdPtr->filesystemList; @@ -556,6 +557,7 @@ FsThrExitProc(cd) } fsRecPtr = tmpFsRecPtr; } + tsdPtr->initialized = 0; } int -- cgit v0.12 From f1e3cf87942d5b9bb16c44f0b105d78e68743de3 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 22 Aug 2006 17:45:01 +0000 Subject: * unix/tclUnixNotfy.c (Tcl_WaitForEvent): Fixed broken if syntax committed 2006-08-21 by Daniel. The broken syntax is visible to all unix platforms, but not on OSX for machines which HAVE_COREFOUNDATION. --- ChangeLog | 7 +++++++ unix/tclUnixNotfy.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8d9a571..b45f9ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-08-22 Andreas Kupries + + * unix/tclUnixNotfy.c (Tcl_WaitForEvent): Fixed broken if syntax + committed 2006-08-21 by Daniel. The broken syntax is visible to + all unix platforms, but not on OSX for machines which + HAVE_COREFOUNDATION. + 2006-08-21 Don Porter * generic/tclIOUtil.c: Revisions to complete the thread finalization diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 118fa79..a2f4642 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.15 2006/08/21 01:08:10 das Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.16 2006/08/22 17:45:02 andreas_kupries Exp $ */ #include "tclInt.h" @@ -714,7 +714,7 @@ Tcl_WaitForEvent(timePtr) Tcl_MutexLock(¬ifierMutex); waitForFiles = (tsdPtr->numFdBits > 0); - if (timePtr != NULL && timePtr->sec == 0 && timePtr->usec == 0) { + if (timePtr != NULL && timePtr->sec == 0 && (timePtr->usec == 0 #if defined(__APPLE__) && defined(__LP64__) /* * On 64-bit Darwin, pthread_cond_timedwait() appears to have a bug -- cgit v0.12 From bcd3bb70453870d6812d5df7bdb8e662cd6e8b16 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Aug 2006 17:24:07 +0000 Subject: * generic/tclIOGT.c (ExecuteCallback): * generic/tclPkg.c (Tcl_PkgRequireEx): replace Tcl_GlobalEval(Obj) with more efficient Tcl_Eval(Obj)Ex --- generic/tclIOGT.c | 4 ++-- generic/tclPkg.c | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/generic/tclIOGT.c b/generic/tclIOGT.c index 552acc0..7fbdda9 100644 --- a/generic/tclIOGT.c +++ b/generic/tclIOGT.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * CVS: $Id: tclIOGT.c,v 1.7.2.1 2004/09/10 20:01:03 andreas_kupries Exp $ + * CVS: $Id: tclIOGT.c,v 1.7.2.2 2006/08/30 17:24:07 hobbs Exp $ */ #include "tclInt.h" @@ -440,7 +440,7 @@ ExecuteCallback (dataPtr, interp, op, buf, bufLen, transmit, preserve) * message into current interpreter. Don't copy if in preservation mode. */ - res = Tcl_GlobalEvalObj (dataPtr->interp, command); + res = Tcl_EvalObjEx(dataPtr->interp, command, TCL_EVAL_GLOBAL); Tcl_DecrRefCount (command); command = (Tcl_Obj*) NULL; diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 3453020..4265aa9 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9.2.3 2006/04/05 01:20:53 dgp Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.4 2006/08/30 17:24:07 hobbs Exp $ */ #include "tclInt.h" @@ -327,7 +327,7 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) pkgPtr->clientData = (ClientData) versionToProvide; Tcl_Preserve((ClientData) script); Tcl_Preserve((ClientData) versionToProvide); - code = Tcl_GlobalEval(interp, script); + code = Tcl_EvalEx(interp, script, -1, TCL_EVAL_GLOBAL); Tcl_Release((ClientData) script); pkgPtr = FindPackage(interp, name); if (code == TCL_OK) { @@ -390,7 +390,7 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) pkgPtr->version, " provided instead", NULL); Tcl_ListObjAppendElement(NULL, cmdPtr, msg); Tcl_IncrRefCount(cmdPtr); - Tcl_GlobalEvalObj(interp, cmdPtr); + Tcl_EvalObjEx(interp, cmdPtr, TCL_EVAL_GLOBAL); Tcl_DecrRefCount(cmdPtr); Tcl_ResetResult(interp); } @@ -450,7 +450,8 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) if (exact) { Tcl_DStringAppend(&command, " -exact", 7); } - code = Tcl_GlobalEval(interp, Tcl_DStringValue(&command)); + code = Tcl_EvalEx(interp, Tcl_DStringValue(&command), + Tcl_DStringLength(&command), TCL_EVAL_GLOBAL); Tcl_DStringFree(&command); if ((code != TCL_OK) && (code != TCL_ERROR)) { Tcl_Obj *codePtr = Tcl_NewIntObj(code); -- cgit v0.12 From 9c3c7bbb5a78c67c9e24f4af24df1e183472330d Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Aug 2006 17:24:25 +0000 Subject: * generic/tclBasic.c (Tcl_CreateInterp): init iPtr->threadId --- generic/tclBasic.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 1941ca0..e13d01e 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.21 2006/03/06 21:56:13 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.22 2006/08/30 17:24:25 hobbs Exp $ */ #include "tclInt.h" @@ -363,6 +363,7 @@ Tcl_CreateInterp() iPtr->emptyObjPtr = Tcl_NewObj(); /* another empty object */ Tcl_IncrRefCount(iPtr->emptyObjPtr); iPtr->resultSpace[0] = 0; + iPtr->threadId = Tcl_GetCurrentThread(); iPtr->globalNsPtr = NULL; /* force creation of global ns below */ iPtr->globalNsPtr = (Namespace *) Tcl_CreateNamespace(interp, "", -- cgit v0.12 From f6c89ae4247f996475ddfbf89e217b539a3f037a Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Aug 2006 17:24:45 +0000 Subject: * unix/Makefile.in: add valgrindshell target and update default VALGRINDARGS. User can override, or add to it with VALGRIND_OPTS env var. --- unix/Makefile.in | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/unix/Makefile.in b/unix/Makefile.in index 0f816e7..32d2da4 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.16 2005/11/27 02:34:41 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.17 2006/08/30 17:24:45 hobbs Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -551,10 +551,17 @@ ddd: tclsh $(DDD) -command=gdb.run ./tclsh rm gdb.run +VALGRINDARGS=--tool=memcheck --num-callers=8 --leak-resolution=high --leak-check=yes --show-reachable=yes -v + valgrind: tclsh tcltest @LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \ - valgrind --num-callers=8 --leak-resolution=high -v --leak-check=yes --show-reachable=yes $(VALGRINDARGS) ./tcltest $(TOP_DIR)/tests/all.tcl -singleproc 1 $(TESTFLAGS) $(TCLTESTARGS) + valgrind $(VALGRINDARGS) ./tcltest $(TOP_DIR)/tests/all.tcl -singleproc 1 $(TESTFLAGS) $(TCLTESTARGS) + +valgrindshell: tclsh + @LD_LIBRARY_PATH_VAR@=`pwd`:$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \ + TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \ + valgrind $(VALGRINDARGS) ./tclsh $(SCRIPT) # The following target outputs the name of the top-level source directory # for Tcl (it is used by Tk's configure script, for example). The -- cgit v0.12 From 0fbcd16e10654644e7054dfb05b7953c1cb34d34 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Aug 2006 17:35:24 +0000 Subject: * generic/tclFileName.c (TclDoGlob): match incr with existing decr. --- generic/tclFileName.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 0e6c35f..7ed34f7 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.12 2006/05/13 23:21:04 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.13 2006/08/30 17:35:24 hobbs Exp $ */ #include "tclInt.h" @@ -2533,17 +2533,17 @@ TclDoGlob(interp, separators, headPtr, tail, types) ret = Tcl_FSMatchInDirectory(interp, Tcl_GetObjResult(interp), head, tail, types); } else { - Tcl_Obj* resultPtr; - /* * We do the recursion ourselves. This makes implementing * Tcl_FSMatchInDirectory for each filesystem much easier. */ Tcl_GlobTypeData dirOnly = { TCL_GLOB_TYPE_DIR, 0, NULL, NULL }; char save = *p; - - *p = '\0'; + Tcl_Obj *resultPtr; + resultPtr = Tcl_NewListObj(0, NULL); + Tcl_IncrRefCount(resultPtr); + *p = '\0'; ret = Tcl_FSMatchInDirectory(interp, resultPtr, head, tail, &dirOnly); *p = save; @@ -2560,7 +2560,7 @@ TclDoGlob(interp, separators, headPtr, tail, types) Tcl_DStringAppend(&ds, Tcl_GetString(elt), -1); if(tclPlatform == TCL_PLATFORM_MAC) { Tcl_DStringAppend(&ds, ":",1); - } else { + } else { Tcl_DStringAppend(&ds, "/",1); } ret = TclDoGlob(interp, separators, &ds, p+1, types); -- cgit v0.12 From 8f481c22e737471e3dc5211eec9d4296f8f7da9f Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Aug 2006 17:48:48 +0000 Subject: * win/tclWinFCmd.c: [Bug 1548263] Added test for NULL return * generic/tclIOUtil.c: from Tcl_FSGetNormalizedPath which was causing segv's --- generic/tclIOUtil.c | 11 ++++++++--- win/tclWinFCmd.c | 11 ++++++++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index b5cf2ec..7ee2583 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.30 2006/08/21 14:56:28 dgp Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.31 2006/08/30 17:48:48 hobbs Exp $ */ #include "tclInt.h" @@ -4013,6 +4013,9 @@ NativeCreateNativeRep(pathObjPtr) /* Make sure the normalized path is set */ validPathObjPtr = Tcl_FSGetNormalizedPath(NULL, pathObjPtr); + if (validPathObjPtr == NULL) { + return NULL; + } str = Tcl_GetStringFromObj(validPathObjPtr, &len); #ifdef __WIN32__ @@ -4028,7 +4031,7 @@ NativeCreateNativeRep(pathObjPtr) #endif nativePathPtr = ckalloc((unsigned) len); memcpy((VOID*)nativePathPtr, (VOID*)Tcl_DStringValue(&ds), (size_t) len); - + Tcl_DStringFree(&ds); return (ClientData)nativePathPtr; } @@ -5436,7 +5439,9 @@ Tcl_FSGetTranslatedPath(interp, pathPtr) retObj = srcFsPathPtr->translatedPathPtr; } - Tcl_IncrRefCount(retObj); + if (retObj) { + Tcl_IncrRefCount(retObj); + } return retObj; } diff --git a/win/tclWinFCmd.c b/win/tclWinFCmd.c index b8d1564..a6b0dcb 100644 --- a/win/tclWinFCmd.c +++ b/win/tclWinFCmd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFCmd.c,v 1.35.2.4 2005/06/23 15:05:22 kennykb Exp $ + * RCS: @(#) $Id: tclWinFCmd.c,v 1.35.2.5 2006/08/30 17:48:48 hobbs Exp $ */ #include "tclWinInt.h" @@ -902,8 +902,14 @@ TclpObjCopyDirectory(srcPathPtr, destPathPtr, errorPtr) int ret; normSrcPtr = Tcl_FSGetNormalizedPath(NULL,srcPathPtr); + if (normSrcPtr == NULL) { + return TCL_ERROR; + } Tcl_WinUtfToTChar(Tcl_GetString(normSrcPtr), -1, &srcString); normDestPtr = Tcl_FSGetNormalizedPath(NULL,destPathPtr); + if (normDestPtr == NULL) { + return TCL_ERROR; + } Tcl_WinUtfToTChar(Tcl_GetString(normDestPtr), -1, &dstString); ret = TraverseWinTree(TraversalCopy, &srcString, &dstString, &ds); @@ -971,6 +977,9 @@ TclpObjRemoveDirectory(pathPtr, recursive, errorPtr) */ Tcl_DString native; normPtr = Tcl_FSGetNormalizedPath(NULL, pathPtr); + if (normPtr == NULL) { + return TCL_ERROR; + } Tcl_WinUtfToTChar(Tcl_GetString(normPtr), -1, &native); ret = DoRemoveDirectory(&native, recursive, &ds); Tcl_DStringFree(&native); -- cgit v0.12 From 8891df0a7cf7aee5549b2f76b48c067443a97100 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Aug 2006 17:53:28 +0000 Subject: * win/tclWinChan.c: [Bug 819667] Improve logic for identifying COM ports. --- win/tclWinChan.c | 103 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/win/tclWinChan.c b/win/tclWinChan.c index 5d2175c..90c13f7 100644 --- a/win/tclWinChan.c +++ b/win/tclWinChan.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.4 2005/06/23 15:05:22 kennykb Exp $ + * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.5 2006/08/30 17:53:28 hobbs Exp $ */ #include "tclWinInt.h" @@ -100,8 +100,8 @@ static void FileWatchProc _ANSI_ARGS_((ClientData instanceData, int mask)); static void FileThreadActionProc _ANSI_ARGS_ (( ClientData instanceData, int action)); +static DWORD FileGetType _ANSI_ARGS_((HANDLE handle)); - /* * This structure describes the channel type structure for file based IO. */ @@ -784,9 +784,8 @@ TclpOpenFileChannel(interp, pathPtr, mode, permissions) { Tcl_Channel channel = 0; int channelPermissions; - DWORD accessMode, createMode, shareMode, flags, consoleParams, type; + DWORD accessMode, createMode, shareMode, flags; CONST TCHAR *nativeName; - DCB dcb; HANDLE handle; char channelName[16 + TCL_INTEGER_SPACE]; TclFile readFile = NULL; @@ -885,29 +884,9 @@ TclpOpenFileChannel(interp, pathPtr, mode, permissions) return NULL; } - type = GetFileType(handle); - - /* - * If the file is a character device, we need to try to figure out - * whether it is a serial port, a console, or something else. We - * test for the console case first because this is more common. - */ - - if (type == FILE_TYPE_CHAR) { - if (GetConsoleMode(handle, &consoleParams)) { - type = FILE_TYPE_CONSOLE; - } else { - dcb.DCBlength = sizeof( DCB ) ; - if (GetCommState(handle, &dcb)) { - type = FILE_TYPE_SERIAL; - } - - } - } - channel = NULL; - switch (type) { + switch ( FileGetType(handle) ) { case FILE_TYPE_SERIAL: /* * Reopen channel for OVERLAPPED operation @@ -993,8 +972,6 @@ Tcl_MakeFileChannel(rawHandle, mode) Tcl_Channel channel = NULL; HANDLE handle = (HANDLE) rawHandle; HANDLE dupedHandle; - DCB dcb; - DWORD consoleParams, type; TclFile readFile = NULL; TclFile writeFile = NULL; BOOL result; @@ -1003,30 +980,7 @@ Tcl_MakeFileChannel(rawHandle, mode) return NULL; } - /* - * GetFileType() returns FILE_TYPE_UNKNOWN for invalid handles. - */ - - type = GetFileType(handle); - - /* - * If the file is a character device, we need to try to figure out - * whether it is a serial port, a console, or something else. We - * test for the console case first because this is more common. - */ - - if (type == FILE_TYPE_CHAR) { - if (GetConsoleMode(handle, &consoleParams)) { - type = FILE_TYPE_CONSOLE; - } else { - dcb.DCBlength = sizeof( DCB ) ; - if (GetCommState(handle, &dcb)) { - type = FILE_TYPE_SERIAL; - } - } - } - - switch (type) + switch (FileGetType(handle)) { case FILE_TYPE_SERIAL: channel = TclWinOpenSerialChannel(handle, channelName, mode); @@ -1430,3 +1384,50 @@ FileThreadActionProc (instanceData, action) } } } + + +/* + *---------------------------------------------------------------------- + * + * FileGetType -- + * + * Given a file handle, return its type + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +DWORD +FileGetType(handle) + HANDLE handle; /* Opened file handle */ +{ + DWORD type; + DWORD consoleParams; + DCB dcb; + + type = GetFileType(handle); + + /* + * If the file is a character device, we need to try to figure out + * whether it is a serial port, a console, or something else. We + * test for the console case first because this is more common. + */ + + if (type == FILE_TYPE_CHAR || (type == FILE_TYPE_UNKNOWN && !GetLastError())) { + if (GetConsoleMode(handle, &consoleParams)) { + type = FILE_TYPE_CONSOLE; + } else { + dcb.DCBlength = sizeof( DCB ) ; + if (GetCommState(handle, &dcb)) { + type = FILE_TYPE_SERIAL; + } + } + } + + return type; +} -- cgit v0.12 From 55bb171c5a37f39c8ae6e4b9c02641115491bde3 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 30 Aug 2006 17:53:39 +0000 Subject: see changes --- ChangeLog | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ChangeLog b/ChangeLog index b45f9ff..ba22b00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2006-08-30 Jeff Hobbs + + * win/tclWinChan.c: [Bug 819667] Improve logic for identifying COM + ports. + + * win/tclWinFCmd.c: [Bug 1548263] Added test for NULL return + * generic/tclIOUtil.c: from Tcl_FSGetNormalizedPath which was + causing segv's + + * generic/tclFileName.c (TclDoGlob): match incr with existing decr. + + * unix/Makefile.in: add valgrindshell target and update default + VALGRINDARGS. User can override, or add to it with VALGRIND_OPTS + env var. + + * generic/tclBasic.c (Tcl_CreateInterp): init iPtr->threadId + + * generic/tclIOGT.c (ExecuteCallback): + * generic/tclPkg.c (Tcl_PkgRequireEx): replace Tcl_GlobalEval(Obj) + with more efficient Tcl_Eval(Obj)Ex + 2006-08-22 Andreas Kupries * unix/tclUnixNotfy.c (Tcl_WaitForEvent): Fixed broken if syntax -- cgit v0.12 From fb322e551993c6b4a15a4445c537c6b9d0a87077 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 4 Sep 2006 19:35:49 +0000 Subject: correct package example --- ChangeLog | 4 ++++ doc/package.n | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ba22b00..f7b4369 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-09-04 Jeff Hobbs + + * doc/package.n: correct package example + 2006-08-30 Jeff Hobbs * win/tclWinChan.c: [Bug 819667] Improve logic for identifying COM diff --git a/doc/package.n b/doc/package.n index cac5482..736e868 100644 --- a/doc/package.n +++ b/doc/package.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: package.n,v 1.6.2.2 2005/11/09 21:26:14 dgp Exp $ +'\" RCS: @(#) $Id: package.n,v 1.6.2.3 2006/09/04 19:35:49 hobbs Exp $ '\" .so man.macros .TH package n 7.5 Tcl "Tcl Built-In Commands" @@ -201,9 +201,10 @@ To test to see if the Snack package is available and load if it is the functionality is not critical) do this: .CS if {[catch {\fBpackage require\fR Snack}]} { - # We have the package, configure the app to use it -} else { + # Error thrown - package not found. # Set up a dummy interface to work around the absence +} else { + # We have the package, configure the app to use it } .CE -- cgit v0.12 From c3bca1a754d66b27cadf2bd50e401a278933059c Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 4 Sep 2006 21:36:55 +0000 Subject: * tests/main.text (Tcl_Main-4.4): Test corrected to not be timing sensitive to the Bug 1481986 fix. [Bug 1550858] --- ChangeLog | 5 +++++ tests/main.test | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f7b4369..c754c6a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-09-04 Don Porter + + * tests/main.text (Tcl_Main-4.4): Test corrected to not be + timing sensitive to the Bug 1481986 fix. [Bug 1550858] + 2006-09-04 Jeff Hobbs * doc/package.n: correct package example diff --git a/tests/main.test b/tests/main.test index 4e91478..12afa46 100644 --- a/tests/main.test +++ b/tests/main.test @@ -1,6 +1,6 @@ # This file contains a collection of tests for generic/tclMain.c. # -# RCS: @(#) $Id: main.test,v 1.13.2.3 2006/05/05 18:08:58 dgp Exp $ +# RCS: @(#) $Id: main.test,v 1.13.2.4 2006/09/04 21:36:55 dgp Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -488,7 +488,7 @@ namespace eval ::tcl::test::main { } } rc] } -body { - exec [interpreter] << {puts "In script"} \ + exec [interpreter] << {} \ -appinitprocsetrcfile $rc >& result set f [open result] read $f @@ -497,7 +497,7 @@ namespace eval ::tcl::test::main { file delete result removeFile rc } -result "application-specific initialization failed:\ - \nIn script\nExit MainLoop\nIn exit\neven 0\n" + \nExit MainLoop\nIn exit\neven 0\n" test Tcl_Main-4.5 { Tcl_Main: Bug 1481986 -- cgit v0.12 From d5c12918537c09220dff6836aa6ff2a1287d54d5 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 5 Sep 2006 16:10:52 +0000 Subject: typo --- doc/msgcat.n | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/msgcat.n b/doc/msgcat.n index 87626b2..7f85dc6 100644 --- a/doc/msgcat.n +++ b/doc/msgcat.n @@ -167,7 +167,7 @@ When a locale is specified by the user, a ``best match'' search is performed during string translation. For example, if a user specifies en_GB_Funky, the locales ``en_GB_Funky'', ``en_GB'', and ``en'' are searched in order until a matching translation string is found. If no -translation string is available, then \fB::msgcat::unknown\fR is +translation string is available, then \fB::msgcat::mcunknown\fR is called. .SH "NAMESPACES AND MESSAGE CATALOGS" .PP -- cgit v0.12 From 17f0d7c6ab239c4f20fb94d2f67a6e365c507143 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Wed, 6 Sep 2006 13:08:25 +0000 Subject: Added MT-safe implementation of some library calls. See Tcl Bug 999544 for more information. --- ChangeLog | 14 + unix/Makefile.in | 11 +- unix/configure | 18948 ++++++++++++++++++++++++++++++++++++++------------- unix/configure.in | 15 +- unix/tcl.m4 | 398 ++ unix/tclUnixChan.c | 32 +- unix/tclUnixFCmd.c | 77 +- unix/tclUnixPort.h | 29 +- unix/tclUnixSock.c | 16 +- 9 files changed, 14964 insertions(+), 4576 deletions(-) diff --git a/ChangeLog b/ChangeLog index c754c6a..990dad0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2006-09-06 Zoran Vasiljevic + + * unix/tclUnixChan.c: Added TCL_THREADS ifdef'ed usage + * unix/tclUnixFCmd.c: of MT-safe calls like: + * unix/tclUnixSock.c: getpwuid, getpwnam, getgrgid, getgrnam, + * unix/tclUnixPort.h: gethostbyname and gethostbyaddr. + * unix/Makefile.in: See Tcl Bug: 999544 + * unix/configure.in: + * unix/tcl.m4: + * unix/configure: Regenerated. + + * unix/tclUnixCompat.c: New file containing MT-safe implementation + of some library calls. + 2006-09-04 Don Porter * tests/main.text (Tcl_Main-4.4): Test corrected to not be diff --git a/unix/Makefile.in b/unix/Makefile.in index 32d2da4..2f8b528 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.17 2006/08/30 17:24:45 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.18 2006/09/06 13:08:27 vasiljevic Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -140,7 +140,8 @@ GENERIC_FLAGS = #GENERIC_FLAGS = -DTCL_GENERIC_ONLY UNIX_OBJS = tclUnixChan.o tclUnixEvent.o tclUnixFCmd.o \ tclUnixFile.o tclUnixPipe.o tclUnixSock.o \ - tclUnixTime.o tclUnixInit.o tclUnixThrd.o + tclUnixTime.o tclUnixInit.o tclUnixThrd.o \ + tclUnixCompat.o #UNIX_OBJS = NOTIFY_OBJS = tclUnixNotfy.o #NOTIFY_OBJS = @@ -433,7 +434,8 @@ UNIX_SRCS = \ $(UNIX_DIR)/tclUnixTest.c \ $(UNIX_DIR)/tclUnixThrd.c \ $(UNIX_DIR)/tclUnixTime.c \ - $(UNIX_DIR)/tclUnixInit.c + $(UNIX_DIR)/tclUnixInit.c \ + $(UNIX_DIR)/tclUnixCompat.c NOTIFY_SRCS = \ $(UNIX_DIR)/tclUnixNotfy.c @@ -1083,6 +1085,9 @@ tclUnixInit.o: $(UNIX_DIR)/tclUnixInit.c $(GENERIC_DIR)/tclInitScript.h tclConfi -DTCL_PACKAGE_PATH="\"${TCL_PACKAGE_PATH}\"" \ $(UNIX_DIR)/tclUnixInit.c +tclUnixCompat.o: $(UNIX_DIR)/tclUnixCompat.c + $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixCompat.c + # The following are Mac OS X only sources: tclMacOSXBundle.o: $(MAC_OSX_DIR)/tclMacOSXBundle.c $(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tclMacOSXBundle.c diff --git a/unix/configure b/unix/configure index e2b2850..1b531c4 100755 --- a/unix/configure +++ b/unix/configure @@ -1,54 +1,325 @@ #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# Generated by GNU Autoconf 2.59. # +# Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 -# Defaults: -ac_help= +# +# Initializations. +# ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --enable-man-symlinks use symlinks for the manpages" -ac_help="$ac_help - --enable-man-compression=PROG - compress the manpages with PROG" -ac_help="$ac_help - --enable-man-suffix=STRING - use STRING as a suffix to manpage file names - (default: tcl)" -ac_help="$ac_help - --enable-threads build with threads" -ac_help="$ac_help - --enable-shared build and link with shared libraries [--enable-shared]" -ac_help="$ac_help - --enable-64bit enable 64bit support (where applicable)" -ac_help="$ac_help - --enable-64bit-vis enable 64bit Sparc VIS support" -ac_help="$ac_help - --enable-corefoundation use CoreFoundation API [--enable-corefoundation]" -ac_help="$ac_help - --disable-load disallow dynamic loading and "load" command" -ac_help="$ac_help - --enable-symbols build with debugging symbols [--disable-symbols]" -ac_help="$ac_help - --enable-langinfo use nl_langinfo if possible to determine - encoding at startup, otherwise use old heuristic" -ac_help="$ac_help - --enable-framework package shared libraries in MacOSX frameworks [--disable-framework]" +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="../generic/tcl.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS TCL_LIBS MATH_LIBS RANLIB ac_ct_RANLIB AR DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT LIBOBJS TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_PATCH_LEVEL TCL_YEAR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_STUB_LIB_PATH TCL_INCLUDE_SPEC TCL_BUILD_STUB_LIB_SPEC TCL_BUILD_STUB_LIB_PATH TCL_SRC_DIR TCL_DBGX CFG_TCL_SHARED_LIB_SUFFIX CFG_TCL_UNSHARED_LIB_SUFFIX CFG_TCL_EXPORT_FILE_SUFFIX TCL_SHARED_BUILD LD_LIBRARY_PATH_VAR TCL_BUILD_LIB_SPEC TCL_NEEDS_EXP_FILE TCL_BUILD_EXP_FILE TCL_EXP_FILE TCL_LIB_VERSIONS_OK TCL_SHARED_LIB_SUFFIX TCL_UNSHARED_LIB_SUFFIX TCL_HAS_LONGLONG BUILD_DLTEST TCL_PACKAGE_PATH TCL_LIBRARY PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML LTLIBOBJS' +ac_subst_files='' # Initialize some variables set by options. +ac_init_help= +ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. -build=NONE -cache_file=./config.cache +cache_file=/dev/null exec_prefix=NONE -host=NONE no_create= -nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE @@ -57,10 +328,15 @@ program_transform_name=s,x,x, silent= site= srcdir= -target=NONE verbose= x_includes=NONE x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' @@ -74,17 +350,9 @@ oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - ac_prev= for ac_option do - # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" @@ -92,59 +360,59 @@ do continue fi - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. - case "$ac_option" in + case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; + bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) - ac_prev=build ;; + ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; + build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) - datadir="$ac_optarg" ;; + datadir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac - eval "enable_${ac_feature}='$ac_optarg'" ;; + eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -153,95 +421,47 @@ do -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; + exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; -host | --host | --hos | --ho) - ac_prev=host ;; + ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; + host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; + includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; + infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; + libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; + libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ @@ -250,19 +470,19 @@ EOF -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; + localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; + mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) + | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ @@ -276,26 +496,26 @@ EOF -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; + oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; + prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; + program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; + program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ @@ -312,7 +532,7 @@ EOF | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; + program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) @@ -322,7 +542,7 @@ EOF ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; + sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ @@ -333,58 +553,57 @@ EOF | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; + sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; + site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; + srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; + sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; + ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; + target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac - eval "with_${ac_package}='$ac_optarg'" ;; + eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. @@ -395,99 +614,110 @@ EOF ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; + x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; + x_libraries=$ac_optarg ;; - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } fi -exec 5>./config.log -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; esac done -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=../generic/tcl.h # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. @@ -497,13 +727,474 @@ else fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } fi fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-man-symlinks use symlinks for the manpages + --enable-man-compression=PROG + compress the manpages with PROG + --enable-man-suffix=STRING + use STRING as a suffix to manpage file names + (default: tcl) + --enable-threads build with threads + --enable-shared build and link with shared libraries --enable-shared + --enable-64bit enable 64bit support (where applicable) + --enable-64bit-vis enable 64bit Sparc VIS support + --enable-corefoundation use CoreFoundation API --enable-corefoundation + --disable-load disallow dynamic loading and "load" command + --enable-symbols build with debugging symbols --disable-symbols + --enable-langinfo use nl_langinfo if possible to determine + encoding at startup, otherwise use old heuristic + --enable-framework package shared libraries in MacOSX frameworks --disable-framework + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then @@ -514,39 +1205,103 @@ if test -z "$CONFIG_SITE"; then fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi else - echo "creating cache $cache_file" - > $cache_file + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } fi ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + @@ -576,46 +1331,49 @@ TCL_SRC_DIR=`cd $srcdir/..; pwd` #------------------------------------------------------------------------ - echo $ac_n "checking whether to use symlinks for manpages""... $ac_c" 1>&6 -echo "configure:581: checking whether to use symlinks for manpages" >&5 + echo "$as_me:$LINENO: checking whether to use symlinks for manpages" >&5 +echo $ECHO_N "checking whether to use symlinks for manpages... $ECHO_C" >&6 # Check whether --enable-man-symlinks or --disable-man-symlinks was given. if test "${enable_man_symlinks+set}" = set; then enableval="$enable_man_symlinks" test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks" else enableval="no" -fi - - echo "$ac_t""$enableval" 1>&6 +fi; + echo "$as_me:$LINENO: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 - echo $ac_n "checking whether to compress the manpages""... $ac_c" 1>&6 -echo "configure:593: checking whether to compress the manpages" >&5 + echo "$as_me:$LINENO: checking whether to compress the manpages" >&5 +echo $ECHO_N "checking whether to compress the manpages... $ECHO_C" >&6 # Check whether --enable-man-compression or --disable-man-compression was given. if test "${enable_man_compression+set}" = set; then enableval="$enable_man_compression" case $enableval in - yes) { echo "configure: error: missing argument to --enable-man-compression" 1>&2; exit 1; };; + yes) { { echo "$as_me:$LINENO: error: missing argument to --enable-man-compression" >&5 +echo "$as_me: error: missing argument to --enable-man-compression" >&2;} + { (exit 1); exit 1; }; };; no) ;; *) MAN_FLAGS="$MAN_FLAGS --compress $enableval";; esac else enableval="no" -fi - - echo "$ac_t""$enableval" 1>&6 +fi; + echo "$as_me:$LINENO: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 if test "$enableval" != "no"; then - echo $ac_n "checking for compressed file suffix""... $ac_c" 1>&6 -echo "configure:609: checking for compressed file suffix" >&5 + echo "$as_me:$LINENO: checking for compressed file suffix" >&5 +echo $ECHO_N "checking for compressed file suffix... $ECHO_C" >&6 touch TeST $enableval TeST Z=`ls TeST* | sed 's/^....//'` rm -f TeST* MAN_FLAGS="$MAN_FLAGS --extension $Z" - echo "$ac_t""$Z" 1>&6 + echo "$as_me:$LINENO: result: $Z" >&5 +echo "${ECHO_T}$Z" >&6 fi - echo $ac_n "checking whether to add a package name suffix for the manpages""... $ac_c" 1>&6 -echo "configure:619: checking whether to add a package name suffix for the manpages" >&5 + echo "$as_me:$LINENO: checking whether to add a package name suffix for the manpages" >&5 +echo $ECHO_N "checking whether to add a package name suffix for the manpages... $ECHO_C" >&6 # Check whether --enable-man-suffix or --disable-man-suffix was given. if test "${enable_man_suffix+set}" = set; then enableval="$enable_man_suffix" @@ -626,11 +1384,11 @@ if test "${enable_man_suffix+set}" = set; then esac else enableval="no" -fi +fi; + echo "$as_me:$LINENO: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 - echo "$ac_t""$enableval" 1>&6 - #------------------------------------------------------------------------ @@ -643,214 +1401,659 @@ if test "${CFLAGS+set}" != "set" ; then CFLAGS="" fi -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:650: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + fi fi -CC="$ac_cv_prog_CC" +CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC else - echo "$ac_t""no" 1>&6 + CC="$ac_cv_prog_CC" fi +fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:680: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift - if test $# -gt 0; then + if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi -CC="$ac_cv_prog_CC" +CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:731: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + fi fi -CC="$ac_cv_prog_CC" +CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - ;; - esac + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:763: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + test -n "$ac_ct_CC" && break +done -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 774 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no else - ac_cv_prog_cc_cross=yes + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:805: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:810: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done else - ac_cv_prog_gcc=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 +int +main () +{ +#ifndef __GNUC__ + choke me +#endif -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:838: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else - ac_cv_prog_cc_g=no -fi -rm -f conftest* + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" + CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" @@ -864,6 +2067,269 @@ else CFLAGS= fi fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu #-------------------------------------------------------------------- @@ -875,432 +2341,1544 @@ fi # Do this early, otherwise an autoconf bug throws errors on configure #-------------------------------------------------------------------- -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:880: checking how to run the C preprocessor" >&5 + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:901: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break fi -rm -f conftest* +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi - CPP="$ac_cv_prog_CPP" +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi else - ac_cv_prog_CPP="$CPP" + ac_cpp_err=yes fi -echo "$ac_t""$CPP" 1>&6 +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext - echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:961: checking dirent.h" >&5 -if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : else - - cat > conftest.$ac_ext < -#include -int main() { + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi -#ifndef _POSIX_SOURCE -# ifdef __Lynx__ - /* - * Generate compilation error to make the test fail: Lynx headers - * are only valid if really in the POSIX environment. - */ +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - missing_procedure(); -# endif -#endif -DIR *d; -struct dirent *entryPtr; -char *p; -d = opendir("foobar"); -entryPtr = readdir(d); -p = entryPtr->d_name; -closedir(d); -; return 0; } -EOF -if { (eval echo configure:993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - tcl_cv_dirent_h=yes +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_dirent_h=no -fi -rm -f conftest* + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep -echo "$ac_t""$tcl_cv_dirent_h" 1>&6 - if test $tcl_cv_dirent_h = no; then - cat >> confdefs.h <<\EOF -#define NO_DIRENT_H 1 -EOF +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include - fi +int +main () +{ - ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1016: checking for errno.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_ERRNO_H 1 -EOF + ac_cv_header_stdc=no +fi +rm -f conftest* fi - ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:1053: checking for float.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1063: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + ac_cv_header_stdc=no fi rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + echo "$as_me:$LINENO: checking dirent.h" >&5 +echo $ECHO_N "checking dirent.h... $ECHO_C" >&6 +if test "${tcl_cv_dirent_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ + +#ifndef _POSIX_SOURCE +# ifdef __Lynx__ + /* + * Generate compilation error to make the test fail: Lynx headers + * are only valid if really in the POSIX environment. + */ + + missing_procedure(); +# endif +#endif +DIR *d; +struct dirent *entryPtr; +char *p; +d = opendir("foobar"); +entryPtr = readdir(d); +p = entryPtr->d_name; +closedir(d); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + tcl_cv_dirent_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_dirent_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $tcl_cv_dirent_h" >&5 +echo "${ECHO_T}$tcl_cv_dirent_h" >&6 + + if test $tcl_cv_dirent_h = no; then + cat >>confdefs.h <<\_ACEOF +#define NO_DIRENT_H 1 +_ACEOF + + fi + + if test "${ac_cv_header_errno_h+set}" = set; then + echo "$as_me:$LINENO: checking for errno.h" >&5 +echo $ECHO_N "checking for errno.h... $ECHO_C" >&6 +if test "${ac_cv_header_errno_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5 +echo "${ECHO_T}$ac_cv_header_errno_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking errno.h usability" >&5 +echo $ECHO_N "checking errno.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking errno.h presence" >&5 +echo $ECHO_N "checking errno.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: errno.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: errno.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: errno.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: errno.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: errno.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: errno.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: errno.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: errno.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: errno.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: errno.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: errno.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: errno.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for errno.h" >&5 +echo $ECHO_N "checking for errno.h... $ECHO_C" >&6 +if test "${ac_cv_header_errno_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_errno_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5 +echo "${ECHO_T}$ac_cv_header_errno_h" >&6 + +fi +if test $ac_cv_header_errno_h = yes; then + : +else + cat >>confdefs.h <<\_ACEOF +#define NO_ERRNO_H 1 +_ACEOF + +fi + + + if test "${ac_cv_header_float_h+set}" = set; then + echo "$as_me:$LINENO: checking for float.h" >&5 +echo $ECHO_N "checking for float.h... $ECHO_C" >&6 +if test "${ac_cv_header_float_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_float_h" >&5 +echo "${ECHO_T}$ac_cv_header_float_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking float.h usability" >&5 +echo $ECHO_N "checking float.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking float.h presence" >&5 +echo $ECHO_N "checking float.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: float.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: float.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: float.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: float.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: float.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: float.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: float.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: float.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: float.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: float.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: float.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: float.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: float.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: float.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: float.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: float.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for float.h" >&5 +echo $ECHO_N "checking for float.h... $ECHO_C" >&6 +if test "${ac_cv_header_float_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_float_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_float_h" >&5 +echo "${ECHO_T}$ac_cv_header_float_h" >&6 + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 +if test $ac_cv_header_float_h = yes; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_FLOAT_H 1 -EOF +_ACEOF fi - ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:1090: checking for values.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + if test "${ac_cv_header_values_h+set}" = set; then + echo "$as_me:$LINENO: checking for values.h" >&5 +echo $ECHO_N "checking for values.h... $ECHO_C" >&6 +if test "${ac_cv_header_values_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_values_h" >&5 +echo "${ECHO_T}$ac_cv_header_values_h" >&6 else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking values.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking values.h presence" >&5 +echo $ECHO_N "checking values.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1100: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: values.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: values.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: values.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: values.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: values.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: values.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: values.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: values.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: values.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: values.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: values.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: values.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: values.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: values.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: values.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: values.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for values.h" >&5 +echo $ECHO_N "checking for values.h... $ECHO_C" >&6 +if test "${ac_cv_header_values_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_values_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_values_h" >&5 +echo "${ECHO_T}$ac_cv_header_values_h" >&6 + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 +if test $ac_cv_header_values_h = yes; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_VALUES_H 1 -EOF +_ACEOF fi - ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:1127: checking for limits.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + if test "${ac_cv_header_limits_h+set}" = set; then + echo "$as_me:$LINENO: checking for limits.h" >&5 +echo $ECHO_N "checking for limits.h... $ECHO_C" >&6 +if test "${ac_cv_header_limits_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5 +echo "${ECHO_T}$ac_cv_header_limits_h" >&6 else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking limits.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking limits.h presence" >&5 +echo $ECHO_N "checking limits.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: limits.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: limits.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: limits.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: limits.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: limits.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: limits.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: limits.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: limits.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: limits.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: limits.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for limits.h" >&5 +echo $ECHO_N "checking for limits.h... $ECHO_C" >&6 +if test "${ac_cv_header_limits_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_limits_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5 +echo "${ECHO_T}$ac_cv_header_limits_h" >&6 + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF +if test $ac_cv_header_limits_h = yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_LIMITS_H 1 -EOF +_ACEOF else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_LIMITS_H 1 -EOF +_ACEOF fi - ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:1167: checking for stdlib.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + if test "${ac_cv_header_stdlib_h+set}" = set; then + echo "$as_me:$LINENO: checking for stdlib.h" >&5 +echo $ECHO_N "checking for stdlib.h... $ECHO_C" >&6 +if test "${ac_cv_header_stdlib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5 +echo "${ECHO_T}$ac_cv_header_stdlib_h" >&6 else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking stdlib.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking stdlib.h presence" >&5 +echo $ECHO_N "checking stdlib.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: stdlib.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: stdlib.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: stdlib.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: stdlib.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: stdlib.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: stdlib.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: stdlib.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: stdlib.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: stdlib.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: stdlib.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: stdlib.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: stdlib.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for stdlib.h" >&5 +echo $ECHO_N "checking for stdlib.h... $ECHO_C" >&6 +if test "${ac_cv_header_stdlib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_stdlib_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5 +echo "${ECHO_T}$ac_cv_header_stdlib_h" >&6 + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 +if test $ac_cv_header_stdlib_h = yes; then tcl_ok=1 else - echo "$ac_t""no" 1>&6 -tcl_ok=0 + tcl_ok=0 fi - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strtol" >/dev/null 2>&1; then + $EGREP "strtol" >/dev/null 2>&1; then : else - rm -rf conftest* tcl_ok=0 fi rm -f conftest* - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strtoul" >/dev/null 2>&1; then + $EGREP "strtoul" >/dev/null 2>&1; then : else - rm -rf conftest* tcl_ok=0 fi rm -f conftest* - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strtod" >/dev/null 2>&1; then + $EGREP "strtod" >/dev/null 2>&1; then : else - rm -rf conftest* tcl_ok=0 fi rm -f conftest* if test $tcl_ok = 0; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_STDLIB_H 1 -EOF +_ACEOF fi - ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:1249: checking for string.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for string.h... $ECHO_C" >&6 +if test "${ac_cv_header_string_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5 +echo "${ECHO_T}$ac_cv_header_string_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking string.h usability" >&5 +echo $ECHO_N "checking string.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking string.h presence" >&5 +echo $ECHO_N "checking string.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: string.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: string.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: string.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: string.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: string.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: string.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: string.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: string.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: string.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: string.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: string.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: string.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: string.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: string.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for string.h" >&5 +echo $ECHO_N "checking for string.h... $ECHO_C" >&6 +if test "${ac_cv_header_string_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_string_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5 +echo "${ECHO_T}$ac_cv_header_string_h" >&6 + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 +if test $ac_cv_header_string_h = yes; then tcl_ok=1 else - echo "$ac_t""no" 1>&6 -tcl_ok=0 + tcl_ok=0 fi - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strstr" >/dev/null 2>&1; then + $EGREP "strstr" >/dev/null 2>&1; then : else - rm -rf conftest* tcl_ok=0 fi rm -f conftest* - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "strerror" >/dev/null 2>&1; then + $EGREP "strerror" >/dev/null 2>&1; then : else - rm -rf conftest* tcl_ok=0 fi rm -f conftest* @@ -1310,126 +3888,457 @@ rm -f conftest* # set and why. if test $tcl_ok = 0; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_STRING_H 1 -EOF +_ACEOF fi - ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:1322: checking for sys/wait.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for sys/wait.h... $ECHO_C" >&6 +if test "${ac_cv_header_sys_wait_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking sys/wait.h usability" >&5 +echo $ECHO_N "checking sys/wait.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking sys/wait.h presence" >&5 +echo $ECHO_N "checking sys/wait.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: sys/wait.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: sys/wait.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/wait.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: sys/wait.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: sys/wait.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: sys/wait.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/wait.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: sys/wait.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/wait.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: sys/wait.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/wait.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: sys/wait.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/wait.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sys/wait.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/wait.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: sys/wait.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for sys/wait.h" >&5 +echo $ECHO_N "checking for sys/wait.h... $ECHO_C" >&6 +if test "${ac_cv_header_sys_wait_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_sys_wait_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 + +fi +if test $ac_cv_header_sys_wait_h = yes; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_SYS_WAIT_H 1 -EOF +_ACEOF fi - ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:1359: checking for dlfcn.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + if test "${ac_cv_header_dlfcn_h+set}" = set; then + echo "$as_me:$LINENO: checking for dlfcn.h" >&5 +echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 +if test "${ac_cv_header_dlfcn_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 +echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking dlfcn.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking dlfcn.h presence" >&5 +echo $ECHO_N "checking dlfcn.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: dlfcn.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: dlfcn.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: dlfcn.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: dlfcn.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: dlfcn.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for dlfcn.h" >&5 +echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 +if test "${ac_cv_header_dlfcn_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_dlfcn_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 +echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 + +fi +if test $ac_cv_header_dlfcn_h = yes; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_DLFCN_H 1 -EOF +_ACEOF fi + # OS/390 lacks sys/param.h (and doesn't need it, by chance). - for ac_hdr in unistd.h sys/param.h + + +for ac_header in unistd.h sys/param.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1400: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1410: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + fi + done @@ -1441,30 +4350,59 @@ done if test -z "$no_pipe"; then if test -n "$GCC"; then - echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1446: checking if the compiler understands -pipe" >&5 - OLDCC="$CC" + echo "$as_me:$LINENO: checking if the compiler understands -pipe" >&5 +echo $ECHO_N "checking if the compiler understands -pipe... $ECHO_C" >&6 + OLDCC="$CC" CC="$CC -pipe" - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ -; return 0; } -EOF -if { (eval echo configure:1457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - echo "$ac_t""yes" 1>&6 -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CC="$OLDCC" - echo "$ac_t""no" 1>&6 + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +CC="$OLDCC" + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest* -fi fi #------------------------------------------------------------------------ @@ -1478,8 +4416,7 @@ if test "${enable_threads+set}" = set; then tcl_ok=$enableval else tcl_ok=no -fi - +fi; if test "${TCL_THREADS}" = 1; then tcl_threaded_core=1; @@ -1489,63 +4426,92 @@ fi TCL_THREADS=1 # USE_THREAD_ALLOC tells us to try the special thread-based # allocator that significantly reduces lock contention - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_THREAD_ALLOC 1 -EOF +_ACEOF - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _REENTRANT 1 -EOF +_ACEOF if test "`uname -s`" = "SunOS" ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _POSIX_PTHREAD_SEMANTICS 1 -EOF +_ACEOF fi - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _THREAD_SAFE 1 -EOF +_ACEOF - echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1512: checking for pthread_mutex_init in -lpthread" >&5 -ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthread" >&5 +echo $ECHO_N "checking for pthread_mutex_init in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_mutex_init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pthread_mutex_init(); - -int main() { -pthread_mutex_init() -; return 0; } -EOF -if { (eval echo configure:1531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char pthread_mutex_init (); +int +main () +{ +pthread_mutex_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread_pthread_mutex_init=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthread_pthread_mutex_init=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_init" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_init" >&6 +if test $ac_cv_lib_pthread_pthread_mutex_init = yes; then tcl_ok=yes else - echo "$ac_t""no" 1>&6 -tcl_ok=no + tcl_ok=no fi if test "$tcl_ok" = "no"; then @@ -1554,45 +4520,74 @@ fi # defined. We could alternatively do an AC_TRY_COMPILE with # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] - echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1559: checking for __pthread_mutex_init in -lpthread" >&5 -ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for __pthread_mutex_init in -lpthread" >&5 +echo $ECHO_N "checking for __pthread_mutex_init in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread___pthread_mutex_init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char __pthread_mutex_init(); - -int main() { -__pthread_mutex_init() -; return 0; } -EOF -if { (eval echo configure:1578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char __pthread_mutex_init (); +int +main () +{ +__pthread_mutex_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread___pthread_mutex_init=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthread___pthread_mutex_init=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread___pthread_mutex_init" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread___pthread_mutex_init" >&6 +if test $ac_cv_lib_pthread___pthread_mutex_init = yes; then tcl_ok=yes else - echo "$ac_t""no" 1>&6 -tcl_ok=no + tcl_ok=no fi fi @@ -1601,132 +4596,219 @@ fi # The space is needed THREADS_LIBS=" -lpthread" else - echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1606: checking for pthread_mutex_init in -lpthreads" >&5 -ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthreads" >&5 +echo $ECHO_N "checking for pthread_mutex_init in -lpthreads... $ECHO_C" >&6 +if test "${ac_cv_lib_pthreads_pthread_mutex_init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lpthreads $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pthread_mutex_init(); - -int main() { -pthread_mutex_init() -; return 0; } -EOF -if { (eval echo configure:1625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char pthread_mutex_init (); +int +main () +{ +pthread_mutex_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthreads_pthread_mutex_init=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthreads_pthread_mutex_init=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthreads_pthread_mutex_init" >&5 +echo "${ECHO_T}$ac_cv_lib_pthreads_pthread_mutex_init" >&6 +if test $ac_cv_lib_pthreads_pthread_mutex_init = yes; then tcl_ok=yes else - echo "$ac_t""no" 1>&6 -tcl_ok=no + tcl_ok=no fi if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -lpthreads" else - echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1651: checking for pthread_mutex_init in -lc" >&5 -ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for pthread_mutex_init in -lc" >&5 +echo $ECHO_N "checking for pthread_mutex_init in -lc... $ECHO_C" >&6 +if test "${ac_cv_lib_c_pthread_mutex_init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lc $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pthread_mutex_init(); - -int main() { -pthread_mutex_init() -; return 0; } -EOF -if { (eval echo configure:1670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char pthread_mutex_init (); +int +main () +{ +pthread_mutex_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_c_pthread_mutex_init=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_c_pthread_mutex_init=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_c_pthread_mutex_init" >&5 +echo "${ECHO_T}$ac_cv_lib_c_pthread_mutex_init" >&6 +if test $ac_cv_lib_c_pthread_mutex_init = yes; then tcl_ok=yes else - echo "$ac_t""no" 1>&6 -tcl_ok=no + tcl_ok=no fi if test "$tcl_ok" = "no"; then - echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1693: checking for pthread_mutex_init in -lc_r" >&5 -ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for pthread_mutex_init in -lc_r" >&5 +echo $ECHO_N "checking for pthread_mutex_init in -lc_r... $ECHO_C" >&6 +if test "${ac_cv_lib_c_r_pthread_mutex_init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lc_r $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pthread_mutex_init(); - -int main() { -pthread_mutex_init() -; return 0; } -EOF -if { (eval echo configure:1712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char pthread_mutex_init (); +int +main () +{ +pthread_mutex_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_c_r_pthread_mutex_init=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_c_r_pthread_mutex_init=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_c_r_pthread_mutex_init" >&5 +echo "${ECHO_T}$ac_cv_lib_c_r_pthread_mutex_init" >&6 +if test $ac_cv_lib_c_r_pthread_mutex_init = yes; then tcl_ok=yes else - echo "$ac_t""no" 1>&6 -tcl_ok=no + tcl_ok=no fi if test "$tcl_ok" = "yes"; then @@ -1734,7 +4816,8 @@ fi THREADS_LIBS=" -pthread" else TCL_THREADS=0 - echo "configure: warning: Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..." 1>&2 + { echo "$as_me:$LINENO: WARNING: Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..." >&5 +echo "$as_me: WARNING: Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..." >&2;} fi fi fi @@ -1745,113 +4828,207 @@ fi ac_saved_libs=$LIBS LIBS="$LIBS $THREADS_LIBS" - for ac_func in pthread_attr_setstacksize + +for ac_func in pthread_attr_setstacksize do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1752: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:1780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done - for ac_func in pthread_atfork + +for ac_func in pthread_atfork do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1807: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:1835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done @@ -1860,23 +5037,27 @@ done TCL_THREADS=0 fi # Do checking message here to not mess up interleaved configure output - echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:1865: checking for building with threads" >&5 + echo "$as_me:$LINENO: checking for building with threads" >&5 +echo $ECHO_N "checking for building with threads... $ECHO_C" >&6 if test "${TCL_THREADS}" = 1; then - cat >> confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define TCL_THREADS 1 -EOF +_ACEOF if test "${tcl_threaded_core}" = 1; then - echo "$ac_t""yes (threaded core)" 1>&6 + echo "$as_me:$LINENO: result: yes (threaded core)" >&5 +echo "${ECHO_T}yes (threaded core)" >&6 else - echo "$ac_t""yes" 1>&6 + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 fi else - echo "$ac_t""no (default)" 1>&6 + echo "$as_me:$LINENO: result: no (default)" >&5 +echo "${ECHO_T}no (default)" >&6 fi - + #-------------------------------------------------------------------- @@ -1891,89 +5072,162 @@ EOF # right (and it must appear before "-lm"). #-------------------------------------------------------------------- - echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1896: checking for sin" >&5 -if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for sin... $ECHO_C" >&6 +if test "${ac_cv_func_sin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define sin to an innocuous variant, in case declares sin. + For example, HP-UX 11i declares gettimeofday. */ +#define sin innocuous_sin + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char sin(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char sin(); + which can conflict with char sin (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif +#undef sin + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char sin (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_sin) || defined (__stub___sin) choke me #else -sin(); +char (*f) () = sin; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:1924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_sin=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_sin=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != sin; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_sin=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_sin=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_sin" >&5 +echo "${ECHO_T}$ac_cv_func_sin" >&6 +if test $ac_cv_func_sin = yes; then MATH_LIBS="" else - echo "$ac_t""no" 1>&6 -MATH_LIBS="-lm" + MATH_LIBS="-lm" fi - echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1945: checking for main in -lieee" >&5 -ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for main in -lieee" >&5 +echo $ECHO_N "checking for main in -lieee... $ECHO_C" >&6 +if test "${ac_cv_lib_ieee_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lieee $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -int main() { -main() -; return 0; } -EOF -if { (eval echo configure:1960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ieee_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ieee_main=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ieee_main" >&5 +echo "${ECHO_T}$ac_cv_lib_ieee_main" >&6 +if test $ac_cv_lib_ieee_main = yes; then MATH_LIBS="-lieee $MATH_LIBS" -else - echo "$ac_t""no" 1>&6 fi @@ -1982,79 +5236,214 @@ fi # needs net/errno.h to define the socket-related error codes. #-------------------------------------------------------------------- - echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1987: checking for main in -linet" >&5 -ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for main in -linet" >&5 +echo $ECHO_N "checking for main in -linet... $ECHO_C" >&6 +if test "${ac_cv_lib_inet_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-linet $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -int main() { -main() -; return 0; } -EOF -if { (eval echo configure:2002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + +int +main () +{ +main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_inet_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_inet_main=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_inet_main" >&5 +echo "${ECHO_T}$ac_cv_lib_inet_main" >&6 +if test $ac_cv_lib_inet_main = yes; then + LIBS="$LIBS -linet" fi -rm -f conftest* -LIBS="$ac_save_LIBS" + if test "${ac_cv_header_net_errno_h+set}" = set; then + echo "$as_me:$LINENO: checking for net/errno.h" >&5 +echo $ECHO_N "checking for net/errno.h... $ECHO_C" >&6 +if test "${ac_cv_header_net_errno_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_net_errno_h" >&5 +echo "${ECHO_T}$ac_cv_header_net_errno_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking net/errno.h usability" >&5 +echo $ECHO_N "checking net/errno.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking net/errno.h presence" >&5 +echo $ECHO_N "checking net/errno.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -linet" +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes else - echo "$ac_t""no" 1>&6 + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 - ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:2024: checking for net/errno.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: net/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: net/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: net/errno.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: net/errno.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: net/errno.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: net/errno.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: net/errno.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: net/errno.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: net/errno.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: net/errno.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: net/errno.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: net/errno.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: net/errno.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: net/errno.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: net/errno.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: net/errno.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for net/errno.h" >&5 +echo $ECHO_N "checking for net/errno.h... $ECHO_C" >&6 +if test "${ac_cv_header_net_errno_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + ac_cv_header_net_errno_h=$ac_header_preproc fi -rm -f conftest* +echo "$as_me:$LINENO: result: $ac_cv_header_net_errno_h" >&5 +echo "${ECHO_T}$ac_cv_header_net_errno_h" >&6 + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF +if test $ac_cv_header_net_errno_h = yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_NET_ERRNO_H 1 -EOF +_ACEOF -else - echo "$ac_t""no" 1>&6 fi + #-------------------------------------------------------------------- # Check for the existence of the -lsocket and -lnsl libraries. # The order here is important, so that they end up in the right @@ -2074,141 +5463,264 @@ fi #-------------------------------------------------------------------- tcl_checkBoth=0 - echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:2079: checking for connect" >&5 -if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for connect... $ECHO_C" >&6 +if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define connect to an innocuous variant, in case declares connect. + For example, HP-UX 11i declares gettimeofday. */ +#define connect innocuous_connect + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char connect(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char connect(); + which can conflict with char connect (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef connect +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_connect) || defined (__stub___connect) choke me #else -connect(); +char (*f) () = connect; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:2107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_connect=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_connect=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != connect; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_connect=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_connect=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 +echo "${ECHO_T}$ac_cv_func_connect" >&6 +if test $ac_cv_func_connect = yes; then tcl_checkSocket=0 else - echo "$ac_t""no" 1>&6 -tcl_checkSocket=1 + tcl_checkSocket=1 fi if test "$tcl_checkSocket" = 1; then - echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:2129: checking for setsockopt" >&5 -if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for setsockopt... $ECHO_C" >&6 +if test "${ac_cv_func_setsockopt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define setsockopt to an innocuous variant, in case declares setsockopt. + For example, HP-UX 11i declares gettimeofday. */ +#define setsockopt innocuous_setsockopt + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char setsockopt(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char setsockopt(); + which can conflict with char setsockopt (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef setsockopt +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char setsockopt (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_setsockopt) || defined (__stub___setsockopt) choke me #else -setsockopt(); +char (*f) () = setsockopt; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:2157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_setsockopt=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_setsockopt=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != setsockopt; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_setsockopt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_setsockopt=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_setsockopt" >&5 +echo "${ECHO_T}$ac_cv_func_setsockopt" >&6 +if test $ac_cv_func_setsockopt = yes; then : else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:2175: checking for setsockopt in -lsocket" >&5 -ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for setsockopt in -lsocket" >&5 +echo $ECHO_N "checking for setsockopt in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_setsockopt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char setsockopt(); - -int main() { -setsockopt() -; return 0; } -EOF -if { (eval echo configure:2194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char setsockopt (); +int +main () +{ +setsockopt (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_setsockopt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_setsockopt=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_setsockopt" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_setsockopt" >&6 +if test $ac_cv_lib_socket_setsockopt = yes; then LIBS="$LIBS -lsocket" else - echo "$ac_t""no" 1>&6 -tcl_checkBoth=1 + tcl_checkBoth=1 fi fi @@ -2217,167 +5729,288 @@ fi if test "$tcl_checkBoth" = 1; then tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" - echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:2222: checking for accept" >&5 -if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for accept... $ECHO_C" >&6 +if test "${ac_cv_func_accept+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define accept to an innocuous variant, in case declares accept. + For example, HP-UX 11i declares gettimeofday. */ +#define accept innocuous_accept + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char accept(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char accept(); + which can conflict with char accept (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef accept +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char accept (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_accept) || defined (__stub___accept) choke me #else -accept(); +char (*f) () = accept; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:2250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_accept=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_accept=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'accept`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != accept; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_accept=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_accept=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_accept" >&5 +echo "${ECHO_T}$ac_cv_func_accept" >&6 +if test $ac_cv_func_accept = yes; then tcl_checkNsl=0 else - echo "$ac_t""no" 1>&6 -LIBS=$tk_oldLibs + LIBS=$tk_oldLibs fi fi - echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:2272: checking for gethostbyname" >&5 -if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. + For example, HP-UX 11i declares gettimeofday. */ +#define gethostbyname innocuous_gethostbyname + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char gethostbyname(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname(); + which can conflict with char gethostbyname (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef gethostbyname +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else -gethostbyname(); +char (*f) () = gethostbyname; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_gethostbyname=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_gethostbyname=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != gethostbyname; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_gethostbyname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 +if test $ac_cv_func_gethostbyname = yes; then : else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:2318: checking for gethostbyname in -lnsl" >&5 -ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 +echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname(); - -int main() { -gethostbyname() -; return 0; } -EOF -if { (eval echo configure:2337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main () +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_nsl_gethostbyname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +if test $ac_cv_lib_nsl_gethostbyname = yes; then LIBS="$LIBS -lnsl" -else - echo "$ac_t""no" 1>&6 fi fi - + # Don't perform the eval of the libraries here because DL_LIBS # won't be set until we call SC_CONFIG_CFLAGS TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}' - - + + # Add the threads support libraries LIBS="$LIBS$THREADS_LIBS" - echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:2373: checking how to build libraries" >&5 + echo "$as_me:$LINENO: checking how to build libraries" >&5 +echo $ECHO_N "checking how to build libraries... $ECHO_C" >&6 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" tcl_ok=$enableval else tcl_ok=yes -fi - +fi; if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2387,14 +6020,16 @@ fi fi if test "$tcl_ok" = "yes" ; then - echo "$ac_t""shared" 1>&6 + echo "$as_me:$LINENO: result: shared" >&5 +echo "${ECHO_T}shared" >&6 SHARED_BUILD=1 else - echo "$ac_t""static" 1>&6 + echo "$as_me:$LINENO: result: static" >&5 +echo "${ECHO_T}static" >&6 SHARED_BUILD=0 - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define STATIC_BUILD 1 -EOF +_ACEOF fi @@ -2405,65 +6040,115 @@ EOF # after SC_ENABLE_SHARED checks the configure switches. #-------------------------------------------------------------------- -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2412: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + fi fi -RANLIB="$ac_cv_prog_RANLIB" +RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB else - echo "$ac_t""no" 1>&6 + RANLIB="$ac_cv_prog_RANLIB" fi # Step 0.a: Enable 64 bit support? - echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2444: checking if 64bit support is requested" >&5 + echo "$as_me:$LINENO: checking if 64bit support is requested" >&5 +echo $ECHO_N "checking if 64bit support is requested... $ECHO_C" >&6 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" do64bit=$enableval else do64bit=no -fi - - echo "$ac_t""$do64bit" 1>&6 +fi; + echo "$as_me:$LINENO: result: $do64bit" >&5 +echo "${ECHO_T}$do64bit" >&6 # Step 0.b: Enable Solaris 64 bit VIS support? - echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2458: checking if 64bit Sparc VIS support is requested" >&5 + echo "$as_me:$LINENO: checking if 64bit Sparc VIS support is requested" >&5 +echo $ECHO_N "checking if 64bit Sparc VIS support is requested... $ECHO_C" >&6 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" do64bitVIS=$enableval else do64bitVIS=no -fi - - echo "$ac_t""$do64bitVIS" 1>&6 +fi; + echo "$as_me:$LINENO: result: $do64bitVIS" >&5 +echo "${ECHO_T}$do64bitVIS" >&6 if test "$do64bitVIS" = "yes"; then # Force 64bit on with VIS @@ -2473,19 +6158,20 @@ fi # Step 1: set the variable "system" to hold the name and version number # for the system. - - echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:2479: checking system version" >&5 -if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + echo "$as_me:$LINENO: checking system version" >&5 +echo $ECHO_N "checking system version... $ECHO_C" >&6 +if test "${tcl_cv_sys_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test -f /usr/lib/NextStep/software_version; then tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then - echo "configure: warning: can't find uname command" 1>&2 + { echo "$as_me:$LINENO: WARNING: can't find uname command" >&5 +echo "$as_me: WARNING: can't find uname command" >&2;} tcl_cv_sys_version=unknown else # Special check for weird MP-RAS system (uname returns weird @@ -2499,61 +6185,90 @@ else fi fi fi - -fi -echo "$ac_t""$tcl_cv_sys_version" 1>&6 +fi +echo "$as_me:$LINENO: result: $tcl_cv_sys_version" >&5 +echo "${ECHO_T}$tcl_cv_sys_version" >&6 system=$tcl_cv_sys_version # Step 2: check for existence of -ldl library. This is needed because # Linux can use either -ldl or -ldld for dynamic loading. - echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2514: checking for dlopen in -ldl" >&5 -ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen(); - -int main() { -dlopen() -; return 0; } -EOF -if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then have_dl=yes else - echo "$ac_t""no" 1>&6 -have_dl=no + have_dl=no fi # Require ranlib early so we can override it in special cases below. - + # Step 3: set configuration options based on system name and version. @@ -2576,35 +6291,43 @@ fi TCL_EXP_FILE="" # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2581: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_AR="ar" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + fi fi -AR="$ac_cv_prog_AR" +AR=$ac_cv_prog_AR if test -n "$AR"; then - echo "$ac_t""$AR" 1>&6 + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi if test "${AR}" = "" ; then - { echo "configure: error: Required archive tool 'ar' not found on PATH." 1>&2; exit 1; } + { { echo "$as_me:$LINENO: error: Required archive tool 'ar' not found on PATH." >&5 +echo "$as_me: error: Required archive tool 'ar' not found on PATH." >&2;} + { (exit 1); exit 1; }; } fi STLIB_LD='${AR} cr' LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" @@ -2622,7 +6345,8 @@ fi CC=${CC}_r ;; esac - echo "$ac_t""Using $CC for compiling with threads" 1>&6 + echo "$as_me:$LINENO: result: Using $CC for compiling with threads" >&5 +echo "${ECHO_T}Using $CC for compiling with threads" >&6 fi LIBS="$LIBS -lc" SHLIB_CFLAGS="" @@ -2637,8 +6361,9 @@ fi # Check to enable 64-bit flags for compiler/linker on AIX 4+ if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then if test "$GCC" = "yes" ; then - echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 - else + { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 +echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} + else do64bit_ok=yes CFLAGS="$CFLAGS -q64" LDFLAGS="$LDFLAGS -q64" @@ -2691,52 +6416,81 @@ fi # deduce the timezone by comparing the localtime result on a # known GMT value. - echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2696: checking for gettimeofday in -lbsd" >&5 -ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for gettimeofday in -lbsd" >&5 +echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6 +if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gettimeofday(); - -int main() { -gettimeofday() -; return 0; } -EOF -if { (eval echo configure:2715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char gettimeofday (); +int +main () +{ +gettimeofday (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_bsd_gettimeofday=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_bsd_gettimeofday=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gettimeofday" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6 +if test $ac_cv_lib_bsd_gettimeofday = yes; then libbsd=yes else - echo "$ac_t""no" 1>&6 -libbsd=no + libbsd=no fi if test $libbsd = yes; then MATH_LIBS="$MATH_LIBS -lbsd" - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_DELTA_FOR_TZ 1 -EOF +_ACEOF fi ;; @@ -2753,44 +6507,72 @@ EOF # -lsocket, even if the network functions are in -lnet which # is always linked to, for compatibility. #----------------------------------------------------------- - echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2758: checking for inet_ntoa in -lbind" >&5 -ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for inet_ntoa in -lbind" >&5 +echo $ECHO_N "checking for inet_ntoa in -lbind... $ECHO_C" >&6 +if test "${ac_cv_lib_bind_inet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lbind $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char inet_ntoa(); - -int main() { -inet_ntoa() -; return 0; } -EOF -if { (eval echo configure:2777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char inet_ntoa (); +int +main () +{ +inet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_bind_inet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_bind_inet_ntoa=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_bind_inet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_bind_inet_ntoa" >&6 +if test $ac_cv_lib_bind_inet_ntoa = yes; then LIBS="$LIBS -lbind -lsocket" -else - echo "$ac_t""no" 1>&6 fi ;; @@ -2827,56 +6609,85 @@ fi ;; HP-UX-*.11.*) # Use updated header definitions where possible - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _XOPEN_SOURCE 1 -EOF +_ACEOF # Use the XOPEN network library - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _XOPEN_SOURCE_EXTENDED 1 -EOF +_ACEOF # Use the XOPEN network library LIBS="$LIBS -lxnet" # Use the XOPEN network library SHLIB_SUFFIX=".sl" - echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2843: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load(); - -int main() { -shl_load() -; return 0; } -EOF -if { (eval echo configure:2862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then tcl_ok=yes else - echo "$ac_t""no" 1>&6 -tcl_ok=no + tcl_ok=no fi if test "$tcl_ok" = yes; then @@ -2913,7 +6724,8 @@ fi LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ;; *) - echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 + { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 +echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} ;; esac else @@ -2925,45 +6737,74 @@ fi ;; HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" - echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2930: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load(); - -int main() { -shl_load() -; return 0; } -EOF -if { (eval echo configure:2949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then tcl_ok=yes else - echo "$ac_t""no" 1>&6 -tcl_ok=no + tcl_ok=no fi if test "$tcl_ok" = yes; then @@ -3039,7 +6880,8 @@ fi if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then - echo "configure: warning: 64bit mode not supported by gcc" 1>&2 + { echo "$as_me:$LINENO: WARNING: 64bit mode not supported by gcc" >&5 +echo "$as_me: WARNING: 64bit mode not supported by gcc" >&2;} else do64bit_ok=yes SHLIB_LD="ld -64 -shared -rdata_shared" @@ -3054,7 +6896,7 @@ fi SHLIB_SUFFIX=".so" CFLAGS_OPTIMIZE=-O2 - # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings + # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings # when you inline the string and math operations. Turn this off to # get rid of the warnings. #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" @@ -3067,44 +6909,153 @@ fi CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} else - ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3073: checking for dld.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for dld.h... $ECHO_C" >&6 +if test "${ac_cv_header_dld_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dld_h" >&5 +echo "${ECHO_T}$ac_cv_header_dld_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking dld.h usability" >&5 +echo $ECHO_N "checking dld.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking dld.h presence" >&5 +echo $ECHO_N "checking dld.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: dld.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: dld.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: dld.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: dld.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: dld.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: dld.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: dld.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: dld.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: dld.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: dld.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for dld.h" >&5 +echo $ECHO_N "checking for dld.h... $ECHO_C" >&6 +if test "${ac_cv_header_dld_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_dld_h=$ac_header_preproc fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - +echo "$as_me:$LINENO: result: $ac_cv_header_dld_h" >&5 +echo "${ECHO_T}$ac_cv_header_dld_h" >&6 + +fi +if test $ac_cv_header_dld_h = yes; then + SHLIB_LD="ld -shared" DL_OBJS="tclLoadDld.o" DL_LIBS="-ldld" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" -else - echo "$ac_t""no" 1>&6 fi + fi if test "`uname -m`" = "alpha" ; then CFLAGS="$CFLAGS -mieee" @@ -3122,9 +7073,9 @@ fi fi # XIM peeking works under XFree86. - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define PEEK_XCLOSEIM 1 -EOF +_ACEOF ;; @@ -3141,44 +7092,153 @@ EOF CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" else - ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3147: checking for dld.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for dld.h... $ECHO_C" >&6 +if test "${ac_cv_header_dld_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dld_h" >&5 +echo "${ECHO_T}$ac_cv_header_dld_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking dld.h usability" >&5 +echo $ECHO_N "checking dld.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking dld.h presence" >&5 +echo $ECHO_N "checking dld.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3157: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: dld.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: dld.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: dld.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: dld.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: dld.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: dld.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: dld.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: dld.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: dld.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: dld.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: dld.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for dld.h" >&5 +echo $ECHO_N "checking for dld.h... $ECHO_C" >&6 +if test "${ac_cv_header_dld_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_dld_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dld_h" >&5 +echo "${ECHO_T}$ac_cv_header_dld_h" >&6 + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - +if test $ac_cv_header_dld_h = yes; then + SHLIB_LD="ld -shared" DL_OBJS="" DL_LIBS="-ldld" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" -else - echo "$ac_t""no" 1>&6 fi + fi if test "`uname -m`" = "alpha" ; then CFLAGS="$CFLAGS -mieee" @@ -3219,35 +7279,145 @@ fi ;; NetBSD-*|FreeBSD-[1-2].*) # Not available on all versions: check for include file. - ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3225: checking for dlfcn.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 +if test "${ac_cv_header_dlfcn_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 +echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking dlfcn.h usability" >&5 +echo $ECHO_N "checking dlfcn.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking dlfcn.h presence" >&5 +echo $ECHO_N "checking dlfcn.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: dlfcn.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: dlfcn.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: dlfcn.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: dlfcn.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: dlfcn.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for dlfcn.h" >&5 +echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 +if test "${ac_cv_header_dlfcn_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_dlfcn_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 +echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - +if test $ac_cv_header_dlfcn_h = yes; then + # NetBSD/SPARC needs -fPIC, -fpic will not do. SHLIB_CFLAGS="-fPIC" SHLIB_LD="ld -Bshareable -x" @@ -3257,42 +7427,42 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3262: checking for ELF" >&5 -if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for ELF" >&5 +echo $ECHO_N "checking for ELF... $ECHO_C" >&6 +if test "${tcl_cv_ld_elf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #ifdef __ELF__ yes #endif - -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* + $EGREP "yes" >/dev/null 2>&1; then tcl_cv_ld_elf=yes else - rm -rf conftest* tcl_cv_ld_elf=no fi rm -f conftest* fi - -echo "$ac_t""$tcl_cv_ld_elf" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5 +echo "${ECHO_T}$tcl_cv_ld_elf" >&6 if test $tcl_cv_ld_elf = yes; then SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' else SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' fi - + else - echo "$ac_t""no" 1>&6 SHLIB_CFLAGS="" SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" @@ -3303,10 +7473,11 @@ else CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - + fi + # FreeBSD doesn't handle version numbers with dots. UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' @@ -3342,34 +7513,35 @@ fi CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3347: checking for ELF" >&5 -if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for ELF" >&5 +echo $ECHO_N "checking for ELF... $ECHO_C" >&6 +if test "${tcl_cv_ld_elf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #ifdef __ELF__ yes #endif - -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* + $EGREP "yes" >/dev/null 2>&1; then tcl_cv_ld_elf=yes else - rm -rf conftest* tcl_cv_ld_elf=no fi rm -f conftest* fi - -echo "$ac_t""$tcl_cv_ld_elf" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5 +echo "${ECHO_T}$tcl_cv_ld_elf" >&6 if test $tcl_cv_ld_elf = yes; then LDFLAGS=-Wl,-export-dynamic else @@ -3419,7 +7591,8 @@ echo "$ac_t""$tcl_cv_ld_elf" 1>&6 i386) CFLAGS="$CFLAGS -arch x86_64";; *) - echo "configure: warning: Don't know how enable 64-bit on architecture `arch`" 1>&2 + { echo "$as_me:$LINENO: WARNING: Don't know how enable 64-bit on architecture \`arch\`" >&5 +echo "$as_me: WARNING: Don't know how enable 64-bit on architecture \`arch\`" >&2;} do64bit_ok=no;; esac else @@ -3429,36 +7602,64 @@ echo "$ac_t""$tcl_cv_ld_elf" 1>&6 fat_32_64=yes fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' - echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3434: checking if ld accepts -single_module flag" >&5 -if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking if ld accepts -single_module flag" >&5 +echo $ECHO_N "checking if ld accepts -single_module flag... $ECHO_C" >&6 +if test "${tcl_cv_ld_single_module+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ int i; -; return 0; } -EOF -if { (eval echo configure:3449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_ld_single_module=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_ld_single_module=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_ld_single_module=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LDFLAGS=$hold_ldflags fi - -echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_ld_single_module" >&5 +echo "${ECHO_T}$tcl_cv_ld_single_module" >&6 if test $tcl_cv_ld_single_module = yes; then SHLIB_LD="${SHLIB_LD} -Wl,-single_module" fi @@ -3471,36 +7672,64 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 "`echo "${CFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int($2)}'`" -lt 4 && \ LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" - echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3476: checking if ld accepts -search_paths_first flag" >&5 -if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking if ld accepts -search_paths_first flag" >&5 +echo $ECHO_N "checking if ld accepts -search_paths_first flag... $ECHO_C" >&6 +if test "${tcl_cv_ld_search_paths_first+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ int i; -; return 0; } -EOF -if { (eval echo configure:3491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_ld_search_paths_first=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_ld_search_paths_first=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_ld_search_paths_first=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LDFLAGS=$hold_ldflags fi - -echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_ld_search_paths_first" >&5 +echo "${ECHO_T}$tcl_cv_ld_search_paths_first" >&6 if test $tcl_cv_ld_search_paths_first = yes; then LDFLAGS="$LDFLAGS -Wl,-search_paths_first" fi @@ -3509,24 +7738,24 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) - echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3514: checking whether to use CoreFoundation" >&5 + echo "$as_me:$LINENO: checking whether to use CoreFoundation" >&5 +echo $ECHO_N "checking whether to use CoreFoundation... $ECHO_C" >&6 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" tcl_corefoundation=$enableval else tcl_corefoundation=yes -fi - - echo "$ac_t""$tcl_corefoundation" 1>&6 +fi; + echo "$as_me:$LINENO: result: $tcl_corefoundation" >&5 +echo "${ECHO_T}$tcl_corefoundation" >&6 if test $tcl_corefoundation = yes; then - echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3526: checking for CoreFoundation.framework" >&5 -if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for CoreFoundation.framework" >&5 +echo $ECHO_N "checking for CoreFoundation.framework... $ECHO_C" >&6 +if test "${tcl_cv_lib_corefoundation+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + hold_libs=$LIBS; hold_cflags=$CFLAGS if test "$fat_32_64" = yes; then # On Tiger there is no 64-bit CF, so remove 64-bit archs @@ -3535,79 +7764,135 @@ else CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc64 / /g' -e 's/-arch x86_64 / /g'`" fi LIBS="$LIBS -framework CoreFoundation" - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ CFBundleRef b = CFBundleGetMainBundle(); -; return 0; } -EOF -if { (eval echo configure:3547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_lib_corefoundation=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_lib_corefoundation=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_lib_corefoundation=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$hold_libs; CFLAGS=$hold_cflags fi - -echo "$ac_t""$tcl_cv_lib_corefoundation" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_lib_corefoundation" >&5 +echo "${ECHO_T}$tcl_cv_lib_corefoundation" >&6 if test $tcl_cv_lib_corefoundation = yes; then LIBS="$LIBS -framework CoreFoundation" - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_COREFOUNDATION 1 -EOF +_ACEOF else tcl_corefoundation=no fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then - echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3572: checking for 64-bit CoreFoundation" >&5 -if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for 64-bit CoreFoundation" >&5 +echo $ECHO_N "checking for 64-bit CoreFoundation... $ECHO_C" >&6 +if test "${tcl_cv_lib_corefoundation_64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + hold_cflags=$CFLAGS CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ CFBundleRef b = CFBundleGetMainBundle(); -; return 0; } -EOF -if { (eval echo configure:3587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_lib_corefoundation_64=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_lib_corefoundation_64=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_lib_corefoundation_64=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS=$hold_cflags fi - -echo "$ac_t""$tcl_cv_lib_corefoundation_64" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_lib_corefoundation_64" >&5 +echo "${ECHO_T}$tcl_cv_lib_corefoundation_64" >&6 if test $tcl_cv_lib_corefoundation_64 = no; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_COREFOUNDATION_64 1 -EOF +_ACEOF fi fi fi - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define MAC_OSX_TCL 1 -EOF +_ACEOF ;; NEXTSTEP-*) @@ -3622,11 +7907,11 @@ EOF ;; OS/390-*) CFLAGS_OPTIMIZE="" # Optimizer is buggy - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _OE_SOCKETS 1 -EOF +_ACEOF # needed in sys/socket.h - ;; + ;; OSF1-1.0|OSF1-1.1|OSF1-1.2) # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 SHLIB_CFLAGS="" @@ -3765,13 +8050,13 @@ EOF # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _REENTRANT 1 -EOF +_ACEOF - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _POSIX_PTHREAD_SEMANTICS 1 -EOF +_ACEOF SHLIB_CFLAGS="-KPIC" @@ -3797,13 +8082,13 @@ EOF # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _REENTRANT 1 -EOF +_ACEOF - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _POSIX_PTHREAD_SEMANTICS 1 -EOF +_ACEOF SHLIB_CFLAGS="-KPIC" @@ -3814,7 +8099,8 @@ EOF if test "$arch" = "sparcv9 sparc" ; then if test "$GCC" = "yes" ; then if test "`gcc -dumpversion | awk -F. '{print $1}'`" -lt "3" ; then - echo "configure: warning: 64bit mode not supported with GCC < 3.2 on $system" 1>&2 + { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&5 +echo "$as_me: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&2;} else do64bit_ok=yes CFLAGS="$CFLAGS -m64 -mcpu=v9" @@ -3835,17 +8121,19 @@ EOF fi elif test "$arch" = "amd64 i386" ; then if test "$GCC" = "yes" ; then - echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 + { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 +echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} else do64bit_ok=yes CFLAGS="$CFLAGS -xarch=amd64" LDFLAGS="$LDFLAGS -xarch=amd64" fi else - echo "configure: warning: 64bit mode not supported for $arch" 1>&2 + { echo "$as_me:$LINENO: WARNING: 64bit mode not supported for $arch" >&5 +echo "$as_me: WARNING: 64bit mode not supported for $arch" >&2;} fi fi - + # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. @@ -3895,36 +8183,64 @@ EOF DL_LIBS="-ldl" # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. - echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3900: checking for ld accepts -Bexport flag" >&5 -if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for ld accepts -Bexport flag" >&5 +echo $ECHO_N "checking for ld accepts -Bexport flag... $ECHO_C" >&6 +if test "${tcl_cv_ld_Bexport+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ int i; -; return 0; } -EOF -if { (eval echo configure:3915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_ld_Bexport=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_ld_Bexport=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_ld_Bexport=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LDFLAGS=$hold_ldflags fi - -echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_ld_Bexport" >&5 +echo "${ECHO_T}$tcl_cv_ld_Bexport" >&6 if test $tcl_cv_ld_Bexport = yes; then LDFLAGS="$LDFLAGS -Wl,-Bexport" fi @@ -3934,7 +8250,8 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 esac if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then - echo "configure: warning: 64bit support being disabled -- don't know magic for this platform" 1>&2 + { echo "$as_me:$LINENO: WARNING: 64bit support being disabled -- don't know magic for this platform" >&5 +echo "$as_me: WARNING: 64bit support being disabled -- don't know magic for this platform" >&2;} fi # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic @@ -3942,7 +8259,7 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need # to determine which of several header files defines the a.out file # format (a.out.h, sys/exec.h, or sys/exec_aout.h). At present, we - # support only a file format that is more or less version-7-compatible. + # support only a file format that is more or less version-7-compatible. # In particular, # - a.out files must begin with `struct exec'. # - the N_TXTOFF on the `struct exec' must compute the seek address @@ -3957,17 +8274,22 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 # duplicates the v7 fields that are needed. if test "x$DL_OBJS" = "xtclLoadAout.o" ; then - echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3962: checking sys/exec.h" >&5 -if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking sys/exec.h... $ECHO_C" >&6 +if test "${tcl_cv_sysexec_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ struct exec foo; unsigned long seek; @@ -3979,39 +8301,66 @@ int main() { #endif flag = (foo.a_magic == OMAGIC); return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - -; return 0; } -EOF -if { (eval echo configure:3986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_sysexec_h=usable else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_sysexec_h=unusable + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_sysexec_h=unusable fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_sysexec_h" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_sysexec_h" >&5 +echo "${ECHO_T}$tcl_cv_sysexec_h" >&6 if test $tcl_cv_sysexec_h = usable; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_SYS_EXEC_H 1 -EOF +_ACEOF else - echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4006: checking a.out.h" >&5 -if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking a.out.h... $ECHO_C" >&6 +if test "${tcl_cv_aout_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ struct exec foo; unsigned long seek; @@ -4023,39 +8372,66 @@ int main() { #endif flag = (foo.a_magic == OMAGIC); return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - -; return 0; } -EOF -if { (eval echo configure:4030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_aout_h=usable else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_aout_h=unusable + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_aout_h=unusable fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_aout_h" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_aout_h" >&5 +echo "${ECHO_T}$tcl_cv_aout_h" >&6 if test $tcl_cv_aout_h = usable; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_A_OUT_H 1 -EOF +_ACEOF else - echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4050: checking sys/exec_aout.h" >&5 -if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking sys/exec_aout.h... $ECHO_C" >&6 +if test "${tcl_cv_sysexecaout_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ struct exec foo; unsigned long seek; @@ -4067,26 +8443,48 @@ int main() { #endif flag = (foo.a_midmag == OMAGIC); return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - -; return 0; } -EOF -if { (eval echo configure:4074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_sysexecaout_h=usable else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_sysexecaout_h=unusable + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_sysexecaout_h=unusable fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_sysexecaout_h" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_sysexecaout_h" >&5 +echo "${ECHO_T}$tcl_cv_sysexecaout_h" >&6 if test $tcl_cv_sysexecaout_h = usable; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_SYS_EXEC_AOUT_H 1 -EOF +_ACEOF else DL_OBJS="" @@ -4103,8 +8501,7 @@ if test "${enable_load+set}" = set; then tcl_ok=$enableval else tcl_ok=yes -fi - +fi; if test "$tcl_ok" = "no"; then DL_OBJS="" fi @@ -4190,88 +8587,91 @@ fi fi - - - - - - - - - - - - - - - - - - - - - - - - - - echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4227: checking for build with symbols" >&5 + + + + + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking for build with symbols" >&5 +echo $ECHO_N "checking for build with symbols... $ECHO_C" >&6 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" tcl_ok=$enableval else tcl_ok=no -fi - +fi; # FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT. if test "$tcl_ok" = "no"; then CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)' LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)' DBGX="" - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 else CFLAGS_DEFAULT='$(CFLAGS_DEBUG)' LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)' DBGX=g if test "$tcl_ok" = "yes"; then - echo "$ac_t""yes (standard debugging)" 1>&6 + echo "$as_me:$LINENO: result: yes (standard debugging)" >&5 +echo "${ECHO_T}yes (standard debugging)" >&6 fi fi - - + + if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define TCL_MEM_DEBUG 1 -EOF +_ACEOF fi if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define TCL_COMPILE_DEBUG 1 -EOF +_ACEOF - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define TCL_COMPILE_STATS 1 -EOF +_ACEOF fi if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then if test "$tcl_ok" = "all"; then - echo "$ac_t""enabled symbols mem compile debugging" 1>&6 + echo "$as_me:$LINENO: result: enabled symbols mem compile debugging" >&5 +echo "${ECHO_T}enabled symbols mem compile debugging" >&6 else - echo "$ac_t""enabled $tcl_ok debugging" 1>&6 + echo "$as_me:$LINENO: result: enabled $tcl_ok debugging" >&5 +echo "${ECHO_T}enabled $tcl_ok debugging" >&6 fi fi @@ -4283,392 +8683,744 @@ TCL_DBGX=${DBGX} #-------------------------------------------------------------------- - echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4288: checking for required early compiler flags" >&5 + echo "$as_me:$LINENO: checking for required early compiler flags" >&5 +echo $ECHO_N "checking for required early compiler flags... $ECHO_C" >&6 tcl_flags="" - - if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + if test "${tcl_cv_flag__isoc99_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ char *p = (char *)strtoll; char *q = (char *)strtoull; -; return 0; } -EOF -if { (eval echo configure:4302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_flag__isoc99_source=no else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - cat > conftest.$ac_ext <&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #define _ISOC99_SOURCE 1 #include -int main() { +int +main () +{ char *p = (char *)strtoll; char *q = (char *)strtoull; -; return 0; } -EOF -if { (eval echo configure:4318: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_flag__isoc99_source=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_flag__isoc99_source=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_flag__isoc99_source=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _ISOC99_SOURCE 1 -EOF +_ACEOF tcl_flags="$tcl_flags _ISOC99_SOURCE" fi - - if eval "test \"`echo '$''{'tcl_cv_flag__largefile64_source'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + if test "${tcl_cv_flag__largefile64_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ struct stat64 buf; int i = stat64("/", &buf); -; return 0; } -EOF -if { (eval echo configure:4352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_flag__largefile64_source=no else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - cat > conftest.$ac_ext <&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #define _LARGEFILE64_SOURCE 1 #include -int main() { +int +main () +{ struct stat64 buf; int i = stat64("/", &buf); -; return 0; } -EOF -if { (eval echo configure:4368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_flag__largefile64_source=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_flag__largefile64_source=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_flag__largefile64_source=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _LARGEFILE64_SOURCE 1 -EOF +_ACEOF tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" fi - - if eval "test \"`echo '$''{'tcl_cv_flag__largefile_source64'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + if test "${tcl_cv_flag__largefile_source64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ char *p = (char *)open64; -; return 0; } -EOF -if { (eval echo configure:4402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_flag__largefile_source64=no else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - cat > conftest.$ac_ext <&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #define _LARGEFILE_SOURCE64 1 #include -int main() { +int +main () +{ char *p = (char *)open64; -; return 0; } -EOF -if { (eval echo configure:4418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_flag__largefile_source64=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_flag__largefile_source64=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_flag__largefile_source64=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "x${tcl_cv_flag__largefile_source64}" = "xyes" ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define _LARGEFILE_SOURCE64 1 -EOF +_ACEOF tcl_flags="$tcl_flags _LARGEFILE_SOURCE64" fi if test "x${tcl_flags}" = "x" ; then - echo "$ac_t""none" 1>&6 + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 else - echo "$ac_t""${tcl_flags}" 1>&6 + echo "$as_me:$LINENO: result: ${tcl_flags}" >&5 +echo "${ECHO_T}${tcl_flags}" >&6 fi - echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4449: checking for 64-bit integer type" >&5 - if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for 64-bit integer type" >&5 +echo $ECHO_N "checking for 64-bit integer type... $ECHO_C" >&6 + if test "${tcl_cv_type_64bit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ __int64 value = (__int64) 0; -; return 0; } -EOF -if { (eval echo configure:4464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_type_64bit=__int64 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_type_64bit="long long" + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_type_64bit="long long" fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext # See if we should use long anyway Note that we substitute in the # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +switch (0) { + case 1: case (sizeof(${tcl_type_64bit})==sizeof(long)): ; } -; return 0; } -EOF -if { (eval echo configure:4487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_type_64bit=${tcl_type_64bit} else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "${tcl_cv_type_64bit}" = none ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define TCL_WIDE_INT_IS_LONG 1 -EOF +_ACEOF - echo "$ac_t""using long" 1>&6 + echo "$as_me:$LINENO: result: using long" >&5 +echo "${ECHO_T}using long" >&6 else - cat >> confdefs.h <>confdefs.h <<_ACEOF #define TCL_WIDE_INT_TYPE ${tcl_cv_type_64bit} -EOF +_ACEOF - echo "$ac_t""${tcl_cv_type_64bit}" 1>&6 + echo "$as_me:$LINENO: result: ${tcl_cv_type_64bit}" >&5 +echo "${ECHO_T}${tcl_cv_type_64bit}" >&6 # Now check for auxiliary declarations - echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4512: checking for struct dirent64" >&5 -if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for struct dirent64... $ECHO_C" >&6 +if test "${tcl_cv_struct_dirent64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -int main() { +int +main () +{ struct dirent64 p; -; return 0; } -EOF -if { (eval echo configure:4526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_struct_dirent64=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_struct_dirent64=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_struct_dirent64=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_struct_dirent64" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_struct_dirent64" >&5 +echo "${ECHO_T}$tcl_cv_struct_dirent64" >&6 if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_STRUCT_DIRENT64 1 -EOF +_ACEOF fi - echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4547: checking for struct stat64" >&5 -if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for struct stat64" >&5 +echo $ECHO_N "checking for struct stat64... $ECHO_C" >&6 +if test "${tcl_cv_struct_stat64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ struct stat64 p; -; return 0; } -EOF -if { (eval echo configure:4561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_struct_stat64=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_struct_stat64=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_struct_stat64=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_struct_stat64" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_struct_stat64" >&5 +echo "${ECHO_T}$tcl_cv_struct_stat64" >&6 if test "x${tcl_cv_struct_stat64}" = "xyes" ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_STRUCT_STAT64 1 -EOF +_ACEOF fi - for ac_func in open64 lseek64 + + +for ac_func in open64 lseek64 do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4584: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:4612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done - echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4637: checking for off64_t" >&5 - if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for off64_t" >&5 +echo $ECHO_N "checking for off64_t... $ECHO_C" >&6 + if test "${tcl_cv_type_off64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ off64_t offset; -; return 0; } -EOF -if { (eval echo configure:4651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_type_off64_t=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_type_off64_t=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_type_off64_t=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "x${tcl_cv_type_off64_t}" = "xyes" && \ test "x${ac_cv_func_lseek64}" = "xyes" && \ test "x${ac_cv_func_open64}" = "xyes" ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_TYPE_OFF64_T 1 -EOF +_ACEOF - echo "$ac_t""yes" 1>&6 + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi fi @@ -4678,63 +9430,182 @@ EOF # Tcl_UniChar strings to memcmp on big-endian systems. #-------------------------------------------------------------------- -echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4683: checking whether byte ordering is bigendian" >&5 -if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_c_bigendian=unknown -# See if sys/param.h defines the BYTE_ORDER macro. -cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -int main() { +int +main () +{ #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif -; return 0; } -EOF -if { (eval echo configure:4701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -int main() { +int +main () +{ #if BYTE_ORDER != BIG_ENDIAN not big endian #endif -; return 0; } -EOF -if { (eval echo configure:4716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_bigendian=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_c_bigendian=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_bigendian=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -if test $ac_cv_c_bigendian = unknown; then + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +# It does not; compile a test program. if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +main () +{ /* Are we little or big endian? From Harbison&Steele. */ union { @@ -4744,29 +9615,50 @@ main () { u.l = 1; exit (u.c[sizeof (long) - 1] == 1); } -EOF -if { (eval echo configure:4749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_bigendian=no else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_bigendian=yes + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) -echo "$ac_t""$ac_cv_c_bigendian" 1>&6 -if test $ac_cv_c_bigendian = yes; then - cat >> confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define WORDS_BIGENDIAN 1 -EOF - -fi +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac #-------------------------------------------------------------------- @@ -4775,61 +9667,109 @@ fi #-------------------------------------------------------------------- # Check if Posix compliant getcwd exists, if not we'll use getwd. + for ac_func in getcwd do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4782: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:4810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -cat >> confdefs.h <<\EOF +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + cat >>confdefs.h <<\_ACEOF #define USEGETWD 1 -EOF +_ACEOF fi done @@ -4837,331 +9777,2164 @@ done # Nb: if getcwd uses popen and pwd(1) (like SunOS 4) we should really # define USEGETWD even if the posix getcwd exists. Add a test ? + + + + + + + for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4844: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif -int main() { +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; +esac + +fi +done + + +echo "$as_me:$LINENO: checking for strerror" >&5 +echo $ECHO_N "checking for strerror... $ECHO_C" >&6 +if test "${ac_cv_func_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define strerror to an innocuous variant, in case declares strerror. + For example, HP-UX 11i declares gettimeofday. */ +#define strerror innocuous_strerror +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strerror (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef strerror + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined (__stub_strerror) || defined (__stub___strerror) choke me #else -$ac_func(); +char (*f) () = strerror; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:4872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" +int +main () +{ +return f != strerror; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strerror=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_strerror=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_strerror" >&5 +echo "${ECHO_T}$ac_cv_func_strerror" >&6 +if test $ac_cv_func_strerror = yes; then + : else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + cat >>confdefs.h <<\_ACEOF +#define NO_STRERROR 1 +_ACEOF + fi -rm -f conftest* + +echo "$as_me:$LINENO: checking for getwd" >&5 +echo $ECHO_N "checking for getwd... $ECHO_C" >&6 +if test "${ac_cv_func_getwd+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define getwd to an innocuous variant, in case declares getwd. + For example, HP-UX 11i declares gettimeofday. */ +#define getwd innocuous_getwd + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char getwd (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef getwd + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getwd (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_getwd) || defined (__stub___getwd) +choke me +#else +char (*f) () = getwd; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != getwd; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_getwd=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_getwd=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_getwd" >&5 +echo "${ECHO_T}$ac_cv_func_getwd" >&6 +if test $ac_cv_func_getwd = yes; then + : +else + cat >>confdefs.h <<\_ACEOF +#define NO_GETWD 1 +_ACEOF + fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&5 +echo $ECHO_N "checking for wait3... $ECHO_C" >&6 +if test "${ac_cv_func_wait3+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 -LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define wait3 to an innocuous variant, in case declares wait3. + For example, HP-UX 11i declares gettimeofday. */ +#define wait3 innocuous_wait3 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wait3 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wait3 + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wait3 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_wait3) || defined (__stub___wait3) +choke me +#else +char (*f) () = wait3; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wait3; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wait3=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wait3=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 +echo "${ECHO_T}$ac_cv_func_wait3" >&6 +if test $ac_cv_func_wait3 = yes; then + : +else + cat >>confdefs.h <<\_ACEOF +#define NO_WAIT3 1 +_ACEOF + fi -done +echo "$as_me:$LINENO: checking for uname" >&5 +echo $ECHO_N "checking for uname... $ECHO_C" >&6 +if test "${ac_cv_func_uname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define uname to an innocuous variant, in case declares uname. + For example, HP-UX 11i declares gettimeofday. */ +#define uname innocuous_uname + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char uname (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef uname + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char uname (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_uname) || defined (__stub___uname) +choke me +#else +char (*f) () = uname; +#endif +#ifdef __cplusplus +} +#endif -echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4899: checking for strerror" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +int +main () +{ +return f != uname; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_uname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_uname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_uname" >&5 +echo "${ECHO_T}$ac_cv_func_uname" >&6 +if test $ac_cv_func_uname = yes; then + : else - cat > conftest.$ac_ext <>confdefs.h <<\_ACEOF +#define NO_UNAME 1 +_ACEOF + +fi + + +if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ + test "`uname -r | awk -F. '{print $1}'`" -lt 7; then + # prior to Darwin 7, realpath is not threadsafe, so don't + # use it when threads are enabled, c.f. bug # 711232 + ac_cv_func_realpath=no +fi +echo "$as_me:$LINENO: checking for realpath" >&5 +echo $ECHO_N "checking for realpath... $ECHO_C" >&6 +if test "${ac_cv_func_realpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define realpath to an innocuous variant, in case declares realpath. + For example, HP-UX 11i declares gettimeofday. */ +#define realpath innocuous_realpath + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char strerror(); below. */ -#include + which can conflict with char realpath (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef realpath + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strerror(); + builtin and then its argument prototype would still apply. */ +char realpath (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_realpath) || defined (__stub___realpath) +choke me +#else +char (*f) () = realpath; +#endif +#ifdef __cplusplus +} +#endif -int main() { +int +main () +{ +return f != realpath; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_realpath=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_realpath=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_realpath" >&5 +echo "${ECHO_T}$ac_cv_func_realpath" >&6 +if test $ac_cv_func_realpath = yes; then + : +else + cat >>confdefs.h <<\_ACEOF +#define NO_REALPATH 1 +_ACEOF + +fi + + +#-------------------------------------------------------------------- +# Look for thread-safe variants of some library functions. +#-------------------------------------------------------------------- + +if test "${TCL_THREADS}" = 1; then + echo "$as_me:$LINENO: checking for getpwuid_r" >&5 +echo $ECHO_N "checking for getpwuid_r... $ECHO_C" >&6 +if test "${ac_cv_func_getpwuid_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define getpwuid_r to an innocuous variant, in case declares getpwuid_r. + For example, HP-UX 11i declares gettimeofday. */ +#define getpwuid_r innocuous_getpwuid_r + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char getpwuid_r (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif +#undef getpwuid_r + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpwuid_r (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_strerror) || defined (__stub___strerror) +#if defined (__stub_getpwuid_r) || defined (__stub___getpwuid_r) choke me #else -strerror(); +char (*f) () = getpwuid_r; #endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != getpwuid_r; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_getpwuid_r=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_getpwuid_r=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_getpwuid_r" >&5 +echo "${ECHO_T}$ac_cv_func_getpwuid_r" >&6 +if test $ac_cv_func_getpwuid_r = yes; then + + echo "$as_me:$LINENO: checking for getpwuid_r with 5 args" >&5 +echo $ECHO_N "checking for getpwuid_r with 5 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + uid_t uid; + struct passwd pw, *pwp; + char buf[512]; + int buflen = 512; + + (void) getpwuid_r(uid, &pw, buf, buflen, &pwp); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPWUID_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPWUID_R_5 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + echo "$as_me:$LINENO: checking for getpwuid_r with 4 args" >&5 +echo $ECHO_N "checking for getpwuid_r with 4 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + uid_t uid; + struct passwd pw; + char buf[512]; + int buflen = 512; + + (void)getpwnam_r(uid, &pw, buf, buflen); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPWUID_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPWUID_R_4 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 -; return 0; } -EOF -if { (eval echo configure:4927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_strerror=yes" else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_strerror=no" + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -if eval "test \"`echo '$ac_cv_func_'strerror`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : +fi + + + echo "$as_me:$LINENO: checking for getpwnam_r" >&5 +echo $ECHO_N "checking for getpwnam_r... $ECHO_C" >&6 +if test "${ac_cv_func_getpwnam_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_STRERROR 1 -EOF + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define getpwnam_r to an innocuous variant, in case declares getpwnam_r. + For example, HP-UX 11i declares gettimeofday. */ +#define getpwnam_r innocuous_getpwnam_r + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char getpwnam_r (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef getpwnam_r + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpwnam_r (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_getpwnam_r) || defined (__stub___getpwnam_r) +choke me +#else +char (*f) () = getpwnam_r; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != getpwnam_r; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_getpwnam_r=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_getpwnam_r=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_getpwnam_r" >&5 +echo "${ECHO_T}$ac_cv_func_getpwnam_r" >&6 +if test $ac_cv_func_getpwnam_r = yes; then + + echo "$as_me:$LINENO: checking for getpwnam_r with 5 args" >&5 +echo $ECHO_N "checking for getpwnam_r with 5 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + char *name; + struct passwd pw, *pwp; + char buf[512]; + int buflen = 512; + + (void) getpwnam_r(name, &pw, buf, buflen, &pwp); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPWNAM_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPWNAM_R_5 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + echo "$as_me:$LINENO: checking for getpwnam_r with 4 args" >&5 +echo $ECHO_N "checking for getpwnam_r with 4 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + char *name; + struct passwd pw; + char buf[512]; + int buflen = 512; + + (void)getpwnam_r(name, &pw, buf, buflen); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPWNAM_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPWNAM_R_4 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4951: checking for getwd" >&5 -if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +fi + + + echo "$as_me:$LINENO: checking for getgrgid_r" >&5 +echo $ECHO_N "checking for getgrgid_r... $ECHO_C" >&6 +if test "${ac_cv_func_getgrgid_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define getgrgid_r to an innocuous variant, in case declares getgrgid_r. + For example, HP-UX 11i declares gettimeofday. */ +#define getgrgid_r innocuous_getgrgid_r + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char getwd(); below. */ -#include + which can conflict with char getgrgid_r (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef getgrgid_r + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getwd(); + builtin and then its argument prototype would still apply. */ +char getgrgid_r (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_getgrgid_r) || defined (__stub___getgrgid_r) +choke me +#else +char (*f) () = getgrgid_r; +#endif +#ifdef __cplusplus +} +#endif -int main() { +int +main () +{ +return f != getgrgid_r; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_getgrgid_r=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_getgrgid_r=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_getgrgid_r" >&5 +echo "${ECHO_T}$ac_cv_func_getgrgid_r" >&6 +if test $ac_cv_func_getgrgid_r = yes; then + + echo "$as_me:$LINENO: checking for getgrgid_r with 5 args" >&5 +echo $ECHO_N "checking for getgrgid_r with 5 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + gid_t gid; + struct group gr, *grp; + char buf[512]; + int buflen = 512; + + (void) getgrgid_r(gid, &gr, buf, buflen, &grp); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETGRGID_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETGRGID_R_5 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + echo "$as_me:$LINENO: checking for getgrgid_r with 4 args" >&5 +echo $ECHO_N "checking for getgrgid_r with 4 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + gid_t gid; + struct group gr; + char buf[512]; + int buflen = 512; + + (void)getgrgid_r(gid, &gr, buf, buflen); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETGRGID_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETGRGID_R_4 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + + + echo "$as_me:$LINENO: checking for getgrnam_r" >&5 +echo $ECHO_N "checking for getgrnam_r... $ECHO_C" >&6 +if test "${ac_cv_func_getgrnam_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define getgrnam_r to an innocuous variant, in case declares getgrnam_r. + For example, HP-UX 11i declares gettimeofday. */ +#define getgrnam_r innocuous_getgrnam_r + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char getgrnam_r (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef getgrnam_r + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getgrnam_r (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_getwd) || defined (__stub___getwd) +#if defined (__stub_getgrnam_r) || defined (__stub___getgrnam_r) choke me #else -getwd(); +char (*f) () = getgrnam_r; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:4979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_getwd=yes" +int +main () +{ +return f != getgrnam_r; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_getgrnam_r=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_getgrnam_r=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_getgrnam_r" >&5 +echo "${ECHO_T}$ac_cv_func_getgrnam_r" >&6 +if test $ac_cv_func_getgrnam_r = yes; then + + echo "$as_me:$LINENO: checking for getgrnam_r with 5 args" >&5 +echo $ECHO_N "checking for getgrnam_r with 5 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + char *name; + struct group gr, *grp; + char buf[512]; + int buflen = 512; + + (void) getgrnam_r(name, &gr, buf, buflen, &grp); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETGRNAM_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETGRNAM_R_5 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + echo "$as_me:$LINENO: checking for getgrnam_r with 4 args" >&5 +echo $ECHO_N "checking for getgrnam_r with 4 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + char *name; + struct group gr; + char buf[512]; + int buflen = 512; + + (void)getgrnam_r(name, &gr, buf, buflen); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETGRNAM_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETGRNAM_R_4 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_getwd=no" -fi -rm -f conftest* + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -if eval "test \"`echo '$ac_cv_func_'getwd`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_GETWD 1 -EOF +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5003: checking for wait3" >&5 -if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + echo "$as_me:$LINENO: checking for gethostbyname_r" >&5 +echo $ECHO_N "checking for gethostbyname_r... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define gethostbyname_r to an innocuous variant, in case declares gethostbyname_r. + For example, HP-UX 11i declares gettimeofday. */ +#define gethostbyname_r innocuous_gethostbyname_r + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wait3(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char wait3(); + which can conflict with char gethostbyname_r (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif +#undef gethostbyname_r + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname_r (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_wait3) || defined (__stub___wait3) +#if defined (__stub_gethostbyname_r) || defined (__stub___gethostbyname_r) choke me #else -wait3(); +char (*f) () = gethostbyname_r; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:5031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_wait3=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_wait3=no" -fi -rm -f conftest* -fi +int +main () +{ +return f != gethostbyname_r; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostbyname_r=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_gethostbyname_r=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname_r" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname_r" >&6 +if test $ac_cv_func_gethostbyname_r = yes; then + + echo "$as_me:$LINENO: checking for gethostbyname_r with 6 args" >&5 +echo $ECHO_N "checking for gethostbyname_r with 6 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main () +{ -if eval "test \"`echo '$ac_cv_func_'wait3`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_WAIT3 1 -EOF + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; -fi + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop); -echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5055: checking for uname" >&5 -if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char uname(); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYNAME_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYNAME_R_6 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + echo "$as_me:$LINENO: checking for gethostbyname_r with 5 args" >&5 +echo $ECHO_N "checking for gethostbyname_r with 5 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main () +{ -int main() { + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_uname) || defined (__stub___uname) -choke me -#else -uname(); -#endif + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYNAME_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYNAME_R_5 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + echo "$as_me:$LINENO: checking for gethostbyname_r with 3 args" >&5 +echo $ECHO_N "checking for gethostbyname_r with 3 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main () +{ + + char *name; + struct hostent *he; + struct hostent_data data; + + (void) gethostbyname_r(name, he, &data); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYNAME_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYNAME_R_3 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 -; return 0; } -EOF -if { (eval echo configure:5083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_uname=yes" else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_uname=no" + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -if eval "test \"`echo '$ac_cv_func_'uname`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_UNAME 1 -EOF +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ - test "`uname -r | awk -F. '{print $1}'`" -lt 7; then - # prior to Darwin 7, realpath is not threadsafe, so don't - # use it when threads are enabled, c.f. bug # 711232 - ac_cv_func_realpath=no -fi -echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5114: checking for realpath" >&5 -if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for gethostbyaddr_r" >&5 +echo $ECHO_N "checking for gethostbyaddr_r... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyaddr_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define gethostbyaddr_r to an innocuous variant, in case declares gethostbyaddr_r. + For example, HP-UX 11i declares gettimeofday. */ +#define gethostbyaddr_r innocuous_gethostbyaddr_r + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char realpath(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char realpath(); + which can conflict with char gethostbyaddr_r (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif +#undef gethostbyaddr_r + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyaddr_r (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_realpath) || defined (__stub___realpath) +#if defined (__stub_gethostbyaddr_r) || defined (__stub___gethostbyaddr_r) choke me #else -realpath(); +char (*f) () = gethostbyaddr_r; #endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != gethostbyaddr_r; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostbyaddr_r=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_gethostbyaddr_r=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyaddr_r" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyaddr_r" >&6 +if test $ac_cv_func_gethostbyaddr_r = yes; then + + echo "$as_me:$LINENO: checking for gethostbyaddr_r with 7 args" >&5 +echo $ECHO_N "checking for gethostbyaddr_r with 7 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main () +{ + + char *addr; + int length; + int type; + struct hostent *result; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, + &h_errnop); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYADDR_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYADDR_R_7 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + echo "$as_me:$LINENO: checking for gethostbyaddr_r with 8 args" >&5 +echo $ECHO_N "checking for gethostbyaddr_r with 8 args... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main () +{ + + char *addr; + int length; + int type; + struct hostent *result, *resultp; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, + &resultp, &h_errnop); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYADDR_R 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYADDR_R_8 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 -; return 0; } -EOF -if { (eval echo configure:5142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_realpath=yes" else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_realpath=no" -fi -rm -f conftest* + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + + fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define NO_REALPATH 1 -EOF +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi +fi + #--------------------------------------------------------------------------- # Determine which interface to use to talk to the serial port. # Note that #include lines must begin in leftmost column for @@ -5169,58 +11942,171 @@ fi #--------------------------------------------------------------------------- - for ac_hdr in sys/modem.h + +for ac_header in sys/modem.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5177: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5187: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + done - echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:5214: checking termios vs. termio vs. sgtty" >&5 -if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking termios vs. termio vs. sgtty" >&5 +echo $ECHO_N "checking termios vs. termio vs. sgtty... $ECHO_C" >&6 +if test "${tcl_cv_api_serial+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -5233,26 +12119,39 @@ int main() { } return 1; } -EOF -if { (eval echo configure:5238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_api_serial=termios else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_api_serial=no fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - if test $tcl_cv_api_serial = no ; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -5264,27 +12163,40 @@ int main() { } return 1; } -EOF -if { (eval echo configure:5269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_api_serial=termio else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_api_serial=no fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi if test $tcl_cv_api_serial = no ; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -5297,27 +12209,40 @@ int main() { } return 1; } -EOF -if { (eval echo configure:5302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_api_serial=sgtty else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_api_serial=no fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi if test $tcl_cv_api_serial = no ; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -5332,27 +12257,40 @@ int main() { } return 1; } -EOF -if { (eval echo configure:5337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_api_serial=termios else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_api_serial=no fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi if test $tcl_cv_api_serial = no; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -5366,27 +12304,40 @@ int main() { } return 1; } -EOF -if { (eval echo configure:5371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_api_serial=termio else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=no + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_api_serial=no fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi if test $tcl_cv_api_serial = no; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=none else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -5401,35 +12352,45 @@ int main() { } return 1; } -EOF -if { (eval echo configure:5406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_api_serial=sgtty else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_api_serial=none + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_api_serial=none fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi fi - -echo "$ac_t""$tcl_cv_api_serial" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_api_serial" >&5 +echo "${ECHO_T}$tcl_cv_api_serial" >&6 case $tcl_cv_api_serial in - termios) cat >> confdefs.h <<\EOF + termios) cat >>confdefs.h <<\_ACEOF #define USE_TERMIOS 1 -EOF +_ACEOF ;; - termio) cat >> confdefs.h <<\EOF + termio) cat >>confdefs.h <<\_ACEOF #define USE_TERMIO 1 -EOF +_ACEOF ;; - sgtty) cat >> confdefs.h <<\EOF + sgtty) cat >>confdefs.h <<\_ACEOF #define USE_SGTTY 1 -EOF +_ACEOF ;; esac @@ -5444,71 +12405,100 @@ EOF # special flag. #-------------------------------------------------------------------- -echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:5449: checking for fd_set in sys/types" >&5 -if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for fd_set in sys/types" >&5 +echo $ECHO_N "checking for fd_set in sys/types... $ECHO_C" >&6 +if test "${tcl_cv_type_fd_set+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ fd_set readMask, writeMask; -; return 0; } -EOF -if { (eval echo configure:5462: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_type_fd_set=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_type_fd_set=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_type_fd_set=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_type_fd_set" >&5 +echo "${ECHO_T}$tcl_cv_type_fd_set" >&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then - echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:5478: checking for fd_mask in sys/select" >&5 -if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for fd_mask in sys/select... $ECHO_C" >&6 +if test "${tcl_cv_grep_fd_mask+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "fd_mask" >/dev/null 2>&1; then - rm -rf conftest* + $EGREP "fd_mask" >/dev/null 2>&1; then tcl_cv_grep_fd_mask=present else - rm -rf conftest* tcl_cv_grep_fd_mask=missing fi rm -f conftest* fi - -echo "$ac_t""$tcl_cv_grep_fd_mask" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_grep_fd_mask" >&5 +echo "${ECHO_T}$tcl_cv_grep_fd_mask" >&6 if test $tcl_cv_grep_fd_mask = present; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_SELECT_H 1 -EOF +_ACEOF tcl_ok=yes fi fi if test $tcl_ok = no; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_FD_SET 1 -EOF +_ACEOF fi @@ -5516,308 +12506,699 @@ fi # Find out all about time handling differences. #------------------------------------------------------------------------------ -echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:5521: checking whether struct tm is in sys/time.h or time.h" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +if test "${ac_cv_struct_tm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -int main() { + +int +main () +{ struct tm *tp; tp->tm_sec; -; return 0; } -EOF -if { (eval echo configure:5534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_struct_tm=time.h else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_struct_tm=sys/time.h + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_struct_tm=sys/time.h fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$ac_cv_struct_tm" 1>&6 +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$ac_cv_struct_tm" >&6 if test $ac_cv_struct_tm = sys/time.h; then - cat >> confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define TM_IN_SYS_TIME 1 -EOF +_ACEOF fi - for ac_hdr in sys/time.h + +for ac_header in sys/time.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5559: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + fi + done - echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:5596: checking whether time.h and sys/time.h may both be included" >&5 -if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #include -int main() { -struct tm *tp; -; return 0; } -EOF -if { (eval echo configure:5610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_time=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_time=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_time=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$ac_cv_header_time" 1>&6 +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 if test $ac_cv_header_time = yes; then - cat >> confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define TIME_WITH_SYS_TIME 1 -EOF +_ACEOF fi - echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:5631: checking for tm_zone in struct tm" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 +if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include <$ac_cv_struct_tm> -int main() { -struct tm tm; tm.tm_zone; -; return 0; } -EOF -if { (eval echo configure:5644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_struct_tm_zone=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_struct_tm_zone=no -fi -rm -f conftest* -fi -echo "$ac_t""$ac_cv_struct_tm_zone" 1>&6 -if test "$ac_cv_struct_tm_zone" = yes; then - cat >> confdefs.h <<\EOF + +int +main () +{ +static struct tm ac_aggr; +if (ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include <$ac_cv_struct_tm> + + +int +main () +{ +static struct tm ac_aggr; +if (sizeof ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_tm_tm_zone=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 +if test $ac_cv_member_struct_tm_tm_zone = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TM_TM_ZONE 1 +_ACEOF + + +fi + +if test "$ac_cv_member_struct_tm_tm_zone" = yes; then + +cat >>confdefs.h <<\_ACEOF #define HAVE_TM_ZONE 1 -EOF +_ACEOF else - echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:5664: checking for tzname" >&5 -if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6 +if test "${ac_cv_var_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #ifndef tzname /* For SGI. */ extern char *tzname[]; /* RS6000 and others reject char **tzname. */ #endif -int main() { + +int +main () +{ atoi(*tzname); -; return 0; } -EOF -if { (eval echo configure:5679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_var_tzname=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_var_tzname=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_var_tzname=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi - -echo "$ac_t""$ac_cv_var_tzname" 1>&6 +echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6 if test $ac_cv_var_tzname = yes; then - cat >> confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define HAVE_TZNAME 1 -EOF +_ACEOF fi fi - for ac_func in gmtime_r localtime_r + + +for ac_func in gmtime_r localtime_r do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5704: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:5732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done - echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:5758: checking tm_tzadj in struct tm" >&5 -if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking tm_tzadj in struct tm" >&5 +echo $ECHO_N "checking tm_tzadj in struct tm... $ECHO_C" >&6 +if test "${tcl_cv_member_tm_tzadj+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ struct tm tm; tm.tm_tzadj; -; return 0; } -EOF -if { (eval echo configure:5771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_member_tm_tzadj=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_member_tm_tzadj=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_member_tm_tzadj=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_member_tm_tzadj" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_member_tm_tzadj" >&5 +echo "${ECHO_T}$tcl_cv_member_tm_tzadj" >&6 if test $tcl_cv_member_tm_tzadj = yes ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_TM_TZADJ 1 -EOF +_ACEOF fi - echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:5792: checking tm_gmtoff in struct tm" >&5 -if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking tm_gmtoff in struct tm" >&5 +echo $ECHO_N "checking tm_gmtoff in struct tm... $ECHO_C" >&6 +if test "${tcl_cv_member_tm_gmtoff+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ struct tm tm; tm.tm_gmtoff; -; return 0; } -EOF -if { (eval echo configure:5805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_member_tm_gmtoff=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_member_tm_gmtoff=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_member_tm_gmtoff=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_member_tm_gmtoff" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_member_tm_gmtoff" >&5 +echo "${ECHO_T}$tcl_cv_member_tm_gmtoff" >&6 if test $tcl_cv_member_tm_gmtoff = yes ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_TM_GMTOFF 1 -EOF +_ACEOF fi @@ -5825,77 +13206,131 @@ EOF # Its important to include time.h in this check, as some systems # (like convex) have timezone functions, etc. # - echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:5830: checking long timezone variable" >&5 -if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking long timezone variable... $ECHO_C" >&6 +if test "${tcl_cv_timezone_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ extern long timezone; timezone += 1; exit (0); -; return 0; } -EOF -if { (eval echo configure:5845: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_timezone_long=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_timezone_long=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_timezone_long=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_timezone_long" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_timezone_long" >&5 +echo "${ECHO_T}$tcl_cv_timezone_long" >&6 if test $tcl_cv_timezone_long = yes ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_TIMEZONE_VAR 1 -EOF +_ACEOF else # # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # - echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:5868: checking time_t timezone variable" >&5 -if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking time_t timezone variable... $ECHO_C" >&6 +if test "${tcl_cv_timezone_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ extern time_t timezone; timezone += 1; exit (0); -; return 0; } -EOF -if { (eval echo configure:5883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_timezone_time=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_timezone_time=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_timezone_time=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_timezone_time" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_timezone_time" >&5 +echo "${ECHO_T}$tcl_cv_timezone_time" >&6 if test $tcl_cv_timezone_time = yes ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_TIMEZONE_VAR 1 -EOF +_ACEOF fi fi @@ -5905,89 +13340,218 @@ EOF # Some systems (e.g., IRIX 4.0.5) lack the st_blksize field # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- -echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:5910: checking for st_blksize in struct stat" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -int main() { -struct stat s; s.st_blksize; -; return 0; } -EOF -if { (eval echo configure:5923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_struct_st_blksize=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_struct_st_blksize=no -fi -rm -f conftest* -fi -echo "$ac_t""$ac_cv_struct_st_blksize" 1>&6 -if test $ac_cv_struct_st_blksize = yes; then - cat >> confdefs.h <<\EOF +echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 +echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6 +if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static struct stat ac_aggr; +if (ac_aggr.st_blksize) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blksize=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static struct stat ac_aggr; +if (sizeof ac_aggr.st_blksize) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blksize=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_stat_st_blksize=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6 +if test $ac_cv_member_struct_stat_st_blksize = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF #define HAVE_ST_BLKSIZE 1 -EOF +_ACEOF fi -echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:5944: checking for fstatfs" >&5 -if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + +echo "$as_me:$LINENO: checking for fstatfs" >&5 +echo $ECHO_N "checking for fstatfs... $ECHO_C" >&6 +if test "${ac_cv_func_fstatfs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define fstatfs to an innocuous variant, in case declares fstatfs. + For example, HP-UX 11i declares gettimeofday. */ +#define fstatfs innocuous_fstatfs + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char fstatfs(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char fstatfs(); + which can conflict with char fstatfs (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef fstatfs +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char fstatfs (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_fstatfs) || defined (__stub___fstatfs) choke me #else -fstatfs(); +char (*f) () = fstatfs; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:5972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_fstatfs=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_fstatfs=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'fstatfs`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != fstatfs; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_fstatfs=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_fstatfs=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_fstatfs" >&5 +echo "${ECHO_T}$ac_cv_func_fstatfs" >&6 +if test $ac_cv_func_fstatfs = yes; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_FSTATFS 1 -EOF +_ACEOF fi @@ -5996,41 +13560,86 @@ fi # Some system have no memcmp or it does not work with 8 bit # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- -echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6001: checking for 8-bit clean memcmp" >&5 -if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for working memcmp" >&5 +echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6 +if test "${ac_cv_func_memcmp_working+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then - ac_cv_func_memcmp_clean=no -else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () { - char c0 = 0x40, c1 = 0x80, c2 = 0x81; - exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1); -} -EOF -if { (eval echo configure:6019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_func_memcmp_clean=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_func_memcmp_clean=no -fi -rm -fr conftest* -fi + /* Some versions of memcmp are not 8-bit clean. */ + char c0 = 0x40, c1 = 0x80, c2 = 0x81; + if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) + exit (1); -fi + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte boundary. + William Lewis provided this test program. */ + { + char foo[21]; + char bar[21]; + int i; + for (i = 0; i < 4; i++) + { + char *a = foo + i; + char *b = bar + i; + strcpy (a, "--------01111111"); + strcpy (b, "--------10000000"); + if (memcmp (a, b, 16) >= 0) + exit (1); + } + exit (0); + } + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_memcmp_working=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_memcmp_working=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 +echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6 +test $ac_cv_func_memcmp_working = no && case $LIBOBJS in + "memcmp.$ac_objext" | \ + *" memcmp.$ac_objext" | \ + "memcmp.$ac_objext "* | \ + *" memcmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; +esac -echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 -test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" #-------------------------------------------------------------------- @@ -6038,58 +13647,105 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # have no memmove (we assume they have bcopy instead). # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- -echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6043: checking for memmove" >&5 -if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for memmove... $ECHO_C" >&6 +if test "${ac_cv_func_memmove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define memmove to an innocuous variant, in case declares memmove. + For example, HP-UX 11i declares gettimeofday. */ +#define memmove innocuous_memmove + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char memmove(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char memmove(); + which can conflict with char memmove (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif +#undef memmove + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char memmove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_memmove) || defined (__stub___memmove) choke me #else -memmove(); +char (*f) () = memmove; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:6071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_memmove=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_memmove=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != memmove; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_memmove=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_memmove=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_memmove" >&5 +echo "${ECHO_T}$ac_cv_func_memmove" >&6 +if test $ac_cv_func_memmove = yes; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_MEMMOVE 1 -EOF - cat >> confdefs.h <<\EOF +_ACEOF + cat >>confdefs.h <<\_ACEOF #define NO_STRING_H 1 -EOF +_ACEOF fi @@ -6099,40 +13755,53 @@ fi # even if the original string is empty. #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then - echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6104: checking proper strstr implementation" >&5 -if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking proper strstr implementation" >&5 +echo $ECHO_N "checking proper strstr implementation... $ECHO_C" >&6 +if test "${tcl_cv_strstr_unbroken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test "$cross_compiling" = yes; then tcl_cv_strstr_unbroken=broken else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ extern int strstr(); int main() { exit(strstr("\0test", "test") ? 1 : 0); } -EOF -if { (eval echo configure:6122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_strstr_unbroken=ok else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_strstr_unbroken=broken + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_strstr_unbroken=broken fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi - -echo "$ac_t""$tcl_cv_strstr_unbroken" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_strstr_unbroken" >&5 +echo "${ECHO_T}$tcl_cv_strstr_unbroken" >&6 if test $tcl_cv_strstr_unbroken = broken; then LIBOBJS="$LIBOBJS strstr.o" fi @@ -6144,68 +13813,118 @@ fi # pointer for the string "0". #-------------------------------------------------------------------- -echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:6149: checking for strtoul" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for strtoul... $ECHO_C" >&6 +if test "${ac_cv_func_strtoul+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define strtoul to an innocuous variant, in case declares strtoul. + For example, HP-UX 11i declares gettimeofday. */ +#define strtoul innocuous_strtoul + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char strtoul(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strtoul(); + which can conflict with char strtoul (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif +#undef strtoul + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strtoul (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strtoul) || defined (__stub___strtoul) choke me #else -strtoul(); +char (*f) () = strtoul; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:6177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_strtoul=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_strtoul=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'strtoul`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != strtoul; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strtoul=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_strtoul=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_strtoul" >&5 +echo "${ECHO_T}$ac_cv_func_strtoul" >&6 +if test $ac_cv_func_strtoul = yes; then tcl_ok=1 else - echo "$ac_t""no" 1>&6 -tcl_ok=0 + tcl_ok=0 fi if test $tcl_ok = 1; then - echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:6199: checking proper strtoul implementation" >&5 -if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking proper strtoul implementation" >&5 +echo $ECHO_N "checking proper strtoul implementation... $ECHO_C" >&6 +if test "${tcl_cv_strtoul_unbroken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test "$cross_compiling" = yes; then tcl_cv_strtoul_unbroken=broken else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ extern int strtoul(); int main() @@ -6219,22 +13938,32 @@ else } exit(0); } -EOF -if { (eval echo configure:6224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_strtoul_unbroken=ok -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_strtoul_unbroken=broken -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$tcl_cv_strtoul_unbroken" 1>&6 +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + tcl_cv_strtoul_unbroken=ok +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_strtoul_unbroken=broken +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $tcl_cv_strtoul_unbroken" >&5 +echo "${ECHO_T}$tcl_cv_strtoul_unbroken" >&6 if test $tcl_cv_strtoul_unbroken = broken; then tcl_ok=0 fi @@ -6248,68 +13977,118 @@ fi # versions of Linux strtod mis-parses strings starting with "+". #-------------------------------------------------------------------- -echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6253: checking for strtod" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for strtod... $ECHO_C" >&6 +if test "${ac_cv_func_strtod+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define strtod to an innocuous variant, in case declares strtod. + For example, HP-UX 11i declares gettimeofday. */ +#define strtod innocuous_strtod + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char strtod(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strtod(); + which can conflict with char strtod (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef strtod +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strtod (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strtod) || defined (__stub___strtod) choke me #else -strtod(); +char (*f) () = strtod; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:6281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_strtod=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_strtod=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != strtod; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strtod=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_strtod=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_strtod" >&5 +echo "${ECHO_T}$ac_cv_func_strtod" >&6 +if test $ac_cv_func_strtod = yes; then tcl_ok=1 else - echo "$ac_t""no" 1>&6 -tcl_ok=0 + tcl_ok=0 fi if test $tcl_ok = 1; then - echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:6303: checking proper strtod implementation" >&5 -if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking proper strtod implementation" >&5 +echo $ECHO_N "checking proper strtod implementation... $ECHO_C" >&6 +if test "${tcl_cv_strtod_unbroken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test "$cross_compiling" = yes; then tcl_cv_strtod_unbroken=broken else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ extern double strtod(); int main() @@ -6323,22 +14102,32 @@ else } exit(0); } -EOF -if { (eval echo configure:6328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - tcl_cv_strtod_unbroken=ok -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_strtod_unbroken=broken -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$tcl_cv_strtod_unbroken" 1>&6 +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + tcl_cv_strtod_unbroken=ok +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_strtod_unbroken=broken +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $tcl_cv_strtod_unbroken" >&5 +echo "${ECHO_T}$tcl_cv_strtod_unbroken" >&6 if test $tcl_cv_strtod_unbroken = broken; then tcl_ok=0 fi @@ -6355,68 +14144,118 @@ fi #-------------------------------------------------------------------- - echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:6360: checking for strtod" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for strtod" >&5 +echo $ECHO_N "checking for strtod... $ECHO_C" >&6 +if test "${ac_cv_func_strtod+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define strtod to an innocuous variant, in case declares strtod. + For example, HP-UX 11i declares gettimeofday. */ +#define strtod innocuous_strtod + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char strtod(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strtod(); + which can conflict with char strtod (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef strtod +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strtod (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strtod) || defined (__stub___strtod) choke me #else -strtod(); +char (*f) () = strtod; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:6388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_strtod=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_strtod=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != strtod; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strtod=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_strtod=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_strtod" >&5 +echo "${ECHO_T}$ac_cv_func_strtod" >&6 +if test $ac_cv_func_strtod = yes; then tcl_strtod=1 else - echo "$ac_t""no" 1>&6 -tcl_strtod=0 + tcl_strtod=0 fi if test "$tcl_strtod" = 1; then - echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:6410: checking for Solaris2.4/Tru64 strtod bugs" >&5 -if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo $ECHO_N "checking for Solaris2.4/Tru64 strtod bugs... $ECHO_C" >&6 +if test "${tcl_cv_strtod_buggy+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test "$cross_compiling" = yes; then tcl_cv_strtod_buggy=buggy else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ extern double strtod(); int main() { @@ -6437,27 +14276,37 @@ else } exit(0); } -EOF -if { (eval echo configure:6442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_strtod_buggy=ok else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_strtod_buggy=buggy + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_strtod_buggy=buggy fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi - -echo "$ac_t""$tcl_cv_strtod_buggy" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_strtod_buggy" >&5 +echo "${ECHO_T}$tcl_cv_strtod_buggy" >&6 if test "$tcl_cv_strtod_buggy" = buggy; then LIBOBJS="$LIBOBJS fixstrtod.o" - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define strtod fixstrtod -EOF +_ACEOF fi fi @@ -6468,253 +14317,255 @@ EOF # they don't exist. #-------------------------------------------------------------------- -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6473: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -#include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6486: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : +echo "$as_me:$LINENO: checking for mode_t" >&5 +echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 +if test "${ac_cv_type_mode_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((mode_t *) 0) + return 0; +if (sizeof (mode_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_mode_t=yes else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no +ac_cv_type_mode_t=no fi -rm -f conftest* - +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : -else - cat > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } - -EOF -if { (eval echo configure:6553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +echo "${ECHO_T}$ac_cv_type_mode_t" >&6 +if test $ac_cv_type_mode_t = yes; then : else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -fi -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF +cat >>confdefs.h <<_ACEOF +#define mode_t int +_ACEOF fi -echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6577: checking for mode_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +if test "${ac_cv_type_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_mode_t=yes + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((pid_t *) 0) + return 0; +if (sizeof (pid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_pid_t=yes else - rm -rf conftest* - ac_cv_type_mode_t=no -fi -rm -f conftest* + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 +ac_cv_type_pid_t=no fi -echo "$ac_t""$ac_cv_type_mode_t" 1>&6 -if test $ac_cv_type_mode_t = no; then - cat >> confdefs.h <<\EOF -#define mode_t int -EOF - +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6610: checking for pid_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_pid_t=yes +echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6 +if test $ac_cv_type_pid_t = yes; then + : else - rm -rf conftest* - ac_cv_type_pid_t=no -fi -rm -f conftest* -fi -echo "$ac_t""$ac_cv_type_pid_t" 1>&6 -if test $ac_cv_type_pid_t = no; then - cat >> confdefs.h <<\EOF +cat >>confdefs.h <<_ACEOF #define pid_t int -EOF +_ACEOF fi -echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6643: checking for size_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_size_t=yes else - rm -rf conftest* - ac_cv_type_size_t=no -fi -rm -f conftest* + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then - cat >> confdefs.h <<\EOF +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF #define size_t unsigned -EOF +_ACEOF fi -echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:6676: checking for uid_t in sys/types.h" >&5 -if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "uid_t" >/dev/null 2>&1; then - rm -rf conftest* + $EGREP "uid_t" >/dev/null 2>&1; then ac_cv_type_uid_t=yes else - rm -rf conftest* ac_cv_type_uid_t=no fi rm -f conftest* fi - -echo "$ac_t""$ac_cv_type_uid_t" 1>&6 +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$ac_cv_type_uid_t" >&6 if test $ac_cv_type_uid_t = no; then - cat >> confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define uid_t int -EOF +_ACEOF - cat >> confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define gid_t int -EOF +_ACEOF fi -echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:6711: checking for socklen_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 +if test "${ac_cv_type_socklen_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -6722,25 +14573,23 @@ else #include #include #endif - -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* + $EGREP "(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then ac_cv_type_socklen_t=yes else - rm -rf conftest* ac_cv_type_socklen_t=no fi rm -f conftest* fi - -echo "$ac_t""$ac_cv_type_socklen_t" 1>&6 +echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 +echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 if test $ac_cv_type_socklen_t = no; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define socklen_t unsigned -EOF +_ACEOF fi @@ -6751,55 +14600,102 @@ fi # provided. This version only works with V7-style directories. #-------------------------------------------------------------------- -echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:6756: checking for opendir" >&5 -if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for opendir... $ECHO_C" >&6 +if test "${ac_cv_func_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define opendir to an innocuous variant, in case declares opendir. + For example, HP-UX 11i declares gettimeofday. */ +#define opendir innocuous_opendir + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char opendir(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir(); + which can conflict with char opendir (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef opendir +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_opendir) || defined (__stub___opendir) choke me #else -opendir(); +char (*f) () = opendir; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:6784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_opendir=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_opendir=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'opendir`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != opendir; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_opendir=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_opendir=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_opendir" >&5 +echo "${ECHO_T}$ac_cv_func_opendir" >&6 +if test $ac_cv_func_opendir = yes; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_DIRENT2_H 1 -EOF +_ACEOF fi @@ -6812,42 +14708,70 @@ fi # the trick. #-------------------------------------------------------------------- -echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:6817: checking union wait" >&5 -if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking union wait" >&5 +echo $ECHO_N "checking union wait... $ECHO_C" >&6 +if test "${tcl_cv_union_wait+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext < + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include #include -int main() { +int +main () +{ union wait x; WIFEXITED(x); /* Generates compiler error if WIFEXITED * uses an int. */ - -; return 0; } -EOF -if { (eval echo configure:6835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_union_wait=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_union_wait=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_union_wait=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_union_wait" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_union_wait" >&5 +echo "${ECHO_T}$tcl_cv_union_wait" >&6 if test $tcl_cv_union_wait = no; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_UNION_WAIT 1 -EOF +_ACEOF fi @@ -6857,138 +14781,243 @@ fi # under Sequent Dynix it's in -linet. #-------------------------------------------------------------------- -echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:6862: checking for strncasecmp" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for strncasecmp... $ECHO_C" >&6 +if test "${ac_cv_func_strncasecmp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define strncasecmp to an innocuous variant, in case declares strncasecmp. + For example, HP-UX 11i declares gettimeofday. */ +#define strncasecmp innocuous_strncasecmp + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char strncasecmp(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strncasecmp(); + which can conflict with char strncasecmp (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef strncasecmp +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strncasecmp (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strncasecmp) || defined (__stub___strncasecmp) choke me #else -strncasecmp(); +char (*f) () = strncasecmp; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:6890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_strncasecmp=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_strncasecmp=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'strncasecmp`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != strncasecmp; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strncasecmp=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_strncasecmp=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_strncasecmp" >&5 +echo "${ECHO_T}$ac_cv_func_strncasecmp" >&6 +if test $ac_cv_func_strncasecmp = yes; then tcl_ok=1 else - echo "$ac_t""no" 1>&6 -tcl_ok=0 + tcl_ok=0 fi if test "$tcl_ok" = 0; then - echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:6912: checking for strncasecmp in -lsocket" >&5 -ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for strncasecmp in -lsocket" >&5 +echo $ECHO_N "checking for strncasecmp in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_strncasecmp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strncasecmp(); - -int main() { -strncasecmp() -; return 0; } -EOF -if { (eval echo configure:6931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char strncasecmp (); +int +main () +{ +strncasecmp (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_strncasecmp=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_strncasecmp=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_strncasecmp" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_strncasecmp" >&6 +if test $ac_cv_lib_socket_strncasecmp = yes; then tcl_ok=1 else - echo "$ac_t""no" 1>&6 -tcl_ok=0 + tcl_ok=0 fi fi if test "$tcl_ok" = 0; then - echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:6955: checking for strncasecmp in -linet" >&5 -ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for strncasecmp in -linet" >&5 +echo $ECHO_N "checking for strncasecmp in -linet... $ECHO_C" >&6 +if test "${ac_cv_lib_inet_strncasecmp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_LIBS="$LIBS" + ac_check_lib_save_LIBS=$LIBS LIBS="-linet $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strncasecmp(); - -int main() { -strncasecmp() -; return 0; } -EOF -if { (eval echo configure:6974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 + builtin and then its argument prototype would still apply. */ +char strncasecmp (); +int +main () +{ +strncasecmp (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_inet_strncasecmp=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_inet_strncasecmp=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_inet_strncasecmp" >&5 +echo "${ECHO_T}$ac_cv_lib_inet_strncasecmp" >&6 +if test $ac_cv_lib_inet_strncasecmp = yes; then tcl_ok=1 else - echo "$ac_t""no" 1>&6 -tcl_ok=0 + tcl_ok=0 fi fi @@ -7007,139 +15036,235 @@ fi # declare it. #-------------------------------------------------------------------- -echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7012: checking for BSDgettimeofday" >&5 -if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for BSDgettimeofday... $ECHO_C" >&6 +if test "${ac_cv_func_BSDgettimeofday+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define BSDgettimeofday to an innocuous variant, in case declares BSDgettimeofday. + For example, HP-UX 11i declares gettimeofday. */ +#define BSDgettimeofday innocuous_BSDgettimeofday + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char BSDgettimeofday(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char BSDgettimeofday(); + which can conflict with char BSDgettimeofday (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef BSDgettimeofday +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char BSDgettimeofday (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_BSDgettimeofday) || defined (__stub___BSDgettimeofday) choke me #else -BSDgettimeofday(); +char (*f) () = BSDgettimeofday; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:7040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_BSDgettimeofday=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_BSDgettimeofday=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'BSDgettimeofday`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF +int +main () +{ +return f != BSDgettimeofday; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_BSDgettimeofday=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_BSDgettimeofday=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_BSDgettimeofday" >&5 +echo "${ECHO_T}$ac_cv_func_BSDgettimeofday" >&6 +if test $ac_cv_func_BSDgettimeofday = yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_BSDGETTIMEOFDAY 1 -EOF +_ACEOF else - echo "$ac_t""no" 1>&6 - echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7062: checking for gettimeofday" >&5 -if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking for gettimeofday" >&5 +echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6 +if test "${ac_cv_func_gettimeofday+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define gettimeofday to an innocuous variant, in case declares gettimeofday. + For example, HP-UX 11i declares gettimeofday. */ +#define gettimeofday innocuous_gettimeofday + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char gettimeofday(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gettimeofday(); + which can conflict with char gettimeofday (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef gettimeofday +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gettimeofday (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gettimeofday) || defined (__stub___gettimeofday) choke me #else -gettimeofday(); +char (*f) () = gettimeofday; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:7090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_gettimeofday=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_gettimeofday=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then - echo "$ac_t""yes" 1>&6 +int +main () +{ +return f != gettimeofday; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gettimeofday=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_gettimeofday=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_gettimeofday" >&5 +echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6 +if test $ac_cv_func_gettimeofday = yes; then : else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define NO_GETTOD 1 -EOF +_ACEOF fi fi -echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7117: checking for gettimeofday declaration" >&5 -if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for gettimeofday declaration" >&5 +echo $ECHO_N "checking for gettimeofday declaration... $ECHO_C" >&6 +if test "${tcl_cv_grep_gettimeofday+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "gettimeofday" >/dev/null 2>&1; then - rm -rf conftest* + $EGREP "gettimeofday" >/dev/null 2>&1; then tcl_cv_grep_gettimeofday=present else - rm -rf conftest* tcl_cv_grep_gettimeofday=missing fi rm -f conftest* fi - -echo "$ac_t""$tcl_cv_grep_gettimeofday" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_grep_gettimeofday" >&5 +echo "${ECHO_T}$tcl_cv_grep_gettimeofday" >&6 if test $tcl_cv_grep_gettimeofday = missing ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define GETTOD_NOT_DECLARED 1 -EOF +_ACEOF fi @@ -7149,103 +15274,130 @@ fi # properly generate sign-extended ints from character values. #-------------------------------------------------------------------- -echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:7154: checking whether char is unsigned" >&5 -if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$GCC" = yes; then - # GCC predefines this symbol on systems where it applies. -cat > conftest.$ac_ext <&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_c_char_unsigned=yes -else - rm -rf conftest* - ac_cv_c_char_unsigned=no -fi -rm -f conftest* +echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 +if test "${ac_cv_c_char_unsigned+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0 -else -if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_c_char_unsigned=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_char_unsigned=no -fi -rm -fr conftest* -fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 +ac_cv_c_char_unsigned=yes fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6 +echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6 if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define __CHAR_UNSIGNED__ 1 -EOF +_ACEOF fi -echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:7217: checking signed char declarations" >&5 -if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking signed char declarations" >&5 +echo $ECHO_N "checking signed char declarations... $ECHO_C" >&6 +if test "${tcl_cv_char_signed+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ signed char *p; p = 0; - -; return 0; } -EOF -if { (eval echo configure:7233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_char_signed=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_char_signed=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_char_signed=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_char_signed" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_char_signed" >&5 +echo "${ECHO_T}$tcl_cv_char_signed" >&6 if test $tcl_cv_char_signed = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_SIGNED_CHAR 1 -EOF +_ACEOF fi @@ -7253,18 +15405,21 @@ fi # Does putenv() copy or not? We need to know to avoid memory leaks. #-------------------------------------------------------------------- -echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:7258: checking for a putenv() that copies the buffer" >&5 -if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for a putenv() that copies the buffer" >&5 +echo $ECHO_N "checking for a putenv() that copies the buffer... $ECHO_C" >&6 +if test "${tcl_cv_putenv_copy+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test "$cross_compiling" = yes; then tcl_cv_putenv_copy=no else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #define OURVAR "havecopy=yes" @@ -7283,27 +15438,37 @@ else return 1; } } - -EOF -if { (eval echo configure:7289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_putenv_copy=no else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - tcl_cv_putenv_copy=yes + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +tcl_cv_putenv_copy=yes fi -rm -fr conftest* +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi - -echo "$ac_t""$tcl_cv_putenv_copy" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_putenv_copy" >&5 +echo "${ECHO_T}$tcl_cv_putenv_copy" >&6 if test $tcl_cv_putenv_copy = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_PUTENV_THAT_COPIES 1 -EOF +_ACEOF fi @@ -7318,82 +15483,220 @@ if test "${enable_langinfo+set}" = set; then langinfo_ok=$enableval else langinfo_ok=yes -fi - +fi; HAVE_LANGINFO=0 if test "$langinfo_ok" = "yes"; then - ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:7329: checking for langinfo.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6 +if test "${ac_cv_header_langinfo_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5 +echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking langinfo.h usability" >&5 +echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking langinfo.h presence" >&5 +echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: langinfo.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: langinfo.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: langinfo.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: langinfo.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for langinfo.h" >&5 +echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6 +if test "${ac_cv_header_langinfo_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_langinfo_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5 +echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6 + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 +if test $ac_cv_header_langinfo_h = yes; then langinfo_ok=yes else - echo "$ac_t""no" 1>&6 -langinfo_ok=no + langinfo_ok=no fi + fi - echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:7363: checking whether to use nl_langinfo" >&5 + echo "$as_me:$LINENO: checking whether to use nl_langinfo" >&5 +echo $ECHO_N "checking whether to use nl_langinfo... $ECHO_C" >&6 if test "$langinfo_ok" = "yes"; then - if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + if test "${tcl_cv_langinfo_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -int main() { +int +main () +{ nl_langinfo(CODESET); -; return 0; } -EOF -if { (eval echo configure:7377: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_langinfo_h=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_langinfo_h=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_langinfo_h=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - echo "$ac_t""$tcl_cv_langinfo_h" 1>&6 + echo "$as_me:$LINENO: result: $tcl_cv_langinfo_h" >&5 +echo "${ECHO_T}$tcl_cv_langinfo_h" >&6 if test $tcl_cv_langinfo_h = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_LANGINFO 1 -EOF +_ACEOF fi - else - echo "$ac_t""$langinfo_ok" 1>&6 + else + echo "$as_me:$LINENO: result: $langinfo_ok" >&5 +echo "${ECHO_T}$langinfo_ok" >&6 fi @@ -7402,316 +15705,790 @@ EOF #-------------------------------------------------------------------- if test "`uname -s`" = "Darwin" ; then - for ac_hdr in copyfile.h + +for ac_header in copyfile.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7410: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7420: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + fi + done - for ac_func in copyfile + +for ac_func in copyfile do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7449: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:7477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done if test $tcl_corefoundation = yes; then - for ac_hdr in libkern/OSAtomic.h + +for ac_header in libkern/OSAtomic.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7506: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7516: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + fi + done - for ac_func in OSSpinLockLock + +for ac_func in OSSpinLockLock do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7545: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:7573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done - for ac_func in pthread_atfork + +for ac_func in pthread_atfork do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7600: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -int main() { +#ifdef __STDC__ +# include +#else +# include +#endif +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif -; return 0; } -EOF -if { (eval echo configure:7628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done fi - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_VFORK 1 -EOF +_ACEOF - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define TCL_DEFAULT_ENCODING "utf-8" -EOF +_ACEOF - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define TCL_LOAD_FROM_MEMORY 1 -EOF +_ACEOF - for ac_hdr in AvailabilityMacros.h + +for ac_header in AvailabilityMacros.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7669: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then - echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:7707: checking if weak import is available" >&5 -if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:$LINENO: checking if weak import is available" >&5 +echo $ECHO_N "checking if weak import is available... $ECHO_C" >&6 +if test "${tcl_cv_cc_weak_import+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1020 @@ -7721,29 +16498,54 @@ else #error MAC_OS_X_VERSION_MIN_REQUIRED < 1020 #endif int rand(void) __attribute__((weak_import)); - -int main() { + +int +main () +{ rand(); -; return 0; } -EOF -if { (eval echo configure:7730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_cc_weak_import=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_cc_weak_import=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_cc_weak_import=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS=$hold_cflags fi - -echo "$ac_t""$tcl_cv_cc_weak_import" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_cc_weak_import" >&5 +echo "${ECHO_T}$tcl_cv_cc_weak_import" >&6 if test $tcl_cv_cc_weak_import = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_WEAK_IMPORT 1 -EOF +_ACEOF fi fi @@ -7753,149 +16555,398 @@ fi # Check for support of fts functions (readdir replacement) #-------------------------------------------------------------------- -echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:7758: checking for fts" >&5 -if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for fts" >&5 +echo $ECHO_N "checking for fts... $ECHO_C" >&6 +if test "${tcl_cv_api_fts+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #include - -int main() { + +int +main () +{ char*const p[2] = {"/", NULL}; FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); FTSENT *e = fts_read(f); fts_close(f); - -; return 0; } -EOF -if { (eval echo configure:7779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then tcl_cv_api_fts=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - tcl_cv_api_fts=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_api_fts=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi - -echo "$ac_t""$tcl_cv_api_fts" 1>&6 +echo "$as_me:$LINENO: result: $tcl_cv_api_fts" >&5 +echo "${ECHO_T}$tcl_cv_api_fts" >&6 if test $tcl_cv_api_fts = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_FTS 1 -EOF +_ACEOF fi #-------------------------------------------------------------------- # The statements below check for systems where POSIX-style -# non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. +# non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. # On these systems (mostly older ones), use the old BSD-style # FIONBIO approach instead. #-------------------------------------------------------------------- - for ac_hdr in sys/ioctl.h + +for ac_header in sys/ioctl.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7811: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + done - for ac_hdr in sys/filio.h + +for ac_header in sys/filio.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7851: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7861: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$ac_t""no" 1>&6 + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + fi + done - - echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:7889: checking system version" >&5 -if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + echo "$as_me:$LINENO: checking system version" >&5 +echo $ECHO_N "checking system version... $ECHO_C" >&6 +if test "${tcl_cv_sys_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test -f /usr/lib/NextStep/software_version; then tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then - echo "configure: warning: can't find uname command" 1>&2 + { echo "$as_me:$LINENO: WARNING: can't find uname command" >&5 +echo "$as_me: WARNING: can't find uname command" >&2;} tcl_cv_sys_version=unknown else # Special check for weird MP-RAS system (uname returns weird @@ -7909,14 +16960,14 @@ else fi fi fi - -fi -echo "$ac_t""$tcl_cv_sys_version" 1>&6 +fi +echo "$as_me:$LINENO: result: $tcl_cv_sys_version" >&5 +echo "${ECHO_T}$tcl_cv_sys_version" >&6 system=$tcl_cv_sys_version - echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:7920: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 + echo "$as_me:$LINENO: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo $ECHO_N "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O... $ECHO_C" >&6 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -7924,28 +16975,32 @@ echo "configure:7920: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 # code (JO, 5/31/97). OSF*) - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_FIONBIO 1 -EOF +_ACEOF - echo "$ac_t""FIONBIO" 1>&6 + echo "$as_me:$LINENO: result: FIONBIO" >&5 +echo "${ECHO_T}FIONBIO" >&6 ;; SunOS-4*) - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_FIONBIO 1 -EOF +_ACEOF - echo "$ac_t""FIONBIO" 1>&6 + echo "$as_me:$LINENO: result: FIONBIO" >&5 +echo "${ECHO_T}FIONBIO" >&6 ;; ULTRIX-4.*) - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USE_FIONBIO 1 -EOF +_ACEOF - echo "$ac_t""FIONBIO" 1>&6 + echo "$as_me:$LINENO: result: FIONBIO" >&5 +echo "${ECHO_T}FIONBIO" >&6 ;; *) - echo "$ac_t""O_NONBLOCK" 1>&6 + echo "$as_me:$LINENO: result: O_NONBLOCK" >&5 +echo "${ECHO_T}O_NONBLOCK" >&6 ;; esac @@ -7976,36 +17031,40 @@ HTML_DIR='$(DISTDIR)/html' # up the Tcl library. if test "`uname -s`" = "Darwin" ; then - + if test "`uname -s`" = "Darwin" ; then - echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:7983: checking how to package libraries" >&5 + echo "$as_me:$LINENO: checking how to package libraries" >&5 +echo $ECHO_N "checking how to package libraries... $ECHO_C" >&6 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" enable_framework=$enableval else enable_framework=no -fi - +fi; if test $enable_framework = yes; then if test $SHARED_BUILD = 0; then - echo "configure: warning: Frameworks can only be built if --enable-shared is yes" 1>&2 + { echo "$as_me:$LINENO: WARNING: Frameworks can only be built if --enable-shared is yes" >&5 +echo "$as_me: WARNING: Frameworks can only be built if --enable-shared is yes" >&2;} enable_framework=no fi if test $tcl_corefoundation = no; then - echo "configure: warning: Frameworks can only be used when CoreFoundation is available" 1>&2 + { echo "$as_me:$LINENO: WARNING: Frameworks can only be used when CoreFoundation is available" >&5 +echo "$as_me: WARNING: Frameworks can only be used when CoreFoundation is available" >&2;} enable_framework=no fi fi if test $enable_framework = yes; then - echo "$ac_t""framework" 1>&6 + echo "$as_me:$LINENO: result: framework" >&5 +echo "${ECHO_T}framework" >&6 FRAMEWORK_BUILD=1 else if test $SHARED_BUILD = 1; then - echo "$ac_t""shared library" 1>&6 + echo "$as_me:$LINENO: result: shared library" >&5 +echo "${ECHO_T}shared library" >&6 else - echo "$ac_t""static library" 1>&6 + echo "$as_me:$LINENO: result: static library" >&5 +echo "${ECHO_T}static library" >&6 fi FRAMEWORK_BUILD=0 fi @@ -8016,14 +17075,15 @@ fi fi if test "$FRAMEWORK_BUILD" = "1" ; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define TCL_FRAMEWORK 1 -EOF +_ACEOF tcl_config_files="${tcl_config_files} Tcl-Info.plist:../macosx/Tcl-Info.plist.in" # Construct a fake local framework structure to make linking with # '-framework Tcl' and running of tcltest work - + ac_config_commands="$ac_config_commands default-1" + LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH" if test "${libdir}" = '${exec_prefix}/lib'; then # override libdir default @@ -8039,12 +17099,12 @@ EOF PRIVATE_INCLUDE_DIR="${libdir}/PrivateHeaders" HTML_DIR="${libdir}/Resources/Documentation/Reference/Tcl" EXTRA_INSTALL="install-private-headers html-tcl" - EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' + EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."' TCL_YEAR="`date +%Y`" - # Don't use AC_DEFINE for the following as the framework version define - # needs to go into the Makefile even when using autoheader, so that we + # Don't use AC_DEFINE for the following as the framework version define + # needs to go into the Makefile even when using autoheader, so that we # can pick up a potential make override of VERSION. Also, don't put this # into CFLAGS as it should not go into tclConfig.sh EXTRA_CC_SWITCHES='-DTCL_FRAMEWORK_VERSION=\"$(VERSION)\"' @@ -8062,10 +17122,10 @@ else else TCL_BUILD_EXP_FILE="lib.exp" eval "TCL_EXP_FILE=libtcl${TCL_EXPORT_FILE_SUFFIX}" - + # Replace DBGX with TCL_DBGX eval "TCL_EXP_FILE=\"${TCL_EXP_FILE}\"" - + if test "$GCC" = "yes" ; then TCL_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TCL_BUILD_EXP_FILE} -L`pwd`" TCL_LIB_SPEC="-Wl,-bI:${libdir}/${TCL_EXP_FILE} -L`pwd`" @@ -8177,334 +17237,1118 @@ TCL_SHARED_BUILD=${SHARED_BUILD} tcl_config_files="${tcl_config_files} Makefile dltest/Makefile tclConfig.sh" -trap '' 1 2 15 -cat > confcache <<\EOF + ac_config_files="$ac_config_files ${tcl_config_files}" +cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. # -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. # -EOF +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' fi -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS <&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. # Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# $0 $ac_configure_args -# # Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. +# configure, is in config.log if it exists. -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF -ac_given_srcdir=$srcdir +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## -trap 'rm -fr `echo "${tcl_config_files}" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS </dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@MAN_FLAGS@%$MAN_FLAGS%g -s%@CC@%$CC%g -s%@CPP@%$CPP%g -s%@TCL_THREADS@%$TCL_THREADS%g -s%@TCL_LIBS@%$TCL_LIBS%g -s%@MATH_LIBS@%$MATH_LIBS%g -s%@RANLIB@%$RANLIB%g -s%@AR@%$AR%g -s%@DL_LIBS@%$DL_LIBS%g -s%@DL_OBJS@%$DL_OBJS%g -s%@PLAT_OBJS@%$PLAT_OBJS%g -s%@PLAT_SRCS@%$PLAT_SRCS%g -s%@CFLAGS_DEBUG@%$CFLAGS_DEBUG%g -s%@CFLAGS_OPTIMIZE@%$CFLAGS_OPTIMIZE%g -s%@CFLAGS_WARNING@%$CFLAGS_WARNING%g -s%@LDFLAGS_DEBUG@%$LDFLAGS_DEBUG%g -s%@LDFLAGS_OPTIMIZE@%$LDFLAGS_OPTIMIZE%g -s%@CC_SEARCH_FLAGS@%$CC_SEARCH_FLAGS%g -s%@LD_SEARCH_FLAGS@%$LD_SEARCH_FLAGS%g -s%@STLIB_LD@%$STLIB_LD%g -s%@SHLIB_LD@%$SHLIB_LD%g -s%@TCL_SHLIB_LD_EXTRAS@%$TCL_SHLIB_LD_EXTRAS%g -s%@TK_SHLIB_LD_EXTRAS@%$TK_SHLIB_LD_EXTRAS%g -s%@SHLIB_LD_LIBS@%$SHLIB_LD_LIBS%g -s%@SHLIB_CFLAGS@%$SHLIB_CFLAGS%g -s%@SHLIB_SUFFIX@%$SHLIB_SUFFIX%g -s%@MAKE_LIB@%$MAKE_LIB%g -s%@MAKE_STUB_LIB@%$MAKE_STUB_LIB%g -s%@INSTALL_LIB@%$INSTALL_LIB%g -s%@INSTALL_STUB_LIB@%$INSTALL_STUB_LIB%g -s%@CFLAGS_DEFAULT@%$CFLAGS_DEFAULT%g -s%@LDFLAGS_DEFAULT@%$LDFLAGS_DEFAULT%g -s%@LIBOBJS@%$LIBOBJS%g -s%@TCL_VERSION@%$TCL_VERSION%g -s%@TCL_MAJOR_VERSION@%$TCL_MAJOR_VERSION%g -s%@TCL_MINOR_VERSION@%$TCL_MINOR_VERSION%g -s%@TCL_PATCH_LEVEL@%$TCL_PATCH_LEVEL%g -s%@TCL_YEAR@%$TCL_YEAR%g -s%@TCL_LIB_FILE@%$TCL_LIB_FILE%g -s%@TCL_LIB_FLAG@%$TCL_LIB_FLAG%g -s%@TCL_LIB_SPEC@%$TCL_LIB_SPEC%g -s%@TCL_STUB_LIB_FILE@%$TCL_STUB_LIB_FILE%g -s%@TCL_STUB_LIB_FLAG@%$TCL_STUB_LIB_FLAG%g -s%@TCL_STUB_LIB_SPEC@%$TCL_STUB_LIB_SPEC%g -s%@TCL_STUB_LIB_PATH@%$TCL_STUB_LIB_PATH%g -s%@TCL_INCLUDE_SPEC@%$TCL_INCLUDE_SPEC%g -s%@TCL_BUILD_STUB_LIB_SPEC@%$TCL_BUILD_STUB_LIB_SPEC%g -s%@TCL_BUILD_STUB_LIB_PATH@%$TCL_BUILD_STUB_LIB_PATH%g -s%@TCL_SRC_DIR@%$TCL_SRC_DIR%g -s%@TCL_DBGX@%$TCL_DBGX%g -s%@CFG_TCL_SHARED_LIB_SUFFIX@%$CFG_TCL_SHARED_LIB_SUFFIX%g -s%@CFG_TCL_UNSHARED_LIB_SUFFIX@%$CFG_TCL_UNSHARED_LIB_SUFFIX%g -s%@CFG_TCL_EXPORT_FILE_SUFFIX@%$CFG_TCL_EXPORT_FILE_SUFFIX%g -s%@TCL_SHARED_BUILD@%$TCL_SHARED_BUILD%g -s%@LD_LIBRARY_PATH_VAR@%$LD_LIBRARY_PATH_VAR%g -s%@TCL_BUILD_LIB_SPEC@%$TCL_BUILD_LIB_SPEC%g -s%@TCL_NEEDS_EXP_FILE@%$TCL_NEEDS_EXP_FILE%g -s%@TCL_BUILD_EXP_FILE@%$TCL_BUILD_EXP_FILE%g -s%@TCL_EXP_FILE@%$TCL_EXP_FILE%g -s%@TCL_LIB_VERSIONS_OK@%$TCL_LIB_VERSIONS_OK%g -s%@TCL_SHARED_LIB_SUFFIX@%$TCL_SHARED_LIB_SUFFIX%g -s%@TCL_UNSHARED_LIB_SUFFIX@%$TCL_UNSHARED_LIB_SUFFIX%g -s%@TCL_HAS_LONGLONG@%$TCL_HAS_LONGLONG%g -s%@BUILD_DLTEST@%$BUILD_DLTEST%g -s%@TCL_PACKAGE_PATH@%$TCL_PACKAGE_PATH%g -s%@TCL_LIBRARY@%$TCL_LIBRARY%g -s%@PRIVATE_INCLUDE_DIR@%$PRIVATE_INCLUDE_DIR%g -s%@HTML_DIR@%$HTML_DIR%g -s%@EXTRA_CC_SWITCHES@%$EXTRA_CC_SWITCHES%g -s%@EXTRA_INSTALL@%$EXTRA_INSTALL%g -s%@EXTRA_INSTALL_BINARIES@%$EXTRA_INSTALL_BINARIES%g -s%@EXTRA_BUILD_HTML@%$EXTRA_BUILD_HTML%g +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file + $as_unset $as_var fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` + PATH_SEPARATOR=: fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat + rm -f conf$$.sh fi -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; esac - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' else - ac_dir_suffix= ac_dots= + as_ln_s='ln -s' fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; esac + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -test "$FRAMEWORK_BUILD" = "1" && n=Tcl && +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "${tcl_config_files}" ) CONFIG_FILES="$CONFIG_FILES ${tcl_config_files}" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@MAN_FLAGS@,$MAN_FLAGS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@TCL_THREADS@,$TCL_THREADS,;t t +s,@TCL_LIBS@,$TCL_LIBS,;t t +s,@MATH_LIBS@,$MATH_LIBS,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@AR@,$AR,;t t +s,@DL_LIBS@,$DL_LIBS,;t t +s,@DL_OBJS@,$DL_OBJS,;t t +s,@PLAT_OBJS@,$PLAT_OBJS,;t t +s,@PLAT_SRCS@,$PLAT_SRCS,;t t +s,@CFLAGS_DEBUG@,$CFLAGS_DEBUG,;t t +s,@CFLAGS_OPTIMIZE@,$CFLAGS_OPTIMIZE,;t t +s,@CFLAGS_WARNING@,$CFLAGS_WARNING,;t t +s,@LDFLAGS_DEBUG@,$LDFLAGS_DEBUG,;t t +s,@LDFLAGS_OPTIMIZE@,$LDFLAGS_OPTIMIZE,;t t +s,@CC_SEARCH_FLAGS@,$CC_SEARCH_FLAGS,;t t +s,@LD_SEARCH_FLAGS@,$LD_SEARCH_FLAGS,;t t +s,@STLIB_LD@,$STLIB_LD,;t t +s,@SHLIB_LD@,$SHLIB_LD,;t t +s,@TCL_SHLIB_LD_EXTRAS@,$TCL_SHLIB_LD_EXTRAS,;t t +s,@TK_SHLIB_LD_EXTRAS@,$TK_SHLIB_LD_EXTRAS,;t t +s,@SHLIB_LD_LIBS@,$SHLIB_LD_LIBS,;t t +s,@SHLIB_CFLAGS@,$SHLIB_CFLAGS,;t t +s,@SHLIB_SUFFIX@,$SHLIB_SUFFIX,;t t +s,@MAKE_LIB@,$MAKE_LIB,;t t +s,@MAKE_STUB_LIB@,$MAKE_STUB_LIB,;t t +s,@INSTALL_LIB@,$INSTALL_LIB,;t t +s,@INSTALL_STUB_LIB@,$INSTALL_STUB_LIB,;t t +s,@CFLAGS_DEFAULT@,$CFLAGS_DEFAULT,;t t +s,@LDFLAGS_DEFAULT@,$LDFLAGS_DEFAULT,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@TCL_VERSION@,$TCL_VERSION,;t t +s,@TCL_MAJOR_VERSION@,$TCL_MAJOR_VERSION,;t t +s,@TCL_MINOR_VERSION@,$TCL_MINOR_VERSION,;t t +s,@TCL_PATCH_LEVEL@,$TCL_PATCH_LEVEL,;t t +s,@TCL_YEAR@,$TCL_YEAR,;t t +s,@TCL_LIB_FILE@,$TCL_LIB_FILE,;t t +s,@TCL_LIB_FLAG@,$TCL_LIB_FLAG,;t t +s,@TCL_LIB_SPEC@,$TCL_LIB_SPEC,;t t +s,@TCL_STUB_LIB_FILE@,$TCL_STUB_LIB_FILE,;t t +s,@TCL_STUB_LIB_FLAG@,$TCL_STUB_LIB_FLAG,;t t +s,@TCL_STUB_LIB_SPEC@,$TCL_STUB_LIB_SPEC,;t t +s,@TCL_STUB_LIB_PATH@,$TCL_STUB_LIB_PATH,;t t +s,@TCL_INCLUDE_SPEC@,$TCL_INCLUDE_SPEC,;t t +s,@TCL_BUILD_STUB_LIB_SPEC@,$TCL_BUILD_STUB_LIB_SPEC,;t t +s,@TCL_BUILD_STUB_LIB_PATH@,$TCL_BUILD_STUB_LIB_PATH,;t t +s,@TCL_SRC_DIR@,$TCL_SRC_DIR,;t t +s,@TCL_DBGX@,$TCL_DBGX,;t t +s,@CFG_TCL_SHARED_LIB_SUFFIX@,$CFG_TCL_SHARED_LIB_SUFFIX,;t t +s,@CFG_TCL_UNSHARED_LIB_SUFFIX@,$CFG_TCL_UNSHARED_LIB_SUFFIX,;t t +s,@CFG_TCL_EXPORT_FILE_SUFFIX@,$CFG_TCL_EXPORT_FILE_SUFFIX,;t t +s,@TCL_SHARED_BUILD@,$TCL_SHARED_BUILD,;t t +s,@LD_LIBRARY_PATH_VAR@,$LD_LIBRARY_PATH_VAR,;t t +s,@TCL_BUILD_LIB_SPEC@,$TCL_BUILD_LIB_SPEC,;t t +s,@TCL_NEEDS_EXP_FILE@,$TCL_NEEDS_EXP_FILE,;t t +s,@TCL_BUILD_EXP_FILE@,$TCL_BUILD_EXP_FILE,;t t +s,@TCL_EXP_FILE@,$TCL_EXP_FILE,;t t +s,@TCL_LIB_VERSIONS_OK@,$TCL_LIB_VERSIONS_OK,;t t +s,@TCL_SHARED_LIB_SUFFIX@,$TCL_SHARED_LIB_SUFFIX,;t t +s,@TCL_UNSHARED_LIB_SUFFIX@,$TCL_UNSHARED_LIB_SUFFIX,;t t +s,@TCL_HAS_LONGLONG@,$TCL_HAS_LONGLONG,;t t +s,@BUILD_DLTEST@,$BUILD_DLTEST,;t t +s,@TCL_PACKAGE_PATH@,$TCL_PACKAGE_PATH,;t t +s,@TCL_LIBRARY@,$TCL_LIBRARY,;t t +s,@PRIVATE_INCLUDE_DIR@,$PRIVATE_INCLUDE_DIR,;t t +s,@HTML_DIR@,$HTML_DIR,;t t +s,@EXTRA_CC_SWITCHES@,$EXTRA_CC_SWITCHES,;t t +s,@EXTRA_INSTALL@,$EXTRA_INSTALL,;t t +s,@EXTRA_INSTALL_BINARIES@,$EXTRA_INSTALL_BINARIES,;t t +s,@EXTRA_BUILD_HTML@,$EXTRA_BUILD_HTML,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default-1 ) test "$FRAMEWORK_BUILD" = "1" && n=Tcl && f=$n.framework && v=Versions/$VERSION && echo "creating $f" && rm -rf $f && mkdir -p $f/$v/Resources && ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && unset n f v - + ;; + esac +done +_ACEOF -exit 0 -EOF +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi diff --git a/unix/configure.in b/unix/configure.in index c4dc1b3..1ea92b2 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.28 2006/07/20 06:21:45 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.29 2006/09/06 13:08:29 vasiljevic Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -142,6 +142,19 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ fi AC_CHECK_FUNC(realpath, , [AC_DEFINE(NO_REALPATH)]) +#-------------------------------------------------------------------- +# Look for thread-safe variants of some library functions. +#-------------------------------------------------------------------- + +if test "${TCL_THREADS}" = 1; then + SC_TCL_GETPWUID_R + SC_TCL_GETPWNAM_R + SC_TCL_GETGRGID_R + SC_TCL_GETGRNAM_R + SC_TCL_GETHOSTBYNAME_R + SC_TCL_GETHOSTBYADDR_R +fi + #--------------------------------------------------------------------------- # Determine which interface to use to talk to the serial port. # Note that #include lines must begin in leftmost column for diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 0dccb7c..97354b0 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -2797,3 +2797,401 @@ AC_DEFUN([SC_TCL_64BIT_FLAGS], [ fi fi ]) + +#-------------------------------------------------------------------- +# SC_TCL_GETHOSTBYADDR_R +# +# Check if we have MT-safe variant of gethostbyaddr(). +# +# Arguments: +# None +# +# Results: +# +# Might define the following vars: +# HAVE_GETHOSTBYADDR_R +# HAVE_GETHOSTBYADDR_R_7 +# HAVE_GETHOSTBYADDR_R_8 +# +#-------------------------------------------------------------------- + +AC_DEFUN([SC_TCL_GETHOSTBYADDR_R], [AC_CHECK_FUNC(gethostbyaddr_r, [ + AC_MSG_CHECKING([for gethostbyaddr_r with 7 args]) + AC_TRY_COMPILE([ + #include + ], [ + char *addr; + int length; + int type; + struct hostent *result; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, + &h_errnop); + ], [ + AC_DEFINE(HAVE_GETHOSTBYADDR_R, 1, + [Define to 1 if gethostbyaddr_r is available.]) + AC_DEFINE(HAVE_GETHOSTBYADDR_R_7, 1, + [Define to 1 if gethostbyaddr_r takes 7 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([for gethostbyaddr_r with 8 args]) + AC_TRY_COMPILE([ + #include + ], [ + char *addr; + int length; + int type; + struct hostent *result, *resultp; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, + &resultp, &h_errnop); + ], [ + AC_DEFINE(HAVE_GETHOSTBYADDR_R, 1, + [Define to 1 if gethostbyaddr_r is available.]) + AC_DEFINE(HAVE_GETHOSTBYADDR_R_8, 1, + [Define to 1 if gethostbyaddr_r takes 8 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + + ]) + ]) +]) +]) + +#-------------------------------------------------------------------- +# SC_TCL_GETHOSTBYNAME_R +# +# Check to see what variant of gethostbyname_r() we have. +# Based on David Arnold's example from the comp.programming.threads +# FAQ Q213 +# +# Arguments: +# None +# +# Results: +# +# Might define the following vars: +# HAVE_GETHOSTBYADDR_R +# HAVE_GETHOSTBYADDR_R_3 +# HAVE_GETHOSTBYADDR_R_5 +# HAVE_GETHOSTBYADDR_R_6 +# +#-------------------------------------------------------------------- + +AC_DEFUN([SC_TCL_GETHOSTBYNAME_R], [AC_CHECK_FUNC(gethostbyname_r, [ + AC_MSG_CHECKING([for gethostbyname_r with 6 args]) + AC_TRY_COMPILE([ + #include + ], [ + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop); + ], [ + AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, + [Define to 1 if gethostbyname_r is available.]) + AC_DEFINE(HAVE_GETHOSTBYNAME_R_6, 1, + [Define to 1 if gethostbyname_r takes 6 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([for gethostbyname_r with 5 args]) + AC_TRY_COMPILE([ + #include + ], [ + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop); + ], [ + AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, + [Define to 1 if gethostbyname_r is available.]) + AC_DEFINE(HAVE_GETHOSTBYNAME_R_5, 1, + [Define to 1 if gethostbyname_r takes 5 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([for gethostbyname_r with 3 args]) + AC_TRY_COMPILE([ + #include + ], [ + char *name; + struct hostent *he; + struct hostent_data data; + + (void) gethostbyname_r(name, he, &data); + ], [ + AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, + [Define to 1 if gethostbyname_r is available.]) + AC_DEFINE(HAVE_GETHOSTBYNAME_R_3, 1, + [Define to 1 if gethostbyname_r takes 3 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + ]) + ]) + ]) +]) +]) + +#-------------------------------------------------------------------- +# SC_TCL_GETPWUID_R +# +# Check if we have MT-safe variant of getpwuid() and if yes, +# which one exactly. +# +# Arguments: +# None +# +# Results: +# +# Might define the following vars: +# HAVE_GETPWUID_R +# HAVE_GETPWUID_R_4 +# HAVE_GETPWUID_R_5 +# +#-------------------------------------------------------------------- + +AC_DEFUN([SC_TCL_GETPWUID_R], [AC_CHECK_FUNC(getpwuid_r, [ + AC_MSG_CHECKING([for getpwuid_r with 5 args]) + AC_TRY_COMPILE([ + #include + #include + ], [ + uid_t uid; + struct passwd pw, *pwp; + char buf[512]; + int buflen = 512; + + (void) getpwuid_r(uid, &pw, buf, buflen, &pwp); + ], [ + AC_DEFINE(HAVE_GETPWUID_R, 1, + [Define to 1 if getpwuid_r is available.]) + AC_DEFINE(HAVE_GETPWUID_R_5, 1, + [Define to 1 if getpwuid_r takes 5 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([for getpwuid_r with 4 args]) + AC_TRY_COMPILE([ + #include + #include + ], [ + uid_t uid; + struct passwd pw; + char buf[512]; + int buflen = 512; + + (void)getpwnam_r(uid, &pw, buf, buflen); + ], [ + AC_DEFINE(HAVE_GETPWUID_R, 1, + [Define to 1 if getpwuid_r is available.]) + AC_DEFINE(HAVE_GETPWUID_R_4, 1, + [Define to 1 if getpwuid_r takes 4 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + ]) + ]) +]) +]) + +#-------------------------------------------------------------------- +# SC_TCL_GETPWNAM_R +# +# Check if we have MT-safe variant of getpwnam() and if yes, +# which one exactly. +# +# Arguments: +# None +# +# Results: +# +# Might define the following vars: +# HAVE_GETPWNAM_R +# HAVE_GETPWNAM_R_4 +# HAVE_GETPWNAM_R_5 +# +#-------------------------------------------------------------------- + +AC_DEFUN([SC_TCL_GETPWNAM_R], [AC_CHECK_FUNC(getpwnam_r, [ + AC_MSG_CHECKING([for getpwnam_r with 5 args]) + AC_TRY_COMPILE([ + #include + #include + ], [ + char *name; + struct passwd pw, *pwp; + char buf[512]; + int buflen = 512; + + (void) getpwnam_r(name, &pw, buf, buflen, &pwp); + ], [ + AC_DEFINE(HAVE_GETPWNAM_R, 1, + [Define to 1 if getpwnam_r is available.]) + AC_DEFINE(HAVE_GETPWNAM_R_5, 1, + [Define to 1 if getpwnam_r takes 5 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([for getpwnam_r with 4 args]) + AC_TRY_COMPILE([ + #include + #include + ], [ + char *name; + struct passwd pw; + char buf[512]; + int buflen = 512; + + (void)getpwnam_r(name, &pw, buf, buflen); + ], [ + AC_DEFINE(HAVE_GETPWNAM_R, 1, + [Define to 1 if getpwnam_r is available.]) + AC_DEFINE(HAVE_GETPWNAM_R_4, 1, + [Define to 1 if getpwnam_r takes 4 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + ]) + ]) +]) +]) + +#-------------------------------------------------------------------- +# SC_TCL_GETGRGID_R +# +# Check if we have MT-safe variant of getgrgid() and if yes, +# which one exactly. +# +# Arguments: +# None +# +# Results: +# +# Might define the following vars: +# HAVE_GETGRGID_R +# HAVE_GETGRGID_R_4 +# HAVE_GETGRGID_R_5 +# +#-------------------------------------------------------------------- + +AC_DEFUN([SC_TCL_GETGRGID_R], [AC_CHECK_FUNC(getgrgid_r, [ + AC_MSG_CHECKING([for getgrgid_r with 5 args]) + AC_TRY_COMPILE([ + #include + #include + ], [ + gid_t gid; + struct group gr, *grp; + char buf[512]; + int buflen = 512; + + (void) getgrgid_r(gid, &gr, buf, buflen, &grp); + ], [ + AC_DEFINE(HAVE_GETGRGID_R, 1, + [Define to 1 if getgrgid_r is available.]) + AC_DEFINE(HAVE_GETGRGID_R_5, 1, + [Define to 1 if getgrgid_r takes 5 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([for getgrgid_r with 4 args]) + AC_TRY_COMPILE([ + #include + #include + ], [ + gid_t gid; + struct group gr; + char buf[512]; + int buflen = 512; + + (void)getgrgid_r(gid, &gr, buf, buflen); + ], [ + AC_DEFINE(HAVE_GETGRGID_R, 1, + [Define to 1 if getgrgid_r is available.]) + AC_DEFINE(HAVE_GETGRGID_R_4, 1, + [Define to 1 if getgrgid_r takes 4 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + ]) + ]) +]) +]) + +#-------------------------------------------------------------------- +# SC_TCL_GETGRNAM_R +# +# Check if we have MT-safe variant of getgrnam() and if yes, +# which one exactly. +# +# Arguments: +# None +# +# Results: +# +# Might define the following vars: +# HAVE_GETGRNAM_R +# HAVE_GETGRNAM_R_4 +# HAVE_GETGRNAM_R_5 +# +#-------------------------------------------------------------------- + +AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [ + AC_MSG_CHECKING([for getgrnam_r with 5 args]) + AC_TRY_COMPILE([ + #include + #include + ], [ + char *name; + struct group gr, *grp; + char buf[512]; + int buflen = 512; + + (void) getgrnam_r(name, &gr, buf, buflen, &grp); + ], [ + AC_DEFINE(HAVE_GETGRNAM_R, 1, + [Define to 1 if getgrnam_r is available.]) + AC_DEFINE(HAVE_GETGRNAM_R_5, 1, + [Define to 1 if getgrnam_r takes 5 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([for getgrnam_r with 4 args]) + AC_TRY_COMPILE([ + #include + #include + ], [ + char *name; + struct group gr; + char buf[512]; + int buflen = 512; + + (void)getgrnam_r(name, &gr, buf, buflen); + ], [ + AC_DEFINE(HAVE_GETGRNAM_R, 1, + [Define to 1 if getgrnam_r is available.]) + AC_DEFINE(HAVE_GETGRNAM_R_4, 1, + [Define to 1 if getgrnam_r takes 4 args.]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + ]) + ]) +]) +]) diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 2be6cbc..22da743 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.7 2006/08/18 11:23:31 das Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.8 2006/09/06 13:08:30 vasiljevic Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -2301,14 +2301,25 @@ TcpGetOptionProc(instanceData, interp, optionName, dsPtr) (strncmp(optionName, "-peername", len) == 0))) { if (getpeername(statePtr->fd, (struct sockaddr *) &peername, &size) >= 0) { +#ifdef TCL_THREADS + int buflen = 1024, herrno; + char hbuf[1024]; + struct hostent he; +#endif if (len == 0) { Tcl_DStringAppendElement(dsPtr, "-peername"); Tcl_DStringStartSublist(dsPtr); } Tcl_DStringAppendElement(dsPtr, inet_ntoa(peername.sin_addr)); +#ifdef TCL_THREADS + hostEntPtr = TclpGetHostByAddr( /* INTL: Native. */ + (char *) &peername.sin_addr, sizeof(peername.sin_addr), + AF_INET, &he, hbuf, buflen, &herrno); +#else hostEntPtr = gethostbyaddr( /* INTL: Native. */ (char *) &peername.sin_addr, sizeof(peername.sin_addr), AF_INET); +#endif if (hostEntPtr != NULL) { Tcl_DString ds; @@ -2348,14 +2359,25 @@ TcpGetOptionProc(instanceData, interp, optionName, dsPtr) (strncmp(optionName, "-sockname", len) == 0))) { if (getsockname(statePtr->fd, (struct sockaddr *) &sockname, &size) >= 0) { +#ifdef TCL_THREADS + int buflen = 1024, herrno; + char hbuf[1024]; + struct hostent he; +#endif if (len == 0) { Tcl_DStringAppendElement(dsPtr, "-sockname"); Tcl_DStringStartSublist(dsPtr); } Tcl_DStringAppendElement(dsPtr, inet_ntoa(sockname.sin_addr)); +#ifdef TCL_THREADS + hostEntPtr = TclpGetHostByAddr( /* INTL: Native. */ + (char *) &sockname.sin_addr, sizeof(sockname.sin_addr), + AF_INET, &he, hbuf, buflen, &herrno); +#else hostEntPtr = gethostbyaddr( /* INTL: Native. */ (char *) &sockname.sin_addr, sizeof(sockname.sin_addr), AF_INET); +#endif if (hostEntPtr != (struct hostent *) NULL) { Tcl_DString ds; @@ -2686,7 +2708,15 @@ CreateSocketAddress(sockaddrPtr, host, port) * on either 32 or 64 bits systems. */ if (addr.s_addr == 0xFFFFFFFF) { +#ifdef TCL_THREADS + int buflen = 1024, herrno; + char hbuf[1024]; + struct hostent he; + hostent = TclpGetHostByName( /* INTL: Native. */ + native, &he, hbuf, buflen, &herrno); +#else hostent = gethostbyname(native); /* INTL: Native. */ +#endif if (hostent != NULL) { memcpy((VOID *) &addr, (VOID *) hostent->h_addr_list[0], diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index 84b819e..581113d 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.10 2006/07/20 06:21:46 das Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.11 2006/09/06 13:08:30 vasiljevic Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -1259,7 +1259,13 @@ GetGroupAttribute(interp, objIndex, fileName, attributePtrPtr) Tcl_Obj **attributePtrPtr; /* A pointer to return the object with. */ { Tcl_StatBuf statBuf; +#ifdef TCL_THREADS + int buflen = 512; + char buf[512]; /* Should be really using sysconf() to get this size */ + struct group gr, *groupPtr = NULL; +#else struct group *groupPtr; +#endif int result; result = TclpObjStat(fileName, &statBuf); @@ -1271,8 +1277,14 @@ GetGroupAttribute(interp, objIndex, fileName, attributePtrPtr) return TCL_ERROR; } - groupPtr = getgrgid(statBuf.st_gid); /* INTL: Native. */ - if (groupPtr == NULL) { +#ifdef TCL_THREADS + result = TclpGetGrGid(statBuf.st_gid, &gr, buf, buflen, &groupPtr); +#else + groupPtr = getgrgid(statBuf.st_gid); + result = 0; +#endif + + if (result == -1 || groupPtr == NULL) { *attributePtrPtr = Tcl_NewIntObj((int) statBuf.st_gid); } else { Tcl_DString ds; @@ -1311,7 +1323,13 @@ GetOwnerAttribute(interp, objIndex, fileName, attributePtrPtr) Tcl_Obj **attributePtrPtr; /* A pointer to return the object with. */ { Tcl_StatBuf statBuf; +#ifdef TCL_THREADS + int buflen = 512; + char buf[512]; /* Should be really using sysconf() to get this size */ + struct passwd pw, *pwPtr = NULL; +#else struct passwd *pwPtr; +#endif int result; result = TclpObjStat(fileName, &statBuf); @@ -1323,8 +1341,14 @@ GetOwnerAttribute(interp, objIndex, fileName, attributePtrPtr) return TCL_ERROR; } - pwPtr = getpwuid(statBuf.st_uid); /* INTL: Native. */ - if (pwPtr == NULL) { +#ifdef TCL_THREADS + result = TclpGetPwUid(statBuf.st_uid, &pw, buf, buflen, &pwPtr); +#else + pwPtr = getpwuid(statBuf.st_uid); + result = 0; +#endif + + if (result == -1 || pwPtr == NULL) { *attributePtrPtr = Tcl_NewIntObj((int) statBuf.st_uid); } else { Tcl_DString ds; @@ -1411,17 +1435,27 @@ SetGroupAttribute(interp, objIndex, fileName, attributePtr) if (Tcl_GetLongFromObj(NULL, attributePtr, &gid) != TCL_OK) { Tcl_DString ds; - struct group *groupPtr; +#ifdef TCL_THREADS + int buflen = 512; /* Should be really using sysconf() to get this size */ + char buf[512]; + struct group gr, *groupPtr = NULL; +#else + struct group *groupPtr = NULL; +#endif CONST char *string; int length; string = Tcl_GetStringFromObj(attributePtr, &length); - native = Tcl_UtfToExternalDString(NULL, string, length, &ds); - groupPtr = getgrnam(native); /* INTL: Native. */ +#ifdef TCL_THREADS + result = TclpGetGrNam(native, &gr, buf, buflen, &groupPtr); /* INTL: Native. */ +#else + groupPtr = getgrnam(native); /* INTL: Native. */ + result = 0; +#endif Tcl_DStringFree(&ds); - if (groupPtr == NULL) { + if (result == -1 || groupPtr == NULL) { endgrent(); Tcl_AppendResult(interp, "could not set group for file \"", Tcl_GetString(fileName), "\": group \"", @@ -1474,17 +1508,28 @@ SetOwnerAttribute(interp, objIndex, fileName, attributePtr) if (Tcl_GetLongFromObj(NULL, attributePtr, &uid) != TCL_OK) { Tcl_DString ds; - struct passwd *pwPtr; +#ifdef TCL_THREADS + int buflen = 512; + char buf[512]; /* Should be really using sysconf() to get this size */ + struct passwd pw, *pwPtr = NULL; +#else + struct passwd *pwPtr = NULL; +#endif CONST char *string; int length; string = Tcl_GetStringFromObj(attributePtr, &length); - native = Tcl_UtfToExternalDString(NULL, string, length, &ds); - pwPtr = getpwnam(native); /* INTL: Native. */ +#ifdef TCL_THREADS + result = TclpGetPwNam(native, &pw, buf, buflen, &pwPtr); /* INTL: Native. */ +#else + pwPtr = getpwnam(native); /* INTL: Native. */ + result = 0; +#endif Tcl_DStringFree(&ds); - if (pwPtr == NULL) { + if (result == -1 || pwPtr == NULL) { + endpwent(); Tcl_AppendResult(interp, "could not set owner for file \"", Tcl_GetString(fileName), "\": user \"", string, "\" does not exist", @@ -1496,7 +1541,8 @@ SetOwnerAttribute(interp, objIndex, fileName, attributePtr) native = Tcl_FSGetNativePath(fileName); result = chown(native, (uid_t) uid, (gid_t) -1); /* INTL: Native. */ - + + endpwent(); if (result != 0) { Tcl_AppendResult(interp, "could not set owner for file \"", Tcl_GetString(fileName), "\": ", @@ -1948,6 +1994,3 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) return nextCheckpoint; } - - - diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 2bbe201..52fa194 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.14 2006/08/21 05:37:26 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.15 2006/09/06 13:08:30 vasiljevic Exp $ */ #ifndef _TCLUNIXPORT @@ -685,6 +685,33 @@ typedef int TclpMutex; #define TclpMutexUnlock(a) #endif /* TCL_THREADS */ + +/* + * Compatibility calls + */ +#include +#include +EXTERN int +TclpGetPwNam(const char *name, struct passwd *pwbuf, char *buf, size_t buflen, + struct passwd **pwbufp); +EXTERN int +TclpGetPwUid(uid_t uid, struct passwd *pwbuf, char *buf, size_t buflen, + struct passwd **pwbufp); +EXTERN int +TclpGetGrNam(const char *name, struct group *gbuf, char *buf, size_t buflen, + struct group **gbufp); +EXTERN int +TclpGetGrGid(gid_t gid, struct group *gbuf, char *buf, size_t buflen, + struct group **gbufp); + +EXTERN struct hostent * +TclpGetHostByName(const char *name, struct hostent *hbuf, char *buf, + size_t buflen, int *h_errnop); + +EXTERN struct hostent * +TclpGetHostByAddr(const char *addr, int length, int type, struct hostent *hbuf, + char *buf, size_t buflen, int *h_errnop); + #include "tclPlatDecls.h" #include "tclIntPlatDecls.h" diff --git a/unix/tclUnixSock.c b/unix/tclUnixSock.c index a85fee4..8d6114f 100644 --- a/unix/tclUnixSock.c +++ b/unix/tclUnixSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixSock.c,v 1.6.2.1 2006/03/10 14:23:50 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixSock.c,v 1.6.2.2 2006/09/06 13:08:30 vasiljevic Exp $ */ #include "tcl.h" @@ -72,6 +72,11 @@ Tcl_GetHostName() char buffer[sizeof(hostname)]; #endif CONST char *native; +#ifdef TCL_THREADS + int buflen = 1024, herrno; + char buf[1024]; + struct hostent he; +#endif Tcl_MutexLock(&hostMutex); if (hostnameInited) { @@ -83,7 +88,12 @@ Tcl_GetHostName() #ifndef NO_UNAME (VOID *) memset((VOID *) &u, (int) 0, sizeof(struct utsname)); if (uname(&u) > -1) { /* INTL: Native. */ +#ifdef TCL_THREADS + hp = TclpGetHostByName( /* INTL: Native. */ + u.nodename, &he, buf, buflen, &herrno); +#else hp = gethostbyname(u.nodename); /* INTL: Native. */ +#endif if (hp == NULL) { /* * Sometimes the nodename is fully qualified, but gets truncated @@ -95,7 +105,11 @@ Tcl_GetHostName() char *node = ckalloc((unsigned) (dot - u.nodename + 1)); memcpy(node, u.nodename, (size_t) (dot - u.nodename)); node[dot - u.nodename] = '\0'; +#ifdef TCL_THREADS + hp = TclpGetHostByName(node, &he, buf, buflen, &herrno); +#else hp = gethostbyname(node); +#endif ckfree(node); } } -- cgit v0.12 From 48340de4f3c6a13746e2c082d9ed8cf5c42b8a99 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Wed, 6 Sep 2006 13:24:32 +0000 Subject: Added for fixing the Tcl Bug 999544 --- unix/tclUnixCompat.c | 584 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 584 insertions(+) create mode 100644 unix/tclUnixCompat.c diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c new file mode 100644 index 0000000..be13aaf --- /dev/null +++ b/unix/tclUnixCompat.c @@ -0,0 +1,584 @@ +/* + * tclUnixCompat.c + * + * Written by: Zoran Vasiljevic (vasiljevic@users.sourceforge.net). + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.1 2006/09/06 13:24:32 vasiljevic Exp $ + * + */ + +#include "tclInt.h" +#include "tclPort.h" +#include +#include +#include +#include + +/* + * Mutex to lock access to MT-unsafe calls. This is just to protect + * our own usage. It does not protect us from others calling the + * same functions without (or using some different) lock. + */ + +Tcl_Mutex compatLock; + +#if !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) || \ + !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETGRNAM_R) + + +/* + *--------------------------------------------------------------------------- + * + * CopyArray -- + * + * Copies array of strings (or fixed values) to the + * private buffer, honouring the size of the buffer. + * + * Results: + * Number of bytes copied on success or -1 on error (errno = ERANGE) + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +static int +CopyArray(char **src, int elsize, char *buf, int buflen) +{ + int i, j, len = 0; + char *p, **new; + + if (src == NULL) { + return 0; + } + for (i = 0; src[i] != NULL; i++) { + /* Empty loop to count howmany */ + } + if ((sizeof(char *)*(i + 1)) > buflen) { + return -1; + } + len = (sizeof(char *)*(i + 1)); /* Leave place for the array */ + new = (char **)buf; + p = buf + (sizeof(char *)*(i + 1)); + for (j = 0; j < i; j++) { + if (elsize < 0) { + len += strlen(src[j]) + 1; + } else { + len += elsize; + } + if (len > buflen) { + return -1; + } + if (elsize < 0) { + strcpy(p, src[j]); + } else { + memcpy(p, src[j], elsize); + } + new[j] = p; + p = buf + len; + } + new[j] = NULL; + + return len; +} + + +/* + *--------------------------------------------------------------------------- + * + * CopyString -- + * + * Copies a string to the private buffer, honouring the + * size of the buffer + * + * Results: + * 0 success or -1 on error (errno = ERANGE) + * + * Side effects: + * None + * + *--------------------------------------------------------------------------- + */ + + +static int +CopyString(char *src, char *buf, int buflen) +{ + int len = 0; + + if (src != NULL) { + len += strlen(src) + 1; + if (len > buflen) { + return -1; + } + strcpy(buf, src); + } + + return len; +} + +#endif /* !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) || + !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETGRNAM_R) */ + + +/* + *--------------------------------------------------------------------------- + * + * CopyHostnent -- + * + * Copies string fields of the hostnent structure to the + * private buffer, honouring the size of the buffer. + * + * Results: + * Number of bytes copied on success or -1 on error (errno = ERANGE) + * + * Side effects: + * None + * + *--------------------------------------------------------------------------- + */ + +#if !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) +static int +CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) +{ + char *p = buf; + int copied, len = 0; + + copied = CopyString(tgtPtr->h_name, p, buflen - len); + if (copied == -1) { + range: + errno = ERANGE; + return -1; + } + tgtPtr->h_name = (copied > 0) ? p : NULL; + len += copied; + p = buf + len; + + copied = CopyArray(tgtPtr->h_aliases, -1, p, buflen - len); + if (copied == -1) { + goto range; + } + tgtPtr->h_aliases = (copied > 0) ? (char **)p : NULL; + len += copied; + p += len; + + copied = CopyArray(tgtPtr->h_addr_list, tgtPtr->h_length, p, buflen - len); + if (copied == -1) { + goto range; + } + tgtPtr->h_addr_list = (copied > 0) ? (char **)p : NULL; + + return 0; +} +#endif /* !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) */ + + +/* + *--------------------------------------------------------------------------- + * + * CopyPwd -- + * + * Copies string fields of the passwd structure to the + * private buffer, honouring the size of the buffer. + * + * Results: + * 0 on success or -1 on error (errno = ERANGE) + * + * Side effects: + * We are not copying the gecos field as it may not be supported + * on all platforms. + * + *--------------------------------------------------------------------------- + */ + +#if !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETPWUID_R) +static int +CopyPwd(struct passwd *tgtPtr, char *buf, int buflen) +{ + char *p = buf; + int copied, len = 0; + + copied = CopyString(tgtPtr->pw_name, p, buflen - len); + if (copied == -1) { + range: + errno = ERANGE; + return -1; + } + tgtPtr->pw_name = (copied > 0) ? p : NULL; + len += copied; + p = buf + len; + + copied = CopyString(tgtPtr->pw_passwd, p, buflen - len); + if (copied == -1) { + goto range; + } + tgtPtr->pw_passwd = (copied > 0) ? p : NULL; + len += copied; + p = buf + len; + + copied = CopyString(tgtPtr->pw_dir, p, buflen - len); + if (copied == -1) { + goto range; + } + tgtPtr->pw_dir = (copied > 0) ? p : NULL; + len += copied; + p = buf + len; + + copied = CopyString(tgtPtr->pw_shell, p, buflen - len); + if (copied == -1) { + goto range; + } + tgtPtr->pw_shell = (copied > 0) ? p : NULL; + + return 0; +} +#endif /* HAVE_GETPWNAM_R || HAVE_GETPWUID_R*/ + + +/* + *--------------------------------------------------------------------------- + * + * CopyGrp -- + * + * Copies string fields of the group structure to the + * private buffer, honouring the size of the buffer. + * + * Results: + * 0 on success or -1 on error (errno = ERANGE) + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +#if !defined(HAVE_GETGRNAM_R) || !defined(HAVE_GETGRGID_R) +static int +CopyGrp(struct group *tgtPtr, char *buf, int buflen) +{ + register char *p = buf; + register int copied, len = 0; + + /* Copy username */ + copied = CopyString(tgtPtr->gr_name, p, buflen - len); + if (copied == -1) { + range: + errno = ERANGE; + return -1; + } + tgtPtr->gr_name = (copied > 0) ? p : NULL; + len += copied; + p = buf + len; + + /* Copy password */ + copied = CopyString(tgtPtr->gr_passwd, p, buflen - len); + if (copied == -1) { + goto range; + } + tgtPtr->gr_passwd = (copied > 0) ? p : NULL; + len += copied; + p = buf + len; + + /* Copy group members */ + copied = CopyArray((char **)tgtPtr->gr_mem, -1, p, buflen - len); + if (copied == -1) { + goto range; + } + tgtPtr->gr_mem = (copied > 0) ? (char **)p : NULL; + + return 0; +} +#endif /* HAVE_GETGRNAM_R || HAVE_GETGRGID_R*/ + + +/* + *--------------------------------------------------------------------------- + * + * TclpGetPwNam -- + * + * Thread-safe wrappers for getpwnam(). + * See "man getpwnam" for more details. + * + * Results: + * 0 on success or -1 on error. + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +int +TclpGetPwNam(const char *name, struct passwd *pwbuf, char *buf, size_t buflen, + struct passwd **pwbufp) +{ + int result = 0; + +#if defined(HAVE_GETPWNAM_R_5) + result = getpwnam_r(name, pwbuf, buf, buflen, pwbufp); +#elif defined(HAVE_GETPWNAM_R_4) + *pwbufp = getpwnam_r(name, pwbuf, buf, buflen); + if (*pwbufp == NULL) { + result = -1; + } +#else + struct passwd *pwPtr = NULL; + Tcl_MutexLock(&compatLock); + pwPtr = getpwnam(name); + if (pwPtr == NULL) { + result = -1; + } else { + *pwbuf = *pwPtr; + *pwbufp = pwbuf; + result = CopyPwd(pwbuf, buf, buflen); + } + Tcl_MutexUnlock(&compatLock); +#endif + return result; +} + + +/* + *--------------------------------------------------------------------------- + * + * TclpGetPwUid -- + * + * Thread-safe wrappers for getpwuid(). + * See "man getpwuid" for more details. + * + * Results: + * 0 on success or -1 on error. + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +int +TclpGetPwUid(uid_t uid, struct passwd *pwbuf, char *buf, size_t buflen, + struct passwd **pwbufp) +{ + int result = 0; + +#if defined(HAVE_GETPWUID_R_5) + result = getpwuid_r(uid, pwbuf, buf, buflen, pwbufp); +#elif defined(HAVE_GETPWUID_R_4) + *pwbufp = getpwuid_r(uid, pwbuf, buf, buflen); + if (*pwbufp == NULL) { + result = -1; + } +#else + struct passwd *pwPtr = NULL; + Tcl_MutexLock(&compatLock); + pwPtr = getpwuid(uid); + if (pwPtr == NULL) { + result = -1; + } else { + *pwbuf = *pwPtr; + *pwbufp = pwbuf; + result = CopyPwd(pwbuf, buf, buflen); + } + Tcl_MutexUnlock(&compatLock); +#endif + return result; +} + + +/* + *--------------------------------------------------------------------------- + * + * TclpGetGrNam -- + * + * Thread-safe wrappers for getgrnam(). + * See "man getgrnam" for more details. + * + * Results: + * 0 on success or -1 on error. + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +int +TclpGetGrNam(const char *name, struct group *gbuf, char *buf, size_t buflen, + struct group **gbufp) +{ + int result = 0; + +#if defined(HAVE_GETGRNAM_R_5) + result = getgrnam_r(name, gbuf, buf, buflen, gbufp); +#elif defined(HAVE_GETGRNAM_R_4) + *gbufp = getgrgid_r(name, gbuf, buf, buflen); + if (*gbufp == NULL) { + result = -1; + } +#else + struct group *grPtr = NULL; + Tcl_MutexLock(&compatLock); + grPtr = getgrnam(name); + if (grPtr == NULL) { + result = -1; + } else { + *gbuf = *grPtr; + *gbufp = gbuf; + result = CopyGrp(gbuf, buf, buflen); + } + Tcl_MutexUnlock(&compatLock); +#endif + return result; +} + + +/* + *--------------------------------------------------------------------------- + * + * TclpGetGrGid -- + * + * Thread-safe wrappers for getgrgid(). + * See "man getgrgid" for more details. + * + * Results: + * 0 on success or -1 on error. + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +int +TclpGetGrGid(gid_t gid, struct group *gbuf, char *buf, size_t buflen, + struct group **gbufp) +{ + int result = 0; + +#if defined(HAVE_GETGRGID_R_5) + result = getgrgid_r(gid, gbuf, buf, buflen, gbufp); +#elif defined(HAVE_GETGRGID_R_4) + *gbufp = getgrgid_r(gid, gbuf, buf, buflen); + if (*gbufp == NULL) { + result = -1; + } +#else + struct group *grPtr = NULL; + Tcl_MutexLock(&compatLock); + grPtr = getgrgid(gid); + if (grPtr == NULL) { + result = -1; + } else { + *gbuf = *grPtr; + *gbufp = gbuf; + result = CopyGrp(gbuf, buf, buflen); + } + Tcl_MutexUnlock(&compatLock); +#endif + return result; +} + + +/* + *--------------------------------------------------------------------------- + * + * TclpGetHostByName -- + * + * Thread-safe wrappers for gethostbyname(). + * See "man gethostbyname" for more details. + * + * Results: + * Pointer to struct hostent on success or NULL on error. + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +struct hostent * +TclpGetHostByName(const char *name, struct hostent *hbuf, char *buf, + size_t buflen, int *h_errnop) +{ +#if defined(HAVE_GETHOSTBYNAME_R_5) + return gethostbyname_r(name, hbuf, buf, buflen, h_errnop); +#elif defined(HAVE_GETHOSTBYNAME_R_6) + struct hostent *hePtr; + return (gethostbyname_r(name, hbuf, buf, buflen, &hePtr, + h_errnop) == 0) ? hbuf : NULL; +#elif defined(HAVE_GETHOSTBYNAME_R_3) + struct hostent_data data; + if (-1 == gethostbyname_r(host, hbuf, &data)) { + *h_errnop = h_errno; + return NULL; + } else { + return &hbuf; + } +#else + struct hostent *hePtr = NULL; + Tcl_MutexLock(&compatLock); + hePtr = gethostbyname(name); + if (hePtr != NULL) { + *hbuf = *hePtr; + if (-1 == CopyHostent(hbuf, buf, buflen)) { + hePtr = NULL; + } else { + hePtr = hbuf; + } + } + Tcl_MutexUnlock(&compatLock); + return hePtr; +#endif + return NULL; /* Not reached */ +} + + +/* + *--------------------------------------------------------------------------- + * + * TclpGetHostByAddr -- + * + * Thread-safe wrappers for gethostbyaddr(). + * See "man gethostbyaddr" for more details. + * + * Results: + * Pointer to struct hostent on success or NULL on error. + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +struct hostent * +TclpGetHostByAddr(const char *addr, int length, int type, struct hostent *hbuf, + char *buf, size_t buflen, int *h_errnop) +{ +#if defined(HAVE_GETHOSTBYADDR_R_7) + return gethostbyaddr_r(addr, length, type, hbuf, buf, buflen, h_errnop); +#elif defined(HAVE_GETHOSTBYADDR_R_8) + struct hostent *hePtr; + return (gethostbyaddr_r(addr, length, type, hbuf, buf, buflen, + &hePtr, h_errnop) == 0) ? hbuf : NULL; +#else + struct hostent *hePtr = NULL; + Tcl_MutexLock(&compatLock); + hePtr = gethostbyaddr(addr, length, type); + if (hePtr != NULL) { + *hbuf = *hePtr; + if (-1 == CopyHostent(hbuf, buf, buflen)) { + hePtr = NULL; + } else { + hePtr = hbuf; + } + } + Tcl_MutexUnlock(&compatLock); + return hePtr; +#endif + return NULL; /* Not reached */ +} -- cgit v0.12 From 6bf316cc8d180ece75a2b6b0af4594401fde93de Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Sep 2006 08:50:35 +0000 Subject: Rewritten MT-safe wrappers to return ptrs to TSD storage --- ChangeLog | 30 ++++--- unix/tclUnixChan.c | 42 ++------- unix/tclUnixCompat.c | 239 +++++++++++++++++++++++++++++---------------------- unix/tclUnixFCmd.c | 58 ++----------- unix/tclUnixPort.h | 36 +++----- unix/tclUnixSock.c | 15 +--- 6 files changed, 185 insertions(+), 235 deletions(-) diff --git a/ChangeLog b/ChangeLog index 990dad0..ac58e44 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,16 +1,24 @@ +2006-09-07 Zoran Vasiljevic + + * unix/tclUnixChan.c Rewritten MT-safe wrappers to + * unix/tclUnixCompat.c return ptrs to TSD storage + * unix/tclUnixFCmd.c making them all look like their + * unix/tclUnixPort.h MT-unsafe pendants API-wise. + * unix/tclUnixSock.c + 2006-09-06 Zoran Vasiljevic - * unix/tclUnixChan.c: Added TCL_THREADS ifdef'ed usage - * unix/tclUnixFCmd.c: of MT-safe calls like: - * unix/tclUnixSock.c: getpwuid, getpwnam, getgrgid, getgrnam, - * unix/tclUnixPort.h: gethostbyname and gethostbyaddr. - * unix/Makefile.in: See Tcl Bug: 999544 - * unix/configure.in: - * unix/tcl.m4: - * unix/configure: Regenerated. - - * unix/tclUnixCompat.c: New file containing MT-safe implementation - of some library calls. + * unix/tclUnixChan.c: Added TCL_THREADS ifdef'ed usage + * unix/tclUnixFCmd.c: of MT-safe calls like: + * unix/tclUnixSock.c: getpwuid, getpwnam, getgrgid, getgrnam, + * unix/tclUnixPort.h: gethostbyname and gethostbyaddr. + * unix/Makefile.in: See Tcl Bug: 999544 + * unix/configure.in: + * unix/tcl.m4: + * unix/configure: Regenerated. + + * unix/tclUnixCompat.c: New file containing MT-safe implementation + of some library calls. 2006-09-04 Don Porter diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 22da743..0d2c046 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.8 2006/09/06 13:08:30 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.9 2006/09/07 08:50:35 vasiljevic Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -2301,26 +2301,15 @@ TcpGetOptionProc(instanceData, interp, optionName, dsPtr) (strncmp(optionName, "-peername", len) == 0))) { if (getpeername(statePtr->fd, (struct sockaddr *) &peername, &size) >= 0) { -#ifdef TCL_THREADS - int buflen = 1024, herrno; - char hbuf[1024]; - struct hostent he; -#endif if (len == 0) { Tcl_DStringAppendElement(dsPtr, "-peername"); Tcl_DStringStartSublist(dsPtr); } Tcl_DStringAppendElement(dsPtr, inet_ntoa(peername.sin_addr)); -#ifdef TCL_THREADS - hostEntPtr = TclpGetHostByAddr( /* INTL: Native. */ - (char *) &peername.sin_addr, sizeof(peername.sin_addr), - AF_INET, &he, hbuf, buflen, &herrno); -#else - hostEntPtr = gethostbyaddr( /* INTL: Native. */ + hostEntPtr = TclpGetHostByAddr( /* INTL: Native. */ (char *) &peername.sin_addr, sizeof(peername.sin_addr), AF_INET); -#endif - if (hostEntPtr != NULL) { + if (hostEntPtr != (struct hostent *) NULL) { Tcl_DString ds; Tcl_ExternalToUtfDString(NULL, hostEntPtr->h_name, -1, &ds); @@ -2359,25 +2348,14 @@ TcpGetOptionProc(instanceData, interp, optionName, dsPtr) (strncmp(optionName, "-sockname", len) == 0))) { if (getsockname(statePtr->fd, (struct sockaddr *) &sockname, &size) >= 0) { -#ifdef TCL_THREADS - int buflen = 1024, herrno; - char hbuf[1024]; - struct hostent he; -#endif if (len == 0) { Tcl_DStringAppendElement(dsPtr, "-sockname"); Tcl_DStringStartSublist(dsPtr); } Tcl_DStringAppendElement(dsPtr, inet_ntoa(sockname.sin_addr)); -#ifdef TCL_THREADS - hostEntPtr = TclpGetHostByAddr( /* INTL: Native. */ - (char *) &sockname.sin_addr, sizeof(sockname.sin_addr), - AF_INET, &he, hbuf, buflen, &herrno); -#else - hostEntPtr = gethostbyaddr( /* INTL: Native. */ + hostEntPtr = TclpGetHostByAddr( /* INTL: Native. */ (char *) &sockname.sin_addr, sizeof(sockname.sin_addr), AF_INET); -#endif if (hostEntPtr != (struct hostent *) NULL) { Tcl_DString ds; @@ -2708,16 +2686,8 @@ CreateSocketAddress(sockaddrPtr, host, port) * on either 32 or 64 bits systems. */ if (addr.s_addr == 0xFFFFFFFF) { -#ifdef TCL_THREADS - int buflen = 1024, herrno; - char hbuf[1024]; - struct hostent he; - hostent = TclpGetHostByName( /* INTL: Native. */ - native, &he, hbuf, buflen, &herrno); -#else - hostent = gethostbyname(native); /* INTL: Native. */ -#endif - if (hostent != NULL) { + hostent = TclpGetHostByName(native); /* INTL: Native. */ + if (hostent != (struct hostent *) NULL) { memcpy((VOID *) &addr, (VOID *) hostent->h_addr_list[0], (size_t) hostent->h_length); diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index be13aaf..bb29c44 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.1 2006/09/06 13:24:32 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.2 2006/09/07 08:50:35 vasiljevic Exp $ * */ @@ -18,6 +18,26 @@ #include /* + * Per-thread private storage used to store values + * returned from MT-unsafe library calls. + */ + +typedef struct ThreadSpecificData { + + struct passwd pwd; + char pbuf[2048]; + + struct group grp; + char gbuf[2048]; + + struct hostent hent; + char hbuf[2048]; + +} ThreadSpecificData; + +static Tcl_ThreadDataKey dataKey; + +/* * Mutex to lock access to MT-unsafe calls. This is just to protect * our own usage. It does not protect us from others calling the * same functions without (or using some different) lock. @@ -34,8 +54,8 @@ Tcl_Mutex compatLock; * * CopyArray -- * - * Copies array of strings (or fixed values) to the - * private buffer, honouring the size of the buffer. + * Copies array of NULL-terminated or fixed-length strings + * to the private buffer, honouring the size of the buffer. * * Results: * Number of bytes copied on success or -1 on error (errno = ERANGE) @@ -92,8 +112,8 @@ CopyArray(char **src, int elsize, char *buf, int buflen) * * CopyString -- * - * Copies a string to the private buffer, honouring the - * size of the buffer + * Copies a NULL-terminated string to the private buffer, + * honouring the size of the buffer * * Results: * 0 success or -1 on error (errno = ERANGE) @@ -305,7 +325,7 @@ CopyGrp(struct group *tgtPtr, char *buf, int buflen) * See "man getpwnam" for more details. * * Results: - * 0 on success or -1 on error. + * Pointer to struct passwd on success or NULL on error. * * Side effects: * None. @@ -313,33 +333,34 @@ CopyGrp(struct group *tgtPtr, char *buf, int buflen) *--------------------------------------------------------------------------- */ -int -TclpGetPwNam(const char *name, struct passwd *pwbuf, char *buf, size_t buflen, - struct passwd **pwbufp) +struct passwd * +TclpGetPwNam(const char *name) { - int result = 0; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETPWNAM_R_5) - result = getpwnam_r(name, pwbuf, buf, buflen, pwbufp); + struct group *pwPtr; + return (getpwnam_r(name, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), + &pwPtr) == 0) ? &tsdPtr->pwd : NULL; + #elif defined(HAVE_GETPWNAM_R_4) - *pwbufp = getpwnam_r(name, pwbuf, buf, buflen); - if (*pwbufp == NULL) { - result = -1; - } + return getpwnam_r(name, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)); + #else - struct passwd *pwPtr = NULL; + struct passwd *pwPtr; Tcl_MutexLock(&compatLock); pwPtr = getpwnam(name); - if (pwPtr == NULL) { - result = -1; - } else { - *pwbuf = *pwPtr; - *pwbufp = pwbuf; - result = CopyPwd(pwbuf, buf, buflen); + if (pwPtr != NULL) { + tsdPtr->pwd = *pwPtr; + pwPtr = &tsdPtr->pwd; + if (CopyPwd(&tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)) == -1) { + pwPtr = NULL; + } } Tcl_MutexUnlock(&compatLock); + return pwPtr; #endif - return result; + return NULL; /* Not reached */ } @@ -352,7 +373,7 @@ TclpGetPwNam(const char *name, struct passwd *pwbuf, char *buf, size_t buflen, * See "man getpwuid" for more details. * * Results: - * 0 on success or -1 on error. + * Pointer to struct passwd on success or NULL on error. * * Side effects: * None. @@ -360,33 +381,34 @@ TclpGetPwNam(const char *name, struct passwd *pwbuf, char *buf, size_t buflen, *--------------------------------------------------------------------------- */ -int -TclpGetPwUid(uid_t uid, struct passwd *pwbuf, char *buf, size_t buflen, - struct passwd **pwbufp) +struct passwd * +TclpGetPwUid(uid_t uid) { - int result = 0; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETPWUID_R_5) - result = getpwuid_r(uid, pwbuf, buf, buflen, pwbufp); + struct group *pwPtr; + return (getpwuid_r(uid, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), + &pwPtr) == 0) ? &tsdPtr->pwd : NULL; + #elif defined(HAVE_GETPWUID_R_4) - *pwbufp = getpwuid_r(uid, pwbuf, buf, buflen); - if (*pwbufp == NULL) { - result = -1; - } + return getpwuid_r(uid, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)); + #else - struct passwd *pwPtr = NULL; + struct passwd *pwPtr; Tcl_MutexLock(&compatLock); pwPtr = getpwuid(uid); - if (pwPtr == NULL) { - result = -1; - } else { - *pwbuf = *pwPtr; - *pwbufp = pwbuf; - result = CopyPwd(pwbuf, buf, buflen); + if (pwPtr != NULL) { + tsdPtr->pwd = *pwPtr; + pwPtr = &tsdPtr->pwd; + if (CopyPwd(&tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)) == -1) { + pwPtr = NULL; + } } Tcl_MutexUnlock(&compatLock); + return pwPtr; #endif - return result; + return NULL; /* Not reached */ } @@ -399,7 +421,7 @@ TclpGetPwUid(uid_t uid, struct passwd *pwbuf, char *buf, size_t buflen, * See "man getgrnam" for more details. * * Results: - * 0 on success or -1 on error. + * Pointer to struct group on success or NULL on error. * * Side effects: * None. @@ -407,33 +429,34 @@ TclpGetPwUid(uid_t uid, struct passwd *pwbuf, char *buf, size_t buflen, *--------------------------------------------------------------------------- */ -int -TclpGetGrNam(const char *name, struct group *gbuf, char *buf, size_t buflen, - struct group **gbufp) +struct group * +TclpGetGrNam(const char *name) { - int result = 0; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETGRNAM_R_5) - result = getgrnam_r(name, gbuf, buf, buflen, gbufp); + struct group *grPtr; + return (getgrnam_r(name, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf), + &grPtr) == 0) ? &tsdPtr->grp : NULL; + #elif defined(HAVE_GETGRNAM_R_4) - *gbufp = getgrgid_r(name, gbuf, buf, buflen); - if (*gbufp == NULL) { - result = -1; - } + return getgrnam_r(name, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)); + #else - struct group *grPtr = NULL; + struct group *grPtr; Tcl_MutexLock(&compatLock); grPtr = getgrnam(name); - if (grPtr == NULL) { - result = -1; - } else { - *gbuf = *grPtr; - *gbufp = gbuf; - result = CopyGrp(gbuf, buf, buflen); + if (grPtr != NULL) { + tsdPtr->grp = *grPtr; + grPtr = &tsdPtr->grp; + if (CopyGrp(&tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)) == -1) { + grPtr = NULL; + } } Tcl_MutexUnlock(&compatLock); + return grPtr; #endif - return result; + return NULL; /* Not reached */ } @@ -446,7 +469,7 @@ TclpGetGrNam(const char *name, struct group *gbuf, char *buf, size_t buflen, * See "man getgrgid" for more details. * * Results: - * 0 on success or -1 on error. + * Pointer to struct group on success or NULL on error. * * Side effects: * None. @@ -454,33 +477,34 @@ TclpGetGrNam(const char *name, struct group *gbuf, char *buf, size_t buflen, *--------------------------------------------------------------------------- */ -int -TclpGetGrGid(gid_t gid, struct group *gbuf, char *buf, size_t buflen, - struct group **gbufp) +struct group * +TclpGetGrGid(gid_t gid) { - int result = 0; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETGRGID_R_5) - result = getgrgid_r(gid, gbuf, buf, buflen, gbufp); + struct group *grPtr; + return (getgrgid_r(gid, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf), + &grPtr) == 0) ? &tsdPtr->grp : NULL; + #elif defined(HAVE_GETGRGID_R_4) - *gbufp = getgrgid_r(gid, gbuf, buf, buflen); - if (*gbufp == NULL) { - result = -1; - } + return getgrgid_r(gid, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)); + #else - struct group *grPtr = NULL; + struct group *grPtr; Tcl_MutexLock(&compatLock); grPtr = getgrgid(gid); - if (grPtr == NULL) { - result = -1; - } else { - *gbuf = *grPtr; - *gbufp = gbuf; - result = CopyGrp(gbuf, buf, buflen); + if (grPtr != NULL) { + tsdPtr->grp = *grPtr; + grPtr = &tsdPtr->grp; + if (CopyGrp(&tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)) == -1) { + grPtr = NULL; + } } Tcl_MutexUnlock(&compatLock); + return grPtr; #endif - return result; + return NULL; /* Not reached */ } @@ -502,33 +526,36 @@ TclpGetGrGid(gid_t gid, struct group *gbuf, char *buf, size_t buflen, */ struct hostent * -TclpGetHostByName(const char *name, struct hostent *hbuf, char *buf, - size_t buflen, int *h_errnop) +TclpGetHostByName(const char *name) { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + #if defined(HAVE_GETHOSTBYNAME_R_5) - return gethostbyname_r(name, hbuf, buf, buflen, h_errnop); + int h_errno; + return gethostbyname_r(name, &tsdPtr->hent, tsdPtr->hbuf, + sizeof(tsdPtr->hbuf), &h_errno); + #elif defined(HAVE_GETHOSTBYNAME_R_6) struct hostent *hePtr; - return (gethostbyname_r(name, hbuf, buf, buflen, &hePtr, - h_errnop) == 0) ? hbuf : NULL; + int h_errno; + return (gethostbyname_r(name, &tsdPtr->buf.hent, tsdPtr->hbuf, + sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? + &tsdPtr->hent : NULL; + #elif defined(HAVE_GETHOSTBYNAME_R_3) struct hostent_data data; - if (-1 == gethostbyname_r(host, hbuf, &data)) { - *h_errnop = h_errno; - return NULL; - } else { - return &hbuf; - } + return (gethostbyname_r(host, &tsdPtr->buf.hent, &data) == 0) ? + &tsdPtr->buf.hent : NULL; #else - struct hostent *hePtr = NULL; + struct hostent *hePtr; Tcl_MutexLock(&compatLock); hePtr = gethostbyname(name); if (hePtr != NULL) { - *hbuf = *hePtr; - if (-1 == CopyHostent(hbuf, buf, buflen)) { + tsdPtr->hent = *hePtr; + hePtr = &tsdPtr->hent; + if (CopyHostent(&tsdPtr->hent, tsdPtr->hbuf, + sizeof(tsdPtr->hbuf)) == -1) { hePtr = NULL; - } else { - hePtr = hbuf; } } Tcl_MutexUnlock(&compatLock); @@ -556,25 +583,31 @@ TclpGetHostByName(const char *name, struct hostent *hbuf, char *buf, */ struct hostent * -TclpGetHostByAddr(const char *addr, int length, int type, struct hostent *hbuf, - char *buf, size_t buflen, int *h_errnop) +TclpGetHostByAddr(const char *addr, int length, int type) { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + #if defined(HAVE_GETHOSTBYADDR_R_7) - return gethostbyaddr_r(addr, length, type, hbuf, buf, buflen, h_errnop); + int h_errno; + return gethostbyaddr_r(addr, length, type, &tsdPtr->hent, tsdPtr->hbuf, + sizeof(tsdPtr->hbuf), &h_errno); + #elif defined(HAVE_GETHOSTBYADDR_R_8) struct hostent *hePtr; - return (gethostbyaddr_r(addr, length, type, hbuf, buf, buflen, - &hePtr, h_errnop) == 0) ? hbuf : NULL; + int h_errno; + return (gethostbyaddr_r(addr, length, type, &tsdPtr->buf.hent, tsdPtr->hbuf, + sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? + &tsdPtr->hent : NULL; #else - struct hostent *hePtr = NULL; + struct hostent *hePtr; Tcl_MutexLock(&compatLock); hePtr = gethostbyaddr(addr, length, type); if (hePtr != NULL) { - *hbuf = *hePtr; - if (-1 == CopyHostent(hbuf, buf, buflen)) { + tsdPtr->hent = *hePtr; + hePtr = &tsdPtr->hent; + if (CopyHostent(&tsdPtr->hent, tsdPtr->hbuf, + sizeof(tsdPtr->hbuf)) == -1) { hePtr = NULL; - } else { - hePtr = hbuf; } } Tcl_MutexUnlock(&compatLock); diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index 581113d..dc003ce 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.11 2006/09/06 13:08:30 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.12 2006/09/07 08:50:36 vasiljevic Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -1259,13 +1259,7 @@ GetGroupAttribute(interp, objIndex, fileName, attributePtrPtr) Tcl_Obj **attributePtrPtr; /* A pointer to return the object with. */ { Tcl_StatBuf statBuf; -#ifdef TCL_THREADS - int buflen = 512; - char buf[512]; /* Should be really using sysconf() to get this size */ - struct group gr, *groupPtr = NULL; -#else struct group *groupPtr; -#endif int result; result = TclpObjStat(fileName, &statBuf); @@ -1277,12 +1271,7 @@ GetGroupAttribute(interp, objIndex, fileName, attributePtrPtr) return TCL_ERROR; } -#ifdef TCL_THREADS - result = TclpGetGrGid(statBuf.st_gid, &gr, buf, buflen, &groupPtr); -#else - groupPtr = getgrgid(statBuf.st_gid); - result = 0; -#endif + groupPtr = TclpGetGrGid(statBuf.st_gid); if (result == -1 || groupPtr == NULL) { *attributePtrPtr = Tcl_NewIntObj((int) statBuf.st_gid); @@ -1323,13 +1312,7 @@ GetOwnerAttribute(interp, objIndex, fileName, attributePtrPtr) Tcl_Obj **attributePtrPtr; /* A pointer to return the object with. */ { Tcl_StatBuf statBuf; -#ifdef TCL_THREADS - int buflen = 512; - char buf[512]; /* Should be really using sysconf() to get this size */ - struct passwd pw, *pwPtr = NULL; -#else struct passwd *pwPtr; -#endif int result; result = TclpObjStat(fileName, &statBuf); @@ -1341,12 +1324,7 @@ GetOwnerAttribute(interp, objIndex, fileName, attributePtrPtr) return TCL_ERROR; } -#ifdef TCL_THREADS - result = TclpGetPwUid(statBuf.st_uid, &pw, buf, buflen, &pwPtr); -#else - pwPtr = getpwuid(statBuf.st_uid); - result = 0; -#endif + pwPtr = TclpGetPwUid(statBuf.st_uid); if (result == -1 || pwPtr == NULL) { *attributePtrPtr = Tcl_NewIntObj((int) statBuf.st_uid); @@ -1435,24 +1413,13 @@ SetGroupAttribute(interp, objIndex, fileName, attributePtr) if (Tcl_GetLongFromObj(NULL, attributePtr, &gid) != TCL_OK) { Tcl_DString ds; -#ifdef TCL_THREADS - int buflen = 512; /* Should be really using sysconf() to get this size */ - char buf[512]; - struct group gr, *groupPtr = NULL; -#else - struct group *groupPtr = NULL; -#endif + struct group *groupPtr; CONST char *string; int length; string = Tcl_GetStringFromObj(attributePtr, &length); native = Tcl_UtfToExternalDString(NULL, string, length, &ds); -#ifdef TCL_THREADS - result = TclpGetGrNam(native, &gr, buf, buflen, &groupPtr); /* INTL: Native. */ -#else - groupPtr = getgrnam(native); /* INTL: Native. */ - result = 0; -#endif + groupPtr = TclpGetGrNam(native); /* INTL: Native. */ Tcl_DStringFree(&ds); if (result == -1 || groupPtr == NULL) { @@ -1508,24 +1475,13 @@ SetOwnerAttribute(interp, objIndex, fileName, attributePtr) if (Tcl_GetLongFromObj(NULL, attributePtr, &uid) != TCL_OK) { Tcl_DString ds; -#ifdef TCL_THREADS - int buflen = 512; - char buf[512]; /* Should be really using sysconf() to get this size */ - struct passwd pw, *pwPtr = NULL; -#else - struct passwd *pwPtr = NULL; -#endif + struct passwd *pwPtr; CONST char *string; int length; string = Tcl_GetStringFromObj(attributePtr, &length); native = Tcl_UtfToExternalDString(NULL, string, length, &ds); -#ifdef TCL_THREADS - result = TclpGetPwNam(native, &pw, buf, buflen, &pwPtr); /* INTL: Native. */ -#else - pwPtr = getpwnam(native); /* INTL: Native. */ - result = 0; -#endif + pwPtr = TclpGetPwNam(native); /* INTL: Native. */ Tcl_DStringFree(&ds); if (result == -1 || pwPtr == NULL) { diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 52fa194..46d14fa 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.15 2006/09/06 13:08:30 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.16 2006/09/07 08:50:36 vasiljevic Exp $ */ #ifndef _TCLUNIXPORT @@ -687,30 +687,22 @@ typedef int TclpMutex; /* - * Compatibility calls + * Set of MT-safe implementations of some + * known-to-be-MT-unsafe library calls. + * Instead of returning pointers to the + * static storage, those return pointers + * to the TSD data. */ + #include #include -EXTERN int -TclpGetPwNam(const char *name, struct passwd *pwbuf, char *buf, size_t buflen, - struct passwd **pwbufp); -EXTERN int -TclpGetPwUid(uid_t uid, struct passwd *pwbuf, char *buf, size_t buflen, - struct passwd **pwbufp); -EXTERN int -TclpGetGrNam(const char *name, struct group *gbuf, char *buf, size_t buflen, - struct group **gbufp); -EXTERN int -TclpGetGrGid(gid_t gid, struct group *gbuf, char *buf, size_t buflen, - struct group **gbufp); - -EXTERN struct hostent * -TclpGetHostByName(const char *name, struct hostent *hbuf, char *buf, - size_t buflen, int *h_errnop); - -EXTERN struct hostent * -TclpGetHostByAddr(const char *addr, int length, int type, struct hostent *hbuf, - char *buf, size_t buflen, int *h_errnop); + +EXTERN struct passwd* TclpGetPwNam(const char *name); +EXTERN struct group* TclpGetGrNam(const char *name); +EXTERN struct passwd* TclpGetPwUid(uid_t uid); +EXTERN struct group* TclpGetGrGid(gid_t gid); +EXTERN struct hostent* TclpGetHostByName(const char *name); +EXTERN struct hostent* TclpGetHostByAddr(const char *addr, int length, int type); #include "tclPlatDecls.h" #include "tclIntPlatDecls.h" diff --git a/unix/tclUnixSock.c b/unix/tclUnixSock.c index 8d6114f..eae4906 100644 --- a/unix/tclUnixSock.c +++ b/unix/tclUnixSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixSock.c,v 1.6.2.2 2006/09/06 13:08:30 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixSock.c,v 1.6.2.3 2006/09/07 08:50:36 vasiljevic Exp $ */ #include "tcl.h" @@ -88,12 +88,7 @@ Tcl_GetHostName() #ifndef NO_UNAME (VOID *) memset((VOID *) &u, (int) 0, sizeof(struct utsname)); if (uname(&u) > -1) { /* INTL: Native. */ -#ifdef TCL_THREADS - hp = TclpGetHostByName( /* INTL: Native. */ - u.nodename, &he, buf, buflen, &herrno); -#else - hp = gethostbyname(u.nodename); /* INTL: Native. */ -#endif + hp = TclpGetHostByName(u.nodename); /* INTL: Native. */ if (hp == NULL) { /* * Sometimes the nodename is fully qualified, but gets truncated @@ -105,11 +100,7 @@ Tcl_GetHostName() char *node = ckalloc((unsigned) (dot - u.nodename + 1)); memcpy(node, u.nodename, (size_t) (dot - u.nodename)); node[dot - u.nodename] = '\0'; -#ifdef TCL_THREADS - hp = TclpGetHostByName(node, &he, buf, buflen, &herrno); -#else - hp = gethostbyname(node); -#endif + hp = TclpGetHostByName(node); ckfree(node); } } -- cgit v0.12 From f03502ae085efe1bf6e5ee93276366b1f94115d0 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Sep 2006 08:55:40 +0000 Subject: Fixed wrong structure usage in some wrappers --- unix/tclUnixCompat.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index bb29c44..7904c3f 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.2 2006/09/07 08:50:35 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.3 2006/09/07 08:55:40 vasiljevic Exp $ * */ @@ -339,7 +339,7 @@ TclpGetPwNam(const char *name) ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETPWNAM_R_5) - struct group *pwPtr; + struct passwd *pwPtr; return (getpwnam_r(name, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), &pwPtr) == 0) ? &tsdPtr->pwd : NULL; @@ -387,7 +387,7 @@ TclpGetPwUid(uid_t uid) ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETPWUID_R_5) - struct group *pwPtr; + struct passwd *pwPtr; return (getpwuid_r(uid, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), &pwPtr) == 0) ? &tsdPtr->pwd : NULL; -- cgit v0.12 From 916d435d96216094259a369fa65b5db9cf2eaf4a Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Sep 2006 09:01:07 +0000 Subject: Removed unused variables --- unix/tclUnixSock.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/unix/tclUnixSock.c b/unix/tclUnixSock.c index eae4906..5f1fade 100644 --- a/unix/tclUnixSock.c +++ b/unix/tclUnixSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixSock.c,v 1.6.2.3 2006/09/07 08:50:36 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixSock.c,v 1.6.2.4 2006/09/07 09:01:07 vasiljevic Exp $ */ #include "tcl.h" @@ -72,11 +72,6 @@ Tcl_GetHostName() char buffer[sizeof(hostname)]; #endif CONST char *native; -#ifdef TCL_THREADS - int buflen = 1024, herrno; - char buf[1024]; - struct hostent he; -#endif Tcl_MutexLock(&hostMutex); if (hostnameInited) { -- cgit v0.12 From eb54bb93d9685a9cbe240291c2f185a6eda6f292 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Sep 2006 09:08:12 +0000 Subject: Fixed typos in some wrapers --- unix/tclUnixCompat.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index 7904c3f..5ab78aa 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.3 2006/09/07 08:55:40 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.4 2006/09/07 09:08:12 vasiljevic Exp $ * */ @@ -538,13 +538,13 @@ TclpGetHostByName(const char *name) #elif defined(HAVE_GETHOSTBYNAME_R_6) struct hostent *hePtr; int h_errno; - return (gethostbyname_r(name, &tsdPtr->buf.hent, tsdPtr->hbuf, + return (gethostbyname_r(name, &tsdPtr->hent, tsdPtr->hbuf, sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? &tsdPtr->hent : NULL; #elif defined(HAVE_GETHOSTBYNAME_R_3) struct hostent_data data; - return (gethostbyname_r(host, &tsdPtr->buf.hent, &data) == 0) ? + return (gethostbyname_r(host, &tsdPtr->hent, &data) == 0) ? &tsdPtr->buf.hent : NULL; #else struct hostent *hePtr; @@ -595,7 +595,7 @@ TclpGetHostByAddr(const char *addr, int length, int type) #elif defined(HAVE_GETHOSTBYADDR_R_8) struct hostent *hePtr; int h_errno; - return (gethostbyaddr_r(addr, length, type, &tsdPtr->buf.hent, tsdPtr->hbuf, + return (gethostbyaddr_r(addr, length, type, &tsdPtr->hent, tsdPtr->hbuf, sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? &tsdPtr->hent : NULL; #else -- cgit v0.12 From 138c8d79c7b465225b655c4a273b13ffb2b5978c Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 7 Sep 2006 16:29:17 +0000 Subject: * unix/configure: Regenerated using autoconf 2.13. --- ChangeLog | 4 + unix/configure | 19154 +++++++++++++++---------------------------------------- 2 files changed, 5088 insertions(+), 14070 deletions(-) diff --git a/ChangeLog b/ChangeLog index ac58e44..45651a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-09-07 Andreas Kupries + + * unix/configure: Regenerated using autoconf 2.13. + 2006-09-07 Zoran Vasiljevic * unix/tclUnixChan.c Rewritten MT-safe wrappers to diff --git a/unix/configure b/unix/configure index 1b531c4..9e2fd43 100755 --- a/unix/configure +++ b/unix/configure @@ -1,325 +1,54 @@ #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # -# Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 -# -# Initializations. -# +# Defaults: +ac_help= ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="../generic/tcl.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#if HAVE_SYS_TYPES_H -# include -#endif -#if HAVE_SYS_STAT_H -# include -#endif -#if STDC_HEADERS -# include -# include -#else -# if HAVE_STDLIB_H -# include -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include -# endif -# include -#endif -#if HAVE_STRINGS_H -# include -#endif -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif -#if HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS TCL_LIBS MATH_LIBS RANLIB ac_ct_RANLIB AR DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT LIBOBJS TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_PATCH_LEVEL TCL_YEAR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_STUB_LIB_PATH TCL_INCLUDE_SPEC TCL_BUILD_STUB_LIB_SPEC TCL_BUILD_STUB_LIB_PATH TCL_SRC_DIR TCL_DBGX CFG_TCL_SHARED_LIB_SUFFIX CFG_TCL_UNSHARED_LIB_SUFFIX CFG_TCL_EXPORT_FILE_SUFFIX TCL_SHARED_BUILD LD_LIBRARY_PATH_VAR TCL_BUILD_LIB_SPEC TCL_NEEDS_EXP_FILE TCL_BUILD_EXP_FILE TCL_EXP_FILE TCL_LIB_VERSIONS_OK TCL_SHARED_LIB_SUFFIX TCL_UNSHARED_LIB_SUFFIX TCL_HAS_LONGLONG BUILD_DLTEST TCL_PACKAGE_PATH TCL_LIBRARY PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML LTLIBOBJS' -ac_subst_files='' +# Any additions from configure.in: +ac_help="$ac_help + --enable-man-symlinks use symlinks for the manpages" +ac_help="$ac_help + --enable-man-compression=PROG + compress the manpages with PROG" +ac_help="$ac_help + --enable-man-suffix=STRING + use STRING as a suffix to manpage file names + (default: tcl)" +ac_help="$ac_help + --enable-threads build with threads" +ac_help="$ac_help + --enable-shared build and link with shared libraries [--enable-shared]" +ac_help="$ac_help + --enable-64bit enable 64bit support (where applicable)" +ac_help="$ac_help + --enable-64bit-vis enable 64bit Sparc VIS support" +ac_help="$ac_help + --enable-corefoundation use CoreFoundation API [--enable-corefoundation]" +ac_help="$ac_help + --disable-load disallow dynamic loading and "load" command" +ac_help="$ac_help + --enable-symbols build with debugging symbols [--disable-symbols]" +ac_help="$ac_help + --enable-langinfo use nl_langinfo if possible to determine + encoding at startup, otherwise use old heuristic" +ac_help="$ac_help + --enable-framework package shared libraries in MacOSX frameworks [--disable-framework]" # Initialize some variables set by options. -ac_init_help= -ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. -cache_file=/dev/null +build=NONE +cache_file=./config.cache exec_prefix=NONE +host=NONE no_create= +nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE @@ -328,15 +57,10 @@ program_transform_name=s,x,x, silent= site= srcdir= +target=NONE verbose= x_includes=NONE x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' @@ -350,9 +74,17 @@ oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + ac_prev= for ac_option do + # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" @@ -360,59 +92,59 @@ do continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case "$ac_option" in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; + bindir="$ac_optarg" ;; -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; + ac_prev=build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; + build="$ac_optarg" ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; + cache_file="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) - datadir=$ac_optarg ;; + datadir="$ac_optarg" ;; -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; *) ac_optarg=yes ;; esac - eval "enable_$ac_feature='$ac_optarg'" ;; + eval "enable_${ac_feature}='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -421,47 +153,95 @@ do -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; + exec_prefix="$ac_optarg" ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; -host | --host | --hos | --ho) - ac_prev=host_alias ;; + ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; + host="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; + includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; + infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; + libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; + libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ @@ -470,19 +250,19 @@ do -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; + localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; + mandir="$ac_optarg" ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) + | --no-cr | --no-c) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ @@ -496,26 +276,26 @@ do -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; + oldincludedir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; + prefix="$ac_optarg" ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; + program_prefix="$ac_optarg" ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; + program_suffix="$ac_optarg" ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ @@ -532,7 +312,7 @@ do | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; + program_transform_name="$ac_optarg" ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) @@ -542,7 +322,7 @@ do ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; + sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ @@ -553,57 +333,58 @@ do | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; + sharedstatedir="$ac_optarg" ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) - site=$ac_optarg ;; + site="$ac_optarg" ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; + srcdir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; + sysconfdir="$ac_optarg" ;; -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; + ac_prev=target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; + target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + case "$ac_option" in + *=*) ;; *) ac_optarg=yes ;; esac - eval "with_$ac_package='$ac_optarg'" ;; + eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; --x) # Obsolete; use --with-x. @@ -614,110 +395,99 @@ do ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; + x_includes="$ac_optarg" ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; + x_libraries="$ac_optarg" ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" ;; esac done if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi -test "$silent" = yes && exec 6>/dev/null +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=../generic/tcl.h # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. @@ -727,474 +497,13 @@ else fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-man-symlinks use symlinks for the manpages - --enable-man-compression=PROG - compress the manpages with PROG - --enable-man-suffix=STRING - use STRING as a suffix to manpage file names - (default: tcl) - --enable-threads build with threads - --enable-shared build and link with shared libraries --enable-shared - --enable-64bit enable 64bit support (where applicable) - --enable-64bit-vis enable 64bit Sparc VIS support - --enable-corefoundation use CoreFoundation API --enable-corefoundation - --disable-load disallow dynamic loading and "load" command - --enable-symbols build with debugging symbols --disable-symbols - --enable-langinfo use nl_langinfo if possible to determine - encoding at startup, otherwise use old heuristic - --enable-framework package shared libraries in MacOSX frameworks --disable-framework - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF - -Copyright (C) 2003 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then @@ -1205,103 +514,39 @@ if test -z "$CONFIG_SITE"; then fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 + echo "loading site script $ac_site_file" . "$ac_site_file" fi done if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi + echo "loading cache $cache_file" + . $cache_file else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } + echo "creating cache $cache_file" + > $cache_file fi ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi @@ -1331,49 +576,46 @@ TCL_SRC_DIR=`cd $srcdir/..; pwd` #------------------------------------------------------------------------ - echo "$as_me:$LINENO: checking whether to use symlinks for manpages" >&5 -echo $ECHO_N "checking whether to use symlinks for manpages... $ECHO_C" >&6 + echo $ac_n "checking whether to use symlinks for manpages""... $ac_c" 1>&6 +echo "configure:581: checking whether to use symlinks for manpages" >&5 # Check whether --enable-man-symlinks or --disable-man-symlinks was given. if test "${enable_man_symlinks+set}" = set; then enableval="$enable_man_symlinks" test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks" else enableval="no" -fi; - echo "$as_me:$LINENO: result: $enableval" >&5 -echo "${ECHO_T}$enableval" >&6 +fi + + echo "$ac_t""$enableval" 1>&6 - echo "$as_me:$LINENO: checking whether to compress the manpages" >&5 -echo $ECHO_N "checking whether to compress the manpages... $ECHO_C" >&6 + echo $ac_n "checking whether to compress the manpages""... $ac_c" 1>&6 +echo "configure:593: checking whether to compress the manpages" >&5 # Check whether --enable-man-compression or --disable-man-compression was given. if test "${enable_man_compression+set}" = set; then enableval="$enable_man_compression" case $enableval in - yes) { { echo "$as_me:$LINENO: error: missing argument to --enable-man-compression" >&5 -echo "$as_me: error: missing argument to --enable-man-compression" >&2;} - { (exit 1); exit 1; }; };; + yes) { echo "configure: error: missing argument to --enable-man-compression" 1>&2; exit 1; };; no) ;; *) MAN_FLAGS="$MAN_FLAGS --compress $enableval";; esac else enableval="no" -fi; - echo "$as_me:$LINENO: result: $enableval" >&5 -echo "${ECHO_T}$enableval" >&6 +fi + + echo "$ac_t""$enableval" 1>&6 if test "$enableval" != "no"; then - echo "$as_me:$LINENO: checking for compressed file suffix" >&5 -echo $ECHO_N "checking for compressed file suffix... $ECHO_C" >&6 + echo $ac_n "checking for compressed file suffix""... $ac_c" 1>&6 +echo "configure:609: checking for compressed file suffix" >&5 touch TeST $enableval TeST Z=`ls TeST* | sed 's/^....//'` rm -f TeST* MAN_FLAGS="$MAN_FLAGS --extension $Z" - echo "$as_me:$LINENO: result: $Z" >&5 -echo "${ECHO_T}$Z" >&6 + echo "$ac_t""$Z" 1>&6 fi - echo "$as_me:$LINENO: checking whether to add a package name suffix for the manpages" >&5 -echo $ECHO_N "checking whether to add a package name suffix for the manpages... $ECHO_C" >&6 + echo $ac_n "checking whether to add a package name suffix for the manpages""... $ac_c" 1>&6 +echo "configure:619: checking whether to add a package name suffix for the manpages" >&5 # Check whether --enable-man-suffix or --disable-man-suffix was given. if test "${enable_man_suffix+set}" = set; then enableval="$enable_man_suffix" @@ -1384,11 +626,11 @@ if test "${enable_man_suffix+set}" = set; then esac else enableval="no" -fi; - echo "$as_me:$LINENO: result: $enableval" >&5 -echo "${ECHO_T}$enableval" >&6 +fi + echo "$ac_t""$enableval" 1>&6 + #------------------------------------------------------------------------ @@ -1401,659 +643,214 @@ if test "${CFLAGS+set}" != "set" ; then CFLAGS="" fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:650: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" fi fi -CC=$ac_cv_prog_CC +CC="$ac_cv_prog_CC" if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + echo "$ac_t""$CC" 1>&6 else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" + echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:680: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift - if test $# != 0; then + if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" fi fi fi fi -CC=$ac_cv_prog_CC +CC="$ac_cv_prog_CC" if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + echo "$ac_t""$CC" 1>&6 else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + echo "$ac_t""no" 1>&6 fi -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:731: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" fi fi -CC=$ac_cv_prog_CC +CC="$ac_cv_prog_CC" if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + echo "$ac_t""$CC" 1>&6 else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + echo "$ac_t""no" 1>&6 fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 + ;; + esac fi -done -done - -fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:763: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; - * ) - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 774 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi + ac_cv_prog_cc_cross=yes fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross -rm -f conftest.$ac_cv_objext conftest.$ac_ext +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:805: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross -int -main () -{ -#ifndef __GNUC__ - choke me +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:810: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes +if test $ac_cv_prog_gcc = yes; then + GCC=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + GCC= +fi -ac_cv_prog_cc_g=no +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:838: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* + fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS + CFLAGS="$ac_save_CFLAGS" elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" @@ -2067,269 +864,6 @@ else CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu #-------------------------------------------------------------------- @@ -2341,513 +875,99 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Do this early, otherwise an autoconf bug throws errors on configure #-------------------------------------------------------------------- - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:880: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:901: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then : else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then : else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - - -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then : else - ac_cv_header_stdc=no + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp fi rm -f conftest* - fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no +rm -f conftest* fi rm -f conftest* - + ac_cv_prog_CPP="$CPP" fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : + CPP="$ac_cv_prog_CPP" else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - + ac_cv_prog_CPP="$CPP" fi +echo "$ac_t""$CPP" 1>&6 -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - echo "$as_me:$LINENO: checking dirent.h" >&5 -echo $ECHO_N "checking dirent.h... $ECHO_C" >&6 -if test "${tcl_cv_dirent_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking dirent.h""... $ac_c" 1>&6 +echo "configure:961: checking dirent.h" >&5 +if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < #include -int -main () -{ +int main() { #ifndef _POSIX_SOURCE # ifdef __Lynx__ @@ -2867,1018 +987,320 @@ entryPtr = readdir(d); p = entryPtr->d_name; closedir(d); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* tcl_cv_dirent_h=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_dirent_h=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_dirent_h=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_dirent_h" >&5 -echo "${ECHO_T}$tcl_cv_dirent_h" >&6 + +echo "$ac_t""$tcl_cv_dirent_h" 1>&6 if test $tcl_cv_dirent_h = no; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define NO_DIRENT_H 1 -_ACEOF +EOF fi - if test "${ac_cv_header_errno_h+set}" = set; then - echo "$as_me:$LINENO: checking for errno.h" >&5 -echo $ECHO_N "checking for errno.h... $ECHO_C" >&6 -if test "${ac_cv_header_errno_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5 -echo "${ECHO_T}$ac_cv_header_errno_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking errno.h usability" >&5 -echo $ECHO_N "checking errno.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking errno.h presence" >&5 -echo $ECHO_N "checking errno.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: errno.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: errno.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: errno.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: errno.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: errno.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: errno.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: errno.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: errno.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: errno.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: errno.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: errno.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: errno.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for errno.h" >&5 -echo $ECHO_N "checking for errno.h... $ECHO_C" >&6 -if test "${ac_cv_header_errno_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for errno.h""... $ac_c" 1>&6 +echo "configure:1016: checking for errno.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_cv_header_errno_h=$ac_header_preproc + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5 -echo "${ECHO_T}$ac_cv_header_errno_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_errno_h = yes; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_ERRNO_H 1 -_ACEOF +EOF fi - - if test "${ac_cv_header_float_h+set}" = set; then - echo "$as_me:$LINENO: checking for float.h" >&5 -echo $ECHO_N "checking for float.h... $ECHO_C" >&6 -if test "${ac_cv_header_float_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_float_h" >&5 -echo "${ECHO_T}$ac_cv_header_float_h" >&6 + ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for float.h""... $ac_c" 1>&6 +echo "configure:1053: checking for float.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - # Is the header compilable? -echo "$as_me:$LINENO: checking float.h usability" >&5 -echo $ECHO_N "checking float.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default + cat > conftest.$ac_ext < -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking float.h presence" >&5 -echo $ECHO_N "checking float.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: float.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: float.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: float.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: float.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: float.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: float.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: float.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: float.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: float.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: float.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: float.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: float.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: float.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: float.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: float.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: float.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for float.h" >&5 -echo $ECHO_N "checking for float.h... $ECHO_C" >&6 -if test "${ac_cv_header_float_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_float_h=$ac_header_preproc +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1063: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -echo "$as_me:$LINENO: result: $ac_cv_header_float_h" >&5 -echo "${ECHO_T}$ac_cv_header_float_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_float_h = yes; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_FLOAT_H 1 -_ACEOF +EOF fi - - if test "${ac_cv_header_values_h+set}" = set; then - echo "$as_me:$LINENO: checking for values.h" >&5 -echo $ECHO_N "checking for values.h... $ECHO_C" >&6 -if test "${ac_cv_header_values_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_values_h" >&5 -echo "${ECHO_T}$ac_cv_header_values_h" >&6 + ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for values.h""... $ac_c" 1>&6 +echo "configure:1090: checking for values.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - # Is the header compilable? -echo "$as_me:$LINENO: checking values.h usability" >&5 -echo $ECHO_N "checking values.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default + cat > conftest.$ac_ext < -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking values.h presence" >&5 -echo $ECHO_N "checking values.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1100: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: values.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: values.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: values.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: values.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: values.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: values.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: values.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: values.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: values.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: values.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: values.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: values.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: values.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: values.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: values.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: values.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for values.h" >&5 -echo $ECHO_N "checking for values.h... $ECHO_C" >&6 -if test "${ac_cv_header_values_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_values_h=$ac_header_preproc -fi -echo "$as_me:$LINENO: result: $ac_cv_header_values_h" >&5 -echo "${ECHO_T}$ac_cv_header_values_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_values_h = yes; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_VALUES_H 1 -_ACEOF +EOF fi - - if test "${ac_cv_header_limits_h+set}" = set; then - echo "$as_me:$LINENO: checking for limits.h" >&5 -echo $ECHO_N "checking for limits.h... $ECHO_C" >&6 -if test "${ac_cv_header_limits_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5 -echo "${ECHO_T}$ac_cv_header_limits_h" >&6 + ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for limits.h""... $ac_c" 1>&6 +echo "configure:1127: checking for limits.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - # Is the header compilable? -echo "$as_me:$LINENO: checking limits.h usability" >&5 -echo $ECHO_N "checking limits.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking limits.h presence" >&5 -echo $ECHO_N "checking limits.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: limits.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: limits.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: limits.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: limits.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: limits.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: limits.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: limits.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: limits.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: limits.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: limits.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for limits.h" >&5 -echo $ECHO_N "checking for limits.h... $ECHO_C" >&6 -if test "${ac_cv_header_limits_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_limits_h=$ac_header_preproc -fi -echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5 -echo "${ECHO_T}$ac_cv_header_limits_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_limits_h = yes; then - cat >>confdefs.h <<\_ACEOF +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF #define HAVE_LIMITS_H 1 -_ACEOF +EOF else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_LIMITS_H 1 -_ACEOF +EOF fi - - if test "${ac_cv_header_stdlib_h+set}" = set; then - echo "$as_me:$LINENO: checking for stdlib.h" >&5 -echo $ECHO_N "checking for stdlib.h... $ECHO_C" >&6 -if test "${ac_cv_header_stdlib_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5 -echo "${ECHO_T}$ac_cv_header_stdlib_h" >&6 + ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 +echo "configure:1167: checking for stdlib.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - # Is the header compilable? -echo "$as_me:$LINENO: checking stdlib.h usability" >&5 -echo $ECHO_N "checking stdlib.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking stdlib.h presence" >&5 -echo $ECHO_N "checking stdlib.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: stdlib.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: stdlib.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: stdlib.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: stdlib.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: stdlib.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: stdlib.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: stdlib.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: stdlib.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: stdlib.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: stdlib.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: stdlib.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: stdlib.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for stdlib.h" >&5 -echo $ECHO_N "checking for stdlib.h... $ECHO_C" >&6 -if test "${ac_cv_header_stdlib_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_stdlib_h=$ac_header_preproc -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5 -echo "${ECHO_T}$ac_cv_header_stdlib_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_stdlib_h = yes; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=1 else - tcl_ok=0 + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < - -_ACEOF +EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strtol" >/dev/null 2>&1; then + egrep "strtol" >/dev/null 2>&1; then : else + rm -rf conftest* tcl_ok=0 fi rm -f conftest* - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < - -_ACEOF +EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strtoul" >/dev/null 2>&1; then + egrep "strtoul" >/dev/null 2>&1; then : else + rm -rf conftest* tcl_ok=0 fi rm -f conftest* - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < - -_ACEOF +EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strtod" >/dev/null 2>&1; then + egrep "strtod" >/dev/null 2>&1; then : else + rm -rf conftest* tcl_ok=0 fi rm -f conftest* if test $tcl_ok = 0; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define NO_STDLIB_H 1 -_ACEOF - - fi - if test "${ac_cv_header_string_h+set}" = set; then - echo "$as_me:$LINENO: checking for string.h" >&5 -echo $ECHO_N "checking for string.h... $ECHO_C" >&6 -if test "${ac_cv_header_string_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5 -echo "${ECHO_T}$ac_cv_header_string_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking string.h usability" >&5 -echo $ECHO_N "checking string.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking string.h presence" >&5 -echo $ECHO_N "checking string.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: string.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: string.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: string.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: string.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: string.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: string.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: string.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: string.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: string.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: string.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: string.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: string.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: string.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: string.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for string.h" >&5 -echo $ECHO_N "checking for string.h... $ECHO_C" >&6 -if test "${ac_cv_header_string_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_string_h=$ac_header_preproc -fi -echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5 -echo "${ECHO_T}$ac_cv_header_string_h" >&6 +EOF + fi + ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for string.h""... $ac_c" 1>&6 +echo "configure:1249: checking for string.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* fi -if test $ac_cv_header_string_h = yes; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=1 else - tcl_ok=0 + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < - -_ACEOF +EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strstr" >/dev/null 2>&1; then + egrep "strstr" >/dev/null 2>&1; then : else + rm -rf conftest* tcl_ok=0 fi rm -f conftest* - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < - -_ACEOF +EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strerror" >/dev/null 2>&1; then + egrep "strerror" >/dev/null 2>&1; then : else + rm -rf conftest* tcl_ok=0 fi rm -f conftest* @@ -3888,457 +1310,126 @@ rm -f conftest* # set and why. if test $tcl_ok = 0; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define NO_STRING_H 1 -_ACEOF +EOF fi - if test "${ac_cv_header_sys_wait_h+set}" = set; then - echo "$as_me:$LINENO: checking for sys/wait.h" >&5 -echo $ECHO_N "checking for sys/wait.h... $ECHO_C" >&6 -if test "${ac_cv_header_sys_wait_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking sys/wait.h usability" >&5 -echo $ECHO_N "checking sys/wait.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking sys/wait.h presence" >&5 -echo $ECHO_N "checking sys/wait.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: sys/wait.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: sys/wait.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: sys/wait.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: sys/wait.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: sys/wait.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: sys/wait.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: sys/wait.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: sys/wait.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: sys/wait.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: sys/wait.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: sys/wait.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: sys/wait.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: sys/wait.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: sys/wait.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: sys/wait.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: sys/wait.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for sys/wait.h" >&5 -echo $ECHO_N "checking for sys/wait.h... $ECHO_C" >&6 -if test "${ac_cv_header_sys_wait_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 +echo "configure:1322: checking for sys/wait.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_cv_header_sys_wait_h=$ac_header_preproc + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_sys_wait_h = yes; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_SYS_WAIT_H 1 -_ACEOF +EOF fi - - if test "${ac_cv_header_dlfcn_h+set}" = set; then - echo "$as_me:$LINENO: checking for dlfcn.h" >&5 -echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 -if test "${ac_cv_header_dlfcn_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 -echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 + ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 +echo "configure:1359: checking for dlfcn.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - # Is the header compilable? -echo "$as_me:$LINENO: checking dlfcn.h usability" >&5 -echo $ECHO_N "checking dlfcn.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking dlfcn.h presence" >&5 -echo $ECHO_N "checking dlfcn.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: dlfcn.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: dlfcn.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: dlfcn.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: dlfcn.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: dlfcn.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for dlfcn.h" >&5 -echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 -if test "${ac_cv_header_dlfcn_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_dlfcn_h=$ac_header_preproc -fi -echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 -echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_dlfcn_h = yes; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_DLFCN_H 1 -_ACEOF +EOF fi - # OS/390 lacks sys/param.h (and doesn't need it, by chance). - - -for ac_header in unistd.h sys/param.h + for ac_hdr in unistd.h sys/param.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1400: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1410: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +rm -f conftest* fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - + echo "$ac_t""no" 1>&6 fi - done @@ -4350,59 +1441,30 @@ done if test -z "$no_pipe"; then if test -n "$GCC"; then - echo "$as_me:$LINENO: checking if the compiler understands -pipe" >&5 -echo $ECHO_N "checking if the compiler understands -pipe... $ECHO_C" >&6 - OLDCC="$CC" + echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 +echo "configure:1446: checking if the compiler understands -pipe" >&5 + OLDCC="$CC" CC="$CC -pipe" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ + cat > conftest.$ac_ext <&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -CC="$OLDCC" - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +int main() { + +; return 0; } +EOF +if { (eval echo configure:1457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CC="$OLDCC" + echo "$ac_t""no" 1>&6 fi +rm -f conftest* +fi fi #------------------------------------------------------------------------ @@ -4416,7 +1478,8 @@ if test "${enable_threads+set}" = set; then tcl_ok=$enableval else tcl_ok=no -fi; +fi + if test "${TCL_THREADS}" = 1; then tcl_threaded_core=1; @@ -4426,92 +1489,63 @@ fi; TCL_THREADS=1 # USE_THREAD_ALLOC tells us to try the special thread-based # allocator that significantly reduces lock contention - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define USE_THREAD_ALLOC 1 -_ACEOF +EOF - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _REENTRANT 1 -_ACEOF +EOF if test "`uname -s`" = "SunOS" ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _POSIX_PTHREAD_SEMANTICS 1 -_ACEOF +EOF fi - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _THREAD_SAFE 1 -_ACEOF +EOF - echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthread" >&5 -echo $ECHO_N "checking for pthread_mutex_init in -lpthread... $ECHO_C" >&6 -if test "${ac_cv_lib_pthread_pthread_mutex_init+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 +echo "configure:1512: checking for pthread_mutex_init in -lpthread" >&5 +ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_pthread_pthread_mutex_init=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_pthread_pthread_mutex_init=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_init" >&5 -echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_init" >&6 -if test $ac_cv_lib_pthread_pthread_mutex_init = yes; then + builtin and then its argument prototype would still apply. */ +char pthread_mutex_init(); + +int main() { +pthread_mutex_init() +; return 0; } +EOF +if { (eval echo configure:1531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=yes else - tcl_ok=no + echo "$ac_t""no" 1>&6 +tcl_ok=no fi if test "$tcl_ok" = "no"; then @@ -4520,74 +1554,45 @@ fi # defined. We could alternatively do an AC_TRY_COMPILE with # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] - echo "$as_me:$LINENO: checking for __pthread_mutex_init in -lpthread" >&5 -echo $ECHO_N "checking for __pthread_mutex_init in -lpthread... $ECHO_C" >&6 -if test "${ac_cv_lib_pthread___pthread_mutex_init+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 +echo "configure:1559: checking for __pthread_mutex_init in -lpthread" >&5 +ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_pthread___pthread_mutex_init=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_pthread___pthread_mutex_init=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pthread___pthread_mutex_init" >&5 -echo "${ECHO_T}$ac_cv_lib_pthread___pthread_mutex_init" >&6 -if test $ac_cv_lib_pthread___pthread_mutex_init = yes; then + builtin and then its argument prototype would still apply. */ +char __pthread_mutex_init(); + +int main() { +__pthread_mutex_init() +; return 0; } +EOF +if { (eval echo configure:1578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=yes else - tcl_ok=no + echo "$ac_t""no" 1>&6 +tcl_ok=no fi fi @@ -4596,219 +1601,132 @@ fi # The space is needed THREADS_LIBS=" -lpthread" else - echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthreads" >&5 -echo $ECHO_N "checking for pthread_mutex_init in -lpthreads... $ECHO_C" >&6 -if test "${ac_cv_lib_pthreads_pthread_mutex_init+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 +echo "configure:1606: checking for pthread_mutex_init in -lpthreads" >&5 +ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_pthreads_pthread_mutex_init=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_pthreads_pthread_mutex_init=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pthreads_pthread_mutex_init" >&5 -echo "${ECHO_T}$ac_cv_lib_pthreads_pthread_mutex_init" >&6 -if test $ac_cv_lib_pthreads_pthread_mutex_init = yes; then + builtin and then its argument prototype would still apply. */ +char pthread_mutex_init(); + +int main() { +pthread_mutex_init() +; return 0; } +EOF +if { (eval echo configure:1625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=yes else - tcl_ok=no + echo "$ac_t""no" 1>&6 +tcl_ok=no fi if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -lpthreads" else - echo "$as_me:$LINENO: checking for pthread_mutex_init in -lc" >&5 -echo $ECHO_N "checking for pthread_mutex_init in -lc... $ECHO_C" >&6 -if test "${ac_cv_lib_c_pthread_mutex_init+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 +echo "configure:1651: checking for pthread_mutex_init in -lc" >&5 +ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_c_pthread_mutex_init=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_c_pthread_mutex_init=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_c_pthread_mutex_init" >&5 -echo "${ECHO_T}$ac_cv_lib_c_pthread_mutex_init" >&6 -if test $ac_cv_lib_c_pthread_mutex_init = yes; then + builtin and then its argument prototype would still apply. */ +char pthread_mutex_init(); + +int main() { +pthread_mutex_init() +; return 0; } +EOF +if { (eval echo configure:1670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=yes else - tcl_ok=no + echo "$ac_t""no" 1>&6 +tcl_ok=no fi if test "$tcl_ok" = "no"; then - echo "$as_me:$LINENO: checking for pthread_mutex_init in -lc_r" >&5 -echo $ECHO_N "checking for pthread_mutex_init in -lc_r... $ECHO_C" >&6 -if test "${ac_cv_lib_c_r_pthread_mutex_init+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 +echo "configure:1693: checking for pthread_mutex_init in -lc_r" >&5 +ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_c_r_pthread_mutex_init=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_c_r_pthread_mutex_init=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_c_r_pthread_mutex_init" >&5 -echo "${ECHO_T}$ac_cv_lib_c_r_pthread_mutex_init" >&6 -if test $ac_cv_lib_c_r_pthread_mutex_init = yes; then + builtin and then its argument prototype would still apply. */ +char pthread_mutex_init(); + +int main() { +pthread_mutex_init() +; return 0; } +EOF +if { (eval echo configure:1712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=yes else - tcl_ok=no + echo "$ac_t""no" 1>&6 +tcl_ok=no fi if test "$tcl_ok" = "yes"; then @@ -4816,8 +1734,7 @@ fi THREADS_LIBS=" -pthread" else TCL_THREADS=0 - { echo "$as_me:$LINENO: WARNING: Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..." >&5 -echo "$as_me: WARNING: Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..." >&2;} + echo "configure: warning: Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..." 1>&2 fi fi fi @@ -4828,207 +1745,113 @@ echo "$as_me: WARNING: Don't know how to find pthread lib on your system - you m ac_saved_libs=$LIBS LIBS="$LIBS $THREADS_LIBS" - -for ac_func in pthread_attr_setstacksize + for ac_func in pthread_attr_setstacksize do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1752: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - + which can conflict with char $ac_func(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} +$ac_func(); #endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +; return 0; } +EOF +if { (eval echo configure:1780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi done - -for ac_func in pthread_atfork + for ac_func in pthread_atfork do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1807: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - + which can conflict with char $ac_func(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} +$ac_func(); #endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +; return 0; } +EOF +if { (eval echo configure:1835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi done @@ -5037,27 +1860,23 @@ done TCL_THREADS=0 fi # Do checking message here to not mess up interleaved configure output - echo "$as_me:$LINENO: checking for building with threads" >&5 -echo $ECHO_N "checking for building with threads... $ECHO_C" >&6 + echo $ac_n "checking for building with threads""... $ac_c" 1>&6 +echo "configure:1865: checking for building with threads" >&5 if test "${TCL_THREADS}" = 1; then - -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define TCL_THREADS 1 -_ACEOF +EOF if test "${tcl_threaded_core}" = 1; then - echo "$as_me:$LINENO: result: yes (threaded core)" >&5 -echo "${ECHO_T}yes (threaded core)" >&6 + echo "$ac_t""yes (threaded core)" 1>&6 else - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + echo "$ac_t""yes" 1>&6 fi else - echo "$as_me:$LINENO: result: no (default)" >&5 -echo "${ECHO_T}no (default)" >&6 + echo "$ac_t""no (default)" 1>&6 fi - + #-------------------------------------------------------------------- @@ -5072,162 +1891,89 @@ echo "${ECHO_T}no (default)" >&6 # right (and it must appear before "-lm"). #-------------------------------------------------------------------- - echo "$as_me:$LINENO: checking for sin" >&5 -echo $ECHO_N "checking for sin... $ECHO_C" >&6 -if test "${ac_cv_func_sin+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define sin to an innocuous variant, in case declares sin. - For example, HP-UX 11i declares gettimeofday. */ -#define sin innocuous_sin - + echo $ac_n "checking for sin""... $ac_c" 1>&6 +echo "configure:1896: checking for sin" >&5 +if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef sin - + which can conflict with char sin(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char sin (); + builtin and then its argument prototype would still apply. */ +char sin(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_sin) || defined (__stub___sin) choke me #else -char (*f) () = sin; -#endif -#ifdef __cplusplus -} +sin(); #endif -int -main () -{ -return f != sin; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_sin=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_sin=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_sin" >&5 -echo "${ECHO_T}$ac_cv_func_sin" >&6 -if test $ac_cv_func_sin = yes; then +; return 0; } +EOF +if { (eval echo configure:1924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_sin=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_sin=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then + echo "$ac_t""yes" 1>&6 MATH_LIBS="" else - MATH_LIBS="-lm" + echo "$ac_t""no" 1>&6 +MATH_LIBS="-lm" fi - echo "$as_me:$LINENO: checking for main in -lieee" >&5 -echo $ECHO_N "checking for main in -lieee... $ECHO_C" >&6 -if test "${ac_cv_lib_ieee_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 +echo "configure:1945: checking for main in -lieee" >&5 +ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_ieee_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_ieee_main=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_ieee_main" >&5 -echo "${ECHO_T}$ac_cv_lib_ieee_main" >&6 -if test $ac_cv_lib_ieee_main = yes; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 MATH_LIBS="-lieee $MATH_LIBS" +else + echo "$ac_t""no" 1>&6 fi @@ -5236,214 +1982,79 @@ fi # needs net/errno.h to define the socket-related error codes. #-------------------------------------------------------------------- - echo "$as_me:$LINENO: checking for main in -linet" >&5 -echo $ECHO_N "checking for main in -linet... $ECHO_C" >&6 -if test "${ac_cv_lib_inet_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 +echo "configure:1987: checking for main in -linet" >&5 +ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_inet_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_inet_main=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_inet_main" >&5 -echo "${ECHO_T}$ac_cv_lib_inet_main" >&6 -if test $ac_cv_lib_inet_main = yes; then - LIBS="$LIBS -linet" +int main() { +main() +; return 0; } +EOF +if { (eval echo configure:2002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" fi +rm -f conftest* +LIBS="$ac_save_LIBS" - if test "${ac_cv_header_net_errno_h+set}" = set; then - echo "$as_me:$LINENO: checking for net/errno.h" >&5 -echo $ECHO_N "checking for net/errno.h... $ECHO_C" >&6 -if test "${ac_cv_header_net_errno_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_net_errno_h" >&5 -echo "${ECHO_T}$ac_cv_header_net_errno_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking net/errno.h usability" >&5 -echo $ECHO_N "checking net/errno.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking net/errno.h presence" >&5 -echo $ECHO_N "checking net/errno.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -linet" else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no + echo "$ac_t""no" 1>&6 fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: net/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: net/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: net/errno.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: net/errno.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: net/errno.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: net/errno.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: net/errno.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: net/errno.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: net/errno.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: net/errno.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: net/errno.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: net/errno.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: net/errno.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: net/errno.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: net/errno.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: net/errno.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for net/errno.h" >&5 -echo $ECHO_N "checking for net/errno.h... $ECHO_C" >&6 -if test "${ac_cv_header_net_errno_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 +echo "configure:2024: checking for net/errno.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_cv_header_net_errno_h=$ac_header_preproc + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -echo "$as_me:$LINENO: result: $ac_cv_header_net_errno_h" >&5 -echo "${ECHO_T}$ac_cv_header_net_errno_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_net_errno_h = yes; then - cat >>confdefs.h <<\_ACEOF +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF #define HAVE_NET_ERRNO_H 1 -_ACEOF +EOF +else + echo "$ac_t""no" 1>&6 fi - #-------------------------------------------------------------------- # Check for the existence of the -lsocket and -lnsl libraries. # The order here is important, so that they end up in the right @@ -5463,264 +2074,141 @@ fi #-------------------------------------------------------------------- tcl_checkBoth=0 - echo "$as_me:$LINENO: checking for connect" >&5 -echo $ECHO_N "checking for connect... $ECHO_C" >&6 -if test "${ac_cv_func_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define connect to an innocuous variant, in case declares connect. - For example, HP-UX 11i declares gettimeofday. */ -#define connect innocuous_connect - + echo $ac_n "checking for connect""... $ac_c" 1>&6 +echo "configure:2079: checking for connect" >&5 +if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef connect - + which can conflict with char connect(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char connect (); + builtin and then its argument prototype would still apply. */ +char connect(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_connect) || defined (__stub___connect) choke me #else -char (*f) () = connect; -#endif -#ifdef __cplusplus -} +connect(); #endif -int -main () -{ -return f != connect; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_connect=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_connect=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 -echo "${ECHO_T}$ac_cv_func_connect" >&6 -if test $ac_cv_func_connect = yes; then +; return 0; } +EOF +if { (eval echo configure:2107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_connect=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_connect=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_checkSocket=0 else - tcl_checkSocket=1 + echo "$ac_t""no" 1>&6 +tcl_checkSocket=1 fi if test "$tcl_checkSocket" = 1; then - echo "$as_me:$LINENO: checking for setsockopt" >&5 -echo $ECHO_N "checking for setsockopt... $ECHO_C" >&6 -if test "${ac_cv_func_setsockopt+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define setsockopt to an innocuous variant, in case declares setsockopt. - For example, HP-UX 11i declares gettimeofday. */ -#define setsockopt innocuous_setsockopt - + echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 +echo "configure:2129: checking for setsockopt" >&5 +if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef setsockopt - + which can conflict with char setsockopt(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char setsockopt (); + builtin and then its argument prototype would still apply. */ +char setsockopt(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_setsockopt) || defined (__stub___setsockopt) choke me #else -char (*f) () = setsockopt; -#endif -#ifdef __cplusplus -} +setsockopt(); #endif -int -main () -{ -return f != setsockopt; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_setsockopt=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_setsockopt=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_setsockopt" >&5 -echo "${ECHO_T}$ac_cv_func_setsockopt" >&6 -if test $ac_cv_func_setsockopt = yes; then +; return 0; } +EOF +if { (eval echo configure:2157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_setsockopt=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_setsockopt=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - echo "$as_me:$LINENO: checking for setsockopt in -lsocket" >&5 -echo $ECHO_N "checking for setsockopt in -lsocket... $ECHO_C" >&6 -if test "${ac_cv_lib_socket_setsockopt+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 +echo "configure:2175: checking for setsockopt in -lsocket" >&5 +ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char setsockopt (); -int -main () -{ -setsockopt (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_socket_setsockopt=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_socket_setsockopt=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_setsockopt" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_setsockopt" >&6 -if test $ac_cv_lib_socket_setsockopt = yes; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 LIBS="$LIBS -lsocket" else - tcl_checkBoth=1 + echo "$ac_t""no" 1>&6 +tcl_checkBoth=1 fi fi @@ -5729,288 +2217,167 @@ fi if test "$tcl_checkBoth" = 1; then tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" - echo "$as_me:$LINENO: checking for accept" >&5 -echo $ECHO_N "checking for accept... $ECHO_C" >&6 -if test "${ac_cv_func_accept+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define accept to an innocuous variant, in case declares accept. - For example, HP-UX 11i declares gettimeofday. */ -#define accept innocuous_accept - + echo $ac_n "checking for accept""... $ac_c" 1>&6 +echo "configure:2222: checking for accept" >&5 +if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef accept - + which can conflict with char accept(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char accept (); + builtin and then its argument prototype would still apply. */ +char accept(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_accept) || defined (__stub___accept) choke me #else -char (*f) () = accept; -#endif -#ifdef __cplusplus -} +accept(); #endif -int -main () -{ -return f != accept; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_accept=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_accept=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_accept" >&5 -echo "${ECHO_T}$ac_cv_func_accept" >&6 -if test $ac_cv_func_accept = yes; then +; return 0; } +EOF +if { (eval echo configure:2250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_accept=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_accept=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'accept`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_checkNsl=0 else - LIBS=$tk_oldLibs + echo "$ac_t""no" 1>&6 +LIBS=$tk_oldLibs fi fi - echo "$as_me:$LINENO: checking for gethostbyname" >&5 -echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 -if test "${ac_cv_func_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. - For example, HP-UX 11i declares gettimeofday. */ -#define gethostbyname innocuous_gethostbyname - + echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 +echo "configure:2272: checking for gethostbyname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef gethostbyname - + which can conflict with char gethostbyname(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname (); + builtin and then its argument prototype would still apply. */ +char gethostbyname(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else -char (*f) () = gethostbyname; -#endif -#ifdef __cplusplus -} +gethostbyname(); #endif -int -main () -{ -return f != gethostbyname; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_gethostbyname=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 -if test $ac_cv_func_gethostbyname = yes; then +; return 0; } +EOF +if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gethostbyname=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_gethostbyname=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 -echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 -if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 +echo "configure:2318: checking for gethostbyname in -lnsl" >&5 +ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_nsl_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_nsl_gethostbyname=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 -if test $ac_cv_lib_nsl_gethostbyname = yes; then - LIBS="$LIBS -lnsl" + builtin and then its argument prototype would still apply. */ +char gethostbyname(); + +int main() { +gethostbyname() +; return 0; } +EOF +if { (eval echo configure:2337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" fi +rm -f conftest* +LIBS="$ac_save_LIBS" fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lnsl" +else + echo "$ac_t""no" 1>&6 +fi +fi + # Don't perform the eval of the libraries here because DL_LIBS # won't be set until we call SC_CONFIG_CFLAGS TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}' - - + + # Add the threads support libraries LIBS="$LIBS$THREADS_LIBS" - echo "$as_me:$LINENO: checking how to build libraries" >&5 -echo $ECHO_N "checking how to build libraries... $ECHO_C" >&6 + echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 +echo "configure:2373: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" tcl_ok=$enableval else tcl_ok=yes -fi; +fi + if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -6020,16 +2387,14 @@ fi; fi if test "$tcl_ok" = "yes" ; then - echo "$as_me:$LINENO: result: shared" >&5 -echo "${ECHO_T}shared" >&6 + echo "$ac_t""shared" 1>&6 SHARED_BUILD=1 else - echo "$as_me:$LINENO: result: static" >&5 -echo "${ECHO_T}static" >&6 + echo "$ac_t""static" 1>&6 SHARED_BUILD=0 - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define STATIC_BUILD 1 -_ACEOF +EOF fi @@ -6040,115 +2405,65 @@ _ACEOF # after SC_ENABLE_SHARED checks the configure switches. #-------------------------------------------------------------------- -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2412: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" fi fi -RANLIB=$ac_cv_prog_RANLIB +RANLIB="$ac_cv_prog_RANLIB" if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB + echo "$ac_t""$RANLIB" 1>&6 else - RANLIB="$ac_cv_prog_RANLIB" + echo "$ac_t""no" 1>&6 fi # Step 0.a: Enable 64 bit support? - echo "$as_me:$LINENO: checking if 64bit support is requested" >&5 -echo $ECHO_N "checking if 64bit support is requested... $ECHO_C" >&6 + echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 +echo "configure:2444: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" do64bit=$enableval else do64bit=no -fi; - echo "$as_me:$LINENO: result: $do64bit" >&5 -echo "${ECHO_T}$do64bit" >&6 +fi + + echo "$ac_t""$do64bit" 1>&6 # Step 0.b: Enable Solaris 64 bit VIS support? - echo "$as_me:$LINENO: checking if 64bit Sparc VIS support is requested" >&5 -echo $ECHO_N "checking if 64bit Sparc VIS support is requested... $ECHO_C" >&6 + echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 +echo "configure:2458: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" do64bitVIS=$enableval else do64bitVIS=no -fi; - echo "$as_me:$LINENO: result: $do64bitVIS" >&5 -echo "${ECHO_T}$do64bitVIS" >&6 +fi + + echo "$ac_t""$do64bitVIS" 1>&6 if test "$do64bitVIS" = "yes"; then # Force 64bit on with VIS @@ -6158,20 +2473,19 @@ echo "${ECHO_T}$do64bitVIS" >&6 # Step 1: set the variable "system" to hold the name and version number # for the system. - - echo "$as_me:$LINENO: checking system version" >&5 -echo $ECHO_N "checking system version... $ECHO_C" >&6 -if test "${tcl_cv_sys_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + echo $ac_n "checking system version""... $ac_c" 1>&6 +echo "configure:2479: checking system version" >&5 +if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + if test -f /usr/lib/NextStep/software_version; then tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then - { echo "$as_me:$LINENO: WARNING: can't find uname command" >&5 -echo "$as_me: WARNING: can't find uname command" >&2;} + echo "configure: warning: can't find uname command" 1>&2 tcl_cv_sys_version=unknown else # Special check for weird MP-RAS system (uname returns weird @@ -6185,90 +2499,61 @@ echo "$as_me: WARNING: can't find uname command" >&2;} fi fi fi - + fi -echo "$as_me:$LINENO: result: $tcl_cv_sys_version" >&5 -echo "${ECHO_T}$tcl_cv_sys_version" >&6 + +echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version # Step 2: check for existence of -ldl library. This is needed because # Linux can use either -ldl or -ldld for dynamic loading. - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "configure:2514: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then + builtin and then its argument prototype would still apply. */ +char dlopen(); + +int main() { +dlopen() +; return 0; } +EOF +if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 have_dl=yes else - have_dl=no + echo "$ac_t""no" 1>&6 +have_dl=no fi # Require ranlib early so we can override it in special cases below. - + # Step 3: set configuration options based on system name and version. @@ -6291,43 +2576,35 @@ fi TCL_EXP_FILE="" # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2581: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_AR="ar" + break + fi + done + IFS="$ac_save_ifs" fi fi -AR=$ac_cv_prog_AR +AR="$ac_cv_prog_AR" if test -n "$AR"; then - echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 + echo "$ac_t""$AR" 1>&6 else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + echo "$ac_t""no" 1>&6 fi if test "${AR}" = "" ; then - { { echo "$as_me:$LINENO: error: Required archive tool 'ar' not found on PATH." >&5 -echo "$as_me: error: Required archive tool 'ar' not found on PATH." >&2;} - { (exit 1); exit 1; }; } + { echo "configure: error: Required archive tool 'ar' not found on PATH." 1>&2; exit 1; } fi STLIB_LD='${AR} cr' LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" @@ -6345,8 +2622,7 @@ echo "$as_me: error: Required archive tool 'ar' not found on PATH." >&2;} CC=${CC}_r ;; esac - echo "$as_me:$LINENO: result: Using $CC for compiling with threads" >&5 -echo "${ECHO_T}Using $CC for compiling with threads" >&6 + echo "$ac_t""Using $CC for compiling with threads" 1>&6 fi LIBS="$LIBS -lc" SHLIB_CFLAGS="" @@ -6361,9 +2637,8 @@ echo "${ECHO_T}Using $CC for compiling with threads" >&6 # Check to enable 64-bit flags for compiler/linker on AIX 4+ if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then if test "$GCC" = "yes" ; then - { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 -echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} - else + echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 + else do64bit_ok=yes CFLAGS="$CFLAGS -q64" LDFLAGS="$LDFLAGS -q64" @@ -6416,81 +2691,52 @@ echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} # deduce the timezone by comparing the localtime result on a # known GMT value. - echo "$as_me:$LINENO: checking for gettimeofday in -lbsd" >&5 -echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6 -if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 +echo "configure:2696: checking for gettimeofday in -lbsd" >&5 +ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_bsd_gettimeofday=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_bsd_gettimeofday=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gettimeofday" >&5 -echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6 -if test $ac_cv_lib_bsd_gettimeofday = yes; then + builtin and then its argument prototype would still apply. */ +char gettimeofday(); + +int main() { +gettimeofday() +; return 0; } +EOF +if { (eval echo configure:2715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 libbsd=yes else - libbsd=no + echo "$ac_t""no" 1>&6 +libbsd=no fi if test $libbsd = yes; then MATH_LIBS="$MATH_LIBS -lbsd" - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define USE_DELTA_FOR_TZ 1 -_ACEOF +EOF fi ;; @@ -6507,72 +2753,44 @@ _ACEOF # -lsocket, even if the network functions are in -lnet which # is always linked to, for compatibility. #----------------------------------------------------------- - echo "$as_me:$LINENO: checking for inet_ntoa in -lbind" >&5 -echo $ECHO_N "checking for inet_ntoa in -lbind... $ECHO_C" >&6 -if test "${ac_cv_lib_bind_inet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 +echo "configure:2758: checking for inet_ntoa in -lbind" >&5 +ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_bind_inet_ntoa=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_bind_inet_ntoa=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_bind_inet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_lib_bind_inet_ntoa" >&6 -if test $ac_cv_lib_bind_inet_ntoa = yes; then + builtin and then its argument prototype would still apply. */ +char inet_ntoa(); + +int main() { +inet_ntoa() +; return 0; } +EOF +if { (eval echo configure:2777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 LIBS="$LIBS -lbind -lsocket" +else + echo "$ac_t""no" 1>&6 fi ;; @@ -6609,85 +2827,56 @@ fi ;; HP-UX-*.11.*) # Use updated header definitions where possible - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _XOPEN_SOURCE 1 -_ACEOF +EOF # Use the XOPEN network library - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _XOPEN_SOURCE_EXTENDED 1 -_ACEOF +EOF # Use the XOPEN network library LIBS="$LIBS -lxnet" # Use the XOPEN network library SHLIB_SUFFIX=".sl" - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "configure:2843: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then + builtin and then its argument prototype would still apply. */ +char shl_load(); + +int main() { +shl_load() +; return 0; } +EOF +if { (eval echo configure:2862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=yes else - tcl_ok=no + echo "$ac_t""no" 1>&6 +tcl_ok=no fi if test "$tcl_ok" = yes; then @@ -6724,8 +2913,7 @@ fi LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ;; *) - { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 -echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} + echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 ;; esac else @@ -6737,74 +2925,45 @@ echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} ;; HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "configure:2930: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then + builtin and then its argument prototype would still apply. */ +char shl_load(); + +int main() { +shl_load() +; return 0; } +EOF +if { (eval echo configure:2949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=yes else - tcl_ok=no + echo "$ac_t""no" 1>&6 +tcl_ok=no fi if test "$tcl_ok" = yes; then @@ -6880,8 +3039,7 @@ fi if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then - { echo "$as_me:$LINENO: WARNING: 64bit mode not supported by gcc" >&5 -echo "$as_me: WARNING: 64bit mode not supported by gcc" >&2;} + echo "configure: warning: 64bit mode not supported by gcc" 1>&2 else do64bit_ok=yes SHLIB_LD="ld -64 -shared -rdata_shared" @@ -6896,7 +3054,7 @@ echo "$as_me: WARNING: 64bit mode not supported by gcc" >&2;} SHLIB_SUFFIX=".so" CFLAGS_OPTIMIZE=-O2 - # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings + # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings # when you inline the string and math operations. Turn this off to # get rid of the warnings. #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" @@ -6909,153 +3067,44 @@ echo "$as_me: WARNING: 64bit mode not supported by gcc" >&2;} CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} else - if test "${ac_cv_header_dld_h+set}" = set; then - echo "$as_me:$LINENO: checking for dld.h" >&5 -echo $ECHO_N "checking for dld.h... $ECHO_C" >&6 -if test "${ac_cv_header_dld_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_dld_h" >&5 -echo "${ECHO_T}$ac_cv_header_dld_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking dld.h usability" >&5 -echo $ECHO_N "checking dld.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default + ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dld.h""... $ac_c" 1>&6 +echo "configure:3073: checking for dld.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking dld.h presence" >&5 -echo $ECHO_N "checking dld.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: dld.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: dld.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: dld.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: dld.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: dld.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: dld.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: dld.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: dld.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: dld.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: dld.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for dld.h" >&5 -echo $ECHO_N "checking for dld.h... $ECHO_C" >&6 -if test "${ac_cv_header_dld_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_dld_h=$ac_header_preproc +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -echo "$as_me:$LINENO: result: $ac_cv_header_dld_h" >&5 -echo "${ECHO_T}$ac_cv_header_dld_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_dld_h = yes; then - +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SHLIB_LD="ld -shared" DL_OBJS="tclLoadDld.o" DL_LIBS="-ldld" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" +else + echo "$ac_t""no" 1>&6 fi - fi if test "`uname -m`" = "alpha" ; then CFLAGS="$CFLAGS -mieee" @@ -7073,9 +3122,9 @@ fi fi # XIM peeking works under XFree86. - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define PEEK_XCLOSEIM 1 -_ACEOF +EOF ;; @@ -7092,153 +3141,44 @@ _ACEOF CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" else - if test "${ac_cv_header_dld_h+set}" = set; then - echo "$as_me:$LINENO: checking for dld.h" >&5 -echo $ECHO_N "checking for dld.h... $ECHO_C" >&6 -if test "${ac_cv_header_dld_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_dld_h" >&5 -echo "${ECHO_T}$ac_cv_header_dld_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking dld.h usability" >&5 -echo $ECHO_N "checking dld.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking dld.h presence" >&5 -echo $ECHO_N "checking dld.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dld.h""... $ac_c" 1>&6 +echo "configure:3147: checking for dld.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: dld.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: dld.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: dld.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: dld.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: dld.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: dld.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: dld.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: dld.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: dld.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: dld.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: dld.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for dld.h" >&5 -echo $ECHO_N "checking for dld.h... $ECHO_C" >&6 -if test "${ac_cv_header_dld_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_dld_h=$ac_header_preproc +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3157: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -echo "$as_me:$LINENO: result: $ac_cv_header_dld_h" >&5 -echo "${ECHO_T}$ac_cv_header_dld_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_dld_h = yes; then - +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SHLIB_LD="ld -shared" DL_OBJS="" DL_LIBS="-ldld" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" +else + echo "$ac_t""no" 1>&6 fi - fi if test "`uname -m`" = "alpha" ; then CFLAGS="$CFLAGS -mieee" @@ -7279,145 +3219,35 @@ fi ;; NetBSD-*|FreeBSD-[1-2].*) # Not available on all versions: check for include file. - if test "${ac_cv_header_dlfcn_h+set}" = set; then - echo "$as_me:$LINENO: checking for dlfcn.h" >&5 -echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 -if test "${ac_cv_header_dlfcn_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 -echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking dlfcn.h usability" >&5 -echo $ECHO_N "checking dlfcn.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default + ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 +echo "configure:3225: checking for dlfcn.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking dlfcn.h presence" >&5 -echo $ECHO_N "checking dlfcn.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: dlfcn.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: dlfcn.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: dlfcn.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: dlfcn.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: dlfcn.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for dlfcn.h" >&5 -echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6 -if test "${ac_cv_header_dlfcn_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_dlfcn_h=$ac_header_preproc +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5 -echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_dlfcn_h = yes; then - +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + # NetBSD/SPARC needs -fPIC, -fpic will not do. SHLIB_CFLAGS="-fPIC" SHLIB_LD="ld -Bshareable -x" @@ -7427,42 +3257,42 @@ if test $ac_cv_header_dlfcn_h = yes; then DL_LIBS="" CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' - echo "$as_me:$LINENO: checking for ELF" >&5 -echo $ECHO_N "checking for ELF... $ECHO_C" >&6 -if test "${tcl_cv_ld_elf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for ELF""... $ac_c" 1>&6 +echo "configure:3262: checking for ELF" >&5 +if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext <&5 | - $EGREP "yes" >/dev/null 2>&1; then + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* tcl_cv_ld_elf=yes else + rm -rf conftest* tcl_cv_ld_elf=no fi rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5 -echo "${ECHO_T}$tcl_cv_ld_elf" >&6 + +echo "$ac_t""$tcl_cv_ld_elf" 1>&6 if test $tcl_cv_ld_elf = yes; then SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' else SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' fi - + else + echo "$ac_t""no" 1>&6 SHLIB_CFLAGS="" SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" @@ -7473,11 +3303,10 @@ else CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - + fi - # FreeBSD doesn't handle version numbers with dots. UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' @@ -7513,35 +3342,34 @@ fi CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' - echo "$as_me:$LINENO: checking for ELF" >&5 -echo $ECHO_N "checking for ELF... $ECHO_C" >&6 -if test "${tcl_cv_ld_elf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for ELF""... $ac_c" 1>&6 +echo "configure:3347: checking for ELF" >&5 +if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext <&5 | - $EGREP "yes" >/dev/null 2>&1; then + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* tcl_cv_ld_elf=yes else + rm -rf conftest* tcl_cv_ld_elf=no fi rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5 -echo "${ECHO_T}$tcl_cv_ld_elf" >&6 + +echo "$ac_t""$tcl_cv_ld_elf" 1>&6 if test $tcl_cv_ld_elf = yes; then LDFLAGS=-Wl,-export-dynamic else @@ -7591,8 +3419,7 @@ echo "${ECHO_T}$tcl_cv_ld_elf" >&6 i386) CFLAGS="$CFLAGS -arch x86_64";; *) - { echo "$as_me:$LINENO: WARNING: Don't know how enable 64-bit on architecture \`arch\`" >&5 -echo "$as_me: WARNING: Don't know how enable 64-bit on architecture \`arch\`" >&2;} + echo "configure: warning: Don't know how enable 64-bit on architecture `arch`" 1>&2 do64bit_ok=no;; esac else @@ -7602,64 +3429,36 @@ echo "$as_me: WARNING: Don't know how enable 64-bit on architecture \`arch\`" >& fat_32_64=yes fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' - echo "$as_me:$LINENO: checking if ld accepts -single_module flag" >&5 -echo $ECHO_N "checking if ld accepts -single_module flag... $ECHO_C" >&6 -if test "${tcl_cv_ld_single_module+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 +echo "configure:3434: checking if ld accepts -single_module flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ + cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:3449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* tcl_cv_ld_single_module=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_ld_single_module=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_ld_single_module=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* LDFLAGS=$hold_ldflags fi -echo "$as_me:$LINENO: result: $tcl_cv_ld_single_module" >&5 -echo "${ECHO_T}$tcl_cv_ld_single_module" >&6 + +echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 if test $tcl_cv_ld_single_module = yes; then SHLIB_LD="${SHLIB_LD} -Wl,-single_module" fi @@ -7672,64 +3471,36 @@ echo "${ECHO_T}$tcl_cv_ld_single_module" >&6 "`echo "${CFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int($2)}'`" -lt 4 && \ LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" - echo "$as_me:$LINENO: checking if ld accepts -search_paths_first flag" >&5 -echo $ECHO_N "checking if ld accepts -search_paths_first flag... $ECHO_C" >&6 -if test "${tcl_cv_ld_search_paths_first+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 +echo "configure:3476: checking if ld accepts -search_paths_first flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ + cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:3491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* tcl_cv_ld_search_paths_first=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_ld_search_paths_first=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_ld_search_paths_first=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* LDFLAGS=$hold_ldflags fi -echo "$as_me:$LINENO: result: $tcl_cv_ld_search_paths_first" >&5 -echo "${ECHO_T}$tcl_cv_ld_search_paths_first" >&6 + +echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 if test $tcl_cv_ld_search_paths_first = yes; then LDFLAGS="$LDFLAGS -Wl,-search_paths_first" fi @@ -7738,24 +3509,24 @@ echo "${ECHO_T}$tcl_cv_ld_search_paths_first" >&6 LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) - echo "$as_me:$LINENO: checking whether to use CoreFoundation" >&5 -echo $ECHO_N "checking whether to use CoreFoundation... $ECHO_C" >&6 + echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 +echo "configure:3514: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" tcl_corefoundation=$enableval else tcl_corefoundation=yes -fi; - echo "$as_me:$LINENO: result: $tcl_corefoundation" >&5 -echo "${ECHO_T}$tcl_corefoundation" >&6 +fi + + echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then - echo "$as_me:$LINENO: checking for CoreFoundation.framework" >&5 -echo $ECHO_N "checking for CoreFoundation.framework... $ECHO_C" >&6 -if test "${tcl_cv_lib_corefoundation+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 +echo "configure:3526: checking for CoreFoundation.framework" >&5 +if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + hold_libs=$LIBS; hold_cflags=$CFLAGS if test "$fat_32_64" = yes; then # On Tiger there is no 64-bit CF, so remove 64-bit archs @@ -7764,135 +3535,79 @@ else CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc64 / /g' -e 's/-arch x86_64 / /g'`" fi LIBS="$LIBS -framework CoreFoundation" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < -int -main () -{ +int main() { CFBundleRef b = CFBundleGetMainBundle(); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:3547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* tcl_cv_lib_corefoundation=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_lib_corefoundation=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_lib_corefoundation=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* LIBS=$hold_libs; CFLAGS=$hold_cflags fi -echo "$as_me:$LINENO: result: $tcl_cv_lib_corefoundation" >&5 -echo "${ECHO_T}$tcl_cv_lib_corefoundation" >&6 + +echo "$ac_t""$tcl_cv_lib_corefoundation" 1>&6 if test $tcl_cv_lib_corefoundation = yes; then LIBS="$LIBS -framework CoreFoundation" - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_COREFOUNDATION 1 -_ACEOF +EOF else tcl_corefoundation=no fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then - echo "$as_me:$LINENO: checking for 64-bit CoreFoundation" >&5 -echo $ECHO_N "checking for 64-bit CoreFoundation... $ECHO_C" >&6 -if test "${tcl_cv_lib_corefoundation_64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 +echo "configure:3572: checking for 64-bit CoreFoundation" >&5 +if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + hold_cflags=$CFLAGS CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < -int -main () -{ +int main() { CFBundleRef b = CFBundleGetMainBundle(); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:3587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_lib_corefoundation_64=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_lib_corefoundation_64=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* CFLAGS=$hold_cflags fi -echo "$as_me:$LINENO: result: $tcl_cv_lib_corefoundation_64" >&5 -echo "${ECHO_T}$tcl_cv_lib_corefoundation_64" >&6 + +echo "$ac_t""$tcl_cv_lib_corefoundation_64" 1>&6 if test $tcl_cv_lib_corefoundation_64 = no; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define NO_COREFOUNDATION_64 1 -_ACEOF +EOF fi fi fi - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define MAC_OSX_TCL 1 -_ACEOF +EOF ;; NEXTSTEP-*) @@ -7907,11 +3622,11 @@ _ACEOF ;; OS/390-*) CFLAGS_OPTIMIZE="" # Optimizer is buggy - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _OE_SOCKETS 1 -_ACEOF +EOF # needed in sys/socket.h - ;; + ;; OSF1-1.0|OSF1-1.1|OSF1-1.2) # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 SHLIB_CFLAGS="" @@ -8050,13 +3765,13 @@ _ACEOF # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _REENTRANT 1 -_ACEOF +EOF - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _POSIX_PTHREAD_SEMANTICS 1 -_ACEOF +EOF SHLIB_CFLAGS="-KPIC" @@ -8082,13 +3797,13 @@ _ACEOF # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _REENTRANT 1 -_ACEOF +EOF - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _POSIX_PTHREAD_SEMANTICS 1 -_ACEOF +EOF SHLIB_CFLAGS="-KPIC" @@ -8099,8 +3814,7 @@ _ACEOF if test "$arch" = "sparcv9 sparc" ; then if test "$GCC" = "yes" ; then if test "`gcc -dumpversion | awk -F. '{print $1}'`" -lt "3" ; then - { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&5 -echo "$as_me: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&2;} + echo "configure: warning: 64bit mode not supported with GCC < 3.2 on $system" 1>&2 else do64bit_ok=yes CFLAGS="$CFLAGS -m64 -mcpu=v9" @@ -8121,19 +3835,17 @@ echo "$as_me: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&2;} fi elif test "$arch" = "amd64 i386" ; then if test "$GCC" = "yes" ; then - { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 -echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} + echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 else do64bit_ok=yes CFLAGS="$CFLAGS -xarch=amd64" LDFLAGS="$LDFLAGS -xarch=amd64" fi else - { echo "$as_me:$LINENO: WARNING: 64bit mode not supported for $arch" >&5 -echo "$as_me: WARNING: 64bit mode not supported for $arch" >&2;} + echo "configure: warning: 64bit mode not supported for $arch" 1>&2 fi fi - + # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. @@ -8183,64 +3895,36 @@ echo "$as_me: WARNING: 64bit mode not supported for $arch" >&2;} DL_LIBS="-ldl" # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. - echo "$as_me:$LINENO: checking for ld accepts -Bexport flag" >&5 -echo $ECHO_N "checking for ld accepts -Bexport flag... $ECHO_C" >&6 -if test "${tcl_cv_ld_Bexport+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 +echo "configure:3900: checking for ld accepts -Bexport flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ + cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:3915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* tcl_cv_ld_Bexport=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_ld_Bexport=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_ld_Bexport=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* LDFLAGS=$hold_ldflags fi -echo "$as_me:$LINENO: result: $tcl_cv_ld_Bexport" >&5 -echo "${ECHO_T}$tcl_cv_ld_Bexport" >&6 + +echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test $tcl_cv_ld_Bexport = yes; then LDFLAGS="$LDFLAGS -Wl,-Bexport" fi @@ -8250,8 +3934,7 @@ echo "${ECHO_T}$tcl_cv_ld_Bexport" >&6 esac if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then - { echo "$as_me:$LINENO: WARNING: 64bit support being disabled -- don't know magic for this platform" >&5 -echo "$as_me: WARNING: 64bit support being disabled -- don't know magic for this platform" >&2;} + echo "configure: warning: 64bit support being disabled -- don't know magic for this platform" 1>&2 fi # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic @@ -8259,7 +3942,7 @@ echo "$as_me: WARNING: 64bit support being disabled -- don't know magic for this # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need # to determine which of several header files defines the a.out file # format (a.out.h, sys/exec.h, or sys/exec_aout.h). At present, we - # support only a file format that is more or less version-7-compatible. + # support only a file format that is more or less version-7-compatible. # In particular, # - a.out files must begin with `struct exec'. # - the N_TXTOFF on the `struct exec' must compute the seek address @@ -8274,22 +3957,17 @@ echo "$as_me: WARNING: 64bit support being disabled -- don't know magic for this # duplicates the v7 fields that are needed. if test "x$DL_OBJS" = "xtclLoadAout.o" ; then - echo "$as_me:$LINENO: checking sys/exec.h" >&5 -echo $ECHO_N "checking sys/exec.h... $ECHO_C" >&6 -if test "${tcl_cv_sysexec_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 +echo "configure:3962: checking sys/exec.h" >&5 +if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < -int -main () -{ +int main() { struct exec foo; unsigned long seek; @@ -8301,66 +3979,39 @@ main () #endif flag = (foo.a_magic == OMAGIC); return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + +; return 0; } +EOF +if { (eval echo configure:3986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_sysexec_h=usable else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_sysexec_h=unusable + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_sysexec_h=unusable fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_sysexec_h" >&5 -echo "${ECHO_T}$tcl_cv_sysexec_h" >&6 + +echo "$ac_t""$tcl_cv_sysexec_h" 1>&6 if test $tcl_cv_sysexec_h = usable; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define USE_SYS_EXEC_H 1 -_ACEOF +EOF else - echo "$as_me:$LINENO: checking a.out.h" >&5 -echo $ECHO_N "checking a.out.h... $ECHO_C" >&6 -if test "${tcl_cv_aout_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo $ac_n "checking a.out.h""... $ac_c" 1>&6 +echo "configure:4006: checking a.out.h" >&5 +if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < -int -main () -{ +int main() { struct exec foo; unsigned long seek; @@ -8372,66 +4023,39 @@ main () #endif flag = (foo.a_magic == OMAGIC); return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + +; return 0; } +EOF +if { (eval echo configure:4030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_aout_h=usable else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_aout_h=unusable + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_aout_h=unusable fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_aout_h" >&5 -echo "${ECHO_T}$tcl_cv_aout_h" >&6 + +echo "$ac_t""$tcl_cv_aout_h" 1>&6 if test $tcl_cv_aout_h = usable; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define USE_A_OUT_H 1 -_ACEOF +EOF else - echo "$as_me:$LINENO: checking sys/exec_aout.h" >&5 -echo $ECHO_N "checking sys/exec_aout.h... $ECHO_C" >&6 -if test "${tcl_cv_sysexecaout_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 +echo "configure:4050: checking sys/exec_aout.h" >&5 +if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < -int -main () -{ +int main() { struct exec foo; unsigned long seek; @@ -8443,48 +4067,26 @@ main () #endif flag = (foo.a_midmag == OMAGIC); return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + +; return 0; } +EOF +if { (eval echo configure:4074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_sysexecaout_h=usable else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_sysexecaout_h=unusable + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_sysexecaout_h=unusable fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_sysexecaout_h" >&5 -echo "${ECHO_T}$tcl_cv_sysexecaout_h" >&6 + +echo "$ac_t""$tcl_cv_sysexecaout_h" 1>&6 if test $tcl_cv_sysexecaout_h = usable; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define USE_SYS_EXEC_AOUT_H 1 -_ACEOF +EOF else DL_OBJS="" @@ -8501,7 +4103,8 @@ if test "${enable_load+set}" = set; then tcl_ok=$enableval else tcl_ok=yes -fi; +fi + if test "$tcl_ok" = "no"; then DL_OBJS="" fi @@ -8587,91 +4190,88 @@ fi; fi + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - echo "$as_me:$LINENO: checking for build with symbols" >&5 -echo $ECHO_N "checking for build with symbols... $ECHO_C" >&6 + echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 +echo "configure:4227: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" tcl_ok=$enableval else tcl_ok=no -fi; +fi + # FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT. if test "$tcl_ok" = "no"; then CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)' LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)' DBGX="" - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + echo "$ac_t""no" 1>&6 else CFLAGS_DEFAULT='$(CFLAGS_DEBUG)' LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)' DBGX=g if test "$tcl_ok" = "yes"; then - echo "$as_me:$LINENO: result: yes (standard debugging)" >&5 -echo "${ECHO_T}yes (standard debugging)" >&6 + echo "$ac_t""yes (standard debugging)" 1>&6 fi fi - - + + if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define TCL_MEM_DEBUG 1 -_ACEOF +EOF fi if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define TCL_COMPILE_DEBUG 1 -_ACEOF +EOF - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define TCL_COMPILE_STATS 1 -_ACEOF +EOF fi if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then if test "$tcl_ok" = "all"; then - echo "$as_me:$LINENO: result: enabled symbols mem compile debugging" >&5 -echo "${ECHO_T}enabled symbols mem compile debugging" >&6 + echo "$ac_t""enabled symbols mem compile debugging" 1>&6 else - echo "$as_me:$LINENO: result: enabled $tcl_ok debugging" >&5 -echo "${ECHO_T}enabled $tcl_ok debugging" >&6 + echo "$ac_t""enabled $tcl_ok debugging" 1>&6 fi fi @@ -8683,744 +4283,392 @@ TCL_DBGX=${DBGX} #-------------------------------------------------------------------- - echo "$as_me:$LINENO: checking for required early compiler flags" >&5 -echo $ECHO_N "checking for required early compiler flags... $ECHO_C" >&6 + echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 +echo "configure:4288: checking for required early compiler flags" >&5 tcl_flags="" - - if test "${tcl_cv_flag__isoc99_source+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < -int -main () -{ +int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_flag__isoc99_source=no else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext < -int -main () -{ +int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4318: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_flag__isoc99_source=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_flag__isoc99_source=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_flag__isoc99_source=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _ISOC99_SOURCE 1 -_ACEOF +EOF tcl_flags="$tcl_flags _ISOC99_SOURCE" fi - - if test "${tcl_cv_flag__largefile64_source+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + if eval "test \"`echo '$''{'tcl_cv_flag__largefile64_source'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < -int -main () -{ +int main() { struct stat64 buf; int i = stat64("/", &buf); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_flag__largefile64_source=no else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext < -int -main () -{ +int main() { struct stat64 buf; int i = stat64("/", &buf); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_flag__largefile64_source=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_flag__largefile64_source=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_flag__largefile64_source=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _LARGEFILE64_SOURCE 1 -_ACEOF +EOF tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" fi - - if test "${tcl_cv_flag__largefile_source64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + if eval "test \"`echo '$''{'tcl_cv_flag__largefile_source64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < -int -main () -{ +int main() { char *p = (char *)open64; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_flag__largefile_source64=no else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext < -int -main () -{ +int main() { char *p = (char *)open64; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_flag__largefile_source64=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_flag__largefile_source64=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_flag__largefile_source64=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi if test "x${tcl_cv_flag__largefile_source64}" = "xyes" ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define _LARGEFILE_SOURCE64 1 -_ACEOF +EOF tcl_flags="$tcl_flags _LARGEFILE_SOURCE64" fi if test "x${tcl_flags}" = "x" ; then - echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6 + echo "$ac_t""none" 1>&6 else - echo "$as_me:$LINENO: result: ${tcl_flags}" >&5 -echo "${ECHO_T}${tcl_flags}" >&6 + echo "$ac_t""${tcl_flags}" 1>&6 fi - echo "$as_me:$LINENO: checking for 64-bit integer type" >&5 -echo $ECHO_N "checking for 64-bit integer type... $ECHO_C" >&6 - if test "${tcl_cv_type_64bit+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 +echo "configure:4449: checking for 64-bit integer type" >&5 + if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ + cat > conftest.$ac_ext <&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_type_64bit=__int64 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_type_64bit="long long" + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_type_64bit="long long" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* # See if we should use long anyway Note that we substitute in the # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -switch (0) { - case 1: case (sizeof(${tcl_type_64bit})==sizeof(long)): ; + cat > conftest.$ac_ext <&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi if test "${tcl_cv_type_64bit}" = none ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define TCL_WIDE_INT_IS_LONG 1 -_ACEOF +EOF - echo "$as_me:$LINENO: result: using long" >&5 -echo "${ECHO_T}using long" >&6 + echo "$ac_t""using long" 1>&6 else - cat >>confdefs.h <<_ACEOF + cat >> confdefs.h <&5 -echo "${ECHO_T}${tcl_cv_type_64bit}" >&6 + echo "$ac_t""${tcl_cv_type_64bit}" 1>&6 # Now check for auxiliary declarations - echo "$as_me:$LINENO: checking for struct dirent64" >&5 -echo $ECHO_N "checking for struct dirent64... $ECHO_C" >&6 -if test "${tcl_cv_struct_dirent64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 +echo "configure:4512: checking for struct dirent64" >&5 +if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < #include -int -main () -{ +int main() { struct dirent64 p; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_struct_dirent64=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_struct_dirent64=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_struct_dirent64=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_struct_dirent64" >&5 -echo "${ECHO_T}$tcl_cv_struct_dirent64" >&6 + +echo "$ac_t""$tcl_cv_struct_dirent64" 1>&6 if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_STRUCT_DIRENT64 1 -_ACEOF +EOF fi - echo "$as_me:$LINENO: checking for struct stat64" >&5 -echo $ECHO_N "checking for struct stat64... $ECHO_C" >&6 -if test "${tcl_cv_struct_stat64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 +echo "configure:4547: checking for struct stat64" >&5 +if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < -int -main () -{ +int main() { struct stat64 p; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_struct_stat64=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_struct_stat64=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_struct_stat64=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_struct_stat64" >&5 -echo "${ECHO_T}$tcl_cv_struct_stat64" >&6 + +echo "$ac_t""$tcl_cv_struct_stat64" 1>&6 if test "x${tcl_cv_struct_stat64}" = "xyes" ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_STRUCT_STAT64 1 -_ACEOF +EOF fi - - -for ac_func in open64 lseek64 + for ac_func in open64 lseek64 do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4584: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - + which can conflict with char $ac_func(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} +$ac_func(); #endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +; return 0; } +EOF +if { (eval echo configure:4612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi done - echo "$as_me:$LINENO: checking for off64_t" >&5 -echo $ECHO_N "checking for off64_t... $ECHO_C" >&6 - if test "${tcl_cv_type_off64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for off64_t""... $ac_c" 1>&6 +echo "configure:4637: checking for off64_t" >&5 + if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < -int -main () -{ +int main() { off64_t offset; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_type_off64_t=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_type_off64_t=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_type_off64_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi if test "x${tcl_cv_type_off64_t}" = "xyes" && \ test "x${ac_cv_func_lseek64}" = "xyes" && \ test "x${ac_cv_func_open64}" = "xyes" ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_TYPE_OFF64_T 1 -_ACEOF +EOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + echo "$ac_t""yes" 1>&6 else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + echo "$ac_t""no" 1>&6 fi fi @@ -9430,182 +4678,63 @@ echo "${ECHO_T}no" >&6 # Tcl_UniChar strings to memcmp on big-endian systems. #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 -if test "${ac_cv_c_bigendian+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # See if sys/param.h defines the BYTE_ORDER macro. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +echo "configure:4683: checking whether byte ordering is bigendian" >&5 +if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_c_bigendian=unknown +# See if sys/param.h defines the BYTE_ORDER macro. +cat > conftest.$ac_ext < #include +int main() { -int -main () -{ #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +cat > conftest.$ac_ext < #include +int main() { -int -main () -{ #if BYTE_ORDER != BIG_ENDIAN not big endian #endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:4716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* ac_cv_c_bigendian=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c_bigendian=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -# It does not; compile a test program. -if test "$cross_compiling" = yes; then - # try to guess the endianness by grepping values into an object file - ac_cv_c_bigendian=unknown - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; -void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; -void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } -int -main () -{ - _ascii (); _ebcdic (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then - ac_cv_c_bigendian=yes -fi -if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_bigendian=no fi +rm -f conftest* else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* +if test $ac_cv_c_bigendian = unknown; then +if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ + cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if { (eval echo configure:4749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then ac_cv_c_bigendian=no else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_bigendian=yes + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_bigendian=yes fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6 -case $ac_cv_c_bigendian in - yes) -cat >>confdefs.h <<\_ACEOF +echo "$ac_t""$ac_cv_c_bigendian" 1>&6 +if test $ac_cv_c_bigendian = yes; then + cat >> confdefs.h <<\EOF #define WORDS_BIGENDIAN 1 -_ACEOF - ;; - no) - ;; - *) - { { echo "$as_me:$LINENO: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -echo "$as_me: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} - { (exit 1); exit 1; }; } ;; -esac +EOF + +fi #-------------------------------------------------------------------- @@ -9667,109 +4775,61 @@ esac #-------------------------------------------------------------------- # Check if Posix compliant getcwd exists, if not we'll use getwd. - for ac_func in getcwd do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4782: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - + which can conflict with char $ac_func(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} +$ac_func(); #endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - cat >>confdefs.h <<\_ACEOF +; return 0; } +EOF +if { (eval echo configure:4810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +cat >> confdefs.h <<\EOF #define USEGETWD 1 -_ACEOF +EOF fi done @@ -9777,517 +4837,268 @@ done # Nb: if getcwd uses popen and pwd(1) (like SunOS 4) we should really # define USEGETWD even if the posix getcwd exists. Add a test ? - - - - - - - for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4844: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - + which can conflict with char $ac_func(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} +$ac_func(); #endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case $LIBOBJS in - "$ac_func.$ac_objext" | \ - *" $ac_func.$ac_objext" | \ - "$ac_func.$ac_objext "* | \ - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; -esac +; return 0; } +EOF +if { (eval echo configure:4872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" fi done -echo "$as_me:$LINENO: checking for strerror" >&5 -echo $ECHO_N "checking for strerror... $ECHO_C" >&6 -if test "${ac_cv_func_strerror+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for strerror""... $ac_c" 1>&6 +echo "configure:4899: checking for strerror" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define strerror to an innocuous variant, in case declares strerror. - For example, HP-UX 11i declares gettimeofday. */ -#define strerror innocuous_strerror - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef strerror - + which can conflict with char strerror(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strerror (); + builtin and then its argument prototype would still apply. */ +char strerror(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strerror) || defined (__stub___strerror) choke me #else -char (*f) () = strerror; -#endif -#ifdef __cplusplus -} +strerror(); #endif -int -main () -{ -return f != strerror; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strerror=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_strerror=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_strerror" >&5 -echo "${ECHO_T}$ac_cv_func_strerror" >&6 -if test $ac_cv_func_strerror = yes; then - : +; return 0; } +EOF +if { (eval echo configure:4927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strerror=yes" else - cat >>confdefs.h <<\_ACEOF -#define NO_STRERROR 1 -_ACEOF - + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_strerror=no" +fi +rm -f conftest* fi -echo "$as_me:$LINENO: checking for getwd" >&5 -echo $ECHO_N "checking for getwd... $ECHO_C" >&6 -if test "${ac_cv_func_getwd+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if eval "test \"`echo '$ac_cv_func_'strerror`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define getwd to an innocuous variant, in case declares getwd. - For example, HP-UX 11i declares gettimeofday. */ -#define getwd innocuous_getwd - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char getwd (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF +#define NO_STRERROR 1 +EOF -#undef getwd +fi +echo $ac_n "checking for getwd""... $ac_c" 1>&6 +echo "configure:4951: checking for getwd" >&5 +if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getwd (); + builtin and then its argument prototype would still apply. */ +char getwd(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_getwd) || defined (__stub___getwd) choke me #else -char (*f) () = getwd; -#endif -#ifdef __cplusplus -} +getwd(); #endif -int -main () -{ -return f != getwd; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_getwd=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_getwd=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_getwd" >&5 -echo "${ECHO_T}$ac_cv_func_getwd" >&6 -if test $ac_cv_func_getwd = yes; then +; return 0; } +EOF +if { (eval echo configure:4979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getwd=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_getwd=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'getwd`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_GETWD 1 -_ACEOF +EOF fi -echo "$as_me:$LINENO: checking for wait3" >&5 -echo $ECHO_N "checking for wait3... $ECHO_C" >&6 -if test "${ac_cv_func_wait3+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for wait3""... $ac_c" 1>&6 +echo "configure:5003: checking for wait3" >&5 +if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define wait3 to an innocuous variant, in case declares wait3. - For example, HP-UX 11i declares gettimeofday. */ -#define wait3 innocuous_wait3 - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef wait3 - + which can conflict with char wait3(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char wait3 (); + builtin and then its argument prototype would still apply. */ +char wait3(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_wait3) || defined (__stub___wait3) choke me #else -char (*f) () = wait3; -#endif -#ifdef __cplusplus -} +wait3(); #endif -int -main () -{ -return f != wait3; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_wait3=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_wait3=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 -echo "${ECHO_T}$ac_cv_func_wait3" >&6 -if test $ac_cv_func_wait3 = yes; then +; return 0; } +EOF +if { (eval echo configure:5031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_wait3=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_wait3=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'wait3`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_WAIT3 1 -_ACEOF +EOF fi -echo "$as_me:$LINENO: checking for uname" >&5 -echo $ECHO_N "checking for uname... $ECHO_C" >&6 -if test "${ac_cv_func_uname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for uname""... $ac_c" 1>&6 +echo "configure:5055: checking for uname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define uname to an innocuous variant, in case declares uname. - For example, HP-UX 11i declares gettimeofday. */ -#define uname innocuous_uname - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef uname - + which can conflict with char uname(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char uname (); + builtin and then its argument prototype would still apply. */ +char uname(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_uname) || defined (__stub___uname) choke me #else -char (*f) () = uname; -#endif -#ifdef __cplusplus -} +uname(); #endif -int -main () -{ -return f != uname; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_uname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_uname=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_uname" >&5 -echo "${ECHO_T}$ac_cv_func_uname" >&6 -if test $ac_cv_func_uname = yes; then +; return 0; } +EOF +if { (eval echo configure:5083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_uname=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_uname=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'uname`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_UNAME 1 -_ACEOF +EOF fi @@ -10298,102 +5109,55 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ # use it when threads are enabled, c.f. bug # 711232 ac_cv_func_realpath=no fi -echo "$as_me:$LINENO: checking for realpath" >&5 -echo $ECHO_N "checking for realpath... $ECHO_C" >&6 -if test "${ac_cv_func_realpath+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define realpath to an innocuous variant, in case declares realpath. - For example, HP-UX 11i declares gettimeofday. */ -#define realpath innocuous_realpath - +echo $ac_n "checking for realpath""... $ac_c" 1>&6 +echo "configure:5114: checking for realpath" >&5 +if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef realpath - + which can conflict with char realpath(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char realpath (); + builtin and then its argument prototype would still apply. */ +char realpath(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_realpath) || defined (__stub___realpath) choke me #else -char (*f) () = realpath; -#endif -#ifdef __cplusplus -} +realpath(); #endif -int -main () -{ -return f != realpath; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_realpath=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_realpath=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_realpath" >&5 -echo "${ECHO_T}$ac_cv_func_realpath" >&6 -if test $ac_cv_func_realpath = yes; then +; return 0; } +EOF +if { (eval echo configure:5142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_realpath=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_realpath=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'realpath`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_REALPATH 1 -_ACEOF +EOF fi @@ -10403,113 +5167,60 @@ fi #-------------------------------------------------------------------- if test "${TCL_THREADS}" = 1; then - echo "$as_me:$LINENO: checking for getpwuid_r" >&5 -echo $ECHO_N "checking for getpwuid_r... $ECHO_C" >&6 -if test "${ac_cv_func_getpwuid_r+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define getpwuid_r to an innocuous variant, in case declares getpwuid_r. - For example, HP-UX 11i declares gettimeofday. */ -#define getpwuid_r innocuous_getpwuid_r - + echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 +echo "configure:5172: checking for getpwuid_r" >&5 +if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef getpwuid_r - + which can conflict with char getpwuid_r(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getpwuid_r (); + builtin and then its argument prototype would still apply. */ +char getpwuid_r(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_getpwuid_r) || defined (__stub___getpwuid_r) choke me #else -char (*f) () = getpwuid_r; -#endif -#ifdef __cplusplus -} +getpwuid_r(); #endif -int -main () -{ -return f != getpwuid_r; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_getpwuid_r=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_getpwuid_r=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_getpwuid_r" >&5 -echo "${ECHO_T}$ac_cv_func_getpwuid_r" >&6 -if test $ac_cv_func_getpwuid_r = yes; then - - echo "$as_me:$LINENO: checking for getpwuid_r with 5 args" >&5 -echo $ECHO_N "checking for getpwuid_r with 5 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +; return 0; } +EOF +if { (eval echo configure:5200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getpwuid_r=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_getpwuid_r=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 +echo "configure:5216: checking for getpwuid_r with 5 args" >&5 + cat > conftest.$ac_ext < #include - -int -main () -{ + +int main() { uid_t uid; struct passwd pw, *pwp; @@ -10517,69 +5228,38 @@ main () int buflen = 512; (void) getpwuid_r(uid, &pw, buf, buflen, &pwp); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETPWUID_R 1 -_ACEOF +EOF - -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETPWUID_R_5 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - echo "$as_me:$LINENO: checking for getpwuid_r with 4 args" >&5 -echo $ECHO_N "checking for getpwuid_r with 4 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +EOF + + echo "$ac_t""yes" 1>&6 + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 +echo "configure:5255: checking for getpwuid_r with 4 args" >&5 + cat > conftest.$ac_ext < #include - -int -main () -{ + +int main() { uid_t uid; struct passwd pw; @@ -10587,171 +5267,94 @@ main () int buflen = 512; (void)getpwnam_r(uid, &pw, buf, buflen); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5274: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETPWUID_R 1 -_ACEOF - +EOF -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETPWUID_R_4 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +EOF + echo "$ac_t""yes" 1>&6 + else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f conftest* + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* +else + echo "$ac_t""no" 1>&6 fi - echo "$as_me:$LINENO: checking for getpwnam_r" >&5 -echo $ECHO_N "checking for getpwnam_r... $ECHO_C" >&6 -if test "${ac_cv_func_getpwnam_r+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 +echo "configure:5306: checking for getpwnam_r" >&5 +if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define getpwnam_r to an innocuous variant, in case declares getpwnam_r. - For example, HP-UX 11i declares gettimeofday. */ -#define getpwnam_r innocuous_getpwnam_r - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef getpwnam_r - + which can conflict with char getpwnam_r(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getpwnam_r (); + builtin and then its argument prototype would still apply. */ +char getpwnam_r(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_getpwnam_r) || defined (__stub___getpwnam_r) choke me #else -char (*f) () = getpwnam_r; -#endif -#ifdef __cplusplus -} +getpwnam_r(); #endif -int -main () -{ -return f != getpwnam_r; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_getpwnam_r=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_getpwnam_r=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_getpwnam_r" >&5 -echo "${ECHO_T}$ac_cv_func_getpwnam_r" >&6 -if test $ac_cv_func_getpwnam_r = yes; then - - echo "$as_me:$LINENO: checking for getpwnam_r with 5 args" >&5 -echo $ECHO_N "checking for getpwnam_r with 5 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +; return 0; } +EOF +if { (eval echo configure:5334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getpwnam_r=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_getpwnam_r=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 +echo "configure:5350: checking for getpwnam_r with 5 args" >&5 + cat > conftest.$ac_ext < #include - -int -main () -{ + +int main() { char *name; struct passwd pw, *pwp; @@ -10759,69 +5362,38 @@ main () int buflen = 512; (void) getpwnam_r(name, &pw, buf, buflen, &pwp); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETPWNAM_R 1 -_ACEOF - +EOF -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETPWNAM_R_5 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - echo "$as_me:$LINENO: checking for getpwnam_r with 4 args" >&5 -echo $ECHO_N "checking for getpwnam_r with 4 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +EOF + + echo "$ac_t""yes" 1>&6 + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 +echo "configure:5389: checking for getpwnam_r with 4 args" >&5 + cat > conftest.$ac_ext < #include - -int -main () -{ + +int main() { char *name; struct passwd pw; @@ -10829,171 +5401,94 @@ main () int buflen = 512; (void)getpwnam_r(name, &pw, buf, buflen); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5408: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETPWNAM_R 1 -_ACEOF +EOF - -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETPWNAM_R_4 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +EOF + echo "$ac_t""yes" 1>&6 + else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f conftest* + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* +else + echo "$ac_t""no" 1>&6 fi - echo "$as_me:$LINENO: checking for getgrgid_r" >&5 -echo $ECHO_N "checking for getgrgid_r... $ECHO_C" >&6 -if test "${ac_cv_func_getgrgid_r+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 +echo "configure:5440: checking for getgrgid_r" >&5 +if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define getgrgid_r to an innocuous variant, in case declares getgrgid_r. - For example, HP-UX 11i declares gettimeofday. */ -#define getgrgid_r innocuous_getgrgid_r - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef getgrgid_r - + which can conflict with char getgrgid_r(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getgrgid_r (); + builtin and then its argument prototype would still apply. */ +char getgrgid_r(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_getgrgid_r) || defined (__stub___getgrgid_r) choke me #else -char (*f) () = getgrgid_r; -#endif -#ifdef __cplusplus -} +getgrgid_r(); #endif -int -main () -{ -return f != getgrgid_r; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_getgrgid_r=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_getgrgid_r=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_getgrgid_r" >&5 -echo "${ECHO_T}$ac_cv_func_getgrgid_r" >&6 -if test $ac_cv_func_getgrgid_r = yes; then - - echo "$as_me:$LINENO: checking for getgrgid_r with 5 args" >&5 -echo $ECHO_N "checking for getgrgid_r with 5 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +; return 0; } +EOF +if { (eval echo configure:5468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getgrgid_r=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_getgrgid_r=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 +echo "configure:5484: checking for getgrgid_r with 5 args" >&5 + cat > conftest.$ac_ext < #include - -int -main () -{ + +int main() { gid_t gid; struct group gr, *grp; @@ -11001,69 +5496,38 @@ main () int buflen = 512; (void) getgrgid_r(gid, &gr, buf, buflen, &grp); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETGRGID_R 1 -_ACEOF +EOF - -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETGRGID_R_5 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - echo "$as_me:$LINENO: checking for getgrgid_r with 4 args" >&5 -echo $ECHO_N "checking for getgrgid_r with 4 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +EOF + + echo "$ac_t""yes" 1>&6 + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 +echo "configure:5523: checking for getgrgid_r with 4 args" >&5 + cat > conftest.$ac_ext < #include - -int -main () -{ + +int main() { gid_t gid; struct group gr; @@ -11071,171 +5535,94 @@ main () int buflen = 512; (void)getgrgid_r(gid, &gr, buf, buflen); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5542: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETGRGID_R 1 -_ACEOF - +EOF -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETGRGID_R_4 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +EOF + echo "$ac_t""yes" 1>&6 + else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f conftest* + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* +else + echo "$ac_t""no" 1>&6 fi - echo "$as_me:$LINENO: checking for getgrnam_r" >&5 -echo $ECHO_N "checking for getgrnam_r... $ECHO_C" >&6 -if test "${ac_cv_func_getgrnam_r+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 +echo "configure:5574: checking for getgrnam_r" >&5 +if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define getgrnam_r to an innocuous variant, in case declares getgrnam_r. - For example, HP-UX 11i declares gettimeofday. */ -#define getgrnam_r innocuous_getgrnam_r - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef getgrnam_r - + which can conflict with char getgrnam_r(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getgrnam_r (); + builtin and then its argument prototype would still apply. */ +char getgrnam_r(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_getgrnam_r) || defined (__stub___getgrnam_r) choke me #else -char (*f) () = getgrnam_r; -#endif -#ifdef __cplusplus -} +getgrnam_r(); #endif -int -main () -{ -return f != getgrnam_r; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_getgrnam_r=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_getgrnam_r=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_getgrnam_r" >&5 -echo "${ECHO_T}$ac_cv_func_getgrnam_r" >&6 -if test $ac_cv_func_getgrnam_r = yes; then - - echo "$as_me:$LINENO: checking for getgrnam_r with 5 args" >&5 -echo $ECHO_N "checking for getgrnam_r with 5 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +; return 0; } +EOF +if { (eval echo configure:5602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getgrnam_r=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_getgrnam_r=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 +echo "configure:5618: checking for getgrnam_r with 5 args" >&5 + cat > conftest.$ac_ext < #include - -int -main () -{ + +int main() { char *name; struct group gr, *grp; @@ -11243,69 +5630,38 @@ main () int buflen = 512; (void) getgrnam_r(name, &gr, buf, buflen, &grp); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETGRNAM_R 1 -_ACEOF - +EOF -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETGRNAM_R_5 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - echo "$as_me:$LINENO: checking for getgrnam_r with 4 args" >&5 -echo $ECHO_N "checking for getgrnam_r with 4 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +EOF + + echo "$ac_t""yes" 1>&6 + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 +echo "configure:5657: checking for getgrnam_r with 4 args" >&5 + cat > conftest.$ac_ext < #include - -int -main () -{ + +int main() { char *name; struct group gr; @@ -11313,170 +5669,93 @@ main () int buflen = 512; (void)getgrnam_r(name, &gr, buf, buflen); + +; return 0; } +EOF +if { (eval echo configure:5676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF +#define HAVE_GETGRNAM_R 1 +EOF - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETGRNAM_R 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETGRNAM_R_4 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + cat >> confdefs.h <<\EOF +#define HAVE_GETGRNAM_R_4 1 +EOF + echo "$ac_t""yes" 1>&6 + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f conftest* + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* +else + echo "$ac_t""no" 1>&6 fi - echo "$as_me:$LINENO: checking for gethostbyname_r" >&5 -echo $ECHO_N "checking for gethostbyname_r... $ECHO_C" >&6 -if test "${ac_cv_func_gethostbyname_r+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 +echo "configure:5708: checking for gethostbyname_r" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define gethostbyname_r to an innocuous variant, in case declares gethostbyname_r. - For example, HP-UX 11i declares gettimeofday. */ -#define gethostbyname_r innocuous_gethostbyname_r - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef gethostbyname_r - + which can conflict with char gethostbyname_r(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname_r (); + builtin and then its argument prototype would still apply. */ +char gethostbyname_r(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyname_r) || defined (__stub___gethostbyname_r) choke me #else -char (*f) () = gethostbyname_r; -#endif -#ifdef __cplusplus -} +gethostbyname_r(); #endif -int -main () -{ -return f != gethostbyname_r; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_gethostbyname_r=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_gethostbyname_r=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname_r" >&5 -echo "${ECHO_T}$ac_cv_func_gethostbyname_r" >&6 -if test $ac_cv_func_gethostbyname_r = yes; then - - echo "$as_me:$LINENO: checking for gethostbyname_r with 6 args" >&5 -echo $ECHO_N "checking for gethostbyname_r with 6 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +; return 0; } +EOF +if { (eval echo configure:5736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gethostbyname_r=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_gethostbyname_r=no" +fi +rm -f conftest* +fi - #include +if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 +echo "configure:5752: checking for gethostbyname_r with 6 args" >&5 + cat > conftest.$ac_ext < + +int main() { char *name; struct hostent *he, *res; @@ -11485,68 +5764,37 @@ main () int h_errnop; (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYNAME_R 1 -_ACEOF +EOF - -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYNAME_R_6 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - echo "$as_me:$LINENO: checking for gethostbyname_r with 5 args" >&5 -echo $ECHO_N "checking for gethostbyname_r with 5 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +EOF + + echo "$ac_t""yes" 1>&6 + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 +echo "configure:5791: checking for gethostbyname_r with 5 args" >&5 + cat > conftest.$ac_ext < - -int -main () -{ + +int main() { char *name; struct hostent *he; @@ -11555,241 +5803,133 @@ main () int h_errnop; (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5810: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYNAME_R 1 -_ACEOF - +EOF -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYNAME_R_5 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - echo "$as_me:$LINENO: checking for gethostbyname_r with 3 args" >&5 -echo $ECHO_N "checking for gethostbyname_r with 3 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +EOF + + echo "$ac_t""yes" 1>&6 + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 +echo "configure:5830: checking for gethostbyname_r with 3 args" >&5 + cat > conftest.$ac_ext < - -int -main () -{ + +int main() { char *name; struct hostent *he; struct hostent_data data; (void) gethostbyname_r(name, he, &data); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYNAME_R 1 -_ACEOF +EOF - -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYNAME_R_3 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +EOF + echo "$ac_t""yes" 1>&6 + else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f conftest* + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f conftest* + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* +else + echo "$ac_t""no" 1>&6 fi - echo "$as_me:$LINENO: checking for gethostbyaddr_r" >&5 -echo $ECHO_N "checking for gethostbyaddr_r... $ECHO_C" >&6 -if test "${ac_cv_func_gethostbyaddr_r+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 +echo "configure:5882: checking for gethostbyaddr_r" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define gethostbyaddr_r to an innocuous variant, in case declares gethostbyaddr_r. - For example, HP-UX 11i declares gettimeofday. */ -#define gethostbyaddr_r innocuous_gethostbyaddr_r - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef gethostbyaddr_r - + which can conflict with char gethostbyaddr_r(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyaddr_r (); + builtin and then its argument prototype would still apply. */ +char gethostbyaddr_r(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyaddr_r) || defined (__stub___gethostbyaddr_r) choke me #else -char (*f) () = gethostbyaddr_r; -#endif -#ifdef __cplusplus -} +gethostbyaddr_r(); #endif -int -main () -{ -return f != gethostbyaddr_r; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_gethostbyaddr_r=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_gethostbyaddr_r=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyaddr_r" >&5 -echo "${ECHO_T}$ac_cv_func_gethostbyaddr_r" >&6 -if test $ac_cv_func_gethostbyaddr_r = yes; then - - echo "$as_me:$LINENO: checking for gethostbyaddr_r with 7 args" >&5 -echo $ECHO_N "checking for gethostbyaddr_r with 7 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +; return 0; } +EOF +if { (eval echo configure:5910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gethostbyaddr_r=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_gethostbyaddr_r=no" +fi +rm -f conftest* +fi - #include +if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 +echo "configure:5926: checking for gethostbyaddr_r with 7 args" >&5 + cat > conftest.$ac_ext < + +int main() { char *addr; int length; @@ -11801,68 +5941,37 @@ main () (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, &h_errnop); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5948: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYADDR_R 1 -_ACEOF +EOF - -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYADDR_R_7 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - echo "$as_me:$LINENO: checking for gethostbyaddr_r with 8 args" >&5 -echo $ECHO_N "checking for gethostbyaddr_r with 8 args... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +EOF + + echo "$ac_t""yes" 1>&6 + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 +echo "configure:5968: checking for gethostbyaddr_r with 8 args" >&5 + cat > conftest.$ac_ext < - -int -main () -{ + +int main() { char *addr; int length; @@ -11874,62 +5983,38 @@ main () (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, &resultp, &h_errnop); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF + +; return 0; } +EOF +if { (eval echo configure:5990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYADDR_R 1 -_ACEOF - +EOF -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYADDR_R_8 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +EOF + echo "$ac_t""yes" 1>&6 + else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo "$ac_t""no" 1>&6 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f conftest* + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* +else + echo "$ac_t""no" 1>&6 fi @@ -11942,171 +6027,58 @@ fi #--------------------------------------------------------------------------- - -for ac_header in sys/modem.h + for ac_hdr in sys/modem.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:6035: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:6045: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +rm -f conftest* fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - done - echo "$as_me:$LINENO: checking termios vs. termio vs. sgtty" >&5 -echo $ECHO_N "checking termios vs. termio vs. sgtty... $ECHO_C" >&6 -if test "${tcl_cv_api_serial+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 +echo "configure:6072: checking termios vs. termio vs. sgtty" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < @@ -12119,39 +6091,26 @@ int main() { } return 1; } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if { (eval echo configure:6096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then tcl_cv_api_serial=termios else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_api_serial=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_api_serial=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + if test $tcl_cv_api_serial = no ; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < @@ -12163,40 +6122,27 @@ int main() { } return 1; } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if { (eval echo configure:6127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then tcl_cv_api_serial=termio else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_api_serial=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_api_serial=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + fi if test $tcl_cv_api_serial = no ; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < @@ -12209,40 +6155,27 @@ int main() { } return 1; } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if { (eval echo configure:6160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then tcl_cv_api_serial=sgtty else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_api_serial=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_api_serial=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + fi if test $tcl_cv_api_serial = no ; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < #include @@ -12257,40 +6190,27 @@ int main() { } return 1; } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if { (eval echo configure:6195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then tcl_cv_api_serial=termios else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_api_serial=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_api_serial=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + fi if test $tcl_cv_api_serial = no; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < #include @@ -12304,40 +6224,27 @@ int main() { } return 1; } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if { (eval echo configure:6229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then tcl_cv_api_serial=termio else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_api_serial=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_api_serial=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + fi if test $tcl_cv_api_serial = no; then if test "$cross_compiling" = yes; then tcl_cv_api_serial=none else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < #include @@ -12352,45 +6259,35 @@ int main() { } return 1; } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if { (eval echo configure:6264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then tcl_cv_api_serial=sgtty else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_api_serial=none + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_api_serial=none fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + fi fi -echo "$as_me:$LINENO: result: $tcl_cv_api_serial" >&5 -echo "${ECHO_T}$tcl_cv_api_serial" >&6 + +echo "$ac_t""$tcl_cv_api_serial" 1>&6 case $tcl_cv_api_serial in - termios) cat >>confdefs.h <<\_ACEOF + termios) cat >> confdefs.h <<\EOF #define USE_TERMIOS 1 -_ACEOF +EOF ;; - termio) cat >>confdefs.h <<\_ACEOF + termio) cat >> confdefs.h <<\EOF #define USE_TERMIO 1 -_ACEOF +EOF ;; - sgtty) cat >>confdefs.h <<\_ACEOF + sgtty) cat >> confdefs.h <<\EOF #define USE_SGTTY 1 -_ACEOF +EOF ;; esac @@ -12405,100 +6302,71 @@ _ACEOF # special flag. #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for fd_set in sys/types" >&5 -echo $ECHO_N "checking for fd_set in sys/types... $ECHO_C" >&6 -if test "${tcl_cv_type_fd_set+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 +echo "configure:6307: checking for fd_set in sys/types" >&5 +if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < -int -main () -{ +int main() { fd_set readMask, writeMask; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:6320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_type_fd_set=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_type_fd_set=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_type_fd_set=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_type_fd_set" >&5 -echo "${ECHO_T}$tcl_cv_type_fd_set" >&6 + +echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then - echo "$as_me:$LINENO: checking for fd_mask in sys/select" >&5 -echo $ECHO_N "checking for fd_mask in sys/select... $ECHO_C" >&6 -if test "${tcl_cv_grep_fd_mask+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 +echo "configure:6336: checking for fd_mask in sys/select" >&5 +if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < - -_ACEOF +EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "fd_mask" >/dev/null 2>&1; then + egrep "fd_mask" >/dev/null 2>&1; then + rm -rf conftest* tcl_cv_grep_fd_mask=present else + rm -rf conftest* tcl_cv_grep_fd_mask=missing fi rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_grep_fd_mask" >&5 -echo "${ECHO_T}$tcl_cv_grep_fd_mask" >&6 + +echo "$ac_t""$tcl_cv_grep_fd_mask" 1>&6 if test $tcl_cv_grep_fd_mask = present; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_SYS_SELECT_H 1 -_ACEOF +EOF tcl_ok=yes fi fi if test $tcl_ok = no; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define NO_FD_SET 1 -_ACEOF +EOF fi @@ -12506,699 +6374,308 @@ fi # Find out all about time handling differences. #------------------------------------------------------------------------------ -echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 -if test "${ac_cv_struct_tm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 +echo "configure:6379: checking whether struct tm is in sys/time.h or time.h" >&5 +if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < #include - -int -main () -{ +int main() { struct tm *tp; tp->tm_sec; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:6392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* ac_cv_struct_tm=time.h else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_struct_tm=sys/time.h + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_struct_tm=sys/time.h fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6 -if test $ac_cv_struct_tm = sys/time.h; then -cat >>confdefs.h <<\_ACEOF +echo "$ac_t""$ac_cv_struct_tm" 1>&6 +if test $ac_cv_struct_tm = sys/time.h; then + cat >> confdefs.h <<\EOF #define TM_IN_SYS_TIME 1 -_ACEOF +EOF fi - -for ac_header in sys/time.h + for ac_hdr in sys/time.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:6417: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:6427: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +rm -f conftest* fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - + echo "$ac_t""no" 1>&6 fi - done - echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 -if test "${ac_cv_header_time+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +echo "configure:6454: checking whether time.h and sys/time.h may both be included" >&5 +if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < #include #include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +int main() { +struct tm *tp; +; return 0; } +EOF +if { (eval echo configure:6468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* ac_cv_header_time=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_time=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_time=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6 -if test $ac_cv_header_time = yes; then -cat >>confdefs.h <<\_ACEOF +echo "$ac_t""$ac_cv_header_time" 1>&6 +if test $ac_cv_header_time = yes; then + cat >> confdefs.h <<\EOF #define TIME_WITH_SYS_TIME 1 -_ACEOF +EOF fi - echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 -echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 -if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 +echo "configure:6489: checking for tm_zone in struct tm" >&5 +if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include <$ac_cv_struct_tm> - - -int -main () -{ -static struct tm ac_aggr; -if (ac_aggr.tm_zone) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_tm_tm_zone=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> +int main() { +struct tm tm; tm.tm_zone; +; return 0; } +EOF +if { (eval echo configure:6502: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_struct_tm_zone=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_struct_tm_zone=no +fi +rm -f conftest* +fi - -int -main () -{ -static struct tm ac_aggr; -if (sizeof ac_aggr.tm_zone) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_tm_tm_zone=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_member_struct_tm_tm_zone=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 -echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 -if test $ac_cv_member_struct_tm_tm_zone = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TM_TM_ZONE 1 -_ACEOF - - -fi - -if test "$ac_cv_member_struct_tm_tm_zone" = yes; then - -cat >>confdefs.h <<\_ACEOF +echo "$ac_t""$ac_cv_struct_tm_zone" 1>&6 +if test "$ac_cv_struct_tm_zone" = yes; then + cat >> confdefs.h <<\EOF #define HAVE_TM_ZONE 1 -_ACEOF +EOF else - echo "$as_me:$LINENO: checking for tzname" >&5 -echo $ECHO_N "checking for tzname... $ECHO_C" >&6 -if test "${ac_cv_var_tzname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for tzname""... $ac_c" 1>&6 +echo "configure:6522: checking for tzname" >&5 +if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ extern char *tzname[]; /* RS6000 and others reject char **tzname. */ #endif - -int -main () -{ +int main() { atoi(*tzname); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:6537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* ac_cv_var_tzname=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_var_tzname=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_var_tzname=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 -echo "${ECHO_T}$ac_cv_var_tzname" >&6 - if test $ac_cv_var_tzname = yes; then -cat >>confdefs.h <<\_ACEOF +echo "$ac_t""$ac_cv_var_tzname" 1>&6 + if test $ac_cv_var_tzname = yes; then + cat >> confdefs.h <<\EOF #define HAVE_TZNAME 1 -_ACEOF +EOF fi fi - - -for ac_func in gmtime_r localtime_r + for ac_func in gmtime_r localtime_r do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:6562: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - + which can conflict with char $ac_func(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} +$ac_func(); #endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +; return 0; } +EOF +if { (eval echo configure:6590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi done - echo "$as_me:$LINENO: checking tm_tzadj in struct tm" >&5 -echo $ECHO_N "checking tm_tzadj in struct tm... $ECHO_C" >&6 -if test "${tcl_cv_member_tm_tzadj+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 +echo "configure:6616: checking tm_tzadj in struct tm" >&5 +if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < -int -main () -{ +int main() { struct tm tm; tm.tm_tzadj; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:6629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_member_tm_tzadj=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_member_tm_tzadj=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_member_tm_tzadj=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_member_tm_tzadj" >&5 -echo "${ECHO_T}$tcl_cv_member_tm_tzadj" >&6 + +echo "$ac_t""$tcl_cv_member_tm_tzadj" 1>&6 if test $tcl_cv_member_tm_tzadj = yes ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_TM_TZADJ 1 -_ACEOF +EOF fi - echo "$as_me:$LINENO: checking tm_gmtoff in struct tm" >&5 -echo $ECHO_N "checking tm_gmtoff in struct tm... $ECHO_C" >&6 -if test "${tcl_cv_member_tm_gmtoff+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 +echo "configure:6650: checking tm_gmtoff in struct tm" >&5 +if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < -int -main () -{ +int main() { struct tm tm; tm.tm_gmtoff; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:6663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_member_tm_gmtoff=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_member_tm_gmtoff=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_member_tm_gmtoff" >&5 -echo "${ECHO_T}$tcl_cv_member_tm_gmtoff" >&6 + +echo "$ac_t""$tcl_cv_member_tm_gmtoff" 1>&6 if test $tcl_cv_member_tm_gmtoff = yes ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_TM_GMTOFF 1 -_ACEOF +EOF fi @@ -13206,131 +6683,77 @@ _ACEOF # Its important to include time.h in this check, as some systems # (like convex) have timezone functions, etc. # - echo "$as_me:$LINENO: checking long timezone variable" >&5 -echo $ECHO_N "checking long timezone variable... $ECHO_C" >&6 -if test "${tcl_cv_timezone_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 +echo "configure:6688: checking long timezone variable" >&5 +if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < -int -main () -{ +int main() { extern long timezone; timezone += 1; exit (0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:6703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_timezone_long=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_timezone_long=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_timezone_long=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_timezone_long" >&5 -echo "${ECHO_T}$tcl_cv_timezone_long" >&6 + +echo "$ac_t""$tcl_cv_timezone_long" 1>&6 if test $tcl_cv_timezone_long = yes ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_TIMEZONE_VAR 1 -_ACEOF +EOF else # # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # - echo "$as_me:$LINENO: checking time_t timezone variable" >&5 -echo $ECHO_N "checking time_t timezone variable... $ECHO_C" >&6 -if test "${tcl_cv_timezone_time+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 +echo "configure:6726: checking time_t timezone variable" >&5 +if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < -int -main () -{ +int main() { extern time_t timezone; timezone += 1; exit (0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:6741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_timezone_time=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_timezone_time=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_timezone_time=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_timezone_time" >&5 -echo "${ECHO_T}$tcl_cv_timezone_time" >&6 + +echo "$ac_t""$tcl_cv_timezone_time" 1>&6 if test $tcl_cv_timezone_time = yes ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_TIMEZONE_VAR 1 -_ACEOF +EOF fi fi @@ -13340,218 +6763,89 @@ _ACEOF # Some systems (e.g., IRIX 4.0.5) lack the st_blksize field # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- +echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 +echo "configure:6768: checking for st_blksize in struct stat" >&5 +if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +int main() { +struct stat s; s.st_blksize; +; return 0; } +EOF +if { (eval echo configure:6781: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_struct_st_blksize=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_struct_st_blksize=no +fi +rm -f conftest* +fi -echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 -echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6 -if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static struct stat ac_aggr; -if (ac_aggr.st_blksize) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_stat_st_blksize=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static struct stat ac_aggr; -if (sizeof ac_aggr.st_blksize) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_stat_st_blksize=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_member_struct_stat_st_blksize=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6 -if test $ac_cv_member_struct_stat_st_blksize = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF +echo "$ac_t""$ac_cv_struct_st_blksize" 1>&6 +if test $ac_cv_struct_st_blksize = yes; then + cat >> confdefs.h <<\EOF #define HAVE_ST_BLKSIZE 1 -_ACEOF +EOF fi - -echo "$as_me:$LINENO: checking for fstatfs" >&5 -echo $ECHO_N "checking for fstatfs... $ECHO_C" >&6 -if test "${ac_cv_func_fstatfs+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 +echo "configure:6802: checking for fstatfs" >&5 +if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define fstatfs to an innocuous variant, in case declares fstatfs. - For example, HP-UX 11i declares gettimeofday. */ -#define fstatfs innocuous_fstatfs - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef fstatfs - + which can conflict with char fstatfs(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char fstatfs (); + builtin and then its argument prototype would still apply. */ +char fstatfs(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_fstatfs) || defined (__stub___fstatfs) choke me #else -char (*f) () = fstatfs; -#endif -#ifdef __cplusplus -} +fstatfs(); #endif -int -main () -{ -return f != fstatfs; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_fstatfs=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_fstatfs=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_fstatfs" >&5 -echo "${ECHO_T}$ac_cv_func_fstatfs" >&6 -if test $ac_cv_func_fstatfs = yes; then +; return 0; } +EOF +if { (eval echo configure:6830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_fstatfs=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_fstatfs=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'fstatfs`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_FSTATFS 1 -_ACEOF +EOF fi @@ -13560,86 +6854,41 @@ fi # Some system have no memcmp or it does not work with 8 bit # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for working memcmp" >&5 -echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6 -if test "${ac_cv_func_memcmp_working+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 +echo "configure:6859: checking for 8-bit clean memcmp" >&5 +if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then - ac_cv_func_memcmp_working=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ + ac_cv_func_memcmp_clean=no +else + cat > conftest.$ac_ext <= 0 || memcmp(&c1, &c2, 1) >= 0) - exit (1); - - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - exit (1); - } - exit (0); - } - - ; - return 0; + exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1); } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_memcmp_working=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_memcmp_working=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 -echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6 -test $ac_cv_func_memcmp_working = no && case $LIBOBJS in - "memcmp.$ac_objext" | \ - *" memcmp.$ac_objext" | \ - "memcmp.$ac_objext "* | \ - *" memcmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; -esac +EOF +if { (eval echo configure:6877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_func_memcmp_clean=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_func_memcmp_clean=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 +test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" #-------------------------------------------------------------------- @@ -13647,105 +6896,58 @@ esac # have no memmove (we assume they have bcopy instead). # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for memmove" >&5 -echo $ECHO_N "checking for memmove... $ECHO_C" >&6 -if test "${ac_cv_func_memmove+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define memmove to an innocuous variant, in case declares memmove. - For example, HP-UX 11i declares gettimeofday. */ -#define memmove innocuous_memmove - +echo $ac_n "checking for memmove""... $ac_c" 1>&6 +echo "configure:6901: checking for memmove" >&5 +if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef memmove - + which can conflict with char memmove(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char memmove (); + builtin and then its argument prototype would still apply. */ +char memmove(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_memmove) || defined (__stub___memmove) choke me #else -char (*f) () = memmove; -#endif -#ifdef __cplusplus -} +memmove(); #endif -int -main () -{ -return f != memmove; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_memmove=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_memmove=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_memmove" >&5 -echo "${ECHO_T}$ac_cv_func_memmove" >&6 -if test $ac_cv_func_memmove = yes; then +; return 0; } +EOF +if { (eval echo configure:6929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_memmove=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_memmove=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_MEMMOVE 1 -_ACEOF - cat >>confdefs.h <<\_ACEOF +EOF + cat >> confdefs.h <<\EOF #define NO_STRING_H 1 -_ACEOF +EOF fi @@ -13755,53 +6957,40 @@ fi # even if the original string is empty. #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then - echo "$as_me:$LINENO: checking proper strstr implementation" >&5 -echo $ECHO_N "checking proper strstr implementation... $ECHO_C" >&6 -if test "${tcl_cv_strstr_unbroken+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 +echo "configure:6962: checking proper strstr implementation" >&5 +if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + if test "$cross_compiling" = yes; then tcl_cv_strstr_unbroken=broken else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if { (eval echo configure:6980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then tcl_cv_strstr_unbroken=ok else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_strstr_unbroken=broken + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_strstr_unbroken=broken fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + fi -echo "$as_me:$LINENO: result: $tcl_cv_strstr_unbroken" >&5 -echo "${ECHO_T}$tcl_cv_strstr_unbroken" >&6 + +echo "$ac_t""$tcl_cv_strstr_unbroken" 1>&6 if test $tcl_cv_strstr_unbroken = broken; then LIBOBJS="$LIBOBJS strstr.o" fi @@ -13813,118 +7002,68 @@ fi # pointer for the string "0". #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for strtoul" >&5 -echo $ECHO_N "checking for strtoul... $ECHO_C" >&6 -if test "${ac_cv_func_strtoul+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define strtoul to an innocuous variant, in case declares strtoul. - For example, HP-UX 11i declares gettimeofday. */ -#define strtoul innocuous_strtoul - +echo $ac_n "checking for strtoul""... $ac_c" 1>&6 +echo "configure:7007: checking for strtoul" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef strtoul - + which can conflict with char strtoul(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strtoul (); + builtin and then its argument prototype would still apply. */ +char strtoul(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strtoul) || defined (__stub___strtoul) choke me #else -char (*f) () = strtoul; -#endif -#ifdef __cplusplus -} +strtoul(); #endif -int -main () -{ -return f != strtoul; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strtoul=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_strtoul=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_strtoul" >&5 -echo "${ECHO_T}$ac_cv_func_strtoul" >&6 -if test $ac_cv_func_strtoul = yes; then +; return 0; } +EOF +if { (eval echo configure:7035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strtoul=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_strtoul=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'strtoul`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=1 else - tcl_ok=0 + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi if test $tcl_ok = 1; then - echo "$as_me:$LINENO: checking proper strtoul implementation" >&5 -echo $ECHO_N "checking proper strtoul implementation... $ECHO_C" >&6 -if test "${tcl_cv_strtoul_unbroken+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 +echo "configure:7057: checking proper strtoul implementation" >&5 +if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + if test "$cross_compiling" = yes; then tcl_cv_strtoul_unbroken=broken else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext <>conftest.$ac_ext <<_ACEOF } exit(0); } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - tcl_cv_strtoul_unbroken=ok -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_strtoul_unbroken=broken -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $tcl_cv_strtoul_unbroken" >&5 -echo "${ECHO_T}$tcl_cv_strtoul_unbroken" >&6 +EOF +if { (eval echo configure:7082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_strtoul_unbroken=ok +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_strtoul_unbroken=broken +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$tcl_cv_strtoul_unbroken" 1>&6 if test $tcl_cv_strtoul_unbroken = broken; then tcl_ok=0 fi @@ -13977,118 +7106,68 @@ fi # versions of Linux strtod mis-parses strings starting with "+". #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for strtod" >&5 -echo $ECHO_N "checking for strtod... $ECHO_C" >&6 -if test "${ac_cv_func_strtod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define strtod to an innocuous variant, in case declares strtod. - For example, HP-UX 11i declares gettimeofday. */ -#define strtod innocuous_strtod - +echo $ac_n "checking for strtod""... $ac_c" 1>&6 +echo "configure:7111: checking for strtod" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef strtod - + which can conflict with char strtod(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strtod (); + builtin and then its argument prototype would still apply. */ +char strtod(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strtod) || defined (__stub___strtod) choke me #else -char (*f) () = strtod; -#endif -#ifdef __cplusplus -} +strtod(); #endif -int -main () -{ -return f != strtod; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strtod=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_strtod=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_strtod" >&5 -echo "${ECHO_T}$ac_cv_func_strtod" >&6 -if test $ac_cv_func_strtod = yes; then +; return 0; } +EOF +if { (eval echo configure:7139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strtod=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_strtod=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=1 else - tcl_ok=0 + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi if test $tcl_ok = 1; then - echo "$as_me:$LINENO: checking proper strtod implementation" >&5 -echo $ECHO_N "checking proper strtod implementation... $ECHO_C" >&6 -if test "${tcl_cv_strtod_unbroken+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 +echo "configure:7161: checking proper strtod implementation" >&5 +if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + if test "$cross_compiling" = yes; then tcl_cv_strtod_unbroken=broken else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext <>conftest.$ac_ext <<_ACEOF } exit(0); } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - tcl_cv_strtod_unbroken=ok -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_strtod_unbroken=broken -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $tcl_cv_strtod_unbroken" >&5 -echo "${ECHO_T}$tcl_cv_strtod_unbroken" >&6 +EOF +if { (eval echo configure:7186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_strtod_unbroken=ok +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_strtod_unbroken=broken +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$tcl_cv_strtod_unbroken" 1>&6 if test $tcl_cv_strtod_unbroken = broken; then tcl_ok=0 fi @@ -14144,118 +7213,68 @@ fi #-------------------------------------------------------------------- - echo "$as_me:$LINENO: checking for strtod" >&5 -echo $ECHO_N "checking for strtod... $ECHO_C" >&6 -if test "${ac_cv_func_strtod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for strtod""... $ac_c" 1>&6 +echo "configure:7218: checking for strtod" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define strtod to an innocuous variant, in case declares strtod. - For example, HP-UX 11i declares gettimeofday. */ -#define strtod innocuous_strtod - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef strtod - + which can conflict with char strtod(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strtod (); + builtin and then its argument prototype would still apply. */ +char strtod(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strtod) || defined (__stub___strtod) choke me #else -char (*f) () = strtod; -#endif -#ifdef __cplusplus -} +strtod(); #endif -int -main () -{ -return f != strtod; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strtod=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_strtod=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_strtod" >&5 -echo "${ECHO_T}$ac_cv_func_strtod" >&6 -if test $ac_cv_func_strtod = yes; then +; return 0; } +EOF +if { (eval echo configure:7246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strtod=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_strtod=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'strtod`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_strtod=1 else - tcl_strtod=0 + echo "$ac_t""no" 1>&6 +tcl_strtod=0 fi if test "$tcl_strtod" = 1; then - echo "$as_me:$LINENO: checking for Solaris2.4/Tru64 strtod bugs" >&5 -echo $ECHO_N "checking for Solaris2.4/Tru64 strtod bugs... $ECHO_C" >&6 -if test "${tcl_cv_strtod_buggy+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 +echo "configure:7268: checking for Solaris2.4/Tru64 strtod bugs" >&5 +if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + if test "$cross_compiling" = yes; then tcl_cv_strtod_buggy=buggy else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext <>conftest.$ac_ext <<_ACEOF } exit(0); } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if { (eval echo configure:7300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then tcl_cv_strtod_buggy=ok else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_strtod_buggy=buggy + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_strtod_buggy=buggy fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + fi -echo "$as_me:$LINENO: result: $tcl_cv_strtod_buggy" >&5 -echo "${ECHO_T}$tcl_cv_strtod_buggy" >&6 + +echo "$ac_t""$tcl_cv_strtod_buggy" 1>&6 if test "$tcl_cv_strtod_buggy" = buggy; then LIBOBJS="$LIBOBJS fixstrtod.o" - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define strtod fixstrtod -_ACEOF +EOF fi fi @@ -14317,255 +7326,253 @@ _ACEOF # they don't exist. #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for mode_t" >&5 -echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 -if test "${ac_cv_type_mode_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((mode_t *) 0) - return 0; -if (sizeof (mode_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_mode_t=yes +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:7331: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +#include +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:7344: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* -ac_cv_type_mode_t=no +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* + fi -echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 -echo "${ECHO_T}$ac_cv_type_mode_t" >&6 -if test $ac_cv_type_mode_t = yes; then + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then : else - -cat >>confdefs.h <<_ACEOF -#define mode_t int -_ACEOF + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* fi -echo "$as_me:$LINENO: checking for pid_t" >&5 -echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 -if test "${ac_cv_type_pid_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((pid_t *) 0) - return 0; -if (sizeof (pid_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_pid_t=yes + cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:7411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi -ac_cv_type_pid_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 -echo "${ECHO_T}$ac_cv_type_pid_t" >&6 -if test $ac_cv_type_pid_t = yes; then - : + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +echo $ac_n "checking for mode_t""... $ac_c" 1>&6 +echo "configure:7435: checking for mode_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_mode_t=yes else + rm -rf conftest* + ac_cv_type_mode_t=no +fi +rm -f conftest* -cat >>confdefs.h <<_ACEOF -#define pid_t int -_ACEOF +fi +echo "$ac_t""$ac_cv_type_mode_t" 1>&6 +if test $ac_cv_type_mode_t = no; then + cat >> confdefs.h <<\EOF +#define mode_t int +EOF fi -echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6 -if test "${ac_cv_type_size_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for pid_t""... $ac_c" 1>&6 +echo "configure:7468: checking for pid_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((size_t *) 0) - return 0; -if (sizeof (size_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_size_t=yes + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_pid_t=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_type_pid_t=no +fi +rm -f conftest* -ac_cv_type_size_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$ac_t""$ac_cv_type_pid_t" 1>&6 +if test $ac_cv_type_pid_t = no; then + cat >> confdefs.h <<\EOF +#define pid_t int +EOF + fi -echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6 -if test $ac_cv_type_size_t = yes; then - : + +echo $ac_n "checking for size_t""... $ac_c" 1>&6 +echo "configure:7501: checking for size_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_size_t=yes else + rm -rf conftest* + ac_cv_type_size_t=no +fi +rm -f conftest* -cat >>confdefs.h <<_ACEOF +fi +echo "$ac_t""$ac_cv_type_size_t" 1>&6 +if test $ac_cv_type_size_t = no; then + cat >> confdefs.h <<\EOF #define size_t unsigned -_ACEOF +EOF fi -echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 -echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 -if test "${ac_cv_type_uid_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 +echo "configure:7534: checking for uid_t in sys/types.h" >&5 +if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < - -_ACEOF +EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then + egrep "uid_t" >/dev/null 2>&1; then + rm -rf conftest* ac_cv_type_uid_t=yes else + rm -rf conftest* ac_cv_type_uid_t=no fi rm -f conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 -echo "${ECHO_T}$ac_cv_type_uid_t" >&6 -if test $ac_cv_type_uid_t = no; then -cat >>confdefs.h <<\_ACEOF +echo "$ac_t""$ac_cv_type_uid_t" 1>&6 +if test $ac_cv_type_uid_t = no; then + cat >> confdefs.h <<\EOF #define uid_t int -_ACEOF +EOF - -cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define gid_t int -_ACEOF +EOF fi -echo "$as_me:$LINENO: checking for socklen_t" >&5 -echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 -if test "${ac_cv_type_socklen_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 +echo "configure:7569: checking for socklen_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < #include @@ -14573,129 +7580,84 @@ cat >>conftest.$ac_ext <<_ACEOF #include #include #endif - -_ACEOF + +EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + egrep "(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* ac_cv_type_socklen_t=yes else + rm -rf conftest* ac_cv_type_socklen_t=no fi rm -f conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 -echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 + +echo "$ac_t""$ac_cv_type_socklen_t" 1>&6 if test $ac_cv_type_socklen_t = no; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define socklen_t unsigned -_ACEOF +EOF fi #-------------------------------------------------------------------- # If a system doesn't have an opendir function (man, that's old!) # then we have to supply a different version of dirent.h which -# is compatible with the substitute version of opendir that's -# provided. This version only works with V7-style directories. -#-------------------------------------------------------------------- - -echo "$as_me:$LINENO: checking for opendir" >&5 -echo $ECHO_N "checking for opendir... $ECHO_C" >&6 -if test "${ac_cv_func_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define opendir to an innocuous variant, in case declares opendir. - For example, HP-UX 11i declares gettimeofday. */ -#define opendir innocuous_opendir - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char opendir (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef opendir +# is compatible with the substitute version of opendir that's +# provided. This version only works with V7-style directories. +#-------------------------------------------------------------------- +echo $ac_n "checking for opendir""... $ac_c" 1>&6 +echo "configure:7614: checking for opendir" >&5 +if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); + builtin and then its argument prototype would still apply. */ +char opendir(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_opendir) || defined (__stub___opendir) choke me #else -char (*f) () = opendir; -#endif -#ifdef __cplusplus -} +opendir(); #endif -int -main () -{ -return f != opendir; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_opendir=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_opendir=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_opendir" >&5 -echo "${ECHO_T}$ac_cv_func_opendir" >&6 -if test $ac_cv_func_opendir = yes; then +; return 0; } +EOF +if { (eval echo configure:7642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_opendir=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_opendir=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'opendir`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define USE_DIRENT2_H 1 -_ACEOF +EOF fi @@ -14708,70 +7670,42 @@ fi # the trick. #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking union wait" >&5 -echo $ECHO_N "checking union wait... $ECHO_C" >&6 -if test "${tcl_cv_union_wait+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking union wait""... $ac_c" 1>&6 +echo "configure:7675: checking union wait" >&5 +if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include + + cat > conftest.$ac_ext < #include -int -main () -{ +int main() { union wait x; WIFEXITED(x); /* Generates compiler error if WIFEXITED * uses an int. */ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + +; return 0; } +EOF +if { (eval echo configure:7693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* tcl_cv_union_wait=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_union_wait=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_union_wait=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_union_wait" >&5 -echo "${ECHO_T}$tcl_cv_union_wait" >&6 + +echo "$ac_t""$tcl_cv_union_wait" 1>&6 if test $tcl_cv_union_wait = no; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define NO_UNION_WAIT 1 -_ACEOF +EOF fi @@ -14781,243 +7715,138 @@ fi # under Sequent Dynix it's in -linet. #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for strncasecmp" >&5 -echo $ECHO_N "checking for strncasecmp... $ECHO_C" >&6 -if test "${ac_cv_func_strncasecmp+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define strncasecmp to an innocuous variant, in case declares strncasecmp. - For example, HP-UX 11i declares gettimeofday. */ -#define strncasecmp innocuous_strncasecmp - +echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 +echo "configure:7720: checking for strncasecmp" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef strncasecmp - + which can conflict with char strncasecmp(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strncasecmp (); + builtin and then its argument prototype would still apply. */ +char strncasecmp(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strncasecmp) || defined (__stub___strncasecmp) choke me #else -char (*f) () = strncasecmp; -#endif -#ifdef __cplusplus -} +strncasecmp(); #endif -int -main () -{ -return f != strncasecmp; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strncasecmp=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_strncasecmp=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_strncasecmp" >&5 -echo "${ECHO_T}$ac_cv_func_strncasecmp" >&6 -if test $ac_cv_func_strncasecmp = yes; then +; return 0; } +EOF +if { (eval echo configure:7748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strncasecmp=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_strncasecmp=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'strncasecmp`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=1 else - tcl_ok=0 + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi if test "$tcl_ok" = 0; then - echo "$as_me:$LINENO: checking for strncasecmp in -lsocket" >&5 -echo $ECHO_N "checking for strncasecmp in -lsocket... $ECHO_C" >&6 -if test "${ac_cv_lib_socket_strncasecmp+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 +echo "configure:7770: checking for strncasecmp in -lsocket" >&5 +ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_socket_strncasecmp=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_socket_strncasecmp=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_strncasecmp" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_strncasecmp" >&6 -if test $ac_cv_lib_socket_strncasecmp = yes; then + builtin and then its argument prototype would still apply. */ +char strncasecmp(); + +int main() { +strncasecmp() +; return 0; } +EOF +if { (eval echo configure:7789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=1 else - tcl_ok=0 + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi fi if test "$tcl_ok" = 0; then - echo "$as_me:$LINENO: checking for strncasecmp in -linet" >&5 -echo $ECHO_N "checking for strncasecmp in -linet... $ECHO_C" >&6 -if test "${ac_cv_lib_inet_strncasecmp+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 +echo "configure:7813: checking for strncasecmp in -linet" >&5 +ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - ac_check_lib_save_LIBS=$LIBS + ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_inet_strncasecmp=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_inet_strncasecmp=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_inet_strncasecmp" >&5 -echo "${ECHO_T}$ac_cv_lib_inet_strncasecmp" >&6 -if test $ac_cv_lib_inet_strncasecmp = yes; then + builtin and then its argument prototype would still apply. */ +char strncasecmp(); + +int main() { +strncasecmp() +; return 0; } +EOF +if { (eval echo configure:7832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 tcl_ok=1 else - tcl_ok=0 + echo "$ac_t""no" 1>&6 +tcl_ok=0 fi fi @@ -15036,235 +7865,139 @@ fi # declare it. #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for BSDgettimeofday" >&5 -echo $ECHO_N "checking for BSDgettimeofday... $ECHO_C" >&6 -if test "${ac_cv_func_BSDgettimeofday+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define BSDgettimeofday to an innocuous variant, in case declares BSDgettimeofday. - For example, HP-UX 11i declares gettimeofday. */ -#define BSDgettimeofday innocuous_BSDgettimeofday - +echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 +echo "configure:7870: checking for BSDgettimeofday" >&5 +if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef BSDgettimeofday - + which can conflict with char BSDgettimeofday(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char BSDgettimeofday (); + builtin and then its argument prototype would still apply. */ +char BSDgettimeofday(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_BSDgettimeofday) || defined (__stub___BSDgettimeofday) choke me #else -char (*f) () = BSDgettimeofday; -#endif -#ifdef __cplusplus -} +BSDgettimeofday(); #endif -int -main () -{ -return f != BSDgettimeofday; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_BSDgettimeofday=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_BSDgettimeofday=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_BSDgettimeofday" >&5 -echo "${ECHO_T}$ac_cv_func_BSDgettimeofday" >&6 -if test $ac_cv_func_BSDgettimeofday = yes; then - cat >>confdefs.h <<\_ACEOF +; return 0; } +EOF +if { (eval echo configure:7898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_BSDgettimeofday=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_BSDgettimeofday=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'BSDgettimeofday`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF #define HAVE_BSDGETTIMEOFDAY 1 -_ACEOF +EOF else + echo "$ac_t""no" 1>&6 - echo "$as_me:$LINENO: checking for gettimeofday" >&5 -echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6 -if test "${ac_cv_func_gettimeofday+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 +echo "configure:7920: checking for gettimeofday" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define gettimeofday to an innocuous variant, in case declares gettimeofday. - For example, HP-UX 11i declares gettimeofday. */ -#define gettimeofday innocuous_gettimeofday - + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef gettimeofday - + which can conflict with char gettimeofday(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gettimeofday (); + builtin and then its argument prototype would still apply. */ +char gettimeofday(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gettimeofday) || defined (__stub___gettimeofday) choke me #else -char (*f) () = gettimeofday; -#endif -#ifdef __cplusplus -} +gettimeofday(); #endif -int -main () -{ -return f != gettimeofday; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_gettimeofday=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_gettimeofday=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_gettimeofday" >&5 -echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6 -if test $ac_cv_func_gettimeofday = yes; then +; return 0; } +EOF +if { (eval echo configure:7948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gettimeofday=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_gettimeofday=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then + echo "$ac_t""yes" 1>&6 : else - cat >>confdefs.h <<\_ACEOF + echo "$ac_t""no" 1>&6 +cat >> confdefs.h <<\EOF #define NO_GETTOD 1 -_ACEOF +EOF fi fi -echo "$as_me:$LINENO: checking for gettimeofday declaration" >&5 -echo $ECHO_N "checking for gettimeofday declaration... $ECHO_C" >&6 -if test "${tcl_cv_grep_gettimeofday+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 +echo "configure:7975: checking for gettimeofday declaration" >&5 +if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < - -_ACEOF +EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gettimeofday" >/dev/null 2>&1; then + egrep "gettimeofday" >/dev/null 2>&1; then + rm -rf conftest* tcl_cv_grep_gettimeofday=present else + rm -rf conftest* tcl_cv_grep_gettimeofday=missing fi rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_grep_gettimeofday" >&5 -echo "${ECHO_T}$tcl_cv_grep_gettimeofday" >&6 + +echo "$ac_t""$tcl_cv_grep_gettimeofday" 1>&6 if test $tcl_cv_grep_gettimeofday = missing ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define GETTOD_NOT_DECLARED 1 -_ACEOF +EOF fi @@ -15274,130 +8007,103 @@ fi # properly generate sign-extended ints from character values. #-------------------------------------------------------------------- +echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 +echo "configure:8012: checking whether char is unsigned" >&5 +if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$GCC" = yes; then + # GCC predefines this symbol on systems where it applies. +cat > conftest.$ac_ext <&5 -echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 -if test "${ac_cv_c_char_unsigned+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((char) -1) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_c_char_unsigned=yes +else + rm -rf conftest* ac_cv_c_char_unsigned=no +fi +rm -f conftest* + else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_c_char_unsigned=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_char_unsigned=no +fi +rm -fr conftest* +fi -ac_cv_c_char_unsigned=yes fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 -echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6 + +echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6 if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define __CHAR_UNSIGNED__ 1 -_ACEOF +EOF fi -echo "$as_me:$LINENO: checking signed char declarations" >&5 -echo $ECHO_N "checking signed char declarations... $ECHO_C" >&6 -if test "${tcl_cv_char_signed+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 +echo "configure:8075: checking signed char declarations" >&5 +if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else + + cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ +int main() { signed char *p; p = 0; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + +; return 0; } +EOF +if { (eval echo configure:8091: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_char_signed=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_char_signed=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_char_signed=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_char_signed" >&5 -echo "${ECHO_T}$tcl_cv_char_signed" >&6 + +echo "$ac_t""$tcl_cv_char_signed" 1>&6 if test $tcl_cv_char_signed = yes; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_SIGNED_CHAR 1 -_ACEOF +EOF fi @@ -15405,21 +8111,18 @@ fi # Does putenv() copy or not? We need to know to avoid memory leaks. #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for a putenv() that copies the buffer" >&5 -echo $ECHO_N "checking for a putenv() that copies the buffer... $ECHO_C" >&6 -if test "${tcl_cv_putenv_copy+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 +echo "configure:8116: checking for a putenv() that copies the buffer" >&5 +if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + if test "$cross_compiling" = yes; then tcl_cv_putenv_copy=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext < #define OURVAR "havecopy=yes" @@ -15438,37 +8141,27 @@ cat >>conftest.$ac_ext <<_ACEOF return 1; } } - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + +EOF +if { (eval echo configure:8147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then tcl_cv_putenv_copy=no else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -tcl_cv_putenv_copy=yes + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + tcl_cv_putenv_copy=yes fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -fr conftest* fi + fi -echo "$as_me:$LINENO: result: $tcl_cv_putenv_copy" >&5 -echo "${ECHO_T}$tcl_cv_putenv_copy" >&6 + +echo "$ac_t""$tcl_cv_putenv_copy" 1>&6 if test $tcl_cv_putenv_copy = yes; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_PUTENV_THAT_COPIES 1 -_ACEOF +EOF fi @@ -15483,220 +8176,82 @@ if test "${enable_langinfo+set}" = set; then langinfo_ok=$enableval else langinfo_ok=yes -fi; +fi + HAVE_LANGINFO=0 if test "$langinfo_ok" = "yes"; then - if test "${ac_cv_header_langinfo_h+set}" = set; then - echo "$as_me:$LINENO: checking for langinfo.h" >&5 -echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6 -if test "${ac_cv_header_langinfo_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5 -echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking langinfo.h usability" >&5 -echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking langinfo.h presence" >&5 -echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 +echo "configure:8187: checking for langinfo.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: langinfo.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: langinfo.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: langinfo.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: langinfo.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for langinfo.h" >&5 -echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6 -if test "${ac_cv_header_langinfo_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_langinfo_h=$ac_header_preproc +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8197: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5 -echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6 - +rm -f conftest* fi -if test $ac_cv_header_langinfo_h = yes; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 langinfo_ok=yes else - langinfo_ok=no + echo "$ac_t""no" 1>&6 +langinfo_ok=no fi - fi - echo "$as_me:$LINENO: checking whether to use nl_langinfo" >&5 -echo $ECHO_N "checking whether to use nl_langinfo... $ECHO_C" >&6 + echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 +echo "configure:8221: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then - if test "${tcl_cv_langinfo_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < -int -main () -{ +int main() { nl_langinfo(CODESET); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:8235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* tcl_cv_langinfo_h=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_langinfo_h=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_langinfo_h=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi - echo "$as_me:$LINENO: result: $tcl_cv_langinfo_h" >&5 -echo "${ECHO_T}$tcl_cv_langinfo_h" >&6 + echo "$ac_t""$tcl_cv_langinfo_h" 1>&6 if test $tcl_cv_langinfo_h = yes; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_LANGINFO 1 -_ACEOF +EOF fi - else - echo "$as_me:$LINENO: result: $langinfo_ok" >&5 -echo "${ECHO_T}$langinfo_ok" >&6 + else + echo "$ac_t""$langinfo_ok" 1>&6 fi @@ -15705,790 +8260,316 @@ echo "${ECHO_T}$langinfo_ok" >&6 #-------------------------------------------------------------------- if test "`uname -s`" = "Darwin" ; then - -for ac_header in copyfile.h + for ac_hdr in copyfile.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:8268: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +rm -f conftest* fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - + echo "$ac_t""no" 1>&6 fi - done - -for ac_func in copyfile + for ac_func in copyfile do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:8307: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - + which can conflict with char $ac_func(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} +$ac_func(); #endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +; return 0; } +EOF +if { (eval echo configure:8335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi done if test $tcl_corefoundation = yes; then - -for ac_header in libkern/OSAtomic.h + for ac_hdr in libkern/OSAtomic.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:8364: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8374: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +rm -f conftest* fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - + echo "$ac_t""no" 1>&6 fi - done - -for ac_func in OSSpinLockLock + for ac_func in OSSpinLockLock do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:8403: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - + which can conflict with char $ac_func(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} +$ac_func(); #endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +; return 0; } +EOF +if { (eval echo configure:8431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi done - -for ac_func in pthread_atfork + for ac_func in pthread_atfork do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:8458: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - + which can conflict with char $ac_func(); below. */ +#include /* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} +#else +$ac_func(); #endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +; return 0; } +EOF +if { (eval echo configure:8486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi done fi - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define USE_VFORK 1 -_ACEOF +EOF - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define TCL_DEFAULT_ENCODING "utf-8" -_ACEOF +EOF - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define TCL_LOAD_FROM_MEMORY 1 -_ACEOF +EOF - -for ac_header in AvailabilityMacros.h + for ac_hdr in AvailabilityMacros.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:8527: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8537: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +rm -f conftest* fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - + echo "$ac_t""no" 1>&6 fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then - echo "$as_me:$LINENO: checking if weak import is available" >&5 -echo $ECHO_N "checking if weak import is available... $ECHO_C" >&6 -if test "${tcl_cv_cc_weak_import+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 +echo "configure:8565: checking if weak import is available" >&5 +if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + cat > conftest.$ac_ext <>conftest.$ac_ext <<_ACEOF #error MAC_OS_X_VERSION_MIN_REQUIRED < 1020 #endif int rand(void) __attribute__((weak_import)); - -int -main () -{ + +int main() { rand(); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +; return 0; } +EOF +if { (eval echo configure:8588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* tcl_cv_cc_weak_import=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_cc_weak_import=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_cc_weak_import=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* CFLAGS=$hold_cflags fi -echo "$as_me:$LINENO: result: $tcl_cv_cc_weak_import" >&5 -echo "${ECHO_T}$tcl_cv_cc_weak_import" >&6 + +echo "$ac_t""$tcl_cv_cc_weak_import" 1>&6 if test $tcl_cv_cc_weak_import = yes; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_WEAK_IMPORT 1 -_ACEOF +EOF fi fi @@ -16555,398 +8611,149 @@ fi # Check for support of fts functions (readdir replacement) #-------------------------------------------------------------------- -echo "$as_me:$LINENO: checking for fts" >&5 -echo $ECHO_N "checking for fts... $ECHO_C" >&6 -if test "${tcl_cv_api_fts+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +echo $ac_n "checking for fts""... $ac_c" 1>&6 +echo "configure:8616: checking for fts" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + + cat > conftest.$ac_ext < #include #include - -int -main () -{ + +int main() { char*const p[2] = {"/", NULL}; FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL); FTSENT *e = fts_read(f); fts_close(f); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + +; return 0; } +EOF +if { (eval echo configure:8637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* tcl_cv_api_fts=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -tcl_cv_api_fts=no + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_api_fts=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest* fi -echo "$as_me:$LINENO: result: $tcl_cv_api_fts" >&5 -echo "${ECHO_T}$tcl_cv_api_fts" >&6 + +echo "$ac_t""$tcl_cv_api_fts" 1>&6 if test $tcl_cv_api_fts = yes; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define HAVE_FTS 1 -_ACEOF +EOF fi #-------------------------------------------------------------------- # The statements below check for systems where POSIX-style -# non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. +# non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. # On these systems (mostly older ones), use the old BSD-style # FIONBIO approach instead. #-------------------------------------------------------------------- - -for ac_header in sys/ioctl.h + for ac_hdr in sys/ioctl.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:8669: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +rm -f conftest* fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - + echo "$ac_t""no" 1>&6 fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - done - -for ac_header in sys/filio.h + for ac_hdr in sys/filio.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:8709: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no +rm -f conftest* fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - + echo "$ac_t""no" 1>&6 fi - done - - echo "$as_me:$LINENO: checking system version" >&5 -echo $ECHO_N "checking system version... $ECHO_C" >&6 -if test "${tcl_cv_sys_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + echo $ac_n "checking system version""... $ac_c" 1>&6 +echo "configure:8747: checking system version" >&5 +if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - + if test -f /usr/lib/NextStep/software_version; then tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then - { echo "$as_me:$LINENO: WARNING: can't find uname command" >&5 -echo "$as_me: WARNING: can't find uname command" >&2;} + echo "configure: warning: can't find uname command" 1>&2 tcl_cv_sys_version=unknown else # Special check for weird MP-RAS system (uname returns weird @@ -16960,14 +8767,14 @@ echo "$as_me: WARNING: can't find uname command" >&2;} fi fi fi - + fi -echo "$as_me:$LINENO: result: $tcl_cv_sys_version" >&5 -echo "${ECHO_T}$tcl_cv_sys_version" >&6 + +echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version - echo "$as_me:$LINENO: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 -echo $ECHO_N "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O... $ECHO_C" >&6 + echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 +echo "configure:8778: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -16975,32 +8782,28 @@ echo $ECHO_N "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O... $ECHO_C" >& # code (JO, 5/31/97). OSF*) - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define USE_FIONBIO 1 -_ACEOF +EOF - echo "$as_me:$LINENO: result: FIONBIO" >&5 -echo "${ECHO_T}FIONBIO" >&6 + echo "$ac_t""FIONBIO" 1>&6 ;; SunOS-4*) - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define USE_FIONBIO 1 -_ACEOF +EOF - echo "$as_me:$LINENO: result: FIONBIO" >&5 -echo "${ECHO_T}FIONBIO" >&6 + echo "$ac_t""FIONBIO" 1>&6 ;; ULTRIX-4.*) - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define USE_FIONBIO 1 -_ACEOF +EOF - echo "$as_me:$LINENO: result: FIONBIO" >&5 -echo "${ECHO_T}FIONBIO" >&6 + echo "$ac_t""FIONBIO" 1>&6 ;; *) - echo "$as_me:$LINENO: result: O_NONBLOCK" >&5 -echo "${ECHO_T}O_NONBLOCK" >&6 + echo "$ac_t""O_NONBLOCK" 1>&6 ;; esac @@ -17031,40 +8834,36 @@ HTML_DIR='$(DISTDIR)/html' # up the Tcl library. if test "`uname -s`" = "Darwin" ; then - + if test "`uname -s`" = "Darwin" ; then - echo "$as_me:$LINENO: checking how to package libraries" >&5 -echo $ECHO_N "checking how to package libraries... $ECHO_C" >&6 + echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 +echo "configure:8841: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" enable_framework=$enableval else enable_framework=no -fi; +fi + if test $enable_framework = yes; then if test $SHARED_BUILD = 0; then - { echo "$as_me:$LINENO: WARNING: Frameworks can only be built if --enable-shared is yes" >&5 -echo "$as_me: WARNING: Frameworks can only be built if --enable-shared is yes" >&2;} + echo "configure: warning: Frameworks can only be built if --enable-shared is yes" 1>&2 enable_framework=no fi if test $tcl_corefoundation = no; then - { echo "$as_me:$LINENO: WARNING: Frameworks can only be used when CoreFoundation is available" >&5 -echo "$as_me: WARNING: Frameworks can only be used when CoreFoundation is available" >&2;} + echo "configure: warning: Frameworks can only be used when CoreFoundation is available" 1>&2 enable_framework=no fi fi if test $enable_framework = yes; then - echo "$as_me:$LINENO: result: framework" >&5 -echo "${ECHO_T}framework" >&6 + echo "$ac_t""framework" 1>&6 FRAMEWORK_BUILD=1 else if test $SHARED_BUILD = 1; then - echo "$as_me:$LINENO: result: shared library" >&5 -echo "${ECHO_T}shared library" >&6 + echo "$ac_t""shared library" 1>&6 else - echo "$as_me:$LINENO: result: static library" >&5 -echo "${ECHO_T}static library" >&6 + echo "$ac_t""static library" 1>&6 fi FRAMEWORK_BUILD=0 fi @@ -17075,15 +8874,14 @@ echo "${ECHO_T}static library" >&6 fi if test "$FRAMEWORK_BUILD" = "1" ; then - cat >>confdefs.h <<\_ACEOF + cat >> confdefs.h <<\EOF #define TCL_FRAMEWORK 1 -_ACEOF +EOF tcl_config_files="${tcl_config_files} Tcl-Info.plist:../macosx/Tcl-Info.plist.in" # Construct a fake local framework structure to make linking with # '-framework Tcl' and running of tcltest work - ac_config_commands="$ac_config_commands default-1" - + LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH" if test "${libdir}" = '${exec_prefix}/lib'; then # override libdir default @@ -17099,12 +8897,12 @@ _ACEOF PRIVATE_INCLUDE_DIR="${libdir}/PrivateHeaders" HTML_DIR="${libdir}/Resources/Documentation/Reference/Tcl" EXTRA_INSTALL="install-private-headers html-tcl" - EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' + EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."' TCL_YEAR="`date +%Y`" - # Don't use AC_DEFINE for the following as the framework version define - # needs to go into the Makefile even when using autoheader, so that we + # Don't use AC_DEFINE for the following as the framework version define + # needs to go into the Makefile even when using autoheader, so that we # can pick up a potential make override of VERSION. Also, don't put this # into CFLAGS as it should not go into tclConfig.sh EXTRA_CC_SWITCHES='-DTCL_FRAMEWORK_VERSION=\"$(VERSION)\"' @@ -17122,10 +8920,10 @@ else else TCL_BUILD_EXP_FILE="lib.exp" eval "TCL_EXP_FILE=libtcl${TCL_EXPORT_FILE_SUFFIX}" - + # Replace DBGX with TCL_DBGX eval "TCL_EXP_FILE=\"${TCL_EXP_FILE}\"" - + if test "$GCC" = "yes" ; then TCL_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TCL_BUILD_EXP_FILE} -L`pwd`" TCL_LIB_SPEC="-Wl,-bI:${libdir}/${TCL_EXP_FILE} -L`pwd`" @@ -17237,1118 +9035,334 @@ TCL_SHARED_BUILD=${SHARED_BUILD} tcl_config_files="${tcl_config_files} Makefile dltest/Makefile tclConfig.sh" - ac_config_files="$ac_config_files ${tcl_config_files}" -cat >confcache <<\_ACEOF +trap '' 1 2 15 +cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. # -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. # -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - +EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file + echo "updating cache $cache_file" + cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed - - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# # Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh +# configure, is in ./config.log if it exists. -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac done -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` +ac_given_srcdir=$srcdir +trap 'rm -fr `echo "${tcl_config_files}" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@MAN_FLAGS@%$MAN_FLAGS%g +s%@CC@%$CC%g +s%@CPP@%$CPP%g +s%@TCL_THREADS@%$TCL_THREADS%g +s%@TCL_LIBS@%$TCL_LIBS%g +s%@MATH_LIBS@%$MATH_LIBS%g +s%@RANLIB@%$RANLIB%g +s%@AR@%$AR%g +s%@DL_LIBS@%$DL_LIBS%g +s%@DL_OBJS@%$DL_OBJS%g +s%@PLAT_OBJS@%$PLAT_OBJS%g +s%@PLAT_SRCS@%$PLAT_SRCS%g +s%@CFLAGS_DEBUG@%$CFLAGS_DEBUG%g +s%@CFLAGS_OPTIMIZE@%$CFLAGS_OPTIMIZE%g +s%@CFLAGS_WARNING@%$CFLAGS_WARNING%g +s%@LDFLAGS_DEBUG@%$LDFLAGS_DEBUG%g +s%@LDFLAGS_OPTIMIZE@%$LDFLAGS_OPTIMIZE%g +s%@CC_SEARCH_FLAGS@%$CC_SEARCH_FLAGS%g +s%@LD_SEARCH_FLAGS@%$LD_SEARCH_FLAGS%g +s%@STLIB_LD@%$STLIB_LD%g +s%@SHLIB_LD@%$SHLIB_LD%g +s%@TCL_SHLIB_LD_EXTRAS@%$TCL_SHLIB_LD_EXTRAS%g +s%@TK_SHLIB_LD_EXTRAS@%$TK_SHLIB_LD_EXTRAS%g +s%@SHLIB_LD_LIBS@%$SHLIB_LD_LIBS%g +s%@SHLIB_CFLAGS@%$SHLIB_CFLAGS%g +s%@SHLIB_SUFFIX@%$SHLIB_SUFFIX%g +s%@MAKE_LIB@%$MAKE_LIB%g +s%@MAKE_STUB_LIB@%$MAKE_STUB_LIB%g +s%@INSTALL_LIB@%$INSTALL_LIB%g +s%@INSTALL_STUB_LIB@%$INSTALL_STUB_LIB%g +s%@CFLAGS_DEFAULT@%$CFLAGS_DEFAULT%g +s%@LDFLAGS_DEFAULT@%$LDFLAGS_DEFAULT%g +s%@LIBOBJS@%$LIBOBJS%g +s%@TCL_VERSION@%$TCL_VERSION%g +s%@TCL_MAJOR_VERSION@%$TCL_MAJOR_VERSION%g +s%@TCL_MINOR_VERSION@%$TCL_MINOR_VERSION%g +s%@TCL_PATCH_LEVEL@%$TCL_PATCH_LEVEL%g +s%@TCL_YEAR@%$TCL_YEAR%g +s%@TCL_LIB_FILE@%$TCL_LIB_FILE%g +s%@TCL_LIB_FLAG@%$TCL_LIB_FLAG%g +s%@TCL_LIB_SPEC@%$TCL_LIB_SPEC%g +s%@TCL_STUB_LIB_FILE@%$TCL_STUB_LIB_FILE%g +s%@TCL_STUB_LIB_FLAG@%$TCL_STUB_LIB_FLAG%g +s%@TCL_STUB_LIB_SPEC@%$TCL_STUB_LIB_SPEC%g +s%@TCL_STUB_LIB_PATH@%$TCL_STUB_LIB_PATH%g +s%@TCL_INCLUDE_SPEC@%$TCL_INCLUDE_SPEC%g +s%@TCL_BUILD_STUB_LIB_SPEC@%$TCL_BUILD_STUB_LIB_SPEC%g +s%@TCL_BUILD_STUB_LIB_PATH@%$TCL_BUILD_STUB_LIB_PATH%g +s%@TCL_SRC_DIR@%$TCL_SRC_DIR%g +s%@TCL_DBGX@%$TCL_DBGX%g +s%@CFG_TCL_SHARED_LIB_SUFFIX@%$CFG_TCL_SHARED_LIB_SUFFIX%g +s%@CFG_TCL_UNSHARED_LIB_SUFFIX@%$CFG_TCL_UNSHARED_LIB_SUFFIX%g +s%@CFG_TCL_EXPORT_FILE_SUFFIX@%$CFG_TCL_EXPORT_FILE_SUFFIX%g +s%@TCL_SHARED_BUILD@%$TCL_SHARED_BUILD%g +s%@LD_LIBRARY_PATH_VAR@%$LD_LIBRARY_PATH_VAR%g +s%@TCL_BUILD_LIB_SPEC@%$TCL_BUILD_LIB_SPEC%g +s%@TCL_NEEDS_EXP_FILE@%$TCL_NEEDS_EXP_FILE%g +s%@TCL_BUILD_EXP_FILE@%$TCL_BUILD_EXP_FILE%g +s%@TCL_EXP_FILE@%$TCL_EXP_FILE%g +s%@TCL_LIB_VERSIONS_OK@%$TCL_LIB_VERSIONS_OK%g +s%@TCL_SHARED_LIB_SUFFIX@%$TCL_SHARED_LIB_SUFFIX%g +s%@TCL_UNSHARED_LIB_SUFFIX@%$TCL_UNSHARED_LIB_SUFFIX%g +s%@TCL_HAS_LONGLONG@%$TCL_HAS_LONGLONG%g +s%@BUILD_DLTEST@%$BUILD_DLTEST%g +s%@TCL_PACKAGE_PATH@%$TCL_PACKAGE_PATH%g +s%@TCL_LIBRARY@%$TCL_LIBRARY%g +s%@PRIVATE_INCLUDE_DIR@%$PRIVATE_INCLUDE_DIR%g +s%@HTML_DIR@%$HTML_DIR%g +s%@EXTRA_CC_SWITCHES@%$EXTRA_CC_SWITCHES%g +s%@EXTRA_INSTALL@%$EXTRA_INSTALL%g +s%@EXTRA_INSTALL_BINARIES@%$EXTRA_INSTALL_BINARIES%g +s%@EXTRA_BUILD_HTML@%$EXTRA_BUILD_HTML%g -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 + sed "${ac_end}q" conftest.subs > conftest.s$ac_file fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` else - as_ln_s='ln -s' + ac_dir_suffix= ac_dots= fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to ." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2003 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; esac - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +EOF +cat >> $CONFIG_STATUS <>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "${tcl_config_files}" ) CONFIG_FILES="$CONFIG_FILES ${tcl_config_files}" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@MAN_FLAGS@,$MAN_FLAGS,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CPP@,$CPP,;t t -s,@EGREP@,$EGREP,;t t -s,@TCL_THREADS@,$TCL_THREADS,;t t -s,@TCL_LIBS@,$TCL_LIBS,;t t -s,@MATH_LIBS@,$MATH_LIBS,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@AR@,$AR,;t t -s,@DL_LIBS@,$DL_LIBS,;t t -s,@DL_OBJS@,$DL_OBJS,;t t -s,@PLAT_OBJS@,$PLAT_OBJS,;t t -s,@PLAT_SRCS@,$PLAT_SRCS,;t t -s,@CFLAGS_DEBUG@,$CFLAGS_DEBUG,;t t -s,@CFLAGS_OPTIMIZE@,$CFLAGS_OPTIMIZE,;t t -s,@CFLAGS_WARNING@,$CFLAGS_WARNING,;t t -s,@LDFLAGS_DEBUG@,$LDFLAGS_DEBUG,;t t -s,@LDFLAGS_OPTIMIZE@,$LDFLAGS_OPTIMIZE,;t t -s,@CC_SEARCH_FLAGS@,$CC_SEARCH_FLAGS,;t t -s,@LD_SEARCH_FLAGS@,$LD_SEARCH_FLAGS,;t t -s,@STLIB_LD@,$STLIB_LD,;t t -s,@SHLIB_LD@,$SHLIB_LD,;t t -s,@TCL_SHLIB_LD_EXTRAS@,$TCL_SHLIB_LD_EXTRAS,;t t -s,@TK_SHLIB_LD_EXTRAS@,$TK_SHLIB_LD_EXTRAS,;t t -s,@SHLIB_LD_LIBS@,$SHLIB_LD_LIBS,;t t -s,@SHLIB_CFLAGS@,$SHLIB_CFLAGS,;t t -s,@SHLIB_SUFFIX@,$SHLIB_SUFFIX,;t t -s,@MAKE_LIB@,$MAKE_LIB,;t t -s,@MAKE_STUB_LIB@,$MAKE_STUB_LIB,;t t -s,@INSTALL_LIB@,$INSTALL_LIB,;t t -s,@INSTALL_STUB_LIB@,$INSTALL_STUB_LIB,;t t -s,@CFLAGS_DEFAULT@,$CFLAGS_DEFAULT,;t t -s,@LDFLAGS_DEFAULT@,$LDFLAGS_DEFAULT,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@TCL_VERSION@,$TCL_VERSION,;t t -s,@TCL_MAJOR_VERSION@,$TCL_MAJOR_VERSION,;t t -s,@TCL_MINOR_VERSION@,$TCL_MINOR_VERSION,;t t -s,@TCL_PATCH_LEVEL@,$TCL_PATCH_LEVEL,;t t -s,@TCL_YEAR@,$TCL_YEAR,;t t -s,@TCL_LIB_FILE@,$TCL_LIB_FILE,;t t -s,@TCL_LIB_FLAG@,$TCL_LIB_FLAG,;t t -s,@TCL_LIB_SPEC@,$TCL_LIB_SPEC,;t t -s,@TCL_STUB_LIB_FILE@,$TCL_STUB_LIB_FILE,;t t -s,@TCL_STUB_LIB_FLAG@,$TCL_STUB_LIB_FLAG,;t t -s,@TCL_STUB_LIB_SPEC@,$TCL_STUB_LIB_SPEC,;t t -s,@TCL_STUB_LIB_PATH@,$TCL_STUB_LIB_PATH,;t t -s,@TCL_INCLUDE_SPEC@,$TCL_INCLUDE_SPEC,;t t -s,@TCL_BUILD_STUB_LIB_SPEC@,$TCL_BUILD_STUB_LIB_SPEC,;t t -s,@TCL_BUILD_STUB_LIB_PATH@,$TCL_BUILD_STUB_LIB_PATH,;t t -s,@TCL_SRC_DIR@,$TCL_SRC_DIR,;t t -s,@TCL_DBGX@,$TCL_DBGX,;t t -s,@CFG_TCL_SHARED_LIB_SUFFIX@,$CFG_TCL_SHARED_LIB_SUFFIX,;t t -s,@CFG_TCL_UNSHARED_LIB_SUFFIX@,$CFG_TCL_UNSHARED_LIB_SUFFIX,;t t -s,@CFG_TCL_EXPORT_FILE_SUFFIX@,$CFG_TCL_EXPORT_FILE_SUFFIX,;t t -s,@TCL_SHARED_BUILD@,$TCL_SHARED_BUILD,;t t -s,@LD_LIBRARY_PATH_VAR@,$LD_LIBRARY_PATH_VAR,;t t -s,@TCL_BUILD_LIB_SPEC@,$TCL_BUILD_LIB_SPEC,;t t -s,@TCL_NEEDS_EXP_FILE@,$TCL_NEEDS_EXP_FILE,;t t -s,@TCL_BUILD_EXP_FILE@,$TCL_BUILD_EXP_FILE,;t t -s,@TCL_EXP_FILE@,$TCL_EXP_FILE,;t t -s,@TCL_LIB_VERSIONS_OK@,$TCL_LIB_VERSIONS_OK,;t t -s,@TCL_SHARED_LIB_SUFFIX@,$TCL_SHARED_LIB_SUFFIX,;t t -s,@TCL_UNSHARED_LIB_SUFFIX@,$TCL_UNSHARED_LIB_SUFFIX,;t t -s,@TCL_HAS_LONGLONG@,$TCL_HAS_LONGLONG,;t t -s,@BUILD_DLTEST@,$BUILD_DLTEST,;t t -s,@TCL_PACKAGE_PATH@,$TCL_PACKAGE_PATH,;t t -s,@TCL_LIBRARY@,$TCL_LIBRARY,;t t -s,@PRIVATE_INCLUDE_DIR@,$PRIVATE_INCLUDE_DIR,;t t -s,@HTML_DIR@,$HTML_DIR,;t t -s,@EXTRA_CC_SWITCHES@,$EXTRA_CC_SWITCHES,;t t -s,@EXTRA_INSTALL@,$EXTRA_INSTALL,;t t -s,@EXTRA_INSTALL_BINARIES@,$EXTRA_INSTALL_BINARIES,;t t -s,@EXTRA_BUILD_HTML@,$EXTRA_BUILD_HTML,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - default-1 ) test "$FRAMEWORK_BUILD" = "1" && n=Tcl && +EOF +cat >> $CONFIG_STATUS <<\EOF +test "$FRAMEWORK_BUILD" = "1" && n=Tcl && f=$n.framework && v=Versions/$VERSION && echo "creating $f" && rm -rf $f && mkdir -p $f/$v/Resources && ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && unset n f v - ;; - esac -done -_ACEOF + -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF +exit 0 +EOF chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 -- cgit v0.12 From b98d8af767943c732d5b80448d159a9a6cbb1b09 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Thu, 7 Sep 2006 18:49:27 +0000 Subject: * unix/tclUnixFCmd.c: Removed some false tests added (and left by mistake) by fixing the Tcl Bug: 999544 * unix/tclUnixCompat.c: Added fallback to MT-unsafe library calls if TCL_THREADS is not defined. Fixed alignment of arrays copied by CopyArrayi() to be on the sizeof(char *) boundary. --- ChangeLog | 10 +++++++ unix/tclUnixCompat.c | 83 +++++++++++++++++++++++++++++++++++++++------------- unix/tclUnixFCmd.c | 6 ++-- 3 files changed, 75 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 45651a7..f43fe01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-09-07 Zoran Vasiljevic + + * unix/tclUnixFCmd.c: Removed some false tests added + (and left by mistake) by fixing the Tcl Bug: 999544 + + * unix/tclUnixCompat.c: Added fallback to MT-unsafe + library calls if TCL_THREADS is not defined. + Fixed alignment of arrays copied by CopyArrayi() to be + on the sizeof(char *) boundary. + 2006-09-07 Andreas Kupries * unix/configure: Regenerated using autoconf 2.13. diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index 5ab78aa..c719b59 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.4 2006/09/07 09:08:12 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.5 2006/09/07 18:49:29 vasiljevic Exp $ * */ @@ -18,10 +18,22 @@ #include /* + * Used to pad structures at size'd boundaries + */ + +#define PadBuffer(buffer, length, size) \ + if (((length) % (size))) { \ + (buffer) += ((length) % (size)); \ + (length) += ((length) % (size)); \ + } + +/* * Per-thread private storage used to store values * returned from MT-unsafe library calls. */ +#ifdef TCL_THREADS + typedef struct ThreadSpecificData { struct passwd pwd; @@ -45,8 +57,8 @@ static Tcl_ThreadDataKey dataKey; Tcl_Mutex compatLock; -#if !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) || \ - !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETGRNAM_R) +#if (!defined(HAVE_GETHOSTBYNAME_R) && !defined(HAVE_GETHOSTBYADDR_R)) || \ + (!defined(HAVE_GETPWUID_R) && !defined(HAVE_GETGRGID_R)) /* @@ -140,10 +152,11 @@ CopyString(char *src, char *buf, int buflen) return len; } +#endif /* !defined(HAVE_GETHOSTBYNAME_R) && !defined(HAVE_GETHOSTBYADDR_R) && \ + !defined(HAVE_GETPWUID_R) && !defined(HAVE_GETGRGID_R) */ -#endif /* !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) || - !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETGRNAM_R) */ +#if !defined(HAVE_GETHOSTBYNAME_R) && !defined(HAVE_GETHOSTBYADDR_R) /* *--------------------------------------------------------------------------- @@ -162,7 +175,6 @@ CopyString(char *src, char *buf, int buflen) *--------------------------------------------------------------------------- */ -#if !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) static int CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) { @@ -179,6 +191,7 @@ CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) len += copied; p = buf + len; + PadBuffer(p, len, sizeof(char *)); copied = CopyArray(tgtPtr->h_aliases, -1, p, buflen - len); if (copied == -1) { goto range; @@ -187,6 +200,7 @@ CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) len += copied; p += len; + PadBuffer(p, len, sizeof(char *)); copied = CopyArray(tgtPtr->h_addr_list, tgtPtr->h_length, p, buflen - len); if (copied == -1) { goto range; @@ -195,8 +209,9 @@ CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) return 0; } -#endif /* !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) */ +#endif /* !defined(HAVE_GETHOSTBYNAME_R) && !defined(HAVE_GETHOSTBYADDR_R) */ +#if !defined(HAVE_GETPWUID_R) /* *--------------------------------------------------------------------------- @@ -216,7 +231,6 @@ CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) *--------------------------------------------------------------------------- */ -#if !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETPWUID_R) static int CopyPwd(struct passwd *tgtPtr, char *buf, int buflen) { @@ -257,8 +271,9 @@ CopyPwd(struct passwd *tgtPtr, char *buf, int buflen) return 0; } -#endif /* HAVE_GETPWNAM_R || HAVE_GETPWUID_R*/ +#endif /* !defined(HAVE_GETPWUID_R) */ +#if !defined(HAVE_GETGRGID_R) /* *--------------------------------------------------------------------------- @@ -277,7 +292,6 @@ CopyPwd(struct passwd *tgtPtr, char *buf, int buflen) *--------------------------------------------------------------------------- */ -#if !defined(HAVE_GETGRNAM_R) || !defined(HAVE_GETGRGID_R) static int CopyGrp(struct group *tgtPtr, char *buf, int buflen) { @@ -305,6 +319,7 @@ CopyGrp(struct group *tgtPtr, char *buf, int buflen) p = buf + len; /* Copy group members */ + PadBuffer(p, len, sizeof(char *)); copied = CopyArray((char **)tgtPtr->gr_mem, -1, p, buflen - len); if (copied == -1) { goto range; @@ -313,7 +328,9 @@ CopyGrp(struct group *tgtPtr, char *buf, int buflen) return 0; } -#endif /* HAVE_GETGRNAM_R || HAVE_GETGRGID_R*/ +#endif /* !defined(HAVE_GETGRGID_R) */ + +#endif /* TCL_THREADS */ /* @@ -335,13 +352,16 @@ CopyGrp(struct group *tgtPtr, char *buf, int buflen) struct passwd * TclpGetPwNam(const char *name) -{ +{ +#if !defined(TCL_THREADS) + return getpwnam(name); +#else ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETPWNAM_R_5) - struct passwd *pwPtr; - return (getpwnam_r(name, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), - &pwPtr) == 0) ? &tsdPtr->pwd : NULL; + struct passwd *pwPtr = NULL; + return (getpwnam_r(name, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), + &pwPtr) == 0 && pwPtr != NULL) ? &tsdPtr->pwd : NULL; #elif defined(HAVE_GETPWNAM_R_4) return getpwnam_r(name, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)); @@ -361,6 +381,7 @@ TclpGetPwNam(const char *name) return pwPtr; #endif return NULL; /* Not reached */ +#endif /* TCL_THREADS */ } @@ -384,12 +405,15 @@ TclpGetPwNam(const char *name) struct passwd * TclpGetPwUid(uid_t uid) { +#if !defined(TCL_THREADS) + return getpwuid(uid); +#else ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETPWUID_R_5) - struct passwd *pwPtr; + struct passwd *pwPtr = NULL; return (getpwuid_r(uid, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), - &pwPtr) == 0) ? &tsdPtr->pwd : NULL; + &pwPtr) == 0 && pwPtr != NULL) ? &tsdPtr->pwd : NULL; #elif defined(HAVE_GETPWUID_R_4) return getpwuid_r(uid, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)); @@ -409,6 +433,7 @@ TclpGetPwUid(uid_t uid) return pwPtr; #endif return NULL; /* Not reached */ +#endif /* TCL_THREADS */ } @@ -432,12 +457,15 @@ TclpGetPwUid(uid_t uid) struct group * TclpGetGrNam(const char *name) { +#if !defined(TCL_THREADS) + return getgrnam(name); +#else ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETGRNAM_R_5) - struct group *grPtr; + struct group *grPtr = NULL; return (getgrnam_r(name, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf), - &grPtr) == 0) ? &tsdPtr->grp : NULL; + &grPtr) == 0 && grPtr != NULL) ? &tsdPtr->grp : NULL; #elif defined(HAVE_GETGRNAM_R_4) return getgrnam_r(name, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)); @@ -457,6 +485,7 @@ TclpGetGrNam(const char *name) return grPtr; #endif return NULL; /* Not reached */ +#endif /* TCL_THREADS */ } @@ -480,12 +509,15 @@ TclpGetGrNam(const char *name) struct group * TclpGetGrGid(gid_t gid) { +#if !defined(TCL_THREADS) + return getgrgid(gid); +#else ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETGRGID_R_5) - struct group *grPtr; + struct group *grPtr = NULL; return (getgrgid_r(gid, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf), - &grPtr) == 0) ? &tsdPtr->grp : NULL; + &grPtr) == 0 && grPtr != NULL) ? &tsdPtr->grp : NULL; #elif defined(HAVE_GETGRGID_R_4) return getgrgid_r(gid, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)); @@ -505,6 +537,7 @@ TclpGetGrGid(gid_t gid) return grPtr; #endif return NULL; /* Not reached */ +#endif /* TCL_THREADS */ } @@ -528,6 +561,9 @@ TclpGetGrGid(gid_t gid) struct hostent * TclpGetHostByName(const char *name) { +#if !defined(TCL_THREADS) + return gethostbyname(name); +#else ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETHOSTBYNAME_R_5) @@ -562,6 +598,7 @@ TclpGetHostByName(const char *name) return hePtr; #endif return NULL; /* Not reached */ +#endif /* TCL_THREADS */ } @@ -585,6 +622,9 @@ TclpGetHostByName(const char *name) struct hostent * TclpGetHostByAddr(const char *addr, int length, int type) { +#if !defined(TCL_THREADS) + return gethostbyaddr(addr, length, type); +#else ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); #if defined(HAVE_GETHOSTBYADDR_R_7) @@ -614,4 +654,5 @@ TclpGetHostByAddr(const char *addr, int length, int type) return hePtr; #endif return NULL; /* Not reached */ +#endif /* TCL_THREADS */ } diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index dc003ce..17432cc 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.12 2006/09/07 08:50:36 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.13 2006/09/07 18:49:28 vasiljevic Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -1422,7 +1422,7 @@ SetGroupAttribute(interp, objIndex, fileName, attributePtr) groupPtr = TclpGetGrNam(native); /* INTL: Native. */ Tcl_DStringFree(&ds); - if (result == -1 || groupPtr == NULL) { + if (groupPtr == NULL) { endgrent(); Tcl_AppendResult(interp, "could not set group for file \"", Tcl_GetString(fileName), "\": group \"", @@ -1484,7 +1484,7 @@ SetOwnerAttribute(interp, objIndex, fileName, attributePtr) pwPtr = TclpGetPwNam(native); /* INTL: Native. */ Tcl_DStringFree(&ds); - if (result == -1 || pwPtr == NULL) { + if (pwPtr == NULL) { endpwent(); Tcl_AppendResult(interp, "could not set owner for file \"", Tcl_GetString(fileName), "\": user \"", -- cgit v0.12 From 960a7f375c3d5f2f1caa761289f6f2470b9cd227 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 8 Sep 2006 11:15:12 +0000 Subject: For Darwin, assume gethostbyname() and gethostbyaddr() are MT-safe starting with Dariwn 6 (Mac OSX 10.2) or later. --- ChangeLog | 11 ++ unix/configure | 407 ++++++++++++++++++++++++++------------------------- unix/configure.in | 15 +- unix/tclUnixCompat.c | 6 +- 4 files changed, 237 insertions(+), 202 deletions(-) diff --git a/ChangeLog b/ChangeLog index f43fe01..864c3e3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-09-08 Zoran Vasiljevic + + * unix/tclUnixCompat.c: Added fallback to gethostbyname() + and gethostbyaddr() if the implementation is known to be + MT-safe (currently for Darwin 6 or later only). + + * unix/configure.in: Assume gethostbyname() and gethostbyaddr() + are MT-safe starting with Darwin 6 (Mac OSX 10.2). + + * unix/configure: Regenerated with autoconf V2.13 + 2006-09-07 Zoran Vasiljevic * unix/tclUnixFCmd.c: Removed some false tests added diff --git a/unix/configure b/unix/configure index 9e2fd43..fb32b8a 100755 --- a/unix/configure +++ b/unix/configure @@ -5703,13 +5703,27 @@ else fi - echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5708: checking for gethostbyname_r" >&5 + if test "`uname -s`" = "Darwin" && \ + test "`uname -r | awk -F. '{print $1}'`" -gt 5; then + # Starting with Darwin 6 (Mac OSX 10.2), gethostbyX + # are actually MT-safe as they always return pointers + # from the TSD instead of the static storage. + cat >> confdefs.h <<\EOF +#define HAVE_MTSAFE_GETHOSTBYNAME 1 +EOF + + cat >> confdefs.h <<\EOF +#define HAVE_MTSAFE_GETHOSTBYADDR 1 +EOF + + else + echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 +echo "configure:5722: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5748,9 +5762,9 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5752: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5766: checking for gethostbyname_r with 6 args" >&5 cat > conftest.$ac_ext < @@ -5767,7 +5781,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF @@ -5787,9 +5801,9 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5791: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5805: checking for gethostbyname_r with 5 args" >&5 cat > conftest.$ac_ext < @@ -5806,7 +5820,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5810: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF @@ -5826,9 +5840,9 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:5830: checking for gethostbyname_r with 3 args" >&5 +echo "configure:5844: checking for gethostbyname_r with 3 args" >&5 cat > conftest.$ac_ext < @@ -5843,7 +5857,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF @@ -5877,13 +5891,13 @@ else fi - echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:5882: checking for gethostbyaddr_r" >&5 + echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 +echo "configure:5896: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -5922,9 +5936,9 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:5926: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:5940: checking for gethostbyaddr_r with 7 args" >&5 cat > conftest.$ac_ext < @@ -5944,7 +5958,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5948: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF @@ -5964,9 +5978,9 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:5968: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:5982: checking for gethostbyaddr_r with 8 args" >&5 cat > conftest.$ac_ext < @@ -5986,7 +6000,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF @@ -6018,6 +6032,7 @@ else fi + fi fi #--------------------------------------------------------------------------- @@ -6031,17 +6046,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6035: checking for $ac_hdr" >&5 +echo "configure:6050: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6045: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6060: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6068,7 +6083,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6072: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6087: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6077,7 +6092,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6092,7 +6107,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6109,7 +6124,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6123,7 +6138,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6141,7 +6156,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6156,7 +6171,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6174,7 +6189,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6191,7 +6206,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6209,7 +6224,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6225,7 +6240,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6243,7 +6258,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6260,7 +6275,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6303,20 +6318,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6307: checking for fd_set in sys/types" >&5 +echo "configure:6322: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6335: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6332,13 +6347,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6336: checking for fd_mask in sys/select" >&5 +echo "configure:6351: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6375,12 +6390,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6379: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6394: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6388,7 +6403,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6413,17 +6428,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6417: checking for $ac_hdr" >&5 +echo "configure:6432: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6427: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6450,12 +6465,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6454: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6469: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6464,7 +6479,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6485,12 +6500,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6489: checking for tm_zone in struct tm" >&5 +echo "configure:6504: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6498,7 +6513,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6502: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6518,12 +6533,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6522: checking for tzname" >&5 +echo "configure:6537: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6533,7 +6548,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6558,12 +6573,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6562: checking for $ac_func" >&5 +echo "configure:6577: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6612,20 +6627,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6616: checking tm_tzadj in struct tm" >&5 +echo "configure:6631: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6646,20 +6661,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6650: checking tm_gmtoff in struct tm" >&5 +echo "configure:6665: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6684,13 +6699,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6688: checking long timezone variable" >&5 +echo "configure:6703: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6699,7 +6714,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6722,13 +6737,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6726: checking time_t timezone variable" >&5 +echo "configure:6741: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6737,7 +6752,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6764,12 +6779,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6768: checking for st_blksize in struct stat" >&5 +echo "configure:6783: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6777,7 +6792,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6781: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6798,12 +6813,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6802: checking for fstatfs" >&5 +echo "configure:6817: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6855,7 +6870,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6859: checking for 8-bit clean memcmp" >&5 +echo "configure:6874: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6863,7 +6878,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6897,12 +6912,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6901: checking for memmove" >&5 +echo "configure:6916: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6958,7 +6973,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6962: checking proper strstr implementation" >&5 +echo "configure:6977: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6967,7 +6982,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7003,12 +7018,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7007: checking for strtoul" >&5 +echo "configure:7022: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7053,7 +7068,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7057: checking proper strtoul implementation" >&5 +echo "configure:7072: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7062,7 +7077,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7107,12 +7122,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7111: checking for strtod" >&5 +echo "configure:7126: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7157,7 +7172,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7161: checking proper strtod implementation" >&5 +echo "configure:7176: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7166,7 +7181,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7214,12 +7229,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7218: checking for strtod" >&5 +echo "configure:7233: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7264,7 +7279,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7268: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7283: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7273,7 +7288,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7327,12 +7342,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7331: checking for ANSI C header files" >&5 +echo "configure:7346: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7340,7 +7355,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7344: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7357,7 +7372,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7375,7 +7390,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7396,7 +7411,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7407,7 +7422,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7431,12 +7446,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7435: checking for mode_t" >&5 +echo "configure:7450: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7464,12 +7479,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7468: checking for pid_t" >&5 +echo "configure:7483: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7497,12 +7512,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7501: checking for size_t" >&5 +echo "configure:7516: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7530,12 +7545,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7534: checking for uid_t in sys/types.h" >&5 +echo "configure:7549: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7565,13 +7580,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7569: checking for socklen_t" >&5 +echo "configure:7584: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7610,12 +7625,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7614: checking for opendir" >&5 +echo "configure:7629: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7671,13 +7686,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7675: checking union wait" >&5 +echo "configure:7690: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7689,7 +7704,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7716,12 +7731,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7720: checking for strncasecmp" >&5 +echo "configure:7735: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7766,7 +7781,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7770: checking for strncasecmp in -lsocket" >&5 +echo "configure:7785: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7774,7 +7789,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7809,7 +7824,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7813: checking for strncasecmp in -linet" >&5 +echo "configure:7828: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7817,7 +7832,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7866,12 +7881,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7870: checking for BSDgettimeofday" >&5 +echo "configure:7885: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7916,12 +7931,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7920: checking for gettimeofday" >&5 +echo "configure:7935: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7971,13 +7986,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7975: checking for gettimeofday declaration" >&5 +echo "configure:7990: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8008,14 +8023,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8012: checking whether char is unsigned" >&5 +echo "configure:8027: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8071,13 +8086,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8075: checking signed char declarations" >&5 +echo "configure:8090: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8106: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8112,7 +8127,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8116: checking for a putenv() that copies the buffer" >&5 +echo "configure:8131: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8121,7 +8136,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8143,7 +8158,7 @@ else } EOF -if { (eval echo configure:8147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8183,17 +8198,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8187: checking for langinfo.h" >&5 +echo "configure:8202: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8197: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8212: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8217,21 +8232,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8221: checking whether to use nl_langinfo" >&5 +echo "configure:8236: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8250: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8264,17 +8279,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8268: checking for $ac_hdr" >&5 +echo "configure:8283: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8293: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8303,12 +8318,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8307: checking for $ac_func" >&5 +echo "configure:8322: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8360,17 +8375,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8364: checking for $ac_hdr" >&5 +echo "configure:8379: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8374: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8399,12 +8414,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8403: checking for $ac_func" >&5 +echo "configure:8418: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8454,12 +8469,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8458: checking for $ac_func" >&5 +echo "configure:8473: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8523,17 +8538,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8527: checking for $ac_hdr" >&5 +echo "configure:8542: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8537: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8552: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8561,14 +8576,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8565: checking if weak import is available" >&5 +echo "configure:8580: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8612,13 +8627,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8616: checking for fts" >&5 +echo "configure:8631: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8633,7 +8648,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8665,17 +8680,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8669: checking for $ac_hdr" >&5 +echo "configure:8684: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8694: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8705,17 +8720,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8709: checking for $ac_hdr" >&5 +echo "configure:8724: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8743,7 +8758,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8747: checking system version" >&5 +echo "configure:8762: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8774,7 +8789,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8778: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8793: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -8837,7 +8852,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:8841: checking how to package libraries" >&5 +echo "configure:8856: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/configure.in b/unix/configure.in index 1ea92b2..0040c3d 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.29 2006/09/06 13:08:29 vasiljevic Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.30 2006/09/08 11:15:13 vasiljevic Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -151,8 +151,17 @@ if test "${TCL_THREADS}" = 1; then SC_TCL_GETPWNAM_R SC_TCL_GETGRGID_R SC_TCL_GETGRNAM_R - SC_TCL_GETHOSTBYNAME_R - SC_TCL_GETHOSTBYADDR_R + if test "`uname -s`" = "Darwin" && \ + test "`uname -r | awk -F. '{print [$]1}'`" -gt 5; then + # Starting with Darwin 6 (Mac OSX 10.2), gethostbyX + # are actually MT-safe as they always return pointers + # from the TSD instead of the static storage. + AC_DEFINE(HAVE_MTSAFE_GETHOSTBYNAME) + AC_DEFINE(HAVE_MTSAFE_GETHOSTBYADDR) + else + SC_TCL_GETHOSTBYNAME_R + SC_TCL_GETHOSTBYADDR_R + fi fi #--------------------------------------------------------------------------- diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index c719b59..5ab7ea3 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.5 2006/09/07 18:49:29 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.6 2006/09/08 11:15:14 vasiljevic Exp $ * */ @@ -561,7 +561,7 @@ TclpGetGrGid(gid_t gid) struct hostent * TclpGetHostByName(const char *name) { -#if !defined(TCL_THREADS) +#if !defined(TCL_THREADS) || defined(HAVE_MTSAFE_GETHOSTBYNAME) return gethostbyname(name); #else ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); @@ -622,7 +622,7 @@ TclpGetHostByName(const char *name) struct hostent * TclpGetHostByAddr(const char *addr, int length, int type) { -#if !defined(TCL_THREADS) +#if !defined(TCL_THREADS) || defined(HAVE_MTSAFE_GETHOSTBYADDR) return gethostbyaddr(addr, length, type); #else ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); -- cgit v0.12 From 933d1892317486b9cc87d71fc758ae63193428f9 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 8 Sep 2006 19:25:12 +0000 Subject: * unix/tclUnixCompat.c: Fixed conditions for CopyArray/CopyString, and CopyHostent. Also fixed bad var names in TclpGetHostByName. --- ChangeLog | 5 +++++ unix/tclUnixCompat.c | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 864c3e3..8e7a4c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-09-08 Andreas Kupries + + * unix/tclUnixCompat.c: Fixed conditions for CopyArray/CopyString, + and CopyHostent. Also fixed bad var names in TclpGetHostByName. + 2006-09-08 Zoran Vasiljevic * unix/tclUnixCompat.c: Added fallback to gethostbyname() diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index 5ab7ea3..a7d40a7 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.6 2006/09/08 11:15:14 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.7 2006/09/08 19:25:13 andreas_kupries Exp $ * */ @@ -57,8 +57,8 @@ static Tcl_ThreadDataKey dataKey; Tcl_Mutex compatLock; -#if (!defined(HAVE_GETHOSTBYNAME_R) && !defined(HAVE_GETHOSTBYADDR_R)) || \ - (!defined(HAVE_GETPWUID_R) && !defined(HAVE_GETGRGID_R)) +#if (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R)) || \ + (!defined(HAVE_GETPWUID_R) || !defined(HAVE_GETGRGID_R)) /* @@ -156,7 +156,7 @@ CopyString(char *src, char *buf, int buflen) !defined(HAVE_GETPWUID_R) && !defined(HAVE_GETGRGID_R) */ -#if !defined(HAVE_GETHOSTBYNAME_R) && !defined(HAVE_GETHOSTBYADDR_R) +#if !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) /* *--------------------------------------------------------------------------- @@ -580,8 +580,8 @@ TclpGetHostByName(const char *name) #elif defined(HAVE_GETHOSTBYNAME_R_3) struct hostent_data data; - return (gethostbyname_r(host, &tsdPtr->hent, &data) == 0) ? - &tsdPtr->buf.hent : NULL; + return (gethostbyname_r(name, &tsdPtr->hent, &data) == 0) ? + &tsdPtr->hent : NULL; #else struct hostent *hePtr; Tcl_MutexLock(&compatLock); -- cgit v0.12 From 609385ccb9bbf225a216eca52a988116f59dc44f Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 8 Sep 2006 20:37:35 +0000 Subject: Fixed compilation for Darwin so the compiler does not bark about defined but unused functions. --- unix/tclUnixCompat.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index a7d40a7..0954a19 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.7 2006/09/08 19:25:13 andreas_kupries Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.8 2006/09/08 20:37:35 vasiljevic Exp $ * */ @@ -57,8 +57,9 @@ static Tcl_ThreadDataKey dataKey; Tcl_Mutex compatLock; -#if (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R)) || \ - (!defined(HAVE_GETPWUID_R) || !defined(HAVE_GETGRGID_R)) +#if (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) || \ + !defined(HAVE_GETPWUID_R) || !defined(HAVE_GETGRGID_R)) && \ + (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR)) /* @@ -152,11 +153,12 @@ CopyString(char *src, char *buf, int buflen) return len; } -#endif /* !defined(HAVE_GETHOSTBYNAME_R) && !defined(HAVE_GETHOSTBYADDR_R) && \ - !defined(HAVE_GETPWUID_R) && !defined(HAVE_GETGRGID_R) */ +#endif /* (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) || \ + !defined(HAVE_GETPWUID_R) || !defined(HAVE_GETGRGID_R)) && \ + (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR)) */ - -#if !defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) +#if (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R)) && \ + (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR)) /* *--------------------------------------------------------------------------- @@ -209,7 +211,8 @@ CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) return 0; } -#endif /* !defined(HAVE_GETHOSTBYNAME_R) && !defined(HAVE_GETHOSTBYADDR_R) */ +#endif /* (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R)) && \ + (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR)) */ #if !defined(HAVE_GETPWUID_R) -- cgit v0.12 From e14e8f4fa399e18ca5749dd5484d5080cbac9b1f Mon Sep 17 00:00:00 2001 From: das Date: Sun, 10 Sep 2006 17:04:40 +0000 Subject: * library/msgcat/msgcat.tcl (msgcat::Init): on Darwin, add fallback of * tests/msgcat.test: default msgcat locale to * unix/tclUnixInit.c (TclpSetVariables): current CFLocale identifier if available (via private ::tcl::mac::locale global, set at interp init when on Mac OS X 10.3 or later with CoreFoundation). * unix/tcl.m4: add caching to new SC_TCL_* macros for MT-safe wrappers. * unix/configure: autoconf-2.13 --- ChangeLog | 11 + library/msgcat/msgcat.tcl | 265 ++++++----- tests/msgcat.test | 14 +- unix/configure | 1126 ++++++++++++++++++++++++--------------------- unix/tcl.m4 | 494 +++++++++----------- unix/tclUnixInit.c | 26 +- 6 files changed, 1008 insertions(+), 928 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8e7a4c9..3540566 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-09-10 Daniel Steffen + + * library/msgcat/msgcat.tcl (msgcat::Init): on Darwin, add fallback of + * tests/msgcat.test: default msgcat locale to + * unix/tclUnixInit.c (TclpSetVariables): current CFLocale identifier + if available (via private ::tcl::mac::locale global, set at interp init + when on Mac OS X 10.3 or later with CoreFoundation). + + * unix/tcl.m4: add caching to new SC_TCL_* macros for MT-safe wrappers. + * unix/configure: autoconf-2.13 + 2006-09-08 Andreas Kupries * unix/tclUnixCompat.c: Fixed conditions for CopyArray/CopyString, diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl index 217a618..719d6a5 100644 --- a/library/msgcat/msgcat.tcl +++ b/library/msgcat/msgcat.tcl @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.4 2004/08/13 21:45:16 dgp Exp $ +# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.5 2006/09/10 17:04:40 das Exp $ package require Tcl 8.2 # When the version number changes, be sure to update the pkgIndex.tcl file, @@ -33,131 +33,133 @@ namespace eval msgcat { array set Msgs {} # Map of language codes used in Windows registry to those of ISO-639 - array set WinRegToISO639 { - 01 ar 0401 ar_SA 0801 ar_IQ 0c01 ar_EG 1001 ar_LY 1401 ar_DZ - 1801 ar_MA 1c01 ar_TN 2001 ar_OM 2401 ar_YE 2801 ar_SY - 2c01 ar_JO 3001 ar_LB 3401 ar_KW 3801 ar_AE 3c01 ar_BH - 4001 ar_QA - 02 bg 0402 bg_BG - 03 ca 0403 ca_ES - 04 zh 0404 zh_TW 0804 zh_CN 0c04 zh_HK 1004 zh_SG 1404 zh_MO - 05 cs 0405 cs_CZ - 06 da 0406 da_DK - 07 de 0407 de_DE 0807 de_CH 0c07 de_AT 1007 de_LU 1407 de_LI - 08 el 0408 el_GR - 09 en 0409 en_US 0809 en_GB 0c09 en_AU 1009 en_CA 1409 en_NZ - 1809 en_IE 1c09 en_ZA 2009 en_JM 2409 en_GD 2809 en_BZ - 2c09 en_TT 3009 en_ZW 3409 en_PH - 0a es 040a es_ES 080a es_MX 0c0a es_ES@modern 100a es_GT 140a es_CR - 180a es_PA 1c0a es_DO 200a es_VE 240a es_CO 280a es_PE - 2c0a es_AR 300a es_EC 340a es_CL 380a es_UY 3c0a es_PY - 400a es_BO 440a es_SV 480a es_HN 4c0a es_NI 500a es_PR - 0b fi 040b fi_FI - 0c fr 040c fr_FR 080c fr_BE 0c0c fr_CA 100c fr_CH 140c fr_LU - 180c fr_MC - 0d he 040d he_IL - 0e hu 040e hu_HU - 0f is 040f is_IS - 10 it 0410 it_IT 0810 it_CH - 11 ja 0411 ja_JP - 12 ko 0412 ko_KR - 13 nl 0413 nl_NL 0813 nl_BE - 14 no 0414 no_NO 0814 nn_NO - 15 pl 0415 pl_PL - 16 pt 0416 pt_BR 0816 pt_PT - 17 rm 0417 rm_CH - 18 ro 0418 ro_RO - 19 ru - 1a hr 041a hr_HR 081a sr_YU 0c1a sr_YU@cyrillic - 1b sk 041b sk_SK - 1c sq 041c sq_AL - 1d sv 041d sv_SE 081d sv_FI - 1e th 041e th_TH - 1f tr 041f tr_TR - 20 ur 0420 ur_PK 0820 ur_IN - 21 id 0421 id_ID - 22 uk 0422 uk_UA - 23 be 0423 be_BY - 24 sl 0424 sl_SI - 25 et 0425 et_EE - 26 lv 0426 lv_LV - 27 lt 0427 lt_LT - 28 tg 0428 tg_TJ - 29 fa 0429 fa_IR - 2a vi 042a vi_VN - 2b hy 042b hy_AM - 2c az 042c az_AZ@latin 082c az_AZ@cyrillic - 2d eu - 2e wen 042e wen_DE - 2f mk 042f mk_MK - 30 bnt 0430 bnt_TZ - 31 ts 0431 ts_ZA - 33 ven 0433 ven_ZA - 34 xh 0434 xh_ZA - 35 zu 0435 zu_ZA - 36 af 0436 af_ZA - 37 ka 0437 ka_GE - 38 fo 0438 fo_FO - 39 hi 0439 hi_IN - 3a mt 043a mt_MT - 3b se 043b se_NO - 043c gd_UK 083c ga_IE - 3d yi 043d yi_IL - 3e ms 043e ms_MY 083e ms_BN - 3f kk 043f kk_KZ - 40 ky 0440 ky_KG - 41 sw 0441 sw_KE - 42 tk 0442 tk_TM - 43 uz 0443 uz_UZ@latin 0843 uz_UZ@cyrillic - 44 tt 0444 tt_RU - 45 bn 0445 bn_IN - 46 pa 0446 pa_IN - 47 gu 0447 gu_IN - 48 or 0448 or_IN - 49 ta - 4a te 044a te_IN - 4b kn 044b kn_IN - 4c ml 044c ml_IN - 4d as 044d as_IN - 4e mr 044e mr_IN - 4f sa 044f sa_IN - 50 mn - 51 bo 0451 bo_CN - 52 cy 0452 cy_GB - 53 km 0453 km_KH - 54 lo 0454 lo_LA - 55 my 0455 my_MM - 56 gl 0456 gl_ES - 57 kok 0457 kok_IN - 58 mni 0458 mni_IN - 59 sd - 5a syr 045a syr_TR - 5b si 045b si_LK - 5c chr 045c chr_US - 5d iu 045d iu_CA - 5e am 045e am_ET - 5f ber 045f ber_MA - 60 ks 0460 ks_PK 0860 ks_IN - 61 ne 0461 ne_NP 0861 ne_IN - 62 fy 0462 fy_NL - 63 ps - 64 tl 0464 tl_PH - 65 div 0465 div_MV - 66 bin 0466 bin_NG - 67 ful 0467 ful_NG - 68 ha 0468 ha_NG - 69 nic 0469 nic_NG - 6a yo 046a yo_NG - 70 ibo 0470 ibo_NG - 71 kau 0471 kau_NG - 72 om 0472 om_ET - 73 ti 0473 ti_ET - 74 gn 0474 gn_PY - 75 cpe 0475 cpe_US - 76 la 0476 la_VA - 77 so 0477 so_SO - 78 sit 0478 sit_CN - 79 pap 0479 pap_AN + if { [string equal $::tcl_platform(platform) windows] } { + array set WinRegToISO639 { + 01 ar 0401 ar_SA 0801 ar_IQ 0c01 ar_EG 1001 ar_LY 1401 ar_DZ + 1801 ar_MA 1c01 ar_TN 2001 ar_OM 2401 ar_YE 2801 ar_SY + 2c01 ar_JO 3001 ar_LB 3401 ar_KW 3801 ar_AE 3c01 ar_BH + 4001 ar_QA + 02 bg 0402 bg_BG + 03 ca 0403 ca_ES + 04 zh 0404 zh_TW 0804 zh_CN 0c04 zh_HK 1004 zh_SG 1404 zh_MO + 05 cs 0405 cs_CZ + 06 da 0406 da_DK + 07 de 0407 de_DE 0807 de_CH 0c07 de_AT 1007 de_LU 1407 de_LI + 08 el 0408 el_GR + 09 en 0409 en_US 0809 en_GB 0c09 en_AU 1009 en_CA 1409 en_NZ + 1809 en_IE 1c09 en_ZA 2009 en_JM 2409 en_GD 2809 en_BZ + 2c09 en_TT 3009 en_ZW 3409 en_PH + 0a es 040a es_ES 080a es_MX 0c0a es_ES@modern 100a es_GT 140a es_CR + 180a es_PA 1c0a es_DO 200a es_VE 240a es_CO 280a es_PE + 2c0a es_AR 300a es_EC 340a es_CL 380a es_UY 3c0a es_PY + 400a es_BO 440a es_SV 480a es_HN 4c0a es_NI 500a es_PR + 0b fi 040b fi_FI + 0c fr 040c fr_FR 080c fr_BE 0c0c fr_CA 100c fr_CH 140c fr_LU + 180c fr_MC + 0d he 040d he_IL + 0e hu 040e hu_HU + 0f is 040f is_IS + 10 it 0410 it_IT 0810 it_CH + 11 ja 0411 ja_JP + 12 ko 0412 ko_KR + 13 nl 0413 nl_NL 0813 nl_BE + 14 no 0414 no_NO 0814 nn_NO + 15 pl 0415 pl_PL + 16 pt 0416 pt_BR 0816 pt_PT + 17 rm 0417 rm_CH + 18 ro 0418 ro_RO + 19 ru + 1a hr 041a hr_HR 081a sr_YU 0c1a sr_YU@cyrillic + 1b sk 041b sk_SK + 1c sq 041c sq_AL + 1d sv 041d sv_SE 081d sv_FI + 1e th 041e th_TH + 1f tr 041f tr_TR + 20 ur 0420 ur_PK 0820 ur_IN + 21 id 0421 id_ID + 22 uk 0422 uk_UA + 23 be 0423 be_BY + 24 sl 0424 sl_SI + 25 et 0425 et_EE + 26 lv 0426 lv_LV + 27 lt 0427 lt_LT + 28 tg 0428 tg_TJ + 29 fa 0429 fa_IR + 2a vi 042a vi_VN + 2b hy 042b hy_AM + 2c az 042c az_AZ@latin 082c az_AZ@cyrillic + 2d eu + 2e wen 042e wen_DE + 2f mk 042f mk_MK + 30 bnt 0430 bnt_TZ + 31 ts 0431 ts_ZA + 33 ven 0433 ven_ZA + 34 xh 0434 xh_ZA + 35 zu 0435 zu_ZA + 36 af 0436 af_ZA + 37 ka 0437 ka_GE + 38 fo 0438 fo_FO + 39 hi 0439 hi_IN + 3a mt 043a mt_MT + 3b se 043b se_NO + 043c gd_UK 083c ga_IE + 3d yi 043d yi_IL + 3e ms 043e ms_MY 083e ms_BN + 3f kk 043f kk_KZ + 40 ky 0440 ky_KG + 41 sw 0441 sw_KE + 42 tk 0442 tk_TM + 43 uz 0443 uz_UZ@latin 0843 uz_UZ@cyrillic + 44 tt 0444 tt_RU + 45 bn 0445 bn_IN + 46 pa 0446 pa_IN + 47 gu 0447 gu_IN + 48 or 0448 or_IN + 49 ta + 4a te 044a te_IN + 4b kn 044b kn_IN + 4c ml 044c ml_IN + 4d as 044d as_IN + 4e mr 044e mr_IN + 4f sa 044f sa_IN + 50 mn + 51 bo 0451 bo_CN + 52 cy 0452 cy_GB + 53 km 0453 km_KH + 54 lo 0454 lo_LA + 55 my 0455 my_MM + 56 gl 0456 gl_ES + 57 kok 0457 kok_IN + 58 mni 0458 mni_IN + 59 sd + 5a syr 045a syr_TR + 5b si 045b si_LK + 5c chr 045c chr_US + 5d iu 045d iu_CA + 5e am 045e am_ET + 5f ber 045f ber_MA + 60 ks 0460 ks_PK 0860 ks_IN + 61 ne 0461 ne_NP 0861 ne_IN + 62 fy 0462 fy_NL + 63 ps + 64 tl 0464 tl_PH + 65 div 0465 div_MV + 66 bin 0466 bin_NG + 67 ful 0467 ful_NG + 68 ha 0468 ha_NG + 69 nic 0469 nic_NG + 6a yo 046a yo_NG + 70 ibo 0470 ibo_NG + 71 kau 0471 kau_NG + 72 om 0472 om_ET + 73 ti 0473 ti_ET + 74 gn 0474 gn_PY + 75 cpe 0475 cpe_US + 76 la 0476 la_VA + 77 so 0477 so_SO + 78 sit 0478 sit_CN + 79 pap 0479 pap_AN + } } } @@ -430,6 +432,17 @@ proc msgcat::Init {} { } } # + # On Darwin, fallback to current CFLocale identifier if available. + # + if {[string equal $::tcl_platform(os) Darwin] + && [string equal $::tcl_platform(platform) unix] + && [info exists ::tcl::mac::locale] + && ![string equal $::tcl::mac::locale ""]} { + if {![catch {mclocale [ConvertLocale $::tcl::mac::locale]}]} { + return + } + } + # # The rest of this routine is special processing for Windows; # all other platforms, get out now. # diff --git a/tests/msgcat.test b/tests/msgcat.test index 0edec23..ea4814d 100644 --- a/tests/msgcat.test +++ b/tests/msgcat.test @@ -12,7 +12,7 @@ # Note that after running these tests, entries will be left behind in the # message catalogs for locales foo, foo_BAR, and foo_BAR_baz. # -# RCS: @(#) $Id: msgcat.test,v 1.11.2.2 2004/08/13 21:45:16 dgp Exp $ +# RCS: @(#) $Id: msgcat.test,v 1.11.2.3 2006/09/10 17:04:41 das Exp $ package require Tcl 8.2 if {[catch {package require tcltest 2}]} { @@ -54,11 +54,15 @@ namespace eval ::msgcat::test { foreach setVars [PowerSet $envVars] { set result [string tolower [lindex $setVars 0]] if {[string length $result] == 0} { - set result c + if {[info exists ::tcl::mac::locale]} { + set result [string tolower $::tcl::mac::locale] + } else { + set result c + } } - test msgcat-0.$count { - locale initialization from environment variables - } -setup { + test msgcat-0.$count [list \ + locale initialization from environment variables $setVars \ + ] -setup { variable var foreach var $envVars { catch {variable $var $::env($var)} diff --git a/unix/configure b/unix/configure index fb32b8a..c0d59e8 100755 --- a/unix/configure +++ b/unix/configure @@ -5213,101 +5213,111 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 echo "configure:5216: checking for getpwuid_r with 5 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < - #include + #include + #include int main() { - uid_t uid; - struct passwd pw, *pwp; - char buf[512]; - int buflen = 512; + uid_t uid; + struct passwd pw, *pwp; + char buf[512]; + int buflen = 512; - (void) getpwuid_r(uid, &pw, buf, buflen, &pwp); + (void) getpwuid_r(uid, &pw, buf, buflen, &pwp); ; return 0; } EOF -if { (eval echo configure:5235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETPWUID_R 1 -EOF + tcl_cv_api_getpwuid_r_5=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_api_getpwuid_r_5=no +fi +rm -f conftest* +fi - cat >> confdefs.h <<\EOF +echo "$ac_t""$tcl_cv_api_getpwuid_r_5" 1>&6 + tcl_ok=$tcl_cv_api_getpwuid_r_5 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GETPWUID_R_5 1 EOF - echo "$ac_t""yes" 1>&6 - + else + echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 +echo "configure:5260: checking for getpwuid_r with 4 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""no" 1>&6 - echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5255: checking for getpwuid_r with 4 args" >&5 - cat > conftest.$ac_ext < conftest.$ac_ext < - #include - + #include + #include + int main() { - uid_t uid; - struct passwd pw; - char buf[512]; - int buflen = 512; + uid_t uid; + struct passwd pw; + char buf[512]; + int buflen = 512; - (void)getpwnam_r(uid, &pw, buf, buflen); - + (void)getpwnam_r(uid, &pw, buf, buflen); + ; return 0; } EOF -if { (eval echo configure:5274: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5283: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETPWUID_R 1 -EOF - - cat >> confdefs.h <<\EOF -#define HAVE_GETPWUID_R_4 1 -EOF - - echo "$ac_t""yes" 1>&6 - + tcl_cv_api_getpwuid_r_4=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - - echo "$ac_t""no" 1>&6 - + tcl_cv_api_getpwuid_r_4=no fi rm -f conftest* - fi -rm -f conftest* + +echo "$ac_t""$tcl_cv_api_getpwuid_r_4" 1>&6 + tcl_ok=$tcl_cv_api_getpwuid_r_4 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETPWUID_R_4 1 +EOF + + fi + fi + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETPWUID_R 1 +EOF + + fi else echo "$ac_t""no" 1>&6 fi - echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5306: checking for getpwnam_r" >&5 +echo "configure:5316: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5346,102 +5356,112 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5350: checking for getpwnam_r with 5 args" >&5 +echo "configure:5360: checking for getpwnam_r with 5 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < - #include + #include + #include int main() { - char *name; - struct passwd pw, *pwp; - char buf[512]; - int buflen = 512; + char *name; + struct passwd pw, *pwp; + char buf[512]; + int buflen = 512; - (void) getpwnam_r(name, &pw, buf, buflen, &pwp); + (void) getpwnam_r(name, &pw, buf, buflen, &pwp); ; return 0; } EOF -if { (eval echo configure:5369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETPWNAM_R 1 -EOF + tcl_cv_api_getpwnam_r_5=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_api_getpwnam_r_5=no +fi +rm -f conftest* +fi - cat >> confdefs.h <<\EOF +echo "$ac_t""$tcl_cv_api_getpwnam_r_5" 1>&6 + tcl_ok=$tcl_cv_api_getpwnam_r_5 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GETPWNAM_R_5 1 EOF - echo "$ac_t""yes" 1>&6 - + else + echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 +echo "configure:5404: checking for getpwnam_r with 4 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""no" 1>&6 - echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5389: checking for getpwnam_r with 4 args" >&5 - cat > conftest.$ac_ext < conftest.$ac_ext < - #include - + #include + #include + int main() { - char *name; - struct passwd pw; - char buf[512]; - int buflen = 512; + char *name; + struct passwd pw; + char buf[512]; + int buflen = 512; - (void)getpwnam_r(name, &pw, buf, buflen); - + (void)getpwnam_r(name, &pw, buf, buflen); + ; return 0; } EOF -if { (eval echo configure:5408: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5427: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETPWNAM_R 1 -EOF - - cat >> confdefs.h <<\EOF -#define HAVE_GETPWNAM_R_4 1 -EOF - - echo "$ac_t""yes" 1>&6 - + tcl_cv_api_getpwnam_r_4=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - - echo "$ac_t""no" 1>&6 - + tcl_cv_api_getpwnam_r_4=no fi rm -f conftest* - fi -rm -f conftest* + +echo "$ac_t""$tcl_cv_api_getpwnam_r_4" 1>&6 + tcl_ok=$tcl_cv_api_getpwnam_r_4 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETPWNAM_R_4 1 +EOF + + fi + fi + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETPWNAM_R 1 +EOF + + fi else echo "$ac_t""no" 1>&6 fi - echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5440: checking for getgrgid_r" >&5 +echo "configure:5460: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5480,102 +5500,112 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5484: checking for getgrgid_r with 5 args" >&5 +echo "configure:5504: checking for getgrgid_r with 5 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < - #include + #include + #include int main() { - gid_t gid; - struct group gr, *grp; - char buf[512]; - int buflen = 512; + gid_t gid; + struct group gr, *grp; + char buf[512]; + int buflen = 512; - (void) getgrgid_r(gid, &gr, buf, buflen, &grp); + (void) getgrgid_r(gid, &gr, buf, buflen, &grp); ; return 0; } EOF -if { (eval echo configure:5503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETGRGID_R 1 -EOF + tcl_cv_api_getgrgid_r_5=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_api_getgrgid_r_5=no +fi +rm -f conftest* +fi - cat >> confdefs.h <<\EOF +echo "$ac_t""$tcl_cv_api_getgrgid_r_5" 1>&6 + tcl_ok=$tcl_cv_api_getgrgid_r_5 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GETGRGID_R_5 1 EOF - echo "$ac_t""yes" 1>&6 - + else + echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 +echo "configure:5548: checking for getgrgid_r with 4 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""no" 1>&6 - echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5523: checking for getgrgid_r with 4 args" >&5 - cat > conftest.$ac_ext < conftest.$ac_ext < - #include - + #include + #include + int main() { - gid_t gid; - struct group gr; - char buf[512]; - int buflen = 512; + gid_t gid; + struct group gr; + char buf[512]; + int buflen = 512; - (void)getgrgid_r(gid, &gr, buf, buflen); - + (void)getgrgid_r(gid, &gr, buf, buflen); + ; return 0; } EOF -if { (eval echo configure:5542: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETGRGID_R 1 -EOF - - cat >> confdefs.h <<\EOF -#define HAVE_GETGRGID_R_4 1 -EOF - - echo "$ac_t""yes" 1>&6 - + tcl_cv_api_getgrgid_r_4=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - - echo "$ac_t""no" 1>&6 - + tcl_cv_api_getgrgid_r_4=no fi rm -f conftest* - fi -rm -f conftest* + +echo "$ac_t""$tcl_cv_api_getgrgid_r_4" 1>&6 + tcl_ok=$tcl_cv_api_getgrgid_r_4 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETGRGID_R_4 1 +EOF + + fi + fi + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETGRGID_R 1 +EOF + + fi else echo "$ac_t""no" 1>&6 fi - echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5574: checking for getgrnam_r" >&5 +echo "configure:5604: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5614,95 +5644,105 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5618: checking for getgrnam_r with 5 args" >&5 +echo "configure:5648: checking for getgrnam_r with 5 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < - #include + #include + #include int main() { - char *name; - struct group gr, *grp; - char buf[512]; - int buflen = 512; + char *name; + struct group gr, *grp; + char buf[512]; + int buflen = 512; - (void) getgrnam_r(name, &gr, buf, buflen, &grp); + (void) getgrnam_r(name, &gr, buf, buflen, &grp); ; return 0; } EOF -if { (eval echo configure:5637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETGRNAM_R 1 -EOF + tcl_cv_api_getgrnam_r_5=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_api_getgrnam_r_5=no +fi +rm -f conftest* +fi - cat >> confdefs.h <<\EOF +echo "$ac_t""$tcl_cv_api_getgrnam_r_5" 1>&6 + tcl_ok=$tcl_cv_api_getgrnam_r_5 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GETGRNAM_R_5 1 EOF - echo "$ac_t""yes" 1>&6 - + else + echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 +echo "configure:5692: checking for getgrnam_r with 4 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""no" 1>&6 - echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5657: checking for getgrnam_r with 4 args" >&5 - cat > conftest.$ac_ext < conftest.$ac_ext < - #include - + #include + #include + int main() { - char *name; - struct group gr; - char buf[512]; - int buflen = 512; + char *name; + struct group gr; + char buf[512]; + int buflen = 512; - (void)getgrnam_r(name, &gr, buf, buflen); - + (void)getgrnam_r(name, &gr, buf, buflen); + ; return 0; } EOF -if { (eval echo configure:5676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETGRNAM_R 1 -EOF - - cat >> confdefs.h <<\EOF -#define HAVE_GETGRNAM_R_4 1 -EOF - - echo "$ac_t""yes" 1>&6 - + tcl_cv_api_getgrnam_r_4=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - - echo "$ac_t""no" 1>&6 - + tcl_cv_api_getgrnam_r_4=no fi rm -f conftest* - fi -rm -f conftest* + +echo "$ac_t""$tcl_cv_api_getgrnam_r_4" 1>&6 + tcl_ok=$tcl_cv_api_getgrnam_r_4 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETGRNAM_R_4 1 +EOF + + fi + fi + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETGRNAM_R 1 +EOF + + fi else echo "$ac_t""no" 1>&6 fi - if test "`uname -s`" = "Darwin" && \ test "`uname -r | awk -F. '{print $1}'`" -gt 5; then # Starting with Darwin 6 (Mac OSX 10.2), gethostbyX @@ -5718,12 +5758,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5722: checking for gethostbyname_r" >&5 +echo "configure:5762: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5762,142 +5802,155 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5766: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5806: checking for gethostbyname_r with 6 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < + #include int main() { - char *name; - struct hostent *he, *res; - char buffer[2048]; - int buflen = 2048; - int h_errnop; + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; - (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop); + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop); ; return 0; } EOF -if { (eval echo configure:5785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETHOSTBYNAME_R 1 -EOF + tcl_cv_api_gethostbyname_r_6=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_api_gethostbyname_r_6=no +fi +rm -f conftest* +fi - cat >> confdefs.h <<\EOF +echo "$ac_t""$tcl_cv_api_gethostbyname_r_6" 1>&6 + tcl_ok=$tcl_cv_api_gethostbyname_r_6 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYNAME_R_6 1 EOF - echo "$ac_t""yes" 1>&6 - + else + echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 +echo "configure:5850: checking for gethostbyname_r with 5 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""no" 1>&6 - echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5805: checking for gethostbyname_r with 5 args" >&5 - cat > conftest.$ac_ext < conftest.$ac_ext < - + #include + int main() { - char *name; - struct hostent *he; - char buffer[2048]; - int buflen = 2048; - int h_errnop; + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; - (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop); - + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop); + ; return 0; } EOF -if { (eval echo configure:5824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5873: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETHOSTBYNAME_R 1 -EOF + tcl_cv_api_gethostbyname_r_5=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_api_gethostbyname_r_5=no +fi +rm -f conftest* +fi - cat >> confdefs.h <<\EOF +echo "$ac_t""$tcl_cv_api_gethostbyname_r_5" 1>&6 + tcl_ok=$tcl_cv_api_gethostbyname_r_5 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYNAME_R_5 1 EOF - echo "$ac_t""yes" 1>&6 - + else + echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 +echo "configure:5894: checking for gethostbyname_r with 3 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""no" 1>&6 - echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:5844: checking for gethostbyname_r with 3 args" >&5 - cat > conftest.$ac_ext < conftest.$ac_ext < - + #include + int main() { - char *name; - struct hostent *he; - struct hostent_data data; + char *name; + struct hostent *he; + struct hostent_data data; - (void) gethostbyname_r(name, he, &data); - + (void) gethostbyname_r(name, he, &data); + ; return 0; } EOF -if { (eval echo configure:5861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETHOSTBYNAME_R 1 -EOF - - cat >> confdefs.h <<\EOF -#define HAVE_GETHOSTBYNAME_R_3 1 -EOF - - echo "$ac_t""yes" 1>&6 - + tcl_cv_api_gethostbyname_r_3=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - - echo "$ac_t""no" 1>&6 - -fi -rm -f conftest* - + tcl_cv_api_gethostbyname_r_3=no fi rm -f conftest* - fi -rm -f conftest* + +echo "$ac_t""$tcl_cv_api_gethostbyname_r_3" 1>&6 + tcl_ok=$tcl_cv_api_gethostbyname_r_3 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETHOSTBYNAME_R_3 1 +EOF + + fi + fi + fi + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETHOSTBYNAME_R 1 +EOF + + fi else echo "$ac_t""no" 1>&6 fi - echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:5896: checking for gethostbyaddr_r" >&5 +echo "configure:5949: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -5936,102 +5989,111 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:5940: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:5993: checking for gethostbyaddr_r with 7 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < + #include int main() { - char *addr; - int length; - int type; - struct hostent *result; - char buffer[2048]; - int buflen = 2048; - int h_errnop; + char *addr; + int length; + int type; + struct hostent *result; + char buffer[2048]; + int buflen = 2048; + int h_errnop; - (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, - &h_errnop); + (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, + &h_errnop); ; return 0; } EOF -if { (eval echo configure:5962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETHOSTBYADDR_R 1 -EOF + tcl_cv_api_gethostbyaddr_r_7=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_api_gethostbyaddr_r_7=no +fi +rm -f conftest* +fi - cat >> confdefs.h <<\EOF +echo "$ac_t""$tcl_cv_api_gethostbyaddr_r_7" 1>&6 + tcl_ok=$tcl_cv_api_gethostbyaddr_r_7 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GETHOSTBYADDR_R_7 1 EOF - echo "$ac_t""yes" 1>&6 - + else + echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 +echo "configure:6040: checking for gethostbyaddr_r with 8 args" >&5 +if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""no" 1>&6 - echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:5982: checking for gethostbyaddr_r with 8 args" >&5 - cat > conftest.$ac_ext < conftest.$ac_ext < - + #include + int main() { - char *addr; - int length; - int type; - struct hostent *result, *resultp; - char buffer[2048]; - int buflen = 2048; - int h_errnop; + char *addr; + int length; + int type; + struct hostent *result, *resultp; + char buffer[2048]; + int buflen = 2048; + int h_errnop; - (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, - &resultp, &h_errnop); - + (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, + &resultp, &h_errnop); + ; return 0; } EOF -if { (eval echo configure:6004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6066: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - - cat >> confdefs.h <<\EOF -#define HAVE_GETHOSTBYADDR_R 1 -EOF - - cat >> confdefs.h <<\EOF -#define HAVE_GETHOSTBYADDR_R_8 1 -EOF - - echo "$ac_t""yes" 1>&6 - + tcl_cv_api_gethostbyaddr_r_8=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - - echo "$ac_t""no" 1>&6 - - + tcl_cv_api_gethostbyaddr_r_8=no fi rm -f conftest* - fi -rm -f conftest* + +echo "$ac_t""$tcl_cv_api_gethostbyaddr_r_8" 1>&6 + tcl_ok=$tcl_cv_api_gethostbyaddr_r_8 + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETHOSTBYADDR_R_8 1 +EOF + + fi + fi + if test "$tcl_ok" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GETHOSTBYADDR_R 1 +EOF + + fi else echo "$ac_t""no" 1>&6 fi - fi fi @@ -6046,17 +6108,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6050: checking for $ac_hdr" >&5 +echo "configure:6112: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6060: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6083,7 +6145,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6087: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6149: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6092,7 +6154,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6107,7 +6169,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6124,7 +6186,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6138,7 +6200,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6156,7 +6218,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6171,7 +6233,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6189,7 +6251,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6206,7 +6268,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6224,7 +6286,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6240,7 +6302,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6258,7 +6320,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6275,7 +6337,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6318,20 +6380,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6322: checking for fd_set in sys/types" >&5 +echo "configure:6384: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6335: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6347,13 +6409,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6351: checking for fd_mask in sys/select" >&5 +echo "configure:6413: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6390,12 +6452,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6394: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6456: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6403,7 +6465,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6428,17 +6490,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6432: checking for $ac_hdr" >&5 +echo "configure:6494: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6504: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6465,12 +6527,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6469: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6531: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6479,7 +6541,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6500,12 +6562,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6504: checking for tm_zone in struct tm" >&5 +echo "configure:6566: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6513,7 +6575,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6579: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6533,12 +6595,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6537: checking for tzname" >&5 +echo "configure:6599: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6548,7 +6610,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6573,12 +6635,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6577: checking for $ac_func" >&5 +echo "configure:6639: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6627,20 +6689,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6631: checking tm_tzadj in struct tm" >&5 +echo "configure:6693: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6661,20 +6723,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6665: checking tm_gmtoff in struct tm" >&5 +echo "configure:6727: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6699,13 +6761,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6703: checking long timezone variable" >&5 +echo "configure:6765: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6714,7 +6776,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6737,13 +6799,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6741: checking time_t timezone variable" >&5 +echo "configure:6803: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6752,7 +6814,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6779,12 +6841,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6783: checking for st_blksize in struct stat" >&5 +echo "configure:6845: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6792,7 +6854,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6813,12 +6875,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6817: checking for fstatfs" >&5 +echo "configure:6879: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6870,7 +6932,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6874: checking for 8-bit clean memcmp" >&5 +echo "configure:6936: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6878,7 +6940,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6912,12 +6974,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6916: checking for memmove" >&5 +echo "configure:6978: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -6973,7 +7035,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:6977: checking proper strstr implementation" >&5 +echo "configure:7039: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6982,7 +7044,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7018,12 +7080,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7022: checking for strtoul" >&5 +echo "configure:7084: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7068,7 +7130,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7072: checking proper strtoul implementation" >&5 +echo "configure:7134: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7077,7 +7139,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7122,12 +7184,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7126: checking for strtod" >&5 +echo "configure:7188: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7172,7 +7234,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7176: checking proper strtod implementation" >&5 +echo "configure:7238: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7181,7 +7243,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7229,12 +7291,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7233: checking for strtod" >&5 +echo "configure:7295: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7279,7 +7341,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7283: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7345: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7288,7 +7350,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7342,12 +7404,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7346: checking for ANSI C header files" >&5 +echo "configure:7408: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7355,7 +7417,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7372,7 +7434,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7390,7 +7452,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7411,7 +7473,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7422,7 +7484,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7446,12 +7508,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7450: checking for mode_t" >&5 +echo "configure:7512: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7479,12 +7541,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7483: checking for pid_t" >&5 +echo "configure:7545: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7512,12 +7574,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7516: checking for size_t" >&5 +echo "configure:7578: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7545,12 +7607,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7549: checking for uid_t in sys/types.h" >&5 +echo "configure:7611: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7580,13 +7642,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7584: checking for socklen_t" >&5 +echo "configure:7646: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7625,12 +7687,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7629: checking for opendir" >&5 +echo "configure:7691: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7686,13 +7748,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7690: checking union wait" >&5 +echo "configure:7752: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7704,7 +7766,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7731,12 +7793,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7735: checking for strncasecmp" >&5 +echo "configure:7797: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7781,7 +7843,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7785: checking for strncasecmp in -lsocket" >&5 +echo "configure:7847: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7789,7 +7851,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7824,7 +7886,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7828: checking for strncasecmp in -linet" >&5 +echo "configure:7890: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7832,7 +7894,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7881,12 +7943,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7885: checking for BSDgettimeofday" >&5 +echo "configure:7947: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7931,12 +7993,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7935: checking for gettimeofday" >&5 +echo "configure:7997: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -7986,13 +8048,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:7990: checking for gettimeofday declaration" >&5 +echo "configure:8052: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8023,14 +8085,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8027: checking whether char is unsigned" >&5 +echo "configure:8089: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8086,13 +8148,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8090: checking signed char declarations" >&5 +echo "configure:8152: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8168: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8127,7 +8189,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8131: checking for a putenv() that copies the buffer" >&5 +echo "configure:8193: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8136,7 +8198,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8158,7 +8220,7 @@ else } EOF -if { (eval echo configure:8162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8198,17 +8260,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8202: checking for langinfo.h" >&5 +echo "configure:8264: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8212: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8274: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8232,21 +8294,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8236: checking whether to use nl_langinfo" >&5 +echo "configure:8298: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8250: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8279,17 +8341,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8283: checking for $ac_hdr" >&5 +echo "configure:8345: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8293: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8318,12 +8380,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8322: checking for $ac_func" >&5 +echo "configure:8384: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8375,17 +8437,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8379: checking for $ac_hdr" >&5 +echo "configure:8441: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8414,12 +8476,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8418: checking for $ac_func" >&5 +echo "configure:8480: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8469,12 +8531,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8473: checking for $ac_func" >&5 +echo "configure:8535: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8538,17 +8600,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8542: checking for $ac_hdr" >&5 +echo "configure:8604: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8552: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8576,14 +8638,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8580: checking if weak import is available" >&5 +echo "configure:8642: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8627,13 +8689,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8631: checking for fts" >&5 +echo "configure:8693: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8648,7 +8710,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8680,17 +8742,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8684: checking for $ac_hdr" >&5 +echo "configure:8746: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8694: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8756: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8720,17 +8782,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8724: checking for $ac_hdr" >&5 +echo "configure:8786: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8796: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8758,7 +8820,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8762: checking system version" >&5 +echo "configure:8824: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8789,7 +8851,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8793: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8855: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -8852,7 +8914,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:8856: checking how to package libraries" >&5 +echo "configure:8918: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 97354b0..8c122b3 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -2816,55 +2816,49 @@ AC_DEFUN([SC_TCL_64BIT_FLAGS], [ #-------------------------------------------------------------------- AC_DEFUN([SC_TCL_GETHOSTBYADDR_R], [AC_CHECK_FUNC(gethostbyaddr_r, [ - AC_MSG_CHECKING([for gethostbyaddr_r with 7 args]) + AC_CACHE_CHECK([for gethostbyaddr_r with 7 args], tcl_cv_api_gethostbyaddr_r_7, [ AC_TRY_COMPILE([ - #include + #include ], [ - char *addr; - int length; - int type; - struct hostent *result; - char buffer[2048]; - int buflen = 2048; - int h_errnop; - - (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, - &h_errnop); - ], [ - AC_DEFINE(HAVE_GETHOSTBYADDR_R, 1, - [Define to 1 if gethostbyaddr_r is available.]) - AC_DEFINE(HAVE_GETHOSTBYADDR_R_7, 1, - [Define to 1 if gethostbyaddr_r takes 7 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - AC_MSG_CHECKING([for gethostbyaddr_r with 8 args]) - AC_TRY_COMPILE([ - #include - ], [ - char *addr; - int length; - int type; - struct hostent *result, *resultp; - char buffer[2048]; - int buflen = 2048; - int h_errnop; - - (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, - &resultp, &h_errnop); - ], [ - AC_DEFINE(HAVE_GETHOSTBYADDR_R, 1, - [Define to 1 if gethostbyaddr_r is available.]) - AC_DEFINE(HAVE_GETHOSTBYADDR_R_8, 1, - [Define to 1 if gethostbyaddr_r takes 8 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - - ]) - ]) -]) -]) + char *addr; + int length; + int type; + struct hostent *result; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, + &h_errnop); + ], tcl_cv_api_gethostbyaddr_r_7=yes, tcl_cv_api_gethostbyaddr_r_7=no)]) + tcl_ok=$tcl_cv_api_gethostbyaddr_r_7 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETHOSTBYADDR_R_7) + else + AC_CACHE_CHECK([for gethostbyaddr_r with 8 args], tcl_cv_api_gethostbyaddr_r_8, [ + AC_TRY_COMPILE([ + #include + ], [ + char *addr; + int length; + int type; + struct hostent *result, *resultp; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen, + &resultp, &h_errnop); + ], tcl_cv_api_gethostbyaddr_r_8=yes, tcl_cv_api_gethostbyaddr_r_8=no)]) + tcl_ok=$tcl_cv_api_gethostbyaddr_r_8 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETHOSTBYADDR_R_8) + fi + fi + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETHOSTBYADDR_R) + fi +])]) #-------------------------------------------------------------------- # SC_TCL_GETHOSTBYNAME_R @@ -2887,66 +2881,58 @@ AC_DEFUN([SC_TCL_GETHOSTBYADDR_R], [AC_CHECK_FUNC(gethostbyaddr_r, [ #-------------------------------------------------------------------- AC_DEFUN([SC_TCL_GETHOSTBYNAME_R], [AC_CHECK_FUNC(gethostbyname_r, [ - AC_MSG_CHECKING([for gethostbyname_r with 6 args]) + AC_CACHE_CHECK([for gethostbyname_r with 6 args], tcl_cv_api_gethostbyname_r_6, [ AC_TRY_COMPILE([ - #include + #include ], [ - char *name; - struct hostent *he, *res; - char buffer[2048]; - int buflen = 2048; - int h_errnop; + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop); + ], tcl_cv_api_gethostbyname_r_6=yes, tcl_cv_api_gethostbyname_r_6=no)]) + tcl_ok=$tcl_cv_api_gethostbyname_r_6 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETHOSTBYNAME_R_6) + else + AC_CACHE_CHECK([for gethostbyname_r with 5 args], tcl_cv_api_gethostbyname_r_5, [ + AC_TRY_COMPILE([ + #include + ], [ + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop); + ], tcl_cv_api_gethostbyname_r_5=yes, tcl_cv_api_gethostbyname_r_5=no)]) + tcl_ok=$tcl_cv_api_gethostbyname_r_5 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETHOSTBYNAME_R_5) + else + AC_CACHE_CHECK([for gethostbyname_r with 3 args], tcl_cv_api_gethostbyname_r_3, [ + AC_TRY_COMPILE([ + #include + ], [ + char *name; + struct hostent *he; + struct hostent_data data; - (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop); - ], [ - AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, - [Define to 1 if gethostbyname_r is available.]) - AC_DEFINE(HAVE_GETHOSTBYNAME_R_6, 1, - [Define to 1 if gethostbyname_r takes 6 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - AC_MSG_CHECKING([for gethostbyname_r with 5 args]) - AC_TRY_COMPILE([ - #include - ], [ - char *name; - struct hostent *he; - char buffer[2048]; - int buflen = 2048; - int h_errnop; - - (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop); - ], [ - AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, - [Define to 1 if gethostbyname_r is available.]) - AC_DEFINE(HAVE_GETHOSTBYNAME_R_5, 1, - [Define to 1 if gethostbyname_r takes 5 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - AC_MSG_CHECKING([for gethostbyname_r with 3 args]) - AC_TRY_COMPILE([ - #include - ], [ - char *name; - struct hostent *he; - struct hostent_data data; - - (void) gethostbyname_r(name, he, &data); - ], [ - AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, - [Define to 1 if gethostbyname_r is available.]) - AC_DEFINE(HAVE_GETHOSTBYNAME_R_3, 1, - [Define to 1 if gethostbyname_r takes 3 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - ]) - ]) - ]) -]) -]) + (void) gethostbyname_r(name, he, &data); + ], tcl_cv_api_gethostbyname_r_3=yes, tcl_cv_api_gethostbyname_r_3=no)]) + tcl_ok=$tcl_cv_api_gethostbyname_r_3 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETHOSTBYNAME_R_3) + fi + fi + fi + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETHOSTBYNAME_R) + fi +])]) #-------------------------------------------------------------------- # SC_TCL_GETPWUID_R @@ -2967,48 +2953,43 @@ AC_DEFUN([SC_TCL_GETHOSTBYNAME_R], [AC_CHECK_FUNC(gethostbyname_r, [ #-------------------------------------------------------------------- AC_DEFUN([SC_TCL_GETPWUID_R], [AC_CHECK_FUNC(getpwuid_r, [ - AC_MSG_CHECKING([for getpwuid_r with 5 args]) + AC_CACHE_CHECK([for getpwuid_r with 5 args], tcl_cv_api_getpwuid_r_5, [ AC_TRY_COMPILE([ - #include - #include - ], [ - uid_t uid; - struct passwd pw, *pwp; - char buf[512]; - int buflen = 512; - - (void) getpwuid_r(uid, &pw, buf, buflen, &pwp); + #include + #include ], [ - AC_DEFINE(HAVE_GETPWUID_R, 1, - [Define to 1 if getpwuid_r is available.]) - AC_DEFINE(HAVE_GETPWUID_R_5, 1, - [Define to 1 if getpwuid_r takes 5 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - AC_MSG_CHECKING([for getpwuid_r with 4 args]) - AC_TRY_COMPILE([ - #include - #include - ], [ - uid_t uid; - struct passwd pw; - char buf[512]; - int buflen = 512; - - (void)getpwnam_r(uid, &pw, buf, buflen); - ], [ - AC_DEFINE(HAVE_GETPWUID_R, 1, - [Define to 1 if getpwuid_r is available.]) - AC_DEFINE(HAVE_GETPWUID_R_4, 1, - [Define to 1 if getpwuid_r takes 4 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - ]) - ]) -]) -]) + uid_t uid; + struct passwd pw, *pwp; + char buf[512]; + int buflen = 512; + + (void) getpwuid_r(uid, &pw, buf, buflen, &pwp); + ], tcl_cv_api_getpwuid_r_5=yes, tcl_cv_api_getpwuid_r_5=no)]) + tcl_ok=$tcl_cv_api_getpwuid_r_5 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETPWUID_R_5) + else + AC_CACHE_CHECK([for getpwuid_r with 4 args], tcl_cv_api_getpwuid_r_4, [ + AC_TRY_COMPILE([ + #include + #include + ], [ + uid_t uid; + struct passwd pw; + char buf[512]; + int buflen = 512; + + (void)getpwnam_r(uid, &pw, buf, buflen); + ], tcl_cv_api_getpwuid_r_4=yes, tcl_cv_api_getpwuid_r_4=no)]) + tcl_ok=$tcl_cv_api_getpwuid_r_4 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETPWUID_R_4) + fi + fi + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETPWUID_R) + fi +])]) #-------------------------------------------------------------------- # SC_TCL_GETPWNAM_R @@ -3029,48 +3010,43 @@ AC_DEFUN([SC_TCL_GETPWUID_R], [AC_CHECK_FUNC(getpwuid_r, [ #-------------------------------------------------------------------- AC_DEFUN([SC_TCL_GETPWNAM_R], [AC_CHECK_FUNC(getpwnam_r, [ - AC_MSG_CHECKING([for getpwnam_r with 5 args]) + AC_CACHE_CHECK([for getpwnam_r with 5 args], tcl_cv_api_getpwnam_r_5, [ AC_TRY_COMPILE([ - #include - #include - ], [ - char *name; - struct passwd pw, *pwp; - char buf[512]; - int buflen = 512; - - (void) getpwnam_r(name, &pw, buf, buflen, &pwp); - ], [ - AC_DEFINE(HAVE_GETPWNAM_R, 1, - [Define to 1 if getpwnam_r is available.]) - AC_DEFINE(HAVE_GETPWNAM_R_5, 1, - [Define to 1 if getpwnam_r takes 5 args.]) - AC_MSG_RESULT(yes) + #include + #include ], [ - AC_MSG_RESULT(no) - AC_MSG_CHECKING([for getpwnam_r with 4 args]) - AC_TRY_COMPILE([ - #include - #include - ], [ - char *name; - struct passwd pw; - char buf[512]; - int buflen = 512; - - (void)getpwnam_r(name, &pw, buf, buflen); - ], [ - AC_DEFINE(HAVE_GETPWNAM_R, 1, - [Define to 1 if getpwnam_r is available.]) - AC_DEFINE(HAVE_GETPWNAM_R_4, 1, - [Define to 1 if getpwnam_r takes 4 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - ]) - ]) -]) -]) + char *name; + struct passwd pw, *pwp; + char buf[512]; + int buflen = 512; + + (void) getpwnam_r(name, &pw, buf, buflen, &pwp); + ], tcl_cv_api_getpwnam_r_5=yes, tcl_cv_api_getpwnam_r_5=no)]) + tcl_ok=$tcl_cv_api_getpwnam_r_5 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETPWNAM_R_5) + else + AC_CACHE_CHECK([for getpwnam_r with 4 args], tcl_cv_api_getpwnam_r_4, [ + AC_TRY_COMPILE([ + #include + #include + ], [ + char *name; + struct passwd pw; + char buf[512]; + int buflen = 512; + + (void)getpwnam_r(name, &pw, buf, buflen); + ], tcl_cv_api_getpwnam_r_4=yes, tcl_cv_api_getpwnam_r_4=no)]) + tcl_ok=$tcl_cv_api_getpwnam_r_4 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETPWNAM_R_4) + fi + fi + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETPWNAM_R) + fi +])]) #-------------------------------------------------------------------- # SC_TCL_GETGRGID_R @@ -3091,48 +3067,43 @@ AC_DEFUN([SC_TCL_GETPWNAM_R], [AC_CHECK_FUNC(getpwnam_r, [ #-------------------------------------------------------------------- AC_DEFUN([SC_TCL_GETGRGID_R], [AC_CHECK_FUNC(getgrgid_r, [ - AC_MSG_CHECKING([for getgrgid_r with 5 args]) + AC_CACHE_CHECK([for getgrgid_r with 5 args], tcl_cv_api_getgrgid_r_5, [ AC_TRY_COMPILE([ - #include - #include - ], [ - gid_t gid; - struct group gr, *grp; - char buf[512]; - int buflen = 512; - - (void) getgrgid_r(gid, &gr, buf, buflen, &grp); - ], [ - AC_DEFINE(HAVE_GETGRGID_R, 1, - [Define to 1 if getgrgid_r is available.]) - AC_DEFINE(HAVE_GETGRGID_R_5, 1, - [Define to 1 if getgrgid_r takes 5 args.]) - AC_MSG_RESULT(yes) + #include + #include ], [ - AC_MSG_RESULT(no) - AC_MSG_CHECKING([for getgrgid_r with 4 args]) - AC_TRY_COMPILE([ - #include - #include - ], [ - gid_t gid; - struct group gr; - char buf[512]; - int buflen = 512; - - (void)getgrgid_r(gid, &gr, buf, buflen); - ], [ - AC_DEFINE(HAVE_GETGRGID_R, 1, - [Define to 1 if getgrgid_r is available.]) - AC_DEFINE(HAVE_GETGRGID_R_4, 1, - [Define to 1 if getgrgid_r takes 4 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - ]) - ]) -]) -]) + gid_t gid; + struct group gr, *grp; + char buf[512]; + int buflen = 512; + + (void) getgrgid_r(gid, &gr, buf, buflen, &grp); + ], tcl_cv_api_getgrgid_r_5=yes, tcl_cv_api_getgrgid_r_5=no)]) + tcl_ok=$tcl_cv_api_getgrgid_r_5 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETGRGID_R_5) + else + AC_CACHE_CHECK([for getgrgid_r with 4 args], tcl_cv_api_getgrgid_r_4, [ + AC_TRY_COMPILE([ + #include + #include + ], [ + gid_t gid; + struct group gr; + char buf[512]; + int buflen = 512; + + (void)getgrgid_r(gid, &gr, buf, buflen); + ], tcl_cv_api_getgrgid_r_4=yes, tcl_cv_api_getgrgid_r_4=no)]) + tcl_ok=$tcl_cv_api_getgrgid_r_4 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETGRGID_R_4) + fi + fi + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETGRGID_R) + fi +])]) #-------------------------------------------------------------------- # SC_TCL_GETGRNAM_R @@ -3153,45 +3124,40 @@ AC_DEFUN([SC_TCL_GETGRGID_R], [AC_CHECK_FUNC(getgrgid_r, [ #-------------------------------------------------------------------- AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [ - AC_MSG_CHECKING([for getgrnam_r with 5 args]) + AC_CACHE_CHECK([for getgrnam_r with 5 args], tcl_cv_api_getgrnam_r_5, [ AC_TRY_COMPILE([ - #include - #include - ], [ - char *name; - struct group gr, *grp; - char buf[512]; - int buflen = 512; - - (void) getgrnam_r(name, &gr, buf, buflen, &grp); - ], [ - AC_DEFINE(HAVE_GETGRNAM_R, 1, - [Define to 1 if getgrnam_r is available.]) - AC_DEFINE(HAVE_GETGRNAM_R_5, 1, - [Define to 1 if getgrnam_r takes 5 args.]) - AC_MSG_RESULT(yes) + #include + #include ], [ - AC_MSG_RESULT(no) - AC_MSG_CHECKING([for getgrnam_r with 4 args]) - AC_TRY_COMPILE([ - #include - #include - ], [ - char *name; - struct group gr; - char buf[512]; - int buflen = 512; - - (void)getgrnam_r(name, &gr, buf, buflen); - ], [ - AC_DEFINE(HAVE_GETGRNAM_R, 1, - [Define to 1 if getgrnam_r is available.]) - AC_DEFINE(HAVE_GETGRNAM_R_4, 1, - [Define to 1 if getgrnam_r takes 4 args.]) - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - ]) - ]) -]) -]) + char *name; + struct group gr, *grp; + char buf[512]; + int buflen = 512; + + (void) getgrnam_r(name, &gr, buf, buflen, &grp); + ], tcl_cv_api_getgrnam_r_5=yes, tcl_cv_api_getgrnam_r_5=no)]) + tcl_ok=$tcl_cv_api_getgrnam_r_5 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETGRNAM_R_5) + else + AC_CACHE_CHECK([for getgrnam_r with 4 args], tcl_cv_api_getgrnam_r_4, [ + AC_TRY_COMPILE([ + #include + #include + ], [ + char *name; + struct group gr; + char buf[512]; + int buflen = 512; + + (void)getgrnam_r(name, &gr, buf, buflen); + ], tcl_cv_api_getgrnam_r_4=yes, tcl_cv_api_getgrnam_r_4=no)]) + tcl_ok=$tcl_cv_api_getgrnam_r_4 + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETGRNAM_R_4) + fi + fi + if test "$tcl_ok" = yes; then + AC_DEFINE(HAVE_GETGRNAM_R) + fi +])]) diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 1c1f8fc..d36dfd5 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.13 2006/07/20 06:21:46 das Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.14 2006/09/10 17:04:42 das Exp $ */ #if defined(HAVE_COREFOUNDATION) @@ -783,6 +783,30 @@ TclpSetVariables(interp) #ifdef HAVE_COREFOUNDATION char tclLibPath[MAXPATHLEN + 1]; +#if MAC_OS_X_VERSION_MAX_ALLOWED > 1020 + /* + * Set msgcat fallback locale to current CFLocale identifier. + */ + CFLocaleRef localeRef; + + if (CFLocaleCopyCurrent != NULL && CFLocaleGetIdentifier != NULL && + (localeRef = CFLocaleCopyCurrent())) { + CFStringRef locale = CFLocaleGetIdentifier(localeRef); + + if (locale) { + char loc[256]; + + if (CFStringGetCString(locale, loc, 256, kCFStringEncodingUTF8)) { + if (!Tcl_CreateNamespace(interp, "::tcl::mac", NULL, NULL)) { + Tcl_ResetResult(interp); + } + Tcl_SetVar(interp, "::tcl::mac::locale", loc, TCL_GLOBAL_ONLY); + } + } + CFRelease(localeRef); + } +#endif + if (MacOSXGetLibraryPath(interp, MAXPATHLEN, tclLibPath) == TCL_OK) { CONST char *str; Tcl_DString ds; -- cgit v0.12 From 81912ab7f64fedc64e5d3b1909c1160ba383244b Mon Sep 17 00:00:00 2001 From: dgp Date: Sun, 10 Sep 2006 18:23:45 +0000 Subject: * library/msgcat/msgcat.tcl: Bump to version msgcat 1.3.4 to account * library/msgcat/pkgIndex.tcl: for modifications. --- ChangeLog | 5 +++++ library/msgcat/msgcat.tcl | 4 ++-- library/msgcat/pkgIndex.tcl | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3540566..7b4e4ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-09-10 Don Porter + + * library/msgcat/msgcat.tcl: Bump to version msgcat 1.3.4 to account + * library/msgcat/pkgIndex.tcl: for modifications. + 2006-09-10 Daniel Steffen * library/msgcat/msgcat.tcl (msgcat::Init): on Darwin, add fallback of diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl index 719d6a5..907e35e 100644 --- a/library/msgcat/msgcat.tcl +++ b/library/msgcat/msgcat.tcl @@ -10,12 +10,12 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.5 2006/09/10 17:04:40 das Exp $ +# RCS: @(#) $Id: msgcat.tcl,v 1.17.2.6 2006/09/10 18:23:45 dgp Exp $ package require Tcl 8.2 # When the version number changes, be sure to update the pkgIndex.tcl file, # and the installation directory in the Makefiles. -package provide msgcat 1.3.3 +package provide msgcat 1.3.4 namespace eval msgcat { namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \ diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl index 91a93ad..5888ddb 100644 --- a/library/msgcat/pkgIndex.tcl +++ b/library/msgcat/pkgIndex.tcl @@ -1,2 +1,2 @@ if {![package vsatisfies [package provide Tcl] 8.2]} {return} -package ifneeded msgcat 1.3.3 [list source [file join $dir msgcat.tcl]] +package ifneeded msgcat 1.3.4 [list source [file join $dir msgcat.tcl]] -- cgit v0.12 From 5060b1b6e47c15e8076455f4aa5bf5b79dfcc052 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 11 Sep 2006 16:07:45 +0000 Subject: * unix/tclUnixCompat.c: make compatLock static and only declare it when it will actually be used; #ifdef parts of TSD that are not always needed; adjust #ifdefs to cover all possible cases; fix whitespace. --- ChangeLog | 6 ++ unix/tclUnixCompat.c | 217 ++++++++++++++++++++++++++------------------------- 2 files changed, 116 insertions(+), 107 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7b4e4ed..4018e96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-09-11 Daniel Steffen + + * unix/tclUnixCompat.c: make compatLock static and only declare it when + it will actually be used; #ifdef parts of TSD that are not always + needed; adjust #ifdefs to cover all possible cases; fix whitespace. + 2006-09-10 Don Porter * library/msgcat/msgcat.tcl: Bump to version msgcat 1.3.4 to account diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index 0954a19..84684b5 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -1,12 +1,12 @@ /* * tclUnixCompat.c * - * Written by: Zoran Vasiljevic (vasiljevic@users.sourceforge.net). + * Written by: Zoran Vasiljevic (vasiljevic@users.sourceforge.net). * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.8 2006/09/08 20:37:35 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.9 2006/09/11 16:07:45 das Exp $ * */ @@ -23,8 +23,8 @@ #define PadBuffer(buffer, length, size) \ if (((length) % (size))) { \ - (buffer) += ((length) % (size)); \ - (length) += ((length) % (size)); \ + (buffer) += ((length) % (size)); \ + (length) += ((length) % (size)); \ } /* @@ -42,25 +42,27 @@ typedef struct ThreadSpecificData { struct group grp; char gbuf[2048]; +#if !defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR) struct hostent hent; char hbuf[2048]; +#endif } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; +#if ((!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R)) && \ + (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR))) || \ + !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETPWUID_R) || \ + !defined(HAVE_GETGRNAM_R) || !defined(HAVE_GETGRGID_R) + /* - * Mutex to lock access to MT-unsafe calls. This is just to protect + * Mutex to lock access to MT-unsafe calls. This is just to protect * our own usage. It does not protect us from others calling the - * same functions without (or using some different) lock. + * same functions without (or using some different) lock. */ -Tcl_Mutex compatLock; - -#if (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) || \ - !defined(HAVE_GETPWUID_R) || !defined(HAVE_GETGRGID_R)) && \ - (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR)) - +static Tcl_Mutex compatLock; /* *--------------------------------------------------------------------------- @@ -79,40 +81,40 @@ Tcl_Mutex compatLock; *--------------------------------------------------------------------------- */ -static int +static int CopyArray(char **src, int elsize, char *buf, int buflen) { int i, j, len = 0; char *p, **new; if (src == NULL) { - return 0; + return 0; } for (i = 0; src[i] != NULL; i++) { - /* Empty loop to count howmany */ + /* Empty loop to count howmany */ } if ((sizeof(char *)*(i + 1)) > buflen) { - return -1; + return -1; } len = (sizeof(char *)*(i + 1)); /* Leave place for the array */ new = (char **)buf; p = buf + (sizeof(char *)*(i + 1)); for (j = 0; j < i; j++) { - if (elsize < 0) { - len += strlen(src[j]) + 1; - } else { - len += elsize; - } - if (len > buflen) { - return -1; - } - if (elsize < 0) { - strcpy(p, src[j]); - } else { - memcpy(p, src[j], elsize); - } - new[j] = p; - p = buf + len; + if (elsize < 0) { + len += strlen(src[j]) + 1; + } else { + len += elsize; + } + if (len > buflen) { + return -1; + } + if (elsize < 0) { + strcpy(p, src[j]); + } else { + memcpy(p, src[j], elsize); + } + new[j] = p; + p = buf + len; } new[j] = NULL; @@ -138,24 +140,25 @@ CopyArray(char **src, int elsize, char *buf, int buflen) */ -static int +static int CopyString(char *src, char *buf, int buflen) { int len = 0; if (src != NULL) { - len += strlen(src) + 1; - if (len > buflen) { - return -1; - } - strcpy(buf, src); + len += strlen(src) + 1; + if (len > buflen) { + return -1; + } + strcpy(buf, src); } return len; } -#endif /* (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R) || \ - !defined(HAVE_GETPWUID_R) || !defined(HAVE_GETGRGID_R)) && \ - (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR)) */ +#endif /* ((!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R)) && \ + (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR))) || \ + !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETPWUID_R) || \ + !defined(HAVE_GETGRNAM_R) || !defined(HAVE_GETGRGID_R) */ #if (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R)) && \ (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR)) @@ -165,7 +168,7 @@ CopyString(char *src, char *buf, int buflen) * * CopyHostnent -- * - * Copies string fields of the hostnent structure to the + * Copies string fields of the hostnent structure to the * private buffer, honouring the size of the buffer. * * Results: @@ -186,8 +189,8 @@ CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) copied = CopyString(tgtPtr->h_name, p, buflen - len); if (copied == -1) { range: - errno = ERANGE; - return -1; + errno = ERANGE; + return -1; } tgtPtr->h_name = (copied > 0) ? p : NULL; len += copied; @@ -196,7 +199,7 @@ CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) PadBuffer(p, len, sizeof(char *)); copied = CopyArray(tgtPtr->h_aliases, -1, p, buflen - len); if (copied == -1) { - goto range; + goto range; } tgtPtr->h_aliases = (copied > 0) ? (char **)p : NULL; len += copied; @@ -205,23 +208,23 @@ CopyHostent(struct hostent *tgtPtr, char *buf, int buflen) PadBuffer(p, len, sizeof(char *)); copied = CopyArray(tgtPtr->h_addr_list, tgtPtr->h_length, p, buflen - len); if (copied == -1) { - goto range; + goto range; } tgtPtr->h_addr_list = (copied > 0) ? (char **)p : NULL; - + return 0; } #endif /* (!defined(HAVE_GETHOSTBYNAME_R) || !defined(HAVE_GETHOSTBYADDR_R)) && \ - (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR)) */ + (!defined(HAVE_MTSAFE_GETHOSTBYNAME) || !defined(HAVE_MTSAFE_GETHOSTBYADDR)) */ -#if !defined(HAVE_GETPWUID_R) +#if !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETPWUID_R) /* *--------------------------------------------------------------------------- * * CopyPwd -- * - * Copies string fields of the passwd structure to the + * Copies string fields of the passwd structure to the * private buffer, honouring the size of the buffer. * * Results: @@ -243,8 +246,8 @@ CopyPwd(struct passwd *tgtPtr, char *buf, int buflen) copied = CopyString(tgtPtr->pw_name, p, buflen - len); if (copied == -1) { range: - errno = ERANGE; - return -1; + errno = ERANGE; + return -1; } tgtPtr->pw_name = (copied > 0) ? p : NULL; len += copied; @@ -252,7 +255,7 @@ CopyPwd(struct passwd *tgtPtr, char *buf, int buflen) copied = CopyString(tgtPtr->pw_passwd, p, buflen - len); if (copied == -1) { - goto range; + goto range; } tgtPtr->pw_passwd = (copied > 0) ? p : NULL; len += copied; @@ -260,7 +263,7 @@ CopyPwd(struct passwd *tgtPtr, char *buf, int buflen) copied = CopyString(tgtPtr->pw_dir, p, buflen - len); if (copied == -1) { - goto range; + goto range; } tgtPtr->pw_dir = (copied > 0) ? p : NULL; len += copied; @@ -268,22 +271,22 @@ CopyPwd(struct passwd *tgtPtr, char *buf, int buflen) copied = CopyString(tgtPtr->pw_shell, p, buflen - len); if (copied == -1) { - goto range; + goto range; } tgtPtr->pw_shell = (copied > 0) ? p : NULL; return 0; } -#endif /* !defined(HAVE_GETPWUID_R) */ +#endif /* !defined(HAVE_GETPWNAM_R) || !defined(HAVE_GETPWUID_R) */ -#if !defined(HAVE_GETGRGID_R) +#if !defined(HAVE_GETGRNAM_R) || !defined(HAVE_GETGRGID_R) /* *--------------------------------------------------------------------------- * * CopyGrp -- * - * Copies string fields of the group structure to the + * Copies string fields of the group structure to the * private buffer, honouring the size of the buffer. * * Results: @@ -305,8 +308,8 @@ CopyGrp(struct group *tgtPtr, char *buf, int buflen) copied = CopyString(tgtPtr->gr_name, p, buflen - len); if (copied == -1) { range: - errno = ERANGE; - return -1; + errno = ERANGE; + return -1; } tgtPtr->gr_name = (copied > 0) ? p : NULL; len += copied; @@ -315,7 +318,7 @@ CopyGrp(struct group *tgtPtr, char *buf, int buflen) /* Copy password */ copied = CopyString(tgtPtr->gr_passwd, p, buflen - len); if (copied == -1) { - goto range; + goto range; } tgtPtr->gr_passwd = (copied > 0) ? p : NULL; len += copied; @@ -325,13 +328,13 @@ CopyGrp(struct group *tgtPtr, char *buf, int buflen) PadBuffer(p, len, sizeof(char *)); copied = CopyArray((char **)tgtPtr->gr_mem, -1, p, buflen - len); if (copied == -1) { - goto range; + goto range; } tgtPtr->gr_mem = (copied > 0) ? (char **)p : NULL; return 0; } -#endif /* !defined(HAVE_GETGRGID_R) */ +#endif /* !defined(HAVE_GETGRNAM_R) || !defined(HAVE_GETGRGID_R) */ #endif /* TCL_THREADS */ @@ -363,8 +366,8 @@ TclpGetPwNam(const char *name) #if defined(HAVE_GETPWNAM_R_5) struct passwd *pwPtr = NULL; - return (getpwnam_r(name, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), - &pwPtr) == 0 && pwPtr != NULL) ? &tsdPtr->pwd : NULL; + return (getpwnam_r(name, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), + &pwPtr) == 0 && pwPtr != NULL) ? &tsdPtr->pwd : NULL; #elif defined(HAVE_GETPWNAM_R_4) return getpwnam_r(name, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)); @@ -374,11 +377,11 @@ TclpGetPwNam(const char *name) Tcl_MutexLock(&compatLock); pwPtr = getpwnam(name); if (pwPtr != NULL) { - tsdPtr->pwd = *pwPtr; - pwPtr = &tsdPtr->pwd; - if (CopyPwd(&tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)) == -1) { - pwPtr = NULL; - } + tsdPtr->pwd = *pwPtr; + pwPtr = &tsdPtr->pwd; + if (CopyPwd(&tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)) == -1) { + pwPtr = NULL; + } } Tcl_MutexUnlock(&compatLock); return pwPtr; @@ -416,7 +419,7 @@ TclpGetPwUid(uid_t uid) #if defined(HAVE_GETPWUID_R_5) struct passwd *pwPtr = NULL; return (getpwuid_r(uid, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf), - &pwPtr) == 0 && pwPtr != NULL) ? &tsdPtr->pwd : NULL; + &pwPtr) == 0 && pwPtr != NULL) ? &tsdPtr->pwd : NULL; #elif defined(HAVE_GETPWUID_R_4) return getpwuid_r(uid, &tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)); @@ -426,11 +429,11 @@ TclpGetPwUid(uid_t uid) Tcl_MutexLock(&compatLock); pwPtr = getpwuid(uid); if (pwPtr != NULL) { - tsdPtr->pwd = *pwPtr; - pwPtr = &tsdPtr->pwd; - if (CopyPwd(&tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)) == -1) { - pwPtr = NULL; - } + tsdPtr->pwd = *pwPtr; + pwPtr = &tsdPtr->pwd; + if (CopyPwd(&tsdPtr->pwd, tsdPtr->pbuf, sizeof(tsdPtr->pbuf)) == -1) { + pwPtr = NULL; + } } Tcl_MutexUnlock(&compatLock); return pwPtr; @@ -468,7 +471,7 @@ TclpGetGrNam(const char *name) #if defined(HAVE_GETGRNAM_R_5) struct group *grPtr = NULL; return (getgrnam_r(name, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf), - &grPtr) == 0 && grPtr != NULL) ? &tsdPtr->grp : NULL; + &grPtr) == 0 && grPtr != NULL) ? &tsdPtr->grp : NULL; #elif defined(HAVE_GETGRNAM_R_4) return getgrnam_r(name, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)); @@ -478,11 +481,11 @@ TclpGetGrNam(const char *name) Tcl_MutexLock(&compatLock); grPtr = getgrnam(name); if (grPtr != NULL) { - tsdPtr->grp = *grPtr; - grPtr = &tsdPtr->grp; - if (CopyGrp(&tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)) == -1) { - grPtr = NULL; - } + tsdPtr->grp = *grPtr; + grPtr = &tsdPtr->grp; + if (CopyGrp(&tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)) == -1) { + grPtr = NULL; + } } Tcl_MutexUnlock(&compatLock); return grPtr; @@ -520,7 +523,7 @@ TclpGetGrGid(gid_t gid) #if defined(HAVE_GETGRGID_R_5) struct group *grPtr = NULL; return (getgrgid_r(gid, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf), - &grPtr) == 0 && grPtr != NULL) ? &tsdPtr->grp : NULL; + &grPtr) == 0 && grPtr != NULL) ? &tsdPtr->grp : NULL; #elif defined(HAVE_GETGRGID_R_4) return getgrgid_r(gid, &tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)); @@ -530,11 +533,11 @@ TclpGetGrGid(gid_t gid) Tcl_MutexLock(&compatLock); grPtr = getgrgid(gid); if (grPtr != NULL) { - tsdPtr->grp = *grPtr; - grPtr = &tsdPtr->grp; - if (CopyGrp(&tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)) == -1) { - grPtr = NULL; - } + tsdPtr->grp = *grPtr; + grPtr = &tsdPtr->grp; + if (CopyGrp(&tsdPtr->grp, tsdPtr->gbuf, sizeof(tsdPtr->gbuf)) == -1) { + grPtr = NULL; + } } Tcl_MutexUnlock(&compatLock); return grPtr; @@ -572,30 +575,30 @@ TclpGetHostByName(const char *name) #if defined(HAVE_GETHOSTBYNAME_R_5) int h_errno; return gethostbyname_r(name, &tsdPtr->hent, tsdPtr->hbuf, - sizeof(tsdPtr->hbuf), &h_errno); - + sizeof(tsdPtr->hbuf), &h_errno); + #elif defined(HAVE_GETHOSTBYNAME_R_6) struct hostent *hePtr; int h_errno; return (gethostbyname_r(name, &tsdPtr->hent, tsdPtr->hbuf, - sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? - &tsdPtr->hent : NULL; + sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? + &tsdPtr->hent : NULL; #elif defined(HAVE_GETHOSTBYNAME_R_3) struct hostent_data data; return (gethostbyname_r(name, &tsdPtr->hent, &data) == 0) ? - &tsdPtr->hent : NULL; + &tsdPtr->hent : NULL; #else struct hostent *hePtr; Tcl_MutexLock(&compatLock); hePtr = gethostbyname(name); if (hePtr != NULL) { - tsdPtr->hent = *hePtr; - hePtr = &tsdPtr->hent; - if (CopyHostent(&tsdPtr->hent, tsdPtr->hbuf, - sizeof(tsdPtr->hbuf)) == -1) { - hePtr = NULL; - } + tsdPtr->hent = *hePtr; + hePtr = &tsdPtr->hent; + if (CopyHostent(&tsdPtr->hent, tsdPtr->hbuf, + sizeof(tsdPtr->hbuf)) == -1) { + hePtr = NULL; + } } Tcl_MutexUnlock(&compatLock); return hePtr; @@ -633,25 +636,25 @@ TclpGetHostByAddr(const char *addr, int length, int type) #if defined(HAVE_GETHOSTBYADDR_R_7) int h_errno; return gethostbyaddr_r(addr, length, type, &tsdPtr->hent, tsdPtr->hbuf, - sizeof(tsdPtr->hbuf), &h_errno); + sizeof(tsdPtr->hbuf), &h_errno); #elif defined(HAVE_GETHOSTBYADDR_R_8) struct hostent *hePtr; int h_errno; return (gethostbyaddr_r(addr, length, type, &tsdPtr->hent, tsdPtr->hbuf, - sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? - &tsdPtr->hent : NULL; + sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? + &tsdPtr->hent : NULL; #else struct hostent *hePtr; Tcl_MutexLock(&compatLock); hePtr = gethostbyaddr(addr, length, type); if (hePtr != NULL) { - tsdPtr->hent = *hePtr; - hePtr = &tsdPtr->hent; - if (CopyHostent(&tsdPtr->hent, tsdPtr->hbuf, - sizeof(tsdPtr->hbuf)) == -1) { - hePtr = NULL; - } + tsdPtr->hent = *hePtr; + hePtr = &tsdPtr->hent; + if (CopyHostent(&tsdPtr->hent, tsdPtr->hbuf, + sizeof(tsdPtr->hbuf)) == -1) { + hePtr = NULL; + } } Tcl_MutexUnlock(&compatLock); return hePtr; -- cgit v0.12 From b452b8cae9b90c3b781f0a67f5c43d170df1aa8d Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 11 Sep 2006 16:15:11 +0000 Subject: * tests/msgcat.test: Bumped version in auxiliary files as well. * doc/msgcat.n: --- ChangeLog | 5 +++++ doc/msgcat.n | 2 +- tests/msgcat.test | 6 +++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4018e96..09b9fcc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-09-11 Andreas Kupries + + * tests/msgcat.test: Bumped version in auxiliary files as well. + * doc/msgcat.n: + 2006-09-11 Daniel Steffen * unix/tclUnixCompat.c: make compatLock static and only declare it when diff --git a/doc/msgcat.n b/doc/msgcat.n index 7f85dc6..99ac262 100644 --- a/doc/msgcat.n +++ b/doc/msgcat.n @@ -15,7 +15,7 @@ msgcat \- Tcl message catalog .SH SYNOPSIS \fBpackage require Tcl 8.2\fR .sp -\fBpackage require msgcat 1.3\fR +\fBpackage require msgcat 1.3.4\fR .sp \fB::msgcat::mc \fIsrc-string\fR ?\fIarg arg ...\fR? .sp diff --git a/tests/msgcat.test b/tests/msgcat.test index ea4814d..b291a09 100644 --- a/tests/msgcat.test +++ b/tests/msgcat.test @@ -12,15 +12,15 @@ # Note that after running these tests, entries will be left behind in the # message catalogs for locales foo, foo_BAR, and foo_BAR_baz. # -# RCS: @(#) $Id: msgcat.test,v 1.11.2.3 2006/09/10 17:04:41 das Exp $ +# RCS: @(#) $Id: msgcat.test,v 1.11.2.4 2006/09/11 16:15:12 andreas_kupries Exp $ package require Tcl 8.2 if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." return } -if {[catch {package require msgcat 1.3.3}]} { - puts stderr "Skipping tests in [info script]. No msgcat 1.3.3 found to test." +if {[catch {package require msgcat 1.3.4}]} { + puts stderr "Skipping tests in [info script]. No msgcat 1.3.4 found to test." return } -- cgit v0.12 From b45164f6b072a2793e896f53449f81ba6f73f981 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 12 Sep 2006 22:05:02 +0000 Subject: * unix/tclUnixCompat.c (PadBuffer): Fixed bug in calculation of the increment needed to align the pointer, and added documentation explaining why the macro is implemented as it is. --- ChangeLog | 6 ++++++ unix/tclUnixCompat.c | 16 +++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 09b9fcc..029620a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-09-12 Andreas Kupries + + * unix/tclUnixCompat.c (PadBuffer): Fixed bug in calculation of + the increment needed to align the pointer, and added + documentation explaining why the macro is implemented as it is. + 2006-09-11 Andreas Kupries * tests/msgcat.test: Bumped version in auxiliary files as well. diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index 84684b5..7e419cf 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.9 2006/09/11 16:07:45 das Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.10 2006/09/12 22:05:03 andreas_kupries Exp $ * */ @@ -19,12 +19,18 @@ /* * Used to pad structures at size'd boundaries + * + * This macro assumes that the pointer 'buffer' was created from an + * aligned pointer by adding the 'length'. If this 'length' was not a + * multiple of the 'size' the result is unaligned and PadBuffer + * corrects both the pointer, _and_ the 'length'. The latter means + * that future increments of 'buffer' by 'length' stay aligned. */ -#define PadBuffer(buffer, length, size) \ - if (((length) % (size))) { \ - (buffer) += ((length) % (size)); \ - (length) += ((length) % (size)); \ +#define PadBuffer(buffer, length, size) \ + if (((length) % (size))) { \ + (buffer) += ((size) - ((length) % (size))); \ + (length) += ((size) - ((length) % (size))); \ } /* -- cgit v0.12 From 481c3e966dec813f857ea8fe0608e4f46c46a606 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 12 Sep 2006 22:52:08 +0000 Subject: * unix/configure.in (HAVE_MTSAFE_GETHOST*): Modified to recognize HP-UX 11.00 and beyond as having mt-safe implementations of the gethost functions. * unix/configure: Regenerated, using autoconf 2.13 --- ChangeLog | 5 + unix/configure | 401 ++++++++++++++++++++++++++++-------------------------- unix/configure.in | 9 +- 3 files changed, 220 insertions(+), 195 deletions(-) diff --git a/ChangeLog b/ChangeLog index 029620a..08820de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2006-09-12 Andreas Kupries + * unix/configure.in (HAVE_MTSAFE_GETHOST*): Modified to recognize + HP-UX 11.00 and beyond as having mt-safe implementations of the + gethost functions. + * unix/configure: Regenerated, using autoconf 2.13 + * unix/tclUnixCompat.c (PadBuffer): Fixed bug in calculation of the increment needed to align the pointer, and added documentation explaining why the macro is implemented as it is. diff --git a/unix/configure b/unix/configure index c0d59e8..0add57b 100755 --- a/unix/configure +++ b/unix/configure @@ -5756,14 +5756,27 @@ EOF #define HAVE_MTSAFE_GETHOSTBYADDR 1 EOF + elif test "`uname -s`" = "HP-UX" && \ + test "`uname -r|sed -e 's|B\.||' -e 's|\..*$||'`" -gt 10; then + # Starting with HPUX 11.00 (we believe), gethostbyX + # are actually MT-safe as they always return pointers + # from TSD instead of static storage. + cat >> confdefs.h <<\EOF +#define HAVE_MTSAFE_GETHOSTBYNAME 1 +EOF + + cat >> confdefs.h <<\EOF +#define HAVE_MTSAFE_GETHOSTBYADDR 1 +EOF + else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5762: checking for gethostbyname_r" >&5 +echo "configure:5775: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5802,13 +5815,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5806: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5819: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5825,7 +5838,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5846,13 +5859,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5850: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5863: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5869,7 +5882,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5873: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -5890,13 +5903,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:5894: checking for gethostbyname_r with 3 args" >&5 +echo "configure:5907: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5911,7 +5924,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -5945,12 +5958,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:5949: checking for gethostbyaddr_r" >&5 +echo "configure:5962: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -5989,13 +6002,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:5993: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6006: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6015,7 +6028,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6032: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6036,13 +6049,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6040: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6053: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6062,7 +6075,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6066: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6108,17 +6121,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6112: checking for $ac_hdr" >&5 +echo "configure:6125: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6145,7 +6158,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6149: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6162: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6154,7 +6167,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6169,7 +6182,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6186,7 +6199,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6200,7 +6213,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6218,7 +6231,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6233,7 +6246,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6251,7 +6264,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6268,7 +6281,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6286,7 +6299,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6302,7 +6315,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6320,7 +6333,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6337,7 +6350,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6380,20 +6393,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6384: checking for fd_set in sys/types" >&5 +echo "configure:6397: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6410: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6409,13 +6422,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6413: checking for fd_mask in sys/select" >&5 +echo "configure:6426: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6452,12 +6465,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6456: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6469: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6465,7 +6478,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6482: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6490,17 +6503,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6494: checking for $ac_hdr" >&5 +echo "configure:6507: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6504: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6527,12 +6540,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6531: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6544: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6541,7 +6554,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6562,12 +6575,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6566: checking for tm_zone in struct tm" >&5 +echo "configure:6579: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6575,7 +6588,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6579: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6592: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6595,12 +6608,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6599: checking for tzname" >&5 +echo "configure:6612: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6610,7 +6623,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6635,12 +6648,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6639: checking for $ac_func" >&5 +echo "configure:6652: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6689,20 +6702,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6693: checking tm_tzadj in struct tm" >&5 +echo "configure:6706: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6723,20 +6736,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6727: checking tm_gmtoff in struct tm" >&5 +echo "configure:6740: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6753: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6761,13 +6774,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6765: checking long timezone variable" >&5 +echo "configure:6778: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6776,7 +6789,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6799,13 +6812,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6803: checking time_t timezone variable" >&5 +echo "configure:6816: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6814,7 +6827,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6841,12 +6854,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6845: checking for st_blksize in struct stat" >&5 +echo "configure:6858: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6854,7 +6867,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6875,12 +6888,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6879: checking for fstatfs" >&5 +echo "configure:6892: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6932,7 +6945,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6936: checking for 8-bit clean memcmp" >&5 +echo "configure:6949: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6940,7 +6953,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6974,12 +6987,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6978: checking for memmove" >&5 +echo "configure:6991: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7035,7 +7048,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7039: checking proper strstr implementation" >&5 +echo "configure:7052: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7044,7 +7057,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7080,12 +7093,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7084: checking for strtoul" >&5 +echo "configure:7097: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7130,7 +7143,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7134: checking proper strtoul implementation" >&5 +echo "configure:7147: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7139,7 +7152,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7184,12 +7197,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7188: checking for strtod" >&5 +echo "configure:7201: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7234,7 +7247,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7238: checking proper strtod implementation" >&5 +echo "configure:7251: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7243,7 +7256,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7291,12 +7304,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7295: checking for strtod" >&5 +echo "configure:7308: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7341,7 +7354,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7345: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7358: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7350,7 +7363,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7404,12 +7417,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7408: checking for ANSI C header files" >&5 +echo "configure:7421: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7417,7 +7430,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7434: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7434,7 +7447,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7452,7 +7465,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7473,7 +7486,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7484,7 +7497,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7508,12 +7521,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7512: checking for mode_t" >&5 +echo "configure:7525: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7541,12 +7554,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7545: checking for pid_t" >&5 +echo "configure:7558: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7574,12 +7587,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7578: checking for size_t" >&5 +echo "configure:7591: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7607,12 +7620,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7611: checking for uid_t in sys/types.h" >&5 +echo "configure:7624: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7642,13 +7655,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7646: checking for socklen_t" >&5 +echo "configure:7659: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7687,12 +7700,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7691: checking for opendir" >&5 +echo "configure:7704: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7748,13 +7761,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7752: checking union wait" >&5 +echo "configure:7765: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7766,7 +7779,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7793,12 +7806,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7797: checking for strncasecmp" >&5 +echo "configure:7810: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7843,7 +7856,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7847: checking for strncasecmp in -lsocket" >&5 +echo "configure:7860: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7851,7 +7864,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7886,7 +7899,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7890: checking for strncasecmp in -linet" >&5 +echo "configure:7903: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7894,7 +7907,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7943,12 +7956,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7947: checking for BSDgettimeofday" >&5 +echo "configure:7960: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -7993,12 +8006,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:7997: checking for gettimeofday" >&5 +echo "configure:8010: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8048,13 +8061,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8052: checking for gettimeofday declaration" >&5 +echo "configure:8065: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8085,14 +8098,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8089: checking whether char is unsigned" >&5 +echo "configure:8102: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8148,13 +8161,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8152: checking signed char declarations" >&5 +echo "configure:8165: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8181: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8189,7 +8202,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8193: checking for a putenv() that copies the buffer" >&5 +echo "configure:8206: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8198,7 +8211,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8220,7 +8233,7 @@ else } EOF -if { (eval echo configure:8224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8260,17 +8273,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8264: checking for langinfo.h" >&5 +echo "configure:8277: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8274: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8294,21 +8307,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8298: checking whether to use nl_langinfo" >&5 +echo "configure:8311: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8341,17 +8354,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8345: checking for $ac_hdr" >&5 +echo "configure:8358: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8380,12 +8393,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8384: checking for $ac_func" >&5 +echo "configure:8397: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8437,17 +8450,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8441: checking for $ac_hdr" >&5 +echo "configure:8454: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8476,12 +8489,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8480: checking for $ac_func" >&5 +echo "configure:8493: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8531,12 +8544,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8535: checking for $ac_func" >&5 +echo "configure:8548: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8600,17 +8613,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8604: checking for $ac_hdr" >&5 +echo "configure:8617: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8627: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8638,14 +8651,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8642: checking if weak import is available" >&5 +echo "configure:8655: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8689,13 +8702,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8693: checking for fts" >&5 +echo "configure:8706: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8710,7 +8723,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8742,17 +8755,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8746: checking for $ac_hdr" >&5 +echo "configure:8759: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8756: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8782,17 +8795,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8786: checking for $ac_hdr" >&5 +echo "configure:8799: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8796: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8820,7 +8833,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8824: checking system version" >&5 +echo "configure:8837: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8851,7 +8864,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8855: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8868: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -8914,7 +8927,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:8918: checking how to package libraries" >&5 +echo "configure:8931: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/configure.in b/unix/configure.in index 0040c3d..4a3b7ae 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.30 2006/09/08 11:15:13 vasiljevic Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.31 2006/09/12 22:52:10 andreas_kupries Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -158,6 +158,13 @@ if test "${TCL_THREADS}" = 1; then # from the TSD instead of the static storage. AC_DEFINE(HAVE_MTSAFE_GETHOSTBYNAME) AC_DEFINE(HAVE_MTSAFE_GETHOSTBYADDR) + elif test "`uname -s`" = "HP-UX" && \ + test "`uname -r|sed -e 's|B\.||' -e 's|\..*$||'`" -gt 10; then + # Starting with HPUX 11.00 (we believe), gethostbyX + # are actually MT-safe as they always return pointers + # from TSD instead of static storage. + AC_DEFINE(HAVE_MTSAFE_GETHOSTBYNAME) + AC_DEFINE(HAVE_MTSAFE_GETHOSTBYADDR) else SC_TCL_GETHOSTBYNAME_R SC_TCL_GETHOSTBYADDR_R -- cgit v0.12 From e54225009c1133029084660b54b930783c1fbb94 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 15 Sep 2006 19:53:32 +0000 Subject: * library/http/http.tcl: Change " " -> "+" url encoding mapping * library/http/pkgIndex.tcl: to " " -> "%20" as per RFC 3986. * tests/http.test (http-5.1): bump http to 2.5.3 for 8.4.14 --- ChangeLog | 18 ++++++++++++------ library/http/http.tcl | 6 +++--- library/http/pkgIndex.tcl | 2 +- tests/http.test | 4 ++-- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 08820de..2b7dd43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-09-15 Jeff Hobbs + + * library/http/http.tcl: Change " " -> "+" url encoding mapping + * library/http/pkgIndex.tcl: to " " -> "%20" as per RFC 3986. + * tests/http.test (http-5.1): bump http to 2.5.3 for 8.4.14 + 2006-09-12 Andreas Kupries * unix/configure.in (HAVE_MTSAFE_GETHOST*): Modified to recognize @@ -54,13 +60,13 @@ 2006-09-07 Zoran Vasiljevic - * unix/tclUnixFCmd.c: Removed some false tests added - (and left by mistake) by fixing the Tcl Bug: 999544 + * unix/tclUnixFCmd.c: Removed some false tests added + (and left by mistake) by fixing the Tcl Bug: 999544 - * unix/tclUnixCompat.c: Added fallback to MT-unsafe - library calls if TCL_THREADS is not defined. - Fixed alignment of arrays copied by CopyArrayi() to be - on the sizeof(char *) boundary. + * unix/tclUnixCompat.c: Added fallback to MT-unsafe + library calls if TCL_THREADS is not defined. + Fixed alignment of arrays copied by CopyArrayi() to be + on the sizeof(char *) boundary. 2006-09-07 Andreas Kupries diff --git a/library/http/http.tcl b/library/http/http.tcl index 878f02d..1a79ceb 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.11 2006/03/07 19:18:39 dgp Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.12 2006/09/15 19:53:33 hobbs Exp $ # Rough version history: # 1.0 Old http_get interface. @@ -24,7 +24,7 @@ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories # in Makefiles -package provide http 2.5.2 +package provide http 2.5.3 namespace eval http { variable http @@ -50,7 +50,7 @@ namespace eval http { } } # These are handled specially - array set map { " " + \n %0d%0a } + set map(\n) %0d%0a variable formMap [array get map] } init diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 1691b51..af88a2e 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.5.2 [list tclPkgSetup $dir http 2.5.2 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister}}}] +package ifneeded http 2.5.3 [list tclPkgSetup $dir http 2.5.3 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] diff --git a/tests/http.test b/tests/http.test index 773b7b3..1fca0c4 100644 --- a/tests/http.test +++ b/tests/http.test @@ -12,7 +12,7 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # -# RCS: @(#) $Id: http.test,v 1.33.2.4 2005/11/18 15:20:47 dkf Exp $ +# RCS: @(#) $Id: http.test,v 1.33.2.5 2006/09/15 19:53:33 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -463,7 +463,7 @@ test http-4.15 {http::Event} { test http-5.1 {http::formatQuery} { http::formatQuery name1 value1 name2 "value two" -} {name1=value1&name2=value+two} +} {name1=value1&name2=value%20two} # test http-5.2 obsoleted by 5.4 and 5.5 with http 2.5 test http-5.3 {http::formatQuery} { http::formatQuery lines "line1\nline2\nline3" -- cgit v0.12 From e071f14d95c6a3e37911f58a3ca71da73b6a72d2 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 22 Sep 2006 01:26:21 +0000 Subject: * generic/tcl.decls: Implemented TIP #268, conditionally. * generic/tclBasic.c: Define TCL_TIP268 to activate the new * generic/tclDecls.h: features. * generic/tclInt.h: * generic/tclPkg.c: * generic/tclStubInit.c: * generic/tclTest.c: * library/init.tcl * library/package.tcl: * tests/pkg.test: * tests/platform.test: * tests/safe.test: * doc/PkgRequire.3: --- ChangeLog | 16 + doc/PkgRequire.3 | 4 +- generic/tcl.decls | 22 +- generic/tclBasic.c | 17 +- generic/tclDecls.h | 66 ++- generic/tclInt.h | 22 +- generic/tclPkg.c | 1374 +++++++++++++++++++++++++++++++++++++++++++++---- generic/tclStubInit.c | 21 +- generic/tclTest.c | 7 +- library/package.tcl | 108 ++-- tests/pkg.test | 472 ++++++++++++++++- tests/platform.test | 1 + tests/safe.test | 6 +- 13 files changed, 1993 insertions(+), 143 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2b7dd43..147636d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2006-09-21 Andreas Kupries + + * generic/tcl.decls: Implemented TIP #268, conditionally. + * generic/tclBasic.c: Define TCL_TIP268 to activate the new + * generic/tclDecls.h: features. + * generic/tclInt.h: + * generic/tclPkg.c: + * generic/tclStubInit.c: + * generic/tclTest.c: + * library/init.tcl + * library/package.tcl: + * tests/pkg.test: + * tests/platform.test: + * tests/safe.test: + * doc/PkgRequire.3: + 2006-09-15 Jeff Hobbs * library/http/http.tcl: Change " " -> "+" url encoding mapping diff --git a/doc/PkgRequire.3 b/doc/PkgRequire.3 index f16288a..d19f859 100644 --- a/doc/PkgRequire.3 +++ b/doc/PkgRequire.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: PkgRequire.3,v 1.6 2002/02/26 02:22:20 hobbs Exp $ +'\" RCS: @(#) $Id: PkgRequire.3,v 1.6.2.1 2006/09/22 01:26:22 andreas_kupries Exp $ '\" .so man.macros .TH Tcl_PkgRequire 3 7.5 Tcl "Tcl Library Procedures" @@ -54,7 +54,6 @@ Pointer to place to store the value associated with the matching package. It is only changed if the pointer is not NULL and the function completed successfully. .BE - .SH DESCRIPTION .PP These procedures provide C-level interfaces to Tcl's package and @@ -82,6 +81,5 @@ in the interpreter's result. allow the setting and retrieving of the client data associated with the package. In all other respects they are equivalent to the matching functions. - .SH KEYWORDS package, present, provide, require, version diff --git a/generic/tcl.decls b/generic/tcl.decls index ed95c57..08a0e01 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tcl.decls,v 1.94.2.3 2005/01/27 22:53:28 andreas_kupries Exp $ +# RCS: @(#) $Id: tcl.decls,v 1.94.2.4 2006/09/22 01:26:22 andreas_kupries Exp $ library tcl @@ -971,6 +971,10 @@ declare 273 generic { int Tcl_PkgProvide(Tcl_Interp *interp, CONST char *name, CONST char *version) } + +# TIP #268: The internally used new Require function is in slot +# 573. Assuming TCL_TIP268 was activated. + declare 274 generic { CONST84_RETURN char * Tcl_PkgRequire(Tcl_Interp *interp, CONST char *name, CONST char *version, int exact) @@ -1772,6 +1776,22 @@ declare 554 generic { Tcl_DriverThreadActionProc *Tcl_ChannelThreadActionProc(Tcl_ChannelType *chanTypePtr) } +# Slots 555 to 572 are taken already by 8.5 +# TIP #237: Arbitrary-prec Integers (555 ... 559) +# TIP #208: 'chan' Command (560 ... 561) +# TIP #219: Channel Reflection (562 ... 565) +# TIP #237: Add. bignum support (566) +# TIP #181: 'namespace unknown' Cmd (567 ... 568) +# TIP #258: Enhanced Encodings API (569 ... 572) + +# TIP#268: Extended version numbers and requirements. +# The slot is present even if TCL_TIP268 is not activated. + +declare 573 generic { + int Tcl_PkgRequireProc(Tcl_Interp *interp, CONST char *name, + int objc, Tcl_Obj *CONST objv[], ClientData *clientDataPtr) +} + ############################################################################## # Define the platform specific public Tcl interface. These functions are diff --git a/generic/tclBasic.c b/generic/tclBasic.c index e13d01e..d746ff5 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.22 2006/08/30 17:24:25 hobbs Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.23 2006/09/22 01:26:22 andreas_kupries Exp $ */ #include "tclInt.h" @@ -345,6 +345,12 @@ Tcl_CreateInterp() Tcl_InitHashTable(&iPtr->packageTable, TCL_STRING_KEYS); iPtr->packageUnknown = NULL; +#ifdef TCL_TIP268 + /* TIP #268 */ + iPtr->packagePrefer = (getenv ("TCL_PKG_PREFER_LATEST") == NULL ? + PKG_PREFER_STABLE : + PKG_PREFER_LATEST); +#endif iPtr->cmdCount = 0; iPtr->termOffset = 0; TclInitLiteralTable(&(iPtr->literalTable)); @@ -572,10 +578,17 @@ Tcl_CreateInterp() /* * Register Tcl's version number. + * TIP #268: Full patchlevel instead of just major.minor */ +#ifndef TCL_TIP268 Tcl_PkgProvideEx(interp, "Tcl", TCL_VERSION, (ClientData) &tclStubs); - +#else + Tcl_SetVar2(interp, "tcl_platform", "tip,268", "1", + TCL_GLOBAL_ONLY); + + Tcl_PkgProvideEx(interp, "Tcl", TCL_PATCH_LEVEL, (ClientData) &tclStubs); +#endif #ifdef Tcl_InitStubs #undef Tcl_InitStubs #endif diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 8ecbe80..be7eec6 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDecls.h,v 1.93.2.6 2005/01/27 22:53:30 andreas_kupries Exp $ + * RCS: @(#) $Id: tclDecls.h,v 1.93.2.7 2006/09/22 01:26:23 andreas_kupries Exp $ */ #ifndef _TCLDECLS @@ -1627,6 +1627,29 @@ EXTERN Tcl_DriverWideSeekProc * Tcl_ChannelWideSeekProc _ANSI_ARGS_(( /* 554 */ EXTERN Tcl_DriverThreadActionProc * Tcl_ChannelThreadActionProc _ANSI_ARGS_(( Tcl_ChannelType * chanTypePtr)); +/* Slot 555 is reserved */ +/* Slot 556 is reserved */ +/* Slot 557 is reserved */ +/* Slot 558 is reserved */ +/* Slot 559 is reserved */ +/* Slot 560 is reserved */ +/* Slot 561 is reserved */ +/* Slot 562 is reserved */ +/* Slot 563 is reserved */ +/* Slot 564 is reserved */ +/* Slot 565 is reserved */ +/* Slot 566 is reserved */ +/* Slot 567 is reserved */ +/* Slot 568 is reserved */ +/* Slot 569 is reserved */ +/* Slot 570 is reserved */ +/* Slot 571 is reserved */ +/* Slot 572 is reserved */ +/* 573 */ +EXTERN int Tcl_PkgRequireProc _ANSI_ARGS_((Tcl_Interp * interp, + CONST char * name, int objc, + Tcl_Obj *CONST objv[], + ClientData * clientDataPtr)); typedef struct TclStubHooks { struct TclPlatStubs *tclPlatStubs; @@ -2241,6 +2264,25 @@ typedef struct TclStubs { void *reserved552; void *reserved553; Tcl_DriverThreadActionProc * (*tcl_ChannelThreadActionProc) _ANSI_ARGS_((Tcl_ChannelType * chanTypePtr)); /* 554 */ + void *reserved555; + void *reserved556; + void *reserved557; + void *reserved558; + void *reserved559; + void *reserved560; + void *reserved561; + void *reserved562; + void *reserved563; + void *reserved564; + void *reserved565; + void *reserved566; + void *reserved567; + void *reserved568; + void *reserved569; + void *reserved570; + void *reserved571; + void *reserved572; + int (*tcl_PkgRequireProc) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name, int objc, Tcl_Obj *CONST objv[], ClientData * clientDataPtr)); /* 573 */ } TclStubs; #ifdef __cplusplus @@ -4321,6 +4363,28 @@ extern TclStubs *tclStubsPtr; #define Tcl_ChannelThreadActionProc \ (tclStubsPtr->tcl_ChannelThreadActionProc) /* 554 */ #endif +/* Slot 555 is reserved */ +/* Slot 556 is reserved */ +/* Slot 557 is reserved */ +/* Slot 558 is reserved */ +/* Slot 559 is reserved */ +/* Slot 560 is reserved */ +/* Slot 561 is reserved */ +/* Slot 562 is reserved */ +/* Slot 563 is reserved */ +/* Slot 564 is reserved */ +/* Slot 565 is reserved */ +/* Slot 566 is reserved */ +/* Slot 567 is reserved */ +/* Slot 568 is reserved */ +/* Slot 569 is reserved */ +/* Slot 570 is reserved */ +/* Slot 571 is reserved */ +/* Slot 572 is reserved */ +#ifndef Tcl_PkgRequireProc +#define Tcl_PkgRequireProc \ + (tclStubsPtr->tcl_PkgRequireProc) /* 573 */ +#endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclInt.h b/generic/tclInt.h index 0129b5a..4fa0732 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.22 2006/03/10 14:09:02 vasiljevic Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.23 2006/09/22 01:26:23 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -1161,6 +1161,17 @@ typedef struct ResolverScheme { /* Pointer to next record in linked list. */ } ResolverScheme; +#ifdef TCL_TIP268 +/* + * TIP #268. + * Values for the selection mode, i.e the package require preferences. + */ + +enum PkgPreferOptions { + PKG_PREFER_LATEST, PKG_PREFER_STABLE +}; +#endif + /* *---------------------------------------------------------------- * This structure defines an interpreter, which is a collection of @@ -1284,6 +1295,15 @@ typedef struct Interp { * require" commands for packages that * aren't described in packageTable. * Malloc'ed, may be NULL. */ +#ifdef TCL_TIP268 + /* + * TIP #268. + * The currently active selection mode, + * i.e the package require preferences. + */ + + int packagePrefer; /* Current package selection mode. */ +#endif /* * Miscellaneous information: diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 4265aa9..de87a0b 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -5,11 +5,16 @@ * the "package" command and a few C APIs. * * Copyright (c) 1996 Sun Microsystems, Inc. + * Copyright (c) 2006 Andreas Kupries * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9.2.4 2006/08/30 17:24:07 hobbs Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.5 2006/09/22 01:26:23 andreas_kupries Exp $ + * + * TIP #268. + * Heavily rewritten to handle the extend version numbers, and extended + * package requirements. */ #include "tclInt.h" @@ -50,6 +55,7 @@ typedef struct Package { * Prototypes for procedures defined in this file: */ +#ifndef TCL_TIP268 static int CheckVersion _ANSI_ARGS_((Tcl_Interp *interp, CONST char *string)); static int ComparePkgVersions _ANSI_ARGS_((CONST char *v1, @@ -57,6 +63,24 @@ static int ComparePkgVersions _ANSI_ARGS_((CONST char *v1, int *satPtr)); static Package * FindPackage _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name)); +#else +static int CheckVersionAndConvert(Tcl_Interp *interp, CONST char *string, + char** internal, int* stable); +static int CompareVersions(CONST char *v1i, CONST char *v2i, + int *isMajorPtr); +static int CheckRequirement(Tcl_Interp *interp, CONST char *string); +static int CheckAllRequirements(Tcl_Interp* interp, + int reqc, Tcl_Obj *CONST reqv[]); +static int RequirementSatisfied(CONST char *havei, CONST char *req); +static int AllRequirementsSatisfied(CONST char *havei, + int reqc, Tcl_Obj *CONST reqv[]); +static void AddRequirementsToResult(Tcl_Interp* interp, + int reqc, Tcl_Obj *CONST reqv[]); +static void AddRequirementsToDString(Tcl_DString* dstring, + int reqc, Tcl_Obj *CONST reqv[]); +static Package * FindPackage(Tcl_Interp *interp, CONST char *name); +static Tcl_Obj* ExactRequirement(CONST char* version); +#endif /* *---------------------------------------------------------------------- @@ -83,24 +107,29 @@ static Package * FindPackage _ANSI_ARGS_((Tcl_Interp *interp, int Tcl_PkgProvide(interp, name, version) - Tcl_Interp *interp; /* Interpreter in which package is now + Tcl_Interp *interp; /* Interpreter in which package is now * available. */ - CONST char *name; /* Name of package. */ - CONST char *version; /* Version string for package. */ + CONST char *name; /* Name of package. */ + CONST char *version; /* Version string for package. */ { return Tcl_PkgProvideEx(interp, name, version, (ClientData) NULL); } int Tcl_PkgProvideEx(interp, name, version, clientData) - Tcl_Interp *interp; /* Interpreter in which package is now + Tcl_Interp *interp; /* Interpreter in which package is now * available. */ - CONST char *name; /* Name of package. */ - CONST char *version; /* Version string for package. */ - ClientData clientData; /* clientdata for this package (normally - * used for C callback function table) */ + CONST char *name; /* Name of package. */ + CONST char *version; /* Version string for package. */ + ClientData clientData; /* clientdata for this package (normally + * used for C callback function table) */ { Package *pkgPtr; +#ifdef TCL_TIP268 + char* pvi; + char* vi; + int res; +#endif pkgPtr = FindPackage(interp, name); if (pkgPtr->version == NULL) { @@ -109,21 +138,36 @@ Tcl_PkgProvideEx(interp, name, version, clientData) pkgPtr->clientData = clientData; return TCL_OK; } +#ifndef TCL_TIP268 if (ComparePkgVersions(pkgPtr->version, version, (int *) NULL) == 0) { +#else + if (CheckVersionAndConvert (interp, pkgPtr->version, &pvi, NULL) != TCL_OK) { + return TCL_ERROR; + } else if (CheckVersionAndConvert (interp, version, &vi, NULL) != TCL_OK) { + Tcl_Free (pvi); + return TCL_ERROR; + } + + res = CompareVersions(pvi, vi, NULL); + Tcl_Free (pvi); + Tcl_Free (vi); + + if (res == 0) { +#endif if (clientData != NULL) { pkgPtr->clientData = clientData; } return TCL_OK; } Tcl_AppendResult(interp, "conflicting versions provided for package \"", - name, "\": ", pkgPtr->version, ", then ", version, (char *) NULL); + name, "\": ", pkgPtr->version, ", then ", version, (char *) NULL); return TCL_ERROR; } /* *---------------------------------------------------------------------- * - * Tcl_PkgRequire / Tcl_PkgRequireEx -- + * Tcl_PkgRequire / Tcl_PkgRequireEx / Tcl_PkgRequireProc -- * * This procedure is called by code that depends on a particular * version of a particular package. If the package is not already @@ -149,42 +193,63 @@ Tcl_PkgProvideEx(interp, name, version, clientData) *---------------------------------------------------------------------- */ +#ifndef TCL_TIP268 +/* + * Empty definition for Stubs when TIP 268 is not activated. + */ +int +Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) + Tcl_Interp *interp; /* Interpreter in which package is now + * available. */ + CONST char *name; /* Name of desired package. */ + int reqc; /* Requirements constraining the desired version. */ + Tcl_Obj *CONST reqv[]; /* 0 means to use the latest version available. */ + ClientData *clientDataPtr; +{ + return TCL_ERROR; +} +#endif + CONST char * Tcl_PkgRequire(interp, name, version, exact) - Tcl_Interp *interp; /* Interpreter in which package is now - * available. */ - CONST char *name; /* Name of desired package. */ - CONST char *version; /* Version string for desired version; - * NULL means use the latest version + Tcl_Interp *interp; /* Interpreter in which package is now * available. */ - int exact; /* Non-zero means that only the particular - * version given is acceptable. Zero means - * use the latest compatible version. */ + CONST char *name; /* Name of desired package. */ + CONST char *version; /* Version string for desired version; NULL + * means use the latest version available. */ + int exact; /* Non-zero means that only the particular + * version given is acceptable. Zero means use + * the latest compatible version. */ { return Tcl_PkgRequireEx(interp, name, version, exact, (ClientData *) NULL); } CONST char * Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) - Tcl_Interp *interp; /* Interpreter in which package is now + Tcl_Interp *interp; /* Interpreter in which package is now * available. */ - CONST char *name; /* Name of desired package. */ - CONST char *version; /* Version string for desired version; + CONST char *name; /* Name of desired package. */ + CONST char *version; /* Version string for desired version; * NULL means use the latest version * available. */ - int exact; /* Non-zero means that only the particular + int exact; /* Non-zero means that only the particular * version given is acceptable. Zero means * use the latest compatible version. */ - ClientData *clientDataPtr; /* Used to return the client data for this + ClientData *clientDataPtr; /* Used to return the client data for this * package. If it is NULL then the client * data is not returned. This is unchanged * if this call fails for any reason. */ { +#ifndef TCL_TIP268 Package *pkgPtr; PkgAvail *availPtr, *bestPtr; char *script; int code, satisfies, result, pass; Tcl_DString command; +#else + Tcl_Obj *ov; + int res; +#endif /* * If an attempt is being made to load this into a standalone executable @@ -257,16 +322,56 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) tclEmptyStringRep = &tclEmptyString; Tcl_AppendResult(interp, "Cannot load package \"", name, - "\" in standalone executable: This package is not ", - "compiled with stub support", NULL); + "\" in standalone executable: This package is not ", + "compiled with stub support", NULL); return NULL; } +#ifdef TCL_TIP268 + /* Translate between old and new API, and defer to the new function. */ + + if (exact) { + ov = ExactRequirement (version); + } else { + ov = Tcl_NewStringObj (version,-1); + } + + Tcl_IncrRefCount (ov); + res = Tcl_PkgRequireProc(interp, name, 1, &ov, clientDataPtr); + Tcl_DecrRefCount (ov); + + if (res != TCL_OK) { + return NULL; + } + + return Tcl_GetString (Tcl_GetObjResult (interp)); +} + +int +Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) + Tcl_Interp *interp; /* Interpreter in which package is now + * available. */ + CONST char *name; /* Name of desired package. */ + int reqc; /* Requirements constraining the desired version. */ + Tcl_Obj *CONST reqv[]; /* 0 means to use the latest version available. */ + ClientData *clientDataPtr; +{ + Interp *iPtr = (Interp *) interp; + Package *pkgPtr; + PkgAvail *availPtr, *bestPtr, *bestStablePtr; + char *availVersion, *bestVersion; /* Internal rep. of versions */ + int availStable; + char *script; + int code, satisfies, pass; + Tcl_DString command; + char* pkgVersionI; + +#endif /* - * It can take up to three passes to find the package: one pass to - * run the "package unknown" script, one to run the "package ifneeded" - * script for a specific version, and a final pass to lookup the - * package loaded by the "package ifneeded" script. + * It can take up to three passes to find the package: one pass to run the + * "package unknown" script, one to run the "package ifneeded" script for + * a specific version, and a final pass to lookup the package loaded by + * the "package ifneeded" script. */ for (pass = 1; ; pass++) { @@ -282,42 +387,115 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) if (pkgPtr->clientData != NULL) { Tcl_AppendResult(interp, "circular package dependency: ", - "attempt to provide ", name, " ", - (char *)(pkgPtr->clientData), " requires ", name, NULL); + "attempt to provide ", name, " ", + (char *)(pkgPtr->clientData), " requires ", name, NULL); +#ifndef TCL_TIP268 if (version != NULL) { Tcl_AppendResult(interp, " ", version, NULL); } return NULL; +#else + AddRequirementsToResult (interp, reqc, reqv); + return TCL_ERROR; +#endif } /* - * The package isn't yet present. Search the list of available + * The package isn't yet present. Search the list of available * versions and invoke the script for the best available version. + * + * For TIP 268 we are actually locating the best, and the best stable + * version. One of them is then chosen based on the selection mode. */ - +#ifndef TCL_TIP268 bestPtr = NULL; for (availPtr = pkgPtr->availPtr; availPtr != NULL; availPtr = availPtr->nextPtr) { if ((bestPtr != NULL) && (ComparePkgVersions(availPtr->version, bestPtr->version, (int *) NULL) <= 0)) { +#else + bestPtr = NULL; + bestStablePtr = NULL; + bestVersion = NULL; + + for (availPtr = pkgPtr->availPtr; + availPtr != NULL; + availPtr = availPtr->nextPtr) { + if (CheckVersionAndConvert (interp, availPtr->version, + &availVersion, &availStable) != TCL_OK) { + /* The provided version number is has invalid syntax. This + * should not happen. This should have been caught by the + * 'package ifneeded' registering the package. + */ +#endif continue; } +#ifndef TCL_TIP268 if (version != NULL) { result = ComparePkgVersions(availPtr->version, version, &satisfies); if ((result != 0) && exact) { +#else + if (bestPtr != NULL) { + int res = CompareVersions (availVersion, bestVersion, NULL); + /* Note: Use internal reps! */ + if (res <= 0) { + /* The version of the package sought is not as good as the + * currently selected version. Ignore it. */ + Tcl_Free (availVersion); + availVersion = NULL; +#endif continue; } +#ifdef TCL_TIP268 + } + + /* We have found a version which is better than our max. */ + + if (reqc > 0) { + /* Check satisfaction of requirements */ + satisfies = AllRequirementsSatisfied (availVersion, reqc, reqv); +#endif if (!satisfies) { +#ifdef TCL_TIP268 + Tcl_Free (availVersion); + availVersion = NULL; +#endif continue; } } bestPtr = availPtr; +#ifdef TCL_TIP268 + if (bestVersion != NULL) Tcl_Free (bestVersion); + bestVersion = availVersion; + availVersion = NULL; + + /* If this new best version is stable then it also has to be + * better than the max stable version found so far. + */ + + if (availStable) { + bestStablePtr = availPtr; + } + } + + if (bestVersion != NULL) { + Tcl_Free (bestVersion); + } + + /* Now choose a version among the two best. For 'latest' we simply + * take (actually keep) the best. For 'stable' we take the best + * stable, if there is any, or the best if there is nothing stable. + */ + + if ((iPtr->packagePrefer == PKG_PREFER_STABLE) && (bestStablePtr != NULL)) { + bestPtr = bestStablePtr; +#endif } if (bestPtr != NULL) { /* - * We found an ifneeded script for the package. Be careful while - * executing it: this could cause reentrancy, so (a) protect the + * We found an ifneeded script for the package. Be careful while + * executing it: this could cause reentrancy, so (a) protect the * script itself from deletion and (b) don't assume that bestPtr * will still exist when the script completes. */ @@ -331,13 +509,19 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) Tcl_Release((ClientData) script); pkgPtr = FindPackage(interp, name); if (code == TCL_OK) { +#ifdef TCL_TIP268 + Tcl_ResetResult(interp); +#endif if (pkgPtr->version == NULL) { +#ifndef TCL_TIP268 Tcl_ResetResult(interp); +#endif code = TCL_ERROR; Tcl_AppendResult(interp, "attempt to provide package ", - name, " ", versionToProvide, - " failed: no version of package ", name, - " provided", NULL); + name, " ", versionToProvide, + " failed: no version of package ", name, + " provided", NULL); +#ifndef TCL_TIP268 } else if (0 != ComparePkgVersions( pkgPtr->version, versionToProvide, NULL)) { /* At this point, it is clear that a prior @@ -375,8 +559,84 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) versionToProvide, " failed: package ", name, " ", pkgPtr->version, " provided instead", NULL); +#else + } else { + char* pvi; + char* vi; + int res; + + if (CheckVersionAndConvert (interp, pkgPtr->version, &pvi, NULL) != TCL_OK) { + code = TCL_ERROR; + } else if (CheckVersionAndConvert (interp, versionToProvide, &vi, NULL) != TCL_OK) { + Tcl_Free (pvi); + code = TCL_ERROR; + } else { + res = CompareVersions(pvi, vi, NULL); + Tcl_Free (vi); + + if (res != 0) { + /* At this point, it is clear that a prior + * [package ifneeded] command lied to us. It said + * that to get a particular version of a particular + * package, we needed to evaluate a particular script. + * However, we evaluated that script and got a different + * version than we were told. This is an error, and we + * ought to report it. + * + * However, we've been letting this type of error slide + * for a long time, and as a result, a lot of packages + * suffer from them. + * + * It's a bit too harsh to make a large number of + * existing packages start failing by releasing a + * new patch release, so we forgive this type of error + * for the rest of the Tcl 8.4 series. + * + * We considered reporting a warning, but in practice + * even that appears too harsh a change for a patch release. + * + * We limit the error reporting to only + * the situation where a broken ifneeded script leads + * to a failure to satisfy the requirement. + */ + + if (reqc > 0) { + satisfies = AllRequirementsSatisfied (pvi, reqc, reqv); + if (!satisfies) { + Tcl_ResetResult(interp); + code = TCL_ERROR; + Tcl_AppendResult(interp, + "attempt to provide package ", name, " ", + versionToProvide, " failed: package ", + name, " ", pkgPtr->version, + " provided instead", NULL); + } + } + /* + * Warning generation now disabled + if (code == TCL_OK) { + Tcl_Obj *msg = Tcl_NewStringObj( + "attempt to provide package ", -1); + Tcl_Obj *cmdPtr = Tcl_NewListObj(0, NULL); + Tcl_ListObjAppendElement(NULL, cmdPtr, + Tcl_NewStringObj("tclLog", -1)); + Tcl_AppendStringsToObj(msg, name, " ", versionToProvide, + " failed: package ", name, " ", + pkgPtr->version, " provided instead", NULL); + Tcl_ListObjAppendElement(NULL, cmdPtr, msg); + Tcl_IncrRefCount(cmdPtr); + Tcl_EvalObjEx(interp, cmdPtr, TCL_EVAL_GLOBAL); + Tcl_DecrRefCount(cmdPtr); + Tcl_ResetResult(interp); + } + */ +#endif } +#ifdef TCL_TIP268 + Tcl_Free (pvi); +#endif } +#ifndef TCL_TIP268 /* * Warning generation now disabled if (code == TCL_OK) { @@ -395,13 +655,14 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) Tcl_ResetResult(interp); } */ +#endif } } else if (code != TCL_ERROR) { Tcl_Obj *codePtr = Tcl_NewIntObj(code); Tcl_ResetResult(interp); Tcl_AppendResult(interp, "attempt to provide package ", - name, " ", versionToProvide, " failed: ", - "bad return code: ", Tcl_GetString(codePtr), NULL); + name, " ", versionToProvide, " failed: ", + "bad return code: ", Tcl_GetString(codePtr), NULL); Tcl_DecrRefCount(codePtr); code = TCL_ERROR; } @@ -425,15 +686,19 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) pkgPtr->version = NULL; } pkgPtr->clientData = NULL; +#ifndef TCL_TIP268 return NULL; +#else + return TCL_ERROR; +#endif } break; } /* - * Package not in the database. If there is a "package unknown" - * command, invoke it (but only on the first pass; after that, - * we should not get here in the first place). + * The package is not in the database. If there is a "package unknown" + * command, invoke it (but only on the first pass; after that, we + * should not get here in the first place). */ if (pass > 1) { @@ -444,62 +709,99 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) Tcl_DStringInit(&command); Tcl_DStringAppend(&command, script, -1); Tcl_DStringAppendElement(&command, name); +#ifndef TCL_TIP268 Tcl_DStringAppend(&command, " ", 1); Tcl_DStringAppend(&command, (version != NULL) ? version : "{}", -1); if (exact) { Tcl_DStringAppend(&command, " -exact", 7); } +#else + AddRequirementsToDString(&command, reqc, reqv); +#endif code = Tcl_EvalEx(interp, Tcl_DStringValue(&command), - Tcl_DStringLength(&command), TCL_EVAL_GLOBAL); + Tcl_DStringLength(&command), TCL_EVAL_GLOBAL); Tcl_DStringFree(&command); if ((code != TCL_OK) && (code != TCL_ERROR)) { Tcl_Obj *codePtr = Tcl_NewIntObj(code); Tcl_ResetResult(interp); Tcl_AppendResult(interp, "bad return code: ", - Tcl_GetString(codePtr), NULL); + Tcl_GetString(codePtr), NULL); Tcl_DecrRefCount(codePtr); code = TCL_ERROR; } if (code == TCL_ERROR) { Tcl_AddErrorInfo(interp, "\n (\"package unknown\" script)"); +#ifndef TCL_TIP268 return NULL; +#else + return TCL_ERROR; +#endif } Tcl_ResetResult(interp); } } if (pkgPtr->version == NULL) { - Tcl_AppendResult(interp, "can't find package ", name, - (char *) NULL); + Tcl_AppendResult(interp, "can't find package ", name, (char *) NULL); +#ifndef TCL_TIP268 if (version != NULL) { Tcl_AppendResult(interp, " ", version, (char *) NULL); } return NULL; +#else + AddRequirementsToResult(interp, reqc, reqv); + return TCL_ERROR; +#endif } /* - * At this point we know that the package is present. Make sure that the - * provided version meets the current requirement. + * At this point we know that the package is present. Make sure that the + * provided version meets the current requirements. */ +#ifndef TCL_TIP268 if (version == NULL) { if (clientDataPtr) { *clientDataPtr = pkgPtr->clientData; } return pkgPtr->version; +#else + if (reqc == 0) { + satisfies = 1; + } else { + CheckVersionAndConvert (interp, pkgPtr->version, &pkgVersionI, NULL); + satisfies = AllRequirementsSatisfied (pkgVersionI, reqc, reqv); + + Tcl_Free (pkgVersionI); +#endif } +#ifndef TCL_TIP268 result = ComparePkgVersions(pkgPtr->version, version, &satisfies); if ((satisfies && !exact) || (result == 0)) { +#else + if (satisfies) { +#endif if (clientDataPtr) { *clientDataPtr = pkgPtr->clientData; } +#ifndef TCL_TIP268 return pkgPtr->version; +#else + Tcl_SetObjResult (interp, Tcl_NewStringObj (pkgPtr->version, -1)); + return TCL_OK; +#endif } Tcl_AppendResult(interp, "version conflict for package \"", - name, "\": have ", pkgPtr->version, ", need ", version, - (char *) NULL); + name, "\": have ", pkgPtr->version, +#ifndef TCL_TIP268 + ", need ", version, (char *) NULL); return NULL; +#else + ", need", (char*) NULL); + AddRequirementsToResult (interp, reqc, reqv); + return TCL_ERROR; +#endif } /* @@ -526,13 +828,13 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) CONST char * Tcl_PkgPresent(interp, name, version, exact) - Tcl_Interp *interp; /* Interpreter in which package is now + Tcl_Interp *interp; /* Interpreter in which package is now * available. */ - CONST char *name; /* Name of desired package. */ - CONST char *version; /* Version string for desired version; + CONST char *name; /* Name of desired package. */ + CONST char *version; /* Version string for desired version; * NULL means use the latest version * available. */ - int exact; /* Non-zero means that only the particular + int exact; /* Non-zero means that only the particular * version given is acceptable. Zero means * use the latest compatible version. */ { @@ -541,16 +843,16 @@ Tcl_PkgPresent(interp, name, version, exact) CONST char * Tcl_PkgPresentEx(interp, name, version, exact, clientDataPtr) - Tcl_Interp *interp; /* Interpreter in which package is now + Tcl_Interp *interp; /* Interpreter in which package is now * available. */ - CONST char *name; /* Name of desired package. */ - CONST char *version; /* Version string for desired version; + CONST char *name; /* Name of desired package. */ + CONST char *version; /* Version string for desired version; * NULL means use the latest version * available. */ - int exact; /* Non-zero means that only the particular + int exact; /* Non-zero means that only the particular * version given is acceptable. Zero means * use the latest compatible version. */ - ClientData *clientDataPtr; /* Used to return the client data for this + ClientData *clientDataPtr; /* Used to return the client data for this * package. If it is NULL then the client * data is not returned. This is unchanged * if this call fails for any reason. */ @@ -564,6 +866,11 @@ Tcl_PkgPresentEx(interp, name, version, exact, clientDataPtr) if (hPtr) { pkgPtr = (Package *) Tcl_GetHashValue(hPtr); if (pkgPtr->version != NULL) { +#ifdef TCL_TIP268 + char* pvi; + char* vi; + int thisIsMajor; +#endif /* * At this point we know that the package is present. Make sure @@ -577,7 +884,20 @@ Tcl_PkgPresentEx(interp, name, version, exact, clientDataPtr) return pkgPtr->version; } +#ifndef TCL_TIP268 result = ComparePkgVersions(pkgPtr->version, version, &satisfies); +#else + if (CheckVersionAndConvert (interp, pkgPtr->version, &pvi, NULL) != TCL_OK) { + return NULL; + } else if (CheckVersionAndConvert (interp, version, &vi, NULL) != TCL_OK) { + Tcl_Free (pvi); + return NULL; + } + result = CompareVersions(pvi, vi, &thisIsMajor); + Tcl_Free (pvi); + Tcl_Free (vi); + satisfies = (result == 0) || ((result == 1) && !thisIsMajor); +#endif if ((satisfies && !exact) || (result == 0)) { if (clientDataPtr) { *clientDataPtr = pkgPtr->clientData; @@ -619,21 +939,28 @@ Tcl_PkgPresentEx(interp, name, version, exact, clientDataPtr) *---------------------------------------------------------------------- */ - /* ARGSUSED */ +/* ARGSUSED */ int Tcl_PackageObjCmd(dummy, interp, objc, objv) - ClientData dummy; /* Not used. */ - Tcl_Interp *interp; /* Current interpreter. */ - int objc; /* Number of arguments. */ - Tcl_Obj *CONST objv[]; /* Argument objects. */ + ClientData dummy; /* Not used. */ + Tcl_Interp *interp; /* Current interpreter. */ + int objc; /* Number of arguments. */ + Tcl_Obj *CONST objv[]; /* Argument objects. */ { static CONST char *pkgOptions[] = { - "forget", "ifneeded", "names", "present", "provide", "require", - "unknown", "vcompare", "versions", "vsatisfies", (char *) NULL + "forget", "ifneeded", "names", +#ifdef TCL_TIP268 + "prefer", +#endif + "present", "provide", "require", "unknown", "vcompare", + "versions", "vsatisfies", (char *) NULL }; enum pkgOptions { - PKG_FORGET, PKG_IFNEEDED, PKG_NAMES, PKG_PRESENT, - PKG_PROVIDE, PKG_REQUIRE, PKG_UNKNOWN, PKG_VCOMPARE, + PKG_FORGET, PKG_IFNEEDED, PKG_NAMES, +#ifdef TCL_TIP268 + PKG_PREFER, +#endif + PKG_PRESENT, PKG_PROVIDE, PKG_REQUIRE, PKG_UNKNOWN, PKG_VCOMPARE, PKG_VERSIONS, PKG_VSATISFIES }; Interp *iPtr = (Interp *) interp; @@ -645,6 +972,10 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) Tcl_HashTable *tablePtr; CONST char *version; char *argv2, *argv3, *argv4; +#ifdef TCL_TIP268 + char* iva = NULL; + char* ivb = NULL; +#endif if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "option ?arg arg ...?"); @@ -652,10 +983,11 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) } if (Tcl_GetIndexFromObj(interp, objv[1], pkgOptions, "option", 0, - &optionIndex) != TCL_OK) { + &optionIndex) != TCL_OK) { return TCL_ERROR; } switch ((enum pkgOptions) optionIndex) { +#ifndef TCL_TIP268 case PKG_FORGET: { char *keyString; for (i = 2; i < objc; i++) { @@ -679,23 +1011,98 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) ckfree((char *) pkgPtr); } break; +#else + case PKG_FORGET: { + char *keyString; + for (i = 2; i < objc; i++) { + keyString = Tcl_GetString(objv[i]); + hPtr = Tcl_FindHashEntry(&iPtr->packageTable, keyString); + if (hPtr == NULL) { + continue; + } + pkgPtr = (Package *) Tcl_GetHashValue(hPtr); + Tcl_DeleteHashEntry(hPtr); + if (pkgPtr->version != NULL) { + ckfree(pkgPtr->version); + } + while (pkgPtr->availPtr != NULL) { + availPtr = pkgPtr->availPtr; + pkgPtr->availPtr = availPtr->nextPtr; + Tcl_EventuallyFree((ClientData)availPtr->version, TCL_DYNAMIC); + Tcl_EventuallyFree((ClientData)availPtr->script, TCL_DYNAMIC); + ckfree((char *) availPtr); + } + ckfree((char *) pkgPtr); + } + break; + } + case PKG_IFNEEDED: { + int length; + char* argv3i; + char* avi; + int res; + + if ((objc != 4) && (objc != 5)) { + Tcl_WrongNumArgs(interp, 2, objv, "package version ?script?"); + return TCL_ERROR; } + argv3 = Tcl_GetString(objv[3]); + if (CheckVersionAndConvert(interp, argv3, &argv3i, NULL) != TCL_OK) { + return TCL_ERROR; +#endif + } +#ifndef TCL_TIP268 case PKG_IFNEEDED: { int length; if ((objc != 4) && (objc != 5)) { Tcl_WrongNumArgs(interp, 2, objv, "package version ?script?"); return TCL_ERROR; +#else + argv2 = Tcl_GetString(objv[2]); + if (objc == 4) { + hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); + if (hPtr == NULL) { + Tcl_Free (argv3i); + return TCL_OK; +#endif } +#ifndef TCL_TIP268 argv3 = Tcl_GetString(objv[3]); if (CheckVersion(interp, argv3) != TCL_OK) { +#else + pkgPtr = (Package *) Tcl_GetHashValue(hPtr); + } else { + pkgPtr = FindPackage(interp, argv2); + } + argv3 = Tcl_GetStringFromObj(objv[3], &length); + + for (availPtr = pkgPtr->availPtr, prevPtr = NULL; + availPtr != NULL; + prevPtr = availPtr, availPtr = availPtr->nextPtr) { + + if (CheckVersionAndConvert (interp, availPtr->version, &avi, NULL) != TCL_OK) { + Tcl_Free (argv3i); +#endif return TCL_ERROR; } +#ifndef TCL_TIP268 argv2 = Tcl_GetString(objv[2]); if (objc == 4) { hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); if (hPtr == NULL) { +#else + + res = CompareVersions(avi, argv3i, NULL); + Tcl_Free (avi); + + if (res == 0){ + if (objc == 4) { + Tcl_Free (argv3i); + Tcl_SetResult(interp, availPtr->script, TCL_VOLATILE); +#endif return TCL_OK; } +#ifndef TCL_TIP268 pkgPtr = (Package *) Tcl_GetHashValue(hPtr); } else { pkgPtr = FindPackage(interp, argv2); @@ -715,7 +1122,12 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) } if (objc == 4) { return TCL_OK; +#else + Tcl_EventuallyFree((ClientData)availPtr->script, TCL_DYNAMIC); + break; +#endif } +#ifndef TCL_TIP268 if (availPtr == NULL) { availPtr = (PkgAvail *) ckalloc(sizeof(PkgAvail)); availPtr->version = ckalloc((unsigned) (length + 1)); @@ -727,40 +1139,169 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) availPtr->nextPtr = prevPtr->nextPtr; prevPtr->nextPtr = availPtr; } +#else + } + Tcl_Free (argv3i); + if (objc == 4) { + return TCL_OK; + } + if (availPtr == NULL) { + availPtr = (PkgAvail *) ckalloc(sizeof(PkgAvail)); + availPtr->version = ckalloc((unsigned) (length + 1)); + strcpy(availPtr->version, argv3); + if (prevPtr == NULL) { + availPtr->nextPtr = pkgPtr->availPtr; + pkgPtr->availPtr = availPtr; + } else { + availPtr->nextPtr = prevPtr->nextPtr; + prevPtr->nextPtr = availPtr; +#endif } +#ifndef TCL_TIP268 argv4 = Tcl_GetStringFromObj(objv[4], &length); availPtr->script = ckalloc((unsigned) (length + 1)); strcpy(availPtr->script, argv4); break; +#endif } +#ifndef TCL_TIP268 case PKG_NAMES: { if (objc != 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); +#else + argv4 = Tcl_GetStringFromObj(objv[4], &length); + availPtr->script = ckalloc((unsigned) (length + 1)); + strcpy(availPtr->script, argv4); + break; + } + case PKG_NAMES: { + if (objc != 2) { + Tcl_WrongNumArgs(interp, 2, objv, NULL); + return TCL_ERROR; + } + tablePtr = &iPtr->packageTable; + for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr != NULL; + hPtr = Tcl_NextHashEntry(&search)) { + pkgPtr = (Package *) Tcl_GetHashValue(hPtr); + if ((pkgPtr->version != NULL) || (pkgPtr->availPtr != NULL)) { + Tcl_AppendElement(interp, Tcl_GetHashKey(tablePtr, hPtr)); + } + } + break; + } + case PKG_PRESENT: { + if (objc < 3) { + presentSyntax: + Tcl_WrongNumArgs(interp, 2, objv, "?-exact? package ?version?"); + return TCL_ERROR; + } + argv2 = Tcl_GetString(objv[2]); + if ((argv2[0] == '-') && (strcmp(argv2, "-exact") == 0)) { + exact = 1; + } else { + exact = 0; + } + version = NULL; + if (objc == (4 + exact)) { + version = Tcl_GetString(objv[3 + exact]); + if (CheckVersionAndConvert(interp, version, NULL, NULL) != TCL_OK) { +#endif return TCL_ERROR; } +#ifndef TCL_TIP268 tablePtr = &iPtr->packageTable; for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { +#else + } else if ((objc != 3) || exact) { + goto presentSyntax; + } + if (exact) { + argv3 = Tcl_GetString(objv[3]); + version = Tcl_PkgPresent(interp, argv3, version, exact); + } else { + version = Tcl_PkgPresent(interp, argv2, version, exact); + } + if (version == NULL) { + return TCL_ERROR; + } + Tcl_SetObjResult( interp, Tcl_NewStringObj( version, -1 ) ); + break; + } + case PKG_PROVIDE: { + if ((objc != 3) && (objc != 4)) { + Tcl_WrongNumArgs(interp, 2, objv, "package ?version?"); + return TCL_ERROR; + } + argv2 = Tcl_GetString(objv[2]); + if (objc == 3) { + hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); + if (hPtr != NULL) { +#endif pkgPtr = (Package *) Tcl_GetHashValue(hPtr); +#ifndef TCL_TIP268 if ((pkgPtr->version != NULL) || (pkgPtr->availPtr != NULL)) { Tcl_AppendElement(interp, Tcl_GetHashKey(tablePtr, hPtr)); +#else + if (pkgPtr->version != NULL) { + Tcl_SetResult(interp, pkgPtr->version, TCL_VOLATILE); +#endif } } +#ifndef TCL_TIP268 break; +#else + return TCL_OK; +#endif } +#ifndef TCL_TIP268 case PKG_PRESENT: { if (objc < 3) { presentSyntax: Tcl_WrongNumArgs(interp, 2, objv, "?-exact? package ?version?"); return TCL_ERROR; +#else + argv3 = Tcl_GetString(objv[3]); + if (CheckVersionAndConvert(interp, argv3, NULL, NULL) != TCL_OK) { + return TCL_ERROR; + } + return Tcl_PkgProvide(interp, argv2, argv3); + } + case PKG_REQUIRE: { + if (objc < 3) { + requireSyntax: + Tcl_WrongNumArgs(interp, 2, objv, "?-exact? package ?requirement...?"); + return TCL_ERROR; + } + version = NULL; + argv2 = Tcl_GetString(objv[2]); + if ((argv2[0] == '-') && (strcmp(argv2, "-exact") == 0)) { + Tcl_Obj* ov; + int res; + + if (objc != 5) { + goto requireSyntax; +#endif } +#ifndef TCL_TIP268 argv2 = Tcl_GetString(objv[2]); if ((argv2[0] == '-') && (strcmp(argv2, "-exact") == 0)) { exact = 1; } else { exact = 0; +#else + version = Tcl_GetString(objv[4]); + if (CheckVersionAndConvert(interp, version, NULL, NULL) != TCL_OK) { + return TCL_ERROR; +#endif } +#ifdef TCL_TIP268 + /* Create a new-style requirement for the exact version. */ + + ov = ExactRequirement (version); +#endif version = NULL; +#ifndef TCL_TIP268 if (objc == (4 + exact)) { version = Tcl_GetString(objv[3 + exact]); if (CheckVersion(interp, version) != TCL_OK) { @@ -776,16 +1317,74 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) version = Tcl_PkgPresent(interp, argv2, version, exact); } if (version == NULL) { +#else + argv3 = Tcl_GetString(objv[3]); + + Tcl_IncrRefCount (ov); + res = Tcl_PkgRequireProc(interp, argv3, 1, &ov, NULL); + Tcl_DecrRefCount (ov); + return res; + } else { + if (CheckAllRequirements (interp, objc-3, objv+3) != TCL_OK) { +#endif return TCL_ERROR; } +#ifndef TCL_TIP268 Tcl_SetObjResult( interp, Tcl_NewStringObj( version, -1 ) ); break; +#else + return Tcl_PkgRequireProc(interp, argv2, objc-3, objv+3, NULL); +#endif } +#ifndef TCL_TIP268 case PKG_PROVIDE: { if ((objc != 3) && (objc != 4)) { Tcl_WrongNumArgs(interp, 2, objv, "package ?version?"); +#else + break; + } + case PKG_UNKNOWN: { + int length; + if (objc == 2) { + if (iPtr->packageUnknown != NULL) { + Tcl_SetResult(interp, iPtr->packageUnknown, TCL_VOLATILE); + } + } else if (objc == 3) { + if (iPtr->packageUnknown != NULL) { + ckfree(iPtr->packageUnknown); + } + argv2 = Tcl_GetStringFromObj(objv[2], &length); + if (argv2[0] == 0) { + iPtr->packageUnknown = NULL; + } else { + iPtr->packageUnknown = (char *) ckalloc((unsigned) + (length + 1)); + strcpy(iPtr->packageUnknown, argv2); + } + } else { + Tcl_WrongNumArgs(interp, 2, objv, "?command?"); + return TCL_ERROR; + } + break; + } + case PKG_PREFER: { + /* See tclInt.h for the enum, just before Interp */ + static CONST char *pkgPreferOptions[] = { + "latest", "stable", NULL + }; + + if (objc > 3) { + Tcl_WrongNumArgs(interp, 2, objv, "?latest|stable?"); + return TCL_ERROR; + } else if (objc == 3) { + /* Set value. */ + int new; + if (Tcl_GetIndexFromObj(interp, objv[2], pkgPreferOptions, "preference", 0, + &new) != TCL_OK) { +#endif return TCL_ERROR; } +#ifndef TCL_TIP268 argv2 = Tcl_GetString(objv[2]); if (objc == 3) { hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); @@ -796,13 +1395,20 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) } } return TCL_OK; +#else + if (new < iPtr->packagePrefer) { + iPtr->packagePrefer = new; +#endif } +#ifndef TCL_TIP268 argv3 = Tcl_GetString(objv[3]); if (CheckVersion(interp, argv3) != TCL_OK) { return TCL_ERROR; } return Tcl_PkgProvide(interp, argv2, argv3); +#endif } +#ifndef TCL_TIP268 case PKG_REQUIRE: { if (objc < 3) { requireSyntax: @@ -835,7 +1441,18 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) } Tcl_SetObjResult( interp, Tcl_NewStringObj( version, -1 ) ); break; +#else + /* Always return current value. */ + Tcl_SetObjResult(interp, Tcl_NewStringObj (pkgPreferOptions [iPtr->packagePrefer], -1)); + break; + } + case PKG_VCOMPARE: { + if (objc != 4) { + Tcl_WrongNumArgs(interp, 2, objv, "version1 version2"); + return TCL_ERROR; +#endif } +#ifndef TCL_TIP268 case PKG_UNKNOWN: { int length; if (objc == 2) { @@ -859,7 +1476,17 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) return TCL_ERROR; } break; +#else + argv3 = Tcl_GetString(objv[3]); + argv2 = Tcl_GetString(objv[2]); + if ((CheckVersionAndConvert (interp, argv2, &iva, NULL) != TCL_OK) || + (CheckVersionAndConvert (interp, argv3, &ivb, NULL) != TCL_OK)) { + if (iva != NULL) { Tcl_Free (iva); } + /* ivb cannot be set in this branch */ + return TCL_ERROR; +#endif } +#ifndef TCL_TIP268 case PKG_VCOMPARE: { if (objc != 4) { Tcl_WrongNumArgs(interp, 2, objv, "version1 version2"); @@ -874,12 +1501,36 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) Tcl_SetIntObj(Tcl_GetObjResult(interp), ComparePkgVersions(argv2, argv3, (int *) NULL)); break; +#else + + /* Comparison is done on the internal representation */ + Tcl_SetObjResult(interp,Tcl_NewIntObj(CompareVersions(iva, ivb, NULL))); + Tcl_Free (iva); + Tcl_Free (ivb); + break; + } + case PKG_VERSIONS: { + if (objc != 3) { + Tcl_WrongNumArgs(interp, 2, objv, "package"); + return TCL_ERROR; +#endif } +#ifndef TCL_TIP268 case PKG_VERSIONS: { if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "package"); return TCL_ERROR; +#else + argv2 = Tcl_GetString(objv[2]); + hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); + if (hPtr != NULL) { + pkgPtr = (Package *) Tcl_GetHashValue(hPtr); + for (availPtr = pkgPtr->availPtr; availPtr != NULL; + availPtr = availPtr->nextPtr) { + Tcl_AppendElement(interp, availPtr->version); +#endif } +#ifndef TCL_TIP268 argv2 = Tcl_GetString(objv[2]); hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); if (hPtr != NULL) { @@ -890,7 +1541,9 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) } } break; +#endif } +#ifndef TCL_TIP268 case PKG_VSATISFIES: { if (objc != 4) { Tcl_WrongNumArgs(interp, 2, objv, "version1 version2"); @@ -905,10 +1558,42 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) ComparePkgVersions(argv2, argv3, &satisfies); Tcl_SetIntObj(Tcl_GetObjResult(interp), satisfies); break; +#else + break; + } + case PKG_VSATISFIES: { + char* argv2i = NULL; + + if (objc < 4) { + Tcl_WrongNumArgs(interp, 2, objv, "version requirement requirement..."); + return TCL_ERROR; +#endif } +#ifndef TCL_TIP268 default: { panic("Tcl_PackageObjCmd: bad option index to pkgOptions"); +#else + + argv2 = Tcl_GetString(objv[2]); + if ((CheckVersionAndConvert(interp, argv2, &argv2i, NULL) != TCL_OK)) { + return TCL_ERROR; + } else if (CheckAllRequirements (interp, objc-3, objv+3) != TCL_OK) { + Tcl_Free (argv2i); + return TCL_ERROR; +#endif } +#ifdef TCL_TIP268 + + satisfies = AllRequirementsSatisfied (argv2i, objc-3, objv+3); + Tcl_Free (argv2i); + + Tcl_SetIntObj(Tcl_GetObjResult(interp), satisfies); + break; + } + default: { + panic("Tcl_PackageObjCmd: bad option index to pkgOptions"); + } +#endif } return TCL_OK; } @@ -934,8 +1619,8 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) static Package * FindPackage(interp, name) - Tcl_Interp *interp; /* Interpreter to use for package lookup. */ - CONST char *name; /* Name of package to fine. */ + Tcl_Interp *interp; /* Interpreter to use for package lookup. */ + CONST char *name; /* Name of package to fine. */ { Interp *iPtr = (Interp *) interp; Tcl_HashEntry *hPtr; @@ -975,7 +1660,7 @@ FindPackage(interp, name) void TclFreePackageInfo(iPtr) - Interp *iPtr; /* Interpereter that is being deleted. */ + Interp *iPtr; /* Interpreter that is being deleted. */ { Package *pkgPtr; Tcl_HashSearch search; @@ -983,7 +1668,7 @@ TclFreePackageInfo(iPtr) PkgAvail *availPtr; for (hPtr = Tcl_FirstHashEntry(&iPtr->packageTable, &search); - hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { + hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { pkgPtr = (Package *) Tcl_GetHashValue(hPtr); if (pkgPtr->version != NULL) { ckfree(pkgPtr->version); @@ -1006,7 +1691,7 @@ TclFreePackageInfo(iPtr) /* *---------------------------------------------------------------------- * - * CheckVersion -- + * CheckVersion / CheckVersionAndConvert -- * * This procedure checks to see whether a version number has * valid syntax. @@ -1023,30 +1708,103 @@ TclFreePackageInfo(iPtr) */ static int +#ifndef TCL_TIP268 CheckVersion(interp, string) Tcl_Interp *interp; /* Used for error reporting. */ CONST char *string; /* Supposedly a version number, which is * groups of decimal digits separated * by dots. */ +#else +CheckVersionAndConvert(interp, string, internal, stable) + Tcl_Interp *interp; /* Used for error reporting. */ + CONST char *string; /* Supposedly a version number, which is + * groups of decimal digits separated by + * dots. */ + char** internal; /* Internal normalized representation */ + int* stable; /* Flag: Version is (un)stable. */ +#endif { CONST char *p = string; char prevChar; - +#ifdef TCL_TIP268 + int hasunstable = 0; + /* 4* assuming that each char is a separator (a,b become ' -x '). + * 4+ to have spce for an additional -2 at the end + */ + char* ibuf = Tcl_Alloc (4+4*strlen(string)); + char* ip = ibuf; + + /* Basic rules + * (1) First character has to be a digit. + * (2) All other characters have to be a digit or '.' + * (3) Two '.'s may not follow each other. + + * TIP 268, Modified rules + * (1) s.a. + * (2) All other characters have to be a digit, 'a', 'b', or '.' + * (3) s.a. + * (4) Only one of 'a' or 'b' may occur. + * (5) Neither 'a', nor 'b' may occur before or after a '.' + */ + +#endif if (!isdigit(UCHAR(*p))) { /* INTL: digit */ goto error; } +#ifdef TCL_TIP268 + *ip++ = *p; +#endif for (prevChar = *p, p++; *p != 0; p++) { +#ifndef TCL_TIP268 if (!isdigit(UCHAR(*p)) && ((*p != '.') || (prevChar == '.'))) { /* INTL: digit */ +#else + if ( + (!isdigit(UCHAR(*p))) && + (((*p != '.') && (*p != 'a') && (*p != 'b')) || + ((hasunstable && ((*p == 'a') || (*p == 'b'))) || + (((prevChar == 'a') || (prevChar == 'b') || (prevChar == '.')) && (*p == '.')) || + (((*p == 'a') || (*p == 'b') || (*p == '.')) && (prevChar == '.')))) + ) { + /* INTL: digit */ +#endif goto error; } +#ifdef TCL_TIP268 + if ((*p == 'a') || (*p == 'b')) { hasunstable = 1 ; } + + /* Translation to the internal rep. Regular version chars are copied + * as is. The separators are translated to numerics. The new separator + * for all parts is space. */ + + if (*p == '.') { *ip++ = ' '; *ip++ = '0'; *ip++ = ' '; } + else if (*p == 'a') { *ip++ = ' '; *ip++ = '-'; *ip++ = '2'; *ip++ = ' '; } + else if (*p == 'b') { *ip++ = ' '; *ip++ = '-'; *ip++ = '1'; *ip++ = ' '; } + else { *ip++ = *p; } +#endif prevChar = *p; } +#ifndef TCL_TIP268 if (prevChar != '.') { +#else + if ((prevChar != '.') && (prevChar != 'a') && (prevChar != 'b')) { + *ip = '\0'; + if (internal != NULL) { + *internal = ibuf; + } else { + Tcl_Free (ibuf); + } + if (stable != NULL) { + *stable = !hasunstable; + } +#endif return TCL_OK; } - error: + error: +#ifdef TCL_TIP268 + Tcl_Free (ibuf); +#endif Tcl_AppendResult(interp, "expected version number but got \"", string, "\"", (char *) NULL); return TCL_ERROR; @@ -1055,9 +1813,9 @@ CheckVersion(interp, string) /* *---------------------------------------------------------------------- * - * ComparePkgVersions -- + * ComparePkgVersions / CompareVersions -- * - * This procedure compares two version numbers. + * This procedure compares two version numbers. (268: in internal rep). * * Results: * The return value is -1 if v1 is less than v2, 0 if the two @@ -1073,6 +1831,7 @@ CheckVersion(interp, string) */ static int +#ifndef TCL_TIP268 ComparePkgVersions(v1, v2, satPtr) CONST char *v1; CONST char *v2; /* Versions strings, of form 2.1.3 (any @@ -1082,14 +1841,34 @@ ComparePkgVersions(v1, v2, satPtr) * v1 "satisfies" v2: v1 is greater than * or equal to v2 and both version numbers * have the same major number. */ +#else +CompareVersions(v1, v2, isMajorPtr) + CONST char *v1; /* Versions strings, of form 2.1.3 (any number */ + CONST char *v2; /* of version numbers). */ + int *isMajorPtr; /* If non-null, the word pointed to is filled + * in with a 0/1 value. 1 means that the difference + * occured in the first element. */ +#endif { int thisIsMajor, n1, n2; +#ifdef TCL_TIP268 + int res, flip; +#endif /* - * Each iteration of the following loop processes one number from - * each string, terminated by a ".". If those numbers don't match - * then the comparison is over; otherwise, we loop back for the - * next number. + * Each iteration of the following loop processes one number from each + * string, terminated by a " " (space). If those numbers don't match then the + * comparison is over; otherwise, we loop back for the next number. + * + * TIP 268. + * This is identical the function 'ComparePkgVersion', but using the new + * space separator as used by the internal rep of version numbers. The + * special separators 'a' and 'b' have already been dealt with in + * 'CheckVersionAndConvert', they were translated into numbers as + * well. This keeps the comparison sane. Otherwise we would have to + * compare numerics, the separators, and also deal with the special case + * of end-of-string compared to separators. The semi-list rep we get here + * is much easier to handle, as it is still regular. */ thisIsMajor = 1; @@ -1099,18 +1878,34 @@ ComparePkgVersions(v1, v2, satPtr) */ n1 = n2 = 0; +#ifndef TCL_TIP268 while ((*v1 != 0) && (*v1 != '.')) { +#else + flip = 0; + while ((*v1 != 0) && (*v1 != ' ')) { + if (*v1 == '-') {flip = 1 ; v1++ ; continue;} +#endif n1 = 10*n1 + (*v1 - '0'); v1++; } +#ifndef TCL_TIP268 while ((*v2 != 0) && (*v2 != '.')) { +#else + if (flip) n1 = -n1; + flip = 0; + while ((*v2 != 0) && (*v2 != ' ')) { + if (*v2 == '-') {flip = 1; v2++ ; continue;} +#endif n2 = 10*n2 + (*v2 - '0'); v2++; } +#ifdef TCL_TIP268 + if (flip) n2 = -n2; +#endif /* - * Compare and go on to the next version number if the - * current numbers match. + * Compare and go on to the next version number if the current numbers + * match. */ if (n1 != n2) { @@ -1126,14 +1921,421 @@ ComparePkgVersions(v1, v2, satPtr) } thisIsMajor = 0; } +#ifndef TCL_TIP268 if (satPtr != NULL) { *satPtr = (n1 == n2) || ((n1 > n2) && !thisIsMajor); } +#endif if (n1 > n2) { +#ifndef TCL_TIP268 return 1; +#else + res = 1; +#endif } else if (n1 == n2) { +#ifndef TCL_TIP268 return 0; +#else + res = 0; +#endif } else { +#ifndef TCL_TIP268 return -1; +#else + res = -1; } + + if (isMajorPtr != NULL) { + *isMajorPtr = thisIsMajor; + } + + return res; } + +/* + *---------------------------------------------------------------------- + * + * CheckAllRequirements -- + * + * This function checks to see whether all requirements in a set + * have valid syntax. + * + * Results: + * TCL_OK is returned if all requirements are valid. + * Otherwise TCL_ERROR is returned and an error message + * is left in the interp's result. + * + * Side effects: + * May modify the interpreter result. + * + *---------------------------------------------------------------------- + */ + +static int +CheckAllRequirements(interp, reqc, reqv) + Tcl_Interp* interp; + int reqc; /* Requirements to check. */ + Tcl_Obj *CONST reqv[]; +{ + int i; + for (i = 0; i < reqc; i++) { + if ((CheckRequirement(interp, Tcl_GetString(reqv[i])) != TCL_OK)) { + return TCL_ERROR; + } + } + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * + * CheckRequirement -- + * + * This function checks to see whether a requirement has valid syntax. + * + * Results: + * If string is a properly formed requirement then TCL_OK is returned. + * Otherwise TCL_ERROR is returned and an error message is left in the + * interp's result. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +CheckRequirement(interp, string) + Tcl_Interp *interp; /* Used for error reporting. */ + CONST char *string; /* Supposedly a requirement. */ +{ + /* Syntax of requirement = version + * = version-version + * = version- + */ + + char* dash = NULL; + char* buf; + + dash = strchr (string, '-'); + if (dash == NULL) { + /* no dash found, has to be a simple version */ + return CheckVersionAndConvert (interp, string, NULL, NULL); + } + if (strchr (dash+1, '-') != NULL) { + /* More dashes found after the first. This is wrong. */ + Tcl_AppendResult(interp, "expected versionMin-versionMax but got \"", string, + "\"", NULL); + return TCL_ERROR; +#endif + } +#ifdef TCL_TIP268 + + /* Exactly one dash is present. Copy the string, split at the location of + * dash and check that both parts are versions. Note that the max part can + * be empty. + */ + + buf = strdup (string); + dash = buf + (dash - string); + *dash = '\0'; /* buf now <=> min part */ + dash ++; /* dash now <=> max part */ + + if ((CheckVersionAndConvert(interp, buf, NULL, NULL) != TCL_OK) || + ((*dash != '\0') && + (CheckVersionAndConvert(interp, dash, NULL, NULL) != TCL_OK))) { + free (buf); + return TCL_ERROR; + } + + free (buf); + return TCL_OK; +#endif +} +#ifdef TCL_TIP268 + +/* + *---------------------------------------------------------------------- + * + * AddRequirementsToResult -- + * + * This function accumulates requirements in the interpreter result. + * + * Results: + * None. + * + * Side effects: + * The interpreter result is extended. + * + *---------------------------------------------------------------------- + */ + +static void +AddRequirementsToResult(interp, reqc, reqv) + Tcl_Interp* interp; + int reqc; /* Requirements constraining the desired version. */ + Tcl_Obj *CONST reqv[]; /* 0 means to use the latest version available. */ +{ + if (reqc > 0) { + int i; + for (i = 0; i < reqc; i++) { + Tcl_AppendResult(interp, " ", TclGetString(reqv[i]), NULL); + } + } +} + +/* + *---------------------------------------------------------------------- + * + * AddRequirementsToDString -- + * + * This function accumulates requirements in a DString. + * + * Results: + * None. + * + * Side effects: + * The DString argument is extended. + * + *---------------------------------------------------------------------- + */ + +static void +AddRequirementsToDString(dstring, reqc, reqv) + Tcl_DString* dstring; + int reqc; /* Requirements constraining the desired version. */ + Tcl_Obj *CONST reqv[]; /* 0 means to use the latest version available. */ +{ + if (reqc > 0) { + int i; + for (i = 0; i < reqc; i++) { + Tcl_DStringAppend(dstring, " ", 1); + Tcl_DStringAppend(dstring, TclGetString(reqv[i]), -1); + } + } +} + +/* + *---------------------------------------------------------------------- + * + * AllRequirementSatisfied -- + * + * This function checks to see whether a version satisfies at + * least one of a set of requirements. + * + * Results: + * If the requirements are satisfied 1 is returned. + * Otherwise 0 is returned. The function assumes + * that all pieces have valid syntax. And is allowed + * to make that assumption. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +AllRequirementsSatisfied(availVersionI, reqc, reqv) + CONST char* availVersionI; /* Candidate version to check against the requirements */ + int reqc; /* Requirements constraining the desired version. */ + Tcl_Obj *CONST reqv[]; /* 0 means to use the latest version available. */ +{ + int i, satisfies; + + for (satisfies = i = 0; i < reqc; i++) { + satisfies = RequirementSatisfied(availVersionI, Tcl_GetString(reqv[i])); + if (satisfies) break; + } + return satisfies; +} + +/* + *---------------------------------------------------------------------- + * + * RequirementSatisfied -- + * + * This function checks to see whether a version satisfies a requirement. + * + * Results: + * If the requirement is satisfied 1 is returned. + * Otherwise 0 is returned. The function assumes + * that all pieces have valid syntax. And is allowed + * to make that assumption. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +RequirementSatisfied(havei, req) + CONST char *havei; /* Version string, of candidate package we have */ + CONST char *req; /* Requirement string the candidate has to satisfy */ +{ + /* The have candidate is already in internal rep. */ + + int satisfied, res; + char* dash = NULL; + char* buf, *min, *max; + + dash = strchr (req, '-'); + if (dash == NULL) { + /* No dash found, is a simple version, fallback to regular check. + * The 'CheckVersionAndConvert' cannot fail. We pad the requirement with + * 'a0', i.e '-2' before doing the comparison to properly accept + * unstables as well. + */ + + char* reqi = NULL; + int thisIsMajor; + + CheckVersionAndConvert (NULL, req, &reqi, NULL); + strcat (reqi, " -2"); + res = CompareVersions(havei, reqi, &thisIsMajor); + satisfied = (res == 0) || ((res == 1) && !thisIsMajor); + Tcl_Free (reqi); + return satisfied; + } + + /* Exactly one dash is present (Assumption of valid syntax). Copy the req, + * split at the location of dash and check that both parts are + * versions. Note that the max part can be empty. + */ + + buf = strdup (req); + dash = buf + (dash - req); + *dash = '\0'; /* buf now <=> min part */ + dash ++; /* dash now <=> max part */ + + if (*dash == '\0') { + /* We have a min, but no max. For the comparison we generate the + * internal rep, padded with 'a0' i.e. '-2'. + */ + + /* No max part, unbound */ + + CheckVersionAndConvert (NULL, buf, &min, NULL); + strcat (min, " -2"); + satisfied = (CompareVersions(havei, min, NULL) >= 0); + Tcl_Free (min); + free (buf); + return satisfied; + } + + /* We have both min and max, and generate their internal reps. + * When identical we compare as is, otherwise we pad with 'a0' + * to ove the range a bit. + */ + + CheckVersionAndConvert (NULL, buf, &min, NULL); + CheckVersionAndConvert (NULL, dash, &max, NULL); + + if (CompareVersions(min, max, NULL) == 0) { + satisfied = (CompareVersions(min, havei, NULL) == 0); + } else { + strcat (min, " -2"); + strcat (max, " -2"); + satisfied = ((CompareVersions(min, havei, NULL) <= 0) && + (CompareVersions(havei, max, NULL) < 0)); + } + + Tcl_Free (min); + Tcl_Free (max); + free (buf); + return satisfied; +} + +/* + *---------------------------------------------------------------------- + * + * ExactRequirement -- + * + * This function is the core for the translation of -exact requests. + * It translates the request of the version into a range of versions. + * The translation was chosen for backwards compatibility. + * + * Results: + * A Tcl_Obj containing the version range as string. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static Tcl_Obj* +ExactRequirement(version) + CONST char* version; +{ + /* A -exact request for a version X.y is translated into the range + * X.y-X.(y+1). For example -exact 8.4 means the range "8.4-8.5". + * + * This translation was chosen to prevent packages which currently use a + * 'package require -exact tclversion' from being affected by the core now + * registering itself as 8.4.x (patchlevel) instead of 8.4 + * (version). Examples are tbcload, compiler, and ITcl. + * + * Translating -exact 8.4 to the range "8.4-8.4" instead would require us + * and everyone else to rebuild these packages to require -exact 8.4.14, + * or whatever the exact current patchlevel is. A backward compatibility + * issue with effects similar to the bugfix made in 8.5 now requiring + * ifneeded and provided versions to match. Instead we have chosen to + * interpret exactness to not be exactly equal, but to be exact only + * within the specified level, and allowing variation in the deeper + * level. More examples: + * + * -exact 8 => "8-9" + * -exact 8.4 => "8.4-8.5" + * -exact 8.4.14 => "8.4.14-8.4.15" + * -exact 8.0a2 => "8.0a2-8.0a3" + */ + + char* iv; + int lc, i; + CONST char** lv; + char buf [30]; + Tcl_Obj* o = Tcl_NewStringObj (version,-1); + Tcl_AppendStringsToObj (o, "-", NULL); + + /* Assuming valid syntax here */ + CheckVersionAndConvert (NULL, version, &iv, NULL); + + /* Split the list into components */ + Tcl_SplitList (NULL, iv, &lc, &lv); + + /* Iterate over the components and make them parts of the result. Except + * for the last, which is handled separately, to allow the + * incrementation. + */ + + for (i=0; i < (lc-1); i++) { + /* Regular component */ + Tcl_AppendStringsToObj (o, lv[i], NULL); + /* Separator component */ + i ++; + if (0 == strcmp ("-1", lv[i])) { + Tcl_AppendStringsToObj (o, "b", NULL); + } else if (0 == strcmp ("-2", lv[i])) { + Tcl_AppendStringsToObj (o, "a", NULL); + } else { + Tcl_AppendStringsToObj (o, ".", NULL); + } + } + /* Regular component, last */ + sprintf (buf, "%d", atoi (lv [lc-1]) + 1); + Tcl_AppendStringsToObj (o, buf, NULL); + + ckfree ((char*) lv); + return o; +} + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ +#endif diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index b61bf2c..87ce53f 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.9 2005/01/27 22:53:34 andreas_kupries Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.79.2.10 2006/09/22 01:26:23 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1014,6 +1014,25 @@ TclStubs tclStubs = { NULL, /* 552 */ NULL, /* 553 */ Tcl_ChannelThreadActionProc, /* 554 */ + NULL, /* 555 */ + NULL, /* 556 */ + NULL, /* 557 */ + NULL, /* 558 */ + NULL, /* 559 */ + NULL, /* 560 */ + NULL, /* 561 */ + NULL, /* 562 */ + NULL, /* 563 */ + NULL, /* 564 */ + NULL, /* 565 */ + NULL, /* 566 */ + NULL, /* 567 */ + NULL, /* 568 */ + NULL, /* 569 */ + NULL, /* 570 */ + NULL, /* 571 */ + NULL, /* 572 */ + Tcl_PkgRequireProc, /* 573 */ }; /* !END!: Do not edit above this line. */ diff --git a/generic/tclTest.c b/generic/tclTest.c index 52ab14e..73ef0ab 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.12 2006/03/19 22:47:29 vincentdarley Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.13 2006/09/22 01:26:23 andreas_kupries Exp $ */ #define TCL_TEST @@ -548,7 +548,12 @@ Tcltest_Init(interp) "-appinitprocclosestderr", "-appinitprocsetrcfile", (char *) NULL }; +#ifndef TCL_TIP268 if (Tcl_PkgProvide(interp, "Tcltest", TCL_VERSION) == TCL_ERROR) { +#else + /* TIP #268: Full patchlevel instead of just major.minor */ + if (Tcl_PkgProvide(interp, "Tcltest", TCL_PATCH_LEVEL) == TCL_ERROR) { +#endif return TCL_ERROR; } diff --git a/library/package.tcl b/library/package.tcl index fa6b01c..04145dd 100644 --- a/library/package.tcl +++ b/library/package.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl which can be loaded on demand # for package management. # -# RCS: @(#) $Id: package.tcl,v 1.23.2.3 2005/07/22 21:59:41 dgp Exp $ +# RCS: @(#) $Id: package.tcl,v 1.23.2.4 2006/09/22 01:26:24 andreas_kupries Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -471,7 +471,12 @@ proc tclPkgSetup {dir pkg version files} { # version - Version of desired package. Not used. # exact - Either "-exact" or omitted. Not used. -proc tclPkgUnknown {name version {exact {}}} { + +proc tclPkgUnknown [expr { + [info exists tcl_platform(tip,268)] + ? "name args" + : "name version {exact {}}" + }] { global auto_path env if {![info exists auto_path]} { @@ -564,43 +569,86 @@ proc tclPkgUnknown {name version {exact {}}} { # Arguments: # original - original [package unknown] procedure # name - Name of desired package. Not used. +#ifndef TCL_TIP268 # version - Version of desired package. Not used. # exact - Either "-exact" or omitted. Not used. +#else +# args - List of requirements. Not used. +#endif -proc tcl::MacOSXPkgUnknown {original name version {exact {}}} { - - # First do the cross-platform default search - uplevel 1 $original [list $name $version $exact] +if {[info exists tcl_platform(tip,268)]} { + proc tcl::MacOSXPkgUnknown {original name args} { + # First do the cross-platform default search + uplevel 1 $original [linsert $args 0 $name] - # Now do MacOSX specific searching - global auto_path + # Now do MacOSX specific searching + global auto_path - if {![info exists auto_path]} { - return - } - # Cache the auto_path, because it may change while we run through - # the first set of pkgIndex.tcl files - set old_path [set use_path $auto_path] - while {[llength $use_path]} { - set dir [lindex $use_path end] - # get the pkgIndex files out of the subdirectories - foreach file [glob -directory $dir -join -nocomplain \ - * Resources Scripts pkgIndex.tcl] { - set dir [file dirname $file] - if {[file readable $file] && ![info exists procdDirs($dir)]} { - if {[catch {source $file} msg]} { - tclLog "error reading package index file $file: $msg" - } else { - set procdDirs($dir) 1 + if {![info exists auto_path]} { + return + } + # Cache the auto_path, because it may change while we run through + # the first set of pkgIndex.tcl files + set old_path [set use_path $auto_path] + while {[llength $use_path]} { + set dir [lindex $use_path end] + # get the pkgIndex files out of the subdirectories + foreach file [glob -directory $dir -join -nocomplain \ + * Resources Scripts pkgIndex.tcl] { + set dir [file dirname $file] + if {[file readable $file] && ![info exists procdDirs($dir)]} { + if {[catch {source $file} msg]} { + tclLog "error reading package index file $file: $msg" + } else { + set procdDirs($dir) 1 + } } } + set use_path [lrange $use_path 0 end-1] + if {$old_path ne $auto_path} { + foreach dir $auto_path { + lappend use_path $dir + } + set old_path $auto_path + } } - set use_path [lrange $use_path 0 end-1] - if {$old_path ne $auto_path} { - foreach dir $auto_path { - lappend use_path $dir + } +} else { + proc tcl::MacOSXPkgUnknown {original name version {exact {}}} { + + # First do the cross-platform default search + uplevel 1 $original [list $name $version $exact] + + # Now do MacOSX specific searching + global auto_path + + if {![info exists auto_path]} { + return + } + # Cache the auto_path, because it may change while we run through + # the first set of pkgIndex.tcl files + set old_path [set use_path $auto_path] + while {[llength $use_path]} { + set dir [lindex $use_path end] + # get the pkgIndex files out of the subdirectories + foreach file [glob -directory $dir -join -nocomplain \ + * Resources Scripts pkgIndex.tcl] { + set dir [file dirname $file] + if {[file readable $file] && ![info exists procdDirs($dir)]} { + if {[catch {source $file} msg]} { + tclLog "error reading package index file $file: $msg" + } else { + set procdDirs($dir) 1 + } + } + } + set use_path [lrange $use_path 0 end-1] + if {$old_path ne $auto_path} { + foreach dir $auto_path { + lappend use_path $dir + } + set old_path $auto_path } - set old_path $auto_path } } } diff --git a/tests/pkg.test b/tests/pkg.test index 83488a1..baea4d5 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.4 2006/04/05 01:42:16 dgp Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.5 2006/09/22 01:26:24 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -31,6 +31,9 @@ package unknown {} set oldPath $auto_path set auto_path "" +testConstraint tip268 [info exists tcl_platform(tip,268)] +testConstraint !tip268 [expr {![info exists tcl_platform(tip,268)]}] + test pkg-1.1 {Tcl_PkgProvide procedure} { package forget t package provide t 2.3 @@ -56,6 +59,23 @@ test pkg-1.5 {Tcl_PkgProvide procedure} { package provide t 2.3 } {} +test pkg-1.6 {Tcl_PkgProvide procedure} tip268 { + package forget t + package provide t 2.3a1 +} {} + +set n 0 +foreach v { + 2.3k1 2a3a2 2ab3 2.a4 2.b4 2b.4 2a.4 2ba4 2a4b1 + 2b4a1 2b3b2 +} { + test pkg-1.7.$n {Tcl_PkgProvide procedure} tip268 { + package forget t + list [catch {package provide t $v} msg] $msg + } [list 1 "expected version number but got \"$v\""] + incr n +} + test pkg-2.1 {Tcl_PkgRequire procedure, picking best version} { package forget t foreach i {1.4 3.4 2.3 2.4 2.2} { @@ -117,14 +137,24 @@ test pkg-2.7 {Tcl_PkgRequire procedure, can't find suitable version} { } list [catch {package require t 4.1} msg] $msg } {1 {can't find package t 4.1}} -test pkg-2.8 {Tcl_PkgRequire procedure, can't find suitable version} { +test pkg-2.8 {Tcl_PkgRequire procedure, can't find suitable version} !tip268 { package forget t package unknown {} foreach i {1.4 3.4 2.3 2.4 2.2} { package ifneeded t $i "set x $i" } list [catch {package require -exact t 1.3} msg] $msg + } {1 {can't find package t 1.3}} +test pkg-2.8-268 {Tcl_PkgRequire procedure, can't find suitable version} tip268 { + package forget t + package unknown {} + foreach i {1.4 3.4 2.3 2.4 2.2} { + package ifneeded t $i "set x $i" + } + list [catch {package require -exact t 1.3} msg] $msg + +} {1 {can't find package t 1.3-1.4}} test pkg-2.9 {Tcl_PkgRequire procedure, can't find suitable version} { package forget t package unknown {} @@ -153,7 +183,7 @@ test pkg-2.12 {Tcl_PkgRequire procedure, self-deleting script} { package require t 1.2 set x } {1.2} -test pkg-2.13 {Tcl_PkgRequire procedure, "package unknown" support} { +test pkg-2.13-!268 {Tcl_PkgRequire procedure, "package unknown" support} !tip268 { proc pkgUnknown args { global x set x $args @@ -169,6 +199,26 @@ test pkg-2.13 {Tcl_PkgRequire procedure, "package unknown" support} { package unknown {} set x } {t 1.5 -exact} + +test pkg-2.13-268 {Tcl_PkgRequire procedure, "package unknown" support} tip268 { + proc pkgUnknown args { + # args = name requirement + # requirement = v-v (for exact version) + global x + set x $args + package provide [lindex $args 0] [lindex [split [lindex $args 1] -] 0] + } + package forget t + foreach i {1.4 3.4 2.3 2.4 2.2} { + package ifneeded t $i "set x $i" + } + package unknown pkgUnknown + set x xxx + package require -exact t 1.5 + package unknown {} + set x +} {t 1.5-1.6} + test pkg-2.14 {Tcl_PkgRequire procedure, "package unknown" support} { proc pkgUnknown args { package ifneeded t 1.2 "set x loaded; package provide t 1.2" @@ -180,7 +230,7 @@ test pkg-2.14 {Tcl_PkgRequire procedure, "package unknown" support} { package unknown {} set result } {1.2 loaded} -test pkg-2.15 {Tcl_PkgRequire procedure, "package unknown" support} { +test pkg-2.15 {Tcl_PkgRequire procedure, "package unknown" support} !tip268 { proc pkgUnknown args { global x set x $args @@ -193,7 +243,20 @@ test pkg-2.15 {Tcl_PkgRequire procedure, "package unknown" support} { package unknown {} set x } {{a b} {}} -test pkg-2.16 {Tcl_PkgRequire procedure, "package unknown" error} { +test pkg-2.15-268 {Tcl_PkgRequire procedure, "package unknown" support} tip268 { + proc pkgUnknown args { + global x + set x $args + package provide [lindex $args 0] 2.0 + } + package forget {a b} + package unknown pkgUnknown + set x xxx + package require {a b} + package unknown {} + set x +} {{a b}} +test pkg-2.16 {Tcl_PkgRequire procedure, "package unknown" error} !tip268 { proc pkgUnknown args { error "testing package unknown" } @@ -211,7 +274,25 @@ test pkg-2.16 {Tcl_PkgRequire procedure, "package unknown" error} { ("package unknown" script) invoked from within "package require t"}} -test pkg-2.17 {Tcl_PkgRequire procedure, "package unknown" doesn't load package} { +test pkg-2.16-268 {Tcl_PkgRequire procedure, "package unknown" error} tip268 { + proc pkgUnknown args { + error "testing package unknown" + } + package forget t + package unknown pkgUnknown + set result [list [catch {package require t} msg] $msg $errorInfo] + package unknown {} + set result +} {1 {testing package unknown} {testing package unknown + while executing +"error "testing package unknown"" + (procedure "pkgUnknown" line 2) + invoked from within +"pkgUnknown t" + ("package unknown" script) + invoked from within +"package require t"}} +test pkg-2.17 {Tcl_PkgRequire procedure, "package unknown" doesn't load package} !tip268 { proc pkgUnknown args { global x set x $args @@ -226,6 +307,21 @@ test pkg-2.17 {Tcl_PkgRequire procedure, "package unknown" doesn't load package} package unknown {} set result } {1 {can't find package t 1.5} {t 1.5 -exact}} +test pkg-2.17-268 {Tcl_PkgRequire procedure, "package unknown" doesn't load package} tip268 { + proc pkgUnknown args { + global x + set x $args + } + package forget t + foreach i {1.4 3.4 2.3 2.4 2.2} { + package ifneeded t $i "set x $i" + } + package unknown pkgUnknown + set x xxx + set result [list [catch {package require -exact t 1.5} msg] $msg $x] + package unknown {} + set result +} {1 {can't find package t 1.5-1.6} {t 1.5-1.6}} test pkg-2.18 {Tcl_PkgRequire procedure, version checks} { package forget t package provide t 2.3 @@ -256,11 +352,16 @@ test pkg-2.23 {Tcl_PkgRequire procedure, version checks} { package provide t 2.3 package require -exact t 2.3 } {2.3} -test pkg-2.24 {Tcl_PkgRequire procedure, version checks} { +test pkg-2.24 {Tcl_PkgRequire procedure, version checks} !tip268 { package forget t package provide t 2.3 list [catch {package require -exact t 2.2} msg] $msg } {1 {version conflict for package "t": have 2.3, need 2.2}} +test pkg-2.24-268 {Tcl_PkgRequire procedure, version checks} tip268 { + package forget t + package provide t 2.3 + list [catch {package require -exact t 2.2} msg] $msg +} {1 {version conflict for package "t": have 2.3, need 2.2-2.3}} test pkg-2.25 {Tcl_PkgRequire procedure, error in ifneeded script} -body { package forget t package ifneeded t 2.1 {package provide t 2.1; error "ifneeded test" EI} @@ -466,6 +567,40 @@ test pkg-2.43 {Tcl_PkgRequire: consistent return values (1162286)} -setup { package unknown $saveUnknown } -returnCodes error -match glob -result {bad return code:*} + + +test pkg-2.50 {Tcl_PkgRequire procedure, picking best stable version} tip268 { + package forget t + foreach i {1.4 3.4 4.0a1 2.3 2.4 2.2} { + package ifneeded t $i "set x $i; package provide t $i" + } + set x xxx + package require t + set x +} {3.4} + +test pkg-2.51 {Tcl_PkgRequire procedure, picking best stable version} tip268 { + package forget t + foreach i {1.2b1 1.2 1.3a2 1.3} { + package ifneeded t $i "set x $i; package provide t $i" + } + set x xxx + package require t + set x +} {1.3} + +test pkg-2.52 {Tcl_PkgRequire procedure, picking best stable version} tip268 { + package forget t + foreach i {1.2b1 1.2 1.3 1.3a2} { + package ifneeded t $i "set x $i; package provide t $i" + } + set x xxx + package require t + set x +} {1.3} + + + test pkg-3.1 {Tcl_PackageCmd procedure} { list [catch {package} msg] $msg } {1 {wrong # args: should be "package option ?arg arg ...?"}} @@ -589,16 +724,24 @@ test pkg-3.21 {Tcl_PackageCmd procedure, "provide" option} { package forget t list [catch {package provide t a.b} msg] $msg } {1 {expected version number but got "a.b"}} -test pkg-3.22 {Tcl_PackageCmd procedure, "require" option} { +test pkg-3.22 {Tcl_PackageCmd procedure, "require" option} !tip268 { list [catch {package require} msg] $msg } {1 {wrong # args: should be "package require ?-exact? package ?version?"}} -test pkg-3.23 {Tcl_PackageCmd procedure, "require" option} { +test pkg-3.22-268 {Tcl_PackageCmd procedure, "require" option} tip268 { + list [catch {package require} msg] $msg +} {1 {wrong # args: should be "package require ?-exact? package ?requirement...?"}} +test pkg-3.23 {Tcl_PackageCmd procedure, "require" option} !tip268 { list [catch {package require a b c} msg] $msg } {1 {wrong # args: should be "package require ?-exact? package ?version?"}} -test pkg-3.24 {Tcl_PackageCmd procedure, "require" option} { +test pkg-3.24 {Tcl_PackageCmd procedure, "require" option} !tip268 { list [catch {package require -exact a b c} msg] $msg } {1 {wrong # args: should be "package require ?-exact? package ?version?"}} -test pkg-3.25 {Tcl_PackageCmd procedure, "require" option} { +test pkg-3.24-268 {Tcl_PackageCmd procedure, "require" option} tip268 { + list [catch {package require -exact a b c} msg] $msg + # Exact syntax: -exact name version + # name ?requirement...? +} {1 {wrong # args: should be "package require ?-exact? package ?requirement...?"}} +test pkg-3.25 {Tcl_PackageCmd procedure, "require" option} !tip268 { list [catch {package require -bs a b} msg] $msg } {1 {wrong # args: should be "package require ?-exact? package ?version?"}} test pkg-3.26 {Tcl_PackageCmd procedure, "require" option} { @@ -607,12 +750,18 @@ test pkg-3.26 {Tcl_PackageCmd procedure, "require" option} { test pkg-3.27 {Tcl_PackageCmd procedure, "require" option} { list [catch {package require -exact x a.b} msg] $msg } {1 {expected version number but got "a.b"}} -test pkg-3.28 {Tcl_PackageCmd procedure, "require" option} { +test pkg-3.28 {Tcl_PackageCmd procedure, "require" option} !tip268 { list [catch {package require -exact x} msg] $msg } {1 {wrong # args: should be "package require ?-exact? package ?version?"}} -test pkg-3.29 {Tcl_PackageCmd procedure, "require" option} { +test pkg-3.28-268 {Tcl_PackageCmd procedure, "require" option} tip268 { + list [catch {package require -exact x} msg] $msg +} {1 {wrong # args: should be "package require ?-exact? package ?requirement...?"}} +test pkg-3.29 {Tcl_PackageCmd procedure, "require" option} !tip268 { list [catch {package require -exact} msg] $msg } {1 {wrong # args: should be "package require ?-exact? package ?version?"}} +test pkg-3.29-268 {Tcl_PackageCmd procedure, "require" option} tip268 { + list [catch {package require -exact} msg] $msg +} {1 {wrong # args: should be "package require ?-exact? package ?requirement...?"}} test pkg-3.30 {Tcl_PackageCmd procedure, "require" option} { package forget t package provide t 2.3 @@ -678,10 +827,13 @@ test pkg-3.46 {Tcl_PackageCmd procedure, "versions" option} { package ifneeded t 2.4 y package versions t } {2.3 2.4} -test pkg-3.47 {Tcl_PackageCmd procedure, "vsatisfies" option} { +test pkg-3.47 {Tcl_PackageCmd procedure, "vsatisfies" option} !tip268 { list [catch {package vsatisfies a} msg] $msg } {1 {wrong # args: should be "package vsatisfies version1 version2"}} -test pkg-3.48 {Tcl_PackageCmd procedure, "vsatisfies" option} { +test pkg-3.47-268 {Tcl_PackageCmd procedure, "vsatisfies" option} tip268 { + list [catch {package vsatisfies a} msg] $msg +} {1 {wrong # args: should be "package vsatisfies version requirement requirement..."}} +test pkg-3.48 {Tcl_PackageCmd procedure, "vsatisfies" option} !tip268 { list [catch {package vsatisfies a b c} msg] $msg } {1 {wrong # args: should be "package vsatisfies version1 version2"}} test pkg-3.49 {Tcl_PackageCmd procedure, "vsatisfies" option} { @@ -696,9 +848,24 @@ test pkg-3.51 {Tcl_PackageCmd procedure, "vsatisfies" option} { test pkg-3.52 {Tcl_PackageCmd procedure, "vsatisfies" option} { package vs 2.3 1.2 } {0} -test pkg-3.53 {Tcl_PackageCmd procedure, "versions" option} { +test pkg-3.53 {Tcl_PackageCmd procedure, "versions" option} !tip268 { list [catch {package foo} msg] $msg } {1 {bad option "foo": must be forget, ifneeded, names, present, provide, require, unknown, vcompare, versions, or vsatisfies}} +test pkg-3.53-268 {Tcl_PackageCmd procedure, "versions" option} tip268 { + list [catch {package foo} msg] $msg +} {1 {bad option "foo": must be forget, ifneeded, names, prefer, present, provide, require, unknown, vcompare, versions, or vsatisfies}} + +test pkg-3.54 {Tcl_PackageCmd procedure, "vsatisfies" option} tip268 { + list [catch {package vsatisfies 2.1 2.1-3.2-4.5} msg] $msg +} {1 {expected versionMin-versionMax but got "2.1-3.2-4.5"}} + +test pkg-3.55 {Tcl_PackageCmd procedure, "vsatisfies" option} tip268 { + list [catch {package vsatisfies 2.1 3.2-x.y} msg] $msg +} {1 {expected version number but got "x.y"}} + +test pkg-3.56 {Tcl_PackageCmd procedure, "vsatisfies" option} tip268 { + list [catch {package vsatisfies 2.1 x.y-3.2} msg] $msg +} {1 {expected version number but got "x.y"}} # No tests for FindPackage; can't think up anything detectable # errors. @@ -845,6 +1012,279 @@ test pkg-7.18 {Tcl_PackageCmd procedure, "present" option} { list [catch {package present -exact} msg] $msg } {1 {wrong # args: should be "package present ?-exact? package ?version?"}} + +set n 0 +foreach {r p vs vc} { + 8.5a0 8.5a5 1 -1 + 8.5a0 8.5b1 1 -1 + 8.5a0 8.5.1 1 -1 + 8.5a0 8.6a0 1 -1 + 8.5a0 8.6b0 1 -1 + 8.5a0 8.6.0 1 -1 + 8.5a6 8.5a5 0 1 + 8.5a6 8.5b1 1 -1 + 8.5a6 8.5.1 1 -1 + 8.5a6 8.6a0 1 -1 + 8.5a6 8.6b0 1 -1 + 8.5a6 8.6.0 1 -1 + 8.5b0 8.5a5 0 1 + 8.5b0 8.5b1 1 -1 + 8.5b0 8.5.1 1 -1 + 8.5b0 8.6a0 1 -1 + 8.5b0 8.6b0 1 -1 + 8.5b0 8.6.0 1 -1 + 8.5b2 8.5a5 0 1 + 8.5b2 8.5b1 0 1 + 8.5b2 8.5.1 1 -1 + 8.5b2 8.6a0 1 -1 + 8.5b2 8.6b0 1 -1 + 8.5b2 8.6.0 1 -1 + 8.5 8.5a5 1 1 + 8.5 8.5b1 1 1 + 8.5 8.5.1 1 -1 + 8.5 8.6a0 1 -1 + 8.5 8.6b0 1 -1 + 8.5 8.6.0 1 -1 + 8.5.0 8.5a5 0 1 + 8.5.0 8.5b1 0 1 + 8.5.0 8.5.1 1 -1 + 8.5.0 8.6a0 1 -1 + 8.5.0 8.6b0 1 -1 + 8.5.0 8.6.0 1 -1 +} { + test package-vsatisfies-1.$n {package vsatisfies} tip268 { + package vsatisfies $p $r + } $vs + + test package-vcompare-1.$n {package vcompare} tip268 { + package vcompare $r $p + } $vc + + incr n +} + +set n 0 +foreach {required provided satisfied} { + 8.5a0- 8.5a5 1 + 8.5a0- 8.5b1 1 + 8.5a0- 8.5.1 1 + 8.5a0- 8.6a0 1 + 8.5a0- 8.6b0 1 + 8.5a0- 8.6.0 1 + 8.5a6- 8.5a5 0 + 8.5a6- 8.5b1 1 + 8.5a6- 8.5.1 1 + 8.5a6- 8.6a0 1 + 8.5a6- 8.6b0 1 + 8.5a6- 8.6.0 1 + 8.5b0- 8.5a5 0 + 8.5b0- 8.5b1 1 + 8.5b0- 8.5.1 1 + 8.5b0- 8.6a0 1 + 8.5b0- 8.6b0 1 + 8.5b0- 8.6.0 1 + 8.5b2- 8.5a5 0 + 8.5b2- 8.5b1 0 + 8.5b2- 8.5.1 1 + 8.5b2- 8.6a0 1 + 8.5b2- 8.6b0 1 + 8.5b2- 8.6.0 1 + 8.5- 8.5a5 1 + 8.5- 8.5b1 1 + 8.5- 8.5.1 1 + 8.5- 8.6a0 1 + 8.5- 8.6b0 1 + 8.5- 8.6.0 1 + 8.5.0- 8.5a5 0 + 8.5.0- 8.5b1 0 + 8.5.0- 8.5.1 1 + 8.5.0- 8.6a0 1 + 8.5.0- 8.6b0 1 + 8.5.0- 8.6.0 1 + 8.5a0-7 8.5a5 0 + 8.5a0-7 8.5b1 0 + 8.5a0-7 8.5.1 0 + 8.5a0-7 8.6a0 0 + 8.5a0-7 8.6b0 0 + 8.5a0-7 8.6.0 0 + 8.5a6-7 8.5a5 0 + 8.5a6-7 8.5b1 0 + 8.5a6-7 8.5.1 0 + 8.5a6-7 8.6a0 0 + 8.5a6-7 8.6b0 0 + 8.5a6-7 8.6.0 0 + 8.5b0-7 8.5a5 0 + 8.5b0-7 8.5b1 0 + 8.5b0-7 8.5.1 0 + 8.5b0-7 8.6a0 0 + 8.5b0-7 8.6b0 0 + 8.5b0-7 8.6.0 0 + 8.5b2-7 8.5a5 0 + 8.5b2-7 8.5b1 0 + 8.5b2-7 8.5.1 0 + 8.5b2-7 8.6a0 0 + 8.5b2-7 8.6b0 0 + 8.5b2-7 8.6.0 0 + 8.5-7 8.5a5 0 + 8.5-7 8.5b1 0 + 8.5-7 8.5.1 0 + 8.5-7 8.6a0 0 + 8.5-7 8.6b0 0 + 8.5-7 8.6.0 0 + 8.5.0-7 8.5a5 0 + 8.5.0-7 8.5b1 0 + 8.5.0-7 8.5.1 0 + 8.5.0-7 8.6a0 0 + 8.5.0-7 8.6b0 0 + 8.5.0-7 8.6.0 0 + 8.5a0-8.6.1 8.5a5 1 + 8.5a0-8.6.1 8.5b1 1 + 8.5a0-8.6.1 8.5.1 1 + 8.5a0-8.6.1 8.6a0 1 + 8.5a0-8.6.1 8.6b0 1 + 8.5a0-8.6.1 8.6.0 1 + 8.5a6-8.6.1 8.5a5 0 + 8.5a6-8.6.1 8.5b1 1 + 8.5a6-8.6.1 8.5.1 1 + 8.5a6-8.6.1 8.6a0 1 + 8.5a6-8.6.1 8.6b0 1 + 8.5a6-8.6.1 8.6.0 1 + 8.5b0-8.6.1 8.5a5 0 + 8.5b0-8.6.1 8.5b1 1 + 8.5b0-8.6.1 8.5.1 1 + 8.5b0-8.6.1 8.6a0 1 + 8.5b0-8.6.1 8.6b0 1 + 8.5b0-8.6.1 8.6.0 1 + 8.5b2-8.6.1 8.5a5 0 + 8.5b2-8.6.1 8.5b1 0 + 8.5b2-8.6.1 8.5.1 1 + 8.5b2-8.6.1 8.6a0 1 + 8.5b2-8.6.1 8.6b0 1 + 8.5b2-8.6.1 8.6.0 1 + 8.5-8.6.1 8.5a5 1 + 8.5-8.6.1 8.5b1 1 + 8.5-8.6.1 8.5.1 1 + 8.5-8.6.1 8.6a0 1 + 8.5-8.6.1 8.6b0 1 + 8.5-8.6.1 8.6.0 1 + 8.5.0-8.6.1 8.5a5 0 + 8.5.0-8.6.1 8.5b1 0 + 8.5.0-8.6.1 8.5.1 1 + 8.5.0-8.6.1 8.6a0 1 + 8.5.0-8.6.1 8.6b0 1 + 8.5.0-8.6.1 8.6.0 1 + 8.5a0-8.5a0 8.5a0 1 + 8.5a0-8.5a0 8.5b1 0 + 8.5a0-8.5a0 8.4 0 + 8.5b0-8.5b0 8.5a5 0 + 8.5b0-8.5b0 8.5b0 1 + 8.5b0-8.5b0 8.5.1 0 + 8.5-8.5 8.5a5 0 + 8.5-8.5 8.5b1 0 + 8.5-8.5 8.5 1 + 8.5-8.5 8.5.1 0 + 8.5.0-8.5.0 8.5a5 0 + 8.5.0-8.5.0 8.5b1 0 + 8.5.0-8.5.0 8.5.0 1 + 8.5.0-8.5.0 8.5.1 0 + 8.5.0-8.5.0 8.6a0 0 + 8.5.0-8.5.0 8.6b0 0 + 8.5.0-8.5.0 8.6.0 0 + 8.2 9 0 + 8.2- 9 1 + 8.2-8.5 9 0 + 8.2-9.1 9 1 + + 8.5-8.5 8.5b1 0 + 8.5a0-8.5 8.5b1 0 + 8.5a0-8.5.1 8.5b1 1 + + 8.5-8.5 8.5 1 + 8.5.0-8.5.0 8.5 1 + 8.5a0-8.5.0 8.5 0 + +} { + test package-vsatisfies-2.$n "package vsatisfies $provided $required" tip268 { + package vsatisfies $provided $required + } $satisfied + incr n +} + +test package-vsatisfies-3.0 "package vsatisfies multiple" tip268 { + # yes no + package vsatisfies 8.4 8.4 7.3 +} 1 + +test package-vsatisfies-3.1 "package vsatisfies multiple" tip268 { + # no yes + package vsatisfies 8.4 7.3 8.4 +} 1 + +test package-vsatisfies-3.2 "package vsatisfies multiple" tip268 { + # yes yes + package vsatisfies 8.4.2 8.4 8.4.1 +} 1 + +test package-vsatisfies-3.3 "package vsatisfies multiple" tip268 { + # no no + package vsatisfies 8.4 7.3 6.1 +} 0 + + +proc prefer {args} { + set ip [interp create] + lappend res [$ip eval {package prefer}] + foreach mode $args { + lappend res [$ip eval [list package prefer $mode]] + } + interp delete $ip + return $res +} + +test package-prefer-1.0 {default} tip268 { + prefer +} stable + +test package-prefer-1.1 {default} tip268 { + set ::env(TCL_PKG_PREFER_LATEST) stable ; # value not relevant! + set res [prefer] + unset ::env(TCL_PKG_PREFER_LATEST) + set res +} latest + +test package-prefer-2.0 {wrong\#args} tip268 { + catch {package prefer foo bar} msg + set msg +} {wrong # args: should be "package prefer ?latest|stable?"} + +test package-prefer-2.1 {bogus argument} tip268 { + catch {package prefer foo} msg + set msg +} {bad preference "foo": must be latest or stable} + +test package-prefer-3.0 {set, keep} tip268 { + package prefer stable +} stable + +test package-prefer-3.1 {set stable, keep} tip268 { + prefer stable +} {stable stable} + +test package-prefer-3.2 {set latest, change} tip268 { + prefer latest +} {stable latest} + +test package-prefer-3.3 {set latest, keep} tip268 { + prefer latest latest +} {stable latest latest} + +test package-prefer-3.3 {set stable, rejected} tip268 { + prefer latest stable +} {stable latest latest} + +rename prefer {} + + set auto_path $oldPath package unknown $oldPkgUnknown concat diff --git a/tests/platform.test b/tests/platform.test index f9d7aca..01bf787 100644 --- a/tests/platform.test +++ b/tests/platform.test @@ -22,6 +22,7 @@ test platform-1.1 {TclpSetVariables: tcl_platform} { interp create i i eval {catch {unset tcl_platform(debug)}} i eval {catch {unset tcl_platform(threaded)}} + i eval {catch {unset tcl_platform(tip,268)}} set result [i eval {lsort [array names tcl_platform]}] interp delete i set result diff --git a/tests/safe.test b/tests/safe.test index a26cb92..15dfa85 100644 --- a/tests/safe.test +++ b/tests/safe.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: safe.test,v 1.13.2.1 2005/06/22 16:02:42 dgp Exp $ +# RCS: @(#) $Id: safe.test,v 1.13.2.2 2006/09/22 01:26:24 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -187,6 +187,10 @@ test safe-6.3 {test safe interpreters knowledge of the world} { if {$threaded != -1} { set r [lreplace $r $threaded $threaded] } + set tip [lsearch $r "tip,268"] + if {$tip != -1} { + set r [lreplace $r $tip $tip] + } set r } {byteOrder platform wordSize} -- cgit v0.12 From ffcc33c7062c747cb8341a4b2405e8043dd02733 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 22 Sep 2006 14:48:51 +0000 Subject: Fix [Bug 1562528] --- ChangeLog | 6 ++++++ generic/tclThreadTest.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 147636d..889e331 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-09-22 Donal K. Fellows + + * generic/tclThreadTest.c (TclCreateThread): Use NULL instead of 0 as + end-of-strings marker to Tcl_AppendResult; the difference matters on + 64-bit machines. [Bug 1562528] + 2006-09-21 Andreas Kupries * generic/tcl.decls: Implemented TIP #268, conditionally. diff --git a/generic/tclThreadTest.c b/generic/tclThreadTest.c index f551746..15a4d95 100644 --- a/generic/tclThreadTest.c +++ b/generic/tclThreadTest.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadTest.c,v 1.16.2.1 2004/10/26 20:14:29 dgp Exp $ + * RCS: @(#) $Id: tclThreadTest.c,v 1.16.2.2 2006/09/22 14:48:52 dkf Exp $ */ #include "tclInt.h" @@ -421,7 +421,7 @@ TclCreateThread(interp, script, joinable) if (Tcl_CreateThread(&id, NewTestThread, (ClientData) &ctrl, TCL_THREAD_STACK_DEFAULT, joinable) != TCL_OK) { Tcl_MutexUnlock(&threadMutex); - Tcl_AppendResult(interp,"can't create a new thread",0); + Tcl_AppendResult(interp,"can't create a new thread",NULL); ckfree((void*)ctrl.script); return TCL_ERROR; } -- cgit v0.12 From 84710c0562a0091891deddb2f101cd44798db8c2 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 22 Sep 2006 18:31:53 +0000 Subject: * generic/tclPkg.c (Tcl_PkgRequireEx): Changes handling of the return information from 'Tcl_PkgRequireProc'. Keep the interpreter result empty. Backport of fix for problem found while testing #268 under 8.5. More details in the comments. --- ChangeLog | 7 +++++++ generic/tclPkg.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 889e331..3bde052 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-09-22 Andreas Kupries + + * generic/tclPkg.c (Tcl_PkgRequireEx): Changes handling of the + return information from 'Tcl_PkgRequireProc'. Keep the + interpreter result empty. Backport of fix for problem found + while testing #268 under 8.5. More details in the comments. + 2006-09-22 Donal K. Fellows * generic/tclThreadTest.c (TclCreateThread): Use NULL instead of 0 as diff --git a/generic/tclPkg.c b/generic/tclPkg.c index de87a0b..052992a 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9.2.5 2006/09/22 01:26:23 andreas_kupries Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.6 2006/09/22 18:31:54 andreas_kupries Exp $ * * TIP #268. * Heavily rewritten to handle the extend version numbers, and extended @@ -80,6 +80,8 @@ static void AddRequirementsToDString(Tcl_DString* dstring, int reqc, Tcl_Obj *CONST reqv[]); static Package * FindPackage(Tcl_Interp *interp, CONST char *name); static Tcl_Obj* ExactRequirement(CONST char* version); +static void VersionCleanupProc(ClientData clientData, + Tcl_Interp *interp); #endif /* @@ -344,7 +346,32 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) return NULL; } - return Tcl_GetString (Tcl_GetObjResult (interp)); + /* This function returns the version string explictly, and leaves the + * interpreter result empty. However "Tcl_PkgRequireProc" above returned + * the version through the interpreter result. Simply resetting the result + * now potentially deletes the string (obj), and the pointer to its string + * rep we have, as our result, may be dangling due to this. Our solution + * is to remember the object in interp associated data, with a proper + * reference count, and then reset the result. Now pointers will not + * dangle. It will be a leak however if nothing is done. So the next time + * we come through here we delete the object remembered by this call, as + * we can then be sure that there is no pointer to its string around + * anymore. Beyond that we have a deletion function which cleans up the last + * remembered object which was not cleaned up directly, here. + */ + + ov = (Tcl_Obj*) Tcl_GetAssocData (interp, "tcl/Tcl_PkgRequireEx", NULL); + if (ov != NULL) { + Tcl_DecrRefCount (ov); + } + + ov = Tcl_GetObjResult (interp); + Tcl_IncrRefCount (ov); + Tcl_SetAssocData(interp, "tcl/Tcl_PkgRequireEx", VersionCleanupProc, + (ClientData) ov); + Tcl_ResetResult (interp); + + return Tcl_GetString (ov); } int @@ -2332,6 +2359,36 @@ ExactRequirement(version) } /* + *---------------------------------------------------------------------- + * + * VersionCleanupProc -- + * + * This function is called to delete the last remember package version + * string for an interpreter when the interpreter is deleted. It gets + * invoked via the Tcl AssocData mechanism. + * + * Results: + * None. + * + * Side effects: + * Storage for the version object for interp get deleted. + * + *---------------------------------------------------------------------- + */ + +static void +VersionCleanupProc ( + ClientData clientData, /* Pointer to remembered version string object + * for interp. */ + Tcl_Interp *interp) /* Interpreter that is being deleted. */ +{ + Tcl_Obj* ov = (Tcl_Obj*) clientData; + if (ov != NULL) { + Tcl_DecrRefCount (ov); + } +} + +/* * Local Variables: * mode: c * c-basic-offset: 4 -- cgit v0.12 From 68d397d14ec547c033d0f9b5df612e06f638fef1 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 22 Sep 2006 22:31:34 +0000 Subject: * generic/tclInt.h: Moved TIP#268's field 'packagePrefer' to the end of the structure, for better backward compatibility. --- ChangeLog | 5 +++++ generic/tclInt.h | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3bde052..dda014d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-09-22 Andreas Kupries + + * generic/tclInt.h: Moved TIP#268's field 'packagePrefer' to the + end of the structure, for better backward compatibility. + 2006-09-22 Andreas Kupries * generic/tclPkg.c (Tcl_PkgRequireEx): Changes handling of the diff --git a/generic/tclInt.h b/generic/tclInt.h index 4fa0732..b5328ac 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.23 2006/09/22 01:26:23 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.24 2006/09/22 22:31:34 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -1295,15 +1295,6 @@ typedef struct Interp { * require" commands for packages that * aren't described in packageTable. * Malloc'ed, may be NULL. */ -#ifdef TCL_TIP268 - /* - * TIP #268. - * The currently active selection mode, - * i.e the package require preferences. - */ - - int packagePrefer; /* Current package selection mode. */ -#endif /* * Miscellaneous information: @@ -1372,6 +1363,15 @@ typedef struct Interp { int tracesForbiddingInline; /* Count of traces (in the list headed by * tracePtr) that forbid inline bytecode * compilation */ +#ifdef TCL_TIP268 + /* + * TIP #268. + * The currently active selection mode, + * i.e the package require preferences. + */ + + int packagePrefer; /* Current package selection mode. */ +#endif /* * Statistical information about the bytecode compiler and interpreter's * operation. -- cgit v0.12 From dfdd2bf4859375909d0094b1c89280448e7544b5 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sun, 24 Sep 2006 21:15:09 +0000 Subject: * generic/tclParse.c (Tcl_ParseCommand): also return an error if start==NULL and numBytes<0. This is coverity's bug #20 * generic/tclStringObj.c (STRING_SIZE): fix allocation for 0-length strings. This is coverity's bugs #54-5 --- ChangeLog | 8 ++++++++ generic/tclParse.c | 4 ++-- generic/tclStringObj.c | 8 +++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index dda014d..0cdffcd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-09-24 Miguel Sofer + + * generic/tclParse.c (Tcl_ParseCommand): also return an error if + start==NULL and numBytes<0. This is coverity's bug #20 + + * generic/tclStringObj.c (STRING_SIZE): fix allocation for + 0-length strings. This is coverity's bugs #54-5 + 2006-09-22 Andreas Kupries * generic/tclInt.h: Moved TIP#268's field 'packagePrefer' to the diff --git a/generic/tclParse.c b/generic/tclParse.c index ec8c9f0..fc7a77c 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParse.c,v 1.25 2003/02/16 01:36:32 msofer Exp $ + * RCS: @(#) $Id: tclParse.c,v 1.25.2.1 2006/09/24 21:15:10 msofer Exp $ */ #include "tclInt.h" @@ -238,7 +238,7 @@ Tcl_ParseCommand(interp, string, numBytes, nested, parsePtr) * point to char after terminating one. */ int scanned; - if ((string == NULL) && (numBytes>0)) { + if ((string == NULL) && (numBytes!=0)) { if (interp != NULL) { Tcl_SetResult(interp, "can't parse a NULL pointer", TCL_STATIC); } diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 9ec2f63..ab04253 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.1 2006/01/23 11:24:36 msofer Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.2 2006/09/24 21:15:11 msofer Exp $ */ #include "tclInt.h" @@ -105,8 +105,10 @@ typedef struct String { #define STRING_UALLOC(numChars) \ (numChars * sizeof(Tcl_UniChar)) -#define STRING_SIZE(ualloc) \ - ((unsigned) (sizeof(String) - sizeof(Tcl_UniChar) + ualloc)) +#define STRING_SIZE(ualloc) \ + ((unsigned) ((ualloc) \ + ? sizeof(String) - sizeof(Tcl_UniChar) + (ualloc) \ + : sizeof(String))) #define GET_STRING(objPtr) \ ((String *) (objPtr)->internalRep.otherValuePtr) #define SET_STRING(objPtr, stringPtr) \ -- cgit v0.12 From ec417aac0d3264df32f305c1e64a8a3336d1144a Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 25 Sep 2006 17:27:30 +0000 Subject: * generic/tclBasic.c: Reverted exposure of patchlevel in registered core version when TIP#268 features are activated. Better compatibility with existing packages. Like Tk. --- ChangeLog | 7 +++++++ generic/tclBasic.c | 12 ++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0cdffcd..56b2e61 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-09-25 Andreas Kupries + + * generic/tclBasic.c: Reverted exposure of patchlevel in + registered core version when TIP#268 features are + activated. Better compatibility with existing packages. + Like Tk. + 2006-09-24 Miguel Sofer * generic/tclParse.c (Tcl_ParseCommand): also return an error if diff --git a/generic/tclBasic.c b/generic/tclBasic.c index d746ff5..9807a19 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.23 2006/09/22 01:26:22 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.24 2006/09/25 17:27:31 andreas_kupries Exp $ */ #include "tclInt.h" @@ -578,16 +578,16 @@ Tcl_CreateInterp() /* * Register Tcl's version number. - * TIP #268: Full patchlevel instead of just major.minor + * TIP#268: Expose information about its status, + * for runtime switches in the core library + * and tests. */ -#ifndef TCL_TIP268 Tcl_PkgProvideEx(interp, "Tcl", TCL_VERSION, (ClientData) &tclStubs); -#else + +#ifdef TCL_TIP268 Tcl_SetVar2(interp, "tcl_platform", "tip,268", "1", TCL_GLOBAL_ONLY); - - Tcl_PkgProvideEx(interp, "Tcl", TCL_PATCH_LEVEL, (ClientData) &tclStubs); #endif #ifdef Tcl_InitStubs #undef Tcl_InitStubs -- cgit v0.12 From 6c5ebb728f871cf1ab1cd3ca4430d45a0e2a2375 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 25 Sep 2006 21:55:05 +0000 Subject: * generic/tclIO.c (Tcl_StackChannel): Fixed [SF Tcl Bug 1564642], aka coverity #51. Extended loop condition, added checking for NULL to prevent seg.fault. --- ChangeLog | 6 ++++++ generic/tclIO.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 56b2e61..b11e06f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-09-25 Andreas Kupries + + * generic/tclIO.c (Tcl_StackChannel): Fixed [SF Tcl Bug 1564642], + aka coverity #51. Extended loop condition, added checking for + NULL to prevent seg.fault. + 2006-09-25 Andreas Kupries * generic/tclBasic.c: Reverted exposure of patchlevel in diff --git a/generic/tclIO.c b/generic/tclIO.c index 2eb96a7..407a88f 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.21 2006/07/10 23:01:06 hobbs Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.22 2006/09/25 21:55:06 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1323,7 +1323,7 @@ Tcl_StackChannel(interp, typePtr, instanceData, mask, prevChan) statePtr = (ChannelState *) tsdPtr->firstCSPtr; prevChanPtr = ((Channel *) prevChan)->state->topChanPtr; - while (statePtr->topChanPtr != prevChanPtr) { + while ((statePtr != NULL) && (statePtr->topChanPtr != prevChanPtr)) { statePtr = statePtr->nextCSPtr; } -- cgit v0.12 From c211c9903b52974bb4397841b10bcdefeb0329c1 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 26 Sep 2006 14:06:57 +0000 Subject: * generic/tcl.h: As 2006-09-22 commit from Donal K. Fellows demonstrates, "#define NULL 0" is just wrong, and as a quotable chat figure observed, "If NULL isn't defined, we're not using a C compiler." Improper fallback definition of NULL removed. --- ChangeLog | 7 +++++++ generic/tcl.h | 5 +---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b11e06f..18adec0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-09-26 Don Porter + + * generic/tcl.h: As 2006-09-22 commit from Donal K. Fellows + demonstrates, "#define NULL 0" is just wrong, and as a quotable chat + figure observed, "If NULL isn't defined, we're not using a C compiler." + Improper fallback definition of NULL removed. + 2006-09-25 Andreas Kupries * generic/tclIO.c (Tcl_StackChannel): Fixed [SF Tcl Bug 1564642], diff --git a/generic/tcl.h b/generic/tcl.h index b19fe11..d3961eb 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.26 2006/08/18 07:45:42 das Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.27 2006/09/26 14:06:57 dgp Exp $ */ #ifndef _TCL @@ -315,9 +315,6 @@ typedef long LONG; /* * Miscellaneous declarations. */ -#ifndef NULL -# define NULL 0 -#endif #ifndef _CLIENTDATA # ifndef NO_VOID -- cgit v0.12 From ce214ead30c417294e6701b0b07d0b6cc8f455c2 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Tue, 26 Sep 2006 21:40:35 +0000 Subject: * win/makefile.vc: Updated MSVC build to properly deal with * win/nmakehlp.c: MSVC8 and AMD64 target. Backport from 8.5 * win/rules.vc: * generic/tcl.h: Fixed stat definition for MSVC8 AMD64. * win/tclWinSock.c: Casting type police. * win/tclWinTime.c: --- ChangeLog | 9 ++ generic/tcl.h | 4 +- win/makefile.vc | 30 +++-- win/nmakehlp.c | 347 +++++++++++++++++++++++++++++++++++++++---------------- win/rules.vc | 78 +++++++++++-- win/tclWinSock.c | 4 +- win/tclWinTime.c | 6 +- 7 files changed, 352 insertions(+), 126 deletions(-) diff --git a/ChangeLog b/ChangeLog index 18adec0..bcae001 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-09-26 Pat Thoyts + + * win/makefile.vc: Updated MSVC build to properly deal with + * win/nmakehlp.c: MSVC8 and AMD64 target. Backport from 8.5 + * win/rules.vc: + * generic/tcl.h: Fixed stat definition for MSVC8 AMD64. + * win/tclWinSock.c: Casting type police. + * win/tclWinTime.c: + 2006-09-26 Don Porter * generic/tcl.h: As 2006-09-22 commit from Donal K. Fellows diff --git a/generic/tcl.h b/generic/tcl.h index d3961eb..d7bdc90 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.27 2006/09/26 14:06:57 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.28 2006/09/26 21:40:36 patthoyts Exp $ */ #ifndef _TCL @@ -383,7 +383,7 @@ typedef struct stati64 Tcl_StatBuf; # define TCL_LL_MODIFIER "L" # define TCL_LL_MODIFIER_SIZE 1 # else /* __BORLANDC__ */ -# if _MSC_VER < 1400 +# if _MSC_VER < 1400 || !defined(_M_IX86) typedef struct _stati64 Tcl_StatBuf; # else typedef struct _stat64 Tcl_StatBuf; diff --git a/win/makefile.vc b/win/makefile.vc index 417b13f..e3625b9 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -12,7 +12,7 @@ # Copyright (c) 2001-2002 David Gravereaux. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.100.2.8 2006/06/14 15:21:14 patthoyts Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.100.2.9 2006/09/26 21:40:36 patthoyts Exp $ #------------------------------------------------------------------------------ # Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) @@ -338,6 +338,12 @@ cdebug = -Z7 -WX $(DEBUGFLAGS) cwarn = -D _CRT_SECURE_NO_DEPRECATE -D _CRT_NONSTDC_NO_DEPRECATE cflags = -nologo -c $(COMPILERFLAGS) $(cwarn) -Fp$(TMP_DIR)^\ +!if $(FULLWARNINGS) +cflags = $(cflags) -W4 +!else +cflags = $(cflags) -W3 +!endif + !if $(MSVCRT) !if "$(DBGX)" == "" crt = -MD @@ -353,10 +359,10 @@ crt = -MTd !endif TCL_INCLUDES = -I"$(WINDIR)" -I"$(GENERICDIR)" -BASE_CLFAGS = $(cflags) $(cdebug) $(crt) $(TCL_INCLUDES) \ +BASE_CFLAGS = $(cflags) $(cdebug) $(crt) $(TCL_INCLUDES) \ -DTCL_PIPE_DLL=\"$(TCLPIPEDLLNAME)\" CON_CFLAGS = $(cflags) $(cdebug) $(crt) -DCONSOLE -TCL_CFLAGS = $(BASE_CLFAGS) $(OPTDEFINES) +TCL_CFLAGS = $(BASE_CFLAGS) $(OPTDEFINES) #--------------------------------------------------------------------- @@ -370,7 +376,11 @@ ldebug = -release -opt:ref -opt:icf,3 !endif ### Declarations common to all linker options -lflags = -nologo -machine:$(MACHINE) $(ldebug) +lflags = -nologo -machine:$(MACHINE) $(LINKERFLAGS) $(ldebug) + +!if $(FULLWARNINGS) +lflags = $(lflags) -warn:3 +!endif !if $(PROFILE) lflags = $(lflags) -profile @@ -392,7 +402,7 @@ dlllflags = $(lflags) -dll conlflags = $(lflags) -subsystem:console guilflags = $(lflags) -subsystem:windows -baselibs = kernel32.lib advapi32.lib user32.lib +baselibs = kernel32.lib advapi32.lib user32.lib # Avoid 'unresolved external symbol __security_cookie' errors. # c.f. http://support.microsoft.com/?id=894573 !if "$(MACHINE)" == "IA64" || "$(MACHINE)" == "AMD64" @@ -628,23 +638,23 @@ $(TMP_DIR)\tclAppInit.obj: $(WINDIR)\tclAppInit.c $(TMP_DIR)\tclWinReg.obj: $(WINDIR)\tclWinReg.c !if $(STATIC_BUILD) - $(cc32) $(BASE_CLFAGS) -DTCL_THREADS=1 -DSTATIC_BUILD -Fo$@ $? + $(cc32) $(BASE_CFLAGS) -DTCL_THREADS=1 -DSTATIC_BUILD -Fo$@ $? !else - $(cc32) $(BASE_CLFAGS) -DTCL_THREADS=1 -DUSE_TCL_STUBS -Fo$@ $? + $(cc32) $(BASE_CFLAGS) -DTCL_THREADS=1 -DUSE_TCL_STUBS -Fo$@ $? !endif $(TMP_DIR)\tclWinDde.obj: $(WINDIR)\tclWinDde.c !if $(STATIC_BUILD) - $(cc32) $(BASE_CLFAGS) -DTCL_THREADS=1 -DSTATIC_BUILD -Fo$@ $? + $(cc32) $(BASE_CFLAGS) -DTCL_THREADS=1 -DSTATIC_BUILD -Fo$@ $? !else - $(cc32) $(BASE_CLFAGS) -DTCL_THREADS=1 -DUSE_TCL_STUBS -Fo$@ $? + $(cc32) $(BASE_CFLAGS) -DTCL_THREADS=1 -DUSE_TCL_STUBS -Fo$@ $? !endif ### The following objects are part of the stub library and should not ### be built as DLL objects. -Zl is used to avoid a dependancy on any -### specific c-runtime. +### specific C run-time. $(TMP_DIR)\tclStubLib.obj: $(GENERICDIR)\tclStubLib.c $(cc32) $(cdebug) $(cflags) -Zl -DSTATIC_BUILD $(TCL_INCLUDES) -Fo$@ $? diff --git a/win/nmakehlp.c b/win/nmakehlp.c index 48b82c4..9d5df8e 100644 --- a/win/nmakehlp.c +++ b/win/nmakehlp.c @@ -1,4 +1,5 @@ -/* ---------------------------------------------------------------------------- +/* + * ---------------------------------------------------------------------------- * nmakehlp.c -- * * This is used to fix limitations within nmake and the environment. @@ -9,35 +10,51 @@ * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * ---------------------------------------------------------------------------- - * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.1 2006/06/14 15:21:15 patthoyts Exp $ + * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.2 2006/09/26 21:40:37 patthoyts Exp $ * ---------------------------------------------------------------------------- */ #define _CRT_SECURE_NO_DEPRECATE #include +#include #pragma comment (lib, "user32.lib") #pragma comment (lib, "kernel32.lib") +#pragma comment (lib, "shlwapi.lib") +#include +#include +#if defined(_M_IA64) || defined(_M_AMD64) +#pragma comment(lib, "bufferoverflowU") +#endif + /* protos */ -int CheckForCompilerFeature (const char *option); -int CheckForLinkerFeature (const char *option); -int IsIn (const char *string, const char *substring); -DWORD WINAPI ReadFromPipe (LPVOID args); + +int CheckForCompilerFeature(const char *option); +int CheckForLinkerFeature(const char *option); +int IsIn(const char *string, const char *substring); +int GrepForDefine(const char *file, const char *string); +DWORD WINAPI ReadFromPipe(LPVOID args); /* globals */ + +#define CHUNK 25 +#define STATICBUFFERSIZE 1000 typedef struct { HANDLE pipe; - char buffer[1000]; + char buffer[STATICBUFFERSIZE]; } pipeinfo; pipeinfo Out = {INVALID_HANDLE_VALUE, '\0'}; pipeinfo Err = {INVALID_HANDLE_VALUE, '\0'}; + +/* + * exitcodes: 0 == no, 1 == yes, 2 == error + */ - - -/* exitcodes: 0 == no, 1 == yes, 2 == error */ int -main (int argc, char *argv[]) +main( + int argc, + char *argv[]) { char msg[300]; DWORD dwWritten; @@ -50,7 +67,7 @@ main (int argc, char *argv[]) SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); /* - * Make sure the compiler and linker aren't affected by the outside world. + * Make sure the compiler and linker aren't effected by the outside world. */ SetEnvironmentVariable("CL", ""); @@ -60,56 +77,79 @@ main (int argc, char *argv[]) switch (*(argv[1]+1)) { case 'c': if (argc != 3) { - chars = wsprintf(msg, "usage: %s -c \n" + chars = wnsprintf(msg, sizeof(msg)-1, + "usage: %s -c \n" "Tests for whether cl.exe supports an option\n" "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]); - WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL); + WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, + &dwWritten, NULL); return 2; } return CheckForCompilerFeature(argv[2]); case 'l': if (argc != 3) { - chars = wsprintf(msg, "usage: %s -l \n" + chars = wnsprintf(msg, sizeof(msg) - 1, + "usage: %s -l \n" "Tests for whether link.exe supports an option\n" "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]); - WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL); + WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, + &dwWritten, NULL); return 2; } return CheckForLinkerFeature(argv[2]); case 'f': if (argc == 2) { - chars = wsprintf(msg, "usage: %s -f \n" - "Find a substring within another\n" - "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]); - WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL); + chars = wnsprintf(msg, sizeof(msg) - 1, + "usage: %s -f \n" + "Find a substring within another\n" + "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]); + WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, + &dwWritten, NULL); return 2; } else if (argc == 3) { - /* if the string is blank, there is no match */ + /* + * If the string is blank, there is no match. + */ + return 0; } else { return IsIn(argv[2], argv[3]); } + case 'g': + if (argc == 2) { + chars = wnsprintf(msg, sizeof(msg) - 1, + "usage: %s -g \n" + "grep for a #define\n" + "exitcodes: integer of the found string (no decimals)\n", + argv[0]); + WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, + &dwWritten, NULL); + return 2; + } + return GrepForDefine(argv[2], argv[3]); } } - chars = wsprintf(msg, "usage: %s -c|-l|-f ...\n" + chars = wnsprintf(msg, sizeof(msg) - 1, + "usage: %s -c|-l|-f ...\n" "This is a little helper app to equalize shell differences between WinNT and\n" "Win9x and get nmake.exe to accomplish its job.\n", argv[0]); WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL); return 2; } - + int -CheckForCompilerFeature (const char *option) +CheckForCompilerFeature( + const char *option) { STARTUPINFO si; PROCESS_INFORMATION pi; SECURITY_ATTRIBUTES sa; - DWORD threadID, n; + DWORD threadID; char msg[300]; BOOL ok; HANDLE hProcess, h, pipeThreads[2]; - char cmdline[256]; + char cmdline[100]; hProcess = GetCurrentProcess(); @@ -124,29 +164,44 @@ CheckForCompilerFeature (const char *option) sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = FALSE; - /* create a non-inheritible pipe. */ + /* + * Create a non-inheritible pipe. + */ + CreatePipe(&Out.pipe, &h, &sa, 0); - /* dupe the write side, make it inheritible, and close the original. */ - DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, - 0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); + /* + * Dupe the write side, make it inheritible, and close the original. + */ + + DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, 0, TRUE, + DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); + + /* + * Same as above, but for the error side. + */ - /* Same as above, but for the error side. */ CreatePipe(&Err.pipe, &h, &sa, 0); - DuplicateHandle(hProcess, h, hProcess, &si.hStdError, - 0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); + DuplicateHandle(hProcess, h, hProcess, &si.hStdError, 0, TRUE, + DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); - /* base command line */ - n = GetEnvironmentVariable("CC", cmdline, 255); - cmdline[n] = 0; - if (n == 0) - strcpy(cmdline, "cl.exe"); - strncat(cmdline, " -nologo -c -TC -Zs -X ", 255); + /* + * Base command line. + */ - /* append our option for testing */ - strcat(cmdline, option); - /* filename to compile, which exists, but is nothing and empty. */ - strcat(cmdline, " .\\nul"); + lstrcpy(cmdline, "cl.exe -nologo -c -TC -Zs -X "); + + /* + * Append our option for testing + */ + + lstrcat(cmdline, option); + + /* + * Filename to compile, which exists, but is nothing and empty. + */ + + lstrcat(cmdline, " .\\nul"); ok = CreateProcess( NULL, /* Module name. */ @@ -162,65 +217,62 @@ CheckForCompilerFeature (const char *option) if (!ok) { DWORD err = GetLastError(); - int chars = wsprintf(msg, "Tried to launch: \"%s\", but got error [%u]: ", cmdline, err); + int chars = wsprintf(msg, + "Tried to launch: \"%s\", but got error [%u]: ", cmdline, err); - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | - FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID) &msg[chars], + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS| + FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID)&msg[chars], (300-chars), 0); - WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, strlen(msg), &err, NULL); + WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, lstrlen(msg), &err,NULL); return 2; } - /* close our references to the write handles that have now been inherited. */ + /* + * Close our references to the write handles that have now been inherited. + */ + CloseHandle(si.hStdOutput); CloseHandle(si.hStdError); WaitForInputIdle(pi.hProcess, 5000); CloseHandle(pi.hThread); - /* start the pipe reader threads. */ + /* + * Start the pipe reader threads. + */ + pipeThreads[0] = CreateThread(NULL, 0, ReadFromPipe, &Out, 0, &threadID); pipeThreads[1] = CreateThread(NULL, 0, ReadFromPipe, &Err, 0, &threadID); - /* block waiting for the process to end. */ + /* + * Block waiting for the process to end. + */ + WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle(pi.hProcess); - /* clean up temporary files before returning */ - DeleteFile("temp.idb"); - DeleteFile("temp.pdb"); + /* + * Wait for our pipe to get done reading, should it be a little slow. + */ - /* wait for our pipe to get done reading, should it be a little slow. */ WaitForMultipleObjects(2, pipeThreads, TRUE, 500); CloseHandle(pipeThreads[0]); CloseHandle(pipeThreads[1]); -#ifdef _DEBUG - { - DWORD err = 0; - strcat(cmdline, "\n"); - WriteFile(GetStdHandle(STD_ERROR_HANDLE), cmdline, - strlen(cmdline), &err, NULL); - WriteFile(GetStdHandle(STD_ERROR_HANDLE), Out.buffer, - strlen(Out.buffer), &err,NULL); - WriteFile(GetStdHandle(STD_ERROR_HANDLE), Err.buffer, - strlen(Err.buffer), &err,NULL); - } -#endif - /* * Look for the commandline warning code in both streams. * - in MSVC 6 & 7 we get D4002, in MSVC 8 we get D9002. */ - + return !(strstr(Out.buffer, "D4002") != NULL || strstr(Err.buffer, "D4002") != NULL || strstr(Out.buffer, "D9002") != NULL || strstr(Err.buffer, "D9002") != NULL); } - + int -CheckForLinkerFeature (const char *option) +CheckForLinkerFeature( + const char *option) { STARTUPINFO si; PROCESS_INFORMATION pi; @@ -244,24 +296,38 @@ CheckForLinkerFeature (const char *option) sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; - /* create a non-inheritible pipe. */ + /* + * Create a non-inheritible pipe. + */ + CreatePipe(&Out.pipe, &h, &sa, 0); - /* dupe the write side, make it inheritible, and close the original. */ - DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, - 0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); + /* + * Dupe the write side, make it inheritible, and close the original. + */ + + DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, 0, TRUE, + DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); + + /* + * Same as above, but for the error side. + */ - /* Same as above, but for the error side. */ CreatePipe(&Err.pipe, &h, &sa, 0); - DuplicateHandle(hProcess, h, hProcess, &si.hStdError, - 0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); + DuplicateHandle(hProcess, h, hProcess, &si.hStdError, 0, TRUE, + DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); + + /* + * Base command line. + */ + + lstrcpy(cmdline, "link.exe -nologo "); + + /* + * Append our option for testing. + */ - /* base command line */ - strcpy(cmdline, "link.exe -nologo "); - /* append our option for testing */ - strcat(cmdline, option); - /* filename to compile, which exists, but is nothing and empty. */ -// strcat(cmdline, " nul"); + lstrcat(cmdline, option); ok = CreateProcess( NULL, /* Module name. */ @@ -277,49 +343,73 @@ CheckForLinkerFeature (const char *option) if (!ok) { DWORD err = GetLastError(); - int chars = wsprintf(msg, "Tried to launch: \"%s\", but got error [%u]: ", cmdline, err); + int chars = wnsprintf(msg, sizeof(msg) - 1, + "Tried to launch: \"%s\", but got error [%u]: ", cmdline, err); - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | - FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID) &msg[chars], + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS| + FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID)&msg[chars], (300-chars), 0); - WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, strlen(msg), &err, NULL); + WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, lstrlen(msg), &err,NULL); return 2; } - /* close our references to the write handles that have now been inherited. */ + /* + * Close our references to the write handles that have now been inherited. + */ + CloseHandle(si.hStdOutput); CloseHandle(si.hStdError); WaitForInputIdle(pi.hProcess, 5000); CloseHandle(pi.hThread); - /* start the pipe reader threads. */ + /* + * Start the pipe reader threads. + */ + pipeThreads[0] = CreateThread(NULL, 0, ReadFromPipe, &Out, 0, &threadID); pipeThreads[1] = CreateThread(NULL, 0, ReadFromPipe, &Err, 0, &threadID); - /* block waiting for the process to end. */ + /* + * Block waiting for the process to end. + */ + WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle(pi.hProcess); - /* wait for our pipe to get done reading, should it be a little slow. */ + /* + * Wait for our pipe to get done reading, should it be a little slow. + */ + WaitForMultipleObjects(2, pipeThreads, TRUE, 500); CloseHandle(pipeThreads[0]); CloseHandle(pipeThreads[1]); - /* look for the commandline warning code in the stderr stream. */ - return !(strstr(Out.buffer, "LNK1117") != NULL || strstr(Err.buffer, "LNK1117") != NULL); -} + /* + * Look for the commandline warning code in the stderr stream. + */ + return !(strstr(Out.buffer, "LNK1117") != NULL || + strstr(Err.buffer, "LNK1117") != NULL || + strstr(Out.buffer, "LNK4044") != NULL || + strstr(Err.buffer, "LNK4044") != NULL); +} + DWORD WINAPI -ReadFromPipe (LPVOID args) +ReadFromPipe( + LPVOID args) { pipeinfo *pi = (pipeinfo *) args; char *lastBuf = pi->buffer; DWORD dwRead; BOOL ok; -again: - ok = ReadFile(pi->pipe, lastBuf, 25, &dwRead, 0L); + again: + if (lastBuf - pi->buffer + CHUNK > STATICBUFFERSIZE) { + CloseHandle(pi->pipe); + return -1; + } + ok = ReadFile(pi->pipe, lastBuf, CHUNK, &dwRead, 0L); if (!ok || dwRead == 0) { CloseHandle(pi->pipe); return 0; @@ -329,9 +419,68 @@ again: return 0; /* makes the compiler happy */ } - + int -IsIn (const char *string, const char *substring) +IsIn( + const char *string, + const char *substring) { return (strstr(string, substring) != NULL); } + +/* + * Find a specified #define by name. + * + * If the line is '#define TCL_VERSION "8.5"', it returns 85 as the result. + */ + +int +GrepForDefine( + const char *file, + const char *string) +{ + FILE *f; + char s1[51], s2[51], s3[51]; + int r = 0; + double d1; + + f = fopen(file, "rt"); + if (f == NULL) { + return 0; + } + + do { + r = fscanf(f, "%50s", s1); + if (r == 1 && !strcmp(s1, "#define")) { + /* + * Get next two words. + */ + + r = fscanf(f, "%50s %50s", s2, s3); + if (r != 2) { + continue; + } + + /* + * Is the first word what we're looking for? + */ + + if (!strcmp(s2, string)) { + fclose(f); + + /* + * Add 1 past first double quote char. "8.5" + */ + + d1 = atof(s3 + 1); /* 8.5 */ + while (floor(d1) != d1) { + d1 *= 10.0; + } + return ((int) d1); /* 85 */ + } + } + } while (!feof(f)); + + fclose(f); + return 0; +} diff --git a/win/rules.vc b/win/rules.vc index 9b7a6c4..1210997 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -7,11 +7,11 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# Copyright (c) 2001-2002 David Gravereaux. -# Copyright (c) 2003 Patrick Thoyts +# Copyright (c) 2001-2003 David Gravereaux. +# Copyright (c) 2003-2006 Patrick Thoyts # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: rules.vc,v 1.11.2.2 2006/06/14 15:24:19 patthoyts Exp $ +# RCS: @(#) $Id: rules.vc,v 1.11.2.3 2006/09/26 21:40:37 patthoyts Exp $ #------------------------------------------------------------------------------ !ifndef _RULES_VC @@ -34,6 +34,9 @@ _INSTALLDIR = $(INSTALLDIR:/=\) MACHINE = IX86 !endif +!ifndef CFG_ENCODING +CFG_ENCODING = \"cp1252\" +!endif #---------------------------------------------------------- # Set the proper copy method to avoid overwrite questions @@ -46,13 +49,14 @@ RMDIR = rmdir /S /Q !if ![ver | find "4.0" > nul] CPY = echo y | xcopy /i !else -CPY = xcopy /i /y +CPY = xcopy /i /y >NUL !endif !else CPY = xcopy /i RMDIR = deltree /Y !endif - +MKDIR = mkdir +COPY = copy /y >NUL !message =============================================================================== @@ -105,6 +109,10 @@ OPTIMIZATIONS = $(OPTIMIZATIONS) -Gs OPTIMIZATIONS = $(OPTIMIZATIONS) -GS !endif +!if [nmakehlp -c -GL] +OPTIMIZATIONS = $(OPTIMIZATIONS) -GL +!endif + DEBUGFLAGS = !if [nmakehlp -c -RTC1] @@ -113,6 +121,10 @@ DEBUGFLAGS = $(DEBUGFLAGS) -RTC1 DEBUGFLAGS = $(DEBUGFLAGS) -GZ !endif +!if [nmakehlp -c -RTCc] +DEBUGFLAGS = $(DEBUGFLAGS) -RTCc +!endif + COMPILERFLAGS =-W3 !if [nmakehlp -c -YX] @@ -152,6 +164,12 @@ ALIGN98_HACK = 0 ALIGN98_HACK = 0 !endif +LINKERFLAGS = + +!if [nmakehlp -l -ltcg] +LINKERFLAGS =-ltcg +!endif + #---------------------------------------------------------- # MSVC8 (ships with Visual Studio 2005) generates a manifest # file that we should link into the binaries. This is how. @@ -257,6 +275,16 @@ TCL_USE_STATIC_PACKAGES = 0 # by accident. #---------------------------------------------------------- +#---------------------------------------- +# Naming convention: +# t = full thread support. +# s = static library (as opposed to an +# import library) +# g = linked to the debug enabled C +# run-time. +# x = special static build when it +# links to the dynamic C run-time. +#---------------------------------------- SUFX = tsgx !if $(DEBUG) @@ -268,9 +296,12 @@ DBGX = SUFX = $(SUFX:g=) !endif -#!if $(VCVER) > 6 -#BUILDDIRTOP =$(BUILDDIRTOP)_VC$(VCVER) -#!endif +!if "$(MACHINE)" != "IX86" +BUILDDIRTOP =$(BUILDDIRTOP)_$(MACHINE) +!endif +!if $(VCVER) > 6 +BUILDDIRTOP =$(BUILDDIRTOP)_VC$(VCVER) +!endif TMP_DIRFULL = .\$(BUILDDIRTOP)\$(PROJECT)_ThreadedDynamicStaticX @@ -330,6 +361,28 @@ TCL_COMPILE_DEBUG = 0 !endif !endif +#---------------------------------------------------------- +# Decode the checks requested. +#---------------------------------------------------------- + +!if "$(CHECKS)" == "" || [nmakehlp -f "$(CHECKS)" "none"] +TCL_NO_DEPRECATED = 0 +FULLWARNINGS = 0 +!else +!if [nmakehlp -f $(CHECKS) "nodep"] +!message *** Doing nodep check +TCL_NO_DEPRECATED = 1 +!else +TCL_NO_DEPRECATED = 0 +!endif +!if [nmakehlp -f $(CHECKS) "fullwarn"] +!message *** Doing full warnings check +FULLWARNINGS = 1 +!else +FULLWARNINGS = 0 +!endif +!endif + #---------------------------------------------------------- # Set our defines now armed with our options. @@ -337,7 +390,7 @@ TCL_COMPILE_DEBUG = 0 OPTDEFINES = !if $(TCL_MEM_DEBUG) -OPTDEFINES = -DTCL_MEM_DEBUG +OPTDEFINES = $(OPTDEFINES) -DTCL_MEM_DEBUG !endif !if $(TCL_COMPILE_DEBUG) OPTDEFINES = $(OPTDEFINES) -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS @@ -373,6 +426,7 @@ OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_DO64BIT !if !defined(TCLDIR) !if exist("$(_INSTALLDIR)\include\tcl.h") +TCLH = "$(_INSTALLDIR)\include\tcl.h" TCLINSTALL = 1 _TCLDIR = $(_INSTALLDIR) !else @@ -383,8 +437,10 @@ Failed to find tcl.h. Set the TCLDIR macro. !else _TCLDIR = $(TCLDIR:/=\) !if exist("$(_TCLDIR)\include\tcl.h") +TCLH = "$(_TCLDIR)\include\tcl.h" TCLINSTALL = 1 !elseif exist("$(_TCLDIR)\generic\tcl.h") +TCLH = "$(_TCLDIR)\generic\tcl.h" TCLINSTALL = 0 !else MSG =^ @@ -437,6 +493,8 @@ TCLTOOLSDIR = $(_TCLDIR)\tools !message *** Output directory will be '$(OUT_DIR)' !message *** Suffix for binaries will be '$(SUFX)' !message *** Optional defines are '$(OPTDEFINES)' -!message *** Compiler version $(VCVER) options are '$(OPTIMIZATIONS) $(DEBUGFLAGS)' +!message *** Compiler version $(VCVER) +!message *** Compiler options '$(OPTIMIZATIONS) $(DEBUGFLAGS)' +!message *** Link options '$(LINKERFLAGS)' !endif diff --git a/win/tclWinSock.c b/win/tclWinSock.c index 99913ea..feeb374 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.5 2006/03/10 14:27:41 vasiljevic Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.6 2006/09/26 21:40:37 patthoyts Exp $ */ #include "tclWinInt.h" @@ -2356,7 +2356,7 @@ SocketThread(LPVOID arg) SetEvent(tsdPtr->readyEvent); - return msg.wParam; + return (DWORD)msg.wParam; } diff --git a/win/tclWinTime.c b/win/tclWinTime.c index 842d114..f1c9d6a 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.9 2006/06/14 15:21:15 patthoyts Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.10 2006/09/26 21:40:37 patthoyts Exp $ */ #include "tclWinInt.h" @@ -486,7 +486,7 @@ StopCalibration( ClientData unused ) char * TclpGetTZName(int dst) { - int len; + size_t len; char *zone, *p; TIME_ZONE_INFORMATION tz; Tcl_Encoding encoding; @@ -533,7 +533,7 @@ TclpGetTZName(int dst) } } } - Tcl_ExternalToUtf(NULL, NULL, zone, len, 0, NULL, name, + Tcl_ExternalToUtf(NULL, NULL, zone, (int)len, 0, NULL, name, sizeof(tsdPtr->tzName), NULL, NULL, NULL); } if (name[0] == '\0') { -- cgit v0.12 From 6038a3e7e943a56a3a1d383b9048d2785d4171f3 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sat, 30 Sep 2006 19:20:09 +0000 Subject: 2006-09-30 Miguel Sofer * generic/tclUtil.c (Tcl_SplitList): optimisation, [Patch 1344747] by dgp. --- ChangeLog | 5 +++++ generic/tclUtil.c | 21 ++++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index bcae001..4f13450 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-09-30 Miguel Sofer + + * generic/tclUtil.c (Tcl_SplitList): optimisation, [Patch 1344747] + by dgp. + 2006-09-26 Pat Thoyts * win/makefile.vc: Updated MSVC build to properly deal with diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 57fc6e0..d12ebe8 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.36.2.6 2005/04/05 16:40:16 dgp Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.36.2.7 2006/09/30 19:20:12 msofer Exp $ */ #include "tclInt.h" @@ -436,15 +436,26 @@ Tcl_SplitList(interp, list, argcPtr, argvPtr) * the number of space characters in the list. */ - for (size = 1, l = list; *l != 0; l++) { + for (size = 2, l = list; *l != 0; l++) { if (isspace(UCHAR(*l))) { /* INTL: ISO space. */ size++; + /* Consecutive space can only count as a single list delimiter */ + while (1) { + char next = *(l + 1); + if (next == '\0') { + break; + } + ++l; + if (isspace(UCHAR(next))) { + continue; + } + break; + } } } - size++; /* Leave space for final NULL pointer. */ + length = l - list; argv = (CONST char **) ckalloc((unsigned) - ((size * sizeof(char *)) + (l - list) + 1)); - length = strlen(list); + ((size * sizeof(char *)) + length + 1)); for (i = 0, p = ((char *) argv) + size*sizeof(char *); *list != 0; i++) { CONST char *prevList = list; -- cgit v0.12 From 90cf19d1e8047062753c6dcb127807aec08760b7 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Sun, 1 Oct 2006 13:17:34 +0000 Subject: Backported fix for bug #1420432 (cannot set mtime for directories on windows). --- ChangeLog | 5 +++++ tests/cmdAH.test | 17 ++++++++++++++++- win/tclWinFile.c | 18 ++++++++++++++---- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4f13450..6911e60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-10-01 Pat Thoyts + + * win/tclWinFile.c: Backported fix for bug #1420432 (cannot set + * tests/cmdAH.test: mtime for directories on windows). + 2006-09-30 Miguel Sofer * generic/tclUtil.c (Tcl_SplitList): optimisation, [Patch 1344747] diff --git a/tests/cmdAH.test b/tests/cmdAH.test index 6b0e053..646dd20 100644 --- a/tests/cmdAH.test +++ b/tests/cmdAH.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: cmdAH.test,v 1.30.2.5 2005/11/15 16:41:41 kennykb Exp $ +# RCS: @(#) $Id: cmdAH.test,v 1.30.2.6 2006/10/01 13:17:34 patthoyts Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -1449,6 +1449,21 @@ test cmdAH-24.12 {Tcl_FileObjCmd: mtime and daylight savings} { expr {$newmtime == $time ? 1 : "$newmtime != $time"} } {1} +# bug 1420432: setting mtime fails for directories on windows. +test cmdAH-24.13 {Tcl_FileObjCmd: directory mtime} { + set dirname [file join [temporaryDirectory] tmp[pid]] + file delete -force $dirname + file mkdir $dirname + set res [catch { + set old [file mtime $dirname] + file mtime $dirname 0 + set new [file mtime $dirname] + list $new [expr {$old != $new}] + } err] + file delete -force $dirname + list $res $err +} {0 {0 1}} + # owned test cmdAH-25.1 {Tcl_FileObjCmd: owned} { diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 507c2a1..7f1e12a 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.15 2006/03/19 22:47:30 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.16 2006/10/01 13:17:34 patthoyts Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -2635,20 +2635,30 @@ TclpUtime( { int res = 0; HANDLE fileHandle; + CONST TCHAR *native; + DWORD attr = 0; + DWORD flags = FILE_ATTRIBUTE_NORMAL; FILETIME lastAccessTime, lastModTime; FromCTime(tval->actime, &lastAccessTime); FromCTime(tval->modtime, &lastModTime); + native = (CONST TCHAR *)Tcl_FSGetNativePath(pathPtr); + + attr = (*tclWinProcs->getFileAttributesProc)(native); + + if (attr != INVALID_FILE_ATTRIBUTES && attr & FILE_ATTRIBUTE_DIRECTORY) { + flags = FILE_FLAG_BACKUP_SEMANTICS; + } + /* * We use the native APIs (not 'utime') because there are some daylight * savings complications that utime gets wrong. */ fileHandle = (tclWinProcs->createFileProc) ( - (CONST TCHAR *) Tcl_FSGetNativePath(pathPtr), - FILE_WRITE_ATTRIBUTES, 0, NULL, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, NULL); + native, FILE_WRITE_ATTRIBUTES, 0, NULL, + OPEN_EXISTING, flags, NULL); if (fileHandle == INVALID_HANDLE_VALUE || !SetFileTime(fileHandle, NULL, &lastAccessTime, &lastModTime)) { -- cgit v0.12 From 0c25b2705cdac01590054d0027ef57e71169004e Mon Sep 17 00:00:00 2001 From: patthoyts Date: Sun, 1 Oct 2006 21:51:33 +0000 Subject: Handle possible missing define --- ChangeLog | 1 + win/tclWinFile.c | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6911e60..56ec2f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 2006-10-01 Pat Thoyts + * win/tclWinFile.c: Handle possible missing define. * win/tclWinFile.c: Backported fix for bug #1420432 (cannot set * tests/cmdAH.test: mtime for directories on windows). diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 7f1e12a..f0e07f2 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.16 2006/10/01 13:17:34 patthoyts Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.17 2006/10/01 21:51:34 patthoyts Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -82,6 +82,9 @@ # define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) # define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #endif +#ifndef INVALID_FILE_ATTRIBUTES +#define INVALID_FILE_ATTRIBUTES ((DWORD)-1) +#endif /* * Maximum reparse buffer info size. The max user defined reparse @@ -1851,7 +1854,7 @@ NativeStat(nativePath, statPtr, checkLinks) */ attr = (*tclWinProcs->getFileAttributesProc)(nativePath); - if (attr == 0xffffffff) { + if (attr == INVALID_FILE_ATTRIBUTES) { Tcl_SetErrno(ENOENT); return -1; } @@ -2355,7 +2358,7 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) * the current normalized path, if the file exists. */ if (isDrive) { - if (GetFileAttributesA(nativePath) == 0xffffffff) { + if (GetFileAttributesA(nativePath) == INVALID_FILE_ATTRIBUTES) { /* File doesn't exist */ if (isDrive) { int len = WinIsReserved(path); @@ -2385,7 +2388,7 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) handle = FindFirstFileA(nativePath, &fData); if (handle == INVALID_HANDLE_VALUE) { if (GetFileAttributesA(nativePath) - == 0xffffffff) { + == INVALID_FILE_ATTRIBUTES) { /* File doesn't exist */ Tcl_DStringFree(&ds); break; -- cgit v0.12 From 1cc358dbc248037ff9ba15eab85cedeea9697019 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 2 Oct 2006 18:30:36 +0000 Subject: * generic/tclFileName.c (TclGlob): Prevent doubling of directory separators by [glob]. [Bug 1569042] --- ChangeLog | 5 +++++ generic/tclFileName.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 56ec2f5..010925f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-10-02 Don Porter + + * generic/tclFileName.c (TclGlob): Prevent doubling of directory + separators by [glob]. [Bug 1569042] + 2006-10-01 Pat Thoyts * win/tclWinFile.c: Handle possible missing define. diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 7ed34f7..9dce822 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.13 2006/08/30 17:35:24 hobbs Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.14 2006/10/02 18:30:40 dgp Exp $ */ #include "tclInt.h" @@ -2130,6 +2130,10 @@ TclGlob(interp, pattern, unquotedPrefix, globFlags, types) */ if (globFlags & TCL_GLOBMODE_DIR) { Tcl_DStringAppend(&buffer,separators,1); + /* Try to borrow that separator from the tail */ + if (*tail == *separators) { + tail++; + } } prefixLen++; } -- cgit v0.12 From 4a39b416c8cd105a1c8bcd0e88f21cff8abe51e6 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 3 Oct 2006 18:20:33 +0000 Subject: Attempt to correct regression filename-16.6 due to 2006-05-13 commit. --- generic/tclFileName.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 9dce822..12a50e5 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.14 2006/10/02 18:30:40 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.15 2006/10/03 18:20:33 dgp Exp $ */ #include "tclInt.h" @@ -2351,7 +2351,11 @@ TclDoGlob(interp, separators, headPtr, tail, types) break; } if (tclPlatform != TCL_PLATFORM_MAC) { - Tcl_DStringAppend(headPtr, tail, 1); + if (*tail == '\\') { + Tcl_DStringAppend(headPtr, separators, 1); + } else { + Tcl_DStringAppend(headPtr, tail, 1); + } } count++; } -- cgit v0.12 From e783711c2c8313fcd8782ac5136c17f63d87b896 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 4 Oct 2006 17:59:06 +0000 Subject: Bug 1400572 will remain knownBug for 8.4.14 --- tests/namespace.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/namespace.test b/tests/namespace.test index 68d0c66..e3d3ffe 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.21.2.9 2006/01/09 18:34:18 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.21.2.10 2006/10/04 17:59:06 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1123,7 +1123,7 @@ test namespace-29.5 {NamespaceInscopeCmd, has lappend semantics} { list [namespace inscope test_ns_1 cmd x y z] \ [namespace eval test_ns_1 [concat cmd [list x y z]]] } {{::test_ns_1::cmd: v=747, args=x y z} {::test_ns_1::cmd: v=747, args=x y z}} -test namespace-29.6 {NamespaceInscopeCmd, 1400572} { +test namespace-29.6 {NamespaceInscopeCmd, 1400572} knownBug { namespace inscope test_ns_1 {info level 0} } {namespace inscope test_ns_1 {info level 0}} -- cgit v0.12 From b8250fee59da71021aa11343910dd4eb0594f003 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Thu, 5 Oct 2006 11:44:02 +0000 Subject: * generic/tclVar.c (Tcl_LappendObjCmd): * tests/append.test(4.21-22): fix for longstanding [Bug 1570718], lappending nothing to non-list. Reported by lvirden --- ChangeLog | 6 ++++++ generic/tclVar.c | 11 +++++++++-- tests/append.test | 11 ++++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 010925f..2d70cc1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-10-05 Miguel Sofer + + * generic/tclVar.c (Tcl_LappendObjCmd): + * tests/append.test(4.21-22): fix for longstanding [Bug 1570718], + lappending nothing to non-list. Reported by lvirden + 2006-10-02 Don Porter * generic/tclFileName.c (TclGlob): Prevent doubling of directory diff --git a/generic/tclVar.c b/generic/tclVar.c index c926e4e..c0dfdc3 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.11 2005/11/27 02:34:41 das Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.12 2006/10/05 11:44:03 msofer Exp $ */ #include "tclInt.h" @@ -2764,7 +2764,14 @@ Tcl_LappendObjCmd(dummy, interp, objc, objv) if (newValuePtr == NULL) { return TCL_ERROR; } - } + } else { + int result; + + result = Tcl_ListObjLength(interp, newValuePtr, &numElems); + if (result != TCL_OK) { + return result; + } + } } else { /* * We have arguments to append. We used to call Tcl_SetVar2 to diff --git a/tests/append.test b/tests/append.test index 58c0de7..312bc09 100644 --- a/tests/append.test +++ b/tests/append.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: append.test,v 1.7 2001/07/03 23:39:24 hobbs Exp $ +# RCS: @(#) $Id: append.test,v 1.7.12.1 2006/10/05 11:44:04 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -143,6 +143,15 @@ test append-4.20 {lappend command} { catch {unset x} lappend x(0) abc } {abc} +unset x +test append-4.21 {lappend command} { + set x \" + list [catch {lappend x} msg] $msg +} {1 {unmatched open quote in list}} +test append-4.22 {lappend command} { + set x \" + list [catch {lappend x abc} msg] $msg +} {1 {unmatched open quote in list}} proc check {var size} { set l [llength $var] -- cgit v0.12 From 09a4df69886849c229acc747bd459109a2c7aa4a Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 5 Oct 2006 21:24:55 +0000 Subject: * generic/tcl.h: note limitation on changing Tcl_UniChar size * generic/tclEncoding.c (UtfToUnicodeProc, UnicodeToUtfProc): * tests/encoding.test (encoding-16.1): fix alignment issues in unicode <> utf conversion procs. [Bug 1122671] --- ChangeLog | 7 ++++++ generic/tcl.h | 8 +++++-- generic/tclEncoding.c | 59 ++++++++++++++++++++++++++++++--------------------- tests/encoding.test | 7 +++--- 4 files changed, 52 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d70cc1..5331add 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-10-05 Jeff Hobbs + + * generic/tcl.h: note limitation on changing Tcl_UniChar size + * generic/tclEncoding.c (UtfToUnicodeProc, UnicodeToUtfProc): + * tests/encoding.test (encoding-16.1): fix alignment issues in + unicode <> utf conversion procs. [Bug 1122671] + 2006-10-05 Miguel Sofer * generic/tclVar.c (Tcl_LappendObjCmd): diff --git a/generic/tcl.h b/generic/tcl.h index d7bdc90..696076b 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.28 2006/09/26 21:40:36 patthoyts Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.29 2006/10/05 21:24:56 hobbs Exp $ */ #ifndef _TCL @@ -2238,7 +2238,11 @@ typedef struct Tcl_Parse { /* * unsigned int isn't 100% accurate as it should be a strict 4-byte * value (perhaps wchar_t). 64-bit systems may have troubles. The - * size of this value must be reflected correctly in regcustom.h. + * size of this value must be reflected correctly in regcustom.h and + * in tclEncoding.c. + * XXX: Tcl is currently UCS-2 and planning UTF-16 for the Unicode + * XXX: string rep that Tcl_UniChar represents. Changing the size + * XXX: of Tcl_UniChar is /not/ supported. */ typedef unsigned int Tcl_UniChar; #else diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 5b2ae19..70c9eb6 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.11 2006/08/09 18:12:42 dgp Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.12 2006/10/05 21:24:56 hobbs Exp $ */ #include "tclInt.h" @@ -2147,10 +2147,11 @@ UnicodeToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, * correspond to the bytes stored in the * output buffer. */ { - CONST Tcl_UniChar *wSrc, *wSrcStart, *wSrcEnd; + CONST char *srcStart, *srcEnd; char *dstEnd, *dstStart; int result, numChars; - + Tcl_UniChar ch; + result = TCL_OK; if ((srcLen % sizeof(Tcl_UniChar)) != 0) { result = TCL_CONVERT_MULTIBYTE; @@ -2158,31 +2159,31 @@ UnicodeToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, srcLen *= sizeof(Tcl_UniChar); } - wSrc = (Tcl_UniChar *) src; - - wSrcStart = (Tcl_UniChar *) src; - wSrcEnd = (Tcl_UniChar *) (src + srcLen); + srcStart = src; + srcEnd = src + srcLen; dstStart = dst; dstEnd = dst + dstLen - TCL_UTF_MAX; - for (numChars = 0; wSrc < wSrcEnd; numChars++) { + for (numChars = 0; src < srcEnd; numChars++) { if (dst > dstEnd) { result = TCL_CONVERT_NOSPACE; break; } /* - * Special case for 1-byte utf chars for speed. + * Special case for 1-byte utf chars for speed. Make sure we + * work with Tcl_UniChar-size data. */ - if (*wSrc && *wSrc < 0x80) { - *dst++ = (char) *wSrc; + ch = *(Tcl_UniChar *)src; + if (ch && ch < 0x80) { + *dst++ = *src; } else { - dst += Tcl_UniCharToUtf(*wSrc, dst); + dst += Tcl_UniCharToUtf(ch, dst); } - wSrc++; + src += sizeof(Tcl_UniChar); } - *srcReadPtr = (char *) wSrc - (char *) wSrcStart; + *srcReadPtr = src - srcStart; *dstWrotePtr = dst - dstStart; *dstCharsPtr = numChars; return result; @@ -2232,10 +2233,10 @@ UtfToUnicodeProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, * correspond to the bytes stored in the * output buffer. */ { - CONST char *srcStart, *srcEnd, *srcClose; - Tcl_UniChar *wDst, *wDstStart, *wDstEnd; + CONST char *srcStart, *srcEnd, *srcClose, *dstStart, *dstEnd; int result, numChars; - + Tcl_UniChar ch; + srcStart = src; srcEnd = src + srcLen; srcClose = srcEnd; @@ -2243,9 +2244,8 @@ UtfToUnicodeProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, srcClose -= TCL_UTF_MAX; } - wDst = (Tcl_UniChar *) dst; - wDstStart = (Tcl_UniChar *) dst; - wDstEnd = (Tcl_UniChar *) (dst + dstLen - sizeof(Tcl_UniChar)); + dstStart = dst; + dstEnd = dst + dstLen - sizeof(Tcl_UniChar); result = TCL_OK; for (numChars = 0; src < srcEnd; numChars++) { @@ -2258,15 +2258,26 @@ UtfToUnicodeProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, result = TCL_CONVERT_MULTIBYTE; break; } - if (wDst > wDstEnd) { + if (dst > dstEnd) { result = TCL_CONVERT_NOSPACE; break; } - src += TclUtfToUniChar(src, wDst); - wDst++; + src += TclUtfToUniChar(src, &ch); + /* + * Need to handle this in a way that won't cause misalignment + * by casting dst to a Tcl_UniChar. [Bug 1122671] + * XXX: This hard-codes the assumed size of Tcl_UniChar as 2. + */ +#ifdef WORDS_BIGENDIAN + *dst++ = (ch >> 8); + *dst++ = (ch & 0xFF); +#else + *dst++ = (ch & 0xFF); + *dst++ = (ch >> 8); +#endif } *srcReadPtr = src - srcStart; - *dstWrotePtr = (char *) wDst - (char *) wDstStart; + *dstWrotePtr = dst - dstStart; *dstCharsPtr = numChars; return result; } diff --git a/tests/encoding.test b/tests/encoding.test index 83f5f69..4e5a7fa 100644 --- a/tests/encoding.test +++ b/tests/encoding.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: encoding.test,v 1.16.2.2 2004/05/27 14:33:20 rmax Exp $ +# RCS: @(#) $Id: encoding.test,v 1.16.2.3 2006/10/05 21:24:56 hobbs Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -307,8 +307,9 @@ test encoding-15.3 {UtfToUtfProc null character input} { } {1 2 c080} test encoding-16.1 {UnicodeToUtfProc} { - encoding convertfrom unicode NN -} "\u4e4e" + set val [encoding convertfrom unicode NN] + list $val [format %x [scan $val %c]] +} "\u4e4e 4e4e" test encoding-17.1 {UtfToUnicodeProc} { } {} -- cgit v0.12 From c85fa02a0669f2ecbfb370f2a8babb29a2e007ac Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 6 Oct 2006 04:55:07 +0000 Subject: (UnicodeToUtfProc): dst must be set to (ch & 0xFF) to work on big endian systems --- generic/tclEncoding.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 70c9eb6..50244b3 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.12 2006/10/05 21:24:56 hobbs Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.13 2006/10/06 04:55:07 hobbs Exp $ */ #include "tclInt.h" @@ -2176,7 +2176,7 @@ UnicodeToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, */ ch = *(Tcl_UniChar *)src; if (ch && ch < 0x80) { - *dst++ = *src; + *dst++ = (ch & 0xFF); } else { dst += Tcl_UniCharToUtf(ch, dst); } -- cgit v0.12 From 68b8be49f5771f747c9b416de6b11f386fdbb8fa Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 6 Oct 2006 05:56:47 +0000 Subject: * library/http/http.tcl (http::geturl): only do geturl url rfc 3986 validity checking if $::http::strict is true (default false for 8.5). [Bug 1560506] --- ChangeLog | 4 ++++ library/http/http.tcl | 12 ++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5331add..efb0ed6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2006-10-05 Jeff Hobbs + * library/http/http.tcl (http::geturl): only do geturl url rfc + 3986 validity checking if $::http::strict is true (default false + for 8.5). [Bug 1560506] + * generic/tcl.h: note limitation on changing Tcl_UniChar size * generic/tclEncoding.c (UtfToUnicodeProc, UnicodeToUtfProc): * tests/encoding.test (encoding-16.1): fix alignment issues in diff --git a/library/http/http.tcl b/library/http/http.tcl index 1a79ceb..c412f6e 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.12 2006/09/15 19:53:33 hobbs Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.13 2006/10/06 05:56:48 hobbs Exp $ # Rough version history: # 1.0 Old http_get interface. @@ -64,6 +64,9 @@ namespace eval http { # This can be changed, but iso8859-1 is the RFC standard. variable defaultCharset "iso8859-1" + # Force RFC 3986 strictness in geturl url verification? Not for 8.4.x + variable strict 0 + namespace export geturl config reset wait formatQuery register unregister # Useful, but not exported: data size status code } @@ -223,6 +226,7 @@ proc http::geturl { url args } { variable http variable urlTypes variable defaultCharset + variable strict # Initialize the state variable, an array. We'll return the name of this # array as the token for the transaction. @@ -330,6 +334,7 @@ proc http::geturl { url args } { # # From a validation perspective, we need to ensure that the parts of the # URL that are going to the server are correctly encoded. + # This is only done if $::http::strict is true (default 0 for compat). set URLmatcher {(?x) # this is _expanded_ syntax ^ @@ -375,7 +380,7 @@ proc http::geturl { url args } { (?: [-\w.~!$&'()*+,;=:] | %[0-9a-f][0-9a-f] )+ $ } - if {![regexp -- $validityRE $user]} { + if {$strict && ![regexp -- $validityRE $user]} { unset $token # Provide a better error message in this error case if {[regexp {(?i)%(?![0-9a-f][0-9a-f]).?.?} $user bad]} { @@ -395,7 +400,7 @@ proc http::geturl { url args } { (?: \? (?: [-\w.~!$&'()*+,;=:@/?] | %[0-9a-f][0-9a-f] )* )? $ } - if {![regexp -- $validityRE $srvurl]} { + if {$strict && ![regexp -- $validityRE $srvurl]} { unset $token # Provide a better error message in this error case if {[regexp {(?i)%(?![0-9a-f][0-9a-f])..} $srvurl bad]} { @@ -409,7 +414,6 @@ proc http::geturl { url args } { } if {[string length $proto] == 0} { set proto http - set url ${proto}:$url } if {![info exists urlTypes($proto)]} { unset $token -- cgit v0.12 From 51d46f220f118765bf2638251ddca90a0eb02baf Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 6 Oct 2006 05:57:44 +0000 Subject: note default "false" for http::strict for 8.4 --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index efb0ed6..dbc232c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,7 @@ * library/http/http.tcl (http::geturl): only do geturl url rfc 3986 validity checking if $::http::strict is true (default false - for 8.5). [Bug 1560506] + for 8.4). [Bug 1560506] * generic/tcl.h: note limitation on changing Tcl_UniChar size * generic/tclEncoding.c (UtfToUnicodeProc, UnicodeToUtfProc): -- cgit v0.12 From 45d55000a997d99d141b01fb4f92f2160b117eea Mon Sep 17 00:00:00 2001 From: patthoyts Date: Fri, 6 Oct 2006 14:04:48 +0000 Subject: Remove RTCc flag --- ChangeLog | 4 ++++ win/nmakehlp.c | 4 ++-- win/rules.vc | 6 +----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index dbc232c..e038e58 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-10-06 Pat Thoyts + + * win/rules.vc: bug #1571954: avoid /RTCc flag with MSVC8 + 2006-10-05 Jeff Hobbs * library/http/http.tcl (http::geturl): only do geturl url rfc diff --git a/win/nmakehlp.c b/win/nmakehlp.c index 9d5df8e..5f31314 100644 --- a/win/nmakehlp.c +++ b/win/nmakehlp.c @@ -10,7 +10,7 @@ * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * ---------------------------------------------------------------------------- - * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.2 2006/09/26 21:40:37 patthoyts Exp $ + * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.3 2006/10/06 14:04:49 patthoyts Exp $ * ---------------------------------------------------------------------------- */ @@ -407,7 +407,7 @@ ReadFromPipe( again: if (lastBuf - pi->buffer + CHUNK > STATICBUFFERSIZE) { CloseHandle(pi->pipe); - return -1; + return (DWORD)-1; } ok = ReadFile(pi->pipe, lastBuf, CHUNK, &dwRead, 0L); if (!ok || dwRead == 0) { diff --git a/win/rules.vc b/win/rules.vc index 1210997..045aebc 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -11,7 +11,7 @@ # Copyright (c) 2003-2006 Patrick Thoyts # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: rules.vc,v 1.11.2.3 2006/09/26 21:40:37 patthoyts Exp $ +# RCS: @(#) $Id: rules.vc,v 1.11.2.4 2006/10/06 14:04:49 patthoyts Exp $ #------------------------------------------------------------------------------ !ifndef _RULES_VC @@ -121,10 +121,6 @@ DEBUGFLAGS = $(DEBUGFLAGS) -RTC1 DEBUGFLAGS = $(DEBUGFLAGS) -GZ !endif -!if [nmakehlp -c -RTCc] -DEBUGFLAGS = $(DEBUGFLAGS) -RTCc -!endif - COMPILERFLAGS =-W3 !if [nmakehlp -c -YX] -- cgit v0.12 From 58e0f15104bb8a8bdb18ca604396269b0c367868 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 6 Oct 2006 19:00:52 +0000 Subject: update tests to handle strictness change --- ChangeLog | 4 ++++ tests/http.test | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e038e58..49a069e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-10-06 Jeff Hobbs + + * tests/http.test: update tests to handle strictness change. + 2006-10-06 Pat Thoyts * win/rules.vc: bug #1571954: avoid /RTCc flag with MSVC8 diff --git a/tests/http.test b/tests/http.test index 1fca0c4..a1df4ca 100644 --- a/tests/http.test +++ b/tests/http.test @@ -12,7 +12,7 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # -# RCS: @(#) $Id: http.test,v 1.33.2.5 2006/09/15 19:53:33 hobbs Exp $ +# RCS: @(#) $Id: http.test,v 1.33.2.6 2006/10/06 19:00:53 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -137,6 +137,8 @@ set fullurl http://user:pass@[info hostname]:$port/a/b/c set binurl //[info hostname]:$port/binary set posturl //[info hostname]:$port/post set badposturl //[info hostname]:$port/droppost +set badcharurl //%user@[info hostname]:$port/a/^b/c + test http-3.4 {http::geturl} { set token [http::geturl $url] http::data $token @@ -313,23 +315,34 @@ test http-3.18 {http::geturl parse failures} -body { http::geturl http://somewhere:123456789/ } -returnCodes error -result {Invalid port number: 123456789} test http-3.19 {http::geturl parse failures} -body { + set ::http::strict 1 http::geturl http://{user}@somewhere } -returnCodes error -result {Illegal characters in URL user} test http-3.20 {http::geturl parse failures} -body { + set ::http::strict 1 http::geturl http://%user@somewhere } -returnCodes error -result {Illegal encoding character usage "%us" in URL user} test http-3.21 {http::geturl parse failures} -body { + set ::http::strict 1 http::geturl http://somewhere/{path} } -returnCodes error -result {Illegal characters in URL path} test http-3.22 {http::geturl parse failures} -body { + set ::http::strict 1 http::geturl http://somewhere/%path } -returnCodes error -result {Illegal encoding character usage "%pa" in URL path} test http-3.23 {http::geturl parse failures} -body { + set ::http::strict 1 http::geturl http://somewhere/path?{query} } -returnCodes error -result {Illegal characters in URL path} test http-3.24 {http::geturl parse failures} -body { + set ::http::strict 1 http::geturl http://somewhere/path?%query } -returnCodes error -result {Illegal encoding character usage "%qu" in URL path} +test http-3.25 {http::geturl parse failures} -body { + set ::http::strict 0 + set token [http::geturl $badcharurl] + http::cleanup $token +} -returnCodes ok -result {} test http-4.1 {http::Event} { set token [http::geturl $url] -- cgit v0.12 From a8a7b3f04d16b8f5b11fccc178ea61fa08b7dff1 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 10 Oct 2006 18:16:59 +0000 Subject: dup test name --- tests/pkg.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pkg.test b/tests/pkg.test index baea4d5..344de1c 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.5 2006/09/22 01:26:24 andreas_kupries Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.6 2006/10/10 18:16:59 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1278,7 +1278,7 @@ test package-prefer-3.3 {set latest, keep} tip268 { prefer latest latest } {stable latest latest} -test package-prefer-3.3 {set stable, rejected} tip268 { +test package-prefer-3.4 {set stable, rejected} tip268 { prefer latest stable } {stable latest latest} -- cgit v0.12 From ba0f0f3d224fe41e429498129101a52a55110e16 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 10 Oct 2006 19:10:37 +0000 Subject: * changes: changes updated for 8.4.14 release. --- ChangeLog | 6 ++++++ changes | 24 ++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 49a069e..17cab43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-10-10 Don Porter + + *** 8.4.14 TAGGED FOR RELEASE *** + + * changes: changes updated for 8.4.14 release. + 2006-10-06 Jeff Hobbs * tests/http.test: update tests to handle strictness change. diff --git a/changes b/changes index e55a1f2..01bcccc 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.45 2006/08/21 02:36:27 das Exp $ +RCS: @(#) $Id: changes,v 1.79.2.46 2006/10/10 19:10:37 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6397,4 +6397,24 @@ naked-fork safe on Tiger (steffen) 2006-08-21 (bug fix) Darwin: recursively called event loop (steffen) ---- Released 8.4.14, June XX, 2006 --- See ChangeLog for details --- +2006-08-30 (bug fix)[1548263] filesystem segfaults (hobbs,mccormack) + +2006-09-06 (bug fix)[999544] use of MT-safe system calls (vasiljevic) + +2006-09-10 (platform support) Darwin: msgcat use CFLocale (steffen) +=> msgcat 1.3.4 + +2006-09-22 (bug fix)[1562528] NULL terminates variadic calls (fellows,ryazanov) + +2006-09-26 (platform support) MSVC8 AMD64 support (thoyts) + +2006-10-05 (bug fix)[1570718] make [lappend $nonList] complain (sofer,virden) + +2006-10-05 (bug fix)[1122671] alignment fixes in unicode encoding routines +(hobbs,staplin) + +2006-10-05 (new feature) [set ::http::strict 1] (default value is 0) to enable +URL validity checking against RFC 2986 (hobbs) +=> http 2.5.3 + +--- Released 8.4.14, October XX, 2006 --- See ChangeLog for details --- -- cgit v0.12 From 782c6a62d40f4526b20e016d86fd09e3da3fe919 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 11 Oct 2006 21:32:12 +0000 Subject: * generic/tclPkg.c (Tcl_PkgRequireEx): Corrected crash when argument version==NULL passed in. Backport of the fix for the same problem in 8.5. --- ChangeLog | 6 ++++++ generic/tclPkg.c | 20 ++++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 17cab43..4c15ac7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-10-11 Andreas Kupries + + * generic/tclPkg.c (Tcl_PkgRequireEx): Corrected crash when + argument version==NULL passed in. Backport of the fix for the + same problem in 8.5. + 2006-10-10 Don Porter *** 8.4.14 TAGGED FOR RELEASE *** diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 052992a..8f1f413 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9.2.6 2006/09/22 18:31:54 andreas_kupries Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.7 2006/10/11 21:32:13 andreas_kupries Exp $ * * TIP #268. * Heavily rewritten to handle the extend version numbers, and extended @@ -332,15 +332,19 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) #ifdef TCL_TIP268 /* Translate between old and new API, and defer to the new function. */ - if (exact) { - ov = ExactRequirement (version); + if (version == NULL) { + res = Tcl_PkgRequireProc(interp, name, 0, NULL, clientDataPtr); } else { - ov = Tcl_NewStringObj (version,-1); - } + if (exact) { + ov = ExactRequirement (version); + } else { + ov = Tcl_NewStringObj (version,-1); + } - Tcl_IncrRefCount (ov); - res = Tcl_PkgRequireProc(interp, name, 1, &ov, clientDataPtr); - Tcl_DecrRefCount (ov); + Tcl_IncrRefCount (ov); + res = Tcl_PkgRequireProc(interp, name, 1, &ov, clientDataPtr); + Tcl_DecrRefCount (ov); + } if (res != TCL_OK) { return NULL; -- cgit v0.12 From 5aad87b2a6c4c90a1c44234386a37c54605627f4 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 16 Oct 2006 15:34:07 +0000 Subject: * changes: updates for 8.4.14 release. --- ChangeLog | 8 ++++++-- changes | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4c15ac7..4dd16cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-10-16 Daniel Steffen + + *** 8.4.14 TAGGED FOR RELEASE *** + + * changes: updates for 8.4.14 release. + 2006-10-11 Andreas Kupries * generic/tclPkg.c (Tcl_PkgRequireEx): Corrected crash when @@ -6,8 +12,6 @@ 2006-10-10 Don Porter - *** 8.4.14 TAGGED FOR RELEASE *** - * changes: changes updated for 8.4.14 release. 2006-10-06 Jeff Hobbs diff --git a/changes b/changes index 01bcccc..dd47fdb 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.46 2006/10/10 19:10:37 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.47 2006/10/16 15:34:08 das Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6391,6 +6391,8 @@ naked-fork safe on Tiger (steffen) 2006-07-20 (bug fix) Darwin: execve() works iff event loop not yet run (steffen) +2006-08-18 (bug fix) intermittent failures in TclUnixWaitForFile() (steffen) + 2006-08-18 (platform support) Darwin x86_64 (steffen) 2006-08-21 (bug fix)[1457797] Darwin 64-bit notifier hang (steffen) -- cgit v0.12 From a86ebca112b1c09a071960cdce9f6ba7d4bf7b23 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 16 Oct 2006 17:34:41 +0000 Subject: * macosx/Makefile: don't redo prebinding of non-prebound binaires. --- ChangeLog | 2 ++ macosx/Makefile | 11 +++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4dd16cd..3b4ae9a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,8 @@ * changes: updates for 8.4.14 release. + * macosx/Makefile: don't redo prebinding of non-prebound binaires. + 2006-10-11 Andreas Kupries * generic/tclPkg.c (Tcl_PkgRequireEx): Corrected crash when diff --git a/macosx/Makefile b/macosx/Makefile index 0a1869a..8ec7027 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -4,7 +4,7 @@ # uses the standard unix build system in tcl/unix (which can be used directly instead of this # if you are not using the tk/macosx projects). # -# RCS: @(#) $Id: Makefile,v 1.5.2.15 2006/04/12 00:58:05 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.16 2006/10/16 17:34:42 das Exp $ # ######################################################################################################## @@ -154,14 +154,17 @@ ifeq (${EMBEDDED_BUILD},1) @rm -f "${INSTALL_ROOT}${BINDIR}/${TCLSH}" && \ rmdir -p "${INSTALL_ROOT}${BINDIR}" 2>&- || true else -# redo prebinding - @cd ${INSTALL_ROOT}/ && \ +# redo prebinding (when not building for Mac OS X 10.4 or later only) + @if [ "`echo "$${MACOSX_DEPLOYMENT_TARGET}" | \ + awk -F '10\\.' '{print int($$2)}'`" -lt 4 -a "`echo "$${CFLAGS}" | \ + awk -F '-mmacosx-version-min=10\\.' '{print int($$2)}'`" -lt 4 ]; \ + then cd ${INSTALL_ROOT}/; \ if [ ! -d usr/lib ]; then mkdir -p usr && ln -fs /usr/lib usr/ && RM_USRLIB=1; fi; \ if [ ! -d System ]; then ln -fs /System . && RM_SYSTEM=1; fi; \ redo_prebinding -r . "./${LIBDIR}/${PRODUCT_NAME}.framework/Versions/${VERSION}/${PRODUCT_NAME}"; \ redo_prebinding -r . "./${BINDIR}/${TCLSH}"; \ if [ -n "$${RM_USRLIB:-}" ]; then rm -f usr/lib; rmdir -p usr 2>&-; fi; \ - if [ -n "$${RM_SYSTEM:-}" ]; then rm -f System; fi + if [ -n "$${RM_SYSTEM:-}" ]; then rm -f System; fi; fi # install tclsh symbolic link @ln -fs ${TCLSH} ${INSTALL_ROOT}${BINDIR}/tclsh endif -- cgit v0.12 From f42d19dc92935d2d2eb8f06db5de1b32e1560b31 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 16 Oct 2006 18:52:29 +0000 Subject: Set release date --- changes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changes b/changes index dd47fdb..0f66146 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.47 2006/10/16 15:34:08 das Exp $ +RCS: @(#) $Id: changes,v 1.79.2.48 2006/10/16 18:52:29 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6419,4 +6419,4 @@ naked-fork safe on Tiger (steffen) URL validity checking against RFC 2986 (hobbs) => http 2.5.3 ---- Released 8.4.14, October XX, 2006 --- See ChangeLog for details --- +--- Released 8.4.14, October 19, 2006 --- See ChangeLog for details --- -- cgit v0.12 From 95f8b149514039db25023ac2a1692205deb4314b Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 17 Oct 2006 04:36:43 +0000 Subject: * generic/tclIOUtil.c: Cleaned up some code flagged by a * generic/tclInt.h: `make checkexports` test. * win/tclWin32Dll.c: * win/tclWinFile.c: --- ChangeLog | 7 +++++++ generic/tclIOUtil.c | 23 +++++++++++------------ generic/tclInt.h | 3 ++- win/tclWin32Dll.c | 8 ++++---- win/tclWinFile.c | 4 +--- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3b4ae9a..dbb6349 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-10-17 Don Porter + + * generic/tclIOUtil.c: Cleaned up some code flagged by a + * generic/tclInt.h: `make checkexports` test. + * win/tclWin32Dll.c: + * win/tclWinFile.c: + 2006-10-16 Daniel Steffen *** 8.4.14 TAGGED FOR RELEASE *** diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 7ee2583..61cd561 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.31 2006/08/30 17:48:48 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.32 2006/10/17 04:36:44 dgp Exp $ */ #include "tclInt.h" @@ -86,13 +86,13 @@ extern int theFilesystemEpoch; /* * Private functions for use in this file */ -Tcl_PathType FSGetPathType _ANSI_ARGS_((Tcl_Obj *pathObjPtr, +static Tcl_PathType FSGetPathType _ANSI_ARGS_((Tcl_Obj *pathObjPtr, Tcl_Filesystem **filesystemPtrPtr, int *driveNameLengthPtr)); -Tcl_PathType GetPathType _ANSI_ARGS_((Tcl_Obj *pathObjPtr, +static Tcl_PathType GetPathType _ANSI_ARGS_((Tcl_Obj *pathObjPtr, Tcl_Filesystem **filesystemPtrPtr, int *driveNameLengthPtr, Tcl_Obj **driveNameRef)); -Tcl_FSPathInFilesystemProc NativePathInFilesystem; +static Tcl_FSPathInFilesystemProc NativePathInFilesystem; static Tcl_Obj* TclFSNormalizeAbsolutePath _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj *pathPtr, ClientData *clientDataPtr)); @@ -373,7 +373,6 @@ TCL_DECLARE_MUTEX(obsoleteFsHookMutex) */ static Tcl_FSFilesystemSeparatorProc NativeFilesystemSeparator; static Tcl_FSFreeInternalRepProc NativeFreeInternalRep; -Tcl_FSDupInternalRepProc NativeDupInternalRep; static Tcl_FSCreateInternalRepProc NativeCreateNativeRep; static Tcl_FSFileAttrStringsProc NativeFileAttrStrings; static Tcl_FSFileAttrsGetProc NativeFileAttrsGet; @@ -420,7 +419,7 @@ Tcl_Filesystem tclNativeFilesystem = { sizeof(Tcl_Filesystem), TCL_FILESYSTEM_VERSION_1, &NativePathInFilesystem, - &NativeDupInternalRep, + &TclNativeDupInternalRep, &NativeFreeInternalRep, &TclpNativeToNormalized, &NativeCreateNativeRep, @@ -2966,7 +2965,7 @@ Tcl_FSLoadFile(interp, pathPtr, sym1, sym2, proc1Ptr, proc2Ptr, } else { /* We need the native rep */ tvdlPtr->divertedFileNativeRep = - NativeDupInternalRep(Tcl_FSGetInternalRep(copyToPtr, + TclNativeDupInternalRep(Tcl_FSGetInternalRep(copyToPtr, copyFsPtr)); /* * We don't need or want references to the copied @@ -3437,7 +3436,7 @@ TclFSInternalToNormalized(fromFilesystem, clientData, fsRecPtrPtr) *---------------------------------------------------------------------- */ -Tcl_PathType +static Tcl_PathType GetPathType(pathObjPtr, filesystemPtrPtr, driveNameLengthPtr, driveNameRef) Tcl_Obj *pathObjPtr; Tcl_Filesystem **filesystemPtrPtr; @@ -4097,7 +4096,7 @@ TclpNativeToNormalized(clientData) /* *--------------------------------------------------------------------------- * - * NativeDupInternalRep -- + * TclNativeDupInternalRep -- * * Duplicate the native representation. * @@ -4111,7 +4110,7 @@ TclpNativeToNormalized(clientData) *--------------------------------------------------------------------------- */ ClientData -NativeDupInternalRep(clientData) +TclNativeDupInternalRep(clientData) ClientData clientData; { ClientData copy; @@ -4723,7 +4722,7 @@ Tcl_FSGetPathType(pathObjPtr) *---------------------------------------------------------------------- */ -Tcl_PathType +static Tcl_PathType FSGetPathType(pathObjPtr, filesystemPtrPtr, driveNameLengthPtr) Tcl_Obj *pathObjPtr; Tcl_Filesystem **filesystemPtrPtr; @@ -6419,7 +6418,7 @@ UpdateStringOfFsPath(objPtr) * *--------------------------------------------------------------------------- */ -int +static int NativePathInFilesystem(pathPtr, clientDataPtr) Tcl_Obj *pathPtr; ClientData *clientDataPtr; diff --git a/generic/tclInt.h b/generic/tclInt.h index b5328ac..27681f8 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.24 2006/09/22 22:31:34 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.25 2006/10/17 04:36:44 dgp Exp $ */ #ifndef _TCLINT @@ -1812,6 +1812,7 @@ EXTERN int TclpMatchInDirectory _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *resultPtr, Tcl_Obj *pathPtr, CONST char *pattern, Tcl_GlobTypeData *types)); EXTERN Tcl_Obj* TclpObjGetCwd _ANSI_ARGS_((Tcl_Interp *interp)); +EXTERN Tcl_FSDupInternalRepProc TclNativeDupInternalRep; EXTERN Tcl_Obj* TclpObjLink _ANSI_ARGS_((Tcl_Obj *pathPtr, Tcl_Obj *toPtr, int linkType)); EXTERN int TclpObjChdir _ANSI_ARGS_((Tcl_Obj *pathPtr)); diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index c107396..32fca20 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.9 2006/03/10 10:35:24 vincentdarley Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.24.2.10 2006/10/17 04:36:45 dgp Exp $ */ #include "tclWinInt.h" @@ -230,7 +230,7 @@ MountPointMap *driveLetterLookup = NULL; TCL_DECLARE_MUTEX(mountPointMap) /* We will need this below */ -extern Tcl_FSDupInternalRepProc NativeDupInternalRep; +extern Tcl_FSDupInternalRepProc TclNativeDupInternalRep; #ifdef __WIN32__ #ifndef STATIC_BUILD @@ -926,7 +926,7 @@ TclWinDriveLetterForVolMountPoint(CONST WCHAR *mountPoint) } if (!alreadyStored) { dlPtr2 = (MountPointMap*) ckalloc(sizeof(MountPointMap)); - dlPtr2->volumeName = NativeDupInternalRep(Target); + dlPtr2->volumeName = TclNativeDupInternalRep(Target); dlPtr2->driveLetter = 'A' + (drive[0] - L'A'); dlPtr2->nextPtr = driveLetterLookup; driveLetterLookup = dlPtr2; @@ -947,7 +947,7 @@ TclWinDriveLetterForVolMountPoint(CONST WCHAR *mountPoint) * up each time. */ dlPtr2 = (MountPointMap*) ckalloc(sizeof(MountPointMap)); - dlPtr2->volumeName = NativeDupInternalRep((ClientData)mountPoint); + dlPtr2->volumeName = TclNativeDupInternalRep((ClientData)mountPoint); dlPtr2->driveLetter = -1; dlPtr2->nextPtr = driveLetterLookup; driveLetterLookup = dlPtr2; diff --git a/win/tclWinFile.c b/win/tclWinFile.c index f0e07f2..c87edc3 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.17 2006/10/01 21:51:34 patthoyts Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.18 2006/10/17 04:36:45 dgp Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -172,8 +172,6 @@ typedef NET_API_STATUS NET_API_FUNCTION NETAPIBUFFERFREEPROC typedef NET_API_STATUS NET_API_FUNCTION NETGETDCNAMEPROC (LPWSTR servername, LPWSTR domainname, LPBYTE *bufptr); -extern Tcl_FSDupInternalRepProc NativeDupInternalRep; - /* * Declarations for local procedures defined in this file: */ -- cgit v0.12 From 807c24b4515b64d6848fd06777d50ea4650ec969 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 18 Oct 2006 08:49:32 +0000 Subject: Ensure builds with VC6 without Platform SDK and Pickup MACHINE from environment to make life easier on Windows non-x86 platforms. --- ChangeLog | 5 +++++ win/nmakehlp.c | 24 ++++++++++++++---------- win/rules.vc | 6 +++++- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index dbb6349..70414f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-10-18 Pat Thoyts + + * win/nmakehlp.c: Ensure builds with VC6 without Platform SDK. + * win/rules.vc: Pickup MACHINE from environment. + 2006-10-17 Don Porter * generic/tclIOUtil.c: Cleaned up some code flagged by a diff --git a/win/nmakehlp.c b/win/nmakehlp.c index 5f31314..15a8edf 100644 --- a/win/nmakehlp.c +++ b/win/nmakehlp.c @@ -10,22 +10,26 @@ * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * ---------------------------------------------------------------------------- - * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.3 2006/10/06 14:04:49 patthoyts Exp $ + * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.4 2006/10/18 08:49:33 patthoyts Exp $ * ---------------------------------------------------------------------------- */ #define _CRT_SECURE_NO_DEPRECATE #include -#include #pragma comment (lib, "user32.lib") #pragma comment (lib, "kernel32.lib") -#pragma comment (lib, "shlwapi.lib") #include #include #if defined(_M_IA64) || defined(_M_AMD64) #pragma comment(lib, "bufferoverflowU") #endif +/* ISO hack for dumb VC++ */ +#ifdef _MSC_VER +#define snprintf _snprintf +#endif + + /* protos */ @@ -77,7 +81,7 @@ main( switch (*(argv[1]+1)) { case 'c': if (argc != 3) { - chars = wnsprintf(msg, sizeof(msg)-1, + chars = snprintf(msg, sizeof(msg) - 1, "usage: %s -c \n" "Tests for whether cl.exe supports an option\n" "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]); @@ -88,7 +92,7 @@ main( return CheckForCompilerFeature(argv[2]); case 'l': if (argc != 3) { - chars = wnsprintf(msg, sizeof(msg) - 1, + chars = snprintf(msg, sizeof(msg) - 1, "usage: %s -l \n" "Tests for whether link.exe supports an option\n" "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]); @@ -99,7 +103,7 @@ main( return CheckForLinkerFeature(argv[2]); case 'f': if (argc == 2) { - chars = wnsprintf(msg, sizeof(msg) - 1, + chars = snprintf(msg, sizeof(msg) - 1, "usage: %s -f \n" "Find a substring within another\n" "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]); @@ -117,7 +121,7 @@ main( } case 'g': if (argc == 2) { - chars = wnsprintf(msg, sizeof(msg) - 1, + chars = snprintf(msg, sizeof(msg) - 1, "usage: %s -g \n" "grep for a #define\n" "exitcodes: integer of the found string (no decimals)\n", @@ -129,7 +133,7 @@ main( return GrepForDefine(argv[2], argv[3]); } } - chars = wnsprintf(msg, sizeof(msg) - 1, + chars = snprintf(msg, sizeof(msg) - 1, "usage: %s -c|-l|-f ...\n" "This is a little helper app to equalize shell differences between WinNT and\n" "Win9x and get nmake.exe to accomplish its job.\n", @@ -217,7 +221,7 @@ CheckForCompilerFeature( if (!ok) { DWORD err = GetLastError(); - int chars = wsprintf(msg, + int chars = snprintf(msg, sizeof(msg) - 1, "Tried to launch: \"%s\", but got error [%u]: ", cmdline, err); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS| @@ -343,7 +347,7 @@ CheckForLinkerFeature( if (!ok) { DWORD err = GetLastError(); - int chars = wnsprintf(msg, sizeof(msg) - 1, + int chars = snprintf(msg, sizeof(msg) - 1, "Tried to launch: \"%s\", but got error [%u]: ", cmdline, err); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS| diff --git a/win/rules.vc b/win/rules.vc index 045aebc..cc43b7b 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -11,7 +11,7 @@ # Copyright (c) 2003-2006 Patrick Thoyts # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: rules.vc,v 1.11.2.4 2006/10/06 14:04:49 patthoyts Exp $ +# RCS: @(#) $Id: rules.vc,v 1.11.2.5 2006/10/18 08:49:33 patthoyts Exp $ #------------------------------------------------------------------------------ !ifndef _RULES_VC @@ -31,7 +31,11 @@ _INSTALLDIR = $(INSTALLDIR:/=\) !endif !ifndef MACHINE +!if "$(CPU)" == "" MACHINE = IX86 +!else +MACHINE = $(CPU) +!endif !endif !ifndef CFG_ENCODING -- cgit v0.12 From 0f441713057a390c4a919aad2aefcd69777e8666 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 18 Oct 2006 14:29:42 +0000 Subject: advance 8.4.14 tag --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 70414f1..7e232fa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2006-10-18 Pat Thoyts + *** 8.4.14 TAGGED FOR RELEASE *** + * win/nmakehlp.c: Ensure builds with VC6 without Platform SDK. * win/rules.vc: Pickup MACHINE from environment. @@ -12,8 +14,6 @@ 2006-10-16 Daniel Steffen - *** 8.4.14 TAGGED FOR RELEASE *** - * changes: updates for 8.4.14 release. * macosx/Makefile: don't redo prebinding of non-prebound binaires. -- cgit v0.12 From 17c30a6f1929c5d3702ba39727616c8ba5f8768d Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 23 Oct 2006 17:53:22 +0000 Subject: * README: Bump version number to 8.4.15 * generic/tcl.h: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf-2.13 * win/configure: --- ChangeLog | 13 +++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7e232fa..caf797b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2006-10-23 Don Porter + + * README: Bump version number to 8.4.15 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf-2.13 + * win/configure: + 2006-10-18 Pat Thoyts *** 8.4.14 TAGGED FOR RELEASE *** diff --git a/README b/README index 7d13d81..f3dd44a 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.14 source distribution. + This is the Tcl 8.4.15 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.17 2006/05/04 13:09:16 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.18 2006/10/23 17:53:23 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 696076b..128b83c 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.29 2006/10/05 21:24:56 hobbs Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.30 2006/10/23 17:53:26 dgp Exp $ */ #ifndef _TCL @@ -59,10 +59,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 14 +#define TCL_RELEASE_SERIAL 15 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.14" +#define TCL_PATCH_LEVEL "8.4.15" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index df68815..7918eca 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.14 + Disk Label=tcl8.4.15 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 0add57b..33f3374 100755 --- a/unix/configure +++ b/unix/configure @@ -554,7 +554,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".14" +TCL_PATCH_LEVEL=".15" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 4a3b7ae..656e4c9 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.31 2006/09/12 22:52:10 andreas_kupries Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.32 2006/10/23 17:53:27 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".14" +TCL_PATCH_LEVEL=".15" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index ef7b5cd..bce0c4c 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.14 2006/05/04 13:09:19 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.15 2006/10/23 17:53:28 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.14 +%define version 8.4.15 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index 145e6af..ddcdc78 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.14 2006/05/04 13:09:19 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.15 2006/10/23 17:53:28 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.14 for +This directory contains the binary distribution of Tcl/Tk 8.4.15 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index e2c2924..47427bb 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".14" +TCL_PATCH_LEVEL=".15" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 31b9532..2d604fa 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.18 2006/05/04 13:09:19 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.19 2006/10/23 17:53:28 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".14" +TCL_PATCH_LEVEL=".15" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 04f21eae9b2255616098f9c0ca56693ebd21bc5e Mon Sep 17 00:00:00 2001 From: patthoyts Date: Tue, 31 Oct 2006 15:17:18 +0000 Subject: Fix bug #1582769 build with VC2003 and correct i386 arch. --- ChangeLog | 4 ++++ win/rules.vc | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index caf797b..16bfb58 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-10-31 Pat Thoyts + + * rules.vc: Fix bug #1582769 build with VC2003 and correct i386 arch. + 2006-10-23 Don Porter * README: Bump version number to 8.4.15 diff --git a/win/rules.vc b/win/rules.vc index cc43b7b..91fa444 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -11,7 +11,7 @@ # Copyright (c) 2003-2006 Patrick Thoyts # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: rules.vc,v 1.11.2.5 2006/10/18 08:49:33 patthoyts Exp $ +# RCS: @(#) $Id: rules.vc,v 1.11.2.6 2006/10/31 15:17:20 patthoyts Exp $ #------------------------------------------------------------------------------ !ifndef _RULES_VC @@ -31,7 +31,7 @@ _INSTALLDIR = $(INSTALLDIR:/=\) !endif !ifndef MACHINE -!if "$(CPU)" == "" +!if "$(CPU)" == "" || "$(CPU)" == "i386" MACHINE = IX86 !else MACHINE = $(CPU) @@ -127,9 +127,12 @@ DEBUGFLAGS = $(DEBUGFLAGS) -GZ COMPILERFLAGS =-W3 +# In v13 -GL and -YX are incompatible. !if [nmakehlp -c -YX] +!if ![nmakehlp -c -GL] OPTIMIZATIONS = $(OPTIMIZATIONS) -YX !endif +!endif !if "$(MACHINE)" == "IX86" ### test for pentium errata -- cgit v0.12 From 05dc17a9876e3f7fedbf33d15d7302fa7a5a278d Mon Sep 17 00:00:00 2001 From: das Date: Tue, 31 Oct 2006 22:25:04 +0000 Subject: * generic/tclEnv.c (Darwin): mark _environ symbol as unexported. --- ChangeLog | 4 ++++ generic/tclEnv.c | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 16bfb58..7c3bc20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-11-01 Daniel Steffen + + * generic/tclEnv.c (Darwin): mark _environ symbol as unexported. + 2006-10-31 Pat Thoyts * rules.vc: Fix bug #1582769 build with VC2003 and correct i386 arch. diff --git a/generic/tclEnv.c b/generic/tclEnv.c index 947d397..a7c7c39 100644 --- a/generic/tclEnv.c +++ b/generic/tclEnv.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEnv.c,v 1.20.2.2 2005/10/05 08:02:20 hobbs Exp $ + * RCS: @(#) $Id: tclEnv.c,v 1.20.2.3 2006/10/31 22:25:08 das Exp $ */ #include "tclInt.h" @@ -43,6 +43,7 @@ static int environSize = 0; /* Non-zero means that the environ array was */ #if defined(__APPLE__) && defined(__DYNAMIC__) #include +__private_extern__ char **environ; char **environ = NULL; #endif -- cgit v0.12 From 3e6a8effaded504ae2e5c836620c08eb5b4f0e68 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sat, 4 Nov 2006 01:37:55 +0000 Subject: * generic/tclBasic.c (TEOVI): fix por possible leak of a Command in the presence of execution traces that delete it. * generic/tclBasic.c (TEOVI): * tests/trace.test (trace-21.11): fix for [Bug 1590232], execution traces may cause a second command resolution in the wrong namespace. --- ChangeLog | 10 ++++++++++ generic/tclBasic.c | 29 +++++++++++++++++------------ tests/trace.test | 20 +++++++++++++++++++- 3 files changed, 46 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7c3bc20..c2203c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-11-03 Miguel Sofer + + * generic/tclBasic.c (TEOVI): fix por possible leak of a Command + in the presence of execution traces that delete it. + + * generic/tclBasic.c (TEOVI): + * tests/trace.test (trace-21.11): fix for [Bug 1590232], execution + traces may cause a second command resolution in the wrong + namespace. + 2006-11-01 Daniel Steffen * generic/tclEnv.c (Darwin): mark _environ symbol as unexported. diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 9807a19..f55c531 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.24 2006/09/25 17:27:31 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.25 2006/11/04 01:37:55 msofer Exp $ */ #include "tclInt.h" @@ -3008,21 +3008,23 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) return TCL_OK; } - /* Configure evaluation context to match the requested flags */ - savedVarFramePtr = iPtr->varFramePtr; - if (flags & TCL_EVAL_GLOBAL) { - iPtr->varFramePtr = NULL; - } else if ((flags & TCL_EVAL_INVOKE) && iPtr->varFramePtr) { - savedNsPtr = iPtr->varFramePtr->nsPtr; - iPtr->varFramePtr->nsPtr = iPtr->globalNsPtr; - } /* * If any execution traces rename or delete the current command, * we may need (at most) two passes here. */ + + savedVarFramePtr = iPtr->varFramePtr; while (1) { + /* Configure evaluation context to match the requested flags */ + if (flags & TCL_EVAL_GLOBAL) { + iPtr->varFramePtr = NULL; + } else if ((flags & TCL_EVAL_INVOKE) && iPtr->varFramePtr) { + savedNsPtr = iPtr->varFramePtr->nsPtr; + iPtr->varFramePtr->nsPtr = iPtr->globalNsPtr; + } + /* * Find the procedure to execute this command. If there isn't one, * then see if there is a command "unknown". If so, create a new @@ -3067,7 +3069,9 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) */ if ((checkTraces) && (command != NULL)) { int cmdEpoch = cmdPtr->cmdEpoch; - cmdPtr->refCount++; + int newEpoch; + + cmdPtr->refCount++; /* * If the first set of traces modifies/deletes the command or * any existing traces, then the set checkTraces to 0 and @@ -3082,8 +3086,9 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) traceCode = TclCheckExecutionTraces(interp, command, length, cmdPtr, code, TCL_TRACE_ENTER_EXEC, objc, objv); } - cmdPtr->refCount--; - if (cmdEpoch != cmdPtr->cmdEpoch) { + newEpoch = cmdPtr->cmdEpoch; + TclCleanupCommand(cmdPtr); + if (cmdEpoch != newEpoch) { /* The command has been modified in some way */ checkTraces = 0; continue; diff --git a/tests/trace.test b/tests/trace.test index a85bda2..32e1b4e 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.16 2006/04/11 14:37:05 dgp Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.17 2006/11/04 01:37:56 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1624,6 +1624,24 @@ test trace-21.10 {trace execution: TCL_EVAL_GLOBAL} testevalobjv { set ::info } {SUCCESS 1 SUCCESS 1} +test trace-21.11 {trace execution and alias} -setup { + set res {} + proc ::x {} {return ::} + namespace eval a {} + proc ::a::x {} {return ::a} + interp alias {} y {} x +} -body { + lappend res [namespace eval ::a y] + trace add execution ::x enter { + rename ::x {} + proc ::x {} {return ::} + #} + lappend res [namespace eval ::a y] +} -cleanup { + namespace delete a + rename ::x {} +} -result {:: ::} + proc factorial {n} { if {$n != 1} { return [expr {$n * [factorial [expr {$n -1 }]]}] } return 1 -- cgit v0.12 From ecfa2d1cbd6cf755e07eaf5e5e0279fa3aeeb54d Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 7 Nov 2006 17:29:03 +0000 Subject: * unix/tclUnixFCmd.c (CopyFile): [SF Tcl Bug 1586470]. Added code to fall back to a hardwired default block size should the filesystem report a bogus value. --- ChangeLog | 6 ++++++ unix/tclUnixFCmd.c | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c2203c2..24f3409 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-11-07 Andreas Kupries + + * unix/tclUnixFCmd.c (CopyFile): [SF Tcl Bug 1586470]. Added code + to fall back to a hardwired default block size should the + filesystem report a bogus value. + 2006-11-03 Miguel Sofer * generic/tclBasic.c (TEOVI): fix por possible leak of a Command diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index 17432cc..eb48103 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.13 2006/09/07 18:49:28 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.14 2006/11/07 17:29:04 andreas_kupries Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -506,6 +506,16 @@ CopyFile(src, dst, statBufPtr) #endif #endif + /* [SF Tcl Bug 1586470] Even if we HAVE_ST_BLKSIZE, there are + * filesystems which report a bogus value for the blocksize. An + * example is the Andrew Filesystem (afs), reporting a blocksize + * of 0. When detecting such a situation we now simply fall back + * to a hardwired default size. + */ + + if (blockSize <= 0) { + blockSize = 4096; + } buffer = ckalloc(blockSize); while (1) { nread = read(srcFd, buffer, blockSize); -- cgit v0.12 From 6da4a8974f27a03af1fd2ef3ded24be102f381bd Mon Sep 17 00:00:00 2001 From: das Date: Sun, 26 Nov 2006 06:05:38 +0000 Subject: * tcl.m4 (Linux): --enable-64bit support. [Patch 1597389], [Bug 1230558] * configure: autoconf-2.13 --- ChangeLog | 11 +- unix/configure | 686 ++++++++++++++++++++++++++++++--------------------------- unix/tcl.m4 | 14 +- 3 files changed, 382 insertions(+), 329 deletions(-) diff --git a/ChangeLog b/ChangeLog index 24f3409..9e7a5cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,13 @@ +2006-11-26 Daniel Steffen + + * tcl.m4 (Linux): --enable-64bit support. [Patch 1597389], [Bug 1230558] + * configure: autoconf-2.13 + 2006-11-07 Andreas Kupries - * unix/tclUnixFCmd.c (CopyFile): [SF Tcl Bug 1586470]. Added code - to fall back to a hardwired default block size should the - filesystem report a bogus value. + * unix/tclUnixFCmd.c (CopyFile): Added code to fall back to a + hardwired default block size should the filesystem report a bogus + value. [Bug 1586470] 2006-11-03 Miguel Sofer diff --git a/unix/configure b/unix/configure index 33f3374..cdd213a 100755 --- a/unix/configure +++ b/unix/configure @@ -3060,7 +3060,7 @@ fi #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" if test "$have_dl" = yes; then - SHLIB_LD="${CC} -shared" + SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}' DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LDFLAGS="$LDFLAGS -Wl,--export-dynamic" @@ -3109,6 +3109,42 @@ fi if test "`uname -m`" = "alpha" ; then CFLAGS="$CFLAGS -mieee" fi + if test $do64bit = yes; then + echo $ac_n "checking if compiler accepts -m64 flag""... $ac_c" 1>&6 +echo "configure:3115: checking if compiler accepts -m64 flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_cc_m64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_cflags=$CFLAGS + CFLAGS="$CFLAGS -m64" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_cc_m64=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_cc_m64=no +fi +rm -f conftest* + CFLAGS=$hold_cflags +fi + +echo "$ac_t""$tcl_cv_cc_m64" 1>&6 + if test $tcl_cv_cc_m64 = yes; then + CFLAGS="$CFLAGS -m64" + do64bit_ok=yes + fi + fi # The combo of gcc + glibc has a bug related # to inlining of functions like strtod(). The @@ -3143,17 +3179,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3147: checking for dld.h" >&5 +echo "configure:3183: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3157: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3221,17 +3257,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3225: checking for dlfcn.h" >&5 +echo "configure:3261: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3258,13 +3294,13 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3262: checking for ELF" >&5 +echo "configure:3298: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:3347: checking for ELF" >&5 +echo "configure:3383: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3434: checking if ld accepts -single_module flag" >&5 +echo "configure:3470: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3438,14 +3474,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3472,7 +3508,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3476: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3512: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3480,14 +3516,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3510,7 +3546,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3514: checking whether to use CoreFoundation" >&5 +echo "configure:3550: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3522,7 +3558,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3526: checking for CoreFoundation.framework" >&5 +echo "configure:3562: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3536,14 +3572,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3568,7 +3604,7 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3572: checking for 64-bit CoreFoundation" >&5 +echo "configure:3608: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3576,14 +3612,14 @@ else hold_cflags=$CFLAGS CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -3896,7 +3932,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3900: checking for ld accepts -Bexport flag" >&5 +echo "configure:3936: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3904,14 +3940,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -3958,13 +3994,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3962: checking sys/exec.h" >&5 +echo "configure:3998: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -3982,7 +4018,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4002,13 +4038,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4006: checking a.out.h" >&5 +echo "configure:4042: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4026,7 +4062,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4066: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4046,13 +4082,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4050: checking sys/exec_aout.h" >&5 +echo "configure:4086: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4070,7 +4106,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4110: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4223,7 +4259,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4227: checking for build with symbols" >&5 +echo "configure:4263: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4284,21 +4320,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4288: checking for required early compiler flags" >&5 +echo "configure:4324: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4306,7 +4342,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4314,7 +4350,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4318: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4354: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4341,14 +4377,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4356,7 +4392,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4364,7 +4400,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4404: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4391,14 +4427,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4406,7 +4442,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4414,7 +4450,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4445,7 +4481,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4449: checking for 64-bit integer type" >&5 +echo "configure:4485: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4453,14 +4489,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4500: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4474,7 +4510,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4508,13 +4544,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4512: checking for struct dirent64" >&5 +echo "configure:4548: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4522,7 +4558,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4543,13 +4579,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4547: checking for struct stat64" >&5 +echo "configure:4583: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4557,7 +4593,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4580,12 +4616,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4584: checking for $ac_func" >&5 +echo "configure:4620: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4633,13 +4669,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4637: checking for off64_t" >&5 +echo "configure:4673: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4647,7 +4683,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4687: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4679,14 +4715,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4683: checking whether byte ordering is bigendian" >&5 +echo "configure:4719: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4697,11 +4733,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4712,7 +4748,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4752: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4732,7 +4768,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4778,12 +4814,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4782: checking for $ac_func" >&5 +echo "configure:4818: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4840,12 +4876,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4844: checking for $ac_func" >&5 +echo "configure:4880: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4895,12 +4931,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4899: checking for strerror" >&5 +echo "configure:4935: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4947,12 +4983,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4951: checking for getwd" >&5 +echo "configure:4987: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -4999,12 +5035,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5003: checking for wait3" >&5 +echo "configure:5039: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5051,12 +5087,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5055: checking for uname" >&5 +echo "configure:5091: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5110,12 +5146,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5114: checking for realpath" >&5 +echo "configure:5150: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5168,12 +5204,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5172: checking for getpwuid_r" >&5 +echo "configure:5208: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5212,13 +5248,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5216: checking for getpwuid_r with 5 args" >&5 +echo "configure:5252: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5235,7 +5271,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5275: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5256,13 +5292,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5260: checking for getpwuid_r with 4 args" >&5 +echo "configure:5296: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5279,7 +5315,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5283: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5312,12 +5348,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5316: checking for getpwnam_r" >&5 +echo "configure:5352: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5356,13 +5392,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5360: checking for getpwnam_r with 5 args" >&5 +echo "configure:5396: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5379,7 +5415,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5419: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5400,13 +5436,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5404: checking for getpwnam_r with 4 args" >&5 +echo "configure:5440: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5423,7 +5459,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5427: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5463: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5456,12 +5492,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5460: checking for getgrgid_r" >&5 +echo "configure:5496: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5500,13 +5536,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5504: checking for getgrgid_r with 5 args" >&5 +echo "configure:5540: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5523,7 +5559,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5544,13 +5580,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5548: checking for getgrgid_r with 4 args" >&5 +echo "configure:5584: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5567,7 +5603,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5600,12 +5636,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5604: checking for getgrnam_r" >&5 +echo "configure:5640: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5644,13 +5680,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5648: checking for getgrnam_r with 5 args" >&5 +echo "configure:5684: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5667,7 +5703,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5688,13 +5724,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5692: checking for getgrnam_r with 4 args" >&5 +echo "configure:5728: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5711,7 +5747,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5751: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5771,12 +5807,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5775: checking for gethostbyname_r" >&5 +echo "configure:5811: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5815,13 +5851,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5819: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5855: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5838,7 +5874,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5878: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5859,13 +5895,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5863: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5899: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5882,7 +5918,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -5903,13 +5939,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:5907: checking for gethostbyname_r with 3 args" >&5 +echo "configure:5943: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5924,7 +5960,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -5958,12 +5994,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:5962: checking for gethostbyaddr_r" >&5 +echo "configure:5998: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6002,13 +6038,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6006: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6042: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6028,7 +6064,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6032: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6049,13 +6085,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6053: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6089: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6075,7 +6111,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6121,17 +6157,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6125: checking for $ac_hdr" >&5 +echo "configure:6161: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6158,7 +6194,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6162: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6198: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6167,7 +6203,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6182,7 +6218,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6199,7 +6235,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6213,7 +6249,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6231,7 +6267,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6246,7 +6282,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6264,7 +6300,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6281,7 +6317,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6299,7 +6335,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6315,7 +6351,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6333,7 +6369,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6350,7 +6386,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6393,20 +6429,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6397: checking for fd_set in sys/types" >&5 +echo "configure:6433: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6410: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6446: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6422,13 +6458,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6426: checking for fd_mask in sys/select" >&5 +echo "configure:6462: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6465,12 +6501,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6469: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6505: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6478,7 +6514,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6482: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6503,17 +6539,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6507: checking for $ac_hdr" >&5 +echo "configure:6543: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6540,12 +6576,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6544: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6580: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6554,7 +6590,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6575,12 +6611,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6579: checking for tm_zone in struct tm" >&5 +echo "configure:6615: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6588,7 +6624,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6592: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6628: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6608,12 +6644,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6612: checking for tzname" >&5 +echo "configure:6648: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6623,7 +6659,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6648,12 +6684,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6652: checking for $ac_func" >&5 +echo "configure:6688: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6702,20 +6738,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6706: checking tm_tzadj in struct tm" >&5 +echo "configure:6742: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6755: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6736,20 +6772,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6740: checking tm_gmtoff in struct tm" >&5 +echo "configure:6776: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6753: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6774,13 +6810,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6778: checking long timezone variable" >&5 +echo "configure:6814: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6789,7 +6825,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6812,13 +6848,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6816: checking time_t timezone variable" >&5 +echo "configure:6852: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6827,7 +6863,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6854,12 +6890,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6858: checking for st_blksize in struct stat" >&5 +echo "configure:6894: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6867,7 +6903,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6907: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6888,12 +6924,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6892: checking for fstatfs" >&5 +echo "configure:6928: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6945,7 +6981,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6949: checking for 8-bit clean memcmp" >&5 +echo "configure:6985: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6953,7 +6989,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -6987,12 +7023,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:6991: checking for memmove" >&5 +echo "configure:7027: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7048,7 +7084,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7052: checking proper strstr implementation" >&5 +echo "configure:7088: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7057,7 +7093,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7093,12 +7129,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7097: checking for strtoul" >&5 +echo "configure:7133: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7143,7 +7179,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7147: checking proper strtoul implementation" >&5 +echo "configure:7183: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7152,7 +7188,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7197,12 +7233,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7201: checking for strtod" >&5 +echo "configure:7237: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7247,7 +7283,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7251: checking proper strtod implementation" >&5 +echo "configure:7287: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7256,7 +7292,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7304,12 +7340,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7308: checking for strtod" >&5 +echo "configure:7344: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7354,7 +7390,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7358: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7394: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7363,7 +7399,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7417,12 +7453,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7421: checking for ANSI C header files" >&5 +echo "configure:7457: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7430,7 +7466,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7434: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7447,7 +7483,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7465,7 +7501,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7486,7 +7522,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7497,7 +7533,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7521,12 +7557,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7525: checking for mode_t" >&5 +echo "configure:7561: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7554,12 +7590,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7558: checking for pid_t" >&5 +echo "configure:7594: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7587,12 +7623,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7591: checking for size_t" >&5 +echo "configure:7627: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7620,12 +7656,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7624: checking for uid_t in sys/types.h" >&5 +echo "configure:7660: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7655,13 +7691,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7659: checking for socklen_t" >&5 +echo "configure:7695: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7700,12 +7736,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7704: checking for opendir" >&5 +echo "configure:7740: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7761,13 +7797,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7765: checking union wait" >&5 +echo "configure:7801: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7779,7 +7815,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7806,12 +7842,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7810: checking for strncasecmp" >&5 +echo "configure:7846: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7856,7 +7892,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7860: checking for strncasecmp in -lsocket" >&5 +echo "configure:7896: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7864,7 +7900,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7899,7 +7935,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7903: checking for strncasecmp in -linet" >&5 +echo "configure:7939: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7907,7 +7943,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7956,12 +7992,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7960: checking for BSDgettimeofday" >&5 +echo "configure:7996: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8006,12 +8042,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8010: checking for gettimeofday" >&5 +echo "configure:8046: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8061,13 +8097,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8065: checking for gettimeofday declaration" >&5 +echo "configure:8101: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8098,14 +8134,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8102: checking whether char is unsigned" >&5 +echo "configure:8138: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8161,13 +8197,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8165: checking signed char declarations" >&5 +echo "configure:8201: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8202,7 +8238,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8206: checking for a putenv() that copies the buffer" >&5 +echo "configure:8242: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8211,7 +8247,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8233,7 +8269,7 @@ else } EOF -if { (eval echo configure:8237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8273,17 +8309,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8277: checking for langinfo.h" >&5 +echo "configure:8313: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8307,21 +8343,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8311: checking whether to use nl_langinfo" >&5 +echo "configure:8347: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8361: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8354,17 +8390,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8358: checking for $ac_hdr" >&5 +echo "configure:8394: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8393,12 +8429,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8397: checking for $ac_func" >&5 +echo "configure:8433: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8450,17 +8486,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8454: checking for $ac_hdr" >&5 +echo "configure:8490: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8489,12 +8525,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8493: checking for $ac_func" >&5 +echo "configure:8529: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8544,12 +8580,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8548: checking for $ac_func" >&5 +echo "configure:8584: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8613,17 +8649,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8617: checking for $ac_hdr" >&5 +echo "configure:8653: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8627: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8651,14 +8687,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8655: checking if weak import is available" >&5 +echo "configure:8691: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8702,13 +8738,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8706: checking for fts" >&5 +echo "configure:8742: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8723,7 +8759,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8755,17 +8791,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8759: checking for $ac_hdr" >&5 +echo "configure:8795: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8805: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8795,17 +8831,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8799: checking for $ac_hdr" >&5 +echo "configure:8835: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8845: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8833,7 +8869,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8837: checking system version" >&5 +echo "configure:8873: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8864,7 +8900,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8868: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8904: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -8927,7 +8963,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:8931: checking how to package libraries" >&5 +echo "configure:8967: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 8c122b3..f3d9f1b 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -311,6 +311,7 @@ AC_DEFUN([SC_LOAD_TCLCONFIG], [ eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\"" AC_SUBST(TCL_VERSION) + AC_SUBST(TCL_PATCH_LEVEL) AC_SUBST(TCL_BIN_DIR) AC_SUBST(TCL_SRC_DIR) @@ -1340,7 +1341,7 @@ dnl AC_CHECK_TOOL(AR, ar) #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" if test "$have_dl" = yes; then - SHLIB_LD="${CC} -shared" + SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}' DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LDFLAGS="$LDFLAGS -Wl,--export-dynamic" @@ -1357,6 +1358,17 @@ dnl AC_CHECK_TOOL(AR, ar) if test "`uname -m`" = "alpha" ; then CFLAGS="$CFLAGS -mieee" fi + if test $do64bit = yes; then + AC_CACHE_CHECK([if compiler accepts -m64 flag], tcl_cv_cc_m64, [ + hold_cflags=$CFLAGS + CFLAGS="$CFLAGS -m64" + AC_TRY_LINK(,, tcl_cv_cc_m64=yes, tcl_cv_cc_m64=no) + CFLAGS=$hold_cflags]) + if test $tcl_cv_cc_m64 = yes; then + CFLAGS="$CFLAGS -m64" + do64bit_ok=yes + fi + fi # The combo of gcc + glibc has a bug related # to inlining of functions like strtod(). The -- cgit v0.12 From 78afab8ec5cb163b94f8fed86fb67d9e339d9268 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 28 Nov 2006 16:29:47 +0000 Subject: * unix/tclUnixChan.c (TclUnixWaitForFile): * tests/event.test (event-14.*): Corrected a bug where TclUnixWaitForFile would present select() with the wrong mask on an LP64 machine if a fd number exceeds 32. Thanks to Jean-Luc Fontaine for reporting and diagnosing [Bug 1602208]. --- ChangeLog | 8 ++ tests/event.test | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++- unix/tclUnixChan.c | 7 +- 3 files changed, 222 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e7a5cb..53c91d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-11-27 Kevin Kenny + + * unix/tclUnixChan.c (TclUnixWaitForFile): + * tests/event.test (event-14.*): Corrected a bug where + TclUnixWaitForFile would present select() with the wrong mask + on an LP64 machine if a fd number exceeds 32. Thanks to + Jean-Luc Fontaine for reporting and diagnosing [Bug 1602208]. + 2006-11-26 Daniel Steffen * tcl.m4 (Linux): --enable-64bit support. [Patch 1597389], [Bug 1230558] diff --git a/tests/event.test b/tests/event.test index 0cf627b..98e660d 100644 --- a/tests/event.test +++ b/tests/event.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: event.test,v 1.20 2002/07/10 11:56:44 dgp Exp $ +# RCS: @(#) $Id: event.test,v 1.20.2.1 2006/11/28 16:29:47 kennykb Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -586,6 +586,215 @@ test event-13.8 {Tcl_WaitForFile procedure, waiting indefinitely} testfilewait { set result } {{} readable} + +test event-14.1 {Tcl_WaitForFile procedure, readable, big fd} \ + -constraints {testfilehandler unix} \ + -setup { + set chanList {} + for {set i 0} {$i < 32} {incr i} { + lappend chanList [open /dev/null r] + } + } \ + -body { + foreach i [after info] { + after cancel $i + } + after 100 set x timeout + testfilehandler close + testfilehandler create 1 off off + set x "no timeout" + set result [testfilehandler wait 1 readable 0] + update + testfilehandler close + list $result $x + } \ + -result {{} {no timeout}} \ + -cleanup { + foreach chan $chanList {close $chan} + } + +test event-14.2 {Tcl_WaitForFile procedure, readable, big fd} \ + -constraints {testfilehandler unix} \ + -setup { + set chanList {} + for {set i 0} {$i < 32} {incr i} { + lappend chanList [open /dev/null r] + } + } \ + -body { + foreach i [after info] { + after cancel $i + } + after 100 set x timeout + testfilehandler close + testfilehandler create 1 off off + set x "no timeout" + set result [testfilehandler wait 1 readable 100] + update + testfilehandler close + list $result $x + } \ + -result {{} timeout} \ + -cleanup { + foreach chan $chanList {close $chan} + } + +test event-14.3 {Tcl_WaitForFile procedure, readable, big fd} \ + -constraints {testfilehandler unix} \ + -setup { + set chanList {} + for {set i 0} {$i < 32} {incr i} { + lappend chanList [open /dev/null r] + } + } \ + -body { + foreach i [after info] { + after cancel $i + } + after 100 set x timeout + testfilehandler close + testfilehandler create 1 off off + testfilehandler fillpartial 1 + set x "no timeout" + set result [testfilehandler wait 1 readable 100] + update + testfilehandler close + list $result $x + } \ + -result {readable {no timeout}} \ + -cleanup { + foreach chan $chanList {close $chan} + } + +test event-14.4 {Tcl_WaitForFile procedure, writable, big fd} \ + -constraints {testfilehandler unix nonPortable} \ + -setup { + set chanList {} + for {set i 0} {$i < 32} {incr i} { + lappend chanList [open /dev/null r] + } + } \ + -body { + foreach i [after info] { + after cancel $i + } + after 100 set x timeout + testfilehandler close + testfilehandler create 1 off off + testfilehandler fill 1 + set x "no timeout" + set result [testfilehandler wait 1 writable 0] + update + testfilehandler close + list $result $ + } \ + -result {{} {no timeout}} \ + -cleanup { + foreach chan $chanList {close $chan} + } + +test event-14.5 {Tcl_WaitForFile procedure, writable, big fd} \ + -constraints {testfilehandler unix nonPortable} \ + -setup { + set chanList {} + for {set i 0} {$i < 32} {incr i} { + lappend chanList [open /dev/null r] + } + } \ + -body { + foreach i [after info] { + after cancel $i + } + after 100 set x timeout + testfilehandler close + testfilehandler create 1 off off + testfilehandler fill 1 + set x "no timeout" + set result [testfilehandler wait 1 writable 100] + update + testfilehandler close + list $result $x + } \ + -result {{} timeout} \ + -cleanup { + foreach chan $chanList {close $chan} + } + +test event-14.6 {Tcl_WaitForFile procedure, writable, big fd} \ + -constraints {testfilehandler unix} \ + -setup { + set chanList {} + for {set i 0} {$i < 32} {incr i} { + lappend chanList [open /dev/null r] + } + } \ + -body { + foreach i [after info] { + after cancel $i + } + after 100 set x timeout + testfilehandler close + testfilehandler create 1 off off + set x "no timeout" + set result [testfilehandler wait 1 writable 100] + update + testfilehandler close + list $result $x + } \ + -result {writable {no timeout}} \ + -cleanup { + foreach chan $chanList {close $chan} + } + +test event-14.7 {Tcl_WaitForFile, don't call other event handlers, big fd} \ + -constraints {testfilehandler unix} \ + -setup { + set chanList {} + for {set i 0} {$i < 32} {incr i} { + lappend chanList [open /dev/null r] + } + } \ + -body { + foreach i [after info] { + after cancel $i + } + after 100 lappend x timeout + after idle lappend x idle + testfilehandler close + testfilehandler create 1 off off + set x "" + set result [list [testfilehandler wait 1 readable 200] $x] + update + testfilehandler close + lappend result $x + } \ + -result {{} {} {timeout idle}} \ + -cleanup { + foreach chan $chanList {close $chan} + } + + +test event-14.8 {Tcl_WaitForFile procedure, waiting indefinitely, big fd} \ + -constraints {testfilewait unix} \ + -body { + set f [open "|sleep 2" r] + set result "" + lappend result [testfilewait $f readable 100] + lappend result [testfilewait $f readable -1] + close $f + set result + } \ + -setup { + set chanList {} + for {set i 0} {$i < 32} {incr i} { + lappend chanList [open /dev/null r] + } + } \ + -result {{} readable} \ + -cleanup { + foreach chan $chanList {close $chan} + } + # cleanup foreach i [after info] { after cancel $i diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 0d2c046..5c4cb65 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.9 2006/09/07 08:50:35 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.10 2006/11/28 16:29:48 kennykb Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -3185,7 +3185,8 @@ TclUnixWaitForFile(fd, mask, timeout) { Tcl_Time abortTime = {0, 0}, now; /* silence gcc 4 warning */ struct timeval blockTime, *timeoutPtr; - int index, bit, numFound, result = 0; + int index, numFound, result = 0; + fd_mask bit; fd_mask readyMasks[3*MASK_SIZE]; /* This array reflects the readable/writable * conditions that were found to exist by the @@ -3222,7 +3223,7 @@ TclUnixWaitForFile(fd, mask, timeout) } memset((VOID *) readyMasks, 0, 3*MASK_SIZE*sizeof(fd_mask)); index = fd/(NBBY*sizeof(fd_mask)); - bit = 1 << (fd%(NBBY*sizeof(fd_mask))); + bit = ((fd_mask) 1) << (fd%(NBBY*sizeof(fd_mask))); /* * Loop in a mini-event loop of our own, waiting for either the -- cgit v0.12 From bf08959966d3a565773dbddb52b0be2e0747ec3a Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 28 Nov 2006 22:19:57 +0000 Subject: * generic/tclBasic.c: TIP #280 implementation, conditional on the define TCL_TIP280. * generic/tclCmdAH.c: * generic/tclCmdIL.c: * generic/tclCmdMZ.c: * generic/tclCompCmds.c: * generic/tclCompExpr.c: * generic/tclCompile.c: * generic/tclCompile.h: * generic/tclExecute.c: * generic/tclIOUtil.c: * generic/tclInt.h: * generic/tclInterp.c: * generic/tclNamesp.c: * generic/tclObj.c: * generic/tclProc.c: * tests/compile.test: * tests/info.test: * tests/platform.test: * tests/safe.test: --- ChangeLog | 24 ++- generic/tclBasic.c | 548 ++++++++++++++++++++++++++++++++++++++++++++++++-- generic/tclCmdAH.c | 59 +++++- generic/tclCmdIL.c | 297 ++++++++++++++++++++++++++- generic/tclCmdMZ.c | 137 ++++++++++++- generic/tclCompCmds.c | 305 +++++++++++++++++++++++++++- generic/tclCompExpr.c | 7 +- generic/tclCompile.c | 345 ++++++++++++++++++++++++++++++- generic/tclCompile.h | 54 ++++- generic/tclExecute.c | 145 ++++++++++++- generic/tclIOUtil.c | 8 +- generic/tclInt.h | 166 ++++++++++++++- generic/tclInterp.c | 8 +- generic/tclNamesp.c | 13 +- generic/tclProc.c | 123 ++++++++++- tests/info.test | 421 +++++++++++++++++++++++++++++++++++++- tests/platform.test | 1 + tests/safe.test | 6 +- 18 files changed, 2611 insertions(+), 56 deletions(-) diff --git a/ChangeLog b/ChangeLog index 53c91d6..0e91607 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2006-11-28 Andreas Kupries + + * generic/tclBasic.c: TIP #280 implementation, conditional on the define TCL_TIP280. + * generic/tclCmdAH.c: + * generic/tclCmdIL.c: + * generic/tclCmdMZ.c: + * generic/tclCompCmds.c: + * generic/tclCompExpr.c: + * generic/tclCompile.c: + * generic/tclCompile.h: + * generic/tclExecute.c: + * generic/tclIOUtil.c: + * generic/tclInt.h: + * generic/tclInterp.c: + * generic/tclNamesp.c: + * generic/tclObj.c: + * generic/tclProc.c: + * tests/compile.test: + * tests/info.test: + * tests/platform.test: + * tests/safe.test: + 2006-11-27 Kevin Kenny * unix/tclUnixChan.c (TclUnixWaitForFile): @@ -19,7 +41,7 @@ 2006-11-03 Miguel Sofer - * generic/tclBasic.c (TEOVI): fix por possible leak of a Command + * generic/tclBasic.c (TEOVI): fix for possible leak of a Command in the presence of execution traces that delete it. * generic/tclBasic.c (TEOVI): diff --git a/generic/tclBasic.c b/generic/tclBasic.c index f55c531..76f439c 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.25 2006/11/04 01:37:55 msofer Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.26 2006/11/28 22:19:59 andreas_kupries Exp $ */ #include "tclInt.h" @@ -41,6 +41,17 @@ static int StringTraceProc _ANSI_ARGS_((ClientData clientData, Tcl_Obj *CONST objv[])); static void StringTraceDeleteProc _ANSI_ARGS_((ClientData clientData)); +#ifdef TCL_TIP280 +/* TIP #280 - Modified token based evulation, with line information */ +static int EvalEx _ANSI_ARGS_((Tcl_Interp *interp, CONST char *script, + int numBytes, int flags, int line)); + +static int EvalTokensStandard _ANSI_ARGS_((Tcl_Interp *interp, + Tcl_Token *tokenPtr, + int count, int line)); + +#endif + extern TclStubs tclStubs; /* @@ -334,6 +345,19 @@ Tcl_CreateInterp() iPtr->maxNestingDepth = MAX_NESTING_DEPTH; iPtr->framePtr = NULL; iPtr->varFramePtr = NULL; + +#ifdef TCL_TIP280 + /* + * TIP #280 - Initialize the arrays used to extend the ByteCode and + * Proc structures. + */ + iPtr->cmdFramePtr = NULL; + iPtr->linePBodyPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); + iPtr->lineBCPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); + Tcl_InitHashTable(iPtr->linePBodyPtr, TCL_ONE_WORD_KEYS); + Tcl_InitHashTable(iPtr->lineBCPtr, TCL_ONE_WORD_KEYS); +#endif + iPtr->activeVarTracePtr = NULL; iPtr->returnCode = TCL_OK; iPtr->errorInfo = NULL; @@ -589,6 +613,10 @@ Tcl_CreateInterp() Tcl_SetVar2(interp, "tcl_platform", "tip,268", "1", TCL_GLOBAL_ONLY); #endif +#ifdef TCL_TIP280 + Tcl_SetVar2(interp, "tcl_platform", "tip,280", "1", + TCL_GLOBAL_ONLY); +#endif #ifdef Tcl_InitStubs #undef Tcl_InitStubs #endif @@ -1108,6 +1136,62 @@ DeleteInterpProc(interp) */ TclDeleteLiteralTable(interp, &(iPtr->literalTable)); + +#ifdef TCL_TIP280 + /* TIP #280 - Release the arrays for ByteCode/Proc extension, and contents. + */ + { + Tcl_HashEntry *hPtr; + Tcl_HashSearch hSearch; + CmdFrame* cfPtr; + ExtCmdLoc* eclPtr; + int i; + + for (hPtr = Tcl_FirstHashEntry(iPtr->linePBodyPtr, &hSearch); + hPtr != NULL; + hPtr = Tcl_NextHashEntry(&hSearch)) { + + cfPtr = (CmdFrame*) Tcl_GetHashValue (hPtr); + + if (cfPtr->type == TCL_LOCATION_SOURCE) { + Tcl_DecrRefCount (cfPtr->data.eval.path); + } + ckfree ((char*) cfPtr->line); + ckfree ((char*) cfPtr); + Tcl_DeleteHashEntry (hPtr); + + } + Tcl_DeleteHashTable (iPtr->linePBodyPtr); + ckfree ((char*) iPtr->linePBodyPtr); + iPtr->linePBodyPtr = NULL; + + /* See also tclCompile.c, TclCleanupByteCode */ + + for (hPtr = Tcl_FirstHashEntry(iPtr->lineBCPtr, &hSearch); + hPtr != NULL; + hPtr = Tcl_NextHashEntry(&hSearch)) { + + eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hPtr); + + if (eclPtr->type == TCL_LOCATION_SOURCE) { + Tcl_DecrRefCount (eclPtr->path); + } + for (i=0; i< eclPtr->nuloc; i++) { + ckfree ((char*) eclPtr->loc[i].line); + } + + if (eclPtr->loc != NULL) { + ckfree ((char*) eclPtr->loc); + } + + ckfree ((char*) eclPtr); + Tcl_DeleteHashEntry (hPtr); + } + Tcl_DeleteHashTable (iPtr->lineBCPtr); + ckfree((char*) iPtr->lineBCPtr); + iPtr->lineBCPtr = NULL; + } +#endif ckfree((char *) iPtr); } @@ -3353,7 +3437,7 @@ Tcl_LogCommandInfo(interp, script, command, length) /* *---------------------------------------------------------------------- * - * Tcl_EvalTokensStandard -- + * Tcl_EvalTokensStandard, EvalTokensStandard -- * * Given an array of tokens parsed from a Tcl command (e.g., the * tokens that make up a word or the index for an array variable) @@ -3367,7 +3451,8 @@ Tcl_LogCommandInfo(interp, script, command, length) * * Side effects: * Depends on the array of tokens being evaled. - * + * + * TIP #280 : Keep public API, internally extended API. *---------------------------------------------------------------------- */ @@ -3381,6 +3466,22 @@ Tcl_EvalTokensStandard(interp, tokenPtr, count) int count; /* Number of tokens to consider at tokenPtr. * Must be at least 1. */ { +#ifdef TCL_TIP280 + return EvalTokensStandard (interp, tokenPtr, count, 1); +} + +static int +EvalTokensStandard(interp, tokenPtr, count, line) + Tcl_Interp *interp; /* Interpreter in which to lookup + * variables, execute nested commands, + * and report errors. */ + Tcl_Token *tokenPtr; /* Pointer to first in an array of tokens + * to evaluate and concatenate. */ + int count; /* Number of tokens to consider at tokenPtr. + * Must be at least 1. */ + int line; /* The line the script starts on. */ +{ +#endif Tcl_Obj *resultPtr, *indexPtr, *valuePtr; char buffer[TCL_UTF_MAX]; #ifdef TCL_MEM_DEBUG @@ -3429,8 +3530,14 @@ Tcl_EvalTokensStandard(interp, tokenPtr, count) iPtr->numLevels++; code = TclInterpReady(interp); if (code == TCL_OK) { +#ifndef TCL_TIP280 code = Tcl_EvalEx(interp, tokenPtr->start+1, tokenPtr->size-2, 0); +#else + /* TIP #280: Transfer line information to nested command */ + code = EvalEx(interp, + tokenPtr->start+1, tokenPtr->size-2, 0, line); +#endif } iPtr->numLevels--; if (code != TCL_OK) { @@ -3445,8 +3552,14 @@ Tcl_EvalTokensStandard(interp, tokenPtr, count) indexPtr = NULL; index = NULL; } else { +#ifndef TCL_TIP280 code = Tcl_EvalTokensStandard(interp, tokenPtr+2, tokenPtr->numComponents - 1); +#else + /* TIP #280: Transfer line information to nested command */ + code = EvalTokensStandard(interp, tokenPtr+2, + tokenPtr->numComponents - 1, line); +#endif if (code != TCL_OK) { goto done; } @@ -3526,8 +3639,7 @@ Tcl_EvalTokensStandard(interp, tokenPtr, count) } return code; } - - + /* *---------------------------------------------------------------------- * @@ -3583,7 +3695,7 @@ Tcl_EvalTokens(interp, tokenPtr, count) /* *---------------------------------------------------------------------- * - * Tcl_EvalEx -- + * Tcl_EvalEx, EvalEx -- * * This procedure evaluates a Tcl script without using the compiler * or byte-code interpreter. It just parses the script, creates @@ -3598,6 +3710,7 @@ Tcl_EvalTokens(interp, tokenPtr, count) * Side effects: * Depends on the script. * + * TIP #280 : Keep public API, internally extended API. *---------------------------------------------------------------------- */ @@ -3614,13 +3727,33 @@ Tcl_EvalEx(interp, script, numBytes, flags) * TCL_EVAL_GLOBAL is currently * supported. */ { +#ifdef TCL_TIP280 + return EvalEx (interp, script, numBytes, flags, 1); +} + +static int +EvalEx(interp, script, numBytes, flags, line) + Tcl_Interp *interp; /* Interpreter in which to evaluate the + * script. Also used for error reporting. */ + CONST char *script; /* First character of script to evaluate. */ + int numBytes; /* Number of bytes in script. If < 0, the + * script consists of all bytes up to the + * first null character. */ + int flags; /* Collection of OR-ed bits that control + * the evaluation of the script. Only + * TCL_EVAL_GLOBAL is currently + * supported. */ + int line; /* The line the script starts on. */ +{ +#endif Interp *iPtr = (Interp *) interp; CONST char *p, *next; Tcl_Parse parse; #define NUM_STATIC_OBJS 20 Tcl_Obj *staticObjArray[NUM_STATIC_OBJS], **objv; Tcl_Token *tokenPtr; - int i, code, commandLength, bytesLeft, nested; + int code = TCL_OK; + int i, commandLength, bytesLeft, nested; CallFrame *savedVarFramePtr; /* Saves old copy of iPtr->varFramePtr * in case TCL_EVAL_GLOBAL was set. */ int allowExceptions = (iPtr->evalFlags & TCL_ALLOW_EXCEPTIONS); @@ -3633,6 +3766,11 @@ Tcl_EvalEx(interp, script, numBytes, flags) int gotParse = 0, objectsUsed = 0; +#ifdef TCL_TIP280 + /* TIP #280 Structures for tracking of command locations. */ + CmdFrame eeFrame; +#endif + if (numBytes < 0) { numBytes = strlen(script); } @@ -3656,6 +3794,62 @@ Tcl_EvalEx(interp, script, numBytes, flags) } else { nested = 0; } + +#ifdef TCL_TIP280 + /* TIP #280 Initialize tracking. Do not push on the frame stack yet. */ + /* + * We may cont. counting based on a specific context (CTX), or open a new + * context, either for a sourced script, or 'eval'. For sourced files we + * always have a path object, even if nothing was specified in the interp + * itself. That makes code using it simpler as NULL checks can be left + * out. Sourced file without path in the 'scriptFile' is possible during + * Tcl initialization. + */ + + if (iPtr->evalFlags & TCL_EVAL_CTX) { + /* Path information comes out of the context. */ + + eeFrame.type = TCL_LOCATION_SOURCE; + eeFrame.data.eval.path = iPtr->invokeCmdFramePtr->data.eval.path; + Tcl_IncrRefCount (eeFrame.data.eval.path); + } else if (iPtr->evalFlags & TCL_EVAL_FILE) { + /* Set up for a sourced file */ + + eeFrame.type = TCL_LOCATION_SOURCE; + + if (iPtr->scriptFile) { + /* Normalization here, to have the correct pwd. Should have + * negligible impact on performance, as the norm should have been + * done already by the 'source' invoking us, and it caches the + * result + */ + + Tcl_Obj* norm = Tcl_FSGetNormalizedPath (interp, iPtr->scriptFile); + if (!norm) { + /* Error message in the interp result */ + return TCL_ERROR; + } + eeFrame.data.eval.path = norm; + Tcl_IncrRefCount (eeFrame.data.eval.path); + } else { + eeFrame.data.eval.path = Tcl_NewStringObj ("",-1); + } + } else { + /* Set up for plain eval */ + + eeFrame.type = TCL_LOCATION_EVAL; + eeFrame.data.eval.path = NULL; + } + + eeFrame.level = (iPtr->cmdFramePtr == NULL + ? 1 + : iPtr->cmdFramePtr->level + 1); + eeFrame.framePtr = iPtr->framePtr; + eeFrame.nextPtr = iPtr->cmdFramePtr; + eeFrame.nline = 0; + eeFrame.line = NULL; +#endif + iPtr->evalFlags = 0; do { if (Tcl_ParseCommand(interp, p, bytesLeft, nested, &parse) @@ -3676,7 +3870,27 @@ Tcl_EvalEx(interp, script, numBytes, flags) goto error; } +#ifdef TCL_TIP280 + /* + * TIP #280 Track lines. The parser may have skipped text till it + * found the command we are now at. We have count the lines in this + * block. + */ + + TclAdvanceLines (&line, p, parse.commandStart); +#endif + if (parse.numWords > 0) { +#ifdef TCL_TIP280 + /* + * TIP #280. Track lines within the words of the current + * command. + */ + + int wordLine = line; + CONST char* wordStart = parse.commandStart; +#endif + /* * Generate an array of objects for the words of the command. */ @@ -3687,11 +3901,45 @@ Tcl_EvalEx(interp, script, numBytes, flags) objv = (Tcl_Obj **) ckalloc((unsigned) (parse.numWords * sizeof (Tcl_Obj *))); } + +#ifdef TCL_TIP280 + eeFrame.nline = parse.numWords; + eeFrame.line = (int*) ckalloc((unsigned) + (parse.numWords * sizeof (int))); +#endif + for (objectsUsed = 0, tokenPtr = parse.tokenPtr; - objectsUsed < parse.numWords; - objectsUsed++, tokenPtr += (tokenPtr->numComponents + 1)) { + objectsUsed < parse.numWords; + objectsUsed++, tokenPtr += (tokenPtr->numComponents + 1)) { +#ifndef TCL_TIP280 code = Tcl_EvalTokensStandard(interp, tokenPtr+1, tokenPtr->numComponents); +#else + /* + * TIP #280. Track lines to current word. Save the + * information on a per-word basis, signaling dynamic words as + * needed. Make the information available to the recursively + * called evaluator as well, including the type of context + * (source vs. eval). + */ + + TclAdvanceLines (&wordLine, wordStart, tokenPtr->start); + wordStart = tokenPtr->start; + + eeFrame.line [objectsUsed] = (TclWordKnownAtCompileTime (tokenPtr) + ? wordLine + : -1); + + if (eeFrame.type == TCL_LOCATION_SOURCE) { + iPtr->evalFlags |= TCL_EVAL_FILE; + } + + code = EvalTokensStandard(interp, tokenPtr+1, + tokenPtr->numComponents, wordLine); + + iPtr->evalFlags = 0; +#endif + if (code == TCL_OK) { objv[objectsUsed] = Tcl_GetObjResult(interp); Tcl_IncrRefCount(objv[objectsUsed]); @@ -3702,12 +3950,36 @@ Tcl_EvalEx(interp, script, numBytes, flags) /* * Execute the command and free the objects for its words. + * + * TIP #280: Remember the command itself for 'info frame'. We + * shorten the visible command by one char to exclude the + * termination character, if necessary. Here is where we put our + * frame on the stack of frames too. _After_ the nested commands + * have been executed. */ +#ifdef TCL_TIP280 + eeFrame.cmd.str.cmd = parse.commandStart; + eeFrame.cmd.str.len = parse.commandSize; + + if (parse.term == parse.commandStart + parse.commandSize - 1) { + eeFrame.cmd.str.len --; + } + + iPtr->cmdFramePtr = &eeFrame; +#endif iPtr->numLevels++; code = TclEvalObjvInternal(interp, objectsUsed, objv, parse.commandStart, parse.commandSize, 0); iPtr->numLevels--; +#ifdef TCL_TIP280 + iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; + + ckfree ((char*) eeFrame.line); + eeFrame.line = NULL; + eeFrame.nline = 0; +#endif + if (code != TCL_OK) { goto error; } @@ -3723,11 +3995,17 @@ Tcl_EvalEx(interp, script, numBytes, flags) /* * Advance to the next command in the script. + * + * TIP #280 Track Lines. Now we track how many lines were in the + * executed command. */ next = parse.commandStart + parse.commandSize; bytesLeft -= next - p; p = next; +#ifdef TCL_TIP280 + TclAdvanceLines (&line, parse.commandStart, p); +#endif Tcl_FreeParse(&parse); gotParse = 0; if (nested && (*parse.term == ']')) { @@ -3740,7 +4018,12 @@ Tcl_EvalEx(interp, script, numBytes, flags) iPtr->termOffset = (p - 1) - script; iPtr->varFramePtr = savedVarFramePtr; +#ifndef TCL_TIP280 return TCL_OK; +#else + code = TCL_OK; + goto cleanup_return; +#endif } } while (bytesLeft > 0); @@ -3755,7 +4038,12 @@ Tcl_EvalEx(interp, script, numBytes, flags) iPtr->termOffset = p - script; iPtr->varFramePtr = savedVarFramePtr; +#ifndef TCL_TIP280 return TCL_OK; +#else + code = TCL_OK; + goto cleanup_return; +#endif error: /* @@ -3812,7 +4100,11 @@ Tcl_EvalEx(interp, script, numBytes, flags) if (!nested) { iPtr->termOffset = p - script; +#ifndef TCL_TIP280 return code; +#else + goto cleanup_return; +#endif } /* @@ -3840,7 +4132,11 @@ Tcl_EvalEx(interp, script, numBytes, flags) } else { iPtr->termOffset = (next - 1) - script; } +#ifndef TCL_TIP280 return code; +#else + goto cleanup_return; +#endif } next = parse.commandStart + parse.commandSize; bytesLeft -= next - p; @@ -3863,7 +4159,12 @@ Tcl_EvalEx(interp, script, numBytes, flags) iPtr->termOffset = parse.term - script; Tcl_SetObjResult(interp, Tcl_NewStringObj("missing close-bracket", -1)); +#ifndef TCL_TIP280 return TCL_ERROR; +#else + code = TCL_ERROR; + goto cleanup_return; +#endif } else if (*parse.term != ']') { /* * There was no close-bracket. Syntax error. @@ -3872,16 +4173,67 @@ Tcl_EvalEx(interp, script, numBytes, flags) iPtr->termOffset = (parse.term + 1) - script; Tcl_SetObjResult(interp, Tcl_NewStringObj("missing close-bracket", -1)); +#ifndef TCL_TIP280 return TCL_ERROR; +#else + code = TCL_ERROR; + goto cleanup_return; +#endif } else { /* * parse.term points to the close-bracket. */ iPtr->termOffset = parse.term - script; } + +#ifdef TCL_TIP280 + cleanup_return: + /* TIP #280. Release the local CmdFrame, and its contents. */ + + if (eeFrame.line != NULL) { + ckfree ((char*) eeFrame.line); + } + if (eeFrame.type == TCL_LOCATION_SOURCE) { + Tcl_DecrRefCount (eeFrame.data.eval.path); + } +#endif return code; } +#ifdef TCL_TIP280 +/* + *---------------------------------------------------------------------- + * + * TclAdvanceLines -- + * + * This procedure is a helper which counts the number of lines + * in a block of text and advances an external counter. + * + * Results: + * None. + * + * Side effects: + * The specified counter is advanced per the number of lines found. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclAdvanceLines (line,start,end) + int* line; + CONST char* start; + CONST char* end; +{ + CONST char* p; + for (p = start; p < end; p++) { + if (*p == '\n') { + (*line) ++; + } + } +} +#endif + /* *---------------------------------------------------------------------- * @@ -3963,7 +4315,7 @@ Tcl_GlobalEvalObj(interp, objPtr) /* *---------------------------------------------------------------------- * - * Tcl_EvalObjEx -- + * Tcl_EvalObjEx, TclEvalObjEx -- * * Execute Tcl commands stored in a Tcl object. These commands are * compiled into bytecodes if necessary, unless TCL_EVAL_DIRECT @@ -3983,6 +4335,7 @@ Tcl_GlobalEvalObj(interp, objPtr) * Just as in Tcl_Eval, interp->termOffset is set to the offset of the * last character executed in the objPtr's string. * + * TIP #280 : Keep public API, internally extended API. *---------------------------------------------------------------------- */ @@ -3999,6 +4352,26 @@ Tcl_EvalObjEx(interp, objPtr, flags) * TCL_EVAL_GLOBAL and * TCL_EVAL_DIRECT. */ { +#ifdef TCL_TIP280 + return TclEvalObjEx (interp, objPtr, flags, NULL, 0); +} + +int +TclEvalObjEx(interp, objPtr, flags, invoker, word) + Tcl_Interp *interp; /* Token for command interpreter + * (returned by a previous call to + * Tcl_CreateInterp). */ + register Tcl_Obj *objPtr; /* Pointer to object containing + * commands to execute. */ + int flags; /* Collection of OR-ed bits that + * control the evaluation of the + * script. Supported values are + * TCL_EVAL_GLOBAL and + * TCL_EVAL_DIRECT. */ + CONST CmdFrame* invoker; /* Frame of the command doing the eval */ + int word; /* Index of the word which is in objPtr */ +{ +#endif register Interp *iPtr = (Interp *) interp; char *script; int numSrcBytes; @@ -4030,36 +4403,171 @@ Tcl_EvalObjEx(interp, objPtr, flags) register List *listRepPtr = (List *) objPtr->internalRep.twoPtrValue.ptr1; int i, objc = listRepPtr->elemCount; + #define TEOE_PREALLOC 10 Tcl_Obj *staticObjv[TEOE_PREALLOC], **objv = staticObjv; +#ifdef TCL_TIP280 + /* TIP #280 Structures for tracking lines. + * As we know that this is dynamic execution we ignore the + * invoker, even if known. + */ + int line; + CmdFrame eoFrame; + + eoFrame.type = TCL_LOCATION_EVAL_LIST; + eoFrame.level = (iPtr->cmdFramePtr == NULL ? + 1 : + iPtr->cmdFramePtr->level + 1); + eoFrame.framePtr = iPtr->framePtr; + eoFrame.nextPtr = iPtr->cmdFramePtr; + eoFrame.nline = objc; + eoFrame.line = (int*) ckalloc (objc * sizeof (int)); + + /* NOTE: Getting the string rep of the list to eval to fill the + * command information required by 'info frame' implies that + * further calls for the same list would not be optimized, as it + * would not be 'pure' anymore. It would also be a waste of time + * as most of the time this information is not needed at all. What + * we do instead is to keep the list obj itself around and have + * 'info frame' sort it out. + */ + + eoFrame.cmd.listPtr = objPtr; + Tcl_IncrRefCount (eoFrame.cmd.listPtr); + eoFrame.data.eval.path = NULL; +#endif if (objc > TEOE_PREALLOC) { objv = (Tcl_Obj **) ckalloc(objc*sizeof(Tcl_Obj *)); } #undef TEOE_PREALLOC /* - * Copy the list elements here, to avoid a segfault if objPtr - * loses its List internal rep [Bug 1119369] + * Copy the list elements here, to avoid a segfault if + * objPtr loses its List internal rep [Bug 1119369]. + * + * TIP #280 Computes all the line numbers for the + * words in the command. */ - + +#ifdef TCL_TIP280 + line = 1; +#endif for (i=0; i < objc; i++) { objv[i] = listRepPtr->elements[i]; Tcl_IncrRefCount(objv[i]); +#ifdef TCL_TIP280 + eoFrame.line [i] = line; + { + char* w = Tcl_GetString (objv [i]); + TclAdvanceLines (&line, w, w+ strlen(w)); + } +#endif } + +#ifdef TCL_TIP280 + iPtr->cmdFramePtr = &eoFrame; +#endif result = Tcl_EvalObjv(interp, objc, objv, flags); +#ifdef TCL_TIP280 + iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; + Tcl_DecrRefCount (eoFrame.cmd.listPtr); +#endif + for (i=0; i < objc; i++) { TclDecrRefCount(objv[i]); } if (objv != staticObjv) { ckfree((char *) objv); } +#ifdef TCL_TIP280 + ckfree ((char*) eoFrame.line); + eoFrame.line = NULL; + eoFrame.nline = 0; +#endif } else { +#ifndef TCL_TIP280 script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); result = Tcl_EvalEx(interp, script, numSrcBytes, flags); +#else + /* + * TIP #280. Propagate context as much as we can. Especially if + * the script to evaluate is a single literal it makes sense to + * look if our context is one with absolute line numbers we can + * then track into the literal itself too. + * + * See also tclCompile.c, TclInitCompileEnv, for the equivalent + * code in the bytecode compiler. + */ + + if (invoker == NULL) { + /* No context, force opening of our own */ + script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); + result = Tcl_EvalEx(interp, script, numSrcBytes, flags); + } else { + /* We have an invoker, describing the command asking for the + * evaluation of a subordinate script. This script may + * originate in a literal word, or from a variable, etc. Using + * the line array we now check if we have good line + * information for the relevant word. The type of context is + * relevant as well. In a non-'source' context we don't have + * to try tracking lines. + * + * First see if the word exists and is a literal. If not we go + * through the easy dynamic branch. No need to perform more + * complex invokations. + */ + + if ((invoker->nline <= word) || (invoker->line[word] < 0)) { + /* Dynamic script, or dynamic context, force our own + * context */ + + script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); + result = Tcl_EvalEx(interp, script, numSrcBytes, flags); + + } else { + /* Try to get an absolute context for the evaluation + */ + + CmdFrame ctx = *invoker; + int pc = 0; + + if (invoker->type == TCL_LOCATION_BC) { + /* Note: Type BC => ctx.data.eval.path is not used. + * ctx.data.tebc.codePtr is used instead. + */ + TclGetSrcInfoForPc (&ctx); + pc = 1; + } + + if (ctx.type == TCL_LOCATION_SOURCE) { + /* Absolute context to reuse. */ + + iPtr->invokeCmdFramePtr = &ctx; + iPtr->evalFlags |= TCL_EVAL_CTX; + + script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); + result = EvalEx(interp, script, numSrcBytes, flags, ctx.line [word]); + + if (pc) { + /* Death of SrcInfo reference */ + Tcl_DecrRefCount (ctx.data.eval.path); + } + } else { + /* Dynamic context or script, easier to make our own as + * well */ + script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); + result = Tcl_EvalEx(interp, script, numSrcBytes, flags); + } + } + } +#endif } } else { /* * Let the compiler/engine subsystem do the evaluation. + * + * TIP #280 The invoker provides us with the context for the + * script. We transfer this to the byte code compiler. */ savedVarFramePtr = iPtr->varFramePtr; @@ -4067,7 +4575,11 @@ Tcl_EvalObjEx(interp, objPtr, flags) iPtr->varFramePtr = NULL; } +#ifndef TCL_TIP280 result = TclCompEvalObj(interp, objPtr); +#else + result = TclCompEvalObj(interp, objPtr, invoker, word); +#endif /* * If we are again at the top level, process any unusual @@ -5570,4 +6082,12 @@ Tcl_GetVersion(majorV, minorV, patchLevelV, type) *type = TCL_RELEASE_LEVEL; } } - + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ + diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index c3402ef..6621714 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.15 2005/10/23 22:01:29 msofer Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.16 2006/11/28 22:20:00 andreas_kupries Exp $ */ #include "tclInt.h" @@ -235,6 +235,9 @@ Tcl_CatchObjCmd(dummy, interp, objc, objv) { Tcl_Obj *varNamePtr = NULL; int result; +#ifdef TCL_TIP280 + Interp* iPtr = (Interp*) interp; +#endif if ((objc != 2) && (objc != 3)) { Tcl_WrongNumArgs(interp, 1, objv, "command ?varName?"); @@ -245,7 +248,12 @@ Tcl_CatchObjCmd(dummy, interp, objc, objv) varNamePtr = objv[2]; } +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[1], 0); +#else + /* TIP #280. Make invoking context available to caught script */ + result = TclEvalObjEx(interp, objv[1], 0, iPtr->cmdFramePtr,1); +#endif if (objc == 3) { if (Tcl_ObjSetVar2(interp, varNamePtr, NULL, @@ -592,6 +600,9 @@ Tcl_EvalObjCmd(dummy, interp, objc, objv) { int result; register Tcl_Obj *objPtr; +#ifdef TCL_TIP280 + Interp* iPtr = (Interp*) interp; +#endif if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "arg ?arg ...?"); @@ -599,7 +610,13 @@ Tcl_EvalObjCmd(dummy, interp, objc, objv) } if (objc == 2) { +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[1], TCL_EVAL_DIRECT); +#else + /* TIP #280. Make invoking context available to eval'd script */ + result = TclEvalObjEx(interp, objv[1], TCL_EVAL_DIRECT, + iPtr->cmdFramePtr,1); +#endif } else { /* * More than one argument: concatenate them together with spaces @@ -607,7 +624,12 @@ Tcl_EvalObjCmd(dummy, interp, objc, objv) * the object when it decrements its refcount after eval'ing it. */ objPtr = Tcl_ConcatObj(objc-1, objv+1); +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objPtr, TCL_EVAL_DIRECT); +#else + /* TIP #280. Make invoking context available to eval'd script */ + result = TclEvalObjEx(interp, objPtr, TCL_EVAL_DIRECT, NULL, 0); +#endif } if (result == TCL_ERROR) { char msg[32 + TCL_INTEGER_SPACE]; @@ -1607,13 +1629,21 @@ Tcl_ForObjCmd(dummy, interp, objc, objv) Tcl_Obj *CONST objv[]; /* Argument objects. */ { int result, value; +#ifdef TCL_TIP280 + Interp* iPtr = (Interp*) interp; +#endif if (objc != 5) { Tcl_WrongNumArgs(interp, 1, objv, "start test next command"); return TCL_ERROR; } +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[1], 0); +#else + /* TIP #280. Make invoking context available to initial script */ + result = TclEvalObjEx(interp, objv[1], 0, iPtr->cmdFramePtr,1); +#endif if (result != TCL_OK) { if (result == TCL_ERROR) { Tcl_AddErrorInfo(interp, "\n (\"for\" initial command)"); @@ -1635,7 +1665,12 @@ Tcl_ForObjCmd(dummy, interp, objc, objv) if (!value) { break; } +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[4], 0); +#else + /* TIP #280. Make invoking context available to loop body */ + result = TclEvalObjEx(interp, objv[4], 0, iPtr->cmdFramePtr,4); +#endif if ((result != TCL_OK) && (result != TCL_CONTINUE)) { if (result == TCL_ERROR) { char msg[32 + TCL_INTEGER_SPACE]; @@ -1645,7 +1680,12 @@ Tcl_ForObjCmd(dummy, interp, objc, objv) } break; } +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[3], 0); +#else + /* TIP #280. Make invoking context available to next script */ + result = TclEvalObjEx(interp, objv[3], 0, iPtr->cmdFramePtr,3); +#endif if (result == TCL_BREAK) { break; } else if (result != TCL_OK) { @@ -1719,6 +1759,9 @@ Tcl_ForeachObjCmd(dummy, interp, objc, objv) Tcl_Obj ***varvList = varvListArray; /* Array of var name lists */ int *argcList = argcListArray; /* Array of value list sizes */ Tcl_Obj ***argvList = argvListArray; /* Array of value lists */ +#ifdef TCL_TIP280 + Interp* iPtr = (Interp*) interp; +#endif if (objc < 4 || (objc%2 != 0)) { Tcl_WrongNumArgs(interp, 1, objv, @@ -1848,7 +1891,12 @@ Tcl_ForeachObjCmd(dummy, interp, objc, objv) } } +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, bodyPtr, 0); +#else + /* TIP #280. Make invoking context available to loop body */ + result = TclEvalObjEx(interp, bodyPtr, 0, iPtr->cmdFramePtr,objc-1); +#endif if (result != TCL_OK) { if (result == TCL_CONTINUE) { result = TCL_OK; @@ -2394,3 +2442,12 @@ Tcl_FormatObjCmd(dummy, interp, objc, objv) Tcl_DecrRefCount(resultPtr); return TCL_ERROR; } + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ + diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index a867272..d44ba7a 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.9 2005/12/09 14:39:25 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.10 2006/11/28 22:20:00 andreas_kupries Exp $ */ #include "tclInt.h" @@ -109,6 +109,12 @@ static int InfoDefaultCmd _ANSI_ARGS_((ClientData dummy, static int InfoExistsCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +#ifdef TCL_TIP280 +/* TIP #280 - New 'info' subcommand 'frame' */ +static int InfoFrameCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[])); +#endif static int InfoFunctionsCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); @@ -188,6 +194,9 @@ Tcl_IfObjCmd(dummy, interp, objc, objv) Tcl_Obj *CONST objv[]; /* Argument objects. */ { int thenScriptIndex = 0; /* then script to be evaled after syntax check */ +#ifdef TCL_TIP280 + Interp* iPtr = (Interp*) interp; +#endif int i, result, value; char *clause; i = 1; @@ -240,7 +249,13 @@ Tcl_IfObjCmd(dummy, interp, objc, objv) i++; if (i >= objc) { if (thenScriptIndex) { +#ifndef TCL_TIP280 return Tcl_EvalObjEx(interp, objv[thenScriptIndex], 0); +#else + /* TIP #280. Make invoking context available to branch */ + return TclEvalObjEx(interp, objv[thenScriptIndex], 0, + iPtr->cmdFramePtr,thenScriptIndex); +#endif } return TCL_OK; } @@ -274,9 +289,19 @@ Tcl_IfObjCmd(dummy, interp, objc, objv) return TCL_ERROR; } if (thenScriptIndex) { +#ifndef TCL_TIP280 return Tcl_EvalObjEx(interp, objv[thenScriptIndex], 0); +#else + /* TIP #280. Make invoking context available to branch/else */ + return TclEvalObjEx(interp, objv[thenScriptIndex], 0, + iPtr->cmdFramePtr,thenScriptIndex); +#endif } +#ifndef TCL_TIP280 return Tcl_EvalObjEx(interp, objv[i], 0); +#else + return TclEvalObjEx(interp, objv[i], 0, iPtr->cmdFramePtr,i); +#endif } /* @@ -397,16 +422,24 @@ Tcl_InfoObjCmd(clientData, interp, objc, objv) Tcl_Obj *CONST objv[]; /* Argument objects. */ { static CONST char *subCmds[] = { - "args", "body", "cmdcount", "commands", - "complete", "default", "exists", "functions", "globals", - "hostname", "level", "library", "loaded", + "args", "body", "cmdcount", "commands", + "complete", "default", "exists", +#ifdef TCL_TIP280 + "frame", +#endif + "functions", + "globals", "hostname", "level", "library", "loaded", "locals", "nameofexecutable", "patchlevel", "procs", "script", "sharedlibextension", "tclversion", "vars", (char *) NULL}; enum ISubCmdIdx { IArgsIdx, IBodyIdx, ICmdCountIdx, ICommandsIdx, - ICompleteIdx, IDefaultIdx, IExistsIdx, IFunctionsIdx, IGlobalsIdx, - IHostnameIdx, ILevelIdx, ILibraryIdx, ILoadedIdx, + ICompleteIdx, IDefaultIdx, IExistsIdx, +#ifdef TCL_TIP280 + IFrameIdx, +#endif + IFunctionsIdx, + IGlobalsIdx, IHostnameIdx, ILevelIdx, ILibraryIdx, ILoadedIdx, ILocalsIdx, INameOfExecutableIdx, IPatchLevelIdx, IProcsIdx, IScriptIdx, ISharedLibExtensionIdx, ITclVersionIdx, IVarsIdx }; @@ -445,6 +478,12 @@ Tcl_InfoObjCmd(clientData, interp, objc, objv) case IExistsIdx: result = InfoExistsCmd(clientData, interp, objc, objv); break; +#ifdef TCL_TIP280 + case IFrameIdx: + /* TIP #280 - New method 'frame' */ + result = InfoFrameCmd(clientData, interp, objc, objv); + break; +#endif case IFunctionsIdx: result = InfoFunctionsCmd(clientData, interp, objc, objv); break; @@ -997,6 +1036,243 @@ InfoExistsCmd(dummy, interp, objc, objv) return TCL_OK; } +#ifdef TCL_TIP280 +/* + *---------------------------------------------------------------------- + * + * InfoFrameCmd -- + * TIP #280 + * + * Called to implement the "info frame" command that returns the + * location of either the currently executing command, or its caller. + * Handles the following syntax: + * + * info frame ?number? + * + * Results: + * Returns TCL_OK if successful and TCL_ERROR if there is an error. + * + * Side effects: + * Returns a result in the interpreter's result object. If there is + * an error, the result is an error message. + * + *---------------------------------------------------------------------- + */ + +static int +InfoFrameCmd(dummy, interp, objc, objv) + ClientData dummy; /* Not used. */ + Tcl_Interp *interp; /* Current interpreter. */ + int objc; /* Number of arguments. */ + Tcl_Obj *CONST objv[]; /* Argument objects. */ +{ + Interp *iPtr = (Interp *) interp; + + if (objc == 2) { + /* just "info frame" */ + int levels = (iPtr->cmdFramePtr == NULL + ? 0 + : iPtr->cmdFramePtr->level); + + Tcl_SetIntObj(Tcl_GetObjResult(interp), levels); + return TCL_OK; + + } else if (objc == 3) { + /* "info frame level" */ + int level; + CmdFrame *framePtr; + + if (Tcl_GetIntFromObj(interp, objv[2], &level) != TCL_OK) { + return TCL_ERROR; + } + if (level <= 0) { + /* Relative adressing */ + + if (iPtr->cmdFramePtr == NULL) { + levelError: + Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), + "bad level \"", + Tcl_GetString(objv[2]), + "\"", (char *) NULL); + return TCL_ERROR; + } + /* Convert to absolute. */ + + level += iPtr->cmdFramePtr->level; + } + for (framePtr = iPtr->cmdFramePtr; + framePtr != NULL; + framePtr = framePtr->nextPtr) { + + if (framePtr->level == level) { + break; + } + } + if (framePtr == NULL) { + goto levelError; + } + + /* + * Pull the information and construct the dictionary to return, as + * list. Regarding use of the CmdFrame fields see tclInt.h, and its + * definition. + */ + + { + Tcl_Obj* lv [20]; /* Keep uptodate when more keys are added to the dict */ + int lc = 0; + + /* This array is indexed by the TCL_LOCATION_... values, except + * for _LAST. + */ + + static CONST char* typeString [TCL_LOCATION_LAST] = { + "eval", "eval", "eval", "precompiled", "source", "proc" + }; + + switch (framePtr->type) { + case TCL_LOCATION_EVAL: + /* Evaluation, dynamic script. Type, line, cmd, the latter + * through str. */ + + lv [lc ++] = Tcl_NewStringObj ("type",-1); + lv [lc ++] = Tcl_NewStringObj (typeString [framePtr->type],-1); + lv [lc ++] = Tcl_NewStringObj ("line",-1); + lv [lc ++] = Tcl_NewIntObj (framePtr->line[0]); + lv [lc ++] = Tcl_NewStringObj ("cmd",-1); + lv [lc ++] = Tcl_NewStringObj (framePtr->cmd.str.cmd, + framePtr->cmd.str.len); + break; + + case TCL_LOCATION_EVAL_LIST: + /* List optimized evaluation. Type, line, cmd, the latter + * through listPtr, possibly a frame. */ + + lv [lc ++] = Tcl_NewStringObj ("type",-1); + lv [lc ++] = Tcl_NewStringObj (typeString [framePtr->type],-1); + lv [lc ++] = Tcl_NewStringObj ("line",-1); + lv [lc ++] = Tcl_NewIntObj (framePtr->line[0]); + + /* We put a duplicate of the command list obj into the result + * to ensure that the 'pure List'-property of the command + * itself is not destroyed. Otherwise the query here would + * disable the list optimization path in Tcl_EvalObjEx. + */ + + lv [lc ++] = Tcl_NewStringObj ("cmd",-1); + lv [lc ++] = Tcl_DuplicateObj (framePtr->cmd.listPtr); + break; + + case TCL_LOCATION_PREBC: + /* Precompiled. Result contains the type as signal, nothing + * else */ + + lv [lc ++] = Tcl_NewStringObj ("type",-1); + lv [lc ++] = Tcl_NewStringObj (typeString [framePtr->type],-1); + break; + + case TCL_LOCATION_BC: { + /* Execution of bytecode. Talk to the BC engine to fill out + * the frame. */ + + CmdFrame f = *framePtr; + Proc* procPtr = f.framePtr ? f.framePtr->procPtr : NULL; + + /* Note: Type BC => f.data.eval.path is not used. + * f.data.tebc.codePtr is used instead. + */ + + TclGetSrcInfoForPc (&f); + /* Now filled: cmd.str.(cmd,len), line */ + /* Possibly modified: type, path! */ + + lv [lc ++] = Tcl_NewStringObj ("type",-1); + lv [lc ++] = Tcl_NewStringObj (typeString [f.type],-1); + lv [lc ++] = Tcl_NewStringObj ("line",-1); + lv [lc ++] = Tcl_NewIntObj (f.line[0]); + + if (f.type == TCL_LOCATION_SOURCE) { + lv [lc ++] = Tcl_NewStringObj ("file",-1); + lv [lc ++] = f.data.eval.path; + /* Death of reference by TclGetSrcInfoForPc */ + Tcl_DecrRefCount (f.data.eval.path); + } + + lv [lc ++] = Tcl_NewStringObj ("cmd",-1); + lv [lc ++] = Tcl_NewStringObj (f.cmd.str.cmd, f.cmd.str.len); + + if (procPtr != NULL) { + Tcl_HashEntry* namePtr = procPtr->cmdPtr->hPtr; + char* procName = Tcl_GetHashKey (namePtr->tablePtr, namePtr); + char* nsName = procPtr->cmdPtr->nsPtr->fullName; + + lv [lc ++] = Tcl_NewStringObj ("proc",-1); + lv [lc ++] = Tcl_NewStringObj (nsName,-1); + + if (strcmp (nsName, "::") != 0) { + Tcl_AppendToObj (lv [lc-1], "::", -1); + } + Tcl_AppendToObj (lv [lc-1], procName, -1); + } + break; + } + + case TCL_LOCATION_SOURCE: + /* Evaluation of a script file */ + + lv [lc ++] = Tcl_NewStringObj ("type",-1); + lv [lc ++] = Tcl_NewStringObj (typeString [framePtr->type],-1); + lv [lc ++] = Tcl_NewStringObj ("line",-1); + lv [lc ++] = Tcl_NewIntObj (framePtr->line[0]); + lv [lc ++] = Tcl_NewStringObj ("file",-1); + lv [lc ++] = framePtr->data.eval.path; + /* Refcount framePtr->data.eval.path goes up when lv + * is converted into the result list object. + */ + lv [lc ++] = Tcl_NewStringObj ("cmd",-1); + lv [lc ++] = Tcl_NewStringObj (framePtr->cmd.str.cmd, + framePtr->cmd.str.len); + break; + + case TCL_LOCATION_PROC: + Tcl_Panic ("TCL_LOCATION_PROC found in standard frame"); + break; + } + + + /* 'level'. Common to all frame types. Conditional on having an + * associated _visible_ CallFrame */ + + if ((framePtr->framePtr != NULL) && (iPtr->varFramePtr != NULL)) { + CallFrame* current = framePtr->framePtr; + CallFrame* top = iPtr->varFramePtr; + CallFrame* idx; + + for (idx = top; + idx != NULL; + idx = idx->callerVarPtr) { + if (idx == current) { + int c = framePtr->framePtr->level; + int t = iPtr->varFramePtr->level; + + lv [lc ++] = Tcl_NewStringObj ("level",-1); + lv [lc ++] = Tcl_NewIntObj (t - c); + break; + } + } + } + + Tcl_SetObjResult(interp, Tcl_NewListObj (lc, lv)); + return TCL_OK; + } + } + + Tcl_WrongNumArgs(interp, 2, objv, "?number?"); + + return TCL_ERROR; +} +#endif + /* *---------------------------------------------------------------------- * @@ -3993,3 +4269,12 @@ DictionaryCompare(left, right) } return diff; } + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ + diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 1613799..d4a8732 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.26 2006/04/11 14:37:04 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.27 2006/11/28 22:20:00 andreas_kupries Exp $ */ #include "tclInt.h" @@ -138,6 +138,10 @@ static void TraceCommandProc _ANSI_ARGS_((ClientData clientData, CONST char *newName, int flags)); static Tcl_CmdObjTraceProc TraceExecutionProc; +#ifdef TCL_TIP280 +static void ListLines _ANSI_ARGS_((CONST char* listStr, int line, + int n, int* lines)); +#endif /* *---------------------------------------------------------------------- * @@ -2729,6 +2733,15 @@ Tcl_SwitchObjCmd(dummy, interp, objc, objv) char *string, *pattern; Tcl_Obj *stringObj; Tcl_Obj *CONST *savedObjv = objv; +#ifdef TCL_TIP280 + Interp* iPtr = (Interp*) interp; + int pc = 0; + int bidx = 0; /* Index of body argument */ + Tcl_Obj* blist = NULL; /* List obj which is the body */ + CmdFrame ctx; /* Copy of the topmost cmdframe, + * to allow us to mess with the + * line information */ +#endif static CONST char *options[] = { "-exact", "-glob", "-regexp", "--", NULL @@ -2763,16 +2776,25 @@ Tcl_SwitchObjCmd(dummy, interp, objc, objv) stringObj = objv[i]; objc -= i + 1; objv += i + 1; +#ifdef TCL_TIP280 + bidx = i+1; /* First after the match string */ +#endif /* * If all of the pattern/command pairs are lumped into a single * argument, split them out again. + * + * TIP #280: Determine the lines the words in the list start at, based on + * the same data for the list word itself. The cmdFramePtr line information + * is manipulated directly. */ splitObjs = 0; if (objc == 1) { Tcl_Obj **listv; - +#ifdef TCL_TIP280 + blist = objv[0]; +#endif if (Tcl_ListObjGetElements(interp, objv[0], &objc, &listv) != TCL_OK) { return TCL_ERROR; } @@ -2871,8 +2893,58 @@ Tcl_SwitchObjCmd(dummy, interp, objc, objv) /* * We've got a match. Find a body to execute, skipping bodies * that are "-". + * + * TIP#280: Now is also the time to determine a line number for the + * single-word case. */ +#ifdef TCL_TIP280 + ctx = *iPtr->cmdFramePtr; + + if (splitObjs) { + /* We have to perform the GetSrc and other type dependent handling + * of the frame here because we are munging with the line numbers, + * something the other commands like if, etc. are not doing. Them + * are fine with simply passing the CmdFrame through and having + * the special handling done in 'info frame', or the bc compiler + */ + + if (ctx.type == TCL_LOCATION_BC) { + /* Note: Type BC => ctx.data.eval.path is not used. + * ctx.data.tebc.codePtr is used instead. + */ + TclGetSrcInfoForPc (&ctx); + pc = 1; + /* The line information in the cmdFrame is now a copy we do + * not own */ + } + + if (ctx.type == TCL_LOCATION_SOURCE) { + int bline = ctx.line [bidx]; + if (bline >= 0) { + ctx.line = (int*) ckalloc (objc * sizeof(int)); + ctx.nline = objc; + + ListLines (Tcl_GetString (blist), bline, objc, ctx.line); + } else { + int k; + /* Dynamic code word ... All elements are relative to themselves */ + + ctx.line = (int*) ckalloc (objc * sizeof(int)); + ctx.nline = objc; + for (k=0; k < objc; k++) {ctx.line[k] = -1;} + } + } else { + int k; + /* Anything else ... No information, or dynamic ... */ + + ctx.line = (int*) ckalloc (objc * sizeof(int)); + ctx.nline = objc; + for (k=0; k < objc; k++) {ctx.line[k] = -1;} + } + } +#endif + for (j = i + 1; ; j += 2) { if (j >= objc) { /* @@ -2885,7 +2957,19 @@ Tcl_SwitchObjCmd(dummy, interp, objc, objv) break; } } +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[j], 0); +#else + /* TIP #280. Make invoking context available to switch branch */ + result = TclEvalObjEx(interp, objv[j], 0, &ctx, j); + if (splitObjs) { + ckfree ((char*) ctx.line); + if (pc && (ctx.type == TCL_LOCATION_SOURCE)) { + /* Death of SrcInfo reference */ + Tcl_DecrRefCount (ctx.data.eval.path); + } + } +#endif if (result == TCL_ERROR) { char msg[100 + TCL_INTEGER_SPACE]; @@ -4860,6 +4944,9 @@ Tcl_WhileObjCmd(dummy, interp, objc, objv) Tcl_Obj *CONST objv[]; /* Argument objects. */ { int result, value; +#ifdef TCL_TIP280 + Interp* iPtr = (Interp*) interp; +#endif if (objc != 3) { Tcl_WrongNumArgs(interp, 1, objv, "test command"); @@ -4874,7 +4961,12 @@ Tcl_WhileObjCmd(dummy, interp, objc, objv) if (!value) { break; } +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[2], 0); +#else + /* TIP #280. */ + result = TclEvalObjEx(interp, objv[2], 0, iPtr->cmdFramePtr,2); +#endif if ((result != TCL_OK) && (result != TCL_CONTINUE)) { if (result == TCL_ERROR) { char msg[32 + TCL_INTEGER_SPACE]; @@ -4894,4 +4986,45 @@ Tcl_WhileObjCmd(dummy, interp, objc, objv) } return result; } + +#ifdef TCL_TIP280 +static void +ListLines(listStr, line, n, lines) + CONST char* listStr; /* Pointer to string with list structure. + * Assumed to be valid. Assumed to contain + * n elements. + */ + int line; /* line the list as a whole starts on */ + int n; /* #elements in lines */ + int* lines; /* Array of line numbers, to fill */ +{ + int i; + int length = strlen( listStr); + CONST char *element = NULL; + CONST char* next = NULL; + + for (i = 0; i < n; i++) { + TclFindElement(NULL, listStr, length, &element, &next, NULL, NULL); + + TclAdvanceLines (&line, listStr, element); /* Leading whitespace */ + lines [i] = line; + length -= (next - listStr); + TclAdvanceLines (&line, element, next); /* Element */ + listStr = next; + + if (*element == 0) { + /* ASSERT i == n */ + break; + } + } +} +#endif + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 300feb2..0737ab2 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.3 2005/03/18 15:32:29 dgp Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.4 2006/11/28 22:20:00 andreas_kupries Exp $ */ #include "tclInt.h" @@ -23,9 +23,16 @@ static ClientData DupForeachInfo _ANSI_ARGS_((ClientData clientData)); static void FreeForeachInfo _ANSI_ARGS_((ClientData clientData)); +#ifndef TCL_TIP280 static int TclPushVarName _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Token *varTokenPtr, CompileEnv *envPtr, int flags, int *localIndexPtr, int *simpleVarNamePtr, int *isScalarPtr)); +#else +static int TclPushVarName _ANSI_ARGS_((Tcl_Interp *interp, + Tcl_Token *varTokenPtr, CompileEnv *envPtr, int flags, + int *localIndexPtr, int *simpleVarNamePtr, int *isScalarPtr, + int line)); +#endif /* * Flags bits used by TclPushVarName. @@ -78,6 +85,16 @@ TclCompileAppendCmd(interp, parsePtr, envPtr) int simpleVarName, isScalar, localIndex, numWords; int code = TCL_OK; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + numWords = parsePtr->numWords; if (numWords == 1) { Tcl_ResetResult(interp); @@ -109,7 +126,12 @@ TclCompileAppendCmd(interp, parsePtr, envPtr) + (parsePtr->tokenPtr->numComponents + 1); code = TclPushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, +#ifndef TCL_TIP280 &localIndex, &simpleVarName, &isScalar); +#else + &localIndex, &simpleVarName, &isScalar, + mapPtr->loc [eclIndex].line [1]); +#endif if (code != TCL_OK) { goto done; } @@ -126,6 +148,9 @@ TclCompileAppendCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, valueTokenPtr[1].start, valueTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [2]; +#endif code = TclCompileTokens(interp, valueTokenPtr+1, valueTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -246,6 +271,16 @@ TclCompileCatchCmd(interp, parsePtr, envPtr) int code; int savedStackDepth = envPtr->currStackDepth; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + if ((parsePtr->numWords != 2) && (parsePtr->numWords != 3)) { Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), @@ -308,6 +343,9 @@ TclCompileCatchCmd(interp, parsePtr, envPtr) * errors in the substitution are not catched [Bug 219184] */ +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [1]; +#endif if (cmdTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) { startOffset = (envPtr->codeNext - envPtr->codeStart); code = TclCompileCmdWord(interp, cmdTokenPtr+1, 1, envPtr); @@ -462,6 +500,11 @@ TclCompileExprCmd(interp, parsePtr, envPtr) return TCL_ERROR; } +#ifdef TCL_TIP280 + /* TIP #280 : Use the per-word line information of the current command. + */ + envPtr->line = envPtr->extCmdMapPtr->loc [envPtr->extCmdMapPtr->nuloc - 1].line [1]; +#endif firstWordPtr = parsePtr->tokenPtr + (parsePtr->tokenPtr->numComponents + 1); return TclCompileExprWords(interp, firstWordPtr, (parsePtr->numWords-1), @@ -500,6 +543,16 @@ TclCompileForCmd(interp, parsePtr, envPtr) char buffer[32 + TCL_INTEGER_SPACE]; int savedStackDepth = envPtr->currStackDepth; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + if (parsePtr->numWords != 5) { Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), @@ -548,6 +601,9 @@ TclCompileForCmd(interp, parsePtr, envPtr) * Inline compile the initial command. */ +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [1]; +#endif code = TclCompileCmdWord(interp, startTokenPtr+1, startTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -579,6 +635,9 @@ TclCompileForCmd(interp, parsePtr, envPtr) bodyCodeOffset = (envPtr->codeNext - envPtr->codeStart); +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [4]; +#endif code = TclCompileCmdWord(interp, bodyTokenPtr+1, bodyTokenPtr->numComponents, envPtr); envPtr->currStackDepth = savedStackDepth + 1; @@ -601,6 +660,9 @@ TclCompileForCmd(interp, parsePtr, envPtr) nextCodeOffset = (envPtr->codeNext - envPtr->codeStart); +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [3]; +#endif envPtr->currStackDepth = savedStackDepth; code = TclCompileCmdWord(interp, nextTokenPtr+1, nextTokenPtr->numComponents, envPtr); @@ -631,7 +693,9 @@ TclCompileForCmd(interp, parsePtr, envPtr) nextCodeOffset += 3; testCodeOffset += 3; } - +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [2]; +#endif envPtr->currStackDepth = savedStackDepth; code = TclCompileExprWords(interp, testTokenPtr, 1, envPtr); if (code != TCL_OK) { @@ -722,6 +786,17 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) char buffer[32 + TCL_INTEGER_SPACE]; int savedStackDepth = envPtr->currStackDepth; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; + int bodyIndex; +#endif + /* * We parse the variable list argument words and create two arrays: * varcList[i] is number of variables in i-th var list @@ -763,6 +838,9 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) if (bodyTokenPtr->type != TCL_TOKEN_SIMPLE_WORD) { return TCL_OUT_LINE_COMPILE; } +#ifdef TCL_TIP280 + bodyIndex = i-1; +#endif /* * Allocate storage for the varcList and varvList arrays if necessary. @@ -886,6 +964,9 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) i < numWords-1; i++, tokenPtr += (tokenPtr->numComponents + 1)) { if ((i%2 == 0) && (i > 0)) { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [i]; +#endif code = TclCompileTokens(interp, tokenPtr+1, tokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -923,6 +1004,9 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) * Inline compile the loop body. */ +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [bodyIndex]; +#endif envPtr->exceptArrayPtr[range].codeOffset = (envPtr->codeNext - envPtr->codeStart); code = TclCompileCmdWord(interp, bodyTokenPtr+1, @@ -1152,6 +1236,16 @@ TclCompileIfCmd(interp, parsePtr, envPtr) int boolVal; /* value of static condition */ int compileScripts = 1; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + /* * Only compile the "if" command if all arguments are simple * words, in order to insure correct substitution [Bug 219166] @@ -1233,6 +1327,9 @@ TclCompileIfCmd(interp, parsePtr, envPtr) } } else { Tcl_ResetResult(interp); +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [wordIdx]; +#endif code = TclCompileExprWords(interp, testTokenPtr, 1, envPtr); if (code != TCL_OK) { if (code == TCL_ERROR) { @@ -1289,6 +1386,9 @@ TclCompileIfCmd(interp, parsePtr, envPtr) */ if (compileScripts) { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [wordIdx]; +#endif envPtr->currStackDepth = savedStackDepth; code = TclCompileCmdWord(interp, tokenPtr+1, tokenPtr->numComponents, envPtr); @@ -1391,7 +1491,9 @@ TclCompileIfCmd(interp, parsePtr, envPtr) /* * Compile the else command body. */ - +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [wordIdx]; +#endif code = TclCompileCmdWord(interp, tokenPtr+1, tokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1503,6 +1605,16 @@ TclCompileIncrCmd(interp, parsePtr, envPtr) int simpleVarName, isScalar, localIndex, haveImmValue, immValue; int code = TCL_OK; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + if ((parsePtr->numWords != 2) && (parsePtr->numWords != 3)) { Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), @@ -1515,7 +1627,12 @@ TclCompileIncrCmd(interp, parsePtr, envPtr) code = TclPushVarName(interp, varTokenPtr, envPtr, (TCL_NO_LARGE_INDEX | TCL_CREATE_VAR), +#ifndef TCL_TIP280 &localIndex, &simpleVarName, &isScalar); +#else + &localIndex, &simpleVarName, &isScalar, + mapPtr->loc [eclIndex].line [1]); +#endif if (code != TCL_OK) { goto done; } @@ -1555,6 +1672,9 @@ TclCompileIncrCmd(interp, parsePtr, envPtr) TclRegisterNewLiteral(envPtr, word, numBytes), envPtr); } } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [2]; +#endif code = TclCompileTokens(interp, incrTokenPtr+1, incrTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1647,6 +1767,16 @@ TclCompileLappendCmd(interp, parsePtr, envPtr) int simpleVarName, isScalar, localIndex, numWords; int code = TCL_OK; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + /* * If we're not in a procedure, don't compile. */ @@ -1680,7 +1810,12 @@ TclCompileLappendCmd(interp, parsePtr, envPtr) + (parsePtr->tokenPtr->numComponents + 1); code = TclPushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, +#ifndef TCL_TIP280 &localIndex, &simpleVarName, &isScalar); +#else + &localIndex, &simpleVarName, &isScalar, + mapPtr->loc [eclIndex].line [1]); +#endif if (code != TCL_OK) { goto done; } @@ -1696,6 +1831,9 @@ TclCompileLappendCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, valueTokenPtr[1].start, valueTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [2]; +#endif code = TclCompileTokens(interp, valueTokenPtr+1, valueTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1773,6 +1911,16 @@ TclCompileLindexCmd(interp, parsePtr, envPtr) Tcl_Token *varTokenPtr; int code, i; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + int numWords; numWords = parsePtr->numWords; @@ -1797,6 +1945,9 @@ TclCompileLindexCmd(interp, parsePtr, envPtr) TclRegisterNewLiteral( envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [i]; +#endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1850,6 +2001,16 @@ TclCompileListCmd(interp, parsePtr, envPtr) * command created by Tcl_ParseCommand. */ CompileEnv *envPtr; /* Holds resulting instructions. */ { +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + /* * If we're not in a procedure, don't compile. */ @@ -1879,6 +2040,9 @@ TclCompileListCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, valueTokenPtr[1].start, valueTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [i]; +#endif code = TclCompileTokens(interp, valueTokenPtr+1, valueTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1924,6 +2088,16 @@ TclCompileLlengthCmd(interp, parsePtr, envPtr) Tcl_Token *varTokenPtr; int code; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + if (parsePtr->numWords != 2) { Tcl_SetResult(interp, "wrong # args: should be \"llength list\"", TCL_STATIC); @@ -1940,6 +2114,9 @@ TclCompileLlengthCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [1]; +#endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2015,6 +2192,16 @@ TclCompileLsetCmd( interp, parsePtr, envPtr ) int i; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + /* Check argument count */ if ( parsePtr->numWords < 3 ) { @@ -2033,7 +2220,12 @@ TclCompileLsetCmd( interp, parsePtr, envPtr ) varTokenPtr = parsePtr->tokenPtr + (parsePtr->tokenPtr->numComponents + 1); result = TclPushVarName( interp, varTokenPtr, envPtr, +#ifndef TCL_TIP280 TCL_CREATE_VAR, &localIndex, &simpleVarName, &isScalar ); +#else + TCL_CREATE_VAR, &localIndex, &simpleVarName, &isScalar, + mapPtr->loc [eclIndex].line [1]); +#endif if (result != TCL_OK) { return result; } @@ -2052,6 +2244,9 @@ TclCompileLsetCmd( interp, parsePtr, envPtr ) TclEmitPush(TclRegisterNewLiteral( envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [i]; +#endif result = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if ( result != TCL_OK ) { @@ -2182,6 +2377,16 @@ TclCompileRegexpCmd(interp, parsePtr, envPtr) int i, len, code, nocase, anchorLeft, anchorRight, start; char *str; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + /* * We are only interested in compiling simple regexp cases. * Currently supported compile cases are: @@ -2329,6 +2534,9 @@ TclCompileRegexpCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [parsePtr->numWords-1]; +#endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2379,6 +2587,16 @@ TclCompileReturnCmd(interp, parsePtr, envPtr) int code; int index = envPtr->exceptArrayNext - 1; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + /* * If we're not in a procedure, don't compile. */ @@ -2436,6 +2654,9 @@ TclCompileReturnCmd(interp, parsePtr, envPtr) * "return" will be byte-compiled; otherwise it will be * out line compiled. */ +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [1]; +#endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2496,6 +2717,16 @@ TclCompileSetCmd(interp, parsePtr, envPtr) int isAssignment, isScalar, simpleVarName, localIndex, numWords; int code = TCL_OK; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + numWords = parsePtr->numWords; if ((numWords != 2) && (numWords != 3)) { Tcl_ResetResult(interp); @@ -2517,7 +2748,12 @@ TclCompileSetCmd(interp, parsePtr, envPtr) + (parsePtr->tokenPtr->numComponents + 1); code = TclPushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, +#ifndef TCL_TIP280 &localIndex, &simpleVarName, &isScalar); +#else + &localIndex, &simpleVarName, &isScalar, + mapPtr->loc [eclIndex].line [1]); +#endif if (code != TCL_OK) { goto done; } @@ -2532,6 +2768,9 @@ TclCompileSetCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, valueTokenPtr[1].start, valueTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [2]; +#endif code = TclCompileTokens(interp, valueTokenPtr+1, valueTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2634,6 +2873,16 @@ TclCompileStringCmd(interp, parsePtr, envPtr) STR_WORDEND, STR_WORDSTART }; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + if (parsePtr->numWords < 2) { /* Fail at run time, not in compilation */ return TCL_OUT_LINE_COMPILE; @@ -2695,6 +2944,9 @@ TclCompileStringCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [i]; +#endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2725,6 +2977,9 @@ TclCompileStringCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [i]; +#endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2755,6 +3010,9 @@ TclCompileStringCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, buf, len), envPtr); return TCL_OK; } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [2]; +#endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2812,6 +3070,9 @@ TclCompileStringCmd(interp, parsePtr, envPtr) TclEmitPush( TclRegisterNewLiteral(envPtr, str, length), envPtr); } else { +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [i]; +#endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2928,6 +3189,16 @@ TclCompileWhileCmd(interp, parsePtr, envPtr) Tcl_Obj *boolObj; int boolVal; +#ifdef TCL_TIP280 + /* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation + * may reallocate, i.e. move, the array. This is also the reason to save + * the nuloc now, it may change during the course of the function. + */ + ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; + int eclIndex = mapPtr->nuloc - 1; +#endif + if (parsePtr->numWords != 3) { Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), @@ -3013,6 +3284,9 @@ TclCompileWhileCmd(interp, parsePtr, envPtr) * Compile the loop body. */ +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [2]; +#endif bodyCodeOffset = (envPtr->codeNext - envPtr->codeStart); code = TclCompileCmdWord(interp, bodyTokenPtr+1, bodyTokenPtr->numComponents, envPtr); @@ -3042,6 +3316,9 @@ TclCompileWhileCmd(interp, parsePtr, envPtr) testCodeOffset += 3; } envPtr->currStackDepth = savedStackDepth; +#ifdef TCL_TIP280 + envPtr->line = mapPtr->loc [eclIndex].line [1]; +#endif code = TclCompileExprWords(interp, testTokenPtr, 1, envPtr); if (code != TCL_OK) { if (code == TCL_ERROR) { @@ -3114,7 +3391,11 @@ TclCompileWhileCmd(interp, parsePtr, envPtr) static int TclPushVarName(interp, varTokenPtr, envPtr, flags, localIndexPtr, +#ifndef TCL_TIP280 simpleVarNamePtr, isScalarPtr) +#else + simpleVarNamePtr, isScalarPtr, line) +#endif Tcl_Interp *interp; /* Used for error reporting. */ Tcl_Token *varTokenPtr; /* Points to a variable token. */ CompileEnv *envPtr; /* Holds resulting instructions. */ @@ -3123,6 +3404,9 @@ TclPushVarName(interp, varTokenPtr, envPtr, flags, localIndexPtr, int *localIndexPtr; /* must not be NULL */ int *simpleVarNamePtr; /* must not be NULL */ int *isScalarPtr; /* must not be NULL */ +#ifdef TCL_TIP280 + int line; /* line the token starts on */ +#endif { register CONST char *p; CONST char *name, *elName; @@ -3304,6 +3588,9 @@ TclPushVarName(interp, varTokenPtr, envPtr, flags, localIndexPtr, if (elName != NULL) { if (elNameChars) { +#ifdef TCL_TIP280 + envPtr->line = line; +#endif code = TclCompileTokens(interp, elemTokenPtr, elemTokenCount, envPtr); if (code != TCL_OK) { @@ -3318,6 +3605,9 @@ TclPushVarName(interp, varTokenPtr, envPtr, flags, localIndexPtr, * The var name isn't simple: compile and push it. */ +#ifdef TCL_TIP280 + envPtr->line = line; +#endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -3337,3 +3627,12 @@ TclPushVarName(interp, varTokenPtr, envPtr, flags, localIndexPtr, *isScalarPtr = (elName == NULL); return code; } + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ + diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index bedf35d..3ff749b 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompExpr.c,v 1.13.2.2 2005/11/27 02:34:41 das Exp $ + * RCS: @(#) $Id: tclCompExpr.c,v 1.13.2.3 2006/11/28 22:20:00 andreas_kupries Exp $ */ #include "tclInt.h" @@ -258,6 +258,11 @@ TclCompileExpr(interp, script, numBytes, envPtr) goto done; } +#ifdef TCL_TIP280 + /* TIP #280 : Track Lines within the expression */ + TclAdvanceLines (&envPtr->line, script, parse.tokenPtr->start); +#endif + code = CompileSubExpr(parse.tokenPtr, &info, envPtr); if (code != TCL_OK) { Tcl_FreeParse(&parse); diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 88f029c..4a6fac5 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.6 2004/06/08 19:45:26 msofer Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.7 2006/11/28 22:20:00 andreas_kupries Exp $ */ #include "tclInt.h" @@ -301,6 +301,16 @@ static void RecordByteCodeStats _ANSI_ARGS_(( static int SetByteCodeFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); +#ifdef TCL_TIP280 +/* TIP #280 : Helper for building the per-word line information of all + * compiled commands */ +static void EnterCmdWordData _ANSI_ARGS_(( + ExtCmdLoc *eclPtr, int srcOffset, Tcl_Token* tokenPtr, + CONST char* cmd, int len, int numWords, int line, + int** lines)); +#endif + + /* * The structure below defines the bytecode Tcl object type by * means of procedures that can be invoked by generic object code. @@ -374,7 +384,19 @@ TclSetByteCodeFromAny(interp, objPtr, hookProc, clientData) nested = 0; } string = Tcl_GetStringFromObj(objPtr, &length); +#ifndef TCL_TIP280 TclInitCompileEnv(interp, &compEnv, string, length); +#else + /* + * TIP #280. Pick up the CmdFrame in which the BC compiler was invoked + * and use to initialize the tracking in the compiler. This information + * was stored by TclCompEvalObj (tclExecute.c), and ProcCompileProc + * (tclProc.c). + */ + + TclInitCompileEnv(interp, &compEnv, string, length, + iPtr->invokeCmdFramePtr, iPtr->invokeWord); +#endif result = TclCompileScript(interp, string, length, nested, &compEnv); if (result == TCL_OK) { @@ -566,6 +588,9 @@ TclCleanupByteCode(codePtr) register ByteCode *codePtr; /* Points to the ByteCode to free. */ { Tcl_Interp *interp = (Tcl_Interp *) *codePtr->interpHandle; +#ifdef TCL_TIP280 + Interp* iPtr = (Interp*) interp; +#endif int numLitObjects = codePtr->numLitObjects; int numAuxDataItems = codePtr->numAuxDataItems; register Tcl_Obj **objArrayPtr; @@ -663,6 +688,38 @@ TclCleanupByteCode(codePtr) auxDataPtr++; } +#ifdef TCL_TIP280 + /* + * TIP #280. Release the location data associated with this byte code + * structure, if any. NOTE: The interp we belong to may be gone already, + * and the data with it. + * + * See also tclBasic.c, DeleteInterpProc + */ + + if (iPtr) { + Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); + if (hePtr) { + ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); + int i; + + if (eclPtr->type == TCL_LOCATION_SOURCE) { + Tcl_DecrRefCount (eclPtr->path); + } + for (i=0; i< eclPtr->nuloc; i++) { + ckfree ((char*) eclPtr->loc[i].line); + } + + if (eclPtr->loc != NULL) { + ckfree ((char*) eclPtr->loc); + } + + ckfree ((char*) eclPtr); + Tcl_DeleteHashEntry (hePtr); + } + } +#endif + TclHandleRelease(codePtr->interpHandle); ckfree((char *) codePtr); } @@ -685,13 +742,22 @@ TclCleanupByteCode(codePtr) */ void +#ifndef TCL_TIP280 TclInitCompileEnv(interp, envPtr, string, numBytes) +#else +TclInitCompileEnv(interp, envPtr, string, numBytes, invoker, word) +#endif Tcl_Interp *interp; /* The interpreter for which a CompileEnv * structure is initialized. */ register CompileEnv *envPtr; /* Points to the CompileEnv structure to * initialize. */ char *string; /* The source string to be compiled. */ int numBytes; /* Number of bytes in source string. */ +#ifdef TCL_TIP280 + CONST CmdFrame* invoker; /* Location context invoking the bcc */ + int word; /* Index of the word in that context + * getting compiled */ +#endif { Interp *iPtr = (Interp *) interp; @@ -724,7 +790,74 @@ TclInitCompileEnv(interp, envPtr, string, numBytes) envPtr->cmdMapPtr = envPtr->staticCmdMapSpace; envPtr->cmdMapEnd = COMPILEENV_INIT_CMD_MAP_SIZE; envPtr->mallocedCmdMap = 0; - + +#ifdef TCL_TIP280 + /* + * TIP #280: Set up the extended command location information, based on + * the context invoking the byte code compiler. This structure is used to + * keep the per-word line information for all compiled commands. + * + * See also tclBasic.c, TclEvalObjEx, for the equivalent code in the + * non-compiling evaluator + */ + + envPtr->extCmdMapPtr = (ExtCmdLoc*) ckalloc (sizeof (ExtCmdLoc)); + envPtr->extCmdMapPtr->loc = NULL; + envPtr->extCmdMapPtr->nloc = 0; + envPtr->extCmdMapPtr->nuloc = 0; + envPtr->extCmdMapPtr->path = NULL; + + if (invoker == NULL) { + /* Initialize the compiler for relative counting */ + + envPtr->line = 1; + envPtr->extCmdMapPtr->type = (envPtr->procPtr + ? TCL_LOCATION_PROC + : TCL_LOCATION_BC); + } else { + /* Initialize the compiler using the context, making counting absolute + * to that context. Note that the context can be byte code + * execution. In that case we have to fill out the missing pieces + * (line, path, ...). Which may make change the type as well. + */ + + if ((invoker->nline <= word) || (invoker->line[word] < 0)) { + /* Word is not a literal, relative counting */ + + envPtr->line = 1; + envPtr->extCmdMapPtr->type = (envPtr->procPtr + ? TCL_LOCATION_PROC + : TCL_LOCATION_BC); + } else { + CmdFrame ctx = *invoker; + int pc = 0; + + if (invoker->type == TCL_LOCATION_BC) { + /* Note: Type BC => ctx.data.eval.path is not used. + * ctx.data.tebc.codePtr is used instead. + */ + TclGetSrcInfoForPc (&ctx); + pc = 1; + } + + envPtr->line = ctx.line [word]; + envPtr->extCmdMapPtr->type = ctx.type; + + if (ctx.type == TCL_LOCATION_SOURCE) { + if (pc) { + /* The reference 'TclGetSrcInfoForPc' made is transfered */ + envPtr->extCmdMapPtr->path = ctx.data.eval.path; + ctx.data.eval.path = NULL; + } else { + /* We have a new reference here */ + envPtr->extCmdMapPtr->path = ctx.data.eval.path; + Tcl_IncrRefCount (envPtr->extCmdMapPtr->path); + } + } + } + } +#endif + envPtr->auxDataArrayPtr = envPtr->staticAuxDataArraySpace; envPtr->auxDataArrayNext = 0; envPtr->auxDataArrayEnd = COMPILEENV_INIT_AUX_DATA_SIZE; @@ -774,6 +907,54 @@ TclFreeCompileEnv(envPtr) } } +#ifdef TCL_TIP280 +/* + *---------------------------------------------------------------------- + * + * TclWordKnownAtCompileTime -- + * + * Test whether the value of a token is completely known at compile time. + * + * Results: + * Returns true if the tokenPtr argument points to a word value that is + * completely known at compile time. Generally, values that are known at + * compile time can be compiled to their values, while values that cannot + * be known until substitution at runtime must be compiled to bytecode + * instructions that perform that substitution. For several commands, + * whether or not arguments are known at compile time determine whether + * it is worthwhile to compile at all. + * + * Side effects: + * None. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +int +TclWordKnownAtCompileTime (tokenPtr) + Tcl_Token* tokenPtr; +{ + int i; + Tcl_Token* sub; + + if (tokenPtr->type == TCL_TOKEN_SIMPLE_WORD) {return 1;}; + if (tokenPtr->type != TCL_TOKEN_WORD) {return 0;}; + + /* Check the sub tokens of the word. It is a literal if we find + * only BS and TEXT tokens */ + + for (i=0, sub = tokenPtr + 1; + i < tokenPtr->numComponents; + i++, sub ++) { + if (sub->type == TCL_TOKEN_TEXT) continue; + if (sub->type == TCL_TOKEN_BS) continue; + return 0; + } + return 1; +} +#endif + /* *---------------------------------------------------------------------- * @@ -828,6 +1009,13 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) int commandLength, objIndex, code; Tcl_DString ds; +#ifdef TCL_TIP280 + /* TIP #280 */ + ExtCmdLoc* eclPtr = envPtr->extCmdMapPtr; + int* wlines; + int wlineat, cmdLine; +#endif + Tcl_DStringInit(&ds); if (numBytes < 0) { @@ -844,6 +1032,10 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) p = script; bytesLeft = numBytes; gotParse = 0; +#ifdef TCL_TIP280 + cmdLine = envPtr->line; +#endif + do { if (Tcl_ParseCommand(interp, p, bytesLeft, nested, &parse) != TCL_OK) { code = TCL_ERROR; @@ -952,10 +1144,28 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) startCodeOffset = (envPtr->codeNext - envPtr->codeStart); EnterCmdStartData(envPtr, currCmdIndex, (parse.commandStart - envPtr->source), startCodeOffset); - + +#ifdef TCL_TIP280 + /* TIP #280. Scan the words and compute the extended location + * information. The map first contain full per-word line + * information for use by the compiler. This is later replaced by + * a reduced form which signals non-literal words, stored in + * 'wlines'. + */ + + TclAdvanceLines (&cmdLine, p, parse.commandStart); + EnterCmdWordData (eclPtr, (parse.commandStart - envPtr->source), + parse.tokenPtr, parse.commandStart, parse.commandSize, + parse.numWords, cmdLine, &wlines); + wlineat = eclPtr->nuloc - 1; +#endif + for (wordIdx = 0, tokenPtr = parse.tokenPtr; wordIdx < parse.numWords; wordIdx++, tokenPtr += (tokenPtr->numComponents + 1)) { +#ifdef TCL_TIP280 + envPtr->line = eclPtr->loc [wlineat].line [wordIdx]; +#endif if (tokenPtr->type == TCL_TOKEN_SIMPLE_WORD) { /* * If this is the first word and the command has a @@ -1039,7 +1249,6 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) /* * The word is not a simple string of characters. */ - code = TclCompileTokens(interp, tokenPtr+1, tokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1070,15 +1279,27 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) EnterCmdExtentData(envPtr, currCmdIndex, commandLength, (envPtr->codeNext-envPtr->codeStart) - startCodeOffset); isFirstCmd = 0; + +#ifdef TCL_TIP280 + /* TIP #280: Free full form of per-word line data and insert + * the reduced form now + */ + ckfree ((char*) eclPtr->loc [wlineat].line); + eclPtr->loc [wlineat].line = wlines; +#endif } /* end if parse.numWords > 0 */ /* * Advance to the next command in the script. */ - + next = parse.commandStart + parse.commandSize; bytesLeft -= (next - p); p = next; +#ifdef TCL_TIP280 + /* TIP #280 : Track lines in the just compiled command */ + TclAdvanceLines (&cmdLine, parse.commandStart, p); +#endif Tcl_FreeParse(&parse); gotParse = 0; if (nested && (*parse.term == ']')) { @@ -1551,6 +1772,9 @@ TclInitByteCodeObj(objPtr, envPtr) int numLitObjects = envPtr->literalArrayNext; Namespace *namespacePtr; int i; +#ifdef TCL_TIP280 + int new; +#endif Interp *iPtr; iPtr = envPtr->iPtr; @@ -1662,6 +1886,16 @@ TclInitByteCodeObj(objPtr, envPtr) } objPtr->internalRep.otherValuePtr = (VOID *) codePtr; objPtr->typePtr = &tclByteCodeType; + +#ifdef TCL_TIP280 + /* TIP #280. Associate the extended per-word line information with the + * byte code object (internal rep), for use with the bc compiler. + */ + + Tcl_SetHashValue (Tcl_CreateHashEntry (iPtr->lineBCPtr, (char*) codePtr, &new), + envPtr->extCmdMapPtr); + envPtr->extCmdMapPtr = NULL; +#endif } /* @@ -2135,6 +2369,98 @@ EnterCmdExtentData(envPtr, cmdIndex, numSrcBytes, numCodeBytes) cmdLocPtr->numCodeBytes = numCodeBytes; } +#ifdef TCL_TIP280 +/* + *---------------------------------------------------------------------- + * TIP #280 + * + * EnterCmdWordData -- + * + * Registers the lines for the words of a command. This information + * is used at runtime by 'info frame'. + * + * Results: + * None. + * + * Side effects: + * Inserts word location information into the compilation + * environment envPtr for the command at index cmdIndex. The + * compilation environment's ExtCmdLoc.ECL array is grown if necessary. + * + *---------------------------------------------------------------------- + */ + +static void +EnterCmdWordData(eclPtr, srcOffset, tokenPtr, cmd, len, numWords, line, wlines) + ExtCmdLoc *eclPtr; /* Points to the map environment + * structure in which to enter command + * location information. */ + int srcOffset; /* Offset of first char of the command. */ + Tcl_Token* tokenPtr; + CONST char* cmd; + int len; + int numWords; + int line; + int** wlines; +{ + ECL* ePtr; + int wordIdx; + CONST char* last; + int wordLine; + int* wwlines; + + if (eclPtr->nuloc >= eclPtr->nloc) { + /* + * Expand the ECL array by allocating more storage from the + * heap. The currently allocated ECL entries are stored from + * eclPtr->loc[0] up to eclPtr->loc[eclPtr->nuloc-1] (inclusive). + */ + + size_t currElems = eclPtr->nloc; + size_t newElems = (currElems ? 2*currElems : 1); + size_t currBytes = currElems * sizeof(ECL); + size_t newBytes = newElems * sizeof(ECL); + ECL * newPtr = (ECL *) ckalloc((unsigned) newBytes); + + /* + * Copy from old ECL array to new, free old ECL array if + * needed. + */ + + if (currBytes) { + memcpy((VOID *) newPtr, (VOID *) eclPtr->loc, currBytes); + } + if (eclPtr->loc != NULL) { + ckfree((char *) eclPtr->loc); + } + eclPtr->loc = (ECL *) newPtr; + eclPtr->nloc = newElems; + } + + ePtr = &eclPtr->loc [eclPtr->nuloc]; + ePtr->srcOffset = srcOffset; + ePtr->line = (int*) ckalloc (numWords * sizeof (int)); + ePtr->nline = numWords; + wwlines = (int*) ckalloc (numWords * sizeof (int)); + + last = cmd; + wordLine = line; + for (wordIdx = 0; + wordIdx < numWords; + wordIdx++, tokenPtr += (tokenPtr->numComponents + 1)) { + TclAdvanceLines (&wordLine, last, tokenPtr->start); + wwlines [wordIdx] = (TclWordKnownAtCompileTime (tokenPtr) + ? wordLine + : -1); + ePtr->line [wordIdx] = wordLine; + last = tokenPtr->start; + } + + *wlines = wwlines; + eclPtr->nuloc ++; +} +#endif + /* *---------------------------------------------------------------------- * @@ -3483,3 +3809,12 @@ RecordByteCodeStats(codePtr) statsPtr->currentCmdMapBytes += (double) codePtr->numCmdLocBytes; } #endif /* TCL_COMPILE_STATS */ + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ + diff --git a/generic/tclCompile.h b/generic/tclCompile.h index de6bf24..1769a76 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.33 2002/10/09 11:54:05 das Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.33.2.1 2006/11/28 22:20:00 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -121,6 +121,33 @@ typedef struct CmdLocation { int numSrcBytes; /* Number of command source chars. */ } CmdLocation; +#ifdef TCL_TIP280 +/* + * TIP #280 + * Structure to record additional location information for byte code. + * This information is internal and not saved. I.e. tbcload'ed code + * will not have this information. It records the lines for all words + * of all commands found in the byte code. The association with a + * ByteCode structure BC is done through the 'lineBCPtr' HashTable in + * Interp, keyed by the address of BC. Also recorded is information + * coming from the context, i.e. type of the frame and associated + * information, like the path of a sourced file. + */ + +typedef struct ECL { + int srcOffset; /* cmd location to find the entry */ + int nline; + int* line; /* line information for all words in the command */ +} ECL; +typedef struct ExtCmdLoc { + int type; /* Context type */ + Tcl_Obj* path; /* Path of the sourced file the command is in */ + ECL* loc; /* Command word locations (lines) */ + int nloc; /* Number of allocated entries in 'loc' */ + int nuloc; /* Number of used entries in 'loc' */ +} ExtCmdLoc; +#endif + /* * CompileProcs need the ability to record information during compilation * that can be used by bytecode instructions during execution. The AuxData @@ -264,6 +291,14 @@ typedef struct CompileEnv { /* Initial storage for cmd location map. */ AuxData staticAuxDataArraySpace[COMPILEENV_INIT_AUX_DATA_SIZE]; /* Initial storage for aux data array. */ +#ifdef TCL_TIP280 + /* TIP #280 */ + ExtCmdLoc* extCmdMapPtr; /* Extended command location information + * for 'info frame'. */ + int line; /* First line of the script, based on the + * invoking context, then the line of the + * command currently compiled. */ +#endif } CompileEnv; /* @@ -727,8 +762,14 @@ EXTERN int TclInterpReady _ANSI_ARGS_((Tcl_Interp *interp)); *---------------------------------------------------------------- */ +#ifndef TCL_TIP280 EXTERN int TclCompEvalObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); +#else +EXTERN int TclCompEvalObj _ANSI_ARGS_((Tcl_Interp *interp, + Tcl_Obj *objPtr, CONST CmdFrame* invoker, + int word)); +#endif /* *---------------------------------------------------------------- @@ -784,9 +825,15 @@ EXTERN void TclInitAuxDataTypeTable _ANSI_ARGS_((void)); EXTERN void TclInitByteCodeObj _ANSI_ARGS_((Tcl_Obj *objPtr, CompileEnv *envPtr)); EXTERN void TclInitCompilation _ANSI_ARGS_((void)); +#ifndef TCL_TIP280 EXTERN void TclInitCompileEnv _ANSI_ARGS_((Tcl_Interp *interp, CompileEnv *envPtr, char *string, int numBytes)); +#else +EXTERN void TclInitCompileEnv _ANSI_ARGS_((Tcl_Interp *interp, + CompileEnv *envPtr, char *string, + int numBytes, CONST CmdFrame* invoker, int word)); +#endif EXTERN void TclInitJumpFixupArray _ANSI_ARGS_(( JumpFixupArray *fixupArrayPtr)); EXTERN void TclInitLiteralTable _ANSI_ARGS_(( @@ -1039,8 +1086,3 @@ EXTERN int TclCompileVariableCmd _ANSI_ARGS_(( # define TCL_STORAGE_CLASS DLLIMPORT #endif /* _TCLCOMPILATION */ - - - - - diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 4717ae2..59412b8 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.19 2006/05/04 12:34:38 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.20 2006/11/28 22:20:00 andreas_kupries Exp $ */ #include "tclInt.h" @@ -747,7 +747,12 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) } } if (objPtr->typePtr != &tclByteCodeType) { +#ifndef TCL_TIP280 TclInitCompileEnv(interp, &compEnv, string, length); +#else + /* TIP #280 : No invoker (yet) - Expression compilation */ + TclInitCompileEnv(interp, &compEnv, string, length, NULL, 0); +#endif result = TclCompileExpr(interp, string, length, &compEnv); /* @@ -877,9 +882,17 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) */ int +#ifndef TCL_TIP280 TclCompEvalObj(interp, objPtr) +#else +TclCompEvalObj(interp, objPtr, invoker, word) +#endif Tcl_Interp *interp; Tcl_Obj *objPtr; +#ifdef TCL_TIP280 + CONST CmdFrame* invoker; /* Frame of the command doing the eval */ + int word; /* Index of the word which is in objPtr */ +#endif { register Interp *iPtr = (Interp *) interp; register ByteCode* codePtr; /* Tcl Internal type of bytecode. */ @@ -917,7 +930,22 @@ TclCompEvalObj(interp, objPtr) if (objPtr->typePtr != &tclByteCodeType) { recompileObj: iPtr->errorLine = 1; + +#ifdef TCL_TIP280 + /* TIP #280. Remember the invoker for a moment in the interpreter + * structures so that the byte code compiler can pick it up when + * initializing the compilation environment, i.e. the extended + * location information. + */ + + iPtr->invokeCmdFramePtr = invoker; + iPtr->invokeWord = word; +#endif result = tclByteCodeType.setFromAnyProc(interp, objPtr); +#ifdef TCL_TIP280 + iPtr->invokeCmdFramePtr = NULL; +#endif + if (result != TCL_OK) { iPtr->numLevels--; return result; @@ -1077,6 +1105,12 @@ TclExecuteByteCode(interp, codePtr) char *part1, *part2; Var *varPtr, *arrayPtr; CallFrame *varFramePtr = iPtr->varFramePtr; + +#ifdef TCL_TIP280 + /* TIP #280 : Structures for tracking lines */ + CmdFrame bcFrame; +#endif + #ifdef TCL_COMPILE_DEBUG int traceInstructions = (tclTraceExec == 3); char cmdNameBuf[21]; @@ -1094,6 +1128,26 @@ TclExecuteByteCode(interp, codePtr) int *catchStackPtr = catchStackStorage; int catchTop = -1; +#ifdef TCL_TIP280 + /* TIP #280 : Initialize the frame. Do not push it yet. */ + + bcFrame.type = ((codePtr->flags & TCL_BYTECODE_PRECOMPILED) + ? TCL_LOCATION_PREBC + : TCL_LOCATION_BC); + bcFrame.level = (iPtr->cmdFramePtr == NULL ? + 1 : + iPtr->cmdFramePtr->level + 1); + bcFrame.framePtr = iPtr->framePtr; + bcFrame.nextPtr = iPtr->cmdFramePtr; + bcFrame.nline = 0; + bcFrame.line = NULL; + + bcFrame.data.tebc.codePtr = codePtr; + bcFrame.data.tebc.pc = NULL; + bcFrame.cmd.str.cmd = NULL; + bcFrame.cmd.str.len = 0; +#endif + #ifdef TCL_COMPILE_DEBUG if (tclTraceExec >= 2) { PrintByteCodeInfo(codePtr); @@ -1411,13 +1465,23 @@ TclExecuteByteCode(interp, codePtr) ++*preservedStackRefCountPtr; /* - * Finally, let TclEvalObjvInternal handle the command. + * Finally, let TclEvalObjvInternal handle the command. + * + * TIP #280 : Record the last piece of info needed by + * 'TclGetSrcInfoForPc', and push the frame. */ +#ifdef TCL_TIP280 + bcFrame.data.tebc.pc = pc; + iPtr->cmdFramePtr = &bcFrame; +#endif DECACHE_STACK_INFO(); Tcl_ResetResult(interp); result = TclEvalObjvInternal(interp, objc, objv, bytes, length, 0); CACHE_STACK_INFO(); +#ifdef TCL_TIP280 + iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; +#endif /* * If the old stack is going to be released, it is @@ -1475,7 +1539,16 @@ TclExecuteByteCode(interp, codePtr) objPtr = stackPtr[stackTop]; DECACHE_STACK_INFO(); +#ifndef TCL_TIP280 result = TclCompEvalObj(interp, objPtr); +#else + /* TIP #280: The invoking context is left NULL for a dynamically + * constructed command. We cannot match its lines to the outer + * context. + */ + + result = TclCompEvalObj(interp, objPtr, NULL,0); +#endif CACHE_STACK_INFO(); if (result == TCL_OK) { /* @@ -4609,7 +4682,7 @@ IllegalExprOperandType(interp, pc, opndPtr) /* *---------------------------------------------------------------------- * - * GetSrcInfoForPc -- + * TclGetSrcInfoForPc, GetSrcInfoForPc -- * * Given a program counter value, finds the closest command in the * bytecode code unit's CmdLocation array and returns information about @@ -4630,6 +4703,63 @@ IllegalExprOperandType(interp, pc, opndPtr) *---------------------------------------------------------------------- */ +#ifdef TCL_TIP280 +void +TclGetSrcInfoForPc (cfPtr) + CmdFrame* cfPtr; +{ + ByteCode* codePtr = (ByteCode*) cfPtr->data.tebc.codePtr; + + if (cfPtr->cmd.str.cmd == NULL) { + cfPtr->cmd.str.cmd = GetSrcInfoForPc((char*) cfPtr->data.tebc.pc, + codePtr, + &cfPtr->cmd.str.len); + } + + if (cfPtr->cmd.str.cmd != NULL) { + /* We now have the command. We can get the srcOffset back and + * from there find the list of word locations for this command + */ + + ExtCmdLoc* eclPtr; + ECL* locPtr = NULL; + int srcOffset; + + Interp* iPtr = (Interp*) *codePtr->interpHandle; + Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); + + if (!hePtr) return; + + srcOffset = cfPtr->cmd.str.cmd - codePtr->source; + eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); + + { + int i; + for (i=0; i < eclPtr->nuloc; i++) { + if (eclPtr->loc [i].srcOffset == srcOffset) { + locPtr = &(eclPtr->loc [i]); + break; + } + } + } + + if (locPtr == NULL) {Tcl_Panic ("LocSearch failure");} + + cfPtr->line = locPtr->line; + cfPtr->nline = locPtr->nline; + cfPtr->type = eclPtr->type; + + if (eclPtr->type == TCL_LOCATION_SOURCE) { + cfPtr->data.eval.path = eclPtr->path; + Tcl_IncrRefCount (cfPtr->data.eval.path); + } + /* Do not set cfPtr->data.eval.path NULL for non-SOURCE + * Needed for cfPtr->data.tebc.codePtr. + */ + } +} +#endif + static char * GetSrcInfoForPc(pc, codePtr, lengthPtr) unsigned char *pc; /* The program counter value for which to @@ -6314,3 +6444,12 @@ StringForResultCode(result) return buf; } #endif /* TCL_COMPILE_DEBUG */ + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ + diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 61cd561..bda1cab 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.32 2006/10/17 04:36:44 dgp Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.33 2006/11/28 22:20:01 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1762,6 +1762,12 @@ Tcl_FSEvalFile(interp, pathPtr) iPtr->scriptFile = pathPtr; Tcl_IncrRefCount(iPtr->scriptFile); string = Tcl_GetStringFromObj(objPtr, &length); + +#ifdef TCL_TIP280 + /* TIP #280 Force the evaluator to open a frame for a sourced + * file. */ + iPtr->evalFlags |= TCL_EVAL_FILE; +#endif result = Tcl_EvalEx(interp, string, length, 0); /* * Now we have to be careful; the script may have changed the diff --git a/generic/tclInt.h b/generic/tclInt.h index 27681f8..57e9e31 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.25 2006/10/17 04:36:44 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.26 2006/11/28 22:20:01 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -804,6 +804,113 @@ typedef struct CallFrame { * using an index into this array. */ } CallFrame; +#ifdef TCL_TIP280 +/* + * TIP #280 + * The structure below defines a command frame. A command frame + * provides location information for all commands executing a tcl + * script (source, eval, uplevel, procedure bodies, ...). The runtime + * structure essentially contains the stack trace as it would be if + * the currently executing command were to throw an error. + * + * For commands where it makes sense it refers to the associated + * CallFrame as well. + * + * The structures are chained in a single list, with the top of the + * stack anchored in the Interp structure. + * + * Instances can be allocated on the C stack, or the heap, the former + * making cleanup a bit simpler. + */ + +typedef struct CmdFrame { + /* General data. Always available. */ + + int type; /* Values see below */ + int level; /* #Frames in stack, prevent O(n) scan of list */ + int* line; /* Lines the words of the command start on */ + int nline; + + CallFrame* framePtr; /* Procedure activation record, may be NULL */ + struct CmdFrame* nextPtr; /* Link to calling frame */ + + /* Data needed for Eval vs TEBC + * + * EXECUTION CONTEXTS and usage of CmdFrame + * + * Field TEBC EvalEx EvalObjEx + * ======= ==== ====== ========= + * level yes yes yes + * type BC/PREBC SRC/EVAL EVAL_LIST + * line0 yes yes yes + * framePtr yes yes yes + * ======= ==== ====== ========= + * + * ======= ==== ====== ========= union data + * line1 - yes - + * line3 - yes - + * path - yes - + * ------- ---- ------ --------- + * codePtr yes - - + * pc yes - - + * ======= ==== ====== ========= + * + * ======= ==== ====== ========= | union cmd + * listPtr - - yes | + * ------- ---- ------ --------- | + * cmd yes yes - | + * cmdlen yes yes - | + * ------- ---- ------ --------- | + */ + + union { + struct { + Tcl_Obj* path; /* Path of the sourced file the command + * is in. */ + } eval; + struct { + CONST void* codePtr; /* Byte code currently executed */ + CONST char* pc; /* and instruction pointer. */ + } tebc; + } data; + + union { + struct { + CONST char* cmd; /* The executed command, if possible */ + int len; /* And its length */ + } str; + Tcl_Obj* listPtr; /* Tcl_EvalObjEx, cmd list */ + } cmd; + +} CmdFrame; + +/* The following macros define the allowed values for the type field + * of the CmdFrame structure above. Some of the values occur only in + * the extended location data referenced via the 'baseLocPtr'. + * + * TCL_LOCATION_EVAL : Frame is for a script evaluated by EvalEx. + * TCL_LOCATION_EVAL_LIST : Frame is for a script evaluated by the list + * optimization path of EvalObjEx. + * TCL_LOCATION_BC : Frame is for bytecode. + * TCL_LOCATION_PREBC : Frame is for precompiled bytecode. + * TCL_LOCATION_SOURCE : Frame is for a script evaluated by EvalEx, + * from a sourced file. + * TCL_LOCATION_PROC : Frame is for bytecode of a procedure. + * + * A TCL_LOCATION_BC type in a frame can be overridden by _SOURCE and + * _PROC types, per the context of the byte code in execution. + */ + +#define TCL_LOCATION_EVAL (0) /* Location in a dynamic eval script */ +#define TCL_LOCATION_EVAL_LIST (1) /* Location in a dynamic eval script, list-path */ +#define TCL_LOCATION_BC (2) /* Location in byte code */ +#define TCL_LOCATION_PREBC (3) /* Location in precompiled byte code, no location */ +#define TCL_LOCATION_SOURCE (4) /* Location in a file */ +#define TCL_LOCATION_PROC (5) /* Location in a dynamic proc */ + +#define TCL_LOCATION_LAST (6) /* Number of values in the enum */ +#endif + /* *---------------------------------------------------------------- * Data structures and procedures related to TclHandles, which @@ -1363,6 +1470,32 @@ typedef struct Interp { int tracesForbiddingInline; /* Count of traces (in the list headed by * tracePtr) that forbid inline bytecode * compilation */ +#ifdef TCL_TIP280 + /* TIP #280 */ + CmdFrame* cmdFramePtr; /* Points to the command frame containing + * the location information for the current + * command. */ + CONST CmdFrame* invokeCmdFramePtr; /* Points to the command frame which is the + * invoking context of the bytecode compiler. + * NULL when the byte code compiler is not + * active */ + int invokeWord; /* Index of the word in the command which + * is getting compiled. */ + Tcl_HashTable* linePBodyPtr; + /* This table remembers for each + * statically defined procedure the + * location information for its + * body. It is keyed by the address of + * the Proc structure for a procedure. + */ + Tcl_HashTable* lineBCPtr; + /* This table remembers for each + * ByteCode object the location + * information for its body. It is + * keyed by the address of the Proc + * structure for a procedure. + */ +#endif #ifdef TCL_TIP268 /* * TIP #268. @@ -1395,6 +1528,10 @@ typedef struct Interp { #define TCL_BRACKET_TERM 1 #define TCL_ALLOW_EXCEPTIONS 4 +#ifdef TCL_TIP280 +#define TCL_EVAL_FILE 2 +#define TCL_EVAL_CTX 8 +#endif /* * Flag bits for Interp structures: @@ -1671,11 +1808,24 @@ extern char tclEmptyString; *---------------------------------------------------------------- */ +#ifdef TCL_TIP280 +EXTERN void TclAdvanceLines _ANSI_ARGS_((int* line, CONST char* start, + CONST char* end)); +#endif EXTERN int TclArraySet _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *arrayNameObj, Tcl_Obj *arrayElemObj)); EXTERN int TclCheckBadOctal _ANSI_ARGS_((Tcl_Interp *interp, CONST char *value)); EXTERN void TclDeleteNamespaceVars _ANSI_ARGS_((Namespace *nsPtr)); + +#ifdef TCL_TIP280 +EXTERN int TclEvalObjEx _ANSI_ARGS_((Tcl_Interp *interp, + register Tcl_Obj *objPtr, + int flags, + CONST CmdFrame* invoker, + int word)); +#endif + EXTERN void TclExpandTokenArray _ANSI_ARGS_(( Tcl_Parse *parsePtr)); EXTERN int TclFileAttrsCmd _ANSI_ARGS_((Tcl_Interp *interp, @@ -1707,6 +1857,9 @@ EXTERN void TclFinalizeSynchronization _ANSI_ARGS_((void)); EXTERN void TclFinalizeThreadData _ANSI_ARGS_((void)); EXTERN int TclGetEncodingFromObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Encoding *encodingPtr)); +#ifdef TCL_TIP280 +EXTERN void TclGetSrcInfoForPc _ANSI_ARGS_((CmdFrame* cfPtr)); +#endif EXTERN int TclGlob _ANSI_ARGS_((Tcl_Interp *interp, char *pattern, Tcl_Obj *unquotedPrefix, int globFlags, Tcl_GlobTypeData* types)); @@ -1749,6 +1902,9 @@ EXTERN int TclParseInteger _ANSI_ARGS_((CONST char *string, int numBytes)); EXTERN int TclParseWhiteSpace _ANSI_ARGS_((CONST char *src, int numBytes, Tcl_Parse *parsePtr, char *typePtr)); +#ifdef TCL_TIP280 +EXTERN int TclWordKnownAtCompileTime _ANSI_ARGS_((Tcl_Token* token)); +#endif EXTERN int TclpObjAccess _ANSI_ARGS_((Tcl_Obj *filename, int mode)); EXTERN int TclpObjLstat _ANSI_ARGS_((Tcl_Obj *pathPtr, @@ -2160,7 +2316,12 @@ EXTERN Tcl_Obj *TclPtrIncrVar _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, (objPtr)->length = 0; \ (objPtr)->typePtr = NULL -#define TclDecrRefCount(objPtr) \ + +#ifdef TCL_MEM_DEBUG +# define TclDecrRefCount(objPtr) \ + Tcl_DbDecrRefCount(objPtr, __FILE__, __LINE__) +#else +# define TclDecrRefCount(objPtr) \ if (--(objPtr)->refCount <= 0) { \ if (((objPtr)->typePtr != NULL) \ && ((objPtr)->typePtr->freeIntRepProc != NULL)) { \ @@ -2173,6 +2334,7 @@ EXTERN Tcl_Obj *TclPtrIncrVar _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, TclFreeObjStorage(objPtr); \ TclIncrObjsFreed(); \ } +#endif #ifdef TCL_MEM_DEBUG # define TclAllocObjStorage(objPtr) \ diff --git a/generic/tclInterp.c b/generic/tclInterp.c index 851123d..7fae90a 100644 --- a/generic/tclInterp.c +++ b/generic/tclInterp.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInterp.c,v 1.20.2.2 2003/05/12 22:35:40 dgp Exp $ + * RCS: @(#) $Id: tclInterp.c,v 1.20.2.3 2006/11/28 22:20:02 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2091,7 +2091,13 @@ SlaveEval(interp, slaveInterp, objc, objv) Tcl_AllowExceptions(slaveInterp); if (objc == 1) { +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(slaveInterp, objv[0], 0); +#else + /* TIP #280 : Make invoker available to eval'd script */ + Interp* iPtr = (Interp*) interp; + result = TclEvalObjEx(slaveInterp, objv[0], 0, iPtr->cmdFramePtr,0); +#endif } else { objPtr = Tcl_ConcatObj(objc, objv); Tcl_IncrRefCount(objPtr); diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 9955e02..4f72e4c 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.12 2006/05/31 23:29:31 hobbs Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.13 2006/11/28 22:20:02 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2997,7 +2997,13 @@ NamespaceEvalCmd(dummy, interp, objc, objv) frame.objv = objv; /* ref counts do not need to be incremented here */ if (objc == 4) { +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[3], 0); +#else + /* TIP #280 : Make invoker available to eval'd script */ + Interp* iPtr = (Interp*) interp; + result = TclEvalObjEx(interp, objv[3], 0, iPtr->cmdFramePtr,3); +#endif } else { /* * More than one argument: concatenate them together with spaces @@ -3005,7 +3011,12 @@ NamespaceEvalCmd(dummy, interp, objc, objv) * the object when it decrements its refcount after eval'ing it. */ objPtr = Tcl_ConcatObj(objc-3, objv+3); +#ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objPtr, TCL_EVAL_DIRECT); +#else + /* TIP #280. Make invoking context available to eval'd script */ + result = TclEvalObjEx(interp, objPtr, TCL_EVAL_DIRECT, NULL, 0); +#endif } if (result == TCL_ERROR) { char msg[256 + TCL_INTEGER_SPACE]; diff --git a/generic/tclProc.c b/generic/tclProc.c index aae5008..3ecf243 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.5 2006/05/15 16:07:04 dgp Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.6 2006/11/28 22:20:02 andreas_kupries Exp $ */ #include "tclInt.h" @@ -152,6 +152,65 @@ Tcl_ProcObjCmd(dummy, interp, objc, objv) procPtr->cmdPtr = (Command *) cmd; +#ifdef TCL_TIP280 + /* TIP #280 Remember the line the procedure body is starting on. In a + * Byte code context we ask the engine to provide us with the necessary + * information. This is for the initialization of the byte code compiler + * when the body is used for the first time. + */ + + if (iPtr->cmdFramePtr) { + CmdFrame context = *iPtr->cmdFramePtr; + + if (context.type == TCL_LOCATION_BC) { + TclGetSrcInfoForPc (&context); + /* May get path in context */ + } else if (context.type == TCL_LOCATION_SOURCE) { + /* context now holds another reference */ + Tcl_IncrRefCount (context.data.eval.path); + } + + /* type == TCL_LOCATION_PREBC implies that 'line' is NULL here! We + * cannot assume that 'line' is valid here, we have to check. If the + * outer context is an eval (bc, prebc, eval) we do not save any + * information. Counting relative to the beginning of the proc body is + * more sensible than counting relative to the outer eval block. + */ + + if ((context.type == TCL_LOCATION_SOURCE) && + context.line && + (context.nline >= 4) && + (context.line [3] >= 0)) { + int new; + CmdFrame* cfPtr = (CmdFrame*) ckalloc (sizeof (CmdFrame)); + + cfPtr->level = -1; + cfPtr->type = context.type; + cfPtr->line = (int*) ckalloc (sizeof (int)); + cfPtr->line [0] = context.line [3]; + cfPtr->nline = 1; + cfPtr->framePtr = NULL; + cfPtr->nextPtr = NULL; + + if (context.type == TCL_LOCATION_SOURCE) { + cfPtr->data.eval.path = context.data.eval.path; + /* Transfer of reference. The reference going away (release of + * the context) is replaced by the reference in the + * constructed cmdframe */ + } else { + cfPtr->type = TCL_LOCATION_EVAL; + cfPtr->data.eval.path = NULL; + } + + cfPtr->cmd.str.cmd = NULL; + cfPtr->cmd.str.len = 0; + + Tcl_SetHashValue (Tcl_CreateHashEntry (iPtr->linePBodyPtr, + (char*) procPtr, &new), + cfPtr); + } + } +#endif /* * Optimize for noop procs: if the body is not precompiled (like a TclPro @@ -1101,7 +1160,15 @@ TclObjInterpProc(clientData, interp, objc, objv) iPtr->returnCode = TCL_OK; procPtr->refCount++; +#ifndef TCL_TIP280 result = TclCompEvalObj(interp, procPtr->bodyPtr); +#else + /* TIP #280: No need to set the invoking context here. The body has + * already been compiled, so the part of CompEvalObj using it is bypassed. + */ + + result = TclCompEvalObj(interp, procPtr->bodyPtr, NULL, 0); +#endif procPtr->refCount--; if (procPtr->refCount <= 0) { TclProcCleanupProc(procPtr); @@ -1313,7 +1380,24 @@ ProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, (Tcl_Namespace*)nsPtr, /* isProcCallFrame */ 0); if (result == TCL_OK) { +#ifdef TCL_TIP280 + /* TIP #280. We get the invoking context from the cmdFrame + * which was saved by 'Tcl_ProcObjCmd' (using linePBodyPtr). + */ + + Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->linePBodyPtr, (char *) procPtr); + + /* Constructed saved frame has body as word 0. See Tcl_ProcObjCmd. + */ + iPtr->invokeWord = 0; + iPtr->invokeCmdFramePtr = (hePtr + ? (CmdFrame*) Tcl_GetHashValue (hePtr) + : NULL); +#endif result = tclByteCodeType.setFromAnyProc(interp, bodyPtr); +#ifdef TCL_TIP280 + iPtr->invokeCmdFramePtr = NULL; +#endif Tcl_PopCallFrame(interp); } @@ -1492,6 +1576,11 @@ TclProcCleanupProc(procPtr) Tcl_Obj *bodyPtr = procPtr->bodyPtr; Tcl_Obj *defPtr; Tcl_ResolvedVarInfo *resVarInfo; +#ifdef TCL_TIP280 + Tcl_HashEntry* hePtr = NULL; + CmdFrame* cfPtr = NULL; + Interp* iPtr = procPtr->iPtr; +#endif if (bodyPtr != NULL) { Tcl_DecrRefCount(bodyPtr); @@ -1516,6 +1605,28 @@ TclProcCleanupProc(procPtr) localPtr = nextPtr; } ckfree((char *) procPtr); + +#ifdef TCL_TIP280 + /* TIP #280. Release the location data associated with this Proc + * structure, if any. The interpreter may not exist (For example for + * procbody structurues created by tbcload. + */ + + if (!iPtr) return; + + hePtr = Tcl_FindHashEntry (iPtr->linePBodyPtr, (char *) procPtr); + if (!hePtr) return; + + cfPtr = (CmdFrame*) Tcl_GetHashValue (hePtr); + + if (cfPtr->type == TCL_LOCATION_SOURCE) { + Tcl_DecrRefCount (cfPtr->data.eval.path); + cfPtr->data.eval.path = NULL; + } + ckfree ((char*) cfPtr->line); cfPtr->line = NULL; + ckfree ((char*) cfPtr); + Tcl_DeleteHashEntry (hePtr); +#endif } /* @@ -1821,6 +1932,12 @@ TclCompileNoOp(interp, parsePtr, envPtr) TclEmitPush(TclRegisterLiteral(envPtr, "", 0, /*onHeap*/ 0), envPtr); return TCL_OK; } - - + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ diff --git a/tests/info.test b/tests/info.test index 7a31b27..3c300dc 100644 --- a/tests/info.test +++ b/tests/info.test @@ -1,3 +1,4 @@ +# -*- tcl -*- # Commands covered: info # # This file contains a collection of tests for one or more of the Tcl @@ -7,11 +8,12 @@ # Copyright (c) 1991-1994 The Regents of the University of California. # Copyright (c) 1994-1997 Sun Microsystems, Inc. # Copyright (c) 1998-1999 by Scriptics Corporation. +# Copyright (c) 2006 ActiveState # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.4 2005/07/29 14:57:28 dkf Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.5 2006/11/28 22:20:02 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -29,6 +31,9 @@ namespace eval test_ns_info1 { proc q {{y 27} {z {}}} {return "y=$y"} } +testConstraint tip280 [info exists tcl_platform(tip,280)] +testConstraint !tip280 [expr {![info exists tcl_platform(tip,280)]}] + test info-1.1 {info args option} { proc t1 {a bbb c} {return foo} @@ -651,18 +656,424 @@ test info-20.5 {info functions option} { test info-21.1 {miscellaneous error conditions} { list [catch {info} msg] $msg } {1 {wrong # args: should be "info option ?arg arg ...?"}} -test info-21.2 {miscellaneous error conditions} { +test info-21.2 {miscellaneous error conditions} !tip280 { list [catch {info gorp} msg] $msg } {1 {bad option "gorp": must be args, body, cmdcount, commands, complete, default, exists, functions, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}} -test info-21.3 {miscellaneous error conditions} { +test info-21.2-280 {miscellaneous error conditions} tip280 { + list [catch {info gorp} msg] $msg +} {1 {bad option "gorp": must be args, body, cmdcount, commands, complete, default, exists, frame, functions, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}} +test info-21.3 {miscellaneous error conditions} !tip280 { list [catch {info c} msg] $msg } {1 {ambiguous option "c": must be args, body, cmdcount, commands, complete, default, exists, functions, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}} -test info-21.4 {miscellaneous error conditions} { +test info-21.3-280 {miscellaneous error conditions} tip280 { + list [catch {info c} msg] $msg +} {1 {ambiguous option "c": must be args, body, cmdcount, commands, complete, default, exists, frame, functions, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}} +test info-21.4 {miscellaneous error conditions} !tip280 { list [catch {info l} msg] $msg } {1 {ambiguous option "l": must be args, body, cmdcount, commands, complete, default, exists, functions, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}} -test info-21.5 {miscellaneous error conditions} { +test info-21.4-280 {miscellaneous error conditions} tip280 { + list [catch {info l} msg] $msg +} {1 {ambiguous option "l": must be args, body, cmdcount, commands, complete, default, exists, frame, functions, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}} +test info-21.5 {miscellaneous error conditions} !tip280 { list [catch {info s} msg] $msg } {1 {ambiguous option "s": must be args, body, cmdcount, commands, complete, default, exists, functions, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}} +test info-21.5-280 {miscellaneous error conditions} tip280 { + list [catch {info s} msg] $msg +} {1 {ambiguous option "s": must be args, body, cmdcount, commands, complete, default, exists, frame, functions, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}} + +## +# ### ### ### ######### ######### ######### +## info frame + +## Helper +# For the more complex results we cut the file name down to remove +# path dependencies, and we use only part of the first line of the +# reported command. The latter is required because otherwise the whole +# test case may appear in some results, but the result is part of the +# testcase. An infinite string would be required to describe that. The +# cutting-down breaks this. + +proc reduce {frame} { + set pos [lsearch -exact $frame cmd] + incr pos + set cmd [lindex $frame $pos] + if {[regexp \n $cmd]} { + set first [string range [lindex [split $cmd \n] 0] 0 end-11] + set frame [lreplace $frame $pos $pos $first] + } + set pos [lsearch -exact $frame file] + if {$pos >=0} { + incr pos + set tail [file tail [lindex $frame $pos]] + set frame [lreplace $frame $pos $pos $tail] + } + set frame +} + +## Helper +# Generate a stacktrace from the current location to top. This code +# not only depends on the exact location of things, but also on the +# implementation of tcltest. Any changes and these tests will have to +# be updated. + +proc etrace {} { + set res {} + set level [info frame] + while {$level} { + lappend res [list $level [reduce [info frame $level]]] + incr level -1 + } + return $res +} + +## + +test info-22.0 {info frame, levels} tip280 { + info frame +} 7 + +test info-22.1 {info frame, bad level relative} tip280 { + # catch is another level!, i.e. we have 8, not 7 + catch {info frame -8} msg + set msg +} {bad level "-8"} + +test info-22.2 {info frame, bad level absolute} tip280 { + # catch is another level!, i.e. we have 8, not 7 + catch {info frame 9} msg + set msg +} {bad level "9"} + +test info-22.3 {info frame, current, relative} tip280 { + info frame 0 +} {type eval line 2 cmd {info frame 0}} + +test info-22.4 {info frame, current, relative, nested} tip280 { + set res [info frame 0] +} {type eval line 2 cmd {info frame 0}} + +test info-22.5 {info frame, current, absolute} tip280 { + reduce [info frame 7] +} {type eval line 2 cmd {info frame 7}} + +test info-22.6 {info frame, global, relative} tip280 { + reduce [info frame -6] +} {type source line 759 file info.test cmd test\ info-22.6\ \{info\ frame,\ global,\ relativ} + +test info-22.7 {info frame, global, absolute} tip280 { + reduce [info frame 1] +} {type source line 763 file info.test cmd test\ info-22.7\ \{info\ frame,\ global,\ absolut} + +test info-22.8 {info frame, basic trace} tip280 { + join [etrace] \n +} {8 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +7 {type eval line 2 cmd etrace} +6 {type source line 2277 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} +5 {type eval line 1 cmd {::tcltest::RunTest }} +4 {type source line 1619 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} +3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ } +2 {type source line 1966 file tcltest.tcl cmd {uplevel 1 [list [namespace origin Eval] $command 1]} proc ::tcltest::test} +1 {type source line 767 file info.test cmd test\ info-22.8\ \{info\ frame,\ basic\ trac}} +## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 +test info-23.0 {eval'd info frame} tip280 { + eval {info frame} +} 8 + +test info-23.1 {eval'd info frame, semi-dynamic} tip280 { + eval info frame +} 8 + +test info-23.2 {eval'd info frame, dynamic} tip280 { + set script {info frame} + eval $script +} 8 + +test info-23.3 {eval'd info frame, literal} tip280 { + eval { + info frame 0 + } +} {type eval line 2 cmd {info frame 0}} + +test info-23.4 {eval'd info frame, semi-dynamic} tip280 { + eval info frame 0 +} {type eval line 1 cmd {info frame 0}} + +test info-23.5 {eval'd info frame, dynamic} tip280 { + set script {info frame 0} + eval $script +} {type eval line 1 cmd {info frame 0}} + +test info-23.6 {eval'd info frame, trace} tip280 { + set script {etrace} + join [eval $script] \n +} {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +8 {type eval line 1 cmd etrace} +7 {type eval line 3 cmd {eval $script}} +6 {type source line 2277 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} +5 {type eval line 1 cmd {::tcltest::RunTest }} +4 {type source line 1619 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} +3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ } +2 {type source line 1966 file tcltest.tcl cmd {uplevel 1 [list [namespace origin Eval] $command 1]} proc ::tcltest::test} +1 {type source line 806 file info.test cmd test\ info-23.6\ \{eval'd\ info\ frame,\ trac}} +## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 +# ------------------------------------------------------------------------- + +# Procedures defined in scripts which are arguments to control +# structures (like 'namespace eval', 'interp eval', 'if', 'while', +# 'switch', 'catch', 'for', 'foreach', etc.) have no absolute +# location. The command implementations execute such scripts through +# Tcl_EvalObjEx. Flag 0 causes it to use the bytecode compiler. This +# causes the connection to the context to be lost. Currently only +# procedure bodies are able to remember their context. + +# ------------------------------------------------------------------------- + +namespace eval foo { + proc bar {} {info frame 0} +} + +test info-24.0 {info frame, interaction, namespace eval} tip280 { + reduce [foo::bar] +} {type source line 832 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +set flag 1 +if {$flag} { + namespace eval foo {} + proc ::foo::bar {} {info frame 0} +} + +test info-24.1 {info frame, interaction, if} tip280 { + reduce [foo::bar] +} {type source line 846 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +set flag 1 +while {$flag} { + namespace eval foo {} + proc ::foo::bar {} {info frame 0} + set flag 0 +} + +test info-24.2 {info frame, interaction, while} tip280 { + reduce [foo::bar] +} {type source line 860 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +catch { + namespace eval foo {} + proc ::foo::bar {} {info frame 0} +} + +test info-24.3 {info frame, interaction, catch} tip280 { + reduce [foo::bar] +} {type source line 874 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +foreach var val { + namespace eval foo {} + proc ::foo::bar {} {info frame 0} + break +} + +test info-24.4 {info frame, interaction, foreach} tip280 { + reduce [foo::bar] +} {type source line 887 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +for {} {1} {} { + namespace eval foo {} + proc ::foo::bar {} {info frame 0} + break +} + +test info-24.5 {info frame, interaction, for} tip280 { + reduce [foo::bar] +} {type source line 901 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +eval { + proc bar {} {info frame 0} +} + +test info-25.0 {info frame, proc in eval} tip280 { + reduce [bar] +} {type source line 914 file info.test cmd {info frame 0} proc ::bar level 0} + +proc bar {} {info frame 0} +test info-25.1 {info frame, regular proc} tip280 { + reduce [bar] +} {type source line 921 file info.test cmd {info frame 0} proc ::bar level 0} +rename bar {} + + + +test info-30.0 {bs+nl in literal words} {tip280 knownBug} { + if {1} { + set res \ + [reduce [info frame 0]] + } + set res + # This is reporting line 3 instead of the correct 4 because the + # bs+nl combination is subst by the parser before the 'if' + # command, and the the bcc sees the word. To fix record the + # offsets of all bs+nl sequences in literal words, then use the + # information in the bcc to bump line numbers when parsing over + # the location. Also affected: testcases 22.8 and 23.6. +} {type eval line 4 cmd {info frame 0} proc ::tcltest::RunTest} + + + +# ------------------------------------------------------------------------- +# See 24.0 - 24.5 for similar situations, using literal scripts. + +set body {set flag 0 + set a c + set res [info frame 0]} ;# line 3! + +test info-31.0 {ns eval, script in variable} tip280 { + namespace eval foo $body + set res +} {type eval line 3 cmd {info frame 0} level 0} +catch {namespace delete foo} + + +test info-31.1 {if, script in variable} tip280 { + if 1 $body + set res +} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + +test info-31.1a {if, script in variable} tip280 { + if 1 then $body + set res +} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + + + +test info-31.2 {while, script in variable} tip280 { + set flag 1 + while {$flag} $body + set res +} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + +# .3 - proc - scoping prevent return of result ... + +test info-31.4 {foreach, script in variable} tip280 { + foreach var val $body + set res +} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + +test info-31.5 {for, script in variable} tip280 { + set flag 1 + for {} {$flag} {} $body + set res +} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + +test info-31.6 {eval, script in variable} tip280 { + eval $body + set res +} {type eval line 3 cmd {info frame 0}} + +# ------------------------------------------------------------------------- + +namespace eval foo {} +set x foo +switch -exact -- $x { + foo { + proc ::foo::bar {} {info frame 0} + } +} + +test info-24.6.0 {info frame, interaction, switch, list body} tip280 { + reduce [foo::bar] +} {type source line 1001 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo +unset x + +# ------------------------------------------------------------------------- + +namespace eval foo {} +set x foo +switch -exact -- $x foo { + proc ::foo::bar {} {info frame 0} +} + +test info-24.6.1 {info frame, interaction, switch, multi-body} tip280 { + reduce [foo::bar] +} {type source line 1017 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo +unset x + +# ------------------------------------------------------------------------- + +namespace eval foo {} +set x foo +switch -exact -- $x [list foo { + proc ::foo::bar {} {info frame 0} +}] + +test info-24.6.2 {info frame, interaction, switch, list body, dynamic} tip280 { + reduce [foo::bar] +} {type proc line 1 cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo +unset x + +# ------------------------------------------------------------------------- + +set body { + foo { + proc ::foo::bar {} {info frame 0} + } +} + +namespace eval foo {} +set x foo +switch -exact -- $x $body + +test info-31.7 {info frame, interaction, switch, dynamic} tip280 { + reduce [foo::bar] +} {type proc line 1 cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo +unset x + +# ------------------------------------------------------------------------- + +set body { + proc ::foo::bar {} {info frame 0} +} + +namespace eval foo {} +eval $body + +test info-32.0 {info frame, dynamic procedure} tip280 { + reduce [foo::bar] +} {type proc line 1 cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- # cleanup catch {namespace delete test_ns_info1 test_ns_info2} diff --git a/tests/platform.test b/tests/platform.test index 01bf787..ce72211 100644 --- a/tests/platform.test +++ b/tests/platform.test @@ -23,6 +23,7 @@ test platform-1.1 {TclpSetVariables: tcl_platform} { i eval {catch {unset tcl_platform(debug)}} i eval {catch {unset tcl_platform(threaded)}} i eval {catch {unset tcl_platform(tip,268)}} + i eval {catch {unset tcl_platform(tip,280)}} set result [i eval {lsort [array names tcl_platform]}] interp delete i set result diff --git a/tests/safe.test b/tests/safe.test index 15dfa85..938e247 100644 --- a/tests/safe.test +++ b/tests/safe.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: safe.test,v 1.13.2.2 2006/09/22 01:26:24 andreas_kupries Exp $ +# RCS: @(#) $Id: safe.test,v 1.13.2.3 2006/11/28 22:20:03 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -191,6 +191,10 @@ test safe-6.3 {test safe interpreters knowledge of the world} { if {$tip != -1} { set r [lreplace $r $tip $tip] } + set tip [lsearch $r "tip,280"] + if {$tip != -1} { + set r [lreplace $r $tip $tip] + } set r } {byteOrder platform wordSize} -- cgit v0.12 From b62b2d6ee4170b8d2cff9e546d67cc24e0c782c6 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 1 Dec 2006 00:08:10 +0000 Subject: Import of libtommath 0.39+ --- libtommath/bn.pdf | Bin 341050 -> 340921 bytes libtommath/bn.tex | 2 +- libtommath/bn_error.c | 6 +- libtommath/bn_fast_mp_invmod.c | 6 +- libtommath/bn_fast_mp_montgomery_reduce.c | 6 +- libtommath/bn_fast_s_mp_mul_digs.c | 11 +- libtommath/bn_fast_s_mp_mul_high_digs.c | 11 +- libtommath/bn_fast_s_mp_sqr.c | 6 +- libtommath/bn_mp_2expt.c | 6 +- libtommath/bn_mp_abs.c | 6 +- libtommath/bn_mp_add.c | 6 +- libtommath/bn_mp_add_d.c | 6 +- libtommath/bn_mp_addmod.c | 6 +- libtommath/bn_mp_and.c | 6 +- libtommath/bn_mp_clamp.c | 6 +- libtommath/bn_mp_clear.c | 6 +- libtommath/bn_mp_clear_multi.c | 6 +- libtommath/bn_mp_cmp.c | 6 +- libtommath/bn_mp_cmp_d.c | 6 +- libtommath/bn_mp_cmp_mag.c | 6 +- libtommath/bn_mp_cnt_lsb.c | 6 +- libtommath/bn_mp_copy.c | 6 +- libtommath/bn_mp_count_bits.c | 6 +- libtommath/bn_mp_div.c | 6 +- libtommath/bn_mp_div_2.c | 6 +- libtommath/bn_mp_div_2d.c | 6 +- libtommath/bn_mp_div_3.c | 6 +- libtommath/bn_mp_div_d.c | 6 +- libtommath/bn_mp_dr_is_modulus.c | 6 +- libtommath/bn_mp_dr_reduce.c | 6 +- libtommath/bn_mp_dr_setup.c | 6 +- libtommath/bn_mp_exch.c | 6 +- libtommath/bn_mp_expt_d.c | 6 +- libtommath/bn_mp_exptmod.c | 6 +- libtommath/bn_mp_exptmod_fast.c | 6 +- libtommath/bn_mp_exteuclid.c | 6 +- libtommath/bn_mp_fread.c | 6 +- libtommath/bn_mp_fwrite.c | 6 +- libtommath/bn_mp_gcd.c | 18 +- libtommath/bn_mp_get_int.c | 6 +- libtommath/bn_mp_grow.c | 6 +- libtommath/bn_mp_init.c | 6 +- libtommath/bn_mp_init_copy.c | 6 +- libtommath/bn_mp_init_multi.c | 6 +- libtommath/bn_mp_init_set.c | 6 +- libtommath/bn_mp_init_set_int.c | 6 +- libtommath/bn_mp_init_size.c | 6 +- libtommath/bn_mp_invmod.c | 6 +- libtommath/bn_mp_invmod_slow.c | 6 +- libtommath/bn_mp_is_square.c | 6 +- libtommath/bn_mp_jacobi.c | 6 +- libtommath/bn_mp_karatsuba_mul.c | 6 +- libtommath/bn_mp_karatsuba_sqr.c | 6 +- libtommath/bn_mp_lcm.c | 6 +- libtommath/bn_mp_lshd.c | 6 +- libtommath/bn_mp_mod.c | 6 +- libtommath/bn_mp_mod_2d.c | 6 +- libtommath/bn_mp_mod_d.c | 6 +- libtommath/bn_mp_montgomery_calc_normalization.c | 6 +- libtommath/bn_mp_montgomery_reduce.c | 6 +- libtommath/bn_mp_montgomery_setup.c | 6 +- libtommath/bn_mp_mul.c | 6 +- libtommath/bn_mp_mul_2.c | 6 +- libtommath/bn_mp_mul_2d.c | 6 +- libtommath/bn_mp_mul_d.c | 6 +- libtommath/bn_mp_mulmod.c | 6 +- libtommath/bn_mp_n_root.c | 6 +- libtommath/bn_mp_neg.c | 6 +- libtommath/bn_mp_or.c | 6 +- libtommath/bn_mp_prime_fermat.c | 6 +- libtommath/bn_mp_prime_is_divisible.c | 6 +- libtommath/bn_mp_prime_is_prime.c | 6 +- libtommath/bn_mp_prime_miller_rabin.c | 6 +- libtommath/bn_mp_prime_next_prime.c | 6 +- libtommath/bn_mp_prime_rabin_miller_trials.c | 6 +- libtommath/bn_mp_prime_random_ex.c | 6 +- libtommath/bn_mp_radix_size.c | 6 +- libtommath/bn_mp_radix_smap.c | 6 +- libtommath/bn_mp_rand.c | 6 +- libtommath/bn_mp_read_radix.c | 6 +- libtommath/bn_mp_read_signed_bin.c | 6 +- libtommath/bn_mp_read_unsigned_bin.c | 6 +- libtommath/bn_mp_reduce.c | 6 +- libtommath/bn_mp_reduce_2k.c | 6 +- libtommath/bn_mp_reduce_2k_l.c | 6 +- libtommath/bn_mp_reduce_2k_setup.c | 6 +- libtommath/bn_mp_reduce_2k_setup_l.c | 6 +- libtommath/bn_mp_reduce_is_2k.c | 6 +- libtommath/bn_mp_reduce_is_2k_l.c | 6 +- libtommath/bn_mp_reduce_setup.c | 6 +- libtommath/bn_mp_rshd.c | 6 +- libtommath/bn_mp_set.c | 6 +- libtommath/bn_mp_set_int.c | 6 +- libtommath/bn_mp_shrink.c | 6 +- libtommath/bn_mp_signed_bin_size.c | 6 +- libtommath/bn_mp_sqr.c | 6 +- libtommath/bn_mp_sqrmod.c | 6 +- libtommath/bn_mp_sqrt.c | 6 +- libtommath/bn_mp_sub.c | 6 +- libtommath/bn_mp_sub_d.c | 6 +- libtommath/bn_mp_submod.c | 6 +- libtommath/bn_mp_to_signed_bin.c | 6 +- libtommath/bn_mp_to_signed_bin_n.c | 6 +- libtommath/bn_mp_to_unsigned_bin.c | 6 +- libtommath/bn_mp_to_unsigned_bin_n.c | 6 +- libtommath/bn_mp_toom_mul.c | 6 +- libtommath/bn_mp_toom_sqr.c | 6 +- libtommath/bn_mp_toradix.c | 6 +- libtommath/bn_mp_toradix_n.c | 6 +- libtommath/bn_mp_unsigned_bin_size.c | 6 +- libtommath/bn_mp_xor.c | 6 +- libtommath/bn_mp_zero.c | 6 +- libtommath/bn_prime_tab.c | 6 +- libtommath/bn_reverse.c | 6 +- libtommath/bn_s_mp_add.c | 6 +- libtommath/bn_s_mp_exptmod.c | 6 +- libtommath/bn_s_mp_mul_digs.c | 6 +- libtommath/bn_s_mp_mul_high_digs.c | 6 +- libtommath/bn_s_mp_sqr.c | 6 +- libtommath/bn_s_mp_sub.c | 6 +- libtommath/bncore.c | 6 +- libtommath/changes.txt | 11 + libtommath/etc/mersenne.c | 6 +- libtommath/etc/pprime.c | 8 +- libtommath/etc/tune.c | 6 +- libtommath/makefile | 2 +- libtommath/makefile.shared | 7 +- libtommath/poster.pdf | Bin 37800 -> 37822 bytes libtommath/pre_gen/mpi.c | 734 ++-- libtommath/tommath.h | 6 +- libtommath/tommath.pdf | Bin 1160280 -> 1194158 bytes libtommath/tommath.src | 138 +- libtommath/tommath.tex | 4527 +--------------------- 133 files changed, 985 insertions(+), 5198 deletions(-) diff --git a/libtommath/bn.pdf b/libtommath/bn.pdf index b54b602..392b649 100644 Binary files a/libtommath/bn.pdf and b/libtommath/bn.pdf differ diff --git a/libtommath/bn.tex b/libtommath/bn.tex index f89e200..e8eb994 100644 --- a/libtommath/bn.tex +++ b/libtommath/bn.tex @@ -49,7 +49,7 @@ \begin{document} \frontmatter \pagestyle{empty} -\title{LibTomMath User Manual \\ v0.37} +\title{LibTomMath User Manual \\ v0.39} \author{Tom St Denis \\ tomstdenis@iahu.ca} \maketitle This text, the library and the accompanying textbook are all hereby placed in the public domain. This book has been diff --git a/libtommath/bn_error.c b/libtommath/bn_error.c index e260763..d96ea2a 100644 --- a/libtommath/bn_error.c +++ b/libtommath/bn_error.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ static const struct { @@ -43,5 +43,5 @@ char *mp_error_to_string(int code) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_error.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_fast_mp_invmod.c b/libtommath/bn_fast_mp_invmod.c index 9f4a4da..744ae4f 100644 --- a/libtommath/bn_fast_mp_invmod.c +++ b/libtommath/bn_fast_mp_invmod.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes the modular inverse via binary extended euclidean algorithm, @@ -144,5 +144,5 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_mp_invmod.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_fast_mp_montgomery_reduce.c b/libtommath/bn_fast_mp_montgomery_reduce.c index e676c6e..45a4089 100644 --- a/libtommath/bn_fast_mp_montgomery_reduce.c +++ b/libtommath/bn_fast_mp_montgomery_reduce.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes xR**-1 == x (mod N) via Montgomery Reduction @@ -168,5 +168,5 @@ int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_mp_montgomery_reduce.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_fast_s_mp_mul_digs.c b/libtommath/bn_fast_s_mp_mul_digs.c index 0c715be..86b78b4 100644 --- a/libtommath/bn_fast_s_mp_mul_digs.c +++ b/libtommath/bn_fast_s_mp_mul_digs.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Fast (comba) multiplier @@ -78,10 +78,7 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) /* make next carry */ _W = _W >> ((mp_word)DIGIT_BIT); - } - - /* store final carry */ - W[ix] = (mp_digit)(_W & MP_MASK); + } /* setup dest */ olduse = c->used; @@ -106,5 +103,5 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_s_mp_mul_digs.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_fast_s_mp_mul_high_digs.c b/libtommath/bn_fast_s_mp_mul_high_digs.c index 7c10ce4..607630a 100644 --- a/libtommath/bn_fast_s_mp_mul_high_digs.c +++ b/libtommath/bn_fast_s_mp_mul_high_digs.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* this is a modified version of fast_s_mul_digs that only produces @@ -70,9 +70,6 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) _W = _W >> ((mp_word)DIGIT_BIT); } - /* store final carry */ - W[ix] = (mp_digit)(_W & MP_MASK); - /* setup dest */ olduse = c->used; c->used = pa; @@ -81,7 +78,7 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) register mp_digit *tmpc; tmpc = c->dp + digs; - for (ix = digs; ix <= pa; ix++) { + for (ix = digs; ix < pa; ix++) { /* now extract the previous digit [below the carry] */ *tmpc++ = W[ix]; } @@ -97,5 +94,5 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_s_mp_mul_high_digs.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_fast_s_mp_sqr.c b/libtommath/bn_fast_s_mp_sqr.c index c8f0dc6..50adf00 100644 --- a/libtommath/bn_fast_s_mp_sqr.c +++ b/libtommath/bn_fast_s_mp_sqr.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* the jist of squaring... @@ -110,5 +110,5 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_fast_s_mp_sqr.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_2expt.c b/libtommath/bn_mp_2expt.c index d859623..a9d3e9c 100644 --- a/libtommath/bn_mp_2expt.c +++ b/libtommath/bn_mp_2expt.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes a = 2**b @@ -44,5 +44,5 @@ mp_2expt (mp_int * a, int b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_2expt.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_abs.c b/libtommath/bn_mp_abs.c index 7231a27..2a7f02c 100644 --- a/libtommath/bn_mp_abs.c +++ b/libtommath/bn_mp_abs.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* b = |a| @@ -39,5 +39,5 @@ mp_abs (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_abs.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_add.c b/libtommath/bn_mp_add.c index 74dcb48..b7effdb 100644 --- a/libtommath/bn_mp_add.c +++ b/libtommath/bn_mp_add.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* high level addition (handles signs) */ @@ -49,5 +49,5 @@ int mp_add (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_add.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_add_d.c b/libtommath/bn_mp_add_d.c index 3dba671..598acab 100644 --- a/libtommath/bn_mp_add_d.c +++ b/libtommath/bn_mp_add_d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* single digit addition */ @@ -108,5 +108,5 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_add_d.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/12/27 17:59:37 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_addmod.c b/libtommath/bn_mp_addmod.c index 5cf1604..b0b4d8b 100644 --- a/libtommath/bn_mp_addmod.c +++ b/libtommath/bn_mp_addmod.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* d = a + b (mod c) */ @@ -37,5 +37,5 @@ mp_addmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_addmod.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_and.c b/libtommath/bn_mp_and.c index 9715308..ff61017 100644 --- a/libtommath/bn_mp_and.c +++ b/libtommath/bn_mp_and.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* AND two ints together */ @@ -53,5 +53,5 @@ mp_and (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_and.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_clamp.c b/libtommath/bn_mp_clamp.c index 56a6362..4f2f8ba 100644 --- a/libtommath/bn_mp_clamp.c +++ b/libtommath/bn_mp_clamp.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* trim unused digits @@ -40,5 +40,5 @@ mp_clamp (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_clamp.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_clear.c b/libtommath/bn_mp_clear.c index 7564fff..e1fe10d 100644 --- a/libtommath/bn_mp_clear.c +++ b/libtommath/bn_mp_clear.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* clear one (frees) */ @@ -40,5 +40,5 @@ mp_clear (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_clear.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_clear_multi.c b/libtommath/bn_mp_clear_multi.c index 2766907..e9910e8 100644 --- a/libtommath/bn_mp_clear_multi.c +++ b/libtommath/bn_mp_clear_multi.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ #include @@ -30,5 +30,5 @@ void mp_clear_multi(mp_int *mp, ...) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_clear_multi.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_cmp.c b/libtommath/bn_mp_cmp.c index ce82baf..6361730 100644 --- a/libtommath/bn_mp_cmp.c +++ b/libtommath/bn_mp_cmp.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* compare two ints (signed)*/ @@ -39,5 +39,5 @@ mp_cmp (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_cmp.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_cmp_d.c b/libtommath/bn_mp_cmp_d.c index 2d98647..92c3567 100644 --- a/libtommath/bn_mp_cmp_d.c +++ b/libtommath/bn_mp_cmp_d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* compare a digit */ @@ -40,5 +40,5 @@ int mp_cmp_d(mp_int * a, mp_digit b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_cmp_d.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_cmp_mag.c b/libtommath/bn_mp_cmp_mag.c index 3ade54f..31c8221 100644 --- a/libtommath/bn_mp_cmp_mag.c +++ b/libtommath/bn_mp_cmp_mag.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* compare maginitude of two ints (unsigned) */ @@ -51,5 +51,5 @@ int mp_cmp_mag (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_cmp_mag.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_cnt_lsb.c b/libtommath/bn_mp_cnt_lsb.c index 6ff212d..4aa68b5 100644 --- a/libtommath/bn_mp_cnt_lsb.c +++ b/libtommath/bn_mp_cnt_lsb.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ static const int lnz[16] = { @@ -49,5 +49,5 @@ int mp_cnt_lsb(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_cnt_lsb.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_copy.c b/libtommath/bn_mp_copy.c index f2de108..a5d5e6f 100644 --- a/libtommath/bn_mp_copy.c +++ b/libtommath/bn_mp_copy.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* copy, b = a */ @@ -64,5 +64,5 @@ mp_copy (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_copy.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_count_bits.c b/libtommath/bn_mp_count_bits.c index cfab837..44c0cff 100644 --- a/libtommath/bn_mp_count_bits.c +++ b/libtommath/bn_mp_count_bits.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* returns the number of bits in an int */ @@ -41,5 +41,5 @@ mp_count_bits (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_count_bits.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_div.c b/libtommath/bn_mp_div.c index a0a9d7c..4a94172 100644 --- a/libtommath/bn_mp_div.c +++ b/libtommath/bn_mp_div.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ #ifdef BN_MP_DIV_SMALL @@ -288,5 +288,5 @@ LBL_Q:mp_clear (&q); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_div_2.c b/libtommath/bn_mp_div_2.c index 23cd43a..bcb17c1 100644 --- a/libtommath/bn_mp_div_2.c +++ b/libtommath/bn_mp_div_2.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* b = a/2 */ @@ -64,5 +64,5 @@ int mp_div_2(mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div_2.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_div_2d.c b/libtommath/bn_mp_div_2d.c index 305eeaa..12a7c99 100644 --- a/libtommath/bn_mp_div_2d.c +++ b/libtommath/bn_mp_div_2d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shift right by a certain bit count (store quotient in c, optional remainder in d) */ @@ -93,5 +93,5 @@ int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div_2d.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_div_3.c b/libtommath/bn_mp_div_3.c index 69d25cf..571991a 100644 --- a/libtommath/bn_mp_div_3.c +++ b/libtommath/bn_mp_div_3.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* divide by three (based on routine from MPI and the GMP manual) */ @@ -75,5 +75,5 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div_3.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_div_d.c b/libtommath/bn_mp_div_d.c index c3afceb..4f210e6 100644 --- a/libtommath/bn_mp_div_d.c +++ b/libtommath/bn_mp_div_d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ static int s_is_power_of_two(mp_digit b, int *p) @@ -106,5 +106,5 @@ int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_div_d.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_dr_is_modulus.c b/libtommath/bn_mp_dr_is_modulus.c index b11bc0c..9532df1 100644 --- a/libtommath/bn_mp_dr_is_modulus.c +++ b/libtommath/bn_mp_dr_is_modulus.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines if a number is a valid DR modulus */ @@ -39,5 +39,5 @@ int mp_dr_is_modulus(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_dr_is_modulus.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_dr_reduce.c b/libtommath/bn_mp_dr_reduce.c index c7119a1..6d63462 100644 --- a/libtommath/bn_mp_dr_reduce.c +++ b/libtommath/bn_mp_dr_reduce.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reduce "x" in place modulo "n" using the Diminished Radix algorithm. @@ -90,5 +90,5 @@ top: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_dr_reduce.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_dr_setup.c b/libtommath/bn_mp_dr_setup.c index c177199..c6f4b2f 100644 --- a/libtommath/bn_mp_dr_setup.c +++ b/libtommath/bn_mp_dr_setup.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines the setup value */ @@ -28,5 +28,5 @@ void mp_dr_setup(mp_int *a, mp_digit *d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_dr_setup.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_exch.c b/libtommath/bn_mp_exch.c index 7bb1169..691d9f6 100644 --- a/libtommath/bn_mp_exch.c +++ b/libtommath/bn_mp_exch.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* swap the elements of two integers, for cases where you can't simply swap the @@ -30,5 +30,5 @@ mp_exch (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_exch.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_expt_d.c b/libtommath/bn_mp_expt_d.c index d5067ab..dfd04eb 100644 --- a/libtommath/bn_mp_expt_d.c +++ b/libtommath/bn_mp_expt_d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* calculate c = a**b using a square-multiply algorithm */ @@ -53,5 +53,5 @@ int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_expt_d.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_exptmod.c b/libtommath/bn_mp_exptmod.c index f0b205b..714a96f 100644 --- a/libtommath/bn_mp_exptmod.c +++ b/libtommath/bn_mp_exptmod.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ @@ -108,5 +108,5 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_exptmod.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_exptmod_fast.c b/libtommath/bn_mp_exptmod_fast.c index e4f25df..cb8d94a 100644 --- a/libtommath/bn_mp_exptmod_fast.c +++ b/libtommath/bn_mp_exptmod_fast.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes Y == G**X mod P, HAC pp.616, Algorithm 14.85 @@ -317,5 +317,5 @@ LBL_M: /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_exptmod_fast.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_exteuclid.c b/libtommath/bn_mp_exteuclid.c index f0ae8e5..9730fa0 100644 --- a/libtommath/bn_mp_exteuclid.c +++ b/libtommath/bn_mp_exteuclid.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Extended euclidean algorithm of (a, b) produces @@ -78,5 +78,5 @@ _ERR: mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_exteuclid.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_fread.c b/libtommath/bn_mp_fread.c index f1c72fd..c1b0128 100644 --- a/libtommath/bn_mp_fread.c +++ b/libtommath/bn_mp_fread.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* read a bigint from a file stream in ASCII */ @@ -63,5 +63,5 @@ int mp_fread(mp_int *a, int radix, FILE *stream) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_fread.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_fwrite.c b/libtommath/bn_mp_fwrite.c index 29c0a2b..5785c02 100644 --- a/libtommath/bn_mp_fwrite.c +++ b/libtommath/bn_mp_fwrite.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ int mp_fwrite(mp_int *a, int radix, FILE *stream) @@ -48,5 +48,5 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_fwrite.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_gcd.c b/libtommath/bn_mp_gcd.c index f0141ac..bbc5421 100644 --- a/libtommath/bn_mp_gcd.c +++ b/libtommath/bn_mp_gcd.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Greatest Common Divisor using the binary method */ @@ -22,21 +22,13 @@ int mp_gcd (mp_int * a, mp_int * b, mp_int * c) int k, u_lsb, v_lsb, res; /* either zero than gcd is the largest */ - if (mp_iszero (a) == 1 && mp_iszero (b) == 0) { + if (mp_iszero (a) == MP_YES) { return mp_abs (b, c); } - if (mp_iszero (a) == 0 && mp_iszero (b) == 1) { + if (mp_iszero (b) == MP_YES) { return mp_abs (a, c); } - /* optimized. At this point if a == 0 then - * b must equal zero too - */ - if (mp_iszero (a) == 1) { - mp_zero(c); - return MP_OKAY; - } - /* get copies of a and b we can modify */ if ((res = mp_init_copy (&u, a)) != MP_OKAY) { return res; @@ -109,5 +101,5 @@ LBL_U:mp_clear (&v); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_gcd.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_get_int.c b/libtommath/bn_mp_get_int.c index e9282aa..269be79 100644 --- a/libtommath/bn_mp_get_int.c +++ b/libtommath/bn_mp_get_int.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* get the lower 32-bits of an mp_int */ @@ -41,5 +41,5 @@ unsigned long mp_get_int(mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_get_int.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_grow.c b/libtommath/bn_mp_grow.c index 047c6af..e77c774 100644 --- a/libtommath/bn_mp_grow.c +++ b/libtommath/bn_mp_grow.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* grow as required */ @@ -53,5 +53,5 @@ int mp_grow (mp_int * a, int size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_grow.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_init.c b/libtommath/bn_mp_init.c index 7a59a39..c866e89 100644 --- a/libtommath/bn_mp_init.c +++ b/libtommath/bn_mp_init.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* init a new mp_int */ @@ -42,5 +42,5 @@ int mp_init (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_init_copy.c b/libtommath/bn_mp_init_copy.c index 2b3248d..2e1c207 100644 --- a/libtommath/bn_mp_init_copy.c +++ b/libtommath/bn_mp_init_copy.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* creates "a" then copies b into it */ @@ -28,5 +28,5 @@ int mp_init_copy (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_copy.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_init_multi.c b/libtommath/bn_mp_init_multi.c index 5af771f..70148b8 100644 --- a/libtommath/bn_mp_init_multi.c +++ b/libtommath/bn_mp_init_multi.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ #include @@ -55,5 +55,5 @@ int mp_init_multi(mp_int *mp, ...) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_multi.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_init_set.c b/libtommath/bn_mp_init_set.c index ded8617..cdf1249 100644 --- a/libtommath/bn_mp_init_set.c +++ b/libtommath/bn_mp_init_set.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* initialize and set a digit */ @@ -28,5 +28,5 @@ int mp_init_set (mp_int * a, mp_digit b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_set.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_init_set_int.c b/libtommath/bn_mp_init_set_int.c index 45341fe..a4e87d5 100644 --- a/libtommath/bn_mp_init_set_int.c +++ b/libtommath/bn_mp_init_set_int.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* initialize and set a digit */ @@ -27,5 +27,5 @@ int mp_init_set_int (mp_int * a, unsigned long b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_set_int.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_init_size.c b/libtommath/bn_mp_init_size.c index 74afbf9..4433b16 100644 --- a/libtommath/bn_mp_init_size.c +++ b/libtommath/bn_mp_init_size.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* init an mp_init for a given size */ @@ -44,5 +44,5 @@ int mp_init_size (mp_int * a, int size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_init_size.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_invmod.c b/libtommath/bn_mp_invmod.c index bf35b0a..09e71cd 100644 --- a/libtommath/bn_mp_invmod.c +++ b/libtommath/bn_mp_invmod.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* hac 14.61, pp608 */ @@ -39,5 +39,5 @@ int mp_invmod (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_invmod.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_invmod_slow.c b/libtommath/bn_mp_invmod_slow.c index 50a9b6f..ff9cc96 100644 --- a/libtommath/bn_mp_invmod_slow.c +++ b/libtommath/bn_mp_invmod_slow.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* hac 14.61, pp608 */ @@ -171,5 +171,5 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_invmod_slow.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_is_square.c b/libtommath/bn_mp_is_square.c index 8ee84c7..01f07b3 100644 --- a/libtommath/bn_mp_is_square.c +++ b/libtommath/bn_mp_is_square.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Check if remainders are possible squares - fast exclude non-squares */ @@ -105,5 +105,5 @@ ERR:mp_clear(&t); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_is_square.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_jacobi.c b/libtommath/bn_mp_jacobi.c index 8178454..cb7713d 100644 --- a/libtommath/bn_mp_jacobi.c +++ b/libtommath/bn_mp_jacobi.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes the jacobi c = (a | n) (or Legendre if n is prime) @@ -101,5 +101,5 @@ LBL_A1:mp_clear (&a1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_jacobi.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_karatsuba_mul.c b/libtommath/bn_mp_karatsuba_mul.c index a1ff713..53187dd 100644 --- a/libtommath/bn_mp_karatsuba_mul.c +++ b/libtommath/bn_mp_karatsuba_mul.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* c = |a| * |b| using Karatsuba Multiplication using @@ -163,5 +163,5 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_karatsuba_mul.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_karatsuba_sqr.c b/libtommath/bn_mp_karatsuba_sqr.c index 3bfe157..7f1f253 100644 --- a/libtommath/bn_mp_karatsuba_sqr.c +++ b/libtommath/bn_mp_karatsuba_sqr.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Karatsuba squaring, computes b = a*a using three @@ -117,5 +117,5 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_karatsuba_sqr.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_lcm.c b/libtommath/bn_mp_lcm.c index 7bdaa43..72a5beb 100644 --- a/libtommath/bn_mp_lcm.c +++ b/libtommath/bn_mp_lcm.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes least common multiple as |a*b|/(a, b) */ @@ -56,5 +56,5 @@ LBL_T: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_lcm.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_lshd.c b/libtommath/bn_mp_lshd.c index 5ddeb62..84dfa81 100644 --- a/libtommath/bn_mp_lshd.c +++ b/libtommath/bn_mp_lshd.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shift left a certain amount of digits */ @@ -63,5 +63,5 @@ int mp_lshd (mp_int * a, int b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_lshd.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_mod.c b/libtommath/bn_mp_mod.c index 22cb069..16d9d76 100644 --- a/libtommath/bn_mp_mod.c +++ b/libtommath/bn_mp_mod.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* c = a mod b, 0 <= c < b */ @@ -44,5 +44,5 @@ mp_mod (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mod.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_mod_2d.c b/libtommath/bn_mp_mod_2d.c index 935d97d..2ab7e33 100644 --- a/libtommath/bn_mp_mod_2d.c +++ b/libtommath/bn_mp_mod_2d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* calc a value mod 2**b */ @@ -51,5 +51,5 @@ mp_mod_2d (mp_int * a, int b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mod_2d.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_mod_d.c b/libtommath/bn_mp_mod_d.c index 329594a..91dcbe1 100644 --- a/libtommath/bn_mp_mod_d.c +++ b/libtommath/bn_mp_mod_d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ int @@ -23,5 +23,5 @@ mp_mod_d (mp_int * a, mp_digit b, mp_digit * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mod_d.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_montgomery_calc_normalization.c b/libtommath/bn_mp_montgomery_calc_normalization.c index 0da933f..59dd8ea 100644 --- a/libtommath/bn_mp_montgomery_calc_normalization.c +++ b/libtommath/bn_mp_montgomery_calc_normalization.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* @@ -55,5 +55,5 @@ int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_montgomery_calc_normalization.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_montgomery_reduce.c b/libtommath/bn_mp_montgomery_reduce.c index d556332..f9305d8 100644 --- a/libtommath/bn_mp_montgomery_reduce.c +++ b/libtommath/bn_mp_montgomery_reduce.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes xR**-1 == x (mod N) via Montgomery Reduction */ @@ -114,5 +114,5 @@ mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_montgomery_reduce.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_montgomery_setup.c b/libtommath/bn_mp_montgomery_setup.c index e55e974..cea6778 100644 --- a/libtommath/bn_mp_montgomery_setup.c +++ b/libtommath/bn_mp_montgomery_setup.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* setups the montgomery reduction stuff */ @@ -55,5 +55,5 @@ mp_montgomery_setup (mp_int * n, mp_digit * rho) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_montgomery_setup.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_mul.c b/libtommath/bn_mp_mul.c index 8fd3872..6506635 100644 --- a/libtommath/bn_mp_mul.c +++ b/libtommath/bn_mp_mul.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* high level multiplication (handles sign) */ @@ -62,5 +62,5 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mul.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_mul_2.c b/libtommath/bn_mp_mul_2.c index 7409f1c..96d5710 100644 --- a/libtommath/bn_mp_mul_2.c +++ b/libtommath/bn_mp_mul_2.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* b = a*2 */ @@ -78,5 +78,5 @@ int mp_mul_2(mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mul_2.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_mul_2d.c b/libtommath/bn_mp_mul_2d.c index 800646d..88fa080 100644 --- a/libtommath/bn_mp_mul_2d.c +++ b/libtommath/bn_mp_mul_2d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shift left by a certain bit count */ @@ -81,5 +81,5 @@ int mp_mul_2d (mp_int * a, int b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mul_2d.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_mul_d.c b/libtommath/bn_mp_mul_d.c index 061199f..e86d6ab 100644 --- a/libtommath/bn_mp_mul_d.c +++ b/libtommath/bn_mp_mul_d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* multiply by a digit */ @@ -75,5 +75,5 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mul_d.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_mulmod.c b/libtommath/bn_mp_mulmod.c index cb605ed..d84c555 100644 --- a/libtommath/bn_mp_mulmod.c +++ b/libtommath/bn_mp_mulmod.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* d = a * b (mod c) */ @@ -36,5 +36,5 @@ int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_mulmod.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_n_root.c b/libtommath/bn_mp_n_root.c index 2fadc6c..734d5ea 100644 --- a/libtommath/bn_mp_n_root.c +++ b/libtommath/bn_mp_n_root.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* find the n'th root of an integer @@ -128,5 +128,5 @@ LBL_T1:mp_clear (&t1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_n_root.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_neg.c b/libtommath/bn_mp_neg.c index 9cc654a..17e851a 100644 --- a/libtommath/bn_mp_neg.c +++ b/libtommath/bn_mp_neg.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* b = -a */ @@ -36,5 +36,5 @@ int mp_neg (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_neg.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_or.c b/libtommath/bn_mp_or.c index 14c0f19..09df58c 100644 --- a/libtommath/bn_mp_or.c +++ b/libtommath/bn_mp_or.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* OR two ints together */ @@ -46,5 +46,5 @@ int mp_or (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_or.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_prime_fermat.c b/libtommath/bn_mp_prime_fermat.c index 9b647cb..f6edf9e 100644 --- a/libtommath/bn_mp_prime_fermat.c +++ b/libtommath/bn_mp_prime_fermat.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* performs one Fermat test. @@ -58,5 +58,5 @@ LBL_T:mp_clear (&t); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_fermat.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_prime_is_divisible.c b/libtommath/bn_mp_prime_is_divisible.c index 11a2f27..897c11b 100644 --- a/libtommath/bn_mp_prime_is_divisible.c +++ b/libtommath/bn_mp_prime_is_divisible.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines if an integers is divisible by one @@ -46,5 +46,5 @@ int mp_prime_is_divisible (mp_int * a, int *result) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_is_divisible.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_prime_is_prime.c b/libtommath/bn_mp_prime_is_prime.c index 3e0e36b..135f1d9 100644 --- a/libtommath/bn_mp_prime_is_prime.c +++ b/libtommath/bn_mp_prime_is_prime.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* performs a variable number of rounds of Miller-Rabin @@ -79,5 +79,5 @@ LBL_B:mp_clear (&b); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_is_prime.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_prime_miller_rabin.c b/libtommath/bn_mp_prime_miller_rabin.c index 712f20d..f2d6c7f 100644 --- a/libtommath/bn_mp_prime_miller_rabin.c +++ b/libtommath/bn_mp_prime_miller_rabin.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Miller-Rabin test of "a" to the base of "b" as described in @@ -99,5 +99,5 @@ LBL_N1:mp_clear (&n1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_miller_rabin.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_prime_next_prime.c b/libtommath/bn_mp_prime_next_prime.c index 48b8f02..a875260 100644 --- a/libtommath/bn_mp_prime_next_prime.c +++ b/libtommath/bn_mp_prime_next_prime.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* finds the next prime after the number "a" using "t" trials @@ -166,5 +166,5 @@ LBL_ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_next_prime.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_prime_rabin_miller_trials.c b/libtommath/bn_mp_prime_rabin_miller_trials.c index c4c9f5e..30825a3 100644 --- a/libtommath/bn_mp_prime_rabin_miller_trials.c +++ b/libtommath/bn_mp_prime_rabin_miller_trials.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ @@ -48,5 +48,5 @@ int mp_prime_rabin_miller_trials(int size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_rabin_miller_trials.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_prime_random_ex.c b/libtommath/bn_mp_prime_random_ex.c index daca61c..baddd10 100644 --- a/libtommath/bn_mp_prime_random_ex.c +++ b/libtommath/bn_mp_prime_random_ex.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* makes a truly random prime of a given size (bits), @@ -121,5 +121,5 @@ error: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_prime_random_ex.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_radix_size.c b/libtommath/bn_mp_radix_size.c index 7e01577..cf0a093 100644 --- a/libtommath/bn_mp_radix_size.c +++ b/libtommath/bn_mp_radix_size.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* returns size of ASCII reprensentation */ @@ -74,5 +74,5 @@ int mp_radix_size (mp_int * a, int radix, int *size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_radix_size.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 17:59:38 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_radix_smap.c b/libtommath/bn_mp_radix_smap.c index b9b88f9..913acad 100644 --- a/libtommath/bn_mp_radix_smap.c +++ b/libtommath/bn_mp_radix_smap.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* chars used in radix conversions */ @@ -20,5 +20,5 @@ const char *mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_radix_smap.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_rand.c b/libtommath/bn_mp_rand.c index 94b0e7f..6de7447 100644 --- a/libtommath/bn_mp_rand.c +++ b/libtommath/bn_mp_rand.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* makes a pseudo-random int of a given size */ @@ -51,5 +51,5 @@ mp_rand (mp_int * a, int digits) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_rand.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_read_radix.c b/libtommath/bn_mp_read_radix.c index 1aea788..9a6dd9b 100644 --- a/libtommath/bn_mp_read_radix.c +++ b/libtommath/bn_mp_read_radix.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* read a string [ASCII] in a given radix */ @@ -81,5 +81,5 @@ int mp_read_radix (mp_int * a, const char *str, int radix) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_read_radix.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 17:59:38 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_read_signed_bin.c b/libtommath/bn_mp_read_signed_bin.c index 05b1c9c..ae9e6a8 100644 --- a/libtommath/bn_mp_read_signed_bin.c +++ b/libtommath/bn_mp_read_signed_bin.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* read signed bin, big endian, first byte is 0==positive or 1==negative */ @@ -37,5 +37,5 @@ int mp_read_signed_bin (mp_int * a, const unsigned char *b, int c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_read_signed_bin.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_read_unsigned_bin.c b/libtommath/bn_mp_read_unsigned_bin.c index 655415a..b94265f 100644 --- a/libtommath/bn_mp_read_unsigned_bin.c +++ b/libtommath/bn_mp_read_unsigned_bin.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reads a unsigned char array, assumes the msb is stored first [big endian] */ @@ -51,5 +51,5 @@ int mp_read_unsigned_bin (mp_int * a, const unsigned char *b, int c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_read_unsigned_bin.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_reduce.c b/libtommath/bn_mp_reduce.c index dbc38c8..e4c8842 100644 --- a/libtommath/bn_mp_reduce.c +++ b/libtommath/bn_mp_reduce.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reduces x mod m, assumes 0 < x < m**2, mu is @@ -96,5 +96,5 @@ CLEANUP: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_reduce_2k.c b/libtommath/bn_mp_reduce_2k.c index 790ac3c..0bc9f36 100644 --- a/libtommath/bn_mp_reduce_2k.c +++ b/libtommath/bn_mp_reduce_2k.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reduces a modulo n where n is of the form 2**p - d */ @@ -57,5 +57,5 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_2k.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_reduce_2k_l.c b/libtommath/bn_mp_reduce_2k_l.c index 6a013cf..ff50948 100644 --- a/libtommath/bn_mp_reduce_2k_l.c +++ b/libtommath/bn_mp_reduce_2k_l.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reduces a modulo n where n is of the form 2**p - d @@ -58,5 +58,5 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_2k_l.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_reduce_2k_setup.c b/libtommath/bn_mp_reduce_2k_setup.c index 17c54c5..2a97cd0 100644 --- a/libtommath/bn_mp_reduce_2k_setup.c +++ b/libtommath/bn_mp_reduce_2k_setup.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines the setup value */ @@ -43,5 +43,5 @@ int mp_reduce_2k_setup(mp_int *a, mp_digit *d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_2k_setup.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_reduce_2k_setup_l.c b/libtommath/bn_mp_reduce_2k_setup_l.c index 2913162..acff733 100644 --- a/libtommath/bn_mp_reduce_2k_setup_l.c +++ b/libtommath/bn_mp_reduce_2k_setup_l.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines the setup value */ @@ -40,5 +40,5 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_2k_setup_l.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_reduce_is_2k.c b/libtommath/bn_mp_reduce_is_2k.c index ad14107..e398e19 100644 --- a/libtommath/bn_mp_reduce_is_2k.c +++ b/libtommath/bn_mp_reduce_is_2k.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines if mp_reduce_2k can be used */ @@ -48,5 +48,5 @@ int mp_reduce_is_2k(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_is_2k.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_reduce_is_2k_l.c b/libtommath/bn_mp_reduce_is_2k_l.c index 160b2ce..82e972d 100644 --- a/libtommath/bn_mp_reduce_is_2k_l.c +++ b/libtommath/bn_mp_reduce_is_2k_l.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines if reduce_2k_l can be used */ @@ -40,5 +40,5 @@ int mp_reduce_is_2k_l(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_is_2k_l.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_reduce_setup.c b/libtommath/bn_mp_reduce_setup.c index 4d2d99f..94bd26f 100644 --- a/libtommath/bn_mp_reduce_setup.c +++ b/libtommath/bn_mp_reduce_setup.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* pre-calculate the value required for Barrett reduction @@ -30,5 +30,5 @@ int mp_reduce_setup (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_reduce_setup.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_rshd.c b/libtommath/bn_mp_rshd.c index d5a75c6..ebc8d5f 100644 --- a/libtommath/bn_mp_rshd.c +++ b/libtommath/bn_mp_rshd.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shift right a certain amount of digits */ @@ -68,5 +68,5 @@ void mp_rshd (mp_int * a, int b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_rshd.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_set.c b/libtommath/bn_mp_set.c index af01b3c..9cb64c7 100644 --- a/libtommath/bn_mp_set.c +++ b/libtommath/bn_mp_set.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* set to a digit */ @@ -25,5 +25,5 @@ void mp_set (mp_int * a, mp_digit b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_set.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_set_int.c b/libtommath/bn_mp_set_int.c index c7ddb79..106c4e2 100644 --- a/libtommath/bn_mp_set_int.c +++ b/libtommath/bn_mp_set_int.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* set a 32-bit const */ @@ -44,5 +44,5 @@ int mp_set_int (mp_int * a, unsigned long b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_set_int.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_shrink.c b/libtommath/bn_mp_shrink.c index a40b65c..ddd72e3 100644 --- a/libtommath/bn_mp_shrink.c +++ b/libtommath/bn_mp_shrink.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shrink a bignum */ @@ -31,5 +31,5 @@ int mp_shrink (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_shrink.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_signed_bin_size.c b/libtommath/bn_mp_signed_bin_size.c index 4dbbeb8..97fdb96 100644 --- a/libtommath/bn_mp_signed_bin_size.c +++ b/libtommath/bn_mp_signed_bin_size.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* get the size for an signed equivalent */ @@ -23,5 +23,5 @@ int mp_signed_bin_size (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_signed_bin_size.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_sqr.c b/libtommath/bn_mp_sqr.c index ac926e9..4e75bdb 100644 --- a/libtommath/bn_mp_sqr.c +++ b/libtommath/bn_mp_sqr.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes b = a*a */ @@ -54,5 +54,5 @@ if (a->used >= KARATSUBA_SQR_CUTOFF) { #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sqr.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_sqrmod.c b/libtommath/bn_mp_sqrmod.c index fe5f4bb..d0f0a79 100644 --- a/libtommath/bn_mp_sqrmod.c +++ b/libtommath/bn_mp_sqrmod.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* c = a * a (mod b) */ @@ -37,5 +37,5 @@ mp_sqrmod (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sqrmod.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_sqrt.c b/libtommath/bn_mp_sqrt.c index ac8c2b8..086801d 100644 --- a/libtommath/bn_mp_sqrt.c +++ b/libtommath/bn_mp_sqrt.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* this function is less generic than mp_n_root, simpler and faster */ @@ -77,5 +77,5 @@ E2: mp_clear(&t1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sqrt.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_sub.c b/libtommath/bn_mp_sub.c index 52e1e43..c0e2def 100644 --- a/libtommath/bn_mp_sub.c +++ b/libtommath/bn_mp_sub.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* high level subtraction (handles signs) */ @@ -55,5 +55,5 @@ mp_sub (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sub.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_sub_d.c b/libtommath/bn_mp_sub_d.c index ffeea09..d979f35 100644 --- a/libtommath/bn_mp_sub_d.c +++ b/libtommath/bn_mp_sub_d.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* single digit subtraction */ @@ -89,5 +89,5 @@ mp_sub_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sub_d.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/12/27 17:59:38 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_submod.c b/libtommath/bn_mp_submod.c index f735e9e..046e844 100644 --- a/libtommath/bn_mp_submod.c +++ b/libtommath/bn_mp_submod.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* d = a - b (mod c) */ @@ -38,5 +38,5 @@ mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_submod.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_to_signed_bin.c b/libtommath/bn_mp_to_signed_bin.c index bc07d1e..066eb51 100644 --- a/libtommath/bn_mp_to_signed_bin.c +++ b/libtommath/bn_mp_to_signed_bin.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* store in signed [big endian] format */ @@ -29,5 +29,5 @@ int mp_to_signed_bin (mp_int * a, unsigned char *b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_to_signed_bin.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_to_signed_bin_n.c b/libtommath/bn_mp_to_signed_bin_n.c index ff2a768..b1df632 100644 --- a/libtommath/bn_mp_to_signed_bin_n.c +++ b/libtommath/bn_mp_to_signed_bin_n.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* store in signed [big endian] format */ @@ -27,5 +27,5 @@ int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_to_signed_bin_n.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_to_unsigned_bin.c b/libtommath/bn_mp_to_unsigned_bin.c index 29b8d36..d69de35 100644 --- a/libtommath/bn_mp_to_unsigned_bin.c +++ b/libtommath/bn_mp_to_unsigned_bin.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* store in unsigned [big endian] format */ @@ -44,5 +44,5 @@ int mp_to_unsigned_bin (mp_int * a, unsigned char *b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_to_unsigned_bin.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_to_unsigned_bin_n.c b/libtommath/bn_mp_to_unsigned_bin_n.c index 415e87d..5621960 100644 --- a/libtommath/bn_mp_to_unsigned_bin_n.c +++ b/libtommath/bn_mp_to_unsigned_bin_n.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* store in unsigned [big endian] format */ @@ -27,5 +27,5 @@ int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_to_unsigned_bin_n.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_toom_mul.c b/libtommath/bn_mp_toom_mul.c index e6fb523..14d0705 100644 --- a/libtommath/bn_mp_toom_mul.c +++ b/libtommath/bn_mp_toom_mul.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* multiplication using the Toom-Cook 3-way algorithm @@ -280,5 +280,5 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_toom_mul.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_toom_sqr.c b/libtommath/bn_mp_toom_sqr.c index ba800a0..14a235a 100644 --- a/libtommath/bn_mp_toom_sqr.c +++ b/libtommath/bn_mp_toom_sqr.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* squaring using Toom-Cook 3-way algorithm */ @@ -222,5 +222,5 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_toom_sqr.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_toradix.c b/libtommath/bn_mp_toradix.c index 96ac736..1bd8819 100644 --- a/libtommath/bn_mp_toradix.c +++ b/libtommath/bn_mp_toradix.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* stores a bignum as a ASCII string in a given radix (2..64) */ @@ -71,5 +71,5 @@ int mp_toradix (mp_int * a, char *str, int radix) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_toradix.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_toradix_n.c b/libtommath/bn_mp_toradix_n.c index 607a4be..39d5101 100644 --- a/libtommath/bn_mp_toradix_n.c +++ b/libtommath/bn_mp_toradix_n.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* stores a bignum as a ASCII string in a given radix (2..64) @@ -84,5 +84,5 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_toradix_n.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/12/27 17:59:38 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_unsigned_bin_size.c b/libtommath/bn_mp_unsigned_bin_size.c index 9622dbf..e79b91a 100644 --- a/libtommath/bn_mp_unsigned_bin_size.c +++ b/libtommath/bn_mp_unsigned_bin_size.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* get the size for an unsigned equivalent */ @@ -24,5 +24,5 @@ int mp_unsigned_bin_size (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_unsigned_bin_size.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_xor.c b/libtommath/bn_mp_xor.c index ae9f29b..bf40408 100644 --- a/libtommath/bn_mp_xor.c +++ b/libtommath/bn_mp_xor.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* XOR two ints together */ @@ -47,5 +47,5 @@ mp_xor (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_xor.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_mp_zero.c b/libtommath/bn_mp_zero.c index 6f7469c..3cbd933 100644 --- a/libtommath/bn_mp_zero.c +++ b/libtommath/bn_mp_zero.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* set to zero */ @@ -32,5 +32,5 @@ void mp_zero (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_zero.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_prime_tab.c b/libtommath/bn_prime_tab.c index 9ec6d7a..38cb592 100644 --- a/libtommath/bn_prime_tab.c +++ b/libtommath/bn_prime_tab.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ const mp_digit ltm_prime_tab[] = { 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, @@ -57,5 +57,5 @@ const mp_digit ltm_prime_tab[] = { #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_prime_tab.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_reverse.c b/libtommath/bn_reverse.c index ad119ff..3132f93 100644 --- a/libtommath/bn_reverse.c +++ b/libtommath/bn_reverse.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reverse an array, used for radix code */ @@ -35,5 +35,5 @@ bn_reverse (unsigned char *s, int len) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_reverse.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_s_mp_add.c b/libtommath/bn_s_mp_add.c index f196f3e..7023300 100644 --- a/libtommath/bn_s_mp_add.c +++ b/libtommath/bn_s_mp_add.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* low level addition, based on HAC pp.594, Algorithm 14.7 */ @@ -105,5 +105,5 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_add.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_s_mp_exptmod.c b/libtommath/bn_s_mp_exptmod.c index d33558a..7c6e304 100644 --- a/libtommath/bn_s_mp_exptmod.c +++ b/libtommath/bn_s_mp_exptmod.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ #ifdef MP_LOW_MEM #define TAB_SIZE 32 @@ -248,5 +248,5 @@ LBL_M: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_exptmod.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_s_mp_mul_digs.c b/libtommath/bn_s_mp_mul_digs.c index e296640..eb99e33 100644 --- a/libtommath/bn_s_mp_mul_digs.c +++ b/libtommath/bn_s_mp_mul_digs.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* multiplies |a| * |b| and only computes upto digs digits of result @@ -86,5 +86,5 @@ int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_mul_digs.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_s_mp_mul_high_digs.c b/libtommath/bn_s_mp_mul_high_digs.c index 972918f..2ae9ee1 100644 --- a/libtommath/bn_s_mp_mul_high_digs.c +++ b/libtommath/bn_s_mp_mul_high_digs.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* multiplies |a| * |b| and does not compute the lower digs digits @@ -77,5 +77,5 @@ s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_mul_high_digs.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_s_mp_sqr.c b/libtommath/bn_s_mp_sqr.c index 1b1e0b4..0ae2869 100644 --- a/libtommath/bn_s_mp_sqr.c +++ b/libtommath/bn_s_mp_sqr.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ @@ -80,5 +80,5 @@ int s_mp_sqr (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_sqr.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bn_s_mp_sub.c b/libtommath/bn_s_mp_sub.c index fb2ea21..94375a0 100644 --- a/libtommath/bn_s_mp_sub.c +++ b/libtommath/bn_s_mp_sub.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* low level subtraction (assumes |a| > |b|), HAC pp.595 Algorithm 14.9 */ @@ -85,5 +85,5 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_s_mp_sub.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/bncore.c b/libtommath/bncore.c index fad10d2..e53fdee 100644 --- a/libtommath/bncore.c +++ b/libtommath/bncore.c @@ -12,7 +12,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Known optimal configurations @@ -32,5 +32,5 @@ int KARATSUBA_MUL_CUTOFF = 80, /* Min. number of digits before Karatsub #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bncore.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:56 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:11 $ */ diff --git a/libtommath/changes.txt b/libtommath/changes.txt index 1322d14..9498d36 100644 --- a/libtommath/changes.txt +++ b/libtommath/changes.txt @@ -1,3 +1,14 @@ +April 4th, 2006 +v0.39 -- Jim Wigginton pointed out my Montgomery examples in figures 6.4 and 6.6 were off by one, k should be 9 not 8 + -- Bruce Guenter suggested I use --tag=CC for libtool builds where the compiler may think it's C++. + -- "mm" from sci.crypt pointed out that my mp_gcd was sub-optimal (I also updated and corrected the book) + -- updated some of the @@ tags in tommath.src to reflect source changes. + -- updated email and url info in all source files + +Jan 26th, 2006 +v0.38 -- broken makefile.shared fixed + -- removed some carry stores that were not required [updated text] + November 18th, 2005 v0.37 -- [Don Porter] reported on a TCL list [HEY SEND ME BUGREPORTS ALREADY!!!] that mp_add_d() would compute -0 with some inputs. Fixed. -- [rinick@gmail.com] reported the makefile.bcc was messed up. Fixed. diff --git a/libtommath/etc/mersenne.c b/libtommath/etc/mersenne.c index 939616f..e4891c8 100644 --- a/libtommath/etc/mersenne.c +++ b/libtommath/etc/mersenne.c @@ -1,6 +1,6 @@ /* Finds Mersenne primes using the Lucas-Lehmer test * - * Tom St Denis, tomstdenis@iahu.ca + * Tom St Denis, tomstdenis@gmail.com */ #include #include @@ -140,5 +140,5 @@ main (void) } /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/etc/mersenne.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:32:16 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:28 $ */ diff --git a/libtommath/etc/pprime.c b/libtommath/etc/pprime.c index a922b64..abb3c5a 100644 --- a/libtommath/etc/pprime.c +++ b/libtommath/etc/pprime.c @@ -1,8 +1,8 @@ /* Generates provable primes * - * See http://iahu.ca:8080/papers/pp.pdf for more info. + * See http://gmail.com:8080/papers/pp.pdf for more info. * - * Tom St Denis, tomstdenis@iahu.ca, http://tom.iahu.ca + * Tom St Denis, tomstdenis@gmail.com, http://tom.gmail.com */ #include #include "tommath.h" @@ -396,5 +396,5 @@ main (void) } /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/etc/pprime.c,v $ */ -/* $Revision: 1.1.1.2 $ */ -/* $Date: 2005/09/26 16:32:16 $ */ +/* $Revision: 1.1.1.3 $ */ +/* $Date: 2006/12/01 00:08:28 $ */ diff --git a/libtommath/etc/tune.c b/libtommath/etc/tune.c index b09c7d9..3088bdb 100644 --- a/libtommath/etc/tune.c +++ b/libtommath/etc/tune.c @@ -1,6 +1,6 @@ /* Tune the Karatsuba parameters * - * Tom St Denis, tomstdenis@iahu.ca + * Tom St Denis, tomstdenis@gmail.com */ #include #include @@ -138,5 +138,5 @@ main (void) } /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/etc/tune.c,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:32:16 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:29 $ */ diff --git a/libtommath/makefile b/libtommath/makefile index 192e842..e08a888 100644 --- a/libtommath/makefile +++ b/libtommath/makefile @@ -3,7 +3,7 @@ #Tom St Denis #version of library -VERSION=0.37 +VERSION=0.39 CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare diff --git a/libtommath/makefile.shared b/libtommath/makefile.shared index 9d2c20a..8522d44 100644 --- a/libtommath/makefile.shared +++ b/libtommath/makefile.shared @@ -1,9 +1,9 @@ #Makefile for GCC # #Tom St Denis -VERSION=0:37 +VERSION=0:39 -CC = libtool --mode=compile gcc +CC = libtool --mode=compile --tag=CC gcc CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare @@ -86,7 +86,8 @@ $(LIBNAME): $(OBJECTS) libtool --mode=link gcc *.lo -o $(LIBNAME) -rpath $(LIBPATH) -version-info $(VERSION) install: $(LIBNAME) - libtool --mode=install install -c $(LIBNAME) $(LIBPATH)/$(LIBNAME) + install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH) + libtool --mode=install install -c $(LIBNAME) $(DESTDIR)$(LIBPATH)/$(LIBNAME) install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) diff --git a/libtommath/poster.pdf b/libtommath/poster.pdf index 95bf4b3..1f705cf 100644 Binary files a/libtommath/poster.pdf and b/libtommath/poster.pdf differ diff --git a/libtommath/pre_gen/mpi.c b/libtommath/pre_gen/mpi.c index d915a58..62ec029 100644 --- a/libtommath/pre_gen/mpi.c +++ b/libtommath/pre_gen/mpi.c @@ -13,7 +13,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ static const struct { @@ -44,8 +44,8 @@ char *mp_error_to_string(int code) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_error.c */ @@ -64,7 +64,7 @@ char *mp_error_to_string(int code) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes the modular inverse via binary extended euclidean algorithm, @@ -196,8 +196,8 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_fast_mp_invmod.c */ @@ -216,7 +216,7 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes xR**-1 == x (mod N) via Montgomery Reduction @@ -372,8 +372,8 @@ int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_fast_mp_montgomery_reduce.c */ @@ -392,7 +392,7 @@ int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Fast (comba) multiplier @@ -458,10 +458,7 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) /* make next carry */ _W = _W >> ((mp_word)DIGIT_BIT); - } - - /* store final carry */ - W[ix] = (mp_digit)(_W & MP_MASK); + } /* setup dest */ olduse = c->used; @@ -486,8 +483,8 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_fast_s_mp_mul_digs.c */ @@ -506,7 +503,7 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* this is a modified version of fast_s_mul_digs that only produces @@ -564,9 +561,6 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) _W = _W >> ((mp_word)DIGIT_BIT); } - /* store final carry */ - W[ix] = (mp_digit)(_W & MP_MASK); - /* setup dest */ olduse = c->used; c->used = pa; @@ -591,8 +585,8 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_fast_s_mp_mul_high_digs.c */ @@ -611,7 +605,7 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* the jist of squaring... @@ -709,8 +703,8 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_fast_s_mp_sqr.c */ @@ -729,7 +723,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes a = 2**b @@ -761,8 +755,8 @@ mp_2expt (mp_int * a, int b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_2expt.c */ @@ -781,7 +775,7 @@ mp_2expt (mp_int * a, int b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* b = |a| @@ -808,8 +802,8 @@ mp_abs (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_abs.c */ @@ -828,7 +822,7 @@ mp_abs (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* high level addition (handles signs) */ @@ -865,8 +859,8 @@ int mp_add (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_add.c */ @@ -885,7 +879,7 @@ int mp_add (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* single digit addition */ @@ -981,8 +975,8 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_add_d.c */ @@ -1001,7 +995,7 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* d = a + b (mod c) */ @@ -1026,8 +1020,8 @@ mp_addmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_addmod.c */ @@ -1046,7 +1040,7 @@ mp_addmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* AND two ints together */ @@ -1087,8 +1081,8 @@ mp_and (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_and.c */ @@ -1107,7 +1101,7 @@ mp_and (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* trim unused digits @@ -1135,8 +1129,8 @@ mp_clamp (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_clamp.c */ @@ -1155,7 +1149,7 @@ mp_clamp (mp_int * a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* clear one (frees) */ @@ -1183,8 +1177,8 @@ mp_clear (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_clear.c */ @@ -1203,7 +1197,7 @@ mp_clear (mp_int * a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ #include @@ -1221,8 +1215,8 @@ void mp_clear_multi(mp_int *mp, ...) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_clear_multi.c */ @@ -1241,7 +1235,7 @@ void mp_clear_multi(mp_int *mp, ...) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* compare two ints (signed)*/ @@ -1268,8 +1262,8 @@ mp_cmp (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_cmp.c */ @@ -1288,7 +1282,7 @@ mp_cmp (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* compare a digit */ @@ -1316,8 +1310,8 @@ int mp_cmp_d(mp_int * a, mp_digit b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_cmp_d.c */ @@ -1336,7 +1330,7 @@ int mp_cmp_d(mp_int * a, mp_digit b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* compare maginitude of two ints (unsigned) */ @@ -1375,8 +1369,8 @@ int mp_cmp_mag (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_cmp_mag.c */ @@ -1395,7 +1389,7 @@ int mp_cmp_mag (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ static const int lnz[16] = { @@ -1432,8 +1426,8 @@ int mp_cnt_lsb(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_cnt_lsb.c */ @@ -1452,7 +1446,7 @@ int mp_cnt_lsb(mp_int *a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* copy, b = a */ @@ -1504,8 +1498,8 @@ mp_copy (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_copy.c */ @@ -1524,7 +1518,7 @@ mp_copy (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* returns the number of bits in an int */ @@ -1553,8 +1547,8 @@ mp_count_bits (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_count_bits.c */ @@ -1573,7 +1567,7 @@ mp_count_bits (mp_int * a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ #ifdef BN_MP_DIV_SMALL @@ -1849,8 +1843,8 @@ LBL_Q:mp_clear (&q); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_div.c */ @@ -1869,7 +1863,7 @@ LBL_Q:mp_clear (&q); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* b = a/2 */ @@ -1921,8 +1915,8 @@ int mp_div_2(mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_div_2.c */ @@ -1941,7 +1935,7 @@ int mp_div_2(mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shift right by a certain bit count (store quotient in c, optional remainder in d) */ @@ -2022,8 +2016,8 @@ int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_div_2d.c */ @@ -2042,7 +2036,7 @@ int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* divide by three (based on routine from MPI and the GMP manual) */ @@ -2105,8 +2099,8 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_div_3.c */ @@ -2125,7 +2119,7 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ static int s_is_power_of_two(mp_digit b, int *p) @@ -2219,8 +2213,8 @@ int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_div_d.c */ @@ -2239,7 +2233,7 @@ int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines if a number is a valid DR modulus */ @@ -2266,8 +2260,8 @@ int mp_dr_is_modulus(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_dr_is_modulus.c */ @@ -2286,7 +2280,7 @@ int mp_dr_is_modulus(mp_int *a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reduce "x" in place modulo "n" using the Diminished Radix algorithm. @@ -2364,8 +2358,8 @@ top: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_dr_reduce.c */ @@ -2384,7 +2378,7 @@ top: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines the setup value */ @@ -2400,8 +2394,8 @@ void mp_dr_setup(mp_int *a, mp_digit *d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_dr_setup.c */ @@ -2420,7 +2414,7 @@ void mp_dr_setup(mp_int *a, mp_digit *d) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* swap the elements of two integers, for cases where you can't simply swap the @@ -2438,8 +2432,8 @@ mp_exch (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_exch.c */ @@ -2458,7 +2452,7 @@ mp_exch (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* calculate c = a**b using a square-multiply algorithm */ @@ -2499,8 +2493,8 @@ int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_expt_d.c */ @@ -2519,7 +2513,7 @@ int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ @@ -2615,8 +2609,8 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_exptmod.c */ @@ -2635,7 +2629,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes Y == G**X mod P, HAC pp.616, Algorithm 14.85 @@ -2940,8 +2934,8 @@ LBL_M: /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_exptmod_fast.c */ @@ -2960,7 +2954,7 @@ LBL_M: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Extended euclidean algorithm of (a, b) produces @@ -3026,8 +3020,8 @@ _ERR: mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_exteuclid.c */ @@ -3046,7 +3040,7 @@ _ERR: mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* read a bigint from a file stream in ASCII */ @@ -3097,8 +3091,8 @@ int mp_fread(mp_int *a, int radix, FILE *stream) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_fread.c */ @@ -3117,7 +3111,7 @@ int mp_fread(mp_int *a, int radix, FILE *stream) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ int mp_fwrite(mp_int *a, int radix, FILE *stream) @@ -3153,8 +3147,8 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_fwrite.c */ @@ -3173,7 +3167,7 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Greatest Common Divisor using the binary method */ @@ -3183,21 +3177,13 @@ int mp_gcd (mp_int * a, mp_int * b, mp_int * c) int k, u_lsb, v_lsb, res; /* either zero than gcd is the largest */ - if (mp_iszero (a) == 1 && mp_iszero (b) == 0) { + if (mp_iszero (a) == MP_YES) { return mp_abs (b, c); } - if (mp_iszero (a) == 0 && mp_iszero (b) == 1) { + if (mp_iszero (b) == MP_YES) { return mp_abs (a, c); } - /* optimized. At this point if a == 0 then - * b must equal zero too - */ - if (mp_iszero (a) == 1) { - mp_zero(c); - return MP_OKAY; - } - /* get copies of a and b we can modify */ if ((res = mp_init_copy (&u, a)) != MP_OKAY) { return res; @@ -3270,8 +3256,8 @@ LBL_U:mp_clear (&v); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_gcd.c */ @@ -3290,7 +3276,7 @@ LBL_U:mp_clear (&v); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* get the lower 32-bits of an mp_int */ @@ -3319,8 +3305,8 @@ unsigned long mp_get_int(mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_get_int.c */ @@ -3339,7 +3325,7 @@ unsigned long mp_get_int(mp_int * a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* grow as required */ @@ -3380,8 +3366,8 @@ int mp_grow (mp_int * a, int size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_grow.c */ @@ -3400,7 +3386,7 @@ int mp_grow (mp_int * a, int size) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* init a new mp_int */ @@ -3430,8 +3416,8 @@ int mp_init (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_init.c */ @@ -3450,7 +3436,7 @@ int mp_init (mp_int * a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* creates "a" then copies b into it */ @@ -3466,8 +3452,8 @@ int mp_init_copy (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_init_copy.c */ @@ -3486,7 +3472,7 @@ int mp_init_copy (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ #include @@ -3529,8 +3515,8 @@ int mp_init_multi(mp_int *mp, ...) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_init_multi.c */ @@ -3549,7 +3535,7 @@ int mp_init_multi(mp_int *mp, ...) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* initialize and set a digit */ @@ -3565,8 +3551,8 @@ int mp_init_set (mp_int * a, mp_digit b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_init_set.c */ @@ -3585,7 +3571,7 @@ int mp_init_set (mp_int * a, mp_digit b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* initialize and set a digit */ @@ -3600,8 +3586,8 @@ int mp_init_set_int (mp_int * a, unsigned long b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_init_set_int.c */ @@ -3620,7 +3606,7 @@ int mp_init_set_int (mp_int * a, unsigned long b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* init an mp_init for a given size */ @@ -3652,8 +3638,8 @@ int mp_init_size (mp_int * a, int size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_init_size.c */ @@ -3672,7 +3658,7 @@ int mp_init_size (mp_int * a, int size) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* hac 14.61, pp608 */ @@ -3699,8 +3685,8 @@ int mp_invmod (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_invmod.c */ @@ -3719,7 +3705,7 @@ int mp_invmod (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* hac 14.61, pp608 */ @@ -3878,8 +3864,8 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_invmod_slow.c */ @@ -3898,7 +3884,7 @@ LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Check if remainders are possible squares - fast exclude non-squares */ @@ -3991,8 +3977,8 @@ ERR:mp_clear(&t); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_is_square.c */ @@ -4011,7 +3997,7 @@ ERR:mp_clear(&t); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes the jacobi c = (a | n) (or Legendre if n is prime) @@ -4100,8 +4086,8 @@ LBL_A1:mp_clear (&a1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_jacobi.c */ @@ -4120,7 +4106,7 @@ LBL_A1:mp_clear (&a1); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* c = |a| * |b| using Karatsuba Multiplication using @@ -4271,8 +4257,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_karatsuba_mul.c */ @@ -4291,7 +4277,7 @@ ERR: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Karatsuba squaring, computes b = a*a using three @@ -4396,8 +4382,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_karatsuba_sqr.c */ @@ -4416,7 +4402,7 @@ ERR: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes least common multiple as |a*b|/(a, b) */ @@ -4460,8 +4446,8 @@ LBL_T: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_lcm.c */ @@ -4480,7 +4466,7 @@ LBL_T: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shift left a certain amount of digits */ @@ -4531,8 +4517,8 @@ int mp_lshd (mp_int * a, int b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_lshd.c */ @@ -4551,7 +4537,7 @@ int mp_lshd (mp_int * a, int b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* c = a mod b, 0 <= c < b */ @@ -4583,8 +4569,8 @@ mp_mod (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_mod.c */ @@ -4603,7 +4589,7 @@ mp_mod (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* calc a value mod 2**b */ @@ -4642,8 +4628,8 @@ mp_mod_2d (mp_int * a, int b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_mod_2d.c */ @@ -4662,7 +4648,7 @@ mp_mod_2d (mp_int * a, int b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ int @@ -4673,8 +4659,8 @@ mp_mod_d (mp_int * a, mp_digit b, mp_digit * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_mod_d.c */ @@ -4693,7 +4679,7 @@ mp_mod_d (mp_int * a, mp_digit b, mp_digit * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* @@ -4736,8 +4722,8 @@ int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_montgomery_calc_normalization.c */ @@ -4756,7 +4742,7 @@ int mp_montgomery_calc_normalization (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes xR**-1 == x (mod N) via Montgomery Reduction */ @@ -4858,8 +4844,8 @@ mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_montgomery_reduce.c */ @@ -4878,7 +4864,7 @@ mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* setups the montgomery reduction stuff */ @@ -4921,8 +4907,8 @@ mp_montgomery_setup (mp_int * n, mp_digit * rho) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_montgomery_setup.c */ @@ -4941,7 +4927,7 @@ mp_montgomery_setup (mp_int * n, mp_digit * rho) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* high level multiplication (handles sign) */ @@ -4991,8 +4977,8 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_mul.c */ @@ -5011,7 +4997,7 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* b = a*2 */ @@ -5077,8 +5063,8 @@ int mp_mul_2(mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_mul_2.c */ @@ -5097,7 +5083,7 @@ int mp_mul_2(mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shift left by a certain bit count */ @@ -5166,8 +5152,8 @@ int mp_mul_2d (mp_int * a, int b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_mul_2d.c */ @@ -5186,7 +5172,7 @@ int mp_mul_2d (mp_int * a, int b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* multiply by a digit */ @@ -5249,8 +5235,8 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_mul_d.c */ @@ -5269,7 +5255,7 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* d = a * b (mod c) */ @@ -5293,8 +5279,8 @@ int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_mulmod.c */ @@ -5313,7 +5299,7 @@ int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* find the n'th root of an integer @@ -5429,8 +5415,8 @@ LBL_T1:mp_clear (&t1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_n_root.c */ @@ -5449,7 +5435,7 @@ LBL_T1:mp_clear (&t1); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* b = -a */ @@ -5473,8 +5459,8 @@ int mp_neg (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_neg.c */ @@ -5493,7 +5479,7 @@ int mp_neg (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* OR two ints together */ @@ -5527,8 +5513,8 @@ int mp_or (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_or.c */ @@ -5547,7 +5533,7 @@ int mp_or (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* performs one Fermat test. @@ -5593,8 +5579,8 @@ LBL_T:mp_clear (&t); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_prime_fermat.c */ @@ -5613,7 +5599,7 @@ LBL_T:mp_clear (&t); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines if an integers is divisible by one @@ -5647,8 +5633,8 @@ int mp_prime_is_divisible (mp_int * a, int *result) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_prime_is_divisible.c */ @@ -5667,7 +5653,7 @@ int mp_prime_is_divisible (mp_int * a, int *result) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* performs a variable number of rounds of Miller-Rabin @@ -5734,8 +5720,8 @@ LBL_B:mp_clear (&b); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_prime_is_prime.c */ @@ -5754,7 +5740,7 @@ LBL_B:mp_clear (&b); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Miller-Rabin test of "a" to the base of "b" as described in @@ -5841,8 +5827,8 @@ LBL_N1:mp_clear (&n1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_prime_miller_rabin.c */ @@ -5861,7 +5847,7 @@ LBL_N1:mp_clear (&n1); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* finds the next prime after the number "a" using "t" trials @@ -6015,8 +6001,8 @@ LBL_ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_prime_next_prime.c */ @@ -6035,7 +6021,7 @@ LBL_ERR: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ @@ -6071,8 +6057,8 @@ int mp_prime_rabin_miller_trials(int size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_prime_rabin_miller_trials.c */ @@ -6091,7 +6077,7 @@ int mp_prime_rabin_miller_trials(int size) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* makes a truly random prime of a given size (bits), @@ -6200,8 +6186,8 @@ error: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_prime_random_ex.c */ @@ -6220,7 +6206,7 @@ error: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* returns size of ASCII reprensentation */ @@ -6282,8 +6268,8 @@ int mp_radix_size (mp_int * a, int radix, int *size) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_radix_size.c */ @@ -6302,7 +6288,7 @@ int mp_radix_size (mp_int * a, int radix, int *size) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* chars used in radix conversions */ @@ -6310,8 +6296,8 @@ const char *mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_radix_smap.c */ @@ -6330,7 +6316,7 @@ const char *mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* makes a pseudo-random int of a given size */ @@ -6369,8 +6355,8 @@ mp_rand (mp_int * a, int digits) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_rand.c */ @@ -6389,7 +6375,7 @@ mp_rand (mp_int * a, int digits) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* read a string [ASCII] in a given radix */ @@ -6458,8 +6444,8 @@ int mp_read_radix (mp_int * a, const char *str, int radix) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_read_radix.c */ @@ -6478,7 +6464,7 @@ int mp_read_radix (mp_int * a, const char *str, int radix) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* read signed bin, big endian, first byte is 0==positive or 1==negative */ @@ -6503,8 +6489,8 @@ int mp_read_signed_bin (mp_int * a, const unsigned char *b, int c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_read_signed_bin.c */ @@ -6523,7 +6509,7 @@ int mp_read_signed_bin (mp_int * a, const unsigned char *b, int c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reads a unsigned char array, assumes the msb is stored first [big endian] */ @@ -6562,8 +6548,8 @@ int mp_read_unsigned_bin (mp_int * a, const unsigned char *b, int c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_read_unsigned_bin.c */ @@ -6582,7 +6568,7 @@ int mp_read_unsigned_bin (mp_int * a, const unsigned char *b, int c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reduces x mod m, assumes 0 < x < m**2, mu is @@ -6666,8 +6652,8 @@ CLEANUP: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_reduce.c */ @@ -6686,7 +6672,7 @@ CLEANUP: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reduces a modulo n where n is of the form 2**p - d */ @@ -6731,8 +6717,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_reduce_2k.c */ @@ -6751,7 +6737,7 @@ ERR: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reduces a modulo n where n is of the form 2**p - d @@ -6797,8 +6783,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_reduce_2k_l.c */ @@ -6817,7 +6803,7 @@ ERR: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines the setup value */ @@ -6848,8 +6834,8 @@ int mp_reduce_2k_setup(mp_int *a, mp_digit *d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_reduce_2k_setup.c */ @@ -6868,7 +6854,7 @@ int mp_reduce_2k_setup(mp_int *a, mp_digit *d) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines the setup value */ @@ -6896,8 +6882,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_reduce_2k_setup_l.c */ @@ -6916,7 +6902,7 @@ ERR: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines if mp_reduce_2k can be used */ @@ -6952,8 +6938,8 @@ int mp_reduce_is_2k(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_reduce_is_2k.c */ @@ -6972,7 +6958,7 @@ int mp_reduce_is_2k(mp_int *a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* determines if reduce_2k_l can be used */ @@ -7000,8 +6986,8 @@ int mp_reduce_is_2k_l(mp_int *a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_reduce_is_2k_l.c */ @@ -7020,7 +7006,7 @@ int mp_reduce_is_2k_l(mp_int *a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* pre-calculate the value required for Barrett reduction @@ -7038,8 +7024,8 @@ int mp_reduce_setup (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_reduce_setup.c */ @@ -7058,7 +7044,7 @@ int mp_reduce_setup (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shift right a certain amount of digits */ @@ -7114,8 +7100,8 @@ void mp_rshd (mp_int * a, int b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_rshd.c */ @@ -7134,7 +7120,7 @@ void mp_rshd (mp_int * a, int b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* set to a digit */ @@ -7147,8 +7133,8 @@ void mp_set (mp_int * a, mp_digit b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_set.c */ @@ -7167,7 +7153,7 @@ void mp_set (mp_int * a, mp_digit b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* set a 32-bit const */ @@ -7199,8 +7185,8 @@ int mp_set_int (mp_int * a, unsigned long b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_set_int.c */ @@ -7219,7 +7205,7 @@ int mp_set_int (mp_int * a, unsigned long b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* shrink a bignum */ @@ -7238,8 +7224,8 @@ int mp_shrink (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_shrink.c */ @@ -7258,7 +7244,7 @@ int mp_shrink (mp_int * a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* get the size for an signed equivalent */ @@ -7269,8 +7255,8 @@ int mp_signed_bin_size (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_signed_bin_size.c */ @@ -7289,7 +7275,7 @@ int mp_signed_bin_size (mp_int * a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* computes b = a*a */ @@ -7331,8 +7317,8 @@ if (a->used >= KARATSUBA_SQR_CUTOFF) { #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_sqr.c */ @@ -7351,7 +7337,7 @@ if (a->used >= KARATSUBA_SQR_CUTOFF) { * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* c = a * a (mod b) */ @@ -7376,8 +7362,8 @@ mp_sqrmod (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_sqrmod.c */ @@ -7396,7 +7382,7 @@ mp_sqrmod (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* this function is less generic than mp_n_root, simpler and faster */ @@ -7461,8 +7447,8 @@ E2: mp_clear(&t1); #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_sqrt.c */ @@ -7481,7 +7467,7 @@ E2: mp_clear(&t1); * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* high level subtraction (handles signs) */ @@ -7524,8 +7510,8 @@ mp_sub (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_sub.c */ @@ -7544,7 +7530,7 @@ mp_sub (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* single digit subtraction */ @@ -7621,8 +7607,8 @@ mp_sub_d (mp_int * a, mp_digit b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_sub_d.c */ @@ -7641,7 +7627,7 @@ mp_sub_d (mp_int * a, mp_digit b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* d = a - b (mod c) */ @@ -7667,8 +7653,8 @@ mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_submod.c */ @@ -7687,7 +7673,7 @@ mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* store in signed [big endian] format */ @@ -7704,8 +7690,8 @@ int mp_to_signed_bin (mp_int * a, unsigned char *b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_to_signed_bin.c */ @@ -7724,7 +7710,7 @@ int mp_to_signed_bin (mp_int * a, unsigned char *b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* store in signed [big endian] format */ @@ -7739,8 +7725,8 @@ int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_to_signed_bin_n.c */ @@ -7759,7 +7745,7 @@ int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* store in unsigned [big endian] format */ @@ -7791,8 +7777,8 @@ int mp_to_unsigned_bin (mp_int * a, unsigned char *b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_to_unsigned_bin.c */ @@ -7811,7 +7797,7 @@ int mp_to_unsigned_bin (mp_int * a, unsigned char *b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* store in unsigned [big endian] format */ @@ -7826,8 +7812,8 @@ int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_to_unsigned_bin_n.c */ @@ -7846,7 +7832,7 @@ int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* multiplication using the Toom-Cook 3-way algorithm @@ -8114,8 +8100,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_toom_mul.c */ @@ -8134,7 +8120,7 @@ ERR: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* squaring using Toom-Cook 3-way algorithm */ @@ -8344,8 +8330,8 @@ ERR: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_toom_sqr.c */ @@ -8364,7 +8350,7 @@ ERR: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* stores a bignum as a ASCII string in a given radix (2..64) */ @@ -8423,8 +8409,8 @@ int mp_toradix (mp_int * a, char *str, int radix) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_toradix.c */ @@ -8443,7 +8429,7 @@ int mp_toradix (mp_int * a, char *str, int radix) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* stores a bignum as a ASCII string in a given radix (2..64) @@ -8515,8 +8501,8 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_toradix_n.c */ @@ -8535,7 +8521,7 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* get the size for an unsigned equivalent */ @@ -8547,8 +8533,8 @@ int mp_unsigned_bin_size (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_unsigned_bin_size.c */ @@ -8567,7 +8553,7 @@ int mp_unsigned_bin_size (mp_int * a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* XOR two ints together */ @@ -8602,8 +8588,8 @@ mp_xor (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_xor.c */ @@ -8622,7 +8608,7 @@ mp_xor (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* set to zero */ @@ -8642,8 +8628,8 @@ void mp_zero (mp_int * a) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_mp_zero.c */ @@ -8662,7 +8648,7 @@ void mp_zero (mp_int * a) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ const mp_digit ltm_prime_tab[] = { 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, @@ -8707,8 +8693,8 @@ const mp_digit ltm_prime_tab[] = { #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_prime_tab.c */ @@ -8727,7 +8713,7 @@ const mp_digit ltm_prime_tab[] = { * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* reverse an array, used for radix code */ @@ -8750,8 +8736,8 @@ bn_reverse (unsigned char *s, int len) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_reverse.c */ @@ -8770,7 +8756,7 @@ bn_reverse (unsigned char *s, int len) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* low level addition, based on HAC pp.594, Algorithm 14.7 */ @@ -8863,8 +8849,8 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_s_mp_add.c */ @@ -8883,7 +8869,7 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ #ifdef MP_LOW_MEM #define TAB_SIZE 32 @@ -9119,8 +9105,8 @@ LBL_M: #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_s_mp_exptmod.c */ @@ -9139,7 +9125,7 @@ LBL_M: * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* multiplies |a| * |b| and only computes upto digs digits of result @@ -9213,8 +9199,8 @@ int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_s_mp_mul_digs.c */ @@ -9233,7 +9219,7 @@ int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* multiplies |a| * |b| and does not compute the lower digs digits @@ -9298,8 +9284,8 @@ s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_s_mp_mul_high_digs.c */ @@ -9318,7 +9304,7 @@ s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ @@ -9386,8 +9372,8 @@ int s_mp_sqr (mp_int * a, mp_int * b) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_s_mp_sqr.c */ @@ -9406,7 +9392,7 @@ int s_mp_sqr (mp_int * a, mp_int * b) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* low level subtraction (assumes |a| > |b|), HAC pp.595 Algorithm 14.9 */ @@ -9479,8 +9465,8 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bn_s_mp_sub.c */ @@ -9499,7 +9485,7 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ /* Known optimal configurations @@ -9519,8 +9505,8 @@ int KARATSUBA_MUL_CUTOFF = 80, /* Min. number of digits before Karatsub #endif /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/pre_gen/mpi.c,v $ */ -/* $Revision: 1.1.1.4 $ */ -/* $Date: 2005/12/27 18:00:26 $ */ +/* $Revision: 1.1.1.5 $ */ +/* $Date: 2006/12/01 00:08:34 $ */ /* End: bncore.c */ diff --git a/libtommath/tommath.h b/libtommath/tommath.h index 43517b4..f9b2d11 100644 --- a/libtommath/tommath.h +++ b/libtommath/tommath.h @@ -10,7 +10,7 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com */ #ifndef BN_H_ #define BN_H_ @@ -580,5 +580,5 @@ extern const char *mp_s_rmap; /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/tommath.h,v $ */ -/* $Revision: 1.1.1.3 $ */ -/* $Date: 2005/09/26 16:31:58 $ */ +/* $Revision: 1.1.1.4 $ */ +/* $Date: 2006/12/01 00:08:12 $ */ diff --git a/libtommath/tommath.pdf b/libtommath/tommath.pdf index 5c314f5..c9571d8 100644 Binary files a/libtommath/tommath.pdf and b/libtommath/tommath.pdf differ diff --git a/libtommath/tommath.src b/libtommath/tommath.src index 8e03635..4065822 100644 --- a/libtommath/tommath.src +++ b/libtommath/tommath.src @@ -66,7 +66,7 @@ QUALCOMM Australia \\ } } \maketitle -This text has been placed in the public domain. This text corresponds to the v0.37 release of the +This text has been placed in the public domain. This text corresponds to the v0.39 release of the LibTomMath project. \begin{alltt} @@ -77,7 +77,7 @@ K2L 1C3 Canada Phone: 1-613-836-3160 -Email: tomstdenis@iahu.ca +Email: tomstdenis@gmail.com \end{alltt} This text is formatted to the international B5 paper size of 176mm wide by 250mm tall using the \LaTeX{} @@ -268,7 +268,7 @@ and fast modular inversion, which we consider practical oversights. These optim any form of useful performance in non-trivial applications. To solve this problem the focus of this text is on the practical aspects of implementing a multiple precision integer -package. As a case study the ``LibTomMath''\footnote{Available at \url{http://math.libtomcrypt.org}} package is used +package. As a case study the ``LibTomMath''\footnote{Available at \url{http://math.libtomcrypt.com}} package is used to demonstrate algorithms with real implementations\footnote{In the ISO C programming language.} that have been field tested and work very well. The LibTomMath library is freely available on the Internet for all uses and this text discusses a very large portion of the inner workings of the library. @@ -2190,7 +2190,7 @@ left. After the digits have been shifted appropriately at most $lg(\beta) - 1$ shifts are left to perform. Step 5 calculates the number of remaining shifts required. If it is non-zero a modified shift loop is used to calculate the remaining product. -Essentially the loop is a generic version of algorith mp\_mul2 designed to handle any shift count in the range $1 \le x < lg(\beta)$. The $mask$ +Essentially the loop is a generic version of algorithm mp\_mul\_2 designed to handle any shift count in the range $1 \le x < lg(\beta)$. The $mask$ variable is used to extract the upper $d$ bits to form the carry for the next iteration. This algorithm is loosely measured as a $O(2n)$ algorithm which means that if the input is $n$-digits that it takes $2n$ ``time'' to @@ -2611,17 +2611,16 @@ Place an array of \textbf{MP\_WARRAY} single precision digits named $W$ on the s \hspace{6mm}5.4.1 $\_ \hat W \leftarrow \_ \hat W + a_{tx+iy}b_{ty-iy}$ \\ \hspace{3mm}5.5 $W_{ix} \leftarrow \_ \hat W (\mbox{mod }\beta)$\\ \hspace{3mm}5.6 $\_ \hat W \leftarrow \lfloor \_ \hat W / \beta \rfloor$ \\ -6. $W_{pa} \leftarrow \_ \hat W (\mbox{mod }\beta)$ \\ \\ -7. $oldused \leftarrow c.used$ \\ -8. $c.used \leftarrow digs$ \\ -9. for $ix$ from $0$ to $pa$ do \\ -\hspace{3mm}9.1 $c_{ix} \leftarrow W_{ix}$ \\ -10. for $ix$ from $pa + 1$ to $oldused - 1$ do \\ -\hspace{3mm}10.1 $c_{ix} \leftarrow 0$ \\ +6. $oldused \leftarrow c.used$ \\ +7. $c.used \leftarrow digs$ \\ +8. for $ix$ from $0$ to $pa$ do \\ +\hspace{3mm}8.1 $c_{ix} \leftarrow W_{ix}$ \\ +9. for $ix$ from $pa + 1$ to $oldused - 1$ do \\ +\hspace{3mm}9.1 $c_{ix} \leftarrow 0$ \\ \\ -11. Clamp $c$. \\ -12. Return MP\_OKAY. \\ +10. Clamp $c$. \\ +11. Return MP\_OKAY. \\ \hline \end{tabular} \end{center} @@ -3731,6 +3730,7 @@ $0 \le r < \lfloor x/2^k \rfloor + n$. As a result at most a single subtraction \hline $6$ & $x/2 = 139$ \\ \hline $7$ & $x + n = 396$, $x/2 = 198$ \\ \hline $8$ & $x/2 = 99$ \\ +\hline $9$ & $x + n = 356$, $x/2 = 178$ \\ \hline \end{tabular} \end{center} @@ -3739,8 +3739,8 @@ $0 \le r < \lfloor x/2^k \rfloor + n$. As a result at most a single subtraction \label{fig:MONT1} \end{figure} -Consider the example in figure~\ref{fig:MONT1} which reduces $x = 5555$ modulo $n = 257$ when $k = 8$. The result of the algorithm $r = 99$ is -congruent to the value of $2^{-8} \cdot 5555 \mbox{ (mod }257\mbox{)}$. When $r$ is multiplied by $2^8$ modulo $257$ the correct residue +Consider the example in figure~\ref{fig:MONT1} which reduces $x = 5555$ modulo $n = 257$ when $k = 9$ (note $\beta^k = 512$ which is larger than $n$). The result of +the algorithm $r = 178$ is congruent to the value of $2^{-9} \cdot 5555 \mbox{ (mod }257\mbox{)}$. When $r$ is multiplied by $2^9$ modulo $257$ the correct residue $r \equiv 158$ is produced. Let $k = \lfloor lg(n) \rfloor + 1$ represent the number of bits in $n$. The current algorithm requires $2k^2$ single precision shifts @@ -3752,10 +3752,10 @@ Fortunately there exists an alternative representation of the algorithm. \begin{center} \begin{tabular}{l} \hline Algorithm \textbf{Montgomery Reduction} (modified I). \\ -\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Input}. Integer $x$, $n$ and $k$ ($2^k > n$) \\ \textbf{Output}. $2^{-k}x \mbox{ (mod }n\mbox{)}$ \\ \hline \\ -1. for $t$ from $0$ to $k - 1$ do \\ +1. for $t$ from $1$ to $k$ do \\ \hspace{3mm}1.1 If the $t$'th bit of $x$ is one then \\ \hspace{6mm}1.1.1 $x \leftarrow x + 2^tn$ \\ 2. Return $x/2^k$. \\ @@ -3783,7 +3783,8 @@ precision shifts has now been reduced from $2k^2$ to $k^2 + k$ which is only a s \hline $6$ & $8896$ & $10001011000000$ \\ \hline $7$ & $x + 2^{6}n = 25344$ & $110001100000000$ \\ \hline $8$ & $25344$ & $110001100000000$ \\ -\hline -- & $x/2^k = 99$ & \\ +\hline $9$ & $x + 2^{7}n = 91136$ & $10110010000000000$ \\ +\hline -- & $x/2^k = 178$ & \\ \hline \end{tabular} \end{center} @@ -3792,7 +3793,7 @@ precision shifts has now been reduced from $2k^2$ to $k^2 + k$ which is only a s \label{fig:MONT2} \end{figure} -Figure~\ref{fig:MONT2} demonstrates the modified algorithm reducing $x = 5555$ modulo $n = 257$ with $k = 8$. +Figure~\ref{fig:MONT2} demonstrates the modified algorithm reducing $x = 5555$ modulo $n = 257$ with $k = 9$. With this algorithm a single shift right at the end is the only right shift required to reduce the input instead of $k$ right shifts inside the loop. Note that for the iterations $t = 2, 5, 6$ and $8$ where the result $x$ is not changed. In those iterations the $t$'th bit of $x$ is zero and the appropriate multiple of $n$ does not need to be added to force the $t$'th bit of the result to zero. @@ -3806,7 +3807,7 @@ previous algorithm re-written to compute the Montgomery reduction in this new fa \begin{center} \begin{tabular}{l} \hline Algorithm \textbf{Montgomery Reduction} (modified II). \\ -\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Input}. Integer $x$, $n$ and $k$ ($\beta^k > n$) \\ \textbf{Output}. $\beta^{-k}x \mbox{ (mod }n\mbox{)}$ \\ \hline \\ 1. for $t$ from $0$ to $k - 1$ do \\ @@ -4938,15 +4939,15 @@ a Left-to-Right algorithm is used to process the remaining few bits. EXAM,bn_s_mp_exptmod.c -Lines @26,if@ through @40,}@ determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted +Lines @31,if@ through @45,}@ determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted from smallest to greatest so that in each \textbf{if} statement only one condition must be tested. For example, by the \textbf{if} statement -on line @32,if@ the value of $x$ is already known to be greater than $140$. +on line @37,if@ the value of $x$ is already known to be greater than $140$. The conditional piece of code beginning on line @42,ifdef@ allows the window size to be restricted to five bits. This logic is used to ensure the table of precomputed powers of $G$ remains relatively small. -The for loop on line @49,for@ initializes the $M$ array while lines @59,mp_init@ and @62,mp_reduce@ compute the value of $\mu$ required for -Barrett reduction. +The for loop on line @60,for@ initializes the $M$ array while lines @71,mp_init@ and @75,mp_reduce@ through @85,}@ initialize the reduction +function that will be used for this modulus. -- More later. @@ -5229,23 +5230,23 @@ algorithm with only the quotient is mp_div(&a, &b, &c, NULL); /* c = [a/b] */ \end{verbatim} -Lines @37,if@ and @42,if@ handle the two trivial cases of inputs which are division by zero and dividend smaller than the divisor -respectively. After the two trivial cases all of the temporary variables are initialized. Line @76,neg@ determines the sign of -the quotient and line @77,sign@ ensures that both $x$ and $y$ are positive. +Lines @108,if@ and @113,if@ handle the two trivial cases of inputs which are division by zero and dividend smaller than the divisor +respectively. After the two trivial cases all of the temporary variables are initialized. Line @147,neg@ determines the sign of +the quotient and line @148,sign@ ensures that both $x$ and $y$ are positive. -The number of bits in the leading digit is calculated on line @80,norm@. Implictly an mp\_int with $r$ digits will require $lg(\beta)(r-1) + k$ bits +The number of bits in the leading digit is calculated on line @151,norm@. Implictly an mp\_int with $r$ digits will require $lg(\beta)(r-1) + k$ bits of precision which when reduced modulo $lg(\beta)$ produces the value of $k$. In this case $k$ is the number of bits in the leading digit which is exactly what is required. For the algorithm to operate $k$ must equal $lg(\beta) - 1$ and when it does not the inputs must be normalized by shifting them to the left by $lg(\beta) - 1 - k$ bits. Throughout the variables $n$ and $t$ will represent the highest digit of $x$ and $y$ respectively. These are first used to produce the -leading digit of the quotient. The loop beginning on line @113,for@ will produce the remainder of the quotient digits. +leading digit of the quotient. The loop beginning on line @184,for@ will produce the remainder of the quotient digits. -The conditional ``continue'' on line @114,if@ is used to prevent the algorithm from reading past the leading edge of $x$ which can occur when the +The conditional ``continue'' on line @186,continue@ is used to prevent the algorithm from reading past the leading edge of $x$ which can occur when the algorithm eliminates multiple non-zero digits in a single iteration. This ensures that $x_i$ is always non-zero since by definition the digits above the $i$'th position $x$ must be zero in order for the quotient to be precise\footnote{Precise as far as integer division is concerned.}. -Lines @142,t1@, @143,t1@ and @150,t2@ through @152,t2@ manually construct the high accuracy estimations by setting the digits of the two mp\_int +Lines @214,t1@, @216,t1@ and @222,t2@ through @225,t2@ manually construct the high accuracy estimations by setting the digits of the two mp\_int variables directly. \section{Single Digit Helpers} @@ -5743,33 +5744,30 @@ and will produce the greatest common divisor. \textbf{Input}. mp\_int $a$ and $b$ \\ \textbf{Output}. The greatest common divisor $c = (a, b)$. \\ \hline \\ -1. If $a = 0$ and $b \ne 0$ then \\ -\hspace{3mm}1.1 $c \leftarrow b$ \\ +1. If $a = 0$ then \\ +\hspace{3mm}1.1 $c \leftarrow \vert b \vert $ \\ \hspace{3mm}1.2 Return(\textit{MP\_OKAY}). \\ -2. If $a \ne 0$ and $b = 0$ then \\ -\hspace{3mm}2.1 $c \leftarrow a$ \\ +2. If $b = 0$ then \\ +\hspace{3mm}2.1 $c \leftarrow \vert a \vert $ \\ \hspace{3mm}2.2 Return(\textit{MP\_OKAY}). \\ -3. If $a = b = 0$ then \\ -\hspace{3mm}3.1 $c \leftarrow 1$ \\ -\hspace{3mm}3.2 Return(\textit{MP\_OKAY}). \\ -4. $u \leftarrow \vert a \vert, v \leftarrow \vert b \vert$ \\ -5. $k \leftarrow 0$ \\ -6. While $u.used > 0$ and $v.used > 0$ and $u_0 \equiv v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ -\hspace{3mm}6.1 $k \leftarrow k + 1$ \\ -\hspace{3mm}6.2 $u \leftarrow \lfloor u / 2 \rfloor$ \\ -\hspace{3mm}6.3 $v \leftarrow \lfloor v / 2 \rfloor$ \\ -7. While $u.used > 0$ and $u_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ -\hspace{3mm}7.1 $u \leftarrow \lfloor u / 2 \rfloor$ \\ -8. While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ -\hspace{3mm}8.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ -9. While $v.used > 0$ \\ -\hspace{3mm}9.1 If $\vert u \vert > \vert v \vert$ then \\ -\hspace{6mm}9.1.1 Swap $u$ and $v$. \\ -\hspace{3mm}9.2 $v \leftarrow \vert v \vert - \vert u \vert$ \\ -\hspace{3mm}9.3 While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ -\hspace{6mm}9.3.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ -10. $c \leftarrow u \cdot 2^k$ \\ -11. Return(\textit{MP\_OKAY}). \\ +3. $u \leftarrow \vert a \vert, v \leftarrow \vert b \vert$ \\ +4. $k \leftarrow 0$ \\ +5. While $u.used > 0$ and $v.used > 0$ and $u_0 \equiv v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}5.1 $k \leftarrow k + 1$ \\ +\hspace{3mm}5.2 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +\hspace{3mm}5.3 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +6. While $u.used > 0$ and $u_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}6.1 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +7. While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}7.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +8. While $v.used > 0$ \\ +\hspace{3mm}8.1 If $\vert u \vert > \vert v \vert$ then \\ +\hspace{6mm}8.1.1 Swap $u$ and $v$. \\ +\hspace{3mm}8.2 $v \leftarrow \vert v \vert - \vert u \vert$ \\ +\hspace{3mm}8.3 While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{6mm}8.3.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +9. $c \leftarrow u \cdot 2^k$ \\ +10. Return(\textit{MP\_OKAY}). \\ \hline \end{tabular} \end{center} @@ -5781,17 +5779,17 @@ This algorithm will produce the greatest common divisor of two mp\_ints $a$ and Knuth \cite[pp. 338]{TAOCPV2} but has been modified to be simpler to explain. In theory it achieves the same asymptotic working time as Algorithm B and in practice this appears to be true. -The first three steps handle the cases where either one of or both inputs are zero. If either input is zero the greatest common divisor is the +The first two steps handle the cases where either one of or both inputs are zero. If either input is zero the greatest common divisor is the largest input or zero if they are both zero. If the inputs are not trivial than $u$ and $v$ are assigned the absolute values of $a$ and $b$ respectively and the algorithm will proceed to reduce the pair. -Step six will divide out any common factors of two and keep track of the count in the variable $k$. After this step two is no longer a +Step five will divide out any common factors of two and keep track of the count in the variable $k$. After this step, two is no longer a factor of the remaining greatest common divisor between $u$ and $v$ and can be safely evenly divided out of either whenever they are even. Step -seven and eight ensure that the $u$ and $v$ respectively have no more factors of two. At most only one of the while loops will iterate since +six and seven ensure that the $u$ and $v$ respectively have no more factors of two. At most only one of the while--loops will iterate since they cannot both be even. -By step nine both of $u$ and $v$ are odd which is required for the inner logic. First the pair are swapped such that $v$ is equal to -or greater than $u$. This ensures that the subtraction on step 9.2 will always produce a positive and even result. Step 9.3 removes any +By step eight both of $u$ and $v$ are odd which is required for the inner logic. First the pair are swapped such that $v$ is equal to +or greater than $u$. This ensures that the subtraction on step 8.2 will always produce a positive and even result. Step 8.3 removes any factors of two from the difference $u$ to ensure that in the next iteration of the loop both are once again odd. After $v = 0$ occurs the variable $u$ has the greatest common divisor of the pair $\left < u, v \right >$ just after step six. The result @@ -5802,17 +5800,17 @@ EXAM,bn_mp_gcd.c This function makes use of the macros mp\_iszero and mp\_iseven. The former evaluates to $1$ if the input mp\_int is equivalent to the integer zero otherwise it evaluates to $0$. The latter evaluates to $1$ if the input mp\_int represents a non-zero even integer otherwise it evaluates to $0$. Note that just because mp\_iseven may evaluate to $0$ does not mean the input is odd, it could also be zero. The three -trivial cases of inputs are handled on lines @25,zero@ through @34,}@. After those lines the inputs are assumed to be non-zero. +trivial cases of inputs are handled on lines @23,zero@ through @29,}@. After those lines the inputs are assumed to be non-zero. -Lines @36,if@ and @40,if@ make local copies $u$ and $v$ of the inputs $a$ and $b$ respectively. At this point the common factors of two -must be divided out of the two inputs. The while loop on line @49,while@ iterates so long as both are even. The local integer $k$ is used to -keep track of how many factors of $2$ are pulled out of both values. It is assumed that the number of factors will not exceed the maximum -value of a C ``int'' data type\footnote{Strictly speaking no array in C may have more than entries than are accessible by an ``int'' so this is not -a limitation.}. +Lines @32,if@ and @36,if@ make local copies $u$ and $v$ of the inputs $a$ and $b$ respectively. At this point the common factors of two +must be divided out of the two inputs. The block starting at line @43,common@ removes common factors of two by first counting the number of trailing +zero bits in both. The local integer $k$ is used to keep track of how many factors of $2$ are pulled out of both values. It is assumed that +the number of factors will not exceed the maximum value of a C ``int'' data type\footnote{Strictly speaking no array in C may have more than +entries than are accessible by an ``int'' so this is not a limitation.}. -At this point there are no more common factors of two in the two values. The while loops on lines @60,while@ and @65,while@ remove any independent -factors of two such that both $u$ and $v$ are guaranteed to be an odd integer before hitting the main body of the algorithm. The while loop -on line @71, while@ performs the reduction of the pair until $v$ is equal to zero. The unsigned comparison and subtraction algorithms are used in +At this point there are no more common factors of two in the two values. The divisions by a power of two on lines @60,div_2d@ and @67,div_2d@ remove +any independent factors of two such that both $u$ and $v$ are guaranteed to be an odd integer before hitting the main body of the algorithm. The while loop +on line @72, while@ performs the reduction of the pair until $v$ is equal to zero. The unsigned comparison and subtraction algorithms are used in place of the full signed routines since both values are guaranteed to be positive and the result of the subtraction is guaranteed to be non-negative. \section{Least Common Multiple} diff --git a/libtommath/tommath.tex b/libtommath/tommath.tex index a852a8d..c79a537 100644 --- a/libtommath/tommath.tex +++ b/libtommath/tommath.tex @@ -66,7 +66,7 @@ QUALCOMM Australia \\ } } \maketitle -This text has been placed in the public domain. This text corresponds to the v0.37 release of the +This text has been placed in the public domain. This text corresponds to the v0.39 release of the LibTomMath project. \begin{alltt} @@ -77,7 +77,7 @@ K2L 1C3 Canada Phone: 1-613-836-3160 -Email: tomstdenis@iahu.ca +Email: tomstdenis@gmail.com \end{alltt} This text is formatted to the international B5 paper size of 176mm wide by 250mm tall using the \LaTeX{} @@ -268,7 +268,7 @@ and fast modular inversion, which we consider practical oversights. These optim any form of useful performance in non-trivial applications. To solve this problem the focus of this text is on the practical aspects of implementing a multiple precision integer -package. As a case study the ``LibTomMath''\footnote{Available at \url{http://math.libtomcrypt.org}} package is used +package. As a case study the ``LibTomMath''\footnote{Available at \url{http://math.libtomcrypt.com}} package is used to demonstrate algorithms with real implementations\footnote{In the ISO C programming language.} that have been field tested and work very well. The LibTomMath library is freely available on the Internet for all uses and this text discusses a very large portion of the inner workings of the library. @@ -788,33 +788,6 @@ decrementally. \hspace{-5.1mm}{\bf File}: bn\_mp\_init.c \vspace{-3mm} \begin{alltt} -016 -017 /* init a new mp_int */ -018 int mp_init (mp_int * a) -019 \{ -020 int i; -021 -022 /* allocate memory required and clear it */ -023 a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * MP_PREC); -024 if (a->dp == NULL) \{ -025 return MP_MEM; -026 \} -027 -028 /* set the digits to zero */ -029 for (i = 0; i < MP_PREC; i++) \{ -030 a->dp[i] = 0; -031 \} -032 -033 /* set the used to zero, allocated digits to the default precision -034 * and sign to positive */ -035 a->used = 0; -036 a->alloc = MP_PREC; -037 a->sign = MP_ZPOS; -038 -039 return MP_OKAY; -040 \} -041 #endif -042 \end{alltt} \end{small} @@ -822,7 +795,7 @@ One immediate observation of this initializtion function is that it does not ret is assumed that the caller has already allocated memory for the mp\_int structure, typically on the application stack. The call to mp\_init() is used only to initialize the members of the structure to a known default state. -Here we see (line 23) the memory allocation is performed first. This allows us to exit cleanly and quickly +Here we see (line 24) the memory allocation is performed first. This allows us to exit cleanly and quickly if there is an error. If the allocation fails the routine will return \textbf{MP\_MEM} to the caller to indicate there was a memory error. The function XMALLOC is what actually allocates the memory. Technically XMALLOC is not a function but a macro defined in ``tommath.h``. By default, XMALLOC will evaluate to malloc() which is the C library's built--in @@ -830,11 +803,11 @@ memory allocation routine. In order to assure the mp\_int is in a known state the digits must be set to zero. On most platforms this could have been accomplished by using calloc() instead of malloc(). However, to correctly initialize a integer type to a given value in a -portable fashion you have to actually assign the value. The for loop (line 29) performs this required +portable fashion you have to actually assign the value. The for loop (line 30) performs this required operation. After the memory has been successfully initialized the remainder of the members are initialized -(lines 33 through 34) to their respective default states. At this point the algorithm has succeeded and +(lines 34 through 35) to their respective default states. At this point the algorithm has succeeded and a success code is returned to the calling function. If this function returns \textbf{MP\_OKAY} it is safe to assume the mp\_int structure has been properly initialized and is safe to use with other functions within the library. @@ -879,46 +852,21 @@ with the exception of algorithms mp\_init, mp\_init\_copy, mp\_init\_size and mp \hspace{-5.1mm}{\bf File}: bn\_mp\_clear.c \vspace{-3mm} \begin{alltt} -016 -017 /* clear one (frees) */ -018 void -019 mp_clear (mp_int * a) -020 \{ -021 int i; -022 -023 /* only do anything if a hasn't been freed previously */ -024 if (a->dp != NULL) \{ -025 /* first zero the digits */ -026 for (i = 0; i < a->used; i++) \{ -027 a->dp[i] = 0; -028 \} -029 -030 /* free ram */ -031 XFREE(a->dp); -032 -033 /* reset members to make debugging easier */ -034 a->dp = NULL; -035 a->alloc = a->used = 0; -036 a->sign = MP_ZPOS; -037 \} -038 \} -039 #endif -040 \end{alltt} \end{small} -The algorithm only operates on the mp\_int if it hasn't been previously cleared. The if statement (line 24) +The algorithm only operates on the mp\_int if it hasn't been previously cleared. The if statement (line 25) checks to see if the \textbf{dp} member is not \textbf{NULL}. If the mp\_int is a valid mp\_int then \textbf{dp} cannot be \textbf{NULL} in which case the if statement will evaluate to true. -The digits of the mp\_int are cleared by the for loop (line 26) which assigns a zero to every digit. Similar to mp\_init() +The digits of the mp\_int are cleared by the for loop (line 27) which assigns a zero to every digit. Similar to mp\_init() the digits are assigned zero instead of using block memory operations (such as memset()) since this is more portable. The digits are deallocated off the heap via the XFREE macro. Similar to XMALLOC the XFREE macro actually evaluates to a standard C library function. In this case the free() function. Since free() only deallocates the memory the pointer -still has to be reset to \textbf{NULL} manually (line 34). +still has to be reset to \textbf{NULL} manually (line 35). -Now that the digits have been cleared and deallocated the other members are set to their final values (lines 35 and 36). +Now that the digits have been cleared and deallocated the other members are set to their final values (lines 36 and 37). \section{Maintenance Algorithms} @@ -973,44 +921,6 @@ assumed to contain undefined values they are initially set to zero. \hspace{-5.1mm}{\bf File}: bn\_mp\_grow.c \vspace{-3mm} \begin{alltt} -016 -017 /* grow as required */ -018 int mp_grow (mp_int * a, int size) -019 \{ -020 int i; -021 mp_digit *tmp; -022 -023 /* if the alloc size is smaller alloc more ram */ -024 if (a->alloc < size) \{ -025 /* ensure there are always at least MP_PREC digits extra on top */ -026 size += (MP_PREC * 2) - (size % MP_PREC); -027 -028 /* reallocate the array a->dp -029 * -030 * We store the return in a temporary variable -031 * in case the operation failed we don't want -032 * to overwrite the dp member of a. -033 */ -034 tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * size); -035 if (tmp == NULL) \{ -036 /* reallocation failed but "a" is still valid [can be freed] */ -037 return MP_MEM; -038 \} -039 -040 /* reallocation succeeded so set a->dp */ -041 a->dp = tmp; -042 -043 /* zero excess digits */ -044 i = a->alloc; -045 a->alloc = size; -046 for (; i < a->alloc; i++) \{ -047 a->dp[i] = 0; -048 \} -049 \} -050 return MP_OKAY; -051 \} -052 #endif -053 \end{alltt} \end{small} @@ -1019,7 +929,7 @@ if the \textbf{alloc} member of the mp\_int is smaller than the requested digit the function skips the re-allocation part thus saving time. When a re-allocation is performed it is turned into an optimal request to save time in the future. The requested digit count is -padded upwards to 2nd multiple of \textbf{MP\_PREC} larger than \textbf{alloc} (line 26). The XREALLOC function is used +padded upwards to 2nd multiple of \textbf{MP\_PREC} larger than \textbf{alloc} (line 25). The XREALLOC function is used to re-allocate the memory. As per the other functions XREALLOC is actually a macro which evaluates to realloc by default. The realloc function leaves the base of the allocation intact which means the first \textbf{alloc} digits of the mp\_int are the same as before the re-allocation. All that is left is to clear the newly allocated digits and return. @@ -1071,46 +981,17 @@ correct no further memory re-allocations are required to work with the mp\_int. \hspace{-5.1mm}{\bf File}: bn\_mp\_init\_size.c \vspace{-3mm} \begin{alltt} -016 -017 /* init an mp_init for a given size */ -018 int mp_init_size (mp_int * a, int size) -019 \{ -020 int x; -021 -022 /* pad size so there are always extra digits */ -023 size += (MP_PREC * 2) - (size % MP_PREC); -024 -025 /* alloc mem */ -026 a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * size); -027 if (a->dp == NULL) \{ -028 return MP_MEM; -029 \} -030 -031 /* set the members */ -032 a->used = 0; -033 a->alloc = size; -034 a->sign = MP_ZPOS; -035 -036 /* zero the digits */ -037 for (x = 0; x < size; x++) \{ -038 a->dp[x] = 0; -039 \} -040 -041 return MP_OKAY; -042 \} -043 #endif -044 \end{alltt} \end{small} -The number of digits $b$ requested is padded (line 23) by first augmenting it to the next multiple of +The number of digits $b$ requested is padded (line 24) by first augmenting it to the next multiple of \textbf{MP\_PREC} and then adding \textbf{MP\_PREC} to the result. If the memory can be successfully allocated the mp\_int is placed in a default state representing the integer zero. Otherwise, the error code \textbf{MP\_MEM} will be -returned (line 28). +returned (line 29). The digits are allocated and set to zero at the same time with the calloc() function (line @25,XCALLOC@). The \textbf{used} count is set to zero, the \textbf{alloc} count set to the padded digit count and the \textbf{sign} flag set -to \textbf{MP\_ZPOS} to achieve a default valid mp\_int state (lines 32, 33 and 34). If the function +to \textbf{MP\_ZPOS} to achieve a default valid mp\_int state (lines 33, 34 and 35). If the function returns succesfully then it is correct to assume that the mp\_int structure is in a valid state for the remainder of the functions to work with. @@ -1148,46 +1029,6 @@ initialization which allows for quick recovery from runtime errors. \hspace{-5.1mm}{\bf File}: bn\_mp\_init\_multi.c \vspace{-3mm} \begin{alltt} -016 #include -017 -018 int mp_init_multi(mp_int *mp, ...) -019 \{ -020 mp_err res = MP_OKAY; /* Assume ok until proven otherwise */ -021 int n = 0; /* Number of ok inits */ -022 mp_int* cur_arg = mp; -023 va_list args; -024 -025 va_start(args, mp); /* init args to next argument from caller */ -026 while (cur_arg != NULL) \{ -027 if (mp_init(cur_arg) != MP_OKAY) \{ -028 /* Oops - error! Back-track and mp_clear what we already -029 succeeded in init-ing, then return error. -030 */ -031 va_list clean_args; -032 -033 /* end the current list */ -034 va_end(args); -035 -036 /* now start cleaning up */ -037 cur_arg = mp; -038 va_start(clean_args, mp); -039 while (n--) \{ -040 mp_clear(cur_arg); -041 cur_arg = va_arg(clean_args, mp_int*); -042 \} -043 va_end(clean_args); -044 res = MP_MEM; -045 break; -046 \} -047 n++; -048 cur_arg = va_arg(args, mp_int*); -049 \} -050 va_end(args); -051 return res; /* Assumed ok, if error flagged above. */ -052 \} -053 -054 #endif -055 \end{alltt} \end{small} @@ -1197,8 +1038,8 @@ structures in an actual C array they are simply passed as arguments to the funct appended on the right. The function uses the ``stdarg.h'' \textit{va} functions to step portably through the arguments to the function. A count -$n$ of succesfully initialized mp\_int structures is maintained (line 47) such that if a failure does occur, -the algorithm can backtrack and free the previously initialized structures (lines 27 to 46). +$n$ of succesfully initialized mp\_int structures is maintained (line 48) such that if a failure does occur, +the algorithm can backtrack and free the previously initialized structures (lines 28 to 47). \subsection{Clamping Excess Digits} @@ -1249,38 +1090,13 @@ when all of the digits are zero to ensure that the mp\_int is valid at all times \hspace{-5.1mm}{\bf File}: bn\_mp\_clamp.c \vspace{-3mm} \begin{alltt} -016 -017 /* trim unused digits -018 * -019 * This is used to ensure that leading zero digits are -020 * trimed and the leading "used" digit will be non-zero -021 * Typically very fast. Also fixes the sign if there -022 * are no more leading digits -023 */ -024 void -025 mp_clamp (mp_int * a) -026 \{ -027 /* decrease used while the most significant digit is -028 * zero. -029 */ -030 while (a->used > 0 && a->dp[a->used - 1] == 0) \{ -031 --(a->used); -032 \} -033 -034 /* reset the sign flag if used == 0 */ -035 if (a->used == 0) \{ -036 a->sign = MP_ZPOS; -037 \} -038 \} -039 #endif -040 \end{alltt} \end{small} -Note on line 27 how to test for the \textbf{used} count is made on the left of the \&\& operator. In the C programming +Note on line 28 how to test for the \textbf{used} count is made on the left of the \&\& operator. In the C programming language the terms to \&\& are evaluated left to right with a boolean short-circuit if any condition fails. This is important since if the \textbf{used} is zero the test on the right would fetch below the array. That is obviously -undesirable. The parenthesis on line 30 is used to make sure the \textbf{used} count is decremented and not +undesirable. The parenthesis on line 31 is used to make sure the \textbf{used} count is decremented and not the pointer ``a''. \section*{Exercises} @@ -1363,70 +1179,21 @@ implement the pseudo-code. \hspace{-5.1mm}{\bf File}: bn\_mp\_copy.c \vspace{-3mm} \begin{alltt} -016 -017 /* copy, b = a */ -018 int -019 mp_copy (mp_int * a, mp_int * b) -020 \{ -021 int res, n; -022 -023 /* if dst == src do nothing */ -024 if (a == b) \{ -025 return MP_OKAY; -026 \} -027 -028 /* grow dest */ -029 if (b->alloc < a->used) \{ -030 if ((res = mp_grow (b, a->used)) != MP_OKAY) \{ -031 return res; -032 \} -033 \} -034 -035 /* zero b and copy the parameters over */ -036 \{ -037 register mp_digit *tmpa, *tmpb; -038 -039 /* pointer aliases */ -040 -041 /* source */ -042 tmpa = a->dp; -043 -044 /* destination */ -045 tmpb = b->dp; -046 -047 /* copy all the digits */ -048 for (n = 0; n < a->used; n++) \{ -049 *tmpb++ = *tmpa++; -050 \} -051 -052 /* clear high digits */ -053 for (; n < b->used; n++) \{ -054 *tmpb++ = 0; -055 \} -056 \} -057 -058 /* copy used count and sign */ -059 b->used = a->used; -060 b->sign = a->sign; -061 return MP_OKAY; -062 \} -063 #endif -064 \end{alltt} \end{small} Occasionally a dependent algorithm may copy an mp\_int effectively into itself such as when the input and output mp\_int structures passed to a function are one and the same. For this case it is optimal to return immediately without -copying digits (line 24). +copying digits (line 25). The mp\_int $b$ must have enough digits to accomodate the used digits of the mp\_int $a$. If $b.alloc$ is less than -$a.used$ the algorithm mp\_grow is used to augment the precision of $b$ (lines 29 to 33). In order to +$a.used$ the algorithm mp\_grow is used to augment the precision of $b$ (lines 30 to 33). In order to simplify the inner loop that copies the digits from $a$ to $b$, two aliases $tmpa$ and $tmpb$ point directly at the digits -of the mp\_ints $a$ and $b$ respectively. These aliases (lines 42 and 45) allow the compiler to access the digits without first dereferencing the +of the mp\_ints $a$ and $b$ respectively. These aliases (lines 43 and 46) allow the compiler to access the digits without first dereferencing the mp\_int pointers and then subsequently the pointer to the digits. -After the aliases are established the digits from $a$ are copied into $b$ (lines 48 to 50) and then the excess -digits of $b$ are set to zero (lines 53 to 55). Both ``for'' loops make use of the pointer aliases and in +After the aliases are established the digits from $a$ are copied into $b$ (lines 49 to 51) and then the excess +digits of $b$ are set to zero (lines 54 to 56). Both ``for'' loops make use of the pointer aliases and in fact the alias for $b$ is carried through into the second ``for'' loop to clear the excess digits. This optimization allows the alias to stay in a machine register fairly easy between the two loops. @@ -1514,19 +1281,6 @@ such this algorithm will perform two operations in one step. \hspace{-5.1mm}{\bf File}: bn\_mp\_init\_copy.c \vspace{-3mm} \begin{alltt} -016 -017 /* creates "a" then copies b into it */ -018 int mp_init_copy (mp_int * a, mp_int * b) -019 \{ -020 int res; -021 -022 if ((res = mp_init (a)) != MP_OKAY) \{ -023 return res; -024 \} -025 return mp_copy (b, a); -026 \} -027 #endif -028 \end{alltt} \end{small} @@ -1562,23 +1316,6 @@ This algorithm simply resets a mp\_int to the default state. \hspace{-5.1mm}{\bf File}: bn\_mp\_zero.c \vspace{-3mm} \begin{alltt} -016 -017 /* set to zero */ -018 void mp_zero (mp_int * a) -019 \{ -020 int n; -021 mp_digit *tmp; -022 -023 a->sign = MP_ZPOS; -024 a->used = 0; -025 -026 tmp = a->dp; -027 for (n = 0; n < a->alloc; n++) \{ -028 *tmp++ = 0; -029 \} -030 \} -031 #endif -032 \end{alltt} \end{small} @@ -1617,34 +1354,10 @@ logic to handle it. \hspace{-5.1mm}{\bf File}: bn\_mp\_abs.c \vspace{-3mm} \begin{alltt} -016 -017 /* b = |a| -018 * -019 * Simple function copies the input and fixes the sign to positive -020 */ -021 int -022 mp_abs (mp_int * a, mp_int * b) -023 \{ -024 int res; -025 -026 /* copy a to b */ -027 if (a != b) \{ -028 if ((res = mp_copy (a, b)) != MP_OKAY) \{ -029 return res; -030 \} -031 \} -032 -033 /* force the sign of b to positive */ -034 b->sign = MP_ZPOS; -035 -036 return MP_OKAY; -037 \} -038 #endif -039 \end{alltt} \end{small} -This fairly trivial algorithm first eliminates non--required duplications (line 27) and then sets the +This fairly trivial algorithm first eliminates non--required duplications (line 28) and then sets the \textbf{sign} flag to \textbf{MP\_ZPOS}. \subsection{Integer Negation} @@ -1682,31 +1395,10 @@ zero as negative. \hspace{-5.1mm}{\bf File}: bn\_mp\_neg.c \vspace{-3mm} \begin{alltt} -016 -017 /* b = -a */ -018 int mp_neg (mp_int * a, mp_int * b) -019 \{ -020 int res; -021 if (a != b) \{ -022 if ((res = mp_copy (a, b)) != MP_OKAY) \{ -023 return res; -024 \} -025 \} -026 -027 if (mp_iszero(b) != MP_YES) \{ -028 b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; -029 \} else \{ -030 b->sign = MP_ZPOS; -031 \} -032 -033 return MP_OKAY; -034 \} -035 #endif -036 \end{alltt} \end{small} -Like mp\_abs() this function avoids non--required duplications (line 21) and then sets the sign. We +Like mp\_abs() this function avoids non--required duplications (line 22) and then sets the sign. We have to make sure that only non--zero values get a \textbf{sign} of \textbf{MP\_NEG}. If the mp\_int is zero than the \textbf{sign} is hard--coded to \textbf{MP\_ZPOS}. @@ -1741,22 +1433,12 @@ single digit is set (\textit{modulo $\beta$}) and the \textbf{used} count is adj \hspace{-5.1mm}{\bf File}: bn\_mp\_set.c \vspace{-3mm} \begin{alltt} -016 -017 /* set to a digit */ -018 void mp_set (mp_int * a, mp_digit b) -019 \{ -020 mp_zero (a); -021 a->dp[0] = b & MP_MASK; -022 a->used = (a->dp[0] != 0) ? 1 : 0; -023 \} -024 #endif -025 \end{alltt} \end{small} -First we zero (line 20) the mp\_int to make sure that the other members are initialized for a +First we zero (line 21) the mp\_int to make sure that the other members are initialized for a small positive constant. mp\_zero() ensures that the \textbf{sign} is positive and the \textbf{used} count -is zero. Next we set the digit and reduce it modulo $\beta$ (line 21). After this step we have to +is zero. Next we set the digit and reduce it modulo $\beta$ (line 22). After this step we have to check if the resulting digit is zero or not. If it is not then we set the \textbf{used} count to one, otherwise to zero. @@ -1803,42 +1485,13 @@ Excess zero digits are trimmed in steps 2.1 and 3 by using higher level algorith \hspace{-5.1mm}{\bf File}: bn\_mp\_set\_int.c \vspace{-3mm} \begin{alltt} -016 -017 /* set a 32-bit const */ -018 int mp_set_int (mp_int * a, unsigned long b) -019 \{ -020 int x, res; -021 -022 mp_zero (a); -023 -024 /* set four bits at a time */ -025 for (x = 0; x < 8; x++) \{ -026 /* shift the number up four bits */ -027 if ((res = mp_mul_2d (a, 4, a)) != MP_OKAY) \{ -028 return res; -029 \} -030 -031 /* OR in the top four bits of the source */ -032 a->dp[0] |= (b >> 28) & 15; -033 -034 /* shift the source up to the next four bits */ -035 b <<= 4; -036 -037 /* ensure that digits are not clamped off */ -038 a->used += 1; -039 \} -040 mp_clamp (a); -041 return MP_OKAY; -042 \} -043 #endif -044 \end{alltt} \end{small} This function sets four bits of the number at a time to handle all practical \textbf{DIGIT\_BIT} sizes. The weird -addition on line 38 ensures that the newly added in bits are added to the number of digits. While it may not -seem obvious as to why the digit counter does not grow exceedingly large it is because of the shift on line 27 -as well as the call to mp\_clamp() on line 40. Both functions will clamp excess leading digits which keeps +addition on line 39 ensures that the newly added in bits are added to the number of digits. While it may not +seem obvious as to why the digit counter does not grow exceedingly large it is because of the shift on line 28 +as well as the call to mp\_clamp() on line 41. Both functions will clamp excess leading digits which keeps the number of used digits low. \section{Comparisons} @@ -1899,46 +1552,10 @@ the zero'th digit. If after all of the digits have been compared, no difference \hspace{-5.1mm}{\bf File}: bn\_mp\_cmp\_mag.c \vspace{-3mm} \begin{alltt} -016 -017 /* compare maginitude of two ints (unsigned) */ -018 int mp_cmp_mag (mp_int * a, mp_int * b) -019 \{ -020 int n; -021 mp_digit *tmpa, *tmpb; -022 -023 /* compare based on # of non-zero digits */ -024 if (a->used > b->used) \{ -025 return MP_GT; -026 \} -027 -028 if (a->used < b->used) \{ -029 return MP_LT; -030 \} -031 -032 /* alias for a */ -033 tmpa = a->dp + (a->used - 1); -034 -035 /* alias for b */ -036 tmpb = b->dp + (a->used - 1); -037 -038 /* compare based on digits */ -039 for (n = 0; n < a->used; ++n, --tmpa, --tmpb) \{ -040 if (*tmpa > *tmpb) \{ -041 return MP_GT; -042 \} -043 -044 if (*tmpa < *tmpb) \{ -045 return MP_LT; -046 \} -047 \} -048 return MP_EQ; -049 \} -050 #endif -051 \end{alltt} \end{small} -The two if statements (lines 24 and 28) compare the number of digits in the two inputs. These two are +The two if statements (lines 25 and 29) compare the number of digits in the two inputs. These two are performed before all of the digits are compared since it is a very cheap test to perform and can potentially save considerable time. The implementation given is also not valid without those two statements. $b.alloc$ may be smaller than $a.used$, meaning that undefined values will be read from $b$ past the end of the array of digits. @@ -1978,36 +1595,12 @@ $\vert a \vert < \vert b \vert$. Step number four will compare the two when the \hspace{-5.1mm}{\bf File}: bn\_mp\_cmp.c \vspace{-3mm} \begin{alltt} -016 -017 /* compare two ints (signed)*/ -018 int -019 mp_cmp (mp_int * a, mp_int * b) -020 \{ -021 /* compare based on sign */ -022 if (a->sign != b->sign) \{ -023 if (a->sign == MP_NEG) \{ -024 return MP_LT; -025 \} else \{ -026 return MP_GT; -027 \} -028 \} -029 -030 /* compare digits */ -031 if (a->sign == MP_NEG) \{ -032 /* if negative compare opposite direction */ -033 return mp_cmp_mag(b, a); -034 \} else \{ -035 return mp_cmp_mag(a, b); -036 \} -037 \} -038 #endif -039 \end{alltt} \end{small} -The two if statements (lines 22 and 23) perform the initial sign comparison. If the signs are not the equal then which ever -has the positive sign is larger. The inputs are compared (line 31) based on magnitudes. If the signs were both -negative then the unsigned comparison is performed in the opposite direction (line 33). Otherwise, the signs are assumed to +The two if statements (lines 23 and 24) perform the initial sign comparison. If the signs are not the equal then which ever +has the positive sign is larger. The inputs are compared (line 32) based on magnitudes. If the signs were both +negative then the unsigned comparison is performed in the opposite direction (line 34). Otherwise, the signs are assumed to be both positive and a forward direction unsigned comparison is performed. \section*{Exercises} @@ -2131,114 +1724,24 @@ The final carry is stored in $c_{max}$ and digits above $max$ upto $oldused$ are \hspace{-5.1mm}{\bf File}: bn\_s\_mp\_add.c \vspace{-3mm} \begin{alltt} -016 -017 /* low level addition, based on HAC pp.594, Algorithm 14.7 */ -018 int -019 s_mp_add (mp_int * a, mp_int * b, mp_int * c) -020 \{ -021 mp_int *x; -022 int olduse, res, min, max; -023 -024 /* find sizes, we let |a| <= |b| which means we have to sort -025 * them. "x" will point to the input with the most digits -026 */ -027 if (a->used > b->used) \{ -028 min = b->used; -029 max = a->used; -030 x = a; -031 \} else \{ -032 min = a->used; -033 max = b->used; -034 x = b; -035 \} -036 -037 /* init result */ -038 if (c->alloc < max + 1) \{ -039 if ((res = mp_grow (c, max + 1)) != MP_OKAY) \{ -040 return res; -041 \} -042 \} -043 -044 /* get old used digit count and set new one */ -045 olduse = c->used; -046 c->used = max + 1; -047 -048 \{ -049 register mp_digit u, *tmpa, *tmpb, *tmpc; -050 register int i; -051 -052 /* alias for digit pointers */ -053 -054 /* first input */ -055 tmpa = a->dp; -056 -057 /* second input */ -058 tmpb = b->dp; -059 -060 /* destination */ -061 tmpc = c->dp; -062 -063 /* zero the carry */ -064 u = 0; -065 for (i = 0; i < min; i++) \{ -066 /* Compute the sum at one digit, T[i] = A[i] + B[i] + U */ -067 *tmpc = *tmpa++ + *tmpb++ + u; -068 -069 /* U = carry bit of T[i] */ -070 u = *tmpc >> ((mp_digit)DIGIT_BIT); -071 -072 /* take away carry bit from T[i] */ -073 *tmpc++ &= MP_MASK; -074 \} -075 -076 /* now copy higher words if any, that is in A+B -077 * if A or B has more digits add those in -078 */ -079 if (min != max) \{ -080 for (; i < max; i++) \{ -081 /* T[i] = X[i] + U */ -082 *tmpc = x->dp[i] + u; -083 -084 /* U = carry bit of T[i] */ -085 u = *tmpc >> ((mp_digit)DIGIT_BIT); -086 -087 /* take away carry bit from T[i] */ -088 *tmpc++ &= MP_MASK; -089 \} -090 \} -091 -092 /* add carry */ -093 *tmpc++ = u; -094 -095 /* clear digits above oldused */ -096 for (i = c->used; i < olduse; i++) \{ -097 *tmpc++ = 0; -098 \} -099 \} -100 -101 mp_clamp (c); -102 return MP_OKAY; -103 \} -104 #endif -105 \end{alltt} \end{small} -We first sort (lines 27 to 35) the inputs based on magnitude and determine the $min$ and $max$ variables. +We first sort (lines 28 to 36) the inputs based on magnitude and determine the $min$ and $max$ variables. Note that $x$ is a pointer to an mp\_int assigned to the largest input, in effect it is a local alias. Next we -grow the destination (37 to 42) ensure that it can accomodate the result of the addition. +grow the destination (38 to 42) ensure that it can accomodate the result of the addition. Similar to the implementation of mp\_copy this function uses the braced code and local aliases coding style. The three aliases that are on -lines 55, 58 and 61 represent the two inputs and destination variables respectively. These aliases are used to ensure the +lines 56, 59 and 62 represent the two inputs and destination variables respectively. These aliases are used to ensure the compiler does not have to dereference $a$, $b$ or $c$ (respectively) to access the digits of the respective mp\_int. -The initial carry $u$ will be cleared (line 64), note that $u$ is of type mp\_digit which ensures type -compatibility within the implementation. The initial addition (line 65 to 74) adds digits from +The initial carry $u$ will be cleared (line 65), note that $u$ is of type mp\_digit which ensures type +compatibility within the implementation. The initial addition (line 66 to 75) adds digits from both inputs until the smallest input runs out of digits. Similarly the conditional addition loop -(line 80 to 90) adds the remaining digits from the larger of the two inputs. The addition is finished -with the final carry being stored in $tmpc$ (line 93). Note the ``++'' operator within the same expression. -After line 93, $tmpc$ will point to the $c.used$'th digit of the mp\_int $c$. This is useful -for the next loop (line 96 to 99) which set any old upper digits to zero. +(line 81 to 90) adds the remaining digits from the larger of the two inputs. The addition is finished +with the final carry being stored in $tmpc$ (line 94). Note the ``++'' operator within the same expression. +After line 94, $tmpc$ will point to the $c.used$'th digit of the mp\_int $c$. This is useful +for the next loop (line 97 to 99) which set any old upper digits to zero. \subsection{Low Level Subtraction} The low level unsigned subtraction algorithm is very similar to the low level unsigned addition algorithm. The principle difference is that the @@ -2322,96 +1825,25 @@ If $b$ has a smaller magnitude than $a$ then step 9 will force the carry and cop \hspace{-5.1mm}{\bf File}: bn\_s\_mp\_sub.c \vspace{-3mm} \begin{alltt} -016 -017 /* low level subtraction (assumes |a| > |b|), HAC pp.595 Algorithm 14.9 */ -018 int -019 s_mp_sub (mp_int * a, mp_int * b, mp_int * c) -020 \{ -021 int olduse, res, min, max; -022 -023 /* find sizes */ -024 min = b->used; -025 max = a->used; -026 -027 /* init result */ -028 if (c->alloc < max) \{ -029 if ((res = mp_grow (c, max)) != MP_OKAY) \{ -030 return res; -031 \} -032 \} -033 olduse = c->used; -034 c->used = max; -035 -036 \{ -037 register mp_digit u, *tmpa, *tmpb, *tmpc; -038 register int i; -039 -040 /* alias for digit pointers */ -041 tmpa = a->dp; -042 tmpb = b->dp; -043 tmpc = c->dp; -044 -045 /* set carry to zero */ -046 u = 0; -047 for (i = 0; i < min; i++) \{ -048 /* T[i] = A[i] - B[i] - U */ -049 *tmpc = *tmpa++ - *tmpb++ - u; -050 -051 /* U = carry bit of T[i] -052 * Note this saves performing an AND operation since -053 * if a carry does occur it will propagate all the way to the -054 * MSB. As a result a single shift is enough to get the carry -055 */ -056 u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1)); -057 -058 /* Clear carry from T[i] */ -059 *tmpc++ &= MP_MASK; -060 \} -061 -062 /* now copy higher words if any, e.g. if A has more digits than B */ -063 for (; i < max; i++) \{ -064 /* T[i] = A[i] - U */ -065 *tmpc = *tmpa++ - u; -066 -067 /* U = carry bit of T[i] */ -068 u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1)); -069 -070 /* Clear carry from T[i] */ -071 *tmpc++ &= MP_MASK; -072 \} -073 -074 /* clear digits above used (since we may not have grown result above) */ - -075 for (i = c->used; i < olduse; i++) \{ -076 *tmpc++ = 0; -077 \} -078 \} -079 -080 mp_clamp (c); -081 return MP_OKAY; -082 \} -083 -084 #endif -085 \end{alltt} \end{small} Like low level addition we ``sort'' the inputs. Except in this case the sorting is hardcoded -(lines 24 and 25). In reality the $min$ and $max$ variables are only aliases and are only +(lines 25 and 26). In reality the $min$ and $max$ variables are only aliases and are only used to make the source code easier to read. Again the pointer alias optimization is used within this algorithm. The aliases $tmpa$, $tmpb$ and $tmpc$ are initialized -(lines 41, 42 and 43) for $a$, $b$ and $c$ respectively. +(lines 42, 43 and 44) for $a$, $b$ and $c$ respectively. -The first subtraction loop (lines 46 through 60) subtract digits from both inputs until the smaller of +The first subtraction loop (lines 47 through 61) subtract digits from both inputs until the smaller of the two inputs has been exhausted. As remarked earlier there is an implementation reason for using the ``awkward'' -method of extracting the carry (line 56). The traditional method for extracting the carry would be to shift +method of extracting the carry (line 57). The traditional method for extracting the carry would be to shift by $lg(\beta)$ positions and logically AND the least significant bit. The AND operation is required because all of the bits above the $\lg(\beta)$'th bit will be set to one after a carry occurs from subtraction. This carry extraction requires two relatively cheap operations to extract the carry. The other method is to simply shift the most significant bit to the least significant bit thus extracting the carry with a single cheap operation. This optimization only works on twos compliment machines which is a safe assumption to make. -If $a$ has a larger magnitude than $b$ an additional loop (lines 63 through 72) is required to propagate +If $a$ has a larger magnitude than $b$ an additional loop (lines 64 through 73) is required to propagate the carry through $a$ and copy the result to $c$. \subsection{High Level Addition} @@ -2495,40 +1927,6 @@ within algorithm s\_mp\_add will force $-0$ to become $0$. \hspace{-5.1mm}{\bf File}: bn\_mp\_add.c \vspace{-3mm} \begin{alltt} -016 -017 /* high level addition (handles signs) */ -018 int mp_add (mp_int * a, mp_int * b, mp_int * c) -019 \{ -020 int sa, sb, res; -021 -022 /* get sign of both inputs */ -023 sa = a->sign; -024 sb = b->sign; -025 -026 /* handle two cases, not four */ -027 if (sa == sb) \{ -028 /* both positive or both negative */ -029 /* add their magnitudes, copy the sign */ -030 c->sign = sa; -031 res = s_mp_add (a, b, c); -032 \} else \{ -033 /* one positive, the other negative */ -034 /* subtract the one with the greater magnitude from */ -035 /* the one of the lesser magnitude. The result gets */ -036 /* the sign of the one with the greater magnitude. */ -037 if (mp_cmp_mag (a, b) == MP_LT) \{ -038 c->sign = sb; -039 res = s_mp_sub (b, a, c); -040 \} else \{ -041 c->sign = sa; -042 res = s_mp_sub (a, b, c); -043 \} -044 \} -045 return res; -046 \} -047 -048 #endif -049 \end{alltt} \end{small} @@ -2602,51 +2000,11 @@ algorithm from producing $-a - -a = -0$ as a result. \hspace{-5.1mm}{\bf File}: bn\_mp\_sub.c \vspace{-3mm} \begin{alltt} -016 -017 /* high level subtraction (handles signs) */ -018 int -019 mp_sub (mp_int * a, mp_int * b, mp_int * c) -020 \{ -021 int sa, sb, res; -022 -023 sa = a->sign; -024 sb = b->sign; -025 -026 if (sa != sb) \{ -027 /* subtract a negative from a positive, OR */ -028 /* subtract a positive from a negative. */ -029 /* In either case, ADD their magnitudes, */ -030 /* and use the sign of the first number. */ -031 c->sign = sa; -032 res = s_mp_add (a, b, c); -033 \} else \{ -034 /* subtract a positive from a positive, OR */ -035 /* subtract a negative from a negative. */ -036 /* First, take the difference between their */ -037 /* magnitudes, then... */ -038 if (mp_cmp_mag (a, b) != MP_LT) \{ -039 /* Copy the sign from the first */ -040 c->sign = sa; -041 /* The first has a larger or equal magnitude */ -042 res = s_mp_sub (a, b, c); -043 \} else \{ -044 /* The result has the *opposite* sign from */ -045 /* the first number. */ -046 c->sign = (sa == MP_ZPOS) ? MP_NEG : MP_ZPOS; -047 /* The second has a larger magnitude */ -048 res = s_mp_sub (b, a, c); -049 \} -050 \} -051 return res; -052 \} -053 -054 #endif -055 \end{alltt} \end{small} Much like the implementation of algorithm mp\_add the variable $res$ is used to catch the return code of the unsigned addition or subtraction operations -and forward it to the end of the function. On line 38 the ``not equal to'' \textbf{MP\_LT} expression is used to emulate a +and forward it to the end of the function. On line 39 the ``not equal to'' \textbf{MP\_LT} expression is used to emulate a ``greater than or equal to'' comparison. \section{Bit and Digit Shifting} @@ -2714,74 +2072,11 @@ Step 8 clears any leading digits of $b$ in case it originally had a larger magni \hspace{-5.1mm}{\bf File}: bn\_mp\_mul\_2.c \vspace{-3mm} \begin{alltt} -016 -017 /* b = a*2 */ -018 int mp_mul_2(mp_int * a, mp_int * b) -019 \{ -020 int x, res, oldused; -021 -022 /* grow to accomodate result */ -023 if (b->alloc < a->used + 1) \{ -024 if ((res = mp_grow (b, a->used + 1)) != MP_OKAY) \{ -025 return res; -026 \} -027 \} -028 -029 oldused = b->used; -030 b->used = a->used; -031 -032 \{ -033 register mp_digit r, rr, *tmpa, *tmpb; -034 -035 /* alias for source */ -036 tmpa = a->dp; -037 -038 /* alias for dest */ -039 tmpb = b->dp; -040 -041 /* carry */ -042 r = 0; -043 for (x = 0; x < a->used; x++) \{ -044 -045 /* get what will be the *next* carry bit from the -046 * MSB of the current digit -047 */ -048 rr = *tmpa >> ((mp_digit)(DIGIT_BIT - 1)); -049 -050 /* now shift up this digit, add in the carry [from the previous] */ -051 *tmpb++ = ((*tmpa++ << ((mp_digit)1)) | r) & MP_MASK; -052 -053 /* copy the carry that would be from the source -054 * digit into the next iteration -055 */ -056 r = rr; -057 \} -058 -059 /* new leading digit? */ -060 if (r != 0) \{ -061 /* add a MSB which is always 1 at this point */ -062 *tmpb = 1; -063 ++(b->used); -064 \} -065 -066 /* now zero any excess digits on the destination -067 * that we didn't write to -068 */ -069 tmpb = b->dp + b->used; -070 for (x = b->used; x < oldused; x++) \{ -071 *tmpb++ = 0; -072 \} -073 \} -074 b->sign = a->sign; -075 return MP_OKAY; -076 \} -077 #endif -078 \end{alltt} \end{small} This implementation is essentially an optimized implementation of s\_mp\_add for the case of doubling an input. The only noteworthy difference -is the use of the logical shift operator on line 51 to perform a single precision doubling. +is the use of the logical shift operator on line 52 to perform a single precision doubling. \subsection{Division by Two} A division by two can just as easily be accomplished with a logical shift right as multiplication by two can be with a logical shift left. @@ -2829,55 +2124,6 @@ least significant bit not the most significant bit. \hspace{-5.1mm}{\bf File}: bn\_mp\_div\_2.c \vspace{-3mm} \begin{alltt} -016 -017 /* b = a/2 */ -018 int mp_div_2(mp_int * a, mp_int * b) -019 \{ -020 int x, res, oldused; -021 -022 /* copy */ -023 if (b->alloc < a->used) \{ -024 if ((res = mp_grow (b, a->used)) != MP_OKAY) \{ -025 return res; -026 \} -027 \} -028 -029 oldused = b->used; -030 b->used = a->used; -031 \{ -032 register mp_digit r, rr, *tmpa, *tmpb; -033 -034 /* source alias */ -035 tmpa = a->dp + b->used - 1; -036 -037 /* dest alias */ -038 tmpb = b->dp + b->used - 1; -039 -040 /* carry */ -041 r = 0; -042 for (x = b->used - 1; x >= 0; x--) \{ -043 /* get the carry for the next iteration */ -044 rr = *tmpa & 1; -045 -046 /* shift the current digit, add in carry and store */ -047 *tmpb-- = (*tmpa-- >> 1) | (r << (DIGIT_BIT - 1)); -048 -049 /* forward carry to next iteration */ -050 r = rr; -051 \} -052 -053 /* zero excess digits */ -054 tmpb = b->dp + b->used; -055 for (x = b->used; x < oldused; x++) \{ -056 *tmpb++ = 0; -057 \} -058 \} -059 b->sign = a->sign; -060 mp_clamp (b); -061 return MP_OKAY; -062 \} -063 #endif -064 \end{alltt} \end{small} @@ -2951,61 +2197,13 @@ step 8 sets the lower $b$ digits to zero. \hspace{-5.1mm}{\bf File}: bn\_mp\_lshd.c \vspace{-3mm} \begin{alltt} -016 -017 /* shift left a certain amount of digits */ -018 int mp_lshd (mp_int * a, int b) -019 \{ -020 int x, res; -021 -022 /* if its less than zero return */ -023 if (b <= 0) \{ -024 return MP_OKAY; -025 \} -026 -027 /* grow to fit the new digits */ -028 if (a->alloc < a->used + b) \{ -029 if ((res = mp_grow (a, a->used + b)) != MP_OKAY) \{ -030 return res; -031 \} -032 \} -033 -034 \{ -035 register mp_digit *top, *bottom; -036 -037 /* increment the used by the shift amount then copy upwards */ -038 a->used += b; -039 -040 /* top */ -041 top = a->dp + a->used - 1; -042 -043 /* base */ -044 bottom = a->dp + a->used - 1 - b; -045 -046 /* much like mp_rshd this is implemented using a sliding window -047 * except the window goes the otherway around. Copying from -048 * the bottom to the top. see bn_mp_rshd.c for more info. -049 */ -050 for (x = a->used - 1; x >= b; x--) \{ -051 *top-- = *bottom--; -052 \} -053 -054 /* zero the lower digits */ -055 top = a->dp; -056 for (x = 0; x < b; x++) \{ -057 *top++ = 0; -058 \} -059 \} -060 return MP_OKAY; -061 \} -062 #endif -063 \end{alltt} \end{small} -The if statement (line 23) ensures that the $b$ variable is greater than zero since we do not interpret negative +The if statement (line 24) ensures that the $b$ variable is greater than zero since we do not interpret negative shift counts properly. The \textbf{used} count is incremented by $b$ before the copy loop begins. This elminates -the need for an additional variable in the for loop. The variable $top$ (line 41) is an alias -for the leading digit while $bottom$ (line 44) is an alias for the trailing edge. The aliases form a +the need for an additional variable in the for loop. The variable $top$ (line 42) is an alias +for the leading digit while $bottom$ (line 45) is an alias for the trailing edge. The aliases form a window of exactly $b$ digits over the input. \subsection{Division by $x$} @@ -3058,64 +2256,11 @@ Once the window copy is complete the upper digits must be zeroed and the \textbf \hspace{-5.1mm}{\bf File}: bn\_mp\_rshd.c \vspace{-3mm} \begin{alltt} -016 -017 /* shift right a certain amount of digits */ -018 void mp_rshd (mp_int * a, int b) -019 \{ -020 int x; -021 -022 /* if b <= 0 then ignore it */ -023 if (b <= 0) \{ -024 return; -025 \} -026 -027 /* if b > used then simply zero it and return */ -028 if (a->used <= b) \{ -029 mp_zero (a); -030 return; -031 \} -032 -033 \{ -034 register mp_digit *bottom, *top; -035 -036 /* shift the digits down */ -037 -038 /* bottom */ -039 bottom = a->dp; -040 -041 /* top [offset into digits] */ -042 top = a->dp + b; -043 -044 /* this is implemented as a sliding window where -045 * the window is b-digits long and digits from -046 * the top of the window are copied to the bottom -047 * -048 * e.g. -049 -050 b-2 | b-1 | b0 | b1 | b2 | ... | bb | ----> -051 /\symbol{92} | ----> -052 \symbol{92}-------------------/ ----> -053 */ -054 for (x = 0; x < (a->used - b); x++) \{ -055 *bottom++ = *top++; -056 \} -057 -058 /* zero the top digits */ -059 for (; x < a->used; x++) \{ -060 *bottom++ = 0; -061 \} -062 \} -063 -064 /* remove excess digits */ -065 a->used -= b; -066 \} -067 #endif -068 \end{alltt} \end{small} The only noteworthy element of this routine is the lack of a return type since it cannot fail. Like mp\_lshd() we -form a sliding window except we copy in the other direction. After the window (line 59) we then zero +form a sliding window except we copy in the other direction. After the window (line 60) we then zero the upper digits of the input to make sure the result is correct. \section{Powers of Two} @@ -3169,7 +2314,7 @@ left. After the digits have been shifted appropriately at most $lg(\beta) - 1$ shifts are left to perform. Step 5 calculates the number of remaining shifts required. If it is non-zero a modified shift loop is used to calculate the remaining product. -Essentially the loop is a generic version of algorith mp\_mul2 designed to handle any shift count in the range $1 \le x < lg(\beta)$. The $mask$ +Essentially the loop is a generic version of algorithm mp\_mul\_2 designed to handle any shift count in the range $1 \le x < lg(\beta)$. The $mask$ variable is used to extract the upper $d$ bits to form the carry for the next iteration. This algorithm is loosely measured as a $O(2n)$ algorithm which means that if the input is $n$-digits that it takes $2n$ ``time'' to @@ -3179,82 +2324,16 @@ complete. It is possible to optimize this algorithm down to a $O(n)$ algorithm \hspace{-5.1mm}{\bf File}: bn\_mp\_mul\_2d.c \vspace{-3mm} \begin{alltt} -016 -017 /* shift left by a certain bit count */ -018 int mp_mul_2d (mp_int * a, int b, mp_int * c) -019 \{ -020 mp_digit d; -021 int res; -022 -023 /* copy */ -024 if (a != c) \{ -025 if ((res = mp_copy (a, c)) != MP_OKAY) \{ -026 return res; -027 \} -028 \} -029 -030 if (c->alloc < (int)(c->used + b/DIGIT_BIT + 1)) \{ -031 if ((res = mp_grow (c, c->used + b / DIGIT_BIT + 1)) != MP_OKAY) \{ -032 return res; -033 \} -034 \} -035 -036 /* shift by as many digits in the bit count */ -037 if (b >= (int)DIGIT_BIT) \{ -038 if ((res = mp_lshd (c, b / DIGIT_BIT)) != MP_OKAY) \{ -039 return res; -040 \} -041 \} -042 -043 /* shift any bit count < DIGIT_BIT */ -044 d = (mp_digit) (b % DIGIT_BIT); -045 if (d != 0) \{ -046 register mp_digit *tmpc, shift, mask, r, rr; -047 register int x; -048 -049 /* bitmask for carries */ -050 mask = (((mp_digit)1) << d) - 1; -051 -052 /* shift for msbs */ -053 shift = DIGIT_BIT - d; -054 -055 /* alias */ -056 tmpc = c->dp; -057 -058 /* carry */ -059 r = 0; -060 for (x = 0; x < c->used; x++) \{ -061 /* get the higher bits of the current word */ -062 rr = (*tmpc >> shift) & mask; -063 -064 /* shift the current word and OR in the carry */ -065 *tmpc = ((*tmpc << d) | r) & MP_MASK; -066 ++tmpc; -067 -068 /* set the carry to the carry bits of the current word */ -069 r = rr; -070 \} -071 -072 /* set final carry */ -073 if (r != 0) \{ -074 c->dp[(c->used)++] = r; -075 \} -076 \} -077 mp_clamp (c); -078 return MP_OKAY; -079 \} -080 #endif -081 \end{alltt} \end{small} -The shifting is performed in--place which means the first step (line 24) is to copy the input to the +The shifting is performed in--place which means the first step (line 25) is to copy the input to the destination. We avoid calling mp\_copy() by making sure the mp\_ints are different. The destination then -has to be grown (line 31) to accomodate the result. +has to be grown (line 32) to accomodate the result. If the shift count $b$ is larger than $lg(\beta)$ then a call to mp\_lshd() is used to handle all of the multiples of $lg(\beta)$. Leaving only a remaining shift of $lg(\beta) - 1$ or fewer bits left. Inside the actual shift -loop (lines 45 to 76) we make use of pre--computed values $shift$ and $mask$. These are used to +loop (lines 46 to 76) we make use of pre--computed values $shift$ and $mask$. These are used to extract the carry bit(s) to pass into the next iteration of the loop. The $r$ and $rr$ variables form a chain between consecutive iterations to propagate the carry. @@ -3302,86 +2381,6 @@ by using algorithm mp\_mod\_2d. \hspace{-5.1mm}{\bf File}: bn\_mp\_div\_2d.c \vspace{-3mm} \begin{alltt} -016 -017 /* shift right by a certain bit count (store quotient in c, optional remaind - er in d) */ -018 int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) -019 \{ -020 mp_digit D, r, rr; -021 int x, res; -022 mp_int t; -023 -024 -025 /* if the shift count is <= 0 then we do no work */ -026 if (b <= 0) \{ -027 res = mp_copy (a, c); -028 if (d != NULL) \{ -029 mp_zero (d); -030 \} -031 return res; -032 \} -033 -034 if ((res = mp_init (&t)) != MP_OKAY) \{ -035 return res; -036 \} -037 -038 /* get the remainder */ -039 if (d != NULL) \{ -040 if ((res = mp_mod_2d (a, b, &t)) != MP_OKAY) \{ -041 mp_clear (&t); -042 return res; -043 \} -044 \} -045 -046 /* copy */ -047 if ((res = mp_copy (a, c)) != MP_OKAY) \{ -048 mp_clear (&t); -049 return res; -050 \} -051 -052 /* shift by as many digits in the bit count */ -053 if (b >= (int)DIGIT_BIT) \{ -054 mp_rshd (c, b / DIGIT_BIT); -055 \} -056 -057 /* shift any bit count < DIGIT_BIT */ -058 D = (mp_digit) (b % DIGIT_BIT); -059 if (D != 0) \{ -060 register mp_digit *tmpc, mask, shift; -061 -062 /* mask */ -063 mask = (((mp_digit)1) << D) - 1; -064 -065 /* shift for lsb */ -066 shift = DIGIT_BIT - D; -067 -068 /* alias */ -069 tmpc = c->dp + (c->used - 1); -070 -071 /* carry */ -072 r = 0; -073 for (x = c->used - 1; x >= 0; x--) \{ -074 /* get the lower bits of this word in a temp */ -075 rr = *tmpc & mask; -076 -077 /* shift the current word and mix in the carry bits from the previous - word */ -078 *tmpc = (*tmpc >> D) | (r << shift); -079 --tmpc; -080 -081 /* set the carry to the carry bits of the current word found above */ -082 r = rr; -083 \} -084 \} -085 mp_clamp (c); -086 if (d != NULL) \{ -087 mp_exch (&t, d); -088 \} -089 mp_clear (&t); -090 return MP_OKAY; -091 \} -092 #endif -093 \end{alltt} \end{small} @@ -3436,44 +2435,6 @@ is copied to $b$, leading digits are removed and the remaining leading digit is \hspace{-5.1mm}{\bf File}: bn\_mp\_mod\_2d.c \vspace{-3mm} \begin{alltt} -016 -017 /* calc a value mod 2**b */ -018 int -019 mp_mod_2d (mp_int * a, int b, mp_int * c) -020 \{ -021 int x, res; -022 -023 /* if b is <= 0 then zero the int */ -024 if (b <= 0) \{ -025 mp_zero (c); -026 return MP_OKAY; -027 \} -028 -029 /* if the modulus is larger than the value than return */ -030 if (b >= (int) (a->used * DIGIT_BIT)) \{ -031 res = mp_copy (a, c); -032 return res; -033 \} -034 -035 /* copy */ -036 if ((res = mp_copy (a, c)) != MP_OKAY) \{ -037 return res; -038 \} -039 -040 /* zero digits above the last digit of the modulus */ -041 for (x = (b / DIGIT_BIT) + ((b % DIGIT_BIT) == 0 ? 0 : 1); x < c->used; x+ - +) \{ -042 c->dp[x] = 0; -043 \} -044 /* clear the digit that is not completely outside/inside the modulus */ -045 c->dp[b / DIGIT_BIT] &= -046 (mp_digit) ((((mp_digit) 1) << (((mp_digit) b) % DIGIT_BIT)) - ((mp_digi - t) 1)); -047 mp_clamp (c); -048 return MP_OKAY; -049 \} -050 #endif -051 \end{alltt} \end{small} @@ -3482,8 +2443,8 @@ than the input we just mp\_copy() the input and return right away. After this p perform some work to produce the remainder. Recalling that reducing modulo $2^k$ and a binary ``and'' with $2^k - 1$ are numerically equivalent we can quickly reduce -the number. First we zero any digits above the last digit in $2^b$ (line 41). Next we reduce the -leading digit of both (line 45) and then mp\_clamp(). +the number. First we zero any digits above the last digit in $2^b$ (line 42). Next we reduce the +leading digit of both (line 46) and then mp\_clamp(). \section*{Exercises} \begin{tabular}{cl} @@ -3643,91 +2604,20 @@ exceed the precision requested. \hspace{-5.1mm}{\bf File}: bn\_s\_mp\_mul\_digs.c \vspace{-3mm} \begin{alltt} -016 -017 /* multiplies |a| * |b| and only computes upto digs digits of result -018 * HAC pp. 595, Algorithm 14.12 Modified so you can control how -019 * many digits of output are created. -020 */ -021 int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) -022 \{ -023 mp_int t; -024 int res, pa, pb, ix, iy; -025 mp_digit u; -026 mp_word r; -027 mp_digit tmpx, *tmpt, *tmpy; -028 -029 /* can we use the fast multiplier? */ -030 if (((digs) < MP_WARRAY) && -031 MIN (a->used, b->used) < -032 (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) \{ -033 return fast_s_mp_mul_digs (a, b, c, digs); -034 \} -035 -036 if ((res = mp_init_size (&t, digs)) != MP_OKAY) \{ -037 return res; -038 \} -039 t.used = digs; -040 -041 /* compute the digits of the product directly */ -042 pa = a->used; -043 for (ix = 0; ix < pa; ix++) \{ -044 /* set the carry to zero */ -045 u = 0; -046 -047 /* limit ourselves to making digs digits of output */ -048 pb = MIN (b->used, digs - ix); -049 -050 /* setup some aliases */ -051 /* copy of the digit from a used within the nested loop */ -052 tmpx = a->dp[ix]; -053 -054 /* an alias for the destination shifted ix places */ -055 tmpt = t.dp + ix; -056 -057 /* an alias for the digits of b */ -058 tmpy = b->dp; -059 -060 /* compute the columns of the output and propagate the carry */ -061 for (iy = 0; iy < pb; iy++) \{ -062 /* compute the column as a mp_word */ -063 r = ((mp_word)*tmpt) + -064 ((mp_word)tmpx) * ((mp_word)*tmpy++) + -065 ((mp_word) u); -066 -067 /* the new column is the lower part of the result */ -068 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); -069 -070 /* get the carry word from the result */ -071 u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); -072 \} -073 /* set carry if it is placed below digs */ -074 if (ix + iy < digs) \{ -075 *tmpt = u; -076 \} -077 \} -078 -079 mp_clamp (&t); -080 mp_exch (&t, c); -081 -082 mp_clear (&t); -083 return MP_OKAY; -084 \} -085 #endif -086 \end{alltt} \end{small} -First we determine (line 30) if the Comba method can be used first since it's faster. The conditions for +First we determine (line 31) if the Comba method can be used first since it's faster. The conditions for sing the Comba routine are that min$(a.used, b.used) < \delta$ and the number of digits of output is less than \textbf{MP\_WARRAY}. This new constant is used to control the stack usage in the Comba routines. By default it is set to $\delta$ but can be reduced when memory is at a premium. If we cannot use the Comba method we proceed to setup the baseline routine. We allocate the the destination mp\_int -$t$ (line 36) to the exact size of the output to avoid further re--allocations. At this point we now +$t$ (line 37) to the exact size of the output to avoid further re--allocations. At this point we now begin the $O(n^2)$ loop. This implementation of multiplication has the caveat that it can be trimmed to only produce a variable number of -digits as output. In each iteration of the outer loop the $pb$ variable is set (line 48) to the maximum +digits as output. In each iteration of the outer loop the $pb$ variable is set (line 49) to the maximum number of inner loop iterations. Inside the inner loop we calculate $\hat r$ as the mp\_word product of the two mp\_digits and the addition of the @@ -3735,7 +2625,7 @@ carry from the previous iteration. A particularly important observation is that C compilers (GCC for instance) can recognize that a $N \times N \rightarrow 2N$ multiplication is all that is required for the product. In x86 terms for example, this means using the MUL instruction. -Each digit of the product is stored in turn (line 68) and the carry propagated (line 71) to the +Each digit of the product is stored in turn (line 69) and the carry propagated (line 72) to the next iteration. \subsection{Faster Multiplication by the ``Comba'' Method} @@ -3864,17 +2754,16 @@ Place an array of \textbf{MP\_WARRAY} single precision digits named $W$ on the s \hspace{6mm}5.4.1 $\_ \hat W \leftarrow \_ \hat W + a_{tx+iy}b_{ty-iy}$ \\ \hspace{3mm}5.5 $W_{ix} \leftarrow \_ \hat W (\mbox{mod }\beta)$\\ \hspace{3mm}5.6 $\_ \hat W \leftarrow \lfloor \_ \hat W / \beta \rfloor$ \\ -6. $W_{pa} \leftarrow \_ \hat W (\mbox{mod }\beta)$ \\ \\ -7. $oldused \leftarrow c.used$ \\ -8. $c.used \leftarrow digs$ \\ -9. for $ix$ from $0$ to $pa$ do \\ -\hspace{3mm}9.1 $c_{ix} \leftarrow W_{ix}$ \\ -10. for $ix$ from $pa + 1$ to $oldused - 1$ do \\ -\hspace{3mm}10.1 $c_{ix} \leftarrow 0$ \\ +6. $oldused \leftarrow c.used$ \\ +7. $c.used \leftarrow digs$ \\ +8. for $ix$ from $0$ to $pa$ do \\ +\hspace{3mm}8.1 $c_{ix} \leftarrow W_{ix}$ \\ +9. for $ix$ from $pa + 1$ to $oldused - 1$ do \\ +\hspace{3mm}9.1 $c_{ix} \leftarrow 0$ \\ \\ -11. Clamp $c$. \\ -12. Return MP\_OKAY. \\ +10. Clamp $c$. \\ +11. Return MP\_OKAY. \\ \hline \end{tabular} \end{center} @@ -3913,105 +2802,14 @@ and addition operations in the nested loop in parallel. \hspace{-5.1mm}{\bf File}: bn\_fast\_s\_mp\_mul\_digs.c \vspace{-3mm} \begin{alltt} -016 -017 /* Fast (comba) multiplier -018 * -019 * This is the fast column-array [comba] multiplier. It is -020 * designed to compute the columns of the product first -021 * then handle the carries afterwards. This has the effect -022 * of making the nested loops that compute the columns very -023 * simple and schedulable on super-scalar processors. -024 * -025 * This has been modified to produce a variable number of -026 * digits of output so if say only a half-product is required -027 * you don't have to compute the upper half (a feature -028 * required for fast Barrett reduction). -029 * -030 * Based on Algorithm 14.12 on pp.595 of HAC. -031 * -032 */ -033 int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) -034 \{ -035 int olduse, res, pa, ix, iz; -036 mp_digit W[MP_WARRAY]; -037 register mp_word _W; -038 -039 /* grow the destination as required */ -040 if (c->alloc < digs) \{ -041 if ((res = mp_grow (c, digs)) != MP_OKAY) \{ -042 return res; -043 \} -044 \} -045 -046 /* number of output digits to produce */ -047 pa = MIN(digs, a->used + b->used); -048 -049 /* clear the carry */ -050 _W = 0; -051 for (ix = 0; ix < pa; ix++) \{ -052 int tx, ty; -053 int iy; -054 mp_digit *tmpx, *tmpy; -055 -056 /* get offsets into the two bignums */ -057 ty = MIN(b->used-1, ix); -058 tx = ix - ty; -059 -060 /* setup temp aliases */ -061 tmpx = a->dp + tx; -062 tmpy = b->dp + ty; -063 -064 /* this is the number of times the loop will iterrate, essentially -065 while (tx++ < a->used && ty-- >= 0) \{ ... \} -066 */ -067 iy = MIN(a->used-tx, ty+1); -068 -069 /* execute loop */ -070 for (iz = 0; iz < iy; ++iz) \{ -071 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); -072 -073 \} -074 -075 /* store term */ -076 W[ix] = ((mp_digit)_W) & MP_MASK; -077 -078 /* make next carry */ -079 _W = _W >> ((mp_word)DIGIT_BIT); -080 \} -081 -082 /* store final carry */ -083 W[ix] = (mp_digit)(_W & MP_MASK); -084 -085 /* setup dest */ -086 olduse = c->used; -087 c->used = pa; -088 -089 \{ -090 register mp_digit *tmpc; -091 tmpc = c->dp; -092 for (ix = 0; ix < pa+1; ix++) \{ -093 /* now extract the previous digit [below the carry] */ -094 *tmpc++ = W[ix]; -095 \} -096 -097 /* clear unused digits [that existed in the old copy of c] */ -098 for (; ix < olduse; ix++) \{ -099 *tmpc++ = 0; -100 \} -101 \} -102 mp_clamp (c); -103 return MP_OKAY; -104 \} -105 #endif -106 \end{alltt} \end{small} -As per the pseudo--code we first calculate $pa$ (line 47) as the number of digits to output. Next we begin the outer loop -to produce the individual columns of the product. We use the two aliases $tmpx$ and $tmpy$ (lines 61, 62) to point +As per the pseudo--code we first calculate $pa$ (line 48) as the number of digits to output. Next we begin the outer loop +to produce the individual columns of the product. We use the two aliases $tmpx$ and $tmpy$ (lines 62, 63) to point inside the two multiplicands quickly. -The inner loop (lines 70 to 73) of this implementation is where the tradeoff come into play. Originally this comba +The inner loop (lines 71 to 74) of this implementation is where the tradeoff come into play. Originally this comba implementation was ``row--major'' which means it adds to each of the columns in each pass. After the outer loop it would then fix the carries. This was very fast except it had an annoying drawback. You had to read a mp\_word and two mp\_digits and write one mp\_word per iteration. On processors such as the Athlon XP and P4 this did not matter much since the cache bandwidth @@ -4019,8 +2817,8 @@ is very high and it can keep the ALU fed with data. It did, however, matter on slower and also often doesn't exist. This new algorithm only performs two reads per iteration under the assumption that the compiler has aliased $\_ \hat W$ to a CPU register. -After the inner loop we store the current accumulator in $W$ and shift $\_ \hat W$ (lines 76, 79) to forward it as -a carry for the next pass. After the outer loop we use the final carry (line 83) as the last digit of the product. +After the inner loop we store the current accumulator in $W$ and shift $\_ \hat W$ (lines 77, 80) to forward it as +a carry for the next pass. After the outer loop we use the final carry (line 77) as the last digit of the product. \subsection{Polynomial Basis Multiplication} To break the $O(n^2)$ barrier in multiplication requires a completely different look at integer multiplication. In the following algorithms @@ -4207,160 +3005,12 @@ The remaining steps 13 through 18 compute the Karatsuba polynomial through a var \hspace{-5.1mm}{\bf File}: bn\_mp\_karatsuba\_mul.c \vspace{-3mm} \begin{alltt} -016 -017 /* c = |a| * |b| using Karatsuba Multiplication using -018 * three half size multiplications -019 * -020 * Let B represent the radix [e.g. 2**DIGIT_BIT] and -021 * let n represent half of the number of digits in -022 * the min(a,b) -023 * -024 * a = a1 * B**n + a0 -025 * b = b1 * B**n + b0 -026 * -027 * Then, a * b => -028 a1b1 * B**2n + ((a1 + a0)(b1 + b0) - (a0b0 + a1b1)) * B + a0b0 -029 * -030 * Note that a1b1 and a0b0 are used twice and only need to be -031 * computed once. So in total three half size (half # of -032 * digit) multiplications are performed, a0b0, a1b1 and -033 * (a1+b1)(a0+b0) -034 * -035 * Note that a multiplication of half the digits requires -036 * 1/4th the number of single precision multiplications so in -037 * total after one call 25% of the single precision multiplications -038 * are saved. Note also that the call to mp_mul can end up back -039 * in this function if the a0, a1, b0, or b1 are above the threshold. -040 * This is known as divide-and-conquer and leads to the famous -041 * O(N**lg(3)) or O(N**1.584) work which is asymptopically lower than -042 * the standard O(N**2) that the baseline/comba methods use. -043 * Generally though the overhead of this method doesn't pay off -044 * until a certain size (N ~ 80) is reached. -045 */ -046 int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c) -047 \{ -048 mp_int x0, x1, y0, y1, t1, x0y0, x1y1; -049 int B, err; -050 -051 /* default the return code to an error */ -052 err = MP_MEM; -053 -054 /* min # of digits */ -055 B = MIN (a->used, b->used); -056 -057 /* now divide in two */ -058 B = B >> 1; -059 -060 /* init copy all the temps */ -061 if (mp_init_size (&x0, B) != MP_OKAY) -062 goto ERR; -063 if (mp_init_size (&x1, a->used - B) != MP_OKAY) -064 goto X0; -065 if (mp_init_size (&y0, B) != MP_OKAY) -066 goto X1; -067 if (mp_init_size (&y1, b->used - B) != MP_OKAY) -068 goto Y0; -069 -070 /* init temps */ -071 if (mp_init_size (&t1, B * 2) != MP_OKAY) -072 goto Y1; -073 if (mp_init_size (&x0y0, B * 2) != MP_OKAY) -074 goto T1; -075 if (mp_init_size (&x1y1, B * 2) != MP_OKAY) -076 goto X0Y0; -077 -078 /* now shift the digits */ -079 x0.used = y0.used = B; -080 x1.used = a->used - B; -081 y1.used = b->used - B; -082 -083 \{ -084 register int x; -085 register mp_digit *tmpa, *tmpb, *tmpx, *tmpy; -086 -087 /* we copy the digits directly instead of using higher level functions -088 * since we also need to shift the digits -089 */ -090 tmpa = a->dp; -091 tmpb = b->dp; -092 -093 tmpx = x0.dp; -094 tmpy = y0.dp; -095 for (x = 0; x < B; x++) \{ -096 *tmpx++ = *tmpa++; -097 *tmpy++ = *tmpb++; -098 \} -099 -100 tmpx = x1.dp; -101 for (x = B; x < a->used; x++) \{ -102 *tmpx++ = *tmpa++; -103 \} -104 -105 tmpy = y1.dp; -106 for (x = B; x < b->used; x++) \{ -107 *tmpy++ = *tmpb++; -108 \} -109 \} -110 -111 /* only need to clamp the lower words since by definition the -112 * upper words x1/y1 must have a known number of digits -113 */ -114 mp_clamp (&x0); -115 mp_clamp (&y0); -116 -117 /* now calc the products x0y0 and x1y1 */ -118 /* after this x0 is no longer required, free temp [x0==t2]! */ -119 if (mp_mul (&x0, &y0, &x0y0) != MP_OKAY) -120 goto X1Y1; /* x0y0 = x0*y0 */ -121 if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY) -122 goto X1Y1; /* x1y1 = x1*y1 */ -123 -124 /* now calc x1+x0 and y1+y0 */ -125 if (s_mp_add (&x1, &x0, &t1) != MP_OKAY) -126 goto X1Y1; /* t1 = x1 - x0 */ -127 if (s_mp_add (&y1, &y0, &x0) != MP_OKAY) -128 goto X1Y1; /* t2 = y1 - y0 */ -129 if (mp_mul (&t1, &x0, &t1) != MP_OKAY) -130 goto X1Y1; /* t1 = (x1 + x0) * (y1 + y0) */ -131 -132 /* add x0y0 */ -133 if (mp_add (&x0y0, &x1y1, &x0) != MP_OKAY) -134 goto X1Y1; /* t2 = x0y0 + x1y1 */ -135 if (s_mp_sub (&t1, &x0, &t1) != MP_OKAY) -136 goto X1Y1; /* t1 = (x1+x0)*(y1+y0) - (x1y1 + x0y0) */ -137 -138 /* shift by B */ -139 if (mp_lshd (&t1, B) != MP_OKAY) -140 goto X1Y1; /* t1 = (x0y0 + x1y1 - (x1-x0)*(y1-y0))<used, b->used) / 3; -038 -039 /* a = a2 * B**2 + a1 * B + a0 */ -040 if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) \{ -041 goto ERR; -042 \} -043 -044 if ((res = mp_copy(a, &a1)) != MP_OKAY) \{ -045 goto ERR; -046 \} -047 mp_rshd(&a1, B); -048 mp_mod_2d(&a1, DIGIT_BIT * B, &a1); -049 -050 if ((res = mp_copy(a, &a2)) != MP_OKAY) \{ -051 goto ERR; -052 \} -053 mp_rshd(&a2, B*2); -054 -055 /* b = b2 * B**2 + b1 * B + b0 */ -056 if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) \{ -057 goto ERR; -058 \} -059 -060 if ((res = mp_copy(b, &b1)) != MP_OKAY) \{ -061 goto ERR; -062 \} -063 mp_rshd(&b1, B); -064 mp_mod_2d(&b1, DIGIT_BIT * B, &b1); -065 -066 if ((res = mp_copy(b, &b2)) != MP_OKAY) \{ -067 goto ERR; -068 \} -069 mp_rshd(&b2, B*2); -070 -071 /* w0 = a0*b0 */ -072 if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) \{ -073 goto ERR; -074 \} -075 -076 /* w4 = a2 * b2 */ -077 if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) \{ -078 goto ERR; -079 \} -080 -081 /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */ -082 if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) \{ -083 goto ERR; -084 \} -085 if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) \{ -086 goto ERR; -087 \} -088 if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) \{ -089 goto ERR; -090 \} -091 if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) \{ -092 goto ERR; -093 \} -094 -095 if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) \{ -096 goto ERR; -097 \} -098 if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) \{ -099 goto ERR; -100 \} -101 if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) \{ -102 goto ERR; -103 \} -104 if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) \{ -105 goto ERR; -106 \} -107 -108 if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) \{ -109 goto ERR; -110 \} -111 -112 /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */ -113 if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) \{ -114 goto ERR; -115 \} -116 if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) \{ -117 goto ERR; -118 \} -119 if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) \{ -120 goto ERR; -121 \} -122 if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) \{ -123 goto ERR; -124 \} -125 -126 if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) \{ -127 goto ERR; -128 \} -129 if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) \{ -130 goto ERR; -131 \} -132 if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) \{ -133 goto ERR; -134 \} -135 if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) \{ -136 goto ERR; -137 \} -138 -139 if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) \{ -140 goto ERR; -141 \} -142 -143 -144 /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */ -145 if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) \{ -146 goto ERR; -147 \} -148 if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) \{ -149 goto ERR; -150 \} -151 if ((res = mp_add(&b2, &b1, &tmp2)) != MP_OKAY) \{ -152 goto ERR; -153 \} -154 if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) \{ -155 goto ERR; -156 \} -157 if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) \{ -158 goto ERR; -159 \} -160 -161 /* now solve the matrix -162 -163 0 0 0 0 1 -164 1 2 4 8 16 -165 1 1 1 1 1 -166 16 8 4 2 1 -167 1 0 0 0 0 -168 -169 using 12 subtractions, 4 shifts, -170 2 small divisions and 1 small multiplication -171 */ -172 -173 /* r1 - r4 */ -174 if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) \{ -175 goto ERR; -176 \} -177 /* r3 - r0 */ -178 if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) \{ -179 goto ERR; -180 \} -181 /* r1/2 */ -182 if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) \{ -183 goto ERR; -184 \} -185 /* r3/2 */ -186 if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) \{ -187 goto ERR; -188 \} -189 /* r2 - r0 - r4 */ -190 if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) \{ -191 goto ERR; -192 \} -193 if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) \{ -194 goto ERR; -195 \} -196 /* r1 - r2 */ -197 if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) \{ -198 goto ERR; -199 \} -200 /* r3 - r2 */ -201 if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) \{ -202 goto ERR; -203 \} -204 /* r1 - 8r0 */ -205 if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) \{ -206 goto ERR; -207 \} -208 if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) \{ -209 goto ERR; -210 \} -211 /* r3 - 8r4 */ -212 if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) \{ -213 goto ERR; -214 \} -215 if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) \{ -216 goto ERR; -217 \} -218 /* 3r2 - r1 - r3 */ -219 if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) \{ -220 goto ERR; -221 \} -222 if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) \{ -223 goto ERR; -224 \} -225 if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) \{ -226 goto ERR; -227 \} -228 /* r1 - r2 */ -229 if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) \{ -230 goto ERR; -231 \} -232 /* r3 - r2 */ -233 if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) \{ -234 goto ERR; -235 \} -236 /* r1/3 */ -237 if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) \{ -238 goto ERR; -239 \} -240 /* r3/3 */ -241 if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) \{ -242 goto ERR; -243 \} -244 -245 /* at this point shift W[n] by B*n */ -246 if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) \{ -247 goto ERR; -248 \} -249 if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) \{ -250 goto ERR; -251 \} -252 if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) \{ -253 goto ERR; -254 \} -255 if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) \{ -256 goto ERR; -257 \} -258 -259 if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) \{ -260 goto ERR; -261 \} -262 if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) \{ -263 goto ERR; -264 \} -265 if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) \{ -266 goto ERR; -267 \} -268 if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) \{ -269 goto ERR; -270 \} -271 -272 ERR: -273 mp_clear_multi(&w0, &w1, &w2, &w3, &w4, -274 &a0, &a1, &a2, &b0, &b1, -275 &b2, &tmp1, &tmp2, NULL); -276 return res; -277 \} -278 -279 #endif -280 \end{alltt} \end{small} @@ -4767,12 +3152,12 @@ large numbers. For example, a 10,000 digit multiplication takes approximaly 99, Toom--Cook than a Comba or baseline approach (this is a savings of more than 99$\%$). For most ``crypto'' sized numbers this algorithm is not practical as Karatsuba has a much lower cutoff point. -First we split $a$ and $b$ into three roughly equal portions. This has been accomplished (lines 40 to 69) with +First we split $a$ and $b$ into three roughly equal portions. This has been accomplished (lines 41 to 70) with combinations of mp\_rshd() and mp\_mod\_2d() function calls. At this point $a = a2 \cdot \beta^2 + a1 \cdot \beta + a0$ and similiarly for $b$. Next we compute the five points $w0, w1, w2, w3$ and $w4$. Recall that $w0$ and $w4$ can be computed directly from the portions so -we get those out of the way first (lines 72 and 77). Next we compute $w1, w2$ and $w3$ using Horners method. +we get those out of the way first (lines 73 and 78). Next we compute $w1, w2$ and $w3$ using Horners method. After this point we solve for the actual values of $w1, w2$ and $w3$ by reducing the $5 \times 5$ system which is relatively straight forward. @@ -4821,58 +3206,11 @@ s\_mp\_mul\_digs will clear it. \hspace{-5.1mm}{\bf File}: bn\_mp\_mul.c \vspace{-3mm} \begin{alltt} -016 -017 /* high level multiplication (handles sign) */ -018 int mp_mul (mp_int * a, mp_int * b, mp_int * c) -019 \{ -020 int res, neg; -021 neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; -022 -023 /* use Toom-Cook? */ -024 #ifdef BN_MP_TOOM_MUL_C -025 if (MIN (a->used, b->used) >= TOOM_MUL_CUTOFF) \{ -026 res = mp_toom_mul(a, b, c); -027 \} else -028 #endif -029 #ifdef BN_MP_KARATSUBA_MUL_C -030 /* use Karatsuba? */ -031 if (MIN (a->used, b->used) >= KARATSUBA_MUL_CUTOFF) \{ -032 res = mp_karatsuba_mul (a, b, c); -033 \} else -034 #endif -035 \{ -036 /* can we use the fast multiplier? -037 * -038 * The fast multiplier can be used if the output will -039 * have less than MP_WARRAY digits and the number of -040 * digits won't affect carry propagation -041 */ -042 int digs = a->used + b->used + 1; -043 -044 #ifdef BN_FAST_S_MP_MUL_DIGS_C -045 if ((digs < MP_WARRAY) && -046 MIN(a->used, b->used) <= -047 (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) \{ -048 res = fast_s_mp_mul_digs (a, b, c, digs); -049 \} else -050 #endif -051 #ifdef BN_S_MP_MUL_DIGS_C -052 res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */ -053 #else -054 res = MP_VAL; -055 #endif -056 -057 \} -058 c->sign = (c->used > 0) ? neg : MP_ZPOS; -059 return res; -060 \} -061 #endif -062 \end{alltt} \end{small} -The implementation is rather simplistic and is not particularly noteworthy. Line 23 computes the sign of the result using the ``?'' -operator from the C programming language. Line 47 computes $\delta$ using the fact that $1 << k$ is equal to $2^k$. +The implementation is rather simplistic and is not particularly noteworthy. Line 22 computes the sign of the result using the ``?'' +operator from the C programming language. Line 48 computes $\delta$ using the fact that $1 << k$ is equal to $2^k$. \section{Squaring} \label{sec:basesquare} @@ -4973,78 +3311,13 @@ results calculated so far. This involves expensive carry propagation which will \hspace{-5.1mm}{\bf File}: bn\_s\_mp\_sqr.c \vspace{-3mm} \begin{alltt} -016 -017 /* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ -018 int s_mp_sqr (mp_int * a, mp_int * b) -019 \{ -020 mp_int t; -021 int res, ix, iy, pa; -022 mp_word r; -023 mp_digit u, tmpx, *tmpt; -024 -025 pa = a->used; -026 if ((res = mp_init_size (&t, 2*pa + 1)) != MP_OKAY) \{ -027 return res; -028 \} -029 -030 /* default used is maximum possible size */ -031 t.used = 2*pa + 1; -032 -033 for (ix = 0; ix < pa; ix++) \{ -034 /* first calculate the digit at 2*ix */ -035 /* calculate double precision result */ -036 r = ((mp_word) t.dp[2*ix]) + -037 ((mp_word)a->dp[ix])*((mp_word)a->dp[ix]); -038 -039 /* store lower part in result */ -040 t.dp[ix+ix] = (mp_digit) (r & ((mp_word) MP_MASK)); -041 -042 /* get the carry */ -043 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); -044 -045 /* left hand side of A[ix] * A[iy] */ -046 tmpx = a->dp[ix]; -047 -048 /* alias for where to store the results */ -049 tmpt = t.dp + (2*ix + 1); -050 -051 for (iy = ix + 1; iy < pa; iy++) \{ -052 /* first calculate the product */ -053 r = ((mp_word)tmpx) * ((mp_word)a->dp[iy]); -054 -055 /* now calculate the double precision result, note we use -056 * addition instead of *2 since it's easier to optimize -057 */ -058 r = ((mp_word) *tmpt) + r + r + ((mp_word) u); -059 -060 /* store lower part */ -061 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); -062 -063 /* get carry */ -064 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); -065 \} -066 /* propagate upwards */ -067 while (u != ((mp_digit) 0)) \{ -068 r = ((mp_word) *tmpt) + ((mp_word) u); -069 *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK)); -070 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); -071 \} -072 \} -073 -074 mp_clamp (&t); -075 mp_exch (&t, b); -076 mp_clear (&t); -077 return MP_OKAY; -078 \} -079 #endif -080 \end{alltt} \end{small} -Inside the outer loop (line 33) the square term is calculated on line 36. The carry (line 43) has been +Inside the outer loop (line 34) the square term is calculated on line 37. The carry (line 44) has been extracted from the mp\_word accumulator using a right shift. Aliases for $a_{ix}$ and $t_{ix+iy}$ are initialized -(lines 46 and 49) to simplify the inner loop. The doubling is performed using two -additions (line 58) since it is usually faster than shifting, if not at least as fast. +(lines 47 and 50) to simplify the inner loop. The doubling is performed using two +additions (line 59) since it is usually faster than shifting, if not at least as fast. The important observation is that the inner loop does not begin at $iy = 0$ like for multiplication. As such the inner loops get progressively shorter as the algorithm proceeds. This is what leads to the savings compared to using a multiplication to @@ -5126,101 +3399,6 @@ only to even outputs and it is the square of the term at the $\lfloor ix / 2 \rf \hspace{-5.1mm}{\bf File}: bn\_fast\_s\_mp\_sqr.c \vspace{-3mm} \begin{alltt} -016 -017 /* the jist of squaring... -018 * you do like mult except the offset of the tmpx [one that -019 * starts closer to zero] can't equal the offset of tmpy. -020 * So basically you set up iy like before then you min it with -021 * (ty-tx) so that it never happens. You double all those -022 * you add in the inner loop -023 -024 After that loop you do the squares and add them in. -025 */ -026 -027 int fast_s_mp_sqr (mp_int * a, mp_int * b) -028 \{ -029 int olduse, res, pa, ix, iz; -030 mp_digit W[MP_WARRAY], *tmpx; -031 mp_word W1; -032 -033 /* grow the destination as required */ -034 pa = a->used + a->used; -035 if (b->alloc < pa) \{ -036 if ((res = mp_grow (b, pa)) != MP_OKAY) \{ -037 return res; -038 \} -039 \} -040 -041 /* number of output digits to produce */ -042 W1 = 0; -043 for (ix = 0; ix < pa; ix++) \{ -044 int tx, ty, iy; -045 mp_word _W; -046 mp_digit *tmpy; -047 -048 /* clear counter */ -049 _W = 0; -050 -051 /* get offsets into the two bignums */ -052 ty = MIN(a->used-1, ix); -053 tx = ix - ty; -054 -055 /* setup temp aliases */ -056 tmpx = a->dp + tx; -057 tmpy = a->dp + ty; -058 -059 /* this is the number of times the loop will iterrate, essentially -060 while (tx++ < a->used && ty-- >= 0) \{ ... \} -061 */ -062 iy = MIN(a->used-tx, ty+1); -063 -064 /* now for squaring tx can never equal ty -065 * we halve the distance since they approach at a rate of 2x -066 * and we have to round because odd cases need to be executed -067 */ -068 iy = MIN(iy, (ty-tx+1)>>1); -069 -070 /* execute loop */ -071 for (iz = 0; iz < iy; iz++) \{ -072 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); -073 \} -074 -075 /* double the inner product and add carry */ -076 _W = _W + _W + W1; -077 -078 /* even columns have the square term in them */ -079 if ((ix&1) == 0) \{ -080 _W += ((mp_word)a->dp[ix>>1])*((mp_word)a->dp[ix>>1]); -081 \} -082 -083 /* store it */ -084 W[ix] = (mp_digit)(_W & MP_MASK); -085 -086 /* make next carry */ -087 W1 = _W >> ((mp_word)DIGIT_BIT); -088 \} -089 -090 /* setup dest */ -091 olduse = b->used; -092 b->used = a->used+a->used; -093 -094 \{ -095 mp_digit *tmpb; -096 tmpb = b->dp; -097 for (ix = 0; ix < pa; ix++) \{ -098 *tmpb++ = W[ix] & MP_MASK; -099 \} -100 -101 /* clear unused digits [that existed in the old copy of c] */ -102 for (; ix < olduse; ix++) \{ -103 *tmpb++ = 0; -104 \} -105 \} -106 mp_clamp (b); -107 return MP_OKAY; -108 \} -109 #endif -110 \end{alltt} \end{small} @@ -5330,113 +3508,11 @@ ratio of 1:7. } than simpler operations such as addition. \hspace{-5.1mm}{\bf File}: bn\_mp\_karatsuba\_sqr.c \vspace{-3mm} \begin{alltt} -016 -017 /* Karatsuba squaring, computes b = a*a using three -018 * half size squarings -019 * -020 * See comments of karatsuba_mul for details. It -021 * is essentially the same algorithm but merely -022 * tuned to perform recursive squarings. -023 */ -024 int mp_karatsuba_sqr (mp_int * a, mp_int * b) -025 \{ -026 mp_int x0, x1, t1, t2, x0x0, x1x1; -027 int B, err; -028 -029 err = MP_MEM; -030 -031 /* min # of digits */ -032 B = a->used; -033 -034 /* now divide in two */ -035 B = B >> 1; -036 -037 /* init copy all the temps */ -038 if (mp_init_size (&x0, B) != MP_OKAY) -039 goto ERR; -040 if (mp_init_size (&x1, a->used - B) != MP_OKAY) -041 goto X0; -042 -043 /* init temps */ -044 if (mp_init_size (&t1, a->used * 2) != MP_OKAY) -045 goto X1; -046 if (mp_init_size (&t2, a->used * 2) != MP_OKAY) -047 goto T1; -048 if (mp_init_size (&x0x0, B * 2) != MP_OKAY) -049 goto T2; -050 if (mp_init_size (&x1x1, (a->used - B) * 2) != MP_OKAY) -051 goto X0X0; -052 -053 \{ -054 register int x; -055 register mp_digit *dst, *src; -056 -057 src = a->dp; -058 -059 /* now shift the digits */ -060 dst = x0.dp; -061 for (x = 0; x < B; x++) \{ -062 *dst++ = *src++; -063 \} -064 -065 dst = x1.dp; -066 for (x = B; x < a->used; x++) \{ -067 *dst++ = *src++; -068 \} -069 \} -070 -071 x0.used = B; -072 x1.used = a->used - B; -073 -074 mp_clamp (&x0); -075 -076 /* now calc the products x0*x0 and x1*x1 */ -077 if (mp_sqr (&x0, &x0x0) != MP_OKAY) -078 goto X1X1; /* x0x0 = x0*x0 */ -079 if (mp_sqr (&x1, &x1x1) != MP_OKAY) -080 goto X1X1; /* x1x1 = x1*x1 */ -081 -082 /* now calc (x1+x0)**2 */ -083 if (s_mp_add (&x1, &x0, &t1) != MP_OKAY) -084 goto X1X1; /* t1 = x1 - x0 */ -085 if (mp_sqr (&t1, &t1) != MP_OKAY) -086 goto X1X1; /* t1 = (x1 - x0) * (x1 - x0) */ -087 -088 /* add x0y0 */ -089 if (s_mp_add (&x0x0, &x1x1, &t2) != MP_OKAY) -090 goto X1X1; /* t2 = x0x0 + x1x1 */ -091 if (s_mp_sub (&t1, &t2, &t1) != MP_OKAY) -092 goto X1X1; /* t1 = (x1+x0)**2 - (x0x0 + x1x1) */ -093 -094 /* shift by B */ -095 if (mp_lshd (&t1, B) != MP_OKAY) -096 goto X1X1; /* t1 = (x0x0 + x1x1 - (x1-x0)*(x1-x0))<used >= TOOM_SQR_CUTOFF) \{ -026 res = mp_toom_sqr(a, b); -027 /* Karatsuba? */ -028 \} else -029 #endif -030 #ifdef BN_MP_KARATSUBA_SQR_C -031 if (a->used >= KARATSUBA_SQR_CUTOFF) \{ -032 res = mp_karatsuba_sqr (a, b); -033 \} else -034 #endif -035 \{ -036 #ifdef BN_FAST_S_MP_SQR_C -037 /* can we use the fast comba multiplier? */ -038 if ((a->used * 2 + 1) < MP_WARRAY && -039 a->used < -040 (1 << (sizeof(mp_word) * CHAR_BIT - 2*DIGIT_BIT - 1))) \{ -041 res = fast_s_mp_sqr (a, b); -042 \} else -043 #endif -044 #ifdef BN_S_MP_SQR_C -045 res = s_mp_sqr (a, b); -046 #else -047 res = MP_VAL; -048 #endif -049 \} -050 b->sign = MP_ZPOS; -051 return res; -052 \} -053 #endif -054 \end{alltt} \end{small} @@ -5782,93 +3819,12 @@ performed at most twice, and on average once. However, if $a \ge b^2$ than it wi \hspace{-5.1mm}{\bf File}: bn\_mp\_reduce.c \vspace{-3mm} \begin{alltt} -016 -017 /* reduces x mod m, assumes 0 < x < m**2, mu is -018 * precomputed via mp_reduce_setup. -019 * From HAC pp.604 Algorithm 14.42 -020 */ -021 int mp_reduce (mp_int * x, mp_int * m, mp_int * mu) -022 \{ -023 mp_int q; -024 int res, um = m->used; -025 -026 /* q = x */ -027 if ((res = mp_init_copy (&q, x)) != MP_OKAY) \{ -028 return res; -029 \} -030 -031 /* q1 = x / b**(k-1) */ -032 mp_rshd (&q, um - 1); -033 -034 /* according to HAC this optimization is ok */ -035 if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) \{ -036 if ((res = mp_mul (&q, mu, &q)) != MP_OKAY) \{ -037 goto CLEANUP; -038 \} -039 \} else \{ -040 #ifdef BN_S_MP_MUL_HIGH_DIGS_C -041 if ((res = s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) \{ -042 goto CLEANUP; -043 \} -044 #elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) -045 if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) \{ -046 goto CLEANUP; -047 \} -048 #else -049 \{ -050 res = MP_VAL; -051 goto CLEANUP; -052 \} -053 #endif -054 \} -055 -056 /* q3 = q2 / b**(k+1) */ -057 mp_rshd (&q, um + 1); -058 -059 /* x = x mod b**(k+1), quick (no division) */ -060 if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) \{ -061 goto CLEANUP; -062 \} -063 -064 /* q = q * m mod b**(k+1), quick (no division) */ -065 if ((res = s_mp_mul_digs (&q, m, &q, um + 1)) != MP_OKAY) \{ -066 goto CLEANUP; -067 \} -068 -069 /* x = x - q */ -070 if ((res = mp_sub (x, &q, x)) != MP_OKAY) \{ -071 goto CLEANUP; -072 \} -073 -074 /* If x < 0, add b**(k+1) to it */ -075 if (mp_cmp_d (x, 0) == MP_LT) \{ -076 mp_set (&q, 1); -077 if ((res = mp_lshd (&q, um + 1)) != MP_OKAY) -078 goto CLEANUP; -079 if ((res = mp_add (x, &q, x)) != MP_OKAY) -080 goto CLEANUP; -081 \} -082 -083 /* Back off if it's too big */ -084 while (mp_cmp (x, m) != MP_LT) \{ -085 if ((res = s_mp_sub (x, m, x)) != MP_OKAY) \{ -086 goto CLEANUP; -087 \} -088 \} -089 -090 CLEANUP: -091 mp_clear (&q); -092 -093 return res; -094 \} -095 #endif -096 \end{alltt} \end{small} The first multiplication that determines the quotient can be performed by only producing the digits from $m - 1$ and up. This essentially halves the number of single precision multiplications required. However, the optimization is only safe if $\beta$ is much larger than the number of digits -in the modulus. In the source code this is evaluated on lines 36 to 43 where algorithm s\_mp\_mul\_high\_digs is used when it is +in the modulus. In the source code this is evaluated on lines 36 to 44 where algorithm s\_mp\_mul\_high\_digs is used when it is safe to do so. \subsection{The Barrett Setup Algorithm} @@ -5901,21 +3857,6 @@ is equivalent and much faster. The final value is computed by taking the intege \hspace{-5.1mm}{\bf File}: bn\_mp\_reduce\_setup.c \vspace{-3mm} \begin{alltt} -016 -017 /* pre-calculate the value required for Barrett reduction -018 * For a given modulus "b" it calulates the value required in "a" -019 */ -020 int mp_reduce_setup (mp_int * a, mp_int * b) -021 \{ -022 int res; -023 -024 if ((res = mp_2expt (a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) \{ -025 return res; -026 \} -027 return mp_div (a, b, a, NULL); -028 \} -029 #endif -030 \end{alltt} \end{small} @@ -5980,6 +3921,7 @@ $0 \le r < \lfloor x/2^k \rfloor + n$. As a result at most a single subtraction \hline $6$ & $x/2 = 139$ \\ \hline $7$ & $x + n = 396$, $x/2 = 198$ \\ \hline $8$ & $x/2 = 99$ \\ +\hline $9$ & $x + n = 356$, $x/2 = 178$ \\ \hline \end{tabular} \end{center} @@ -5988,8 +3930,8 @@ $0 \le r < \lfloor x/2^k \rfloor + n$. As a result at most a single subtraction \label{fig:MONT1} \end{figure} -Consider the example in figure~\ref{fig:MONT1} which reduces $x = 5555$ modulo $n = 257$ when $k = 8$. The result of the algorithm $r = 99$ is -congruent to the value of $2^{-8} \cdot 5555 \mbox{ (mod }257\mbox{)}$. When $r$ is multiplied by $2^8$ modulo $257$ the correct residue +Consider the example in figure~\ref{fig:MONT1} which reduces $x = 5555$ modulo $n = 257$ when $k = 9$ (note $\beta^k = 512$ which is larger than $n$). The result of +the algorithm $r = 178$ is congruent to the value of $2^{-9} \cdot 5555 \mbox{ (mod }257\mbox{)}$. When $r$ is multiplied by $2^9$ modulo $257$ the correct residue $r \equiv 158$ is produced. Let $k = \lfloor lg(n) \rfloor + 1$ represent the number of bits in $n$. The current algorithm requires $2k^2$ single precision shifts @@ -6001,10 +3943,10 @@ Fortunately there exists an alternative representation of the algorithm. \begin{center} \begin{tabular}{l} \hline Algorithm \textbf{Montgomery Reduction} (modified I). \\ -\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Input}. Integer $x$, $n$ and $k$ ($2^k > n$) \\ \textbf{Output}. $2^{-k}x \mbox{ (mod }n\mbox{)}$ \\ \hline \\ -1. for $t$ from $0$ to $k - 1$ do \\ +1. for $t$ from $1$ to $k$ do \\ \hspace{3mm}1.1 If the $t$'th bit of $x$ is one then \\ \hspace{6mm}1.1.1 $x \leftarrow x + 2^tn$ \\ 2. Return $x/2^k$. \\ @@ -6032,7 +3974,8 @@ precision shifts has now been reduced from $2k^2$ to $k^2 + k$ which is only a s \hline $6$ & $8896$ & $10001011000000$ \\ \hline $7$ & $x + 2^{6}n = 25344$ & $110001100000000$ \\ \hline $8$ & $25344$ & $110001100000000$ \\ -\hline -- & $x/2^k = 99$ & \\ +\hline $9$ & $x + 2^{7}n = 91136$ & $10110010000000000$ \\ +\hline -- & $x/2^k = 178$ & \\ \hline \end{tabular} \end{center} @@ -6041,7 +3984,7 @@ precision shifts has now been reduced from $2k^2$ to $k^2 + k$ which is only a s \label{fig:MONT2} \end{figure} -Figure~\ref{fig:MONT2} demonstrates the modified algorithm reducing $x = 5555$ modulo $n = 257$ with $k = 8$. +Figure~\ref{fig:MONT2} demonstrates the modified algorithm reducing $x = 5555$ modulo $n = 257$ with $k = 9$. With this algorithm a single shift right at the end is the only right shift required to reduce the input instead of $k$ right shifts inside the loop. Note that for the iterations $t = 2, 5, 6$ and $8$ where the result $x$ is not changed. In those iterations the $t$'th bit of $x$ is zero and the appropriate multiple of $n$ does not need to be added to force the $t$'th bit of the result to zero. @@ -6055,7 +3998,7 @@ previous algorithm re-written to compute the Montgomery reduction in this new fa \begin{center} \begin{tabular}{l} \hline Algorithm \textbf{Montgomery Reduction} (modified II). \\ -\textbf{Input}. Integer $x$, $n$ and $k$ \\ +\textbf{Input}. Integer $x$, $n$ and $k$ ($\beta^k > n$) \\ \textbf{Output}. $\beta^{-k}x \mbox{ (mod }n\mbox{)}$ \\ \hline \\ 1. for $t$ from $0$ to $k - 1$ do \\ @@ -6173,110 +4116,11 @@ multiplications. \hspace{-5.1mm}{\bf File}: bn\_mp\_montgomery\_reduce.c \vspace{-3mm} \begin{alltt} -016 -017 /* computes xR**-1 == x (mod N) via Montgomery Reduction */ -018 int -019 mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) -020 \{ -021 int ix, res, digs; -022 mp_digit mu; -023 -024 /* can the fast reduction [comba] method be used? -025 * -026 * Note that unlike in mul you're safely allowed *less* -027 * than the available columns [255 per default] since carries -028 * are fixed up in the inner loop. -029 */ -030 digs = n->used * 2 + 1; -031 if ((digs < MP_WARRAY) && -032 n->used < -033 (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) \{ -034 return fast_mp_montgomery_reduce (x, n, rho); -035 \} -036 -037 /* grow the input as required */ -038 if (x->alloc < digs) \{ -039 if ((res = mp_grow (x, digs)) != MP_OKAY) \{ -040 return res; -041 \} -042 \} -043 x->used = digs; -044 -045 for (ix = 0; ix < n->used; ix++) \{ -046 /* mu = ai * rho mod b -047 * -048 * The value of rho must be precalculated via -049 * montgomery_setup() such that -050 * it equals -1/n0 mod b this allows the -051 * following inner loop to reduce the -052 * input one digit at a time -053 */ -054 mu = (mp_digit) (((mp_word)x->dp[ix]) * ((mp_word)rho) & MP_MASK); -055 -056 /* a = a + mu * m * b**i */ -057 \{ -058 register int iy; -059 register mp_digit *tmpn, *tmpx, u; -060 register mp_word r; -061 -062 /* alias for digits of the modulus */ -063 tmpn = n->dp; -064 -065 /* alias for the digits of x [the input] */ -066 tmpx = x->dp + ix; -067 -068 /* set the carry to zero */ -069 u = 0; -070 -071 /* Multiply and add in place */ -072 for (iy = 0; iy < n->used; iy++) \{ -073 /* compute product and sum */ -074 r = ((mp_word)mu) * ((mp_word)*tmpn++) + -075 ((mp_word) u) + ((mp_word) * tmpx); -076 -077 /* get carry */ -078 u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); -079 -080 /* fix digit */ -081 *tmpx++ = (mp_digit)(r & ((mp_word) MP_MASK)); -082 \} -083 /* At this point the ix'th digit of x should be zero */ -084 -085 -086 /* propagate carries upwards as required*/ -087 while (u) \{ -088 *tmpx += u; -089 u = *tmpx >> DIGIT_BIT; -090 *tmpx++ &= MP_MASK; -091 \} -092 \} -093 \} -094 -095 /* at this point the n.used'th least -096 * significant digits of x are all zero -097 * which means we can shift x to the -098 * right by n.used digits and the -099 * residue is unchanged. -100 */ -101 -102 /* x = x/b**n.used */ -103 mp_clamp(x); -104 mp_rshd (x, n->used); -105 -106 /* if x >= n then x = x - n */ -107 if (mp_cmp_mag (x, n) != MP_LT) \{ -108 return s_mp_sub (x, n, x); -109 \} -110 -111 return MP_OKAY; -112 \} -113 #endif -114 \end{alltt} \end{small} -This is the baseline implementation of the Montgomery reduction algorithm. Lines 30 to 35 determine if the Comba based -routine can be used instead. Line 48 computes the value of $\mu$ for that particular iteration of the outer loop. +This is the baseline implementation of the Montgomery reduction algorithm. Lines 31 to 36 determine if the Comba based +routine can be used instead. Line 47 computes the value of $\mu$ for that particular iteration of the outer loop. The multiplication $\mu n \beta^{ix}$ is performed in one step in the inner loop. The alias $tmpx$ refers to the $ix$'th digit of $x$ and the alias $tmpn$ refers to the modulus $n$. @@ -6364,170 +4208,17 @@ stored in the destination $x$. \hspace{-5.1mm}{\bf File}: bn\_fast\_mp\_montgomery\_reduce.c \vspace{-3mm} \begin{alltt} -016 -017 /* computes xR**-1 == x (mod N) via Montgomery Reduction -018 * -019 * This is an optimized implementation of montgomery_reduce -020 * which uses the comba method to quickly calculate the columns of the -021 * reduction. -022 * -023 * Based on Algorithm 14.32 on pp.601 of HAC. -024 */ -025 int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) -026 \{ -027 int ix, res, olduse; -028 mp_word W[MP_WARRAY]; -029 -030 /* get old used count */ -031 olduse = x->used; -032 -033 /* grow a as required */ -034 if (x->alloc < n->used + 1) \{ -035 if ((res = mp_grow (x, n->used + 1)) != MP_OKAY) \{ -036 return res; -037 \} -038 \} -039 -040 /* first we have to get the digits of the input into -041 * an array of double precision words W[...] -042 */ -043 \{ -044 register mp_word *_W; -045 register mp_digit *tmpx; -046 -047 /* alias for the W[] array */ -048 _W = W; -049 -050 /* alias for the digits of x*/ -051 tmpx = x->dp; -052 -053 /* copy the digits of a into W[0..a->used-1] */ -054 for (ix = 0; ix < x->used; ix++) \{ -055 *_W++ = *tmpx++; -056 \} -057 -058 /* zero the high words of W[a->used..m->used*2] */ -059 for (; ix < n->used * 2 + 1; ix++) \{ -060 *_W++ = 0; -061 \} -062 \} -063 -064 /* now we proceed to zero successive digits -065 * from the least significant upwards -066 */ -067 for (ix = 0; ix < n->used; ix++) \{ -068 /* mu = ai * m' mod b -069 * -070 * We avoid a double precision multiplication (which isn't required) -071 * by casting the value down to a mp_digit. Note this requires -072 * that W[ix-1] have the carry cleared (see after the inner loop) -073 */ -074 register mp_digit mu; -075 mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK); -076 -077 /* a = a + mu * m * b**i -078 * -079 * This is computed in place and on the fly. The multiplication -080 * by b**i is handled by offseting which columns the results -081 * are added to. -082 * -083 * Note the comba method normally doesn't handle carries in the -084 * inner loop In this case we fix the carry from the previous -085 * column since the Montgomery reduction requires digits of the -086 * result (so far) [see above] to work. This is -087 * handled by fixing up one carry after the inner loop. The -088 * carry fixups are done in order so after these loops the -089 * first m->used words of W[] have the carries fixed -090 */ -091 \{ -092 register int iy; -093 register mp_digit *tmpn; -094 register mp_word *_W; -095 -096 /* alias for the digits of the modulus */ -097 tmpn = n->dp; -098 -099 /* Alias for the columns set by an offset of ix */ -100 _W = W + ix; -101 -102 /* inner loop */ -103 for (iy = 0; iy < n->used; iy++) \{ -104 *_W++ += ((mp_word)mu) * ((mp_word)*tmpn++); -105 \} -106 \} -107 -108 /* now fix carry for next digit, W[ix+1] */ -109 W[ix + 1] += W[ix] >> ((mp_word) DIGIT_BIT); -110 \} -111 -112 /* now we have to propagate the carries and -113 * shift the words downward [all those least -114 * significant digits we zeroed]. -115 */ -116 \{ -117 register mp_digit *tmpx; -118 register mp_word *_W, *_W1; -119 -120 /* nox fix rest of carries */ -121 -122 /* alias for current word */ -123 _W1 = W + ix; -124 -125 /* alias for next word, where the carry goes */ -126 _W = W + ++ix; -127 -128 for (; ix <= n->used * 2 + 1; ix++) \{ -129 *_W++ += *_W1++ >> ((mp_word) DIGIT_BIT); -130 \} -131 -132 /* copy out, A = A/b**n -133 * -134 * The result is A/b**n but instead of converting from an -135 * array of mp_word to mp_digit than calling mp_rshd -136 * we just copy them in the right order -137 */ -138 -139 /* alias for destination word */ -140 tmpx = x->dp; -141 -142 /* alias for shifted double precision result */ -143 _W = W + n->used; -144 -145 for (ix = 0; ix < n->used + 1; ix++) \{ -146 *tmpx++ = (mp_digit)(*_W++ & ((mp_word) MP_MASK)); -147 \} -148 -149 /* zero oldused digits, if the input a was larger than -150 * m->used+1 we'll have to clear the digits -151 */ -152 for (; ix < olduse; ix++) \{ -153 *tmpx++ = 0; -154 \} -155 \} -156 -157 /* set the max used and clamp */ -158 x->used = n->used + 1; -159 mp_clamp (x); -160 -161 /* if A >= m then A = A - m */ -162 if (mp_cmp_mag (x, n) != MP_LT) \{ -163 return s_mp_sub (x, n, x); -164 \} -165 return MP_OKAY; -166 \} -167 #endif -168 \end{alltt} \end{small} -The $\hat W$ array is first filled with digits of $x$ on line 50 then the rest of the digits are zeroed on line 54. Both loops share +The $\hat W$ array is first filled with digits of $x$ on line 48 then the rest of the digits are zeroed on line 55. Both loops share the same alias variables to make the code easier to read. The value of $\mu$ is calculated in an interesting fashion. First the value $\hat W_{ix}$ is reduced modulo $\beta$ and cast to a mp\_digit. This -forces the compiler to use a single precision multiplication and prevents any concerns about loss of precision. Line 109 fixes the carry +forces the compiler to use a single precision multiplication and prevents any concerns about loss of precision. Line 110 fixes the carry for the next iteration of the loop by propagating the carry from $\hat W_{ix}$ to $\hat W_{ix+1}$. -The for loop on line 108 propagates the rest of the carries upwards through the columns. The for loop on line 125 reduces the columns +The for loop on line 109 propagates the rest of the carries upwards through the columns. The for loop on line 126 reduces the columns modulo $\beta$ and shifts them $k$ places at the same time. The alias $\_ \hat W$ actually refers to the array $\hat W$ starting at the $n.used$'th digit, that is $\_ \hat W_{t} = \hat W_{n.used + t}$. @@ -6564,46 +4255,6 @@ to calculate $1/n_0$ when $\beta$ is a power of two. \hspace{-5.1mm}{\bf File}: bn\_mp\_montgomery\_setup.c \vspace{-3mm} \begin{alltt} -016 -017 /* setups the montgomery reduction stuff */ -018 int -019 mp_montgomery_setup (mp_int * n, mp_digit * rho) -020 \{ -021 mp_digit x, b; -022 -023 /* fast inversion mod 2**k -024 * -025 * Based on the fact that -026 * -027 * XA = 1 (mod 2**n) => (X(2-XA)) A = 1 (mod 2**2n) -028 * => 2*X*A - X*X*A*A = 1 -029 * => 2*(1) - (1) = 1 -030 */ -031 b = n->dp[0]; -032 -033 if ((b & 1) == 0) \{ -034 return MP_VAL; -035 \} -036 -037 x = (((b + 2) & 4) << 1) + b; /* here x*a==1 mod 2**4 */ -038 x *= 2 - b * x; /* here x*a==1 mod 2**8 */ -039 #if !defined(MP_8BIT) -040 x *= 2 - b * x; /* here x*a==1 mod 2**16 */ -041 #endif -042 #if defined(MP_64BIT) || !(defined(MP_8BIT) || defined(MP_16BIT)) -043 x *= 2 - b * x; /* here x*a==1 mod 2**32 */ -044 #endif -045 #ifdef MP_64BIT -046 x *= 2 - b * x; /* here x*a==1 mod 2**64 */ -047 #endif -048 -049 /* rho = -1/m mod b */ -050 *rho = (((mp_word)1 << ((mp_word) DIGIT_BIT)) - x) & MP_MASK; -051 -052 return MP_OKAY; -053 \} -054 #endif -055 \end{alltt} \end{small} @@ -6796,97 +4447,22 @@ at step 3. \hspace{-5.1mm}{\bf File}: bn\_mp\_dr\_reduce.c \vspace{-3mm} \begin{alltt} -016 -017 /* reduce "x" in place modulo "n" using the Diminished Radix algorithm. -018 * -019 * Based on algorithm from the paper -020 * -021 * "Generating Efficient Primes for Discrete Log Cryptosystems" -022 * Chae Hoon Lim, Pil Joong Lee, -023 * POSTECH Information Research Laboratories -024 * -025 * The modulus must be of a special format [see manual] -026 * -027 * Has been modified to use algorithm 7.10 from the LTM book instead -028 * -029 * Input x must be in the range 0 <= x <= (n-1)**2 -030 */ -031 int -032 mp_dr_reduce (mp_int * x, mp_int * n, mp_digit k) -033 \{ -034 int err, i, m; -035 mp_word r; -036 mp_digit mu, *tmpx1, *tmpx2; -037 -038 /* m = digits in modulus */ -039 m = n->used; -040 -041 /* ensure that "x" has at least 2m digits */ -042 if (x->alloc < m + m) \{ -043 if ((err = mp_grow (x, m + m)) != MP_OKAY) \{ -044 return err; -045 \} -046 \} -047 -048 /* top of loop, this is where the code resumes if -049 * another reduction pass is required. -050 */ -051 top: -052 /* aliases for digits */ -053 /* alias for lower half of x */ -054 tmpx1 = x->dp; -055 -056 /* alias for upper half of x, or x/B**m */ -057 tmpx2 = x->dp + m; -058 -059 /* set carry to zero */ -060 mu = 0; -061 -062 /* compute (x mod B**m) + k * [x/B**m] inline and inplace */ -063 for (i = 0; i < m; i++) \{ -064 r = ((mp_word)*tmpx2++) * ((mp_word)k) + *tmpx1 + mu; -065 *tmpx1++ = (mp_digit)(r & MP_MASK); -066 mu = (mp_digit)(r >> ((mp_word)DIGIT_BIT)); -067 \} -068 -069 /* set final carry */ -070 *tmpx1++ = mu; -071 -072 /* zero words above m */ -073 for (i = m + 1; i < x->used; i++) \{ -074 *tmpx1++ = 0; -075 \} -076 -077 /* clamp, sub and return */ -078 mp_clamp (x); -079 -080 /* if x >= n then subtract and reduce again -081 * Each successive "recursion" makes the input smaller and smaller. -082 */ -083 if (mp_cmp_mag (x, n) != MP_LT) \{ -084 s_mp_sub(x, n, x); -085 goto top; -086 \} -087 return MP_OKAY; -088 \} -089 #endif -090 \end{alltt} \end{small} -The first step is to grow $x$ as required to $2m$ digits since the reduction is performed in place on $x$. The label on line 51 is where +The first step is to grow $x$ as required to $2m$ digits since the reduction is performed in place on $x$. The label on line 52 is where the algorithm will resume if further reduction passes are required. In theory it could be placed at the top of the function however, the size of the modulus and question of whether $x$ is large enough are invariant after the first pass meaning that it would be a waste of time. The aliases $tmpx1$ and $tmpx2$ refer to the digits of $x$ where the latter is offset by $m$ digits. By reading digits from $x$ offset by $m$ digits -a division by $\beta^m$ can be simulated virtually for free. The loop on line 63 performs the bulk of the work (\textit{corresponds to step 4 of algorithm 7.11}) +a division by $\beta^m$ can be simulated virtually for free. The loop on line 64 performs the bulk of the work (\textit{corresponds to step 4 of algorithm 7.11}) in this algorithm. -By line 70 the pointer $tmpx1$ points to the $m$'th digit of $x$ which is where the final carry will be placed. Similarly by line 73 the +By line 67 the pointer $tmpx1$ points to the $m$'th digit of $x$ which is where the final carry will be placed. Similarly by line 74 the same pointer will point to the $m+1$'th digit where the zeroes will be placed. Since the algorithm is only valid if both $x$ and $n$ are greater than zero an unsigned comparison suffices to determine if another pass is required. -With the same logic at line 84 the value of $x$ is known to be greater than or equal to $n$ meaning that an unsigned subtraction can be used +With the same logic at line 81 the value of $x$ is known to be greater than or equal to $n$ meaning that an unsigned subtraction can be used as well. Since the destination of the subtraction is the larger of the inputs the call to algorithm s\_mp\_sub cannot fail and the return code does not need to be checked. @@ -6914,19 +4490,6 @@ completeness. \hspace{-5.1mm}{\bf File}: bn\_mp\_dr\_setup.c \vspace{-3mm} \begin{alltt} -016 -017 /* determines the setup value */ -018 void mp_dr_setup(mp_int *a, mp_digit *d) -019 \{ -020 /* the casts are required if DIGIT_BIT is one less than -021 * the number of bits in a mp_digit [e.g. DIGIT_BIT==31] -022 */ -023 *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) - -024 ((mp_word)a->dp[0])); -025 \} -026 -027 #endif -028 \end{alltt} \end{small} @@ -6962,30 +4525,6 @@ step 3 then $n$ must be of Diminished Radix form. \hspace{-5.1mm}{\bf File}: bn\_mp\_dr\_is\_modulus.c \vspace{-3mm} \begin{alltt} -016 -017 /* determines if a number is a valid DR modulus */ -018 int mp_dr_is_modulus(mp_int *a) -019 \{ -020 int ix; -021 -022 /* must be at least two digits */ -023 if (a->used < 2) \{ -024 return 0; -025 \} -026 -027 /* must be of the form b**k - a [a <= b] so all -028 * but the first digit must be equal to -1 (mod b). -029 */ -030 for (ix = 1; ix < a->used; ix++) \{ -031 if (a->dp[ix] != MP_MASK) \{ -032 return 0; -033 \} -034 \} -035 return 1; -036 \} -037 -038 #endif -039 \end{alltt} \end{small} @@ -7029,53 +4568,11 @@ shift which makes the algorithm fairly inexpensive to use. \hspace{-5.1mm}{\bf File}: bn\_mp\_reduce\_2k.c \vspace{-3mm} \begin{alltt} -016 -017 /* reduces a modulo n where n is of the form 2**p - d */ -018 int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) -019 \{ -020 mp_int q; -021 int p, res; -022 -023 if ((res = mp_init(&q)) != MP_OKAY) \{ -024 return res; -025 \} -026 -027 p = mp_count_bits(n); -028 top: -029 /* q = a/2**p, a = a mod 2**p */ -030 if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) \{ -031 goto ERR; -032 \} -033 -034 if (d != 1) \{ -035 /* q = q * d */ -036 if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) \{ -037 goto ERR; -038 \} -039 \} -040 -041 /* a = a + q */ -042 if ((res = s_mp_add(a, &q, a)) != MP_OKAY) \{ -043 goto ERR; -044 \} -045 -046 if (mp_cmp_mag(a, n) != MP_LT) \{ -047 s_mp_sub(a, n, a); -048 goto top; -049 \} -050 -051 ERR: -052 mp_clear(&q); -053 return res; -054 \} -055 -056 #endif -057 \end{alltt} \end{small} The algorithm mp\_count\_bits calculates the number of bits in an mp\_int which is used to find the initial value of $p$. The call to mp\_div\_2d -on line 30 calculates both the quotient $q$ and the remainder $a$ required. By doing both in a single function call the code size +on line 31 calculates both the quotient $q$ and the remainder $a$ required. By doing both in a single function call the code size is kept fairly small. The multiplication by $k$ is only performed if $k > 1$. This allows reductions modulo $2^p - 1$ to be performed without any multiplications. @@ -7113,34 +4610,6 @@ is sufficient to solve for $k$. Alternatively if $n$ has more than one digit th \hspace{-5.1mm}{\bf File}: bn\_mp\_reduce\_2k\_setup.c \vspace{-3mm} \begin{alltt} -016 -017 /* determines the setup value */ -018 int mp_reduce_2k_setup(mp_int *a, mp_digit *d) -019 \{ -020 int res, p; -021 mp_int tmp; -022 -023 if ((res = mp_init(&tmp)) != MP_OKAY) \{ -024 return res; -025 \} -026 -027 p = mp_count_bits(a); -028 if ((res = mp_2expt(&tmp, p)) != MP_OKAY) \{ -029 mp_clear(&tmp); -030 return res; -031 \} -032 -033 if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) \{ -034 mp_clear(&tmp); -035 return res; -036 \} -037 -038 *d = tmp.dp[0]; -039 mp_clear(&tmp); -040 return MP_OKAY; -041 \} -042 #endif -043 \end{alltt} \end{small} @@ -7185,39 +4654,6 @@ This algorithm quickly determines if a modulus is of the form required for algor \hspace{-5.1mm}{\bf File}: bn\_mp\_reduce\_is\_2k.c \vspace{-3mm} \begin{alltt} -016 -017 /* determines if mp_reduce_2k can be used */ -018 int mp_reduce_is_2k(mp_int *a) -019 \{ -020 int ix, iy, iw; -021 mp_digit iz; -022 -023 if (a->used == 0) \{ -024 return MP_NO; -025 \} else if (a->used == 1) \{ -026 return MP_YES; -027 \} else if (a->used > 1) \{ -028 iy = mp_count_bits(a); -029 iz = 1; -030 iw = 1; -031 -032 /* Test every bit from the second digit up, must be 1 */ -033 for (ix = DIGIT_BIT; ix < iy; ix++) \{ -034 if ((a->dp[iw] & iz) == 0) \{ -035 return MP_NO; -036 \} -037 iz <<= 1; -038 if (iz > (mp_digit)MP_MASK) \{ -039 ++iw; -040 iz = 1; -041 \} -042 \} -043 \} -044 return MP_YES; -045 \} -046 -047 #endif -048 \end{alltt} \end{small} @@ -7390,51 +4826,13 @@ iteration of the loop moves the bits of the exponent $b$ upwards to the most sig \hspace{-5.1mm}{\bf File}: bn\_mp\_expt\_d.c \vspace{-3mm} \begin{alltt} -016 -017 /* calculate c = a**b using a square-multiply algorithm */ -018 int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) -019 \{ -020 int res, x; -021 mp_int g; -022 -023 if ((res = mp_init_copy (&g, a)) != MP_OKAY) \{ -024 return res; -025 \} -026 -027 /* set initial result */ -028 mp_set (c, 1); -029 -030 for (x = 0; x < (int) DIGIT_BIT; x++) \{ -031 /* square */ -032 if ((res = mp_sqr (c, c)) != MP_OKAY) \{ -033 mp_clear (&g); -034 return res; -035 \} -036 -037 /* if the bit is set multiply */ -038 if ((b & (mp_digit) (((mp_digit)1) << (DIGIT_BIT - 1))) != 0) \{ -039 if ((res = mp_mul (c, &g, c)) != MP_OKAY) \{ -040 mp_clear (&g); -041 return res; -042 \} -043 \} -044 -045 /* shift to next bit */ -046 b <<= 1; -047 \} -048 -049 mp_clear (&g); -050 return MP_OKAY; -051 \} -052 #endif -053 \end{alltt} \end{small} -Line 28 sets the initial value of the result to $1$. Next the loop on line 30 steps through each bit of the exponent starting from -the most significant down towards the least significant. The invariant squaring operation placed on line 32 is performed first. After +Line 29 sets the initial value of the result to $1$. Next the loop on line 31 steps through each bit of the exponent starting from +the most significant down towards the least significant. The invariant squaring operation placed on line 33 is performed first. After the squaring the result $c$ is multiplied by the base $g$ if and only if the most significant bit of the exponent is set. The shift on line -46 moves all of the bits of the exponent upwards towards the most significant location. +47 moves all of the bits of the exponent upwards towards the most significant location. \section{$k$-ary Exponentiation} When calculating an exponentiation the most time consuming bottleneck is the multiplications which are in general a small factor @@ -7615,110 +5013,16 @@ algorithm since their arguments are essentially the same (\textit{two mp\_ints a \hspace{-5.1mm}{\bf File}: bn\_mp\_exptmod.c \vspace{-3mm} \begin{alltt} -016 -017 -018 /* this is a shell function that calls either the normal or Montgomery -019 * exptmod functions. Originally the call to the montgomery code was -020 * embedded in the normal function but that wasted alot of stack space -021 * for nothing (since 99% of the time the Montgomery code would be called) -022 */ -023 int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) -024 \{ -025 int dr; -026 -027 /* modulus P must be positive */ -028 if (P->sign == MP_NEG) \{ -029 return MP_VAL; -030 \} -031 -032 /* if exponent X is negative we have to recurse */ -033 if (X->sign == MP_NEG) \{ -034 #ifdef BN_MP_INVMOD_C -035 mp_int tmpG, tmpX; -036 int err; -037 -038 /* first compute 1/G mod P */ -039 if ((err = mp_init(&tmpG)) != MP_OKAY) \{ -040 return err; -041 \} -042 if ((err = mp_invmod(G, P, &tmpG)) != MP_OKAY) \{ -043 mp_clear(&tmpG); -044 return err; -045 \} -046 -047 /* now get |X| */ -048 if ((err = mp_init(&tmpX)) != MP_OKAY) \{ -049 mp_clear(&tmpG); -050 return err; -051 \} -052 if ((err = mp_abs(X, &tmpX)) != MP_OKAY) \{ -053 mp_clear_multi(&tmpG, &tmpX, NULL); -054 return err; -055 \} -056 -057 /* and now compute (1/G)**|X| instead of G**X [X < 0] */ -058 err = mp_exptmod(&tmpG, &tmpX, P, Y); -059 mp_clear_multi(&tmpG, &tmpX, NULL); -060 return err; -061 #else -062 /* no invmod */ -063 return MP_VAL; -064 #endif -065 \} -066 -067 /* modified diminished radix reduction */ -068 #if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) && defin - ed(BN_S_MP_EXPTMOD_C) -069 if (mp_reduce_is_2k_l(P) == MP_YES) \{ -070 return s_mp_exptmod(G, X, P, Y, 1); -071 \} -072 #endif -073 -074 #ifdef BN_MP_DR_IS_MODULUS_C -075 /* is it a DR modulus? */ -076 dr = mp_dr_is_modulus(P); -077 #else -078 /* default to no */ -079 dr = 0; -080 #endif -081 -082 #ifdef BN_MP_REDUCE_IS_2K_C -083 /* if not, is it a unrestricted DR modulus? */ -084 if (dr == 0) \{ -085 dr = mp_reduce_is_2k(P) << 1; -086 \} -087 #endif -088 -089 /* if the modulus is odd or dr != 0 use the montgomery method */ -090 #ifdef BN_MP_EXPTMOD_FAST_C -091 if (mp_isodd (P) == 1 || dr != 0) \{ -092 return mp_exptmod_fast (G, X, P, Y, dr); -093 \} else \{ -094 #endif -095 #ifdef BN_S_MP_EXPTMOD_C -096 /* otherwise use the generic Barrett reduction technique */ -097 return s_mp_exptmod (G, X, P, Y, 0); -098 #else -099 /* no exptmod for evens */ -100 return MP_VAL; -101 #endif -102 #ifdef BN_MP_EXPTMOD_FAST_C -103 \} -104 #endif -105 \} -106 -107 #endif -108 \end{alltt} \end{small} -In order to keep the algorithms in a known state the first step on line 28 is to reject any negative modulus as input. If the exponent is +In order to keep the algorithms in a known state the first step on line 29 is to reject any negative modulus as input. If the exponent is negative the algorithm tries to perform a modular exponentiation with the modular inverse of the base $G$. The temporary variable $tmpG$ is assigned the modular inverse of $G$ and $tmpX$ is assigned the absolute value of $X$. The algorithm will recuse with these new values with a positive exponent. -If the exponent is positive the algorithm resumes the exponentiation. Line 76 determines if the modulus is of the restricted Diminished Radix -form. If it is not line 69 attempts to determine if it is of a unrestricted Diminished Radix form. The integer $dr$ will take on one +If the exponent is positive the algorithm resumes the exponentiation. Line 77 determines if the modulus is of the restricted Diminished Radix +form. If it is not line 70 attempts to determine if it is of a unrestricted Diminished Radix form. The integer $dr$ will take on one of three values. \begin{enumerate} @@ -7888,252 +5192,18 @@ a Left-to-Right algorithm is used to process the remaining few bits. \hspace{-5.1mm}{\bf File}: bn\_s\_mp\_exptmod.c \vspace{-3mm} \begin{alltt} -016 #ifdef MP_LOW_MEM -017 #define TAB_SIZE 32 -018 #else -019 #define TAB_SIZE 256 -020 #endif -021 -022 int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmod - e) -023 \{ -024 mp_int M[TAB_SIZE], res, mu; -025 mp_digit buf; -026 int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; -027 int (*redux)(mp_int*,mp_int*,mp_int*); -028 -029 /* find window size */ -030 x = mp_count_bits (X); -031 if (x <= 7) \{ -032 winsize = 2; -033 \} else if (x <= 36) \{ -034 winsize = 3; -035 \} else if (x <= 140) \{ -036 winsize = 4; -037 \} else if (x <= 450) \{ -038 winsize = 5; -039 \} else if (x <= 1303) \{ -040 winsize = 6; -041 \} else if (x <= 3529) \{ -042 winsize = 7; -043 \} else \{ -044 winsize = 8; -045 \} -046 -047 #ifdef MP_LOW_MEM -048 if (winsize > 5) \{ -049 winsize = 5; -050 \} -051 #endif -052 -053 /* init M array */ -054 /* init first cell */ -055 if ((err = mp_init(&M[1])) != MP_OKAY) \{ -056 return err; -057 \} -058 -059 /* now init the second half of the array */ -060 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ -061 if ((err = mp_init(&M[x])) != MP_OKAY) \{ -062 for (y = 1<<(winsize-1); y < x; y++) \{ -063 mp_clear (&M[y]); -064 \} -065 mp_clear(&M[1]); -066 return err; -067 \} -068 \} -069 -070 /* create mu, used for Barrett reduction */ -071 if ((err = mp_init (&mu)) != MP_OKAY) \{ -072 goto LBL_M; -073 \} -074 -075 if (redmode == 0) \{ -076 if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) \{ -077 goto LBL_MU; -078 \} -079 redux = mp_reduce; -080 \} else \{ -081 if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) \{ -082 goto LBL_MU; -083 \} -084 redux = mp_reduce_2k_l; -085 \} -086 -087 /* create M table -088 * -089 * The M table contains powers of the base, -090 * e.g. M[x] = G**x mod P -091 * -092 * The first half of the table is not -093 * computed though accept for M[0] and M[1] -094 */ -095 if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) \{ -096 goto LBL_MU; -097 \} -098 -099 /* compute the value at M[1<<(winsize-1)] by squaring -100 * M[1] (winsize-1) times -101 */ -102 if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) \{ -103 goto LBL_MU; -104 \} -105 -106 for (x = 0; x < (winsize - 1); x++) \{ -107 /* square it */ -108 if ((err = mp_sqr (&M[1 << (winsize - 1)], -109 &M[1 << (winsize - 1)])) != MP_OKAY) \{ -110 goto LBL_MU; -111 \} -112 -113 /* reduce modulo P */ -114 if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) \{ -115 goto LBL_MU; -116 \} -117 \} -118 -119 /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) -120 * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) -121 */ -122 for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) \{ -123 if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) \{ -124 goto LBL_MU; -125 \} -126 if ((err = redux (&M[x], P, &mu)) != MP_OKAY) \{ -127 goto LBL_MU; -128 \} -129 \} -130 -131 /* setup result */ -132 if ((err = mp_init (&res)) != MP_OKAY) \{ -133 goto LBL_MU; -134 \} -135 mp_set (&res, 1); -136 -137 /* set initial mode and bit cnt */ -138 mode = 0; -139 bitcnt = 1; -140 buf = 0; -141 digidx = X->used - 1; -142 bitcpy = 0; -143 bitbuf = 0; -144 -145 for (;;) \{ -146 /* grab next digit as required */ -147 if (--bitcnt == 0) \{ -148 /* if digidx == -1 we are out of digits */ -149 if (digidx == -1) \{ -150 break; -151 \} -152 /* read next digit and reset the bitcnt */ -153 buf = X->dp[digidx--]; -154 bitcnt = (int) DIGIT_BIT; -155 \} -156 -157 /* grab the next msb from the exponent */ -158 y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; -159 buf <<= (mp_digit)1; -160 -161 /* if the bit is zero and mode == 0 then we ignore it -162 * These represent the leading zero bits before the first 1 bit -163 * in the exponent. Technically this opt is not required but it -164 * does lower the # of trivial squaring/reductions used -165 */ -166 if (mode == 0 && y == 0) \{ -167 continue; -168 \} -169 -170 /* if the bit is zero and mode == 1 then we square */ -171 if (mode == 1 && y == 0) \{ -172 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -173 goto LBL_RES; -174 \} -175 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -176 goto LBL_RES; -177 \} -178 continue; -179 \} -180 -181 /* else we add it to the window */ -182 bitbuf |= (y << (winsize - ++bitcpy)); -183 mode = 2; -184 -185 if (bitcpy == winsize) \{ -186 /* ok window is filled so square as required and multiply */ -187 /* square first */ -188 for (x = 0; x < winsize; x++) \{ -189 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -190 goto LBL_RES; -191 \} -192 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -193 goto LBL_RES; -194 \} -195 \} -196 -197 /* then multiply */ -198 if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) \{ -199 goto LBL_RES; -200 \} -201 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -202 goto LBL_RES; -203 \} -204 -205 /* empty window and reset */ -206 bitcpy = 0; -207 bitbuf = 0; -208 mode = 1; -209 \} -210 \} -211 -212 /* if bits remain then square/multiply */ -213 if (mode == 2 && bitcpy > 0) \{ -214 /* square then multiply if the bit is set */ -215 for (x = 0; x < bitcpy; x++) \{ -216 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -217 goto LBL_RES; -218 \} -219 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -220 goto LBL_RES; -221 \} -222 -223 bitbuf <<= 1; -224 if ((bitbuf & (1 << winsize)) != 0) \{ -225 /* then multiply */ -226 if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) \{ -227 goto LBL_RES; -228 \} -229 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ -230 goto LBL_RES; -231 \} -232 \} -233 \} -234 \} -235 -236 mp_exch (&res, Y); -237 err = MP_OKAY; -238 LBL_RES:mp_clear (&res); -239 LBL_MU:mp_clear (&mu); -240 LBL_M: -241 mp_clear(&M[1]); -242 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ -243 mp_clear (&M[x]); -244 \} -245 return err; -246 \} -247 #endif -248 \end{alltt} \end{small} -Lines 31 through 41 determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted +Lines 32 through 46 determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted from smallest to greatest so that in each \textbf{if} statement only one condition must be tested. For example, by the \textbf{if} statement -on line 33 the value of $x$ is already known to be greater than $140$. +on line 38 the value of $x$ is already known to be greater than $140$. -The conditional piece of code beginning on line 47 allows the window size to be restricted to five bits. This logic is used to ensure +The conditional piece of code beginning on line 48 allows the window size to be restricted to five bits. This logic is used to ensure the table of precomputed powers of $G$ remains relatively small. -The for loop on line 60 initializes the $M$ array while lines 61 and 76 compute the value of $\mu$ required for -Barrett reduction. +The for loop on line 61 initializes the $M$ array while lines 72 and 77 through 86 initialize the reduction +function that will be used for this modulus. -- More later. @@ -8167,35 +5237,6 @@ equivalent to $m \cdot 2^k$. By this logic when $m = 1$ a quick power of two ca \hspace{-5.1mm}{\bf File}: bn\_mp\_2expt.c \vspace{-3mm} \begin{alltt} -016 -017 /* computes a = 2**b -018 * -019 * Simple algorithm which zeroes the int, grows it then just sets one bit -020 * as required. -021 */ -022 int -023 mp_2expt (mp_int * a, int b) -024 \{ -025 int res; -026 -027 /* zero a as per default */ -028 mp_zero (a); -029 -030 /* grow a to accomodate the single bit */ -031 if ((res = mp_grow (a, b / DIGIT_BIT + 1)) != MP_OKAY) \{ -032 return res; -033 \} -034 -035 /* set the used count of where the bit will go */ -036 a->used = b / DIGIT_BIT + 1; -037 -038 /* put the single bit in its place */ -039 a->dp[b / DIGIT_BIT] = ((mp_digit)1) << (b % DIGIT_BIT); -040 -041 return MP_OKAY; -042 \} -043 #endif -044 \end{alltt} \end{small} @@ -8444,279 +5485,6 @@ respectively be replaced with a zero. \hspace{-5.1mm}{\bf File}: bn\_mp\_div.c \vspace{-3mm} \begin{alltt} -016 -017 #ifdef BN_MP_DIV_SMALL -018 -019 /* slower bit-bang division... also smaller */ -020 int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d) -021 \{ -022 mp_int ta, tb, tq, q; -023 int res, n, n2; -024 -025 /* is divisor zero ? */ -026 if (mp_iszero (b) == 1) \{ -027 return MP_VAL; -028 \} -029 -030 /* if a < b then q=0, r = a */ -031 if (mp_cmp_mag (a, b) == MP_LT) \{ -032 if (d != NULL) \{ -033 res = mp_copy (a, d); -034 \} else \{ -035 res = MP_OKAY; -036 \} -037 if (c != NULL) \{ -038 mp_zero (c); -039 \} -040 return res; -041 \} -042 -043 /* init our temps */ -044 if ((res = mp_init_multi(&ta, &tb, &tq, &q, NULL) != MP_OKAY)) \{ -045 return res; -046 \} -047 -048 -049 mp_set(&tq, 1); -050 n = mp_count_bits(a) - mp_count_bits(b); -051 if (((res = mp_abs(a, &ta)) != MP_OKAY) || -052 ((res = mp_abs(b, &tb)) != MP_OKAY) || -053 ((res = mp_mul_2d(&tb, n, &tb)) != MP_OKAY) || -054 ((res = mp_mul_2d(&tq, n, &tq)) != MP_OKAY)) \{ -055 goto LBL_ERR; -056 \} -057 -058 while (n-- >= 0) \{ -059 if (mp_cmp(&tb, &ta) != MP_GT) \{ -060 if (((res = mp_sub(&ta, &tb, &ta)) != MP_OKAY) || -061 ((res = mp_add(&q, &tq, &q)) != MP_OKAY)) \{ -062 goto LBL_ERR; -063 \} -064 \} -065 if (((res = mp_div_2d(&tb, 1, &tb, NULL)) != MP_OKAY) || -066 ((res = mp_div_2d(&tq, 1, &tq, NULL)) != MP_OKAY)) \{ -067 goto LBL_ERR; -068 \} -069 \} -070 -071 /* now q == quotient and ta == remainder */ -072 n = a->sign; -073 n2 = (a->sign == b->sign ? MP_ZPOS : MP_NEG); -074 if (c != NULL) \{ -075 mp_exch(c, &q); -076 c->sign = (mp_iszero(c) == MP_YES) ? MP_ZPOS : n2; -077 \} -078 if (d != NULL) \{ -079 mp_exch(d, &ta); -080 d->sign = (mp_iszero(d) == MP_YES) ? MP_ZPOS : n; -081 \} -082 LBL_ERR: -083 mp_clear_multi(&ta, &tb, &tq, &q, NULL); -084 return res; -085 \} -086 -087 #else -088 -089 /* integer signed division. -090 * c*b + d == a [e.g. a/b, c=quotient, d=remainder] -091 * HAC pp.598 Algorithm 14.20 -092 * -093 * Note that the description in HAC is horribly -094 * incomplete. For example, it doesn't consider -095 * the case where digits are removed from 'x' in -096 * the inner loop. It also doesn't consider the -097 * case that y has fewer than three digits, etc.. -098 * -099 * The overall algorithm is as described as -100 * 14.20 from HAC but fixed to treat these cases. -101 */ -102 int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) -103 \{ -104 mp_int q, x, y, t1, t2; -105 int res, n, t, i, norm, neg; -106 -107 /* is divisor zero ? */ -108 if (mp_iszero (b) == 1) \{ -109 return MP_VAL; -110 \} -111 -112 /* if a < b then q=0, r = a */ -113 if (mp_cmp_mag (a, b) == MP_LT) \{ -114 if (d != NULL) \{ -115 res = mp_copy (a, d); -116 \} else \{ -117 res = MP_OKAY; -118 \} -119 if (c != NULL) \{ -120 mp_zero (c); -121 \} -122 return res; -123 \} -124 -125 if ((res = mp_init_size (&q, a->used + 2)) != MP_OKAY) \{ -126 return res; -127 \} -128 q.used = a->used + 2; -129 -130 if ((res = mp_init (&t1)) != MP_OKAY) \{ -131 goto LBL_Q; -132 \} -133 -134 if ((res = mp_init (&t2)) != MP_OKAY) \{ -135 goto LBL_T1; -136 \} -137 -138 if ((res = mp_init_copy (&x, a)) != MP_OKAY) \{ -139 goto LBL_T2; -140 \} -141 -142 if ((res = mp_init_copy (&y, b)) != MP_OKAY) \{ -143 goto LBL_X; -144 \} -145 -146 /* fix the sign */ -147 neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; -148 x.sign = y.sign = MP_ZPOS; -149 -150 /* normalize both x and y, ensure that y >= b/2, [b == 2**DIGIT_BIT] */ -151 norm = mp_count_bits(&y) % DIGIT_BIT; -152 if (norm < (int)(DIGIT_BIT-1)) \{ -153 norm = (DIGIT_BIT-1) - norm; -154 if ((res = mp_mul_2d (&x, norm, &x)) != MP_OKAY) \{ -155 goto LBL_Y; -156 \} -157 if ((res = mp_mul_2d (&y, norm, &y)) != MP_OKAY) \{ -158 goto LBL_Y; -159 \} -160 \} else \{ -161 norm = 0; -162 \} -163 -164 /* note hac does 0 based, so if used==5 then its 0,1,2,3,4, e.g. use 4 */ -165 n = x.used - 1; -166 t = y.used - 1; -167 -168 /* while (x >= y*b**n-t) do \{ q[n-t] += 1; x -= y*b**\{n-t\} \} */ -169 if ((res = mp_lshd (&y, n - t)) != MP_OKAY) \{ /* y = y*b**\{n-t\} */ -170 goto LBL_Y; -171 \} -172 -173 while (mp_cmp (&x, &y) != MP_LT) \{ -174 ++(q.dp[n - t]); -175 if ((res = mp_sub (&x, &y, &x)) != MP_OKAY) \{ -176 goto LBL_Y; -177 \} -178 \} -179 -180 /* reset y by shifting it back down */ -181 mp_rshd (&y, n - t); -182 -183 /* step 3. for i from n down to (t + 1) */ -184 for (i = n; i >= (t + 1); i--) \{ -185 if (i > x.used) \{ -186 continue; -187 \} -188 -189 /* step 3.1 if xi == yt then set q\{i-t-1\} to b-1, -190 * otherwise set q\{i-t-1\} to (xi*b + x\{i-1\})/yt */ -191 if (x.dp[i] == y.dp[t]) \{ -192 q.dp[i - t - 1] = ((((mp_digit)1) << DIGIT_BIT) - 1); -193 \} else \{ -194 mp_word tmp; -195 tmp = ((mp_word) x.dp[i]) << ((mp_word) DIGIT_BIT); -196 tmp |= ((mp_word) x.dp[i - 1]); -197 tmp /= ((mp_word) y.dp[t]); -198 if (tmp > (mp_word) MP_MASK) -199 tmp = MP_MASK; -200 q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK)); -201 \} -202 -203 /* while (q\{i-t-1\} * (yt * b + y\{t-1\})) > -204 xi * b**2 + xi-1 * b + xi-2 -205 -206 do q\{i-t-1\} -= 1; -207 */ -208 q.dp[i - t - 1] = (q.dp[i - t - 1] + 1) & MP_MASK; -209 do \{ -210 q.dp[i - t - 1] = (q.dp[i - t - 1] - 1) & MP_MASK; -211 -212 /* find left hand */ -213 mp_zero (&t1); -214 t1.dp[0] = (t - 1 < 0) ? 0 : y.dp[t - 1]; -215 t1.dp[1] = y.dp[t]; -216 t1.used = 2; -217 if ((res = mp_mul_d (&t1, q.dp[i - t - 1], &t1)) != MP_OKAY) \{ -218 goto LBL_Y; -219 \} -220 -221 /* find right hand */ -222 t2.dp[0] = (i - 2 < 0) ? 0 : x.dp[i - 2]; -223 t2.dp[1] = (i - 1 < 0) ? 0 : x.dp[i - 1]; -224 t2.dp[2] = x.dp[i]; -225 t2.used = 3; -226 \} while (mp_cmp_mag(&t1, &t2) == MP_GT); -227 -228 /* step 3.3 x = x - q\{i-t-1\} * y * b**\{i-t-1\} */ -229 if ((res = mp_mul_d (&y, q.dp[i - t - 1], &t1)) != MP_OKAY) \{ -230 goto LBL_Y; -231 \} -232 -233 if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) \{ -234 goto LBL_Y; -235 \} -236 -237 if ((res = mp_sub (&x, &t1, &x)) != MP_OKAY) \{ -238 goto LBL_Y; -239 \} -240 -241 /* if x < 0 then \{ x = x + y*b**\{i-t-1\}; q\{i-t-1\} -= 1; \} */ -242 if (x.sign == MP_NEG) \{ -243 if ((res = mp_copy (&y, &t1)) != MP_OKAY) \{ -244 goto LBL_Y; -245 \} -246 if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) \{ -247 goto LBL_Y; -248 \} -249 if ((res = mp_add (&x, &t1, &x)) != MP_OKAY) \{ -250 goto LBL_Y; -251 \} -252 -253 q.dp[i - t - 1] = (q.dp[i - t - 1] - 1UL) & MP_MASK; -254 \} -255 \} -256 -257 /* now q is the quotient and x is the remainder -258 * [which we have to normalize] -259 */ -260 -261 /* get sign before writing to c */ -262 x.sign = x.used == 0 ? MP_ZPOS : a->sign; -263 -264 if (c != NULL) \{ -265 mp_clamp (&q); -266 mp_exch (&q, c); -267 c->sign = neg; -268 \} -269 -270 if (d != NULL) \{ -271 mp_div_2d (&x, norm, &x, NULL); -272 mp_exch (&x, d); -273 \} -274 -275 res = MP_OKAY; -276 -277 LBL_Y:mp_clear (&y); -278 LBL_X:mp_clear (&x); -279 LBL_T2:mp_clear (&t2); -280 LBL_T1:mp_clear (&t1); -281 LBL_Q:mp_clear (&q); -282 return res; -283 \} -284 -285 #endif -286 -287 #endif -288 \end{alltt} \end{small} @@ -8728,23 +5496,23 @@ algorithm with only the quotient is mp_div(&a, &b, &c, NULL); /* c = [a/b] */ \end{verbatim} -Lines 37 and 44 handle the two trivial cases of inputs which are division by zero and dividend smaller than the divisor -respectively. After the two trivial cases all of the temporary variables are initialized. Line 105 determines the sign of -the quotient and line 76 ensures that both $x$ and $y$ are positive. +Lines 109 and 113 handle the two trivial cases of inputs which are division by zero and dividend smaller than the divisor +respectively. After the two trivial cases all of the temporary variables are initialized. Line 148 determines the sign of +the quotient and line 148 ensures that both $x$ and $y$ are positive. -The number of bits in the leading digit is calculated on line 105. Implictly an mp\_int with $r$ digits will require $lg(\beta)(r-1) + k$ bits +The number of bits in the leading digit is calculated on line 151. Implictly an mp\_int with $r$ digits will require $lg(\beta)(r-1) + k$ bits of precision which when reduced modulo $lg(\beta)$ produces the value of $k$. In this case $k$ is the number of bits in the leading digit which is exactly what is required. For the algorithm to operate $k$ must equal $lg(\beta) - 1$ and when it does not the inputs must be normalized by shifting them to the left by $lg(\beta) - 1 - k$ bits. Throughout the variables $n$ and $t$ will represent the highest digit of $x$ and $y$ respectively. These are first used to produce the -leading digit of the quotient. The loop beginning on line 183 will produce the remainder of the quotient digits. +leading digit of the quotient. The loop beginning on line 184 will produce the remainder of the quotient digits. -The conditional ``continue'' on line 114 is used to prevent the algorithm from reading past the leading edge of $x$ which can occur when the +The conditional ``continue'' on line 187 is used to prevent the algorithm from reading past the leading edge of $x$ which can occur when the algorithm eliminates multiple non-zero digits in a single iteration. This ensures that $x_i$ is always non-zero since by definition the digits above the $i$'th position $x$ must be zero in order for the quotient to be precise\footnote{Precise as far as integer division is concerned.}. -Lines 130, 130 and 134 through 134 manually construct the high accuracy estimations by setting the digits of the two mp\_int +Lines 214, 216 and 223 through 225 manually construct the high accuracy estimations by setting the digits of the two mp\_int variables directly. \section{Single Digit Helpers} @@ -8782,99 +5550,6 @@ This algorithm initiates a temporary mp\_int with the value of the single digit \hspace{-5.1mm}{\bf File}: bn\_mp\_add\_d.c \vspace{-3mm} \begin{alltt} -016 -017 /* single digit addition */ -018 int -019 mp_add_d (mp_int * a, mp_digit b, mp_int * c) -020 \{ -021 int res, ix, oldused; -022 mp_digit *tmpa, *tmpc, mu; -023 -024 /* grow c as required */ -025 if (c->alloc < a->used + 1) \{ -026 if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) \{ -027 return res; -028 \} -029 \} -030 -031 /* if a is negative and |a| >= b, call c = |a| - b */ -032 if (a->sign == MP_NEG && (a->used > 1 || a->dp[0] >= b)) \{ -033 /* temporarily fix sign of a */ -034 a->sign = MP_ZPOS; -035 -036 /* c = |a| - b */ -037 res = mp_sub_d(a, b, c); -038 -039 /* fix sign */ -040 a->sign = c->sign = MP_NEG; -041 -042 /* clamp */ -043 mp_clamp(c); -044 -045 return res; -046 \} -047 -048 /* old number of used digits in c */ -049 oldused = c->used; -050 -051 /* sign always positive */ -052 c->sign = MP_ZPOS; -053 -054 /* source alias */ -055 tmpa = a->dp; -056 -057 /* destination alias */ -058 tmpc = c->dp; -059 -060 /* if a is positive */ -061 if (a->sign == MP_ZPOS) \{ -062 /* add digit, after this we're propagating -063 * the carry. -064 */ -065 *tmpc = *tmpa++ + b; -066 mu = *tmpc >> DIGIT_BIT; -067 *tmpc++ &= MP_MASK; -068 -069 /* now handle rest of the digits */ -070 for (ix = 1; ix < a->used; ix++) \{ -071 *tmpc = *tmpa++ + mu; -072 mu = *tmpc >> DIGIT_BIT; -073 *tmpc++ &= MP_MASK; -074 \} -075 /* set final carry */ -076 ix++; -077 *tmpc++ = mu; -078 -079 /* setup size */ -080 c->used = a->used + 1; -081 \} else \{ -082 /* a was negative and |a| < b */ -083 c->used = 1; -084 -085 /* the result is a single digit */ -086 if (a->used == 1) \{ -087 *tmpc++ = b - a->dp[0]; -088 \} else \{ -089 *tmpc++ = b; -090 \} -091 -092 /* setup count so the clearing of oldused -093 * can fall through correctly -094 */ -095 ix = 1; -096 \} -097 -098 /* now zero to oldused */ -099 while (ix++ < oldused) \{ -100 *tmpc++ = 0; -101 \} -102 mp_clamp(c); -103 -104 return MP_OKAY; -105 \} -106 -107 #endif -108 \end{alltt} \end{small} @@ -8925,66 +5600,6 @@ Unlike the full multiplication algorithms this algorithm does not require any si \hspace{-5.1mm}{\bf File}: bn\_mp\_mul\_d.c \vspace{-3mm} \begin{alltt} -016 -017 /* multiply by a digit */ -018 int -019 mp_mul_d (mp_int * a, mp_digit b, mp_int * c) -020 \{ -021 mp_digit u, *tmpa, *tmpc; -022 mp_word r; -023 int ix, res, olduse; -024 -025 /* make sure c is big enough to hold a*b */ -026 if (c->alloc < a->used + 1) \{ -027 if ((res = mp_grow (c, a->used + 1)) != MP_OKAY) \{ -028 return res; -029 \} -030 \} -031 -032 /* get the original destinations used count */ -033 olduse = c->used; -034 -035 /* set the sign */ -036 c->sign = a->sign; -037 -038 /* alias for a->dp [source] */ -039 tmpa = a->dp; -040 -041 /* alias for c->dp [dest] */ -042 tmpc = c->dp; -043 -044 /* zero carry */ -045 u = 0; -046 -047 /* compute columns */ -048 for (ix = 0; ix < a->used; ix++) \{ -049 /* compute product and carry sum for this term */ -050 r = ((mp_word) u) + ((mp_word)*tmpa++) * ((mp_word)b); -051 -052 /* mask off higher bits to get a single digit */ -053 *tmpc++ = (mp_digit) (r & ((mp_word) MP_MASK)); -054 -055 /* send carry into next iteration */ -056 u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); -057 \} -058 -059 /* store final carry [if any] and increment ix offset */ -060 *tmpc++ = u; -061 ++ix; -062 -063 /* now zero digits above the top */ -064 while (ix++ < olduse) \{ -065 *tmpc++ = 0; -066 \} -067 -068 /* set used count */ -069 c->used = a->used + 1; -070 mp_clamp(c); -071 -072 return MP_OKAY; -073 \} -074 #endif -075 \end{alltt} \end{small} @@ -9040,104 +5655,13 @@ from chapter seven. \hspace{-5.1mm}{\bf File}: bn\_mp\_div\_d.c \vspace{-3mm} \begin{alltt} -016 -017 static int s_is_power_of_two(mp_digit b, int *p) -018 \{ -019 int x; -020 -021 for (x = 1; x < DIGIT_BIT; x++) \{ -022 if (b == (((mp_digit)1)<dp[0] & ((((mp_digit)1)<used)) != MP_OKAY) \{ -074 return res; -075 \} -076 -077 q.used = a->used; -078 q.sign = a->sign; -079 w = 0; -080 for (ix = a->used - 1; ix >= 0; ix--) \{ -081 w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]); -082 -083 if (w >= b) \{ -084 t = (mp_digit)(w / b); -085 w -= ((mp_word)t) * ((mp_word)b); -086 \} else \{ -087 t = 0; -088 \} -089 q.dp[ix] = (mp_digit)t; -090 \} -091 -092 if (d != NULL) \{ -093 *d = (mp_digit)w; -094 \} -095 -096 if (c != NULL) \{ -097 mp_clamp(&q); -098 mp_exch(&q, c); -099 \} -100 mp_clear(&q); -101 -102 return res; -103 \} -104 -105 #endif -106 \end{alltt} \end{small} Like the implementation of algorithm mp\_div this algorithm allows either of the quotient or remainder to be passed as a \textbf{NULL} pointer to indicate the respective value is not required. This allows a trivial single digit modular reduction algorithm, mp\_mod\_d to be created. -The division and remainder on lines 43 and @45,%@ can be replaced often by a single division on most processors. For example, the 32-bit x86 based +The division and remainder on lines 44 and @45,%@ can be replaced often by a single division on most processors. For example, the 32-bit x86 based processors can divide a 64-bit quantity by a 32-bit quantity and produce the quotient and remainder simultaneously. Unfortunately the GCC compiler does not recognize that optimization and will actually produce two function calls to find the quotient and remainder respectively. @@ -9205,119 +5729,6 @@ root. Ideally this algorithm is meant to find the $n$'th root of an input where \hspace{-5.1mm}{\bf File}: bn\_mp\_n\_root.c \vspace{-3mm} \begin{alltt} -016 -017 /* find the n'th root of an integer -018 * -019 * Result found such that (c)**b <= a and (c+1)**b > a -020 * -021 * This algorithm uses Newton's approximation -022 * x[i+1] = x[i] - f(x[i])/f'(x[i]) -023 * which will find the root in log(N) time where -024 * each step involves a fair bit. This is not meant to -025 * find huge roots [square and cube, etc]. -026 */ -027 int mp_n_root (mp_int * a, mp_digit b, mp_int * c) -028 \{ -029 mp_int t1, t2, t3; -030 int res, neg; -031 -032 /* input must be positive if b is even */ -033 if ((b & 1) == 0 && a->sign == MP_NEG) \{ -034 return MP_VAL; -035 \} -036 -037 if ((res = mp_init (&t1)) != MP_OKAY) \{ -038 return res; -039 \} -040 -041 if ((res = mp_init (&t2)) != MP_OKAY) \{ -042 goto LBL_T1; -043 \} -044 -045 if ((res = mp_init (&t3)) != MP_OKAY) \{ -046 goto LBL_T2; -047 \} -048 -049 /* if a is negative fudge the sign but keep track */ -050 neg = a->sign; -051 a->sign = MP_ZPOS; -052 -053 /* t2 = 2 */ -054 mp_set (&t2, 2); -055 -056 do \{ -057 /* t1 = t2 */ -058 if ((res = mp_copy (&t2, &t1)) != MP_OKAY) \{ -059 goto LBL_T3; -060 \} -061 -062 /* t2 = t1 - ((t1**b - a) / (b * t1**(b-1))) */ -063 -064 /* t3 = t1**(b-1) */ -065 if ((res = mp_expt_d (&t1, b - 1, &t3)) != MP_OKAY) \{ -066 goto LBL_T3; -067 \} -068 -069 /* numerator */ -070 /* t2 = t1**b */ -071 if ((res = mp_mul (&t3, &t1, &t2)) != MP_OKAY) \{ -072 goto LBL_T3; -073 \} -074 -075 /* t2 = t1**b - a */ -076 if ((res = mp_sub (&t2, a, &t2)) != MP_OKAY) \{ -077 goto LBL_T3; -078 \} -079 -080 /* denominator */ -081 /* t3 = t1**(b-1) * b */ -082 if ((res = mp_mul_d (&t3, b, &t3)) != MP_OKAY) \{ -083 goto LBL_T3; -084 \} -085 -086 /* t3 = (t1**b - a)/(b * t1**(b-1)) */ -087 if ((res = mp_div (&t2, &t3, &t3, NULL)) != MP_OKAY) \{ -088 goto LBL_T3; -089 \} -090 -091 if ((res = mp_sub (&t1, &t3, &t2)) != MP_OKAY) \{ -092 goto LBL_T3; -093 \} -094 \} while (mp_cmp (&t1, &t2) != MP_EQ); -095 -096 /* result can be off by a few so check */ -097 for (;;) \{ -098 if ((res = mp_expt_d (&t1, b, &t2)) != MP_OKAY) \{ -099 goto LBL_T3; -100 \} -101 -102 if (mp_cmp (&t2, a) == MP_GT) \{ -103 if ((res = mp_sub_d (&t1, 1, &t1)) != MP_OKAY) \{ -104 goto LBL_T3; -105 \} -106 \} else \{ -107 break; -108 \} -109 \} -110 -111 /* reset the sign of a first */ -112 a->sign = neg; -113 -114 /* set the result */ -115 mp_exch (&t1, c); -116 -117 /* set the sign of the result */ -118 c->sign = neg; -119 -120 res = MP_OKAY; -121 -122 LBL_T3:mp_clear (&t3); -123 LBL_T2:mp_clear (&t2); -124 LBL_T1:mp_clear (&t1); -125 return res; -126 \} -127 #endif -128 \end{alltt} \end{small} @@ -9359,42 +5770,6 @@ the integers from $0$ to $\beta - 1$. \hspace{-5.1mm}{\bf File}: bn\_mp\_rand.c \vspace{-3mm} \begin{alltt} -016 -017 /* makes a pseudo-random int of a given size */ -018 int -019 mp_rand (mp_int * a, int digits) -020 \{ -021 int res; -022 mp_digit d; -023 -024 mp_zero (a); -025 if (digits <= 0) \{ -026 return MP_OKAY; -027 \} -028 -029 /* first place a random non-zero digit */ -030 do \{ -031 d = ((mp_digit) abs (rand ())) & MP_MASK; -032 \} while (d == 0); -033 -034 if ((res = mp_add_d (a, d, a)) != MP_OKAY) \{ -035 return res; -036 \} -037 -038 while (--digits > 0) \{ -039 if ((res = mp_lshd (a, 1)) != MP_OKAY) \{ -040 return res; -041 \} -042 -043 if ((res = mp_add_d (a, ((mp_digit) abs (rand ())), a)) != MP_OKAY) \{ -044 return res; -045 \} -046 \} -047 -048 return MP_OKAY; -049 \} -050 #endif -051 \end{alltt} \end{small} @@ -9477,72 +5852,6 @@ as part of larger input without any significant problem. \hspace{-5.1mm}{\bf File}: bn\_mp\_read\_radix.c \vspace{-3mm} \begin{alltt} -016 -017 /* read a string [ASCII] in a given radix */ -018 int mp_read_radix (mp_int * a, const char *str, int radix) -019 \{ -020 int y, res, neg; -021 char ch; -022 -023 /* zero the digit bignum */ -024 mp_zero(a); -025 -026 /* make sure the radix is ok */ -027 if (radix < 2 || radix > 64) \{ -028 return MP_VAL; -029 \} -030 -031 /* if the leading digit is a -032 * minus set the sign to negative. -033 */ -034 if (*str == '-') \{ -035 ++str; -036 neg = MP_NEG; -037 \} else \{ -038 neg = MP_ZPOS; -039 \} -040 -041 /* set the integer to the default of zero */ -042 mp_zero (a); -043 -044 /* process each digit of the string */ -045 while (*str) \{ -046 /* if the radix < 36 the conversion is case insensitive -047 * this allows numbers like 1AB and 1ab to represent the same value -048 * [e.g. in hex] -049 */ -050 ch = (char) ((radix < 36) ? toupper (*str) : *str); -051 for (y = 0; y < 64; y++) \{ -052 if (ch == mp_s_rmap[y]) \{ -053 break; -054 \} -055 \} -056 -057 /* if the char was found in the map -058 * and is less than the given radix add it -059 * to the number, otherwise exit the loop. -060 */ -061 if (y < radix) \{ -062 if ((res = mp_mul_d (a, (mp_digit) radix, a)) != MP_OKAY) \{ -063 return res; -064 \} -065 if ((res = mp_add_d (a, (mp_digit) y, a)) != MP_OKAY) \{ -066 return res; -067 \} -068 \} else \{ -069 break; -070 \} -071 ++str; -072 \} -073 -074 /* set the sign only if a != 0 */ -075 if (mp_iszero(a) != 1) \{ -076 a->sign = neg; -077 \} -078 return MP_OKAY; -079 \} -080 #endif -081 \end{alltt} \end{small} @@ -9607,62 +5916,6 @@ are required instead of a series of $n \times k$ divisions. One design flaw of \hspace{-5.1mm}{\bf File}: bn\_mp\_toradix.c \vspace{-3mm} \begin{alltt} -016 -017 /* stores a bignum as a ASCII string in a given radix (2..64) */ -018 int mp_toradix (mp_int * a, char *str, int radix) -019 \{ -020 int res, digs; -021 mp_int t; -022 mp_digit d; -023 char *_s = str; -024 -025 /* check range of the radix */ -026 if (radix < 2 || radix > 64) \{ -027 return MP_VAL; -028 \} -029 -030 /* quick out if its zero */ -031 if (mp_iszero(a) == 1) \{ -032 *str++ = '0'; -033 *str = '\symbol{92}0'; -034 return MP_OKAY; -035 \} -036 -037 if ((res = mp_init_copy (&t, a)) != MP_OKAY) \{ -038 return res; -039 \} -040 -041 /* if it is negative output a - */ -042 if (t.sign == MP_NEG) \{ -043 ++_s; -044 *str++ = '-'; -045 t.sign = MP_ZPOS; -046 \} -047 -048 digs = 0; -049 while (mp_iszero (&t) == 0) \{ -050 if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) \{ -051 mp_clear (&t); -052 return res; -053 \} -054 *str++ = mp_s_rmap[d]; -055 ++digs; -056 \} -057 -058 /* reverse the digits of the string. In this case _s points -059 * to the first digit [exluding the sign] of the number] -060 */ -061 bn_reverse ((unsigned char *)_s, digs); -062 -063 /* append a NULL so the string is properly terminated */ -064 *str = '\symbol{92}0'; -065 -066 mp_clear (&t); -067 return MP_OKAY; -068 \} -069 -070 #endif -071 \end{alltt} \end{small} @@ -9792,33 +6045,30 @@ and will produce the greatest common divisor. \textbf{Input}. mp\_int $a$ and $b$ \\ \textbf{Output}. The greatest common divisor $c = (a, b)$. \\ \hline \\ -1. If $a = 0$ and $b \ne 0$ then \\ -\hspace{3mm}1.1 $c \leftarrow b$ \\ +1. If $a = 0$ then \\ +\hspace{3mm}1.1 $c \leftarrow \vert b \vert $ \\ \hspace{3mm}1.2 Return(\textit{MP\_OKAY}). \\ -2. If $a \ne 0$ and $b = 0$ then \\ -\hspace{3mm}2.1 $c \leftarrow a$ \\ +2. If $b = 0$ then \\ +\hspace{3mm}2.1 $c \leftarrow \vert a \vert $ \\ \hspace{3mm}2.2 Return(\textit{MP\_OKAY}). \\ -3. If $a = b = 0$ then \\ -\hspace{3mm}3.1 $c \leftarrow 1$ \\ -\hspace{3mm}3.2 Return(\textit{MP\_OKAY}). \\ -4. $u \leftarrow \vert a \vert, v \leftarrow \vert b \vert$ \\ -5. $k \leftarrow 0$ \\ -6. While $u.used > 0$ and $v.used > 0$ and $u_0 \equiv v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ -\hspace{3mm}6.1 $k \leftarrow k + 1$ \\ -\hspace{3mm}6.2 $u \leftarrow \lfloor u / 2 \rfloor$ \\ -\hspace{3mm}6.3 $v \leftarrow \lfloor v / 2 \rfloor$ \\ -7. While $u.used > 0$ and $u_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ -\hspace{3mm}7.1 $u \leftarrow \lfloor u / 2 \rfloor$ \\ -8. While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ -\hspace{3mm}8.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ -9. While $v.used > 0$ \\ -\hspace{3mm}9.1 If $\vert u \vert > \vert v \vert$ then \\ -\hspace{6mm}9.1.1 Swap $u$ and $v$. \\ -\hspace{3mm}9.2 $v \leftarrow \vert v \vert - \vert u \vert$ \\ -\hspace{3mm}9.3 While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ -\hspace{6mm}9.3.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ -10. $c \leftarrow u \cdot 2^k$ \\ -11. Return(\textit{MP\_OKAY}). \\ +3. $u \leftarrow \vert a \vert, v \leftarrow \vert b \vert$ \\ +4. $k \leftarrow 0$ \\ +5. While $u.used > 0$ and $v.used > 0$ and $u_0 \equiv v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}5.1 $k \leftarrow k + 1$ \\ +\hspace{3mm}5.2 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +\hspace{3mm}5.3 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +6. While $u.used > 0$ and $u_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}6.1 $u \leftarrow \lfloor u / 2 \rfloor$ \\ +7. While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{3mm}7.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +8. While $v.used > 0$ \\ +\hspace{3mm}8.1 If $\vert u \vert > \vert v \vert$ then \\ +\hspace{6mm}8.1.1 Swap $u$ and $v$. \\ +\hspace{3mm}8.2 $v \leftarrow \vert v \vert - \vert u \vert$ \\ +\hspace{3mm}8.3 While $v.used > 0$ and $v_0 \equiv 0 \mbox{ (mod }2\mbox{)}$ \\ +\hspace{6mm}8.3.1 $v \leftarrow \lfloor v / 2 \rfloor$ \\ +9. $c \leftarrow u \cdot 2^k$ \\ +10. Return(\textit{MP\_OKAY}). \\ \hline \end{tabular} \end{center} @@ -9830,17 +6080,17 @@ This algorithm will produce the greatest common divisor of two mp\_ints $a$ and Knuth \cite[pp. 338]{TAOCPV2} but has been modified to be simpler to explain. In theory it achieves the same asymptotic working time as Algorithm B and in practice this appears to be true. -The first three steps handle the cases where either one of or both inputs are zero. If either input is zero the greatest common divisor is the +The first two steps handle the cases where either one of or both inputs are zero. If either input is zero the greatest common divisor is the largest input or zero if they are both zero. If the inputs are not trivial than $u$ and $v$ are assigned the absolute values of $a$ and $b$ respectively and the algorithm will proceed to reduce the pair. -Step six will divide out any common factors of two and keep track of the count in the variable $k$. After this step two is no longer a +Step five will divide out any common factors of two and keep track of the count in the variable $k$. After this step, two is no longer a factor of the remaining greatest common divisor between $u$ and $v$ and can be safely evenly divided out of either whenever they are even. Step -seven and eight ensure that the $u$ and $v$ respectively have no more factors of two. At most only one of the while loops will iterate since +six and seven ensure that the $u$ and $v$ respectively have no more factors of two. At most only one of the while--loops will iterate since they cannot both be even. -By step nine both of $u$ and $v$ are odd which is required for the inner logic. First the pair are swapped such that $v$ is equal to -or greater than $u$. This ensures that the subtraction on step 9.2 will always produce a positive and even result. Step 9.3 removes any +By step eight both of $u$ and $v$ are odd which is required for the inner logic. First the pair are swapped such that $v$ is equal to +or greater than $u$. This ensures that the subtraction on step 8.2 will always produce a positive and even result. Step 8.3 removes any factors of two from the difference $u$ to ensure that in the next iteration of the loop both are once again odd. After $v = 0$ occurs the variable $u$ has the greatest common divisor of the pair $\left < u, v \right >$ just after step six. The result @@ -9850,117 +6100,23 @@ must be adjusted by multiplying by the common factors of two ($2^k$) removed ear \hspace{-5.1mm}{\bf File}: bn\_mp\_gcd.c \vspace{-3mm} \begin{alltt} -016 -017 /* Greatest Common Divisor using the binary method */ -018 int mp_gcd (mp_int * a, mp_int * b, mp_int * c) -019 \{ -020 mp_int u, v; -021 int k, u_lsb, v_lsb, res; -022 -023 /* either zero than gcd is the largest */ -024 if (mp_iszero (a) == 1 && mp_iszero (b) == 0) \{ -025 return mp_abs (b, c); -026 \} -027 if (mp_iszero (a) == 0 && mp_iszero (b) == 1) \{ -028 return mp_abs (a, c); -029 \} -030 -031 /* optimized. At this point if a == 0 then -032 * b must equal zero too -033 */ -034 if (mp_iszero (a) == 1) \{ -035 mp_zero(c); -036 return MP_OKAY; -037 \} -038 -039 /* get copies of a and b we can modify */ -040 if ((res = mp_init_copy (&u, a)) != MP_OKAY) \{ -041 return res; -042 \} -043 -044 if ((res = mp_init_copy (&v, b)) != MP_OKAY) \{ -045 goto LBL_U; -046 \} -047 -048 /* must be positive for the remainder of the algorithm */ -049 u.sign = v.sign = MP_ZPOS; -050 -051 /* B1. Find the common power of two for u and v */ -052 u_lsb = mp_cnt_lsb(&u); -053 v_lsb = mp_cnt_lsb(&v); -054 k = MIN(u_lsb, v_lsb); -055 -056 if (k > 0) \{ -057 /* divide the power of two out */ -058 if ((res = mp_div_2d(&u, k, &u, NULL)) != MP_OKAY) \{ -059 goto LBL_V; -060 \} -061 -062 if ((res = mp_div_2d(&v, k, &v, NULL)) != MP_OKAY) \{ -063 goto LBL_V; -064 \} -065 \} -066 -067 /* divide any remaining factors of two out */ -068 if (u_lsb != k) \{ -069 if ((res = mp_div_2d(&u, u_lsb - k, &u, NULL)) != MP_OKAY) \{ -070 goto LBL_V; -071 \} -072 \} -073 -074 if (v_lsb != k) \{ -075 if ((res = mp_div_2d(&v, v_lsb - k, &v, NULL)) != MP_OKAY) \{ -076 goto LBL_V; -077 \} -078 \} -079 -080 while (mp_iszero(&v) == 0) \{ -081 /* make sure v is the largest */ -082 if (mp_cmp_mag(&u, &v) == MP_GT) \{ -083 /* swap u and v to make sure v is >= u */ -084 mp_exch(&u, &v); -085 \} -086 -087 /* subtract smallest from largest */ -088 if ((res = s_mp_sub(&v, &u, &v)) != MP_OKAY) \{ -089 goto LBL_V; -090 \} -091 -092 /* Divide out all factors of two */ -093 if ((res = mp_div_2d(&v, mp_cnt_lsb(&v), &v, NULL)) != MP_OKAY) \{ -094 goto LBL_V; -095 \} -096 \} -097 -098 /* multiply by 2**k which we divided out at the beginning */ -099 if ((res = mp_mul_2d (&u, k, c)) != MP_OKAY) \{ -100 goto LBL_V; -101 \} -102 c->sign = MP_ZPOS; -103 res = MP_OKAY; -104 LBL_V:mp_clear (&u); -105 LBL_U:mp_clear (&v); -106 return res; -107 \} -108 #endif -109 \end{alltt} \end{small} This function makes use of the macros mp\_iszero and mp\_iseven. The former evaluates to $1$ if the input mp\_int is equivalent to the integer zero otherwise it evaluates to $0$. The latter evaluates to $1$ if the input mp\_int represents a non-zero even integer otherwise it evaluates to $0$. Note that just because mp\_iseven may evaluate to $0$ does not mean the input is odd, it could also be zero. The three -trivial cases of inputs are handled on lines 24 through 37. After those lines the inputs are assumed to be non-zero. +trivial cases of inputs are handled on lines 24 through 30. After those lines the inputs are assumed to be non-zero. -Lines 34 and 40 make local copies $u$ and $v$ of the inputs $a$ and $b$ respectively. At this point the common factors of two -must be divided out of the two inputs. The while loop on line 80 iterates so long as both are even. The local integer $k$ is used to -keep track of how many factors of $2$ are pulled out of both values. It is assumed that the number of factors will not exceed the maximum -value of a C ``int'' data type\footnote{Strictly speaking no array in C may have more than entries than are accessible by an ``int'' so this is not -a limitation.}. +Lines 32 and 37 make local copies $u$ and $v$ of the inputs $a$ and $b$ respectively. At this point the common factors of two +must be divided out of the two inputs. The block starting at line 44 removes common factors of two by first counting the number of trailing +zero bits in both. The local integer $k$ is used to keep track of how many factors of $2$ are pulled out of both values. It is assumed that +the number of factors will not exceed the maximum value of a C ``int'' data type\footnote{Strictly speaking no array in C may have more than +entries than are accessible by an ``int'' so this is not a limitation.}. -At this point there are no more common factors of two in the two values. The while loops on lines 80 and 80 remove any independent -factors of two such that both $u$ and $v$ are guaranteed to be an odd integer before hitting the main body of the algorithm. The while loop -on line 80 performs the reduction of the pair until $v$ is equal to zero. The unsigned comparison and subtraction algorithms are used in +At this point there are no more common factors of two in the two values. The divisions by a power of two on lines 62 and 68 remove +any independent factors of two such that both $u$ and $v$ are guaranteed to be an odd integer before hitting the main body of the algorithm. The while loop +on line 73 performs the reduction of the pair until $v$ is equal to zero. The unsigned comparison and subtraction algorithms are used in place of the full signed routines since both values are guaranteed to be positive and the result of the subtraction is guaranteed to be non-negative. \section{Least Common Multiple} @@ -9999,47 +6155,6 @@ dividing the product of the two inputs by their greatest common divisor. \hspace{-5.1mm}{\bf File}: bn\_mp\_lcm.c \vspace{-3mm} \begin{alltt} -016 -017 /* computes least common multiple as |a*b|/(a, b) */ -018 int mp_lcm (mp_int * a, mp_int * b, mp_int * c) -019 \{ -020 int res; -021 mp_int t1, t2; -022 -023 -024 if ((res = mp_init_multi (&t1, &t2, NULL)) != MP_OKAY) \{ -025 return res; -026 \} -027 -028 /* t1 = get the GCD of the two inputs */ -029 if ((res = mp_gcd (a, b, &t1)) != MP_OKAY) \{ -030 goto LBL_T; -031 \} -032 -033 /* divide the smallest by the GCD */ -034 if (mp_cmp_mag(a, b) == MP_LT) \{ -035 /* store quotient in t2 such that t2 * b is the LCM */ -036 if ((res = mp_div(a, &t1, &t2, NULL)) != MP_OKAY) \{ -037 goto LBL_T; -038 \} -039 res = mp_mul(b, &t2, c); -040 \} else \{ -041 /* store quotient in t2 such that t2 * a is the LCM */ -042 if ((res = mp_div(b, &t1, &t2, NULL)) != MP_OKAY) \{ -043 goto LBL_T; -044 \} -045 res = mp_mul(a, &t2, c); -046 \} -047 -048 /* fix the sign to positive */ -049 c->sign = MP_ZPOS; -050 -051 LBL_T: -052 mp_clear_multi (&t1, &t2, NULL); -053 return res; -054 \} -055 #endif -056 \end{alltt} \end{small} @@ -10199,92 +6314,6 @@ $\left ( {p' \over a'} \right )$ which is multiplied against the current Jacobi \hspace{-5.1mm}{\bf File}: bn\_mp\_jacobi.c \vspace{-3mm} \begin{alltt} -016 -017 /* computes the jacobi c = (a | n) (or Legendre if n is prime) -018 * HAC pp. 73 Algorithm 2.149 -019 */ -020 int mp_jacobi (mp_int * a, mp_int * p, int *c) -021 \{ -022 mp_int a1, p1; -023 int k, s, r, res; -024 mp_digit residue; -025 -026 /* if p <= 0 return MP_VAL */ -027 if (mp_cmp_d(p, 0) != MP_GT) \{ -028 return MP_VAL; -029 \} -030 -031 /* step 1. if a == 0, return 0 */ -032 if (mp_iszero (a) == 1) \{ -033 *c = 0; -034 return MP_OKAY; -035 \} -036 -037 /* step 2. if a == 1, return 1 */ -038 if (mp_cmp_d (a, 1) == MP_EQ) \{ -039 *c = 1; -040 return MP_OKAY; -041 \} -042 -043 /* default */ -044 s = 0; -045 -046 /* step 3. write a = a1 * 2**k */ -047 if ((res = mp_init_copy (&a1, a)) != MP_OKAY) \{ -048 return res; -049 \} -050 -051 if ((res = mp_init (&p1)) != MP_OKAY) \{ -052 goto LBL_A1; -053 \} -054 -055 /* divide out larger power of two */ -056 k = mp_cnt_lsb(&a1); -057 if ((res = mp_div_2d(&a1, k, &a1, NULL)) != MP_OKAY) \{ -058 goto LBL_P1; -059 \} -060 -061 /* step 4. if e is even set s=1 */ -062 if ((k & 1) == 0) \{ -063 s = 1; -064 \} else \{ -065 /* else set s=1 if p = 1/7 (mod 8) or s=-1 if p = 3/5 (mod 8) */ -066 residue = p->dp[0] & 7; -067 -068 if (residue == 1 || residue == 7) \{ -069 s = 1; -070 \} else if (residue == 3 || residue == 5) \{ -071 s = -1; -072 \} -073 \} -074 -075 /* step 5. if p == 3 (mod 4) *and* a1 == 3 (mod 4) then s = -s */ -076 if ( ((p->dp[0] & 3) == 3) && ((a1.dp[0] & 3) == 3)) \{ -077 s = -s; -078 \} -079 -080 /* if a1 == 1 we're done */ -081 if (mp_cmp_d (&a1, 1) == MP_EQ) \{ -082 *c = s; -083 \} else \{ -084 /* n1 = n mod a1 */ -085 if ((res = mp_mod (p, &a1, &p1)) != MP_OKAY) \{ -086 goto LBL_P1; -087 \} -088 if ((res = mp_jacobi (&p1, &a1, &r)) != MP_OKAY) \{ -089 goto LBL_P1; -090 \} -091 *c = s * r; -092 \} -093 -094 /* done */ -095 res = MP_OKAY; -096 LBL_P1:mp_clear (&p1); -097 LBL_A1:mp_clear (&a1); -098 return res; -099 \} -100 #endif -101 \end{alltt} \end{small} @@ -10299,9 +6328,9 @@ After a local copy of $a$ is made all of the factors of two are divided out and bit of $k$ is required, however, it makes the algorithm simpler to follow to perform an addition. In practice an exclusive-or and addition have the same processor requirements and neither is faster than the other. -Line 61 through 70 determines the value of $\left ( { 2 \over p } \right )^k$. If the least significant bit of $k$ is zero than +Line 58 through 71 determines the value of $\left ( { 2 \over p } \right )^k$. If the least significant bit of $k$ is zero than $k$ is even and the value is one. Otherwise, the value of $s$ depends on which residue class $p$ belongs to modulo eight. The value of -$(-1)^{(p-1)(a'-1)/4}$ is compute and multiplied against $s$ on lines 75 through 73. +$(-1)^{(p-1)(a'-1)/4}$ is compute and multiplied against $s$ on lines 71 through 74. Finally, if $a1$ does not equal one the algorithm must recurse and compute $\left ( {p' \over a'} \right )$. @@ -10410,30 +6439,6 @@ then only a couple of additions or subtractions will be required to adjust the i \hspace{-5.1mm}{\bf File}: bn\_mp\_invmod.c \vspace{-3mm} \begin{alltt} -016 -017 /* hac 14.61, pp608 */ -018 int mp_invmod (mp_int * a, mp_int * b, mp_int * c) -019 \{ -020 /* b cannot be negative */ -021 if (b->sign == MP_NEG || mp_iszero(b) == 1) \{ -022 return MP_VAL; -023 \} -024 -025 #ifdef BN_FAST_MP_INVMOD_C -026 /* if the modulus is odd we can use a faster routine instead */ -027 if (mp_isodd (b) == 1) \{ -028 return fast_mp_invmod (a, b, c); -029 \} -030 #endif -031 -032 #ifdef BN_MP_INVMOD_SLOW_C -033 return mp_invmod_slow(a, b, c); -034 #endif -035 -036 return MP_VAL; -037 \} -038 #endif -039 \end{alltt} \end{small} @@ -10505,37 +6510,6 @@ This algorithm attempts to determine if a candidate integer $n$ is composite by \hspace{-5.1mm}{\bf File}: bn\_mp\_prime\_is\_divisible.c \vspace{-3mm} \begin{alltt} -016 -017 /* determines if an integers is divisible by one -018 * of the first PRIME_SIZE primes or not -019 * -020 * sets result to 0 if not, 1 if yes -021 */ -022 int mp_prime_is_divisible (mp_int * a, int *result) -023 \{ -024 int err, ix; -025 mp_digit res; -026 -027 /* default to not */ -028 *result = MP_NO; -029 -030 for (ix = 0; ix < PRIME_SIZE; ix++) \{ -031 /* what is a mod LBL_prime_tab[ix] */ -032 if ((err = mp_mod_d (a, ltm_prime_tab[ix], &res)) != MP_OKAY) \{ -033 return err; -034 \} -035 -036 /* is the residue zero? */ -037 if (res == 0) \{ -038 *result = MP_YES; -039 return MP_OKAY; -040 \} -041 \} -042 -043 return MP_OKAY; -044 \} -045 #endif -046 \end{alltt} \end{small} @@ -10546,48 +6520,6 @@ mp\_digit. The table \_\_prime\_tab is defined in the following file. \hspace{-5.1mm}{\bf File}: bn\_prime\_tab.c \vspace{-3mm} \begin{alltt} -016 const mp_digit ltm_prime_tab[] = \{ -017 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, -018 0x0017, 0x001D, 0x001F, 0x0025, 0x0029, 0x002B, 0x002F, 0x0035, -019 0x003B, 0x003D, 0x0043, 0x0047, 0x0049, 0x004F, 0x0053, 0x0059, -020 0x0061, 0x0065, 0x0067, 0x006B, 0x006D, 0x0071, 0x007F, -021 #ifndef MP_8BIT -022 0x0083, -023 0x0089, 0x008B, 0x0095, 0x0097, 0x009D, 0x00A3, 0x00A7, 0x00AD, -024 0x00B3, 0x00B5, 0x00BF, 0x00C1, 0x00C5, 0x00C7, 0x00D3, 0x00DF, -025 0x00E3, 0x00E5, 0x00E9, 0x00EF, 0x00F1, 0x00FB, 0x0101, 0x0107, -026 0x010D, 0x010F, 0x0115, 0x0119, 0x011B, 0x0125, 0x0133, 0x0137, -027 -028 0x0139, 0x013D, 0x014B, 0x0151, 0x015B, 0x015D, 0x0161, 0x0167, -029 0x016F, 0x0175, 0x017B, 0x017F, 0x0185, 0x018D, 0x0191, 0x0199, -030 0x01A3, 0x01A5, 0x01AF, 0x01B1, 0x01B7, 0x01BB, 0x01C1, 0x01C9, -031 0x01CD, 0x01CF, 0x01D3, 0x01DF, 0x01E7, 0x01EB, 0x01F3, 0x01F7, -032 0x01FD, 0x0209, 0x020B, 0x021D, 0x0223, 0x022D, 0x0233, 0x0239, -033 0x023B, 0x0241, 0x024B, 0x0251, 0x0257, 0x0259, 0x025F, 0x0265, -034 0x0269, 0x026B, 0x0277, 0x0281, 0x0283, 0x0287, 0x028D, 0x0293, -035 0x0295, 0x02A1, 0x02A5, 0x02AB, 0x02B3, 0x02BD, 0x02C5, 0x02CF, -036 -037 0x02D7, 0x02DD, 0x02E3, 0x02E7, 0x02EF, 0x02F5, 0x02F9, 0x0301, -038 0x0305, 0x0313, 0x031D, 0x0329, 0x032B, 0x0335, 0x0337, 0x033B, -039 0x033D, 0x0347, 0x0355, 0x0359, 0x035B, 0x035F, 0x036D, 0x0371, -040 0x0373, 0x0377, 0x038B, 0x038F, 0x0397, 0x03A1, 0x03A9, 0x03AD, -041 0x03B3, 0x03B9, 0x03C7, 0x03CB, 0x03D1, 0x03D7, 0x03DF, 0x03E5, -042 0x03F1, 0x03F5, 0x03FB, 0x03FD, 0x0407, 0x0409, 0x040F, 0x0419, -043 0x041B, 0x0425, 0x0427, 0x042D, 0x043F, 0x0443, 0x0445, 0x0449, -044 0x044F, 0x0455, 0x045D, 0x0463, 0x0469, 0x047F, 0x0481, 0x048B, -045 -046 0x0493, 0x049D, 0x04A3, 0x04A9, 0x04B1, 0x04BD, 0x04C1, 0x04C7, -047 0x04CD, 0x04CF, 0x04D5, 0x04E1, 0x04EB, 0x04FD, 0x04FF, 0x0503, -048 0x0509, 0x050B, 0x0511, 0x0515, 0x0517, 0x051B, 0x0527, 0x0529, -049 0x052F, 0x0551, 0x0557, 0x055D, 0x0565, 0x0577, 0x0581, 0x058F, -050 0x0593, 0x0595, 0x0599, 0x059F, 0x05A7, 0x05AB, 0x05AD, 0x05B3, -051 0x05BF, 0x05C9, 0x05CB, 0x05CF, 0x05D1, 0x05D5, 0x05DB, 0x05E7, -052 0x05F3, 0x05FB, 0x0607, 0x060D, 0x0611, 0x0617, 0x061F, 0x0623, -053 0x062B, 0x062F, 0x063D, 0x0641, 0x0647, 0x0649, 0x064D, 0x0653 -054 #endif -055 \}; -056 #endif -057 \end{alltt} \end{small} @@ -10634,49 +6566,6 @@ determine the result. \hspace{-5.1mm}{\bf File}: bn\_mp\_prime\_fermat.c \vspace{-3mm} \begin{alltt} -016 -017 /* performs one Fermat test. -018 * -019 * If "a" were prime then b**a == b (mod a) since the order of -020 * the multiplicative sub-group would be phi(a) = a-1. That means -021 * it would be the same as b**(a mod (a-1)) == b**1 == b (mod a). -022 * -023 * Sets result to 1 if the congruence holds, or zero otherwise. -024 */ -025 int mp_prime_fermat (mp_int * a, mp_int * b, int *result) -026 \{ -027 mp_int t; -028 int err; -029 -030 /* default to composite */ -031 *result = MP_NO; -032 -033 /* ensure b > 1 */ -034 if (mp_cmp_d(b, 1) != MP_GT) \{ -035 return MP_VAL; -036 \} -037 -038 /* init t */ -039 if ((err = mp_init (&t)) != MP_OKAY) \{ -040 return err; -041 \} -042 -043 /* compute t = b**a mod a */ -044 if ((err = mp_exptmod (b, a, a, &t)) != MP_OKAY) \{ -045 goto LBL_T; -046 \} -047 -048 /* is it equal to b? */ -049 if (mp_cmp (&t, b) == MP_EQ) \{ -050 *result = MP_YES; -051 \} -052 -053 err = MP_OKAY; -054 LBL_T:mp_clear (&t); -055 return err; -056 \} -057 #endif -058 \end{alltt} \end{small} @@ -10729,90 +6618,6 @@ composite then it is \textit{probably} prime. \hspace{-5.1mm}{\bf File}: bn\_mp\_prime\_miller\_rabin.c \vspace{-3mm} \begin{alltt} -016 -017 /* Miller-Rabin test of "a" to the base of "b" as described in -018 * HAC pp. 139 Algorithm 4.24 -019 * -020 * Sets result to 0 if definitely composite or 1 if probably prime. -021 * Randomly the chance of error is no more than 1/4 and often -022 * very much lower. -023 */ -024 int mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result) -025 \{ -026 mp_int n1, y, r; -027 int s, j, err; -028 -029 /* default */ -030 *result = MP_NO; -031 -032 /* ensure b > 1 */ -033 if (mp_cmp_d(b, 1) != MP_GT) \{ -034 return MP_VAL; -035 \} -036 -037 /* get n1 = a - 1 */ -038 if ((err = mp_init_copy (&n1, a)) != MP_OKAY) \{ -039 return err; -040 \} -041 if ((err = mp_sub_d (&n1, 1, &n1)) != MP_OKAY) \{ -042 goto LBL_N1; -043 \} -044 -045 /* set 2**s * r = n1 */ -046 if ((err = mp_init_copy (&r, &n1)) != MP_OKAY) \{ -047 goto LBL_N1; -048 \} -049 -050 /* count the number of least significant bits -051 * which are zero -052 */ -053 s = mp_cnt_lsb(&r); -054 -055 /* now divide n - 1 by 2**s */ -056 if ((err = mp_div_2d (&r, s, &r, NULL)) != MP_OKAY) \{ -057 goto LBL_R; -058 \} -059 -060 /* compute y = b**r mod a */ -061 if ((err = mp_init (&y)) != MP_OKAY) \{ -062 goto LBL_R; -063 \} -064 if ((err = mp_exptmod (b, &r, a, &y)) != MP_OKAY) \{ -065 goto LBL_Y; -066 \} -067 -068 /* if y != 1 and y != n1 do */ -069 if (mp_cmp_d (&y, 1) != MP_EQ && mp_cmp (&y, &n1) != MP_EQ) \{ -070 j = 1; -071 /* while j <= s-1 and y != n1 */ -072 while ((j <= (s - 1)) && mp_cmp (&y, &n1) != MP_EQ) \{ -073 if ((err = mp_sqrmod (&y, a, &y)) != MP_OKAY) \{ -074 goto LBL_Y; -075 \} -076 -077 /* if y == 1 then composite */ -078 if (mp_cmp_d (&y, 1) == MP_EQ) \{ -079 goto LBL_Y; -080 \} -081 -082 ++j; -083 \} -084 -085 /* if y != n1 then composite */ -086 if (mp_cmp (&y, &n1) != MP_EQ) \{ -087 goto LBL_Y; -088 \} -089 \} -090 -091 /* probably prime now */ -092 *result = MP_YES; -093 LBL_Y:mp_clear (&y); -094 LBL_R:mp_clear (&r); -095 LBL_N1:mp_clear (&n1); -096 return err; -097 \} -098 #endif -099 \end{alltt} \end{small} -- cgit v0.12 From 91bc34c111a262e2350cc3ece78c75ef8ba3f185 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 4 Dec 2006 09:11:59 +0000 Subject: Fix [Bug 1606454] --- ChangeLog | 1284 ++++++++++++++++++++++++++++++------------------------------ doc/file.n | 4 +- 2 files changed, 646 insertions(+), 642 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0e91607..92cc427 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,11 @@ +2006-12-04 Donal K. Fellows + + * doc/file.n: Fix confusing wording for [file pathtype]. [Bug 1606454] + 2006-11-28 Andreas Kupries - * generic/tclBasic.c: TIP #280 implementation, conditional on the define TCL_TIP280. - * generic/tclCmdAH.c: + * generic/tclBasic.c: TIP #280 implementation, conditional on the + * generic/tclCmdAH.c: define TCL_TIP280. * generic/tclCmdIL.c: * generic/tclCmdMZ.c: * generic/tclCompCmds.c: @@ -20,14 +24,14 @@ * tests/platform.test: * tests/safe.test: -2006-11-27 Kevin Kenny +2006-11-27 Kevin Kenny - * unix/tclUnixChan.c (TclUnixWaitForFile): - * tests/event.test (event-14.*): Corrected a bug where - TclUnixWaitForFile would present select() with the wrong mask - on an LP64 machine if a fd number exceeds 32. Thanks to - Jean-Luc Fontaine for reporting and diagnosing [Bug 1602208]. - + * unix/tclUnixChan.c (TclUnixWaitForFile): + * tests/event.test (event-14.*): Corrected a bug where + TclUnixWaitForFile would present select() with the wrong mask + on an LP64 machine if a fd number exceeds 32. Thanks to + Jean-Luc Fontaine for reporting and diagnosing [Bug 1602208]. + 2006-11-26 Daniel Steffen * tcl.m4 (Linux): --enable-64bit support. [Patch 1597389], [Bug 1230558] @@ -53,11 +57,11 @@ * generic/tclEnv.c (Darwin): mark _environ symbol as unexported. -2006-10-31 Pat Thoyts +2006-10-31 Pat Thoyts * rules.vc: Fix bug #1582769 build with VC2003 and correct i386 arch. -2006-10-23 Don Porter +2006-10-23 Don Porter * README: Bump version number to 8.4.15 * generic/tcl.h: @@ -70,14 +74,14 @@ * unix/configure: autoconf-2.13 * win/configure: -2006-10-18 Pat Thoyts +2006-10-18 Pat Thoyts *** 8.4.14 TAGGED FOR RELEASE *** * win/nmakehlp.c: Ensure builds with VC6 without Platform SDK. - * win/rules.vc: Pickup MACHINE from environment. + * win/rules.vc: Pickup MACHINE from environment. -2006-10-17 Don Porter +2006-10-17 Don Porter * generic/tclIOUtil.c: Cleaned up some code flagged by a * generic/tclInt.h: `make checkexports` test. @@ -96,19 +100,19 @@ argument version==NULL passed in. Backport of the fix for the same problem in 8.5. -2006-10-10 Don Porter +2006-10-10 Don Porter * changes: changes updated for 8.4.14 release. -2006-10-06 Jeff Hobbs +2006-10-06 Jeff Hobbs * tests/http.test: update tests to handle strictness change. -2006-10-06 Pat Thoyts +2006-10-06 Pat Thoyts * win/rules.vc: bug #1571954: avoid /RTCc flag with MSVC8 -2006-10-05 Jeff Hobbs +2006-10-05 Jeff Hobbs * library/http/http.tcl (http::geturl): only do geturl url rfc 3986 validity checking if $::http::strict is true (default false @@ -125,12 +129,12 @@ * tests/append.test(4.21-22): fix for longstanding [Bug 1570718], lappending nothing to non-list. Reported by lvirden -2006-10-02 Don Porter +2006-10-02 Don Porter * generic/tclFileName.c (TclGlob): Prevent doubling of directory separators by [glob]. [Bug 1569042] -2006-10-01 Pat Thoyts +2006-10-01 Pat Thoyts * win/tclWinFile.c: Handle possible missing define. * win/tclWinFile.c: Backported fix for bug #1420432 (cannot set @@ -141,7 +145,7 @@ * generic/tclUtil.c (Tcl_SplitList): optimisation, [Patch 1344747] by dgp. -2006-09-26 Pat Thoyts +2006-09-26 Pat Thoyts * win/makefile.vc: Updated MSVC build to properly deal with * win/nmakehlp.c: MSVC8 and AMD64 target. Backport from 8.5 @@ -150,7 +154,7 @@ * win/tclWinSock.c: Casting type police. * win/tclWinTime.c: -2006-09-26 Don Porter +2006-09-26 Don Porter * generic/tcl.h: As 2006-09-22 commit from Donal K. Fellows demonstrates, "#define NULL 0" is just wrong, and as a quotable chat @@ -212,7 +216,7 @@ * tests/safe.test: * doc/PkgRequire.3: -2006-09-15 Jeff Hobbs +2006-09-15 Jeff Hobbs * library/http/http.tcl: Change " " -> "+" url encoding mapping * library/http/pkgIndex.tcl: to " " -> "%20" as per RFC 3986. @@ -240,7 +244,7 @@ it will actually be used; #ifdef parts of TSD that are not always needed; adjust #ifdefs to cover all possible cases; fix whitespace. -2006-09-10 Don Porter +2006-09-10 Don Porter * library/msgcat/msgcat.tcl: Bump to version msgcat 1.3.4 to account * library/msgcat/pkgIndex.tcl: for modifications. @@ -248,7 +252,7 @@ 2006-09-10 Daniel Steffen * library/msgcat/msgcat.tcl (msgcat::Init): on Darwin, add fallback of - * tests/msgcat.test: default msgcat locale to + * tests/msgcat.test: default msgcat locale to * unix/tclUnixInit.c (TclpSetVariables): current CFLocale identifier if available (via private ::tcl::mac::locale global, set at interp init when on Mac OS X 10.3 or later with CoreFoundation). @@ -308,16 +312,16 @@ * unix/tclUnixCompat.c: New file containing MT-safe implementation of some library calls. -2006-09-04 Don Porter +2006-09-04 Don Porter - * tests/main.text (Tcl_Main-4.4): Test corrected to not be - timing sensitive to the Bug 1481986 fix. [Bug 1550858] + * tests/main.text (Tcl_Main-4.4): Test corrected to not be + timing sensitive to the Bug 1481986 fix. [Bug 1550858] -2006-09-04 Jeff Hobbs +2006-09-04 Jeff Hobbs * doc/package.n: correct package example -2006-08-30 Jeff Hobbs +2006-08-30 Jeff Hobbs * win/tclWinChan.c: [Bug 819667] Improve logic for identifying COM ports. @@ -345,7 +349,7 @@ all unix platforms, but not on OSX for machines which HAVE_COREFOUNDATION. -2006-08-21 Don Porter +2006-08-21 Don Porter * generic/tclIOUtil.c: Revisions to complete the thread finalization of the cwdPathPtr. [Bug 1536142] @@ -387,10 +391,10 @@ returns early (e.g. due to a signal), call it again instead of returning a timeout result. Fixes intermittent event-13.8 failures. -2006-08-09 Don Porter +2006-08-09 Don Porter * generic/tclEncoding.c: Replace buffer copy in for loop - with call to memcpy(). Thanks to afredd. [Patch 1530262] + with call to memcpy(). Thanks to afredd. [Patch 1530262] 2006-08-03 Daniel Steffen @@ -398,14 +402,14 @@ channels are initialized before vfork() so that the child doesn't potentially corrupt global state in the parent's address space. -2006-07-30 Kevin Kenny +2006-07-30 Kevin Kenny * tests/clock.test: Allowed UTC as a synonym for GMT in two tests that indirectly invoke 'strftime' with the result of 'gmtime' to fix a bogus test failure on FreeBSD systems. [Bug 1513489]. -2006-07-30 Joe English +2006-07-30 Joe English * doc/AppInit.3: Fix typo [Bug 1496886] @@ -420,9 +424,9 @@ handler's call to Tcl_InitNotifier() would immediately recreate the notifier thread in the child after a fork. - * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): add support for + * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): add support for * unix/tclUnixFCmd.c (DoRenameFile, CopyFileAtts): weakly importing - * unix/tclUnixInit.c (TclpSetInitialEncodings): symbols not available + * unix/tclUnixInit.c (TclpSetInitialEncodings): symbols not available on OSX 10.2 or 10.3, enables binaires built on later OSX versions to run on earlier ones. * macosx/README: document how to enable weak-linking; cleanup. @@ -430,12 +434,12 @@ AvailabilityMacros.h inclusion; only disable realpath on 10.2 or earlier when threads are enabled. * unix/tclLoadDyld.c (TclpLoadMemoryGetBuffer): change runtime Darwin - * unix/tclUnixInit.c (TclpInitPlatform): release check to use - global initialized once. + * unix/tclUnixInit.c (TclpInitPlatform): release check to use + global initialized once. * unix/tclUnixFCmd.c (DoRenameFile, TclpObjNormalizePath): add runtime Darwin release check to determine if realpath is threadsafe. * unix/configure.in: add check on Darwin for compiler support of weak - * unix/tcl.m4: import and for AvailabilityMacros.h header; move + * unix/tcl.m4: import and for AvailabilityMacros.h header; move Darwin specific checks & defines that are only relevant to the tcl build out of tcl.m4; restrict framework option to Darwin; cleanup quoting. * unix/configure: autoconf-2.13 @@ -456,12 +460,12 @@ * generic/tclAsync.c: Made Tcl_AsyncDelete() more tolerant when called after all thread TSD has been garbage-collected. -2006-07-10 Jeff Hobbs +2006-07-10 Jeff Hobbs * generic/tclIO.c (Tcl_CreateChannel): allow Tcl std channel inheritance to be #defined out (default remains in). -2006-06-15 Don Porter +2006-06-15 Don Porter * changes: changes to start prep for an 8.4.14 release. @@ -471,15 +475,15 @@ define from AvailabilityMacros.h: override configure detection and only use API available in the indicated OS version or earlier. -2006-06-14 Pat Thoyts +2006-06-14 Pat Thoyts - * generic/regerror.c: Enable building Tcl with Microsoft's - * generic/tcl.h: latest compiler offering (VS2005). - * generic/tclDate.c: We have to handle a number of oddities - * tests/env.test: as they have deprecated most of the - * win/makefile.vc: standard C library and now generate - * win/nmakehlp.c: manifest files to be linked into the - * win/rules.vc: binaries. SF bug #1424909 + * generic/regerror.c: Enable building Tcl with Microsoft's + * generic/tcl.h: latest compiler offering (VS2005). + * generic/tclDate.c: We have to handle a number of oddities + * tests/env.test: as they have deprecated most of the + * win/makefile.vc: standard C library and now generate + * win/nmakehlp.c: manifest files to be linked into the + * win/rules.vc: binaries. SF bug #1424909 * win/tclWinTime.c: 2006-06-13 Donal K. Fellows @@ -487,19 +491,19 @@ * unix/tclLoadDl.c (TclpDlopen): Workaround for a compiler bug in Sun Forte 6. [Bug 1503729] -2006-06-06 Don Porter +2006-06-06 Don Porter * doc/GetStdChan.3: Added recommendation that each call to Tcl_SetStdChannel() be accompanied by a call to Tcl_RegisterChannel(). -2006-05-31 Jeff Hobbs +2006-05-31 Jeff Hobbs * generic/tclNamesp.c (NamespaceInscopeCmd): revert [Bug 1400572] fix of 2006-01-09 for [namespace inscope] as it seems to mess with itcl scope decoding. Leaving namespace-29.6 test failure until final cause it determined. -2006-05-29 Jeff Hobbs +2006-05-29 Jeff Hobbs * generic/tcl.h (Tcl_DecrRefCount): use if/else construct to allow placement in unbraced outer if/else conditions. (jcw) @@ -507,7 +511,7 @@ 2006-05-27 Daniel Steffen * macosx/tclMacOSXNotify.c: implemented pthread_atfork() handler that - * unix/tcl.m4 (Darwin): recreates CoreFoundation state and notifier + * unix/tcl.m4 (Darwin): recreates CoreFoundation state and notifier thread in the child after a fork(). Note that pthread_atfork() is available starting with Tiger only. Because vfork() is used by the core on Darwin, [exec]/[open] are not affected by this fix, only extensions @@ -522,7 +526,7 @@ * unix/tcl.m4 (SC_CONFIG_SYSTEM): Fixed quoting of command script to awk; it was a rarely used branch, but it was wrong. [Bug 1494160] -2006-05-13 Don Porter +2006-05-13 Don Porter * generic/tclFileName.c (TclDoGlob): Disabled the partial normalization done by the recursive glob routine, since changing the @@ -532,18 +536,18 @@ * generic/tclProc.c (ProcCompileProc): When a bump of the compile epoch forces the re-compile of a proc body, take care not to overwrite any Proc struct that may be referred to on the active - call stack. This fixes [Bug 1482718]. Note that the fix will not be + call stack. This fixes [Bug 1482718]. Note that the fix will not be effective for code that calls the private routine TclProcCompileProc() directly. -2006-05-05 Don Porter +2006-05-05 Don Porter * generic/tclMain.c (Tcl_Main): Corrected flaw that required * tests/main.test: (Tcl_Main-4.5): processing of one interactive command before passing control to the loop routine registered with Tcl_SetMainLoop() [Bug 1481986]. -2006-05-04 Don Porter +2006-05-04 Don Porter * README: Bump version number to 8.4.14 * generic/tcl.h: @@ -559,27 +563,27 @@ * generic/tclExecute.c (ExprSrandFunc): Restore acceptance of wide * tests/expr-old.test: integer values by srand() [Bug 1480509]. -2006-04-12 Don Porter +2006-04-12 Don Porter *** 8.4.13 TAGGED FOR RELEASE *** * changes: updates for another RC. -2006-04-11 Don Porter +2006-04-11 Don Porter * generic/tclCmdMZ.c: Stop some interference between enter traces * tests/trace.test: and enterstep traces. [Bug 1458266] -2006-04-10 Don Porter +2006-04-10 Don Porter * changes: updates for another RC. -2006-04-06 Jeff Hobbs +2006-04-06 Jeff Hobbs * generic/tclRegexp.c (FinalizeRegexp): full reset data to indicate readiness for reinitialization. -2006-04-06 Don Porter +2006-04-06 Don Porter * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): It seems * tests/indexObj.test: there are extensions that rely on the prior @@ -593,7 +597,7 @@ define on Darwin. [Bug 1457515] * unix/configure: autoconf-2.13 -2006-04-05 Don Porter +2006-04-05 Don Porter * library/reg/pkgIndex.tcl: Long overlooked bump to registry package * win/tclWinReg.c: version 1.1.4 (should have been done @@ -609,7 +613,7 @@ strings to be matched by the Tcl_GetIndexFromObj machinery, in the same manner as any other key. [Bug 1464039] -2006-04-04 Don Porter +2006-04-04 Don Porter * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 * tests/pkg.test: to be even more forgiving of package version @@ -637,7 +641,7 @@ bytes of the buffer start a multi-byte sequence. This bug contributed to [Bug 1462248]. -2006-03-28 Jeff Hobbs +2006-03-28 Jeff Hobbs * win/configure, win/tcl.m4: define MACHINE for gcc builds as well. Needed by Tk for manifest generation. @@ -656,15 +660,15 @@ * generic/tclIOUtil.c: fix to nativeFilesystemRecord comparisons (lesser part of [Bug 1064247]) -2006-03-27 Pat Thoyts +2006-03-27 Pat Thoyts - * win/tclWinTest.c: Fixes for bug #1456373 (mingw-gcc issue) + * win/tclWinTest.c: Fixes for bug #1456373 (mingw-gcc issue) -2006-03-23 Don Porter +2006-03-23 Don Porter * tests/expr.test: Nan self-inquality test silenced. [Bug 761471] -2006-03-22 Don Porter +2006-03-22 Don Porter * changes: updates for another RC. @@ -724,7 +728,7 @@ the list lock. It now cuts within the lock and does a locked splice for when it needs to instead. [Bug 859820] -2006-03-13 Don Porter +2006-03-13 Don Porter * generic/tclEncoding.c: Report error when an escape encoding is missing one of its sub-encodings [Bug 506653]. @@ -735,7 +739,7 @@ 2006-03-10 Zoran Vasiljevic - -- Summary of changes fixing Tcl Bug #1437595 -- + -- Summary of changes fixing Tcl Bug #1437595 -- * generic/tclEvent.c: Cosmetic touches and identation * generic/tclInt.h: Added TclpFinalizeSockets() call. @@ -762,7 +766,7 @@ to 'file readable' and 'file writable', but main 'file writable' bug still outstanding. -2006-03-07 Don Porter +2006-03-07 Don Porter * README: Bump version number to 8.4.13 and update * changes: changes to start prep for an 8.4.13 release. @@ -775,32 +779,32 @@ * tests/parse.test: Missing constraint -2006-03-06 Don Porter +2006-03-06 Don Porter * generic/tclBasic.c: Revised handling of TCL_EVAL_* flags to * tests/parse.test: simplify TclEvalObjvInternal and to correct - the auto-loading of alias targets (parse-8.12). [Bug 1444291]. + the auto-loading of alias targets (parse-8.12). [Bug 1444291]. -2006-03-02 Jeff Hobbs +2006-03-02 Jeff Hobbs * win/Makefile.in: convert _NATIVE paths to use / to avoid ".\" path-as-escape issue. * unix/tcl.m4, win/tcl.m4: []-quote ac_defun functions. -2006-03-02 Pat Thoyts +2006-03-02 Pat Thoyts - * unix/tcl.m4: Fix for tk bug #1334613 to sort out shared library + * unix/tcl.m4: Fix for tk bug #1334613 to sort out shared library * unix/configure: issues on NetBSD. Regenerated configure script. -2006-02-28 Don Porter +2006-02-28 Don Porter * generic/tclBasic.c: Corrections to be sure that TCL_EVAL_GLOBAL * tests/parse.test: evaluations act the same as [uplevel #0] * tests/trace.test: evaluations, even when execution traces or - invocations of [::unknown] are present. [Bug 1439836]. + invocations of [::unknown] are present. [Bug 1439836]. -2006-02-16 Don Porter +2006-02-16 Don Porter * generic/tclIndexObj.c: Disallow the "ambiguous" error message * tests/indexObj.test: when TCL_EXACT matching is requested. @@ -839,7 +843,7 @@ overwriting of already freed memory which caused all kinds of (rare but reproducible) coredumps all over the place. -2006-01-11 Don Porter +2006-01-11 Don Porter * tests/error.test (error-7.0): Test the timing of write traces on ::errorInfo [Bug 1397843]. @@ -848,11 +852,11 @@ * unix/configure: add caching, use AC_CACHE_CHECK instead of * unix/configure.in: AC_CACHE_VAL where possible, consistent message - * unix/tcl.m4: quoting, sync relevant tclconfig/tcl.m4 and HEAD + * unix/tcl.m4: quoting, sync relevant tclconfig/tcl.m4 and HEAD changes and gratuitous formatting differences, fix SC_CONFIG_MANPAGES with default argument, Darwin improvements to SC_LOAD_*CONFIG. -2006-01-09 Don Porter +2006-01-09 Don Porter * generic/tclNamesp.c (NamespaceInscopeCmd): [namespace inscope] * tests/namespace.test: commands were not reported by [info level] @@ -878,7 +882,7 @@ than recursive opendir/readdir (sync with HEAD). * unix/configure: regen. -2005-12-12 Jeff Hobbs +2005-12-12 Jeff Hobbs * unix/tcl.m4, unix/configure: Fix sh quoting error reported in bash-3.1+ [Bug 1377619] (schafer) @@ -902,7 +906,7 @@ * unix/tclUnixPort.h (Darwin): fix incorrect __DARWIN_UNIX03 configure overrides that were originally copied from Darwin CVS (rdar://3693001). -2005-12-05 Don Porter +2005-12-05 Don Porter * unix/configure.in: Revised fix for [Bug 1034337] from Daniel * unix/tclUnixFCmd.c: Steffen. Uses fts_*() routines. @@ -914,11 +918,11 @@ * README: refer to macosx/README instead of mac/README. * mac/README: add note that mac classic port is no longer supported. -2005-12-03 Jeff Hobbs +2005-12-03 Jeff Hobbs * README: correct 2 urls -2005-12-01 Don Porter +2005-12-01 Don Porter * changes: Update changes for 8.4.12 release @@ -927,9 +931,9 @@ * unix/tcl.m4 (Darwin): fixed error when MACOSX_DEPLOYMENT_TARGET unset * unix/configure: regen. -2005-11-29 Jeff Hobbs +2005-11-29 Jeff Hobbs - * win/tcl.m4: Add build support for Windows-x64 builds. + * win/tcl.m4: Add build support for Windows-x64 builds. * win/configure: --enable-64bit now accepts =amd64|ia64 for * win/Makefile.in: Windows 64-bit build variants (default: amd64) * win/makefile.vc: [Bug 1369597] @@ -1023,7 +1027,7 @@ * unix/configure: regen. -2005-11-20 Joe English +2005-11-20 Joe English * generic/tclStubLib.c: Don't set tclStubsPtr to 0 when Tcl_PkgRequireEx() fails [Fix for #1091431 "Tcl_InitStubs failure @@ -1042,16 +1046,16 @@ * tests/namespace.test (namespace-7.3-6): * tests/trace.test (trace-20.13-16): fix [Bugs 1355942/1355342]. -2005-11-18 Jeff Hobbs +2005-11-18 Jeff Hobbs * generic/tclIO.c (TclFinalizeIOSubsystem): preserve statePtr until we netrieve next statePtr from it. -2005-11-18 Don Porter +2005-11-18 Don Porter * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 * tests/pkg.test: to be more forgiving of package version - mismatch errors in [package ifneeded] commands. This reduces the + mismatch errors in [package ifneeded] commands. This reduces the ***POTENTIAL INCOMPATIBILITY*** noted for that change. 2005-11-18 Andreas Kupries @@ -1067,7 +1071,7 @@ * library/http/http.tcl (http::geturl): Improved syntactic validation of URLs, and better error messages in some cases. [Bug 1358369] -2005-11-16 Don Porter +2005-11-16 Don Porter * README: Bump version number to 8.4.12 * generic/tcl.h: @@ -1080,7 +1084,7 @@ * unix/configure: autoconf-2.13 * win/configure: -2005-11-15 Don Porter +2005-11-15 Don Porter * changes: Update changes for 8.4.12 release @@ -1090,7 +1094,7 @@ * win/tclWinFile.c: a repeated bug report in 8.4 [Bug 1353840]. Windows [file mtime] will now return seconds from the Posix epoch correctly (except for FAT32 file systems after a DST change - without a reboot - for which there is no help). A side effect is + without a reboot - for which there is no help). A side effect is that file times will appear different in Tcl from the way they do in Windows Explorer or a 'dir' listing, because the Microsoft tools get the DST state wrong in the listings. @@ -1100,21 +1104,21 @@ * generic/tclTimer.c: Changed [after] so that it behaves correctly * tests/timer.test: with negative arguments [Bug 1350293]. -2005-11-08 Jeff Hobbs +2005-11-08 Jeff Hobbs * unix/tclUnixFCmd.c (MAX_READDIR_UNLINK_THRESHOLD): reduce to 130 based on errors seen on OS X 10.3 with lots of links in a dir. [Bug 1034337 followup] -2005-11-08 Don Porter +2005-11-08 Don Porter * tests/expr.test: Portable tests expr-46.13-18 [Bug 1341368] - * generic/tclPkg.c: Corrected inconsistencies in the value returned - * tests/pkg.test: by Tcl_PkgRequire(Ex) so that the returned - values will always agree with what is stored in the package database. - This way repeated calls to Tcl_PkgRequire(Ex) have the same results. - Thanks to Hemang Lavana. [Bug 1162286]. + * generic/tclPkg.c: Corrected inconsistencies in the value returned + * tests/pkg.test: by Tcl_PkgRequire(Ex) so that the returned + values will always agree with what is stored in the package database. + This way repeated calls to Tcl_PkgRequire(Ex) have the same results. + Thanks to Hemang Lavana. [Bug 1162286]. ***POTENTIAL INCOMPATIBILITY***: Incompatible with those existing packages that are accustomed to the [package] command forgiving their bugs. @@ -1136,25 +1140,25 @@ 2005-11-04 Don Porter * unix/tcl.m4: Added code to enable [load] on LynxOS. Thanks to - heidibr@users.sf.net for the patch. [Bug 1163896]. + heidibr@users.sf.net for the patch. [Bug 1163896]. * unix/configure: autoconf-2.13. -2005-11-04 Pat Thoyts +2005-11-04 Pat Thoyts * win/tclWinPipe.c: Applied patch #1267871 by Matt Newman which * win/tclWinPort.h: provides extended error code support. * tests/exec.test: Wrote some tests for this feature. -2005-11-04 Kevin Kenny +2005-11-04 Kevin Kenny * generic/tclGetDate.y: Added abbreviations for the Korean - timezone. - * generic/tclDate.c: Regenerated. + timezone. + * generic/tclDate.c: Regenerated. * compat/strftime.c: Fixed a problem where the name of the time zone was double-converted from system encoding to - UTF-8. Thanks to the anonymous submitter of [Bug 1317477] + UTF-8. Thanks to the anonymous submitter of [Bug 1317477] for the report and the patch. 2005-11-04 Miguel Sofer @@ -1172,7 +1176,7 @@ system encoding. Needed for Tclkit to properly support non-default encodings. Thanks to Yaroslav Schekin. [Bug 1201171]. -2005-11-03 Pat Thoyts +2005-11-03 Pat Thoyts * win/tclWin32Dll.c: Backported Anton Kovalenko's patch #1256872 * win/tclWinConsole.c: to give unicode console support on @@ -1259,14 +1263,14 @@ ifdef TCL_THREADS changes done to de-activate pending event processing when channel is being closed/cutted. -2005-10-10 Jeff Hobbs +2005-10-10 Jeff Hobbs * generic/tclInt.h: ensure MODULE_SCOPE decl -2005-10-07 Jeff Hobbs +2005-10-07 Jeff Hobbs * unix/tclUnixFCmd.c (TraverseUnixTree): Adjust 2004-11-11 change to - * tests/fCmd.test (fCmd-20.2): account for NFS special + * tests/fCmd.test (fCmd-20.2): account for NFS special files with a readdir rewind threshold. [Bug 1034337] 2005-10-05 Andreas Kupries @@ -1278,7 +1282,7 @@ David Welton's patch for it, and added a note about wideSeekProc. -2005-10-05 Jeff Hobbs +2005-10-05 Jeff Hobbs * tests/env.test (env-6.1): * win/tclWinPort.h: define USE_PUTENV_FOR_UNSET 1 @@ -1290,18 +1294,18 @@ Correct the resizing of the environ array. We assume that we are in full ownership, but that's not correct.[Bug 979640] -2005-10-04 Jeff Hobbs +2005-10-04 Jeff Hobbs * win/tclWinSerial.c (SerialSetOptionProc): free argv [Bug 1067708] - * tests/http.test: do not URI encode -._~ according + * tests/http.test: do not URI encode -._~ according * library/http/http.tcl (init): to RFC3986. [Bug 1182373] (aho) * generic/tclIOUtil.c (TclFSNormalizeAbsolutePath): make static * generic/tclEncoding.c (TclFindEncodings): make static * unix/tclLoadShl.c (TclpDlopen): use DYNAMIC_PATH on second - shl_load only. [Bug 1204237] + shl_load only. [Bug 1204237] 2005-10-04 Zoran Vasiljevic @@ -1315,7 +1319,7 @@ 2005-09-30 Don Porter * generic/tclMain.c: Separate encoding conversion of command line - arguments from list formatting. [Bug 1306162]. + arguments from list formatting. [Bug 1306162]. 2005-09-27 Donal K. Fellows @@ -1355,7 +1359,7 @@ unsafe crashes from happening when working with very large string representations. [Bug 1267380] -2005-08-17 Jeff Hobbs +2005-08-17 Jeff Hobbs * generic/tclFCmd.c (TclFileMakeDirsCmd): fix to race condition in file mkdir (backport from head 2005-06-13) [Bug 1217375] @@ -1373,18 +1377,18 @@ name for the cp1251 charset. Thanks to Victor Wagner for reporting this. [Bug 1252475] -2005-08-05 Kevin Kenny +2005-08-05 Kevin Kenny * generic/tclExecute.c (TclExecuteByteCode): Fixed a corner case - * tests/expr.test (expr-38.1): where applying abs to + * tests/expr.test (expr-38.1): where applying abs to MIN_INT failed to promote the result to a wide integer. [Bug #1241572] -2005-08-04 Don Porter +2005-08-04 Don Porter - * generic/tclObj.c: Simplified routines that manage the typeTable. + * generic/tclObj.c: Simplified routines that manage the typeTable. -2005-08-03 Don Porter +2005-08-03 Don Porter * generic/tclCompExpr.c: Untangled some dependencies in the * generic/tclEvent.c: order of finalization routines. @@ -1410,7 +1414,7 @@ Remove old Cygwin + Mingw info, people should just build with the msys + mingw configuration. -2005-07-28 Jeff Hobbs +2005-07-28 Jeff Hobbs * unix/configure, unix/tcl.m4: defined TCL_LOAD_FROM_MEMORY on Darwin only for SHARED_BUILD @@ -1420,7 +1424,7 @@ * generic/tclPipe.c (TclCreatePipeline): Arrange for POSIX systems to * unix/tclUnixPipe.c (TclpOpenFile): use the O_APPEND flag for * tests/exec.test (exec-19.1): files opened in a pipeline - like ">>this". Note that Windows cannot support such access; there is + like ">>this". Note that Windows cannot support such access; there is no equivalent flag on the handle that can be set at the kernel-call level. The test is unix-specific in every way. [Bug 1245953] @@ -1433,7 +1437,7 @@ when Tcl is configured with the default dist install. [patch 1231015] -2005-07-26 Don Porter +2005-07-26 Don Porter * doc/tclvars.n: Improved $errorCode documentation. [RFE 776921] @@ -1443,7 +1447,7 @@ * generic/tclNamesp.c (TclTeardownNamespace): Re-ordering so that * tests/trace.test (trace-34.4): command delete traces fire - while the command still exists. [Bug 1047286] + while the command still exists. [Bug 1047286] 2005-07-24 Mo DeJong @@ -1457,7 +1461,7 @@ [Tcl bug 1160114] [Tcl patch 1244153] -2005-07-22 Don Porter +2005-07-22 Don Porter * library/auto.tcl: Updates to the Tcl script library to make * library/history.tcl: use of Tcl 8.4 feautures. Thanks to @@ -1466,13 +1470,13 @@ * library/safe.tcl: * library/word.tcl: -2005-07-07 Jeff Hobbs +2005-07-07 Jeff Hobbs * unix/tcl.m4, unix/configure: Backported [Bug 1095909], removing - * unix/tclUnixPort.h: any use of readdir_r as it is not - * unix/tclUnixThrd.c: necessary and just confuses things. + * unix/tclUnixPort.h: any use of readdir_r as it is not + * unix/tclUnixThrd.c: necessary and just confuses things. -2005-07-05 Don Porter +2005-07-05 Don Porter * generic/tclCmdAH.c: New "encoding" Tcl_ObjType (not registered) * generic/tclEncoding.c: that permits longer lifetimes of the @@ -1490,7 +1494,7 @@ waiting on the condition variable when tearing down the notifier thread [Bug# 1222872]. -2005-06-27 Don Porter +2005-06-27 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** @@ -1502,7 +1506,7 @@ [source]-ing. The burden of fixing these exposed bugs will not be forced on package/extension/application authors until Tcl 8.5. -2005-06-24 Kevin Kenny +2005-06-24 Kevin Kenny * generic/tclEvent.c (Tcl_Finalize): * generic/tclInt.h: @@ -1514,7 +1518,7 @@ are created in Tcl_Finalize conditional on TCL_MEM_DEBUG to avoid spurious panics in the "stable" release. -2005-06-24 Don Porter +2005-06-24 Don Porter * library/auto.tcl: Make file safe to re-[source] without destroying registered auto_mkindex_parser hooks. @@ -1524,7 +1528,7 @@ * tools/tcltk-man2html.tcl: fixed useversion glob pattern to accept multi-digit patchlevels. -2005-06-23 Kevin Kenny +2005-06-23 Kevin Kenny * win/tclWinChan.c: More rewriting of __asm__ blocks that * win/tclWinFCmd.c: implement SEH in GCC, because mingw's @@ -1539,11 +1543,11 @@ 2005-06-22 Kevin Kenny - * generic/tclInt.h: Changed the finalization - * generic/tclEvent.c (Tcl_Finalize): logic to defer the + * generic/tclInt.h: Changed the finalization + * generic/tclEvent.c (Tcl_Finalize): logic to defer the * generic/tclIO.c (TclFinalizeIOSubsystem): shutdown of the pipe * unix/tclUnixPipe.c (TclFinalizePipes): management until after - * win/tclWinPipe.c (TclFinalizePipes): all channels have been + * win/tclWinPipe.c (TclFinalizePipes): all channels have been closed, in order to avoid a situation where the Windows PipeCloseProc2 would re-establish the exit handler after exit handlers had already run, corrupting the heap. @@ -1560,7 +1564,7 @@ definition (on the command line) first to make this acceptable. (*): AIX native. -2005-06-22 Don Porter +2005-06-22 Don Porter * win/tclWinFile.c: Potential buffer overflow. [Bug 1225571] Thanks to Pat Thoyts for discovery and fix. @@ -1568,14 +1572,14 @@ * tests/safe.test: Backport performance improvement from reduced $::auto_path. -2005-06-21 Pat Thoyts +2005-06-21 Pat Thoyts * tests/winDde.test: Added some waits to the dde server script to let event processing run after we create the dde server and before we exit the server process. This avoids 'server did not respond' errors. -2005-06-21 Kevin Kenny +2005-06-21 Kevin Kenny * generic/tclFileName.c: Corrected a problem where a directory name containing a colon can crash the process on Windows [Bug 1194458]. @@ -1584,7 +1588,7 @@ * win/tclWinPipe.c: Reverted davygrvy's changes of 2005-04-19; they cause multiple failures in io.test. [Bug 1225044, still open]. -2005-06-21 Don Porter +2005-06-21 Don Porter * generic/tclBasic.c: Made the walk of the active trace list aware * generic/tclCmdMZ.c: of the direction of trace scanning, so the @@ -1595,7 +1599,7 @@ * tests/trace.test (trace-34.1): list of active traces to cleanup references to traces being deleted. [Bug 1201035] -2005-06-20 Don Porter +2005-06-20 Don Porter * doc/FileSystem.3: added missing Tcl_GlobTypeData documentation [Bug 935853] @@ -1612,7 +1616,7 @@ * unix/configure: autoconf-2.13 -2005-06-18 Don Porter +2005-06-18 Don Porter * changes: Update changes for 8.4.11 release @@ -1651,7 +1655,7 @@ * macosx/Makefile: fixed 'embedded' target. -2005-06-02 Jeff Hobbs +2005-06-02 Jeff Hobbs * unix/Makefile.in (html): add BUILD_HTML_FLAGS optional var * tools/tcltk-man2html.tcl: add a --useversion to prevent @@ -1665,14 +1669,14 @@ joinable thread and it is properly joined in Tcl_FinalizeNotifier. This is an attempt to fix the Tcl Bug #1082283. -2005-05-29 Jeff Hobbs +2005-05-29 Jeff Hobbs * win/tclWinThrd.c (TclpFinalizeThreadData): move tlsKey defn to top of file and clarify name (was 'key'). [Bug 1204064] -2005-05-27 Jeff Hobbs +2005-05-27 Jeff Hobbs - * README: Bumped patchlevel to 8.4.10 + * README: Bumped patchlevel to 8.4.10 * generic/tcl.h: * tools/tcl.wse.in: * unix/tcl.spec, unix/configure, unix/configure.in: @@ -1686,7 +1690,7 @@ stub library to Versions/8.x subdir instead of Versions/Current. * unix/configure: autoconf-2.13 -2005-05-25 Jeff Hobbs +2005-05-25 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_TimeObjCmd): add necessary cast @@ -1728,7 +1732,7 @@ * generic/tclParseExpr.c: removed unreferenced stack variable "errMsg" probably included by fixing the Bug #1201589 (see below). -2005-05-20 Don Porter +2005-05-20 Don Porter * generic/tclParseExpr.c: Corrected parser to recognize all boolean literals accepted by Tcl_GetBoolean, including prefixes @@ -1773,13 +1777,13 @@ * unix/configure: autoconf-2.13 -2005-05-10 Jeff Hobbs +2005-05-10 Jeff Hobbs * tests/string.test: string-10.[21-30] * generic/tclCmdMZ.c (Tcl_StringObjCmd): add extra checks to prevent possible UMR in unichar cmp function for string map. -2005-05-06 Jeff Hobbs +2005-05-06 Jeff Hobbs * unix/tcl.m4, unix/configure: correct Solaris 10 (5.10) check and add support for x86_64 Solaris cc builds. @@ -1788,7 +1792,7 @@ * doc/FileSystem.3: Backport of doc fix. [Bug 1172401] -2005-04-27 Don Porter +2005-04-27 Don Porter * library/init.tcl: Corrected flaw in interactive command * tests/main.test: auto-completion. [Bug 1191409]. @@ -1828,7 +1832,7 @@ * unix/configure: autoconf-2.13 -2005-04-22 Don Porter +2005-04-22 Don Porter * generic/tclCmdMZ.c: Corrected intrep-dependence of * tests/string.test: [string is boolean] [Bug 1187123] @@ -1838,13 +1842,13 @@ * tests/unixInit.test (7.1): fixed failure when running tests with -tmpdir arg not set to working dir. -2005-04-20 Don Porter +2005-04-20 Don Porter * generic/tclGet.c (Tcl_GetInt): Corrected error that did not * generic/tclObj.c (Tcl_GetIntFromObj): permit 0x80000000 to be recognized as an integer on TCL_WIDE_INT_IS_LONG systems [Bug 1090869]. -2005-04-19 Jeff Hobbs +2005-04-19 Jeff Hobbs * tests/winPipe.test (winpipe-6.2): remove -blocking 1 as this one can truly block. @@ -1871,7 +1875,7 @@ 2005-04-13 David Gravereaux * generic/tclIO.c (Tcl_SetChannelBufferSize): Lowest size limit - * tests/io.test: changed from ten bytes to one byte. Need + * tests/io.test: changed from ten bytes to one byte. Need * tests/iogt.test: for this change was proven by Ross Cartlidge where [read stdin 1] was grabbing 10 bytes followed by starting a child process that was intended to @@ -1920,7 +1924,7 @@ This is a signal for it to clean up the tsd key associated with the threading allocator. -2005-04-05 Don Porter +2005-04-05 Don Porter * generic/tclExecute.c (ExprSrandFunc): Replaced incursions into the * generic/tclUtil.c (TclGetIntForIndex): intreps of numeric types @@ -1928,14 +1932,14 @@ now that those routines are better behaved wrt shimmering. [Patch 1177129] -2005-03-29 Jeff Hobbs +2005-03-29 Jeff Hobbs * win/tcl.m4, win/configure: do not require cygpath in macros to allow msys alone as an alternative. * win/tclWinTime.c (TclpGetDate): use time_t for 'time' [Bug 1163422] -2005-03-18 Don Porter +2005-03-18 Don Porter * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks for immediate operand usage to permit leading space and sign @@ -1969,27 +1973,27 @@ is wider than a long (Win64) [Bug 1163422] * generic/tclIntDecls.h: Regen -2005-03-15 Pat Thoyts +2005-03-15 Pat Thoyts * unix/tcl.m4: Make it work on OpenBSD again. Imported patch from the OpenBSD ports tree. -2005-03-10 Don Porter +2005-03-10 Don Porter * generic/tclCmdMZ.c (TclCheckInterpTraces): Corrected mistaken cast of ClientData to (TraceCommandInfo *) when not warranted. Thanks to Yuri Victorovich for the report. [Bug 1153871] -2005-03-08 Jeff Hobbs +2005-03-08 Jeff Hobbs * win/makefile.vc: clarify necessary defined vars that can come from MSVC or the Platform SDK. -2005-02-24 Don Porter +2005-02-24 Don Porter * library/tcltest/tcltest.tcl: Better use of [glob -types] to avoid * tests/tcltest.test: failed attempts to [source] a directory, and - similar matters. Thanks to "mpettigr". [Bug 1119798] + similar matters. Thanks to "mpettigr". [Bug 1119798] * library/tcltest/pkgIndex.tcl: Bump to tcltest 2.2.8 @@ -1997,7 +2001,7 @@ * doc/CrtChannel.3 (THREADACTIONPROC): Formatting fix. [Bug 1149605] -2005-02-17 Jeff Hobbs +2005-02-17 Jeff Hobbs * win/tclWinFCmd.c (TraverseWinTree): use wcslen on wchar, not Tcl_UniCharLen. @@ -2007,10 +2011,10 @@ * doc/variable.n: fix for [Bug 1124160], variables are detected by [info vars] but not by [info locals]. -2005-02-10 Jeff Hobbs +2005-02-10 Jeff Hobbs * unix/Makefile.in: remove SHLIB_LD_FLAGS (only for AIX, inlined - * unix/tcl.m4: into SHLIB_LD). Combine AIX-* and AIX-5 + * unix/tcl.m4: into SHLIB_LD). Combine AIX-* and AIX-5 * unix/configure: branches in SC_CONFIG_CFLAGS. Correct gcc builds for AIX-4+ and HP-UX-11. @@ -2026,17 +2030,17 @@ * doc/binary.n: Made the documentation of sign bit masking and [binary scan] consistent. [Bug 1117017] -2005-02-01 Don Porter +2005-02-01 Don Porter * generic/tclExecute.c (TclCompEvalObj): Removed stray statement left behind in prior code reorganization. -2005-01-28 Jeff Hobbs +2005-01-28 Jeff Hobbs * unix/configure, unix/tcl.m4: add solaris 64-bit gcc build support. [Bug 1021871] -2005-01-27 Jeff Hobbs +2005-01-27 Jeff Hobbs * generic/tclBasic.c (Tcl_ExprBoolean, Tcl_ExprDouble) (Tcl_ExprLong): Fix to recognize Tcl_WideInt type. [Bug 1109484] @@ -2064,7 +2068,7 @@ * win/tclWinSock.c: * mac/tclMacChan.c: -2005-01-25 Don Porter +2005-01-25 Don Porter * library/auto.tcl: Updated [auto_reset] to clear auto-loaded procs in namespaces other than :: [Bug 1101670]. @@ -2112,7 +2116,7 @@ * doc/lsearch.n: Convert to other form of emacs mode control comment to prevent problems with old versions of man. [Bug 1085127] -2004-12-29 Jeff Hobbs +2004-12-29 Jeff Hobbs * win/tcl.m4, win/configure: update MSVC CFLAGS_OPT to -O2, remove -Gs (included in -O2) and -GD (outdated). Use "link -lib" instead @@ -2130,14 +2134,14 @@ * doc/Async.3: Reword for better grammar, better nroff and get the flag name right. (Reported by David Welton.) -2004-12-06 Jeff Hobbs +2004-12-06 Jeff Hobbs *** 8.4.9 TAGGED FOR RELEASE *** * unix/tclUnixNotfy.c (NotifierThreadProc): init numFdBits [Bug 1079286] -2004-12-02 Jeff Hobbs +2004-12-02 Jeff Hobbs * changes: updated for 8.4.9 release @@ -2147,17 +2151,17 @@ * tests/fileSystem.test: ensure tilde paths are not returned specially by 'glob'. -2004-12-01 Don Porter +2004-12-01 Don Porter * library/auto.tcl (tcl_findLibrary): Disabled use of [file normalize] that caused trouble with freewrap. [Bug 1072136]. -2004-11-26 Don Porter +2004-11-26 Don Porter * tests/reg.test (reg-32.*): Added missing testregexp constraints. * library/auto.tcl (tcl_findLibrary): Made sure the uniquifying - operations on the search path does not also normalize. [Bug 1072136] + operations on the search path does not also normalize. [Bug 1072136] 2004-11-26 Donal K. Fellows @@ -2174,16 +2178,16 @@ * tests/tcltest.test: The order in which [glob] returns the file names * tests/fCmd.test: is undefined, so tests should not depend on it. -2004-11-24 Don Porter +2004-11-24 Don Porter * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected failure to determine the number of arguments for readdir_r on SunOS systems. [Bug 1071701] - * unix/configure: autoconf-2.13 + * unix/configure: autoconf-2.13 -2004-11-24 Jeff Hobbs +2004-11-24 Jeff Hobbs - * README: Bumped patchlevel to 8.4.9 + * README: Bumped patchlevel to 8.4.9 * generic/tcl.h: * tools/tcl.wse.in: * unix/tcl.spec, unix/configure, unix/configure.in: @@ -2199,7 +2203,7 @@ FD_ZERO macros rather than bit-whacking that failed under Solaris-Sparc-64. [Bug 1071807] -2004-11-23 Don Porter +2004-11-23 Don Porter * generic/tclCmdIL.c (InfoVarsCmd): Corrected segfault in new * tests/info.test (info-19.6): trivial matching branch [Bug 1072654] @@ -2247,7 +2251,7 @@ * tests/unixInit.test (7.1): fixed failure when running tests with -tmpdir arg not set to working dir. -2004-11-18 Don Porter +2004-11-18 Don Porter * changes: Final updates for Tcl 8.4.8 release. @@ -2261,7 +2265,7 @@ * unix/mkLinks.tcl: removed * unix/mkLinks: removed -2004-11-16 Jeff Hobbs +2004-11-16 Jeff Hobbs * unix/tclUnixChan.c (TtySetOptionProc): fixed crash configuring -ttycontrol on a channel. [Bug 1067708] @@ -2275,7 +2279,7 @@ * tools/tcl.wse.in: * tools/tclmin.wse: -2004-11-16 Don Porter +2004-11-16 Don Porter * library/auto.tcl: Updated [tcl_findLibrary] search path to include the $::auto_path. [RFE 695441]. @@ -2285,20 +2289,20 @@ * doc/tclvars.n: Mention global variables set by tclsh and wish so they are easier to find. [Patch 1065732] -2004-11-15 Don Porter +2004-11-15 Don Porter * generic/tclCmdMZ.c (Tcl_TraceObjCmd): Fixed Bug 1065378 which failed * tests/trace.test (trace-33.1): to permit a variable trace created with [trace variable] to be destroyed with [trace remove]. Thanks to Keith Vetter for the report. -2004-11-12 Don Porter +2004-11-12 Don Porter * library/init.tcl: Made [unknown] robust in the case that either of the variables ::errorInfo or ::errorCode gets unset. [Bug 1063707] -2004-11-12 Jeff Hobbs +2004-11-12 Jeff Hobbs * generic/tclEncoding.c (TableFromUtfProc): correct crash condition when TCL_UTF_MAX == 6. [Bug 1004065] @@ -2347,11 +2351,11 @@ * doc/catch.n: Clarify documentation on return codes. [Bug 1062647] -2004-11-02 Don Porter +2004-11-02 Don Porter * changes: Updates for Tcl 8.4.8 release. -2004-11-02 Don Porter +2004-11-02 Don Porter * library/tcltest/tcltest.tcl: Corrected some misleading * tests/tcltest.test (tcltest-26.1,2): displays of ::errorInfo and @@ -2377,21 +2381,21 @@ * generic/tclCmdAH.c (Tcl_CatchObjCmd): removed erroneous comment [Bug 1029518] -2004-10-29 Don Porter +2004-10-29 Don Porter - * library/tcltest/tcltest.tcl: Correct reaction to errors in the - obsolete processCmdLineArgsHook. [Bug 1055673] + * library/tcltest/tcltest.tcl: Correct reaction to errors in the + obsolete processCmdLineArgsHook. [Bug 1055673] * library/tcltest/pkgIndex.tcl: Bump to tcltest 2.2.7 2004-10-28 Andreas Kupries * generic/tclAlloc.c: Fixed [Tcl SF Bug 1030548], a * generic/tclThreadAlloc.c: threaded debug build on Windows - * win/tclWinThrd.c: now works again. Had to touch Unix - * unix/tclUnixThrd.c: as well. Basic patch by Kevin, with + * win/tclWinThrd.c: now works again. Had to touch Unix + * unix/tclUnixThrd.c: as well. Basic patch by Kevin, with modifications by myself. -2004-10-28 Don Porter +2004-10-28 Don Porter * README: Bumped patch level to 8.4.8 to prepare * generic/tcl.h: for next patch release. @@ -2415,7 +2419,7 @@ * generic/tclIntDecls.h: * generic/tclIntPlatDecls.h: Regenerated. -2004-10-27 Don Porter +2004-10-27 Don Porter * generic/tclCmdAH.c (Tcl_FormatObjCmd): Restored missing line from yesterdays' 868489 backport that caused failed alloc's @@ -2436,17 +2440,17 @@ 2004-10-26 Kevin B. Kenny * generic/tclCmdAH.c (Tcl_FormatObjCmd): Backport a missing bit - of the bug 868489 fix. + of the bug 868489 fix. * generic/tclObj.c (SetBooleanFromAny): Backport fix for Bug - 1026125. + 1026125. * tests/format.test (format-19.1): Additional regression test for - Bug 868489. + Bug 868489. 2004-10-26 Donal K. Fellows * doc/*.n: Backporting of documentation updates. -2004-10-26 Don Porter +2004-10-26 Don Porter * tests/subst.test (subst-12.3-5): More tests for Bug 1036649. @@ -2470,17 +2474,17 @@ * generic/tclCmdIL.c (InfoCommandsCmd, InfoGlobalsCmd, InfoProcsCmd): (InfoVarsCmd): Use this to speed up some [info] subcommands. -2004-10-08 Jeff Hobbs +2004-10-08 Jeff Hobbs * win/tclWinFile.c (NativeIsExec): correct result of 'file executable' to not be case sensitive. [Bug 954263] -2004-10-05 Don Porter +2004-10-05 Don Porter * generic/tclNamesp.c (Tcl_PopCallFrame): Removed Bug 1038021 workaround. That bug is now fixed. -2004-09-30 Don Porter +2004-09-30 Don Porter * generic/tclNamespace.c (TclTeardownNamespace): Tcl_Obj-ified * tests/namespace.test (namespace-8.5,6): the save/restore @@ -2523,10 +2527,10 @@ * tests/load.test (load-2.3): adopted fix for failure on darwin from HEAD. -2004-09-14 Don Porter +2004-09-14 Don Porter * generic/tclObj.c (Tcl_GetIntFromObj): Corrected flaw in returning - the int value of a wideInteger. [Bug 1027690] + the int value of a wideInteger. [Bug 1027690] 2004-09-10 Donal K. Fellows @@ -2560,7 +2564,7 @@ replacing the idiom 'K $x [set x {}]' by '$x[set x {}]' for fastest execution. -2004-09-09 Don Porter +2004-09-09 Don Porter * generic/tclNamesp.c (Tcl_ForgetImport): Corrected faulty * tests/namespace.test: logic that relied exclusively on string @@ -2586,7 +2590,7 @@ * doc/lsearch.n: Clarified meaning of -dictionary. [Bug 759545] -2004-09-01 Jeff Hobbs +2004-09-01 Jeff Hobbs * win/tclWinReg.c (BroadcastValue): WIN64 cast corrections @@ -2618,7 +2622,7 @@ * tests/result.test (result-4.*, result-5.*): [Bug 1008314] detected and fixed by dgp. -2004-08-13 Don Porter +2004-08-13 Don Porter * library/msgcat/msgcat.tcl: Added checks to prevent [mclocale] * tests/msgcat.test: from registering filesystem paths to possibly @@ -2631,11 +2635,11 @@ the returned thread ID since broken on 64-bit systems (Cray). Thanks to Rob Ratcliff for reporting the bug. -2004-07-30 Don Porter +2004-07-30 Don Porter * generic/tclEvent.c (Tcl_Finalize): Re-organized Tcl_Finalize so that Tcl_ExitProc's that call Tcl_Finalize recursively do not - cause deadlock. [Patch 999084 fixes Tk Bug 714956] + cause deadlock. [Patch 999084 fixes Tk Bug 714956] 2004-07-30 Daniel Steffen @@ -2644,41 +2648,41 @@ to explict object files in tcl.m4, refer to MAC_OSX_OBJS makefile var. * unix/Makefile.in: added MAC_OSX_OBJS variable. -2004-07-28 Don Porter +2004-07-28 Don Porter * generic/tclMain.c (Tcl_Main, StdinProc): Append newline only * tests/basic.test (basic-46.1): to incomplete scripts as part of multi-line script construction. Do not add an extra trailing newline to the complete script. [Bug 833150] -2004-07-26 Jeff Hobbs +2004-07-26 Jeff Hobbs *** 8.4.7 TAGGED FOR RELEASE *** * tests/io.test (io-61.1): create file in binary mode for x-plat. -2004-07-25 Pat Thoyts +2004-07-25 Pat Thoyts * generic/tclThreadAlloc.c: Moved the tclInt.h include to provide Tcl_Panic which is now required for non-threaded build. -2004-07-22 Don Porter +2004-07-22 Don Porter * tests/eofchar.data (removed): Test io-61.1 now generates its own * tests/io.test: file of test data as needed. -2004-07-21 Don Porter +2004-07-21 Don Porter * win/tclWinDde.c: Bump to dde 1.2.3 to cover changes * library/dde/pkgIndex.tcl: committed on 2004-06-14. * changes: Updated for Tcl 8.4.7 release. -2004-07-20 Jeff Hobbs +2004-07-20 Jeff Hobbs - * generic/tclEvent.c: Correct threaded obj allocator to - * generic/tclInt.h: fully cleanup on exit and allow for + * generic/tclEvent.c: Correct threaded obj allocator to + * generic/tclInt.h: fully cleanup on exit and allow for * generic/tclThreadAlloc.c: reinitialization. [Bug #736426] - * unix/tclUnixThrd.c: (mistachkin, kenny) + * unix/tclUnixThrd.c: (mistachkin, kenny) * win/tclWinThrd.c: 2004-07-20 Daniel Steffen @@ -2694,7 +2698,7 @@ CFBundleOpenBundleResourceMap symbol, since it is only present in full CoreFoundation on Mac OS X and not in CFLite on pure Darwin. -2004-07-19 Jeff Hobbs +2004-07-19 Jeff Hobbs * unix/Makefile.in, unix/tcl.m4: move (C|LD)FLAGS after their * unix/configure.in, unix/configure: _DEFAULT to allow for env @@ -2758,9 +2762,9 @@ 2004-07-14 Andreas Kupries - * generic/tclIO.h (CHANNEL_INCLOSE): New flag. Set in + * generic/tclIO.h (CHANNEL_INCLOSE): New flag. Set in * generic/tclIO.c (Tcl_UnregisterChannel): 'Tcl_Close' while the - * generic/tclIO.c (Tcl_Close): close callbacks are + * generic/tclIO.c (Tcl_Close): close callbacks are run. Checked in 'Tcl_Close' and 'Tcl_Unregister' to prevent recursive call of 'close' in the close-callbacks. This is a possible error made by implementors of virtual filesystems based @@ -2788,9 +2792,9 @@ is accepted. [Tcl SF Bug 985869], reported by Joe Mistachkin . -2004-07-13 Jeff Hobbs +2004-07-13 Jeff Hobbs - * README, generic/tcl.h, tools/tcl.wse.in: bumped to + * README, generic/tcl.h, tools/tcl.wse.in: bumped to * unix/configure, unix/configure.in, unix/tcl.spec: patchlevel * win/README.binary, win/configure, win/configure.in: 8.4.7 @@ -2806,7 +2810,7 @@ * tests/expr-old.test (39.1): added support for wide integers to round(); [Bug 908375], reported by Hemang Lavana. -2004-07-02 Jeff Hobbs +2004-07-02 Jeff Hobbs * generic/regcomp.c (stid): correct minor pointer size error @@ -2854,7 +2858,7 @@ DllMain function as noinline to avoid compiler error from duplicated asm labels in generated code. -2004-06-14 Pat Thoyts +2004-06-14 Pat Thoyts * tests/winDde.test: Fixed -async test * win/tclWinDde.c: Backported the fix from 8.5 to avoid hanging in @@ -2862,7 +2866,7 @@ 2004-06-10 Andreas Kupries - * generic/tclDecls.h: Regenerated on a unix box. + * generic/tclDecls.h: Regenerated on a unix box. * generic/tclIntDecls.h: The Win/DOS EOLs from the * generic/tclIntPlatDecls.h: last regen screwed up compilation * generic/tclPlatDecls.h: with an older gcc. @@ -2894,9 +2898,9 @@ * win/tclWinTest.c (TestwincpuidCmd) This change necessitated a * win/tclWinTime.c (Tcl_GetTime): small burst of assembly code to read CPU ID information, which was added as TclWinCPUID in the - internal Stubs. To test this code in the common case of a + internal Stubs. To test this code in the common case of a single-processor machine, a 'testwincpuid' command was added to - tclWinTest.c, and a test case in platform.test. Thanks to Jeff + tclWinTest.c, and a test case in platform.test. Thanks to Jeff Godfrey and Richard Suchenwirth for reporting this bug. [Bug #976722] @@ -2914,7 +2918,7 @@ embedded null characters between real nullbytes and the internal representation on input/output (Bug #949905). -2004-05-26 Don Porter +2004-05-26 Don Porter * library/tcltest/tcltest.tcl: Correction to debug prints and testing * library/tcltest/pkgIndex.tcl: if TCLTEST_OPTIONS value. Corrected @@ -2923,24 +2927,24 @@ behavior. Corrected tcltest-25.3 to not falsely report a failure in tcltest.test. Bumped to tcltest 2.2.6. [Bugs 960560, 960926] -2004-05-25 Jeff Hobbs +2004-05-25 Jeff Hobbs * doc/http.n (http::config): add -urlencoding option (default utf-8) * library/http/http.tcl: that specifies encoding conversion of * library/http/pkgIndex.tcl: args for http::formatQuery. Previously - * tests/http.test: undefined, RFC 2718 says it should be + * tests/http.test: undefined, RFC 2718 says it should be utf-8. 'http::config -urlencoding {}' returns previous behavior, which will throw errors processing non-latin-1 chars. Bumped http package to 2.5.0. -2004-05-25 Kevin Kenny +2004-05-25 Kevin Kenny * tests/winFCmd.test: Correct test for the presence of a CD-ROM so - that it doesn't misdetect some other sort - of filesystem with a write-protected root as - being a CD-ROM drive. [Bug 918267] + that it doesn't misdetect some other sort + of filesystem with a write-protected root as + being a CD-ROM drive. [Bug 918267] -2004-05-24 Jeff Hobbs +2004-05-24 Jeff Hobbs * generic/tclExecute.c (VerifyExprObjType): use GET_WIDE_OR_INT to properly have tclIntType used for smaller values. This corrects @@ -2994,11 +2998,11 @@ 2004-05-17 Kevin B. Kenny - * generic/tclInt.decls: Restored TclpTime_t kludge to all + * generic/tclInt.decls: Restored TclpTime_t kludge to all * generic/tclIntPlatDecls.h: places where it appeared before the - * unix/tclUnixPort.h changes of 14 May, because use of - * unix/tclUnixTime.h native time_t in its place requires - * win/tclWinTime.h: the 8.5 header reforms. [Bug #955146] + * unix/tclUnixPort.h changes of 14 May, because use of + * unix/tclUnixTime.h native time_t in its place requires + * win/tclWinTime.h: the 8.5 header reforms. [Bug #955146] 2004-05-17 Donal K. Fellows @@ -3007,24 +3011,24 @@ 2004-05-14 Kevin B. Kenny - * generic/tclInt.decls: Promoted TclpLocaltime and TclpGmtime + * generic/tclInt.decls: Promoted TclpLocaltime and TclpGmtime * generic/tclIntDecls.h: from Unix-specific stubs to the generic * generic/tclIntPlatDecls.h: internal Stubs table. Reran 'genstubs' * generic/tclStubInit.c: * unix/tclUnixPort.h: * generic/tclClock.c: Changed a buggy 'GMT' timezone specification - to the correct 'GMT0'. [Bug #922848] + to the correct 'GMT0'. [Bug #922848] * unix/tclUnixThrd.c: Moved TclpGmtime and TclpLocaltime to - unix/tclUnixTime.c where they belong. + unix/tclUnixTime.c where they belong. * unix/tclUnixTime.c (TclpGmtime, TclpLocaltime, TclpGetTimeZone, - ThreadSafeGMTime [removed], - ThreadSafeLocalTime [removed], - SetTZIfNecessary, CleanupMemory): + ThreadSafeGMTime [removed], + ThreadSafeLocalTime [removed], + SetTZIfNecessary, CleanupMemory): Restructured to make sure that the same mutex protects - all calls to localtime, gmtime, and tzset. Added a check + all calls to localtime, gmtime, and tzset. Added a check in front of those calls to make sure that the TZ env var hasn't changed since the last call to tzset, and repeat tzset if necessary. [Bug #940278] Removed a buggy test @@ -3062,7 +3066,7 @@ in TclInitEncodingSubsystem. * win/tclWin32Dll.c: Structured Exception Handling added around - Tcl_Finalize called from DllMain's DLL_PROCESS_DETACH. We can't + Tcl_Finalize called from DllMain's DLL_PROCESS_DETACH. We can't be 100% assured that Tcl is being unloaded by the OS in a stable condition and we need to protect the exit handlers should the stack be in a hosed state. AT&T style assembly for SEH under @@ -3083,7 +3087,7 @@ * win/tclWinSock.c: (SocketThreadExitHandler): Don't call TerminateThread when WaitForSingleObject returns a timeout. Tcl_Finalize called from - DllMain will pause all threads. Trust that the thread will get + DllMain will pause all threads. Trust that the thread will get the close notice at a later time if it does ever wake up before being cleaned up by the system anyway. (SocketEventProc) : connect errors should fire both the readable @@ -3093,18 +3097,18 @@ * win/coffbase.txt: Added the tls extension to the list of preferred load addresses. -2004-05-05 Don Porter +2004-05-05 Don Porter * tests/unixInit.test (unixInit-2.10): Test correction for Mac OSX. - Be sure to consistently compare normalized path names. Thanks to - Steven Abner (tauvan). [Bug 948177] + Be sure to consistently compare normalized path names. Thanks to + Steven Abner (tauvan). [Bug 948177] 2004-05-05 Donal K. Fellows * doc/CrtObjCmd.3: Remove reference to Tcl_RenameCommand; there is no such API. [Bug 848440] -2004-05-04 Jeff Hobbs +2004-05-04 Jeff Hobbs * generic/tclIOUtil.c (Tcl_FSChdir): Work-around crash condition * tests/winFCmd.test (winFCmd-16.12): triggered when $HOME is @@ -3114,7 +3118,7 @@ first item in file volumes - that's usually A:/, which for most will have nothing in it. -2004-05-04 Don Porter +2004-05-04 Don Porter * tests/tcltest.test: Test corrections for Mac OSX. Thanks to Steven Abner (tauvan). [Bug 947440] @@ -3148,13 +3152,13 @@ 930851]. When changing the eofchar we have to zap the related flags to prevent them from prematurely aborting the next read. -2004-04-07 Jeff Hobbs +2004-04-07 Jeff Hobbs * win/configure: * win/configure.in: define TCL_LIB_FLAG, TCL_BUILD_LIB_SPEC, TCL_LIB_SPEC and TCL_PACKAGE_PATH in tclConfig.sh. -2004-04-06 Don Porter +2004-04-06 Don Porter * tests/unixInit.test (unixInit-3.1): Default encoding on Darwin systems is utf-8. Thanks to Steven Abner (tauvan). [Bug 928808] @@ -3163,9 +3167,9 @@ * tests/cmdAH.test (cmdAH-18.2): Added constraint because access(...,X_OK) is defined to be permitted to be meaningless when - running as root, and OSX exhibits this. [Bug 929892] + running as root, and OSX exhibits this. [Bug 929892] -2004-04-02 Don Porter +2004-04-02 Don Porter * tests/tcltest.test: Corrected constraint typos: "nonRoot" -> "notRoot". Thanks to Steven Abner (tauvan). [Bug 928353] @@ -3176,7 +3180,7 @@ * library/msgcat/msgcat.tcl ([mcset], [ConvertLocale], [Init]): Corrected [mcset] to be able to successfully set a translation to the empty string. [mcset $loc $src {}] was incorrectly set the - $loc translation of $src back to $src. Also changed [ConvertLocale] + $loc translation of $src back to $src. Also changed [ConvertLocale] to minimally require a non-empty "language" part in the locale value. If not, an error raised prompts [Init] to keep looking for a valid locale value, or ultimately fall back on the "C" locale. [Bug 811461]. @@ -3187,7 +3191,7 @@ * generic/tclObj.c (HashObjKey): Make sure this hashes the whole string rep of the object, instead of missing the last character. -2004-03-29 Jeff Hobbs +2004-03-29 Jeff Hobbs * generic/tclInt.h: * generic/tclEncoding.c (TclFindEncodings, Tcl_FindExecutable): @@ -3203,7 +3207,7 @@ segfault when a compilation returns TCL_OUTLINE_COMPILE after having grown the compile environment [Bug 925121]. -2004-03-21 Jeff Hobbs +2004-03-21 Jeff Hobbs * win/tclWinInt.h: define VER_PLATFORM_WIN32_CE if not already set. * win/tclWinInit.c (TclpSetInitialEncodings): recognize WIN32_CE @@ -3222,7 +3226,7 @@ 2004-03-08 Vince Darley * generic/tclFileName.c: Fix to 'glob -path' near the root - * tests/fileName.test: of the filesystem. [Bug 910525] + * tests/fileName.test: of the filesystem. [Bug 910525] 2004-03-01 Don Porter @@ -3281,7 +3285,7 @@ {body error} so that detailed information on unexpected errors in tests is provided by default, even after the fix for [Bug 725253] -2004-02-17 Jeff Hobbs +2004-02-17 Jeff Hobbs (reverted due to test failures on Solaris, but not Win/Lin :/) * generic/tclIOUtil.c: backport of rewrite of generic file @@ -3292,14 +3296,14 @@ * unix/tclUnixInit.c (TclpInitPlatform): ensure the std fds exist to prevent crash condition [Bug #772288] -2004-02-16 Jeff Hobbs +2004-02-16 Jeff Hobbs * generic/tclCmdMZ.c (TclTraceExecutionObjCmd) (TclTraceCommandObjCmd): fix possible mem leak in trace info. -2004-02-12 Jeff Hobbs +2004-02-12 Jeff Hobbs - * README: update patchlevel to 8.4.6 + * README: update patchlevel to 8.4.6 * generic/tcl.h: * tools/tcl.wse.in: * unix/configure, unix/configure.in, unix/tcl.spec: @@ -3369,7 +3373,7 @@ * tools/man2tcl.c: are known to cause problems with recent glibc. [Bug 852369] -2003-12-03 Don Porter +2003-12-03 Don Porter * generic/tcl.h: Bumped patch level to 8.4.5.1 to distinguish * unix/configure.in: CVS snapshots from 8.4.5 release. @@ -3384,17 +3388,17 @@ * generic/tclBinary.c (DeleteScanNumberCache, ScanNumber): Made the numeric scan-value cache have proper references to the objects within it so strange patterns of writes won't cause references to - freed objects. Thanks to Paul Obermeier for the report. [Bug 851747] + freed objects. Thanks to Paul Obermeier for the report. [Bug 851747] 2003-12-01 Miguel Sofer * doc/lset.n: fix typo [Bug 852224] -2003-11-21 Don Porter +2003-11-21 Don Porter *** 8.4.5 TAGGED FOR RELEASE *** - * tests/windFCmd.test (winFCmd-16.10): Corrected failure to + * tests/windFCmd.test (winFCmd-16.10): Corrected failure to initialize variable $dd that caused test suite failure. 2003-11-20 Miguel Sofer @@ -3408,28 +3412,28 @@ * tests/winFCmd.test: fix to [Bug 845778] - Infinite recursion on [cd] (Windows only bug). -2003-11-18 Jeff Hobbs +2003-11-18 Jeff Hobbs * changes: updated for 8.4.5 release -2003-11-17 Don Porter +2003-11-17 Don Porter - * generic/regcomp.c: Backported regexp bug fixes and tests. Thanks + * generic/regcomp.c: Backported regexp bug fixes and tests. Thanks * generic/tclTest.c: to Pavel Goran and Vince Darley. * tests/reg.test: [Bugs 230589, 504785, 505048, 703709, 840258] -2003-11-12 Jeff Hobbs +2003-11-12 Jeff Hobbs * tests/cmdMZ.test (cmdMZ-1.4): change to nonPortable as more systems are using permissions caching, and this isn't really a Tcl controlled issue. -2003-11-11 Jeff Hobbs +2003-11-11 Jeff Hobbs * unix/configure: * unix/tcl.m4: improve AIX --enable-64bit handling -2003-11-10 Don Porter +2003-11-10 Don Porter * tests/unixInit.test (unixInit-2.10): re-enabled. * unix/tclUnixInit.c (TclpInitLibraryPath): Alternative fix @@ -3441,7 +3445,7 @@ * win/tclWinDde.c: on non-Windows platforms. Bumped to * win/tclWinReg.c: registry 1.1.3 and dde 1.2.2. -2003-11-06 Jeff Hobbs +2003-11-06 Jeff Hobbs * tests/unixInit.test (unixInit-2.10): mark as knownBug * generic/tclEncoding.c (TclFindEncodings): revert patch from @@ -3453,7 +3457,7 @@ * macosx/Makefile: optimized builds define NDEBUG to turn off ThreadAlloc range checking. -2003-11-05 Don Porter +2003-11-05 Don Porter * generic/tclEncoding.c (TclFindEncodings): Normalize the path of the executable before passing to TclpInitLibraryPath() to avoid @@ -3529,12 +3533,12 @@ * tests/regexp.test: fix to [Bug 823524] in regsub; added three new tests. -2003-10-12 Jeff Hobbs +2003-10-12 Jeff Hobbs * unix/tclUnixTest.c (TestalarmCmd): don't bother checking return value of alarm. [Bug #664755] (english) -2003-10-08 Don Porter +2003-10-08 Don Porter * generic/tclBasic.c: Save and restore the iPtr->flag bits that control the state of errorCode and errorInfo management when calling @@ -3550,7 +3554,7 @@ determining when the length parameter is negative; the terminator is a zero byte, not (necessarily) a \u0000 character. [Bug 769812] -2003-10-07 Don Porter +2003-10-07 Don Porter * tests/exec.test: Corrected temporary file management * tests/fileSystem.test: issues uncovered by -debug 1 test @@ -3562,7 +3566,7 @@ * tests/fCmd.test: Run tests with the [temporaryDirectory] as the current directory, so that tests can depend on ability to write - files. [Bug 575837] + files. [Bug 575837] * doc/OpenFileChnl.3: Updated Tcl_Tell and Tcl_Seek documentation to reflect that they now return Tcl_WideInt (TIP 72) [Bug 787537] @@ -3570,7 +3574,7 @@ * tests/io.test: Corrected several tests that failed when paths * tests/ioCmd.test: included regexp-special chars. [Bug 775394] -2003-10-06 Don Porter +2003-10-06 Don Porter * tests/regexp.test: Matched [makeFile] with [removeFile]. * tests/regexpComp.test: [Bug 675652] @@ -3603,7 +3607,7 @@ tclpipe.dll and the following arguments. It caused error in Windows 98 when exec command.com (e.g. dir) [Bug 789040] -2003-10-03 Don Porter +2003-10-03 Don Porter * generic/tclBasic.c: Fixed error in ref count management of command * generic/tclCmdMZ.c: and execution traces that caused access to @@ -3616,7 +3620,7 @@ * doc/FileSystem.3: backported various test and documentation changes from HEAD. Backport of actual code fixes to follow. -2003-10-02 Don Porter +2003-10-02 Don Porter * README: Bumped patch level to 8.4.5 to prepare * generic/tcl.h: for next patch release. @@ -3637,12 +3641,12 @@ * macosx/Makefile: fixed redo prebinding bug when DESTDIR="". * mac/tclMacResource.c: fixed possible NULL dereference (bdesgraupes). -2003-09-29 Don Porter +2003-09-29 Don Porter * generic/tclBasic.c (CallCommandTraces): Added safety bit * tests/trace.test: masking to prevent any of the bit values TCL_TRACE_*_EXEC from leaking into the flags field of any - Command struct. This does not fix [Bug 811483] but helps to + Command struct. This does not fix [Bug 811483] but helps to contain some of its worst symptoms. Also backported the corrections to test trace-28.4 from Vince Darley. @@ -3666,7 +3670,7 @@ * macosx/Makefile: ensure SYMROOT exists if OBJROOT is overridden on command line. Replaced explict use of /usr/bin by ${BINDIR}. -2003-09-23 Don Porter +2003-09-23 Don Porter * generic/tclCmdMZ.c: Fixed [Bug 807243] where * tests/trace.test (trace-31,32.*): the introspection results @@ -3684,7 +3688,7 @@ protect all calls that may cause traces on ::errorInfo or ::errorCode to corrupt the stack [Bug 804681] -2003-09-10 Don Porter +2003-09-10 Don Porter * library/opt/optparse.tcl: Overlooked dependence of opt 0.4.4 * library/opt/pkgIndex.tcl: on Tcl 8.2. Bumped to opt 0.4.4.1. @@ -3693,19 +3697,19 @@ * generic/tclIOUtil.c: backported fix from HEAD [Bug 788780] -2003-08-27 Don Porter +2003-08-27 Don Porter * generic/tclUtil.c: Corrected [Bug 411825] and other bugs in TclNeedSpace() where non-breaking space (\u00A0) and backslash-escaped spaces were handled incorrectly. * tests/util.test: Added new tests util-8.[2-6]. -2003-08-06 Jeff Hobbs +2003-08-06 Jeff Hobbs * win/tclWinInit.c: recognize amd64 and ia32_on_win64 cpus and Windows CE platform. -2003-08-06 Don Porter +2003-08-06 Don Porter * library/msgcat/msgcat.tcl: Added escape so that non-Windows * library/msgcat/pkgIndex.tcl: platforms do not try to use the @@ -3734,13 +3738,13 @@ * unix/Makefile.in: added macosx/README to dist target. -2003-07-23 Pat Thoyts +2003-07-23 Pat Thoyts * win/tclWinReg.c (OpenSubKey): Backported fix for bug 775976 which causes the registry set command to fail when built with VC7. * library/reg/pkgIndex.tcl: Incremented the version to 1.1.2. -2003-07-21 Jeff Hobbs +2003-07-21 Jeff Hobbs *** 8.4.4 TAGGED FOR RELEASE *** @@ -3756,16 +3760,16 @@ * doc/Utf.3: Tightened up documentation of Tcl_UtfNext and Tcl_UtfPrev to better match the behaviour. [Bug 769895] -2003-07-18 Jeff Hobbs +2003-07-18 Jeff Hobbs * generic/tclIOUtil.c: correct MT-safety issues with filesystem records. [Bug 753315] (vasiljevic) * library/http/pkgIndex.tcl: merged to v2.4.4 from head * library/http/http.tcl: add support for user:pass info in URL. - * tests/http.test: [Bug 759888] (shiobara) + * tests/http.test: [Bug 759888] (shiobara) -2003-07-18 Don Porter +2003-07-18 Don Porter * generic/tclBasic.c: Corrected several instances of unsafe * generic/tclCompile.c: truncation of UTF-8 strings that might @@ -3779,17 +3783,17 @@ data written to the output or error channels for comparison against what is expected. This is easier to document and agrees better with most user expectations than the previous attempt to replace [puts] - only in the caller's namespace. Documentation made more precise on + only in the caller's namespace. Documentation made more precise on the subject. [Bug 706359] - * doc/AddErrInfo.3: Improved consistency of documentation - * doc/CrtTrace.3: by using "null" everywhere to refer to - * doc/Encoding.3: the character '\0', and using "NULL" - * doc/Eval.3: everywhere to refer to the value of a - * doc/GetIndex.3: pointer that points to nowhere. - * doc/Hash.3: Also dropped references to ASCII that - * doc/LinkVar.3: are no longer true, and standardized on - * doc/Macintosh.3: the hyphenated spelling of "null-terminated". + * doc/AddErrInfo.3: Improved consistency of documentation + * doc/CrtTrace.3: by using "null" everywhere to refer to + * doc/Encoding.3: the character '\0', and using "NULL" + * doc/Eval.3: everywhere to refer to the value of a + * doc/GetIndex.3: pointer that points to nowhere. + * doc/Hash.3: Also dropped references to ASCII that + * doc/LinkVar.3: are no longer true, and standardized on + * doc/Macintosh.3: the hyphenated spelling of "null-terminated". * doc/OpenFileChnl.3: * doc/SetVar.3: * doc/StringObj.3: @@ -3803,7 +3807,7 @@ * macosx/Makefile: added var to allow overriding of tclsh used during html help building (Landon Fuller). -2003-07-16 Mumit Khan +2003-07-16 Mumit Khan * generic/tclIOUtil.c (SetFsPathFromAny): Add Cygwin specific code to convert POSIX filename to native format. @@ -3812,7 +3816,7 @@ * win/tclWinFile.c (TclpObjChdir): Use chdir on Cygwin. [Patch 679315] -2003-07-16 Jeff Hobbs +2003-07-16 Jeff Hobbs * library/safe.tcl (FileInAccessPath): normalize paths before comparison. [Bug 759607] (myers) @@ -3823,18 +3827,18 @@ 2003-07-16 Donal K. Fellows * doc/CrtSlave.3 (Tcl_MakeSafe): Updated documentation to strongly - discourage use. IMHO code outside the core that uses this + discourage use. IMHO code outside the core that uses this function is a bug... [Bug 655300] -2003-07-16 Jeff Hobbs +2003-07-16 Jeff Hobbs * generic/tcl.h: add recognition of -DTCL_UTF_MAX=6 on the - * generic/regcustom.h: make line to support UCS-4 mode. No config + * generic/regcustom.h: make line to support UCS-4 mode. No config arg at this time, as it is not the recommended build mode. * generic/tclPreserve.c: In Result and Preserve'd routines, do not - * generic/tclUtil.c: assume that ckfree == free, as that is not - * generic/tclResult.c: always true. [Bug 756791] (fuller) + * generic/tclUtil.c: assume that ckfree == free, as that is not + * generic/tclResult.c: always true. [Bug 756791] (fuller) 2003-07-16 Mo DeJong @@ -3853,7 +3857,7 @@ This approach is more flexible and better in the long run. -2003-07-16 Don Porter +2003-07-16 Don Porter * generic/tclFileName.c (Tcl_GlobObjCmd): [Bug 771840] * generic/tclIOUtil.c (Tcl_FSConvertToPathType):[Bug 771947] @@ -3873,7 +3877,7 @@ * doc/array.n: Added some examples from David Welton [Patch 763312] -2003-07-15 Don Porter +2003-07-15 Don Porter * doc/http.n: Updated SYNOPSIS to match actual syntax of commands. [Bug 756112] @@ -3894,7 +3898,7 @@ * win/configure: * generic/tclCompCmds.c (TclCompileIfCmd): Prior fix of Bug 711371 - on 2003-04-07 introduced a buffer overflow. Corrected. [Bug 771613] + on 2003-04-07 introduced a buffer overflow. Corrected. [Bug 771613] 2003-07-15 Donal K. Fellows @@ -4002,7 +4006,7 @@ * tools/index.tcl: and corrected a comment typo for the getTopics proc in index.tcl [Bug #748700]. -2003-05-23 Don Porter +2003-05-23 Don Porter * generic/tclObj.c (tclCmdNameType): Converted internal rep management of the cmdName Tcl_ObjType the opposite way, to always @@ -4022,7 +4026,7 @@ bundle identifier to succeed. This caused the tcl runtime library not to be found in all interps created after the inital one. -2003-05-20 Jeff Hobbs +2003-05-20 Jeff Hobbs * changes: updated for 8.4.3 @@ -4040,12 +4044,12 @@ * macosx/Tcl.pbproj/project.pbxproj: updated copyright year. -2003-05-15 Jeff Hobbs +2003-05-15 Jeff Hobbs * win/tclWinFile.c (TclpMatchInDirectory): revert glob code to r1.44 as 2003-04-14 optimizations broke Windows98 glob'ing. - * README: bumped version to 8.4.3 + * README: bumped version to 8.4.3 * generic/tcl.h: * macosx/Tcl.pbproj/project.pbxproj: * tools/tcl.wse.in: @@ -4066,10 +4070,10 @@ 2003-05-14 Donal K. Fellows * generic/tclCmdAH.c (Tcl_FormatObjCmd): Values which can't be - anything but wide shouldn't be demoted to long. [consequence of + anything but wide shouldn't be demoted to long. [consequence of HEAD fixes for Bug 699060] -2003-05-14 Jeff Hobbs +2003-05-14 Jeff Hobbs * library/encoding/gb2312.enc: copy euc-cn.enc over original gb2312.enc. gb2312.enc appeared to not work as expected, and most @@ -4080,7 +4084,7 @@ problem repaired when compiling on windows and using microsoft's runtime. [Bug 736421] (gravereaux) -2003-05-13 Jeff Hobbs +2003-05-13 Jeff Hobbs * generic/tclIOUtil.c: add decl for FsThrExitProc to suppress warnings. @@ -4120,13 +4124,13 @@ being thread-safe on Mac OS X by defining NO_REALPATH for threaded builds on Mac OS X. [Bug 711232] -2003-05-12 Don Porter +2003-05-12 Don Porter * generic/tclInterp.c: (AliasObjCmd): Added refCounting of the words * tests/interp.test (interp-33.1): of the target of an interp alias during its execution. Also added test. [Bug 730244]. - * generic/tclBasic.c (TclInvokeObjectCommand): objv[argc] is no + * generic/tclBasic.c (TclInvokeObjectCommand): objv[argc] is no longer set to NULL (Tcl_CreateObjCommand docs already say that it should not be accessed). @@ -4146,7 +4150,7 @@ * unix/tclUnixThrd.c: corrected Tcl Bug #723502 -2003-05-10 Jeff Hobbs +2003-05-10 Jeff Hobbs * generic/tclIOUtil.c: ensure cd is thread-safe. [Bug #710642] (vasiljevic) @@ -4172,7 +4176,7 @@ * tools/encoding/txt2enc.c (main): Fixed memory leak caused by failing to free the memory used by the toUnicode array of strings [Bug 733221]. -2003-05-05 Don Porter +2003-05-05 Don Porter * library/tcltest/tcltest.tcl: The -returnCodes option to [test] failed to recognize the symbolic name "ok" for return code 0. @@ -4187,12 +4191,12 @@ * generic/tclFileName.c: fix to bug reported privately by Jeff where, for example, 'glob -path {[tcl]} *' gets confused by the leading special character (which is escaped internally), - and instead lists files in '/'. Bug only occurs on Windows + and instead lists files in '/'. Bug only occurs on Windows where '\' is also a directory separator. (Bug has been around at least since Tcl 8.3). * tests/fileName.test: added test for the above bug. -2003-04-25 Don Porter +2003-04-25 Don Porter * generic/tclBasic.c: Tcl_EvalObjv() failed to honor the TCL_EVAL_GLOBAL flag when resolving command names. Tcl_EvalEx @@ -4210,14 +4214,14 @@ This is a stop-gap measure to deal with the low number of ?TLS slots provided by some of the variants of Windows (60-80). -2003-04-21 Don Porter +2003-04-21 Don Porter - * library/tcltest/tcltest.tcl: When the return code of a test does + * library/tcltest/tcltest.tcl: When the return code of a test does not meet expectations, report that as the reason for test failure, and do not attempt to check the test result for correctness. [Bug 725253] -2003-04-18 Jeff Hobbs +2003-04-18 Jeff Hobbs * generic/tclExecute.c (ExprCallMathFunc): remove incorrect extraneous cast from Tcl_WideAsDouble. @@ -4229,7 +4233,7 @@ channel to describe the channel's special config options. [Bug 679010] -2003-04-16 Don Porter +2003-04-16 Don Porter * generic/tcl.h Made changes so that the "wideInt" Tcl_ObjType * generic/tclObj.c is defined on all platforms, even those where @@ -4238,7 +4242,7 @@ a ***POTENTIAL INCOMPATIBILITY*** for TCL_WIDE_INT_IS_LONG platforms because that struct changes size. This is the same TIP 72 incompatibility that was seen on other platforms at the 8.4.0 release, - when this change should have happened as well. [Bug 713562] + when this change should have happened as well. [Bug 713562] * generic/tclInt.h: New internal macros TclGetWide() and TclGetLongFromWide() to deal with both forms of the "wideInt" @@ -4262,12 +4266,12 @@ * doc/CrtMathFnc.3: Functions also have to deal with wide ints, but this was not documented. [Bug 709720] -2003-04-15 Kevin Kenny +2003-04-15 Kevin Kenny * win/tclWinTime.c: Corrected use of types to make compilation compatible with VC++5. -2003-04-14 Kevin Kenny +2003-04-14 Kevin Kenny * win/tclWinFile.c: added conditionals to restore compilation on VC++6, which was broken by recent changes. @@ -4287,7 +4291,7 @@ points which are symlinks and mounted volumes, and correctly handle the latter. This involves some elaborate code to find the actual drive letter (if possible) corresponding to a mounted - volume. [Bug #697862] + volume. [Bug #697862] * tests/fileSystem.test: add constraints to stop tests running in ordinary tcl interpreter. [Bug #705675] * generic/tclIOUtil.c: Some re-arrangement of code to bring it @@ -4302,20 +4306,20 @@ * tests/unixFCmd.test: renumbered tests with duplicate numbers. (Bug #710361) -2003-04-12 Kevin Kenny +2003-04-12 Kevin Kenny * tests/clock.test: Renumbered test cases to avoid duplicates [Bug 710310]. * tests/winTime.test: * win/tclWinTest.c (TestwinclockCmd, TestwinsleepCmd): * win/tclWinTime.c (Tcl_WinTime, UpdateTimeEachSecond, - ResetCounterSamples, AccumulateSample, - SAMPLES, TimeInfo): Made substantial changes + ResetCounterSamples, AccumulateSample, + SAMPLES, TimeInfo): Made substantial changes to the phase-locked loop (replaced an IIR filter with an FIR one) in a quest for improved loop stability (Bug not logged at SF, but cited in private communication from Jeff Hobbs). -2003-04-11 Don Porter +2003-04-11 Don Porter * generic/tclCmdMZ.c (Tcl_StringObjCmd,STR_IS_INT): Corrected inconsistent results of [string is integer] observed on systems @@ -4423,7 +4427,7 @@ created local variable, bugs #631741 (Chris Darroch) and #696893 (David Hilker). -2003-03-22 Kevin Kenny +2003-03-22 Kevin Kenny * library/dde/pkgIndex.tcl: * library/reg/pkgIndex.tcl: Fixed a bug where [package require dde] @@ -4435,7 +4439,7 @@ that fails to launch tcltest without it, and it appears harmless otherwise. -2003-03-20 Don Porter +2003-03-20 Don Porter * generic/tclInt.h (tclOriginalNotifier): * generic/tclStubInit.c (tclOriginalNotifier): @@ -4460,13 +4464,13 @@ * tests/compile.test: bad command count on TCL_OUT_LINE_COMPILE [Bug 705406] (Don Porter). -2003-03-19 Don Porter +2003-03-19 Don Porter * doc/Eval.3 (Tcl_EvalObjEx): Corrected CONST and * doc/ParseCmd.3 (Tcl_EvalTokensStandard): return type errors in documentation. [Bug 683994] -2003-03-18 Kevin Kenny +2003-03-18 Kevin Kenny * tests/registry.test: Changed the conditionals to avoid an abort if [testlocale] is missing, as when running the test in @@ -4494,7 +4498,7 @@ * doc/lsearch.n: Altered documentation of -ascii options so * doc/lsort.n: they don't specify that they operate on ASCII strings, which they never did - anyway. [Bug #703807] + anyway. [Bug #703807] 2003-03-14 Donal K. Fellows @@ -4505,15 +4509,15 @@ * generic/tclCmdAH.c (Tcl_FormatObjCmd): Only add the modifier that indicates we've got a wide int when we're formatting in an - integer style. Stops some libc's from going mad. [Bug #702622] + integer style. Stops some libc's from going mad. [Bug #702622] Also tidied whitespace. -2003-03-13 Kevin Kenny +2003-03-13 Kevin Kenny * win/makefile.vc: Backed the version to 8.4 on the 8.4 branch. (I just loathe sticky tags). -2003-03-12 Don Porter +2003-03-12 Don Porter * generic/tcl.h: Removed TCL_PREFIX_IDENT and TCL_DEBUG_IDENT * win/tclWinPipe.c: from tcl.h -- they are not part of Tcl's @@ -4521,14 +4525,14 @@ * generic/tclCmdMZ.c (Tcl_SubstObj): Corrected and added test for * tests/subst.test (subst-2.4): Tcl_SubstObj's incorrect - halting of substitution at the first \x00 byte. [Bug 685106] + halting of substitution at the first \x00 byte. [Bug 685106] * generic/tclInterp.c (Tcl_InterpObjCmd): Corrected and added - * tests/interp.test (interp-2.13): test for option + * tests/interp.test (interp-2.13): test for option parsing beyond objc for [interp create --]. Thanks to Marco Maggi. [Bug 702383] -2003-03-11 Kevin Kenny +2003-03-11 Kevin Kenny * win/makefile.vc: Added two missing uses of $(DBGX) so that tclpip8x.dll loads without panicking on Win9x. @@ -4544,7 +4548,7 @@ * tests/utf.test (utf-25.*): properly compare Unicode strings of different case in a case insensitive manner. [Bug 699042] -2003-03-03 Jeff Hobbs +2003-03-03 Jeff Hobbs *** 8.4.2 TAGGED FOR RELEASE *** @@ -4562,7 +4566,7 @@ * mac/tclMacUtil.c (FSpLocationFromPathAlias): fix to enable stat'ing of broken links. -2003-03-03 Kevin Kenny +2003-03-03 Kevin Kenny * win/Makefile.vc: corrected bug introduced by 'g' for debug builds. @@ -4576,7 +4580,7 @@ * library/opt/pkgIndex.tcl: updated package index to version 0.4.4 -2003-02-28 Jeff Hobbs +2003-02-28 Jeff Hobbs * win/configure: * win/configure.in: check for 'g' for debug build type, not 'd'. @@ -4587,7 +4591,7 @@ * doc/file.n: subcommand is 'file volumes' not 'file volume' -2003-02-27 Jeff Hobbs +2003-02-27 Jeff Hobbs * generic/tclIOUtil.c (MakeFsPathFromRelative): removed dead code check of typePtr (darley). @@ -4646,9 +4650,9 @@ * mac/tclMacChan.c (TclpCutFileChannel, TclpSpliceFileChannel): Implemented missing cut and splice procs for file channels. -2003-02-21 Don Porter +2003-02-21 Don Porter - * library/package.tcl (tclPkgUnknown): Minor performance tweaks + * library/package.tcl (tclPkgUnknown): Minor performance tweaks to reduce the number of [file] invocations. Meant to improve startup times, at least a little bit. [Patch 687906] @@ -4660,11 +4664,11 @@ 100 times faster thank fork on macosx). * unix/configure: regen. -2003-02-20 Jeff Hobbs +2003-02-20 Jeff Hobbs * generic/tclEncoding.c (LoadTableEncoding): - * library/encoding/cp932.enc: Correct jis round-trip encoding - * library/encoding/euc-jp.enc: by adding 'R' type to .enc files. + * library/encoding/cp932.enc: Correct jis round-trip encoding + * library/encoding/euc-jp.enc: by adding 'R' type to .enc files. * library/encoding/iso2022-jp.enc: [Patch #689341] (koboyasi, taguchi) * library/encoding/jis0208.enc: * library/encoding/shiftjis.enc: @@ -4679,7 +4683,7 @@ * doc/regsub.n: Typo fix [Bug #688943] -2003-02-19 Jeff Hobbs +2003-02-19 Jeff Hobbs * unix/tclUnixThrd.c (TclpReaddir): * unix/tclUnixPort.h: update to Bug 689100 patch to ensure that @@ -4725,7 +4729,7 @@ * unix/configure: Regenerated. -2003-02-18 Jeff Hobbs +2003-02-18 Jeff Hobbs * generic/tclIO.c (HaveVersion): correctly decl static @@ -4749,16 +4753,16 @@ * generic/tclBasic.c (TclRenameCommand): fixing error in previous commit. -2003-02-17 Jeff Hobbs +2003-02-17 Jeff Hobbs * generic/tclExecute.c (TclExecuteByteCode INST_STR_MATCH): * generic/tclCmdMZ.c (Tcl_StringObjCmd STR_MATCH): * generic/tclUtf.c (TclUniCharMatch): - * generic/tclInt.decls: add private TclUniCharMatch function that + * generic/tclInt.decls: add private TclUniCharMatch function that * generic/tclIntDecls.h: does string match on counted unicode * generic/tclStubInit.c: strings. Tcl_UniCharCaseMatch has the - * tests/string.test: failing that it can't handle strings or - * tests/stringComp.test: patterns with embedded NULLs. Added + * tests/string.test: failing that it can't handle strings or + * tests/stringComp.test: patterns with embedded NULLs. Added tests that actually try strings/pats with NULLs. TclUniCharMatch should be TIPed and made public in the next minor version rev. @@ -4775,7 +4779,7 @@ TCL_TRANSLATE_AUTO case block. The other cases assign eol so this does not change any functionality. -2003-02-17 Kevin Kenny +2003-02-17 Kevin Kenny * tests/notify.test: Removed Windows line terminators. [Bug 687913]. @@ -4794,11 +4798,11 @@ * tests/subst.test (8.6): Don Porter's fix for bad parsing of nested scripts [Bug 681841]. -2003-02-15 Kevin Kenny +2003-02-15 Kevin Kenny * tests/notify.test (new-file): * generic/tclTest.c (TclTest_Init, EventtestObjCmd, EventtestProc, - EventTestDeleteProc): + EventTestDeleteProc): * generic/tclNotify.c (Tcl_DeleteEvents): Fixed Tcl_DeleteEvents not to get a pointer smash when deleting the last event in the queue. Added test code in 'tcltest' and a new file of test cases @@ -4809,7 +4813,7 @@ * unix/tclUnixTest.c (TestfilehandlerCmd): Corrected a couple of typos in error messages. [Bug 596027] -2003-02-14 Jeff Hobbs +2003-02-14 Jeff Hobbs * README: Bumped to version 8.4.2. * generic/tcl.h: @@ -4827,7 +4831,7 @@ * unix/tcl.m4: correct HP-UX ia64 --enable-64bit build flags -2003-02-14 Kevin Kenny +2003-02-14 Kevin Kenny * win/tclWinTime.c: Added code to test and compensate for forward leaps of the performance counter. See the MSDN Knowledge @@ -4842,7 +4846,7 @@ accounts for the observed behavior and suspect a fault in the RTC chip. -2003-02-13 Kevin Kenny +2003-02-13 Kevin Kenny * win/tclWinInit.c: Added conversion from the system encoding to tcl_platform(user), so that it works with non-ASCII7 user names. @@ -4858,13 +4862,13 @@ * unix/tclUnixFile.c: fix for [Bug 685445] when using 'glob -l' on broken symbolic links. Added two new tests for this bug. -2003-02-11 Kevin Kenny +2003-02-11 Kevin Kenny * tests/http.test: Corrected a problem where http-4.14 would fail - when run in an environment with a proxy server. Replaced references + when run in an environment with a proxy server. Replaced references to scriptics.com by tcl.tk. -2003-02-11 Jeff Hobbs +2003-02-11 Jeff Hobbs * tests/lsearch.test: * generic/tclCmdIL.c (Tcl_LsearchObjCmd): protect against the case @@ -4884,7 +4888,7 @@ * generic/tclParse.c (CommandComplete): * tests/parse.test: fix for [Bug 684744], by Don Porter. -2003-02-11 Jeff Hobbs +2003-02-11 Jeff Hobbs * generic/tclIOUtil.c (Tcl_FSJoinPath, Tcl_FSGetNormalizedPath): (UpdateStringOfFsPath): revert the cwdLen == 0 check and instead @@ -4937,7 +4941,7 @@ * generic/tclTest.c: Fix for [Bug 683181] where test suite left files in 'tmp'. -2003-02-08 Jeff Hobbs +2003-02-08 Jeff Hobbs * library/safe.tcl: code cleanup of eval and string comp use. @@ -4985,12 +4989,12 @@ * tests/incr.test: Add tests to make sure the compiled and non-compiled errorInfo messages are the same. -2003-02-06 Don Porter +2003-02-06 Don Porter - * library/tcltest/tcltest.tcl: Filename arguments to [outputChannel] + * library/tcltest/tcltest.tcl: Filename arguments to [outputChannel] and [errorChannel] (also -outfile and -errfile) were [open]ed but - never [closed]. Also, [cleanupTests] could remove output or error - files. [Bug 676978]. + never [closed]. Also, [cleanupTests] could remove output or error + files. [Bug 676978]. * library/tcltest/pkgIndex.tcl: Bumped to version 2.2.2. 2003-02-05 Mo DeJong @@ -5015,7 +5019,7 @@ * tests/fileSystem.test: fix to finalization/unloading/encoding issues to make filesystem much less dependent on encodings for its cleanup, and therefore allow it to be finalized later in the - exit process. This fixes fileSystem.test-7.1. Also fixed one + exit process. This fixes fileSystem.test-7.1. Also fixed one more bug in setting of modification dates of files which have undergone cross-platform copies. [Patch 676271] @@ -5029,7 +5033,7 @@ * generic/tclTest.c: added regression test for the modification date setting of cross-platform file copies. -2003-02-03 Kevin Kenny +2003-02-03 Kevin Kenny * generic/tclBasic.c: Changed [trace add command] so that 'rename' callbacks get fully qualified names of the command. [Bug @@ -5040,7 +5044,7 @@ * doc/trace.n: Added language about use of fully qualified names in trace callbacks. -2003-02-01 Kevin Kenny +2003-02-01 Kevin Kenny * generic/tclCompCmds.c: Removed an unused variable that caused compiler warnings on SGI. [Bug 664379] @@ -5070,10 +5074,10 @@ * generic/tclClock.c: Expanded mutex protection around the setting of env(TZ) and the thread-unsafe call to tzset(). [Bug 656660] -2003-01-31 Don Porter +2003-01-31 Don Porter * tests/tcltest.test: Cleaned up management of file/directory - creation/deletion to improve "-debug 1" output. [Bug 675614] + creation/deletion to improve "-debug 1" output. [Bug 675614] The utility [slave] command failed to properly [list]-quote a constructed [open] command, causing failure when the pathname contained whitespace. [Bug 678415] @@ -5081,7 +5085,7 @@ * tests/main.test: Stopped main.test from deleting existing file. Test suite should not delete files that already exist. [Bug 675660] -2003-01-28 Don Porter +2003-01-28 Don Porter * tests/main.test: Constrain tests that do not work on Windows. [Bug 674387] @@ -5179,7 +5183,7 @@ compiling with gcc to invoke _alloca with the size argument loaded into a register. -2003-01-24 Jeff Hobbs +2003-01-24 Jeff Hobbs * win/tclWinDde.c (Dde_Init): clarified use of tsdPtr. (DdeServerProc): better refcount handling of returnPackagePtr. @@ -5223,7 +5227,7 @@ documentation examples [SF Bug #658463] and tidied up a bit at the same time. -2003-01-21 Joe English +2003-01-21 Joe English * doc/namespace.n (namespace inscope): Clarified documentation [SF Patch #670110] @@ -5237,7 +5241,7 @@ the --enable-shared flag. This matches the UNIX implementation. -2003-01-18 Jeff Hobbs +2003-01-18 Jeff Hobbs * generic/tclCkalloc.c: change %ud to %u as appropriate. @@ -5285,7 +5289,7 @@ - fixed some minor error message details - added a number of new tests -2003-01-16 Jeff Hobbs +2003-01-16 Jeff Hobbs * win/tclWinSerial.c (SerialOutputProc): add casts for bytesWritten to allow strict compilation (no warnings). @@ -5318,7 +5322,7 @@ * win/tclWinSock.c: Add casts and fixup decls to avoid compiler warnings. -2003-01-14 Jeff Hobbs +2003-01-14 Jeff Hobbs * generic/tclClock.c (FormatClock): corrected typo that incorrectly conditionally defined savedTZEnv and savedTimeZone. @@ -5391,9 +5395,9 @@ * win/makefile.vc: fix to minor VC++ 5.2 syntax problem -2003-01-09 Don Porter +2003-01-09 Don Porter - * generic/tclCompCmds.c (TclCompilerReturnCmd): Corrected off-by-one + * generic/tclCompCmds.c (TclCompilerReturnCmd): Corrected off-by-one problem with recent commit. [Bug 633204] 2003-01-09 Vince Darley @@ -5412,12 +5416,12 @@ setting mtime and atime through 'file (a|m)time $path $time' [Bug 634151] -2003-01-08 Don Porter +2003-01-08 Don Porter * generic/tclExecute.c (TclExprFloatError): Use the IS_NAN macro for greater clarity of code. -2003-01-07 Don Porter +2003-01-07 Don Porter * generic/tclCompCmds.c (TclCompileReturnCmd): * tests/compile.test: Corrects failure of bytecompiled @@ -5428,17 +5432,17 @@ 2003-01-04 David Gravereaux * win/makefile.vc: - * win/rules.vc: Fixed INSTALLDIR macro problem that blanked itself + * win/rules.vc: Fixed INSTALLDIR macro problem that blanked itself by accident causing the install target to put the tree at the root - of the drive built on. Whoops.. + of the drive built on. Whoops.. Renamed the 'linkexten' option to be 'staticpkg'. Added 'thrdalloc' to allow the switching _on_ of the thread allocator. Under testing, I found it not to be benificial under windows for the purpose of the - application I was using it for. It was more important for this app + application I was using it for. It was more important for this app that resources for tcl threads be returned to the system rather than saved/moved to the global recycler. Be extra clean or extra fast - for the default threaded build? Let's move to clean and allow it to + for the default threaded build? Let's move to clean and allow it to be switched on for users who find it benificial for their use of threads. @@ -5447,7 +5451,7 @@ * win/makefile.vc: some uses of xcopy swapped to the @$(CPY) macro. Reported by Joe Mistachkin . -2002-12-17 Jeff Hobbs +2002-12-17 Jeff Hobbs * generic/tclNotify.c (TclFinalizeNotifier, Tcl_SetServiceMode): (Tcl_ThreadAlert): Check that the stub functions are non-NULL @@ -5461,14 +5465,14 @@ * win/tclWinTest.c: Gave Tcl_WaitPid the ability to return a Win32 exception code translated into a posix style SIG*. This allows [close] to report "CHILDKILLED" without the meaning - getting lost in a truncated exit code. In TclCleanupChildren(), + getting lost in a truncated exit code. In TclCleanupChildren(), TclpGetPid() had to get moved to before Tcl_WaitPid() as the the handle is removed from the list taking away the ability to get the process id after the wait is done. This shouldn't effect the unix implimentaion unless waitpid is called with a pid of zero, meaning "any". I don't think it is.. -2002-12-13 Don Porter +2002-12-13 Don Porter * unix/configure.in: Updated configure of CVS snapshots to reflect * win/configure.in: the 8.4.1.1 patchlevel. @@ -5476,7 +5480,7 @@ * unix/configure: autoconf * win/configure autoconf -2002-12-11 Don Porter +2002-12-11 Don Porter * generic/tclProc.c (ProcessProcResultCode): Fix failure to propagate negative return codes up the call stack. [Bug 647307] @@ -5486,7 +5490,7 @@ string "0x" (recognize leading "0" as an integer). [Bug 648441]. * tests/parseExpr.test (parseExpr-19.1): Test for Bug 648441. -2002-12-09 Jeff Hobbs +2002-12-09 Jeff Hobbs * win/tclWinThrd.c (TclpMasterUnlock): * generic/tclThread.c (TclFinalizeThreadData): TclpMasterUnlock @@ -5501,7 +5505,7 @@ swapped is still 0x0101, properly claiming which is major/minor is more correct. -2002-12-06 Jeff Hobbs +2002-12-06 Jeff Hobbs * generic/tclStubInit.c: regen * generic/tclIntPlatDecls.h: regen @@ -5510,7 +5514,7 @@ * win/tclWin32Dll.c (TclWinResetInterfaces): * win/tclWinInit.c (TclpSetInitialEncodings, WinEncodingsCleanup): add exit handler that resets the encoding information to a state - where we can reuse Tcl. Following these changes, it is possible + where we can reuse Tcl. Following these changes, it is possible to reuse Tcl (following Tcl_FindExecutable or Tcl_CreateInterp) following a Tcl_Finalize. @@ -5549,7 +5553,7 @@ * generic/tclTestObj.c: patch omitted from previous change of 2002-11-13 -2002-12-03 Jeff Hobbs +2002-12-03 Jeff Hobbs * generic/tclStubLib.c (Tcl_InitStubs): prevent the cached check of tclStubsPtr to allow for repeated load/unload of the Tcl dll by @@ -5560,7 +5564,7 @@ * win/tclAppInit.c (sigHandler): Protect from trying to close a NULL handle. - * win/tclWinPipe.c (PipeClose2Proc, TclpCreateProcess): Send a + * win/tclWinPipe.c (PipeClose2Proc, TclpCreateProcess): Send a real Win32 signal (CTRL_C_EVENT) when the read channel is brought down to alert the child to close on its side. Start the process with CREATE_NEW_PROCESS_GROUP to allow the ability to send these @@ -5595,7 +5599,7 @@ * win/tclWinChan.c (Tcl_MakeFileChannel): return of DuplicateHandle() incorrectly used [Bug 618852]. -2002-11-26 Jeff Hobbs +2002-11-26 Jeff Hobbs * generic/tclEncoding.c (TclFinalizeEncodingSubsystem): properly cleanup all encodings by using Tcl_FirstHashEntry in the while loop. @@ -5613,7 +5617,7 @@ * win/tclWinSock.c: This patch does two things: 1) Cleans-up the winsock typedefs by using the typedefs - provided by winsock2.h. This has no effect on how winsock + provided by winsock2.h. This has no effect on how winsock is initialized; just makes the source code easier to read. [Patch 561305 561301] @@ -5634,7 +5638,7 @@ * win/tclWinSock.c: * win/tclWinThrd.c: * win/tclWinTime.c: General cleanup of all worker threads used - by the channel drivers. Eliminates the normal case where the + by the channel drivers. Eliminates the normal case where the worker thread is terminated ('cept the winsock one). Instead, use kernel events to signal a clean exit. Only when the worker thread is blocked on an I/O call is the thread terminated. @@ -5648,16 +5652,16 @@ * win/README: Update msys build env URL. This release #4 build both tcl and tk without problems. -2002-11-22 Jeff Hobbs +2002-11-22 Jeff Hobbs - * library/init.tcl: code cleanup to reduce use of + * library/init.tcl: code cleanup to reduce use of * library/opt/optparse.tcl: string compare * tests/interp.test: interp-14.4 * generic/tclInterp.c (TclPreventAliasLoop): prevent seg fault when creating an alias command over the interp name. [Bug #641195] -2002-11-18 Jeff Hobbs +2002-11-18 Jeff Hobbs * generic/tclUtil.c (SetEndOffsetFromAny): handle integer offset after the "end-" prefix. @@ -5671,12 +5675,12 @@ 2002-11-18 David Gravereaux * win/tclWinThrd.c (Tcl_CreateThread/TclpThreadExit): Fixed - improper compiler macros that missed the VC++ compiler. This + improper compiler macros that missed the VC++ compiler. This resulted in VC++ builds using CreateThread()/ExitThread() in place - of the proper _beginthreadex()/_endthreadex(). This was a large + of the proper _beginthreadex()/_endthreadex(). This was a large error and am surprised I missed seeing it earlier. -2002-11-13 Jeff Hobbs +2002-11-13 Jeff Hobbs * generic/regexpComp.test: added tests 22.* * generic/tclCompCmds.c (TclCompileRegexpCmd): add left and right @@ -5702,7 +5706,7 @@ * doc/RegExp.3: clarification of the 'extendMatch' return values. -2002-11-11 Jeff Hobbs +2002-11-11 Jeff Hobbs * generic/tclUtil.c (Tcl_Backslash): use TclUtfToUniChar. (Tcl_StringCaseMatch): use TclUtfToUniChar and add further @@ -5743,15 +5747,15 @@ * generic/tclInt.h: add macro version of Tcl_UtfToUniChar (TclUtfToUniChar) that does the one-byte utf-char check without - calling Tcl_UtfToUniChar, for use by the core. This brings + calling Tcl_UtfToUniChar, for use by the core. This brings notable speedups for primarily ascii string handling. * generic/tcl.h (TCL_PATCH_LEVEL): bump to 8.4.1.1 for patchlevel only. This interim number will only be reflected by [info patchlevel]. -2002-11-11 Kevin Kenny - * doc/Tcl.n: Corrected indentation of the new language. Oops. +2002-11-11 Kevin Kenny + * doc/Tcl.n: Corrected indentation of the new language. Oops. 2002-11-10 Kevin Kenny @@ -5792,7 +5796,7 @@ STATIC_BUILD and TCL_USE_STATIC_PACKAGES macros are set. * win/makefile.vc: - * win/rules.vc: linkexten option now sets the TCL_USE_STATIC_PACKAGES + * win/rules.vc: linkexten option now sets the TCL_USE_STATIC_PACKAGES macro which also adds the registry and dde object files to the link of the shell. [Patch 479697] Also factored some additional macros that will be helpful for extension authors. Version grepping of tcl.h @@ -5829,7 +5833,7 @@ * library/reg/pkgIndex.tcl: Changed the hardwired debug suffix (d) to the correct suffix (g). -2002-10-28 Don Porter +2002-10-28 Don Porter * library/auto.tcl: Converted the Mac-specific [package unknown] * library/init.tcl: behavior to use a chaining mechanism to extend @@ -5847,7 +5851,7 @@ and HistoryRev structures (the history mechanism has been written in Tcl for some time now.) -2002-10-22 Jeff Hobbs +2002-10-22 Jeff Hobbs *** 8.4.1 TAGGED FOR RELEASE *** @@ -5884,7 +5888,7 @@ * generic/tcl.h: Added reminder comment to edit macosx/Tcl.pbproj/project.pbxproj when version number changes. -2002-10-18 Jeff Hobbs +2002-10-18 Jeff Hobbs * library/reg/pkgIndex.tcl: * win/configure: @@ -5899,17 +5903,17 @@ * unix/Makefile.in (dist): add any mac/tcl*.sea.hqx files -2002-10-17 Don Porter +2002-10-17 Don Porter * generic/tclVar.c: Fixed code that check for proper # of args to - * tests/var.test: [array names]. Added test. [Bug 624755] + * tests/var.test: [array names]. Added test. [Bug 624755] -2002-10-16 Jeff Hobbs +2002-10-16 Jeff Hobbs - * win/configure: add workaround for cygwin windres + * win/configure: add workaround for cygwin windres * win/tcl.m4 (SC_CONFIG_CFLAGS): problem. [Patch #624010] (howell) -2002-10-15 Jeff Hobbs +2002-10-15 Jeff Hobbs * README: added archives.tcl.tk note @@ -5923,7 +5927,7 @@ * tests/trace.test: applied patch from Hemang Levana to fix [Bug #615043] in execution traces with idle tasks firing. -2002-10-14 Jeff Hobbs +2002-10-14 Jeff Hobbs * generic/tclEnv.c (Tcl_PutEnv): correct possible mem leak. [Patch #623269] (brouwers) @@ -5934,7 +5938,7 @@ #defines to let people building with Cygwin build correctly. Also made some comments less misleading... -2002-10-10 Jeff Hobbs +2002-10-10 Jeff Hobbs * README: fixed minor nits [Bug #607776] (virden) @@ -5942,7 +5946,7 @@ * win/tcl.m4: enable USE_THREAD_ALLOC (new threaded allocator) by default in cygwin configure on Windows. -2002-10-10 Don Porter +2002-10-10 Don Porter * doc/Tcl.n: Clarified that namespace separators are legal in the variable names during $-subtitution. [Bug 615139] @@ -5963,7 +5967,7 @@ up by the OS on your PATH/LD_LIBRARY_PATH as appropriate). Fixes [Bug 611108] -2002-10-09 Jeff Hobbs +2002-10-09 Jeff Hobbs * unix/README: doc'ed --enable-symbols options. * unix/Makefile.in: removed @MEM_DEBUG_FLAGS@ subst. @@ -6032,7 +6036,7 @@ * tools/eolFix.tcl, tools/genStubs.tcl: [file exist] -> [file exists] Thanks to David Welton. -2002-10-03 Don Porter +2002-10-03 Don Porter * doc/tcltest.n: fixed typo [Bug 618018]. Thanks to "JJM". @@ -6047,7 +6051,7 @@ * doc/lsearch.n: Better specification of what happens when -sorted is mixed with other options. [Bug 617816] -2002-10-01 Jeff Hobbs +2002-10-01 Jeff Hobbs * generic/tclProc.c (TclCreateProc): mask out VAR_UNDEFINED for precompiled locals to support 8.3 precompiled code. @@ -6058,7 +6062,7 @@ * doc/socket.n: Mentioned that ports may be specified as serivce names as well as integers. [Bug 616843] -2002-09-30 Jeff Hobbs +2002-09-30 Jeff Hobbs * generic/tclCompCmds.c (TclCompileRegexpCmd): correct the checking for bad re's that didn't terminate the re string. @@ -6077,7 +6081,7 @@ rules and defines USE_THREAD_ALLOC when TCL_THREADS is defined to get the new behavior by default. -2002-09-27 Don Porter +2002-09-27 Don Porter * README: Bumped to version 8.4.1 to avoid confusion * generic/tcl.h: of CVS snapshots with the actual 8.4.0 @@ -6089,7 +6093,7 @@ * unix/configure: autoconf * win/configure: -2002-09-26 Jeff Hobbs +2002-09-26 Jeff Hobbs * unix/configure: regen. * unix/tcl.m4: improve AIX-4/5 64bit compilation support. @@ -6114,7 +6118,7 @@ (SC_PATH_TKCONFIG): Likewise. (SC_PROG_TCLSH): Likewise. (SC_CONFIG_CFLAGS): Assume real Cygwin port and remove -mno-cygwin - flags. Add -mwin32 to extra_cflags and extra_ldflags. + flags. Add -mwin32 to extra_cflags and extra_ldflags. Remove ``-e _WinMain@16'' from LDFLAGS_WINDOW. * win/configure.in: Allow Cygwin build. (SEH test): Define to be 1 instead of empty value. @@ -6161,12 +6165,12 @@ appropriate moment. I believe this is the cause of [Bug 613117] * doc/lset.n: Changed 'list' to 'varName' for consistency with - lappend documentation. Thanks to Glenn Jackman [Bug 611719] + lappend documentation. Thanks to Glenn Jackman [Bug 611719] -2002-09-22 Don Porter +2002-09-22 Don Porter - * library/tcltest/tcltest.tcl: Corrected [puts -nonewline] within - test bodies. Thanks to Harald Kirsch. [Bug 612786, Patch 612788] + * library/tcltest/tcltest.tcl: Corrected [puts -nonewline] within + test bodies. Thanks to Harald Kirsch. [Bug 612786, Patch 612788] Also corrected reporting of body return code. Thanks to David Taback [Bug 611922] * library/tcltest/pkgIndex.tcl: Bump to version 2.2.1. @@ -6219,11 +6223,11 @@ @executable_path/../Frameworks via the new DYLIB_INSTALL_DIR unix/Makefile variable. -2002-09-10 Jeff Hobbs +2002-09-10 Jeff Hobbs *** 8.4.0 TAGGED FOR RELEASE *** -2002-09-06 Don Porter +2002-09-06 Don Porter * doc/file.n: Format correction, and clarified [file normalize] returns an absolute path. @@ -6234,13 +6238,13 @@ * tests/tcltest.test: Added nonRoot flag to tests 8.3, 8.4, and 8.12. -2002-09-05 Don Porter +2002-09-05 Don Porter * doc/tcltest.n: Clarified phrasing. * generic/tclBasic.c (TclRenameCommand,CallCommandTraces): * tests/trace.test (trace-27.1): Corrected memory leak when a rename - trace deleted the command being traced. Test added. Thanks to + trace deleted the command being traced. Test added. Thanks to Hemang Lavana for the fix. [Bug 604609] * generic/tclVar.c (TclDeleteVars): Corrected logic for setting the @@ -6251,12 +6255,12 @@ * generic/tclVar.c (DeleteArray): leak plug [Bug 604239]. Thanks to dkf and dgp for the long and difficult discussion in the chat. -2002-09-03 Jeff Hobbs +2002-09-03 Jeff Hobbs * generic/tclVar.c (Tcl_UpVar2): code cleanup to not use goto * unix/configure: remove -pthread from LIBS on FreeBSD in thread - * unix/tcl.m4: enabled build. [Bug #602849] + * unix/tcl.m4: enabled build. [Bug #602849] 2002-09-03 Miguel Sofer @@ -6273,11 +6277,11 @@ * generic/tclVar.c (Tcl_UpVar2): a Tcl_Obj was being leaked on error return from TclGetFrame. -2002-09-03 Don Porter +2002-09-03 Don Porter * changes: Updated changes for 8.4.0 release. -2002-09-02 Jeff Hobbs +2002-09-02 Jeff Hobbs * unix/tclUnixFile.c (TclpObjLink): removed unnecessary/unfreed extra native char*. @@ -6449,7 +6453,7 @@ configure to (de)activate memory validation and debugging (TCL_MEM_DEBUG). No need to modify the makefile anymore. -2002-08-20 Don Porter +2002-08-20 Don Porter * generic/tclCkalloc.c: CONSTified MemoryCmd and CheckmemCmd. @@ -6520,11 +6524,11 @@ * tests/subst.test: added 5.8-10 as further tests for [Bug 495207] -2002-08-08 Don Porter +2002-08-08 Don Porter * tests/README: Noted removal of defs.tcl. -2002-08-08 Jeff Hobbs +2002-08-08 Jeff Hobbs * doc/lsearch.n: corrected lsearch docs to use -inline in examples. @@ -6534,7 +6538,7 @@ * tests/unixFCmd.test: updated tests for new link copy behavior. * generic/tclFCmd.c (CopyRenameOneFile): changed the behavior to follow links to endpoints and copy that file/directory instead of - just copying the surface link. This means that trying to copy a + just copying the surface link. This means that trying to copy a link that has no endpoint (danling link) is an error. [Patch #591647] (darley) (CopyRenameOneFile): this is currently disabled by default until @@ -6575,18 +6579,18 @@ * generic/tclIntPlatDecls.h: * generic/tclStubInit.c: Regen. -2002-08-05 Don Porter +2002-08-05 Don Porter * library/tcltest/tcltest.tcl: The setup and cleanup scripts are now * library/tcltest/pkgIndex.tcl: skipped when a test is skipped, fixing * tests/tcltest.test: [Bug 589859]. Test for bug added, and corrected tcltest package bumped to version 2.2. - * generic/tcl.decls: Restored Tcl_Concat to return (char *). Like + * generic/tcl.decls: Restored Tcl_Concat to return (char *). Like * generic/tclDecls.h: Tcl_Merge, it transfers ownership of a dynamic * generic/tclUtil.c: allocated string to the caller. -2002-08-04 Don Porter +2002-08-04 Don Porter * doc/CmdCmplt.3: Applied Patch 585105 to fully CONST-ify * doc/Concat.3: all remaining public interfaces of Tcl. @@ -6711,7 +6715,7 @@ * unix/configure.in: Added test and fallback definition for socklen_t. - * unix/configure: generated. + * unix/configure: generated. 2002-07-29 Miguel Sofer @@ -6787,7 +6791,7 @@ * generic/tclVar.c (TclObjLookupVar): leak fix and improved comments. -2002-07-26 Jeff Hobbs +2002-07-26 Jeff Hobbs * generic/tclVar.c (TclLookupVar): removed early returns that prevented the parens from being restored. also removed goto label @@ -6799,7 +6803,7 @@ * tests/expr-old.test: fix for erroneous error messages in [expr], [Bug 587140] reported by Martin Lemburg. -2002-07-25 Joe English +2002-07-25 Joe English * generic/tclProc.c: fix for Tk Bug #219218 "error handling with bgerror in Tk" @@ -6808,10 +6812,10 @@ * generic/tclExecute.c: restoring full TCL_COMPILE_DEBUG functionality. -2002-07-24 Don Porter +2002-07-24 Don Porter * tests/unixInit.test: relaxed unixInit-3.1 to accept iso8859-15 - as a valid C encoding. [Bug 575336] + as a valid C encoding. [Bug 575336] 2002-07-24 Miguel Sofer @@ -6829,7 +6833,7 @@ * unix/tclLoadDyld.c: fixed small bugs introduced by Vince, implemented library unloading correctly (needs OS X 10.2). -2002-07-23 Joe English +2002-07-23 Joe English * doc/OpenFileChnl.3: (Updates from Larry Virden) * doc/open.n: @@ -6880,7 +6884,7 @@ * generic/tclParseExpr.c (GetLexeme): Allowed parser to recognise 'Inf' as a floating-point number. [Bug 218000] -2002-07-21 Don Porter +2002-07-21 Don Porter * tclIOUtil.c: Silence compiler warning. [Bug 584408]. @@ -7086,7 +7090,7 @@ * tests/var.test: slight modification of error messages due to the modifications in the tclVar.c code. -2002-07-15 Don Porter +2002-07-15 Don Porter * tests/unixInit.test: Improved constraints to protect /tmp. [Bug 581403] @@ -7102,12 +7106,12 @@ was previously lacking. * generic/tclIOUtil.c: comment cleanup and code speedup. -2002-07-14 Don Porter +2002-07-14 Don Porter * generic/tclInt.h: Removed declarations that duplicated entries in the (internal) stub table. - * library/tcltest/tcltest.tcl: Corrected errors in handling of + * library/tcltest/tcltest.tcl: Corrected errors in handling of configuration options -constraints and -limitconstraints. * README: Bumped HEAD to version 8.4b2 so we can @@ -7123,11 +7127,11 @@ * doc/file.n: * win/tclWinFile.c: on Win 95/98/ME the long form of the path is used as a normalized form. This is required because short - forms are not a robust representation. The file normalization + forms are not a robust representation. The file normalization function has been sped up, but more performance gains might be possible, if speed is still an issue on these platforms. -2002-07-11 Don Porter +2002-07-11 Don Porter * library/tcltest/tcltest.tcl: Corrected reaction to existing but false ::tcl_interactive. @@ -7159,11 +7163,11 @@ equivalents in standard Tcl. [Bug 579268] Also simplified some of unixFCmd.test while I was at it. -2002-07-10 Don Porter +2002-07-10 Don Porter * tests/tcltest.test: Greatly reduced the number of [exec]s, using slave interps instead. - * library/tcltest/tcltest.tcl: Fixed bug uncovered in the conversion + * library/tcltest/tcltest.tcl: Fixed bug uncovered in the conversion where a message was written to stdout instead of [outputChannel]. * tests/basic.test: Cleaned up, constrained, and reduced the @@ -7197,10 +7201,10 @@ hostname] to 127.0.0.1 to bypass DNS, knowing that we operate on the local host. -2002-07-08 Don Porter +2002-07-08 Don Porter * doc/tcltest.n: Fixed incompatibility in [viewFile]. - * library/tcltest/tcltest.tcl: Corrected docs. Bumped to 2.2.1. + * library/tcltest/tcltest.tcl: Corrected docs. Bumped to 2.2.1. * library/tcltest/pkgIndex.tcl: [Bug 578163] 2002-07-08 Vince Darley @@ -7223,13 +7227,13 @@ zero should not be passed in to the Tcl_FS API, and prevent segfaults from occuring on such user errors. [Bug 578617] -2002-07-06 Don Porter +2002-07-06 Don Porter * tests/pkgMkIndex.test: Constrained tests of [load] package indexing to those platforms where the testing shared libraries have been built. [Bug 578166]. -2002-07-05 Don Porter +2002-07-05 Don Porter * changes: added recent changes 2002-07-05 Reinhard Max @@ -7265,7 +7269,7 @@ * tests/fileName.test: writable... * tests/env.test: -2002-07-05 Jeff Hobbs +2002-07-05 Jeff Hobbs *** 8.4b1 TAGGED FOR RELEASE *** @@ -7294,7 +7298,7 @@ * tests/exec.test: * tests/ioCmd.test: Fixed bug #575836. -2002-07-03 Don Porter +2002-07-03 Don Porter * tests/pkg1/direct1.tcl: removed * tests/pkg1/pkgIndex.tcl: removed @@ -7321,7 +7325,7 @@ * tests/pkg/std.tcl: removed * tests/pkgMkIndex.test: Fixed [Bug 575857] where this test file expected to be able to write to [file join [testsDirectory] - pkg]. Part of the fix was to import several auxilliary files + pkg]. Part of the fix was to import several auxilliary files into the test file itself. * tests/main.test: Cheap fix for [Bugs 575851, 575858]. Avoid @@ -7337,11 +7341,11 @@ TCL_OUT_LINE_COMPILE instead of TCL_ERROR: let the failure happen at runtime so that it can be caught [Bug 577015]. -2002-07-02 Joe English +2002-07-02 Joe English * doc/tcltest.n: Markup fixes, spellcheck. -2002-07-02 Don Porter +2002-07-02 Don Porter * doc/tcltest.n: more refinements of the documentation. @@ -7360,7 +7364,7 @@ special case processing. * doc/tcltest.n: More documentation updates. Reference sections - are complete. Only examples need adding. + are complete. Only examples need adding. 2002-07-02 Vince Darley @@ -7368,7 +7372,7 @@ * generic/tclCmdAH.c: clearer error msgs for 'file link', as per the man page. -2002-07-01 Joe English +2002-07-01 Joe English * doc/Access.3: * doc/AddErrInfo.3: @@ -7414,7 +7418,7 @@ stage. Symbols were compiler-generated, so it is the compiler's business to define them. [Bug #541181] -2002-07-01 Don Porter +2002-07-01 Don Porter * doc/tcltest.n: more work in progress updating tcltest docs. @@ -7432,7 +7436,7 @@ * doc/concat.n: Documented the *real* behaviour of [concat]! -2002-06-30 Don Porter +2002-06-30 Don Porter * doc/tcltest.n: more work in progress updating tcltest docs. @@ -7470,7 +7474,7 @@ call its first argument repeatedly or pass it to other macros, [Bug 575194] reported by Peter Spjuth. -2002-06-28 Don Porter +2002-06-28 Don Porter * docs/tcltest.n: Doc revisions in progress. * library/tcltest/tcltest.tcl: Corrected -testdir default value. @@ -7490,7 +7494,7 @@ lines described in Bug #574799 so it indicates that the supplied index marks the end of the search space. -2002-06-27 Don Porter +2002-06-27 Don Porter * doc/dde.n: Work in progress updating the documentation * doc/http.n: of the packages that come bundled with @@ -7498,7 +7502,7 @@ * doc/registry.n: * doc/tcltest.n: - * library/tcltest/tcltest.tcl: Made sure that the TCLTEST_OPTIONS + * library/tcltest/tcltest.tcl: Made sure that the TCLTEST_OPTIONS environment variablle configures tcltest at package load time. 2002-06-26 Vince Darley @@ -7522,23 +7526,23 @@ * doc/StringObj.3: clarifications by Don Porter, bugs #493995 and #500930. -2002-06-24 Don Porter +2002-06-24 Don Porter * library/tcltest/tcltest.tcl: Corrected suppression of -verbose skip * tests/tcltest.test: and start by [test -output]. Also - corrected test suite errors exposed by corrected code. [Bug 564656] + corrected test suite errors exposed by corrected code. [Bug 564656] 2002-06-25 Reinhard Max - * unix/tcl.m4: New macro SC_CONFIG_MANPAGES. + * unix/tcl.m4: New macro SC_CONFIG_MANPAGES. * unix/configure.in: Added support for symlinks and compression * unix/Makefile.in: when installing the manpages. [Patch 518052] * unix/mkLinks.tcl: Default is still hardlinks and no compression. - * unix/mkLinks: generated + * unix/mkLinks: generated * unix/configure: - * unix/README: Added documentation for the new features. + * unix/README: Added documentation for the new features. * unix/tcl.m4 (SC_PATH_TCLCONFIG): Replaced ${exec_prefix}/lib by ${libdir}. @@ -7547,19 +7551,19 @@ * generic/tclUtil.c (TclGetIntForIndex): Fix of critical bug #533364 generated when the index is bad and the result is a shared - object. The T_ASTO(T_GOR, ...) idiom likely exists elsewhere - though. Also removed some cruft that just complicated things to + object. The T_ASTO(T_GOR, ...) idiom likely exists elsewhere + though. Also removed some cruft that just complicated things to no advantage. (SetEndOffsetFromAny): Same fix, though this wasn't on the path excited by the bug. -2002-06-24 Don Porter +2002-06-24 Don Porter * library/tcltest/tcltest.tcl: Implementation of TIP 101. Adds * tests/parseOld.test: and exports a [configure] command * tests/tcltest.test: from tcltest. -2002-06-22 Don Porter +2002-06-22 Don Porter * changes: updated changes file for 8.4b1 release. @@ -7567,7 +7571,7 @@ * tests/basic.test: Tcl test suite so that a test * tests/cmdInfo.test: with options -constraints knownBug * tests/compile.test: -limitConstraints 1 only tests the - * tests/encoding.test: knownBug tests. Mostly involves + * tests/encoding.test: knownBug tests. Mostly involves * tests/env.test: replacing direct access to the * tests/event.test: testConstraints array with calls * tests/exec.test: to the testConstraint command @@ -7592,13 +7596,13 @@ * win/README.binary, README, win/configure.in, unix/configure.in: * generic/tcl.h (TCL_RELEASE_*, TCL_PATCH_LEVEL): Bump to beta1. -2002-06-21 Joe English +2002-06-21 Joe English * generic/tclCompExpr.c: * generic/tclParseExpr.c: LogSyntaxError() should reset the interpreter result [Bug 550142 "Tcl_ExprObj -> abort"] -2002-06-21 Don Porter +2002-06-21 Don Porter * unix/Makefile.in: Updated all package install directories * win/Makefile.in: to match current Major.minor versions @@ -7606,16 +7610,16 @@ * win/makefile.vc: to installation on Windows. * library/init.tcl: Corrected comments and namespace style - issues. Thanks to Bruce Stephens. [Bug 572025] + issues. Thanks to Bruce Stephens. [Bug 572025] 2002-06-21 Vince Darley - * tests/cmdAH.test: Added TIP#99 implementation - * tests/fCmd.test: of 'file link'. Supports creation - * tests/fileName.test: of symbolic and hard links in the + * tests/cmdAH.test: Added TIP#99 implementation + * tests/fCmd.test: of 'file link'. Supports creation + * tests/fileName.test: of symbolic and hard links in the * tests/fileSystem.test: native filesystems and in vfs's, - * generic/tclTest.c: when the individual filesystem - * generic/tclCmdAH.c: supports the concept. + * generic/tclTest.c: when the individual filesystem + * generic/tclCmdAH.c: supports the concept. * generic/tclIOUtil.c: * generic/tcl.h: * generic/tcl.decls: @@ -7637,10 +7641,10 @@ * generic/tclExecute.c (TclCompEvalObj): clarified and simplified the logic for compilation/recompilation. -2002-06-19 Joe English +2002-06-19 Joe English * doc/file.n: Fixed indentation. No substantive changes. -2002-06-19 Jeff Hobbs +2002-06-19 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_RegexpObjCmd): get the resultPtr again as the Tcl_ObjSetVar2 may cause the result to change. @@ -7687,12 +7691,12 @@ * win/tclsh.rc: removed the #define RESOURCE_INCLUDED to let the built-in -DRC_INVOKED to the work. -2002-06-17 Jeff Hobbs +2002-06-17 Jeff Hobbs - * doc/CrtTrace.3: Added TIP#62 implementation of command - * doc/trace.n: execution tracing [FR #462580] (lavana). - * generic/tcl.h: This includes enter/leave tracing as well - * generic/tclBasic.c: as inter-procedure stepping. + * doc/CrtTrace.3: Added TIP#62 implementation of command + * doc/trace.n: execution tracing [FR #462580] (lavana). + * generic/tcl.h: This includes enter/leave tracing as well + * generic/tclBasic.c: as inter-procedure stepping. * generic/tclCmdMZ.c: * generic/tclCompile.c: * generic/tclExecute.c: @@ -7710,13 +7714,13 @@ Vince Darley , patch provided by Vince too. -2002-06-17 Joe English +2002-06-17 Joe English * generic/tcl.h: #ifdef logic for K&R C backwards compatibility - changed to assume modern C by default. See SF FR #565088 for + changed to assume modern C by default. See SF FR #565088 for full details. -2002-06-17 Don Porter +2002-06-17 Don Porter * doc/msgcat.n: Corrected en_UK references to en_GB. UK is not a country designation recognized in ISO 3166. @@ -7731,7 +7735,7 @@ environment variable locale values according to XPG4, and to recognize the LC_ALL and LC_MESSAGES values over that of LANG. Also added many Windows Registry locale values to those - recognized by msgcat. Revised tests and docs. Bumped to + recognized by msgcat. Revised tests and docs. Bumped to version 1.3. Thanks to Bruno Haible for the report and assistance crafting the solution. [Bug 525522, 525525] @@ -7836,7 +7840,7 @@ * tclBasic.c (Tcl_DeleteTrace): fixed [Bug 568123] (thanks to Hemang Lavana) -2002-06-12 Jeff Hobbs +2002-06-12 Jeff Hobbs * win/tclWinFile.c: corrected the symbolic link handling code to allow it to compile. Added real definition of REPARSE_DATA_BUFFER @@ -7861,7 +7865,7 @@ 'file type', 'glob -type l', 'file copy', 'file delete', 'file normalize', and all VFS code to work correctly in the presence of symlinks (previously Tcl's behaviour was not very - well defined). This also fixes possible serious problems in + well defined). This also fixes possible serious problems in all versions of WinTcl where 'file delete' on a NTFS symlink could delete the original, not the symlink. Note: symlinks cannot yet be created in pure Tcl. @@ -7909,7 +7913,7 @@ * modified part of above commit, due to problems on Linux. Will re-examine bug report and evaluate more closely. -2002-06-07 Don Porter +2002-06-07 Don Porter * tests/tcltest.test: More corrections to test suite so that tests of failing [test]s don't show up themselves as failing tests. @@ -7935,7 +7939,7 @@ and add CFLAGS_DEBUG, CFLAGS_OPTIMIZE, and CFLAGS_DEFAULT varaibles. [Tcl bug 565488] -2002-06-06 Don Porter +2002-06-06 Don Porter * tests/tcltest.test: Corrections to test suite so that tests of failing [test]s don't show up themselves as failing tests. @@ -7966,7 +7970,7 @@ * generic/tclEnv.c (TclSetEnv): fix env var setting on MacOSX (adapted from patch #524352 by jkbonfield). -2002-06-05 Don Porter +2002-06-05 Don Porter * doc/Tcl_Main.3: Documented $tcl_rcFileName and added more clarifications about the intended use of Tcl_Main(). [Bug 505651] @@ -7981,7 +7985,7 @@ conversion of text resource contents. * tests/macFCmd.test (macFCmd-1.2): allow CWIE creator. -2002-06-04 Don Porter +2002-06-04 Don Porter * library/tcltest/tcltest.tcl: * tests/init.test: @@ -7994,7 +7998,7 @@ * win/README: Update msys+mingw URL. -2002-06-03 Don Porter +2002-06-03 Don Porter * doc/tcltest.n: * library/tcltest/tcltest.tcl: @@ -8002,7 +8006,7 @@ * tests/tcltest.test: Implementation of TIP 85. Allows tcltest users to add new legal values of the -match option to [test], associating each with a Tcl command that does the matching of - expected results with actual results of tests. Thanks to + expected results with actual results of tests. Thanks to Arjen Markus. => tcltest 2.1 [Patch 521362] 2002-06-03 Miguel Sofer @@ -8020,9 +8024,9 @@ * doc/Tcl.n: clarify the empty variable name issue ([Bug 549285] reported by Tom Krehbiel, patch by Don Porter). -2002-05-31 Don Porter +2002-05-31 Don Porter - * library/package.tcl: Fixed leak of slave interp in [pkg_mkIndex]. + * library/package.tcl: Fixed leak of slave interp in [pkg_mkIndex]. Thanks to Helmut for report. [Bug 550534] * tests/io.test: @@ -8037,10 +8041,10 @@ * unix/tclAppInit.c (matherr): * unix/tclMtherr.c (removed file): * win/tclWinMtherr.c (_matherr): Removed internal routine - TclMathInProgress and Unix implementation of matherr(). These + TclMathInProgress and Unix implementation of matherr(). These are now obsolete, dealing with very old versions of the C math library. Windows version is retained in case Borland compilers - require it, but it is inactive. Thanks to Joe English. + require it, but it is inactive. Thanks to Joe English. [Bug 474335, Patch 555635]. * unix/configure: regen @@ -8060,7 +8064,7 @@ * tests/fileName.test: removed 'knownBug' flag from some tests, added some new tests for above bugs. -2002-05-29 Jeff Hobbs +2002-05-29 Jeff Hobbs * unix/configure: regen'ed * unix/configure.in: replaced bigendian check with autoconf @@ -8076,11 +8080,11 @@ StringType, as benchmarks show that is the optimal check (both bigendian and littleendian systems). -2002-05-29 Don Porter +2002-05-29 Don Porter * generic/tclMain.c: Removed "dummy" reference to Tcl_LinkVar. It is no longer needed since Tcl_Main() now actually calls - Tcl_LinkVar(). Thanks to Joe English for pointing that out. + Tcl_LinkVar(). Thanks to Joe English for pointing that out. 2002-05-29 Donal K. Fellows @@ -8097,7 +8101,7 @@ strings (i.e. when the high-byte of a Tcl_UniChar precedes the low-byte.) -2002-05-29 Jeff Hobbs +2002-05-29 Jeff Hobbs * generic/tclInt.decls: * generic/tclIntDecls.h: @@ -8115,7 +8119,7 @@ Removed the use of goto and streamlined the other parts. * generic/tclExecute.c (TclExecuteByteCode): added check for - object equality in the comparison instructions. Added + object equality in the comparison instructions. Added short-circuit for != length strings in INST_EQ, INST_NEQ and INST_STR_CMP. Reworked INST_STR_CMP to use TclpUtfNcmp2 where appropriate, and only use Tcl_UniCharNcmp when at least one of the @@ -8129,7 +8133,7 @@ * tests/clock.test: better qualified 9.1 constraint check for %s. -2002-05-28 Jeff Hobbs +2002-05-28 Jeff Hobbs * generic/tclThreadAlloc.c (TclpRealloc, TclpFree): protect against the case when NULL is based. @@ -8218,7 +8222,7 @@ * mac/tclMacChan.c: use MSL provided creator type if available instead of the default 'MPW '. -2002-05-16 Joe English +2002-05-16 Joe English * doc/CrtObjCmd.3: Added Tcl_GetCommandFromObj, Tcl_GetCommandFullName @@ -8227,7 +8231,7 @@ 2002-05-14 Donal K. Fellows * unix/tclUnixChan.c (TtyOutputProc): #if/#endif-ed this function - out to stop compiler warnings. Also much general tidying of + out to stop compiler warnings. Also much general tidying of comments in this file and removal of whitespace from blank lines. 2002-05-13 Donal K. Fellows @@ -8248,24 +8252,24 @@ Fix bad comment also. [Bug #555078 and 'fs' part of #543549] * win/tclWinChan.c: fix comment referring to wrong function. -2002-05-10 Don Porter +2002-05-10 Don Porter * tests/load.test: * tests/safe.test: * tests/tcltest.test: Corrected some list-quoting issues and other matters that cause tests to fail when the patch includes - special characters. Report from Vince Darley. [Bug 554068]. + special characters. Report from Vince Darley. [Bug 554068]. 2002-05-08 David Gravereaux * doc/file.n: * tools/man2tcl.c: - * tools/man2help2.tcl: Thanks to Peter Spjuth - , again. My prior fix for + * tools/man2help2.tcl: Thanks to Peter Spjuth + , again. My prior fix for single-quote macro mis-understanding was wrong. Reverted to reimpliment the 'macro2' proc which handles single-quote macros and restored file.n text arrangement to avoid single-quotes on - the first line. Sorry for all the confusion. + the first line. Sorry for all the confusion. 2002-05-08 David Gravereaux @@ -8277,7 +8281,7 @@ * doc/file.n: Reverted to prior state before I messed with it. -2002-05-08 Don Porter +2002-05-08 Don Porter * library/tcltest/tcltest.tcl: Corrected [uplevel] quoting when [source]-ing test script in subdirectories. @@ -8342,9 +8346,9 @@ * tests/winFile.test: test for 'file system' returning correct values. * tests/fileSystem.test: test for 'file system' returning correct - values. Clean up after failed previous test run. + values. Clean up after failed previous test run. -2002-04-26 Jeff Hobbs +2002-04-26 Jeff Hobbs * unix/configure: * unix/tcl.m4: change HP-11 SHLIB_LD_LIBS from "" to ${LIBS} so @@ -8357,13 +8361,13 @@ * generic/tclObj.c (SetBooleanFromAny): Was not calling an integer parsing function on native 64-bit platforms! [Bug 548686] -2002-04-24 Jeff Hobbs +2002-04-24 Jeff Hobbs * generic/tclInt.h: corrected TclRememberJoinableThread decl to use VOID instead of void. * generic/tclThreadJoin.c: noted that this code isn't needed on Unix. -2002-04-23 Jeff Hobbs +2002-04-23 Jeff Hobbs * doc/exec.n: * doc/tclvars.n: doc updates [Patch #509426] (gravereaux) @@ -8380,7 +8384,7 @@ * doc/TraceCmd.3: New file that documents Tcl_CommandTraceInfo, Tcl_TraceCommand and Tcl_UntraceCommand [Bug 414927] -2002-04-22 Jeff Hobbs +2002-04-22 Jeff Hobbs * generic/tclAlloc.c: * generic/tclInt.h: @@ -8413,9 +8417,9 @@ localized %c, %x and %X on Windows. Added some notes about how the other values could be further localized. -2002-04-19 Don Porter +2002-04-19 Don Porter - * generic/tclMain.c (Tcl_Main): Free the memory allocated for the + * generic/tclMain.c (Tcl_Main): Free the memory allocated for the startup script path. [Bug 543549] * library/msgcat/msgcat.tcl: [mcmax] wasn't using the caller's @@ -8425,7 +8429,7 @@ * doc/msgcat.n: * library/msgcat/msgcat.tcl: - * library/msgcat/pkgIndex.tcl: Added [mcload] to the export list + * library/msgcat/pkgIndex.tcl: Added [mcload] to the export list of msgcat; bumped to 1.2.3. [Bug 544727] 2002-04-20 Daniel Steffen @@ -8454,9 +8458,9 @@ * tests/info.test: [Bug 545325] info level didn't report namespace eval, bug report by Richard Suchenwirth. -2002-04-18 Don Porter +2002-04-18 Don Porter - * doc/subst.n: Clarified documentation on handling unusual return + * doc/subst.n: Clarified documentation on handling unusual return codes during substitution, and on variable substitutions implied by command substitution, and vice versa. [Bug 536838] @@ -8478,29 +8482,29 @@ "too large integers" were reported as "floating-point value" in [expr] error messages. -2002-04-17 Jeff Hobbs +2002-04-17 Jeff Hobbs * generic/tclEncoding.c (EscapeFromUtfProc): * generic/tclIO.c (WriteChars, Tcl_Close): corrected the handling of outputting end escapes for escape-based encodings. [Bug #526524] (yamamoto) -2002-04-17 Don Porter +2002-04-17 Don Porter * doc/tcltest.n: Removed [saveState] and [restoreState] from - tcltest 2 documentation, effectively deprecating them. [Bug 495660] + tcltest 2 documentation, effectively deprecating them. [Bug 495660] * library/tcltest/tcltest.tcl: Made separate export for commands kept only for tcltest 1 compatibility. * tests/iogt.test: Revised to run tests in a namespace, rather than use the useless and buggy [saveState] and [restoreState] commands - of tcltest. Updated to use tcltest 2 as well. [Patch 544911] + of tcltest. Updated to use tcltest 2 as well. [Patch 544911] -2002-04-16 Don Porter +2002-04-16 Don Porter * tests/io.test: Revised to run tests in a namespace, rather than use the useless and buggy [saveState] and [restoreState] commands - of tcltest. Updated to use tcltest 2 as well. [Patch 544546] + of tcltest. Updated to use tcltest 2 as well. [Patch 544546] 2002-04-15 Miguel Sofer @@ -8514,7 +8518,7 @@ returning; the compiled [return] is otherwise non-catchable. [Bug 542142] reported by Andreas Kupries. -2002-04-15 Don Porter +2002-04-15 Don Porter * tests/socket.test: Increased timeout values so that tests have time to successfully complete even on slow/busy machines. [Bug 523470] @@ -8523,11 +8527,11 @@ * library/tcltest/tcltest.tcl: * tests/tcltest.test: Revised [tcltest::test] to return errors when called with invalid syntax and to accept exactly two arguments - as documented. Improved error messages. [Bug 497446, Patch 513983] + as documented. Improved error messages. [Bug 497446, Patch 513983] ***POTENTIAL INCOMPATIBILITY***: Incompatible with previous tcltest 2.* releases, found only in alpha releases of Tcl 8.4. -2002-04-11 Jeff Hobbs +2002-04-11 Jeff Hobbs * generic/tclNotify.c (TclFinalizeNotifier): remove remaining unserviced events on finalization. @@ -8561,7 +8565,7 @@ * tests/ioCmd.test: fixed tests failing on mac: check for existence of [exec], changed some result strings. -2002-04-06 Jeff Hobbs +2002-04-06 Jeff Hobbs * unix/tclUnixFCmd.c (Realpath): added a little extra code to initialize a realpath arg when compiling in PURIFY mode in order @@ -8569,7 +8573,7 @@ own realpath implementation, but this will at least quiet purify for now. -2002-04-05 Don Porter +2002-04-05 Don Porter * generic/tclCmdMZ.c (Tcl_SubstObj): * tests/subst.test: Corrected [subst] so that return codes @@ -8577,7 +8581,7 @@ have the same effect as when those codes are returned by command substitution. [Bug 536879] -2002-04-03 Jeff Hobbs +2002-04-03 Jeff Hobbs * library/tcltest/tcltest.tcl: added getMatchingFiles back (alias to GetMatchingFiles), which was a public function in tcltest 1.0. @@ -8586,18 +8590,18 @@ * generic/tclEnv.c: * generic/tclIOUtil.c: invalidate filesystem cache when the - user changes env(HOME). Fixes [Bug #535621]. Also cleaned up + user changes env(HOME). Fixes [Bug #535621]. Also cleaned up some of the documentation. * tests/fileSystem.test: added test for bug just fixed. -2002-04-01 Kevin Kenny +2002-04-01 Kevin Kenny * win/tclWinTime.c (Tcl_GetTime): made the checks of clock frequency more permissive to cope with the fact that Win98SE is observed to return 1.19318 in place of 1.193182 for the performance counter frequency. -2002-03-29 Jeff Hobbs +2002-03-29 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_TraceObjCmd, TraceVarProc) (TraceCommandProc, TclTraceCommandObjCmd): corrected @@ -8607,7 +8611,7 @@ Also converted Tcl_UntraceVar -> Tcl_UntraceVar2 and Tcl_Eval to Tcl_EvalEx in Trace*Proc for slight efficiency improvement. -2002-03-29 Don Porter +2002-03-29 Don Porter * doc/AllowExc.3: * generic/tclBasic.c (Tcl_EvalObjv,Tcl_EvalEx,Tcl_EvalObjEx): @@ -8617,7 +8621,7 @@ having influence over the wrong scope of Tcl_*Eval* calls. Patch from Miguel Sofer. Report from Jean-Claude Wippler. [Bug 219181] -2002-03-28 Don Porter +2002-03-28 Don Porter * generic/tclVar.c: Refactored CallTraces to collect repeated handling of its returned value into CallTraces itself. @@ -8627,7 +8631,7 @@ * tools/feather.bmp: * tools/man2help.tcl: * tools/man2help2.tcl: - * win/makefile.vc: More winhelp target fixups. Added a feather + * win/makefile.vc: More winhelp target fixups. Added a feather bitmap to the non-scrollable area and changed the color to be yellow from a plain white. The colors can be whatever we want them to be, but thought I would start with something bold. @@ -8635,14 +8639,14 @@ * doc/SetVar.3: * doc/TraceVar.3: - * doc/UpVar.3: .AP macro syntax repair. + * doc/UpVar.3: .AP macro syntax repair. 2002-03-27 David Gravereaux * tools/man2help.tcl: * win/makefile.vc: winhelp target now copies all needed files from tools/ to a workarea under $(OUT_DIR) and builds it from - there. No build cruft is left in tools/ anymore. All paths + there. No build cruft is left in tools/ anymore. All paths used in man2help.tcl are now relative to where the script is. [Bug 527941] @@ -8653,9 +8657,9 @@ * win/coffbase.txt: * win/makefile.vc: * win/nmakehlp.c (new): - * win/rules.vc: First draft fix for [Bug 527941]. More changes + * win/rules.vc: First draft fix for [Bug 527941]. More changes need to done to the makehelp target to get to stop leaving build - files in the tools/ directory. This does not address the syntax + files in the tools/ directory. This does not address the syntax errors in the man files. Having the contents of tcl.hpj(.in) inside makefile.vc allows for version numbers to be replaced with macros. @@ -8676,7 +8680,7 @@ * tests/basic.test: avoid exceptional returns at level 0 [Bug 219181] -2002-03-27 Don Porter +2002-03-27 Don Porter * doc/tcltest.n ([mainThread]): * library/tcltest/tcltest.tcl: @@ -8686,17 +8690,17 @@ * tests/main.test: Added missing [after cancel]s. -2002-03-25 Don Porter +2002-03-25 Don Porter * tests/main.test: Removed workarounds for Bug 495977. - * library/tcltest/tcltest.tcl: Keep the value of $::auto_path + * library/tcltest/tcltest.tcl: Keep the value of $::auto_path unchanged, so that the tcltest package can test code that depends on auto-loading. If a testing application needs $::auto_path pruned, it should do that itself. [Bug 495726] Improve the processing of the -constraints option to [test] so that constraint lists can have arbitrary whitespace, and non-lists don't - blow things up. [Bug 495977] + blow things up. [Bug 495977] Corrected faulty variable initialization. [Bug 534845] 2002-03-25 Miguel Sofer @@ -8710,12 +8714,12 @@ * generic/tclBasic.c (Tcl_EvalObjv): replaced obscure, incorrect code as described in [Bug 533907] (Don Porter). -2002-03-24 Don Porter +2002-03-24 Don Porter - * library/tcltest/tcltest.tcl: Use [interpreter] to set/query the + * library/tcltest/tcltest.tcl: Use [interpreter] to set/query the executable currently running the tcltest package. [Bug 454050] - * library/tcltest/tcltest.tcl: Allow non-proc commands to be used + * library/tcltest/tcltest.tcl: Allow non-proc commands to be used as the customization hooks. [Bug 495662] 2002-03-24 Vince Darley @@ -8741,7 +8745,7 @@ particularly 'Tcl_FSMatchInDirectory' which now might match a single file/directory only, and 'file normalize' which wasn't very clear before. Removed inconsistency betweens - docs and the Tcl_Filesystem structure. Also fixed + docs and the Tcl_Filesystem structure. Also fixed [Bug 523217] and corrected file normalization on Unix so that it expands symbolic links. Added some new tests of the filesystem code (in the new file 'fileSystem.test'), and @@ -8761,7 +8765,7 @@ * tests/basic.test (basic-46.1): adding test for [Bug 533758], fixed earlier today. -2002-03-22 Jeff Hobbs +2002-03-22 Jeff Hobbs * win/tclWinInt.h: moved undef of TCL_STORAGE_CLASS. [Bug #478579] @@ -8778,7 +8782,7 @@ * doc/expr.n: Improved documentation for ceil and floor [Bug 530535] -2002-03-20 Don Porter +2002-03-20 Don Porter * doc/SetVar.3: * doc/TraceVar.3: @@ -8839,7 +8843,7 @@ as a path name to Win32 API functions since this was crashing under Windows 98. -2002-03-11 Don Porter +2002-03-11 Don Porter * library/tcltest/tcltest.tcl: * library/tcltest/pkgIndex.tcl: Bumped tcltest package to 2.0.2. @@ -8866,7 +8870,7 @@ msys based build process. Update Cygwin build instructions so users know where to find Mingw 1.1. -2002-03-08 Jeff Hobbs +2002-03-08 Jeff Hobbs * win/tclWinFCmd.c (DoCopyFile): correctly set retval to TCL_OK. @@ -8878,7 +8882,7 @@ Move control flow statements out of __try blocks since the documentation indicates it is frowned upon. -2002-03-07 Don Porter +2002-03-07 Don Porter * doc/interp.n: * generic/tclInterp.c(Tcl_InterpObjCmd,SlaveObjCmd,SlaveRecursionLimit): @@ -8908,12 +8912,12 @@ * generic/tclCmdIL.c (Tcl_LsearchObjCmd): TIP#80 support. See http://purl.org/tcl/tip/80 for details. -2002-03-05 Jeff Hobbs +2002-03-05 Jeff Hobbs *** 8.4a4 TAGGED FOR RELEASE *** * unix/tclUnixChan.c: initial remedy for [Bug #525783] flush - problem introduced by TIP #35. This may not satisfy true serial + problem introduced by TIP #35. This may not satisfy true serial channels, but it restores the correct flushing of std* channels on exit. @@ -8922,7 +8926,7 @@ * unix/tcl.spec: * tools/tcl.wse.in: fixed URL refs to use www.tcl.tk or SF. -2002-03-04 Jeff Hobbs +2002-03-04 Jeff Hobbs * README: * mac/README: @@ -8941,7 +8945,7 @@ (TclFinalizeEncodingSubsystem): corrected potential double-free when encodings were finalized on exit. [Bug #219314, #524674] -2002-03-01 Jeff Hobbs +2002-03-01 Jeff Hobbs * library/encoding/iso2022-jp.enc: * library/encoding/iso2022.enc: @@ -8955,7 +8959,7 @@ Also reduced the value of ENCODING_LINESIZE from 30 to 20 as this seems to improve the performance of 'gets' according to tclbench. -2002-02-28 Jeff Hobbs +2002-02-28 Jeff Hobbs * generic/tclCmdMZ.c (TraceCommandProc): ensure that TraceCommandInfo structure was also deleted when a command was deleted to prevent a @@ -8978,7 +8982,7 @@ * generic/tclExecute.c: Replaced a few direct stack accesses with the POP_OBJECT() macro [Bug 507181] (Don Porter). -2002-02-27 Don Porter +2002-02-27 Don Porter * doc/GetIndex.3: * generic/tcl.decls (Tcl_GetIndexFromObjStruct): @@ -8993,9 +8997,9 @@ * generic/tclMain.c (Tcl_Main,StdinProc): Corrected some reference count management errors on the interactive command Tcl_Obj found by - Purify. Thanks to Jeff Hobbs for the report and assistance. + Purify. Thanks to Jeff Hobbs for the report and assistance. -2002-02-27 Jeff Hobbs +2002-02-27 Jeff Hobbs * generic/tclBasic.c (Tcl_EvalTokensStandard): corrected mem leak in error case. @@ -9019,7 +9023,7 @@ is unable to recognize /dev/tty as it only gets a file descriptor, and no name for it. -2002-02-26 Jeff Hobbs +2002-02-26 Jeff Hobbs * generic/tclCmdAH.c (StoreStatData): corrected mem leak. @@ -9055,7 +9059,7 @@ option "-error". Essentially ignores the option, always returning an empty string. -2002-02-25 Jeff Hobbs +2002-02-25 Jeff Hobbs * doc/Alloc.3: * doc/LinkVar.3: @@ -9080,7 +9084,7 @@ [subst]: badly terminated nested scripts will raise an error and not be evaluated. [Bug #495207] -2002-02-25 Don Porter +2002-02-25 Don Porter * unix/tclUnixPort.h: corrected strtoll prototype mismatch on Tru64. * compat/strtod.c (strtod): simplified #includes @@ -9107,7 +9111,7 @@ * compat/strtoul.c, compat/strtol.c, compat/strtod.c: Added UCHAR, CONST and #includes to clean up GCC output. -2002-02-23 Don Porter +2002-02-23 Don Porter * compat/strtoull.c (strtoull): * compat/strtoll.c (strtoll): @@ -9130,7 +9134,7 @@ * generic/tclPkg.c: Fix for panic when library is loaded on a platform without backlinking without proper use of stubs. [Bug 476537] -2002-02-22 Jeff Hobbs +2002-02-22 Jeff Hobbs * tests/regexpComp.test: updated regexp-11.[1-4] to match changes in regexp.test for new regsub syntax @@ -9201,8 +9205,8 @@ 2002-02-21 David Gravereaux * win/makefile.vc: - * win/rules.vc: Added a new "loimpact" option that sets the - -ws:aggressive linker option. Off by default. It's said to + * win/rules.vc: Added a new "loimpact" option that sets the + -ws:aggressive linker option. Off by default. It's said to keep the heap use low at the expense of alloc speed. * win/tclAppInit.c: Changed #include "tcl.h" to be tclPort.h to @@ -9266,7 +9270,7 @@ * changes: First draft of updated changes for 8.4a4 release. -2002-02-15 Jeff Hobbs +2002-02-15 Jeff Hobbs * unix/tclUnixPort.h: add strtoll/strtoull declarations for platforms that do not define them. @@ -9274,7 +9278,7 @@ * generic/tclIndexObj.c (STRING_AT): removed ptrdiff_t cast and use of VOID* in default case (GNU-ism). -2002-02-15 Kevin Kenny +2002-02-15 Kevin Kenny * compat/strtoll.c: * compat/strtoul.c: @@ -9386,7 +9390,7 @@ [exec] and pipes will need the most work as multi-tasking on DOS has to be carefully. -2002-02-10 Kevin Kenny +2002-02-10 Kevin Kenny * doc/CrtObjCmd.3: * doc/CrtTrace.3: @@ -9402,7 +9406,7 @@ * generic/tclDecls.h: * generic/tclStubInit.c: Regenerated Stubs tables. -2002-02-08 Jeff Hobbs +2002-02-08 Jeff Hobbs * unix/configure: * unix/tcl.m4: added -pthread for FreeBSD to EXTRA_CFLAGS and @@ -9443,7 +9447,7 @@ restored to return (char *): Tcl_DStringAppend, Tcl_DStringAppendElement, Tcl_JoinPath, Tcl_TranslateFileName, Tcl_ExternalToUtfDString, Tcl_UtfToExternalDString, - Tcl_UniCharToUtfDString, Tcl_GetCwd, Tcl_WinTCharToUtf. Also + Tcl_UniCharToUtfDString, Tcl_GetCwd, Tcl_WinTCharToUtf. Also restored Tcl_WinUtfToTChar to return (TCHAR *) and Tcl_UtfToUniCharDString to return (Tcl_UniChar *). Modified some callers. This change recognizes that Tcl_DStrings are @@ -9454,12 +9458,12 @@ * generic/tclCmdMZ.c: corrected use of C++-style comment. -2002-02-06 Jeff Hobbs +2002-02-06 Jeff Hobbs * tests/scan.test: * generic/tclScan.c (Tcl_ScanObjCmd): corrected scan 0x... %x handling that didn't accept the 0x as a prelude to a base 16 - number. [Bug #495213] + number. [Bug #495213] * generic/tclCompCmds.c (TclCompileRegexpCmd): made early check for bad RE to stop checking further. @@ -9497,7 +9501,7 @@ as the command to use to retrieve the pid of a command pipeline created via 'open'. -2002-02-01 Jeff Hobbs +2002-02-01 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_RegexpObjCmd): handle quirky about case earlier to avoid shimmering problem. @@ -9538,7 +9542,7 @@ functions which had been overlooked. Fixes [Bug 507701]. * unix/mkLinks: make mklinks -2002-01-29 Jeff Hobbs +2002-01-29 Jeff Hobbs * tests/regexpComp.test: * generic/tclCompCmds.c (TclCompileRegexpCmd): enhanced to support @@ -9556,7 +9560,7 @@ since they will work in both cases. This modification was described in TIP 34. -2002-01-28 Jeff Hobbs +2002-01-28 Jeff Hobbs * win/tclWinReg.c (regConnectRegistryProc,RecursiveDeleteKey) (DeleteKey,GetKeyNames,GetType,GetValue,OpenSubKey,SetValue): @@ -9643,7 +9647,7 @@ * mac/tclMacFCmd.c (TclpObjListVolumes): * mac/tclMacResource.c (TclMacRegisterResourceFork, BuildResourceForkList): - * win/tclWinInit.c (AppendEnvironment): Sought out and eliminated + * win/tclWinInit.c (AppendEnvironment): Sought out and eliminated instances of CONST-casting that are no longer needed after the TIP 27 effort. @@ -9788,13 +9792,13 @@ 2002-01-24 Don Porter * generic/tclIOUtil.c (SetFsPathFromAny): Corrected tilde-substitution - of pathnames where > 1 separator follows the ~. [Bug 504950] + of pathnames where > 1 separator follows the ~. [Bug 504950] -2002-01-24 Jeff Hobbs +2002-01-24 Jeff Hobbs * library/http/pkgIndex.tcl: * library/http/http.tcl: don't add port in default case to handle - broken servers. http bumped to 2.4.1 [Bug #504508] + broken servers. http bumped to 2.4.1 [Bug #504508] 2002-01-23 Andreas Kupries @@ -9811,8 +9815,8 @@ TclpGetUserHome): * win/tclWinPort.h (TclWinSerialReopen): * win/tclWinSerial.c (TclWinSerialReopen): - * win/tclWinSock.c (Tcl_OpenTcpServer): Corrections to earlier - TIP 27 changes. Thanks to Andreas Kupries for the feedback. + * win/tclWinSock.c (Tcl_OpenTcpServer): Corrections to earlier + TIP 27 changes. Thanks to Andreas Kupries for the feedback. * generic/tclPlatDecls.h: make genstubs * doc/GetHostName.3: @@ -10035,7 +10039,7 @@ * unix/tclUnixChan.c (TclpOpenFileChannel): * win/tclWinChan.c (TclpOpenFileChannel): Updated APIs in generic/tclIOUtil.c and generic/tclPosixStr.c according to the - guidelines of TIP 27. Updated callers. [Patch 499196] + guidelines of TIP 27. Updated callers. [Patch 499196] * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs @@ -10068,7 +10072,7 @@ * win/tclWinSerial.c (SerialOutputProc, SerialGetOptionProc, SerialSetOptionProc): * win/tclWinSock.c (TcpGetOptionProc, TcpOutput): Updated channel - driver interface according to the guidelines of TIP 27. See also + driver interface according to the guidelines of TIP 27. See also [Bug 500348]. * doc/CrtChannel.3: @@ -10089,7 +10093,7 @@ Tcl_WrongNumArgs): * generic/tclIndexObj.c (Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct, Tcl_WrongNumArgs): Updated APIs in the file generic/tclIndexObj.c - according to the guidelines of TIP 27. [Patch 501491] + according to the guidelines of TIP 27. [Patch 501491] * generic/tclDecls.h: make genstubs 2002-01-11 Mo DeJong @@ -10110,10 +10114,10 @@ 2002-01-11 David Gravereaux - * win/makefile.vc: Removed -GD compiler option. It was intended + * win/makefile.vc: Removed -GD compiler option. It was intended for future use, but MS is again changing the future at their whim. The D4002 warning was harmless though, but someone using VC .NET - logged it as a concern. [Bug #501565] + logged it as a concern. [Bug #501565] 2002-01-11 Mo DeJong @@ -10126,7 +10130,7 @@ Kevin Kenny * unix/tclLoadDld.c (TclpLoadFile): syntax error: unbalanced - parens. Kevin notes that it's far from clear that this file is + parens. Kevin notes that it's far from clear that this file is ever included in an actual build; Linux without dlopen appears to be a nonexistent configuration. @@ -10167,7 +10171,7 @@ casts to satisfy picky compilers. * generic/tclMain.c: Bug fix: neglected the NULL case in - TclGetStartupScriptFileName(). Broke Tk/wish. + TclGetStartupScriptFileName(). Broke Tk/wish. 2002-01-05 Don Porter @@ -10178,17 +10182,17 @@ * Interactive Tcl_Main can now enter a main loop, exit that loop and continue interactive operations. The loop may even exit in the midst of interactive command typing - without loss of the partial command. [Bugs 486453, 474131] + without loss of the partial command. [Bugs 486453, 474131] * Tcl_Main now gracefully handles deletion of its master interpreter. * Interactive Tcl_Main can now operate with non-blocking stdin * Interactive Tcl_Main can now detect EOF on stdin even in - mid-command. [Bug 491341] + mid-command. [Bug 491341] * Added VFS-aware internal routines for managing the startup script selection. * Tcl variable 'tcl_interactive' is now linked to C variable 'tty' so that one can disable/enable interactive prompts - at the script level when there is no startup script. This + at the script level when there is no startup script. This is meant for use by the test suite. * Consistent use of the Tcl libraries standard channels as returned by Tcl_GetStdChannel(); as opposed to the channels @@ -10274,7 +10278,7 @@ characters. [Bug #233257] ****************************************************************** - *** CHANGELOG ENTRIES FOR 2001 IN "ChangeLog.2001" *** - *** CHANGELOG ENTRIES FOR 2000 IN "ChangeLog.2000" *** + *** CHANGELOG ENTRIES FOR 2001 IN "ChangeLog.2001" *** + *** CHANGELOG ENTRIES FOR 2000 IN "ChangeLog.2000" *** *** CHANGELOG ENTRIES FOR 1999 AND EARLIER IN "ChangeLog.1999" *** ****************************************************************** diff --git a/doc/file.n b/doc/file.n index bd32dee..662ec54 100644 --- a/doc/file.n +++ b/doc/file.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: file.n,v 1.23.2.2 2004/10/27 14:23:56 dkf Exp $ +'\" RCS: @(#) $Id: file.n,v 1.23.2.3 2006/12/04 09:12:02 dkf Exp $ '\" .so man.macros .TH file n 8.3 Tcl "Tcl Built-In Commands" @@ -286,7 +286,7 @@ will be \fBabsolute\fR. If \fIname\fR refers to a file relative to the current working directory, then the path type will be \fBrelative\fR. If \fIname\fR refers to a file relative to the current working directory on a specified volume, or to a specific file on the current working volume, then -the file type is \fBvolumerelative\fR. +the path type is \fBvolumerelative\fR. .TP \fBfile readable \fIname\fR . -- cgit v0.12 From 279cfdfb6dd21dc84c44159eb34770e30511bdee Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 5 Dec 2006 17:44:43 +0000 Subject: Backport to 8.4 (Don Porter's work). When no requirements are supplied to a [package require $pkg] and [package unknown] is invoked to find a satisfying package, pass the requirement argument "0-" (which means all versions are acceptable). This permits a registered [package unknown] command to call [package vsatisfies $testVersion {*}$args] without any special handling of the empty $args case. This fixes/avoids a bug in [::tcl::tm::UnknownHandler] that was causing old TM versions to be provided in preference to newer TM versions. Thanks to Julian Noble for discovering the issue. --- ChangeLog | 14 ++++++++++++++ generic/tclPkg.c | 4 +++- tests/pkg.test | 6 +++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 92cc427..58f657b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2006-12-05 Andreas Kupries + + * tests/pkg.test: Backport to 8.4 (Don Porter's work): + * generic/tclPkg.c: When no requirements are supplied to a + [package require $pkg] and [package unknown] is invoked to find + a satisfying package, pass the requirement argument "0-" (which + means all versions are acceptable). This permits a registered + [package unknown] command to call [package vsatisfies + $testVersion {*}$args] without any special handling of the empty + $args case. This fixes/avoids a bug in + [::tcl::tm::UnknownHandler] that was causing old TM versions to + be provided in preference to newer TM versions. Thanks to + Julian Noble for discovering the issue. + 2006-12-04 Donal K. Fellows * doc/file.n: Fix confusing wording for [file pathtype]. [Bug 1606454] diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 8f1f413..5115442 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9.2.7 2006/10/11 21:32:13 andreas_kupries Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.8 2006/12/05 17:44:44 andreas_kupries Exp $ * * TIP #268. * Heavily rewritten to handle the extend version numbers, and extended @@ -2143,6 +2143,8 @@ AddRequirementsToDString(dstring, reqc, reqv) Tcl_DStringAppend(dstring, " ", 1); Tcl_DStringAppend(dstring, TclGetString(reqv[i]), -1); } + } else { + Tcl_DStringAppend(dstring, " 0-", -1); } } diff --git a/tests/pkg.test b/tests/pkg.test index 344de1c..cde4151 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.6 2006/10/10 18:16:59 dgp Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.7 2006/12/05 17:44:44 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -255,7 +255,7 @@ test pkg-2.15-268 {Tcl_PkgRequire procedure, "package unknown" support} tip268 { package require {a b} package unknown {} set x -} {{a b}} +} {{a b} 0-} test pkg-2.16 {Tcl_PkgRequire procedure, "package unknown" error} !tip268 { proc pkgUnknown args { error "testing package unknown" @@ -288,7 +288,7 @@ test pkg-2.16-268 {Tcl_PkgRequire procedure, "package unknown" error} tip268 { "error "testing package unknown"" (procedure "pkgUnknown" line 2) invoked from within -"pkgUnknown t" +"pkgUnknown t 0-" ("package unknown" script) invoked from within "package require t"}} -- cgit v0.12 From 4d3bde8fa74425ef463fb222e97e24bf7a94d3cc Mon Sep 17 00:00:00 2001 From: das Date: Fri, 8 Dec 2006 03:38:30 +0000 Subject: typo --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 58f657b..e356bb6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -48,8 +48,8 @@ 2006-11-26 Daniel Steffen - * tcl.m4 (Linux): --enable-64bit support. [Patch 1597389], [Bug 1230558] - * configure: autoconf-2.13 + * unix/tcl.m4 (Linux): --enable-64bit support. [Patch 1597389] + * unix/configure: autoconf-2.13 [Bug 1230558] 2006-11-07 Andreas Kupries -- cgit v0.12 From 9c1250685d8ba9e7e4b26e09939863bc22577d9e Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 14 Dec 2006 14:24:20 +0000 Subject: Fix example. [Bug 1615277] --- ChangeLog | 6850 ++++++++++++++++++++++++++++------------------------------ doc/string.n | 4 +- 2 files changed, 3311 insertions(+), 3543 deletions(-) diff --git a/ChangeLog b/ChangeLog index e356bb6..0716c36 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,16 +1,19 @@ +2006-12-14 Donal K. Fellows + + * doc/string.n: Fix example. [Bug 1615277] + 2006-12-05 Andreas Kupries * tests/pkg.test: Backport to 8.4 (Don Porter's work): - * generic/tclPkg.c: When no requirements are supplied to a - [package require $pkg] and [package unknown] is invoked to find - a satisfying package, pass the requirement argument "0-" (which - means all versions are acceptable). This permits a registered - [package unknown] command to call [package vsatisfies - $testVersion {*}$args] without any special handling of the empty - $args case. This fixes/avoids a bug in - [::tcl::tm::UnknownHandler] that was causing old TM versions to - be provided in preference to newer TM versions. Thanks to - Julian Noble for discovering the issue. + * generic/tclPkg.c: When no requirements are supplied to a [package + require $pkg] and [package unknown] is invoked to find a satisfying + package, pass the requirement argument "0-" (which means all versions + are acceptable). This permits a registered [package unknown] command + to call [package vsatisfies $testVersion {*}$args] without any special + handling of the empty $args case. This fixes/avoids a bug in + [::tcl::tm::UnknownHandler] that was causing old TM versions to be + provided in preference to newer TM versions. Thanks to Julian Noble + for discovering the issue. 2006-12-04 Donal K. Fellows @@ -38,13 +41,13 @@ * tests/platform.test: * tests/safe.test: -2006-11-27 Kevin Kenny - +2006-11-27 Kevin Kenny + * unix/tclUnixChan.c (TclUnixWaitForFile): * tests/event.test (event-14.*): Corrected a bug where - TclUnixWaitForFile would present select() with the wrong mask - on an LP64 machine if a fd number exceeds 32. Thanks to - Jean-Luc Fontaine for reporting and diagnosing [Bug 1602208]. + TclUnixWaitForFile would present select() with the wrong mask on an + LP64 machine if a fd number exceeds 32. Thanks to Jean-Luc Fontaine + for reporting and diagnosing [Bug 1602208] 2006-11-26 Daniel Steffen @@ -59,8 +62,8 @@ 2006-11-03 Miguel Sofer - * generic/tclBasic.c (TEOVI): fix for possible leak of a Command - in the presence of execution traces that delete it. + * generic/tclBasic.c (TEOVI): fix for possible leak of a Command in + the presence of execution traces that delete it. * generic/tclBasic.c (TEOVI): * tests/trace.test (trace-21.11): fix for [Bug 1590232], execution @@ -71,11 +74,11 @@ * generic/tclEnv.c (Darwin): mark _environ symbol as unexported. -2006-10-31 Pat Thoyts +2006-10-31 Pat Thoyts - * rules.vc: Fix bug #1582769 build with VC2003 and correct i386 arch. + * rules.vc: Fix [Bug 1582769] build with VC2003 and correct i386 arch -2006-10-23 Don Porter +2006-10-23 Don Porter * README: Bump version number to 8.4.15 * generic/tcl.h: @@ -88,14 +91,14 @@ * unix/configure: autoconf-2.13 * win/configure: -2006-10-18 Pat Thoyts +2006-10-18 Pat Thoyts *** 8.4.14 TAGGED FOR RELEASE *** * win/nmakehlp.c: Ensure builds with VC6 without Platform SDK. * win/rules.vc: Pickup MACHINE from environment. -2006-10-17 Don Porter +2006-10-17 Don Porter * generic/tclIOUtil.c: Cleaned up some code flagged by a * generic/tclInt.h: `make checkexports` test. @@ -110,27 +113,27 @@ 2006-10-11 Andreas Kupries - * generic/tclPkg.c (Tcl_PkgRequireEx): Corrected crash when - argument version==NULL passed in. Backport of the fix for the - same problem in 8.5. + * generic/tclPkg.c (Tcl_PkgRequireEx): Corrected crash when argument + version==NULL passed in. Backport of the fix for the same problem in + 8.5. -2006-10-10 Don Porter +2006-10-10 Don Porter * changes: changes updated for 8.4.14 release. -2006-10-06 Jeff Hobbs +2006-10-06 Jeff Hobbs * tests/http.test: update tests to handle strictness change. -2006-10-06 Pat Thoyts +2006-10-06 Pat Thoyts - * win/rules.vc: bug #1571954: avoid /RTCc flag with MSVC8 + * win/rules.vc: avoid /RTCc flag with MSVC8. [Bug 1571954] -2006-10-05 Jeff Hobbs +2006-10-05 Jeff Hobbs - * library/http/http.tcl (http::geturl): only do geturl url rfc - 3986 validity checking if $::http::strict is true (default false - for 8.4). [Bug 1560506] + * library/http/http.tcl (http::geturl): only do geturl url rfc 3986 + validity checking if $::http::strict is true (default false for 8.4). + [Bug 1560506] * generic/tcl.h: note limitation on changing Tcl_UniChar size * generic/tclEncoding.c (UtfToUnicodeProc, UnicodeToUtfProc): @@ -143,15 +146,15 @@ * tests/append.test(4.21-22): fix for longstanding [Bug 1570718], lappending nothing to non-list. Reported by lvirden -2006-10-02 Don Porter +2006-10-02 Don Porter * generic/tclFileName.c (TclGlob): Prevent doubling of directory - separators by [glob]. [Bug 1569042] + separators by [glob]. [Bug 1569042] -2006-10-01 Pat Thoyts +2006-10-01 Pat Thoyts * win/tclWinFile.c: Handle possible missing define. - * win/tclWinFile.c: Backported fix for bug #1420432 (cannot set + * win/tclWinFile.c: Backported fix for [Bug 1420432] (cannot set * tests/cmdAH.test: mtime for directories on windows). 2006-09-30 Miguel Sofer @@ -159,7 +162,7 @@ * generic/tclUtil.c (Tcl_SplitList): optimisation, [Patch 1344747] by dgp. -2006-09-26 Pat Thoyts +2006-09-26 Pat Thoyts * win/makefile.vc: Updated MSVC build to properly deal with * win/nmakehlp.c: MSVC8 and AMD64 target. Backport from 8.5 @@ -168,7 +171,7 @@ * win/tclWinSock.c: Casting type police. * win/tclWinTime.c: -2006-09-26 Don Porter +2006-09-26 Don Porter * generic/tcl.h: As 2006-09-22 commit from Donal K. Fellows demonstrates, "#define NULL 0" is just wrong, and as a quotable chat @@ -177,36 +180,35 @@ 2006-09-25 Andreas Kupries - * generic/tclIO.c (Tcl_StackChannel): Fixed [SF Tcl Bug 1564642], - aka coverity #51. Extended loop condition, added checking for - NULL to prevent seg.fault. + * generic/tclIO.c (Tcl_StackChannel): Fixed [SF Tcl Bug 1564642], aka + coverity #51. Extended loop condition, added checking for NULL to + prevent seg.fault. 2006-09-25 Andreas Kupries - * generic/tclBasic.c: Reverted exposure of patchlevel in - registered core version when TIP#268 features are - activated. Better compatibility with existing packages. - Like Tk. + * generic/tclBasic.c: Reverted exposure of patchlevel in registered + core version when TIP#268 features are activated. Better compatibility + with existing packages. Like Tk. 2006-09-24 Miguel Sofer * generic/tclParse.c (Tcl_ParseCommand): also return an error if start==NULL and numBytes<0. This is coverity's bug #20 - * generic/tclStringObj.c (STRING_SIZE): fix allocation for - 0-length strings. This is coverity's bugs #54-5 + * generic/tclStringObj.c (STRING_SIZE): fix allocation for 0-length + strings. This is coverity's bugs #54-5 2006-09-22 Andreas Kupries - * generic/tclInt.h: Moved TIP#268's field 'packagePrefer' to the - end of the structure, for better backward compatibility. + * generic/tclInt.h: Moved TIP#268's field 'packagePrefer' to the end + of the structure, for better backward compatibility. 2006-09-22 Andreas Kupries - * generic/tclPkg.c (Tcl_PkgRequireEx): Changes handling of the - return information from 'Tcl_PkgRequireProc'. Keep the - interpreter result empty. Backport of fix for problem found - while testing #268 under 8.5. More details in the comments. + * generic/tclPkg.c (Tcl_PkgRequireEx): Changes handling of the return + information from 'Tcl_PkgRequireProc'. Keep the interpreter result + empty. Backport of fix for problem found while testing #268 under 8.5. + More details in the comments. 2006-09-22 Donal K. Fellows @@ -230,7 +232,7 @@ * tests/safe.test: * doc/PkgRequire.3: -2006-09-15 Jeff Hobbs +2006-09-15 Jeff Hobbs * library/http/http.tcl: Change " " -> "+" url encoding mapping * library/http/pkgIndex.tcl: to " " -> "%20" as per RFC 3986. @@ -239,13 +241,13 @@ 2006-09-12 Andreas Kupries * unix/configure.in (HAVE_MTSAFE_GETHOST*): Modified to recognize - HP-UX 11.00 and beyond as having mt-safe implementations of the - gethost functions. + HP-UX 11.00 and beyond as having mt-safe implementations of the + gethost functions. * unix/configure: Regenerated, using autoconf 2.13 - * unix/tclUnixCompat.c (PadBuffer): Fixed bug in calculation of - the increment needed to align the pointer, and added - documentation explaining why the macro is implemented as it is. + * unix/tclUnixCompat.c (PadBuffer): Fixed bug in calculation of the + increment needed to align the pointer, and added documentation + explaining why the macro is implemented as it is. 2006-09-11 Andreas Kupries @@ -254,11 +256,11 @@ 2006-09-11 Daniel Steffen - * unix/tclUnixCompat.c: make compatLock static and only declare it when - it will actually be used; #ifdef parts of TSD that are not always + * unix/tclUnixCompat.c: make compatLock static and only declare it + when it will actually be used; #ifdef parts of TSD that are not always needed; adjust #ifdefs to cover all possible cases; fix whitespace. -2006-09-10 Don Porter +2006-09-10 Don Porter * library/msgcat/msgcat.tcl: Bump to version msgcat 1.3.4 to account * library/msgcat/pkgIndex.tcl: for modifications. @@ -267,38 +269,37 @@ * library/msgcat/msgcat.tcl (msgcat::Init): on Darwin, add fallback of * tests/msgcat.test: default msgcat locale to - * unix/tclUnixInit.c (TclpSetVariables): current CFLocale identifier - if available (via private ::tcl::mac::locale global, set at interp init - when on Mac OS X 10.3 or later with CoreFoundation). + * unix/tclUnixInit.c (TclpSetVariables): current CFLocale + identifier if available (via private ::tcl::mac::locale global, set at + interp init when on Mac OS X 10.3 or later with CoreFoundation). - * unix/tcl.m4: add caching to new SC_TCL_* macros for MT-safe wrappers. + * unix/tcl.m4: add caching to new SC_TCL_* macros for MT-safe wrappers * unix/configure: autoconf-2.13 2006-09-08 Andreas Kupries - * unix/tclUnixCompat.c: Fixed conditions for CopyArray/CopyString, - and CopyHostent. Also fixed bad var names in TclpGetHostByName. + * unix/tclUnixCompat.c: Fixed conditions for CopyArray/CopyString, and + CopyHostent. Also fixed bad var names in TclpGetHostByName. 2006-09-08 Zoran Vasiljevic - * unix/tclUnixCompat.c: Added fallback to gethostbyname() - and gethostbyaddr() if the implementation is known to be - MT-safe (currently for Darwin 6 or later only). + * unix/tclUnixCompat.c: Added fallback to gethostbyname() and + gethostbyaddr() if the implementation is known to be MT-safe + (currently for Darwin 6 or later only). - * unix/configure.in: Assume gethostbyname() and gethostbyaddr() - are MT-safe starting with Darwin 6 (Mac OSX 10.2). + * unix/configure.in: Assume gethostbyname() and gethostbyaddr() are + MT-safe starting with Darwin 6 (Mac OSX 10.2). * unix/configure: Regenerated with autoconf V2.13 2006-09-07 Zoran Vasiljevic - * unix/tclUnixFCmd.c: Removed some false tests added - (and left by mistake) by fixing the Tcl Bug: 999544 + * unix/tclUnixFCmd.c: Removed some false tests added (and left by + mistake) by fixing [Bug 999544] - * unix/tclUnixCompat.c: Added fallback to MT-unsafe - library calls if TCL_THREADS is not defined. - Fixed alignment of arrays copied by CopyArrayi() to be - on the sizeof(char *) boundary. + * unix/tclUnixCompat.c: Added fallback to MT-unsafe library calls if + TCL_THREADS is not defined. Fixed alignment of arrays copied by + CopyArrayi() to be on the sizeof(char *) boundary. 2006-09-07 Andreas Kupries @@ -323,19 +324,19 @@ * unix/tcl.m4: * unix/configure: Regenerated. - * unix/tclUnixCompat.c: New file containing MT-safe implementation - of some library calls. + * unix/tclUnixCompat.c: New file containing MT-safe implementation of + some library calls. -2006-09-04 Don Porter +2006-09-04 Don Porter * tests/main.text (Tcl_Main-4.4): Test corrected to not be timing sensitive to the Bug 1481986 fix. [Bug 1550858] -2006-09-04 Jeff Hobbs +2006-09-04 Jeff Hobbs * doc/package.n: correct package example -2006-08-30 Jeff Hobbs +2006-08-30 Jeff Hobbs * win/tclWinChan.c: [Bug 819667] Improve logic for identifying COM ports. @@ -347,8 +348,8 @@ * generic/tclFileName.c (TclDoGlob): match incr with existing decr. * unix/Makefile.in: add valgrindshell target and update default - VALGRINDARGS. User can override, or add to it with VALGRIND_OPTS - env var. + VALGRINDARGS. User can override, or add to it with VALGRIND_OPTS env + var. * generic/tclBasic.c (Tcl_CreateInterp): init iPtr->threadId @@ -359,14 +360,13 @@ 2006-08-22 Andreas Kupries * unix/tclUnixNotfy.c (Tcl_WaitForEvent): Fixed broken if syntax - committed 2006-08-21 by Daniel. The broken syntax is visible to - all unix platforms, but not on OSX for machines which - HAVE_COREFOUNDATION. + committed 2006-08-21 by Daniel. The broken syntax is visible to all + unix platforms, but not on OSX for machines which HAVE_COREFOUNDATION. -2006-08-21 Don Porter +2006-08-21 Don Porter * generic/tclIOUtil.c: Revisions to complete the thread finalization - of the cwdPathPtr. [Bug 1536142] + of the cwdPathPtr. [Bug 1536142] 2006-08-21 Daniel Steffen @@ -374,13 +374,14 @@ already running (e.g. if Tcl_WaitForEvent was called recursively), re-run it in a custom run loop mode containing only the source for the notifier thread, otherwise wakeups from other sources added to the - common run loop modes might get lost; sync panic msg changes from HEAD. + common run loop modes might get lost; sync panic msg changes from + HEAD. * unix/tclUnixNotfy.c (Tcl_WaitForEvent): on 64-bit Darwin, pthread_cond_timedwait() appears to have a bug that causes it to wait - forever when passed an absolute time which has already been exceeded by - the system time; as a workaround, when given a very brief timeout, just - do a poll on that platform. [Bug 1457797] + forever when passed an absolute time which has already been exceeded + by the system time; as a workaround, when given a very brief timeout, + just do a poll on that platform. [Bug 1457797] * unix/tclUnixPort.h (Darwin): override potentially faulty configure detection of termios availability in all cases, since termios is known @@ -389,73 +390,75 @@ 2006-08-18 Daniel Steffen * unix/tcl.m4 (Darwin): add support for --enable-64bit on x86_64, for - universal builds including x86_64, for 64-bit CoreFoundation on Leopard - and for use of -mmacosx-version-min instead of MACOSX_DEPLOYMENT_TARGET. + universal builds including x86_64, for 64-bit CoreFoundation on + Leopard and for use of -mmacosx-version-min instead of + MACOSX_DEPLOYMENT_TARGET. * unix/configure: autoconf-2.13 - * generic/tcl.h: add fixes for building on Leopard and support for - * unix/tclUnixPort.h: 64-bit CoreFoundation on Leopard. + * generic/tcl.h: add fixes for building on Leopard and support + * unix/tclUnixPort.h: for 64-bit CoreFoundation on Leopard. * unix/tclUnixPort.h: on Darwin x86_64, disable use of vfork as it causes execve to fail intermittently. (rdar://4685553) * macosx/README: updates for x86_64 support and Xcode 2.4. - * unix/tclUnixChan.c (TclUnixWaitForFile): with timeout < 0, if select() - returns early (e.g. due to a signal), call it again instead of returning - a timeout result. Fixes intermittent event-13.8 failures. + * unix/tclUnixChan.c (TclUnixWaitForFile): with timeout < 0, if + select() returns early (e.g. due to a signal), call it again instead + of returning a timeout result. Fixes intermittent event-13.8 failures. -2006-08-09 Don Porter +2006-08-09 Don Porter - * generic/tclEncoding.c: Replace buffer copy in for loop - with call to memcpy(). Thanks to afredd. [Patch 1530262] + * generic/tclEncoding.c: Replace buffer copy in for loop with + call to memcpy(). Thanks to afredd. [Patch 1530262] 2006-08-03 Daniel Steffen - * unix/tclUnixPipe.c (TclpCreateProcess): for USE_VFORK: ensure standard - channels are initialized before vfork() so that the child doesn't - potentially corrupt global state in the parent's address space. + * unix/tclUnixPipe.c (TclpCreateProcess): for USE_VFORK: ensure + standard channels are initialized before vfork() so that the child + doesn't potentially corrupt global state in the parent's address + space. -2006-07-30 Kevin Kenny +2006-07-30 Kevin Kenny - * tests/clock.test: Allowed UTC as a synonym for GMT in two - tests that indirectly invoke 'strftime' with the result of - 'gmtime' to fix a bogus test failure on FreeBSD systems. - [Bug 1513489]. + * tests/clock.test: Allowed UTC as a synonym for GMT in two tests that + indirectly invoke 'strftime' with the result of 'gmtime' to fix a + bogus test failure on FreeBSD systems. [Bug 1513489] -2006-07-30 Joe English +2006-07-30 Joe English * doc/AppInit.3: Fix typo [Bug 1496886] 2006-07-20 Daniel Steffen - * macosx/tclMacOSXNotify.c (Tcl_InitNotifier, Tcl_WaitForEvent): create - notifier thread lazily upon first call to Tcl_WaitForEvent() rather than - in Tcl_InitNotifier(). Allows calling exeve() in processes where the - event loop has not yet been run (Darwin's execve() fails in processes - with more than one thread), in particular allows embedders to call - fork() followed by execve(), previously the pthread_atfork() child - handler's call to Tcl_InitNotifier() would immediately recreate the - notifier thread in the child after a fork. + * macosx/tclMacOSXNotify.c (Tcl_InitNotifier, Tcl_WaitForEvent): + create notifier thread lazily upon first call to Tcl_WaitForEvent() + rather than in Tcl_InitNotifier(). Allows calling exeve() in processes + where the event loop has not yet been run (Darwin's execve() fails in + processes with more than one thread), in particular allows embedders + to call fork() followed by execve(), previously the pthread_atfork() + child handler's call to Tcl_InitNotifier() would immediately recreate + the notifier thread in the child after a fork. * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): add support for * unix/tclUnixFCmd.c (DoRenameFile, CopyFileAtts): weakly importing - * unix/tclUnixInit.c (TclpSetInitialEncodings): symbols not available - on OSX 10.2 or 10.3, enables binaires built on later OSX versions to run - on earlier ones. + * unix/tclUnixInit.c (TclpSetInitialEncodings): symbols not + available on OSX 10.2 or 10.3, enables binaires built on later OSX + versions to run on earlier ones. * macosx/README: document how to enable weak-linking; cleanup. * unix/tclUnixPort.h: add support for weak-linking; conditionalize - AvailabilityMacros.h inclusion; only disable realpath on 10.2 or earlier - when threads are enabled. + AvailabilityMacros.h inclusion; only disable realpath on 10.2 or + earlier when threads are enabled. * unix/tclLoadDyld.c (TclpLoadMemoryGetBuffer): change runtime Darwin * unix/tclUnixInit.c (TclpInitPlatform): release check to use - global initialized once. + global initialized once * unix/tclUnixFCmd.c (DoRenameFile, TclpObjNormalizePath): add runtime Darwin release check to determine if realpath is threadsafe. * unix/configure.in: add check on Darwin for compiler support of weak * unix/tcl.m4: import and for AvailabilityMacros.h header; move - Darwin specific checks & defines that are only relevant to the tcl build - out of tcl.m4; restrict framework option to Darwin; cleanup quoting. + Darwin specific checks & defines that are only relevant to the tcl + build out of tcl.m4; restrict framework option to Darwin; cleanup + quoting. * unix/configure: autoconf-2.13 * unix/tclLoadDyld.c (TclpLoadMemory): @@ -464,22 +467,22 @@ 2006-07-13 Andreas Kupries - * unix/tclUnixPort.h: Added the inclusion of - . The missing header caused the upcoming - #if conditions to wrongly exclude realpath, causing file - normalize to ignore symbolic links in the path. + * unix/tclUnixPort.h: Added the inclusion of . + The missing header caused the upcoming #if conditions to wrongly + exclude realpath, causing file normalize to ignore symbolic links in + the path. 2006-07-11 Zoran Vasiljevic - * generic/tclAsync.c: Made Tcl_AsyncDelete() more tolerant - when called after all thread TSD has been garbage-collected. + * generic/tclAsync.c: Made Tcl_AsyncDelete() more tolerant when called + after all thread TSD has been garbage-collected. -2006-07-10 Jeff Hobbs +2006-07-10 Jeff Hobbs * generic/tclIO.c (Tcl_CreateChannel): allow Tcl std channel inheritance to be #defined out (default remains in). -2006-06-15 Don Porter +2006-06-15 Don Porter * changes: changes to start prep for an 8.4.14 release. @@ -489,15 +492,15 @@ define from AvailabilityMacros.h: override configure detection and only use API available in the indicated OS version or earlier. -2006-06-14 Pat Thoyts +2006-06-14 Pat Thoyts - * generic/regerror.c: Enable building Tcl with Microsoft's - * generic/tcl.h: latest compiler offering (VS2005). - * generic/tclDate.c: We have to handle a number of oddities - * tests/env.test: as they have deprecated most of the - * win/makefile.vc: standard C library and now generate - * win/nmakehlp.c: manifest files to be linked into the - * win/rules.vc: binaries. SF bug #1424909 + * generic/regerror.c: Enable building Tcl with Microsoft's latest + * generic/tcl.h: compiler offering (VS2005). We have to handle + * generic/tclDate.c: a number of oddities as they have deprecated + * tests/env.test: most of the standard C library and now + * win/makefile.vc: generate manifest files to be linked into the + * win/nmakehlp.c: binaries. [Bug 1424909] + * win/rules.vc: * win/tclWinTime.c: 2006-06-13 Donal K. Fellows @@ -505,19 +508,19 @@ * unix/tclLoadDl.c (TclpDlopen): Workaround for a compiler bug in Sun Forte 6. [Bug 1503729] -2006-06-06 Don Porter +2006-06-06 Don Porter * doc/GetStdChan.3: Added recommendation that each call to Tcl_SetStdChannel() be accompanied by a call to Tcl_RegisterChannel(). -2006-05-31 Jeff Hobbs +2006-05-31 Jeff Hobbs * generic/tclNamesp.c (NamespaceInscopeCmd): revert [Bug 1400572] fix of 2006-01-09 for [namespace inscope] as it seems to mess with - itcl scope decoding. Leaving namespace-29.6 test failure until - final cause it determined. + itcl scope decoding. Leaving namespace-29.6 test failure until final + cause it determined. -2006-05-29 Jeff Hobbs +2006-05-29 Jeff Hobbs * generic/tcl.h (Tcl_DecrRefCount): use if/else construct to allow placement in unbraced outer if/else conditions. (jcw) @@ -531,8 +534,8 @@ on Darwin, [exec]/[open] are not affected by this fix, only extensions or embedders that call fork() directly (such as TclX). However, this only makes fork() safe from corefoundation tcl with --disable-threads; - as on all platforms, forked children may deadlock in threaded tcl due to - the potential for stale locked mutexes in the child. [Patch 923072] + as on all platforms, forked children may deadlock in threaded tcl due + to the potential for stale locked mutexes in the child. [Patch 923072] * unix/configure: autoconf-2.59 2006-05-24 Donal K. Fellows @@ -540,7 +543,7 @@ * unix/tcl.m4 (SC_CONFIG_SYSTEM): Fixed quoting of command script to awk; it was a rarely used branch, but it was wrong. [Bug 1494160] -2006-05-13 Don Porter +2006-05-13 Don Porter * generic/tclFileName.c (TclDoGlob): Disabled the partial normalization done by the recursive glob routine, since changing the @@ -550,18 +553,18 @@ * generic/tclProc.c (ProcCompileProc): When a bump of the compile epoch forces the re-compile of a proc body, take care not to overwrite any Proc struct that may be referred to on the active - call stack. This fixes [Bug 1482718]. Note that the fix will not be + call stack. This fixes [Bug 1482718]. Note that the fix will not be effective for code that calls the private routine TclProcCompileProc() directly. -2006-05-05 Don Porter +2006-05-05 Don Porter * generic/tclMain.c (Tcl_Main): Corrected flaw that required * tests/main.test: (Tcl_Main-4.5): processing of one interactive command before passing control to the loop routine registered with - Tcl_SetMainLoop() [Bug 1481986]. + Tcl_SetMainLoop() [Bug 1481986] -2006-05-04 Don Porter +2006-05-04 Don Porter * README: Bump version number to 8.4.14 * generic/tcl.h: @@ -575,35 +578,35 @@ * win/configure: * generic/tclExecute.c (ExprSrandFunc): Restore acceptance of wide - * tests/expr-old.test: integer values by srand() [Bug 1480509]. + * tests/expr-old.test: integer values by srand() [Bug 1480509] -2006-04-12 Don Porter +2006-04-12 Don Porter *** 8.4.13 TAGGED FOR RELEASE *** * changes: updates for another RC. -2006-04-11 Don Porter +2006-04-11 Don Porter * generic/tclCmdMZ.c: Stop some interference between enter traces - * tests/trace.test: and enterstep traces. [Bug 1458266] + * tests/trace.test: and enterstep traces. [Bug 1458266] -2006-04-10 Don Porter +2006-04-10 Don Porter * changes: updates for another RC. -2006-04-06 Jeff Hobbs +2006-04-06 Jeff Hobbs - * generic/tclRegexp.c (FinalizeRegexp): full reset data to - indicate readiness for reinitialization. + * generic/tclRegexp.c (FinalizeRegexp): full reset data to indicate + readiness for reinitialization. -2006-04-06 Don Porter +2006-04-06 Don Porter - * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): It seems - * tests/indexObj.test: there are extensions that rely on the prior - * doc/GetIndex.3: behavior that the empty string cannot succeed - as a unique prefix matcher, so I'm restoring Donal Fellow's solution. - Added mention of this detail to the documentation. [Bug 1464039] + * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): It seems there + * tests/indexObj.test: are extensions that rely on the prior behavior + * doc/GetIndex.3: that the empty string cannot succeed as a + unique prefix matcher, so I'm restoring Donal Fellows's solution. + Added mention of this detail to the documentation. [Bug 1464039] 2006-04-06 Daniel Steffen @@ -611,11 +614,11 @@ define on Darwin. [Bug 1457515] * unix/configure: autoconf-2.13 -2006-04-05 Don Porter +2006-04-05 Don Porter - * library/reg/pkgIndex.tcl: Long overlooked bump to registry package - * win/tclWinReg.c: version 1.1.4 (should have been done - for the Tcl 8.4.8 release!) + * library/reg/pkgIndex.tcl: Long overlooked bump to registry + * win/tclWinReg.c: package version 1.1.4 (should have + been done for the Tcl 8.4.8 release!) * library/dde/pkgIndex.tcl: Long overlooked bump to dde package * win/tclWinDde.c: version 1.2.4 (should have been done @@ -624,15 +627,15 @@ 2006-04-05 Donal K. Fellows * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): Allow empty - strings to be matched by the Tcl_GetIndexFromObj machinery, in - the same manner as any other key. [Bug 1464039] + strings to be matched by the Tcl_GetIndexFromObj machinery, in the + same manner as any other key. [Bug 1464039] -2006-04-04 Don Porter +2006-04-04 Don Porter - * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 - * tests/pkg.test: to be even more forgiving of package version + * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 to be + * tests/pkg.test: even more forgiving of package version mismatch errors in [package ifneeded] commands, not even logging any - warning messages. This further reduces the + warning messages. This further reduces the ***POTENTIAL INCOMPATIBILITY*** noted for that change. 2006-04-03 Andreas Kupries @@ -644,25 +647,25 @@ is OK, and the panic is as a precaution if someone twiddled the BUFFER_PADDING into uselessness. - * generic/tclIO.c (ReadChars): [Bug 1462248]. Temporarily suppress - the use of TCL_ENCODING_END set when EOF was reached while the buffer - we are converting is not truly the last buffer in the queue. Together - with the Utf bug below it was possible to completely wreck the buffer - data structures, eventually crashing Tcl. + * generic/tclIO.c (ReadChars): Temporarily suppress the use of + TCL_ENCODING_END set when EOF was reached while the buffer we are + converting is not truly the last buffer in the queue. Together with + the Utf bug below it was possible to completely wreck the buffer data + structures, eventually crashing Tcl. [Bug 1462248] * generic/tclEncoding.c (UtfToUtfProc): Stop accessing memory beyond the end of the input buffer when TCL_ENCODING_END is set and the last bytes of the buffer start a multi-byte sequence. This bug contributed to [Bug 1462248]. -2006-03-28 Jeff Hobbs +2006-03-28 Jeff Hobbs * win/configure, win/tcl.m4: define MACHINE for gcc builds as well. Needed by Tk for manifest generation. - * win/tclWinConsole.c: revert 2005-11-03 [Patch 1256872] change - to add win32 unicode console support as it broke the ability to - modify the encoding to the console. + * win/tclWinConsole.c: revert 2005-11-03 [Patch 1256872] change to add + win32 unicode console support as it broke the ability to modify the + encoding to the console. 2006-03-28 Daniel Steffen @@ -674,15 +677,15 @@ * generic/tclIOUtil.c: fix to nativeFilesystemRecord comparisons (lesser part of [Bug 1064247]) -2006-03-27 Pat Thoyts +2006-03-27 Pat Thoyts - * win/tclWinTest.c: Fixes for bug #1456373 (mingw-gcc issue) + * win/tclWinTest.c: Fixes for [Bug 1456373] (mingw-gcc issue) -2006-03-23 Don Porter +2006-03-23 Don Porter * tests/expr.test: Nan self-inquality test silenced. [Bug 761471] -2006-03-22 Don Porter +2006-03-22 Don Porter * changes: updates for another RC. @@ -693,94 +696,91 @@ * win/tclWinTest.c: * tests/fCmd.test: * tests/winFCmd.test: - * tests/tcltest.test: Backport of [file writable] fixes for - Windows from HEAD. [Bug 1193497] + * tests/tcltest.test: Backport of [file writable] fixes for Windows + from HEAD. [Bug 1193497] 2006-03-16 Andreas Kupries * doc/open.n: Documented the changed behaviour of 'a'ppend mode. * tests/io.test (io-43.1 io-44.[1234]): Rewritten to be - self-contained with regard to setup and cleanup. [Bug 681793]. + self-contained with regard to setup and cleanup. [Bug 681793] - * generic/tclIOUtil.c (TclGetOpenMode): Added the flag O_APPEND to - the list of POSIX modes used when opening a file for - 'a'ppend. This enables the proper automatic seek-to-end-on-write - by the OS. See [Bug 680143] for longer discussion. + * generic/tclIOUtil.c (TclGetOpenMode): Added the flag O_APPEND to the + list of POSIX modes used when opening a file for 'a'ppend. This + enables the proper automatic seek-to-end-on-write by the OS. See [Bug + 680143] for longer discussion. - * tests/ioCmd.test (iocmd-13.7.*): Extended the testsuite to check - the new handling of 'a'. + * tests/ioCmd.test (iocmd-13.7.*): Extended the testsuite to check the + new handling of 'a'. 2006-03-15 Andreas Kupries - * tests/socket.test: Extended the timeout in socket-11.11 from 10 - to 40 seconds to allow for really slow machines. Also extended - actual/expected results with value of variable 'done' to make it - clearer when a test fails due to a timeout. [Bug 792159]. + * tests/socket.test: Extended the timeout in socket-11.11 from 10 to + 40 seconds to allow for really slow machines. Also extended + actual/expected results with value of variable 'done' to make it + clearer when a test fails due to a timeout. [Bug 792159] 2006-03-14 Andreas Kupries - * generic/tclPipe.c (TclCreatePipeline): Modified the processing - of pipebars to fail if the last bar is followed only by - redirections. [Bug 768659]. + * generic/tclPipe.c (TclCreatePipeline): Modified the processing of + pipebars to fail if the last bar is followed only by redirections. + [Bug 768659] 2006-03-14 Andreas Kupries - * doc/fconfigure.n: Clarified that -translation is binary is - reported as lf when queried, because it is identical to lf, - except for the special additional behaviour when setting - it. [Bug 666770]. + * doc/fconfigure.n: Clarified that -translation is binary is reported + as lf when queried, because it is identical to lf, except for the + special additional behaviour when setting it. [Bug 666770] 2006-03-14 Andreas Kupries - * win/tclWinPipe.c (Tcl_WaitPid): Backport of fix made to the head - by David Gravereaux in 2004. See ChangeLog entry 2004-01-19. - [Bug 1381436]. + * win/tclWinPipe.c (Tcl_WaitPid): Backport of fix made to the head by + David Gravereaux in 2004. See ChangeLog entry 2004-01-19. [Bug 1381436] - Fixed a thread-safety problem with the process list. The delayed - cut operation after the wait was going stale by being outside - the list lock. It now cuts within the lock and does a locked - splice for when it needs to instead. [Bug 859820] + Fixed a thread-safety problem with the process list. The delayed cut + operation after the wait was going stale by being outside the list + lock. It now cuts within the lock and does a locked splice for when it + needs to instead. [Bug 859820] -2006-03-13 Don Porter +2006-03-13 Don Porter * generic/tclEncoding.c: Report error when an escape encoding - is missing one of its sub-encodings [Bug 506653]. + is missing one of its sub-encodings [Bug 506653] * unix/configure.in: Revert change from 2005-07-26 that sometimes * unix/configure: added $prefix/share to the tcl_pkgPath. - See [Patch 1231015]. autoconf-2.13. + See [Patch 1231015]. autoconf-2.13. 2006-03-10 Zoran Vasiljevic - -- Summary of changes fixing Tcl Bug #1437595 -- + -- Summary of changes fixing [Bug 1437595] -- * generic/tclEvent.c: Cosmetic touches and identation * generic/tclInt.h: Added TclpFinalizeSockets() call. - * generic/tclIO.c: Calls TclpFinalizeSockets() as part - of the TclFinalizeIOSubsystem(). + * generic/tclIO.c: Calls TclpFinalizeSockets() as part of the + TclFinalizeIOSubsystem(). * unix/tclUnixSock: Added no-op TclpFinalizeSockets(). * mac/tclMacSock.c: * win/tclWinPipe.c - * win/tclWinSock.c: Finalization of the sockets/pipes - is now solely done in TclpFinalizeSockets() and - TclpFinalizePipes() and not over the thread-exit handler, - because the order of actions the Tcl generic core will - impose may result in cores/hangs if the thread exit handler - tears down corresponding subsystem(s) too early. + * win/tclWinSock.c: Finalization of the sockets/pipes is now solely + done in TclpFinalizeSockets() and TclpFinalizePipes() and not over the + thread-exit handler, because the order of actions the Tcl generic core + will impose may result in cores/hangs if the thread exit handler tears + down corresponding subsystem(s) too early. 2006-03-10 Vince Darley * win/tclWin32Dll.c: * win/tclWinInt.h: - * win/tclWinFile.c: backported some fixes from HEAD relating - to 'file readable' and 'file writable', but main 'file writable' - bug still outstanding. + * win/tclWinFile.c: backported some fixes from HEAD relating to 'file + readable' and 'file writable', but main 'file writable' bug still + outstanding. -2006-03-07 Don Porter +2006-03-07 Don Porter * README: Bump version number to 8.4.13 and update * changes: changes to start prep for an 8.4.13 release. @@ -793,45 +793,45 @@ * tests/parse.test: Missing constraint -2006-03-06 Don Porter +2006-03-06 Don Porter * generic/tclBasic.c: Revised handling of TCL_EVAL_* flags to * tests/parse.test: simplify TclEvalObjvInternal and to correct - the auto-loading of alias targets (parse-8.12). [Bug 1444291]. + the auto-loading of alias targets (parse-8.12). [Bug 1444291] -2006-03-02 Jeff Hobbs +2006-03-02 Jeff Hobbs * win/Makefile.in: convert _NATIVE paths to use / to avoid ".\" path-as-escape issue. * unix/tcl.m4, win/tcl.m4: []-quote ac_defun functions. -2006-03-02 Pat Thoyts +2006-03-02 Pat Thoyts - * unix/tcl.m4: Fix for tk bug #1334613 to sort out shared library + * unix/tcl.m4: Fix for [Tk Bug 1334613] to sort out shared library * unix/configure: issues on NetBSD. Regenerated configure script. -2006-02-28 Don Porter +2006-02-28 Don Porter * generic/tclBasic.c: Corrections to be sure that TCL_EVAL_GLOBAL * tests/parse.test: evaluations act the same as [uplevel #0] * tests/trace.test: evaluations, even when execution traces or - invocations of [::unknown] are present. [Bug 1439836]. + invocations of [::unknown] are present. [Bug 1439836] -2006-02-16 Don Porter +2006-02-16 Don Porter * generic/tclIndexObj.c: Disallow the "ambiguous" error message * tests/indexObj.test: when TCL_EXACT matching is requested. -2006-02-15 Don Porter +2006-02-15 Don Porter * generic/tclIO.c: Made several routines tolerant of - * generic/tclIOUtil.c: interp == NULL arguments. [Bug 1380662] + * generic/tclIOUtil.c: interp == NULL arguments. [Bug 1380662] -2006-02-09 Don Porter +2006-02-09 Don Porter - * tests/main.test (Tcl_Main-6.7): Improved robustness of - command auto-completion test. [Bug 1422736]. + * tests/main.test (Tcl_Main-6.7): Improved robustness of command + auto-completion test. [Bug 1422736] 2006-01-25 Donal K. Fellows @@ -841,26 +841,25 @@ 2006-01-23 Miguel Sofer * generic/tclStringObj.c (Tcl_GetRange): - * tests/stringTest (string-12.21):fixed incorrect handling of - internal rep in Tcl_GetRange [Bug 1410553]. Thanks to twylite and - Peter Spjuth. + * tests/stringTest (string-12.21):fixed incorrect handling of internal + rep in Tcl_GetRange. Thanks to twylite and Peter Spjuth. [Bug 1410553] 2006-01-16 Reinhard Max - * generic/tclPipe.c (FileForRedirect): Prevent nameString from - being freed without having been initialized. + * generic/tclPipe.c (FileForRedirect): Prevent nameString from being + freed without having been initialized. * tests/exec.test: Added a test for the above. 2006-01-12 Zoran Vasiljevic * generic/tclIOUtil.c (Tcl_FSGetInternalRep): fixed potential - overwriting of already freed memory which caused all kinds of - (rare but reproducible) coredumps all over the place. + overwriting of already freed memory which caused all kinds of (rare + but reproducible) coredumps all over the place. -2006-01-11 Don Porter +2006-01-11 Don Porter - * tests/error.test (error-7.0): Test the timing of write traces - on ::errorInfo [Bug 1397843]. + * tests/error.test (error-7.0): Test the timing of write traces on + ::errorInfo. [Bug 1397843] 2006-01-10 Daniel Steffen @@ -870,11 +869,11 @@ changes and gratuitous formatting differences, fix SC_CONFIG_MANPAGES with default argument, Darwin improvements to SC_LOAD_*CONFIG. -2006-01-09 Don Porter +2006-01-09 Don Porter * generic/tclNamesp.c (NamespaceInscopeCmd): [namespace inscope] - * tests/namespace.test: commands were not reported by [info level] - [Bug 1400572]. + * tests/namespace.test: commands were not reported by [info level]. + [Bug 1400572] 2005-12-20 Donal K. Fellows @@ -896,16 +895,16 @@ than recursive opendir/readdir (sync with HEAD). * unix/configure: regen. -2005-12-12 Jeff Hobbs +2005-12-12 Jeff Hobbs * unix/tcl.m4, unix/configure: Fix sh quoting error reported in bash-3.1+ [Bug 1377619] (schafer) 2005-12-12 Reinhard Max - * generic/tclExecute.c (ExprAbsFunc): fixed the abs(MIN_INT) case - so that it doesn't break on compilers that don't assume integers - to wrap around (e.g. gcc-4.1.0). + * generic/tclExecute.c (ExprAbsFunc): fixed the abs(MIN_INT) case so + that it doesn't break on compilers that don't assume integers to wrap + around (e.g. gcc-4.1.0). 2005-12-09 Donal K. Fellows @@ -920,10 +919,10 @@ * unix/tclUnixPort.h (Darwin): fix incorrect __DARWIN_UNIX03 configure overrides that were originally copied from Darwin CVS (rdar://3693001). -2005-12-05 Don Porter +2005-12-05 Don Porter * unix/configure.in: Revised fix for [Bug 1034337] from Daniel - * unix/tclUnixFCmd.c: Steffen. Uses fts_*() routines. + * unix/tclUnixFCmd.c: Steffen. Uses fts_*() routines. * unix/configure: autoconf-2.13 * changes: Update changes for 8.4.12 release @@ -932,11 +931,11 @@ * README: refer to macosx/README instead of mac/README. * mac/README: add note that mac classic port is no longer supported. -2005-12-03 Jeff Hobbs +2005-12-03 Jeff Hobbs * README: correct 2 urls -2005-12-01 Don Porter +2005-12-01 Don Porter * changes: Update changes for 8.4.12 release @@ -945,7 +944,7 @@ * unix/tcl.m4 (Darwin): fixed error when MACOSX_DEPLOYMENT_TARGET unset * unix/configure: regen. -2005-11-29 Jeff Hobbs +2005-11-29 Jeff Hobbs * win/tcl.m4: Add build support for Windows-x64 builds. * win/configure: --enable-64bit now accepts =amd64|ia64 for @@ -982,9 +981,9 @@ * unix/Makefile.in: add CFLAGS to tclsh/tcltest link to make executable linking the same as during configure (needed to avoid - loosing any linker relevant flags in CFLAGS, in particular flags - that can't be in LDFLAGS). Avoid concurrent linking of tclsh and - compiling of tclTestInit.o or xtTestInit.o during parallel make. + loosing any linker relevant flags in CFLAGS, in particular flags that + can't be in LDFLAGS). Avoid concurrent linking of tclsh and compiling + of tclTestInit.o or xtTestInit.o during parallel make. (checkstubs, checkdoc, checkexports): dependency and Darwin fixes * unix/tclLoadDyld.c (TclpDlopen): [Bug 1204237] use @@ -1041,17 +1040,17 @@ * unix/configure: regen. -2005-11-20 Joe English +2005-11-20 Joe English * generic/tclStubLib.c: Don't set tclStubsPtr to 0 when - Tcl_PkgRequireEx() fails [Fix for #1091431 "Tcl_InitStubs failure + Tcl_PkgRequireEx() fails [Fix for [Bug 1091431] "Tcl_InitStubs failure crashes wish"] 2005-11-18 Miguel Sofer - * tests/trace.test (trace-34.5): [Bug 1047286], added a second - test illustrating the role of "ns in callStack" in the ns's - visibility during deletion traces. + * tests/trace.test (trace-34.5): [Bug 1047286], added a second test + illustrating the role of "ns in callStack" in the ns's visibility + during deletion traces. * generic/tclBasic.c (Tcl_DeleteCommandFromToken): * generic/tclCmdMZ.c (TraceCommandProc): @@ -1060,32 +1059,32 @@ * tests/namespace.test (namespace-7.3-6): * tests/trace.test (trace-20.13-16): fix [Bugs 1355942/1355342]. -2005-11-18 Jeff Hobbs +2005-11-18 Jeff Hobbs - * generic/tclIO.c (TclFinalizeIOSubsystem): preserve statePtr - until we netrieve next statePtr from it. + * generic/tclIO.c (TclFinalizeIOSubsystem): preserve statePtr until we + netrieve next statePtr from it. -2005-11-18 Don Porter +2005-11-18 Don Porter - * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 - * tests/pkg.test: to be more forgiving of package version - mismatch errors in [package ifneeded] commands. This reduces the + * generic/tclPkg.c: Revised Bug 1162286 fix from 2005-11-08 to be + * tests/pkg.test: more forgiving of package version mismatch + errors in [package ifneeded] commands. This reduces the ***POTENTIAL INCOMPATIBILITY*** noted for that change. 2005-11-18 Andreas Kupries - * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Pat Thoyts' - patch for [SF Tcl Bug 1359094]. This moves the retrieval of the - next channel state to the end of the loop, as the called - closeproc may close other channels, i.e. modify the list we are - iterating, invalidating any pointer retrieved earlier. + * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Pat Thoyts' patch + for [Bug 1359094]. This moves the retrieval of the next channel state + to the end of the loop, as the called closeproc may close other + channels, i.e., modify the list we are iterating, invalidating any + pointer retrieved earlier. 2005-11-18 Donal K. Fellows * library/http/http.tcl (http::geturl): Improved syntactic validation of URLs, and better error messages in some cases. [Bug 1358369] -2005-11-16 Don Porter +2005-11-16 Don Porter * README: Bump version number to 8.4.12 * generic/tcl.h: @@ -1098,7 +1097,7 @@ * unix/configure: autoconf-2.13 * win/configure: -2005-11-15 Don Porter +2005-11-15 Don Porter * changes: Update changes for 8.4.12 release @@ -1107,24 +1106,24 @@ * tests/cmdAH.test: Backported the fix for [Bug 926016] because of * win/tclWinFile.c: a repeated bug report in 8.4 [Bug 1353840]. Windows [file mtime] will now return seconds from the Posix epoch - correctly (except for FAT32 file systems after a DST change - without a reboot - for which there is no help). A side effect is - that file times will appear different in Tcl from the way they do - in Windows Explorer or a 'dir' listing, because the Microsoft - tools get the DST state wrong in the listings. + correctly (except for FAT32 file systems after a DST change without a + reboot - for which there is no help). A side effect is that file times + will appear different in Tcl from the way they do in Windows Explorer + or a 'dir' listing, because the Microsoft tools get the DST state + wrong in the listings. 2005-11-09 Kevin B. Kenny * generic/tclTimer.c: Changed [after] so that it behaves correctly - * tests/timer.test: with negative arguments [Bug 1350293]. + * tests/timer.test: with negative arguments. [Bug 1350293] -2005-11-08 Jeff Hobbs +2005-11-08 Jeff Hobbs * unix/tclUnixFCmd.c (MAX_READDIR_UNLINK_THRESHOLD): reduce to 130 - based on errors seen on OS X 10.3 with lots of links in a dir. - [Bug 1034337 followup] + based on errors seen on OS X 10.3 with lots of links in a dir. [Bug + 1034337 followup] -2005-11-08 Don Porter +2005-11-08 Don Porter * tests/expr.test: Portable tests expr-46.13-18 [Bug 1341368] @@ -1132,7 +1131,7 @@ * tests/pkg.test: by Tcl_PkgRequire(Ex) so that the returned values will always agree with what is stored in the package database. This way repeated calls to Tcl_PkgRequire(Ex) have the same results. - Thanks to Hemang Lavana. [Bug 1162286]. + Thanks to Hemang Lavana. [Bug 1162286] ***POTENTIAL INCOMPATIBILITY***: Incompatible with those existing packages that are accustomed to the [package] command forgiving their bugs. @@ -1141,39 +1140,37 @@ 2005-11-08 Donal K. Fellows - * generic/tclCmdMZ.c (TclTraceVariableObjCmd, TraceVarProc): - Applied Miguel's fix for [Bug 1348775]. It is not quite as elegant - as the one applied to the HEAD, but it is easier to use it rather - than fully backporting. + * generic/tclCmdMZ.c (TclTraceVariableObjCmd, TraceVarProc): Applied + Miguel's fix for [Bug 1348775]. It is not quite as elegant as the one + applied to the HEAD, but it is easier to use it rather than fully + backporting. 2005-11-07 Miguel Sofer - * tests/trace.test (trace-13.2-4): added tests to detect leak, see [Bug - 1348775]. + * tests/trace.test (trace-13.2-4): added tests to detect leak, see + [Bug 1348775]. -2005-11-04 Don Porter +2005-11-04 Don Porter * unix/tcl.m4: Added code to enable [load] on LynxOS. Thanks to - heidibr@users.sf.net for the patch. [Bug 1163896]. + heidibr@users.sf.net for the patch. [Bug 1163896] * unix/configure: autoconf-2.13. -2005-11-04 Pat Thoyts +2005-11-04 Pat Thoyts - * win/tclWinPipe.c: Applied patch #1267871 by Matt Newman which + * win/tclWinPipe.c: Applied [Patch 1267871] by Matt Newman which * win/tclWinPort.h: provides extended error code support. * tests/exec.test: Wrote some tests for this feature. -2005-11-04 Kevin Kenny +2005-11-04 Kevin Kenny - * generic/tclGetDate.y: Added abbreviations for the Korean - timezone. + * generic/tclGetDate.y: Added abbreviations for the Korean timezone. * generic/tclDate.c: Regenerated. - * compat/strftime.c: Fixed a problem where the name of the - time zone was double-converted from system encoding to - UTF-8. Thanks to the anonymous submitter of [Bug 1317477] - for the report and the patch. + * compat/strftime.c: Fixed a problem where the name of the time zone + was double-converted from system encoding to UTF-8. Thanks to the + anonymous submitter of [Bug 1317477] for the report and the patch. 2005-11-04 Miguel Sofer @@ -1183,55 +1180,50 @@ * tests/trace.test: fix duplicate test numbers -2005-11-03 Don Porter +2005-11-03 Don Porter * generic/tclUnixInit.c (TclpSetInitialEncodings): Modified so that multiple calls can continue to atttempt to properly set the - system encoding. Needed for Tclkit to properly support non-default - encodings. Thanks to Yaroslav Schekin. [Bug 1201171]. + system encoding. Needed for Tclkit to properly support non-default + encodings. Thanks to Yaroslav Schekin. [Bug 1201171] -2005-11-03 Pat Thoyts +2005-11-03 Pat Thoyts - * win/tclWin32Dll.c: Backported Anton Kovalenko's patch #1256872 + * win/tclWin32Dll.c: Backported Anton Kovalenko's [Patch 1256872] * win/tclWinConsole.c: to give unicode console support on * win/tclWinInt.h: suitable systems (eg: NT/XP) -2005-11-01 Don Porter +2005-11-01 Don Porter * generic/tclCmdMZ.c (TclCheckExecutionTraces): Corrected mistaken assumption that all command traces are set at the script level. Report/fix from Jacques H. de Villiers. [Bug 1337941] - * tests/expr-old.test (expr-32.52): Use int(.) to restrict - result of left shift to the C long range. + * tests/expr-old.test (expr-32.52): Use int(.) to restrict result + of left shift to the C long range. 2005-10-29 Mo DeJong - * tests/expr.test: Fix problems in new round() - tests that lead to correct result only on 32 - bit long systems. [Bug 1341368] + * tests/expr.test: Fix problems in new round() tests that lead to + correct result only on 32 bit long systems. [Bug 1341368] 2005-10-29 Miguel Sofer - * generic/tclCmdMZ.c (TraceVarProc): [Bug 1337229], partial - fix. Insure that a second call with TCL_TRACE_DESTROYED does not - lead to a second call to Tcl_EventuallyFree(). It is still true - that that second call should not happen, so the bug is not - completely fixed. - * tests/trace.test (test-18.3-4): added tests for bugs #1337229 - and 1338280. + * generic/tclCmdMZ.c (TraceVarProc): [Bug 1337229], partial fix. + Ensure that a second call with TCL_TRACE_DESTROYED does not lead to a + second call to Tcl_EventuallyFree(). It is still true that that second + call should not happen, so the bug is not completely fixed. + * tests/trace.test (test-18.3-4): added tests for [Bugs 1337229 and + 1338280]. 2005-10-27 Mo DeJong - * generic/tclExecute.c (ExprRoundFunc): - Fix typo where number before rounding is - compared with smallest integer instead of - number after rounding. This fix does not - change the results of any tests. - * tests/expr.test: Add round() tests - for cases near the min and max int values. - * tests/util.test: Remove pointless - warning code about testobj command. + * generic/tclExecute.c (ExprRoundFunc): Fix typo where number before + rounding is compared with smallest integer instead of number after + rounding. This fix does not change the results of any tests. + * tests/expr.test: Add round() tests for cases near the min and max + int values. + * tests/util.test: Remove pointless warning code about testobj command 2005-10-23 Miguel Sofer @@ -1249,22 +1241,21 @@ * generic/tclVar.c: * mac/tclMacInit.c: * unix/tclUnixInit.c: - * win/tclWinInit.c: Insure that the core never calls TclPtrSetVar, - Tcl_SetVar2Ex, Tcl_ObjSetVar2 or Tcl_SetObjErrorCode with a 0-ref - new value. It is not possible to handle error returns correctly in - that case [Bug 1334947], one has the choice of leaking the object - in some cases, or else risk crashing in some others. + * win/tclWinInit.c: Ensure that the core never calls TclPtrSetVar, + Tcl_SetVar2Ex, Tcl_ObjSetVar2 or Tcl_SetObjErrorCode with a 0-ref new + value. It is not possible to handle error returns correctly in that + case [Bug 1334947], one has the choice of leaking the object in some + cases, or else risk crashing in some others. 2005-10-22 Miguel Sofer * generic/tclExecute.c (INST_CONCAT): disable the optimisation for - wide integers, [Bug 1251791]. + wide integers. [Bug 1251791] 2005-10-14 Zoran Vasiljevic - * generic/tclIO.c (Tcl_ClearChannelHandlers): removed - change dated 2005-10-04 below. Look into Bug# 1323992 - for detailed discussion. + * generic/tclIO.c (Tcl_ClearChannelHandlers): removed change dated + 2005-10-04 below. Look into [Bug 1323992] for detailed discussion. 2005-10-13 Donal K. Fellows @@ -1277,11 +1268,11 @@ ifdef TCL_THREADS changes done to de-activate pending event processing when channel is being closed/cutted. -2005-10-10 Jeff Hobbs +2005-10-10 Jeff Hobbs * generic/tclInt.h: ensure MODULE_SCOPE decl -2005-10-07 Jeff Hobbs +2005-10-07 Jeff Hobbs * unix/tclUnixFCmd.c (TraverseUnixTree): Adjust 2004-11-11 change to * tests/fCmd.test (fCmd-20.2): account for NFS special @@ -1289,37 +1280,36 @@ 2005-10-05 Andreas Kupries - * generic/tclPipe.c (TclCreatePipeline): Fixed [SF Tcl Bug - 1109294]. Applied the patch provided by David Gravereaux. + * generic/tclPipe.c (TclCreatePipeline): Fixed [Bug 1109294]. Applied + the patch provided by David Gravereaux. - * doc/CrtChannel.3: Fixed [SF Tcl Bug 1104682], by application of - David Welton's patch for it, and added a note about - wideSeekProc. + * doc/CrtChannel.3: Fixed [Bug 1104682], by application of David + Welton's patch for it, and added a note about wideSeekProc. -2005-10-05 Jeff Hobbs +2005-10-05 Jeff Hobbs * tests/env.test (env-6.1): * win/tclWinPort.h: define USE_PUTENV_FOR_UNSET 1 * generic/tclEnv.c (TclSetEnv, TclUnsetEnv): add USE_PUTENV_FOR_UNSET to existing USE_PUTENV define to account for - various systems that have putenv(), but can't unset env vars with - it. Note difference between Windows and Linux for actually - unsetting the env var (use of '='). - Correct the resizing of the environ array. We assume that we are - in full ownership, but that's not correct.[Bug 979640] + various systems that have putenv(), but can't unset env vars with it. + Note difference between Windows and Linux for actually unsetting the + env var (use of '='). + Correct the resizing of the environ array. We assume that we are in + full ownership, but that's not correct. [Bug 979640] -2005-10-04 Jeff Hobbs +2005-10-04 Jeff Hobbs * win/tclWinSerial.c (SerialSetOptionProc): free argv [Bug 1067708] - * tests/http.test: do not URI encode -._~ according - * library/http/http.tcl (init): to RFC3986. [Bug 1182373] (aho) + * tests/http.test: Do not URI encode -._~ according to + * library/http/http.tcl (init): RFC3986. [Bug 1182373] (aho) * generic/tclIOUtil.c (TclFSNormalizeAbsolutePath): make static * generic/tclEncoding.c (TclFindEncodings): make static * unix/tclLoadShl.c (TclpDlopen): use DYNAMIC_PATH on second - shl_load only. [Bug 1204237] + shl_load only. [Bug 1204237] 2005-10-04 Zoran Vasiljevic @@ -1330,16 +1320,16 @@ * generic/tclTimer.c (Tcl_DeleteTimerHandler): bail out early if passed NULL argument. -2005-09-30 Don Porter +2005-09-30 Don Porter * generic/tclMain.c: Separate encoding conversion of command line - arguments from list formatting. [Bug 1306162]. + arguments from list formatting. [Bug 1306162] 2005-09-27 Donal K. Fellows - * generic/tclBinary.c (FormatNumber): Factorize out copying of - double values to a helper to work around ugly broken compiler - problems. [Bug 1116542] + * generic/tclBinary.c (FormatNumber): Factorize out copying of double + values to a helper to work around ugly broken compiler problems. [Bug + 1116542] 2005-09-15 Miguel Sofer @@ -1347,25 +1337,24 @@ 2005-09-15 Donal K. Fellows - * unix/tcl.m4 (SC_TCL_EARLY_FLAGS): Added extra hack to allow Tcl - to transparently open large files on RHEL 3. [Bug 1287638] + * unix/tcl.m4 (SC_TCL_EARLY_FLAGS): Added extra hack to allow Tcl to + transparently open large files on RHEL 3. [Bug 1287638] * unix/configure: autoconf-2.13 -2005-09-07 Don Porter +2005-09-07 Don Porter * generic/tclUtf.c (Tcl_UniCharToUtf): Corrected handling of negative - * tests/utf.test (utf-1.5): Tcl_UniChar input value. Incorrect + * tests/utf.test (utf-1.5): Tcl_UniChar input value. Incorrect handling was producing byte sequences outside of Tcl's legal internal - encoding. [Bug 1283976]. + encoding. [Bug 1283976] -2005-08-29 Kevin Kenny +2005-08-29 Kevin Kenny - * generic/tclBasic.c (ExprMathFunc): Restored "round away from - * tests/expr.test (expr-46.*): zero" behaviour to the - "round" function. Added - test cases for the behavior, including the awkward case of a - number whose fractional part is 1/2-1/2ulp. [Bug 1275043] + * generic/tclBasic.c (ExprMathFunc): Restored "round away from zero" + * tests/expr.test (expr-46.*): behaviour to the "round" + function. Added test cases for the behavior, including the awkward + case of a number whose fractional part is 1/2-1/2ulp. [Bug 1275043] 2005-08-25 Donal K. Fellows @@ -1373,7 +1362,7 @@ unsafe crashes from happening when working with very large string representations. [Bug 1267380] -2005-08-17 Jeff Hobbs +2005-08-17 Jeff Hobbs * generic/tclFCmd.c (TclFileMakeDirsCmd): fix to race condition in file mkdir (backport from head 2005-06-13) [Bug 1217375] @@ -1387,22 +1376,21 @@ 2005-08-05 Donal K. Fellows - * unix/tclUnixInit.c (localeTable): Solaris uses a non-standard - name for the cp1251 charset. Thanks to Victor Wagner for reporting - this. [Bug 1252475] + * unix/tclUnixInit.c (localeTable): Solaris uses a non-standard name + for the cp1251 charset. Thanks to Victor Wagner for reporting this. + [Bug 1252475] -2005-08-05 Kevin Kenny +2005-08-05 Kevin Kenny * generic/tclExecute.c (TclExecuteByteCode): Fixed a corner case * tests/expr.test (expr-38.1): where applying abs to - MIN_INT failed to promote the result to a wide integer. - [Bug #1241572] + MIN_INT failed to promote the result to a wide integer. [Bug 1241572] -2005-08-04 Don Porter +2005-08-04 Don Porter * generic/tclObj.c: Simplified routines that manage the typeTable. -2005-08-03 Don Porter +2005-08-03 Don Porter * generic/tclCompExpr.c: Untangled some dependencies in the * generic/tclEvent.c: order of finalization routines. @@ -1413,25 +1401,25 @@ * unix/configure, unix/tcl.m4: revert 2005-07-28 change. - * unix/tclLoadDyld.c (TclpDlopen, TclpLoadMemory): workarounds - for bugs/changes in behaviour in Mac OS X 10.4 Tiger, sync - formatting changes from HEAD. + * unix/tclLoadDyld.c (TclpDlopen, TclpLoadMemory): workarounds for + bugs/changes in behaviour in Mac OS X 10.4 Tiger, sync formatting + changes from HEAD. 2005-07-29 Donal K. Fellows - * generic/tclCmdIL.c (InfoGlobalsCmd): Even in high-speed mode, - still have to take care with non-existant variables. [Bug 1247135] + * generic/tclCmdIL.c (InfoGlobalsCmd): Even in high-speed mode, still + have to take care with non-existant variables. [Bug 1247135] 2005-07-28 Mo DeJong - * win/README: Update link to msys_mingw8.zip. - Remove old Cygwin + Mingw info, people should - just build with the msys + mingw configuration. + * win/README: Update link to msys_mingw8.zip. Remove old Cygwin + + Mingw info, people should just build with the msys + mingw + configuration. -2005-07-28 Jeff Hobbs +2005-07-28 Jeff Hobbs - * unix/configure, unix/tcl.m4: defined TCL_LOAD_FROM_MEMORY on - Darwin only for SHARED_BUILD + * unix/configure, unix/tcl.m4: defined TCL_LOAD_FROM_MEMORY on Darwin + only for SHARED_BUILD 2005-07-28 Donal K. Fellows @@ -1445,70 +1433,66 @@ 2005-07-26 Mo DeJong * unix/configure: Regen. - * unix/configure.in: Check for a $prefix/share - directory and add it the the package if found. - This will check for Tcl packages in /usr/local/share - when Tcl is configured with the default dist install. - [patch 1231015] + * unix/configure.in: Check for a $prefix/share directory and add it + the the package if found. This will check for Tcl packages in + /usr/local/share when Tcl is configured with the default dist install. + [Patch 1231015] -2005-07-26 Don Porter +2005-07-26 Don Porter * doc/tclvars.n: Improved $errorCode documentation. [RFE 776921] * generic/tclBasic.c (Tcl_CallWhenDeleted): Converted to use per-thread counter, rather than a process global one that required - mutex protection. [RFE 1077194] + mutex protection. [RFE 1077194] * generic/tclNamesp.c (TclTeardownNamespace): Re-ordering so that * tests/trace.test (trace-34.4): command delete traces fire - while the command still exists. [Bug 1047286] + while the command still exists. [Bug 1047286] 2005-07-24 Mo DeJong * unix/tcl.m4 (SC_PROG_TCLSH, SC_BUILD_TCLSH): * win/tcl.m4 (SC_PROG_TCLSH, SC_BUILD_TCLSH): - Split confused search for tclsh on PATH and - build and install locations into two macros. - SC_PROG_TCLSH searches just the PATH. - SC_BUILD_TCLSH determines the name of the tclsh - executable in the Tcl build directory. - [Tcl bug 1160114] - [Tcl patch 1244153] + Split confused search for tclsh on PATH and build and install + locations into two macros. SC_PROG_TCLSH searches just the PATH. + SC_BUILD_TCLSH determines the name of the tclsh executable in the Tcl + build directory. [Bug 1160114], [Patch 1244153] -2005-07-22 Don Porter +2005-07-22 Don Porter * library/auto.tcl: Updates to the Tcl script library to make * library/history.tcl: use of Tcl 8.4 feautures. Thanks to * library/init.tcl: Patrick Fradin for prompting on this. - * library/package.tcl: [Patch 1237755]. + * library/package.tcl: [Patch 1237755] * library/safe.tcl: * library/word.tcl: -2005-07-07 Jeff Hobbs +2005-07-07 Jeff Hobbs * unix/tcl.m4, unix/configure: Backported [Bug 1095909], removing * unix/tclUnixPort.h: any use of readdir_r as it is not * unix/tclUnixThrd.c: necessary and just confuses things. -2005-07-05 Don Porter +2005-07-05 Don Porter * generic/tclCmdAH.c: New "encoding" Tcl_ObjType (not registered) * generic/tclEncoding.c: that permits longer lifetimes of the * generic/tclInt.h: Tcl_Encoding values kept as intreps of Tcl_Obj's. Reduces the need for repeated reading of encoding - definition files from the filesystem. [Bug 1077262] + definition files from the filesystem. [Bug 1077262] * generic/tclNamesp.c: Allow for [namespace import] of a command * tests/namespace.test: over a previous [namespace import] of itself - without throwing an error. [RFE 1230597] + without throwing an error. [RFE 1230597] 2005-07-01 Zoran Vasiljevic - * unix/tclUnixNotfy.c: protect against spurious wake-ups while - waiting on the condition variable when tearing down the notifier - thread [Bug# 1222872]. + * unix/tclUnixNotfy.c: protect against spurious wake-ups while waiting + on the condition variable when tearing down the notifier thread. [Bug + 1222872] -2005-06-27 Don Porter +2005-06-27 Don Porter *** 8.4.11 TAGGED FOR RELEASE *** @@ -1520,7 +1504,7 @@ [source]-ing. The burden of fixing these exposed bugs will not be forced on package/extension/application authors until Tcl 8.5. -2005-06-24 Kevin Kenny +2005-06-24 Kevin Kenny * generic/tclEvent.c (Tcl_Finalize): * generic/tclInt.h: @@ -1532,7 +1516,7 @@ are created in Tcl_Finalize conditional on TCL_MEM_DEBUG to avoid spurious panics in the "stable" release. -2005-06-24 Don Porter +2005-06-24 Don Porter * library/auto.tcl: Make file safe to re-[source] without destroying registered auto_mkindex_parser hooks. @@ -1542,12 +1526,12 @@ * tools/tcltk-man2html.tcl: fixed useversion glob pattern to accept multi-digit patchlevels. -2005-06-23 Kevin Kenny +2005-06-23 Kevin Kenny * win/tclWinChan.c: More rewriting of __asm__ blocks that * win/tclWinFCmd.c: implement SEH in GCC, because mingw's gcc 3.4.2 is not as forgiving of violations committed by - the old code and caused panics. [Bug #1225957] + the old code and caused panics. [Bug 1225957] 2005-06-23 Daniel Steffen @@ -1563,46 +1547,44 @@ * unix/tclUnixPipe.c (TclFinalizePipes): management until after * win/tclWinPipe.c (TclFinalizePipes): all channels have been closed, in order to avoid a situation where the Windows - PipeCloseProc2 would re-establish the exit handler after - exit handlers had already run, corrupting the heap. - [Bug #1225727] - Corrected a read of uninitialized memory in PipeCloseProc2, - which (at least on certain configurations) caused a great - number of tests to either fail or hang [Bug #1225044]. + PipeCloseProc2 would re-establish the exit handler after exit + handlers had already run, corrupting the heap. [Bug 1225727] + Corrected a read of uninitialized memory in PipeCloseProc2, which (at + least on certain configurations) caused a great number of tests to + either fail or hang. [Bug 1225044] 2005-06-22 Andreas Kupries - * generic/tclInt.h: Followup to change made on 2005-06-18 by - Daniel Steffen. There are compilers (*) who error out on the - redefinition of WORDS_BIGENDIAN. We have to undef the previous - definition (on the command line) first to make this - acceptable. (*): AIX native. + * generic/tclInt.h: Followup to change made on 2005-06-18 by Daniel + Steffen. There are compilers (*) who error out on the redefinition of + WORDS_BIGENDIAN. We have to undef the previous definition (on the + command line) first to make this acceptable. (*): AIX native. -2005-06-22 Don Porter +2005-06-22 Don Porter - * win/tclWinFile.c: Potential buffer overflow. [Bug 1225571] + * win/tclWinFile.c: Potential buffer overflow. [Bug 1225571] Thanks to Pat Thoyts for discovery and fix. * tests/safe.test: Backport performance improvement from reduced $::auto_path. -2005-06-21 Pat Thoyts +2005-06-21 Pat Thoyts * tests/winDde.test: Added some waits to the dde server script to let event processing run after we create the dde server and before we exit the server process. This avoids 'server did not respond' errors. -2005-06-21 Kevin Kenny +2005-06-21 Kevin Kenny * generic/tclFileName.c: Corrected a problem where a directory name - containing a colon can crash the process on Windows [Bug 1194458]. - * tests/fileName.test: Added test for [file split] and - [file join] with a name containing a colon. + containing a colon can crash the process on Windows [Bug 1194458] + * tests/fileName.test: Added test for [file split] and [file join] + with a name containing a colon. * win/tclWinPipe.c: Reverted davygrvy's changes of 2005-04-19; - they cause multiple failures in io.test. [Bug 1225044, still open]. + they cause multiple failures in io.test. [Bug 1225044, still open] -2005-06-21 Don Porter +2005-06-21 Don Porter * generic/tclBasic.c: Made the walk of the active trace list aware * generic/tclCmdMZ.c: of the direction of trace scanning, so the @@ -1613,24 +1595,25 @@ * tests/trace.test (trace-34.1): list of active traces to cleanup references to traces being deleted. [Bug 1201035] -2005-06-20 Don Porter +2005-06-20 Don Porter - * doc/FileSystem.3: added missing Tcl_GlobTypeData documentation - [Bug 935853] + * doc/FileSystem.3: added missing Tcl_GlobTypeData documentation [Bug + 935853] 2005-06-18 Daniel Steffen - * generic/tclInt.h: ensure WORDS_BIGENDIAN is defined correctly with fat - compiles on Darwin (i.e. ppc and i386 at the same time), the configure - AC_C_BIGENDIAN check is not sufficient in this case because a single run - of the compiler builds for two architectures with different endianness. + * generic/tclInt.h: ensure WORDS_BIGENDIAN is defined correctly with + fat compiles on Darwin (i.e. ppc and i386 at the same time), the + configure AC_C_BIGENDIAN check is not sufficient in this case because + a single run of the compiler builds for two architectures with + different endianness. * unix/tcl.m4 (Darwin): add -headerpad_max_install_names to LDFLAGS to ensure we can always relocate binaries with install_name_tool. * unix/configure: autoconf-2.13 -2005-06-18 Don Porter +2005-06-18 Don Porter * changes: Update changes for 8.4.11 release @@ -1657,8 +1640,8 @@ 2005-06-06 Kevin B. Kenny - * win/tclWin32Dll.c: Corrected another buglet in the assembly - code for stack probing on Win32/gcc. [Bug #1213678] + * win/tclWin32Dll.c: Corrected another buglet in the assembly code for + stack probing on Win32/gcc. [Bug 1213678] 2005-06-03 Daniel Steffen @@ -1669,7 +1652,7 @@ * macosx/Makefile: fixed 'embedded' target. -2005-06-02 Jeff Hobbs +2005-06-02 Jeff Hobbs * unix/Makefile.in (html): add BUILD_HTML_FLAGS optional var * tools/tcltk-man2html.tcl: add a --useversion to prevent @@ -1681,14 +1664,14 @@ * unix/tclUnixNotfy.c: the notifier thread is now created as joinable thread and it is properly joined in Tcl_FinalizeNotifier. - This is an attempt to fix the Tcl Bug #1082283. + This is an attempt to fix [Bug 1082283] -2005-05-29 Jeff Hobbs +2005-05-29 Jeff Hobbs * win/tclWinThrd.c (TclpFinalizeThreadData): move tlsKey defn to top of file and clarify name (was 'key'). [Bug 1204064] -2005-05-27 Jeff Hobbs +2005-05-27 Jeff Hobbs * README: Bumped patchlevel to 8.4.10 * generic/tcl.h: @@ -1704,7 +1687,7 @@ stub library to Versions/8.x subdir instead of Versions/Current. * unix/configure: autoconf-2.13 -2005-05-25 Jeff Hobbs +2005-05-25 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_TimeObjCmd): add necessary cast @@ -1744,14 +1727,14 @@ 2005-05-20 Zoran Vasiljevic * generic/tclParseExpr.c: removed unreferenced stack variable "errMsg" - probably included by fixing the Bug #1201589 (see below). + probably included by fixing [Bug 1201589] (see below). -2005-05-20 Don Porter +2005-05-20 Don Porter * generic/tclParseExpr.c: Corrected parser to recognize all - boolean literals accepted by Tcl_GetBoolean, including prefixes - like "y" and "f", and to allow "eq" and "ne" as function names - in the proper context. [Bug 1201589]. + boolean literals accepted by Tcl_GetBoolean, including prefixes like + "y" and "f", and to allow "eq" and "ne" as function names in the + proper context. [Bug 1201589] 2005-05-19 Daniel Steffen @@ -1778,8 +1761,8 @@ of TkAqua upon loading having to finalize the exsting notifier and replace it with its custom version). [Patch 1202052] - * tests/unixNotfy.test: don't run unthreaded tests on Darwin - since notifier may be using threads even in unthreaded core. + * tests/unixNotfy.test: don't run unthreaded tests on Darwin since + notifier may be using threads even in unthreaded core. * unix/tclUnixPort.h: * unix/tcl.m4 (Darwin): test for thread-unsafe realpath durning @@ -1791,13 +1774,13 @@ * unix/configure: autoconf-2.13 -2005-05-10 Jeff Hobbs +2005-05-10 Jeff Hobbs * tests/string.test: string-10.[21-30] * generic/tclCmdMZ.c (Tcl_StringObjCmd): add extra checks to prevent possible UMR in unichar cmp function for string map. -2005-05-06 Jeff Hobbs +2005-05-06 Jeff Hobbs * unix/tcl.m4, unix/configure: correct Solaris 10 (5.10) check and add support for x86_64 Solaris cc builds. @@ -1806,10 +1789,10 @@ * doc/FileSystem.3: Backport of doc fix. [Bug 1172401] -2005-04-27 Don Porter +2005-04-27 Don Porter * library/init.tcl: Corrected flaw in interactive command - * tests/main.test: auto-completion. [Bug 1191409]. + * tests/main.test: auto-completion. [Bug 1191409] * tests/unixInit.test (7.1): Alternative fix for the 2005-04-22 commit. @@ -1819,94 +1802,90 @@ * compat/string.h: fixed memchr() protoype for __APPLE__ so that we build on Mac OS X 10.1 again. - * generic/tclNotify.c (TclFinalizeNotifier): fixed notifier not - being finalized in unthreaded core (was testing for notifier - initialization in current thread by checking thread id != 0 but - thread id is always 0 in untreaded core). + * generic/tclNotify.c (TclFinalizeNotifier): fixed notifier not being + finalized in unthreaded core (was testing for notifier initialization + in current thread by checking thread id != 0 but thread id is always 0 + in untreaded core). * unix/tclUnixNotfy.c (Tcl_WaitForEvent): sync with HEAD: only declare and use timeout var in unthreaded core. - * unix/Makefile.in: added @PLAT_SRCS@ to SRCS and split out NOTIFY_SRCS - from UNIX_SRCS for parity with UNIX_OBJS & NOTIFY_OBJS. + * unix/Makefile.in: added @PLAT_SRCS@ to SRCS and split out + NOTIFY_SRCS from UNIX_SRCS for parity with UNIX_OBJS & NOTIFY_OBJS. - * unix/configure.in: only run check for broken strstr implementation if - AC_REPLACE_FUNCS(strstr) hasn't already determined that strstr is - unavailable, otherwise compat/strstr.o will be used twice (resulting in - duplicate symbol link errors on Mac OS X 10.1) + * unix/configure.in: only run check for broken strstr implementation + if AC_REPLACE_FUNCS(strstr) hasn't already determined that strstr is + unavailable, otherwise compat/strstr.o will be used twice (resulting + in duplicate symbol link errors on Mac OS X 10.1) * unix/tcl.m4 (Darwin): added configure checks for recently added - linker flags -single_module and -search_paths_first to allow - building with older tools (and on Mac OS X 10.1), use - -single_module in SHLIB_LD and not just T{CL,K}_SHLIB_LD_EXTRAS, - added unexporting from Tk of symbols from libtclstub to avoid - duplicate symbol warnings, added PLAT_SRCS definition for Mac OS X. + linker flags -single_module and -search_paths_first to allow building + with older tools (and on Mac OS X 10.1), use -single_module in + SHLIB_LD and not just T{CL,K}_SHLIB_LD_EXTRAS, added unexporting from + Tk of symbols from libtclstub to avoid duplicate symbol warnings, + added PLAT_SRCS definition for Mac OS X. (SC_MISSING_POSIX_HEADERS): added caching of dirent.h check. (SC_TCL_64BIT_FLAGS): fixed 'checking for off64_t' message output. * unix/configure: autoconf-2.13 -2005-04-22 Don Porter +2005-04-22 Don Porter * generic/tclCmdMZ.c: Corrected intrep-dependence of * tests/string.test: [string is boolean] [Bug 1187123] 2005-04-22 Daniel Steffen - * tests/unixInit.test (7.1): fixed failure when running tests - with -tmpdir arg not set to working dir. + * tests/unixInit.test (7.1): fixed failure when running tests with + -tmpdir arg not set to working dir. -2005-04-20 Don Porter +2005-04-20 Don Porter * generic/tclGet.c (Tcl_GetInt): Corrected error that did not * generic/tclObj.c (Tcl_GetIntFromObj): permit 0x80000000 to be - recognized as an integer on TCL_WIDE_INT_IS_LONG systems [Bug 1090869]. + recognized as an integer on TCL_WIDE_INT_IS_LONG systems [Bug 1090869] -2005-04-19 Jeff Hobbs +2005-04-19 Jeff Hobbs * tests/winPipe.test (winpipe-6.2): remove -blocking 1 as this one can truly block. 2005-04-19 David Gravereaux - * win/tclWinPipe.c: The pipe channel driver now respects - the -blocking option when closing. The windows pipe driver - now has the same behavior as the UNIX side. This change is - to avoid a hung shell when exiting due to open pipes that - refuse to close in a graceful manner. - * doc/open.n: Added a note about -blocking 0 and lack of - exit status as it had never been documented. [Bug 947693] + * win/tclWinPipe.c: The pipe channel driver now respects the -blocking + option when closing. The windows pipe driver now has the same behavior + as the UNIX side. This change is to avoid a hung shell when exiting + due to open pipes that refuse to close in a graceful manner. + * doc/open.n: Added a note about -blocking 0 and lack of exit status + as it had never been documented. [Bug 947693] ***POTENTIAL INCOMPATIBILITY*** - Scripts that use async pipes on windows, must (like the - UNIX side) set -blocking to 1 before calling [close] to - receive the exit status. + Scripts that use async pipes on windows, must (like the UNIX side) set + -blocking to 1 before calling [close] to receive the exit status. - * tests/winPipe.test (winpipe-6.1/2): added 'fconfigure $f - -blocking 1' so the exit status can be acquired. + * tests/winPipe.test (winpipe-6.1/2): added 'fconfigure $f -blocking + 1' so the exit status can be acquired. 2005-04-13 David Gravereaux * generic/tclIO.c (Tcl_SetChannelBufferSize): Lowest size limit - * tests/io.test: changed from ten bytes to one byte. Need - * tests/iogt.test: for this change was proven by - Ross Cartlidge where [read stdin 1] was grabbing - 10 bytes followed by starting a child process that was intended to - continue reading from stdin. Even with -buffersize set to one, - nine chars were getting lost by the buffersize over reading for - the native read() caused by [read]. + * tests/io.test: changed from ten bytes to one byte. Need for + * tests/iogt.test: this change was proven by Ross Cartlidge + where [read stdin 1] was grabbing 10 bytes followed + by starting a child process that was intended to continue reading from + stdin. Even with -buffersize set to one, nine chars were getting lost + by the buffersize over reading for the native read() caused by [read]. 2005-04-12 Kevin B. Kenny - * compat/strstr.c: Added default definition of NULL to - accommodate building on systems with badly broken headers. - [Bug #1175161] + * compat/strstr.c: Added default definition of NULL to accommodate + building on systems with badly broken headers. [Bug 1175161] 2005-04-09 Daniel Steffen - * macosx/README: updated requirements for OS & developer tool - versions + other small fixes/cleanup. + * macosx/README: updated requirements for OS & developer tool versions + + other small fixes/cleanup. * unix/tcl.m4 (Darwin): added -single_module linker flag to TCL_SHLIB_LD_EXTRAS and TK_SHLIB_LD_EXTRAS. @@ -1914,66 +1893,65 @@ 2005-04-05 Zoran Vasiljevic - Set of changes correcting huge memory waste (not a leak) - when a thread exits. This has been introduced in 8.4.7 - within an attempt to correctly cleanup after ourselves when - Tcl library is being unloaded with the Tcl_Finalize() call. + Set of changes correcting huge memory waste (not a leak) when a thread + exits. This has been introduced in 8.4.7 within an attempt to + correctly cleanup after ourselves when Tcl library is being unloaded + with the Tcl_Finalize() call. - This fixes the Tcl Bug #1178445. + This fixes the [Bug 1178445]. - * generic/tclInt.h: added prototypes for TclpFreeAllocCache() - and TclFreeAllocCache() + * generic/tclInt.h: added prototypes for TclpFreeAllocCache() and + TclFreeAllocCache() - * generic/tclThreadAlloc.c: modified TclFinalizeThreadAlloc() - to explicitly call TclpFreeAllocCache with the NULL-ptr as - argument signalling cleanup of private tsd key used only by - the threading allocator. + * generic/tclThreadAlloc.c: modified TclFinalizeThreadAlloc() to + explicitly call TclpFreeAllocCache with the NULL-ptr as argument + signalling cleanup of private tsd key used only by the threading + allocator. - * unix/tclUnixThrd.c: fixed TclpFreeAllocCache() to recognize - when being called with NULL argument. This is a signal for it - to clean up the tsd key associated with the threading allocator. + * unix/tclUnixThrd.c: fixed TclpFreeAllocCache() to recognize when + being called with NULL argument. This is a signal for it to clean up + the tsd key associated with the threading allocator. * win/tclWinThrd.c: renamed TclWinFreeAllocCache to TclpFreeAllocCache - and fixed to recognize when being called with NULL argument. - This is a signal for it to clean up the tsd key associated with the - threading allocator. + and fixed to recognize when being called with NULL argument. This is a + signal for it to clean up the tsd key associated with the threading + allocator. -2005-04-05 Don Porter +2005-04-05 Don Porter * generic/tclExecute.c (ExprSrandFunc): Replaced incursions into the - * generic/tclUtil.c (TclGetIntForIndex): intreps of numeric types - with simpler calls of Tcl_GetIntFromObj and Tcl_GetLongFromObj, - now that those routines are better behaved wrt shimmering. - [Patch 1177129] + * generic/tclUtil.c (TclGetIntForIndex): intreps of numeric types with + simpler calls of Tcl_GetIntFromObj and Tcl_GetLongFromObj, now that + those routines are better behaved wrt shimmering. [Patch 1177129] -2005-03-29 Jeff Hobbs +2005-03-29 Jeff Hobbs * win/tcl.m4, win/configure: do not require cygpath in macros to allow msys alone as an alternative. * win/tclWinTime.c (TclpGetDate): use time_t for 'time' [Bug 1163422] -2005-03-18 Don Porter +2005-03-18 Don Porter - * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks - for immediate operand usage to permit leading space and sign - characters. Restores more efficient bytecode for [incr x -1] - that got lost in the CONST string reforms of Tcl 8.4. [Bug 1165671] + * generic/tclCompCmds.c (TclCompileIncrCmd): Corrected checks for + immediate operand usage to permit leading space and sign characters. + Restores more efficient bytecode for [incr x -1] that got lost in the + CONST string reforms of Tcl 8.4. [Bug 1165671] * generic/tclBasic.c (Tcl_EvalEx,TclEvalTokensStandard): * generic/tclCmdMZ.c (Tcl_SubstObj): * tests/basic.test (basic-46.4): Restored recursion limit * tests/parse.test (parse-19.*): testing in nested command - substitutions within direct script evaluation (Tcl_EvalEx) - that got lost in the parser reforms of Tcl 8.1. Added tests for - correct behavior. [Bug 1115904] + substitutions within direct script evaluation (Tcl_EvalEx) that got + lost in the parser reforms of Tcl 8.1. Added tests for correct + behavior. [Bug 1115904] 2005-03-15 Vince Darley * generic/tclFileName.c: * win/tclWinFile.c: - * tests/winFCMd.test: fix to 'file pathtype' and 'file norm' - failures on reserved filenames like 'COM1:', etc. + * tests/winFCMd.test: fix to 'file pathtype' and 'file norm' failures + on reserved filenames like 'COM1:', etc. 2005-03-15 Kevin B. Kenny @@ -1983,31 +1961,31 @@ * generic/tclInt.decls: * unix/tclUnixTime.c: * win/tclWinTime.c: Replaced 'unsigned long' variable holding - times with 'Tcl_WideInt', to cope with systems on which a time_t - is wider than a long (Win64) [Bug 1163422] + times with 'Tcl_WideInt', to cope with systems on which a time_t is + wider than a long (Win64) [Bug 1163422] * generic/tclIntDecls.h: Regen -2005-03-15 Pat Thoyts +2005-03-15 Pat Thoyts * unix/tcl.m4: Make it work on OpenBSD again. Imported patch from the OpenBSD ports tree. -2005-03-10 Don Porter +2005-03-10 Don Porter * generic/tclCmdMZ.c (TclCheckInterpTraces): Corrected mistaken - cast of ClientData to (TraceCommandInfo *) when not warranted. - Thanks to Yuri Victorovich for the report. [Bug 1153871] + cast of ClientData to (TraceCommandInfo *) when not warranted. Thanks + to Yuri Victorovich for the report. [Bug 1153871] -2005-03-08 Jeff Hobbs +2005-03-08 Jeff Hobbs * win/makefile.vc: clarify necessary defined vars that can come from MSVC or the Platform SDK. -2005-02-24 Don Porter +2005-02-24 Don Porter * library/tcltest/tcltest.tcl: Better use of [glob -types] to avoid * tests/tcltest.test: failed attempts to [source] a directory, and - similar matters. Thanks to "mpettigr". [Bug 1119798] + similar matters. Thanks to "mpettigr". [Bug 1119798] * library/tcltest/pkgIndex.tcl: Bump to tcltest 2.2.8 @@ -2015,17 +1993,17 @@ * doc/CrtChannel.3 (THREADACTIONPROC): Formatting fix. [Bug 1149605] -2005-02-17 Jeff Hobbs +2005-02-17 Jeff Hobbs * win/tclWinFCmd.c (TraverseWinTree): use wcslen on wchar, not Tcl_UniCharLen. 2005-02-16 Miguel Sofer - * doc/variable.n: fix for [Bug 1124160], variables are detected - by [info vars] but not by [info locals]. + * doc/variable.n: fix for [Bug 1124160], variables are detected by + [info vars] but not by [info locals]. -2005-02-10 Jeff Hobbs +2005-02-10 Jeff Hobbs * unix/Makefile.in: remove SHLIB_LD_FLAGS (only for AIX, inlined * unix/tcl.m4: into SHLIB_LD). Combine AIX-* and AIX-5 @@ -2035,26 +2013,26 @@ 2005-02-10 Miguel Sofer * generic/tclBasic.c (Tcl_EvalObjEx): - * tests/basic.test (basic-26.2): preserve the arguments passed to - TEOV in the pure-list branch, in case the list shimmers away. Fix - for [Bug 1119369], reported by Peter MacDonald. + * tests/basic.test (basic-26.2): preserve the arguments passed to TEOV + in the pure-list branch, in case the list shimmers away. Fix for [Bug + 1119369], reported by Peter MacDonald. 2005-02-10 Donal K. Fellows * doc/binary.n: Made the documentation of sign bit masking and [binary scan] consistent. [Bug 1117017] -2005-02-01 Don Porter +2005-02-01 Don Porter * generic/tclExecute.c (TclCompEvalObj): Removed stray statement left behind in prior code reorganization. -2005-01-28 Jeff Hobbs +2005-01-28 Jeff Hobbs * unix/configure, unix/tcl.m4: add solaris 64-bit gcc build support. [Bug 1021871] -2005-01-27 Jeff Hobbs +2005-01-27 Jeff Hobbs * generic/tclBasic.c (Tcl_ExprBoolean, Tcl_ExprDouble) (Tcl_ExprLong): Fix to recognize Tcl_WideInt type. [Bug 1109484] @@ -2082,39 +2060,37 @@ * win/tclWinSock.c: * mac/tclMacChan.c: -2005-01-25 Don Porter +2005-01-25 Don Porter * library/auto.tcl: Updated [auto_reset] to clear auto-loaded procs in namespaces other than :: [Bug 1101670]. 2005-01-25 Daniel Steffen - * unix/tcl.m4 (Darwin): fixed bug with static build linking to - dynamic library in /usr/lib etc instead of linking to static library - earlier in search path. [Tcl Bug 956908] + * unix/tcl.m4 (Darwin): fixed bug with static build linking to dynamic + library in /usr/lib etc instead of linking to static library earlier + in search path. [Bug 956908] Removed obsolete references to Rhapsody. * unix/configure: autoconf-2.13 2005-01-19 Mo DeJong - * win/tclWinChan.c (FileCloseProc): Invoke - TclpCutFileChannel() to remove a FileInfo from - the thread local list before deallocating it. - This should have been done via an earlier - call to Tcl_CutChannel, but I was running into - a crash in the next call to Tcl_CutChannel - during the IO finalization stage. + * win/tclWinChan.c (FileCloseProc): Invoke TclpCutFileChannel() to + remove a FileInfo from the thread local list before deallocating it. + This should have been done via an earlier call to Tcl_CutChannel, but + I was running into a crash in the next call to Tcl_CutChannel during + the IO finalization stage. 2005-01-17 Vince Darley - * tests/winFCmd.test: made test independent of current drive. - [Bug 1066528] + * tests/winFCmd.test: made test independent of current drive. [Bug + 1066528] 2005-01-10 Donal K. Fellows - * unix/tclUnixFCmd.c (CopyFile): Convert u_int to unsigned - to make clashes with types in standard C headers less of a - problem. [Bug 1098829] + * unix/tclUnixFCmd.c (CopyFile): Convert u_int to unsigned to make + clashes with types in standard C headers less of a problem. [Bug + 1098829] 2005-01-06 Donal K. Fellows @@ -2130,7 +2106,7 @@ * doc/lsearch.n: Convert to other form of emacs mode control comment to prevent problems with old versions of man. [Bug 1085127] -2004-12-29 Jeff Hobbs +2004-12-29 Jeff Hobbs * win/tcl.m4, win/configure: update MSVC CFLAGS_OPT to -O2, remove -Gs (included in -O2) and -GD (outdated). Use "link -lib" instead @@ -2139,38 +2115,37 @@ 2004-12-13 Kevin B. Kenny - * doc/clock.n: Clarify that the [clock scan] command does not - accept the full range of ISO8601 point-in-time formats - [Bug 1075433]. + * doc/clock.n: Clarify that the [clock scan] command does not accept + the full range of ISO8601 point-in-time formats. [Bug 1075433] 2004-12-09 Donal K. Fellows * doc/Async.3: Reword for better grammar, better nroff and get the flag name right. (Reported by David Welton.) -2004-12-06 Jeff Hobbs +2004-12-06 Jeff Hobbs *** 8.4.9 TAGGED FOR RELEASE *** - * unix/tclUnixNotfy.c (NotifierThreadProc): init numFdBits - [Bug 1079286] + * unix/tclUnixNotfy.c (NotifierThreadProc): init numFdBits [Bug + 1079286] -2004-12-02 Jeff Hobbs +2004-12-02 Jeff Hobbs * changes: updated for 8.4.9 release 2004-12-02 Vince Darley * generic/tclIOUtil.c: fix and new tests for [Bug 1074671] to - * tests/fileSystem.test: ensure tilde paths are not returned - specially by 'glob'. + * tests/fileSystem.test: ensure tilde paths are not returned specially + by 'glob'. -2004-12-01 Don Porter +2004-12-01 Don Porter * library/auto.tcl (tcl_findLibrary): Disabled use of [file normalize] - that caused trouble with freewrap. [Bug 1072136]. + that caused trouble with freewrap. [Bug 1072136] -2004-11-26 Don Porter +2004-11-26 Don Porter * tests/reg.test (reg-32.*): Added missing testregexp constraints. @@ -2185,21 +2160,21 @@ 2004-11-25 Zoran Vasiljevic * doc/Notify.3: - * doc/Thread.3: Added doc fixes and hints from Tcl Bug #1068077. + * doc/Thread.3: Added doc fixes and hints from [Bug 1068077]. 2004-11-25 Reinhard Max * tests/tcltest.test: The order in which [glob] returns the file names * tests/fCmd.test: is undefined, so tests should not depend on it. -2004-11-24 Don Porter +2004-11-24 Don Porter * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected failure to determine the number of arguments for readdir_r on SunOS systems. [Bug 1071701] * unix/configure: autoconf-2.13 -2004-11-24 Jeff Hobbs +2004-11-24 Jeff Hobbs * README: Bumped patchlevel to 8.4.9 * generic/tcl.h: @@ -2209,15 +2184,14 @@ 2004-11-24 Kevin B. Kenny - * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected bad check for - 3-argument readdir_r [Bug 1001325]. + * unix/tcl.m4 (SC_ENABLE_THREADS): Corrected bad check for 3-argument + readdir_r(). [Bug 1001325] * unix/configure: Regenerated. - * unix/tclUnixNotfy.c: Corrected all uses of 'select' to - manage their masks using the FD_CLR, FD_ISSET, FD_SET, and - FD_ZERO macros rather than bit-whacking that failed under - Solaris-Sparc-64. [Bug 1071807] + * unix/tclUnixNotfy.c: Corrected all uses of 'select' to manage their + masks using the FD_CLR, FD_ISSET, FD_SET, and FD_ZERO macros rather + than bit-whacking that failed under Solaris-Sparc-64. [Bug 1071807] -2004-11-23 Don Porter +2004-11-23 Don Porter * generic/tclCmdIL.c (InfoVarsCmd): Corrected segfault in new * tests/info.test (info-19.6): trivial matching branch [Bug 1072654] @@ -2225,26 +2199,23 @@ 2004-11-23 Vince Darley * generic/tclPathObj.c: fix and new test for [Bug 1043129] in - * tests/fileSystem.test: the treatment of backslashes in file - join on Windows. + * tests/fileSystem.test: the treatment of backslashes in file join on + Windows. 2004-11-22 Mo DeJong * unix/configure: Regen. - * unix/tcl.m4 (SC_TCL_64BIT_FLAGS): Define HAVE_TYPE_OFF64_T - only when off64_t, open64(), and lseek64() are defined. - IRIX 5.3 is known to not include an open64 function. - [Bug 1030465] + * unix/tcl.m4 (SC_TCL_64BIT_FLAGS): Define HAVE_TYPE_OFF64_T only when + off64_t, open64(), and lseek64() are defined. IRIX 5.3 is known to not + include an open64 function. [Bug 1030465] 2004-11-22 Mo DeJong * unix/configure: Regen. - * unix/tcl.m4 (SC_ENABLE_THREADS): Check for a 2 - argument version of readdir_r that is known to - exists under IRIX 5.3. - * unix/tclUnixThrd.c (TclpReaddir): Use either - 2 arg or 3 arg version of readdir_r. - [Bug 1001325] + * unix/tcl.m4 (SC_ENABLE_THREADS): Check for a 2 argument version of + readdir_r that is known to exists under IRIX 5.3. + * unix/tclUnixThrd.c (TclpReaddir): Use either 2 arg or 3 arg version + of readdir_r. [Bug 1001325] 2004-11-19 Reinhard Max @@ -2256,8 +2227,8 @@ * macosx/Makefile: * unix/configure.in: - * unix/tclUnixInit.c (MacOSXGetLibraryPath): changed detection - of tcl framework build when determining tclLibPath from overloaded + * unix/tclUnixInit.c (MacOSXGetLibraryPath): changed detection of tcl + framework build when determining tclLibPath from overloaded TCL_LIBRARY to configuration define TCL_FRAMEWORK. [Bug 1068088] * unix/configure: autoconf-2.13 @@ -2265,21 +2236,21 @@ * tests/unixInit.test (7.1): fixed failure when running tests with -tmpdir arg not set to working dir. -2004-11-18 Don Porter +2004-11-18 Don Porter * changes: Final updates for Tcl 8.4.8 release. 2004-11-18 Reinhard Max * unix/tcl.m4 (SC_CONFIG_MANPAGES): Applied an improved version of - * unix/configure.in: patch #996085, that introduces + * unix/configure.in: [Patch 996085], that introduces * unix/Makefile.in: --enable-man-suffix. * unix/installManPage: added * unix/mkLinks.tcl: removed * unix/mkLinks: removed -2004-11-16 Jeff Hobbs +2004-11-16 Jeff Hobbs * unix/tclUnixChan.c (TtySetOptionProc): fixed crash configuring -ttycontrol on a channel. [Bug 1067708] @@ -2293,30 +2264,29 @@ * tools/tcl.wse.in: * tools/tclmin.wse: -2004-11-16 Don Porter +2004-11-16 Don Porter - * library/auto.tcl: Updated [tcl_findLibrary] search path - to include the $::auto_path. [RFE 695441]. + * library/auto.tcl: Updated [tcl_findLibrary] search path to + include the $::auto_path. [RFE 695441] 2004-11-16 Donal K. Fellows * doc/tclvars.n: Mention global variables set by tclsh and wish so they are easier to find. [Patch 1065732] -2004-11-15 Don Porter +2004-11-15 Don Porter * generic/tclCmdMZ.c (Tcl_TraceObjCmd): Fixed Bug 1065378 which failed * tests/trace.test (trace-33.1): to permit a variable trace created with [trace variable] to be destroyed with [trace remove]. Thanks to Keith Vetter for the report. -2004-11-12 Don Porter +2004-11-12 Don Porter - * library/init.tcl: Made [unknown] robust in the case that - either of the variables ::errorInfo or ::errorCode gets unset. - [Bug 1063707] + * library/init.tcl: Made [unknown] robust in the case that either + of the variables ::errorInfo or ::errorCode gets unset. [Bug 1063707] -2004-11-12 Jeff Hobbs +2004-11-12 Jeff Hobbs * generic/tclEncoding.c (TableFromUtfProc): correct crash condition when TCL_UTF_MAX == 6. [Bug 1004065] @@ -2334,22 +2304,22 @@ 2004-11-11 Daniel Steffen * tests/fCmd.test: - * unix/tclUnixFCmd.c (TraverseUnixTree): added option to rewind() - the readdir() loop whenever the source hierarchy has been modified - by traverseProc (e.g. by deleting files); this is required to ensure - complete traversal of the source hierarchy on certain filesystems - like HFS+. Added test for failing recursive delete on Mac OS X that - was due to this. [Bug 1034337] - - * generic/tclListObj.c (Tcl_ListObjReplace): use memmove() instead - of manual copy loop to shift list elements. Decreases time spent in - Tcl_ListObjReplace() from 5.2% to 1.7% of overall runtime of - tclbench on a ppc 7455 (i.e. 200% speed increase). [Patch 1064243] - - * generic/tclHash.c: hoisted some constant pointer dereferences out - of loops to eliminate redundant loads that the gcc optimizer didn't - deal with. Decreases time spend in Tcl_FindHashEntry() by 10% over a - full run of the tcl testuite on a ppc 7455. [Patch 1064243] + * unix/tclUnixFCmd.c (TraverseUnixTree): added option to rewind() the + readdir() loop whenever the source hierarchy has been modified by + traverseProc (e.g. by deleting files); this is required to ensure + complete traversal of the source hierarchy on certain filesystems like + HFS+. Added test for failing recursive delete on Mac OS X that was due + to this. [Bug 1034337] + + * generic/tclListObj.c (Tcl_ListObjReplace): use memmove() instead of + manual copy loop to shift list elements. Decreases time spent in + Tcl_ListObjReplace() from 5.2% to 1.7% of overall runtime of tclbench + on a ppc 7455 (i.e. 200% speed increase). [Patch 1064243] + + * generic/tclHash.c: hoisted some constant pointer dereferences out of + loops to eliminate redundant loads that the gcc optimizer didn't deal + with. Decreases time spend in Tcl_FindHashEntry() by 10% over a full + run of the tcl testuite on a ppc 7455. [Patch 1064243] * tests/fileName.test: * tests/fileSystem.test: @@ -2358,24 +2328,23 @@ with -tmpdir arg not set to working dir. * macosx/Makefile: corrected path to html help inside framework. - Prevent parallel make from building several targets at the same - time. + Prevent parallel make from building several targets at the same time. 2004-11-09 Donal K. Fellows * doc/catch.n: Clarify documentation on return codes. [Bug 1062647] -2004-11-02 Don Porter +2004-11-02 Don Porter * changes: Updates for Tcl 8.4.8 release. -2004-11-02 Don Porter +2004-11-02 Don Porter * library/tcltest/tcltest.tcl: Corrected some misleading * tests/tcltest.test (tcltest-26.1,2): displays of ::errorInfo and ::errorCode information when the -setup, -body, and/or -cleanup scripts return an unexpected return code. Thanks to Robert Seeger for the - fix. [RFE 1017151]. + fix. [RFE 1017151] 2004-11-02 Donal K. Fellows @@ -2392,10 +2361,10 @@ 2004-10-30 Miguel Sofer - * generic/tclCmdAH.c (Tcl_CatchObjCmd): removed erroneous comment - [Bug 1029518] + * generic/tclCmdAH.c (Tcl_CatchObjCmd): removed erroneous comment [Bug + 1029518] -2004-10-29 Don Porter +2004-10-29 Don Porter * library/tcltest/tcltest.tcl: Correct reaction to errors in the obsolete processCmdLineArgsHook. [Bug 1055673] @@ -2403,16 +2372,15 @@ 2004-10-28 Andreas Kupries - * generic/tclAlloc.c: Fixed [Tcl SF Bug 1030548], a - * generic/tclThreadAlloc.c: threaded debug build on Windows - * win/tclWinThrd.c: now works again. Had to touch Unix - * unix/tclUnixThrd.c: as well. Basic patch by Kevin, with - modifications by myself. + * generic/tclAlloc.c: Fixed [Bug 1030548], a threaded debug + * generic/tclThreadAlloc.c: build on Windows now works again. Had to + * win/tclWinThrd.c: touch Unix as well. Basic patch by Kevin, + * unix/tclUnixThrd.c: with modifications by myself. -2004-10-28 Don Porter +2004-10-28 Don Porter - * README: Bumped patch level to 8.4.8 to prepare - * generic/tcl.h: for next patch release. + * README: Bumped patch level to 8.4.8 to prepare for + * generic/tcl.h: next patch release. * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: @@ -2426,18 +2394,18 @@ * generic/tclInt.decls: * unix/tclUnixTime.c (TclpGmtime, TclpLocaltime): - * win/tclWinTime.c (TclpGmtime, TclpLocaltime): - Changed type signatures of TclpGmtime and TclpLocaltime - to accept CONST TclpTime_t throughout, to avoid any possible - confusion in pedantic compilers. [Bug 1001319] + * win/tclWinTime.c (TclpGmtime, TclpLocaltime): Changed type + signatures of TclpGmtime and TclpLocaltime to accept CONST TclpTime_t + throughout, to avoid any possible confusion in pedantic compilers. + [Bug 1001319] * generic/tclIntDecls.h: * generic/tclIntPlatDecls.h: Regenerated. -2004-10-27 Don Porter +2004-10-27 Don Porter - * generic/tclCmdAH.c (Tcl_FormatObjCmd): Restored missing - line from yesterdays' 868489 backport that caused failed alloc's - on LP64 systems. + * generic/tclCmdAH.c (Tcl_FormatObjCmd): Restored missing line + from yesterday's 868489 backport that caused failed alloc's on LP64 + systems. * tests/appendComp.test: Backport test suite fixes of errors * tests/autoMkindex.test: revealed by -singleproc 1 -debug 1 @@ -2453,66 +2421,65 @@ 2004-10-26 Kevin B. Kenny - * generic/tclCmdAH.c (Tcl_FormatObjCmd): Backport a missing bit - of the bug 868489 fix. - * generic/tclObj.c (SetBooleanFromAny): Backport fix for Bug - 1026125. + * generic/tclCmdAH.c (Tcl_FormatObjCmd): Backport a missing bit of the + [Bug 868489] fix. + * generic/tclObj.c (SetBooleanFromAny): Backport fix for [Bug 1026125] * tests/format.test (format-19.1): Additional regression test for - Bug 868489. + [Bug 868489]. 2004-10-26 Donal K. Fellows * doc/*.n: Backporting of documentation updates. -2004-10-26 Don Porter +2004-10-26 Don Porter - * tests/subst.test (subst-12.3-5): More tests for Bug 1036649. + * tests/subst.test (subst-12.3-5): More tests for [Bug 1036649] - * tests/compile.test (compile-12.4): Backport test for Bug 1001997. - * tests/timer.test (timer-10.1): Backport test for Bug 1016167. + * tests/compile.test (compile-12.4): Backport test for [Bug 1001997] + * tests/timer.test (timer-10.1): Backport test for [Bug 1016167] * tests/tcltest.test (tcltest-12.3,4): Backport setup corrections. * tests/error.test (error-6.3,4,7,9): Backport of some tests. * tests/basic.test (basic-49.*): * tests/namespace.test (namespace-8.7): * tests/init.test (init-2.8): Updated to not rely on http package. - * generic/tclThreadTest.c (ThreadEventProc): Corrected subtle - bug where the returned (char *) from Tcl_GetStringResult(interp) - continued to be used without copying or refcounting, while - activity on the interp continued. + * generic/tclThreadTest.c (ThreadEventProc): Corrected subtle bug + where the returned (char *) from Tcl_GetStringResult(interp) continued + to be used without copying or refcounting, while activity on the + interp continued. 2004-10-14 Donal K. Fellows - * generic/tclUtil.c (TclMatchIsTrivial): Detect degenerate cases - of glob matching that let us avoid scanning through hash tables. + * generic/tclUtil.c (TclMatchIsTrivial): Detect degenerate cases of + glob matching that let us avoid scanning through hash tables. * generic/tclCmdIL.c (InfoCommandsCmd, InfoGlobalsCmd, InfoProcsCmd): (InfoVarsCmd): Use this to speed up some [info] subcommands. -2004-10-08 Jeff Hobbs +2004-10-08 Jeff Hobbs - * win/tclWinFile.c (NativeIsExec): correct result of 'file - executable' to not be case sensitive. [Bug 954263] + * win/tclWinFile.c (NativeIsExec): correct result of 'file executable' + to not be case sensitive. [Bug 954263] -2004-10-05 Don Porter +2004-10-05 Don Porter * generic/tclNamesp.c (Tcl_PopCallFrame): Removed Bug 1038021 - workaround. That bug is now fixed. + workaround. That bug is now fixed. -2004-09-30 Don Porter +2004-09-30 Don Porter - * generic/tclNamespace.c (TclTeardownNamespace): Tcl_Obj-ified - * tests/namespace.test (namespace-8.5,6): the save/restore - of ::errorInfo and ::errorCode during global namespace teardown. - Revised the comment to clarify why this is done, and added tests - that will fail if this is not done. + * generic/tclNamespace.c (TclTeardownNamespace): Tcl_Obj-ified the + * tests/namespace.test (namespace-8.5,6): save/restore of + ::errorInfo and ::errorCode during global namespace teardown. Revised + the comment to clarify why this is done, and added tests that will + fail if this is not done. - * generic/tclResult.c (TclTransferResult): Added safety - checks so that unexpected undefined ::errorInfo or ::errorCode - will not lead to a segfault. + * generic/tclResult.c (TclTransferResult): Added safety checks so + that unexpected undefined ::errorInfo or ::errorCode will not lead to + a segfault. - * generic/tclVar.c (CallVarTraces): Save/restore the flag - * tests/var.test (var-16.1): values that define part of the - interpreter state during variable traces. [Bug 1038021]. + * generic/tclVar.c (CallVarTraces): Save/restore the flag values + * tests/var.test (var-16.1): that define part of the interpreter + state during variable traces. [Bug 1038021] 2004-09-30 Miguel Sofer @@ -2521,15 +2488,14 @@ 2004-09-29 Miguel Sofer * generic/tclBasic.c (Tcl_EvalEx): - * tests/subst.test (12.1-2): fix for buffer overflow in [subst], - [Bug 1036649] + * tests/subst.test (12.1-2): fix for buffer overflow in [subst], [Bug + 1036649] 2004-09-23 Mo DeJong - * unix/dltest/Makefile.in (clean): Fixup make clean - rule so that it does not delete all files when - SHLIB_SUFFIX is set to the empty string in a static build. - [Bug 1016726] + * unix/dltest/Makefile.in (clean): Fixup make clean rule so that it + does not delete all files when SHLIB_SUFFIX is set to the empty string + in a static build. [Bug 1016726] 2004-09-18 Donal K. Fellows @@ -2538,13 +2504,13 @@ 2004-09-15 Daniel Steffen - * tests/load.test (load-2.3): adopted fix for failure on darwin - from HEAD. + * tests/load.test (load-2.3): adopted fix for failure on darwin from + HEAD. -2004-09-14 Don Porter +2004-09-14 Don Porter * generic/tclObj.c (Tcl_GetIntFromObj): Corrected flaw in returning - the int value of a wideInteger. [Bug 1027690] + the int value of a wideInteger. [Bug 1027690] 2004-09-10 Donal K. Fellows @@ -2552,59 +2518,56 @@ parsing code so that values do not flip so easily between numeric representations. Thanks to KBK for this! [Bug 868489] - * generic/tclIO.c (Tcl_Seek): Make sure wide seeks do not fail to - set ::errorCode on error. [Bug 1025359] + * generic/tclIO.c (Tcl_Seek): Make sure wide seeks do not fail to set + ::errorCode on error. [Bug 1025359] 2004-09-10 Andreas Kupries * generic/tcl.h: Micro formatting fixes. * generic/tclIOGT.c: Channel version fixed, must be 3, to have - wideseekProc. Thanks to David Graveraux . + wideseekProc. Thanks to David Graveraux . -2004-09-11 Don Porter +2004-09-11 Don Porter * generic/tclNamespace.c (TclGetNamespaceForQualName): Resolved longstanding inconsistency in the treatment of the TCL_NAMESPACE_ONLY flag revealed by testing the 2004-09-09 commits against Itcl. TCL_NAMESPACE_ONLY now acts as specified in the pre-function - comment, forcing resolution in the passed in context namespace. - It has been incorrectly forcing resolution in the interp's current - namespace. + comment, forcing resolution in the passed in context namespace. It has + been incorrectly forcing resolution in the interp's current namespace. 2004-09-10 Miguel Sofer - * generic/tclExecute.c (INST_CONCAT1): added a peephole - optimisation for concatting an empty string. This enables - replacing the idiom 'K $x [set x {}]' by '$x[set x {}]' for - fastest execution. + * generic/tclExecute.c (INST_CONCAT1): added a peephole optimisation + for concatting an empty string. This enables replacing the idiom 'K $x + [set x {}]' by '$x[set x {}]' for fastest execution. -2004-09-09 Don Porter +2004-09-09 Don Porter - * generic/tclNamesp.c (Tcl_ForgetImport): Corrected faulty - * tests/namespace.test: logic that relied exclusively on string - matching and failed in the presence of [rename]s. [Bug 560297] - Also corrected faulty prevention of [namespace import] cycles. - [Bug 1017299] + * generic/tclNamesp.c (Tcl_ForgetImport): Corrected faulty logic that + * tests/namespace.test: relied exclusively on string matching and + failed in the presence of [rename]s. [Bug 560297] + Also corrected faulty prevention of [namespace import] cycles. [Bug + 1017299] 2004-09-08 Kevin B. Kenny - * compat/strftime.c (_conv): Corrected a problem where hour 0 - would format as a blank format group with %k. - * tests/clock.test (clock-41.1): Added regression test case for - %k at the zero hour. + * compat/strftime.c (_conv): Corrected a problem where hour 0 would + format as a blank format group with %k. + * tests/clock.test (clock-41.1): Added regression test case for %k at + the zero hour. 2004-09-07 Kevin B. Kenny - * generic/tclTimer.c: Removed a premature optimisation that - attempted to store the assoc data in the client data; the - optimisation caused a bug that [after] would overwrite - its imports. [Bug 1016167] + * generic/tclTimer.c: Removed a premature optimisation that attempted + to store the assoc data in the client data; the optimisation caused a + bug that [after] would overwrite its imports. [Bug 1016167] 2004-09-02 Donal K. Fellows * doc/lsearch.n: Clarified meaning of -dictionary. [Bug 759545] -2004-09-01 Jeff Hobbs +2004-09-01 Jeff Hobbs * win/tclWinReg.c (BroadcastValue): WIN64 cast corrections @@ -2625,8 +2588,8 @@ 2004-08-19 Donal K. Fellows - * generic/tclScan.c (Tcl_ScanObjCmd, ValidateFormat): Ensure that - the %ld conversion works correctly on 64-bit platforms. [Bug 1011860] + * generic/tclScan.c (Tcl_ScanObjCmd, ValidateFormat): Ensure that the + %ld conversion works correctly on 64-bit platforms. [Bug 1011860] 2004-08-16 Miguel Sofer @@ -2636,7 +2599,7 @@ * tests/result.test (result-4.*, result-5.*): [Bug 1008314] detected and fixed by dgp. -2004-08-13 Don Porter +2004-08-13 Don Porter * library/msgcat/msgcat.tcl: Added checks to prevent [mclocale] * tests/msgcat.test: from registering filesystem paths to possibly @@ -2645,15 +2608,15 @@ 2004-08-10 Zoran Vasiljevic - * unix/tclUnixThrd.c (TclpThreadCreate): changed handling of - the returned thread ID since broken on 64-bit systems (Cray). - Thanks to Rob Ratcliff for reporting the bug. + * unix/tclUnixThrd.c (TclpThreadCreate): changed handling of the + returned thread ID since broken on 64-bit systems (Cray). Thanks to + Rob Ratcliff for reporting the bug. -2004-07-30 Don Porter +2004-07-30 Don Porter - * generic/tclEvent.c (Tcl_Finalize): Re-organized Tcl_Finalize - so that Tcl_ExitProc's that call Tcl_Finalize recursively do not - cause deadlock. [Patch 999084 fixes Tk Bug 714956] + * generic/tclEvent.c (Tcl_Finalize): Re-organized Tcl_Finalize so + that Tcl_ExitProc's that call Tcl_Finalize recursively do not cause + deadlock. [Patch 999084, fixes Tk Bug 714956] 2004-07-30 Daniel Steffen @@ -2662,47 +2625,47 @@ to explict object files in tcl.m4, refer to MAC_OSX_OBJS makefile var. * unix/Makefile.in: added MAC_OSX_OBJS variable. -2004-07-28 Don Porter +2004-07-28 Don Porter - * generic/tclMain.c (Tcl_Main, StdinProc): Append newline only - * tests/basic.test (basic-46.1): to incomplete scripts - as part of multi-line script construction. Do not add an extra - trailing newline to the complete script. [Bug 833150] + * generic/tclMain.c (Tcl_Main, StdinProc): Append newline only to + * tests/basic.test (basic-46.1): incomplete scripts as part + of multi-line script construction. Do not add an extra trailing + newline to the complete script. [Bug 833150] -2004-07-26 Jeff Hobbs +2004-07-26 Jeff Hobbs *** 8.4.7 TAGGED FOR RELEASE *** * tests/io.test (io-61.1): create file in binary mode for x-plat. -2004-07-25 Pat Thoyts +2004-07-25 Pat Thoyts * generic/tclThreadAlloc.c: Moved the tclInt.h include to provide Tcl_Panic which is now required for non-threaded build. -2004-07-22 Don Porter +2004-07-22 Don Porter * tests/eofchar.data (removed): Test io-61.1 now generates its own * tests/io.test: file of test data as needed. -2004-07-21 Don Porter +2004-07-21 Don Porter * win/tclWinDde.c: Bump to dde 1.2.3 to cover changes * library/dde/pkgIndex.tcl: committed on 2004-06-14. * changes: Updated for Tcl 8.4.7 release. -2004-07-20 Jeff Hobbs +2004-07-20 Jeff Hobbs * generic/tclEvent.c: Correct threaded obj allocator to * generic/tclInt.h: fully cleanup on exit and allow for - * generic/tclThreadAlloc.c: reinitialization. [Bug #736426] + * generic/tclThreadAlloc.c: reinitialization. [Bug 736426] * unix/tclUnixThrd.c: (mistachkin, kenny) * win/tclWinThrd.c: 2004-07-20 Daniel Steffen - * unix/tcl.m4: fixed Darwin autoconf breakage caused by - recent CFLAGS reordering. + * unix/tcl.m4: fixed Darwin autoconf breakage caused by recent CFLAGS + reordering. * unix/configure: regen * unix/tclConfig.sh.in: replaced EXTRA_CFLAGS with CFLAGS. @@ -2712,101 +2675,97 @@ CFBundleOpenBundleResourceMap symbol, since it is only present in full CoreFoundation on Mac OS X and not in CFLite on pure Darwin. -2004-07-19 Jeff Hobbs +2004-07-19 Jeff Hobbs * unix/Makefile.in, unix/tcl.m4: move (C|LD)FLAGS after their - * unix/configure.in, unix/configure: _DEFAULT to allow for env - setting to override m4 switches. + * unix/configure.in, unix/configure: _DEFAULT to allow for env setting + to override m4 switches. Consolidate header checks to limit redundancy in configure. - (CFLAGS_WARNING): Remove -Wconversion, add -fno-strict-aliasing - for gcc builds (need to suppress 3.x type puning warnings). - (SC_ENABLE_THREADS): Set m4 to force threaded build when built - against a threaded Tcl core. - Reorder configure.in for better 64-bit build configuration, - replacing EXTRA_CFLAGS with CFLAGS. [Bug #874058] + (CFLAGS_WARNING): Remove -Wconversion, add -fno-strict-aliasing for + gcc builds (need to suppress 3.x type puning warnings). + (SC_ENABLE_THREADS): Set m4 to force threaded build when built against + a threaded Tcl core. + Reorder configure.in for better 64-bit build configuration, replacing + EXTRA_CFLAGS with CFLAGS. [Bug 874058] 2004-07-19 Zoran Vasiljevic - * win/tclwinThrd.c: redefined MASTER_LOCK to call - TclpMasterLock. Fixes Bug #987967 + * win/tclwinThrd.c: redefined MASTER_LOCK to call TclpMasterLock. + Fixes [Bug 987967] 2004-07-16 Andreas Kupries * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Corrected a typo in the - generation of error messages and simplified by reusing data in a - variable instead of retrieving the string again. - Fixes [Tcl SF Bug 835289]. + generation of error messages and simplified by reusing data in a + variable instead of retrieving the string again. Fixes [Bug 835289] * doc/OpenFileChnl.3: Added description of the behaviour of - Tcl_ReadChars when its 'charsToRead' argument is set to - -1. Fixes [Tcl SF Bug 934511]. + Tcl_ReadChars when its 'charsToRead' argument is set to -1. Fixes [Bug + 934511] - * doc/CrtCommand.3: Added note that the arguments given to the - command proc of a Tcl_CreateCommand are in utf8 since Tcl - 8.1. Closing [Tcl SF Patch 414778]. + * doc/CrtCommand.3: Added note that the arguments given to the command + proc of a Tcl_CreateCommand are in utf8 since Tcl 8.1. Closing [Patch + 414778] - * doc/ChnlStack.3: Removed the declaration that the interp - argument to Tcl_(un)StackChannel can be NULL. This fixes [Tcl SF - Bug 881220], reported by Marco Maggi - . + * doc/ChnlStack.3: Removed the declaration that the interp argument to + Tcl_(un)StackChannel can be NULL. This fixes [Bug 881220], reported by + Marco Maggi . * tests/socket.test: Accepted two new testcases by Stuart Casoff - checking that -server and -async - don't go together [Tcl SF Bug 796534]. + checking that -server and -async don't go + together [Bug 796534] - * unix/tclUnixNotfy.c (NotifierThreadProc): Accepted Joe - Mistachkin's patch for [Tcl SF Bug 990500], properly closing the - notifier thread when its exits. + * unix/tclUnixNotfy.c (NotifierThreadProc): Accepted Joe Mistachkin's + patch for [Bug 990500], properly closing the notifier thread when its + exits. 2004-07-15 Andreas Kupries - * unix/tclUnixThrd.c (TclpFinalizeMutex): Accepted Joe - Mistachkin's patch for [Tcl SF Bug 990453], closing leakage of - mutexes. They were not destroyed properly upon finalization. + * unix/tclUnixThrd.c (TclpFinalizeMutex): Accepted Joe Mistachkin's + patch for [Bug 990453], closing leakage of mutexes. They were not + destroyed properly upon finalization. 2004-07-15 Zoran Vasiljevic - * generic/tclEvent.c (NewThreadProc): Backout of changes - to fix the Tcl Bug #770053. See SF bugreport for more info. + * generic/tclEvent.c (NewThreadProc): Backout of changes to fix [Bug + 770053]. See SF bugreport for more info. * generic/tclNotify.c (TclFinalizeNotifier): Added conditional - notifier finalization based on the fact that an TclInitNotifier - has been called for the current thread. This fixes the Tcl - Bug #770053 again. Hopefully this time w/o unwanted side-effects. + notifier finalization based on the fact that an TclInitNotifier has + been called for the current thread. This fixes [Bug 770053] again. + Hopefully this time w/o unwanted side-effects. 2004-07-14 Andreas Kupries - * generic/tclIO.h (CHANNEL_INCLOSE): New flag. Set in - * generic/tclIO.c (Tcl_UnregisterChannel): 'Tcl_Close' while the - * generic/tclIO.c (Tcl_Close): close callbacks are - run. Checked in 'Tcl_Close' and 'Tcl_Unregister' to prevent - recursive call of 'close' in the close-callbacks. This is a - possible error made by implementors of virtual filesystems based - on 'tclvfs', thinking that they have to close the channel in the - close handler for the filesystem. + * generic/tclIO.h (CHANNEL_INCLOSE): New flag. Set in Tcl_Close + * generic/tclIO.c (Tcl_UnregisterChannel): while the close callbacks + * generic/tclIO.c (Tcl_Close): are run. Checked in + Tcl_Close and Tcl_Unregister to prevent recursive call of [close] in + the close-callbacks. This is a possible error made by implementors of + virtual filesystems based on 'tclvfs', thinking that they have to + close the channel in the close handler for the filesystem. 2004-07-14 Andreas Kupries * generic/tclIO.c: * generic/tclIO.h: - * Not reverting, but #ifdef'ing the changes from May 19, 2004 out - of the core. This removes the ***POTENTIAL INCOMPATIBILITY*** - for channel drivers it introduced. This has become possible due - to Expect gaining a BlockModeProc and now handling blockingg and - non-blocking modes correctly. Thus [SF Tcl Bug 943274] is still - fixed if a recent enough version of Expect is used. + Not reverting, but #ifdef'ing the changes from May 19, 2004 out of the + core. This removes the ***POTENTIAL INCOMPATIBILITY*** for channel + drivers it introduced. This has become possible due to Expect gaining + a BlockModeProc and now handling blockingg and non-blocking modes + correctly. Thus [Bug 943274] is still fixed if a recent enough version + of Expect is used. - * doc/CrtChannel.3: Added warning about usage of a channel without - a BlockModeProc. + * doc/CrtChannel.3: Added warning about usage of a channel without a + BlockModeProc. 2004-07-15 Andreas Kupries - * generic/tclIOCmd.c (Tcl_PutsObjCmd): Added length check to the - old depreceated newline syntax, to ensure that only "nonewline" - is accepted. [Tcl SF Bug 985869], reported by Joe Mistachkin - . + * generic/tclIOCmd.c (Tcl_PutsObjCmd): Added length check to the old + depreceated newline syntax, to ensure that only "nonewline" is + accepted. [Bug 985869] (mistachkin) -2004-07-13 Jeff Hobbs +2004-07-13 Jeff Hobbs * README, generic/tcl.h, tools/tcl.wse.in: bumped to * unix/configure, unix/configure.in, unix/tcl.spec: patchlevel @@ -2814,9 +2773,9 @@ 2004-07-13 Zoran Vasiljevic - * generic/tclEvent.c (NewThreadProc): Fixed broken build on - Windows caused by missing TCL_THREAD_CREATE_RETURN. This is - backported from head. Thnx to Kevin Kenny for spotting this. + * generic/tclEvent.c (NewThreadProc): Fixed broken build on Windows + caused by missing TCL_THREAD_CREATE_RETURN. This is backported from + HEAD. Thnx to Kevin Kenny for spotting this. 2004-07-03 Miguel Sofer @@ -2824,7 +2783,7 @@ * tests/expr-old.test (39.1): added support for wide integers to round(); [Bug 908375], reported by Hemang Lavana. -2004-07-02 Jeff Hobbs +2004-07-02 Jeff Hobbs * generic/regcomp.c (stid): correct minor pointer size error @@ -2847,51 +2806,49 @@ * generic/tclInt.h: * unix/tclUnixNotfy.c: * unix/tclUnixThrd.c: - * win/tclWinThrd.c: [Bug #770053]. See bug report for - more information about what it does. + * win/tclWinThrd.c: See bug report for more information about what it + does. [Bug 770053] - * tests/unixNotfy.test: rewritten to use tcltest::threadReap - to gracefully wait for the test thread to exit. Otherwise - we got a race condition with main thread exiting before the - test thread. This exposed the long-standing Tcl lib issue - with resource garbage-collection on application exit. + * tests/unixNotfy.test: rewritten to use tcltest::threadReap to + gracefully wait for the test thread to exit. Otherwise we got a race + condition with main thread exiting before the test thread. This + exposed the long-standing Tcl lib issue with resource + garbage-collection on application exit. 2004-06-21 Mo DeJong - * win/tclWin32Dll.c (DllMain, _except_dllmain_detach_handler, - TclpCheckStackSpace, _except_checkstackspace_handler, - TclWinCPUID, _except_TclWinCPUID_detach_handler): - * win/tclWinChan.c (Tcl_MakeFileChannel, - _except_makefilechannel_handler): - * win/tclWinFCmd.c (DoRenameFile, - _except_dorenamefile_handler, DoCopyFile, - _except_docopyfile_handler): - Rework pushing of exception handler function pointer - so that compiling with gcc -O3 works. Remove empty - function call to avoid compiler warning. Mark the - DllMain function as noinline to avoid compiler - error from duplicated asm labels in generated code. - -2004-06-14 Pat Thoyts + * win/tclWin32Dll.c (DllMain, _except_dllmain_detach_handler) + (TclpCheckStackSpace, _except_checkstackspace_handler, TclWinCPUID) + (_except_TclWinCPUID_detach_handler): + * win/tclWinChan.c (Tcl_MakeFileChannel) + (_except_makefilechannel_handler): + * win/tclWinFCmd.c (DoRenameFile, _except_dorenamefile_handler) + (DoCopyFile, _except_docopyfile_handler): + Rework pushing of exception handler function pointer so that compiling + with gcc -O3 works. Remove empty function call to avoid compiler + warning. Mark the DllMain function as noinline to avoid compiler error + from duplicated asm labels in generated code. + +2004-06-14 Pat Thoyts * tests/winDde.test: Fixed -async test - * win/tclWinDde.c: Backported the fix from 8.5 to avoid hanging in - the presence of applications that do not process Window messages. + * win/tclWinDde.c: Backported the fix from 8.5 to avoid hanging in the + presence of applications that do not process Window messages. 2004-06-10 Andreas Kupries - * generic/tclDecls.h: Regenerated on a unix box. - * generic/tclIntDecls.h: The Win/DOS EOLs from the - * generic/tclIntPlatDecls.h: last regen screwed up compilation - * generic/tclPlatDecls.h: with an older gcc. + * generic/tclDecls.h: Regenerated on a unix box. The Win/DOS + * generic/tclIntDecls.h: EOLs from the last regen screwed up + * generic/tclIntPlatDecls.h: compilation with an older gcc. + * generic/tclPlatDecls.h: * generic/tclStubInit.c: 2004-06-10 Zoran Vasiljevic - * generic/tclIOUtil.c: partially corrected [Bug 932314]. - Also, corrected return values of Tcl_FSChdir() to - reflect those of the underlying platform-specific call. - Originally, return codes were mixed with those of Tcl. + * generic/tclIOUtil.c: partially corrected [Bug 932314]. Also, + corrected return values of Tcl_FSChdir() to reflect those of the + underlying platform-specific call. Originally, return codes were mixed + with those of Tcl. 2004-06-08 Miguel Sofer @@ -2902,164 +2859,156 @@ * generic/tcl.h: Corrected Tcl_WideInt declarations so that the mingw build works again. * generic/tclDecls.h: Changes to the tests for - * generic/tclInt.decls: clock frequency in - * generic/tclIntDecls.h: Tcl_WinTime - * generic/tclIntPlatDecls.h: so that any clock frequency - * generic/tclPlatDecls.h: is accepted provided that - * generic/tclStubInit.c: all CPU's in the system share - * tests/platform.test (platform-1.3): a common chip, and hence, - * win/tclWin32Dll.c (TclWinCPUID): presumably, a common clock. - * win/tclWinTest.c (TestwincpuidCmd) This change necessitated a - * win/tclWinTime.c (Tcl_GetTime): small burst of assembly code - to read CPU ID information, which was added as TclWinCPUID in the - internal Stubs. To test this code in the common case of a - single-processor machine, a 'testwincpuid' command was added to - tclWinTest.c, and a test case in platform.test. Thanks to Jeff - Godfrey and Richard Suchenwirth for reporting this bug. [Bug - #976722] + * generic/tclInt.decls: clock frequency in Tcl_WinTime + * generic/tclIntDecls.h: so that any clock frequency is + * generic/tclIntPlatDecls.h: accepted provided that all + * generic/tclPlatDecls.h: CPU's in the system share a + * generic/tclStubInit.c: common chip, and hence, + * tests/platform.test (platform-1.3): presumably, a common clock. + * win/tclWin32Dll.c (TclWinCPUID): This change necessitated a + * win/tclWinTest.c (TestwincpuidCmd) small burst of assembly code + * win/tclWinTime.c (Tcl_GetTime): to read CPU ID information, + which was added as TclWinCPUID in the internal Stubs. To test this + code in the common case of a single-processor machine, a + 'testwincpuid' command was added to tclWinTest.c, and a test case in + platform.test. Thanks to Jeff Godfrey and Richard Suchenwirth for + reporting this bug. [Bug 976722] 2004-05-27 Kevin B. Kenny - * tests/clock.test: Added a single test for the presence of %G - in [clock format], and conditioned out the clock-10.x series if - they're all going to fail because of a broken strftime() call. - [Bug 961714] + * tests/clock.test: Added a single test for the presence of %G in + [clock format], and conditioned out the clock-10.x series if they're + all going to fail because of a broken strftime() call. [Bug 961714] 2004-05-27 Reinhard Max * generic/tclEncoding.c: * tests/encoding.test: added support and tests for translating embedded null characters between real nullbytes and the internal - representation on input/output (Bug #949905). + representation on input/output. [Bug 949905] -2004-05-26 Don Porter +2004-05-26 Don Porter * library/tcltest/tcltest.tcl: Correction to debug prints and testing - * library/tcltest/pkgIndex.tcl: if TCLTEST_OPTIONS value. Corrected + * library/tcltest/pkgIndex.tcl: if TCLTEST_OPTIONS value. Corrected * tests/tcltest.test: double increment of numTestFiles in - -singleproc 1 configurations. Updated tcltest-19.1 to tcltest 2.1 - behavior. Corrected tcltest-25.3 to not falsely report a failure - in tcltest.test. Bumped to tcltest 2.2.6. [Bugs 960560, 960926] + -singleproc 1 configurations. Updated tcltest-19.1 to tcltest 2.1 + behavior. Corrected tcltest-25.3 to not falsely report a failure in + tcltest.test. Bumped to tcltest 2.2.6. [Bugs 960560, 960926] -2004-05-25 Jeff Hobbs +2004-05-25 Jeff Hobbs * doc/http.n (http::config): add -urlencoding option (default utf-8) * library/http/http.tcl: that specifies encoding conversion of * library/http/pkgIndex.tcl: args for http::formatQuery. Previously * tests/http.test: undefined, RFC 2718 says it should be utf-8. 'http::config -urlencoding {}' returns previous behavior, - which will throw errors processing non-latin-1 chars. - Bumped http package to 2.5.0. + which will throw errors processing non-latin-1 chars. Bumped http + package to 2.5.0. -2004-05-25 Kevin Kenny +2004-05-25 Kevin Kenny * tests/winFCmd.test: Correct test for the presence of a CD-ROM so - that it doesn't misdetect some other sort - of filesystem with a write-protected root as - being a CD-ROM drive. [Bug 918267] + that it doesn't misdetect some other sort of filesystem with a + write-protected root as being a CD-ROM drive. [Bug 918267] -2004-05-24 Jeff Hobbs +2004-05-24 Jeff Hobbs * generic/tclExecute.c (VerifyExprObjType): use GET_WIDE_OR_INT to - properly have tclIntType used for smaller values. This corrects - TclX bug 896727 and any other 3rd party extension that created - math functions but was not yet WIDE_INT aware in them. + properly have tclIntType used for smaller values. This corrects TclX + bug 896727 and any other 3rd party extension that created math + functions but was not yet WIDE_INT aware in them. -2004-05-24 Miguel Sofer +2004-05-24 Miguel Sofer * doc/set.n: accurate description of name resolution process, referring to namespace.n for details [Bug 959180] -2004-05-22 Miguel Sofer +2004-05-22 Miguel Sofer - * generic/tclVar.c (TclObjUnsetVar2): backported fix [Bug 735335] - and new (in tcl8.4) exteriorisations of [Bug 736729] due to the use of - tclNsVarNameType obj types. The consequences of [Bug 736729] - should be the same as in tcl8.3 and previous versions. - The use of tclNsVarNameType objs is still disabled, pending a - decision by the release manager. + * generic/tclVar.c (TclObjUnsetVar2): backported fix [Bug 735335] and + new (in tcl8.4) exteriorisations of [Bug 736729] due to the use of + tclNsVarNameType obj types. The consequences of [Bug 736729] should be + the same as in tcl8.3 and previous versions. The use of + tclNsVarNameType objs is still disabled, pending a decision by the + release manager. 2004-05-19 Donal K. Fellows - * win/tclWinFile.c (TclpMatchInDirectory): fix for an issue - where there was a sneak path from Tcl_DStringFree to - SetErrorCode(0). The result was that the error code could - be reset between a call to FindFirstFile and the check - of its status return, leading to a bizarre error return of - {POSIX unknown {No error}}. (Found in unplanned test - + * win/tclWinFile.c (TclpMatchInDirectory): fix for an issue where + there was a sneak path from Tcl_DStringFree to SetErrorCode(0). The + result was that the error code could be reset between a call to + FindFirstFile and the check of its status return, leading to a bizarre + error return of {POSIX unknown {No error}}. (Found in unplanned test - no incident logged at SourceForge.) 2004-05-19 Andreas Kupries * generic/tclIO.c: Fixed [SF Tcl Bug 943274]. This is the same problem * generic/tclIO.h: as [SF Tcl Bug 462317], see ChangeLog entry - 2001-09-26. The fix done at that time is incomplete. It is - possible to get around it if the actual read operation is defered - and not executed in the event handler itself. Instead of tracking - if we are in an read caused by a synthesized fileevent we now - track if the OS has delivered a true event = actual data and - bypass the driver if a read finds that there is no actual data - waiting. The flag is cleared by a short or full read. - [[this bug amended 2004-07-14]] + 2001-09-26. The fix done at that time is incomplete. It is possible to + get around it if the actual read operation is defered and not executed + in the event handler itself. Instead of tracking if we are in an read + caused by a synthesized fileevent we now track if the OS has delivered + a true event = actual data and bypass the driver if a read finds that + there is no actual data waiting. The flag is cleared by a short or + full read. [[this bug amended 2004-07-14]] 2004-05-18 Kevin B. Kenny * compat/strftime.c (_fmt, ISO8601Week): * doc/clock.n: - * tests/clock.test: Major rework to the handling of ISO8601 - week numbers. Now passes all the %G and %V test cases on - Windows, Linux and Solaris [Bugs #500285, #500389, and #852944] + * tests/clock.test: Major rework to the handling of ISO8601 week + numbers. Now passes all the %G and %V test cases on Windows, Linux and + Solaris [Bugs 500285, 500389, and 852944] 2004-05-17 Kevin B. Kenny - * generic/tclInt.decls: Restored TclpTime_t kludge to all - * generic/tclIntPlatDecls.h: places where it appeared before the - * unix/tclUnixPort.h changes of 14 May, because use of - * unix/tclUnixTime.h native time_t in its place requires - * win/tclWinTime.h: the 8.5 header reforms. [Bug #955146] + * generic/tclInt.decls: Restored TclpTime_t kludge to all places + * generic/tclIntPlatDecls.h: where it appeared before the changes of + * unix/tclUnixPort.h 14 May, because use of native time_t in + * unix/tclUnixTime.h its place requires the 8.5 header + * win/tclWinTime.h: reforms. [Bug 955146] 2004-05-17 Donal K. Fellows - * doc/OpenFileChnl.3: Documented type of 'offset' argument to - Tcl_Seek was wrong. [Bug 953374] + * doc/OpenFileChnl.3: Documented type of 'offset' argument to Tcl_Seek + was wrong. [Bug 953374] 2004-05-14 Kevin B. Kenny * generic/tclInt.decls: Promoted TclpLocaltime and TclpGmtime * generic/tclIntDecls.h: from Unix-specific stubs to the generic - * generic/tclIntPlatDecls.h: internal Stubs table. Reran 'genstubs' + * generic/tclIntPlatDecls.h: internal Stubs table. Reran 'genstubs' * generic/tclStubInit.c: * unix/tclUnixPort.h: - * generic/tclClock.c: Changed a buggy 'GMT' timezone specification - to the correct 'GMT0'. [Bug #922848] + * generic/tclClock.c: Changed a buggy 'GMT' timezone specification to + the correct 'GMT0'. [Bug 922848] * unix/tclUnixThrd.c: Moved TclpGmtime and TclpLocaltime to unix/tclUnixTime.c where they belong. * unix/tclUnixTime.c (TclpGmtime, TclpLocaltime, TclpGetTimeZone, - ThreadSafeGMTime [removed], - ThreadSafeLocalTime [removed], - SetTZIfNecessary, CleanupMemory): - Restructured to make sure that the same mutex protects - all calls to localtime, gmtime, and tzset. Added a check - in front of those calls to make sure that the TZ env var - hasn't changed since the last call to tzset, and repeat - tzset if necessary. [Bug #940278] Removed a buggy test - of the Daylight Saving Time information in 'gettimeofday' - in favor of applying 'localtime' to a known value. - [Bug #922848] - - * tests/clock.test (clock-3.14): Added test to make sure that - changes to $env(TZ) take effect immediately. - - * win/tclWinTime.c (TclpLocaltime, TclpGmtime): - Added porting layer for 'localtime' and 'gmtime' calls. + (ThreadSafeGMTime[removed], ThreadSafeLocalTime[removed], + (SetTZIfNecessary, CleanupMemory): Restructured to make sure that the + same mutex protects all calls to localtime, gmtime, and tzset. Added a + check in front of those calls to make sure that the TZ env var hasn't + changed since the last call to tzset, and repeat tzset if necessary. + [Bug 940278] Removed a buggy test of the Daylight Saving Time + information in 'gettimeofday' in favor of applying 'localtime' to a + known value. [Bug 922848] + + * tests/clock.test (clock-3.14): Added test to make sure that changes + to $env(TZ) take effect immediately. + + * win/tclWinTime.c (TclpLocaltime, TclpGmtime): Added porting layer + for 'localtime' and 'gmtime' calls. 2004-05-10 David Gravereaux - * win/tclWinPipe.c (BuildCommandLine): Append a space when the - path got primed. + * win/tclWinPipe.c (BuildCommandLine): Append a space when the path + got primed. (TclpCreateProcess): When under NT, with no console, and executing a DOS application, the path priming does not need an ending space as BuildCommandLine() will append one for us. @@ -3070,24 +3019,24 @@ 2004-05-05 David Gravereaux - * generic/tclEvent.c: TclSetLibraryPath's use of caching the - stringrep of the pathPtr object to TclGetLibraryPath called from - another thread was ineffective if the original's stringrep had - been invalidated as what happens when it gets muted to a list. + * generic/tclEvent.c: TclSetLibraryPath's use of caching the stringrep + of the pathPtr object to TclGetLibraryPath called from another thread + was ineffective if the original's stringrep had been invalidated as + what happens when it gets muted to a list. * generic/tclEncoding.c: Added FreeEncoding(systemEncoding) in - TclFinalizeEncodingSubsystem because its ref count was incremented - in TclInitEncodingSubsystem. + TclFinalizeEncodingSubsystem because its ref count was incremented in + TclInitEncodingSubsystem. * win/tclWin32Dll.c: Structured Exception Handling added around - Tcl_Finalize called from DllMain's DLL_PROCESS_DETACH. We can't - be 100% assured that Tcl is being unloaded by the OS in a stable - condition and we need to protect the exit handlers should the - stack be in a hosed state. AT&T style assembly for SEH under - MinGW included, too. [Patch 858493] + Tcl_Finalize called from DllMain's DLL_PROCESS_DETACH. We can't be + 100% assured that Tcl is being unloaded by the OS in a stable + condition and we need to protect the exit handlers should the stack be + in a hosed state. AT&T style assembly for SEH under MinGW included, + too. [Patch 858493] Also added DisableThreadLibraryCalls() for the DLL_PROCESS_ATTACH - case. We're not interested in knowing about DLL_THREAD_ATTACH, so + case. We're not interested in knowing about DLL_THREAD_ATTACH, so disable the notices. * generic/tclInt.h: @@ -3095,109 +3044,106 @@ * generic/tclEvent.c: * unix/tclUnixThrd.c: * win/tclWinThrd.c: Provisions made so masterLock, initLock, - allocLock and joinLock mutexes can be recovered during - Tcl_Finalize. + allocLock and joinLock mutexes can be recovered during Tcl_Finalize. * win/tclWinSock.c: (SocketThreadExitHandler): Don't call TerminateThread when - WaitForSingleObject returns a timeout. Tcl_Finalize called from - DllMain will pause all threads. Trust that the thread will get - the close notice at a later time if it does ever wake up before - being cleaned up by the system anyway. - (SocketEventProc) : connect errors should fire both the readable - and writable handlers because this is how it works on UNIX - [Bug 794839] + WaitForSingleObject returns a timeout. Tcl_Finalize called from + DllMain will pause all threads. Trust that the thread will get the + close notice at a later time if it does ever wake up before being + cleaned up by the system anyway. + (SocketEventProc): connect errors should fire both the readable and + writable handlers because this is how it works on UNIX. [Bug 794839] - * win/coffbase.txt: Added the tls extension to the list of - preferred load addresses. + * win/coffbase.txt: Added the tls extension to the list of preferred + load addresses. -2004-05-05 Don Porter +2004-05-05 Don Porter - * tests/unixInit.test (unixInit-2.10): Test correction for Mac OSX. - Be sure to consistently compare normalized path names. Thanks to - Steven Abner (tauvan). [Bug 948177] + * tests/unixInit.test (unixInit-2.10): Test correction for Mac OSX. + Be sure to consistently compare normalized path names. Thanks to + Steven Abner (tauvan). [Bug 948177] 2004-05-05 Donal K. Fellows - * doc/CrtObjCmd.3: Remove reference to Tcl_RenameCommand; there is - no such API. [Bug 848440] + * doc/CrtObjCmd.3: Remove reference to Tcl_RenameCommand; there is no + such API. [Bug 848440] -2004-05-04 Jeff Hobbs +2004-05-04 Jeff Hobbs * generic/tclIOUtil.c (Tcl_FSChdir): Work-around crash condition * tests/winFCmd.test (winFCmd-16.12): triggered when $HOME is volumerelative (ie 'C:'). - * tests/fileName.test (filename-12.9): use C:/ instead of the - first item in file volumes - that's usually A:/, which for most - will have nothing in it. + * tests/fileName.test (filename-12.9): use C:/ instead of the first + item in file volumes - that's usually A:/, which for most will have + nothing in it. -2004-05-04 Don Porter +2004-05-04 Don Porter - * tests/tcltest.test: Test corrections for Mac OSX. Thanks - to Steven Abner (tauvan). [Bug 947440] + * tests/tcltest.test: Test corrections for Mac OSX. Thanks to Steven + Abner (tauvan). [Bug 947440] 2004-05-03 Andreas Kupries - * Applied [SF Tcl Patch 868853], fixing a mem leak in - TtySetOptionProc. Report and Patch provided by Stuart - Cassoff . + Applied [SF Tcl Patch 868853], fixing a mem leak in TtySetOptionProc. + Report and Patch provided by Stuart Cassoff . -2004-05-03 Kevin Kenny +2004-05-03 Kevin Kenny * win/tclWin32Dll.c (TclpCheckStackSpace): - * tests/stack.test (stack-3.1): Fix for undetected stack - overflow in TclReExec on Windows. [Bug 947070] + * tests/stack.test (stack-3.1): Fix for undetected stack overflow in + TclReExec on Windows. [Bug 947070] -2004-05-03 Don Porter +2004-05-03 Don Porter * library/init.tcl: Corrected unique prefix matching of - interactive command completion in [unknown]. [Bug 946952] + interactive command completion in [unknown]. [Bug 946952] 2004-05-02 Miguel Sofer * generic/tclProc.c (TclObjInvokeProc): - * tests/proc.test (proc-3.6): fix for bad quoting of multi-word - proc names in error messages [Bug 942757] + * tests/proc.test (proc-3.6): fix for bad quoting of multi-word proc + names in error messages [Bug 942757] 2004-04-23 Andreas Kupries - * generic/tclIO.c (Tcl_SetChannelOption): Fixed [SF Tcl Bug - 930851]. When changing the eofchar we have to zap the related - flags to prevent them from prematurely aborting the next read. + * generic/tclIO.c (Tcl_SetChannelOption): Fixed [Bug 930851]. When + changing the eofchar we have to zap the related flags to prevent them + from prematurely aborting the next read. -2004-04-07 Jeff Hobbs +2004-04-07 Jeff Hobbs * win/configure: * win/configure.in: define TCL_LIB_FLAG, TCL_BUILD_LIB_SPEC, TCL_LIB_SPEC and TCL_PACKAGE_PATH in tclConfig.sh. -2004-04-06 Don Porter +2004-04-06 Don Porter * tests/unixInit.test (unixInit-3.1): Default encoding on Darwin - systems is utf-8. Thanks to Steven Abner (tauvan). [Bug 928808] + systems is utf-8. Thanks to Steven Abner (tauvan). [Bug 928808] 2004-04-06 Donal K. Fellows * tests/cmdAH.test (cmdAH-18.2): Added constraint because access(...,X_OK) is defined to be permitted to be meaningless when - running as root, and OSX exhibits this. [Bug 929892] + running as root, and OSX exhibits this. [Bug 929892] -2004-04-02 Don Porter +2004-04-02 Don Porter * tests/tcltest.test: Corrected constraint typos: "nonRoot" -> - "notRoot". Thanks to Steven Abner (tauvan). [Bug 928353] + "notRoot". Thanks to Steven Abner (tauvan). [Bug 928353] -2004-03-31 Don Porter +2004-03-31 Don Porter * doc/msgcat.n: Clarified message catalog file encodings. [Bug 811457] * library/msgcat/msgcat.tcl ([mcset], [ConvertLocale], [Init]): Corrected [mcset] to be able to successfully set a translation to - the empty string. [mcset $loc $src {}] was incorrectly set the - $loc translation of $src back to $src. Also changed [ConvertLocale] - to minimally require a non-empty "language" part in the locale value. - If not, an error raised prompts [Init] to keep looking for a valid - locale value, or ultimately fall back on the "C" locale. [Bug 811461]. + the empty string. [mcset $loc $src {}] was incorrectly set the $loc + translation of $src back to $src. Also changed [ConvertLocale] to + minimally require a non-empty "language" part in the locale value. If + not, an error raised prompts [Init] to keep looking for a valid locale + value, or ultimately fall back on the "C" locale. [Bug 811461] * library/msgcat/pkgIndex.tcl: Bump to msgcat 1.3.2. 2004-03-31 Donal K. Fellows @@ -3205,23 +3151,23 @@ * generic/tclObj.c (HashObjKey): Make sure this hashes the whole string rep of the object, instead of missing the last character. -2004-03-29 Jeff Hobbs +2004-03-29 Jeff Hobbs * generic/tclInt.h: * generic/tclEncoding.c (TclFindEncodings, Tcl_FindExecutable): * mac/tclMacInit.c (TclpInitLibraryPath): Correct handling of UTF * unix/tclUnixInit.c (TclpInitLibraryPath): data that is actually * win/tclWinFile.c (TclpFindExecutable): "clean", allowing the - * win/tclWinInit.c (TclpInitLibraryPath): loading of Tcl from - paths that contain multi-byte chars on Windows [Bug 920667] + * win/tclWinInit.c (TclpInitLibraryPath): loading of Tcl from paths + that contain multi-byte chars on Windows [Bug 920667] 2004-03-28 Miguel Sofer - * generic/tclCompile.c (TclCompileScript): corrected possible - segfault when a compilation returns TCL_OUTLINE_COMPILE after - having grown the compile environment [Bug 925121]. + * generic/tclCompile.c (TclCompileScript): corrected possible segfault + when a compilation returns TCL_OUTLINE_COMPILE after having grown the + compile environment. [Bug 925121] -2004-03-21 Jeff Hobbs +2004-03-21 Jeff Hobbs * win/tclWinInt.h: define VER_PLATFORM_WIN32_CE if not already set. * win/tclWinInit.c (TclpSetInitialEncodings): recognize WIN32_CE @@ -3230,38 +3176,37 @@ 2004-03-15 Miguel Sofer * generic/tclCompile.c (TclCompileScript): - * tests/compile.test (compile-3.5): corrected wrong test and - behaviour in the earlier fix for [Bug 705406]; Don Porter reported - this as [Bug 735055], and provided the solution. - Fixed in HEAD on 2003-05-09, but backport to 8-4-branch was - wrongly omitted; re-reported as [Bug 916795] by Roy Terry, - diagnosed by dgp. + * tests/compile.test (compile-3.5): corrected wrong test and behaviour + in the earlier fix for [Bug 705406]; Don Porter reported this as [Bug + 735055], and provided the solution. Fixed in HEAD on 2003-05-09, but + backport to 8-4-branch was wrongly omitted; re-reported as [Bug + 916795] by Roy Terry, diagnosed by dgp. 2004-03-08 Vince Darley * generic/tclFileName.c: Fix to 'glob -path' near the root * tests/fileName.test: of the filesystem. [Bug 910525] -2004-03-01 Don Porter +2004-03-01 Don Porter *** 8.4.6 TAGGED FOR RELEASE *** * unix/tcl.m4 (SC_CONFIG_CFLAGS): Allow 64-bit enabling on - IRIX64-6.5* systems. [Bug 218561] + IRIX64-6.5* systems. [Bug 218561] * unix/configure: autoconf-2.13 * generic/tclCmdMZ.c (TclCheckInterpTraces): The TIP 62 * generic/tclTest.c (TestcmdtraceCmd): implementation introduced a * tests/basic.test (basic-39.10): bug by testing the CallFrame level instead of the iPtr->numLevels level when deciding what traces - created by Tcl_Create(Obj)Trace to call. Added test to expose the - error, and made fix. [Request 462580] + created by Tcl_Create(Obj)Trace to call. Added test to expose the + error, and made fix. [Request 462580] 2004-02-26 Daniel Steffen * macosx/Makefile: fixed copyright year in Tcl.framework Info.plist -2004-02-25 Don Porter +2004-02-25 Don Porter * tests/basic.test: Made several tests more robust to the * tests/cmdMZ.test: list-quoting of path names that might @@ -3274,8 +3219,8 @@ 2004-02-25 Donal K. Fellows - * unix/tclUnixChan.c (TcpGetOptionProc): Stop memory leak with - very long hostnames. [Bug 888777] + * unix/tclUnixChan.c (TcpGetOptionProc): Stop memory leak with very + long hostnames. [Bug 888777] 2004-02-25 David Gravereaux @@ -3285,37 +3230,35 @@ 2004-02-19 Mo DeJong - * win/tclWinInit.c (AppendEnvironment): - Use the tail component of the passed in - lib path instead of just blindly using - lib+4. That worked when lib was "lib/..." - but fails for other values. Thanks go to + * win/tclWinInit.c (AppendEnvironment): Use the tail component of the + passed in lib path instead of just blindly using lib+4. That worked + when lib was "lib/..." but fails for other values. Thanks go to Patrick Samson for pointing this out. -2004-02-17 Don Porter +2004-02-17 Don Porter * doc/tcltest.n: * library/tcltest/tcltest.tcl: Changed -verbose default value to {body error} so that detailed information on unexpected errors in tests is provided by default, even after the fix for [Bug 725253] -2004-02-17 Jeff Hobbs +2004-02-17 Jeff Hobbs (reverted due to test failures on Solaris, but not Win/Lin :/) * generic/tclIOUtil.c: backport of rewrite of generic file - normalization code to cope with links followed by '..'. - [Bug 849514], and parts of [859251] + normalization code to cope with links followed by '..'. [Bug 849514], + and parts of [859251] * tests/unixInit.test: unixInit-7.1 - * unix/tclUnixInit.c (TclpInitPlatform): ensure the std fds exist - to prevent crash condition [Bug #772288] + * unix/tclUnixInit.c (TclpInitPlatform): ensure the std fds exist to + prevent crash condition [Bug 772288] -2004-02-16 Jeff Hobbs +2004-02-16 Jeff Hobbs * generic/tclCmdMZ.c (TclTraceExecutionObjCmd) (TclTraceCommandObjCmd): fix possible mem leak in trace info. -2004-02-12 Jeff Hobbs +2004-02-12 Jeff Hobbs * README: update patchlevel to 8.4.6 * generic/tcl.h: @@ -3325,16 +3268,16 @@ * unix/tcl.m4: update HP-11 build libs setup -2004-02-06 Don Porter +2004-02-06 Don Porter * doc/clock.n: Removed reference to non-existent [file ctime]. -2004-02-04 Don Porter +2004-02-04 Don Porter * library/tcltest/tcltest.tcl: Corrected references to non-existent $name variable in [cleanupTests]. [Bug 833637] -2004-02-03 Don Porter +2004-02-03 Don Porter * library/tcltest/tcltest.tcl: Corrected parsing of single command line argument (option with missing value) [Bug 833910] @@ -3342,10 +3285,10 @@ 2004-02-02 David Gravereaux - * generic/tclIO.c (Tcl_Ungets): fixes improper filling of the - channel buffer. [Bug 405995] + * generic/tclIO.c (Tcl_Ungets): fixes improper filling of the channel + buffer. [Bug 405995] -2004-01-13 Don Porter +2004-01-13 Don Porter * generic/tclFileName.c (Tcl_GlobObjCmd): Latest changes to management of the interp result by Tcl_GetIndexFromObj() exposed @@ -3359,27 +3302,27 @@ Create fresh objects instead of using the one currently in the interpreter, which isn't guaranteed to be fresh and unshared. The cost for the core will be minimal because of the object cache, and - this fixes [Bug 875395]. + this fixes. [Bug 875395] 2004-01-09 Vince Darley - * generic/tclIOUtil.c: fix to infinite loop in - TclFinalizeFilesystem [Bug 873311] + * generic/tclIOUtil.c: fix to infinite loop in TclFinalizeFilesystem. + [Bug 873311] 2003-12-17 Daniel Steffen - * generic/tclBinary.c (DeleteScanNumberCache): fixed crashing bug - when numeric scan-value cache contains NULL value. + * generic/tclBinary.c (DeleteScanNumberCache): fixed crashing bug when + numeric scan-value cache contains NULL value. 2003-12-17 Zoran Vasiljevic - * generic/tclIOUtil.c: fixed 2 memory (object) leaks. - This fixes Tcl Bug #839519. + * generic/tclIOUtil.c: fixed 2 memory (object) leaks. This fixes [Bug + 839519] 2003-12-12 Vince Darley - * generic/tclCmdAH.c: fix to normalization of non-existent user - name ('file normalize ~nobody') [Bug 858937] + * generic/tclCmdAH.c: fix to normalization of non-existent user name + ('file normalize ~nobody') [Bug 858937] 2003-12-09 Donal K. Fellows @@ -3387,7 +3330,7 @@ * tools/man2tcl.c: are known to cause problems with recent glibc. [Bug 852369] -2003-12-03 Don Porter +2003-12-03 Don Porter * generic/tcl.h: Bumped patch level to 8.4.5.1 to distinguish * unix/configure.in: CVS snapshots from 8.4.5 release. @@ -3402,13 +3345,13 @@ * generic/tclBinary.c (DeleteScanNumberCache, ScanNumber): Made the numeric scan-value cache have proper references to the objects within it so strange patterns of writes won't cause references to - freed objects. Thanks to Paul Obermeier for the report. [Bug 851747] + freed objects. Thanks to Paul Obermeier for the report. [Bug 851747] 2003-12-01 Miguel Sofer * doc/lset.n: fix typo [Bug 852224] -2003-11-21 Don Porter +2003-11-21 Don Porter *** 8.4.5 TAGGED FOR RELEASE *** @@ -3417,37 +3360,37 @@ 2003-11-20 Miguel Sofer - * generic/tclVar.c: fix flag bit collision between - LOOKUP_FOR_UPVAR and TCL_PARSE_PART1 (deprecated) [Bug 835020] + * generic/tclVar.c: fix flag bit collision between LOOKUP_FOR_UPVAR + and TCL_PARSE_PART1 (deprecated) [Bug 835020] 2003-11-20 Vince Darley * generic/tclIOUtil.c: - * tests/winFCmd.test: fix to [Bug 845778] - Infinite recursion - on [cd] (Windows only bug). + * tests/winFCmd.test: fix to [Bug 845778] - Infinite recursion on [cd] + (Windows only bug). -2003-11-18 Jeff Hobbs +2003-11-18 Jeff Hobbs * changes: updated for 8.4.5 release -2003-11-17 Don Porter +2003-11-17 Don Porter - * generic/regcomp.c: Backported regexp bug fixes and tests. Thanks + * generic/regcomp.c: Backported regexp bug fixes and tests. Thanks * generic/tclTest.c: to Pavel Goran and Vince Darley. * tests/reg.test: [Bugs 230589, 504785, 505048, 703709, 840258] -2003-11-12 Jeff Hobbs +2003-11-12 Jeff Hobbs * tests/cmdMZ.test (cmdMZ-1.4): change to nonPortable as more systems are using permissions caching, and this isn't really a Tcl controlled issue. -2003-11-11 Jeff Hobbs +2003-11-11 Jeff Hobbs * unix/configure: * unix/tcl.m4: improve AIX --enable-64bit handling -2003-11-10 Don Porter +2003-11-10 Don Porter * tests/unixInit.test (unixInit-2.10): re-enabled. * unix/tclUnixInit.c (TclpInitLibraryPath): Alternative fix @@ -3459,7 +3402,7 @@ * win/tclWinDde.c: on non-Windows platforms. Bumped to * win/tclWinReg.c: registry 1.1.3 and dde 1.2.2. -2003-11-06 Jeff Hobbs +2003-11-06 Jeff Hobbs * tests/unixInit.test (unixInit-2.10): mark as knownBug * generic/tclEncoding.c (TclFindEncodings): revert patch from @@ -3471,11 +3414,11 @@ * macosx/Makefile: optimized builds define NDEBUG to turn off ThreadAlloc range checking. -2003-11-05 Don Porter +2003-11-05 Don Porter * generic/tclEncoding.c (TclFindEncodings): Normalize the path of the executable before passing to TclpInitLibraryPath() to avoid - buggy handling of paths containing "..". [Bug 832657] + buggy handling of paths containing "..". [Bug 832657] * tests/unixInit.test (unixInit-2.10): New test for fixed bug. 2003-11-04 Daniel Steffen @@ -3485,90 +3428,90 @@ 2003-10-31 Vince Darley * generic/tclTest.c: fix test suite memory leak (backport error) - * unix/tclUnixFile.c: ensure translated path (required for - correct error messages) is freed in both code paths. + * unix/tclUnixFile.c: ensure translated path (required for correct + error messages) is freed in both code paths. 2003-10-23 Andreas Kupries * unix/tclUnixChan.c (Tcl_MakeFileChannel): Applied [Patch 813606] - fixing [Bug 813087]. Detection of sockets was off for Mac OS X - which implements pipes as local sockets. The new code ensures - that only IP sockets are detected as such. + fixing [Bug 813087]. Detection of sockets was off for Mac OS X which + implements pipes as local sockets. The new code ensures that only IP + sockets are detected as such. 2003-10-22 Andreas Kupries - * win/tclWinSock.c (TcpWatchProc): Watch for FD_CLOSE too when - asked for writable events by the generic layer. - (SocketEventProc): Generate a writable event too when a close is - detected. + * win/tclWinSock.c (TcpWatchProc): Watch for FD_CLOSE too when asked + for writable events by the generic layer. + (SocketEventProc): Generate a writable event too when a close is + detected. - Together the changes fix [Bug 599468]. + Together the changes fix [Bug 599468]. 2003-10-22 Andreas Kupries * generic/tclIOUtil.c (FsListMounts, FsAddMountsToGlobResult): New - functions. See below for context. - (Tcl_FSMatchInDirectory): Modified to call on the new functions - (above) to handle the mountpoints in the glob'bed directory - correctly. Part of the patch by Vincent Darley to solve the - [Bug 800106] for the 8.4.x series. + functions. See below for context. + (Tcl_FSMatchInDirectory): Modified to call on the new functions + (above) to handle the mountpoints in the glob'bed directory correctly. + Part of the patch by Vincent Darley to solve the [Bug 800106] for the + 8.4.x series. * generic/tcl.h (TCL_GLOB_TYPE_MOUNT): New definition. Part of the - patch by Vincent Darley to solve [Bug 800106] for the 8.4.x series. + patch by Vincent Darley to solve [Bug 800106] for the 8.4.x series. 2003-10-22 Donal K. Fellows - * generic/tclCmdAH.c (Tcl_FileObjCmd): Changed FILE_ prefix for - option enumeration to FCMD_ to prevent collision with symbols - defined by Cygwin/Mingw32 on NT. [Bug 822528] + * generic/tclCmdAH.c (Tcl_FileObjCmd): Changed FILE_ prefix for option + enumeration to FCMD_ to prevent collision with symbols defined by + Cygwin/Mingw32 on NT. [Bug 822528] 2003-10-21 Daniel Steffen - * tools/tcltk-man2html.tcl: fixed incorrect html generated for - .IP/.TP lists, now use
...
...

...
...
- instead of illegal

...
...

...
...
. - Added skipping of directives directly after .TP to avoid them - being used as item descriptions, e.g. .TP\n.VS in clock.n. + * tools/tcltk-man2html.tcl: fixed incorrect html generated for .IP/.TP + lists, now use
...
...

...
...
instead of + illegal

...
...

...
...
. Added skipping of + directives directly after .TP to avoid them being used as item + descriptions, e.g. .TP\n.VS in clock.n. 2003-10-21 Andreas Kupries - * win/tclWinPipe.c (BuildCommandLine): Applied the patch coming - with [Bug 805605] to the code, fixing the incorrect use of - ispace noted by Ronald Dauster . + * win/tclWinPipe.c (BuildCommandLine): Applied the patch coming with + [Bug 805605] to the code, fixing the incorrect use of ispace noted by + Ronald Dauster . 2003-10-14 David Gravereaux - * win/tclAppInit.c (sigHandler): Punt gracefully if exitToken - has already been destroyed. + * win/tclAppInit.c (sigHandler): Punt gracefully if exitToken has + already been destroyed. 2003-10-13 Vince Darley * generic/tclCmdMZ.c: - * tests/regexp.test: fix to [Bug 823524] in regsub; added three - new tests. + * tests/regexp.test: fix to [Bug 823524] in regsub; added three new + tests. -2003-10-12 Jeff Hobbs +2003-10-12 Jeff Hobbs * unix/tclUnixTest.c (TestalarmCmd): don't bother checking return - value of alarm. [Bug #664755] (english) + value of alarm. [Bug 664755] (english) -2003-10-08 Don Porter +2003-10-08 Don Porter * generic/tclBasic.c: Save and restore the iPtr->flag bits that control the state of errorCode and errorInfo management when calling "leave" execution traces, so that all error information of the traced - command is still available whether traced or not. [Bug 760947] - Thanks to Yahalom Emet. + command is still available whether traced or not. Thanks to Yahalom + Emet. [Bug 760947] 2003-10-08 Donal K. Fellows * generic/tclTest.c (TestNumUtfCharsCmd): Command to allow finer access to Tcl_NumUtfChars for testing. * generic/tclUtf.c (Tcl_NumUtfChars): Corrected string length - determining when the length parameter is negative; the terminator - is a zero byte, not (necessarily) a \u0000 character. [Bug 769812] + determining when the length parameter is negative; the terminator is a + zero byte, not (necessarily) a \u0000 character. [Bug 769812] -2003-10-07 Don Porter +2003-10-07 Don Porter * tests/exec.test: Corrected temporary file management * tests/fileSystem.test: issues uncovered by -debug 1 test @@ -3588,7 +3531,7 @@ * tests/io.test: Corrected several tests that failed when paths * tests/ioCmd.test: included regexp-special chars. [Bug 775394] -2003-10-06 Don Porter +2003-10-06 Don Porter * tests/regexp.test: Matched [makeFile] with [removeFile]. * tests/regexpComp.test: [Bug 675652] @@ -3604,7 +3547,7 @@ * tests/cmdMZ.test: Updated [package require tcltest] lines to * tests/fileSystem.test: indiciate that these test files - * tests/notify.test: use features of tcltest 2. [Bug 706114] + * tests/notify.test: use features of tcltest 2. [Bug 706114] * tests/parseExpr.test: * tests/unixNotfy.test: @@ -3621,20 +3564,20 @@ tclpipe.dll and the following arguments. It caused error in Windows 98 when exec command.com (e.g. dir) [Bug 789040] -2003-10-03 Don Porter +2003-10-03 Don Porter * generic/tclBasic.c: Fixed error in ref count management of command * generic/tclCmdMZ.c: and execution traces that caused access to - freed memory in trace-32.1. [Bug 811483]. + freed memory in trace-32.1. [Bug 811483] 2003-10-03 Vince Darley * tests/fileName.test: * tests/winFCmd.test: - * doc/FileSystem.3: backported various test and documentation - changes from HEAD. Backport of actual code fixes to follow. + * doc/FileSystem.3: backported various test and documentation changes + from HEAD. Backport of actual code fixes to follow. -2003-10-02 Don Porter +2003-10-02 Don Porter * README: Bumped patch level to 8.4.5 to prepare * generic/tcl.h: for next patch release. @@ -3655,14 +3598,14 @@ * macosx/Makefile: fixed redo prebinding bug when DESTDIR="". * mac/tclMacResource.c: fixed possible NULL dereference (bdesgraupes). -2003-09-29 Don Porter +2003-09-29 Don Porter * generic/tclBasic.c (CallCommandTraces): Added safety bit * tests/trace.test: masking to prevent any of the bit values - TCL_TRACE_*_EXEC from leaking into the flags field of any - Command struct. This does not fix [Bug 811483] but helps to - contain some of its worst symptoms. Also backported the corrections - to test trace-28.4 from Vince Darley. + TCL_TRACE_*_EXEC from leaking into the flags field of any Command + struct. This does not fix [Bug 811483] but helps to contain some of + its worst symptoms. Also backported the corrections to test trace-28.4 + from Vince Darley. 2003-09-29 Donal K. Fellows @@ -3675,16 +3618,15 @@ 2003-09-28 David Gravereaux * win/tclWinPipe.c: The windows port of expect can call - TclWinAddProcess before any of the other pipe functions. - Added a missing PipeInit() call to make sure the - initialization happens. + TclWinAddProcess before any of the other pipe functions. Added a + missing PipeInit() call to make sure the initialization happens. 2003-09-25 Daniel Steffen - * macosx/Makefile: ensure SYMROOT exists if OBJROOT is overridden - on command line. Replaced explict use of /usr/bin by ${BINDIR}. + * macosx/Makefile: ensure SYMROOT exists if OBJROOT is overridden on + command line. Replaced explict use of /usr/bin by ${BINDIR}. -2003-09-23 Don Porter +2003-09-23 Don Porter * generic/tclCmdMZ.c: Fixed [Bug 807243] where * tests/trace.test (trace-31,32.*): the introspection results @@ -3698,11 +3640,11 @@ 2003-09-19 Miguel Sofer - * generic/tclExecute.c: adding (DE)CACHE_STACK_INFO() pairs to - protect all calls that may cause traces on ::errorInfo or - ::errorCode to corrupt the stack [Bug 804681] + * generic/tclExecute.c: adding (DE)CACHE_STACK_INFO() pairs to protect + all calls that may cause traces on ::errorInfo or ::errorCode to + corrupt the stack [Bug 804681] -2003-09-10 Don Porter +2003-09-10 Don Porter * library/opt/optparse.tcl: Overlooked dependence of opt 0.4.4 * library/opt/pkgIndex.tcl: on Tcl 8.2. Bumped to opt 0.4.4.1. @@ -3711,33 +3653,32 @@ * generic/tclIOUtil.c: backported fix from HEAD [Bug 788780] -2003-08-27 Don Porter +2003-08-27 Don Porter * generic/tclUtil.c: Corrected [Bug 411825] and other bugs in TclNeedSpace() where non-breaking space (\u00A0) and backslash-escaped spaces were handled incorrectly. * tests/util.test: Added new tests util-8.[2-6]. -2003-08-06 Jeff Hobbs +2003-08-06 Jeff Hobbs * win/tclWinInit.c: recognize amd64 and ia32_on_win64 cpus and Windows CE platform. -2003-08-06 Don Porter +2003-08-06 Don Porter * library/msgcat/msgcat.tcl: Added escape so that non-Windows * library/msgcat/pkgIndex.tcl: platforms do not try to use the registry package. This can save a costly and pointless package - search. Bumped to 1.3.1. Thanks to Dave Bodenstab. [Bug 781609]. + search. Bumped to 1.3.1. Thanks to Dave Bodenstab. [Bug 781609] 2003-08-05 Miguel Sofer * generic/tclExecute.c (INST_INVOKE, INST_EVAL, INST_PUSH_RESULT): added a Tcl_ResetResult(interp) at each point where the interp's - result is pushed onto the stack, to avoid keeping an extra - reference that may cause costly Tcl_Obj duplication [Bug 781585] - Detected by Franco Violi, analyzed by Peter Spjuth and Donal - Fellows. + result is pushed onto the stack, to avoid keeping an extra reference + that may cause costly Tcl_Obj duplication. Detected by Franco Violi, + analyzed by Peter Spjuth and Donal Fellows. [Bug 781585] 2003-07-24 Reinhard Max @@ -3747,18 +3688,18 @@ 2003-07-23 Daniel Steffen - * unix/Makefile.in: changes to html-tcl & html-tk - targets for compatibility with non-gnu makes. + * unix/Makefile.in: changes to html-tcl & html-tk targets for + compatibility with non-gnu makes. * unix/Makefile.in: added macosx/README to dist target. -2003-07-23 Pat Thoyts +2003-07-23 Pat Thoyts - * win/tclWinReg.c (OpenSubKey): Backported fix for bug 775976 - which causes the registry set command to fail when built with VC7. + * win/tclWinReg.c (OpenSubKey): Backported fix for [Bug 775976] which + causes the registry set command to fail when built with VC7. * library/reg/pkgIndex.tcl: Incremented the version to 1.1.2. -2003-07-21 Jeff Hobbs +2003-07-21 Jeff Hobbs *** 8.4.4 TAGGED FOR RELEASE *** @@ -3766,15 +3707,15 @@ 2003-07-18 Daniel Steffen - * macosx/Makefile: added option to allow installing manpages - in addition to default html help. + * macosx/Makefile: added option to allow installing manpages in + addition to default html help. 2003-07-18 Donal K. Fellows - * doc/Utf.3: Tightened up documentation of Tcl_UtfNext and - Tcl_UtfPrev to better match the behaviour. [Bug 769895] + * doc/Utf.3: Tightened up documentation of Tcl_UtfNext and Tcl_UtfPrev + to better match the behaviour. [Bug 769895] -2003-07-18 Jeff Hobbs +2003-07-18 Jeff Hobbs * generic/tclIOUtil.c: correct MT-safety issues with filesystem records. [Bug 753315] (vasiljevic) @@ -3783,31 +3724,31 @@ * library/http/http.tcl: add support for user:pass info in URL. * tests/http.test: [Bug 759888] (shiobara) -2003-07-18 Don Porter +2003-07-18 Don Porter * generic/tclBasic.c: Corrected several instances of unsafe - * generic/tclCompile.c: truncation of UTF-8 strings that might - * generic/tclProc.c: break apart a multi-byte character. - * library/init.tcl: [Bug 760872] + * generic/tclCompile.c: truncation of UTF-8 strings that might break + * generic/tclProc.c: apart a multi-byte character. [Bug 760872] + * library/init.tcl: * tests/init.test: * doc/tcltest.n: Restored the [Eval] proc to replace * library/tcltest/tcltest.tcl: the [::puts] command when either the -output or -error option for [test] is in use, in order to capture data written to the output or error channels for comparison against - what is expected. This is easier to document and agrees better with + what is expected. This is easier to document and agrees better with most user expectations than the previous attempt to replace [puts] - only in the caller's namespace. Documentation made more precise on - the subject. [Bug 706359] - - * doc/AddErrInfo.3: Improved consistency of documentation - * doc/CrtTrace.3: by using "null" everywhere to refer to - * doc/Encoding.3: the character '\0', and using "NULL" - * doc/Eval.3: everywhere to refer to the value of a - * doc/GetIndex.3: pointer that points to nowhere. - * doc/Hash.3: Also dropped references to ASCII that - * doc/LinkVar.3: are no longer true, and standardized on - * doc/Macintosh.3: the hyphenated spelling of "null-terminated". + only in the caller's namespace. Documentation made more precise on the + subject. [Bug 706359] + + * doc/AddErrInfo.3: Improved consistency of documentation by using + * doc/CrtTrace.3: "null" everywhere to refer to the character + * doc/Encoding.3: '\0', and using "NULL" everywhere to refer to + * doc/Eval.3: the value of a pointer that points to nowhere. + * doc/GetIndex.3: Also dropped references to ASCII that are no + * doc/Hash.3: longer true, and standardized on the + * doc/LinkVar.3: hyphenated spelling of "null-terminated". + * doc/Macintosh.3: * doc/OpenFileChnl.3: * doc/SetVar.3: * doc/StringObj.3: @@ -3818,37 +3759,36 @@ 2003-07-17 Daniel Steffen - * macosx/Makefile: added var to allow overriding of tclsh used - during html help building (Landon Fuller). + * macosx/Makefile: added var to allow overriding of tclsh used during + html help building (Landon Fuller). -2003-07-16 Mumit Khan +2003-07-16 Mumit Khan - * generic/tclIOUtil.c (SetFsPathFromAny): Add Cygwin specific - code to convert POSIX filename to native format. + * generic/tclIOUtil.c (SetFsPathFromAny): Add Cygwin specific code to + convert POSIX filename to native format. * generic/tclFileName.c (Tcl_TranslateFileName): And remove from here. (TclDoGlob): Adjust for cygwin and append / for dirs instead of \ - * win/tclWinFile.c (TclpObjChdir): Use chdir on Cygwin. - [Patch 679315] + * win/tclWinFile.c (TclpObjChdir): Use chdir on Cygwin. [Patch 679315] -2003-07-16 Jeff Hobbs +2003-07-16 Jeff Hobbs * library/safe.tcl (FileInAccessPath): normalize paths before comparison. [Bug 759607] (myers) - * unix/tclUnixNotfy.c (NotifierThreadProc): correct size of found - and word vars from int to long. [Bug 767578] (hgo) + * unix/tclUnixNotfy.c (NotifierThreadProc): correct size of found and + word vars from int to long. [Bug 767578] (hgo) 2003-07-16 Donal K. Fellows * doc/CrtSlave.3 (Tcl_MakeSafe): Updated documentation to strongly - discourage use. IMHO code outside the core that uses this - function is a bug... [Bug 655300] + discourage use. IMHO code outside the core that uses this function is + a bug... [Bug 655300] -2003-07-16 Jeff Hobbs +2003-07-16 Jeff Hobbs - * generic/tcl.h: add recognition of -DTCL_UTF_MAX=6 on the - * generic/regcustom.h: make line to support UCS-4 mode. No config - arg at this time, as it is not the recommended build mode. + * generic/tcl.h: Add recognition of -DTCL_UTF_MAX=6 on the + * generic/regcustom.h: make line to support UCS-4 mode. No config arg + at this time, as it is not the recommended build mode. * generic/tclPreserve.c: In Result and Preserve'd routines, do not * generic/tclUtil.c: assume that ckfree == free, as that is not @@ -3856,22 +3796,17 @@ 2003-07-16 Mo DeJong - * win/Makefile.in: Don't define TCL_DBGX - symbol for every compile. Instead, define - TCL_PIPE_DLL only when compiling tclWinPipe.c. - This will break other build systems, so - they will need to remove the TCL_DBGX define - and replace it with a define for TCL_PIPE_DLL. + * win/Makefile.in: Don't define TCL_DBGX symbol for every compile. + Instead, define TCL_PIPE_DLL only when compiling tclWinPipe.c. This + will break other build systems, so they will need to remove the + TCL_DBGX define and replace it with a define for TCL_PIPE_DLL. * win/makefile.vc: Ditto. - * win/tclWinPipe.c (TclpCreateProcess): - Remove PREFIX_IDENT and DEBUG_IDENT from - top of file. Use TCL_PIPE_DLL passed in - from build env instead of trying to construct - the dll name from already defined symbols. - This approach is more flexible and better - in the long run. + * win/tclWinPipe.c (TclpCreateProcess): Remove PREFIX_IDENT and + DEBUG_IDENT from top of file. Use TCL_PIPE_DLL passed in from build + env instead of trying to construct the dll name from already defined + symbols. This approach is more flexible and better in the long run. -2003-07-16 Don Porter +2003-07-16 Don Porter * generic/tclFileName.c (Tcl_GlobObjCmd): [Bug 771840] * generic/tclIOUtil.c (Tcl_FSConvertToPathType):[Bug 771947] @@ -3879,26 +3814,26 @@ Silence compiler warnings about unreached lines. * library/tcltest/tcltest.tcl (ProcessFlags): Corrected broken call - * library/tcltest/pkgIndex.tcl: to [lrange]. Bumped - to version 2.2.4. [Bug 772333] + * library/tcltest/pkgIndex.tcl: to [lrange]. Bumped to + version 2.2.4. [Bug 772333] 2003-07-15 Mo DeJong - * unix/dltest/pkga.c (Pkga_EqObjCmd): Fix typo - that was causing a crash in load.test. + * unix/dltest/pkga.c (Pkga_EqObjCmd): Fix typo that was causing a + crash in load.test. 2003-07-15 Donal K. Fellows * doc/array.n: Added some examples from David Welton [Patch 763312] -2003-07-15 Don Porter +2003-07-15 Don Porter - * doc/http.n: Updated SYNOPSIS to match actual syntax of - commands. [Bug 756112] + * doc/http.n: Updated SYNOPSIS to match actual syntax of commands. + [Bug 756112] * unix/dltest/pkga.c: Updated to not use Tcl_UtfNcmp and counted - strings instead of strcmp (not defined in any #include'd header) - and presumed NULL-terminated strings. + strings instead of strcmp (not defined in any #include'd header) and + presumed NULL-terminated strings. * README: Bumped patch level to 8.4.4 in anticipation * generic/tcl.h: of another patch release. @@ -3912,7 +3847,7 @@ * win/configure: * generic/tclCompCmds.c (TclCompileIfCmd): Prior fix of Bug 711371 - on 2003-04-07 introduced a buffer overflow. Corrected. [Bug 771613] + on 2003-04-07 introduced a buffer overflow. Corrected. [Bug 771613] 2003-07-15 Donal K. Fellows @@ -3921,20 +3856,20 @@ 2003-07-15 Daniel Steffen - * macosx/Makefile: Rewrote buildsystem for Mac OS X framework build - to be purely make driven; in order to become independent of Apple's + * macosx/Makefile: Rewrote buildsystem for Mac OS X framework build to + be purely make driven; in order to become independent of Apple's closed-source IDE and build tool. The changes are intended to be - transparent to the Makefile user, all existing make targets and - cmd line variable overrides should continue to work. - Changed build to only include tcl specific html help in Tcl.framework, - the tk specific html help is now included in Tk.framework. + transparent to the Makefile user, all existing make targets and cmd + line variable overrides should continue to work. Changed build to only + include tcl specific html help in Tcl.framework, the tk specific html + help is now included in Tk.framework. * macosx/Tcl.pbproj/project.pbxproj: - * macosx/Tcl.pbproj/jingham.pbxuser: Changed to purely call through - to the make driven buildsystem; Tcl.framework is no longer assembled - by ProjectBuilder. - Set default SYMROOT in target options to simplify setting up PB - (manually setting common build folder for tcl & tk no longer needed). + * macosx/Tcl.pbproj/jingham.pbxuser: Changed to purely call through to + the make driven buildsystem; Tcl.framework is no longer assembled by + ProjectBuilder. Set default SYMROOT in target options to simplify + setting up PB (manually setting common build folder for tcl & tk no + longer needed). * tools/tcltk-man2html.tcl: Added options to allow building only the tcl or tk html help files; the default behaviour with none of the new @@ -3949,16 +3884,16 @@ 2003-07-11 Donal K. Fellows - * tests/binary.test (binary-46.*): Tests to help enforce the - current behaviour. + * tests/binary.test (binary-46.*): Tests to help enforce the current + behaviour. * doc/binary.n: Documented that [binary format a] and [binary scan a] do encoding conversion by dropping high bytes, unlike the rest of - the core. [Bug 735364] + the core. [Bug 735364] -2003-07-11 Don Porter +2003-07-11 Don Porter * library/package.tcl: Corrected [pkg_mkIndex] bug reported on - comp.lang.tcl. The indexer was searching for newly indexed packages + comp.lang.tcl. The indexer was searching for newly indexed packages instead of newly provided packages. 2003-07-04 Donal K. Fellows @@ -3971,10 +3906,9 @@ 2003-06-25 Mo DeJong * unix/configure: Regen. - * unix/tcl.m4 (SC_CONFIG_CFLAGS): Add -ieee when - compiling with cc and add -mieee when compiling - with gcc under OSF1-V5 "Tru64" systems. - [Bug 748957] + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Add -ieee when compiling with cc and + add -mieee when compiling with gcc under OSF1-V5 "Tru64" systems. [Bug + 748957] 2003-06-24 Donal K. Fellows @@ -3983,32 +3917,32 @@ 2003-06-23 Vince Darley - * generic/tclFCmd.c: fix to bad error message when trying to - do 'file copy foo ""'. [Bug 756951] + * generic/tclFCmd.c: fix to bad error message when trying to do 'file + copy foo ""'. [Bug 756951] * tests/fCmd.test: added two new tests for the bug. * doc/FileSystem.3: documentation fix [Bug 720634] 2003-06-18 Miguel Sofer - * generic/tclNamesp.c (Tcl_Export): removed erroneous comments - [Bug 756744] + * generic/tclNamesp.c (Tcl_Export): removed erroneous comments [Bug + 756744] 2003-06-17 Vince Darley * generic/tclCmdMZ.c: * tests/regexp.test: fixing of bugs related to regexp and regsub - matching of empty strings. Addition of a number of new tests. + matching of empty strings. Addition of a number of new tests. 2003-06-10 Miguel Sofer * generic/tclBasic.c: - * generic/tclExecute.c: let TclEvalObjvInternal call - TclInterpReady instead of relying on its callers to do so; fix for - the part of [Bug 495830] that is new in 8.4. + * generic/tclExecute.c: let TclEvalObjvInternal call TclInterpReady + instead of relying on its callers to do so; fix for the part of [Bug + 495830] that is new in 8.4. * tests/interp.test: Added tests 18.9 (knownbug) and 18.10 -2003-06-09 Don Porter +2003-06-09 Don Porter * tests/string.test (string-4.15): Added test for [string first] bug reported in Tcl 8.3, where test for all-single-byte-encoded strings @@ -4016,31 +3950,30 @@ 2003-06-04 Joe Mistachkin - * tools/man2help.tcl: Added duplicate help section checking - * tools/index.tcl: and corrected a comment typo for the - getTopics proc in index.tcl [Bug #748700]. + * tools/man2help.tcl: Added duplicate help section checking and + * tools/index.tcl: corrected a comment typo for the getTopics proc + in index.tcl. [Bug 748700] -2003-05-23 Don Porter +2003-05-23 Don Porter * generic/tclObj.c (tclCmdNameType): Converted internal rep - management of the cmdName Tcl_ObjType the opposite way, to always - use the twoPtrValue instead of always using the otherValuePtr. - Previous fix on 2003-05-12 broke several extensions that wanted - to poke around with the twoPtrValue.ptr2 value of a cmdName - Tcl_Obj, like TclBlend and e4graph. [Bug 726018] - Thanks to George Petasis for the bug report and Jacob Levy for - testing assistance. + management of the cmdName Tcl_ObjType the opposite way, to always use + the twoPtrValue instead of always using the otherValuePtr. Previous + fix on 2003-05-12 broke several extensions that wanted to poke around + with the twoPtrValue.ptr2 value of a cmdName Tcl_Obj, like TclBlend + and e4graph. [Bug 726018] Thanks to George Petasis for the bug report + and Jacob Levy for testing assistance. 2003-05-22 Daniel Steffen *** 8.4.3 TAGGED FOR RELEASE *** - * macosx/tclMacOSXBundle.c: fixed a problem that caused only the - first call to Tcl_MacOSXOpenVersionedBundleResources() for a given - bundle identifier to succeed. This caused the tcl runtime library - not to be found in all interps created after the inital one. + * macosx/tclMacOSXBundle.c: fixed a problem that caused only the first + call to Tcl_MacOSXOpenVersionedBundleResources() for a given bundle + identifier to succeed. This caused the tcl runtime library not to be + found in all interps created after the inital one. -2003-05-20 Jeff Hobbs +2003-05-20 Jeff Hobbs * changes: updated for 8.4.3 @@ -4049,19 +3982,19 @@ 2003-05-19 Daniel Steffen - * macosx/Tcl.pbproj/project.pbxproj: changed tclConfig.sh location - in versioned framework subdirectories to be identical to location - in framework toplevel; fixed stub library symbolic links to be - tcl version specific. + * macosx/Tcl.pbproj/project.pbxproj: changed tclConfig.sh location in + versioned framework subdirectories to be identical to location in + framework toplevel; fixed stub library symbolic links to be Tcl + version specific. 2003-05-16 Daniel Steffen * macosx/Tcl.pbproj/project.pbxproj: updated copyright year. -2003-05-15 Jeff Hobbs +2003-05-15 Jeff Hobbs - * win/tclWinFile.c (TclpMatchInDirectory): revert glob code to - r1.44 as 2003-04-14 optimizations broke Windows98 glob'ing. + * win/tclWinFile.c (TclpMatchInDirectory): revert glob code to r1.44 + as 2003-04-14 optimizations broke Windows98 glob'ing. * README: bumped version to 8.4.3 * generic/tcl.h: @@ -4077,41 +4010,40 @@ * doc/socket.n: nroff font handling correction. * library/encoding/gb2312-raw.enc (new): This is the original - gb2312.enc renamed to allow for it to still be used. This is - needed by Tk (unix) because X fonts with gb2312* charsets really - do want the original gb2312 encoding. [Bug 557030] + gb2312.enc renamed to allow for it to still be used. This is needed by + Tk (unix) because X fonts with gb2312* charsets really do want the + original gb2312 encoding. [Bug 557030] 2003-05-14 Donal K. Fellows * generic/tclCmdAH.c (Tcl_FormatObjCmd): Values which can't be - anything but wide shouldn't be demoted to long. [consequence of - HEAD fixes for Bug 699060] + anything but wide shouldn't be demoted to long. [consequence of HEAD + fixes for Bug 699060] -2003-05-14 Jeff Hobbs +2003-05-14 Jeff Hobbs * library/encoding/gb2312.enc: copy euc-cn.enc over original - gb2312.enc. gb2312.enc appeared to not work as expected, and most - uses of gb2312 really mean euc-cn (which may be the cause of the - problem). [Bug 557030] + gb2312.enc. gb2312.enc appeared to not work as expected, and most uses + of gb2312 really mean euc-cn (which may be the cause of the problem). + [Bug 557030] * generic/tclEnv.c (TclUnsetEnv): Another putenv() copy behavior problem repaired when compiling on windows and using microsoft's runtime. [Bug 736421] (gravereaux) -2003-05-13 Jeff Hobbs +2003-05-13 Jeff Hobbs - * generic/tclIOUtil.c: add decl for FsThrExitProc to suppress - warnings. + * generic/tclIOUtil.c: add decl for FsThrExitProc to suppress warnings 2003-05-13 Donal K. Fellows - * generic/tclEvent.c (Tcl_Finalize): Removed unused variable to - reduce compiler warnings. [Bug 664745] + * generic/tclEvent.c (Tcl_Finalize): Removed unused variable to reduce + compiler warnings. [Bug 664745] 2003-05-13 Joe Mistachkin - * generic/tcl.decls: Changed Tcl_JoinThread parameter name from - * generic/tclDecls.h: "id" to "threadId". [Bug 732477] + * generic/tcl.decls: Changed Tcl_JoinThread parameter name from "id" + * generic/tclDecls.h: to "threadId". [Bug 732477] * unix/tclUnixThrd.c: * win/tclWinThrd.c: * mac/tclMacThrd.c: @@ -4121,11 +4053,10 @@ * generic/tcl.decls: * macosx/tclMacOSXBundle.c: added extended version of the Tcl_MacOSXOpenBundleResources() API taking an extra version number - argument: Tcl_MacOSXOpenVersionedBundleResources(). - This is needed to be able to access bundle resources in versioned - frameworks such as Tcl and Tk, otherwise if multiple versions were - installed, only the latest version's resources could be accessed. - [Bug 736774] + argument: Tcl_MacOSXOpenVersionedBundleResources(). This is needed to + be able to access bundle resources in versioned frameworks such as Tcl + and Tk, otherwise if multiple versions were installed, only the latest + version's resources could be accessed. [Bug 736774] * unix/tclUnixInit.c (Tcl_MacOSXGetLibraryPath): use new versioned bundle resource API to get tcl runtime library for TCL_VERSION. @@ -4134,15 +4065,15 @@ * generic/tclPlatDecls.h: * generic/tclStubInit.c: regen. - * unix/tclUnixPort.h: worked around the issue of realpath() not - being thread-safe on Mac OS X by defining NO_REALPATH for threaded - builds on Mac OS X. [Bug 711232] + * unix/tclUnixPort.h: worked around the issue of realpath() not being + thread-safe on Mac OS X by defining NO_REALPATH for threaded builds on + Mac OS X. [Bug 711232] -2003-05-12 Don Porter +2003-05-12 Don Porter * generic/tclInterp.c: (AliasObjCmd): Added refCounting of the words * tests/interp.test (interp-33.1): of the target of an interp - alias during its execution. Also added test. [Bug 730244]. + alias during its execution. Also added test. [Bug 730244]. * generic/tclBasic.c (TclInvokeObjectCommand): objv[argc] is no longer set to NULL (Tcl_CreateObjCommand docs already say that it @@ -4150,7 +4081,7 @@ * generic/tclObj.c (tclCmdNameType): Corrected variable use of the otherValuePtr or the twoPtrValue.ptr1 fields to store a - (ResolvedCmdName *) as the internal rep. [Bug 726018]. + (ResolvedCmdName *) as the internal rep. [Bug 726018]. * doc/Eval.3: Corrected prototype for Tcl_GlobalEvalObj [Bug 727622]. @@ -4162,18 +4093,18 @@ 2003-05-10 Zoran Vasiljevic - * unix/tclUnixThrd.c: corrected Tcl Bug #723502 + * unix/tclUnixThrd.c: corrected [Bug 723502] -2003-05-10 Jeff Hobbs +2003-05-10 Jeff Hobbs * generic/tclIOUtil.c: ensure cd is thread-safe. - [Bug #710642] (vasiljevic) + [Bug 710642] (vasiljevic) - * win/tclWinSerial.c (SerialCloseProc): correct mem leak on - closing a Windows serial port [Bug #718002] (schroedter) + * win/tclWinSerial.c (SerialCloseProc): correct mem leak on closing a + Windows serial port [Bug 718002] (schroedter) - * generic/tclCmdMZ.c (Tcl_StringObjCmd): prevent string repeat - crash when overflow sizes were given (throws error). [Bug #714106] + * generic/tclCmdMZ.c (Tcl_StringObjCmd): prevent string repeat crash + when overflow sizes were given (throws error). [Bug 714106] 2003-05-09 Joe Mistachkin @@ -4188,54 +4119,52 @@ with the rest of the Tcl core [Bugs 733156, 733221]. * tools/encoding/txt2enc.c (main): Fixed memory leak caused by failing - to free the memory used by the toUnicode array of strings [Bug 733221]. + to free the memory used by the toUnicode array of strings [Bug 733221] -2003-05-05 Don Porter +2003-05-05 Don Porter * library/tcltest/tcltest.tcl: The -returnCodes option to [test] failed to recognize the symbolic name "ok" for return code 0. 2003-05-05 Donal K. Fellows - * generic/tclBasic.c (Tcl_HideCommand): Fixed error message - grammar and spelling. + * generic/tclBasic.c (Tcl_HideCommand): Fixed error message grammar + and spelling. 2003-04-29 Vince Darley - * generic/tclFileName.c: fix to bug reported privately by - Jeff where, for example, 'glob -path {[tcl]} *' gets confused - by the leading special character (which is escaped internally), - and instead lists files in '/'. Bug only occurs on Windows - where '\' is also a directory separator. (Bug has been around - at least since Tcl 8.3). + * generic/tclFileName.c: fix to bug reported privately by Jeff where, + for example, 'glob -path {[tcl]} *' gets confused by the leading + special character (which is escaped internally), and instead lists + files in '/'. Bug only occurs on Windows where '\' is also a + directory separator. (Bug has been around at least since Tcl 8.3.) * tests/fileName.test: added test for the above bug. -2003-04-25 Don Porter +2003-04-25 Don Porter * generic/tclBasic.c: Tcl_EvalObjv() failed to honor the - TCL_EVAL_GLOBAL flag when resolving command names. Tcl_EvalEx - passed a string rep including leading whitespace and comments - to TclEvalObjvInternal(). + TCL_EVAL_GLOBAL flag when resolving command names. Tcl_EvalEx passed a + string rep including leading whitespace and comments to + TclEvalObjvInternal(). 2003-04-25 Andreas Kupries - * win/tclWinThrd.c: Applied SF patch #727271. This patch changes - the code to catch any errors returned by the windows functions - handling TLS ASAP instead of waiting to get some mysterious - crash later on due to bogus pointers. Patch provided by Joe - Mistachkin. + * win/tclWinThrd.c: Applied [Patch 727271]. This patch changes the + code to catch any errors returned by the windows functions handling + TLS ASAP instead of waiting to get some mysterious crash later on due + to bogus pointers. Patch provided by Joe Mistachkin. - This is a stop-gap measure to deal with the low number of ?TLS - slots provided by some of the variants of Windows (60-80). + This is a stop-gap measure to deal with the low number of ?TLS slots + provided by some of the variants of Windows (60-80). -2003-04-21 Don Porter +2003-04-21 Don Porter * library/tcltest/tcltest.tcl: When the return code of a test does not meet expectations, report that as the reason for test failure, - and do not attempt to check the test result for correctness. - [Bug 725253] + and do not attempt to check the test result for correctness. [Bug + 725253] -2003-04-18 Jeff Hobbs +2003-04-18 Jeff Hobbs * generic/tclExecute.c (ExprCallMathFunc): remove incorrect extraneous cast from Tcl_WideAsDouble. @@ -4247,7 +4176,7 @@ channel to describe the channel's special config options. [Bug 679010] -2003-04-16 Don Porter +2003-04-16 Don Porter * generic/tcl.h Made changes so that the "wideInt" Tcl_ObjType * generic/tclObj.c is defined on all platforms, even those where @@ -4280,12 +4209,12 @@ * doc/CrtMathFnc.3: Functions also have to deal with wide ints, but this was not documented. [Bug 709720] -2003-04-15 Kevin Kenny +2003-04-15 Kevin Kenny * win/tclWinTime.c: Corrected use of types to make compilation compatible with VC++5. -2003-04-14 Kevin Kenny +2003-04-14 Kevin Kenny * win/tclWinFile.c: added conditionals to restore compilation on VC++6, which was broken by recent changes. @@ -4294,22 +4223,20 @@ Merged various bug fixes from current cvs head: - * tests/cmdAH.test: better fix to test suite problem - if /home is a symlink [Bug #703264] + * tests/cmdAH.test: better fix to test suite problem if /home is a + symlink [Bug 703264] - * generic/tclIOUtil.c: fix bad error message with 'cd ""' - [Bug #704917] + * generic/tclIOUtil.c: fix bad error message with 'cd ""' [Bug 704917] * win/tclWinFile.c: * win/tclWin32Dll.c: - * win/tclWinInt.h: allow Tcl to differentiate between reparse - points which are symlinks and mounted volumes, and correctly - handle the latter. This involves some elaborate code to find - the actual drive letter (if possible) corresponding to a mounted - volume. [Bug #697862] - * tests/fileSystem.test: add constraints to stop tests running - in ordinary tcl interpreter. [Bug #705675] - * generic/tclIOUtil.c: Some re-arrangement of code to bring it - closer to cvs head. No functional changes. + * win/tclWinInt.h: allow Tcl to differentiate between reparse points + which are symlinks and mounted volumes, and correctly handle the + latter. This involves some elaborate code to find the actual drive + letter (if possible) corresponding to a mounted volume. [Bug 697862] + * tests/fileSystem.test: add constraints to stop tests running in + ordinary tcl interpreter. [Bug 705675] + * generic/tclIOUtil.c: Some re-arrangement of code to bring it closer + to CVS HEAD. No functional changes. * tests/fCmd.test: * win/tclWinFile.c: added some filesystem optimisation to the @@ -4317,27 +4244,26 @@ * tests/winFile.test: * tests/ioUtil.test: - * tests/unixFCmd.test: renumbered tests with duplicate numbers. - (Bug #710361) + * tests/unixFCmd.test: renumbered tests with duplicate numbers. [Bug + 710361] -2003-04-12 Kevin Kenny +2003-04-12 Kevin Kenny - * tests/clock.test: Renumbered test cases to avoid - duplicates [Bug 710310]. + * tests/clock.test: Renumbered test cases to avoid duplicates [Bug + 710310]. * tests/winTime.test: * win/tclWinTest.c (TestwinclockCmd, TestwinsleepCmd): * win/tclWinTime.c (Tcl_WinTime, UpdateTimeEachSecond, - ResetCounterSamples, AccumulateSample, - SAMPLES, TimeInfo): Made substantial changes - to the phase-locked loop (replaced an IIR filter with an FIR one) - in a quest for improved loop stability (Bug not logged at SF, but - cited in private communication from Jeff Hobbs). + (ResetCounterSamples, AccumulateSample, SAMPLES, TimeInfo): Made + substantial changes to the phase-locked loop (replaced an IIR filter + with an FIR one) in a quest for improved loop stability (Bug not + logged at SF, but cited in private communication from Jeff Hobbs). -2003-04-11 Don Porter +2003-04-11 Don Porter * generic/tclCmdMZ.c (Tcl_StringObjCmd,STR_IS_INT): Corrected inconsistent results of [string is integer] observed on systems - where sizeof(long) != sizeof(int). [Bug 718878] + where sizeof(long) != sizeof(int). [Bug 718878] * tests/string.test: Added tests for Bug 718878. * doc/string.n: Clarified that [string is integer] accepts 32-bit integers. @@ -4345,10 +4271,10 @@ 2003-04-11 Andreas Kupries * generic/tclIO.c (UpdateInterest): When dropping interest in - TCL_READABLE now dropping interest in TCL_EXCEPTION too. This - fixes a bug where Expect detects eof on a file prematurely on - solaris 2.6 and higher. A much more complete explanation is in - the code itself (40 lines of comments for a one-line change :) + TCL_READABLE now dropping interest in TCL_EXCEPTION too. This fixes a + bug where Expect detects eof on a file prematurely on Solaris 2.6 and + higher. A much more complete explanation is in the code itself (40 + lines of comments for a one-line change :) 2003-04-10 Donal K. Fellows @@ -4356,12 +4282,12 @@ 2003-04-08 Donal K. Fellows - * generic/tclCmdAH.c (Tcl_ErrorObjCmd): Strings are only empty if - they have zero length, not if their first byte is zero, so fix - test guarding Tcl_AddObjErrorInfo to take this into account. [Bug - reported by Don Porter; no bug-id.] + * generic/tclCmdAH.c (Tcl_ErrorObjCmd): Strings are only empty if they + have zero length, not if their first byte is zero, so fix test + guarding Tcl_AddObjErrorInfo to take this into account. [Bug reported + by Don Porter; no bug-id.] -2003-04-07 Don Porter +2003-04-07 Don Porter * generic/tclCompCmds.c (TclCompileIfCmd): Corrected string limits of arguments interpolated in error messages. [Bug 711371] @@ -4373,25 +4299,23 @@ * generic/tclObj.c (tclWideIntType, TclInitObjSubsystem): (SetBooleanFromAny): Make sure that tclWideIntType is defined and - somewhat sensible everywhere. [Bug 713562] + somewhat sensible everywhere. [Bug 713562] 2003-04-02 Mo DeJong * win/configure: Regen. - * win/configure.in: Set stub lib flag based - on new LIBFLAGSUFFIX variable. - * win/tcl.m4 (SC_CONFIG_CFLAGS): Set new - LIBFLAGSUFFIX that works like LIBSUFFIX, - it is used when creating library names. - The previous implementation would generate - -ltclstub85 instead of -ltclstub85s when + * win/configure.in: Set stub lib flag based on new LIBFLAGSUFFIX + variable. + * win/tcl.m4 (SC_CONFIG_CFLAGS): Set new LIBFLAGSUFFIX that works like + LIBSUFFIX, it is used when creating library names. The previous + implementation would generate -ltclstub85 instead of -ltclstub85s when configured with --disable-shared. -2003-04-01 Don Porter +2003-04-01 Don Porter - * tests/README: Direct [source] of *.test files is no longer - recommended. The tests/*.test files should only be evaluated under - the control of the [runAllTests] command in tests/all.tcl. + * tests/README: Direct [source] of *.test files is no longer + recommended. The tests/*.test files should only be evaluated under the + control of the [runAllTests] command in tests/all.tcl. 2003-03-27 Miguel Sofer @@ -4417,60 +4341,58 @@ * tests/format.test: * tests/foreach.test: -2003-03-26 Don Porter +2003-03-26 Don Porter * doc/tcltest.n: - * library/tcltest/tcltest.tcl: Added reporting during - [configure -debug 1] operations to warn about multiple uses of - the same test name. [FR 576693] Replaced [regexp] and [regsub] - with [string map] where possible. Thanks to David Welton. - [Bugs 667456,667558] + * library/tcltest/tcltest.tcl: Added reporting during [configure + -debug 1] operations to warn about multiple uses of the same test + name. [FR 576693] Replaced [regexp] and [regsub] with [string map] + where possible. Thanks to David Welton. [Bugs 667456,667558] * library/tcltest/pkgIndex.tcl: Bumped to tcltest 2.2.3 * tests/msgcat.test (msgcat-2.2.1): changed test name to avoid - duplication. [Bug 710356] + duplication. [Bug 710356] - * unix/dltest/pkg?.c: Changed all Tcl_InitStubs calls to pass - argument exact = 0, so that rebuilds are not required when Tcl - bumps to a new version. [Bug 701926] + * unix/dltest/pkg?.c: Changed all Tcl_InitStubs calls to pass argument + exact = 0, so that rebuilds are not required when Tcl bumps to a new + version. [Bug 701926] 2003-03-24 Miguel Sofer * generic/tclVar.c: * tests/var.test: fixing ObjMakeUpvar's lookup algorithm for the - created local variable, bugs #631741 (Chris Darroch) and #696893 + created local variable, [Bugs 631741] (Chris Darroch) and [696893] (David Hilker). -2003-03-22 Kevin Kenny +2003-03-22 Kevin Kenny * library/dde/pkgIndex.tcl: - * library/reg/pkgIndex.tcl: Fixed a bug where [package require dde] - or [package require registry] attempted to load the release version - of the DLL into a debug build. [Bug 708218] Thanks to Joe Mistachkin - for the patch. - * win/makefile.vc: Added quoting around the script name in the - 'test' target; Joe Mistachkin insists that he has a configuration - that fails to launch tcltest without it, and it appears harmless - otherwise. + * library/reg/pkgIndex.tcl: Fixed a bug where [package require dde] or + [package require registry] attempted to load the release version of + the DLL into a debug build. [Bug 708218] Thanks to Joe Mistachkin for + the patch. + * win/makefile.vc: Added quoting around the script name in the 'test' + target; Joe Mistachkin insists that he has a configuration that fails + to launch tcltest without it, and it appears harmless otherwise. -2003-03-20 Don Porter +2003-03-20 Don Porter * generic/tclInt.h (tclOriginalNotifier): * generic/tclStubInit.c (tclOriginalNotifier): * mac/tclMacNotify.c (Tcl_SetTimer,Tcl_WaitForEvent): * unix/tclUnixNotfy.c (Tcl_SetTimer,Tcl_WaitForEvent, - Tcl_CreateFileHandler,Tcl_DeleteFileHandler): - * win/tclWinNotify.c (Tcl_SetTimer,Tcl_WaitForEvent): Some linkers + (Tcl_CreateFileHandler,Tcl_DeleteFileHandler): + * win/tclWinNotify.c (Tcl_SetTimer,Tcl_WaitForEvent): Some linkers apparently use a different representation for a pointer to a function within the same compilation unit and a pointer to a function in a - different compilation unit. This causes checks like those in the - original notifier procedures to fall into infinite loops. The fix - is to store pointers to the original notifier procedures in a struct + different compilation unit. This causes checks like those in the + original notifier procedures to fall into infinite loops. The fix is + to store pointers to the original notifier procedures in a struct defined in the same compilation unit as the stubs tables, and compare - against those values. [Bug 707174] + against those values. [Bug 707174] - * generic/tclInt.h: Removed definition of ParseValue struct that - is no longer used. + * generic/tclInt.h: Removed definition of ParseValue struct that is no + longer used. 2003-03-19 Miguel Sofer @@ -4478,60 +4400,59 @@ * tests/compile.test: bad command count on TCL_OUT_LINE_COMPILE [Bug 705406] (Don Porter). -2003-03-19 Don Porter +2003-03-19 Don Porter * doc/Eval.3 (Tcl_EvalObjEx): Corrected CONST and - * doc/ParseCmd.3 (Tcl_EvalTokensStandard): return type errors - in documentation. [Bug 683994] + * doc/ParseCmd.3 (Tcl_EvalTokensStandard): return type errors in + documentation. [Bug 683994] -2003-03-18 Kevin Kenny +2003-03-18 Kevin Kenny - * tests/registry.test: Changed the conditionals to avoid an - abort if [testlocale] is missing, as when running the test in - tclsh rather than tcltest. [Bug #705677] + * tests/registry.test: Changed the conditionals to avoid an abort if + [testlocale] is missing, as when running the test in tclsh rather than + tcltest. [Bug 705677] 2003-03-18 Daniel Steffen * tools/tcltk-man2html.tcl: added support for building 'make html' - from inside distribution directories named with 8.x.x version - numbers. tcltk-man2html now uses the latest tcl8.x.x resp. tk8.x.x - directories found inside its --srcdir argument. + from inside distribution directories named with 8.x.x version numbers. + tcltk-man2html now uses the latest tcl8.x.x resp. tk8.x.x directories + found inside its --srcdir argument. 2003-03-18 Vince Darley * tests/cmdAH.test: fix test suite problem if /home is a symlink * generic/tclIOUtil.c: fix bad error message with 'cd ""' - * win/tclWinFile.c: allow Tcl to differentiate between reparse - points which are symlinks and mounted drives. + * win/tclWinFile.c: allow Tcl to differentiate between reparse points + which are symlinks and mounted drives. - These changes fix [Bug #703264], [Bug #704917], [Bug #697862] - respectively. + These changes fix [Bugs 703264, 704917, 697862] respectively. 2003-03-17 Donal K. Fellows * doc/lsearch.n: Altered documentation of -ascii options so * doc/lsort.n: they don't specify that they operate on ASCII strings, which they never did - anyway. [Bug #703807] + anyway. [Bug 703807] 2003-03-14 Donal K. Fellows * generic/tclCmdAH.c (Tcl_FileObjCmd): Remove assumption that file - times and longs are the same size. [Bug #698146] + times and longs are the same size. [Bug 698146] (Tcl_FormatObjCmd): Stop surprising type conversions from - happening when working with integer and wide values. [Bug #699060] + happening when working with integer and wide values. [Bug 699060] - * generic/tclCmdAH.c (Tcl_FormatObjCmd): Only add the modifier - that indicates we've got a wide int when we're formatting in an - integer style. Stops some libc's from going mad. [Bug #702622] + * generic/tclCmdAH.c (Tcl_FormatObjCmd): Only add the modifier that + indicates we've got a wide int when we're formatting in an integer + style. Stops some libc's from going mad. [Bug 702622] Also tidied whitespace. -2003-03-13 Kevin Kenny +2003-03-13 Kevin Kenny - * win/makefile.vc: Backed the version to 8.4 on the 8.4 branch. - (I just loathe sticky tags). + * win/makefile.vc: Backed the version to 8.4 on the 8.4 branch. (I + just loathe sticky tags). -2003-03-12 Don Porter +2003-03-12 Don Porter * generic/tcl.h: Removed TCL_PREFIX_IDENT and TCL_DEBUG_IDENT * win/tclWinPipe.c: from tcl.h -- they are not part of Tcl's @@ -4539,30 +4460,30 @@ * generic/tclCmdMZ.c (Tcl_SubstObj): Corrected and added test for * tests/subst.test (subst-2.4): Tcl_SubstObj's incorrect - halting of substitution at the first \x00 byte. [Bug 685106] + halting of substitution at the first \x00 byte. [Bug 685106] * generic/tclInterp.c (Tcl_InterpObjCmd): Corrected and added * tests/interp.test (interp-2.13): test for option parsing beyond objc for [interp create --]. Thanks to Marco Maggi. [Bug 702383] -2003-03-11 Kevin Kenny +2003-03-11 Kevin Kenny * win/makefile.vc: Added two missing uses of $(DBGX) so that tclpip8x.dll loads without panicking on Win9x. -2003-03-08 Don Porter +2003-03-08 Don Porter * doc/tcltest.n: Added missing "-body" to example. Thanks to - Helmut Giese. [Bug 700011] + Helmut Giese. [Bug 700011] -2003-03-06 Don Porter +2003-03-06 Don Porter * generic/TclUtf.c (Tcl_UniCharNcasecmp): Corrected failure to * tests/utf.test (utf-25.*): properly compare Unicode strings of - different case in a case insensitive manner. [Bug 699042] + different case in a case insensitive manner. [Bug 699042] -2003-03-03 Jeff Hobbs +2003-03-03 Jeff Hobbs *** 8.4.2 TAGGED FOR RELEASE *** @@ -4580,11 +4501,11 @@ * mac/tclMacUtil.c (FSpLocationFromPathAlias): fix to enable stat'ing of broken links. -2003-03-03 Kevin Kenny +2003-03-03 Kevin Kenny * win/Makefile.vc: corrected bug introduced by 'g' for debug builds. -2003-03-03 Don Porter +2003-03-03 Don Porter * library/dde/pkgIndex.tcl: dde bumped to version 1.2.1 for * win/tclWinDde.c: bundled release with Tcl 8.4.2 @@ -4594,18 +4515,18 @@ * library/opt/pkgIndex.tcl: updated package index to version 0.4.4 -2003-02-28 Jeff Hobbs +2003-02-28 Jeff Hobbs * win/configure: * win/configure.in: check for 'g' for debug build type, not 'd'. * win/rules.vc (DBGX): correct to use 'g' for nmake win makefile - to match the cygwin makefile for debug builds. [Bug #635107] + to match the cygwin makefile for debug builds. [Bug 635107] 2003-02-28 Vince Darley * doc/file.n: subcommand is 'file volumes' not 'file volume' -2003-02-27 Jeff Hobbs +2003-02-27 Jeff Hobbs * generic/tclIOUtil.c (MakeFsPathFromRelative): removed dead code check of typePtr (darley). @@ -4616,8 +4537,8 @@ 2003-02-27 Donal K. Fellows * tests/lsearch.test (lsearch-10.7): - * generic/tclCmdIL.c (Tcl_LsearchObjCmd): Stopped -start option - from causing an option when used with an empty list. [Bug #694232] + * generic/tclCmdIL.c (Tcl_LsearchObjCmd): Stopped -start option from + causing an option when used with an empty list. [Bug 694232] 2003-02-26 Chengye Mao @@ -4626,12 +4547,12 @@ Don't know if this bug has been recorded: it caused crash in starting Tcl or wish in Windows. -2003-02-26 Jeff Hobbs +2003-02-26 Jeff Hobbs * generic/tclCmdMZ.c (TraceCommandProc): Fix mem leak when - deleting a command that had trace on it. [Bug #693564] (sofer) + deleting a command that had trace on it. [Bug 693564] (sofer) -2003-02-25 Don Porter +2003-02-25 Don Porter * doc/pkgMkIndex.n: Modified [pkg_mkIndex] to use -nocase matching * library/package.tcl: of -load patterns, to better accomodate @@ -4640,50 +4561,49 @@ 2003-02-25 Andreas Kupries - * tests/pid.test: See below [Bug #678412]. - * tests/io.test: Made more robust against spaces in paths - [Bug #678400]. + * tests/pid.test: See below [Bug 678412]. + * tests/io.test: Made more robust against spaces in paths [Bug 678400] 2003-02-25 Miguel Sofer - * tests/execute.test: cleaning up testobj's at the end, to avoid - leak warning by valgrind. + * tests/execute.test: cleaning up testobj's at the end, to avoid leak + warning by valgrind. 2003-02-22 Zoran Vasiljevic - * generic/tclEvent.c (Tcl_FinalizeThread): Fix [Bug #571002] + * generic/tclEvent.c (Tcl_FinalizeThread): Fix [Bug 571002] 2003-02-21 Donal K. Fellows * tests/binary.test (binary-44.[34]): * generic/tclBinary.c (ScanNumber): Fixed problem with unwanted - sign-bit propagation when scanning wide ints. [Bug #690774] + sign-bit propagation when scanning wide ints. [Bug 690774] 2003-02-21 Daniel Steffen * mac/tclMacChan.c (TclpCutFileChannel, TclpSpliceFileChannel): Implemented missing cut and splice procs for file channels. -2003-02-21 Don Porter +2003-02-21 Don Porter - * library/package.tcl (tclPkgUnknown): Minor performance tweaks - to reduce the number of [file] invocations. Meant to improve - startup times, at least a little bit. [Patch 687906] + * library/package.tcl (tclPkgUnknown): Minor performance tweaks to + reduce the number of [file] invocations. Meant to improve startup + times, at least a little bit. [Patch 687906] 2003-02-20 Daniel Steffen * unix/tcl.m4: - * unix/tclUnixPipe.c: (macosx) use vfork() instead of fork() to - create new processes, as recommended by Apple (vfork can be up to - 100 times faster thank fork on macosx). + * unix/tclUnixPipe.c: (macosx) use vfork() instead of fork() to create + new processes, as recommended by Apple (vfork can be up to 100 times + faster thank fork on macosx). * unix/configure: regen. -2003-02-20 Jeff Hobbs +2003-02-20 Jeff Hobbs * generic/tclEncoding.c (LoadTableEncoding): * library/encoding/cp932.enc: Correct jis round-trip encoding * library/encoding/euc-jp.enc: by adding 'R' type to .enc files. - * library/encoding/iso2022-jp.enc: [Patch #689341] (koboyasi, taguchi) + * library/encoding/iso2022-jp.enc: [Patch 689341] (koboyasi, taguchi) * library/encoding/jis0208.enc: * library/encoding/shiftjis.enc: * tests/encoding.test: @@ -4691,13 +4611,13 @@ * unix/tclUnixChan.c (Tcl_MakeTcpClientChannel): add MakeTcpClientChannelMode that takes actual mode flags to avoid hang on OS X (may be OS X bug, but patch works x-plat). - [Bug #689835] (steffen) + [Bug 689835] (steffen) 2003-02-20 Donal K. Fellows - * doc/regsub.n: Typo fix [Bug #688943] + * doc/regsub.n: Typo fix [Bug 688943] -2003-02-19 Jeff Hobbs +2003-02-19 Jeff Hobbs * unix/tclUnixThrd.c (TclpReaddir): * unix/tclUnixPort.h: update to Bug 689100 patch to ensure that @@ -4706,68 +4626,67 @@ 2003-02-19 Daniel Steffen - * generic/tclStringObj.c: restored Tcl_SetObjLength() side-effect - of always invalidating unicode rep (if the obj has a string rep). - Added hasUnicode flag to String struct, allows decoupling of - validity of unicode rep from buffer size allocated to it (improves - memory allocation efficiency). [Bugs #686782, #671138, #635200] + * generic/tclStringObj.c: restored Tcl_SetObjLength() side-effect of + always invalidating unicode rep (if the obj has a string rep). Added + hasUnicode flag to String struct, allows decoupling of validity of + unicode rep from buffer size allocated to it (improves memory + allocation efficiency). [Bugs 686782, 671138, 635200] * macosx/Tcl.pbproj/project.pbxproj: * macosx/Makefile: reworked embedded build to no longer require relinking but to use install_name_tool instead to change the - install_names for embedded frameworks. [Bug #644510] + install_names for embedded frameworks. [Bug 644510] - * macosx/Tcl.pbproj/project.pbxproj: preserve mod dates when - running 'make install' to build framework (avoids bogus rebuilds - of dependent frameworks because tcl headers appear changed). + * macosx/Tcl.pbproj/project.pbxproj: preserve mod dates when running + 'make install' to build framework (avoids bogus rebuilds of dependent + frameworks because tcl headers appear changed). - * tests/ioCmd.test (iocmd-1.8): fix failure when system encoding - is utf-8: use iso8859-1 encoding explicitly. + * tests/ioCmd.test (iocmd-1.8): fix failure when system encoding is + utf-8: use iso8859-1 encoding explicitly. 2003-02-18 Miguel Sofer - * generic/tclCompile.c (TclCompileExprWords): remove unused - variable "range" [Bug 664743] - * generic/tclExecute.c (ExprSrandFunc): remove unused - variable "result" [Bug 664743] + * generic/tclCompile.c (TclCompileExprWords): remove unused variable + "range" [Bug 664743] + * generic/tclExecute.c (ExprSrandFunc): remove unused variable + "result" [Bug 664743] * generic/tclStringObj.c (UpdateStringOfString): remove unused variable "length" [Bug 664751] * tests/execute.test (execute-7.30): fix for [Bug 664775] 2003-02-18 Andreas Kupries - * unix/tcl.m4: [Bug #651811] Added definition of _XOPEN_SOURCE and - linkage of 'xnet' library to HP 11 branch. This kills a lot of - socket-related failures in the testsuite when Tcl was compiled - in 64 bit mode (both PA-RISC 2.0W, and IA 64). + * unix/tcl.m4: [Bug 651811] Added definition of _XOPEN_SOURCE and + linkage of 'xnet' library to HP 11 branch. This kills a lot of + socket-related failures in the testsuite when Tcl was compiled in 64 + bit mode (both PA-RISC 2.0W, and IA 64). * unix/configure: Regenerated. -2003-02-18 Jeff Hobbs +2003-02-18 Jeff Hobbs * generic/tclIO.c (HaveVersion): correctly decl static * unix/tclUnixThrd.c (TclpReaddir): reduce size of name string in - tsd to NAME_MAX instead of PATH_MAX. [Bug #689100] (waters) + tsd to NAME_MAX instead of PATH_MAX. [Bug 689100] (waters) 2003-02-18 Mo DeJong * unix/configure: Regen. - * unix/tcl.m4 (SC_ENABLE_THREADS): Make sure - -lpthread gets passed on the link line when - checking for the pthread_attr_setstacksize symbol. + * unix/tcl.m4 (SC_ENABLE_THREADS): Make sure -lpthread gets passed on + the link line when checking for the pthread_attr_setstacksize symbol. 2003-02-18 Vince Darley - * generic/tclTest.c: cleanup of new 'simplefs' test code, and - better documentation. + * generic/tclTest.c: cleanup of new 'simplefs' test code, and better + documentation. 2003-02-17 Miguel Sofer * generic/tclBasic.c (TclRenameCommand): fixing error in previous commit. -2003-02-17 Jeff Hobbs +2003-02-17 Jeff Hobbs * generic/tclExecute.c (TclExecuteByteCode INST_STR_MATCH): * generic/tclCmdMZ.c (Tcl_StringObjCmd STR_MATCH): @@ -4782,18 +4701,16 @@ 2003-02-17 Miguel Sofer - * generic/tclBasic.c (TclRenameCommand): 'oldFullName' object was - not being freed on all function exits, causing a memory leak - [Bug 684756] + * generic/tclBasic.c (TclRenameCommand): 'oldFullName' object was not + being freed on all function exits, causing a memory leak. [Bug 684756] 2003-02-17 Mo DeJong - * generic/tclIO.c (Tcl_GetsObj): Minor change - so that eol is only assigned at the top of the - TCL_TRANSLATE_AUTO case block. The other cases - assign eol so this does not change any functionality. + * generic/tclIO.c (Tcl_GetsObj): Minor change so that eol is only + assigned at the top of the TCL_TRANSLATE_AUTO case block. The other + cases assign eol so this does not change any functionality. -2003-02-17 Kevin Kenny +2003-02-17 Kevin Kenny * tests/notify.test: Removed Windows line terminators. [Bug 687913]. @@ -4812,11 +4729,11 @@ * tests/subst.test (8.6): Don Porter's fix for bad parsing of nested scripts [Bug 681841]. -2003-02-15 Kevin Kenny +2003-02-15 Kevin Kenny * tests/notify.test (new-file): * generic/tclTest.c (TclTest_Init, EventtestObjCmd, EventtestProc, - EventTestDeleteProc): + (EventTestDeleteProc): * generic/tclNotify.c (Tcl_DeleteEvents): Fixed Tcl_DeleteEvents not to get a pointer smash when deleting the last event in the queue. Added test code in 'tcltest' and a new file of test cases @@ -4827,7 +4744,7 @@ * unix/tclUnixTest.c (TestfilehandlerCmd): Corrected a couple of typos in error messages. [Bug 596027] -2003-02-14 Jeff Hobbs +2003-02-14 Jeff Hobbs * README: Bumped to version 8.4.2. * generic/tcl.h: @@ -4845,44 +4762,43 @@ * unix/tcl.m4: correct HP-UX ia64 --enable-64bit build flags -2003-02-14 Kevin Kenny +2003-02-14 Kevin Kenny + + * win/tclWinTime.c: Added code to test and compensate for forward + leaps of the performance counter. See the MSDN Knowledge Base article + Q274323 for the hardware problem that makes this necessary on certain + machines. + * tests/winTime.test: Revised winTime-2.1 - it had a tolerance of + thousands of seconds, rather than milliseconds. (What's six orders of + magnitude among friends? - * win/tclWinTime.c: Added code to test and compensate for - forward leaps of the performance counter. See the MSDN Knowledge - Base article Q274323 for the hardware problem that makes this - necessary on certain machines. - * tests/winTime.test: Revised winTime-2.1 - it had a tolerance - of thousands of seconds, rather than milliseconds. (What's six - orders of magnitude among friends? Both the above changes are triggered by a problem reported at http://aspn.activestate.com/ASPN/Mail/Message/ActiveTcl/1536811 - although the developers find it difficult to believe that it - accounts for the observed behavior and suspect a fault in the - RTC chip. + although the developers find it difficult to believe that it accounts + for the observed behavior and suspect a fault in the RTC chip. -2003-02-13 Kevin Kenny +2003-02-13 Kevin Kenny - * win/tclWinInit.c: Added conversion from the system encoding - to tcl_platform(user), so that it works with non-ASCII7 user names. - [Bug 685926] + * win/tclWinInit.c: Added conversion from the system encoding to + tcl_platform(user), so that it works with non-ASCII7 user names. [Bug + 685926] * doc/tclsh.1: Added language to describe the handling of the - end-of-file character \u001a embedded in a script file. - [Bug 685485] + end-of-file character \u001a embedded in a script file. [Bug 685485] 2003-02-11 Vince Darley * tests/fileName.test: - * unix/tclUnixFile.c: fix for [Bug 685445] when using 'glob -l' - on broken symbolic links. Added two new tests for this bug. + * unix/tclUnixFile.c: fix for [Bug 685445] when using 'glob -l' on + broken symbolic links. Added two new tests for this bug. -2003-02-11 Kevin Kenny +2003-02-11 Kevin Kenny - * tests/http.test: Corrected a problem where http-4.14 would fail - when run in an environment with a proxy server. Replaced references - to scriptics.com by tcl.tk. + * tests/http.test: Corrected a problem where http-4.14 would fail when + run in an environment with a proxy server. Replaced references to + scriptics.com by tcl.tk. -2003-02-11 Jeff Hobbs +2003-02-11 Jeff Hobbs * tests/lsearch.test: * generic/tclCmdIL.c (Tcl_LsearchObjCmd): protect against the case @@ -4890,7 +4806,7 @@ * tests/stringObj.test: * generic/tclStringObj.c (Tcl_GetCharLength): correct ascii char - opt of 2002-11-11 to not stop early on \x00. [Bug #684699] + opt of 2002-11-11 to not stop early on \x00. [Bug 684699] * tests.parse.test: remove excess EOF whitespace @@ -4902,7 +4818,7 @@ * generic/tclParse.c (CommandComplete): * tests/parse.test: fix for [Bug 684744], by Don Porter. -2003-02-11 Jeff Hobbs +2003-02-11 Jeff Hobbs * generic/tclIOUtil.c (Tcl_FSJoinPath, Tcl_FSGetNormalizedPath): (UpdateStringOfFsPath): revert the cwdLen == 0 check and instead @@ -4921,15 +4837,12 @@ 2003-02-10 Mo DeJong * win/configure: - * win/configure.in: Generate error when attempting - to build under Cygwin. The Cygwin port of Tcl/Tk - does not build and people are filing bug reports - under the mistaken impression that someone is - actually maintaining the Cygwin port. A post to - comp.lang.tcl asking someone to volunteer as an - area maintainer has generated no results. - Closing bugs 680840, 630199, and 634772 and - marking as "Won't fix". + * win/configure.in: Generate error when attempting to build under + Cygwin. The Cygwin port of Tcl/Tk does not build and people are filing + bug reports under the mistaken impression that someone is actually + maintaining the Cygwin port. A post to comp.lang.tcl asking someone to + volunteer as an area maintainer has generated no results. Closing + [Bugs 680840, 630199, 634772] and marking as "Won't fix". 2003-02-10 Donal K. Fellows @@ -4944,79 +4857,72 @@ * unix/tclUnixFCmd.c: * unix/tclUnixFile.c: * win/tclWinFile.c: further filesystem optimization, applying - [Patch 682500]. In particular, these code examples are - faster now: - foreach f $flist { if {[file exists $f]} {file stat $f arr;...}} - foreach f [glob -dir $dir *] { # action and/or recursion on $f } - cd $dir - foreach f [glob *] { # action and/or recursion on $f } - cd .. + [Patch 682500]. In particular, these code examples are faster now: + foreach f $flist { if {[file exists $f]} {file stat $f arr;...}} + foreach f [glob -dir $dir *] { # action and/or recursion on $f } + cd $dir + foreach f [glob *] { # action and/or recursion on $f } + cd .. - * generic/tclTest.c: Fix for [Bug 683181] where test suite - left files in 'tmp'. + * generic/tclTest.c: Fix for [Bug 683181] where test suite left files + in 'tmp'. -2003-02-08 Jeff Hobbs +2003-02-08 Jeff Hobbs * library/safe.tcl: code cleanup of eval and string comp use. 2003-02-07 Vince Darley * win/tclWinFCmd.c: cleanup long lines - * win/tclWinFile.c: sped up pure 'glob' by a factor of 2.5 - ('foreach f [glob *] { file exists $f }' is still slow) + * win/tclWinFile.c: sped up pure 'glob' by a factor of 2.5 ('foreach f + [glob *] { file exists $f }' is still slow) * tests/fileSystem.text: - * tests/fileName.test: added new tests to ensure correct - behaviour in optimized filesystem code. + * tests/fileName.test: added new tests to ensure correct behaviour in + optimized filesystem code. 2003-02-07 Vince Darley * generic/tclTest.c: - * tests/fileSystem.text: fixed test 7.2 to avoid a possible - crash, and not change the pwd. + * tests/fileSystem.text: fixed test 7.2 to avoid a possible crash, and + not change the pwd. - * tests/http.text: added comment to test 4.15, that it may - fail if you use a proxy server. + * tests/http.text: added comment to test 4.15, that it may fail if you + use a proxy server. 2003-02-06 Mo DeJong * generic/tclCompCmds.c (TclCompileIncrCmd): - * tests/incr.test: Don't include the text - "(increment expression)" in the errorInfo - generated by the compiled version of the - incr command since it does not match the - message generated by the non-compiled version - of incr. It is also not possible to match - this error output under Jacl, which does - not support a compiler. + * tests/incr.test: Don't include the text "(increment expression)" in + the errorInfo generated by the compiled version of the incr command + since it does not match the message generated by the non-compiled + version of incr. It is also not possible to match this error output + under Jacl, which does not support a compiler. 2003-02-06 Mo DeJong - * generic/tclExecute.c (TclExecuteByteCode): When an - error is encountered reading the increment value during - a compiled call to incr, add a "(reading increment)" - error string to the errorInfo variable. This makes - the errorInfo variable set by the compiled incr command - match the value set by the non-compiled version. - * tests/incr-old.test: Change errorInfo result for - the compiled incr command case to match the modified - implementation. - * tests/incr.test: Add tests to make sure the compiled - and non-compiled errorInfo messages are the same. + * generic/tclExecute.c (TclExecuteByteCode): When an error is + encountered reading the increment value during a compiled call to + incr, add a "(reading increment)" error string to the errorInfo + variable. This makes the errorInfo variable set by the compiled incr + command match the value set by the non-compiled version. + * tests/incr-old.test: Change errorInfo result for the compiled incr + command case to match the modified implementation. + * tests/incr.test: Add tests to make sure the compiled and + non-compiled errorInfo messages are the same. -2003-02-06 Don Porter +2003-02-06 Don Porter * library/tcltest/tcltest.tcl: Filename arguments to [outputChannel] and [errorChannel] (also -outfile and -errfile) were [open]ed but - never [closed]. Also, [cleanupTests] could remove output or error - files. [Bug 676978]. + never [closed]. Also, [cleanupTests] could remove output or error + files. [Bug 676978]. * library/tcltest/pkgIndex.tcl: Bumped to version 2.2.2. 2003-02-05 Mo DeJong * tests/interp.test: - * tests/set-old.test: Run test cases that depend - on hash order through lsort so that the tests - also pass under Jacl. Does not change test + * tests/set-old.test: Run test cases that depend on hash order through + lsort so that the tests also pass under Jacl. Does not change test results under Tcl. 2003-02-04 Vince Darley @@ -5030,394 +4936,357 @@ * win/tclWinFCmd.c: * win/tclWinInit.c: * win/tclWinInt.h: - * tests/fileSystem.test: fix to finalization/unloading/encoding - issues to make filesystem much less dependent on encodings for - its cleanup, and therefore allow it to be finalized later in the - exit process. This fixes fileSystem.test-7.1. Also fixed one - more bug in setting of modification dates of files which have - undergone cross-platform copies. [Patch 676271] + * tests/fileSystem.test: fix to finalization/unloading/encoding issues + to make filesystem much less dependent on encodings for its cleanup, + and therefore allow it to be finalized later in the exit process. This + fixes fileSystem.test-7.1. Also fixed one more bug in setting of + modification dates of files which have undergone cross-platform + copies. [Patch 676271] * tests/basic.test: * tests/exec.test: * tests/fileName.test: - * tests/io.test: fixed some test failures when tests are run - from a directory containing spaces. + * tests/io.test: fixed some test failures when tests are run from a + directory containing spaces. * tests/fileSystem.test: * generic/tclTest.c: added regression test for the modification date setting of cross-platform file copies. -2003-02-03 Kevin Kenny +2003-02-03 Kevin Kenny * generic/tclBasic.c: Changed [trace add command] so that 'rename' - callbacks get fully qualified names of the command. [Bug - 651271]. ***POTENTIAL INCOMPATIBILITY*** - * tests/trace.test: Modified the test cases for [trace add - command] to expect fully qualified names on the 'rename' - callbacks. Added a case for renaming a proc within a namespace. - * doc/trace.n: Added language about use of fully qualified names - in trace callbacks. + callbacks get fully qualified names of the command. [Bug 651271]. + ***POTENTIAL INCOMPATIBILITY*** + * tests/trace.test: Modified the test cases for [trace add command] to + expect fully qualified names on the 'rename' callbacks. Added a case + for renaming a proc within a namespace. + * doc/trace.n: Added language about use of fully qualified names in + trace callbacks. -2003-02-01 Kevin Kenny +2003-02-01 Kevin Kenny * generic/tclCompCmds.c: Removed an unused variable that caused compiler warnings on SGI. [Bug 664379] - * generic/tclLoad.c: Changed the code so that if Tcl_StaticPackage - is called to report the same package as being loaded in two interps, - it shows up in [info loaded {}] in both of them (previously, - it didn't appear in the static package list in the second. + * generic/tclLoad.c: Changed the code so that if Tcl_StaticPackage is + called to report the same package as being loaded in two interps, it + shows up in [info loaded {}] in both of them (previously, it didn't + appear in the static package list in the second. - * tests/load.test Added regression test for the above bug. - [Bug 670042] + * tests/load.test Added regression test for the above bug. [Bug + 670042] - * generic/tclClock.c: Fixed a bug that incorrectly allowed - [clock clicks {}] and [clock clicks -] to be accepted as if - they were [clock clicks -milliseconds]. + * generic/tclClock.c: Fixed a bug that incorrectly allowed [clock + clicks {}] and [clock clicks -] to be accepted as if they were [clock + clicks -milliseconds]. - * tests/clock.test: Added regression tests for the above bug. - [Bug 675356] + * tests/clock.test: Added regression tests for the above bug. [Bug + 675356] - * tests/unixNotfy.test: Added cleanup of working files - [Bug 675609] + * tests/unixNotfy.test: Added cleanup of working files [Bug 675609] * doc/Tcl.n: Added headings to the eleven paragraphs, to improve formatting in the tools that attempt to extract tables of contents from the manual pages. [Bug 627455] - * generic/tclClock.c: Expanded mutex protection around the setting - of env(TZ) and the thread-unsafe call to tzset(). [Bug 656660] + * generic/tclClock.c: Expanded mutex protection around the setting of + env(TZ) and the thread-unsafe call to tzset(). [Bug 656660] -2003-01-31 Don Porter +2003-01-31 Don Porter * tests/tcltest.test: Cleaned up management of file/directory - creation/deletion to improve "-debug 1" output. [Bug 675614] - The utility [slave] command failed to properly [list]-quote a - constructed [open] command, causing failure when the pathname - contained whitespace. [Bug 678415] + creation/deletion to improve "-debug 1" output. [Bug 675614] The + utility [slave] command failed to properly [list]-quote a constructed + [open] command, causing failure when the pathname contained + whitespace. [Bug 678415] * tests/main.test: Stopped main.test from deleting existing file. Test suite should not delete files that already exist. [Bug 675660] -2003-01-28 Don Porter +2003-01-28 Don Porter - * tests/main.test: Constrain tests that do not work on Windows. - [Bug 674387] + * tests/main.test: Constrain tests that do not work on Windows. [Bug + 674387] 2003-01-28 Vince Darley - * generic/tclIOUtil.c: fix to setting modification date - in TclCrossFilesystemCopy. Also added 'panic' in - Tcl_FSGetFileSystemForPath under illegal calling circumstances - which lead to hard-to-track-down bugs. + * generic/tclIOUtil.c: fix to setting modification date in + TclCrossFilesystemCopy. Also added 'panic' in + Tcl_FSGetFileSystemForPath under illegal calling circumstances which + lead to hard-to-track-down bugs. - * generic/tclTest.c: added test suite code to allow - exercising a vfs-crash-on-exit bug in Tcl's finalization caused - by the encodings being cleaned up before unloading occurs. - * tests/fileSystem.test: added new 'knownBug' test 7.1 - to demonstrate the crash on exit. + * generic/tclTest.c: added test suite code to allow exercising a + vfs-crash-on-exit bug in Tcl's finalization caused by the encodings + being cleaned up before unloading occurs. + * tests/fileSystem.test: added new 'knownBug' test 7.1 to demonstrate + the crash on exit. 2003-01-28 Mo DeJong - * generic/tcl.h: Add TCL_PREFIX_IDENT and - TCL_DEBUG_IDENT, used only by TclpCreateProcess. + * generic/tcl.h: Add TCL_PREFIX_IDENT and TCL_DEBUG_IDENT, used only + by TclpCreateProcess. * unix/Makefile.in: Define TCL_DBGX. * win/Makefile.in: Define TCL_DBGX. - * win/tclWinPipe.c (TclpCreateProcess): - Check that the Tcl pipe dll actually exists - in the Tcl bin directory and panic if it - is not found. Incorporate TCL_DBGX into - the Tcl pipe dll name. This fixes a really - mysterious error that would show up when - exec'ing a 16 bit application under Win95 - or Win98 when Tcl was compiled with symbols. - The error seemed to indicate that the executable - could not be found, but it was actually the - Tcl pipe dll that could not be found. + * win/tclWinPipe.c (TclpCreateProcess): Check that the Tcl pipe dll + actually exists in the Tcl bin directory and panic if it is not + found. Incorporate TCL_DBGX into the Tcl pipe dll name. This fixes a + really mysterious error that would show up when exec'ing a 16 bit + application under Win95 or Win98 when Tcl was compiled with symbols. + The error seemed to indicate that the executable could not be found, + but it was actually the Tcl pipe dll that could not be found. 2003-01-26 Mo DeJong - * win/README: Update msys+mingw URL to release 6. - This version bundles gcc 3. + * win/README: Update msys+mingw URL to release 6. This version bundles + gcc 3. 2003-01-26 Mo DeJong * win/configure: Regen. - * win/configure.in: Add test that checks to - see if the compiler can cast to a union type. - * win/tclWinTime.c: Squelch compiler warning - about union initializer by casting to union - type when compiling with gcc. + * win/configure.in: Add test that checks to see if the compiler can + cast to a union type. + * win/tclWinTime.c: Squelch compiler warning about union initializer + by casting to union type when compiling with gcc. 2003-01-25 Mo DeJong - * generic/tclIO.c (Tcl_CutChannel, Tcl_SpliceChannel): - Invoke TclpCutFileChannel and TclpSpliceFileChannel. - * generic/tclInt.h: Declare TclpCutFileChannel - and TclpSpliceFileChannel. + * generic/tclIO.c (Tcl_CutChannel, Tcl_SpliceChannel): Invoke + TclpCutFileChannel and TclpSpliceFileChannel. + * generic/tclInt.h: Declare TclpCutFileChannel and + TclpSpliceFileChannel. * unix/tclUnixChan.c (FileCloseProc, TclpOpenFileChannel, - Tcl_MakeFileChannel, TclpCutFileChannel, - TclpSpliceFileChannel): Implement thread load data - cut and splice for file channels. This avoids - an invalid memory ref when compiled with -DDEPRECATED. + (Tcl_MakeFileChannel, TclpCutFileChannel, + (TclpSpliceFileChannel): Implement thread load data cut and splice for + file channels. This avoids an invalid memory ref when compiled with + -DDEPRECATED. * win/tclWinChan.c (FileCloseProc, TclpCutFileChannel, - TclpSpliceFileChannel): Implement thread load data - cut and splice for file channels. This avoids - an invalid memory ref that was showing up in the - thread extension. + (TclpSpliceFileChannel): Implement thread load data cut and splice for + file channels. This avoids an invalid memory ref that was showing up + in the thread extension. 2003-01-25 Mo DeJong * win/tclWin32Dll.c (TclpCheckStackSpace, squelch_warnings): * win/tclWinChan.c (Tcl_MakeFileChannel, squelch_warnings): * win/tclWinFCmd.c (DoRenameFile, DoCopyFile, squelch_warnings): - Re-implement inline ASM SEH handlers for gcc. - The esp and ebp registers are now saved on the - stack instead of in global variables so that - the code is thread safe. Add additional checks - when TCL_MEM_DEBUG is defined to be sure the - values were recovered from the stack properly. - Remove squelch_warnings functions and add - a dummy call in the handler methods to squelch - compiler warnings. + Re-implement inline ASM SEH handlers for gcc. The esp and ebp + registers are now saved on the stack instead of in global variables so + that the code is thread safe. Add additional checks when TCL_MEM_DEBUG + is defined to be sure the values were recovered from the stack + properly. Remove squelch_warnings functions and add a dummy call in + the handler methods to squelch compiler warnings. 2003-01-25 Mo DeJong * win/configure: - * win/configure.in: Define HAVE_ALLOCA_GCC_INLINE - when we detect that no alloca function is found - in malloc.h and we are compiling with GCC. - Remove HAVE_NO_ALLOC_DECL define. - * win/tclWin32Dll.c (TclpCheckStackSpace): - Don't define alloca as a cdecl function. - Doing this caused a tricky runtime bug because - the _alloca function expects the size argument - to be passed in a register and not on the stack. - To fix this problem, we use inline ASM when - compiling with gcc to invoke _alloca with the - size argument loaded into a register. - -2003-01-24 Jeff Hobbs + * win/configure.in: Define HAVE_ALLOCA_GCC_INLINE when we detect that + no alloca function is found in malloc.h and we are compiling with + GCC. Remove HAVE_NO_ALLOC_DECL define. + * win/tclWin32Dll.c (TclpCheckStackSpace): Don't define alloca as a + cdecl function. Doing this caused a tricky runtime bug because the + _alloca function expects the size argument to be passed in a register + and not on the stack. To fix this problem, we use inline ASM when + compiling with gcc to invoke _alloca with the size argument loaded + into a register. + +2003-01-24 Jeff Hobbs * win/tclWinDde.c (Dde_Init): clarified use of tsdPtr. (DdeServerProc): better refcount handling of returnPackagePtr. * generic/tclEvent.c (Tcl_Finalize): revert finalize change on - 2002-12-04 to correct the issue with extensions that have TSD - needing to finalize that before they are unloaded. This issue - needs further clarification. + 2002-12-04 to correct the issue with extensions that have TSD needing + to finalize that before they are unloaded. This issue needs further + clarification. * tests/unixFCmd.test: only do groups check on unix 2003-01-24 Vince Darley * generic/tclStringObj.c: proper fixes for Tcl_SetObjLength and - Tcl_AttemptSetObjectLength dealing with string objects with - both pure-unicode and normal internal representations. - Previous fix didn't handle all cases correctly. - * generic/tclIO.c: Add 'Tcl_GetString()' to ensure the object has - a valid 'objPtr->bytes' field before manipulating it directly. + Tcl_AttemptSetObjectLength dealing with string objects with both + pure-unicode and normal internal representations. Previous fix didn't + handle all cases correctly. + * generic/tclIO.c: Add 'Tcl_GetString()' to ensure the object has a + valid 'objPtr->bytes' field before manipulating it directly. This fixes [Bug 635200] and [Bug 671138], but may reduce performance - of Unicode string handling in some cases. A further patch will - be applied to address this, once the code is known to be correct. + of Unicode string handling in some cases. A further patch will be + applied to address this, once the code is known to be correct. 2003-01-24 Mo DeJong * win/configure: Regen. - * win/configure.in: Add test to see if alloca - is undefined in malloc.h. - * win/tclWin32Dll.c (TclpCheckStackSpace): Rework - the SEH exception handler logic to avoid using - the stack since alloca will modify the stack. - This was causing a nasty bug that would set the - exception handler to 0 because it tried to pop - the previous exception handler off the top of - the stack. + * win/configure.in: Add test to see if alloca is undefined in + malloc.h. + * win/tclWin32Dll.c (TclpCheckStackSpace): Rework the SEH exception + handler logic to avoid using the stack since alloca will modify the + stack. This was causing a nasty bug that would set the exception + handler to 0 because it tried to pop the previous exception handler + off the top of the stack. 2003-01-23 Donal K. Fellows - * doc/lset.n: Fixed fault in return values from lset in - documentation examples [SF Bug #658463] and tidied up a bit at the - same time. + * doc/lset.n: Fixed fault in return values from lset in documentation + examples [Bug 658463] and tidied up a bit at the same time. -2003-01-21 Joe English +2003-01-21 Joe English * doc/namespace.n (namespace inscope): Clarified documentation - [SF Patch #670110] + [Patch 670110] 2003-01-21 Mo DeJong * win/configure: Regen. - * win/tcl.m4 (SC_CONFIG_CFLAGS): Set SHLIB_SUFFIX - so that TCL_SHLIB_SUFFIX will be set to a useful - value in the generated tclConfig.sh. - Set SHLIB_LD_LIBS to "" or '${LIBS}' based on - the --enable-shared flag. This matches the - UNIX implementation. + * win/tcl.m4 (SC_CONFIG_CFLAGS): Set SHLIB_SUFFIX so that + TCL_SHLIB_SUFFIX will be set to a useful value in the generated + tclConfig.sh. Set SHLIB_LD_LIBS to "" or '${LIBS}' based on the + --enable-shared flag. This matches the UNIX implementation. -2003-01-18 Jeff Hobbs +2003-01-18 Jeff Hobbs * generic/tclCkalloc.c: change %ud to %u as appropriate. 2003-01-17 Mo DeJong - * win/tclWinDde.c (DdeServerProc): Deallocate - the Tcl_Obj returned by ExecuteRemoteObject - if it was not saved in a connection object. + * win/tclWinDde.c (DdeServerProc): Deallocate the Tcl_Obj returned by + ExecuteRemoteObject if it was not saved in a connection object. 2003-01-17 Mo DeJong - * generic/tcl.h: Revert earlier change that - defined TCL_WIDE_INT_TYPE as long long and - TCL_LL_MODIFIER as L when compiling with - mingw. This change ended up causing some - test case failures when compiling with mingw. - * generic/tclObj.c (UpdateStringOfWideInt): - Describe the warning generated by mingw and - why it needs to be ignored so that someone - is not tempted to "fix" this problem again - in the future. + * generic/tcl.h: Revert earlier change that defined TCL_WIDE_INT_TYPE + as long long and TCL_LL_MODIFIER as L when compiling with mingw. This + change ended up causing some test case failures when compiling with + mingw. + * generic/tclObj.c (UpdateStringOfWideInt): Describe the warning + generated by mingw and why it needs to be ignored so that someone is + not tempted to "fix" this problem again in the future. 2003-01-16 Vince Darley - * generic/tclStringObj.c: Tcl_SetObjLength fix for when - the object has a unicode string rep. Fixes [Bug 635200] - * tests/stringObj.test: removed 'knownBug' constraint from - test 14.1 now that this bug is fixed. + * generic/tclStringObj.c: Tcl_SetObjLength fix for when the object has + a unicode string rep. Fixes [Bug 635200] + * tests/stringObj.test: removed 'knownBug' constraint from test 14.1 + now that this bug is fixed. * generic/tclInt.h: * generic/tclBasic.c: * generic/tclCmdMZ.z: * tests/trace.test: execution and command tracing bug fixes and - cleanup. In particular fixed [Bug 655645], [Bug 615043], - [Bug 571385] - - fixed some subtle cleanup problems with tracing. This - required replacing Tcl_Preserve/Tcl_Release with a more - robust refCount approach. Solves at least one known crash - caused by memory corruption. - - fixed some confusion in the code between new style traces - (Tcl 8.4) and the very limited 'Tcl_CreateTrace' which existed - before. - - made behaviour consistent with documentation (several - tests even contradicted the documentation before). + cleanup. In particular fixed [Bugs 655645, 615043, 571385] + - fixed some subtle cleanup problems with tracing. This required + replacing Tcl_Preserve/Tcl_Release with a more robust refCount + approach. Solves at least one known crash caused by memory + corruption. + - fixed some confusion in the code between new style traces (Tcl + 8.4) and the very limited 'Tcl_CreateTrace' which existed before. + - made behaviour consistent with documentation (several tests even + contradicted the documentation before). - fixed some minor error message details - added a number of new tests -2003-01-16 Jeff Hobbs +2003-01-16 Jeff Hobbs - * win/tclWinSerial.c (SerialOutputProc): add casts for - bytesWritten to allow strict compilation (no warnings). + * win/tclWinSerial.c (SerialOutputProc): add casts for bytesWritten to + allow strict compilation (no warnings). * tests/winDde.test: - * win/tclWinDde.c (Tcl_DdeObjCmd): Prevent crash when empty - service name is passed to 'dde eval' and goto errorNoResult in - request and poke error cases to free up any allocated data. + * win/tclWinDde.c (Tcl_DdeObjCmd): Prevent crash when empty service + name is passed to 'dde eval' and goto errorNoResult in request and + poke error cases to free up any allocated data. 2003-01-16 Mo DeJong - * win/tclWin32Dll.c (squelch_warnings): Squelch - compiler warnings from SEH ASM code. - * win/tclWinChan.c (squelch_warnings): Squelch - compiler warnings from SEH ASM code. - * win/tclWinDde.c: Add casts to avoid compiler - warnings. Pass pointer to DWORD instead of int - to avoid compiler warnings. - * win/tclWinFCmd.c (squelch_warnings): Add casts - and fixup decls to avoid compiler warnings. - Squelch compiler warnings from SEH ASM code. - * win/tclWinFile.c: Add casts and fixup decls - to avoid compiler warnings. Remove unused variable. - * win/tclWinNotify.c: Declare as DWORD instead - of int to avoid compiler warning. - * win/tclWinReg.c: Add casts to avoid compiler - warning. Fix assignment in if expression bug. - * win/tclWinSerial.c: Add casts to avoid compiler + * win/tclWin32Dll.c (squelch_warnings): Squelch compiler warnings from + SEH ASM code. + * win/tclWinChan.c (squelch_warnings): Squelch compiler warnings from + SEH ASM code. + * win/tclWinDde.c: Add casts to avoid compiler warnings. Pass pointer + to DWORD instead of int to avoid compiler warnings. + * win/tclWinFCmd.c (squelch_warnings): Add casts and fixup decls to + avoid compiler warnings. Squelch compiler warnings from SEH ASM code. + * win/tclWinFile.c: Add casts and fixup decls to avoid compiler warnings. Remove unused variable. - * win/tclWinSock.c: Add casts and fixup decls - to avoid compiler warnings. + * win/tclWinNotify.c: Declare as DWORD instead of int to avoid + compiler warning. + * win/tclWinReg.c: Add casts to avoid compiler warning. Fix assignment + in if expression bug. + * win/tclWinSerial.c: Add casts to avoid compiler warnings. Remove + unused variable. + * win/tclWinSock.c: Add casts and fixup decls to avoid compiler + warnings. -2003-01-14 Jeff Hobbs +2003-01-14 Jeff Hobbs - * generic/tclClock.c (FormatClock): corrected typo that - incorrectly conditionally defined savedTZEnv and savedTimeZone. + * generic/tclClock.c (FormatClock): corrected typo that incorrectly + conditionally defined savedTZEnv and savedTimeZone. 2003-01-13 Mo DeJong Fix mingw build problems and compiler warnings. - * generic/tcl.h: Add if defined(__MINGW32__) - check to code that sets the TCL_WIDE_INT_TYPE - and TCL_LL_MODIFIER. - * generic/tclClock.c (FormatClock): Don't - define savedTimeZone and savedTZEnv if - we are not going to use them. + * generic/tcl.h: Add if defined(__MINGW32__) check to code that sets + the TCL_WIDE_INT_TYPE and TCL_LL_MODIFIER. + * generic/tclClock.c (FormatClock): Don't define savedTimeZone and + savedTZEnv if we are not going to use them. * generic/tclEnv.c: Add cast to avoid warning. - * win/tclWinChan.c: Use DWORD instead of int - to avoid compiler warning. - * win/tclWinThrd.c: Only define allocLock, - allocLockPtr, and dataKey when TCL_THREADS - is defined. This avoid a compiler warning - about unused variables. + * win/tclWinChan.c: Use DWORD instead of int to avoid compiler warning + * win/tclWinThrd.c: Only define allocLock, allocLockPtr, and dataKey + when TCL_THREADS is defined. This avoid a compiler warning about + unused variables. 2003-01-12 Mo DeJong - * win/README: Update msys + mingw URL, the - new release includes the released 1.0.8 - version of msys which includes a number - of bug fixes. + * win/README: Update msys + mingw URL, the new release includes the + released 1.0.8 version of msys which includes a number of bug fixes. 2003-01-12 Mo DeJong * win/configure: Regen. - * win/tcl.m4 (SC_CONFIG_CFLAGS): Pull in - addition of shell32.lib to LIBS_GUI that - was added to the Tk tcl.m4 but never made - it back into the Tcl version. + * win/tcl.m4 (SC_CONFIG_CFLAGS): Pull in addition of shell32.lib to + LIBS_GUI that was added to the Tk tcl.m4 but never made it back into + the Tcl version. 2003-01-12 Mo DeJong - * generic/tcl.h: Skip Tcl's define of CHAR, - SHORT, and LONG when HAVE_WINNT_IGNORE_VOID - is defined. This avoids a bunch of compiler + * generic/tcl.h: Skip Tcl's define of CHAR, SHORT, and LONG when + HAVE_WINNT_IGNORE_VOID is defined. This avoids a bunch of compiler warnings when building with Cygwin or Mingw. * win/configure: Regen. - * win/configure.in: Define HAVE_WINNT_IGNORE_VOID - when we detect a winnt.h that still defines - CHAR, SHORT, and LONG when VOID has already + * win/configure.in: Define HAVE_WINNT_IGNORE_VOID when we detect a + winnt.h that still defines CHAR, SHORT, and LONG when VOID has already been defined. - * win/tcl.m4 (SC_LOAD_TCLCONFIG): Subst the - TCL_DEFS loaded from tclConfig.sh so that - Tcl defines can make it into the Tk Makefile. + * win/tcl.m4 (SC_LOAD_TCLCONFIG): Subst the TCL_DEFS loaded from + tclConfig.sh so that Tcl defines can make it into the Tk Makefile. 2003-01-12 Mo DeJong * win/configure: Regen. - * win/configure.in: Check for typedefs like LPFN_ACCEPT - in winsock2.h and define HAVE_NO_LPFN_DECLS if not found. - * win/tclWinSock.c: Define LPFN_* typedefs if - HAVE_NO_LPFN_DECLS is defined. This fixes the build - under Mingw and Cygwin, it was broken by the changes - made on 2002-11-26. + * win/configure.in: Check for typedefs like LPFN_ACCEPT in winsock2.h + and define HAVE_NO_LPFN_DECLS if not found. + * win/tclWinSock.c: Define LPFN_* typedefs if HAVE_NO_LPFN_DECLS is + defined. This fixes the build under Mingw and Cygwin, it was broken by + the changes made on 2002-11-26. 2003-01-10 Vince Darley * generic/tclIOUtil.c: * win/tclWinInt.h: * win/tclWinInit.c: fix to new WinTcl crash on exit with vfs, - introduced on 2002-12-06. Encodings must be cleaned up after - the filesystem. + introduced on 2002-12-06. Encodings must be cleaned up after the + filesystem. * win/makefile.vc: fix to minor VC++ 5.2 syntax problem -2003-01-09 Don Porter +2003-01-09 Don Porter - * generic/tclCompCmds.c (TclCompilerReturnCmd): Corrected off-by-one - problem with recent commit. [Bug 633204] + * generic/tclCompCmds.c (TclCompilerReturnCmd): Corrected off-by-one + problem with recent commit. [Bug 633204] 2003-01-09 Vince Darley - * generic/tclFileName.c: remove unused variable 'macSpecialCase' - [Bug 664749] + * generic/tclFileName.c: remove unused variable 'macSpecialCase' [Bug + 664749] * generic/tclIOUtil.c: * generic/tclInt.h: @@ -5426,67 +5295,64 @@ * win/tclWinFile.c: * win/tclWinInt.h: * win/tclWin32Dll.c: - * tests/cmdAH.test: fix to non-ascii chars in paths when - setting mtime and atime through 'file (a|m)time $path $time' - [Bug 634151] + * tests/cmdAH.test: fix to non-ascii chars in paths when setting mtime + and atime through 'file (a|m)time $path $time'. [Bug 634151] -2003-01-08 Don Porter +2003-01-08 Don Porter - * generic/tclExecute.c (TclExprFloatError): Use the IS_NAN macro - for greater clarity of code. + * generic/tclExecute.c (TclExprFloatError): Use the IS_NAN macro for + greater clarity of code. -2003-01-07 Don Porter +2003-01-07 Don Porter * generic/tclCompCmds.c (TclCompileReturnCmd): - * tests/compile.test: Corrects failure of bytecompiled - [catch {return}] to have result TCL_RETURN (not TCL_OK) [Bug 633204]. - This patch is a workaround for 8.4.X. A new opcode INST_RETURN is a - better long term solution for 8.5 and later. + * tests/compile.test: Corrects failure of bytecompiled [catch + {return}] to have result TCL_RETURN (not TCL_OK) [Bug 633204]. This + patch is a workaround for 8.4.X. A new opcode INST_RETURN is a better + long term solution for 8.5 and later. 2003-01-04 David Gravereaux * win/makefile.vc: - * win/rules.vc: Fixed INSTALLDIR macro problem that blanked itself - by accident causing the install target to put the tree at the root - of the drive built on. Whoops.. - - Renamed the 'linkexten' option to be 'staticpkg'. Added 'thrdalloc' - to allow the switching _on_ of the thread allocator. Under testing, - I found it not to be benificial under windows for the purpose of the - application I was using it for. It was more important for this app + * win/rules.vc: Fixed INSTALLDIR macro problem that blanked itself by + accident causing the install target to put the tree at the root of the + drive built on. Whoops.. + + Renamed the 'linkexten' option to be 'staticpkg'. Added 'thrdalloc' to + allow the switching _on_ of the thread allocator. Under testing, I + found it not to be benificial under windows for the purpose of the + application I was using it for. It was more important for this app that resources for tcl threads be returned to the system rather than - saved/moved to the global recycler. Be extra clean or extra fast - for the default threaded build? Let's move to clean and allow it to - be switched on for users who find it benificial for their use of - threads. + saved/moved to the global recycler. Be extra clean or extra fast for + the default threaded build? Let's move to clean and allow it to be + switched on for users who find it benificial for their use of threads. 2002-12-18 David Gravereaux * win/makefile.vc: some uses of xcopy swapped to the @$(CPY) macro. Reported by Joe Mistachkin . -2002-12-17 Jeff Hobbs +2002-12-17 Jeff Hobbs * generic/tclNotify.c (TclFinalizeNotifier, Tcl_SetServiceMode): - (Tcl_ThreadAlert): Check that the stub functions are non-NULL - before calling them. They could be set to NULL by Tcl_SetNotifier. + (Tcl_ThreadAlert): Check that the stub functions are non-NULL before + calling them. They could be set to NULL by Tcl_SetNotifier. 2002-12-16 David Gravereaux * generic/tclPipe.c (TclCleanupChildren): * tests/winPipe.test: * win/tclWinPipe.c (Tcl_WaitPid): - * win/tclWinTest.c: Gave Tcl_WaitPid the ability to return a - Win32 exception code translated into a posix style SIG*. This - allows [close] to report "CHILDKILLED" without the meaning - getting lost in a truncated exit code. In TclCleanupChildren(), - TclpGetPid() had to get moved to before Tcl_WaitPid() as the - the handle is removed from the list taking away the ability - to get the process id after the wait is done. This shouldn't - effect the unix implimentaion unless waitpid is called with - a pid of zero, meaning "any". I don't think it is.. - -2002-12-13 Don Porter + * win/tclWinTest.c: Gave Tcl_WaitPid the ability to return a Win32 + exception code translated into a posix style SIG*. This allows [close] + to report "CHILDKILLED" without the meaning getting lost in a + truncated exit code. In TclCleanupChildren(), TclpGetPid() had to get + moved to before Tcl_WaitPid() as the the handle is removed from the + list taking away the ability to get the process id after the wait is + done. This shouldn't effect the unix implimentaion unless waitpid is + called with a pid of zero, meaning "any". I don't think it is.. + +2002-12-13 Don Porter * unix/configure.in: Updated configure of CVS snapshots to reflect * win/configure.in: the 8.4.1.1 patchlevel. @@ -5494,32 +5360,31 @@ * unix/configure: autoconf * win/configure autoconf -2002-12-11 Don Porter +2002-12-11 Don Porter - * generic/tclProc.c (ProcessProcResultCode): Fix failure to - propagate negative return codes up the call stack. [Bug 647307] + * generic/tclProc.c (ProcessProcResultCode): Fix failure to propagate + negative return codes up the call stack. [Bug 647307] * tests/proc.test (proc-6.1): Test for Bug 647307 * generic/tclParseExpr.c (TclParseInteger): Return 1 for the - string "0x" (recognize leading "0" as an integer). [Bug 648441]. + string "0x" (recognize leading "0" as an integer). [Bug 648441]. * tests/parseExpr.test (parseExpr-19.1): Test for Bug 648441. -2002-12-09 Jeff Hobbs +2002-12-09 Jeff Hobbs * win/tclWinThrd.c (TclpMasterUnlock): - * generic/tclThread.c (TclFinalizeThreadData): TclpMasterUnlock - must exist and be called unconditional of TCL_THREADS. [Bug #651139] + * generic/tclThread.c (TclFinalizeThreadData): TclpMasterUnlock must + exist and be called unconditional of TCL_THREADS. [Bug 651139] 2002-12-08 David Gravereaux - * win/tclWinSock.c (SocketThreadExitHandler, InitSockets): Check - that the tsdPtr is valid before dereferencing as we call it from - the exit handler, too [Bug 650353]. Another WSAStartup() loaded - version comparison byte swap issue fixed. Although 0x0101 byte - swapped is still 0x0101, properly claiming which is major/minor - is more correct. + * win/tclWinSock.c (SocketThreadExitHandler, InitSockets): Check that + the tsdPtr is valid before dereferencing as we call it from the exit + handler, too [Bug 650353]. Another WSAStartup() loaded version + comparison byte swap issue fixed. Although 0x0101 byte swapped is + still 0x0101, properly claiming which is major/minor is more correct. -2002-12-06 Jeff Hobbs +2002-12-06 Jeff Hobbs * generic/tclStubInit.c: regen * generic/tclIntPlatDecls.h: regen @@ -5527,47 +5392,46 @@ * win/tclWin32Dll.c (TclWinResetInterfaces): * win/tclWinInit.c (TclpSetInitialEncodings, WinEncodingsCleanup): - add exit handler that resets the encoding information to a state - where we can reuse Tcl. Following these changes, it is possible - to reuse Tcl (following Tcl_FindExecutable or Tcl_CreateInterp) - following a Tcl_Finalize. + add exit handler that resets the encoding information to a state where + we can reuse Tcl. Following these changes, it is possible to reuse Tcl + (following Tcl_FindExecutable or Tcl_CreateInterp) following a + Tcl_Finalize. - * generic/tclIOUtil.c (TclFinalizeFilesystem): reset statics to - their original values on finalize to allow reuse of the library. + * generic/tclIOUtil.c (TclFinalizeFilesystem): reset statics to their + original values on finalize to allow reuse of the library. 2002-12-04 David Gravereaux * win/tclWinPipe.c: reverted back to -r1.27 due to numerous test - failures that need to be resolved first. The idea was good, - but the details aren't. + failures that need to be resolved first. The idea was good, but the + details aren't. 2002-12-04 David Gravereaux - * win/tclWinPipe.c (Tcl_WaitPid): When a process exits with an - exception, pass this notice on to the caller with a SIG* code - rather than truncating the exit code and missing the meaning. - This allows TclCleanupChildren() to report "CHILDKILLED". + * win/tclWinPipe.c (Tcl_WaitPid): When a process exits with an + exception, pass this notice on to the caller with a SIG* code rather + than truncating the exit code and missing the meaning. This allows + TclCleanupChildren() to report "CHILDKILLED". - This has a different behavior than unix in that closing the - read pipe to a process sends the SIGPIPE signal which is - returned as a SIGPIPE exit status. On windows, we send the - process a CTRL_BREAK_EVENT and get back a CONTROL_C_EXIT which - is documented to mean a SIGINT which seems wrong as a system, - but is the correct exit status. + This has a different behavior than unix in that closing the read pipe + to a process sends the SIGPIPE signal which is returned as a SIGPIPE + exit status. On windows, we send the process a CTRL_BREAK_EVENT and + get back a CONTROL_C_EXIT which is documented to mean a SIGINT which + seems wrong as a system, but is the correct exit status. 2002-12-04 Vince Darley - * generic/tclIOUtil.c: fix to redirected 'load' in virtual - filesystem for some Unix systems. + * generic/tclIOUtil.c: fix to redirected 'load' in virtual filesystem + for some Unix systems. - * generic/tclEvent.c: the filesystem must be cleaned up before - the encoding subsystem because it needs access to encodings. - Fixes crash on exit observed in embedded applications. + * generic/tclEvent.c: the filesystem must be cleaned up before the + encoding subsystem because it needs access to encodings. Fixes crash + on exit observed in embedded applications. - * generic/tclTestObj.c: patch omitted from previous change - of 2002-11-13 + * generic/tclTestObj.c: patch omitted from previous change of + 2002-11-13 -2002-12-03 Jeff Hobbs +2002-12-03 Jeff Hobbs * generic/tclStubLib.c (Tcl_InitStubs): prevent the cached check of tclStubsPtr to allow for repeated load/unload of the Tcl dll by @@ -5575,45 +5439,44 @@ 2002-12-03 David Gravereaux - * win/tclAppInit.c (sigHandler): Protect from trying to close a - NULL handle. + * win/tclAppInit.c (sigHandler): Protect from trying to close a NULL + handle. - * win/tclWinPipe.c (PipeClose2Proc, TclpCreateProcess): Send a - real Win32 signal (CTRL_C_EVENT) when the read channel is brought - down to alert the child to close on its side. Start the process - with CREATE_NEW_PROCESS_GROUP to allow the ability to send these - signals. The following test case now brings down the child - without the use of an external [kill] command. + * win/tclWinPipe.c (PipeClose2Proc, TclpCreateProcess): Send a real + Win32 signal (CTRL_C_EVENT) when the read channel is brought down to + alert the child to close on its side. Start the process with + CREATE_NEW_PROCESS_GROUP to allow the ability to send these signals. + The following test case now brings down the child without the use of + an external [kill] command. - % set p [open "|[info name]" w+] - file8d5380 - % pid $p - 2876 - % close $p <- now doesn't block in Tcl_WaitPid() - % + % set p [open "|[info name]" w+] + file8d5380 + % pid $p + 2876 + % close $p <- now doesn't block in Tcl_WaitPid() + % - * win/tclWinPipe.c (PipeClose2Proc): Changed CTRL_C_EVENT - to CTRL_BREAK_EVENT as it can't be ignored by the child and - proved to work on [open "|netstat 1" w+] where CTRL_C_EVENT - didn't. + * win/tclWinPipe.c (PipeClose2Proc): Changed CTRL_C_EVENT to + CTRL_BREAK_EVENT as it can't be ignored by the child and proved to + work on [open "|netstat 1" w+] where CTRL_C_EVENT didn't. 2002-11-27 David Gravereaux - * win/tclWinPort.h: Don't turn off winsock prototypes! - TclX didn't like it. Even though the core doesn't use the - prototypes, do offer them. + * win/tclWinPort.h: Don't turn off winsock prototypes! TclX didn't + like it. Even though the core doesn't use the prototypes, do offer + them. - * win/tclWinSock.c: Removed shutdown() from the function - table as it wasn't referenced anywhere and cleaned-up some - casting that that wasn't needed. + * win/tclWinSock.c: Removed shutdown() from the function table as it + wasn't referenced anywhere and cleaned-up some casting that that + wasn't needed. - * win/tclWinSock.c: WSAStartup() loaded version comparison - error which resulted in 2.0 looking less than 1.1. + * win/tclWinSock.c: WSAStartup() loaded version comparison error which + resulted in 2.0 looking less than 1.1. - * win/tclWinChan.c (Tcl_MakeFileChannel): return of - DuplicateHandle() incorrectly used [Bug 618852]. + * win/tclWinChan.c (Tcl_MakeFileChannel): return of DuplicateHandle() + incorrectly used [Bug 618852]. -2002-11-26 Jeff Hobbs +2002-11-26 Jeff Hobbs * generic/tclEncoding.c (TclFinalizeEncodingSubsystem): properly cleanup all encodings by using Tcl_FirstHashEntry in the while loop. @@ -5630,18 +5493,16 @@ * win/tclWinPort.h: * win/tclWinSock.c: This patch does two things: - 1) Cleans-up the winsock typedefs by using the typedefs - provided by winsock2.h. This has no effect on how winsock - is initialized; just makes the source code easier to read. - [Patch 561305 561301] - - 2) Revamps how the socket message handler thread is brought - up and down to allow for cleaner exits without the use of - TerminateThread(). TerminateThread is evil. No attempt has - been made to resolve [Bug 593810] which may need a new - channel driver version for adding a registering function - within the transfered thread to init the handler thread. - IOW, initialization of the TSD structure is getting bypassed + 1) Cleans-up the winsock typedefs by using the typedefs provided by + winsock2.h. This has no effect on how winsock is initialized; just + makes the source code easier to read. [Patch 561305, 561301] + + 2) Revamps how the socket message handler thread is brought up and + down to allow for cleaner exits without the use of TerminateThread(). + TerminateThread is evil. No attempt has been made to resolve [Bug + 593810] which may need a new channel driver version for adding a + registering function within the transfered thread to init the handler + thread. IOW, initialization of the TSD structure is getting bypassed through the thread extension's [thread::transfer] command. 2002-11-26 David Gravereaux @@ -5651,31 +5512,30 @@ * win/tclWinSerial.c: * win/tclWinSock.c: * win/tclWinThrd.c: - * win/tclWinTime.c: General cleanup of all worker threads used - by the channel drivers. Eliminates the normal case where the - worker thread is terminated ('cept the winsock one). Instead, - use kernel events to signal a clean exit. Only when the worker - thread is blocked on an I/O call is the thread terminated. - Essentially, this makes all other channel worker threads behave - like the PipeReaderThread() function for it's cleaner exit - behavior. This appears to fix [Bug 597924] but needs 3rd party - confirmation to close the issue. + * win/tclWinTime.c: General cleanup of all worker threads used by the + channel drivers. Eliminates the normal case where the worker thread is + terminated ('cept the winsock one). Instead, use kernel events to + signal a clean exit. Only when the worker thread is blocked on an I/O + call is the thread terminated. Essentially, this makes all other + channel worker threads behave like the PipeReaderThread() function for + it's cleaner exit behavior. This appears to fix [Bug 597924] but needs + 3rd party confirmation to close the issue. 2002-11-26 Mo DeJong - * win/README: Update msys build env URL. This - release #4 build both tcl and tk without problems. + * win/README: Update msys build env URL. This release #4 build both + tcl and tk without problems. -2002-11-22 Jeff Hobbs +2002-11-22 Jeff Hobbs * library/init.tcl: code cleanup to reduce use of * library/opt/optparse.tcl: string compare * tests/interp.test: interp-14.4 - * generic/tclInterp.c (TclPreventAliasLoop): prevent seg fault - when creating an alias command over the interp name. [Bug #641195] + * generic/tclInterp.c (TclPreventAliasLoop): prevent seg fault when + creating an alias command over the interp name. [Bug 641195] -2002-11-18 Jeff Hobbs +2002-11-18 Jeff Hobbs * generic/tclUtil.c (SetEndOffsetFromAny): handle integer offset after the "end-" prefix. @@ -5683,18 +5543,18 @@ * generic/get.test: * generic/string.test: * generic/tclObj.c (SetIntFromAny, SetWideIntFromAny): - * generic/tclGet.c (TclGetLong, Tcl_GetInt): simplify sign - handling before calling strtoul(l). [Bug #634856] + * generic/tclGet.c (TclGetLong, Tcl_GetInt): simplify sign handling + before calling strtoul(l). [Bug 634856] 2002-11-18 David Gravereaux - * win/tclWinThrd.c (Tcl_CreateThread/TclpThreadExit): Fixed - improper compiler macros that missed the VC++ compiler. This - resulted in VC++ builds using CreateThread()/ExitThread() in place - of the proper _beginthreadex()/_endthreadex(). This was a large - error and am surprised I missed seeing it earlier. + * win/tclWinThrd.c (Tcl_CreateThread/TclpThreadExit): Fixed improper + compiler macros that missed the VC++ compiler. This resulted in VC++ + builds using CreateThread()/ExitThread() in place of the proper + _beginthreadex()/_endthreadex(). This was a large error and am + surprised I missed seeing it earlier. -2002-11-13 Jeff Hobbs +2002-11-13 Jeff Hobbs * generic/regexpComp.test: added tests 22.* * generic/tclCompCmds.c (TclCompileRegexpCmd): add left and right @@ -5705,84 +5565,81 @@ 2002-11-13 Vince Darley * generic/tclCmdMZ.c: - * tests/trace.test: applied patch from Hemang Levana to fix - [Bug #615043] in execution traces with 'return -code error'. + * tests/trace.test: applied patch from Hemang Levana to fix [Bug + 615043] in execution traces with 'return -code error'. * generic/tclTestObj.c: * tests/stringObj.test: added 'knownBug' test for [Bug 635200] * generic/tclStringObj.c: corrected typos in comments * generic/tclFileName.c: - * tests/fileName.test: applied patch for bug reported against - tclvfs concerning handling of Windows serial ports like 'com1', - 'lpt3' by the virtual filesystem code. + * tests/fileName.test: applied patch for bug reported against tclvfs + concerning handling of Windows serial ports like 'com1', 'lpt3' by the + virtual filesystem code. - * doc/RegExp.3: clarification of the 'extendMatch' return - values. + * doc/RegExp.3: clarification of the 'extendMatch' return values. -2002-11-11 Jeff Hobbs +2002-11-11 Jeff Hobbs * generic/tclUtil.c (Tcl_Backslash): use TclUtfToUniChar. (Tcl_StringCaseMatch): use TclUtfToUniChar and add further optimizations for the one-byte/char case. - * generic/tclUtf.c: make use of TclUtfToUniChar macro throughout - the functions, and add extra optimization to Tcl_NumUtfChars for + * generic/tclUtf.c: make use of TclUtfToUniChar macro throughout the + functions, and add extra optimization to Tcl_NumUtfChars for one-byte/char case. * generic/tclVar.c (DisposeTraceResult, CallVarTraces): add proper static declarations. - * generic/tclStringObj.c (Tcl_GetCharLength): optimize for the - ascii char case. + * generic/tclStringObj.c (Tcl_GetCharLength): optimize for the ascii + char case. (Tcl_GetUniChar): remove unnecessary use of Tcl_UtfToUniChar. (FillUnicodeRep): Use TclUtfToUniChar. - * generic/tclHash.c (HashStringKey): move string++ lower to save - an instruction. + * generic/tclHash.c (HashStringKey): move string++ lower to save an + instruction. - * generic/tclExecute.c (TclExecuteByteCode): improve INST_STR_CMP - to use memcmp in the one-byte/char case, also use direct index for + * generic/tclExecute.c (TclExecuteByteCode): improve INST_STR_CMP to + use memcmp in the one-byte/char case, also use direct index for INST_STR_INDEX in that case. * generic/tclEncoding.c (UtfToUtfProc, UtfToUnicodeProc): (TableFromUtfProc, EscapeFromUtfProc): Use TclUtfToUniChar. (UnicodeToUtfProc, TableToUtfProc): add 1-byte char optimizations - for Tcl_UniCharToUtf call. These improve encoded channel - conversion speeds by up to 20%. + for Tcl_UniCharToUtf call. These improve encoded channel conversion + speeds by up to 20%. * tests/split.test: added 1-char string split tests - * generic/tclCmdMZ.c (Tcl_SplitObjCmd): Use TclUtfToUniChar. - Also added a special case for single-ascii-char splits. - (Tcl_StringObjCmd): Use TclUtfToUniChar. - For STR_RANGE, support getting ranges of ByteArrays (reverts - change from 2000-05-26). + * generic/tclCmdMZ.c (Tcl_SplitObjCmd): Use TclUtfToUniChar. Also + added a special case for single-ascii-char splits. + (Tcl_StringObjCmd): Use TclUtfToUniChar. For STR_RANGE, support + getting ranges of ByteArrays (reverts change from 2000-05-26). (TraceExecutionProc) add proper static declaration. * generic/tclInt.h: add macro version of Tcl_UtfToUniChar (TclUtfToUniChar) that does the one-byte utf-char check without - calling Tcl_UtfToUniChar, for use by the core. This brings - notable speedups for primarily ascii string handling. + calling Tcl_UtfToUniChar, for use by the core. This brings notable + speedups for primarily ascii string handling. * generic/tcl.h (TCL_PATCH_LEVEL): bump to 8.4.1.1 for patchlevel - only. This interim number will only be reflected by - [info patchlevel]. + only. This interim number will only be reflected by [info patchlevel] -2002-11-11 Kevin Kenny - * doc/Tcl.n: Corrected indentation of the new language. Oops. +2002-11-11 Kevin Kenny + + * doc/Tcl.n: Corrected indentation of the new language. Oops. 2002-11-10 Kevin Kenny - * doc/Tcl.n: Added language to the Endekalogue to make it clear - that substitutions always take place from left to right. [Bug - #635644] + * doc/Tcl.n: Added language to the Endekalogue to make it clear that + substitutions always take place from left to right. [Bug 635644] 2002-11-06 Mo DeJong * changes: Note TclInExit TclInThreadExit changes. * generic/tclEvent.c (TclInExit, TclInThreadExit): - Split out functionality of TclInExit to make it - clear which one should be called in each situation. + Split out functionality of TclInExit to make it clear which one should + be called in each situation. * generic/tclInt.decls: Declare TclInThreadExit. * generic/tclIntDecls.h: Regen. * generic/tclStubInit.c: Regen. @@ -5791,18 +5648,17 @@ * win/tclWinChan.c (FileCloseProc): * win/tclWinConsole.c (ConsoleCloseProc): * win/tclWinPipe.c (TclpCloseFile): - * win/tclWinSerial.c (SerialCloseProc): Invoke the - new TclInThreadExit method instead of TclInExit. + * win/tclWinSerial.c (SerialCloseProc): Invoke the new TclInThreadExit + method instead of TclInExit. 2002-11-06 Mo DeJong * unix/configure: Regen. - * unix/tcl.m4 (SC_CONFIG_CFLAGS): Generate a fatal - configure error if no ar program can be found on the - path. [Bug #582039] + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Generate a fatal configure error if + no ar program can be found on the path. [Bug 582039] * win/configure: Regen. - * win/configure.in: Check that AR, RANLIB, and RC - are found on the path when building with gcc. + * win/configure.in: Check that AR, RANLIB, and RC are found on the + path when building with gcc. 2002-11-03 David Gravereaux @@ -5810,62 +5666,62 @@ STATIC_BUILD and TCL_USE_STATIC_PACKAGES macros are set. * win/makefile.vc: - * win/rules.vc: linkexten option now sets the TCL_USE_STATIC_PACKAGES + * win/rules.vc: linkexten option now sets the TCL_USE_STATIC_PACKAGES macro which also adds the registry and dde object files to the link of the shell. [Patch 479697] Also factored some additional macros - that will be helpful for extension authors. Version grepping of tcl.h + that will be helpful for extension authors. Version grepping of tcl.h will need to be added to complete this. * win/buildall.vc.bat: Added more descriptive commentary. 2002-11-01 David Gravereaux - * win/tclWinReg.c: Changed the Tcl_PkgProvide() line to declare - the registry extension at version 1.1 from 1.0. + * win/tclWinReg.c: Changed the Tcl_PkgProvide() line to declare the + registry extension at version 1.1 from 1.0. 2002-10-31 Andreas Kupries - * library/word.tcl: Changed $tcl_platform to $::tcl_platform to - avoid possible scope trouble. + * library/word.tcl: Changed $tcl_platform to $::tcl_platform to avoid + possible scope trouble. 2002-10-29 Vince Darley * win/tclWinInt.h: * win/tclWin32Dll.c: added comments about certain NULL function - pointers which will be filled in when Tcl_FindExecutable is - called, so that users don't report invalid bugs on this topic. - (No code changes at all). + pointers which will be filled in when Tcl_FindExecutable is called, so + that users don't report invalid bugs on this topic. (No code changes + at all). 2002-10-29 Daniel Steffen - * unix/tclLoadDyld.c (TclpFindSymbol): pass all dyld error - messages upstream [Bug #627546]. + * unix/tclLoadDyld.c (TclpFindSymbol): pass all dyld error messages + upstream [Bug 627546]. 2002-10-28 Andreas Kupries * library/dde/pkgIndex.tcl: - * library/reg/pkgIndex.tcl: Changed the hardwired debug suffix - (d) to the correct suffix (g). + * library/reg/pkgIndex.tcl: Changed the hardwired debug suffix (d) to + the correct suffix (g). -2002-10-28 Don Porter +2002-10-28 Don Porter * library/auto.tcl: Converted the Mac-specific [package unknown] * library/init.tcl: behavior to use a chaining mechanism to extend - * library/package.tcl: the default [tclPkgUnknown]. [Bug 627660] + * library/package.tcl: the default [tclPkgUnknown]. [Bug 627660] * library/tclIndex: [Patch 624509] (steffen) 2002-10-26 David Gravereaux * win/makefile.vc: xcopy on NT 4.0 doesn't support the /Y switch - (overwrite). Added logic to handle this. [Bug 618019] + (overwrite). Added logic to handle this. [Bug 618019] 2002-10-23 Donal K. Fellows - * generic/tclInt.h: Removed definitions of obsolete HistoryEvent - and HistoryRev structures (the history mechanism has been written - in Tcl for some time now.) + * generic/tclInt.h: Removed definitions of obsolete HistoryEvent and + HistoryRev structures (the history mechanism has been written in Tcl + for some time now). -2002-10-22 Jeff Hobbs +2002-10-22 Jeff Hobbs *** 8.4.1 TAGGED FOR RELEASE *** @@ -5882,13 +5738,13 @@ * library/auto.tcl (tcl_findLibrary): * library/package.tcl (tclPkgUnknown): on macosx, search inside the Resources/Scripts subdirectory of any potential package directory - * macosx/Tcl.pbproj/project.pbxproj: add standard Frameworks dirs - to TCL_PACKAGE_PATH make argument. + * macosx/Tcl.pbproj/project.pbxproj: add standard Frameworks dirs to + TCL_PACKAGE_PATH make argument. * unix/tclUnixInit.c (TclpSetVariables): on macosx, add embedded framework dirs to tcl_pkgPath: @executable_path/../Frameworks and - @executable_path/../PrivateFrameworks (if they exist), as well as - the dirs in DYLD_FRAMEWORK_PATH (if set). [Patch #624509] - use standard MAXPATHLEN instead of literal 1024 + @executable_path/../PrivateFrameworks (if they exist), as well as the + dirs in DYLD_FRAMEWORK_PATH (if set). [Patch 624509] use standard + MAXPATHLEN instead of literal 1024 2002-10-22 Donal K. Fellows @@ -5902,7 +5758,7 @@ * generic/tcl.h: Added reminder comment to edit macosx/Tcl.pbproj/project.pbxproj when version number changes. -2002-10-18 Jeff Hobbs +2002-10-18 Jeff Hobbs * library/reg/pkgIndex.tcl: * win/configure: @@ -5911,40 +5767,40 @@ * win/makefile.vc: * win/makefile.bc: Updated to reg1.1 - * doc/registry.n: Added support for broadcasting changes to - * tests/registry.test: the registry Environment. Noted proper code - * win/tclWinReg.c: in the docs. [Patch #625453] + * doc/registry.n: Added support for broadcasting changes to the + * tests/registry.test: registry Environment. Noted proper code in ths + * win/tclWinReg.c: docs. [Patch 625453] * unix/Makefile.in (dist): add any mac/tcl*.sea.hqx files -2002-10-17 Don Porter +2002-10-17 Don Porter * generic/tclVar.c: Fixed code that check for proper # of args to - * tests/var.test: [array names]. Added test. [Bug 624755] + * tests/var.test: [array names]. Added test. [Bug 624755] -2002-10-16 Jeff Hobbs +2002-10-16 Jeff Hobbs * win/configure: add workaround for cygwin windres - * win/tcl.m4 (SC_CONFIG_CFLAGS): problem. [Patch #624010] (howell) + * win/tcl.m4 (SC_CONFIG_CFLAGS): problem. [Patch 624010] (howell) -2002-10-15 Jeff Hobbs +2002-10-15 Jeff Hobbs * README: added archives.tcl.tk note * unix/configure: - * unix/tcl.m4: Correct AIX-5 ppc build flags. - Correct HP 11 64-bit gcc building. [Patch #601051] (martin) + * unix/tcl.m4: Correct AIX-5 ppc build flags. Correct HP 11 64-bit gcc + building. [Patch 601051] (martin) 2002-10-15 Vince Darley * generic/tclCmdMZ.c: - * tests/trace.test: applied patch from Hemang Levana to fix - [Bug #615043] in execution traces with idle tasks firing. + * tests/trace.test: applied patch from Hemang Levana to fix [Bug + 615043] in execution traces with idle tasks firing. -2002-10-14 Jeff Hobbs +2002-10-14 Jeff Hobbs * generic/tclEnv.c (Tcl_PutEnv): correct possible mem leak. - [Patch #623269] (brouwers) + [Patch 623269] (brouwers) 2002-10-11 Donal K. Fellows @@ -5952,15 +5808,15 @@ #defines to let people building with Cygwin build correctly. Also made some comments less misleading... -2002-10-10 Jeff Hobbs +2002-10-10 Jeff Hobbs - * README: fixed minor nits [Bug #607776] (virden) + * README: fixed minor nits [Bug 607776] (virden) * win/configure: * win/tcl.m4: enable USE_THREAD_ALLOC (new threaded allocator) by default in cygwin configure on Windows. -2002-10-10 Don Porter +2002-10-10 Don Porter * doc/Tcl.n: Clarified that namespace separators are legal in the variable names during $-subtitution. [Bug 615139] @@ -5976,12 +5832,11 @@ * unix/tclLoadNext.c * unix/tclLoadOSF.c * unix/tclLoadShl.c - * win/tclWinLoad.c: allow either full paths or simply dll names - to be specified when loading files (the latter will be looked - up by the OS on your PATH/LD_LIBRARY_PATH as appropriate). - Fixes [Bug 611108] + * win/tclWinLoad.c: allow either full paths or simply dll names to be + specified when loading files (the latter will be looked up by the OS + on your PATH/LD_LIBRARY_PATH as appropriate). Fixes [Bug 611108] -2002-10-09 Jeff Hobbs +2002-10-09 Jeff Hobbs * unix/README: doc'ed --enable-symbols options. * unix/Makefile.in: removed @MEM_DEBUG_FLAGS@ subst. @@ -5992,10 +5847,9 @@ 2002-10-09 Kevin B. Kenny - * win/tclWinTime.c: Added code to set an exit handler that - terminates the thread that calibrates the performance counter, so - that the thread won't outlive unloading the Tcl DLL. [Tcl bug - 620735]. + * win/tclWinTime.c: Added code to set an exit handler that terminates + the thread that calibrates the performance counter, so that the thread + won't outlive unloading the Tcl DLL. [Bug 620735]. 2002-10-09 Donal K. Fellows @@ -6013,15 +5867,15 @@ * generic/tclStubInit.c: regen. * generic/tclCompile.h: added prototype for TclCompileVariableCmd. - * mac/tclMacPort.h: removed incorrect definitions - and obsolete definitions. + * mac/tclMacPort.h: removed incorrect definitions and + obsolete definitions. * mac/tclMacChan.c: removed obsolete GetOpenMode() and replaced - associated constants with the analogues (they existing - defs were inconsistent with which was causing havoc when + associated constants with the analogues (they existing defs + were inconsistent with which was causing havoc when Tcl_GetOpenMode was used instead of private GetOpenMode). - * mac/tclMacFCmd.c: removed GenerateUniqueName(), use equivalent - (and identically named) routine from MoreFiles instead. + * mac/tclMacFCmd.c: removed GenerateUniqueName(), use equivalent (and + identically named) routine from MoreFiles instead. * mac/tclMacLoad.c: CONSTification, fixes to Vince's last changes. @@ -6039,8 +5893,8 @@ 2002-10-09 Donal K. Fellows - * doc/Alloc.3: Added a note to mention that attempting to allocate - a zero-length block can return NULL. [Tk bug 619544] + * doc/Alloc.3: Added a note to mention that attempting to allocate a + zero-length block can return NULL. [Tk Bug 619544] 2002-10-04 Donal K. Fellows @@ -6050,7 +5904,7 @@ * tools/eolFix.tcl, tools/genStubs.tcl: [file exist] -> [file exists] Thanks to David Welton. -2002-10-03 Don Porter +2002-10-03 Don Porter * doc/tcltest.n: fixed typo [Bug 618018]. Thanks to "JJM". @@ -6059,13 +5913,13 @@ * tools/man2help2.tcl: * tests/http.test, tests/httpd, tests/httpold.test: * tests/env.test, tests/binary.test, tests/autoMkindex.test: - * library/init.tcl, library/http/http.tcl: [info exist] should - really be [info exists]. [Bug 602566] + * library/init.tcl, library/http/http.tcl: [info exist] should really + be [info exists]. [Bug 602566] - * doc/lsearch.n: Better specification of what happens when -sorted - is mixed with other options. [Bug 617816] + * doc/lsearch.n: Better specification of what happens when -sorted is + mixed with other options. [Bug 617816] -2002-10-01 Jeff Hobbs +2002-10-01 Jeff Hobbs * generic/tclProc.c (TclCreateProc): mask out VAR_UNDEFINED for precompiled locals to support 8.3 precompiled code. @@ -6073,29 +5927,29 @@ 2002-10-01 Donal K. Fellows - * doc/socket.n: Mentioned that ports may be specified as serivce - names as well as integers. [Bug 616843] + * doc/socket.n: Mentioned that ports may be specified as serivce names + as well as integers. [Bug 616843] -2002-09-30 Jeff Hobbs +2002-09-30 Jeff Hobbs - * generic/tclCompCmds.c (TclCompileRegexpCmd): correct the - checking for bad re's that didn't terminate the re string. - Resultant compiles were correct, but much slower than necessary. + * generic/tclCompCmds.c (TclCompileRegexpCmd): correct the checking + for bad re's that didn't terminate the re string. Resultant compiles + were correct, but much slower than necessary. 2002-09-29 David Gravereaux * win/tclAppInit.c: Added proper exiting conditions using Win32 - console signals. This handles the existing lack of a Ctrl+C exit - to call exit handlers when built for thread support. Also, properly + console signals. This handles the existing lack of a Ctrl+C exit to + call exit handlers when built for thread support. Also, properly handles exits from other conditions such as CTRL_CLOSE_EVENT, - CTRL_LOGOFF_EVENT, and CTRL_SHUTDOWN_EVENT signals. In all cases, - exit handlers will be called. [Bug 219355] + CTRL_LOGOFF_EVENT, and CTRL_SHUTDOWN_EVENT signals. In all cases, exit + handlers will be called. [Bug 219355] - * win/makefile.vc: Added missing tclThreadAlloc.c to the build - rules and defines USE_THREAD_ALLOC when TCL_THREADS is defined - to get the new behavior by default. + * win/makefile.vc: Added missing tclThreadAlloc.c to the build rules + and defines USE_THREAD_ALLOC when TCL_THREADS is defined to get the + new behavior by default. -2002-09-27 Don Porter +2002-09-27 Don Porter * README: Bumped to version 8.4.1 to avoid confusion * generic/tcl.h: of CVS snapshots with the actual 8.4.0 @@ -6107,22 +5961,22 @@ * unix/configure: autoconf * win/configure: -2002-09-26 Jeff Hobbs +2002-09-26 Jeff Hobbs * unix/configure: regen. * unix/tcl.m4: improve AIX-4/5 64bit compilation support. - * generic/tclProc.c (Tcl_ProcObjCmd): correct overeager - optimization of noop proc to handle the precompiled case. (sofer) + * generic/tclProc.c (Tcl_ProcObjCmd): correct overeager optimization + of noop proc to handle the precompiled case. (sofer) * unix/ldAix (nmopts): add -X32_64 to make it work for 32 or 64bit mode compilation. - * library/encoding/koi8-u.enc: removed extraneous spaces that - confused encoding reader. [Bug #615115] + * library/encoding/koi8-u.enc: removed extraneous spaces that confused + encoding reader. [Bug 615115] - * unix/Makefile.in: generate source dists with -src designator and - do not generate .Z anymore (just .gz and .zip). + * unix/Makefile.in: generate source dists with -src designator and do + not generate .Z anymore (just .gz and .zip). 2002-09-18 Mumit Khan @@ -6132,38 +5986,37 @@ (SC_PATH_TKCONFIG): Likewise. (SC_PROG_TCLSH): Likewise. (SC_CONFIG_CFLAGS): Assume real Cygwin port and remove -mno-cygwin - flags. Add -mwin32 to extra_cflags and extra_ldflags. - Remove ``-e _WinMain@16'' from LDFLAGS_WINDOW. + flags. Add -mwin32 to extra_cflags and extra_ldflags. Remove ``-e + _WinMain@16'' from LDFLAGS_WINDOW. * win/configure.in: Allow Cygwin build. (SEH test): Define to be 1 instead of empty value. (EXCEPTION_DISPOSITION): Add test. * win/configure: Regenerate. - * generic/tcl.h: Don't explicitly define __WIN32__ for Cygwin, let - the user decide whether to use Windows or POSIX personality. - (TCL_WIDE_INT_TYPE, TCL_LL_MODIFIER, struct Tcl_StatBuf): Define - for Cygwin. - * generic/tclEnv.c (Tcl_CygwinPutenv): putenv replacement for + * generic/tcl.h: Don't explicitly define __WIN32__ for Cygwin, let the + user decide whether to use Windows or POSIX personality. + (TCL_WIDE_INT_TYPE, TCL_LL_MODIFIER, struct Tcl_StatBuf): Define for Cygwin. - * generic/tclFileName.c (Tcl_TranslateFileName): Convert POSIX - to native format. + * generic/tclEnv.c (Tcl_CygwinPutenv): putenv replacement for Cygwin. + * generic/tclFileName.c (Tcl_TranslateFileName): Convert POSIX to + native format. (TclDoGlob): Likewise. * generic/tclPlatDecls.h (TCHAR): Define for Cygwin. - * win/tclWinPort.h (putenv, TclpSysAlloc, TclpSysFree, - TclpSysRealloc): Define for Cygwin. + * win/tclWinPort.h (putenv, TclpSysAlloc, TclpSysFree) + (TclpSysRealloc): Define for Cygwin. 2002-09-26 Daniel Steffen - * macosx/Makefile: preserve environment value of INSTALL_ROOT. - When embedding only use deployment build. Force relink before - embedded build to ensure new linker flags are picked up. + * macosx/Makefile: preserve environment value of INSTALL_ROOT. When + embedding only use deployment build. Force relink before embedded + build to ensure new linker flags are picked up. - * macosx/Tcl.pbproj/project.pbxproj: add symbolic links to - debug lib, stub libs and tclConfig.sh in framework toplevel. - Configure target dependency fix. Fix to 'clean' action. Added - private tcl headers to framework. Install tclsh symbolic link. - Html doc build works when no installed tclsh available. Made - html doc structure in framework more like in Apple frameworks. + * macosx/Tcl.pbproj/project.pbxproj: add symbolic links to debug lib, + stub libs and tclConfig.sh in framework toplevel. Configure target + dependency fix. Fix to 'clean' action. Added private tcl headers to + framework. Install tclsh symbolic link. Html doc build works when no + installed tclsh available. Made html doc structure in framework more + like in Apple frameworks. 2002-09-24 Donal K. Fellows @@ -6171,52 +6024,49 @@ detection to close [Bug 613117] on more systems. * generic/tclCompile.c (TclPrintSource): More CONSTifying. - * generic/tclExecute.c (EvalStatsCmd): Object-ify to reduce - warnings. Thanks to 'CoderX2' on the chat for bringing this to my - attention... + * generic/tclExecute.c (EvalStatsCmd): Object-ify to reduce warnings. + Thanks to 'CoderX2' on the chat for bringing this to my attention... * unix/tcl.m4: Forgot to define TCL_WIDE_INT_IS_LONG at the - appropriate moment. I believe this is the cause of [Bug 613117] + appropriate moment. I believe this is the cause of [Bug 613117] - * doc/lset.n: Changed 'list' to 'varName' for consistency with - lappend documentation. Thanks to Glenn Jackman [Bug 611719] + * doc/lset.n: Changed 'list' to 'varName' for consistency with lappend + documentation. Thanks to Glenn Jackman [Bug 611719] -2002-09-22 Don Porter +2002-09-22 Don Porter * library/tcltest/tcltest.tcl: Corrected [puts -nonewline] within - test bodies. Thanks to Harald Kirsch. [Bug 612786, Patch 612788] - Also corrected reporting of body return code. Thanks to David - Taback [Bug 611922] + test bodies. Thanks to Harald Kirsch. [Bug 612786, Patch 612788] Also + corrected reporting of body return code. Thanks to David Taback [Bug + 611922] * library/tcltest/pkgIndex.tcl: Bump to version 2.2.1. * tests/tcltest.test: added tests for these bugs. 2002-09-15 Mo DeJong * unix/configure: Regen. - * unix/tcl.m4 (SC_CONFIG_CFLAGS): Add PEEK_XCLOSEIM - define under Linux. This is used by Tk to double - check that an X input context is cleaned up - before it is closed. + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Add PEEK_XCLOSEIM define under + Linux. This is used by Tk to double check that an X input context is + cleaned up before it is closed. 2002-09-12 David Gravereaux - * win/coffbase.txt: Added BLT to the virtual base address - listings table should BLT's build tools decide to use it. + * win/coffbase.txt: Added BLT to the virtual base address listings + table should BLT's build tools decide to use it. 2002-09-12 Daniel Steffen * generic/tcl.h: * mac/tclMacApplication.r: * mac/tclMacLibrary.r: - * mac/tclMacResource.r: unified use of the two equivalent - resource compiler header inclusion defines RC_INVOKED and - RESOURCE_INCLUDED, now use RC_INVOKED throughout. + * mac/tclMacResource.r: unified use of the two equivalent resource + compiler header inclusion defines RC_INVOKED and RESOURCE_INCLUDED, + now use RC_INVOKED throughout. 2002-09-10 Mo DeJong - * unix/README: Add note about building extensions - with the same compiler Tcl was built with. - [Tk Bug 592096] + * unix/README: Add note about building extensions with the same + compiler Tcl was built with. [Tk Bug 592096] 2002-09-10 Daniel Steffen @@ -6225,8 +6075,8 @@ 2002-09-10 Daniel Steffen - * unix/Makefile.in: added DYLIB_INSTALL_DIR variable for macosx - and set it to default value ${LIB_RUNTIME_DIR} + * unix/Makefile.in: added DYLIB_INSTALL_DIR variable for macosx and + set it to default value ${LIB_RUNTIME_DIR} * unix/tcl.m4 (Darwin): use DYLIB_INSTALL_DIR instead of LIB_RUNTIME_DIR in the -install_name argument to ld. * unix/configure: regen. @@ -6237,11 +6087,11 @@ @executable_path/../Frameworks via the new DYLIB_INSTALL_DIR unix/Makefile variable. -2002-09-10 Jeff Hobbs +2002-09-10 Jeff Hobbs *** 8.4.0 TAGGED FOR RELEASE *** -2002-09-06 Don Porter +2002-09-06 Don Porter * doc/file.n: Format correction, and clarified [file normalize] returns an absolute path. @@ -6252,29 +6102,29 @@ * tests/tcltest.test: Added nonRoot flag to tests 8.3, 8.4, and 8.12. -2002-09-05 Don Porter +2002-09-05 Don Porter * doc/tcltest.n: Clarified phrasing. * generic/tclBasic.c (TclRenameCommand,CallCommandTraces): * tests/trace.test (trace-27.1): Corrected memory leak when a rename - trace deleted the command being traced. Test added. Thanks to - Hemang Lavana for the fix. [Bug 604609] + trace deleted the command being traced. Test added. Thanks to Hemang + Lavana for the fix. [Bug 604609] * generic/tclVar.c (TclDeleteVars): Corrected logic for setting the TCL_INTERP_DESTROYED flag when calling variable traces. [Tk Bug 605121] 2002-09-04 Miguel Sofer - * generic/tclVar.c (DeleteArray): leak plug [Bug 604239]. Thanks - to dkf and dgp for the long and difficult discussion in the chat. + * generic/tclVar.c (DeleteArray): leak plug [Bug 604239]. Thanks to + dkf and dgp for the long and difficult discussion in the chat. -2002-09-03 Jeff Hobbs +2002-09-03 Jeff Hobbs * generic/tclVar.c (Tcl_UpVar2): code cleanup to not use goto * unix/configure: remove -pthread from LIBS on FreeBSD in thread - * unix/tcl.m4: enabled build. [Bug #602849] + * unix/tcl.m4: enabled build. [Bug 602849] 2002-09-03 Miguel Sofer @@ -6283,19 +6133,19 @@ 2002-09-03 Daniel Steffen - * macosx/Tcl.pbproj/project.pbxproj: Bumped version number to - 8.4.0 and updated copyright info. + * macosx/Tcl.pbproj/project.pbxproj: Bumped version number to 8.4.0 + and updated copyright info. 2002-09-03 Miguel Sofer - * generic/tclVar.c (Tcl_UpVar2): a Tcl_Obj was being leaked on - error return from TclGetFrame. + * generic/tclVar.c (Tcl_UpVar2): a Tcl_Obj was being leaked on error + return from TclGetFrame. -2002-09-03 Don Porter +2002-09-03 Don Porter * changes: Updated changes for 8.4.0 release. -2002-09-02 Jeff Hobbs +2002-09-02 Jeff Hobbs * unix/tclUnixFile.c (TclpObjLink): removed unnecessary/unfreed extra native char*. @@ -6305,7 +6155,7 @@ * unix/configure: * unix/tcl.m4: added 64-bit gcc compilation support on HP-11. - [Patch #601051] (martin) + [Patch 601051] (martin) * README: Bumped version number to 8.4.0 * generic/tcl.h: @@ -6318,12 +6168,12 @@ * win/configure.in: * generic/tclInterp.c (SlaveCreate): make sure that the memory and - checkmem commands are initialized in non-safe slave interpreters - when TCL_MEM_DEBUG is used. [Bug #583445] + checkmem commands are initialized in non-safe slave interpreters when + TCL_MEM_DEBUG is used. [Bug 583445] - * win/tclWinConsole.c (ConsoleCloseProc): only wait on writable - pipe if there was something to write. This may prevent infinite - wait on exit. + * win/tclWinConsole.c (ConsoleCloseProc): only wait on writable pipe + if there was something to write. This may prevent infinite wait on + exit. * tests/exec.test: marked exec-18.1 unixOnly until the Windows incompatability (in the test, not the core) can be resolved. @@ -6343,60 +6193,59 @@ 2002-08-31 Daniel Steffen - *** macosx-8-4-branch merged into the mainline [tcl patch #602770] *** + *** macosx-8-4-branch merged into the mainline [Patch 602770] *** * generic/tcl.decls: added new macosx specific entry to stubs table. - * tools/genStubs.tcl: added generation of platform guards for - macosx. This is a little more complex than it seems, because MacOS - X IS "unix" plus a little bit, for the purposes of Tcl. BUT - unfortunately, Tk uses "unix" to mean X11. So added platform keys - for macosx (the little added to "unix"), "aqua" and "x11" to - distinguish these for Tk. + * tools/genStubs.tcl: added generation of platform guards for macosx. + This is a little more complex than it seems, because MacOS X IS "unix" + plus a little bit, for the purposes of Tcl. BUT unfortunately, Tk uses + "unix" to mean X11. So added platform keys for macosx (the little + added to "unix"), "aqua" and "x11" to distinguish these for Tk. - * generic/tcl.h: added a #ifnded RESOURCE_INCLUDED so that tcl.h - can be passed to the resource compiler. + * generic/tcl.h: added a #ifnded RESOURCE_INCLUDED so that tcl.h can + be passed to the resource compiler. * generic/tcl.h: * generic/tclNotify.c: added a few Notifier procs, to be able to - modify more bits of the Tcl notifier dynamically. Required to get - Mac OS X Tk to live on top of the Tcl Unix threaded notifier. - Changes the size of the Tcl_NotifierProcs structure, but doesn't - move any elements around. + modify more bits of the Tcl notifier dynamically. Required to get Mac + OS X Tk to live on top of the Tcl Unix threaded notifier. Changes the + size of the Tcl_NotifierProcs structure, but doesn't move any elements + around. * unix/tclUnixNotfy.c: moved the call to Tcl_ConditionNotify till - AFTER we are done mucking with the pointer swap. Fixes cases where - the thread waiting on the condition wakes & accesses the - waitingListPtr before it gets reset, causing a hang. + AFTER we are done mucking with the pointer swap. Fixes cases where the + thread waiting on the condition wakes & accesses the waitingListPtr + before it gets reset, causing a hang. - * library/auto.tcl (tcl_findLibrary): added checking the - directories in the tcl_pkgPath for library files on macosx to - enable support of the standard Mac OSX library locations + * library/auto.tcl (tcl_findLibrary): added checking the directories + in the tcl_pkgPath for library files on macosx to enable support of + the standard Mac OSX library locations * unix/Makefile.in: * unix/configure.in: - * unix/tcl.m4: added MAC_OSX_DIR. Added PLAT_OBJS to the OBJS: - there are some MacOS X specific files now for Tcl, and when I get - he resource & applescript stuff ported over, and restore support - for FindFiles, etc, there will be a few more. - Added LD_LIBRARY_PATH_VAR configure variable to avoid having to set - all possible LD_LIBRARY_PATH analogues on all platforms. - LD_LIBRARY_PATH_VAR is "LD_LIBRARY_PATH" by default, "LIBPATH" on - AIX, "SHLIB_PATH" on HPUX and "DYLD_LIBRARY_PATH" on Mac OSX. - Added configure option to package Tcl as a framework on Mac OSX. + * unix/tcl.m4: added MAC_OSX_DIR. Added PLAT_OBJS to the OBJS: there + are some MacOS X specific files now for Tcl, and when I get he + resource & applescript stuff ported over, and restore support for + FindFiles, etc, there will be a few more. Added LD_LIBRARY_PATH_VAR + configure variable to avoid having to set all possible LD_LIBRARY_PATH + analogues on all platforms. LD_LIBRARY_PATH_VAR is "LD_LIBRARY_PATH" + by default, "LIBPATH" on AIX, "SHLIB_PATH" on HPUX and + "DYLD_LIBRARY_PATH" on Mac OSX. Added configure option to package Tcl + as a framework on Mac OSX. * macosx/tclMacOSXBundle.c (new): support for finding Tcl extension packaged as 'bundles' in the standard Mac OSX library locations. - * unix/tclUnixInit.c: added support for findig the tcl script - library inside Tcl packaged as a framework on Mac OSX. + * unix/tclUnixInit.c: added support for findig the tcl script library + inside Tcl packaged as a framework on Mac OSX. * macosx/Tcl.pbproj/jingham.pbxuser (new): * macosx/Tcl.pbproj/project.pbxproj (new): project for Apple's ProjectBuilder IDE. - * macosx/Makefile (new): simple makefile for building the project - from the command line via the ProjectBuilder tool 'pbxbuild'. + * macosx/Makefile (new): simple makefile for building the project from + the command line via the ProjectBuilder tool 'pbxbuild'. * unix/configure: * generic/tclStubInit.c: @@ -6405,19 +6254,17 @@ 2002-08-29 Andreas Kupries * win/tclWinThrd.c (TclpFinalizeThreadData, TclWinFreeAllocCache): - Applied patch for bug #599428, provided by Miguel Sofer - . + Applied patch for [Bug 599428] (sofer) 2002-08-28 David Gravereaux * generic/tclEnv.c: * unix/configure.in: - * win/tclWinPort.h: putenv() on some systems copies the buffer - rather than taking reference to it. This causes memory leaks - and is know to effect mswindows (msvcrt) and NetBSD 1.5.2 . This - patch tests for this behavior and turns on -DHAVE_PUTENV_THAT_COPIES=1 - when approriate. Thanks to David Welton for assistance. - [Bug 414910] + * win/tclWinPort.h: putenv() on some systems copies the buffer rather + than taking reference to it. This causes memory leaks and is know to + effect mswindows (msvcrt) and NetBSD 1.5.2. This patch tests for this + behavior and turns on -DHAVE_PUTENV_THAT_COPIES=1 when approriate. + Thanks to David Welton for assistance. [Bug 414910] * unix/configure: regen'd @@ -6425,36 +6272,36 @@ * doc/eval.n: Added mention of list command and corrected "SEE ALSO". - * unix/configure.in: Cache handling of ac_cv_type_socklen_t was - wrong. [Bug 600931] reported by John Ellson. Fixed by putting the - brackets where they belong. + * unix/configure.in: Cache handling of ac_cv_type_socklen_t was wrong. + [Bug 600931] reported by John Ellson. Fixed by putting the brackets + where they belong. 2002-08-26 Miguel Sofer - * generic/tclCompCmds.c: fix for [Bug 599788] (error in element - name causing segfault), reported by Tom Wilkason. Fixed by copying - the tokens instead of the source string. + * generic/tclCompCmds.c: fix for [Bug 599788] (error in element name + causing segfault), reported by Tom Wilkason. Fixed by copying the + tokens instead of the source string. 2002-08-26 Miguel Sofer - * generic/tclThreadAlloc.c: small optimisation, reducing the - new allocator's overhead. + * generic/tclThreadAlloc.c: small optimisation, reducing the new + allocator's overhead. 2002-08-23 Miguel Sofer - * generic/tclObj.c (USE_THREAD_ALLOC): fixed leak [Bug 597936]. - Thanks to Zoran Vasiljevic. + * generic/tclObj.c (USE_THREAD_ALLOC): fixed leak [Bug 597936]. Thanks + to Zoran Vasiljevic. 2002-08-23 Miguel Sofer - * generic/tclThreadAlloc.c (USE_THREAD_ALLOC): moving objects - between caches as a block, instead of one-by-one. + * generic/tclThreadAlloc.c (USE_THREAD_ALLOC): moving objects between + caches as a block, instead of one-by-one. 2002-08-22 Miguel Sofer * generic/tclBasic.c: - * generic/tclCmdMZ.c: fix for freed memory r/w in delete traces - [Bug 589863], patch by Hemang Lavana. + * generic/tclCmdMZ.c: fix for freed memory r/w in delete traces [Bug + 589863], patch by Hemang Lavana. 2002-08-20 Andreas Kupries @@ -6464,10 +6311,10 @@ * unix/configure.in: Added usage of SC_ENABLE_MEMDEBUG. * win/tcl.m4: * unix/tcl.m4: Added macro SC_ENABLE_MEMDEBUG. Allows a user of - configure to (de)activate memory validation and debugging - (TCL_MEM_DEBUG). No need to modify the makefile anymore. + configure to (de)activate memory validation and debugging + (TCL_MEM_DEBUG). No need to modify the makefile anymore. -2002-08-20 Don Porter +2002-08-20 Don Porter * generic/tclCkalloc.c: CONSTified MemoryCmd and CheckmemCmd. @@ -6494,30 +6341,28 @@ 2002-08-19 Andreas Kupries * unix/tclUnixTest.c (TestfilehandlerCmd): Changed - readable/writable to the more common readable|writable. - - Fixes SF #596034 reported by Larry Virden - . + readable/writable to the more common readable|writable. + Fixes [Bug 596034] (lvirden) 2002-08-16 Donal K. Fellows * tests/fCmd.test: Added test to make sure that the cause of the problem is detectable with an unpatched Tcl. - * doc/ObjectType.3: Added note on the root cause of this problem - to the documentation, since it is possible for user code to - trigger this sort of behaviour too. + * doc/ObjectType.3: Added note on the root cause of this problem to + the documentation, since it is possible for user code to trigger this + sort of behaviour too. * generic/tclIOUtil.c (SetFsPathFromAny): Objects should only have their old representation deleted when we know that we are about to install a new one. This stops a weird TclX bug under Linux with - certain kinds of memory debugging enabled which essentally came - down to a double-free of a string. + certain kinds of memory debugging enabled which essentally came down + to a double-free of a string. 2002-08-14 Miguel Sofer * generic/tclInt.h: * generic/tclObj.c: (code cleanup) factored the parts in the macros - TclNewObj() / TclDecrRefCount() into a common part for all - memory allocators and two new macros TclAllocObjStorage() / + TclNewObj() / TclDecrRefCount() into a common part for all memory + allocators and two new macros TclAllocObjStorage() / TclFreeObjStorage() that are specific to each allocator and fully describe the differences. Removed allocator-specific code from tclObj.c by using the macros. @@ -6528,8 +6373,8 @@ 2002-08-08 David Gravereaux - * tools/man2help.tcl: Fixed $argv handling bug where if -bitmap - wasn't specified $argc was off by one. + * tools/man2help.tcl: Fixed $argv handling bug where if -bitmap wasn't + specified $argc was off by one. 2002-08-08 Miguel Sofer @@ -6538,11 +6383,11 @@ * tests/subst.test: added 5.8-10 as further tests for [Bug 495207] -2002-08-08 Don Porter +2002-08-08 Don Porter * tests/README: Noted removal of defs.tcl. -2002-08-08 Jeff Hobbs +2002-08-08 Jeff Hobbs * doc/lsearch.n: corrected lsearch docs to use -inline in examples. @@ -6551,20 +6396,19 @@ * tests/fCmd.test: * tests/unixFCmd.test: updated tests for new link copy behavior. * generic/tclFCmd.c (CopyRenameOneFile): changed the behavior to - follow links to endpoints and copy that file/directory instead of - just copying the surface link. This means that trying to copy a - link that has no endpoint (danling link) is an error. - [Patch #591647] (darley) + follow links to endpoints and copy that file/directory instead of just + copying the surface link. This means that trying to copy a link that + has no endpoint (danling link) is an error. [Patch 591647] (darley) (CopyRenameOneFile): this is currently disabled by default until - further issues with such behavior (like relative links) can be - handled correctly. + further issues with such behavior (like relative links) can be handled + correctly. * tests/README: slight wording improvements 2002-08-07 Miguel Sofer - * docs/BoolObj.3: added description of valid string reps for a - boolean object [Bug 584794] + * docs/BoolObj.3: added description of valid string reps for a boolean + object [Bug 584794] * generic/tclObj.c: optimised Tcl_GetBooleanFromObj and SetBooleanFromAny to avoid parsing the string rep when it can be avoided [Bugs 584650, 472576] @@ -6572,8 +6416,7 @@ 2002-08-07 Miguel Sofer * generic/tclCompile.h: - * generic/tclObj.c: making tclCmdNameType static ([Bug 584567], - Don Porter). + * generic/tclObj.c: making tclCmdNameType static [Bug 584567] (dgp) 2002-08-07 Miguel Sofer @@ -6584,27 +6427,26 @@ 2002-08-06 Daniel Steffen * generic/tclInt.decls: - * unix/tclUnixThrd.c: Added stubs and implementations for - non-threaded build for the tclUnixThrd.c procs TclpReaddir, - TclpLocaltime, TclpGmtime and TclpInetNtoa. - Fixes link errors in stubbed & threaded extensions that include - tclUnixPort.h and use any of the procs readdir, localtime, - gmtime or inet_ntoa (e.g. TclX 8.4) [Bug 589526] + * unix/tclUnixThrd.c: Added stubs and implementations for non-threaded + build for the tclUnixThrd.c procs TclpReaddir, TclpLocaltime, + TclpGmtime and TclpInetNtoa. Fixes link errors in stubbed & threaded + extensions that include tclUnixPort.h and use any of the procs + readdir, localtime, gmtime or inet_ntoa (e.g. TclX 8.4) [Bug 589526] * generic/tclIntPlatDecls.h: * generic/tclStubInit.c: Regen. -2002-08-05 Don Porter +2002-08-05 Don Porter * library/tcltest/tcltest.tcl: The setup and cleanup scripts are now * library/tcltest/pkgIndex.tcl: skipped when a test is skipped, fixing - * tests/tcltest.test: [Bug 589859]. Test for bug added, and + * tests/tcltest.test: [Bug 589859]. Test for bug added, and corrected tcltest package bumped to version 2.2. - * generic/tcl.decls: Restored Tcl_Concat to return (char *). Like + * generic/tcl.decls: Restored Tcl_Concat to return (char *). Like * generic/tclDecls.h: Tcl_Merge, it transfers ownership of a dynamic * generic/tclUtil.c: allocated string to the caller. -2002-08-04 Don Porter +2002-08-04 Don Porter * doc/CmdCmplt.3: Applied Patch 585105 to fully CONST-ify * doc/Concat.3: all remaining public interfaces of Tcl. @@ -6618,36 +6460,36 @@ * doc/SetVar.3: to be writable either. * doc/TraceVar.3: * doc/UpVar.3: Compatibility support has been enhanced so - * generic/tcl.decls that a #define of USE_NON_CONST will remove - * generic/tcl.h all possible source incompatibilities with - * generic/tclBasic.c the 8.3 version of the header file(s). - * generic/tclCmdMZ.c The new #define of USE_COMPAT_CONST now does - * generic/tclCompCmds.c what USE_NON_CONST used to do -- disable - * generic/tclCompExpr.c only those new CONST's that introduce - * generic/tclCompile.c irreconcilable incompatibilities. - * generic/tclCompile.h - * generic/tclDecls.h Several bugs are also fixed by this patch. - * generic/tclEnv.c [Bugs 584051,580433] [Patches 585105,582429] - * generic/tclEvent.c - * generic/tclInt.decls - * generic/tclInt.h - * generic/tclIntDecls.h - * generic/tclInterp.c - * generic/tclLink.c - * generic/tclObj.c - * generic/tclParse.c - * generic/tclParseExpr.c - * generic/tclProc.c - * generic/tclTest.c - * generic/tclUtf.c - * generic/tclUtil.c - * generic/tclVar.c - * mac/tclMacTest.c - * tests/expr-old.test - * tests/parseExpr.test - * unix/tclUnixTest.c - * unix/tclXtTest.c - * win/tclWinTest.c + * generic/tcl.decls: that a #define of USE_NON_CONST will remove + * generic/tcl.h: all possible source incompatibilities with + * generic/tclBasic.c: the 8.3 version of the header file(s). + * generic/tclCmdMZ.c: The new #define of USE_COMPAT_CONST now does + * generic/tclCompCmds.c:what USE_NON_CONST used to do -- disable + * generic/tclCompExpr.c:only those new CONST's that introduce + * generic/tclCompile.c: irreconcilable incompatibilities. + * generic/tclCompile.h: + * generic/tclDecls.h: Several bugs are also fixed by this patch. + * generic/tclEnv.c: [Bugs 584051,580433] [Patches 585105,582429] + * generic/tclEvent.c: + * generic/tclInt.decls: + * generic/tclInt.h: + * generic/tclIntDecls.h: + * generic/tclInterp.c: + * generic/tclLink.c: + * generic/tclObj.c: + * generic/tclParse.c: + * generic/tclParseExpr.c: + * generic/tclProc.c: + * generic/tclTest.c: + * generic/tclUtf.c: + * generic/tclUtil.c: + * generic/tclVar.c: + * mac/tclMacTest.c: + * tests/expr-old.test: + * tests/parseExpr.test: + * unix/tclUnixTest.c: + * unix/tclXtTest.c: + * win/tclWinTest.c: 2002-08-01 Miguel Sofer @@ -6661,24 +6503,23 @@ 2002-08-01 Mo DeJong - * generic/tclCkalloc.c (TclFinalizeMemorySubsystem): - Don't lock the ckalloc mutex before invoking the - Tcl_DumpActiveMemory function since it also - locks the same mutex. This code is only executed - when "memory onexit filename" has been executed - and Tcl is compiled with -DTCL_MEM_DEBUG. + * generic/tclCkalloc.c (TclFinalizeMemorySubsystem): Don't lock the + ckalloc mutex before invoking the Tcl_DumpActiveMemory function since + it also locks the same mutex. This code is only executed when "memory + onexit filename" has been executed and Tcl is compiled with + -DTCL_MEM_DEBUG. 2002-08-01 Reinhard Max - * win/tclWinPort.h: The windows headers don't provide socklen_t, - so we have to do it. + * win/tclWinPort.h: The windows headers don't provide socklen_t, so we + have to do it. 2002-07-31 Miguel Sofer * generic/tclInt.h (USE_THREAD_ALLOC): for unshared objects, TclDecrRefCount now frees the internal rep before the string rep - - just like the non-macro Tcl_DecrRefCount/TclFreeObj [Bug 524802]. - For the other allocators the fix was done on 2002-03-06. + just like the non-macro Tcl_DecrRefCount/TclFreeObj [Bug 524802]. For + the other allocators the fix was done on 2002-03-06. 2002-07-31 Miguel Sofer @@ -6692,30 +6533,28 @@ * unix/tcl.m4 (SC_BUGGY_STRTOD): Solaris 2.8 still has a buggy strtod() implementation; make sure we detect it. - * tests/expr.test (expr-22.*): Marked as non-portable because it - seems that these tests have an annoying tendency to fail in - unexpected ways. [Bugs 584825, 584950, 585986] + * tests/expr.test (expr-22.*): Marked as non-portable because it seems + that these tests have an annoying tendency to fail in unexpected ways. + [Bugs 584825, 584950, 585986] 2002-07-30 Andreas Kupries * tests/io.test: * generic/tclIO.c (WriteChars): Added flag to break out of loop if - nothing of the input is consumed at all, to prevent infinite - looping of called with a non-UTF-8 string. Fixes Bug 584603 - (partially). Added new test "io-60.1". Might need additional - changes to Tcl_Main so that unprintable results are printed as - binary data. + nothing of the input is consumed at all, to prevent infinite looping + of called with a non-UTF-8 string. Fixes [Bug 584603] partially. + Added new test "io-60.1". Might need additional changes to Tcl_Main so + that unprintable results are printed as binary data. 2002-07-29 Mo DeJong - * unix/Makefile.in: Use CC_SEARCH_FLAGS instead of - LD_SEARCH_FLAGS when linking with ${CC}. + * unix/Makefile.in: Use CC_SEARCH_FLAGS instead of LD_SEARCH_FLAGS + when linking with ${CC}. * unix/configure: Regen. - * unix/configure.in: Don't subst CC_SEARCH_FLAGS or - LD_SEARCH_FLAGS since this is now done in tcl.m4. - * unix/tcl.m4 (SC_CONFIG_CFLAGS): Document and - set CC_SEARCH_FLAGS whenever LD_SEARCH_FLAGS is set. - [Tcl patch 588290] + * unix/configure.in: Don't subst CC_SEARCH_FLAGS or LD_SEARCH_FLAGS + since this is now done in tcl.m4. + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Document and set CC_SEARCH_FLAGS + whenever LD_SEARCH_FLAGS is set. [Patch 588290] 2002-07-29 Reinhard Max @@ -6737,157 +6576,150 @@ * generic/tcl.h: * generic/tclBasic.c: - * generic/tclInterp.c: added the new flag TCL_EVAL_INVOKE to - the interface of the Tcl_Eval* functions, removing the + * generic/tclInterp.c: added the new flag TCL_EVAL_INVOKE to the + interface of the Tcl_Eval* functions, removing the TCL_EVAL_NO_TRACEBACK added yesterday: alias invocations not only - require no tracebacks, but also look up the command name in the - global scope - see new test interp-9.4 - * tests/interp.test: added 9.3 to test for safety of aliases to - hidden commands, 9.4 to test for correct command lookup scope. + require no tracebacks, but also look up the command name in the global + scope - see new test interp-9.4 + * tests/interp.test: added 9.3 to test for safety of aliases to hidden + commands, 9.4 to test for correct command lookup scope. 2002-07-29 Donal K. Fellows * generic/regc_locale.c (cclass): [[:xdigit:]] is only a defined - concept on western characters, so should not allow any unicode - digit, and hence number of ranges in [[:xdigit:]] is fixed. + concept on western characters, so should not allow any unicode digit, + and hence number of ranges in [[:xdigit:]] is fixed. * tests/reg.test: Added test to detect the bug. * generic/regc_cvec.c (newcvec): Corrected initial size value in - character vector structure. [Bug 578363] Many thanks to + character vector structure. [Bug 578363] Many thanks to pvgoran@users.sf.net for tracking this down. 2002-07-28 Miguel Sofer * generic/tcl.h: - * generic/tclBasic.c: added the new flag TCL_EVAL_NO_TRACEBACK to - the interface of the Tcl_Eval* functions. Modified the error - message for too many nested evaluations. + * generic/tclBasic.c: added the new flag TCL_EVAL_NO_TRACEBACK to the + interface of the Tcl_Eval* functions. Modified the error message for + too many nested evaluations. * generic/tclInterp.h: changed the Alias struct to be of variable - length and store the prefix arguments directly (instead of a - pointer to a Tcl_Obj list). Made AliasObjCmd call Tcl_EvalObjv - instead of TclObjInvoke - thus making aliases trigger execution - traces [Bug 582522]. + length and store the prefix arguments directly (instead of a pointer + to a Tcl_Obj list). Made AliasObjCmd call Tcl_EvalObjv instead of + TclObjInvoke - thus making aliases trigger execution traces. [Bug + 582522] * tests/interp.test: * tests/stack.test: adapted to the new error message. - * tests/trace.test: added tests for aliases firing the exec - traces. + * tests/trace.test: added tests for aliases firing the exec traces. 2002-07-27 Mo DeJong - * unix/Makefile.in: Revert fix for Tcl bug 529801 - since it was incorrect and broke the build on - other systems. Fix Tcl bug 587299. - Add MAJOR_VERSION, MINOR_VERSION, PATCH_LEVEL, - SHLIB_LD_FLAGS, SHLIB_LD_LIBS, CC_SEARCH_FLAGS, - LD_SEARCH_FLAGS, and LIB_FILE variables to support - more generic library build/install rules. + * unix/Makefile.in: Revert fix for Tcl bug 529801 since it was + incorrect and broke the build on other systems. Fix [Bug 587299]. Add + MAJOR_VERSION, MINOR_VERSION, PATCH_LEVEL, SHLIB_LD_FLAGS, + SHLIB_LD_LIBS, CC_SEARCH_FLAGS, LD_SEARCH_FLAGS, and LIB_FILE + variables to support more generic library build/install rules. * unix/configure: Regen. - * unix/configure.in: Move AC_PROG_RANLIB into - tcl.m4. Move shared build test and setting - of MAKE_LIB and MAKE_STUB_LIB into tcl.m4. - Move subst of a number of variables into - tcl.m4 where they are defined. + * unix/configure.in: Move AC_PROG_RANLIB into tcl.m4. Move shared + build test and setting of MAKE_LIB and MAKE_STUB_LIB into tcl.m4. Move + subst of a number of variables into tcl.m4 where they are defined. * unix/tcl.m4 (SC_ENABLE_SYMBOLS, SC_CONFIG_CFLAGS): - Subst vars where they are defined. Add MAKE_LIB, - MAKE_STUB_LIB, INSTALL_LIB, and INSTALL_STUB_LIB - rules to deal with the ugly details of running - ranlib on static libs at build and install time. - Replace TCL_SHLIB_LD_EXTRAS with SHLIB_LD_FLAGS - and use it when building a shared library. + Subst vars where they are defined. Add MAKE_LIB, MAKE_STUB_LIB, + INSTALL_LIB, and INSTALL_STUB_LIB rules to deal with the ugly details + of running ranlib on static libs at build and install time. Replace + TCL_SHLIB_LD_EXTRAS with SHLIB_LD_FLAGS and use it when building a + shared library. * unix/tclConfig.sh.in: Add TCL_CC_SEARCH_FLAGS. 2002-07-26 Miguel Sofer - * generic/tclExecute.c: fixed Tcl_Obj leak in code corresponding - to the macro NEXT_INST_V(x, 0, 1) [Bug 587495]. + * generic/tclExecute.c: fixed Tcl_Obj leak in code corresponding to + the macro NEXT_INST_V(x, 0, 1). [Bug 587495] 2002-07-26 Miguel Sofer - * generic/tclVar.c (TclObjLookupVar): leak fix and improved - comments. + * generic/tclVar.c (TclObjLookupVar): leak fix and improved comments. -2002-07-26 Jeff Hobbs +2002-07-26 Jeff Hobbs * generic/tclVar.c (TclLookupVar): removed early returns that - prevented the parens from being restored. also removed goto label - as it was not necessary. + prevented the parens from being restored. also removed goto label as + it was not necessary. 2002-07-24 Miguel Sofer * generic/tclExecute.c: * tests/expr-old.test: fix for erroneous error messages in [expr], - [Bug 587140] reported by Martin Lemburg. + [Bug 587140] reported by Martin Lemburg. -2002-07-25 Joe English - * generic/tclProc.c: fix for Tk Bug #219218 "error handling - with bgerror in Tk" +2002-07-25 Joe English + + * generic/tclProc.c: fix for [Tk Bug 219218] "error handling with + bgerror in Tk" 2002-07-24 Miguel Sofer * generic/tclExecute.c: restoring full TCL_COMPILE_DEBUG functionality. -2002-07-24 Don Porter +2002-07-24 Don Porter - * tests/unixInit.test: relaxed unixInit-3.1 to accept iso8859-15 - as a valid C encoding. [Bug 575336] + * tests/unixInit.test: relaxed unixInit-3.1 to accept iso8859-15 as a + valid C encoding. [Bug 575336] 2002-07-24 Miguel Sofer - * generic/tclExecute.c: restoring the tcl_traceCompile - functionality while I repair tcl_traceExec. The core now compiles - and runs also under TCL_COMPILE_DEBUG, but execution in the - bytecode engine can still not be traced. + * generic/tclExecute.c: restoring the tcl_traceCompile functionality + while I repair tcl_traceExec. The core now compiles and runs also + under TCL_COMPILE_DEBUG, but execution in the bytecode engine can + still not be traced. 2002-07-24 Daniel Steffen * unix/Makefile.in: - * unix/configure.in: corrected fix for [Bug 529801]: ranlib - only needed for static builds on Mac OS X. + * unix/configure.in: corrected fix for [Bug 529801]: ranlib only + needed for static builds on Mac OS X. * unix/configure: Regen. * unix/tclLoadDyld.c: fixed small bugs introduced by Vince, implemented library unloading correctly (needs OS X 10.2). -2002-07-23 Joe English +2002-07-23 Joe English * doc/OpenFileChnl.3: (Updates from Larry Virden) * doc/open.n: * doc/tclsh.1: Fix section numbers in Unix man page references. - * doc/lset.n: In EXAMPLES section, include command to set the - initial value used in subsequent examples. + * doc/lset.n: In EXAMPLES section, include command to set the initial + value used in subsequent examples. * doc/http.n: Package version updated to 2.4. 2002-07-23 Mo DeJong * unix/configure: Regen. - * unix/tcl.m4 (SC_CONFIG_CFLAGS): Enable 64 bit compilation - when using the native compiler on a 64 bit version of IRIX. - [Tcl bug 219220] + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Enable 64 bit compilation when using + the native compiler on a 64 bit version of IRIX. [Bug 219220] 2002-07-23 Mo DeJong - * unix/Makefile.in: Combine ranlib tests and - avoid printing unless ranlib is actually run. + * unix/Makefile.in: Combine ranlib tests and avoid printing unless + ranlib is actually run. 2002-07-23 Mo DeJong - * unix/tcl.m4 (SC_PATH_X): Set XINCLUDES to "" instead - of "# no special path needed" or "# no include files found" - when x headers cannot be located. + * unix/tcl.m4 (SC_PATH_X): Set XINCLUDES to "" instead of "# no + special path needed" or "# no include files found" when x headers + cannot be located. 2002-07-22 Vince Darley - * generic/tclIOUtil.c: made tclNativeFilesystem static - (since 07-19 changes removed its usage elsewhere), and - added comments about its usage. + * generic/tclIOUtil.c: made tclNativeFilesystem static (since 07-19 + changes removed its usage elsewhere), and added comments about its + usage. * generic/tclLoad.c: * generic/tcl.h: * generic/tcl.decls: - * doc/FileSystem.3: converted last load-related ClientData - parameter to Tcl_LoadHandle opaque structure, removing a - couple of casts in the process. + * doc/FileSystem.3: converted last load-related ClientData parameter + to Tcl_LoadHandle opaque structure, removing a couple of casts in the + process. - * generic/tclInt.h: removed tclNativeFilesystem declaration - since it is now static again. + * generic/tclInt.h: removed tclNativeFilesystem declaration since it + is now static again. 2002-07-22 Donal K. Fellows @@ -6898,7 +6730,7 @@ * generic/tclParseExpr.c (GetLexeme): Allowed parser to recognise 'Inf' as a floating-point number. [Bug 218000] -2002-07-21 Don Porter +2002-07-21 Don Porter * tclIOUtil.c: Silence compiler warning. [Bug 584408]. @@ -6906,23 +6738,22 @@ * generic/tclIOUtil.c: fix to GetFilesystemRecord * win/tclWinFile.c: - * unix/tclUnixFile.c: fix to subtle problem with links shown - up by latest tclkit builds. + * unix/tclUnixFile.c: fix to subtle problem with links shown up by + latest tclkit builds. 2002-07-19 Mo DeJong * unix/configure: * unix/configure.in: * win/configure: - * win/configure.in: Add AC_PREREQ(2.13) in an attempt - to make it more clear that the configure scripts - must be generated with autoconf version 2.13. - [Bug 583573] + * win/configure.in: Add AC_PREREQ(2.13) in an attempt to make it more + clear that the configure scripts must be generated with autoconf + version 2.13. [Bug 583573] 2002-07-19 Vince Darley - * unix/Makefile.in: fix to build on MacOS X [Bug 529801], bug - report and fix from jcw. + * unix/Makefile.in: fix to build on MacOS X [Bug 529801], bug report + and fix from jcw. 2002-07-19 Donal K. Fellows @@ -6936,7 +6767,7 @@ * generic/tclCompExpr.c (operatorTable): * unix/tclUnixTime.c (tmKey): * generic/tclIOUtil.c (theFilesystemEpoch, filesystemWantToModify, - filesystemIteratorsInProgress, filesystemOkToModify): Made these + (filesystemIteratorsInProgress, filesystemOkToModify): Made these variables static. * unix/tclUnixFile.c: Renamed nativeFilesystem to @@ -6947,13 +6778,13 @@ * generic/tclUtf.c (totalBytes): Made this array static and const. * generic/tclParse.c (typeTable): Made this array static and const. - (Tcl_ParseBraces): Simplified error handling case so that scans - are only performed when needed, and flags are simpler too. + (Tcl_ParseBraces): Simplified error handling case so that scans are + only performed when needed, and flags are simpler too. - * license.terms: Added AS to list of copyright holders; it's only - fair for the current gatekeepers to be listed here! + * license.terms: Added AS to list of copyright holders; it's only fair + for the current gatekeepers to be listed here! - * tests/cmdMZ.test: Renamed constraint for clarity. [Bug#583427] + * tests/cmdMZ.test: Renamed constraint for clarity. [Bug 583427] Added tests for the [time] command, which was previously only indirectly tested! @@ -6961,8 +6792,8 @@ * generic/tclInt.h: * generic/tcl.h: - * */*Load*.c: added comments on changes of 07/17 and - replaced clientData with Tcl_LoadHandle in all locations. + * */*Load*.c: added comments on changes of 07/17 and replaced + clientData with Tcl_LoadHandle in all locations. * generic/tclFCmd.c: * tests/fileSystem.test: fixed a 'knownBug' with 'file @@ -6970,31 +6801,30 @@ * tests/winFCmd.test: * tests/winPipe.test: * tests/fCmd.test: - * tessts/winFile.test: added 'pcOnly' constraint to some - tests to make for more useful 'tests skipped' log from - running all tests on non-Windows platforms. + * tessts/winFile.test: added 'pcOnly' constraint to some tests to make + for more useful 'tests skipped' log from running all tests on + non-Windows platforms. 2002-07-17 Miguel Sofer - * generic/tclBasic.c (CallCommandTraces): delete traces now - receive the FQ old name of the command. - [Bug 582532] (Don Porter) + * generic/tclBasic.c (CallCommandTraces): delete traces now receive + the FQ old name of the command. [Bug 582532] (Don Porter) 2002-07-18 Vince Darley - * tests/ioUtil.test: added constraints to 1.4,2.4 so they - don't run outside of tcltest. [Bugs 583276,583277] + * tests/ioUtil.test: added constraints to 1.4,2.4 so they don't run + outside of tcltest. [Bugs 583276,583277] 2002-07-17 Miguel Sofer - * generic/tclVar.c (DupParsedVarName): nasty bug fixed, reported - by Vince Darley. + * generic/tclVar.c (DupParsedVarName): nasty bug fixed, reported by + Vince Darley. 2002-07-17 Miguel Sofer * generic/tclVar.c (TclPtrIncrVar): missing CONST in declarations, - inconsistent with tclInt.h. Thanks to Vince Darley for reporting, - boo to gcc for not complaining. + inconsistent with tclInt.h. Thanks to Vince Darley for reporting, boo + to gcc for not complaining. 2002-07-17 Vince Darley @@ -7009,16 +6839,16 @@ * unix/tclLoadOSF.c: * unix/tclLoadShl.c: * mac/tclMacLoad.c: - * win/tclWinLoad.c: modified to move more functionality - to the generic code and avoid duplication. Partial replacement - of internal uses of clientData with opaque Tcl_LoadHandle. A - little further work still needed, but significant changes are done. + * win/tclWinLoad.c: modified to move more functionality to the generic + code and avoid duplication. Partial replacement of internal uses of + clientData with opaque Tcl_LoadHandle. A little further work still + needed, but significant changes are done. 2002-07-17 D. Richard Hipp - * library/msgcat/msgcat.tcl: fix a comment that was causing - problems for programs (ex: mktclapp) that embed the initialization - scripts in strings. + * library/msgcat/msgcat.tcl: fix a comment that was causing problems + for programs (ex: mktclapp) that embed the initialization scripts in + strings. 2002-07-17 Miguel Sofer @@ -7031,20 +6861,20 @@ 2002-07-17 Donal K. Fellows - * generic/tclExecute.c (TclExecuteByteCode): Minor fixes to make - this file compile with SunPro CC... + * generic/tclExecute.c (TclExecuteByteCode): Minor fixes to make this + file compile with SunPro CC... 2002-07-17 Miguel Sofer - * generic/tclExecute.c: modified to do variable lookup explicitly, - and then either inlining the variable access or else calling the new + * generic/tclExecute.c: modified to do variable lookup explicitly, and + then either inlining the variable access or else calling the new TclPtr(Set|Get|Incr)Var functions in tclVar.c * generic/tclInt.h: declare some functions previously local to tclVar.c for usage by TEBC. * generic/tclVar.c: removed local declarations; moved all special - accessor functions for indexed variables to the end of the file - - they are unused and ready for removal, but left there for the time - being as they are in the internal stubs table. + accessor functions for indexed variables to the end of the file - they + are unused and ready for removal, but left there for the time being as + they are in the internal stubs table. ** WARNING FOR BYTECODE MAINTAINERS ** TCL_COMPILE_DEBUG is currently not functional; will be fixed ASAP. @@ -7052,17 +6882,16 @@ 2002-07-16 Mo DeJong * unix/Makefile.in: - * win/Makefile.in: Add a more descriptive warning - in the event `make genstubs` needs to be rerun. + * win/Makefile.in: Add a more descriptive warning in the event `make + genstubs` needs to be rerun. 2002-07-16 Mo DeJong - * unix/Makefile.in: Use dltest.marker file - to keep track of when the dltest package - is up to date. This fixes [Tcl bug 575768] - since tcltest is no longer linked every time. - * unix/dltest/Makefile.in: Create ../dltest.marker - after a successful `make all` run in dltest. + * unix/Makefile.in: Use dltest.marker file to keep track of when the + dltest package is up to date. This fixes [Bug 575768] since tcltest is + no longer linked every time. + * unix/dltest/Makefile.in: Create ../dltest.marker after a successful + `make all` run in dltest. 2002-07-16 Mo DeJong @@ -7079,54 +6908,53 @@ * generic/tclExecute.c (TclUpdateReturnInfo): * generic/tclInt.h: * generic/tclProc.c: - Added two Tcl_Obj to the ExecEnv structure to hold the fully - qualified names "::errorInfo" and "::errorCode" to cache the - addresses of the corresponding variables. The two most frequent - setters of these variables now profit from the new variable name - caching. + Added two Tcl_Obj to the ExecEnv structure to hold the fully qualified + names "::errorInfo" and "::errorCode" to cache the addresses of the + corresponding variables. The two most frequent setters of these + variables now profit from the new variable name caching. 2002-07-15 Miguel Sofer * generic/tclVar.c: refactorisation to reuse already looked-up Var - pointers; definition of three new Tcl_Obj types to cache variable - name parsing and lookup for later reuse; modification of internal - functions to profit from the caching. + pointers; definition of three new Tcl_Obj types to cache variable name + parsing and lookup for later reuse; modification of internal functions + to profit from the caching. * generic/tclInt.decls: * generic/tclInt.h: * generic/tclIntDecls.h: * generic/tclNamesp.c: adding CONST qualifiers to variable names - passed to Tcl_FindNamespaceVar and to variable resolvers; adding - CONST qualifier to the 'msg' argument to TclLookupVar. Needed to - avoid code duplication in the new tclVar.c code. + passed to Tcl_FindNamespaceVar and to variable resolvers; adding CONST + qualifier to the 'msg' argument to TclLookupVar. Needed to avoid code + duplication in the new tclVar.c code. * tests/set-old.test: * tests/var.test: slight modification of error messages due to the modifications in the tclVar.c code. -2002-07-15 Don Porter +2002-07-15 Don Porter - * tests/unixInit.test: Improved constraints to protect /tmp. - [Bug 581403] + * tests/unixInit.test: Improved constraints to protect /tmp. [Bug + 581403] 2002-07-15 Vince Darley - * tests/winFCmd.test: renamed 'win2000' and 'notWin2000' to - more appropriate constraint names. + * tests/winFCmd.test: renamed 'win2000' and 'notWin2000' to more + appropriate constraint names. * win/tclWinFile.c: updated comments to reflect 07-11 changes. - * win/tclWinFCmd.c: made ConvertFileNameFormat static again, - since no longer used in tclWinFile.c - * mac/tclMacFile.c: completed TclpObjLink implementation which - was previously lacking. + * win/tclWinFCmd.c: made ConvertFileNameFormat static again, since no + longer used in tclWinFile.c + * mac/tclMacFile.c: completed TclpObjLink implementation which was + previously lacking. * generic/tclIOUtil.c: comment cleanup and code speedup. -2002-07-14 Don Porter +2002-07-14 Don Porter * generic/tclInt.h: Removed declarations that duplicated entries - in the (internal) stub table. + in the (internal) stub table. * library/tcltest/tcltest.tcl: Corrected errors in handling of - configuration options -constraints and -limitconstraints. + configuration options -constraints and -limitconstraints. * README: Bumped HEAD to version 8.4b2 so we can * generic/tcl.h: distinguish it from the 8.4b1 release. @@ -7139,13 +6967,13 @@ 2002-07-11 Vince Darley * doc/file.n: - * win/tclWinFile.c: on Win 95/98/ME the long form of the path - is used as a normalized form. This is required because short - forms are not a robust representation. The file normalization - function has been sped up, but more performance gains might be - possible, if speed is still an issue on these platforms. + * win/tclWinFile.c: on Win 95/98/ME the long form of the path is used + as a normalized form. This is required because short forms are not a + robust representation. The file normalization function has been sped + up, but more performance gains might be possible, if speed is still an + issue on these platforms. -2002-07-11 Don Porter +2002-07-11 Don Porter * library/tcltest/tcltest.tcl: Corrected reaction to existing but false ::tcl_interactive. @@ -7154,16 +6982,16 @@ 2002-07-11 Donal K. Fellows - * generic/tclCkalloc.c: ckalloc() and friends take the block size - as an unsigned, so we should use %ud when reporting it in fprintf() - and panic(). + * generic/tclCkalloc.c: ckalloc() and friends take the block size as + an unsigned, so we should use %ud when reporting it in fprintf() and + panic(). 2002-07-11 Miguel Sofer - * generic/tclCompile.c: now setting local vars undefined at - compile time, instead of waiting until the proc is initialized. - * generic/tclProc.c: use macro TclSetVarUndefined instead of - directly etting the flag. + * generic/tclCompile.c: now setting local vars undefined at compile + time, instead of waiting until the proc is initialized. + * generic/tclProc.c: use macro TclSetVarUndefined instead of directly + setting the flag. 2002-07-11 Donal K. Fellows @@ -7174,10 +7002,10 @@ * tests/unixFCmd.test, tests/fileName.test: * tests/fCmd.test: Removed [exec] of Unix utilities that have - equivalents in standard Tcl. [Bug 579268] Also simplified some - of unixFCmd.test while I was at it. + equivalents in standard Tcl. [Bug 579268] Also simplified some of + unixFCmd.test while I was at it. -2002-07-10 Don Porter +2002-07-10 Don Porter * tests/tcltest.test: Greatly reduced the number of [exec]s, using slave interps instead. @@ -7205,20 +7033,20 @@ * tests/cmdAH.test: Removed [exec] of Unix utilities. [Bug 579211] * tests/expr.test: Added tests to make sure that this works. - * generic/tclExecute.c (ExprCallMathFunc): Functions should also - be able to return wide-ints. [Bug 579284] + * generic/tclExecute.c (ExprCallMathFunc): Functions should also be + able to return wide-ints. [Bug 579284] 2002-07-08 Andreas Kupries - * tests/socket.test: Fixed bug #578164. The original reason for - the was a DNS outage while running the testsuite. Changed [info - hostname] to 127.0.0.1 to bypass DNS, knowing that we operate on - the local host. + * tests/socket.test: Fixed [Bug 578164]. The original reason for the + was a DNS outage while running the testsuite. Changed [info hostname] + to 127.0.0.1 to bypass DNS, knowing that we operate on the local + host. -2002-07-08 Don Porter +2002-07-08 Don Porter * doc/tcltest.n: Fixed incompatibility in [viewFile]. - * library/tcltest/tcltest.tcl: Corrected docs. Bumped to 2.2.1. + * library/tcltest/tcltest.tcl: Corrected docs. Bumped to 2.2.1. * library/tcltest/pkgIndex.tcl: [Bug 578163] 2002-07-08 Vince Darley @@ -7235,39 +7063,40 @@ * unix/tclUnixChan.c: * win/tclWinChan.c: * doc/FileSystem.3: cleaned up internal handling of - Tcl_FSOpenFileChannel to remove duplicate code, and make - writing external vfs's clearer and easier. No - functionality change. Also clarify that objects with refCount - zero should not be passed in to the Tcl_FS API, and prevent - segfaults from occuring on such user errors. [Bug 578617] + Tcl_FSOpenFileChannel to remove duplicate code, and make writing + external vfs's clearer and easier. No functionality change. Also + clarify that objects with refCount zero should not be passed in to the + Tcl_FS API, and prevent segfaults from occuring on such user errors. + [Bug 578617] -2002-07-06 Don Porter +2002-07-06 Don Porter * tests/pkgMkIndex.test: Constrained tests of [load] package indexing to those platforms where the testing shared libraries have been built. [Bug 578166]. -2002-07-05 Don Porter +2002-07-05 Don Porter + * changes: added recent changes 2002-07-05 Reinhard Max * generic/tclClock.c (FormatClock): Convert the format string to - UTF8 before calling TclpStrftime, so that non-ASCII characters - don't get mangled when the result string is being converted back. + UTF8 before calling TclpStrftime, so that non-ASCII characters don't + get mangled when the result string is being converted back. * tests/clock.test: Added a test for that. 2002-07-05 Donal K. Fellows - * unix/Makefile.in (ro-test,ddd,GDB,DDD): Created new targets to - allow running the test suite with a read-only current directory, - running under ddd instead of gdb, and factored out some executable - names for broken sites (like mine) where gdb and ddd are installed - with non-standard names... + * unix/Makefile.in (ro-test,ddd,GDB,DDD): Created new targets to allow + running the test suite with a read-only current directory, running + under ddd instead of gdb, and factored out some executable names for + broken sites (like mine) where gdb and ddd are installed with + non-standard names... - * tests/httpold.test: Altered test names to httpold-* to avoid - clashes with http.test, and stopped tests from failing when the - current directory is not writable... + * tests/httpold.test: Altered test names to httpold-* to avoid clashes + with http.test, and stopped tests from failing when the current + directory is not writable... * tests/event.test: Stop these tests from failing * tests/ioUtil.test: when the current directory is @@ -7283,15 +7112,15 @@ * tests/fileName.test: writable... * tests/env.test: -2002-07-05 Jeff Hobbs +2002-07-05 Jeff Hobbs *** 8.4b1 TAGGED FOR RELEASE *** 2002-07-04 Donal K. Fellows * tests/cmdMZ.test (cmdMZ-1.4): - * tests/cmdAH.test: More fixing of writable-current-dir - assumption. [Bug 575824] + * tests/cmdAH.test: More fixing of writable-current-dir assumption. + [Bug 575824] 2002-07-04 Miguel Sofer @@ -7301,23 +7130,23 @@ * tests/socket.test: * tests/winPipe.test: - * tests/pid.test: Fixed SF Bug #575848. See below for a - description the general problem. + * tests/pid.test: Fixed [Bug 575848]. See below for a description the + general problem. - * All the bugs below are instances of the same problem: The - testsuite assumes [pwd] = [temporaryDirectory] and writable. + All the bugs below are instances of the same problem: The testsuite + assumes [pwd] = [temporaryDirectory] and writable. - * tests/iogt.test: Fixed bug #575860. - * tests/io.test: Fixed bug #575862. + * tests/iogt.test: Fixed [Bug 575860] + * tests/io.test: Fixed [Bug 575862] * tests/exec.test: - * tests/ioCmd.test: Fixed bug #575836. + * tests/ioCmd.test: Fixed [Bug 575836] -2002-07-03 Don Porter +2002-07-03 Don Porter * tests/pkg1/direct1.tcl: removed * tests/pkg1/pkgIndex.tcl: removed - * tests/pkgMkIndex.test: Imported auxilliary files from tests/pkg1 - into the test file pkgMkIndex.test itself. Formatting fixes. + * tests/pkgMkIndex.test: Imported auxilliary files from tests/pkg1 + into the test file pkgMkIndex.test itself. Formatting fixes. * unix/Makefile.in: removed tests/pkg/* from `make dist` @@ -7338,55 +7167,53 @@ * tests/pkg/spacename.tcl: removed * tests/pkg/std.tcl: removed * tests/pkgMkIndex.test: Fixed [Bug 575857] where this test file - expected to be able to write to [file join [testsDirectory] - pkg]. Part of the fix was to import several auxilliary files - into the test file itself. + expected to be able to write to [file join [testsDirectory] pkg]. Part + of the fix was to import several auxilliary files into the test file + itself. - * tests/main.test: Cheap fix for [Bugs 575851, 575858]. Avoid + * tests/main.test: Cheap fix for [Bugs 575851, 575858]. Avoid * tests/tcltest.test: non-writable . by [cd [temporaryDirectory]]. - * library/auto.tcl: Fix [tcl_findLibrary] to be sure it sets - $varName only if a successful library script is found. - [Bug 577033] + * library/auto.tcl: Fix [tcl_findLibrary] to be sure it sets $varName + only if a successful library script is found. [Bug 577033] 2002-07-03 Miguel Sofer * generic/tclCompCmds.c (TclCompileCatchCmd): return - TCL_OUT_LINE_COMPILE instead of TCL_ERROR: let the failure - happen at runtime so that it can be caught [Bug 577015]. + TCL_OUT_LINE_COMPILE instead of TCL_ERROR: let the failure happen at + runtime so that it can be caught [Bug 577015]. -2002-07-02 Joe English +2002-07-02 Joe English * doc/tcltest.n: Markup fixes, spellcheck. -2002-07-02 Don Porter +2002-07-02 Don Porter * doc/tcltest.n: more refinements of the documentation. * library/tcltest/tcltest.tcl: Added trace to be sure the stdio - constraint is updated whenever the [interpreter] changes. + constraint is updated whenever the [interpreter] changes. * doc/tcltest.n: Reverted [makeFile] and [viewFile] to * library/tcltest/tcltest.tcl: their former behavior, and documented - * tests/cmdAH.test: it. Corrected misspelling of hook - * tests/event.test: procedure. Restored tests. + * tests/cmdAH.test: it. Corrected misspelling of hook + * tests/event.test: procedure. Restored tests. * tests/http.test: * tests/io.test: - * library/tcltest/tcltest.tcl: Simplified logic of - [GetMatchingFiles] and [GetMatchingDirectories], removing - special case processing. + * library/tcltest/tcltest.tcl: Simplified logic of [GetMatchingFiles] + and [GetMatchingDirectories], removing special case processing. - * doc/tcltest.n: More documentation updates. Reference sections - are complete. Only examples need adding. + * doc/tcltest.n: More documentation updates. Reference sections are + complete. Only examples need adding. 2002-07-02 Vince Darley * tests/fCmd.test: - * generic/tclCmdAH.c: clearer error msgs for 'file link', - as per the man page. + * generic/tclCmdAH.c: clearer error msgs for 'file link', as per the + man page. -2002-07-01 Joe English +2002-07-01 Joe English * doc/Access.3: * doc/AddErrInfo.3: @@ -7422,7 +7249,7 @@ * doc/resource.n: * doc/safe.n: * doc/scan.n: - * doc/tclvars.n: Spell-check, fixed typos (Updates from Larry Virden). + * doc/tclvars.n: Spell-check, fixed typos (Updates from Larry Virden) 2002-07-01 Donal K. Fellows @@ -7430,18 +7257,17 @@ when building with gcc to resolve problems with undefined symbols being present when tcl library used with non-gcc linker at later stage. Symbols were compiler-generated, so it is the compiler's - business to define them. [Bug #541181] + business to define them. [Bug 541181] -2002-07-01 Don Porter +2002-07-01 Don Porter * doc/tcltest.n: more work in progress updating tcltest docs. - * library/tcltest/tcltest.tcl: Change [configure -match] to - stop treating an empty list as a list of the single pattern "*". - Changed the default value to [list *] so default operation - remains the same. + * library/tcltest/tcltest.tcl: Change [configure -match] to stop + treating an empty list as a list of the single pattern "*". Changed + the default value to [list *] so default operation remains the same. - * tests/pkg/samename.tcl: restored. needed by pkgMkIndex.test. + * tests/pkg/samename.tcl: restored. Needed by pkgMkIndex.test. * library/tcltest/tcltest.tcl: restored writeability testing of -tmpdir, augmented by a special exception for the deafault value. @@ -7450,7 +7276,7 @@ * doc/concat.n: Documented the *real* behaviour of [concat]! -2002-06-30 Don Porter +2002-06-30 Don Porter * doc/tcltest.n: more work in progress updating tcltest docs. @@ -7461,17 +7287,17 @@ * tests/info.test: [temporaryDirectory] of tcltest. * tests/interp.test: - * library/tcltest/tcltest.tcl: Stopped checking for writeability - of -tmpdir value because no default directory can be guaranteed to - be writeable. + * library/tcltest/tcltest.tcl: Stopped checking for writeability of + -tmpdir value because no default directory can be guaranteed to be + writeable. * tests/autoMkindex.tcl: removed. * tests/pkg/samename.tcl: removed. * tests/pkg/magicchar.tcl: removed. * tests/pkg/magicchar2.tcl: removed. - * tests/autoMkindex.test: Updated auto_mkIndex tests to use - [makeFile] and [removeFile] so tests are done in [temporaryDirecotry] - where write access is guaranteed. + * tests/autoMkindex.test: Updated auto_mkIndex tests to use [makeFile] + and [removeFile] so tests are done in [temporaryDirecotry] where write + access is guaranteed. * library/tcltest/tcltest.tcl: Fixed [makeFile] and [viewFile] to * tests/cmdAH.test: accurately reflect a file's contents. @@ -7484,31 +7310,31 @@ 2002-06-28 Miguel Sofer - * generic/tclCompile.h: modified the macro TclEmitPush to not - call its first argument repeatedly or pass it to other macros, - [Bug 575194] reported by Peter Spjuth. + * generic/tclCompile.h: modified the macro TclEmitPush to not call its + first argument repeatedly or pass it to other macros, [Bug 575194] + reported by Peter Spjuth. -2002-06-28 Don Porter +2002-06-28 Don Porter * docs/tcltest.n: Doc revisions in progress. - * library/tcltest/tcltest.tcl: Corrected -testdir default value. - Was not reliable, and disagreed with docs! Thanks to Hemang Lavana. - [Bug 575150] + * library/tcltest/tcltest.tcl: Corrected -testdir default value. Was + not reliable, and disagreed with docs! Thanks to Hemang Lavana. [Bug + 575150] 2002-06-28 Donal K. Fellows * unix/tclUnixThrd.c: Renamed the Tcl_Platform* #defines to * unix/tclUnixPipe.c: TclOS* because they are only used * unix/tclUnixFile.c: internally. Also stopped double-#def - * unix/tclUnixFCmd.c: of TclOSlstat [Bug #566099, post-rename] + * unix/tclUnixFCmd.c: of TclOSlstat [Bug 566099, post-rename] * unix/tclUnixChan.c: * unix/tclUnixPort.h: - * doc/string.n: Improved documentation for [string last] along - lines described in Bug #574799 so it indicates that the supplied - index marks the end of the search space. + * doc/string.n: Improved documentation for [string last] along lines + described in [Bug 574799] so it indicates that the supplied index + marks the end of the search space. -2002-06-27 Don Porter +2002-06-27 Don Porter * doc/dde.n: Work in progress updating the documentation * doc/http.n: of the packages that come bundled with @@ -7522,29 +7348,28 @@ 2002-06-26 Vince Darley * tests/fileSystem.test: - * generic/tclIOUtil.c: fix to handling of empty paths "" - which are not claimed by any filesystem (Bug #573758). - Ensure good error messages are given in all cases. + * generic/tclIOUtil.c: fix to handling of empty paths "" which are not + claimed by any filesystem [Bug 573758]. Ensure good error messages are + given in all cases. * tests/cmdAH.test: - * unix/tclUnixFCmd.c: fix to bug reported as part of - (Patch #566669). Thanks to Taguchi, Takeshi for the report. + * unix/tclUnixFCmd.c: fix to bug reported as part of [Patch 566669]. + Thanks to Taguchi, Takeshi for the report. 2002-06-26 Reinhard Max * unix/tclUnixTime.c: Make [clock format] respect locale settings. - * tests/clock.test: Bug #565880. ***POTENTIAL INCOMPATIBILITY*** + * tests/clock.test: [Bug 565880]. ***POTENTIAL INCOMPATIBILITY*** 2002-06-26 Miguel Sofer * doc/CrtInterp.3: - * doc/StringObj.3: clarifications by Don Porter, bugs #493995 and - #500930. + * doc/StringObj.3: clarifications by Don Porter, [Bugs 493995, 500930] -2002-06-24 Don Porter +2002-06-24 Don Porter * library/tcltest/tcltest.tcl: Corrected suppression of -verbose skip - * tests/tcltest.test: and start by [test -output]. Also - corrected test suite errors exposed by corrected code. [Bug 564656] + * tests/tcltest.test: and start by [test -output]. Also + corrected test suite errors exposed by corrected code. [Bug 564656] 2002-06-25 Reinhard Max @@ -7563,21 +7388,20 @@ 2002-06-25 Donal K. Fellows - * generic/tclUtil.c (TclGetIntForIndex): Fix of critical bug - #533364 generated when the index is bad and the result is a shared - object. The T_ASTO(T_GOR, ...) idiom likely exists elsewhere - though. Also removed some cruft that just complicated things to - no advantage. + * generic/tclUtil.c (TclGetIntForIndex): Fix of critical [Bug 533364] + generated when the index is bad and the result is a shared object. The + T_ASTO(T_GOR, ...) idiom likely exists elsewhere though. Also removed + some cruft that just complicated things to no advantage. (SetEndOffsetFromAny): Same fix, though this wasn't on the path excited by the bug. -2002-06-24 Don Porter +2002-06-24 Don Porter * library/tcltest/tcltest.tcl: Implementation of TIP 101. Adds * tests/parseOld.test: and exports a [configure] command * tests/tcltest.test: from tcltest. -2002-06-22 Don Porter +2002-06-22 Don Porter * changes: updated changes file for 8.4b1 release. @@ -7585,7 +7409,7 @@ * tests/basic.test: Tcl test suite so that a test * tests/cmdInfo.test: with options -constraints knownBug * tests/compile.test: -limitConstraints 1 only tests the - * tests/encoding.test: knownBug tests. Mostly involves + * tests/encoding.test: knownBug tests. Mostly involves * tests/env.test: replacing direct access to the * tests/event.test: testConstraints array with calls * tests/exec.test: to the testConstraint command @@ -7610,30 +7434,30 @@ * win/README.binary, README, win/configure.in, unix/configure.in: * generic/tcl.h (TCL_RELEASE_*, TCL_PATCH_LEVEL): Bump to beta1. -2002-06-21 Joe English +2002-06-21 Joe English * generic/tclCompExpr.c: - * generic/tclParseExpr.c: LogSyntaxError() should reset - the interpreter result [Bug 550142 "Tcl_ExprObj -> abort"] + * generic/tclParseExpr.c: LogSyntaxError() should reset the + interpreter result [Bug 550142 "Tcl_ExprObj -> abort"] -2002-06-21 Don Porter +2002-06-21 Don Porter - * unix/Makefile.in: Updated all package install directories - * win/Makefile.in: to match current Major.minor versions - * win/makefile.bc: of the packages. Added tcltest package - * win/makefile.vc: to installation on Windows. + * unix/Makefile.in: Updated all package install directories to + * win/Makefile.in: match current Major.minor versions of the + * win/makefile.bc: packages. Added tcltest package to + * win/makefile.vc: installation on Windows. - * library/init.tcl: Corrected comments and namespace style - issues. Thanks to Bruce Stephens. [Bug 572025] + * library/init.tcl: Corrected comments and namespace style issues. + Thanks to Bruce Stephens. [Bug 572025] 2002-06-21 Vince Darley - * tests/cmdAH.test: Added TIP#99 implementation - * tests/fCmd.test: of 'file link'. Supports creation - * tests/fileName.test: of symbolic and hard links in the - * tests/fileSystem.test: native filesystems and in vfs's, - * generic/tclTest.c: when the individual filesystem - * generic/tclCmdAH.c: supports the concept. + * tests/cmdAH.test: Added TIP#99 implementation of 'file + * tests/fCmd.test: link'. Supports creation of symbolic and + * tests/fileName.test: hard links in the native filesystems and + * tests/fileSystem.test: in vfs's, when the individual filesystem + * generic/tclTest.c: supports the concept. + * generic/tclCmdAH.c: * generic/tclIOUtil.c: * generic/tcl.h: * generic/tcl.decls: @@ -7641,28 +7465,28 @@ * doc/file.n: * mac/tclMacFile.c: * unix/tclUnixFile.c: - * win/tclWinFile.c: Also enhanced speed of 'file normalize' on - Windows. + * win/tclWinFile.c: Also enhanced speed of 'file normalize' on Windows 2002-06-20 Miguel Sofer - * generic/tclBasic.c (TclEvalObjvInternal): fix for [Bug 571385] - in the implementation of TIP#62 (command tracing). Vince Darley, - Hemang Lavana & Don Porter: thanks. + * generic/tclBasic.c (TclEvalObjvInternal): fix for [Bug 571385] in + the implementation of TIP#62 (command tracing). Vince Darley, Hemang + Lavana & Don Porter: thanks. 2002-06-20 Miguel Sofer - * generic/tclExecute.c (TclCompEvalObj): clarified and simplified - the logic for compilation/recompilation. + * generic/tclExecute.c (TclCompEvalObj): clarified and simplified the + logic for compilation/recompilation. + +2002-06-19 Joe English -2002-06-19 Joe English * doc/file.n: Fixed indentation. No substantive changes. -2002-06-19 Jeff Hobbs +2002-06-19 Jeff Hobbs - * generic/tclCmdMZ.c (Tcl_RegexpObjCmd): get the resultPtr again - as the Tcl_ObjSetVar2 may cause the result to change. - [Patch #558324] (watson) + * generic/tclCmdMZ.c (Tcl_RegexpObjCmd): get the resultPtr again as + the Tcl_ObjSetVar2 may cause the result to change. + [Patch 558324] (watson) 2002-06-19 Miguel Sofer @@ -7675,40 +7499,39 @@ - elimination of duplicated code in the non-immediate INST_INCR instructions. - elimination of 103 (!) TclDecrRefCount macros. The different - instructions now jump back to a common "DecrRefCount zone" at - the top of the loop. The macro "ADJUST_PC" was replaced by two - macros "NEXT_INST_F" and "NEXT_INST_V" that take three params - (pcAdjustment, # of stack objects to discard, resultObjPtr - handling flag). The only instructions that retain a - TclDecrRefCount are INST_POP (for speed), the common code for - the non-immediate INST_INCR, INST_FOREACH_STEP and the two - INST_LSET. - - The object size of tclExecute.o was reduced by approx 20% since - the start of the consolidation drive, while making room for some - peep-hole optimisation at runtime. + instructions now jump back to a common "DecrRefCount zone" at the + top of the loop. The macro "ADJUST_PC" was replaced by two macros + "NEXT_INST_F" and "NEXT_INST_V" that take three params + (pcAdjustment, # of stack objects to discard, resultObjPtr handling + flag). The only instructions that retain a TclDecrRefCount are + INST_POP (for speed), the common code for the non-immediate + INST_INCR, INST_FOREACH_STEP and the two INST_LSET. + + The object size of tclExecute.o was reduced by approx 20% since the + start of the consolidation drive, while making room for some peep-hole + optimisation at runtime. 2002-06-18 Miguel Sofer - * generic/tclExecute.c (TEBC, INST_DONE): small bug in the panic - code for tcl-stack corruption. + * generic/tclExecute.c (TEBC, INST_DONE): small bug in the panic code + for tcl-stack corruption. 2002-06-17 David Gravereaux - Trims to support the removal of RESOURCE_INCLUDED from rc - scripts from FR #565088. + Trims to support the removal of RESOURCE_INCLUDED from rc scripts from + [FRQ 565088]. - * generic/tcl.h: moved the #ifndef RC_INVOKED start block up in - the file. rc scripts don't need to know thread mutexes. + * generic/tcl.h: moved the #ifndef RC_INVOKED start block up in the + file. rc scripts don't need to know thread mutexes. * win/tcl.rc: * win/tclsh.rc: removed the #define RESOURCE_INCLUDED to let the built-in -DRC_INVOKED to the work. -2002-06-17 Jeff Hobbs +2002-06-17 Jeff Hobbs * doc/CrtTrace.3: Added TIP#62 implementation of command - * doc/trace.n: execution tracing [FR #462580] (lavana). + * doc/trace.n: execution tracing [FRQ 462580] (lavana). * generic/tcl.h: This includes enter/leave tracing as well * generic/tclBasic.c: as inter-procedure stepping. * generic/tclCmdMZ.c: @@ -7723,40 +7546,39 @@ 2002-06-17 Andreas Kupries - * win/tclWinPipe.c (BuildCommandLine): Fixed bug #554068 ([exec] - on windows did not treat { in filenames well.). Bug reported by - Vince Darley , patch - provided by Vince too. + * win/tclWinPipe.c (BuildCommandLine): Fixed [bug 554068] ([exec] on + windows did not treat { in filenames well.). Bug reported by Vince + Darley , patch provided by Vince + too. -2002-06-17 Joe English +2002-06-17 Joe English * generic/tcl.h: #ifdef logic for K&R C backwards compatibility - changed to assume modern C by default. See SF FR #565088 for - full details. + changed to assume modern C by default. See [FRQ 565088] for full + details. -2002-06-17 Don Porter +2002-06-17 Don Porter - * doc/msgcat.n: Corrected en_UK references to en_GB. UK is not - a country designation recognized in ISO 3166. + * doc/msgcat.n: Corrected en_UK references to en_GB. UK is not a + country designation recognized in ISO 3166. - * library/msgcat/msgcat.tcl: More Windows Registry locale codes - from Bruno Haible. + * library/msgcat/msgcat.tcl: More Windows Registry locale codes from + Bruno Haible. * doc/msgcat.n: * library/msgcat/msgcat.tcl: * library/msgcat/pkgIndex.tcl: * tests/msgcat.test: Revised locale initialization to interpret - environment variable locale values according to XPG4, and to - recognize the LC_ALL and LC_MESSAGES values over that of LANG. - Also added many Windows Registry locale values to those - recognized by msgcat. Revised tests and docs. Bumped to - version 1.3. Thanks to Bruno Haible for the report and - assistance crafting the solution. [Bug 525522, 525525] + environment variable locale values according to XPG4, and to recognize + the LC_ALL and LC_MESSAGES values over that of LANG. Also added many + Windows Registry locale values to those recognized by msgcat. Revised + tests and docs. Bumped to version 1.3. Thanks to Bruno Haible for the + report and assistance crafting the solution. [Bug 525522, 525525] 2002-06-16 Miguel Sofer - * generic/tclCompile.c (TclCompileTokens): a better algorithm for - the previous bug fix. + * generic/tclCompile.c (TclCompileTokens): a better algorithm for the + previous bug fix. 2002-06-16 Miguel Sofer @@ -7766,39 +7588,37 @@ 2002-06-16 Miguel Sofer - * generic/tclExecute.c: bug in the consolidation of the - INCR_..._STK instructions; the bug could not be exercised as the - (faulty) instruction INST_INCR_ARRAY_STK was never compiled-in - (related to [Bug 569438]). + * generic/tclExecute.c: bug in the consolidation of the INCR_..._STK + instructions; the bug could not be exercised as the (faulty) + instruction INST_INCR_ARRAY_STK was never compiled-in (related to [Bug + 569438]). 2002-06-14 Miguel Sofer * generic/tclExecute.c (TclExecuteByteCode): runtime peep-hole optimisation of variables (INST_STORE, INST_INCR) and commands (INST_INVOKE); faster check for the existence of a catch. - (TclExecuteByteCode): runtime peep-hole optimisation of - comparisons. - (TclExecuteByteCode): runtime peep-hole optimisation of - INST_FOREACH - relies on peculiarities of the code produced by the - bytecode compiler. + (TclExecuteByteCode): runtime peep-hole optimisation of comparisons. + (TclExecuteByteCode): runtime peep-hole optimisation of INST_FOREACH - + relies on peculiarities of the code produced by the bytecode compiler. 2002-06-14 David Gravereaux * win/rules.vc: The test for compiler optimizations was in error. - Thanks goes to Roy Terry for his - assistance with this. + Thanks goes to Roy Terry for his assistance + with this. 2002-06-14 Donal K. Fellows * doc/trace.n, tests/trace.test: * generic/tclCmdMZ.c (Tcl_TraceObjCmd,TclTraceCommandObjCmd) - (TclTraceVariableObjCmd): Changed references to "trace list" to - "trace info" as mandated by TIP#102. + (TclTraceVariableObjCmd): Changed references to "trace list" to "trace + info" as mandated by TIP#102. 2002-06-13 Miguel Sofer - * generic/tclExecute.c (TclExecuteByteCode): consolidated code for - the conditional branch instructions. + * generic/tclExecute.c (TclExecuteByteCode): consolidated code for the + conditional branch instructions. 2002-06-13 Miguel Sofer @@ -7807,24 +7627,24 @@ 2002-06-13 Miguel Sofer - * generic/tclExecute.c (TclExecuteByteCode): consolidated the - handling of exception returns to INST_INVOKE and INST_EVAL, as - well as most of the code for INST_CONTINUE and INST_BREAK, in the - new jump target "processExceptionReturn". + * generic/tclExecute.c (TclExecuteByteCode): consolidated the handling + of exception returns to INST_INVOKE and INST_EVAL, as well as most of + the code for INST_CONTINUE and INST_BREAK, in the new jump target + "processExceptionReturn". 2002-06-13 Miguel Sofer * generic/tclExecute.c (TclExecuteByteCode): consolidated variable handling opcodes, replaced redundant code with some 'goto'. All - store/append/lappend opcodes on the same data type now share the - main code; same with incr opcodes. + store/append/lappend opcodes on the same data type now share the main + code; same with incr opcodes. * generic/tclVar.c: added the bit TCL_TRACE_READS to the possible - flags to Tcl_SetVar2Ex - it causes read traces to be fired prior - to setting the variable. This is used in the core for [lappend]. + flags to Tcl_SetVar2Ex - it causes read traces to be fired prior to + setting the variable. This is used in the core for [lappend]. - ***NOTE*** the usage of TCL_TRACE_READS in Tcl_(Obj)?GetVar.* is - not documented; there, it causes the call to create the variable - if it does not exist. The new usage in Tcl_(Obj)?SetVar.* remains + ***NOTE*** the usage of TCL_TRACE_READS in Tcl_(Obj)?GetVar.* is not + documented; there, it causes the call to create the variable if it + does not exist. The new usage in Tcl_(Obj)?SetVar.* remains undocumented too ... 2002-06-13 Vince Darley @@ -7838,27 +7658,26 @@ * doc/FileSystem.3: * mac/tclMacFile.c: * unix/tclUnixFile.c: - * win/tclWinFile.c: fixed up further so both compiles and - actually works with VC++ 5 or 6. + * win/tclWinFile.c: fixed up further so both compiles and actually + works with VC++ 5 or 6. * win/tclWinInt.h: - * win/tclWin32Dll.c: cleaned up code and vfs tests and - added tests for the internal changes of 2002-06-12, to see - whether WinTcl on NTFS can coexist peacefully with links - in the filesystem. Added new test command 'testfilelink' - to enable the newer code to be tested. - * tests/fCmd.test: (made certain tests of 'testfilelink' not - run on unix). + * win/tclWin32Dll.c: cleaned up code and vfs tests and added tests for + the internal changes of 2002-06-12, to see whether WinTcl on NTFS can + coexist peacefully with links in the filesystem. Added new test + command 'testfilelink' to enable the newer code to be tested. + * tests/fCmd.test: (made certain tests of 'testfilelink' not run on + unix). 2002-06-12 Miguel Sofer * tclBasic.c (Tcl_DeleteTrace): fixed [Bug 568123] (thanks to Hemang Lavana) -2002-06-12 Jeff Hobbs +2002-06-12 Jeff Hobbs * win/tclWinFile.c: corrected the symbolic link handling code to - allow it to compile. Added real definition of REPARSE_DATA_BUFFER - (found in winnt.h). Most of the added definitions appear to have + allow it to compile. Added real definition of REPARSE_DATA_BUFFER + (found in winnt.h). Most of the added definitions appear to have correct, cross-Win-version equivalents in winnt.h and should be removed, but just making things "work" for now. @@ -7866,37 +7685,36 @@ * generic/tclIOUtil.c: * generic/tcl.decls: - * generic/tclDecls.h: made code for Tcl_FSNewNativePath - agree with man pages. + * generic/tclDecls.h: made code for Tcl_FSNewNativePath agree with man + pages. - * doc/FileSystem.3: clarified the circumstances under which - certain functions are called in the presence of symlinks. + * doc/FileSystem.3: clarified the circumstances under which certain + functions are called in the presence of symlinks. * win/tclWinFile.c: * win/tclWinPort.h: * win/tclWinInt.h: - * win/tclWinFCmd.c: Fix for Windows to allow 'file lstat', - 'file type', 'glob -type l', 'file copy', 'file delete', - 'file normalize', and all VFS code to work correctly in the - presence of symlinks (previously Tcl's behaviour was not very - well defined). This also fixes possible serious problems in - all versions of WinTcl where 'file delete' on a NTFS symlink - could delete the original, not the symlink. + * win/tclWinFCmd.c: Fix for Windows to allow 'file lstat', 'file + type', 'glob -type l', 'file copy', 'file delete', 'file normalize', + and all VFS code to work correctly in the presence of symlinks + (previously Tcl's behaviour was not very well defined). This also + fixes possible serious problems in all versions of WinTcl where 'file + delete' on a NTFS symlink could delete the original, not the symlink. Note: symlinks cannot yet be created in pure Tcl. 2002-06-11 Miguel Sofer * generic/tclBasic.c: * generic/tclCompCmds.c: - * generic/tclInt.h: reverted the new compilation functions; - replaced by a more general approach described below. + * generic/tclInt.h: reverted the new compilation functions; replaced + by a more general approach described below. * generic/tclCompCmds.c: - * generic/tclCompile.c: made *all* compiled variable access - attempts create an indexed variable - even get or incr without - previous set. This allows indexed access to local variables that - are created and set at runtime, for example by [global], [upvar], - [variable], [regexp], [regsub]. + * generic/tclCompile.c: made *all* compiled variable access attempts + create an indexed variable - even get or incr without previous set. + This allows indexed access to local variables that are created and set + at runtime, for example by [global], [upvar], [variable], [regexp], + [regsub]. 2002-06-11 Miguel Sofer @@ -7908,10 +7726,10 @@ * generic/tclBasic.c: * generic/tclCompCmds.c: - * generic/tclInt.h: added compile functions for [global], - [variable] and [upvar]. They just declare the new local variables, - the commands themselves are not compiled-in. This gives a notably - faster read access to these linked variables. + * generic/tclInt.h: added compile functions for [global], [variable] + and [upvar]. They just declare the new local variables, the commands + themselves are not compiled-in. This gives a notably faster read + access to these linked variables. 2002-06-11 Miguel Sofer @@ -7920,43 +7738,43 @@ 2002-06-10 Vince Darley - * unix/tclUnixFCmd.c: fixed [Bug #566669] - * generic/tclIOUtil.c: improved and sped up handling of - native paths (duplication and conversion to normalized paths), - particularly on Windows. - * modified part of above commit, due to problems on Linux. - Will re-examine bug report and evaluate more closely. + * unix/tclUnixFCmd.c: fixed [Bug 566669] + * generic/tclIOUtil.c: improved and sped up handling of native paths + (duplication and conversion to normalized paths), particularly on + Windows. + * modified part of above commit, due to problems on Linux. Will + re-examine bug report and evaluate more closely. -2002-06-07 Don Porter +2002-06-07 Don Porter - * tests/tcltest.test: More corrections to test suite so that tests - of failing [test]s don't show up themselves as failing tests. + * tests/tcltest.test: More corrections to test suite so that tests of + failing [test]s don't show up themselves as failing tests. 2002-06-07 Donal K. Fellows - * generic/tclExecute.c: Tidied up headers in relation to float.h - to cut the cruft and ensure DBL_MAX is defined since doubles seem - to be the same size everywhere; if the assumption isn't true, the - variant platforms had better have run configure... + * generic/tclExecute.c: Tidied up headers in relation to float.h to + cut the cruft and ensure DBL_MAX is defined since doubles seem to be + the same size everywhere; if the assumption isn't true, the variant + platforms had better have run configure... - * unix/tclUnixPort.h (EOVERFLOW): Added code to define it if it - wasn't previously defined. Also some other general tidying and - adding of comments. [Tcl bugs 563122, 564595] + * unix/tclUnixPort.h (EOVERFLOW): Added code to define it if it wasn't + previously defined. Also some other general tidying and adding of + comments. [Bugs 563122, 564595] * compat/tclErrno.h: Added definition for EOVERFLOW copied from - Solaris headers; I've been unable to find any uses of EFTYPE, - which was the error code previously occupying the slot, in Tcl, or - any definition of it in the Solaris headers. + Solaris headers; I've been unable to find any uses of EFTYPE, which + was the error code previously occupying the slot, in Tcl, or any + definition of it in the Solaris headers. 2002-06-06 Mo DeJong - * unix/dltest/Makefile.in: Remove hard coded CFLAGS=-g - and add CFLAGS_DEBUG, CFLAGS_OPTIMIZE, and - CFLAGS_DEFAULT varaibles. [Tcl bug 565488] + * unix/dltest/Makefile.in: Remove hard coded CFLAGS=-g and add + CFLAGS_DEBUG, CFLAGS_OPTIMIZE, and CFLAGS_DEFAULT varaibles. [Bug + 565488] -2002-06-06 Don Porter +2002-06-06 Don Porter - * tests/tcltest.test: Corrections to test suite so that tests - of failing [test]s don't show up themselves as failing tests. + * tests/tcltest.test: Corrections to test suite so that tests of + failing [test]s don't show up themselves as failing tests. * tests/io.test: Fixed up namespace variable resolution issues revealed by running test suite with "-singleproc 1". @@ -7973,38 +7791,38 @@ 2002-06-06 Daniel Steffen * unix/tclUnixThrd.c (TclpReaddir, TclpLocaltime, TclpGmtime): - added mutex wrapped calls to readdir, localtime & gmtime in - case their thread-safe *_r counterparts are not available. + added mutex wrapped calls to readdir, localtime & gmtime in case their + thread-safe *_r counterparts are not available. * unix/tcl.m4: added configure check for readdir_r - * unix/tcl.m4 (Darwin): set TCL_DEFAULT_ENCODING to utf-8 on - MacOSX (where posix file apis expect utf-8, not iso8859-1). + * unix/tcl.m4 (Darwin): set TCL_DEFAULT_ENCODING to utf-8 on MacOSX + (where posix file apis expect utf-8, not iso8859-1). * unix/configure: regen - * unix/Makefile.in: set DYLD_LIBRARY_PATH in parallel - to LD_LIBRARY_PATH for MacOSX dynamic linker. - * generic/tclEnv.c (TclSetEnv): fix env var setting on - MacOSX (adapted from patch #524352 by jkbonfield). + * unix/Makefile.in: set DYLD_LIBRARY_PATH in parallel to + LD_LIBRARY_PATH for MacOSX dynamic linker. + * generic/tclEnv.c (TclSetEnv): fix env var setting on MacOSX. Adapted + from [Patch 524352] (jkbonfield). -2002-06-05 Don Porter +2002-06-05 Don Porter * doc/Tcl_Main.3: Documented $tcl_rcFileName and added more clarifications about the intended use of Tcl_Main(). [Bug 505651] 2002-06-05 Daniel Steffen - * generic/tclFileName.c (TclGlob): mac specific fix to - recent changes in 'glob -tails' handling. + * generic/tclFileName.c (TclGlob): mac specific fix to recent changes + in 'glob -tails' handling. * mac/tclMacPort.h: * mac/tclMacChan.c: fixed TIP#91 bustage. * mac/tclMacResource.c (Tcl_MacConvertTextResource): added utf conversion of text resource contents. * tests/macFCmd.test (macFCmd-1.2): allow CWIE creator. -2002-06-04 Don Porter +2002-06-04 Don Porter * library/tcltest/tcltest.tcl: * tests/init.test: * tests/tcltest.test: Added more TIP 85 tests from Arjen Markus. - Converted tcltest.test to use a private namespace. Fixed bugs in + Converted tcltest.test to use a private namespace. Fixed bugs in [tcltest::Eval] revealed by calling [tcltest::test] from a non-global namespace, and namespace errors in init.test. @@ -8012,54 +7830,53 @@ * win/README: Update msys+mingw URL. -2002-06-03 Don Porter +2002-06-03 Don Porter * doc/tcltest.n: * library/tcltest/tcltest.tcl: * library/tcltest/pkgIndex.tcl: - * tests/tcltest.test: Implementation of TIP 85. Allows tcltest - users to add new legal values of the -match option to [test], - associating each with a Tcl command that does the matching of - expected results with actual results of tests. Thanks to - Arjen Markus. => tcltest 2.1 [Patch 521362] + * tests/tcltest.test: Implementation of TIP 85. Allows tcltest users + to add new legal values of the -match option to [test], associating + each with a Tcl command that does the matching of expected results + with actual results of tests. Thanks to Arjen Markus. => tcltest 2.1 + [Patch 521362] 2002-06-03 Miguel Sofer - * doc/namespace.n: added description of [namepace forget] - behaviour for unqualified patterns [Bug 559268] + * doc/namespace.n: added description of [namepace forget] behaviour + for unqualified patterns [Bug 559268] 2002-06-03 Miguel Sofer - * generic/tclExecute.c: reverting an accidental modification in - the last commit. + * generic/tclExecute.c: reverting an accidental modification in the + last commit. 2002-06-03 Miguel Sofer * doc/Tcl.n: clarify the empty variable name issue ([Bug 549285] reported by Tom Krehbiel, patch by Don Porter). -2002-05-31 Don Porter +2002-05-31 Don Porter * library/package.tcl: Fixed leak of slave interp in [pkg_mkIndex]. - Thanks to Helmut for report. [Bug 550534] + Thanks to Helmut for report. [Bug 550534] * tests/io.test: - * tests/main.test: Use the "stdio" constraint to control whether - an [open "|[interpreter]"] is attempted. + * tests/main.test: Use the "stdio" constraint to control whether an + [open "|[interpreter]"] is attempted. * generic/tclExecute.c (TclMathInProgress,TclExecuteByteCode - ExprCallMathFunc): + (ExprCallMathFunc): * generic/tclInt.h (TclMathInProgress): * unix/Makefile.in (tclMtherr.*): * unix/configure.in (NEED_MATHERR): * unix/tclAppInit.c (matherr): * unix/tclMtherr.c (removed file): * win/tclWinMtherr.c (_matherr): Removed internal routine - TclMathInProgress and Unix implementation of matherr(). These - are now obsolete, dealing with very old versions of the C math - library. Windows version is retained in case Borland compilers - require it, but it is inactive. Thanks to Joe English. - [Bug 474335, Patch 555635]. + TclMathInProgress and Unix implementation of matherr(). These are now + obsolete, dealing with very old versions of the C math library. + Windows version is retained in case Borland compilers require it, but + it is inactive. Thanks to Joe English. [Bug 474335, Patch 555635] * unix/configure: regen 2002-05-30 Miguel Sofer @@ -8067,113 +7884,110 @@ * generic/tclCompExpr.c: * generic/tclCompile.c: * generic/tclCompile.h: removed exprIsJustVarRef and - exprIsComparison from the ExprInfo and CompileEnv structs. These - were set, but not used since dec 1999 [Bug 562383]. + exprIsComparison from the ExprInfo and CompileEnv structs. These were + set, but not used since dec 1999 [Bug 562383]. 2002-05-30 Vince Darley - * generic/tclFileName.c (TclGlob): fix to longstanding - 'knownBug' in fileName tests 15.2-15.4, and fix to a new - Tcl 8.4 bug in certain uses of 'glob -tails'. - * tests/fileName.test: removed 'knownBug' flag from some tests, - added some new tests for above bugs. + * generic/tclFileName.c (TclGlob): fix to longstanding 'knownBug' in + fileName tests 15.2-15.4, and fix to a new Tcl 8.4 bug in certain uses + of 'glob -tails'. + * tests/fileName.test: removed 'knownBug' flag from some tests, added + some new tests for above bugs. -2002-05-29 Jeff Hobbs +2002-05-29 Jeff Hobbs * unix/configure: regen'ed - * unix/configure.in: replaced bigendian check with autoconf - standard AC_C_BIG_ENDIAN, which defined WORDS_BIGENDIAN on - bigendian systems. + * unix/configure.in: replaced bigendian check with autoconf standard + AC_C_BIG_ENDIAN, which defined WORDS_BIGENDIAN on bigendian systems. * generic/tclUtf.c (Tcl_UniCharNcmp): * generic/tclInt.h (TclUniCharNcmp): use WORDS_BIGENDIAN instead of TCL_OPTIMIZE_UNICODE_COMPARE to enable memcmp alternative. * generic/tclExecute.c (TclExecuteByteCode INST_STR_CMP): - * generic/tclCmdMZ.c (Tcl_StringObjCmd): changed the case for - choosing the Tcl_UniCharNcmp compare to when both objs are of - StringType, as benchmarks show that is the optimal check (both - bigendian and littleendian systems). + * generic/tclCmdMZ.c (Tcl_StringObjCmd): changed the case for choosing + the Tcl_UniCharNcmp compare to when both objs are of StringType, as + benchmarks show that is the optimal check (both bigendian and + littleendian systems). -2002-05-29 Don Porter +2002-05-29 Don Porter - * generic/tclMain.c: Removed "dummy" reference to Tcl_LinkVar. - It is no longer needed since Tcl_Main() now actually calls - Tcl_LinkVar(). Thanks to Joe English for pointing that out. + * generic/tclMain.c: Removed "dummy" reference to Tcl_LinkVar. It is + no longer needed since Tcl_Main() now actually calls Tcl_LinkVar(). + Thanks to Joe English for pointing that out. 2002-05-29 Donal K. Fellows * generic/tclExecute.c (TclExecuteByteCode): * generic/tclCmdMZ.c (Tcl_StringObjCmd): Use the macro version. - * generic/tclInt.h (TclUniCharNcmp): Optimised still further with - a macro for use in sensitive places like tclExecute.c + * generic/tclInt.h (TclUniCharNcmp): Optimised still further with a + macro for use in sensitive places like tclExecute.c - * generic/tclUtf.c (Tcl_UniCharNcmp): Use new flag to figure out - when we can use an optimal comparison scheme, and default to the - old scheme in other cases which is at least safe. - * unix/configure.in (TCL_OPTIMIZE_UNICODE_COMPARE): New optional - flag that indicates when we can use memcmp() to compare Unicode - strings (i.e. when the high-byte of a Tcl_UniChar precedes the - low-byte.) + * generic/tclUtf.c (Tcl_UniCharNcmp): Use new flag to figure out when + we can use an optimal comparison scheme, and default to the old scheme + in other cases which is at least safe. + * unix/configure.in (TCL_OPTIMIZE_UNICODE_COMPARE): New optional flag + that indicates when we can use memcmp() to compare Unicode strings + (i.e. when the high-byte of a Tcl_UniChar precedes the low-byte.) -2002-05-29 Jeff Hobbs +2002-05-29 Jeff Hobbs * generic/tclInt.decls: * generic/tclIntDecls.h: * generic/tclStubInit.c: - * generic/tclUtf.c: added TclpUtfNcmp2 private command that - mirrors Tcl_UtfNcmp, but takes n in bytes, not utf-8 chars. This - provides a faster alternative for comparing utf strings internally. - (Tcl_UniCharNcmp, Tcl_UniCharNcasecmp): removed the explicit end - of string check as it wasn't correct for the function (by doc and - logic). + * generic/tclUtf.c: added TclpUtfNcmp2 private command that mirrors + Tcl_UtfNcmp, but takes n in bytes, not utf-8 chars. This provides a + faster alternative for comparing utf strings internally. + (Tcl_UniCharNcmp, Tcl_UniCharNcasecmp): removed the explicit end of + string check as it wasn't correct for the function (by doc and logic). * generic/tclCmdMZ.c (Tcl_StringObjCmd): reworked the string equal - comparison code to use TclpUtfNcmp2 as well as short-circuit for - equal objects or unequal length strings in the equal case. - Removed the use of goto and streamlined the other parts. + comparison code to use TclpUtfNcmp2 as well as short-circuit for equal + objects or unequal length strings in the equal case. Removed the use + of goto and streamlined the other parts. - * generic/tclExecute.c (TclExecuteByteCode): added check for - object equality in the comparison instructions. Added - short-circuit for != length strings in INST_EQ, INST_NEQ and - INST_STR_CMP. Reworked INST_STR_CMP to use TclpUtfNcmp2 where - appropriate, and only use Tcl_UniCharNcmp when at least one of the - objects is a Unicode obj with no utf bytes. + * generic/tclExecute.c (TclExecuteByteCode): added check for object + equality in the comparison instructions. Added short-circuit for != + length strings in INST_EQ, INST_NEQ and INST_STR_CMP. Reworked + INST_STR_CMP to use TclpUtfNcmp2 where appropriate, and only use + Tcl_UniCharNcmp when at least one of the objects is a Unicode obj with + no utf bytes. - * generic/tclCompCmds.c (TclCompileStringCmd): removed error - creation in code that no longer throws an error. + * generic/tclCompCmds.c (TclCompileStringCmd): removed error creation + in code that no longer throws an error. * tests/string.test: * tests/stringComp.test: added more string comparison checks. * tests/clock.test: better qualified 9.1 constraint check for %s. -2002-05-28 Jeff Hobbs +2002-05-28 Jeff Hobbs - * generic/tclThreadAlloc.c (TclpRealloc, TclpFree): protect - against the case when NULL is based. + * generic/tclThreadAlloc.c (TclpRealloc, TclpFree): protect against + the case when NULL is based. * tests/clock.test: added clock-9.1 * compat/strftime.c: * generic/tclClock.c: * generic/tclInt.decls: * generic/tclIntDecls.h: - * unix/tclUnixTime.c: fix for Windows msvcrt mem leak caused by - using an env(TZ) setting trick for in clock format -gmt 1. This - also makes %s seem to work correctly with -gmt 1 as well as - making it a lot faster by avoid the env(TZ) hack. TclpStrftime - now takes useGMT as an arg. [Bug #559376] + * unix/tclUnixTime.c: fix for Windows msvcrt mem leak caused by using + an env(TZ) setting trick for in clock format -gmt 1. This also makes + %s seem to work correctly with -gmt 1 as well as making it a lot + faster by avoid the env(TZ) hack. TclpStrftime now takes useGMT as an + arg. [Bug 559376] 2002-05-28 Vince Darley - * generic/tclIOUtil.c: fixes to Tcl_FSLoadFile when called on - a file inside a vfs. This should avoid leaving temporary - files sitting around on exit. [Bug #545579] + * generic/tclIOUtil.c: fixes to Tcl_FSLoadFile when called on a file + inside a vfs. This should avoid leaving temporary files sitting around + on exit. [Bug 545579] 2002-05-27 Donal K. Fellows * win/tclWinError.c: Added comment on conversion of - ERROR_NEGATIVE_SEEK because that is a mapping that really belongs, - and not a catch-all case. + ERROR_NEGATIVE_SEEK because that is a mapping that really belongs, and + not a catch-all case. * win/tclWinPort.h (EOVERFLOW): Should be either EFBIG or EINVAL * generic/tclPosixStr.c (Tcl_ErrnoId, Tcl_ErrnoMsg): EOVERFLOW can potentially be a synonym for EINVAL. @@ -8187,17 +8001,17 @@ * generic/tclIOGT.c (TransformSeekProc, TransformWideSeekProc): Adapted to use the new channel mechanism. * unix/tclUnixChan.c (FileSeekProc, FileWideSeekProc): Renamed - FileSeekProc to FileWideSeekProc and created new FileSeekProc - which has the old-style interface and which errors out with - EOVERFLOW when the returned file position can't fit into the - return type (int for historical reasons.) + FileSeekProc to FileWideSeekProc and created new FileSeekProc which + has the old-style interface and which errors out with EOVERFLOW when + the returned file position can't fit into the return type (int for + historical reasons.) * win/tclWinChan.c (FileSeekProc, FileWideSeekProc): Renamed - FileSeekProc to FileWideSeekProc and created new FileSeekProc - which has the old-style interface and which errors out with - EOVERFLOW when the returned file position can't fit into the - return type (int for historical reasons.) - * mac/tclMacChan.c (FileSeek): Reverted to old interface; Macs - lack large-file support because I can't see how to add it. + FileSeekProc to FileWideSeekProc and created new FileSeekProc which + has the old-style interface and which errors out with EOVERFLOW when + the returned file position can't fit into the return type (int for + historical reasons.) + * mac/tclMacChan.c (FileSeek): Reverted to old interface; Macs lack + large-file support because I can't see how to add it. * generic/tclIO.c (Tcl_Seek, Tcl_Tell): Given these functions knowledge of the new arrangement of channel types. (Tcl_ChannelVersion): Added recognition of new version code. @@ -8212,90 +8026,83 @@ 2002-05-24 Andreas Kupries - * tests/winPipe.test: Applied patch for SF Tcl Bug #549617. Patch - and bug report by Kevin Kenny . + * tests/winPipe.test: Applied patch for [Bug 549617]. Patch and bug + report by Kevin Kenny . - * win/tclWinSock.c (TcpWatchProc): Fixed SF Tcl Bug #557878. We - are not allowed to mess with the watch mask if the socket is a - server socket. I believe that the original reporter is George - Peter Staplin. + * win/tclWinSock.c (TcpWatchProc): Fixed [Bug 557878]. We are not + allowed to mess with the watch mask if the socket is a server socket. + I believe that the original reporter is George Peter Staplin. 2002-05-21 Mo DeJong * unix/configure: Regen. - * unix/configure.in: Invoke SC_ENABLE_SHARED before - calling SC_CONFIG_CFLAGS so that the SHARED_BUILD - variable can be checked inside SC_CONFIG_CFLAGS. - * unix/tcl.m4 (SC_CONFIG_CFLAGS): Pass -non_shared - instead of -shared to ld when configured with - --disable-shared under OSF. [Tcl bug 540390] + * unix/configure.in: Invoke SC_ENABLE_SHARED before calling + SC_CONFIG_CFLAGS so that the SHARED_BUILD variable can be checked + inside SC_CONFIG_CFLAGS. + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Pass -non_shared instead of -shared + to ld when configured with --disable-shared under OSF. [Bug 540390] 2002-05-20 Daniel Steffen * generic/tclInt.h: added prototype for TclpFilesystemPathType(). - * mac/tclMacChan.c: use MSL provided creator type if available - instead of the default 'MPW '. + * mac/tclMacChan.c: use MSL provided creator type if available instead + of the default 'MPW '. -2002-05-16 Joe English +2002-05-16 Joe English - * doc/CrtObjCmd.3: - Added Tcl_GetCommandFromObj, Tcl_GetCommandFullName - (Tcl Bug #547987, #414921) + * doc/CrtObjCmd.3: Added Tcl_GetCommandFromObj, Tcl_GetCommandFullName + [Bugs 547987, 414921] 2002-05-14 Donal K. Fellows - * unix/tclUnixChan.c (TtyOutputProc): #if/#endif-ed this function - out to stop compiler warnings. Also much general tidying of - comments in this file and removal of whitespace from blank lines. + * unix/tclUnixChan.c (TtyOutputProc): #if/#endif-ed this function out + to stop compiler warnings. Also much general tidying of comments in + this file and removal of whitespace from blank lines. 2002-05-13 Donal K. Fellows - * unix/tclUnixChan.c (SETBREAK): Solaris thinks ioctl() takes a - signed second argument, and Linux thinks ioctl() takes an unsigned - second argument. So need a longer definition of this macro to get - neither to spew warnings... + * unix/tclUnixChan.c (SETBREAK): Solaris thinks ioctl() takes a signed + second argument, and Linux thinks ioctl() takes an unsigned second + argument. So need a longer definition of this macro to get neither to + spew warnings... 2002-05-13 Vince Darley * generic/tclEvent.c: * generic/tclIOUtil.c: - * generic/tclInt.h: clean up all memory allocated by the - filesystem, via introduction of 'TclFinalizeFilesystem'. - Move TclFinalizeLoad into TclFinalizeFilesystem so we can - be sure it is called at just the right time. - Fix bad comment also. [Bug #555078 and 'fs' part of #543549] + * generic/tclInt.h: clean up all memory allocated by the filesystem, + via introduction of 'TclFinalizeFilesystem'. Move TclFinalizeLoad into + TclFinalizeFilesystem so we can be sure it is called at just the right + time. Fix bad comment also. [Bug 555078 and 'fs' part of 543549] * win/tclWinChan.c: fix comment referring to wrong function. -2002-05-10 Don Porter +2002-05-10 Don Porter * tests/load.test: * tests/safe.test: - * tests/tcltest.test: Corrected some list-quoting issues and - other matters that cause tests to fail when the patch includes - special characters. Report from Vince Darley. [Bug 554068]. + * tests/tcltest.test: Corrected some list-quoting issues and other + matters that cause tests to fail when the patch includes special + characters. Report from Vince Darley. [Bug 554068]. 2002-05-08 David Gravereaux * doc/file.n: * tools/man2tcl.c: - * tools/man2help2.tcl: Thanks to Peter Spjuth - , again. My prior fix for - single-quote macro mis-understanding was wrong. Reverted to - reimpliment the 'macro2' proc which handles single-quote macros - and restored file.n text arrangement to avoid single-quotes on - the first line. Sorry for all the confusion. + * tools/man2help2.tcl: Thanks to Peter Spjuth , + again. My prior fix for single-quote macro mis-understanding was + wrong. Reverted to reimpliment the 'macro2' proc which handles + single-quote macros and restored file.n text arrangement to avoid + single-quotes on the first line. Sorry for all the confusion. 2002-05-08 David Gravereaux * tools/man2tcl.c: - * tools/man2help2.tcl: Proper source of macro error mis- - understanding single-quote as the leading macro command found - and repaired. + * tools/man2help2.tcl: Proper source of macro error mis-understanding + single-quote as the leading macro command found and repaired. - * doc/file.n: Reverted to prior state before I messed with - it. + * doc/file.n: Reverted to prior state before I messed with it. -2002-05-08 Don Porter +2002-05-08 Don Porter * library/tcltest/tcltest.tcl: Corrected [uplevel] quoting when [source]-ing test script in subdirectories. @@ -8303,23 +8110,23 @@ * tests/load.test: * tests/main.test: * tests/tcltest.test: - * tests/unixInit.test: Fixes to test suite when there's a space - in the working path. Thanks to Kevin Kenny. + * tests/unixInit.test: Fixes to test suite when there's a space in the + working path. Thanks to Kevin Kenny. 2002-05-07 David Gravereaux -- Changes from Peter Spjuth - * tools/man2tcl.c: Increased line buffer size and a bail-out if - that should ever be over-run. + * tools/man2tcl.c: Increased line buffer size and a bail-out if that + should ever be over-run. * tools/man2help.tcl: Include Courier New font in rtf header. - * tools/man2help2.tcl: Improved handling of CS/CE fields. Use - Courier New for code samples and indent better. + * tools/man2help2.tcl: Improved handling of CS/CE fields. Use Courier + New for code samples and indent better. * doc/file.n: - * doc/TraceCmd.3: winhelp conversion tools where understanding - a ' as the first character on a line to be an unknown macro. - Not knowing how to repair tools/man2tcl.c, I decided to rearrange - the text in the docs instead. + * doc/TraceCmd.3: winhelp conversion tools where understanding a ' as + the first character on a line to be an unknown macro. Not knowing how + to repair tools/man2tcl.c, I decided to rearrange the text in the docs + instead. 2002-05-07 Vince Darley @@ -8329,8 +8136,8 @@ * doc/FileSystem.3: further documentation on vfs. * tests/cmdAH.test: * tests/fileSystem.test: - * tests/pkgMkindex.test: Fix to testsuite bugs when running out - of directory whose name contains '{' or '['. + * tests/pkgMkindex.test: Fix to testsuite bugs when running out of + directory whose name contains '{' or '['. 2002-05-07 Miguel Sofer @@ -8341,64 +8148,62 @@ 2002-05-02 Vince Darley - * generic/tclFileName.c: fix to freeing a bad object - (i.e. segfault) when using 'glob -types nonsense -dir dirname'. - * generic/tclWinFile.c: fix to [Bug 551306], also wrapped some - long lines. + * generic/tclFileName.c: fix to freeing a bad object (i.e. segfault) + when using 'glob -types nonsense -dir dirname'. + * generic/tclWinFile.c: fix to [Bug 551306], also wrapped some long + lines. * tests/fileName.test: added several tests for the above bugs. - * doc/FileSystem.3: clarified documentation on refCount - requirements of the object returned by the path type function. + * doc/FileSystem.3: clarified documentation on refCount requirements + of the object returned by the path type function. * generic/tclIOUtil.c: * win/tclWinFile.c: * unix/tclUnixFile.c: - * mac/tclMacFile.c: moved TclpFilesystemPathType to the - platform specific directories, so we can add missing platform- - specific implementations. On Windows, 'file system' now returns - useful results like "native NTFS", "native FAT" for that system. - Unix and MacOS still only return "native". + * mac/tclMacFile.c: moved TclpFilesystemPathType to the platform + specific directories, so we can add missing platform-specific + implementations. On Windows, 'file system' now returns useful results + like "native NTFS", "native FAT" for that system. Unix and MacOS still + only return "native". * doc/file.n: clarified documentation. - * tests/winFile.test: test for 'file system' returning correct - values. + * tests/winFile.test: test for 'file system' returning correct values. * tests/fileSystem.test: test for 'file system' returning correct - values. Clean up after failed previous test run. + values. Clean up after failed previous test run. -2002-04-26 Jeff Hobbs +2002-04-26 Jeff Hobbs * unix/configure: - * unix/tcl.m4: change HP-11 SHLIB_LD_LIBS from "" to ${LIBS} so - that the .sl knows its dependent libs. + * unix/tcl.m4: change HP-11 SHLIB_LD_LIBS from "" to ${LIBS} so that + the .sl knows its dependent libs. 2002-04-26 Donal K. Fellows * tests/obj.test (obj-11.[56]): Test conversion to boolean more thoroughly. * generic/tclObj.c (SetBooleanFromAny): Was not calling an integer - parsing function on native 64-bit platforms! [Bug 548686] + parsing function on native 64-bit platforms! [Bug 548686] -2002-04-24 Jeff Hobbs +2002-04-24 Jeff Hobbs - * generic/tclInt.h: corrected TclRememberJoinableThread decl to - use VOID instead of void. + * generic/tclInt.h: corrected TclRememberJoinableThread decl to use + VOID instead of void. * generic/tclThreadJoin.c: noted that this code isn't needed on Unix. -2002-04-23 Jeff Hobbs +2002-04-23 Jeff Hobbs * doc/exec.n: - * doc/tclvars.n: doc updates [Patch #509426] (gravereaux) + * doc/tclvars.n: doc updates [Patch 509426] (gravereaux) 2002-04-24 Daniel Steffen - * mac/tclMacResource.r: added check of - TCLTK_NO_LIBRARY_TEXT_RESOURCES #define to allow disabling the - inclusion of the tcl library code in the resource fork of Tcl - executables and shared libraries. + * mac/tclMacResource.r: added check of TCLTK_NO_LIBRARY_TEXT_RESOURCES + #define to allow disabling the inclusion of the tcl library code in + the resource fork of Tcl executables and shared libraries. 2002-04-23 Donal K. Fellows * doc/TraceCmd.3: New file that documents Tcl_CommandTraceInfo, Tcl_TraceCommand and Tcl_UntraceCommand [Bug 414927] -2002-04-22 Jeff Hobbs +2002-04-22 Jeff Hobbs * generic/tclAlloc.c: * generic/tclInt.h: @@ -8407,44 +8212,44 @@ * unix/tclUnixThrd.c: * win/Makefile.in: * win/tclWinInt.h: - * win/tclWinThrd.c: added new threaded allocator contributed by - AOL that significantly reduces lock contention when multiple - threads are in use. Only Windows and Unix implementations are - ready, and the Windows one may need work. It is only used by - default on Unix for now, and requires that USE_THREAD_ALLOC be - defined (--enable-threads on Unix will define this). + * win/tclWinThrd.c: added new threaded allocator contributed by AOL + that significantly reduces lock contention when multiple threads are + in use. Only Windows and Unix implementations are ready, and the + Windows one may need work. It is only used by default on Unix for now, + and requires that USE_THREAD_ALLOC be defined (--enable-threads on + Unix will define this). - * generic/tclIOUtil.c (Tcl_FSRegister, Tcl_FSUnregister): - corrected calling of Tcl_ConditionWait to ensure that there would - be a condition to wait upon. + * generic/tclIOUtil.c (Tcl_FSRegister, Tcl_FSUnregister): corrected + calling of Tcl_ConditionWait to ensure that there would be a condition + to wait upon. * generic/tclCmdAH.c (Tcl_FileObjCmd): added cast in FILE_SIZE. - * win/tclWinFCmd.c (DoDeleteFile): check return of setattr API - calls in file deletion for correct Win32 API handling. + * win/tclWinFCmd.c (DoDeleteFile): check return of setattr API calls + in file deletion for correct Win32 API handling. * win/Makefile.in: correct dependencies for shell, gdb, runtest targets. * doc/clock.n: * compat/strftime.c (_fmt): change strftime to correctly handle - localized %c, %x and %X on Windows. Added some notes about how - the other values could be further localized. + localized %c, %x and %X on Windows. Added some notes about how the + other values could be further localized. -2002-04-19 Don Porter +2002-04-19 Don Porter - * generic/tclMain.c (Tcl_Main): Free the memory allocated for the - startup script path. [Bug 543549] + * generic/tclMain.c (Tcl_Main): Free the memory allocated for the + startup script path. [Bug 543549] - * library/msgcat/msgcat.tcl: [mcmax] wasn't using the caller's - namespace when determining the max translated length. Also - made revisions for better use of namespace variables and more - efficient [uplevel]s. + * library/msgcat/msgcat.tcl: [mcmax] wasn't using the caller's + namespace when determining the max translated length. Also made + revisions for better use of namespace variables and more efficient + [uplevel]s. * doc/msgcat.n: * library/msgcat/msgcat.tcl: - * library/msgcat/pkgIndex.tcl: Added [mcload] to the export list - of msgcat; bumped to 1.2.3. [Bug 544727] + * library/msgcat/pkgIndex.tcl: Added [mcload] to the export list of + msgcat; bumped to 1.2.3. [Bug 544727] 2002-04-20 Daniel Steffen @@ -8453,112 +8258,110 @@ * generic/tclStubInit.c: * mac/tclMacFCmd.c: * mac/tclMacFile.c: - * mac/tclMacUtil.c: Modified TclpObjNormalizePath to be alias - file aware, and replaced various calls to FSpLocationFrom*Path - by calls to new alias file aware versions FSpLLocationFrom*Path. - The alias file aware routines don't resolve the last component of - a path if it is an alias. This allows [file copy/delete] etc. to - act correctly on alias files. (c.f. discussion in Bug #511666) + * mac/tclMacUtil.c: Modified TclpObjNormalizePath to be alias file + aware, and replaced various calls to FSpLocationFrom*Path by calls to + new alias file aware versions FSpLLocationFrom*Path. The alias file + aware routines don't resolve the last component of a path if it is an + alias. This allows [file copy/delete] etc. to act correctly on alias + files. (c.f. discussion in [Bug 511666]) 2002-04-19 Donal K. Fellows * tests/lindex.test (lindex-3.7): - * generic/tclUtil.c (TclGetIntForIndex): Stopped indexes from - hitting wide ints. [Bug #526717] + * generic/tclUtil.c (TclGetIntForIndex): Stopped indexes from hitting + wide ints. [Bug 526717] 2002-04-18 Miguel Sofer * generic/tclNamesp.c: - * tests/info.test: [Bug 545325] info level didn't report - namespace eval, bug report by Richard Suchenwirth. + * tests/info.test: [Bug 545325] info level didn't report namespace + eval, bug report by Richard Suchenwirth. -2002-04-18 Don Porter +2002-04-18 Don Porter * doc/subst.n: Clarified documentation on handling unusual return - codes during substitution, and on variable substitutions implied - by command substitution, and vice versa. [Bug 536838] + codes during substitution, and on variable substitutions implied by + command substitution, and vice versa. [Bug 536838] 2002-04-18 Donal K. Fellows * generic/tclCmdIL.c (InfoBodyCmd): - * tests/info.test (info-2.6): Proc bodies without string reps - would report as empty [Bug #545644] + * tests/info.test (info-2.6): Proc bodies without string reps would + report as empty [Bug 545644] - * generic/tclCmdMZ.c (Tcl_SubstObj): More clarification for - comment on behaviour when substitutions are not well-formed, - prompted by [Bug #536831]; alas, removing the ill-defined - behaviour is a lot of work. + * generic/tclCmdMZ.c (Tcl_SubstObj): More clarification for comment on + behaviour when substitutions are not well-formed, prompted by [Bug + 536831]; alas, removing the ill-defined behaviour is a lot of work. 2002-04-18 Miguel Sofer * generic/tclExecute.c: - * tests/expr-old.test: fix for [Bug #542588] (Phil Ehrens), where - "too large integers" were reported as "floating-point value" in - [expr] error messages. + * tests/expr-old.test: fix for [Bug 542588] (Phil Ehrens), where "too + large integers" were reported as "floating-point value" in [expr] + error messages. -2002-04-17 Jeff Hobbs +2002-04-17 Jeff Hobbs * generic/tclEncoding.c (EscapeFromUtfProc): - * generic/tclIO.c (WriteChars, Tcl_Close): corrected the handling - of outputting end escapes for escape-based encodings. - [Bug #526524] (yamamoto) + * generic/tclIO.c (WriteChars, Tcl_Close): corrected the handling of + outputting end escapes for escape-based encodings. + [Bug 526524] (yamamoto) -2002-04-17 Don Porter +2002-04-17 Don Porter - * doc/tcltest.n: Removed [saveState] and [restoreState] from - tcltest 2 documentation, effectively deprecating them. [Bug 495660] - * library/tcltest/tcltest.tcl: Made separate export for commands - kept only for tcltest 1 compatibility. + * doc/tcltest.n: Removed [saveState] and [restoreState] from tcltest + 2 documentation, effectively deprecating them. [Bug 495660] + * library/tcltest/tcltest.tcl: Made separate export for commands kept + only for tcltest 1 compatibility. * tests/iogt.test: Revised to run tests in a namespace, rather than - use the useless and buggy [saveState] and [restoreState] commands - of tcltest. Updated to use tcltest 2 as well. [Patch 544911] + use the useless and buggy [saveState] and [restoreState] commands of + tcltest. Updated to use tcltest 2 as well. [Patch 544911] -2002-04-16 Don Porter +2002-04-16 Don Porter - * tests/io.test: Revised to run tests in a namespace, rather than - use the useless and buggy [saveState] and [restoreState] commands - of tcltest. Updated to use tcltest 2 as well. [Patch 544546] + * tests/io.test: Revised to run tests in a namespace, rather than use + the useless and buggy [saveState] and [restoreState] commands of + tcltest. Updated to use tcltest 2 as well. [Patch 544546] 2002-04-15 Miguel Sofer * generic/tclProc.c: * tests/proc-old.test: Improved stack trace for TCL_BREAK and - TCL_CONTINUE returns from procs. Patch by Don Porter - [Bug 536955]. + TCL_CONTINUE returns from procs. [Bug 536955] (dgp) * generic/tclExecute.c: * tests/compile.test: made bytecodes check for a catch before - returning; the compiled [return] is otherwise non-catchable. - [Bug 542142] reported by Andreas Kupries. + returning; the compiled [return] is otherwise non-catchable. [Bug + 542142] reported by Andreas Kupries. -2002-04-15 Don Porter +2002-04-15 Don Porter - * tests/socket.test: Increased timeout values so that tests have - time to successfully complete even on slow/busy machines. [Bug 523470] + * tests/socket.test: Increased timeout values so that tests have time + to successfully complete even on slow/busy machines. [Bug 523470] * doc/tcltest.n: * library/tcltest/tcltest.tcl: - * tests/tcltest.test: Revised [tcltest::test] to return errors - when called with invalid syntax and to accept exactly two arguments - as documented. Improved error messages. [Bug 497446, Patch 513983] + * tests/tcltest.test: Revised [tcltest::test] to return errors when + called with invalid syntax and to accept exactly two arguments as + documented. Improved error messages. [Bug 497446, Patch 513983] ***POTENTIAL INCOMPATIBILITY***: Incompatible with previous tcltest 2.* releases, found only in alpha releases of Tcl 8.4. -2002-04-11 Jeff Hobbs +2002-04-11 Jeff Hobbs * generic/tclNotify.c (TclFinalizeNotifier): remove remaining unserviced events on finalization. * win/tcl.m4: Enabled COFF as well as CV style debug info with - --enable-symbols to allow Dr. Watson users to see function info. - More info on debugging levels can be obtained at: + --enable-symbols to allow Dr. Watson users to see function info. More + info on debugging levels can be obtained at: http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp * tests/ioCmd.test: fixed iocmd-8.15 to have mac and unixPc variants. - * generic/tclParse.c (Tcl_ParseVar): conditionally incr obj - refcount to prevent possible mem leak. + * generic/tclParse.c (Tcl_ParseVar): conditionally incr obj refcount + to prevent possible mem leak. 2002-04-08 Daniel Steffen @@ -8567,35 +8370,34 @@ * mac/tclMacOSA.c: * mac/tclMacResource.c: added missing Tcl_UtfToExternalDString conversions of resource file names. - * mac/tclMacSock.c (TcpGetOptionProc): fixed bug introduced - by Andreas on 02-25; changed strcmp's to strncmp's so that - option comparison behaves like on other platforms. - * mac/tcltkMacBuildSupport.sea.hqx (CW Pro6 changes): added - support to allow Tk to hookup C library stderr/stdout to TkConsole. + * mac/tclMacSock.c (TcpGetOptionProc): fixed bug introduced by Andreas + on 02-25; changed strcmp's to strncmp's so that option comparison + behaves like on other platforms. + * mac/tcltkMacBuildSupport.sea.hqx (CW Pro6 changes): added support to + allow Tk to hookup C library stderr/stdout to TkConsole. * tests/basic.test: * tests/cmdAH.test: * tests/encoding.test: * tests/fileSystem.test: - * tests/ioCmd.test: fixed tests failing on mac: check for - existence of [exec], changed some result strings. + * tests/ioCmd.test: fixed tests failing on mac: check for existence of + [exec], changed some result strings. -2002-04-06 Jeff Hobbs +2002-04-06 Jeff Hobbs * unix/tclUnixFCmd.c (Realpath): added a little extra code to - initialize a realpath arg when compiling in PURIFY mode in order - to prevent spurious purify warnings. We should really create our - own realpath implementation, but this will at least quiet purify - for now. + initialize a realpath arg when compiling in PURIFY mode in order to + prevent spurious purify warnings. We should really create our own + realpath implementation, but this will at least quiet purify for now. -2002-04-05 Don Porter +2002-04-05 Don Porter * generic/tclCmdMZ.c (Tcl_SubstObj): - * tests/subst.test: Corrected [subst] so that return codes - TCL_BREAK and TCL_CONTINUE returned by variable substitution - have the same effect as when those codes are returned by command - substitution. [Bug 536879] + * tests/subst.test: Corrected [subst] so that return codes TCL_BREAK + and TCL_CONTINUE returned by variable substitution have the same + effect as when those codes are returned by command substitution. [Bug + 536879] -2002-04-03 Jeff Hobbs +2002-04-03 Jeff Hobbs * library/tcltest/tcltest.tcl: added getMatchingFiles back (alias to GetMatchingFiles), which was a public function in tcltest 1.0. @@ -8603,66 +8405,64 @@ 2002-04-01 Vince Darley * generic/tclEnv.c: - * generic/tclIOUtil.c: invalidate filesystem cache when the - user changes env(HOME). Fixes [Bug #535621]. Also cleaned up - some of the documentation. + * generic/tclIOUtil.c: invalidate filesystem cache when the user + changes env(HOME). Fixes [Bug 535621]. Also cleaned up some of the + documentation. * tests/fileSystem.test: added test for bug just fixed. -2002-04-01 Kevin Kenny +2002-04-01 Kevin Kenny - * win/tclWinTime.c (Tcl_GetTime): made the checks of clock - frequency more permissive to cope with the fact that Win98SE - is observed to return 1.19318 in place of 1.193182 for the - performance counter frequency. + * win/tclWinTime.c (Tcl_GetTime): made the checks of clock frequency + more permissive to cope with the fact that Win98SE is observed to + return 1.19318 in place of 1.193182 for the performance counter + frequency. -2002-03-29 Jeff Hobbs +2002-03-29 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_TraceObjCmd, TraceVarProc) - (TraceCommandProc, TclTraceCommandObjCmd): corrected - potential double-free of traces on variables by flagging in - Trace*Proc that it will free the var in case the eval wants to - delete the var trace as well. [Bug #536937] + (TraceCommandProc, TclTraceCommandObjCmd): corrected potential + double-free of traces on variables by flagging in Trace*Proc that it + will free the var in case the eval wants to delete the var trace as + well. [Bug 536937] Also converted Tcl_UntraceVar -> Tcl_UntraceVar2 and Tcl_Eval to Tcl_EvalEx in Trace*Proc for slight efficiency improvement. -2002-03-29 Don Porter +2002-03-29 Don Porter * doc/AllowExc.3: * generic/tclBasic.c (Tcl_EvalObjv,Tcl_EvalEx,Tcl_EvalObjEx): * generic/tclCompile.h (TclCompEvalObj): * generic/tclExecute.c (TclCompEvalObj,TclExecuteByteCode): - * tests/basic.test: Corrected problems with Tcl_AllowExceptions - having influence over the wrong scope of Tcl_*Eval* calls. Patch - from Miguel Sofer. Report from Jean-Claude Wippler. [Bug 219181] + * tests/basic.test: Corrected problems with Tcl_AllowExceptions having + influence over the wrong scope of Tcl_*Eval* calls. Patch from Miguel + Sofer. Report from Jean-Claude Wippler. [Bug 219181] -2002-03-28 Don Porter +2002-03-28 Don Porter - * generic/tclVar.c: Refactored CallTraces to collect repeated - handling of its returned value into CallTraces itself. + * generic/tclVar.c: Refactored CallTraces to collect repeated handling + of its returned value into CallTraces itself. 2002-03-28 David Gravereaux * tools/feather.bmp: * tools/man2help.tcl: * tools/man2help2.tcl: - * win/makefile.vc: More winhelp target fixups. Added a feather - bitmap to the non-scrollable area and changed the color to be - yellow from a plain white. The colors can be whatever we want - them to be, but thought I would start with something bold. - [Bug 527941] + * win/makefile.vc: More winhelp target fixups. Added a feather bitmap + to the non-scrollable area and changed the color to be yellow from a + plain white. The colors can be whatever we want them to be, but + thought I would start with something bold. [Bug 527941] * doc/SetVar.3: * doc/TraceVar.3: - * doc/UpVar.3: .AP macro syntax repair. + * doc/UpVar.3: .AP macro syntax repair. 2002-03-27 David Gravereaux * tools/man2help.tcl: - * win/makefile.vc: winhelp target now copies all needed files - from tools/ to a workarea under $(OUT_DIR) and builds it from - there. No build cruft is left in tools/ anymore. All paths - used in man2help.tcl are now relative to where the script is. - [Bug 527941] + * win/makefile.vc: winhelp target now copies all needed files from + tools/ to a workarea under $(OUT_DIR) and builds it from there. No + build cruft is left in tools/ anymore. All paths used in man2help.tcl + are now relative to where the script is. [Bug 527941] 2002-03-27 David Gravereaux @@ -8671,12 +8471,11 @@ * win/coffbase.txt: * win/makefile.vc: * win/nmakehlp.c (new): - * win/rules.vc: First draft fix for [Bug 527941]. More changes - need to done to the makehelp target to get to stop leaving build - files in the tools/ directory. This does not address the syntax - errors in the man files. Having the contents of tcl.hpj(.in) - inside makefile.vc allows for version numbers to be replaced with - macros. + * win/rules.vc: First draft fix for [Bug 527941]. More changes need to + done to the makehelp target to get to stop leaving build files in the + tools/ directory. This does not address the syntax errors in the man + files. Having the contents of tcl.hpj(.in) inside makefile.vc allows + for version numbers to be replaced with macros. The new nmakehlp.c is built by rules.vc in preprocessing and removes the need to use tricky shell syntax that wasn't compatible on Win9x @@ -8694,7 +8493,7 @@ * tests/basic.test: avoid exceptional returns at level 0 [Bug 219181] -2002-03-27 Don Porter +2002-03-27 Don Porter * doc/tcltest.n ([mainThread]): * library/tcltest/tcltest.tcl: @@ -8704,17 +8503,17 @@ * tests/main.test: Added missing [after cancel]s. -2002-03-25 Don Porter +2002-03-25 Don Porter * tests/main.test: Removed workarounds for Bug 495977. * library/tcltest/tcltest.tcl: Keep the value of $::auto_path unchanged, so that the tcltest package can test code that depends - on auto-loading. If a testing application needs $::auto_path pruned, - it should do that itself. [Bug 495726] + on auto-loading. If a testing application needs $::auto_path pruned, + it should do that itself. [Bug 495726] Improve the processing of the -constraints option to [test] so that constraint lists can have arbitrary whitespace, and non-lists don't - blow things up. [Bug 495977] + blow things up. [Bug 495977] Corrected faulty variable initialization. [Bug 534845] 2002-03-25 Miguel Sofer @@ -8728,13 +8527,13 @@ * generic/tclBasic.c (Tcl_EvalObjv): replaced obscure, incorrect code as described in [Bug 533907] (Don Porter). -2002-03-24 Don Porter +2002-03-24 Don Porter * library/tcltest/tcltest.tcl: Use [interpreter] to set/query the - executable currently running the tcltest package. [Bug 454050] + executable currently running the tcltest package. [Bug 454050] * library/tcltest/tcltest.tcl: Allow non-proc commands to be used - as the customization hooks. [Bug 495662] + as the customization hooks. [Bug 495662] 2002-03-24 Vince Darley @@ -8754,57 +8553,54 @@ * tests/cmdAH.test: * tests/fileName.test: * tests/fileSystem.test: (new file) - * tests/winFCmd.test: fix [Bug 511666] and [Bug 511658], - and improved documentation of some aspects of the filesystem, - particularly 'Tcl_FSMatchInDirectory' which now might match - a single file/directory only, and 'file normalize' which - wasn't very clear before. Removed inconsistency betweens - docs and the Tcl_Filesystem structure. Also fixed - [Bug 523217] and corrected file normalization on Unix so that - it expands symbolic links. Added some new tests of the - filesystem code (in the new file 'fileSystem.test'), and - some extra tests for correct handling of symbolic links. - Fix to [Bug 530960] which shows up on Win98. Made comparison - with ".com" case insensitive in tclWinPipe.c - - ***POTENTIAL INCOMPATIBILITY***: But only between alpha - releases (users of the new Tcl_Filesystem lookup table in Tcl - 8.4a4 need to handle the new way in which Tcl may call - Tcl_FSMatchInDirectory, and 'file normalize' on unix now - behaves correctly). Only known impact is with the 'tclvfs' - extension. + * tests/winFCmd.test: fix [Bug 511666] and [Bug 511658], and improved + documentation of some aspects of the filesystem, particularly + 'Tcl_FSMatchInDirectory' which now might match a single file/directory + only, and 'file normalize' which wasn't very clear before. Removed + inconsistency betweens docs and the Tcl_Filesystem structure. Also + fixed [Bug 523217] and corrected file normalization on Unix so that it + expands symbolic links. Added some new tests of the filesystem code + (in the new file 'fileSystem.test'), and some extra tests for correct + handling of symbolic links. Fix to [Bug 530960] which shows up on + Win98. Made comparison with ".com" case insensitive in tclWinPipe.c + + ***POTENTIAL INCOMPATIBILITY***: But only between alpha releases + (users of the new Tcl_Filesystem lookup table in Tcl 8.4a4 need to + handle the new way in which Tcl may call Tcl_FSMatchInDirectory, and + 'file normalize' on unix now behaves correctly). Only known impact is + with the 'tclvfs' extension. 2002-03-22 Miguel Sofer - * tests/basic.test (basic-46.1): adding test for [Bug 533758], - fixed earlier today. + * tests/basic.test (basic-46.1): adding test for [Bug 533758], fixed + earlier today. -2002-03-22 Jeff Hobbs +2002-03-22 Jeff Hobbs - * win/tclWinInt.h: moved undef of TCL_STORAGE_CLASS. [Bug #478579] + * win/tclWinInt.h: moved undef of TCL_STORAGE_CLASS. [Bug 478579] 2002-03-22 Miguel Sofer * generic/tclBasic.c (Tcl_EvalObjEx): * generic/tclExecute.c (TclCompEvalObj): fixed the errorInfo for - return codes other than (TCL_OK, TCL_ERROR) to runLevel 0 - [Bug 533758]. Removed the static RecordTracebackInfo(), as its - functionality is easily replicated by Tcl_LogCommandInfo. Bug - and redundancy noted by Don Porter. + return codes other than (TCL_OK, TCL_ERROR) to runLevel 0 [Bug + 533758]. Removed the static RecordTracebackInfo(), as its + functionality is easily replicated by Tcl_LogCommandInfo. Bug and + redundancy noted by Don Porter. 2002-03-21 Donal K. Fellows * doc/expr.n: Improved documentation for ceil and floor [Bug 530535] -2002-03-20 Don Porter +2002-03-20 Don Porter * doc/SetVar.3: * doc/TraceVar.3: * doc/UpVar.3: * generic/tcl.h (Tcl_VarTraceProc): - * generic/tcl.decls (Tcl_GetVar2, Tcl_SetVar2, Tcl_TraceVar2, - Tcl_UnsetVar2, Tcl_UntraceVar2, Tcl_UpVar2, Tcl_VarTraceInfo2, - Tcl_GetVar2Ex, TclSetVar2Ex): + * generic/tcl.decls (Tcl_GetVar2, Tcl_SetVar2, Tcl_TraceVar2) + (Tcl_UnsetVar2, Tcl_UntraceVar2, Tcl_UpVar2, Tcl_VarTraceInfo2) + (Tcl_GetVar2Ex, TclSetVar2Ex): * generic/tclCmdMZ.c (TraceVarProc): * generic/tclEnv.c (EnvTraceProc): * generic/tclEvent.c (VwaitVarProc): @@ -8812,10 +8608,10 @@ * generic/tclLink.c (LinkTraceProc): * generic/tclUtil.c (TclPrecTraceProc): * generic/tclVar.c (CallTraces, MakeUpvar, VarErrMsg, TclLookupVar, - Tcl_GetVar2, Tcl_SetVar2, Tcl_TraceVar2, Tcl_UnsetVar2, - Tcl_UntraceVar2, Tcl_UpVar2, Tcl_VarTraceInfo2, Tcl_GetVar2Ex, - TclSetVar2Ex): Updated interfaces of generic/tclVar.c according - to TIP 27. In particular, the "part2" arguments were CONSTified. + (Tcl_GetVar2, Tcl_SetVar2, Tcl_TraceVar2, Tcl_UnsetVar2) + (Tcl_UntraceVar2, Tcl_UpVar2, Tcl_VarTraceInfo2, Tcl_GetVar2Ex) + (TclSetVar2Ex): Updated interfaces of generic/tclVar.c according to + TIP 27. In particular, the "part2" arguments were CONSTified. [Patch 532642] * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs @@ -8829,77 +8625,72 @@ 2002-03-14 Mo DeJong * win/configure: Regen. - * win/configure.in: Add configure time test for SEH - support in the compiler. + * win/configure.in: Add configure time test for SEH support in the + compiler. * win/tclWin32Dll.c (ESP, EBP, TclpCheckStackSpace, - _except_checkstackspace_handler): + (_except_checkstackspace_handler): * win/tclWinChan.c (ESP, EBP, Tcl_MakeFileChannel, - _except_makefilechannel_handler): - * win/tclWinFCmd.c (ESP, EBP, DoRenameFile, - _except_dorenamefile_handler, - DoCopyFile, _except_docopyfile_handler): - Implement SEH support under gcc using inline asm. - Tcl and Tk should now compile with Mingw 1.1. [Patch 525746] + (_except_makefilechannel_handler): + * win/tclWinFCmd.c (ESP, EBP, DoRenameFile, DoCopyFile, + (_except_dorenamefile_handler, _except_docopyfile_handler): Implement + SEH support under gcc using inline asm. Tcl and Tk should now compile + with Mingw 1.1. [Patch 525746] 2002-03-14 Mo DeJong - * win/tclWinFCmd.c (DoRenameFile, DoCopyFile): Handle - an SEH exception with EXCEPTION_EXECUTE_HANDLER instead - of restarting the faulting instruction with - EXCEPTION_CONTINUE_EXECUTION. Bug 466102 provides an - example of how restarting could send Tcl into an - infinite loop. [Patch 525746] + * win/tclWinFCmd.c (DoRenameFile, DoCopyFile): Handle an SEH exception + with EXCEPTION_EXECUTE_HANDLER instead of restarting the faulting + instruction with EXCEPTION_CONTINUE_EXECUTION. Bug 466102 provides an + example of how restarting could send Tcl into an infinite loop. [Patch + 525746] 2002-03-11 Mo DeJong * win/tclWinFCmd.c (DoRenameFile, DoCopyFile, DoDeleteFile, - DoRemoveJustDirectory): Make sure we don't pass NULL or "" - as a path name to Win32 API functions since this was - crashing under Windows 98. + (DoRemoveJustDirectory): Make sure we don't pass NULL or "" as a path + name to Win32 API functions since this was crashing under Windows 98. -2002-03-11 Don Porter +2002-03-11 Don Porter * library/tcltest/tcltest.tcl: * library/tcltest/pkgIndex.tcl: Bumped tcltest package to 2.0.2. 2002-03-11 Mo DeJong - * library/tcltest/tcltest.tcl (getMatchingFiles): Pass - a proper list to foreach to avoid munging a Windows - patch like D:\Foo\Bar into D:FooBar before the glob. + * library/tcltest/tcltest.tcl (getMatchingFiles): Pass a proper list + to foreach to avoid munging a Windows patch like D:\Foo\Bar into + D:FooBar before the glob. 2002-03-11 Mo DeJong * generic/tclEncoding.c: Fix typo in comment. - * generic/tclIO.c (DoReadChars, ReadBytes, ReadChars): - Use NULL value instead of pointer set to NULL to make - things more clear. Reorder arguments so that they - match the function signatures. Cleanup little typos - and add more descriptive comment. + * generic/tclIO.c (DoReadChars, ReadBytes, ReadChars): Use NULL value + instead of pointer set to NULL to make things more clear. Reorder + arguments so that they match the function signatures. Cleanup little + typos and add more descriptive comment. 2002-03-08 Mo DeJong - * win/README: Update to indicate that Mingw 1.1 is - required to build Tcl. Add section describing new - msys based build process. Update Cygwin build - instructions so users know where to find Mingw 1.1. + * win/README: Update to indicate that Mingw 1.1 is required to build + Tcl. Add section describing new msys based build process. Update + Cygwin build instructions so users know where to find Mingw 1.1. -2002-03-08 Jeff Hobbs +2002-03-08 Jeff Hobbs * win/tclWinFCmd.c (DoCopyFile): correctly set retval to TCL_OK. 2002-03-07 Mo DeJong * win/tclWin32Dll.c (TclpCheckStackSpace): - * win/tclWinFCmd.c (DoRenameFile, DoCopyFile): Replace - hard coded constants with Win32 symbolic names. - Move control flow statements out of __try blocks - since the documentation indicates it is frowned upon. + * win/tclWinFCmd.c (DoRenameFile, DoCopyFile): Replace hard coded + constants with Win32 symbolic names. Move control flow statements out + of __try blocks since the documentation indicates it is frowned upon. -2002-03-07 Don Porter +2002-03-07 Don Porter * doc/interp.n: - * generic/tclInterp.c(Tcl_InterpObjCmd,SlaveObjCmd,SlaveRecursionLimit): + * generic/tclInterp.c (Tcl_InterpObjCmd,SlaveObjCmd, + (SlaveRecursionLimit): * generic/tclTest.c: * tests/interp.test: Added the [interp recursionlimit] command to set/query the recursion limit of an interpreter. Proposal and @@ -8915,9 +8706,9 @@ 2002-03-06 Miguel Sofer - * generic/tclInt.h: for unshared objects, TclDecrRefCount now - frees the internal rep before the string rep - just like the - non-macro Tcl_DecrRefCount/TclFreeObj [Bug 524802]. + * generic/tclInt.h: for unshared objects, TclDecrRefCount now frees + the internal rep before the string rep - just like the non-macro + Tcl_DecrRefCount/TclFreeObj [Bug 524802]. 2002-03-06 Donal K. Fellows @@ -8926,21 +8717,20 @@ * generic/tclCmdIL.c (Tcl_LsearchObjCmd): TIP#80 support. See http://purl.org/tcl/tip/80 for details. -2002-03-05 Jeff Hobbs +2002-03-05 Jeff Hobbs *** 8.4a4 TAGGED FOR RELEASE *** - * unix/tclUnixChan.c: initial remedy for [Bug #525783] flush - problem introduced by TIP #35. This may not satisfy true serial - channels, but it restores the correct flushing of std* channels on - exit. + * unix/tclUnixChan.c: initial remedy for [Bug 525783] flush problem + introduced by TIP #35. This may not satisfy true serial channels, but + it restores the correct flushing of std* channels on exit. * unix/README: added --enable-langinfo doc. * unix/tcl.spec: * tools/tcl.wse.in: fixed URL refs to use www.tcl.tk or SF. -2002-03-04 Jeff Hobbs +2002-03-04 Jeff Hobbs * README: * mac/README: @@ -8955,25 +8745,25 @@ * tests/encoding.test: corrected iso2022 encoding results. added encoding-24.* * generic/tclEncoding.c (EscapeFromUtfProc): corrected output of - escape codes as per RFC 1468. [Patch #474358] (taguchi) + escape codes as per RFC 1468. [Patch 474358] (taguchi) (TclFinalizeEncodingSubsystem): corrected potential double-free - when encodings were finalized on exit. [Bug #219314, #524674] + when encodings were finalized on exit. [Bug 219314, 524674] -2002-03-01 Jeff Hobbs +2002-03-01 Jeff Hobbs * library/encoding/iso2022-jp.enc: * library/encoding/iso2022.enc: * tools/encoding/iso2022-jp.esc: * tools/encoding/iso2022.esc: gave $B precedence over $@, - based on comments (point 1) in [Bug #219283] (rfc 1468) + based on comments (point 1) in [Bug 219283] (RFC 1468) * tests/encoding.test: added encoding-23.* tests * generic/tclIO.c (FilterInputBytes): reset the TCL_ENCODING_START - flags in the ChannelState when using 'gets'. [Bug #523988] + flags in the ChannelState when using 'gets'. [Bug 523988] Also reduced the value of ENCODING_LINESIZE from 30 to 20 as this seems to improve the performance of 'gets' according to tclbench. -2002-02-28 Jeff Hobbs +2002-02-28 Jeff Hobbs * generic/tclCmdMZ.c (TraceCommandProc): ensure that TraceCommandInfo structure was also deleted when a command was deleted to prevent a @@ -8987,16 +8777,16 @@ 2002-02-28 Miguel Sofer - * generic/tclNamesp.c: allow cached fully-qualified namespace - names to be usable from different namespaces within the same - interpreter without forcing a new lookup [Patch 458872]. + * generic/tclNamesp.c: allow cached fully-qualified namespace names to + be usable from different namespaces within the same interpreter + without forcing a new lookup [Patch 458872]. 2002-02-28 Miguel Sofer - * generic/tclExecute.c: Replaced a few direct stack accesses - with the POP_OBJECT() macro [Bug 507181] (Don Porter). + * generic/tclExecute.c: Replaced a few direct stack accesses with the + POP_OBJECT() macro [Bug 507181] (Don Porter). -2002-02-27 Don Porter +2002-02-27 Don Porter * doc/GetIndex.3: * generic/tcl.decls (Tcl_GetIndexFromObjStruct): @@ -9011,9 +8801,9 @@ * generic/tclMain.c (Tcl_Main,StdinProc): Corrected some reference count management errors on the interactive command Tcl_Obj found by - Purify. Thanks to Jeff Hobbs for the report and assistance. + Purify. Thanks to Jeff Hobbs for the report and assistance. -2002-02-27 Jeff Hobbs +2002-02-27 Jeff Hobbs * generic/tclBasic.c (Tcl_EvalTokensStandard): corrected mem leak in error case. @@ -9024,56 +8814,54 @@ 2002-02-27 Andreas Kupries - * tests/socket.test (2.7): Accepted and applied patch for Tcl SF - bug #523470 provided by Don Porter - to avoid timing problems in that test. + * tests/socket.test (2.7): Accepted and applied patch for [Bug 523470] + provided by Don Porter to avoid timing + problems in that test. * unix/tclUnixChan.c (TclpOpenFileChannel): Added code to regonize - "/dev/tty" (by name) and to not handle it as tty / serial - line. This is the controlling terminal and is special. Setting - it into raw mode as is done for other tty's is a bad idea. This - is a hackish fix for expect SGF Bug #520624. The fix has - limitation: Tcl_MakeFileChannel handles tty's specially too, but - is unable to recognize /dev/tty as it only gets a file - descriptor, and no name for it. + "/dev/tty" (by name) and to not handle it as tty / serial line. This + is the controlling terminal and is special. Setting it into raw mode + as is done for other tty's is a bad idea. This is a hackish fix for + expect [Bug 520624]. The fix has limitation: Tcl_MakeFileChannel + handles tty's specially too, but is unable to recognize /dev/tty as it + only gets a file descriptor, and no name for it. -2002-02-26 Jeff Hobbs +2002-02-26 Jeff Hobbs * generic/tclCmdAH.c (StoreStatData): corrected mem leak. - * generic/tclCmdMZ.c (Tcl_RegsubObjCmd): prevent obj leak in - remedial regsub case. + * generic/tclCmdMZ.c (Tcl_RegsubObjCmd): prevent obj leak in remedial + regsub case. * generic/tclFileName.c (Tcl_TranslateFileName): decr refcount for - error case to prevent mem leak. + error case to prevent mem leak. * generic/tclVar.c (Tcl_ArrayObjCmd): removed extra obj allocation. - * unix/tclUnixSock.c (Tcl_GetHostName): added an extra - gethostbyname check to guard against failure with truncated - names returned by uname. + * unix/tclUnixSock.c (Tcl_GetHostName): added an extra gethostbyname + check to guard against failure with truncated names returned by uname. * unix/configure: * unix/tcl.m4 (SC_SERIAL_PORT): added sys/modem.h check and defined - _XOPEN_SOURCE_EXTENDED for HP-11 to get updated header decls. + _XOPEN_SOURCE_EXTENDED for HP-11 to get updated header decls. * unix/tclUnixChan.c: added Unix implementation of TIP #35, serial - port support. [Patch #438509] (schroedter) + port support. [Patch 438509] (schroedter) 2002-02-26 Miguel Sofer * generic/tclCmpCmds.c: (bugfix to the bugfix, hopefully the last) - Bugfix to the new [for] compiling code: was setting a - exceptArray parameter using another param which wasn't yet - initialised, thus filling it with noise. + Bugfix to the new [for] compiling code: was setting a exceptArray + parameter using another param which wasn't yet initialised, thus + filling it with noise. 2002-02-25 Andreas Kupries - * mac/tclMacSock.c (TcpGetOptionProc): Changed to recognize the - option "-error". Essentially ignores the option, always - returning an empty string. + * mac/tclMacSock.c (TcpGetOptionProc): Changed to recognize the option + "-error". Essentially ignores the option, always returning an empty + string. -2002-02-25 Jeff Hobbs +2002-02-25 Jeff Hobbs * doc/Alloc.3: * doc/LinkVar.3: @@ -9082,23 +8870,22 @@ * doc/Preserve.3: * doc/TCL_MEM_DEBUG.3: Updated documentation to describe the ckalloc, ckfree, ckrealloc, attemptckalloc, and attemptckrealloc macros, and - to accurately describe when and how they are used. [Bug #497459] (dgp) + to accurately describe when and how they are used. [Bug 497459] (dgp) - * generic/tclHash.c (AllocArrayEntry, AllocStringEntry): - Before invoking ckalloc when creating a Tcl_HashEntry, - check that the amount of memory being allocated is - at least as large as sizeof(Tcl_HashEntry). The previous - code was allocating memory regions that were one - or two bytes short. [Bug #521950] (dejong) + * generic/tclHash.c (AllocArrayEntry, AllocStringEntry): Before + invoking ckalloc when creating a Tcl_HashEntry, check that the amount + of memory being allocated is at least as large as + sizeof(Tcl_HashEntry). The previous code was allocating memory regions + that were one or two bytes short. [Bug 521950] (dejong) 2002-02-25 Miguel Sofer - * generic/tclBasic.c (Tcl_EvalEx): avoiding a buffer overrun - reported by Joe English, and restoring tcl7.6 behaviour for - [subst]: badly terminated nested scripts will raise an error - and not be evaluated. [Bug #495207] + * generic/tclBasic.c (Tcl_EvalEx): avoiding a buffer overrun reported + by Joe English, and restoring tcl7.6 behaviour for [subst]: badly + terminated nested scripts will raise an error and not be evaluated. + [Bug 495207] -2002-02-25 Don Porter +2002-02-25 Don Porter * unix/tclUnixPort.h: corrected strtoll prototype mismatch on Tru64. * compat/strtod.c (strtod): simplified #includes @@ -9107,38 +8894,36 @@ 2002-02-25 Daniel Steffen - * unix/tclLoadDyld.c: updated to use Mac OS X 10.1 dyld APIs that - have more libdl-like semantics. (bug #514392) + * unix/tclLoadDyld.c: updated to use Mac OS X 10.1 dyld APIs that have + more libdl-like semantics. [Bug 514392] 2002-02-25 Miguel Sofer - * generic/tclCompCmds: fixing a bug in patch dated 2002-02-22, in - the code for [for] and [while]. Under certain conditions, for long - bodies, the exception range parameters were badly computed. Tests - forthcoming: I still can't reproduce the conditions in the - testsuite (!), although the bug (with assorted segfault or panic!) - can be triggered from the console or with the new parse.bench in - tclbench. + * generic/tclCompCmds: fixing a bug in patch dated 2002-02-22, in the + code for [for] and [while]. Under certain conditions, for long bodies, + the exception range parameters were badly computed. Tests forthcoming: + I still can't reproduce the conditions in the testsuite (!), although + the bug (with assorted segfault or panic!) can be triggered from the + console or with the new parse.bench in tclbench. 2002-02-25 Donal K. Fellows * compat/strtoul.c, compat/strtol.c, compat/strtod.c: Added UCHAR, CONST and #includes to clean up GCC output. -2002-02-23 Don Porter +2002-02-23 Don Porter * compat/strtoull.c (strtoull): * compat/strtoll.c (strtoll): - * compat/strtoul.c (strtoul): Fixed failure to handle leading - sign symbols '+' and '-' and '0X' and raise overflow errors. - [Bug 440916] Also corrects prototype and errno problems. + * compat/strtoul.c (strtoul): Fixed failure to handle leading sign + symbols '+' and '-' and '0X' and raise overflow errors. [Bug 440916] + Also corrects prototype and errno problems. 2002-02-23 Mo DeJong * configure: Regen. - * unix/tcl.m4 (SC_CONFIG_CFLAGS): Link with -n32 - instead of -32 when building on IRIX64-6.* system. - [Tcl bug 521707] + * unix/tcl.m4 (SC_CONFIG_CFLAGS): Link with -n32 instead of -32 when + building on IRIX64-6.* system. [Bug 521707] 2002-02-22 Don Porter @@ -9148,7 +8933,7 @@ * generic/tclPkg.c: Fix for panic when library is loaded on a platform without backlinking without proper use of stubs. [Bug 476537] -2002-02-22 Jeff Hobbs +2002-02-22 Jeff Hobbs * tests/regexpComp.test: updated regexp-11.[1-4] to match changes in regexp.test for new regsub syntax @@ -9161,14 +8946,14 @@ * library/safe.tcl (CheckFileName): removed the limit on sourceable file names (was only *.tcl or tclIndex files with no more than one dot and 14 chars). There is enough internal - protection in a safe interpreter already. Fixes [Tk Bug #521560]. + protection in a safe interpreter already. Fixes [Tk Bug 521560]. 2002-02-22 Miguel Sofer * generic/tclCompCmds: [FR 465811]. Optimising [if], [for] and - [while] for constant conditions; in addition, [for] and [while] - are now compiled with the "loop rotation" optimisation (thanks to - Kevin Kenny). + [while] for constant conditions; in addition, [for] and [while] are + now compiled with the "loop rotation" optimisation (thanks to Kevin + Kenny). 2002-02-22 Donal K. Fellows @@ -9191,43 +8976,40 @@ * win/mkd.bat (removed): * win/coffbase.txt (new): * win/makefile.bc: - * win/makefile.vc: Changed the 'setup' target to stop using - the mkd.bat file and just make the directory right in the rule. - Same change to makefile.bc. configure.in nor Makefile.in use - it. + * win/makefile.vc: Changed the 'setup' target to stop using the + mkd.bat file and just make the directory right in the rule. Same + change to makefile.bc. configure.in nor Makefile.in use it. - coffbase.txt will be the master list for our "prefered base - addresses" set by the linker. This should improve load-time - (NT only) by avoiding relocations. Submissions to the list - by extension authors are encouraged. + coffbase.txt will be the master list for our "prefered base addresses" + set by the linker. This should improve load-time (NT only) by avoiding + relocations. Submissions to the list by extension authors are + encouraged. - Added a 'tidy' target to compliment 'clean' and 'hose' to remove - just the outputs. Also removed the $(winlibs) macro as it wasn't - being used. + Added a 'tidy' target to compliment 'clean' and 'hose' to remove just + the outputs. Also removed the $(winlibs) macro as it wasn't being + used. Stuff left to do: - 1) get the winhelp target to stop building in the tools/ - directory. + 1) get the winhelp target to stop building in the tools/ directory. 2) stop using rmd.bat 3) add more dependacy rules. - * win/tclAppInit.c: Reverted back to -r1.6, as the header file - change to tclPort.h won't allow for easy embedded support - outside of the source dist. Thanks to Don Porter for pointing - this out to me. + * win/tclAppInit.c: Reverted back to -r1.6, as the header file change + to tclPort.h won't allow for easy embedded support outside of the + source dist. Thanks to Don Porter for pointing this out to me. 2002-02-21 David Gravereaux * win/makefile.vc: - * win/rules.vc: Added a new "loimpact" option that sets the - -ws:aggressive linker option. Off by default. It's said to - keep the heap use low at the expense of alloc speed. + * win/rules.vc: Added a new "loimpact" option that sets the + -ws:aggressive linker option. Off by default. It's said to keep the + heap use low at the expense of alloc speed. - * win/tclAppInit.c: Changed #include "tcl.h" to be tclPort.h to - remove the raw windows.h include. tclPort.h brings in windows.h - already and lessens the pre-compiled-header mush and the randomly - useless #pragma comment (lib,...) references throughout the big - windows.h tree (as observed at high linker warning levels). + * win/tclAppInit.c: Changed #include "tcl.h" to be tclPort.h to remove + the raw windows.h include. tclPort.h brings in windows.h already and + lessens the pre-compiled-header mush and the randomly useless #pragma + comment (lib,...) references throughout the big windows.h tree (as + observed at high linker warning levels). 2002-02-21 Donal K. Fellows @@ -9246,53 +9028,53 @@ * win/buildall.vc.bat: * win/makefile.vc: - * win/rules.vc: General clean-ups. Added compiler and linker tests - for a) the pentium 0x0F errata, b) optimizing (not all have this), - and c) linker v6 section alignment confusion. All these are tested - first to make sure any D4002 or LNK1117 warnings aren't displayed. - The pentium 0x0F errata is a recommended switch. The v5 linker's - section alignment default is 512, but the v6 linker was changed - to 4096 in an attempt to speed loading on Win98. I changed the - default to always be 512 across both linkers, unless linking - statically, then 4096 is used for the claimed speed effect. Using - a 512 alignment saves 12k bytes of dead space in the DLL. + * win/rules.vc: General clean-ups. Added compiler and linker tests for + a) the pentium 0x0F errata, b) optimizing (not all have this), and c) + linker v6 section alignment confusion. All these are tested first to + make sure any D4002 or LNK1117 warnings aren't displayed. The pentium + 0x0F errata is a recommended switch. The v5 linker's section alignment + default is 512, but the v6 linker was changed to 4096 in an attempt to + speed loading on Win98. I changed the default to always be 512 across + both linkers, unless linking statically, then 4096 is used for the + claimed speed effect. Using a 512 alignment saves 12k bytes of dead + space in the DLL. Added IA64 B-stepping errata switch when the compiler supports it. Added profiling to $(lflags) when requested and also removed the explict -entry option as the default works fine as is. - Removed win/tclWinInit.c from the special case section to let it - use the common implicit rule as the $(EXTFLAGS) macro it had was - never referenced anywhere. + Removed win/tclWinInit.c from the special case section to let it use + the common implicit rule as the $(EXTFLAGS) macro it had was never + referenced anywhere. 2002-02-20 Donal K. Fellows * generic/tcl.h: Added code to guess the correct settings for - TCL_WIDE_INT_IS_LONG and TCL_WIDE_INT_TYPE when configure doesn't - tell us them, as can happen with extensions. + TCL_WIDE_INT_IS_LONG and TCL_WIDE_INT_TYPE when configure doesn't tell + us them, as can happen with extensions. 2002-02-19 Donal K. Fellows * doc/format.n: Updated docs to list the specification. * generic/tclCmdAH.c (Tcl_FormatObjCmd): Made behaviour on 64-bit platforms correctly meet the specification, that %d works with the - native word-sized integer, instead of trying to guess (wrongly) - from the value being passed. + native word-sized integer, instead of trying to guess (wrongly) from + the value being passed. 2002-02-19 Don Porter * changes: First draft of updated changes for 8.4a4 release. -2002-02-15 Jeff Hobbs +2002-02-15 Jeff Hobbs - * unix/tclUnixPort.h: add strtoll/strtoull declarations for - platforms that do not define them. + * unix/tclUnixPort.h: add strtoll/strtoull declarations for platforms + that do not define them. - * generic/tclIndexObj.c (STRING_AT): removed ptrdiff_t cast and - use of VOID* in default case (GNU-ism). + * generic/tclIndexObj.c (STRING_AT): removed ptrdiff_t cast and use of + VOID* in default case (GNU-ism). -2002-02-15 Kevin Kenny +2002-02-15 Kevin Kenny * compat/strtoll.c: * compat/strtoul.c: @@ -9309,9 +9091,9 @@ * tclExecute.c: * tclIOGT.c: - * tclIndexObj.c: Touchups to the TIP 72 patch to make it - compileable under Windows again. The changes are not complete, - there is one nasty regarding _stati64 + * tclIndexObj.c: Touchups to the TIP 72 patch to make it compileable + under Windows again. The changes are not complete, there is one nasty + regarding _stati64 2002-02-15 Donal K. Fellows @@ -9320,9 +9102,8 @@ +----------------------+ There are a lot of changes from this TIP, so please see - http://purl.org/tcl/tip/72.html for discussion of - backward-compatability issues, but the main ones modifications are - in: + http://tip.tcl.tk/72.html for discussion of backward-compatability + issues, but the main ones modifications are in: * generic/tcl.h: New types. * generic/tcl.decls: New public functions. @@ -9338,55 +9119,53 @@ * unix/tcl.m4, unix/configure: 64-bit support and greatly enhanced cacheing. - Most other changes, including all those in doc/* and test/* as - well as the majority in the platform directories, follow on from - these. + Most other changes, including all those in doc/* and test/* as well as + the majority in the platform directories, follow on from these. Also coming out of the woodwork: * generic/tclIndex.c: Better support for Cray PVP. * win/tclWinMtherr.c: Better Borland support. - Note that, in a number of places through the Unix part of the - platform support, there are Tcl_Platform* references. These are - expanded into the correct way to call that particular underlying - function, i.e. with or without a '64' suffix, and should be used - by people working on the core in preference to the API functions - they overlay so that the code remains portable depending on the - presence or absence of 64-bit support on the underlying platform. + Note that, in a number of places through the Unix part of the platform + support, there are Tcl_Platform* references. These are expanded into + the correct way to call that particular underlying function, i.e. with + or without a '64' suffix, and should be used by people working on the + core in preference to the API functions they overlay so that the code + remains portable depending on the presence or absence of 64-bit + support on the underlying platform. ***POTENTIAL INCOMPATIBILITY***: Extracted from the TIP SUMMARY OF INCOMPATIBILITIES AND FIXES ====================================== - The behaviour of expressions containing constants that appear - positive but which have a negative internal representation will - change, as these will now usually be interpreted as wide - integers. This is always fixable by replacing the constant with - int(constant). + The behaviour of expressions containing constants that appear positive + but which have a negative internal representation will change, as + these will now usually be interpreted as wide integers. This is always + fixable by replacing the constant with int(constant). Extensions creating new channel types will need to be altered as different types are now in use in those areas. The change to the - declaration of Tcl_FSStat and Tcl_FSLstat (which are the new - preferred API in any case) are less serious as no non-alpha - releases have been made yet with those API functions. + declaration of Tcl_FSStat and Tcl_FSLstat (which are the new preferred + API in any case) are less serious as no non-alpha releases have been + made yet with those API functions. Scripts that are lax about the use of the l modifier in format and - scan will probably need to be rewritten. This should be very - uncommon though as previously it had absolutely no effect. + scan will probably need to be rewritten. This should be very uncommon + though as previously it had absolutely no effect. Extensions that create new math functions that take more than one - argument will need to be recompiled (the size of Tcl_Value - changes), and functions that accept arguments of any type - (TCL_EITHER) will need to be rewritten to handle wide integer - values. (I do not expect this to affect many extensions at all.) + argument will need to be recompiled (the size of Tcl_Value changes), + and functions that accept arguments of any type (TCL_EITHER) will need + to be rewritten to handle wide integer values. (I do not expect this + to affect many extensions at all.) 2002-02-14 Andreas Kupries - * generic/tclIOCmd.c (Tcl_GetsObjCmd): Trivial fix for bug - #517503, a memory leak reported by Miguel Sofer - . The leak happens if an error - occurs for "set var [gets $chan]" and leak one empty object. + * generic/tclIOCmd.c (Tcl_GetsObjCmd): Trivial fix for [Bug 517503], a + memory leak reported by Miguel Sofer . + The leak happens if an error occurs for "set var [gets $chan]" and + leak one empty object. 2002-02-12 David Gravereaux @@ -9397,14 +9176,13 @@ * unix/tclUnixFCmd.c: * unix/tclUnixFile.c: * unix/tclUnixInit.c: - * unix/tclUnixPort.h: Early stage of DJGPP support for building - Tcl on DOS. Dynamic loading isn't working, yet. Requires watt32 - for the TCP/IP stack. No autoconf, yet. Barely tested, but - makes a working exe that runs Tcl in protected-mode, flat memory. - [exec] and pipes will need the most work as multi-tasking on DOS - has to be carefully. + * unix/tclUnixPort.h: Early stage of DJGPP support for building Tcl + on DOS. Dynamic loading isn't working, yet. Requires watt32 for the + TCP/IP stack. No autoconf, yet. Barely tested, but makes a working exe + that runs Tcl in protected-mode, flat memory. [exec] and pipes will + need the most work as multi-tasking on DOS has to be carefully. -2002-02-10 Kevin Kenny +2002-02-10 Kevin Kenny * doc/CrtObjCmd.3: * doc/CrtTrace.3: @@ -9420,7 +9198,7 @@ * generic/tclDecls.h: * generic/tclStubInit.c: Regenerated Stubs tables. -2002-02-08 Jeff Hobbs +2002-02-08 Jeff Hobbs * unix/configure: * unix/tcl.m4: added -pthread for FreeBSD to EXTRA_CFLAGS and @@ -9461,7 +9239,7 @@ restored to return (char *): Tcl_DStringAppend, Tcl_DStringAppendElement, Tcl_JoinPath, Tcl_TranslateFileName, Tcl_ExternalToUtfDString, Tcl_UtfToExternalDString, - Tcl_UniCharToUtfDString, Tcl_GetCwd, Tcl_WinTCharToUtf. Also + Tcl_UniCharToUtfDString, Tcl_GetCwd, Tcl_WinTCharToUtf. Also restored Tcl_WinUtfToTChar to return (TCHAR *) and Tcl_UtfToUniCharDString to return (Tcl_UniChar *). Modified some callers. This change recognizes that Tcl_DStrings are @@ -9472,12 +9250,12 @@ * generic/tclCmdMZ.c: corrected use of C++-style comment. -2002-02-06 Jeff Hobbs +2002-02-06 Jeff Hobbs * tests/scan.test: - * generic/tclScan.c (Tcl_ScanObjCmd): corrected scan 0x... %x - handling that didn't accept the 0x as a prelude to a base 16 - number. [Bug #495213] + * generic/tclScan.c (Tcl_ScanObjCmd): corrected scan 0x... %x handling + that didn't accept the 0x as a prelude to a base 16 number. [Bug + 495213] * generic/tclCompCmds.c (TclCompileRegexpCmd): made early check for bad RE to stop checking further. @@ -9504,18 +9282,17 @@ 2002-02-04 Andreas Kupries - * unix/tclUnixChan.c (FileOutputProc): Fixed [bug 465765] reported - by Dale Talcott . Avoid - writing nothing into a file as STREAM based implementations will - consider this a EOF (if the file is a pipe). Not done in the - generic layer as this type of writing is actually useful to - check the state of a socket. + * unix/tclUnixChan.c (FileOutputProc): Fixed [bug 465765] reported by + Dale Talcott . Avoid writing + nothing into a file as STREAM based implementations will consider this + a EOF (if the file is a pipe). Not done in the generic layer as this + type of writing is actually useful to check the state of a socket. - * doc/open.n: Fixed [Bug 511540], added cross-reference to 'pid' - as the command to use to retrieve the pid of a command pipeline - created via 'open'. + * doc/open.n: Fixed [Bug 511540], added cross-reference to 'pid' as + the command to use to retrieve the pid of a command pipeline created + via 'open'. -2002-02-01 Jeff Hobbs +2002-02-01 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_RegexpObjCmd): handle quirky about case earlier to avoid shimmering problem. @@ -9523,40 +9300,39 @@ 2002-02-01 Andreas Kupries * tests/io.test: io-39.22 split into two tests, one platform - dependent, the other not. -eofchar is not empty on the windows - platform. + dependent, the other not. -eofchar is not empty on the windows + platform. 2002-02-01 Vince Darley - * generic/tclTest.c: fix to picky windows compiler problem - with the 'MainLoop' function declaration. + * generic/tclTest.c: fix to picky windows compiler problem with the + 'MainLoop' function declaration. 2002-01-31 Andreas Kupries * win/tclWinFCmd.c: TIP 27: Applied patch fixing CONST warnings on - behalf of Don Porter . + behalf of Don Porter . 2002-01-30 Don Porter * generic/tcl.decls: * generic/tcl.h: * generic/tclInt.h: For each interface identified in the TIP 27 - changes below as a POTENTIAL INCOMPATIBILITY, the source of the - incompatibility has been parameterized so that it can be - removed. When compiling extension code against the Tcl header - files, use the compiler flag -DUSE_NON_CONST to remove the - irresolvable source incompatibilities introduced by the TIP 27 - changes. Resolvable changes are left for extension authors to - resolve. + changes below as a POTENTIAL INCOMPATIBILITY, the source of the + incompatibility has been parameterized so that it can be removed. When + compiling extension code against the Tcl header files, use the + compiler flag -DUSE_NON_CONST to remove the irresolvable source + incompatibilities introduced by the TIP 27 changes. Resolvable changes + are left for extension authors to resolve. * generic/tclDecls.h: make genstubs 2002-01-30 Vince Darley - * doc/FileSystem.3: added documentation for 3 public - functions which had been overlooked. Fixes [Bug 507701]. + * doc/FileSystem.3: added documentation for 3 public functions which + had been overlooked. Fixes [Bug 507701] * unix/mkLinks: make mklinks -2002-01-29 Jeff Hobbs +2002-01-29 Jeff Hobbs * tests/regexpComp.test: * generic/tclCompCmds.c (TclCompileRegexpCmd): enhanced to support @@ -9565,16 +9341,14 @@ 2002-01-28 Mo DeJong * unix/tcl.m4 (SC_LOAD_TCLCONFIG): - * win/tcl.m4 (SC_LOAD_TCLCONFIG): Set TCL_LIB_SPEC, - TCL_STUB_LIB_SPEC, and TCL_STUB_LIB_PATH to the - values of TCL_BUILD_LIB_SPEC, TCL_BUILD_STUB_LIB_SPEC, - and TCL_BUILD_STUB_LIB_PATH when tclConfig.sh is loaded - from the build directory. A Tcl extension should - make use of the non-build versions of these variables - since they will work in both cases. This modification - was described in TIP 34. + * win/tcl.m4 (SC_LOAD_TCLCONFIG): Set TCL_LIB_SPEC, TCL_STUB_LIB_SPEC, + and TCL_STUB_LIB_PATH to the values of TCL_BUILD_LIB_SPEC, + TCL_BUILD_STUB_LIB_SPEC, and TCL_BUILD_STUB_LIB_PATH when tclConfig.sh + is loaded from the build directory. A Tcl extension should make use of + the non-build versions of these variables since they will work in both + cases. This modification was described in TIP #34. -2002-01-28 Jeff Hobbs +2002-01-28 Jeff Hobbs * win/tclWinReg.c (regConnectRegistryProc,RecursiveDeleteKey) (DeleteKey,GetKeyNames,GetType,GetValue,OpenSubKey,SetValue): @@ -9602,13 +9376,13 @@ * ChangeLog.2000 (new file): * ChangeLog: broke changes from 2000 into ChangeLog.2000 to reduce - size of the main ChangeLog. + size of the main ChangeLog. 2002-01-28 David Gravereaux - * generic/tclPlatDecls.h: Added preprocessor logic to force a - typedef of TCHAR when __STDC__ is defined when using the uncommon - -Za compiler switch with the microsoft compiler. + * generic/tclPlatDecls.h: Added preprocessor logic to force a typedef + of TCHAR when __STDC__ is defined when using the uncommon -Za compiler + switch with the microsoft compiler. 2002-01-27 Don Porter @@ -9628,24 +9402,23 @@ * mac/tclMacSock.c: TIP 27 CONSTification induced changes * tests/event.test: - * tests/main.test: added catches/constraints to test that - use features that don't exist on the mac. + * tests/main.test: added catches/constraints to test that use features + that don't exist on the mac. 2002-01-25 Mo DeJong - Make -eofchar and -translation options read only for - server sockets. [Bug 496733] + Make -eofchar and -translation options read only for server sockets. + [Bug 496733] * generic/tclIO.c (Tcl_GetChannelOption, Tcl_SetChannelOption): - Instead of returning nothing for the -translation option - on a server socket, always return "auto". Return the empty - string enclosed in quotes for the -eofchar option on - a server socket. Fixup -eofchar usage message so that - it matches the implementation. - * tests/io.test: Add -eofchar tests and -translation tests - to ensure options are read only on server sockets. - * tests/socket.test: Update tests to account for -eofchar - and -translation option changes. + Instead of returning nothing for the -translation option on a server + socket, always return "auto". Return the empty string enclosed in + quotes for the -eofchar option on a server socket. Fixup -eofchar + usage message so that it matches the implementation. + * tests/io.test: Add -eofchar tests and -translation tests to ensure + options are read only on server sockets. + * tests/socket.test: Update tests to account for -eofchar and + -translation option changes. 2002-01-25 Don Porter @@ -9659,21 +9432,21 @@ * generic/tclThreadTest.c (TclCreateThread): * generic/tclUtf.c (Tcl_UtfPrev): * mac/tclMacFCmd.c (TclpObjListVolumes): - * mac/tclMacResource.c (TclMacRegisterResourceFork, - BuildResourceForkList): - * win/tclWinInit.c (AppendEnvironment): Sought out and eliminated + * mac/tclMacResource.c (TclMacRegisterResourceFork) + (BuildResourceForkList): + * win/tclWinInit.c (AppendEnvironment): Sought out and eliminated instances of CONST-casting that are no longer needed after the TIP 27 effort. * Following is [Patch 501006] - * generic/tclInt.decls (Tcl_AddInterpResolvers, Tcl_Export, - Tcl_FindNamespace, Tcl_GetInterpResolvers, Tcl_ForgetImport, - Tcl_Import, Tcl_RemoveInterpResolvers): - * generic/tclNamesp.c (Tcl_Export, Tcl_Import, Tcl_ForgetImport, - Tcl_FindNamespace): + * generic/tclInt.decls (Tcl_AddInterpResolvers, Tcl_Export) + (Tcl_FindNamespace, Tcl_GetInterpResolvers, Tcl_ForgetImport) + (Tcl_Import, Tcl_RemoveInterpResolvers): + * generic/tclNamesp.c (Tcl_Export, Tcl_Import, Tcl_ForgetImport) + (Tcl_FindNamespace): * generic/tclResolve.c (Tcl_AddInterpResolvers,Tcl_GetInterpResolvers, - Tcl_RemoveInterpResolvers): Updated APIs in generic/tclResolve.c - and generic/tclNamesp.c according to the guidelines of TIP 27. + (Tcl_RemoveInterpResolvers): Updated APIs in generic/tclResolve.c and + generic/tclNamesp.c according to the guidelines of TIP 27. * generic/tclIntDecls.h: make genstubs * Following is [Patch 505630] @@ -9706,12 +9479,12 @@ * generic/tclPlatDecls.h: make genstubs * generic/tclIOUtil.c (TclpNativeToNormalized): * win/tclWinFCmd.c (TclpObjNormalizePath): - * win/tclWinFile.c (TclpFindExecutable,TclpMatchInDirectory, - NativeIsExec,NativeStat): + * win/tclWinFile.c (TclpFindExecutable,TclpMatchInDirectory) + (NativeIsExec,NativeStat): * win/tclWinLoad.c (TclpLoadFile): * win/tclWinPipe.c (TclpOpenFile,ApplicationType): - * win/tclWinReg.c (regConnectRegistryProc,RecursiveDeleteKey,DeleteKey, - GetKeyNames,GetType,GetValue,OpenSubKey,SetValue): + * win/tclWinReg.c (regConnectRegistryProc,RecursiveDeleteKey,DeleteKey) + (GetKeyNames,GetType,GetValue,OpenSubKey,SetValue): * win/tclWinSerial.c (SerialSetOptionProc): Update callers. * Following is [Patch 505072] @@ -9728,23 +9501,23 @@ * generic/tcl.h (Tcl_FSMatchInDirectoryProc): * generic/tclInt.h (TclpMatchInDirectory): * generic/tcl.decls (Tcl_Concat,Tcl_GetStringResult,Tcl_GetVar, - Tcl_GetVar2,Tcl_JoinPath,Tcl_Merge,Tcl_OpenCommandChannel,Tcl_SetVar, - Tcl_SetVar2,Tcl_SplitList,Tcl_SplitPath,Tcl_TranslateFileName, - Tcl_ExternalToUtfDString,Tcl_GetEncodingName,Tcl_UtfToExternalDString, - Tcl_GetDefaultEncodingDir,Tcl_SetDefaultEncodingDir, - Tcl_FSMatchInDirectory,Tcl_MacEvalResource,Tcl_MacFindResource): + (Tcl_GetVar2,Tcl_JoinPath,Tcl_Merge,Tcl_OpenCommandChannel,Tcl_SetVar) + (Tcl_SetVar2,Tcl_SplitList,Tcl_SplitPath,Tcl_TranslateFileName) + (Tcl_ExternalToUtfDString,Tcl_GetEncodingName,Tcl_UtfToExternalDString) + (Tcl_GetDefaultEncodingDir,Tcl_SetDefaultEncodingDir) + (Tcl_FSMatchInDirectory,Tcl_MacEvalResource,Tcl_MacFindResource): * generic/tclInt.decls (TclCreatePipeline,TclGetEnv,TclpGetCwd, - TclpCreateProcess): + (TclpCreateProcess): * mac/tclMacFile.c (TclpGetCwd): - * generic/tclEncoding.c (Tcl_GetDefaultEncodingDir, - Tcl_SetDefaultEncodingDir,Tcl_GetEncodingName, - Tcl_ExternalToUtfDString,Tcl_UtfToExternalDString, OpenEncodingFile, - LoadEscapeEncoding): + * generic/tclEncoding.c (Tcl_GetDefaultEncodingDir) + (Tcl_SetDefaultEncodingDir,Tcl_GetEncodingName) + (Tcl_ExternalToUtfDString,Tcl_UtfToExternalDString, OpenEncodingFile) + (LoadEscapeEncoding): * generic/tclFileName.c (DoTildeSubst,Tcl_JoinPath,Tcl_SplitPath, - Tcl_TranslateFileName): + (Tcl_TranslateFileName): * generic/tclIOUtil.c (Tcl_FSMatchInDirectory): - * generic/tclPipe.c (FileForRedirect,TclCreatePipeline, - Tcl_OpenCommandChannel): + * generic/tclPipe.c (FileForRedirect,TclCreatePipeline) + (Tcl_OpenCommandChannel): * generic/tclResult.c (Tcl_GetStringResult): * generic/tclUtil.c (Tcl_Concat,Tcl_SplitList,Tcl_Merge): * generic/tclVar.c (Tcl_GetVar,Tcl_GetVar2,Tcl_SetVar,Tcl_SetVar2): @@ -9765,12 +9538,12 @@ * generic/tclClock.c (FormatClock): * generic/tclCmdAH.c (Tcl_CaseObjCmd,Tcl_EncodingObjCmd,Tcl_FileObjCmd): * generic/tclCmdIL.c (InfoLibraryCmd,InfoPatchLevelCmd, - InfoTclVersionCmd): + (InfoTclVersionCmd): * generic/tclCompCmds.c (TclCompileForeachCmd): * generic/tclCompCmds.h (TclCompileForeachCmd): * generic/tclCompile.c (TclFindCompiledLocal): * generic/tclEnv.c (TclSetupEnv,TclSetEnv,Tcl_PutEnv,TclGetEnv, - EnvTraceProc): + (EnvTraceProc): * generic/tclEvent.c (Tcl_BackgroundError): * generic/tclIO.c (Tcl_BadChannelOption,Tcl_SetChannelOption): * generic/tclIOCmd.c (Tcl_ExecObjCmd,Tcl_OpenObjCmd): @@ -9781,9 +9554,9 @@ * generic/tclNamesp.c (TclTeardownNamespace): * generic/tclProc.c (TclCreateProc): * generic/tclTest.c (TestregexpObjCmd,TesttranslatefilenameCmd, - TestchmodCmd,GetTimesCmd,TestsetCmd,TestOpenFileChannelProc1, - TestOpenFileChannelProc2,TestOpenFileChannelProc3,AsyncHandlerProc, - TestpanicCmd): + (TestchmodCmd,GetTimesCmd,TestsetCmd,TestOpenFileChannelProc1, + (TestOpenFileChannelProc2,TestOpenFileChannelProc3,AsyncHandlerProc, + (TestpanicCmd): * generic/tclThreadTest.c (ThreadErrorProc,ThreadEventProc): * generic/tclUtil.c (TclPrecTraceProc): * mac/tclMacFCmd.c (GetFileSpecs): @@ -9793,93 +9566,91 @@ * mac/tclMacResource.c (Tcl_MacEvalResource): * unix/tclUnixFCmd.c (TclpObjNormalizePath): * unix/tclUnixFile.c (TclpMatchInDirectory,TclpGetUserHome,TclpGetCwd, - TclpReadLink): + (TclpReadLink): * unix/tclUnixInit.c (TclpInitLibraryPath,TclpSetVariables, - Tcl_SourceRCFile): + (Tcl_SourceRCFile): * unix/tclUnixPipe.c (TclpOpenFile,TclpCreateTempFile, - TclpCreateProcess): + (TclpCreateProcess): * win/tclWinFile.c (TclpGetCwd,TclpMatchInDirectory): * win/tclWinInit.c (TclpInitLibraryPath,Tcl_SourceRCFile, - TclpSetVariables): + (TclpSetVariables): * win/tclWinPipe.c (TclpCreateProcess): Updated callers. 2002-01-24 Don Porter * generic/tclIOUtil.c (SetFsPathFromAny): Corrected tilde-substitution - of pathnames where > 1 separator follows the ~. [Bug 504950] + of pathnames where > 1 separator follows the ~. [Bug 504950] -2002-01-24 Jeff Hobbs +2002-01-24 Jeff Hobbs * library/http/pkgIndex.tcl: * library/http/http.tcl: don't add port in default case to handle - broken servers. http bumped to 2.4.1 [Bug #504508] + broken servers. http bumped to 2.4.1 [Bug 504508] 2002-01-23 Andreas Kupries * unix/mkLinks: Regenerated. * doc/CrtChannel.3: - * doc/ChnlStack.3: Moved documentation for 'Tcl_GetTopChannel' - from 'CrtChannel' to 'ChnlStack'. Added documentation of - 'Tcl_GetStackedChannel'. Bug #506147 reported by Mark Patton - . + * doc/ChnlStack.3: Moved documentation for 'Tcl_GetTopChannel' from + 'CrtChannel' to 'ChnlStack'. Added documentation of + 'Tcl_GetStackedChannel'. [Bug 506147] reported by Mark Patton + 2002-01-23 Don Porter * win/tclWinFile.c (NativeAccess,NativeStat,NativeIsExec, - TclpGetUserHome): + (TclpGetUserHome): * win/tclWinPort.h (TclWinSerialReopen): * win/tclWinSerial.c (TclWinSerialReopen): - * win/tclWinSock.c (Tcl_OpenTcpServer): Corrections to earlier - TIP 27 changes. Thanks to Andreas Kupries for the feedback. + * win/tclWinSock.c (Tcl_OpenTcpServer): Corrections to earlier TIP + #27 changes. Thanks to Andreas Kupries for the feedback. * generic/tclPlatDecls.h: make genstubs * doc/GetHostName.3: * doc/GetOpnFl.3: * doc/OpenTcp.3: * tcl.decls (Tcl_GetHostName,Tcl_GetOpenFile,Tcl_OpenTcpClient, - Tcl_OpenTclServer): + (Tcl_OpenTclServer): * mac/tclMacSock.c (CreateSocket,Tcl_OpenTcpClient,Tcl_OpenTcpServer, - Tcl_GetHostName,GetHostFromString): + (Tcl_GetHostName,GetHostFromString): * unix/tclUnixChan.c (CreateSocket,CreateSocketAddress, - Tcl_OpenTcpClient,Tcl_OpenTcpServer,Tcl_GetOpenFile): + (Tcl_OpenTcpClient,Tcl_OpenTcpServer,Tcl_GetOpenFile): * unix/tclUnixSock.c (Tcl_GetHostName): * win/tclWinSock.c (CreateSocket,CreateSocketAddress, - Tcl_OpenTcpClient,Tcl_OpenTcpServer,Tcl_GetHostName): + (Tcl_OpenTcpClient,Tcl_OpenTcpServer,Tcl_GetHostName): Updated socket interfaces according to TIP 27. * generic/tclCmdIL.c (InfoHostnameCmd): Updated callers. * generic/tclDecls.h: make genstubs 2002-01-21 David Gravereaux - * generic/tclLoadNone.c: TclpLoadFile() didn't match proto of - typedef Tcl_FSLoadFileProc. OK'd by vincentdarley. - [Patch #502488] + * generic/tclLoadNone.c: TclpLoadFile() didn't match proto of typedef + Tcl_FSLoadFileProc. OK'd by vincentdarley. [Patch 502488] 2002-01-21 Andreas Kupries - * generic/tclIO.c (WriteChars): Fix for SF #506297, reported by - Martin Forssen . The encoding - chosen in the script exposing the bug writes out three intro - characters when TCL_ENCODING_START is set, but does not consume - any input as TCL_ENCODING_END is cleared. As some output was - generated the enclosing loop calls UtfToExternal again, again - with START set. Three more characters in the out and still no - use of input ... To break this infinite loop we remove - TCL_ENCODING_START from the set of flags after the first call - (no condition is required, the later calls remove an unset flag, - which is a no-op). This causes the subsequent calls to - UtfToExternal to consume and convert the actual input. + * generic/tclIO.c (WriteChars): Fix for [Bug 506297], reported by + Martin Forssen . The encoding chosen in + the script exposing the bug writes out three intro characters when + TCL_ENCODING_START is set, but does not consume any input as + TCL_ENCODING_END is cleared. As some output was generated the + enclosing loop calls UtfToExternal again, again with START set. Three + more characters in the out and still no use of input ... To break this + infinite loop we remove TCL_ENCODING_START from the set of flags after + the first call (no condition is required, the later calls remove an + unset flag, which is a no-op). This causes the subsequent calls to + UtfToExternal to consume and convert the actual input. 2002-01-21 Don Porter * generic/tclTest.c: Converted declarations of TestReport file system - to more portable form. [Bug 501417]. + to more portable form. [Bug 501417]. * generic/tcl.decls (Tcl_TraceCommand,Tcl_UntraceCommand, - Tcl_CommandTraceInfo): + (Tcl_CommandTraceInfo): * generic/tclCmdMZ.c (Tcl_TraceCommand,Tcl_UntraceCommand, - Tcl_CommandTraceInfo): Updated APIs in generic/tclCmdMZ.c - according to the guidelines of TIP 27. + (Tcl_CommandTraceInfo): Updated APIs in generic/tclCmdMZ.c + according to the guidelines of TIP 27. * generic/tclDecls.h: make genstubs 2002-01-18 Don Porter @@ -9898,32 +9669,29 @@ * mac/tclMacFCmd.c: * mac/tclMacFile.c: * mac/tclMacLoad.c: - * mac/tclMacResource.c: TIP 27 CONSTification broke the mac - build in a number of places. + * mac/tclMacResource.c: TIP 27 CONSTification broke the mac build in a + number of places. 2002-01-17 Andreas Kupries - * generic/tclIOCmd.c (Tcl_GetsObjCmd): Fixed bug #504642 as - reported by Brian Griffin , - using his patch. Before the patch the generic I/O layer held an - unannounced reference to the interp result to store the read - line into. This unfortunately has disastrous results if the - channel driver executes a tcl script to perform its operation, - this freeing the interp result. In that case we are - dereferencing essentially a dangling reference. It is not truly - dangling because the object is in the free list, but this only - causes us to smash the free list and have the error occur later - somewhere else. The patch simply creates a new object for the - line and later sets it into the interp result when we are done - with reading. + * generic/tclIOCmd.c (Tcl_GetsObjCmd): Fixed [Bug 504642] as reported + by Brian Griffin , using his patch. + Before the patch the generic I/O layer held an unannounced reference + to the interp result to store the read line into. This unfortunately + has disastrous results if the channel driver executes a Tcl script to + perform its operation, this freeing the interp result. In that case we + are dereferencing essentially a dangling reference. It is not truly + dangling because the object is in the free list, but this only causes + us to smash the free list and have the error occur later somewhere + else. The patch simply creates a new object for the line and later + sets it into the interp result when we are done with reading. 2002-01-16 Mo DeJong * unix/tcl.m4 (SC_LOAD_TCLCONFIG): - * win/tcl.m4 (SC_LOAD_TCLCONFIG): Subst TCL_DBGX - into TCL_STUB_LIB_FILE and TCL_STUB_LIB_FLAG - variables so that an extension does not need - to subst TCL_DBGX into its makefile. [Tk Bug 504356] + * win/tcl.m4 (SC_LOAD_TCLCONFIG): Subst TCL_DBGX into + TCL_STUB_LIB_FILE and TCL_STUB_LIB_FLAG variables so that an extension + does not need to subst TCL_DBGX into its makefile. [Tk Bug 504356] 2002-01-16 Don Porter @@ -9931,19 +9699,19 @@ * doc/GetCwd.3: * doc/GetIndex.3: * generic/tcl.decls (Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct, - Tcl_GetCwd, Tcl_FSFileAttrStrings, Tcl_FSGetNativePath, - Tcl_FSGetTranslatedStringPath): + (Tcl_GetCwd, Tcl_FSFileAttrStrings, Tcl_FSGetNativePath, + (Tcl_FSGetTranslatedStringPath): * generic/tcl.h (Tcl_FSFileAttrStringsProc): * generic/tclFCmd.c (TclFileAttrsCmd): * generic/tclIOUtil.c (Tcl_GetCwd,NativeFileAttrStrings, - Tcl_FSFileAttrStrings,Tcl_FSGetTranslatedStringPath, - Tcl_FSGetNativePath): + (Tcl_FSFileAttrStrings,Tcl_FSGetTranslatedStringPath, + (Tcl_FSGetNativePath): * generic/tclIndexObj.c (Tcl_GetIndexFromObj,Tcl_GetIndexFromObjStruct): More TIP 27 updates in tclIOUtil.c and tclIndexObj.c that were - overlooked before. [Patch 504671] + overlooked before. [Patch 504671] ***POTENTIAL INCOMPATIBILITY*** - Includes a source incompatibility in the tablePtr arguments of - the Tcl_GetIndexFromObj* routines. + Includes a source incompatibility in the tablePtr arguments of the + Tcl_GetIndexFromObj* routines. * generic/tclDecls.h: make genstubs * generic/tclBinary.c (Tcl_BinaryObjCmd): @@ -9951,20 +9719,20 @@ * generic/tclCmdAH.c (Tcl_EncodingObjCmd, Tcl_FileObjCmd): * generic/tclCmdIL.c (Tcl_InfoObjCmd,Tcl_LsearchObjCmd,Tcl_LsortObjCmd): * generic/tclCmdMZ.c (Tcl_TraceObjCmd,Tcl_RegexpObjCmd,Tcl_RegsubObjCmd, - Tcl_StringObjCmd,Tcl_SubstObjCmd,Tcl_SwitchObjCmd, - TclTraceCommandObjCmd,TclTraceVariableObjCmd): + (Tcl_StringObjCmd,Tcl_SubstObjCmd,Tcl_SwitchObjCmd, + (TclTraceCommandObjCmd,TclTraceVariableObjCmd): * generic/tclCompCmds.c (TclCompileStringCmd): * generic/tclEvent.c (Tcl_UpdateObjCmd): * generic/tclFileName.c (Tcl_GlobObjCmd): * generic/tclIO.c (Tcl_FileEventObjCmd): * generic/tclIOCmd.c (Tcl_SeekObjCmd,Tcl_ExecObjCmd,Tcl_SocketObjCmd, - Tcl_FcopyObjCmd): + (Tcl_FcopyObjCmd): * generic/tclInterp.c (Tcl_InterpObjCmd,SlaveObjCmd): * generic/tclNamesp.c (Tcl_NamespaceObjCmd): * generic/tclPkg.c (Tcl_PackageObjCmd): * generic/tclTest.c (Tcltest_Init,TestencodingObjCmd,TestgetplatformCmd, - TestlocaleCmd,TestregexpObjCmd,TestsaveresultCmd, - TestGetIndexFromObjStructObjCmd,TestReportFileAttrStrings): + (TestlocaleCmd,TestregexpObjCmd,TestsaveresultCmd, + (TestGetIndexFromObjStructObjCmd,TestReportFileAttrStrings): * generic/tclTestObj.c (TestindexObjCmd,TeststringObjCmd): * generic/tclTimer.c (Tcl_AfterObjCmd): * generic/tclVar.c (Tcl_ArrayObjCmd): @@ -9972,7 +9740,7 @@ * unix/tclUnixChan.c (TclpOpenFileChannel): * unix/tclUnixFCmd.c (tclpFileAttrStrings): * unix/tclUnixFile.c (TclpObjAccess,TclpObjChdir,TclpObjStat, - TclpObjLstat): + (TclpObjLstat): * win/tclWinFCmd.c (tclpFileAttrStrings): Updated callers. * doc/RegExp.3: @@ -9998,8 +9766,8 @@ * generic/tcl.decls (Tcl_ParseVar): * generic/tclParse.c (Tcl_ParseVar): * generic/tclTest.c (TestparsevarObjCmd): Updated APIs in - generic/tclParse.c according to the guidelines of TIP 27. Updated - callers. [Patch 501046] + generic/tclParse.c according to the guidelines of TIP 27. Updated + callers. [Patch 501046] * generic/tclDecls.h: make genstubs * generic/tcl.decls (Tcl_RecordAndEval): @@ -10010,11 +9778,11 @@ * doc/CrtSlave.3: * generic/tcl.decls (Tcl_CreateAlias, Tcl_CreateAliasObj, - Tcl_CreateSlave, Tcl_GetAlias, Tcl_GetAliasObj, Tcl_GetSlave): + (Tcl_CreateSlave, Tcl_GetAlias, Tcl_GetAliasObj, Tcl_GetSlave): * generic/tclInterp.c (Tcl_CreateAlias, Tcl_CreateAliasObj, - Tcl_CreateSlave, Tcl_GetAlias, Tcl_GetAliasObj, Tcl_GetSlave): + (Tcl_CreateSlave, Tcl_GetAlias, Tcl_GetAliasObj, Tcl_GetSlave): Updated APIs in the file generic/tclInterp.c according to the - guidelines of TIP 27. [Patch 501371] + guidelines of TIP 27. [Patch 501371] ***POTENTIAL INCOMPATIBILITY*** Includes a source incompatibility in the targetCmdPtr arguments of the Tcl_GetAlias* routines. @@ -10024,8 +9792,8 @@ 2002-01-15 Don Porter * doc/SetErrno.3 (Tcl_ErrnoMsg): Corrected documentation for - Tcl_ErrnoMsg; it takes an integer argument. Thanks to Georgios - Petasis. [Bug 468183] + Tcl_ErrnoMsg; it takes an integer argument. Thanks to Georgios + Petasis. [Bug 468183] * doc/AddErrInfo.3 (Tcl_PosixError): * doc/Eval.3 (Tcl_EvalFile): @@ -10034,26 +9802,26 @@ * doc/SetErrno.3 (Tcl_ErrnoId,Tcl_ErrnoMsg): * doc/Signal.3 (Tcl_SignalId,Tcl_SignalMsg): * generic/tcl.decls (Tcl_ErrnoId,TclErrnoMsg,Tcl_EvalFile, - Tcl_OpenFileChannel,Tcl_PosixError,Tcl_SignalId,Tcl_SignalMsg, - Tcl_FSOpenFileChannel): + (Tcl_OpenFileChannel,Tcl_PosixError,Tcl_SignalId,Tcl_SignalMsg, + (Tcl_FSOpenFileChannel): * generic/tcl.h (Tcl_FSOpenFileChannelProc): * generic/tclIO.c (FlushChannel): * generic/tclIOUtil.c (Tcl_OpenFileChannel,Tcl_EvalFile,TclGetOpenMode, - Tcl_PosixError,Tcl_FSOpenFileChannel): + (Tcl_PosixError,Tcl_FSOpenFileChannel): * generic/tclInt.decls (TclGetOpenMode): * generic/tclInt.h (TclOpenFileChannelProc_,TclGetOpenMode, - TclpOpenFileChannel): + (TclpOpenFileChannel): * generic/tclPipe.c (TclCleanupChildren): * generic/tclPosixStr.c (Tcl_ErrnoId,Tcl_ErrnoMsg,Tcl_SignalId, - Tcl_SignalMsg): + (Tcl_SignalMsg): * generic.tclTest.c (PretendTclpOpenFileChannel, - TestOpenFileChannelProc1,TestOpenFileChannelProc2, - TestOpenFileChannelProc3,TestReportOpenFileChannel): + (TestOpenFileChannelProc1,TestOpenFileChannelProc2, + (TestOpenFileChannelProc3,TestReportOpenFileChannel): * mac/tclMacChan.c (TclpOpenFileChannel): * unix/tclUnixChan.c (TclpOpenFileChannel): * win/tclWinChan.c (TclpOpenFileChannel): Updated APIs in - generic/tclIOUtil.c and generic/tclPosixStr.c according to the - guidelines of TIP 27. Updated callers. [Patch 499196] + generic/tclIOUtil.c and generic/tclPosixStr.c according to the + guidelines of TIP 27. Updated callers. [Patch 499196] * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs @@ -10063,31 +9831,31 @@ * generic/tcl.decls: * generic/tclIO.h: * generic/tclIO.c (DoWrite, Tcl_RegisterChannel, Tcl_GetChannel, - Tcl_CreateChannel, Tcl_GetChannelName, CloseChannel, Tcl_Write, - Tcl_WriteRaw, Tcl_Ungets, Tcl_BadChannelOption, Tcl_GetChannelOption, - Tcl_SetChannelOption, Tcl_GetChannelNamesEx, Tcl_ChannelName): + (Tcl_CreateChannel, Tcl_GetChannelName, CloseChannel, Tcl_Write, + (Tcl_WriteRaw, Tcl_Ungets, Tcl_BadChannelOption, Tcl_GetChannelOption, + (Tcl_SetChannelOption, Tcl_GetChannelNamesEx, Tcl_ChannelName): Updated APIs in the file generic/tclIO.c according to the guidelines - of TIP 27. Several minor documentation corrections as well. - [Patch 503565] + of TIP 27. Several minor documentation corrections as well. [Patch + 503565] * generic/tclDecls.h: make genstubs * generic/tcl.h (Tcl_DriverOutputProc, Tcl_DriverGetOptionProc, - Tcl_DriverSetOptionProc): + (Tcl_DriverSetOptionProc): * generic/tclIOGT.c (TransformOutputProc, TransformGetOptionProc, - TransformSetOptionProc): + (TransformSetOptionProc): * mac/tclMacChan.c (FileOutput, StdIOOutput): * man/tclMacSock.c (TcpGetOptionProc, TcpOutput): * unix/tclUnixChan.c (FileOutputProc, TcpGetOptionProc, TcpOutputProc, - TtyGetOptionProc, TtySetOptionProc): + (TtyGetOptionProc, TtySetOptionProc): * unix/tclUnixPipe.c (PipeOuputProc): * win/tclWinChan.c (FileOutputProc): * win/tclWinConsole.c (ConsleOutputProc): * win/tclWinPipe.c (PipeOuputProc): * win/tclWinSerial.c (SerialOutputProc, SerialGetOptionProc, - SerialSetOptionProc): + (SerialSetOptionProc): * win/tclWinSock.c (TcpGetOptionProc, TcpOutput): Updated channel - driver interface according to the guidelines of TIP 27. See also - [Bug 500348]. + driver interface according to the guidelines of TIP 27. See also [Bug + 500348]. * doc/CrtChannel.3: * generic/tcl.h: @@ -10096,7 +9864,7 @@ * generic/tclInt.h: * tools/checkLibraryDoc.tcl: Moved Tcl_EolTranslation enum declaration from generic/tcl.h to - generic/tclInt.h (renamed to TclEolTranslation). It is not used + generic/tclInt.h (renamed to TclEolTranslation). It is not used anywhere in Tcl's public interface. 2002-01-14 Don Porter @@ -10104,10 +9872,10 @@ * doc/GetIndex.3: * doc/WrongNumArgs.3: * generic/tcl.decls (Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct, - Tcl_WrongNumArgs): + (Tcl_WrongNumArgs): * generic/tclIndexObj.c (Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct, - Tcl_WrongNumArgs): Updated APIs in the file generic/tclIndexObj.c - according to the guidelines of TIP 27. [Patch 501491] + (Tcl_WrongNumArgs): Updated APIs in the file generic/tclIndexObj.c + according to the guidelines of TIP 27. [Patch 501491] * generic/tclDecls.h: make genstubs 2002-01-11 Mo DeJong @@ -10120,33 +9888,32 @@ 2002-01-11 Andreas Kupries - * win/tclWinSerial.c (SerialSetOptionProc): Applied patch for SF - bug #500348 supplied by Rolf Schroedter - . The function modified the - contents of the the 'value' string and now does not do this - anymore. This is a followup to the change made on 2001-12-17. + * win/tclWinSerial.c (SerialSetOptionProc): Applied patch for [Bug + 500348] supplied by Rolf Schroedter . The + function modified the contents of the the 'value' string and now does + not do this anymore. This is a followup to the change made on + 2001-12-17. 2002-01-11 David Gravereaux - * win/makefile.vc: Removed -GD compiler option. It was intended - for future use, but MS is again changing the future at their whim. - The D4002 warning was harmless though, but someone using VC .NET - logged it as a concern. [Bug #501565] + * win/makefile.vc: Removed -GD compiler option. It was intended for + future use, but MS is again changing the future at their whim. The + D4002 warning was harmless though, but someone using VC .NET logged it + as a concern. [Bug 501565] 2002-01-11 Mo DeJong - * unix/Makefile.in: Burn Tcl build directory - into tcltest executable to avoid crashes caused - by ld loading a previously installed version + * unix/Makefile.in: Burn Tcl build directory into tcltest executable + to avoid crashes caused by ld loading a previously installed version of the tcl shared library. [Bug 218110] 2002-01-10 Don Porter , Kevin Kenny - * unix/tclLoadDld.c (TclpLoadFile): syntax error: unbalanced - parens. Kevin notes that it's far from clear that this file is - ever included in an actual build; Linux without dlopen appears to - be a nonexistent configuration. + * unix/tclLoadDld.c (TclpLoadFile): syntax error: unbalanced parens. + Kevin notes that it's far from clear that this file is ever included + in an actual build; Linux without dlopen appears to be a nonexistent + configuration. 2002-01-08 Don Porter , Kevin Kenny @@ -10166,9 +9933,8 @@ * unix/tclLoadNext.c (TclGuessPackageName): * unix/tclLoadOSF.c (TclGuessPackageName): * unix/tclLoadShl.c (TclGuessPackageName): - * win/tclWinLoad.c (TclGuessPackageName): Updated APIs in - the files */tcl*Load*.c according to the guidelines of TIP 27. - [Patch 501096] + * win/tclWinLoad.c (TclGuessPackageName): Updated APIs in the files + */tcl*Load*.c according to the guidelines of TIP 27. [Patch 501096] 2002-01-09 Don Porter @@ -10180,7 +9946,7 @@ * generic/tclEvent.c (TclInExit): * generic/tclIOUtil.c (SetFsPathFromAbsoluteNormalized, - SetFsPathFromAny,Tcl_FSNewNativePath,DupFsPathInternalRep): + (SetFsPathFromAny,Tcl_FSNewNativePath,DupFsPathInternalRep): * generic/tclListObj.c (TclLsetList,TclLsetFlat): Added some type casts to satisfy picky compilers. @@ -10193,27 +9959,28 @@ * generic/tclMain.c: Substantial rewrite and expanded documentation of Tcl_Main to correct a number of bugs and flaws: - * Interactive Tcl_Main can now enter a main loop, exit - that loop and continue interactive operations. The loop - may even exit in the midst of interactive command typing - without loss of the partial command. [Bugs 486453, 474131] + * Interactive Tcl_Main can now enter a main loop, exit that + loop and continue interactive operations. The loop may even + exit in the midst of interactive command typing without loss + of the partial command. [Bugs 486453, 474131] * Tcl_Main now gracefully handles deletion of its master interpreter. * Interactive Tcl_Main can now operate with non-blocking stdin * Interactive Tcl_Main can now detect EOF on stdin even in mid-command. [Bug 491341] - * Added VFS-aware internal routines for managing the - startup script selection. + * Added VFS-aware internal routines for managing the startup + script selection. * Tcl variable 'tcl_interactive' is now linked to C variable - 'tty' so that one can disable/enable interactive prompts - at the script level when there is no startup script. This - is meant for use by the test suite. + 'tty' so that one can disable/enable interactive prompts at + the script level when there is no startup script. This is + meant for use by the test suite. * Consistent use of the Tcl libraries standard channels as returned by Tcl_GetStdChannel(); as opposed to the channels named 'stdin', 'stdout', and 'stderr' in the master interp, which can be different or unavailable. * Tcl_Main now calls Tcl_Exit() if evaluation of [exit] in the - master interpreter returns, assuring Tcl_Main does not return. + master interpreter returns, assuring Tcl_Main does not + return. * Documented Tcl_Main's absence from public stub table * Documented that Tcl_Main does not return. * Documented Tcl variables set by Tcl_Main. @@ -10221,16 +9988,16 @@ * Use of Tcl_Obj-enabled interfaces everywhere. * generic/tclInt.decls (TclGetStartupScriptPath, - TclSetStartupScriptPath): New internal VFS-aware routines for + (TclSetStartupScriptPath): New internal VFS-aware routines for managing the startup script of Tcl_Main. * generic/tclIntDecls.h: * generic/tclStubInit.c: make genstubs * generic/tclTest.c (TestsetmainloopCmd,TestexitmainloopCmd, - Tcltest_Init,TestinterpdeleteCmd): - * tests/main.test (new): Added new file to test suite that - thoroughly tests generic/tclMain.c; added some new test commands - for testing Tcl_SetMainLoop(). + (Tcltest_Init,TestinterpdeleteCmd): + * tests/main.test (new): Added new file to test suite that thoroughly + tests generic/tclMain.c; added some new test commands for testing + Tcl_SetMainLoop(). 2002-01-04 Don Porter @@ -10247,8 +10014,8 @@ * doc/SplitList.3: * doc/SplitPath.3: * doc/TCL_MEM_DEBUG.3: Updated documentation to describe the ckalloc, - ckfree, ckrealloc, attemptckalloc, and attemptckrealloc macros, and - to accurately describe when and how they are used. [Bug 497459] + ckfree, ckrealloc, attemptckalloc, and attemptckrealloc macros, and to + accurately describe when and how they are used. [Bug 497459] * generic/tclThreadJoin.c (TclRememberJoinableThread,TclJoinThread): Replaced Tcl_Alloc and Tcl_Free calls with ckalloc and ckfree so that @@ -10256,40 +10023,41 @@ 2002-01-04 Daniel Steffen - * mac/tclMacTime.c (TclpGetTZName): fix for daylight savings TZName bug + * mac/tclMacTime.c (TclpGetTZName): fix for daylight savings TZName + bug 2002-01-03 Don Porter * doc/FileSystem.3: - * generic/tclIOUtil.c: Updated some old uses of "fileName" to - new VFS terminology, "pathPtr". + * generic/tclIOUtil.c: Updated some old uses of "fileName" to new VFS + terminology, "pathPtr". 2002-01-03 Donal K. Fellows - * tests/basic.test (basic-39.4): Greatly simplified test while - still leaving it so that it crashes when run without the fix to - the [foreach] implementation. - * generic/tclCmdAH.c (Tcl_ForeachObjCmd): Stopped Bug #494348 from + * tests/basic.test (basic-39.4): Greatly simplified test while still + leaving it so that it crashes when run without the fix to the + [foreach] implementation. + * generic/tclCmdAH.c (Tcl_ForeachObjCmd): Stopped [Bug 494348] from happening by not trying to be so clever with cacheing; if nothing - untoward is happening anyway, the less efficient technique will - only add a few instruction cycles (one function call and a few - derefs/assigns per list per iteration, with no change in the - number of tests) and if something odd *is* going on, the code is - now far more robust. + untoward is happening anyway, the less efficient technique will only + add a few instruction cycles (one function call and a few + derefs/assigns per list per iteration, with no change in the number of + tests) and if something odd *is* going on, the code is now far more + robust. - * tests/basic.test (basic-39.4): Reproducable script from Bug #494348 + * tests/basic.test (basic-39.4): Reproducable script from [Bug 494348] 2002-01-02 Donal K. Fellows - * tests/util.test (Wrapper_Tcl_StringMatch,util-5.*): Rewrote so - the test is performed with the right internal function since - [string match] no longer uses Tcl_StringCaseMatch internally. + * tests/util.test (Wrapper_Tcl_StringMatch,util-5.*): Rewrote so the + test is performed with the right internal function since [string + match] no longer uses Tcl_StringCaseMatch internally. * tests/string.test (string-11.51): * generic/tclUtf.c (Tcl_UniCharCaseMatch): * generic/tclUtil.c (Tcl_StringCaseMatch): Fault with matching - case-insensitive non-ASCII patterns containing upper case - characters. [Bug #233257] + case-insensitive non-ASCII patterns containing upper case characters. + [Bug 233257] ****************************************************************** *** CHANGELOG ENTRIES FOR 2001 IN "ChangeLog.2001" *** diff --git a/doc/string.n b/doc/string.n index 92925a0..91e810e 100644 --- a/doc/string.n +++ b/doc/string.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: string.n,v 1.17.2.3 2004/10/27 14:23:58 dkf Exp $ +'\" RCS: @(#) $Id: string.n,v 1.17.2.4 2006/12/14 14:24:22 dkf Exp $ '\" .so man.macros .TH string n 8.1 Tcl "Tcl Built-In Commands" @@ -319,7 +319,7 @@ set length [\fBstring length\fR $string] if {$length == 0} { set isPrefix 0 } else { - set isPrefix [\fBstring equal\fR -length $string $string "foobar"] + set isPrefix [\fBstring equal\fR -length $length $string "foobar"] } .CE -- cgit v0.12 From 5f6537a4a1f5b4f480c7027c93dd6de023a54730 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 19 Dec 2006 01:19:46 +0000 Subject: * unix/tcl.m4 (Darwin): --enable-64bit: verify linking with 64bit -arch flag succeeds before enabling 64bit build. * unix/configure: autoconf-2.13 --- ChangeLog | 6 + unix/configure | 702 +++++++++++++++++++++++++++++++-------------------------- unix/tcl.m4 | 28 ++- 3 files changed, 412 insertions(+), 324 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0716c36..12abf53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-12-19 Daniel Steffen + + * unix/tcl.m4 (Darwin): --enable-64bit: verify linking with 64bit -arch + flag succeeds before enabling 64bit build. + * unix/configure: autoconf-2.13 + 2006-12-14 Donal K. Fellows * doc/string.n: Fix example. [Bug 1615277] diff --git a/unix/configure b/unix/configure index cdd213a..30bb63f 100755 --- a/unix/configure +++ b/unix/configure @@ -3448,15 +3448,79 @@ echo "$ac_t""$tcl_cv_ld_elf" 1>&6 CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" if test $do64bit = yes; then - do64bit_ok=yes case `arch` in ppc) - CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5";; + echo $ac_n "checking if compiler accepts -arch ppc64 flag""... $ac_c" 1>&6 +echo "configure:3455: checking if compiler accepts -arch ppc64 flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_cc_arch_ppc64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_cflags=$CFLAGS + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_cc_arch_ppc64=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_cc_arch_ppc64=no +fi +rm -f conftest* + CFLAGS=$hold_cflags +fi + +echo "$ac_t""$tcl_cv_cc_arch_ppc64" 1>&6 + if test $tcl_cv_cc_arch_ppc64 = yes; then + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + do64bit_ok=yes + fi;; i386) - CFLAGS="$CFLAGS -arch x86_64";; + echo $ac_n "checking if compiler accepts -arch x86_64 flag""... $ac_c" 1>&6 +echo "configure:3490: checking if compiler accepts -arch x86_64 flag" >&5 +if eval "test \"`echo '$''{'tcl_cv_cc_arch_x86_64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_cflags=$CFLAGS + CFLAGS="$CFLAGS -arch x86_64" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + tcl_cv_cc_arch_x86_64=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_cc_arch_x86_64=no +fi +rm -f conftest* + CFLAGS=$hold_cflags +fi + +echo "$ac_t""$tcl_cv_cc_arch_x86_64" 1>&6 + if test $tcl_cv_cc_arch_x86_64 = yes; then + CFLAGS="$CFLAGS -arch x86_64" + do64bit_ok=yes + fi;; *) - echo "configure: warning: Don't know how enable 64-bit on architecture `arch`" 1>&2 - do64bit_ok=no;; + echo "configure: warning: Don't know how enable 64-bit on architecture `arch`" 1>&2;; esac else # Check for combined 32-bit and 64-bit fat build @@ -3466,7 +3530,7 @@ echo "$ac_t""$tcl_cv_ld_elf" 1>&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3470: checking if ld accepts -single_module flag" >&5 +echo "configure:3534: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3474,14 +3538,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3508,7 +3572,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3512: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3576: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3516,14 +3580,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3546,7 +3610,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3550: checking whether to use CoreFoundation" >&5 +echo "configure:3614: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3558,7 +3622,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3562: checking for CoreFoundation.framework" >&5 +echo "configure:3626: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3572,14 +3636,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3604,7 +3668,7 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3608: checking for 64-bit CoreFoundation" >&5 +echo "configure:3672: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3612,14 +3676,14 @@ else hold_cflags=$CFLAGS CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -3932,7 +3996,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:3936: checking for ld accepts -Bexport flag" >&5 +echo "configure:4000: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3940,14 +4004,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -3994,13 +4058,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:3998: checking sys/exec.h" >&5 +echo "configure:4062: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4018,7 +4082,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4038,13 +4102,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4042: checking a.out.h" >&5 +echo "configure:4106: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4062,7 +4126,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4066: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4130: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4082,13 +4146,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4086: checking sys/exec_aout.h" >&5 +echo "configure:4150: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4106,7 +4170,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4110: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4174: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4259,7 +4323,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4263: checking for build with symbols" >&5 +echo "configure:4327: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4320,21 +4384,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4324: checking for required early compiler flags" >&5 +echo "configure:4388: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4342,7 +4406,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4350,7 +4414,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4354: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4377,14 +4441,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4392,7 +4456,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4400,7 +4464,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4404: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4427,14 +4491,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4502: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4442,7 +4506,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4450,7 +4514,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4481,7 +4545,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4485: checking for 64-bit integer type" >&5 +echo "configure:4549: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4489,14 +4553,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4564: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4510,7 +4574,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4587: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4544,13 +4608,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4548: checking for struct dirent64" >&5 +echo "configure:4612: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4558,7 +4622,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4579,13 +4643,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4583: checking for struct stat64" >&5 +echo "configure:4647: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4593,7 +4657,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4661: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4616,12 +4680,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4620: checking for $ac_func" >&5 +echo "configure:4684: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4669,13 +4733,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4673: checking for off64_t" >&5 +echo "configure:4737: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4683,7 +4747,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4687: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4751: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4715,14 +4779,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4719: checking whether byte ordering is bigendian" >&5 +echo "configure:4783: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4733,11 +4797,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4748,7 +4812,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4752: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4768,7 +4832,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4814,12 +4878,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4818: checking for $ac_func" >&5 +echo "configure:4882: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4876,12 +4940,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4880: checking for $ac_func" >&5 +echo "configure:4944: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4931,12 +4995,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4935: checking for strerror" >&5 +echo "configure:4999: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -4983,12 +5047,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:4987: checking for getwd" >&5 +echo "configure:5051: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5035,12 +5099,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5039: checking for wait3" >&5 +echo "configure:5103: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5087,12 +5151,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5091: checking for uname" >&5 +echo "configure:5155: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5146,12 +5210,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5150: checking for realpath" >&5 +echo "configure:5214: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5204,12 +5268,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5208: checking for getpwuid_r" >&5 +echo "configure:5272: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5248,13 +5312,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5252: checking for getpwuid_r with 5 args" >&5 +echo "configure:5316: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5271,7 +5335,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5275: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5292,13 +5356,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5296: checking for getpwuid_r with 4 args" >&5 +echo "configure:5360: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5315,7 +5379,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5348,12 +5412,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5352: checking for getpwnam_r" >&5 +echo "configure:5416: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5392,13 +5456,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5396: checking for getpwnam_r with 5 args" >&5 +echo "configure:5460: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5415,7 +5479,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5419: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5436,13 +5500,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5440: checking for getpwnam_r with 4 args" >&5 +echo "configure:5504: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5459,7 +5523,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5463: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5492,12 +5556,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5496: checking for getgrgid_r" >&5 +echo "configure:5560: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5536,13 +5600,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5540: checking for getgrgid_r with 5 args" >&5 +echo "configure:5604: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5559,7 +5623,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5627: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5580,13 +5644,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5584: checking for getgrgid_r with 4 args" >&5 +echo "configure:5648: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5603,7 +5667,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5636,12 +5700,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5640: checking for getgrnam_r" >&5 +echo "configure:5704: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5680,13 +5744,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5684: checking for getgrnam_r with 5 args" >&5 +echo "configure:5748: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5703,7 +5767,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5724,13 +5788,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5728: checking for getgrnam_r with 4 args" >&5 +echo "configure:5792: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5747,7 +5811,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5751: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5807,12 +5871,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5811: checking for gethostbyname_r" >&5 +echo "configure:5875: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5851,13 +5915,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5855: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5919: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5874,7 +5938,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5878: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5895,13 +5959,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5899: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5963: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5918,7 +5982,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -5939,13 +6003,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:5943: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6007: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5960,7 +6024,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -5994,12 +6058,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:5998: checking for gethostbyaddr_r" >&5 +echo "configure:6062: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6038,13 +6102,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6042: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6106: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6064,7 +6128,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6085,13 +6149,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6089: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6153: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6111,7 +6175,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6157,17 +6221,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6161: checking for $ac_hdr" >&5 +echo "configure:6225: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6194,7 +6258,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6198: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6262: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6203,7 +6267,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6218,7 +6282,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6235,7 +6299,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6249,7 +6313,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6267,7 +6331,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6282,7 +6346,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6300,7 +6364,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6317,7 +6381,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6335,7 +6399,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6351,7 +6415,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6369,7 +6433,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6386,7 +6450,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6429,20 +6493,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6433: checking for fd_set in sys/types" >&5 +echo "configure:6497: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6446: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6510: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6458,13 +6522,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6462: checking for fd_mask in sys/select" >&5 +echo "configure:6526: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6501,12 +6565,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6505: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6569: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6514,7 +6578,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6539,17 +6603,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6543: checking for $ac_hdr" >&5 +echo "configure:6607: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6576,12 +6640,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6580: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6644: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6590,7 +6654,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6658: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6611,12 +6675,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6615: checking for tm_zone in struct tm" >&5 +echo "configure:6679: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6624,7 +6688,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6628: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6692: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6644,12 +6708,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6648: checking for tzname" >&5 +echo "configure:6712: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6659,7 +6723,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6684,12 +6748,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6688: checking for $ac_func" >&5 +echo "configure:6752: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6738,20 +6802,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6742: checking tm_tzadj in struct tm" >&5 +echo "configure:6806: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6755: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6819: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6772,20 +6836,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6776: checking tm_gmtoff in struct tm" >&5 +echo "configure:6840: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6810,13 +6874,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6814: checking long timezone variable" >&5 +echo "configure:6878: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6825,7 +6889,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6848,13 +6912,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6852: checking time_t timezone variable" >&5 +echo "configure:6916: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6863,7 +6927,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6931: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6890,12 +6954,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6894: checking for st_blksize in struct stat" >&5 +echo "configure:6958: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6903,7 +6967,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6907: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6971: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6924,12 +6988,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6928: checking for fstatfs" >&5 +echo "configure:6992: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -6981,7 +7045,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:6985: checking for 8-bit clean memcmp" >&5 +echo "configure:7049: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6989,7 +7053,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7023,12 +7087,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7027: checking for memmove" >&5 +echo "configure:7091: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7084,7 +7148,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7088: checking proper strstr implementation" >&5 +echo "configure:7152: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7093,7 +7157,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7129,12 +7193,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7133: checking for strtoul" >&5 +echo "configure:7197: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7179,7 +7243,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7183: checking proper strtoul implementation" >&5 +echo "configure:7247: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7188,7 +7252,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7233,12 +7297,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7237: checking for strtod" >&5 +echo "configure:7301: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7283,7 +7347,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7287: checking proper strtod implementation" >&5 +echo "configure:7351: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7292,7 +7356,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7340,12 +7404,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7344: checking for strtod" >&5 +echo "configure:7408: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7390,7 +7454,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7394: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7458: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7399,7 +7463,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7453,12 +7517,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7457: checking for ANSI C header files" >&5 +echo "configure:7521: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7466,7 +7530,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7483,7 +7547,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7501,7 +7565,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7522,7 +7586,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7533,7 +7597,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7557,12 +7621,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7561: checking for mode_t" >&5 +echo "configure:7625: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7590,12 +7654,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7594: checking for pid_t" >&5 +echo "configure:7658: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7623,12 +7687,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7627: checking for size_t" >&5 +echo "configure:7691: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7656,12 +7720,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7660: checking for uid_t in sys/types.h" >&5 +echo "configure:7724: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7691,13 +7755,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7695: checking for socklen_t" >&5 +echo "configure:7759: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7736,12 +7800,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7740: checking for opendir" >&5 +echo "configure:7804: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7797,13 +7861,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7801: checking union wait" >&5 +echo "configure:7865: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7815,7 +7879,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7842,12 +7906,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7846: checking for strncasecmp" >&5 +echo "configure:7910: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7892,7 +7956,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7896: checking for strncasecmp in -lsocket" >&5 +echo "configure:7960: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7900,7 +7964,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7935,7 +7999,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:7939: checking for strncasecmp in -linet" >&5 +echo "configure:8003: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7943,7 +8007,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7992,12 +8056,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:7996: checking for BSDgettimeofday" >&5 +echo "configure:8060: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8042,12 +8106,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8046: checking for gettimeofday" >&5 +echo "configure:8110: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8097,13 +8161,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8101: checking for gettimeofday declaration" >&5 +echo "configure:8165: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8134,14 +8198,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8138: checking whether char is unsigned" >&5 +echo "configure:8202: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8197,13 +8261,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8201: checking signed char declarations" >&5 +echo "configure:8265: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8281: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8238,7 +8302,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8242: checking for a putenv() that copies the buffer" >&5 +echo "configure:8306: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8247,7 +8311,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8269,7 +8333,7 @@ else } EOF -if { (eval echo configure:8273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8309,17 +8373,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8313: checking for langinfo.h" >&5 +echo "configure:8377: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8387: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8343,21 +8407,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8347: checking whether to use nl_langinfo" >&5 +echo "configure:8411: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8361: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8390,17 +8454,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8394: checking for $ac_hdr" >&5 +echo "configure:8458: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8468: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8429,12 +8493,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8433: checking for $ac_func" >&5 +echo "configure:8497: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8486,17 +8550,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8490: checking for $ac_hdr" >&5 +echo "configure:8554: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8564: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8525,12 +8589,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8529: checking for $ac_func" >&5 +echo "configure:8593: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8580,12 +8644,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8584: checking for $ac_func" >&5 +echo "configure:8648: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8649,17 +8713,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8653: checking for $ac_hdr" >&5 +echo "configure:8717: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8727: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8687,14 +8751,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8691: checking if weak import is available" >&5 +echo "configure:8755: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8738,13 +8802,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8742: checking for fts" >&5 +echo "configure:8806: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8759,7 +8823,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8791,17 +8855,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8795: checking for $ac_hdr" >&5 +echo "configure:8859: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8805: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8869: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8831,17 +8895,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8835: checking for $ac_hdr" >&5 +echo "configure:8899: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8845: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8909: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8869,7 +8933,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8873: checking system version" >&5 +echo "configure:8937: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8900,7 +8964,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8904: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8968: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -8963,7 +9027,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:8967: checking how to package libraries" >&5 +echo "configure:9031: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index f3d9f1b..13f533a 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1560,15 +1560,33 @@ dnl AC_CHECK_TOOL(AR, ar) CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" if test $do64bit = yes; then - do64bit_ok=yes case `arch` in ppc) - CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5";; + AC_CACHE_CHECK([if compiler accepts -arch ppc64 flag], + tcl_cv_cc_arch_ppc64, [ + hold_cflags=$CFLAGS + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + AC_TRY_LINK(,, tcl_cv_cc_arch_ppc64=yes, + tcl_cv_cc_arch_ppc64=no) + CFLAGS=$hold_cflags]) + if test $tcl_cv_cc_arch_ppc64 = yes; then + CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" + do64bit_ok=yes + fi;; i386) - CFLAGS="$CFLAGS -arch x86_64";; + AC_CACHE_CHECK([if compiler accepts -arch x86_64 flag], + tcl_cv_cc_arch_x86_64, [ + hold_cflags=$CFLAGS + CFLAGS="$CFLAGS -arch x86_64" + AC_TRY_LINK(,, tcl_cv_cc_arch_x86_64=yes, + tcl_cv_cc_arch_x86_64=no) + CFLAGS=$hold_cflags]) + if test $tcl_cv_cc_arch_x86_64 = yes; then + CFLAGS="$CFLAGS -arch x86_64" + do64bit_ok=yes + fi;; *) - AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]) - do64bit_ok=no;; + AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]);; esac else # Check for combined 32-bit and 64-bit fat build -- cgit v0.12 From be7ae19a2c320ef01320656e02ddd1ae8c218830 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 19 Dec 2006 04:14:10 +0000 Subject: * unix/tclUnixThrd.c (TclpInetNtoa): fix for 64 bit. --- ChangeLog | 2 ++ unix/tclUnixThrd.c | 8 ++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 12abf53..222fa3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2006-12-19 Daniel Steffen + * unix/tclUnixThrd.c (TclpInetNtoa): fix for 64 bit. + * unix/tcl.m4 (Darwin): --enable-64bit: verify linking with 64bit -arch flag succeeds before enabling 64bit build. * unix/configure: autoconf-2.13 diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 30b1fc6..073e44c 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -832,13 +832,9 @@ TclpInetNtoa(struct in_addr addr) { #ifdef TCL_THREADS ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - union { - unsigned long l; - unsigned char b[4]; - } u; + char *b = (char*) &addr.s_addr; - u.l = (unsigned long) addr.s_addr; - sprintf(tsdPtr->nabuf, "%u.%u.%u.%u", u.b[0], u.b[1], u.b[2], u.b[3]); + sprintf(tsdPtr->nabuf, "%u.%u.%u.%u", b[0], b[1], b[2], b[3]); return tsdPtr->nabuf; #else return inet_ntoa(addr); -- cgit v0.12 From 46de14e2d17b49378a6d8319a786f520aa14e6d4 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 19 Dec 2006 04:34:02 +0000 Subject: * unix/tclUnixThrd.c (TclpInetNtoa): fix for 64 bit. --- unix/tclUnixThrd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 073e44c..aecfcbe 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -20,7 +20,7 @@ #include "pthread.h" typedef struct ThreadSpecificData { - char nabuf[16]; + char nabuf[17]; } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; @@ -832,8 +832,8 @@ TclpInetNtoa(struct in_addr addr) { #ifdef TCL_THREADS ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - char *b = (char*) &addr.s_addr; - + unsigned char *b = (unsigned char*) &addr.s_addr; + sprintf(tsdPtr->nabuf, "%u.%u.%u.%u", b[0], b[1], b[2], b[3]); return tsdPtr->nabuf; #else -- cgit v0.12 From 021ed85823b1ff89bf759905a46d700de9744b6b Mon Sep 17 00:00:00 2001 From: das Date: Tue, 19 Dec 2006 04:35:19 +0000 Subject: * unix/tclUnixThrd.c (TclpInetNtoa): fix for 64 bit. --- unix/tclUnixThrd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index aecfcbe..b95e8f7 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -20,7 +20,7 @@ #include "pthread.h" typedef struct ThreadSpecificData { - char nabuf[17]; + char nabuf[16]; } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; -- cgit v0.12 From 690f5c8195ae88f99ecac399e39ab6f2b3c0465b Mon Sep 17 00:00:00 2001 From: das Date: Fri, 19 Jan 2007 01:05:49 +0000 Subject: * macosx/tclMacOSXNotify.c: accommodate changes to prototypes of OSSpinLock(Un)Lock API. * tests/env.test: add extra system env vars that need to be preserved on some Mac OS X versions for testsuite to work. * unix/tcl.m4: ensure CPPFLAGS env var is used when set. [Bug 1586861] (Darwin): add -isysroot and -mmacosx-version-min flags to CPPFLAGS when present in CFLAGS to avoid discrepancies between what headers configure sees during preprocessing tests and compiling tests. * unix/configure: autoconf-2.13 --- ChangeLog | 15 + macosx/tclMacOSXNotify.c | 20 +- tests/env.test | 21 +- unix/configure | 705 ++++++++++++++++++++++++----------------------- unix/tcl.m4 | 7 + 5 files changed, 406 insertions(+), 362 deletions(-) diff --git a/ChangeLog b/ChangeLog index 222fa3a..2ec53a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2006-01-19 Daniel Steffen + + * macosx/tclMacOSXNotify.c: accommodate changes to prototypes of + OSSpinLock(Un)Lock API. + + * tests/env.test: add extra system env vars that need to be preserved + on some Mac OS X versions for testsuite to work. + + * unix/tcl.m4: ensure CPPFLAGS env var is used when set. [Bug 1586861] + (Darwin): add -isysroot and -mmacosx-version-min flags to CPPFLAGS when + present in CFLAGS to avoid discrepancies between what headers configure + sees during preprocessing tests and compiling tests. + + * unix/configure: autoconf-2.13 + 2006-12-19 Daniel Steffen * unix/tclUnixThrd.c (TclpInetNtoa): fix for 64 bit. diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index e8da55b..3c89d20 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.9 2006/08/21 03:50:53 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.10 2007/01/19 01:05:50 das Exp $ */ #include "tclInt.h" @@ -169,12 +169,18 @@ static int receivePipe = -1; /* Output end of triggerPipe */ * Support for weakly importing spinlock API. */ #define WEAK_IMPORT_SPINLOCKLOCK -extern void OSSpinLockLock(OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; -extern void OSSpinLockUnlock(OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; -extern void _spin_lock(OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; -extern void _spin_unlock(OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; -static void (* lockLock)(OSSpinLock *lock) = NULL; -static void (* lockUnlock)(OSSpinLock *lock) = NULL; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 +#define VOLATILE volatile +#else +#define VOLATILE +#endif +extern void OSSpinLockLock(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +extern void OSSpinLockUnlock(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +extern void _spin_lock(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +extern void _spin_unlock(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +static void (* lockLock)(VOLATILE OSSpinLock *lock) = NULL; +static void (* lockUnlock)(VOLATILE OSSpinLock *lock) = NULL; +#undef VOLATILE static pthread_once_t spinLockLockInitControl = PTHREAD_ONCE_INIT; static void SpinLockLockInit(void) { lockLock = OSSpinLockLock != NULL ? OSSpinLockLock : _spin_lock; diff --git a/tests/env.test b/tests/env.test index 7653b05..3afa439 100644 --- a/tests/env.test +++ b/tests/env.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: env.test,v 1.17.2.4 2006/06/14 15:21:14 patthoyts Exp $ +# RCS: @(#) $Id: env.test,v 1.17.2.5 2007/01/19 01:05:50 das Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -75,7 +75,12 @@ set printenvScript [makeFile { lrem names ComSpec lrem names "" } - foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH PURE_PROG_NAME DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH __CF_USER_TEXT_ENCODING SYSTEMDRIVE SYSTEMROOT} { + foreach name { + TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH PURE_PROG_NAME DISPLAY + SHLIB_PATH SYSTEMDRIVE SYSTEMROOT DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH + DYLD_NEW_LOCAL_SHARED_REGIONS DYLD_NO_FIX_PREBINDING + __CF_USER_TEXT_ENCODING SECURITYSESSIONID + } { lrem names $name } foreach p $names { @@ -105,10 +110,14 @@ foreach name [array names env] { # Added the following lines so that child tcltest can actually find its # library if the initial tcltest is run from a non-standard place. # ('saved' env vars) -foreach name {TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH DISPLAY SHLIB_PATH DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH SYSTEMDRIVE SYSTEMROOT} { - if {[info exists env2($name)]} { - set env($name) $env2($name); - } +foreach name { + TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH DISPLAY SHLIB_PATH + SYSTEMDRIVE SYSTEMROOT DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH + DYLD_NEW_LOCAL_SHARED_REGIONS DYLD_NO_FIX_PREBINDING + SECURITYSESSIONID} { + if {[info exists env2($name)]} { + set env($name) $env2($name); + } } test env-2.1 {adding environment variables} {exec} { diff --git a/unix/configure b/unix/configure index 30bb63f..9944e85 100755 --- a/unix/configure +++ b/unix/configure @@ -2564,6 +2564,7 @@ fi TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' ECHO_VERSION='`echo ${VERSION}`' TCL_LIB_VERSIONS_OK=ok + CFLAGS="${CPPFLAGS} ${CFLAGS}" CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O if test "$GCC" = "yes" ; then @@ -2577,7 +2578,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2581: checking for $ac_word" >&5 +echo "configure:2582: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2692,7 +2693,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2696: checking for gettimeofday in -lbsd" >&5 +echo "configure:2697: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2700,7 +2701,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2754,7 +2755,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2758: checking for inet_ntoa in -lbind" >&5 +echo "configure:2759: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2762,7 +2763,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2839,7 +2840,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2843: checking for shl_load in -ldld" >&5 +echo "configure:2844: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2847,7 +2848,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2926,7 +2927,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2930: checking for shl_load in -ldld" >&5 +echo "configure:2931: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2934,7 +2935,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3069,17 +3070,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3073: checking for dld.h" >&5 +echo "configure:3074: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3084: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3111,7 +3112,7 @@ fi fi if test $do64bit = yes; then echo $ac_n "checking if compiler accepts -m64 flag""... $ac_c" 1>&6 -echo "configure:3115: checking if compiler accepts -m64 flag" >&5 +echo "configure:3116: checking if compiler accepts -m64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_m64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3119,14 +3120,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -m64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_m64=yes else @@ -3179,17 +3180,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3183: checking for dld.h" >&5 +echo "configure:3184: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3194: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3257,17 +3258,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3261: checking for dlfcn.h" >&5 +echo "configure:3262: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3294,13 +3295,13 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3298: checking for ELF" >&5 +echo "configure:3299: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:3383: checking for ELF" >&5 +echo "configure:3384: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 Darwin-*) CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" + # To avoid discrepancies between what headers configure sees during + # preprocessing tests and compiling tests, add any -isysroot and + # -mmacosx-version-min flags present in CFLAGS to CPPFLAGS: + CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \ + awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=1;i<=NF;i++) \ + if ($i~/^(isysroot|mmacosx-version-min)/) print "-"$i}'`" if test $do64bit = yes; then case `arch` in ppc) echo $ac_n "checking if compiler accepts -arch ppc64 flag""... $ac_c" 1>&6 -echo "configure:3455: checking if compiler accepts -arch ppc64 flag" >&5 +echo "configure:3462: checking if compiler accepts -arch ppc64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_ppc64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3459,14 +3466,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_ppc64=yes else @@ -3486,7 +3493,7 @@ echo "$ac_t""$tcl_cv_cc_arch_ppc64" 1>&6 fi;; i386) echo $ac_n "checking if compiler accepts -arch x86_64 flag""... $ac_c" 1>&6 -echo "configure:3490: checking if compiler accepts -arch x86_64 flag" >&5 +echo "configure:3497: checking if compiler accepts -arch x86_64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_x86_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3494,14 +3501,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch x86_64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_x86_64=yes else @@ -3530,7 +3537,7 @@ echo "$ac_t""$tcl_cv_cc_arch_x86_64" 1>&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3534: checking if ld accepts -single_module flag" >&5 +echo "configure:3541: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3538,14 +3545,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3572,7 +3579,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3576: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3583: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3580,14 +3587,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3610,7 +3617,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3614: checking whether to use CoreFoundation" >&5 +echo "configure:3621: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3622,7 +3629,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3626: checking for CoreFoundation.framework" >&5 +echo "configure:3633: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3636,14 +3643,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3668,7 +3675,7 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3672: checking for 64-bit CoreFoundation" >&5 +echo "configure:3679: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3676,14 +3683,14 @@ else hold_cflags=$CFLAGS CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -3996,7 +4003,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4000: checking for ld accepts -Bexport flag" >&5 +echo "configure:4007: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4004,14 +4011,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4058,13 +4065,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4062: checking sys/exec.h" >&5 +echo "configure:4069: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4082,7 +4089,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4102,13 +4109,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4106: checking a.out.h" >&5 +echo "configure:4113: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4126,7 +4133,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4130: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4146,13 +4153,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4150: checking sys/exec_aout.h" >&5 +echo "configure:4157: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4170,7 +4177,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4174: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4181: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4323,7 +4330,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4327: checking for build with symbols" >&5 +echo "configure:4334: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4384,21 +4391,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4388: checking for required early compiler flags" >&5 +echo "configure:4395: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4406,7 +4413,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4414,7 +4421,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4441,14 +4448,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4456,7 +4463,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4464,7 +4471,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4491,14 +4498,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4502: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4509: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4506,7 +4513,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4514,7 +4521,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4525: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4545,7 +4552,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4549: checking for 64-bit integer type" >&5 +echo "configure:4556: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4553,14 +4560,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4574,7 +4581,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4608,13 +4615,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4612: checking for struct dirent64" >&5 +echo "configure:4619: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4622,7 +4629,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4643,13 +4650,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4647: checking for struct stat64" >&5 +echo "configure:4654: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4657,7 +4664,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4661: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4680,12 +4687,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4684: checking for $ac_func" >&5 +echo "configure:4691: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4733,13 +4740,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4737: checking for off64_t" >&5 +echo "configure:4744: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4747,7 +4754,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4751: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4779,14 +4786,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4783: checking whether byte ordering is bigendian" >&5 +echo "configure:4790: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4797,11 +4804,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4808: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4812,7 +4819,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4823: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4832,7 +4839,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4878,12 +4885,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4882: checking for $ac_func" >&5 +echo "configure:4889: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4940,12 +4947,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4944: checking for $ac_func" >&5 +echo "configure:4951: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4995,12 +5002,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:4999: checking for strerror" >&5 +echo "configure:5006: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5047,12 +5054,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5051: checking for getwd" >&5 +echo "configure:5058: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5099,12 +5106,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5103: checking for wait3" >&5 +echo "configure:5110: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5151,12 +5158,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5155: checking for uname" >&5 +echo "configure:5162: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5210,12 +5217,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5214: checking for realpath" >&5 +echo "configure:5221: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5268,12 +5275,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5272: checking for getpwuid_r" >&5 +echo "configure:5279: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5312,13 +5319,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5316: checking for getpwuid_r with 5 args" >&5 +echo "configure:5323: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5335,7 +5342,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5346: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5356,13 +5363,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5360: checking for getpwuid_r with 4 args" >&5 +echo "configure:5367: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5379,7 +5386,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5412,12 +5419,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5416: checking for getpwnam_r" >&5 +echo "configure:5423: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5456,13 +5463,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5460: checking for getpwnam_r with 5 args" >&5 +echo "configure:5467: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5479,7 +5486,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5490: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5500,13 +5507,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5504: checking for getpwnam_r with 4 args" >&5 +echo "configure:5511: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5523,7 +5530,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5556,12 +5563,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5560: checking for getgrgid_r" >&5 +echo "configure:5567: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5600,13 +5607,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5604: checking for getgrgid_r with 5 args" >&5 +echo "configure:5611: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5623,7 +5630,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5627: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5634: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5644,13 +5651,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5648: checking for getgrgid_r with 4 args" >&5 +echo "configure:5655: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5667,7 +5674,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5700,12 +5707,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5704: checking for getgrnam_r" >&5 +echo "configure:5711: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5744,13 +5751,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5748: checking for getgrnam_r with 5 args" >&5 +echo "configure:5755: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5767,7 +5774,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5778: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5788,13 +5795,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5792: checking for getgrnam_r with 4 args" >&5 +echo "configure:5799: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5811,7 +5818,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5871,12 +5878,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5875: checking for gethostbyname_r" >&5 +echo "configure:5882: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5915,13 +5922,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5919: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5926: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5938,7 +5945,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5949: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5959,13 +5966,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5963: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5970: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5982,7 +5989,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6003,13 +6010,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6007: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6014: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6024,7 +6031,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6035: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6058,12 +6065,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6062: checking for gethostbyaddr_r" >&5 +echo "configure:6069: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6102,13 +6109,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6106: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6113: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6128,7 +6135,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6139: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6149,13 +6156,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6153: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6160: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6175,7 +6182,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6186: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6221,17 +6228,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6225: checking for $ac_hdr" >&5 +echo "configure:6232: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6242: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6258,7 +6265,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6262: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6269: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6267,7 +6274,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6282,7 +6289,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6299,7 +6306,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6313,7 +6320,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6331,7 +6338,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6346,7 +6353,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6364,7 +6371,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6381,7 +6388,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6399,7 +6406,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6415,7 +6422,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6433,7 +6440,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6450,7 +6457,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6493,20 +6500,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6497: checking for fd_set in sys/types" >&5 +echo "configure:6504: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6510: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6522,13 +6529,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6526: checking for fd_mask in sys/select" >&5 +echo "configure:6533: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6565,12 +6572,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6569: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6576: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6578,7 +6585,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6603,17 +6610,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6607: checking for $ac_hdr" >&5 +echo "configure:6614: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6624: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6640,12 +6647,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6644: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6651: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6654,7 +6661,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6658: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6675,12 +6682,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6679: checking for tm_zone in struct tm" >&5 +echo "configure:6686: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6688,7 +6695,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6692: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6708,12 +6715,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6712: checking for tzname" >&5 +echo "configure:6719: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6723,7 +6730,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6748,12 +6755,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6752: checking for $ac_func" >&5 +echo "configure:6759: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6802,20 +6809,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6806: checking tm_tzadj in struct tm" >&5 +echo "configure:6813: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6819: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6836,20 +6843,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6840: checking tm_gmtoff in struct tm" >&5 +echo "configure:6847: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6860: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6874,13 +6881,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6878: checking long timezone variable" >&5 +echo "configure:6885: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6889,7 +6896,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6912,13 +6919,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6916: checking time_t timezone variable" >&5 +echo "configure:6923: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6927,7 +6934,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6931: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6954,12 +6961,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6958: checking for st_blksize in struct stat" >&5 +echo "configure:6965: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6967,7 +6974,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6971: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6988,12 +6995,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6992: checking for fstatfs" >&5 +echo "configure:6999: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7045,7 +7052,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7049: checking for 8-bit clean memcmp" >&5 +echo "configure:7056: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7053,7 +7060,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7087,12 +7094,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7091: checking for memmove" >&5 +echo "configure:7098: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7148,7 +7155,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7152: checking proper strstr implementation" >&5 +echo "configure:7159: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7157,7 +7164,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7193,12 +7200,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7197: checking for strtoul" >&5 +echo "configure:7204: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7243,7 +7250,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7247: checking proper strtoul implementation" >&5 +echo "configure:7254: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7252,7 +7259,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7297,12 +7304,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7301: checking for strtod" >&5 +echo "configure:7308: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7347,7 +7354,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7351: checking proper strtod implementation" >&5 +echo "configure:7358: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7356,7 +7363,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7404,12 +7411,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7408: checking for strtod" >&5 +echo "configure:7415: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7454,7 +7461,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7458: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7465: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7463,7 +7470,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7517,12 +7524,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7521: checking for ANSI C header files" >&5 +echo "configure:7528: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7530,7 +7537,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7541: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7547,7 +7554,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7565,7 +7572,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7586,7 +7593,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7597,7 +7604,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7621,12 +7628,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7625: checking for mode_t" >&5 +echo "configure:7632: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7654,12 +7661,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7658: checking for pid_t" >&5 +echo "configure:7665: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7687,12 +7694,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7691: checking for size_t" >&5 +echo "configure:7698: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7720,12 +7727,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7724: checking for uid_t in sys/types.h" >&5 +echo "configure:7731: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7755,13 +7762,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7759: checking for socklen_t" >&5 +echo "configure:7766: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7800,12 +7807,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7804: checking for opendir" >&5 +echo "configure:7811: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7861,13 +7868,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7865: checking union wait" >&5 +echo "configure:7872: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7879,7 +7886,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7906,12 +7913,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7910: checking for strncasecmp" >&5 +echo "configure:7917: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7956,7 +7963,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7960: checking for strncasecmp in -lsocket" >&5 +echo "configure:7967: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7964,7 +7971,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7999,7 +8006,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8003: checking for strncasecmp in -linet" >&5 +echo "configure:8010: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8007,7 +8014,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8056,12 +8063,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8060: checking for BSDgettimeofday" >&5 +echo "configure:8067: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8106,12 +8113,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8110: checking for gettimeofday" >&5 +echo "configure:8117: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8161,13 +8168,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8165: checking for gettimeofday declaration" >&5 +echo "configure:8172: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8198,14 +8205,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8202: checking whether char is unsigned" >&5 +echo "configure:8209: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8261,13 +8268,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8265: checking signed char declarations" >&5 +echo "configure:8272: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8288: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8302,7 +8309,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8306: checking for a putenv() that copies the buffer" >&5 +echo "configure:8313: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8311,7 +8318,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8333,7 +8340,7 @@ else } EOF -if { (eval echo configure:8337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8373,17 +8380,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8377: checking for langinfo.h" >&5 +echo "configure:8384: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8387: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8394: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8407,21 +8414,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8411: checking whether to use nl_langinfo" >&5 +echo "configure:8418: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8454,17 +8461,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8458: checking for $ac_hdr" >&5 +echo "configure:8465: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8468: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8493,12 +8500,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8497: checking for $ac_func" >&5 +echo "configure:8504: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8550,17 +8557,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8554: checking for $ac_hdr" >&5 +echo "configure:8561: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8564: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8589,12 +8596,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8593: checking for $ac_func" >&5 +echo "configure:8600: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8644,12 +8651,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8648: checking for $ac_func" >&5 +echo "configure:8655: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8713,17 +8720,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8717: checking for $ac_hdr" >&5 +echo "configure:8724: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8727: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8751,14 +8758,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8755: checking if weak import is available" >&5 +echo "configure:8762: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8802,13 +8809,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8806: checking for fts" >&5 +echo "configure:8813: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8823,7 +8830,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8855,17 +8862,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8859: checking for $ac_hdr" >&5 +echo "configure:8866: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8869: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8876: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8895,17 +8902,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8899: checking for $ac_hdr" >&5 +echo "configure:8906: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8909: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8916: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8933,7 +8940,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8937: checking system version" >&5 +echo "configure:8944: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8964,7 +8971,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8968: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8975: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9027,7 +9034,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9031: checking how to package libraries" >&5 +echo "configure:9038: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 13f533a..56142d7 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1039,6 +1039,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' ECHO_VERSION='`echo ${VERSION}`' TCL_LIB_VERSIONS_OK=ok + CFLAGS="${CPPFLAGS} ${CFLAGS}" CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O if test "$GCC" = "yes" ; then @@ -1559,6 +1560,12 @@ dnl AC_CHECK_TOOL(AR, ar) Darwin-*) CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" + # To avoid discrepancies between what headers configure sees during + # preprocessing tests and compiling tests, add any -isysroot and + # -mmacosx-version-min flags present in CFLAGS to CPPFLAGS: + CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \ + awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=1;i<=NF;i++) \ + if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`" if test $do64bit = yes; then case `arch` in ppc) -- cgit v0.12 From f8ee7e801e06b6101e6e1180a0b7a88b7db47843 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 22 Jan 2007 09:56:32 +0000 Subject: Fix [Bug 1631017] --- ChangeLog | 5 +++++ compat/memcmp.c | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2ec53a9..a1eeba0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-01-22 Donal K. Fellows + + * compat/memcmp.c (memcmp): Reworked so that arithmetic is never + performed upon void pointers, since that is illegal. [Bug 1631017] + 2006-01-19 Daniel Steffen * macosx/tclMacOSXNotify.c: accommodate changes to prototypes of diff --git a/compat/memcmp.c b/compat/memcmp.c index 09a5724..dd4cacc 100644 --- a/compat/memcmp.c +++ b/compat/memcmp.c @@ -48,11 +48,12 @@ memcmp(s1, s2, n) CONST VOID *s2; /* Second string. */ size_t n; /* Length to compare. */ { - unsigned char u1, u2; + VOID unsigned char *ptr1 = (VOID unsigned char *) s1; + VOID unsigned char *ptr2 = (VOID unsigned char *) s2; + + for ( ; n-- ; ptr1++, ptr2++) { + unsigned char u1 = *s1, u2 = *s2; - for ( ; n-- ; s1++, s2++) { - u1 = * (unsigned char *) s1; - u2 = * (unsigned char *) s2; if ( u1 != u2) { return (u1-u2); } -- cgit v0.12 From e34cf76c6857bfb4d0d42fb6d3006cb45c9d39ea Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 22 Jan 2007 23:27:52 +0000 Subject: * compat/memcmp.c (memcmp): Fixed the VOID / CONST typo introduced by the last checkin. --- ChangeLog | 5 +++++ compat/memcmp.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a1eeba0..c667c10 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-01-22 Andreas Kupries + + * compat/memcmp.c (memcmp): Fixed the VOID / CONST typo introduced + by the last checkin. + 2007-01-22 Donal K. Fellows * compat/memcmp.c (memcmp): Reworked so that arithmetic is never diff --git a/compat/memcmp.c b/compat/memcmp.c index dd4cacc..b1c12a9 100644 --- a/compat/memcmp.c +++ b/compat/memcmp.c @@ -48,8 +48,8 @@ memcmp(s1, s2, n) CONST VOID *s2; /* Second string. */ size_t n; /* Length to compare. */ { - VOID unsigned char *ptr1 = (VOID unsigned char *) s1; - VOID unsigned char *ptr2 = (VOID unsigned char *) s2; + CONST unsigned char *ptr1 = (CONST unsigned char *) s1; + CONST unsigned char *ptr2 = (CONST unsigned char *) s2; for ( ; n-- ; ptr1++, ptr2++) { unsigned char u1 = *s1, u2 = *s2; -- cgit v0.12 From 028106dd02dc6fedd3762dfa1669c112613aa4d5 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 25 Jan 2007 02:06:36 +0000 Subject: * unix/tcl.m4: integrate CPPFLAGS into CFLAGS as late as possible * unix/configure.in: and move (rather than duplicate) -isysroot flags from CFLAGS to CPPFLAGS to avoid errors about multiple -isysroot flags from some older gcc builds. * unix/configure: autoconf-2.13 --- ChangeLog | 9 + unix/configure | 651 +++++++++++++++++++++++++++--------------------------- unix/configure.in | 4 +- unix/tcl.m4 | 29 ++- 4 files changed, 370 insertions(+), 323 deletions(-) diff --git a/ChangeLog b/ChangeLog index c667c10..908b794 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-01-25 Daniel Steffen + + * unix/tcl.m4: integrate CPPFLAGS into CFLAGS as late as possible + * unix/configure.in: and move (rather than duplicate) -isysroot flags + from CFLAGS to CPPFLAGS to avoid errors about multiple -isysroot flags + from some older gcc builds. + + * unix/configure: autoconf-2.13 + 2007-01-22 Andreas Kupries * compat/memcmp.c (memcmp): Fixed the VOID / CONST typo introduced diff --git a/unix/configure b/unix/configure index 9944e85..681fbaf 100755 --- a/unix/configure +++ b/unix/configure @@ -3452,13 +3452,16 @@ echo "$ac_t""$tcl_cv_ld_elf" 1>&6 # preprocessing tests and compiling tests, add any -isysroot and # -mmacosx-version-min flags present in CFLAGS to CPPFLAGS: CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \ - awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=1;i<=NF;i++) \ + awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ if ($i~/^(isysroot|mmacosx-version-min)/) print "-"$i}'`" + CFLAGS="`echo " ${CFLAGS}" | \ + awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ + if (!($i~/^(isysroot|mmacosx-version-min)/)) print "-"$i}'`" if test $do64bit = yes; then case `arch` in ppc) echo $ac_n "checking if compiler accepts -arch ppc64 flag""... $ac_c" 1>&6 -echo "configure:3462: checking if compiler accepts -arch ppc64 flag" >&5 +echo "configure:3465: checking if compiler accepts -arch ppc64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_ppc64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3466,14 +3469,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_ppc64=yes else @@ -3493,7 +3496,7 @@ echo "$ac_t""$tcl_cv_cc_arch_ppc64" 1>&6 fi;; i386) echo $ac_n "checking if compiler accepts -arch x86_64 flag""... $ac_c" 1>&6 -echo "configure:3497: checking if compiler accepts -arch x86_64 flag" >&5 +echo "configure:3500: checking if compiler accepts -arch x86_64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_x86_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3501,14 +3504,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch x86_64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_x86_64=yes else @@ -3537,7 +3540,7 @@ echo "$ac_t""$tcl_cv_cc_arch_x86_64" 1>&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3541: checking if ld accepts -single_module flag" >&5 +echo "configure:3544: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3545,14 +3548,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3579,7 +3582,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3583: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3586: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3587,14 +3590,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3617,7 +3620,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3621: checking whether to use CoreFoundation" >&5 +echo "configure:3624: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3629,7 +3632,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3633: checking for CoreFoundation.framework" >&5 +echo "configure:3636: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3643,14 +3646,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3675,7 +3678,7 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3679: checking for 64-bit CoreFoundation" >&5 +echo "configure:3682: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3683,14 +3686,14 @@ else hold_cflags=$CFLAGS CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -4003,7 +4006,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4007: checking for ld accepts -Bexport flag" >&5 +echo "configure:4010: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4011,14 +4014,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4044,6 +4047,9 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 echo "configure: warning: 64bit support being disabled -- don't know magic for this platform" 1>&2 fi + + + # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop, # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need @@ -4065,13 +4071,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4069: checking sys/exec.h" >&5 +echo "configure:4075: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4089,7 +4095,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4099: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4109,13 +4115,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4113: checking a.out.h" >&5 +echo "configure:4119: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4133,7 +4139,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4153,13 +4159,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4157: checking sys/exec_aout.h" >&5 +echo "configure:4163: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4177,7 +4183,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4181: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4187: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4330,7 +4336,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4334: checking for build with symbols" >&5 +echo "configure:4340: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4391,21 +4397,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4395: checking for required early compiler flags" >&5 +echo "configure:4401: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4413,7 +4419,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4421,7 +4427,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4448,14 +4454,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4463,7 +4469,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4471,7 +4477,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4498,14 +4504,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4509: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4513,7 +4519,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4521,7 +4527,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4525: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4552,7 +4558,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4556: checking for 64-bit integer type" >&5 +echo "configure:4562: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4560,14 +4566,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4581,7 +4587,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4600: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4615,13 +4621,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4619: checking for struct dirent64" >&5 +echo "configure:4625: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4629,7 +4635,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4650,13 +4656,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4654: checking for struct stat64" >&5 +echo "configure:4660: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4664,7 +4670,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4687,12 +4693,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4691: checking for $ac_func" >&5 +echo "configure:4697: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4740,13 +4746,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4744: checking for off64_t" >&5 +echo "configure:4750: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4754,7 +4760,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4764: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4786,14 +4792,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4790: checking whether byte ordering is bigendian" >&5 +echo "configure:4796: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4804,11 +4810,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4808: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4819,7 +4825,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4823: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4839,7 +4845,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4885,12 +4891,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4889: checking for $ac_func" >&5 +echo "configure:4895: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4947,12 +4953,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4951: checking for $ac_func" >&5 +echo "configure:4957: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5002,12 +5008,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5006: checking for strerror" >&5 +echo "configure:5012: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5054,12 +5060,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5058: checking for getwd" >&5 +echo "configure:5064: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5106,12 +5112,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5110: checking for wait3" >&5 +echo "configure:5116: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5158,12 +5164,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5162: checking for uname" >&5 +echo "configure:5168: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5217,12 +5223,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5221: checking for realpath" >&5 +echo "configure:5227: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5275,12 +5281,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5279: checking for getpwuid_r" >&5 +echo "configure:5285: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5319,13 +5325,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5323: checking for getpwuid_r with 5 args" >&5 +echo "configure:5329: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5342,7 +5348,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5346: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5363,13 +5369,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5367: checking for getpwuid_r with 4 args" >&5 +echo "configure:5373: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5386,7 +5392,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5396: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5419,12 +5425,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5423: checking for getpwnam_r" >&5 +echo "configure:5429: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5463,13 +5469,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5467: checking for getpwnam_r with 5 args" >&5 +echo "configure:5473: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5486,7 +5492,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5490: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5496: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5507,13 +5513,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5511: checking for getpwnam_r with 4 args" >&5 +echo "configure:5517: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5530,7 +5536,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5563,12 +5569,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5567: checking for getgrgid_r" >&5 +echo "configure:5573: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5607,13 +5613,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5611: checking for getgrgid_r with 5 args" >&5 +echo "configure:5617: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5630,7 +5636,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5634: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5651,13 +5657,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5655: checking for getgrgid_r with 4 args" >&5 +echo "configure:5661: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5674,7 +5680,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5707,12 +5713,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5711: checking for getgrnam_r" >&5 +echo "configure:5717: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5751,13 +5757,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5755: checking for getgrnam_r with 5 args" >&5 +echo "configure:5761: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5774,7 +5780,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5778: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5784: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5795,13 +5801,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5799: checking for getgrnam_r with 4 args" >&5 +echo "configure:5805: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5818,7 +5824,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5878,12 +5884,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5882: checking for gethostbyname_r" >&5 +echo "configure:5888: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5922,13 +5928,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5926: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5932: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5945,7 +5951,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5949: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5955: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5966,13 +5972,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5970: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5976: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5989,7 +5995,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6010,13 +6016,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6014: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6020: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6031,7 +6037,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6035: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6041: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6065,12 +6071,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6069: checking for gethostbyaddr_r" >&5 +echo "configure:6075: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6109,13 +6115,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6113: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6119: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6135,7 +6141,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6139: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6156,13 +6162,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6160: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6166: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6182,7 +6188,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6186: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6228,17 +6234,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6232: checking for $ac_hdr" >&5 +echo "configure:6238: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6242: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6248: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6265,7 +6271,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6269: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6275: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6274,7 +6280,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6289,7 +6295,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6306,7 +6312,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6320,7 +6326,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6338,7 +6344,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6353,7 +6359,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6371,7 +6377,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6388,7 +6394,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6406,7 +6412,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6422,7 +6428,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6440,7 +6446,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6457,7 +6463,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6500,20 +6506,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6504: checking for fd_set in sys/types" >&5 +echo "configure:6510: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6529,13 +6535,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6533: checking for fd_mask in sys/select" >&5 +echo "configure:6539: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6572,12 +6578,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6576: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6582: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6585,7 +6591,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6595: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6610,17 +6616,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6614: checking for $ac_hdr" >&5 +echo "configure:6620: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6624: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6630: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6647,12 +6653,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6651: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6657: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6661,7 +6667,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6682,12 +6688,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6686: checking for tm_zone in struct tm" >&5 +echo "configure:6692: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6695,7 +6701,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6705: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6715,12 +6721,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6719: checking for tzname" >&5 +echo "configure:6725: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6730,7 +6736,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6755,12 +6761,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6759: checking for $ac_func" >&5 +echo "configure:6765: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6809,20 +6815,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6813: checking tm_tzadj in struct tm" >&5 +echo "configure:6819: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6843,20 +6849,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6847: checking tm_gmtoff in struct tm" >&5 +echo "configure:6853: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6860: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6866: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6881,13 +6887,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6885: checking long timezone variable" >&5 +echo "configure:6891: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6896,7 +6902,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6919,13 +6925,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6923: checking time_t timezone variable" >&5 +echo "configure:6929: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6934,7 +6940,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6961,12 +6967,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6965: checking for st_blksize in struct stat" >&5 +echo "configure:6971: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6974,7 +6980,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -6995,12 +7001,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:6999: checking for fstatfs" >&5 +echo "configure:7005: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7052,7 +7058,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7056: checking for 8-bit clean memcmp" >&5 +echo "configure:7062: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7060,7 +7066,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7094,12 +7100,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7098: checking for memmove" >&5 +echo "configure:7104: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7155,7 +7161,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7159: checking proper strstr implementation" >&5 +echo "configure:7165: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7164,7 +7170,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7200,12 +7206,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7204: checking for strtoul" >&5 +echo "configure:7210: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7250,7 +7256,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7254: checking proper strtoul implementation" >&5 +echo "configure:7260: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7259,7 +7265,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7304,12 +7310,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7308: checking for strtod" >&5 +echo "configure:7314: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7354,7 +7360,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7358: checking proper strtod implementation" >&5 +echo "configure:7364: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7363,7 +7369,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7411,12 +7417,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7415: checking for strtod" >&5 +echo "configure:7421: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7461,7 +7467,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7465: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7471: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7470,7 +7476,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7524,12 +7530,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7528: checking for ANSI C header files" >&5 +echo "configure:7534: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7537,7 +7543,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7541: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7547: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7554,7 +7560,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7572,7 +7578,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7593,7 +7599,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7604,7 +7610,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7628,12 +7634,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7632: checking for mode_t" >&5 +echo "configure:7638: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7661,12 +7667,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7665: checking for pid_t" >&5 +echo "configure:7671: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7694,12 +7700,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7698: checking for size_t" >&5 +echo "configure:7704: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7727,12 +7733,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7731: checking for uid_t in sys/types.h" >&5 +echo "configure:7737: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7762,13 +7768,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7766: checking for socklen_t" >&5 +echo "configure:7772: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7807,12 +7813,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7811: checking for opendir" >&5 +echo "configure:7817: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7868,13 +7874,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7872: checking union wait" >&5 +echo "configure:7878: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7886,7 +7892,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7913,12 +7919,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7917: checking for strncasecmp" >&5 +echo "configure:7923: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7963,7 +7969,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7967: checking for strncasecmp in -lsocket" >&5 +echo "configure:7973: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7971,7 +7977,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8006,7 +8012,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8010: checking for strncasecmp in -linet" >&5 +echo "configure:8016: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8014,7 +8020,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8063,12 +8069,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8067: checking for BSDgettimeofday" >&5 +echo "configure:8073: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8113,12 +8119,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8117: checking for gettimeofday" >&5 +echo "configure:8123: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8168,13 +8174,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8172: checking for gettimeofday declaration" >&5 +echo "configure:8178: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8205,14 +8211,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8209: checking whether char is unsigned" >&5 +echo "configure:8215: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8268,13 +8274,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8272: checking signed char declarations" >&5 +echo "configure:8278: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8309,7 +8315,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8313: checking for a putenv() that copies the buffer" >&5 +echo "configure:8319: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8318,7 +8324,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8340,7 +8346,7 @@ else } EOF -if { (eval echo configure:8344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8380,17 +8386,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8384: checking for langinfo.h" >&5 +echo "configure:8390: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8394: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8414,21 +8420,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8418: checking whether to use nl_langinfo" >&5 +echo "configure:8424: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8461,17 +8467,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8465: checking for $ac_hdr" >&5 +echo "configure:8471: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8481: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8500,12 +8506,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8504: checking for $ac_func" >&5 +echo "configure:8510: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8557,17 +8563,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8561: checking for $ac_hdr" >&5 +echo "configure:8567: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8577: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8596,12 +8602,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8600: checking for $ac_func" >&5 +echo "configure:8606: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8651,12 +8657,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8655: checking for $ac_func" >&5 +echo "configure:8661: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8720,17 +8726,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8724: checking for $ac_hdr" >&5 +echo "configure:8730: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8758,14 +8764,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8762: checking if weak import is available" >&5 +echo "configure:8768: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8809,13 +8815,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8813: checking for fts" >&5 +echo "configure:8819: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8830,7 +8836,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8840: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8862,17 +8868,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8866: checking for $ac_hdr" >&5 +echo "configure:8872: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8876: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8882: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8902,17 +8908,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8906: checking for $ac_hdr" >&5 +echo "configure:8912: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8916: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8922: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8940,7 +8946,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8944: checking system version" >&5 +echo "configure:8950: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8971,7 +8977,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8975: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8981: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9034,7 +9040,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9038: checking how to package libraries" >&5 +echo "configure:9044: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -9231,6 +9237,9 @@ TCL_SHARED_BUILD=${SHARED_BUILD} +CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS="" + + tcl_config_files="${tcl_config_files} Makefile dltest/Makefile tclConfig.sh" trap '' 1 2 15 cat > confcache <<\EOF diff --git a/unix/configure.in b/unix/configure.in index 656e4c9..6f6eead 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.32 2006/10/23 17:53:27 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.33 2007/01/25 02:06:38 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -725,5 +725,7 @@ AC_SUBST(EXTRA_INSTALL) AC_SUBST(EXTRA_INSTALL_BINARIES) AC_SUBST(EXTRA_BUILD_HTML) +SC_OUTPUT_COMMANDS_PRE + tcl_config_files="${tcl_config_files} [Makefile dltest/Makefile tclConfig.sh]" AC_OUTPUT([${tcl_config_files}]) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 56142d7..17864a6 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1564,8 +1564,11 @@ dnl AC_CHECK_TOOL(AR, ar) # preprocessing tests and compiling tests, add any -isysroot and # -mmacosx-version-min flags present in CFLAGS to CPPFLAGS: CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \ - awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=1;i<=NF;i++) \ + awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`" + CFLAGS="`echo " ${CFLAGS}" | \ + awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ + if (!([$]i~/^(isysroot|mmacosx-version-min)/)) print "-"[$]i}'`" if test $do64bit = yes; then case `arch` in ppc) @@ -1958,6 +1961,12 @@ dnl AC_CHECK_TOOL(AR, ar) AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform]) fi +dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so +dnl # until the end of configure, as configure's compile and link tests use +dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's +dnl # preprocessing tests use only CPPFLAGS. + SC_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""]) + # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop, # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need @@ -3198,3 +3207,21 @@ AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [ AC_DEFINE(HAVE_GETGRNAM_R) fi ])]) + +#-------------------------------------------------------------------- +# SC_COMMANDS_PRE(CMDS) +# +# Replacement for autoconf 2.5x AC_COMMANDS_PRE: +# Commands to run right before config.status is +# created. Accumulates. +# +# Reauires presence of SC_OUTPUT_COMMANDS_PRE at the end +# of configure.in (right before AC_OUTPUT). +# +#-------------------------------------------------------------------- + +AC_DEFUN([SC_COMMANDS_PRE], [ + define([SC_OUTPUT_COMMANDS_PRE], defn([SC_OUTPUT_COMMANDS_PRE])[$1 +])]) +AC_DEFUN([SC_OUTPUT_COMMANDS_PRE]) + -- cgit v0.12 From e04cccba5deea95be80a78dc64e5497ea0e76958 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 25 Jan 2007 05:12:36 +0000 Subject: *** empty log message *** --- unix/tcl.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 17864a6..4e39e51 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -3215,7 +3215,7 @@ AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [ # Commands to run right before config.status is # created. Accumulates. # -# Reauires presence of SC_OUTPUT_COMMANDS_PRE at the end +# Requires presence of SC_OUTPUT_COMMANDS_PRE at the end # of configure.in (right before AC_OUTPUT). # #-------------------------------------------------------------------- -- cgit v0.12 From 9d6ba17b2f2c4090f9e1b262c624f6e5be10a2de Mon Sep 17 00:00:00 2001 From: das Date: Thu, 25 Jan 2007 05:20:19 +0000 Subject: previous commit omitted some changes from the HEAD --- unix/configure | 703 ++++++++++++++++++++++++++++----------------------------- unix/tcl.m4 | 5 +- 2 files changed, 353 insertions(+), 355 deletions(-) diff --git a/unix/configure b/unix/configure index 681fbaf..bfb6846 100755 --- a/unix/configure +++ b/unix/configure @@ -2564,7 +2564,6 @@ fi TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' ECHO_VERSION='`echo ${VERSION}`' TCL_LIB_VERSIONS_OK=ok - CFLAGS="${CPPFLAGS} ${CFLAGS}" CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O if test "$GCC" = "yes" ; then @@ -2578,7 +2577,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2582: checking for $ac_word" >&5 +echo "configure:2581: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2693,7 +2692,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2697: checking for gettimeofday in -lbsd" >&5 +echo "configure:2696: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2701,7 +2700,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2755,7 +2754,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2759: checking for inet_ntoa in -lbind" >&5 +echo "configure:2758: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2763,7 +2762,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2840,7 +2839,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2844: checking for shl_load in -ldld" >&5 +echo "configure:2843: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2848,7 +2847,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2927,7 +2926,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2931: checking for shl_load in -ldld" >&5 +echo "configure:2930: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2935,7 +2934,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3070,17 +3069,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3074: checking for dld.h" >&5 +echo "configure:3073: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3084: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3112,7 +3111,7 @@ fi fi if test $do64bit = yes; then echo $ac_n "checking if compiler accepts -m64 flag""... $ac_c" 1>&6 -echo "configure:3116: checking if compiler accepts -m64 flag" >&5 +echo "configure:3115: checking if compiler accepts -m64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_m64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3120,14 +3119,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -m64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_m64=yes else @@ -3180,17 +3179,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3184: checking for dld.h" >&5 +echo "configure:3183: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3194: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3258,17 +3257,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3262: checking for dlfcn.h" >&5 +echo "configure:3261: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3295,13 +3294,13 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3299: checking for ELF" >&5 +echo "configure:3298: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:3384: checking for ELF" >&5 +echo "configure:3383: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" # To avoid discrepancies between what headers configure sees during - # preprocessing tests and compiling tests, add any -isysroot and - # -mmacosx-version-min flags present in CFLAGS to CPPFLAGS: + # preprocessing tests and compiling tests, move any -isysroot and + # -mmacosx-version-min flags from CFLAGS to CPPFLAGS: CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \ awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ if ($i~/^(isysroot|mmacosx-version-min)/) print "-"$i}'`" @@ -3461,7 +3460,7 @@ echo "$ac_t""$tcl_cv_ld_elf" 1>&6 case `arch` in ppc) echo $ac_n "checking if compiler accepts -arch ppc64 flag""... $ac_c" 1>&6 -echo "configure:3465: checking if compiler accepts -arch ppc64 flag" >&5 +echo "configure:3464: checking if compiler accepts -arch ppc64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_ppc64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3469,14 +3468,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_ppc64=yes else @@ -3496,7 +3495,7 @@ echo "$ac_t""$tcl_cv_cc_arch_ppc64" 1>&6 fi;; i386) echo $ac_n "checking if compiler accepts -arch x86_64 flag""... $ac_c" 1>&6 -echo "configure:3500: checking if compiler accepts -arch x86_64 flag" >&5 +echo "configure:3499: checking if compiler accepts -arch x86_64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_x86_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3504,14 +3503,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch x86_64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_x86_64=yes else @@ -3540,7 +3539,7 @@ echo "$ac_t""$tcl_cv_cc_arch_x86_64" 1>&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3544: checking if ld accepts -single_module flag" >&5 +echo "configure:3543: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3548,14 +3547,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3582,7 +3581,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3586: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3585: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3590,14 +3589,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3620,7 +3619,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3624: checking whether to use CoreFoundation" >&5 +echo "configure:3623: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3632,7 +3631,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3636: checking for CoreFoundation.framework" >&5 +echo "configure:3635: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3646,14 +3645,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3678,7 +3677,7 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3682: checking for 64-bit CoreFoundation" >&5 +echo "configure:3681: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3686,14 +3685,14 @@ else hold_cflags=$CFLAGS CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -4006,7 +4005,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4010: checking for ld accepts -Bexport flag" >&5 +echo "configure:4009: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4014,14 +4013,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4071,13 +4070,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4075: checking sys/exec.h" >&5 +echo "configure:4074: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4095,7 +4094,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4099: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4098: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4115,13 +4114,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4119: checking a.out.h" >&5 +echo "configure:4118: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4139,7 +4138,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4159,13 +4158,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4163: checking sys/exec_aout.h" >&5 +echo "configure:4162: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4183,7 +4182,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4187: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4186: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4336,7 +4335,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4340: checking for build with symbols" >&5 +echo "configure:4339: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4397,21 +4396,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4401: checking for required early compiler flags" >&5 +echo "configure:4400: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4419,7 +4418,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4427,7 +4426,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4454,14 +4453,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4469,7 +4468,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4477,7 +4476,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4480: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4504,14 +4503,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4514: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4519,7 +4518,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4527,7 +4526,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4558,7 +4557,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4562: checking for 64-bit integer type" >&5 +echo "configure:4561: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4566,14 +4565,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4576: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4587,7 +4586,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4621,13 +4620,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4625: checking for struct dirent64" >&5 +echo "configure:4624: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4635,7 +4634,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4656,13 +4655,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4660: checking for struct stat64" >&5 +echo "configure:4659: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4670,7 +4669,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4693,12 +4692,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4697: checking for $ac_func" >&5 +echo "configure:4696: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4746,13 +4745,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4750: checking for off64_t" >&5 +echo "configure:4749: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4760,7 +4759,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4764: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4792,14 +4791,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4796: checking whether byte ordering is bigendian" >&5 +echo "configure:4795: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4810,11 +4809,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4825,7 +4824,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4845,7 +4844,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4891,12 +4890,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4895: checking for $ac_func" >&5 +echo "configure:4894: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4953,12 +4952,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4957: checking for $ac_func" >&5 +echo "configure:4956: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5008,12 +5007,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5012: checking for strerror" >&5 +echo "configure:5011: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5060,12 +5059,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5064: checking for getwd" >&5 +echo "configure:5063: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5112,12 +5111,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5116: checking for wait3" >&5 +echo "configure:5115: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5164,12 +5163,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5168: checking for uname" >&5 +echo "configure:5167: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5223,12 +5222,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5227: checking for realpath" >&5 +echo "configure:5226: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5281,12 +5280,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5285: checking for getpwuid_r" >&5 +echo "configure:5284: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5325,13 +5324,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5329: checking for getpwuid_r with 5 args" >&5 +echo "configure:5328: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5348,7 +5347,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5351: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5369,13 +5368,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5373: checking for getpwuid_r with 4 args" >&5 +echo "configure:5372: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5392,7 +5391,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5396: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5395: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5425,12 +5424,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5429: checking for getpwnam_r" >&5 +echo "configure:5428: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5469,13 +5468,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5473: checking for getpwnam_r with 5 args" >&5 +echo "configure:5472: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5492,7 +5491,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5496: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5495: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5513,13 +5512,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5517: checking for getpwnam_r with 4 args" >&5 +echo "configure:5516: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5536,7 +5535,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5539: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5569,12 +5568,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5573: checking for getgrgid_r" >&5 +echo "configure:5572: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5613,13 +5612,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5617: checking for getgrgid_r with 5 args" >&5 +echo "configure:5616: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5636,7 +5635,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5657,13 +5656,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5661: checking for getgrgid_r with 4 args" >&5 +echo "configure:5660: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5680,7 +5679,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5713,12 +5712,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5717: checking for getgrnam_r" >&5 +echo "configure:5716: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5757,13 +5756,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5761: checking for getgrnam_r with 5 args" >&5 +echo "configure:5760: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5780,7 +5779,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5784: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5801,13 +5800,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5805: checking for getgrnam_r with 4 args" >&5 +echo "configure:5804: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5824,7 +5823,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5827: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5884,12 +5883,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5888: checking for gethostbyname_r" >&5 +echo "configure:5887: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5928,13 +5927,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5932: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5931: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5951,7 +5950,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5955: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5972,13 +5971,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5976: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5975: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5995,7 +5994,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5998: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6016,13 +6015,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6020: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6019: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6037,7 +6036,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6041: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6040: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6071,12 +6070,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6075: checking for gethostbyaddr_r" >&5 +echo "configure:6074: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6115,13 +6114,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6119: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6118: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6141,7 +6140,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6144: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6162,13 +6161,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6166: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6165: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6188,7 +6187,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6191: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6234,17 +6233,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6238: checking for $ac_hdr" >&5 +echo "configure:6237: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6248: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6271,7 +6270,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6275: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6274: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6280,7 +6279,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6295,7 +6294,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6312,7 +6311,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6326,7 +6325,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6344,7 +6343,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6359,7 +6358,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6377,7 +6376,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6394,7 +6393,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6412,7 +6411,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6428,7 +6427,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6446,7 +6445,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6463,7 +6462,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6506,20 +6505,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6510: checking for fd_set in sys/types" >&5 +echo "configure:6509: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6535,13 +6534,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6539: checking for fd_mask in sys/select" >&5 +echo "configure:6538: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6578,12 +6577,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6582: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6581: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6591,7 +6590,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6595: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6616,17 +6615,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6620: checking for $ac_hdr" >&5 +echo "configure:6619: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6630: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6629: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6653,12 +6652,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6657: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6656: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6667,7 +6666,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6688,12 +6687,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6692: checking for tm_zone in struct tm" >&5 +echo "configure:6691: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6701,7 +6700,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6705: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6704: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6721,12 +6720,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6725: checking for tzname" >&5 +echo "configure:6724: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6736,7 +6735,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6761,12 +6760,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6765: checking for $ac_func" >&5 +echo "configure:6764: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6815,20 +6814,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6819: checking tm_tzadj in struct tm" >&5 +echo "configure:6818: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6849,20 +6848,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6853: checking tm_gmtoff in struct tm" >&5 +echo "configure:6852: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6866: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6865: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6887,13 +6886,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6891: checking long timezone variable" >&5 +echo "configure:6890: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6902,7 +6901,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6925,13 +6924,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6929: checking time_t timezone variable" >&5 +echo "configure:6928: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6940,7 +6939,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6943: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6967,12 +6966,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6971: checking for st_blksize in struct stat" >&5 +echo "configure:6970: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6980,7 +6979,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7001,12 +7000,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:7005: checking for fstatfs" >&5 +echo "configure:7004: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7058,7 +7057,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7062: checking for 8-bit clean memcmp" >&5 +echo "configure:7061: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7066,7 +7065,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7100,12 +7099,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7104: checking for memmove" >&5 +echo "configure:7103: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7161,7 +7160,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7165: checking proper strstr implementation" >&5 +echo "configure:7164: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7170,7 +7169,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7206,12 +7205,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7210: checking for strtoul" >&5 +echo "configure:7209: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7256,7 +7255,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7260: checking proper strtoul implementation" >&5 +echo "configure:7259: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7265,7 +7264,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7310,12 +7309,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7314: checking for strtod" >&5 +echo "configure:7313: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7360,7 +7359,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7364: checking proper strtod implementation" >&5 +echo "configure:7363: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7369,7 +7368,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7417,12 +7416,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7421: checking for strtod" >&5 +echo "configure:7420: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7467,7 +7466,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7471: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7470: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7476,7 +7475,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7530,12 +7529,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7534: checking for ANSI C header files" >&5 +echo "configure:7533: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7543,7 +7542,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7547: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7546: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7560,7 +7559,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7578,7 +7577,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7599,7 +7598,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7610,7 +7609,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7634,12 +7633,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7638: checking for mode_t" >&5 +echo "configure:7637: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7667,12 +7666,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7671: checking for pid_t" >&5 +echo "configure:7670: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7700,12 +7699,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7704: checking for size_t" >&5 +echo "configure:7703: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7733,12 +7732,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7737: checking for uid_t in sys/types.h" >&5 +echo "configure:7736: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7768,13 +7767,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7772: checking for socklen_t" >&5 +echo "configure:7771: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7813,12 +7812,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7817: checking for opendir" >&5 +echo "configure:7816: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7874,13 +7873,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7878: checking union wait" >&5 +echo "configure:7877: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7892,7 +7891,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7919,12 +7918,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7923: checking for strncasecmp" >&5 +echo "configure:7922: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7969,7 +7968,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7973: checking for strncasecmp in -lsocket" >&5 +echo "configure:7972: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7977,7 +7976,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8012,7 +8011,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8016: checking for strncasecmp in -linet" >&5 +echo "configure:8015: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8020,7 +8019,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8069,12 +8068,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8073: checking for BSDgettimeofday" >&5 +echo "configure:8072: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8119,12 +8118,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8123: checking for gettimeofday" >&5 +echo "configure:8122: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8174,13 +8173,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8178: checking for gettimeofday declaration" >&5 +echo "configure:8177: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8211,14 +8210,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8215: checking whether char is unsigned" >&5 +echo "configure:8214: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8274,13 +8273,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8278: checking signed char declarations" >&5 +echo "configure:8277: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8315,7 +8314,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8319: checking for a putenv() that copies the buffer" >&5 +echo "configure:8318: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8324,7 +8323,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8346,7 +8345,7 @@ else } EOF -if { (eval echo configure:8350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8386,17 +8385,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8390: checking for langinfo.h" >&5 +echo "configure:8389: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8399: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8420,21 +8419,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8424: checking whether to use nl_langinfo" >&5 +echo "configure:8423: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8467,17 +8466,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8471: checking for $ac_hdr" >&5 +echo "configure:8470: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8481: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8480: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8506,12 +8505,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8510: checking for $ac_func" >&5 +echo "configure:8509: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8563,17 +8562,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8567: checking for $ac_hdr" >&5 +echo "configure:8566: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8577: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8576: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8602,12 +8601,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8606: checking for $ac_func" >&5 +echo "configure:8605: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8657,12 +8656,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8661: checking for $ac_func" >&5 +echo "configure:8660: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8726,17 +8725,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8730: checking for $ac_hdr" >&5 +echo "configure:8729: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8739: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8764,14 +8763,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8768: checking if weak import is available" >&5 +echo "configure:8767: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8815,13 +8814,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8819: checking for fts" >&5 +echo "configure:8818: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8836,7 +8835,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8840: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8868,17 +8867,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8872: checking for $ac_hdr" >&5 +echo "configure:8871: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8882: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8881: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8908,17 +8907,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8912: checking for $ac_hdr" >&5 +echo "configure:8911: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8922: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8946,7 +8945,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8950: checking system version" >&5 +echo "configure:8949: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8977,7 +8976,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8981: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8980: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9040,7 +9039,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9044: checking how to package libraries" >&5 +echo "configure:9043: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 4e39e51..2662fec 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1039,7 +1039,6 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`' ECHO_VERSION='`echo ${VERSION}`' TCL_LIB_VERSIONS_OK=ok - CFLAGS="${CPPFLAGS} ${CFLAGS}" CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O if test "$GCC" = "yes" ; then @@ -1561,8 +1560,8 @@ dnl AC_CHECK_TOOL(AR, ar) CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" # To avoid discrepancies between what headers configure sees during - # preprocessing tests and compiling tests, add any -isysroot and - # -mmacosx-version-min flags present in CFLAGS to CPPFLAGS: + # preprocessing tests and compiling tests, move any -isysroot and + # -mmacosx-version-min flags from CFLAGS to CPPFLAGS: CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \ awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`" -- cgit v0.12 From 210ae3ab5e7407f380b3c56d9588135253d24041 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 26 Jan 2007 02:48:22 +0000 Subject: renamed SC_COMMANDS_PRE to SC_CONFIG_COMMANDS_PRE for parity with AC 2.5x --- unix/tcl.m4 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 2662fec..16cccd9 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1964,7 +1964,7 @@ dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so dnl # until the end of configure, as configure's compile and link tests use dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's dnl # preprocessing tests use only CPPFLAGS. - SC_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""]) + SC_CONFIG_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""]) # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop, @@ -3208,7 +3208,7 @@ AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [ ])]) #-------------------------------------------------------------------- -# SC_COMMANDS_PRE(CMDS) +# SC_CONFIG_COMMANDS_PRE(CMDS) # # Replacement for autoconf 2.5x AC_COMMANDS_PRE: # Commands to run right before config.status is @@ -3219,7 +3219,7 @@ AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [ # #-------------------------------------------------------------------- -AC_DEFUN([SC_COMMANDS_PRE], [ +AC_DEFUN([SC_CONFIG_COMMANDS_PRE], [ define([SC_OUTPUT_COMMANDS_PRE], defn([SC_OUTPUT_COMMANDS_PRE])[$1 ])]) AC_DEFUN([SC_OUTPUT_COMMANDS_PRE]) -- cgit v0.12 From 298ac186f88e10c0ce26d34206defceb6ffa6a4c Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 29 Jan 2007 16:50:33 +0000 Subject: * doc/fcopy.n: Typo fix. [Bug 1630627] --- ChangeLog | 4 ++++ doc/fcopy.n | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 908b794..e32dc63 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-01-29 Don Porter + + * doc/fcopy.n: Typo fix. [Bug 1630627] + 2007-01-25 Daniel Steffen * unix/tcl.m4: integrate CPPFLAGS into CFLAGS as late as possible diff --git a/doc/fcopy.n b/doc/fcopy.n index 30b8dfe..bb0f534 100644 --- a/doc/fcopy.n +++ b/doc/fcopy.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: fcopy.n,v 1.3 2001/05/19 16:59:04 andreas_kupries Exp $ +'\" RCS: @(#) $Id: fcopy.n,v 1.3.14.1 2007/01/29 16:50:35 dgp Exp $ '\" .so man.macros .TH fcopy n 8.0 Tcl "Tcl Built-In Commands" @@ -115,7 +115,7 @@ in the command callback proc CopyMore {in out chunk bytes {error {}}} { global total done incr total $bytes - if {([string length $error] != 0) || [eof $in] { + if {([string length $error] != 0) || [eof $in]} { set done $total close $in close $out -- cgit v0.12 From b0221dde4d16171e7d4b79b860bcaf6935a6ff47 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 30 Jan 2007 23:21:11 +0000 Subject: * win/Makefile.in (install-private-headers): added target --- ChangeLog | 6 +++++- win/Makefile.in | 24 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e32dc63..11b433e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,10 @@ +2007-01-30 Jeff Hobbs + + * win/Makefile.in (install-private-headers): added target + 2007-01-29 Don Porter - * doc/fcopy.n: Typo fix. [Bug 1630627] + * doc/fcopy.n: Typo fix. [Bug 1630627] 2007-01-25 Daniel Steffen diff --git a/win/Makefile.in b/win/Makefile.in index 6c796ed..25cbbf7 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.68.2.6 2006/04/05 20:50:46 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.68.2.7 2007/01/30 23:21:12 hobbs Exp $ VERSION = @TCL_VERSION@ @@ -56,6 +56,9 @@ SCRIPT_INSTALL_DIR = $(INSTALL_ROOT)$(TCL_LIBRARY) # Directory in which to install the include file tcl.h: INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir) +# Directory in which to (optionally) install the private tcl headers: +PRIVATE_INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir) + # Top-level directory in which to install manual entries: MAN_INSTALL_DIR = $(INSTALL_ROOT)$(mandir) @@ -541,6 +544,25 @@ install-libraries: libraries install-doc: doc +# Optional target to install private headers +install-private-headers: libraries + @for i in $(PRIVATE_INCLUDE_INSTALL_DIR); \ + do \ + if [ ! -d $$i ] ; then \ + echo "Making directory $$i"; \ + $(MKDIR) $$i; \ + chmod 755 $$i; \ + else true; \ + fi; \ + done; + @echo "Installing private header files to $(PRIVATE_INCLUDE_INSTALL_DIR)/"; + @for i in "$(GENERIC_DIR)/tclInt.h" "$(GENERIC_DIR)/tclIntDecls.h" \ + "$(GENERIC_DIR)/tclIntPlatDecls.h" "$(GENERIC_DIR)/tclPort.h" \ + "$(WIN_DIR)/tclWinPort.h" ; \ + do \ + $(COPY) "$$i" "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \ + done; + # Specifying TESTFLAGS on the command line is the standard way to pass # args to tcltest, ie: # % make test TESTFLAGS="-verbose bps -file fileName.test" -- cgit v0.12 From baa5c737e07f4e6a6b343b7fe731da0ae38fdacc Mon Sep 17 00:00:00 2001 From: das Date: Sun, 4 Feb 2007 02:51:34 +0000 Subject: * unix/configure.in: add caching to -pipe check. * unix/configure: autoconf-2.13 --- ChangeLog | 5 + unix/configure | 851 +++++++++++++++++++++++++++--------------------------- unix/configure.in | 21 +- 3 files changed, 444 insertions(+), 433 deletions(-) diff --git a/ChangeLog b/ChangeLog index 11b433e..075886b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-02-04 Daniel Steffen + + * unix/configure.in: add caching to -pipe check. + * unix/configure: autoconf-2.13 + 2007-01-30 Jeff Hobbs * win/Makefile.in (install-private-headers): added target diff --git a/unix/configure b/unix/configure index bfb6846..ccf6a61 100755 --- a/unix/configure +++ b/unix/configure @@ -1439,32 +1439,39 @@ done # It makes compiling go faster. (This is only a performance feature.) #------------------------------------------------------------------------ -if test -z "$no_pipe"; then -if test -n "$GCC"; then - echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1446: checking if the compiler understands -pipe" >&5 - OLDCC="$CC" - CC="$CC -pipe" - cat > conftest.$ac_ext <&6 +echo "configure:1445: checking if the compiler understands -pipe" >&5 +if eval "test \"`echo '$''{'tcl_cv_cc_pipe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -pipe" + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - echo "$ac_t""yes" 1>&6 + tcl_cv_cc_pipe=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - CC="$OLDCC" - echo "$ac_t""no" 1>&6 + tcl_cv_cc_pipe=no fi rm -f conftest* -fi + CFLAGS=$hold_cflags +fi + +echo "$ac_t""$tcl_cv_cc_pipe" 1>&6 + if test $tcl_cv_cc_pipe = yes; then + CFLAGS="$CFLAGS -pipe" + fi fi #------------------------------------------------------------------------ @@ -1508,7 +1515,7 @@ EOF EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1512: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:1519: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1516,7 +1523,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1555,7 +1562,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1559: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:1566: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1563,7 +1570,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1602,7 +1609,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1606: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:1613: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1610,7 +1617,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1647,7 +1654,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1651: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1658: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1655,7 +1662,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1689,7 +1696,7 @@ fi if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1693: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1700: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1697,7 +1704,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1748,12 +1755,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1752: checking for $ac_func" >&5 +echo "configure:1759: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1803,12 +1810,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1807: checking for $ac_func" >&5 +echo "configure:1814: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1861,7 +1868,7 @@ done fi # Do checking message here to not mess up interleaved configure output echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:1865: checking for building with threads" >&5 +echo "configure:1872: checking for building with threads" >&5 if test "${TCL_THREADS}" = 1; then cat >> confdefs.h <<\EOF #define TCL_THREADS 1 @@ -1892,12 +1899,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1896: checking for sin" >&5 +echo "configure:1903: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1941,7 +1948,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1945: checking for main in -lieee" >&5 +echo "configure:1952: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1949,14 +1956,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1983,7 +1990,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1987: checking for main in -linet" >&5 +echo "configure:1994: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1991,14 +1998,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2020,17 +2027,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:2024: checking for net/errno.h" >&5 +echo "configure:2031: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2041: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2075,12 +2082,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:2079: checking for connect" >&5 +echo "configure:2086: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -2125,12 +2132,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:2129: checking for setsockopt" >&5 +echo "configure:2136: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -2171,7 +2178,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:2175: checking for setsockopt in -lsocket" >&5 +echo "configure:2182: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2179,7 +2186,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2218,12 +2225,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:2222: checking for accept" >&5 +echo "configure:2229: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -2268,12 +2275,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:2272: checking for gethostbyname" >&5 +echo "configure:2279: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -2314,7 +2321,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:2318: checking for gethostbyname in -lnsl" >&5 +echo "configure:2325: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2322,7 +2329,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2369,7 +2376,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:2373: checking how to build libraries" >&5 +echo "configure:2380: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2408,7 +2415,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2412: checking for $ac_word" >&5 +echo "configure:2419: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2440,7 +2447,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2444: checking if 64bit support is requested" >&5 +echo "configure:2451: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -2454,7 +2461,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2458: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2465: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2475,7 +2482,7 @@ fi echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:2479: checking system version" >&5 +echo "configure:2486: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2510,7 +2517,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2514: checking for dlopen in -ldl" >&5 +echo "configure:2521: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2518,7 +2525,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2577,7 +2584,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2581: checking for $ac_word" >&5 +echo "configure:2588: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2692,7 +2699,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2696: checking for gettimeofday in -lbsd" >&5 +echo "configure:2703: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2700,7 +2707,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2754,7 +2761,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2758: checking for inet_ntoa in -lbind" >&5 +echo "configure:2765: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2762,7 +2769,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2839,7 +2846,7 @@ EOF SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2843: checking for shl_load in -ldld" >&5 +echo "configure:2850: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2847,7 +2854,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2926,7 +2933,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2930: checking for shl_load in -ldld" >&5 +echo "configure:2937: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2934,7 +2941,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3069,17 +3076,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3073: checking for dld.h" >&5 +echo "configure:3080: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3111,7 +3118,7 @@ fi fi if test $do64bit = yes; then echo $ac_n "checking if compiler accepts -m64 flag""... $ac_c" 1>&6 -echo "configure:3115: checking if compiler accepts -m64 flag" >&5 +echo "configure:3122: checking if compiler accepts -m64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_m64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3119,14 +3126,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -m64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_m64=yes else @@ -3179,17 +3186,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3183: checking for dld.h" >&5 +echo "configure:3190: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3257,17 +3264,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3261: checking for dlfcn.h" >&5 +echo "configure:3268: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3294,13 +3301,13 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3298: checking for ELF" >&5 +echo "configure:3305: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:3383: checking for ELF" >&5 +echo "configure:3390: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 case `arch` in ppc) echo $ac_n "checking if compiler accepts -arch ppc64 flag""... $ac_c" 1>&6 -echo "configure:3464: checking if compiler accepts -arch ppc64 flag" >&5 +echo "configure:3471: checking if compiler accepts -arch ppc64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_ppc64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3468,14 +3475,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_ppc64=yes else @@ -3495,7 +3502,7 @@ echo "$ac_t""$tcl_cv_cc_arch_ppc64" 1>&6 fi;; i386) echo $ac_n "checking if compiler accepts -arch x86_64 flag""... $ac_c" 1>&6 -echo "configure:3499: checking if compiler accepts -arch x86_64 flag" >&5 +echo "configure:3506: checking if compiler accepts -arch x86_64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_x86_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3503,14 +3510,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch x86_64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_x86_64=yes else @@ -3539,7 +3546,7 @@ echo "$ac_t""$tcl_cv_cc_arch_x86_64" 1>&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3543: checking if ld accepts -single_module flag" >&5 +echo "configure:3550: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3547,14 +3554,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3581,7 +3588,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3585: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3592: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3589,14 +3596,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3619,7 +3626,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3623: checking whether to use CoreFoundation" >&5 +echo "configure:3630: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3631,7 +3638,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3635: checking for CoreFoundation.framework" >&5 +echo "configure:3642: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3645,14 +3652,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3677,7 +3684,7 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3681: checking for 64-bit CoreFoundation" >&5 +echo "configure:3688: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3685,14 +3692,14 @@ else hold_cflags=$CFLAGS CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -4005,7 +4012,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4009: checking for ld accepts -Bexport flag" >&5 +echo "configure:4016: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4013,14 +4020,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4070,13 +4077,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4074: checking sys/exec.h" >&5 +echo "configure:4081: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4094,7 +4101,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4098: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4114,13 +4121,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4118: checking a.out.h" >&5 +echo "configure:4125: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4138,7 +4145,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4158,13 +4165,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4162: checking sys/exec_aout.h" >&5 +echo "configure:4169: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4182,7 +4189,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4186: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4335,7 +4342,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4339: checking for build with symbols" >&5 +echo "configure:4346: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4396,21 +4403,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4400: checking for required early compiler flags" >&5 +echo "configure:4407: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4421: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4418,7 +4425,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4426,7 +4433,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4453,14 +4460,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4471: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4468,7 +4475,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4476,7 +4483,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4480: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4503,14 +4510,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4514: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4521: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4518,7 +4525,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4526,7 +4533,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4557,7 +4564,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4561: checking for 64-bit integer type" >&5 +echo "configure:4568: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4565,14 +4572,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4583: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4586,7 +4593,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4606: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4620,13 +4627,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4624: checking for struct dirent64" >&5 +echo "configure:4631: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4634,7 +4641,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4645: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4655,13 +4662,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4659: checking for struct stat64" >&5 +echo "configure:4666: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4669,7 +4676,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4680: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4692,12 +4699,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4696: checking for $ac_func" >&5 +echo "configure:4703: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4745,13 +4752,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4749: checking for off64_t" >&5 +echo "configure:4756: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4759,7 +4766,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4791,14 +4798,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4795: checking whether byte ordering is bigendian" >&5 +echo "configure:4802: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4809,11 +4816,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4824,7 +4831,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4835: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4844,7 +4851,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4890,12 +4897,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4894: checking for $ac_func" >&5 +echo "configure:4901: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4952,12 +4959,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4956: checking for $ac_func" >&5 +echo "configure:4963: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5007,12 +5014,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5011: checking for strerror" >&5 +echo "configure:5018: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5059,12 +5066,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5063: checking for getwd" >&5 +echo "configure:5070: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5111,12 +5118,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5115: checking for wait3" >&5 +echo "configure:5122: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5163,12 +5170,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5167: checking for uname" >&5 +echo "configure:5174: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5222,12 +5229,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5226: checking for realpath" >&5 +echo "configure:5233: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5280,12 +5287,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5284: checking for getpwuid_r" >&5 +echo "configure:5291: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5324,13 +5331,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5328: checking for getpwuid_r with 5 args" >&5 +echo "configure:5335: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5347,7 +5354,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5351: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5358: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5368,13 +5375,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5372: checking for getpwuid_r with 4 args" >&5 +echo "configure:5379: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5391,7 +5398,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5395: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5424,12 +5431,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5428: checking for getpwnam_r" >&5 +echo "configure:5435: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5468,13 +5475,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5472: checking for getpwnam_r with 5 args" >&5 +echo "configure:5479: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5491,7 +5498,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5495: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5502: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5512,13 +5519,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5516: checking for getpwnam_r with 4 args" >&5 +echo "configure:5523: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5535,7 +5542,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5539: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5546: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5568,12 +5575,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5572: checking for getgrgid_r" >&5 +echo "configure:5579: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5612,13 +5619,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5616: checking for getgrgid_r with 5 args" >&5 +echo "configure:5623: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5635,7 +5642,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5656,13 +5663,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5660: checking for getgrgid_r with 4 args" >&5 +echo "configure:5667: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5679,7 +5686,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5690: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5712,12 +5719,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5716: checking for getgrnam_r" >&5 +echo "configure:5723: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5756,13 +5763,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5760: checking for getgrnam_r with 5 args" >&5 +echo "configure:5767: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5779,7 +5786,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5800,13 +5807,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5804: checking for getgrnam_r with 4 args" >&5 +echo "configure:5811: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5823,7 +5830,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5827: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5834: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5883,12 +5890,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5887: checking for gethostbyname_r" >&5 +echo "configure:5894: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5927,13 +5934,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5931: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5938: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5950,7 +5957,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5971,13 +5978,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5975: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5982: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5994,7 +6001,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5998: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6015,13 +6022,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6019: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6026: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6036,7 +6043,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6040: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6070,12 +6077,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6074: checking for gethostbyaddr_r" >&5 +echo "configure:6081: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6114,13 +6121,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6118: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6125: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6140,7 +6147,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6144: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6161,13 +6168,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6165: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6172: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6187,7 +6194,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6191: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6198: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6233,17 +6240,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6237: checking for $ac_hdr" >&5 +echo "configure:6244: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6270,7 +6277,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6274: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6281: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6279,7 +6286,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6294,7 +6301,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6311,7 +6318,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6325,7 +6332,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6343,7 +6350,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6358,7 +6365,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6376,7 +6383,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6393,7 +6400,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6411,7 +6418,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6427,7 +6434,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6445,7 +6452,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6462,7 +6469,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6505,20 +6512,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6509: checking for fd_set in sys/types" >&5 +echo "configure:6516: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6534,13 +6541,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6538: checking for fd_mask in sys/select" >&5 +echo "configure:6545: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6577,12 +6584,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6581: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6588: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6590,7 +6597,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6601: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6615,17 +6622,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6619: checking for $ac_hdr" >&5 +echo "configure:6626: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6629: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6652,12 +6659,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6656: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6663: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6666,7 +6673,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6687,12 +6694,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6691: checking for tm_zone in struct tm" >&5 +echo "configure:6698: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6700,7 +6707,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6704: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6720,12 +6727,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6724: checking for tzname" >&5 +echo "configure:6731: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6735,7 +6742,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6760,12 +6767,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6764: checking for $ac_func" >&5 +echo "configure:6771: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6814,20 +6821,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6818: checking tm_tzadj in struct tm" >&5 +echo "configure:6825: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6838: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6848,20 +6855,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6852: checking tm_gmtoff in struct tm" >&5 +echo "configure:6859: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6865: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6886,13 +6893,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6890: checking long timezone variable" >&5 +echo "configure:6897: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6901,7 +6908,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6912: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6924,13 +6931,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6928: checking time_t timezone variable" >&5 +echo "configure:6935: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6939,7 +6946,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6943: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6950: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6966,12 +6973,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6970: checking for st_blksize in struct stat" >&5 +echo "configure:6977: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6979,7 +6986,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7000,12 +7007,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:7004: checking for fstatfs" >&5 +echo "configure:7011: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7057,7 +7064,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7061: checking for 8-bit clean memcmp" >&5 +echo "configure:7068: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7065,7 +7072,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7099,12 +7106,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7103: checking for memmove" >&5 +echo "configure:7110: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7160,7 +7167,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7164: checking proper strstr implementation" >&5 +echo "configure:7171: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7169,7 +7176,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7205,12 +7212,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7209: checking for strtoul" >&5 +echo "configure:7216: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7255,7 +7262,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7259: checking proper strtoul implementation" >&5 +echo "configure:7266: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7264,7 +7271,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7309,12 +7316,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7313: checking for strtod" >&5 +echo "configure:7320: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7359,7 +7366,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7363: checking proper strtod implementation" >&5 +echo "configure:7370: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7368,7 +7375,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7416,12 +7423,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7420: checking for strtod" >&5 +echo "configure:7427: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7466,7 +7473,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7470: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7477: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7475,7 +7482,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7529,12 +7536,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7533: checking for ANSI C header files" >&5 +echo "configure:7540: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7542,7 +7549,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7546: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7559,7 +7566,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7577,7 +7584,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7598,7 +7605,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7609,7 +7616,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7633,12 +7640,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7637: checking for mode_t" >&5 +echo "configure:7644: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7666,12 +7673,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7670: checking for pid_t" >&5 +echo "configure:7677: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7699,12 +7706,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7703: checking for size_t" >&5 +echo "configure:7710: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7732,12 +7739,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7736: checking for uid_t in sys/types.h" >&5 +echo "configure:7743: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7767,13 +7774,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7771: checking for socklen_t" >&5 +echo "configure:7778: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7812,12 +7819,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7816: checking for opendir" >&5 +echo "configure:7823: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7873,13 +7880,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7877: checking union wait" >&5 +echo "configure:7884: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7891,7 +7898,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7918,12 +7925,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7922: checking for strncasecmp" >&5 +echo "configure:7929: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7968,7 +7975,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7972: checking for strncasecmp in -lsocket" >&5 +echo "configure:7979: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7976,7 +7983,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8011,7 +8018,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8015: checking for strncasecmp in -linet" >&5 +echo "configure:8022: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8019,7 +8026,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8068,12 +8075,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8072: checking for BSDgettimeofday" >&5 +echo "configure:8079: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8118,12 +8125,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8122: checking for gettimeofday" >&5 +echo "configure:8129: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8173,13 +8180,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8177: checking for gettimeofday declaration" >&5 +echo "configure:8184: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8210,14 +8217,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8214: checking whether char is unsigned" >&5 +echo "configure:8221: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8273,13 +8280,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8277: checking signed char declarations" >&5 +echo "configure:8284: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8300: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8314,7 +8321,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8318: checking for a putenv() that copies the buffer" >&5 +echo "configure:8325: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8323,7 +8330,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8345,7 +8352,7 @@ else } EOF -if { (eval echo configure:8349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8385,17 +8392,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8389: checking for langinfo.h" >&5 +echo "configure:8396: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8399: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8419,21 +8426,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8423: checking whether to use nl_langinfo" >&5 +echo "configure:8430: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8444: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8466,17 +8473,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8470: checking for $ac_hdr" >&5 +echo "configure:8477: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8480: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8487: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8505,12 +8512,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8509: checking for $ac_func" >&5 +echo "configure:8516: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8562,17 +8569,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8566: checking for $ac_hdr" >&5 +echo "configure:8573: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8576: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8583: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8601,12 +8608,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8605: checking for $ac_func" >&5 +echo "configure:8612: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8656,12 +8663,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8660: checking for $ac_func" >&5 +echo "configure:8667: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8725,17 +8732,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8729: checking for $ac_hdr" >&5 +echo "configure:8736: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8739: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8763,14 +8770,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8767: checking if weak import is available" >&5 +echo "configure:8774: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8814,13 +8821,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8818: checking for fts" >&5 +echo "configure:8825: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8835,7 +8842,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8867,17 +8874,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8871: checking for $ac_hdr" >&5 +echo "configure:8878: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8881: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8907,17 +8914,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8911: checking for $ac_hdr" >&5 +echo "configure:8918: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8945,7 +8952,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8949: checking system version" >&5 +echo "configure:8956: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8976,7 +8983,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8980: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8987: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9039,7 +9046,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9043: checking how to package libraries" >&5 +echo "configure:9050: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/configure.in b/unix/configure.in index 6f6eead..149a84d 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.33 2007/01/25 02:06:38 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.34 2007/02/04 02:51:37 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -62,16 +62,15 @@ SC_MISSING_POSIX_HEADERS # It makes compiling go faster. (This is only a performance feature.) #------------------------------------------------------------------------ -if test -z "$no_pipe"; then -if test -n "$GCC"; then - AC_MSG_CHECKING([if the compiler understands -pipe]) - OLDCC="$CC" - CC="$CC -pipe" - AC_TRY_COMPILE(,, - AC_MSG_RESULT([yes]), - CC="$OLDCC" - AC_MSG_RESULT([no])) -fi +if test -z "$no_pipe" && test -n "$GCC"; then + AC_CACHE_CHECK([if the compiler understands -pipe], + tcl_cv_cc_pipe, [ + hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -pipe" + AC_TRY_COMPILE(,, tcl_cv_cc_pipe=yes, tcl_cv_cc_pipe=no) + CFLAGS=$hold_cflags]) + if test $tcl_cv_cc_pipe = yes; then + CFLAGS="$CFLAGS -pipe" + fi fi #------------------------------------------------------------------------ -- cgit v0.12 From 8dc5bc8beb82143f5ea0bc0bbdd609a699cf46c6 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 12 Feb 2007 19:25:39 +0000 Subject: * generic/tclEncoding.c (EscapeFromUtfProc): Applied patch supplied by Mo DeJong to fix [Bug 1516109]. Backport from Tcl 8.5. Mo's description: Clear the TCL_ENCODING_END flag when end bytes are written. This fix keep this method from writing escape bytes for an encoding like iso2022-jp multiple times when the escape byte overlap with the end of the IO buffer. * tests/io.test: Add test case for escape byte overlap case. --- ChangeLog | 10 +++++++++ generic/tclEncoding.c | 18 ++++++++++++--- tests/io.test | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 86 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 075886b..daac879 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2007-02-12 Andreas Kupries + + * generic/tclEncoding.c (EscapeFromUtfProc): Applied patch + supplied by Mo DeJong to fix [Bug 1516109]. Backport from Tcl + 8.5. Mo's description: Clear the TCL_ENCODING_END flag when end + bytes are written. This fix keep this method from writing escape + bytes for an encoding like iso2022-jp multiple times when the + escape byte overlap with the end of the IO buffer. + * tests/io.test: Add test case for escape byte overlap case. + 2007-02-04 Daniel Steffen * unix/configure.in: add caching to -pipe check. diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 50244b3..1a3faa3 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.13 2006/10/06 04:55:07 hobbs Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.14 2007/02/12 19:25:42 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2834,7 +2834,7 @@ EscapeFromUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, if (flags & TCL_ENCODING_START) { state = 0; - if (dst + dataPtr->initLen > dstEnd) { + if ((dst + dataPtr->initLen) > dstEnd) { *srcReadPtr = 0; *dstWrotePtr = 0; return TCL_CONVERT_NOSPACE; @@ -2941,7 +2941,18 @@ EscapeFromUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, if ((result == TCL_OK) && (flags & TCL_ENCODING_END)) { unsigned int len = dataPtr->subTables[0].sequenceLen; - if (dst + dataPtr->finalLen + (state?len:0) > dstEnd) { + /* + * [Bug 1516109]. + * Certain encodings like iso2022-jp need to write + * an escape sequence after all characters have + * been converted. This logic checks that enough + * room is available in the buffer for the escape bytes. + * The TCL_ENCODING_END flag is cleared after a final + * escape sequence has been added to the buffer so + * that another call to this method does not attempt + * to append escape bytes a second time. + */ + if ((dst + dataPtr->finalLen + (state?len:0)) > dstEnd) { result = TCL_CONVERT_NOSPACE; } else { if (state) { @@ -2952,6 +2963,7 @@ EscapeFromUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, memcpy((VOID *) dst, (VOID *) dataPtr->final, (size_t) dataPtr->finalLen); dst += dataPtr->finalLen; + state &= ~TCL_ENCODING_END; } } diff --git a/tests/io.test b/tests/io.test index 4e782f7..85fe437 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.11 2006/03/16 19:12:32 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.12 2007/02/12 19:25:42 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -117,6 +117,66 @@ test io-1.8 {Tcl_WriteChars: WriteChars} { contents $path(test2) } " \x1b\$B\$O\x1b(B" +test io-1.9 {Tcl_WriteChars: WriteChars} { + # When closing a channel with an encoding that appends + # escape bytes, check for the case where the escape + # bytes overflow the current IO buffer. The bytes + # should be moved into a new buffer. + + set data "1234567890 [format %c 12399]" + + set sizes [list] + + # With default buffer size + set f [open $path(test2) w] + fconfigure $f -encoding iso2022-jp + puts -nonewline $f $data + close $f + lappend sizes [file size $path(test2)] + + # With buffer size equal to the length + # of the data, the escape bytes would + # go into the next buffer. + + set f [open $path(test2) w] + fconfigure $f -encoding iso2022-jp -buffersize 16 + puts -nonewline $f $data + close $f + lappend sizes [file size $path(test2)] + + # With buffer size that is large enough + # to hold 1 byte of escaped data, but + # not all 3. This should not write + # the escape bytes to the first buffer + # and then again to the second buffer. + + set f [open $path(test2) w] + fconfigure $f -encoding iso2022-jp -buffersize 17 + puts -nonewline $f $data + close $f + lappend sizes [file size $path(test2)] + + # With buffer size that can hold 2 out of + # 3 bytes of escaped data. + + set f [open $path(test2) w] + fconfigure $f -encoding iso2022-jp -buffersize 18 + puts -nonewline $f $data + close $f + lappend sizes [file size $path(test2)] + + # With buffer size that can hold all the + # data and escape bytes. + + set f [open $path(test2) w] + fconfigure $f -encoding iso2022-jp -buffersize 19 + puts -nonewline $f $data + close $f + lappend sizes [file size $path(test2)] + + set sizes +} {19 19 19 19 19} + test io-2.1 {WriteBytes} { # loop until all bytes are written -- cgit v0.12 From ad885f8be5199baa5f321468fa6b6c0a3d1b8055 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 19 Feb 2007 23:49:05 +0000 Subject: (Tcl_FSEvalFile): safe incr of objPtr ref --- generic/tclIOUtil.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index bda1cab..a587794 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.33 2006/11/28 22:20:01 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.34 2007/02/19 23:49:05 hobbs Exp $ */ #include "tclInt.h" @@ -1724,6 +1724,7 @@ Tcl_FSEvalFile(interp, pathPtr) result = TCL_ERROR; objPtr = Tcl_NewObj(); + Tcl_IncrRefCount(objPtr); if (Tcl_FSStat(pathPtr, &statBuf) == -1) { Tcl_SetErrno(errno); -- cgit v0.12 From 97978900be292e6ee29c76072cf5e5f5d61de68b Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 19 Feb 2007 23:49:33 +0000 Subject: * unix/tcl.m4: use SHLIB_SUFFIX=".so" on HP-UX ia64 arch. * unix/configure: autoconf-2.13 --- ChangeLog | 7 + unix/configure | 690 +++++++++++++++++++++++++++++---------------------------- unix/tcl.m4 | 6 +- 3 files changed, 359 insertions(+), 344 deletions(-) diff --git a/ChangeLog b/ChangeLog index daac879..3daba2c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-02-19 Jeff Hobbs + + * generic/tclIOUtil.c (Tcl_FSEvalFile): safe incr of objPtr ref. + + * unix/tcl.m4: use SHLIB_SUFFIX=".so" on HP-UX ia64 arch. + * unix/configure: autoconf-2.13 + 2007-02-12 Andreas Kupries * generic/tclEncoding.c (EscapeFromUtfProc): Applied patch diff --git a/unix/configure b/unix/configure index ccf6a61..317eb2a 100755 --- a/unix/configure +++ b/unix/configure @@ -2844,9 +2844,13 @@ EOF # Use the XOPEN network library LIBS="$LIBS -lxnet" # Use the XOPEN network library - SHLIB_SUFFIX=".sl" + if test "`uname -m`" = "ia64" ; then + SHLIB_SUFFIX=".so" + else + SHLIB_SUFFIX=".sl" + fi echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2850: checking for shl_load in -ldld" >&5 +echo "configure:2854: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2854,7 +2858,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2933,7 +2937,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2937: checking for shl_load in -ldld" >&5 +echo "configure:2941: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2941,7 +2945,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3076,17 +3080,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3080: checking for dld.h" >&5 +echo "configure:3084: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3094: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3118,7 +3122,7 @@ fi fi if test $do64bit = yes; then echo $ac_n "checking if compiler accepts -m64 flag""... $ac_c" 1>&6 -echo "configure:3122: checking if compiler accepts -m64 flag" >&5 +echo "configure:3126: checking if compiler accepts -m64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_m64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3126,14 +3130,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -m64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_m64=yes else @@ -3186,17 +3190,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3190: checking for dld.h" >&5 +echo "configure:3194: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3264,17 +3268,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3268: checking for dlfcn.h" >&5 +echo "configure:3272: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3301,13 +3305,13 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3305: checking for ELF" >&5 +echo "configure:3309: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:3390: checking for ELF" >&5 +echo "configure:3394: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 case `arch` in ppc) echo $ac_n "checking if compiler accepts -arch ppc64 flag""... $ac_c" 1>&6 -echo "configure:3471: checking if compiler accepts -arch ppc64 flag" >&5 +echo "configure:3475: checking if compiler accepts -arch ppc64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_ppc64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3475,14 +3479,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_ppc64=yes else @@ -3502,7 +3506,7 @@ echo "$ac_t""$tcl_cv_cc_arch_ppc64" 1>&6 fi;; i386) echo $ac_n "checking if compiler accepts -arch x86_64 flag""... $ac_c" 1>&6 -echo "configure:3506: checking if compiler accepts -arch x86_64 flag" >&5 +echo "configure:3510: checking if compiler accepts -arch x86_64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_x86_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3510,14 +3514,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch x86_64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_x86_64=yes else @@ -3546,7 +3550,7 @@ echo "$ac_t""$tcl_cv_cc_arch_x86_64" 1>&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3550: checking if ld accepts -single_module flag" >&5 +echo "configure:3554: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3554,14 +3558,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3588,7 +3592,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3592: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3596: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3596,14 +3600,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3626,7 +3630,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3630: checking whether to use CoreFoundation" >&5 +echo "configure:3634: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3638,7 +3642,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3642: checking for CoreFoundation.framework" >&5 +echo "configure:3646: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3652,14 +3656,14 @@ else fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3684,7 +3688,7 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3688: checking for 64-bit CoreFoundation" >&5 +echo "configure:3692: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3692,14 +3696,14 @@ else hold_cflags=$CFLAGS CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -4012,7 +4016,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4016: checking for ld accepts -Bexport flag" >&5 +echo "configure:4020: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4020,14 +4024,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4077,13 +4081,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4081: checking sys/exec.h" >&5 +echo "configure:4085: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4101,7 +4105,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4109: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4121,13 +4125,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4125: checking a.out.h" >&5 +echo "configure:4129: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4145,7 +4149,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4153: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4165,13 +4169,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4169: checking sys/exec_aout.h" >&5 +echo "configure:4173: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4189,7 +4193,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4342,7 +4346,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4346: checking for build with symbols" >&5 +echo "configure:4350: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4403,21 +4407,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4407: checking for required early compiler flags" >&5 +echo "configure:4411: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4421: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4425,7 +4429,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4433,7 +4437,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4460,14 +4464,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4471: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4475,7 +4479,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4483,7 +4487,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4510,14 +4514,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4521: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4525: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4525,7 +4529,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4533,7 +4537,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4541: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4564,7 +4568,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4568: checking for 64-bit integer type" >&5 +echo "configure:4572: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4572,14 +4576,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4587: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4593,7 +4597,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4627,13 +4631,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4631: checking for struct dirent64" >&5 +echo "configure:4635: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4641,7 +4645,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4645: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4662,13 +4666,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4666: checking for struct stat64" >&5 +echo "configure:4670: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4676,7 +4680,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4680: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4699,12 +4703,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4703: checking for $ac_func" >&5 +echo "configure:4707: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4752,13 +4756,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4756: checking for off64_t" >&5 +echo "configure:4760: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4766,7 +4770,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4798,14 +4802,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4802: checking whether byte ordering is bigendian" >&5 +echo "configure:4806: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4816,11 +4820,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4831,7 +4835,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4835: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4839: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4851,7 +4855,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4897,12 +4901,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4901: checking for $ac_func" >&5 +echo "configure:4905: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4959,12 +4963,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4963: checking for $ac_func" >&5 +echo "configure:4967: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5014,12 +5018,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5018: checking for strerror" >&5 +echo "configure:5022: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5066,12 +5070,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5070: checking for getwd" >&5 +echo "configure:5074: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5118,12 +5122,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5122: checking for wait3" >&5 +echo "configure:5126: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5170,12 +5174,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5174: checking for uname" >&5 +echo "configure:5178: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5229,12 +5233,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5233: checking for realpath" >&5 +echo "configure:5237: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5287,12 +5291,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5291: checking for getpwuid_r" >&5 +echo "configure:5295: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5331,13 +5335,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5335: checking for getpwuid_r with 5 args" >&5 +echo "configure:5339: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5354,7 +5358,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5358: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5362: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5375,13 +5379,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5379: checking for getpwuid_r with 4 args" >&5 +echo "configure:5383: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5398,7 +5402,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5431,12 +5435,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5435: checking for getpwnam_r" >&5 +echo "configure:5439: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5475,13 +5479,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5479: checking for getpwnam_r with 5 args" >&5 +echo "configure:5483: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5498,7 +5502,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5502: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5519,13 +5523,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5523: checking for getpwnam_r with 4 args" >&5 +echo "configure:5527: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5542,7 +5546,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5546: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5575,12 +5579,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5579: checking for getgrgid_r" >&5 +echo "configure:5583: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5619,13 +5623,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5623: checking for getgrgid_r with 5 args" >&5 +echo "configure:5627: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5642,7 +5646,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5663,13 +5667,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5667: checking for getgrgid_r with 4 args" >&5 +echo "configure:5671: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5686,7 +5690,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5690: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5719,12 +5723,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5723: checking for getgrnam_r" >&5 +echo "configure:5727: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5763,13 +5767,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5767: checking for getgrnam_r with 5 args" >&5 +echo "configure:5771: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5786,7 +5790,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5794: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5807,13 +5811,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5811: checking for getgrnam_r with 4 args" >&5 +echo "configure:5815: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5830,7 +5834,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5834: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5838: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5890,12 +5894,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5894: checking for gethostbyname_r" >&5 +echo "configure:5898: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5934,13 +5938,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5938: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5942: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5957,7 +5961,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5978,13 +5982,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5982: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5986: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6001,7 +6005,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6022,13 +6026,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6026: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6030: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6043,7 +6047,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6077,12 +6081,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6081: checking for gethostbyaddr_r" >&5 +echo "configure:6085: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6121,13 +6125,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6125: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6129: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6147,7 +6151,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6155: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6168,13 +6172,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6172: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6176: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6194,7 +6198,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6198: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6240,17 +6244,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6244: checking for $ac_hdr" >&5 +echo "configure:6248: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6277,7 +6281,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6281: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6285: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6286,7 +6290,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6301,7 +6305,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6318,7 +6322,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6332,7 +6336,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6350,7 +6354,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6365,7 +6369,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6383,7 +6387,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6400,7 +6404,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6418,7 +6422,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6434,7 +6438,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6452,7 +6456,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6469,7 +6473,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6512,20 +6516,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6516: checking for fd_set in sys/types" >&5 +echo "configure:6520: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6541,13 +6545,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6545: checking for fd_mask in sys/select" >&5 +echo "configure:6549: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6584,12 +6588,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6588: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6592: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6597,7 +6601,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6601: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6622,17 +6626,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6626: checking for $ac_hdr" >&5 +echo "configure:6630: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6659,12 +6663,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6663: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6667: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6673,7 +6677,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6694,12 +6698,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6698: checking for tm_zone in struct tm" >&5 +echo "configure:6702: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6707,7 +6711,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6727,12 +6731,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6731: checking for tzname" >&5 +echo "configure:6735: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6742,7 +6746,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6767,12 +6771,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6771: checking for $ac_func" >&5 +echo "configure:6775: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6821,20 +6825,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6825: checking tm_tzadj in struct tm" >&5 +echo "configure:6829: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6838: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6855,20 +6859,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6859: checking tm_gmtoff in struct tm" >&5 +echo "configure:6863: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6893,13 +6897,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6897: checking long timezone variable" >&5 +echo "configure:6901: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6908,7 +6912,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6912: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6916: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6931,13 +6935,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6935: checking time_t timezone variable" >&5 +echo "configure:6939: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6946,7 +6950,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6950: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6973,12 +6977,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6977: checking for st_blksize in struct stat" >&5 +echo "configure:6981: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6986,7 +6990,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7007,12 +7011,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:7011: checking for fstatfs" >&5 +echo "configure:7015: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7043: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7064,7 +7068,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7068: checking for 8-bit clean memcmp" >&5 +echo "configure:7072: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7072,7 +7076,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7106,12 +7110,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7110: checking for memmove" >&5 +echo "configure:7114: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7167,7 +7171,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7171: checking proper strstr implementation" >&5 +echo "configure:7175: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7176,7 +7180,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7212,12 +7216,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7216: checking for strtoul" >&5 +echo "configure:7220: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7262,7 +7266,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7266: checking proper strtoul implementation" >&5 +echo "configure:7270: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7271,7 +7275,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7316,12 +7320,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7320: checking for strtod" >&5 +echo "configure:7324: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7366,7 +7370,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7370: checking proper strtod implementation" >&5 +echo "configure:7374: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7375,7 +7379,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7423,12 +7427,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7427: checking for strtod" >&5 +echo "configure:7431: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7473,7 +7477,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7477: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7481: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7482,7 +7486,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7536,12 +7540,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7540: checking for ANSI C header files" >&5 +echo "configure:7544: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7549,7 +7553,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7566,7 +7570,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7584,7 +7588,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7605,7 +7609,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7616,7 +7620,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7640,12 +7644,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7644: checking for mode_t" >&5 +echo "configure:7648: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7673,12 +7677,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7677: checking for pid_t" >&5 +echo "configure:7681: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7706,12 +7710,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7710: checking for size_t" >&5 +echo "configure:7714: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7739,12 +7743,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7743: checking for uid_t in sys/types.h" >&5 +echo "configure:7747: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7774,13 +7778,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7778: checking for socklen_t" >&5 +echo "configure:7782: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7819,12 +7823,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7823: checking for opendir" >&5 +echo "configure:7827: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7880,13 +7884,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7884: checking union wait" >&5 +echo "configure:7888: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7898,7 +7902,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7925,12 +7929,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7929: checking for strncasecmp" >&5 +echo "configure:7933: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7975,7 +7979,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7979: checking for strncasecmp in -lsocket" >&5 +echo "configure:7983: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7983,7 +7987,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8018,7 +8022,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8022: checking for strncasecmp in -linet" >&5 +echo "configure:8026: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8026,7 +8030,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8075,12 +8079,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8079: checking for BSDgettimeofday" >&5 +echo "configure:8083: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8125,12 +8129,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8129: checking for gettimeofday" >&5 +echo "configure:8133: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8180,13 +8184,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8184: checking for gettimeofday declaration" >&5 +echo "configure:8188: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8217,14 +8221,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8221: checking whether char is unsigned" >&5 +echo "configure:8225: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8280,13 +8284,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8284: checking signed char declarations" >&5 +echo "configure:8288: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8304: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8321,7 +8325,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8325: checking for a putenv() that copies the buffer" >&5 +echo "configure:8329: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8330,7 +8334,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8352,7 +8356,7 @@ else } EOF -if { (eval echo configure:8356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8392,17 +8396,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8396: checking for langinfo.h" >&5 +echo "configure:8400: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8410: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8426,21 +8430,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8430: checking whether to use nl_langinfo" >&5 +echo "configure:8434: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8444: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8473,17 +8477,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8477: checking for $ac_hdr" >&5 +echo "configure:8481: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8487: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8491: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8512,12 +8516,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8516: checking for $ac_func" >&5 +echo "configure:8520: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8569,17 +8573,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8573: checking for $ac_hdr" >&5 +echo "configure:8577: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8583: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8608,12 +8612,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8612: checking for $ac_func" >&5 +echo "configure:8616: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8663,12 +8667,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8667: checking for $ac_func" >&5 +echo "configure:8671: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8732,17 +8736,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8736: checking for $ac_hdr" >&5 +echo "configure:8740: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8750: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8770,14 +8774,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8774: checking if weak import is available" >&5 +echo "configure:8778: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8821,13 +8825,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8825: checking for fts" >&5 +echo "configure:8829: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8842,7 +8846,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8874,17 +8878,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8878: checking for $ac_hdr" >&5 +echo "configure:8882: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8914,17 +8918,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8918: checking for $ac_hdr" >&5 +echo "configure:8922: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8952,7 +8956,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8956: checking system version" >&5 +echo "configure:8960: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8983,7 +8987,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8987: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8991: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9046,7 +9050,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9050: checking how to package libraries" >&5 +echo "configure:9054: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 16cccd9..24a0899 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1198,7 +1198,11 @@ dnl AC_CHECK_TOOL(AR, ar) AC_DEFINE(_XOPEN_SOURCE_EXTENDED) # Use the XOPEN network library LIBS="$LIBS -lxnet" # Use the XOPEN network library - SHLIB_SUFFIX=".sl" + if test "`uname -m`" = "ia64" ; then + SHLIB_SUFFIX=".so" + else + SHLIB_SUFFIX=".sl" + fi AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no) if test "$tcl_ok" = yes; then SHLIB_CFLAGS="+z" -- cgit v0.12 From 037fc9fc3a7078786cd2a4a034a4f9f10ff396f6 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 20 Feb 2007 17:53:18 +0000 Subject: * doc/tcltest.n: Typo fix. [Bug 1663539] --- ChangeLog | 4 ++++ doc/tcltest.n | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3daba2c..62ccccc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-02-20 Don Porter + + * doc/tcltest.n: Typo fix. [Bug 1663539] + 2007-02-19 Jeff Hobbs * generic/tclIOUtil.c (Tcl_FSEvalFile): safe incr of objPtr ref. diff --git a/doc/tcltest.n b/doc/tcltest.n index 64b3dd4..599e31f 100644 --- a/doc/tcltest.n +++ b/doc/tcltest.n @@ -8,7 +8,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tcltest.n,v 1.38.2.5 2004/10/27 14:43:13 dkf Exp $ +'\" RCS: @(#) $Id: tcltest.n,v 1.38.2.6 2007/02/20 17:53:18 dgp Exp $ '\" .so man.macros .TH "tcltest" n 2.2 tcltest "Tcl Bundled Packages" @@ -1055,7 +1055,7 @@ depends on usage of ::puts in your application code. Output is intercepted by redefining the ::puts command while the defined test script is being run. Errors thrown by C procedures or printed directly from C applications will not be caught by the test command. -Therefore, usage of the \fB-output\fR and \fB-errorOuput\fR +Therefore, usage of the \fB-output\fR and \fB-errorOutput\fR options to [\fBtest\fR] is useful only for pure Tcl applications that use [\fB::puts\fR] to produce output. -- cgit v0.12 From c7b7f8149ea5548559856d3e5a2d63af03d863d8 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 22 Feb 2007 19:49:06 +0000 Subject: * tests/pkg.test: Added tests for the case of an alpha package satisfying a require for the regular package, demonstrating a corner case specified in TIP#280. More notes in the comments to the test. --- ChangeLog | 7 +++++++ tests/pkg.test | 18 +++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 62ccccc..ff709a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-02-22 Andreas Kupries + + * tests/pkg.test: Added tests for the case of an alpha package + satisfying a require for the regular package, demonstrating a + corner case specified in TIP#280. More notes in the comments to + the test. + 2007-02-20 Don Porter * doc/tcltest.n: Typo fix. [Bug 1663539] diff --git a/tests/pkg.test b/tests/pkg.test index cde4151..627c08e 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.7 2006/12/05 17:44:44 andreas_kupries Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.8 2007/02/22 19:49:07 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1013,8 +1013,24 @@ test pkg-7.18 {Tcl_PackageCmd procedure, "present" option} { } {1 {wrong # args: should be "package present ?-exact? package ?version?"}} +# Note: It is correct that the result of the very first test, +# i.e. "5.0 5.01" is 1, i.e. that version 5.0a1 satisifes a 5.0 +# requirement. + +# The requirement "5.0" internally translates first to "5.0-6", and +# then to its final form of "5.0a0-6a0". These translations are +# explicitly specified by the TIP (Search for "padded/extended +# internally with 'a0'"). This was done intentionally for exactly the +# tested case, that an alpha package can satisfy a requirement for the +# regular package. An example would be a package FOO requiring Tcl 8.X +# for its operation. It can be used with Tcl 8.Xa0. Without our +# translation that would not be possible. + set n 0 foreach {r p vs vc} { + 5.0 5.0a0 1 1 + 5.0a0 5.0 1 -1 + 8.5a0 8.5a5 1 -1 8.5a0 8.5b1 1 -1 8.5a0 8.5.1 1 -1 -- cgit v0.12 From f689731fd0b26fa1d3899f3b0e3ee46054bb0a3f Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 22 Feb 2007 20:11:17 +0000 Subject: Typo --- tests/pkg.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pkg.test b/tests/pkg.test index 627c08e..25020b8 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.8 2007/02/22 19:49:07 andreas_kupries Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.9 2007/02/22 20:11:17 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1014,7 +1014,7 @@ test pkg-7.18 {Tcl_PackageCmd procedure, "present" option} { # Note: It is correct that the result of the very first test, -# i.e. "5.0 5.01" is 1, i.e. that version 5.0a1 satisifes a 5.0 +# i.e. "5.0 5.01" is 1, i.e. that version 5.0a1 satisfies a 5.0 # requirement. # The requirement "5.0" internally translates first to "5.0-6", and -- cgit v0.12 From 4ced9366453c96f6237ff479dff2fc80bd0e18d9 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 22 Feb 2007 20:25:29 +0000 Subject: Typo, more. --- tests/pkg.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pkg.test b/tests/pkg.test index 25020b8..27902a9 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.9 2007/02/22 20:11:17 andreas_kupries Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.10 2007/02/22 20:25:29 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1014,7 +1014,7 @@ test pkg-7.18 {Tcl_PackageCmd procedure, "present" option} { # Note: It is correct that the result of the very first test, -# i.e. "5.0 5.01" is 1, i.e. that version 5.0a1 satisfies a 5.0 +# i.e. "5.0 5.0a0" is 1, i.e. that version 5.0a0 satisfies a 5.0 # requirement. # The requirement "5.0" internally translates first to "5.0-6", and -- cgit v0.12 From 44ebec67f366b1da8cc1609b93847b2c6a590749 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 1 Mar 2007 10:16:09 +0000 Subject: Fix [Bug 1671138] --- ChangeLog | 6 ++++++ generic/tclCompCmds.c | 14 +++++++++++++- tests/foreach.test | 12 +++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ff709a9..2e8a2d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-03-01 Donal K. Fellows + + * generic/tclCompCmds.c (TclCompileForeachCmd): Prevent an unexpected + * tests/foreach.test (foreach-9.1): infinite loop when the + variable list is empty and the foreach is compiled. [Bug 1671138] + 2007-02-22 Andreas Kupries * tests/pkg.test: Added tests for the case of an alpha package diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 0737ab2..9c20bac 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.4 2006/11/28 22:20:00 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.5 2007/03/01 10:16:10 dkf Exp $ */ #include "tclInt.h" @@ -894,6 +894,18 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) goto done; } numVars = varcList[loopIndex]; + + /* + * If the variable list is empty, we can enter an infinite + * loop when the interpreted version would not. Take care to + * ensure this does not happen. [Bug 1671138] + */ + + if (numVars == 0) { + code = TCL_ERROR; + goto done; + } + for (j = 0; j < numVars; j++) { CONST char *varName = varvList[loopIndex][j]; if (!TclIsLocalScalar(varName, (int) strlen(varName))) { diff --git a/tests/foreach.test b/tests/foreach.test index 0ab6340..ee90ce2 100644 --- a/tests/foreach.test +++ b/tests/foreach.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: foreach.test,v 1.8.8.1 2003/03/27 13:11:01 dkf Exp $ +# RCS: @(#) $Id: foreach.test,v 1.8.8.2 2007/03/01 10:16:10 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -233,6 +233,16 @@ test foreach-7.1 {delayed substitution of body} { foo } {0} +# [Bug 1671138]; infinite loop with empty var list in bytecompiled version +test foreach-9.1 {compiled empty var list} { + proc foo {} { + foreach {} x { + error "reached body" + } + } + list [catch { foo } msg] $msg +} {1 {foreach varlist is empty}} + # cleanup catch {unset a} catch {unset x} -- cgit v0.12 From 4ab3f93af3cf176577da5cfc5f891c182a93ac99 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 1 Mar 2007 16:06:19 +0000 Subject: D'oh! Used an 8.5-ism... --- generic/tclCompCmds.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 9c20bac..d2cd4bb 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.5 2007/03/01 10:16:10 dkf Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.6 2007/03/01 16:06:19 dkf Exp $ */ #include "tclInt.h" @@ -902,7 +902,7 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) */ if (numVars == 0) { - code = TCL_ERROR; + code = TCL_OUT_LINE_COMPILE; goto done; } -- cgit v0.12 From 3550b2068c9275350ca9f9ab2536ff8bf09ec1fe Mon Sep 17 00:00:00 2001 From: das Date: Wed, 7 Mar 2007 23:44:32 +0000 Subject: * macosx/tclMacOSXNotify.c: add spinlock debugging and sanity checks. * unix/tcl.m4 (Darwin): s/CFLAGS/CPPFLAGS/ in macosx-version-min check. * unix/configure: autoconf-2.13 --- ChangeLog | 7 +++++++ macosx/tclMacOSXNotify.c | 41 ++++++++++++++++++++++++++++++----------- unix/configure | 2 +- unix/tcl.m4 | 2 +- 4 files changed, 39 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e8a2d0..e82d508 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-03-07 Daniel Steffen + + * macosx/tclMacOSXNotify.c: add spinlock debugging and sanity checks. + + * unix/tcl.m4 (Darwin): s/CFLAGS/CPPFLAGS/ in macosx-version-min check. + * unix/configure: autoconf-2.13 + 2007-03-01 Donal K. Fellows * generic/tclCompCmds.c (TclCompileForeachCmd): Prevent an unexpected diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index 3c89d20..8a5fe0f 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.10 2007/01/19 01:05:50 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.11 2007/03/07 23:44:33 das Exp $ */ #include "tclInt.h" @@ -150,11 +150,12 @@ static int triggerPipe = -1; static int receivePipe = -1; /* Output end of triggerPipe */ /* - * We use Darwin-native spinlocks instead of pthread mutexes for notifier - * locking: this radically simplifies the implementation and lowers overhead. - * Note that these are not pure spinlocks, they employ various strategies to - * back off, making them immune to most priority-inversion livelocks (c.f. man - * 3 OSSpinLockLock). + * We use the Darwin-native spinlock API rather than pthread mutexes for + * notifier locking: this radically simplifies the implementation and lowers + * overhead. Note that these are not pure spinlocks, they employ various + * strategies to back off and relinquish the processor, making them immune to + * most priority-inversion livelocks (c.f. 'man 3 OSSpinLockLock' and Darwin + * sources: xnu/osfmk/{ppc,i386}/commpage/spinlocks.s). */ #if defined(HAVE_LIBKERN_OSATOMIC_H) && defined(HAVE_OSSPINLOCKLOCK) @@ -174,27 +175,37 @@ static int receivePipe = -1; /* Output end of triggerPipe */ #else #define VOLATILE #endif +#ifndef bool +#define bool int +#endif extern void OSSpinLockLock(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; extern void OSSpinLockUnlock(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +extern bool OSSpinLockTry(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; extern void _spin_lock(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; extern void _spin_unlock(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; +extern bool _spin_lock_try(VOLATILE OSSpinLock *lock) WEAK_IMPORT_ATTRIBUTE; static void (* lockLock)(VOLATILE OSSpinLock *lock) = NULL; static void (* lockUnlock)(VOLATILE OSSpinLock *lock) = NULL; +static bool (* lockTry)(VOLATILE OSSpinLock *lock) = NULL; #undef VOLATILE static pthread_once_t spinLockLockInitControl = PTHREAD_ONCE_INIT; static void SpinLockLockInit(void) { lockLock = OSSpinLockLock != NULL ? OSSpinLockLock : _spin_lock; lockUnlock = OSSpinLockUnlock != NULL ? OSSpinLockUnlock : _spin_unlock; + lockTry = OSSpinLockTry != NULL ? OSSpinLockTry : _spin_lock_try; if (lockLock == NULL || lockUnlock == NULL) { Tcl_Panic("SpinLockLockInit: no spinlock API available"); } } #define SpinLockLock(p) lockLock(p) #define SpinLockUnlock(p) lockUnlock(p) +#define SpinLockTry(p) lockTry(p) #else #define SpinLockLock(p) OSSpinLockLock(p) #define SpinLockUnlock(p) OSSpinLockUnlock(p) +#define SpinLockTry(p) OSSpinLockTry(p) #endif /* HAVE_WEAK_IMPORT */ +#define SPINLOCK_INIT OS_SPINLOCK_INIT #else /* @@ -202,10 +213,13 @@ static void SpinLockLockInit(void) { */ typedef uint32_t OSSpinLock; -extern void _spin_lock(OSSpinLock *lock); -extern void _spin_unlock(OSSpinLock *lock); +extern void _spin_lock(OSSpinLock *lock); +extern void _spin_unlock(OSSpinLock *lock); +extern int _spin_lock_try(OSSpinLock *lock); #define SpinLockLock(p) _spin_lock(p) #define SpinLockUnlock(p) _spin_unlock(p) +#define SpinLockTry(p) _spin_lock_try(p) +#define SPINLOCK_INIT 0 #endif /* HAVE_LIBKERN_OSATOMIC_H && HAVE_OSSPINLOCKLOCK */ @@ -213,8 +227,8 @@ extern void _spin_unlock(OSSpinLock *lock); * These spinlocks lock access to the global notifier state. */ -static OSSpinLock notifierInitLock = 0; -static OSSpinLock notifierLock = 0; +static OSSpinLock notifierInitLock = SPINLOCK_INIT; +static OSSpinLock notifierLock = SPINLOCK_INIT; /* * Macros abstracting notifier locking/unlocking @@ -839,6 +853,9 @@ Tcl_WaitForEvent(timePtr) */ LOCK_NOTIFIER_INIT; + if (!notifierCount) { + Tcl_Panic("Tcl_WaitForEvent: notifier not initialized"); + } if (!notifierThread) { int result; pthread_attr_t attr; @@ -862,7 +879,9 @@ Tcl_WaitForEvent(timePtr) */ LOCK_NOTIFIER; - + if (!tsdPtr->runLoop) { + Tcl_Panic("Tcl_WaitForEvent: CFRunLoop not initialized"); + } waitForFiles = (tsdPtr->numFdBits > 0); if (timePtr != NULL && timePtr->sec == 0 && timePtr->usec == 0) { /* diff --git a/unix/configure b/unix/configure index 317eb2a..0ae6764 100755 --- a/unix/configure +++ b/unix/configure @@ -3588,7 +3588,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 DL_LIBS="" # Don't use -prebind when building for Mac OS X 10.4 or later only: test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int($2)}'`" -lt 4 -a \ - "`echo "${CFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int($2)}'`" -lt 4 && \ + "`echo "${CPPFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int($2)}'`" -lt 4 && \ LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 24a0899..cf27917 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1622,7 +1622,7 @@ dnl AC_CHECK_TOOL(AR, ar) DL_LIBS="" # Don't use -prebind when building for Mac OS X 10.4 or later only: test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int([$]2)}'`" -lt 4 -a \ - "`echo "${CFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int([$]2)}'`" -lt 4 && \ + "`echo "${CPPFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int([$]2)}'`" -lt 4 && \ LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [ -- cgit v0.12 From 9b37ffdd3cd479883df0f3aacbd2e442b40fd5e4 Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 10 Mar 2007 14:57:36 +0000 Subject: Fix [Bug 1675116] in a way suitable for 8.4. --- ChangeLog | 6 ++++++ generic/tclCmdIL.c | 14 +++++++++++++- tests/cmdIL.test | 7 ++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e82d508..06a6e5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-03-10 Donal K. Fellows + + * generic/tclCmdIL.c (Tcl_LsortObjCmd): Handle tricky case with loss + * tests/cmdIL.test (cmdIL-1.29):of list rep during sorting due + to shimmering. [Bug 1675116] + 2007-03-07 Daniel Steffen * macosx/tclMacOSXNotify.c: add spinlock debugging and sanity checks. diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index d44ba7a..85e51d0 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.10 2006/11/28 22:20:00 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.11 2007/03/10 14:57:38 dkf Exp $ */ #include "tclInt.h" @@ -3799,6 +3799,15 @@ Tcl_LsortObjCmd(clientData, interp, objc, objv) elementArray[i].objPtr = listObjPtrs[i]; elementArray[i].count = 0; elementArray[i].nextPtr = &elementArray[i+1]; + + /* + * When sorting using a command, we are reentrant and therefore might + * have the representation of the list being sorted shimmered out from + * underneath our feet. Increment the reference counts of the elements + * to sort to prevent this. [Bug 1675116] + */ + + Tcl_IncrRefCount(elementArray[i].objPtr); } elementArray[length-1].nextPtr = NULL; elementPtr = MergeSort(elementArray, &sortInfo); @@ -3824,6 +3833,9 @@ Tcl_LsortObjCmd(clientData, interp, objc, objv) } } } + for (i=0; i Date: Tue, 13 Mar 2007 15:59:51 +0000 Subject: * generic/tclVar.c (TclArraySet): Re-fetch pointers for the list * tests/var.test (var-17.1): argument of [array set] each time through the loop as defense against possible shimmer issues. [Bug 1669489]. --- ChangeLog | 7 +++++++ generic/tclVar.c | 10 +++++++++- tests/var.test | 14 +++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 06a6e5c..253c4e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-03-13 Don Porter + + * generic/tclVar.c (TclArraySet): Re-fetch pointers for the list + * tests/var.test (var-17.1): argument of [array set] each time + through the loop as defense against possible shimmer issues. + [Bug 1669489]. + 2007-03-10 Donal K. Fellows * generic/tclCmdIL.c (Tcl_LsortObjCmd): Handle tricky case with loss diff --git a/generic/tclVar.c b/generic/tclVar.c index c0dfdc3..b8c608b 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.12 2006/10/05 11:44:03 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.13 2007/03/13 15:59:52 dgp Exp $ */ #include "tclInt.h" @@ -3489,6 +3489,14 @@ TclArraySet(interp, arrayNameObj, arrayElemObj) result = TCL_ERROR; break; } + + /* + * The TclPtrSetVar call might have shimmered + * arrayElemObj to another type, so re-fetch + * the pointers for safety. + */ + Tcl_ListObjGetElements(NULL, arrayElemObj, + &elemLen, &elemPtrs); } return result; } diff --git a/tests/var.test b/tests/var.test index 64f52707..9f163e8 100644 --- a/tests/var.test +++ b/tests/var.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: var.test,v 1.20.2.3 2004/09/30 22:45:17 dgp Exp $ +# RCS: @(#) $Id: var.test,v 1.20.2.4 2007/03/13 15:59:53 dgp Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -701,6 +701,18 @@ test var-16.1 {CallVarTraces: save/restore interp error state: 1038021} { set errorInfo } bar +test var-17.1 {TclArraySet [Bug 1669489]} -setup { + unset -nocomplain ::a +} -body { + namespace eval :: { + set elements {1 2 3 4} + trace add variable a write {string length $elements ;#} + array set a $elements + } +} -cleanup { + unset -nocomplain ::a ::elements +} -result {} + catch {namespace delete ns} catch {unset arr} catch {unset v} -- cgit v0.12 From 76a2ced0a1bab38668ad8bbf071794a9e437ed18 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 13 Mar 2007 16:26:31 +0000 Subject: * generic/tclExecute.c (INST_FOREACH_STEP4): Re-fetch pointers for * tests/foreach.test (foreach-10.1): the value list each iteration of the loop as defense against shimmers. [Bug 1671087] --- ChangeLog | 4 ++++ generic/tclExecute.c | 19 +++++++++++++------ tests/foreach.test | 14 +++++++++++++- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 253c4e7..e76ab9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-03-13 Don Porter + * generic/tclExecute.c (INST_FOREACH_STEP4): Re-fetch pointers for + * tests/foreach.test (foreach-10.1): the value list each iteration + of the loop as defense against shimmers. [Bug 1671087] + * generic/tclVar.c (TclArraySet): Re-fetch pointers for the list * tests/var.test (var-17.1): argument of [array set] each time through the loop as defense against possible shimmer issues. diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 59412b8..4fd6dcc 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.20 2006/11/28 22:20:00 andreas_kupries Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.21 2007/03/13 16:26:32 dgp Exp $ */ #include "tclInt.h" @@ -4052,7 +4052,6 @@ TclExecuteByteCode(interp, codePtr) int numLists = infoPtr->numLists; Var *compiledLocals = iPtr->varFramePtr->compiledLocals; Tcl_Obj *listPtr; - List *listRepPtr; Var *iterVarPtr, *listVarPtr; int iterNum, listTmpIndex, listLen, numVars; int varIndex, valIndex, continueLoop, j; @@ -4106,15 +4105,23 @@ TclExecuteByteCode(interp, codePtr) listVarPtr = &(compiledLocals[listTmpIndex]); listPtr = listVarPtr->value.objPtr; - listRepPtr = (List *) listPtr->internalRep.twoPtrValue.ptr1; - listLen = listRepPtr->elemCount; - + valIndex = (iterNum * numVars); for (j = 0; j < numVars; j++) { + Tcl_Obj **elements; + + /* + * The call to TclPtrSetVar might shimmer listPtr, + * so re-fetch pointers every iteration for safety. + * See test foreach-10.1. + */ + + Tcl_ListObjGetElements(NULL, listPtr, + &listLen, &elements); if (valIndex >= listLen) { TclNewObj(valuePtr); } else { - valuePtr = listRepPtr->elements[valIndex]; + valuePtr = elements[valIndex]; } varIndex = varListPtr->varIndexes[j]; diff --git a/tests/foreach.test b/tests/foreach.test index ee90ce2..a260576 100644 --- a/tests/foreach.test +++ b/tests/foreach.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: foreach.test,v 1.8.8.2 2007/03/01 10:16:10 dkf Exp $ +# RCS: @(#) $Id: foreach.test,v 1.8.8.3 2007/03/13 16:26:33 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -243,6 +243,18 @@ test foreach-9.1 {compiled empty var list} { list [catch { foo } msg] $msg } {1 {foreach varlist is empty}} +test foreach-10.1 {foreach: [Bug 1671087]} -setup { + proc demo {} { + set vals {1 2 3 4} + trace add variable x write {string length $vals ;# } + foreach {x y} $vals {format $y} + } +} -body { + demo +} -cleanup { + rename demo {} +} -result {} + # cleanup catch {unset a} catch {unset x} -- cgit v0.12 From 81071e7c69ad7aef5a908c64b219977a52442ff5 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 17 Mar 2007 22:41:04 +0000 Subject: * win/tclWinReg.c (GetKeyNames): Size the buffer for enumerating key names correctly, so that Unicode names exceeding 127 chars can be retrieved without crashing. [Bug 1682211] * tests/registry.test (registry-4.9): Added test case for the above bug. --- ChangeLog | 8 +++++ tests/registry.test | 22 ++++++++++++- win/tclWinReg.c | 89 +++++++++++++++++++++++++++++++++++++++-------------- 3 files changed, 95 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index e76ab9e..d4ff293 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-03-17 Kevin Kenny + + * win/tclWinReg.c (GetKeyNames): Size the buffer for enumerating + key names correctly, so that Unicode names exceeding 127 chars + can be retrieved without crashing. [Bug 1682211] + * tests/registry.test (registry-4.9): Added test case for the + above bug. + 2007-03-13 Don Porter * generic/tclExecute.c (INST_FOREACH_STEP4): Re-fetch pointers for diff --git a/tests/registry.test b/tests/registry.test index 1b134b6..63ac403 100644 --- a/tests/registry.test +++ b/tests/registry.test @@ -10,7 +10,7 @@ # Copyright (c) 1997 by Sun Microsystems, Inc. All rights reserved. # Copyright (c) 1998-1999 by Scriptics Corporation. # -# RCS: @(#) $Id: registry.test,v 1.12.2.2 2003/03/19 05:24:22 dgp Exp $ +# RCS: @(#) $Id: registry.test,v 1.12.2.3 2007/03/17 22:41:05 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -247,6 +247,20 @@ test registry-4.8 {GetKeyNames: Unicode} {pcOnly} { registry delete HKEY_CLASSES_ROOT\\TclFoobar set result } "baz\u30b7bar blat" +test registry-4.9 {GetKeyNames: very long key [Bug 1682211]} \ + -constraints {pcOnly} \ + -setup { + registry set HKEY_CLASSES_ROOT\\TclFoobar\\a + registry set HKEY_CLASSES_ROOT\\TclFoobar\\b[string repeat x 254] + registry set HKEY_CLASSES_ROOT\\TclFoobar\\c + } \ + -body { + lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar] + } \ + -cleanup { + registry delete HKEY_CLASSES_ROOT\\TclFoobar + } \ + -result [list a b[string repeat x 254] c] test registry-5.1 {GetType} {pcOnly english} { registry delete HKEY_CLASSES_ROOT\\TclFoobar @@ -598,3 +612,9 @@ test registry-12.5 {BroadcastValue} {pcOnly} { unset hostname ::tcltest::cleanupTests return + +# Local Variables: +# mode: tcl +# tcl-indent-level: 4 +# fill-column: 78 +# End: diff --git a/win/tclWinReg.c b/win/tclWinReg.c index ccd715a..fb6d2be 100644 --- a/win/tclWinReg.c +++ b/win/tclWinReg.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.5 2006/04/05 16:22:18 dgp Exp $ + * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.6 2007/03/17 22:41:05 kennykb Exp $ */ #include @@ -513,21 +513,17 @@ GetKeyNames( Tcl_Obj *keyNameObj, /* Key to enumerate. */ Tcl_Obj *patternObj) /* Optional match pattern. */ { - HKEY key; - DWORD index; - char buffer[MAX_PATH+1], *pattern, *name; - Tcl_Obj *resultPtr; - int result = TCL_OK; - Tcl_DString ds; - - /* - * Attempt to open the key for enumeration. - */ - - if (OpenKey(interp, keyNameObj, KEY_ENUMERATE_SUB_KEYS, 0, &key) - != TCL_OK) { - return TCL_ERROR; - } + char *pattern; /* Pattern being matched against subkeys */ + HKEY key; /* Handle to the key being examined */ + DWORD subKeyCount; /* Number of subkeys to list */ + DWORD maxSubKeyLen; /* Maximum string length of any subkey */ + char *buffer; /* Buffer to hold the subkey name */ + DWORD bufSize; /* Size of the buffer */ + DWORD index; /* Position of the current subkey */ + char *name; /* Subkey name */ + Tcl_Obj *resultPtr; /* List of subkeys being accumulated */ + int result = TCL_OK; /* Return value from this command */ + Tcl_DString ds; /* Buffer to translate subkey name to UTF-8 */ if (patternObj) { pattern = Tcl_GetString(patternObj); @@ -535,15 +531,58 @@ GetKeyNames( pattern = NULL; } - /* - * Enumerate over the subkeys until we get an error, indicating the - * end of the list. + /* Attempt to open the key for enumeration. */ + + if (OpenKey(interp, keyNameObj, + KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS, + 0, &key) != TCL_OK) { + return TCL_ERROR; + } + + /* + * Determine how big a buffer is needed for enumerating subkeys, and + * how many subkeys there are */ - resultPtr = Tcl_GetObjResult(interp); - for (index = 0; (*regWinProcs->regEnumKeyProc)(key, index, buffer, - MAX_PATH+1) == ERROR_SUCCESS; index++) { - Tcl_WinTCharToUtf((TCHAR *) buffer, -1, &ds); + result = (*regWinProcs->regQueryInfoKeyProc) + (key, NULL, NULL, NULL, &subKeyCount, &maxSubKeyLen, NULL, NULL, + NULL, NULL, NULL, NULL); + if (result != ERROR_SUCCESS) { + Tcl_SetObjResult(interp, Tcl_NewObj()); + Tcl_AppendResult(interp, "unable to query key \"", + Tcl_GetString(keyNameObj), "\": ", NULL); + AppendSystemError(interp, result); + RegCloseKey(key); + return TCL_ERROR; + } + if (regWinProcs->useWide) { + buffer = ckalloc((maxSubKeyLen+1) * sizeof(WCHAR)); + } else { + buffer = ckalloc(maxSubKeyLen+1); + } + + /* Enumerate the subkeys */ + + resultPtr = Tcl_NewObj(); + for (index = 0; index < subKeyCount; ++index) { + bufSize = maxSubKeyLen+1; + result = (*regWinProcs->regEnumKeyExProc) + (key, index, buffer, &bufSize, NULL, NULL, NULL, NULL); + if (result != ERROR_SUCCESS) { + Tcl_SetObjResult(interp, Tcl_NewObj()); + Tcl_AppendResult(interp, + "unable to enumerate subkeys of \"", + Tcl_GetString(keyNameObj), + "\": ", NULL); + AppendSystemError(interp, result); + result = TCL_ERROR; + break; + } + if (regWinProcs->useWide) { + Tcl_WinTCharToUtf((TCHAR *) buffer, bufSize * sizeof(WCHAR), &ds); + } else { + Tcl_WinTCharToUtf((TCHAR *) buffer, bufSize, &ds); + } name = Tcl_DStringValue(&ds); if (pattern && !Tcl_StringMatch(name, pattern)) { Tcl_DStringFree(&ds); @@ -556,7 +595,11 @@ GetKeyNames( break; } } + if (result == TCL_OK) { + Tcl_SetObjResult(interp, resultPtr); + } + ckfree(buffer); RegCloseKey(key); return result; } -- cgit v0.12 From 85d645e7d34a62d8b3e0211277b9271fb32dce66 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 19 Mar 2007 17:06:24 +0000 Subject: * generic/tclEvent.c (Tcl_CreateThread): Replaced some calls to * generic/tclPkg.c (CheckVersion): Tcl_Alloc() with calls to * unix/tclUnixTime.c (SetTZIfNecessary): ckalloc(), which better * win/tclAppInit.c (setargv): supports memory debugging. --- ChangeLog | 7 +++++++ generic/tclEvent.c | 6 +++--- generic/tclPkg.c | 6 +++--- unix/tclUnixTime.c | 6 +++--- win/tclAppInit.c | 4 ++-- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index d4ff293..e98e9b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-03-19 Don Porter + + * generic/tclEvent.c (Tcl_CreateThread): Replaced some calls to + * generic/tclPkg.c (CheckVersion): Tcl_Alloc() with calls to + * unix/tclUnixTime.c (SetTZIfNecessary): ckalloc(), which better + * win/tclAppInit.c (setargv): supports memory debugging. + 2007-03-17 Kevin Kenny * win/tclWinReg.c (GetKeyNames): Size the buffer for enumerating diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 6456a40..2cdae51 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.14 2006/03/10 14:04:57 vasiljevic Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.15 2007/03/19 17:06:25 dgp Exp $ */ #include "tclInt.h" @@ -1224,7 +1224,7 @@ NewThreadProc(ClientData clientData) cdPtr = (ThreadClientData*)clientData; threadProc = cdPtr->proc; threadClientData = cdPtr->clientData; - Tcl_Free((char*)clientData); /* Allocated in Tcl_CreateThread() */ + ckfree((char*)clientData); /* Allocated in Tcl_CreateThread() */ (*threadProc)(threadClientData); @@ -1262,7 +1262,7 @@ Tcl_CreateThread(idPtr, proc, clientData, stackSize, flags) #ifdef TCL_THREADS ThreadClientData *cdPtr; - cdPtr = (ThreadClientData*)Tcl_Alloc(sizeof(ThreadClientData)); + cdPtr = (ThreadClientData*)ckalloc(sizeof(ThreadClientData)); cdPtr->proc = proc; cdPtr->clientData = clientData; diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 5115442..df209ea 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9.2.8 2006/12/05 17:44:44 andreas_kupries Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.9 2007/03/19 17:06:26 dgp Exp $ * * TIP #268. * Heavily rewritten to handle the extend version numbers, and extended @@ -1762,7 +1762,7 @@ CheckVersionAndConvert(interp, string, internal, stable) /* 4* assuming that each char is a separator (a,b become ' -x '). * 4+ to have spce for an additional -2 at the end */ - char* ibuf = Tcl_Alloc (4+4*strlen(string)); + char* ibuf = ckalloc (4+4*strlen(string)); char* ip = ibuf; /* Basic rules @@ -1834,7 +1834,7 @@ CheckVersionAndConvert(interp, string, internal, stable) error: #ifdef TCL_TIP268 - Tcl_Free (ibuf); + ckfree (ibuf); #endif Tcl_AppendResult(interp, "expected version number but got \"", string, "\"", (char *) NULL); diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c index da03440..b7ef888 100644 --- a/unix/tclUnixTime.c +++ b/unix/tclUnixTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.4 2005/03/15 16:29:54 kennykb Exp $ + * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.5 2007/03/19 17:06:26 dgp Exp $ */ #include "tclInt.h" @@ -461,7 +461,7 @@ SetTZIfNecessary() { } else { Tcl_Free( lastTZ ); } - lastTZ = Tcl_Alloc( strlen( newTZ ) + 1 ); + lastTZ = ckalloc( strlen( newTZ ) + 1 ); strcpy( lastTZ, newTZ ); } Tcl_MutexUnlock(&tmMutex); @@ -488,5 +488,5 @@ SetTZIfNecessary() { static void CleanupMemory( ClientData ignored ) { - Tcl_Free( lastTZ ); + ckfree( lastTZ ); } diff --git a/win/tclAppInit.c b/win/tclAppInit.c index cc2c1de..ee8563b 100644 --- a/win/tclAppInit.c +++ b/win/tclAppInit.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAppInit.c,v 1.11.2.2 2003/10/14 22:41:42 davygrvy Exp $ + * RCS: @(#) $Id: tclAppInit.c,v 1.11.2.3 2007/03/19 17:06:26 dgp Exp $ */ #include "tcl.h" @@ -315,7 +315,7 @@ setargv(argcPtr, argvPtr) } } } - argSpace = (char *) Tcl_Alloc( + argSpace = (char *) ckalloc( (unsigned) (size * sizeof(char *) + strlen(cmdLine) + 1)); argv = (char **) argSpace; argSpace += size * sizeof(char *); -- cgit v0.12 From 9001e4a12a8cb6226719049f272585d73ca82f54 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Sat, 24 Mar 2007 09:31:06 +0000 Subject: Thread exit handler marks the current thread as un-initialized. This allows exit handlers that are registered later to re-initialize this subsystem in case they need to use some sync primitives (cond variables) from this file again. --- ChangeLog | 8 ++++++++ win/tclWinThrd.c | 19 +++++++------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index e98e9b7..94a969b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-03-24 Zoran Vasiljevic + + * win/tclWinThrd.c: Thread exit handler marks the current + thread as un-initialized. This allows exit handlers that + are registered later to re-initialize this subsystem in + case they need to use some sync primitives (cond variables) + from this file again. + 2007-03-19 Don Porter * generic/tclEvent.c (Tcl_CreateThread): Replaced some calls to diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index e82b26a..acac81b 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.11 2005/05/30 01:36:53 hobbs Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.24.2.12 2007/03/24 09:31:11 vasiljevic Exp $ */ #include "tclWinInt.h" @@ -107,13 +107,11 @@ typedef struct allocMutex { * of the way ThreadSpecificData is created. * WIN_THREAD_RUNNING Running, not waiting. * WIN_THREAD_BLOCKED Waiting, or trying to wait. - * WIN_THREAD_DEAD Dying - no per-thread event anymore. */ #define WIN_THREAD_UNINIT 0x0 #define WIN_THREAD_RUNNING 0x1 #define WIN_THREAD_BLOCKED 0x2 -#define WIN_THREAD_DEAD 0x4 /* * The per condition queue pointers and the @@ -789,14 +787,6 @@ Tcl_ConditionWait(condPtr, mutexPtr, timePtr) int doExit = 0; /* True if we need to do exit setup */ ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - if (tsdPtr->flags & WIN_THREAD_DEAD) { - /* - * No more per-thread event on which to wait. - */ - - return; - } - /* * Self initialize the two parts of the condition. * The per-condition and per-thread parts need to be @@ -956,9 +946,14 @@ Tcl_ConditionNotify(condPtr) { WinCondition *winCondPtr; ThreadSpecificData *tsdPtr; + if (condPtr != NULL) { winCondPtr = *((WinCondition **)condPtr); + if (winCondPtr == NULL) { + return; + } + /* * Loop through all the threads waiting on the condition * and notify them (i.e., broadcast semantics). The queue @@ -1008,7 +1003,7 @@ FinalizeConditionEvent(data) ClientData data; { ThreadSpecificData *tsdPtr = (ThreadSpecificData *)data; - tsdPtr->flags = WIN_THREAD_DEAD; + tsdPtr->flags = WIN_THREAD_UNINIT; CloseHandle(tsdPtr->condEvent); } -- cgit v0.12 From 28e10d16ff23e12b9d930dcc0a73140af1265d93 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 21 Apr 2007 19:52:12 +0000 Subject: * generic/tclInt.decls: Yet another round of attempting * generic/tclInt.h: to get the correct type signature * unix/tclUnixPort.h: for TclpLocaltime and TclpGmtime. * unix/tclUnixTime.c: CONST TclpTime_t is a 'time_t *CONST' * win/tclWinTime.c: and not a 'CONST time_t*'! * generic/tclIntDecls.h: [Bug 1677275] * generic/tclIntPlatDecls.h: Regenerated. --- ChangeLog | 10 ++++++++++ generic/tclInt.decls | 10 +++++----- generic/tclInt.h | 3 ++- generic/tclIntDecls.h | 10 +++++----- generic/tclIntPlatDecls.h | 10 +++++----- unix/tclUnixPort.h | 6 +++--- unix/tclUnixTime.c | 10 +++++----- win/tclWinTime.c | 6 +++--- 8 files changed, 38 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 94a969b..2e1a7d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2007-04-21 Kevin B. Kenny + + * generic/tclInt.decls: Yet another round of attempting + * generic/tclInt.h: to get the correct type signature + * unix/tclUnixPort.h: for TclpLocaltime and TclpGmtime. + * unix/tclUnixTime.c: CONST TclpTime_t is a 'time_t *CONST' + * win/tclWinTime.c: and not a 'CONST time_t*'! + * generic/tclIntDecls.h: [Bug 1677275] + * generic/tclIntPlatDecls.h: Regenerated. + 2007-03-24 Zoran Vasiljevic * win/tclWinThrd.c: Thread exit handler marks the current diff --git a/generic/tclInt.decls b/generic/tclInt.decls index 82d5e49..120ed0b 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.59.2.6 2005/03/15 16:29:53 kennykb Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.59.2.7 2007/04/21 19:52:14 kennykb Exp $ library tcl @@ -700,10 +700,10 @@ declare 173 generic { # TclpGmtime and TclpLocaltime promoted to the generic interface from unix declare 182 generic { - struct tm *TclpLocaltime(CONST TclpTime_t clock) + struct tm *TclpLocaltime(TclpTime_t_CONST clock) } declare 183 generic { - struct tm *TclpGmtime(CONST TclpTime_t clock) + struct tm *TclpGmtime(TclpTime_t_CONST clock) } declare 199 generic { @@ -998,11 +998,11 @@ declare 10 unix { # generic Stubs declare 11 unix { - struct tm * TclpLocaltime_unix(CONST TclpTime_t clock) + struct tm * TclpLocaltime_unix(TclpTime_t_CONST clock) } declare 12 unix { - struct tm * TclpGmtime_unix(CONST TclpTime_t clock) + struct tm * TclpGmtime_unix(TclpTime_t_CONST clock) } declare 13 unix { diff --git a/generic/tclInt.h b/generic/tclInt.h index 57e9e31..c1a6785 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.26 2006/11/28 22:20:01 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.27 2007/04/21 19:52:14 kennykb Exp $ */ #ifndef _TCLINT @@ -1702,6 +1702,7 @@ typedef struct TclFile_ *TclFile; */ typedef struct TclpTime_t_ *TclpTime_t; +typedef struct TclpTime_t_ *CONST TclpTime_t_CONST; /* * The "globParameters" argument of the function TclGlob is an diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index c761ae1..3660664 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.8 2005/03/15 16:29:53 kennykb Exp $ + * RCS: @(#) $Id: tclIntDecls.h,v 1.49.2.9 2007/04/21 19:52:14 kennykb Exp $ */ #ifndef _TCLINTDECLS @@ -512,9 +512,9 @@ EXTERN int TclUniCharMatch _ANSI_ARGS_(( /* Slot 180 is reserved */ /* Slot 181 is reserved */ /* 182 */ -EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((CONST TclpTime_t clock)); +EXTERN struct tm * TclpLocaltime _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 183 */ -EXTERN struct tm * TclpGmtime _ANSI_ARGS_((CONST TclpTime_t clock)); +EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t_CONST clock)); /* Slot 184 is reserved */ /* Slot 185 is reserved */ /* Slot 186 is reserved */ @@ -743,8 +743,8 @@ typedef struct TclIntStubs { void *reserved179; void *reserved180; void *reserved181; - struct tm * (*tclpLocaltime) _ANSI_ARGS_((CONST TclpTime_t clock)); /* 182 */ - struct tm * (*tclpGmtime) _ANSI_ARGS_((CONST TclpTime_t clock)); /* 183 */ + struct tm * (*tclpLocaltime) _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 182 */ + struct tm * (*tclpGmtime) _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 183 */ void *reserved184; void *reserved185; void *reserved186; diff --git a/generic/tclIntPlatDecls.h b/generic/tclIntPlatDecls.h index e5a3ca0..671e6c7 100644 --- a/generic/tclIntPlatDecls.h +++ b/generic/tclIntPlatDecls.h @@ -9,7 +9,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.6 2004/10/28 16:06:49 kennykb Exp $ + * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.19.2.7 2007/04/21 19:52:14 kennykb Exp $ */ #ifndef _TCLINTPLATDECLS @@ -63,9 +63,9 @@ EXTERN TclFile TclpCreateTempFile _ANSI_ARGS_(( EXTERN Tcl_DirEntry * TclpReaddir _ANSI_ARGS_((DIR * dir)); /* 11 */ EXTERN struct tm * TclpLocaltime_unix _ANSI_ARGS_(( - CONST TclpTime_t clock)); + TclpTime_t_CONST clock)); /* 12 */ -EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((CONST TclpTime_t clock)); +EXTERN struct tm * TclpGmtime_unix _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 13 */ EXTERN char * TclpInetNtoa _ANSI_ARGS_((struct in_addr addr)); #endif /* UNIX */ @@ -233,8 +233,8 @@ typedef struct TclIntPlatStubs { int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */ TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char * contents)); /* 9 */ Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR * dir)); /* 10 */ - struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((CONST TclpTime_t clock)); /* 11 */ - struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((CONST TclpTime_t clock)); /* 12 */ + struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 11 */ + struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 12 */ char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */ #endif /* UNIX */ #ifdef __WIN32__ diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 46d14fa..d52b7d0 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.16 2006/09/07 08:50:36 vasiljevic Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.17 2007/04/21 19:52:15 kennykb Exp $ */ #ifndef _TCLUNIXPORT @@ -671,10 +671,10 @@ EXTERN void TclpMutexLock _ANSI_ARGS_((TclpMutex *mPtr)); EXTERN void TclpMutexUnlock _ANSI_ARGS_((TclpMutex *mPtr)); EXTERN Tcl_DirEntry * TclpReaddir(DIR *); #ifndef TclpLocaltime -EXTERN struct tm * TclpLocaltime(CONST TclpTime_t); +EXTERN struct tm * TclpLocaltime(TclpTime_t_CONST); #endif #ifndef TclpGmtime -EXTERN struct tm * TclpGmtime(CONST TclpTime_t); +EXTERN struct tm * TclpGmtime(TclpTime_t_CONST); #endif EXTERN char * TclpInetNtoa(struct in_addr); #define inet_ntoa(x) TclpInetNtoa(x) diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c index b7ef888..e4ac865 100644 --- a/unix/tclUnixTime.c +++ b/unix/tclUnixTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.5 2007/03/19 17:06:26 dgp Exp $ + * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.6 2007/04/21 19:52:15 kennykb Exp $ */ #include "tclInt.h" @@ -344,7 +344,7 @@ TclpStrftime(s, maxsize, format, t, useGMT) struct tm * TclpGmtime( tt ) - CONST TclpTime_t tt; + TclpTime_t_CONST tt; { CONST time_t *timePtr = (CONST time_t *) tt; /* Pointer to the number of seconds @@ -371,7 +371,7 @@ TclpGmtime( tt ) */ struct tm* TclpGmtime_unix( timePtr ) - CONST TclpTime_t timePtr; + TclpTime_t_CONST timePtr; { return TclpGmtime( timePtr ); } @@ -395,7 +395,7 @@ TclpGmtime_unix( timePtr ) struct tm * TclpLocaltime( tt ) - CONST TclpTime_t tt; + TclpTime_t_CONST tt; { CONST time_t *timePtr = (CONST time_t *) tt; /* Pointer to the number of seconds @@ -422,7 +422,7 @@ TclpLocaltime( tt ) */ struct tm* TclpLocaltime_unix( timePtr ) - CONST TclpTime_t timePtr; + TclpTime_t_CONST timePtr; { return TclpLocaltime( timePtr ); } diff --git a/win/tclWinTime.c b/win/tclWinTime.c index f1c9d6a..044268b 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.10 2006/09/26 21:40:37 patthoyts Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.14.2.11 2007/04/21 19:52:15 kennykb Exp $ */ #include "tclWinInt.h" @@ -1100,7 +1100,7 @@ AccumulateSample( Tcl_WideInt perfCounter, struct tm * TclpGmtime( tt ) - CONST TclpTime_t tt; + TclpTime_t_CONST tt; { CONST time_t *timePtr = (CONST time_t *) tt; /* Pointer to the number of seconds @@ -1132,7 +1132,7 @@ TclpGmtime( tt ) struct tm * TclpLocaltime( tt ) - CONST TclpTime_t tt; + TclpTime_t_CONST tt; { CONST time_t *timePtr = (CONST time_t *) tt; /* Pointer to the number of seconds -- cgit v0.12 From 184d051d02dfd8fac7ea89ac7672f3c865b88fdd Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 21 Apr 2007 22:42:47 +0000 Subject: Restored Cygwin buildability [Bug 1387154] --- ChangeLog | 5 +++-- generic/tclClock.c | 6 +++--- unix/tclUnixPort.h | 10 +++++++++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e1a7d6..055bf30 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,12 @@ 2007-04-21 Kevin B. Kenny + * generic/tclClock.c: Restored Cygwin buildability [Bug 1387154] * generic/tclInt.decls: Yet another round of attempting * generic/tclInt.h: to get the correct type signature * unix/tclUnixPort.h: for TclpLocaltime and TclpGmtime. * unix/tclUnixTime.c: CONST TclpTime_t is a 'time_t *CONST' - * win/tclWinTime.c: and not a 'CONST time_t*'! - * generic/tclIntDecls.h: [Bug 1677275] + * win/tclWinTime.c: and not a 'CONST time_t*' [Bug 1677275] + * generic/tclIntDecls.h: * generic/tclIntPlatDecls.h: Regenerated. 2007-03-24 Zoran Vasiljevic diff --git a/generic/tclClock.c b/generic/tclClock.c index d476795..a939fb2 100644 --- a/generic/tclClock.c +++ b/generic/tclClock.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclClock.c,v 1.20.2.2 2005/03/15 16:29:53 kennykb Exp $ + * RCS: @(#) $Id: tclClock.c,v 1.20.2.3 2007/04/21 22:42:49 kennykb Exp $ */ #include "tcl.h" @@ -266,8 +266,8 @@ FormatClock(interp, clockVal, useGMT, format) int result; time_t tclockVal; #if !defined(HAVE_TM_ZONE) && !defined(WIN32) - int savedTimeZone = 0; /* lint. */ - char *savedTZEnv = NULL; /* lint. */ + TIMEZONE_t savedTimeZone = 0; /* lint. */ + char *savedTZEnv = NULL; /* lint. */ #endif #ifdef HAVE_TZSET diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index d52b7d0..d98e8e4 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.17 2007/04/21 19:52:15 kennykb Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.18 2007/04/21 22:42:49 kennykb Exp $ */ #ifndef _TCLUNIXPORT @@ -95,6 +95,14 @@ EXTERN Tcl_WideUInt strtoull _ANSI_ARGS_((CONST char *string, # include #endif #include + +#ifdef __CYGWIN__ +# define timezone _timezone + typedef long TIMEZONE_t; +#else /* !__CYGWIN__ */ + typedef int TIMEZONE_t; +#endif /* !__CYGWIN__ */ + #if TIME_WITH_SYS_TIME # include # include -- cgit v0.12 From dc7f0e90b924058de8ec68eb3dccc4d1604607d4 Mon Sep 17 00:00:00 2001 From: das Date: Sun, 29 Apr 2007 02:19:51 +0000 Subject: * unix/tclUnixFCmd.c: add workaround for crashing bug in fts_open() * unix/tclUnixInit.c: without FTS_NOSTAT on 64bit Darwin 8 or earlier. --- unix/tclUnixFCmd.c | 46 ++++++++++++++++++++++++++++++---------------- unix/tclUnixInit.c | 6 ++++-- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index eb48103..60eb2af 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.14 2006/11/07 17:29:04 andreas_kupries Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.15 2007/04/29 02:19:51 das Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -205,6 +205,25 @@ extern long tclMacOSXDarwinRelease; #endif #endif /* NO_REALPATH */ +#ifdef HAVE_FTS +#ifdef HAVE_STRUCT_STAT64 +/* fts doesn't do stat64 */ +#define noFtsStat 1 +#elif defined(__APPLE__) && defined(__LP64__) && \ + defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ + MAC_OS_X_VERSION_MIN_REQUIRED < 1050 +/* + * prior to Darwin 9, 64bit fts_open() without FTS_NOSTAT may crash (due to a + * 64bit-unsafe ALIGN macro); if we could be running on pre-10.5 OSX, check + * Darwin release at runtime and do a separate stat() if necessary. + */ +extern long tclMacOSXDarwinRelease; +#define noFtsStat (tclMacOSXDarwinRelease < 9) +#else +#define noFtsStat 0 +#endif +#endif /* HAVE_FTS */ + /* *--------------------------------------------------------------------------- @@ -980,13 +999,8 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) } #else /* HAVE_FTS */ paths[0] = source; - fts = fts_open((char**)paths, FTS_PHYSICAL|FTS_NOCHDIR| -#ifdef HAVE_STRUCT_STAT64 - FTS_NOSTAT, /* fts doesn't do stat64 */ -#else - (doRewind ? FTS_NOSTAT : 0), /* no need to stat for delete */ -#endif - NULL); + fts = fts_open((char**)paths, FTS_PHYSICAL | FTS_NOCHDIR | + (noFtsStat || doRewind ? FTS_NOSTAT : 0), NULL); if (fts == NULL) { errfile = source; goto end; @@ -1024,15 +1038,15 @@ TraverseUnixTree(traverseProc, sourcePtr, targetPtr, errorPtr, doRewind) break; } if (!doRewind) { /* no need to stat for delete */ -#ifdef HAVE_STRUCT_STAT64 - statBufPtr = &statBuf; - if (TclOSlstat(ent->fts_path, statBufPtr) != 0) { - errfile = ent->fts_path; - break; + if (noFtsStat) { + statBufPtr = &statBuf; + if (TclOSlstat(ent->fts_path, statBufPtr) != 0) { + errfile = ent->fts_path; + break; + } + } else { + statBufPtr = ent->fts_statp; } -#else - statBufPtr = ent->fts_statp; -#endif } result = (*traverseProc)(sourcePtr, targetPtr, statBufPtr, type, errorPtr); diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index d36dfd5..795d312 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.14 2006/09/10 17:04:42 das Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.15 2007/04/29 02:19:51 das Exp $ */ #if defined(HAVE_COREFOUNDATION) @@ -160,7 +160,9 @@ static int MacOSXGetLibraryPath _ANSI_ARGS_(( #endif /* HAVE_COREFOUNDATION */ #if defined(__APPLE__) && (defined(TCL_LOAD_FROM_MEMORY) || ( \ defined(TCL_THREADS) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - MAC_OS_X_VERSION_MIN_REQUIRED < 1030)) + MAC_OS_X_VERSION_MIN_REQUIRED < 1030) || ( \ + defined(__LP64__) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ + MAC_OS_X_VERSION_MIN_REQUIRED < 1050)) /* * Need to check Darwin release at runtime in tclUnixFCmd.c and tclLoadDyld.c: * initialize release global at startup from uname(). -- cgit v0.12 From d35f5919310fc5689bf42d63db9fde494768cb70 Mon Sep 17 00:00:00 2001 From: das Date: Sun, 29 Apr 2007 02:20:16 +0000 Subject: * unix/tclLoadDyld.c (TclpLoadMemory): fix (void*) arithmetic. --- unix/tclLoadDyld.c | 90 +++++++++++++++++++++++++++++------------------------- 1 file changed, 48 insertions(+), 42 deletions(-) diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 10dfd54..a206019 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -7,12 +7,12 @@ * Wilfredo Sanchez (wsanchez@apple.com). * * Copyright (c) 1995 Apple Computer, Inc. - * Copyright (c) 2005 Daniel A. Steffen + * Copyright (c) 2001-2007 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.8 2006/07/20 06:21:46 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.9 2007/04/29 02:20:16 das Exp $ */ #include "tclInt.h" @@ -25,6 +25,10 @@ #undef panic #include +#ifndef MODULE_SCOPE +#define MODULE_SCOPE extern +#endif + typedef struct Tcl_DyldModuleHandle { struct Tcl_DyldModuleHandle *nextPtr; NSModule module; @@ -36,7 +40,7 @@ typedef struct Tcl_DyldLoadHandle { } Tcl_DyldLoadHandle; #ifdef TCL_LOAD_FROM_MEMORY -extern long tclMacOSXDarwinRelease; +MODULE_SCOPE long tclMacOSXDarwinRelease; #endif /* @@ -57,7 +61,9 @@ extern long tclMacOSXDarwinRelease; */ static CONST char* -DyldOFIErrorMsg(int err) { +DyldOFIErrorMsg( + int err) +{ switch(err) { case NSObjectFileImageSuccess: return NULL; @@ -94,15 +100,15 @@ DyldOFIErrorMsg(int err) { *---------------------------------------------------------------------- */ -int -TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) - Tcl_Interp *interp; /* Used for error reporting. */ - Tcl_Obj *pathPtr; /* Name of the file containing the desired +MODULE_SCOPE int +TclpDlopen( + Tcl_Interp *interp, /* Used for error reporting. */ + Tcl_Obj *pathPtr, /* Name of the file containing the desired * code (UTF-8). */ - Tcl_LoadHandle *loadHandle; /* Filled with token for dynamically loaded + Tcl_LoadHandle *loadHandle, /* Filled with token for dynamically loaded * file which will be passed back to * (*unloadProcPtr)() to unload the file. */ - Tcl_FSUnloadFileProc **unloadProcPtr; + Tcl_FSUnloadFileProc **unloadProcPtr) /* Filled with address of Tcl_FSUnloadFileProc * function which should be used for this * file. */ @@ -161,14 +167,14 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) } if (!dyldLibHeader && !dyldObjFileImage) { - Tcl_AppendResult(interp, msg, (char *) NULL); + Tcl_AppendResult(interp, msg, NULL); if (msg && *msg) { - Tcl_AppendResult(interp, "\n", (char *) NULL); + Tcl_AppendResult(interp, "\n", NULL); } if (objFileImageErrMsg) { Tcl_AppendResult(interp, "NSCreateObjectFileImageFromFile() error: ", - objFileImageErrMsg, (char *) NULL); + objFileImageErrMsg, NULL); } return TCL_ERROR; } @@ -188,7 +194,7 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) CONST char *name, *msg; NSLinkEditError(&editError, &errorNumber, &name, &msg); - Tcl_AppendResult(interp, msg, (char *) NULL); + Tcl_AppendResult(interp, msg, NULL); return TCL_ERROR; } @@ -223,11 +229,11 @@ TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) *---------------------------------------------------------------------- */ -Tcl_PackageInitProc* -TclpFindSymbol(interp, loadHandle, symbol) - Tcl_Interp *interp; /* For error reporting. */ - Tcl_LoadHandle loadHandle; /* Handle from TclpDlopen. */ - CONST char *symbol; /* Symbol name to look up. */ +MODULE_SCOPE Tcl_PackageInitProc * +TclpFindSymbol( + Tcl_Interp *interp, /* For error reporting. */ + Tcl_LoadHandle loadHandle, /* Handle from TclpDlopen. */ + CONST char *symbol) /* Symbol name to look up. */ { NSSymbol nsSymbol; CONST char *native; @@ -279,7 +285,7 @@ TclpFindSymbol(interp, loadHandle, symbol) CONST char *name, *msg; NSLinkEditError(&editError, &errorNumber, &name, &msg); - Tcl_AppendResult(interp, msg, (char *) NULL); + Tcl_AppendResult(interp, msg, NULL); } } else { nsSymbol = NSLookupSymbolInModule(dyldLoadHandle->modulePtr->module, @@ -314,9 +320,9 @@ TclpFindSymbol(interp, loadHandle, symbol) *---------------------------------------------------------------------- */ -void -TclpUnloadFile(loadHandle) - Tcl_LoadHandle loadHandle; /* loadHandle returned by a previous call to +MODULE_SCOPE void +TclpUnloadFile( + Tcl_LoadHandle loadHandle) /* loadHandle returned by a previous call to * TclpDlopen(). The loadHandle is a token * that represents the loaded file. */ { @@ -356,10 +362,10 @@ TclpUnloadFile(loadHandle) */ int -TclGuessPackageName(fileName, bufPtr) - CONST char *fileName; /* Name of file containing package (already +TclGuessPackageName( + CONST char *fileName, /* Name of file containing package (already * translated to local form if needed). */ - Tcl_DString *bufPtr; /* Initialized empty dstring. Append package + Tcl_DString *bufPtr) /* Initialized empty dstring. Append package * name to this if possible. */ { return 0; @@ -382,10 +388,10 @@ TclGuessPackageName(fileName, bufPtr) *---------------------------------------------------------------------- */ -void* -TclpLoadMemoryGetBuffer(interp, size) - Tcl_Interp *interp; /* Used for error reporting. */ - int size; /* Size of desired buffer. */ +MODULE_SCOPE void * +TclpLoadMemoryGetBuffer( + Tcl_Interp *interp, /* Used for error reporting. */ + int size) /* Size of desired buffer. */ { void *buffer = NULL; @@ -425,19 +431,19 @@ TclpLoadMemoryGetBuffer(interp, size) *---------------------------------------------------------------------- */ -int -TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) - Tcl_Interp *interp; /* Used for error reporting. */ - void *buffer; /* Buffer containing the desired code +MODULE_SCOPE int +TclpLoadMemory( + Tcl_Interp *interp, /* Used for error reporting. */ + void *buffer, /* Buffer containing the desired code * (allocated with TclpLoadMemoryGetBuffer). */ - int size; /* Allocation size of buffer. */ - int codeSize; /* Size of code data read into buffer or -1 if + int size, /* Allocation size of buffer. */ + int codeSize, /* Size of code data read into buffer or -1 if * an error occurred and the buffer should * just be freed. */ - Tcl_LoadHandle *loadHandle; /* Filled with token for dynamically loaded + Tcl_LoadHandle *loadHandle, /* Filled with token for dynamically loaded * file which will be passed back to * (*unloadProcPtr)() to unload the file. */ - Tcl_FSUnloadFileProc **unloadProcPtr; + Tcl_FSUnloadFileProc **unloadProcPtr) /* Filled with address of Tcl_FSUnloadFileProc * function which should be used for this * file. */ @@ -475,7 +481,7 @@ TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) if ((size_t) codeSize >= sizeof(struct fat_header) + fh_nfat_arch * sizeof(struct fat_arch)) { - void *fatarchs = buffer + sizeof(struct fat_header); + void *fatarchs = (char*)buffer + sizeof(struct fat_header); CONST NXArchInfo *arch = NXGetLocalArchInfo(); struct fat_arch *fa; @@ -485,7 +491,7 @@ TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) fa = NXFindBestFatArch(arch->cputype, arch->cpusubtype, fatarchs, fh_nfat_arch); if (fa) { - mh = buffer + fa->offset; + mh = (void*)((char*)buffer + fa->offset); ms = fa->size; } else { err = NSObjectFileImageInappropriateFile; @@ -524,7 +530,7 @@ TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) if (objFileImageErrMsg != NULL) { Tcl_AppendResult(interp, "NSCreateObjectFileImageFromMemory() error: ", - objFileImageErrMsg, (char *) NULL); + objFileImageErrMsg, NULL); } return TCL_ERROR; } @@ -543,7 +549,7 @@ TclpLoadMemory(interp, buffer, size, codeSize, loadHandle, unloadProcPtr) CONST char *name, *msg; NSLinkEditError(&editError, &errorNumber, &name, &msg); - Tcl_AppendResult(interp, msg, (char *) NULL); + Tcl_AppendResult(interp, msg, NULL); return TCL_ERROR; } -- cgit v0.12 From 3d880fffc971a2ee2d80081689bbafd1c4b8544e Mon Sep 17 00:00:00 2001 From: das Date: Sun, 29 Apr 2007 02:20:36 +0000 Subject: * unix/Makefile.in (dist): copy license.terms to dist macosx dir. * unix/configure.in: install license.terms into Tcl.framework. * unix/configure: autoconf-2.13 --- unix/Makefile.in | 23 ++++++++++++----------- unix/configure | 1 + unix/configure.in | 3 ++- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/unix/Makefile.in b/unix/Makefile.in index 2f8b528..5004b54 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.18 2006/09/06 13:08:27 vasiljevic Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.19 2007/04/29 02:20:36 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1293,8 +1293,8 @@ dist: cp -p $(TOP_DIR)/license.terms $(TOP_DIR)/doc/*.[13n] \ $(TOP_DIR)/doc/man.macros $(DISTDIR)/doc mkdir $(DISTDIR)/compat - cp -p $(TOP_DIR)/license.terms $(TOP_DIR)/compat/*.c \ - $(TOP_DIR)/compat/*.h $(TOP_DIR)/compat/README \ + cp -p $(TOP_DIR)/license.terms $(COMPAT_DIR)/*.c \ + $(COMPAT_DIR)/*.h $(COMPAT_DIR)/README \ $(DISTDIR)/compat mkdir $(DISTDIR)/tests cp -p $(TOP_DIR)/license.terms $(DISTDIR)/tests @@ -1333,21 +1333,22 @@ dist: cp -p $(TOP_DIR)/mac/*.doc $(TOP_DIR)/mac/*.html $(DISTDIR)/mac cp -p $(TOP_DIR)/license.terms $(DISTDIR)/mac mkdir $(DISTDIR)/macosx - cp -p $(TOP_DIR)/macosx/Makefile $(TOP_DIR)/macosx/README \ - $(TOP_DIR)/macosx/*.c $(TOP_DIR)/macosx/*.in \ + cp -p $(MAC_OSX_DIR)/Makefile $(MAC_OSX_DIR)/README \ + $(MAC_OSX_DIR)/*.c $(MAC_OSX_DIR)/*.in \ $(DISTDIR)/macosx + cp -p $(TOP_DIR)/license.terms $(DISTDIR)/macosx mkdir $(DISTDIR)/macosx/Tcl.pbproj - cp -p $(TOP_DIR)/macosx/Tcl.pbproj/*.pbx* $(DISTDIR)/macosx/Tcl.pbproj + cp -p $(MAC_OSX_DIR)/Tcl.pbproj/*.pbx* $(DISTDIR)/macosx/Tcl.pbproj mkdir $(DISTDIR)/unix/dltest cp -p $(UNIX_DIR)/dltest/*.c $(UNIX_DIR)/dltest/Makefile.in \ $(UNIX_DIR)/dltest/README \ $(DISTDIR)/unix/dltest mkdir $(DISTDIR)/tools - cp -p $(TOP_DIR)/tools/Makefile.in $(TOP_DIR)/tools/README \ - $(TOP_DIR)/tools/configure $(TOP_DIR)/tools/configure.in \ - $(TOP_DIR)/tools/*.tcl $(TOP_DIR)/tools/man2tcl.c \ - $(TOP_DIR)/tools/tcl.wse.in $(TOP_DIR)/tools/*.bmp \ - $(TOP_DIR)/tools/tcl.hpj.in \ + cp -p $(TOOL_DIR)/Makefile.in $(TOOL_DIR)/README \ + $(TOOL_DIR)/configure $(TOOL_DIR)/configure.in \ + $(TOOL_DIR)/*.tcl $(TOOL_DIR)/man2tcl.c \ + $(TOOL_DIR)/tcl.wse.in $(TOOL_DIR)/*.bmp \ + $(TOOL_DIR)/tcl.hpj.in \ $(DISTDIR)/tools $(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/tools/tcl.hpj.in \ $(DISTDIR)/tools/tcl.wse.in diff --git a/unix/configure b/unix/configure index 0ae6764..99246a6 100755 --- a/unix/configure +++ b/unix/configure @@ -9112,6 +9112,7 @@ EOF EXTRA_INSTALL="install-private-headers html-tcl" EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' + EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing license.terms to $(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) "$(TOP_DIR)/license.terms" "$(LIB_INSTALL_DIR)/Resources"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."' TCL_YEAR="`date +%Y`" # Don't use AC_DEFINE for the following as the framework version define diff --git a/unix/configure.in b/unix/configure.in index 149a84d..8d7dc2f 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.34 2007/02/04 02:51:37 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.35 2007/04/29 02:20:38 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -589,6 +589,7 @@ if test "$FRAMEWORK_BUILD" = "1" ; then EXTRA_INSTALL="install-private-headers html-tcl" EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' + EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing license.terms to $(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) "$(TOP_DIR)/license.terms" "$(LIB_INSTALL_DIR)/Resources"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."' TCL_YEAR="`date +%Y`" # Don't use AC_DEFINE for the following as the framework version define -- cgit v0.12 From 9ef12ec2e6b788e6fd8c838ca5eb1f4c02c4db29 Mon Sep 17 00:00:00 2001 From: das Date: Sun, 29 Apr 2007 02:21:31 +0000 Subject: * macosx/tclMacOSXNotify.c: fix warnings. * macosx/README: sync whitespace/formatting with HEAD. * macosx/tclMacOSXBundle.c: * macosx/tclMacOSXNotify.c: * macosx/Makefile: fix/add copyright and license refs. * macosx/tclMacOSXBundle.c: * macosx/Tcl-Info.plist.in: --- ChangeLog | 22 ++++++ macosx/Makefile | 21 ++++-- macosx/README | 21 +++--- macosx/Tcl-Info.plist.in | 17 ++++- macosx/tclMacOSXBundle.c | 185 +++++++++++++++++++++++++---------------------- macosx/tclMacOSXNotify.c | 54 +++++++------- 6 files changed, 186 insertions(+), 134 deletions(-) diff --git a/ChangeLog b/ChangeLog index 055bf30..7f31279 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2007-04-29 Daniel Steffen + + * unix/tclUnixFCmd.c: add workaround for crashing bug in fts_open() + * unix/tclUnixInit.c: without FTS_NOSTAT on 64bit Darwin 8 or earlier. + + * unix/tclLoadDyld.c (TclpLoadMemory): fix (void*) arithmetic. + + * macosx/tclMacOSXNotify.c: fix warnings. + + * macosx/README: sync whitespace/formatting with HEAD. + * macosx/tclMacOSXBundle.c: + * macosx/tclMacOSXNotify.c: + * unix/tclLoadDyld.c: + + * macosx/Makefile: fix/add copyright and license refs. + * macosx/tclMacOSXBundle.c: + * macosx/Tcl-Info.plist.in: + + * unix/Makefile.in (dist): copy license.terms to dist macosx dir. + * unix/configure.in: install license.terms into Tcl.framework. + * unix/configure: autoconf-2.13 + 2007-04-21 Kevin B. Kenny * generic/tclClock.c: Restored Cygwin buildability [Bug 1387154] diff --git a/macosx/Makefile b/macosx/Makefile index 8ec7027..a8acc28 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -4,7 +4,12 @@ # uses the standard unix build system in tcl/unix (which can be used directly instead of this # if you are not using the tk/macosx projects). # -# RCS: @(#) $Id: Makefile,v 1.5.2.16 2006/10/16 17:34:42 das Exp $ +# Copyright (c) 2002-2007 Daniel A. Steffen +# +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# RCS: @(#) $Id: Makefile,v 1.5.2.17 2007/04/29 02:21:33 das Exp $ # ######################################################################################################## @@ -18,8 +23,8 @@ BUILD_DIR ?= ${CURDIR}/../../build SYMROOT ?= ${BUILD_DIR}/${PROJECT} OBJROOT ?= ${SYMROOT} -EXTRA_CONFIGURE_ARGS ?= -EXTRA_MAKE_ARGS ?= +EXTRA_CONFIGURE_ARGS ?= +EXTRA_MAKE_ARGS ?= INSTALL_PATH ?= /Library/Frameworks PREFIX ?= /usr/local @@ -28,12 +33,12 @@ LIBDIR ?= ${INSTALL_PATH} MANDIR ?= ${PREFIX}/man # set to non-empty value to install manpages in addition to html help: -INSTALL_MANPAGES ?= +INSTALL_MANPAGES ?= #------------------------------------------------------------------------------------------------------- # meta targets -meta := all install embedded install-embedded clean distclean test +meta := all install embedded install-embedded clean distclean test styles := develop deploy @@ -75,7 +80,7 @@ deploy_make_args := BUILD_STYLE=Deployment INSTALL_TARGET=install-strip \ embedded_make_args := EMBEDDED_BUILD=1 install_make_args := INSTALL_BUILD=1 -${targets}: +${targets}: ${MAKE} ${action}${PROJECT} \ $(foreach s,${styles} embedded install,$(if $(findstring $s,$@),${${s}_make_args})) @@ -122,7 +127,7 @@ ${PROJECT}: ${MAKE} install-${PROJECT} INSTALL_ROOT=${OBJ_DIR}/ ${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure \ - ${UNIX_DIR}/tclConfig.sh.in Tcl-Info.plist.in + ${UNIX_DIR}/tclConfig.sh.in Tcl-Info.plist.in mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && \ if [ ${UNIX_DIR}/configure -nt config.status ]; then ${UNIX_DIR}/configure \ --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} \ @@ -188,7 +193,7 @@ clean-${PROJECT}: %-${PROJECT}: distclean-${PROJECT}: %-${PROJECT}: clean-${PROJECT} ${DO_MAKE} rm -rf ${OBJ_DIR} - + test-${PROJECT}: %-${PROJECT}: build-${PROJECT} ${DO_MAKE} diff --git a/macosx/README b/macosx/README index 40fae5b..94576c6 100644 --- a/macosx/README +++ b/macosx/README @@ -1,7 +1,7 @@ -Tcl Mac OS X README ------------------ +Tcl Mac OS X README +------------------- -RCS: @(#) $Id: README,v 1.1.2.8 2006/08/21 06:10:03 das Exp $ +RCS: @(#) $Id: README,v 1.1.2.9 2007/04/29 02:21:33 das Exp $ This is the README file for the Mac OS X/Darwin version of Tcl. @@ -93,10 +93,11 @@ project, this simply calls through to the tcl/macosx/Makefile. export CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 \ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" This requires Mac OS X 10.4 and Xcode 2.4 (or Xcode 2.2 if -arch x86_64 is -omitted, but _not_ Xcode 2.1) and will work on any of the architectures (on -intel Macs, the -isysroot may not be required). Note that it is not possible to -configure universal builds correctly if the current architecture is not present -in CFLAGS (i.e. -arch `arch` must be there). +omitted, but _not_ Xcode 2.1) and will work on any of the architectures (the +-isysroot flag is only required on PowerPC Tiger). +Note that configure requires CFLAGS to contain a least one architecture that can +be run on the build machine (i.e. ppc on G3/G4, ppc or ppc64 on G5, ppc or i386 +on Core and ppc, i386 or x86_64 on Core2/Xeon). Universal builds of Tcl TEA extensions are also possible with CFLAGS set as above, they will be [load]able by universal as well as thin binaries of Tcl. @@ -118,12 +119,12 @@ where ${ver} is a shell variable containing the tcl version number (for example '8.4.12'). Setup the shell variable as follows: set ver="8.4.12" ;: if your shell is csh - ver="8.4.12" ;: if your shell is sh + ver="8.4.12" ;: if your shell is sh The source tree will be named this way only if you are building from a release archive, if you are building from CVS, the version numbers will be missing; so set ${ver} to the empty string instead: - set ver="" ;: if your shell is csh - ver="" ;: if your shell is sh + set ver="" ;: if your shell is csh + ver="" ;: if your shell is sh - The following steps will build Tcl from the Terminal, assuming you are located in the directory containing the tcl source tree: diff --git a/macosx/Tcl-Info.plist.in b/macosx/Tcl-Info.plist.in index b942956..2031628 100644 --- a/macosx/Tcl-Info.plist.in +++ b/macosx/Tcl-Info.plist.in @@ -1,5 +1,13 @@ + CFBundleDevelopmentRegion @@ -7,14 +15,17 @@ CFBundleExecutable @TCL_LIB_FILE@ CFBundleGetInfoString - Tcl Library @TCL_VERSION@, Copyright © @TCL_YEAR@ Tcl Core Team. -Initial MacOS X Port by Jim Ingham <jingham@apple.com> & Ian Reid, Copyright © 2001-2002, Apple Computer, Inc. + Tcl @TCL_VERSION@@TCL_PATCH_LEVEL@, +Copyright © @TCL_YEAR@ Tcl Core Team, +Copyright © 2001-@TCL_YEAR@ Daniel A. Steffen, +Initial MacOS X Port by Jim Ingham & Ian Reid, +Copyright © 2001-2002, Apple Computer, Inc. CFBundleIdentifier com.tcltk.tcllibrary CFBundleInfoDictionaryVersion 6.0 CFBundleName - Tcl Library @TCL_VERSION@ + Tcl @TCL_VERSION@ CFBundlePackageType FMWK CFBundleShortVersionString diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 28e4977..3355e5f 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -1,54 +1,54 @@ /* * tclMacOSXBundle.c -- * - * This file implements functions that inspect CFBundle structures - * on MacOS X. - * - * Copyright 2001, Apple Computer, Inc. - * - * The following terms apply to all files originating from Apple - * Computer, Inc. ("Apple") and associated with the software - * unless explicitly disclaimed in individual files. - * - * - * Apple hereby grants permission to use, copy, modify, - * distribute, and license this software and its documentation - * for any purpose, provided that existing copyright notices are - * retained in all copies and that this notice is included - * verbatim in any distributions. No written agreement, license, - * or royalty fee is required for any of the authorized - * uses. Modifications to this software may be copyrighted by - * their authors and need not follow the licensing terms - * described here, provided that the new terms are clearly - * indicated on the first page of each file where they apply. - * - * - * IN NO EVENT SHALL APPLE, THE AUTHORS OR DISTRIBUTORS OF THE - * SOFTWARE BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, - * INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF - * THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, - * EVEN IF APPLE OR THE AUTHORS HAVE BEEN ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. APPLE, THE AUTHORS AND - * DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS - * SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND APPLE,THE - * AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE - * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - * GOVERNMENT USE: If you are acquiring this software on behalf - * of the U.S. government, the Government shall have only - * "Restricted Rights" in the software and related documentation - * as defined in the Federal Acquisition Regulations (FARs) in - * Clause 52.227.19 (c) (2). If you are acquiring the software - * on behalf of the Department of Defense, the software shall be - * classified as "Commercial Computer Software" and the - * Government shall have only "Restricted Rights" as defined in - * Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the - * foregoing, the authors grant the U.S. Government and others - * acting in its behalf permission to use and distribute the - * software in accordance with the terms specified in this - * license. + * This file implements functions that inspect CFBundle structures on + * MacOS X. + * + * Copyright 2001, Apple Computer, Inc. + * Copyright (c) 2003-2007 Daniel A. Steffen + * + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * The following terms apply to all files originating from Apple + * Computer, Inc. ("Apple") and associated with the software unless + * explicitly disclaimed in individual files. + * + * Apple hereby grants permission to use, copy, modify, distribute, and + * license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that + * this notice is included verbatim in any distributions. No written + * agreement, license, or royalty fee is required for any of the + * authorized uses. Modifications to this software may be copyrighted by + * their authors and need not follow the licensing terms described here, + * provided that the new terms are clearly indicated on the first page of + * each file where they apply. + * + * IN NO EVENT SHALL APPLE, THE AUTHORS OR DISTRIBUTORS OF THE SOFTWARE + * BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS + * DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF APPLE OR THE + * AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. APPLE, + * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND + * NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND + * APPLE,THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE + * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * GOVERNMENT USE: If you are acquiring this software on behalf of the + * U.S. government, the Government shall have only "Restricted Rights" in + * the software and related documentation as defined in the Federal + * Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are + * acquiring the software on behalf of the Department of Defense, the + * software shall be classified as "Commercial Computer Software" and the + * Government shall have only "Restricted Rights" as defined in Clause + * 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the + * authors grant the U.S. Government and others acting in its behalf + * permission to use and distribute the software in accordance with the + * terms specified in this license. + * + * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.3.2.6 2007/04/29 02:21:33 das Exp $ */ #include "tclPort.h" @@ -65,13 +65,12 @@ * * Given the bundle name for a shared library, this routine sets * libraryPath to the Resources/Scripts directory in the framework - * package. If hasResourceFile is true, it will also open the main + * package. If hasResourceFile is true, it will also open the main * resource file for the bundle. * - * * Results: * TCL_OK if the bundle could be opened, and the Scripts folder found. - * TCL_ERROR otherwise. + * TCL_ERROR otherwise. * * Side effects: * libraryVariableName may be set, and the resource file opened. @@ -83,12 +82,12 @@ int Tcl_MacOSXOpenBundleResources( Tcl_Interp *interp, CONST char *bundleName, - int hasResourceFile, - int maxPathLen, - char *libraryPath) + int hasResourceFile, + int maxPathLen, + char *libraryPath) { return Tcl_MacOSXOpenVersionedBundleResources(interp, bundleName, - NULL, hasResourceFile, maxPathLen, libraryPath); + NULL, hasResourceFile, maxPathLen, libraryPath); } /* @@ -96,16 +95,15 @@ Tcl_MacOSXOpenBundleResources( * * Tcl_MacOSXOpenVersionedBundleResources -- * - * Given the bundle and version name for a shared library (version - * name can be NULL to indicate latest version), this routine sets - * libraryPath to the Resources/Scripts directory in the framework - * package. If hasResourceFile is true, it will also open the main - * resource file for the bundle. - * + * Given the bundle and version name for a shared library (version name + * can be NULL to indicate latest version), this routine sets libraryPath + * to the Resources/Scripts directory in the framework package. If + * hasResourceFile is true, it will also open the main resource file for + * the bundle. * * Results: * TCL_OK if the bundle could be opened, and the Scripts folder found. - * TCL_ERROR otherwise. + * TCL_ERROR otherwise. * * Side effects: * libraryVariableName may be set, and the resource file opened. @@ -118,9 +116,9 @@ Tcl_MacOSXOpenVersionedBundleResources( Tcl_Interp *interp, CONST char *bundleName, CONST char *bundleVersion, - int hasResourceFile, - int maxPathLen, - char *libraryPath) + int hasResourceFile, + int maxPathLen, + char *libraryPath) { #ifdef HAVE_COREFOUNDATION CFBundleRef bundleRef; @@ -129,32 +127,39 @@ Tcl_MacOSXOpenVersionedBundleResources( libraryPath[0] = '\0'; - bundleNameRef = CFStringCreateWithCString(NULL, - bundleName, kCFStringEncodingUTF8); + bundleNameRef = CFStringCreateWithCString(NULL, bundleName, + kCFStringEncodingUTF8); bundleRef = CFBundleGetBundleWithIdentifier(bundleNameRef); CFRelease(bundleNameRef); if (bundleVersion && bundleRef) { - /* create bundle from bundleVersion subdirectory of 'Versions' */ - CFBundleRef versionedBundleRef = NULL; + /* + * Create bundle from bundleVersion subdirectory of 'Versions'. + */ + + CFBundleRef versionedBundleRef = NULL; CFURLRef versionedBundleURL = NULL; CFStringRef bundleVersionRef = CFStringCreateWithCString(NULL, bundleVersion, kCFStringEncodingUTF8); CFURLRef bundleURL = CFBundleCopyBundleURL(bundleRef); + if (bundleURL) { CFStringRef bundleTailRef = CFURLCopyLastPathComponent(bundleURL); + if (bundleTailRef) { - if (CFStringCompare(bundleTailRef,bundleVersionRef,0) - == kCFCompareEqualTo) { + if (CFStringCompare(bundleTailRef, bundleVersionRef, 0) == + kCFCompareEqualTo) { versionedBundleRef = bundleRef; } CFRelease(bundleTailRef); } } + if (bundleURL && !versionedBundleRef) { CFURLRef versURL = CFURLCreateCopyAppendingPathComponent(NULL, - bundleURL, CFSTR("Versions"), TRUE); + bundleURL, CFSTR("Versions"), TRUE); + if (versURL) { versionedBundleURL = CFURLCreateCopyAppendingPathComponent( NULL, versURL, bundleVersionRef, TRUE); @@ -170,36 +175,44 @@ Tcl_MacOSXOpenVersionedBundleResources( bundleRef = versionedBundleRef; } - if (bundleRef) { + if (bundleRef) { if (hasResourceFile) { - /* Dynamically acquire address for CFBundleOpenBundleResourceMap - * symbol, since it is only present in full CoreFoundation - * on Mac OS X and not in CFLite on pure Darwin. */ + /* + * Dynamically acquire address for CFBundleOpenBundleResourceMap + * symbol, since it is only present in full CoreFoundation on Mac + * OS X and not in CFLite on pure Darwin. + */ + static int initialized = FALSE; static short (*openresourcemap)(CFBundleRef) = NULL; - if(!initialized) { + + if (!initialized) { NSSymbol nsSymbol = NULL; - if(NSIsSymbolNameDefinedWithHint("_CFBundleOpenBundleResourceMap", "CoreFoundation")) { - nsSymbol = NSLookupAndBindSymbolWithHint("_CFBundleOpenBundleResourceMap", "CoreFoundation"); - if(nsSymbol) { + if (NSIsSymbolNameDefinedWithHint( + "_CFBundleOpenBundleResourceMap", "CoreFoundation")) { + nsSymbol = NSLookupAndBindSymbolWithHint( + "_CFBundleOpenBundleResourceMap","CoreFoundation"); + if (nsSymbol) { openresourcemap = NSAddressOfSymbol(nsSymbol); } } initialized = TRUE; } + if (openresourcemap) { short refNum; + refNum = openresourcemap(bundleRef); } } - libURL = CFBundleCopyResourceURL(bundleRef, - CFSTR("Scripts"), NULL, NULL); + libURL = CFBundleCopyResourceURL(bundleRef, CFSTR("Scripts"), + NULL, NULL); if (libURL) { /* - * FIXME: This is a quick fix, it is probably not right - * for internationalization. + * FIXME: This is a quick fix, it is probably not right for + * internationalization. */ CFURLGetFileSystemRepresentation(libURL, TRUE, @@ -207,9 +220,9 @@ Tcl_MacOSXOpenVersionedBundleResources( CFRelease(libURL); } } - + if (libraryPath[0]) { - return TCL_OK; + return TCL_OK; } else { return TCL_ERROR; } diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index 8a5fe0f..ea94e8e 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -7,13 +7,12 @@ * * Copyright (c) 1995-1997 Sun Microsystems, Inc. * Copyright 2001, Apple Computer, Inc. - * Copyright (c) 2005 Tcl Core Team. - * Copyright (c) 2005-2006 Daniel A. Steffen + * Copyright (c) 2005-2007 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.11 2007/03/07 23:44:33 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.12 2007/04/29 02:21:33 das Exp $ */ #include "tclInt.h" @@ -275,7 +274,8 @@ static CFStringRef tclEventsOnlyRunLoopMode = NULL; * Static routines defined in this file. */ -static void NotifierThreadProc(ClientData clientData); +static void NotifierThreadProc(ClientData clientData) + __attribute__ ((__noreturn__)); static int FileHandlerEventProc(Tcl_Event *evPtr, int flags); #ifdef HAVE_PTHREAD_ATFORK @@ -427,8 +427,8 @@ Tcl_InitNotifier(void) */ void -Tcl_FinalizeNotifier(clientData) - ClientData clientData; /* Not used. */ +Tcl_FinalizeNotifier( + ClientData clientData) /* Not used. */ { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); @@ -509,8 +509,8 @@ Tcl_FinalizeNotifier(clientData) */ void -Tcl_AlertNotifier(clientData) - ClientData clientData; +Tcl_AlertNotifier( + ClientData clientData) { ThreadSpecificData *tsdPtr = (ThreadSpecificData *) clientData; @@ -542,8 +542,8 @@ Tcl_AlertNotifier(clientData) */ void -Tcl_SetTimer(timePtr) - Tcl_Time *timePtr; /* Timeout value, may be NULL. */ +Tcl_SetTimer( + Tcl_Time *timePtr) /* Timeout value, may be NULL. */ { /* * The interval timer doesn't do anything in this implementation, because @@ -573,8 +573,8 @@ Tcl_SetTimer(timePtr) */ void -Tcl_ServiceModeHook(mode) - int mode; /* Either TCL_SERVICE_ALL, or +Tcl_ServiceModeHook( + int mode) /* Either TCL_SERVICE_ALL, or * TCL_SERVICE_NONE. */ { } @@ -596,15 +596,15 @@ Tcl_ServiceModeHook(mode) */ void -Tcl_CreateFileHandler(fd, mask, proc, clientData) - int fd; /* Handle of stream to watch. */ - int mask; /* OR'ed combination of TCL_READABLE, +Tcl_CreateFileHandler( + int fd, /* Handle of stream to watch. */ + int mask, /* OR'ed combination of TCL_READABLE, * TCL_WRITABLE, and TCL_EXCEPTION: indicates * conditions under which proc should be * called. */ - Tcl_FileProc *proc; /* Function to call for each selected + Tcl_FileProc *proc, /* Function to call for each selected * event. */ - ClientData clientData; /* Arbitrary data to pass to proc. */ + ClientData clientData) /* Arbitrary data to pass to proc. */ { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); FileHandler *filePtr; @@ -673,8 +673,8 @@ Tcl_CreateFileHandler(fd, mask, proc, clientData) */ void -Tcl_DeleteFileHandler(fd) - int fd; /* Stream id for which to remove callback +Tcl_DeleteFileHandler( + int fd) /* Stream id for which to remove callback * function. */ { FileHandler *filePtr, *prevPtr; @@ -766,9 +766,9 @@ Tcl_DeleteFileHandler(fd) */ static int -FileHandlerEventProc(evPtr, flags) - Tcl_Event *evPtr; /* Event to service. */ - int flags; /* Flags that indicate what events to handle, +FileHandlerEventProc( + Tcl_Event *evPtr, /* Event to service. */ + int flags) /* Flags that indicate what events to handle, * such as TCL_FILE_EVENTS. */ { int mask; @@ -835,8 +835,8 @@ FileHandlerEventProc(evPtr, flags) */ int -Tcl_WaitForEvent(timePtr) - Tcl_Time *timePtr; /* Maximum block time, or NULL. */ +Tcl_WaitForEvent( + Tcl_Time *timePtr) /* Maximum block time, or NULL. */ { FileHandler *filePtr; FileHandlerEvent *fileEvPtr; @@ -1033,8 +1033,8 @@ Tcl_WaitForEvent(timePtr) */ static void -NotifierThreadProc(clientData) - ClientData clientData; /* Not used. */ +NotifierThreadProc( + ClientData clientData) /* Not used. */ { ThreadSpecificData *tsdPtr; fd_set readableMask; @@ -1182,7 +1182,7 @@ NotifierThreadProc(clientData) } } } - pthread_exit (0); + pthread_exit(0); } #ifdef HAVE_PTHREAD_ATFORK -- cgit v0.12 From f517800ef8d7c3af46ccb2773a711e38792e3d67 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 30 Apr 2007 22:58:18 +0000 Subject: * unix/Makefile.in: add 'tclsh' dependency to install targets that rely on tclsh, fixes parallel 'make install' from empty build dir. --- ChangeLog | 5 +++++ unix/Makefile.in | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7f31279..7c623c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-04-30 Daniel Steffen + + * unix/Makefile.in: add 'tclsh' dependency to install targets that rely + on tclsh, fixes parallel 'make install' from empty build dir. + 2007-04-29 Daniel Steffen * unix/tclUnixFCmd.c: add workaround for crashing bug in fts_open() diff --git a/unix/Makefile.in b/unix/Makefile.in index 5004b54..53302fd 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.19 2007/04/29 02:20:36 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.20 2007/04/30 22:58:18 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1388,13 +1388,13 @@ allpatch: dist # TOOL_DIR. # -html: +html: tclsh $(BUILD_HTML) @EXTRA_BUILD_HTML@ -html-tcl: +html-tcl: tclsh $(BUILD_HTML) --tcl @EXTRA_BUILD_HTML@ -html-tk: +html-tk: tclsh $(BUILD_HTML) --tk @EXTRA_BUILD_HTML@ -- cgit v0.12 From 9ed1dc8ae2008e5197622386a9b11e3f1c21bf54 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 10 May 2007 18:23:56 +0000 Subject: [Tcl Bug 1706140] * generic/tclCmdMZ.c (Trace*Proc): Update Tcl_VarTraceProcs so * generic/tclLink.c (LinkTraceProc): that they call * generic/tclUtil.c (TclPrecTraceProc): Tcl_InterpDeleted() for themselves, and do not rely on (frequently buggy) setting of the TCL_INTERP_DESTROYED flag by the trace core. * generic/tclVar.c: Update callers of CallVarTraces to not pass in the TCL_INTERP_DESTROYED flag. Also apply filters so that public routines only pass documented flag values down to lower level routines. * generic/tclVar.c (CallVarTraces): The setting of the TCL_INTERP_DESTROYED flag is now done entirely within the CallVarTraces routine, the only place it can be done right. --- ChangeLog | 19 ++++++++++++++ generic/tclCmdMZ.c | 8 +++--- generic/tclLink.c | 4 +-- generic/tclUtil.c | 4 +-- generic/tclVar.c | 72 ++++++++++++++++++++---------------------------------- 5 files changed, 54 insertions(+), 53 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7c623c2..f8d028a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2007-05-10 Don Porter + + [Tcl Bug 1706140] + + * generic/tclCmdMZ.c (Trace*Proc): Update Tcl_VarTraceProcs so + * generic/tclLink.c (LinkTraceProc): that they call + * generic/tclUtil.c (TclPrecTraceProc): Tcl_InterpDeleted() for + themselves, and do not rely on (frequently buggy) setting of the + TCL_INTERP_DESTROYED flag by the trace core. + + * generic/tclVar.c: Update callers of CallVarTraces to not + pass in the TCL_INTERP_DESTROYED flag. Also apply filters so that + public routines only pass documented flag values down to lower level + routines. + + * generic/tclVar.c (CallVarTraces): The setting of the + TCL_INTERP_DESTROYED flag is now done entirely within the + CallVarTraces routine, the only place it can be done right. + 2007-04-30 Daniel Steffen * unix/Makefile.in: add 'tclsh' dependency to install targets that rely diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index d4a8732..b663f16 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.27 2006/11/28 22:20:00 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.28 2007/05/10 18:23:58 dgp Exp $ */ #include "tclInt.h" @@ -4167,7 +4167,7 @@ TraceCommandProc(clientData, interp, oldName, newName, flags) tcmdPtr->refCount++; - if ((tcmdPtr->flags & flags) && !(flags & TCL_INTERP_DESTROYED)) { + if ((tcmdPtr->flags & flags) && !Tcl_InterpDeleted(interp)) { /* * Generate a command to execute by appending list elements * for the old and new command name and the operation. @@ -4627,7 +4627,7 @@ TraceExecutionProc(ClientData clientData, Tcl_Interp *interp, return traceCode; } - if (!(flags & TCL_INTERP_DESTROYED)) { + if (!Tcl_InterpDeleted(interp)) { /* * Check whether the current call is going to eval arbitrary * Tcl code with a generated trace, or whether we are only @@ -4837,7 +4837,7 @@ TraceVarProc(clientData, interp, name1, name2, flags) */ result = NULL; - if ((tvarPtr->flags & flags) && !(flags & TCL_INTERP_DESTROYED)) { + if ((tvarPtr->flags & flags) && !Tcl_InterpDeleted(interp)) { if (tvarPtr->length != (size_t) 0) { /* * Generate a command to execute by appending list elements diff --git a/generic/tclLink.c b/generic/tclLink.c index f31ad8e..3cbaebb 100644 --- a/generic/tclLink.c +++ b/generic/tclLink.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLink.c,v 1.8.2.1 2005/10/23 22:01:30 msofer Exp $ + * RCS: @(#) $Id: tclLink.c,v 1.8.2.2 2007/05/10 18:23:58 dgp Exp $ */ #include "tclInt.h" @@ -250,7 +250,7 @@ LinkTraceProc(clientData, interp, name1, name2, flags) */ if (flags & TCL_TRACE_UNSETS) { - if (flags & TCL_INTERP_DESTROYED) { + if (Tcl_InterpDeleted(interp)) { Tcl_DecrRefCount(linkPtr->varName); ckfree((char *) linkPtr); } else if (flags & TCL_TRACE_DESTROYED) { diff --git a/generic/tclUtil.c b/generic/tclUtil.c index d12ebe8..ca5ba0e 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.36.2.7 2006/09/30 19:20:12 msofer Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.36.2.8 2007/05/10 18:23:58 dgp Exp $ */ #include "tclInt.h" @@ -1970,7 +1970,7 @@ TclPrecTraceProc(clientData, interp, name1, name2, flags) */ if (flags & TCL_TRACE_UNSETS) { - if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) { + if ((flags & TCL_TRACE_DESTROYED) && !Tcl_InterpDeleted(interp)) { Tcl_TraceVar2(interp, name1, name2, TCL_GLOBAL_ONLY|TCL_TRACE_READS|TCL_TRACE_WRITES |TCL_TRACE_UNSETS, TclPrecTraceProc, clientData); diff --git a/generic/tclVar.c b/generic/tclVar.c index b8c608b..b29400e 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.13 2007/03/13 15:59:52 dgp Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.14 2007/05/10 18:23:58 dgp Exp $ */ #include "tclInt.h" @@ -1100,14 +1100,10 @@ Tcl_GetVar2Ex(interp, part1, part2, flags) { Var *varPtr, *arrayPtr; - /* - * We need a special flag check to see if we want to create part 1, - * because commands like lappend require read traces to trigger for - * previously non-existent values. - */ + /* Filter to pass through only the flags this interface supports. */ + flags &= (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY|TCL_LEAVE_ERR_MSG); varPtr = TclLookupVar(interp, part1, part2, flags, "read", - /*createPart1*/ (flags & TCL_TRACE_READS), - /*createPart2*/ 1, &arrayPtr); + /*createPart1*/ 0, /*createPart2*/ 1, &arrayPtr); if (varPtr == NULL) { return NULL; } @@ -1157,14 +1153,10 @@ Tcl_ObjGetVar2(interp, part1Ptr, part2Ptr, flags) part1 = Tcl_GetString(part1Ptr); part2 = ((part2Ptr == NULL) ? NULL : Tcl_GetString(part2Ptr)); - /* - * We need a special flag check to see if we want to create part 1, - * because commands like lappend require read traces to trigger for - * previously non-existent values. - */ + /* Filter to pass through only the flags this interface supports. */ + flags &= (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY|TCL_LEAVE_ERR_MSG); varPtr = TclObjLookupVar(interp, part1Ptr, part2, flags, "read", - /*createPart1*/ (flags & TCL_TRACE_READS), - /*createPart2*/ 1, &arrayPtr); + /*createPart1*/ 0, /*createPart2*/ 1, &arrayPtr); if (varPtr == NULL) { return NULL; } @@ -1460,6 +1452,9 @@ Tcl_SetVar2Ex(interp, part1, part2, newValuePtr, flags) { Var *varPtr, *arrayPtr; + /* Filter to pass through only the flags this interface supports. */ + flags &= (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY|TCL_LEAVE_ERR_MSG + |TCL_APPEND_VALUE|TCL_LIST_ELEMENT); varPtr = TclLookupVar(interp, part1, part2, flags, "set", /*createPart1*/ 1, /*createPart2*/ 1, &arrayPtr); if (varPtr == NULL) { @@ -1516,6 +1511,9 @@ Tcl_ObjSetVar2(interp, part1Ptr, part2Ptr, newValuePtr, flags) part1 = TclGetString(part1Ptr); part2 = ((part2Ptr == NULL) ? NULL : Tcl_GetString(part2Ptr)); + /* Filter to pass through only the flags this interface supports. */ + flags &= (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY|TCL_LEAVE_ERR_MSG + |TCL_APPEND_VALUE|TCL_LIST_ELEMENT); varPtr = TclObjLookupVar(interp, part1Ptr, part2, flags, "set", /*createPart1*/ 1, /*createPart2*/ 1, &arrayPtr); if (varPtr == NULL) { @@ -1604,7 +1602,8 @@ TclPtrSetVar(interp, varPtr, arrayPtr, part1, part2, newValuePtr, flags) /* * Invoke any read traces that have been set for the variable if it - * is requested; this is only done in the core when lappending. + * is requested; this is only done in the core by the INST_LAPPEND_* + * instructions. */ if ((flags & TCL_TRACE_READS) && ((varPtr->tracePtr != NULL) @@ -1960,6 +1959,8 @@ Tcl_UnsetVar2(interp, part1, part2, flags) part1Ptr = Tcl_NewStringObj(part1, -1); Tcl_IncrRefCount(part1Ptr); + /* Filter to pass through only the flags this interface supports. */ + flags &= (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY|TCL_LEAVE_ERR_MSG); result = TclObjUnsetVar2(interp, part1Ptr, part2, flags); TclDecrRefCount(part1Ptr); @@ -2170,22 +2171,8 @@ UnsetVarStruct(varPtr, arrayPtr, iPtr, part1, part2, flags) dummyVarPtr = &dummyVar; if (TclIsVarArray(dummyVarPtr) && !TclIsVarUndefined(dummyVarPtr)) { - /* - * Deleting the elements of the array may cause traces to be fired - * on those elements. Before deleting them, bump the reference count - * of the array, so that if those trace procs make a global or upvar - * link to the array, the array is not deleted when the call stack - * gets popped (we will delete the array ourselves later in this - * function). - * - * Bumping the count can lead to the odd situation that elements of the - * array are being deleted when the array still exists, but since the - * array is about to be removed anyway, that shouldn't really matter. - */ - DeleteArray(iPtr, part1, dummyVarPtr, - (flags & (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY)) - | TCL_TRACE_UNSETS); - /* Decr ref count */ + DeleteArray(iPtr, part1, dummyVarPtr, (flags + & (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY)) | TCL_TRACE_UNSETS); } if (TclIsVarScalar(dummyVarPtr) && (dummyVarPtr->value.objPtr != NULL)) { @@ -2782,9 +2769,6 @@ Tcl_LappendObjCmd(dummy, interp, objc, objv) * variable's old value is unshared we modify it directly, otherwise * we create a new copy to modify: this is "copy on write". * - * Use the TCL_TRACE_READS flag to ensure that if we have an - * array with no elements set yet, but with a read trace on it, - * we will create the variable and get read traces triggered. * Note that you have to protect the variable pointers around * the TclPtrGetVar call to insure that they remain valid * even if the variable was undefined and unused. @@ -2801,7 +2785,7 @@ Tcl_LappendObjCmd(dummy, interp, objc, objv) } part1 = TclGetString(objv[1]); varValuePtr = TclPtrGetVar(interp, varPtr, arrayPtr, part1, NULL, - (TCL_TRACE_READS | TCL_LEAVE_ERR_MSG)); + TCL_LEAVE_ERR_MSG); varPtr->refCount--; if (arrayPtr != NULL) { arrayPtr->refCount--; @@ -4183,8 +4167,7 @@ CallVarTraces(iPtr, arrayPtr, varPtr, part1, part2, flags, leaveErrMsg) int flags; /* Flags passed to trace procedures: * indicates what's happening to variable, * plus other stuff like TCL_GLOBAL_ONLY, - * TCL_NAMESPACE_ONLY, and - * TCL_INTERP_DESTROYED. */ + * or TCL_NAMESPACE_ONLY. */ CONST int leaveErrMsg; /* If true, and one of the traces indicates an * error, then leave an error message and stack * trace information in *iPTr. */ @@ -4265,6 +4248,9 @@ CallVarTraces(iPtr, arrayPtr, varPtr, part1, part2, flags, leaveErrMsg) continue; } Tcl_Preserve((ClientData) tracePtr); + if (Tcl_InterpDeleted((Tcl_Interp *)iPtr)) { + flags |= TCL_INTERP_DESTROYED; + } result = (*tracePtr->traceProc)(tracePtr->clientData, (Tcl_Interp *) iPtr, part1, part2, flags); if (result != NULL) { @@ -4298,6 +4284,9 @@ CallVarTraces(iPtr, arrayPtr, varPtr, part1, part2, flags, leaveErrMsg) continue; } Tcl_Preserve((ClientData) tracePtr); + if (Tcl_InterpDeleted((Tcl_Interp *)iPtr)) { + flags |= TCL_INTERP_DESTROYED; + } result = (*tracePtr->traceProc)(tracePtr->clientData, (Tcl_Interp *) iPtr, part1, part2, flags); if (result != NULL) { @@ -4618,9 +4607,6 @@ TclDeleteNamespaceVars(nsPtr) } else if (nsPtr == currNsPtr) { flags = TCL_NAMESPACE_ONLY; } - if (Tcl_InterpDeleted(interp)) { - flags |= TCL_INTERP_DESTROYED; - } for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr != NULL; hPtr = Tcl_FirstHashEntry(tablePtr, &search)) { @@ -4697,9 +4683,6 @@ TclDeleteVars(iPtr, tablePtr) } else if (tablePtr == &currNsPtr->varTable) { flags |= TCL_NAMESPACE_ONLY; } - if (Tcl_InterpDeleted(interp)) { - flags |= TCL_INTERP_DESTROYED; - } for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { @@ -4934,7 +4917,6 @@ DeleteArray(iPtr, arrayName, varPtr, flags) Var *varPtr; /* Pointer to variable structure. */ int flags; /* Flags to pass to CallVarTraces: * TCL_TRACE_UNSETS and sometimes - * TCL_INTERP_DESTROYED, * TCL_NAMESPACE_ONLY, or * TCL_GLOBAL_ONLY. */ { -- cgit v0.12 From 61db605bbda1d3cf0d073bdd573330789b6fc929 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 10 May 2007 21:32:15 +0000 Subject: * generic/tclInt.h: TclFinalizeThreadAlloc() is always defined, so make sure it is also always declared. --- ChangeLog | 3 +++ generic/tclInt.h | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f8d028a..d940786 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-05-10 Don Porter + * generic/tclInt.h: TclFinalizeThreadAlloc() is always defined, + so make sure it is also always declared. + [Tcl Bug 1706140] * generic/tclCmdMZ.c (Trace*Proc): Update Tcl_VarTraceProcs so diff --git a/generic/tclInt.h b/generic/tclInt.h index c1a6785..a5f3896 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.27 2007/04/21 19:52:14 kennykb Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.28 2007/05/10 21:32:17 dgp Exp $ */ #ifndef _TCLINT @@ -1855,6 +1855,7 @@ EXTERN void TclFinalizeNotifier _ANSI_ARGS_((void)); EXTERN void TclFinalizeObjects _ANSI_ARGS_((void)); EXTERN void TclFinalizePreserve _ANSI_ARGS_((void)); EXTERN void TclFinalizeSynchronization _ANSI_ARGS_((void)); +EXTERN void TclFinalizeThreadAlloc _ANSI_ARGS_((void)); EXTERN void TclFinalizeThreadData _ANSI_ARGS_((void)); EXTERN int TclGetEncodingFromObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Encoding *encodingPtr)); @@ -2382,7 +2383,6 @@ EXTERN Tcl_Obj *TclPtrIncrVar _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, EXTERN Tcl_Obj *TclThreadAllocObj _ANSI_ARGS_((void)); EXTERN void TclThreadFreeObj _ANSI_ARGS_((Tcl_Obj *)); EXTERN void TclFreeAllocCache _ANSI_ARGS_((void *)); -EXTERN void TclFinalizeThreadAlloc _ANSI_ARGS_((void)); EXTERN void TclpFreeAllocMutex _ANSI_ARGS_((Tcl_Mutex* mutex)); EXTERN void TclpFreeAllocCache _ANSI_ARGS_((void *)); -- cgit v0.12 From 5d1ba673ebd2c1d6ba7dd0d3d6095c27ba2838f9 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 15 May 2007 16:08:20 +0000 Subject: * changes: updates for 8.4.15 release. * win/tclWinReg.c: Bump to registry 1.1.5 to account * library/reg/pkgIndex.tcl: for [1682211] bug fix. --- ChangeLog | 7 +++++++ changes | 29 ++++++++++++++++++++++++++++- library/reg/pkgIndex.tcl | 4 ++-- win/tclWinReg.c | 4 ++-- 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index d940786..8379c96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-05-15 Don Porter + + * changes: updates for 8.4.15 release. + + * win/tclWinReg.c: Bump to registry 1.1.5 to account + * library/reg/pkgIndex.tcl: for [1682211] bug fix. + 2007-05-10 Don Porter * generic/tclInt.h: TclFinalizeThreadAlloc() is always defined, diff --git a/changes b/changes index 0f66146..34e0745 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.48 2006/10/16 18:52:29 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.49 2007/05/15 16:08:21 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6420,3 +6420,30 @@ URL validity checking against RFC 2986 (hobbs) => http 2.5.3 --- Released 8.4.14, October 19, 2006 --- See ChangeLog for details --- + +2006-10-31 (platform support)[1582769] Fix build with VC2003 (thoyts) + +2006-11-07 (bug fix)[1586470] [file copy] on afs (kupries,dionizio) + +2006-11-26 (platform support)[1230558] --enable-64bit on more systems (steffen) + +2006-11-27 (bug fix)[1602208] use > 32 async sockets on 64bit system (fontaine) + +2007-01-30 (enhancement) new target: `make install-private-headers` (hobbs) + +2007-02-12 (bug fix)[1516109] escape encodings crossing chan buffers (dejong) + +2007-03-01 (bug fix)[1671138] compiled [foreach {} x {}] hangs (fellows) + +2007-03-10 (bug fix)[1675116] list shimmer crash in [lsort] (fellows) + +2007-03-13 (bug fix)[1671087] list shimmer crash in [foreach] (porter) + +2007-03-13 (bug fix)[1669489] list shimmer crash in [array set] (porter) + +2007-03-17 (bug fix)[1682211] buffer overflow in [registry keys] (kenny) +=> registry 1.1.5 + +2007-04-29 (bug fix) fts_open() crash on 64bit Darwin 8 or earlier (steffen) + +--- Released 8.4.15, May 25, 2007 --- See ChangeLog for details --- diff --git a/library/reg/pkgIndex.tcl b/library/reg/pkgIndex.tcl index 61c1d94..3aed06f 100755 --- a/library/reg/pkgIndex.tcl +++ b/library/reg/pkgIndex.tcl @@ -1,9 +1,9 @@ if {![package vsatisfies [package provide Tcl] 8]} {return} if {[string compare $::tcl_platform(platform) windows]} {return} if {[info exists ::tcl_platform(debug)]} { - package ifneeded registry 1.1.4 \ + package ifneeded registry 1.1.5 \ [list load [file join $dir tclreg11g.dll] registry] } else { - package ifneeded registry 1.1.4 \ + package ifneeded registry 1.1.5 \ [list load [file join $dir tclreg11.dll] registry] } diff --git a/win/tclWinReg.c b/win/tclWinReg.c index fb6d2be..cdce1aa 100644 --- a/win/tclWinReg.c +++ b/win/tclWinReg.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.6 2007/03/17 22:41:05 kennykb Exp $ + * RCS: @(#) $Id: tclWinReg.c,v 1.21.2.7 2007/05/15 16:08:22 dgp Exp $ */ #include @@ -228,7 +228,7 @@ Registry_Init( } Tcl_CreateObjCommand(interp, "registry", RegistryObjCmd, NULL, NULL); - return Tcl_PkgProvide(interp, "registry", "1.1.4"); + return Tcl_PkgProvide(interp, "registry", "1.1.5"); } /* -- cgit v0.12 From a0f895820ab77f2cf1212af9003addb1d1a3ea7c Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 15 May 2007 18:32:14 +0000 Subject: * generic/tclNamesp.c: Plugged memory leak related to [namespace delete ::]. [Bug 1716782] --- ChangeLog | 3 +++ generic/tclNamesp.c | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8379c96..d6df74f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-05-15 Don Porter + * generic/tclNamesp.c: Plugged memory leak related to + [namespace delete ::]. [Bug 1716782] + * changes: updates for 8.4.15 release. * win/tclWinReg.c: Bump to registry 1.1.5 to account diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 4f72e4c..8f42df6 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.13 2006/11/28 22:20:02 andreas_kupries Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.14 2007/05/15 18:32:18 dgp Exp $ */ #include "tclInt.h" @@ -648,7 +648,13 @@ Tcl_DeleteNamespace(namespacePtr) } else { nsPtr->flags |= NS_DEAD; } - } + } else { + /* + * We didn't really kill it, so remove the KILLED marks, so + * it can get killed later, avoiding mem leaks + */ + nsPtr->flags &= ~(NS_DYING|NS_KILLED); + } } } -- cgit v0.12 From 8665cded49780ad148531af87cab22cb547c5644 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 16 May 2007 15:59:33 +0000 Subject: Mark tag for 8.4.15 (RC1) release --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index d6df74f..49407a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-05-16 Don Porter + + *** 8.4.15 TAGGED FOR RELEASE *** + 2007-05-15 Don Porter * generic/tclNamesp.c: Plugged memory leak related to -- cgit v0.12 From 84559f03ec630919d1408f2e2213391c87eb1452 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 16 May 2007 22:13:07 +0000 Subject: sync with HEAD tcl/changes --- changes | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/changes b/changes index 34e0745..bd66062 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.49 2007/05/15 16:08:21 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.50 2007/05/16 22:13:07 das Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6429,7 +6429,9 @@ URL validity checking against RFC 2986 (hobbs) 2006-11-27 (bug fix)[1602208] use > 32 async sockets on 64bit system (fontaine) -2007-01-30 (enhancement) new target: `make install-private-headers` (hobbs) +2007-01-25 (configure change) ensure CPPFLAGS env var used when set (steffen) + +2007-01-30 (enhancement) new target: `install-private-headers` (hobbs, steffen) 2007-02-12 (bug fix)[1516109] escape encodings crossing chan buffers (dejong) -- cgit v0.12 From 246e7a666d4f0c0bf123e52b3bd06d73e8d5c5d3 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 17 May 2007 14:18:41 +0000 Subject: * tests/fCmd.test: Backport the notNetworkFilesystem constraint. --- ChangeLog | 4 +++- tests/fCmd.test | 13 +++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 49407a5..c58fdca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,9 @@ -2007-05-16 Don Porter +2007-05-17 Don Porter *** 8.4.15 TAGGED FOR RELEASE *** + * tests/fCmd.test: Backport the notNetworkFilesystem constraint. + 2007-05-15 Don Porter * generic/tclNamesp.c: Plugged memory leak related to diff --git a/tests/fCmd.test b/tests/fCmd.test index c53f8d4..1491c76 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.26.2.8 2006/03/19 22:47:30 vincentdarley Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.26.2.9 2007/05/17 14:18:42 dgp Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -20,6 +20,7 @@ if {[lsearch [namespace children] ::tcltest] == -1} { tcltest::testConstraint testsetplatform [string equal testsetplatform [info commands testsetplatform]] tcltest::testConstraint testchmod [string equal testchmod [info commands testchmod]] +tcltest::testConstraint notNetworkFilesystem 0 testConstraint 95or98 [expr {[testConstraint 95] || [testConstraint 98]}] testConstraint 2000orNewer [expr {![testConstraint 95or98]}] @@ -485,7 +486,7 @@ test fCmd-6.14 {CopyRenameOneFile: source is file, target is dir} {notRoot} { file mkdir [file join td1 tf1] list [catch {file rename -force tf1 td1} msg] $msg } [subst {1 {can't overwrite directory "[file join td1 tf1]" with file "tf1"}}] -test fCmd-6.15 {CopyRenameOneFile: TclpRenameFile succeeds} {notRoot} { +test fCmd-6.15 {CopyRenameOneFile: TclpRenameFile succeeds} {notRoot notNetworkFilesystem} { cleanup file mkdir [file join td1 td2] file mkdir td2 @@ -754,7 +755,7 @@ test fCmd-9.7 {file rename: comprehensive: file to existing file} {notRoot testc file rename -force tfs4 tfd4 list [lsort [glob tf*]] $msg [file writable tfd1] [file writable tfd2] [file writable tfd3] [file writable tfd4] } {{tf1 tf2 tfd1 tfd2 tfd3 tfd4} {1 {error renaming "tf1" to "tf2": file already exists}} 1 1 0 0} -test fCmd-9.8 {file rename: comprehensive: dir to empty dir} {notRoot testchmod} { +test fCmd-9.8 {file rename: comprehensive: dir to empty dir} {notRoot testchmod notNetworkFilesystem} { # Under unix, you can rename a read-only directory, but you can't # move it into another directory. @@ -839,7 +840,7 @@ test fCmd-9.11 {file rename: comprehensive: dir to new name and dir} {notRoot te list [lsort [glob td*]] [lsort [glob -directory td3 t*]] \ [file writable [file join td3 td3]] $w4 } [subst {td3 {[file join td3 td3] [file join td3 td4]} 1 0}] -test fCmd-9.12 {file rename: comprehensive: target exists} {notRoot testchmod} { +test fCmd-9.12 {file rename: comprehensive: target exists} {notRoot testchmod notNetworkFilesystem} { cleanup file mkdir [file join td1 td2] [file join td2 td1] if {$tcl_platform(platform) != "macintosh"} { @@ -1702,7 +1703,7 @@ test fCmd-18.7 {TclFileRenameCmd: rename dir on top of another empty dir w/o -fo } {1} test fCmd-18.8 {TclFileRenameCmd: rename dir on top of another empty dir w/ -force} \ - {notRoot} { + {notRoot notNetworkFilesystem} { catch {file delete -force -- tfa tfad} file mkdir tfa tfad/tfa file rename -force tfa tfad @@ -1722,7 +1723,7 @@ test fCmd-18.9 {TclFileRenameCmd: rename dir on top of a non-empty dir w/o -forc } {1} test fCmd-18.10 {TclFileRenameCmd: rename dir on top of a non-empty dir w/ -force} \ - {notRoot} { + {notRoot notNetworkFilesystem} { catch {file delete -force -- tfa tfad} file mkdir tfa tfad/tfa/file set r1 [catch {file rename -force tfa tfad}] -- cgit v0.12 From e41721b3e56ae561e8519c3c0cfbddaf5430dd36 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 24 May 2007 19:31:54 +0000 Subject: * generic/tclIO.c: Backport memleak fix in TclFinalizeIOSubsystem. --- ChangeLog | 7 ++- generic/tclIO.c | 153 +++++++++++++++++++++++++++++--------------------------- 2 files changed, 85 insertions(+), 75 deletions(-) diff --git a/ChangeLog b/ChangeLog index c58fdca..7a7bab5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ -2007-05-17 Don Porter +2007-05-24 Don Porter *** 8.4.15 TAGGED FOR RELEASE *** + * generic/tclIO.c: Backport memleak fix in TclFinalizeIOSubsystem. + +2007-05-17 Don Porter + + * tests/fCmd.test: Backport the notNetworkFilesystem constraint. 2007-05-15 Don Porter diff --git a/generic/tclIO.c b/generic/tclIO.c index 407a88f..53824b0 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.22 2006/09/25 21:55:06 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.23 2007/05/24 19:31:55 dgp Exp $ */ #include "tclInt.h" @@ -204,97 +204,102 @@ TclInitIOSubsystem() /* ARGSUSED */ void -TclFinalizeIOSubsystem() +TclFinalizeIOSubsystem(void) { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - Channel *chanPtr; /* Iterates over open channels. */ - ChannelState *nextCSPtr; /* Iterates over open channels. */ - ChannelState *statePtr; /* state of channel stack */ + Channel *chanPtr = NULL; /* Iterates over open channels. */ + ChannelState *statePtr; /* State of channel stack */ + int active = 1; /* Flag == 1 while there's still work to do */ /* * Walk all channel state structures known to this thread and * close corresponding channels. */ - for (statePtr = tsdPtr->firstCSPtr; statePtr != (ChannelState *) NULL; - statePtr = nextCSPtr) { - chanPtr = statePtr->topChanPtr; + while (active) { - /* - * Set the channel back into blocking mode to ensure that we wait - * for all data to flush out. - */ - - (void) Tcl_SetChannelOption(NULL, (Tcl_Channel) chanPtr, - "-blocking", "on"); - - if ((chanPtr == (Channel *) tsdPtr->stdinChannel) || - (chanPtr == (Channel *) tsdPtr->stdoutChannel) || - (chanPtr == (Channel *) tsdPtr->stderrChannel)) { - /* - * Decrement the refcount which was earlier artificially bumped - * up to keep the channel from being closed. - */ + /* + * Iterate through the open channel list, and find the first + * channel that isn't dead. We start from the head of the list + * each time, because the close action on one channel can close + * others. + */ - statePtr->refCount--; - } + active = 0; + for (statePtr = tsdPtr->firstCSPtr; + statePtr != NULL; + statePtr = statePtr->nextCSPtr) { + chanPtr = statePtr->topChanPtr; + if (!(statePtr->flags & CHANNEL_DEAD)) { + active = 1; + break; + } + } /* - * Preserve statePtr from disappearing until we can get the - * nextCSPtr below. + * We've found a live channel. Close it. */ - Tcl_Preserve(statePtr); - - if (statePtr->refCount <= 0) { + if (active) { /* - * Close it only if the refcount indicates that the channel is not - * referenced from any interpreter. If it is, that interpreter will - * close the channel when it gets destroyed. - */ - - (void) Tcl_Close((Tcl_Interp *) NULL, (Tcl_Channel) chanPtr); - - } else { - - /* - * The refcount is greater than zero, so flush the channel. - */ - - Tcl_Flush((Tcl_Channel) chanPtr); - - /* - * Call the device driver to actually close the underlying - * device for this channel. - */ - - if (chanPtr->typePtr->closeProc != TCL_CLOSE2PROC) { - (chanPtr->typePtr->closeProc)(chanPtr->instanceData, - (Tcl_Interp *) NULL); + * Set the channel back into blocking mode to ensure that we + * wait for all data to flush out. + */ + + (void) Tcl_SetChannelOption(NULL, (Tcl_Channel) chanPtr, + "-blocking", "on"); + + if ((chanPtr == (Channel *) tsdPtr->stdinChannel) || + (chanPtr == (Channel *) tsdPtr->stdoutChannel) || + (chanPtr == (Channel *) tsdPtr->stderrChannel)) { + /* + * Decrement the refcount which was earlier artificially + * bumped up to keep the channel from being closed. + */ + + statePtr->refCount--; + } + + if (statePtr->refCount <= 0) { + /* + * Close it only if the refcount indicates that the channel + * is not referenced from any interpreter. If it is, that + * interpreter will close the channel when it gets destroyed. + */ + + (void) Tcl_Close(NULL, (Tcl_Channel) chanPtr); } else { - (chanPtr->typePtr->close2Proc)(chanPtr->instanceData, - (Tcl_Interp *) NULL, 0); + /* + * The refcount is greater than zero, so flush the channel. + */ + + Tcl_Flush((Tcl_Channel) chanPtr); + + /* + * Call the device driver to actually close the underlying + * device for this channel. + */ + + if (chanPtr->typePtr->closeProc != TCL_CLOSE2PROC) { + (chanPtr->typePtr->closeProc)(chanPtr->instanceData, NULL); + } else { + (chanPtr->typePtr->close2Proc)(chanPtr->instanceData, + NULL, 0); + } + + /* + * Finally, we clean up the fields in the channel data + * structure since all of them have been deleted already. + * We mark the channel with CHANNEL_DEAD to prevent any + * further IO operations + * on it. + */ + + chanPtr->instanceData = NULL; + statePtr->flags |= CHANNEL_DEAD; } - - /* - * Finally, we clean up the fields in the channel data structure - * since all of them have been deleted already. We mark the - * channel with CHANNEL_DEAD to prevent any further IO operations - * on it. - */ - - chanPtr->instanceData = (ClientData) NULL; - statePtr->flags |= CHANNEL_DEAD; - } - - /* - * We look for the next pointer now in case we had one closed on up - * during the current channel's closeproc (eg: rechan extension) - */ - - nextCSPtr = statePtr->nextCSPtr; - Tcl_Release(statePtr); + } } TclpFinalizeSockets(); -- cgit v0.12 From e68a11165d4c0cf69d5fb06da1b20e95cfbf446c Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 24 May 2007 19:52:21 +0000 Subject: typo --- ChangeLog | 1 - 1 file changed, 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7a7bab5..080c500 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,7 +6,6 @@ 2007-05-17 Don Porter - * tests/fCmd.test: Backport the notNetworkFilesystem constraint. 2007-05-15 Don Porter -- cgit v0.12 From dff8712f9e6e1998564fb828021902a37a3fcf36 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 29 May 2007 23:35:46 +0000 Subject: * unix/tclUnixThrd.c (Tcl_JoinThread): fix for 64-bit handling of pthread_join exit return code storage. [Bug 1712723] --- ChangeLog | 5 +++++ unix/tclUnixThrd.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 080c500..47365c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-05-29 Jeff Hobbs + + * unix/tclUnixThrd.c (Tcl_JoinThread): fix for 64-bit handling of + pthread_join exit return code storage. [Bug 1712723] + 2007-05-24 Don Porter *** 8.4.15 TAGGED FOR RELEASE *** diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index b95e8f7..b74419b 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -165,8 +165,12 @@ Tcl_JoinThread(threadId, state) { #ifdef TCL_THREADS int result; + unsigned long retcode; - result = pthread_join ((pthread_t) threadId, (VOID**) state); + result = pthread_join((pthread_t) threadId, (void**) &retcode); + if (state) { + *state = (int) retcode; + } return (result == 0) ? TCL_OK : TCL_ERROR; #else return TCL_ERROR; -- cgit v0.12 From 47eb01dd6c11df908cd26c814d3cf6cb80abd4dd Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 30 May 2007 14:05:15 +0000 Subject: * README: Bump version number to 8.4.16 * generic/tcl.h: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf-2.13 * win/configure: --- ChangeLog | 13 +++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 39 +++++++++++++++++++++++++++++---------- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 39 +++++++++++++++++++++++++++++---------- win/configure.in | 4 ++-- 10 files changed, 85 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index 47365c5..a387cfb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2007-05-30 Don Porter + + * README: Bump version number to 8.4.16 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf-2.13 + * win/configure: + 2007-05-29 Jeff Hobbs * unix/tclUnixThrd.c (Tcl_JoinThread): fix for 64-bit handling of diff --git a/README b/README index f3dd44a..fed15bc 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.15 source distribution. + This is the Tcl 8.4.16 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.18 2006/10/23 17:53:23 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.19 2007/05/30 14:05:17 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 128b83c..5d0dbab 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.30 2006/10/23 17:53:26 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.31 2007/05/30 14:05:18 dgp Exp $ */ #ifndef _TCL @@ -59,10 +59,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 15 +#define TCL_RELEASE_SERIAL 16 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.15" +#define TCL_PATCH_LEVEL "8.4.16" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 7918eca..7cddf44 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.15 + Disk Label=tcl8.4.16 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 99246a6..3a8f124 100755 --- a/unix/configure +++ b/unix/configure @@ -554,7 +554,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".15" +TCL_PATCH_LEVEL=".16" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ @@ -9318,15 +9318,34 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed # Without the "./", some shells look in PATH for config.status. diff --git a/unix/configure.in b/unix/configure.in index 8d7dc2f..b950dd7 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.35 2007/04/29 02:20:38 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.36 2007/05/30 14:05:21 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".15" +TCL_PATCH_LEVEL=".16" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index bce0c4c..9eba641 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.15 2006/10/23 17:53:28 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.16 2007/05/30 14:05:21 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.15 +%define version 8.4.16 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index ddcdc78..c1267f7 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.15 2006/10/23 17:53:28 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.16 2007/05/30 14:05:21 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.15 for +This directory contains the binary distribution of Tcl/Tk 8.4.16 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 47427bb..4216bc6 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".15" +TCL_PATCH_LEVEL=".16" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 @@ -2164,15 +2164,34 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed # Without the "./", some shells look in PATH for config.status. diff --git a/win/configure.in b/win/configure.in index 2d604fa..5191f93 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.19 2006/10/23 17:53:28 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.20 2007/05/30 14:05:22 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".15" +TCL_PATCH_LEVEL=".16" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From d83ddf016648e67cdf9280265c2f62cdf1d87294 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 5 Jun 2007 17:54:55 +0000 Subject: * tests/result.test (result-6.2): Add test for Bug 1649062 so that 8.4 and 8.5 both test the same outcome and we verify compatibility. --- ChangeLog | 5 +++++ tests/result.test | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/ChangeLog b/ChangeLog index a387cfb..6c66acd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-06-05 Don Porter + + * tests/result.test (result-6.2): Add test for Bug 1649062 so + that 8.4 and 8.5 both test the same outcome and we verify compatibility. + 2007-05-30 Don Porter * README: Bump version number to 8.4.16 diff --git a/tests/result.test b/tests/result.test index ec26b64..cf46eb9 100644 --- a/tests/result.test +++ b/tests/result.test @@ -109,6 +109,22 @@ test result-5.4 {Tcl_SetErrorCode - two args, list quoting} testseterrorcode { set errorCode } {{a b} c} +test result-6.2 {Bug 1649062} -setup { + proc foo {} { + if {[catch { + return -code error -errorinfo custom -errorcode CUSTOM foo + } err]} { + return [list $err $::errorCode $::errorInfo] + } + } + set ::errorInfo {} + set ::errorCode {} +} -body { + foo +} -cleanup { + rename foo {} +} -result {foo {} {}} + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 620d54c9059d936d9a3cc73fc1fb7a5da13b70f6 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 6 Jun 2007 09:54:32 +0000 Subject: * unix/configure.in (Darwin): add plist for tclsh; link the * unix/Makefile.in (Darwin): Tcl and tclsh plists into their * macosx/Tclsh-Info.plist.in (new): binaries in all cases. * unix/tcl.m4 (Darwin): fix CF checks in fat 32&64bit builds. * unix/configure: autoconf-2.13 --- ChangeLog | 9 + macosx/Tclsh-Info.plist.in | 38 +++ unix/Makefile.in | 6 +- unix/configure | 674 ++++++++++++++++++++++----------------------- unix/configure.in | 7 +- unix/tcl.m4 | 23 +- 6 files changed, 401 insertions(+), 356 deletions(-) create mode 100644 macosx/Tclsh-Info.plist.in diff --git a/ChangeLog b/ChangeLog index 6c66acd..f58d3bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-06-06 Daniel Steffen + + * unix/configure.in (Darwin): add plist for tclsh; link the + * unix/Makefile.in (Darwin): Tcl and tclsh plists into their + * macosx/Tclsh-Info.plist.in (new): binaries in all cases. + + * unix/tcl.m4 (Darwin): fix CF checks in fat 32&64bit builds. + * unix/configure: autoconf-2.13 + 2007-06-05 Don Porter * tests/result.test (result-6.2): Add test for Bug 1649062 so diff --git a/macosx/Tclsh-Info.plist.in b/macosx/Tclsh-Info.plist.in new file mode 100644 index 0000000..6d96930 --- /dev/null +++ b/macosx/Tclsh-Info.plist.in @@ -0,0 +1,38 @@ + + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + tclsh@TCL_VERSION@ + CFBundleGetInfoString + Tcl Shell @TCL_VERSION@@TCL_PATCH_LEVEL@, +Copyright © @TCL_YEAR@ Tcl Core Team, +Copyright © 2001-@TCL_YEAR@ Daniel A. Steffen, +Initial MacOS X Port by Jim Ingham & Ian Reid, +Copyright © 2001-2002, Apple Computer, Inc. + CFBundleIdentifier + com.tcltk.tclsh + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + tclsh + CFBundlePackageType + APPL + CFBundleShortVersionString + @TCL_VERSION@@TCL_PATCH_LEVEL@ + CFBundleSignature + TclS + CFBundleVersion + @TCL_VERSION@@TCL_PATCH_LEVEL@ + + diff --git a/unix/Makefile.in b/unix/Makefile.in index 53302fd..3ecdd33 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.20 2007/04/30 22:58:18 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.21 2007/06/06 09:54:33 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -492,7 +492,7 @@ objs: ${OBJS} tclsh: ${TCLSH_OBJS} ${TCL_LIB_FILE} - ${CC} ${CFLAGS} ${LDFLAGS} ${TCLSH_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} \ + ${CC} ${CFLAGS} ${LDFLAGS} ${TCLSH_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} @EXTRA_TCLSH_LIBS@ \ ${CC_SEARCH_FLAGS} -o tclsh # Resetting the LIB_RUNTIME_DIR below is required so that @@ -504,7 +504,7 @@ tcltest: ${TCLTEST_OBJS} ${TCL_LIB_FILE} ${BUILD_DLTEST} $(MAKE) tcltest-real LIB_RUNTIME_DIR=`pwd` tcltest-real: - ${CC} ${CFLAGS} ${LDFLAGS} ${TCLTEST_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} \ + ${CC} ${CFLAGS} ${LDFLAGS} ${TCLTEST_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} @EXTRA_TCLSH_LIBS@ \ ${CC_SEARCH_FLAGS} -o tcltest # Note, in the target below TCL_LIBRARY needs to be set or else diff --git a/unix/configure b/unix/configure index 3a8f124..d1d646c 100755 --- a/unix/configure +++ b/unix/configure @@ -3647,13 +3647,13 @@ if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - hold_libs=$LIBS; hold_cflags=$CFLAGS - if test "$fat_32_64" = yes; then + hold_libs=$LIBS + if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do # On Tiger there is no 64-bit CF, so remove 64-bit archs - # from CFLAGS while testing for presence of CF. + # from CFLAGS et al. while testing for presence of CF. # 64-bit CF is disabled in tclUnixPort.h if necessary. - CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc64 / /g' -e 's/-arch x86_64 / /g'`" - fi + eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"' + done; fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext <&6 @@ -3688,22 +3690,23 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3692: checking for 64-bit CoreFoundation" >&5 +echo "configure:3694: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - hold_cflags=$CFLAGS - CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" + for v in CFLAGS CPPFLAGS LDFLAGS; do + eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"' + done cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -3713,7 +3716,9 @@ else tcl_cv_lib_corefoundation_64=no fi rm -f conftest* - CFLAGS=$hold_cflags + for v in CFLAGS CPPFLAGS LDFLAGS; do + eval $v'="$hold_'$v'"' + done fi echo "$ac_t""$tcl_cv_lib_corefoundation_64" 1>&6 @@ -4016,7 +4021,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4020: checking for ld accepts -Bexport flag" >&5 +echo "configure:4025: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4024,14 +4029,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4081,13 +4086,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4085: checking sys/exec.h" >&5 +echo "configure:4090: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4105,7 +4110,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4109: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4114: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4125,13 +4130,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4129: checking a.out.h" >&5 +echo "configure:4134: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4149,7 +4154,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4153: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4158: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4169,13 +4174,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4173: checking sys/exec_aout.h" >&5 +echo "configure:4178: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4193,7 +4198,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4346,7 +4351,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4350: checking for build with symbols" >&5 +echo "configure:4355: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4407,21 +4412,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4411: checking for required early compiler flags" >&5 +echo "configure:4416: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4429,7 +4434,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4437,7 +4442,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4446: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4464,14 +4469,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4480: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4479,7 +4484,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4487,7 +4492,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4496: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4514,14 +4519,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4525: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4529,7 +4534,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4537,7 +4542,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4541: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4546: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4568,7 +4573,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4572: checking for 64-bit integer type" >&5 +echo "configure:4577: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4576,14 +4581,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4592: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4597,7 +4602,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4631,13 +4636,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4635: checking for struct dirent64" >&5 +echo "configure:4640: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4645,7 +4650,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4666,13 +4671,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4670: checking for struct stat64" >&5 +echo "configure:4675: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4680,7 +4685,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4703,12 +4708,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4707: checking for $ac_func" >&5 +echo "configure:4712: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4756,13 +4761,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4760: checking for off64_t" >&5 +echo "configure:4765: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4770,7 +4775,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4802,14 +4807,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4806: checking whether byte ordering is bigendian" >&5 +echo "configure:4811: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4820,11 +4825,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4835,7 +4840,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4839: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4844: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4855,7 +4860,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4901,12 +4906,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4905: checking for $ac_func" >&5 +echo "configure:4910: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4963,12 +4968,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4967: checking for $ac_func" >&5 +echo "configure:4972: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5018,12 +5023,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5022: checking for strerror" >&5 +echo "configure:5027: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5070,12 +5075,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5074: checking for getwd" >&5 +echo "configure:5079: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5122,12 +5127,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5126: checking for wait3" >&5 +echo "configure:5131: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5174,12 +5179,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5178: checking for uname" >&5 +echo "configure:5183: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5233,12 +5238,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5237: checking for realpath" >&5 +echo "configure:5242: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5291,12 +5296,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5295: checking for getpwuid_r" >&5 +echo "configure:5300: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5335,13 +5340,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5339: checking for getpwuid_r with 5 args" >&5 +echo "configure:5344: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5358,7 +5363,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5362: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5379,13 +5384,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5383: checking for getpwuid_r with 4 args" >&5 +echo "configure:5388: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5402,7 +5407,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5411: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5435,12 +5440,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5439: checking for getpwnam_r" >&5 +echo "configure:5444: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5479,13 +5484,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5483: checking for getpwnam_r with 5 args" >&5 +echo "configure:5488: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5502,7 +5507,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5523,13 +5528,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5527: checking for getpwnam_r with 4 args" >&5 +echo "configure:5532: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5546,7 +5551,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5555: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5579,12 +5584,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5583: checking for getgrgid_r" >&5 +echo "configure:5588: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5623,13 +5628,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5627: checking for getgrgid_r with 5 args" >&5 +echo "configure:5632: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5646,7 +5651,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5655: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5667,13 +5672,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5671: checking for getgrgid_r with 4 args" >&5 +echo "configure:5676: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5690,7 +5695,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5723,12 +5728,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5727: checking for getgrnam_r" >&5 +echo "configure:5732: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5767,13 +5772,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5771: checking for getgrnam_r with 5 args" >&5 +echo "configure:5776: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5790,7 +5795,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5794: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5811,13 +5816,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5815: checking for getgrnam_r with 4 args" >&5 +echo "configure:5820: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5834,7 +5839,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5838: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5894,12 +5899,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5898: checking for gethostbyname_r" >&5 +echo "configure:5903: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5938,13 +5943,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5942: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5947: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5961,7 +5966,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5982,13 +5987,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5986: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5991: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6005,7 +6010,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6026,13 +6031,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6030: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6035: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6047,7 +6052,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6081,12 +6086,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6085: checking for gethostbyaddr_r" >&5 +echo "configure:6090: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6125,13 +6130,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6129: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6134: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6151,7 +6156,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6155: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6160: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6172,13 +6177,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6176: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6181: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6198,7 +6203,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6207: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6244,17 +6249,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6248: checking for $ac_hdr" >&5 +echo "configure:6253: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6263: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6281,7 +6286,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6285: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6290: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6290,7 +6295,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6305,7 +6310,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6322,7 +6327,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6336,7 +6341,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6354,7 +6359,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6369,7 +6374,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6387,7 +6392,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6404,7 +6409,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6422,7 +6427,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6438,7 +6443,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6456,7 +6461,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6473,7 +6478,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6516,20 +6521,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6520: checking for fd_set in sys/types" >&5 +echo "configure:6525: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6545,13 +6550,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6549: checking for fd_mask in sys/select" >&5 +echo "configure:6554: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6588,12 +6593,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6592: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6597: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6601,7 +6606,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6626,17 +6631,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6630: checking for $ac_hdr" >&5 +echo "configure:6635: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6663,12 +6668,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6667: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6672: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6677,7 +6682,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6698,12 +6703,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6702: checking for tm_zone in struct tm" >&5 +echo "configure:6707: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6711,7 +6716,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6731,12 +6736,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6735: checking for tzname" >&5 +echo "configure:6740: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6746,7 +6751,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6771,12 +6776,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6775: checking for $ac_func" >&5 +echo "configure:6780: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6825,20 +6830,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6829: checking tm_tzadj in struct tm" >&5 +echo "configure:6834: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6859,20 +6864,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6863: checking tm_gmtoff in struct tm" >&5 +echo "configure:6868: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6897,13 +6902,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6901: checking long timezone variable" >&5 +echo "configure:6906: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6912,7 +6917,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6916: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6935,13 +6940,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6939: checking time_t timezone variable" >&5 +echo "configure:6944: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6950,7 +6955,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6959: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6977,12 +6982,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6981: checking for st_blksize in struct stat" >&5 +echo "configure:6986: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6990,7 +6995,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7011,12 +7016,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:7015: checking for fstatfs" >&5 +echo "configure:7020: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7068,7 +7073,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7072: checking for 8-bit clean memcmp" >&5 +echo "configure:7077: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7076,7 +7081,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7110,12 +7115,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7114: checking for memmove" >&5 +echo "configure:7119: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7171,7 +7176,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7175: checking proper strstr implementation" >&5 +echo "configure:7180: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7180,7 +7185,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7216,12 +7221,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7220: checking for strtoul" >&5 +echo "configure:7225: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7266,7 +7271,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7270: checking proper strtoul implementation" >&5 +echo "configure:7275: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7275,7 +7280,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7320,12 +7325,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7324: checking for strtod" >&5 +echo "configure:7329: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7370,7 +7375,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7374: checking proper strtod implementation" >&5 +echo "configure:7379: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7379,7 +7384,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7427,12 +7432,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7431: checking for strtod" >&5 +echo "configure:7436: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7477,7 +7482,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7481: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7486: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7486,7 +7491,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7540,12 +7545,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7544: checking for ANSI C header files" >&5 +echo "configure:7549: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7553,7 +7558,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7570,7 +7575,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7588,7 +7593,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7609,7 +7614,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7620,7 +7625,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7644,12 +7649,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7648: checking for mode_t" >&5 +echo "configure:7653: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7677,12 +7682,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7681: checking for pid_t" >&5 +echo "configure:7686: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7710,12 +7715,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7714: checking for size_t" >&5 +echo "configure:7719: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7743,12 +7748,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7747: checking for uid_t in sys/types.h" >&5 +echo "configure:7752: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7778,13 +7783,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7782: checking for socklen_t" >&5 +echo "configure:7787: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7823,12 +7828,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7827: checking for opendir" >&5 +echo "configure:7832: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7884,13 +7889,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7888: checking union wait" >&5 +echo "configure:7893: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7902,7 +7907,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7929,12 +7934,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7933: checking for strncasecmp" >&5 +echo "configure:7938: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7979,7 +7984,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7983: checking for strncasecmp in -lsocket" >&5 +echo "configure:7988: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7987,7 +7992,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8022,7 +8027,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8026: checking for strncasecmp in -linet" >&5 +echo "configure:8031: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8030,7 +8035,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8079,12 +8084,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8083: checking for BSDgettimeofday" >&5 +echo "configure:8088: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8129,12 +8134,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8133: checking for gettimeofday" >&5 +echo "configure:8138: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8184,13 +8189,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8188: checking for gettimeofday declaration" >&5 +echo "configure:8193: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8221,14 +8226,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8225: checking whether char is unsigned" >&5 +echo "configure:8230: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8284,13 +8289,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8288: checking signed char declarations" >&5 +echo "configure:8293: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8309: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8325,7 +8330,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8329: checking for a putenv() that copies the buffer" >&5 +echo "configure:8334: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8334,7 +8339,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8356,7 +8361,7 @@ else } EOF -if { (eval echo configure:8360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8396,17 +8401,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8400: checking for langinfo.h" >&5 +echo "configure:8405: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8410: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8415: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8430,21 +8435,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8434: checking whether to use nl_langinfo" >&5 +echo "configure:8439: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8477,17 +8482,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8481: checking for $ac_hdr" >&5 +echo "configure:8486: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8491: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8516,12 +8521,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8520: checking for $ac_func" >&5 +echo "configure:8525: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8573,17 +8578,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8577: checking for $ac_hdr" >&5 +echo "configure:8582: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8592: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8612,12 +8617,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8616: checking for $ac_func" >&5 +echo "configure:8621: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8667,12 +8672,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8671: checking for $ac_func" >&5 +echo "configure:8676: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8736,17 +8741,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8740: checking for $ac_hdr" >&5 +echo "configure:8745: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8750: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8755: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8774,14 +8779,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8778: checking if weak import is available" >&5 +echo "configure:8783: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8825,13 +8830,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8829: checking for fts" >&5 +echo "configure:8834: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8846,7 +8851,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8878,17 +8883,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8882: checking for $ac_hdr" >&5 +echo "configure:8887: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8918,17 +8923,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8922: checking for $ac_hdr" >&5 +echo "configure:8927: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8937: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8956,7 +8961,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8960: checking system version" >&5 +echo "configure:8965: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8987,7 +8992,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8991: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8996: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9050,7 +9055,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9054: checking how to package libraries" >&5 +echo "configure:9059: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -9084,6 +9089,9 @@ fi TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version ${TCL_VERSION}`echo ${TCL_PATCH_LEVEL} | awk '{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}'`" TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' + TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tcl-Info.plist' + EXTRA_TCLSH_LIBS='-sectcreate __TEXT __info_plist Tclsh-Info.plist' + tcl_config_files="${tcl_config_files} Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in" fi if test "$FRAMEWORK_BUILD" = "1" ; then @@ -9091,7 +9099,6 @@ if test "$FRAMEWORK_BUILD" = "1" ; then #define TCL_FRAMEWORK 1 EOF - tcl_config_files="${tcl_config_files} Tcl-Info.plist:../macosx/Tcl-Info.plist.in" # Construct a fake local framework structure to make linking with # '-framework Tcl' and running of tcltest work @@ -9248,6 +9255,7 @@ TCL_SHARED_BUILD=${SHARED_BUILD} + CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS="" @@ -9318,34 +9326,15 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs # Without the "./", some shells look in PATH for config.status. @@ -9487,6 +9476,7 @@ s%@EXTRA_CC_SWITCHES@%$EXTRA_CC_SWITCHES%g s%@EXTRA_INSTALL@%$EXTRA_INSTALL%g s%@EXTRA_INSTALL_BINARIES@%$EXTRA_INSTALL_BINARIES%g s%@EXTRA_BUILD_HTML@%$EXTRA_BUILD_HTML%g +s%@EXTRA_TCLSH_LIBS@%$EXTRA_TCLSH_LIBS%g CEOF EOF diff --git a/unix/configure.in b/unix/configure.in index b950dd7..a995914 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.36 2007/05/30 14:05:21 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.37 2007/06/06 09:54:35 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -558,11 +558,13 @@ if test "`uname -s`" = "Darwin" ; then SC_ENABLE_FRAMEWORK TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version ${TCL_VERSION}`echo ${TCL_PATCH_LEVEL} | awk ['{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}']`" TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' + TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tcl-Info.plist' + EXTRA_TCLSH_LIBS='-sectcreate __TEXT __info_plist Tclsh-Info.plist' + tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in]" fi if test "$FRAMEWORK_BUILD" = "1" ; then AC_DEFINE(TCL_FRAMEWORK) - tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in]" # Construct a fake local framework structure to make linking with # '-framework Tcl' and running of tcltest work AC_OUTPUT_COMMANDS([test "$FRAMEWORK_BUILD" = "1" && n=Tcl && @@ -724,6 +726,7 @@ AC_SUBST(EXTRA_CC_SWITCHES) AC_SUBST(EXTRA_INSTALL) AC_SUBST(EXTRA_INSTALL_BINARIES) AC_SUBST(EXTRA_BUILD_HTML) +AC_SUBST(EXTRA_TCLSH_LIBS) SC_OUTPUT_COMMANDS_PRE diff --git a/unix/tcl.m4 b/unix/tcl.m4 index cf27917..6b087dc 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1644,18 +1644,20 @@ dnl AC_CHECK_TOOL(AR, ar) AC_MSG_RESULT([$tcl_corefoundation]) if test $tcl_corefoundation = yes; then AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [ - hold_libs=$LIBS; hold_cflags=$CFLAGS - if test "$fat_32_64" = yes; then + hold_libs=$LIBS + if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do # On Tiger there is no 64-bit CF, so remove 64-bit archs - # from CFLAGS while testing for presence of CF. + # from CFLAGS et al. while testing for presence of CF. # 64-bit CF is disabled in tclUnixPort.h if necessary. - CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc64 / /g' -e 's/-arch x86_64 / /g'`" - fi + eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"' + done; fi LIBS="$LIBS -framework CoreFoundation" AC_TRY_LINK([#include ], [CFBundleRef b = CFBundleGetMainBundle();], tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no) - LIBS=$hold_libs; CFLAGS=$hold_cflags]) + if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do + eval $v'="$hold_'$v'"' + done; fi; LIBS=$hold_libs]) if test $tcl_cv_lib_corefoundation = yes; then LIBS="$LIBS -framework CoreFoundation" AC_DEFINE(HAVE_COREFOUNDATION) @@ -1664,12 +1666,15 @@ dnl AC_CHECK_TOOL(AR, ar) fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then AC_CACHE_CHECK([for 64-bit CoreFoundation], tcl_cv_lib_corefoundation_64, [ - hold_cflags=$CFLAGS - CFLAGS="`echo "$CFLAGS " | sed -e 's/-arch ppc / /g' -e 's/-arch i386 / /g'`" + for v in CFLAGS CPPFLAGS LDFLAGS; do + eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"' + done AC_TRY_LINK([#include ], [CFBundleRef b = CFBundleGetMainBundle();], tcl_cv_lib_corefoundation_64=yes, tcl_cv_lib_corefoundation_64=no) - CFLAGS=$hold_cflags]) + for v in CFLAGS CPPFLAGS LDFLAGS; do + eval $v'="$hold_'$v'"' + done]) if test $tcl_cv_lib_corefoundation_64 = no; then AC_DEFINE(NO_COREFOUNDATION_64) fi -- cgit v0.12 From c0eed741bb105f7eee2f2a4e2764e489a7972a37 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sun, 10 Jun 2007 21:11:58 +0000 Subject: * README: updated links. [Bug 1715081] --- ChangeLog | 4 ++++ README | 42 +++++++++++++++--------------------------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index f58d3bf..6093908 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-06-10 Jeff Hobbs + + * README: updated links. [Bug 1715081] + 2007-06-06 Daniel Steffen * unix/configure.in (Darwin): add plist for tclsh; link the diff --git a/README b/README index fed15bc..51f8419 100644 --- a/README +++ b/README @@ -5,7 +5,7 @@ README: Tcl You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.19 2007/05/30 14:05:17 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.20 2007/06/10 21:12:02 hobbs Exp $ Contents -------- @@ -98,19 +98,14 @@ about building Tcl from sources at http://www.tcl.tk/doc/howto/compile.html -4. TclPro Development tools +4. Development tools --------------------------- -A high quality set of commercial quality development tools is available to -accelerate your Tcl application development. The TclPro product provides a -debugger, static code checker, packaging utility, and bytecode compiler. -TclPro was open-sourced when Scriptics/Ajuba was acquired by Interwoven. -Visit its home at SourceForge for more information and source/binaries: - - http://tclpro.sourceforge.net/ - -ActiveState has picked up support for commercial Tcl development tools. -More information can be found at +ActiveState produces a high quality set of commercial quality development +tools that is available to accelerate your Tcl application development. +Tcl Dev Kit builds on the earlier TclPro toolset and provides a debugger, +static code checker, single-file wrapping utility, bytecode compiler and +more. More information can be found at http://www.ActiveState.com/Tcl @@ -124,27 +119,20 @@ a USENET news group, "comp.lang.tcl.announce", intended to announce new releases of software, training, and more. For bug reports, please see the "Support and bug fixes" section below. -6. Tcl contributed archive --------------------------- - -Many people have created exciting packages and applications based on Tcl -and/or Tk and made them freely available to the Tcl community. An archive -of these contributions is kept on the machine ftp://archives.tcl.tk/pub/tcl -(aka ftp://ftp.procplace.com/pub/tcl). You can access the archive using -anonymous FTP. The archive also contains several FAQ ("frequently asked -questions") documents that provide solutions to problems that are commonly -encountered by Tcl newcomers. - -7. The Tcler's Wiki +6. The Tcler's Wiki ------------------- A Wiki-based open community site covering all aspects of Tcl/Tk is at: http://wiki.tcl.tk/ -A wealth of useful information can be found there. +It is dedicated to the Tcl programming language and its extensions. A +wealth of useful information can be found there. It contains code +snippets, references to papers, books, and FAQs, as well as pointers to +development tools, extensions, and applications. You can also recommend +additional URLs by editing the wiki yourself. -8. Mailing lists +7. Mailing lists ---------------- Several mailing lists are hosted at SourceForge to discuss development or @@ -155,7 +143,7 @@ to subscribe, visit: and go to the Mailing Lists page. -9. Support and Training +8. Support and Training ------------------------ We are very interested in receiving bug reports, patches, and suggestions -- cgit v0.12 From a384f578db158e03a8216ded58a85f751f9bc2a4 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 23 Jun 2007 00:23:42 +0000 Subject: * macosx/tclMacOSXNotify.c (AtForkChild): don't call CoreFoundation APIs after fork() on systems where that would lead to an abort(). --- ChangeLog | 11 ++++++++--- macosx/tclMacOSXNotify.c | 25 ++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6093908..44f23fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-06-23 Daniel Steffen + + * macosx/tclMacOSXNotify.c (AtForkChild): don't call CoreFoundation + APIs after fork() on systems where that would lead to an abort(). + 2007-06-10 Jeff Hobbs * README: updated links. [Bug 1715081] @@ -13,8 +18,8 @@ 2007-06-05 Don Porter - * tests/result.test (result-6.2): Add test for Bug 1649062 so - that 8.4 and 8.5 both test the same outcome and we verify compatibility. + * tests/result.test (result-6.2): Add test for [Bug 1649062] so that + 8.4 and 8.5 both test the same outcome and we verify compatibility. 2007-05-30 Don Porter @@ -52,7 +57,7 @@ * changes: updates for 8.4.15 release. * win/tclWinReg.c: Bump to registry 1.1.5 to account - * library/reg/pkgIndex.tcl: for [1682211] bug fix. + * library/reg/pkgIndex.tcl: for [Bug 1682211] fix. 2007-05-10 Don Porter diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index ea94e8e..e6ae7b3 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.12 2007/04/29 02:21:33 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.13 2007/06/23 00:23:42 das Exp $ */ #include "tclInt.h" @@ -289,6 +289,21 @@ static void AtForkChild(void); extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)) WEAK_IMPORT_ATTRIBUTE; #endif /* HAVE_WEAK_IMPORT */ +#ifdef __LP64__ +/* + * On 64bit Darwin 9 and later, it is not possible to call CoreFoundation after + * a fork. + */ +#if !defined(MAC_OS_X_VERSION_MIN_REQUIRED) || + MAC_OS_X_VERSION_MIN_REQUIRED < 1050 +MODULE_SCOPE long tclMacOSXDarwinRelease; +#define noCFafterFork (tclMacOSXDarwinRelease >= 9) +#else /* MAC_OS_X_VERSION_MIN_REQUIRED */ +#define noCFafterFork 1 +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED */ +#else /* __LP64__ */ +#define noCFafterFork 0 +#endif /* __LP64__ */ #endif /* HAVE_PTHREAD_ATFORK */ /* @@ -1257,7 +1272,9 @@ AtForkChild(void) UNLOCK_NOTIFIER_INIT; if (tsdPtr->runLoop) { tsdPtr->runLoop = NULL; - CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); + if (!noCFafterFork) { + CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); + } CFRelease(tsdPtr->runLoopSource); tsdPtr->runLoopSource = NULL; } @@ -1273,7 +1290,9 @@ AtForkChild(void) * Tcl_AlertNotifier may break in the child. */ - Tcl_InitNotifier(); + if (!noCFafterFork) { + Tcl_InitNotifier(); + } } } #endif /* HAVE_PTHREAD_ATFORK */ -- cgit v0.12 From 508902e0fee4e8981302823b171f4fb6ddb7f50d Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 27 Jun 2007 17:29:20 +0000 Subject: * generic/tclCmdMZ.c: Corrected broken trace reversal logic in * generic/tclTest.c: TclCheckInterpTraces that led to infinite loop * tests/basic.test: when multiple Tcl_CreateTrace traces were set and one of them did not fire due to level restrictions. [Bug 1743931]. --- ChangeLog | 7 +++++++ generic/tclCmdMZ.c | 8 ++++---- generic/tclTest.c | 21 ++++++++++++++++++--- tests/basic.test | 6 +++++- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 44f23fd..f9da895 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-06-27 Don Porter + + * generic/tclCmdMZ.c: Corrected broken trace reversal logic in + * generic/tclTest.c: TclCheckInterpTraces that led to infinite loop + * tests/basic.test: when multiple Tcl_CreateTrace traces were set and + one of them did not fire due to level restrictions. [Bug 1743931]. + 2007-06-23 Daniel Steffen * macosx/tclMacOSXNotify.c (AtForkChild): don't call CoreFoundation diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index b663f16..9114e50 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.28 2007/05/10 18:23:58 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.29 2007/06/27 17:29:22 dgp Exp $ */ #include "tclInt.h" @@ -4445,6 +4445,9 @@ TclCheckInterpTraces(interp, command, numChars, cmdPtr, code, active.nextTracePtr = tracePtr; tracePtr = tracePtr->nextPtr; } + if (active.nextTracePtr) { + lastTracePtr = active.nextTracePtr->nextPtr; + } } else { active.reverseScan = 0; active.nextTracePtr = tracePtr->nextPtr; @@ -4491,9 +4494,6 @@ TclCheckInterpTraces(interp, command, numChars, cmdPtr, code, tracePtr->flags &= ~TCL_TRACE_EXEC_IN_PROGRESS; Tcl_Release((ClientData) tracePtr); } - if (active.nextTracePtr) { - lastTracePtr = active.nextTracePtr->nextPtr; - } } iPtr->activeInterpTracePtr = active.nextPtr; return(traceCode); diff --git a/generic/tclTest.c b/generic/tclTest.c index 73ef0ab..433444b 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.13 2006/09/22 01:26:23 andreas_kupries Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.14 2007/06/27 17:29:23 dgp Exp $ */ #define TCL_TEST @@ -1165,10 +1165,25 @@ TestcmdtraceCmd(dummy, interp, argc, argv) } else { return result; } - + } else if ( strcmp(argv[1], "doubletest" ) == 0 ) { + Tcl_Trace t1, t2; + + Tcl_DStringInit(&buffer); + t1 = Tcl_CreateTrace(interp, 1, + (Tcl_CmdTraceProc *) CmdTraceProc, (ClientData) &buffer); + t2 = Tcl_CreateTrace(interp, 50000, + (Tcl_CmdTraceProc *) CmdTraceProc, (ClientData) &buffer); + result = Tcl_Eval(interp, argv[2]); + if (result == TCL_OK) { + Tcl_ResetResult(interp); + Tcl_AppendResult(interp, Tcl_DStringValue(&buffer), NULL); + } + Tcl_DeleteTrace(interp, t2); + Tcl_DeleteTrace(interp, t1); + Tcl_DStringFree(&buffer); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], - "\": must be tracetest, deletetest or resulttest", + "\": must be tracetest, deletetest, doubletest or resulttest", (char *) NULL); return TCL_ERROR; } diff --git a/tests/basic.test b/tests/basic.test index 0a995ba..b267c16 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.25.2.7 2005/03/18 16:33:43 dgp Exp $ +# RCS: @(#) $Id: basic.test,v 1.25.2.8 2007/06/27 17:29:24 dgp Exp $ # package require tcltest 2 @@ -564,6 +564,10 @@ test basic-39.10 {Tcl_CreateTrace, correct level interpretation} {testcmdtrace} testcmdtrace leveltest {foo} } {foo {foo} {uplevel 1 bar} {uplevel 1 bar} bar {bar} {uplevel 1 grok} {uplevel 1 grok}} +test basic-39.11 {Tcl_CreateTrace, multiple traces} {testcmdtrace} { + testcmdtrace doubletest {format xx} +} {{format xx} {format xx}} + test basic-40.1 {Tcl_DeleteTrace} {emptyTest} { # the above tests have tested Tcl_DeleteTrace } {} -- cgit v0.12 From 7c919ec8cb01aa1aa873b2988adeea684e33ccf1 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 27 Jun 2007 17:30:29 +0000 Subject: formatting --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f9da895..b75b531 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,8 +2,8 @@ * generic/tclCmdMZ.c: Corrected broken trace reversal logic in * generic/tclTest.c: TclCheckInterpTraces that led to infinite loop - * tests/basic.test: when multiple Tcl_CreateTrace traces were set and - one of them did not fire due to level restrictions. [Bug 1743931]. + * tests/basic.test: when multiple Tcl_CreateTrace traces were set + and one of them did not fire due to level restrictions. [Bug 1743931]. 2007-06-23 Daniel Steffen -- cgit v0.12 From 18e1cd3cc3f1062987089b2d89e4950fdf892f37 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 29 Jun 2007 03:17:32 +0000 Subject: * generic/tclAlloc.c: on Darwin, ensure memory allocated by * generic/tclThreadAlloc.c: the custom TclpAlloc()s is aligned to 16 byte boundaries (as is the case with the Darwin system malloc). --- ChangeLog | 6 ++++ generic/tclAlloc.c | 34 ++++++++++++-------- generic/tclThreadAlloc.c | 81 ++++++++++++++++++++++++++---------------------- 3 files changed, 71 insertions(+), 50 deletions(-) diff --git a/ChangeLog b/ChangeLog index b75b531..1282067 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-06-29 Daniel Steffen + + * generic/tclAlloc.c: on Darwin, ensure memory allocated by + * generic/tclThreadAlloc.c: the custom TclpAlloc()s is aligned to + 16 byte boundaries (as is the case with the Darwin system malloc). + 2007-06-27 Don Porter * generic/tclCmdMZ.c: Corrected broken trace reversal logic in diff --git a/generic/tclAlloc.c b/generic/tclAlloc.c index e51ba8e..f3dfb35 100644 --- a/generic/tclAlloc.c +++ b/generic/tclAlloc.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAlloc.c,v 1.16.2.1 2004/10/28 21:12:37 andreas_kupries Exp $ + * RCS: @(#) $Id: tclAlloc.c,v 1.16.2.2 2007/06/29 03:17:33 das Exp $ */ /* @@ -45,6 +45,16 @@ typedef unsigned long caddr_t; #endif /* + * Alignment for allocated memory. + */ + +#if defined(__APPLE__) +#define ALLOCALIGN 16 +#else +#define ALLOCALIGN 8 +#endif + +/* * The overhead on a block is at least 8 bytes. When free, this space * contains a pointer to the next free block, and the bottom two bits must * be zero. When in use, the first byte is set to MAGIC, and the second @@ -56,8 +66,8 @@ typedef unsigned long caddr_t; */ union overhead { - union overhead *ov_next; /* when free */ - unsigned char ov_padding[8]; /* Ensure the structure is 8-byte aligned. */ + union overhead *ov_next; /* when free */ + unsigned char ov_padding[ALLOCALIGN];/* align struct to ALLOCALIGN bytes */ struct { unsigned char ovu_magic0; /* magic number */ unsigned char ovu_index; /* bucket # */ @@ -90,11 +100,12 @@ union overhead { /* * nextf[i] is the pointer to the next free block of size 2^(i+3). The - * smallest allocatable block is 8 bytes. The overhead information + * smallest allocatable block is MINBLOCK bytes. The overhead information * precedes the data area returned to the user. */ -#define NBUCKETS 13 +#define MINBLOCK ((sizeof(union overhead) + (ALLOCALIGN-1)) & ~(ALLOCALIGN-1)) +#define NBUCKETS (13 - (MINBLOCK >> 4)) #define MAXMALLOC (1<<(NBUCKETS+2)) static union overhead *nextf[NBUCKETS]; @@ -208,7 +219,7 @@ TclInitAlloc() void TclFinalizeAllocSubsystem() { - int i; + unsigned int i; struct block *blockPtr, *nextPtr; Tcl_MutexLock(allocMutexPtr); @@ -310,13 +321,10 @@ TclpAlloc(nbytes) * stored in hash buckets which satisfies request. * Account for space used per block for accounting. */ -#ifndef RCHECK - amt = 8; /* size of first bucket */ - bucket = 0; -#else - amt = 16; /* size of first bucket */ - bucket = 1; -#endif + + amount = MINBLOCK; /* size of first bucket */ + bucket = MINBLOCK >> 4; + while (nbytes + OVERHEAD > amt) { amt <<= 1; if (amt == 0) { diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index 69f0e9f..9ff31db 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.7 2005/12/20 22:16:34 dkf Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.8 2007/06/29 03:17:33 das Exp $ */ #include "tclInt.h" @@ -50,12 +50,14 @@ extern void TclpSetAllocCache(void *); #define NOBJHIGH 1200 /* - * The following defines the number of buckets in the bucket - * cache and those block sizes from (1<<4) to (1<<(3+NBUCKETS)) + * Alignment for allocated memory. */ -#define NBUCKETS 11 -#define MAXALLOC 16284 +#if defined(__APPLE__) +#define ALLOCALIGN 16 +#else +#define ALLOCALIGN 8 +#endif /* * The following union stores accounting information for @@ -65,23 +67,36 @@ extern void TclpSetAllocCache(void *); * the Block overhead) is also maintained. */ -typedef struct Block { - union { - struct Block *next; /* Next in free list. */ - struct { - unsigned char magic1; /* First magic number. */ - unsigned char bucket; /* Bucket block allocated from. */ - unsigned char unused; /* Padding. */ - unsigned char magic2; /* Second magic number. */ - } b_s; - } b_u; - size_t b_reqsize; /* Requested allocation size. */ +typedef union Block { + struct { + union { + union Block *next; /* Next in free list. */ + struct { + unsigned char magic1; /* First magic number. */ + unsigned char bucket; /* Bucket block allocated from. */ + unsigned char unused; /* Padding. */ + unsigned char magic2; /* Second magic number. */ + } s; + } u; + size_t reqSize; /* Requested allocation size. */ + } b; + unsigned char padding[ALLOCALIGN]; } Block; -#define b_next b_u.next -#define b_bucket b_u.b_s.bucket -#define b_magic1 b_u.b_s.magic1 -#define b_magic2 b_u.b_s.magic2 +#define b_next b.u.next +#define b_bucket b.u.s.bucket +#define b_magic1 b.u.s.magic1 +#define b_magic2 b.u.s.magic2 #define MAGIC 0xef +#define b_reqsize b.reqSize + +/* + * The following defines the minimum and and maximum block sizes and the number + * of buckets in the bucket cache. + */ + +#define MINALLOC ((sizeof(Block) + 8 + (ALLOCALIGN-1)) & ~(ALLOCALIGN-1)) +#define NBUCKETS (11 - (MINALLOC >> 5)) +#define MAXALLOC (MINALLOC << (NBUCKETS - 1)) /* * The following structure defines a bucket of blocks with @@ -122,19 +137,7 @@ struct binfo { int maxblocks; /* Max blocks before move to share. */ int nmove; /* Num blocks to move to share. */ Tcl_Mutex *lockPtr; /* Share bucket lock. */ -} binfo[NBUCKETS] = { - { 16, 1024, 512, NULL}, - { 32, 512, 256, NULL}, - { 64, 256, 128, NULL}, - { 128, 128, 64, NULL}, - { 256, 64, 32, NULL}, - { 512, 32, 16, NULL}, - { 1024, 16, 8, NULL}, - { 2048, 8, 4, NULL}, - { 4096, 4, 2, NULL}, - { 8192, 2, 1, NULL}, - {16284, 1, 1, NULL}, -}; +} binfo[NBUCKETS]; /* * Static functions defined in this file. @@ -187,7 +190,7 @@ GetCache(void) if (listLockPtr == NULL) { Tcl_Mutex *initLockPtr; - int i; + unsigned int i; initLockPtr = Tcl_GetAllocMutex(); Tcl_MutexLock(initLockPtr); @@ -195,6 +198,9 @@ GetCache(void) listLockPtr = TclpNewAllocMutex(); objLockPtr = TclpNewAllocMutex(); for (i = 0; i < NBUCKETS; ++i) { + binfo[i].blocksize = MINALLOC << i; + binfo[i].maxblocks = 1 << (NBUCKETS - 1 - i); + binfo[i].nmove = i < NBUCKETS-1 ? 1 << (NBUCKETS - 2 - i) : 1; binfo[i].lockPtr = TclpNewAllocMutex(); } } @@ -243,7 +249,7 @@ TclFreeAllocCache(void *arg) { Cache *cachePtr = arg; Cache **nextPtrPtr; - register int bucket; + register unsigned int bucket; /* * Flush blocks. @@ -624,7 +630,7 @@ Tcl_GetMemoryInfo(Tcl_DString *dsPtr) { Cache *cachePtr; char buf[200]; - int n; + unsigned int n; Tcl_MutexLock(listLockPtr); cachePtr = firstCachePtr; @@ -969,7 +975,8 @@ GetBlocks(Cache *cachePtr, int bucket) void TclFinalizeThreadAlloc() { - int i; + unsigned int i; + for (i = 0; i < NBUCKETS; ++i) { TclpFreeAllocMutex(binfo[i].lockPtr); binfo[i].lockPtr = NULL; -- cgit v0.12 From 39f3fb41532e9e33414f8e35c50aad670e98d0e2 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Sat, 30 Jun 2007 09:58:42 +0000 Subject: Prevent RemeberSyncObj() from growing the sync object lists by reusing already free'd slots, if possible. See discussion on Bug 1726873 for more information. --- ChangeLog | 6 ++++++ generic/tclThread.c | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1282067..dcd80cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-06-30 Zoran Vasiljevic + + * generic/tclThread.c: Prevent RemeberSyncObj() from growing the sync + object lists by reusing already free'd slots, if possible. + See discussion on Bug 1726873 for more information. + 2007-06-29 Daniel Steffen * generic/tclAlloc.c: on Darwin, ensure memory allocated by diff --git a/generic/tclThread.c b/generic/tclThread.c index b0b2300..033d197 100644 --- a/generic/tclThread.c +++ b/generic/tclThread.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThread.c,v 1.6.2.1 2004/05/06 01:02:59 davygrvy Exp $ + * RCS: @(#) $Id: tclThread.c,v 1.6.2.2 2007/06/30 09:58:43 vasiljevic Exp $ */ #include "tclInt.h" @@ -205,7 +205,17 @@ RememberSyncObject(objPtr, recPtr) int i, j; /* - * Save the pointer to the allocated object so it can be finalized. + * Reuse any free slot in the list. + */ + + for (i=0 ; i < recPtr->num ; ++i) { + if (recPtr->list[i] == NULL) { + recPtr->list[i] = objPtr; + return; + } + } + + /* * Grow the list of pointers if necessary, copying only non-NULL * pointers to the new list. */ @@ -213,7 +223,7 @@ RememberSyncObject(objPtr, recPtr) if (recPtr->num >= recPtr->max) { recPtr->max += 8; newList = (char **)ckalloc(recPtr->max * sizeof(char *)); - for (i=0,j=0 ; inum ; i++) { + for (i=0, j=0 ; i < recPtr->num ; i++) { if (recPtr->list[i] != NULL) { newList[j++] = recPtr->list[i]; } @@ -224,6 +234,7 @@ RememberSyncObject(objPtr, recPtr) recPtr->list = newList; recPtr->num = j; } + recPtr->list[recPtr->num] = objPtr; recPtr->num++; } -- cgit v0.12 From 699e0abdd1f9687bdda33420a941f8217d88c18c Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 30 Jun 2007 13:56:22 +0000 Subject: De-fang an instance of the shared-result anti-pattern. [Bug 1716704] --- ChangeLog | 5 +++++ generic/tclBinary.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index dcd80cf..b90b807 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-06-30 Donal K. Fellows + + * generic/tclBinary.c (Tcl_BinaryObjCmd): De-fang an instance of the + shared-result anti-pattern. [Bug 1716704] + 2007-06-30 Zoran Vasiljevic * generic/tclThread.c: Prevent RemeberSyncObj() from growing the sync diff --git a/generic/tclBinary.c b/generic/tclBinary.c index fcc0061..b5bd3ff 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBinary.c,v 1.13.2.4 2005/10/23 22:01:29 msofer Exp $ + * RCS: @(#) $Id: tclBinary.c,v 1.13.2.5 2007/06/30 13:56:23 dkf Exp $ */ #include "tclInt.h" @@ -771,6 +771,10 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) */ resultPtr = Tcl_GetObjResult(interp); + if (Tcl_IsShared(resultPtr)) { + TclNewObj(resultPtr); + Tcl_SetObjResult(interp, resultPtr); + } buffer = Tcl_SetByteArrayLength(resultPtr, length); memset((VOID *) buffer, 0, (size_t) length); -- cgit v0.12 From b72d91bd10dfec0ff66a2bdc8d79d9b7de67dc98 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 5 Jul 2007 18:03:44 +0000 Subject: * library/init.tcl (unknown): Corrected inconsistent error message in interactive [unknown] when empty command is invoked. [Bug 1743676] --- ChangeLog | 5 +++++ library/init.tcl | 23 +++++++++++------------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index b90b807..bc54f8d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-07-05 Don Porter + + * library/init.tcl (unknown): Corrected inconsistent error message + in interactive [unknown] when empty command is invoked. [Bug 1743676] + 2007-06-30 Donal K. Fellows * generic/tclBinary.c (Tcl_BinaryObjCmd): De-fang an instance of the diff --git a/library/init.tcl b/library/init.tcl index 8105642..be02fa1 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.55.2.6 2005/07/22 21:59:40 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.55.2.7 2007/07/05 18:03:45 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -312,19 +312,18 @@ proc unknown args { "error in unknown while checking if \"$name\" is\ a unique command abbreviation:\n$msg" } - # Handle empty $name separately due to strangeness in [string first] - if {$name eq ""} { - if {[llength $candidates] != 1} { - return -code error "empty command name \"\"" - } - return [uplevel 1 [lreplace $args 0 0 [lindex $candidates 0]]] - } # Filter out bogus matches when $name contained # a glob-special char [Bug 946952] - set cmds [list] - foreach x $candidates { - if {[string first $name $x] == 0} { - lappend cmds $x + if {$name eq ""} { + # Handle empty $name separately due to strangeness + # in [string first] (See RFE 1243354) + set cmds $candidates + } else { + set cmds [list] + foreach x $candidates { + if {[string first $name $x] == 0} { + lappend cmds $x + } } } if {[llength $cmds] == 1} { -- cgit v0.12 From 5bd8a0386d769f512da9dab55cd949fd0d8329bc Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 19 Jul 2007 13:43:42 +0000 Subject: * generic/tclParse.c: In contexts where interp and parsePtr->interp might be different, be sure to use the latter for error reporting. --- ChangeLog | 5 +++++ generic/tclParse.c | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index bc54f8d..a6d1a0e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-07-19 Don Porter + + * generic/tclParse.c: In contexts where interp and parsePtr->interp + might be different, be sure to use the latter for error reporting. + 2007-07-05 Don Porter * library/init.tcl (unknown): Corrected inconsistent error message diff --git a/generic/tclParse.c b/generic/tclParse.c index fc7a77c..e02f836 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParse.c,v 1.25.2.1 2006/09/24 21:15:10 msofer Exp $ + * RCS: @(#) $Id: tclParse.c,v 1.25.2.2 2007/07/19 13:43:42 dgp Exp $ */ #include "tclInt.h" @@ -1153,9 +1153,9 @@ Tcl_ParseVarName(interp, string, numBytes, parsePtr, append) numBytes--; src++; } if (numBytes == 0) { - if (interp != NULL) { - Tcl_SetResult(interp, "missing close-brace for variable name", - TCL_STATIC); + if (parsePtr->interp != NULL) { + Tcl_SetResult(parsePtr->interp, + "missing close-brace for variable name", TCL_STATIC); } parsePtr->errorType = TCL_PARSE_MISSING_VAR_BRACE; parsePtr->term = tokenPtr->start-1; @@ -1423,7 +1423,7 @@ Tcl_ParseBraces(interp, string, numBytes, parsePtr, append, termPtr) parsePtr->errorType = TCL_PARSE_MISSING_BRACE; parsePtr->term = string; parsePtr->incomplete = 1; - if (interp == NULL) { + if (parsePtr->interp == NULL) { /* * Skip straight to the exit code since we have no * interpreter to put error message in. @@ -1431,7 +1431,7 @@ Tcl_ParseBraces(interp, string, numBytes, parsePtr, append, termPtr) goto error; } - Tcl_SetResult(interp, "missing close-brace", TCL_STATIC); + Tcl_SetResult(parsePtr->interp, "missing close-brace", TCL_STATIC); /* * Guess if the problem is due to comments by searching @@ -1451,7 +1451,7 @@ Tcl_ParseBraces(interp, string, numBytes, parsePtr, append, termPtr) break; case '#' : if (openBrace && (isspace(UCHAR(src[-1])))) { - Tcl_AppendResult(interp, + Tcl_AppendResult(parsePtr->interp, ": possible unbalanced brace in comment", (char *) NULL); goto error; @@ -1610,7 +1610,7 @@ Tcl_ParseQuotedString(interp, string, numBytes, parsePtr, append, termPtr) goto error; } if (*parsePtr->term != '"') { - if (interp != NULL) { + if (parsePtr->interp != NULL) { Tcl_SetResult(parsePtr->interp, "missing \"", TCL_STATIC); } parsePtr->errorType = TCL_PARSE_MISSING_QUOTE; -- cgit v0.12 From 34d95ab0f6f686309ce09ec37889afc625f25149 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 7 Aug 2007 05:04:48 +0000 Subject: * generic/tclEnv.c: improve environ handling on Mac OS X (adapted * unix/tclUnixPort.h: from Apple changes in Darwin tcl-64). --- generic/tclEnv.c | 24 +----------------------- unix/tclUnixPort.h | 14 ++++++++++---- 2 files changed, 11 insertions(+), 27 deletions(-) diff --git a/generic/tclEnv.c b/generic/tclEnv.c index a7c7c39..198ff81 100644 --- a/generic/tclEnv.c +++ b/generic/tclEnv.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEnv.c,v 1.20.2.3 2006/10/31 22:25:08 das Exp $ + * RCS: @(#) $Id: tclEnv.c,v 1.20.2.4 2007/08/07 05:04:48 das Exp $ */ #include "tclInt.h" @@ -39,15 +39,6 @@ static int environSize = 0; /* Non-zero means that the environ array was #endif /* - * For MacOS X - */ -#if defined(__APPLE__) && defined(__DYNAMIC__) -#include -__private_extern__ char **environ; -char **environ = NULL; -#endif - -/* * Declarations for local procedures defined in this file: */ @@ -97,13 +88,6 @@ TclSetupEnv(interp) int i; /* - * For MacOS X - */ -#if defined(__APPLE__) && defined(__DYNAMIC__) - environ = *_NSGetEnviron(); -#endif - - /* * Synchronize the values in the environ array with the contents * of the Tcl "env" variable. To do this: * 1) Remove the trace that fires when the "env" var is unset. @@ -214,12 +198,6 @@ TclSetEnv(name, value) } environ = ourEnviron = newEnviron; environSize = length + 5; -#if defined(__APPLE__) && defined(__DYNAMIC__) - { - char ***e = _NSGetEnviron(); - *e = environ; - } -#endif } index = length; environ[index + 1] = NULL; diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index d98e8e4..203d319 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.18 2007/04/21 22:42:49 kennykb Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.27.2.19 2007/08/07 05:04:48 das Exp $ */ #ifndef _TCLUNIXPORT @@ -491,10 +491,16 @@ extern int errno; * Variables provided by the C library: */ -#if defined(_sgi) || defined(__sgi) || (defined(__APPLE__) && defined(__DYNAMIC__)) -# define environ _environ -#endif +#if defined(__APPLE__) && defined(__DYNAMIC__) +# include +# define environ (*_NSGetEnviron()) +# define USE_PUTENV 1 +#else +# if defined(_sgi) || defined(__sgi) +# define environ _environ +# endif extern char **environ; +#endif /* * At present (12/91) not all stdlib.h implementations declare strtod. -- cgit v0.12 From 7b686b16154a5af966cc5503fd65c94e373b4239 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 7 Aug 2007 05:06:38 +0000 Subject: * unix/Makefile.in: add support for compile flags specific to object files linked directly into executables. * unix/configure.in (Darwin): only use -seg1addr flag when prebinding; use -mdynamic-no-pic flag for object files linked directly into exes; support overriding TCL_PACKAGE_PATH in environment. * unix/configure: autoconf-2.13 --- ChangeLog | 14 ++++++++++++++ unix/Makefile.in | 37 +++++++++++++++++-------------------- unix/configure | 13 +++++++++---- unix/configure.in | 14 +++++++++----- 4 files changed, 49 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index a6d1a0e..296f312 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2007-08-07 Daniel Steffen + + * generic/tclEnv.c: improve environ handling on Mac OS X (adapted + * unix/tclUnixPort.h: from Apple changes in Darwin tcl-64). + + * unix/Makefile.in: add support for compile flags specific to + object files linked directly into executables. + + * unix/configure.in (Darwin): only use -seg1addr flag when prebinding; + use -mdynamic-no-pic flag for object files linked directly into exes; + support overriding TCL_PACKAGE_PATH in environment. + + * unix/configure: autoconf-2.13 + 2007-07-19 Don Porter * generic/tclParse.c: In contexts where interp and parsePtr->interp diff --git a/unix/Makefile.in b/unix/Makefile.in index 3ecdd33..895b503 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.21 2007/06/06 09:54:33 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.22 2007/08/07 05:06:41 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -288,17 +288,14 @@ DDD = ddd # either. #---------------------------------------------------------------- - -CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \ --I${GENERIC_DIR} -I${SRC_DIR} \ -${AC_FLAGS} ${MATH_FLAGS} ${GENERIC_FLAGS} ${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} \ -${COMPILE_DEBUG_FLAGS} ${NO_DEPRECATED_FLAGS} ${ENV_FLAGS} \ +STUB_CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \ +-I${GENERIC_DIR} -I${SRC_DIR} ${AC_FLAGS} ${MATH_FLAGS} ${GENERIC_FLAGS} \ +${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} ${COMPILE_DEBUG_FLAGS} ${ENV_FLAGS} \ -DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\" @EXTRA_CC_SWITCHES@ -STUB_CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \ --I${GENERIC_DIR} -I${SRC_DIR} \ -${AC_FLAGS} ${MATH_FLAGS} ${GENERIC_FLAGS} ${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} \ -${COMPILE_DEBUG_FLAGS} ${ENV_FLAGS} -DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\" @EXTRA_CC_SWITCHES@ +CC_SWITCHES = $(STUB_CC_SWITCHES) ${NO_DEPRECATED_FLAGS} + +APP_CC_SWITCHES = $(CC_SWITCHES) @EXTRA_APP_CC_SWITCHES@ LIBS = @DL_LIBS@ @LIBS@ $(MATH_LIBS) @@ -790,7 +787,7 @@ tclTestInit.o: $(UNIX_DIR)/tclAppInit.c tclsh rm -f tclAppInit.sav; \ mv tclAppInit.o tclAppInit.sav; \ fi; - $(CC) -c $(CC_SWITCHES) \ + $(CC) -c $(APP_CC_SWITCHES) \ -DTCL_BUILDTIME_LIBRARY="\"${TCL_BUILDTIME_LIBRARY}\"" \ -DTCL_TEST $(UNIX_DIR)/tclAppInit.c rm -f tclTestInit.o @@ -804,7 +801,7 @@ xtTestInit.o: $(UNIX_DIR)/tclAppInit.c tclsh rm -f tclAppInit.sav; \ mv tclAppInit.o tclAppInit.sav; \ fi; - $(CC) -c $(CC_SWITCHES) \ + $(CC) -c $(APP_CC_SWITCHES) \ -DTCL_BUILDTIME_LIBRARY="\"${TCL_BUILDTIME_LIBRARY}\"" \ -DTCL_TEST -DTCL_XT_TEST $(UNIX_DIR)/tclAppInit.c rm -f xtTestInit.o @@ -832,7 +829,7 @@ regerror.o: $(REGHDRS) $(GENERIC_DIR)/regerrs.h $(GENERIC_DIR)/regerror.c $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/regerror.c tclAppInit.o: $(UNIX_DIR)/tclAppInit.c - $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclAppInit.c + $(CC) -c $(APP_CC_SWITCHES) $(UNIX_DIR)/tclAppInit.c # On unix we want to use the normal malloc/free implementation, so we # specifically set the USE_TCLALLOC flag. @@ -1027,13 +1024,13 @@ tclVar.o: $(GENERIC_DIR)/tclVar.c $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclVar.c tclTest.o: $(GENERIC_DIR)/tclTest.c - $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclTest.c + $(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclTest.c tclTestObj.o: $(GENERIC_DIR)/tclTestObj.c - $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclTestObj.c + $(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclTestObj.c tclTestProcBodyObj.o: $(GENERIC_DIR)/tclTestProcBodyObj.c - $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclTestProcBodyObj.c + $(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclTestProcBodyObj.c tclTimer.o: $(GENERIC_DIR)/tclTimer.c $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclTimer.c @@ -1048,7 +1045,7 @@ tclThreadJoin.o: $(GENERIC_DIR)/tclThreadJoin.c $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclThreadJoin.c tclThreadTest.o: $(GENERIC_DIR)/tclThreadTest.c - $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclThreadTest.c + $(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclThreadTest.c tclUnixChan.o: $(UNIX_DIR)/tclUnixChan.c $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixChan.c @@ -1072,7 +1069,7 @@ tclUnixSock.o: $(UNIX_DIR)/tclUnixSock.c $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixSock.c tclUnixTest.o: $(UNIX_DIR)/tclUnixTest.c - $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixTest.c + $(CC) -c $(APP_CC_SWITCHES) $(UNIX_DIR)/tclUnixTest.c tclUnixThrd.o: $(UNIX_DIR)/tclUnixThrd.c $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixThrd.c @@ -1106,11 +1103,11 @@ xttest: ${XTTEST_OBJS} ${GENERIC_OBJS} ${UNIX_OBJS} ${COMPAT_OBJS} \ ${CC_SEARCH_FLAGS} -L/usr/openwin/lib -lXt -o xttest tclXtNotify.o: $(UNIX_DIR)/tclXtNotify.c - $(CC) -c $(CC_SWITCHES) -I/usr/openwin/include \ + $(CC) -c $(APP_CC_SWITCHES) -I/usr/openwin/include \ $(UNIX_DIR)/tclXtNotify.c tclXtTest.o: $(UNIX_DIR)/tclXtTest.c - $(CC) -c $(CC_SWITCHES) -I/usr/openwin/include \ + $(CC) -c $(APP_CC_SWITCHES) -I/usr/openwin/include \ $(UNIX_DIR)/tclXtTest.c # compat binaries, these must be compiled for use in a shared library diff --git a/unix/configure b/unix/configure index d1d646c..742f051 100755 --- a/unix/configure +++ b/unix/configure @@ -9088,10 +9088,12 @@ fi fi TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version ${TCL_VERSION}`echo ${TCL_PATCH_LEVEL} | awk '{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}'`" - TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' + TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE}' + echo "$LDFLAGS " | grep -q -- '-prebind ' && TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -seg1addr 0xa000000' TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tcl-Info.plist' EXTRA_TCLSH_LIBS='-sectcreate __TEXT __info_plist Tclsh-Info.plist' tcl_config_files="${tcl_config_files} Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in" + EXTRA_APP_CC_SWITCHES='-mdynamic-no-pic' fi if test "$FRAMEWORK_BUILD" = "1" ; then @@ -9168,11 +9170,12 @@ VERSION=${TCL_VERSION} #-------------------------------------------------------------------- if test "$FRAMEWORK_BUILD" = "1" ; then - TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks" + test -z "$TCL_PACKAGE_PATH" && \ + TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks" elif test "$prefix" != "$exec_prefix"; then - TCL_PACKAGE_PATH="${libdir} ${prefix}/lib" + TCL_PACKAGE_PATH="${libdir} ${prefix}/lib ${TCL_PACKAGE_PATH}" else - TCL_PACKAGE_PATH="${prefix}/lib" + TCL_PACKAGE_PATH="${prefix}/lib ${TCL_PACKAGE_PATH}" fi #-------------------------------------------------------------------- @@ -9256,6 +9259,7 @@ TCL_SHARED_BUILD=${SHARED_BUILD} + CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS="" @@ -9473,6 +9477,7 @@ s%@TCL_LIBRARY@%$TCL_LIBRARY%g s%@PRIVATE_INCLUDE_DIR@%$PRIVATE_INCLUDE_DIR%g s%@HTML_DIR@%$HTML_DIR%g s%@EXTRA_CC_SWITCHES@%$EXTRA_CC_SWITCHES%g +s%@EXTRA_APP_CC_SWITCHES@%$EXTRA_APP_CC_SWITCHES%g s%@EXTRA_INSTALL@%$EXTRA_INSTALL%g s%@EXTRA_INSTALL_BINARIES@%$EXTRA_INSTALL_BINARIES%g s%@EXTRA_BUILD_HTML@%$EXTRA_BUILD_HTML%g diff --git a/unix/configure.in b/unix/configure.in index a995914..9c158e9 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.37 2007/06/06 09:54:35 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.38 2007/08/07 05:06:44 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -557,10 +557,12 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then SC_ENABLE_FRAMEWORK TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version ${TCL_VERSION}`echo ${TCL_PATCH_LEVEL} | awk ['{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}']`" - TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000' + TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE}' + echo "$LDFLAGS " | grep -q -- '-prebind ' && TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -seg1addr 0xa000000' TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tcl-Info.plist' EXTRA_TCLSH_LIBS='-sectcreate __TEXT __info_plist Tclsh-Info.plist' tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in]" + EXTRA_APP_CC_SWITCHES='-mdynamic-no-pic' fi if test "$FRAMEWORK_BUILD" = "1" ; then @@ -640,11 +642,12 @@ VERSION=${TCL_VERSION} #-------------------------------------------------------------------- if test "$FRAMEWORK_BUILD" = "1" ; then - TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks" + test -z "$TCL_PACKAGE_PATH" && \ + TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks" elif test "$prefix" != "$exec_prefix"; then - TCL_PACKAGE_PATH="${libdir} ${prefix}/lib" + TCL_PACKAGE_PATH="${libdir} ${prefix}/lib ${TCL_PACKAGE_PATH}" else - TCL_PACKAGE_PATH="${prefix}/lib" + TCL_PACKAGE_PATH="${prefix}/lib ${TCL_PACKAGE_PATH}" fi #-------------------------------------------------------------------- @@ -723,6 +726,7 @@ AC_SUBST(PRIVATE_INCLUDE_DIR) AC_SUBST(HTML_DIR) AC_SUBST(EXTRA_CC_SWITCHES) +AC_SUBST(EXTRA_APP_CC_SWITCHES) AC_SUBST(EXTRA_INSTALL) AC_SUBST(EXTRA_INSTALL_BINARIES) AC_SUBST(EXTRA_BUILD_HTML) -- cgit v0.12 From 190db6374756ef363310051446861a43d3525d94 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 11 Aug 2007 03:12:07 +0000 Subject: fix missing preprocessor \ line continuation --- macosx/tclMacOSXNotify.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index e6ae7b3..2f9c62a 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.13 2007/06/23 00:23:42 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.14 2007/08/11 03:12:07 das Exp $ */ #include "tclInt.h" @@ -294,7 +294,7 @@ extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), * On 64bit Darwin 9 and later, it is not possible to call CoreFoundation after * a fork. */ -#if !defined(MAC_OS_X_VERSION_MIN_REQUIRED) || +#if !defined(MAC_OS_X_VERSION_MIN_REQUIRED) || \ MAC_OS_X_VERSION_MIN_REQUIRED < 1050 MODULE_SCOPE long tclMacOSXDarwinRelease; #define noCFafterFork (tclMacOSXDarwinRelease >= 9) -- cgit v0.12 From 720f2ebb87f3a202b571853c506692b847edc023 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 14 Aug 2007 06:34:11 +0000 Subject: * unix/tclLoadDyld.c: use dlfcn API on Mac OS X 10.4 and later; fix issues with loading from memory on intel and 64bit; add debug messages. * tests/load.test: add test load-10.1 for loading from vfs. --- ChangeLog | 7 + tests/load.test | 17 +- unix/tclLoadDyld.c | 543 ++++++++++++++++++++++++++++++++++++----------------- 3 files changed, 389 insertions(+), 178 deletions(-) diff --git a/ChangeLog b/ChangeLog index 296f312..4b3114a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-08-14 Daniel Steffen + + * unix/tclLoadDyld.c: use dlfcn API on Mac OS X 10.4 and later; fix + issues with loading from memory on intel and 64bit; add debug messages. + + * tests/load.test: add test load-10.1 for loading from vfs. + 2007-08-07 Daniel Steffen * generic/tclEnv.c: improve environ handling on Mac OS X (adapted diff --git a/tests/load.test b/tests/load.test index 9fe26ab..3824d67 100644 --- a/tests/load.test +++ b/tests/load.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: load.test,v 1.11.2.1 2004/09/14 17:02:56 das Exp $ +# RCS: @(#) $Id: load.test,v 1.11.2.2 2007/08/14 06:34:13 das Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -44,7 +44,12 @@ set alreadyTotalLoaded [info loaded] # Certain tests require the 'teststaticpkg' command from tcltest ::tcltest::testConstraint teststaticpkg \ - [string compare {} [info commands teststaticpkg]] + [string compare {} [info commands teststaticpkg]] + +# Test load-10.1 requires the 'testsimplefilesystem' command from tcltest + +::tcltest::testConstraint testsimplefilesystem \ + [string compare {} [info commands testsimplefilesystem]] test load-1.1 {basic errors} {} { @@ -201,7 +206,13 @@ test load-9.1 {Tcl_StaticPackage, load already-loaded package into another inter -result {{{{} Loadninepointone} {{} Tcltest}} {{{} Loadninepointone} {{} Tcltest}}} \ -cleanup { interp delete child1 ; interp delete child2 } - +test load-10.1 {load from vfs} \ + -constraints [list $dll $loaded testsimplefilesystem] \ + -setup {set dir [pwd]; cd $testDir; testsimplefilesystem 1} \ + -body {list [catch {load simplefs:/pkgd$ext pkgd} msg] $msg} \ + -result {0 {}} \ + -cleanup {testsimplefilesystem 0; cd $dir; unset dir} + # cleanup ::tcltest::cleanupTests return diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index a206019..25bd436 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -3,7 +3,7 @@ * * This procedure provides a version of the TclLoadFile that works with * Apple's dyld dynamic loading. - * Original version of his file (now superseded long ago) provided by + * Original version of his file (superseded long ago) provided by * Wilfredo Sanchez (wsanchez@apple.com). * * Copyright (c) 1995 Apple Computer, Inc. @@ -12,11 +12,51 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.9 2007/04/29 02:20:16 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.10 2007/08/14 06:34:13 das Exp $ */ #include "tclInt.h" #include "tclPort.h" + +#ifndef MODULE_SCOPE +#define MODULE_SCOPE extern +#endif + +#ifndef TCL_DYLD_USE_DLFCN +/* + * Use preferred dlfcn API on 10.4 and later + */ +# if !defined(NO_DLFCN_H) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1040 +# define TCL_DYLD_USE_DLFCN 1 +# else +# define TCL_DYLD_USE_DLFCN 0 +# endif +#endif +#ifndef TCL_DYLD_USE_NSMODULE +/* + * Use deprecated NSModule API only to support 10.3 and earlier: + */ +# if MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +# define TCL_DYLD_USE_NSMODULE 1 +# else +# define TCL_DYLD_USE_NSMODULE 0 +# endif +#endif + +#if TCL_DYLD_USE_DLFCN +#include +#if defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +/* + * Support for weakly importing dlfcn API. + */ +extern void *dlopen(const char *path, int mode) WEAK_IMPORT_ATTRIBUTE; +extern void *dlsym(void *handle, const char *symbol) WEAK_IMPORT_ATTRIBUTE; +extern int dlclose(void *handle) WEAK_IMPORT_ATTRIBUTE; +extern char *dlerror(void) WEAK_IMPORT_ATTRIBUTE; +#endif +#endif + +#if TCL_DYLD_USE_NSMODULE || defined(TCL_LOAD_FROM_MEMORY) #include #include #include @@ -25,24 +65,37 @@ #undef panic #include -#ifndef MODULE_SCOPE -#define MODULE_SCOPE extern -#endif - typedef struct Tcl_DyldModuleHandle { struct Tcl_DyldModuleHandle *nextPtr; NSModule module; } Tcl_DyldModuleHandle; +#endif /* TCL_DYLD_USE_NSMODULE */ typedef struct Tcl_DyldLoadHandle { - CONST struct mach_header *dyldLibHeader; +#if TCL_DYLD_USE_DLFCN + void *dlHandle; +#endif +#if TCL_DYLD_USE_NSMODULE || defined(TCL_LOAD_FROM_MEMORY) + const struct mach_header *dyldLibHeader; Tcl_DyldModuleHandle *modulePtr; +#endif } Tcl_DyldLoadHandle; -#ifdef TCL_LOAD_FROM_MEMORY +#if (TCL_DYLD_USE_DLFCN && MAC_OS_X_VERSION_MIN_REQUIRED < 1040) || \ + defined(TCL_LOAD_FROM_MEMORY) MODULE_SCOPE long tclMacOSXDarwinRelease; #endif + +#ifdef TCL_DEBUG_LOAD +#define TclLoadDbgMsg(m, ...) do { \ + fprintf(stderr, "%s:%d: %s(): " m ".\n", \ + strrchr(__FILE__, '/')+1, __LINE__, __func__, ##__VA_ARGS__); \ + } while (0) +#else +#define TclLoadDbgMsg(m, ...) +#endif +#if TCL_DYLD_USE_NSMODULE || defined(TCL_LOAD_FROM_MEMORY) /* *---------------------------------------------------------------------- * @@ -81,6 +134,7 @@ DyldOFIErrorMsg( return "unknown error"; } } +#endif /* TCL_DYLD_USE_NSMODULE */ /* *---------------------------------------------------------------------- @@ -105,7 +159,7 @@ TclpDlopen( Tcl_Interp *interp, /* Used for error reporting. */ Tcl_Obj *pathPtr, /* Name of the file containing the desired * code (UTF-8). */ - Tcl_LoadHandle *loadHandle, /* Filled with token for dynamically loaded + Tcl_LoadHandle *loadHandle, /* Filled with token for dynamically loaded * file which will be passed back to * (*unloadProcPtr)() to unload the file. */ Tcl_FSUnloadFileProc **unloadProcPtr) @@ -114,10 +168,23 @@ TclpDlopen( * file. */ { Tcl_DyldLoadHandle *dyldLoadHandle; - CONST struct mach_header *dyldLibHeader; - NSObjectFileImage dyldObjFileImage = NULL; +#if TCL_DYLD_USE_DLFCN + void *dlHandle = NULL; +#endif +#if TCL_DYLD_USE_NSMODULE || defined(TCL_LOAD_FROM_MEMORY) + const struct mach_header *dyldLibHeader = NULL; Tcl_DyldModuleHandle *modulePtr = NULL; - CONST char *native; +#endif +#if TCL_DYLD_USE_NSMODULE + NSLinkEditErrors editError; + int errorNumber; + const char *errorName, *objFileImageErrMsg = NULL; +#endif + const char *errMsg = NULL; + int result; + Tcl_DString ds; + char *fileName = NULL; + const char *nativePath, *nativeFileName = NULL; /* * First try the full path the user gave us. This is particularly @@ -125,92 +192,139 @@ TclpDlopen( * relative path. */ - native = Tcl_FSGetNativePath(pathPtr); - dyldLibHeader = NSAddImage(native, NSADDIMAGE_OPTION_RETURN_ON_ERROR); + nativePath = Tcl_FSGetNativePath(pathPtr); - if (!dyldLibHeader) { - NSLinkEditErrors editError; - int errorNumber; - CONST char *name, *msg, *objFileImageErrMsg = NULL; - - NSLinkEditError(&editError, &errorNumber, &name, &msg); - - if (editError == NSLinkEditFileAccessError) { - /* - * The requested file was not found. Let the OS loader examine the - * binary search path for whatever string the user gave us which - * hopefully refers to a file on the binary path. - */ - - Tcl_DString ds; - char *fileName = Tcl_GetString(pathPtr); - CONST char *native = - Tcl_UtfToExternalDString(NULL, fileName, -1, &ds); - - dyldLibHeader = NSAddImage(native, NSADDIMAGE_OPTION_WITH_SEARCHING - | NSADDIMAGE_OPTION_RETURN_ON_ERROR); - Tcl_DStringFree(&ds); - if (!dyldLibHeader) { - NSLinkEditError(&editError, &errorNumber, &name, &msg); - } - } else if ((editError == NSLinkEditFileFormatError - && errorNumber == EBADMACHO) - || editError == NSLinkEditOtherError){ +#if TCL_DYLD_USE_DLFCN +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1040 + if (tclMacOSXDarwinRelease >= 8) +#endif + { + dlHandle = dlopen(nativePath, RTLD_NOW | RTLD_LOCAL); + if (!dlHandle) { /* - * The requested file was found but was not of type MH_DYLIB, - * attempt to load it as a MH_BUNDLE. + * Let the OS loader examine the binary search path for whatever + * string the user gave us which hopefully refers to a file on the + * binary path. */ - NSObjectFileImageReturnCode err = - NSCreateObjectFileImageFromFile(native, &dyldObjFileImage); - objFileImageErrMsg = DyldOFIErrorMsg(err); + fileName = Tcl_GetString(pathPtr); + nativeFileName = Tcl_UtfToExternalDString(NULL, fileName, -1, &ds); + dlHandle = dlopen(nativeFileName, RTLD_NOW | RTLD_LOCAL); } - - if (!dyldLibHeader && !dyldObjFileImage) { - Tcl_AppendResult(interp, msg, NULL); - if (msg && *msg) { - Tcl_AppendResult(interp, "\n", NULL); - } - if (objFileImageErrMsg) { - Tcl_AppendResult(interp, - "NSCreateObjectFileImageFromFile() error: ", - objFileImageErrMsg, NULL); + if (dlHandle) { + TclLoadDbgMsg("dlopen() successful"); + } else { + errMsg = dlerror(); + TclLoadDbgMsg("dlopen() failed: %s", errMsg); + } + } + if (!dlHandle) +#endif /* TCL_DYLD_USE_DLFCN */ + { +#if TCL_DYLD_USE_NSMODULE + dyldLibHeader = NSAddImage(nativePath, + NSADDIMAGE_OPTION_RETURN_ON_ERROR); + if (dyldLibHeader) { + TclLoadDbgMsg("NSAddImage() successful"); + } else { + NSLinkEditError(&editError, &errorNumber, &errorName, &errMsg); + if (editError == NSLinkEditFileAccessError) { + /* + * The requested file was not found. Let the OS loader examine + * the binary search path for whatever string the user gave us + * which hopefully refers to a file on the binary path. + */ + + if (!fileName) { + fileName = Tcl_GetString(pathPtr); + nativeFileName = Tcl_UtfToExternalDString(NULL, fileName, + -1, &ds); + } + dyldLibHeader = NSAddImage(nativeFileName, + NSADDIMAGE_OPTION_WITH_SEARCHING | + NSADDIMAGE_OPTION_RETURN_ON_ERROR); + if (dyldLibHeader) { + TclLoadDbgMsg("NSAddImage() successful"); + } else { + NSLinkEditError(&editError, &errorNumber, &errorName, + &errMsg); + TclLoadDbgMsg("NSAddImage() failed: %s", errMsg); + } + } else if ((editError == NSLinkEditFileFormatError + && errorNumber == EBADMACHO) + || editError == NSLinkEditOtherError){ + NSObjectFileImageReturnCode err; + NSObjectFileImage dyldObjFileImage; + NSModule module; + + /* + * The requested file was found but was not of type MH_DYLIB, + * attempt to load it as a MH_BUNDLE. + */ + + err = NSCreateObjectFileImageFromFile(nativePath, + &dyldObjFileImage); + if (err == NSObjectFileImageSuccess && dyldObjFileImage) { + TclLoadDbgMsg("NSCreateObjectFileImageFromFile() " + "successful"); + module = NSLinkModule(dyldObjFileImage, nativePath, + NSLINKMODULE_OPTION_BINDNOW + | NSLINKMODULE_OPTION_RETURN_ON_ERROR); + NSDestroyObjectFileImage(dyldObjFileImage); + if (module) { + modulePtr = (Tcl_DyldModuleHandle *) + ckalloc(sizeof(Tcl_DyldModuleHandle)); + modulePtr->module = module; + modulePtr->nextPtr = NULL; + TclLoadDbgMsg("NSLinkModule() successful"); + } else { + NSLinkEditError(&editError, &errorNumber, &errorName, + &errMsg); + TclLoadDbgMsg("NSLinkModule() failed: %s", errMsg); + } + } else { + objFileImageErrMsg = DyldOFIErrorMsg(err); + TclLoadDbgMsg("NSCreateObjectFileImageFromFile() failed: " + "%s", objFileImageErrMsg); + } } - return TCL_ERROR; } +#endif /* TCL_DYLD_USE_NSMODULE */ } - - if (dyldObjFileImage) { - NSModule module; - - module = NSLinkModule(dyldObjFileImage, native, - NSLINKMODULE_OPTION_BINDNOW - | NSLINKMODULE_OPTION_RETURN_ON_ERROR); - NSDestroyObjectFileImage(dyldObjFileImage); - - if (!module) { - NSLinkEditErrors editError; - int errorNumber; - CONST char *name, *msg; - - NSLinkEditError(&editError, &errorNumber, &name, &msg); - Tcl_AppendResult(interp, msg, NULL); - return TCL_ERROR; + if (0 +#if TCL_DYLD_USE_DLFCN + || dlHandle +#endif +#if TCL_DYLD_USE_NSMODULE + || dyldLibHeader || modulePtr +#endif + ) { + dyldLoadHandle = (Tcl_DyldLoadHandle *) + ckalloc(sizeof(Tcl_DyldLoadHandle)); +#if TCL_DYLD_USE_DLFCN + dyldLoadHandle->dlHandle = dlHandle; +#endif +#if TCL_DYLD_USE_NSMODULE || defined(TCL_LOAD_FROM_MEMORY) + dyldLoadHandle->dyldLibHeader = dyldLibHeader; + dyldLoadHandle->modulePtr = modulePtr; +#endif + *loadHandle = (Tcl_LoadHandle) dyldLoadHandle; + *unloadProcPtr = &TclpUnloadFile; + result = TCL_OK; + } else { + Tcl_AppendResult(interp, errMsg, NULL); +#if TCL_DYLD_USE_NSMODULE + if (objFileImageErrMsg) { + Tcl_AppendResult(interp, "\nNSCreateObjectFileImageFromFile() " + "error: ", objFileImageErrMsg, NULL); } - - modulePtr = (Tcl_DyldModuleHandle *) - ckalloc(sizeof(Tcl_DyldModuleHandle)); - modulePtr->module = module; - modulePtr->nextPtr = NULL; +#endif + result = TCL_ERROR; } - - dyldLoadHandle = (Tcl_DyldLoadHandle *) - ckalloc(sizeof(Tcl_DyldLoadHandle)); - dyldLoadHandle->dyldLibHeader = dyldLibHeader; - dyldLoadHandle->modulePtr = modulePtr; - *loadHandle = (Tcl_LoadHandle) dyldLoadHandle; - *unloadProcPtr = &TclpUnloadFile; - return TCL_OK; + if(fileName) { + Tcl_DStringFree(&ds); + } + return result; } /* @@ -235,68 +349,97 @@ TclpFindSymbol( Tcl_LoadHandle loadHandle, /* Handle from TclpDlopen. */ CONST char *symbol) /* Symbol name to look up. */ { - NSSymbol nsSymbol; - CONST char *native; - Tcl_DString newName, ds; - Tcl_PackageInitProc *proc = NULL; Tcl_DyldLoadHandle *dyldLoadHandle = (Tcl_DyldLoadHandle *) loadHandle; - - /* - * dyld adds an underscore to the beginning of symbol names. - */ + Tcl_PackageInitProc *proc = NULL; + const char *errMsg = NULL; + Tcl_DString ds; + const char *native; native = Tcl_UtfToExternalDString(NULL, symbol, -1, &ds); - Tcl_DStringInit(&newName); - Tcl_DStringAppend(&newName, "_", 1); - native = Tcl_DStringAppend(&newName, native, -1); - - if (dyldLoadHandle->dyldLibHeader) { - nsSymbol = NSLookupSymbolInImage(dyldLoadHandle->dyldLibHeader, native, - NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW | - NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR); - if (nsSymbol) { - /* - * Until dyld supports unloading of MY_DYLIB binaries, the - * following is not needed. - */ +#if TCL_DYLD_USE_DLFCN + if (dyldLoadHandle->dlHandle) { + proc = dlsym(dyldLoadHandle->dlHandle, native); + if (proc) { + TclLoadDbgMsg("dlsym() successful"); + } else { + errMsg = dlerror(); + TclLoadDbgMsg("dlsym() failed: %s", errMsg); + } + } else +#endif /* TCL_DYLD_USE_DLFCN */ + { +#if TCL_DYLD_USE_NSMODULE || defined(TCL_LOAD_FROM_MEMORY) + NSSymbol nsSymbol = NULL; + Tcl_DString newName; -#ifdef DYLD_SUPPORTS_DYLIB_UNLOADING - NSModule module = NSModuleForSymbol(nsSymbol); - Tcl_DyldModuleHandle *modulePtr = dyldLoadHandle->modulePtr; + /* + * dyld adds an underscore to the beginning of symbol names. + */ - while (modulePtr != NULL) { - if (module == modulePtr->module) { - break; + Tcl_DStringInit(&newName); + Tcl_DStringAppend(&newName, "_", 1); + native = Tcl_DStringAppend(&newName, native, -1); + if (dyldLoadHandle->dyldLibHeader) { + nsSymbol = NSLookupSymbolInImage(dyldLoadHandle->dyldLibHeader, + native, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW | + NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR); + if (nsSymbol) { + TclLoadDbgMsg("NSLookupSymbolInImage() successful"); +#ifdef DYLD_SUPPORTS_DYLIB_UNLOADING + /* + * Until dyld supports unloading of MY_DYLIB binaries, the + * following is not needed. + */ + + NSModule module = NSModuleForSymbol(nsSymbol); + Tcl_DyldModuleHandle *modulePtr = dyldLoadHandle->modulePtr; + + while (modulePtr != NULL) { + if (module == modulePtr->module) { + break; + } + modulePtr = modulePtr->nextPtr; + } + if (modulePtr == NULL) { + modulePtr = (Tcl_DyldModuleHandle *) + ckalloc(sizeof(Tcl_DyldModuleHandle)); + modulePtr->module = module; + modulePtr->nextPtr = dyldLoadHandle->modulePtr; + dyldLoadHandle->modulePtr = modulePtr; } - modulePtr = modulePtr->nextPtr; - } - if (modulePtr == NULL) { - modulePtr = (Tcl_DyldModuleHandle *) - ckalloc(sizeof(Tcl_DyldModuleHandle)); - modulePtr->module = module; - modulePtr->nextPtr = dyldLoadHandle->modulePtr; - dyldLoadHandle->modulePtr = modulePtr; - } #endif /* DYLD_SUPPORTS_DYLIB_UNLOADING */ + } else { + NSLinkEditErrors editError; + int errorNumber; + const char *errorName; - } else { - NSLinkEditErrors editError; - int errorNumber; - CONST char *name, *msg; - - NSLinkEditError(&editError, &errorNumber, &name, &msg); - Tcl_AppendResult(interp, msg, NULL); + NSLinkEditError(&editError, &errorNumber, &errorName, &errMsg); + TclLoadDbgMsg("NSLookupSymbolInImage() failed: %s", errMsg); + } + } else if (dyldLoadHandle->modulePtr) { + nsSymbol = NSLookupSymbolInModule( + dyldLoadHandle->modulePtr->module, native); + if (nsSymbol) { + TclLoadDbgMsg("NSLookupSymbolInModule() successful"); + } else { + TclLoadDbgMsg("NSLookupSymbolInModule() failed"); + } } - } else { - nsSymbol = NSLookupSymbolInModule(dyldLoadHandle->modulePtr->module, - native); - } - if (nsSymbol) { - proc = NSAddressOfSymbol(nsSymbol); + if (nsSymbol) { + proc = NSAddressOfSymbol(nsSymbol); + if (proc) { + TclLoadDbgMsg("NSAddressOfSymbol() successful"); + } else { + TclLoadDbgMsg("NSAddressOfSymbol() failed"); + } + } + Tcl_DStringFree(&newName); +#endif /* TCL_DYLD_USE_NSMODULE */ } - Tcl_DStringFree(&newName); Tcl_DStringFree(&ds); - + if (errMsg) { + Tcl_AppendResult(interp, errMsg, NULL); + } return proc; } @@ -327,16 +470,39 @@ TclpUnloadFile( * that represents the loaded file. */ { Tcl_DyldLoadHandle *dyldLoadHandle = (Tcl_DyldLoadHandle *) loadHandle; - Tcl_DyldModuleHandle *modulePtr = dyldLoadHandle->modulePtr; - while (modulePtr != NULL) { - void *ptr; +#if TCL_DYLD_USE_DLFCN + if (dyldLoadHandle->dlHandle) { + int result; - NSUnLinkModule(modulePtr->module, - NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES); - ptr = modulePtr; - modulePtr = modulePtr->nextPtr; - ckfree(ptr); + result = dlclose(dyldLoadHandle->dlHandle); + if (!result) { + TclLoadDbgMsg("dlclose() successful"); + } else { + TclLoadDbgMsg("dlclose() failed: %s", dlerror()); + } + } else +#endif /* TCL_DYLD_USE_DLFCN */ + { +#if TCL_DYLD_USE_NSMODULE || defined(TCL_LOAD_FROM_MEMORY) + Tcl_DyldModuleHandle *modulePtr = dyldLoadHandle->modulePtr; + + while (modulePtr != NULL) { + void *ptr; + bool result; + + result = NSUnLinkModule(modulePtr->module, + NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES); + if (result) { + TclLoadDbgMsg("NSUnLinkModule() successful"); + } else { + TclLoadDbgMsg("NSUnLinkModule() failed"); + } + ptr = modulePtr; + modulePtr = modulePtr->nextPtr; + ckfree(ptr); + } +#endif /* TCL_DYLD_USE_NSMODULE */ } ckfree((char*) dyldLoadHandle); } @@ -440,7 +606,7 @@ TclpLoadMemory( int codeSize, /* Size of code data read into buffer or -1 if * an error occurred and the buffer should * just be freed. */ - Tcl_LoadHandle *loadHandle, /* Filled with token for dynamically loaded + Tcl_LoadHandle *loadHandle, /* Filled with token for dynamically loaded * file which will be passed back to * (*unloadProcPtr)() to unload the file. */ Tcl_FSUnloadFileProc **unloadProcPtr) @@ -452,7 +618,7 @@ TclpLoadMemory( NSObjectFileImage dyldObjFileImage = NULL; Tcl_DyldModuleHandle *modulePtr; NSModule module; - CONST char *objFileImageErrMsg = NULL; + const char *objFileImageErrMsg = NULL; /* * Try to create an object file image that we can load from. @@ -460,64 +626,88 @@ TclpLoadMemory( if (codeSize >= 0) { NSObjectFileImageReturnCode err = NSObjectFileImageSuccess; - CONST struct fat_header *fh = buffer; + const struct fat_header *fh = buffer; uint32_t ms = 0; #ifndef __LP64__ - CONST struct mach_header *mh = NULL; - #define mh_magic OSSwapHostToBigInt32(MH_MAGIC) + const struct mach_header *mh = NULL; #define mh_size sizeof(struct mach_header) + #define mh_magic MH_MAGIC + #define arch_abi 0 #else - CONST struct mach_header_64 *mh = NULL; - #define mh_magic OSSwapHostToBigInt32(MH_MAGIC_64) + const struct mach_header_64 *mh = NULL; #define mh_size sizeof(struct mach_header_64) + #define mh_magic MH_MAGIC_64 + #define arch_abi CPU_ARCH_ABI64 #endif - + if ((size_t) codeSize >= sizeof(struct fat_header) && fh->magic == OSSwapHostToBigInt32(FAT_MAGIC)) { + uint32_t fh_nfat_arch = OSSwapBigToHostInt32(fh->nfat_arch); + /* * Fat binary, try to find mach_header for our architecture */ - uint32_t fh_nfat_arch = OSSwapBigToHostInt32(fh->nfat_arch); - - if ((size_t) codeSize >= sizeof(struct fat_header) + + + TclLoadDbgMsg("Fat binary, %d archs", fh_nfat_arch); + if ((size_t) codeSize >= sizeof(struct fat_header) + fh_nfat_arch * sizeof(struct fat_arch)) { void *fatarchs = (char*)buffer + sizeof(struct fat_header); - CONST NXArchInfo *arch = NXGetLocalArchInfo(); + const NXArchInfo *arch = NXGetLocalArchInfo(); struct fat_arch *fa; - + if (fh->magic != FAT_MAGIC) { swap_fat_arch(fatarchs, fh_nfat_arch, arch->byteorder); } - fa = NXFindBestFatArch(arch->cputype, arch->cpusubtype, - fatarchs, fh_nfat_arch); + fa = NXFindBestFatArch(arch->cputype | arch_abi, + arch->cpusubtype, fatarchs, fh_nfat_arch); if (fa) { + TclLoadDbgMsg("NXFindBestFatArch() successful: " + "local cputype %d subtype %d, " + "fat cputype %d subtype %d", + arch->cputype | arch_abi, arch->cpusubtype, + fa->cputype, fa->cpusubtype); mh = (void*)((char*)buffer + fa->offset); ms = fa->size; } else { + TclLoadDbgMsg("NXFindBestFatArch() failed"); err = NSObjectFileImageInappropriateFile; } if (fh->magic != FAT_MAGIC) { swap_fat_arch(fatarchs, fh_nfat_arch, arch->byteorder); } } else { + TclLoadDbgMsg("Fat binary header failure"); err = NSObjectFileImageInappropriateFile; } } else { /* * Thin binary */ + + TclLoadDbgMsg("Thin binary"); mh = buffer; ms = codeSize; } if (ms && !(ms >= mh_size && mh->magic == mh_magic && - mh->filetype == OSSwapHostToBigInt32(MH_BUNDLE))) { + mh->filetype == MH_BUNDLE)) { + TclLoadDbgMsg("Inappropriate file: magic %x filetype %d", + mh->magic, mh->filetype); err = NSObjectFileImageInappropriateFile; } if (err == NSObjectFileImageSuccess) { err = NSCreateObjectFileImageFromMemory(buffer, codeSize, &dyldObjFileImage); + if (err == NSObjectFileImageSuccess) { + TclLoadDbgMsg("NSCreateObjectFileImageFromMemory() " + "successful"); + } else { + objFileImageErrMsg = DyldOFIErrorMsg(err); + TclLoadDbgMsg("NSCreateObjectFileImageFromMemory() failed: %s", + objFileImageErrMsg); + } + } else { + objFileImageErrMsg = DyldOFIErrorMsg(err); } - objFileImageErrMsg = DyldOFIErrorMsg(err); } /* @@ -528,9 +718,8 @@ TclpLoadMemory( if (dyldObjFileImage == NULL) { vm_deallocate(mach_task_self(), (vm_address_t) buffer, size); if (objFileImageErrMsg != NULL) { - Tcl_AppendResult(interp, - "NSCreateObjectFileImageFromMemory() error: ", - objFileImageErrMsg, NULL); + Tcl_AppendResult(interp, "NSCreateObjectFileImageFromMemory() " + "error: ", objFileImageErrMsg, NULL); } return TCL_ERROR; } @@ -542,14 +731,16 @@ TclpLoadMemory( module = NSLinkModule(dyldObjFileImage, "[Memory Based Bundle]", NSLINKMODULE_OPTION_BINDNOW | NSLINKMODULE_OPTION_RETURN_ON_ERROR); NSDestroyObjectFileImage(dyldObjFileImage); - - if (!module) { + if (module) { + TclLoadDbgMsg("NSLinkModule() successful"); + } else { NSLinkEditErrors editError; int errorNumber; - CONST char *name, *msg; + const char *errorName, *errMsg; - NSLinkEditError(&editError, &errorNumber, &name, &msg); - Tcl_AppendResult(interp, msg, NULL); + NSLinkEditError(&editError, &errorNumber, &errorName, &errMsg); + TclLoadDbgMsg("NSLinkModule() failed: %s", errMsg); + Tcl_AppendResult(interp, errMsg, NULL); return TCL_ERROR; } @@ -560,21 +751,23 @@ TclpLoadMemory( modulePtr = (Tcl_DyldModuleHandle *) ckalloc(sizeof(Tcl_DyldModuleHandle)); modulePtr->module = module; modulePtr->nextPtr = NULL; - dyldLoadHandle = (Tcl_DyldLoadHandle *) ckalloc(sizeof(Tcl_DyldLoadHandle)); +#if TCL_DYLD_USE_DLFCN + dyldLoadHandle->dlHandle = NULL; +#endif dyldLoadHandle->dyldLibHeader = NULL; dyldLoadHandle->modulePtr = modulePtr; *loadHandle = (Tcl_LoadHandle) dyldLoadHandle; *unloadProcPtr = &TclpUnloadFile; return TCL_OK; } -#endif +#endif /* TCL_LOAD_FROM_MEMORY */ /* * Local Variables: * mode: c * c-basic-offset: 4 - * fill-column: 78 + * fill-column: 79 * End: */ -- cgit v0.12 From 92e2a909349132a063e8f44d0be1b2f419279f7e Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 14 Aug 2007 15:15:37 +0000 Subject: * tests/trace.test: Backport some tests. --- ChangeLog | 4 ++++ tests/trace.test | 28 +++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4b3114a..81324d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-08-14 Don Porter + + * tests/trace.test: Backport some tests. + 2007-08-14 Daniel Steffen * unix/tclLoadDyld.c: use dlfcn API on Mac OS X 10.4 and later; fix diff --git a/tests/trace.test b/tests/trace.test index 32e1b4e..362a505 100644 --- a/tests/trace.test +++ b/tests/trace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: trace.test,v 1.26.2.17 2006/11/04 01:37:56 msofer Exp $ +# RCS: @(#) $Id: trace.test,v 1.26.2.18 2007/08/14 15:15:39 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -230,6 +230,32 @@ test trace-2.5 {trace variable writes} { unset x set info } {} +test trace-2.6 {trace variable writes on compiled local} { + # + # Check correct function of whole array traces on compiled local + # arrays [Bug 1770591]. The corresponding function for read traces is + # already indirectly tested in trace-1.7 + # + catch {unset x} + set info {} + proc p {} { + trace add variable x write traceArray + set x(X) willy + } + p + set info +} {x X write 0 willy} +test trace-2.7 {trace variable writes on errorInfo} -body { + # + # Check correct behaviour of write traces on errorInfo. + # [Bug 1773040] + trace add variable ::errorInfo write traceScalar + catch {set dne} + lrange [set info] 0 2 +} -cleanup { + # always remove trace on errorInfo otherwise further tests will fail + unset ::errorInfo +} -result {::errorInfo {} write} # append no longer triggers read traces when fetching the old values of # variables before doing the append operation. However, lappend _does_ -- cgit v0.12 From bcd8740c3dfb63ffc3fbe93c49e3d03e61a78a3c Mon Sep 17 00:00:00 2001 From: das Date: Thu, 23 Aug 2007 00:27:21 +0000 Subject: ensure WORDS_BIGENDIAN redefinition is consistent with autoconf definition --- generic/tclInt.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclInt.h b/generic/tclInt.h index a5f3896..9d05bd4 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.28 2007/05/10 21:32:17 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.29 2007/08/23 00:27:21 das Exp $ */ #ifndef _TCLINT @@ -67,7 +67,7 @@ # ifdef BIG_ENDIAN # if BYTE_ORDER == BIG_ENDIAN # undef WORDS_BIGENDIAN -# define WORDS_BIGENDIAN +# define WORDS_BIGENDIAN 1 # endif # endif # ifdef LITTLE_ENDIAN -- cgit v0.12 From a8bfcfc6e80c0eaedcdf8e6c9c9088fea32e4ffa Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Fri, 24 Aug 2007 11:22:09 +0000 Subject: * generic/tclCompile.c: replaced copy loop that tripped some compilers with memmove [Bug 1780870] --- ChangeLog | 5 +++++ generic/tclCompile.c | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 81324d8..483e1bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-08-24 Miguel Sofer + + * generic/tclCompile.c: replaced copy loop that tripped some + compilers with memmove [Bug 1780870] + 2007-08-14 Don Porter * tests/trace.test: Backport some tests. diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 4a6fac5..59617b0 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.7 2006/11/28 22:20:00 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.8 2007/08/24 11:22:16 msofer Exp $ */ #include "tclInt.h" @@ -2837,10 +2837,10 @@ TclFixupForwardJump(envPtr, jumpFixupPtr, jumpDist, distThreshold) TclExpandCodeArray(envPtr); } jumpPc = (envPtr->codeStart + jumpFixupPtr->codeOffset); - for (numBytes = envPtr->codeNext-jumpPc-2, p = jumpPc+2+numBytes-1; - numBytes > 0; numBytes--, p--) { - p[3] = p[0]; - } + numBytes = envPtr->codeNext-jumpPc-2; + p = jumpPc+2; + memmove(p+3, p, numBytes); + envPtr->codeNext += 3; jumpDist += 3; switch (jumpFixupPtr->jumpType) { -- cgit v0.12 From edebc51cd082804c286a3e8a8cfbb7f4f51ca543 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 25 Aug 2007 17:12:18 +0000 Subject: * generic/tclClock.c (FormatClock): Claimed additional space for the %c format code to avoid a buffer overrun when formatting (for example) a Friday in February in the Portuguese locale. [Bug 1751117] --- ChangeLog | 7 +++++++ generic/tclClock.c | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 483e1bb..fda9215 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-08-25 Kevin Kenny + + * generic/tclClock.c (FormatClock): Claimed additional space for + the %c format code to avoid a buffer overrun when formatting + (for example) a Friday in February in the Portuguese locale. + [Bug 1751117] + 2007-08-24 Miguel Sofer * generic/tclCompile.c: replaced copy loop that tripped some diff --git a/generic/tclClock.c b/generic/tclClock.c index a939fb2..ace6809 100644 --- a/generic/tclClock.c +++ b/generic/tclClock.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclClock.c,v 1.20.2.3 2007/04/21 22:42:49 kennykb Exp $ + * RCS: @(#) $Id: tclClock.c,v 1.20.2.4 2007/08/25 17:12:20 kennykb Exp $ */ #include "tcl.h" @@ -328,6 +328,9 @@ FormatClock(interp, clockVal, useGMT, format) for (bufSize = 1, p = format; *p != '\0'; p++) { if (*p == '%') { bufSize += 40; + if (p[1] == 'c') { + bufSize += 226; + } } else { bufSize++; } -- cgit v0.12 From b3a92466edc62aac6675f88d7a04e3d2e0494cfe Mon Sep 17 00:00:00 2001 From: das Date: Wed, 5 Sep 2007 01:38:55 +0000 Subject: fix building on Panther --- unix/tclLoadDyld.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index 25bd436..5606706 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.10 2007/08/14 06:34:13 das Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.14.2.11 2007/09/05 01:38:55 das Exp $ */ #include "tclInt.h" @@ -64,6 +64,7 @@ extern char *dlerror(void) WEAK_IMPORT_ATTRIBUTE; #include #undef panic #include +#include typedef struct Tcl_DyldModuleHandle { struct Tcl_DyldModuleHandle *nextPtr; -- cgit v0.12 From c5502f2f5dd95ce494975824aee1679f3a09bf5a Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 6 Sep 2007 20:16:29 +0000 Subject: Fixed obvious stupid error. [Bug 1786647] --- compat/memcmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compat/memcmp.c b/compat/memcmp.c index b1c12a9..8bb7e39 100644 --- a/compat/memcmp.c +++ b/compat/memcmp.c @@ -52,7 +52,7 @@ memcmp(s1, s2, n) CONST unsigned char *ptr2 = (CONST unsigned char *) s2; for ( ; n-- ; ptr1++, ptr2++) { - unsigned char u1 = *s1, u2 = *s2; + unsigned char u1 = *ptr1, u2 = *ptr2; if ( u1 != u2) { return (u1-u2); -- cgit v0.12 From 4b59eed7e9ef54634aa4bf2c3114d2dbe63ca846 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 10 Sep 2007 23:06:10 +0000 Subject: * generic/tclLink.c (Tcl_UpdateLinkedVar): guard against var being unlinked. [Bug 1740631] (maros) --- ChangeLog | 5 +++++ generic/tclLink.c | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index fda9215..0b6fd69 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-09-10 Jeff Hobbs + + * generic/tclLink.c (Tcl_UpdateLinkedVar): guard against var being + unlinked. [Bug 1740631] (maros) + 2007-08-25 Kevin Kenny * generic/tclClock.c (FormatClock): Claimed additional space for diff --git a/generic/tclLink.c b/generic/tclLink.c index 3cbaebb..f9cfc70 100644 --- a/generic/tclLink.c +++ b/generic/tclLink.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLink.c,v 1.8.2.2 2007/05/10 18:23:58 dgp Exp $ + * RCS: @(#) $Id: tclLink.c,v 1.8.2.3 2007/09/10 23:06:12 hobbs Exp $ */ #include "tclInt.h" @@ -206,7 +206,14 @@ Tcl_UpdateLinkedVar(interp, varName) Tcl_IncrRefCount(objPtr); Tcl_ObjSetVar2(interp, linkPtr->varName, NULL, objPtr, TCL_GLOBAL_ONLY); Tcl_DecrRefCount(objPtr); - linkPtr->flags = (linkPtr->flags & ~LINK_BEING_UPDATED) | savedFlag; + /* + * Callback may have unlinked the variable. [Bug 1740631] + */ + linkPtr = (Link *) Tcl_VarTraceInfo(interp, varName, TCL_GLOBAL_ONLY, + LinkTraceProc, (ClientData) NULL); + if (linkPtr != NULL) { + linkPtr->flags = (linkPtr->flags & ~LINK_BEING_UPDATED) | savedFlag; + } } /* -- cgit v0.12 From 7d84381bfcf3014790c83d13caa0dd5fcf16af5e Mon Sep 17 00:00:00 2001 From: patthoyts Date: Tue, 11 Sep 2007 00:10:47 +0000 Subject: Fix for AMD64 target symbols builds. --- ChangeLog | 5 +++++ win/makefile.vc | 26 ++++++++++++++------------ win/rules.vc | 5 ++++- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0b6fd69..2369ff3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-09-11 Pat Thoyts + + * win/makefile.vc: AMD64 target fixes for symbols builds. + * win/rules.vc: + 2007-09-10 Jeff Hobbs * generic/tclLink.c (Tcl_UpdateLinkedVar): guard against var being diff --git a/win/makefile.vc b/win/makefile.vc index e3625b9..5c37f0c 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -12,7 +12,7 @@ # Copyright (c) 2001-2002 David Gravereaux. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.100.2.9 2006/09/26 21:40:36 patthoyts Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.100.2.10 2007/09/11 00:10:48 patthoyts Exp $ #------------------------------------------------------------------------------ # Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) @@ -99,7 +99,7 @@ the build instructions. # memdbg = Enables the debugging memory allocator. # compdbg = Enables byte compilation logging. # -# MACHINE=(IX86|IA64|ALPHA) +# MACHINE=(IX86|IA64|AMD64|ALPHA) # Set the machine type used for the compiler, linker, and # resource compiler. This hook is needed to tell the tools # when alternate platforms are requested. IX86 is the default @@ -327,11 +327,11 @@ cdebug = -O2 $(OPTIMIZATIONS) !else cdebug = !endif -!else if "$(MACHINE)" == "IA64" +!else if "$(MACHINE)" == "IA64" || "$(MACHINE)" == "AMD64" ### Warnings are too many, can't support warnings into errors. -cdebug = -Z7 -Od $(DEBUGFLAGS) +cdebug = -Zi -Od $(DEBUGFLAGS) !else -cdebug = -Z7 -WX $(DEBUGFLAGS) +cdebug = -Zi -WX $(DEBUGFLAGS) !endif ### Declarations common to all compiler options @@ -413,9 +413,9 @@ baselibs = $(baselibs) bufferoverflowU.lib # TclTest flags #--------------------------------------------------------------------- -!IF "$(TESTPAT)" != "" -TESTFLAGS = -file $(TESTPAT) -!ENDIF +!if "$(TESTPAT)" != "" +TESTFLAGS = $(TESTFLAGS) -file $(TESTPAT) +!endif #--------------------------------------------------------------------- @@ -441,8 +441,8 @@ test: setup $(TCLTEST) dlls $(CAT32) !endif runtest: setup $(TCLTEST) dlls $(CAT32) - set TCL_LIBRARY=$(ROOT)/library - $(TCLTEST) + set TCL_LIBRARY=$(ROOT)/library + $(TCLTEST) setup: @if not exist $(OUT_DIR)\nul mkdir $(OUT_DIR) @@ -510,7 +510,7 @@ $(CAT32): $(WINDIR)\cat.c $(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $? $(link32) $(conlflags) -out:$@ -stack:16384 $(TMP_DIR)\cat.obj \ $(baselibs) - $(_VC_MANIFEST_EMBED_EXE) + $(_VC_MANIFEST_EMBED_EXE) #--------------------------------------------------------------------- # Regenerate the stubs files. [Development use only] @@ -594,7 +594,9 @@ CreateButton(4, "FAQ", ExecFile("http://www.purl.org/NET/Tcl-FAQ/")) @$(CPY) "$(DOCTMP_DIR)\$(@B).cnt" "$(OUT_DIR)" $(MAN2TCL): $(TOOLSDIR)\$$(@B).c - $(cc32) -nologo -G4 -ML -O2 -Fo$(@D)\ $(TOOLSDIR)\$(@B).c -link -out:$@ + $(cc32) $(TCL_CFLAGS) -Fo$(@D)\ $(TOOLSDIR)\$(@B).c + $(link32) $(conlflags) -out:$@ -stack:16384 $(@D)\man2tcl.obj + $(_VC_MANIFEST_EMBED_EXE) $(HELPRTF): $(MAN2TCL) $(MAN2HELP) $(MAN2HELP2) $(INDEX) $(DOCDIR)\* $(TCLSH) $(MAN2HELP) -bitmap $(BMP_NOPATH) $(PROJECT) $(VERSION) $(DOCDIR:\=/) diff --git a/win/rules.vc b/win/rules.vc index 91fa444..6cb2381 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -11,7 +11,7 @@ # Copyright (c) 2003-2006 Patrick Thoyts # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: rules.vc,v 1.11.2.6 2006/10/31 15:17:20 patthoyts Exp $ +# RCS: @(#) $Id: rules.vc,v 1.11.2.7 2007/09/11 00:10:48 patthoyts Exp $ #------------------------------------------------------------------------------ !ifndef _RULES_VC @@ -119,11 +119,14 @@ OPTIMIZATIONS = $(OPTIMIZATIONS) -GL DEBUGFLAGS = +# the platform SDK has broken headers that break the runtime checks for amd64 +!if "$(MACHINE)" != "AMD64" !if [nmakehlp -c -RTC1] DEBUGFLAGS = $(DEBUGFLAGS) -RTC1 !elseif [nmakehlp -c -GZ] DEBUGFLAGS = $(DEBUGFLAGS) -GZ !endif +!endif COMPILERFLAGS =-W3 -- cgit v0.12 From 31db1293d7001f8e7aeb25c06df292f43db1154e Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 11 Sep 2007 21:18:40 +0000 Subject: * library/tcltest/tcltest.tcl: Accept underscores and colons in * library/tcltest/pkgIndex.tcl: constraint names. Properly handle constraint expressions that return non-numeric boolean results like "false". Bump to tcltest 2.2.9. [Bug 1772989; RFE 1071322] --- ChangeLog | 7 +++++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 8 ++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2369ff3..b7f5453 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-09-11 Don Porter + + * library/tcltest/tcltest.tcl: Accept underscores and colons in + * library/tcltest/pkgIndex.tcl: constraint names. Properly handle + constraint expressions that return non-numeric boolean results like + "false". Bump to tcltest 2.2.9. [Bug 1772989; RFE 1071322] + 2007-09-11 Pat Thoyts * win/makefile.vc: AMD64 target fixes for symbols builds. diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index 1aa4a46..ec0ef1f 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.3]} {return} -package ifneeded tcltest 2.2.8 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.2.9 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 4e42932..b78c822 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.13 2005/02/24 18:03:36 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.14 2007/09/11 21:18:42 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.2.8 + variable Version 2.2.9 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -2222,7 +2222,7 @@ proc tcltest::Skipped {name constraints} { if {[string match {*[$\[]*} $constraints] != 0} { # full expression, e.g. {$foo > [info tclversion]} catch {set doTest [uplevel #0 expr $constraints]} - } elseif {[regexp {[^.a-zA-Z0-9 \n\r\t]+} $constraints] != 0} { + } elseif {[regexp {[^.:_a-zA-Z0-9 \n\r\t]+} $constraints] != 0} { # something like {a || b} should be turned into # $testConstraints(a) || $testConstraints(b). regsub -all {[.\w]+} $constraints {$testConstraints(&)} c @@ -2243,7 +2243,7 @@ proc tcltest::Skipped {name constraints} { } } - if {$doTest == 0} { + if {!$doTest} { if {[IsVerbose skip]} { puts [outputChannel] "++++ $name SKIPPED: $constraints" } -- cgit v0.12 From 6727c60fc8fb34e49299e93c7c9ac1502935b9b0 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 13 Sep 2007 15:28:09 +0000 Subject: * generic/tclDTrace.d (new file): add DTrace provider for Tcl; allows * generic/tclCompile.h: tracing of proc and command entry & * generic/tclBasic.c: return, bytecode execution, object * generic/tclExecute.c: allocation and more; with essentially * generic/tclInt.h: zero cost when tracing is inactive; * generic/tclObj.c: enable with --enable-dtrace configure * generic/tclProc.c: arg (disabled by default, will only * unix/Makefile.in: enable if DTrace is present). * unix/configure.in: [Patch 1793984] * macosx/Makefile: enable DTrace support. * unix/configure: autoconf-2.13 --- ChangeLog | 16 + generic/tclBasic.c | 79 +++- generic/tclCompile.h | 77 +++- generic/tclDTrace.d | 185 +++++++++ generic/tclExecute.c | 33 +- generic/tclInt.h | 24 +- generic/tclObj.c | 8 +- generic/tclProc.c | 29 +- macosx/Makefile | 4 +- unix/Makefile.in | 28 +- unix/configure | 1047 ++++++++++++++++++++++++++++---------------------- unix/configure.in | 31 +- 12 files changed, 1075 insertions(+), 486 deletions(-) create mode 100644 generic/tclDTrace.d diff --git a/ChangeLog b/ChangeLog index b7f5453..2a7b77d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2007-08-07 Daniel Steffen + + * generic/tclDTrace.d (new file): add DTrace provider for Tcl; allows + * generic/tclCompile.h: tracing of proc and command entry & + * generic/tclBasic.c: return, bytecode execution, object + * generic/tclExecute.c: allocation and more; with essentially + * generic/tclInt.h: zero cost when tracing is inactive; + * generic/tclObj.c: enable with --enable-dtrace configure + * generic/tclProc.c: arg (disabled by default, will only + * unix/Makefile.in: enable if DTrace is present). + * unix/configure.in: [Patch 1793984] + + * macosx/Makefile: enable DTrace support. + + * unix/configure: autoconf-2.13 + 2007-09-11 Don Porter * library/tcltest/tcltest.tcl: Accept underscores and colons in diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 76f439c..270f3e2 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -9,11 +9,12 @@ * Copyright (c) 1994-1997 Sun Microsystems, Inc. * Copyright (c) 1998-1999 by Scriptics Corporation. * Copyright (c) 2001, 2002 by Kevin B. Kenny. All rights reserved. + * Copyright (c) 2007 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.26 2006/11/28 22:19:59 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.27 2007/09/13 15:28:10 das Exp $ */ #include "tclInt.h" @@ -52,6 +53,11 @@ static int EvalTokensStandard _ANSI_ARGS_((Tcl_Interp *interp, #endif +#ifdef USE_DTRACE +static int DTraceObjCmd(ClientData dummy, Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[]); +#endif + extern TclStubs tclStubs; /* @@ -508,6 +514,14 @@ Tcl_CreateInterp() } } +#ifdef USE_DTRACE + /* + * Register the tcl::dtrace command. + */ + + Tcl_CreateObjCommand(interp, "::tcl::dtrace", DTraceObjCmd, NULL, NULL); +#endif /* USE_DTRACE */ + /* * Register the builtin math functions. */ @@ -3181,13 +3195,31 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) break; } + if (TCL_DTRACE_CMD_ARGS_ENABLED()) { + char *a[10]; + int i = 0; + + while (i < 10) { + a[i] = i < objc ? TclGetString(objv[i]) : NULL; i++; + } + TCL_DTRACE_CMD_ARGS(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], + a[8], a[9]); + } + /* * Finally, invoke the command's Tcl_ObjCmdProc. */ cmdPtr->refCount++; iPtr->cmdCount++; if ( code == TCL_OK && traceCode == TCL_OK) { + if (TCL_DTRACE_CMD_ENTRY_ENABLED()) { + TCL_DTRACE_CMD_ENTRY(TclGetString(objv[0]), objc - 1, + (Tcl_Obj **)(objv + 1)); + } code = (*cmdPtr->objProc)(cmdPtr->objClientData, interp, objc, objv); + if (TCL_DTRACE_CMD_RETURN_ENABLED()) { + TCL_DTRACE_CMD_RETURN(TclGetString(objv[0]), code); + } } if (Tcl_AsyncReady()) { code = Tcl_AsyncInvoke(interp, code); @@ -3235,6 +3267,13 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) (void) Tcl_GetObjResult(interp); } + if (TCL_DTRACE_CMD_RESULT_ENABLED()) { + Tcl_Obj *r; + + r = Tcl_GetObjResult(interp); + TCL_DTRACE_CMD_RESULT(TclGetString(objv[0]), code, TclGetString(r), r); + } + done: iPtr->varFramePtr = savedVarFramePtr; return code; @@ -6082,8 +6121,46 @@ Tcl_GetVersion(majorV, minorV, patchLevelV, type) *type = TCL_RELEASE_LEVEL; } } +#ifdef USE_DTRACE /* + *---------------------------------------------------------------------- + * + * DTraceObjCmd -- + * + * This function is invoked to process the "::tcl::dtrace" Tcl command. + * + * Results: + * A standard Tcl object result. + * + * Side effects: + * The 'tcl-probe' DTrace probe is triggered (if it is enabled). + * + *---------------------------------------------------------------------- + */ + +static int +DTraceObjCmd( + ClientData dummy, /* Not used. */ + Tcl_Interp *interp, /* Current interpreter. */ + int objc, /* Number of arguments. */ + Tcl_Obj *CONST objv[]) /* Argument objects. */ +{ + if (TCL_DTRACE_TCL_PROBE_ENABLED()) { + char *a[10]; + int i = 0; + + while (i++ < 10) { + a[i-1] = i < objc ? TclGetString(objv[i]) : NULL; + } + TCL_DTRACE_TCL_PROBE(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], + a[8], a[9]); + } + return TCL_OK; +} +#endif /* USE_DTRACE */ + +/* * Local Variables: * mode: c * c-basic-offset: 4 diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 1769a76..06414fd 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -4,11 +4,12 @@ * Copyright (c) 1996-1998 Sun Microsystems, Inc. * Copyright (c) 1998-2000 by Scriptics Corporation. * Copyright (c) 2001 by Kevin B. Kenny. All rights reserved. + * Copyright (c) 2007 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.33.2.1 2006/11/28 22:20:00 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.33.2.2 2007/09/13 15:28:11 das Exp $ */ #ifndef _TCLCOMPILATION @@ -1082,6 +1083,80 @@ EXTERN int TclCompileVariableCmd _ANSI_ARGS_(( #define TclMin(i, j) ((((int) i) < ((int) j))? (i) : (j)) #define TclMax(i, j) ((((int) i) > ((int) j))? (i) : (j)) +/* + * DTrace probe macros (NOPs if DTrace support is not enabled). + */ + +#ifdef USE_DTRACE + +#include "tclDTrace.h" + +#if defined(__GNUC__ ) && __GNUC__ > 2 +/* Use gcc branch prediction hint to minimize cost of DTrace ENABLED checks. */ +#define unlikely(x) (__builtin_expect((x), 0)) +#else +#define unlikely(x) (x) +#endif + +#define TCL_DTRACE_PROC_ENTRY_ENABLED() unlikely(TCL_PROC_ENTRY_ENABLED()) +#define TCL_DTRACE_PROC_RETURN_ENABLED() unlikely(TCL_PROC_RETURN_ENABLED()) +#define TCL_DTRACE_PROC_RESULT_ENABLED() unlikely(TCL_PROC_RESULT_ENABLED()) +#define TCL_DTRACE_PROC_ARGS_ENABLED() unlikely(TCL_PROC_ARGS_ENABLED()) +#define TCL_DTRACE_PROC_ENTRY(a0, a1, a2) TCL_PROC_ENTRY(a0, a1, a2) +#define TCL_DTRACE_PROC_RETURN(a0, a1) TCL_PROC_RETURN(a0, a1) +#define TCL_DTRACE_PROC_RESULT(a0, a1, a2, a3) TCL_PROC_RESULT(a0, a1, a2, a3) +#define TCL_DTRACE_PROC_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + TCL_PROC_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) + +#define TCL_DTRACE_CMD_ENTRY_ENABLED() unlikely(TCL_CMD_ENTRY_ENABLED()) +#define TCL_DTRACE_CMD_RETURN_ENABLED() unlikely(TCL_CMD_RETURN_ENABLED()) +#define TCL_DTRACE_CMD_RESULT_ENABLED() unlikely(TCL_CMD_RESULT_ENABLED()) +#define TCL_DTRACE_CMD_ARGS_ENABLED() unlikely(TCL_CMD_ARGS_ENABLED()) +#define TCL_DTRACE_CMD_ENTRY(a0, a1, a2) TCL_CMD_ENTRY(a0, a1, a2) +#define TCL_DTRACE_CMD_RETURN(a0, a1) TCL_CMD_RETURN(a0, a1) +#define TCL_DTRACE_CMD_RESULT(a0, a1, a2, a3) TCL_CMD_RESULT(a0, a1, a2, a3) +#define TCL_DTRACE_CMD_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + TCL_CMD_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) + +#define TCL_DTRACE_INST_START_ENABLED() unlikely(TCL_INST_START_ENABLED()) +#define TCL_DTRACE_INST_DONE_ENABLED() unlikely(TCL_INST_DONE_ENABLED()) +#define TCL_DTRACE_INST_START(a0, a1, a2) TCL_INST_START(a0, a1, a2) +#define TCL_DTRACE_INST_DONE(a0, a1, a2) TCL_INST_DONE(a0, a1, a2) + +#define TCL_DTRACE_TCL_PROBE_ENABLED() unlikely(TCL_TCL_PROBE_ENABLED()) +#define TCL_DTRACE_TCL_PROBE(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + TCL_TCL_PROBE(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) + +#else /* USE_DTRACE */ + +#define TCL_DTRACE_PROC_ENTRY_ENABLED() 0 +#define TCL_DTRACE_PROC_RETURN_ENABLED() 0 +#define TCL_DTRACE_PROC_RESULT_ENABLED() 0 +#define TCL_DTRACE_PROC_ARGS_ENABLED() 0 +#define TCL_DTRACE_PROC_ENTRY(a0, a1, a2) {} +#define TCL_DTRACE_PROC_RETURN(a0, a1) {} +#define TCL_DTRACE_PROC_RESULT(a0, a1, a2, a3) {} +#define TCL_DTRACE_PROC_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {} + +#define TCL_DTRACE_CMD_ENTRY_ENABLED() 0 +#define TCL_DTRACE_CMD_RETURN_ENABLED() 0 +#define TCL_DTRACE_CMD_RESULT_ENABLED() 0 +#define TCL_DTRACE_CMD_ARGS_ENABLED() 0 +#define TCL_DTRACE_CMD_ENTRY(a0, a1, a2) {} +#define TCL_DTRACE_CMD_RETURN(a0, a1) {} +#define TCL_DTRACE_CMD_RESULT(a0, a1, a2, a3) {} +#define TCL_DTRACE_CMD_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {} + +#define TCL_DTRACE_INST_START_ENABLED() 0 +#define TCL_DTRACE_INST_DONE_ENABLED() 0 +#define TCL_DTRACE_INST_START(a0, a1, a2) {} +#define TCL_DTRACE_INST_DONE(a0, a1, a2) {} + +#define TCL_DTRACE_TCL_PROBE_ENABLED() 0 +#define TCL_DTRACE_TCL_PROBE(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {} + +#endif /* USE_DTRACE */ + # undef TCL_STORAGE_CLASS # define TCL_STORAGE_CLASS DLLIMPORT diff --git a/generic/tclDTrace.d b/generic/tclDTrace.d new file mode 100644 index 0000000..550539d --- /dev/null +++ b/generic/tclDTrace.d @@ -0,0 +1,185 @@ +/* + * tclDTrace.d -- + * + * Tcl DTrace provider. + * + * Copyright (c) 2007 Daniel A. Steffen + * + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclDTrace.d,v 1.1.2.2 2007/09/13 15:28:12 das Exp $ + */ + +typedef struct Tcl_Obj Tcl_Obj; + +/* + * Tcl DTrace probes + */ + +provider tcl { + /***************************** proc probes *****************************/ + /* + * tcl*:::proc-entry probe + * triggered immediately before proc bytecode execution + * arg0: proc name (string) + * arg1: number of arguments (int) + * arg2: array of proc argument objects (Tcl_Obj**) + */ + probe proc__entry(char* name, int objc, Tcl_Obj **objv); + /* + * tcl*:::proc-return probe + * triggered immediately after proc bytecode execution + * arg0: proc name (string) + * arg1: return code (int) + */ + probe proc__return(char* name, int code); + /* + * tcl*:::proc-result probe + * triggered after proc-return probe and result processing + * arg0: proc name (string) + * arg1: return code (int) + * arg2: proc result (string) + * arg3: proc result object (Tcl_Obj*) + */ + probe proc__result(char* name, int code, char* result, Tcl_Obj *resultobj); + /* + * tcl*:::proc-args probe + * triggered before proc-entry probe, gives access to string + * representation of proc arguments + * arg0: proc name (string) + * arg1-arg9: proc arguments or NULL (strings) + */ + probe proc__args(char* name, char* arg1, char* arg2, char* arg3, + char* arg4, char* arg5, char* arg6, char* arg7, char* arg8, + char* arg9); + + /***************************** cmd probes ******************************/ + /* + * tcl*:::cmd-entry probe + * triggered immediately before commmand execution + * arg0: command name (string) + * arg1: number of arguments (int) + * arg2: array of command argument objects (Tcl_Obj**) + */ + probe cmd__entry(char* name, int objc, Tcl_Obj **objv); + /* + * tcl*:::cmd-return probe + * triggered immediately after commmand execution + * arg0: command name (string) + * arg1: return code (int) + */ + probe cmd__return(char* name, int code); + /* + * tcl*:::cmd-result probe + * triggered after cmd-return probe and result processing + * arg0: command name (string) + * arg1: return code (int) + * arg2: command result (string) + * arg3: command result object (Tcl_Obj*) + */ + probe cmd__result(char* name, int code, char* result, Tcl_Obj *resultobj); + /* + * tcl*:::cmd-args probe + * triggered before cmd-entry probe, gives access to string + * representation of command arguments + * arg0: command name (string) + * arg1-arg9: command arguments or NULL (strings) + */ + probe cmd__args(char* name, char* arg1, char* arg2, char* arg3, + char* arg4, char* arg5, char* arg6, char* arg7, char* arg8, + char* arg9); + + /***************************** inst probes *****************************/ + /* + * tcl*:::inst-start probe + * triggered immediately before execution of a bytecode + * arg0: bytecode name (string) + * arg1: depth of stack (int) + * arg2: top of stack (Tcl_Obj**) + */ + probe inst__start(char* name, int depth, Tcl_Obj **stack); + /* + * tcl*:::inst-done probe + * triggered immediately after execution of a bytecode + * arg0: bytecode name (string) + * arg1: depth of stack (int) + * arg2: top of stack (Tcl_Obj**) + */ + probe inst__done(char* name, int depth, Tcl_Obj **stack); + + /***************************** obj probes ******************************/ + /* + * tcl*:::obj-create probe + * triggered immediately after a new Tcl_Obj has been created + * arg0: object created (Tcl_Obj*) + */ + probe obj__create(Tcl_Obj* obj); + /* + * tcl*:::obj-free probe + * triggered immediately before a Tcl_Obj is freed + * arg0: object to be freed (Tcl_Obj*) + */ + probe obj__free(Tcl_Obj* obj); + + /***************************** tcl probes ******************************/ + /* + * tcl*:::tcl-probe probe + * triggered when the ::tcl::dtrace command is called + * arg0-arg9: command arguments (strings) + */ + probe tcl__probe(char* arg0, char* arg1, char* arg2, char* arg3, + char* arg4, char* arg5, char* arg6, char* arg7, char* arg8, + char* arg9); +}; + +/* + * Tcl types and constants for use in DTrace scripts + */ + +typedef struct Tcl_ObjType { + char *name; + void *freeIntRepProc; + void *dupIntRepProc; + void *updateStringProc; + void *setFromAnyProc; +} Tcl_ObjType; + +struct Tcl_Obj { + int refCount; + char *bytes; + int length; + Tcl_ObjType *typePtr; + union { + long longValue; + double doubleValue; + void *otherValuePtr; + int64_t wideValue; + struct { + void *ptr1; + void *ptr2; + } twoPtrValue; + } internalRep; +}; + +enum return_codes { + TCL_OK = 0, + TCL_ERROR, + TCL_RETURN, + TCL_BREAK, + TCL_CONTINUE +}; + +#pragma D attributes Evolving/Evolving/Common provider tcl provider +#pragma D attributes Private/Private/Common provider tcl module +#pragma D attributes Private/Private/Common provider tcl function +#pragma D attributes Evolving/Evolving/Common provider tcl name +#pragma D attributes Evolving/Evolving/Common provider tcl args + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 4fd6dcc..c0deb73 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.21 2007/03/13 16:26:32 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.22 2007/09/13 15:28:12 das Exp $ */ #include "tclInt.h" @@ -259,6 +259,31 @@ long tclObjsShared[TCL_MAX_SHARED_OBJ_STATS] = { 0, 0, 0, 0, 0 }; #endif /* TCL_COMPILE_DEBUG */ /* + * DTrace instruction probe macros. + */ + +#define TCL_DTRACE_INST_NEXT() \ + if (TCL_DTRACE_INST_DONE_ENABLED()) {\ + if (curInstName) {\ + TCL_DTRACE_INST_DONE(curInstName, stackTop - initStackTop,\ + stackPtr + stackTop);\ + }\ + curInstName = tclInstructionTable[*pc].name;\ + if (TCL_DTRACE_INST_START_ENABLED()) {\ + TCL_DTRACE_INST_START(curInstName, stackTop - initStackTop,\ + stackPtr + stackTop);\ + }\ + } else if (TCL_DTRACE_INST_START_ENABLED()) {\ + TCL_DTRACE_INST_START(tclInstructionTable[*pc].name,\ + stackTop - initStackTop, stackPtr + stackTop);\ + } +#define TCL_DTRACE_INST_LAST() \ + if (TCL_DTRACE_INST_DONE_ENABLED() && curInstName) {\ + TCL_DTRACE_INST_DONE(curInstName, stackTop - initStackTop,\ + stackPtr + stackTop);\ + } + +/* * Macro to read a string containing either a wide or an int and * decide which it is while decoding it at the same time. This * enforces the policy that integer constants between LONG_MIN and @@ -1115,6 +1140,7 @@ TclExecuteByteCode(interp, codePtr) int traceInstructions = (tclTraceExec == 3); char cmdNameBuf[21]; #endif + char *curInstName = NULL; /* * This procedure uses a stack to hold information about catch commands. @@ -1259,6 +1285,9 @@ TclExecuteByteCode(interp, codePtr) #ifdef TCL_COMPILE_STATS iPtr->stats.instructionCount[*pc]++; #endif + + TCL_DTRACE_INST_NEXT(); + switch (*pc) { case INST_DONE: if (stackTop <= initStackTop) { @@ -4035,6 +4064,7 @@ TclExecuteByteCode(interp, codePtr) */ pc += 5; + TCL_DTRACE_INST_NEXT(); #else NEXT_INST_F(5, 0, 0); #endif @@ -4390,6 +4420,7 @@ TclExecuteByteCode(interp, codePtr) */ abnormalReturn: + TCL_DTRACE_INST_LAST(); while (stackTop > initStackTop) { valuePtr = POP_OBJECT(); TclDecrRefCount(valuePtr); diff --git a/generic/tclInt.h b/generic/tclInt.h index 9d05bd4..76544c0 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -8,11 +8,12 @@ * Copyright (c) 1994-1998 Sun Microsystems, Inc. * Copyright (c) 1998-1999 by Scriptics Corporation. * Copyright (c) 2001, 2002 by Kevin B. Kenny. All rights reserved. + * Copyright (c) 2007 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.29 2007/08/23 00:27:21 das Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.30 2007/09/13 15:28:13 das Exp $ */ #ifndef _TCLINT @@ -2300,6 +2301,19 @@ EXTERN Tcl_Obj *TclPtrIncrVar _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, *---------------------------------------------------------------- */ +/* + * DTrace object allocation probe macros. + */ + +#ifdef USE_DTRACE +#include "tclDTrace.h" +#define TCL_DTRACE_OBJ_CREATE(objPtr) TCL_OBJ_CREATE(objPtr) +#define TCL_DTRACE_OBJ_FREE(objPtr) TCL_OBJ_FREE(objPtr) +#else /* USE_DTRACE */ +#define TCL_DTRACE_OBJ_CREATE(objPtr) {} +#define TCL_DTRACE_OBJ_FREE(objPtr) {} +#endif /* USE_DTRACE */ + #ifdef TCL_COMPILE_STATS # define TclIncrObjsAllocated() \ tclObjsAlloced++ @@ -2316,7 +2330,8 @@ EXTERN Tcl_Obj *TclPtrIncrVar _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, (objPtr)->refCount = 0; \ (objPtr)->bytes = tclEmptyStringRep; \ (objPtr)->length = 0; \ - (objPtr)->typePtr = NULL + (objPtr)->typePtr = NULL; \ + TCL_DTRACE_OBJ_CREATE(objPtr) #ifdef TCL_MEM_DEBUG @@ -2325,6 +2340,7 @@ EXTERN Tcl_Obj *TclPtrIncrVar _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, #else # define TclDecrRefCount(objPtr) \ if (--(objPtr)->refCount <= 0) { \ + TCL_DTRACE_OBJ_FREE(objPtr); \ if (((objPtr)->typePtr != NULL) \ && ((objPtr)->typePtr->freeIntRepProc != NULL)) { \ (objPtr)->typePtr->freeIntRepProc(objPtr); \ @@ -2356,7 +2372,9 @@ EXTERN Tcl_Obj *TclPtrIncrVar _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, (objPtr)->bytes = tclEmptyStringRep; \ (objPtr)->length = 0; \ (objPtr)->typePtr = NULL; \ - TclIncrObjsAllocated() + TclIncrObjsAllocated(); \ + TCL_DTRACE_OBJ_CREATE(objPtr) + #elif defined(PURIFY) diff --git a/generic/tclObj.c b/generic/tclObj.c index 9d480d5..092dc1a 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -7,11 +7,12 @@ * Copyright (c) 1995-1997 Sun Microsystems, Inc. * Copyright (c) 1999 by Scriptics Corporation. * Copyright (c) 2001 by ActiveState Corporation. + * Copyright (c) 2007 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.14 2005/11/29 14:02:04 dkf Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.15 2007/09/13 15:28:13 das Exp $ */ #include "tclInt.h" @@ -674,6 +675,7 @@ TclFreeObj(objPtr) } #endif /* TCL_MEM_DEBUG */ + TCL_DTRACE_OBJ_FREE(objPtr); if ((typePtr != NULL) && (typePtr->freeIntRepProc != NULL)) { typePtr->freeIntRepProc(objPtr); } @@ -698,9 +700,7 @@ TclFreeObj(objPtr) Tcl_MutexUnlock(&tclObjMutex); #endif /* TCL_MEM_DEBUG */ -#ifdef TCL_COMPILE_STATS - tclObjsFreed++; -#endif /* TCL_COMPILE_STATS */ + TclIncrObjsFreed(); } /* diff --git a/generic/tclProc.c b/generic/tclProc.c index 3ecf243..d903ae6 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -6,11 +6,12 @@ * * Copyright (c) 1987-1993 The Regents of the University of California. * Copyright (c) 1994-1998 Sun Microsystems, Inc. + * Copyright (c) 2007 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.6 2006/11/28 22:20:02 andreas_kupries Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.7 2007/09/13 15:28:17 das Exp $ */ #include "tclInt.h" @@ -1158,8 +1159,23 @@ TclObjInterpProc(clientData, interp, objc, objv) } #endif /*TCL_COMPILE_DEBUG*/ + if (TCL_DTRACE_PROC_ARGS_ENABLED()) { + char *a[10]; + int i = 0; + + while (i < 10) { + a[i] = i < objc ? TclGetString(objv[i]) : NULL; i++; + } + TCL_DTRACE_PROC_ARGS(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], + a[8], a[9]); + } + iPtr->returnCode = TCL_OK; procPtr->refCount++; + if (TCL_DTRACE_PROC_ENTRY_ENABLED()) { + TCL_DTRACE_PROC_ENTRY(TclGetString(objv[0]), objc - 1, + (Tcl_Obj **)(objv + 1)); + } #ifndef TCL_TIP280 result = TclCompEvalObj(interp, procPtr->bodyPtr); #else @@ -1169,6 +1185,9 @@ TclObjInterpProc(clientData, interp, objc, objv) result = TclCompEvalObj(interp, procPtr->bodyPtr, NULL, 0); #endif + if (TCL_DTRACE_PROC_RETURN_ENABLED()) { + TCL_DTRACE_PROC_RETURN(TclGetString(objv[0]), result); + } procPtr->refCount--; if (procPtr->refCount <= 0) { TclProcCleanupProc(procPtr); @@ -1178,6 +1197,14 @@ TclObjInterpProc(clientData, interp, objc, objv) result = ProcessProcResultCode(interp, procName, nameLen, result); } + if (TCL_DTRACE_PROC_RESULT_ENABLED()) { + Tcl_Obj *r; + + r = Tcl_GetObjResult(interp); + TCL_DTRACE_PROC_RESULT(TclGetString(objv[0]), result, + TclGetString(r), r); + } + /* * Pop and free the call frame for this procedure invocation, then * free the compiledLocals array if malloc'ed storage was used. diff --git a/macosx/Makefile b/macosx/Makefile index a8acc28..8423747 100644 --- a/macosx/Makefile +++ b/macosx/Makefile @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: Makefile,v 1.5.2.17 2007/04/29 02:21:33 das Exp $ +# RCS: @(#) $Id: Makefile,v 1.5.2.18 2007/09/13 15:28:17 das Exp $ # ######################################################################################################## @@ -131,7 +131,7 @@ ${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure \ mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && \ if [ ${UNIX_DIR}/configure -nt config.status ]; then ${UNIX_DIR}/configure \ --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} \ - --mandir=${MANDIR} --enable-threads --enable-framework \ + --mandir=${MANDIR} --enable-threads --enable-framework --enable-dtrace \ ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS}; else ./config.status; fi build-${PROJECT}: ${OBJ_DIR}/Makefile diff --git a/unix/Makefile.in b/unix/Makefile.in index 895b503..43ceb62 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.22 2007/08/07 05:06:41 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.23 2007/09/13 15:28:17 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -254,6 +254,7 @@ COMPAT_OBJS = @LIBOBJS@ AC_FLAGS = @DEFS@ AR = @AR@ RANLIB = @RANLIB@ +DTRACE = @DTRACE@ SRC_DIR = @srcdir@ TOP_DIR = $(SRC_DIR)/.. GENERIC_DIR = $(TOP_DIR)/generic @@ -288,7 +289,7 @@ DDD = ddd # either. #---------------------------------------------------------------- -STUB_CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \ +STUB_CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} -I. \ -I${GENERIC_DIR} -I${SRC_DIR} ${AC_FLAGS} ${MATH_FLAGS} ${GENERIC_FLAGS} \ ${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} ${COMPILE_DEBUG_FLAGS} ${ENV_FLAGS} \ -DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\" @EXTRA_CC_SWITCHES@ @@ -330,9 +331,13 @@ STUB_LIB_OBJS = tclStubLib.o ${COMPAT_OBJS} MAC_OSX_OBJS = tclMacOSXBundle.o tclMacOSXNotify.o -OBJS = ${GENERIC_OBJS} ${UNIX_OBJS} ${NOTIFY_OBJS} ${COMPAT_OBJS} \ +DTRACE_OBJ = tclDTrace.o + +TCL_OBJS = ${GENERIC_OBJS} ${UNIX_OBJS} ${NOTIFY_OBJS} ${COMPAT_OBJS} \ @DL_OBJS@ @PLAT_OBJS@ +OBJS = ${TCL_OBJS} @DTRACE_OBJ@ + TCL_DECLS = \ $(GENERIC_DIR)/tcl.decls \ $(GENERIC_DIR)/tclInt.decls @@ -452,6 +457,10 @@ MAC_OSX_SRCS = \ $(MAC_OSX_DIR)/tclMacOSXBundle.c \ $(MAC_OSX_DIR)/tclMacOSXNotify.c +DTRACE_HDR = tclDTrace.h + +DTRACE_SRC = $(GENERIC_DIR)/tclDTrace.d + # Note: don't include DL_SRCS or MAC_OSX_SRCS in SRCS: most of those # files won't compile on the current machine, and they will cause # problems for things like "make depend". @@ -670,7 +679,8 @@ install-libraries: libraries $(INSTALL_DATA) $$i $(INCLUDE_INSTALL_DIR); \ done; @echo "Installing library files to $(SCRIPT_INSTALL_DIR)"; - @for i in $(TOP_DIR)/library/*.tcl $(TOP_DIR)/library/tclIndex $(UNIX_DIR)/tclAppInit.c $(UNIX_DIR)/ldAix; \ + @for i in $(TOP_DIR)/library/*.tcl $(TOP_DIR)/library/tclIndex \ + $(UNIX_DIR)/tclAppInit.c $(UNIX_DIR)/ldAix @DTRACE_SRC@; \ do \ $(INSTALL_DATA) $$i $(SCRIPT_INSTALL_DIR); \ done; @@ -1092,6 +1102,16 @@ tclMacOSXBundle.o: $(MAC_OSX_DIR)/tclMacOSXBundle.c tclMacOSXNotify.o: $(MAC_OSX_DIR)/tclMacOSXNotify.c $(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tclMacOSXNotify.c +# DTrace support + +$(TCL_OBJS): @DTRACE_HDR@ + +$(DTRACE_HDR): $(DTRACE_SRC) + $(DTRACE) -h $(DTRACE_SWITCHES) -o $@ -s $(DTRACE_SRC) + +$(DTRACE_OBJ): $(DTRACE_SRC) $(TCL_OBJS) + $(DTRACE) -G $(DTRACE_SWITCHES) -o $@ -s $(DTRACE_SRC) $(TCL_OBJS) + # The following targets are not completely general. They are provide # purely for documentation purposes so people who are interested in # the Xt based notifier can modify them to suit their own installation. diff --git a/unix/configure b/unix/configure index 742f051..de8e44a 100755 --- a/unix/configure +++ b/unix/configure @@ -38,6 +38,8 @@ ac_help="$ac_help --enable-langinfo use nl_langinfo if possible to determine encoding at startup, otherwise use old heuristic" ac_help="$ac_help + --enable-dtrace build with DTrace support [--disable-dtrace]" +ac_help="$ac_help --enable-framework package shared libraries in MacOSX frameworks [--disable-framework]" # Initialize some variables set by options. @@ -577,7 +579,7 @@ TCL_SRC_DIR=`cd $srcdir/..; pwd` echo $ac_n "checking whether to use symlinks for manpages""... $ac_c" 1>&6 -echo "configure:581: checking whether to use symlinks for manpages" >&5 +echo "configure:583: checking whether to use symlinks for manpages" >&5 # Check whether --enable-man-symlinks or --disable-man-symlinks was given. if test "${enable_man_symlinks+set}" = set; then enableval="$enable_man_symlinks" @@ -589,7 +591,7 @@ fi echo "$ac_t""$enableval" 1>&6 echo $ac_n "checking whether to compress the manpages""... $ac_c" 1>&6 -echo "configure:593: checking whether to compress the manpages" >&5 +echo "configure:595: checking whether to compress the manpages" >&5 # Check whether --enable-man-compression or --disable-man-compression was given. if test "${enable_man_compression+set}" = set; then enableval="$enable_man_compression" @@ -605,7 +607,7 @@ fi echo "$ac_t""$enableval" 1>&6 if test "$enableval" != "no"; then echo $ac_n "checking for compressed file suffix""... $ac_c" 1>&6 -echo "configure:609: checking for compressed file suffix" >&5 +echo "configure:611: checking for compressed file suffix" >&5 touch TeST $enableval TeST Z=`ls TeST* | sed 's/^....//'` @@ -615,7 +617,7 @@ echo "configure:609: checking for compressed file suffix" >&5 fi echo $ac_n "checking whether to add a package name suffix for the manpages""... $ac_c" 1>&6 -echo "configure:619: checking whether to add a package name suffix for the manpages" >&5 +echo "configure:621: checking whether to add a package name suffix for the manpages" >&5 # Check whether --enable-man-suffix or --disable-man-suffix was given. if test "${enable_man_suffix+set}" = set; then enableval="$enable_man_suffix" @@ -646,7 +648,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:650: checking for $ac_word" >&5 +echo "configure:652: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -676,7 +678,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:680: checking for $ac_word" >&5 +echo "configure:682: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -727,7 +729,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:731: checking for $ac_word" >&5 +echo "configure:733: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -759,7 +761,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:763: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:765: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -770,12 +772,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 774 "configure" +#line 776 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -801,12 +803,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:805: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:807: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:810: checking whether we are using GNU C" >&5 +echo "configure:812: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -815,7 +817,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:819: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -834,7 +836,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:838: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:840: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -876,7 +878,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:880: checking how to run the C preprocessor" >&5 +echo "configure:882: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -891,13 +893,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:901: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:903: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -908,13 +910,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -925,13 +927,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:937: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -957,13 +959,13 @@ echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking dirent.h""... $ac_c" 1>&6 -echo "configure:961: checking dirent.h" >&5 +echo "configure:963: checking dirent.h" >&5 if eval "test \"`echo '$''{'tcl_cv_dirent_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -989,7 +991,7 @@ closedir(d); ; return 0; } EOF -if { (eval echo configure:993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_dirent_h=yes else @@ -1012,17 +1014,17 @@ EOF ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1016: checking for errno.h" >&5 +echo "configure:1018: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1028: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1049,17 +1051,17 @@ fi ac_safe=`echo "float.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for float.h""... $ac_c" 1>&6 -echo "configure:1053: checking for float.h" >&5 +echo "configure:1055: checking for float.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1063: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1086,17 +1088,17 @@ fi ac_safe=`echo "values.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for values.h""... $ac_c" 1>&6 -echo "configure:1090: checking for values.h" >&5 +echo "configure:1092: checking for values.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1100: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1102: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1123,17 +1125,17 @@ fi ac_safe=`echo "limits.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for limits.h""... $ac_c" 1>&6 -echo "configure:1127: checking for limits.h" >&5 +echo "configure:1129: checking for limits.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1163,17 +1165,17 @@ fi ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -echo "configure:1167: checking for stdlib.h" >&5 +echo "configure:1169: checking for stdlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1179: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1196,7 +1198,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -1210,7 +1212,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -1224,7 +1226,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -1245,17 +1247,17 @@ EOF fi ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:1249: checking for string.h" >&5 +echo "configure:1251: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1261: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1278,7 +1280,7 @@ tcl_ok=0 fi cat > conftest.$ac_ext < EOF @@ -1292,7 +1294,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -1318,17 +1320,17 @@ EOF ac_safe=`echo "sys/wait.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/wait.h""... $ac_c" 1>&6 -echo "configure:1322: checking for sys/wait.h" >&5 +echo "configure:1324: checking for sys/wait.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1355,17 +1357,17 @@ fi ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:1359: checking for dlfcn.h" >&5 +echo "configure:1361: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1396,17 +1398,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1400: checking for $ac_hdr" >&5 +echo "configure:1402: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1410: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1412: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1441,21 +1443,21 @@ done if test -z "$no_pipe" && test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1445: checking if the compiler understands -pipe" >&5 +echo "configure:1447: checking if the compiler understands -pipe" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_pipe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -pipe" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1461: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_cc_pipe=yes else @@ -1515,7 +1517,7 @@ EOF EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1519: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:1521: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1523,7 +1525,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1562,7 +1564,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1566: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:1568: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1570,7 +1572,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1609,7 +1611,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1613: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:1615: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1617,7 +1619,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1654,7 +1656,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1658: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1660: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1662,7 +1664,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1696,7 +1698,7 @@ fi if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1700: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1702: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1704,7 +1706,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1755,12 +1757,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1759: checking for $ac_func" >&5 +echo "configure:1761: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1810,12 +1812,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1814: checking for $ac_func" >&5 +echo "configure:1816: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1868,7 +1870,7 @@ done fi # Do checking message here to not mess up interleaved configure output echo $ac_n "checking for building with threads""... $ac_c" 1>&6 -echo "configure:1872: checking for building with threads" >&5 +echo "configure:1874: checking for building with threads" >&5 if test "${TCL_THREADS}" = 1; then cat >> confdefs.h <<\EOF #define TCL_THREADS 1 @@ -1899,12 +1901,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:1903: checking for sin" >&5 +echo "configure:1905: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -1948,7 +1950,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:1952: checking for main in -lieee" >&5 +echo "configure:1954: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1956,14 +1958,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1990,7 +1992,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for main in -linet""... $ac_c" 1>&6 -echo "configure:1994: checking for main in -linet" >&5 +echo "configure:1996: checking for main in -linet" >&5 ac_lib_var=`echo inet'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1998,14 +2000,14 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2027,17 +2029,17 @@ fi ac_safe=`echo "net/errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for net/errno.h""... $ac_c" 1>&6 -echo "configure:2031: checking for net/errno.h" >&5 +echo "configure:2033: checking for net/errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2041: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2043: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2082,12 +2084,12 @@ fi tcl_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:2086: checking for connect" >&5 +echo "configure:2088: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -2132,12 +2134,12 @@ fi if test "$tcl_checkSocket" = 1; then echo $ac_n "checking for setsockopt""... $ac_c" 1>&6 -echo "configure:2136: checking for setsockopt" >&5 +echo "configure:2138: checking for setsockopt" >&5 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_setsockopt=yes" else @@ -2178,7 +2180,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6 -echo "configure:2182: checking for setsockopt in -lsocket" >&5 +echo "configure:2184: checking for setsockopt in -lsocket" >&5 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2186,7 +2188,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2225,12 +2227,12 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:2229: checking for accept" >&5 +echo "configure:2231: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2259: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -2275,12 +2277,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:2279: checking for gethostbyname" >&5 +echo "configure:2281: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -2321,7 +2323,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:2325: checking for gethostbyname in -lnsl" >&5 +echo "configure:2327: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2329,7 +2331,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2346: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2376,7 +2378,7 @@ LIBS="$LIBS$THREADS_LIBS" echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:2380: checking how to build libraries" >&5 +echo "configure:2382: checking how to build libraries" >&5 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" @@ -2415,7 +2417,7 @@ EOF # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2419: checking for $ac_word" >&5 +echo "configure:2421: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2447,7 +2449,7 @@ fi # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:2451: checking if 64bit support is requested" >&5 +echo "configure:2453: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -2461,7 +2463,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:2465: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:2467: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -2482,7 +2484,7 @@ fi echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:2486: checking system version" >&5 +echo "configure:2488: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2517,7 +2519,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2521: checking for dlopen in -ldl" >&5 +echo "configure:2523: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2525,7 +2527,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2584,7 +2586,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2588: checking for $ac_word" >&5 +echo "configure:2590: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2699,7 +2701,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2703: checking for gettimeofday in -lbsd" >&5 +echo "configure:2705: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2707,7 +2709,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2761,7 +2763,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2765: checking for inet_ntoa in -lbind" >&5 +echo "configure:2767: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2769,7 +2771,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2850,7 +2852,7 @@ EOF SHLIB_SUFFIX=".sl" fi echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2854: checking for shl_load in -ldld" >&5 +echo "configure:2856: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2858,7 +2860,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2937,7 +2939,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2941: checking for shl_load in -ldld" >&5 +echo "configure:2943: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2945,7 +2947,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3080,17 +3082,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3084: checking for dld.h" >&5 +echo "configure:3086: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3094: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3096: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3122,7 +3124,7 @@ fi fi if test $do64bit = yes; then echo $ac_n "checking if compiler accepts -m64 flag""... $ac_c" 1>&6 -echo "configure:3126: checking if compiler accepts -m64 flag" >&5 +echo "configure:3128: checking if compiler accepts -m64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_m64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3130,14 +3132,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -m64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_m64=yes else @@ -3190,17 +3192,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3194: checking for dld.h" >&5 +echo "configure:3196: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3206: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3268,17 +3270,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3272: checking for dlfcn.h" >&5 +echo "configure:3274: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3305,13 +3307,13 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3309: checking for ELF" >&5 +echo "configure:3311: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:3394: checking for ELF" >&5 +echo "configure:3396: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 case `arch` in ppc) echo $ac_n "checking if compiler accepts -arch ppc64 flag""... $ac_c" 1>&6 -echo "configure:3475: checking if compiler accepts -arch ppc64 flag" >&5 +echo "configure:3477: checking if compiler accepts -arch ppc64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_ppc64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3479,14 +3481,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_ppc64=yes else @@ -3506,7 +3508,7 @@ echo "$ac_t""$tcl_cv_cc_arch_ppc64" 1>&6 fi;; i386) echo $ac_n "checking if compiler accepts -arch x86_64 flag""... $ac_c" 1>&6 -echo "configure:3510: checking if compiler accepts -arch x86_64 flag" >&5 +echo "configure:3512: checking if compiler accepts -arch x86_64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_x86_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3514,14 +3516,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch x86_64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_x86_64=yes else @@ -3550,7 +3552,7 @@ echo "$ac_t""$tcl_cv_cc_arch_x86_64" 1>&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3554: checking if ld accepts -single_module flag" >&5 +echo "configure:3556: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3558,14 +3560,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3592,7 +3594,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3596: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3598: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3600,14 +3602,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3630,7 +3632,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3634: checking whether to use CoreFoundation" >&5 +echo "configure:3636: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3642,7 +3644,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3646: checking for CoreFoundation.framework" >&5 +echo "configure:3648: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3656,14 +3658,14 @@ else done; fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3690,7 +3692,7 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3694: checking for 64-bit CoreFoundation" >&5 +echo "configure:3696: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3699,14 +3701,14 @@ else eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"' done cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -4021,7 +4023,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4025: checking for ld accepts -Bexport flag" >&5 +echo "configure:4027: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4029,14 +4031,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4042: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4086,13 +4088,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4090: checking sys/exec.h" >&5 +echo "configure:4092: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4110,7 +4112,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4114: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4130,13 +4132,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4134: checking a.out.h" >&5 +echo "configure:4136: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4154,7 +4156,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4158: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4160: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4174,13 +4176,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4178: checking sys/exec_aout.h" >&5 +echo "configure:4180: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4198,7 +4200,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4204: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4351,7 +4353,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4355: checking for build with symbols" >&5 +echo "configure:4357: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4412,21 +4414,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4416: checking for required early compiler flags" >&5 +echo "configure:4418: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4434,7 +4436,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4442,7 +4444,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4446: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4469,14 +4471,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4480: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4482: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4484,7 +4486,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4492,7 +4494,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4496: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4498: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4519,14 +4521,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4534,7 +4536,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4542,7 +4544,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4546: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4573,7 +4575,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4577: checking for 64-bit integer type" >&5 +echo "configure:4579: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4581,14 +4583,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4602,7 +4604,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4636,13 +4638,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4640: checking for struct dirent64" >&5 +echo "configure:4642: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4650,7 +4652,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4671,13 +4673,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4675: checking for struct stat64" >&5 +echo "configure:4677: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4685,7 +4687,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4708,12 +4710,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4712: checking for $ac_func" >&5 +echo "configure:4714: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4761,13 +4763,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4765: checking for off64_t" >&5 +echo "configure:4767: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4775,7 +4777,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4781: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4807,14 +4809,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4811: checking whether byte ordering is bigendian" >&5 +echo "configure:4813: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4825,11 +4827,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4840,7 +4842,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4844: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4846: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4860,7 +4862,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4906,12 +4908,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4910: checking for $ac_func" >&5 +echo "configure:4912: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4968,12 +4970,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4972: checking for $ac_func" >&5 +echo "configure:4974: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5023,12 +5025,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5027: checking for strerror" >&5 +echo "configure:5029: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5075,12 +5077,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5079: checking for getwd" >&5 +echo "configure:5081: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5127,12 +5129,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5131: checking for wait3" >&5 +echo "configure:5133: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5179,12 +5181,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5183: checking for uname" >&5 +echo "configure:5185: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5238,12 +5240,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5242: checking for realpath" >&5 +echo "configure:5244: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5296,12 +5298,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5300: checking for getpwuid_r" >&5 +echo "configure:5302: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5340,13 +5342,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5344: checking for getpwuid_r with 5 args" >&5 +echo "configure:5346: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5363,7 +5365,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5384,13 +5386,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5388: checking for getpwuid_r with 4 args" >&5 +echo "configure:5390: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5407,7 +5409,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5411: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5440,12 +5442,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5444: checking for getpwnam_r" >&5 +echo "configure:5446: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5484,13 +5486,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5488: checking for getpwnam_r with 5 args" >&5 +echo "configure:5490: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5507,7 +5509,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5513: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5528,13 +5530,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5532: checking for getpwnam_r with 4 args" >&5 +echo "configure:5534: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5551,7 +5553,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5555: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5584,12 +5586,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5588: checking for getgrgid_r" >&5 +echo "configure:5590: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5628,13 +5630,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5632: checking for getgrgid_r with 5 args" >&5 +echo "configure:5634: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5651,7 +5653,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5655: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5657: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5672,13 +5674,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5676: checking for getgrgid_r with 4 args" >&5 +echo "configure:5678: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5695,7 +5697,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5728,12 +5730,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5732: checking for getgrnam_r" >&5 +echo "configure:5734: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5772,13 +5774,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5776: checking for getgrnam_r with 5 args" >&5 +echo "configure:5778: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5795,7 +5797,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5816,13 +5818,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5820: checking for getgrnam_r with 4 args" >&5 +echo "configure:5822: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5839,7 +5841,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5845: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5899,12 +5901,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5903: checking for gethostbyname_r" >&5 +echo "configure:5905: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5943,13 +5945,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5947: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5949: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5966,7 +5968,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5987,13 +5989,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5991: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5993: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6010,7 +6012,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6016: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6031,13 +6033,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6035: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6037: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6052,7 +6054,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6058: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6086,12 +6088,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6090: checking for gethostbyaddr_r" >&5 +echo "configure:6092: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6130,13 +6132,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6134: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6136: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6156,7 +6158,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6160: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6162: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6177,13 +6179,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6181: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6183: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6203,7 +6205,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6207: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6249,17 +6251,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6253: checking for $ac_hdr" >&5 +echo "configure:6255: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6263: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6286,7 +6288,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6290: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6292: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6295,7 +6297,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6310,7 +6312,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6327,7 +6329,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6341,7 +6343,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6359,7 +6361,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6374,7 +6376,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6392,7 +6394,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6409,7 +6411,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6427,7 +6429,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6443,7 +6445,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6461,7 +6463,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6478,7 +6480,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6521,20 +6523,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6525: checking for fd_set in sys/types" >&5 +echo "configure:6527: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6550,13 +6552,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6554: checking for fd_mask in sys/select" >&5 +echo "configure:6556: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6593,12 +6595,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6597: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6599: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6606,7 +6608,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6631,17 +6633,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6635: checking for $ac_hdr" >&5 +echo "configure:6637: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6668,12 +6670,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6672: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6674: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6682,7 +6684,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6688: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6703,12 +6705,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6707: checking for tm_zone in struct tm" >&5 +echo "configure:6709: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6716,7 +6718,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6736,12 +6738,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6740: checking for tzname" >&5 +echo "configure:6742: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6751,7 +6753,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6776,12 +6778,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6780: checking for $ac_func" >&5 +echo "configure:6782: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6830,20 +6832,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6834: checking tm_tzadj in struct tm" >&5 +echo "configure:6836: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6849: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6864,20 +6866,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6868: checking tm_gmtoff in struct tm" >&5 +echo "configure:6870: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6902,13 +6904,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6906: checking long timezone variable" >&5 +echo "configure:6908: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6917,7 +6919,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6940,13 +6942,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6944: checking time_t timezone variable" >&5 +echo "configure:6946: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6955,7 +6957,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6959: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6982,12 +6984,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6986: checking for st_blksize in struct stat" >&5 +echo "configure:6988: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6995,7 +6997,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:6999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7001: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7016,12 +7018,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:7020: checking for fstatfs" >&5 +echo "configure:7022: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7073,7 +7075,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7077: checking for 8-bit clean memcmp" >&5 +echo "configure:7079: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7081,7 +7083,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7115,12 +7117,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7119: checking for memmove" >&5 +echo "configure:7121: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7176,7 +7178,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7180: checking proper strstr implementation" >&5 +echo "configure:7182: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7185,7 +7187,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7221,12 +7223,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7225: checking for strtoul" >&5 +echo "configure:7227: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7271,7 +7273,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7275: checking proper strtoul implementation" >&5 +echo "configure:7277: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7280,7 +7282,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7325,12 +7327,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7329: checking for strtod" >&5 +echo "configure:7331: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7375,7 +7377,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7379: checking proper strtod implementation" >&5 +echo "configure:7381: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7384,7 +7386,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7432,12 +7434,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7436: checking for strtod" >&5 +echo "configure:7438: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7482,7 +7484,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7486: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7488: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7491,7 +7493,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7545,12 +7547,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7549: checking for ANSI C header files" >&5 +echo "configure:7551: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7558,7 +7560,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7564: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7575,7 +7577,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7593,7 +7595,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7614,7 +7616,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7625,7 +7627,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7649,12 +7651,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7653: checking for mode_t" >&5 +echo "configure:7655: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7682,12 +7684,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7686: checking for pid_t" >&5 +echo "configure:7688: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7715,12 +7717,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7719: checking for size_t" >&5 +echo "configure:7721: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7748,12 +7750,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7752: checking for uid_t in sys/types.h" >&5 +echo "configure:7754: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7783,13 +7785,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7787: checking for socklen_t" >&5 +echo "configure:7789: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7828,12 +7830,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7832: checking for opendir" >&5 +echo "configure:7834: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7889,13 +7891,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7893: checking union wait" >&5 +echo "configure:7895: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7907,7 +7909,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7934,12 +7936,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7938: checking for strncasecmp" >&5 +echo "configure:7940: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7984,7 +7986,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7988: checking for strncasecmp in -lsocket" >&5 +echo "configure:7990: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7992,7 +7994,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8027,7 +8029,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8031: checking for strncasecmp in -linet" >&5 +echo "configure:8033: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8035,7 +8037,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8084,12 +8086,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8088: checking for BSDgettimeofday" >&5 +echo "configure:8090: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8134,12 +8136,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8138: checking for gettimeofday" >&5 +echo "configure:8140: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8189,13 +8191,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8193: checking for gettimeofday declaration" >&5 +echo "configure:8195: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8226,14 +8228,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8230: checking whether char is unsigned" >&5 +echo "configure:8232: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8289,13 +8291,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8293: checking signed char declarations" >&5 +echo "configure:8295: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8330,7 +8332,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8334: checking for a putenv() that copies the buffer" >&5 +echo "configure:8336: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8339,7 +8341,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8361,7 +8363,7 @@ else } EOF -if { (eval echo configure:8365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8401,17 +8403,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8405: checking for langinfo.h" >&5 +echo "configure:8407: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8415: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8417: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8435,21 +8437,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8439: checking whether to use nl_langinfo" >&5 +echo "configure:8441: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8482,17 +8484,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8486: checking for $ac_hdr" >&5 +echo "configure:8488: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8521,12 +8523,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8525: checking for $ac_func" >&5 +echo "configure:8527: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8578,17 +8580,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8582: checking for $ac_hdr" >&5 +echo "configure:8584: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8592: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8594: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8617,12 +8619,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8621: checking for $ac_func" >&5 +echo "configure:8623: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8672,12 +8674,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8676: checking for $ac_func" >&5 +echo "configure:8678: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8741,17 +8743,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8745: checking for $ac_hdr" >&5 +echo "configure:8747: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8755: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8779,14 +8781,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8783: checking if weak import is available" >&5 +echo "configure:8785: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8830,13 +8832,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8834: checking for fts" >&5 +echo "configure:8836: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8851,7 +8853,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8883,17 +8885,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8887: checking for $ac_hdr" >&5 +echo "configure:8889: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8899: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8923,17 +8925,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8927: checking for $ac_hdr" >&5 +echo "configure:8929: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8937: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8961,7 +8963,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8965: checking system version" >&5 +echo "configure:8967: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8992,7 +8994,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8996: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:8998: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9027,6 +9029,107 @@ EOF #-------------------------------------------------------------------- +# DTrace support +#-------------------------------------------------------------------- + +# Check whether --enable-dtrace or --disable-dtrace was given. +if test "${enable_dtrace+set}" = set; then + enableval="$enable_dtrace" + tcl_ok=$enableval +else + tcl_ok=no +fi + +if test $tcl_ok = yes; then + ac_safe=`echo "sys/sdt.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for sys/sdt.h""... $ac_c" 1>&6 +echo "configure:9047: checking for sys/sdt.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:9057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + tcl_ok=yes +else + echo "$ac_t""no" 1>&6 +tcl_ok=no +fi + +fi +if test $tcl_ok = yes; then + # Extract the first word of "dtrace", so it can be a program name with args. +set dummy dtrace; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:9084: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_DTRACE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$DTRACE" in + /*) + ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH:/usr/sbin" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_DTRACE="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +DTRACE="$ac_cv_path_DTRACE" +if test -n "$DTRACE"; then + echo "$ac_t""$DTRACE" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + test -z "$ac_cv_path_DTRACE" && tcl_ok=no +fi +echo $ac_n "checking whether to enable DTrace support""... $ac_c" 1>&6 +echo "configure:9119: checking whether to enable DTrace support" >&5 +if test $tcl_ok = yes; then + cat >> confdefs.h <<\EOF +#define USE_DTRACE 1 +EOF + + DTRACE_SRC="\${DTRACE_SRC}" + DTRACE_HDR="\${DTRACE_HDR}" + if test "`uname -s`" != "Darwin" ; then + DTRACE_OBJ="\${DTRACE_OBJ}" + fi +fi +echo "$ac_t""$tcl_ok" 1>&6 + +#-------------------------------------------------------------------- # The statements below define a collection of symbols related to # building libtcl as a shared library instead of a static library. #-------------------------------------------------------------------- @@ -9055,7 +9158,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9059: checking how to package libraries" >&5 +echo "configure:9162: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -9260,6 +9363,10 @@ TCL_SHARED_BUILD=${SHARED_BUILD} + + + + CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS="" @@ -9441,6 +9548,7 @@ s%@INSTALL_STUB_LIB@%$INSTALL_STUB_LIB%g s%@CFLAGS_DEFAULT@%$CFLAGS_DEFAULT%g s%@LDFLAGS_DEFAULT@%$LDFLAGS_DEFAULT%g s%@LIBOBJS@%$LIBOBJS%g +s%@DTRACE@%$DTRACE%g s%@TCL_VERSION@%$TCL_VERSION%g s%@TCL_MAJOR_VERSION@%$TCL_MAJOR_VERSION%g s%@TCL_MINOR_VERSION@%$TCL_MINOR_VERSION%g @@ -9471,6 +9579,9 @@ s%@TCL_LIB_VERSIONS_OK@%$TCL_LIB_VERSIONS_OK%g s%@TCL_SHARED_LIB_SUFFIX@%$TCL_SHARED_LIB_SUFFIX%g s%@TCL_UNSHARED_LIB_SUFFIX@%$TCL_UNSHARED_LIB_SUFFIX%g s%@TCL_HAS_LONGLONG@%$TCL_HAS_LONGLONG%g +s%@DTRACE_SRC@%$DTRACE_SRC%g +s%@DTRACE_HDR@%$DTRACE_HDR%g +s%@DTRACE_OBJ@%$DTRACE_OBJ%g s%@BUILD_DLTEST@%$BUILD_DLTEST%g s%@TCL_PACKAGE_PATH@%$TCL_PACKAGE_PATH%g s%@TCL_LIBRARY@%$TCL_LIBRARY%g diff --git a/unix/configure.in b/unix/configure.in index 9c158e9..e3f54c5 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.38 2007/08/07 05:06:44 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.39 2007/09/13 15:28:20 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -530,6 +530,31 @@ fi SC_BLOCKING_STYLE #-------------------------------------------------------------------- +# DTrace support +#-------------------------------------------------------------------- + +AC_ARG_ENABLE(dtrace, + [ --enable-dtrace build with DTrace support [--disable-dtrace]], + [tcl_ok=$enableval], [tcl_ok=no]) +if test $tcl_ok = yes; then + AC_CHECK_HEADER(sys/sdt.h, [tcl_ok=yes], [tcl_ok=no]) +fi +if test $tcl_ok = yes; then + AC_PATH_PROG(DTRACE, dtrace,, [$PATH:/usr/sbin]) + test -z "$ac_cv_path_DTRACE" && tcl_ok=no +fi +AC_MSG_CHECKING([whether to enable DTrace support]) +if test $tcl_ok = yes; then + AC_DEFINE(USE_DTRACE) + DTRACE_SRC="\${DTRACE_SRC}" + DTRACE_HDR="\${DTRACE_HDR}" + if test "`uname -s`" != "Darwin" ; then + DTRACE_OBJ="\${DTRACE_OBJ}" + fi +fi +AC_MSG_RESULT([$tcl_ok]) + +#-------------------------------------------------------------------- # The statements below define a collection of symbols related to # building libtcl as a shared library instead of a static library. #-------------------------------------------------------------------- @@ -718,6 +743,10 @@ AC_SUBST(TCL_UNSHARED_LIB_SUFFIX) AC_SUBST(TCL_HAS_LONGLONG) +AC_SUBST(DTRACE_SRC) +AC_SUBST(DTRACE_HDR) +AC_SUBST(DTRACE_OBJ) + AC_SUBST(BUILD_DLTEST) AC_SUBST(TCL_PACKAGE_PATH) -- cgit v0.12 From 54ead4e58f1ee9ecd97625f3aa3f507a288d7ba8 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 13 Sep 2007 16:13:19 +0000 Subject: whitespace --- generic/tclBasic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 270f3e2..fd37b89 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.27 2007/09/13 15:28:10 das Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.28 2007/09/13 16:13:19 das Exp $ */ #include "tclInt.h" @@ -6159,7 +6159,7 @@ DTraceObjCmd( return TCL_OK; } #endif /* USE_DTRACE */ - + /* * Local Variables: * mode: c -- cgit v0.12 From 71f683fd830092a39bebdaf4c88fa97928fcb5be Mon Sep 17 00:00:00 2001 From: das Date: Fri, 14 Sep 2007 02:31:19 +0000 Subject: typo --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2a7b77d..37d19f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2007-08-07 Daniel Steffen +2007-09-14 Daniel Steffen * generic/tclDTrace.d (new file): add DTrace provider for Tcl; allows * generic/tclCompile.h: tracing of proc and command entry & -- cgit v0.12 From 111e92bc0ba709bc2adf7adf41ed37dcb2bc3618 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 15 Sep 2007 06:01:34 +0000 Subject: * unix/tcl.m4 (SunOS-5.1x): replace direct use of '/usr/ccs/bin/ld' in SHLIB_LD by 'cc' compiler driver. * unix/configure: autoconf-2.13 --- ChangeLog | 6 + unix/configure | 619 +++++++++++++++++++++++++++++---------------------------- unix/tcl.m4 | 7 +- 3 files changed, 324 insertions(+), 308 deletions(-) diff --git a/ChangeLog b/ChangeLog index 37d19f5..4436dab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-09-15 Daniel Steffen + + * unix/tcl.m4 (SunOS-5.1x): replace direct use of '/usr/ccs/bin/ld' + in SHLIB_LD by 'cc' compiler driver. + * unix/configure: autoconf-2.13 + 2007-09-14 Daniel Steffen * generic/tclDTrace.d (new file): add DTrace provider for Tcl; allows diff --git a/unix/configure b/unix/configure index de8e44a..c8c7d9b 100755 --- a/unix/configure +++ b/unix/configure @@ -3994,7 +3994,12 @@ EOF #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" fi else - SHLIB_LD="/usr/ccs/bin/ld -G -z text" + case $system in + SunOS-5.[1-9][0-9]*) + SHLIB_LD='${CC} -G -z text';; + *) + SHLIB_LD="/usr/ccs/bin/ld -G -z text";; + esac CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' fi @@ -4023,7 +4028,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4027: checking for ld accepts -Bexport flag" >&5 +echo "configure:4032: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4031,14 +4036,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4088,13 +4093,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4092: checking sys/exec.h" >&5 +echo "configure:4097: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4112,7 +4117,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4121: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4132,13 +4137,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4136: checking a.out.h" >&5 +echo "configure:4141: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4156,7 +4161,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4160: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4176,13 +4181,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4180: checking sys/exec_aout.h" >&5 +echo "configure:4185: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4200,7 +4205,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4204: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4353,7 +4358,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4357: checking for build with symbols" >&5 +echo "configure:4362: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4414,21 +4419,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4418: checking for required early compiler flags" >&5 +echo "configure:4423: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4436,7 +4441,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4444,7 +4449,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4471,14 +4476,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4482: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4486,7 +4491,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4494,7 +4499,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4498: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4521,14 +4526,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4536,7 +4541,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4544,7 +4549,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4553: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4575,7 +4580,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4579: checking for 64-bit integer type" >&5 +echo "configure:4584: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4583,14 +4588,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4604,7 +4609,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4638,13 +4643,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4642: checking for struct dirent64" >&5 +echo "configure:4647: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4652,7 +4657,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4661: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4673,13 +4678,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4677: checking for struct stat64" >&5 +echo "configure:4682: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4687,7 +4692,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4710,12 +4715,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4714: checking for $ac_func" >&5 +echo "configure:4719: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4763,13 +4768,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4767: checking for off64_t" >&5 +echo "configure:4772: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4777,7 +4782,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4781: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4786: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4809,14 +4814,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4813: checking whether byte ordering is bigendian" >&5 +echo "configure:4818: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4827,11 +4832,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4836: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4842,7 +4847,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4846: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4862,7 +4867,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4908,12 +4913,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4912: checking for $ac_func" >&5 +echo "configure:4917: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4970,12 +4975,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4974: checking for $ac_func" >&5 +echo "configure:4979: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5025,12 +5030,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5029: checking for strerror" >&5 +echo "configure:5034: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5077,12 +5082,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5081: checking for getwd" >&5 +echo "configure:5086: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5129,12 +5134,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5133: checking for wait3" >&5 +echo "configure:5138: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5181,12 +5186,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5185: checking for uname" >&5 +echo "configure:5190: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5240,12 +5245,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5244: checking for realpath" >&5 +echo "configure:5249: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5298,12 +5303,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5302: checking for getpwuid_r" >&5 +echo "configure:5307: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5342,13 +5347,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5346: checking for getpwuid_r with 5 args" >&5 +echo "configure:5351: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5365,7 +5370,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5386,13 +5391,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5390: checking for getpwuid_r with 4 args" >&5 +echo "configure:5395: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5409,7 +5414,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5442,12 +5447,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5446: checking for getpwnam_r" >&5 +echo "configure:5451: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5486,13 +5491,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5490: checking for getpwnam_r with 5 args" >&5 +echo "configure:5495: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5509,7 +5514,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5513: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5530,13 +5535,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5534: checking for getpwnam_r with 4 args" >&5 +echo "configure:5539: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5553,7 +5558,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5586,12 +5591,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5590: checking for getgrgid_r" >&5 +echo "configure:5595: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5630,13 +5635,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5634: checking for getgrgid_r with 5 args" >&5 +echo "configure:5639: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5653,7 +5658,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5657: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5674,13 +5679,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5678: checking for getgrgid_r with 4 args" >&5 +echo "configure:5683: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5697,7 +5702,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5730,12 +5735,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5734: checking for getgrnam_r" >&5 +echo "configure:5739: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5774,13 +5779,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5778: checking for getgrnam_r with 5 args" >&5 +echo "configure:5783: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5797,7 +5802,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5806: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5818,13 +5823,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5822: checking for getgrnam_r with 4 args" >&5 +echo "configure:5827: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5841,7 +5846,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5845: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5901,12 +5906,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5905: checking for gethostbyname_r" >&5 +echo "configure:5910: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5945,13 +5950,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5949: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5954: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5968,7 +5973,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5989,13 +5994,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5993: checking for gethostbyname_r with 5 args" >&5 +echo "configure:5998: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6012,7 +6017,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6016: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6021: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6033,13 +6038,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6037: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6042: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6054,7 +6059,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6058: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6063: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6088,12 +6093,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6092: checking for gethostbyaddr_r" >&5 +echo "configure:6097: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6132,13 +6137,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6136: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6141: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6158,7 +6163,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6162: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6167: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6179,13 +6184,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6183: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6188: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6205,7 +6210,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6251,17 +6256,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6255: checking for $ac_hdr" >&5 +echo "configure:6260: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6288,7 +6293,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6292: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6297: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6297,7 +6302,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6312,7 +6317,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6329,7 +6334,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6343,7 +6348,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6361,7 +6366,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6376,7 +6381,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6394,7 +6399,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6411,7 +6416,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6429,7 +6434,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6445,7 +6450,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6463,7 +6468,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6480,7 +6485,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6523,20 +6528,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6527: checking for fd_set in sys/types" >&5 +echo "configure:6532: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6552,13 +6557,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6556: checking for fd_mask in sys/select" >&5 +echo "configure:6561: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6595,12 +6600,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6599: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6604: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6608,7 +6613,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6633,17 +6638,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6637: checking for $ac_hdr" >&5 +echo "configure:6642: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6652: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6670,12 +6675,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6674: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6679: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6684,7 +6689,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6688: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6693: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6705,12 +6710,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6709: checking for tm_zone in struct tm" >&5 +echo "configure:6714: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6718,7 +6723,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6738,12 +6743,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6742: checking for tzname" >&5 +echo "configure:6747: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6753,7 +6758,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6778,12 +6783,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6782: checking for $ac_func" >&5 +echo "configure:6787: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6832,20 +6837,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6836: checking tm_tzadj in struct tm" >&5 +echo "configure:6841: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6849: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6854: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6866,20 +6871,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6870: checking tm_gmtoff in struct tm" >&5 +echo "configure:6875: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6888: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6904,13 +6909,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6908: checking long timezone variable" >&5 +echo "configure:6913: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6919,7 +6924,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6942,13 +6947,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6946: checking time_t timezone variable" >&5 +echo "configure:6951: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6957,7 +6962,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6984,12 +6989,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6988: checking for st_blksize in struct stat" >&5 +echo "configure:6993: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6997,7 +7002,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:7001: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7006: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7018,12 +7023,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:7022: checking for fstatfs" >&5 +echo "configure:7027: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7075,7 +7080,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7079: checking for 8-bit clean memcmp" >&5 +echo "configure:7084: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7083,7 +7088,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7117,12 +7122,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7121: checking for memmove" >&5 +echo "configure:7126: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7178,7 +7183,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7182: checking proper strstr implementation" >&5 +echo "configure:7187: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7187,7 +7192,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7223,12 +7228,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7227: checking for strtoul" >&5 +echo "configure:7232: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7273,7 +7278,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7277: checking proper strtoul implementation" >&5 +echo "configure:7282: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7282,7 +7287,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7327,12 +7332,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7331: checking for strtod" >&5 +echo "configure:7336: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7377,7 +7382,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7381: checking proper strtod implementation" >&5 +echo "configure:7386: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7386,7 +7391,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7434,12 +7439,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7438: checking for strtod" >&5 +echo "configure:7443: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7484,7 +7489,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7488: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7493: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7493,7 +7498,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7547,12 +7552,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7551: checking for ANSI C header files" >&5 +echo "configure:7556: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7560,7 +7565,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7564: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7577,7 +7582,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7595,7 +7600,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7616,7 +7621,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7627,7 +7632,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7651,12 +7656,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7655: checking for mode_t" >&5 +echo "configure:7660: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7684,12 +7689,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7688: checking for pid_t" >&5 +echo "configure:7693: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7717,12 +7722,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7721: checking for size_t" >&5 +echo "configure:7726: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7750,12 +7755,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7754: checking for uid_t in sys/types.h" >&5 +echo "configure:7759: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7785,13 +7790,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7789: checking for socklen_t" >&5 +echo "configure:7794: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7830,12 +7835,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7834: checking for opendir" >&5 +echo "configure:7839: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7891,13 +7896,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7895: checking union wait" >&5 +echo "configure:7900: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7909,7 +7914,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7936,12 +7941,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7940: checking for strncasecmp" >&5 +echo "configure:7945: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7986,7 +7991,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7990: checking for strncasecmp in -lsocket" >&5 +echo "configure:7995: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7994,7 +7999,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8029,7 +8034,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8033: checking for strncasecmp in -linet" >&5 +echo "configure:8038: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8037,7 +8042,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8086,12 +8091,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8090: checking for BSDgettimeofday" >&5 +echo "configure:8095: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8136,12 +8141,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8140: checking for gettimeofday" >&5 +echo "configure:8145: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8191,13 +8196,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8195: checking for gettimeofday declaration" >&5 +echo "configure:8200: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8228,14 +8233,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8232: checking whether char is unsigned" >&5 +echo "configure:8237: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8291,13 +8296,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8295: checking signed char declarations" >&5 +echo "configure:8300: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8316: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8332,7 +8337,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8336: checking for a putenv() that copies the buffer" >&5 +echo "configure:8341: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8341,7 +8346,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8363,7 +8368,7 @@ else } EOF -if { (eval echo configure:8367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8403,17 +8408,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8407: checking for langinfo.h" >&5 +echo "configure:8412: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8417: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8437,21 +8442,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8441: checking whether to use nl_langinfo" >&5 +echo "configure:8446: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8460: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8484,17 +8489,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8488: checking for $ac_hdr" >&5 +echo "configure:8493: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8503: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8523,12 +8528,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8527: checking for $ac_func" >&5 +echo "configure:8532: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8580,17 +8585,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8584: checking for $ac_hdr" >&5 +echo "configure:8589: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8594: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8619,12 +8624,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8623: checking for $ac_func" >&5 +echo "configure:8628: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8674,12 +8679,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8678: checking for $ac_func" >&5 +echo "configure:8683: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8743,17 +8748,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8747: checking for $ac_hdr" >&5 +echo "configure:8752: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8762: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8781,14 +8786,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8785: checking if weak import is available" >&5 +echo "configure:8790: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8832,13 +8837,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8836: checking for fts" >&5 +echo "configure:8841: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8853,7 +8858,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8885,17 +8890,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8889: checking for $ac_hdr" >&5 +echo "configure:8894: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8899: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8904: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8925,17 +8930,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8929: checking for $ac_hdr" >&5 +echo "configure:8934: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8963,7 +8968,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8967: checking system version" >&5 +echo "configure:8972: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8994,7 +8999,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:8998: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:9003: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9043,17 +9048,17 @@ fi if test $tcl_ok = yes; then ac_safe=`echo "sys/sdt.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/sdt.h""... $ac_c" 1>&6 -echo "configure:9047: checking for sys/sdt.h" >&5 +echo "configure:9052: checking for sys/sdt.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9080,7 +9085,7 @@ if test $tcl_ok = yes; then # Extract the first word of "dtrace", so it can be a program name with args. set dummy dtrace; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9084: checking for $ac_word" >&5 +echo "configure:9089: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_DTRACE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9115,7 +9120,7 @@ fi test -z "$ac_cv_path_DTRACE" && tcl_ok=no fi echo $ac_n "checking whether to enable DTrace support""... $ac_c" 1>&6 -echo "configure:9119: checking whether to enable DTrace support" >&5 +echo "configure:9124: checking whether to enable DTrace support" >&5 if test $tcl_ok = yes; then cat >> confdefs.h <<\EOF #define USE_DTRACE 1 @@ -9158,7 +9163,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9162: checking how to package libraries" >&5 +echo "configure:9167: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 6b087dc..94b1cc0 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1924,7 +1924,12 @@ dnl AC_CHECK_TOOL(AR, ar) #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" fi else - SHLIB_LD="/usr/ccs/bin/ld -G -z text" + case $system in + SunOS-5.[[1-9]][[0-9]]*) + SHLIB_LD='${CC} -G -z text';; + *) + SHLIB_LD="/usr/ccs/bin/ld -G -z text";; + esac CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' fi -- cgit v0.12 From cd58b0bf07f294fd7bd344d842a9abe693e97f39 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 18 Sep 2007 17:22:11 +0000 Subject: *** 8.4.16 TAGGED FOR RELEASE *** * changes: updates for 8.4.16 release. --- ChangeLog | 8 +++++++- changes | 31 ++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4436dab..d6747b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-09-18 Don Porter + + *** 8.4.16 TAGGED FOR RELEASE *** + + * changes: updates for 8.4.16 release. + 2007-09-15 Daniel Steffen * unix/tcl.m4 (SunOS-5.1x): replace direct use of '/usr/ccs/bin/ld' @@ -106,7 +112,7 @@ * generic/tclCmdMZ.c: Corrected broken trace reversal logic in * generic/tclTest.c: TclCheckInterpTraces that led to infinite loop * tests/basic.test: when multiple Tcl_CreateTrace traces were set - and one of them did not fire due to level restrictions. [Bug 1743931]. + and one of them did not fire due to level restrictions. [Bug 1743941]. 2007-06-23 Daniel Steffen diff --git a/changes b/changes index bd66062..0ccbc22 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.50 2007/05/16 22:13:07 das Exp $ +RCS: @(#) $Id: changes,v 1.79.2.51 2007/09/18 17:22:13 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6449,3 +6449,32 @@ URL validity checking against RFC 2986 (hobbs) 2007-04-29 (bug fix) fts_open() crash on 64bit Darwin 8 or earlier (steffen) --- Released 8.4.15, May 25, 2007 --- See ChangeLog for details --- + +2007-05-29 (bug fix)[1712723] Joinable thread death on 64-bit (virden,hobbs) + +2007-06-23 (bug fix) Mac OS X: prevent post-fork() abort() (steffen) + +2007-06-27 (bug fix)[1743941] Infinite loop in Tcl_CreateTrace traces (porter) + +2007-06-29 (enhancement) Tcl_Alloc alignment on Darwin (steffen) + +2007-06-30 (bug fix)[1726873] crash in thread sync objects (vasiljevic,twylite) + +2007-07-05 (bug fix)[1743676] no command named "" error message (porter,virden) + +2007-08-14 (platform support) Darwin [load] on intel and 64bit (steffen) + +2007-08-25 (bug fix)[1751117] [clock format ... %c] buffer overrun (kenny) + +2007-09-10 (bug fix)[1740631] Linked variable unlink prevention (maros,hobbs) + +2007-09-11 (platform support) Windows AMD64 support (thoyts) + +2007-09-11 (bug fix)[1772989,1071322] Support _, : in test constraints (porter) +=> tcltest 2.2.9 + +2007-09-14 (enhancement)[1793984] Support for --enable-dtrace builds (steffen) + +2007-09-15 (platform support) SunOS-5.1x link with cc, not ld (steffen) + +--- Released 8.4.16, September 21, 2007 --- See ChangeLog for details --- -- cgit v0.12 From c305f5464ea3858ebfe9fe90c826fff383041cf2 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 18 Sep 2007 19:37:06 +0000 Subject: Darwin changes for 8.4.16 --- changes | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/changes b/changes index 0ccbc22..1189624 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.51 2007/09/18 17:22:13 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.52 2007/09/18 19:37:06 das Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6452,7 +6452,9 @@ URL validity checking against RFC 2986 (hobbs) 2007-05-29 (bug fix)[1712723] Joinable thread death on 64-bit (virden,hobbs) -2007-06-23 (bug fix) Mac OS X: prevent post-fork() abort() (steffen) +2007-06-06 (platform support) Darwin: add plist to tclsh (steffen) + +2007-06-23 (bug fix) Darwin: prevent post-fork() abort() (steffen) 2007-06-27 (bug fix)[1743941] Infinite loop in Tcl_CreateTrace traces (porter) @@ -6462,7 +6464,7 @@ URL validity checking against RFC 2986 (hobbs) 2007-07-05 (bug fix)[1743676] no command named "" error message (porter,virden) -2007-08-14 (platform support) Darwin [load] on intel and 64bit (steffen) +2007-08-14 (platform support) Darwin [load] from VFS on intel & 64bit (steffen) 2007-08-25 (bug fix)[1751117] [clock format ... %c] buffer overrun (kenny) @@ -6473,7 +6475,7 @@ URL validity checking against RFC 2986 (hobbs) 2007-09-11 (bug fix)[1772989,1071322] Support _, : in test constraints (porter) => tcltest 2.2.9 -2007-09-14 (enhancement)[1793984] Support for --enable-dtrace builds (steffen) +2007-09-14 (enhancement)[1793984] DTrace provider for Tcl (steffen) 2007-09-15 (platform support) SunOS-5.1x link with cc, not ld (steffen) -- cgit v0.12 From 5a81901027b82d89f66a96019c153b05eb839c3b Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 19 Sep 2007 09:23:56 +0000 Subject: * generic/tclPkg.c: Backport fix for [1573844] to the * tests/pkg.test: TCL_TIP268 sections. --- ChangeLog | 8 +- generic/tclPkg.c | 1298 +++++++++++++++++++++--------------------------------- tests/pkg.test | 22 +- 3 files changed, 508 insertions(+), 820 deletions(-) diff --git a/ChangeLog b/ChangeLog index d6747b6..645ef72 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,13 @@ -2007-09-18 Don Porter +2007-09-19 Don Porter *** 8.4.16 TAGGED FOR RELEASE *** + * generic/tclPkg.c: Backport fix for [1573844] to the + * tests/pkg.test: TCL_TIP268 sections. + +2007-09-18 Don Porter + + * changes: updates for 8.4.16 release. 2007-09-15 Daniel Steffen diff --git a/generic/tclPkg.c b/generic/tclPkg.c index df209ea..159c87b 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.9.2.9 2007/03/19 17:06:26 dgp Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.9.2.10 2007/09/19 09:23:59 dgp Exp $ * * TIP #268. * Heavily rewritten to handle the extend version numbers, and extended @@ -64,25 +64,39 @@ static int ComparePkgVersions _ANSI_ARGS_((CONST char *v1, static Package * FindPackage _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name)); #else -static int CheckVersionAndConvert(Tcl_Interp *interp, CONST char *string, - char** internal, int* stable); +static int CheckVersionAndConvert(Tcl_Interp *interp, + CONST char *string, char** internal, int* stable); static int CompareVersions(CONST char *v1i, CONST char *v2i, - int *isMajorPtr); -static int CheckRequirement(Tcl_Interp *interp, CONST char *string); -static int CheckAllRequirements(Tcl_Interp* interp, - int reqc, Tcl_Obj *CONST reqv[]); -static int RequirementSatisfied(CONST char *havei, CONST char *req); -static int AllRequirementsSatisfied(CONST char *havei, - int reqc, Tcl_Obj *CONST reqv[]); -static void AddRequirementsToResult(Tcl_Interp* interp, - int reqc, Tcl_Obj *CONST reqv[]); + int *isMajorPtr); +static int CheckRequirement(Tcl_Interp *interp, + CONST char *string); +static int CheckAllRequirements(Tcl_Interp* interp, int reqc, + Tcl_Obj *CONST reqv[]); +static int RequirementSatisfied(char *havei, CONST char *req); +static int SomeRequirementSatisfied(char *havei, int reqc, + Tcl_Obj *CONST reqv[]); +static void AddRequirementsToResult(Tcl_Interp* interp, int reqc, + Tcl_Obj *CONST reqv[]); static void AddRequirementsToDString(Tcl_DString* dstring, - int reqc, Tcl_Obj *CONST reqv[]); + int reqc, Tcl_Obj *CONST reqv[]); static Package * FindPackage(Tcl_Interp *interp, CONST char *name); -static Tcl_Obj* ExactRequirement(CONST char* version); -static void VersionCleanupProc(ClientData clientData, - Tcl_Interp *interp); +static const char * PkgRequireCore(Tcl_Interp *interp, CONST char *name, + int reqx, Tcl_Obj *CONST reqv[], + ClientData *clientDataPtr); #endif + +/* + * Helper macros. + */ + +#define DupBlock(v,s,len) \ + ((v) = ckalloc(len), memcpy((v),(s),(len))) +#define DupString(v,s) \ + do { \ + unsigned local__len = (unsigned) (strlen(s) + 1); \ + DupBlock((v),(s),local__len); \ + } while (0) + /* *---------------------------------------------------------------------- @@ -135,8 +149,7 @@ Tcl_PkgProvideEx(interp, name, version, clientData) pkgPtr = FindPackage(interp, name); if (pkgPtr->version == NULL) { - pkgPtr->version = ckalloc((unsigned) (strlen(version) + 1)); - strcpy(pkgPtr->version, version); + DupString(pkgPtr->version, version); pkgPtr->clientData = clientData; return TCL_OK; } @@ -146,13 +159,13 @@ Tcl_PkgProvideEx(interp, name, version, clientData) if (CheckVersionAndConvert (interp, pkgPtr->version, &pvi, NULL) != TCL_OK) { return TCL_ERROR; } else if (CheckVersionAndConvert (interp, version, &vi, NULL) != TCL_OK) { - Tcl_Free (pvi); + ckfree(pvi); return TCL_ERROR; } res = CompareVersions(pvi, vi, NULL); - Tcl_Free (pvi); - Tcl_Free (vi); + ckfree(pvi); + ckfree(vi); if (res == 0) { #endif @@ -250,7 +263,7 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) Tcl_DString command; #else Tcl_Obj *ov; - int res; + const char *result = NULL; #endif /* @@ -333,65 +346,61 @@ Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr) /* Translate between old and new API, and defer to the new function. */ if (version == NULL) { - res = Tcl_PkgRequireProc(interp, name, 0, NULL, clientDataPtr); + result = PkgRequireCore(interp, name, 0, NULL, clientDataPtr); } else { + if (exact && TCL_OK + != CheckVersionAndConvert(interp, version, NULL, NULL)) { + return NULL; + } + ov = Tcl_NewStringObj(version, -1); if (exact) { - ov = ExactRequirement (version); - } else { - ov = Tcl_NewStringObj (version,-1); + Tcl_AppendStringsToObj(ov, "-", version, NULL); } - Tcl_IncrRefCount (ov); - res = Tcl_PkgRequireProc(interp, name, 1, &ov, clientDataPtr); + result = PkgRequireCore(interp, name, 1, &ov, clientDataPtr); Tcl_DecrRefCount (ov); } - if (res != TCL_OK) { - return NULL; - } + return result; +} - /* This function returns the version string explictly, and leaves the - * interpreter result empty. However "Tcl_PkgRequireProc" above returned - * the version through the interpreter result. Simply resetting the result - * now potentially deletes the string (obj), and the pointer to its string - * rep we have, as our result, may be dangling due to this. Our solution - * is to remember the object in interp associated data, with a proper - * reference count, and then reset the result. Now pointers will not - * dangle. It will be a leak however if nothing is done. So the next time - * we come through here we delete the object remembered by this call, as - * we can then be sure that there is no pointer to its string around - * anymore. Beyond that we have a deletion function which cleans up the last - * remembered object which was not cleaned up directly, here. - */ +int +Tcl_PkgRequireProc( + Tcl_Interp *interp, /* Interpreter in which package is now + * available. */ + CONST char *name, /* Name of desired package. */ + int reqc, /* Requirements constraining the desired + * version. */ + Tcl_Obj *CONST reqv[], /* 0 means to use the latest version + * available. */ + ClientData *clientDataPtr) +{ + const char *result = + PkgRequireCore(interp, name, reqc, reqv, clientDataPtr); - ov = (Tcl_Obj*) Tcl_GetAssocData (interp, "tcl/Tcl_PkgRequireEx", NULL); - if (ov != NULL) { - Tcl_DecrRefCount (ov); + if (result == NULL) { + return TCL_ERROR; } - - ov = Tcl_GetObjResult (interp); - Tcl_IncrRefCount (ov); - Tcl_SetAssocData(interp, "tcl/Tcl_PkgRequireEx", VersionCleanupProc, - (ClientData) ov); - Tcl_ResetResult (interp); - - return Tcl_GetString (ov); + Tcl_SetObjResult(interp, Tcl_NewStringObj(result, -1)); + return TCL_OK; } -int -Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) - Tcl_Interp *interp; /* Interpreter in which package is now +static const char * +PkgRequireCore( + Tcl_Interp *interp, /* Interpreter in which package is now * available. */ - CONST char *name; /* Name of desired package. */ - int reqc; /* Requirements constraining the desired version. */ - Tcl_Obj *CONST reqv[]; /* 0 means to use the latest version available. */ - ClientData *clientDataPtr; + CONST char *name, /* Name of desired package. */ + int reqc, /* Requirements constraining the desired + * version. */ + Tcl_Obj *CONST reqv[], /* 0 means to use the latest version + * available. */ + ClientData *clientDataPtr) { Interp *iPtr = (Interp *) interp; Package *pkgPtr; - PkgAvail *availPtr, *bestPtr, *bestStablePtr; - char *availVersion, *bestVersion; /* Internal rep. of versions */ - int availStable; + PkgAvail *availPtr, *bestPtr, *bestStablePtr; + char *availVersion, *bestVersion; /* Internal rep. of versions */ + int availStable; char *script; int code, satisfies, pass; Tcl_DString command; @@ -418,17 +427,16 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) if (pkgPtr->clientData != NULL) { Tcl_AppendResult(interp, "circular package dependency: ", - "attempt to provide ", name, " ", - (char *)(pkgPtr->clientData), " requires ", name, NULL); + "attempt to provide ", name, " ", + (char *)(pkgPtr->clientData), " requires ", name, NULL); #ifndef TCL_TIP268 if (version != NULL) { Tcl_AppendResult(interp, " ", version, NULL); } - return NULL; #else AddRequirementsToResult (interp, reqc, reqv); - return TCL_ERROR; #endif + return NULL; } /* @@ -445,16 +453,15 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) if ((bestPtr != NULL) && (ComparePkgVersions(availPtr->version, bestPtr->version, (int *) NULL) <= 0)) { #else - bestPtr = NULL; - bestStablePtr = NULL; - bestVersion = NULL; - - for (availPtr = pkgPtr->availPtr; - availPtr != NULL; - availPtr = availPtr->nextPtr) { - if (CheckVersionAndConvert (interp, availPtr->version, - &availVersion, &availStable) != TCL_OK) { - /* The provided version number is has invalid syntax. This + bestPtr = NULL; + bestStablePtr = NULL; + bestVersion = NULL; + + for (availPtr = pkgPtr->availPtr; availPtr != NULL; + availPtr = availPtr->nextPtr) { + if (CheckVersionAndConvert(interp, availPtr->version, + &availVersion, &availStable) != TCL_OK) { + /* The provided version number has invalid syntax. This * should not happen. This should have been caught by the * 'package ifneeded' registering the package. */ @@ -469,11 +476,14 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) #else if (bestPtr != NULL) { int res = CompareVersions (availVersion, bestVersion, NULL); + /* Note: Use internal reps! */ if (res <= 0) { - /* The version of the package sought is not as good as the - * currently selected version. Ignore it. */ - Tcl_Free (availVersion); + /* + * The version of the package sought is not as good as the + * currently selected version. Ignore it. + */ + ckfree(availVersion); availVersion = NULL; #endif continue; @@ -484,24 +494,30 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) /* We have found a version which is better than our max. */ if (reqc > 0) { - /* Check satisfaction of requirements */ - satisfies = AllRequirementsSatisfied (availVersion, reqc, reqv); + /* Check satisfaction of requirements. */ + + satisfies = SomeRequirementSatisfied(availVersion, reqc, reqv); #endif if (!satisfies) { #ifdef TCL_TIP268 - Tcl_Free (availVersion); + ckfree(availVersion); availVersion = NULL; #endif continue; } } + bestPtr = availPtr; + #ifdef TCL_TIP268 - if (bestVersion != NULL) Tcl_Free (bestVersion); - bestVersion = availVersion; + if (bestVersion != NULL) { + ckfree(bestVersion); + } + bestVersion = availVersion; availVersion = NULL; - /* If this new best version is stable then it also has to be + /* + * If this new best version is stable then it also has to be * better than the max stable version found so far. */ @@ -511,7 +527,7 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) } if (bestVersion != NULL) { - Tcl_Free (bestVersion); + ckfree(bestVersion); } /* Now choose a version among the two best. For 'latest' we simply @@ -519,7 +535,8 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) * stable, if there is any, or the best if there is nothing stable. */ - if ((iPtr->packagePrefer == PKG_PREFER_STABLE) && (bestStablePtr != NULL)) { + if ((iPtr->packagePrefer == PKG_PREFER_STABLE) + && (bestStablePtr != NULL)) { bestPtr = bestStablePtr; #endif } @@ -533,11 +550,13 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) CONST char *versionToProvide = bestPtr->version; script = bestPtr->script; + pkgPtr->clientData = (ClientData) versionToProvide; Tcl_Preserve((ClientData) script); Tcl_Preserve((ClientData) versionToProvide); code = Tcl_EvalEx(interp, script, -1, TCL_EVAL_GLOBAL); Tcl_Release((ClientData) script); + pkgPtr = FindPackage(interp, name); if (code == TCL_OK) { #ifdef TCL_TIP268 @@ -549,9 +568,9 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) #endif code = TCL_ERROR; Tcl_AppendResult(interp, "attempt to provide package ", - name, " ", versionToProvide, - " failed: no version of package ", name, - " provided", NULL); + name, " ", versionToProvide, + " failed: no version of package ", name, + " provided", NULL); #ifndef TCL_TIP268 } else if (0 != ComparePkgVersions( pkgPtr->version, versionToProvide, NULL)) { @@ -592,124 +611,89 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) " provided instead", NULL); #else } else { - char* pvi; - char* vi; + char *pvi, *vi; int res; - if (CheckVersionAndConvert (interp, pkgPtr->version, &pvi, NULL) != TCL_OK) { + if (CheckVersionAndConvert(interp, pkgPtr->version, &pvi, + NULL) != TCL_OK) { code = TCL_ERROR; - } else if (CheckVersionAndConvert (interp, versionToProvide, &vi, NULL) != TCL_OK) { - Tcl_Free (pvi); + } else if (CheckVersionAndConvert(interp, + versionToProvide, &vi, NULL) != TCL_OK) { + ckfree(pvi); code = TCL_ERROR; } else { res = CompareVersions(pvi, vi, NULL); - Tcl_Free (vi); + ckfree(vi); if (res != 0) { /* At this point, it is clear that a prior * [package ifneeded] command lied to us. It said * that to get a particular version of a particular - * package, we needed to evaluate a particular script. - * However, we evaluated that script and got a different - * version than we were told. This is an error, and we - * ought to report it. + * package, we needed to evaluate a particular + * script. However, we evaluated that script and + * got a different version than we were told. + * This is an error, and we ought to report it. * - * However, we've been letting this type of error slide - * for a long time, and as a result, a lot of packages - * suffer from them. + * However, we've been letting this type of error + * slide for a long time, and as a result, a lot + * of packages suffer from them. * * It's a bit too harsh to make a large number of * existing packages start failing by releasing a - * new patch release, so we forgive this type of error - * for the rest of the Tcl 8.4 series. + * new patch release, so we forgive this type of + * error for the rest of the Tcl 8.4 series. * - * We considered reporting a warning, but in practice - * even that appears too harsh a change for a patch release. + * We considered reporting a warning, but in + * practice even that appears too harsh a change + * for a patch release. * - * We limit the error reporting to only - * the situation where a broken ifneeded script leads + * We limit the error reporting to only the + * situation where a broken ifneeded script leads * to a failure to satisfy the requirement. */ if (reqc > 0) { - satisfies = AllRequirementsSatisfied (pvi, reqc, reqv); + satisfies = SomeRequirementSatisfied(pvi, + reqc, reqv); if (!satisfies) { - Tcl_ResetResult(interp); code = TCL_ERROR; Tcl_AppendResult(interp, - "attempt to provide package ", name, " ", - versionToProvide, " failed: package ", - name, " ", pkgPtr->version, - " provided instead", NULL); + "attempt to provide package ", + name, " ", versionToProvide, + " failed: package ", name, " ", + pkgPtr->version, + " provided instead", NULL); } } - /* - * Warning generation now disabled - if (code == TCL_OK) { - Tcl_Obj *msg = Tcl_NewStringObj( - "attempt to provide package ", -1); - Tcl_Obj *cmdPtr = Tcl_NewListObj(0, NULL); - Tcl_ListObjAppendElement(NULL, cmdPtr, - Tcl_NewStringObj("tclLog", -1)); - Tcl_AppendStringsToObj(msg, name, " ", versionToProvide, - " failed: package ", name, " ", - pkgPtr->version, " provided instead", NULL); - Tcl_ListObjAppendElement(NULL, cmdPtr, msg); - Tcl_IncrRefCount(cmdPtr); - Tcl_EvalObjEx(interp, cmdPtr, TCL_EVAL_GLOBAL); - Tcl_DecrRefCount(cmdPtr); - Tcl_ResetResult(interp); - } - */ #endif } #ifdef TCL_TIP268 - Tcl_Free (pvi); + ckfree(pvi); #endif } -#ifndef TCL_TIP268 - /* - * Warning generation now disabled - if (code == TCL_OK) { - Tcl_Obj *msg = Tcl_NewStringObj( - "attempt to provide package ", -1); - Tcl_Obj *cmdPtr = Tcl_NewListObj(0, NULL); - Tcl_ListObjAppendElement(NULL, cmdPtr, - Tcl_NewStringObj("tclLog", -1)); - Tcl_AppendStringsToObj(msg, name, " ", versionToProvide, - " failed: package ", name, " ", - pkgPtr->version, " provided instead", NULL); - Tcl_ListObjAppendElement(NULL, cmdPtr, msg); - Tcl_IncrRefCount(cmdPtr); - Tcl_EvalObjEx(interp, cmdPtr, TCL_EVAL_GLOBAL); - Tcl_DecrRefCount(cmdPtr); - Tcl_ResetResult(interp); - } - */ -#endif } } else if (code != TCL_ERROR) { Tcl_Obj *codePtr = Tcl_NewIntObj(code); Tcl_ResetResult(interp); Tcl_AppendResult(interp, "attempt to provide package ", - name, " ", versionToProvide, " failed: ", - "bad return code: ", Tcl_GetString(codePtr), NULL); + name, " ", versionToProvide, " failed: ", + "bad return code: ", Tcl_GetString(codePtr), NULL); Tcl_DecrRefCount(codePtr); code = TCL_ERROR; } + Tcl_Release((ClientData) versionToProvide); if (code != TCL_OK) { /* - * Take a non-TCL_OK code from the script as an - * indication the package wasn't loaded properly, - * so the package system should not remember an - * improper load. + * Take a non-TCL_OK code from the script as an indication the + * package wasn't loaded properly, so the package system + * should not remember an improper load. * - * This is consistent with our returning NULL. - * If we're not willing to tell our caller we - * got a particular version, we shouldn't store - * that version for telling future callers either. + * This is consistent with our returning NULL. If we're not + * willing to tell our caller we got a particular version, we + * shouldn't store that version for telling future callers + * either. */ Tcl_AddErrorInfo(interp, "\n (\"package ifneeded\" script)"); if (pkgPtr->version != NULL) { @@ -717,12 +701,9 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) pkgPtr->version = NULL; } pkgPtr->clientData = NULL; -#ifndef TCL_TIP268 return NULL; -#else - return TCL_ERROR; -#endif } + break; } @@ -735,6 +716,7 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) if (pass > 1) { break; } + script = ((Interp *) interp)->packageUnknown; if (script != NULL) { Tcl_DStringInit(&command); @@ -753,21 +735,18 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) code = Tcl_EvalEx(interp, Tcl_DStringValue(&command), Tcl_DStringLength(&command), TCL_EVAL_GLOBAL); Tcl_DStringFree(&command); + if ((code != TCL_OK) && (code != TCL_ERROR)) { Tcl_Obj *codePtr = Tcl_NewIntObj(code); Tcl_ResetResult(interp); Tcl_AppendResult(interp, "bad return code: ", - Tcl_GetString(codePtr), NULL); + Tcl_GetString(codePtr), NULL); Tcl_DecrRefCount(codePtr); code = TCL_ERROR; } if (code == TCL_ERROR) { Tcl_AddErrorInfo(interp, "\n (\"package unknown\" script)"); -#ifndef TCL_TIP268 return NULL; -#else - return TCL_ERROR; -#endif } Tcl_ResetResult(interp); } @@ -779,11 +758,10 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) if (version != NULL) { Tcl_AppendResult(interp, " ", version, (char *) NULL); } - return NULL; #else AddRequirementsToResult(interp, reqc, reqv); - return TCL_ERROR; #endif + return NULL; } /* @@ -801,10 +779,10 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) if (reqc == 0) { satisfies = 1; } else { - CheckVersionAndConvert (interp, pkgPtr->version, &pkgVersionI, NULL); - satisfies = AllRequirementsSatisfied (pkgVersionI, reqc, reqv); + CheckVersionAndConvert(interp, pkgPtr->version, &pkgVersionI, NULL); + satisfies = SomeRequirementSatisfied(pkgVersionI, reqc, reqv); - Tcl_Free (pkgVersionI); + ckfree(pkgVersionI); #endif } #ifndef TCL_TIP268 @@ -816,23 +794,17 @@ Tcl_PkgRequireProc(interp,name,reqc,reqv,clientDataPtr) if (clientDataPtr) { *clientDataPtr = pkgPtr->clientData; } -#ifndef TCL_TIP268 return pkgPtr->version; -#else - Tcl_SetObjResult (interp, Tcl_NewStringObj (pkgPtr->version, -1)); - return TCL_OK; -#endif } - Tcl_AppendResult(interp, "version conflict for package \"", - name, "\": have ", pkgPtr->version, + Tcl_AppendResult(interp, "version conflict for package \"", name, + "\": have ", pkgPtr->version, #ifndef TCL_TIP268 - ", need ", version, (char *) NULL); - return NULL; + ", need ", version, (char *) NULL); #else - ", need", (char*) NULL); + ", need", (char*) NULL); AddRequirementsToResult (interp, reqc, reqv); - return TCL_ERROR; #endif + return NULL; } /* @@ -891,64 +863,28 @@ Tcl_PkgPresentEx(interp, name, version, exact, clientDataPtr) Interp *iPtr = (Interp *) interp; Tcl_HashEntry *hPtr; Package *pkgPtr; - int satisfies, result; hPtr = Tcl_FindHashEntry(&iPtr->packageTable, name); if (hPtr) { pkgPtr = (Package *) Tcl_GetHashValue(hPtr); if (pkgPtr->version != NULL) { -#ifdef TCL_TIP268 - char* pvi; - char* vi; - int thisIsMajor; -#endif /* * At this point we know that the package is present. Make sure - * that the provided version meets the current requirement. + * that the provided version meets the current requirement by + * calling Tcl_PkgRequireEx() to check for us. */ - if (version == NULL) { - if (clientDataPtr) { - *clientDataPtr = pkgPtr->clientData; - } - - return pkgPtr->version; - } -#ifndef TCL_TIP268 - result = ComparePkgVersions(pkgPtr->version, version, &satisfies); -#else - if (CheckVersionAndConvert (interp, pkgPtr->version, &pvi, NULL) != TCL_OK) { - return NULL; - } else if (CheckVersionAndConvert (interp, version, &vi, NULL) != TCL_OK) { - Tcl_Free (pvi); - return NULL; - } - result = CompareVersions(pvi, vi, &thisIsMajor); - Tcl_Free (pvi); - Tcl_Free (vi); - satisfies = (result == 0) || ((result == 1) && !thisIsMajor); -#endif - if ((satisfies && !exact) || (result == 0)) { - if (clientDataPtr) { - *clientDataPtr = pkgPtr->clientData; - } - - return pkgPtr->version; - } - Tcl_AppendResult(interp, "version conflict for package \"", - name, "\": have ", pkgPtr->version, - ", need ", version, (char *) NULL); - return NULL; + return Tcl_PkgRequireEx(interp, name, version, exact, + clientDataPtr); } } if (version != NULL) { Tcl_AppendResult(interp, "package ", name, " ", version, - " is not present", (char *) NULL); + " is not present", NULL); } else { - Tcl_AppendResult(interp, "package ", name, " is not present", - (char *) NULL); + Tcl_AppendResult(interp, "package ", name, " is not present", NULL); } return NULL; } @@ -1018,31 +954,6 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) return TCL_ERROR; } switch ((enum pkgOptions) optionIndex) { -#ifndef TCL_TIP268 - case PKG_FORGET: { - char *keyString; - for (i = 2; i < objc; i++) { - keyString = Tcl_GetString(objv[i]); - hPtr = Tcl_FindHashEntry(&iPtr->packageTable, keyString); - if (hPtr == NULL) { - continue; - } - pkgPtr = (Package *) Tcl_GetHashValue(hPtr); - Tcl_DeleteHashEntry(hPtr); - if (pkgPtr->version != NULL) { - ckfree(pkgPtr->version); - } - while (pkgPtr->availPtr != NULL) { - availPtr = pkgPtr->availPtr; - pkgPtr->availPtr = availPtr->nextPtr; - Tcl_EventuallyFree((ClientData)availPtr->version, TCL_DYNAMIC); - Tcl_EventuallyFree((ClientData)availPtr->script, TCL_DYNAMIC); - ckfree((char *) availPtr); - } - ckfree((char *) pkgPtr); - } - break; -#else case PKG_FORGET: { char *keyString; for (i = 2; i < objc; i++) { @@ -1069,140 +980,87 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) } case PKG_IFNEEDED: { int length; - char* argv3i; - char* avi; +#ifdef TCL_TIP268 int res; + char *argv3i, *avi; +#endif if ((objc != 4) && (objc != 5)) { Tcl_WrongNumArgs(interp, 2, objv, "package version ?script?"); return TCL_ERROR; } argv3 = Tcl_GetString(objv[3]); +#ifdef TCL_TIP268 if (CheckVersionAndConvert(interp, argv3, &argv3i, NULL) != TCL_OK) { - return TCL_ERROR; +#else + if (CheckVersion(interp, argv3) != TCL_OK) { #endif + return TCL_ERROR; } -#ifndef TCL_TIP268 - case PKG_IFNEEDED: { - int length; - if ((objc != 4) && (objc != 5)) { - Tcl_WrongNumArgs(interp, 2, objv, "package version ?script?"); - return TCL_ERROR; -#else argv2 = Tcl_GetString(objv[2]); if (objc == 4) { hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); if (hPtr == NULL) { - Tcl_Free (argv3i); - return TCL_OK; +#ifdef TCL_TIP268 + ckfree(argv3i); #endif + return TCL_OK; } -#ifndef TCL_TIP268 - argv3 = Tcl_GetString(objv[3]); - if (CheckVersion(interp, argv3) != TCL_OK) { -#else pkgPtr = (Package *) Tcl_GetHashValue(hPtr); } else { pkgPtr = FindPackage(interp, argv2); } argv3 = Tcl_GetStringFromObj(objv[3], &length); - for (availPtr = pkgPtr->availPtr, prevPtr = NULL; - availPtr != NULL; + for (availPtr = pkgPtr->availPtr, prevPtr = NULL; availPtr != NULL; prevPtr = availPtr, availPtr = availPtr->nextPtr) { - if (CheckVersionAndConvert (interp, availPtr->version, &avi, NULL) != TCL_OK) { - Tcl_Free (argv3i); -#endif +#ifdef TCL_TIP268 + if (CheckVersionAndConvert(interp, availPtr->version, &avi, + NULL) != TCL_OK) { + ckfree(argv3i); return TCL_ERROR; } -#ifndef TCL_TIP268 - argv2 = Tcl_GetString(objv[2]); - if (objc == 4) { - hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); - if (hPtr == NULL) { -#else res = CompareVersions(avi, argv3i, NULL); - Tcl_Free (avi); + ckfree(avi); if (res == 0){ +#else + if (ComparePkgVersions(availPtr->version, argv3, (int *) NULL) + == 0) { +#endif if (objc == 4) { - Tcl_Free (argv3i); - Tcl_SetResult(interp, availPtr->script, TCL_VOLATILE); +#ifdef TCL_TIP268 + ckfree(argv3i); #endif + Tcl_SetResult(interp, availPtr->script, TCL_VOLATILE); return TCL_OK; } -#ifndef TCL_TIP268 - pkgPtr = (Package *) Tcl_GetHashValue(hPtr); - } else { - pkgPtr = FindPackage(interp, argv2); - } - argv3 = Tcl_GetStringFromObj(objv[3], &length); - for (availPtr = pkgPtr->availPtr, prevPtr = NULL; availPtr != NULL; - prevPtr = availPtr, availPtr = availPtr->nextPtr) { - if (ComparePkgVersions(availPtr->version, argv3, (int *) NULL) - == 0) { - if (objc == 4) { - Tcl_SetResult(interp, availPtr->script, TCL_VOLATILE); - return TCL_OK; - } - Tcl_EventuallyFree((ClientData)availPtr->script, TCL_DYNAMIC); - break; - } - } - if (objc == 4) { - return TCL_OK; -#else Tcl_EventuallyFree((ClientData)availPtr->script, TCL_DYNAMIC); break; -#endif } -#ifndef TCL_TIP268 - if (availPtr == NULL) { - availPtr = (PkgAvail *) ckalloc(sizeof(PkgAvail)); - availPtr->version = ckalloc((unsigned) (length + 1)); - strcpy(availPtr->version, argv3); - if (prevPtr == NULL) { - availPtr->nextPtr = pkgPtr->availPtr; - pkgPtr->availPtr = availPtr; - } else { - availPtr->nextPtr = prevPtr->nextPtr; - prevPtr->nextPtr = availPtr; - } -#else } - Tcl_Free (argv3i); +#ifdef TCL_TIP268 + ckfree(argv3i); +#endif if (objc == 4) { return TCL_OK; } if (availPtr == NULL) { availPtr = (PkgAvail *) ckalloc(sizeof(PkgAvail)); - availPtr->version = ckalloc((unsigned) (length + 1)); - strcpy(availPtr->version, argv3); + DupBlock(availPtr->version, argv3, (unsigned) length + 1); + if (prevPtr == NULL) { availPtr->nextPtr = pkgPtr->availPtr; pkgPtr->availPtr = availPtr; } else { availPtr->nextPtr = prevPtr->nextPtr; prevPtr->nextPtr = availPtr; -#endif } -#ifndef TCL_TIP268 - argv4 = Tcl_GetStringFromObj(objv[4], &length); - availPtr->script = ckalloc((unsigned) (length + 1)); - strcpy(availPtr->script, argv4); - break; -#endif } -#ifndef TCL_TIP268 - case PKG_NAMES: { - if (objc != 2) { - Tcl_WrongNumArgs(interp, 2, objv, NULL); -#else argv4 = Tcl_GetStringFromObj(objv[4], &length); - availPtr->script = ckalloc((unsigned) (length + 1)); - strcpy(availPtr->script, argv4); + DupBlock(availPtr->script, argv4, (unsigned) length + 1); break; } case PKG_NAMES: { @@ -1221,42 +1079,58 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) break; } case PKG_PRESENT: { + const char *name; if (objc < 3) { - presentSyntax: - Tcl_WrongNumArgs(interp, 2, objv, "?-exact? package ?version?"); - return TCL_ERROR; + goto require; } argv2 = Tcl_GetString(objv[2]); if ((argv2[0] == '-') && (strcmp(argv2, "-exact") == 0)) { + if (objc != 5) { + goto requireSyntax; + } exact = 1; + name = TclGetString(objv[3]); } else { exact = 0; + name = argv2; + } + + hPtr = Tcl_FindHashEntry(&iPtr->packageTable, name); + if (hPtr != NULL) { + pkgPtr = Tcl_GetHashValue(hPtr); + if (pkgPtr->version != NULL) { + goto require; + } } +#ifndef TCL_TIP268 version = NULL; if (objc == (4 + exact)) { version = Tcl_GetString(objv[3 + exact]); - if (CheckVersionAndConvert(interp, version, NULL, NULL) != TCL_OK) { -#endif + if (CheckVersion(interp, version) != TCL_OK) { return TCL_ERROR; } -#ifndef TCL_TIP268 - tablePtr = &iPtr->packageTable; - for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr != NULL; - hPtr = Tcl_NextHashEntry(&search)) { -#else } else if ((objc != 3) || exact) { - goto presentSyntax; + goto requireSyntax; } +#else + version = NULL; if (exact) { - argv3 = Tcl_GetString(objv[3]); - version = Tcl_PkgPresent(interp, argv3, version, exact); + version = Tcl_GetString(objv[4]); + if (CheckVersionAndConvert(interp, version, NULL, NULL) != TCL_OK) { + return TCL_ERROR; + } } else { - version = Tcl_PkgPresent(interp, argv2, version, exact); - } - if (version == NULL) { - return TCL_ERROR; + if (CheckAllRequirements(interp, objc-3, objv+3) != TCL_OK) { + return TCL_ERROR; + } + if ((objc > 3) && (CheckVersionAndConvert(interp, + TclGetString(objv[3]), NULL, NULL) == TCL_OK)) { + version = TclGetString(objv[3]); + } } - Tcl_SetObjResult( interp, Tcl_NewStringObj( version, -1 ) ); +#endif + Tcl_PkgPresent(interp, name, version, exact); + return TCL_ERROR; break; } case PKG_PROVIDE: { @@ -1268,87 +1142,81 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) if (objc == 3) { hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); if (hPtr != NULL) { -#endif pkgPtr = (Package *) Tcl_GetHashValue(hPtr); -#ifndef TCL_TIP268 - if ((pkgPtr->version != NULL) || (pkgPtr->availPtr != NULL)) { - Tcl_AppendElement(interp, Tcl_GetHashKey(tablePtr, hPtr)); -#else if (pkgPtr->version != NULL) { Tcl_SetResult(interp, pkgPtr->version, TCL_VOLATILE); -#endif } } -#ifndef TCL_TIP268 - break; -#else return TCL_OK; -#endif } + argv3 = Tcl_GetString(objv[3]); #ifndef TCL_TIP268 - case PKG_PRESENT: { - if (objc < 3) { - presentSyntax: - Tcl_WrongNumArgs(interp, 2, objv, "?-exact? package ?version?"); - return TCL_ERROR; + if (CheckVersion(interp, argv3) != TCL_OK) { #else - argv3 = Tcl_GetString(objv[3]); if (CheckVersionAndConvert(interp, argv3, NULL, NULL) != TCL_OK) { +#endif return TCL_ERROR; } return Tcl_PkgProvide(interp, argv2, argv3); } case PKG_REQUIRE: { + require: if (objc < 3) { requireSyntax: - Tcl_WrongNumArgs(interp, 2, objv, "?-exact? package ?requirement...?"); +#ifndef TCL_TIP268 + Tcl_WrongNumArgs(interp, 2, objv, "?-exact? package ?version?"); +#else + Tcl_WrongNumArgs(interp, 2, objv, + "?-exact? package ?requirement...?"); +#endif + return TCL_ERROR; + } +#ifndef TCL_TIP268 + argv2 = Tcl_GetString(objv[2]); + if ((argv2[0] == '-') && (strcmp(argv2, "-exact") == 0)) { + exact = 1; + } else { + exact = 0; + } + version = NULL; + if (objc == (4 + exact)) { + version = Tcl_GetString(objv[3 + exact]); + if (CheckVersion(interp, version) != TCL_OK) { + return TCL_ERROR; + } + } else if ((objc != 3) || exact) { + goto requireSyntax; + } + if (exact) { + argv3 = Tcl_GetString(objv[3]); + version = Tcl_PkgRequire(interp, argv3, version, exact); + } else { + version = Tcl_PkgRequire(interp, argv2, version, exact); + } + if (version == NULL) { return TCL_ERROR; } + Tcl_SetObjResult( interp, Tcl_NewStringObj( version, -1 ) ); +#else version = NULL; - argv2 = Tcl_GetString(objv[2]); + argv2 = Tcl_GetString(objv[2]); if ((argv2[0] == '-') && (strcmp(argv2, "-exact") == 0)) { Tcl_Obj* ov; int res; if (objc != 5) { goto requireSyntax; -#endif } -#ifndef TCL_TIP268 - argv2 = Tcl_GetString(objv[2]); - if ((argv2[0] == '-') && (strcmp(argv2, "-exact") == 0)) { - exact = 1; - } else { - exact = 0; -#else version = Tcl_GetString(objv[4]); if (CheckVersionAndConvert(interp, version, NULL, NULL) != TCL_OK) { return TCL_ERROR; -#endif } -#ifdef TCL_TIP268 + /* Create a new-style requirement for the exact version. */ - ov = ExactRequirement (version); -#endif + ov = Tcl_NewStringObj(version, -1); + Tcl_AppendStringsToObj(ov, "-", version, NULL); version = NULL; -#ifndef TCL_TIP268 - if (objc == (4 + exact)) { - version = Tcl_GetString(objv[3 + exact]); - if (CheckVersion(interp, version) != TCL_OK) { - return TCL_ERROR; - } - } else if ((objc != 3) || exact) { - goto presentSyntax; - } - if (exact) { - argv3 = Tcl_GetString(objv[3]); - version = Tcl_PkgPresent(interp, argv3, version, exact); - } else { - version = Tcl_PkgPresent(interp, argv2, version, exact); - } - if (version == NULL) { -#else argv3 = Tcl_GetString(objv[3]); Tcl_IncrRefCount (ov); @@ -1357,21 +1225,11 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) return res; } else { if (CheckAllRequirements (interp, objc-3, objv+3) != TCL_OK) { -#endif return TCL_ERROR; } -#ifndef TCL_TIP268 - Tcl_SetObjResult( interp, Tcl_NewStringObj( version, -1 ) ); - break; -#else return Tcl_PkgRequireProc(interp, argv2, objc-3, objv+3, NULL); -#endif } -#ifndef TCL_TIP268 - case PKG_PROVIDE: { - if ((objc != 3) && (objc != 4)) { - Tcl_WrongNumArgs(interp, 2, objv, "package ?version?"); -#else +#endif break; } case PKG_UNKNOWN: { @@ -1388,9 +1246,7 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) if (argv2[0] == 0) { iPtr->packageUnknown = NULL; } else { - iPtr->packageUnknown = (char *) ckalloc((unsigned) - (length + 1)); - strcpy(iPtr->packageUnknown, argv2); + DupBlock(iPtr->packageUnknown, argv2, (unsigned) length + 1); } } else { Tcl_WrongNumArgs(interp, 2, objv, "?command?"); @@ -1398,6 +1254,7 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) } break; } +#ifdef TCL_TIP268 case PKG_PREFER: { /* See tclInt.h for the enum, just before Interp */ static CONST char *pkgPreferOptions[] = { @@ -1410,148 +1267,58 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) } else if (objc == 3) { /* Set value. */ int new; - if (Tcl_GetIndexFromObj(interp, objv[2], pkgPreferOptions, "preference", 0, - &new) != TCL_OK) { -#endif + if (Tcl_GetIndexFromObj(interp, objv[2], pkgPreferOptions, + "preference", 0, &new) != TCL_OK) { return TCL_ERROR; } -#ifndef TCL_TIP268 - argv2 = Tcl_GetString(objv[2]); - if (objc == 3) { - hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); - if (hPtr != NULL) { - pkgPtr = (Package *) Tcl_GetHashValue(hPtr); - if (pkgPtr->version != NULL) { - Tcl_SetResult(interp, pkgPtr->version, TCL_VOLATILE); - } - } - return TCL_OK; -#else if (new < iPtr->packagePrefer) { iPtr->packagePrefer = new; -#endif } -#ifndef TCL_TIP268 - argv3 = Tcl_GetString(objv[3]); - if (CheckVersion(interp, argv3) != TCL_OK) { - return TCL_ERROR; - } - return Tcl_PkgProvide(interp, argv2, argv3); + } + /* Always return current value. */ + Tcl_SetObjResult(interp, + Tcl_NewStringObj(pkgPreferOptions[iPtr->packagePrefer], -1)); + break; + } #endif + case PKG_VCOMPARE: { + if (objc != 4) { + Tcl_WrongNumArgs(interp, 2, objv, "version1 version2"); + return TCL_ERROR; } -#ifndef TCL_TIP268 - case PKG_REQUIRE: { - if (objc < 3) { - requireSyntax: - Tcl_WrongNumArgs(interp, 2, objv, "?-exact? package ?version?"); - return TCL_ERROR; - } - argv2 = Tcl_GetString(objv[2]); - if ((argv2[0] == '-') && (strcmp(argv2, "-exact") == 0)) { - exact = 1; - } else { - exact = 0; - } - version = NULL; - if (objc == (4 + exact)) { - version = Tcl_GetString(objv[3 + exact]); - if (CheckVersion(interp, version) != TCL_OK) { - return TCL_ERROR; - } - } else if ((objc != 3) || exact) { - goto requireSyntax; - } - if (exact) { - argv3 = Tcl_GetString(objv[3]); - version = Tcl_PkgRequire(interp, argv3, version, exact); - } else { - version = Tcl_PkgRequire(interp, argv2, version, exact); - } - if (version == NULL) { - return TCL_ERROR; - } - Tcl_SetObjResult( interp, Tcl_NewStringObj( version, -1 ) ); - break; -#else - /* Always return current value. */ - Tcl_SetObjResult(interp, Tcl_NewStringObj (pkgPreferOptions [iPtr->packagePrefer], -1)); - break; - } - case PKG_VCOMPARE: { - if (objc != 4) { - Tcl_WrongNumArgs(interp, 2, objv, "version1 version2"); + argv3 = Tcl_GetString(objv[3]); + argv2 = Tcl_GetString(objv[2]); +#ifndef TCL_TIP268 + if ((CheckVersion(interp, argv2) != TCL_OK) + || (CheckVersion(interp, argv3) != TCL_OK)) { return TCL_ERROR; -#endif } -#ifndef TCL_TIP268 - case PKG_UNKNOWN: { - int length; - if (objc == 2) { - if (iPtr->packageUnknown != NULL) { - Tcl_SetResult(interp, iPtr->packageUnknown, TCL_VOLATILE); - } - } else if (objc == 3) { - if (iPtr->packageUnknown != NULL) { - ckfree(iPtr->packageUnknown); - } - argv2 = Tcl_GetStringFromObj(objv[2], &length); - if (argv2[0] == 0) { - iPtr->packageUnknown = NULL; - } else { - iPtr->packageUnknown = (char *) ckalloc((unsigned) - (length + 1)); - strcpy(iPtr->packageUnknown, argv2); - } - } else { - Tcl_WrongNumArgs(interp, 2, objv, "?command?"); - return TCL_ERROR; - } - break; + Tcl_SetObjResult(interp, Tcl_NewIntObj( + ComparePkgVersions(argv2, argv3, (int *) NULL))); #else - argv3 = Tcl_GetString(objv[3]); - argv2 = Tcl_GetString(objv[2]); - if ((CheckVersionAndConvert (interp, argv2, &iva, NULL) != TCL_OK) || - (CheckVersionAndConvert (interp, argv3, &ivb, NULL) != TCL_OK)) { - if (iva != NULL) { Tcl_Free (iva); } + if ((CheckVersionAndConvert (interp, argv2, &iva, NULL) != TCL_OK) + || (CheckVersionAndConvert (interp, argv3, &ivb, NULL) + != TCL_OK)) { + if (iva != NULL) { + ckfree(iva); + } /* ivb cannot be set in this branch */ return TCL_ERROR; -#endif } -#ifndef TCL_TIP268 - case PKG_VCOMPARE: { - if (objc != 4) { - Tcl_WrongNumArgs(interp, 2, objv, "version1 version2"); - return TCL_ERROR; - } - argv3 = Tcl_GetString(objv[3]); - argv2 = Tcl_GetString(objv[2]); - if ((CheckVersion(interp, argv2) != TCL_OK) - || (CheckVersion(interp, argv3) != TCL_OK)) { - return TCL_ERROR; - } - Tcl_SetIntObj(Tcl_GetObjResult(interp), - ComparePkgVersions(argv2, argv3, (int *) NULL)); - break; -#else /* Comparison is done on the internal representation */ - Tcl_SetObjResult(interp,Tcl_NewIntObj(CompareVersions(iva, ivb, NULL))); - Tcl_Free (iva); - Tcl_Free (ivb); + Tcl_SetObjResult(interp, + Tcl_NewIntObj(CompareVersions(iva, ivb, NULL))); + ckfree(iva); + ckfree(ivb); +#endif break; } case PKG_VERSIONS: { if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "package"); return TCL_ERROR; -#endif } -#ifndef TCL_TIP268 - case PKG_VERSIONS: { - if (objc != 3) { - Tcl_WrongNumArgs(interp, 2, objv, "package"); - return TCL_ERROR; -#else argv2 = Tcl_GetString(objv[2]); hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); if (hPtr != NULL) { @@ -1559,72 +1326,50 @@ Tcl_PackageObjCmd(dummy, interp, objc, objv) for (availPtr = pkgPtr->availPtr; availPtr != NULL; availPtr = availPtr->nextPtr) { Tcl_AppendElement(interp, availPtr->version); -#endif } -#ifndef TCL_TIP268 - argv2 = Tcl_GetString(objv[2]); - hPtr = Tcl_FindHashEntry(&iPtr->packageTable, argv2); - if (hPtr != NULL) { - pkgPtr = (Package *) Tcl_GetHashValue(hPtr); - for (availPtr = pkgPtr->availPtr; availPtr != NULL; - availPtr = availPtr->nextPtr) { - Tcl_AppendElement(interp, availPtr->version); - } - } - break; -#endif } -#ifndef TCL_TIP268 - case PKG_VSATISFIES: { - if (objc != 4) { - Tcl_WrongNumArgs(interp, 2, objv, "version1 version2"); - return TCL_ERROR; - } - argv3 = Tcl_GetString(objv[3]); - argv2 = Tcl_GetString(objv[2]); - if ((CheckVersion(interp, argv2) != TCL_OK) - || (CheckVersion(interp, argv3) != TCL_OK)) { - return TCL_ERROR; - } - ComparePkgVersions(argv2, argv3, &satisfies); - Tcl_SetIntObj(Tcl_GetObjResult(interp), satisfies); - break; -#else break; } case PKG_VSATISFIES: { +#ifdef TCL_TIP268 char* argv2i = NULL; if (objc < 4) { - Tcl_WrongNumArgs(interp, 2, objv, "version requirement requirement..."); + Tcl_WrongNumArgs(interp, 2, objv, + "version requirement requirement..."); return TCL_ERROR; -#endif } -#ifndef TCL_TIP268 - default: { - panic("Tcl_PackageObjCmd: bad option index to pkgOptions"); -#else argv2 = Tcl_GetString(objv[2]); if ((CheckVersionAndConvert(interp, argv2, &argv2i, NULL) != TCL_OK)) { return TCL_ERROR; - } else if (CheckAllRequirements (interp, objc-3, objv+3) != TCL_OK) { - Tcl_Free (argv2i); + } else if (CheckAllRequirements(interp, objc-3, objv+3) != TCL_OK) { + ckfree(argv2i); return TCL_ERROR; -#endif } -#ifdef TCL_TIP268 - satisfies = AllRequirementsSatisfied (argv2i, objc-3, objv+3); - Tcl_Free (argv2i); + satisfies = SomeRequirementSatisfied(argv2i, objc-3, objv+3); + ckfree (argv2i); +#else + if (objc != 4) { + Tcl_WrongNumArgs(interp, 2, objv, "version1 version2"); + return TCL_ERROR; + } + argv3 = Tcl_GetString(objv[3]); + argv2 = Tcl_GetString(objv[2]); + if ((CheckVersion(interp, argv2) != TCL_OK) + || (CheckVersion(interp, argv3) != TCL_OK)) { + return TCL_ERROR; + } + ComparePkgVersions(argv2, argv3, &satisfies); +#endif - Tcl_SetIntObj(Tcl_GetObjResult(interp), satisfies); + Tcl_SetObjResult(interp, Tcl_NewIntObj(satisfies)); break; } default: { panic("Tcl_PackageObjCmd: bad option index to pkgOptions"); } -#endif } return TCL_OK; } @@ -1738,32 +1483,54 @@ TclFreePackageInfo(iPtr) *---------------------------------------------------------------------- */ -static int #ifndef TCL_TIP268 +static int CheckVersion(interp, string) Tcl_Interp *interp; /* Used for error reporting. */ CONST char *string; /* Supposedly a version number, which is * groups of decimal digits separated * by dots. */ +{ + CONST char *p = string; + char prevChar; + if (!isdigit(UCHAR(*p))) { /* INTL: digit */ + goto error; + } + for (prevChar = *p, p++; *p != 0; p++) { + if (!isdigit(UCHAR(*p)) && + ((*p != '.') || (prevChar == '.'))) { /* INTL: digit */ + goto error; + } + prevChar = *p; + } + if (prevChar != '.') { + return TCL_OK; + } + + error: + Tcl_AppendResult(interp, "expected version number but got \"", + string, "\"", (char *) NULL); + return TCL_ERROR; +} #else +static int CheckVersionAndConvert(interp, string, internal, stable) Tcl_Interp *interp; /* Used for error reporting. */ CONST char *string; /* Supposedly a version number, which is * groups of decimal digits separated by * dots. */ char** internal; /* Internal normalized representation */ - int* stable; /* Flag: Version is (un)stable. */ -#endif + int* stable; /* Flag: Version is (un)stable. */ { CONST char *p = string; char prevChar; -#ifdef TCL_TIP268 int hasunstable = 0; - /* 4* assuming that each char is a separator (a,b become ' -x '). + /* + * 4* assuming that each char is a separator (a,b become ' -x '). * 4+ to have spce for an additional -2 at the end */ - char* ibuf = ckalloc (4+4*strlen(string)); - char* ip = ibuf; + char* ibuf = ckalloc(4+4*strlen(string)); + char* ip = ibuf; /* Basic rules * (1) First character has to be a digit. @@ -1778,68 +1545,68 @@ CheckVersionAndConvert(interp, string, internal, stable) * (5) Neither 'a', nor 'b' may occur before or after a '.' */ -#endif if (!isdigit(UCHAR(*p))) { /* INTL: digit */ goto error; } -#ifdef TCL_TIP268 *ip++ = *p; -#endif for (prevChar = *p, p++; *p != 0; p++) { -#ifndef TCL_TIP268 - if (!isdigit(UCHAR(*p)) && - ((*p != '.') || (prevChar == '.'))) { /* INTL: digit */ -#else - if ( - (!isdigit(UCHAR(*p))) && - (((*p != '.') && (*p != 'a') && (*p != 'b')) || - ((hasunstable && ((*p == 'a') || (*p == 'b'))) || - (((prevChar == 'a') || (prevChar == 'b') || (prevChar == '.')) && (*p == '.')) || - (((*p == 'a') || (*p == 'b') || (*p == '.')) && (prevChar == '.')))) - ) { + if ((!isdigit(UCHAR(*p))) && (((*p != '.') && (*p != 'a') + && (*p != 'b')) || ((hasunstable && ((*p == 'a') + || (*p == 'b'))) || (((prevChar == 'a') || (prevChar == 'b') + || (prevChar == '.')) && (*p == '.')) || (((*p == 'a') + || (*p == 'b') || (*p == '.')) && (prevChar == '.'))))) { /* INTL: digit */ -#endif goto error; } -#ifdef TCL_TIP268 - if ((*p == 'a') || (*p == 'b')) { hasunstable = 1 ; } + if ((*p == 'a') || (*p == 'b')) { + hasunstable = 1; + } - /* Translation to the internal rep. Regular version chars are copied + /* + * Translation to the internal rep. Regular version chars are copied * as is. The separators are translated to numerics. The new separator - * for all parts is space. */ + * for all parts is space. + */ - if (*p == '.') { *ip++ = ' '; *ip++ = '0'; *ip++ = ' '; } - else if (*p == 'a') { *ip++ = ' '; *ip++ = '-'; *ip++ = '2'; *ip++ = ' '; } - else if (*p == 'b') { *ip++ = ' '; *ip++ = '-'; *ip++ = '1'; *ip++ = ' '; } - else { *ip++ = *p; } -#endif + if (*p == '.') { + *ip++ = ' '; + *ip++ = '0'; + *ip++ = ' '; + } else if (*p == 'a') { + *ip++ = ' '; + *ip++ = '-'; + *ip++ = '2'; + *ip++ = ' '; + } else if (*p == 'b') { + *ip++ = ' '; + *ip++ = '-'; + *ip++ = '1'; + *ip++ = ' '; + } else { + *ip++ = *p; + } prevChar = *p; } -#ifndef TCL_TIP268 - if (prevChar != '.') { -#else if ((prevChar != '.') && (prevChar != 'a') && (prevChar != 'b')) { *ip = '\0'; if (internal != NULL) { *internal = ibuf; } else { - Tcl_Free (ibuf); + ckfree(ibuf); } if (stable != NULL) { *stable = !hasunstable; } -#endif return TCL_OK; } error: -#ifdef TCL_TIP268 - ckfree (ibuf); -#endif + ckfree(ibuf); Tcl_AppendResult(interp, "expected version number but got \"", string, "\"", (char *) NULL); return TCL_ERROR; } +#endif /* *---------------------------------------------------------------------- @@ -1861,8 +1628,8 @@ CheckVersionAndConvert(interp, string, internal, stable) *---------------------------------------------------------------------- */ -static int #ifndef TCL_TIP268 +static int ComparePkgVersions(v1, v2, satPtr) CONST char *v1; CONST char *v2; /* Versions strings, of form 2.1.3 (any @@ -1872,24 +1639,74 @@ ComparePkgVersions(v1, v2, satPtr) * v1 "satisfies" v2: v1 is greater than * or equal to v2 and both version numbers * have the same major number. */ +{ + int thisIsMajor, n1, n2; + + /* + * Each iteration of the following loop processes one number from each + * string, terminated by a " " (space). If those numbers don't match then + * the comparison is over; otherwise, we loop back for the next number. + */ + + thisIsMajor = 1; + while (1) { + /* Parse one decimal number from the front of each string. */ + + n1 = n2 = 0; + while ((*v1 != 0) && (*v1 != '.')) { + n1 = 10*n1 + (*v1 - '0'); + v1++; + } + while ((*v2 != 0) && (*v2 != '.')) { + n2 = 10*n2 + (*v2 - '0'); + v2++; + } + + /* + * Compare and go on to the next version number if the current numbers + * match. + */ + + if (n1 != n2) { + break; + } + if (*v1 != 0) { + v1++; + } else if (*v2 == 0) { + break; + } + if (*v2 != 0) { + v2++; + } + thisIsMajor = 0; + } + if (satPtr != NULL) { + *satPtr = (n1 == n2) || ((n1 > n2) && !thisIsMajor); + } + if (n1 > n2) { + return 1; + } else if (n1 == n2) { + return 0; + } else { + return -1; + } +} #else +static int CompareVersions(v1, v2, isMajorPtr) CONST char *v1; /* Versions strings, of form 2.1.3 (any number */ CONST char *v2; /* of version numbers). */ int *isMajorPtr; /* If non-null, the word pointed to is filled * in with a 0/1 value. 1 means that the difference * occured in the first element. */ -#endif { int thisIsMajor, n1, n2; -#ifdef TCL_TIP268 int res, flip; -#endif /* * Each iteration of the following loop processes one number from each - * string, terminated by a " " (space). If those numbers don't match then the - * comparison is over; otherwise, we loop back for the next number. + * string, terminated by a " " (space). If those numbers don't match then + * the comparison is over; otherwise, we loop back for the next number. * * TIP 268. * This is identical the function 'ComparePkgVersion', but using the new @@ -1904,35 +1721,23 @@ CompareVersions(v1, v2, isMajorPtr) thisIsMajor = 1; while (1) { - /* - * Parse one decimal number from the front of each string. - */ + /* Parse one decimal number from the front of each string. */ n1 = n2 = 0; -#ifndef TCL_TIP268 - while ((*v1 != 0) && (*v1 != '.')) { -#else flip = 0; while ((*v1 != 0) && (*v1 != ' ')) { if (*v1 == '-') {flip = 1 ; v1++ ; continue;} -#endif n1 = 10*n1 + (*v1 - '0'); v1++; } -#ifndef TCL_TIP268 - while ((*v2 != 0) && (*v2 != '.')) { -#else if (flip) n1 = -n1; flip = 0; while ((*v2 != 0) && (*v2 != ' ')) { if (*v2 == '-') {flip = 1; v2++ ; continue;} -#endif n2 = 10*n2 + (*v2 - '0'); v2++; } -#ifdef TCL_TIP268 if (flip) n2 = -n2; -#endif /* * Compare and go on to the next version number if the current numbers @@ -1952,27 +1757,11 @@ CompareVersions(v1, v2, isMajorPtr) } thisIsMajor = 0; } -#ifndef TCL_TIP268 - if (satPtr != NULL) { - *satPtr = (n1 == n2) || ((n1 > n2) && !thisIsMajor); - } -#endif if (n1 > n2) { -#ifndef TCL_TIP268 - return 1; -#else res = 1; -#endif } else if (n1 == n2) { -#ifndef TCL_TIP268 - return 0; -#else res = 0; -#endif } else { -#ifndef TCL_TIP268 - return -1; -#else res = -1; } @@ -2055,35 +1844,31 @@ CheckRequirement(interp, string) } if (strchr (dash+1, '-') != NULL) { /* More dashes found after the first. This is wrong. */ - Tcl_AppendResult(interp, "expected versionMin-versionMax but got \"", string, - "\"", NULL); + Tcl_AppendResult(interp, "expected versionMin-versionMax but got \"", + string, "\"", NULL); return TCL_ERROR; -#endif } -#ifdef TCL_TIP268 /* Exactly one dash is present. Copy the string, split at the location of * dash and check that both parts are versions. Note that the max part can * be empty. */ - buf = strdup (string); - dash = buf + (dash - string); + DupString(buf, string); + dash = buf + (dash - string); *dash = '\0'; /* buf now <=> min part */ dash ++; /* dash now <=> max part */ - if ((CheckVersionAndConvert(interp, buf, NULL, NULL) != TCL_OK) || - ((*dash != '\0') && - (CheckVersionAndConvert(interp, dash, NULL, NULL) != TCL_OK))) { - free (buf); + if ((CheckVersionAndConvert(interp, buf, NULL, NULL) != TCL_OK) + || ((*dash != '\0') + && (CheckVersionAndConvert(interp, dash, NULL, NULL) != TCL_OK))) { + ckfree(buf); return TCL_ERROR; } - free (buf); + ckfree(buf); return TCL_OK; -#endif } -#ifdef TCL_TIP268 /* *---------------------------------------------------------------------- @@ -2104,13 +1889,21 @@ CheckRequirement(interp, string) static void AddRequirementsToResult(interp, reqc, reqv) Tcl_Interp* interp; - int reqc; /* Requirements constraining the desired version. */ - Tcl_Obj *CONST reqv[]; /* 0 means to use the latest version available. */ + int reqc; /* Requirements constraining the desired version. */ + Tcl_Obj *CONST reqv[]; /* 0 means use the latest version available. */ { if (reqc > 0) { int i; for (i = 0; i < reqc; i++) { - Tcl_AppendResult(interp, " ", TclGetString(reqv[i]), NULL); + int length; + char *v = Tcl_GetStringFromObj(reqv[i], &length); + + if ((length & 0x1) && (v[length/2] == '-') + && (strncmp(v, v+((length+1)/2), length/2) == 0)) { + Tcl_AppendResult(interp, " ", v+((length+1)/2), NULL); + } else { + Tcl_AppendResult(interp, " ", v, NULL); + } } } } @@ -2134,8 +1927,8 @@ AddRequirementsToResult(interp, reqc, reqv) static void AddRequirementsToDString(dstring, reqc, reqv) Tcl_DString* dstring; - int reqc; /* Requirements constraining the desired version. */ - Tcl_Obj *CONST reqv[]; /* 0 means to use the latest version available. */ + int reqc; /* Requirements constraining the desired version. */ + Tcl_Obj *CONST reqv[]; /* 0 means use the latest version available. */ { if (reqc > 0) { int i; @@ -2151,7 +1944,7 @@ AddRequirementsToDString(dstring, reqc, reqv) /* *---------------------------------------------------------------------- * - * AllRequirementSatisfied -- + * SomeRequirementSatisfied -- * * This function checks to see whether a version satisfies at * least one of a set of requirements. @@ -2169,18 +1962,21 @@ AddRequirementsToDString(dstring, reqc, reqv) */ static int -AllRequirementsSatisfied(availVersionI, reqc, reqv) - CONST char* availVersionI; /* Candidate version to check against the requirements */ - int reqc; /* Requirements constraining the desired version. */ - Tcl_Obj *CONST reqv[]; /* 0 means to use the latest version available. */ +SomeRequirementSatisfied(availVersionI, reqc, reqv) + char *availVersionI; /* Candidate version to check against the + * requirements. */ + int reqc; /* Requirements constraining the desired + * version. */ + Tcl_Obj *CONST reqv[]; /* 0 means use the latest version available. */ { - int i, satisfies; + int i; - for (satisfies = i = 0; i < reqc; i++) { - satisfies = RequirementSatisfied(availVersionI, Tcl_GetString(reqv[i])); - if (satisfies) break; + for (i = 0; i < reqc; i++) { + if (RequirementSatisfied(availVersionI, Tcl_GetString(reqv[i]))) { + return 1; + } } - return satisfies; + return 0; } /* @@ -2204,7 +2000,7 @@ AllRequirementsSatisfied(availVersionI, reqc, reqv) static int RequirementSatisfied(havei, req) - CONST char *havei; /* Version string, of candidate package we have */ + char *havei; /* Version string, of candidate package we have */ CONST char *req; /* Requirement string the candidate has to satisfy */ { /* The have candidate is already in internal rep. */ @@ -2226,9 +2022,9 @@ RequirementSatisfied(havei, req) CheckVersionAndConvert (NULL, req, &reqi, NULL); strcat (reqi, " -2"); - res = CompareVersions(havei, reqi, &thisIsMajor); + res = CompareVersions(havei, reqi, &thisIsMajor); satisfied = (res == 0) || ((res == 1) && !thisIsMajor); - Tcl_Free (reqi); + ckfree(reqi); return satisfied; } @@ -2237,7 +2033,7 @@ RequirementSatisfied(havei, req) * versions. Note that the max part can be empty. */ - buf = strdup (req); + DupString(buf, req); dash = buf + (dash - req); *dash = '\0'; /* buf now <=> min part */ dash ++; /* dash now <=> max part */ @@ -2252,8 +2048,8 @@ RequirementSatisfied(havei, req) CheckVersionAndConvert (NULL, buf, &min, NULL); strcat (min, " -2"); satisfied = (CompareVersions(havei, min, NULL) >= 0); - Tcl_Free (min); - free (buf); + ckfree(min); + ckfree(buf); return satisfied; } @@ -2274,127 +2070,13 @@ RequirementSatisfied(havei, req) (CompareVersions(havei, max, NULL) < 0)); } - Tcl_Free (min); - Tcl_Free (max); - free (buf); + ckfree(min); + ckfree(max); + ckfree(buf); return satisfied; } /* - *---------------------------------------------------------------------- - * - * ExactRequirement -- - * - * This function is the core for the translation of -exact requests. - * It translates the request of the version into a range of versions. - * The translation was chosen for backwards compatibility. - * - * Results: - * A Tcl_Obj containing the version range as string. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - -static Tcl_Obj* -ExactRequirement(version) - CONST char* version; -{ - /* A -exact request for a version X.y is translated into the range - * X.y-X.(y+1). For example -exact 8.4 means the range "8.4-8.5". - * - * This translation was chosen to prevent packages which currently use a - * 'package require -exact tclversion' from being affected by the core now - * registering itself as 8.4.x (patchlevel) instead of 8.4 - * (version). Examples are tbcload, compiler, and ITcl. - * - * Translating -exact 8.4 to the range "8.4-8.4" instead would require us - * and everyone else to rebuild these packages to require -exact 8.4.14, - * or whatever the exact current patchlevel is. A backward compatibility - * issue with effects similar to the bugfix made in 8.5 now requiring - * ifneeded and provided versions to match. Instead we have chosen to - * interpret exactness to not be exactly equal, but to be exact only - * within the specified level, and allowing variation in the deeper - * level. More examples: - * - * -exact 8 => "8-9" - * -exact 8.4 => "8.4-8.5" - * -exact 8.4.14 => "8.4.14-8.4.15" - * -exact 8.0a2 => "8.0a2-8.0a3" - */ - - char* iv; - int lc, i; - CONST char** lv; - char buf [30]; - Tcl_Obj* o = Tcl_NewStringObj (version,-1); - Tcl_AppendStringsToObj (o, "-", NULL); - - /* Assuming valid syntax here */ - CheckVersionAndConvert (NULL, version, &iv, NULL); - - /* Split the list into components */ - Tcl_SplitList (NULL, iv, &lc, &lv); - - /* Iterate over the components and make them parts of the result. Except - * for the last, which is handled separately, to allow the - * incrementation. - */ - - for (i=0; i < (lc-1); i++) { - /* Regular component */ - Tcl_AppendStringsToObj (o, lv[i], NULL); - /* Separator component */ - i ++; - if (0 == strcmp ("-1", lv[i])) { - Tcl_AppendStringsToObj (o, "b", NULL); - } else if (0 == strcmp ("-2", lv[i])) { - Tcl_AppendStringsToObj (o, "a", NULL); - } else { - Tcl_AppendStringsToObj (o, ".", NULL); - } - } - /* Regular component, last */ - sprintf (buf, "%d", atoi (lv [lc-1]) + 1); - Tcl_AppendStringsToObj (o, buf, NULL); - - ckfree ((char*) lv); - return o; -} - -/* - *---------------------------------------------------------------------- - * - * VersionCleanupProc -- - * - * This function is called to delete the last remember package version - * string for an interpreter when the interpreter is deleted. It gets - * invoked via the Tcl AssocData mechanism. - * - * Results: - * None. - * - * Side effects: - * Storage for the version object for interp get deleted. - * - *---------------------------------------------------------------------- - */ - -static void -VersionCleanupProc ( - ClientData clientData, /* Pointer to remembered version string object - * for interp. */ - Tcl_Interp *interp) /* Interpreter that is being deleted. */ -{ - Tcl_Obj* ov = (Tcl_Obj*) clientData; - if (ov != NULL) { - Tcl_DecrRefCount (ov); - } -} - -/* * Local Variables: * mode: c * c-basic-offset: 4 diff --git a/tests/pkg.test b/tests/pkg.test index 27902a9..c363e24 100644 --- a/tests/pkg.test +++ b/tests/pkg.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: pkg.test,v 1.9.12.10 2007/02/22 20:25:29 andreas_kupries Exp $ +# RCS: @(#) $Id: pkg.test,v 1.9.12.11 2007/09/19 09:23:59 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -154,7 +154,7 @@ test pkg-2.8-268 {Tcl_PkgRequire procedure, can't find suitable version} tip268 } list [catch {package require -exact t 1.3} msg] $msg -} {1 {can't find package t 1.3-1.4}} +} {1 {can't find package t 1.3}} test pkg-2.9 {Tcl_PkgRequire procedure, can't find suitable version} { package forget t package unknown {} @@ -217,7 +217,7 @@ test pkg-2.13-268 {Tcl_PkgRequire procedure, "package unknown" support} tip268 { package require -exact t 1.5 package unknown {} set x -} {t 1.5-1.6} +} {t 1.5-1.5} test pkg-2.14 {Tcl_PkgRequire procedure, "package unknown" support} { proc pkgUnknown args { @@ -321,7 +321,7 @@ test pkg-2.17-268 {Tcl_PkgRequire procedure, "package unknown" doesn't load pack set result [list [catch {package require -exact t 1.5} msg] $msg $x] package unknown {} set result -} {1 {can't find package t 1.5-1.6} {t 1.5-1.6}} +} {1 {can't find package t 1.5} {t 1.5-1.5}} test pkg-2.18 {Tcl_PkgRequire procedure, version checks} { package forget t package provide t 2.3 @@ -361,7 +361,7 @@ test pkg-2.24-268 {Tcl_PkgRequire procedure, version checks} tip268 { package forget t package provide t 2.3 list [catch {package require -exact t 2.2} msg] $msg -} {1 {version conflict for package "t": have 2.3, need 2.2-2.3}} +} {1 {version conflict for package "t": have 2.3, need 2.2}} test pkg-2.25 {Tcl_PkgRequire procedure, error in ifneeded script} -body { package forget t package ifneeded t 2.1 {package provide t 2.1; error "ifneeded test" EI} @@ -987,16 +987,16 @@ test pkg-7.10 {Tcl_PkgPresent procedure, unknown package} { package forget t list [catch {package present -exact t 2.4} msg] $msg } {1 {package t 2.4 is not present}} -test pkg-7.11 {Tcl_PackageCmd procedure, "present" option} { +test pkg-7.11 {Tcl_PackageCmd procedure, "present" option} !tip268 { list [catch {package present} msg] $msg } {1 {wrong # args: should be "package present ?-exact? package ?version?"}} -test pkg-7.12 {Tcl_PackageCmd procedure, "present" option} { +test pkg-7.12 {Tcl_PackageCmd procedure, "present" option} !tip268 { list [catch {package present a b c} msg] $msg } {1 {wrong # args: should be "package present ?-exact? package ?version?"}} -test pkg-7.13 {Tcl_PackageCmd procedure, "present" option} { +test pkg-7.13 {Tcl_PackageCmd procedure, "present" option} !tip268 { list [catch {package present -exact a b c} msg] $msg } {1 {wrong # args: should be "package present ?-exact? package ?version?"}} -test pkg-7.14 {Tcl_PackageCmd procedure, "present" option} { +test pkg-7.14 {Tcl_PackageCmd procedure, "present" option} !tip268 { list [catch {package present -bs a b} msg] $msg } {1 {wrong # args: should be "package present ?-exact? package ?version?"}} test pkg-7.15 {Tcl_PackageCmd procedure, "present" option} { @@ -1005,10 +1005,10 @@ test pkg-7.15 {Tcl_PackageCmd procedure, "present" option} { test pkg-7.16 {Tcl_PackageCmd procedure, "present" option} { list [catch {package present -exact x a.b} msg] $msg } {1 {expected version number but got "a.b"}} -test pkg-7.17 {Tcl_PackageCmd procedure, "present" option} { +test pkg-7.17 {Tcl_PackageCmd procedure, "present" option} !tip268 { list [catch {package present -exact x} msg] $msg } {1 {wrong # args: should be "package present ?-exact? package ?version?"}} -test pkg-7.18 {Tcl_PackageCmd procedure, "present" option} { +test pkg-7.18 {Tcl_PackageCmd procedure, "present" option} !tip268 { list [catch {package present -exact} msg] $msg } {1 {wrong # args: should be "package present ?-exact? package ?version?"}} -- cgit v0.12 From 9b670300ab4ce9f5e0aae60916d46965fed800b6 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 19 Sep 2007 09:24:54 +0000 Subject: typo --- ChangeLog | 1 - 1 file changed, 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 645ef72..0f68fc1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,7 +7,6 @@ 2007-09-18 Don Porter - * changes: updates for 8.4.16 release. 2007-09-15 Daniel Steffen -- cgit v0.12 From 330b4025da17961f1ef69149584fb7c15d284f76 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 19 Sep 2007 16:08:37 +0000 Subject: * unix/Makefile.in: Update `make dist` so that tclDTrace.d is included in the source code distribution. --- ChangeLog | 3 +++ unix/Makefile.in | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0f68fc1..e1faa6a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ *** 8.4.16 TAGGED FOR RELEASE *** + * unix/Makefile.in: Update `make dist` so that tclDTrace.d is + included in the source code distribution. + * generic/tclPkg.c: Backport fix for [1573844] to the * tests/pkg.test: TCL_TIP268 sections. diff --git a/unix/Makefile.in b/unix/Makefile.in index 43ceb62..9b17624 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.23 2007/09/13 15:28:17 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.24 2007/09/19 16:08:39 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1289,7 +1289,7 @@ dist: chmod 775 $(DISTDIR)/unix/ldAix chmod +x $(DISTDIR)/unix/install-sh mkdir $(DISTDIR)/generic - cp -p $(GENERIC_DIR)/*.c $(GENERIC_DIR)/*.h $(DISTDIR)/generic + cp -p $(GENERIC_DIR)/*.[cdh] $(DISTDIR)/generic cp -p $(GENERIC_DIR)/*.decls $(DISTDIR)/generic cp -p $(GENERIC_DIR)/README $(DISTDIR)/generic cp -p $(GENERIC_DIR)/tclGetDate.y $(DISTDIR)/generic -- cgit v0.12 From a5af327b809440e5772560d8c7fc7bd53193c371 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 20 Sep 2007 16:24:44 +0000 Subject: * doc/load.n: Backport corrected example. --- ChangeLog | 6 +++++- doc/load.n | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index e1faa6a..e0b4997 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,11 @@ -2007-09-19 Don Porter +2007-09-20 Don Porter *** 8.4.16 TAGGED FOR RELEASE *** + * doc/load.n: Backport corrected example. + +2007-09-19 Don Porter + * unix/Makefile.in: Update `make dist` so that tclDTrace.d is included in the source code distribution. diff --git a/doc/load.n b/doc/load.n index ea5c7f3..86149b2 100644 --- a/doc/load.n +++ b/doc/load.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: load.n,v 1.7.2.1 2004/10/27 12:52:40 dkf Exp $ +'\" RCS: @(#) $Id: load.n,v 1.7.2.2 2007/09/20 16:24:46 dgp Exp $ '\" .so man.macros .TH load n 7.5 Tcl "Tcl Built-In Commands" @@ -132,7 +132,7 @@ The following is a minimal extension: #include #include static int fooCmd(ClientData clientData, - Tcl_Interp *interp, int objc, char * CONST objv[]) { + Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) { printf("called with %d arguments\\n", objc); return TCL_OK; } @@ -154,10 +154,10 @@ it can then be loaded into Tcl with the following: # Load the extension switch $tcl_platform(platform) { windows { - \fBload\fR ./foo.dll + \fBload\fR [file join [pwd] foo.dll] } unix { - \fBload\fR ./libfoo[info sharedlibextension] + \fBload\fR [file join [pwd] libfoo[info sharedlibextension]] } } -- cgit v0.12 From 1eea940783228a5707b3719b9c142db70d8a2fa3 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 20 Sep 2007 17:55:46 +0000 Subject: document --enable-dtrace configure option --- unix/README | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/unix/README b/unix/README index b090a63..42fefcb 100644 --- a/unix/README +++ b/unix/README @@ -1,7 +1,7 @@ Tcl UNIX README --------------- -RCS: @(#) $Id: README,v 1.24.2.2 2005/12/03 00:35:44 das Exp $ +RCS: @(#) $Id: README,v 1.24.2.3 2007/09/20 17:55:46 das Exp $ This is the directory where you configure, compile, test, and install UNIX versions of Tcl. This directory also contains source files for Tcl @@ -83,6 +83,10 @@ How To Compile And Install Tcl: should be reachable under several names. --enable-man-compression=PROG Compress the manpages using PROG. + --enable-dtrace Enable tcl DTrace provider (if DTrace is + available on the platform), c.f. tclDTrace.d + for descriptions of the probes made available, + see http://wiki.tcl.tk/DTrace for more details. Mac OS X only: --enable-framework package Tcl as a framework. --disable-corefoundation disable use of CoreFoundation API and revert to -- cgit v0.12 From 0d734ceb2fa06b20c91f1f2451ba58c75b17a9cb Mon Sep 17 00:00:00 2001 From: das Date: Sat, 22 Sep 2007 15:46:45 +0000 Subject: s/amount/amt/ [Bug 1800153] --- generic/tclAlloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclAlloc.c b/generic/tclAlloc.c index f3dfb35..12c0201 100644 --- a/generic/tclAlloc.c +++ b/generic/tclAlloc.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAlloc.c,v 1.16.2.2 2007/06/29 03:17:33 das Exp $ + * RCS: @(#) $Id: tclAlloc.c,v 1.16.2.3 2007/09/22 15:46:45 das Exp $ */ /* @@ -322,7 +322,7 @@ TclpAlloc(nbytes) * Account for space used per block for accounting. */ - amount = MINBLOCK; /* size of first bucket */ + amt = MINBLOCK; /* size of first bucket */ bucket = MINBLOCK >> 4; while (nbytes + OVERHEAD > amt) { -- cgit v0.12 From 69718fd058c2a079624553c560274baf65b9d923 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 2 Oct 2007 17:46:48 +0000 Subject: * README: Bump version number to 8.4.17 * generic/tcl.h: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf-2.13 * win/configure: --- ChangeLog | 13 +++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 39 +++++++++++++++++++++++++++++---------- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 57 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0b4997..d45ce67 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2007-10-02 Don Porter + + * README: Bump version number to 8.4.17 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf-2.13 + * win/configure: + 2007-09-20 Don Porter *** 8.4.16 TAGGED FOR RELEASE *** diff --git a/README b/README index 51f8419..2acd7e2 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.16 source distribution. + This is the Tcl 8.4.17 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.20 2007/06/10 21:12:02 hobbs Exp $ +RCS: @(#) $Id: README,v 1.49.2.21 2007/10/02 17:46:49 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 5d0dbab..bbe6515 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.31 2007/05/30 14:05:18 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.32 2007/10/02 17:46:50 dgp Exp $ */ #ifndef _TCL @@ -59,10 +59,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 16 +#define TCL_RELEASE_SERIAL 17 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.16" +#define TCL_PATCH_LEVEL "8.4.17" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 7cddf44..ecd9e8a 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.16 + Disk Label=tcl8.4.17 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index c8c7d9b..c74dbff 100755 --- a/unix/configure +++ b/unix/configure @@ -556,7 +556,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".16" +TCL_PATCH_LEVEL=".17" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ @@ -9442,15 +9442,34 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed # Without the "./", some shells look in PATH for config.status. diff --git a/unix/configure.in b/unix/configure.in index e3f54c5..71bba1b 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.39 2007/09/13 15:28:20 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.40 2007/10/02 17:46:53 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".16" +TCL_PATCH_LEVEL=".17" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 9eba641..eea23c7 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.16 2007/05/30 14:05:21 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.17 2007/10/02 17:46:53 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.16 +%define version 8.4.17 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index c1267f7..b6edf67 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.16 2007/05/30 14:05:21 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.17 2007/10/02 17:46:53 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.16 for +This directory contains the binary distribution of Tcl/Tk 8.4.17 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 4216bc6..421f6e6 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".16" +TCL_PATCH_LEVEL=".17" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 5191f93..ed99d21 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.20 2007/05/30 14:05:22 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.21 2007/10/02 17:46:53 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".16" +TCL_PATCH_LEVEL=".17" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 663575eb38592a78c77567a110ff260a7ebb9258 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 2 Oct 2007 21:53:44 +0000 Subject: * generic/tcl.h (Tcl_DecrRefCount): Update change from 2006-05-29 to make macro more warning-robust in unbraced if code. --- ChangeLog | 5 +++++ generic/tcl.h | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index d45ce67..b298155 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-10-02 Jeff Hobbs + + * generic/tcl.h (Tcl_DecrRefCount): Update change from 2006-05-29 + to make macro more warning-robust in unbraced if code. + 2007-10-02 Don Porter * README: Bump version number to 8.4.17 diff --git a/generic/tcl.h b/generic/tcl.h index bbe6515..7c68b81 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.32 2007/10/02 17:46:50 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.33 2007/10/02 21:53:45 hobbs Exp $ */ #ifndef _TCL @@ -827,10 +827,11 @@ int Tcl_IsShared _ANSI_ARGS_((Tcl_Obj *objPtr)); # define Tcl_IncrRefCount(objPtr) \ ++(objPtr)->refCount /* - * Use empty if ; else to handle use in unbraced outer if/else conditions + * Use do/while0 idiom for optimum correctness without compiler warnings + * http://c2.com/cgi/wiki?TrivialDoWhileLoop */ # define Tcl_DecrRefCount(objPtr) \ - if (--(objPtr)->refCount > 0) ; else TclFreeObj(objPtr) + do { if (--(objPtr)->refCount <= 0) TclFreeObj(objPtr); } while(0) # define Tcl_IsShared(objPtr) \ ((objPtr)->refCount > 1) #endif -- cgit v0.12 From bc771adc8abb68ed5ba880ee894607dc3209ec95 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Wed, 3 Oct 2007 12:53:11 +0000 Subject: * generic/tclObj.c (Tcl_FindCommandFromObj): fix finding a deleted command; cannot trigger this from Tcl itself, but crash reported on xotcl. This check is new to 8.4 but exists in 8.5, so this is a backport or something. Thanks Gustaf Neumann. --- ChangeLog | 7 +++++++ generic/tclObj.c | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b298155..09aab5e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-10-03 Miguel Sofer + + * generic/tclObj.c (Tcl_FindCommandFromObj): fix finding a deleted + command; cannot trigger this from Tcl itself, but crash reported + on xotcl. This check is new to 8.4 but exists in 8.5, so this is a + backport or something. Thanks Gustaf Neumann. + 2007-10-02 Jeff Hobbs * generic/tcl.h (Tcl_DecrRefCount): Update change from 2006-05-29 diff --git a/generic/tclObj.c b/generic/tclObj.c index 092dc1a..16454ac 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.15 2007/09/13 15:28:13 das Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.16 2007/10/03 12:53:12 msofer Exp $ */ #include "tclInt.h" @@ -3015,7 +3015,8 @@ Tcl_GetCommandFromObj(interp, objPtr) && (resPtr->refNsId == currNsPtr->nsId) && (resPtr->refNsCmdEpoch == currNsPtr->cmdRefEpoch)) { cmdPtr = resPtr->cmdPtr; - if (cmdPtr->cmdEpoch != resPtr->cmdEpoch) { + if (cmdPtr->cmdEpoch != resPtr->cmdEpoch + || (cmdPtr->flags & CMD_IS_DELETED)) { cmdPtr = NULL; } } -- cgit v0.12 From 004324cca99a52563cd03e1b7f98b924a3db8d5f Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 15 Oct 2007 13:29:18 +0000 Subject: * generic/tclParse.c (Tcl_ParseBraces): fix for possible read after the end of buffer, [Bug 1813528] (Joe Mistachkin). --- ChangeLog | 5 +++++ generic/tclParse.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 09aab5e..5d44f33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-10-15 Miguel Sofer + + * generic/tclParse.c (Tcl_ParseBraces): fix for possible read + after the end of buffer, [Bug 1813528] (Joe Mistachkin). + 2007-10-03 Miguel Sofer * generic/tclObj.c (Tcl_FindCommandFromObj): fix finding a deleted diff --git a/generic/tclParse.c b/generic/tclParse.c index e02f836..e939ef3 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParse.c,v 1.25.2.2 2007/07/19 13:43:42 dgp Exp $ + * RCS: @(#) $Id: tclParse.c,v 1.25.2.3 2007/10/15 13:29:19 msofer Exp $ */ #include "tclInt.h" @@ -1441,7 +1441,7 @@ Tcl_ParseBraces(interp, string, numBytes, parsePtr, append, termPtr) * by a '#' on the same line. */ - for (; src > string; src--) { + while (--src > string) { switch (*src) { case '{': openBrace = 1; -- cgit v0.12 From 36ea3f27001c99cbc7cb3cae6894efaffe7fb512 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 30 Oct 2007 10:27:33 +0000 Subject: Backport of fix for first part of [Bug 1810264] --- ChangeLog | 5 +++++ generic/regc_lex.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5d44f33..117f812 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-10-30 Donal K. Fellows + + * generic/regc_lex.c (lexescape): Ensure that backreference numbers + can't overflow a signed int in a way that breaks things. [Bug 1810264] + 2007-10-15 Miguel Sofer * generic/tclParse.c (Tcl_ParseBraces): fix for possible read diff --git a/generic/regc_lex.c b/generic/regc_lex.c index 1acc3f4..588718d 100644 --- a/generic/regc_lex.c +++ b/generic/regc_lex.c @@ -783,7 +783,7 @@ struct vars *v; if (ISERR()) FAILW(REG_EESCAPE); /* ugly heuristic (first test is "exactly 1 digit?") */ - if (v->now - save == 0 || (int)c <= v->nsubexp) { + if (v->now-save == 0 || ((int)c > 0 && (int)c <= v->nsubexp)) { NOTE(REG_UBACKREF); RETV(BACKREF, (chr)c); } -- cgit v0.12 From f86c19430a6191f9f30cc9309dc9e94c008696e2 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 5 Nov 2007 17:34:10 +0000 Subject: typo fixes --- doc/filename.n | 4 ++-- unix/tcl.m4 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/filename.n b/doc/filename.n index 02b102f..bf70bc4 100644 --- a/doc/filename.n +++ b/doc/filename.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: filename.n,v 1.7.12.1 2004/10/27 12:52:40 dkf Exp $ +'\" RCS: @(#) $Id: filename.n,v 1.7.12.2 2007/11/05 17:34:10 dgp Exp $ '\" .so man.macros .TH filename n 7.5 Tcl "Tcl Built-In Commands" @@ -148,7 +148,7 @@ following examples illustrate various forms of path names: Absolute UNC path to a file called \fBfile\fR in the root directory of the export point \fBshare\fR on the host \fBHost\fR. Note that repeated use of \fBfile dirname\fR on this path will give -\fB//Host/share\fR, and will never give just /fB//Host/fR. +\fB//Host/share\fR, and will never give just \fB//Host/fR. .TP 15 \fBc:foo\fR Volume-relative path to a file \fBfoo\fR in the current directory on drive diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 94b1cc0..51809fd 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -891,7 +891,7 @@ AC_DEFUN([SC_CONFIG_SYSTEM], [ # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - tcl_cv_sys_version=MP-RAS-`awk '{print [$]3}' /etc/.relid` + tcl_cv_sys_version=MP-RAS-`awk '{print $[3]}' /etc/.relid` fi if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` -- cgit v0.12 From 14dffaee29a638e2bb45cb3a9d747315b1fd9f74 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 9 Nov 2007 06:19:22 +0000 Subject: autoconf-2.13 --- unix/configure | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/unix/configure b/unix/configure index c74dbff..99aa513 100755 --- a/unix/configure +++ b/unix/configure @@ -9442,34 +9442,15 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs # Without the "./", some shells look in PATH for config.status. -- cgit v0.12 From a4ad9e9083662f62f8f3df8f9901a114be5cbf24 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 13 Nov 2007 14:39:14 +0000 Subject: The six-argument form of getaddressbyname_r() uses the fifth argument to indicate whether the lookup succeeded or not on at least one platform. [Bug 1618235] --- ChangeLog | 6 ++++++ unix/tclUnixCompat.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 117f812..354f9f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-11-13 Donal K. Fellows + + * unix/tclUnixCompat.c (TclpGetHostByName): The six-argument form of + getaddressbyname_r() uses the fifth argument to indicate whether the + lookup succeeded or not on at least one platform. [Bug 1618235] + 2007-10-30 Donal K. Fellows * generic/regc_lex.c (lexescape): Ensure that backreference numbers diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index 7e419cf..88c87c3 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.10 2006/09/12 22:05:03 andreas_kupries Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.11 2007/11/13 14:39:15 dkf Exp $ * */ @@ -588,7 +588,7 @@ TclpGetHostByName(const char *name) int h_errno; return (gethostbyname_r(name, &tsdPtr->hent, tsdPtr->hbuf, sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? - &tsdPtr->hent : NULL; + &hePtr : NULL; #elif defined(HAVE_GETHOSTBYNAME_R_3) struct hostent_data data; -- cgit v0.12 From cdb09f0ded89acc8b7a6b269f50fc8cd15da9739 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 15 Nov 2007 22:01:03 +0000 Subject: * generic/regc_nfa.c: Fixed infinite loop in the regexp compiler * generic/regcomp.c: [Bug 1810038]. Corrected looping logic in * tests/regexp.test: fixempties() to avoid wasting time walking a list of dead states [Bug 1832612]. Convert optst() from expensive no-op to a cheap no-op. Improve newline usage in debug output. --- ChangeLog | 8 ++++++++ generic/regc_nfa.c | 46 +++++++++++++++++++++++++++++++++++++++++++++- generic/regcomp.c | 18 +++++++++--------- tests/regexp.test | 8 +++++++- 4 files changed, 69 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 354f9f5..fbe8165 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-11-15 Don Porter + + * generic/regc_nfa.c: Fixed infinite loop in the regexp compiler + * generic/regcomp.c: [Bug 1810038]. Corrected looping logic in + * tests/regexp.test: fixempties() to avoid wasting time walking a + list of dead states [Bug 1832612]. Convert optst() from expensive + no-op to a cheap no-op. Improve newline usage in debug output. + 2007-11-13 Donal K. Fellows * unix/tclUnixCompat.c (TclpGetHostByName): The six-argument form of diff --git a/generic/regc_nfa.c b/generic/regc_nfa.c index 9881cd4..dd26e64 100644 --- a/generic/regc_nfa.c +++ b/generic/regc_nfa.c @@ -803,6 +803,26 @@ struct arc *con; return 1; } + /* + * DGP 2007-11-15: Cloning a state with a circular constraint on its + * list of outs can lead to trouble [Bug 1810038], so get rid of them + * first. + */ + + for (a = from->outs; a != NULL; a = nexta) { + nexta = a->outchain; + switch (a->type) { + case '^': + case '$': + case BEHIND: + case AHEAD: + if (from == a->to) { + freearc(nfa, a); + } + break; + } + } + /* first, clone from state if necessary to avoid other outarcs */ if (from->nouts > 1) { s = newstate(nfa); @@ -921,6 +941,29 @@ struct arc *con; return 1; } + /* + * DGP 2007-11-15: Here we duplicate the same protections as appear + * in pull() above to avoid troubles with cloning a state with a + * circular constraint on its list of ins. It is not clear whether + * this is necessary, or is protecting against a "can't happen". + * Any test case that actually leads to a freearc() call here would + * be a welcome addition to the test suite. + */ + + for (a = to->ins; a != NULL; a = nexta) { + nexta = a->inchain; + switch (a->type) { + case '^': + case '$': + case BEHIND: + case AHEAD: + if (a->from == to) { + freearc(nfa, a); + } + break; + } + } + /* first, clone to state if necessary to avoid other inarcs */ if (to->nins > 1) { s = newstate(nfa); @@ -1041,7 +1084,8 @@ FILE *f; /* for debug output; NULL none */ /* find and eliminate empties until there are no more */ do { progress = 0; - for (s = nfa->states; s != NULL && !NISERR(); s = nexts) { + for (s = nfa->states; s != NULL && !NISERR() + && s->no != FREESTATE; s = nexts) { nexts = s->next; for (a = s->outs; a != NULL && !NISERR(); a = nexta) { nexta = a->outchain; diff --git a/generic/regcomp.c b/generic/regcomp.c index 29be00f..31b8a82 100644 --- a/generic/regcomp.c +++ b/generic/regcomp.c @@ -1837,14 +1837,14 @@ optst(v, t) struct vars *v; struct subre *t; { - if (t == NULL) - return; - - /* recurse through children */ - if (t->left != NULL) - optst(v, t->left); - if (t->right != NULL) - optst(v, t->right); + /* + * DGP (2007-11-13): I assume it was the programmer's intent to eventually + * come back and add code to optimize subRE trees, but the routine coded + * just spent effort traversing the tree and doing nothing. We can do + * nothing with less effort. + */ + + return; } /* @@ -2144,8 +2144,8 @@ int nfapresent; /* is the original NFA still around? */ if (!NULLCNFA(t->cnfa)) { fprintf(f, "\n"); dumpcnfa(&t->cnfa, f); - fprintf(f, "\n"); } + fprintf(f, "\n"); if (t->left != NULL) stdump(t->left, f, nfapresent); if (t->right != NULL) diff --git a/tests/regexp.test b/tests/regexp.test index 1403e9d..c4c1c80 100644 --- a/tests/regexp.test +++ b/tests/regexp.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: regexp.test,v 1.22.2.3 2003/10/14 18:22:10 vincentdarley Exp $ +# RCS: @(#) $Id: regexp.test,v 1.22.2.4 2007/11/15 22:01:10 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -628,6 +628,12 @@ test regexp-21.13 {multiple matches handle newlines} { regexp -all -inline -indices -line -- ^ "a\nb\nc" } {{0 -1} {2 1} {4 3}} + +test regexp-22.1 {Bug 1810038} { + regexp ($|^X)* {} +} 1 + + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 1c7799332924b711817436fc8940be2eff501b5c Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Mon, 26 Nov 2007 14:05:08 +0000 Subject: * generic/tclThread.c: Back-port locking changes from Tcl8.5 in Tcl_Mutex/ConditionFinlize. Now we properly master-lock the finalization of sync primitives. --- ChangeLog | 6 ++++++ generic/tclThread.c | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index fbe8165..37dc948 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-11-26 Zoran Vasiljevic + + * generic/tclThread.c: Back-port locking changes from Tcl8.5 + in Tcl_Mutex/ConditionFinlize. Now we properly master-lock + the finalization of sync primitives. + 2007-11-15 Don Porter * generic/regc_nfa.c: Fixed infinite loop in the regexp compiler diff --git a/generic/tclThread.c b/generic/tclThread.c index 033d197..23e82a0 100644 --- a/generic/tclThread.c +++ b/generic/tclThread.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThread.c,v 1.6.2.2 2007/06/30 09:58:43 vasiljevic Exp $ + * RCS: @(#) $Id: tclThread.c,v 1.6.2.3 2007/11/26 14:05:10 vasiljevic Exp $ */ #include "tclInt.h" @@ -187,6 +187,8 @@ TclThreadDataKeySet(keyPtr, data) * Keep a list of (mutexes/condition variable/data key) * used during finalization. * + * Assume master lock is held. + * * Results: * None. * @@ -245,6 +247,7 @@ RememberSyncObject(objPtr, recPtr) * ForgetSyncObject * * Remove a single object from the list. + * Assume master lock is held. * * Results: * None. @@ -276,6 +279,7 @@ ForgetSyncObject(objPtr, recPtr) * TclRememberMutex * * Keep a list of mutexes used during finalization. + * Assume master lock is held. * * Results: * None. @@ -317,7 +321,9 @@ Tcl_MutexFinalize(mutexPtr) #ifdef TCL_THREADS TclpFinalizeMutex(mutexPtr); #endif + TclpMasterLock(); ForgetSyncObject((char *)mutexPtr, &mutexRecord); + TclpMasterUnlock(); } /* @@ -326,6 +332,7 @@ Tcl_MutexFinalize(mutexPtr) * TclRememberDataKey * * Keep a list of thread data keys used during finalization. + * Assume master lock is held. * * Results: * None. @@ -349,6 +356,7 @@ TclRememberDataKey(keyPtr) * TclRememberCondition * * Keep a list of condition variables used during finalization. + * Assume master lock is held. * * Results: * None. @@ -390,7 +398,9 @@ Tcl_ConditionFinalize(condPtr) #ifdef TCL_THREADS TclpFinalizeCondition(condPtr); #endif + TclpMasterLock(); ForgetSyncObject((char *)condPtr, &condRecord); + TclpMasterUnlock(); } /* -- cgit v0.12 From bc12fd68ee94dccdac5e1e6d04f160cbbad550ee Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 27 Nov 2007 20:30:40 +0000 Subject: * win/tclWinSock.c: Add missing encoding conversion of the [info hostname] value from the system encoding to Tcl's internal encoding. This is important now that ICANN no longer limits host names to ASCII. [Bug 1823552] --- ChangeLog | 7 +++++++ win/tclWinSock.c | 21 ++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 37dc948..04f1d12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-11-27 Don Porter + + * win/tclWinSock.c: Add missing encoding conversion of the + [info hostname] value from the system encoding to Tcl's internal + encoding. This is important now that ICANN no longer limits host + names to ASCII. [Bug 1823552] + 2007-11-26 Zoran Vasiljevic * generic/tclThread.c: Back-port locking changes from Tcl8.5 diff --git a/win/tclWinSock.c b/win/tclWinSock.c index feeb374..32cfb19 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.6 2006/09/26 21:40:37 patthoyts Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.7 2007/11/27 20:30:42 dgp Exp $ */ #include "tclWinInt.h" @@ -2550,14 +2550,25 @@ Tcl_GetHostName() Tcl_MutexUnlock(&socketMutex); if (TclpHasSockets(NULL) == TCL_OK) { - /* - * INTL: bug - */ + Tcl_DString ds; - if (winSock.gethostname(hostname, sizeof(hostname)) == 0) { + Tcl_DStringInit(&ds); + Tcl_DStringSetLength(&ds, 255); + if (winSock.gethostname(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)) + == 0) { + Tcl_DString utfDs; + + Tcl_DStringInit(&utfDs); + Tcl_ExternalToUtfDString(NULL, Tcl_DStringValue(&ds), + Tcl_DStringLength(&ds), &utfDs); + Tcl_DStringFree(&ds); + Tcl_MutexLock(&socketMutex); + strcpy(hostname, Tcl_DStringValue(&utfDs)); + Tcl_UtfToLower(hostname); hostnameInitialized = 1; Tcl_MutexUnlock(&socketMutex); + Tcl_DStringFree(&utfDs); return hostname; } } -- cgit v0.12 From 300ffcba6bfd94fe5e9afa67a61040c1974f39c3 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 29 Nov 2007 00:31:50 +0000 Subject: * win/tclWinSock.c (Tcl_GetHostName): update to previous fix to set hostname length appropriately, clean up check overall. --- ChangeLog | 5 +++++ win/tclWinSock.c | 56 ++++++++++++++++---------------------------------------- 2 files changed, 21 insertions(+), 40 deletions(-) diff --git a/ChangeLog b/ChangeLog index 04f1d12..3806b19 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-11-28 Jeff Hobbs + + * win/tclWinSock.c (Tcl_GetHostName): update to previous fix to + set hostname length appropriately, clean up check overall. + 2007-11-27 Don Porter * win/tclWinSock.c: Add missing encoding conversion of the diff --git a/win/tclWinSock.c b/win/tclWinSock.c index 32cfb19..eb1ee84 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.7 2007/11/27 20:30:42 dgp Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.8 2007/11/29 00:31:51 hobbs Exp $ */ #include "tclWinInt.h" @@ -2543,52 +2543,28 @@ Tcl_GetHostName() Tcl_MutexLock(&socketMutex); InitSockets(); - if (hostnameInitialized) { - Tcl_MutexUnlock(&socketMutex); - return hostname; - } - Tcl_MutexUnlock(&socketMutex); - - if (TclpHasSockets(NULL) == TCL_OK) { - Tcl_DString ds; - - Tcl_DStringInit(&ds); - Tcl_DStringSetLength(&ds, 255); - if (winSock.gethostname(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)) - == 0) { - Tcl_DString utfDs; - - Tcl_DStringInit(&utfDs); - Tcl_ExternalToUtfDString(NULL, Tcl_DStringValue(&ds), - Tcl_DStringLength(&ds), &utfDs); - Tcl_DStringFree(&ds); - - Tcl_MutexLock(&socketMutex); - strcpy(hostname, Tcl_DStringValue(&utfDs)); - Tcl_UtfToLower(hostname); - hostnameInitialized = 1; - Tcl_MutexUnlock(&socketMutex); - Tcl_DStringFree(&utfDs); - return hostname; - } - } - Tcl_MutexLock(&socketMutex); - length = sizeof(hostname); - if ((*tclWinProcs->getComputerNameProc)(wbuf, &length) != 0) { + if (!hostnameInitialized) { /* - * Convert string from native to UTF then change to lowercase. + * Convert hostname from native to UTF then change to lowercase. */ - Tcl_DString ds; - lstrcpynA(hostname, Tcl_WinTCharToUtf((TCHAR *) wbuf, -1, &ds), - sizeof(hostname)); + length = sizeof(hostname); + /* same as SocketsEnabled without the socketMutex lock */ + if ((winSock.hModule != NULL) + && (winSock.gethostname(hostname, length) == 0)) { + Tcl_ExternalToUtfDString(NULL, hostname, -1, &ds); + } else if ((*tclWinProcs->getComputerNameProc)(wbuf, &length) != 0) { + Tcl_WinTCharToUtf((TCHAR *) wbuf, -1, &ds); + } else { + Tcl_DStringInit(&ds); + Tcl_DStringSetLength(&ds, 0); + } + lstrcpynA(hostname, Tcl_DStringValue(&ds), sizeof(hostname)); Tcl_DStringFree(&ds); Tcl_UtfToLower(hostname); - } else { - hostname[0] = '\0'; + hostnameInitialized = 1; } - hostnameInitialized = 1; Tcl_MutexUnlock(&socketMutex); return hostname; } -- cgit v0.12 From 7579bff98894f7f03c12fae6ecbd01e473d06021 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 5 Dec 2007 14:54:07 +0000 Subject: Prevent shimmering crash in [lsearch] when -exact and -integer/-real are mixed. [Bug 1844789] --- ChangeLog | 5 +++++ generic/tclCmdIL.c | 4 +++- tests/lsearch.test | 11 ++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3806b19..b07f345 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-12-05 Donal K. Fellows + + * generic/tclCmdIL.c (Tcl_LsearchObjCmd): Prevent shimmering crash + when -exact and -integer/-real are mixed. [Bug 1844789] + 2007-11-28 Jeff Hobbs * win/tclWinSock.c (Tcl_GetHostName): update to previous fix to diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 85e51d0..eae2d10 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.11 2007/03/10 14:57:38 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.12 2007/12/05 14:54:08 dkf Exp $ */ #include "tclInt.h" @@ -3374,12 +3374,14 @@ Tcl_LsearchObjCmd(clientData, interp, objc, objv) if (result != TCL_OK) { return result; } + Tcl_ListObjGetElements(NULL, objv[objc - 2], &listc, &listv); break; case REAL: result = Tcl_GetDoubleFromObj(interp, patObj, &patDouble); if (result != TCL_OK) { return result; } + Tcl_ListObjGetElements(NULL, objv[objc - 2], &listc, &listv); break; } } else { diff --git a/tests/lsearch.test b/tests/lsearch.test index 86884c4..51d2176 100644 --- a/tests/lsearch.test +++ b/tests/lsearch.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: lsearch.test,v 1.10.2.3 2005/12/09 14:39:25 dkf Exp $ +# RCS: @(#) $Id: lsearch.test,v 1.10.2.4 2007/12/05 14:54:08 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -366,6 +366,15 @@ test lsearch-16.2 {lsearch -regexp allows internal backrefs} { lsearch -regexp {a aa b} {(.)\1} } 1 +test lsearch-21.1 {lsearch shimmering crash} { + set x 0 + lsearch -exact -integer $x $x +} 0 +test lsearch-21.2 {lsearch shimmering crash} { + set x 0.5 + lsearch -exact -real $x $x +} 0 + # cleanup catch {unset res} catch {unset increasingIntegers} -- cgit v0.12 From 1c95363481976a57b43d204d6f6d5e364bbb56b6 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 14 Dec 2007 02:29:20 +0000 Subject: * generic/tclIOUtil.c (TclGetOpenMode): Only set the O_APPEND flag * tests/ioUtil.test (ioUtil-4.1): on a channel for the 'a' mode and not for 'a+'. [Bug 1773127] (backport from HEAD) --- ChangeLog | 6 ++++++ generic/tclIOUtil.c | 8 ++++++-- tests/ioUtil.test | 23 ++++++++++++++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index b07f345..393ab83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-12-13 Jeff Hobbs + + * generic/tclIOUtil.c (TclGetOpenMode): Only set the O_APPEND flag + * tests/ioUtil.test (ioUtil-4.1): on a channel for the 'a' + mode and not for 'a+'. [Bug 1773127] (backport from HEAD) + 2007-12-05 Donal K. Fellows * generic/tclCmdIL.c (Tcl_LsearchObjCmd): Prevent shimmering crash diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index a587794..aae1e84 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.34 2007/02/19 23:49:05 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.35 2007/12/14 02:29:21 hobbs Exp $ */ #include "tclInt.h" @@ -1585,7 +1585,11 @@ TclGetOpenMode(interp, string, seekFlagPtr) return -1; } if (string[1] == '+') { - mode &= ~(O_RDONLY|O_WRONLY); + /* + * Must remove the O_APPEND flag so that the seek command + * works. [Bug 1773127] + */ + mode &= ~(O_RDONLY|O_WRONLY|O_APPEND); mode |= O_RDWR; if (string[2] != 0) { goto error; diff --git a/tests/ioUtil.test b/tests/ioUtil.test index 5b0a79e..78df642 100644 --- a/tests/ioUtil.test +++ b/tests/ioUtil.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioUtil.test,v 1.13.2.1 2003/04/14 15:45:57 vincentdarley Exp $ +# RCS: @(#) $Id: ioUtil.test,v 1.13.2.2 2007/12/14 02:29:22 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -303,6 +303,27 @@ test ioUtil-3.8 {TclOpenFileChannelDeleteProc: Verify that all procs have been d list $err9 $err10 $err11 } {{"TestOpenFileChannelProc1": could not be deleteed} {"TestOpenFileChannelProc2": could not be deleteed} {"TestOpenFileChannelProc3": could not be deleteed}} +test ioUtil-4.1 {open ... a+ must not use O_APPEND: Bug 1773127} -setup { + set f [tcltest::makeFile {} ioutil41.tmp] + set fid [open $f w] + puts -nonewline $fid 123 + close $fid +} -body { + set fid [open $f a+] + puts -nonewline $fid 456 + seek $fid 2 + set d [read $fid 2] + seek $fid 4 + puts -nonewline $fid x + close $fid + set fid [open $f r] + append d [read $fid] + close $fid + return $d +} -cleanup { + tcltest::removeFile $f +} -result 341234x6 + cd $oldpwd # cleanup -- cgit v0.12 From bf8e8201d27312ee1c6814a24c6ae7e02ecd85f1 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 14 Dec 2007 12:45:48 +0000 Subject: TclpGetHostByName: The six-argument form of getaddressbyname_r() uses the fifth argument to indicate whether the lookup succeeded or not on at least one platform. [Bug 1618235] --- unix/tclUnixCompat.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index 88c87c3..15b9588 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -6,7 +6,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.11 2007/11/13 14:39:15 dkf Exp $ + * RCS: @(#) $Id: tclUnixCompat.c,v 1.1.2.12 2007/12/14 12:45:48 vasiljevic Exp $ * */ @@ -585,10 +585,11 @@ TclpGetHostByName(const char *name) #elif defined(HAVE_GETHOSTBYNAME_R_6) struct hostent *hePtr; - int h_errno; - return (gethostbyname_r(name, &tsdPtr->hent, tsdPtr->hbuf, - sizeof(tsdPtr->hbuf), &hePtr, &h_errno) == 0) ? - &hePtr : NULL; + int result, h_errno; + + result = gethostbyname_r(name, &tsdPtr->hent, tsdPtr->hbuf, + sizeof(tsdPtr->hbuf), &hePtr, &h_errno); + return (result == 0) ? hePtr : NULL; #elif defined(HAVE_GETHOSTBYNAME_R_3) struct hostent_data data; -- cgit v0.12 From 35195c1ac73f6ce5f3ad8fc7d40258d58255bc5d Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Fri, 14 Dec 2007 12:52:19 +0000 Subject: Appled the change to tclUnixcompat.c already stated in ChangeLog but not present. --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 393ab83..5aa0457 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-12-14 Zoran Vasiljevic + + * unix/tclUnixCompat.c (TclpGetHostByName): Really applied + the change noted on 2007-11-13 by dkf below. + 2007-12-13 Jeff Hobbs * generic/tclIOUtil.c (TclGetOpenMode): Only set the O_APPEND flag -- cgit v0.12 From 55ff94e48df8ed0aad481069c54420a295217e03 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 14 Dec 2007 20:55:29 +0000 Subject: updated notes --- ChangeLog | 4 ++++ win/README | 66 ++++++++++++++++++++++++++++---------------------------------- 2 files changed, 34 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5aa0457..e21c61e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-12-14 Jeff Hobbs + + * win/README: updated notes + 2007-12-14 Zoran Vasiljevic * unix/tclUnixCompat.c (TclpGetHostByName): Really applied diff --git a/win/README b/win/README index 644dc45..69eda51 100644 --- a/win/README +++ b/win/README @@ -1,6 +1,6 @@ Tcl 8.4 for Windows -RCS: @(#) $Id: README,v 1.30.2.1 2005/07/29 03:50:51 mdejong Exp $ +RCS: @(#) $Id: README,v 1.30.2.2 2007/12/14 20:55:29 hobbs Exp $ 1. Introduction --------------- @@ -10,6 +10,7 @@ version of Tcl. This directory also contains source files for Tcl that are specific to Microsoft Windows. The information in this file is maintained on the web at: + http://www.tcl.tk/doc/howto/compile.html#win The above URL includes a lengthy discussion of compiler macros necessary @@ -24,55 +25,47 @@ In order to compile Tcl for Windows, you need the following: and - Visual C++ 5 or newer + Visual C++ 6 or newer or - Msys + Mingw + Msys + Mingw [http://www.mingw.org/download.shtml] http://prdownloads.sourceforge.net/tcl/msys_mingw8.zip - This Msys + Mingw download is the minimal environment - needed to build Tcl/Tk under Windows. It includes a - shell environment and gcc. The release is designed to - make it as easy a possible to build Tcl/Tk. To install, - you just download the zip file and extract the files - into a directory. The README.TXT file describes how - to launch the msys shell, you then run the configure - script in the tcl/win directory. + This Msys + Mingw download above is the minimal environment needed + to build Tcl/Tk under Windows. It includes a shell environment and + gcc. The release is designed to make it as easy a possible to build + Tcl/Tk. To install, you just download the zip file and extract the + files into a directory. The README.TXT file describes how to launch + the msys shell, you then run the configure script in the tcl/win + directory. In practice, this release is built with Visual C++ 6.0 and the TEA Makefile. If you are building with Visual C++, in the "win" subdirectory of the -source release, you will find "makefile.vc". This is the makefile for -the Visual C++ compiler and uses the stock NMAKE tool. Detailed -directions for using it, are in the comments of "makefile.vc". A quick -example would be: +source release, you will find "makefile.vc". This is the makefile for the +Visual C++ compiler and uses the stock NMAKE tool. Detailed directions for +using it, are in the comments of "makefile.vc". A quick example would be: + C:\tcl_source\win\>nmake -f makefile.vc There is also a Developer Studio workspace and project file, too, if you would like to use them. -If you are building with Msys or Cygwin, you can use the configure script -that lives in the win subdirectory. The Msys or Cygwin based configure/build -process works just like the UNIX one, so you will want to refer to -../unix/README for available configure options. An error will be -generated by the configure script if you try to compile Tcl with -the Cygwin version of gcc instead of the Mingw version. Check your -PATH if you get this error. Be aware that gcc will generate -lots of compile time warnings when building Tcl. Warnings are +If you are building with Msys, you can use the configure script that lives +in the win subdirectory. The Msys based configure/build process works just +like the UNIX one, so you will want to refer to ../unix/README for +available configure options. An error will be generated by the configure +script if you try to compile Tcl with the Cygwin version of gcc instead of +the Mingw version. Check your PATH if you get this error. Be aware that gcc +will generate lots of compile time warnings when building Tcl. Warnings are not errors, so please don't file a bug report about them. -In order to use the binaries generated by these makefiles, you will -need to place the Tcl script library files someplace where Tcl can -find them. Tcl looks in one of following places for the library files: - - 1) The path specified in the environment variable "TCL_LIBRARY". - - 2) Relative to the directory containing the current .exe. - Tcl will look for a directory "..\lib\tcl8.4" relative to the - directory containing the currently running .exe. +Use the Makefile "install" target to install Tcl. It will install it +according to the prefix options you provided in the correct directory +structure. Note that in order to run tclsh84.exe, you must ensure that tcl84.dll and tclpip84.dll are on your path, in the system directory, or in the @@ -83,10 +76,11 @@ Note: Tcl no longer provides support for Win32s. 3. Test suite ------------- -This distribution contains an extensive test suite for Tcl. Some of -the tests are timing dependent and will fail from time to time. If a -test is failing consistently, please send us a bug report with as much -detail as you can manage. Please use the online database at +This distribution contains an extensive test suite for Tcl. Some of the +tests are timing dependent and will fail from time to time. If a test is +failing consistently, please send us a bug report with as much detail as +you can manage. Please use the online database at + http://tcl.sourceforge.net/ In order to run the test suite, you build the "test" target using the -- cgit v0.12 From a5dd9045b97811ec0ab14334094c710878cd6083 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 14 Dec 2007 21:02:29 +0000 Subject: remove note about gcc compiler warnings --- win/README | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/win/README b/win/README index 69eda51..7f5ccc6 100644 --- a/win/README +++ b/win/README @@ -1,6 +1,6 @@ Tcl 8.4 for Windows -RCS: @(#) $Id: README,v 1.30.2.2 2007/12/14 20:55:29 hobbs Exp $ +RCS: @(#) $Id: README,v 1.30.2.3 2007/12/14 21:02:29 hobbs Exp $ 1. Introduction --------------- @@ -59,9 +59,7 @@ in the win subdirectory. The Msys based configure/build process works just like the UNIX one, so you will want to refer to ../unix/README for available configure options. An error will be generated by the configure script if you try to compile Tcl with the Cygwin version of gcc instead of -the Mingw version. Check your PATH if you get this error. Be aware that gcc -will generate lots of compile time warnings when building Tcl. Warnings are -not errors, so please don't file a bug report about them. +the Mingw version. Check your PATH if you get this error. Use the Makefile "install" target to install Tcl. It will install it according to the prefix options you provided in the correct directory -- cgit v0.12 From fdc0ebcebdabf8d44d0fb97275444ef980028f66 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 18 Dec 2007 11:23:11 +0000 Subject: Fixes for problems created when processing regular expressions that generate very large automata. An enormous number of thanks to Will Drewry , Tavis Ormandy , and Tom Lane from the Postgresql crowd for their help in tracking these problems down. [Bug 1810264] --- ChangeLog | 9 ++++++++ generic/regc_color.c | 27 +++++++++++----------- generic/regc_nfa.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++- generic/regerrs.h | 1 + generic/regex.h | 1 + generic/regguts.h | 8 +++++++ tests/reg.test | 15 +++++++++++- 7 files changed, 110 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index e21c61e..c7dfe53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-12-18 Donal K. Fellows + + * generic/regguts.h, generic/regc_color.c, generic/regc_nfa.c: + Fixes for problems created when processing regular expressions that + generate very large automata. An enormous number of thanks to Will + Drewry , Tavis Ormandy , and Tom + Lane from the Postgresql crowd for their help in + tracking these problems down. [Bug 1810264] + 2007-12-14 Jeff Hobbs * win/README: updated notes diff --git a/generic/regc_color.c b/generic/regc_color.c index 5aed21c..f6716be 100644 --- a/generic/regc_color.c +++ b/generic/regc_color.c @@ -552,12 +552,9 @@ struct colormap *cm; scd->sub = NOSUB; while ((a = cd->arcs) != NULL) { assert(a->co == co); - /* uncolorchain(cm, a); */ - cd->arcs = a->colorchain; + uncolorchain(cm, a); a->co = sco; - /* colorchain(cm, a); */ - a->colorchain = scd->arcs; - scd->arcs = a; + colorchain(cm, a); } freecolor(cm, co); } else { @@ -586,7 +583,10 @@ struct arc *a; { struct colordesc *cd = &cm->cd[a->co]; + if (cd->arcs) + cd->arcs->colorchain_rev = a; a->colorchain = cd->arcs; + a->colorchain_rev = NULL; cd->arcs = a; } @@ -600,18 +600,19 @@ struct colormap *cm; struct arc *a; { struct colordesc *cd = &cm->cd[a->co]; - struct arc *aa; + struct arc *aa = a->colorchain_rev; - aa = cd->arcs; - if (aa == a) /* easy case */ + if (aa == NULL) { + assert(cd->arcs == a); cd->arcs = a->colorchain; - else { - for (; aa != NULL && aa->colorchain != a; aa = aa->colorchain) - continue; - assert(aa != NULL); + } else { + assert(aa->colorchain == a); aa->colorchain = a->colorchain; } - a->colorchain = NULL; /* paranoia */ + if (a->colorchain) + a->colorchain->colorchain_rev = aa; + a->colorchain = NULL; /* paranoia */ + a->colorchain_rev = NULL; } /* diff --git a/generic/regc_nfa.c b/generic/regc_nfa.c index dd26e64..48f56a9 100644 --- a/generic/regc_nfa.c +++ b/generic/regc_nfa.c @@ -61,11 +61,12 @@ struct nfa *parent; /* NULL if primary NFA */ nfa->nstates = 0; nfa->cm = cm; nfa->v = v; + nfa->size = 0; nfa->bos[0] = nfa->bos[1] = COLORLESS; nfa->eos[0] = nfa->eos[1] = COLORLESS; + nfa->parent = parent; nfa->post = newfstate(nfa, '@'); /* number 0 */ nfa->pre = newfstate(nfa, '>'); /* number 1 */ - nfa->parent = parent; nfa->init = newstate(nfa); /* may become invalid later */ nfa->final = newstate(nfa); @@ -88,6 +89,57 @@ struct nfa *parent; /* NULL if primary NFA */ } /* + - too_many_states - checks if the max states exceeds the compile-time value + ^ static int too_many_states(struct nfa *); + */ +static int +too_many_states(nfa) +struct nfa *nfa; +{ + struct nfa *parent = nfa->parent; + size_t sz = nfa->size; + while (parent != NULL) { + sz = parent->size; + parent = parent->parent; + } + if (sz > REG_MAX_STATES) + return 1; + return 0; +} + +/* + - increment_size - increases the tracked size of the NFA and its parents. + ^ static void increment_size(struct nfa *); + */ +static void +increment_size(nfa) +struct nfa *nfa; +{ + struct nfa *parent = nfa->parent; + nfa->size++; + while (parent != NULL) { + parent->size++; + parent = parent->parent; + } +} + +/* + - decrement_size - increases the tracked size of the NFA and its parents. + ^ static void decrement_size(struct nfa *); + */ +static void +decrement_size(nfa) +struct nfa *nfa; +{ + struct nfa *parent = nfa->parent; + nfa->size--; + while (parent != NULL) { + parent->size--; + parent = parent->parent; + } +} + +/* - freenfa - free an entire NFA ^ static VOID freenfa(struct nfa *); */ @@ -123,6 +175,11 @@ struct nfa *nfa; { struct state *s; + if (too_many_states(nfa)) { + /* XXX: add specific error for this */ + NERR(REG_ETOOBIG); + return NULL; + } if (nfa->free != NULL) { s = nfa->free; nfa->free = s->next; @@ -154,6 +211,8 @@ struct nfa *nfa; } s->prev = nfa->slast; nfa->slast = s; + /* Track the current size and the parent size */ + increment_size(nfa); return s; } @@ -221,6 +280,7 @@ struct state *s; s->prev = NULL; s->next = nfa->free; /* don't delete it, put it on the free list */ nfa->free = s; + decrement_size(nfa); } /* @@ -651,6 +711,8 @@ struct state *stmp; /* s's duplicate, or NULL */ for (a = s->outs; a != NULL && !NISERR(); a = a->outchain) { duptraverse(nfa, a->to, (struct state *)NULL); + if (NISERR()) + break; assert(a->to->tmp != NULL); cparc(nfa, a, s->tmp, a->to->tmp); } diff --git a/generic/regerrs.h b/generic/regerrs.h index a3d98b6..259c0cb 100644 --- a/generic/regerrs.h +++ b/generic/regerrs.h @@ -16,3 +16,4 @@ { REG_INVARG, "REG_INVARG", "invalid argument to regex function" }, { REG_MIXED, "REG_MIXED", "character widths of regex and string differ" }, { REG_BADOPT, "REG_BADOPT", "invalid embedded option" }, +{ REG_ETOOBIG, "REG_ETOOBIG", "nfa has too many states" }, diff --git a/generic/regex.h b/generic/regex.h index 8289a50..a35925a 100644 --- a/generic/regex.h +++ b/generic/regex.h @@ -292,6 +292,7 @@ typedef struct { #define REG_INVARG 16 /* invalid argument to regex function */ #define REG_MIXED 17 /* character widths of regex and string differ */ #define REG_BADOPT 18 /* invalid embedded option */ +#define REG_ETOOBIG 19 /* nfa has too many states */ /* two specials for debugging and testing */ #define REG_ATOI 101 /* convert error-code name to number */ #define REG_ITOA 102 /* convert error-code number to name */ diff --git a/generic/regguts.h b/generic/regguts.h index b6152f4..c77a8fc 100644 --- a/generic/regguts.h +++ b/generic/regguts.h @@ -290,6 +290,7 @@ struct arc { # define freechain outchain struct arc *inchain; /* *to's ins chain */ struct arc *colorchain; /* color's arc chain */ + struct arc *colorchain_rev; /* back-link in color's arc chain */ }; struct arcbatch { /* for bulk allocation of arcs */ @@ -326,6 +327,8 @@ struct nfa { struct colormap *cm; /* the color map */ color bos[2]; /* colors, if any, assigned to BOS and BOL */ color eos[2]; /* colors, if any, assigned to EOS and EOL */ + size_t size; /* current NFA size; differs from nstates as + * it will be incremented by its children */ struct vars *v; /* simplifies compile error reporting */ struct nfa *parent; /* parent NFA, if any */ }; @@ -356,6 +359,11 @@ struct cnfa { #define NULLCNFA(cnfa) ((cnfa).nstates == 0) +/* Used to limit the maximum NFA size */ +#ifndef REG_MAX_STATES +#define REG_MAX_STATES 100000 +#endif + /* * subexpression tree diff --git a/tests/reg.test b/tests/reg.test index 8994fdc..2abe7b6 100644 --- a/tests/reg.test +++ b/tests/reg.test @@ -9,7 +9,7 @@ # # Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. # -# RCS: @(#) $Id: reg.test,v 1.16.2.3 2004/11/27 05:44:13 dgp Exp $ +# RCS: @(#) $Id: reg.test,v 1.16.2.4 2007/12/18 11:23:16 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1130,6 +1130,19 @@ test reg-33.11 {Bug 840258} { "TQ\r\n.?<5000267>Test already stopped\r\n" {} tmp } 1 +test reg-33.12 {Bug 1810264 - bad read} { + regexp {\3161573148} {\3161573148} +} 0 +test reg-33.13 {Bug 1810264 - infinite loop} { + regexp {($|^)*} {x} +} 1 +test reg-33.14 {Bug 1810264 - super-expensive expression} { + set start [clock seconds] + regexp {(x{200}){200}$y} {x} + set time [expr {[clock seconds] - $start}] + expr {$time < 5 ? "ok" : "Complex RE took $time seconds - bad!"} +} ok + # cleanup ::tcltest::cleanupTests return -- cgit v0.12 From 20e183fe4ce20ecc825db92439063d1d8f7243ff Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 31 Dec 2007 16:57:03 +0000 Subject: * changes: updates for 8.4.17 release. --- ChangeLog | 6 ++++++ changes | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c7dfe53..cec77c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-12-31 Don Porter + + *** 8.4.17 TAGGED FOR RELEASE *** + + * changes: updates for 8.4.17 release. + 2007-12-18 Donal K. Fellows * generic/regguts.h, generic/regc_color.c, generic/regc_nfa.c: diff --git a/changes b/changes index 1189624..f3ff291 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.52 2007/09/18 19:37:06 das Exp $ +RCS: @(#) $Id: changes,v 1.79.2.53 2007/12/31 16:57:04 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6480,3 +6480,22 @@ URL validity checking against RFC 2986 (hobbs) 2007-09-15 (platform support) SunOS-5.1x link with cc, not ld (steffen) --- Released 8.4.16, September 21, 2007 --- See ChangeLog for details --- + +2007-10-03 (bug fix) Corrected find of deleted command (sofer,neumann) + +2007-10-15 (bug fix)[1813528] Tcl_ParseBraces read past buffer (mistachkin) + +2007-10-30 (bug fix)[1810264] stop panic in RE lexer (fellows) + +2007-11-15 (bug fix)[1810038] infinite loop in RE compiler (lane,porter) + +2007-11-27 (bug fix)[1823552] encoding conversion for [info hostname] (porter) + +2007-12-05 (bug fix)[1844789] fix [lsearch -exact -integer] crash (fellows) + +2007-12-13 (bug fix)[1773127] corrected open mode "a+" (rottman,fellows) + +2007-12-18 (bug fix)[1810264] revised regexp engine to prevent debilitating +over-consumption of resources (drewry,lane,ormandy,fellows) + +--- Released 8.4.17, January 4, 2008 --- See ChangeLog for details --- -- cgit v0.12 From 16a9dc3e86b4bb9846622098b0f602e18fcbb818 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 31 Dec 2007 17:56:32 +0000 Subject: * doc/filename.n: Typo --- ChangeLog | 3 ++- doc/filename.n | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index cec77c3..e35b5e5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,8 @@ *** 8.4.17 TAGGED FOR RELEASE *** - * changes: updates for 8.4.17 release. + * changes: updates for 8.4.17 release. + * doc/filename.n: Typo 2007-12-18 Donal K. Fellows diff --git a/doc/filename.n b/doc/filename.n index bf70bc4..db4d493 100644 --- a/doc/filename.n +++ b/doc/filename.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: filename.n,v 1.7.12.2 2007/11/05 17:34:10 dgp Exp $ +'\" RCS: @(#) $Id: filename.n,v 1.7.12.3 2007/12/31 17:56:34 dgp Exp $ '\" .so man.macros .TH filename n 7.5 Tcl "Tcl Built-In Commands" @@ -148,7 +148,7 @@ following examples illustrate various forms of path names: Absolute UNC path to a file called \fBfile\fR in the root directory of the export point \fBshare\fR on the host \fBHost\fR. Note that repeated use of \fBfile dirname\fR on this path will give -\fB//Host/share\fR, and will never give just \fB//Host/fR. +\fB//Host/share\fR, and will never give just \fB//Host\fR. .TP 15 \fBc:foo\fR Volume-relative path to a file \fBfoo\fR in the current directory on drive -- cgit v0.12 From 96ef6af4e3f9b90258b807aa289715f243e31565 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 14 Jan 2008 00:11:20 +0000 Subject: * win/tclWinSerial.c (SerialCloseProc, TclWinOpenSerialChannel): use critical section for read & write side. [Bug 1353846] (newman) --- ChangeLog | 5 +++++ win/tclWinSerial.c | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index e35b5e5..2266329 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-01-13 Jeff Hobbs + + * win/tclWinSerial.c (SerialCloseProc, TclWinOpenSerialChannel): + use critical section for read & write side. [Bug 1353846] (newman) + 2007-12-31 Don Porter *** 8.4.17 TAGGED FOR RELEASE *** diff --git a/win/tclWinSerial.c b/win/tclWinSerial.c index 4041a89..263a9b9 100644 --- a/win/tclWinSerial.c +++ b/win/tclWinSerial.c @@ -11,7 +11,7 @@ * * Serial functionality implemented by Rolf.Schroedter@dlr.de * - * RCS: @(#) $Id: tclWinSerial.c,v 1.25.2.3 2005/10/05 06:33:52 hobbs Exp $ + * RCS: @(#) $Id: tclWinSerial.c,v 1.25.2.4 2008/01/14 00:11:22 hobbs Exp $ */ #include "tclWinInt.h" @@ -653,7 +653,6 @@ SerialCloseProc( CloseHandle(serialPtr->writeThread); CloseHandle(serialPtr->osWrite.hEvent); - DeleteCriticalSection(&serialPtr->csWrite); CloseHandle(serialPtr->evWritable); CloseHandle(serialPtr->evStartWriter); CloseHandle(serialPtr->evStopWriter); @@ -663,6 +662,8 @@ SerialCloseProc( } serialPtr->validMask &= ~TCL_WRITABLE; + DeleteCriticalSection(&serialPtr->csWrite); + /* * Don't close the Win32 handle if the handle is a standard channel * during the thread exit process. Otherwise, one thread may kill @@ -1467,6 +1468,7 @@ TclWinOpenSerialChannel(handle, channelName, permissions) */ SetCommTimeouts(handle, &no_timeout); + InitializeCriticalSection(&infoPtr->csWrite); if (permissions & TCL_READABLE) { infoPtr->osRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); @@ -1480,7 +1482,6 @@ TclWinOpenSerialChannel(handle, channelName, permissions) infoPtr->evWritable = CreateEvent(NULL, TRUE, TRUE, NULL); infoPtr->evStartWriter = CreateEvent(NULL, FALSE, FALSE, NULL); infoPtr->evStopWriter = CreateEvent(NULL, FALSE, FALSE, NULL); - InitializeCriticalSection(&infoPtr->csWrite); infoPtr->writeThread = CreateThread(NULL, 256, SerialWriterThread, infoPtr, 0, &id); } -- cgit v0.12 From c784898768a3bdf627cd6a9ae33e7b885d80e44d Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Wed, 30 Jan 2008 10:46:51 +0000 Subject: * generic/tclInterp.c (Tcl_GetAlias): fix for [Bug 1882373] --- ChangeLog | 4 ++++ generic/tclInterp.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2266329..35a0070 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-01-30 Miguel Sofer + + * generic/tclInterp.c (Tcl_GetAlias): fix for [Bug 1882373] + 2008-01-13 Jeff Hobbs * win/tclWinSerial.c (SerialCloseProc, TclWinOpenSerialChannel): diff --git a/generic/tclInterp.c b/generic/tclInterp.c index 7fae90a..bd2db56 100644 --- a/generic/tclInterp.c +++ b/generic/tclInterp.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInterp.c,v 1.20.2.3 2006/11/28 22:20:02 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInterp.c,v 1.20.2.4 2008/01/30 10:46:56 msofer Exp $ */ #include "tclInt.h" @@ -967,7 +967,7 @@ Tcl_GetAlias(interp, aliasName, targetInterpPtr, targetNamePtr, argcPtr, *argvPtr = (CONST char **) ckalloc((unsigned) sizeof(CONST char *) * (objc - 1)); for (i = 1; i < objc; i++) { - *argvPtr[i - 1] = Tcl_GetString(objv[i]); + (*argvPtr)[i - 1] = Tcl_GetString(objv[i]); } } return TCL_OK; -- cgit v0.12 From afa47b42cf3c82e2c19a77e8c299f783e2f4cf87 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 2 Feb 2008 23:59:07 +0000 Subject: * unix/configure.in (Darwin): correct Info.plist year substitution in non-framework builds. * unix/configure: autoconf-2.13 --- ChangeLog | 7 +++++++ unix/configure | 4 ++-- unix/configure.in | 6 +++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 35a0070..1db2e8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-02-02 Daniel Steffen + + * unix/configure.in (Darwin): correct Info.plist year substitution in + non-framework builds. + + * unix/configure: autoconf-2.13 + 2008-01-30 Miguel Sofer * generic/tclInterp.c (Tcl_GetAlias): fix for [Bug 1882373] diff --git a/unix/configure b/unix/configure index 99aa513..be556d9 100755 --- a/unix/configure +++ b/unix/configure @@ -9200,8 +9200,9 @@ fi echo "$LDFLAGS " | grep -q -- '-prebind ' && TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -seg1addr 0xa000000' TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tcl-Info.plist' EXTRA_TCLSH_LIBS='-sectcreate __TEXT __info_plist Tclsh-Info.plist' - tcl_config_files="${tcl_config_files} Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in" EXTRA_APP_CC_SWITCHES='-mdynamic-no-pic' + tcl_config_files="${tcl_config_files} Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in" + TCL_YEAR="`date +%Y`" fi if test "$FRAMEWORK_BUILD" = "1" ; then @@ -9231,7 +9232,6 @@ EOF EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing license.terms to $(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) "$(TOP_DIR)/license.terms" "$(LIB_INSTALL_DIR)/Resources"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."' - TCL_YEAR="`date +%Y`" # Don't use AC_DEFINE for the following as the framework version define # needs to go into the Makefile even when using autoheader, so that we # can pick up a potential make override of VERSION. Also, don't put this diff --git a/unix/configure.in b/unix/configure.in index 71bba1b..d32c59a 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.40 2007/10/02 17:46:53 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.41 2008/02/02 23:59:10 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -586,8 +586,9 @@ if test "`uname -s`" = "Darwin" ; then echo "$LDFLAGS " | grep -q -- '-prebind ' && TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -seg1addr 0xa000000' TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tcl-Info.plist' EXTRA_TCLSH_LIBS='-sectcreate __TEXT __info_plist Tclsh-Info.plist' - tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in]" EXTRA_APP_CC_SWITCHES='-mdynamic-no-pic' + tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in]" + TCL_YEAR="`date +%Y`" fi if test "$FRAMEWORK_BUILD" = "1" ; then @@ -620,7 +621,6 @@ if test "$FRAMEWORK_BUILD" = "1" ; then EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing license.terms to $(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) "$(TOP_DIR)/license.terms" "$(LIB_INSTALL_DIR)/Resources"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."' - TCL_YEAR="`date +%Y`" # Don't use AC_DEFINE for the following as the framework version define # needs to go into the Makefile even when using autoheader, so that we # can pick up a potential make override of VERSION. Also, don't put this -- cgit v0.12 From 214cb20532ed73615bc262e1a925494e9c0e0e25 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 6 Feb 2008 15:25:14 +0000 Subject: *** 8.4.18 TAGGED FOR RELEASE *** * README: Bump version number to 8.4.18 * generic/tcl.h: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf-2.13 * win/configure: * changes: updates for 8.4.18 release. --- ChangeLog | 19 ++++++++++++++++++- README | 4 ++-- changes | 8 +++++++- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 39 +++++++++++++++++++++++++++++---------- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 11 files changed, 69 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1db2e8e..bb7de07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,21 @@ -2007-02-02 Daniel Steffen +2008-02-06 Don Porter + + *** 8.4.18 TAGGED FOR RELEASE *** + + * README: Bump version number to 8.4.18 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf-2.13 + * win/configure: + + * changes: updates for 8.4.18 release. + +2008-02-02 Daniel Steffen * unix/configure.in (Darwin): correct Info.plist year substitution in non-framework builds. diff --git a/README b/README index 2acd7e2..be5f020 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.17 source distribution. + This is the Tcl 8.4.18 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.21 2007/10/02 17:46:49 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.22 2008/02/06 15:25:15 dgp Exp $ Contents -------- diff --git a/changes b/changes index f3ff291..bdceb29 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.53 2007/12/31 16:57:04 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.54 2008/02/06 15:25:15 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6499,3 +6499,9 @@ URL validity checking against RFC 2986 (hobbs) over-consumption of resources (drewry,lane,ormandy,fellows) --- Released 8.4.17, January 4, 2008 --- See ChangeLog for details --- + +2008-01-13 (bug fix)[1353846] crash in read-only serial (hobbs,newman) + +2008-01-30 (bug fix)[1882373] fix Tcl_GetAlias pointer code (an00na) + +--- Released 8.4.18, February 8, 2008 --- See ChangeLog for details --- diff --git a/generic/tcl.h b/generic/tcl.h index 7c68b81..a03addd 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.33 2007/10/02 21:53:45 hobbs Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.34 2008/02/06 15:25:15 dgp Exp $ */ #ifndef _TCL @@ -59,10 +59,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 17 +#define TCL_RELEASE_SERIAL 18 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.17" +#define TCL_PATCH_LEVEL "8.4.18" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index ecd9e8a..5cd0eec 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.17 + Disk Label=tcl8.4.18 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index be556d9..3b068af 100755 --- a/unix/configure +++ b/unix/configure @@ -556,7 +556,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".17" +TCL_PATCH_LEVEL=".18" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ @@ -9442,15 +9442,34 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed # Without the "./", some shells look in PATH for config.status. diff --git a/unix/configure.in b/unix/configure.in index d32c59a..64521af 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.41 2008/02/02 23:59:10 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.42 2008/02/06 15:25:27 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".17" +TCL_PATCH_LEVEL=".18" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index eea23c7..134731e 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.17 2007/10/02 17:46:53 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.18 2008/02/06 15:25:27 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.17 +%define version 8.4.18 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index b6edf67..2b1f653 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.17 2007/10/02 17:46:53 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.18 2008/02/06 15:25:27 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.17 for +This directory contains the binary distribution of Tcl/Tk 8.4.18 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 421f6e6..4b84696 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".17" +TCL_PATCH_LEVEL=".18" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index ed99d21..04b50ed 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.21 2007/10/02 17:46:53 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.22 2008/02/06 15:25:28 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".17" +TCL_PATCH_LEVEL=".18" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 36907337fa37b07da48dd6d2f7027a12f58a2316 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Fri, 22 Feb 2008 11:36:49 +0000 Subject: Fix for #1815865 - always check the existence of the state array when checking http::status --- ChangeLog | 6 ++++++ library/http/http.tcl | 9 +++++---- library/http/pkgIndex.tcl | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index bb7de07..645e02e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-02-22 Pat Thoyts + + * library/http/pkgIndex.tcl: Set version 2.5.4 + * library/http/http.tcl: Fix for bug #1818565. Always check that + the state array exists in the http::status command. + 2008-02-06 Don Porter *** 8.4.18 TAGGED FOR RELEASE *** diff --git a/library/http/http.tcl b/library/http/http.tcl index c412f6e..cc91421 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.13 2006/10/06 05:56:48 hobbs Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.14 2008/02/22 11:36:56 patthoyts Exp $ # Rough version history: # 1.0 Old http_get interface. @@ -24,7 +24,7 @@ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories # in Makefiles -package provide http 2.5.3 +package provide http 2.5.4 namespace eval http { variable http @@ -632,6 +632,7 @@ proc http::data {token} { return $state(body) } proc http::status {token} { + if {![info exists $token]} { return "error" } variable $token upvar 0 $token state return $state(status) @@ -940,7 +941,7 @@ proc http::Eof {token} { # http::wait -- # -# See documentaion for details. +# See documentation for details. # # Arguments: # token Connection token. @@ -957,7 +958,7 @@ proc http::wait {token} { vwait $token\(status) } - return $state(status) + return [status $token] } # http::formatQuery -- diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index af88a2e..eaf0c86 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.5.3 [list tclPkgSetup $dir http 2.5.3 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +package ifneeded http 2.5.4 [list tclPkgSetup $dir http 2.5.4 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] -- cgit v0.12 From ae559634b7b305f4d8c16e010bd926e47a74566a Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 26 Feb 2008 22:30:25 +0000 Subject: * generic/tclIOCmd.c (Tcl_GetsObjCmd): do not reuse resultObj as it may be shared (crash condition). --- ChangeLog | 5 +++++ generic/tclIOCmd.c | 7 +++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 645e02e..9f8cd17 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-02-26 Jeff Hobbs + + * generic/tclIOCmd.c (Tcl_GetsObjCmd): do not reuse resultObj as + it may be shared (crash condition). + 2008-02-22 Pat Thoyts * library/http/pkgIndex.tcl: Set version 2.5.4 diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c index d49193b..300bef0 100644 --- a/generic/tclIOCmd.c +++ b/generic/tclIOCmd.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOCmd.c,v 1.15.2.2 2004/07/16 22:38:37 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIOCmd.c,v 1.15.2.3 2008/02/26 22:30:26 hobbs Exp $ */ #include "tclInt.h" @@ -228,7 +228,7 @@ Tcl_GetsObjCmd(dummy, interp, objc, objv) int lineLen; /* Length of line just read. */ int mode; /* Mode in which channel is opened. */ char *name; - Tcl_Obj *resultPtr, *linePtr; + Tcl_Obj *linePtr; if ((objc != 2) && (objc != 3)) { Tcl_WrongNumArgs(interp, 1, objv, "channelId ?varName?"); @@ -264,8 +264,7 @@ Tcl_GetsObjCmd(dummy, interp, objc, objv) Tcl_DecrRefCount(linePtr); return TCL_ERROR; } - resultPtr = Tcl_GetObjResult(interp); - Tcl_SetIntObj(resultPtr, lineLen); + Tcl_SetObjResult(interp, Tcl_NewIntObj(lineLen)); return TCL_OK; } else { Tcl_SetObjResult(interp, linePtr); -- cgit v0.12 From 41fc5bbfdb6b8ddd54f155e0858ba45e2b3f3224 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 27 Feb 2008 22:45:31 +0000 Subject: fix dltest dependency for parallel make --- unix/Makefile.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/unix/Makefile.in b/unix/Makefile.in index 9b17624..6fdcca2 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.24 2007/09/19 16:08:39 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.25 2008/02/27 22:45:31 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -603,7 +603,7 @@ gendate: # on this platform. The Makefile in the dltest subdirectory creates # the dltest.marker file in this directory after a successful build. -dltest.marker: +dltest.marker: ${STUB_LIB_FILE} cd dltest ; $(MAKE) INSTALL_TARGETS = install-binaries install-libraries install-doc @EXTRA_INSTALL@ -- cgit v0.12 From 5771efaaf4889edc70633892c57587bc1df5445a Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 27 Feb 2008 23:58:13 +0000 Subject: Backport http 2.5.5 changes from HEAD --- ChangeLog | 6 +++++ doc/http.n | 9 ++++++- library/http/http.tcl | 67 +++++++++++++++++++++++++++++------------------ library/http/pkgIndex.tcl | 2 +- 4 files changed, 57 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9f8cd17..25626fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-02-27 Pat Thoyts + + * library/http/pkgIndex.tcl: Backported 2.5.5 changes from + * library/http/http.tcl: 8.5 version. + * doc/http.n: Document the meta accessor. + 2008-02-26 Jeff Hobbs * generic/tclIOCmd.c (Tcl_GetsObjCmd): do not reuse resultObj as diff --git a/doc/http.n b/doc/http.n index 95efcd6..d4d9f97 100644 --- a/doc/http.n +++ b/doc/http.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: http.n,v 1.18.2.3 2004/10/27 12:52:40 dkf Exp $ +'\" RCS: @(#) $Id: http.n,v 1.18.2.4 2008/02/27 23:58:17 patthoyts Exp $ '\" .so man.macros .TH "http" n 2.5 http "Tcl Bundled Packages" @@ -35,6 +35,8 @@ http \- Client-side implementation of the HTTP/1.0 protocol. .sp \fB::http::ncode \fItoken\fR .sp +\fB::http::meta \fItoken\fR +.sp \fB::http::data \fItoken\fR .sp \fB::http::error \fItoken\fR @@ -310,6 +312,11 @@ This is a convenience procedure that returns the \fBcurrentsize\fP element of the state array, which represents the number of bytes received from the URL in the \fB::http::geturl\fP call. .TP +\fB::http::meta\fP \fItoken\fP +This is a convenience procedure that returns the \fBmeta\fP +element of the state array which contains the HTTP response +headers. See below for an explanation of this element. +.TP \fB::http::cleanup\fP \fItoken\fP This procedure cleans up the state associated with the connection identified by \fItoken\fP. After this call, the procedures diff --git a/library/http/http.tcl b/library/http/http.tcl index cc91421..1a10b75 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.43.2.14 2008/02/22 11:36:56 patthoyts Exp $ +# RCS: @(#) $Id: http.tcl,v 1.43.2.15 2008/02/27 23:58:18 patthoyts Exp $ # Rough version history: # 1.0 Old http_get interface. @@ -24,7 +24,7 @@ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories # in Makefiles -package provide http 2.5.4 +package provide http 2.5.5 namespace eval http { variable http @@ -73,7 +73,7 @@ namespace eval http { # http::register -- # -# See documentaion for details. +# See documentation for details. # # Arguments: # proto URL protocol prefix, e.g. https @@ -108,7 +108,7 @@ proc http::unregister {proto} { # http::config -- # -# See documentaion for details. +# See documentation for details. # # Arguments: # args Options parsed by the procedure. @@ -187,7 +187,7 @@ proc http::Finish { token {errormsg ""} {skipCB 0}} { # http::reset -- # -# See documentaion for details. +# See documentation for details. # # Arguments: # token Connection token. @@ -482,19 +482,26 @@ proc http::geturl { url args } { fileevent $s writable [list http::Connect $token] http::wait $token - if {$state(status) eq "error"} { - # Something went wrong while trying to establish the connection. - # Clean up after events and such, but DON'T call the command - # callback (if available) because we're going to throw an - # exception from here instead. - set err [lindex $state(error) 0] - cleanup $token - return -code error $err - } elseif {$state(status) ne "connect"} { - # Likely to be connection timeout + if {![info exists state]} { + # If we timed out then Finish has been called and the users + # command callback may have cleaned up the token. If so + # we end up here with nothing left to do. return $token + } else { + if {$state(status) eq "error"} { + # Something went wrong while trying to establish the connection. + # Clean up after events and such, but DON'T call the command + # callback (if available) because we're going to throw an + # exception from here instead. + set err [lindex $state(error) 0] + cleanup $token + return -code error $err + } elseif {$state(status) ne "connect"} { + # Likely to be connection timeout + return $token + } + set state(status) "" } - set state(status) "" } # Send data in cr-lf format, but accept any line terminators @@ -610,7 +617,7 @@ proc http::geturl { url args } { # if state(status) is error, it means someone's already called Finish # to do the above-described clean up. - if {$state(status) eq "error"} { + if {$state(status) ne "error"} { Finish $token $err 1 } cleanup $token @@ -656,7 +663,11 @@ proc http::size {token} { upvar 0 $token state return $state(currentsize) } - +proc http::meta {token} { + variable $token + upvar 0 $token state + return $state(meta) +} proc http::error {token} { variable $token upvar 0 $token state @@ -787,13 +798,9 @@ proc http::Event {token} { upvar 0 $token state set s $state(sock) - if {[eof $s]} { - Eof $token - return - } if {$state(state) eq "header"} { if {[catch {gets $s line} n]} { - Finish $token $n + return [Finish $token $n] } elseif {$n == 0} { variable encodings set state(state) body @@ -821,6 +828,7 @@ proc http::Event {token} { # Initiate a sequence of background fcopies fileevent $s readable {} CopyStart $s $token + return } } elseif {$n > 0} { if {[regexp -nocase {^content-type:(.+)$} $line x type]} { @@ -855,7 +863,7 @@ proc http::Event {token} { incr state(currentsize) $n } } err]} { - Finish $token $err + return [Finish $token $err] } else { if {[info exists state(-progress)]} { eval $state(-progress) \ @@ -863,6 +871,11 @@ proc http::Event {token} { } } } + + if {[eof $s]} { + Eof $token + return + } } # http::CopyStart @@ -963,7 +976,7 @@ proc http::wait {token} { # http::formatQuery -- # -# See documentaion for details. Call http::formatQuery with an even +# See documentation for details. Call http::formatQuery with an even # number of arguments, where the first is a name, the second is a value, # the third is another name, and so on. # @@ -1038,3 +1051,7 @@ proc http::ProxyRequired {host} { return [list $http(-proxyhost) $http(-proxyport)] } } + +# Local variables: +# indent-tabs-mode: t +# End: diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index eaf0c86..cf6a1ff 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.5.4 [list tclPkgSetup $dir http 2.5.4 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +package ifneeded http 2.5.5 [list tclPkgSetup $dir http 2.5.5 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] -- cgit v0.12 From 6dcbff18844a8181ed502d10d6004ae66adddfb6 Mon Sep 17 00:00:00 2001 From: rmax Date: Mon, 3 Mar 2008 15:01:12 +0000 Subject: Fix mark and space parity on Linux --- ChangeLog | 5 +++++ unix/tclUnixChan.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 25626fd..dfc3ba5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-03-03 Reinhard Max + + * unix/tclUnixChan.c: Fix mark and space parity on Linux, which + uses CMSPAR instead of PAREXT. + 2008-02-27 Pat Thoyts * library/http/pkgIndex.tcl: Backported 2.5.5 changes from diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 5c4cb65..33b52b8 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.10 2006/11/28 16:29:48 kennykb Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.42.2.11 2008/03/03 15:01:14 rmax Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -96,6 +96,9 @@ # if !defined(CRTSCTS) && defined(CNEW_RTSCTS) # define CRTSCTS CNEW_RTSCTS # endif /* !CRTSCTS&CNEW_RTSCTS */ +# if !defined(PAREXT) && defined(CMSPAR) +# define PAREXT CMSPAR +# endif /* !PAREXT&&CMSPAR */ #else /* !USE_TERMIOS */ #ifdef USE_TERMIO -- cgit v0.12 From cd803d5fed6b3b5bbcf7198c48a646a464ffa12b Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 7 Mar 2008 19:10:01 +0000 Subject: * tests/execute.test (execute-6.8): Added tests checking that bytecode is invalidates in the right situations. --- ChangeLog | 5 ++ tests/execute.test | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 184 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index dfc3ba5..f4dbb91 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-03-07 Don Porter + + * tests/execute.test (execute-6.8): Added tests checking that + bytecode is invalidates in the right situations. + 2008-03-03 Reinhard Max * unix/tclUnixChan.c: Fix mark and space parity on Linux, which diff --git a/tests/execute.test b/tests/execute.test index 7883ffe..c7bd2fd 100644 --- a/tests/execute.test +++ b/tests/execute.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: execute.test,v 1.13.2.2 2004/10/28 00:01:07 dgp Exp $ +# RCS: @(#) $Id: execute.test,v 1.13.2.3 2008/03/07 19:10:03 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -585,12 +585,189 @@ test execute-6.1 {UpdateStringOfCmdName: called for duplicate of empty cmdName o } p } {} - test execute-6.2 {Evaluate an expression in a variable; compile the first time, do not the second} { set w {3*5} proc a {obj} {expr $obj} set res "[a $w]:[a $w]" } {15:15} +test execute-6.3 {Tcl_ExprObj: don't use cached script bytecode [Bug 1899164]} -setup { + proc 0+0 {} {return SCRIPT} +} -body { + set e { 0+0 } + if 1 $e + if 1 {expr $e} +} -cleanup { + rename 0+0 {} +} -result 0 +test execute-6.4 {TclCompEvalObj: don't use cached expr bytecode [Bug 1899164]} -setup { + proc 0+0 {} {return SCRIPT} +} -body { + set e { 0+0 } + if 1 {expr $e} + if 1 $e +} -cleanup { + rename 0+0 {} +} -result SCRIPT +test execute-6.5 {TclCompEvalObj: bytecode epoch validation} { + set script { llength {} } + set result {} + lappend result [if 1 $script] + set origName [namespace which llength] + rename $origName llength.orig + proc $origName {args} {return AHA!} + lappend result [if 1 $script] + rename $origName {} + rename llength.orig $origName + set result +} {0 AHA!} +test execute-6.6 {TclCompEvalObj: proc-body bytecode invalid for script} { + proc foo {} {set a 1} + set a untouched + set result {} + lappend result [foo] $a + lappend result [if 1 [info body foo]] $a + rename foo {} + set result +} {1 untouched 1 1} +test execute-6.7 {TclCompEvalObj: bytecode context validation} { + set script { llength {} } + namespace eval foo { + proc llength {args} {return AHA!} + } + set result {} + lappend result [if 1 $script] + lappend result [namespace eval foo $script] + namespace delete foo + set result +} {0 AHA!} +test execute-6.8 {TclCompEvalObj: bytecode name resolution epoch validation} { + set script { llength {} } + set result {} + lappend result [namespace eval foo $script] + namespace eval foo { + proc llength {args} {return AHA!} + } + lappend result [namespace eval foo $script] + namespace delete foo + set result +} {0 AHA!} +test execute-6.9 {TclCompEvalObj: bytecode interp validation} { + set script { llength {} } + interp create slave + slave eval {proc llength args {return AHA!}} + set result {} + lappend result [if 1 $script] + lappend result [slave eval $script] + interp delete slave + set result +} {0 AHA!} +test execute-6.10 {TclCompEvalObj: bytecode interp validation} { + set script { llength {} } + interp create slave + set result {} + lappend result [slave eval $script] + interp delete slave + interp create slave + lappend result [slave eval $script] + interp delete slave + set result +} {0 0} +test execute-6.11 {Tcl_ExprObj: exprcode interp validation} testexprlongobj { + set e { [llength {}]+1 } + set result {} + interp create slave + load {} Tcltest slave + interp alias {} e slave testexprlongobj + lappend result [e $e] + interp delete slave + interp create slave + load {} Tcltest slave + interp alias {} e slave testexprlongobj + lappend result [e $e] + interp delete slave + set result +} {{This is a result: 1} {This is a result: 1}} +test execute-6.12 {Tcl_ExprObj: exprcode interp validation} { + set e { [llength {}]+1 } + set result {} + interp create slave + interp alias {} e slave expr + lappend result [e $e] + interp delete slave + interp create slave + interp alias {} e slave expr + lappend result [e $e] + interp delete slave + set result +} {1 1} +test execute-6.13 {Tcl_ExprObj: exprcode epoch validation} { + set e { [llength {}]+1 } + set result {} + lappend result [expr $e] + set origName [namespace which llength] + rename $origName llength.orig + proc $origName {args} {return 1} + lappend result [expr $e] + rename $origName {} + rename llength.orig $origName + set result +} {1 2} +test execute-6.14 {Tcl_ExprObj: exprcode context validation} { + set e { [llength {}]+1 } + namespace eval foo { + proc llength {args} {return 1} + } + set result {} + lappend result [expr $e] + lappend result [namespace eval foo {expr $e}] + namespace delete foo + set result +} {1 2} +test execute-6.15 {Tcl_ExprObj: exprcode name resolution epoch validation} { + set e { [llength {}]+1 } + set result {} + lappend result [namespace eval foo {expr $e}] + namespace eval foo { + proc llength {args} {return 1} + } + lappend result [namespace eval foo {expr $e}] + namespace delete foo + set result +} {1 2} +test execute-6.16 {Tcl_ExprObj: exprcode interp validation} { + set e { [llength {}]+1 } + interp create slave + interp alias {} e slave expr + slave eval {proc llength args {return 1}} + set result {} + lappend result [expr $e] + lappend result [e $e] + interp delete slave + set result +} {1 2} +test execute-6.17 {Tcl_ExprObj: exprcode context validation} { + set e { $v } + proc foo e {set v 0; expr $e} + proc bar e {set v 1; expr $e} + set result {} + lappend result [foo $e] + lappend result [bar $e] + rename foo {} + rename bar {} + set result +} {0 1} +test execute-6.18 {Tcl_ExprObj: exprcode context validation} { + set e { [llength $v] } + proc foo e {set v {}; expr $e} + proc bar e {set v v; expr $e} + set result {} + lappend result [foo $e] + lappend result [bar $e] + rename foo {} + rename bar {} + set result +} {0 1} + test execute-7.0 {Wide int handling in INST_JUMP_FALSE/LAND} {longIs32bit} { set x 0x100000000 -- cgit v0.12 From ba2f16e25ec3ec55db446f05f90ecca28cc7cff8 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 7 Mar 2008 20:26:21 +0000 Subject: * generic/tclTest.c: Backport the [testexprlongobj] testing command. --- ChangeLog | 2 ++ generic/tclTest.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- tests/execute.test | 4 +++- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f4dbb91..565c679 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-03-07 Don Porter + * generic/tclTest.c: Backport the [testexprlongobj] testing command. + * tests/execute.test (execute-6.8): Added tests checking that bytecode is invalidates in the right situations. diff --git a/generic/tclTest.c b/generic/tclTest.c index 433444b..2b9bab0 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.14 2007/06/27 17:29:23 dgp Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.15 2008/03/07 20:26:22 dgp Exp $ */ #define TCL_TEST @@ -240,6 +240,9 @@ static int TestexithandlerCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int argc, CONST char **argv)); static int TestexprlongCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int argc, CONST char **argv)); +static int TestexprlongobjCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[])); static int TestexprparserObjCmd _ANSI_ARGS_((ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); @@ -613,6 +616,8 @@ Tcltest_Init(interp) (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testexprlong", TestexprlongCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); + Tcl_CreateObjCommand(interp, "testexprlongobj", TestexprlongobjCmd, + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateObjCommand(interp, "testexprparser", TestexprparserObjCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "testexprstring", TestexprstringCmd, @@ -2262,6 +2267,48 @@ TestexprlongCmd(clientData, interp, argc, argv) /* *---------------------------------------------------------------------- * + * TestexprlongobjCmd -- + * + * This procedure verifies that Tcl_ExprLongObj does not modify the + * interpreter result if there is no error. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +TestexprlongobjCmd(clientData, interp, objc, objv) + ClientData clientData; /* Not used. */ + Tcl_Interp *interp; /* Current interpreter. */ + int objc; /* Number of arguments. */ + Tcl_Obj *CONST *objv; /* Argument objects. */ +{ + long exprResult; + char buf[4 + TCL_INTEGER_SPACE]; + int result; + + if (objc != 2) { + Tcl_WrongNumArgs(interp, 1, objv, "expression"); + return TCL_ERROR; + } + Tcl_SetResult(interp, "This is a result", TCL_STATIC); + result = Tcl_ExprLongObj(interp, objv[1], &exprResult); + if (result != TCL_OK) { + return result; + } + sprintf(buf, ": %ld", exprResult); + Tcl_AppendResult(interp, buf, NULL); + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * * TestexprstringCmd -- * * This procedure tests the basic operation of Tcl_ExprString. diff --git a/tests/execute.test b/tests/execute.test index c7bd2fd..47ac562 100644 --- a/tests/execute.test +++ b/tests/execute.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: execute.test,v 1.13.2.3 2008/03/07 19:10:03 dgp Exp $ +# RCS: @(#) $Id: execute.test,v 1.13.2.4 2008/03/07 20:26:22 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -35,6 +35,8 @@ catch {unset msg} ::tcltest::testConstraint longIs32bit \ [expr {int(0x80000000) < 0}] +::tcltest::testConstraint testexprlongobj \ + [llength [info commands testexprlongobj]] # Tests for the omnibus TclExecuteByteCode function: -- cgit v0.12 From ad1d2528dc94c7a6c0033ee5c8bdec42e4d1063e Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 7 Mar 2008 21:10:07 +0000 Subject: * generic/tclExecute.c (Tcl_ExprObj): Revised expression bytecode compiling so that bytecodes invalid due to changing context or due to the difference between expressions and scripts are not reused. [Bug 1899164]. --- ChangeLog | 5 ++ generic/tclExecute.c | 134 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 108 insertions(+), 31 deletions(-) diff --git a/ChangeLog b/ChangeLog index 565c679..1f6439e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2008-03-07 Don Porter + * generic/tclExecute.c (Tcl_ExprObj): Revised expression bytecode + compiling so that bytecodes invalid due to changing context or due + to the difference between expressions and scripts are not reused. + [Bug 1899164]. + * generic/tclTest.c: Backport the [testexprlongobj] testing command. * tests/execute.test (execute-6.8): Added tests checking that diff --git a/generic/tclExecute.c b/generic/tclExecute.c index c0deb73..c258a94 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.22 2007/09/13 15:28:12 das Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.23 2008/03/07 21:10:09 dgp Exp $ */ #include "tclInt.h" @@ -356,6 +356,8 @@ long tclObjsShared[TCL_MAX_SHARED_OBJ_STATS] = { 0, 0, 0, 0, 0 }; static int TclExecuteByteCode _ANSI_ARGS_((Tcl_Interp *interp, ByteCode *codePtr)); +static void DupExprCodeInternalRep _ANSI_ARGS_((Tcl_Obj *srcPtr, + Tcl_Obj *copyPtr)); static int ExprAbsFunc _ANSI_ARGS_((Tcl_Interp *interp, ExecEnv *eePtr, ClientData clientData)); static int ExprBinaryFunc _ANSI_ARGS_((Tcl_Interp *interp, @@ -381,6 +383,7 @@ static int EvalStatsCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); #endif /* TCL_COMPILE_STATS */ +static void FreeExprCodeInternalRep _ANSI_ARGS_ ((Tcl_Obj *objPtr)); #ifdef TCL_COMPILE_DEBUG static char * GetOpcodeName _ANSI_ARGS_((unsigned char *pc)); #endif /* TCL_COMPILE_DEBUG */ @@ -405,6 +408,19 @@ static int VerifyExprObjType _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); /* + * The structure below defines a bytecode Tcl object type to hold the + * compiled bytecode for Tcl expressions. + */ + +static Tcl_ObjType exprCodeType = { + "exprcode", + FreeExprCodeInternalRep, /* freeIntRepProc */ + DupExprCodeInternalRep, /* dupIntRepProc */ + NULL, /* updateStringProc */ + NULL /* setFromAnyProc */ +}; + +/* * Table describing the built-in math functions. Entries in this table are * indexed by the values of the INST_CALL_BUILTIN_FUNC instruction's * operand byte. @@ -744,34 +760,31 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) } /* - * Get the ByteCode from the object. If it exists, make sure it hasn't - * been invalidated by, e.g., someone redefining a command with a - * compile procedure (this might make the compiled code wrong). If - * necessary, convert the object to be a ByteCode object and compile it. - * Also, if the code was compiled in/for a different interpreter, we - * recompile it. - * - * Precompiled expressions, however, are immutable and therefore - * they are not recompiled, even if the epoch has changed. - * + * Compile and execute the expression after saving the interp's result. + */ + + saveObjPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(saveObjPtr); + + /* + * Get the expression ByteCode from the object. If it exists, make sure it + * is valid in the curren context. */ - if (objPtr->typePtr == &tclByteCodeType) { + if (objPtr->typePtr == &exprCodeType) { + Namespace *namespacePtr = iPtr->varFramePtr ? + iPtr->varFramePtr->nsPtr : iPtr->globalNsPtr; + codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; if (((Interp *) *codePtr->interpHandle != iPtr) - || (codePtr->compileEpoch != iPtr->compileEpoch)) { - if (codePtr->flags & TCL_BYTECODE_PRECOMPILED) { - if ((Interp *) *codePtr->interpHandle != iPtr) { - panic("Tcl_ExprObj: compiled expression jumped interps"); - } - codePtr->compileEpoch = iPtr->compileEpoch; - } else { - (*tclByteCodeType.freeIntRepProc)(objPtr); - objPtr->typePtr = (Tcl_ObjType *) NULL; - } + || (codePtr->compileEpoch != iPtr->compileEpoch) + || (codePtr->nsPtr != namespacePtr) + || (codePtr->nsEpoch != namespacePtr->resolverEpoch)) { + objPtr->typePtr->freeIntRepProc(objPtr); + objPtr->typePtr = (Tcl_ObjType *) NULL; } } - if (objPtr->typePtr != &tclByteCodeType) { + if (objPtr->typePtr != &exprCodeType) { #ifndef TCL_TIP280 TclInitCompileEnv(interp, &compEnv, string, length); #else @@ -836,6 +849,7 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) compEnv.numSrcBytes = iPtr->termOffset; TclEmitOpcode(INST_DONE, &compEnv); TclInitByteCodeObj(objPtr, &compEnv); + objPtr->typePtr = &exprCodeType; TclFreeCompileEnv(&compEnv); codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; #ifdef TCL_COMPILE_DEBUG @@ -845,12 +859,6 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) #endif /* TCL_COMPILE_DEBUG */ } - /* - * Execute the expression after first saving the interpreter's result. - */ - - saveObjPtr = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(saveObjPtr); Tcl_ResetResult(interp); /* @@ -863,8 +871,6 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) codePtr->refCount--; if (codePtr->refCount <= 0) { TclCleanupByteCode(codePtr); - objPtr->typePtr = NULL; - objPtr->internalRep.otherValuePtr = NULL; } /* @@ -889,6 +895,72 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) /* *---------------------------------------------------------------------- * + * DupExprCodeInternalRep -- + * + * Part of the Tcl object type implementation for Tcl expression + * bytecode. We do not copy the bytecode intrep. Instead, we + * return with setting copyPtr->typePtr, so the copy is a plain + * string copy of the expression value, and if it is to be used + * as a compiled expression, it will just need a recompile. + * + * This makes sense, because with Tcl's copy-on-write practices, + * the usual (only?) time Tcl_DuplicateObj() will be called is + * when the copy is about to be modified, which would invalidate + * any copied bytecode anyway. The only reason it might make sense + * to copy the bytecode is if we had some modifying routines that + * operated directly on the intrep, like we do for lists and dicts. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +DupExprCodeInternalRep( + Tcl_Obj *srcPtr, + Tcl_Obj *copyPtr) +{ + return; +} + +/* + *---------------------------------------------------------------------- + * + * FreeExprCodeInternalRep -- + * + * Part of the Tcl object type implementation for Tcl expression + * bytecode. Frees the storage allocated to hold the internal rep, + * unless ref counts indicate bytecode execution is still in progress. + * + * Results: + * None. + * + * Side effects: + * May free allocated memory. Leaves objPtr untyped. + *---------------------------------------------------------------------- + */ + +static void +FreeExprCodeInternalRep( + Tcl_Obj *objPtr) +{ + ByteCode *codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; + + codePtr->refCount--; + if (codePtr->refCount <= 0) { + TclCleanupByteCode(codePtr); + } + objPtr->typePtr = NULL; + objPtr->internalRep.otherValuePtr = NULL; +} + +/* + *---------------------------------------------------------------------- + * * TclCompEvalObj -- * * This procedure evaluates the script contained in a Tcl_Obj by -- cgit v0.12 From 7223803e14a2d1cc68da29b1919c9505c6095852 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 10 Mar 2008 14:34:33 +0000 Subject: typo --- generic/tclExecute.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generic/tclExecute.c b/generic/tclExecute.c index c258a94..5bf2fd7 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.23 2008/03/07 21:10:09 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.24 2008/03/10 14:34:33 dgp Exp $ */ #include "tclInt.h" @@ -768,7 +768,7 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) /* * Get the expression ByteCode from the object. If it exists, make sure it - * is valid in the curren context. + * is valid in the current context. */ if (objPtr->typePtr == &exprCodeType) { @@ -899,7 +899,7 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) * * Part of the Tcl object type implementation for Tcl expression * bytecode. We do not copy the bytecode intrep. Instead, we - * return with setting copyPtr->typePtr, so the copy is a plain + * return without setting copyPtr->typePtr, so the copy is a plain * string copy of the expression value, and if it is to be used * as a compiled expression, it will just need a recompile. * -- cgit v0.12 From b85919a586fb92b2e24b97ab1f7c5eb908acec4b Mon Sep 17 00:00:00 2001 From: das Date: Tue, 11 Mar 2008 23:52:31 +0000 Subject: * macosx/tclMacOSXNotify.c: avoid using CoreFoundation after fork() on Darwin 9 even when TclpCreateProcess() uses vfork(). --- ChangeLog | 5 +++++ macosx/tclMacOSXNotify.c | 10 +++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1f6439e..5e4bc52 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-03-11 Daniel Steffen + + * macosx/tclMacOSXNotify.c: avoid using CoreFoundation after fork() on + Darwin 9 even when TclpCreateProcess() uses vfork(). + 2008-03-07 Don Porter * generic/tclExecute.c (Tcl_ExprObj): Revised expression bytecode diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index 2f9c62a..7fb8774 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -7,12 +7,12 @@ * * Copyright (c) 1995-1997 Sun Microsystems, Inc. * Copyright 2001, Apple Computer, Inc. - * Copyright (c) 2005-2007 Daniel A. Steffen + * Copyright (c) 2005-2008 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.14 2007/08/11 03:12:07 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.15 2008/03/11 23:52:35 das Exp $ */ #include "tclInt.h" @@ -289,9 +289,8 @@ static void AtForkChild(void); extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)) WEAK_IMPORT_ATTRIBUTE; #endif /* HAVE_WEAK_IMPORT */ -#ifdef __LP64__ /* - * On 64bit Darwin 9 and later, it is not possible to call CoreFoundation after + * On Darwin 9 and later, it is not possible to call CoreFoundation after * a fork. */ #if !defined(MAC_OS_X_VERSION_MIN_REQUIRED) || \ @@ -301,9 +300,6 @@ MODULE_SCOPE long tclMacOSXDarwinRelease; #else /* MAC_OS_X_VERSION_MIN_REQUIRED */ #define noCFafterFork 1 #endif /* MAC_OS_X_VERSION_MIN_REQUIRED */ -#else /* __LP64__ */ -#define noCFafterFork 0 -#endif /* __LP64__ */ #endif /* HAVE_PTHREAD_ATFORK */ /* -- cgit v0.12 From 01501cb37ad2ea7f8f79ec764861ad9f30c288db Mon Sep 17 00:00:00 2001 From: patthoyts Date: Mon, 24 Mar 2008 03:05:06 +0000 Subject: Backported fix for #1923966 --- ChangeLog | 5 +++++ generic/tclBinary.c | 6 ++++-- tests/binary.test | 20 +++++++++++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5e4bc52..3c2e703 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-03-24 Pat Thoyts + + * generic/tclBinary.c: bug #1923966 - crash in binary format + * tests/binary.test: Added tests for the above crash condition. + 2008-03-11 Daniel Steffen * macosx/tclMacOSXNotify.c: avoid using CoreFoundation after fork() on diff --git a/generic/tclBinary.c b/generic/tclBinary.c index b5bd3ff..fb47015 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBinary.c,v 1.13.2.5 2007/06/30 13:56:23 dkf Exp $ + * RCS: @(#) $Id: tclBinary.c,v 1.13.2.6 2008/03/24 03:05:07 patthoyts Exp $ */ #include "tclInt.h" @@ -793,7 +793,9 @@ Tcl_BinaryObjCmd(dummy, interp, objc, objv) break; } if ((count == 0) && (cmd != '@')) { - arg++; + if (cmd != 'x') { + arg++; + } continue; } switch (cmd) { diff --git a/tests/binary.test b/tests/binary.test index fb137db..d06907e 100644 --- a/tests/binary.test +++ b/tests/binary.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: binary.test,v 1.11.2.4 2006/04/05 15:17:06 dgp Exp $ +# RCS: @(#) $Id: binary.test,v 1.11.2.5 2008/03/24 03:05:07 patthoyts Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -549,6 +549,24 @@ test binary-15.3 {Tcl_BinaryObjCmd: format} { test binary-15.4 {Tcl_BinaryObjCmd: format} { binary format a*X3x3a* "foo" "z" } \x00\x00\x00z +test binary-15.5 {Tcl_BinaryObjCmd: format - bug #1923966} { + binary format x0s 1 +} \x01\x00 +test binary-15.6 {Tcl_BinaryObjCmd: format - bug #1923966} { + binary format x0ss 1 1 +} \x01\x00\x01\x00 +test binary-15.5 {Tcl_BinaryObjCmd: format - bug #1923966} { + binary format x0s 1 +} \x01\x00 +test binary-15.6 {Tcl_BinaryObjCmd: format - bug #1923966} { + binary format x0ss 1 1 +} \x01\x00\x01\x00 +test binary-15.7 {Tcl_BinaryObjCmd: format - bug #1923966} { + binary format x1s 1 +} \x00\x01\x00 +test binary-15.8 {Tcl_BinaryObjCmd: format - bug #1923966} { + binary format x1ss 1 1 +} \x00\x01\x00\x01\x00 test binary-16.1 {Tcl_BinaryObjCmd: format} { binary format a*X*a "foo" "z" -- cgit v0.12 From 48293ac42733b2945e7d27a734b388e7fdc858a7 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 27 Mar 2008 13:40:59 +0000 Subject: * unix/tcl.m4 (SunOS-5.1x): fix 64bit support for Sun cc. [Bug 1921166] --- ChangeLog | 8 ++++++++ unix/tcl.m4 | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3c2e703..b0457ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-03-27 Daniel Steffen + + * unix/tcl.m4 (SunOS-5.1x): fix 64bit support for Sun cc. [Bug 1921166] + + * unix/dltest/Makefile.in: support use of LDFLAGS in SHLIB_LD. + + * unix/configure: autoconf-2.13 + 2008-03-24 Pat Thoyts * generic/tclBinary.c: bug #1923966 - crash in binary format diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 51809fd..b2508fd 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1926,7 +1926,7 @@ dnl AC_CHECK_TOOL(AR, ar) else case $system in SunOS-5.[[1-9]][[0-9]]*) - SHLIB_LD='${CC} -G -z text';; + SHLIB_LD='${CC} -G -z text ${LDFLAGS}';; *) SHLIB_LD="/usr/ccs/bin/ld -G -z text";; esac -- cgit v0.12 From ee33907233fa2dc1ea507d875f1ccdd92b7fd6bf Mon Sep 17 00:00:00 2001 From: das Date: Thu, 27 Mar 2008 13:41:58 +0000 Subject: * unix/dltest/Makefile.in: support use of LDFLAGS in SHLIB_LD. --- unix/dltest/Makefile.in | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/unix/dltest/Makefile.in b/unix/dltest/Makefile.in index 64a60f8..5fed8c8 100644 --- a/unix/dltest/Makefile.in +++ b/unix/dltest/Makefile.in @@ -1,7 +1,7 @@ # This Makefile is used to create several test cases for Tcl's load # command. It also illustrates how to take advantage of configuration # exported by Tcl to set up Makefiles for shared libraries. -# RCS: @(#) $Id: Makefile.in,v 1.11.2.2 2004/09/23 20:04:07 mdejong Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.11.2.3 2008/03/27 13:41:58 das Exp $ TCL_DBGX = @TCL_DBGX@ CC = @CC@ @@ -16,8 +16,11 @@ TCL_VERSION= @TCL_VERSION@ CFLAGS_DEBUG = @CFLAGS_DEBUG@ CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@ +CFLAGS = @CFLAGS_DEFAULT@ @CFLAGS@ +LDFLAGS_DEBUG = @LDFLAGS_DEBUG@ +LDFLAGS_OPTIMIZE = @LDFLAGS_OPTIMIZE@ +LDFLAGS = @LDFLAGS_DEFAULT@ @LDFLAGS@ -CFLAGS = @CFLAGS@ @CFLAGS_DEFAULT@ CC_SWITCHES = $(CFLAGS) -I${SRC_DIR}/../../generic -DTCL_MEM_DEBUG \ ${SHLIB_CFLAGS} -DUSE_TCL_STUBS ${AC_FLAGS} -- cgit v0.12 From 8eb8bbbca962b566d0e2525965e62f46a59e5b8c Mon Sep 17 00:00:00 2001 From: das Date: Thu, 27 Mar 2008 13:42:17 +0000 Subject: * unix/configure: autoconf-2.13 --- unix/configure | 39 ++++++++++----------------------------- 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/unix/configure b/unix/configure index 3b068af..a9de1af 100755 --- a/unix/configure +++ b/unix/configure @@ -3996,7 +3996,7 @@ EOF else case $system in SunOS-5.[1-9][0-9]*) - SHLIB_LD='${CC} -G -z text';; + SHLIB_LD='${CC} -G -z text ${LDFLAGS}';; *) SHLIB_LD="/usr/ccs/bin/ld -G -z text";; esac @@ -9442,34 +9442,15 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs # Without the "./", some shells look in PATH for config.status. -- cgit v0.12 From b8f08b6a474598d1f1ccf29ff84ad90eb5aa329c Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 31 Mar 2008 17:21:13 +0000 Subject: merge updates from HEAD --- ChangeLog | 17 +++++++++++++ generic/tclInt.h | 14 +++++++---- generic/tclObj.c | 3 ++- tests/mathop.test | 6 ++--- unix/configure | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++ unix/configure.in | 14 ++++++++++- unix/tclConfig.h.in | 3 +++ 7 files changed, 116 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9294744..e183ba5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2008-03-30 Kevin Kenny + + * generic/tclInt.h (TclIsNaN): + * unix/configure.in: Added code to the configurator to check for + a standard isnan() macro and use it if one + is found. This change avoids bugs where + the test of ((d) != (d)) is optimized away + by an overaggressive compiler. [Bug 1783544] + * generic/tclObj.c: Added missing #include needed to + locate isnan() after the above change. + + * unix/configure: autoconf-2.61 + + * tests/mathop.test (mathop-25.9, mathop-25.14): Modified tests + to deal with (slightly buggy) math libraries in which pow() + returns an incorrectly rounded result. [Bug 1808174] + 2008-03-26 Don Porter *** 8.5.2 TAGGED FOR RELEASE *** diff --git a/generic/tclInt.h b/generic/tclInt.h index 23c8adb..8a71b59 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362 2008/01/23 21:32:36 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.1 2008/03/31 17:21:14 dgp Exp $ */ #ifndef _TCLINT @@ -3768,11 +3768,15 @@ MODULE_SCOPE void TclBNInitBignumFromWideUInt(mp_int *bignum, */ #ifdef _MSC_VER -#define TclIsInfinite(d) ( ! (_finite((d))) ) -#define TclIsNaN(d) (_isnan((d))) +# define TclIsInfinite(d) ( ! (_finite((d))) ) +# define TclIsNaN(d) (_isnan((d))) #else -#define TclIsInfinite(d) ( (d) > DBL_MAX || (d) < -DBL_MAX ) -#define TclIsNaN(d) ((d) != (d)) +# define TclIsInfinite(d) ( (d) > DBL_MAX || (d) < -DBL_MAX ) +# ifdef NO_ISNAN +# define TclIsNaN(d) ((d) != (d)) +# else +# define TclIsNaN(d) (isnan(d)) +# endif #endif /* diff --git a/generic/tclObj.c b/generic/tclObj.c index 0b2fddb..700b112 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,12 +13,13 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.139 2007/12/13 15:23:19 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.139.2.1 2008/03/31 17:21:15 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" #include +#include /* * Table of all object types. diff --git a/tests/mathop.test b/tests/mathop.test index c4dced5..b60b29d 100644 --- a/tests/mathop.test +++ b/tests/mathop.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: mathop.test,v 1.11 2007/12/13 15:26:06 dgp Exp $ +# RCS: @(#) $Id: mathop.test,v 1.11.2.1 2008/03/31 17:21:15 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -1202,12 +1202,12 @@ test mathop-25.5 { exp operator } {TestOp ** 1 5} 1 test mathop-25.6 { exp operator } {TestOp ** 5 1} 5 test mathop-25.7 { exp operator } {TestOp ** 4 3 2 1} 262144 test mathop-25.8 { exp operator } {TestOp ** 5.5 4} 915.0625 -test mathop-25.9 { exp operator } {TestOp ** 6 3.5} 529.0897844411664 +test mathop-25.9 { exp operator } {TestOp ** 16 3.5} 16384.0 test mathop-25.10 { exp operator } {TestOp ** 3.5 0} 1.0 test mathop-25.11 { exp operator } {TestOp ** 378 0} 1 test mathop-25.12 { exp operator } {TestOp ** 7.8 1} 7.8 test mathop-25.13 { exp operator } {TestOp ** 748 1} 748 -test mathop-25.14 { exp operator } {TestOp ** 6.3 -1} 0.15873015873015872 +test mathop-25.14 { exp operator } {TestOp ** 1.6 -1} 0.625 test mathop-25.15 { exp operator } {TestOp ** 683 -1} 0 test mathop-25.16 { exp operator } {TestOp ** 1 -1} 1 test mathop-25.17 { exp operator } {TestOp ** -1 -1} -1 diff --git a/unix/configure b/unix/configure index 099969b..697cf0d 100755 --- a/unix/configure +++ b/unix/configure @@ -16650,6 +16650,75 @@ done #-------------------------------------------------------------------- +# Check for support of isnan() function or macro +#-------------------------------------------------------------------- + +echo "$as_me:$LINENO: checking isnan" >&5 +echo $ECHO_N "checking isnan... $ECHO_C" >&6 +if test "${tcl_cv_isnan+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + +isnan(0.0); /* Generates an error if isnan is missing */ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + tcl_cv_isnan=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_isnan=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $tcl_cv_isnan" >&5 +echo "${ECHO_T}$tcl_cv_isnan" >&6 +if test $tcl_cv_isnan = no; then + +cat >>confdefs.h <<\_ACEOF +#define NO_ISNAN 1 +_ACEOF + +fi + +#-------------------------------------------------------------------- # Darwin specific API checks and defines #-------------------------------------------------------------------- diff --git a/unix/configure.in b/unix/configure.in index 82e68da..fb777b2 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180 2008/03/28 17:31:47 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.1 2008/03/31 17:21:18 dgp Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -492,6 +492,18 @@ SC_ENABLE_LANGINFO AC_CHECK_FUNCS(chflags) #-------------------------------------------------------------------- +# Check for support of isnan() function or macro +#-------------------------------------------------------------------- + +AC_CACHE_CHECK([isnan], tcl_cv_isnan, [ + AC_TRY_LINK([#include ], [ +isnan(0.0); /* Generates an error if isnan is missing */ +], tcl_cv_isnan=yes, tcl_cv_isnan=no)]) +if test $tcl_cv_isnan = no; then + AC_DEFINE(NO_ISNAN, 1, [Do we have a usable 'isnan'?]) +fi + +#-------------------------------------------------------------------- # Darwin specific API checks and defines #-------------------------------------------------------------------- diff --git a/unix/tclConfig.h.in b/unix/tclConfig.h.in index 986c721..179f68a 100644 --- a/unix/tclConfig.h.in +++ b/unix/tclConfig.h.in @@ -289,6 +289,9 @@ /* Do we have getwd() */ #undef NO_GETWD +/* Do we have a usable 'isnan'? */ +#undef NO_ISNAN + /* Do we have ? */ #undef NO_LIMITS_H -- cgit v0.12 From bf5d97242b6f536923ad5dff2f2835cf019d336f Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 1 Apr 2008 19:20:55 +0000 Subject: * generic/tclStubLib.c (Tcl_InitStubs): Added missing error message. --- ChangeLog | 4 ++++ generic/tclStubLib.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e183ba5..75488bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-04-01 Don Porter + + * generic/tclStubLib.c (Tcl_InitStubs): Added missing error message. + 2008-03-30 Kevin Kenny * generic/tclInt.h (TclIsNaN): diff --git a/generic/tclStubLib.c b/generic/tclStubLib.c index 3457307..117e5cd 100644 --- a/generic/tclStubLib.c +++ b/generic/tclStubLib.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubLib.c,v 1.21 2007/12/13 15:23:20 dgp Exp $ + * RCS: @(#) $Id: tclStubLib.c,v 1.21.2.1 2008/04/01 19:21:06 dgp Exp $ */ /* @@ -123,6 +123,8 @@ Tcl_InitStubs( p++; q++; } if (*p) { + /* Construct error message */ + Tcl_PkgRequireEx(interp, "Tcl", version, 1, NULL); return NULL; } } else { -- cgit v0.12 From 353bf57ae4b468d9b9893f9fbf85b5994d100f0d Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 1 Apr 2008 19:31:09 +0000 Subject: * generic/tclStubLib.c (Tcl_InitStubs): Added missing error message. * generic/tclPkg.c (Tcl_PkgInitStubsCheck): --- ChangeLog | 1 + generic/tclPkg.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 75488bd..3221263 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2008-04-01 Don Porter * generic/tclStubLib.c (Tcl_InitStubs): Added missing error message. + * generic/tclPkg.c (Tcl_PkgInitStubsCheck): 2008-03-30 Kevin Kenny diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 8f9ec50..fe23fd2 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.34 2007/12/13 15:23:20 dgp Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.34.2.1 2008/04/01 19:31:12 dgp Exp $ * * TIP #268. * Heavily rewritten to handle the extend version numbers, and extended @@ -1868,6 +1868,8 @@ Tcl_PkgInitStubsCheck( } if (count == 1) { if (0 != strncmp(version, actualVersion, strlen(version))) { + /* Construct error message */ + Tcl_PkgPresent(interp, "Tcl", version, 1); return NULL; } } else { -- cgit v0.12 From bed7b13fd799aa21ec8050caed5b225fdcad7679 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 1 Apr 2008 20:11:51 +0000 Subject: * generic/tclStrToD.c: Applied patch for [Bug 1839067] (fp * unix/tcl.m4: rounding setup on solaris x86, native cc), provided * unix/configure: by Michael Schlenker. configure regen'd. --- ChangeLog | 6 ++ generic/tclStrToD.c | 21 +++++- unix/configure | 181 +++++++++++++++++++++++++++++++++++++++++++++++++++- unix/tcl.m4 | 27 +++++++- 4 files changed, 229 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3221263..3171237 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-04-01 Andreas Kupries + + * generic/tclStrToD.c: Applied patch for [Bug 1839067] (fp + * unix/tcl.m4: rounding setup on solaris x86, native cc), provided + * unix/configure: by Michael Schlenker. configure regen'd. + 2008-04-01 Don Porter * generic/tclStubLib.c (Tcl_InitStubs): Added missing error message. diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index e5e863b..c47c5f8 100755 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStrToD.c,v 1.33 2008/03/13 17:14:19 dgp Exp $ + * RCS: @(#) $Id: tclStrToD.c,v 1.33.2.1 2008/04/01 20:12:01 andreas_kupries Exp $ * *---------------------------------------------------------------------- */ @@ -61,6 +61,13 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__))); # define ADJUST_FPU_CONTROL_WORD #endif +/* Sun ProC needs sunmath for rounding control on x86 like gcc above. + * + * + */ +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) +#include +#endif /* * HP's PA_RISC architecture uses 7ff4000000000000 to represent a quiet NaN. * Everyone else uses 7ff8000000000000. (Why, HP, why?) @@ -1309,6 +1316,9 @@ MakeLowPrecisionDouble( _FPU_GETCW(oldRoundingMode); _FPU_SETCW(roundTo53Bits); #endif +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) + ieee_flags("set","precision","double",NULL); +#endif /* * Test for the easy cases. @@ -1381,6 +1391,9 @@ MakeLowPrecisionDouble( #if defined(__GNUC__) && defined(__i386) _FPU_SETCW(oldRoundingMode); #endif +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) + ieee_flags("clear","precision",NULL,NULL); +#endif return retval; } @@ -1427,6 +1440,9 @@ MakeHighPrecisionDouble( _FPU_GETCW(oldRoundingMode); _FPU_SETCW(roundTo53Bits); #endif +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) + ieee_flags("set","precision","double",NULL); +#endif /* * Quick checks for over/underflow. @@ -1485,6 +1501,9 @@ MakeHighPrecisionDouble( #if defined(__GNUC__) && defined(__i386) _FPU_SETCW(oldRoundingMode); #endif +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) + ieee_flags("clear","precision",NULL,NULL); +#endif return retval; } diff --git a/unix/configure b/unix/configure index 697cf0d..983bbef 100755 --- a/unix/configure +++ b/unix/configure @@ -8452,6 +8452,175 @@ fi fi + #-------------------------------------------------------------------- + # On Solaris 5.x i386 with the sunpro compiler we need to link + # with sunmath to get floating point rounding control + #-------------------------------------------------------------------- + if test "$GCC" = yes; then + use_sunmath=no +else + + arch=`isainfo` + echo "$as_me:$LINENO: checking whether to use -lsunmath for fp rounding control" >&5 +echo $ECHO_N "checking whether to use -lsunmath for fp rounding control... $ECHO_C" >&6 + if test "$arch" = "amd64 i386"; then + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + MATH_LIBS="-lsunmath $MATH_LIBS" + if test "${ac_cv_header_sunmath_h+set}" = set; then + echo "$as_me:$LINENO: checking for sunmath.h" >&5 +echo $ECHO_N "checking for sunmath.h... $ECHO_C" >&6 +if test "${ac_cv_header_sunmath_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sunmath_h" >&5 +echo "${ECHO_T}$ac_cv_header_sunmath_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking sunmath.h usability" >&5 +echo $ECHO_N "checking sunmath.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking sunmath.h presence" >&5 +echo $ECHO_N "checking sunmath.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: sunmath.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: sunmath.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: sunmath.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: sunmath.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: sunmath.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: sunmath.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: sunmath.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: sunmath.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: sunmath.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: sunmath.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: sunmath.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: sunmath.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: sunmath.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sunmath.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: sunmath.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: sunmath.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------ ## +## Report this to the tcl lists. ## +## ------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for sunmath.h" >&5 +echo $ECHO_N "checking for sunmath.h... $ECHO_C" >&6 +if test "${ac_cv_header_sunmath_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_sunmath_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sunmath_h" >&5 +echo "${ECHO_T}$ac_cv_header_sunmath_h" >&6 + +fi + + + use_sunmath=yes + +else + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + use_sunmath=no + +fi + + +fi + + # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. @@ -8459,6 +8628,8 @@ fi SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" + + if test "$GCC" = yes; then SHLIB_LD='${CC} -shared' @@ -8479,11 +8650,17 @@ fi else + if test "$use_sunmath" = yes; then + textmode=textoff +else + textmode=text +fi + case $system in SunOS-5.[1-9][0-9]*) - SHLIB_LD='${CC} -G -z text ${LDFLAGS}';; + SHLIB_LD="${CC} -G -z $textmode \${LDFLAGS}";; *) - SHLIB_LD='/usr/ccs/bin/ld -G -z text';; + SHLIB_LD="/usr/ccs/bin/ld -G -z $textmode";; esac CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 0b69ba0..2ac40da 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1930,6 +1930,24 @@ dnl AC_CHECK_TOOL(AR, ar) ]) ], [AC_MSG_WARN([64bit mode not supported for $arch])])]) ]) + + #-------------------------------------------------------------------- + # On Solaris 5.x i386 with the sunpro compiler we need to link + # with sunmath to get floating point rounding control + #-------------------------------------------------------------------- + AS_IF([test "$GCC" = yes],[use_sunmath=no],[ + arch=`isainfo` + AC_MSG_CHECKING([whether to use -lsunmath for fp rounding control]) + AS_IF([test "$arch" = "amd64 i386"], [ + AC_MSG_RESULT([yes]) + MATH_LIBS="-lsunmath $MATH_LIBS" + AC_CHECK_HEADER(sunmath.h) + use_sunmath=yes + ], [ + AC_MSG_RESULT([no]) + use_sunmath=no + ]) + ]) # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. @@ -1938,6 +1956,8 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" + + AS_IF([test "$GCC" = yes], [ SHLIB_LD='${CC} -shared' CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' @@ -1952,11 +1972,12 @@ dnl AC_CHECK_TOOL(AR, ar) #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" ]) ], [ + AS_IF([test "$use_sunmath" = yes], [textmode=textoff],[textmode=text]) case $system in SunOS-5.[[1-9]][[0-9]]*) - SHLIB_LD='${CC} -G -z text ${LDFLAGS}';; + SHLIB_LD="${CC} -G -z $textmode \${LDFLAGS}";; *) - SHLIB_LD='/usr/ccs/bin/ld -G -z text';; + SHLIB_LD="/usr/ccs/bin/ld -G -z $textmode";; esac CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' @@ -2596,7 +2617,7 @@ AC_DEFUN([SC_TCL_LINK_LIBS], [ AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm") AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"]) - + #-------------------------------------------------------------------- # Interactive UNIX requires -linet instead of -lsocket, plus it # needs net/errno.h to define the socket-related error codes. -- cgit v0.12 From 798cf29e855e11acbd45235db5051766ab811a59 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 1 Apr 2008 21:40:44 +0000 Subject: (SunOS-5.1x): quote CC var to allow make-time override sync with tk/unix/tcl.m4 changes --- unix/tcl.m4 | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 2ac40da..bf1c524 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1454,10 +1454,6 @@ dnl AC_CHECK_TOOL(AR, ar) # files in compat/*.c is being linked in. AS_IF([test x"${USE_COMPAT}" != x],[CFLAGS="$CFLAGS -fno-inline"]) - - # XIM peeking works under XFree86. - AC_DEFINE(PEEK_XCLOSEIM, 1, [May we use XIM peeking safely?]) - ;; GNU*) SHLIB_CFLAGS="-fPIC" @@ -1975,7 +1971,7 @@ dnl AC_CHECK_TOOL(AR, ar) AS_IF([test "$use_sunmath" = yes], [textmode=textoff],[textmode=text]) case $system in SunOS-5.[[1-9]][[0-9]]*) - SHLIB_LD="${CC} -G -z $textmode \${LDFLAGS}";; + SHLIB_LD="\${CC} -G -z $textmode \${LDFLAGS}";; *) SHLIB_LD="/usr/ccs/bin/ld -G -z $textmode";; esac -- cgit v0.12 From 89297c0a6222043b078994cfb523d92050dbb049 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 1 Apr 2008 21:41:35 +0000 Subject: autoconf-2.59 --- unix/configure | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/unix/configure b/unix/configure index 983bbef..3dbc436 100755 --- a/unix/configure +++ b/unix/configure @@ -7439,14 +7439,6 @@ fi CFLAGS="$CFLAGS -fno-inline" fi - - # XIM peeking works under XFree86. - -cat >>confdefs.h <<\_ACEOF -#define PEEK_XCLOSEIM 1 -_ACEOF - - ;; GNU*) SHLIB_CFLAGS="-fPIC" @@ -8658,7 +8650,7 @@ fi case $system in SunOS-5.[1-9][0-9]*) - SHLIB_LD="${CC} -G -z $textmode \${LDFLAGS}";; + SHLIB_LD="\${CC} -G -z $textmode \${LDFLAGS}";; *) SHLIB_LD="/usr/ccs/bin/ld -G -z $textmode";; esac -- cgit v0.12 From 8fe157d02d51878a3d019c9cf490db9739d13b71 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 1 Apr 2008 21:42:09 +0000 Subject: autoheader-2.59 --- unix/tclConfig.h.in | 3 --- 1 file changed, 3 deletions(-) diff --git a/unix/tclConfig.h.in b/unix/tclConfig.h.in index 179f68a..8848a62 100644 --- a/unix/tclConfig.h.in +++ b/unix/tclConfig.h.in @@ -340,9 +340,6 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* May we use XIM peeking safely? */ -#undef PEEK_XCLOSEIM - /* Is this a static build? */ #undef STATIC_BUILD -- cgit v0.12 From 5d04951fcf71ab20d6f470ec05cd5edae97f31a0 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 2 Apr 2008 20:27:06 +0000 Subject: * generic/tclIO.c (CopyData): Applied patch for the fcopy problem [Bug 780533], with many thanks to Alexandre Ferrieux for tracking it down and providing a solution. Still have to convert his test script into a proper test case. --- ChangeLog | 8 ++++++++ generic/tclIO.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3171237..f78f29c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-04-02 Andreas Kupries + + * generic/tclIO.c (CopyData): Applied patch for the fcopy problem + [Bug 780533], with many thanks to Alexandre Ferrieux + for tracking it down and + providing a solution. Still have to convert his test script into + a proper test case. + 2008-04-01 Andreas Kupries * generic/tclStrToD.c: Applied patch for [Bug 1839067] (fp diff --git a/generic/tclIO.c b/generic/tclIO.c index 4caa474..8222681 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137 2008/01/20 21:16:15 hobbs Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.1 2008/04/02 20:27:08 andreas_kupries Exp $ */ #include "tclInt.h" @@ -8731,7 +8731,7 @@ CopyData( * don't starve the rest of the system. */ - if (cmdPtr) { + if (cmdPtr && (csPtr->toRead != 0)) { /* * The first time we enter this code, there won't be a channel * handler established yet, so do it here. -- cgit v0.12 From 51e0552038c3bb5c4a3e2478a505cc69913730df Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 2 Apr 2008 20:27:55 +0000 Subject: * generic/tclIO.c (CopyData): Applied patch for the fcopy problem [Bug 780533], with many thanks to Alexandre Ferrieux for tracking it down and providing a solution. Still have to convert his test script into a proper test case. --- ChangeLog | 8 ++++++++ generic/tclIO.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b0457ad..605e0dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-04-02 Andreas Kupries + + * generic/tclIO.c (CopyData): Applied patch for the fcopy problem + [Bug 780533], with many thanks to Alexandre Ferrieux + for tracking it down and + providing a solution. Still have to convert his test script into + a proper test case. + 2008-03-27 Daniel Steffen * unix/tcl.m4 (SunOS-5.1x): fix 64bit support for Sun cc. [Bug 1921166] diff --git a/generic/tclIO.c b/generic/tclIO.c index 53824b0..bf5eed5 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.23 2007/05/24 19:31:55 dgp Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.24 2008/04/02 20:27:58 andreas_kupries Exp $ */ #include "tclInt.h" @@ -7965,7 +7965,7 @@ CopyData(csPtr, mask) * we don't starve the rest of the system. */ - if (cmdPtr) { + if (cmdPtr && (csPtr->toRead != 0)) { /* * The first time we enter this code, there won't be a * channel handler established yet, so do it here. -- cgit v0.12 From f22c720323ae972ba91834691c7c0ad1b800d2df Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 3 Apr 2008 18:06:23 +0000 Subject: * generic/tclIO.c (CopyData): Applied patch [Bug 1932639] to * tests/io.test: prevent fcopy from calling -command synchronously * tests/chanio.test: the first time. Thanks to Alexandre Ferrieux for report and patch. --- ChangeLog | 7 +++++++ generic/tclIO.c | 38 ++++++++++++++++++++++++-------------- tests/chanio.test | 47 ++++++++++++++++++++++++++++++++++++++++++++++- tests/io.test | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 123 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index f78f29c..5d06fc1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-04-03 Andreas Kupries + + * generic/tclIO.c (CopyData): Applied patch [Bug 1932639] to + * tests/io.test: prevent fcopy from calling -command synchronously + * tests/chanio.test: the first time. Thanks to Alexandre Ferrieux + for report and patch. + 2008-04-02 Andreas Kupries * generic/tclIO.c (CopyData): Applied patch for the fcopy problem diff --git a/generic/tclIO.c b/generic/tclIO.c index 8222681..eadd56b 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.1 2008/04/02 20:27:08 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.2 2008/04/03 18:06:24 andreas_kupries Exp $ */ #include "tclInt.h" @@ -8578,23 +8578,33 @@ CopyData( goto writeError; } - /* - * Read up to bufSize bytes. - */ + if (cmdPtr && (mask == 0)) { + /* + * In async mode, we skip reading synchronously and fake an + * underflow instead to prime the readable fileevent. + */ - if ((csPtr->toRead == -1) || (csPtr->toRead > csPtr->bufSize)) { - sizeb = csPtr->bufSize; + size = 0; + underflow = 1; } else { - sizeb = csPtr->toRead; - } + /* + * Read up to bufSize bytes. + */ - if (inBinary || sameEncoding) { - size = DoRead(inStatePtr->topChanPtr, csPtr->buffer, sizeb); - } else { - size = DoReadChars(inStatePtr->topChanPtr, bufObj, sizeb, - 0 /* No append */); + if ((csPtr->toRead == -1) || (csPtr->toRead > csPtr->bufSize)) { + sizeb = csPtr->bufSize; + } else { + sizeb = csPtr->toRead; + } + + if (inBinary || sameEncoding) { + size = DoRead(inStatePtr->topChanPtr, csPtr->buffer, sizeb); + } else { + size = DoReadChars(inStatePtr->topChanPtr, bufObj, sizeb, + 0 /* No append */); + } + underflow = (size >= 0) && (size < sizeb); /* Input underflow */ } - underflow = (size >= 0) && (size < sizeb); /* Input underflow */ if (size < 0) { readError: diff --git a/tests/chanio.test b/tests/chanio.test index 3c56758..c2a6940 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3 2007/12/13 15:26:04 dgp Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.1 2008/04/03 18:06:26 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6887,6 +6887,51 @@ test chan-io-53.7 {CopyData: Flooding chan copy from pipe} {stdio openpipe fcopy # -1=error 0=script error N=number of bytes expr ($fcopyTestDone == 0) ? $fcopyTestCount : -1 } {3450} +test chan-io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { + # copy progress callback. errors out intentionally + proc ::cmd args { + lappend ::RES "CMD $args" + error !STOP + } + # capture callback error here + proc ::bgerror args { + lappend ::RES "bgerror/OK $args" + set ::forever has-been-reached + return + } + # Files we use for our channels + set foo [makeFile ashgdfashdgfasdhgfasdhgf foo] + set bar [makeFile {} bar] + # Channels to copy between + set f [open $foo r] ; fconfigure $f -translation binary + set g [open $bar w] ; fconfigure $g -translation binary -buffering none +} -constraints {stdio openpipe fcopy} -body { + # Record input size, so that result is always defined + lappend ::RES [file size $bar] + # Run the copy. Should not invoke -command now. + chan copy $f $g -size 2 -command ::cmd + # Check that -command was not called synchronously + set sbs [file size bar] + lappend ::RES [expr {($sbs > 0) ? "sync/FAIL" : "sync/OK"}] $sbs + # Now let the async part happen. Should capture the error in cmd + # via bgerror. If not break the event loop via timer. + after 1000 { + lappend ::RES {bgerror/FAIL timeout} + set ::forever has-been-reached + } + vwait ::forever + # Report + set ::RES +} -cleanup { + chan close $f + chan close $g + catch {unset ::RES} + catch {unset ::forever} + rename ::cmd {} + rename ::bgerror {} + removeFile foo + removeFile bar +} -result {0 sync/OK 0 {CMD 2} {bgerror/OK !STOP}} test chan-io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive diff --git a/tests/io.test b/tests/io.test index 3ca2239..86ccddc 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80 2007/12/13 15:26:06 dgp Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.1 2008/04/03 18:06:25 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6887,6 +6887,51 @@ test io-53.7 {CopyData: Flooding fcopy from pipe} {stdio openpipe fcopy} { # -1=error 0=script error N=number of bytes expr ($fcopyTestDone == 0) ? $fcopyTestCount : -1 } {3450} +test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { + # copy progress callback. errors out intentionally + proc ::cmd args { + lappend ::RES "CMD $args" + error !STOP + } + # capture callback error here + proc ::bgerror args { + lappend ::RES "bgerror/OK $args" + set ::forever has-been-reached + return + } + # Files we use for our channels + set foo [makeFile ashgdfashdgfasdhgfasdhgf foo] + set bar [makeFile {} bar] + # Channels to copy between + set f [open $foo r] ; fconfigure $f -translation binary + set g [open $bar w] ; fconfigure $g -translation binary -buffering none +} -constraints {stdio openpipe fcopy} -body { + # Record input size, so that result is always defined + lappend ::RES [file size $bar] + # Run the copy. Should not invoke -command now. + fcopy $f $g -size 2 -command ::cmd + # Check that -command was not called synchronously + set sbs [file size bar] + lappend ::RES [expr {($sbs > 0) ? "sync/FAIL" : "sync/OK"}] $sbs + # Now let the async part happen. Should capture the error in cmd + # via bgerror. If not break the event loop via timer. + after 1000 { + lappend ::RES {bgerror/FAIL timeout} + set ::forever has-been-reached + } + vwait ::forever + # Report + set ::RES +} -cleanup { + close $f + close $g + catch {unset ::RES} + catch {unset ::forever} + rename ::cmd {} + rename ::bgerror {} + removeFile foo + removeFile bar +} -result {0 sync/OK 0 {CMD 2} {bgerror/OK !STOP}} test io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive -- cgit v0.12 From aee4b23dd9098622d39bdab07937703a502e75f6 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 3 Apr 2008 18:06:51 +0000 Subject: * generic/tclIO.c (CopyData): Applied patch [Bug 1932639] to * tests/io.test: prevent fcopy from calling -command synchronously the first time. Thanks to Alexandre Ferrieux for report and patch. --- ChangeLog | 7 +++++++ generic/tclIO.c | 36 +++++++++++++++++++++++------------- tests/io.test | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 76 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 605e0dc..69103a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-04-03 Andreas Kupries + + * generic/tclIO.c (CopyData): Applied patch [Bug 1932639] to + * tests/io.test: prevent fcopy from calling -command synchronously + the first time. Thanks to Alexandre Ferrieux + for report and patch. + 2008-04-02 Andreas Kupries * generic/tclIO.c (CopyData): Applied patch for the fcopy problem diff --git a/generic/tclIO.c b/generic/tclIO.c index bf5eed5..aba2735 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.24 2008/04/02 20:27:58 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.25 2008/04/03 18:06:52 andreas_kupries Exp $ */ #include "tclInt.h" @@ -7835,22 +7835,32 @@ CopyData(csPtr, mask) goto writeError; } - /* - * Read up to bufSize bytes. - */ + if (cmdPtr && (mask == 0)) { + /* + * In async mode, we skip reading synchronously and fake an + * underflow instead to prime the readable fileevent. + */ - if ((csPtr->toRead == -1) || (csPtr->toRead > csPtr->bufSize)) { - sizeb = csPtr->bufSize; + size = 0; + underflow = 1; } else { - sizeb = csPtr->toRead; - } + /* + * Read up to bufSize bytes. + */ - if (inBinary || sameEncoding) { - size = DoRead(inStatePtr->topChanPtr, csPtr->buffer, sizeb); - } else { - size = DoReadChars(inStatePtr->topChanPtr, bufObj, sizeb, 0 /* No append */); + if ((csPtr->toRead == -1) || (csPtr->toRead > csPtr->bufSize)) { + sizeb = csPtr->bufSize; + } else { + sizeb = csPtr->toRead; + } + + if (inBinary || sameEncoding) { + size = DoRead(inStatePtr->topChanPtr, csPtr->buffer, sizeb); + } else { + size = DoReadChars(inStatePtr->topChanPtr, bufObj, sizeb, 0 /* No append */); + } + underflow = (size >= 0) && (size < sizeb); /* input underflow */ } - underflow = (size >= 0) && (size < sizeb); /* input underflow */ if (size < 0) { readError: diff --git a/tests/io.test b/tests/io.test index 85fe437..b118e4c 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.12 2007/02/12 19:25:42 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.13 2008/04/03 18:06:53 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6919,6 +6919,51 @@ test io-53.7 {CopyData: Flooding fcopy from pipe} {stdio openpipe fcopy} { # -1=error 0=script error N=number of bytes expr ($fcopyTestDone == 0) ? $fcopyTestCount : -1 } {3450} +test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { + # copy progress callback. errors out intentionally + proc ::cmd args { + lappend ::RES "CMD $args" + error !STOP + } + # capture callback error here + proc ::bgerror args { + lappend ::RES "bgerror/OK $args" + set ::forever has-been-reached + return + } + # Files we use for our channels + set foo [makeFile ashgdfashdgfasdhgfasdhgf foo] + set bar [makeFile {} bar] + # Channels to copy between + set f [open $foo r] ; fconfigure $f -translation binary + set g [open $bar w] ; fconfigure $g -translation binary -buffering none +} -constraints {stdio openpipe fcopy} -body { + # Record input size, so that result is always defined + lappend ::RES [file size $bar] + # Run the copy. Should not invoke -command now. + fcopy $f $g -size 2 -command ::cmd + # Check that -command was not called synchronously + set sbs [file size bar] + lappend ::RES [expr {($sbs > 0) ? "sync/FAIL" : "sync/OK"}] $sbs + # Now let the async part happen. Should capture the error in cmd + # via bgerror. If not break the event loop via timer. + after 1000 { + lappend ::RES {bgerror/FAIL timeout} + set ::forever has-been-reached + } + vwait ::forever + # Report + set ::RES +} -cleanup { + close $f + close $g + catch {unset ::RES} + catch {unset ::forever} + rename ::cmd {} + rename ::bgerror {} + removeFile foo + removeFile bar +} -result {0 sync/OK 0 {CMD 2} {bgerror/OK !STOP}} test io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive -- cgit v0.12 From dd13549c2381c348b6536501d389e513a6082f5d Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 4 Apr 2008 16:45:48 +0000 Subject: * generic/tclIORChan.c (ReflectClose): Added missing removal of the now closed channel from the reflection map. Before we could crash the system by invoking 'chan postevent' on a closed reflected channel, dereferencing the dangling pointer in the map. * tests/ioCmd.test (iocmd-31.8): Testcase for the above. --- ChangeLog | 10 ++++++++++ generic/tclIORChan.c | 16 +++++++++++++++- tests/ioCmd.test | 14 +++++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5d06fc1..774b44e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-04-04 Andreas Kupries + + * generic/tclIORChan.c (ReflectClose): Added missing removal of + the now closed channel from the reflection map. Before we could + crash the system by invoking 'chan postevent' on a closed + reflected channel, dereferencing the dangling pointer in the + map. + + * tests/ioCmd.test (iocmd-31.8): Testcase for the above. + 2008-04-03 Andreas Kupries * generic/tclIO.c (CopyData): Applied patch [Bug 1932639] to diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 94950e7..905a773 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORChan.c,v 1.28 2008/02/26 21:50:52 jenglish Exp $ + * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.1 2008/04/04 16:45:50 andreas_kupries Exp $ */ #include @@ -1010,6 +1010,8 @@ ReflectClose( ReflectedChannel *rcPtr = (ReflectedChannel *) clientData; int result; /* Result code for 'close' */ Tcl_Obj *resObj; /* Result data for 'close' */ + ReflectedChannelMap* rcmPtr; /* Map of reflected channels with handlers in this interp */ + Tcl_HashEntry* hPtr; /* Entry in the above map */ if (interp == NULL) { /* @@ -1090,6 +1092,18 @@ ReflectClose( Tcl_DecrRefCount(resObj); /* Remove reference we held from the * invoke */ + + /* + * Remove the channel from the map before releasing the memory, to + * prevent future accesses (like by 'postevent') from finding and + * dereferencing a dangling pointer. + */ + + rcmPtr = GetReflectedChannelMap (interp); + hPtr = Tcl_FindHashEntry (&rcmPtr->map, + Tcl_GetChannelName (rcPtr->chan)); + Tcl_DeleteHashEntry (hPtr); + FreeReflectedChannel(rcPtr); #ifdef TCL_THREADS } diff --git a/tests/ioCmd.test b/tests/ioCmd.test index 2b4877f..024e622 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.36 2008/03/11 22:28:34 das Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.36.2.1 2008/04/04 16:45:51 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1795,6 +1795,18 @@ test iocmd-31.7 {chan postevent, posted events do happen} -match glob -body { rename foo {} set res } -result {{watch rc* write} {} TOCK {} {watch rc* {}}} +test iocmd-31.8 {chan postevent after close throws error} -match glob -setup { + proc foo {args} {oninit; onfinal; track; return} + proc dummy args { return } + set c [chan create {r w} foo] + fileevent $c readable dummy +} -body { + close $c + chan postevent $c read +} -cleanup { + rename foo {} + rename dummy {} +} -returnCodes error -result {can not find reflected channel named "rc*"} # ### ### ### ######### ######### ######### ## Same tests as above, but exercising the code forwarding and -- cgit v0.12 From 3554b9e788ccb6740c210c1d3d1c8f01eea7a6fc Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 4 Apr 2008 17:19:40 +0000 Subject: * generic/tclIORChan.c (ReflectOutput): Allow zero return from write when input was zero-length anyway. Otherwise keept it an error, and separate the message from 'written too much'. * tests/ioCmd.test (iocmd-24.6): Testcase updated for changed message. --- ChangeLog | 7 +++++++ generic/tclIORChan.c | 15 +++++++++++++-- tests/ioCmd.test | 4 ++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 774b44e..f91bead 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2008-04-04 Andreas Kupries + * generic/tclIORChan.c (ReflectOutput): Allow zero return from + write when input was zero-length anyway. Otherwise keept it an + error, and separate the message from 'written too much'. + + * tests/ioCmd.test (iocmd-24.6): Testcase updated for changed + message. + * generic/tclIORChan.c (ReflectClose): Added missing removal of the now closed channel from the reflection map. Before we could crash the system by invoking 'chan postevent' on a closed diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 905a773..157e712 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.1 2008/04/04 16:45:50 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.2 2008/04/04 17:19:42 andreas_kupries Exp $ */ #include @@ -434,6 +434,7 @@ static const char *msg_read_unsup = "{read not supported by Tcl driver}"; static const char *msg_read_toomuch = "{read delivered more than requested}"; static const char *msg_write_unsup = "{write not supported by Tcl driver}"; static const char *msg_write_toomuch = "{write wrote more than requested}"; +static const char *msg_write_nothing = "{write wrote nothing}"; static const char *msg_seek_beforestart = "{Tried to seek before origin}"; #ifdef TCL_THREADS static const char *msg_send_originlost = "{Origin thread lost}"; @@ -1290,7 +1291,17 @@ ReflectOutput( Tcl_DecrRefCount(resObj); /* Remove reference held from invoke */ - if ((written == 0) || (toWrite < written)) { + if ((written == 0) && (toWrite > 0)) { + /* + * The handler claims to have written nothing of what it was + * given. That is bad. + */ + + SetChannelErrorStr(rcPtr->chan, msg_write_nothing); + *errorCodePtr = EINVAL; + return -1; + } + if (toWrite < written) { /* * The handler claims to have written more than it was given. That is * bad. Note that the I/O core would crash if we were to return this diff --git a/tests/ioCmd.test b/tests/ioCmd.test index 024e622..fcdc326 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.36.2.1 2008/04/04 16:45:51 andreas_kupries Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.36.2.2 2008/04/04 17:19:43 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1039,7 +1039,7 @@ test iocmd-24.6 {chan write, bad result, zero-length write} -match glob -body { close $c rename foo {} set res -} -result {{write rc* snarf} 1 {write wrote more than requested}} +} -result {{write rc* snarf} 1 {write wrote nothing}} test iocmd-24.7 {chan write, failed write, error return} -match glob -body { set res {} proc foo {args} {oninit; onfinal; track; return -code error BOOM!} -- cgit v0.12 From b5dca8245923aea2ae9e88e04405563273143163 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 4 Apr 2008 20:00:57 +0000 Subject: * tests/io.test (io-53.9): Added testcase for [Bug 780533], based on Alexandre's test script. Also fixed problem with timer in preceding test, was not canceled properly in the ok case. --- ChangeLog | 6 ++++++ tests/io.test | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 69103a2..688ee7c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-04-04 Andreas Kupries + + * tests/io.test (io-53.9): Added testcase for [Bug 780533], based + on Alexandre's test script. Also fixed problem with timer in + preceding test, was not canceled properly in the ok case. + 2008-04-03 Andreas Kupries * generic/tclIO.c (CopyData): Applied patch [Bug 1932639] to diff --git a/tests/io.test b/tests/io.test index b118e4c..24e6580 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.13 2008/04/03 18:06:53 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.14 2008/04/04 20:01:00 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6947,11 +6947,12 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { lappend ::RES [expr {($sbs > 0) ? "sync/FAIL" : "sync/OK"}] $sbs # Now let the async part happen. Should capture the error in cmd # via bgerror. If not break the event loop via timer. - after 1000 { + set token [after 1000 { lappend ::RES {bgerror/FAIL timeout} set ::forever has-been-reached - } + }] vwait ::forever + catch {after cancel $token} # Report set ::RES } -cleanup { @@ -6964,6 +6965,53 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { removeFile foo removeFile bar } -result {0 sync/OK 0 {CMD 2} {bgerror/OK !STOP}} +test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { + set out [makeFile {} out] + set err [makeFile {} err] + set pipe [open "|[info nameofexecutable] 2> $err" r+] + fconfigure $pipe -translation binary -buffering line + puts $pipe { + fconfigure stdout -translation binary -buffering line + puts stderr Waiting... + after 1000 + foreach x {a b c} { + puts stderr Looping... + puts $x + after 500 + } + proc bye args { + if {[gets stdin line]<0} { + puts stderr "CHILD: EOF detected, exiting" + exit + } else { + puts stderr "CHILD: ignoring line: $line" + } + } + puts stderr Now-sleeping-forever + fileevent stdin readable bye + vwait forever + } + proc ::done args { + set ::forever OK + return + } + set ::forever {} + set out [open $out w] +} -constraints {stdio openpipe fcopy} -body { + fcopy $pipe $out -size 6 -command ::done + set token [after 5000 { + set ::forever {fcopy hangs} + }] + vwait ::forever + catch {after cancel $token} + set ::forever +} -cleanup { + close $pipe + rename ::done {} + removeFile out + removeFile err + catch {unset ::forever} +} -result OK test io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive -- cgit v0.12 From af0c3541192d9fdf06f543f52649706e29a77ae8 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 4 Apr 2008 20:13:17 +0000 Subject: * tests/io.test (io-53.9): Added testcase for [Bug 780533], based * tests/chanio.test: on Alexandre's test script. Also fixed problem with timer in preceding test, was not canceled properly in the ok case. --- ChangeLog | 7 +++++++ tests/chanio.test | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++--- tests/io.test | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 109 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index f91bead..5aae64a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2008-04-04 Andreas Kupries + * tests/io.test (io-53.9): Added testcase for [Bug 780533], based + * tests/chanio.test: on Alexandre's test script. Also fixed + problem with timer in preceding test, was not canceled properly + in the ok case. + +2008-04-04 Andreas Kupries + * generic/tclIORChan.c (ReflectOutput): Allow zero return from write when input was zero-length anyway. Otherwise keept it an error, and separate the message from 'written too much'. diff --git a/tests/chanio.test b/tests/chanio.test index c2a6940..027e4c0 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.1 2008/04/03 18:06:26 andreas_kupries Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.2 2008/04/04 20:13:23 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6915,11 +6915,12 @@ test chan-io-53.8 {CopyData: async callback and error handling, Bug 1932639} -se lappend ::RES [expr {($sbs > 0) ? "sync/FAIL" : "sync/OK"}] $sbs # Now let the async part happen. Should capture the error in cmd # via bgerror. If not break the event loop via timer. - after 1000 { + set token [after 1000 { lappend ::RES {bgerror/FAIL timeout} set ::forever has-been-reached - } + }] vwait ::forever + catch {after cancel $token} # Report set ::RES } -cleanup { @@ -6932,6 +6933,53 @@ test chan-io-53.8 {CopyData: async callback and error handling, Bug 1932639} -se removeFile foo removeFile bar } -result {0 sync/OK 0 {CMD 2} {bgerror/OK !STOP}} +test chan-io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { + set out [makeFile {} out] + set err [makeFile {} err] + set pipe [open "|[info nameofexecutable] 2> $err" r+] + chan configure $pipe -translation binary -buffering line + chan puts $pipe { + chan configure stdout -translation binary -buffering line + chan puts stderr Waiting... + after 1000 + foreach x {a b c} { + chan puts stderr Looping... + chan puts $x + after 500 + } + proc bye args { + if {[chan gets stdin line]<0} { + chan puts stderr "CHILD: EOF detected, exiting" + exit + } else { + chan puts stderr "CHILD: ignoring line: $line" + } + } + chan puts stderr Now-sleeping-forever + chan event stdin readable bye + vwait forever + } + proc ::done args { + set ::forever OK + return + } + set ::forever {} + set out [open $out w] +} -constraints {stdio openpipe fcopy} -body { + chan copy $pipe $out -size 6 -command ::done + set token [after 5000 { + set ::forever {fcopy hangs} + }] + vwait ::forever + catch {after cancel $token} + set ::forever +} -cleanup { + chan close $pipe + rename ::done {} + removeFile out + removeFile err + catch {unset ::forever} +} -result OK test chan-io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive diff --git a/tests/io.test b/tests/io.test index 86ccddc..918de33 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.1 2008/04/03 18:06:25 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.2 2008/04/04 20:13:22 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6915,10 +6915,11 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { lappend ::RES [expr {($sbs > 0) ? "sync/FAIL" : "sync/OK"}] $sbs # Now let the async part happen. Should capture the error in cmd # via bgerror. If not break the event loop via timer. - after 1000 { + set token [after 1000 { lappend ::RES {bgerror/FAIL timeout} set ::forever has-been-reached - } + }] + catch {after cancel $token} vwait ::forever # Report set ::RES @@ -6932,6 +6933,53 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { removeFile foo removeFile bar } -result {0 sync/OK 0 {CMD 2} {bgerror/OK !STOP}} +test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { + set out [makeFile {} out] + set err [makeFile {} err] + set pipe [open "|[info nameofexecutable] 2> $err" r+] + fconfigure $pipe -translation binary -buffering line + puts $pipe { + fconfigure stdout -translation binary -buffering line + puts stderr Waiting... + after 1000 + foreach x {a b c} { + puts stderr Looping... + puts $x + after 500 + } + proc bye args { + if {[gets stdin line]<0} { + puts stderr "CHILD: EOF detected, exiting" + exit + } else { + puts stderr "CHILD: ignoring line: $line" + } + } + puts stderr Now-sleeping-forever + fileevent stdin readable bye + vwait forever + } + proc ::done args { + set ::forever OK + return + } + set ::forever {} + set out [open $out w] +} -constraints {stdio openpipe fcopy} -body { + fcopy $pipe $out -size 6 -command ::done + set token [after 5000 { + set ::forever {fcopy hangs} + }] + vwait ::forever + catch {after cancel $token} + set ::forever +} -cleanup { + close $pipe + rename ::done {} + removeFile out + removeFile err + catch {unset ::forever} +} -result OK test io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive -- cgit v0.12 From b38bba3aea186cf7f05e45334a96afe25078da16 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 5 Apr 2008 23:22:41 +0000 Subject: * win/tclWinFile.c: (WinSymLinkDirectory): Fixed a problem that Tcl was creating an NTFS junction point (IO_REPARSE_TAG_MOUNT_POINT) but filling in the union member for a Vista symbolic link. We had gotten away with this error because the union member (SymbolicLinkReparseBuffer) was misdefined in this file and in the 'winnt.h' in early versions of MinGW. MinGW 3.4.2 has the correct definition of SymbolicLinkReparseBuffer, exposing the mismatch, and making tests cmdAH-19.4.1, fCmd-28.*, and filename-11.* fail. --- ChangeLog | 12 ++++++++++++ win/tclWinFile.c | 34 +++++++++++++++++----------------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5aae64a..9bc846f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-04-05 Kevin B. Kenny + + * win/tclWinFile.c: (WinSymLinkDirectory): Fixed a problem that + Tcl was creating an NTFS junction point (IO_REPARSE_TAG_MOUNT_POINT) + but filling in the union member for a Vista symbolic link. + We had gotten away with this error because the union member + (SymbolicLinkReparseBuffer) was misdefined in this file + and in the 'winnt.h' in early versions of MinGW. MinGW 3.4.2 + has the correct definition of SymbolicLinkReparseBuffer, exposing + the mismatch, and making tests cmdAH-19.4.1, fCmd-28.*, and + filename-11.* fail. + 2008-04-04 Andreas Kupries * tests/io.test (io-53.9): Added testcase for [Bug 780533], based diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 66ecdf8..4a909f3 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.95 2007/12/13 15:28:44 dgp Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.95.2.1 2008/04/05 23:22:41 kennykb Exp $ */ /* #define _WIN32_WINNT 0x0500 */ @@ -123,6 +123,7 @@ typedef struct _REPARSE_DATA_BUFFER { WORD SubstituteNameLength; WORD PrintNameOffset; WORD PrintNameLength; + ULONG Flags; WCHAR PathBuffer[1]; } SymbolicLinkReparseBuffer; struct { @@ -445,18 +446,18 @@ WinSymLinkDirectory( memset(reparseBuffer, 0, sizeof(DUMMY_REPARSE_BUFFER)); reparseBuffer->ReparseTag = IO_REPARSE_TAG_MOUNT_POINT; - reparseBuffer->SymbolicLinkReparseBuffer.SubstituteNameLength = + reparseBuffer->MountPointReparseBuffer.SubstituteNameLength = wcslen(nativeTarget) * sizeof(WCHAR); reparseBuffer->Reserved = 0; - reparseBuffer->SymbolicLinkReparseBuffer.PrintNameLength = 0; - reparseBuffer->SymbolicLinkReparseBuffer.PrintNameOffset = - reparseBuffer->SymbolicLinkReparseBuffer.SubstituteNameLength + reparseBuffer->MountPointReparseBuffer.PrintNameLength = 0; + reparseBuffer->MountPointReparseBuffer.PrintNameOffset = + reparseBuffer->MountPointReparseBuffer.SubstituteNameLength + sizeof(WCHAR); - memcpy(reparseBuffer->SymbolicLinkReparseBuffer.PathBuffer, nativeTarget, + memcpy(reparseBuffer->MountPointReparseBuffer.PathBuffer, nativeTarget, sizeof(WCHAR) - + reparseBuffer->SymbolicLinkReparseBuffer.SubstituteNameLength); + + reparseBuffer->MountPointReparseBuffer.SubstituteNameLength); reparseBuffer->ReparseDataLength = - reparseBuffer->SymbolicLinkReparseBuffer.SubstituteNameLength+12; + reparseBuffer->MountPointReparseBuffer.SubstituteNameLength+12; return NativeWriteReparse(linkDirPath, reparseBuffer); } @@ -604,12 +605,12 @@ WinReadLinkDirectory( */ offset = 0; - if (reparseBuffer->SymbolicLinkReparseBuffer.PathBuffer[0] == L'\\') { + if (reparseBuffer->MountPointReparseBuffer.PathBuffer[0] == L'\\') { /* * Check whether this is a mounted volume. */ - if (wcsncmp(reparseBuffer->SymbolicLinkReparseBuffer.PathBuffer, + if (wcsncmp(reparseBuffer->MountPointReparseBuffer.PathBuffer, L"\\??\\Volume{",11) == 0) { char drive; @@ -618,7 +619,7 @@ WinReadLinkDirectory( * to fix here. It doesn't seem very well documented. */ - reparseBuffer->SymbolicLinkReparseBuffer.PathBuffer[1]=L'\\'; + reparseBuffer->MountPointReparseBuffer.PathBuffer[1]=L'\\'; /* * Check if a corresponding drive letter exists, and use that @@ -626,7 +627,7 @@ WinReadLinkDirectory( */ drive = TclWinDriveLetterForVolMountPoint( - reparseBuffer->SymbolicLinkReparseBuffer.PathBuffer); + reparseBuffer->MountPointReparseBuffer.PathBuffer); if (drive != -1) { char driveSpec[3] = { '\0', ':', '\0' @@ -649,14 +650,14 @@ WinReadLinkDirectory( */ goto invalidError; - } else if (wcsncmp(reparseBuffer->SymbolicLinkReparseBuffer + } else if (wcsncmp(reparseBuffer->MountPointReparseBuffer .PathBuffer, L"\\\\?\\",4) == 0) { /* * Strip off the prefix. */ offset = 4; - } else if (wcsncmp(reparseBuffer->SymbolicLinkReparseBuffer + } else if (wcsncmp(reparseBuffer->MountPointReparseBuffer .PathBuffer, L"\\??\\",4) == 0) { /* * Strip off the prefix. @@ -667,8 +668,8 @@ WinReadLinkDirectory( } Tcl_WinTCharToUtf((const char *) - reparseBuffer->SymbolicLinkReparseBuffer.PathBuffer, - (int) reparseBuffer->SymbolicLinkReparseBuffer + reparseBuffer->MountPointReparseBuffer.PathBuffer, + (int) reparseBuffer->MountPointReparseBuffer .SubstituteNameLength, &ds); copy = Tcl_DStringValue(&ds)+offset; @@ -775,7 +776,6 @@ NativeWriteReparse( TclWinConvertError(GetLastError()); return -1; } - hFile = (*tclWinProcs->createFileProc)(linkDirPath, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, NULL); -- cgit v0.12 From 6bdb3d6484f629725b9eaf6638099976ad8717c7 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sun, 6 Apr 2008 00:52:09 +0000 Subject: * tests/chanio.test (chan-io-53.9): * tests/io.test (io-53.9): Made test cleanup robust against the possibility of slow process shutdown on Windows. * win/tcl.m4: Added -D_CRT_SECURE_NO_DEPRECATE and -DCRT_NONSTDC_NO_DEPRECATE to the MSVC compilation flags so that the compilation doesn't barf on perfectly reasonable Posix system calls. * win/configure: Manually patched (don't have the right autoconf to hand). --- ChangeLog | 11 +++++++++++ tests/chanio.test | 8 +++++--- tests/io.test | 7 ++++--- win/configure | 3 +++ win/tcl.m4 | 5 ++++- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9bc846f..bb676f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2008-04-05 Kevin B. Kenny + * tests/chanio.test (chan-io-53.9): + * tests/io.test (io-53.9): Made test cleanup robust against + the possibility of slow process shutdown on Windows. + + * win/tcl.m4: Added -D_CRT_SECURE_NO_DEPRECATE and + -DCRT_NONSTDC_NO_DEPRECATE to the MSVC compilation flags + so that the compilation doesn't barf on perfectly reasonable + Posix system calls. + * win/configure: Manually patched (don't have the right autoconf + to hand). + * win/tclWinFile.c: (WinSymLinkDirectory): Fixed a problem that Tcl was creating an NTFS junction point (IO_REPARSE_TAG_MOUNT_POINT) but filling in the union member for a Vista symbolic link. diff --git a/tests/chanio.test b/tests/chanio.test index 027e4c0..d44902d 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.2 2008/04/04 20:13:23 andreas_kupries Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.3 2008/04/06 00:52:09 kennykb Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6976,8 +6976,10 @@ test chan-io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { } -cleanup { chan close $pipe rename ::done {} - removeFile out - removeFile err + after 1000; # Allow Windows time to figure out that the + # process is gone + catch {removeFile out} + catch {removeFile err} catch {unset ::forever} } -result OK diff --git a/tests/io.test b/tests/io.test index 918de33..27ccdbd 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.2 2008/04/04 20:13:22 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.3 2008/04/06 00:52:10 kennykb Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6976,8 +6976,9 @@ test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { } -cleanup { close $pipe rename ::done {} - removeFile out - removeFile err + after 1000; # Give Windows time to kill the process + catch {removeFile out} + catch {removeFile err} catch {unset ::forever} } -result OK diff --git a/win/configure b/win/configure index afe600c..7f72b09 100755 --- a/win/configure +++ b/win/configure @@ -4122,6 +4122,9 @@ _ACEOF MAKE_EXE="\${CC} -Fe\$@" LIBPREFIX="" + CFLAGS_DEBUG="${CFLAGS_DEBUG} -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE" + CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE" + EXTRA_CFLAGS="" CFLAGS_WARNING="-W3" LDFLAGS_DEBUG="-debug:full" diff --git a/win/tcl.m4 b/win/tcl.m4 index 833680f..fa34698 100644 --- a/win/tcl.m4 +++ b/win/tcl.m4 @@ -622,7 +622,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ CC="\"${PATH64}/cl.exe\" -I\"${MSSDK}/Include\" \ -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\"" RC="\"${MSSDK}/bin/rc.exe\"" - CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" + CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}" # Do not use -O2 for Win64 - this has proved buggy in code gen. CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}" lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\"" @@ -747,6 +747,9 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ MAKE_EXE="\${CC} -Fe\[$]@" LIBPREFIX="" + CFLAGS_DEBUG="${CFLAGS_DEBUG} -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE" + CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE" + EXTRA_CFLAGS="" CFLAGS_WARNING="-W3" LDFLAGS_DEBUG="-debug:full" -- cgit v0.12 From 871b84cdfe3b833bb5d1496f8d8bc70013257619 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 7 Apr 2008 16:06:52 +0000 Subject: * generic/tclStringObj.c (Tcl_AppendFormatToObj): Fix [format {% d}] so that it behaves the same way as in 8.4 and as C's printf(). * tests/format.test: Add a test for '% d' and '%+d'. --- ChangeLog | 7 +++++++ generic/tclStringObj.c | 6 +++--- tests/format.test | 8 +++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index bb676f8..c53d21a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-04-07 Reinhard Max + + * generic/tclStringObj.c (Tcl_AppendFormatToObj): + Fix [format {% d}] so that it behaves the same way as in 8.4 and + as C's printf(). + * tests/format.test: Add a test for '% d' and '%+d'. + 2008-04-05 Kevin B. Kenny * tests/chanio.test (chan-io-53.9): diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 9664726..b9311ec 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70 2008/02/28 17:36:49 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.1 2008/04/07 16:07:00 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -2003,8 +2003,8 @@ Tcl_AppendFormatToObj( allocSegment = 1; Tcl_IncrRefCount(segment); - if ((isNegative || gotPlus) && (useBig || (ch == 'd'))) { - Tcl_AppendToObj(segment, (isNegative ? "-" : "+"), 1); + if ((isNegative || gotPlus || gotSpace) && (useBig || (ch == 'd'))) { + Tcl_AppendToObj(segment, (isNegative ? "-" : gotPlus ? "+" : " "), 1); } if (gotHash) { diff --git a/tests/format.test b/tests/format.test index b050fc3..36222a5 100644 --- a/tests/format.test +++ b/tests/format.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: format.test,v 1.25 2008/01/10 16:09:23 dgp Exp $ +# RCS: @(#) $Id: format.test,v 1.25.2.1 2008/04/07 16:07:02 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -496,6 +496,12 @@ test format-15.3 {testing %0..s 0 padding for chars/strings} { test format-15.4 {testing %0..s 0 padding for chars/strings} { format %05c 61 } {0000=} +test format-15.5 {testing %d space padding for integers} { + format "(% 1d) (% 1d)" 10 -10 +} {( 10) (-10)} +test format-15.6 {testing %d plus padding for integers} { + format "(%+1d) (%+1d)" 10 -10 +} {(+10) (-10)} set a "0123456789" set b "" -- cgit v0.12 From a9077b7650915e4f0dd8c7788a7c455fa644db53 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 7 Apr 2008 19:40:57 +0000 Subject: * generic/tclIO.c (BUSY_STATE, CheckChannelErrors, TclCopyChannel): New macro, and the places using it. This change allows for bi-directional fcopy on channels. Thanks to Alexandre Ferrieux for the patch. * tests/io.test (io-53.9): Made test cleanup robust against the possibility of slow process shutdown on Windows. Backported from Kevin Kenny's change to the same test on the 8.5 and head branches. --- ChangeLog | 12 ++++++++++++ generic/tclIO.c | 12 ++++++++---- tests/io.test | 3 ++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 688ee7c..3e65b72 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-04-07 Andreas Kupries + + * generic/tclIO.c (BUSY_STATE, CheckChannelErrors, + TclCopyChannel): New macro, and the places using it. This change + allows for bi-directional fcopy on channels. Thanks to Alexandre + Ferrieux for the patch. + + * tests/io.test (io-53.9): Made test cleanup robust against the + possibility of slow process shutdown on Windows. Backported from + Kevin Kenny's change to the same test on the 8.5 and head + branches. + 2008-04-04 Andreas Kupries * tests/io.test (io-53.9): Added testcase for [Bug 780533], based diff --git a/generic/tclIO.c b/generic/tclIO.c index aba2735..739b644 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.25 2008/04/03 18:06:52 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.26 2008/04/07 19:40:58 andreas_kupries Exp $ */ #include "tclInt.h" @@ -156,6 +156,10 @@ static int WriteBytes _ANSI_ARGS_((Channel *chanPtr, static int WriteChars _ANSI_ARGS_((Channel *chanPtr, CONST char *src, int srcLen)); +#define BUSY_STATE(st,fl) \ + ((st)->csPtr && \ + ( (((fl)&TCL_READABLE)&&((st)->csPtr->readPtr ==(st)->topChanPtr)) || \ + (((fl)&TCL_WRITABLE)&&((st)->csPtr->writePtr==(st)->topChanPtr)))) /* *--------------------------------------------------------------------------- @@ -5914,7 +5918,7 @@ CheckChannelErrors(statePtr, flags) * retrieving and transforming the data to copy. */ - if ((statePtr->csPtr != NULL) && ((flags & CHANNEL_RAW_MODE) == 0)) { + if (BUSY_STATE(statePtr,flags) && ((flags & CHANNEL_RAW_MODE) == 0)) { Tcl_SetErrno(EBUSY); return -1; } @@ -7681,14 +7685,14 @@ TclCopyChannel(interp, inChan, outChan, toRead, cmdPtr) inStatePtr = inPtr->state; outStatePtr = outPtr->state; - if (inStatePtr->csPtr) { + if (BUSY_STATE(inStatePtr,TCL_READABLE)) { if (interp) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "channel \"", Tcl_GetChannelName(inChan), "\" is busy", NULL); } return TCL_ERROR; } - if (outStatePtr->csPtr) { + if (BUSY_STATE(outStatePtr,TCL_WRITABLE)) { if (interp) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "channel \"", Tcl_GetChannelName(outChan), "\" is busy", NULL); diff --git a/tests/io.test b/tests/io.test index 24e6580..696366b 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.14 2008/04/04 20:01:00 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.15 2008/04/07 19:41:00 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7008,6 +7008,7 @@ test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { } -cleanup { close $pipe rename ::done {} + after 1000 ;# Give Windows time to kill the process removeFile out removeFile err catch {unset ::forever} -- cgit v0.12 From 4ef1119b6a57574cc2bc49f1c5f2060dc56509ea Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 7 Apr 2008 19:41:59 +0000 Subject: * generic/tclIO.c (BUSY_STATE, CheckChannelErrors, TclCopyChannel): New macro, and the places using it. This change allows for bi-directional fcopy on channels. Thanks to Alexandre Ferrieux for the patch. --- ChangeLog | 7 +++++++ generic/tclIO.c | 12 ++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index c53d21a..a489de6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-04-07 Andreas Kupries + + * generic/tclIO.c (BUSY_STATE, CheckChannelErrors, + TclCopyChannel): New macro, and the places using it. This change + allows for bi-directional fcopy on channels. Thanks to Alexandre + Ferrieux for the patch. + 2008-04-07 Reinhard Max * generic/tclStringObj.c (Tcl_AppendFormatToObj): diff --git a/generic/tclIO.c b/generic/tclIO.c index eadd56b..783011f 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.2 2008/04/03 18:06:24 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.3 2008/04/07 19:42:03 andreas_kupries Exp $ */ #include "tclInt.h" @@ -221,6 +221,10 @@ static Tcl_ObjType tclChannelType = { #define SET_CHANNELSTATE(objPtr, storePtr) \ ((objPtr)->internalRep.otherValuePtr = (void *) (storePtr)) +#define BUSY_STATE(st,fl) \ + ((st)->csPtr && \ + ( (((fl)&TCL_READABLE)&&((st)->csPtr->readPtr ==(st)->topChanPtr)) || \ + (((fl)&TCL_WRITABLE)&&((st)->csPtr->writePtr==(st)->topChanPtr)))) /* *--------------------------------------------------------------------------- @@ -6698,7 +6702,7 @@ CheckChannelErrors( * retrieving and transforming the data to copy. */ - if ((statePtr->csPtr != NULL) && ((flags & CHANNEL_RAW_MODE) == 0)) { + if (BUSY_STATE(statePtr,flags) && ((flags & CHANNEL_RAW_MODE) == 0)) { Tcl_SetErrno(EBUSY); return -1; } @@ -8429,14 +8433,14 @@ TclCopyChannel( inStatePtr = inPtr->state; outStatePtr = outPtr->state; - if (inStatePtr->csPtr) { + if (BUSY_STATE(inStatePtr,TCL_READABLE)) { if (interp) { Tcl_AppendResult(interp, "channel \"", Tcl_GetChannelName(inChan), "\" is busy", NULL); } return TCL_ERROR; } - if (outStatePtr->csPtr) { + if (BUSY_STATE(outStatePtr,TCL_WRITABLE)) { if (interp) { Tcl_AppendResult(interp, "channel \"", Tcl_GetChannelName(outChan), "\" is busy", NULL); -- cgit v0.12 From 9315133c1a940e86af372bcefd446933743882e3 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 7 Apr 2008 19:53:37 +0000 Subject: Added forgotten reference to [Bug 1350564] in last entry. --- ChangeLog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a489de6..399ce04 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,8 +2,9 @@ * generic/tclIO.c (BUSY_STATE, CheckChannelErrors, TclCopyChannel): New macro, and the places using it. This change - allows for bi-directional fcopy on channels. Thanks to Alexandre - Ferrieux for the patch. + allows for bi-directional fcopy on channels. [Bug 1350564]. + Thanks to Alexandre Ferrieux + for the patch. 2008-04-07 Reinhard Max -- cgit v0.12 From 2a9d0c7d0ca876dc97db9373e820c520ad293b7b Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 7 Apr 2008 19:53:52 +0000 Subject: Added forgotten reference to [Bug 1350564] in last entry. --- ChangeLog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3e65b72..6c5be07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,8 +2,9 @@ * generic/tclIO.c (BUSY_STATE, CheckChannelErrors, TclCopyChannel): New macro, and the places using it. This change - allows for bi-directional fcopy on channels. Thanks to Alexandre - Ferrieux for the patch. + allows for bi-directional fcopy on channels. [Bug 1350564]. + Thanks to Alexandre Ferrieux + for the patch. * tests/io.test (io-53.9): Made test cleanup robust against the possibility of slow process shutdown on Windows. Backported from -- cgit v0.12 From 56497ff7346fa776215fc25fd154ee60d5422e2b Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 7 Apr 2008 22:17:36 +0000 Subject: * tests/io.test (io-53.10): Testcase for bi-directionaly fcopy. * generic/tclIO.c: Additional changes to data structures for fcopy * generic/tclIO.h: and channels to perform proper cleanup in case of a channel having two background copy operations running as is now possible. --- ChangeLog | 6 +++++ generic/tclIO.c | 66 ++++++++++++++++++++++++++++++---------------------- generic/tclIO.h | 5 ++-- tests/io.test | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 119 insertions(+), 30 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6c5be07..2a6f378 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2008-04-07 Andreas Kupries + * tests/io.test (io-53.10): Testcase for bi-directionaly fcopy. + * generic/tclIO.c: Additional changes to data structures for fcopy + * generic/tclIO.h: and channels to perform proper cleanup in case + of a channel having two background copy operations running as is + now possible. + * generic/tclIO.c (BUSY_STATE, CheckChannelErrors, TclCopyChannel): New macro, and the places using it. This change allows for bi-directional fcopy on channels. [Bug 1350564]. diff --git a/generic/tclIO.c b/generic/tclIO.c index 739b644..3f79021 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.26 2008/04/07 19:40:58 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.27 2008/04/07 22:17:37 andreas_kupries Exp $ */ #include "tclInt.h" @@ -157,9 +157,8 @@ static int WriteChars _ANSI_ARGS_((Channel *chanPtr, CONST char *src, int srcLen)); #define BUSY_STATE(st,fl) \ - ((st)->csPtr && \ - ( (((fl)&TCL_READABLE)&&((st)->csPtr->readPtr ==(st)->topChanPtr)) || \ - (((fl)&TCL_WRITABLE)&&((st)->csPtr->writePtr==(st)->topChanPtr)))) + ((((st)->csPtrR) && ((fl) & TCL_READABLE)) || \ + (((st)->csPtrW) && ((fl) & TCL_WRITABLE))) /* *--------------------------------------------------------------------------- @@ -1218,7 +1217,8 @@ Tcl_CreateChannel(typePtr, chanName, instanceData, mask) statePtr->scriptRecordPtr = (EventScriptRecord *) NULL; statePtr->bufSize = CHANNELBUFFER_DEFAULT_SIZE; statePtr->timer = NULL; - statePtr->csPtr = NULL; + statePtr->csPtrR = NULL; + statePtr->csPtrW = NULL; statePtr->outputStage = NULL; if ((statePtr->encoding != NULL) && (statePtr->flags & TCL_WRITABLE)) { @@ -1374,13 +1374,18 @@ Tcl_StackChannel(interp, typePtr, instanceData, mask, prevChan) */ if ((mask & TCL_WRITABLE) != 0) { - CopyState *csPtr; + CopyState *csPtrR; + CopyState *csPtrW; - csPtr = statePtr->csPtr; - statePtr->csPtr = (CopyState*) NULL; + csPtrR = statePtr->csPtrR; + statePtr->csPtrR = (CopyState*) NULL; + + csPtrW = statePtr->csPtrW; + statePtr->csPtrW = (CopyState*) NULL; if (Tcl_Flush((Tcl_Channel) prevChanPtr) != TCL_OK) { - statePtr->csPtr = csPtr; + statePtr->csPtrR = csPtrR; + statePtr->csPtrW = csPtrW; if (interp) { Tcl_AppendResult(interp, "could not flush channel \"", Tcl_GetChannelName(prevChan), "\"", (char *) NULL); @@ -1388,7 +1393,8 @@ Tcl_StackChannel(interp, typePtr, instanceData, mask, prevChan) return (Tcl_Channel) NULL; } - statePtr->csPtr = csPtr; + statePtr->csPtrR = csPtrR; + statePtr->csPtrW = csPtrW; } /* * Discard any input in the buffers. They are not yet read by the @@ -1503,13 +1509,18 @@ Tcl_UnstackChannel (interp, chan) */ if (statePtr->flags & TCL_WRITABLE) { - CopyState* csPtr; + CopyState *csPtrR; + CopyState *csPtrW; + + csPtrR = statePtr->csPtrR; + statePtr->csPtrR = (CopyState*) NULL; - csPtr = statePtr->csPtr; - statePtr->csPtr = (CopyState*) NULL; + csPtrW = statePtr->csPtrW; + statePtr->csPtrW = (CopyState*) NULL; if (Tcl_Flush((Tcl_Channel) chanPtr) != TCL_OK) { - statePtr->csPtr = csPtr; + statePtr->csPtrR = csPtrR; + statePtr->csPtrW = csPtrW; if (interp) { Tcl_AppendResult(interp, "could not flush channel \"", Tcl_GetChannelName((Tcl_Channel) chanPtr), "\"", @@ -1518,7 +1529,8 @@ Tcl_UnstackChannel (interp, chan) return TCL_ERROR; } - statePtr->csPtr = csPtr; + statePtr->csPtrR = csPtrR; + statePtr->csPtrW = csPtrW; } /* @@ -2739,7 +2751,8 @@ Tcl_ClearChannelHandlers (channel) * Cancel any pending copy operation. */ - StopCopy(statePtr->csPtr); + StopCopy(statePtr->csPtrR); + StopCopy(statePtr->csPtrW); /* * Must set the interest mask now to 0, otherwise infinite loops @@ -6319,12 +6332,10 @@ Tcl_GetChannelOption(interp, chan, optionName, dsPtr) * If we are in the middle of a background copy, use the saved flags. */ - if (statePtr->csPtr) { - if (chanPtr == statePtr->csPtr->readPtr) { - flags = statePtr->csPtr->readFlags; - } else { - flags = statePtr->csPtr->writeFlags; - } + if (statePtr->csPtrR) { + flags = statePtr->csPtrR->readFlags; + } else if (statePtr->csPtrW) { + flags = statePtr->csPtrW->writeFlags; } else { flags = statePtr->flags; } @@ -6534,7 +6545,7 @@ Tcl_SetChannelOption(interp, chan, optionName, newValue) * If the channel is in the middle of a background copy, fail. */ - if (statePtr->csPtr) { + if (statePtr->csPtrR || statePtr->csPtrW) { if (interp) { Tcl_AppendResult(interp, "unable to set channel options: background copy in progress", @@ -7757,8 +7768,9 @@ TclCopyChannel(interp, inChan, outChan, toRead, cmdPtr) Tcl_IncrRefCount(cmdPtr); } csPtr->cmdPtr = cmdPtr; - inStatePtr->csPtr = csPtr; - outStatePtr->csPtr = csPtr; + + inStatePtr->csPtrR = csPtr; + outStatePtr->csPtrW = csPtr; /* * Start copying data between the channels. @@ -8698,8 +8710,8 @@ StopCopy(csPtr) } Tcl_DecrRefCount(csPtr->cmdPtr); } - inStatePtr->csPtr = NULL; - outStatePtr->csPtr = NULL; + inStatePtr->csPtrR = NULL; + outStatePtr->csPtrW = NULL; ckfree((char*) csPtr); } diff --git a/generic/tclIO.h b/generic/tclIO.h index ea3c6e4..4564f32 100644 --- a/generic/tclIO.h +++ b/generic/tclIO.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.h,v 1.5.4.2 2004/07/15 20:46:19 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.h,v 1.5.4.3 2008/04/07 22:17:37 andreas_kupries Exp $ */ /* @@ -225,7 +225,8 @@ typedef struct ChannelState { int bufSize; /* What size buffers to allocate? */ Tcl_TimerToken timer; /* Handle to wakeup timer for this channel. */ - CopyState *csPtr; /* State of background copy, or NULL. */ + CopyState *csPtrR; /* State of background copy for which channel is input, or NULL. */ + CopyState *csPtrW; /* State of background copy for which channel is output, or NULL. */ Channel *topChanPtr; /* Refers to topmost channel in a stack. * Never NULL. */ Channel *bottomChanPtr; /* Refers to bottommost channel in a stack. diff --git a/tests/io.test b/tests/io.test index 696366b..f59226d 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.15 2008/04/07 19:41:00 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.16 2008/04/07 22:17:37 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7013,6 +7013,76 @@ test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { removeFile err catch {unset ::forever} } -result OK +test io-53.10 {Bug 1350564, multi-directional fcopy} -setup { + set err [makeFile {} err] + set pipe [open "|[info nameofexecutable] 2> $err" r+] + fconfigure $pipe -translation binary -buffering line + puts $pipe { + fconfigure stderr -buffering line + # Kill server when pipe closed by invoker. + proc bye args { + if {![eof stdin]} { gets stdin ; return } + puts stderr BYE + exit + } + # Server code. Bi-directional copy between 2 sockets. + proc geof {sok} { + puts stderr DONE/$sok + close $sok + } + proc new {sok args} { + puts stderr NEW/$sok + global l srv + fconfigure $sok -translation binary -buffering none + lappend l $sok + if {[llength $l]==2} { + close $srv + foreach {a b} $l break + fcopy $a $b -command [list geof $a] + fcopy $b $a -command [list geof $b] + puts stderr 2COPY + } + puts stderr ... + } + puts stderr SRV + set l {} + set srv [socket -server new 9999] + puts stderr WAITING + fileevent stdin readable bye + puts OK + vwait forever + } + # wait for OK from server. + gets $pipe + # Now the two clients. + proc ::done {sock} { + if {[eof $sock]} { close $sock ; return } + lappend ::forever [gets $sock] + return + } + set a [socket 127.0.0.1 9999] + set b [socket 127.0.0.1 9999] + fconfigure $a -translation binary -buffering none + fconfigure $b -translation binary -buffering none + fileevent $a readable [list ::done $a] + fileevent $b readable [list ::done $b] +} -constraints {stdio openpipe fcopy} -body { + # Now pass data through the server in both directions. + set ::forever {} + puts $a AB + vwait ::forever + puts $b BA + vwait ::forever + set ::forever +} -cleanup { + catch {close $a} + catch {close $b} + close $pipe + rename ::done {} + after 1000 ;# Give Windows time to kill the process + removeFile err + catch {unset ::forever} +} -result {AB BA} test io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive -- cgit v0.12 From 58cdf9a29789c2ea52ed2b5999be5638c6213498 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 7 Apr 2008 22:33:28 +0000 Subject: * tests/io.test (io-53.10): Testcase for bi-directionaly fcopy. * tests/chanio.test: * generic/tclIO.c: Additional changes to data structures for fcopy * generic/tclIO.h: and channels to perform proper cleanup in case of a channel having two background copy operations running as is now possible. --- ChangeLog | 15 ++++++++++++ generic/tclIO.c | 66 +++++++++++++++++++++++++++++--------------------- generic/tclIO.h | 5 ++-- tests/chanio.test | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- tests/io.test | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 199 insertions(+), 31 deletions(-) diff --git a/ChangeLog b/ChangeLog index 399ce04..f557550 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,20 @@ 2008-04-07 Andreas Kupries + * tests/io.test (io-53.10): Testcase for bi-directionaly fcopy. + * tests/chanio.test: + * generic/tclIO.c: Additional changes to data structures for fcopy + * generic/tclIO.h: and channels to perform proper cleanup in case + of a channel having two background copy operations running as is + now possible. + + * tests/io.test (io-53.10): Testcase for bi-directionaly fcopy. + * generic/tclIO.c: Additional changes to data structures for fcopy + and channels to perform proper cleanup in case of a channel + having two background copy operations running as is now + possible. + +2008-04-07 Andreas Kupries + * generic/tclIO.c (BUSY_STATE, CheckChannelErrors, TclCopyChannel): New macro, and the places using it. This change allows for bi-directional fcopy on channels. [Bug 1350564]. diff --git a/generic/tclIO.c b/generic/tclIO.c index 783011f..77d586c 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.3 2008/04/07 19:42:03 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.4 2008/04/07 22:33:29 andreas_kupries Exp $ */ #include "tclInt.h" @@ -222,9 +222,8 @@ static Tcl_ObjType tclChannelType = { ((objPtr)->internalRep.otherValuePtr = (void *) (storePtr)) #define BUSY_STATE(st,fl) \ - ((st)->csPtr && \ - ( (((fl)&TCL_READABLE)&&((st)->csPtr->readPtr ==(st)->topChanPtr)) || \ - (((fl)&TCL_WRITABLE)&&((st)->csPtr->writePtr==(st)->topChanPtr)))) + ((((st)->csPtrR) && ((fl) & TCL_READABLE)) || \ + (((st)->csPtrW) && ((fl) & TCL_WRITABLE))) /* *--------------------------------------------------------------------------- @@ -1317,7 +1316,8 @@ Tcl_CreateChannel( statePtr->scriptRecordPtr = NULL; statePtr->bufSize = CHANNELBUFFER_DEFAULT_SIZE; statePtr->timer = NULL; - statePtr->csPtr = NULL; + statePtr->csPtrR = NULL; + statePtr->csPtrW = NULL; statePtr->outputStage = NULL; if ((statePtr->encoding != NULL) && (statePtr->flags & TCL_WRITABLE)) { @@ -1478,13 +1478,18 @@ Tcl_StackChannel( */ if ((mask & TCL_WRITABLE) != 0) { - CopyState *csPtr; + CopyState *csPtrR; + CopyState *csPtrW; - csPtr = statePtr->csPtr; - statePtr->csPtr = NULL; + csPtrR = statePtr->csPtrR; + statePtr->csPtrR = NULL; + + csPtrW = statePtr->csPtrW; + statePtr->csPtrW = NULL; if (Tcl_Flush((Tcl_Channel) prevChanPtr) != TCL_OK) { - statePtr->csPtr = csPtr; + statePtr->csPtrR = csPtrR; + statePtr->csPtrW = csPtrW; if (interp) { Tcl_AppendResult(interp, "could not flush channel \"", Tcl_GetChannelName(prevChan), "\"", NULL); @@ -1492,7 +1497,8 @@ Tcl_StackChannel( return NULL; } - statePtr->csPtr = csPtr; + statePtr->csPtrR = csPtrR; + statePtr->csPtrW = csPtrW; } /* @@ -1624,13 +1630,18 @@ Tcl_UnstackChannel( */ if (statePtr->flags & TCL_WRITABLE) { - CopyState *csPtr; + CopyState *csPtrR; + CopyState *csPtrW; + + csPtrR = statePtr->csPtrR; + statePtr->csPtrR = NULL; - csPtr = statePtr->csPtr; - statePtr->csPtr = NULL; + csPtrW = statePtr->csPtrW; + statePtr->csPtrW = NULL; if (Tcl_Flush((Tcl_Channel) chanPtr) != TCL_OK) { - statePtr->csPtr = csPtr; + statePtr->csPtrR = csPtrR; + statePtr->csPtrW = csPtrW; /* * TIP #219, Tcl Channel Reflection API. @@ -1648,7 +1659,8 @@ Tcl_UnstackChannel( return TCL_ERROR; } - statePtr->csPtr = csPtr; + statePtr->csPtrR = csPtrR; + statePtr->csPtrW = csPtrW; } /* @@ -3091,7 +3103,8 @@ Tcl_ClearChannelHandlers( * Cancel any pending copy operation. */ - StopCopy(statePtr->csPtr); + StopCopy(statePtr->csPtrR); + StopCopy(statePtr->csPtrW); /* * Must set the interest mask now to 0, otherwise infinite loops @@ -7096,12 +7109,10 @@ Tcl_GetChannelOption( * If we are in the middle of a background copy, use the saved flags. */ - if (statePtr->csPtr) { - if (chanPtr == statePtr->csPtr->readPtr) { - flags = statePtr->csPtr->readFlags; - } else { - flags = statePtr->csPtr->writeFlags; - } + if (statePtr->csPtrR) { + flags = statePtr->csPtrR->readFlags; + } else if (statePtr->csPtrW) { + flags = statePtr->csPtrW->writeFlags; } else { flags = statePtr->flags; } @@ -7311,7 +7322,7 @@ Tcl_SetChannelOption( * If the channel is in the middle of a background copy, fail. */ - if (statePtr->csPtr) { + if (statePtr->csPtrR || statePtr->csPtrW) { if (interp) { Tcl_AppendResult(interp, "unable to set channel options: " "background copy in progress", NULL); @@ -8498,8 +8509,9 @@ TclCopyChannel( Tcl_IncrRefCount(cmdPtr); } csPtr->cmdPtr = cmdPtr; - inStatePtr->csPtr = csPtr; - outStatePtr->csPtr = csPtr; + + inStatePtr->csPtrR = csPtr; + outStatePtr->csPtrW = csPtr; /* * Start copying data between the channels. @@ -9451,8 +9463,8 @@ StopCopy( } TclDecrRefCount(csPtr->cmdPtr); } - inStatePtr->csPtr = NULL; - outStatePtr->csPtr = NULL; + inStatePtr->csPtrR = NULL; + outStatePtr->csPtrW = NULL; ckfree((char *) csPtr); } diff --git a/generic/tclIO.h b/generic/tclIO.h index 411f48d..eab83eb 100644 --- a/generic/tclIO.h +++ b/generic/tclIO.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.h,v 1.11 2007/12/13 15:23:18 dgp Exp $ + * RCS: @(#) $Id: tclIO.h,v 1.11.2.1 2008/04/07 22:33:30 andreas_kupries Exp $ */ /* @@ -219,7 +219,8 @@ typedef struct ChannelState { * handlers ("fileevent") on this channel. */ int bufSize; /* What size buffers to allocate? */ Tcl_TimerToken timer; /* Handle to wakeup timer for this channel. */ - CopyState *csPtr; /* State of background copy, or NULL. */ + CopyState *csPtrR; /* State of background copy for which channel is input, or NULL. */ + CopyState *csPtrW; /* State of background copy for which channel is output, or NULL. */ Channel *topChanPtr; /* Refers to topmost channel in a stack. Never * NULL. */ Channel *bottomChanPtr; /* Refers to bottommost channel in a stack. diff --git a/tests/chanio.test b/tests/chanio.test index d44902d..7580d30 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.3 2008/04/06 00:52:09 kennykb Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.4 2008/04/07 22:33:30 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6982,6 +6982,76 @@ test chan-io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { catch {removeFile err} catch {unset ::forever} } -result OK +test io-53.10 {Bug 1350564, multi-directional fcopy} -setup { + set err [makeFile {} err] + set pipe [open "|[info nameofexecutable] 2> $err" r+] + chan configure $pipe -translation binary -buffering line + chan puts $pipe { + chan configure stderr -buffering line + # Kill server when pipe closed by invoker. + proc bye args { + if {![chan eof stdin]} { chan gets stdin ; return } + chan puts stderr BYE + exit + } + # Server code. Bi-directional copy between 2 sockets. + proc geof {sok} { + chan puts stderr DONE/$sok + chan close $sok + } + proc new {sok args} { + chan puts stderr NEW/$sok + global l srv + chan configure $sok -translation binary -buffering none + lappend l $sok + if {[llength $l]==2} { + chan close $srv + foreach {a b} $l break + chan copy $a $b -command [list geof $a] + chan copy $b $a -command [list geof $b] + chan puts stderr 2COPY + } + chan puts stderr ... + } + chan puts stderr SRV + set l {} + set srv [socket -server new 9999] + chan puts stderr WAITING + chan event stdin readable bye + chan puts OK + vwait forever + } + # wait for OK from server. + chan gets $pipe + # Now the two clients. + proc ::done {sock} { + if {[chan eof $sock]} { chan close $sock ; return } + lappend ::forever [chan gets $sock] + return + } + set a [socket 127.0.0.1 9999] + set b [socket 127.0.0.1 9999] + chan configure $a -translation binary -buffering none + chan configure $b -translation binary -buffering none + chan event $a readable [list ::done $a] + chan event $b readable [list ::done $b] +} -constraints {stdio openpipe fcopy} -body { + # Now pass data through the server in both directions. + set ::forever {} + chan puts $a AB + vwait ::forever + chan puts $b BA + vwait ::forever + set ::forever +} -cleanup { + catch {chan close $a} + catch {chan close $b} + chan close $pipe + rename ::done {} + after 1000 ;# Give Windows time to kill the process + removeFile err + catch {unset ::forever} +} -result {AB BA} test chan-io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive diff --git a/tests/io.test b/tests/io.test index 27ccdbd..4b495fa 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.3 2008/04/06 00:52:10 kennykb Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.4 2008/04/07 22:33:30 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6981,6 +6981,76 @@ test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { catch {removeFile err} catch {unset ::forever} } -result OK +test io-53.10 {Bug 1350564, multi-directional fcopy} -setup { + set err [makeFile {} err] + set pipe [open "|[info nameofexecutable] 2> $err" r+] + fconfigure $pipe -translation binary -buffering line + puts $pipe { + fconfigure stderr -buffering line + # Kill server when pipe closed by invoker. + proc bye args { + if {![eof stdin]} { gets stdin ; return } + puts stderr BYE + exit + } + # Server code. Bi-directional copy between 2 sockets. + proc geof {sok} { + puts stderr DONE/$sok + close $sok + } + proc new {sok args} { + puts stderr NEW/$sok + global l srv + fconfigure $sok -translation binary -buffering none + lappend l $sok + if {[llength $l]==2} { + close $srv + foreach {a b} $l break + fcopy $a $b -command [list geof $a] + fcopy $b $a -command [list geof $b] + puts stderr 2COPY + } + puts stderr ... + } + puts stderr SRV + set l {} + set srv [socket -server new 9999] + puts stderr WAITING + fileevent stdin readable bye + puts OK + vwait forever + } + # wait for OK from server. + gets $pipe + # Now the two clients. + proc ::done {sock} { + if {[eof $sock]} { close $sock ; return } + lappend ::forever [gets $sock] + return + } + set a [socket 127.0.0.1 9999] + set b [socket 127.0.0.1 9999] + fconfigure $a -translation binary -buffering none + fconfigure $b -translation binary -buffering none + fileevent $a readable [list ::done $a] + fileevent $b readable [list ::done $b] +} -constraints {stdio openpipe fcopy} -body { + # Now pass data through the server in both directions. + set ::forever {} + puts $a AB + vwait ::forever + puts $b BA + vwait ::forever + set ::forever +} -cleanup { + catch {close $a} + catch {close $b} + close $pipe + rename ::done {} + after 1000 ;# Give Windows time to kill the process + removeFile err + catch {unset ::forever} +} -result {AB BA} test io-54.1 {Recursive channel events} {socket fileevent} { # This test checks to see if file events are delivered during recursive -- cgit v0.12 From 020b89adf6c1706fd36722233e8acb5eb7c8d032 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 7 Apr 2008 22:49:18 +0000 Subject: Corrected test name. --- tests/chanio.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/chanio.test b/tests/chanio.test index 7580d30..b4287f5 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.4 2008/04/07 22:33:30 andreas_kupries Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.5 2008/04/07 22:49:18 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6982,7 +6982,7 @@ test chan-io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { catch {removeFile err} catch {unset ::forever} } -result OK -test io-53.10 {Bug 1350564, multi-directional fcopy} -setup { +test chan-io-53.10 {Bug 1350564, multi-directional fcopy} -setup { set err [makeFile {} err] set pipe [open "|[info nameofexecutable] 2> $err" r+] chan configure $pipe -translation binary -buffering line -- cgit v0.12 From 03b825deba94040867c2e1a61ab935abcba9d675 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 8 Apr 2008 16:12:02 +0000 Subject: backport enhanced comments --- generic/tclExecute.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 1677a78..0003fb2 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369 2008/03/18 18:52:07 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.1 2008/04/08 16:12:02 dgp Exp $ */ #include "tclInt.h" @@ -851,23 +851,36 @@ TclFinalizeExecution(void) /* * Auxiliary code to insure that GrowEvaluationStack always returns correctly - * aligned memory. This assumes that TCL_ALLOCALIGN is a multiple of the - * wordsize 'sizeof(Tcl_Obj *)'. + * aligned memory. + * + * WALLOCALIGN represents the alignment reqs in words, just as TCL_ALLOCALIGN + * represents the reqs in bytes. This assumes that TCL_ALLOCALIGN is a + * multiple of the wordsize 'sizeof(Tcl_Obj *)'. */ #define WALLOCALIGN \ (TCL_ALLOCALIGN/sizeof(Tcl_Obj *)) +/* + * OFFSET computes how many words have to be skipped until the next aligned + * word. Note that we are only interested in the low order bits of ptr, so + * that any possible information loss in PTR2INT is of no consequence. + */ + static inline int OFFSET( void *ptr) { int mask = TCL_ALLOCALIGN-1; int base = PTR2INT(ptr) & mask; - return (TCL_ALLOCALIGN - base)/sizeof(Tcl_Obj**); + return (TCL_ALLOCALIGN - base)/sizeof(Tcl_Obj *); } -#define MEMSTART(markerPtr) \ +/* + * Given a marker, compute where the following aligned memory starts. + */ + +#define MEMSTART(markerPtr) \ ((markerPtr) + OFFSET(markerPtr)) -- cgit v0.12 From 712e8111093149680388ac32ee90b21290554bb3 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 8 Apr 2008 23:16:02 +0000 Subject: * tests/chanio.test (chan-io-53.8,53.9,53.10): fix typo & quoting for * tests/io.test (io-53.8,53.9,53.10): spaces in builddir path --- ChangeLog | 54 ++++++++++++++++++++++++++++-------------------------- tests/chanio.test | 8 ++++---- tests/io.test | 8 ++++---- 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index f557550..28d7a89 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,31 +1,34 @@ +2008-04-09 Daniel Steffen + + * tests/chanio.test (chan-io-53.8,53.9,53.10): fix typo & quoting for + * tests/io.test (io-53.8,53.9,53.10): spaces in builddir path + 2008-04-07 Andreas Kupries * tests/io.test (io-53.10): Testcase for bi-directionaly fcopy. * tests/chanio.test: * generic/tclIO.c: Additional changes to data structures for fcopy * generic/tclIO.h: and channels to perform proper cleanup in case - of a channel having two background copy operations running as is - now possible. + of a channel having two background copy operations running as is + now possible. * tests/io.test (io-53.10): Testcase for bi-directionaly fcopy. * generic/tclIO.c: Additional changes to data structures for fcopy - and channels to perform proper cleanup in case of a channel - having two background copy operations running as is now - possible. + and channels to perform proper cleanup in case of a channel having + two background copy operations running as is now possible. 2008-04-07 Andreas Kupries * generic/tclIO.c (BUSY_STATE, CheckChannelErrors, - TclCopyChannel): New macro, and the places using it. This change - allows for bi-directional fcopy on channels. [Bug 1350564]. - Thanks to Alexandre Ferrieux - for the patch. + TclCopyChannel): New macro, and the places using it. This change + allows for bi-directional fcopy on channels. [Bug 1350564]. Thanks + to Alexandre Ferrieux for the + patch. 2008-04-07 Reinhard Max - * generic/tclStringObj.c (Tcl_AppendFormatToObj): - Fix [format {% d}] so that it behaves the same way as in 8.4 and - as C's printf(). + * generic/tclStringObj.c (Tcl_AppendFormatToObj): Fix [format {% d}] + so that it behaves the same way as in 8.4 and as C's printf(). * tests/format.test: Add a test for '% d' and '%+d'. 2008-04-05 Kevin B. Kenny @@ -55,23 +58,22 @@ * tests/io.test (io-53.9): Added testcase for [Bug 780533], based * tests/chanio.test: on Alexandre's test script. Also fixed - problem with timer in preceding test, was not canceled properly - in the ok case. + problem with timer in preceding test, was not canceled properly in + the ok case. 2008-04-04 Andreas Kupries * generic/tclIORChan.c (ReflectOutput): Allow zero return from - write when input was zero-length anyway. Otherwise keept it an - error, and separate the message from 'written too much'. + write when input was zero-length anyway. Otherwise keept it an + error, and separate the message from 'written too much'. * tests/ioCmd.test (iocmd-24.6): Testcase updated for changed - message. + message. * generic/tclIORChan.c (ReflectClose): Added missing removal of - the now closed channel from the reflection map. Before we could - crash the system by invoking 'chan postevent' on a closed - reflected channel, dereferencing the dangling pointer in the - map. + the now closed channel from the reflection map. Before we could + crash the system by invoking 'chan postevent' on a closed + reflected channel, dereferencing the dangling pointer in the map. * tests/ioCmd.test (iocmd-31.8): Testcase for the above. @@ -80,15 +82,15 @@ * generic/tclIO.c (CopyData): Applied patch [Bug 1932639] to * tests/io.test: prevent fcopy from calling -command synchronously * tests/chanio.test: the first time. Thanks to Alexandre Ferrieux - for report and patch. + for report and patch. 2008-04-02 Andreas Kupries * generic/tclIO.c (CopyData): Applied patch for the fcopy problem - [Bug 780533], with many thanks to Alexandre Ferrieux - for tracking it down and - providing a solution. Still have to convert his test script into - a proper test case. + [Bug 780533], with many thanks to Alexandre Ferrieux + for tracking it down and + providing a solution. Still have to convert his test script into a + proper test case. 2008-04-01 Andreas Kupries diff --git a/tests/chanio.test b/tests/chanio.test index b4287f5..0526f65 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.5 2008/04/07 22:49:18 andreas_kupries Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.6 2008/04/08 23:16:04 das Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6911,7 +6911,7 @@ test chan-io-53.8 {CopyData: async callback and error handling, Bug 1932639} -se # Run the copy. Should not invoke -command now. chan copy $f $g -size 2 -command ::cmd # Check that -command was not called synchronously - set sbs [file size bar] + set sbs [file size $bar] lappend ::RES [expr {($sbs > 0) ? "sync/FAIL" : "sync/OK"}] $sbs # Now let the async part happen. Should capture the error in cmd # via bgerror. If not break the event loop via timer. @@ -6936,7 +6936,7 @@ test chan-io-53.8 {CopyData: async callback and error handling, Bug 1932639} -se test chan-io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { set out [makeFile {} out] set err [makeFile {} err] - set pipe [open "|[info nameofexecutable] 2> $err" r+] + set pipe [open "|[list [info nameofexecutable] 2> $err]" r+] chan configure $pipe -translation binary -buffering line chan puts $pipe { chan configure stdout -translation binary -buffering line @@ -6984,7 +6984,7 @@ test chan-io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { } -result OK test chan-io-53.10 {Bug 1350564, multi-directional fcopy} -setup { set err [makeFile {} err] - set pipe [open "|[info nameofexecutable] 2> $err" r+] + set pipe [open "|[list [info nameofexecutable] 2> $err]" r+] chan configure $pipe -translation binary -buffering line chan puts $pipe { chan configure stderr -buffering line diff --git a/tests/io.test b/tests/io.test index 4b495fa..9d4c45f 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.4 2008/04/07 22:33:30 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.5 2008/04/08 23:16:06 das Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6911,7 +6911,7 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { # Run the copy. Should not invoke -command now. fcopy $f $g -size 2 -command ::cmd # Check that -command was not called synchronously - set sbs [file size bar] + set sbs [file size $bar] lappend ::RES [expr {($sbs > 0) ? "sync/FAIL" : "sync/OK"}] $sbs # Now let the async part happen. Should capture the error in cmd # via bgerror. If not break the event loop via timer. @@ -6936,7 +6936,7 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { set out [makeFile {} out] set err [makeFile {} err] - set pipe [open "|[info nameofexecutable] 2> $err" r+] + set pipe [open "|[list [info nameofexecutable] 2> $err]" r+] fconfigure $pipe -translation binary -buffering line puts $pipe { fconfigure stdout -translation binary -buffering line @@ -6983,7 +6983,7 @@ test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { } -result OK test io-53.10 {Bug 1350564, multi-directional fcopy} -setup { set err [makeFile {} err] - set pipe [open "|[info nameofexecutable] 2> $err" r+] + set pipe [open "|[list [info nameofexecutable] 2> $err]" r+] fconfigure $pipe -translation binary -buffering line puts $pipe { fconfigure stderr -buffering line -- cgit v0.12 From b9d8b42283130a00f36eb16526ac8543a95ddc97 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 8 Apr 2008 23:37:34 +0000 Subject: * tests/io.test (io-53.8,53.9,53.10): Backported das' fix of typo and quoting for spaces in builddir path. --- ChangeLog | 5 +++++ tests/io.test | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2a6f378..785741a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-04-08 Andreas Kupries + + * tests/io.test (io-53.8,53.9,53.10): Backported das' fix of typo + and quoting for spaces in builddir path. + 2008-04-07 Andreas Kupries * tests/io.test (io-53.10): Testcase for bi-directionaly fcopy. diff --git a/tests/io.test b/tests/io.test index f59226d..f9289ca 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.16 2008/04/07 22:17:37 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.17 2008/04/08 23:37:36 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6943,7 +6943,7 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { # Run the copy. Should not invoke -command now. fcopy $f $g -size 2 -command ::cmd # Check that -command was not called synchronously - set sbs [file size bar] + set sbs [file size $bar] lappend ::RES [expr {($sbs > 0) ? "sync/FAIL" : "sync/OK"}] $sbs # Now let the async part happen. Should capture the error in cmd # via bgerror. If not break the event loop via timer. @@ -6968,7 +6968,7 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { set out [makeFile {} out] set err [makeFile {} err] - set pipe [open "|[info nameofexecutable] 2> $err" r+] + set pipe [open "|[list [info nameofexecutable] 2> $err]" r+] fconfigure $pipe -translation binary -buffering line puts $pipe { fconfigure stdout -translation binary -buffering line @@ -7015,7 +7015,7 @@ test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { } -result OK test io-53.10 {Bug 1350564, multi-directional fcopy} -setup { set err [makeFile {} err] - set pipe [open "|[info nameofexecutable] 2> $err" r+] + set pipe [open "|[list [info nameofexecutable] 2> $err]" r+] fconfigure $pipe -translation binary -buffering line puts $pipe { fconfigure stderr -buffering line -- cgit v0.12 From 7ddc20c67752f9b428d5c213d2a1964790b2516a Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 8 Apr 2008 23:41:18 +0000 Subject: * tests/io.test (io-53.8): Fixed ordering of vwait and after cancel. cancel has to be done after the vwait completes. --- ChangeLog | 5 +++++ tests/io.test | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 28d7a89..9d05541 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-04-08 Andreas Kupries + + * tests/io.test (io-53.8): Fixed ordering of vwait and after + cancel. cancel has to be done after the vwait completes. + 2008-04-09 Daniel Steffen * tests/chanio.test (chan-io-53.8,53.9,53.10): fix typo & quoting for diff --git a/tests/io.test b/tests/io.test index 9d4c45f..3caecc3 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.5 2008/04/08 23:16:06 das Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.6 2008/04/08 23:41:20 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6919,8 +6919,8 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { lappend ::RES {bgerror/FAIL timeout} set ::forever has-been-reached }] - catch {after cancel $token} vwait ::forever + catch {after cancel $token} # Report set ::RES } -cleanup { -- cgit v0.12 From 22bed54a233c2bf15f51fd149e2059b59205be71 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 9 Apr 2008 18:35:25 +0000 Subject: * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Added checking of -size * tests/ioCmd.test (iocmd-15.{13,14}): value to reject negative values, and values overflowing 32-bit signed. [Bug 1557855]. Basic patch by Alexandre Ferrieux , with modifications from me to separate overflow from true negative value. Extended testsuite. --- ChangeLog | 9 +++++++++ generic/tclIOCmd.c | 16 +++++++++++++++- tests/ioCmd.test | 8 +++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 785741a..a4e3700 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-04-09 Andreas Kupries + + * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Added checking of -size + * tests/ioCmd.test (iocmd-15.{13,14}): value to reject negative + values, and values overflowing 32-bit signed. [Bug 1557855]. Basic + patch by Alexandre Ferrieux , with + modifications from me to separate overflow from true negative + value. Extended testsuite. + 2008-04-08 Andreas Kupries * tests/io.test (io-53.8,53.9,53.10): Backported das' fix of typo diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c index 300bef0..48debd8 100644 --- a/generic/tclIOCmd.c +++ b/generic/tclIOCmd.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOCmd.c,v 1.15.2.3 2008/02/26 22:30:26 hobbs Exp $ + * RCS: @(#) $Id: tclIOCmd.c,v 1.15.2.4 2008/04/09 18:35:27 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1542,6 +1542,20 @@ Tcl_FcopyObjCmd(dummy, interp, objc, objv) if (Tcl_GetIntFromObj(interp, objv[i+1], &toRead) != TCL_OK) { return TCL_ERROR; } + if (toRead<0) { + Tcl_WideInt w; + if (Tcl_GetWideIntFromObj(interp, objv[i+1], &w) != TCL_OK) { + return TCL_ERROR; + } + if (w >= (Tcl_WideInt)0) { + Tcl_AppendResult(interp, + "integer value to large to represent as 32bit signed value", + NULL); + } else { + Tcl_AppendResult(interp, "negative size forbidden", NULL); + } + return TCL_ERROR; + } break; case FcopyCommand: cmdPtr = objv[i+1]; diff --git a/tests/ioCmd.test b/tests/ioCmd.test index 29ddba7..979f3cc 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.16.2.3 2006/03/16 18:23:24 andreas_kupries Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.16.2.4 2008/04/09 18:35:28 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -577,6 +577,12 @@ test iocmd-15.11 {Tcl_FcopyObjCmd} {fcopy} { test iocmd-15.12 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile $wfile -command bar -size foo} msg] $msg } {1 {expected integer but got "foo"}} +test iocmd-15.13 {Tcl_FcopyObjCmd} {fcopy} { + list [catch {fcopy $rfile $wfile -command bar -size 3221176172} msg] $msg +} {1 {integer value to large to represent as 32bit signed value}} +test iocmd-15.14 {Tcl_FcopyObjCmd} {fcopy} { + list [catch {fcopy $rfile $wfile -command bar -size -2} msg] $msg +} {1 {negative size forbidden}} close $rfile close $wfile -- cgit v0.12 From e5d9de8d2936e6830fbef2615afe0bda28903a81 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 9 Apr 2008 18:36:17 +0000 Subject: * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Added checking of -size * tests/ioCmd.test (iocmd-15.{13,14}): value to reject negative values, and values overflowing 32-bit signed. [Bug 1557855]. Basic patch by Alexandre Ferrieux , with modifications from me to separate overflow from true negative value. Extended testsuite. --- ChangeLog | 9 +++++++++ generic/tclIOCmd.c | 16 +++++++++++++++- tests/ioCmd.test | 8 +++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9d05541..3cb9be1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-04-09 Andreas Kupries + + * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Added checking of -size + * tests/ioCmd.test (iocmd-15.{13,14}): value to reject negative + values, and values overflowing 32-bit signed. [Bug 1557855]. Basic + patch by Alexandre Ferrieux , with + modifications from me to separate overflow from true negative + value. Extended testsuite. + 2008-04-08 Andreas Kupries * tests/io.test (io-53.8): Fixed ordering of vwait and after diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c index c1abee1..3c34845 100644 --- a/generic/tclIOCmd.c +++ b/generic/tclIOCmd.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOCmd.c,v 1.51 2007/12/13 15:23:18 dgp Exp $ + * RCS: @(#) $Id: tclIOCmd.c,v 1.51.2.1 2008/04/09 18:36:18 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1643,6 +1643,20 @@ Tcl_FcopyObjCmd( if (TclGetIntFromObj(interp, objv[i+1], &toRead) != TCL_OK) { return TCL_ERROR; } + if (toRead<0) { + Tcl_WideInt w; + if (Tcl_GetWideIntFromObj(interp, objv[i+1], &w) != TCL_OK) { + return TCL_ERROR; + } + if (w >= (Tcl_WideInt)0) { + Tcl_AppendResult(interp, + "integer value to large to represent as 32bit signed value", + NULL); + } else { + Tcl_AppendResult(interp, "negative size forbidden", NULL); + } + return TCL_ERROR; + } break; case FcopyCommand: cmdPtr = objv[i+1]; diff --git a/tests/ioCmd.test b/tests/ioCmd.test index fcdc326..2906871 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.36.2.2 2008/04/04 17:19:43 andreas_kupries Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.36.2.3 2008/04/09 18:36:18 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -606,6 +606,12 @@ test iocmd-15.11 {Tcl_FcopyObjCmd} {fcopy} { test iocmd-15.12 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile $wfile -command bar -size foo} msg] $msg } {1 {expected integer but got "foo"}} +test iocmd-15.13 {Tcl_FcopyObjCmd} {fcopy} { + list [catch {fcopy $rfile $wfile -command bar -size 3221176172} msg] $msg +} {1 {integer value to large to represent as 32bit signed value}} +test iocmd-15.14 {Tcl_FcopyObjCmd} {fcopy} { + list [catch {fcopy $rfile $wfile -command bar -size -2} msg] $msg +} {1 {negative size forbidden}} close $rfile close $wfile -- cgit v0.12 From d3b620c65854c8ff37d4e90fa7c04c980a2af171 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 9 Apr 2008 19:51:10 +0000 Subject: * tests/chanio.test (chan-io-52.5): Removed '-size -1' from test, * tests/io.test (io-52.5): does not seem to have any bearing, and was an illegal value. --- ChangeLog | 4 ++++ tests/chanio.test | 4 ++-- tests/io.test | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3cb9be1..be32e53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2008-04-09 Andreas Kupries + * tests/chanio.test (chan-io-52.5): Removed '-size -1' from test, + * tests/io.test (io-52.5): does not seem to have any bearing, and + was an illegal value. + * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Added checking of -size * tests/ioCmd.test (iocmd-15.{13,14}): value to reject negative values, and values overflowing 32-bit signed. [Bug 1557855]. Basic diff --git a/tests/chanio.test b/tests/chanio.test index 0526f65..75c0013 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.6 2008/04/08 23:16:04 das Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.7 2008/04/09 19:51:12 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6547,7 +6547,7 @@ test chan-io-52.5 {TclCopyChannel} {fcopy} { set f2 [open $path(test1) w] chan configure $f1 -translation lf -blocking 0 chan configure $f2 -translation lf -blocking 0 - chan copy $f1 $f2 -size -1 + chan copy $f1 $f2 ;#-size -1 set result [list [chan configure $f1 -blocking] [chan configure $f2 -blocking]] chan close $f1 chan close $f2 diff --git a/tests/io.test b/tests/io.test index 3caecc3..45e7338 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.6 2008/04/08 23:41:20 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.7 2008/04/09 19:51:12 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6547,7 +6547,7 @@ test io-52.5 {TclCopyChannel} {fcopy} { set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 fconfigure $f2 -translation lf -blocking 0 - fcopy $f1 $f2 -size -1 + fcopy $f1 $f2 ;#-size -1 set result [list [fconfigure $f1 -blocking] [fconfigure $f2 -blocking]] close $f1 close $f2 -- cgit v0.12 From 7771a657c1cab8174616928296ec54f956aae809 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 9 Apr 2008 19:52:50 +0000 Subject: * tests/io.test (io-52.5): Removed '-size -1' from test, does not seem to have any bearing, and was an illegal value. Test case is not affected by the value of -size, test flag restoration and that everything was properly copied. --- ChangeLog | 5 +++++ tests/io.test | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a4e3700..66b5fe7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2008-04-09 Andreas Kupries + * tests/io.test (io-52.5): Removed '-size -1' from test, does not + seem to have any bearing, and was an illegal value. Test case is + not affected by the value of -size, test flag restoration and that + everything was properly copied. + * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Added checking of -size * tests/ioCmd.test (iocmd-15.{13,14}): value to reject negative values, and values overflowing 32-bit signed. [Bug 1557855]. Basic diff --git a/tests/io.test b/tests/io.test index f9289ca..c6ef73d 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.17 2008/04/08 23:37:36 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.18 2008/04/09 19:52:51 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6568,7 +6568,7 @@ test io-52.5 {TclCopyChannel} {fcopy} { set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 fconfigure $f2 -translation lf -blocking 0 - fcopy $f1 $f2 -size -1 + fcopy $f1 $f2 ;#-size -1 set result [list [fconfigure $f1 -blocking] [fconfigure $f2 -blocking]] close $f1 close $f2 -- cgit v0.12 From 79f2b1d44214dd346a198ac6dde940f3ad0532ea Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 10 Apr 2008 20:53:45 +0000 Subject: * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Keeping check for negative values, changed to not be an error, but behave like the special value -1 (copy all, default). * tests/iocmd.test (iocmd-15.{12,13}): Removed. * tests/io.test (io-52.5{,a,b}): Reverted last change, added comment regarding the meaning of -1, added two more testcases for other negative values, and input wrapped to negative. --- ChangeLog | 12 ++++++++++++ generic/tclIOCmd.c | 21 ++++++++------------- tests/io.test | 40 +++++++++++++++++++++++++++++++++++++--- tests/ioCmd.test | 8 +------- 4 files changed, 58 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 66b5fe7..d630408 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-04-10 Andreas Kupries + + * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Keeping check for negative + values, changed to not be an error, but behave like the special + value -1 (copy all, default). + + * tests/iocmd.test (iocmd-15.{12,13}): Removed. + + * tests/io.test (io-52.5{,a,b}): Reverted last change, added + comment regarding the meaning of -1, added two more testcases for + other negative values, and input wrapped to negative. + 2008-04-09 Andreas Kupries * tests/io.test (io-52.5): Removed '-size -1' from test, does not diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c index 48debd8..2e49c8e 100644 --- a/generic/tclIOCmd.c +++ b/generic/tclIOCmd.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOCmd.c,v 1.15.2.4 2008/04/09 18:35:27 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIOCmd.c,v 1.15.2.5 2008/04/10 20:53:48 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1543,18 +1543,13 @@ Tcl_FcopyObjCmd(dummy, interp, objc, objv) return TCL_ERROR; } if (toRead<0) { - Tcl_WideInt w; - if (Tcl_GetWideIntFromObj(interp, objv[i+1], &w) != TCL_OK) { - return TCL_ERROR; - } - if (w >= (Tcl_WideInt)0) { - Tcl_AppendResult(interp, - "integer value to large to represent as 32bit signed value", - NULL); - } else { - Tcl_AppendResult(interp, "negative size forbidden", NULL); - } - return TCL_ERROR; + /* + * Handle all negative sizes like -1, meaning 'copy all'. + * By resetting toRead we avoid changes in the + * core copying functions (which explicitly check + * for -1 and crash on any other negative value). + */ + toRead = -1; } break; case FcopyCommand: diff --git a/tests/io.test b/tests/io.test index c6ef73d..519959a 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.18 2008/04/09 19:52:51 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.19 2008/04/10 20:53:49 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6562,13 +6562,47 @@ test io-52.4 {TclCopyChannel} {fcopy} { close $f2 lappend result [file size $path(test1)] } {0 0 40} -test io-52.5 {TclCopyChannel} {fcopy} { +test io-52.5 {TclCopyChannel, all} {fcopy} { file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 fconfigure $f2 -translation lf -blocking 0 - fcopy $f1 $f2 ;#-size -1 + fcopy $f1 $f2 -size -1 ;# -1 means 'copy all', same as if no -size specified. + set result [list [fconfigure $f1 -blocking] [fconfigure $f2 -blocking]] + close $f1 + close $f2 + set s1 [file size $thisScript] + set s2 [file size $path(test1)] + if {"$s1" == "$s2"} { + lappend result ok + } + set result +} {0 0 ok} +test io-52.5a {TclCopyChannel, all, other negative value} {fcopy} { + file delete $path(test1) + set f1 [open $thisScript] + set f2 [open $path(test1) w] + fconfigure $f1 -translation lf -blocking 0 + fconfigure $f2 -translation lf -blocking 0 + fcopy $f1 $f2 -size -2 ;# < 0 behaves like -1, copy all + set result [list [fconfigure $f1 -blocking] [fconfigure $f2 -blocking]] + close $f1 + close $f2 + set s1 [file size $thisScript] + set s2 [file size $path(test1)] + if {"$s1" == "$s2"} { + lappend result ok + } + set result +} {0 0 ok} +test io-52.5b {TclCopyChannel, all, wrap to negative value} {fcopy} { + file delete $path(test1) + set f1 [open $thisScript] + set f2 [open $path(test1) w] + fconfigure $f1 -translation lf -blocking 0 + fconfigure $f2 -translation lf -blocking 0 + fcopy $f1 $f2 -size 3221176172 ;# Wrapped to < 0, behaves like -1, copy all set result [list [fconfigure $f1 -blocking] [fconfigure $f2 -blocking]] close $f1 close $f2 diff --git a/tests/ioCmd.test b/tests/ioCmd.test index 979f3cc..aa7fd1e 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.16.2.4 2008/04/09 18:35:28 andreas_kupries Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.16.2.5 2008/04/10 20:53:49 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -577,12 +577,6 @@ test iocmd-15.11 {Tcl_FcopyObjCmd} {fcopy} { test iocmd-15.12 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile $wfile -command bar -size foo} msg] $msg } {1 {expected integer but got "foo"}} -test iocmd-15.13 {Tcl_FcopyObjCmd} {fcopy} { - list [catch {fcopy $rfile $wfile -command bar -size 3221176172} msg] $msg -} {1 {integer value to large to represent as 32bit signed value}} -test iocmd-15.14 {Tcl_FcopyObjCmd} {fcopy} { - list [catch {fcopy $rfile $wfile -command bar -size -2} msg] $msg -} {1 {negative size forbidden}} close $rfile close $wfile -- cgit v0.12 From bc0c76f942f4b2bbeb5fc0ed30a832b6fa0ea93d Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 10 Apr 2008 20:55:25 +0000 Subject: * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Keeping check for negative values, changed to not be an error, but behave like the special value -1 (copy all, default). * tests/iocmd.test (iocmd-15.{12,13}): Removed. * tests/io.test (io-52.5{,a,b}): Reverted last change, added * tests/chanio.test (chan-io-52.5{,a,b}): comment regarding the meaning of -1, added two more testcases for other negative values, and input wrapped to negative. --- ChangeLog | 13 +++++++++++++ generic/tclIOCmd.c | 21 ++++++++------------- tests/chanio.test | 40 +++++++++++++++++++++++++++++++++++++--- tests/io.test | 40 +++++++++++++++++++++++++++++++++++++--- tests/ioCmd.test | 8 +------- 5 files changed, 96 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index be32e53..fe9b909 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-04-10 Andreas Kupries + + * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Keeping check for negative + values, changed to not be an error, but behave like the special + value -1 (copy all, default). + + * tests/iocmd.test (iocmd-15.{12,13}): Removed. + + * tests/io.test (io-52.5{,a,b}): Reverted last change, added + * tests/chanio.test (chan-io-52.5{,a,b}): comment regarding the + meaning of -1, added two more testcases for other negative values, + and input wrapped to negative. + 2008-04-09 Andreas Kupries * tests/chanio.test (chan-io-52.5): Removed '-size -1' from test, diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c index 3c34845..00ca527 100644 --- a/generic/tclIOCmd.c +++ b/generic/tclIOCmd.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOCmd.c,v 1.51.2.1 2008/04/09 18:36:18 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIOCmd.c,v 1.51.2.2 2008/04/10 20:55:26 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1644,18 +1644,13 @@ Tcl_FcopyObjCmd( return TCL_ERROR; } if (toRead<0) { - Tcl_WideInt w; - if (Tcl_GetWideIntFromObj(interp, objv[i+1], &w) != TCL_OK) { - return TCL_ERROR; - } - if (w >= (Tcl_WideInt)0) { - Tcl_AppendResult(interp, - "integer value to large to represent as 32bit signed value", - NULL); - } else { - Tcl_AppendResult(interp, "negative size forbidden", NULL); - } - return TCL_ERROR; + /* + * Handle all negative sizes like -1, meaning 'copy all'. By + * resetting toRead we avoid changes in the core copying + * functions (which explicitly check for -1 and crash on any + * other negative value). + */ + toRead = -1; } break; case FcopyCommand: diff --git a/tests/chanio.test b/tests/chanio.test index 75c0013..f276a00 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.7 2008/04/09 19:51:12 andreas_kupries Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.8 2008/04/10 20:55:27 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6541,13 +6541,47 @@ test chan-io-52.4 {TclCopyChannel} {fcopy} { chan close $f2 lappend result [file size $path(test1)] } {0 0 40} -test chan-io-52.5 {TclCopyChannel} {fcopy} { +test chan-io-52.5 {TclCopyChannel, all} {fcopy} { file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] chan configure $f1 -translation lf -blocking 0 chan configure $f2 -translation lf -blocking 0 - chan copy $f1 $f2 ;#-size -1 + chan copy $f1 $f2 -size -1 ;# -1 means 'copy all', same as if no -size specified. + set result [list [chan configure $f1 -blocking] [chan configure $f2 -blocking]] + chan close $f1 + chan close $f2 + set s1 [file size $thisScript] + set s2 [file size $path(test1)] + if {"$s1" == "$s2"} { + lappend result ok + } + set result +} {0 0 ok} +test chan-io-52.5a {TclCopyChannel, all, other negative value} {fcopy} { + file delete $path(test1) + set f1 [open $thisScript] + set f2 [open $path(test1) w] + chan configure $f1 -translation lf -blocking 0 + chan configure $f2 -translation lf -blocking 0 + chan copy $f1 $f2 -size -2 ;# < 0 behaves like -1, copy all + set result [list [chan configure $f1 -blocking] [chan configure $f2 -blocking]] + chan close $f1 + chan close $f2 + set s1 [file size $thisScript] + set s2 [file size $path(test1)] + if {"$s1" == "$s2"} { + lappend result ok + } + set result +} {0 0 ok} +test chan-io-52.5b {TclCopyChannel, all, wrapped to ngative value} {fcopy} { + file delete $path(test1) + set f1 [open $thisScript] + set f2 [open $path(test1) w] + chan configure $f1 -translation lf -blocking 0 + chan configure $f2 -translation lf -blocking 0 + chan copy $f1 $f2 -size 3221176172 ;# Wrapped to < 0, behaves like -1, copy all set result [list [chan configure $f1 -blocking] [chan configure $f2 -blocking]] chan close $f1 chan close $f2 diff --git a/tests/io.test b/tests/io.test index 45e7338..6ec186c 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.7 2008/04/09 19:51:12 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.8 2008/04/10 20:55:27 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6541,13 +6541,47 @@ test io-52.4 {TclCopyChannel} {fcopy} { close $f2 lappend result [file size $path(test1)] } {0 0 40} -test io-52.5 {TclCopyChannel} {fcopy} { +test io-52.5 {TclCopyChannel, all} {fcopy} { file delete $path(test1) set f1 [open $thisScript] set f2 [open $path(test1) w] fconfigure $f1 -translation lf -blocking 0 fconfigure $f2 -translation lf -blocking 0 - fcopy $f1 $f2 ;#-size -1 + fcopy $f1 $f2 -size -1 ;# -1 means 'copy all', same as if no -size specified. + set result [list [fconfigure $f1 -blocking] [fconfigure $f2 -blocking]] + close $f1 + close $f2 + set s1 [file size $thisScript] + set s2 [file size $path(test1)] + if {"$s1" == "$s2"} { + lappend result ok + } + set result +} {0 0 ok} +test io-52.5a {TclCopyChannel, all, other negative value} {fcopy} { + file delete $path(test1) + set f1 [open $thisScript] + set f2 [open $path(test1) w] + fconfigure $f1 -translation lf -blocking 0 + fconfigure $f2 -translation lf -blocking 0 + fcopy $f1 $f2 -size -2 ;# < 0 behaves like -1, copy all + set result [list [fconfigure $f1 -blocking] [fconfigure $f2 -blocking]] + close $f1 + close $f2 + set s1 [file size $thisScript] + set s2 [file size $path(test1)] + if {"$s1" == "$s2"} { + lappend result ok + } + set result +} {0 0 ok} +test io-52.5b {TclCopyChannel, all, wrapped to negative value} {fcopy} { + file delete $path(test1) + set f1 [open $thisScript] + set f2 [open $path(test1) w] + fconfigure $f1 -translation lf -blocking 0 + fconfigure $f2 -translation lf -blocking 0 + fcopy $f1 $f2 -size 3221176172 ;# Wrapped to < 0, behaves like -1, copy all set result [list [fconfigure $f1 -blocking] [fconfigure $f2 -blocking]] close $f1 close $f2 diff --git a/tests/ioCmd.test b/tests/ioCmd.test index 2906871..5c6a330 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.36.2.3 2008/04/09 18:36:18 andreas_kupries Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.36.2.4 2008/04/10 20:55:27 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -606,12 +606,6 @@ test iocmd-15.11 {Tcl_FcopyObjCmd} {fcopy} { test iocmd-15.12 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile $wfile -command bar -size foo} msg] $msg } {1 {expected integer but got "foo"}} -test iocmd-15.13 {Tcl_FcopyObjCmd} {fcopy} { - list [catch {fcopy $rfile $wfile -command bar -size 3221176172} msg] $msg -} {1 {integer value to large to represent as 32bit signed value}} -test iocmd-15.14 {Tcl_FcopyObjCmd} {fcopy} { - list [catch {fcopy $rfile $wfile -command bar -size -2} msg] $msg -} {1 {negative size forbidden}} close $rfile close $wfile -- cgit v0.12 From b10ba1e4ca0837b84a2b9d45c7001b2b280bd4d4 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 11 Apr 2008 16:57:32 +0000 Subject: * README: Bump version number to 8.4.19 * generic/tcl.h: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure.in: * unix/configure: autoconf-2.13 * win/configure: * changes: updates for 8.4.19 release. --- ChangeLog | 17 +++++++++++++++++ README | 4 ++-- changes | 25 ++++++++++++++++++++++++- generic/tcl.h | 6 +++--- tools/tcl.wse.in | 2 +- unix/configure | 39 +++++++++++++++++++++++++++++---------- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/README.binary | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 11 files changed, 85 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index d630408..10406a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2008-04-11 Don Porter + + *** 8.4.19 TAGGED FOR RELEASE *** + + * README: Bump version number to 8.4.19 + * generic/tcl.h: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/README.binary: + * win/configure.in: + + * unix/configure: autoconf-2.13 + * win/configure: + + * changes: updates for 8.4.19 release. + 2008-04-10 Andreas Kupries * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Keeping check for negative diff --git a/README b/README index be5f020..6bcf83a 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.4.18 source distribution. + This is the Tcl 8.4.19 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.49.2.22 2008/02/06 15:25:15 dgp Exp $ +RCS: @(#) $Id: README,v 1.49.2.23 2008/04/11 16:57:37 dgp Exp $ Contents -------- diff --git a/changes b/changes index bdceb29..cd11ff8 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.79.2.54 2008/02/06 15:25:15 dgp Exp $ +RCS: @(#) $Id: changes,v 1.79.2.55 2008/04/11 16:57:37 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -6505,3 +6505,26 @@ over-consumption of resources (drewry,lane,ormandy,fellows) 2008-01-30 (bug fix)[1882373] fix Tcl_GetAlias pointer code (an00na) --- Released 8.4.18, February 8, 2008 --- See ChangeLog for details --- + +2008-02-22 (bug fix)[1818565] missing state array in http::status (thoyts) +=> http 2.5.4 + +2008-02-26 (bug fix) possible crash in [gets] (hobbs) + +2008-02-26 (new feature) [http::meta] command (thoyts) +=> http 2.5.5 + +2008-03-07 (bug fix)[1899164] Avoid expr and script bytecode confusion (porter) + +2008-03-24 (bug fix)[1923966] crash in [binary format x0s] (thoyts) + +2008-03-27 (platform support)[1921166] Solaris 64bit build fixes (steffen) + +2008-04-04 (bug fix)[780533] [fcopy -size -command] callback failure (ferrieux) + +2008-04-07 (new feature)[1350564] eased fileevent constraints during [fcopy] +(ferrieux) + +2008-04-10 (bug fix)[1557855] crash on some [fcopy -size] values (ferrieux) + +--- Released 8.4.19, April 18, 2008 --- See ChangeLog for details --- diff --git a/generic/tcl.h b/generic/tcl.h index a03addd..ae82114 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.34 2008/02/06 15:25:15 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.35 2008/04/11 16:57:38 dgp Exp $ */ #ifndef _TCL @@ -59,10 +59,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 4 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 18 +#define TCL_RELEASE_SERIAL 19 #define TCL_VERSION "8.4" -#define TCL_PATCH_LEVEL "8.4.18" +#define TCL_PATCH_LEVEL "8.4.19" /* * The following definitions set up the proper options for Windows diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 5cd0eec..1dceec0 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.4.18 + Disk Label=tcl8.4.19 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index a9de1af..b3902fd 100755 --- a/unix/configure +++ b/unix/configure @@ -556,7 +556,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".18" +TCL_PATCH_LEVEL=".19" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ @@ -9442,15 +9442,34 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed # Without the "./", some shells look in PATH for config.status. diff --git a/unix/configure.in b/unix/configure.in index 64521af..b0592ad 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.42 2008/02/06 15:25:27 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.43 2008/04/11 16:57:41 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".18" +TCL_PATCH_LEVEL=".19" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 134731e..eb367ce 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,7 +1,7 @@ -# $Id: tcl.spec,v 1.16.2.18 2008/02/06 15:25:27 dgp Exp $ +# $Id: tcl.spec,v 1.16.2.19 2008/04/11 16:57:42 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. -%define version 8.4.18 +%define version 8.4.19 %define directory /usr/local Summary: Tcl scripting language development environment diff --git a/win/README.binary b/win/README.binary index 2b1f653..966d46c 100644 --- a/win/README.binary +++ b/win/README.binary @@ -1,11 +1,11 @@ Tcl/Tk 8.4 for Windows, Binary Distribution -RCS: @(#) $Id: README.binary,v 1.33.2.18 2008/02/06 15:25:27 dgp Exp $ +RCS: @(#) $Id: README.binary,v 1.33.2.19 2008/04/11 16:57:42 dgp Exp $ 1. Introduction --------------- -This directory contains the binary distribution of Tcl/Tk 8.4.18 for +This directory contains the binary distribution of Tcl/Tk 8.4.19 for Windows. It was compiled with Microsoft Visual C++ 6.0 using Win32 API, so that it will run under Windows NT, 95, 98 and 2000. diff --git a/win/configure b/win/configure index 4b84696..7030953 100755 --- a/win/configure +++ b/win/configure @@ -534,7 +534,7 @@ fi TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".18" +TCL_PATCH_LEVEL=".19" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 diff --git a/win/configure.in b/win/configure.in index 04b50ed..5e36be5 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.68.2.22 2008/02/06 15:25:28 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.68.2.23 2008/04/11 16:57:42 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -11,7 +11,7 @@ AC_PREREQ(2.13) TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=4 -TCL_PATCH_LEVEL=".18" +TCL_PATCH_LEVEL=".19" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.2 -- cgit v0.12 From 6c56c834bd637fa42f8f0ccad512ea595a9011ef Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 11 Apr 2008 18:12:28 +0000 Subject: * generic/tcl.h: Bump version number to 8.5.3b1 to distinguish * library/init.tcl: CVS development snapshots from the 8.5.2 and * unix/configure.in: 8.5.3 releases. * unix/tcl.spec: * win/configure.in: * README * unix/configure: autoconf (2.59) * win/configure: --- ChangeLog | 12 ++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- library/init.tcl | 4 ++-- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/configure | 4 ++-- win/configure.in | 4 ++-- 9 files changed, 28 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index fe9b909..7351928 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-04-11 Don Porter + + * generic/tcl.h: Bump version number to 8.5.3b1 to distinguish + * library/init.tcl: CVS development snapshots from the 8.5.2 and + * unix/configure.in: 8.5.3 releases. + * unix/tcl.spec: + * win/configure.in: + * README + + * unix/configure: autoconf (2.59) + * win/configure: + 2008-04-10 Andreas Kupries * generic/tclIOCmd.c (Tcl_FcopyObjCmd): Keeping check for negative diff --git a/README b/README index 46f3f89..1e2ab07 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.5.2 source distribution. + This is the Tcl 8.5.3 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.67 2008/02/13 18:00:33 dgp Exp $ +RCS: @(#) $Id: README,v 1.67.2.1 2008/04/11 18:12:29 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 8f51eb1..459534c 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254 2008/03/28 17:31:44 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.1 2008/04/11 18:12:29 dgp Exp $ */ #ifndef _TCL @@ -60,10 +60,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 5 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 2 +#define TCL_RELEASE_SERIAL 3 #define TCL_VERSION "8.5" -#define TCL_PATCH_LEVEL "8.5.2" +#define TCL_PATCH_LEVEL "8.5.3b1" /* * The following definitions set up the proper options for Windows compilers. diff --git a/library/init.tcl b/library/init.tcl index ef823f1..306d7d9 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104 2008/03/28 17:31:44 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.1 2008/04/11 18:12:29 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -17,7 +17,7 @@ if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.5.2 +package require -exact Tcl 8.5.3b1 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: diff --git a/unix/configure b/unix/configure index 3dbc436..65a4104 100755 --- a/unix/configure +++ b/unix/configure @@ -1335,7 +1335,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".2" +TCL_PATCH_LEVEL=".3b1" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index fb777b2..31dc1cf 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.1 2008/03/31 17:21:18 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.2 2008/04/11 18:12:30 dgp Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -27,7 +27,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [ TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".2" +TCL_PATCH_LEVEL=".3b1" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 1799203..302f143 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,11 +1,11 @@ -# $Id: tcl.spec,v 1.37 2008/03/28 17:31:48 dgp Exp $ +# $Id: tcl.spec,v 1.37.2.1 2008/04/11 18:12:31 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. %{!?directory:%define directory /usr/local} Name: tcl Summary: Tcl scripting language development environment -Version: 8.5.2 +Version: 8.5.3b1 Release: 2 License: BSD Group: Development/Languages diff --git a/win/configure b/win/configure index 7f72b09..78c8160 100755 --- a/win/configure +++ b/win/configure @@ -1272,7 +1272,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".2" +TCL_PATCH_LEVEL=".3b1" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 @@ -3984,7 +3984,7 @@ echo "${ECHO_T} Using 64-bit $MACHINE mode" >&6 CC="\"${PATH64}/cl.exe\" -I\"${MSSDK}/Include\" \ -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\"" RC="\"${MSSDK}/bin/rc.exe\"" - CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" + CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}" # Do not use -O2 for Win64 - this has proved buggy in code gen. CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}" lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\"" diff --git a/win/configure.in b/win/configure.in index 750c1b9..b0918ca 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.104 2008/03/28 17:31:48 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.104.2.1 2008/04/11 18:12:31 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.59) @@ -16,7 +16,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".2" +TCL_PATCH_LEVEL=".3b1" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 -- cgit v0.12 From ac208e8e219affa0af313b39b698d674a635b96b Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 14 Apr 2008 16:25:45 +0000 Subject: * generic/tclExecute.c: Plug memory leak introduced in the 2008-03-07 commit. [Bug 1940433] --- ChangeLog | 5 +++++ generic/tclExecute.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 10406a0..a9c3993 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-04-14 Don Porter + + * generic/tclExecute.c: Plug memory leak introduced in the + 2008-03-07 commit. [Bug 1940433] + 2008-04-11 Don Porter *** 8.4.19 TAGGED FOR RELEASE *** diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 5bf2fd7..b94785d 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.24 2008/03/10 14:34:33 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.25 2008/04/14 16:25:49 dgp Exp $ */ #include "tclInt.h" @@ -827,7 +827,7 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) auxDataPtr++; } TclFreeCompileEnv(&compEnv); - return result; + goto done; } /* @@ -888,6 +888,7 @@ Tcl_ExprObj(interp, objPtr, resultPtrPtr) Tcl_SetObjResult(interp, saveObjPtr); } +done: TclDecrRefCount(saveObjPtr); return result; } -- cgit v0.12 From 1f8fd5a5c9d15e8c2553826437ab6292e3c8e028 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 14 Apr 2008 17:34:16 +0000 Subject: * unix/tclUnixTime.c (TclpGetClicks, Tcl_GetTime): Removed obsolete use of 'struct timezone' in the call to 'gettimeofday'. [Bug 1942197]. --- ChangeLog | 6 ++++++ unix/tclUnixTime.c | 8 +++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index a9c3993..a69203e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-04-14 Kevin B. Kenny + + * unix/tclUnixTime.c (TclpGetClicks, Tcl_GetTime): Removed + obsolete use of 'struct timezone' in the call to 'gettimeofday'. + [Bug 1942197]. + 2008-04-14 Don Porter * generic/tclExecute.c: Plug memory leak introduced in the diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c index e4ac865..6a42d97 100644 --- a/unix/tclUnixTime.c +++ b/unix/tclUnixTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.6 2007/04/21 19:52:15 kennykb Exp $ + * RCS: @(#) $Id: tclUnixTime.c,v 1.15.2.7 2008/04/14 17:34:17 kennykb Exp $ */ #include "tclInt.h" @@ -97,13 +97,12 @@ TclpGetClicks() struct tms dummy; #else struct timeval date; - struct timezone tz; #endif #ifdef NO_GETTOD now = (unsigned long) times(&dummy); #else - gettimeofday(&date, &tz); + gettimeofday(&date, NULL); now = date.tv_sec*1000000 + date.tv_usec; #endif @@ -250,9 +249,8 @@ Tcl_GetTime(timePtr) Tcl_Time *timePtr; /* Location to store time information. */ { struct timeval tv; - struct timezone tz; - (void) gettimeofday(&tv, &tz); + (void) gettimeofday(&tv, NULL); timePtr->sec = tv.tv_sec; timePtr->usec = tv.tv_usec; } -- cgit v0.12 From 278b31b91cc7b0d34299f71e36e0f49a840160ef Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 14 Apr 2008 17:49:59 +0000 Subject: * unix/tclUnixTime.c (NativeGetTime): Removed obsolete use of 'struct timezone' in the call to 'gettimeofday'. [Bug 1942197]. --- ChangeLog | 6 ++++++ unix/tclUnixTime.c | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7351928..bc32f3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-04-14 Kevin B. Kenny + + * unix/tclUnixTime.c (NativeGetTime): Removed obsolete use of + 'struct timezone' in the call to 'gettimeofday'. [Bug 1942197]. + + 2008-04-11 Don Porter * generic/tcl.h: Bump version number to 8.5.3b1 to distinguish diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c index fc19d6d..f989f01 100644 --- a/unix/tclUnixTime.c +++ b/unix/tclUnixTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixTime.c,v 1.33 2007/12/13 15:28:42 dgp Exp $ + * RCS: @(#) $Id: tclUnixTime.c,v 1.33.2.1 2008/04/14 17:49:59 kennykb Exp $ */ #include "tclInt.h" @@ -603,9 +603,8 @@ NativeGetTime( ClientData clientData) { struct timeval tv; - struct timezone tz; - (void) gettimeofday(&tv, &tz); + (void) gettimeofday(&tv, NULL); timePtr->sec = tv.tv_sec; timePtr->usec = tv.tv_usec; } -- cgit v0.12 From 12f1b80fe680eae408befaf133b9d9d0025878e4 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 14 Apr 2008 18:04:37 +0000 Subject: * tests/clock.test (clock-33.5, clock-33.5a, clock-33.8, clock-33.8a): Added comments to the test that it can fail on a heavily loaded system. --- ChangeLog | 4 +++- tests/clock.test | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index bc32f3f..fd73a5f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,8 +2,10 @@ * unix/tclUnixTime.c (NativeGetTime): Removed obsolete use of 'struct timezone' in the call to 'gettimeofday'. [Bug 1942197]. + * tests/clock.test (clock-33.5, clock-33.5a, clock-33.8, clock-33.8a): + Added comments to the test that it can fail on a heavily loaded + system. - 2008-04-11 Don Porter * generic/tcl.h: Bump version number to 8.5.3b1 to distinguish diff --git a/tests/clock.test b/tests/clock.test index c36f5fe..e3b3f85 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.83 2008/02/27 02:08:27 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.83.2.1 2008/04/14 18:04:40 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -35464,6 +35464,8 @@ test clock-33.4a {clock milliseconds} { concat {} } {} test clock-33.5 {clock clicks tests, millisecond timing test} { + # This test can fail on a system that is so heavily loaded that + # the test takes >60 ms to run. set start [clock clicks -milli] after 10 set end [clock clicks -milli] @@ -35474,6 +35476,8 @@ test clock-33.5 {clock clicks tests, millisecond timing test} { "test should have taken 0-60 ms, actually took [expr $end - $start]"} } {ok} test clock-33.5a {clock tests, millisecond timing test} { + # This test can fail on a system that is so heavily loaded that + # the test takes >60 ms to run. set start [clock milliseconds] after 10 set end [clock milliseconds] @@ -35491,12 +35495,16 @@ test clock-33.7 {clock clicks, milli with too much abbreviation} { } {1 {ambiguous option "-": must be -milliseconds or -microseconds}} test clock-33.8 {clock clicks test, microsecond timing test} { + # This test can fail on a system that is so heavily loaded that + # the test takes >60 ms to run. set start [clock clicks -micro] after 10 set end [clock clicks -micro] expr {($end > $start) && (($end - $start) <= 60000)} } {1} test clock-33.8a {clock test, microsecond timing test} { + # This test can fail on a system that is so heavily loaded that + # the test takes >60 ms to run. set start [clock microseconds] after 10 set end [clock microseconds] -- cgit v0.12 From c8c10de926e7c958c17e8898fc18d2ca1ad50cf7 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 14 Apr 2008 20:19:33 +0000 Subject: bump release tag --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a69203e..cf3cd7e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-04-14 Kevin B. Kenny + *** 8.4.19 TAGGED FOR RELEASE *** + * unix/tclUnixTime.c (TclpGetClicks, Tcl_GetTime): Removed obsolete use of 'struct timezone' in the call to 'gettimeofday'. [Bug 1942197]. @@ -11,8 +13,6 @@ 2008-04-11 Don Porter - *** 8.4.19 TAGGED FOR RELEASE *** - * README: Bump version number to 8.4.19 * generic/tcl.h: * tools/tcl.wse.in: -- cgit v0.12 From f88631b9936341c9a94380101b6559f74e91eafd Mon Sep 17 00:00:00 2001 From: das Date: Tue, 15 Apr 2008 10:55:34 +0000 Subject: sync with Tcl.xcodeproj --- macosx/Tcl.xcode/project.pbxproj | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/macosx/Tcl.xcode/project.pbxproj b/macosx/Tcl.xcode/project.pbxproj index 576c213..9c51d82 100644 --- a/macosx/Tcl.xcode/project.pbxproj +++ b/macosx/Tcl.xcode/project.pbxproj @@ -931,7 +931,7 @@ F966C06F08F281DC005CB29B /* Frameworks */, 1AB674ADFE9D54B511CA2CBB /* Products */, ); - comments = "Copyright (c) 2004-2007 Daniel A. Steffen \n\nSee the file \"license.terms\" for information on usage and redistribution of\nthis file, and for a DISCLAIMER OF ALL WARRANTIES.\n\nRCS: @(#) $Id: project.pbxproj,v 1.10 2007/12/13 15:26:03 dgp Exp $\n"; + comments = "Copyright (c) 2004-2007 Daniel A. Steffen \n\nSee the file \"license.terms\" for information on usage and redistribution of\nthis file, and for a DISCLAIMER OF ALL WARRANTIES.\n\nRCS: @(#) $Id: project.pbxproj,v 1.10.2.1 2008/04/15 10:55:34 das Exp $\n"; name = Tcl; path = .; sourceTree = SOURCE_ROOT; @@ -1950,12 +1950,14 @@ files = ( ); inputPaths = ( + "${TARGET_TEMP_DIR}/.none", ); outputPaths = ( + "${TARGET_BUILD_DIR}/${EXECUTABLE_NAME}", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/bash; - shellScript = "if [ -e \"${BUILT_PRODUCTS_DIR}/tclsh\" ]; then\n mv -f \"${BUILT_PRODUCTS_DIR}/tclsh\" \"${BUILT_PRODUCTS_DIR}/tclsh${VERSION}\"\nfi\ngnumake -C \"${TCL_SRCROOT}/macosx\" -j \"$(sysctl -n hw.activecpu)\" \"$(echo \"${ACTION}\" | sed -e s/build// -e s/clean/distclean/ -e s/..\\*/\\&-/)${MAKE_TARGET}\" CFLAGS_WARNING=\"${WARNING_CFLAGS}\" SYMROOT=\"${BUILT_PRODUCTS_DIR}\" OBJ_DIR=\"${OBJECT_FILE_DIR}\" INSTALL_ROOT=\"${DSTROOT}\" PREFIX=\"${PREFIX}\" BINDIR=\"${BINDIR}\" LIBDIR=\"${FRAMEWORK_INSTALL_PATH}\" MANDIR=\"${MANDIR}\" EXTRA_CONFIGURE_ARGS=\"${CONFIGURE_ARGS}\" ${EXTRA_MAKE_FLAGS}\nresult=$?\nif [ -e \"${BUILT_PRODUCTS_DIR}/tclsh${VERSION}\" ]; then\n mv -f \"${BUILT_PRODUCTS_DIR}/tclsh${VERSION}\" \"${BUILT_PRODUCTS_DIR}/tclsh\"\nfi\nif [ -e \"${BUILT_PRODUCTS_DIR}/tcltest\" ]; then\n\trm -f \"${BUILT_PRODUCTS_DIR}/tcltest\"\nfi\necho \"Done\"\nexit ${result}\n"; + shellScript = "if [ -e \"${TARGET_BUILD_DIR}/tclsh\" ]; then\n mv -f \"${TARGET_BUILD_DIR}/tclsh\" \"${TARGET_BUILD_DIR}/tclsh${VERSION}\"\nfi\ngnumake -C \"${TCL_SRCROOT}/macosx\" -j \"$(sysctl -n hw.activecpu)\" \"$(echo \"${ACTION}\" | sed -e s/build// -e s/clean/distclean/ -e s/..\\*/\\&-/)${MAKE_TARGET}\" CFLAGS_WARNING=\"${WARNING_CFLAGS}\" CFLAGS_OPTIMIZE=\"-O${GCC_OPTIMIZATION_LEVEL}\" SYMROOT=\"${BUILT_PRODUCTS_DIR}\" OBJ_DIR=\"${OBJECT_FILE_DIR}\" INSTALL_ROOT=\"${DSTROOT}\" PREFIX=\"${PREFIX}\" BINDIR=\"${BINDIR}\" LIBDIR=\"${FRAMEWORK_INSTALL_PATH}\" MANDIR=\"${MANDIR}\" EXTRA_CONFIGURE_ARGS=\"${CONFIGURE_ARGS}\" ${EXTRA_MAKE_FLAGS}\nresult=$?\nif [ -e \"${TARGET_BUILD_DIR}/tclsh${VERSION}\" ]; then\n mv -f \"${TARGET_BUILD_DIR}/tclsh${VERSION}\" \"${TARGET_BUILD_DIR}/tclsh\"\nfi\nif [ -e \"${BUILT_PRODUCTS_DIR}/tcltest\" ]; then\n\trm -f \"${BUILT_PRODUCTS_DIR}/tcltest\"\nfi\necho \"Done\"\nrm -f \"${SCRIPT_INPUT_FILE_0}\"\nexit ${result}\n"; }; F9A5C5F508F651A2008AE941 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -2156,6 +2158,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = ReleaseUniversal; }; @@ -2190,6 +2193,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = DebugMemCompile; }; @@ -2224,6 +2228,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = Debug; }; @@ -2231,6 +2236,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = Release; }; @@ -2238,6 +2244,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = DebugNoFixZL; }; @@ -2372,6 +2379,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = Debug64bit; }; @@ -2408,6 +2416,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = DebugUnthreaded; }; @@ -2415,6 +2424,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = DebugLeaks; }; @@ -2479,6 +2489,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = ReleaseUniversal10.4uSDK; }; @@ -2516,6 +2527,7 @@ buildSettings = { LDFLAGS = "-force_cpusubtype_ALL $(LDFLAGS)"; PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = ReleasePPC10.3.9SDK; }; @@ -2543,6 +2555,7 @@ isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; }; name = ReleasePPC10.2.8SDK; }; -- cgit v0.12 From bc5dab9966108ba8082e389fc4a42e060cce440e Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 15 Apr 2008 18:31:00 +0000 Subject: * generic/tclIO.c (CopyData): Applied another patch by Alexandre * io.test (io-53.8a): Ferrieux , to shift EOF handling to the async part of the command if a callback is specified, should the channel be at EOF already when fcopy is called. Testcase by myself. --- ChangeLog | 8 ++++++++ generic/tclIO.c | 15 +++++++++------ tests/io.test | 42 +++++++++++++++++++++++++++++++++++++++++- tests/ioCmd.test | 3 ++- 4 files changed, 60 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index cf3cd7e..05200d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-04-15 Andreas Kupries + + * generic/tclIO.c (CopyData): Applied another patch by Alexandre + * io.test (io-53.8a): Ferrieux , + to shift EOF handling to the async part of the command if a + callback is specified, should the channel be at EOF already when + fcopy is called. Testcase by myself. + 2008-04-14 Kevin B. Kenny *** 8.4.19 TAGGED FOR RELEASE *** diff --git a/generic/tclIO.c b/generic/tclIO.c index 3f79021..6502215 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.27 2008/04/07 22:17:37 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.28 2008/04/15 18:31:01 andreas_kupries Exp $ */ #include "tclInt.h" @@ -7887,15 +7887,18 @@ CopyData(csPtr, mask) break; } else if (underflow) { /* - * We had an underflow on the read side. If we are at EOF, - * then the copying is done, otherwise set up a channel - * handler to detect when the channel becomes readable again. + * We had an underflow on the read side. If we are at + * EOF, and not in the synchronous part of an asynchronous + * fcopy, then the copying is done, otherwise set up a + * channel handler to detect when the channel becomes + * readable again. */ - if ((size == 0) && Tcl_Eof(inChan)) { + if ((size == 0) && Tcl_Eof(inChan) && !(cmdPtr && (mask == 0))) { break; } - if (! Tcl_Eof(inChan) && !(mask & TCL_READABLE)) { + if (((!Tcl_Eof(inChan)) || (cmdPtr && (mask == 0))) && + !(mask & TCL_READABLE)) { if (mask & TCL_WRITABLE) { Tcl_DeleteChannelHandler(outChan, CopyEventProc, (ClientData) csPtr); diff --git a/tests/io.test b/tests/io.test index 519959a..00c0a55 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.19 2008/04/10 20:53:49 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.20 2008/04/15 18:31:03 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6999,6 +6999,46 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { removeFile foo removeFile bar } -result {0 sync/OK 0 {CMD 2} {bgerror/OK !STOP}} +test io-53.8a {CopyData: async callback and error handling, Bug 1932639, at eof} -setup { + # copy progress callback. errors out intentionally + proc ::cmd args { + lappend ::RES "CMD $args" + set ::forever has-been-reached + return + } + # Files we use for our channels + set foo [makeFile ashgdfashdgfasdhgfasdhgf foo] + set bar [makeFile {} bar] + # Channels to copy between + set f [open $foo r] ; fconfigure $f -translation binary + set g [open $bar w] ; fconfigure $g -translation binary -buffering none +} -constraints {stdio openpipe fcopy} -body { + # Initialize and force eof on the input. + seek $f 0 end ; read $f 1 + set ::RES [eof $f] + # Run the copy. Should not invoke -command now. + fcopy $f $g -size 2 -command ::cmd + # Check that -command was not called synchronously + lappend ::RES [expr {([llength $::RES] > 1) ? "sync/FAIL" : "sync/OK"}] + # Now let the async part happen. Should capture the eof in cmd + # If not break the event loop via timer. + set token [after 1000 { + lappend ::RES {cmd/FAIL timeout} + set ::forever has-been-reached + }] + vwait ::forever + catch {after cancel $token} + # Report + set ::RES +} -cleanup { + close $f + close $g + catch {unset ::RES} + catch {unset ::forever} + rename ::cmd {} + removeFile foo + removeFile bar +} -result {1 sync/OK {CMD 0}} test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { set out [makeFile {} out] set err [makeFile {} err] diff --git a/tests/ioCmd.test b/tests/ioCmd.test index aa7fd1e..f4d45e4 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.16.2.5 2008/04/10 20:53:49 andreas_kupries Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.16.2.6 2008/04/15 18:31:04 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -578,6 +578,7 @@ test iocmd-15.12 {Tcl_FcopyObjCmd} {fcopy} { list [catch {fcopy $rfile $wfile -command bar -size foo} msg] $msg } {1 {expected integer but got "foo"}} + close $rfile close $wfile -- cgit v0.12 From 627d3c8418d40dedf7495731024e2de6ba51ed58 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 15 Apr 2008 18:32:00 +0000 Subject: * generic/tclIO.c (CopyData): Applied another patch by Alexandre * io.test (io-53.8a): Ferrieux , * chanio.test (chan-io-53.8a): to shift EOF handling to the async part of the command if a callback is specified, should the channel be at EOF already when fcopy is called. Testcase by myself. --- ChangeLog | 8 ++++++++ generic/tclIO.c | 14 ++++++++------ tests/chanio.test | 42 +++++++++++++++++++++++++++++++++++++++++- tests/io.test | 42 +++++++++++++++++++++++++++++++++++++++++- 4 files changed, 98 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index fd73a5f..38ad2dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-04-15 Andreas Kupries + + * generic/tclIO.c (CopyData): Applied another patch by Alexandre + * io.test (io-53.8a): Ferrieux , + * chanio.test (chan-io-53.8a): to shift EOF handling to the async + part of the command if a callback is specified, should the channel + be at EOF already when fcopy is called. Testcase by myself. + 2008-04-14 Kevin B. Kenny * unix/tclUnixTime.c (NativeGetTime): Removed obsolete use of diff --git a/generic/tclIO.c b/generic/tclIO.c index 77d586c..6de2cbe 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.4 2008/04/07 22:33:29 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.5 2008/04/15 18:32:01 andreas_kupries Exp $ */ #include "tclInt.h" @@ -8641,15 +8641,17 @@ CopyData( break; } else if (underflow) { /* - * We had an underflow on the read side. If we are at EOF, then - * the copying is done, otherwise set up a channel handler to - * detect when the channel becomes readable again. + * We had an underflow on the read side. If we are at EOF, and not + * in the synchronous part of an asynchronous fcopy, then the + * copying is done, otherwise set up a channel handler to detect + * when the channel becomes readable again. */ - if ((size == 0) && Tcl_Eof(inChan)) { + if ((size == 0) && Tcl_Eof(inChan) && !(cmdPtr && (mask == 0))) { break; } - if (! Tcl_Eof(inChan) && !(mask & TCL_READABLE)) { + if (((!Tcl_Eof(inChan)) || (cmdPtr && (mask == 0))) && + !(mask & TCL_READABLE)) { if (mask & TCL_WRITABLE) { Tcl_DeleteChannelHandler(outChan, CopyEventProc, csPtr); } diff --git a/tests/chanio.test b/tests/chanio.test index f276a00..8a7bda8 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.8 2008/04/10 20:55:27 andreas_kupries Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.9 2008/04/15 18:32:03 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6967,6 +6967,46 @@ test chan-io-53.8 {CopyData: async callback and error handling, Bug 1932639} -se removeFile foo removeFile bar } -result {0 sync/OK 0 {CMD 2} {bgerror/OK !STOP}} +test chan-io-53.8a {CopyData: async callback and error handling, Bug 1932639, at eof} -setup { + # copy progress callback. errors out intentionally + proc ::cmd args { + lappend ::RES "CMD $args" + set ::forever has-been-reached + return + } + # Files we use for our channels + set foo [makeFile ashgdfashdgfasdhgfasdhgf foo] + set bar [makeFile {} bar] + # Channels to copy between + set f [open $foo r] ; chan configure $f -translation binary + set g [open $bar w] ; chan configure $g -translation binary -buffering none +} -constraints {stdio openpipe fcopy} -body { + # Initialize and force eof on the input. + chan seek $f 0 end ; chan read $f 1 + set ::RES [chan eof $f] + # Run the copy. Should not invoke -command now. + chan copy $f $g -size 2 -command ::cmd + # Check that -command was not called synchronously + lappend ::RES [expr {([llength $::RES] > 1) ? "sync/FAIL" : "sync/OK"}] + # Now let the async part happen. Should capture the eof in cmd + # If not break the event loop via timer. + set token [after 1000 { + lappend ::RES {cmd/FAIL timeout} + set ::forever has-been-reached + }] + vwait ::forever + catch {after cancel $token} + # Report + set ::RES +} -cleanup { + chan close $f + chan close $g + catch {unset ::RES} + catch {unset ::forever} + rename ::cmd {} + removeFile foo + removeFile bar +} -result {1 sync/OK {CMD 0}} test chan-io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { set out [makeFile {} out] set err [makeFile {} err] diff --git a/tests/io.test b/tests/io.test index 6ec186c..f03bc64 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.8 2008/04/10 20:55:27 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.9 2008/04/15 18:32:04 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -6967,6 +6967,46 @@ test io-53.8 {CopyData: async callback and error handling, Bug 1932639} -setup { removeFile foo removeFile bar } -result {0 sync/OK 0 {CMD 2} {bgerror/OK !STOP}} +test io-53.8a {CopyData: async callback and error handling, Bug 1932639, at eof} -setup { + # copy progress callback. errors out intentionally + proc ::cmd args { + lappend ::RES "CMD $args" + set ::forever has-been-reached + return + } + # Files we use for our channels + set foo [makeFile ashgdfashdgfasdhgfasdhgf foo] + set bar [makeFile {} bar] + # Channels to copy between + set f [open $foo r] ; fconfigure $f -translation binary + set g [open $bar w] ; fconfigure $g -translation binary -buffering none +} -constraints {stdio openpipe fcopy} -body { + # Initialize and force eof on the input. + seek $f 0 end ; read $f 1 + set ::RES [eof $f] + # Run the copy. Should not invoke -command now. + fcopy $f $g -size 2 -command ::cmd + # Check that -command was not called synchronously + lappend ::RES [expr {([llength $::RES] > 1) ? "sync/FAIL" : "sync/OK"}] + # Now let the async part happen. Should capture the eof in cmd + # If not break the event loop via timer. + set token [after 1000 { + lappend ::RES {cmd/FAIL timeout} + set ::forever has-been-reached + }] + vwait ::forever + catch {after cancel $token} + # Report + set ::RES +} -cleanup { + close $f + close $g + catch {unset ::RES} + catch {unset ::forever} + rename ::cmd {} + removeFile foo + removeFile bar +} -result {1 sync/OK {CMD 0}} test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { set out [makeFile {} out] set err [makeFile {} err] -- cgit v0.12 From 29538c18237e7c58eb01d59da1c2d884ce682324 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 15 Apr 2008 19:20:50 +0000 Subject: bump release tag --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05200d5..87ee56e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-04-15 Andreas Kupries + *** 8.4.19 TAGGED FOR RELEASE *** + * generic/tclIO.c (CopyData): Applied another patch by Alexandre * io.test (io-53.8a): Ferrieux , to shift EOF handling to the async part of the command if a @@ -8,8 +10,6 @@ 2008-04-14 Kevin B. Kenny - *** 8.4.19 TAGGED FOR RELEASE *** - * unix/tclUnixTime.c (TclpGetClicks, Tcl_GetTime): Removed obsolete use of 'struct timezone' in the call to 'gettimeofday'. [Bug 1942197]. -- cgit v0.12 From 09608e5bce1452abb2255e1f859f076afea463b9 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 17 Apr 2008 19:14:17 +0000 Subject: * generic/tclCompExpr.c (CompileMathFuncCall): Added * tests/compile.test (compile-16.0): Tcl_ResetResult before appending error message, to clear out possible sharing. Added test case demonstrating the crash (abort on shared object) without the fix. --- ChangeLog | 8 ++++++++ generic/tclCompExpr.c | 3 ++- tests/compile.test | 8 +++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 87ee56e..a55f42e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-04-17 Andreas Kupries + + * generic/tclCompExpr.c (CompileMathFuncCall): Added + * tests/compile.test (compile-16.0): Tcl_ResetResult before + appending error message, to clear out possible sharing. Added test + case demonstrating the crash (abort on shared object) without the + fix. + 2008-04-15 Andreas Kupries *** 8.4.19 TAGGED FOR RELEASE *** diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index 3ff749b..8c66f5c 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompExpr.c,v 1.13.2.3 2006/11/28 22:20:00 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompExpr.c,v 1.13.2.4 2008/04/17 19:14:20 andreas_kupries Exp $ */ #include "tclInt.h" @@ -852,6 +852,7 @@ CompileMathFuncCall(exprTokenPtr, funcName, infoPtr, envPtr, endPtrPtr) code = TCL_OK; hPtr = Tcl_FindHashEntry(&iPtr->mathFuncTable, funcName); if (hPtr == NULL) { + Tcl_ResetResult(interp); Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "unknown math function \"", funcName, "\"", (char *) NULL); code = TCL_ERROR; diff --git a/tests/compile.test b/tests/compile.test index 69d3d77..f31e2b9 100644 --- a/tests/compile.test +++ b/tests/compile.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: compile.test,v 1.24.2.3 2004/10/26 20:14:36 dgp Exp $ +# RCS: @(#) $Id: compile.test,v 1.24.2.4 2008/04/17 19:14:20 andreas_kupries Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -432,6 +432,12 @@ test compile-15.5 {proper TCL_RETURN code from [return]} { set result } "" +test compile-16.0 {error return from unbraced math func call of unknown function} { + set l {3 4 5} + catch { expr bogus([join $l ,]) } msg + set msg +} {unknown math function "bogus"} + # cleanup catch {rename p ""} -- cgit v0.12 From f57b8bc01375d237c7fb911f82af35a26197e295 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 17 Apr 2008 19:47:33 +0000 Subject: style revisions to latest commit --- ChangeLog | 2 +- generic/tclCompExpr.c | 4 ++-- tests/compExpr.test | 8 ++++++-- tests/compile.test | 9 +-------- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index a55f42e..83050ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ 2008-04-17 Andreas Kupries * generic/tclCompExpr.c (CompileMathFuncCall): Added - * tests/compile.test (compile-16.0): Tcl_ResetResult before + * tests/compExpr.test (compExpr-5.10): Tcl_ResetResult before appending error message, to clear out possible sharing. Added test case demonstrating the crash (abort on shared object) without the fix. diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index 8c66f5c..db70caf 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompExpr.c,v 1.13.2.4 2008/04/17 19:14:20 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompExpr.c,v 1.13.2.5 2008/04/17 19:47:34 dgp Exp $ */ #include "tclInt.h" @@ -852,7 +852,7 @@ CompileMathFuncCall(exprTokenPtr, funcName, infoPtr, envPtr, endPtrPtr) code = TCL_OK; hPtr = Tcl_FindHashEntry(&iPtr->mathFuncTable, funcName); if (hPtr == NULL) { - Tcl_ResetResult(interp); + Tcl_ResetResult(interp); Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "unknown math function \"", funcName, "\"", (char *) NULL); code = TCL_ERROR; diff --git a/tests/compExpr.test b/tests/compExpr.test index cd407d3..0174800 100644 --- a/tests/compExpr.test +++ b/tests/compExpr.test @@ -8,10 +8,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: compExpr.test,v 1.6 2001/12/06 10:59:17 dkf Exp $ +# RCS: @(#) $Id: compExpr.test,v 1.6.4.1 2008/04/17 19:47:35 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -317,6 +317,10 @@ test compExpr-5.8 {CompileMathFuncCall procedure, too many arguments} { test compExpr-5.9 {CompileMathFuncCall procedure, too many arguments} { list [catch {expr {0 <= rand(5.2)}} msg] $msg } {1 {too many arguments for math function}} +test compExpr-5.10 {error return from unbraced math func call of unknown function} -body { + expr {bogus()} +} -returnCodes error -result {unknown math function "bogus"} + test compExpr-6.1 {LogSyntaxError procedure, error in expr longer than 60 chars} { list [catch {expr {(+0123456)*(+0123456)*(+0123456)*(+0123456)*(+0123456)*(+0123456)*(+0123456)/} -1 foo 3} msg] $msg diff --git a/tests/compile.test b/tests/compile.test index f31e2b9..51dd3f6 100644 --- a/tests/compile.test +++ b/tests/compile.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: compile.test,v 1.24.2.4 2008/04/17 19:14:20 andreas_kupries Exp $ +# RCS: @(#) $Id: compile.test,v 1.24.2.5 2008/04/17 19:47:35 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -432,13 +432,6 @@ test compile-15.5 {proper TCL_RETURN code from [return]} { set result } "" -test compile-16.0 {error return from unbraced math func call of unknown function} { - set l {3 4 5} - catch { expr bogus([join $l ,]) } msg - set msg -} {unknown math function "bogus"} - - # cleanup catch {rename p ""} catch {namespace delete test_ns_compile} -- cgit v0.12 From a58180f0f0aa42cc0b1586a5bdd0bb0acfe12922 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 17 Apr 2008 20:19:55 +0000 Subject: bump release tag --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 83050ae..068fbf6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-04-17 Andreas Kupries + *** 8.4.19 TAGGED FOR RELEASE *** + * generic/tclCompExpr.c (CompileMathFuncCall): Added * tests/compExpr.test (compExpr-5.10): Tcl_ResetResult before appending error message, to clear out possible sharing. Added test @@ -8,8 +10,6 @@ 2008-04-15 Andreas Kupries - *** 8.4.19 TAGGED FOR RELEASE *** - * generic/tclIO.c (CopyData): Applied another patch by Alexandre * io.test (io-53.8a): Ferrieux , to shift EOF handling to the async part of the command if a -- cgit v0.12 From c5fd5355ee987e7f3b51128bdf7272c8e571eea6 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 18 Apr 2008 14:30:51 +0000 Subject: Fix typo spotted by Steve Havelka --- doc/Namespace.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/Namespace.3 b/doc/Namespace.3 index 7bc77f4..83f1863 100644 --- a/doc/Namespace.3 +++ b/doc/Namespace.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Namespace.3,v 1.8 2006/02/01 18:27:43 dgp Exp $ +'\" RCS: @(#) $Id: Namespace.3,v 1.8.10.1 2008/04/18 14:30:51 dkf Exp $ '\" '\" Note that some of these functions do not seem to belong, but they '\" were all introduced with the same TIP (#139) @@ -13,7 +13,7 @@ .TH Tcl_Namespace 3 8.5 Tcl "Tcl Library Procedures" .BS .SH NAME -Tcl_AppendExportList, Tcl_CreateNamespace, Tcl_DeleteNamespace, Tcl_Export, Tcl_FindCommand, Tcl_FindNamespace, Tcl_ForgetImport, Tcl_GetCurrentNamespace, Tcl_GetGloblaNamespace, Tcl_GetNamespaceUnknownHandler, Tcl_Import, Tcl_SetNamespaceUnknownHandler \- manipulate namespaces +Tcl_AppendExportList, Tcl_CreateNamespace, Tcl_DeleteNamespace, Tcl_Export, Tcl_FindCommand, Tcl_FindNamespace, Tcl_ForgetImport, Tcl_GetCurrentNamespace, Tcl_GetGlobalNamespace, Tcl_GetNamespaceUnknownHandler, Tcl_Import, Tcl_SetNamespaceUnknownHandler \- manipulate namespaces .SH SYNOPSIS .nf \fB#include \fR -- cgit v0.12 From e56b4f5bbf2cf2a602730b664a8ad82cb816ca87 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 24 Apr 2008 18:50:41 +0000 Subject: * tests/ioCmd.test: Extended testsuite for reflected channel implementation. Added test cases about how it handles if the rug is pulled out from under a channel (= killing threads, interpreters containing the tcl command for a channel, and channel sitting in a different interpreter/thread.) * generic/tclIORChan.c: Fixed the bugs exposed by the new testcases, redone most of the cleanup and exit handling. --- ChangeLog | 11 ++ generic/tclIORChan.c | 382 ++++++++++++++++++++++++++++++++++++++++++++------- tests/ioCmd.test | 179 +++++++++++++++++++++++- 3 files changed, 523 insertions(+), 49 deletions(-) diff --git a/ChangeLog b/ChangeLog index 38ad2dc..618f606 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-04-24 Andreas Kupries + + * tests/ioCmd.test: Extended testsuite for reflected channel + implementation. Added test cases about how it handles if the rug + is pulled out from under a channel (= killing threads, + interpreters containing the tcl command for a channel, and channel + sitting in a different interpreter/thread.) + + * generic/tclIORChan.c: Fixed the bugs exposed by the new + testcases, redone most of the cleanup and exit handling. + 2008-04-15 Andreas Kupries * generic/tclIO.c (CopyData): Applied another patch by Alexandre diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 157e712..9781a5a 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.2 2008/04/04 17:19:42 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.3 2008/04/24 18:50:42 andreas_kupries Exp $ */ #include @@ -85,7 +85,11 @@ typedef struct { Tcl_Channel chan; /* Back reference to generic channel * structure. */ Tcl_Interp *interp; /* Reference to the interpreter containing the - * Tcl level part of the channel. */ + * Tcl level part of the channel. NULL here + * signals the channel is dead because the + * interpreter/thread containing its Tcl + * command is gone. + */ #ifdef TCL_THREADS Tcl_ThreadId thread; /* Thread the 'interp' belongs to. */ #endif @@ -338,6 +342,13 @@ typedef struct ForwardingEvent { struct ForwardingResult { Tcl_ThreadId src; /* Originating thread. */ Tcl_ThreadId dst; /* Thread the op was forwarded to. */ + Tcl_Interp* dsti; /* Interpreter in the thread the op was forwarded to. */ + /* + * Note regarding 'dsti' above: Its information is also available via the + * chain evPtr->rcPtr->interp, however, as can be seen, two more + * indirections are needed to retrieve it. And the evPtr may be gone, + * breaking the chain. + */ Tcl_Condition done; /* Condition variable the forwarder blocks * on. */ int result; /* TCL_OK or TCL_ERROR */ @@ -347,6 +358,17 @@ struct ForwardingResult { * results. */ }; +typedef struct ThreadSpecificData { + /* + * Table of all reflected channels owned by this thread. This is the + * per-thread version of the per-interpreter map. + */ + + ReflectedChannelMap* rcmPtr; +} ThreadSpecificData; + +static Tcl_ThreadDataKey dataKey; + /* * List of forwarded operations which have not completed yet, plus the mutex * to protect the access to this process global list. @@ -361,16 +383,15 @@ TCL_DECLARE_MUTEX(rcForwardMutex) * the event function executed by the thread receiving a forwarding event * (which executes the appropriate function and collects the result, if any). * - * The two ExitProcs are handlers so that things do not deadlock when either - * thread involved in the forwarding exits. They also clean things up so that - * we don't leak resources when threads go away. + * The ExitProc ensures that things do not deadlock when the sending thread + * involved in the forwarding exits. It also clean things up so that we don't + * leak resources when threads go away. */ static void ForwardOpToOwnerThread(ReflectedChannel *rcPtr, ForwardedOperation op, const VOID *param); static int ForwardProc(Tcl_Event *evPtr, int mask); static void SrcExitProc(ClientData clientData); -static void DstExitProc(ClientData clientData); #define FreeReceivedError(p) \ if ((p)->base.mustFree) { \ @@ -395,6 +416,10 @@ static void DstExitProc(ClientData clientData); (p)->base.msgStr = (char *) (emsg) static void ForwardSetObjError(ForwardParam *p, Tcl_Obj *objPtr); + +static ReflectedChannelMap * GetThreadReflectedChannelMap(void); +static void DeleteThreadReflectedChannelMap(ClientData clientData); + #endif /* TCL_THREADS */ #define SetChannelErrorStr(c,msgStr) \ @@ -437,9 +462,10 @@ static const char *msg_write_toomuch = "{write wrote more than requested}"; static const char *msg_write_nothing = "{write wrote nothing}"; static const char *msg_seek_beforestart = "{Tried to seek before origin}"; #ifdef TCL_THREADS -static const char *msg_send_originlost = "{Origin thread lost}"; -static const char *msg_send_dstlost = "{Destination thread lost}"; +static const char *msg_send_originlost = "{Channel thread lost}"; +static const char *msg_send_dstlost = "{Owner lost}"; #endif /* TCL_THREADS */ +static const char *msg_dstlost = "-code 1 -level 0 -errorcode NONE -errorinfo {} -errorline 1 {Owner lost}"; /* * Main methods to plug into the 'chan' ensemble'. ================== @@ -696,6 +722,12 @@ TclChanCreateObjCmd( } } Tcl_SetHashValue(hPtr, chan); +#ifdef TCL_THREADS + rcmPtr = GetThreadReflectedChannelMap(); + hPtr = Tcl_CreateHashEntry(&rcmPtr->map, + chanPtr->state->channelName, &isNew); + Tcl_SetHashValue(hPtr, chan); +#endif /* * Return handle as result of command. @@ -1026,8 +1058,8 @@ ReflectClose( /* * THREADED => Forward this to the origin thread * - * Note: Have a thread delete handler for the origin thread. Use this - * to clean up the structure! + * Note: DeleteThreadReflectedChannelMap() is the thread exit handler for the origin + * thread. Use this to clean up the structure? Except if lost? */ #ifdef TCL_THREADS @@ -1098,12 +1130,26 @@ ReflectClose( * Remove the channel from the map before releasing the memory, to * prevent future accesses (like by 'postevent') from finding and * dereferencing a dangling pointer. + * + * NOTE: The channel may not be in the map. This is ok, that happens + * when the channel was created in a different interpreter and/or + * thread and then was moved here. */ rcmPtr = GetReflectedChannelMap (interp); hPtr = Tcl_FindHashEntry (&rcmPtr->map, Tcl_GetChannelName (rcPtr->chan)); - Tcl_DeleteHashEntry (hPtr); + if (hPtr) { + Tcl_DeleteHashEntry (hPtr); + } +#ifdef TCL_THREADS + rcmPtr = GetThreadReflectedChannelMap(); + hPtr = Tcl_FindHashEntry (&rcmPtr->map, + Tcl_GetChannelName (rcPtr->chan)); + if (hPtr) { + Tcl_DeleteHashEntry (hPtr); + } +#endif FreeReflectedChannel(rcPtr); #ifdef TCL_THREADS @@ -1169,6 +1215,7 @@ ReflectInput( if (p.base.code != TCL_OK) { PassReceivedError(rcPtr->chan, &p); *errorCodePtr = EINVAL; + p.input.toRead = -1; } else { *errorCodePtr = EOK; } @@ -1263,6 +1310,7 @@ ReflectOutput( if (p.base.code != TCL_OK) { PassReceivedError(rcPtr->chan, &p); *errorCodePtr = EINVAL; + p.output.toWrite = -1; } else { *errorCodePtr = EOK; } @@ -1361,6 +1409,7 @@ ReflectSeekWide( if (p.base.code != TCL_OK) { PassReceivedError(rcPtr->chan, &p); *errorCodePtr = EINVAL; + p.seek.offset = -1; } else { *errorCodePtr = EOK; } @@ -2066,9 +2115,24 @@ InvokeTclMethod( int result; /* Result code of method invokation */ Tcl_Obj *resObj = NULL; /* Result of method invokation. */ + if (!rcPtr->interp) { + /* + * The channel is marked as dead. Bail out immediately, with an + * appropriate error. + */ + + if (resultObjPtr != NULL) { + resObj = Tcl_NewStringObj(msg_dstlost,-1); + *resultObjPtr = resObj; + Tcl_IncrRefCount(resObj); + } + return TCL_ERROR; + } + /* * NOTE (5): Decide impl. issue: Cache objects with method names? Needs * TSD data as reflections can be created in many different threads. + * NO: Caching of command resolutions means storage per channel. */ /* @@ -2242,11 +2306,25 @@ DeleteReflectedChannelMap( ReflectedChannelMap* rcmPtr; /* The map */ Tcl_HashSearch hSearch; /* Search variable. */ Tcl_HashEntry *hPtr; /* Search variable. */ + ReflectedChannel* rcPtr; + Tcl_Channel chan; + +#ifdef TCL_THREADS + ForwardingResult *resultPtr; + ForwardingEvent *evPtr; + ForwardParam *paramPtr; +#endif /* - * Delete all entries. The channels may have been closed alreay, or will + * Delete all entries. The channels may have been closed already, or will * be closed later, by the standard IO finalization of an interpreter - * under destruction. + * under destruction. Except for the channels which were moved to a + * different interpreter and/or thread. They do not exist from the IO + * systems point of view and will not get closed. Therefore mark all as + * dead so that any future access will cause a proper error. For channels + * in a different thread we actually do the same as + * DeleteThreadReflectedChannelMap(), just restricted to the channels of + * this interp. */ rcmPtr = clientData; @@ -2254,13 +2332,208 @@ DeleteReflectedChannelMap( hPtr != NULL; hPtr = Tcl_FirstHashEntry(&rcmPtr->map, &hSearch)) { + chan = (Tcl_Channel) Tcl_GetHashValue (hPtr); + rcPtr = (ReflectedChannel *) Tcl_GetChannelInstanceData(chan); + + rcPtr->interp = NULL; + Tcl_DeleteHashEntry(hPtr); } Tcl_DeleteHashTable(&rcmPtr->map); ckfree((char *) &rcmPtr->map); + +#ifdef TCL_THREADS + /* + * The origin interpreter for one or more reflected channels is gone. + */ + + /* + * Go through the list of pending results and cancel all whose events were + * destined for this interpreter. While this is in progress we block any + * other access to the list of pending results. + */ + + Tcl_MutexLock(&rcForwardMutex); + + for (resultPtr = forwardList; + resultPtr != NULL; + resultPtr = resultPtr->nextPtr) { + if (resultPtr->dsti != interp) { + /* Ignore results/events for other interpreters. */ + continue; + } + + /* + * The receiver for the event exited, before processing the event. We + * detach the result now, wake the originator up and signal failure. + */ + + evPtr = resultPtr->evPtr; + paramPtr = evPtr->param; + + evPtr->resultPtr = NULL; + resultPtr->evPtr = NULL; + resultPtr->result = TCL_ERROR; + + ForwardSetStaticError(paramPtr, msg_send_dstlost); + + Tcl_ConditionNotify(&resultPtr->done); + } + + /* + * Get the map of all channels handled by the current thread. This is a + * ReflectedChannelMap, but on a per-thread basis, not per-interp. Go + * through the channels and remove all which were handled by this + * interpreter. They have already been marked as dead. + */ + + rcmPtr = GetThreadReflectedChannelMap(); + for (hPtr = Tcl_FirstHashEntry(&rcmPtr->map, &hSearch); + hPtr != NULL; + hPtr = Tcl_NextHashEntry(&hSearch)) { + + chan = (Tcl_Channel) Tcl_GetHashValue (hPtr); + rcPtr = (ReflectedChannel *) Tcl_GetChannelInstanceData(chan); + + if (rcPtr->interp != interp) { + /* Ignore entries for other interpreters */ + continue; + } + + Tcl_DeleteHashEntry(hPtr); + } + + Tcl_MutexUnlock(&rcForwardMutex); +#endif } #ifdef TCL_THREADS +/* + *---------------------------------------------------------------------- + * + * GetThreadReflectedChannelMap -- + * + * Gets and potentially initializes the reflected channel map for a + * thread. + * + * Results: + * A pointer to the map created, for use by the caller. + * + * Side effects: + * Initializes the reflected channel map for a thread. + * + *---------------------------------------------------------------------- + */ + +static ReflectedChannelMap * +GetThreadReflectedChannelMap() +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + if (!tsdPtr->rcmPtr) { + tsdPtr->rcmPtr = (ReflectedChannelMap *) ckalloc(sizeof(ReflectedChannelMap)); + Tcl_InitHashTable(&tsdPtr->rcmPtr->map, TCL_STRING_KEYS); + Tcl_CreateThreadExitHandler(DeleteThreadReflectedChannelMap, NULL); + } + + return tsdPtr->rcmPtr; +} + +/* + *---------------------------------------------------------------------- + * + * DeleteThreadReflectedChannelMap -- + * + * Deletes the channel table for a thread. This procedure is invoked when + * a thread is deleted. The channels have already been marked as dead, in + * DeleteReflectedChannelMap(). + * + * Results: + * None. + * + * Side effects: + * Deletes the hash table of channels. + * + *---------------------------------------------------------------------- + */ + +static void +DeleteThreadReflectedChannelMap( + ClientData clientData) /* The per-thread data structure. */ +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + Tcl_HashSearch hSearch; /* Search variable. */ + Tcl_HashEntry *hPtr; /* Search variable. */ + Tcl_ThreadId self = Tcl_GetCurrentThread(); + + ReflectedChannelMap* rcmPtr; /* The map */ + Tcl_Channel chan; + ReflectedChannel* rcPtr; + ForwardingResult *resultPtr; + ForwardingEvent *evPtr; + ForwardParam *paramPtr; + + /* + * The origin thread for one or more reflected channels is gone. + * NOTE: If this function is called due to a thread getting killed the + * per-interp DeleteReflectedChannelMap is apparently not called. + */ + + /* + * Go through the list of pending results and cancel all whose events were + * destined for this thread. While this is in progress we block any + * other access to the list of pending results. + */ + + Tcl_MutexLock(&rcForwardMutex); + + for (resultPtr = forwardList; + resultPtr != NULL; + resultPtr = resultPtr->nextPtr) { + if (resultPtr->dst != self) { + /* Ignore results/events for other threads. */ + continue; + } + + /* + * The receiver for the event exited, before processing the event. We + * detach the result now, wake the originator up and signal failure. + */ + + evPtr = resultPtr->evPtr; + paramPtr = evPtr->param; + + evPtr->resultPtr = NULL; + resultPtr->evPtr = NULL; + resultPtr->result = TCL_ERROR; + + ForwardSetStaticError(paramPtr, msg_send_dstlost); + + Tcl_ConditionNotify(&resultPtr->done); + } + + /* + * Get the map of all channels handled by the current thread. This is a + * ReflectedChannelMap, but on a per-thread basis, not per-interp. Go + * through the channels, remove all, mark them as dead. + */ + + rcmPtr = GetThreadReflectedChannelMap(); + for (hPtr = Tcl_FirstHashEntry(&rcmPtr->map, &hSearch); + hPtr != NULL; + hPtr = Tcl_FirstHashEntry(&rcmPtr->map, &hSearch)) { + + chan = (Tcl_Channel) Tcl_GetHashValue (hPtr); + rcPtr = (ReflectedChannel *) Tcl_GetChannelInstanceData(chan); + + rcPtr->interp = NULL; + + Tcl_DeleteHashEntry(hPtr); + } + + Tcl_MutexUnlock(&rcForwardMutex); +} + static void ForwardOpToOwnerThread( ReflectedChannel *rcPtr, /* Channel instance */ @@ -2273,6 +2546,24 @@ ForwardOpToOwnerThread( int result; /* + * We gather the lock early. This allows us to check the liveness of the + * channel without interference from DeleteThreadReflectedChannelMap(). + */ + + Tcl_MutexLock(&rcForwardMutex); + + if (rcPtr->interp == NULL) { + /* + * The channel is marked as dead. Bail out immediately, with an + * appropriate error. Do not forget to unlock the mutex on this path. + */ + + ForwardSetStaticError((ForwardParam *)param, msg_send_dstlost); + Tcl_MutexUnlock(&rcForwardMutex); + return; + } + + /* * Create and initialize the event and data structures. */ @@ -2285,8 +2576,9 @@ ForwardOpToOwnerThread( evPtr->rcPtr = rcPtr; evPtr->param = (ForwardParam *) param; - resultPtr->src = Tcl_GetCurrentThread(); - resultPtr->dst = dst; + resultPtr->src = Tcl_GetCurrentThread(); + resultPtr->dst = dst; + resultPtr->dsti = rcPtr->interp; resultPtr->done = NULL; resultPtr->result = -1; resultPtr->evPtr = evPtr; @@ -2295,16 +2587,18 @@ ForwardOpToOwnerThread( * Now execute the forward. */ - Tcl_MutexLock(&rcForwardMutex); TclSpliceIn(resultPtr, forwardList); + /* Do not unlock here. That is done by the ConditionWait */ /* - * Ensure cleanup of the event if any of the two involved threads exits - * while this event is pending or in progress. + * Ensure cleanup of the event if the origin thread exits while this event + * is pending or in progress. Exitus of the destination thread is handled + * by DeleteThreadReflectionChannelMap(), this is set up by + * GetThreadReflectedChannelMap(). This is what we use the 'forwardList' + * (see above) for. */ Tcl_CreateThreadExitHandler(SrcExitProc, (ClientData) evPtr); - Tcl_CreateThreadExitHandler(DstExitProc, (ClientData) evPtr); /* * Queue the event and poke the other thread's notifier. @@ -2323,6 +2617,9 @@ ForwardOpToOwnerThread( * NOTE (1): Is it possible that the current thread goes away while * waiting here? IOW Is it possible that "SrcExitProc" is called while * we are here? See complementary note (2) in "SrcExitProc" + * + * The ConditionWait unlocks the mutex during the wait and relocks it + * immediately after. */ Tcl_ConditionWait(&resultPtr->done, &rcForwardMutex, NULL); @@ -2330,6 +2627,7 @@ ForwardOpToOwnerThread( /* * Unlink result from the forwarder list. + * No need to lock. Either still locked, or locked by the ConditionWait */ TclSpliceOut(resultPtr, forwardList); @@ -2341,14 +2639,13 @@ ForwardOpToOwnerThread( Tcl_ConditionFinalize(&resultPtr->done); /* - * Kill the cleanup handlers now, and the result structure as well, before + * Kill the cleanup handler now, and the result structure as well, before * returning the success code. * * Note: The event structure has already been deleted. */ Tcl_DeleteThreadExitHandler(SrcExitProc, (ClientData) evPtr); - Tcl_DeleteThreadExitHandler(DstExitProc, (ClientData) evPtr); result = resultPtr->result; ckfree((char*) resultPtr); @@ -2378,6 +2675,8 @@ ForwardProc( Tcl_Interp *interp = rcPtr->interp; ForwardParam *paramPtr = evPtr->param; Tcl_Obj *resObj = NULL; /* Interp result of InvokeTclMethod */ + ReflectedChannelMap* rcmPtr; /* Map of reflected channels with handlers in this interp */ + Tcl_HashEntry* hPtr; /* Entry in the above map */ /* * Ignore the event if no one is waiting for its result anymore. @@ -2411,8 +2710,22 @@ ForwardProc( * Freeing is done here, in the origin thread, because the argv[] * objects belong to this thread. Deallocating them in a different * thread is not allowed + * + * We remove the channel from both interpreter and thread maps before + * releasing the memory, to prevent future accesses (like by + * 'postevent') from finding and dereferencing a dangling pointer. */ + rcmPtr = GetReflectedChannelMap (interp); + hPtr = Tcl_FindHashEntry (&rcmPtr->map, + Tcl_GetChannelName (rcPtr->chan)); + Tcl_DeleteHashEntry (hPtr); + + rcmPtr = GetThreadReflectedChannelMap(); + hPtr = Tcl_FindHashEntry (&rcmPtr->map, + Tcl_GetChannelName (rcPtr->chan)); + Tcl_DeleteHashEntry (hPtr); + FreeReflectedChannel(rcPtr); break; @@ -2674,33 +2987,6 @@ SrcExitProc( } static void -DstExitProc( - ClientData clientData) -{ - ForwardingEvent *evPtr = (ForwardingEvent *) clientData; - ForwardingResult *resultPtr = evPtr->resultPtr; - ForwardParam *paramPtr = evPtr->param; - - /* - * NOTE (3): It is not clear if the event still exists when this handler - * is called. We might have to use 'resultPtr' as our clientData instead. - */ - - /* - * The receiver for the event exited, before processing the event. We - * detach the result now, wake the originator up and signal failure. - */ - - evPtr->resultPtr = NULL; - resultPtr->evPtr = NULL; - resultPtr->result = TCL_ERROR; - - ForwardSetStaticError(paramPtr, msg_send_dstlost); - - Tcl_ConditionNotify(&resultPtr->done); -} - -static void ForwardSetObjError( ForwardParam *paramPtr, Tcl_Obj *obj) diff --git a/tests/ioCmd.test b/tests/ioCmd.test index 5c6a330..fa5d058 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.36.2.4 2008/04/10 20:55:27 andreas_kupries Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.36.2.5 2008/04/24 18:50:42 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -758,6 +758,11 @@ test iocmd-21.19 {chan create, init failure -> no channel, no finalize} -match g # --- --- --- --------- --------- --------- # Helper commands to record the arguments to handler methods. +# Stored in a script so that the threads and interpreters needing this +# code do not need their own copy but can access this variable. + +set helperscript { + proc note {item} {global res; lappend res $item; return} proc track {} {upvar args item; note $item; return} proc notes {items} {foreach i $items {note $i}} @@ -785,6 +790,10 @@ proc onfinal {} { if {[lindex $hargs 0] ne "finalize"} {return} return -code return "" } +} + +# Set everything up in the main thread. +eval $helperscript # --- --- --- --------- --------- --------- # method finalize @@ -1808,6 +1817,90 @@ test iocmd-31.8 {chan postevent after close throws error} -match glob -setup { rename dummy {} } -returnCodes error -result {can not find reflected channel named "rc*"} +# --- === *** ########################### +# 'Pull the rug' tests. Create channel in a interpreter A, move to +# other interpreter B, destroy the origin interpreter (A) before or +# during access from B. Must not crash, must return proper errors. + +test iocmd-32.0 {origin interpreter of moved channel gone} -match glob -body { + + set ida [interp create];#puts <<$ida>> + set idb [interp create];#puts <<$idb>> + + # Magic to get the test* commands in the slaves + load {} Tcltest $ida + load {} Tcltest $idb + + # Set up channel in interpreter + interp eval $ida $helperscript + set chan [interp eval $ida { + proc foo {args} {oninit seek; onfinal; track; return} + set chan [chan create {r w} foo] + fconfigure $chan -buffering none + set chan + }] + + # Move channel to 2nd interpreter. + interp eval $ida [list testchannel cut $chan] + interp eval $idb [list testchannel splice $chan] + + # Kill origin interpreter, then access channel from 2nd interpreter. + interp delete $ida + + set res {} + lappend res [catch {interp eval $idb [list puts $chan shoo]} msg] $msg + lappend res [catch {interp eval $idb [list tell $chan]} msg] $msg + lappend res [catch {interp eval $idb [list seek $chan 1]} msg] $msg + lappend res [catch {interp eval $idb [list gets $chan]} msg] $msg + lappend res [catch {interp eval $idb [list close $chan]} msg] $msg + set res + +} -constraints {testchannel} \ + -result {1 {Owner lost} 1 {Owner lost} 1 {Owner lost} 1 {Owner lost} 1 {Owner lost}} + +test iocmd-32.1 {origin interpreter of moved channel destroyed during access} -match glob -body { + + set ida [interp create];#puts <<$ida>> + set idb [interp create];#puts <<$idb>> + + # Magic to get the test* commands in the slaves + load {} Tcltest $ida + load {} Tcltest $idb + + # Set up channel in thread + set chan [interp eval $ida $helperscript] + set chan [interp eval $ida { + proc foo {args} { + oninit; onfinal; track; + # destroy interpreter during channel access + # Actually not possible for an interp to destory itself. + interp delete {} + return} + set chan [chan create {r w} foo] + fconfigure $chan -buffering none + set chan + }] + + # Move channel to 2nd thread. + interp eval $ida [list testchannel cut $chan] + interp eval $idb [list testchannel splice $chan] + + # Run access from interpreter B, this will give us a synchronous + # response. + + interp eval $idb [list set chan $chan] + interp eval $idb [list set mid $tcltest::mainThread] + set res [interp eval $idb { + # wait a bit, give the main thread the time to start its event + # loop to wait for the response from B + after 2000 + catch { puts $chan shoo } res + set res + }] + set res +} -constraints {testchannel impossible} \ + -result {Owner lost} + # ### ### ### ######### ######### ######### ## Same tests as above, but exercising the code forwarding and ## receiving driver operations to the originator thread. @@ -3196,6 +3289,90 @@ test iocmd.tf-31.8 {chan postevent, bad input} -match glob -body { } -constraints {testchannel testthread} \ -result {{can not find reflected channel named "rc*"}} +# --- === *** ########################### +# 'Pull the rug' tests. Create channel in a thread A, move to other +# thread B, destroy the origin thread (A) before or during access from +# B. Must not crash, must return proper errors. + +test iocmd.tf-32.0 {origin thread of moved channel gone} -match glob -body { + + #puts <<$tcltest::mainThread>>main + set tida [testthread create];#puts <<$tida>> + set tidb [testthread create];#puts <<$tidb>> + + # Set up channel in thread + testthread send $tida $helperscript + set chan [testthread send $tida { + proc foo {args} {oninit seek; onfinal; track; return} + set chan [chan create {r w} foo] + fconfigure $chan -buffering none + set chan + }] + + # Move channel to 2nd thread. + testthread send $tida [list testchannel cut $chan] + testthread send $tidb [list testchannel splice $chan] + + # Kill origin thread, then access channel from 2nd thread. + testthread send -async $tida {testthread exit} + after 100 + + set res {} + lappend res [catch {testthread send $tidb [list puts $chan shoo]} msg] $msg + + lappend res [catch {testthread send $tidb [list tell $chan]} msg] $msg + lappend res [catch {testthread send $tidb [list seek $chan 1]} msg] $msg + lappend res [catch {testthread send $tidb [list gets $chan]} msg] $msg + lappend res [catch {testthread send $tidb [list close $chan]} msg] $msg + tcltest::threadReap + set res + +} -constraints {testchannel testthread} \ + -result {1 {Owner lost} 1 {Owner lost} 1 {Owner lost} 1 {Owner lost} 1 {Owner lost}} + +test iocmd.tf-32.1 {origin thread of moved channel destroyed during access} -match glob -body { + + #puts <<$tcltest::mainThread>>main + set tida [testthread create];#puts <<$tida>> + set tidb [testthread create];#puts <<$tidb>> + + # Set up channel in thread + set chan [testthread send $tida $helperscript] + set chan [testthread send $tida { + proc foo {args} { + oninit; onfinal; track; + # destroy thread during channel access + testthread exit + return} + set chan [chan create {r w} foo] + fconfigure $chan -buffering none + set chan + }] + + # Move channel to 2nd thread. + testthread send $tida [list testchannel cut $chan] + testthread send $tidb [list testchannel splice $chan] + + # Run access from thread B, wait for response from A (A is not + # using event loop at this point, so the event pile up in the + # queue. + + testthread send $tidb [list set chan $chan] + testthread send $tidb [list set mid $tcltest::mainThread] + testthread send -async $tidb { + # wait a bit, give the main thread the time to start its event + # loop to wait for the response from B + after 2000 + catch { puts $chan shoo } res + testthread send -async $mid [list set ::res $res] + } + vwait ::res + + tcltest::threadReap + set res +} -constraints {testchannel testthread} \ + -result {Owner lost} + # ### ### ### ######### ######### ######### # ### ### ### ######### ######### ######### -- cgit v0.12 From 1cd98f7072e5db213a4fe2b64666480101b1edae Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Sat, 26 Apr 2008 11:37:45 +0000 Subject: generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt to locate handler token fails. Happens when some other thread attempts to delete somebody else's token. --- ChangeLog | 6 ++++++ generic/tclAsync.c | 44 ++++++++++++++++++++++++++------------------ 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 068fbf6..855ff1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-04-26 Zoran Vasiljevic + + * generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt + to locate handler token fails. Happens when some other + thread attempts to delete somebody else's token. + 2008-04-17 Andreas Kupries *** 8.4.19 TAGGED FOR RELEASE *** diff --git a/generic/tclAsync.c b/generic/tclAsync.c index c99cea9..f036b47 100644 --- a/generic/tclAsync.c +++ b/generic/tclAsync.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAsync.c,v 1.6.12.1 2006/07/11 13:18:10 vasiljevic Exp $ + * RCS: @(#) $Id: tclAsync.c,v 1.6.12.2 2008/04/26 11:37:47 vasiljevic Exp $ */ #include "tclInt.h" @@ -275,6 +275,13 @@ Tcl_AsyncInvoke(interp, code) * Side effects: * The state associated with the handler is deleted. * + * Failure to locate the handler in current thread private list + * of async handlers will result in panic; exception: the list + * is already empty (potential trouble?). + * Consequently, threads should create and delete handlers + * themselves. I.e. a handler created by one should not be + * deleted by some other thread. + * *---------------------------------------------------------------------- */ @@ -284,31 +291,32 @@ Tcl_AsyncDelete(async) { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); AsyncHandler *asyncPtr = (AsyncHandler *) async; - AsyncHandler *prevPtr; + AsyncHandler *prevPtr, *thisPtr; /* - * Conservatively check the existence of the linked list of - * registered handlers, as we may come at this point even - * when the TSD's for the current thread have been already - * garbage-collected. + * If we come to this point when TSD's for the current + * thread have already been garbage-collected, we are + * in the _serious_ trouble. OTOH, we tolerate calling + * with already cleaned-up handler list (should we?). */ Tcl_MutexLock(&tsdPtr->asyncMutex); - if (tsdPtr->firstHandler != NULL ) { - if (tsdPtr->firstHandler == asyncPtr) { + if (tsdPtr->firstHandler != NULL) { + prevPtr = thisPtr = tsdPtr->firstHandler; + while (thisPtr != NULL && thisPtr != asyncPtr) { + prevPtr = thisPtr; + thisPtr = thisPtr->nextPtr; + } + if (thisPtr == NULL) { + panic("Tcl_AsyncDelete: cannot find async handler"); + } + if (asyncPtr == tsdPtr->firstHandler) { tsdPtr->firstHandler = asyncPtr->nextPtr; - if (tsdPtr->firstHandler == NULL) { - tsdPtr->lastHandler = NULL; - } } else { - prevPtr = tsdPtr->firstHandler; - while (prevPtr->nextPtr != asyncPtr) { - prevPtr = prevPtr->nextPtr; - } prevPtr->nextPtr = asyncPtr->nextPtr; - if (tsdPtr->lastHandler == asyncPtr) { - tsdPtr->lastHandler = prevPtr; - } + } + if (asyncPtr == tsdPtr->lastHandler) { + tsdPtr->lastHandler = prevPtr; } } Tcl_MutexUnlock(&tsdPtr->asyncMutex); -- cgit v0.12 From 27aec14d72c41ea56ffe2785d3a598a76f64c5db Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Sat, 26 Apr 2008 11:50:31 +0000 Subject: Oooops... wrong year in the log timestamp? --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 855ff1d..d0782c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -2007-04-26 Zoran Vasiljevic +2008-04-26 Zoran Vasiljevic * generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt to locate handler token fails. Happens when some other -- cgit v0.12 From 1fbfeae31be33fc423d361863f7cdbf1035167fe Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Sun, 27 Apr 2008 08:05:36 +0000 Subject: generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt to locate handler token fails. Happens when some other thread attempts to delete somebody else's token. --- ChangeLog | 6 ++++++ generic/tclAsync.c | 43 +++++++++++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 618f606..7f14005 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-04-26 Zoran Vasiljevic + + * generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt + to locate handler token fails. Happens when some other + thread attempts to delete somebody else's token. + 2008-04-24 Andreas Kupries * tests/ioCmd.test: Extended testsuite for reflected channel diff --git a/generic/tclAsync.c b/generic/tclAsync.c index c088ce5..dcde29e 100644 --- a/generic/tclAsync.c +++ b/generic/tclAsync.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAsync.c,v 1.13 2007/12/13 15:23:14 dgp Exp $ + * RCS: @(#) $Id: tclAsync.c,v 1.13.2.1 2008/04/27 08:05:39 vasiljevic Exp $ */ #include "tclInt.h" @@ -259,6 +259,13 @@ Tcl_AsyncInvoke( * Side effects: * The state associated with the handler is deleted. * + * Failure to locate the handler in current thread private list + * of async handlers will result in panic; exception: the list + * is already empty (potential trouble?). + * Consequently, threads should create and delete handlers + * themselves. I.e. a handler created by one should not be + * deleted by some other thread. + * *---------------------------------------------------------------------- */ @@ -268,7 +275,14 @@ Tcl_AsyncDelete( { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); AsyncHandler *asyncPtr = (AsyncHandler *) async; - AsyncHandler *prevPtr; + AsyncHandler *prevPtr, *thisPtr; + + /* + * If we come to this point when TSD's for the current + * thread have already been garbage-collected, we are + * in the _serious_ trouble. OTOH, we tolerate calling + * with already cleaned-up handler list (should we?). + */ /* * Conservatively check the existence of the linked list of @@ -278,21 +292,22 @@ Tcl_AsyncDelete( */ Tcl_MutexLock(&tsdPtr->asyncMutex); - if (tsdPtr->firstHandler != NULL ) { - if (tsdPtr->firstHandler == asyncPtr) { + if (tsdPtr->firstHandler != NULL) { + prevPtr = thisPtr = tsdPtr->firstHandler; + while (thisPtr != NULL && thisPtr != asyncPtr) { + prevPtr = thisPtr; + thisPtr = thisPtr->nextPtr; + } + if (thisPtr == NULL) { + panic("Tcl_AsyncDelete: cannot find async handler"); + } + if (asyncPtr == tsdPtr->firstHandler) { tsdPtr->firstHandler = asyncPtr->nextPtr; - if (tsdPtr->firstHandler == NULL) { - tsdPtr->lastHandler = NULL; - } } else { - prevPtr = tsdPtr->firstHandler; - while (prevPtr->nextPtr != asyncPtr) { - prevPtr = prevPtr->nextPtr; - } prevPtr->nextPtr = asyncPtr->nextPtr; - if (tsdPtr->lastHandler == asyncPtr) { - tsdPtr->lastHandler = prevPtr; - } + } + if (asyncPtr == tsdPtr->lastHandler) { + tsdPtr->lastHandler = prevPtr; } } Tcl_MutexUnlock(&tsdPtr->asyncMutex); -- cgit v0.12 From de1bb7a14fd63e5fb0a20ea489dcba8e439937b7 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Sun, 27 Apr 2008 08:18:12 +0000 Subject: Also, panic early if we find out the wrong thread attempting to delete the async handler (common trap). As, only the one that created the handler is allowed to delete it. --- ChangeLog | 4 ++++ generic/tclAsync.c | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d0782c9..b1b5f59 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,10 @@ to locate handler token fails. Happens when some other thread attempts to delete somebody else's token. + Also, panic early if we find out the wrong thread attempting + to delete the async handler (common trap). As, only the one + that created the handler is allowed to delete it. + 2008-04-17 Andreas Kupries *** 8.4.19 TAGGED FOR RELEASE *** diff --git a/generic/tclAsync.c b/generic/tclAsync.c index f036b47..9a78c8f 100644 --- a/generic/tclAsync.c +++ b/generic/tclAsync.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAsync.c,v 1.6.12.2 2008/04/26 11:37:47 vasiljevic Exp $ + * RCS: @(#) $Id: tclAsync.c,v 1.6.12.3 2008/04/27 08:18:13 vasiljevic Exp $ */ #include "tclInt.h" @@ -294,6 +294,14 @@ Tcl_AsyncDelete(async) AsyncHandler *prevPtr, *thisPtr; /* + * Assure early handling of the constraint + */ + + if (asyncPtr->originThrdId != Tcl_GetCurrentThread()) { + panic("Tcl_AsyncDelete: async handler deleted by the wrong thread"); + } + + /* * If we come to this point when TSD's for the current * thread have already been garbage-collected, we are * in the _serious_ trouble. OTOH, we tolerate calling -- cgit v0.12 From 6e6d593ca2987c4f6fcfc00ec6ba19b866f5c7c2 Mon Sep 17 00:00:00 2001 From: vasiljevic Date: Sun, 27 Apr 2008 08:26:05 +0000 Subject: Also, panic early if we find out the wrong thread attempting to delete the async handler (common trap). As, only the one that created the handler is allowed to delete it. --- ChangeLog | 4 ++++ generic/tclAsync.c | 17 +++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7f14005..82518bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,10 @@ to locate handler token fails. Happens when some other thread attempts to delete somebody else's token. + Also, panic early if we find out the wrong thread attempting + to delete the async handler (common trap). As, only the one + that created the handler is allowed to delete it. + 2008-04-24 Andreas Kupries * tests/ioCmd.test: Extended testsuite for reflected channel diff --git a/generic/tclAsync.c b/generic/tclAsync.c index dcde29e..44ffbea 100644 --- a/generic/tclAsync.c +++ b/generic/tclAsync.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAsync.c,v 1.13.2.1 2008/04/27 08:05:39 vasiljevic Exp $ + * RCS: @(#) $Id: tclAsync.c,v 1.13.2.2 2008/04/27 08:26:05 vasiljevic Exp $ */ #include "tclInt.h" @@ -278,19 +278,20 @@ Tcl_AsyncDelete( AsyncHandler *prevPtr, *thisPtr; /* + * Assure early handling of the constraint + */ + + if (asyncPtr->originThrdId != Tcl_GetCurrentThread()) { + panic("Tcl_AsyncDelete: async handler deleted by the wrong thread"); + } + + /* * If we come to this point when TSD's for the current * thread have already been garbage-collected, we are * in the _serious_ trouble. OTOH, we tolerate calling * with already cleaned-up handler list (should we?). */ - /* - * Conservatively check the existence of the linked list of - * registered handlers, as we may come at this point even - * when the TSD's for the current thread have been already - * garbage-collected. - */ - Tcl_MutexLock(&tsdPtr->asyncMutex); if (tsdPtr->firstHandler != NULL) { prevPtr = thisPtr = tsdPtr->firstHandler; -- cgit v0.12 From 02294be489dbb679471e2a8c1d210629a4c3afd9 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 3 May 2008 19:31:28 +0000 Subject: use Tcl_Panic() instead of panic() --- generic/tclAsync.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generic/tclAsync.c b/generic/tclAsync.c index 44ffbea..1b2824b 100644 --- a/generic/tclAsync.c +++ b/generic/tclAsync.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAsync.c,v 1.13.2.2 2008/04/27 08:26:05 vasiljevic Exp $ + * RCS: @(#) $Id: tclAsync.c,v 1.13.2.3 2008/05/03 19:31:28 das Exp $ */ #include "tclInt.h" @@ -282,7 +282,7 @@ Tcl_AsyncDelete( */ if (asyncPtr->originThrdId != Tcl_GetCurrentThread()) { - panic("Tcl_AsyncDelete: async handler deleted by the wrong thread"); + Tcl_Panic("Tcl_AsyncDelete: async handler deleted by the wrong thread"); } /* @@ -300,7 +300,7 @@ Tcl_AsyncDelete( thisPtr = thisPtr->nextPtr; } if (thisPtr == NULL) { - panic("Tcl_AsyncDelete: cannot find async handler"); + Tcl_Panic("Tcl_AsyncDelete: cannot find async handler"); } if (asyncPtr == tsdPtr->firstHandler) { tsdPtr->firstHandler = asyncPtr->nextPtr; -- cgit v0.12 From fade20a9e630971ffc8399259b7e14adc2229760 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 3 May 2008 21:06:02 +0000 Subject: fix warning --- generic/tclIORChan.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 9781a5a..51c5e61 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.3 2008/04/24 18:50:42 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.4 2008/05/03 21:06:02 das Exp $ */ #include @@ -2461,7 +2461,6 @@ static void DeleteThreadReflectedChannelMap( ClientData clientData) /* The per-thread data structure. */ { - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); Tcl_HashSearch hSearch; /* Search variable. */ Tcl_HashEntry *hPtr; /* Search variable. */ Tcl_ThreadId self = Tcl_GetCurrentThread(); -- cgit v0.12 From 25edfa4cd0936846023823ff357f138cbfd37cd9 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 6 May 2008 16:33:38 +0000 Subject: fix Makefile dependency --- macosx/GNUmakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/macosx/GNUmakefile b/macosx/GNUmakefile index 2b3b8bb..28acdcd 100644 --- a/macosx/GNUmakefile +++ b/macosx/GNUmakefile @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: GNUmakefile,v 1.9 2008/03/11 22:28:34 das Exp $ +# RCS: @(#) $Id: GNUmakefile,v 1.9.2.1 2008/05/06 16:33:38 das Exp $ # ######################################################################################################## @@ -76,7 +76,7 @@ OBJ_DIR = ${OBJROOT}/${BUILD_STYLE} empty := space := ${empty} ${empty} -objdir := $(subst ${space},\ ,${OBJ_DIR}) +objdir = $(subst ${space},\ ,${OBJ_DIR}) develop_make_args := BUILD_STYLE=Development CONFIGURE_ARGS=--enable-symbols deploy_make_args := BUILD_STYLE=Deployment INSTALL_TARGET=install-strip \ -- cgit v0.12 From a0b336f430a04225031da273f5deddedc558534b Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 7 May 2008 10:39:35 +0000 Subject: Fix off-by-one error that caused crashes. Backport from HEAD. --- ChangeLog | 31 +++++++++++++++++++------------ generic/tclCompCmds.c | 4 ++-- tests/dict.test | 5 ++++- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 82518bb..46a535d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,23 +1,30 @@ +2008-05-07 Donal K. Fellows + + * generic/tclCompCmds.c (TclCompileDictAppendCmd): Fix silly + off-by-one error that caused a crash every time a compiled 'dict + append' with more than one value argument was used. Found by Colin + McCormack. + 2008-04-26 Zoran Vasiljevic - * generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt - to locate handler token fails. Happens when some other - thread attempts to delete somebody else's token. + * generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt to locate + handler token fails. Happens when some other thread attempts to delete + somebody else's token. - Also, panic early if we find out the wrong thread attempting - to delete the async handler (common trap). As, only the one - that created the handler is allowed to delete it. + Also, panic early if we find out the wrong thread attempting to delete + the async handler (common trap). As, only the one that created the + handler is allowed to delete it. 2008-04-24 Andreas Kupries * tests/ioCmd.test: Extended testsuite for reflected channel - implementation. Added test cases about how it handles if the rug - is pulled out from under a channel (= killing threads, - interpreters containing the tcl command for a channel, and channel - sitting in a different interpreter/thread.) + implementation. Added test cases about how it handles if the rug is + pulled out from under a channel (= killing threads, interpreters + containing the tcl command for a channel, and channel sitting in a + different interpreter/thread.) - * generic/tclIORChan.c: Fixed the bugs exposed by the new - testcases, redone most of the cleanup and exit handling. + * generic/tclIORChan.c: Fixed the bugs exposed by the new testcases, + redone most of the cleanup and exit handling. 2008-04-15 Andreas Kupries diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 9fa3bf6..6a71666 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.143 2008/03/16 17:00:43 dkf Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.143.2.1 2008/05/07 10:39:38 dkf Exp $ */ #include "tclInt.h" @@ -1215,7 +1215,7 @@ TclCompileDictAppendCmd( tokenPtr = TokenAfter(tokenPtr); } if (parsePtr->numWords > 4) { - TclEmitInstInt1(INST_CONCAT1, parsePtr->numWords-2, envPtr); + TclEmitInstInt1(INST_CONCAT1, parsePtr->numWords-3, envPtr); } /* diff --git a/tests/dict.test b/tests/dict.test index ce51633..cc861b4 100644 --- a/tests/dict.test +++ b/tests/dict.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: dict.test,v 1.24 2008/03/16 17:00:44 dkf Exp $ +# RCS: @(#) $Id: dict.test,v 1.24.2.1 2008/05/07 10:39:40 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -414,6 +414,9 @@ test dict-13.9 {dict append command: write failure} { catch {unset dictVar} set result } {1 {can't set "dictVar": variable is array}} +test dict-13.10 {compiled dict command: crash case} { + apply {{} {dict append dictVar a o k}} +} {a ok} test dict-14.1 {dict for command: syntax} { list [catch {dict for} msg] $msg -- cgit v0.12 From e47e090ebc6534d30664a39311da929831681b02 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Fri, 16 May 2008 14:27:28 +0000 Subject: * generic/tclCompile.c: fix crash with tcl_traceExec. Found and fixed by Alexander Pasadyn [Bug 1964803]. --- ChangeLog | 5 +++++ generic/tclCompile.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 46a535d..a30bea6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-05-16 Miguel Sofer + + * generic/tclCompile.c: fix crash with tcl_traceExec. Found and + fixed by Alexander Pasadyn [Bug 1964803]. + 2008-05-07 Donal K. Fellows * generic/tclCompCmds.c (TclCompileDictAppendCmd): Fix silly diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 4b68c40..bdb81bb 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146 2008/01/23 21:21:30 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.1 2008/05/16 14:27:30 msofer Exp $ */ #include "tclInt.h" @@ -3342,7 +3342,7 @@ TclPrintSource( TclNewObj(bufferObj); PrintSourceToObj(bufferObj, stringPtr, maxChars); - fprintf(outFile, TclGetString(bufferObj)); + fprintf(outFile, "%s", TclGetString(bufferObj)); Tcl_DecrRefCount(bufferObj); } #endif /* TCL_COMPILE_DEBUG */ -- cgit v0.12 From 422670d42865358d830bc1a65fc7aa48904a2d71 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 21 May 2008 13:26:14 +0000 Subject: Backport of fixes to Tcl_SetNamespaceUnknownHandler --- ChangeLog | 6 ++++++ generic/tclNamesp.c | 61 +++++++++++++++++++++++++++++++--------------------- tests/namespace.test | 11 +++++++++- 3 files changed, 53 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index a30bea6..7d880e3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-05-21 Donal K. Fellows + + * generic/tclNamesp.c (Tcl_SetNamespaceUnknownHandler): Corrected odd + logic for handling installation of namespace unknown handlers which + could lead too very strange things happening in the error case. + 2008-05-16 Miguel Sofer * generic/tclCompile.c: fix crash with tcl_traceExec. Found and diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index f7fa9c1..c51ea08 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -23,7 +23,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.162 2008/03/02 18:46:39 msofer Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.162.2.1 2008/05/21 13:26:16 dkf Exp $ */ #include "tclInt.h" @@ -4296,45 +4296,58 @@ Tcl_SetNamespaceUnknownHandler( Tcl_Namespace *nsPtr, /* Namespace which is being updated. */ Tcl_Obj *handlerPtr) /* The new handler, or NULL to reset. */ { - int lstlen; + int lstlen = 0; Namespace *currNsPtr = (Namespace *)nsPtr; - if (currNsPtr->unknownHandlerPtr != NULL) { - /* - * Remove old handler first. - */ + /* + * Ensure that we check for errors *first* before we change anything. + */ - Tcl_DecrRefCount(currNsPtr->unknownHandlerPtr); - currNsPtr->unknownHandlerPtr = NULL; + if (handlerPtr != NULL) { + if (TclListObjLength(interp, handlerPtr, &lstlen) != TCL_OK) { + /* + * Not a list. + */ + + return TCL_ERROR; + } + if (lstlen > 0) { + /* + * We are going to be saving this handler. Increment the reference + * count before decrementing the refcount on the previous handler, + * so that nothing strange can happen if we are told to set the + * handler to the previous value. + */ + + Tcl_IncrRefCount(handlerPtr); + } } /* - * If NULL or an empty list is passed, then reset to the default - * handler. + * Remove old handler next. */ - if (handlerPtr == NULL) { - currNsPtr->unknownHandlerPtr = NULL; - } else if (TclListObjLength(interp, handlerPtr, &lstlen) != TCL_OK) { - /* - * Not a list. - */ + if (currNsPtr->unknownHandlerPtr != NULL) { + Tcl_DecrRefCount(currNsPtr->unknownHandlerPtr); + } - return TCL_ERROR; - } else if (lstlen == 0) { + /* + * Install the new handler. + */ + + if (lstlen > 0) { /* - * Empty list - reset to default. + * Just store the handler. It already has the correct reference count. */ - currNsPtr->unknownHandlerPtr = NULL; + currNsPtr->unknownHandlerPtr = handlerPtr; } else { /* - * Increment ref count and store. The reference count is decremented - * either in the code above, or when the namespace is deleted. + * If NULL or an empty list is passed, this resets to the default + * handler. */ - Tcl_IncrRefCount(handlerPtr); - currNsPtr->unknownHandlerPtr = handlerPtr; + currNsPtr->unknownHandlerPtr = NULL; } return TCL_OK; } diff --git a/tests/namespace.test b/tests/namespace.test index e445189..efb72db 100644 --- a/tests/namespace.test +++ b/tests/namespace.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: namespace.test,v 1.70 2007/12/13 15:26:06 dgp Exp $ +# RCS: @(#) $Id: namespace.test,v 1.70.2.1 2008/05/21 13:26:17 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -2619,6 +2619,15 @@ test namespace-52.11 {unknown: with TCL_EVAL_INVOKE} -setup { rename unknown.save ::unknown namespace eval :: [list namespace unknown $handler] } -result SUCCESS +test namespace-52.12 {unknown: error case must not reset handler} -body { + namespace eval foo { + namespace unknown ok + catch {namespace unknown {{}{}{}}} + namespace unknown + } +} -cleanup { + namespace delete foo +} -result ok # cleanup catch {rename cmd1 {}} -- cgit v0.12 From 89a9e0dd71bca0ecc5f87508db1b101eda76688d Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 21 May 2008 20:38:06 +0000 Subject: * generic/tclParse.c (ParseComment): The new TclParseAllWhiteSpace() * tests/parse.test (parse-15.60): routine has no mechanism to return the "incomplete" status of "\\\n" so calling this routine anywhere that can be reached within a Tcl_ParseCommand() call is a mistake. In particular, ParseComment() must not use it. [Bug 1968882]. --- ChangeLog | 8 ++++++++ generic/tclParse.c | 13 ++++++++----- tests/parse.test | 6 +++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d880e3..de38c06 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-05-21 Don Porter + + * generic/tclParse.c (ParseComment): The new TclParseAllWhiteSpace() + * tests/parse.test (parse-15.60): routine has no mechanism to + return the "incomplete" status of "\\\n" so calling this routine + anywhere that can be reached within a Tcl_ParseCommand() call is a + mistake. In particular, ParseComment() must not use it. [Bug 1968882]. + 2008-05-21 Donal K. Fellows * generic/tclNamesp.c (Tcl_SetNamespaceUnknownHandler): Corrected odd diff --git a/generic/tclParse.c b/generic/tclParse.c index b639f09..3197ac8 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParse.c,v 1.62 2008/01/23 21:58:36 dgp Exp $ + * RCS: @(#) $Id: tclParse.c,v 1.62.2.1 2008/05/21 20:38:09 dgp Exp $ */ #include "tclInt.h" @@ -954,9 +954,12 @@ ParseComment( char type; int scanned; - scanned = TclParseAllWhiteSpace(p, numBytes); - p += scanned; - numBytes -= scanned; + do { + scanned = ParseWhiteSpace(p, numBytes, + &parsePtr->incomplete, &type); + p += scanned; + numBytes -= scanned; + } while (numBytes && (*p == '\n') && (p++,numBytes--)); if ((numBytes == 0) || (*p != '#')) { break; @@ -1871,7 +1874,7 @@ Tcl_SubstObj( int length, tokensLeft, code; Tcl_Token *endTokenPtr; Tcl_Obj *result, *errMsg = NULL; - CONST char *p = TclGetStringFromObj(objPtr, &length); + const char *p = TclGetStringFromObj(objPtr, &length); Tcl_Parse *parsePtr = (Tcl_Parse *) TclStackAlloc(interp, sizeof(Tcl_Parse)); diff --git a/tests/parse.test b/tests/parse.test index 5becb4c..0fed2f5 100644 --- a/tests/parse.test +++ b/tests/parse.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parse.test,v 1.30 2007/12/13 15:26:07 dgp Exp $ +# RCS: @(#) $Id: parse.test,v 1.30.2.1 2008/05/21 20:38:09 dgp Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -884,6 +884,10 @@ test parse-15.59 {CommandComplete procedure} { # Test for Tcl Bug 684744 info complete [encoding convertfrom identity "\x00;if 1 \{"] } 0 +test parse-15.60 {CommandComplete procedure} { + # Test for Tcl Bug 1968882 + info complete \\\n +} 0 test parse-16.1 {Tcl_EvalEx, check termOffset is set correctly for non TCL_OK cases, bug 2535} { subst {[eval {return foo}]bar} -- cgit v0.12 From bfa75a0049382386cd2754f86e14d3c9f4177db4 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 22 May 2008 15:25:54 +0000 Subject: * generic/tclNamesp.c (Tcl_LogCommandInfo): Restored ability to handle the argument value length = -1. Thanks to Chris Darroch for discovering the bug and providing the fix. [Bug 1968245]. --- ChangeLog | 6 ++++++ generic/tclNamesp.c | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index de38c06..8398dd6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-05-22 Don Porter + + * generic/tclNamesp.c (Tcl_LogCommandInfo): Restored ability to + handle the argument value length = -1. Thanks to Chris Darroch for + discovering the bug and providing the fix. [Bug 1968245]. + 2008-05-21 Don Porter * generic/tclParse.c (ParseComment): The new TclParseAllWhiteSpace() diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index c51ea08..717eaf9 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -23,7 +23,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.162.2.1 2008/05/21 13:26:16 dkf Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.162.2.2 2008/05/22 15:25:54 dgp Exp $ */ #include "tclInt.h" @@ -6952,6 +6952,9 @@ Tcl_LogCommandInfo( } } + if (length < 0) { + length = strlen(command); + } overflow = (length > limit); Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf( "\n %s\n\"%.*s%s\"", ((iPtr->errorInfo == NULL) -- cgit v0.12 From 882f2ac2e6ddf2541a019c7f411e1959ef9cb221 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 23 May 2008 21:10:42 +0000 Subject: * win/tclWinChan.c (FileWideSeekProc): Accepted a patch by Alexandre Ferrieux to fix the [Bug 1965787]. 'tell' now works for locations > 2 GB as well instead of going negative. * generic/tclIO.c (Tcl_SetChannelBufferSize): Accepted a patch by * tests/io.test: Alexandre Ferrieux * tests/chanio.test: to fix the [Bug 1969953]. Buffersize outside of the supported range are now clipped to nearest boundary instead of ignored. --- ChangeLog | 13 +++++++++++++ generic/tclIO.c | 13 ++++++++----- tests/chanio.test | 12 ++++++------ tests/io.test | 12 ++++++------ win/tclWinChan.c | 4 ++-- 5 files changed, 35 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8398dd6..dbac478 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-05-23 Andreas Kupries + + * win/tclWinChan.c (FileWideSeekProc): Accepted a patch by + Alexandre Ferrieux to fix the + [Bug 1965787]. 'tell' now works for locations > 2 GB as well + instead of going negative. + + * generic/tclIO.c (Tcl_SetChannelBufferSize): Accepted a patch by + * tests/io.test: Alexandre Ferrieux + * tests/chanio.test: to fix the [Bug 1969953]. Buffersize outside + of the supported range are now clipped to nearest boundary instead + of ignored. + 2008-05-22 Don Porter * generic/tclNamesp.c (Tcl_LogCommandInfo): Restored ability to diff --git a/generic/tclIO.c b/generic/tclIO.c index 6de2cbe..b30385f 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.5 2008/04/15 18:32:01 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.6 2008/05/23 21:10:43 andreas_kupries Exp $ */ #include "tclInt.h" @@ -224,6 +224,8 @@ static Tcl_ObjType tclChannelType = { #define BUSY_STATE(st,fl) \ ((((st)->csPtrR) && ((fl) & TCL_READABLE)) || \ (((st)->csPtrW) && ((fl) & TCL_WRITABLE))) + +#define MAX_CHANNEL_BUFFER_SIZE (1024*1024) /* *--------------------------------------------------------------------------- @@ -6937,12 +6939,13 @@ Tcl_SetChannelBufferSize( ChannelState *statePtr; /* State of real channel structure. */ /* - * If the buffer size is smaller than 1 byte or larger than one MByte, do - * not accept the requested size and leave the current buffer size. + * Clip the buffer size to force it into the [1,1M] range */ - if (sz < 1 || sz > 1024*1024) { - return; + if (sz < 1) { + sz = 1; + } else if (sz > MAX_CHANNEL_BUFFER_SIZE) { + sz = MAX_CHANNEL_BUFFER_SIZE; } statePtr = ((Channel *) chan)->state; diff --git a/tests/chanio.test b/tests/chanio.test index 8a7bda8..4226c45 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.9 2008/04/15 18:32:03 andreas_kupries Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.10 2008/05/23 21:10:44 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -4858,7 +4858,7 @@ test chan-io-38.2 {Tcl_SetChannelBufferSize, Tcl_GetChannelBufferSize} { lappend l [chan configure $f -buffersize] chan close $f set l -} {4096 10000 1 1 1 100000 100000} +} {4096 10000 1 1 1 100000 1048576} test chan-io-38.3 {Tcl_SetChannelBufferSize, changing buffersize between reads} { # This test crashes the interp if Bug #427196 is not fixed @@ -5019,22 +5019,22 @@ test chan-io-39.10 {Tcl_SetChannelOption, blocking mode} {stdio openpipe} { chan close $f1 set x } {0 {} 1 {} 1 {} 1 1 hi 0 0 {} 1} -test chan-io-39.11 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { +test chan-io-39.11 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size clipped to lower bound} { file delete $path(test1) set f [open $path(test1) w] chan configure $f -buffersize -10 set x [chan configure $f -buffersize] chan close $f set x -} 4096 -test chan-io-39.12 {Tcl_SetChannelOption, Tcl_GetChannelOption buffer size} { +} 1 +test chan-io-39.12 {Tcl_SetChannelOption, Tcl_GetChannelOption buffer size clipped to upper bound} { file delete $path(test1) set f [open $path(test1) w] chan configure $f -buffersize 10000000 set x [chan configure $f -buffersize] chan close $f set x -} 4096 +} 1048576 test chan-io-39.13 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { file delete $path(test1) set f [open $path(test1) w] diff --git a/tests/io.test b/tests/io.test index f03bc64..9081f94 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.9 2008/04/15 18:32:04 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.10 2008/05/23 21:10:45 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -4858,7 +4858,7 @@ test io-38.2 {Tcl_SetChannelBufferSize, Tcl_GetChannelBufferSize} { lappend l [fconfigure $f -buffersize] close $f set l -} {4096 10000 1 1 1 100000 100000} +} {4096 10000 1 1 1 100000 1048576} test io-38.3 {Tcl_SetChannelBufferSize, changing buffersize between reads} { # This test crashes the interp if Bug #427196 is not fixed @@ -5019,22 +5019,22 @@ test io-39.10 {Tcl_SetChannelOption, blocking mode} {stdio openpipe} { close $f1 set x } {0 {} 1 {} 1 {} 1 1 hi 0 0 {} 1} -test io-39.11 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { +test io-39.11 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size clipped to lower bound} { file delete $path(test1) set f [open $path(test1) w] fconfigure $f -buffersize -10 set x [fconfigure $f -buffersize] close $f set x -} 4096 -test io-39.12 {Tcl_SetChannelOption, Tcl_GetChannelOption buffer size} { +} 1 +test io-39.12 {Tcl_SetChannelOption, Tcl_GetChannelOption buffer size clipped to upper bound} { file delete $path(test1) set f [open $path(test1) w] fconfigure $f -buffersize 10000000 set x [fconfigure $f -buffersize] close $f set x -} 4096 +} 1048576 test io-39.13 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { file delete $path(test1) set f [open $path(test1) w] diff --git a/win/tclWinChan.c b/win/tclWinChan.c index 6c74b6c..b4dbbd9 100644 --- a/win/tclWinChan.c +++ b/win/tclWinChan.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinChan.c,v 1.49 2007/04/16 13:36:36 dkf Exp $ + * RCS: @(#) $Id: tclWinChan.c,v 1.49.4.1 2008/05/23 21:10:45 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -575,7 +575,7 @@ FileWideSeekProc( return -1; } } - return (Tcl_LongAsWide(newPos) | (Tcl_LongAsWide(newPosHigh) << 32)); + return (((Tcl_WideInt)((unsigned)newPos)) | (Tcl_LongAsWide(newPosHigh) << 32)); } /* -- cgit v0.12 From 199e87f5e360b10f877d2830dc15ea969dad655b Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 23 May 2008 21:12:10 +0000 Subject: * win/tclWinChan.c (FileWideSeekProc): Accepted a patch by Alexandre Ferrieux to fix the [Bug 1965787]. 'tell' now works for locations > 2 GB as well instead of going negative. * generic/tclIO.c (Tcl_SetChannelBufferSize): Accepted a patch by * tests/io.test: Alexandre Ferrieux to fix the [Bug 1969953]. Buffersize outside of the supported range are now clipped to nearest boundary instead of ignored. --- ChangeLog | 12 ++++++++++++ generic/tclIO.c | 16 ++++++++-------- tests/io.test | 12 ++++++------ win/tclWinChan.c | 4 ++-- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index b1b5f59..ca16ddd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-05-23 Andreas Kupries + + * win/tclWinChan.c (FileWideSeekProc): Accepted a patch by + Alexandre Ferrieux to fix the + [Bug 1965787]. 'tell' now works for locations > 2 GB as well + instead of going negative. + + * generic/tclIO.c (Tcl_SetChannelBufferSize): Accepted a patch by + * tests/io.test: Alexandre Ferrieux + to fix the [Bug 1969953]. Buffersize outside of the supported + range are now clipped to nearest boundary instead of ignored. + 2008-04-26 Zoran Vasiljevic * generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt diff --git a/generic/tclIO.c b/generic/tclIO.c index 6502215..866d70a 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.28 2008/04/15 18:31:01 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.29 2008/05/23 21:12:11 andreas_kupries Exp $ */ #include "tclInt.h" @@ -159,6 +159,8 @@ static int WriteChars _ANSI_ARGS_((Channel *chanPtr, #define BUSY_STATE(st,fl) \ ((((st)->csPtrR) && ((fl) & TCL_READABLE)) || \ (((st)->csPtrW) && ((fl) & TCL_WRITABLE))) + +#define MAX_CHANNEL_BUFFER_SIZE (1024*1024) /* *--------------------------------------------------------------------------- @@ -6157,15 +6159,13 @@ Tcl_SetChannelBufferSize(chan, sz) ChannelState *statePtr; /* State of real channel structure. */ /* - * If the buffer size is smaller than 1 byte or larger than one MByte, - * do not accept the requested size and leave the current buffer size. + * Clip the buffer size to force it into the [1,1M] range */ - + if (sz < 1) { - return; - } - if (sz > (1024 * 1024)) { - return; + sz = 1; + } else if (sz > MAX_CHANNEL_BUFFER_SIZE) { + sz = MAX_CHANNEL_BUFFER_SIZE; } statePtr = ((Channel *) chan)->state; diff --git a/tests/io.test b/tests/io.test index 00c0a55..9af72bd 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.20 2008/04/15 18:31:03 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.21 2008/05/23 21:12:11 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -4877,7 +4877,7 @@ test io-38.2 {Tcl_SetChannelBufferSize, Tcl_GetChannelBufferSize} { lappend l [fconfigure $f -buffersize] close $f set l -} {4096 10000 1 1 1 100000 100000} +} {4096 10000 1 1 1 100000 1048576} test io-38.3 {Tcl_SetChannelBufferSize, changing buffersize between reads} { # This test crashes the interp if Bug #427196 is not fixed @@ -5039,22 +5039,22 @@ test io-39.10 {Tcl_SetChannelOption, blocking mode} {stdio openpipe} { close $f1 set x } {0 {} 1 {} 1 {} 1 1 hi 0 0 {} 1} -test io-39.11 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { +test io-39.11 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size clipped to lower bound} { file delete $path(test1) set f [open $path(test1) w] fconfigure $f -buffersize -10 set x [fconfigure $f -buffersize] close $f set x -} 4096 -test io-39.12 {Tcl_SetChannelOption, Tcl_GetChannelOption buffer size} { +} 1 +test io-39.12 {Tcl_SetChannelOption, Tcl_GetChannelOption buffer size clipped to upper bound} { file delete $path(test1) set f [open $path(test1) w] fconfigure $f -buffersize 10000000 set x [fconfigure $f -buffersize] close $f set x -} 4096 +} 1048576 test io-39.13 {Tcl_SetChannelOption, Tcl_GetChannelOption, buffer size} { file delete $path(test1) set f [open $path(test1) w] diff --git a/win/tclWinChan.c b/win/tclWinChan.c index 90c13f7..51a1c08 100644 --- a/win/tclWinChan.c +++ b/win/tclWinChan.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.5 2006/08/30 17:53:28 hobbs Exp $ + * RCS: @(#) $Id: tclWinChan.c,v 1.30.2.6 2008/05/23 21:12:12 andreas_kupries Exp $ */ #include "tclWinInt.h" @@ -576,7 +576,7 @@ FileWideSeekProc(instanceData, offset, mode, errorCodePtr) return -1; } } - return ((Tcl_WideInt) newPos) | (((Tcl_WideInt) newPosHigh) << 32); + return (((Tcl_WideInt)((unsigned)newPos)) | (Tcl_LongAsWide(newPosHigh) << 32)); } /* -- cgit v0.12 From 269e8a56f4faa3cd6efed39d7842bdfbc7445cac Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 26 May 2008 18:26:15 +0000 Subject: * tests/io.test (io-53.9): need to close chan before removing file. --- ChangeLog | 4 ++++ tests/io.test | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index ca16ddd..c432627 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-05-26 Jeff Hobbs + + * tests/io.test (io-53.9): need to close chan before removing file. + 2008-05-23 Andreas Kupries * win/tclWinChan.c (FileWideSeekProc): Accepted a patch by diff --git a/tests/io.test b/tests/io.test index 9af72bd..2627140 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.21 2008/05/23 21:12:11 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.22 2008/05/26 18:26:15 hobbs Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7083,6 +7083,7 @@ test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { close $pipe rename ::done {} after 1000 ;# Give Windows time to kill the process + catch {close $out} removeFile out removeFile err catch {unset ::forever} -- cgit v0.12 From 34b61d5e2164cb84bf3e49bfe0a67ca797b9109c Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 26 May 2008 18:27:53 +0000 Subject: (io-53.9): need to close chan before removing file --- ChangeLog | 4 ++++ tests/io.test | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index dbac478..672fa83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-05-26 Jeff Hobbs + + * tests/io.test (io-53.9): need to close chan before removing file. + 2008-05-23 Andreas Kupries * win/tclWinChan.c (FileWideSeekProc): Accepted a patch by diff --git a/tests/io.test b/tests/io.test index 9081f94..367f0e1 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.10 2008/05/23 21:10:45 andreas_kupries Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.11 2008/05/26 18:27:53 hobbs Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7051,6 +7051,7 @@ test io-53.9 {CopyData: -size and event interaction, Bug 780533} -setup { close $pipe rename ::done {} after 1000; # Give Windows time to kill the process + catch {close $out} catch {removeFile out} catch {removeFile err} catch {unset ::forever} -- cgit v0.12 From ba554f4052816e0f79b83a0fb6184084cf291994 Mon Sep 17 00:00:00 2001 From: hobbs Date: Mon, 26 May 2008 21:46:44 +0000 Subject: reduce reg-33.14 space used to prevent stack segfault --- tests/reg.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/reg.test b/tests/reg.test index 2abe7b6..d7b8c5f 100644 --- a/tests/reg.test +++ b/tests/reg.test @@ -9,7 +9,7 @@ # # Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. # -# RCS: @(#) $Id: reg.test,v 1.16.2.4 2007/12/18 11:23:16 dkf Exp $ +# RCS: @(#) $Id: reg.test,v 1.16.2.5 2008/05/26 21:46:44 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1138,7 +1138,7 @@ test reg-33.13 {Bug 1810264 - infinite loop} { } 1 test reg-33.14 {Bug 1810264 - super-expensive expression} { set start [clock seconds] - regexp {(x{200}){200}$y} {x} + regexp {(x{100}){100}$y} {x} set time [expr {[clock seconds] - $start}] expr {$time < 5 ? "ok" : "Complex RE took $time seconds - bad!"} } ok -- cgit v0.12 From cfa03c26be5ee855a741f05513e562d7b248040f Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:33:01 +0000 Subject: * macosx/Tcl.xcodeproj/project.pbxproj: add debug configs with gcov, and with corefoundation disabled; updates and cleanup for Xcode 3.1 and for Leopard. * macosx/Tcl.xcode/project.pbxproj: sync Tcl.xcodeproj changes. * macosx/README: document new build configs. --- macosx/README | 26 +++-- macosx/Tcl.xcode/project.pbxproj | 124 +++++++++++++++++++- macosx/Tcl.xcodeproj/project.pbxproj | 213 +++++++++++++++++++++++++---------- 3 files changed, 292 insertions(+), 71 deletions(-) diff --git a/macosx/README b/macosx/README index 0f164ff..683c03b 100644 --- a/macosx/README +++ b/macosx/README @@ -1,7 +1,7 @@ Tcl Mac OS X README ------------------- -RCS: @(#) $Id: README,v 1.16 2007/12/13 15:26:03 dgp Exp $ +RCS: @(#) $Id: README,v 1.16.2.1 2008/06/12 06:33:01 das Exp $ This is the README file for the Mac OS X/Darwin version of Tcl. @@ -91,14 +91,17 @@ take care to only use the project matching your DevTools and OS version: * Tcl.pbproj for Xcode or ProjectBuilder on 10.3 and earlier, this has a 'Tcl' target that simply calls through to the tcl/macosx/GNUMakefile. * Tcl.xcode for Xcode 2.4 on 10.4 and Xcode 2.5 on 10.4 and later, which - additionally has a native 'tcltest' target useful for debugging, this - target's 'Debug' build configuration has ZeroLink and Fix&Continue - enabled, use the 'DebugNoFixZL' build configuration if you need a debug - build without these features. The following additional build - configurations are available for the 'Tcl' and 'tcltest' targets: + additionally has native 'tcltest' and 'tests' targets for debugging and + running the testsuite, these targets' 'Debug' build configuration has + ZeroLink and Fix&Continue enabled, use the 'DebugNoFixZL' build + configuration if you need a debug build without these features. The + following build configurations are available: 'DebugUnthreaded': debug build with threading turned off. + 'DebugNoCF': debug build with corefoundation turned off. + 'DebugNoCFUnthreaded': debug build with corefoundation & threading off. 'DebugMemCompile': debug build with memory and bytecode debugging on. 'DebugLeaks': debug build with PURIFY defined. + 'DebugGCov': debug build with generation of gcov data files enabled. 'Debug64bit': builds the targets as 64bit with debugging enabled, requires a 64bit capable processor (i.e. G5 or Core2/Xeon). 'ReleaseUniversal': builds the targets as universal binaries for the @@ -111,10 +114,17 @@ take care to only use the project matching your DevTools and OS version: 'ReleasePPC10.2.8SDK': builds for PowerPC with gcc-3.3 against the 10.2.8 SDK, useful to verify on Tiger that building on Jaguar would succeed. - * Tcl.xcodeproj for Xcode 3.0 on 10.5 and later, which has the following - additional build configuration: + * Tcl.xcodeproj for Xcode 3.1 on 10.5 and later, which has the following + additional build configurations: 'ReleaseUniversal10.5SDK': same as 'ReleaseUniversal' but builds against the 10.5 SDK on Leopard (with 10.5 deployment target). + 'Debug gcc42': same as 'Debug' but builds with gcc 4.2. + 'Debug llvmgcc42': same as 'Debug' but builds with llvm-gcc 4.2. + 'ReleaseUniversal gcc42': same as 'ReleaseUniversal' but builds with + gcc 4.2. + 'ReleaseUniversal llvmgcc42': same as 'ReleaseUniversal' but builds + with llvm-gcc 4.2. + Note that all non-SDK configurations have 10.5 deployment target. Notes about the native targets of the Xcode projects: * the Xcode projects refer to the toplevel tcl source directory through the diff --git a/macosx/Tcl.xcode/project.pbxproj b/macosx/Tcl.xcode/project.pbxproj index 9c51d82..6355cf3 100644 --- a/macosx/Tcl.xcode/project.pbxproj +++ b/macosx/Tcl.xcode/project.pbxproj @@ -931,7 +931,7 @@ F966C06F08F281DC005CB29B /* Frameworks */, 1AB674ADFE9D54B511CA2CBB /* Products */, ); - comments = "Copyright (c) 2004-2007 Daniel A. Steffen \n\nSee the file \"license.terms\" for information on usage and redistribution of\nthis file, and for a DISCLAIMER OF ALL WARRANTIES.\n\nRCS: @(#) $Id: project.pbxproj,v 1.10.2.1 2008/04/15 10:55:34 das Exp $\n"; + comments = "Copyright (c) 2004-2008 Daniel A. Steffen \n\nSee the file \"license.terms\" for information on usage and redistribution of\nthis file, and for a DISCLAIMER OF ALL WARRANTIES.\n\nRCS: @(#) $Id: project.pbxproj,v 1.10.2.2 2008/06/12 06:33:01 das Exp $\n"; name = Tcl; path = .; sourceTree = SOURCE_ROOT; @@ -2224,6 +2224,46 @@ }; name = DebugMemCompile; }; + F9359B250DF212DA00E04F67 /* DebugGCov */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tcl-Debug.xcconfig */; + buildSettings = { + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.2; + OTHER_LDFLAGS = ( + "$(OTHER_LDFLAGS)", + "-lgcov", + ); + PREBINDING = NO; + }; + name = DebugGCov; + }; + F9359B260DF212DA00E04F67 /* DebugGCov */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; + }; + name = DebugGCov; + }; + F9359B270DF212DA00E04F67 /* DebugGCov */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tcltest; + }; + name = DebugGCov; + }; + F9359B280DF212DA00E04F67 /* DebugGCov */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tests; + TCLTEST_OPTIONS = "-notfile http.test"; + TCL_LIBRARY = "$(TCL_SRCROOT)/library"; + TEST_RIG = "$(OBJROOT)/$(CONFIGURATION)/tcltest"; + }; + name = DebugGCov; + }; F95CC8AC09158F3100EA5ACE /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2412,6 +2452,76 @@ }; name = Debug64bit; }; + F987512F0DE7B57E00B1C9EC /* DebugNoCF */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tcl-Debug.xcconfig */; + buildSettings = { + CONFIGURE_ARGS = "$(CONFIGURE_ARGS) --disable-corefoundation"; + MACOSX_DEPLOYMENT_TARGET = 10.2; + PREBINDING = NO; + }; + name = DebugNoCF; + }; + F98751300DE7B57E00B1C9EC /* DebugNoCF */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; + }; + name = DebugNoCF; + }; + F98751310DE7B57E00B1C9EC /* DebugNoCF */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tcltest; + }; + name = DebugNoCF; + }; + F98751320DE7B57E00B1C9EC /* DebugNoCF */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tests; + TCLTEST_OPTIONS = ""; + TCL_LIBRARY = "$(TCL_SRCROOT)/library"; + TEST_RIG = "$(OBJROOT)/$(CONFIGURATION)/tcltest"; + }; + name = DebugNoCF; + }; + F98751330DE7B5A200B1C9EC /* DebugNoCFUnthreaded */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tcl-Debug.xcconfig */; + buildSettings = { + CONFIGURE_ARGS = "$(CONFIGURE_ARGS) --disable-threads --disable-corefoundation"; + MACOSX_DEPLOYMENT_TARGET = 10.2; + PREBINDING = NO; + }; + name = DebugNoCFUnthreaded; + }; + F98751340DE7B5A200B1C9EC /* DebugNoCFUnthreaded */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; + }; + name = DebugNoCFUnthreaded; + }; + F98751350DE7B5A200B1C9EC /* DebugNoCFUnthreaded */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tcltest; + }; + name = DebugNoCFUnthreaded; + }; + F98751360DE7B5A200B1C9EC /* DebugNoCFUnthreaded */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tests; + TCLTEST_OPTIONS = ""; + TCL_LIBRARY = "$(TCL_SRCROOT)/library"; + TEST_RIG = "$(OBJROOT)/$(CONFIGURATION)/tcltest"; + }; + name = DebugNoCFUnthreaded; + }; F99EE73B0BE835310060D4AF /* DebugUnthreaded */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2596,8 +2706,11 @@ F95CC8AC09158F3100EA5ACE /* Debug */, F95CC8AE09158F3100EA5ACE /* DebugNoFixZL */, F99EE73B0BE835310060D4AF /* DebugUnthreaded */, + F98751300DE7B57E00B1C9EC /* DebugNoCF */, + F98751340DE7B5A200B1C9EC /* DebugNoCFUnthreaded */, F93084370BB93D2800CD0B9E /* DebugMemCompile */, F99EE73C0BE835310060D4AF /* DebugLeaks */, + F9359B260DF212DA00E04F67 /* DebugGCov */, F97AED1B0B660B2100310EA2 /* Debug64bit */, F95CC8AD09158F3100EA5ACE /* Release */, F91BCC4F093152310042A6BF /* ReleaseUniversal */, @@ -2614,8 +2727,11 @@ F95CC8B109158F3100EA5ACE /* Debug */, F95CC8B309158F3100EA5ACE /* DebugNoFixZL */, F99EE73D0BE835310060D4AF /* DebugUnthreaded */, + F98751310DE7B57E00B1C9EC /* DebugNoCF */, + F98751350DE7B5A200B1C9EC /* DebugNoCFUnthreaded */, F93084380BB93D2800CD0B9E /* DebugMemCompile */, F99EE73E0BE835310060D4AF /* DebugLeaks */, + F9359B270DF212DA00E04F67 /* DebugGCov */, F97AED1C0B660B2100310EA2 /* Debug64bit */, F95CC8B209158F3100EA5ACE /* Release */, F91BCC50093152310042A6BF /* ReleaseUniversal */, @@ -2632,8 +2748,11 @@ F95CC8B609158F3100EA5ACE /* Debug */, F95CC8B809158F3100EA5ACE /* DebugNoFixZL */, F99EE7410BE835310060D4AF /* DebugUnthreaded */, + F987512F0DE7B57E00B1C9EC /* DebugNoCF */, + F98751330DE7B5A200B1C9EC /* DebugNoCFUnthreaded */, F930843A0BB93D2800CD0B9E /* DebugMemCompile */, F99EE7420BE835310060D4AF /* DebugLeaks */, + F9359B250DF212DA00E04F67 /* DebugGCov */, F97AED1E0B660B2100310EA2 /* Debug64bit */, F95CC8B709158F3100EA5ACE /* Release */, F91BCC51093152310042A6BF /* ReleaseUniversal */, @@ -2650,8 +2769,11 @@ F97258A90A86873D00096C78 /* Debug */, F97258AB0A86873D00096C78 /* DebugNoFixZL */, F99EE73F0BE835310060D4AF /* DebugUnthreaded */, + F98751320DE7B57E00B1C9EC /* DebugNoCF */, + F98751360DE7B5A200B1C9EC /* DebugNoCFUnthreaded */, F93084390BB93D2800CD0B9E /* DebugMemCompile */, F99EE7400BE835310060D4AF /* DebugLeaks */, + F9359B280DF212DA00E04F67 /* DebugGCov */, F97AED1D0B660B2100310EA2 /* Debug64bit */, F97258AA0A86873D00096C78 /* Release */, F97258AC0A86873D00096C78 /* ReleaseUniversal */, diff --git a/macosx/Tcl.xcodeproj/project.pbxproj b/macosx/Tcl.xcodeproj/project.pbxproj index 36d7bf1..f9ce5a5 100644 --- a/macosx/Tcl.xcodeproj/project.pbxproj +++ b/macosx/Tcl.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 42; + objectVersion = 45; objects = { /* Begin PBXBuildFile section */ @@ -933,7 +933,7 @@ F966C06F08F281DC005CB29B /* Frameworks */, 1AB674ADFE9D54B511CA2CBB /* Products */, ); - comments = "Copyright (c) 2004-2008 Daniel A. Steffen \n\nSee the file \"license.terms\" for information on usage and redistribution of\nthis file, and for a DISCLAIMER OF ALL WARRANTIES.\n\nRCS: @(#) $Id: project.pbxproj,v 1.32 2008/03/28 14:35:44 das Exp $\n"; + comments = "Copyright (c) 2004-2008 Daniel A. Steffen \n\nSee the file \"license.terms\" for information on usage and redistribution of\nthis file, and for a DISCLAIMER OF ALL WARRANTIES.\n\nRCS: @(#) $Id: project.pbxproj,v 1.32.2.1 2008/06/12 06:33:02 das Exp $\n"; name = Tcl; path = .; sourceTree = SOURCE_ROOT; @@ -1899,10 +1899,10 @@ 08FB7793FE84155DC02AAC07 /* Project object */ = { isa = PBXProject; attributes = { - BuildIndependentTargetsInParallel = NO; + BuildIndependentTargetsInParallel = YES; }; buildConfigurationList = F95CC8B509158F3100EA5ACE /* Build configuration list for PBXProject "Tcl" */; - compatibilityVersion = "Xcode 2.4"; + compatibilityVersion = "Xcode 3.1"; hasScannedForEncodings = 1; mainGroup = 08FB7794FE84155DC02AAC07 /* Tcl */; projectDirPath = ""; @@ -2185,18 +2185,9 @@ isa = XCBuildConfiguration; baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tcl-Release.xcconfig */; buildSettings = { - ARCHS = ( - ppc, - ppc64, - i386, - x86_64, - ); - CFLAGS = "-arch ppc -arch ppc64 -arch i386 -arch x86_64 $(CFLAGS)"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CFLAGS = "-arch i386 -arch x86_64 -arch ppc -arch ppc64 $(CFLAGS)"; MACOSX_DEPLOYMENT_TARGET = 10.5; - OTHER_LDFLAGS = ( - "-Wl,-no_arch_warnings", - "$(OTHER_LDFLAGS)", - ); PREBINDING = NO; }; name = ReleaseUniversal; @@ -2237,6 +2228,47 @@ }; name = DebugMemCompile; }; + F9359B250DF212DA00E04F67 /* DebugGCov */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tcl-Debug.xcconfig */; + buildSettings = { + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.5; + OTHER_LDFLAGS = ( + "$(OTHER_LDFLAGS)", + "-lgcov", + ); + PREBINDING = NO; + }; + name = DebugGCov; + }; + F9359B260DF212DA00E04F67 /* DebugGCov */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; + }; + name = DebugGCov; + }; + F9359B270DF212DA00E04F67 /* DebugGCov */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tcltest; + }; + name = DebugGCov; + }; + F9359B280DF212DA00E04F67 /* DebugGCov */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + PRODUCT_NAME = tests; + TCLTEST_OPTIONS = "-notfile http.test"; + TCL_LIBRARY = "$(TCL_SRCROOT)/library"; + TEST_RIG = "$(OBJROOT)/$(CONFIGURATION)/tcltest"; + }; + name = DebugGCov; + }; F95CC8AC09158F3100EA5ACE /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2273,7 +2305,6 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; PRODUCT_NAME = tcltest; - ZERO_LINK = YES; }; name = Debug; }; @@ -2305,7 +2336,7 @@ baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tcl-Release.xcconfig */; buildSettings = { MACOSX_DEPLOYMENT_TARGET = 10.5; - PREBINDING = YES; + PREBINDING = NO; }; name = Release; }; @@ -2433,6 +2464,78 @@ }; name = Debug64bit; }; + F987512F0DE7B57E00B1C9EC /* DebugNoCF */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tcl-Debug.xcconfig */; + buildSettings = { + CONFIGURE_ARGS = "$(CONFIGURE_ARGS) --disable-corefoundation"; + MACOSX_DEPLOYMENT_TARGET = 10.5; + PREBINDING = NO; + }; + name = DebugNoCF; + }; + F98751300DE7B57E00B1C9EC /* DebugNoCF */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; + }; + name = DebugNoCF; + }; + F98751310DE7B57E00B1C9EC /* DebugNoCF */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tcltest; + }; + name = DebugNoCF; + }; + F98751320DE7B57E00B1C9EC /* DebugNoCF */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + PRODUCT_NAME = tests; + TCLTEST_OPTIONS = ""; + TCL_LIBRARY = "$(TCL_SRCROOT)/library"; + TEST_RIG = "$(OBJROOT)/$(CONFIGURATION)/tcltest"; + }; + name = DebugNoCF; + }; + F98751330DE7B5A200B1C9EC /* DebugNoCFUnthreaded */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tcl-Debug.xcconfig */; + buildSettings = { + CONFIGURE_ARGS = "$(CONFIGURE_ARGS) --disable-threads --disable-corefoundation"; + MACOSX_DEPLOYMENT_TARGET = 10.5; + PREBINDING = NO; + }; + name = DebugNoCFUnthreaded; + }; + F98751340DE7B5A200B1C9EC /* DebugNoCFUnthreaded */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tclsh; + SKIP_INSTALL = NO; + }; + name = DebugNoCFUnthreaded; + }; + F98751350DE7B5A200B1C9EC /* DebugNoCFUnthreaded */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = tcltest; + }; + name = DebugNoCFUnthreaded; + }; + F98751360DE7B5A200B1C9EC /* DebugNoCFUnthreaded */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + PRODUCT_NAME = tests; + TCLTEST_OPTIONS = ""; + TCL_LIBRARY = "$(TCL_SRCROOT)/library"; + TEST_RIG = "$(OBJROOT)/$(CONFIGURATION)/tcltest"; + }; + name = DebugNoCFUnthreaded; + }; F9988AB10D814C6500B6B03B /* Debug gcc42 */ = { isa = XCBuildConfiguration; baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tcl-Debug.xcconfig */; @@ -2463,7 +2566,6 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; PRODUCT_NAME = tcltest; - ZERO_LINK = YES; }; name = "Debug gcc42"; }; @@ -2482,8 +2584,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tcl-Debug.xcconfig */; buildSettings = { - GCC = "$(DEVELOPER_DIR)/usr/bin/llvm-gcc"; - GCC_VERSION = 4.2; + CC = "$(DEVELOPER_DIR)/usr/bin/llvm-gcc-4.2"; + GCC_VERSION = com.apple.compilers.llvmgcc42; MACOSX_DEPLOYMENT_TARGET = 10.5; PREBINDING = NO; }; @@ -2509,7 +2611,6 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; PRODUCT_NAME = tcltest; - ZERO_LINK = YES; }; name = "Debug llvmgcc42"; }; @@ -2528,19 +2629,10 @@ isa = XCBuildConfiguration; baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tcl-Release.xcconfig */; buildSettings = { - ARCHS = ( - ppc, - ppc64, - i386, - x86_64, - ); - CFLAGS = "-arch ppc -arch ppc64 -arch i386 -arch x86_64 $(CFLAGS)"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CFLAGS = "-arch i386 -arch x86_64 -arch ppc -arch ppc64 $(CFLAGS)"; GCC_VERSION = 4.2; MACOSX_DEPLOYMENT_TARGET = 10.5; - OTHER_LDFLAGS = ( - "-Wl,-no_arch_warnings", - "$(OTHER_LDFLAGS)", - ); PREBINDING = NO; }; name = "ReleaseUniversal gcc42"; @@ -2575,21 +2667,16 @@ isa = XCBuildConfiguration; baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tcl-Release.xcconfig */; buildSettings = { - ARCHS = ( - ppc, - i386, - x86_64, - ); - CFLAGS = "-arch ppc -arch i386 -arch x86_64 $(CFLAGS)"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CC = "$(DEVELOPER_DIR)/usr/bin/llvm-gcc-4.2"; + CFLAGS = "-arch i386 -arch x86_64 -arch ppc -arch ppc64 $(CFLAGS)"; DEBUG_INFORMATION_FORMAT = dwarf; - GCC = "$(DEVELOPER_DIR)/usr/bin/llvm-gcc"; GCC_OPTIMIZATION_LEVEL = 4; - GCC_VERSION = 4.2; + GCC_VERSION = com.apple.compilers.llvmgcc42; MACOSX_DEPLOYMENT_TARGET = 10.5; - OTHER_CFLAGS = "-emit-llvm"; - OTHER_LDFLAGS = ( - "-Wl,-no_arch_warnings", - "$(OTHER_LDFLAGS)", + OTHER_CFLAGS = ( + "$(OTHER_CFLAGS)", + "-emit-llvm", ); PREBINDING = NO; TCL_CONFIGURE_ARGS = "$(TCL_CONFIGURE_ARGS) --disable-dtrace"; @@ -2716,13 +2803,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tcl-Release.xcconfig */; buildSettings = { - ARCHS = ( - ppc, - ppc64, - i386, - x86_64, - ); - CFLAGS = "-arch ppc -arch ppc64 -arch i386 -arch x86_64 $(CFLAGS)"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CFLAGS = "-arch i386 -arch x86_64 -arch ppc -arch ppc64 $(CFLAGS)"; CPPFLAGS = "-isysroot $(SDKROOT) $(CPPFLAGS)"; MACOSX_DEPLOYMENT_TARGET = 10.4; OTHER_LDFLAGS = ( @@ -2730,7 +2812,7 @@ "$(OTHER_LDFLAGS)", ); PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SDKROOT = macosx10.4; }; name = ReleaseUniversal10.4uSDK; }; @@ -2759,7 +2841,7 @@ CPPFLAGS = "-arch ppc -isysroot $(SDKROOT) $(CPPFLAGS)"; MACOSX_DEPLOYMENT_TARGET = 10.3; PREBINDING = YES; - SDKROOT = /Developer/SDKs/MacOSX10.3.9.sdk; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk"; }; name = ReleasePPC10.3.9SDK; }; @@ -2791,7 +2873,7 @@ LDFLAGS = "-L$(SDKROOT)/usr/lib/gcc/darwin/$(GCC_VERSION) -Wl,-syslibroot,$(SDKROOT)"; MACOSX_DEPLOYMENT_TARGET = 10.2; PREBINDING = YES; - SDKROOT = /Developer/SDKs/MacOSX10.2.8.sdk; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.2.8.sdk"; WARNING_CFLAGS = ( "$(WARNING_CFLAGS_GCC3)", "-Wno-long-double", @@ -2829,17 +2911,12 @@ isa = XCBuildConfiguration; baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tcl-Release.xcconfig */; buildSettings = { - ARCHS = ( - ppc, - ppc64, - i386, - x86_64, - ); - CFLAGS = "-arch ppc -arch ppc64 -arch i386 -arch x86_64 $(CFLAGS)"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CFLAGS = "-arch i386 -arch x86_64 -arch ppc -arch ppc64 $(CFLAGS)"; CPPFLAGS = "-isysroot $(SDKROOT) $(CPPFLAGS)"; MACOSX_DEPLOYMENT_TARGET = 10.5; PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + SDKROOT = macosx10.5; }; name = ReleaseUniversal10.5SDK; }; @@ -2854,8 +2931,11 @@ F9988AB60D814C7500B6B03B /* Debug llvmgcc42 */, F95CC8AE09158F3100EA5ACE /* DebugNoFixZL */, F99EE73B0BE835310060D4AF /* DebugUnthreaded */, + F98751300DE7B57E00B1C9EC /* DebugNoCF */, + F98751340DE7B5A200B1C9EC /* DebugNoCFUnthreaded */, F93084370BB93D2800CD0B9E /* DebugMemCompile */, F99EE73C0BE835310060D4AF /* DebugLeaks */, + F9359B260DF212DA00E04F67 /* DebugGCov */, F97AED1B0B660B2100310EA2 /* Debug64bit */, F95CC8AD09158F3100EA5ACE /* Release */, F91BCC4F093152310042A6BF /* ReleaseUniversal */, @@ -2877,8 +2957,11 @@ F9988AB70D814C7500B6B03B /* Debug llvmgcc42 */, F95CC8B309158F3100EA5ACE /* DebugNoFixZL */, F99EE73D0BE835310060D4AF /* DebugUnthreaded */, + F98751310DE7B57E00B1C9EC /* DebugNoCF */, + F98751350DE7B5A200B1C9EC /* DebugNoCFUnthreaded */, F93084380BB93D2800CD0B9E /* DebugMemCompile */, F99EE73E0BE835310060D4AF /* DebugLeaks */, + F9359B270DF212DA00E04F67 /* DebugGCov */, F97AED1C0B660B2100310EA2 /* Debug64bit */, F95CC8B209158F3100EA5ACE /* Release */, F91BCC50093152310042A6BF /* ReleaseUniversal */, @@ -2900,8 +2983,11 @@ F9988AB50D814C7500B6B03B /* Debug llvmgcc42 */, F95CC8B809158F3100EA5ACE /* DebugNoFixZL */, F99EE7410BE835310060D4AF /* DebugUnthreaded */, + F987512F0DE7B57E00B1C9EC /* DebugNoCF */, + F98751330DE7B5A200B1C9EC /* DebugNoCFUnthreaded */, F930843A0BB93D2800CD0B9E /* DebugMemCompile */, F99EE7420BE835310060D4AF /* DebugLeaks */, + F9359B250DF212DA00E04F67 /* DebugGCov */, F97AED1E0B660B2100310EA2 /* Debug64bit */, F95CC8B709158F3100EA5ACE /* Release */, F91BCC51093152310042A6BF /* ReleaseUniversal */, @@ -2923,8 +3009,11 @@ F9988AB80D814C7500B6B03B /* Debug llvmgcc42 */, F97258AB0A86873D00096C78 /* DebugNoFixZL */, F99EE73F0BE835310060D4AF /* DebugUnthreaded */, + F98751320DE7B57E00B1C9EC /* DebugNoCF */, + F98751360DE7B5A200B1C9EC /* DebugNoCFUnthreaded */, F93084390BB93D2800CD0B9E /* DebugMemCompile */, F99EE7400BE835310060D4AF /* DebugLeaks */, + F9359B280DF212DA00E04F67 /* DebugGCov */, F97AED1D0B660B2100310EA2 /* Debug64bit */, F97258AA0A86873D00096C78 /* Release */, F97258AC0A86873D00096C78 /* ReleaseUniversal */, -- cgit v0.12 From efb023ae79a5edd0667b94728ca2191d379b2fe9 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:33:37 +0000 Subject: * unix/tcl.m4 (SunOS-5.11): fix 64bit amd64 support with gcc & Sun cc. --- unix/tcl.m4 | 63 ++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index bf1c524..1659a12 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1918,33 +1918,46 @@ dnl AC_CHECK_TOOL(AR, ar) ]) ], [AS_IF([test "$arch" = "amd64 i386"], [ AS_IF([test "$GCC" = yes], [ - AC_MSG_WARN([64bit mode not supported with GCC on $system]) + case $system in + SunOS-5.1[[1-9]]*|SunOS-5.[[2-9]][[0-9]]*) + do64bit_ok=yes + CFLAGS="$CFLAGS -m64" + LDFLAGS="$LDFLAGS -m64";; + *) + AC_MSG_WARN([64bit mode not supported with GCC on $system]);; + esac ], [ do64bit_ok=yes - CFLAGS="$CFLAGS -xarch=amd64" - LDFLAGS="$LDFLAGS -xarch=amd64" + case $system in + SunOS-5.1[[1-9]]*|SunOS-5.[[2-9]][[0-9]]*) + CFLAGS="$CFLAGS -m64" + LDFLAGS="$LDFLAGS -m64";; + *) + CFLAGS="$CFLAGS -xarch=amd64" + LDFLAGS="$LDFLAGS -xarch=amd64";; + esac ]) ], [AC_MSG_WARN([64bit mode not supported for $arch])])]) ]) #-------------------------------------------------------------------- # On Solaris 5.x i386 with the sunpro compiler we need to link - # with sunmath to get floating point rounding control - #-------------------------------------------------------------------- - AS_IF([test "$GCC" = yes],[use_sunmath=no],[ + # with sunmath to get floating point rounding control + #-------------------------------------------------------------------- + AS_IF([test "$GCC" = yes],[use_sunmath=no],[ arch=`isainfo` - AC_MSG_CHECKING([whether to use -lsunmath for fp rounding control]) + AC_MSG_CHECKING([whether to use -lsunmath for fp rounding control]) AS_IF([test "$arch" = "amd64 i386"], [ - AC_MSG_RESULT([yes]) + AC_MSG_RESULT([yes]) MATH_LIBS="-lsunmath $MATH_LIBS" - AC_CHECK_HEADER(sunmath.h) + AC_CHECK_HEADER(sunmath.h) use_sunmath=yes - ], [ + ], [ AC_MSG_RESULT([no]) use_sunmath=no - ]) - ]) - + ]) + ]) + # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. @@ -1952,23 +1965,25 @@ dnl AC_CHECK_TOOL(AR, ar) SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - - AS_IF([test "$GCC" = yes], [ SHLIB_LD='${CC} -shared' CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} AS_IF([test "$do64bit_ok" = yes], [ - # We need to specify -static-libgcc or we need to - # add the path to the sparv9 libgcc. - SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" - # for finding sparcv9 libgcc, get the regular libgcc - # path, remove so name and append 'sparcv9' - #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." - #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + AS_IF([test "$arch" = "sparcv9 sparc"], [ + # We need to specify -static-libgcc or we need to + # add the path to the sparv9 libgcc. + SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" + # for finding sparcv9 libgcc, get the regular libgcc + # path, remove so name and append 'sparcv9' + #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." + #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + ], [AS_IF([test "$arch" = "amd64 i386"], [ + SHLIB_LD="$SHLIB_LD -m64 -static-libgcc" + ])]) ]) ], [ - AS_IF([test "$use_sunmath" = yes], [textmode=textoff],[textmode=text]) + AS_IF([test "$use_sunmath" = yes], [textmode=textoff],[textmode=text]) case $system in SunOS-5.[[1-9]][[0-9]]*) SHLIB_LD="\${CC} -G -z $textmode \${LDFLAGS}";; @@ -2613,7 +2628,7 @@ AC_DEFUN([SC_TCL_LINK_LIBS], [ AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm") AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"]) - + #-------------------------------------------------------------------- # Interactive UNIX requires -linet instead of -lsocket, plus it # needs net/errno.h to define the socket-related error codes. -- cgit v0.12 From 8958a8393b94c6f685698760a5527e3a8031b861 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:33:55 +0000 Subject: * unix/configure.in: fix static DTrace-enabled build on Solaris. --- unix/configure.in | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/unix/configure.in b/unix/configure.in index 31dc1cf..7bcbb0e 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.2 2008/04/11 18:12:30 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.3 2008/06/12 06:33:55 das Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -663,6 +663,15 @@ if test $tcl_ok = yes; then DTRACE_HDR="\${DTRACE_HDR}" if test "`uname -s`" != "Darwin" ; then DTRACE_OBJ="\${DTRACE_OBJ}" + if test "`uname -s`" = "SunOS" -a "$SHARED_BUILD" = "0" ; then + # Need to create an intermediate object file to ensure tclDTrace.o + # gets included when linking against the static tcl library. + STLIB_LD='stlib_ld () { /usr/ccs/bin/ld -r -o $${1%.a}.o "$${@:2}" && '"${STLIB_LD}"' $${1} $${1%.a}.o ; } && stlib_ld' + # Force use of Sun ar and ranlib, the GNU versions choke on + # tclDTrace.o and the combined object file above. + AR='/usr/ccs/bin/ar' + RANLIB='/usr/ccs/bin/ranlib' + fi fi fi AC_MSG_RESULT([$tcl_ok]) -- cgit v0.12 From 7767c7e469fd6007beed761f6f448863ddaa0de5 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:34:14 +0000 Subject: * unix/configure: autoconf-2.59 --- unix/configure | 72 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 20 deletions(-) diff --git a/unix/configure b/unix/configure index 65a4104..018276f 100755 --- a/unix/configure +++ b/unix/configure @@ -8421,14 +8421,27 @@ else if test "$GCC" = yes; then - { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 -echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} + case $system in + SunOS-5.1[1-9]*|SunOS-5.[2-9][0-9]*) + do64bit_ok=yes + CFLAGS="$CFLAGS -m64" + LDFLAGS="$LDFLAGS -m64";; + *) + { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 +echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;};; + esac else do64bit_ok=yes - CFLAGS="$CFLAGS -xarch=amd64" - LDFLAGS="$LDFLAGS -xarch=amd64" + case $system in + SunOS-5.1[1-9]*|SunOS-5.[2-9][0-9]*) + CFLAGS="$CFLAGS -m64" + LDFLAGS="$LDFLAGS -m64";; + *) + CFLAGS="$CFLAGS -xarch=amd64" + LDFLAGS="$LDFLAGS -xarch=amd64";; + esac fi @@ -8446,21 +8459,21 @@ fi #-------------------------------------------------------------------- # On Solaris 5.x i386 with the sunpro compiler we need to link - # with sunmath to get floating point rounding control - #-------------------------------------------------------------------- - if test "$GCC" = yes; then + # with sunmath to get floating point rounding control + #-------------------------------------------------------------------- + if test "$GCC" = yes; then use_sunmath=no else arch=`isainfo` - echo "$as_me:$LINENO: checking whether to use -lsunmath for fp rounding control" >&5 + echo "$as_me:$LINENO: checking whether to use -lsunmath for fp rounding control" >&5 echo $ECHO_N "checking whether to use -lsunmath for fp rounding control... $ECHO_C" >&6 if test "$arch" = "amd64 i386"; then - echo "$as_me:$LINENO: result: yes" >&5 + echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 MATH_LIBS="-lsunmath $MATH_LIBS" - if test "${ac_cv_header_sunmath_h+set}" = set; then + if test "${ac_cv_header_sunmath_h+set}" = set; then echo "$as_me:$LINENO: checking for sunmath.h" >&5 echo $ECHO_N "checking for sunmath.h... $ECHO_C" >&6 if test "${ac_cv_header_sunmath_h+set}" = set; then @@ -8620,8 +8633,6 @@ fi SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" - - if test "$GCC" = yes; then SHLIB_LD='${CC} -shared' @@ -8629,20 +8640,32 @@ fi LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} if test "$do64bit_ok" = yes; then - # We need to specify -static-libgcc or we need to - # add the path to the sparv9 libgcc. - SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" - # for finding sparcv9 libgcc, get the regular libgcc - # path, remove so name and append 'sparcv9' - #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." - #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + if test "$arch" = "sparcv9 sparc"; then + + # We need to specify -static-libgcc or we need to + # add the path to the sparv9 libgcc. + SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" + # for finding sparcv9 libgcc, get the regular libgcc + # path, remove so name and append 'sparcv9' + #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." + #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + +else + if test "$arch" = "amd64 i386"; then + + SHLIB_LD="$SHLIB_LD -m64 -static-libgcc" + +fi + +fi + fi else - if test "$use_sunmath" = yes; then + if test "$use_sunmath" = yes; then textmode=textoff else textmode=text @@ -18603,6 +18626,15 @@ _ACEOF DTRACE_HDR="\${DTRACE_HDR}" if test "`uname -s`" != "Darwin" ; then DTRACE_OBJ="\${DTRACE_OBJ}" + if test "`uname -s`" = "SunOS" -a "$SHARED_BUILD" = "0" ; then + # Need to create an intermediate object file to ensure tclDTrace.o + # gets included when linking against the static tcl library. + STLIB_LD='stlib_ld () { /usr/ccs/bin/ld -r -o $${1%.a}.o "$${@:2}" && '"${STLIB_LD}"' $${1} $${1%.a}.o ; } && stlib_ld' + # Force use of Sun ar and ranlib, the GNU versions choke on + # tclDTrace.o and the combined object file above. + AR='/usr/ccs/bin/ar' + RANLIB='/usr/ccs/bin/ranlib' + fi fi fi echo "$as_me:$LINENO: result: $tcl_ok" >&5 -- cgit v0.12 From d267c13106daee177a3e951075998de07098b94c Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:34:34 +0000 Subject: * unix/Makefile.in: clean generated tclDTrace.h file. --- ChangeLog | 14 ++++++++++++++ unix/Makefile.in | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 672fa83..a9d71c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2008-06-12 Daniel Steffen + + * unix/Makefile.in: clean generated tclDTrace.h file. + * unix/configure.in: fix static DTrace-enabled build on Solaris. + + * unix/tcl.m4 (SunOS-5.11): fix 64bit amd64 support with gcc & Sun cc. + * unix/configure: autoconf-2.59 + + * macosx/Tcl.xcodeproj/project.pbxproj: add debug configs with gcov, + and with corefoundation disabled; updates and cleanup for Xcode 3.1 and + for Leopard. + * macosx/Tcl.xcode/project.pbxproj: sync Tcl.xcodeproj changes. + * macosx/README: document new build configs. + 2008-05-26 Jeff Hobbs * tests/io.test (io-53.9): need to close chan before removing file. diff --git a/unix/Makefile.in b/unix/Makefile.in index de79f1c..174d86c 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229 2008/03/12 09:51:39 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.1 2008/06/12 06:34:35 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -883,7 +883,7 @@ Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in clean: rm -f *.a *.o libtcl* core errs *~ \#* TAGS *.E a.out \ - errors tclsh tcltest lib.exp Tcl + errors tclsh tcltest lib.exp Tcl @DTRACE_HDR@ cd dltest ; $(MAKE) clean distclean: clean -- cgit v0.12 From 9a0b46b6add889861356f9779053cd707555fdc5 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:36:42 +0000 Subject: * unix/tcl.m4 (SunOS-5.11): fix 64bit amd64 support with gcc & Sun cc. --- unix/tcl.m4 | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index b2508fd..e0ff77c 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1882,27 +1882,40 @@ dnl AC_CHECK_TOOL(AR, ar) do64bit_ok=yes if test "$do64bitVIS" = "yes" ; then CFLAGS="$CFLAGS -xarch=v9a" - LDFLAGS="$LDFLAGS -xarch=v9a" + LDFLAGS="$LDFLAGS -xarch=v9a" else CFLAGS="$CFLAGS -xarch=v9" - LDFLAGS="$LDFLAGS -xarch=v9" + LDFLAGS="$LDFLAGS -xarch=v9" fi # Solaris 64 uses this as well #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" fi elif test "$arch" = "amd64 i386" ; then if test "$GCC" = "yes" ; then - AC_MSG_WARN([64bit mode not supported with GCC on $system]) + case $system in + SunOS-5.1[[1-9]]*|SunOS-5.[[2-9]][[0-9]]*) + do64bit_ok=yes + CFLAGS="$CFLAGS -m64" + LDFLAGS="$LDFLAGS -m64";; + *) + AC_MSG_WARN([64bit mode not supported with GCC on $system]);; + esac else do64bit_ok=yes - CFLAGS="$CFLAGS -xarch=amd64" - LDFLAGS="$LDFLAGS -xarch=amd64" + case $system in + SunOS-5.1[[1-9]]*|SunOS-5.[[2-9]][[0-9]]*) + CFLAGS="$CFLAGS -m64" + LDFLAGS="$LDFLAGS -m64";; + *) + CFLAGS="$CFLAGS -xarch=amd64" + LDFLAGS="$LDFLAGS -xarch=amd64";; + esac fi else AC_MSG_WARN([64bit mode not supported for $arch]) fi fi - + # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. @@ -1915,13 +1928,16 @@ dnl AC_CHECK_TOOL(AR, ar) CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} if test "$do64bit_ok" = "yes" ; then - # We need to specify -static-libgcc or we need to - # add the path to the sparv9 libgcc. - SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" - # for finding sparcv9 libgcc, get the regular libgcc - # path, remove so name and append 'sparcv9' - #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." - #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + if test "$arch" = "sparcv9 sparc" ; then + # We need to specify -static-libgcc or we need to + # add the path to the sparv9 libgcc. + SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" + # for finding sparcv9 libgcc, get the regular libgcc + # path, remove so name and append 'sparcv9' + #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." + #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + elif test "$arch" = "amd64 i386" ; then + SHLIB_LD="$SHLIB_LD -m64 -static-libgcc" fi else case $system in @@ -2726,7 +2742,7 @@ AC_DEFUN([SC_TCL_LINK_LIBS], [ fi AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname, [LIBS="$LIBS -lnsl"])]) - + # Don't perform the eval of the libraries here because DL_LIBS # won't be set until we call SC_CONFIG_CFLAGS -- cgit v0.12 From 936d19b9f536ca0cc1e7ae0a07aa2cd569299a78 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:37:04 +0000 Subject: * unix/configure.in: fix static DTrace-enabled build on Solaris. --- unix/configure.in | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/unix/configure.in b/unix/configure.in index b0592ad..d3e004c 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.43 2008/04/11 16:57:41 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.44 2008/06/12 06:37:04 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -550,6 +550,15 @@ if test $tcl_ok = yes; then DTRACE_HDR="\${DTRACE_HDR}" if test "`uname -s`" != "Darwin" ; then DTRACE_OBJ="\${DTRACE_OBJ}" + if test "`uname -s`" = "SunOS" -a "$SHARED_BUILD" = "0" ; then + # Need to create an intermediate object file to ensure tclDTrace.o + # gets included when linking against the static tcl library. + STLIB_LD='stlib_ld () { /usr/ccs/bin/ld -r -o $${1%.a}.o "$${@:2}" && '"${STLIB_LD}"' $${1} $${1%.a}.o ; } && stlib_ld' + # Force use of Sun ar and ranlib, the GNU versions choke on + # tclDTrace.o and the combined object file above. + AR='/usr/ccs/bin/ar' + RANLIB='/usr/ccs/bin/ranlib' + fi fi fi AC_MSG_RESULT([$tcl_ok]) -- cgit v0.12 From f5ca9b88a4dfa821a8acd8ed94259a13636abde1 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:37:27 +0000 Subject: * unix/configure: autoconf-2.13 --- unix/configure | 702 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 354 insertions(+), 348 deletions(-) diff --git a/unix/configure b/unix/configure index b3902fd..8c1a8dc 100755 --- a/unix/configure +++ b/unix/configure @@ -2364,7 +2364,7 @@ fi fi - + # Don't perform the eval of the libraries here because DL_LIBS # won't be set until we call SC_CONFIG_CFLAGS @@ -3952,27 +3952,40 @@ EOF do64bit_ok=yes if test "$do64bitVIS" = "yes" ; then CFLAGS="$CFLAGS -xarch=v9a" - LDFLAGS="$LDFLAGS -xarch=v9a" + LDFLAGS="$LDFLAGS -xarch=v9a" else CFLAGS="$CFLAGS -xarch=v9" - LDFLAGS="$LDFLAGS -xarch=v9" + LDFLAGS="$LDFLAGS -xarch=v9" fi # Solaris 64 uses this as well #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" fi elif test "$arch" = "amd64 i386" ; then if test "$GCC" = "yes" ; then - echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2 + case $system in + SunOS-5.1[1-9]*|SunOS-5.[2-9][0-9]*) + do64bit_ok=yes + CFLAGS="$CFLAGS -m64" + LDFLAGS="$LDFLAGS -m64";; + *) + echo "configure: warning: 64bit mode not supported with GCC on $system" 1>&2;; + esac else do64bit_ok=yes - CFLAGS="$CFLAGS -xarch=amd64" - LDFLAGS="$LDFLAGS -xarch=amd64" + case $system in + SunOS-5.1[1-9]*|SunOS-5.[2-9][0-9]*) + CFLAGS="$CFLAGS -m64" + LDFLAGS="$LDFLAGS -m64";; + *) + CFLAGS="$CFLAGS -xarch=amd64" + LDFLAGS="$LDFLAGS -xarch=amd64";; + esac fi else echo "configure: warning: 64bit mode not supported for $arch" 1>&2 fi fi - + # Note: need the LIBS below, otherwise Tk won't find Tcl's # symbols when dynamically loaded into tclsh. @@ -3985,13 +3998,16 @@ EOF CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} if test "$do64bit_ok" = "yes" ; then - # We need to specify -static-libgcc or we need to - # add the path to the sparv9 libgcc. - SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" - # for finding sparcv9 libgcc, get the regular libgcc - # path, remove so name and append 'sparcv9' - #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." - #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + if test "$arch" = "sparcv9 sparc" ; then + # We need to specify -static-libgcc or we need to + # add the path to the sparv9 libgcc. + SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" + # for finding sparcv9 libgcc, get the regular libgcc + # path, remove so name and append 'sparcv9' + #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." + #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" + elif test "$arch" = "amd64 i386" ; then + SHLIB_LD="$SHLIB_LD -m64 -static-libgcc" fi else case $system in @@ -4028,7 +4044,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4032: checking for ld accepts -Bexport flag" >&5 +echo "configure:4048: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4036,14 +4052,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4093,13 +4109,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4097: checking sys/exec.h" >&5 +echo "configure:4113: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4117,7 +4133,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4121: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4137,13 +4153,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4141: checking a.out.h" >&5 +echo "configure:4157: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4161,7 +4177,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4181: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4181,13 +4197,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4185: checking sys/exec_aout.h" >&5 +echo "configure:4201: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4205,7 +4221,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4358,7 +4374,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4362: checking for build with symbols" >&5 +echo "configure:4378: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4419,21 +4435,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4423: checking for required early compiler flags" >&5 +echo "configure:4439: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4441,7 +4457,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4449,7 +4465,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4476,14 +4492,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4491,7 +4507,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4499,7 +4515,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4526,14 +4542,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4553: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4541,7 +4557,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4549,7 +4565,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4553: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4580,7 +4596,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4584: checking for 64-bit integer type" >&5 +echo "configure:4600: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4588,14 +4604,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4609,7 +4625,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4643,13 +4659,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4647: checking for struct dirent64" >&5 +echo "configure:4663: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4657,7 +4673,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4661: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4678,13 +4694,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4682: checking for struct stat64" >&5 +echo "configure:4698: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4692,7 +4708,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4712: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4715,12 +4731,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4719: checking for $ac_func" >&5 +echo "configure:4735: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4768,13 +4784,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4772: checking for off64_t" >&5 +echo "configure:4788: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4782,7 +4798,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4786: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4802: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4814,14 +4830,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4818: checking whether byte ordering is bigendian" >&5 +echo "configure:4834: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4832,11 +4848,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4836: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4852: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4847,7 +4863,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4867,7 +4883,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4913,12 +4929,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4917: checking for $ac_func" >&5 +echo "configure:4933: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4975,12 +4991,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4979: checking for $ac_func" >&5 +echo "configure:4995: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5030,12 +5046,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5034: checking for strerror" >&5 +echo "configure:5050: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5082,12 +5098,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5086: checking for getwd" >&5 +echo "configure:5102: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5134,12 +5150,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5138: checking for wait3" >&5 +echo "configure:5154: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5186,12 +5202,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5190: checking for uname" >&5 +echo "configure:5206: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5245,12 +5261,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5249: checking for realpath" >&5 +echo "configure:5265: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5303,12 +5319,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5307: checking for getpwuid_r" >&5 +echo "configure:5323: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5347,13 +5363,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5351: checking for getpwuid_r with 5 args" >&5 +echo "configure:5367: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5370,7 +5386,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5391,13 +5407,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5395: checking for getpwuid_r with 4 args" >&5 +echo "configure:5411: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5414,7 +5430,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5434: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5447,12 +5463,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5451: checking for getpwnam_r" >&5 +echo "configure:5467: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5491,13 +5507,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5495: checking for getpwnam_r with 5 args" >&5 +echo "configure:5511: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5514,7 +5530,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5535,13 +5551,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5539: checking for getpwnam_r with 4 args" >&5 +echo "configure:5555: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5558,7 +5574,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5578: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5591,12 +5607,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5595: checking for getgrgid_r" >&5 +echo "configure:5611: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5635,13 +5651,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5639: checking for getgrgid_r with 5 args" >&5 +echo "configure:5655: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5658,7 +5674,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5679,13 +5695,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5683: checking for getgrgid_r with 4 args" >&5 +echo "configure:5699: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5702,7 +5718,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5735,12 +5751,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5739: checking for getgrnam_r" >&5 +echo "configure:5755: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5779,13 +5795,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5783: checking for getgrnam_r with 5 args" >&5 +echo "configure:5799: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5802,7 +5818,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5806: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5823,13 +5839,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5827: checking for getgrnam_r with 4 args" >&5 +echo "configure:5843: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5846,7 +5862,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5866: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5906,12 +5922,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5910: checking for gethostbyname_r" >&5 +echo "configure:5926: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5950,13 +5966,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5954: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5970: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5973,7 +5989,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -5994,13 +6010,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:5998: checking for gethostbyname_r with 5 args" >&5 +echo "configure:6014: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6017,7 +6033,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6021: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6038,13 +6054,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6042: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6058: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6059,7 +6075,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6063: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6093,12 +6109,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6097: checking for gethostbyaddr_r" >&5 +echo "configure:6113: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6137,13 +6153,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6141: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6157: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6163,7 +6179,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6167: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6184,13 +6200,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6188: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6204: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6210,7 +6226,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6230: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6256,17 +6272,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6260: checking for $ac_hdr" >&5 +echo "configure:6276: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6286: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6293,7 +6309,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6297: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6313: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6302,7 +6318,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6317,7 +6333,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6334,7 +6350,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6348,7 +6364,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6366,7 +6382,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6381,7 +6397,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6399,7 +6415,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6416,7 +6432,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6434,7 +6450,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6450,7 +6466,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6468,7 +6484,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6485,7 +6501,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6528,20 +6544,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6532: checking for fd_set in sys/types" >&5 +echo "configure:6548: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6557,13 +6573,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6561: checking for fd_mask in sys/select" >&5 +echo "configure:6577: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6600,12 +6616,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6604: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6620: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6613,7 +6629,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6638,17 +6654,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6642: checking for $ac_hdr" >&5 +echo "configure:6658: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6652: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6668: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6675,12 +6691,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6679: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6695: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6689,7 +6705,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6693: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6709: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6710,12 +6726,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6714: checking for tm_zone in struct tm" >&5 +echo "configure:6730: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6723,7 +6739,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6743: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6743,12 +6759,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6747: checking for tzname" >&5 +echo "configure:6763: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6758,7 +6774,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6783,12 +6799,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6787: checking for $ac_func" >&5 +echo "configure:6803: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6837,20 +6853,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6841: checking tm_tzadj in struct tm" >&5 +echo "configure:6857: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6854: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6871,20 +6887,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6875: checking tm_gmtoff in struct tm" >&5 +echo "configure:6891: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6888: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6909,13 +6925,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6913: checking long timezone variable" >&5 +echo "configure:6929: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6924,7 +6940,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6947,13 +6963,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6951: checking time_t timezone variable" >&5 +echo "configure:6967: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6962,7 +6978,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -6989,12 +7005,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:6993: checking for st_blksize in struct stat" >&5 +echo "configure:7009: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7002,7 +7018,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:7006: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7023,12 +7039,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:7027: checking for fstatfs" >&5 +echo "configure:7043: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7080,7 +7096,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7084: checking for 8-bit clean memcmp" >&5 +echo "configure:7100: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7088,7 +7104,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7122,12 +7138,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7126: checking for memmove" >&5 +echo "configure:7142: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7183,7 +7199,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7187: checking proper strstr implementation" >&5 +echo "configure:7203: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7192,7 +7208,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7228,12 +7244,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7232: checking for strtoul" >&5 +echo "configure:7248: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7278,7 +7294,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7282: checking proper strtoul implementation" >&5 +echo "configure:7298: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7287,7 +7303,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7332,12 +7348,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7336: checking for strtod" >&5 +echo "configure:7352: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7382,7 +7398,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7386: checking proper strtod implementation" >&5 +echo "configure:7402: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7391,7 +7407,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7439,12 +7455,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7443: checking for strtod" >&5 +echo "configure:7459: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7489,7 +7505,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7493: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7509: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7498,7 +7514,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7552,12 +7568,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7556: checking for ANSI C header files" >&5 +echo "configure:7572: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7565,7 +7581,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7585: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7582,7 +7598,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7600,7 +7616,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7621,7 +7637,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7632,7 +7648,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7656,12 +7672,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7660: checking for mode_t" >&5 +echo "configure:7676: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7689,12 +7705,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7693: checking for pid_t" >&5 +echo "configure:7709: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7722,12 +7738,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7726: checking for size_t" >&5 +echo "configure:7742: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7755,12 +7771,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7759: checking for uid_t in sys/types.h" >&5 +echo "configure:7775: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7790,13 +7806,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7794: checking for socklen_t" >&5 +echo "configure:7810: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7835,12 +7851,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7839: checking for opendir" >&5 +echo "configure:7855: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7896,13 +7912,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7900: checking union wait" >&5 +echo "configure:7916: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7914,7 +7930,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7941,12 +7957,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7945: checking for strncasecmp" >&5 +echo "configure:7961: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -7991,7 +8007,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:7995: checking for strncasecmp in -lsocket" >&5 +echo "configure:8011: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7999,7 +8015,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8034,7 +8050,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8038: checking for strncasecmp in -linet" >&5 +echo "configure:8054: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8042,7 +8058,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8091,12 +8107,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8095: checking for BSDgettimeofday" >&5 +echo "configure:8111: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8141,12 +8157,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8145: checking for gettimeofday" >&5 +echo "configure:8161: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8196,13 +8212,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8200: checking for gettimeofday declaration" >&5 +echo "configure:8216: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8233,14 +8249,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8237: checking whether char is unsigned" >&5 +echo "configure:8253: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8296,13 +8312,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8300: checking signed char declarations" >&5 +echo "configure:8316: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8337,7 +8353,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8341: checking for a putenv() that copies the buffer" >&5 +echo "configure:8357: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8346,7 +8362,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8368,7 +8384,7 @@ else } EOF -if { (eval echo configure:8372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8408,17 +8424,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8412: checking for langinfo.h" >&5 +echo "configure:8428: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8442,21 +8458,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8446: checking whether to use nl_langinfo" >&5 +echo "configure:8462: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8460: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8476: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8489,17 +8505,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8493: checking for $ac_hdr" >&5 +echo "configure:8509: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8503: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8528,12 +8544,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8532: checking for $ac_func" >&5 +echo "configure:8548: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8585,17 +8601,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8589: checking for $ac_hdr" >&5 +echo "configure:8605: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8624,12 +8640,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8628: checking for $ac_func" >&5 +echo "configure:8644: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8679,12 +8695,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8683: checking for $ac_func" >&5 +echo "configure:8699: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8748,17 +8764,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8752: checking for $ac_hdr" >&5 +echo "configure:8768: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8762: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8786,14 +8802,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8790: checking if weak import is available" >&5 +echo "configure:8806: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8837,13 +8853,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8841: checking for fts" >&5 +echo "configure:8857: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8858,7 +8874,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8890,17 +8906,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8894: checking for $ac_hdr" >&5 +echo "configure:8910: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8904: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8930,17 +8946,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8934: checking for $ac_hdr" >&5 +echo "configure:8950: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8960: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8968,7 +8984,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8972: checking system version" >&5 +echo "configure:8988: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8999,7 +9015,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:9003: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:9019: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9048,17 +9064,17 @@ fi if test $tcl_ok = yes; then ac_safe=`echo "sys/sdt.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/sdt.h""... $ac_c" 1>&6 -echo "configure:9052: checking for sys/sdt.h" >&5 +echo "configure:9068: checking for sys/sdt.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9085,7 +9101,7 @@ if test $tcl_ok = yes; then # Extract the first word of "dtrace", so it can be a program name with args. set dummy dtrace; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9089: checking for $ac_word" >&5 +echo "configure:9105: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_DTRACE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9120,7 +9136,7 @@ fi test -z "$ac_cv_path_DTRACE" && tcl_ok=no fi echo $ac_n "checking whether to enable DTrace support""... $ac_c" 1>&6 -echo "configure:9124: checking whether to enable DTrace support" >&5 +echo "configure:9140: checking whether to enable DTrace support" >&5 if test $tcl_ok = yes; then cat >> confdefs.h <<\EOF #define USE_DTRACE 1 @@ -9130,6 +9146,15 @@ EOF DTRACE_HDR="\${DTRACE_HDR}" if test "`uname -s`" != "Darwin" ; then DTRACE_OBJ="\${DTRACE_OBJ}" + if test "`uname -s`" = "SunOS" -a "$SHARED_BUILD" = "0" ; then + # Need to create an intermediate object file to ensure tclDTrace.o + # gets included when linking against the static tcl library. + STLIB_LD='stlib_ld () { /usr/ccs/bin/ld -r -o $${1%.a}.o "$${@:2}" && '"${STLIB_LD}"' $${1} $${1%.a}.o ; } && stlib_ld' + # Force use of Sun ar and ranlib, the GNU versions choke on + # tclDTrace.o and the combined object file above. + AR='/usr/ccs/bin/ar' + RANLIB='/usr/ccs/bin/ranlib' + fi fi fi echo "$ac_t""$tcl_ok" 1>&6 @@ -9163,7 +9188,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9167: checking how to package libraries" >&5 +echo "configure:9192: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -9442,34 +9467,15 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs # Without the "./", some shells look in PATH for config.status. -- cgit v0.12 From 9f059e343f72ade81e047d8d86b0ee0b71e87506 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:38:01 +0000 Subject: * unix/Makefile.in: clean generated tclDTrace.h file. --- ChangeLog | 8 ++++++++ unix/Makefile.in | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c432627..ee9e491 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-06-12 Daniel Steffen + + * unix/Makefile.in: clean generated tclDTrace.h file. + * unix/configure.in: fix static DTrace-enabled build on Solaris. + + * unix/tcl.m4 (SunOS-5.11): fix 64bit amd64 support with gcc & Sun cc. + * unix/configure: autoconf-2.13 + 2008-05-26 Jeff Hobbs * tests/io.test (io-53.9): need to close chan before removing file. diff --git a/unix/Makefile.in b/unix/Makefile.in index 6fdcca2..dabd8f4 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.25 2008/02/27 22:45:31 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.26 2008/06/12 06:38:03 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -772,7 +772,7 @@ Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in clean: rm -f *.a *.o libtcl* core errs *~ \#* TAGS *.E a.out \ - errors tclsh tcltest lib.exp Tcl + errors tclsh tcltest lib.exp Tcl @DTRACE_HDR@ cd dltest ; $(MAKE) clean distclean: clean -- cgit v0.12 From 74bc29aa0907c89d7211e2bfae06cb041bff93bc Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 06:49:27 +0000 Subject: s/target/config/ --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a9d71c9..6a66486 100644 --- a/ChangeLog +++ b/ChangeLog @@ -458,7 +458,7 @@ Darwin 9 even when TclpCreateProcess() uses vfork(). * macosx/Tcl.xcodeproj/project.pbxproj: Add support for Xcode 3.1 and - * macosx/Tcl.xcodeproj/default.pbxuser: targets for building with + * macosx/Tcl.xcodeproj/default.pbxuser: configs for building with * macosx/Tcl-Common.xcconfig: gcc-4.2 and llvm-gcc-4.2. * unix/tclUnixPort.h: Workaround vfork() problems @@ -3210,7 +3210,7 @@ * generic/tclInt.h: fix warning when building threaded with -DPURIFY. * macosx/Tcl.xcodeproj/project.pbxproj: add 'DebugUnthreaded' & - * macosx/Tcl.xcodeproj/default.pbxuser: 'DebugLeaks' targets and env + * macosx/Tcl.xcodeproj/default.pbxuser: 'DebugLeaks' configs and env var settings needed to run the 'leaks' tool. 2007-05-07 Don Porter -- cgit v0.12 From 5355787262096811f66bfd18f24bb030b433e576 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 19:33:17 +0000 Subject: duh, fix missing 'fi', thanks aku! --- unix/tcl.m4 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index e0ff77c..6948c98 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1936,8 +1936,9 @@ dnl AC_CHECK_TOOL(AR, ar) # path, remove so name and append 'sparcv9' #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" - elif test "$arch" = "amd64 i386" ; then + elif test "$arch" = "amd64 i386" ; then SHLIB_LD="$SHLIB_LD -m64 -static-libgcc" + fi fi else case $system in -- cgit v0.12 From aa2639c4bda2a4207f2c081e88e348e6371dbe66 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 19:33:44 +0000 Subject: autoconf-2.13 --- unix/configure | 615 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 308 insertions(+), 307 deletions(-) diff --git a/unix/configure b/unix/configure index 8c1a8dc..e911c5a 100755 --- a/unix/configure +++ b/unix/configure @@ -4006,8 +4006,9 @@ EOF # path, remove so name and append 'sparcv9' #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" - elif test "$arch" = "amd64 i386" ; then + elif test "$arch" = "amd64 i386" ; then SHLIB_LD="$SHLIB_LD -m64 -static-libgcc" + fi fi else case $system in @@ -4044,7 +4045,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4048: checking for ld accepts -Bexport flag" >&5 +echo "configure:4049: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4052,14 +4053,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4109,13 +4110,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4113: checking sys/exec.h" >&5 +echo "configure:4114: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4133,7 +4134,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4153,13 +4154,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4157: checking a.out.h" >&5 +echo "configure:4158: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4177,7 +4178,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4181: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4182: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4197,13 +4198,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4201: checking sys/exec_aout.h" >&5 +echo "configure:4202: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4221,7 +4222,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4226: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4374,7 +4375,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4378: checking for build with symbols" >&5 +echo "configure:4379: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4435,21 +4436,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4439: checking for required early compiler flags" >&5 +echo "configure:4440: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4457,7 +4458,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4465,7 +4466,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4492,14 +4493,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4507,7 +4508,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4515,7 +4516,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4542,14 +4543,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4553: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4557,7 +4558,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4565,7 +4566,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4596,7 +4597,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4600: checking for 64-bit integer type" >&5 +echo "configure:4601: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4604,14 +4605,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4625,7 +4626,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4659,13 +4660,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4663: checking for struct dirent64" >&5 +echo "configure:4664: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4673,7 +4674,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4694,13 +4695,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4698: checking for struct stat64" >&5 +echo "configure:4699: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4708,7 +4709,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4712: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4731,12 +4732,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4735: checking for $ac_func" >&5 +echo "configure:4736: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4784,13 +4785,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4788: checking for off64_t" >&5 +echo "configure:4789: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4798,7 +4799,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4802: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4830,14 +4831,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4834: checking whether byte ordering is bigendian" >&5 +echo "configure:4835: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4848,11 +4849,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4852: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4863,7 +4864,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4883,7 +4884,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4929,12 +4930,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4933: checking for $ac_func" >&5 +echo "configure:4934: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4991,12 +4992,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4995: checking for $ac_func" >&5 +echo "configure:4996: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5046,12 +5047,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5050: checking for strerror" >&5 +echo "configure:5051: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5098,12 +5099,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5102: checking for getwd" >&5 +echo "configure:5103: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5150,12 +5151,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5154: checking for wait3" >&5 +echo "configure:5155: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5202,12 +5203,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5206: checking for uname" >&5 +echo "configure:5207: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5261,12 +5262,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5265: checking for realpath" >&5 +echo "configure:5266: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5319,12 +5320,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5323: checking for getpwuid_r" >&5 +echo "configure:5324: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5363,13 +5364,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5367: checking for getpwuid_r with 5 args" >&5 +echo "configure:5368: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5386,7 +5387,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5391: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5407,13 +5408,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5411: checking for getpwuid_r with 4 args" >&5 +echo "configure:5412: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5430,7 +5431,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5434: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5463,12 +5464,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5467: checking for getpwnam_r" >&5 +echo "configure:5468: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5507,13 +5508,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5511: checking for getpwnam_r with 5 args" >&5 +echo "configure:5512: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5530,7 +5531,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5551,13 +5552,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5555: checking for getpwnam_r with 4 args" >&5 +echo "configure:5556: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5574,7 +5575,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5578: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5579: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5607,12 +5608,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5611: checking for getgrgid_r" >&5 +echo "configure:5612: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5651,13 +5652,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5655: checking for getgrgid_r with 5 args" >&5 +echo "configure:5656: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5674,7 +5675,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5679: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5695,13 +5696,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5699: checking for getgrgid_r with 4 args" >&5 +echo "configure:5700: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5718,7 +5719,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5723: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5751,12 +5752,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5755: checking for getgrnam_r" >&5 +echo "configure:5756: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5795,13 +5796,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5799: checking for getgrnam_r with 5 args" >&5 +echo "configure:5800: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5818,7 +5819,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5823: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5839,13 +5840,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5843: checking for getgrnam_r with 4 args" >&5 +echo "configure:5844: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5862,7 +5863,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5866: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5922,12 +5923,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5926: checking for gethostbyname_r" >&5 +echo "configure:5927: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5966,13 +5967,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5970: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5971: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5989,7 +5990,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -6010,13 +6011,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:6014: checking for gethostbyname_r with 5 args" >&5 +echo "configure:6015: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6033,7 +6034,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6038: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6054,13 +6055,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6058: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6059: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6075,7 +6076,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6080: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6109,12 +6110,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6113: checking for gethostbyaddr_r" >&5 +echo "configure:6114: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6153,13 +6154,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6157: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6158: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6179,7 +6180,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6200,13 +6201,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6204: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6205: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6226,7 +6227,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6230: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6272,17 +6273,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6276: checking for $ac_hdr" >&5 +echo "configure:6277: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6286: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6309,7 +6310,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6313: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6314: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6318,7 +6319,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6333,7 +6334,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6350,7 +6351,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6364,7 +6365,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6382,7 +6383,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6397,7 +6398,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6415,7 +6416,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6432,7 +6433,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6450,7 +6451,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6466,7 +6467,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6484,7 +6485,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6501,7 +6502,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6544,20 +6545,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6548: checking for fd_set in sys/types" >&5 +echo "configure:6549: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6573,13 +6574,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6577: checking for fd_mask in sys/select" >&5 +echo "configure:6578: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6616,12 +6617,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6620: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6621: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6629,7 +6630,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6634: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6654,17 +6655,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6658: checking for $ac_hdr" >&5 +echo "configure:6659: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6668: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6669: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6691,12 +6692,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6695: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6696: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6705,7 +6706,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6709: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6726,12 +6727,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6730: checking for tm_zone in struct tm" >&5 +echo "configure:6731: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6739,7 +6740,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6743: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6744: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6759,12 +6760,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6763: checking for tzname" >&5 +echo "configure:6764: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6774,7 +6775,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6799,12 +6800,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6803: checking for $ac_func" >&5 +echo "configure:6804: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6853,20 +6854,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6857: checking tm_tzadj in struct tm" >&5 +echo "configure:6858: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6887,20 +6888,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6891: checking tm_gmtoff in struct tm" >&5 +echo "configure:6892: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6925,13 +6926,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6929: checking long timezone variable" >&5 +echo "configure:6930: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6940,7 +6941,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6945: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6963,13 +6964,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6967: checking time_t timezone variable" >&5 +echo "configure:6968: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6978,7 +6979,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -7005,12 +7006,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:7009: checking for st_blksize in struct stat" >&5 +echo "configure:7010: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7018,7 +7019,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:7022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7039,12 +7040,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:7043: checking for fstatfs" >&5 +echo "configure:7044: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7096,7 +7097,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7100: checking for 8-bit clean memcmp" >&5 +echo "configure:7101: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7104,7 +7105,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7138,12 +7139,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7142: checking for memmove" >&5 +echo "configure:7143: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7199,7 +7200,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7203: checking proper strstr implementation" >&5 +echo "configure:7204: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7208,7 +7209,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7244,12 +7245,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7248: checking for strtoul" >&5 +echo "configure:7249: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7294,7 +7295,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7298: checking proper strtoul implementation" >&5 +echo "configure:7299: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7303,7 +7304,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7348,12 +7349,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7352: checking for strtod" >&5 +echo "configure:7353: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7398,7 +7399,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7402: checking proper strtod implementation" >&5 +echo "configure:7403: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7407,7 +7408,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7455,12 +7456,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7459: checking for strtod" >&5 +echo "configure:7460: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7505,7 +7506,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7509: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7510: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7514,7 +7515,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7568,12 +7569,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7572: checking for ANSI C header files" >&5 +echo "configure:7573: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7581,7 +7582,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7585: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7598,7 +7599,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7616,7 +7617,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7637,7 +7638,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7648,7 +7649,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7672,12 +7673,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7676: checking for mode_t" >&5 +echo "configure:7677: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7705,12 +7706,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7709: checking for pid_t" >&5 +echo "configure:7710: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7738,12 +7739,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7742: checking for size_t" >&5 +echo "configure:7743: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7771,12 +7772,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7775: checking for uid_t in sys/types.h" >&5 +echo "configure:7776: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7806,13 +7807,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7810: checking for socklen_t" >&5 +echo "configure:7811: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7851,12 +7852,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7855: checking for opendir" >&5 +echo "configure:7856: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7912,13 +7913,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7916: checking union wait" >&5 +echo "configure:7917: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7930,7 +7931,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7957,12 +7958,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7961: checking for strncasecmp" >&5 +echo "configure:7962: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -8007,7 +8008,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:8011: checking for strncasecmp in -lsocket" >&5 +echo "configure:8012: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8015,7 +8016,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8050,7 +8051,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8054: checking for strncasecmp in -linet" >&5 +echo "configure:8055: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8058,7 +8059,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8107,12 +8108,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8111: checking for BSDgettimeofday" >&5 +echo "configure:8112: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8157,12 +8158,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8161: checking for gettimeofday" >&5 +echo "configure:8162: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8212,13 +8213,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8216: checking for gettimeofday declaration" >&5 +echo "configure:8217: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8249,14 +8250,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8253: checking whether char is unsigned" >&5 +echo "configure:8254: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8312,13 +8313,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8316: checking signed char declarations" >&5 +echo "configure:8317: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8353,7 +8354,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8357: checking for a putenv() that copies the buffer" >&5 +echo "configure:8358: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8362,7 +8363,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8384,7 +8385,7 @@ else } EOF -if { (eval echo configure:8388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8424,17 +8425,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8428: checking for langinfo.h" >&5 +echo "configure:8429: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8458,21 +8459,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8462: checking whether to use nl_langinfo" >&5 +echo "configure:8463: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8476: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8477: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8505,17 +8506,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8509: checking for $ac_hdr" >&5 +echo "configure:8510: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8544,12 +8545,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8548: checking for $ac_func" >&5 +echo "configure:8549: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8601,17 +8602,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8605: checking for $ac_hdr" >&5 +echo "configure:8606: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8640,12 +8641,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8644: checking for $ac_func" >&5 +echo "configure:8645: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8695,12 +8696,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8699: checking for $ac_func" >&5 +echo "configure:8700: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8764,17 +8765,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8768: checking for $ac_hdr" >&5 +echo "configure:8769: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8779: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8802,14 +8803,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8806: checking if weak import is available" >&5 +echo "configure:8807: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8853,13 +8854,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8857: checking for fts" >&5 +echo "configure:8858: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8874,7 +8875,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8906,17 +8907,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8910: checking for $ac_hdr" >&5 +echo "configure:8911: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8946,17 +8947,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8950: checking for $ac_hdr" >&5 +echo "configure:8951: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8960: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8961: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8984,7 +8985,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8988: checking system version" >&5 +echo "configure:8989: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9015,7 +9016,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:9019: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:9020: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9064,17 +9065,17 @@ fi if test $tcl_ok = yes; then ac_safe=`echo "sys/sdt.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/sdt.h""... $ac_c" 1>&6 -echo "configure:9068: checking for sys/sdt.h" >&5 +echo "configure:9069: checking for sys/sdt.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9101,7 +9102,7 @@ if test $tcl_ok = yes; then # Extract the first word of "dtrace", so it can be a program name with args. set dummy dtrace; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9105: checking for $ac_word" >&5 +echo "configure:9106: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_DTRACE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9136,7 +9137,7 @@ fi test -z "$ac_cv_path_DTRACE" && tcl_ok=no fi echo $ac_n "checking whether to enable DTrace support""... $ac_c" 1>&6 -echo "configure:9140: checking whether to enable DTrace support" >&5 +echo "configure:9141: checking whether to enable DTrace support" >&5 if test $tcl_ok = yes; then cat >> confdefs.h <<\EOF #define USE_DTRACE 1 @@ -9188,7 +9189,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9192: checking how to package libraries" >&5 +echo "configure:9193: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" -- cgit v0.12 From 0d6b55f2fe8c7feec7aad55b859d0f5af8e46ec0 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 20:09:07 +0000 Subject: * unix/Makefile.in: add complete deps on tclDTrace.h. --- ChangeLog | 6 ++++-- unix/Makefile.in | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6a66486..586941a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,9 @@ 2008-06-12 Daniel Steffen - * unix/Makefile.in: clean generated tclDTrace.h file. - * unix/configure.in: fix static DTrace-enabled build on Solaris. + * unix/Makefile.in: add complete deps on tclDTrace.h. + + * unix/Makefile.in: clean generated tclDTrace.h file. + * unix/configure.in (SunOS): fix static DTrace-enabled build. * unix/tcl.m4 (SunOS-5.11): fix 64bit amd64 support with gcc & Sun cc. * unix/configure: autoconf-2.59 diff --git a/unix/Makefile.in b/unix/Makefile.in index 174d86c..f950046 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.1 2008/06/12 06:34:35 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.2 2008/06/12 20:09:11 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1449,7 +1449,7 @@ tclMacOSXNotify.o: $(MAC_OSX_DIR)/tclMacOSXNotify.c # DTrace support -$(TCL_OBJS): @DTRACE_HDR@ +$(TCL_OBJS) $(STUB_LIB_OBJS) $(TCLSH_OBJS) $(TCLTEST_OBJS) $(XTTEST_OBJS): @DTRACE_HDR@ $(DTRACE_HDR): $(DTRACE_SRC) $(DTRACE) -h $(DTRACE_SWITCHES) -o $@ -s $(DTRACE_SRC) -- cgit v0.12 From e4f4c57260ec61ec4684b6f3658d3cfe4879be02 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 12 Jun 2008 20:09:17 +0000 Subject: * unix/Makefile.in: add complete deps on tclDTrace.h. --- ChangeLog | 6 ++++-- unix/Makefile.in | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee9e491..8708e46 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,9 @@ 2008-06-12 Daniel Steffen - * unix/Makefile.in: clean generated tclDTrace.h file. - * unix/configure.in: fix static DTrace-enabled build on Solaris. + * unix/Makefile.in: add complete deps on tclDTrace.h. + + * unix/Makefile.in: clean generated tclDTrace.h file. + * unix/configure.in (SunOS): fix static DTrace-enabled build. * unix/tcl.m4 (SunOS-5.11): fix 64bit amd64 support with gcc & Sun cc. * unix/configure: autoconf-2.13 diff --git a/unix/Makefile.in b/unix/Makefile.in index dabd8f4..23b6116 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.26 2008/06/12 06:38:03 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.27 2008/06/12 20:09:18 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -308,10 +308,10 @@ ${GENERIC_FLAGS} ${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} \ TCLSH_OBJS = tclAppInit.o TCLTEST_OBJS = tclTestInit.o tclTest.o tclTestObj.o tclTestProcBodyObj.o \ - tclThreadTest.o tclUnixTest.o + tclThreadTest.o tclUnixTest.o XTTEST_OBJS = xtTestInit.o tclTest.o tclTestObj.o tclTestProcBodyObj.o \ - tclThreadTest.o tclUnixTest.o tclXtNotify.o tclXtTest.o + tclThreadTest.o tclUnixTest.o tclXtNotify.o tclXtTest.o GENERIC_OBJS = regcomp.o regexec.o regfree.o regerror.o tclAlloc.o \ tclAsync.o tclBasic.o tclBinary.o \ @@ -1104,7 +1104,7 @@ tclMacOSXNotify.o: $(MAC_OSX_DIR)/tclMacOSXNotify.c # DTrace support -$(TCL_OBJS): @DTRACE_HDR@ +$(TCL_OBJS) $(STUB_LIB_OBJS) $(TCLSH_OBJS) $(TCLTEST_OBJS) $(XTTEST_OBJS): @DTRACE_HDR@ $(DTRACE_HDR): $(DTRACE_SRC) $(DTRACE) -h $(DTRACE_SWITCHES) -o $@ -s $(DTRACE_SRC) -- cgit v0.12 From a8d8152bcfcdacd4b0a55d00a657e61191178db8 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 12 Jun 2008 20:19:27 +0000 Subject: * generic/tclCmdIL.c (InfoFrameCmd): TIP #280 conditional feature. Added checks to validate HashEntry and HashTable information gotten from Command structures. This seems to be needed to handle structures managed by Itcl. --- ChangeLog | 7 +++++++ generic/tclCmdIL.c | 27 ++++++++++++++++++--------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8708e46..27b5b16 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-06-12 Andreas Kupries + + * generic/tclCmdIL.c (InfoFrameCmd): TIP #280 conditional + feature. Added checks to validate HashEntry and HashTable + information gotten from Command structures. This seems to be + needed to handle structures managed by Itcl. + 2008-06-12 Daniel Steffen * unix/Makefile.in: add complete deps on tclDTrace.h. diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index eae2d10..d7f1d5b 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.12 2007/12/05 14:54:08 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.13 2008/06/12 20:19:29 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1202,17 +1202,26 @@ InfoFrameCmd(dummy, interp, objc, objv) lv [lc ++] = Tcl_NewStringObj (f.cmd.str.cmd, f.cmd.str.len); if (procPtr != NULL) { - Tcl_HashEntry* namePtr = procPtr->cmdPtr->hPtr; - char* procName = Tcl_GetHashKey (namePtr->tablePtr, namePtr); - char* nsName = procPtr->cmdPtr->nsPtr->fullName; + Tcl_HashEntry* namePtr = procPtr->cmdPtr->hPtr; + /* + * ITcl seems to provide us with weird, maybe bogus + * Command structures (methods?) which may have no + * HashEntry pointing to the name information, or a + * HashEntry without owning HashTable. Therefore check + * again that our data is valid. + */ + if (namePtr && namePtr->tablePtr) { + char* procName = Tcl_GetHashKey (namePtr->tablePtr, namePtr); + char* nsName = procPtr->cmdPtr->nsPtr->fullName; - lv [lc ++] = Tcl_NewStringObj ("proc",-1); - lv [lc ++] = Tcl_NewStringObj (nsName,-1); + lv [lc ++] = Tcl_NewStringObj ("proc",-1); + lv [lc ++] = Tcl_NewStringObj (nsName,-1); - if (strcmp (nsName, "::") != 0) { - Tcl_AppendToObj (lv [lc-1], "::", -1); + if (strcmp (nsName, "::") != 0) { + Tcl_AppendToObj (lv [lc-1], "::", -1); + } + Tcl_AppendToObj (lv [lc-1], procName, -1); } - Tcl_AppendToObj (lv [lc-1], procName, -1); } break; } -- cgit v0.12 From 32d107e23b1d9d75d74c00fdd52dde8992156169 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 16 Jun 2008 20:44:30 +0000 Subject: * generic/tclCmdIL.c (TclInfoFrame): Backport of fix made on the * tests/info.test: head branch :: Moved the code looking up the information for key 'proc' out of the TCL_LOCATION_BC branch to after the switch, this is common to all frame types. Updated the testsuite to match. This was exposed by the 2008-06-08 commit (Miguel), switching uplevel from direct eval to compilation. Fixes [Bug 1987851]. --- ChangeLog | 10 +++++++ generic/tclCmdIL.c | 87 +++++++++++++++++++++++++++++------------------------- tests/info.test | 16 +++++----- 3 files changed, 64 insertions(+), 49 deletions(-) diff --git a/ChangeLog b/ChangeLog index 586941a..e79000e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-06-16 Andreas Kupries + + * generic/tclCmdIL.c (TclInfoFrame): Backport of fix made on the + * tests/info.test: head branch :: Moved the code looking up the + information for key 'proc' out of the TCL_LOCATION_BC branch to + after the switch, this is common to all frame types. Updated the + testsuite to match. This was exposed by the 2008-06-08 commit + (Miguel), switching uplevel from direct eval to compilation. Fixes + [Bug 1987851]. + 2008-06-12 Daniel Steffen * unix/Makefile.in: add complete deps on tclDTrace.h. diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index d76b49f..5555c99 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.137 2008/03/14 19:46:17 dgp Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.1 2008/06/16 20:44:31 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1125,6 +1125,8 @@ TclInfoFrame( "eval", "eval", "eval", "precompiled", "source", "proc" }; Tcl_Obj *tmpObj; + Proc *procPtr = + framePtr->framePtr ? framePtr->framePtr->procPtr : NULL; /* * Pull the information and construct the dictionary to return, as list. @@ -1181,8 +1183,6 @@ TclInfoFrame( * Execution of bytecode. Talk to the BC engine to fill out the frame. */ - Proc *procPtr = - framePtr->framePtr ? framePtr->framePtr->procPtr : NULL; CmdFrame *fPtr; fPtr = (CmdFrame *) TclStackAlloc(interp, sizeof(CmdFrame)); @@ -1216,44 +1216,6 @@ TclInfoFrame( ADD_PAIR("cmd", Tcl_NewStringObj(fPtr->cmd.str.cmd, fPtr->cmd.str.len)); - - if (procPtr != NULL) { - Tcl_HashEntry *namePtr = procPtr->cmdPtr->hPtr; - - if (namePtr) { - /* - * This is a regular command. - */ - - char *procName = Tcl_GetHashKey(namePtr->tablePtr, namePtr); - char *nsName = procPtr->cmdPtr->nsPtr->fullName; - - ADD_PAIR("proc", Tcl_NewStringObj(nsName, -1)); - - if (strcmp(nsName, "::") != 0) { - Tcl_AppendToObj(lv[lc-1], "::", -1); - } - Tcl_AppendToObj(lv[lc-1], procName, -1); - } else if (procPtr->cmdPtr->clientData) { - ExtraFrameInfo *efiPtr = procPtr->cmdPtr->clientData; - int i; - - /* - * This is a non-standard command. Luckily, it's told us how - * to render extra information about its frame. - */ - - for (i=0 ; ilength ; i++) { - lv[lc++] = Tcl_NewStringObj(efiPtr->fields[i].name, -1); - if (efiPtr->fields[i].proc) { - lv[lc++] = efiPtr->fields[i].proc( - efiPtr->fields[i].clientData); - } else { - lv[lc++] = efiPtr->fields[i].clientData; - } - } - } - } TclStackFree(interp, fPtr); break; } @@ -1282,6 +1244,49 @@ TclInfoFrame( } /* + * 'proc'. Common to all frame types. Conditional on having an associated + * Procedure CallFrame. + */ + + if (procPtr != NULL) { + Tcl_HashEntry *namePtr = procPtr->cmdPtr->hPtr; + + if (namePtr) { + /* + * This is a regular command. + */ + + char *procName = Tcl_GetHashKey(namePtr->tablePtr, namePtr); + char *nsName = procPtr->cmdPtr->nsPtr->fullName; + + ADD_PAIR("proc", Tcl_NewStringObj(nsName, -1)); + + if (strcmp(nsName, "::") != 0) { + Tcl_AppendToObj(lv[lc-1], "::", -1); + } + Tcl_AppendToObj(lv[lc-1], procName, -1); + } else if (procPtr->cmdPtr->clientData) { + ExtraFrameInfo *efiPtr = procPtr->cmdPtr->clientData; + int i; + + /* + * This is a non-standard command. Luckily, it's told us how to + * render extra information about its frame. + */ + + for (i=0 ; ilength ; i++) { + lv[lc++] = Tcl_NewStringObj(efiPtr->fields[i].name, -1); + if (efiPtr->fields[i].proc) { + lv[lc++] = + efiPtr->fields[i].proc(efiPtr->fields[i].clientData); + } else { + lv[lc++] = efiPtr->fields[i].clientData; + } + } + } + } + + /* * 'level'. Common to all frame types. Conditional on having an associated * _visible_ CallFrame. */ diff --git a/tests/info.test b/tests/info.test index a6fa48d..63b8a79 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.47 2007/12/13 15:26:06 dgp Exp $ +# RCS: @(#) $Id: info.test,v 1.47.2.1 2008/06/16 20:44:32 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -748,13 +748,13 @@ test info-22.2 {info frame, bad level absolute} {!singleTestInterp} { } {bad level "9"} test info-22.3 {info frame, current, relative} { info frame 0 -} {type eval line 2 cmd {info frame 0}} +} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} test info-22.4 {info frame, current, relative, nested} { set res [info frame 0] -} {type eval line 2 cmd {info frame 0}} +} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} test info-22.5 {info frame, current, absolute} {!singleTestInterp} { reduce [info frame 7] -} {type eval line 2 cmd {info frame 7}} +} {type eval line 2 cmd {info frame 7} proc ::tcltest::RunTest} test info-22.6 {info frame, global, relative} {!singleTestInterp} { reduce [info frame -6] } {type source line 758 file info.test cmd test\ info-22.6\ \{info\ frame,\ global,\ relative\}\ \{!singleTestInter level 0} @@ -787,14 +787,14 @@ test info-23.3 {eval'd info frame, literal} { eval { info frame 0 } -} {type eval line 2 cmd {info frame 0}} +} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} test info-23.4 {eval'd info frame, semi-dynamic} { eval info frame 0 -} {type eval line 1 cmd {info frame 0}} +} {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} test info-23.5 {eval'd info frame, dynamic} { set script {info frame 0} eval $script -} {type eval line 1 cmd {info frame 0}} +} {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} test info-23.6 {eval'd info frame, trace} {knownBug !singleTestInterp} { set script {etrace} join [eval $script] \n @@ -982,7 +982,7 @@ test info-31.5 {for, script in variable} { test info-31.6 {eval, script in variable} { eval $body set res -} {type eval line 3 cmd {info frame 0}} +} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} # ------------------------------------------------------------------------- -- cgit v0.12 From 1922e1e0453740ff32919883b05862a382ab33d4 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 16 Jun 2008 20:46:13 +0000 Subject: * generic/tclCmdIL.c (InfoFrameCmd): Backport of fix made on the * tests/info.test: head branch :: Moved the code looking up the information for key 'proc' out of the TCL_LOCATION_BC branch to after the switch, this is common to all frame types. Updated the testsuite to match. This was exposed by the 2008-06-08 commit (Miguel), switching uplevel from direct eval to compilation. Fixes [Bug 1987851]. --- ChangeLog | 10 ++++++++++ generic/tclCmdIL.c | 56 +++++++++++++++++++++++++++++------------------------- tests/info.test | 30 ++++++++++++++--------------- 3 files changed, 55 insertions(+), 41 deletions(-) diff --git a/ChangeLog b/ChangeLog index 27b5b16..e86606f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-06-16 Andreas Kupries + + * generic/tclCmdIL.c (InfoFrameCmd): Backport of fix made on the + * tests/info.test: head branch :: Moved the code looking up the + information for key 'proc' out of the TCL_LOCATION_BC branch to + after the switch, this is common to all frame types. Updated the + testsuite to match. This was exposed by the 2008-06-08 commit + (Miguel), switching uplevel from direct eval to compilation. Fixes + [Bug 1987851]. + 2008-06-12 Andreas Kupries * generic/tclCmdIL.c (InfoFrameCmd): TIP #280 conditional diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index d7f1d5b..861a008 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.13 2008/06/12 20:19:29 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.14 2008/06/16 20:46:15 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1130,6 +1130,8 @@ InfoFrameCmd(dummy, interp, objc, objv) "eval", "eval", "eval", "precompiled", "source", "proc" }; + Proc* procPtr = framePtr->framePtr ? framePtr->framePtr->procPtr : NULL; + switch (framePtr->type) { case TCL_LOCATION_EVAL: /* Evaluation, dynamic script. Type, line, cmd, the latter @@ -1175,8 +1177,7 @@ InfoFrameCmd(dummy, interp, objc, objv) /* Execution of bytecode. Talk to the BC engine to fill out * the frame. */ - CmdFrame f = *framePtr; - Proc* procPtr = f.framePtr ? f.framePtr->procPtr : NULL; + CmdFrame f = *framePtr; /* Note: Type BC => f.data.eval.path is not used. * f.data.tebc.codePtr is used instead. @@ -1200,29 +1201,6 @@ InfoFrameCmd(dummy, interp, objc, objv) lv [lc ++] = Tcl_NewStringObj ("cmd",-1); lv [lc ++] = Tcl_NewStringObj (f.cmd.str.cmd, f.cmd.str.len); - - if (procPtr != NULL) { - Tcl_HashEntry* namePtr = procPtr->cmdPtr->hPtr; - /* - * ITcl seems to provide us with weird, maybe bogus - * Command structures (methods?) which may have no - * HashEntry pointing to the name information, or a - * HashEntry without owning HashTable. Therefore check - * again that our data is valid. - */ - if (namePtr && namePtr->tablePtr) { - char* procName = Tcl_GetHashKey (namePtr->tablePtr, namePtr); - char* nsName = procPtr->cmdPtr->nsPtr->fullName; - - lv [lc ++] = Tcl_NewStringObj ("proc",-1); - lv [lc ++] = Tcl_NewStringObj (nsName,-1); - - if (strcmp (nsName, "::") != 0) { - Tcl_AppendToObj (lv [lc-1], "::", -1); - } - Tcl_AppendToObj (lv [lc-1], procName, -1); - } - } break; } @@ -1248,6 +1226,32 @@ InfoFrameCmd(dummy, interp, objc, objv) break; } + /* + * 'proc'. Common to all frame types. Conditional on having an + * associated Procedure CallFrame. + */ + + if (procPtr != NULL) { + Tcl_HashEntry* namePtr = procPtr->cmdPtr->hPtr; + /* + * ITcl seems to provide us with weird, maybe bogus Command + * structures (methods?) which may have no HashEntry pointing + * to the name information, or a HashEntry without owning + * HashTable. Therefore check again that our data is valid. + */ + if (namePtr && namePtr->tablePtr) { + char* procName = Tcl_GetHashKey (namePtr->tablePtr, namePtr); + char* nsName = procPtr->cmdPtr->nsPtr->fullName; + + lv [lc ++] = Tcl_NewStringObj ("proc",-1); + lv [lc ++] = Tcl_NewStringObj (nsName,-1); + + if (strcmp (nsName, "::") != 0) { + Tcl_AppendToObj (lv [lc-1], "::", -1); + } + Tcl_AppendToObj (lv [lc-1], procName, -1); + } + } /* 'level'. Common to all frame types. Conditional on having an * associated _visible_ CallFrame */ diff --git a/tests/info.test b/tests/info.test index 3c300dc..22ed8ca 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.5 2006/11/28 22:20:02 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.6 2008/06/16 20:46:16 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -746,15 +746,15 @@ test info-22.2 {info frame, bad level absolute} tip280 { test info-22.3 {info frame, current, relative} tip280 { info frame 0 -} {type eval line 2 cmd {info frame 0}} +} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} test info-22.4 {info frame, current, relative, nested} tip280 { set res [info frame 0] -} {type eval line 2 cmd {info frame 0}} +} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} test info-22.5 {info frame, current, absolute} tip280 { reduce [info frame 7] -} {type eval line 2 cmd {info frame 7}} +} {type eval line 2 cmd {info frame 7} proc ::tcltest::RunTest} test info-22.6 {info frame, global, relative} tip280 { reduce [info frame -6] @@ -767,11 +767,11 @@ test info-22.7 {info frame, global, absolute} tip280 { test info-22.8 {info frame, basic trace} tip280 { join [etrace] \n } {8 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -7 {type eval line 2 cmd etrace} +7 {type eval line 2 cmd etrace proc ::tcltest::RunTest} 6 {type source line 2277 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} -5 {type eval line 1 cmd {::tcltest::RunTest }} +5 {type eval line 1 cmd {::tcltest::RunTest } proc ::tcltest::Eval} 4 {type source line 1619 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ } +3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ proc ::tcltest::test} 2 {type source line 1966 file tcltest.tcl cmd {uplevel 1 [list [namespace origin Eval] $command 1]} proc ::tcltest::test} 1 {type source line 767 file info.test cmd test\ info-22.8\ \{info\ frame,\ basic\ trac}} ## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 @@ -792,27 +792,27 @@ test info-23.3 {eval'd info frame, literal} tip280 { eval { info frame 0 } -} {type eval line 2 cmd {info frame 0}} +} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} test info-23.4 {eval'd info frame, semi-dynamic} tip280 { eval info frame 0 -} {type eval line 1 cmd {info frame 0}} +} {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} test info-23.5 {eval'd info frame, dynamic} tip280 { set script {info frame 0} eval $script -} {type eval line 1 cmd {info frame 0}} +} {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} test info-23.6 {eval'd info frame, trace} tip280 { set script {etrace} join [eval $script] \n } {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -8 {type eval line 1 cmd etrace} -7 {type eval line 3 cmd {eval $script}} +8 {type eval line 1 cmd etrace proc ::tcltest::RunTest} +7 {type eval line 3 cmd {eval $script} proc ::tcltest::RunTest} 6 {type source line 2277 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} -5 {type eval line 1 cmd {::tcltest::RunTest }} +5 {type eval line 1 cmd {::tcltest::RunTest } proc ::tcltest::Eval} 4 {type source line 1619 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ } +3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ proc ::tcltest::test} 2 {type source line 1966 file tcltest.tcl cmd {uplevel 1 [list [namespace origin Eval] $command 1]} proc ::tcltest::test} 1 {type source line 806 file info.test cmd test\ info-23.6\ \{eval'd\ info\ frame,\ trac}} ## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 @@ -990,7 +990,7 @@ test info-31.5 {for, script in variable} tip280 { test info-31.6 {eval, script in variable} tip280 { eval $body set res -} {type eval line 3 cmd {info frame 0}} +} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} # ------------------------------------------------------------------------- -- cgit v0.12 From 5f6aa5eb4d8d30dde07c05db427c8934b2c31dff Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 17 Jun 2008 02:22:26 +0000 Subject: 2006-06-17 Kevin Kenny * generic/tclClock.c (ConvertLocalToUTC): * tests/clock.test (clock-63.1): Fixed a bug where the internal ConvertLocalToUTC command segfaulted if passed a dictionary without the 'localSeconds' key. To the best of my knowledge, the bug was not observable in the [clock] command itself. --- ChangeLog | 9 +++++++++ generic/tclClock.c | 22 +++++++++++++++------- tests/clock.test | 10 +++++++++- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index e79000e..70686ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-06-17 Kevin Kenny + + * generic/tclClock.c (ConvertLocalToUTC): + * tests/clock.test (clock-63.1): Fixed a bug where the + internal ConvertLocalToUTC command segfaulted if passed a + dictionary without the 'localSeconds' key. To the best of + my knowledge, the bug was not observable in the [clock] + command itself. + 2008-06-16 Andreas Kupries * generic/tclCmdIL.c (TclInfoFrame): Backport of fix made on the diff --git a/generic/tclClock.c b/generic/tclClock.c index 12c2e64..53edf55 100644 --- a/generic/tclClock.c +++ b/generic/tclClock.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclClock.c,v 1.66 2008/02/27 02:08:27 kennykb Exp $ + * RCS: @(#) $Id: tclClock.c,v 1.66.2.1 2008/06/17 02:22:26 kennykb Exp $ */ #include "tclInt.h" @@ -333,12 +333,20 @@ ClockConvertlocaltoutcObjCmd( return TCL_ERROR; } dict = objv[1]; - if ((Tcl_DictObjGet(interp, dict, literals[LIT_LOCALSECONDS], - &secondsObj) != TCL_OK) - || (Tcl_GetWideIntFromObj(interp, secondsObj, - &(fields.localSeconds)) != TCL_OK) - || (TclGetIntFromObj(interp, objv[3], &changeover) != TCL_OK) - || ConvertLocalToUTC(interp, &fields, objv[2], changeover)) { + if (Tcl_DictObjGet(interp, dict, literals[LIT_LOCALSECONDS], + &secondsObj)!= TCL_OK) { + fprintf(stderr, "fell out here\n"); fflush(stderr); + return TCL_ERROR; + } + if (secondsObj == NULL) { + Tcl_SetObjResult(interp, Tcl_NewStringObj("key \"localseconds\" not " + "found in dictionary", -1)); + return TCL_ERROR; + } + if ((Tcl_GetWideIntFromObj(interp, secondsObj, + &(fields.localSeconds)) != TCL_OK) + || (TclGetIntFromObj(interp, objv[3], &changeover) != TCL_OK) + || ConvertLocalToUTC(interp, &fields, objv[2], changeover)) { return TCL_ERROR; } diff --git a/tests/clock.test b/tests/clock.test index e3b3f85..cb7c4a1 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.83.2.1 2008/04/14 18:04:40 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.83.2.2 2008/06/17 02:22:26 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36636,6 +36636,14 @@ test clock-62.1 {Bug 1902423} {*}{ -result ok } +test clock-63.1 {Incorrect use of internal ConvertLocalToUTC command} {*}{ + -body { + ::tcl::clock::ConvertLocalToUTC {immaterial stuff} {} 12345 + } + -returnCodes error + -result {key "localseconds" not found in dictionary} +} + # cleanup namespace delete ::testClock -- cgit v0.12 From 596134043eb4089998e639c4794777f28fb49ed1 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 17 Jun 2008 16:45:26 +0000 Subject: * doc/tm.n: Followup to changelog entry 2008-03-18 regarding ::tcl::tm::Defaults. Updated the documentation to not only mention the new (underscored) form of environment variable names, but make it the encouraged form as well. See [Bug 1914604]. --- ChangeLog | 7 +++++++ doc/tm.n | 25 ++++++++++++++++--------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 70686ab..48811c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-06-17 Andreas Kupries + + * doc/tm.n: Followup to changelog entry 2008-03-18 regarding + ::tcl::tm::Defaults. Updated the documentation to not only mention + the new (underscored) form of environment variable names, but make + it the encouraged form as well. See [Bug 1914604]. + 2006-06-17 Kevin Kenny * generic/tclClock.c (ConvertLocalToUTC): diff --git a/doc/tm.n b/doc/tm.n index 4956012..470432a 100644 --- a/doc/tm.n +++ b/doc/tm.n @@ -1,10 +1,10 @@ '\" -'\" Copyright (c) 2004 Andreas Kupries +'\" Copyright (c) 2004-2008 Andreas Kupries '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tm.n,v 1.14 2008/01/18 15:59:22 dkf Exp $ +'\" RCS: @(#) $Id: tm.n,v 1.14.2.1 2008/06/17 16:45:26 andreas_kupries Exp $ '\" .so man.macros .TH tm n 8.5 Tcl "Tcl Built-In Commands" @@ -256,13 +256,20 @@ Note that this is always a single entry because \fIX\fR is always a specific value (the current major version of Tcl). .SS "USER SPECIFIC PATHS" .TP -\fB$::env(TCL\fIX\fB.\fIy\fB_TM_PATH)\fR +\fB$::env(TCL\fIX\fB_\fIy\fB_TM_PATH)\fR . A list of paths, separated by either \fB:\fR (Unix) or \fB;\fR (Windows). This is user and site specific as this environment variable can be set not only by the user's profile, but by system configuration scripts as well. -.RS +.TP +\fB$::env(TCL\fIX\fB.\fIy\fB_TM_PATH)\fR +. +Same meaning and content as the previous variable. However the use of +dot '.' to separate major and minor version number makes this name +less to non-portable and its use is discouraged. Support of this +variable has been kept only for backward compatibility with the +original specification, i.e. TIP 189. .PP These paths are seen and therefore shared by all Tcl shells in the \fB$::env(PATH)\fR of the user. @@ -271,11 +278,11 @@ Note that \fIX\fR and \fIy\fR follow the general rules set out above. In other words, Tcl 8.4, for example, will look at these 5 environment variables: .CS -\fB$::env(TCL8.4_TM_PATH)\fR -\fB$::env(TCL8.3_TM_PATH)\fR -\fB$::env(TCL8.2_TM_PATH)\fR -\fB$::env(TCL8.1_TM_PATH)\fR -\fB$::env(TCL8.0_TM_PATH)\fR +\fB$::env(TCL8.4_TM_PATH)\fR \fB$::env(TCL8_4_TM_PATH)\fR +\fB$::env(TCL8.3_TM_PATH)\fR \fB$::env(TCL8_3_TM_PATH)\fR +\fB$::env(TCL8.2_TM_PATH)\fR \fB$::env(TCL8_2_TM_PATH)\fR +\fB$::env(TCL8.1_TM_PATH)\fR \fB$::env(TCL8_1_TM_PATH)\fR +\fB$::env(TCL8.0_TM_PATH)\fR \fB$::env(TCL8_0_TM_PATH)\fR .CE .RE .SH "SEE ALSO" -- cgit v0.12 From b09527a147790a251485c2848bf6c92dde70f38d Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 17 Jun 2008 17:21:35 +0000 Subject: * generic/tclClock.c (ClockConvertlocaltoutcObjCmd): Removed left over debug output. --- ChangeLog | 5 +++++ generic/tclClock.c | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 48811c7..be64b8c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2008-06-17 Andreas Kupries + * generic/tclClock.c (ClockConvertlocaltoutcObjCmd): Removed left + over debug output. + +2008-06-17 Andreas Kupries + * doc/tm.n: Followup to changelog entry 2008-03-18 regarding ::tcl::tm::Defaults. Updated the documentation to not only mention the new (underscored) form of environment variable names, but make diff --git a/generic/tclClock.c b/generic/tclClock.c index 53edf55..b123748 100644 --- a/generic/tclClock.c +++ b/generic/tclClock.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclClock.c,v 1.66.2.1 2008/06/17 02:22:26 kennykb Exp $ + * RCS: @(#) $Id: tclClock.c,v 1.66.2.2 2008/06/17 17:21:38 andreas_kupries Exp $ */ #include "tclInt.h" @@ -335,7 +335,6 @@ ClockConvertlocaltoutcObjCmd( dict = objv[1]; if (Tcl_DictObjGet(interp, dict, literals[LIT_LOCALSECONDS], &secondsObj)!= TCL_OK) { - fprintf(stderr, "fell out here\n"); fflush(stderr); return TCL_ERROR; } if (secondsObj == NULL) { -- cgit v0.12 From e7043db7ef76cb0f0ff1cad93f68788000644560 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 18 Jun 2008 21:18:55 +0000 Subject: * generic/tclParseExpr.c: Disabled attempts to support [expr] functions named eq(...) or ne(...). Any attempts to use such functions were panicking. [Bug 1971879]. --- ChangeLog | 8 +++++++- generic/tclParseExpr.c | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e86606f..41df0fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-06-18 Don Porter + + * generic/tclParseExpr.c: Disabled attempts to support [expr] + functions named eq(...) or ne(...). Any attempts to use such + functions were panicking. [Bug 1971879]. + 2008-06-16 Andreas Kupries * generic/tclCmdIL.c (InfoFrameCmd): Backport of fix made on the @@ -44,7 +50,7 @@ 2008-04-26 Zoran Vasiljevic * generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt - to locate handler token fails. Happens when some other + to locate handler token fails. Happens when some other thread attempts to delete somebody else's token. Also, panic early if we find out the wrong thread attempting diff --git a/generic/tclParseExpr.c b/generic/tclParseExpr.c index a1f9d78..0f4f290 100644 --- a/generic/tclParseExpr.c +++ b/generic/tclParseExpr.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParseExpr.c,v 1.17.2.2 2005/05/20 17:19:10 vasiljevic Exp $ + * RCS: @(#) $Id: tclParseExpr.c,v 1.17.2.3 2008/06/18 21:18:56 dgp Exp $ */ #include "tclInt.h" @@ -1369,8 +1369,14 @@ ParsePrimaryExpr(infoPtr) } break; +/* + * Disable attempt to support functions named "eq" or "ne". This + * is unworkable in the Tcl 8.4.* releases. See Tcl Bugs 1971879 + * and 1201589. + * case STREQ: case STRNEQ: +*/ case FUNC_NAME: { /* * math_func '(' expr {',' expr} ')' -- cgit v0.12 From 1ea4ba3cdd99b4c13ce007797acebe2298dfab73 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 19 Jun 2008 19:29:15 +0000 Subject: * changes: Updates for 8.5.3 release. --- ChangeLog | 4 ++++ changes | 24 +++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index be64b8c..ec4546d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-06-19 Don Porter + + * changes: Updates for 8.5.3 release. + 2008-06-17 Andreas Kupries * generic/tclClock.c (ClockConvertlocaltoutcObjCmd): Removed left diff --git a/changes b/changes index 22a2a95..65cfb1b 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136 2008/03/28 16:45:36 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.1 2008/06/19 19:29:16 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7190,3 +7190,25 @@ variables without "." added to customization hooks (kupries) 2008-03-27 clock tzdata updated to Olson's tzdata2008b (kenny) --- Released 8.5.2, March 28, 2008 --- See ChangeLog for details --- + +2008-03-30 (bug fix)[1783544] more robust TclIsNaN() (kenny,teterin) + +2008-04-01 (bug fix)[1839067] FP round fix for Solaris/x86 (kupries,schlenker) + +2008-04-02 (bug fix)[780533,1932639] [fcopy] callbacks unreliable (ferrieux) + +2008-04-04 (bug fix) [chan postevent] crash (kupries) + +2008-04-07 (bug fix) Fix broken [format {% d}] (max) + +2008-04-07 (bug fix)[1350564] Bi-directional [fcopy] now supported (ferrieux) + +2008-05-07 (bug fix) [dict append] crash (mccormack,fellows) + +2008-05-21 (bug fix)[1968882] [info complete "\\\n"] => 0 (porter) + +2008-05-22 (bug fix)[1968245] Tcl_LogCommandInfo() accept length=-1 (darroch) + +2008-05-23 (bug fix)[1965787] 32-bit overflow in [tell] result (ferrieux) + +--- Released 8.5.3, June ??, 2008 --- See ChangeLog for details --- -- cgit v0.12 From f0c083ee48e56d7bbe529ee2182271bffce11aad Mon Sep 17 00:00:00 2001 From: das Date: Fri, 20 Jun 2008 13:57:04 +0000 Subject: Solaris changes for 8.5.3 --- changes | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/changes b/changes index 65cfb1b..e9a55f2 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.1 2008/06/19 19:29:16 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.2 2008/06/20 13:57:04 das Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7211,4 +7211,8 @@ variables without "." added to customization hooks (kupries) 2008-05-23 (bug fix)[1965787] 32-bit overflow in [tell] result (ferrieux) +2008-06-12 (platform support) Solaris static build with DTrace (steffen) + +2008-06-12 (platform support) Solaris/amd64 gcc 64bit support (steffen) + --- Released 8.5.3, June ??, 2008 --- See ChangeLog for details --- -- cgit v0.12 From 0cc32b6dffd4788b282213175da265ad8d8edd2b Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 Jun 2008 16:49:09 +0000 Subject: * tests/binary.test: Corrected flawed tests revealed by a -debug 1 * tests/io.test: -singleproc 1 test suite run. --- ChangeLog | 5 +++++ tests/binary.test | 8 +------- tests/io.test | 6 +++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 41df0fe..e7c1544 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-06-20 Don Porter + + * tests/binary.test: Corrected flawed tests revealed by a -debug 1 + * tests/io.test: -singleproc 1 test suite run. + 2008-06-18 Don Porter * generic/tclParseExpr.c: Disabled attempts to support [expr] diff --git a/tests/binary.test b/tests/binary.test index d06907e..ed447f9 100644 --- a/tests/binary.test +++ b/tests/binary.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: binary.test,v 1.11.2.5 2008/03/24 03:05:07 patthoyts Exp $ +# RCS: @(#) $Id: binary.test,v 1.11.2.6 2008/06/20 16:49:10 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -555,12 +555,6 @@ test binary-15.5 {Tcl_BinaryObjCmd: format - bug #1923966} { test binary-15.6 {Tcl_BinaryObjCmd: format - bug #1923966} { binary format x0ss 1 1 } \x01\x00\x01\x00 -test binary-15.5 {Tcl_BinaryObjCmd: format - bug #1923966} { - binary format x0s 1 -} \x01\x00 -test binary-15.6 {Tcl_BinaryObjCmd: format - bug #1923966} { - binary format x0ss 1 1 -} \x01\x00\x01\x00 test binary-15.7 {Tcl_BinaryObjCmd: format - bug #1923966} { binary format x1s 1 } \x00\x01\x00 diff --git a/tests/io.test b/tests/io.test index 2627140..1a0f72e 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.40.2.22 2008/05/26 18:26:15 hobbs Exp $ +# RCS: @(#) $Id: io.test,v 1.40.2.23 2008/06/20 16:49:11 dgp Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7461,8 +7461,8 @@ test io-61.1 {Reset eof state after changing the eof char} -setup { } -result {77 = 23431} # cleanup -foreach file [list fooBar longfile script output test1 pipe my_script foo \ - bar test2 test3 cat stdout kyrillic.txt utf8-fcopy.txt utf8-rp.txt] { +foreach file [list fooBar longfile script output test1 pipe my_script \ + test2 test3 cat stdout kyrillic.txt utf8-fcopy.txt utf8-rp.txt] { removeFile $file } cleanupTests -- cgit v0.12 From f1797e198ccb2c3a784d65272c7eb5d3fa9ca502 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 Jun 2008 19:23:23 +0000 Subject: * generic/tclInterp.c: Fixed completely boneheaded mistake that * tests/interp.test: [interp bgerror $slave] and [$slave bgerror] would always act like [interp bgerror {}]. [Bug 1999035]. * tests/chanio.test: Corrected flawed tests revealed by a -debug 1 * tests/event.test: -singleproc 1 test suite run. * tests/io.test: --- ChangeLog | 10 ++++++++++ generic/tclInterp.c | 6 +++--- tests/chanio.test | 6 +++--- tests/event.test | 4 ++-- tests/interp.test | 25 ++++++++++++++++++++++++- tests/io.test | 6 +++--- 6 files changed, 45 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index ec4546d..9420469 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2008-06-19 Don Porter + * generic/tclInterp.c: Fixed completely boneheaded mistake that + * tests/interp.test: [interp bgerror $slave] and [$slave bgerror] + would always act like [interp bgerror {}]. [Bug 1999035]. + + * tests/chanio.test: Corrected flawed tests revealed by a -debug 1 + * tests/event.test: -singleproc 1 test suite run. + * tests/io.test: + +2008-06-19 Don Porter + * changes: Updates for 8.5.3 release. 2008-06-17 Andreas Kupries diff --git a/generic/tclInterp.c b/generic/tclInterp.c index 1f2921a..78772bd 100644 --- a/generic/tclInterp.c +++ b/generic/tclInterp.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInterp.c,v 1.83 2008/01/30 10:45:55 msofer Exp $ + * RCS: @(#) $Id: tclInterp.c,v 1.83.2.1 2008/06/20 19:23:25 dgp Exp $ */ #include "tclInt.h" @@ -2061,9 +2061,9 @@ SlaveBgerror( NULL); return TCL_ERROR; } - TclSetBgErrorHandler(interp, objv[0]); + TclSetBgErrorHandler(slaveInterp, objv[0]); } - Tcl_SetObjResult(interp, TclGetBgErrorHandler(interp)); + Tcl_SetObjResult(interp, TclGetBgErrorHandler(slaveInterp)); return TCL_OK; } diff --git a/tests/chanio.test b/tests/chanio.test index 4226c45..ce87e94 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: chanio.test,v 1.3.2.10 2008/05/23 21:10:44 andreas_kupries Exp $ +# RCS: @(#) $Id: chanio.test,v 1.3.2.11 2008/06/20 19:23:26 dgp Exp $ if {[catch {package require tcltest 2}]} { chan puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7698,8 +7698,8 @@ test chan-io-73.1 {channel Tcl_Obj SetChannelFromAny} {} { # ### ### ### ######### ######### ######### # cleanup -foreach file [list fooBar longfile script output test1 pipe my_script foo \ - bar test2 test3 cat stdout kyrillic.txt utf8-fcopy.txt utf8-rp.txt] { +foreach file [list fooBar longfile script output test1 pipe my_script \ + test2 test3 cat stdout kyrillic.txt utf8-fcopy.txt utf8-rp.txt] { removeFile $file } cleanupTests diff --git a/tests/event.test b/tests/event.test index bdfad16..5ef3aa2 100644 --- a/tests/event.test +++ b/tests/event.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: event.test,v 1.27 2008/03/10 17:54:47 dgp Exp $ +# RCS: @(#) $Id: event.test,v 1.27.2.1 2008/06/20 19:23:26 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -205,7 +205,7 @@ test event-5.3 {HandleBgErrors: [Bug 1670155]} -setup { rename demo {} rename trial {} } -result {} -test event-5.3 {Default [interp bgerror] handler} -body { +test event-5.3.1 {Default [interp bgerror] handler} -body { ::tcl::Bgerror } -returnCodes error -match glob -result {*msg options*} test event-5.4 {Default [interp bgerror] handler} -body { diff --git a/tests/interp.test b/tests/interp.test index 76d642b..99a979e 100644 --- a/tests/interp.test +++ b/tests/interp.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: interp.test,v 1.54 2008/03/02 19:12:41 msofer Exp $ +# RCS: @(#) $Id: interp.test,v 1.54.2.1 2008/06/20 19:23:26 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -3446,6 +3446,29 @@ test interp-36.6 {SlaveBgerror returns handler} -setup { interp delete slave } -result {foo bar soom} +test interp-36.7 {SlaveBgerror sets error handler of slave [1999035]} -setup { + interp create slave + slave alias handler handler + slave bgerror handler + variable result {untouched} + proc handler {args} { + variable result + set result [lindex $args 0] + } +} -body { + slave eval { + variable done {} + after 0 error foo + after 10 [list ::set [namespace which -variable done] {}] + vwait [namespace which -variable done] + } + set result +} -cleanup { + variable result {} + unset result + interp delete slave +} -result foo + # cleanup foreach i [interp slaves] { interp delete $i diff --git a/tests/io.test b/tests/io.test index 367f0e1..a2aaf7f 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.11 2008/05/26 18:27:53 hobbs Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.12 2008/06/20 19:23:26 dgp Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7698,8 +7698,8 @@ test io-73.1 {channel Tcl_Obj SetChannelFromAny} {} { # ### ### ### ######### ######### ######### # cleanup -foreach file [list fooBar longfile script output test1 pipe my_script foo \ - bar test2 test3 cat stdout kyrillic.txt utf8-fcopy.txt utf8-rp.txt] { +foreach file [list fooBar longfile script output test1 pipe my_script \ + test2 test3 cat stdout kyrillic.txt utf8-fcopy.txt utf8-rp.txt] { removeFile $file } cleanupTests -- cgit v0.12 From f30deabc275ddab26044f09ba7f710650f926feb Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 Jun 2008 19:27:34 +0000 Subject: another update for 8.5.3 --- ChangeLog | 2 ++ changes | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9420469..fe76282 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-06-19 Don Porter + * changes: Update for 8.5.3 release. + * generic/tclInterp.c: Fixed completely boneheaded mistake that * tests/interp.test: [interp bgerror $slave] and [$slave bgerror] would always act like [interp bgerror {}]. [Bug 1999035]. diff --git a/changes b/changes index e9a55f2..b2bd764 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.2 2008/06/20 13:57:04 das Exp $ +RCS: @(#) $Id: changes,v 1.136.2.3 2008/06/20 19:27:37 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7215,4 +7215,6 @@ variables without "." added to customization hooks (kupries) 2008-06-12 (platform support) Solaris/amd64 gcc 64bit support (steffen) +2008-06-20 (bug fix)[1999035] make [interp bgerror $i] act in $i (porter) + --- Released 8.5.3, June ??, 2008 --- See ChangeLog for details --- -- cgit v0.12 From a03ebed0be693c57b441bac89d1d48a77bce0bc4 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 23 Jun 2008 15:43:41 +0000 Subject: * generic/tclIOUtil.c: Fixed bug in Tcl_GetTranslatedPath() when operating on the "Special path" variant of the "path" Tcl_ObjType intrep. A full normalization was getting done, in particular, coercing relative paths to absolute, contrary to what the function of producing the "translated path" is supposed to do. [Bug 1972879]. --- ChangeLog | 8 ++++++++ generic/tclIOUtil.c | 13 +++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e7c1544..7a2e266 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-06-23 Don Porter + + * generic/tclIOUtil.c: Fixed bug in Tcl_GetTranslatedPath() when + operating on the "Special path" variant of the "path" Tcl_ObjType + intrep. A full normalization was getting done, in particular, coercing + relative paths to absolute, contrary to what the function of + producing the "translated path" is supposed to do. [Bug 1972879]. + 2008-06-20 Don Porter * tests/binary.test: Corrected flawed tests revealed by a -debug 1 diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index aae1e84..19a7729 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.35 2007/12/14 02:29:21 hobbs Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.36 2008/06/23 15:43:42 dgp Exp $ */ #include "tclInt.h" @@ -5434,7 +5434,16 @@ Tcl_FSGetTranslatedPath(interp, pathPtr) srcFsPathPtr = (FsPath*) PATHOBJ(pathPtr); if (srcFsPathPtr->translatedPathPtr == NULL) { if (PATHFLAGS(pathPtr) != 0) { - retObj = Tcl_FSGetNormalizedPath(interp, pathPtr); + /* + * We lack a translated path result, but we have a directory + * (cwdPtr) and a tail (normPathPtr), and if we join the + * translated version of cwdPtr to normPathPtr, we'll get the + * translated result we need, and can store it for future use. + */ + retObj = Tcl_FSJoinToPath(Tcl_FSGetTranslatedPath(interp, + srcFsPathPtr->cwdPtr), 1, &(srcFsPathPtr->normPathPtr)); + srcFsPathPtr->translatedPathPtr = retObj; + Tcl_IncrRefCount(retObj); } else { /* * It is a pure absolute, normalized path object. -- cgit v0.12 From 3cc800cc721ae0225b5c3f75e72d2b5bea69a6d8 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 23 Jun 2008 15:45:39 +0000 Subject: formatting --- generic/tclIOUtil.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 19a7729..0f2f373 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.36 2008/06/23 15:43:42 dgp Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.37 2008/06/23 15:45:39 dgp Exp $ */ #include "tclInt.h" @@ -5441,7 +5441,7 @@ Tcl_FSGetTranslatedPath(interp, pathPtr) * translated result we need, and can store it for future use. */ retObj = Tcl_FSJoinToPath(Tcl_FSGetTranslatedPath(interp, - srcFsPathPtr->cwdPtr), 1, &(srcFsPathPtr->normPathPtr)); + srcFsPathPtr->cwdPtr), 1, &(srcFsPathPtr->normPathPtr)); srcFsPathPtr->translatedPathPtr = retObj; Tcl_IncrRefCount(retObj); } else { -- cgit v0.12 From 40f6f2371271e33ceba3d339ba85be1fbdc037a0 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 23 Jun 2008 15:48:01 +0000 Subject: * generic/tclPathObj.c: Fixed bug in Tcl_GetTranslatedPath() when operating on the "Special path" variant of the "path" Tcl_ObjType intrep. A full normalization was getting done, in particular, coercing relative paths to absolute, contrary to what the function of producing the "translated path" is supposed to do. [Bug 1972879]. --- ChangeLog | 8 ++++++++ generic/tclPathObj.c | 13 +++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index fe76282..770174f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-06-23 Don Porter + + * generic/tclPathObj.c: Fixed bug in Tcl_GetTranslatedPath() when + operating on the "Special path" variant of the "path" Tcl_ObjType + intrep. A full normalization was getting done, in particular, coercing + relative paths to absolute, contrary to what the function of + producing the "translated path" is supposed to do. [Bug 1972879]. + 2008-06-19 Don Porter * changes: Update for 8.5.3 release. diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index a29e86c..94240f7 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66 2007/12/13 15:23:20 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.1 2008/06/23 15:48:02 dgp Exp $ */ #include "tclInt.h" @@ -1596,7 +1596,16 @@ Tcl_FSGetTranslatedPath( srcFsPathPtr = PATHOBJ(pathPtr); if (srcFsPathPtr->translatedPathPtr == NULL) { if (PATHFLAGS(pathPtr) != 0) { - retObj = Tcl_FSGetNormalizedPath(interp, pathPtr); + /* + * We lack a translated path result, but we have a directory + * (cwdPtr) and a tail (normPathPtr), and if we join the + * translated version of cwdPtr to normPathPtr, we'll get the + * translated result we need, and can store it for future use. + */ + retObj = Tcl_FSJoinToPath(Tcl_FSGetTranslatedPath(interp, + srcFsPathPtr->cwdPtr), 1, &(srcFsPathPtr->normPathPtr)); + srcFsPathPtr->translatedPathPtr = retObj; + Tcl_IncrRefCount(retObj); } else { /* * It is a pure absolute, normalized path object. This is -- cgit v0.12 From c820615a4044a2e66526fddb735e239763ad368a Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 24 Jun 2008 20:05:58 +0000 Subject: * generic/tclPathObj.c: Fixed some internals management in the "path" Tcl_ObjType for the empty string value. Problem led to a crash in the command [glob -dir {} a]. [Bug 1999176]. --- ChangeLog | 6 ++++++ generic/tclPathObj.c | 27 +++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 770174f..7dff4b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-06-24 Don Porter + + * generic/tclPathObj.c: Fixed some internals management in the "path" + Tcl_ObjType for the empty string value. Problem led to a crash in + the command [glob -dir {} a]. [Bug 1999176]. + 2008-06-23 Don Porter * generic/tclPathObj.c: Fixed bug in Tcl_GetTranslatedPath() when diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index 94240f7..e3006bf 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.1 2008/06/23 15:48:02 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.2 2008/06/24 20:05:58 dgp Exp $ */ #include "tclInt.h" @@ -1768,6 +1768,16 @@ Tcl_FSGetNormalizedPath( if (pathType == TCL_PATH_RELATIVE) { Tcl_Obj *origDir = fsPathPtr->cwdPtr; + + /* + * NOTE: here we are (dangerously?) assuming that origDir points + * to a Tcl_Obj with Tcl_ObjType == &tclFsPathType . The + * pathType = Tcl_FSGetPathType(fsPathPtr->cwdPtr); + * above that set the pathType value should have established + * that, but it's far less clear on what basis we know there's + * been no shimmering since then. + */ + FsPath *origDirFsPathPtr = PATHOBJ(origDir); fsPathPtr->cwdPtr = origDirFsPathPtr->cwdPtr; @@ -1881,7 +1891,20 @@ Tcl_FSGetNormalizedPath( * might loop back through here. */ - if (path[0] != '\0') { + if (path[0] == '\0') { + /* + * Special handling for the empty string value. This one is + * very weird with [file normalize {}] => {}. (The reasoning + * supporting this is unknown to DGP, but he fears changing it.) + * Attempt here to keep the expectations of other parts of + * Tcl_Filesystem code about state of the FsPath fields satisfied. + * + * In particular, capture the cwd value and save so it can be + * stored in the cwdPtr field below. + */ + useThisCwd = Tcl_FSGetCwd(interp); + + } else { /* * We don't ask for the type of 'pathPtr' here, because that is * not correct for our purposes when we have a path like '~'. Tcl -- cgit v0.12 From a7b4211c86a0b013b89aa1e1065734d0144ade64 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 25 Jun 2008 10:57:40 +0000 Subject: Backported fix for dde/registry versions and the staticpkg build option --- ChangeLog | 5 +++++ win/makefile.vc | 28 ++++++++++++++++++++++------ win/rules.vc | 23 ++++++++++++++++++----- 3 files changed, 45 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7dff4b6..d696b97 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-06-25 Pat Thoyts + + * win/rules.vc: Backported fix for dde/registry versions and + * win/makefile.vc: the staticpkg build option + 2008-06-24 Don Porter * generic/tclPathObj.c: Fixed some internals management in the "path" diff --git a/win/makefile.vc b/win/makefile.vc index 43cd63e..aba5e68 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -1,4 +1,4 @@ -#------------------------------------------------------------------------------ +#------------------------------------------------------------- -*- makefile -*- # makefile.vc -- # # Microsoft Visual C++ makefile for use with nmake.exe v1.62+ (VC++ 5.0+) @@ -10,9 +10,10 @@ # Copyright (c) 1998-2000 Ajuba Solutions. # Copyright (c) 2001-2005 ActiveState Corporation. # Copyright (c) 2001-2004 David Gravereaux. +# Copyright (c) 2003-2008 Pat Thoyts. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.175 2007/12/14 02:27:11 patthoyts Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.175.2.1 2008/06/25 10:57:54 patthoyts Exp $ #------------------------------------------------------------------------------ # Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) @@ -410,6 +411,9 @@ cdebug = -O2 $(OPTIMIZATIONS) !else cdebug = !endif +!if $(SYMBOLS) +cdebug = $(cdebug) -Zi +!endif !else if "$(MACHINE)" == "IA64" || "$(MACHINE)" == "AMD64" ### Warnings are too many, can't support warnings into errors. cdebug = -Zi -Od $(DEBUGFLAGS) @@ -440,7 +444,8 @@ TCL_DEFINES = -DTCL_PIPE_DLL=\"$(TCLPIPEDLLNAME)\" -DTCL_TOMMATH -DMP_PREC=4 -Di BASE_CFLAGS = $(cflags) $(cdebug) $(crt) $(TCL_INCLUDES) $(TCL_DEFINES) CON_CFLAGS = $(cflags) $(cdebug) $(crt) -DCONSOLE TCL_CFLAGS = $(BASE_CFLAGS) $(OPTDEFINES) -STUB_CFLAGS = $(cflags) $(cdebug) $(OPTDEFINES) +### Stubs files should not be compiled with -GL +STUB_CFLAGS = $(cflags) $(cdebug:-GL=) $(OPTDEFINES) #--------------------------------------------------------------------- @@ -451,6 +456,9 @@ STUB_CFLAGS = $(cflags) $(cdebug) $(OPTDEFINES) ldebug = -debug:full -debugtype:cv !else ldebug = -release -opt:ref -opt:icf,3 +!if $(SYMBOLS) +ldebug = $(ldebug) -debug:full -debugtype:cv +!endif !endif ### Declarations common to all linker options @@ -525,7 +533,7 @@ test: setup $(TCLTEST) dlls $(CAT32) runtest: setup $(TCLTEST) dlls $(CAT32) set TCL_LIBRARY=$(ROOT)/library - $(TCLTEST) + $(DEBUGGER) $(TCLTEST) setup: @if not exist $(OUT_DIR)\nul mkdir $(OUT_DIR) @@ -566,7 +574,9 @@ $(TCLPIPEDLL): $(WINDIR)\stub16.c $(_VC_MANIFEST_EMBED_DLL) !if $(STATIC_BUILD) -!if !$(TCL_USE_STATIC_PACKAGES) +!if $(TCL_USE_STATIC_PACKAGES) +$(TCLDDELIB): +!else $(TCLDDELIB): $(TMP_DIR)\tclWinDde.obj $(lib32) -nologo -out:$@ $(TMP_DIR)\tclWinDde.obj !endif @@ -580,7 +590,9 @@ $(TCLDDELIB): $(TMP_DIR)\tclWinDde.obj $(TCLSTUBLIB) !endif !if $(STATIC_BUILD) -!if !$(TCL_USE_STATIC_PACKAGES) +!if $(TCL_USE_STATIC_PACKAGES) +$(TCLREGLIB): +!else $(TCLREGLIB): $(TMP_DIR)\tclWinReg.obj $(lib32) -nologo -out:$@ $(TMP_DIR)\tclWinReg.obj !endif @@ -985,7 +997,9 @@ install-libraries: tclConfig install-msgs install-tzdata "$(SCRIPT_INSTALL_DIR)\..\tcl8\8.4\platform\shell-$(PKG_SHELL_VER).tm" @echo Installing $(TCLDDELIBNAME) !if $(STATIC_BUILD) +!if !$(TCL_USE_STATIC_PACKAGES) @$(CPY) "$(TCLDDELIB)" "$(LIB_INSTALL_DIR)\" +!endif !else @$(CPY) "$(TCLDDELIB)" "$(LIB_INSTALL_DIR)\dde$(DDEDOTVERSION)\" @$(CPY) "$(ROOT)\library\dde\pkgIndex.tcl" \ @@ -993,7 +1007,9 @@ install-libraries: tclConfig install-msgs install-tzdata !endif @echo Installing $(TCLREGLIBNAME) !if $(STATIC_BUILD) +!if !$(TCL_USE_STATIC_PACKAGES) @$(CPY) "$(TCLREGLIB)" "$(LIB_INSTALL_DIR)\" +!endif !else @$(CPY) "$(TCLREGLIB)" "$(LIB_INSTALL_DIR)\reg$(REGDOTVERSION)\" @$(CPY) "$(ROOT)\library\reg\pkgIndex.tcl" \ diff --git a/win/rules.vc b/win/rules.vc index 83a82b9..1eebd83 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -11,7 +11,7 @@ # Copyright (c) 2003-2007 Patrick Thoyts # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: rules.vc,v 1.35 2007/12/13 15:28:43 dgp Exp $ +# RCS: @(#) $Id: rules.vc,v 1.35.2.1 2008/06/25 10:57:54 patthoyts Exp $ #------------------------------------------------------------------------------ !ifndef _RULES_VC @@ -214,6 +214,7 @@ _VC_MANIFEST_EMBED_DLL=if exist $@.manifest mt -nologo -manifest $@.manifest -ou STATIC_BUILD = 0 TCL_THREADS = 0 DEBUG = 0 +SYMBOLS = 0 PROFILE = 0 MSVCRT = 0 LOIMPACT = 0 @@ -251,6 +252,12 @@ DEBUG = 1 !else DEBUG = 0 !endif +!if [nmakehlp -f $(OPTS) "pdbs"] +!message *** Doing pdbs +SYMBOLS = 1 +!else +SYMBOLS = 0 +!endif !if [nmakehlp -f $(OPTS) "profile"] !message *** Doing profile PROFILE = 1 @@ -523,6 +530,12 @@ Failed to find tcl.h. The TCLDIR macro does not appear correct. !if [echo PKG_SHELL_VER = \>> versions.vc] \ && [nmakehlp -V ..\library\platform\pkgIndex.tcl "platform::shell" >> versions.vc] !endif +!if [echo PKG_DDE_VER = \>> versions.vc] \ + && [nmakehlp -V ..\library\dde\pkgIndex.tcl "dde " >> versions.vc] +!endif +!if [echo PKG_REG_VER =\>> versions.vc] \ + && [nmakehlp -V ..\library\reg\pkgIndex.tcl registry >> versions.vc] +!endif !endif !include versions.vc @@ -549,8 +562,8 @@ TCLSH = "$(_TCLDIR)\bin\tclsh$(TCL_VERSION)t$(SUFX).exe" TCLSTUBLIB = "$(_TCLDIR)\lib\tclstub$(TCL_VERSION).lib" TCLIMPLIB = "$(_TCLDIR)\lib\tcl$(TCL_VERSION)$(SUFX).lib" TCL_LIBRARY = $(_TCLDIR)\lib -TCLREGLIB = "$(_TCLDIR)\lib\tclreg11$(SUFX:t=).lib" -TCLDDELIB = "$(_TCLDIR)\lib\tcldde12$(SUFX:t=).lib" +TCLREGLIB = "$(_TCLDIR)\lib\tclreg12$(SUFX:t=).lib" +TCLDDELIB = "$(_TCLDIR)\lib\tcldde13$(SUFX:t=).lib" COFFBASE = \must\have\tcl\sources\to\build\this\target TCLTOOLSDIR = \must\have\tcl\sources\to\build\this\target TCL_INCLUDES = -I"$(_TCLDIR)\include" @@ -562,8 +575,8 @@ TCLSH = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclsh$(TCL_VERSION)t$(SUFX).exe" TCLSTUBLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclstub$(TCL_VERSION).lib" TCLIMPLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tcl$(TCL_VERSION)$(SUFX).lib" TCL_LIBRARY = $(_TCLDIR)\library -TCLREGLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclreg11$(SUFX:t=).lib" -TCLDDELIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tcldde12$(SUFX:t=).lib" +TCLREGLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclreg12$(SUFX:t=).lib" +TCLDDELIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tcldde13$(SUFX:t=).lib" COFFBASE = "$(_TCLDIR)\win\coffbase.txt" TCLTOOLSDIR = $(_TCLDIR)\tools TCL_INCLUDES = -I"$(_TCLDIR)\generic" -I"$(_TCLDIR)\win" -- cgit v0.12 From 9236643dd5c1cbe619b563f67eefc3f80b3b7e87 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 25 Jun 2008 16:05:00 +0000 Subject: * changes: Update for 8.5.3 release. --- ChangeLog | 4 ++++ changes | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d696b97..fc798d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-06-25 Don Porter + + * changes: Update for 8.5.3 release. + 2008-06-25 Pat Thoyts * win/rules.vc: Backported fix for dde/registry versions and diff --git a/changes b/changes index b2bd764..e3c129a 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.3 2008/06/20 19:27:37 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.4 2008/06/25 16:05:02 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7217,4 +7217,8 @@ variables without "." added to customization hooks (kupries) 2008-06-20 (bug fix)[1999035] make [interp bgerror $i] act in $i (porter) ---- Released 8.5.3, June ??, 2008 --- See ChangeLog for details --- +2008-06-23 (bug fix)[1972879] bad path intrep caching (porter) + +2008-06-24 (bug fix)[1999176] crash in [glob -dir {} a] (porter) + +--- Released 8.5.3, June 30, 2008 --- See ChangeLog for details --- -- cgit v0.12 From 6fbb4c3a1efe27c05d7bcaac74afe47493148750 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 25 Jun 2008 16:42:02 +0000 Subject: * library/tm.tcl: Modified the handling of Tcl Modules and of the * library/safe.tcl: Safe Base to interact nicely with each other, * library/init.tcl: enabling requiring Tcl Modules in safe interpreters. Fixes [Bug 1999119]. --- ChangeLog | 8 +++ library/init.tcl | 4 +- library/safe.tcl | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++----- library/tm.tcl | 14 ++++-- 4 files changed, 157 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index fc798d3..b71f632 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-06-25 Andreas Kupries + + * library/tm.tcl: Modified the handling of Tcl Modules and of the + * library/safe.tcl: Safe Base to interact nicely with each other, + * library/init.tcl: enabling requiring Tcl Modules in safe + interpreters. Fixes [Bug 1999119]. + 2008-06-25 Don Porter * changes: Update for 8.5.3 release. @@ -13,6 +20,7 @@ Tcl_ObjType for the empty string value. Problem led to a crash in the command [glob -dir {} a]. [Bug 1999176]. +>>>>>>> 1.3975.2.48 2008-06-23 Don Porter * generic/tclPathObj.c: Fixed bug in Tcl_GetTranslatedPath() when diff --git a/library/init.tcl b/library/init.tcl index 306d7d9..63f36ff 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.1 2008/04/11 18:12:29 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.2 2008/06/25 16:42:04 andreas_kupries Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -156,7 +156,7 @@ if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} { if {[interp issafe]} { - package unknown ::tclPkgUnknown + package unknown {::tcl::tm::UnknownHandler ::tclPkgUnknown} } else { # Set up search for Tcl Modules (TIP #189). # and setup platform specific unknown package handlers diff --git a/library/safe.tcl b/library/safe.tcl index 186c2e7..501a552 100644 --- a/library/safe.tcl +++ b/library/safe.tcl @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: safe.tcl,v 1.16 2006/11/03 00:34:52 hobbs Exp $ +# RCS: @(#) $Id: safe.tcl,v 1.16.4.1 2008/06/25 16:42:05 andreas_kupries Exp $ # # The implementation is based on namespaces. These naming conventions @@ -369,12 +369,24 @@ namespace eval ::safe { lappend slave_auto_path "\$[PathToken $i]" incr i } + # Extend the access list with the paths used to look for Tcl + # Modules. We safe the virtual form separately as well, as + # syncing it with the slave has to be defered until the + # necessary commands are present for setup. + foreach dir [::tcl::tm::list] { + lappend access_path $dir + Set [PathToken $i $slave] $dir + lappend slave_auto_path "\$[PathToken $i]" + lappend slave_tm_path "\$[PathToken $i]" + incr i + } + Set [TmPathListName $slave] $slave_tm_path Set $nname $i - Set [PathListName $slave] $access_path + Set [PathListName $slave] $access_path Set [VirtualPathListName $slave] $slave_auto_path - Set [StaticsOkName $slave] $staticsok - Set [NestedOkName $slave] $nestedok + Set [StaticsOkName $slave] $staticsok + Set [NestedOkName $slave] $nestedok Set [DeleteHookName $slave] $deletehook SyncAccessPath $slave @@ -439,7 +451,7 @@ proc ::safe::interpAddToAccessPath {slave path} { # NB we need to add [namespace current], aliases are always # absolute paths. ::interp alias $slave source {} [namespace current]::AliasSource $slave - ::interp alias $slave load {} [namespace current]::AliasLoad $slave + ::interp alias $slave load {} [namespace current]::AliasLoad $slave # This alias lets the slave use the encoding names, convertfrom, # convertto, and system, but not "encoding system " to set @@ -448,6 +460,10 @@ proc ::safe::interpAddToAccessPath {slave path} { ::interp alias $slave encoding {} [namespace current]::AliasEncoding \ $slave + # Handling Tcl Modules, we need a restricted form of Glob. + ::interp alias $slave glob {} [namespace current]::AliasGlob \ + $slave + # This alias lets the slave have access to a subset of the 'file' # command functionality. @@ -463,15 +479,25 @@ proc ::safe::interpAddToAccessPath {slave path} { # by Tcl_MakeSafe(3) - # Source init.tcl into the slave, to get auto_load and other - # procedures defined: + # Source init.tcl and tm.tcl into the slave, to get auto_load + # and other procedures defined: - if {[catch {::interp eval $slave\ + if {[catch {::interp eval $slave \ {source [file join $tcl_library init.tcl]}} msg]} { Log $slave "can't source init.tcl ($msg)" error "can't source init.tcl into slave $slave ($msg)" } + if {[catch {::interp eval $slave \ + {source [file join $tcl_library tm.tcl]}} msg]} { + Log $slave "can't source tm.tcl ($msg)" + error "can't source tm.tcl into slave $slave ($msg)" + } + + # Sync the paths used to search for Tcl modules. This can be + # done only now, after tm.tcl was loaded. + ::interp eval $slave [list ::tcl::tm::add {*}[Set [TmPathListName $slave]]] + return $slave } @@ -610,6 +636,10 @@ proc ::safe::setLogCmd {args} { proc VirtualPathListName {slave} { return "[InterpStateName $slave](access_path_slave)" } + # returns the variable name of the complete tm path list + proc TmPathListName {slave} { + return "[InterpStateName $slave](tm_path_slave)" + } # returns the variable name of the number of items proc PathNumberName {slave} { return "[InterpStateName $slave](access_path,n)" @@ -707,19 +737,96 @@ proc ::safe::setLogCmd {args} { } } + # AliasGlob is the target of the "glob" alias in safe interpreters. + + proc AliasGlob {slave args} { + Log $slave "GLOB ! $args" NOTICE + set cmd {} + set at 0 + + set dir {} + set virtualdir {} + + while {$at < [llength $args]} { + switch -glob -- [set opt [lindex $args $at]] { + -nocomplain - + -join { lappend cmd $opt ; incr at } + -directory { + lappend cmd $opt ; incr at + set virtualdir [lindex $args $at] + + # get the real path from the virtual one. + if {[catch {set dir [TranslatePath $slave $virtualdir]} msg]} { + Log $slave $msg + return -code error "permission denied" + } + # check that the path is in the access path of that slave + if {[catch {DirInAccessPath $slave $dir} msg]} { + Log $slave $msg + return -code error "permission denied" + } + lappend cmd $dir ; incr at + } + pkgIndex.tcl { + # Oops, this is globbing a subdirectory in regular + # package search. That is not wanted. Abort, + # handler does catch already (because glob was not + # defined before). See package.tcl, lines 484ff in + # tclPkgUnknown. + error "unknown command glob" + } + -* { + Log $slave "Safe base rejecting glob option '$opt'" + error "Safe base rejecting glob option '$opt'" + } + default { + lappend cmd $opt ; incr at + } + } + } + + Log $slave "GLOB = $cmd" NOTICE + + if {[catch {::interp invokehidden $slave glob {*}$cmd} msg]} { + Log $slave $msg + return -code error "script error" + } + + Log $slave "GLOB @ $msg" NOTICE + + # Translate path back to what the slave should see. + set res {} + foreach p $msg { + regsub -- ^$dir $p $virtualdir p + lappend res $p + } + + Log $slave "GLOB @ $res" NOTICE + return $res + } # AliasSource is the target of the "source" alias in safe interpreters. proc AliasSource {slave args} { set argc [llength $args] - # Allow only "source filename" + # Extended for handling of Tcl Modules to allow not only + # "source filename", but "source -encoding E filename" as + # well. + if {[lindex $args 0] eq "-encoding"} { + incr argc -2 + set encoding [lrange $args 0 1] + set at 2 + } else { + set at 0 + set encoding {} + } if {$argc != 1} { - set msg "wrong # args: should be \"source fileName\"" + set msg "wrong # args: should be \"source ?-encoding E? fileName\"" Log $slave "$msg ($args)" return -code error $msg } - set file [lindex $args 0] + set file [lindex $args $at] # get the real path from the virtual one. if {[catch {set file [TranslatePath $slave $file]} msg]} { @@ -740,7 +847,7 @@ proc ::safe::setLogCmd {args} { } # passed all the tests , lets source it: - if {[catch {::interp invokehidden $slave source $file} msg]} { + if {[catch {::interp invokehidden $slave source {*}$encoding $file} msg]} { Log $slave $msg return -code error "script error" } @@ -840,6 +947,25 @@ proc ::safe::setLogCmd {args} { } } + proc DirInAccessPath {slave dir} { + set access_path [GetAccessPath $slave] + + if {[file isfile $dir]} { + error "\"$dir\": is a file" + } + + # Normalize paths for comparison since lsearch knows nothing of + # potential pathname anomalies. + set norm_dir [file normalize $dir] + foreach path $access_path { + lappend norm_access_path [file normalize $path] + } + + if {[lsearch -exact $norm_access_path $norm_dir] == -1} { + error "\"$dir\": not in access_path" + } + } + # This procedure enables access from a safe interpreter to only a subset of # the subcommands of a command: diff --git a/library/tm.tcl b/library/tm.tcl index aee74f5..4f58d12 100644 --- a/library/tm.tcl +++ b/library/tm.tcl @@ -214,11 +214,11 @@ proc ::tcl::tm::UnknownHandler {original name args} { set satisfied 0 foreach path $paths { - if {![file exists $path]} { + if {![interp issafe] && ![file exists $path]} { continue } set currentsearchpath [file join $path $pkgroot] - if {![file exists $currentsearchpath]} { + if {![interp issafe] && ![file exists $currentsearchpath]} { continue } set strip [llength [file split $path]] @@ -352,9 +352,13 @@ proc ::tcl::tm::roots {paths} { foreach pa $paths { set p [file join $pa tcl$major] for {set n $minor} {$n >= 0} {incr n -1} { - path add [file normalize [file join $p ${major}.${n}]] + set px [file join $p ${major}.${n}] + if {![interp issafe]} { set px [file normalize $px] } + path add $px } - path add [file normalize [file join $p site-tcl]] + set px [file join $p site-tcl] + if {![interp issafe]} { set px [file normalize $px] } + path add $px } return } @@ -362,4 +366,4 @@ proc ::tcl::tm::roots {paths} { # Initialization. Set up the default paths, then insert the new # handler into the chain. -::tcl::tm::Defaults +if {![interp issafe]} { ::tcl::tm::Defaults } -- cgit v0.12 From 257410e1220dbf998656407c162b2434642357d6 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 25 Jun 2008 17:16:27 +0000 Subject: Add test suite changes for 1999119 bug fix commit. --- ChangeLog | 15 +++++++-------- changes | 4 +++- tests/safe.test | 20 ++++++++++---------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index b71f632..9efe283 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,14 +1,14 @@ -2008-06-25 Andreas Kupries - - * library/tm.tcl: Modified the handling of Tcl Modules and of the - * library/safe.tcl: Safe Base to interact nicely with each other, - * library/init.tcl: enabling requiring Tcl Modules in safe - interpreters. Fixes [Bug 1999119]. - 2008-06-25 Don Porter * changes: Update for 8.5.3 release. +2008-06-25 Andreas Kupries + + * library/tm.tcl: Modified the handling of Tcl Modules and of the + * library/safe.tcl: Safe Base to interact nicely with each other, + * library/init.tcl: enabling requiring Tcl Modules in safe + * tests/safe.test: interpreters. Fixes [Bug 1999119]. + 2008-06-25 Pat Thoyts * win/rules.vc: Backported fix for dde/registry versions and @@ -20,7 +20,6 @@ Tcl_ObjType for the empty string value. Problem led to a crash in the command [glob -dir {} a]. [Bug 1999176]. ->>>>>>> 1.3975.2.48 2008-06-23 Don Porter * generic/tclPathObj.c: Fixed bug in Tcl_GetTranslatedPath() when diff --git a/changes b/changes index e3c129a..5699a8a 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.4 2008/06/25 16:05:02 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.5 2008/06/25 17:16:29 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7221,4 +7221,6 @@ variables without "." added to customization hooks (kupries) 2008-06-24 (bug fix)[1999176] crash in [glob -dir {} a] (porter) +2008-06-25 (bug fix)[1999119] Support TM packages in Safe Base (kupries) + --- Released 8.5.3, June 30, 2008 --- See ChangeLog for details --- diff --git a/tests/safe.test b/tests/safe.test index e1b4a36..8f1334a 100644 --- a/tests/safe.test +++ b/tests/safe.test @@ -10,12 +10,12 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: safe.test,v 1.22 2006/12/05 18:45:51 andreas_kupries Exp $ +# RCS: @(#) $Id: safe.test,v 1.22.4.1 2008/06/25 17:16:30 dgp Exp $ package require Tcl 8.5 if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -89,7 +89,7 @@ test safe-3.2 {calling safe::interpCreate on trusted interp} { set l [lsort [a aliases]] safe::interpDelete a set l -} {clock encoding exit file load source} +} {clock encoding exit file glob load source} test safe-3.3 {calling safe::interpCreate on trusted interp} { catch {safe::interpDelete a} safe::interpCreate a @@ -201,7 +201,7 @@ test safe-7.1 {tests that everything works at high level} { safe::interpDelete $i set v } 1.0 -test safe-7.2 {tests specific path and interpFind/AddToAccessPath} { +test safe-7.2 {tests specific path and interpFind/AddToAccessPath} -body { set i [safe::interpCreate -nostat -nested 1 -accessPath [list [info library]]]; # should not add anything (p0) set token1 [safe::interpAddToAccessPath $i [info library]] @@ -213,7 +213,7 @@ test safe-7.2 {tests specific path and interpFind/AddToAccessPath} { [catch {interp eval $i {package require http 1}} msg] $msg \ [safe::interpConfigure $i]\ [safe::interpDelete $i] -} "{\$p(:0:)} {\$p(:1:)} 1 {can't find package http 1} {-accessPath {[list $tcl_library /dummy/unixlike/test/path]} -statics 0 -nested 1 -deleteHook {}} {}" +} -match glob -result "{\$p(:0:)} {\$p(:*:)} 1 {can't find package http 1} {-accessPath {[list $tcl_library * /dummy/unixlike/test/path]} -statics 0 -nested 1 -deleteHook {}} {}" # test source control on file name @@ -224,7 +224,7 @@ test safe-8.1 {safe source control on file} { list [catch {$i eval {source}} msg] \ $msg \ [safe::interpDelete $i] ; -} {1 {wrong # args: should be "source fileName"} {}} +} {1 {wrong # args: should be "source ?-encoding E? fileName"} {}} test safe-8.2 {safe source control on file} { set i "a"; catch {safe::interpDelete $i} @@ -232,7 +232,7 @@ test safe-8.2 {safe source control on file} { list [catch {$i eval {source}} msg] \ $msg \ [safe::interpDelete $i] ; -} {1 {wrong # args: should be "source fileName"} {}} +} {1 {wrong # args: should be "source ?-encoding E? fileName"} {}} test safe-8.3 {safe source control on file} { set i "a"; catch {safe::interpDelete $i} @@ -315,7 +315,7 @@ test safe-8.8 {safe source forbids -rsrc} { list [catch {$i eval {source -rsrc Init}} msg] \ $msg \ [safe::interpDelete $i] ; -} {1 {wrong # args: should be "source fileName"} {}} +} {1 {wrong # args: should be "source ?-encoding E? fileName"} {}} test safe-9.1 {safe interps' deleteHook} { set i "a"; @@ -364,7 +364,7 @@ test safe-9.5 {dual specification of nested} { list [catch {safe::interpCreate -nested 0 -nestedload} msg] $msg } {1 {conflicting values given for -nested and -nestedLoadOk}} -test safe-9.6 {interpConfigure widget like behaviour} { +test safe-9.6 {interpConfigure widget like behaviour} -body { # this test shall work, don't try to "fix it" unless # you *really* know what you are doing (ie you are me :p) -- dl list [set i [safe::interpCreate \ @@ -381,7 +381,7 @@ test safe-9.6 {interpConfigure widget like behaviour} { safe::interpConfigure $i]\ [safe::interpConfigure $i -deleteHook toto -nosta -nested 0; safe::interpConfigure $i] -} {{-accessPath /foo/bar -statics 0 -nested 1 -deleteHook {foo bar}} {-accessPath /foo/bar} {-nested 1} {-statics 0} {-deleteHook {foo bar}} {-accessPath /blah -statics 1 -nested 1 -deleteHook {foo bar}} {-accessPath /blah -statics 0 -nested 0 -deleteHook toto}} +} -match glob -result {{-accessPath * -statics 0 -nested 1 -deleteHook {foo bar}} {-accessPath *} {-nested 1} {-statics 0} {-deleteHook {foo bar}} {-accessPath * -statics 1 -nested 1 -deleteHook {foo bar}} {-accessPath * -statics 0 -nested 0 -deleteHook toto}} # testing that nested and statics do what is advertised # (we use a static package : Tcltest) -- cgit v0.12 From 9a13f67b4c3acd62bd8c9c8a9e6d70b3905fdd04 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 25 Jun 2008 18:16:03 +0000 Subject: remove stray .RE --- doc/tm.n | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/tm.n b/doc/tm.n index 470432a..f214e3c 100644 --- a/doc/tm.n +++ b/doc/tm.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tm.n,v 1.14.2.1 2008/06/17 16:45:26 andreas_kupries Exp $ +'\" RCS: @(#) $Id: tm.n,v 1.14.2.2 2008/06/25 18:16:03 dgp Exp $ '\" .so man.macros .TH tm n 8.5 Tcl "Tcl Built-In Commands" @@ -284,7 +284,6 @@ environment variables: \fB$::env(TCL8.1_TM_PATH)\fR \fB$::env(TCL8_1_TM_PATH)\fR \fB$::env(TCL8.0_TM_PATH)\fR \fB$::env(TCL8_0_TM_PATH)\fR .CE -.RE .SH "SEE ALSO" package(n), Tcl Improvement Proposal #189 .QW "\fITcl Modules\fR" -- cgit v0.12 From ed95065bfb2e9a9b3eb5c46b0c6b9a92d54dfaef Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 26 Jun 2008 22:10:21 +0000 Subject: * unix/Makefile.in: Followup to my change of 2008-06-25, make code generated by the Makefile and put into the installd tm.tcl conditional on interpreter safeness as well. Thanks to Daniel Steffen for reminding me of that code. --- ChangeLog | 7 +++++++ unix/Makefile.in | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9efe283..f568e83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-06-26 Andreas Kupries + + * unix/Makefile.in: Followup to my change of 2008-06-25, make code + generated by the Makefile and put into the installd tm.tcl + conditional on interpreter safeness as well. Thanks to Daniel + Steffen for reminding me of that code. + 2008-06-25 Don Porter * changes: Update for 8.5.3 release. diff --git a/unix/Makefile.in b/unix/Makefile.in index f950046..7ce7fdf 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.2 2008/06/12 20:09:11 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.3 2008/06/26 22:10:24 andreas_kupries Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -805,7 +805,7 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs done; @if [ -n "$(TCL_MODULE_PATH)" -a -f $(TOP_DIR)/library/tm.tcl ]; then \ echo "Customizing tcl module path"; \ - echo "::tcl::tm::roots {$(TCL_MODULE_PATH)}" >> \ + echo "if {![interp issafe]} { ::tcl::tm::roots {$(TCL_MODULE_PATH)} }" >> \ "$(SCRIPT_INSTALL_DIR)"/tm.tcl; \ fi -- cgit v0.12 From 1e3cb39522980ac17bfffe1c6595f48101125a87 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 27 Jun 2008 19:55:33 +0000 Subject: typos --- doc/IntObj.3 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/IntObj.3 b/doc/IntObj.3 index 617e180..21f9945 100644 --- a/doc/IntObj.3 +++ b/doc/IntObj.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: IntObj.3,v 1.14 2007/12/13 15:22:31 dgp Exp $ +'\" RCS: @(#) $Id: IntObj.3,v 1.14.2.1 2008/06/27 19:55:33 dgp Exp $ '\" .so man.macros .TH Tcl_IntObj 3 8.5 Tcl "Tcl Library Procedures" @@ -137,15 +137,15 @@ then \fBTCL_ERROR\fR is returned, and if \fIinterp\fR is non-NULL, an error message is left in \fIinterp\fR. The \fBTcl_ObjType\fR of \fIobjPtr\fR may be changed to make subsequent calls to the same routine more efficient. Unlike the other functions, -\fBTcl_TakeGetBignumFromObj\fR may set the content of the Tcl object +\fBTcl_TakeBignumFromObj\fR may set the content of the Tcl object \fIobjPtr\fR to an empty string in the process of retrieving the multiple-precision integer value. .PP The choice between \fBTcl_GetBignumFromObj\fR and -\fBTcl_TakeGetBignumFromObj\fR is governed by how the caller will +\fBTcl_TakeBignumFromObj\fR is governed by how the caller will continue to use \fIobjPtr\fR. If after the \fBmp_int\fR value is retrieved from \fIobjPtr\fR, the caller will make no more -use of \fIobjPtr\fR, then using \fBTcl_TakeGetBignumFromObj\fR +use of \fIobjPtr\fR, then using \fBTcl_TakeBignumFromObj\fR permits Tcl to detect when an unshared \fIobjPtr\fR permits the value to be moved instead of copied, which should be more efficient. If anything later in the caller requires -- cgit v0.12 From 30ce01a710bebc9edf262ad88a1a26509bedd921 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 27 Jun 2008 21:44:59 +0000 Subject: Tcl defines more than 7 Tcl_ObjTypes now, and we don't want to maintain this claim in the docs. Also revise false claim that a custom Tcl_ObjType requires calling Tcl_RegisterObjType(). --- doc/Object.3 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/Object.3 b/doc/Object.3 index 6639559..245692a 100644 --- a/doc/Object.3 +++ b/doc/Object.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Object.3,v 1.18 2007/12/13 15:22:31 dgp Exp $ +'\" RCS: @(#) $Id: Object.3,v 1.18.2.1 2008/06/27 21:44:59 dgp Exp $ '\" .so man.macros .TH Tcl_Obj 3 8.5 Tcl "Tcl Library Procedures" @@ -102,10 +102,10 @@ reclaim an object's storage. .PP Tcl objects are typed. An object's internal representation is controlled by its type. -Seven types are predefined in the Tcl core +Several types are predefined in the Tcl core including integer, double, list, and bytecode. Extension writers can extend the set of types -by using the procedure \fBTcl_RegisterObjType\fR . +by defining their own \fBTcl_ObjType\fR structs. .SH "THE TCL_OBJ STRUCTURE" .PP Each Tcl object is represented by a \fBTcl_Obj\fR structure -- cgit v0.12 From 0c008d2ecb5decdf18c0e0b56d59b960d158f6b9 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 28 Jun 2008 04:19:13 +0000 Subject: * generic/tclIOUtil.c: Plug memory leak in latest commit. Thanks Rolf Ade for detecting and Dan Steffen for the fix [Bug 2004654]. --- ChangeLog | 5 +++++ generic/tclIOUtil.c | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7a2e266..bc040fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-06-28 Don Porter + + * generic/tclIOUtil.c: Plug memory leak in latest commit. Thanks + Rolf Ade for detecting and Dan Steffen for the fix [Bug 2004654]. + 2008-06-23 Don Porter * generic/tclIOUtil.c: Fixed bug in Tcl_GetTranslatedPath() when diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 0f2f373..0de5890 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.37 2008/06/23 15:45:39 dgp Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.38 2008/06/28 04:19:15 dgp Exp $ */ #include "tclInt.h" @@ -5440,10 +5440,15 @@ Tcl_FSGetTranslatedPath(interp, pathPtr) * translated version of cwdPtr to normPathPtr, we'll get the * translated result we need, and can store it for future use. */ - retObj = Tcl_FSJoinToPath(Tcl_FSGetTranslatedPath(interp, - srcFsPathPtr->cwdPtr), 1, &(srcFsPathPtr->normPathPtr)); + + Tcl_Obj *translatedCwdPtr = Tcl_FSGetTranslatedPath(interp, + srcFsPathPtr->cwdPtr); + + retObj = Tcl_FSJoinToPath(translatedCwdPtr, 1, + &(srcFsPathPtr->normPathPtr)); srcFsPathPtr->translatedPathPtr = retObj; Tcl_IncrRefCount(retObj); + Tcl_DecrRefCount(translatedCwdPtr); } else { /* * It is a pure absolute, normalized path object. -- cgit v0.12 From 7e889ea1e3186f0fa678da5b27a2156d324fbcfa Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 28 Jun 2008 04:22:04 +0000 Subject: * generic/tclPathObj.c: Plug memory leak in [Bug 1972879] fix. Thanks Rolf Ade for detecting and Dan Steffen for the fix [Bug 2004654]. --- ChangeLog | 5 +++++ generic/tclPathObj.c | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f568e83..e45bb02 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-06-28 Don Porter + + * generic/tclPathObj.c: Plug memory leak in [Bug 1972879] fix. Thanks + Rolf Ade for detecting and Dan Steffen for the fix [Bug 2004654]. + 2008-06-26 Andreas Kupries * unix/Makefile.in: Followup to my change of 2008-06-25, make code diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index e3006bf..070bb2e 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.2 2008/06/24 20:05:58 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.3 2008/06/28 04:22:06 dgp Exp $ */ #include "tclInt.h" @@ -1602,10 +1602,15 @@ Tcl_FSGetTranslatedPath( * translated version of cwdPtr to normPathPtr, we'll get the * translated result we need, and can store it for future use. */ - retObj = Tcl_FSJoinToPath(Tcl_FSGetTranslatedPath(interp, - srcFsPathPtr->cwdPtr), 1, &(srcFsPathPtr->normPathPtr)); + + Tcl_Obj *translatedCwdPtr = Tcl_FSGetTranslatedPath(interp, + srcFsPathPtr->cwdPtr); + + retObj = Tcl_FSJoinToPath(translatedCwdPtr, 1, + &(srcFsPathPtr->normPathPtr)); srcFsPathPtr->translatedPathPtr = retObj; Tcl_IncrRefCount(retObj); + Tcl_DecrRefCount(translatedCwdPtr); } else { /* * It is a pure absolute, normalized path object. This is -- cgit v0.12 From 2bffd8d5aed969e0ddf772e0d66f0dcc741ac03f Mon Sep 17 00:00:00 2001 From: dgp Date: Sun, 29 Jun 2008 19:08:35 +0000 Subject: * generic/tclPathObj.c: Plug memory leak in [Bug 1999176] fix. Thanks Rolf Ade for detecting. --- ChangeLog | 5 +++++ generic/tclPathObj.c | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index e45bb02..b512045 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-06-29 Don Porter + + * generic/tclPathObj.c: Plug memory leak in [Bug 1999176] fix. Thanks + Rolf Ade for detecting. + 2008-06-28 Don Porter * generic/tclPathObj.c: Plug memory leak in [Bug 1972879] fix. Thanks diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index 070bb2e..cdf6e2b 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.3 2008/06/28 04:22:06 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.4 2008/06/29 19:08:36 dgp Exp $ */ #include "tclInt.h" @@ -1879,6 +1879,7 @@ Tcl_FSGetNormalizedPath( if (fsPathPtr->normPathPtr == NULL) { ClientData clientData = NULL; Tcl_Obj *useThisCwd = NULL; + int pureNormalized = 1; /* * Since normPathPtr is NULL, but this is a valid path object, we know @@ -1927,6 +1928,7 @@ Tcl_FSGetNormalizedPath( return NULL; } + pureNormalized = 0; Tcl_DecrRefCount(absolutePath); absolutePath = Tcl_FSJoinToPath(useThisCwd, 1, &absolutePath); Tcl_IncrRefCount(absolutePath); @@ -1946,6 +1948,7 @@ Tcl_FSGetNormalizedPath( if (absolutePath == NULL) { return NULL; } + pureNormalized = 0; #endif /* __WIN32__ */ } } @@ -1967,7 +1970,7 @@ Tcl_FSGetNormalizedPath( * is an absolute path). */ - if (useThisCwd == NULL) { + if (pureNormalized) { if (!strcmp(TclGetString(fsPathPtr->normPathPtr), TclGetString(pathPtr))) { /* @@ -1983,7 +1986,8 @@ Tcl_FSGetNormalizedPath( fsPathPtr->normPathPtr = pathPtr; } - } else { + } + if (useThisCwd != NULL) { /* * We just need to free an object we allocated above for relative * paths (this was returned by Tcl_FSJoinToPath above), and then -- cgit v0.12 From d8e2dd0ef8a84e1820e1788874d1a88063ab4e26 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 30 Jun 2008 02:34:05 +0000 Subject: * doc/ObjectType.3: Updated documentation of the Tcl_ObjType struct to match expectations of Tcl 8.5 [Bug 1917650]. --- ChangeLog | 3 ++ doc/ObjectType.3 | 110 +++++++++++++++++++++++++++++++++++++------------------ 2 files changed, 77 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index b512045..f3123f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-06-29 Don Porter + * doc/ObjectType.3: Updated documentation of the Tcl_ObjType + struct to match expectations of Tcl 8.5 [Bug 1917650]. + * generic/tclPathObj.c: Plug memory leak in [Bug 1999176] fix. Thanks Rolf Ade for detecting. diff --git a/doc/ObjectType.3 b/doc/ObjectType.3 index f7bdb9f..cf88fd0 100644 --- a/doc/ObjectType.3 +++ b/doc/ObjectType.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: ObjectType.3,v 1.16 2007/12/13 15:22:31 dgp Exp $ +'\" RCS: @(#) $Id: ObjectType.3,v 1.16.2.1 2008/06/30 02:34:07 dgp Exp $ '\" .so man.macros .TH Tcl_ObjType 3 8.0 Tcl "Tcl Library Procedures" @@ -49,7 +49,10 @@ They are used to register new object types, look up types, and force conversions from one type to another. .PP \fBTcl_RegisterObjType\fR registers a new Tcl object type -in the table of all object types supported by Tcl. +in the table of all object types that \fBTcl_GetObjType\fR +can look up by name. There are other object types supported by Tcl +as well, which Tcl chooses not to register. Extensions can likewise +choose to register the object types they create or not. The argument \fItypePtr\fR points to a Tcl_ObjType structure that describes the new type by giving its name and by supplying pointers to four procedures @@ -60,11 +63,11 @@ it is replaced with the new type. The Tcl_ObjType structure is described in the section \fBTHE TCL_OBJTYPE STRUCTURE\fR below. .PP -\fBTcl_GetObjType\fR returns a pointer to the Tcl_ObjType +\fBTcl_GetObjType\fR returns a pointer to the registered Tcl_ObjType with name \fItypeName\fR. It returns NULL if no type with that name is registered. .PP -\fBTcl_AppendAllObjTypes\fR appends the name of each object type +\fBTcl_AppendAllObjTypes\fR appends the name of each registered object type as a list element onto the Tcl object referenced by \fIobjPtr\fR. The return value is \fBTCL_OK\fR unless there was an error converting \fIobjPtr\fR to a list object; @@ -74,7 +77,8 @@ in that case \fBTCL_ERROR\fR is returned. if possible. It creates a new internal representation for \fIobjPtr\fR appropriate for the target type \fItypePtr\fR -and sets its \fItypePtr\fR member to that type. +and sets its \fItypePtr\fR member as determined by calling the +\fItypePtr->setFromAnyProc\fR routine. Any internal representation for \fIobjPtr\fR's old type is freed. If an error occurs during conversion, it returns \fBTCL_ERROR\fR and leaves an error message in the result object for \fIinterp\fR @@ -82,12 +86,23 @@ unless \fIinterp\fR is NULL. Otherwise, it returns \fBTCL_OK\fR. Passing a NULL \fIinterp\fR allows this procedure to be used as a test whether the conversion can be done (and in fact was done). +.VS 8.5 +.PP +In many cases, the \fItypePtt->setFromAnyProc\fR routine will +set \fIobjPtr->typePtr\fR to the argument value \fItypePtr\fR, +but that is no longer guaranteed. The \fIsetFromAnyProc\fR is +free to set the internal representation for \fIobjPtr\fR to make +use of another related Tcl_ObjType, if it sees fit. +.VE 8.5 .SH "THE TCL_OBJTYPE STRUCTURE" .PP Extension writers can define new object types by defining four -procedures, -initializing a Tcl_ObjType structure to describe the type, -and calling \fBTcl_RegisterObjType\fR. +procedures and +initializing a Tcl_ObjType structure to describe the type. +Extension writers may also pass a pointer to their Tcl_ObjType +structire to \fBTcl_RegisterObjType\fR if they wish to permit +other extensions to look up their Tcl_ObjType by name with +the \fBTcl_GetObjType\fR routine. The \fBTcl_ObjType\fR structure is defined as follows: .PP .CS @@ -102,8 +117,9 @@ typedef struct Tcl_ObjType { .SS "THE NAME FIELD" .PP The \fIname\fR member describes the name of the type, e.g. \fBint\fR. -Extension writers can look up an object type using its name -with the \fBTcl_GetObjType\fR procedure. +When a type is registered, this is the name used by callers +of \fBTcl_GetObjType\fR to lookup the type. For unregistered +types, the \fIname\fR field is primarily of value for debugging. The remaining four members are pointers to procedures called by the generic Tcl object code: .SS "THE SETFROMANYPROC FIELD" @@ -124,22 +140,32 @@ unless \fIinterp\fR is NULL. If \fIsetFromAnyProc\fR is successful, it stores the new internal representation, sets \fIobjPtr\fR's \fItypePtr\fR member to point to -\fIsetFromAnyProc\fR's \fBTcl_ObjType\fR, and returns \fBTCL_OK\fR. +the \fBTcl_ObjType\fR struct corresponding to the new +internal representation, and returns \fBTCL_OK\fR. Before setting the new internal representation, the \fIsetFromAnyProc\fR must free any internal representation of \fIobjPtr\fR's old type; it does this by calling the old type's \fIfreeIntRepProc\fR if it is not NULL. -As an example, the \fIsetFromAnyProc\fR for the built-in Tcl integer type +.PP +As an example, the \fIsetFromAnyProc\fR for the built-in Tcl list type gets an up-to-date string representation for \fIobjPtr\fR by calling \fBTcl_GetStringFromObj\fR. -It parses the string to obtain an integer and, -if this succeeds, -stores the integer in \fIobjPtr\fR's internal representation -and sets \fIobjPtr\fR's \fItypePtr\fR member to point to the integer type's +It parses the string to verify it is in a valid list format and +to obtain each element value in the list, and, if this succeeds, +stores the list elements in \fIobjPtr\fR's internal representation +and sets \fIobjPtr\fR's \fItypePtr\fR member to point to the list type's Tcl_ObjType structure. +.PP Do not release \fIobjPtr\fR's old internal representation unless you replace it with a new one or reset the \fItypePtr\fR member to NULL. +.PP +The \fIsetFromAnyProc\fR member may be set to NULL, if the routines +making use of the internal representation have no need to derive that +internal representation from an arbitrary string value. However, in +this case, passing a pointer to the type to Tcl_ConvertToType() will +lead to a panic, so to avoid this possibility, the type +should \fInot\fR be registered. .SS "THE UPDATESTRINGPROC FIELD" .PP The \fIupdateStringProc\fR member contains the address of a function @@ -153,17 +179,27 @@ typedef void (Tcl_UpdateStringProc) (Tcl_Obj *\fIobjPtr\fR); \fIobjPtr\fR's \fIbytes\fR member is always NULL when it is called. It must always set \fIbytes\fR non-NULL before returning. We require the string representation's byte array -to have a null after the last byte, at offset \fIlength\fR; -this allows string representations that do not contain null bytes +to have a null after the last byte, at offset \fIlength\fR, +and to have no null bytes before that; this allows string representations to be treated as conventional null character-terminated C strings. +These restrictions are easily met by using Tcl's internal UTF encoding +for the string representation, same as one would do for other +Tcl routines accepting string values as arguments. Storage for the byte array must be allocated in the heap by \fBTcl_Alloc\fR or \fBckalloc\fR. Note that \fIupdateStringProc\fRs must allocate enough storage for the string's bytes and the terminating null byte. -The \fIupdateStringProc\fR for Tcl's built-in list type, for example, -builds an array of strings for each element object -and then calls \fBTcl_Merge\fR -to construct a string with proper Tcl list structure. -It stores this string as the list object's string representation. +.PP +The \fIupdateStringProc\fR for Tcl's built-in double type, for example, +calls Tcl_PrintDouble to write to a buffer of size TCL_DOUBLE_SPACE, +then allocates and copies the string representation to just enough +space to hold it. A pointer to the allocated space is stored in +the \fIbytes\fR member. +.PP +The \fIupdateStringProc\fR member may be set to NULL, if the routines +making use of the internal representation are written so that the +string representation is never invalidated. Failure to meet this +obligation will lead to panics or crashes when \fBTcl_GetStringFromObj\fR +or other similar routines ask for the string representation. .SS "THE DUPINTREPPROC FIELD" .PP The \fIdupIntRepProc\fR member contains the address of a function @@ -180,12 +216,12 @@ Before the call, \fIsrcPtr\fR's internal representation is valid and \fIdupPtr\fR's is not. \fIsrcPtr\fR's object type determines what copying its internal representation means. +.PP For example, the \fIdupIntRepProc\fR for the Tcl integer type simply copies an integer. -The built-in list type's \fIdupIntRepProc\fR -allocates a new array that points at the original element objects; -the elements are shared between the two lists -(and their reference counts are incremented to reflect the new references). +The built-in list type's \fIdupIntRepProc\fR uses a far more +sophisticated scheme to continue sharing storage as much as it +reasonably can. .SS "THE FREEINTREPPROC FIELD" .PP The \fIfreeIntRepProc\fR member contains the address of a function @@ -198,17 +234,19 @@ typedef void (Tcl_FreeInternalRepProc) (Tcl_Obj *\fIobjPtr\fR); The \fIfreeIntRepProc\fR function can deallocate the storage for the object's internal representation and do other type-specific processing necessary when an object is freed. -For example, Tcl list objects have an \fIinternalRep.otherValuePtr\fR -that points to an array of pointers to each element in the list. -The list type's \fIfreeIntRepProc\fR decrements -the reference count for each element object -(since the list will no longer refer to those objects), -then deallocates the storage for the array of pointers. +.PP +For example, the list type's \fIfreeIntRepProc\fR respects +the storage sharing scheme established by the \fIdupIntRepProc\fR +so that it only frees storage when the last object sharing it +is being freed. +.PP The \fIfreeIntRepProc\fR member can be set to NULL to indicate that the internal representation does not require freeing. -The \fIfreeIntRepProc\fR implementation should not access the -\fIbytes\fR member of the object, as this may potentially have already -been deleted. +The \fIfreeIntRepProc\fR implementation must not access the +\fIbytes\fR member of the object, since Tcl makes its own internal +uses of that field during object deletion. The defined tasks for +the \fIfreeIntRepProc\fR have no need to consult the \fIbytes\fR +member. .SH "SEE ALSO" Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount .SH KEYWORDS -- cgit v0.12 From d9e943b4e7f6602b2985a5353550c7e278f3472e Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 30 Jun 2008 03:18:57 +0000 Subject: * generic/tcl.h: Bump to 8.5.3 for release. * library/init.tcl: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/configure.in: * unix/configure: autoconf-2.59 * win/configure: --- ChangeLog | 12 ++++++++++++ generic/tcl.h | 4 ++-- library/init.tcl | 4 ++-- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 9 files changed, 25 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index f3123f1..d480d4c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,17 @@ 2008-06-29 Don Porter + *** 8.5.3 TAGGED FOR RELEASE *** + + * generic/tcl.h: Bump to 8.5.3 for release. + * library/init.tcl: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/configure.in: + + * unix/configure: autoconf-2.59 + * win/configure: + * doc/ObjectType.3: Updated documentation of the Tcl_ObjType struct to match expectations of Tcl 8.5 [Bug 1917650]. diff --git a/generic/tcl.h b/generic/tcl.h index 459534c..921a1b1 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.1 2008/04/11 18:12:29 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.2 2008/06/30 03:18:57 dgp Exp $ */ #ifndef _TCL @@ -63,7 +63,7 @@ extern "C" { #define TCL_RELEASE_SERIAL 3 #define TCL_VERSION "8.5" -#define TCL_PATCH_LEVEL "8.5.3b1" +#define TCL_PATCH_LEVEL "8.5.3" /* * The following definitions set up the proper options for Windows compilers. diff --git a/library/init.tcl b/library/init.tcl index 63f36ff..8b66859 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.2 2008/06/25 16:42:04 andreas_kupries Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.3 2008/06/30 03:18:58 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -17,7 +17,7 @@ if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.5.3b1 +package require -exact Tcl 8.5.3 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index a732b25..c7eb858 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.5.2 + Disk Label=tcl8.5.3 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 018276f..fb58897 100755 --- a/unix/configure +++ b/unix/configure @@ -1335,7 +1335,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".3b1" +TCL_PATCH_LEVEL=".3" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 7bcbb0e..fca256e 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.3 2008/06/12 06:33:55 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.4 2008/06/30 03:19:04 dgp Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -27,7 +27,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [ TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".3b1" +TCL_PATCH_LEVEL=".3" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 302f143..96df99f 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,11 +1,11 @@ -# $Id: tcl.spec,v 1.37.2.1 2008/04/11 18:12:31 dgp Exp $ +# $Id: tcl.spec,v 1.37.2.2 2008/06/30 03:19:06 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. %{!?directory:%define directory /usr/local} Name: tcl Summary: Tcl scripting language development environment -Version: 8.5.3b1 +Version: 8.5.3 Release: 2 License: BSD Group: Development/Languages diff --git a/win/configure b/win/configure index 78c8160..c9d65dc 100755 --- a/win/configure +++ b/win/configure @@ -1272,7 +1272,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".3b1" +TCL_PATCH_LEVEL=".3" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 diff --git a/win/configure.in b/win/configure.in index b0918ca..9b7f9da 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.104.2.1 2008/04/11 18:12:31 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.104.2.2 2008/06/30 03:19:06 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.59) @@ -16,7 +16,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".3b1" +TCL_PATCH_LEVEL=".3" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 -- cgit v0.12 From 146d52bdc7c6b666e76d77f12e00a94f551fabbd Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 30 Jun 2008 15:58:00 +0000 Subject: typo --- doc/ObjectType.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ObjectType.3 b/doc/ObjectType.3 index cf88fd0..83f269f 100644 --- a/doc/ObjectType.3 +++ b/doc/ObjectType.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: ObjectType.3,v 1.16.2.1 2008/06/30 02:34:07 dgp Exp $ +'\" RCS: @(#) $Id: ObjectType.3,v 1.16.2.2 2008/06/30 15:58:01 dgp Exp $ '\" .so man.macros .TH Tcl_ObjType 3 8.0 Tcl "Tcl Library Procedures" @@ -88,7 +88,7 @@ Passing a NULL \fIinterp\fR allows this procedure to be used as a test whether the conversion can be done (and in fact was done). .VS 8.5 .PP -In many cases, the \fItypePtt->setFromAnyProc\fR routine will +In many cases, the \fItypePtr->setFromAnyProc\fR routine will set \fIobjPtr->typePtr\fR to the argument value \fItypePtr\fR, but that is no longer guaranteed. The \fIsetFromAnyProc\fR is free to set the internal representation for \fIobjPtr\fR to make -- cgit v0.12 From 249cb51f56621900b972cbbc766b6a4afe7a5331 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 3 Jul 2008 17:15:13 +0000 Subject: * library/package.tcl: Removed [file readable] testing from [tclPkgUnknown] and friends. We find out soon enough whether a file is readable when we try to [source] it, and not testing before allows us to workaround the bugs on some common filesystems where [file readable] lies to us. [Patch 1969717] --- ChangeLog | 8 ++++++++ library/package.tcl | 47 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index bc040fc..8907760 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-07-03 Don Porter + + * library/package.tcl: Removed [file readable] testing from + [tclPkgUnknown] and friends. We find out soon enough whether a + file is readable when we try to [source] it, and not testing + before allows us to workaround the bugs on some common filesystems + where [file readable] lies to us. [Patch 1969717] + 2008-06-28 Don Porter * generic/tclIOUtil.c: Plug memory leak in latest commit. Thanks diff --git a/library/package.tcl b/library/package.tcl index 04145dd..8912769 100644 --- a/library/package.tcl +++ b/library/package.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl which can be loaded on demand # for package management. # -# RCS: @(#) $Id: package.tcl,v 1.23.2.4 2006/09/22 01:26:24 andreas_kupries Exp $ +# RCS: @(#) $Id: package.tcl,v 1.23.2.5 2008/07/03 17:15:14 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -502,8 +502,14 @@ proc tclPkgUnknown [expr { foreach file [glob -directory $dir -join -nocomplain \ * pkgIndex.tcl] { set dir [file dirname $file] - if {![info exists procdDirs($dir)] && [file readable $file]} { - if {[catch {source $file} msg]} { + if {![info exists procdDirs($dir)]} { + set code [catch {source $file} msg] + if {$code == 1 && [lindex $::errorCode 0] eq "POSIX" + && [lindex $::errorCode 1] eq "EACCES"} { + # $file was not readable; silently ignore + continue + } + if {$code} { tclLog "error reading package index file $file: $msg" } else { set procdDirs($dir) 1 @@ -514,10 +520,15 @@ proc tclPkgUnknown [expr { set dir [lindex $use_path end] if {![info exists procdDirs($dir)]} { set file [file join $dir pkgIndex.tcl] - # safe interps usually don't have "file readable", - # nor stderr channel - if {([interp issafe] || [file readable $file])} { - if {[catch {source $file} msg] && ![interp issafe]} { + # safe interps usually don't have "file exists", + if {([interp issafe] || [file exists $file])} { + set code [catch {source $file} msg] + if {$code == 1 && [lindex $::errorCode 0] eq "POSIX" + && [lindex $::errorCode 1] eq "EACCES"} { + # $file was not readable; silently ignore + continue + } + if {$code} { tclLog "error reading package index file $file: $msg" } else { set procdDirs($dir) 1 @@ -563,8 +574,6 @@ proc tclPkgUnknown [expr { # This procedure extends the "package unknown" function for MacOSX. # It scans the Resources/Scripts directories of the immediate children # of the auto_path directories for pkgIndex files. -# Only installed in interps that are not safe so we don't check -# for [interp issafe] as in tclPkgUnknown. # # Arguments: # original - original [package unknown] procedure @@ -596,8 +605,14 @@ if {[info exists tcl_platform(tip,268)]} { foreach file [glob -directory $dir -join -nocomplain \ * Resources Scripts pkgIndex.tcl] { set dir [file dirname $file] - if {[file readable $file] && ![info exists procdDirs($dir)]} { - if {[catch {source $file} msg]} { + if {![info exists procdDirs($dir)]} { + set code [catch {source $file} msg] + if {$code == 1 && [lindex $::errorCode 0] eq "POSIX" + && [lindex $::errorCode 1] eq "EACCES"} { + # $file was not readable; silently ignore + continue + } + if {$code} { tclLog "error reading package index file $file: $msg" } else { set procdDirs($dir) 1 @@ -634,8 +649,14 @@ if {[info exists tcl_platform(tip,268)]} { foreach file [glob -directory $dir -join -nocomplain \ * Resources Scripts pkgIndex.tcl] { set dir [file dirname $file] - if {[file readable $file] && ![info exists procdDirs($dir)]} { - if {[catch {source $file} msg]} { + if {![info exists procdDirs($dir)]} { + set code [catch {source $file} msg] + if {$code == 1 && [lindex $::errorCode 0] eq "POSIX" + && [lindex $::errorCode 1] eq "EACCES"} { + # $file was not readable; silently ignore + continue + } + if {$code} { tclLog "error reading package index file $file: $msg" } else { set procdDirs($dir) 1 -- cgit v0.12 From fb2c0ecc7b7a0a79812c171e1768f191e070e784 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 3 Jul 2008 17:22:59 +0000 Subject: * library/package.tcl: Removed [file readable] testing from [tclPkgUnknown] and friends. We find out soon enough whether a file is readable when we try to [source] it, and not testing before allows us to workaround the bugs on some common filesystems where [file readable] lies to us. [Patch 1969717] --- ChangeLog | 8 ++++++++ library/package.tcl | 40 +++++++++++++++++++++++++++++----------- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index d480d4c..e8670ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-07-03 Don Porter + + * library/package.tcl: Removed [file readable] testing from + [tclPkgUnknown] and friends. We find out soon enough whether a + file is readable when we try to [source] it, and not testing + before allows us to workaround the bugs on some common filesystems + where [file readable] lies to us. [Patch 1969717] + 2008-06-29 Don Porter *** 8.5.3 TAGGED FOR RELEASE *** diff --git a/library/package.tcl b/library/package.tcl index 64197f7..6aa8be5 100644 --- a/library/package.tcl +++ b/library/package.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl which can be loaded on demand # for package management. # -# RCS: @(#) $Id: package.tcl,v 1.35 2006/11/03 00:34:52 hobbs Exp $ +# RCS: @(#) $Id: package.tcl,v 1.35.4.1 2008/07/03 17:22:59 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -485,8 +485,15 @@ proc tclPkgUnknown {name args} { foreach file [glob -directory $dir -join -nocomplain \ * pkgIndex.tcl] { set dir [file dirname $file] - if {![info exists procdDirs($dir)] && [file readable $file]} { - if {[catch {source $file} msg]} { + if {![info exists procdDirs($dir)]} { + set code [catch {source $file} msg opt] + if {$code == 1 && + [lindex [dict get $opt -errorcode] 0] eq "POSIX" && + [lindex [dict get $opt -errorcode] 1] eq "EACCES"} { + # $file was not readable; silently ignore + continue + } + if {$code} { tclLog "error reading package index file $file: $msg" } else { set procdDirs($dir) 1 @@ -497,10 +504,16 @@ proc tclPkgUnknown {name args} { set dir [lindex $use_path end] if {![info exists procdDirs($dir)]} { set file [file join $dir pkgIndex.tcl] - # safe interps usually don't have "file readable", - # nor stderr channel - if {([interp issafe] || [file readable $file])} { - if {[catch {source $file} msg] && ![interp issafe]} { + # safe interps usually don't have "file exists", + if {([interp issafe] || [file exists $file])} { + set code [catch {source $file} msg opt] + if {$code == 1 && + [lindex [dict get $opt -errorcode] 0] eq "POSIX" && + [lindex [dict get $opt -errorcode] 1] eq "EACCES"} { + # $file was not readable; silently ignore + continue + } + if {$code} { tclLog "error reading package index file $file: $msg" } else { set procdDirs($dir) 1 @@ -546,8 +559,6 @@ proc tclPkgUnknown {name args} { # This procedure extends the "package unknown" function for MacOSX. # It scans the Resources/Scripts directories of the immediate children # of the auto_path directories for pkgIndex files. -# Only installed in interps that are not safe so we don't check -# for [interp issafe] as in tclPkgUnknown. # # Arguments: # original - original [package unknown] procedure @@ -583,8 +594,15 @@ proc tcl::MacOSXPkgUnknown {original name args} { foreach file [glob -directory $dir -join -nocomplain \ * Resources Scripts pkgIndex.tcl] { set dir [file dirname $file] - if {![info exists procdDirs($dir)] && [file readable $file]} { - if {[catch {source $file} msg]} { + if {![info exists procdDirs($dir)]} { + set code [catch {source $file} msg opt] + if {$code == 1 && + [lindex [dict get $opt -errorcode] 0] eq "POSIX" && + [lindex [dict get $opt -errorcode] 1] eq "EACCES"} { + # $file was not readable; silently ignore + continue + } + if {$code} { tclLog "error reading package index file $file: $msg" } else { set procdDirs($dir) 1 -- cgit v0.12 From 0eeeeffffb57a74d4c7c20806ffa179517190e41 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 3 Jul 2008 17:38:18 +0000 Subject: * generic/tclIORChan.c (InvokeTclMethod): Fixed the memory leak reported in [Bug 1987821]. Thanks to Miguel for the rpeort and Don Porter for tracking the cause down. --- ChangeLog | 6 ++++++ generic/tclIORChan.c | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e8670ba..466dcb2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-07-03 Andreas Kupries + + * generic/tclIORChan.c (InvokeTclMethod): Fixed the memory leak + reported in [Bug 1987821]. Thanks to Miguel for the rpeort and + Don Porter for tracking the cause down. + 2008-07-03 Don Porter * library/package.tcl: Removed [file readable] testing from diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 51c5e61..d13b9aac 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.4 2008/05/03 21:06:02 das Exp $ + * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.5 2008/07/03 17:38:18 andreas_kupries Exp $ */ #include @@ -2126,6 +2126,18 @@ InvokeTclMethod( *resultObjPtr = resObj; Tcl_IncrRefCount(resObj); } + + /* + * Cleanup of the dynamic parts of the command. + */ + + if (argOneObj) { + Tcl_DecrRefCount(argOneObj); + if (argTwoObj) { + Tcl_DecrRefCount(argTwoObj); + } + } + return TCL_ERROR; } -- cgit v0.12 From 55aaafebf11934aa7c0820362b78688e70c95438 Mon Sep 17 00:00:00 2001 From: jenglish Date: Fri, 4 Jul 2008 19:21:14 +0000 Subject: UtfToUtfProc: Avoid unwanted sign extension when converting incomplete UTF-8 sequences. See [Bug 1908443] for details. --- ChangeLog | 6 ++++++ generic/tclEncoding.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8907760..5527cdc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-07-04 Joe English + + * generic/tclEncoding.c(UtfToUtfProc): Avoid unwanted sign extension + when converting incomplete UTF-8 sequences. See [Bug 1908443] for + details. + 2008-07-03 Don Porter * library/package.tcl: Removed [file readable] testing from diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 1a3faa3..99c71b0 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.14 2007/02/12 19:25:42 andreas_kupries Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.16.2.15 2008/07/04 19:21:19 jenglish Exp $ */ #include "tclInt.h" @@ -2084,11 +2084,11 @@ UtfToUtfProc(clientData, src, srcLen, flags, statePtr, dst, dstLen, } else if (!Tcl_UtfCharComplete(src, srcEnd - src)) { /* Always check before using Tcl_UtfToUniChar. Not doing * can so cause it run beyond the endof the buffer! If we - * * happen such an incomplete char its byts are made to * + * happen such an incomplete char its bytes are made to * represent themselves. */ - ch = (Tcl_UniChar) *src; + ch = (unsigned char) *src; src += 1; dst += Tcl_UniCharToUtf(ch, dst); } else { -- cgit v0.12 From 53ca8c3c36eb3e91b418b65e588a601b017aa9dc Mon Sep 17 00:00:00 2001 From: jenglish Date: Fri, 4 Jul 2008 19:22:20 +0000 Subject: UtfToUtfProc: Avoid unwanted sign extension when converting incomplete UTF-8 sequences. See [Bug 1908443] for details. --- ChangeLog | 6 ++++++ generic/tclEncoding.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 466dcb2..f330230 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-07-04 Joe English + + * generic/tclEncoding.c(UtfToUtfProc): Avoid unwanted sign extension + when converting incomplete UTF-8 sequences. See [Bug 1908443] for + details. + 2008-07-03 Andreas Kupries * generic/tclIORChan.c (InvokeTclMethod): Fixed the memory leak diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 95f89a4..1d4de73 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.59 2008/03/11 22:25:12 das Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.59.2.1 2008/07/04 19:22:21 jenglish Exp $ */ #include "tclInt.h" @@ -2292,7 +2292,7 @@ UtfToUtfProc( * incomplete char its byts are made to represent themselves. */ - ch = (Tcl_UniChar) *src; + ch = (unsigned char) *src; src += 1; dst += Tcl_UniCharToUtf(ch, dst); } else { -- cgit v0.12 From 6d2896f5857feb78ad399b8167e50d970a9a5791 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 7 Jul 2008 08:36:28 +0000 Subject: Correct examples. [Bug 1982642] --- ChangeLog | 4 ++++ doc/regexp.n | 28 +++++++++++++++++----------- doc/regsub.n | 17 ++++++++++++----- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index f330230..058c2ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-07-07 Donal K. Fellows + + * doc/regexp.n, doc/regsub.n: Correct examples. [Bug 1982642] + 2008-07-04 Joe English * generic/tclEncoding.c(UtfToUtfProc): Avoid unwanted sign extension diff --git a/doc/regexp.n b/doc/regexp.n index ad3a46f..2c18183 100644 --- a/doc/regexp.n +++ b/doc/regexp.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: regexp.n,v 1.28 2007/12/13 15:22:33 dgp Exp $ +'\" RCS: @(#) $Id: regexp.n,v 1.28.2.1 2008/07/07 08:36:30 dkf Exp $ '\" .so man.macros .TH regexp n 8.3 Tcl "Tcl Built-In Commands" @@ -149,39 +149,45 @@ portion of the expression that was not matched), then the corresponding .QW "\fB\-1 \-1\fR" if \fB\-indices\fR has been specified or to an empty string otherwise. .SH EXAMPLES +.PP Find the first occurrence of a word starting with \fBfoo\fR in a string that is not actually an instance of \fBfoobar\fR, and get the letters following it up to the end of the word into a variable: .CS -\fBregexp\fR {\e)(\ew*)} $string \-> restOfWord +\fBregexp\fR {\emfoo(?!bar\eM)(\ew*)} $string \-> restOfWord .CE Note that the whole matched substring has been placed in the variable -\fB\->\fR which is a name chosen to look nice given that we are not +.QW \fB\->\fR , +which is a name chosen to look nice given that we are not actually interested in its contents. .PP Find the index of the word \fBbadger\fR (in any case) within a string and store that in the variable \fBlocation\fR: .CS -\fBregexp\fR \-indices {(?i)\e} $string location +\fBregexp\fR \-indices {(?i)\embadger\eM} $string location +.CE +This could also be written as a \fIbasic\fR regular expression (as opposed +to using the default syntax of \fIadvanced\fR regular expressions) match by +prefixing the expression with a suitable flag: +.CS +\fBregexp\fR \-indices {(?ib)\e} $string location .CE .PP -Count the number of octal digits in a string: +This counts the number of octal digits in a string: .CS \fBregexp\fR \-all {[0\-7]} $string .CE .PP -List all words (consisting of all sequences of non-whitespace -characters) in a string: +This lists all words (consisting of all sequences of non-whitespace +characters) in a string, and is useful as a more powerful version of the +\fBsplit\fR command: .CS \fBregexp\fR \-all \-inline {\eS+} $string .CE - .SH "SEE ALSO" re_syntax(n), regsub(n), .VS 8.5 string(n) .VE - - .SH KEYWORDS -match, regular expression, string +match, parsing, pattern, regular expression, splitting, string diff --git a/doc/regsub.n b/doc/regsub.n index ca16aa8..413a6ab 100644 --- a/doc/regsub.n +++ b/doc/regsub.n @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: regsub.n,v 1.22 2007/12/13 15:22:33 dgp Exp $ +'\" RCS: @(#) $Id: regsub.n,v 1.22.2.1 2008/07/07 08:36:30 dkf Exp $ '\" .so man.macros .TH regsub n 8.3 Tcl "Tcl Built-In Commands" @@ -139,23 +139,30 @@ string after replacement is returned. See the manual entry for \fBregexp\fR for details on the interpretation of regular expressions. .SH EXAMPLES +.PP Replace (in the string in variable \fIstring\fR) every instance of \fBfoo\fR which is a word by itself with \fBbar\fR: .CS -\fBregsub\fR -all {\e} $string bar string +\fBregsub\fR -all {\emfoo\eM} $string bar string +.CE +or (using the +.QW "basic regular expression" +syntax): +.CS +\fBregsub\fR -all {(?b)\e} $string bar string .CE .PP Insert double-quotes around the first instance of the word \fBinteresting\fR, however it is capitalized. .CS -\fBregsub\fR -nocase {\e} $string {"&"} string +\fBregsub\fR -nocase {\eyinteresting\ey} $string {"&"} string .CE .PP Convert all non-ASCII and Tcl-significant characters into \eu escape sequences by using \fBregsub\fR and \fBsubst\fR in combination: .CS # This RE is just a character class for everything "bad" -set RE {[][{};#\e\e\e$\es\eu0100-\euffff]} +set RE {[][{};#\e\e\e$\es\eu0080-\euffff]} # We will substitute with a fragment of Tcl script in brackets set substitution {[format \e\e\e\eu%04x [scan "\e\e&" %c]]} @@ -170,4 +177,4 @@ regexp(n), re_syntax(n), subst(n), string(n) .VE .SH KEYWORDS -match, pattern, regular expression, substitute +match, pattern, quoting, regular expression, substitute -- cgit v0.12 From 42ecaf98ac017a8cb5d769f57fd62677cc92ac4f Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 7 Jul 2008 21:39:20 +0000 Subject: * generic/tclCmdIL.c (InfoFrameCmd): Fixed unsafe idiom of setting the interp result found by Don Porter. --- ChangeLog | 5 +++++ generic/tclCmdIL.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5527cdc..3966ff0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-07-07 Andreas Kupries + + * generic/tclCmdIL.c (InfoFrameCmd): Fixed unsafe idiom of setting + the interp result found by Don Porter. + 2008-07-04 Joe English * generic/tclEncoding.c(UtfToUtfProc): Avoid unwanted sign extension diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 861a008..54359af 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.14 2008/06/16 20:46:15 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.15 2008/07/07 21:39:22 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1074,7 +1074,7 @@ InfoFrameCmd(dummy, interp, objc, objv) ? 0 : iPtr->cmdFramePtr->level); - Tcl_SetIntObj(Tcl_GetObjResult(interp), levels); + Tcl_SetObjResult(interp, Tcl_NewIntObj (levels)); return TCL_OK; } else if (objc == 3) { -- cgit v0.12 From ae0cb213667adc6b1311ce40f90e82eb14673082 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 7 Jul 2008 21:39:46 +0000 Subject: * generic/tclCmdIL.c (InfoFrameCmd): Fixed unsafe idiom of setting the interp result found by Don Porter. --- ChangeLog | 5 +++++ generic/tclCmdIL.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 058c2ae..f51cb4b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-07-07 Andreas Kupries + + * generic/tclCmdIL.c (InfoFrameCmd): Fixed unsafe idiom of setting + the interp result found by Don Porter. + 2008-07-07 Donal K. Fellows * doc/regexp.n, doc/regsub.n: Correct examples. [Bug 1982642] diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 5555c99..d895bf8 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.1 2008/06/16 20:44:31 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.2 2008/07/07 21:39:49 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1044,7 +1044,7 @@ InfoFrameCmd( int levels = (iPtr->cmdFramePtr == NULL ? 0 : iPtr->cmdFramePtr->level); - Tcl_SetIntObj(Tcl_GetObjResult(interp), levels); + Tcl_SetObjResult(interp, Tcl_NewIntObj (levels)); return TCL_OK; } else if (objc != 2) { Tcl_WrongNumArgs(interp, 1, objv, "?number?"); -- cgit v0.12 From d88ab4d4e3fee06039e0467e46b7805dafdf9140 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 8 Jul 2008 17:53:14 +0000 Subject: * generic/tclGet.c: Corrected out of date comments. --- ChangeLog | 4 ++++ generic/tclGet.c | 16 +++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index f51cb4b..b391741 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-07-08 Don Porter + + * generic/tclGet.c: Corrected out of date comments. + 2008-07-07 Andreas Kupries * generic/tclCmdIL.c (InfoFrameCmd): Fixed unsafe idiom of setting diff --git a/generic/tclGet.c b/generic/tclGet.c index ca93466..969a7bd 100644 --- a/generic/tclGet.c +++ b/generic/tclGet.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclGet.c,v 1.20 2007/12/13 15:23:17 dgp Exp $ + * RCS: @(#) $Id: tclGet.c,v 1.20.2.1 2008/07/08 17:53:14 dgp Exp $ */ #include "tclInt.h" @@ -39,7 +39,8 @@ int Tcl_GetInt( Tcl_Interp *interp, /* Interpreter to use for error reporting. */ CONST char *src, /* String containing a (possibly signed) - * integer in a form acceptable to strtoul. */ + * integer in a form acceptable to + * Tcl_GetIntFromObj(). */ int *intPtr) /* Place to store converted result. */ { Tcl_Obj obj; @@ -83,7 +84,8 @@ TclGetLong( Tcl_Interp *interp, /* Interpreter used for error reporting if not * NULL. */ CONST char *src, /* String containing a (possibly signed) long - * integer in a form acceptable to strtoul. */ + * integer in a form acceptable to + * Tcl_GetLongFromObj(). */ long *longPtr) /* Place to store converted long result. */ { Tcl_Obj obj; @@ -125,7 +127,8 @@ int Tcl_GetDouble( Tcl_Interp *interp, /* Interpreter used for error reporting. */ CONST char *src, /* String containing a floating-point number - * in a form acceptable to strtod. */ + * in a form acceptable to + * Tcl_GetDoubleFromObj(). */ double *doublePtr) /* Place to store converted result. */ { Tcl_Obj obj; @@ -166,9 +169,8 @@ Tcl_GetDouble( int Tcl_GetBoolean( Tcl_Interp *interp, /* Interpreter used for error reporting. */ - CONST char *src, /* String containing a boolean number - * specified either as 1/0 or true/false or - * yes/no. */ + CONST char *src, /* String containing one of the boolean values + * 1, 0, true, false, yes, no, on off. */ int *boolPtr) /* Place to store converted result, which will * be 0 or 1. */ { -- cgit v0.12 From 1b5339323d5019362fce5d4438be34421f337dc8 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 15 Jul 2008 13:01:01 +0000 Subject: Fix error in example. [Bug 2016740] --- ChangeLog | 4 ++++ doc/DictObj.3 | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b391741..fb60d1f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-07-15 Donal K. Fellows + + * doc/DictObj.3: Fix error in example. [Bug 2016740] + 2008-07-08 Don Porter * generic/tclGet.c: Corrected out of date comments. diff --git a/doc/DictObj.3 b/doc/DictObj.3 index 1010cbd..db254ee 100644 --- a/doc/DictObj.3 +++ b/doc/DictObj.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: DictObj.3,v 1.11 2007/12/13 15:22:31 dgp Exp $ +'\" RCS: @(#) $Id: DictObj.3,v 1.11.2.1 2008/07/15 13:01:04 dkf Exp $ '\" .so man.macros .TH Tcl_DictObj 3 8.5 Tcl "Tcl Library Procedures" @@ -216,7 +216,7 @@ if (\fBTcl_DictObjFirst\fR(interp, objPtr, &search, &key, &value, &done) != TCL_OK) { return TCL_ERROR; } -for (; done ; \fBTcl_DictObjNext\fR(&search, &key, &value, &done)) { +for (; !done ; \fBTcl_DictObjNext\fR(&search, &key, &value, &done)) { /* * Note that strcmp() is not a good way of comparing * objects and is just used here for demonstration -- cgit v0.12 From 4102bed2736a6e342da6b5f44520c4bd9f8f993b Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 20 Jul 2008 22:02:36 +0000 Subject: Fix [Bug 2008248] and make dict->list->dict round trip efficient to boot. --- ChangeLog | 9 +++++++++ generic/tclDictObj.c | 11 +---------- generic/tclListObj.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 64 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb60d1f..b139af2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-07-20 Donal K. Fellows + + * generic/tclDictObj.c (SetDictFromAny): Make the list->dict + transformation a bit more efficient; modern dicts are ordered and so + we can round-trip through lists without needing the string rep at all. + * generic/tclListObj.c (SetListFromAny): Make the dict->list + transformation not lossy of internal representations and hence more + efficient. [Bug 2008248] (ajpasadyn) but using a more efficient patch. + 2008-07-15 Donal K. Fellows * doc/DictObj.3: Fix error in example. [Bug 2016740] diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index a33802d..c74f10f 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDictObj.c,v 1.56 2007/12/13 15:23:16 dgp Exp $ + * RCS: @(#) $Id: tclDictObj.c,v 1.56.2.1 2008/07/20 22:02:37 dkf Exp $ */ #include "tclInt.h" @@ -588,15 +588,6 @@ SetDictFromAny( } /* - * If the list is shared its string rep must not be lost so it still - * is the same list. - */ - - if (Tcl_IsShared(objPtr)) { - (void) TclGetString(objPtr); - } - - /* * Build the hash of key/value pairs. */ diff --git a/generic/tclListObj.c b/generic/tclListObj.c index 556a41d..2bbaa22 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclListObj.c,v 1.49 2007/12/13 15:23:18 dgp Exp $ + * RCS: @(#) $Id: tclListObj.c,v 1.49.2.1 2008/07/20 22:02:39 dkf Exp $ */ #include "tclInt.h" @@ -1658,6 +1658,58 @@ SetListFromAny( List *listRepPtr; /* + * Dictionaries are a special case; they have a string representation such + * that *all* valid dictionaries are valid lists. Hence we can convert + * more directly. + */ + + if (objPtr->typePtr == &tclDictType) { + Tcl_Obj *keyPtr, *valuePtr; + Tcl_DictSearch search; + int done, size; + + /* + * Create the new list representation. Note that we do not need to do + * anything with the string representation as the transformation (and + * the reverse back to a dictionary) are both order-preserving. Also + * note that since we know we've got a valid dictionary (by + * representation) we also know that fetching the size of the + * dictionary or iterating over it will not fail. + */ + + Tcl_DictObjSize(NULL, objPtr, &size); + listRepPtr = NewListIntRep(size > 0 ? 2*size : 1, NULL); + if (!listRepPtr) { + Tcl_SetResult(interp, + "insufficient memory to allocate list working space", + TCL_STATIC); + return TCL_ERROR; + } + listRepPtr->elemCount = 2 * size; + + /* + * Populate the list representation. + */ + + elemPtrs = &listRepPtr->elements; + Tcl_DictObjFirst(NULL, objPtr, &search, &keyPtr, &valuePtr, &done); + i = 0; + while (!done) { + elemPtrs[i++] = keyPtr; + elemPtrs[i++] = valuePtr; + Tcl_IncrRefCount(keyPtr); + Tcl_IncrRefCount(valuePtr); + Tcl_DictObjNext(&search, &keyPtr, &valuePtr, &done); + } + + /* + * Swap the representations. + */ + + goto commitRepresentation; + } + + /* * Get the string representation. Make it up-to-date if necessary. */ @@ -1742,6 +1794,7 @@ SetListFromAny( * Tcl_GetStringFromObj, to use that old internalRep. */ + commitRepresentation: listRepPtr->refCount++; TclFreeIntRep(objPtr); objPtr->internalRep.twoPtrValue.ptr1 = (void *) listRepPtr; -- cgit v0.12 From 5784ef17a727e040f9964e60b26b181df02c47d2 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Mon, 21 Jul 2008 14:56:07 +0000 Subject: Backported fix for bug #2015723 --- ChangeLog | 4 ++++ generic/tclFCmd.c | 12 +++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index b139af2..604c15c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-07-21 Pat Thoyts + + * generic/tclFCmd.c: Inodes on windows are unreliable [Bug 2015723] + 2008-07-20 Donal K. Fellows * generic/tclDictObj.c (SetDictFromAny): Make the list->dict diff --git a/generic/tclFCmd.c b/generic/tclFCmd.c index 64782c8..2c99531 100644 --- a/generic/tclFCmd.c +++ b/generic/tclFCmd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFCmd.c,v 1.43 2007/12/13 15:23:17 dgp Exp $ + * RCS: @(#) $Id: tclFCmd.c,v 1.43.2.1 2008/07/21 14:56:10 patthoyts Exp $ */ #include "tclInt.h" @@ -522,12 +522,13 @@ CopyRenameOneFile( } /* - * Prevent copying or renaming a file onto itself. Under Windows, stat - * always returns 0 for st_ino. However, the Windows-specific code - * knows how to deal with copying or renaming a file on top of itself. - * It might be a good idea to write a stat that worked. + * Prevent copying or renaming a file onto itself. On Windows since + * 8.5 we do get an inode number, however the unsigned short field is + * insufficient to accept the Win32 API file id so it is truncated to + * 16 bits and we get collisions. See bug #2015723. */ +#ifndef WIN32 if ((sourceStatBuf.st_ino != 0) && (targetStatBuf.st_ino != 0)) { if ((sourceStatBuf.st_ino == targetStatBuf.st_ino) && (sourceStatBuf.st_dev == targetStatBuf.st_dev)) { @@ -535,6 +536,7 @@ CopyRenameOneFile( goto done; } } +#endif /* * Prevent copying/renaming a file onto a directory and vice-versa. -- cgit v0.12 From c24d3516daee359922217e9267ba9e0e8aad1ce0 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 21 Jul 2008 19:37:35 +0000 Subject: * generic/tclBasic.c: Extended the existing TIP #280 system (info * generic/tclCmdAH.c: frame), added the ability to track the * generic/tclCompCmds.c: absolute location of literal procedure * generic/tclCompile.c: arguments, and making this information * generic/tclCompile.h: available to uplevel, eval, and * generic/tclInterp.c: siblings. This allows proper tracking of * generic/tclInt.h: absolute location through custom (Tcl-coded) * generic/tclNamesp.c: control structures based on uplevel, etc. * generic/tclProc.c: --- ChangeLog | 12 +++ generic/tclBasic.c | 282 ++++++++++++++++++++++++++++++++++++++++++++------ generic/tclCmdAH.c | 9 +- generic/tclCompCmds.c | 10 +- generic/tclCompile.c | 49 ++++++++- generic/tclCompile.h | 12 ++- generic/tclInt.h | 41 +++++++- generic/tclInterp.c | 11 +- generic/tclNamesp.c | 11 +- generic/tclProc.c | 10 +- 10 files changed, 391 insertions(+), 56 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3966ff0..53267af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-07-21 Andreas Kupries + + * generic/tclBasic.c: Extended the existing TIP #280 system (info + * generic/tclCmdAH.c: frame), added the ability to track the + * generic/tclCompCmds.c: absolute location of literal procedure + * generic/tclCompile.c: arguments, and making this information + * generic/tclCompile.h: available to uplevel, eval, and + * generic/tclInterp.c: siblings. This allows proper tracking of + * generic/tclInt.h: absolute location through custom (Tcl-coded) + * generic/tclNamesp.c: control structures based on uplevel, etc. + * generic/tclProc.c: + 2008-07-07 Andreas Kupries * generic/tclCmdIL.c (InfoFrameCmd): Fixed unsafe idiom of setting diff --git a/generic/tclBasic.c b/generic/tclBasic.c index fd37b89..4ad59c7 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.28 2007/09/13 16:13:19 das Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.29 2008/07/21 19:37:40 andreas_kupries Exp $ */ #include "tclInt.h" @@ -360,8 +360,10 @@ Tcl_CreateInterp() iPtr->cmdFramePtr = NULL; iPtr->linePBodyPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); iPtr->lineBCPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); + iPtr->lineLAPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); Tcl_InitHashTable(iPtr->linePBodyPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineBCPtr, TCL_ONE_WORD_KEYS); + Tcl_InitHashTable(iPtr->lineLAPtr, TCL_ONE_WORD_KEYS); #endif iPtr->activeVarTracePtr = NULL; @@ -1204,6 +1206,26 @@ DeleteInterpProc(interp) Tcl_DeleteHashTable (iPtr->lineBCPtr); ckfree((char*) iPtr->lineBCPtr); iPtr->lineBCPtr = NULL; + + /* + * Location stack for uplevel/eval/... scripts which were passed + * through proc arguments. Actually we track all arguments as we + * don't, cannot know which arguments will be used as scripts and + * which won't. + */ + + if (iPtr->lineLAPtr->numEntries) { + /* + * When the interp goes away we have nothing on the stack, so + * there are no arguments, so this table has to be empty. + */ + + Tcl_Panic ("Argument location tracking table not empty"); + } + + Tcl_DeleteHashTable (iPtr->lineLAPtr); + ckfree((char*) iPtr->lineLAPtr); + iPtr->lineLAPtr = NULL; } #endif ckfree((char *) iPtr); @@ -4005,6 +4027,7 @@ EvalEx(interp, script, numBytes, flags, line) eeFrame.cmd.str.len --; } + TclArgumentEnter (interp, objv, objectsUsed, &eeFrame); iPtr->cmdFramePtr = &eeFrame; #endif iPtr->numLevels++; @@ -4013,6 +4036,7 @@ EvalEx(interp, script, numBytes, flags, line) iPtr->numLevels--; #ifdef TCL_TIP280 iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; + TclArgumentRelease (interp, objv, objectsUsed); ckfree ((char*) eeFrame.line); eeFrame.line = NULL; @@ -4271,6 +4295,207 @@ TclAdvanceLines (line,start,end) } } } + +/* + *---------------------------------------------------------------------- + * Note: The whole data structure access for argument location tracking is + * hidden behind these three functions. The only parts open are the lineLAPtr + * field in the Interp structure. The CFWord definition is internal to here. + * Should make it easier to redo the data structures if we find something more + * space/time efficient. + */ + +/* + *---------------------------------------------------------------------- + * + * TclArgumentEnter -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It enters location references for the arguments of a command to be + * invoked. Only the first entry has the actual data, further entries + * simply count the usage up. + * + * Results: + * None. + * + * Side effects: + * May allocate memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclArgumentEnter(interp,objv,objc,cfPtr) + Tcl_Interp* interp; + Tcl_Obj** objv; + int objc; + CmdFrame* cfPtr; +{ + Interp* iPtr = (Interp*) interp; + int new, i; + Tcl_HashEntry* hPtr; + CFWord* cfwPtr; + + for (i=1; i < objc; i++) { + /* + * Ignore argument words without line information (= dynamic). If + * they are variables they may have location information associated + * with that, either through globally recorded 'set' invokations, or + * literals in bytecode. Eitehr way there is no need to record + * something here. + */ + + if (cfPtr->line [i] < 0) continue; + hPtr = Tcl_CreateHashEntry (iPtr->lineLAPtr, (char*) objv[i], &new); + if (new) { + /* + * The word is not on the stack yet, remember the current location + * and initialize references. + */ + cfwPtr = (CFWord*) ckalloc (sizeof (CFWord)); + cfwPtr->framePtr = cfPtr; + cfwPtr->word = i; + cfwPtr->refCount = 1; + Tcl_SetHashValue (hPtr, cfwPtr); + } else { + /* + * The word is already on the stack, its current location is not + * relevant. Just remember the reference to prevent early removal. + */ + cfwPtr = (CFWord*) Tcl_GetHashValue (hPtr); + cfwPtr->refCount ++; + } + } +} + +/* + *---------------------------------------------------------------------- + * + * TclArgumentRelease -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It removes the location references for the arguments of a command + * just done. Usage is counted down, the data is removed only when + * no user is left over. + * + * Results: + * None. + * + * Side effects: + * May release memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclArgumentRelease(interp,objv,objc) + Tcl_Interp* interp; + Tcl_Obj** objv; + int objc; +{ + Interp* iPtr = (Interp*) interp; + Tcl_HashEntry* hPtr; + CFWord* cfwPtr; + int i; + + for (i=1; i < objc; i++) { + hPtr = Tcl_FindHashEntry (iPtr->lineLAPtr, (char *) objv[i]); + + if (!hPtr) { continue; } + cfwPtr = (CFWord*) Tcl_GetHashValue (hPtr); + + cfwPtr->refCount --; + if (cfwPtr->refCount > 0) { continue; } + + ckfree ((char*) cfwPtr); + Tcl_DeleteHashEntry (hPtr); + } +} + +/* + *---------------------------------------------------------------------- + * + * TclArgumentGet -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It find the location references for a Tcl_Obj, if any. + * + * Results: + * None. + * + * Side effects: + * Writes found location information into the result arguments. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) + Tcl_Interp* interp; + Tcl_Obj* obj; + CmdFrame** cfPtrPtr; + int* wordPtr; +{ + Interp* iPtr = (Interp*) interp; + Tcl_HashEntry* hPtr; + CmdFrame* framePtr; + + /* + * First look for location information recorded in the argument + * stack. That is nearest. + */ + + hPtr = Tcl_FindHashEntry (iPtr->lineLAPtr, (char *) obj); + if (hPtr) { + CFWord* cfwPtr = (CFWord*) Tcl_GetHashValue (hPtr); + *wordPtr = cfwPtr->word; + *cfPtrPtr = cfwPtr->framePtr; + return; + } + + /* + * Check if the Tcl_Obj has location information as a bytecode literal. We + * have to scan the stack up and check all bytecode frames for a possible + * definition. + */ + + for (framePtr = iPtr->cmdFramePtr; + framePtr; + framePtr = framePtr->nextPtr) { + const ByteCode* codePtr; + Tcl_HashEntry* hePtr; + + if (framePtr->type != TCL_LOCATION_BC) continue; + + codePtr = framePtr->data.tebc.codePtr; + hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); + + if (hePtr) { + ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); + Tcl_HashEntry *hlPtr = Tcl_FindHashEntry (&eclPtr->litIndex, (char *) obj); + + if (hlPtr) { + /* + * Convert from the current invoker CmdFrame to a CmdFrame + * refering to the actual word location. We are directly + * manipulating the relevant command frame in the frame stack. + * That is no problem because TEBC is already setting the pc + * for each invokation, so moving it somewhere will not affect + * the following commands. + */ + + ExtIndex* eiPtr = (ExtIndex*) Tcl_GetHashValue (hlPtr); + + framePtr->data.tebc.pc = codePtr->codeStart + eiPtr->pc; + *cfPtrPtr = framePtr; + *wordPtr = eiPtr->word; + } + } + } +} #endif /* @@ -4556,46 +4781,37 @@ TclEvalObjEx(interp, objPtr, flags, invoker, word) * complex invokations. */ - if ((invoker->nline <= word) || (invoker->line[word] < 0)) { - /* Dynamic script, or dynamic context, force our own - * context */ - - script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); - result = Tcl_EvalEx(interp, script, numSrcBytes, flags); + CmdFrame ctx = *invoker; + int pc = 0; - } else { - /* Try to get an absolute context for the evaluation + if (invoker->type == TCL_LOCATION_BC) { + /* Note: Type BC => ctx.data.eval.path is not used. + * ctx.data.tebc.codePtr is used instead. */ + TclGetSrcInfoForPc (&ctx); + pc = 1; + } - CmdFrame ctx = *invoker; - int pc = 0; + script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); - if (invoker->type == TCL_LOCATION_BC) { - /* Note: Type BC => ctx.data.eval.path is not used. - * ctx.data.tebc.codePtr is used instead. - */ - TclGetSrcInfoForPc (&ctx); - pc = 1; - } + if ((ctx.nline <= word) || + (ctx.line[word] < 0) || + (ctx.type != TCL_LOCATION_SOURCE)) { + /* Dynamic script, or dynamic context, force our own + * context */ - if (ctx.type == TCL_LOCATION_SOURCE) { - /* Absolute context to reuse. */ + result = Tcl_EvalEx(interp, script, numSrcBytes, flags); + } else { + /* Absolute context available to reuse. */ - iPtr->invokeCmdFramePtr = &ctx; - iPtr->evalFlags |= TCL_EVAL_CTX; + iPtr->invokeCmdFramePtr = &ctx; + iPtr->evalFlags |= TCL_EVAL_CTX; - script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); - result = EvalEx(interp, script, numSrcBytes, flags, ctx.line [word]); + result = EvalEx(interp, script, numSrcBytes, flags, ctx.line [word]); - if (pc) { - /* Death of SrcInfo reference */ - Tcl_DecrRefCount (ctx.data.eval.path); - } - } else { - /* Dynamic context or script, easier to make our own as - * well */ - script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); - result = Tcl_EvalEx(interp, script, numSrcBytes, flags); + if (pc) { + /* Death of SrcInfo reference */ + Tcl_DecrRefCount (ctx.data.eval.path); } } } diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 6621714..1b63198 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.16 2006/11/28 22:20:00 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.27.2.17 2008/07/21 19:37:41 andreas_kupries Exp $ */ #include "tclInt.h" @@ -613,9 +613,12 @@ Tcl_EvalObjCmd(dummy, interp, objc, objv) #ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[1], TCL_EVAL_DIRECT); #else - /* TIP #280. Make invoking context available to eval'd script */ + /* TIP #280. Make argument location available to eval'd script */ + CmdFrame* invoker = iPtr->cmdFramePtr; + int word = 1; + TclArgumentGet (interp, objv[1], &invoker, &word); result = TclEvalObjEx(interp, objv[1], TCL_EVAL_DIRECT, - iPtr->cmdFramePtr,1); + invoker, word); #endif } else { /* diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index d2cd4bb..3c83a58 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.6 2007/03/01 16:06:19 dkf Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.7 2008/07/21 19:37:42 andreas_kupries Exp $ */ #include "tclInt.h" @@ -62,7 +62,7 @@ AuxDataType tclForeachInfoType = { * The return value is a standard Tcl result, which is normally TCL_OK * unless there was an error while parsing string. If an error occurs * then the interpreter's result contains a standard error message. If - * complation fails because the command requires a second level of + * compilation fails because the command requires a second level of * substitutions, TCL_OUT_LINE_COMPILE is returned indicating that the * command should be compiled "out of line" by emitting code to * invoke its command procedure (Tcl_AppendObjCmd) at runtime. @@ -1756,7 +1756,7 @@ TclCompileIncrCmd(interp, parsePtr, envPtr) * The return value is a standard Tcl result, which is normally TCL_OK * unless there was an error while parsing string. If an error occurs * then the interpreter's result contains a standard error message. If - * complation fails because the command requires a second level of + * compilation fails because the command requires a second level of * substitutions, TCL_OUT_LINE_COMPILE is returned indicating that the * command should be compiled "out of line" by emitting code to * invoke its command procedure (Tcl_LappendObjCmd) at runtime. @@ -1994,7 +1994,7 @@ TclCompileLindexCmd(interp, parsePtr, envPtr) * The return value is a standard Tcl result, which is normally TCL_OK * unless there was an error while parsing string. If an error occurs * then the interpreter's result contains a standard error message. If - * complation fails because the command requires a second level of + * compilation fails because the command requires a second level of * substitutions, TCL_OUT_LINE_COMPILE is returned indicating that the * command should be compiled "out of line" by emitting code to * invoke its command procedure (Tcl_ListObjCmd) at runtime. @@ -2706,7 +2706,7 @@ TclCompileReturnCmd(interp, parsePtr, envPtr) * The return value is a standard Tcl result, which is normally TCL_OK * unless there was an error while parsing string. If an error occurs * then the interpreter's result contains a standard error message. If - * complation fails because the set command requires a second level of + * compilation fails because the set command requires a second level of * substitutions, TCL_OUT_LINE_COMPILE is returned indicating that the * set command should be compiled "out of line" by emitting code to * invoke its command procedure (Tcl_SetCmd) at runtime. diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 59617b0..d8e22e2 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.8 2007/08/24 11:22:16 msofer Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.9 2008/07/21 19:37:43 andreas_kupries Exp $ */ #include "tclInt.h" @@ -702,6 +702,8 @@ TclCleanupByteCode(codePtr) if (hePtr) { ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); int i; + Tcl_HashSearch hSearch; + Tcl_HashEntry *hlPtr; if (eclPtr->type == TCL_LOCATION_SOURCE) { Tcl_DecrRefCount (eclPtr->path); @@ -714,6 +716,15 @@ TclCleanupByteCode(codePtr) ckfree ((char*) eclPtr->loc); } + /* Release index of literals as well. */ + for (hlPtr = Tcl_FirstHashEntry(&eclPtr->litIndex, &hSearch); + hlPtr != NULL; + hlPtr = Tcl_NextHashEntry(&hSearch)) { + ExtIndex* eiPtr = (ExtIndex*) Tcl_GetHashValue (hlPtr); + ckfree((char*) eiPtr); + Tcl_DeleteHashEntry (hlPtr); + } + Tcl_DeleteHashTable (&eclPtr->litIndex); ckfree ((char*) eclPtr); Tcl_DeleteHashEntry (hePtr); } @@ -806,6 +817,7 @@ TclInitCompileEnv(interp, envPtr, string, numBytes, invoker, word) envPtr->extCmdMapPtr->nloc = 0; envPtr->extCmdMapPtr->nuloc = 0; envPtr->extCmdMapPtr->path = NULL; + Tcl_InitHashTable(&envPtr->extCmdMapPtr->litIndex, TCL_ONE_WORD_KEYS); if (invoker == NULL) { /* Initialize the compiler for relative counting */ @@ -1241,8 +1253,25 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) cmdPtr); } } else { + /* Simple argument word of a command. We reach this if + * and only if the command word was not compiled for + * whatever reason. Register the literal's location + * for use by uplevel, etc. commands, should they + * encounter it unmodified. We care only if the we are + * in a context which already allows absolute + * counting. + */ + objIndex = TclRegisterNewLiteral(envPtr, tokenPtr[1].start, tokenPtr[1].size); +#ifdef TCL_TIP280 + if (eclPtr->type == TCL_LOCATION_SOURCE) { + TclEnterCmdWordIndex (eclPtr, + envPtr->literalArrayPtr[objIndex].objPtr, + envPtr->codeNext - envPtr->codeStart, + wordIdx); + } +#endif } TclEmitPush(objIndex, envPtr); } else { @@ -2459,6 +2488,24 @@ EnterCmdWordData(eclPtr, srcOffset, tokenPtr, cmd, len, numWords, line, wlines) *wlines = wwlines; eclPtr->nuloc ++; } + +void +TclEnterCmdWordIndex (eclPtr, obj, pc, word) + ExtCmdLoc *eclPtr; + Tcl_Obj* obj; + int pc; + int word; +{ + int new; + ExtIndex* eiPtr = (ExtIndex*) ckalloc (sizeof (ExtIndex)); + + eiPtr->pc = pc; + eiPtr->word = word; + + Tcl_SetHashValue (Tcl_CreateHashEntry (&eclPtr->litIndex, + (char*) obj, &new), + eiPtr); +} #endif /* diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 06414fd..8192aa4 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.33.2.2 2007/09/13 15:28:11 das Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.33.2.3 2008/07/21 19:37:43 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -137,7 +137,7 @@ typedef struct CmdLocation { typedef struct ECL { int srcOffset; /* cmd location to find the entry */ - int nline; + int nline; /* Number of words in the command */ int* line; /* line information for all words in the command */ } ECL; typedef struct ExtCmdLoc { @@ -146,7 +146,15 @@ typedef struct ExtCmdLoc { ECL* loc; /* Command word locations (lines) */ int nloc; /* Number of allocated entries in 'loc' */ int nuloc; /* Number of used entries in 'loc' */ + Tcl_HashTable litIndex; /* HashValue is ExtIndex* */ } ExtCmdLoc; +typedef struct ExtIndex { + int pc; /* Instruction pointer of the command in ExtCmdLoc.loc[.] */ + int word; /* Index of word in ExtCmdLoc.loc[cmd]->line[.] */ +} ExtIndex; + +EXTERN void TclEnterCmdWordIndex _ANSI_ARGS_(( + ExtCmdLoc *eclPtr, Tcl_Obj* obj, int pc, int word)); #endif /* diff --git a/generic/tclInt.h b/generic/tclInt.h index 76544c0..18f1c70 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.30 2007/09/13 15:28:13 das Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.31 2008/07/21 19:37:43 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -910,7 +910,13 @@ typedef struct CmdFrame { #define TCL_LOCATION_PROC (5) /* Location in a dynamic proc */ #define TCL_LOCATION_LAST (6) /* Number of values in the enum */ -#endif + +typedef struct CFWord { + CmdFrame* framePtr; /* CmdFrame to acess */ + int word; /* Index of the word in the command */ + int refCount; /* #times the word is on the stack */ +} CFWord; +#endif /* TCL_TIP280 */ /* *---------------------------------------------------------------- @@ -1488,13 +1494,34 @@ typedef struct Interp { * location information for its * body. It is keyed by the address of * the Proc structure for a procedure. + * The values are "struct CmdFrame*". */ Tcl_HashTable* lineBCPtr; /* This table remembers for each * ByteCode object the location * information for its body. It is * keyed by the address of the Proc - * structure for a procedure. + * structure for a procedure. The + * values are "struct ExtCmdLoc*" (See + * tclCompile.h). + */ + Tcl_HashTable* lineLAPtr; + /* This table remembers for each + * argument of a command on the + * execution stack the index of the + * argument in the command, and the + * location data of the command. It is + * keyed by the address of the Tcl_Obj + * containing the argument. The values + * are "struct CFWord*" (See + * tclBasic.c). This allows commands + * like uplevel, eval, etc. to find + * location information for their + * arguments, if they are a proper + * literal argument to an invoking + * command. Alt view: An index to the + * CmdFrame stack keyed by command + * argument holders. */ #endif #ifdef TCL_TIP268 @@ -1826,6 +1853,14 @@ EXTERN int TclEvalObjEx _ANSI_ARGS_((Tcl_Interp *interp, int flags, CONST CmdFrame* invoker, int word)); + +EXTERN void TclArgumentEnter _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_Obj* objv[], int objc, CmdFrame* cf)); +EXTERN void TclArgumentRelease _ANSI_ARGS_((Tcl_Interp* interp, + Tcl_Obj* objv[], int objc)); + +EXTERN void TclArgumentGet _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj* obj, + CmdFrame** cfPtrPtr, int* wordPtr)); #endif EXTERN void TclExpandTokenArray _ANSI_ARGS_(( diff --git a/generic/tclInterp.c b/generic/tclInterp.c index bd2db56..88438d7 100644 --- a/generic/tclInterp.c +++ b/generic/tclInterp.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInterp.c,v 1.20.2.4 2008/01/30 10:46:56 msofer Exp $ + * RCS: @(#) $Id: tclInterp.c,v 1.20.2.5 2008/07/21 19:37:43 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2094,9 +2094,12 @@ SlaveEval(interp, slaveInterp, objc, objv) #ifndef TCL_TIP280 result = Tcl_EvalObjEx(slaveInterp, objv[0], 0); #else - /* TIP #280 : Make invoker available to eval'd script */ - Interp* iPtr = (Interp*) interp; - result = TclEvalObjEx(slaveInterp, objv[0], 0, iPtr->cmdFramePtr,0); + /* TIP #280 : Make actual argument location available to eval'd script */ + Interp* iPtr = (Interp*) interp; + CmdFrame* invoker = iPtr->cmdFramePtr; + int word = 0; + TclArgumentGet (interp, objv[0], &invoker, &word); + result = TclEvalObjEx(slaveInterp, objv[0], 0, invoker, word); #endif } else { objPtr = Tcl_ConcatObj(objc, objv); diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 8f42df6..07e5ea6 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.14 2007/05/15 18:32:18 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.15 2008/07/21 19:37:44 andreas_kupries Exp $ */ #include "tclInt.h" @@ -3006,9 +3006,12 @@ NamespaceEvalCmd(dummy, interp, objc, objv) #ifndef TCL_TIP280 result = Tcl_EvalObjEx(interp, objv[3], 0); #else - /* TIP #280 : Make invoker available to eval'd script */ - Interp* iPtr = (Interp*) interp; - result = TclEvalObjEx(interp, objv[3], 0, iPtr->cmdFramePtr,3); + /* TIP #280 : Make actual argument location available to eval'd script */ + Interp* iPtr = (Interp*) interp; + CmdFrame* invoker = iPtr->cmdFramePtr; + int word = 3; + TclArgumentGet (interp, objv[3], &invoker, &word); + result = TclEvalObjEx(interp, objv[3], 0, invoker, word); #endif } else { /* diff --git a/generic/tclProc.c b/generic/tclProc.c index d903ae6..b2c2b8d 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.7 2007/09/13 15:28:17 das Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.8 2008/07/21 19:37:45 andreas_kupries Exp $ */ #include "tclInt.h" @@ -735,7 +735,15 @@ Tcl_UplevelObjCmd(dummy, interp, objc, objv) */ if (objc == 1) { +#ifdef TCL_TIP280 + /* TIP #280. Make argument location available to eval'd script */ + CmdFrame* invoker = NULL; + int word = 0; + TclArgumentGet (interp, objv[0], &invoker, &word); + result = TclEvalObjEx(interp, objv[0], TCL_EVAL_DIRECT, invoker, word); +#else result = Tcl_EvalObjEx(interp, objv[0], TCL_EVAL_DIRECT); +#endif } else { /* * More than one argument: concatenate them together with spaces -- cgit v0.12 From ee9aa214c65a48c44f14e0b78ea877cb7c8ea28f Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 21 Jul 2008 19:38:09 +0000 Subject: * generic/tclBasic.c: Extended the existing TIP #280 system (info * generic/tclCmdAH.c: frame), added the ability to track the * generic/tclCompCmds.c: absolute location of literal procedure * generic/tclCompile.c: arguments, and making this information * generic/tclCompile.h: available to uplevel, eval, and * generic/tclInterp.c: siblings. This allows proper tracking of * generic/tclInt.h: absolute location through custom (Tcl-coded) * generic/tclNamesp.c: control structures based on uplevel, etc. * generic/tclProc.c: --- ChangeLog | 12 +++ generic/tclBasic.c | 298 +++++++++++++++++++++++++++++++++++++++++++-------- generic/tclCmdAH.c | 10 +- generic/tclCompile.c | 47 +++++++- generic/tclCompile.h | 13 ++- generic/tclInt.h | 33 +++++- generic/tclInterp.c | 10 +- generic/tclNamesp.c | 11 +- generic/tclProc.c | 12 ++- generic/tclVar.c | 15 ++- tools/genStubs.tcl | 5 +- unix/Makefile.in | 6 +- win/Makefile.in | 8 +- 13 files changed, 408 insertions(+), 72 deletions(-) diff --git a/ChangeLog b/ChangeLog index 604c15c..c5f53e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-07-21 Andreas Kupries + + * generic/tclBasic.c: Extended the existing TIP #280 system (info + * generic/tclCmdAH.c: frame), added the ability to track the + * generic/tclCompCmds.c: absolute location of literal procedure + * generic/tclCompile.c: arguments, and making this information + * generic/tclCompile.h: available to uplevel, eval, and + * generic/tclInterp.c: siblings. This allows proper tracking of + * generic/tclInt.h: absolute location through custom (Tcl-coded) + * generic/tclNamesp.c: control structures based on uplevel, etc. + * generic/tclProc.c: + 2008-07-21 Pat Thoyts * generic/tclFCmd.c: Inodes on windows are unreliable [Bug 2015723] diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 07c2ef7..8c1fe40 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295 2008/03/14 19:53:10 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.1 2008/07/21 19:38:13 andreas_kupries Exp $ */ #include "tclInt.h" @@ -444,8 +444,10 @@ Tcl_CreateInterp(void) iPtr->cmdFramePtr = NULL; iPtr->linePBodyPtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); iPtr->lineBCPtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); + iPtr->lineLAPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); Tcl_InitHashTable(iPtr->linePBodyPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineBCPtr, TCL_ONE_WORD_KEYS); + Tcl_InitHashTable(iPtr->lineLAPtr, TCL_ONE_WORD_KEYS); iPtr->activeVarTracePtr = NULL; @@ -1411,6 +1413,26 @@ DeleteInterpProc( Tcl_DeleteHashTable(iPtr->lineBCPtr); ckfree((char *) iPtr->lineBCPtr); iPtr->lineBCPtr = NULL; + + /* + * Location stack for uplevel/eval/... scripts which were passed + * through proc arguments. Actually we track all arguments as we + * don't, cannot know which arguments will be used as scripts and + * which won't. + */ + + if (iPtr->lineLAPtr->numEntries) { + /* + * When the interp goes away we have nothing on the stack, so + * there are no arguments, so this table has to be empty. + */ + + Tcl_Panic ("Argument location tracking table not empty"); + } + + Tcl_DeleteHashTable (iPtr->lineLAPtr); + ckfree((char*) iPtr->lineLAPtr); + iPtr->lineLAPtr = NULL; } Tcl_DeleteHashTable(&iPtr->varTraces); @@ -4291,12 +4313,14 @@ TclEvalEx( eeFramePtr->nline = objectsUsed; eeFramePtr->line = lines; + TclArgumentEnter (interp, objv, objectsUsed, eeFramePtr); iPtr->cmdFramePtr = eeFramePtr; iPtr->numLevels++; code = TclEvalObjvInternal(interp, objectsUsed, objv, parsePtr->commandStart, parsePtr->commandSize, 0); iPtr->numLevels--; iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; + TclArgumentRelease (interp, objv, objectsUsed); eeFramePtr->line = NULL; eeFramePtr->nline = 0; @@ -4446,6 +4470,207 @@ TclAdvanceLines( /* *---------------------------------------------------------------------- + * Note: The whole data structure access for argument location tracking is + * hidden behind these three functions. The only parts open are the lineLAPtr + * field in the Interp structure. The CFWord definition is internal to here. + * Should make it easier to redo the data structures if we find something more + * space/time efficient. + */ + +/* + *---------------------------------------------------------------------- + * + * TclArgumentEnter -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It enters location references for the arguments of a command to be + * invoked. Only the first entry has the actual data, further entries + * simply count the usage up. + * + * Results: + * None. + * + * Side effects: + * May allocate memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclArgumentEnter(interp,objv,objc,cfPtr) + Tcl_Interp* interp; + Tcl_Obj** objv; + int objc; + CmdFrame* cfPtr; +{ + Interp* iPtr = (Interp*) interp; + int new, i; + Tcl_HashEntry* hPtr; + CFWord* cfwPtr; + + for (i=1; i < objc; i++) { + /* + * Ignore argument words without line information (= dynamic). If + * they are variables they may have location information associated + * with that, either through globally recorded 'set' invokations, or + * literals in bytecode. Eitehr way there is no need to record + * something here. + */ + + if (cfPtr->line [i] < 0) continue; + hPtr = Tcl_CreateHashEntry (iPtr->lineLAPtr, (char*) objv[i], &new); + if (new) { + /* + * The word is not on the stack yet, remember the current location + * and initialize references. + */ + cfwPtr = (CFWord*) ckalloc (sizeof (CFWord)); + cfwPtr->framePtr = cfPtr; + cfwPtr->word = i; + cfwPtr->refCount = 1; + Tcl_SetHashValue (hPtr, cfwPtr); + } else { + /* + * The word is already on the stack, its current location is not + * relevant. Just remember the reference to prevent early removal. + */ + cfwPtr = (CFWord*) Tcl_GetHashValue (hPtr); + cfwPtr->refCount ++; + } + } +} + +/* + *---------------------------------------------------------------------- + * + * TclArgumentRelease -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It removes the location references for the arguments of a command + * just done. Usage is counted down, the data is removed only when + * no user is left over. + * + * Results: + * None. + * + * Side effects: + * May release memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclArgumentRelease(interp,objv,objc) + Tcl_Interp* interp; + Tcl_Obj** objv; + int objc; +{ + Interp* iPtr = (Interp*) interp; + Tcl_HashEntry* hPtr; + CFWord* cfwPtr; + int i; + + for (i=1; i < objc; i++) { + hPtr = Tcl_FindHashEntry (iPtr->lineLAPtr, (char *) objv[i]); + + if (!hPtr) { continue; } + cfwPtr = (CFWord*) Tcl_GetHashValue (hPtr); + + cfwPtr->refCount --; + if (cfwPtr->refCount > 0) { continue; } + + ckfree ((char*) cfwPtr); + Tcl_DeleteHashEntry (hPtr); + } +} + +/* + *---------------------------------------------------------------------- + * + * TclArgumentGet -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It find the location references for a Tcl_Obj, if any. + * + * Results: + * None. + * + * Side effects: + * Writes found location information into the result arguments. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) + Tcl_Interp* interp; + Tcl_Obj* obj; + CmdFrame** cfPtrPtr; + int* wordPtr; +{ + Interp* iPtr = (Interp*) interp; + Tcl_HashEntry* hPtr; + CmdFrame* framePtr; + + /* + * First look for location information recorded in the argument + * stack. That is nearest. + */ + + hPtr = Tcl_FindHashEntry (iPtr->lineLAPtr, (char *) obj); + if (hPtr) { + CFWord* cfwPtr = (CFWord*) Tcl_GetHashValue (hPtr); + *wordPtr = cfwPtr->word; + *cfPtrPtr = cfwPtr->framePtr; + return; + } + + /* + * Check if the Tcl_Obj has location information as a bytecode literal. We + * have to scan the stack up and check all bytecode frames for a possible + * definition. + */ + + for (framePtr = iPtr->cmdFramePtr; + framePtr; + framePtr = framePtr->nextPtr) { + const ByteCode* codePtr; + Tcl_HashEntry* hePtr; + + if (framePtr->type != TCL_LOCATION_BC) continue; + + codePtr = framePtr->data.tebc.codePtr; + hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); + + if (hePtr) { + ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); + Tcl_HashEntry *hlPtr = Tcl_FindHashEntry (&eclPtr->litIndex, (char *) obj); + + if (hlPtr) { + /* + * Convert from the current invoker CmdFrame to a CmdFrame + * refering to the actual word location. We are directly + * manipulating the relevant command frame in the frame stack. + * That is no problem because TEBC is already setting the pc + * for each invokation, so moving it somewhere will not affect + * the following commands. + */ + + ExtIndex* eiPtr = (ExtIndex*) Tcl_GetHashValue (hlPtr); + + framePtr->data.tebc.pc = codePtr->codeStart + eiPtr->pc; + *cfPtrPtr = framePtr; + *wordPtr = eiPtr->word; + } + } + } +} + +/* + *---------------------------------------------------------------------- * * Tcl_Eval -- * @@ -4686,66 +4911,53 @@ TclEvalObjEx( * complex invokations. */ - if ((invoker->nline <= word) || (invoker->line[word] < 0)) { + int pc = 0; + CmdFrame *ctxPtr = (CmdFrame *) + TclStackAlloc(interp, sizeof(CmdFrame)); + + *ctxPtr = *invoker; + if (invoker->type == TCL_LOCATION_BC) { + /* + * Note: Type BC => ctxPtr->data.eval.path is not used. + * ctxPtr->data.tebc.codePtr is used instead. + */ + + TclGetSrcInfoForPc(ctxPtr); + pc = 1; + } + + script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); + + if ((ctxPtr->nline <= word) || + (ctxPtr->line[word] < 0) || + (ctxPtr->type != TCL_LOCATION_SOURCE)) { /* * Dynamic script, or dynamic context, force our own * context. */ - script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); result = Tcl_EvalEx(interp, script, numSrcBytes, flags); } else { /* - * Try to get an absolute context for the evaluation. + * Absolute context to reuse. */ - int pc = 0; - CmdFrame *ctxPtr = (CmdFrame *) - TclStackAlloc(interp, sizeof(CmdFrame)); + iPtr->invokeCmdFramePtr = ctxPtr; + iPtr->evalFlags |= TCL_EVAL_CTX; - *ctxPtr = *invoker; - if (invoker->type == TCL_LOCATION_BC) { - /* - * Note: Type BC => ctxPtr->data.eval.path is not used. - * ctxPtr->data.tebc.codePtr is used instead. - */ - - TclGetSrcInfoForPc(ctxPtr); - pc = 1; - } + result = TclEvalEx(interp, script, numSrcBytes, flags, + ctxPtr->line[word]); - if (ctxPtr->type == TCL_LOCATION_SOURCE) { + if (pc) { /* - * Absolute context to reuse. + * Death of SrcInfo reference. */ - iPtr->invokeCmdFramePtr = ctxPtr; - iPtr->evalFlags |= TCL_EVAL_CTX; - - script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); - result = TclEvalEx(interp, script, numSrcBytes, flags, - ctxPtr->line[word]); - - if (pc) { - /* - * Death of SrcInfo reference. - */ - - Tcl_DecrRefCount(ctxPtr->data.eval.path); - } - } else { - /* - * Dynamic context or script, easier to make our own as - * well. - */ - - script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); - result = Tcl_EvalEx(interp, script, numSrcBytes, flags); + Tcl_DecrRefCount(ctxPtr->data.eval.path); } - - TclStackFree(interp, ctxPtr); } + TclStackFree(interp, ctxPtr); } } else { /* diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index e054c29..abcb083 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdAH.c,v 1.93 2008/03/14 16:07:23 dgp Exp $ + * RCS: @(#) $Id: tclCmdAH.c,v 1.93.2.1 2008/07/21 19:38:17 andreas_kupries Exp $ */ #include "tclInt.h" @@ -656,11 +656,15 @@ Tcl_EvalObjCmd( if (objc == 2) { /* - * TIP #280. Make invoking context available to eval'd script. + * TIP #280. Make argument location available to eval'd script. */ + CmdFrame* invoker = iPtr->cmdFramePtr; + int word = 1; + TclArgumentGet (interp, objv[1], &invoker, &word); + result = TclEvalObjEx(interp, objv[1], TCL_EVAL_DIRECT, - iPtr->cmdFramePtr, 1); + invoker, word); } else { /* * More than one argument: concatenate them together with spaces diff --git a/generic/tclCompile.c b/generic/tclCompile.c index bdb81bb..145a7b9 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.1 2008/05/16 14:27:30 msofer Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.2 2008/07/21 19:38:17 andreas_kupries Exp $ */ #include "tclInt.h" @@ -802,6 +802,8 @@ TclCleanupByteCode( if (hePtr) { ExtCmdLoc *eclPtr = Tcl_GetHashValue(hePtr); int i; + Tcl_HashSearch hSearch; + Tcl_HashEntry *hlPtr; if (eclPtr->type == TCL_LOCATION_SOURCE) { Tcl_DecrRefCount(eclPtr->path); @@ -814,6 +816,15 @@ TclCleanupByteCode( ckfree((char *) eclPtr->loc); } + /* Release index of literals as well. */ + for (hlPtr = Tcl_FirstHashEntry(&eclPtr->litIndex, &hSearch); + hlPtr != NULL; + hlPtr = Tcl_NextHashEntry(&hSearch)) { + ExtIndex* eiPtr = (ExtIndex*) Tcl_GetHashValue (hlPtr); + ckfree((char*) eiPtr); + Tcl_DeleteHashEntry (hlPtr); + } + Tcl_DeleteHashTable (&eclPtr->litIndex); ckfree((char *) eclPtr); Tcl_DeleteHashEntry(hePtr); } @@ -903,6 +914,7 @@ TclInitCompileEnv( envPtr->extCmdMapPtr->nloc = 0; envPtr->extCmdMapPtr->nuloc = 0; envPtr->extCmdMapPtr->path = NULL; + Tcl_InitHashTable(&envPtr->extCmdMapPtr->litIndex, TCL_ONE_WORD_KEYS); if (invoker == NULL) { /* @@ -1442,8 +1454,23 @@ TclCompileScript( TclHideLiteral(interp, envPtr, objIndex); } } else { + /* + * Simple argument word of a command. We reach this if and + * only if the command word was not compiled for whatever + * reason. Register the literal's location for use by + * uplevel, etc. commands, should they encounter it + * unmodified. We care only if the we are in a context + * which already allows absolute counting. + */ objIndex = TclRegisterNewLiteral(envPtr, tokenPtr[1].start, tokenPtr[1].size); + + if (eclPtr->type == TCL_LOCATION_SOURCE) { + TclEnterCmdWordIndex (eclPtr, + envPtr->literalArrayPtr[objIndex].objPtr, + envPtr->codeNext - envPtr->codeStart, + wordIdx); + } } TclEmitPush(objIndex, envPtr); } /* for loop */ @@ -2412,6 +2439,24 @@ EnterCmdWordData( eclPtr->nuloc ++; } +void +TclEnterCmdWordIndex (eclPtr, obj, pc, word) + ExtCmdLoc *eclPtr; + Tcl_Obj* obj; + int pc; + int word; +{ + int new; + ExtIndex* eiPtr = (ExtIndex*) ckalloc (sizeof (ExtIndex)); + + eiPtr->pc = pc; + eiPtr->word = word; + + Tcl_SetHashValue (Tcl_CreateHashEntry (&eclPtr->litIndex, + (char*) obj, &new), + eiPtr); +} + /* *---------------------------------------------------------------------- * diff --git a/generic/tclCompile.h b/generic/tclCompile.h index eee0da9..f1be02c 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.90 2008/02/26 20:28:59 jenglish Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.90.2.1 2008/07/21 19:38:18 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -129,7 +129,7 @@ typedef struct CmdLocation { typedef struct ECL { int srcOffset; /* Command location to find the entry. */ - int nline; + int nline; /* Number of words in the command */ int *line; /* Line information for all words in the * command. */ } ECL; @@ -141,8 +141,17 @@ typedef struct ExtCmdLoc { ECL *loc; /* Command word locations (lines). */ int nloc; /* Number of allocated entries in 'loc'. */ int nuloc; /* Number of used entries in 'loc'. */ + Tcl_HashTable litIndex; /* HashValue is ExtIndex* */ } ExtCmdLoc; +typedef struct ExtIndex { + int pc; /* Instruction pointer of a command in ExtCmdLoc.loc[.] */ + int word; /* Index of word in ExtCmdLoc.loc[cmd]->line[.] */ +} ExtIndex; + +EXTERN void TclEnterCmdWordIndex (ExtCmdLoc *eclPtr, Tcl_Obj* obj, + int pc, int word); + /* * CompileProcs need the ability to record information during compilation that * can be used by bytecode instructions during execution. The AuxData diff --git a/generic/tclInt.h b/generic/tclInt.h index 8a71b59..e0e65e4 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362.2.1 2008/03/31 17:21:14 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.2 2008/07/21 19:38:18 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -1141,6 +1141,12 @@ typedef struct CmdFrame { } cmd; } CmdFrame; +typedef struct CFWord { + CmdFrame* framePtr; /* CmdFrame to acess */ + int word; /* Index of the word in the command */ + int refCount; /* #times the word is on the stack */ +} CFWord; + /* * The following macros define the allowed values for the type field of the * CmdFrame structure above. Some of the values occur only in the extended @@ -1832,11 +1838,26 @@ typedef struct Interp { Tcl_HashTable *linePBodyPtr;/* This table remembers for each statically * defined procedure the location information * for its body. It is keyed by the address of - * the Proc structure for a procedure. */ + * the Proc structure for a procedure. The + * values are "struct CmdFrame*". */ Tcl_HashTable *lineBCPtr; /* This table remembers for each ByteCode * object the location information for its * body. It is keyed by the address of the - * Proc structure for a procedure. */ + * Proc structure for a procedure. The values + * are "struct ExtCmdLoc*" (See tclCompile.h) */ + Tcl_HashTable* lineLAPtr; /* This table remembers for each argument of a + * command on the execution stack the index of + * the argument in the command, and the + * location data of the command. It is keyed + * by the address of the Tcl_Obj containing + * the argument. The values are "struct + * CFWord*" (See tclBasic.c). This allows + * commands like uplevel, eval, etc. to find + * location information for their arguments, + * if they are a proper literal argument to an + * invoking command. Alt view: An index to the + * CmdFrame stack keyed by command argument + * holders. */ /* * TIP #268. The currently active selection mode, i.e. the package require * preferences. @@ -2430,6 +2451,12 @@ MODULE_SCOPE char tclEmptyString; MODULE_SCOPE void TclAdvanceLines(int *line, const char *start, const char *end); +MODULE_SCOPE void TclArgumentEnter(Tcl_Interp* interp, + Tcl_Obj* objv[], int objc, CmdFrame* cf); +MODULE_SCOPE void TclArgumentRelease(Tcl_Interp* interp, + Tcl_Obj* objv[], int objc); +MODULE_SCOPE void TclArgumentGet(Tcl_Interp* interp, Tcl_Obj* obj, + CmdFrame** cfPtrPtr, int* wordPtr); MODULE_SCOPE int TclArraySet(Tcl_Interp *interp, Tcl_Obj *arrayNameObj, Tcl_Obj *arrayElemObj); MODULE_SCOPE double TclBignumToDouble(mp_int *bignum); diff --git a/generic/tclInterp.c b/generic/tclInterp.c index 78772bd..67a031a 100644 --- a/generic/tclInterp.c +++ b/generic/tclInterp.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInterp.c,v 1.83.2.1 2008/06/20 19:23:25 dgp Exp $ + * RCS: @(#) $Id: tclInterp.c,v 1.83.2.2 2008/07/21 19:38:19 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2472,11 +2472,15 @@ SlaveEval( if (objc == 1) { /* - * TIP #280: Make invoker available to eval'd script. + * TIP #280: Make actual argument location available to eval'd script. */ Interp *iPtr = (Interp *) interp; - result = TclEvalObjEx(slaveInterp, objv[0], 0, iPtr->cmdFramePtr, 0); + CmdFrame* invoker = iPtr->cmdFramePtr; + int word = 0; + + TclArgumentGet (interp, objv[0], &invoker, &word); + result = TclEvalObjEx(slaveInterp, objv[0], 0, invoker, word); } else { objPtr = Tcl_ConcatObj(objc, objv); Tcl_IncrRefCount(objPtr); diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 717eaf9..dab46fc 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -23,7 +23,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.162.2.2 2008/05/22 15:25:54 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.162.2.3 2008/07/21 19:38:19 andreas_kupries Exp $ */ #include "tclInt.h" @@ -3279,12 +3279,15 @@ NamespaceEvalCmd( if (objc == 4) { /* - * TIP #280: Make invoker available to eval'd script. + * TIP #280: Make actual argument location available to eval'd script. */ - Interp *iPtr = (Interp *) interp; + Interp *iPtr = (Interp *) interp; + CmdFrame* invoker = iPtr->cmdFramePtr; + int word = 3; - result = TclEvalObjEx(interp, objv[3], 0, iPtr->cmdFramePtr, 3); + TclArgumentGet (interp, objv[3], &invoker, &word); + result = TclEvalObjEx(interp, objv[3], 0, invoker, word); } else { /* * More than one argument: concatenate them together with spaces diff --git a/generic/tclProc.c b/generic/tclProc.c index ce85c7a..f9e6822 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.139 2007/12/13 15:23:20 dgp Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.139.2.1 2008/07/21 19:38:19 andreas_kupries Exp $ */ #include "tclInt.h" @@ -908,7 +908,15 @@ Tcl_UplevelObjCmd( */ if (objc == 1) { - result = Tcl_EvalObjEx(interp, objv[0], TCL_EVAL_DIRECT); + /* + * TIP #280. Make argument location available to eval'd script + */ + + CmdFrame* invoker = NULL; + int word = 0; + + TclArgumentGet (interp, objv[0], &invoker, &word); + result = TclEvalObjEx(interp, objv[0], 0, invoker, word); } else { /* * More than one argument: concatenate them together with spaces diff --git a/generic/tclVar.c b/generic/tclVar.c index 3bcc527..d2314c5 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.160 2008/03/11 17:23:56 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.160.2.1 2008/07/21 19:38:20 andreas_kupries Exp $ */ #include "tclInt.h" @@ -67,10 +67,19 @@ VarHashCreateVar( #define VarHashFindVar(tablePtr, key) \ VarHashCreateVar((tablePtr), (key), NULL) - +#ifdef _AIX +/* Work around AIX cc problem causing crash in TclDeleteVars. Possible + * optimizer bug. Do _NOT_ inline this function, this re-activates the + * problem. + */ +static void +VarHashInvalidateEntry(Var* varPtr) { + varPtr->flags |= VAR_DEAD_HASH; +} +#else #define VarHashInvalidateEntry(varPtr) \ ((varPtr)->flags |= VAR_DEAD_HASH) - +#endif #define VarHashDeleteEntry(varPtr) \ Tcl_DeleteHashEntry(&(((VarInHash *) varPtr)->entry)) diff --git a/tools/genStubs.tcl b/tools/genStubs.tcl index 5bc3984..4050d21 100644 --- a/tools/genStubs.tcl +++ b/tools/genStubs.tcl @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: genStubs.tcl,v 1.22 2007/12/13 15:28:40 dgp Exp $ +# RCS: @(#) $Id: genStubs.tcl,v 1.22.2.1 2008/07/21 19:38:21 andreas_kupries Exp $ package require Tcl 8.4 @@ -208,6 +208,9 @@ proc genStubs::rewriteFile {file text} { set in [open ${file} r] set out [open ${file}.new w] + # Hardwire the genstubs output to Unix eol. + fconfigure $out -translation lf + while {![eof $in]} { set line [gets $in] if {[string match "*!BEGIN!*" $line]} { diff --git a/unix/Makefile.in b/unix/Makefile.in index 7ce7fdf..5fe8a5c 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.3 2008/06/26 22:10:24 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.4 2008/07/21 19:38:21 andreas_kupries Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -876,8 +876,8 @@ install-private-headers: libraries $(INSTALL_DATA) tclConfig.h "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \ fi; -Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in - $(SHELL) config.status +#Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in +# $(SHELL) config.status #tclConfig.h: $(UNIX_DIR)/tclConfig.h.in # $(SHELL) config.status diff --git a/win/Makefile.in b/win/Makefile.in index f453595..76d9302 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124 2008/03/12 09:51:39 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.1 2008/07/21 19:38:22 andreas_kupries Exp $ VERSION = @TCL_VERSION@ @@ -717,8 +717,8 @@ gdb: binaries depend: -Makefile: $(SRC_DIR)/Makefile.in - ./config.status +#Makefile: $(SRC_DIR)/Makefile.in +# ./config.status cleanhelp: $(RM) *.hlp *.cnt *.GID *.rtf man2tcl.exe @@ -747,4 +747,4 @@ genstubs: "$(GENERIC_DIR_NATIVE)" \ "$(GENERIC_DIR_NATIVE)\tcl.decls" \ "$(GENERIC_DIR_NATIVE)\tclInt.decls" \ - "$(GENERIC_DIR_NATIVE)\tclTomMath.decls" + "$(GENERIC_DIR_NATIVE)\tclTomMath.decls" \ No newline at end of file -- cgit v0.12 From 4ddfd8ad061c4cb4c3f1873462d8a94186a1cae8 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 21 Jul 2008 19:44:37 +0000 Subject: Undo local changes which did not belong in the last commit. --- tools/genStubs.tcl | 5 +---- unix/Makefile.in | 6 +++--- win/Makefile.in | 8 ++++---- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/tools/genStubs.tcl b/tools/genStubs.tcl index 4050d21..5390456 100644 --- a/tools/genStubs.tcl +++ b/tools/genStubs.tcl @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: genStubs.tcl,v 1.22.2.1 2008/07/21 19:38:21 andreas_kupries Exp $ +# RCS: @(#) $Id: genStubs.tcl,v 1.22.2.2 2008/07/21 19:44:37 andreas_kupries Exp $ package require Tcl 8.4 @@ -208,9 +208,6 @@ proc genStubs::rewriteFile {file text} { set in [open ${file} r] set out [open ${file}.new w] - # Hardwire the genstubs output to Unix eol. - fconfigure $out -translation lf - while {![eof $in]} { set line [gets $in] if {[string match "*!BEGIN!*" $line]} { diff --git a/unix/Makefile.in b/unix/Makefile.in index 5fe8a5c..aa3df78 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.4 2008/07/21 19:38:21 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.5 2008/07/21 19:44:37 andreas_kupries Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -876,8 +876,8 @@ install-private-headers: libraries $(INSTALL_DATA) tclConfig.h "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \ fi; -#Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in -# $(SHELL) config.status +Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in + $(SHELL) config.status #tclConfig.h: $(UNIX_DIR)/tclConfig.h.in # $(SHELL) config.status diff --git a/win/Makefile.in b/win/Makefile.in index 76d9302..f1810fa 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.1 2008/07/21 19:38:22 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.2 2008/07/21 19:44:37 andreas_kupries Exp $ VERSION = @TCL_VERSION@ @@ -717,8 +717,8 @@ gdb: binaries depend: -#Makefile: $(SRC_DIR)/Makefile.in -# ./config.status +Makefile: $(SRC_DIR)/Makefile.in + ./config.status cleanhelp: $(RM) *.hlp *.cnt *.GID *.rtf man2tcl.exe @@ -747,4 +747,4 @@ genstubs: "$(GENERIC_DIR_NATIVE)" \ "$(GENERIC_DIR_NATIVE)\tcl.decls" \ "$(GENERIC_DIR_NATIVE)\tclInt.decls" \ - "$(GENERIC_DIR_NATIVE)\tclTomMath.decls" \ No newline at end of file + "$(GENERIC_DIR_NATIVE)\tclTomMath.decls" -- cgit v0.12 From d1725d3e767a10fefd1ad97b98faffcbea03e862 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 22 Jul 2008 03:34:27 +0000 Subject: * tests/encoding.test: Make failing tests pass again. [Bug 1972867] --- ChangeLog | 4 ++++ tests/encoding.test | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c5f53e1..aeb8c8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-07-21 Don Porter + + * tests/encoding.test: Make failing tests pass again. [Bug 1972867] + 2008-07-21 Andreas Kupries * generic/tclBasic.c: Extended the existing TIP #280 system (info diff --git a/tests/encoding.test b/tests/encoding.test index a11f5cd..02dc07a 100644 --- a/tests/encoding.test +++ b/tests/encoding.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: encoding.test,v 1.27 2007/05/04 14:59:06 kennykb Exp $ +# RCS: @(#) $Id: encoding.test,v 1.27.4.1 2008/07/22 03:34:30 dgp Exp $ package require tcltest 2 @@ -69,6 +69,7 @@ test encoding-2.2 {Tcl_FreeEncoding: refcount != 0} {testencoding} { encoding dirs [list [pwd]] set x [encoding convertto shiftjis \u4e4e] ;# old one found encoding system identity + llength shiftjis lappend x [catch {encoding convertto shiftjis \u4e4e} msg] $msg encoding system identity encoding dirs $path @@ -222,6 +223,7 @@ test encoding-11.1 {LoadEncodingFile: unknown encoding} {testencoding} { set path [encoding dirs] encoding system iso8859-1 encoding dirs {} + llength jis0208 set x [list [catch {encoding convertto jis0208 \u4e4e} msg] $msg] encoding dirs $path encoding system $system -- cgit v0.12 From af7d3aa263b52ca80b11922cf1af375a3b683d0e Mon Sep 17 00:00:00 2001 From: nijtmans Date: Tue, 22 Jul 2008 20:49:25 +0000 Subject: define DLLEXPORT as __attribute__ ((visibility("default"))) for gcc >= 4.0. This allows extensions to be compiled with -fvisiblity=hidden and still all symbols decorated with EXPORT will be exported. See: (backport from trunk tcl.h 1.256) --- generic/tcl.h | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/generic/tcl.h b/generic/tcl.h index 921a1b1..4c5d535 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.2 2008/06/30 03:18:57 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.3 2008/07/22 20:49:25 nijtmans Exp $ */ #ifndef _TCL @@ -172,26 +172,27 @@ extern "C" { #if (defined(__WIN32__) && (defined(_MSC_VER) || (__BORLANDC__ >= 0x0550) || defined(__LCC__) || defined(__WATCOMC__) || (defined(__GNUC__) && defined(__declspec)))) # define HAVE_DECLSPEC 1 -#endif - -#ifdef STATIC_BUILD -# define DLLIMPORT -# define DLLEXPORT -# if HAVE_DECLSPEC && defined(_DLL) -# define CRTIMPORT __declspec(dllimport) +# ifdef STATIC_BUILD +# define DLLIMPORT +# define DLLEXPORT +# ifdef _DLL +# define CRTIMPORT __declspec(dllimport) +# else +# define CRTIMPORT +# endif # else -# define CRTIMPORT +# define DLLIMPORT __declspec(dllimport) +# define DLLEXPORT __declspec(dllexport) +# define CRTIMPORT __declspec(dllimport) # endif #else -# if HAVE_DECLSPEC -# define DLLIMPORT __declspec(dllimport) -# define DLLEXPORT __declspec(dllexport) -# define CRTIMPORT __declspec(dllimport) +# define DLLIMPORT +# if defined(__GNUC__) && __GNUC__ > 3 +# define DLLEXPORT __attribute__ ((visibility("default"))) # else -# define DLLIMPORT -# define DLLEXPORT -# define CRTIMPORT +# define DLLEXPORT # endif +# define CRTIMPORT #endif /* -- cgit v0.12 From 1a2015301662b5c0554f2f7ccfef588da923588b Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 22 Jul 2008 21:40:03 +0000 Subject: * generic/tclBasic.c: Reworked the handling of bytecode literals * generic/tclCompile.c: for #280 to fix the abysmal performance * generic/tclCompile.h: for deep recursion, replaced the linear * generic/tclExecute.c: search through the whole stack with * generic/tclInt.h: another hashtable and simplified the data structure used by the compiler (array instead of hashtable). Incidentially this also fixes the memory leak reported via [Bug 2024937]. --- ChangeLog | 11 +++++ generic/tclBasic.c | 137 ++++++++++++++++++++++++++++++++++++++------------- generic/tclCompile.c | 43 ++++++++++------ generic/tclCompile.h | 10 ++-- generic/tclExecute.c | 7 ++- generic/tclInt.h | 20 +++++++- 6 files changed, 169 insertions(+), 59 deletions(-) diff --git a/ChangeLog b/ChangeLog index 53267af..6803811 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-07-22 Andreas Kupries + + * generic/tclBasic.c: Reworked the handling of bytecode literals + * generic/tclCompile.c: for #280 to fix the abysmal performance + * generic/tclCompile.h: for deep recursion, replaced the linear + * generic/tclExecute.c: search through the whole stack with + * generic/tclInt.h: another hashtable and simplified the data + structure used by the compiler (array instead of hashtable). + Incidentially this also fixes the memory leak reported via [Bug + 2024937]. + 2008-07-21 Andreas Kupries * generic/tclBasic.c: Extended the existing TIP #280 system (info diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 4ad59c7..6ec5763 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.29 2008/07/21 19:37:40 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.30 2008/07/22 21:40:24 andreas_kupries Exp $ */ #include "tclInt.h" @@ -361,9 +361,11 @@ Tcl_CreateInterp() iPtr->linePBodyPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); iPtr->lineBCPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); iPtr->lineLAPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); + iPtr->lineLABCPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); Tcl_InitHashTable(iPtr->linePBodyPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineBCPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineLAPtr, TCL_ONE_WORD_KEYS); + Tcl_InitHashTable(iPtr->lineLABCPtr, TCL_ONE_WORD_KEYS); #endif iPtr->activeVarTracePtr = NULL; @@ -1226,6 +1228,19 @@ DeleteInterpProc(interp) Tcl_DeleteHashTable (iPtr->lineLAPtr); ckfree((char*) iPtr->lineLAPtr); iPtr->lineLAPtr = NULL; + + if (iPtr->lineLABCPtr->numEntries) { + /* + * When the interp goes away we have nothing on the stack, so + * there are no arguments, so this table has to be empty. + */ + + Tcl_Panic ("Argument location tracking table not empty"); + } + + Tcl_DeleteHashTable (iPtr->lineLABCPtr); + ckfree((char*) iPtr->lineLABCPtr); + iPtr->lineLABCPtr = NULL; } #endif ckfree((char *) iPtr); @@ -4413,7 +4428,82 @@ TclArgumentRelease(interp,objv,objc) Tcl_DeleteHashEntry (hPtr); } } + + +void +TclArgumentBCEnter(interp,codePtr,cfPtr) + Tcl_Interp* interp; + void* codePtr; + CmdFrame* cfPtr; +{ + Interp* iPtr = (Interp*) interp; + Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); + + if (hePtr) { + ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); + int i; + + for (i=0; i < eclPtr->nueiloc; i++) { + + ExtIndex* eiPtr = &eclPtr->eiloc[i]; + Tcl_Obj* obj = eiPtr->obj; + int new; + Tcl_HashEntry* hPtr; + CFWordBC* cfwPtr; + + hPtr = Tcl_CreateHashEntry (iPtr->lineLABCPtr, (char*) obj, &new); + if (new) { + /* + * The word is not on the stack yet, remember the current location + * and initialize references. + */ + cfwPtr = (CFWordBC*) ckalloc (sizeof (CFWordBC)); + cfwPtr->framePtr = cfPtr; + cfwPtr->eiPtr = eiPtr; + cfwPtr->refCount = 1; + Tcl_SetHashValue (hPtr, cfwPtr); + } else { + /* + * The word is already on the stack, its current location is not + * relevant. Just remember the reference to prevent early removal. + */ + cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); + cfwPtr->refCount ++; + } + } /* for */ + } /* if */ +} + +void +TclArgumentBCRelease(interp,codePtr) + Tcl_Interp* interp; + void* codePtr; +{ + Interp* iPtr = (Interp*) interp; + Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); + + if (hePtr) { + ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); + int i; + + for (i=0; i < eclPtr->nueiloc; i++) { + Tcl_Obj* obj = eclPtr->eiloc[i].obj; + Tcl_HashEntry* hPtr = Tcl_FindHashEntry (iPtr->lineLABCPtr, (char *) obj); + CFWordBC* cfwPtr; + if (!hPtr) { continue; } + + cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); + + cfwPtr->refCount --; + if (cfwPtr->refCount > 0) { continue; } + + ckfree ((char*) cfwPtr); + Tcl_DeleteHashEntry (hPtr); + } /* for */ + } /* if */ +} + /* *---------------------------------------------------------------------- * @@ -4457,43 +4547,20 @@ TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) } /* - * Check if the Tcl_Obj has location information as a bytecode literal. We - * have to scan the stack up and check all bytecode frames for a possible - * definition. + * Check if the Tcl_Obj has location information as a bytecode literal, in + * that stack. */ - for (framePtr = iPtr->cmdFramePtr; - framePtr; - framePtr = framePtr->nextPtr) { - const ByteCode* codePtr; - Tcl_HashEntry* hePtr; - - if (framePtr->type != TCL_LOCATION_BC) continue; - - codePtr = framePtr->data.tebc.codePtr; - hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); - - if (hePtr) { - ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); - Tcl_HashEntry *hlPtr = Tcl_FindHashEntry (&eclPtr->litIndex, (char *) obj); - - if (hlPtr) { - /* - * Convert from the current invoker CmdFrame to a CmdFrame - * refering to the actual word location. We are directly - * manipulating the relevant command frame in the frame stack. - * That is no problem because TEBC is already setting the pc - * for each invokation, so moving it somewhere will not affect - * the following commands. - */ - - ExtIndex* eiPtr = (ExtIndex*) Tcl_GetHashValue (hlPtr); + hPtr = Tcl_FindHashEntry (iPtr->lineLABCPtr, (char *) obj); + if (hPtr) { + CFWordBC* cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); + ExtIndex* eiPtr = cfwPtr->eiPtr; - framePtr->data.tebc.pc = codePtr->codeStart + eiPtr->pc; - *cfPtrPtr = framePtr; - *wordPtr = eiPtr->word; - } - } + framePtr = cfwPtr->framePtr; + framePtr->data.tebc.pc = ((ByteCode*) framePtr->data.tebc.codePtr)->codeStart + eiPtr->pc; + *cfPtrPtr = cfwPtr->framePtr; + *wordPtr = eiPtr->word; + return; } } #endif diff --git a/generic/tclCompile.c b/generic/tclCompile.c index d8e22e2..a1747ba 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.9 2008/07/21 19:37:43 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.10 2008/07/22 21:40:26 andreas_kupries Exp $ */ #include "tclInt.h" @@ -702,8 +702,6 @@ TclCleanupByteCode(codePtr) if (hePtr) { ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); int i; - Tcl_HashSearch hSearch; - Tcl_HashEntry *hlPtr; if (eclPtr->type == TCL_LOCATION_SOURCE) { Tcl_DecrRefCount (eclPtr->path); @@ -717,14 +715,10 @@ TclCleanupByteCode(codePtr) } /* Release index of literals as well. */ - for (hlPtr = Tcl_FirstHashEntry(&eclPtr->litIndex, &hSearch); - hlPtr != NULL; - hlPtr = Tcl_NextHashEntry(&hSearch)) { - ExtIndex* eiPtr = (ExtIndex*) Tcl_GetHashValue (hlPtr); - ckfree((char*) eiPtr); - Tcl_DeleteHashEntry (hlPtr); + if (eclPtr->eiloc != NULL) { + ckfree((char *) eclPtr->eiloc); } - Tcl_DeleteHashTable (&eclPtr->litIndex); + ckfree ((char*) eclPtr); Tcl_DeleteHashEntry (hePtr); } @@ -817,7 +811,9 @@ TclInitCompileEnv(interp, envPtr, string, numBytes, invoker, word) envPtr->extCmdMapPtr->nloc = 0; envPtr->extCmdMapPtr->nuloc = 0; envPtr->extCmdMapPtr->path = NULL; - Tcl_InitHashTable(&envPtr->extCmdMapPtr->litIndex, TCL_ONE_WORD_KEYS); + envPtr->extCmdMapPtr->eiloc = NULL; + envPtr->extCmdMapPtr->neiloc = 0; + envPtr->extCmdMapPtr->nueiloc = 0; if (invoker == NULL) { /* Initialize the compiler for relative counting */ @@ -2496,15 +2492,30 @@ TclEnterCmdWordIndex (eclPtr, obj, pc, word) int pc; int word; { - int new; - ExtIndex* eiPtr = (ExtIndex*) ckalloc (sizeof (ExtIndex)); + ExtIndex* eiPtr; + + if (eclPtr->nueiloc >= eclPtr->neiloc) { + /* + * Expand the ExtIndex array by allocating more storage from the heap. The + * currently allocated ECL entries are stored from eclPtr->loc[0] up + * to eclPtr->loc[eclPtr->nuloc-1] (inclusive). + */ + + size_t currElems = eclPtr->neiloc; + size_t newElems = (currElems ? 2*currElems : 1); + size_t newBytes = newElems * sizeof(ExtIndex); + + eclPtr->eiloc = (ExtIndex *) ckrealloc((char *)(eclPtr->eiloc), newBytes); + eclPtr->neiloc = newElems; + } + + eiPtr = &eclPtr->eiloc[eclPtr->nueiloc]; + eiPtr->obj = obj; eiPtr->pc = pc; eiPtr->word = word; - Tcl_SetHashValue (Tcl_CreateHashEntry (&eclPtr->litIndex, - (char*) obj, &new), - eiPtr); + eclPtr->nueiloc ++; } #endif diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 8192aa4..adde52c 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.33.2.3 2008/07/21 19:37:43 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.33.2.4 2008/07/22 21:40:31 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -146,12 +146,10 @@ typedef struct ExtCmdLoc { ECL* loc; /* Command word locations (lines) */ int nloc; /* Number of allocated entries in 'loc' */ int nuloc; /* Number of used entries in 'loc' */ - Tcl_HashTable litIndex; /* HashValue is ExtIndex* */ + ExtIndex* eiloc; + int neiloc; + int nueiloc; } ExtCmdLoc; -typedef struct ExtIndex { - int pc; /* Instruction pointer of the command in ExtCmdLoc.loc[.] */ - int word; /* Index of word in ExtCmdLoc.loc[cmd]->line[.] */ -} ExtIndex; EXTERN void TclEnterCmdWordIndex _ANSI_ARGS_(( ExtCmdLoc *eclPtr, Tcl_Obj* obj, int pc, int word)); diff --git a/generic/tclExecute.c b/generic/tclExecute.c index b94785d..7d0eb11 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.25 2008/04/14 16:25:49 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.26 2008/07/22 21:40:31 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1245,6 +1245,8 @@ TclExecuteByteCode(interp, codePtr) bcFrame.data.tebc.pc = NULL; bcFrame.cmd.str.cmd = NULL; bcFrame.cmd.str.len = 0; + + TclArgumentBCEnter((Tcl_Interp*) iPtr,codePtr,&bcFrame); #endif #ifdef TCL_COMPILE_DEBUG @@ -4514,6 +4516,9 @@ TclExecuteByteCode(interp, codePtr) ckfree((char *) catchStackPtr); } eePtr->stackTop = initStackTop; + + TclArgumentBCRelease((Tcl_Interp*) iPtr,codePtr); + return result; #undef STATIC_CATCH_STACK_SIZE } diff --git a/generic/tclInt.h b/generic/tclInt.h index 18f1c70..7de3d01 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.31 2008/07/21 19:37:43 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.32 2008/07/22 21:40:32 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -916,6 +916,19 @@ typedef struct CFWord { int word; /* Index of the word in the command */ int refCount; /* #times the word is on the stack */ } CFWord; + +typedef struct ExtIndex { + Tcl_Obj* obj; /* Reference to the word */ + int pc; /* Instruction pointer of a command in ExtCmdLoc.loc[.] */ + int word; /* Index of word in ExtCmdLoc.loc[cmd]->line[.] */ +} ExtIndex; + + +typedef struct CFWordBC { + CmdFrame* framePtr; /* CmdFrame to acess */ + ExtIndex* eiPtr; /* Word info: PC and index */ + int refCount; /* #times the word is on the stack */ +} CFWordBC; #endif /* TCL_TIP280 */ /* @@ -1505,6 +1518,7 @@ typedef struct Interp { * values are "struct ExtCmdLoc*" (See * tclCompile.h). */ + Tcl_HashTable* lineLABCPtr; Tcl_HashTable* lineLAPtr; /* This table remembers for each * argument of a command on the @@ -1858,6 +1872,10 @@ EXTERN void TclArgumentEnter _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj* objv[], int objc, CmdFrame* cf)); EXTERN void TclArgumentRelease _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj* objv[], int objc)); +EXTERN void TclArgumentBCEnter _ANSI_ARGS_((Tcl_Interp* interp, + void* codePtr, CmdFrame* cfPtr)); +EXTERN void TclArgumentBCRelease _ANSI_ARGS_((Tcl_Interp* interp, + void* codePtr)); EXTERN void TclArgumentGet _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj* obj, CmdFrame** cfPtrPtr, int* wordPtr)); -- cgit v0.12 From 29341bbc6ca4be934e01b591b98bc01f0a93f57b Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 22 Jul 2008 21:41:10 +0000 Subject: * generic/tclBasic.c: Reworked the handling of bytecode literals * generic/tclCompile.c: for #280 to fix the abysmal performance * generic/tclCompile.h: for deep recursion, replaced the linear * generic/tclExecute.c: search through the whole stack with * generic/tclInt.h: another hashtable and simplified the data structure used by the compiler (array instead of hashtable). Incidentially this also fixes the memory leak reported via [Bug 2024937]. --- ChangeLog | 11 +++++ generic/tclBasic.c | 136 ++++++++++++++++++++++++++++++++++++++------------- generic/tclCompile.c | 43 ++++++++++------ generic/tclCompile.h | 11 ++--- generic/tclExecute.c | 6 ++- generic/tclInt.h | 20 +++++++- 6 files changed, 167 insertions(+), 60 deletions(-) diff --git a/ChangeLog b/ChangeLog index aeb8c8a..7b8e05b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-07-22 Andreas Kupries + + * generic/tclBasic.c: Reworked the handling of bytecode literals + * generic/tclCompile.c: for #280 to fix the abysmal performance + * generic/tclCompile.h: for deep recursion, replaced the linear + * generic/tclExecute.c: search through the whole stack with + * generic/tclInt.h: another hashtable and simplified the data + structure used by the compiler (array instead of hashtable). + Incidentially this also fixes the memory leak reported via [Bug + 2024937]. + 2008-07-21 Don Porter * tests/encoding.test: Make failing tests pass again. [Bug 1972867] diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 8c1fe40..f2e4fc6 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.1 2008/07/21 19:38:13 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.2 2008/07/22 21:41:11 andreas_kupries Exp $ */ #include "tclInt.h" @@ -445,9 +445,11 @@ Tcl_CreateInterp(void) iPtr->linePBodyPtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); iPtr->lineBCPtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); iPtr->lineLAPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); + iPtr->lineLABCPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); Tcl_InitHashTable(iPtr->linePBodyPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineBCPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineLAPtr, TCL_ONE_WORD_KEYS); + Tcl_InitHashTable(iPtr->lineLABCPtr, TCL_ONE_WORD_KEYS); iPtr->activeVarTracePtr = NULL; @@ -1433,6 +1435,19 @@ DeleteInterpProc( Tcl_DeleteHashTable (iPtr->lineLAPtr); ckfree((char*) iPtr->lineLAPtr); iPtr->lineLAPtr = NULL; + + if (iPtr->lineLABCPtr->numEntries) { + /* + * When the interp goes away we have nothing on the stack, so + * there are no arguments, so this table has to be empty. + */ + + Tcl_Panic ("Argument location tracking table not empty"); + } + + Tcl_DeleteHashTable (iPtr->lineLABCPtr); + ckfree((char*) iPtr->lineLABCPtr); + iPtr->lineLABCPtr = NULL; } Tcl_DeleteHashTable(&iPtr->varTraces); @@ -4586,6 +4601,80 @@ TclArgumentRelease(interp,objv,objc) } } +void +TclArgumentBCEnter(interp,codePtr,cfPtr) + Tcl_Interp* interp; + void* codePtr; + CmdFrame* cfPtr; +{ + Interp* iPtr = (Interp*) interp; + Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); + + if (hePtr) { + ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); + int i; + + for (i=0; i < eclPtr->nueiloc; i++) { + + ExtIndex* eiPtr = &eclPtr->eiloc[i]; + Tcl_Obj* obj = eiPtr->obj; + int new; + Tcl_HashEntry* hPtr; + CFWordBC* cfwPtr; + + hPtr = Tcl_CreateHashEntry (iPtr->lineLABCPtr, (char*) obj, &new); + if (new) { + /* + * The word is not on the stack yet, remember the current location + * and initialize references. + */ + cfwPtr = (CFWordBC*) ckalloc (sizeof (CFWordBC)); + cfwPtr->framePtr = cfPtr; + cfwPtr->eiPtr = eiPtr; + cfwPtr->refCount = 1; + Tcl_SetHashValue (hPtr, cfwPtr); + } else { + /* + * The word is already on the stack, its current location is not + * relevant. Just remember the reference to prevent early removal. + */ + cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); + cfwPtr->refCount ++; + } + } /* for */ + } /* if */ +} + +void +TclArgumentBCRelease(interp,codePtr) + Tcl_Interp* interp; + void* codePtr; +{ + Interp* iPtr = (Interp*) interp; + Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); + + if (hePtr) { + ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); + int i; + + for (i=0; i < eclPtr->nueiloc; i++) { + Tcl_Obj* obj = eclPtr->eiloc[i].obj; + Tcl_HashEntry* hPtr = Tcl_FindHashEntry (iPtr->lineLABCPtr, (char *) obj); + CFWordBC* cfwPtr; + + if (!hPtr) { continue; } + + cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); + + cfwPtr->refCount --; + if (cfwPtr->refCount > 0) { continue; } + + ckfree ((char*) cfwPtr); + Tcl_DeleteHashEntry (hPtr); + } /* for */ + } /* if */ +} + /* *---------------------------------------------------------------------- * @@ -4629,43 +4718,20 @@ TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) } /* - * Check if the Tcl_Obj has location information as a bytecode literal. We - * have to scan the stack up and check all bytecode frames for a possible - * definition. + * Check if the Tcl_Obj has location information as a bytecode literal, in + * that stack. */ - for (framePtr = iPtr->cmdFramePtr; - framePtr; - framePtr = framePtr->nextPtr) { - const ByteCode* codePtr; - Tcl_HashEntry* hePtr; - - if (framePtr->type != TCL_LOCATION_BC) continue; - - codePtr = framePtr->data.tebc.codePtr; - hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); - - if (hePtr) { - ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); - Tcl_HashEntry *hlPtr = Tcl_FindHashEntry (&eclPtr->litIndex, (char *) obj); - - if (hlPtr) { - /* - * Convert from the current invoker CmdFrame to a CmdFrame - * refering to the actual word location. We are directly - * manipulating the relevant command frame in the frame stack. - * That is no problem because TEBC is already setting the pc - * for each invokation, so moving it somewhere will not affect - * the following commands. - */ - - ExtIndex* eiPtr = (ExtIndex*) Tcl_GetHashValue (hlPtr); + hPtr = Tcl_FindHashEntry (iPtr->lineLABCPtr, (char *) obj); + if (hPtr) { + CFWordBC* cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); + ExtIndex* eiPtr = cfwPtr->eiPtr; - framePtr->data.tebc.pc = codePtr->codeStart + eiPtr->pc; - *cfPtrPtr = framePtr; - *wordPtr = eiPtr->word; - } - } + framePtr = cfwPtr->framePtr; + framePtr->data.tebc.pc = ((ByteCode*) framePtr->data.tebc.codePtr)->codeStart + eiPtr->pc; + *cfPtrPtr = cfwPtr->framePtr; + *wordPtr = eiPtr->word; + return; } } diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 145a7b9..19011d9 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.2 2008/07/21 19:38:17 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.3 2008/07/22 21:41:12 andreas_kupries Exp $ */ #include "tclInt.h" @@ -802,8 +802,6 @@ TclCleanupByteCode( if (hePtr) { ExtCmdLoc *eclPtr = Tcl_GetHashValue(hePtr); int i; - Tcl_HashSearch hSearch; - Tcl_HashEntry *hlPtr; if (eclPtr->type == TCL_LOCATION_SOURCE) { Tcl_DecrRefCount(eclPtr->path); @@ -817,14 +815,10 @@ TclCleanupByteCode( } /* Release index of literals as well. */ - for (hlPtr = Tcl_FirstHashEntry(&eclPtr->litIndex, &hSearch); - hlPtr != NULL; - hlPtr = Tcl_NextHashEntry(&hSearch)) { - ExtIndex* eiPtr = (ExtIndex*) Tcl_GetHashValue (hlPtr); - ckfree((char*) eiPtr); - Tcl_DeleteHashEntry (hlPtr); + if (eclPtr->eiloc != NULL) { + ckfree((char *) eclPtr->eiloc); } - Tcl_DeleteHashTable (&eclPtr->litIndex); + ckfree((char *) eclPtr); Tcl_DeleteHashEntry(hePtr); } @@ -914,7 +908,9 @@ TclInitCompileEnv( envPtr->extCmdMapPtr->nloc = 0; envPtr->extCmdMapPtr->nuloc = 0; envPtr->extCmdMapPtr->path = NULL; - Tcl_InitHashTable(&envPtr->extCmdMapPtr->litIndex, TCL_ONE_WORD_KEYS); + envPtr->extCmdMapPtr->eiloc = NULL; + envPtr->extCmdMapPtr->neiloc = 0; + envPtr->extCmdMapPtr->nueiloc = 0; if (invoker == NULL) { /* @@ -2446,15 +2442,30 @@ TclEnterCmdWordIndex (eclPtr, obj, pc, word) int pc; int word; { - int new; - ExtIndex* eiPtr = (ExtIndex*) ckalloc (sizeof (ExtIndex)); + ExtIndex* eiPtr; + + if (eclPtr->nueiloc >= eclPtr->neiloc) { + /* + * Expand the ExtIndex array by allocating more storage from the heap. The + * currently allocated ECL entries are stored from eclPtr->loc[0] up + * to eclPtr->loc[eclPtr->nuloc-1] (inclusive). + */ + + size_t currElems = eclPtr->neiloc; + size_t newElems = (currElems ? 2*currElems : 1); + size_t newBytes = newElems * sizeof(ExtIndex); + + eclPtr->eiloc = (ExtIndex *) ckrealloc((char *)(eclPtr->eiloc), newBytes); + eclPtr->neiloc = newElems; + } + + eiPtr = &eclPtr->eiloc[eclPtr->nueiloc]; + eiPtr->obj = obj; eiPtr->pc = pc; eiPtr->word = word; - Tcl_SetHashValue (Tcl_CreateHashEntry (&eclPtr->litIndex, - (char*) obj, &new), - eiPtr); + eclPtr->nueiloc ++; } /* diff --git a/generic/tclCompile.h b/generic/tclCompile.h index f1be02c..e5ef895 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.90.2.1 2008/07/21 19:38:18 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.90.2.2 2008/07/22 21:41:12 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -141,14 +141,11 @@ typedef struct ExtCmdLoc { ECL *loc; /* Command word locations (lines). */ int nloc; /* Number of allocated entries in 'loc'. */ int nuloc; /* Number of used entries in 'loc'. */ - Tcl_HashTable litIndex; /* HashValue is ExtIndex* */ + ExtIndex* eiloc; + int neiloc; + int nueiloc; } ExtCmdLoc; -typedef struct ExtIndex { - int pc; /* Instruction pointer of a command in ExtCmdLoc.loc[.] */ - int word; /* Index of word in ExtCmdLoc.loc[cmd]->line[.] */ -} ExtIndex; - EXTERN void TclEnterCmdWordIndex (ExtCmdLoc *eclPtr, Tcl_Obj* obj, int pc, int word); diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 0003fb2..7866a7c 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.1 2008/04/08 16:12:02 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.2 2008/07/22 21:41:13 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1753,6 +1753,8 @@ TclExecuteByteCode( bcFramePtr->cmd.str.cmd = NULL; bcFramePtr->cmd.str.len = 0; + TclArgumentBCEnter((Tcl_Interp*) iPtr,codePtr,bcFramePtr); + #ifdef TCL_COMPILE_DEBUG if (tclTraceExec >= 2) { PrintByteCodeInfo(codePtr); @@ -7389,6 +7391,8 @@ TclExecuteByteCode( } } + TclArgumentBCRelease((Tcl_Interp*) iPtr,codePtr); + /* * Restore the stack to the state it had previous to this bytecode. */ diff --git a/generic/tclInt.h b/generic/tclInt.h index e0e65e4..bbbdf2f 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362.2.2 2008/07/21 19:38:18 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.3 2008/07/22 21:41:13 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -1147,6 +1147,19 @@ typedef struct CFWord { int refCount; /* #times the word is on the stack */ } CFWord; +typedef struct ExtIndex { + Tcl_Obj* obj; /* Reference to the word */ + int pc; /* Instruction pointer of a command in ExtCmdLoc.loc[.] */ + int word; /* Index of word in ExtCmdLoc.loc[cmd]->line[.] */ +} ExtIndex; + + +typedef struct CFWordBC { + CmdFrame* framePtr; /* CmdFrame to acess */ + ExtIndex* eiPtr; /* Word info: PC and index */ + int refCount; /* #times the word is on the stack */ +} CFWordBC; + /* * The following macros define the allowed values for the type field of the * CmdFrame structure above. Some of the values occur only in the extended @@ -1845,6 +1858,7 @@ typedef struct Interp { * body. It is keyed by the address of the * Proc structure for a procedure. The values * are "struct ExtCmdLoc*" (See tclCompile.h) */ + Tcl_HashTable* lineLABCPtr; Tcl_HashTable* lineLAPtr; /* This table remembers for each argument of a * command on the execution stack the index of * the argument in the command, and the @@ -2457,6 +2471,10 @@ MODULE_SCOPE void TclArgumentRelease(Tcl_Interp* interp, Tcl_Obj* objv[], int objc); MODULE_SCOPE void TclArgumentGet(Tcl_Interp* interp, Tcl_Obj* obj, CmdFrame** cfPtrPtr, int* wordPtr); +MODULE_SCOPE void TclArgumentBCEnter(Tcl_Interp* interp, + void* codePtr, CmdFrame* cfPtr); +MODULE_SCOPE void TclArgumentBCRelease(Tcl_Interp* interp, + void* codePtr); MODULE_SCOPE int TclArraySet(Tcl_Interp *interp, Tcl_Obj *arrayNameObj, Tcl_Obj *arrayElemObj); MODULE_SCOPE double TclBignumToDouble(mp_int *bignum); -- cgit v0.12 From 9d7eb12205beea542a84ffc39a24a909264c2102 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 22 Jul 2008 22:26:56 +0000 Subject: * generic/tclCompile.c: Made the new TclEnterCmdWordIndex * generic/tclCompile.h: static, and ansified. --- ChangeLog | 3 +++ generic/tclCompile.c | 25 ++++++++++++++----------- generic/tclCompile.h | 5 +---- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7b8e05b..e923588 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-07-22 Andreas Kupries + * generic/tclCompile.c: Made the new TclEnterCmdWordIndex + * generic/tclCompile.h: static, and ansified. + * generic/tclBasic.c: Reworked the handling of bytecode literals * generic/tclCompile.c: for #280 to fix the abysmal performance * generic/tclCompile.h: for deep recursion, replaced the linear diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 19011d9..e3ce0c9 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.3 2008/07/22 21:41:12 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.4 2008/07/22 22:26:57 andreas_kupries Exp $ */ #include "tclInt.h" @@ -414,6 +414,9 @@ static void EnterCmdExtentData(CompileEnv *envPtr, int cmdNumber, int numSrcBytes, int numCodeBytes); static void EnterCmdStartData(CompileEnv *envPtr, int cmdNumber, int srcOffset, int codeOffset); + +static void EnterCmdWordIndex (ExtCmdLoc *eclPtr, Tcl_Obj* obj, + int pc, int word); static void FreeByteCodeInternalRep(Tcl_Obj *objPtr); static int GetCmdLocEncodingSize(CompileEnv *envPtr); #ifdef TCL_COMPILE_STATS @@ -1462,10 +1465,10 @@ TclCompileScript( tokenPtr[1].start, tokenPtr[1].size); if (eclPtr->type == TCL_LOCATION_SOURCE) { - TclEnterCmdWordIndex (eclPtr, - envPtr->literalArrayPtr[objIndex].objPtr, - envPtr->codeNext - envPtr->codeStart, - wordIdx); + EnterCmdWordIndex (eclPtr, + envPtr->literalArrayPtr[objIndex].objPtr, + envPtr->codeNext - envPtr->codeStart, + wordIdx); } } TclEmitPush(objIndex, envPtr); @@ -2435,12 +2438,12 @@ EnterCmdWordData( eclPtr->nuloc ++; } -void -TclEnterCmdWordIndex (eclPtr, obj, pc, word) - ExtCmdLoc *eclPtr; - Tcl_Obj* obj; - int pc; - int word; +static void +EnterCmdWordIndex ( + ExtCmdLoc *eclPtr, + Tcl_Obj* obj, + int pc, + int word) { ExtIndex* eiPtr; diff --git a/generic/tclCompile.h b/generic/tclCompile.h index e5ef895..777fd3e 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.90.2.2 2008/07/22 21:41:12 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.90.2.3 2008/07/22 22:26:58 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -146,9 +146,6 @@ typedef struct ExtCmdLoc { int nueiloc; } ExtCmdLoc; -EXTERN void TclEnterCmdWordIndex (ExtCmdLoc *eclPtr, Tcl_Obj* obj, - int pc, int word); - /* * CompileProcs need the ability to record information during compilation that * can be used by bytecode instructions during execution. The AuxData -- cgit v0.12 From 39e94f9db312d56df3d26940e1d0526cca1d47dc Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 22 Jul 2008 22:30:01 +0000 Subject: * generic/tclCompile.c: Made the new TclEnterCmdWordIndex * generic/tclCompile.h: static. --- ChangeLog | 3 +++ generic/tclCompile.c | 17 ++++++++++------- generic/tclCompile.h | 5 +---- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6803811..2d0f38c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-07-22 Andreas Kupries + * generic/tclCompile.c: Made the new TclEnterCmdWordIndex + * generic/tclCompile.h: static. + * generic/tclBasic.c: Reworked the handling of bytecode literals * generic/tclCompile.c: for #280 to fix the abysmal performance * generic/tclCompile.h: for deep recursion, replaced the linear diff --git a/generic/tclCompile.c b/generic/tclCompile.c index a1747ba..a49297c 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.10 2008/07/22 21:40:26 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.11 2008/07/22 22:30:05 andreas_kupries Exp $ */ #include "tclInt.h" @@ -308,6 +308,9 @@ static void EnterCmdWordData _ANSI_ARGS_(( ExtCmdLoc *eclPtr, int srcOffset, Tcl_Token* tokenPtr, CONST char* cmd, int len, int numWords, int line, int** lines)); + +static void EnterCmdWordIndex _ANSI_ARGS_(( + ExtCmdLoc *eclPtr, Tcl_Obj* obj, int pc, int word)); #endif @@ -1262,10 +1265,10 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) tokenPtr[1].start, tokenPtr[1].size); #ifdef TCL_TIP280 if (eclPtr->type == TCL_LOCATION_SOURCE) { - TclEnterCmdWordIndex (eclPtr, - envPtr->literalArrayPtr[objIndex].objPtr, - envPtr->codeNext - envPtr->codeStart, - wordIdx); + EnterCmdWordIndex (eclPtr, + envPtr->literalArrayPtr[objIndex].objPtr, + envPtr->codeNext - envPtr->codeStart, + wordIdx); } #endif } @@ -2485,8 +2488,8 @@ EnterCmdWordData(eclPtr, srcOffset, tokenPtr, cmd, len, numWords, line, wlines) eclPtr->nuloc ++; } -void -TclEnterCmdWordIndex (eclPtr, obj, pc, word) +static void +EnterCmdWordIndex (eclPtr, obj, pc, word) ExtCmdLoc *eclPtr; Tcl_Obj* obj; int pc; diff --git a/generic/tclCompile.h b/generic/tclCompile.h index adde52c..ce82f8c 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.33.2.4 2008/07/22 21:40:31 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.33.2.5 2008/07/22 22:30:05 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -150,9 +150,6 @@ typedef struct ExtCmdLoc { int neiloc; int nueiloc; } ExtCmdLoc; - -EXTERN void TclEnterCmdWordIndex _ANSI_ARGS_(( - ExtCmdLoc *eclPtr, Tcl_Obj* obj, int pc, int word)); #endif /* -- cgit v0.12 From d575f7b26ed9da3fcdfae2a232d41095d04d80e2 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 22 Jul 2008 22:46:06 +0000 Subject: * generic/tclBasic.c: Added missing function comments. --- ChangeLog | 2 ++ generic/tclBasic.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d0f38c..a40abf4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-07-22 Andreas Kupries + * generic/tclBasic.c: Added missing function comments. + * generic/tclCompile.c: Made the new TclEnterCmdWordIndex * generic/tclCompile.h: static. diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 6ec5763..1a24a29 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.30 2008/07/22 21:40:24 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.31 2008/07/22 22:46:09 andreas_kupries Exp $ */ #include "tclInt.h" @@ -4310,7 +4310,7 @@ TclAdvanceLines (line,start,end) } } } - + /* *---------------------------------------------------------------------- * Note: The whole data structure access for argument location tracking is @@ -4383,7 +4383,7 @@ TclArgumentEnter(interp,objv,objc,cfPtr) } } } - + /* *---------------------------------------------------------------------- * @@ -4429,6 +4429,25 @@ TclArgumentRelease(interp,objv,objc) } } +/* + *---------------------------------------------------------------------- + * + * TclArgumentBCEnter -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It enters location references for the literal arguments of commands + * in bytecode about to be executed. Only the first entry has the actual + * data, further entries simply count the usage up. + * + * Results: + * None. + * + * Side effects: + * May allocate memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ void TclArgumentBCEnter(interp,codePtr,cfPtr) @@ -4474,6 +4493,26 @@ TclArgumentBCEnter(interp,codePtr,cfPtr) } /* if */ } +/* + *---------------------------------------------------------------------- + * + * TclArgumentBCRelease -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It removes the location references for the literal arguments of + * commands in bytecode just done. Usage is counted down, the data + * is removed only when no user is left over. + * + * Results: + * None. + * + * Side effects: + * May release memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + void TclArgumentBCRelease(interp,codePtr) Tcl_Interp* interp; -- cgit v0.12 From 4cfb7828a8f1b3a6686c44798c62431003363ff8 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 22 Jul 2008 22:46:26 +0000 Subject: * generic/tclBasic.c: Added missing function comments. --- ChangeLog | 2 ++ generic/tclBasic.c | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e923588..c341252 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-07-22 Andreas Kupries + * generic/tclBasic.c: Added missing function comments. + * generic/tclCompile.c: Made the new TclEnterCmdWordIndex * generic/tclCompile.h: static, and ansified. diff --git a/generic/tclBasic.c b/generic/tclBasic.c index f2e4fc6..c8f8117 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.2 2008/07/22 21:41:11 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.3 2008/07/22 22:46:27 andreas_kupries Exp $ */ #include "tclInt.h" @@ -4601,6 +4601,26 @@ TclArgumentRelease(interp,objv,objc) } } +/* + *---------------------------------------------------------------------- + * + * TclArgumentBCEnter -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It enters location references for the literal arguments of commands + * in bytecode about to be invoked. Only the first entry has the actual + * data, further entries simply count the usage up. + * + * Results: + * None. + * + * Side effects: + * May allocate memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + void TclArgumentBCEnter(interp,codePtr,cfPtr) Tcl_Interp* interp; @@ -4645,6 +4665,26 @@ TclArgumentBCEnter(interp,codePtr,cfPtr) } /* if */ } +/* + *---------------------------------------------------------------------- + * + * TclArgumentBCRelease -- + * + * This procedure is a helper for the TIP #280 uplevel extension. + * It removes the location references for the literal arguments of + * commands in bytecode just done. Usage is counted down, the data + * is removed only when no user is left over. + * + * Results: + * None. + * + * Side effects: + * May release memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + void TclArgumentBCRelease(interp,codePtr) Tcl_Interp* interp; -- cgit v0.12 From 60cf559044682964bf4e53b529e793086cb394a6 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 23 Jul 2008 04:08:00 +0000 Subject: Fixed the failure to link in the default (non-TCL_TIP280) build. --- generic/tclExecute.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 7d0eb11..657ac80 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.26 2008/07/22 21:40:31 andreas_kupries Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.27 2008/07/23 04:08:00 dgp Exp $ */ #include "tclInt.h" @@ -4517,7 +4517,9 @@ TclExecuteByteCode(interp, codePtr) } eePtr->stackTop = initStackTop; +#ifdef TCL_TIP280 TclArgumentBCRelease((Tcl_Interp*) iPtr,codePtr); +#endif return result; #undef STATIC_CATCH_STACK_SIZE -- cgit v0.12 From 2041c85d62dba1eac0c108bf85727787164941da Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 23 Jul 2008 20:45:08 +0000 Subject: * generic/tclBasic.c: Modified TclArgumentGet to reject pure lists * generic/tclCmdIL.c: immediately, without search. Reworked setup * generic/tclCompile.c: of eoFramePtr, doesn't need the line * tests/info.test: information, more sensible to have everything on line 1 when eval'ing a pure list. Updated the users of the line information to special case this based on the frame type (i.e. TCL_LOCATION_EVAL_LIST). Added a testcase demonstrating the new behaviour. --- ChangeLog | 11 +++++++++++ generic/tclBasic.c | 37 +++++++++++++++++++++---------------- generic/tclCmdIL.c | 4 ++-- generic/tclCompile.c | 10 +++++++--- tests/info.test | 50 ++++++++++++++++++++++++++++++++++++++------------ 5 files changed, 79 insertions(+), 33 deletions(-) diff --git a/ChangeLog b/ChangeLog index a40abf4..42a3272 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-07-23 Andreas Kupries + + * generic/tclBasic.c: Modified TclArgumentGet to reject pure lists + * generic/tclCmdIL.c: immediately, without search. Reworked setup + * generic/tclCompile.c: of eoFramePtr, doesn't need the line + * tests/info.test: information, more sensible to have everything + on line 1 when eval'ing a pure list. Updated the users of the line + information to special case this based on the frame type (i.e. + TCL_LOCATION_EVAL_LIST). Added a testcase demonstrating the new + behaviour. + 2008-07-22 Andreas Kupries * generic/tclBasic.c: Added missing function comments. diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 1a24a29..c91fdc1 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.31 2008/07/22 22:46:09 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.32 2008/07/23 20:45:16 andreas_kupries Exp $ */ #include "tclInt.h" @@ -4573,6 +4573,17 @@ TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) CmdFrame* framePtr; /* + * An object which either has no string rep guaranteed to have been + * generated dynamically: bail out, this cannot have a usable absolute + * location. _Do not touch_ the information the set up by the caller. It + * knows better than us. + */ + + if (!obj->bytes) { + return; + } + + /* * First look for location information recorded in the argument * stack. That is nearest. */ @@ -4782,7 +4793,6 @@ TclEvalObjEx(interp, objPtr, flags, invoker, word) * As we know that this is dynamic execution we ignore the * invoker, even if known. */ - int line; CmdFrame eoFrame; eoFrame.type = TCL_LOCATION_EVAL_LIST; @@ -4791,8 +4801,8 @@ TclEvalObjEx(interp, objPtr, flags, invoker, word) iPtr->cmdFramePtr->level + 1); eoFrame.framePtr = iPtr->framePtr; eoFrame.nextPtr = iPtr->cmdFramePtr; - eoFrame.nline = objc; - eoFrame.line = (int*) ckalloc (objc * sizeof (int)); + eoFrame.nline = 0; + eoFrame.line = NULL; /* NOTE: Getting the string rep of the list to eval to fill the * command information required by 'info frame' implies that @@ -4815,23 +4825,18 @@ TclEvalObjEx(interp, objPtr, flags, invoker, word) * Copy the list elements here, to avoid a segfault if * objPtr loses its List internal rep [Bug 1119369]. * - * TIP #280 Computes all the line numbers for the - * words in the command. + * TIP #280 We do _not_ compute all the line numbers for the words + * in the command. For the eval of a pure list the most sensible + * choice is to put all words on line 1. Given that we neither + * need memory for them nor compute anything. 'line' is left + * NULL. The two places using this information (TclInfoFrame, and + * TclInitCompileEnv), are special-cased to use the proper line + * number directly instead of accessing the 'line' array. */ -#ifdef TCL_TIP280 - line = 1; -#endif for (i=0; i < objc; i++) { objv[i] = listRepPtr->elements[i]; Tcl_IncrRefCount(objv[i]); -#ifdef TCL_TIP280 - eoFrame.line [i] = line; - { - char* w = Tcl_GetString (objv [i]); - TclAdvanceLines (&line, w, w+ strlen(w)); - } -#endif } #ifdef TCL_TIP280 diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 54359af..7bf46fb 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.15 2008/07/07 21:39:22 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.16 2008/07/23 20:45:17 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1153,7 +1153,7 @@ InfoFrameCmd(dummy, interp, objc, objv) lv [lc ++] = Tcl_NewStringObj ("type",-1); lv [lc ++] = Tcl_NewStringObj (typeString [framePtr->type],-1); lv [lc ++] = Tcl_NewStringObj ("line",-1); - lv [lc ++] = Tcl_NewIntObj (framePtr->line[0]); + lv [lc ++] = Tcl_NewIntObj (1); /* We put a duplicate of the command list obj into the result * to ensure that the 'pure List'-property of the command diff --git a/generic/tclCompile.c b/generic/tclCompile.c index a49297c..59be33a 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.11 2008/07/22 22:30:05 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.12 2008/07/23 20:45:18 andreas_kupries Exp $ */ #include "tclInt.h" @@ -818,8 +818,12 @@ TclInitCompileEnv(interp, envPtr, string, numBytes, invoker, word) envPtr->extCmdMapPtr->neiloc = 0; envPtr->extCmdMapPtr->nueiloc = 0; - if (invoker == NULL) { - /* Initialize the compiler for relative counting */ + if (invoker == NULL || + (invoker->type == TCL_LOCATION_EVAL_LIST)) { + /* + * Initialize the compiler for relative counting in case of a + * dynamic context. + */ envPtr->line = 1; envPtr->extCmdMapPtr->type = (envPtr->procPtr diff --git a/tests/info.test b/tests/info.test index 22ed8ca..35297b3 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.6 2008/06/16 20:46:16 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.7 2008/07/23 20:45:18 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -698,7 +698,7 @@ proc reduce {frame} { incr pos set cmd [lindex $frame $pos] if {[regexp \n $cmd]} { - set first [string range [lindex [split $cmd \n] 0] 0 end-11] + set first [lindex [split $cmd \n] 0] ; set first [expr {[string length $first] > 11 ? [string range $first 0 end-11] : [string range $first 0 end-4]}] set frame [lreplace $frame $pos $pos $first] } set pos [lsearch -exact $frame file] @@ -744,17 +744,17 @@ test info-22.2 {info frame, bad level absolute} tip280 { set msg } {bad level "9"} -test info-22.3 {info frame, current, relative} tip280 { +test info-22.3 {info frame, current, relative} -constraints tip280 -match glob -body { info frame 0 -} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type source line 748 file *info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-22.4 {info frame, current, relative, nested} tip280 { +test info-22.4 {info frame, current, relative, nested} -constraints tip280 -match glob -body { set res [info frame 0] -} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type source line 752 file *info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-22.5 {info frame, current, absolute} tip280 { +test info-22.5 {info frame, current, absolute} -constraints tip280 -match glob -body { reduce [info frame 7] -} {type eval line 2 cmd {info frame 7} proc ::tcltest::RunTest} +} -result {type source line 756 file *info.test cmd {info frame 7} proc ::tcltest::RunTest} test info-22.6 {info frame, global, relative} tip280 { reduce [info frame -6] @@ -767,7 +767,7 @@ test info-22.7 {info frame, global, absolute} tip280 { test info-22.8 {info frame, basic trace} tip280 { join [etrace] \n } {8 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -7 {type eval line 2 cmd etrace proc ::tcltest::RunTest} +7 {type source line 768 file info.test cmd etrace proc ::tcltest::RunTest} 6 {type source line 2277 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} 5 {type eval line 1 cmd {::tcltest::RunTest } proc ::tcltest::Eval} 4 {type source line 1619 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} @@ -788,11 +788,11 @@ test info-23.2 {eval'd info frame, dynamic} tip280 { eval $script } 8 -test info-23.3 {eval'd info frame, literal} tip280 { +test info-23.3 {eval'd info frame, literal} -constraints tip280 -match glob -body { eval { info frame 0 } -} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type source line 793 file *info.test cmd {info frame 0} proc ::tcltest::RunTest} test info-23.4 {eval'd info frame, semi-dynamic} tip280 { eval info frame 0 @@ -808,7 +808,7 @@ test info-23.6 {eval'd info frame, trace} tip280 { join [eval $script] \n } {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} 8 {type eval line 1 cmd etrace proc ::tcltest::RunTest} -7 {type eval line 3 cmd {eval $script} proc ::tcltest::RunTest} +7 {type source line 808 file info.test cmd {eval $script} proc ::tcltest::RunTest} 6 {type source line 2277 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} 5 {type eval line 1 cmd {::tcltest::RunTest } proc ::tcltest::Eval} 4 {type source line 1619 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} @@ -1075,6 +1075,32 @@ namespace delete foo # ------------------------------------------------------------------------- +test info-34.0 {eval pure list, single line} { + # Basically, counting the newline in the word seen through $foo + # doesn't really make sense. It makes a bit of sense if the word + # would have been a string literal in the command list. + # + # Problem: At the point where we see the list elements we cannot + # distinguish the two cases, thus we cannot switch between + # count/not-count, it is has to be one or the other for all + # cases. Of the two possibilities miguel convinced me that 'not + # counting' is the more proper. + set foo {b + c} + set cmd [list foreach $foo {x y} { + set res [join [lrange [etrace] 0 2] \n] + break + }] + eval $cmd + set res +} {10 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +9 {type eval line 2 cmd etrace proc ::tcltest::RunTest} +8 {type eval line 1 cmd foreac proc ::tcltest::RunTest}} + +# ------------------------------------------------------------------------- + +# ------------------------------------------------------------------------- + # cleanup catch {namespace delete test_ns_info1 test_ns_info2} ::tcltest::cleanupTests -- cgit v0.12 From 28dc32c5df7599c1a91f586e9b87c70257bb6954 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 23 Jul 2008 20:47:28 +0000 Subject: * generic/tclBasic.c: Modified TclArgumentGet to reject pure lists * generic/tclCmdIL.c: immediately, without search. Reworked setup * generic/tclCompile.c: of eoFramePtr, doesn't need the line * tests/info.test: information, more sensible to have everything on line 1 when eval'ing a pure list. Updated the users of the line information to special case this based on the frame type (i.e. TCL_LOCATION_EVAL_LIST). Added a testcase demonstrating the new behaviour. --- ChangeLog | 11 +++++++++++ generic/tclBasic.c | 46 +++++++++++++++++++++++++++------------------- generic/tclCmdIL.c | 4 ++-- generic/tclCompile.c | 8 +++++--- tests/info.test | 28 +++++++++++++++++++++++++++- 5 files changed, 72 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index c341252..5c86c0d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-07-23 Andreas Kupries + + * generic/tclBasic.c: Modified TclArgumentGet to reject pure lists + * generic/tclCmdIL.c: immediately, without search. Reworked setup + * generic/tclCompile.c: of eoFramePtr, doesn't need the line + * tests/info.test: information, more sensible to have everything + on line 1 when eval'ing a pure list. Updated the users of the line + information to special case this based on the frame type (i.e. + TCL_LOCATION_EVAL_LIST). Added a testcase demonstrating the new + behaviour. + 2008-07-22 Andreas Kupries * generic/tclBasic.c: Added missing function comments. diff --git a/generic/tclBasic.c b/generic/tclBasic.c index c8f8117..9cb5707 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.3 2008/07/22 22:46:27 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.4 2008/07/23 20:47:30 andreas_kupries Exp $ */ #include "tclInt.h" @@ -4745,6 +4745,18 @@ TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) CmdFrame* framePtr; /* + * An object which either has no string rep or else is a canonical list is + * guaranteed to have been generated dynamically: bail out, this cannot + * have a usable absolute location. _Do not touch_ the information the set + * up by the caller. It knows better than us. + */ + + if ((!obj->bytes) || ((obj->typePtr == &tclListType) && + ((List *)obj->internalRep.twoPtrValue.ptr1)->canonicalFlag)) { + return; + } + + /* * First look for location information recorded in the argument * stack. That is nearest. */ @@ -4937,8 +4949,7 @@ TclEvalObjEx( * known. */ - int line, i; - char *w; + int nelements; Tcl_Obj **elements, *copyPtr = TclListObjCopy(NULL, objPtr); CmdFrame *eoFramePtr = (CmdFrame *) TclStackAlloc(interp, sizeof(CmdFrame)); @@ -4949,37 +4960,34 @@ TclEvalObjEx( eoFramePtr->framePtr = iPtr->framePtr; eoFramePtr->nextPtr = iPtr->cmdFramePtr; - Tcl_ListObjGetElements(NULL, copyPtr, - &(eoFramePtr->nline), &elements); - eoFramePtr->line = (int *) - ckalloc(eoFramePtr->nline * sizeof(int)); + eoFramePtr->nline = 0; + eoFramePtr->line = NULL; eoFramePtr->cmd.listPtr = objPtr; Tcl_IncrRefCount(eoFramePtr->cmd.listPtr); eoFramePtr->data.eval.path = NULL; /* - * TIP #280 Computes all the line numbers for the words in the - * command. + * TIP #280 We do _not_ compute all the line numbers for the + * words in the command. For the eval of a pure list the most + * sensible choice is to put all words on line 1. Given that + * we neither need memory for them nor compute anything. + * 'line' is left NULL. The two places using this information + * (TclInfoFrame, and TclInitCompileEnv), are special-cased to + * use the proper line number directly instead of accessing + * the 'line' array. */ - line = 1; - for (i=0; i < eoFramePtr->nline; i++) { - eoFramePtr->line[i] = line; - w = TclGetString(elements[i]); - TclAdvanceLines(&line, w, w + strlen(w)); - } + Tcl_ListObjGetElements(NULL, copyPtr, + &nelements, &elements); iPtr->cmdFramePtr = eoFramePtr; - result = Tcl_EvalObjv(interp, eoFramePtr->nline, elements, + result = Tcl_EvalObjv(interp, nelements, elements, flags); Tcl_DecrRefCount(copyPtr); iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; Tcl_DecrRefCount(eoFramePtr->cmd.listPtr); - ckfree((char *) eoFramePtr->line); - eoFramePtr->line = NULL; - eoFramePtr->nline = 0; TclStackFree(interp, eoFramePtr); goto done; diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index d895bf8..bbddc63 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.2 2008/07/07 21:39:49 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.3 2008/07/23 20:47:31 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1158,7 +1158,7 @@ TclInfoFrame( */ ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], -1)); - ADD_PAIR("line", Tcl_NewIntObj(framePtr->line[0])); + ADD_PAIR("line", Tcl_NewIntObj(1)); /* * We put a duplicate of the command list obj into the result to diff --git a/generic/tclCompile.c b/generic/tclCompile.c index e3ce0c9..e557860 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.4 2008/07/22 22:26:57 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.5 2008/07/23 20:47:32 andreas_kupries Exp $ */ #include "tclInt.h" @@ -915,9 +915,11 @@ TclInitCompileEnv( envPtr->extCmdMapPtr->neiloc = 0; envPtr->extCmdMapPtr->nueiloc = 0; - if (invoker == NULL) { + if (invoker == NULL || + (invoker->type == TCL_LOCATION_EVAL_LIST)) { /* - * Initialize the compiler for relative counting. + * Initialize the compiler for relative counting in case of a + * dynamic context. */ envPtr->line = 1; diff --git a/tests/info.test b/tests/info.test index 63b8a79..5a4dd13 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.47.2.1 2008/06/16 20:44:32 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.47.2.2 2008/07/23 20:47:33 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1301,6 +1301,32 @@ namespace delete foo # ------------------------------------------------------------------------- +test info-34.0 {eval pure list, single line} { + # Basically, counting the newline in the word seen through $foo + # doesn't really make sense. It makes a bit of sense if the word + # would have been a string literal in the command list. + # + # Problem: At the point where we see the list elements we cannot + # distinguish the two cases, thus we cannot switch between + # count/not-count, it is has to be one or the other for all + # cases. Of the two possibilities miguel convinced me that 'not + # counting' is the more proper. + set foo {b + c} + set cmd [list foreach $foo {x y} { + set res [join [lrange [etrace] 0 2] \n] + break + }] + eval $cmd + set res +} {10 {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +9 {type eval line 2 cmd etrace proc ::tcltest::RunTest} +8 {type eval line 1 cmd foreac proc ::tcltest::RunTest}} + +# ------------------------------------------------------------------------- + +# ------------------------------------------------------------------------- + # cleanup catch {namespace delete test_ns_info1 test_ns_info2} ::tcltest::cleanupTests -- cgit v0.12 From 05bc9087451e6631cfe619292a84ad5842bc6278 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 23 Jul 2008 20:55:11 +0000 Subject: Contrain the new test to run only when tip280 is active. --- tests/info.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/info.test b/tests/info.test index 35297b3..e644158 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.7 2008/07/23 20:45:18 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.8 2008/07/23 20:55:11 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1075,7 +1075,7 @@ namespace delete foo # ------------------------------------------------------------------------- -test info-34.0 {eval pure list, single line} { +test info-34.0 {eval pure list, single line} tip280 { # Basically, counting the newline in the word seen through $foo # doesn't really make sense. It makes a bit of sense if the word # would have been a string literal in the command list. -- cgit v0.12 From 1e3c3962e856438b8d37edcad26f1ba3fca8198b Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 23 Jul 2008 21:07:22 +0000 Subject: Rename new test to avoid duplicate test name. --- tests/info.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/info.test b/tests/info.test index 5a4dd13..ab4ff8e 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.47.2.2 2008/07/23 20:47:33 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.47.2.3 2008/07/23 21:07:22 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1301,7 +1301,7 @@ namespace delete foo # ------------------------------------------------------------------------- -test info-34.0 {eval pure list, single line} { +test info-37.0 {eval pure list, single line} { # Basically, counting the newline in the word seen through $foo # doesn't really make sense. It makes a bit of sense if the word # would have been a string literal in the command list. -- cgit v0.12 From 0165e5e6989f8b3baad4c63d67077cdb388dd9bf Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 23 Jul 2008 21:42:43 +0000 Subject: * tests/info.test: Reordered the tests to have monotonously increasing numbers. --- ChangeLog | 3 + tests/info.test | 302 ++++++++++++++++++++++++++++---------------------------- 2 files changed, 154 insertions(+), 151 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5c86c0d..ff7ad5a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-07-23 Andreas Kupries + * tests/info.test: Reordered the tests to have monotonously + increasing numbers. + * generic/tclBasic.c: Modified TclArgumentGet to reject pure lists * generic/tclCmdIL.c: immediately, without search. Reworked setup * generic/tclCompile.c: of eoFramePtr, doesn't need the line diff --git a/tests/info.test b/tests/info.test index ab4ff8e..66b19b4 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.47.2.3 2008/07/23 21:07:22 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.47.2.4 2008/07/23 21:42:45 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -904,20 +904,110 @@ test info-24.5 {info frame, interaction, for} -body { # ------------------------------------------------------------------------- +namespace eval foo {} +set x foo +switch -exact -- $x { + foo { + proc ::foo::bar {} {info frame 0} + } +} + +test info-24.6.0 {info frame, interaction, switch, list body} -body { + reduce [foo::bar] +} -cleanup { + namespace delete foo + unset x +} -result {type source line 911 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +# ------------------------------------------------------------------------- + +namespace eval foo {} +set x foo +switch -exact -- $x foo { + proc ::foo::bar {} {info frame 0} +} + +test info-24.6.1 {info frame, interaction, switch, multi-body} -body { + reduce [foo::bar] +} -cleanup { + namespace delete foo + unset x +} -result {type source line 927 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +# ------------------------------------------------------------------------- + +namespace eval foo {} +set x foo +switch -exact -- $x [list foo { + proc ::foo::bar {} {info frame 0} +}] + +test info-24.6.2 {info frame, interaction, switch, list body, dynamic} -body { + reduce [foo::bar] +} -cleanup { + namespace delete foo + unset x +} -result {type proc line 1 cmd {info frame 0} proc ::foo::bar level 0} + +# ------------------------------------------------------------------------- + +namespace eval foo {} +dict for {k v} {foo bar} { + proc ::foo::bar {} {info frame 0} +} + +test info-24.7 {info frame, interaction, dict for} { + reduce [foo::bar] +} {type source line 956 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +namespace eval foo {} +set thedict {foo bar} +dict with thedict { + proc ::foo::bar {} {info frame 0} +} + +test info-24.8 {info frame, interaction, dict with} { + reduce [foo::bar] +} {type source line 970 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo +unset thedict + +# ------------------------------------------------------------------------- + +namespace eval foo {} +dict filter {foo bar} script {k v} { + proc ::foo::bar {} {info frame 0} + set x 1 +} + +test info-24.9 {info frame, interaction, dict filter} { + reduce [foo::bar] +} {type source line 984 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo +unset x + +# ------------------------------------------------------------------------- + eval { proc bar {} {info frame 0} } test info-25.0 {info frame, proc in eval} { reduce [bar] -} {type source line 908 file info.test cmd {info frame 0} proc ::bar level 0} +} {type source line 998 file info.test cmd {info frame 0} proc ::bar level 0} # Don't need to clean up yet... proc bar {} {info frame 0} test info-25.1 {info frame, regular proc} { reduce [bar] -} {type source line 916 file info.test cmd {info frame 0} proc ::bar level 0} +} {type source line 1006 file info.test cmd {info frame 0} proc ::bar level 0} rename bar {} @@ -986,53 +1076,6 @@ test info-31.6 {eval, script in variable} { # ------------------------------------------------------------------------- -namespace eval foo {} -set x foo -switch -exact -- $x { - foo { - proc ::foo::bar {} {info frame 0} - } -} - -test info-24.6.0 {info frame, interaction, switch, list body} -body { - reduce [foo::bar] -} -cleanup { - namespace delete foo - unset x -} -result {type source line 993 file info.test cmd {info frame 0} proc ::foo::bar level 0} - -# ------------------------------------------------------------------------- - -namespace eval foo {} -set x foo -switch -exact -- $x foo { - proc ::foo::bar {} {info frame 0} -} - -test info-24.6.1 {info frame, interaction, switch, multi-body} -body { - reduce [foo::bar] -} -cleanup { - namespace delete foo - unset x -} -result {type source line 1009 file info.test cmd {info frame 0} proc ::foo::bar level 0} - -# ------------------------------------------------------------------------- - -namespace eval foo {} -set x foo -switch -exact -- $x [list foo { - proc ::foo::bar {} {info frame 0} -}] - -test info-24.6.2 {info frame, interaction, switch, list body, dynamic} -body { - reduce [foo::bar] -} -cleanup { - namespace delete foo - unset x -} -result {type proc line 1 cmd {info frame 0} proc ::foo::bar level 0} - -# ------------------------------------------------------------------------- - set body { foo { proc ::foo::bar {} {info frame 0} @@ -1076,7 +1119,7 @@ test info-33.0 {{*}, literal, direct} -body { reduce [foo::bar] } -cleanup { namespace delete foo -} -result {type source line 1073 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} -result {type source line 1116 file info.test cmd {info frame 0} proc ::foo::bar level 0} # ------------------------------------------------------------------------- @@ -1092,7 +1135,59 @@ test info-33.1 {{*}, literal, simple, bytecompiled} -body { reduce [foo::bar] } -cleanup { namespace delete foo -} -result {type source line 1088 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} -result {type source line 1131 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +# ------------------------------------------------------------------------- + +namespace {*}" + eval + foo + {proc bar {} {info frame 0}} +" +test info-33.2 {{*}, literal, direct} { + reduce [foo::bar] +} {type source line 1145 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +namespace {*}"eval\nfoo\n{proc bar {} {info frame 0}}\n" + +test info-33.2a {{*}, literal, not simple, direct} { + reduce [foo::bar] +} {type proc line 1 cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +namespace eval foo {} +proc foo::bar {} { + set flag 1 + if {*}" + {1} + {info frame 0} + " +} +test info-33.3 {{*}, literal, simple, bytecompiled} { + reduce [foo::bar] +} {type source line 1170 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo + +# ------------------------------------------------------------------------- + +namespace eval foo {} +proc foo::bar {} { + set flag 1 + if {*}"\n{1}\n{info frame 0}" +} +test info-33.3a {{*}, literal, not simple, bytecompiled} { + reduce [foo::bar] +} {type eval line 1 cmd {info frame 0} proc ::foo::bar level 0} + +namespace delete foo # ------------------------------------------------------------------------- @@ -1139,7 +1234,7 @@ proc foo {} { } test info-35.0 {apply, literal} { reduce [foo] -} {type source line 1137 file info.test cmd {info frame 0} lambda { +} {type source line 1232 file info.test cmd {info frame 0} lambda { {x y} {info frame 0} } level 0} @@ -1160,49 +1255,6 @@ unset lambda # ------------------------------------------------------------------------- namespace eval foo {} -dict for {k v} {foo bar} { - proc ::foo::bar {} {info frame 0} -} - -test info-24.7 {info frame, interaction, dict for} { - reduce [foo::bar] -} {type source line 1164 file info.test cmd {info frame 0} proc ::foo::bar level 0} - -namespace delete foo - -# ------------------------------------------------------------------------- - -namespace eval foo {} -set thedict {foo bar} -dict with thedict { - proc ::foo::bar {} {info frame 0} -} - -test info-24.8 {info frame, interaction, dict with} { - reduce [foo::bar] -} {type source line 1178 file info.test cmd {info frame 0} proc ::foo::bar level 0} - -namespace delete foo -unset thedict - -# ------------------------------------------------------------------------- - -namespace eval foo {} -dict filter {foo bar} script {k v} { - proc ::foo::bar {} {info frame 0} - set x 1 -} - -test info-24.9 {info frame, interaction, dict filter} { - reduce [foo::bar] -} {type source line 1192 file info.test cmd {info frame 0} proc ::foo::bar level 0} - -namespace delete foo -unset x - -# ------------------------------------------------------------------------- - -namespace eval foo {} proc foo::bar {} { dict for {k v} {foo bar} { set x [info frame 0] @@ -1211,7 +1263,7 @@ proc foo::bar {} { } test info-36.0 {info frame, dict for, bcc} { reduce [foo::bar] -} {type source line 1208 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 1260 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo @@ -1228,7 +1280,7 @@ proc foo::bar {} { test info-36.1.0 {switch, list literal, bcc} { reduce [foo::bar] -} {type source line 1224 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 1276 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo @@ -1243,59 +1295,7 @@ proc foo::bar {} { test info-36.1.1 {switch, multi-body literals, bcc} { reduce [foo::bar] -} {type source line 1240 file info.test cmd {info frame 0} proc ::foo::bar level 0} - -namespace delete foo - -# ------------------------------------------------------------------------- - -namespace {*}" - eval - foo - {proc bar {} {info frame 0}} -" -test info-33.2 {{*}, literal, direct} { - reduce [foo::bar] -} {type source line 1255 file info.test cmd {info frame 0} proc ::foo::bar level 0} - -namespace delete foo - -# ------------------------------------------------------------------------- - -namespace {*}"eval\nfoo\n{proc bar {} {info frame 0}}\n" - -test info-33.2a {{*}, literal, not simple, direct} { - reduce [foo::bar] -} {type proc line 1 cmd {info frame 0} proc ::foo::bar level 0} - -namespace delete foo - -# ------------------------------------------------------------------------- - -namespace eval foo {} -proc foo::bar {} { - set flag 1 - if {*}" - {1} - {info frame 0} - " -} -test info-33.3 {{*}, literal, simple, bytecompiled} { - reduce [foo::bar] -} {type source line 1280 file info.test cmd {info frame 0} proc ::foo::bar level 0} - -namespace delete foo - -# ------------------------------------------------------------------------- - -namespace eval foo {} -proc foo::bar {} { - set flag 1 - if {*}"\n{1}\n{info frame 0}" -} -test info-33.3a {{*}, literal, not simple, bytecompiled} { - reduce [foo::bar] -} {type eval line 1 cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 1292 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo -- cgit v0.12 From 370ba65ed8ff8a13efb636983f14408c92cad57d Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 24 Jul 2008 21:05:12 +0000 Subject: * tests/info.test: Tests 38.* added, exactly testing the tracking of location for uplevel scripts. --- ChangeLog | 5 ++++ tests/info.test | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 42a3272..355fdc6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-07-24 Andreas Kupries + + * tests/info.test: Tests 38.* added, exactly testing the tracking + of location for uplevel scripts. + 2008-07-23 Andreas Kupries * generic/tclBasic.c: Modified TclArgumentGet to reject pure lists diff --git a/tests/info.test b/tests/info.test index e644158..7675d66 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.8 2008/07/23 20:55:11 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.9 2008/07/24 21:05:14 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1099,6 +1099,91 @@ test info-34.0 {eval pure list, single line} tip280 { # ------------------------------------------------------------------------- +# 6 cases. +## DV. direct-var - unchanged +## DPV direct-proc-var - ditto +## PPV proc-proc-var - ditto +## DL. direct-literal - now tracking absolute location +## DPL direct-proc-literal - ditto +## PPL proc-proc-literal - ditto +## ### ### ### ######### ######### #########" + +proc control {vv script} { + upvar 1 $vv var + return [uplevel 1 $script] +} + +proc datal {} { + control y { + set y PPL + etrace + } +} + +proc datav {} { + set script { + set y PPV + etrace + } + control y $script +} + +test info-38.1 {location information for uplevel, dv, direct-var} tip280 { + set script { + set y DV. + etrace + } + join [lrange [uplevel \#0 $script] 0 2] \n +} {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +8 {type eval line 3 cmd etrace proc ::tcltest::RunTest} +7 {type source line 1136 file info.test cmd {uplevel \#0 $script} proc ::tcltest::RunTest}} + +test info-38.2 {location information for uplevel, dl, direct-literal} tip280 { + join [lrange [uplevel \#0 { + set y DL. + etrace + }] 0 2] \n +} {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +8 {type source line 1144 file info.test cmd etrace proc ::tcltest::RunTest} +7 {type source line 1142 file info.test cmd up proc ::tcltest::RunTest}} + +test info-38.3 {location information for uplevel, dpv, direct-proc-var} tip280 { + set script { + set y DPV + etrace + } + join [lrange [control y $script] 0 3] \n +} {10 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +9 {type eval line 3 cmd etrace proc ::control} +8 {type source line 1113 file info.test cmd {uplevel 1 $script} proc ::control} +7 {type source line 1155 file info.test cmd {control y $script} proc ::tcltest::RunTest}} + +test info-38.4 {location information for uplevel, dpv, direct-proc-literal} tip280 { + join [lrange [control y { + set y DPL + etrace + }] 0 3] \n +} {10 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +9 {type source line 1164 file info.test cmd etrace proc ::control} +8 {type source line 1113 file info.test cmd {uplevel 1 $script} proc ::control} +7 {type source line 1162 file info.test cmd control proc ::tcltest::RunTest}} + +test info-38.5 {location information for uplevel, ppv, proc-proc-var} tip280 { + join [lrange [datav] 0 4] \n +} {11 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +10 {type eval line 3 cmd etrace proc ::control} +9 {type source line 1113 file info.test cmd {uplevel 1 $script} proc ::control} +8 {type source line 1128 file info.test cmd {control y $script} proc ::datav level 1} +7 {type source line 1172 file info.test cmd datav proc ::tcltest::RunTest}} + +test info-38.6 {location information for uplevel, ppl, proc-proc-literal} tip280 { + join [lrange [datal] 0 4] \n +} {11 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +10 {type source line 1119 file info.test cmd etrace proc ::control} +9 {type source line 1113 file info.test cmd {uplevel 1 $script} proc ::control} +8 {type source line 1117 file info.test cmd control proc ::datal level 1} +7 {type source line 1180 file info.test cmd datal proc ::tcltest::RunTest}} + # ------------------------------------------------------------------------- # cleanup -- cgit v0.12 From ab493437ef6fb750de339bb51d29743250bcde32 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 25 Jul 2008 20:30:24 +0000 Subject: * tests/info.test: Tests 38.* added, exactly testing the tracking of location for uplevel scripts. * generic/tclCompile.c (TclInitCompileEnv): Reorganized the initialization of the #280 location information to match the flow in TclEvalObjEx to get more absolute contexts. * generic/tclBasic.c (TclEvalObjEx): Moved the pure-list optimization out of the eval-direct code path to be done always, i.e. even when a compile is requested. This way we do not loose the association between #280 location information and the list elements, if any. --- ChangeLog | 15 ++++++ generic/tclBasic.c | 131 ++++++++++++++++++++++++++------------------------- generic/tclCompile.c | 45 ++++++++++-------- generic/tclProc.c | 4 +- tests/compile.test | 4 +- tests/info.test | 111 ++++++++++++++++++++++++++++++++++++++----- 6 files changed, 211 insertions(+), 99 deletions(-) diff --git a/ChangeLog b/ChangeLog index ff7ad5a..b0cb633 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2008-07-25 Andreas Kupries + + * tests/info.test: Tests 38.* added, exactly testing the tracking + of location for uplevel scripts. + + * generic/tclCompile.c (TclInitCompileEnv): Reorganized the + initialization of the #280 location information to match the flow + in TclEvalObjEx to get more absolute contexts. + + * generic/tclBasic.c (TclEvalObjEx): Moved the pure-list + optimization out of the eval-direct code path to be done always, + i.e. even when a compile is requested. This way we do not loose + the association between #280 location information and the list + elements, if any. + 2008-07-23 Andreas Kupries * tests/info.test: Reordered the tests to have monotonously diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 9cb5707..917a8a5 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.4 2008/07/23 20:47:30 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.5 2008/07/25 20:30:34 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1409,6 +1409,10 @@ DeleteInterpProc( ckfree((char *) eclPtr->loc); } + if (eclPtr->eiloc != NULL) { + ckfree((char *) eclPtr->eiloc); + } + ckfree((char *) eclPtr); Tcl_DeleteHashEntry(hPtr); } @@ -4755,7 +4759,7 @@ TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) ((List *)obj->internalRep.twoPtrValue.ptr1)->canonicalFlag)) { return; } - + /* * First look for location information recorded in the argument * stack. That is nearest. @@ -4920,79 +4924,80 @@ TclEvalObjEx( Tcl_IncrRefCount(objPtr); - if (flags & TCL_EVAL_DIRECT) { - /* - * We're not supposed to use the compiler or byte-code interpreter. - * Let Tcl_EvalEx evaluate the command directly (and probably more - * slowly). - * - * Pure List Optimization (no string representation). In this case, we - * can safely use Tcl_EvalObjv instead and get an appreciable - * improvement in execution speed. This is because it allows us to - * avoid a setFromAny step that would just pack everything into a - * string and back out again. - * - * This restriction has been relaxed a bit by storing in lists whether - * they are "canonical" or not (a canonical list being one that is - * either pure or that has its string rep derived by - * UpdateStringOfList from the internal rep). - */ + /* Pure List Optimization (no string representation). In this case, we can + * safely use Tcl_EvalObjv instead and get an appreciable improvement in + * execution speed. This is because it allows us to avoid a setFromAny + * step that would just pack everything into a string and back out again. + * + * This also preserves any associations between list elements and location + * information for such elements. + * + * This restriction has been relaxed a bit by storing in lists whether + * they are "canonical" or not (a canonical list being one that is either + * pure or that has its string rep derived by UpdateStringOfList from the + * internal rep). + */ - if (objPtr->typePtr == &tclListType) { /* is a list... */ - List *listRepPtr = objPtr->internalRep.twoPtrValue.ptr1; + if (objPtr->typePtr == &tclListType) { /* is a list... */ + List *listRepPtr = objPtr->internalRep.twoPtrValue.ptr1; - if (objPtr->bytes == NULL || /* ...without a string rep */ - listRepPtr->canonicalFlag) {/* ...or that is canonical */ - /* - * TIP #280 Structures for tracking lines. As we know that - * this is dynamic execution we ignore the invoker, even if - * known. - */ + if (objPtr->bytes == NULL || /* ...without a string rep */ + listRepPtr->canonicalFlag) {/* ...or that is canonical */ + /* + * TIP #280 Structures for tracking lines. As we know that this is + * dynamic execution we ignore the invoker, even if known. + */ - int nelements; - Tcl_Obj **elements, *copyPtr = TclListObjCopy(NULL, objPtr); - CmdFrame *eoFramePtr = (CmdFrame *) - TclStackAlloc(interp, sizeof(CmdFrame)); + int nelements; + Tcl_Obj **elements, *copyPtr = TclListObjCopy(NULL, objPtr); + CmdFrame *eoFramePtr = (CmdFrame *) + TclStackAlloc(interp, sizeof(CmdFrame)); - eoFramePtr->type = TCL_LOCATION_EVAL_LIST; - eoFramePtr->level = (iPtr->cmdFramePtr == NULL? - 1 : iPtr->cmdFramePtr->level + 1); - eoFramePtr->framePtr = iPtr->framePtr; - eoFramePtr->nextPtr = iPtr->cmdFramePtr; + eoFramePtr->type = TCL_LOCATION_EVAL_LIST; + eoFramePtr->level = (iPtr->cmdFramePtr == NULL? + 1 : iPtr->cmdFramePtr->level + 1); + eoFramePtr->framePtr = iPtr->framePtr; + eoFramePtr->nextPtr = iPtr->cmdFramePtr; - eoFramePtr->nline = 0; - eoFramePtr->line = NULL; + eoFramePtr->nline = 0; + eoFramePtr->line = NULL; - eoFramePtr->cmd.listPtr = objPtr; - Tcl_IncrRefCount(eoFramePtr->cmd.listPtr); - eoFramePtr->data.eval.path = NULL; + eoFramePtr->cmd.listPtr = objPtr; + Tcl_IncrRefCount(eoFramePtr->cmd.listPtr); + eoFramePtr->data.eval.path = NULL; - /* - * TIP #280 We do _not_ compute all the line numbers for the - * words in the command. For the eval of a pure list the most - * sensible choice is to put all words on line 1. Given that - * we neither need memory for them nor compute anything. - * 'line' is left NULL. The two places using this information - * (TclInfoFrame, and TclInitCompileEnv), are special-cased to - * use the proper line number directly instead of accessing - * the 'line' array. - */ + /* + * TIP #280 We do _not_ compute all the line numbers for the words + * in the command. For the eval of a pure list the most sensible + * choice is to put all words on line 1. Given that we neither + * need memory for them nor compute anything. 'line' is left + * NULL. The two places using this information (TclInfoFrame, and + * TclInitCompileEnv), are special-cased to use the proper line + * number directly instead of accessing the 'line' array. + */ - Tcl_ListObjGetElements(NULL, copyPtr, - &nelements, &elements); + Tcl_ListObjGetElements(NULL, copyPtr, + &nelements, &elements); - iPtr->cmdFramePtr = eoFramePtr; - result = Tcl_EvalObjv(interp, nelements, elements, - flags); + iPtr->cmdFramePtr = eoFramePtr; + result = Tcl_EvalObjv(interp, nelements, elements, + flags); - Tcl_DecrRefCount(copyPtr); - iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; - Tcl_DecrRefCount(eoFramePtr->cmd.listPtr); - TclStackFree(interp, eoFramePtr); + Tcl_DecrRefCount(copyPtr); + iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; + Tcl_DecrRefCount(eoFramePtr->cmd.listPtr); + TclStackFree(interp, eoFramePtr); - goto done; - } + goto done; } + } + + if (flags & TCL_EVAL_DIRECT) { + /* + * We're not supposed to use the compiler or byte-code interpreter. + * Let Tcl_EvalEx evaluate the command directly (and probably more + * slowly). + */ /* * TIP #280. Propagate context as much as we can. Especially if the diff --git a/generic/tclCompile.c b/generic/tclCompile.c index e557860..3c7ca6e 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.5 2008/07/23 20:47:32 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.6 2008/07/25 20:30:44 andreas_kupries Exp $ */ #include "tclInt.h" @@ -933,7 +933,22 @@ TclInitCompileEnv( * ...) which may make change the type as well. */ - if ((invoker->nline <= word) || (invoker->line[word] < 0)) { + CmdFrame* ctxPtr = (CmdFrame *) TclStackAlloc(interp, sizeof(CmdFrame)); + int pc = 0; + + *ctxPtr = *invoker; + + if (invoker->type == TCL_LOCATION_BC) { + /* + * Note: Type BC => ctx.data.eval.path is not used. + * ctx.data.tebc.codePtr is used instead. + */ + + TclGetSrcInfoForPc(ctxPtr); + pc = 1; + } + + if ((ctxPtr->nline <= word) || (ctxPtr->line[word] < 0)) { /* * Word is not a literal, relative counting. */ @@ -941,45 +956,37 @@ TclInitCompileEnv( envPtr->line = 1; envPtr->extCmdMapPtr->type = (envPtr->procPtr ? TCL_LOCATION_PROC : TCL_LOCATION_BC); - } else { - CmdFrame *ctxPtr; - int pc = 0; - - ctxPtr = (CmdFrame *) TclStackAlloc(interp, sizeof(CmdFrame)); - *ctxPtr = *invoker; - if (invoker->type == TCL_LOCATION_BC) { + if (pc && (ctxPtr->type == TCL_LOCATION_SOURCE)) { /* - * Note: Type BC => ctx.data.eval.path is not used. - * ctx.data.tebc.codePtr is used instead. + * The reference made by 'TclGetSrcInfoForPc' is dead. */ - - TclGetSrcInfoForPc(ctxPtr); - pc = 1; + Tcl_DecrRefCount(ctxPtr->data.eval.path); } - + } else { envPtr->line = ctxPtr->line[word]; envPtr->extCmdMapPtr->type = ctxPtr->type; if (ctxPtr->type == TCL_LOCATION_SOURCE) { + envPtr->extCmdMapPtr->path = ctxPtr->data.eval.path; + if (pc) { /* * The reference 'TclGetSrcInfoForPc' made is transfered. */ - envPtr->extCmdMapPtr->path = ctxPtr->data.eval.path; ctxPtr->data.eval.path = NULL; } else { /* * We have a new reference here. */ - envPtr->extCmdMapPtr->path = ctxPtr->data.eval.path; - Tcl_IncrRefCount(envPtr->extCmdMapPtr->path); + Tcl_IncrRefCount(ctxPtr->data.eval.path); } } - TclStackFree(interp, ctxPtr); } + + TclStackFree(interp, ctxPtr); } envPtr->auxDataArrayPtr = envPtr->staticAuxDataArraySpace; diff --git a/generic/tclProc.c b/generic/tclProc.c index f9e6822..2b7c5f7 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.139.2.1 2008/07/21 19:38:19 andreas_kupries Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.139.2.2 2008/07/25 20:30:47 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2162,7 +2162,7 @@ TclProcCleanupProc( /* * TIP #280: Release the location data associated with this Proc * structure, if any. The interpreter may not exist (For example for - * procbody structurues created by tbcload. + * procbody structures created by tbcload. */ if (!iPtr) { diff --git a/tests/compile.test b/tests/compile.test index fe2deea..6785855 100644 --- a/tests/compile.test +++ b/tests/compile.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: compile.test,v 1.48 2007/12/13 15:26:06 dgp Exp $ +# RCS: @(#) $Id: compile.test,v 1.48.2.1 2008/07/25 20:30:58 andreas_kupries Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -276,7 +276,7 @@ test compile-11.9 {Tcl_Append*: ensure Tcl_ResetResult is used properly} { # TclReleaseLiteral. They are only effective when tcl is compiled # with TCL_MEM_DEBUG # -# Special test for leak on interp delete [Bug 467523]. +# Special test for leak on interp delete [Bug 467523]. test compile-12.1 {testing literal leak on interp delete} -setup { proc getbytes {} { set lines [split [memory info] "\n"] diff --git a/tests/info.test b/tests/info.test index 66b19b4..2596dea 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.47.2.4 2008/07/23 21:42:45 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.47.2.5 2008/07/25 20:30:58 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -746,15 +746,15 @@ test info-22.2 {info frame, bad level absolute} {!singleTestInterp} { catch {info frame 9} msg set msg } {bad level "9"} -test info-22.3 {info frame, current, relative} { +test info-22.3 {info frame, current, relative} -match glob -body { info frame 0 -} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} -test info-22.4 {info frame, current, relative, nested} { +} -result {type source line 750 file * cmd {info frame 0} proc ::tcltest::RunTest} +test info-22.4 {info frame, current, relative, nested} -match glob -body { set res [info frame 0] -} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} -test info-22.5 {info frame, current, absolute} {!singleTestInterp} { +} -result {type source line 753 file * cmd {info frame 0} proc ::tcltest::RunTest} +test info-22.5 {info frame, current, absolute} -constraints {!singleTestInterp} -match glob -body { reduce [info frame 7] -} {type eval line 2 cmd {info frame 7} proc ::tcltest::RunTest} +} -result {type source line 756 file * cmd {info frame 7} proc ::tcltest::RunTest} test info-22.6 {info frame, global, relative} {!singleTestInterp} { reduce [info frame -6] } {type source line 758 file info.test cmd test\ info-22.6\ \{info\ frame,\ global,\ relative\}\ \{!singleTestInter level 0} @@ -783,11 +783,11 @@ test info-23.2 {eval'd info frame, dynamic} {!singleTestInterp} { set script {info frame} eval $script } 8 -test info-23.3 {eval'd info frame, literal} { +test info-23.3 {eval'd info frame, literal} -match glob -body { eval { info frame 0 } -} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type source line 788 file * cmd {info frame 0} proc ::tcltest::RunTest} test info-23.4 {eval'd info frame, semi-dynamic} { eval info frame 0 } {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} @@ -1301,7 +1301,7 @@ namespace delete foo # ------------------------------------------------------------------------- -test info-37.0 {eval pure list, single line} { +test info-37.0 {eval pure list, single line} -match glob -body { # Basically, counting the newline in the word seen through $foo # doesn't really make sense. It makes a bit of sense if the word # would have been a string literal in the command list. @@ -1319,12 +1319,97 @@ test info-37.0 {eval pure list, single line} { }] eval $cmd set res -} {10 {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} -9 {type eval line 2 cmd etrace proc ::tcltest::RunTest} -8 {type eval line 1 cmd foreac proc ::tcltest::RunTest}} +} -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 2 cmd etrace proc ::tcltest::RunTest} +* {type eval line 1 cmd foreac proc ::tcltest::RunTest}} # ------------------------------------------------------------------------- +# 6 cases. +## DV. direct-var - unchanged +## DPV direct-proc-var - ditto +## PPV proc-proc-var - ditto +## DL. direct-literal - now tracking absolute location +## DPL direct-proc-literal - ditto +## PPL proc-proc-literal - ditto +## ### ### ### ######### ######### #########" + +proc control {vv script} { + upvar 1 $vv var + return [uplevel 1 $script] +} + +proc datal {} { + control y { + set y PPL + etrace + } +} + +proc datav {} { + set script { + set y PPV + etrace + } + control y $script +} + +test info-38.1 {location information for uplevel, dv, direct-var} -match glob -body { + set script { + set y DV. + etrace + } + join [lrange [uplevel \#0 $script] 0 2] \n +} -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 3 cmd etrace proc ::tcltest::RunTest} +* {type source line 1362 file info.test cmd {uplevel \\#0 $script} proc ::tcltest::RunTest}} + +test info-38.2 {location information for uplevel, dl, direct-literal} -match glob -body { + join [lrange [uplevel \#0 { + set y DL. + etrace + }] 0 2] \n +} -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type source line 1370 file info.test cmd etrace proc ::tcltest::RunTest} +* {type source line 1368 file info.test cmd uplevel\\ \\\\ proc ::tcltest::RunTest}} + +test info-38.3 {location information for uplevel, dpv, direct-proc-var} -match glob -body { + set script { + set y DPV + etrace + } + join [lrange [control y $script] 0 3] \n +} -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 3 cmd etrace proc ::control} +* {type source line 1339 file info.test cmd {uplevel 1 $script} proc ::control} +* {type source line 1381 file info.test cmd {control y $script} proc ::tcltest::RunTest}} + +test info-38.4 {location information for uplevel, dpv, direct-proc-literal} -match glob -body { + join [lrange [control y { + set y DPL + etrace + }] 0 3] \n +} -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type source line 1390 file info.test cmd etrace proc ::control} +* {type source line 1339 file info.test cmd {uplevel 1 $script} proc ::control} +* {type source line 1388 file info.test cmd control proc ::tcltest::RunTest}} + +test info-38.5 {location information for uplevel, ppv, proc-proc-var} -match glob -body { + join [lrange [datav] 0 4] \n +} -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 3 cmd etrace proc ::control} +* {type source line 1339 file info.test cmd {uplevel 1 $script} proc ::control} +* {type source line 1354 file info.test cmd {control y $script} proc ::datav level 1} +* {type source line 1398 file info.test cmd datav proc ::tcltest::RunTest}} + +test info-38.6 {location information for uplevel, ppl, proc-proc-literal} -match glob -body { + join [lrange [datal] 0 4] \n +} -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type source line 1345 file info.test cmd etrace proc ::control} +* {type source line 1339 file info.test cmd {uplevel 1 $script} proc ::control} +* {type source line 1343 file info.test cmd control proc ::datal level 1} +* {type source line 1406 file info.test cmd datal proc ::tcltest::RunTest}} + # ------------------------------------------------------------------------- # cleanup -- cgit v0.12 From df66a232058af1dc5b776821fe6c9c0281c696dd Mon Sep 17 00:00:00 2001 From: das Date: Fri, 25 Jul 2008 21:24:07 +0000 Subject: * tests/info.test (info-37.0): Add !singleTestInterp constraint; (info-22.8, info-23.0): switch to glob matching to avoid sensitivity to tcltest.tcl line number changes, remove knownBug constraint, fix expected result. [Bug 1605269] --- ChangeLog | 7 +++++++ tests/info.test | 42 +++++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index b0cb633..a022568 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-07-25 Daniel Steffen + + * tests/info.test (info-37.0): Add !singleTestInterp constraint; + (info-22.8, info-23.0): switch to glob matching to avoid sensitivity + to tcltest.tcl line number changes, remove knownBug constraint, fix + expected result. [Bug 1605269] + 2008-07-25 Andreas Kupries * tests/info.test: Tests 38.* added, exactly testing the tracking diff --git a/tests/info.test b/tests/info.test index 2596dea..1e32edc 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.47.2.5 2008/07/25 20:30:58 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.47.2.6 2008/07/25 21:24:10 das Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -761,16 +761,16 @@ test info-22.6 {info frame, global, relative} {!singleTestInterp} { test info-22.7 {info frame, global, absolute} {!singleTestInterp} { reduce [info frame 1] } {type source line 761 file info.test cmd test\ info-22.7\ \{info\ frame,\ global,\ absolute\}\ \{!singleTestInter level 0} -test info-22.8 {info frame, basic trace} {knownBug !singleTestInterp} { +test info-22.8 {info frame, basic trace} -constraints {!singleTestInterp} -match glob -body { join [etrace] \n -} {8 {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} -7 {type eval line 2 cmd etrace} -6 {type source line 2299 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} -5 {type eval line 1 cmd {::tcltest::RunTest info-22}} -4 {type source line 1621 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ info-22} -2 {type source line 1967 file tcltest.tcl cmd {uplevel 1 [list [namespace origin Eval] $command 1]} proc ::tcltest::test} -1 {type source line 764 file info.test cmd test\ info-22.8\ \{info\ frame,\ basic\ trace\}\ \{!singleTestInter level 1}} +} -result {8 {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +7 {type source line 765 file info.test cmd etrace proc ::tcltest::RunTest} +6 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} +5 {type eval line 1 cmd {::tcltest::RunTest info-22} proc ::tcltest::Eval} +4 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} +3 {type eval line 1 cmd ::tcltest::Eval\\ \\\{::tcltest::RunTest\\ info-22 proc ::tcltest::test} +2 {type source line * file tcltest.tcl cmd {uplevel 1 \[list \[namespace origin Eval\] $command 1\]} proc ::tcltest::test} +1 {type source line 764 file info.test cmd {test info-22.8 {info frame, basic trace} -constraints {!singleTestInterp} -match glob -bo} level 1}} ## The line 1967 is off by 5 from the true value of 1972. This is a knownBug, see testcase 30.0 test info-23.0 {eval'd info frame} {!singleTestInterp} { @@ -795,18 +795,18 @@ test info-23.5 {eval'd info frame, dynamic} { set script {info frame 0} eval $script } {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} -test info-23.6 {eval'd info frame, trace} {knownBug !singleTestInterp} { +test info-23.6 {eval'd info frame, trace} -constraints {!singleTestInterp} -match glob -body { set script {etrace} join [eval $script] \n -} {9 {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} -8 {type eval line 1 cmd etrace} -7 {type eval line 3 cmd {eval $script}} -6 {type source line 2299 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} -5 {type eval line 1 cmd {::tcltest::RunTest info-23}} -4 {type source line 1621 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ info-23} -2 {type source line 1967 file tcltest.tcl cmd {uplevel 1 [list [namespace origin Eval] $command 1]} proc ::tcltest::test} -1 {type source line 798 file info.test cmd test\ info-23.6\ \{eval'd\ info\ frame,\ trace\}\ \{!singleTestInter level 1}} +} -result {9 {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +8 {type eval line 1 cmd etrace proc ::tcltest::RunTest} +7 {type source line 800 file info.test cmd {eval $script} proc ::tcltest::RunTest} +6 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} +5 {type eval line 1 cmd {::tcltest::RunTest info-23} proc ::tcltest::Eval} +4 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} +3 {type eval line 1 cmd ::tcltest::Eval\\ \\\{::tcltest::RunTest\\ info-23 proc ::tcltest::test} +2 {type source line * file tcltest.tcl cmd {uplevel 1 \[list \[namespace origin Eval\] $command 1\]} proc ::tcltest::test} +1 {type source line 798 file info.test cmd {test info-23.6 {eval'd info frame, trace} -constraints {!singleTestInterp} -match glob -bo} level 1}} ## The line 1967 is off by 5 from the true value of 1972. This is a knownBug, see testcase 30.0 # ------------------------------------------------------------------------- @@ -1301,7 +1301,7 @@ namespace delete foo # ------------------------------------------------------------------------- -test info-37.0 {eval pure list, single line} -match glob -body { +test info-37.0 {eval pure list, single line} -constraints {!singleTestInterp} -match glob -body { # Basically, counting the newline in the word seen through $foo # doesn't really make sense. It makes a bit of sense if the word # would have been a string literal in the command list. -- cgit v0.12 From c5be2d186c8738b465587c5433f3f4c422c95313 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 25 Jul 2008 21:24:34 +0000 Subject: * tests/info.test: Add !singleTestInterp constraint to various tests; (info-22.8, info-23.0): switch to glob matching to avoid sensitivity to tcltest.tcl line number changes. [Bug 1605269] --- ChangeLog | 6 ++++++ tests/info.test | 54 +++++++++++++++++++++++++++--------------------------- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 355fdc6..28efae3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-07-25 Daniel Steffen + + * tests/info.test: Add !singleTestInterp constraint to various tests; + (info-22.8, info-23.0): switch to glob matching to avoid sensitivity + to tcltest.tcl line number changes. [Bug 1605269] + 2008-07-24 Andreas Kupries * tests/info.test: Tests 38.* added, exactly testing the tracking diff --git a/tests/info.test b/tests/info.test index 7675d66..9f875ee 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.9 2008/07/24 21:05:14 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.10 2008/07/25 21:24:45 das Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -728,17 +728,17 @@ proc etrace {} { ## -test info-22.0 {info frame, levels} tip280 { +test info-22.0 {info frame, levels} {tip280 && !singleTestInterp} { info frame } 7 -test info-22.1 {info frame, bad level relative} tip280 { +test info-22.1 {info frame, bad level relative} {tip280 && !singleTestInterp} { # catch is another level!, i.e. we have 8, not 7 catch {info frame -8} msg set msg } {bad level "-8"} -test info-22.2 {info frame, bad level absolute} tip280 { +test info-22.2 {info frame, bad level absolute} {tip280 && !singleTestInterp} { # catch is another level!, i.e. we have 8, not 7 catch {info frame 9} msg set msg @@ -752,38 +752,38 @@ test info-22.4 {info frame, current, relative, nested} -constraints tip280 -matc set res [info frame 0] } -result {type source line 752 file *info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-22.5 {info frame, current, absolute} -constraints tip280 -match glob -body { +test info-22.5 {info frame, current, absolute} -constraints {tip280 && !singleTestInterp} -match glob -body { reduce [info frame 7] } -result {type source line 756 file *info.test cmd {info frame 7} proc ::tcltest::RunTest} -test info-22.6 {info frame, global, relative} tip280 { +test info-22.6 {info frame, global, relative} {tip280 && !singleTestInterp} { reduce [info frame -6] -} {type source line 759 file info.test cmd test\ info-22.6\ \{info\ frame,\ global,\ relativ} +} {type source line 759 file info.test cmd test\ info-22.6\ \{info\ frame,\ global,\ relative\}\ \{tip280\ &&\ !singleTe} -test info-22.7 {info frame, global, absolute} tip280 { +test info-22.7 {info frame, global, absolute} {tip280 && !singleTestInterp} { reduce [info frame 1] -} {type source line 763 file info.test cmd test\ info-22.7\ \{info\ frame,\ global,\ absolut} +} {type source line 763 file info.test cmd test\ info-22.7\ \{info\ frame,\ global,\ absolute\}\ \{tip280\ &&\ !singleTe} -test info-22.8 {info frame, basic trace} tip280 { +test info-22.8 {info frame, basic trace} -constraints {tip280 && !singleTestInterp} -match glob -body { join [etrace] \n -} {8 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +} -result {8 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} 7 {type source line 768 file info.test cmd etrace proc ::tcltest::RunTest} -6 {type source line 2277 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} +6 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} 5 {type eval line 1 cmd {::tcltest::RunTest } proc ::tcltest::Eval} -4 {type source line 1619 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ proc ::tcltest::test} -2 {type source line 1966 file tcltest.tcl cmd {uplevel 1 [list [namespace origin Eval] $command 1]} proc ::tcltest::test} -1 {type source line 767 file info.test cmd test\ info-22.8\ \{info\ frame,\ basic\ trac}} +4 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} +3 {type eval line 1 cmd ::tcltest::Eval\\ \\\{::tcltest::RunTest\\ proc ::tcltest::test} +2 {type source line * file tcltest.tcl cmd {uplevel 1 \[list \[namespace origin Eval\] $command 1\]} proc ::tcltest::test} +1 {type source line 767 file info.test cmd {test info-22.8 {info frame, basic trace} -constraints {tip280 && !singleTestInterp} -match g}}} ## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 -test info-23.0 {eval'd info frame} tip280 { +test info-23.0 {eval'd info frame} {tip280 && !singleTestInterp} { eval {info frame} } 8 -test info-23.1 {eval'd info frame, semi-dynamic} tip280 { +test info-23.1 {eval'd info frame, semi-dynamic} {tip280 && !singleTestInterp} { eval info frame } 8 -test info-23.2 {eval'd info frame, dynamic} tip280 { +test info-23.2 {eval'd info frame, dynamic} {tip280 && !singleTestInterp} { set script {info frame} eval $script } 8 @@ -803,18 +803,18 @@ test info-23.5 {eval'd info frame, dynamic} tip280 { eval $script } {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} -test info-23.6 {eval'd info frame, trace} tip280 { +test info-23.6 {eval'd info frame, trace} -constraints {tip280 && !singleTestInterp} -match glob -body { set script {etrace} join [eval $script] \n -} {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +} -result {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} 8 {type eval line 1 cmd etrace proc ::tcltest::RunTest} 7 {type source line 808 file info.test cmd {eval $script} proc ::tcltest::RunTest} -6 {type source line 2277 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} +6 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} 5 {type eval line 1 cmd {::tcltest::RunTest } proc ::tcltest::Eval} -4 {type source line 1619 file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\ \{::tcltest::RunTest\ proc ::tcltest::test} -2 {type source line 1966 file tcltest.tcl cmd {uplevel 1 [list [namespace origin Eval] $command 1]} proc ::tcltest::test} -1 {type source line 806 file info.test cmd test\ info-23.6\ \{eval'd\ info\ frame,\ trac}} +4 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} +3 {type eval line 1 cmd ::tcltest::Eval\\ \\\{::tcltest::RunTest\\ proc ::tcltest::test} +2 {type source line * file tcltest.tcl cmd {uplevel 1 \[list \[namespace origin Eval\] $command 1\]} proc ::tcltest::test} +1 {type source line 806 file info.test cmd {test info-23.6 {eval'd info frame, trace} -constraints {tip280 && !singleTestInterp} -match g}}} ## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 # ------------------------------------------------------------------------- @@ -1075,7 +1075,7 @@ namespace delete foo # ------------------------------------------------------------------------- -test info-34.0 {eval pure list, single line} tip280 { +test info-34.0 {eval pure list, single line} {tip280 && !singleTestInterp} { # Basically, counting the newline in the word seen through $foo # doesn't really make sense. It makes a bit of sense if the word # would have been a string literal in the command list. -- cgit v0.12 From 2931e2c849579bfd59bac1989e2051b22c2d4224 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 28 Jul 2008 14:44:17 +0000 Subject: backport casting fix from HEAD --- generic/tclBasic.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 917a8a5..9afb5e7 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.5 2008/07/25 20:30:34 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.6 2008/07/28 14:44:17 dgp Exp $ */ #include "tclInt.h" @@ -4784,7 +4784,8 @@ TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) ExtIndex* eiPtr = cfwPtr->eiPtr; framePtr = cfwPtr->framePtr; - framePtr->data.tebc.pc = ((ByteCode*) framePtr->data.tebc.codePtr)->codeStart + eiPtr->pc; + framePtr->data.tebc.pc = (char *) (((ByteCode*) + framePtr->data.tebc.codePtr)->codeStart + eiPtr->pc); *cfPtrPtr = cfwPtr->framePtr; *wordPtr = eiPtr->word; return; -- cgit v0.12 From 24cd37cd688085d4c016ab87e112add167d69173 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 28 Jul 2008 20:00:57 +0000 Subject: * generic/tclBasic.c: Added missing release of extended command word index when deleting an interpreter (DeleteInterpProc). Added missing ref count when creating an empty string as path (EvalEx). * generic/tclCompile.c (TclInitCompileEnv): Made same change to control flow as in TclEvalObjEx. Not needed while uplevel and siblings go through the eval-direct code path, however if that changes (like it did in 8.5+) better to have this in place instead of re-searching why certain places are without absolute locations. * tests/info.test: Added tests 38.*, exactly testing the tracking of location for uplevel scripts, and made the testsuite fully usable with and without -singleproc 1. --- ChangeLog | 16 +++++ generic/tclBasic.c | 8 ++- generic/tclCompile.c | 36 ++++++---- tests/info.test | 184 ++++++++++++++++++++++++++++----------------------- 4 files changed, 146 insertions(+), 98 deletions(-) diff --git a/ChangeLog b/ChangeLog index 28efae3..023241f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2008-07-28 Andreas Kupries + + * generic/tclBasic.c: Added missing release of extended command + word index when deleting an interpreter (DeleteInterpProc). Added + missing ref count when creating an empty string as path (EvalEx). + + * generic/tclCompile.c (TclInitCompileEnv): Made same change to + control flow as in TclEvalObjEx. Not needed while uplevel and + siblings go through the eval-direct code path, however if that + changes (like it did in 8.5+) better to have this in place instead + of re-searching why certain places are without absolute locations. + + * tests/info.test: Added tests 38.*, exactly testing the tracking + of location for uplevel scripts, and made the testsuite fully + usable with and without -singleproc 1. + 2008-07-25 Daniel Steffen * tests/info.test: Add !singleTestInterp constraint to various tests; diff --git a/generic/tclBasic.c b/generic/tclBasic.c index c91fdc1..4ce4590 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.32 2008/07/23 20:45:16 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.33 2008/07/28 20:01:07 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1202,6 +1202,10 @@ DeleteInterpProc(interp) ckfree ((char*) eclPtr->loc); } + if (eclPtr->eiloc != NULL) { + ckfree ((char*) eclPtr->eiloc); + } + ckfree ((char*) eclPtr); Tcl_DeleteHashEntry (hPtr); } @@ -3906,10 +3910,10 @@ EvalEx(interp, script, numBytes, flags, line) return TCL_ERROR; } eeFrame.data.eval.path = norm; - Tcl_IncrRefCount (eeFrame.data.eval.path); } else { eeFrame.data.eval.path = Tcl_NewStringObj ("",-1); } + Tcl_IncrRefCount (eeFrame.data.eval.path); } else { /* Set up for plain eval */ diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 59be33a..44ee69b 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.12 2008/07/23 20:45:18 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.13 2008/07/28 20:01:09 andreas_kupries Exp $ */ #include "tclInt.h" @@ -836,40 +836,48 @@ TclInitCompileEnv(interp, envPtr, string, numBytes, invoker, word) * (line, path, ...). Which may make change the type as well. */ - if ((invoker->nline <= word) || (invoker->line[word] < 0)) { + CmdFrame ctx = *invoker; + int pc = 0; + + if (invoker->type == TCL_LOCATION_BC) { + /* Note: Type BC => ctx.data.eval.path is not used. + * ctx.data.tebc.codePtr is used instead. + */ + TclGetSrcInfoForPc (&ctx); + pc = 1; + } + + if ((ctx.nline <= word) || (ctx.line[word] < 0)) { /* Word is not a literal, relative counting */ envPtr->line = 1; envPtr->extCmdMapPtr->type = (envPtr->procPtr ? TCL_LOCATION_PROC : TCL_LOCATION_BC); - } else { - CmdFrame ctx = *invoker; - int pc = 0; - if (invoker->type == TCL_LOCATION_BC) { - /* Note: Type BC => ctx.data.eval.path is not used. - * ctx.data.tebc.codePtr is used instead. + if (pc && (ctx.type == TCL_LOCATION_SOURCE)) { + /* + * The reference made by 'TclGetSrcInfoForPc' is dead. */ - TclGetSrcInfoForPc (&ctx); - pc = 1; + Tcl_DecrRefCount(ctx.data.eval.path); } - + } else { envPtr->line = ctx.line [word]; envPtr->extCmdMapPtr->type = ctx.type; + envPtr->extCmdMapPtr->path = ctx.data.eval.path; if (ctx.type == TCL_LOCATION_SOURCE) { if (pc) { /* The reference 'TclGetSrcInfoForPc' made is transfered */ - envPtr->extCmdMapPtr->path = ctx.data.eval.path; ctx.data.eval.path = NULL; } else { /* We have a new reference here */ - envPtr->extCmdMapPtr->path = ctx.data.eval.path; - Tcl_IncrRefCount (envPtr->extCmdMapPtr->path); + Tcl_IncrRefCount (ctx.data.eval.path); } } } + + /* ctx going out of scope */ } #endif diff --git a/tests/info.test b/tests/info.test index 9f875ee..b30a4be 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.10 2008/07/25 21:24:45 das Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.11 2008/07/28 20:01:12 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -728,71 +728,97 @@ proc etrace {} { ## -test info-22.0 {info frame, levels} {tip280 && !singleTestInterp} { +test info-22.0.0 {info frame, levels} {tip280 && !singleTestInterp} { info frame } 7 +test info-22.0.1 {info frame, levels} {tip280 && singleTestInterp} { + info frame +} 10 -test info-22.1 {info frame, bad level relative} {tip280 && !singleTestInterp} { +test info-22.1.0 {info frame, bad level relative} {tip280 && !singleTestInterp} { # catch is another level!, i.e. we have 8, not 7 catch {info frame -8} msg set msg } {bad level "-8"} +test info-22.1.1 {info frame, bad level relative} {tip280 && singleTestInterp} { + # catch is another level!, i.e. we have 11, not 10 + catch {info frame -11} msg + set msg +} {bad level "-11"} -test info-22.2 {info frame, bad level absolute} {tip280 && !singleTestInterp} { +test info-22.2.0 {info frame, bad level absolute} {tip280 && !singleTestInterp} { # catch is another level!, i.e. we have 8, not 7 catch {info frame 9} msg set msg } {bad level "9"} +test info-22.2.1 {info frame, bad level absolute} {tip280 && singleTestInterp} { + # catch is another level!, i.e. we have 12, not 10 + catch {info frame 12} msg + set msg +} {bad level "12"} test info-22.3 {info frame, current, relative} -constraints tip280 -match glob -body { info frame 0 -} -result {type source line 748 file *info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type source line 761 file * cmd {info frame 0} proc ::tcltest::RunTest} test info-22.4 {info frame, current, relative, nested} -constraints tip280 -match glob -body { set res [info frame 0] -} -result {type source line 752 file *info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type source line 765 file * cmd {info frame 0} proc ::tcltest::RunTest} -test info-22.5 {info frame, current, absolute} -constraints {tip280 && !singleTestInterp} -match glob -body { +test info-22.5.0 {info frame, current, absolute} -constraints {tip280 && !singleTestInterp} -match glob -body { reduce [info frame 7] -} -result {type source line 756 file *info.test cmd {info frame 7} proc ::tcltest::RunTest} +} -result {type source line 769 file * cmd {info frame 7} proc ::tcltest::RunTest} +test info-22.5.1 {info frame, current, absolute} -constraints {tip280 && singleTestInterp} -match glob -body { + reduce [info frame 10] +} -result {type source line 772 file * cmd {info frame 10} proc ::tcltest::RunTest} -test info-22.6 {info frame, global, relative} {tip280 && !singleTestInterp} { +test info-22.6.0 {info frame, global, relative} {tip280 && !singleTestInterp} { + reduce [info frame -6] +} {type source line 775 file info.test cmd test\ info-22.6.0\ \{info\ frame,\ global,\ relative\}\ \{tip280\ &&\ !singleTe} +test info-22.6.1 {info frame, global, relative} {tip280 && singleTestInterp} { reduce [info frame -6] -} {type source line 759 file info.test cmd test\ info-22.6\ \{info\ frame,\ global,\ relative\}\ \{tip280\ &&\ !singleTe} +} {type source line 778 file info.test cmd test\ info-22.6.1\ \{info\ frame,\ global,\ relative\}\ \{tip280\ &&\ singleTe proc ::tcltest::runAllTests} -test info-22.7 {info frame, global, absolute} {tip280 && !singleTestInterp} { +test info-22.7.0 {info frame, global, absolute} {tip280 && !singleTestInterp} { reduce [info frame 1] -} {type source line 763 file info.test cmd test\ info-22.7\ \{info\ frame,\ global,\ absolute\}\ \{tip280\ &&\ !singleTe} - -test info-22.8 {info frame, basic trace} -constraints {tip280 && !singleTestInterp} -match glob -body { - join [etrace] \n -} -result {8 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -7 {type source line 768 file info.test cmd etrace proc ::tcltest::RunTest} -6 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} -5 {type eval line 1 cmd {::tcltest::RunTest } proc ::tcltest::Eval} -4 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\\ \\\{::tcltest::RunTest\\ proc ::tcltest::test} -2 {type source line * file tcltest.tcl cmd {uplevel 1 \[list \[namespace origin Eval\] $command 1\]} proc ::tcltest::test} -1 {type source line 767 file info.test cmd {test info-22.8 {info frame, basic trace} -constraints {tip280 && !singleTestInterp} -match g}}} +} {type source line 782 file info.test cmd test\ info-22.7.0\ \{info\ frame,\ global,\ absolute\}\ \{tip280\ &&\ !singleTe} +test info-22.7.1 {info frame, global, absolute} {tip280 && singleTestInterp} { + reduce [info frame 4] +} {type source line 785 file info.test cmd test\ info-22.7.1\ \{info\ frame,\ global,\ absolute\}\ \{tip280\ &&\ singleTe proc ::tcltest::runAllTests} + +test info-22.8 {info frame, basic trace} -constraints {tip280} -match glob -body { + join [lrange [etrace] 0 1] \n +} -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type source line 790 file info.test cmd etrace proc ::tcltest::RunTest}} ## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 -test info-23.0 {eval'd info frame} {tip280 && !singleTestInterp} { +test info-23.0.0 {eval'd info frame} {tip280 && !singleTestInterp} { eval {info frame} } 8 +test info-23.0.1 {eval'd info frame} {tip280 && singleTestInterp} { + eval {info frame} +} 11 -test info-23.1 {eval'd info frame, semi-dynamic} {tip280 && !singleTestInterp} { +test info-23.1.0 {eval'd info frame, semi-dynamic} {tip280 && !singleTestInterp} { eval info frame } 8 +test info-23.1.1 {eval'd info frame, semi-dynamic} {tip280 && singleTestInterp} { + eval info frame +} 11 -test info-23.2 {eval'd info frame, dynamic} {tip280 && !singleTestInterp} { +test info-23.2.0 {eval'd info frame, dynamic} {tip280 && !singleTestInterp} { set script {info frame} eval $script } 8 +test info-23.2.1 {eval'd info frame, dynamic} {tip280 && singleTestInterp} { + set script {info frame} + eval $script +} 11 test info-23.3 {eval'd info frame, literal} -constraints tip280 -match glob -body { eval { info frame 0 } -} -result {type source line 793 file *info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type source line 819 file *info.test cmd {info frame 0} proc ::tcltest::RunTest} test info-23.4 {eval'd info frame, semi-dynamic} tip280 { eval info frame 0 @@ -803,18 +829,12 @@ test info-23.5 {eval'd info frame, dynamic} tip280 { eval $script } {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} -test info-23.6 {eval'd info frame, trace} -constraints {tip280 && !singleTestInterp} -match glob -body { +test info-23.6 {eval'd info frame, trace} -constraints {tip280} -match glob -body { set script {etrace} - join [eval $script] \n -} -result {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -8 {type eval line 1 cmd etrace proc ::tcltest::RunTest} -7 {type source line 808 file info.test cmd {eval $script} proc ::tcltest::RunTest} -6 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} -5 {type eval line 1 cmd {::tcltest::RunTest } proc ::tcltest::Eval} -4 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\\ \\\{::tcltest::RunTest\\ proc ::tcltest::test} -2 {type source line * file tcltest.tcl cmd {uplevel 1 \[list \[namespace origin Eval\] $command 1\]} proc ::tcltest::test} -1 {type source line 806 file info.test cmd {test info-23.6 {eval'd info frame, trace} -constraints {tip280 && !singleTestInterp} -match g}}} + join [lrange [eval $script] 0 2] \n +} -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 1 cmd etrace proc ::tcltest::RunTest} +* {type source line 834 file info.test cmd {eval $script} proc ::tcltest::RunTest}} ## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 # ------------------------------------------------------------------------- @@ -834,7 +854,7 @@ namespace eval foo { test info-24.0 {info frame, interaction, namespace eval} tip280 { reduce [foo::bar] -} {type source line 832 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 852 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo @@ -848,7 +868,7 @@ if {$flag} { test info-24.1 {info frame, interaction, if} tip280 { reduce [foo::bar] -} {type source line 846 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 866 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo @@ -863,7 +883,7 @@ while {$flag} { test info-24.2 {info frame, interaction, while} tip280 { reduce [foo::bar] -} {type source line 860 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 880 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo @@ -876,7 +896,7 @@ catch { test info-24.3 {info frame, interaction, catch} tip280 { reduce [foo::bar] -} {type source line 874 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 894 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo @@ -890,7 +910,7 @@ foreach var val { test info-24.4 {info frame, interaction, foreach} tip280 { reduce [foo::bar] -} {type source line 887 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 907 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo @@ -904,7 +924,7 @@ for {} {1} {} { test info-24.5 {info frame, interaction, for} tip280 { reduce [foo::bar] -} {type source line 901 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 921 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo @@ -916,12 +936,12 @@ eval { test info-25.0 {info frame, proc in eval} tip280 { reduce [bar] -} {type source line 914 file info.test cmd {info frame 0} proc ::bar level 0} +} {type source line 934 file info.test cmd {info frame 0} proc ::bar level 0} proc bar {} {info frame 0} test info-25.1 {info frame, regular proc} tip280 { reduce [bar] -} {type source line 921 file info.test cmd {info frame 0} proc ::bar level 0} +} {type source line 941 file info.test cmd {info frame 0} proc ::bar level 0} rename bar {} @@ -1004,7 +1024,7 @@ switch -exact -- $x { test info-24.6.0 {info frame, interaction, switch, list body} tip280 { reduce [foo::bar] -} {type source line 1001 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 1021 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo unset x @@ -1019,7 +1039,7 @@ switch -exact -- $x foo { test info-24.6.1 {info frame, interaction, switch, multi-body} tip280 { reduce [foo::bar] -} {type source line 1017 file info.test cmd {info frame 0} proc ::foo::bar level 0} +} {type source line 1037 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo unset x @@ -1075,7 +1095,7 @@ namespace delete foo # ------------------------------------------------------------------------- -test info-34.0 {eval pure list, single line} {tip280 && !singleTestInterp} { +test info-34.0 {eval pure list, single line} -constraints {tip280} -match glob -body { # Basically, counting the newline in the word seen through $foo # doesn't really make sense. It makes a bit of sense if the word # would have been a string literal in the command list. @@ -1093,9 +1113,9 @@ test info-34.0 {eval pure list, single line} {tip280 && !singleTestInterp} { }] eval $cmd set res -} {10 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -9 {type eval line 2 cmd etrace proc ::tcltest::RunTest} -8 {type eval line 1 cmd foreac proc ::tcltest::RunTest}} +} -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 2 cmd etrace proc ::tcltest::RunTest} +* {type eval line 1 cmd foreac proc ::tcltest::RunTest}} # ------------------------------------------------------------------------- @@ -1128,61 +1148,61 @@ proc datav {} { control y $script } -test info-38.1 {location information for uplevel, dv, direct-var} tip280 { +test info-38.1 {location information for uplevel, dv, direct-var} -constraints tip280 -match glob -body { set script { set y DV. etrace } join [lrange [uplevel \#0 $script] 0 2] \n -} {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -8 {type eval line 3 cmd etrace proc ::tcltest::RunTest} -7 {type source line 1136 file info.test cmd {uplevel \#0 $script} proc ::tcltest::RunTest}} +} -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 3 cmd etrace proc ::tcltest::RunTest} +* {type source line 1156 file info.test cmd {uplevel \\#0 $script} proc ::tcltest::RunTest}} -test info-38.2 {location information for uplevel, dl, direct-literal} tip280 { +test info-38.2 {location information for uplevel, dl, direct-literal} -constraints tip280 -match glob -body { join [lrange [uplevel \#0 { set y DL. etrace }] 0 2] \n -} {9 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -8 {type source line 1144 file info.test cmd etrace proc ::tcltest::RunTest} -7 {type source line 1142 file info.test cmd up proc ::tcltest::RunTest}} +} -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type source line 1164 file info.test cmd etrace proc ::tcltest::RunTest} +* {type source line 1162 file info.test cmd up proc ::tcltest::RunTest}} -test info-38.3 {location information for uplevel, dpv, direct-proc-var} tip280 { +test info-38.3 {location information for uplevel, dpv, direct-proc-var} -constraints tip280 -match glob -body { set script { set y DPV etrace } join [lrange [control y $script] 0 3] \n -} {10 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -9 {type eval line 3 cmd etrace proc ::control} -8 {type source line 1113 file info.test cmd {uplevel 1 $script} proc ::control} -7 {type source line 1155 file info.test cmd {control y $script} proc ::tcltest::RunTest}} +} -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 3 cmd etrace proc ::control} +* {type source line 1133 file info.test cmd {uplevel 1 $script} proc ::control} +* {type source line 1175 file info.test cmd {control y $script} proc ::tcltest::RunTest}} -test info-38.4 {location information for uplevel, dpv, direct-proc-literal} tip280 { +test info-38.4 {location information for uplevel, dpv, direct-proc-literal} -constraints tip280 -match glob -body { join [lrange [control y { set y DPL etrace }] 0 3] \n -} {10 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -9 {type source line 1164 file info.test cmd etrace proc ::control} -8 {type source line 1113 file info.test cmd {uplevel 1 $script} proc ::control} -7 {type source line 1162 file info.test cmd control proc ::tcltest::RunTest}} +} -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type source line 1184 file info.test cmd etrace proc ::control} +* {type source line 1133 file info.test cmd {uplevel 1 $script} proc ::control} +* {type source line 1182 file info.test cmd control proc ::tcltest::RunTest}} -test info-38.5 {location information for uplevel, ppv, proc-proc-var} tip280 { +test info-38.5 {location information for uplevel, ppv, proc-proc-var} -constraints tip280 -match glob -body { join [lrange [datav] 0 4] \n -} {11 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -10 {type eval line 3 cmd etrace proc ::control} -9 {type source line 1113 file info.test cmd {uplevel 1 $script} proc ::control} -8 {type source line 1128 file info.test cmd {control y $script} proc ::datav level 1} -7 {type source line 1172 file info.test cmd datav proc ::tcltest::RunTest}} +} -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 3 cmd etrace proc ::control} +* {type source line 1133 file info.test cmd {uplevel 1 $script} proc ::control} +* {type source line 1148 file info.test cmd {control y $script} proc ::datav level 1} +* {type source line 1192 file info.test cmd datav proc ::tcltest::RunTest}} -test info-38.6 {location information for uplevel, ppl, proc-proc-literal} tip280 { +test info-38.6 {location information for uplevel, ppl, proc-proc-literal} -constraints tip280 -match glob -body { join [lrange [datal] 0 4] \n -} {11 {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} -10 {type source line 1119 file info.test cmd etrace proc ::control} -9 {type source line 1113 file info.test cmd {uplevel 1 $script} proc ::control} -8 {type source line 1117 file info.test cmd control proc ::datal level 1} -7 {type source line 1180 file info.test cmd datal proc ::tcltest::RunTest}} +} -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type source line 1139 file info.test cmd etrace proc ::control} +* {type source line 1133 file info.test cmd {uplevel 1 $script} proc ::control} +* {type source line 1137 file info.test cmd control proc ::datal level 1} +* {type source line 1200 file info.test cmd datal proc ::tcltest::RunTest}} # ------------------------------------------------------------------------- -- cgit v0.12 From 10ea20bb785acaeb65668000042284010fd63a70 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 28 Jul 2008 20:45:15 +0000 Subject: * generic/tclBasic.c: Added missing ref count when creating an empty string as path (TclEvalEx). In 8.4 the missing code caused panics in the testsuite. It doesn't in 8.5. I am guessing that the code path with the missing the incr-refcount is not invoked any longer. Because the bug in itself is certainly the same. --- ChangeLog | 8 ++++++++ generic/tclBasic.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a022568..b7c0484 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-07-28 Andreas Kupries + + * generic/tclBasic.c: Added missing ref count when creating an + empty string as path (TclEvalEx). In 8.4 the missing code caused + panics in the testsuite. It doesn't in 8.5. I am guessing that the + code path with the missing the incr-refcount is not invoked any + longer. Because the bug in itself is certainly the same. + 2008-07-25 Daniel Steffen * tests/info.test (info-37.0): Add !singleTestInterp constraint; diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 9afb5e7..0c0fbda 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.6 2008/07/28 14:44:17 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.7 2008/07/28 20:45:15 andreas_kupries Exp $ */ #include "tclInt.h" @@ -4148,10 +4148,10 @@ TclEvalEx( goto error; } eeFramePtr->data.eval.path = norm; - Tcl_IncrRefCount(eeFramePtr->data.eval.path); } else { TclNewLiteralStringObj(eeFramePtr->data.eval.path, ""); } + Tcl_IncrRefCount(eeFramePtr->data.eval.path); } else { /* * Set up for plain eval. -- cgit v0.12 From bd8f54a3a1f6e7c92b5e1709040f191d8e9a59a9 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Tue, 29 Jul 2008 13:51:00 +0000 Subject: * generic/tclExecute.c: fix [Bug 2030670] that cause TclStackRealloc to panic on rare corner cases. Thx ajpasadyn for diagnose and patch. --- ChangeLog | 6 ++++++ generic/tclExecute.c | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index b7c0484..b369a57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-07-29 Miguel Sofer + + * generic/tclExecute.c: fix [Bug 2030670] that cause + TclStackRealloc to panic on rare corner cases. Thx ajpasadyn for + diagnose and patch. + 2008-07-28 Andreas Kupries * generic/tclBasic.c: Added missing ref count when creating an diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 7866a7c..833197a 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.2 2008/07/22 21:41:13 andreas_kupries Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.3 2008/07/29 13:51:11 msofer Exp $ */ #include "tclInt.h" @@ -915,6 +915,7 @@ GrowEvaluationStack( int newBytes, newElems, currElems; int needed = growth - (esPtr->endPtr - esPtr->tosPtr); Tcl_Obj **markerPtr = esPtr->markerPtr, **memStart; + int moveWords = 0; if (move) { if (!markerPtr) { @@ -949,9 +950,9 @@ GrowEvaluationStack( */ if (move) { - move = esPtr->tosPtr - MEMSTART(markerPtr) + 1; + moveWords = esPtr->tosPtr - MEMSTART(markerPtr) + 1; } - needed = growth + move + WALLOCALIGN - 1; + needed = growth + moveWords + WALLOCALIGN - 1; /* * Check if there is enough room in the next stack (if there is one, it @@ -1011,8 +1012,8 @@ GrowEvaluationStack( esPtr->tosPtr = memStart - 1; if (move) { - memcpy(memStart, MEMSTART(markerPtr), move*sizeof(Tcl_Obj *)); - esPtr->tosPtr += move; + memcpy(memStart, MEMSTART(markerPtr), moveWords*sizeof(Tcl_Obj *)); + esPtr->tosPtr += moveWords; oldPtr->markerPtr = (Tcl_Obj **) *markerPtr; oldPtr->tosPtr = markerPtr-1; } -- cgit v0.12 From 3e033b354b6208eb4e0c1e0acd9fbb3e52bcd579 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 30 Jul 2008 20:59:08 +0000 Subject: * generic/tclBasic.c: Corrected the timing of when the flag TCL_ALLOW_EXCEPTIONS is tested. --- ChangeLog | 5 +++++ generic/tclBasic.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index b369a57..47a9487 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-07-30 Don Porter + + * generic/tclBasic.c: Corrected the timing of when the flag + TCL_ALLOW_EXCEPTIONS is tested. + 2008-07-29 Miguel Sofer * generic/tclExecute.c: fix [Bug 2030670] that cause diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 0c0fbda..fcdd41d 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.7 2008/07/28 20:45:15 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.8 2008/07/30 20:59:16 dgp Exp $ */ #include "tclInt.h" @@ -3880,6 +3880,7 @@ Tcl_EvalObjv( { Interp *iPtr = (Interp *) interp; int code = TCL_OK; + int allowExceptions = (iPtr->evalFlags & TCL_ALLOW_EXCEPTIONS); iPtr->numLevels++; code = TclEvalObjvInternal(interp, objc, objv, NULL, 0, flags); @@ -3888,7 +3889,6 @@ Tcl_EvalObjv( if (code == TCL_OK) { return code; } else { - int allowExceptions = (iPtr->evalFlags & TCL_ALLOW_EXCEPTIONS); /* * If we are again at the top level, process any unusual return code @@ -4921,7 +4921,6 @@ TclEvalObjEx( int result; CallFrame *savedVarFramePtr;/* Saves old copy of iPtr->varFramePtr in case * TCL_EVAL_GLOBAL was set. */ - int allowExceptions = (iPtr->evalFlags & TCL_ALLOW_EXCEPTIONS); Tcl_IncrRefCount(objPtr); @@ -5086,6 +5085,7 @@ TclEvalObjEx( * TIP #280 The invoker provides us with the context for the script. * We transfer this to the byte code compiler. */ + int allowExceptions = (iPtr->evalFlags & TCL_ALLOW_EXCEPTIONS); savedVarFramePtr = iPtr->varFramePtr; if (flags & TCL_EVAL_GLOBAL) { -- cgit v0.12 From 48cc4927f6e3bc52ca55b4c366efd3b02987b998 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 4 Aug 2008 04:48:13 +0000 Subject: * generic/tclExecute.c: Stopped faulty double-logging of errors to * tests/execute.test: stack trace when a compile epoch bump triggers fallback to direct evaluation of commands in a compiled script. [Bug 2037338] --- ChangeLog | 7 +++++++ generic/tclExecute.c | 12 +++++++++++- tests/execute.test | 23 ++++++++++++++++++++++- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 47a9487..b635bf5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-08-04 Don Porter S + + * generic/tclExecute.c: Stopped faulty double-logging of errors to + * tests/execute.test: stack trace when a compile epoch bump triggers + fallback to direct evaluation of commands in a compiled script. + [Bug 2037338] + 2008-07-30 Don Porter * generic/tclBasic.c: Corrected the timing of when the flag diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 833197a..985a867 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.3 2008/07/29 13:51:11 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.4 2008/08/04 04:48:14 dgp Exp $ */ #include "tclInt.h" @@ -2051,6 +2051,16 @@ TclExecuteByteCode( CACHE_STACK_INFO(); if (result != TCL_OK) { cleanup = 0; + if (result == TCL_ERROR) { + /* + * Tcl_EvalEx already did the task of logging + * the error to the stack trace for us, so set + * a flag to prevent the TEBC exception handling + * machinery from trying to do it again. + * Tcl Bug 2037338. See test execute-8.4. + */ + iPtr->flags |= ERR_ALREADY_LOGGED; + } goto processExceptionReturn; } opnd = TclGetUInt4AtPtr(pc+1); diff --git a/tests/execute.test b/tests/execute.test index a43e8e6..51d375e 100644 --- a/tests/execute.test +++ b/tests/execute.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: execute.test,v 1.27 2008/03/07 19:04:10 dgp Exp $ +# RCS: @(#) $Id: execute.test,v 1.27.2.1 2008/08/04 04:48:16 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -937,6 +937,27 @@ test execute-8.3 {Stack restoration} -body { interp recursionlimit {} $limit } -result {too many nested evaluations (infinite loop?)} +test execute-8.4 {Compile epoch bump effect on stack trace} -setup { + proc foo {} { + error bar + } + proc FOO {} { + catch {error bar} m o + rename ::set ::dummy + rename ::dummy ::set + return -options $o $m + } +} -body { + catch foo m o + set stack1 [dict get $o -errorinfo] + catch FOO m o + set stack2 [string map {FOO foo} [dict get $o -errorinfo]] + expr {$stack1 eq $stack2 ? {} : "These differ:\n$stack1\n$stack2"} +} -cleanup { + rename foo {} + rename FOO {} +} -result {} + test execute-9.1 {Interp result resetting [Bug 1522803]} { set c 0 catch { -- cgit v0.12 From f11f11f6b5731d7b71eab4558e7fdbdd3b2f98c3 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 7 Aug 2008 01:44:29 +0000 Subject: * generic/tclVar.c (TclLookupSimpleVar): Retrieve the number of locals in the localCache from the CallFrame and not from the Proc which may have been mangled by a (broken?) recompile. Backport from the HEAD. --- ChangeLog | 9 ++++++++- generic/tclVar.c | 5 ++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b635bf5..77054c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,11 @@ -2008-08-04 Don Porter S +2008-08-06 Don Porter + + * generic/tclVar.c (TclLookupSimpleVar): Retrieve the number of + locals in the localCache from the CallFrame and not from the Proc + which may have been mangled by a (broken?) recompile. Backport + from the HEAD. + +2008-08-04 Don Porter * generic/tclExecute.c: Stopped faulty double-logging of errors to * tests/execute.test: stack trace when a compile epoch bump triggers diff --git a/generic/tclVar.c b/generic/tclVar.c index d2314c5..43f0324 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.160.2.1 2008/07/21 19:38:20 andreas_kupries Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.160.2.2 2008/08/07 01:44:31 dgp Exp $ */ #include "tclInt.h" @@ -1006,8 +1006,7 @@ TclLookupSimpleVar( } } } else { /* Local var: look in frame varFramePtr. */ - Proc *procPtr = varFramePtr->procPtr; - int localCt = procPtr->numCompiledLocals; + int localCt = varFramePtr->numCompiledLocals; Tcl_Obj **objPtrPtr = &varFramePtr->localCachePtr->varName0; for (i=0 ; i Date: Fri, 8 Aug 2008 15:12:50 +0000 Subject: * changes: Update for 8.5.4 release. --- ChangeLog | 4 ++++ changes | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 77054c1..8beabd5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-08-08 Don Porter + + * changes: Update for 8.5.4 release. + 2008-08-06 Don Porter * generic/tclVar.c (TclLookupSimpleVar): Retrieve the number of diff --git a/changes b/changes index 5699a8a..a9af4c3 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.5 2008/06/25 17:16:29 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.6 2008/08/08 15:12:52 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7224,3 +7224,17 @@ variables without "." added to customization hooks (kupries) 2008-06-25 (bug fix)[1999119] Support TM packages in Safe Base (kupries) --- Released 8.5.3, June 30, 2008 --- See ChangeLog for details --- + +2008-07-03 (bug fix)[1969717] fix package finding on Samba shares (jos) + +2008-07-03 (bug fix)[1987821] mem leak in [seek] on reflected chan (kupries) + +2008-07-20 (enhancement)[2008248] dict->list preserve item intreps (pasadyn) + +2008-07-21 (bug fix)[2015723] [file] bad use of inodes on Windows (thoyts) + +2008-07-21 (enhancment) [info frame] returns file data in more cases (kupries) + +2008-07-29 (bug fix) fix rare panic in TclStackFree (pasadyn,sofer) + +--- Released 8.5.4, August 15, 2008 --- See ChangeLog for details --- -- cgit v0.12 From 1f359e0afd325418cf8e500854c624754ca6dcf8 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 8 Aug 2008 15:22:27 +0000 Subject: * generic/tcl.h: Bump to 8.5.4 for release. * library/init.tcl: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/configure.in: * unix/configure: autoconf-2.59 * win/configure: --- ChangeLog | 10 ++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- library/init.tcl | 4 ++-- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 26 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8beabd5..3246900 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2008-08-08 Don Porter + * generic/tcl.h: Bump to 8.5.4 for release. + * library/init.tcl: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/configure.in: + + * unix/configure: autoconf-2.59 + * win/configure: + * changes: Update for 8.5.4 release. 2008-08-06 Don Porter diff --git a/README b/README index 1e2ab07..e37156e 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.5.3 source distribution. + This is the Tcl 8.5.4 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.67.2.1 2008/04/11 18:12:29 dgp Exp $ +RCS: @(#) $Id: README,v 1.67.2.2 2008/08/08 15:22:27 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 4c5d535..a94185e 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.3 2008/07/22 20:49:25 nijtmans Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.4 2008/08/08 15:22:27 dgp Exp $ */ #ifndef _TCL @@ -60,10 +60,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 5 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 3 +#define TCL_RELEASE_SERIAL 4 #define TCL_VERSION "8.5" -#define TCL_PATCH_LEVEL "8.5.3" +#define TCL_PATCH_LEVEL "8.5.4" /* * The following definitions set up the proper options for Windows compilers. diff --git a/library/init.tcl b/library/init.tcl index 8b66859..4dece74 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.3 2008/06/30 03:18:58 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.4 2008/08/08 15:22:31 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -17,7 +17,7 @@ if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.5.3 +package require -exact Tcl 8.5.4 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index c7eb858..6ebb749 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.5.3 + Disk Label=tcl8.5.4 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index fb58897..ff03f1b 100755 --- a/unix/configure +++ b/unix/configure @@ -1335,7 +1335,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".3" +TCL_PATCH_LEVEL=".4" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index fca256e..ca348c2 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.4 2008/06/30 03:19:04 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.5 2008/08/08 15:22:35 dgp Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -27,7 +27,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [ TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".3" +TCL_PATCH_LEVEL=".4" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 96df99f..d2e53c8 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,11 +1,11 @@ -# $Id: tcl.spec,v 1.37.2.2 2008/06/30 03:19:06 dgp Exp $ +# $Id: tcl.spec,v 1.37.2.3 2008/08/08 15:22:36 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. %{!?directory:%define directory /usr/local} Name: tcl Summary: Tcl scripting language development environment -Version: 8.5.3 +Version: 8.5.4 Release: 2 License: BSD Group: Development/Languages diff --git a/win/configure b/win/configure index c9d65dc..a6c4558 100755 --- a/win/configure +++ b/win/configure @@ -1272,7 +1272,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".3" +TCL_PATCH_LEVEL=".4" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 diff --git a/win/configure.in b/win/configure.in index 9b7f9da..bc0f6f1 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.104.2.2 2008/06/30 03:19:06 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.104.2.3 2008/08/08 15:22:36 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.59) @@ -16,7 +16,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".3" +TCL_PATCH_LEVEL=".4" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 -- cgit v0.12 From fbadfbfebb2a78d2e3f62e5422b5252e39e41b7a Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 8 Aug 2008 15:41:09 +0000 Subject: Olson's tzdata2008e --- ChangeLog | 15 +++++++++++++++ changes | 4 +++- library/tzdata/Africa/Casablanca | 2 ++ library/tzdata/America/Argentina/San_Luis | 18 +++++++----------- library/tzdata/America/Eirunepe | 1 + library/tzdata/America/Rio_Branco | 1 + library/tzdata/Asia/Karachi | 2 ++ library/tzdata/CET | 2 ++ library/tzdata/Europe/Belgrade | 1 + library/tzdata/Europe/Berlin | 7 ++++--- library/tzdata/Europe/Budapest | 3 ++- library/tzdata/Europe/Sofia | 1 + library/tzdata/Indian/Mauritius | 4 ++++ library/tzdata/MET | 2 ++ 14 files changed, 47 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3246900..55b0112 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2008-08-08 Kevin Kenny + + * library/tzdata/CET: + * library/tzdata/MET: + * library/tzdata/Africa/Casablanca: + * library/tzdata/America/Eirunepe: + * library/tzdata/America/Rio_Branco: + * library/tzdata/America/Argentina/San_Luis: + * library/tzdata/Asia/Karachi: + * library/tzdata/Europe/Belgrade: + * library/tzdata/Europe/Berlin: + * library/tzdata/Europe/Budapest: + * library/tzdata/Europe/Sofia: + * library/tzdata/Indian/Mauritius: Olson's tzdata2008e. + 2008-08-08 Don Porter * generic/tcl.h: Bump to 8.5.4 for release. diff --git a/changes b/changes index a9af4c3..6f81261 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.6 2008/08/08 15:12:52 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.7 2008/08/08 15:41:10 kennykb Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7237,4 +7237,6 @@ variables without "." added to customization hooks (kupries) 2008-07-29 (bug fix) fix rare panic in TclStackFree (pasadyn,sofer) +2008-08-08 tzdata updated to Olson's tzdata2008e (kenny) + --- Released 8.5.4, August 15, 2008 --- See ChangeLog for details --- diff --git a/library/tzdata/Africa/Casablanca b/library/tzdata/Africa/Casablanca index aa4c8e3..15613fb 100644 --- a/library/tzdata/Africa/Casablanca +++ b/library/tzdata/Africa/Casablanca @@ -21,4 +21,6 @@ set TZData(:Africa/Casablanca) { {271033200 0 0 WET} {448243200 3600 0 CET} {504918000 0 0 WET} + {1212278400 3600 1 WEST} + {1222556400 0 0 WET} } diff --git a/library/tzdata/America/Argentina/San_Luis b/library/tzdata/America/Argentina/San_Luis index d98cd75..60a7995 100644 --- a/library/tzdata/America/Argentina/San_Luis +++ b/library/tzdata/America/Argentina/San_Luis @@ -50,17 +50,13 @@ set TZData(:America/Argentina/San_Luis) { {596948400 -7200 1 ARST} {605066400 -10800 0 ART} {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667792800 -14400 0 WART} - {673588800 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} + {631159200 -7200 1 ARST} + {637380000 -14400 0 WART} + {655963200 -10800 1 WARST} + {667796400 -14400 0 WART} + {675748800 -10800 0 ART} + {938919600 -10800 1 WARST} + {952052400 -10800 0 ART} {1085972400 -14400 0 WART} {1090728000 -10800 0 ART} {1198983600 -7200 1 ARST} diff --git a/library/tzdata/America/Eirunepe b/library/tzdata/America/Eirunepe index b168fcc..86dcd8f 100644 --- a/library/tzdata/America/Eirunepe +++ b/library/tzdata/America/Eirunepe @@ -36,4 +36,5 @@ set TZData(:America/Eirunepe) { {750834000 -14400 1 ACST} {761716800 -18000 0 ACT} {780206400 -18000 0 ACT} + {1214283600 -14400 0 AMT} } diff --git a/library/tzdata/America/Rio_Branco b/library/tzdata/America/Rio_Branco index f4513e3..20889cb 100644 --- a/library/tzdata/America/Rio_Branco +++ b/library/tzdata/America/Rio_Branco @@ -32,4 +32,5 @@ set TZData(:America/Rio_Branco) { {562136400 -14400 1 ACST} {571204800 -18000 0 ACT} {590040000 -18000 0 ACT} + {1214283600 -14400 0 AMT} } diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 8ce9edd..5e1c63e 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -9,4 +9,6 @@ set TZData(:Asia/Karachi) { {38775600 18000 0 PKT} {1018119660 21600 1 PKST} {1033840860 18000 0 PKT} + {1212260400 21600 1 PKST} + {1220205600 18000 0 PKT} } diff --git a/library/tzdata/CET b/library/tzdata/CET index a5fec55..b08750a 100644 --- a/library/tzdata/CET +++ b/library/tzdata/CET @@ -14,6 +14,8 @@ set TZData(:CET) { {-828226800 3600 0 CET} {-812502000 7200 1 CEST} {-796777200 3600 0 CET} + {-781052400 7200 1 CEST} + {-766623600 3600 0 CET} {228877200 7200 1 CEST} {243997200 3600 0 CET} {260326800 7200 1 CEST} diff --git a/library/tzdata/Europe/Belgrade b/library/tzdata/Europe/Belgrade index 384ee91..b11f7b3 100644 --- a/library/tzdata/Europe/Belgrade +++ b/library/tzdata/Europe/Belgrade @@ -9,6 +9,7 @@ set TZData(:Europe/Belgrade) { {-828226800 3600 0 CET} {-812502000 7200 1 CEST} {-796777200 3600 0 CET} + {-788922000 3600 0 CET} {-777942000 7200 1 CEST} {-766623600 3600 0 CET} {407199600 3600 0 CET} diff --git a/library/tzdata/Europe/Berlin b/library/tzdata/Europe/Berlin index 62a7141..5469cf6 100644 --- a/library/tzdata/Europe/Berlin +++ b/library/tzdata/Europe/Berlin @@ -15,13 +15,14 @@ set TZData(:Europe/Berlin) { {-828226800 3600 0 CET} {-812502000 7200 1 CEST} {-796777200 3600 0 CET} - {-781052400 7200 0 CEST} - {-776563200 10800 1 CEMT} + {-781052400 7200 1 CEST} + {-776559600 10800 0 CEMT} {-765936000 7200 1 CEST} {-761180400 3600 0 CET} + {-757386000 3600 0 CET} {-748479600 7200 1 CEST} {-733273200 3600 0 CET} - {-717634800 7200 1 CEST} + {-717631200 7200 1 CEST} {-714610800 10800 1 CEMT} {-710380800 7200 1 CEST} {-701910000 3600 0 CET} diff --git a/library/tzdata/Europe/Budapest b/library/tzdata/Europe/Budapest index c39d118..fd41acc 100644 --- a/library/tzdata/Europe/Budapest +++ b/library/tzdata/Europe/Budapest @@ -20,7 +20,8 @@ set TZData(:Europe/Budapest) { {-828226800 3600 0 CET} {-812502000 7200 1 CEST} {-796777200 3600 0 CET} - {-778471200 7200 0 CEST} + {-788922000 3600 0 CET} + {-778471200 7200 1 CEST} {-762487200 3600 0 CET} {-749689200 7200 1 CEST} {-733359600 3600 0 CET} diff --git a/library/tzdata/Europe/Sofia b/library/tzdata/Europe/Sofia index 300dca0..8fd55f6 100644 --- a/library/tzdata/Europe/Sofia +++ b/library/tzdata/Europe/Sofia @@ -9,6 +9,7 @@ set TZData(:Europe/Sofia) { {-828226800 3600 0 CET} {-812502000 7200 1 CEST} {-796777200 3600 0 CET} + {-788922000 3600 0 CET} {-781048800 7200 0 EET} {291762000 10800 0 EEST} {307576800 7200 0 EET} diff --git a/library/tzdata/Indian/Mauritius b/library/tzdata/Indian/Mauritius index 018447a..430bad4 100644 --- a/library/tzdata/Indian/Mauritius +++ b/library/tzdata/Indian/Mauritius @@ -3,4 +3,8 @@ set TZData(:Indian/Mauritius) { {-9223372036854775808 13800 0 LMT} {-1988164200 14400 0 MUT} + {403041600 18000 1 MUST} + {417034800 14400 0 MUT} + {1224972000 18000 1 MUST} + {1238104800 14400 0 MUT} } diff --git a/library/tzdata/MET b/library/tzdata/MET index a2c72c0..8789c97 100644 --- a/library/tzdata/MET +++ b/library/tzdata/MET @@ -14,6 +14,8 @@ set TZData(:MET) { {-828226800 3600 0 MET} {-812502000 7200 1 MEST} {-796777200 3600 0 MET} + {-781052400 7200 1 MEST} + {-766623600 3600 0 MET} {228877200 7200 1 MEST} {243997200 3600 0 MET} {260326800 7200 1 MEST} -- cgit v0.12 From 998a9c13883c70764e66772f2529a3904c4226d7 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 8 Aug 2008 15:42:46 +0000 Subject: Olson's tzdata2008e --- ChangeLog | 1 + library/tzdata/America/Santarem | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 library/tzdata/America/Santarem diff --git a/ChangeLog b/ChangeLog index 55b0112..b60d95c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ * library/tzdata/MET: * library/tzdata/Africa/Casablanca: * library/tzdata/America/Eirunepe: + * library/tzdata/America/Santarem: * library/tzdata/America/Rio_Branco: * library/tzdata/America/Argentina/San_Luis: * library/tzdata/Asia/Karachi: diff --git a/library/tzdata/America/Santarem b/library/tzdata/America/Santarem new file mode 100644 index 0000000..b6e9264 --- /dev/null +++ b/library/tzdata/America/Santarem @@ -0,0 +1,36 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Santarem) { + {-9223372036854775808 -13128 0 LMT} + {-1767212472 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {590036400 -14400 0 AMT} + {1214280000 -10800 0 BRT} +} -- cgit v0.12 From 6913383aec6a40a17d5295beaf8cc5fe1a897d6a Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 8 Aug 2008 15:53:38 +0000 Subject: reorder --- ChangeLog | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index b60d95c..82fb803 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2008-08-08 Don Porter + + * generic/tcl.h: Bump to 8.5.4 for release. + * library/init.tcl: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/configure.in: + + * unix/configure: autoconf-2.59 + * win/configure: + + * changes: Update for 8.5.4 release. + 2008-08-08 Kevin Kenny * library/tzdata/CET: @@ -14,20 +28,6 @@ * library/tzdata/Europe/Sofia: * library/tzdata/Indian/Mauritius: Olson's tzdata2008e. -2008-08-08 Don Porter - - * generic/tcl.h: Bump to 8.5.4 for release. - * library/init.tcl: - * tools/tcl.wse.in: - * unix/configure.in: - * unix/tcl.spec: - * win/configure.in: - - * unix/configure: autoconf-2.59 - * win/configure: - - * changes: Update for 8.5.4 release. - 2008-08-06 Don Porter * generic/tclVar.c (TclLookupSimpleVar): Retrieve the number of -- cgit v0.12 From 650ba88da9977e976dfdfbf53e6b528884b6bbd2 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 8 Aug 2008 18:30:58 +0000 Subject: 8.5.4 tag --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 82fb803..b8f0c03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-08-08 Don Porter + *** 8.5.4 TAGGED FOR RELEASE *** + * generic/tcl.h: Bump to 8.5.4 for release. * library/init.tcl: * tools/tcl.wse.in: -- cgit v0.12 From 85a12d44206a4671aacb86bd3b3df30cd0289739 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 8 Aug 2008 20:42:42 +0000 Subject: typos --- changes | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/changes b/changes index 6f81261..e6be293 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.7 2008/08/08 15:41:10 kennykb Exp $ +RCS: @(#) $Id: changes,v 1.136.2.8 2008/08/08 20:42:42 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7233,9 +7233,9 @@ variables without "." added to customization hooks (kupries) 2008-07-21 (bug fix)[2015723] [file] bad use of inodes on Windows (thoyts) -2008-07-21 (enhancment) [info frame] returns file data in more cases (kupries) +2008-07-21 (enhancement) [info frame] returns file data in more cases (kupries) -2008-07-29 (bug fix) fix rare panic in TclStackFree (pasadyn,sofer) +2008-07-29 (bug fix)[2030670] fix rare panic in TclStackFree (pasadyn,sofer) 2008-08-08 tzdata updated to Olson's tzdata2008e (kenny) -- cgit v0.12 From 451e7dcd231cf65a8e9a52a1547ca494aa8d6aff Mon Sep 17 00:00:00 2001 From: patthoyts Date: Mon, 11 Aug 2008 14:36:07 +0000 Subject: crc field from zlib data should be treated as unsigned for 64bit support [Bug 2046846] --- ChangeLog | 5 +++++ library/http/http.tcl | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b8f0c03..4ea4d81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-08-11 Pat Thoyts + + * library/http/http.tcl: crc field from zlib data should be treated as + unsigned for 64bit support [Bug 2046846] + 2008-08-08 Don Porter *** 8.5.4 TAGGED FOR RELEASE *** diff --git a/library/http/http.tcl b/library/http/http.tcl index 84a1da2..c07ae2c 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.67 2008/03/12 10:01:02 hobbs Exp $ +# RCS: @(#) $Id: http.tcl,v 1.67.2.1 2008/08/11 14:36:09 patthoyts Exp $ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories @@ -1406,7 +1406,7 @@ proc http::Gunzip {data} { incr pos } - binary scan [string range $data end-7 end] ii crc size + binary scan [string range $data end-7 end] iuiu crc size set inflated [zlib inflate [string range $data $pos end-8]] if { $crc != [set chk [zlib crc32 $inflated]] } { -- cgit v0.12 From c9ee386e1a4382454f47b695a8a45e22d6df514b Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 11 Aug 2008 15:49:25 +0000 Subject: * library/http/http.tcl: Bump http version to 2.7.1 to account * library/http/pkgIndex.tcl: for [Bug 2046486] bug fix. This * unix/Makefile.in: release of http now requires a * win/Makefile.in: dependency on Tcl 8.5 to be able to * win/makefile.bc: use the unsigned formats in the * win/makefile.vc: [binary scan] command. --- ChangeLog | 9 +++++++++ library/http/http.tcl | 6 +++--- library/http/pkgIndex.tcl | 4 ++-- unix/Makefile.in | 6 +++--- win/Makefile.in | 6 +++--- win/makefile.bc | 8 ++++---- win/makefile.vc | 4 ++-- 7 files changed, 26 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4ea4d81..ff762de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-08-11 Don Porter + + * library/http/http.tcl: Bump http version to 2.7.1 to account + * library/http/pkgIndex.tcl: for [Bug 2046486] bug fix. This + * unix/Makefile.in: release of http now requires a + * win/Makefile.in: dependency on Tcl 8.5 to be able to + * win/makefile.bc: use the unsigned formats in the + * win/makefile.vc: [binary scan] command. + 2008-08-11 Pat Thoyts * library/http/http.tcl: crc field from zlib data should be treated as diff --git a/library/http/http.tcl b/library/http/http.tcl index c07ae2c..261a331 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,12 +8,12 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.67.2.1 2008/08/11 14:36:09 patthoyts Exp $ +# RCS: @(#) $Id: http.tcl,v 1.67.2.2 2008/08/11 15:49:26 dgp Exp $ -package require Tcl 8.4 +package require Tcl 8.5.0 # Keep this in sync with pkgIndex.tcl and with the install directories # in Makefiles -package provide http 2.7 +package provide http 2.7.1 namespace eval http { # Allow resourcing to not clobber existing data diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 870019a..00a7e78 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,4 +1,4 @@ # Tcl package index file, version 1.1 -if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.7 [list tclPkgSetup $dir http 2.7 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +if {![package vsatisfies [package provide Tcl] 8.5.0} {return} +package ifneeded http 2.7.1 [list tclPkgSetup $dir http 2.7.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] diff --git a/unix/Makefile.in b/unix/Makefile.in index aa3df78..d9f2daa 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.5 2008/07/21 19:44:37 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.6 2008/08/11 15:49:27 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -782,8 +782,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs do \ $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \ done; - @echo "Installing package http 2.7 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.tm; + @echo "Installing package http 2.7.1 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/http-2.7.1.tm; @echo "Installing library opt0.4 directory"; @for i in $(TOP_DIR)/library/opt/*.tcl ; \ do \ diff --git a/win/Makefile.in b/win/Makefile.in index f1810fa..3a34d32 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.2 2008/07/21 19:44:37 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.3 2008/08/11 15:49:28 dgp Exp $ VERSION = @TCL_VERSION@ @@ -635,8 +635,8 @@ install-libraries: libraries install-tzdata install-msgs do \ $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \ done; - @echo "Installing package http 2.7 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.tm; + @echo "Installing package http 2.7.1 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/http-2.7.1.tm; @echo "Installing library opt0.4 directory"; @for j in $(ROOT_DIR)/library/opt/*.tcl; \ do \ diff --git a/win/makefile.bc b/win/makefile.bc index f750555..6ba4420 100644 --- a/win/makefile.bc +++ b/win/makefile.bc @@ -420,10 +420,10 @@ install-libraries: -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http1.0" -@copy "$(ROOT)\library\http1.0\http.tcl" "$(SCRIPT_INSTALL_DIR)\http1.0" -@copy "$(ROOT)\library\http1.0\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http1.0" - @echo installing http2.4 - -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http2.4" - -@copy "$(ROOT)\library\http\http.tcl" "$(SCRIPT_INSTALL_DIR)\http2.4" - -@copy "$(ROOT)\library\http\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http2.4" + @echo installing http2.7 + -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http2.7" + -@copy "$(ROOT)\library\http\http.tcl" "$(SCRIPT_INSTALL_DIR)\http2.7" + -@copy "$(ROOT)\library\http\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http2.7" @echo installing opt0.4 -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\opt0.4" -@copy "$(ROOT)\library\opt\optparse.tcl" "$(SCRIPT_INSTALL_DIR)\opt0.4" diff --git a/win/makefile.vc b/win/makefile.vc index aba5e68..f0bc2ac 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -13,7 +13,7 @@ # Copyright (c) 2003-2008 Pat Thoyts. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.175.2.1 2008/06/25 10:57:54 patthoyts Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.175.2.2 2008/08/11 15:49:28 dgp Exp $ #------------------------------------------------------------------------------ # Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) @@ -982,7 +982,7 @@ install-libraries: tclConfig install-msgs install-tzdata "$(SCRIPT_INSTALL_DIR)\opt0.4\" @echo Installing package http $(PKG_HTTP_VER) as a Tcl Module @$(COPY) "$(ROOT)\library\http\http.tcl" \ - "$(SCRIPT_INSTALL_DIR)\..\tcl8\8.4\http-$(PKG_HTTP_VER).tm" + "$(SCRIPT_INSTALL_DIR)\..\tcl8\8.5\http-$(PKG_HTTP_VER).tm" @echo Installing package msgcat $(PKG_MSGCAT_VER) as a Tcl Module @$(COPY) "$(ROOT)\library\msgcat\msgcat.tcl" \ "$(SCRIPT_INSTALL_DIR)\..\tcl8\8.5\msgcat-$(PKG_MSGCAT_VER).tm" -- cgit v0.12 From 7f38194f5e9dc40e7cff32fa65af88021011cfab Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 11 Aug 2008 17:32:58 +0000 Subject: &#(*& typo! --- library/http/pkgIndex.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 00a7e78..7263414 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,4 +1,4 @@ # Tcl package index file, version 1.1 -if {![package vsatisfies [package provide Tcl] 8.5.0} {return} +if {![package vsatisfies [package provide Tcl] 8.5.0]} {return} package ifneeded http 2.7.1 [list tclPkgSetup $dir http 2.7.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] -- cgit v0.12 From 49f30082dd3c2a494c7a7bca131dbd509953c961 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 11 Aug 2008 19:01:54 +0000 Subject: * generic/tclProc.c (Tcl_ProcObjCmd): Fixed memory leak triggered * tests/proc.test: by procbody::test::proc. See [Bug 2043636]. Added a test case demonstrating the leak before the fix. Fixed a few spelling errors in test descriptions as well. --- ChangeLog | 7 +++++++ generic/tclProc.c | 28 ++++++++++++++++++++++++---- tests/proc.test | 36 +++++++++++++++++++++++++++++++----- 3 files changed, 62 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index ff762de..7a68a70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-08-11 Andreas Kupries + + * generic/tclProc.c (Tcl_ProcObjCmd): Fixed memory leak triggered + * tests/proc.test: by procbody::test::proc. See [Bug 2043636]. + Added a test case demonstrating the leak before the fix. Fixed a + few spelling errors in test descriptions as well. + 2008-08-11 Don Porter * library/http/http.tcl: Bump http version to 2.7.1 to account diff --git a/generic/tclProc.c b/generic/tclProc.c index 2b7c5f7..bf67600 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.139.2.2 2008/07/25 20:30:47 andreas_kupries Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.139.2.3 2008/08/11 19:01:59 andreas_kupries Exp $ */ #include "tclInt.h" @@ -245,6 +245,7 @@ Tcl_ProcObjCmd( if (contextPtr->line && (contextPtr->nline >= 4) && (contextPtr->line[3] >= 0)) { int isNew; + Tcl_HashEntry* hePtr; CmdFrame *cfPtr = (CmdFrame *) ckalloc(sizeof(CmdFrame)); cfPtr->level = -1; @@ -261,8 +262,26 @@ Tcl_ProcObjCmd( cfPtr->cmd.str.cmd = NULL; cfPtr->cmd.str.len = 0; - Tcl_SetHashValue(Tcl_CreateHashEntry(iPtr->linePBodyPtr, - (char *) procPtr, &isNew), cfPtr); + hePtr = Tcl_CreateHashEntry(iPtr->linePBodyPtr, (char *) procPtr, &isNew); + if (!isNew) { + /* + * Get the old command frame and release it. See also + * TclProcCleanupProc in this file. Currently it seems as + * if only the procbodytest::proc command of the testsuite + * is able to trigger this situation. + */ + + CmdFrame* cfOldPtr = (CmdFrame *) Tcl_GetHashValue(hePtr); + + if (cfOldPtr->type == TCL_LOCATION_SOURCE) { + Tcl_DecrRefCount(cfOldPtr->data.eval.path); + cfOldPtr->data.eval.path = NULL; + } + ckfree((char *) cfOldPtr->line); + cfOldPtr->line = NULL; + ckfree((char *) cfOldPtr); + } + Tcl_SetHashValue(hePtr, cfPtr); } /* @@ -2162,7 +2181,8 @@ TclProcCleanupProc( /* * TIP #280: Release the location data associated with this Proc * structure, if any. The interpreter may not exist (For example for - * procbody structures created by tbcload. + * procbody structures created by tbcload. See also Tcl_ProcObjCmd(), when + * the same ProcPtr is overwritten with a new CmdFrame. */ if (!iPtr) { diff --git a/tests/proc.test b/tests/proc.test index 8fdc159..bb50979 100644 --- a/tests/proc.test +++ b/tests/proc.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: proc.test,v 1.19 2006/11/03 00:34:53 hobbs Exp $ +# RCS: @(#) $Id: proc.test,v 1.19.4.1 2008/08/11 19:02:02 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -26,6 +26,8 @@ if {[catch {package require procbodytest}]} { testConstraint procbodytest 1 } +testConstraint memory [llength [info commands memory]] + catch {namespace delete {*}[namespace children :: test_ns_*]} catch {rename p ""} catch {rename {} ""} @@ -233,7 +235,7 @@ test proc-4.3 {TclCreateProc, procbody obj, too many args} procbodytest { catch {rename t ""} set result } {procedure "t": arg list contains 3 entries, precompiled header expects 1} -test proc-4.4 {TclCreateProc, procbody obj, inconsitent arg name} procbodytest { +test proc-4.4 {TclCreateProc, procbody obj, inconsistent arg name} procbodytest { catch { proc p {x y z} { set v [join [list $x $y $z]] @@ -249,7 +251,7 @@ test proc-4.4 {TclCreateProc, procbody obj, inconsitent arg name} procbodytest { catch {rename t ""} set result } {procedure "t": formal parameter 1 is inconsistent with precompiled body} -test proc-4.5 {TclCreateProc, procbody obj, inconsitent arg default type} procbodytest { +test proc-4.5 {TclCreateProc, procbody obj, inconsistent arg default type} procbodytest { catch { proc p {x y {z Z}} { set v [join [list $x $y $z]] @@ -265,7 +267,7 @@ test proc-4.5 {TclCreateProc, procbody obj, inconsitent arg default type} procbo catch {rename t ""} set result } {procedure "t": formal parameter 2 is inconsistent with precompiled body} -test proc-4.6 {TclCreateProc, procbody obj, inconsitent arg default type} procbodytest { +test proc-4.6 {TclCreateProc, procbody obj, inconsistent arg default type} procbodytest { catch { proc p {x y z} { set v [join [list $x $y $z]] @@ -281,7 +283,7 @@ test proc-4.6 {TclCreateProc, procbody obj, inconsitent arg default type} procbo catch {rename t ""} set result } {procedure "t": formal parameter 2 is inconsistent with precompiled body} -test proc-4.7 {TclCreateProc, procbody obj, inconsitent arg default value} procbodytest { +test proc-4.7 {TclCreateProc, procbody obj, inconsistent arg default value} procbodytest { catch { proc p {x y {z Z}} { set v [join [list $x $y $z]] @@ -297,6 +299,30 @@ test proc-4.7 {TclCreateProc, procbody obj, inconsitent arg default value} procb catch {rename t ""} set result } {procedure "t": formal parameter "z" has default value inconsistent with precompiled body} +test proc-4.8 {TclCreateProc, procbody obj, no leak on multiple iterations} -setup { + proc getbytes {} { + set lines [split [memory info] "\n"] + lindex $lines 3 3 + } + proc px x { + set y [string tolower $x] + return "$x:$y" + } + px x +} -constraints {procbodytest memory} -body { + + set end [getbytes] + for {set i 0} {$i < 5} {incr i} { + + procbodytest::proc tx x px + + set tmp $end + set end [getbytes] + } + set leakedBytes [expr {$end - $tmp}] +} -cleanup { + rename getbytes {} +} -result 0 test proc-5.1 {Bytecompiling noop; test for correct argument substitution} { proc p args {} ; # this will be bytecompiled into t -- cgit v0.12 From 8db6611c4c31932335de5a0c12de2a48830859b4 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 11 Aug 2008 20:13:39 +0000 Subject: * generic/tclProc.c (Tcl_ProcObjCmd): Fixed memory leak triggered * tests/proc.test: by procbody::test::proc. See [Bug 2043636]. Added a test case demonstrating the leak before the fix. Fixed a few spelling errors in test descriptions as well. --- ChangeLog | 7 +++++++ generic/tclProc.c | 29 ++++++++++++++++++++++++----- tests/proc.test | 36 +++++++++++++++++++++++++++++++----- 3 files changed, 62 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 023241f..030f11c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-08-11 Andreas Kupries + + * generic/tclProc.c (Tcl_ProcObjCmd): Fixed memory leak triggered + * tests/proc.test: by procbody::test::proc. See [Bug 2043636]. + Added a test case demonstrating the leak before the fix. Fixed a + few spelling errors in test descriptions as well. + 2008-07-28 Andreas Kupries * generic/tclBasic.c: Added missing release of extended command diff --git a/generic/tclProc.c b/generic/tclProc.c index b2c2b8d..950d448 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.8 2008/07/21 19:37:45 andreas_kupries Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.9 2008/08/11 20:13:43 andreas_kupries Exp $ */ #include "tclInt.h" @@ -182,7 +182,8 @@ Tcl_ProcObjCmd(dummy, interp, objc, objv) context.line && (context.nline >= 4) && (context.line [3] >= 0)) { - int new; + int isNew; + Tcl_HashEntry* hePtr; CmdFrame* cfPtr = (CmdFrame*) ckalloc (sizeof (CmdFrame)); cfPtr->level = -1; @@ -206,9 +207,27 @@ Tcl_ProcObjCmd(dummy, interp, objc, objv) cfPtr->cmd.str.cmd = NULL; cfPtr->cmd.str.len = 0; - Tcl_SetHashValue (Tcl_CreateHashEntry (iPtr->linePBodyPtr, - (char*) procPtr, &new), - cfPtr); + hePtr = Tcl_CreateHashEntry (iPtr->linePBodyPtr, (char*) procPtr, + &isNew); + if (!isNew) { + /* + * Get the old command frame and release it. See also + * TclProcCleanupProc in this file. Currently it seems as if + * only the procbodytest::proc command of the testsuite is + * able to trigger this situation. + */ + + CmdFrame* cfOldPtr = (CmdFrame *) Tcl_GetHashValue(hePtr); + + if (cfOldPtr->type == TCL_LOCATION_SOURCE) { + Tcl_DecrRefCount(cfOldPtr->data.eval.path); + cfOldPtr->data.eval.path = NULL; + } + ckfree((char *) cfOldPtr->line); + cfOldPtr->line = NULL; + ckfree((char *) cfOldPtr); + } + Tcl_SetHashValue (hePtr, cfPtr); } } #endif diff --git a/tests/proc.test b/tests/proc.test index 222a31f..8a9ec14 100644 --- a/tests/proc.test +++ b/tests/proc.test @@ -13,13 +13,15 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: proc.test,v 1.11.2.1 2004/05/02 21:07:16 msofer Exp $ +# RCS: @(#) $Id: proc.test,v 1.11.2.2 2008/08/11 20:13:44 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import -force ::tcltest::* } +testConstraint memory [llength [info commands memory]] + catch {eval namespace delete [namespace children :: test_ns_*]} catch {rename p ""} catch {rename {} ""} @@ -237,7 +239,7 @@ test proc-4.3 {TclCreateProc, procbody obj, too many args} { set result } {procedure "t": arg list contains 3 entries, precompiled header expects 1} -test proc-4.4 {TclCreateProc, procbody obj, inconsitent arg name} { +test proc-4.4 {TclCreateProc, procbody obj, inconsistent arg name} { catch { proc p {x y z} { set v [join [list $x $y $z]] @@ -254,7 +256,7 @@ test proc-4.4 {TclCreateProc, procbody obj, inconsitent arg name} { set result } {procedure "t": formal parameter 1 is inconsistent with precompiled body} -test proc-4.5 {TclCreateProc, procbody obj, inconsitent arg default type} { +test proc-4.5 {TclCreateProc, procbody obj, inconsistent arg default type} { catch { proc p {x y {z Z}} { set v [join [list $x $y $z]] @@ -271,7 +273,7 @@ test proc-4.5 {TclCreateProc, procbody obj, inconsitent arg default type} { set result } {procedure "t": formal parameter 2 is inconsistent with precompiled body} -test proc-4.6 {TclCreateProc, procbody obj, inconsitent arg default type} { +test proc-4.6 {TclCreateProc, procbody obj, inconsistent arg default type} { catch { proc p {x y z} { set v [join [list $x $y $z]] @@ -288,7 +290,7 @@ test proc-4.6 {TclCreateProc, procbody obj, inconsitent arg default type} { set result } {procedure "t": formal parameter 2 is inconsistent with precompiled body} -test proc-4.7 {TclCreateProc, procbody obj, inconsitent arg default value} { +test proc-4.7 {TclCreateProc, procbody obj, inconsistent arg default value} { catch { proc p {x y {z Z}} { set v [join [list $x $y $z]] @@ -305,6 +307,30 @@ test proc-4.7 {TclCreateProc, procbody obj, inconsitent arg default value} { set result } {procedure "t": formal parameter "z" has default value inconsistent with precompiled body} +test proc-4.8 {TclCreateProc, procbody obj, no leak on multiple iterations} -setup { + proc getbytes {} { + set lines [split [memory info] "\n"] + lindex $lines 3 3 + } + proc px x { + set y [string tolower $x] + return "$x:$y" + } + px x +} -constraints memory -body { + set end [getbytes] + for {set i 0} {$i < 5} {incr i} { + + procbodytest::proc tx x px + + set tmp $end + set end [getbytes] + } + set leakedBytes [expr {$end - $tmp}] +} -cleanup { + rename getbytes {} +} -result 0 + test proc-5.1 {Bytecompiling noop; test for correct argument substitution} { proc p args {} ; # this will be bytecompiled into t proc t {} { -- cgit v0.12 From ab3517ae4d6cb7db7cd132fb1c502b9a82794859 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 11 Aug 2008 21:03:40 +0000 Subject: * library/tm.tcl: Added a 'package provide' command to the generated ifneeded scripts of Tcl Modules, for early detection of conflicts between the version specified through the file name and a 'provide' command in the module implementation, if any. Note that this change also now allows Tcl Modules to not provide a 'provide' command at all, and declaring their version only through their filename. --- ChangeLog | 8 ++++++++ library/tm.tcl | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7a68a70..f89e4e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2008-08-11 Andreas Kupries + * library/tm.tcl: Added a 'package provide' command to the + generated ifneeded scripts of Tcl Modules, for early detection of + conflicts between the version specified through the file name and + a 'provide' command in the module implementation, if any. Note + that this change also now allows Tcl Modules to not provide a + 'provide' command at all, and declaring their version only through + their filename. + * generic/tclProc.c (Tcl_ProcObjCmd): Fixed memory leak triggered * tests/proc.test: by procbody::test::proc. See [Bug 2043636]. Added a test case demonstrating the leak before the fix. Fixed a diff --git a/library/tm.tcl b/library/tm.tcl index 4f58d12..24ddb86 100644 --- a/library/tm.tcl +++ b/library/tm.tcl @@ -254,7 +254,8 @@ proc ::tcl::tm::UnknownHandler {original name args} { # means something else without the namespace # specifier. - package ifneeded $pkgname $pkgversion [::list source -encoding utf-8 $file] + package ifneeded $pkgname $pkgversion \ + "[::list package provide $pkgname $pkgversion];[::list source -encoding utf-8 $file]" # We abort in this unknown handler only if we got # a satisfying candidate for the requested -- cgit v0.12 From 9bf7aefef2826d2275a85e56b6e49d9af59fc2a6 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Mon, 11 Aug 2008 21:31:09 +0000 Subject: Remove the 8.5+ requirement to avoid problems with shipping http as a tcl module. --- ChangeLog | 4 ++++ library/http/http.tcl | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index f89e4e0..477fdfe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-08-11 Pat Thoyts + + * library/http/http.tcl: Remove 8.5 requirement. + 2008-08-11 Andreas Kupries * library/tm.tcl: Added a 'package provide' command to the diff --git a/library/http/http.tcl b/library/http/http.tcl index 261a331..d5b299d 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.67.2.2 2008/08/11 15:49:26 dgp Exp $ +# RCS: @(#) $Id: http.tcl,v 1.67.2.3 2008/08/11 21:31:11 patthoyts Exp $ package require Tcl 8.5.0 # Keep this in sync with pkgIndex.tcl and with the install directories @@ -1406,10 +1406,10 @@ proc http::Gunzip {data} { incr pos } - binary scan [string range $data end-7 end] iuiu crc size + binary scan [string range $data end-7 end] ii crc size set inflated [zlib inflate [string range $data $pos end-8]] - - if { $crc != [set chk [zlib crc32 $inflated]] } { + set chk [zlib crc32 $inflated] + if { ($crc & 0xffffffff) != ($chk & 0xffffffff)} { return -code error "invalid data: checksum mismatch $crc != $chk" } return $inflated -- cgit v0.12 From b023663a3aa9d4b27ba15183688973bda7ff9a4e Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 11 Aug 2008 21:57:09 +0000 Subject: * library/http/http.tcl: Remove 8.5 requirement. * library/http/pkgIndex.tcl: * unix/Makefile.in: * win/Makefile.in: * win/makefile.vc: --- ChangeLog | 4 ++++ library/http/http.tcl | 4 ++-- library/http/pkgIndex.tcl | 2 +- unix/Makefile.in | 4 ++-- win/Makefile.in | 4 ++-- win/makefile.vc | 4 ++-- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 477fdfe..4946936 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,10 @@ 2008-08-11 Pat Thoyts * library/http/http.tcl: Remove 8.5 requirement. + * library/http/pkgIndex.tcl: + * unix/Makefile.in: + * win/Makefile.in: + * win/makefile.vc: 2008-08-11 Andreas Kupries diff --git a/library/http/http.tcl b/library/http/http.tcl index d5b299d..32c5309 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,9 +8,9 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.67.2.3 2008/08/11 21:31:11 patthoyts Exp $ +# RCS: @(#) $Id: http.tcl,v 1.67.2.4 2008/08/11 21:57:14 dgp Exp $ -package require Tcl 8.5.0 +package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories # in Makefiles package provide http 2.7.1 diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 7263414..932017a 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,4 +1,4 @@ # Tcl package index file, version 1.1 -if {![package vsatisfies [package provide Tcl] 8.5.0]} {return} +if {![package vsatisfies [package provide Tcl] 8.4]} {return} package ifneeded http 2.7.1 [list tclPkgSetup $dir http 2.7.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] diff --git a/unix/Makefile.in b/unix/Makefile.in index d9f2daa..98a1d32 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.6 2008/08/11 15:49:27 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.7 2008/08/11 21:57:15 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -783,7 +783,7 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \ done; @echo "Installing package http 2.7.1 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/http-2.7.1.tm; + @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.1.tm; @echo "Installing library opt0.4 directory"; @for i in $(TOP_DIR)/library/opt/*.tcl ; \ do \ diff --git a/win/Makefile.in b/win/Makefile.in index 3a34d32..4316677 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.3 2008/08/11 15:49:28 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.4 2008/08/11 21:57:17 dgp Exp $ VERSION = @TCL_VERSION@ @@ -636,7 +636,7 @@ install-libraries: libraries install-tzdata install-msgs $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \ done; @echo "Installing package http 2.7.1 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/http-2.7.1.tm; + @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.1.tm; @echo "Installing library opt0.4 directory"; @for j in $(ROOT_DIR)/library/opt/*.tcl; \ do \ diff --git a/win/makefile.vc b/win/makefile.vc index f0bc2ac..2083aee 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -13,7 +13,7 @@ # Copyright (c) 2003-2008 Pat Thoyts. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.175.2.2 2008/08/11 15:49:28 dgp Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.175.2.3 2008/08/11 21:57:17 dgp Exp $ #------------------------------------------------------------------------------ # Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) @@ -982,7 +982,7 @@ install-libraries: tclConfig install-msgs install-tzdata "$(SCRIPT_INSTALL_DIR)\opt0.4\" @echo Installing package http $(PKG_HTTP_VER) as a Tcl Module @$(COPY) "$(ROOT)\library\http\http.tcl" \ - "$(SCRIPT_INSTALL_DIR)\..\tcl8\8.5\http-$(PKG_HTTP_VER).tm" + "$(SCRIPT_INSTALL_DIR)\..\tcl8\8.4\http-$(PKG_HTTP_VER).tm" @echo Installing package msgcat $(PKG_MSGCAT_VER) as a Tcl Module @$(COPY) "$(ROOT)\library\msgcat\msgcat.tcl" \ "$(SCRIPT_INSTALL_DIR)\..\tcl8\8.5\msgcat-$(PKG_MSGCAT_VER).tm" -- cgit v0.12 From ce2c116eefb714e8c79c8dda6a244e276f177d8f Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 12 Aug 2008 14:43:24 +0000 Subject: * changes: Update for 8.5.4 release. --- ChangeLog | 8 ++++++-- changes | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4946936..f67d5a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-12 Don Porter + + *** 8.5.4 TAGGED FOR RELEASE *** + + * changes: Update for 8.5.4 release. + 2008-08-11 Pat Thoyts * library/http/http.tcl: Remove 8.5 requirement. @@ -37,8 +43,6 @@ 2008-08-08 Don Porter - *** 8.5.4 TAGGED FOR RELEASE *** - * generic/tcl.h: Bump to 8.5.4 for release. * library/init.tcl: * tools/tcl.wse.in: diff --git a/changes b/changes index e6be293..7e91cca 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.8 2008/08/08 20:42:42 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.9 2008/08/12 14:43:26 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7239,4 +7239,9 @@ variables without "." added to customization hooks (kupries) 2008-08-08 tzdata updated to Olson's tzdata2008e (kenny) +2008-08-11 (bug fix)[2046846] 64bit support for http zlib crc (thoyts) +=> http 2.7.1 + +2008-08-11 (enhancement) automatic [package provide] for TMs (kupries) + --- Released 8.5.4, August 15, 2008 --- See ChangeLog for details --- -- cgit v0.12 From 7740c0fd63a6952846fab475fb23429ffbc85292 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 13 Aug 2008 17:59:02 +0000 Subject: * generic/tclFileName.c: Fix for errors handling -types {} * tests/fileName.test: option to [glob]. [Bug 1750300] Thanks to Matthias Kraft and George Peter Staplin. --- ChangeLog | 6 ++++++ generic/tclFileName.c | 6 +++++- tests/fileName.test | 42 ++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 030f11c..9364fb8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-13 Don Porter + + * generic/tclFileName.c: Fix for errors handling -types {} + * tests/fileName.test: option to [glob]. [Bug 1750300] + Thanks to Matthias Kraft and George Peter Staplin. + 2008-08-11 Andreas Kupries * generic/tclProc.c (Tcl_ProcObjCmd): Fixed memory leak triggered diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 12a50e5..15c04d8 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.15 2006/10/03 18:20:33 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.16 2008/08/13 17:59:06 dgp Exp $ */ #include "tclInt.h" @@ -1774,6 +1774,9 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) * on an incompatible platform. */ Tcl_ListObjLength(interp, typePtr, &length); + if (length <= 0) { + goto skipTypes; + } globTypes = (Tcl_GlobTypeData*) ckalloc(sizeof(Tcl_GlobTypeData)); globTypes->type = 0; globTypes->perm = 0; @@ -1879,6 +1882,7 @@ Tcl_GlobObjCmd(dummy, interp, objc, objv) } } + skipTypes: /* * Now we perform the actual glob below. This may involve joining * together the pattern arguments, dealing with particular file types diff --git a/tests/fileName.test b/tests/fileName.test index 7635e2d..4573fbe 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,10 +10,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.7 2005/06/21 19:07:58 kennykb Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.8 2008/08/13 17:59:08 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest + package require tcltest 2 namespace import -force ::tcltest::* } @@ -2008,6 +2008,44 @@ test fileName-18.1 {windows - split ADS name correctly} {winOnly} { list $x $y } {{c:/ ./c:d} c:/c:d} +test fileName-20.1 {Bug 1750300} -setup { + set d [makeDirectory foo] + makeFile {} TAGS $d +} -body { + llength [glob -nocomplain -directory $d -- TAGS tags Tags] +} -cleanup { + removeFile TAGS $d + removeDirectory foo +} -result 1 +test fileName-20.2 {Bug 1750300} -setup { + set d [makeDirectory foo] + makeFile {} TAGS $d +} -body { + llength [glob -nocomplain -directory $d -types {} -- TAGS tags Tags] +} -cleanup { + removeFile TAGS $d + removeDirectory foo +} -result 1 +test fileName-20.3 {Bug 1750300} -setup { + set d [makeDirectory foo] + makeFile {} TAGS $d +} -body { + llength [glob -nocomplain -directory $d -types {} -- *U*] +} -cleanup { + removeFile TAGS $d + removeDirectory foo +} -result 0 +test fileName-20.4 {Bug 1750300} -setup { + set d [makeDirectory foo] + makeFile {} TAGS $d +} -body { + llength [glob -nocomplain -directory $d -types {} -- URGENT Urgent] +} -cleanup { + removeFile TAGS $d + removeDirectory foo +} -result 0 + + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] -- cgit v0.12 From 762fa1a537f4ca15376e7da1c87e323eb2e7a60c Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 13 Aug 2008 18:12:55 +0000 Subject: * generic/tclFileName.c: Fix for errors handling -types {} * tests/fileName.test: option to [glob]. [Bug 1750300] Thanks to Matthias Kraft and George Peter Staplin. --- ChangeLog | 6 ++++++ generic/tclFileName.c | 6 +++++- tests/fileName.test | 39 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f67d5a2..3f899c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-13 Don Porter + + * generic/tclFileName.c: Fix for errors handling -types {} + * tests/fileName.test: option to [glob]. [Bug 1750300] + Thanks to Matthias Kraft and George Peter Staplin. + 2008-08-12 Don Porter *** 8.5.4 TAGGED FOR RELEASE *** diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 80391f7..1c4b97e 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.86 2007/12/13 15:23:17 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.86.2.1 2008/08/13 18:12:56 dgp Exp $ */ #include "tclInt.h" @@ -1412,6 +1412,9 @@ Tcl_GlobObjCmd( */ Tcl_ListObjLength(interp, typePtr, &length); + if (length <= 0) { + goto skipTypes; + } globTypes = (Tcl_GlobTypeData*) TclStackAlloc(interp,sizeof(Tcl_GlobTypeData)); globTypes->type = 0; @@ -1529,6 +1532,7 @@ Tcl_GlobObjCmd( } } + skipTypes: /* * Now we perform the actual glob below. This may involve joining together * the pattern arguments, dealing with particular file types etc. We use a diff --git a/tests/fileName.test b/tests/fileName.test index 4cd079b..e603c5a 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51 2006/03/21 11:12:29 dkf Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.1 2008/08/13 18:12:56 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1534,6 +1534,43 @@ test fileName-19.1 {ensure that [Bug 1325099] stays fixed} { list [file exists ~//.nonexistant_file] [file exists ~///.nonexistant_file] } {0 0} +test fileName-20.1 {Bug 1750300} -setup { + set d [makeDirectory foo] + makeFile {} TAGS $d +} -body { + llength [glob -nocomplain -directory $d -- TAGS tags Tags] +} -cleanup { + removeFile TAGS $d + removeDirectory foo +} -result 1 +test fileName-20.2 {Bug 1750300} -setup { + set d [makeDirectory foo] + makeFile {} TAGS $d +} -body { + llength [glob -nocomplain -directory $d -types {} -- TAGS tags Tags] +} -cleanup { + removeFile TAGS $d + removeDirectory foo +} -result 1 +test fileName-20.3 {Bug 1750300} -setup { + set d [makeDirectory foo] + makeFile {} TAGS $d +} -body { + llength [glob -nocomplain -directory $d -types {} -- *U*] +} -cleanup { + removeFile TAGS $d + removeDirectory foo +} -result 0 +test fileName-20.4 {Bug 1750300} -setup { + set d [makeDirectory foo] + makeFile {} TAGS $d +} -body { + llength [glob -nocomplain -directory $d -types {} -- URGENT Urgent] +} -cleanup { + removeFile TAGS $d + removeDirectory foo +} -result 0 + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] -- cgit v0.12 From 07ea9727d2053146a9d3ebf690c53d631014ce86 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 13 Aug 2008 23:04:22 +0000 Subject: * unix/tcl.m4 (SC_PATH_X): check for libX11.dylib in addition to libX11.so et al. --- unix/tcl.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 1659a12..c7a13c6 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -2407,7 +2407,7 @@ AC_DEFUN([SC_PATH_X], [ XLIBSW=nope dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib" for i in $dirs ; do - if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then + if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl -o -r $i/libX11.dylib; then AC_MSG_RESULT([$i]) XLIBSW="-L$i -lX11" x_libraries="$i" -- cgit v0.12 From b239b96cfda8b81609049fa935a22c8a12c69ce0 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 13 Aug 2008 23:04:30 +0000 Subject: * unix/tcl.m4 (SC_PATH_X): check for libX11.dylib in addition to libX11.so et al. --- unix/tcl.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 6948c98..2231cd7 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -2473,7 +2473,7 @@ AC_DEFUN([SC_PATH_X], [ XLIBSW=nope dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib" for i in $dirs ; do - if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then + if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl -o -r $i/libX11.dylib; then AC_MSG_RESULT([$i]) XLIBSW="-L$i -lX11" x_libraries="$i" -- cgit v0.12 From c72ee42e62abe60d43636ab26542355fb54f6b64 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 13 Aug 2008 23:07:16 +0000 Subject: * unix/Makefile.in: ensure Makefile shell is /bin/bash for * unix/configure.in (SunOS): DTrace-enabled build on Solaris. (followup to 2008-06-12) [Bug 2016584] --- ChangeLog | 11 +++++++++++ unix/Makefile.in | 4 ++-- unix/configure.in | 5 ++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3f899c8..d9773e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-08-14 Daniel Steffen + + * unix/Makefile.in: ensure Makefile shell is /bin/bash for + * unix/configure.in (SunOS): DTrace-enabled build on Solaris. + (followup to 2008-06-12) [Bug 2016584] + + * unix/tcl.m4 (SC_PATH_X): check for libX11.dylib in addition to + libX11.so et al. + + * unix/configure: autoconf-2.59 + 2008-08-13 Don Porter * generic/tclFileName.c: Fix for errors handling -types {} diff --git a/unix/Makefile.in b/unix/Makefile.in index 98a1d32..45a2fad 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.7 2008/08/11 21:57:15 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.8 2008/08/13 23:07:16 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -139,7 +139,7 @@ NO_DEPRECATED_FLAGS = # Some versions of make, like SGI's, use the following variable to determine # which shell to use for executing commands: -SHELL = /bin/sh +SHELL = @MAKEFILE_SHELL@ # Tcl used to let the configure script choose which program to use for # installing, but there are just too many different versions of "install" diff --git a/unix/configure.in b/unix/configure.in index ca348c2..a753fc9 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.5 2008/08/08 15:22:35 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.6 2008/08/13 23:07:16 das Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -657,6 +657,7 @@ if test $tcl_ok = yes; then test -z "$ac_cv_path_DTRACE" && tcl_ok=no fi AC_MSG_CHECKING([whether to enable DTrace support]) +MAKEFILE_SHELL='/bin/sh' if test $tcl_ok = yes; then AC_DEFINE(USE_DTRACE, 1, [Are we building with DTrace support?]) DTRACE_SRC="\${DTRACE_SRC}" @@ -667,6 +668,7 @@ if test $tcl_ok = yes; then # Need to create an intermediate object file to ensure tclDTrace.o # gets included when linking against the static tcl library. STLIB_LD='stlib_ld () { /usr/ccs/bin/ld -r -o $${1%.a}.o "$${@:2}" && '"${STLIB_LD}"' $${1} $${1%.a}.o ; } && stlib_ld' + MAKEFILE_SHELL='/bin/bash' # Force use of Sun ar and ranlib, the GNU versions choke on # tclDTrace.o and the combined object file above. AR='/usr/ccs/bin/ar' @@ -890,6 +892,7 @@ AC_SUBST(INSTALL_TZDATA) AC_SUBST(DTRACE_SRC) AC_SUBST(DTRACE_HDR) AC_SUBST(DTRACE_OBJ) +AC_SUBST(MAKEFILE_SHELL) AC_SUBST(BUILD_DLTEST) AC_SUBST(TCL_PACKAGE_PATH) -- cgit v0.12 From 9275a5bc8db6801fe07226b36baa4370158a3bcb Mon Sep 17 00:00:00 2001 From: das Date: Wed, 13 Aug 2008 23:07:27 +0000 Subject: * unix/Makefile.in: ensure Makefile shell is /bin/bash for * unix/configure.in (SunOS): DTrace-enabled build on Solaris. (followup to 2008-06-12) [Bug 2016584] --- ChangeLog | 11 +++++++++++ unix/Makefile.in | 4 ++-- unix/configure.in | 5 ++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9364fb8..3cb3c4a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-08-14 Daniel Steffen + + * unix/Makefile.in: ensure Makefile shell is /bin/bash for + * unix/configure.in (SunOS): DTrace-enabled build on Solaris. + (followup to 2008-06-12) [Bug 2016584] + + * unix/tcl.m4 (SC_PATH_X): check for libX11.dylib in addition to + libX11.so et al. + + * unix/configure: autoconf-2.13 + 2008-08-13 Don Porter * generic/tclFileName.c: Fix for errors handling -types {} diff --git a/unix/Makefile.in b/unix/Makefile.in index 23b6116..b7cabd4 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.27 2008/06/12 20:09:18 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.28 2008/08/13 23:07:27 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -175,7 +175,7 @@ NO_DEPRECATED_FLAGS = # Some versions of make, like SGI's, use the following variable to # determine which shell to use for executing commands: -SHELL = /bin/sh +SHELL = @MAKEFILE_SHELL@ # Tcl used to let the configure script choose which program to use # for installing, but there are just too many different versions of diff --git a/unix/configure.in b/unix/configure.in index d3e004c..478428c 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.106.2.44 2008/06/12 06:37:04 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.106.2.45 2008/08/13 23:07:27 das Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.13) @@ -544,6 +544,7 @@ if test $tcl_ok = yes; then test -z "$ac_cv_path_DTRACE" && tcl_ok=no fi AC_MSG_CHECKING([whether to enable DTrace support]) +MAKEFILE_SHELL='/bin/sh' if test $tcl_ok = yes; then AC_DEFINE(USE_DTRACE) DTRACE_SRC="\${DTRACE_SRC}" @@ -554,6 +555,7 @@ if test $tcl_ok = yes; then # Need to create an intermediate object file to ensure tclDTrace.o # gets included when linking against the static tcl library. STLIB_LD='stlib_ld () { /usr/ccs/bin/ld -r -o $${1%.a}.o "$${@:2}" && '"${STLIB_LD}"' $${1} $${1%.a}.o ; } && stlib_ld' + MAKEFILE_SHELL='/bin/bash' # Force use of Sun ar and ranlib, the GNU versions choke on # tclDTrace.o and the combined object file above. AR='/usr/ccs/bin/ar' @@ -755,6 +757,7 @@ AC_SUBST(TCL_HAS_LONGLONG) AC_SUBST(DTRACE_SRC) AC_SUBST(DTRACE_HDR) AC_SUBST(DTRACE_OBJ) +AC_SUBST(MAKEFILE_SHELL) AC_SUBST(BUILD_DLTEST) AC_SUBST(TCL_PACKAGE_PATH) -- cgit v0.12 From 0698d7c0e51549fa2bdba86a55087d9503107876 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 13 Aug 2008 23:13:49 +0000 Subject: autoconf-2.59 --- unix/configure | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/unix/configure b/unix/configure index ff03f1b..b21f416 100755 --- a/unix/configure +++ b/unix/configure @@ -308,7 +308,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS RANLIB ac_ct_RANLIB AR LIBOBJS TCL_LIBS DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT DTRACE TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_PATCH_LEVEL TCL_YEAR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_STUB_LIB_PATH TCL_INCLUDE_SPEC TCL_BUILD_STUB_LIB_SPEC TCL_BUILD_STUB_LIB_PATH TCL_SRC_DIR CFG_TCL_SHARED_LIB_SUFFIX CFG_TCL_UNSHARED_LIB_SUFFIX CFG_TCL_EXPORT_FILE_SUFFIX TCL_SHARED_BUILD LD_LIBRARY_PATH_VAR TCL_BUILD_LIB_SPEC TCL_NEEDS_EXP_FILE TCL_BUILD_EXP_FILE TCL_EXP_FILE TCL_LIB_VERSIONS_OK TCL_SHARED_LIB_SUFFIX TCL_UNSHARED_LIB_SUFFIX TCL_HAS_LONGLONG INSTALL_TZDATA DTRACE_SRC DTRACE_HDR DTRACE_OBJ BUILD_DLTEST TCL_PACKAGE_PATH TCL_MODULE_PATH TCL_LIBRARY PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_APP_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML EXTRA_TCLSH_LIBS DLTEST_LD DLTEST_SUFFIX' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS RANLIB ac_ct_RANLIB AR LIBOBJS TCL_LIBS DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT DTRACE TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_PATCH_LEVEL TCL_YEAR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_STUB_LIB_PATH TCL_INCLUDE_SPEC TCL_BUILD_STUB_LIB_SPEC TCL_BUILD_STUB_LIB_PATH TCL_SRC_DIR CFG_TCL_SHARED_LIB_SUFFIX CFG_TCL_UNSHARED_LIB_SUFFIX CFG_TCL_EXPORT_FILE_SUFFIX TCL_SHARED_BUILD LD_LIBRARY_PATH_VAR TCL_BUILD_LIB_SPEC TCL_NEEDS_EXP_FILE TCL_BUILD_EXP_FILE TCL_EXP_FILE TCL_LIB_VERSIONS_OK TCL_SHARED_LIB_SUFFIX TCL_UNSHARED_LIB_SUFFIX TCL_HAS_LONGLONG INSTALL_TZDATA DTRACE_SRC DTRACE_HDR DTRACE_OBJ MAKEFILE_SHELL BUILD_DLTEST TCL_PACKAGE_PATH TCL_MODULE_PATH TCL_LIBRARY PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_APP_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML EXTRA_TCLSH_LIBS DLTEST_LD DLTEST_SUFFIX' ac_subst_files='' # Initialize some variables set by options. @@ -18616,6 +18616,7 @@ fi fi echo "$as_me:$LINENO: checking whether to enable DTrace support" >&5 echo $ECHO_N "checking whether to enable DTrace support... $ECHO_C" >&6 +MAKEFILE_SHELL='/bin/sh' if test $tcl_ok = yes; then cat >>confdefs.h <<\_ACEOF @@ -18630,6 +18631,7 @@ _ACEOF # Need to create an intermediate object file to ensure tclDTrace.o # gets included when linking against the static tcl library. STLIB_LD='stlib_ld () { /usr/ccs/bin/ld -r -o $${1%.a}.o "$${@:2}" && '"${STLIB_LD}"' $${1} $${1%.a}.o ; } && stlib_ld' + MAKEFILE_SHELL='/bin/bash' # Force use of Sun ar and ranlib, the GNU versions choke on # tclDTrace.o and the combined object file above. AR='/usr/ccs/bin/ar' @@ -18959,6 +18961,7 @@ TCL_SHARED_BUILD=${SHARED_BUILD} + ac_config_files="$ac_config_files Makefile:../unix/Makefile.in dltest/Makefile:../unix/dltest/Makefile.in tclConfig.sh:../unix/tclConfig.sh.in" cat >confcache <<\_ACEOF @@ -19672,6 +19675,7 @@ s,@INSTALL_TZDATA@,$INSTALL_TZDATA,;t t s,@DTRACE_SRC@,$DTRACE_SRC,;t t s,@DTRACE_HDR@,$DTRACE_HDR,;t t s,@DTRACE_OBJ@,$DTRACE_OBJ,;t t +s,@MAKEFILE_SHELL@,$MAKEFILE_SHELL,;t t s,@BUILD_DLTEST@,$BUILD_DLTEST,;t t s,@TCL_PACKAGE_PATH@,$TCL_PACKAGE_PATH,;t t s,@TCL_MODULE_PATH@,$TCL_MODULE_PATH,;t t -- cgit v0.12 From 1fa87fa862bd33216bb805df67139629fd2e915e Mon Sep 17 00:00:00 2001 From: das Date: Wed, 13 Aug 2008 23:13:54 +0000 Subject: autoconf-2.13 --- unix/configure | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/unix/configure b/unix/configure index e911c5a..abc4554 100755 --- a/unix/configure +++ b/unix/configure @@ -9138,6 +9138,7 @@ fi fi echo $ac_n "checking whether to enable DTrace support""... $ac_c" 1>&6 echo "configure:9141: checking whether to enable DTrace support" >&5 +MAKEFILE_SHELL='/bin/sh' if test $tcl_ok = yes; then cat >> confdefs.h <<\EOF #define USE_DTRACE 1 @@ -9151,6 +9152,7 @@ EOF # Need to create an intermediate object file to ensure tclDTrace.o # gets included when linking against the static tcl library. STLIB_LD='stlib_ld () { /usr/ccs/bin/ld -r -o $${1%.a}.o "$${@:2}" && '"${STLIB_LD}"' $${1} $${1%.a}.o ; } && stlib_ld' + MAKEFILE_SHELL='/bin/bash' # Force use of Sun ar and ranlib, the GNU versions choke on # tclDTrace.o and the combined object file above. AR='/usr/ccs/bin/ar' @@ -9189,7 +9191,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9193: checking how to package libraries" >&5 +echo "configure:9195: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -9398,6 +9400,7 @@ TCL_SHARED_BUILD=${SHARED_BUILD} + CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS="" @@ -9613,6 +9616,7 @@ s%@TCL_HAS_LONGLONG@%$TCL_HAS_LONGLONG%g s%@DTRACE_SRC@%$DTRACE_SRC%g s%@DTRACE_HDR@%$DTRACE_HDR%g s%@DTRACE_OBJ@%$DTRACE_OBJ%g +s%@MAKEFILE_SHELL@%$MAKEFILE_SHELL%g s%@BUILD_DLTEST@%$BUILD_DLTEST%g s%@TCL_PACKAGE_PATH@%$TCL_PACKAGE_PATH%g s%@TCL_LIBRARY@%$TCL_LIBRARY%g -- cgit v0.12 From 21ea2229e15d1638d8ee1aa4717bc0b5b32479ad Mon Sep 17 00:00:00 2001 From: das Date: Thu, 14 Aug 2008 00:08:34 +0000 Subject: * tests/fCmd.test (fCmd-6.23): made result matching robust when test workdir and /tmp are not on same FS. --- ChangeLog | 3 +++ tests/fCmd.test | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d9773e0..2718e61 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-08-14 Daniel Steffen + * tests/fCmd.test (fCmd-6.23): made result matching robust when test + workdir and /tmp are not on same FS. + * unix/Makefile.in: ensure Makefile shell is /bin/bash for * unix/configure.in (SunOS): DTrace-enabled build on Solaris. (followup to 2008-06-12) [Bug 2016584] diff --git a/tests/fCmd.test b/tests/fCmd.test index ececb2e..a1f214d 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.60 2008/03/28 11:18:48 dkf Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.60.2.1 2008/08/14 00:08:34 das Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -576,7 +576,7 @@ test fCmd-6.23 {CopyRenameOneFile: TclpCopyDirectory failed} -setup { file rename td1 /tmp } -returnCodes error -cleanup { file attributes td1 -permissions 0755 -} -result {error renaming "td1": permission denied} +} -match regexp -result {^error renaming "td1"( to "/tmp/td1")?: permission denied$} test fCmd-6.24 {CopyRenameOneFile: error uses original name} -setup { cleanup } -constraints {unix notRoot} -body { -- cgit v0.12 From 749f2802fc8376dc768087cdec029dc3b9a7dc49 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 14 Aug 2008 00:11:10 +0000 Subject: * tests/msgcat.test: fix for ::tcl::mac::locale with @modifier (HEAD backport 2008-06-01). --- ChangeLog | 3 +++ tests/msgcat.test | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2718e61..3fffa4f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-08-14 Daniel Steffen + * tests/msgcat.test: fix for ::tcl::mac::locale with + @modifier (HEAD backport 2008-06-01). + * tests/fCmd.test (fCmd-6.23): made result matching robust when test workdir and /tmp are not on same FS. diff --git a/tests/msgcat.test b/tests/msgcat.test index 6152097..5cda47b 100644 --- a/tests/msgcat.test +++ b/tests/msgcat.test @@ -12,7 +12,7 @@ # Note that after running these tests, entries will be left behind in the # message catalogs for locales foo, foo_BAR, and foo_BAR_baz. # -# RCS: @(#) $Id: msgcat.test,v 1.20 2006/09/11 15:58:01 andreas_kupries Exp $ +# RCS: @(#) $Id: msgcat.test,v 1.20.8.1 2008/08/14 00:11:11 das Exp $ package require Tcl 8.2 if {[catch {package require tcltest 2}]} { @@ -55,7 +55,8 @@ namespace eval ::msgcat::test { set result [string tolower [lindex $setVars 0]] if {[string length $result] == 0} { if {[info exists ::tcl::mac::locale]} { - set result [string tolower $::tcl::mac::locale] + set result [string tolower \ + [msgcat::ConvertLocale $::tcl::mac::locale]] } else { set result c } -- cgit v0.12 From af494a7fa60b807ea5ea6c39c2cfe0da1c846eb8 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 14 Aug 2008 02:09:55 +0000 Subject: * generic/tclCmdIL.c (TclInfoFrame): check fPtr->line before dereferencing as line info may not exists when TclInfoFrame() is called from a DTrace probe. --- generic/tclCmdIL.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index bbddc63..e1267a9 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.3 2008/07/23 20:47:31 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.4 2008/08/14 02:09:55 das Exp $ */ #include "tclInt.h" @@ -1202,7 +1202,9 @@ TclInfoFrame( */ ADD_PAIR("type", Tcl_NewStringObj(typeString[fPtr->type], -1)); - ADD_PAIR("line", Tcl_NewIntObj(fPtr->line[0])); + if (fPtr->line) { + ADD_PAIR("line", Tcl_NewIntObj(fPtr->line[0])); + } if (fPtr->type == TCL_LOCATION_SOURCE) { ADD_PAIR("file", fPtr->data.eval.path); -- cgit v0.12 From d2a98c066035c60995e044906c3619b7c5293012 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 14 Aug 2008 02:12:05 +0000 Subject: * generic/tclCompile.h: add support for debug logging of DTrace * generic/tclBasic.c: 'proc', 'cmd' and 'inst' probes (does _not_ require a platform with DTrace). --- ChangeLog | 9 ++++ generic/tclBasic.c | 5 ++- generic/tclCompile.h | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 135 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3fffa4f..ccaedf9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2008-08-14 Daniel Steffen + * generic/tclCompile.h: add support for debug logging of DTrace + * generic/tclBasic.c: 'proc', 'cmd' and 'inst' probes (does + _not_ require a platform with DTrace). + + * generic/tclCmdIL.c (TclInfoFrame): check fPtr->line before + dereferencing as line info may + not exists when TclInfoFrame() + is called from a DTrace probe. + * tests/msgcat.test: fix for ::tcl::mac::locale with @modifier (HEAD backport 2008-06-01). diff --git a/generic/tclBasic.c b/generic/tclBasic.c index fcdd41d..9a159be 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.8 2008/07/30 20:59:16 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.9 2008/08/14 02:12:06 das Exp $ */ #include "tclInt.h" @@ -6879,6 +6879,9 @@ TclDTraceInfo( } } } + +TCL_DTRACE_DEBUG_LOG(); + #endif /* USE_DTRACE */ /* diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 777fd3e..de25b1b 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.90.2.3 2008/07/22 22:26:58 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.90.2.4 2008/08/14 02:12:08 das Exp $ */ #ifndef _TCLCOMPILATION @@ -1217,11 +1217,32 @@ MODULE_SCOPE int TclWordKnownAtCompileTime(Tcl_Token *tokenPtr, * DTrace probe macros (NOPs if DTrace support is not enabled). */ +/* + * Define the following macros to enable debug logging of the DTrace proc, + * cmd, and inst probes. Note that this does _not_ require a platform with + * DTrace, it simply logs all probe output to /tmp/tclDTraceDebug-[pid].log. + * + * If the second macro is defined, logging to file starts immediately, + * otherwise only after the first call to [tcl::dtrace]. Note that the debug + * probe data is always computed, even when it is not logged to file. + * + * Defining the third macro enables debug logging of inst probes (disabled + * by default due to the significant performance impact). + */ + +/* +#define TCL_DTRACE_DEBUG 1 +#define TCL_DTRACE_DEBUG_LOG_ENABLED 1 +#define TCL_DTRACE_DEBUG_INST_PROBES 1 +*/ + +#if !(defined(TCL_DTRACE_DEBUG) && defined(__GNUC__)) + #ifdef USE_DTRACE #include "tclDTrace.h" -#if defined(__GNUC__ ) && __GNUC__ > 2 +#if defined(__GNUC__) && __GNUC__ > 2 /* Use gcc branch prediction hint to minimize cost of DTrace ENABLED checks. */ #define unlikely(x) (__builtin_expect((x), 0)) #else @@ -1263,6 +1284,8 @@ MODULE_SCOPE int TclWordKnownAtCompileTime(Tcl_Token *tokenPtr, #define TCL_DTRACE_TCL_PROBE(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ TCL_TCL_PROBE(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) +#define TCL_DTRACE_DEBUG_LOG() + MODULE_SCOPE void TclDTraceInfo(Tcl_Obj *info, char **args, int *argsi); #else /* USE_DTRACE */ @@ -1301,6 +1324,103 @@ MODULE_SCOPE void TclDTraceInfo(Tcl_Obj *info, char **args, int *argsi); #endif /* USE_DTRACE */ +#else /* TCL_DTRACE_DEBUG */ + +#define USE_DTRACE 1 + +#if !defined(TCL_DTRACE_DEBUG_LOG_ENABLED) || !(TCL_DTRACE_DEBUG_LOG_ENABLED) +#undef TCL_DTRACE_DEBUG_LOG_ENABLED +#define TCL_DTRACE_DEBUG_LOG_ENABLED 0 +#endif + +#if !defined(TCL_DTRACE_DEBUG_INST_PROBES) || !(TCL_DTRACE_DEBUG_INST_PROBES) +#undef TCL_DTRACE_DEBUG_INST_PROBES +#define TCL_DTRACE_DEBUG_INST_PROBES 0 +#endif +OG_ENABLED 0 +#endif + + +MODULE_SCOPE int tclDTraceDebugEnabled, tclDTraceDebugIndent; +MODULE_SCOPE FILE *tclDTraceDebugLog; +MODULE_SCOPE void TclDTraceOpenDebugLog(void); +MODULE_SCOPE void TclDTraceInfo(Tcl_Obj *info, char **args, int *argsi); + +#define TCL_DTRACE_DEBUG_LOG() \ + int tclDTraceDebugEnabled = TCL_DTRACE_DEBUG_LOG_ENABLED;\ + int tclDTraceDebugIndent = 0; \ + FILE *tclDTraceDebugLog = NULL; \ + void TclDTraceOpenDebugLog(void) { char n[35]; \ + sprintf(n, "/tmp/tclDTraceDebug-%lu.log", (unsigned long) getpid()); \ + tclDTraceDebugLog = fopen(n, "a"); } \ + +#define TclDTraceDbgMsg(p, m, ...) do { if (tclDTraceDebugEnabled) { \ + int _l, _t = 0; if (!tclDTraceDebugLog) { TclDTraceOpenDebugLog(); } \ + fprintf(tclDTraceDebugLog, "%.12s:%.4d:%n", strrchr(__FILE__, '/') + \ + 1, __LINE__, &_l); _t += _l; \ + fprintf(tclDTraceDebugLog, " %.*s():%n", (_t < 18 ? 18 - _t : 0) + \ + 18, __func__, &_l); _t += _l; \ + fprintf(tclDTraceDebugLog, "%*s" p "%n", (_t < 40 ? 40 - _t : 0) + \ + 2 * tclDTraceDebugIndent, "", &_l); _t += _l; \ + fprintf(tclDTraceDebugLog, "%*s" m "\n", (_t < 64 ? 64 - _t : 1), "", \ + ##__VA_ARGS__); fflush(tclDTraceDebugLog); \ + } } while (0) + +#define TCL_DTRACE_PROC_ENTRY_ENABLED() 1 +#define TCL_DTRACE_PROC_RETURN_ENABLED() 1 +#define TCL_DTRACE_PROC_RESULT_ENABLED() 1 +#define TCL_DTRACE_PROC_ARGS_ENABLED() 1 +#define TCL_DTRACE_PROC_INFO_ENABLED() 1 +#define TCL_DTRACE_PROC_ENTRY(a0, a1, a2) \ + tclDTraceDebugIndent++; \ + TclDTraceDbgMsg("-> proc-entry", "%s %d %p", a0, a1, a2) +#define TCL_DTRACE_PROC_RETURN(a0, a1) \ + TclDTraceDbgMsg("<- proc-return", "%s %d", a0, a1); \ + tclDTraceDebugIndent-- +#define TCL_DTRACE_PROC_RESULT(a0, a1, a2, a3) \ + TclDTraceDbgMsg(" | proc-result", "%s %d %s %p", a0, a1, a2, a3) +#define TCL_DTRACE_PROC_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + TclDTraceDbgMsg(" | proc-args", "%s %s %s %s %s %s %s %s %s %s", a0, \ + a1, a2, a3, a4, a5, a6, a7, a8, a9) +#define TCL_DTRACE_PROC_INFO(a0, a1, a2, a3, a4, a5) \ + TclDTraceDbgMsg(" | proc-info", "%s %s %s %s %d %d", a0, a1, \ + a2, a3, a4, a5) + +#define TCL_DTRACE_CMD_ENTRY_ENABLED() 1 +#define TCL_DTRACE_CMD_RETURN_ENABLED() 1 +#define TCL_DTRACE_CMD_RESULT_ENABLED() 1 +#define TCL_DTRACE_CMD_ARGS_ENABLED() 1 +#define TCL_DTRACE_CMD_INFO_ENABLED() 1 +#define TCL_DTRACE_CMD_ENTRY(a0, a1, a2) \ + tclDTraceDebugIndent++; \ + TclDTraceDbgMsg("-> cmd-entry", "%s %d %p", a0, a1, a2) +#define TCL_DTRACE_CMD_RETURN(a0, a1) \ + TclDTraceDbgMsg("<- cmd-return", "%s %d", a0, a1); \ + tclDTraceDebugIndent-- +#define TCL_DTRACE_CMD_RESULT(a0, a1, a2, a3) \ + TclDTraceDbgMsg(" | cmd-result", "%s %d %s %p", a0, a1, a2, a3) +#define TCL_DTRACE_CMD_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + TclDTraceDbgMsg(" | cmd-args", "%s %s %s %s %s %s %s %s %s %s", a0, \ + a1, a2, a3, a4, a5, a6, a7, a8, a9) +#define TCL_DTRACE_CMD_INFO(a0, a1, a2, a3, a4, a5) \ + TclDTraceDbgMsg(" | cmd-info", "%s %s %s %s %d %d", a0, a1, \ + a2, a3, a4, a5) + +#define TCL_DTRACE_INST_START_ENABLED() TCL_DTRACE_DEBUG_INST_PROBES +#define TCL_DTRACE_INST_DONE_ENABLED() TCL_DTRACE_DEBUG_INST_PROBES +#define TCL_DTRACE_INST_START(a0, a1, a2) \ + TclDTraceDbgMsg(" | inst-start", "%s %d %p", a0, a1, a2) +#define TCL_DTRACE_INST_DONE(a0, a1, a2) \ + TclDTraceDbgMsg(" | inst-end", "%s %d %p", a0, a1, a2) + +#define TCL_DTRACE_TCL_PROBE_ENABLED() 1 +#define TCL_DTRACE_TCL_PROBE(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + tclDTraceDebugEnabled = 1; \ + TclDTraceDbgMsg(" | tcl-probe", "%s %s %s %s %s %s %s %s %s %s", a0, \ + a1, a2, a3, a4, a5, a6, a7, a8, a9) + +#endif /* TCL_DTRACE_DEBUG */ + #endif /* _TCLCOMPILATION */ /* -- cgit v0.12 From 978f2d06b37ac3302422812bf8cb0ad7eb972f97 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 14 Aug 2008 02:12:23 +0000 Subject: * generic/tclCompile.h: add support for debug logging of DTrace * generic/tclBasic.c: 'proc', 'cmd' and 'inst' probes (does _not_ require a platform with DTrace). --- ChangeLog | 4 ++ generic/tclBasic.c | 5 ++- generic/tclCompile.h | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 119 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3cb3c4a..ea4379b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2008-08-14 Daniel Steffen + * generic/tclCompile.h: add support for debug logging of DTrace + * generic/tclBasic.c: 'proc', 'cmd' and 'inst' probes (does + _not_ require a platform with DTrace). + * unix/Makefile.in: ensure Makefile shell is /bin/bash for * unix/configure.in (SunOS): DTrace-enabled build on Solaris. (followup to 2008-06-12) [Bug 2016584] diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 4ce4590..dbdcd7c 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.33 2008/07/28 20:01:07 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.34 2008/08/14 02:12:25 das Exp $ */ #include "tclInt.h" @@ -6489,6 +6489,9 @@ DTraceObjCmd( } return TCL_OK; } + +TCL_DTRACE_DEBUG_LOG(); + #endif /* USE_DTRACE */ /* diff --git a/generic/tclCompile.h b/generic/tclCompile.h index ce82f8c..69b0c82 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.33.2.5 2008/07/22 22:30:05 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.33.2.6 2008/08/14 02:12:27 das Exp $ */ #ifndef _TCLCOMPILATION @@ -1090,11 +1090,32 @@ EXTERN int TclCompileVariableCmd _ANSI_ARGS_(( * DTrace probe macros (NOPs if DTrace support is not enabled). */ +/* + * Define the following macros to enable debug logging of the DTrace proc, + * cmd, and inst probes. Note that this does _not_ require a platform with + * DTrace, it simply logs all probe output to /tmp/tclDTraceDebug-[pid].log. + * + * If the second macro is defined, logging to file starts immediately, + * otherwise only after the first call to [tcl::dtrace]. Note that the debug + * probe data is always computed, even when it is not logged to file. + * + * Defining the third macro enables debug logging of inst probes (disabled + * by default due to the significant performance impact). + */ + +/* +#define TCL_DTRACE_DEBUG 1 +#define TCL_DTRACE_DEBUG_LOG_ENABLED 1 +#define TCL_DTRACE_DEBUG_INST_PROBES 1 +*/ + +#if !(defined(TCL_DTRACE_DEBUG) && defined(__GNUC__)) + #ifdef USE_DTRACE #include "tclDTrace.h" -#if defined(__GNUC__ ) && __GNUC__ > 2 +#if defined(__GNUC__) && __GNUC__ > 2 /* Use gcc branch prediction hint to minimize cost of DTrace ENABLED checks. */ #define unlikely(x) (__builtin_expect((x), 0)) #else @@ -1130,6 +1151,8 @@ EXTERN int TclCompileVariableCmd _ANSI_ARGS_(( #define TCL_DTRACE_TCL_PROBE(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ TCL_TCL_PROBE(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) +#define TCL_DTRACE_DEBUG_LOG() + #else /* USE_DTRACE */ #define TCL_DTRACE_PROC_ENTRY_ENABLED() 0 @@ -1160,6 +1183,92 @@ EXTERN int TclCompileVariableCmd _ANSI_ARGS_(( #endif /* USE_DTRACE */ +#else /* TCL_DTRACE_DEBUG */ + +#define USE_DTRACE 1 + +#if !defined(TCL_DTRACE_DEBUG_LOG_ENABLED) || !(TCL_DTRACE_DEBUG_LOG_ENABLED) +#undef TCL_DTRACE_DEBUG_LOG_ENABLED +#define TCL_DTRACE_DEBUG_LOG_ENABLED 0 +#endif + +#if !defined(TCL_DTRACE_DEBUG_INST_PROBES) || !(TCL_DTRACE_DEBUG_INST_PROBES) +#undef TCL_DTRACE_DEBUG_INST_PROBES +#define TCL_DTRACE_DEBUG_INST_PROBES 0 +#endif + +MODULE_SCOPE int tclDTraceDebugEnabled, tclDTraceDebugIndent; +MODULE_SCOPE FILE *tclDTraceDebugLog; +MODULE_SCOPE void TclDTraceOpenDebugLog(void); +MODULE_SCOPE void TclDTraceInfo(Tcl_Obj *info, char **args, int *argsi); + +#define TCL_DTRACE_DEBUG_LOG() \ + int tclDTraceDebugEnabled = TCL_DTRACE_DEBUG_LOG_ENABLED;\ + int tclDTraceDebugIndent = 0; \ + FILE *tclDTraceDebugLog = NULL; \ + void TclDTraceOpenDebugLog(void) { char n[35]; \ + sprintf(n, "/tmp/tclDTraceDebug-%lu.log", (unsigned long) getpid()); \ + tclDTraceDebugLog = fopen(n, "a"); } \ + +#define TclDTraceDbgMsg(p, m, ...) do { if (tclDTraceDebugEnabled) { \ + int _l, _t = 0; if (!tclDTraceDebugLog) { TclDTraceOpenDebugLog(); } \ + fprintf(tclDTraceDebugLog, "%.12s:%.4d:%n", strrchr(__FILE__, '/') + \ + 1, __LINE__, &_l); _t += _l; \ + fprintf(tclDTraceDebugLog, " %.*s():%n", (_t < 18 ? 18 - _t : 0) + \ + 18, __func__, &_l); _t += _l; \ + fprintf(tclDTraceDebugLog, "%*s" p "%n", (_t < 40 ? 40 - _t : 0) + \ + 2 * tclDTraceDebugIndent, "", &_l); _t += _l; \ + fprintf(tclDTraceDebugLog, "%*s" m "\n", (_t < 64 ? 64 - _t : 1), "", \ + ##__VA_ARGS__); fflush(tclDTraceDebugLog); \ + } } while (0) + +#define TCL_DTRACE_PROC_ENTRY_ENABLED() 1 +#define TCL_DTRACE_PROC_RETURN_ENABLED() 1 +#define TCL_DTRACE_PROC_RESULT_ENABLED() 1 +#define TCL_DTRACE_PROC_ARGS_ENABLED() 1 +#define TCL_DTRACE_PROC_ENTRY(a0, a1, a2) \ + tclDTraceDebugIndent++; \ + TclDTraceDbgMsg("-> proc-entry", "%s %d %p", a0, a1, a2) +#define TCL_DTRACE_PROC_RETURN(a0, a1) \ + TclDTraceDbgMsg("<- proc-return", "%s %d", a0, a1); \ + tclDTraceDebugIndent-- +#define TCL_DTRACE_PROC_RESULT(a0, a1, a2, a3) \ + TclDTraceDbgMsg(" | proc-result", "%s %d %s %p", a0, a1, a2, a3) +#define TCL_DTRACE_PROC_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + TclDTraceDbgMsg(" | proc-args", "%s %s %s %s %s %s %s %s %s %s", a0, \ + a1, a2, a3, a4, a5, a6, a7, a8, a9) + +#define TCL_DTRACE_CMD_ENTRY_ENABLED() 1 +#define TCL_DTRACE_CMD_RETURN_ENABLED() 1 +#define TCL_DTRACE_CMD_RESULT_ENABLED() 1 +#define TCL_DTRACE_CMD_ARGS_ENABLED() 1 +#define TCL_DTRACE_CMD_ENTRY(a0, a1, a2) \ + tclDTraceDebugIndent++; \ + TclDTraceDbgMsg("-> cmd-entry", "%s %d %p", a0, a1, a2) +#define TCL_DTRACE_CMD_RETURN(a0, a1) \ + TclDTraceDbgMsg("<- cmd-return", "%s %d", a0, a1); \ + tclDTraceDebugIndent-- +#define TCL_DTRACE_CMD_RESULT(a0, a1, a2, a3) \ + TclDTraceDbgMsg(" | cmd-result", "%s %d %s %p", a0, a1, a2, a3) +#define TCL_DTRACE_CMD_ARGS(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + TclDTraceDbgMsg(" | cmd-args", "%s %s %s %s %s %s %s %s %s %s", a0, \ + a1, a2, a3, a4, a5, a6, a7, a8, a9) + +#define TCL_DTRACE_INST_START_ENABLED() TCL_DTRACE_DEBUG_INST_PROBES +#define TCL_DTRACE_INST_DONE_ENABLED() TCL_DTRACE_DEBUG_INST_PROBES +#define TCL_DTRACE_INST_START(a0, a1, a2) \ + TclDTraceDbgMsg(" | inst-start", "%s %d %p", a0, a1, a2) +#define TCL_DTRACE_INST_DONE(a0, a1, a2) \ + TclDTraceDbgMsg(" | inst-end", "%s %d %p", a0, a1, a2) + +#define TCL_DTRACE_TCL_PROBE_ENABLED() 1 +#define TCL_DTRACE_TCL_PROBE(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + tclDTraceDebugEnabled = 1; \ + TclDTraceDbgMsg(" | tcl-probe", "%s %s %s %s %s %s %s %s %s %s", a0, \ + a1, a2, a3, a4, a5, a6, a7, a8, a9) + +#endif /* TCL_DTRACE_DEBUG */ + # undef TCL_STORAGE_CLASS # define TCL_STORAGE_CLASS DLLIMPORT -- cgit v0.12 From 74a9c30730098d06b41f2da50910e864854e06de Mon Sep 17 00:00:00 2001 From: das Date: Thu, 14 Aug 2008 02:22:15 +0000 Subject: typo --- generic/tclCompile.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/generic/tclCompile.h b/generic/tclCompile.h index de25b1b..1e32569 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.90.2.4 2008/08/14 02:12:08 das Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.90.2.5 2008/08/14 02:22:15 das Exp $ */ #ifndef _TCLCOMPILATION @@ -1337,9 +1337,6 @@ MODULE_SCOPE void TclDTraceInfo(Tcl_Obj *info, char **args, int *argsi); #undef TCL_DTRACE_DEBUG_INST_PROBES #define TCL_DTRACE_DEBUG_INST_PROBES 0 #endif -OG_ENABLED 0 -#endif - MODULE_SCOPE int tclDTraceDebugEnabled, tclDTraceDebugIndent; MODULE_SCOPE FILE *tclDTraceDebugLog; -- cgit v0.12 From 2414df4f990db1865ef1012ceb0cb172b728fa60 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 14 Aug 2008 13:07:55 +0000 Subject: * tests/fileName.test: Revise new tests for portability to case insensitive filesystems. --- ChangeLog | 5 +++++ tests/fileName.test | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ea4379b..3bb3e23 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-08-14 Don Porter + + * tests/fileName.test: Revise new tests for portability to case + insensitive filesystems. + 2008-08-14 Daniel Steffen * generic/tclCompile.h: add support for debug logging of DTrace diff --git a/tests/fileName.test b/tests/fileName.test index 4573fbe..138f5c6 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.8 2008/08/13 17:59:08 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.9 2008/08/14 13:07:58 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -2012,7 +2012,7 @@ test fileName-20.1 {Bug 1750300} -setup { set d [makeDirectory foo] makeFile {} TAGS $d } -body { - llength [glob -nocomplain -directory $d -- TAGS tags Tags] + llength [glob -nocomplain -directory $d -- TAGS one two] } -cleanup { removeFile TAGS $d removeDirectory foo @@ -2021,7 +2021,7 @@ test fileName-20.2 {Bug 1750300} -setup { set d [makeDirectory foo] makeFile {} TAGS $d } -body { - llength [glob -nocomplain -directory $d -types {} -- TAGS tags Tags] + llength [glob -nocomplain -directory $d -types {} -- TAGS one two] } -cleanup { removeFile TAGS $d removeDirectory foo @@ -2039,7 +2039,7 @@ test fileName-20.4 {Bug 1750300} -setup { set d [makeDirectory foo] makeFile {} TAGS $d } -body { - llength [glob -nocomplain -directory $d -types {} -- URGENT Urgent] + llength [glob -nocomplain -directory $d -types {} -- URGENT Urkle] } -cleanup { removeFile TAGS $d removeDirectory foo -- cgit v0.12 From 48e3fd23cc11fc9c33350e98a2be6fe0f9146289 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 14 Aug 2008 13:08:42 +0000 Subject: * tests/fileName.test: Revise new tests for portability to case insensitive filesystems. --- ChangeLog | 5 +++++ tests/fileName.test | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ccaedf9..28258df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-08-14 Don Porter + + * tests/fileName.test: Revise new tests for portability to case + insensitive filesystems. + 2008-08-14 Daniel Steffen * generic/tclCompile.h: add support for debug logging of DTrace diff --git a/tests/fileName.test b/tests/fileName.test index e603c5a..ebad33b 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51.8.1 2008/08/13 18:12:56 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.2 2008/08/14 13:08:45 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1538,7 +1538,7 @@ test fileName-20.1 {Bug 1750300} -setup { set d [makeDirectory foo] makeFile {} TAGS $d } -body { - llength [glob -nocomplain -directory $d -- TAGS tags Tags] + llength [glob -nocomplain -directory $d -- TAGS one two] } -cleanup { removeFile TAGS $d removeDirectory foo @@ -1547,7 +1547,7 @@ test fileName-20.2 {Bug 1750300} -setup { set d [makeDirectory foo] makeFile {} TAGS $d } -body { - llength [glob -nocomplain -directory $d -types {} -- TAGS tags Tags] + llength [glob -nocomplain -directory $d -types {} -- TAGS one two] } -cleanup { removeFile TAGS $d removeDirectory foo @@ -1565,7 +1565,7 @@ test fileName-20.4 {Bug 1750300} -setup { set d [makeDirectory foo] makeFile {} TAGS $d } -body { - llength [glob -nocomplain -directory $d -types {} -- URGENT Urgent] + llength [glob -nocomplain -directory $d -types {} -- URGENT Urkle] } -cleanup { removeFile TAGS $d removeDirectory foo -- cgit v0.12 From c830752ac8861db9a7f418c259b8d07025282a9b Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 14 Aug 2008 17:20:17 +0000 Subject: move tag --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 28258df..704440a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-08-14 Don Porter + *** 8.5.4 TAGGED FOR RELEASE *** + * tests/fileName.test: Revise new tests for portability to case insensitive filesystems. @@ -37,8 +39,6 @@ 2008-08-12 Don Porter - *** 8.5.4 TAGGED FOR RELEASE *** - * changes: Update for 8.5.4 release. 2008-08-11 Pat Thoyts -- cgit v0.12 From d602e66103d1f659836379fa3669ad97e3d2f310 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sun, 17 Aug 2008 14:12:31 +0000 Subject: * generic/tclTest.c (TestconcatobjCmd): * generic/tclUtil.c (Tcl_ConcatObj): * tests/util.test (util-4.7): fix [Bug 1447328]; the original "fix" turned Tcl_ConcatObj() into a hairy monster. This was exposed by [Bug 2055782]. Additionally, Tcl_ConcatObj could corrupt its input under certain conditions! *** NASTY BUG FIXED *** --- ChangeLog | 11 +++ generic/tclTest.c | 283 +++++++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclUtil.c | 8 +- tests/util.test | 7 +- 4 files changed, 301 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 704440a..52a2873 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-08-17 Miguel Sofer + + * generic/tclTest.c (TestconcatobjCmd): + * generic/tclUtil.c (Tcl_ConcatObj): + * tests/util.test (util-4.7): + fix [Bug 1447328]; the original "fix" turned Tcl_ConcatObj() into + a hairy monster. This was exposed by [Bug 2055782]. Additionally, + Tcl_ConcatObj could corrupt its input under certain conditions! + + *** NASTY BUG FIXED *** + 2008-08-14 Don Porter *** 8.5.4 TAGGED FOR RELEASE *** diff --git a/generic/tclTest.c b/generic/tclTest.c index 7f48903..82fa6ba 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.114 2008/03/14 16:32:52 rmax Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.114.2.1 2008/08/17 14:12:33 msofer Exp $ */ #define TCL_TEST @@ -240,6 +240,8 @@ static int TestcmdtokenCmd(ClientData dummy, Tcl_Interp *interp, int argc, const char **argv); static int TestcmdtraceCmd(ClientData dummy, Tcl_Interp *interp, int argc, const char **argv); +static int TestconcatobjCmd(ClientData dummy, + Tcl_Interp *interp, int argc, const char **argv); static int TestcreatecommandCmd(ClientData dummy, Tcl_Interp *interp, int argc, const char **argv); static int TestdcallCmd(ClientData dummy, @@ -597,6 +599,8 @@ Tcltest_Init( NULL); Tcl_CreateCommand(interp, "testcmdtrace", TestcmdtraceCmd, (ClientData) 0, NULL); + Tcl_CreateCommand(interp, "testconcatobj", TestconcatobjCmd, + (ClientData) 0, NULL); Tcl_CreateCommand(interp, "testcreatecommand", TestcreatecommandCmd, (ClientData) 0, NULL); Tcl_CreateCommand(interp, "testdcall", TestdcallCmd, (ClientData) 0, NULL); @@ -7062,6 +7066,283 @@ TestgetintCmd( } /* + *---------------------------------------------------------------------- + * + * TestconcatobjCmd -- + * + * This procedure implements the "testconcatobj" command. It is used + * to test that Tcl_ConcatObj does indeed return a fresh Tcl_Obj in all + * cases and thet it never corrupts its arguments. In other words, that + * [Bug 1447328] was fixed properly. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +TestconcatobjCmd( + ClientData dummy, /* Not used. */ + Tcl_Interp *interp, /* Current interpreter. */ + int argc, /* Number of arguments. */ + const char **argv) /* Argument strings. */ +{ + Tcl_Obj *list1Ptr, *list2Ptr, *emptyPtr, *concatPtr, *tmpPtr; + int result = TCL_OK, len; + Tcl_Obj *objv[3]; + + /* + * Set the start of the error message as obj result; it will be cleared at + * the end if no errors were found. + */ + + Tcl_SetObjResult(interp, + Tcl_NewStringObj("Tcl_ConcatObj is unsafe:", -1)); + + emptyPtr = Tcl_NewObj(); + + list1Ptr = Tcl_NewStringObj("foo bar sum", -1); + Tcl_ListObjLength(NULL, list1Ptr, &len); + TclInvalidateStringRep(list1Ptr); + + list2Ptr = Tcl_NewStringObj("eeny meeny", -1); + Tcl_ListObjLength(NULL, list2Ptr, &len); + TclInvalidateStringRep(list2Ptr); + + /* + * Verify that concat'ing a list obj with one or more empty strings does + * return a fresh Tcl_Obj (see also [Bug 2055782]). + */ + + tmpPtr = Tcl_DuplicateObj(list1Ptr); + + objv[0] = tmpPtr; + objv[1] = emptyPtr; + concatPtr = Tcl_ConcatObj(2, objv); + if (concatPtr->refCount != 0) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (a) concatObj does not have refCount 0", NULL); + } + if (concatPtr == tmpPtr) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (a) concatObj is not a new obj ", NULL); + switch (tmpPtr->refCount) { + case 0: + Tcl_AppendResult(interp, "(no new refCount)", NULL); + break; + case 1: + Tcl_AppendResult(interp, "(refCount added)", NULL); + break; + default: + Tcl_AppendResult(interp, "(more than one refCount added!)", NULL); + Tcl_Panic("extremely unsafe behaviour by Tcl_ConcatObj()"); + } + tmpPtr = Tcl_DuplicateObj(list1Ptr); + objv[0] = tmpPtr; + } + Tcl_DecrRefCount(concatPtr); + + Tcl_IncrRefCount(tmpPtr); + concatPtr = Tcl_ConcatObj(2, objv); + if (concatPtr->refCount != 0) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (b) concatObj does not have refCount 0", NULL); + } + if (concatPtr == tmpPtr) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (b) concatObj is not a new obj ", NULL); + switch (tmpPtr->refCount) { + case 0: + Tcl_AppendResult(interp, "(refCount removed?)", NULL); + Tcl_Panic("extremely unsafe behaviour by Tcl_ConcatObj()"); + break; + case 1: + Tcl_AppendResult(interp, "(no new refCount)", NULL); + break; + case 2: + Tcl_AppendResult(interp, "(refCount added)", NULL); + Tcl_DecrRefCount(tmpPtr); + break; + default: + Tcl_AppendResult(interp, "(more than one refCount added!)", NULL); + Tcl_Panic("extremely unsafe behaviour by Tcl_ConcatObj()"); + } + tmpPtr = Tcl_DuplicateObj(list1Ptr); + objv[0] = tmpPtr; + } + Tcl_DecrRefCount(concatPtr); + + + objv[0] = emptyPtr; + objv[1] = tmpPtr; + objv[2] = emptyPtr; + concatPtr = Tcl_ConcatObj(3, objv); + if (concatPtr->refCount != 0) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (c) concatObj does not have refCount 0", NULL); + } + if (concatPtr == tmpPtr) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (c) concatObj is not a new obj ", NULL); + switch (tmpPtr->refCount) { + case 0: + Tcl_AppendResult(interp, "(no new refCount)", NULL); + break; + case 1: + Tcl_AppendResult(interp, "(refCount added)", NULL); + break; + default: + Tcl_AppendResult(interp, "(more than one refCount added!)", NULL); + Tcl_Panic("extremely unsafe behaviour by Tcl_ConcatObj()"); + } + tmpPtr = Tcl_DuplicateObj(list1Ptr); + objv[1] = tmpPtr; + } + Tcl_DecrRefCount(concatPtr); + + Tcl_IncrRefCount(tmpPtr); + concatPtr = Tcl_ConcatObj(3, objv); + if (concatPtr->refCount != 0) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (d) concatObj does not have refCount 0", NULL); + } + if (concatPtr == tmpPtr) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (d) concatObj is not a new obj ", NULL); + switch (tmpPtr->refCount) { + case 0: + Tcl_AppendResult(interp, "(refCount removed?)", NULL); + Tcl_Panic("extremely unsafe behaviour by Tcl_ConcatObj()"); + break; + case 1: + Tcl_AppendResult(interp, "(no new refCount)", NULL); + break; + case 2: + Tcl_AppendResult(interp, "(refCount added)", NULL); + Tcl_DecrRefCount(tmpPtr); + break; + default: + Tcl_AppendResult(interp, "(more than one refCount added!)", NULL); + Tcl_Panic("extremely unsafe behaviour by Tcl_ConcatObj()"); + } + tmpPtr = Tcl_DuplicateObj(list1Ptr); + objv[1] = tmpPtr; + } + Tcl_DecrRefCount(concatPtr); + + /* + * Verify that an unshared list is not corrupted when concat'ing things to + * it. + */ + + objv[0] = tmpPtr; + objv[1] = list2Ptr; + concatPtr = Tcl_ConcatObj(2, objv); + if (concatPtr->refCount != 0) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (e) concatObj does not have refCount 0", NULL); + } + if (concatPtr == tmpPtr) { + int len; + + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (e) concatObj is not a new obj ", NULL); + + (void) Tcl_ListObjLength(NULL, concatPtr, &len); + switch (tmpPtr->refCount) { + case 3: + Tcl_AppendResult(interp, "(failed to concat)", NULL); + break; + default: + Tcl_AppendResult(interp, "(corrupted input!)", NULL); + } + if (Tcl_IsShared(tmpPtr)) { + Tcl_DecrRefCount(tmpPtr); + } + tmpPtr = Tcl_DuplicateObj(list1Ptr); + objv[0] = tmpPtr; + } + Tcl_DecrRefCount(concatPtr); + + objv[0] = tmpPtr; + objv[1] = list2Ptr; + Tcl_IncrRefCount(tmpPtr); + concatPtr = Tcl_ConcatObj(2, objv); + if (concatPtr->refCount != 0) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (f) concatObj does not have refCount 0", NULL); + } + if (concatPtr == tmpPtr) { + int len; + + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (f) concatObj is not a new obj ", NULL); + + (void) Tcl_ListObjLength(NULL, concatPtr, &len); + switch (tmpPtr->refCount) { + case 3: + Tcl_AppendResult(interp, "(failed to concat)", NULL); + break; + default: + Tcl_AppendResult(interp, "(corrupted input!)", NULL); + } + if (Tcl_IsShared(tmpPtr)) { + Tcl_DecrRefCount(tmpPtr); + } + tmpPtr = Tcl_DuplicateObj(list1Ptr); + objv[0] = tmpPtr; + } + Tcl_DecrRefCount(concatPtr); + + objv[0] = tmpPtr; + objv[1] = list2Ptr; + Tcl_IncrRefCount(tmpPtr); + Tcl_IncrRefCount(tmpPtr); + concatPtr = Tcl_ConcatObj(2, objv); + if (concatPtr->refCount != 0) { + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (g) concatObj does not have refCount 0", NULL); + } + if (concatPtr == tmpPtr) { + int len; + + result = TCL_ERROR; + Tcl_AppendResult(interp, "\n\t* (g) concatObj is not a new obj ", NULL); + + (void) Tcl_ListObjLength(NULL, concatPtr, &len); + switch (tmpPtr->refCount) { + case 3: + Tcl_AppendResult(interp, "(failed to concat)", NULL); + break; + default: + Tcl_AppendResult(interp, "(corrupted input!)", NULL); + } + Tcl_DecrRefCount(tmpPtr); + if (Tcl_IsShared(tmpPtr)) { + Tcl_DecrRefCount(tmpPtr); + } + tmpPtr = Tcl_DuplicateObj(list1Ptr); + objv[0] = tmpPtr; + } + Tcl_DecrRefCount(concatPtr); + + + Tcl_DecrRefCount(list1Ptr); + Tcl_DecrRefCount(list2Ptr); + Tcl_DecrRefCount(emptyPtr); + Tcl_DecrRefCount(tmpPtr); + + if (result == TCL_OK) { + Tcl_ResetResult(interp); + } + return result; +} + +/* * Local Variables: * mode: c * c-basic-offset: 4 diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 07fbc87..e2f01a4 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.97 2008/02/26 20:18:14 hobbs Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.97.2.1 2008/08/17 14:12:35 msofer Exp $ */ #include "tclInt.h" @@ -1197,11 +1197,7 @@ Tcl_ConcatObj( if (resPtr) { Tcl_ListObjReplace(NULL, resPtr, INT_MAX, 0, listc, listv); } else { - if (Tcl_IsShared(objPtr)) { - resPtr = TclListObjCopy(NULL, objPtr); - } else { - resPtr = objPtr; - } + resPtr = TclListObjCopy(NULL, objPtr); } } } diff --git a/tests/util.test b/tests/util.test index 8c1ef26..20a062f 100644 --- a/tests/util.test +++ b/tests/util.test @@ -7,7 +7,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: util.test,v 1.18 2006/03/21 11:12:29 dkf Exp $ +# RCS: @(#) $Id: util.test,v 1.18.8.1 2008/08/17 14:12:36 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -163,6 +163,11 @@ test util-4.6 {Tcl_ConcatObj - utf-8 sequence with "whitespace" char} { # Check for Bug #227512. If this violates C isspace, then it returns \xc3. concat \xe0 } \xe0 +test util-4.7 {Tcl_ConcatObj - refCount safety} { + # Check for Bug #1447328 (actually, bugs in its original "fix"). One of the + # symptoms was Bug #2055782. + testconcatobj +} {} proc Wrapper_Tcl_StringMatch {pattern string} { # Forces use of Tcl_StringMatch, not Tcl_UniCharCaseMatch -- cgit v0.12 From a7d5eb42a94f26a9380e19ee52f52bf62c92cf50 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 20 Aug 2008 11:45:32 +0000 Subject: * generic/tclTest.c (TestconcatobjCmd): fix use of internal-only TclInvalidateStringRep macro. [Bug 2057479] --- ChangeLog | 6 ++++++ generic/tclTest.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 52a2873..14f64f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-20 Daniel Steffen + + * generic/tclTest.c (TestconcatobjCmd): fix use of internal-only + TclInvalidateStringRep macro. + [Bug 2057479] + 2008-08-17 Miguel Sofer * generic/tclTest.c (TestconcatobjCmd): diff --git a/generic/tclTest.c b/generic/tclTest.c index 82fa6ba..b50f6af 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.114.2.1 2008/08/17 14:12:33 msofer Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.114.2.2 2008/08/20 11:45:34 das Exp $ */ #define TCL_TEST @@ -7107,11 +7107,17 @@ TestconcatobjCmd( list1Ptr = Tcl_NewStringObj("foo bar sum", -1); Tcl_ListObjLength(NULL, list1Ptr, &len); - TclInvalidateStringRep(list1Ptr); + if (list1Ptr->bytes != NULL) { + ckfree((char *) list1Ptr->bytes); + list1Ptr->bytes = NULL; + } list2Ptr = Tcl_NewStringObj("eeny meeny", -1); Tcl_ListObjLength(NULL, list2Ptr, &len); - TclInvalidateStringRep(list2Ptr); + if (list2Ptr->bytes != NULL) { + ckfree((char *) list2Ptr->bytes); + list2Ptr->bytes = NULL; + } /* * Verify that concat'ing a list obj with one or more empty strings does -- cgit v0.12 From 4ad1d554a92681b3d78876608ad0671c76098978 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 21 Aug 2008 23:19:02 +0000 Subject: * tests/regexp.test, tests/regexpComp.test: correct re2glob ***= * generic/tclUtil.c (TclReToGlob): translation from exact to anywhere-in-string match. [Bug 2065115] --- ChangeLog | 6 ++++++ generic/tclUtil.c | 7 +++---- tests/regexp.test | 27 ++++++++++++++++++++++++++- tests/regexpComp.test | 39 ++++++++++++++++++++++++++++++++++++++- 4 files changed, 73 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14f64f2..7504d60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-21 Jeff Hobbs + + * tests/regexp.test, tests/regexpComp.test: correct re2glob ***= + * generic/tclUtil.c (TclReToGlob): translation from exact + to anywhere-in-string match. [Bug 2065115] + 2008-08-20 Daniel Steffen * generic/tclTest.c (TestconcatobjCmd): fix use of internal-only diff --git a/generic/tclUtil.c b/generic/tclUtil.c index e2f01a4..9464cd5 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.97.2.1 2008/08/17 14:12:35 msofer Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.97.2.2 2008/08/21 23:19:05 hobbs Exp $ */ #include "tclInt.h" @@ -3278,10 +3278,9 @@ TclReToGlob( */ if ((reStrLen >= 4) && (memcmp("***=", reStr, 4) == 0)) { - if (exactPtr) { - *exactPtr = 1; - } + Tcl_DStringAppend(dsPtr, "*", 1); Tcl_DStringAppend(dsPtr, reStr + 4, reStrLen - 4); + Tcl_DStringAppend(dsPtr, "*", 1); return TCL_OK; } diff --git a/tests/regexp.test b/tests/regexp.test index 92b6c6a..295d83c 100644 --- a/tests/regexp.test +++ b/tests/regexp.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: regexp.test,v 1.30 2007/12/23 21:29:42 hobbs Exp $ +# RCS: @(#) $Id: regexp.test,v 1.30.2.1 2008/08/21 23:19:06 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -44,6 +44,31 @@ test regexp-1.7 {regexp utf compliance} { list [string compare $foo $bar] [regexp 4 $bar] } {0 0} +test regexp-1.8 {regexp ***= metasyntax} { + regexp -- "***=o" "aeiou" +} 1 +test regexp-1.9 {regexp ***= metasyntax} { + set string "aeiou" + regexp -- "***=o" $string +} 1 +test regexp-1.10 {regexp ***= metasyntax} { + set string "aeiou" + set re "***=o" + regexp -- $re $string +} 1 +test regexp-1.11 {regexp ***= metasyntax} { + regexp -- "***=y" "aeiou" +} 0 +test regexp-1.12 {regexp ***= metasyntax} { + set string "aeiou" + regexp -- "***=y" $string +} 0 +test regexp-1.13 {regexp ***= metasyntax} { + set string "aeiou" + set re "***=y" + regexp -- $re $string +} 0 + test regexp-2.1 {getting substrings back from regexp} { set foo {} list [regexp ab*c abbbbc foo] $foo diff --git a/tests/regexpComp.test b/tests/regexpComp.test index c7a5980..f38062d 100644 --- a/tests/regexpComp.test +++ b/tests/regexpComp.test @@ -43,7 +43,7 @@ test regexpComp-1.2 {basic regexp operation} { } } 1 test regexpComp-1.3 {basic regexp operation} { - evalInProc { + evalInProc { regexp ab*c ab } } 0 @@ -69,6 +69,43 @@ test regexpComp-1.7 {regexp utf compliance} { } } {0 0} +test regexp-1.8 {regexp ***= metasyntax} { + evalInProc { + regexp -- "***=o" "aeiou" + } +} 1 +test regexp-1.9 {regexp ***= metasyntax} { + evalInProc { + set string "aeiou" + regexp -- "***=o" $string + } +} 1 +test regexp-1.10 {regexp ***= metasyntax} { + evalInProc { + set string "aeiou" + set re "***=o" + regexp -- $re $string + } +} 1 +test regexp-1.11 {regexp ***= metasyntax} { + evalInProc { + regexp -- "***=y" "aeiou" + } +} 0 +test regexp-1.12 {regexp ***= metasyntax} { + evalInProc { + set string "aeiou" + regexp -- "***=y" $string + } +} 0 +test regexp-1.13 {regexp ***= metasyntax} { + evalInProc { + set string "aeiou" + set re "***=y" + regexp -- $re $string + } +} 0 + test regexpComp-2.1 {getting substrings back from regexp} { evalInProc { set foo {} -- cgit v0.12 From 2e1f9a90e2bb9a21b3ccc70970b71384199885e1 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 21 Aug 2008 23:42:22 +0000 Subject: really fix translation to escape glob-sensitive chars --- generic/tclUtil.c | 37 ++++++++++++++++++++++++------------- tests/regexpComp.test | 21 +++++++++++++++++++++ 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 9464cd5..ec0f2ff 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.97.2.2 2008/08/21 23:19:05 hobbs Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.97.2.3 2008/08/21 23:42:22 hobbs Exp $ */ #include "tclInt.h" @@ -3274,23 +3274,34 @@ TclReToGlob( Tcl_DStringInit(dsPtr); /* - * "***=xxx" == "*xxx*" + * Write to the ds directly without the function overhead. + * An equivalent glob pattern can be no more than reStrLen+2 in size. */ - if ((reStrLen >= 4) && (memcmp("***=", reStr, 4) == 0)) { - Tcl_DStringAppend(dsPtr, "*", 1); - Tcl_DStringAppend(dsPtr, reStr + 4, reStrLen - 4); - Tcl_DStringAppend(dsPtr, "*", 1); - return TCL_OK; - } + Tcl_DStringSetLength(dsPtr, reStrLen + 2); + dsStr = dsStrStart = Tcl_DStringValue(dsPtr); /* - * Write to the ds directly without the function overhead. - * An equivalent glob pattern can be no more than reStrLen+2 in size. + * "***=xxx" == "*xxx*", watch for glob-sensitive chars. */ - Tcl_DStringSetLength(dsPtr, reStrLen + 2); - dsStrStart = Tcl_DStringValue(dsPtr); + if ((reStrLen >= 4) && (memcmp("***=", reStr, 4) == 0)) { + *dsStr++ = '*'; + for (p = reStr + 4; p < strEnd; p++) { + switch (*p) { + case '\\': case '*': case '[': case ']': case '?': + /* Only add \ where necessary for glob */ + *dsStr++ = '\\'; + /* fall through */ + default: + *dsStr++ = *p; + break; + } + } + *dsStr++ = '*'; + Tcl_DStringSetLength(dsPtr, dsStr - dsStrStart); + return TCL_OK; + } /* * Check for anchored REs (ie ^foo$), so we can use string equal if @@ -3305,7 +3316,7 @@ TclReToGlob( p = reStr; anchorRight = 0; lastIsStar = 0; - dsStr = dsStrStart; + if (*p == '^') { anchorLeft = 1; p++; diff --git a/tests/regexpComp.test b/tests/regexpComp.test index f38062d..0fbed97 100644 --- a/tests/regexpComp.test +++ b/tests/regexpComp.test @@ -105,6 +105,27 @@ test regexp-1.13 {regexp ***= metasyntax} { regexp -- $re $string } } 0 +test regexp-1.14 {regexp ***= metasyntax} { + evalInProc { + set string "aeiou" + set re "***=e*o" + regexp -- $re $string + } +} 0 +test regexp-1.15 {regexp ***= metasyntax} { + evalInProc { + set string "ae*ou" + set re "***=e*o" + regexp -- $re $string + } +} 1 +test regexp-1.16 {regexp ***= metasyntax} { + evalInProc { + set string {ae*[o]?ua} + set re {***=e*[o]?u} + regexp -- $re $string + } +} 1 test regexpComp-2.1 {getting substrings back from regexp} { evalInProc { -- cgit v0.12 From 89caec97fd7d5e85719e6a561e81ca0b5204b09a Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 22 Aug 2008 17:20:35 +0000 Subject: * generic/tclUtil.c (TclReToGlob): Added missing set of the *exactPtr value to really fix [Bug 2065115]. * tests/regexpComp.test: Correct duplicate test names. --- ChangeLog | 6 ++++++ generic/tclUtil.c | 5 ++++- tests/regexpComp.test | 18 +++++++++--------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7504d60..6eb10d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-22 Don Porter + + * generic/tclUtil.c (TclReToGlob): Added missing set of the + *exactPtr value to really fix [Bug 2065115]. + * tests/regexpComp.test: Correct duplicate test names. + 2008-08-21 Jeff Hobbs * tests/regexp.test, tests/regexpComp.test: correct re2glob ***= diff --git a/generic/tclUtil.c b/generic/tclUtil.c index ec0f2ff..3b59171 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.97.2.3 2008/08/21 23:42:22 hobbs Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.97.2.4 2008/08/22 17:20:37 dgp Exp $ */ #include "tclInt.h" @@ -3300,6 +3300,9 @@ TclReToGlob( } *dsStr++ = '*'; Tcl_DStringSetLength(dsPtr, dsStr - dsStrStart); + if (exactPtr) { + *exactPtr = 0; + } return TCL_OK; } diff --git a/tests/regexpComp.test b/tests/regexpComp.test index 0fbed97..df7b60f 100644 --- a/tests/regexpComp.test +++ b/tests/regexpComp.test @@ -69,57 +69,57 @@ test regexpComp-1.7 {regexp utf compliance} { } } {0 0} -test regexp-1.8 {regexp ***= metasyntax} { +test regexpComp-1.8 {regexp ***= metasyntax} { evalInProc { regexp -- "***=o" "aeiou" } } 1 -test regexp-1.9 {regexp ***= metasyntax} { +test regexpComp-1.9 {regexp ***= metasyntax} { evalInProc { set string "aeiou" regexp -- "***=o" $string } } 1 -test regexp-1.10 {regexp ***= metasyntax} { +test regexpComp-1.10 {regexp ***= metasyntax} { evalInProc { set string "aeiou" set re "***=o" regexp -- $re $string } } 1 -test regexp-1.11 {regexp ***= metasyntax} { +test regexpComp-1.11 {regexp ***= metasyntax} { evalInProc { regexp -- "***=y" "aeiou" } } 0 -test regexp-1.12 {regexp ***= metasyntax} { +test regexpComp-1.12 {regexp ***= metasyntax} { evalInProc { set string "aeiou" regexp -- "***=y" $string } } 0 -test regexp-1.13 {regexp ***= metasyntax} { +test regexpComp-1.13 {regexp ***= metasyntax} { evalInProc { set string "aeiou" set re "***=y" regexp -- $re $string } } 0 -test regexp-1.14 {regexp ***= metasyntax} { +test regexpComp-1.14 {regexp ***= metasyntax} { evalInProc { set string "aeiou" set re "***=e*o" regexp -- $re $string } } 0 -test regexp-1.15 {regexp ***= metasyntax} { +test regexpComp-1.15 {regexp ***= metasyntax} { evalInProc { set string "ae*ou" set re "***=e*o" regexp -- $re $string } } 1 -test regexp-1.16 {regexp ***= metasyntax} { +test regexpComp-1.16 {regexp ***= metasyntax} { evalInProc { set string {ae*[o]?ua} set re {***=e*[o]?u} -- cgit v0.12 From 61d50b336b7c4fdd076332411154b3330ce9c146 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 22 Aug 2008 18:00:14 +0000 Subject: * generic/tclUtil.c (TclReToGlob): Added missing set of the *exactPtr value to really fix [Bug 2065115]. Also avoid possible DString overflow. --- ChangeLog | 3 ++- generic/tclUtil.c | 24 +++++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6eb10d6..6f71458 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,8 @@ 2008-08-22 Don Porter * generic/tclUtil.c (TclReToGlob): Added missing set of the - *exactPtr value to really fix [Bug 2065115]. + *exactPtr value to really fix [Bug 2065115]. Also avoid possible + DString overflow. * tests/regexpComp.test: Correct duplicate test names. 2008-08-21 Jeff Hobbs diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 3b59171..a2b4d84 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.97.2.4 2008/08/22 17:20:37 dgp Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.97.2.5 2008/08/22 18:00:15 dgp Exp $ */ #include "tclInt.h" @@ -3274,18 +3274,16 @@ TclReToGlob( Tcl_DStringInit(dsPtr); /* - * Write to the ds directly without the function overhead. - * An equivalent glob pattern can be no more than reStrLen+2 in size. - */ - - Tcl_DStringSetLength(dsPtr, reStrLen + 2); - dsStr = dsStrStart = Tcl_DStringValue(dsPtr); - - /* * "***=xxx" == "*xxx*", watch for glob-sensitive chars. */ if ((reStrLen >= 4) && (memcmp("***=", reStr, 4) == 0)) { + /* + * At most, the glob pattern has length 2*reStrLen + 2 to + * backslash escape every character and have * at each end. + */ + Tcl_DStringSetLength(dsPtr, 2*reStrLen + 2); + dsStr = dsStrStart = Tcl_DStringValue(dsPtr); *dsStr++ = '*'; for (p = reStr + 4; p < strEnd; p++) { switch (*p) { @@ -3307,6 +3305,14 @@ TclReToGlob( } /* + * At most, the glob pattern has length reStrLen + 2 to account + * for possible * at each end. + */ + + Tcl_DStringSetLength(dsPtr, reStrLen + 2); + dsStr = dsStrStart = Tcl_DStringValue(dsPtr); + + /* * Check for anchored REs (ie ^foo$), so we can use string equal if * possible. Do not alter the start of str so we can free it correctly. * -- cgit v0.12 From a673f18a1b9d99e936e8fd534c8c068a245a2ca4 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 27 Aug 2008 20:29:49 +0000 Subject: typo --- doc/RegConfig.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/RegConfig.3 b/doc/RegConfig.3 index 8e4cecf..3f7f19b 100644 --- a/doc/RegConfig.3 +++ b/doc/RegConfig.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: RegConfig.3,v 1.8 2007/12/13 15:22:31 dgp Exp $ +'\" RCS: @(#) $Id: RegConfig.3,v 1.8.2.1 2008/08/27 20:29:49 dgp Exp $ .so man.macros .TH Tcl_RegisterConfig 3 8.4 Tcl "Tcl Library Procedures" .BS @@ -110,4 +110,4 @@ typedef struct Tcl_Config { .\" No cross references yet. .\" .SH "SEE ALSO" .SH KEYWORDS -embedding, configuration, bianry library +embedding, configuration, binary library -- cgit v0.12 From 0518a588f5a633d1d571201f456c5a4c368bded6 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 28 Aug 2008 16:08:24 +0000 Subject: * generic/tcl.h: Bump version number to 8.5.5b1 to distinguish * library/init.tcl: CVS development snapshots from the 8.5.4 and * unix/configure.in: 8.5.5 releases. * unix/tcl.spec: * win/configure.in: * tools/tcl.wse.in: * README * unix/configure: autoconf (2.59) * win/configure: --- ChangeLog | 13 +++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- library/init.tcl | 4 ++-- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6f71458..3159fc9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-08-28 Don Porter + + * generic/tcl.h: Bump version number to 8.5.5b1 to distinguish + * library/init.tcl: CVS development snapshots from the 8.5.4 and + * unix/configure.in: 8.5.5 releases. + * unix/tcl.spec: + * win/configure.in: + * tools/tcl.wse.in: + * README + + * unix/configure: autoconf (2.59) + * win/configure: + 2008-08-22 Don Porter * generic/tclUtil.c (TclReToGlob): Added missing set of the diff --git a/README b/README index e37156e..bbf1903 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.5.4 source distribution. + This is the Tcl 8.5.5 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.67.2.2 2008/08/08 15:22:27 dgp Exp $ +RCS: @(#) $Id: README,v 1.67.2.3 2008/08/28 16:08:28 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index a94185e..070f455 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.4 2008/08/08 15:22:27 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.5 2008/08/28 16:08:29 dgp Exp $ */ #ifndef _TCL @@ -60,10 +60,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 5 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 4 +#define TCL_RELEASE_SERIAL 5 #define TCL_VERSION "8.5" -#define TCL_PATCH_LEVEL "8.5.4" +#define TCL_PATCH_LEVEL "8.5.5b1" /* * The following definitions set up the proper options for Windows compilers. diff --git a/library/init.tcl b/library/init.tcl index 4dece74..eadb13b 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.4 2008/08/08 15:22:31 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.5 2008/08/28 16:08:30 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -17,7 +17,7 @@ if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.5.4 +package require -exact Tcl 8.5.5b1 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 6ebb749..f4412e8 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.5.4 + Disk Label=tcl8.5.5b1 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index b21f416..ef2d5ac 100755 --- a/unix/configure +++ b/unix/configure @@ -1335,7 +1335,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".4" +TCL_PATCH_LEVEL=".5b1" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index a753fc9..6924c7c 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.6 2008/08/13 23:07:16 das Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.7 2008/08/28 16:08:36 dgp Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -27,7 +27,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [ TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".4" +TCL_PATCH_LEVEL=".5b1" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index d2e53c8..f5c9560 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,11 +1,11 @@ -# $Id: tcl.spec,v 1.37.2.3 2008/08/08 15:22:36 dgp Exp $ +# $Id: tcl.spec,v 1.37.2.4 2008/08/28 16:08:38 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. %{!?directory:%define directory /usr/local} Name: tcl Summary: Tcl scripting language development environment -Version: 8.5.4 +Version: 8.5.5b1 Release: 2 License: BSD Group: Development/Languages diff --git a/win/configure b/win/configure index a6c4558..fde85a9 100755 --- a/win/configure +++ b/win/configure @@ -1272,7 +1272,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".4" +TCL_PATCH_LEVEL=".5b1" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 diff --git a/win/configure.in b/win/configure.in index bc0f6f1..9ce1e5e 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.104.2.3 2008/08/08 15:22:36 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.104.2.4 2008/08/28 16:08:39 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.59) @@ -16,7 +16,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".4" +TCL_PATCH_LEVEL=".5b1" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 -- cgit v0.12 From e3e6b80ad37780e6da0793def7b2076461f69d83 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Sun, 7 Sep 2008 14:00:48 +0000 Subject: * doc/namespace.n: fix [Bug 2098441] --- ChangeLog | 4 ++++ doc/namespace.n | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3159fc9..76eff3d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-09-07 Miguel Sofer + + * doc/namespace.n: fix [Bug 2098441] + 2008-08-28 Don Porter * generic/tcl.h: Bump version number to 8.5.5b1 to distinguish diff --git a/doc/namespace.n b/doc/namespace.n index e4d3d6d..f2be10d 100644 --- a/doc/namespace.n +++ b/doc/namespace.n @@ -7,7 +7,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: namespace.n,v 1.30 2008/03/06 22:08:26 dkf Exp $ +'\" RCS: @(#) $Id: namespace.n,v 1.30.2.1 2008/09/07 14:01:10 msofer Exp $ '\" .so man.macros .TH namespace n 8.5 Tcl "Tcl Built-In Commands" @@ -275,7 +275,7 @@ procedure to refer to variables in \fInamespace\fR. The namespace name is resolved as described in section \fBNAME RESOLUTION\fR. The command \fBnamespace upvar $ns a b\fR has the same behaviour as -\fBupvar 0 $ns::a b\fR, with the sole exception of the resolution rules +\fBupvar 0 ${ns}::a b\fR, with the sole exception of the resolution rules used for qualified namespace or variable names. \fBnamespace upvar\fR returns an empty string. .TP -- cgit v0.12 From 15bee119a24685e66f1d427e207032ea02d04c64 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 10 Sep 2008 13:17:51 +0000 Subject: Fix efficiency bug detected by Kieran Elby. --- ChangeLog | 7 +++++++ generic/tclListObj.c | 13 +++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 76eff3d..0944544 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-09-10 Donal K. Fellows + + * generic/tclListObj.c (Tcl_ListObjGetElements): Make this list->dict + transformation - encountered when using [foreach] with dicts - not as + expensive as it was before. Spotted by Kieran Elby and reported on + tcl-core. + 2008-09-07 Miguel Sofer * doc/namespace.n: fix [Bug 2098441] diff --git a/generic/tclListObj.c b/generic/tclListObj.c index 2bbaa22..95e3f33 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclListObj.c,v 1.49.2.1 2008/07/20 22:02:39 dkf Exp $ + * RCS: @(#) $Id: tclListObj.c,v 1.49.2.2 2008/09/10 13:18:11 dkf Exp $ */ #include "tclInt.h" @@ -428,7 +428,16 @@ Tcl_ListObjGetElements( if (listPtr->typePtr != &tclListType) { int result, length; - (void) TclGetStringFromObj(listPtr, &length); + /* + * Don't get the string version of a dictionary; that transformation + * is not lossy, but is expensive. + */ + + if (listPtr->typePtr == &tclDictType) { + (void) Tcl_DictObjSize(NULL, listPtr, &length); + } else { + (void) TclGetStringFromObj(listPtr, &length); + } if (!length) { *objcPtr = 0; *objvPtr = NULL; -- cgit v0.12 From 24857c216d0509db6addceb6d1caedfb84ee81ab Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Wed, 17 Sep 2008 12:37:44 +0000 Subject: * library/init.tcl: export min and max commands from the mathfunc namespace [Bug 2116053] --- ChangeLog | 5 +++++ library/init.tcl | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0944544..d57345c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-09-17 Miguel Sofer + + * library/init.tcl: export min and max commands from the mathfunc + namespace [Bug 2116053] + 2008-09-10 Donal K. Fellows * generic/tclListObj.c (Tcl_ListObjGetElements): Make this list->dict diff --git a/library/init.tcl b/library/init.tcl index eadb13b..1876f3a 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.5 2008/08/28 16:08:30 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.6 2008/09/17 12:37:49 msofer Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -109,6 +109,7 @@ namespace eval tcl { } return $val } + namespace export min max } } -- cgit v0.12 From de829f7b610dede86318f0a20d87aeaa55d20ffb Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 17 Sep 2008 18:14:39 +0000 Subject: * generic/tclInt.h: Correct the TclGetLongFromObj, TclGetIntFromObj, and TclGetIntForIndexM macros so that they retrieve the internalRep.longValue field instead of casting the internalRep.otherValuePtr field to type long. --- ChangeLog | 7 +++++++ generic/tclInt.h | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index d57345c..1750f96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-09-17 Don Porter + + * generic/tclInt.h: Correct the TclGetLongFromObj, + TclGetIntFromObj, and TclGetIntForIndexM macros so that they + retrieve the internalRep.longValue field instead of casting the + internalRep.otherValuePtr field to type long. + 2008-09-17 Miguel Sofer * library/init.tcl: export min and max commands from the mathfunc diff --git a/generic/tclInt.h b/generic/tclInt.h index bbbdf2f..f90b629 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362.2.3 2008/07/22 21:41:13 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.4 2008/09/17 18:14:39 dgp Exp $ */ #ifndef _TCLINT @@ -2193,17 +2193,17 @@ typedef struct List { #define TclGetLongFromObj(interp, objPtr, longPtr) \ (((objPtr)->typePtr == &tclIntType) \ - ? ((*(longPtr) = (long) (objPtr)->internalRep.otherValuePtr), TCL_OK) \ + ? ((*(longPtr) = (objPtr)->internalRep.longValue), TCL_OK) \ : Tcl_GetLongFromObj((interp), (objPtr), (longPtr))) #if (LONG_MAX == INT_MAX) #define TclGetIntFromObj(interp, objPtr, intPtr) \ (((objPtr)->typePtr == &tclIntType) \ - ? ((*(intPtr) = (long) (objPtr)->internalRep.otherValuePtr), TCL_OK) \ + ? ((*(intPtr) = (objPtr)->internalRep.longValue), TCL_OK) \ : Tcl_GetIntFromObj((interp), (objPtr), (intPtr))) #define TclGetIntForIndexM(interp, objPtr, endValue, idxPtr) \ (((objPtr)->typePtr == &tclIntType) \ - ? ((*(idxPtr) = (long) (objPtr)->internalRep.otherValuePtr), TCL_OK) \ + ? ((*(idxPtr) = (objPtr)->internalRep.longValue), TCL_OK) \ : TclGetIntForIndex((interp), (objPtr), (endValue), (idxPtr))) #else #define TclGetIntFromObj(interp, objPtr, intPtr) \ -- cgit v0.12 From 14ca90153204a94f43f6f65166d2caa82849c344 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 18 Sep 2008 15:00:58 +0000 Subject: remove outdated commentary --- generic/tclCmdMZ.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index de8740d..5e7b212 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.163 2007/12/13 15:23:15 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.163.2.1 2008/09/18 15:00:58 dgp Exp $ */ #include "tclInt.h" @@ -1096,8 +1096,7 @@ Tcl_SplitObjCmd( * StringFirstCmd -- * * This procedure is invoked to process the "string first" Tcl command. - * See the user documentation for details on what it does. Note that this - * command only functions correctly on properly formed Tcl UTF strings. + * See the user documentation for details on what it does. * * Results: * A standard Tcl result. @@ -1203,8 +1202,7 @@ StringFirstCmd( * StringLastCmd -- * * This procedure is invoked to process the "string last" Tcl command. - * See the user documentation for details on what it does. Note that this - * command only functions correctly on properly formed Tcl UTF strings. + * See the user documentation for details on what it does. * * Results: * A standard Tcl result. -- cgit v0.12 From ef333048a2d363967b587c292d651bb33d34f637 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 25 Sep 2008 19:18:57 +0000 Subject: * doc/global.n: Correct false claim about [info locals]. --- ChangeLog | 4 ++++ doc/global.n | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3bb3e23..4ecf365 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-09-25 Don Porter + + * doc/global.n: Correct false claim about [info locals]. + 2008-08-14 Don Porter * tests/fileName.test: Revise new tests for portability to case diff --git a/doc/global.n b/doc/global.n index ece44a1..ae52a70 100644 --- a/doc/global.n +++ b/doc/global.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: global.n,v 1.4.2.1 2004/10/27 12:52:40 dkf Exp $ +'\" RCS: @(#) $Id: global.n,v 1.4.2.2 2008/09/25 19:19:01 dgp Exp $ '\" .so man.macros .TH global n "" Tcl "Tcl Built-In Commands" @@ -21,8 +21,9 @@ global \- Access global variables .PP This command has no effect unless executed in the context of a proc body. If the \fBglobal\fR command is executed in the context of a proc body, it -creates local variables linked to the corresponding global variables (and -therefore these variables are listed by info locals). +creates local variables linked to the corresponding global variables (though +these linked variables, like those created by \fBupvar\fR, are not included +in the list returned by \fBinfo locals\fR). .PP If \fIvarname\fR contains namespace qualifiers, the local variable's name is the unqualified name of the global variable, as determined by the -- cgit v0.12 From 55c5c30cfc514048eae8b4665b2891e6de6a0879 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 25 Sep 2008 19:20:52 +0000 Subject: * doc/global.n: Correct false claim about [info locals]. --- ChangeLog | 4 ++++ doc/global.n | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1750f96..5638e45 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-09-25 Don Porter + + * doc/global.n: Correct false claim about [info locals]. + 2008-09-17 Don Porter * generic/tclInt.h: Correct the TclGetLongFromObj, diff --git a/doc/global.n b/doc/global.n index e330954..6b08234 100644 --- a/doc/global.n +++ b/doc/global.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: global.n,v 1.12 2007/12/13 15:22:32 dgp Exp $ +'\" RCS: @(#) $Id: global.n,v 1.12.2.1 2008/09/25 19:20:55 dgp Exp $ '\" .so man.macros .TH global n "" Tcl "Tcl Built-In Commands" @@ -21,8 +21,9 @@ global \- Access global variables .PP This command has no effect unless executed in the context of a proc body. If the \fBglobal\fR command is executed in the context of a proc body, it -creates local variables linked to the corresponding global variables (and -therefore these variables are listed by info locals). +creates local variables linked to the corresponding global variables (though +these linked variables, like those created by \fBupvar\fR, are not included +in the list returned by \fBinfo locals\fR). .PP If \fIvarname\fR contains namespace qualifiers, the local variable's name is the unqualified name of the global variable, as determined by the -- cgit v0.12 From dc6408c9113122cbab856c8572215e36c50b0c86 Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 27 Sep 2008 14:19:40 +0000 Subject: Fix [Bug 2130992]. --- ChangeLog | 6 ++++++ generic/tclCmdIL.c | 20 ++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5638e45..6f98b01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-09-27 Donal K. Fellows + + * generic/tclCmdIL.c (Tcl_LrepeatObjCmd): Improve the handling of the + case where the combination of number of elements and repeat count + causes the resulting list to be too large. [Bug 2130992] + 2008-09-25 Don Porter * doc/global.n: Correct false claim about [info locals]. diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index e1267a9..df5dd4c 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.4 2008/08/14 02:09:55 das Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.5 2008/09/27 14:19:42 dkf Exp $ */ #include "tclInt.h" @@ -2405,7 +2405,7 @@ Tcl_LrepeatObjCmd( register Tcl_Obj *CONST objv[]) /* The argument objects. */ { - int elementCount, i, result; + int elementCount, i, result, totalElems; Tcl_Obj *listPtr, **dataArray; List *listRepPtr; @@ -2435,6 +2435,22 @@ Tcl_LrepeatObjCmd( objv += 2; /* + * Final sanity check. Total number of elements must fit in a signed + * integer. We also limit the number of elements to 512M-1 so allocations + * on 32-bit machines are guaranteed to be less than 2GB! [Bug 2130992] + */ + + totalElems = objc * elementCount; + if (totalElems/objc != elementCount || totalElems/elementCount != objc) { + Tcl_AppendResult(interp, "too many elements in result list", NULL); + return TCL_ERROR; + } + if (totalElems >= 0x20000000) { + Tcl_AppendResult(interp, "too many elements in result list", NULL); + return TCL_ERROR; + } + + /* * Get an empty list object that is allocated large enough to hold each * init value elementCount times. */ -- cgit v0.12 From ff519c460e7cc2818e6c0fdaa9469f6de154659b Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 27 Sep 2008 14:20:54 +0000 Subject: Missed a (minor) change. --- generic/tclCmdIL.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index df5dd4c..f144cef 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.5 2008/09/27 14:19:42 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.6 2008/09/27 14:20:54 dkf Exp $ */ #include "tclInt.h" @@ -2455,7 +2455,7 @@ Tcl_LrepeatObjCmd( * init value elementCount times. */ - listPtr = Tcl_NewListObj(elementCount*objc, NULL); + listPtr = Tcl_NewListObj(totalElems, NULL); listRepPtr = (List *) listPtr->internalRep.twoPtrValue.ptr1; listRepPtr->elemCount = elementCount*objc; dataArray = &listRepPtr->elements; -- cgit v0.12 From 6baa5b8d5a6b70470cad4964945c2027b381011f Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Thu, 2 Oct 2008 18:56:30 +0000 Subject: Fixes for [Bug 1934200, 1934272] --- ChangeLog | 5 +++++ tools/man2help2.tcl | 10 +++++++--- tools/man2tcl.c | 14 +++++++++----- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6f98b01..4cda4c0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-02 Joe Mistachkin + + * tools/man2help2.tcl: Integrated patches from Harald Oehlmann. + * tools/man2tcl.c: [Bug 1934200, 1934272] + 2008-09-27 Donal K. Fellows * generic/tclCmdIL.c (Tcl_LrepeatObjCmd): Improve the handling of the diff --git a/tools/man2help2.tcl b/tools/man2help2.tcl index ff8a520..bff9d8f 100644 --- a/tools/man2help2.tcl +++ b/tools/man2help2.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: man2help2.tcl,v 1.17 2007/12/13 15:28:40 dgp Exp $ +# RCS: @(#) $Id: man2help2.tcl,v 1.17.2.1 2008/10/02 18:56:30 mistachkin Exp $ # # Global variables used by these scripts: @@ -600,7 +600,7 @@ proc setTabs {tabList} { set relativeTo [expr {$state(leftMargin) \ + ($state(offset) * $state(nestingLevel))}] } - if {[regexp {^\w'(.*)'u$} $arg -> submatch]} { + if {[regexp {^\\w'([^']*)'u$} $arg -> submatch]} { # Magic factor! set distance [expr {[string length $submatch] * 86.4}] } else { @@ -976,6 +976,10 @@ proc getTwips {arg} { puts stderr "bad distance \"$arg\"" return 0 } + if {[string length $units] > 1} { + puts stderr "additional characters after unit \"$arg\"" + set units [string index $units 0] + } switch -- $units { c { set distance [expr {$distance * 567}] @@ -985,7 +989,7 @@ proc getTwips {arg} { } default { puts stderr "bad units in distance \"$arg\"" - continue + return 0 } } return $distance diff --git a/tools/man2tcl.c b/tools/man2tcl.c index 5743a73..efcbe2b 100644 --- a/tools/man2tcl.c +++ b/tools/man2tcl.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: man2tcl.c,v 1.13 2007/12/13 15:28:40 dgp Exp $ + * RCS: @(#) $Id: man2tcl.c,v 1.13.2.1 2008/10/02 18:56:30 mistachkin Exp $ */ static char sccsid[] = "@(#) man2tcl.c 1.3 95/08/12 17:34:08"; @@ -96,7 +96,7 @@ main( char **argv) /* Values of command-line arguments. */ { FILE *f; -#define MAX_LINE_SIZE 1000 +#define MAX_LINE_SIZE 4000 char line[MAX_LINE_SIZE]; char *p; @@ -197,6 +197,7 @@ DoMacro( * invocation. */ { char *p, *end; + int quote; /* * If there is no macro name, then just skip the whole line. @@ -234,8 +235,11 @@ DoMacro( } QuoteText(p+1, (end-(p+1))); } else { - for (end = p+1; (*end != 0) && !isspace(*end); end++) { - /* Empty loop body. */ + quote = 0; + for (end = p+1; (*end != 0) && (quote || !isspace(*end)); end++) { + if (*end == '\'') { + quote = !quote; + } } QuoteText(p, end-p); } @@ -346,7 +350,7 @@ DoText( p += 2; sscanf(p,"%d",&ch); - PRINT(("text \\u%04x", ch)); + PRINT(("text \\u%04x\n", ch)); while(*p&&*p!='\'') p++; } else if (*p != 0) { PRINT(("char {\\%c}\n", *p)); -- cgit v0.12 From 7a8890b848e2ed877f22708fa8aeebf5c22b129a Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sun, 5 Oct 2008 21:25:23 +0000 Subject: * libtommath/bn_mp_sqrt.c (bn_mp_sqrt): Handle the case where * tests/expr.test (expr-47.13): a number's square root is between n< + + * libtommath/bn_mp_sqrt.c (bn_mp_sqrt): Handle the case where + * tests/expr.test (expr-47.13): a number's square root + is between n< * tools/man2help2.tcl: Integrated patches from Harald Oehlmann. diff --git a/libtommath/bn_mp_sqrt.c b/libtommath/bn_mp_sqrt.c index 3aa0f38..aab357a 100644 --- a/libtommath/bn_mp_sqrt.c +++ b/libtommath/bn_mp_sqrt.c @@ -27,7 +27,7 @@ int mp_sqrt(mp_int *arg, mp_int *ret) mp_int t1,t2; int i, j, k; #ifndef NO_FLOATING_POINT - double d; + volatile double d; mp_digit dig; #endif @@ -64,12 +64,29 @@ int mp_sqrt(mp_int *arg, mp_int *ret) for (k = arg->used-1; k >= j; --k) { d = ldexp(d, DIGIT_BIT) + (double) (arg->dp[k]); } + + /* + * At this point, d is the nearest floating point number to the most + * significant 1 or 2 mp_digits of arg. Extract its square root. + */ + d = sqrt(d); + + /* dig is the most significant mp_digit of the square root */ + dig = (mp_digit) ldexp(d, -DIGIT_BIT); + + /* + * If the most significant digit is nonzero, find the next digit down + * by subtracting DIGIT_BIT times thie most significant digit. + * Subtract one from the result so that our initial estimate is always + * low. + */ + if (dig) { t1.used = i+2; d -= ldexp((double) dig, DIGIT_BIT); - if (d != 0.0) { + if (d >= 1.0) { t1.dp[i+1] = dig; t1.dp[i] = ((mp_digit) d) - 1; } else { @@ -126,5 +143,5 @@ E2: mp_clear(&t1); /* $Source: /root/tcl/repos-to-convert/tcl/libtommath/bn_mp_sqrt.c,v $ */ /* Based on Tom's 1.3 */ -/* $Revision: 1.5 $ */ -/* $Date: 2006/12/01 05:48:23 $ */ +/* $Revision: 1.5.4.1 $ */ +/* $Date: 2008/10/05 21:25:23 $ */ diff --git a/tests/expr.test b/tests/expr.test index d0aaadb..30aebc6 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.72 2008/03/10 16:18:55 dgp Exp $ +# RCS: @(#) $Id: expr.test,v 1.72.2.1 2008/10/05 21:25:23 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -6770,6 +6770,7 @@ test expr-47.11 {isqrt of zero} { test expr-47.12 {isqrt of various sizes of integer} { set faults 0 + set trouble {} for {set i 0} {$faults < 10 && $i <= 1024} {incr i} { set root [expr {1 << $i}] set rm1 [expr {$root - 1}] @@ -6796,6 +6797,26 @@ test expr-47.12 {isqrt of various sizes of integer} { set trouble } {} +test expr-47.13 {isqrt and floating point rounding (Bug 2143288)} { + set trouble {} + set faults 0 + for {set i 0} {$i < 29 && $faults < 10} {incr i} { + for {set j 0} {$j <= $i} {incr j} { + set k [expr {isqrt((1<<56)+(1<<$i)+(1<<$j))}] + if {$k != (1<<28)} { + append trouble "i = $i, j = $j, k = $k\n" + incr faults + } + } + set k [expr {isqrt((1<<56)+(1<<29)+(1<<$i))}] + if {$k != (1<<28)+1} { + append trouble "i = $i, k = $k\n" + incr faults + } + } + set trouble +} {} + test expr-48.1 {Bug 1770224} { expr {-0x8000000000000001 >> 0x8000000000000000} } -1 -- cgit v0.12 From cdb3076a4c8510e94caadbdf9440a95fe580421b Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Mon, 6 Oct 2008 18:42:11 +0000 Subject: Fix for [Bug 1934200] --- ChangeLog | 5 +++++ tools/man2tcl.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 23eb041..78a56d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-06 Joe Mistachkin + + * tools/man2tcl.c: Added missing line from patch by Harald Oehlmann. + [Bug 1934200] + 2008-10-05 Kevin B, Kenny * libtommath/bn_mp_sqrt.c (bn_mp_sqrt): Handle the case where diff --git a/tools/man2tcl.c b/tools/man2tcl.c index efcbe2b..64ec466 100644 --- a/tools/man2tcl.c +++ b/tools/man2tcl.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: man2tcl.c,v 1.13.2.1 2008/10/02 18:56:30 mistachkin Exp $ + * RCS: @(#) $Id: man2tcl.c,v 1.13.2.2 2008/10/06 18:42:11 mistachkin Exp $ */ static char sccsid[] = "@(#) man2tcl.c 1.3 95/08/12 17:34:08"; @@ -352,6 +352,7 @@ DoText( sscanf(p,"%d",&ch); PRINT(("text \\u%04x\n", ch)); while(*p&&*p!='\'') p++; + p++; } else if (*p != 0) { PRINT(("char {\\%c}\n", *p)); p++; -- cgit v0.12 From dc5c90f4a6e01534ffc03e64ca44c034c87a68df Mon Sep 17 00:00:00 2001 From: nijtmans Date: Tue, 7 Oct 2008 20:51:46 +0000 Subject: * tclWinTest.c: Fix compiler warning when compiling this file with mingw gcc: tclWinTest.c:706: warning: dereferencing type-punned pointer will break strict-aliasing rules * generic/tclLoad.c: Make sure that any library which doesn't have an unloadproc is only really unloaded when no library code is executed yet. [Bug 2059262] --- ChangeLog | 9 +++++++++ generic/tclLoad.c | 8 +++++--- win/tclWinTest.c | 8 ++++---- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 78a56d1..a7491f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-10-06 Jan Nijtmans + + * tclWinTest.c: Fix compiler warning when compiling this file with mingw gcc: + tclWinTest.c:706: warning: dereferencing type-punned pointer will break + strict-aliasing rules + * generic/tclLoad.c: Make sure that any library which doesn't have an + unloadproc is only really unloaded when no library code is executed + yet. [Bug 2059262] + 2008-10-06 Joe Mistachkin * tools/man2tcl.c: Added missing line from patch by Harald Oehlmann. diff --git a/generic/tclLoad.c b/generic/tclLoad.c index 29e2d01..89e003c 100644 --- a/generic/tclLoad.c +++ b/generic/tclLoad.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoad.c,v 1.16 2007/02/20 23:24:03 nijtmans Exp $ + * RCS: @(#) $Id: tclLoad.c,v 1.16.4.1 2008/10/07 20:51:46 nijtmans Exp $ */ #include "tclInt.h" @@ -795,7 +795,9 @@ Tcl_UnloadObjCmd( if (unLoadProcPtr != NULL) { Tcl_MutexLock(&packageMutex); - (*unLoadProcPtr)(pkgPtr->loadHandle); + if (pkgPtr->unloadProc != NULL) { + (*unLoadProcPtr)(pkgPtr->loadHandle); + } /* * Remove this library from the loaded library cache. @@ -1152,7 +1154,7 @@ TclFinalizeLoad(void) if (pkgPtr->fileName[0] != '\0') { Tcl_FSUnloadFileProc *unLoadProcPtr = pkgPtr->unLoadProcPtr; - if (unLoadProcPtr != NULL) { + if ((unLoadProcPtr != NULL) && (pkgPtr->unloadProc != NULL)) { (*unLoadProcPtr)(pkgPtr->loadHandle); } } diff --git a/win/tclWinTest.c b/win/tclWinTest.c index 946f179..adea787 100644 --- a/win/tclWinTest.c +++ b/win/tclWinTest.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTest.c,v 1.22 2007/12/13 15:28:44 dgp Exp $ + * RCS: @(#) $Id: tclWinTest.c,v 1.22.2.1 2008/10/07 20:51:47 nijtmans Exp $ */ #include "tclInt.h" @@ -700,10 +700,10 @@ TestplatformChmod( acl_readOnly_found = FALSE; for (j = 0; j < ACLSize.AceCount; j++) { - PACL *pACE2; + LPVOID pACE2; ACE_HEADER *phACE2; - if (!getAceProc(curAcl, j, (LPVOID *) &pACE2)) { + if (!getAceProc(curAcl, j, &pACE2)) { goto done; } @@ -736,7 +736,7 @@ TestplatformChmod( * Copy the current ACE from the old to the new ACL. */ - if (!addAceProc(newAcl, ACL_REVISION, MAXDWORD, pACE2, + if (!addAceProc(newAcl, ACL_REVISION, MAXDWORD, (PACL *)pACE2, ((PACE_HEADER) pACE2)->AceSize)) { goto done; } -- cgit v0.12 From c0384761647b436730467f41458a6c495532b14b Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 8 Oct 2008 14:52:38 +0000 Subject: * generic/tclTrace.c: Corrected handling of errors returned by variable traces so that the errorInfo value contains the original error message. [Bug 2151707] * generic/tclVar.c: Revised implementation of TclObjVarErrMsg so that error message construction does not disturb an existing iPtr->errorInfo that may be in progress. --- ChangeLog | 10 +++++++++ generic/tclTrace.c | 60 ++++++++++++++++++++++-------------------------------- generic/tclVar.c | 13 +++++------- 3 files changed, 39 insertions(+), 44 deletions(-) diff --git a/ChangeLog b/ChangeLog index a7491f4..82a7f21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-10-08 Don Porter + + * generic/tclTrace.c: Corrected handling of errors returned by + variable traces so that the errorInfo value contains the original + error message. [Bug 2151707] + + * generic/tclVar.c: Revised implementation of TclObjVarErrMsg + so that error message construction does not disturb an existing + iPtr->errorInfo that may be in progress. + 2008-10-06 Jan Nijtmans * tclWinTest.c: Fix compiler warning when compiling this file with mingw gcc: diff --git a/generic/tclTrace.c b/generic/tclTrace.c index dfcac43..bc6d289 100644 --- a/generic/tclTrace.c +++ b/generic/tclTrace.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTrace.c,v 1.47 2007/12/13 15:23:20 dgp Exp $ + * RCS: @(#) $Id: tclTrace.c,v 1.47.2.1 2008/10/08 14:52:39 dgp Exp $ */ #include "tclInt.h" @@ -2667,53 +2667,41 @@ TclCallVarTraces( done: if (code == TCL_ERROR) { if (leaveErrMsg) { + const char *verb = ""; const char *type = ""; - Tcl_Obj *options = Tcl_GetReturnOptions((Tcl_Interp *)iPtr, code); - Tcl_Obj *errorInfoKey, *errorInfo; - - TclNewLiteralStringObj(errorInfoKey, "-errorinfo"); - Tcl_IncrRefCount(errorInfoKey); - Tcl_DictObjGet(NULL, options, errorInfoKey, &errorInfo); - Tcl_IncrRefCount(errorInfo); - Tcl_DictObjRemove(NULL, options, errorInfoKey); - if (Tcl_IsShared(errorInfo)) { - Tcl_DecrRefCount(errorInfo); - errorInfo = Tcl_DuplicateObj(errorInfo); - Tcl_IncrRefCount(errorInfo); - } - Tcl_AppendToObj(errorInfo, "\n (", -1); + switch (flags&(TCL_TRACE_READS|TCL_TRACE_WRITES|TCL_TRACE_ARRAY)) { case TCL_TRACE_READS: - type = "read"; - Tcl_AppendToObj(errorInfo, type, -1); + verb = "read"; + type = verb; break; case TCL_TRACE_WRITES: - type = "set"; - Tcl_AppendToObj(errorInfo, "write", -1); + verb = "set"; + type = "write"; break; case TCL_TRACE_ARRAY: - type = "trace array"; - Tcl_AppendToObj(errorInfo, "array", -1); + verb = "trace array"; + type = "array"; break; } + if (disposeFlags & TCL_TRACE_RESULT_OBJECT) { - TclVarErrMsg((Tcl_Interp *) iPtr, part1, part2, type, + Tcl_SetObjResult((Tcl_Interp *)iPtr, (Tcl_Obj *) result); + } else { + Tcl_SetResult((Tcl_Interp *)iPtr, result, TCL_STATIC); + } + Tcl_AddErrorInfo((Tcl_Interp *)iPtr, ""); + + Tcl_AppendObjToErrorInfo((Tcl_Interp *)iPtr, Tcl_ObjPrintf( + "\n (%s trace on \"%s%s%s%s\")", type, part1, + (part2 ? "(" : ""), (part2 ? part2 : ""), + (part2 ? ")" : "") )); + if (disposeFlags & TCL_TRACE_RESULT_OBJECT) { + TclVarErrMsg((Tcl_Interp *) iPtr, part1, part2, verb, Tcl_GetString((Tcl_Obj *) result)); } else { - TclVarErrMsg((Tcl_Interp *) iPtr, part1, part2, type, result); - } - Tcl_AppendToObj(errorInfo, " trace on \"", -1); - Tcl_AppendToObj(errorInfo, part1, -1); - if (part2 != NULL) { - Tcl_AppendToObj(errorInfo, "(", -1); - Tcl_AppendToObj(errorInfo, part1, -1); - Tcl_AppendToObj(errorInfo, ")", -1); - } - Tcl_AppendToObj(errorInfo, "\")", -1); - Tcl_DictObjPut(NULL, options, errorInfoKey, errorInfo); - Tcl_DecrRefCount(errorInfoKey); - Tcl_DecrRefCount(errorInfo); - code = Tcl_SetReturnOptions((Tcl_Interp *)iPtr, options); + TclVarErrMsg((Tcl_Interp *) iPtr, part1, part2, verb, result); + } iPtr->flags &= ~(ERR_ALREADY_LOGGED); Tcl_DiscardInterpState(state); } else { diff --git a/generic/tclVar.c b/generic/tclVar.c index 43f0324..dc6699e 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.160.2.2 2008/08/07 01:44:31 dgp Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.160.2.3 2008/10/08 14:52:39 dgp Exp $ */ #include "tclInt.h" @@ -4660,16 +4660,13 @@ TclObjVarErrMsg( * variable, or -1. Only used when part1Ptr is * NULL. */ { - Tcl_ResetResult(interp); if (!part1Ptr) { part1Ptr = localName(((Interp *)interp)->varFramePtr, index); } - Tcl_AppendResult(interp, "can't ", operation, " \"", - TclGetString(part1Ptr), NULL); - if (part2Ptr) { - Tcl_AppendResult(interp, "(", TclGetString(part2Ptr), ")", NULL); - } - Tcl_AppendResult(interp, "\": ", reason, NULL); + Tcl_SetObjResult(interp, Tcl_ObjPrintf("can't %s \"%s%s%s%s\": %s", + operation, TclGetString(part1Ptr), (part2Ptr ? "(" : ""), + (part2Ptr ? TclGetString(part2Ptr) : ""), (part2Ptr ? ")" : ""), + reason)); } /* -- cgit v0.12 From 1d870f98d70d6e558be06103fc10082a407ddc9b Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Oct 2008 18:16:47 +0000 Subject: * generic/tcl.h: Bump to 8.5.5 for release. * library/init.tcl: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/configure.in: * unix/configure: autoconf-2.59 * win/configure: --- ChangeLog | 12 ++++++++++++ generic/tcl.h | 4 ++-- library/init.tcl | 4 ++-- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 9 files changed, 25 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 82a7f21..93bc25f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-10-10 Don Porter + + * generic/tcl.h: Bump to 8.5.5 for release. + * library/init.tcl: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/configure.in: + + * unix/configure: autoconf-2.59 + * win/configure: + 2008-10-08 Don Porter * generic/tclTrace.c: Corrected handling of errors returned by diff --git a/generic/tcl.h b/generic/tcl.h index 070f455..4f37924 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.5 2008/08/28 16:08:29 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.6 2008/10/10 18:16:47 dgp Exp $ */ #ifndef _TCL @@ -63,7 +63,7 @@ extern "C" { #define TCL_RELEASE_SERIAL 5 #define TCL_VERSION "8.5" -#define TCL_PATCH_LEVEL "8.5.5b1" +#define TCL_PATCH_LEVEL "8.5.5" /* * The following definitions set up the proper options for Windows compilers. diff --git a/library/init.tcl b/library/init.tcl index 1876f3a..7105276 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.6 2008/09/17 12:37:49 msofer Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.7 2008/10/10 18:16:48 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -17,7 +17,7 @@ if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.5.5b1 +package require -exact Tcl 8.5.5 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index f4412e8..fe5c8dd 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.5.5b1 + Disk Label=tcl8.5.5 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index ef2d5ac..7990060 100755 --- a/unix/configure +++ b/unix/configure @@ -1335,7 +1335,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".5b1" +TCL_PATCH_LEVEL=".5" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 6924c7c..867bfd2 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.7 2008/08/28 16:08:36 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.8 2008/10/10 18:16:48 dgp Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -27,7 +27,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [ TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".5b1" +TCL_PATCH_LEVEL=".5" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index f5c9560..3a1e856 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,11 +1,11 @@ -# $Id: tcl.spec,v 1.37.2.4 2008/08/28 16:08:38 dgp Exp $ +# $Id: tcl.spec,v 1.37.2.5 2008/10/10 18:16:48 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. %{!?directory:%define directory /usr/local} Name: tcl Summary: Tcl scripting language development environment -Version: 8.5.5b1 +Version: 8.5.5 Release: 2 License: BSD Group: Development/Languages diff --git a/win/configure b/win/configure index fde85a9..e2c8cd8 100755 --- a/win/configure +++ b/win/configure @@ -1272,7 +1272,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".5b1" +TCL_PATCH_LEVEL=".5" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 diff --git a/win/configure.in b/win/configure.in index 9ce1e5e..1a9ed2d 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.104.2.4 2008/08/28 16:08:39 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.104.2.5 2008/10/10 18:16:48 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.59) @@ -16,7 +16,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".5b1" +TCL_PATCH_LEVEL=".5" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 -- cgit v0.12 From ad2b93b8da12252c42c20912c5c19b654725650d Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Oct 2008 19:11:17 +0000 Subject: * changes: Update for 8.5.5 release. --- ChangeLog | 2 ++ changes | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 93bc25f..49f4337 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,8 @@ * unix/configure: autoconf-2.59 * win/configure: + * changes: Update for 8.5.5 release. + 2008-10-08 Don Porter * generic/tclTrace.c: Corrected handling of errors returned by diff --git a/changes b/changes index 7e91cca..21331bb 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.9 2008/08/12 14:43:26 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.10 2008/10/10 19:11:17 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7245,3 +7245,19 @@ variables without "." added to customization hooks (kupries) 2008-08-11 (enhancement) automatic [package provide] for TMs (kupries) --- Released 8.5.4, August 15, 2008 --- See ChangeLog for details --- + +2008-08-14 (bug fix)[2055782] fix crash in [namespace inscope] (sofer) + +2008-08-21 (bug fix)[2065115] correct handling of ***= RE's (hobbs,porter) + +2008-09-10 (enhancement) efficient list->dict conversion (elby,fellows) + +2008-09-17 (bug fix)[2116053] export [min] and [max] from tcl::mathfunc (sofer) + +2008-09-27 (bug fix)[2130992] prevent overflow crash in [lrepeat] (fellows) + +2008-10-05 (bug fix)[2143288] correct bad isqrt() results (boffey,kenny) + +2008-10-08 (bug fix)[2151707] fix stack trace from variable trace (porter) + +--- Released 8.5.5, October 15, 2008 --- See ChangeLog for details --- -- cgit v0.12 From 2675cccf21a75109c0b7e96a5d2cd5497122fbc6 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Oct 2008 19:29:30 +0000 Subject: tag 8.5.5 --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 49f4337..169ce4b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-10-10 Don Porter + *** 8.5.5 TAGGED FOR RELEASE *** + * generic/tcl.h: Bump to 8.5.5 for release. * library/init.tcl: * tools/tcl.wse.in: -- cgit v0.12 From e45c26dc9e680ebd012d146d76ba573da01481b8 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Fri, 10 Oct 2008 19:51:28 +0000 Subject: Fix version typo --- win/tcl.hpj.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/win/tcl.hpj.in b/win/tcl.hpj.in index 2a8c94a..0d01f35 100644 --- a/win/tcl.hpj.in +++ b/win/tcl.hpj.in @@ -5,9 +5,9 @@ HCW=0 LCID=0x409 0x0 0x0 ;English (United States) REPORT=Yes TITLE=Tcl/Tk Reference Manual -CNT=tcl84.cnt +CNT=tcl85.cnt COPYRIGHT=Copyright © 2000 Ajuba Solutions -HLP=tcl84.hlp +HLP=tcl85.hlp [FILES] tcl.rtf -- cgit v0.12 From 5e8b55c91a1d7a995e3dedfb11638761624b7e98 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 14 Oct 2008 15:55:58 +0000 Subject: missing constraint --- tests/util.test | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/util.test b/tests/util.test index 20a062f..30489c0 100644 --- a/tests/util.test +++ b/tests/util.test @@ -7,7 +7,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: util.test,v 1.18.8.1 2008/08/17 14:12:36 msofer Exp $ +# RCS: @(#) $Id: util.test,v 1.18.8.2 2008/10/14 15:55:58 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -15,6 +15,7 @@ if {[lsearch [namespace children] ::tcltest] == -1} { } testConstraint testdstring [llength [info commands testdstring]] +testConstraint testconcatobj [llength [info commands testconcatobj]] # Big test for correct ordering of data in [expr] @@ -163,7 +164,7 @@ test util-4.6 {Tcl_ConcatObj - utf-8 sequence with "whitespace" char} { # Check for Bug #227512. If this violates C isspace, then it returns \xc3. concat \xe0 } \xe0 -test util-4.7 {Tcl_ConcatObj - refCount safety} { +test util-4.7 {Tcl_ConcatObj - refCount safety} testconcatobj { # Check for Bug #1447328 (actually, bugs in its original "fix"). One of the # symptoms was Bug #2055782. testconcatobj -- cgit v0.12 From e348c5bb11e5d6330f0faa7b67d9d0f1bf21fb28 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 14 Oct 2008 18:16:42 +0000 Subject: backport more reliable tests --- tests/info.test | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/info.test b/tests/info.test index 1e32edc..f450809 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.47.2.6 2008/07/25 21:24:10 das Exp $ +# RCS: @(#) $Id: info.test,v 1.47.2.7 2008/10/14 18:16:42 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -762,15 +762,15 @@ test info-22.7 {info frame, global, absolute} {!singleTestInterp} { reduce [info frame 1] } {type source line 761 file info.test cmd test\ info-22.7\ \{info\ frame,\ global,\ absolute\}\ \{!singleTestInter level 0} test info-22.8 {info frame, basic trace} -constraints {!singleTestInterp} -match glob -body { - join [etrace] \n -} -result {8 {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} -7 {type source line 765 file info.test cmd etrace proc ::tcltest::RunTest} -6 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} -5 {type eval line 1 cmd {::tcltest::RunTest info-22} proc ::tcltest::Eval} -4 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\\ \\\{::tcltest::RunTest\\ info-22 proc ::tcltest::test} -2 {type source line * file tcltest.tcl cmd {uplevel 1 \[list \[namespace origin Eval\] $command 1\]} proc ::tcltest::test} -1 {type source line 764 file info.test cmd {test info-22.8 {info frame, basic trace} -constraints {!singleTestInterp} -match glob -bo} level 1}} + join [lrange [etrace] 0 2] \n +} -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type source line 765 file info.test cmd etrace proc ::tcltest::RunTest} +* {type source line * file tcltest* cmd {uplevel 1 $script} proc ::tcltest::RunTest}} + + + + + ## The line 1967 is off by 5 from the true value of 1972. This is a knownBug, see testcase 30.0 test info-23.0 {eval'd info frame} {!singleTestInterp} { @@ -797,16 +797,16 @@ test info-23.5 {eval'd info frame, dynamic} { } {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} test info-23.6 {eval'd info frame, trace} -constraints {!singleTestInterp} -match glob -body { set script {etrace} - join [eval $script] \n -} -result {9 {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} -8 {type eval line 1 cmd etrace proc ::tcltest::RunTest} -7 {type source line 800 file info.test cmd {eval $script} proc ::tcltest::RunTest} -6 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::RunTest} -5 {type eval line 1 cmd {::tcltest::RunTest info-23} proc ::tcltest::Eval} -4 {type source line * file tcltest.tcl cmd {uplevel 1 $script} proc ::tcltest::Eval} -3 {type eval line 1 cmd ::tcltest::Eval\\ \\\{::tcltest::RunTest\\ info-23 proc ::tcltest::test} -2 {type source line * file tcltest.tcl cmd {uplevel 1 \[list \[namespace origin Eval\] $command 1\]} proc ::tcltest::test} -1 {type source line 798 file info.test cmd {test info-23.6 {eval'd info frame, trace} -constraints {!singleTestInterp} -match glob -bo} level 1}} + join [lrange [eval $script] 0 2] \n +} -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} +* {type eval line 1 cmd etrace proc ::tcltest::RunTest} +* {type source line 800 file info.test cmd {eval $script} proc ::tcltest::RunTest}} + + + + + + ## The line 1967 is off by 5 from the true value of 1972. This is a knownBug, see testcase 30.0 # ------------------------------------------------------------------------- -- cgit v0.12 From 51a97c1adeeab4331646ad039505c7b99f7e1031 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 16 Oct 2008 16:07:06 +0000 Subject: * library/init.tcl: Revised [unknown] so that it carefully preserves the state of the ::errorInfo and ::errorCode variables at the start of auto-loading and restores that state before the autoloaded command is evaluated. [Bug 2140628] --- ChangeLog | 7 +++++++ library/init.tcl | 11 ++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 169ce4b..1713e50 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-10-16 Don Porter + + * library/init.tcl: Revised [unknown] so that it carefully + preserves the state of the ::errorInfo and ::errorCode variables + at the start of auto-loading and restores that state before the + autoloaded command is evaluated. [Bug 2140628] + 2008-10-10 Don Porter *** 8.5.5 TAGGED FOR RELEASE *** diff --git a/library/init.tcl b/library/init.tcl index 7105276..8491c16 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.7 2008/10/10 18:16:48 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.8 2008/10/16 16:07:06 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -276,8 +276,13 @@ proc unknown args { unset UnknownPending } if {$msg} { - catch {set ::errorCode $savedErrorCode} - catch {set ::errorInfo $savedErrorInfo} + unset -nocomplain ::errorCode ::errorInfo + if {[info exists savedErrorCode]} { + set ::errorCode $savedErrorCode + } + if {[info exists savedErrorInfo]} { + set ::errorInfo $savedErrorInfo + } set code [catch {uplevel 1 $args} msg opts] if {$code == 1} { # -- cgit v0.12 From c38bc9cb5af50362b82d645ec2eb8feb49357ef4 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 16 Oct 2008 16:58:38 +0000 Subject: silence Alex --- library/init.tcl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/library/init.tcl b/library/init.tcl index 8491c16..771b60e 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.8 2008/10/16 16:07:06 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.9 2008/10/16 16:58:38 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -276,12 +276,15 @@ proc unknown args { unset UnknownPending } if {$msg} { - unset -nocomplain ::errorCode ::errorInfo if {[info exists savedErrorCode]} { set ::errorCode $savedErrorCode + } else { + unset -nocomplain ::errorCode } if {[info exists savedErrorInfo]} { set ::errorInfo $savedErrorInfo + } else { + unset -nocomplain ::errorInfo } set code [catch {uplevel 1 $args} msg opts] if {$code == 1} { -- cgit v0.12 From 6ca3ccd39cb05badbe9504755fc01940035b513e Mon Sep 17 00:00:00 2001 From: dgp Date: Sun, 19 Oct 2008 19:54:22 +0000 Subject: * generic/tclProc.c: Reset -level and -code values to defaults after they are used. [Bug 2152286]. --- ChangeLog | 5 +++++ generic/tclProc.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1713e50..0477fae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-19 Don Porter + + * generic/tclProc.c: Reset -level and -code values to defaults + after they are used. [Bug 2152286]. + 2008-10-16 Don Porter * library/init.tcl: Revised [unknown] so that it carefully diff --git a/generic/tclProc.c b/generic/tclProc.c index bf67600..9313154 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.139.2.3 2008/08/11 19:01:59 andreas_kupries Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.139.2.4 2008/10/19 19:54:22 dgp Exp $ */ #include "tclInt.h" @@ -2239,9 +2239,14 @@ TclUpdateReturnInfo( if (iPtr->returnLevel == 0) { /* * Now we've reached the level to return the requested -code. + * Since iPtr->returnLevel and iPtr->returnCode have completed + * their task, we now reset them to default values so that any + * bare "return TCL_RETURN" that may follow will work [Bug 2152286]. */ code = iPtr->returnCode; + iPtr->returnLevel = 1; + iPtr->returnCode = TCL_OK; if (code == TCL_ERROR) { iPtr->flags |= ERR_LEGACY_COPY; } -- cgit v0.12 From 6fc24954200254fd28602e4e30340c3ad5c6680a Mon Sep 17 00:00:00 2001 From: das Date: Thu, 23 Oct 2008 12:19:02 +0000 Subject: only create test.dat file on windows, it is never used on unix and creation may fail due to insufficient permissions --- tests/winFile.test | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/tests/winFile.test b/tests/winFile.test index 0cefcb5..5f69921 100644 --- a/tests/winFile.test +++ b/tests/winFile.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFile.test,v 1.20 2007/12/14 13:52:55 patthoyts Exp $ +# RCS: @(#) $Id: winFile.test,v 1.20.2.1 2008/10/23 12:19:02 das Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -162,13 +162,15 @@ proc test_access {fname read writ} { } } -# Create the test file -# NOTE: [tcltest::makeFile] not used. Presumably to force file -# creation in a particular filesystem? If not, try [makeFile] -# in a -setup script. -set fname test.dat -file delete $fname -close [open $fname w] +if {[testConstraint win]} { + # Create the test file + # NOTE: [tcltest::makeFile] not used. Presumably to force file + # creation in a particular filesystem? If not, try [makeFile] + # in a -setup script. + set fname test.dat + file delete $fname + close [open $fname w] +} test winFile-4.0 { Enhanced NTFS user/group permissions: test no acccess @@ -234,7 +236,9 @@ test winFile-4.4 { test_access $fname 1 1 } -result {} -file delete $fname +if {[testConstraint win]} { + file delete $fname +} # cleanup cleanupTests -- cgit v0.12 From 6822a2263c4b65a93826d4a3c8bca50da930e38d Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 23 Oct 2008 16:27:23 +0000 Subject: * generic/tcl.h: Bump version number to 8.5.6b1 to distinguish * library/init.tcl: CVS development snapshots from the 8.5.5 and * unix/configure.in: 8.5.6 releases. * unix/tcl.spec: * win/configure.in: * tools/tcl.wse.in: * README * unix/configure: autoconf (2.59) * win/configure: --- ChangeLog | 13 +++++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- library/init.tcl | 4 ++-- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0477fae..4a2698c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-10-23 Don Porter + + * generic/tcl.h: Bump version number to 8.5.6b1 to distinguish + * library/init.tcl: CVS development snapshots from the 8.5.5 and + * unix/configure.in: 8.5.6 releases. + * unix/tcl.spec: + * win/configure.in: + * tools/tcl.wse.in: + * README + + * unix/configure: autoconf (2.59) + * win/configure: + 2008-10-19 Don Porter * generic/tclProc.c: Reset -level and -code values to defaults diff --git a/README b/README index bbf1903..fd4ce13 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.5.5 source distribution. + This is the Tcl 8.5.6b1 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.67.2.3 2008/08/28 16:08:28 dgp Exp $ +RCS: @(#) $Id: README,v 1.67.2.4 2008/10/23 16:27:24 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 4f37924..970d168 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.6 2008/10/10 18:16:47 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.7 2008/10/23 16:27:24 dgp Exp $ */ #ifndef _TCL @@ -60,10 +60,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 5 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 5 +#define TCL_RELEASE_SERIAL 6 #define TCL_VERSION "8.5" -#define TCL_PATCH_LEVEL "8.5.5" +#define TCL_PATCH_LEVEL "8.5.6b1" /* * The following definitions set up the proper options for Windows compilers. diff --git a/library/init.tcl b/library/init.tcl index 771b60e..e456fc4 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.9 2008/10/16 16:58:38 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.10 2008/10/23 16:27:24 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -17,7 +17,7 @@ if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.5.5 +package require -exact Tcl 8.5.6b1 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index fe5c8dd..19f0416 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.5.5 + Disk Label=tcl8.5.6b1 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index 7990060..b617348 100755 --- a/unix/configure +++ b/unix/configure @@ -1335,7 +1335,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".5" +TCL_PATCH_LEVEL=".6b1" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 867bfd2..503f35c 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.8 2008/10/10 18:16:48 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.9 2008/10/23 16:27:24 dgp Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -27,7 +27,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [ TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".5" +TCL_PATCH_LEVEL=".6b1" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 3a1e856..1582854 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,11 +1,11 @@ -# $Id: tcl.spec,v 1.37.2.5 2008/10/10 18:16:48 dgp Exp $ +# $Id: tcl.spec,v 1.37.2.6 2008/10/23 16:27:25 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. %{!?directory:%define directory /usr/local} Name: tcl Summary: Tcl scripting language development environment -Version: 8.5.5 +Version: 8.5.6b1 Release: 2 License: BSD Group: Development/Languages diff --git a/win/configure b/win/configure index e2c8cd8..0412f8a 100755 --- a/win/configure +++ b/win/configure @@ -1272,7 +1272,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".5" +TCL_PATCH_LEVEL=".6b1" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 diff --git a/win/configure.in b/win/configure.in index 1a9ed2d..f41fff1 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.104.2.5 2008/10/10 18:16:48 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.104.2.6 2008/10/23 16:27:25 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.59) @@ -16,7 +16,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".5" +TCL_PATCH_LEVEL=".6b1" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 -- cgit v0.12 From 8def31ff208a95aca8062c71d4dd6a020b417dbe Mon Sep 17 00:00:00 2001 From: patthoyts Date: Thu, 23 Oct 2008 23:34:32 +0000 Subject: Backported a fix for reading HTTP-like protocols that used to work and were broken with http 2.7. Now http 2.7.2 --- ChangeLog | 5 +++++ library/http/http.tcl | 17 ++++++++++------- library/http/pkgIndex.tcl | 2 +- unix/Makefile.in | 6 +++--- win/Makefile.in | 6 +++--- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4a2698c..14e41f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-24 Pat Thoyts + + * library/http/http.tcl: Backported a fix for reading HTTP-like protocols + that used to work and were broken with http 2.7. Now http 2.7.2 + 2008-10-23 Don Porter * generic/tcl.h: Bump version number to 8.5.6b1 to distinguish diff --git a/library/http/http.tcl b/library/http/http.tcl index 32c5309..06829cd 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,12 +8,12 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.67.2.4 2008/08/11 21:57:14 dgp Exp $ +# RCS: @(#) $Id: http.tcl,v 1.67.2.5 2008/10/23 23:34:32 patthoyts Exp $ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories # in Makefiles -package provide http 2.7.1 +package provide http 2.7.2 namespace eval http { # Allow resourcing to not clobber existing data @@ -319,7 +319,7 @@ proc http::geturl { url args } { -queryprogress {} -protocol 1.1 binary 0 - state header + state connecting meta {} coding {} currentsize 0 @@ -942,7 +942,12 @@ proc http::Event {sock token} { CloseSocket $sock return } - if {$state(state) eq "header"} { + if {$state(state) eq "connecting"} { + set state(state) "header" + if {[catch {gets $sock state(http)} n]} { + return [Finish $token $n] + } + } elseif {$state(state) eq "header"} { if {[catch {gets $sock line} n]} { return [Finish $token $n] } elseif {$n == 0} { @@ -985,7 +990,7 @@ proc http::Event {sock token} { fconfigure $state(-channel) -translation binary } } - if {[info exists state(-channel)] && + if {[info exists state(-channel)] && ![info exists state(-handler)]} { # Initiate a sequence of background fcopies fileevent $sock readable {} @@ -1019,8 +1024,6 @@ proc http::Event {sock token} { } } lappend state(meta) $key [string trim $value] - } elseif {[string match HTTP* $line]} { - set state(http) $line } } } else { diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 932017a..6badcea 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,4 +1,4 @@ # Tcl package index file, version 1.1 if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.7.1 [list tclPkgSetup $dir http 2.7.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +package ifneeded http 2.7.2 [list tclPkgSetup $dir http 2.7.2 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] diff --git a/unix/Makefile.in b/unix/Makefile.in index 45a2fad..901b4d7 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.8 2008/08/13 23:07:16 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.9 2008/10/23 23:34:32 patthoyts Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -782,8 +782,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs do \ $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \ done; - @echo "Installing package http 2.7.1 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.1.tm; + @echo "Installing package http 2.7.2 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.2.tm; @echo "Installing library opt0.4 directory"; @for i in $(TOP_DIR)/library/opt/*.tcl ; \ do \ diff --git a/win/Makefile.in b/win/Makefile.in index 4316677..8870d80 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.4 2008/08/11 21:57:17 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.5 2008/10/23 23:34:32 patthoyts Exp $ VERSION = @TCL_VERSION@ @@ -635,8 +635,8 @@ install-libraries: libraries install-tzdata install-msgs do \ $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \ done; - @echo "Installing package http 2.7.1 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.1.tm; + @echo "Installing package http 2.7.2 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.2.tm; @echo "Installing library opt0.4 directory"; @for j in $(ROOT_DIR)/library/opt/*.tcl; \ do \ -- cgit v0.12 From 5c2b16b9e79d4ef4fa8875a6b3cbb3ec75eee04a Mon Sep 17 00:00:00 2001 From: patthoyts Date: Fri, 24 Oct 2008 00:46:27 +0000 Subject: Removed a rogue ^M from the end of a line --- tools/man2tcl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/man2tcl.c b/tools/man2tcl.c index 64ec466..29946ec 100644 --- a/tools/man2tcl.c +++ b/tools/man2tcl.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: man2tcl.c,v 1.13.2.2 2008/10/06 18:42:11 mistachkin Exp $ + * RCS: @(#) $Id: man2tcl.c,v 1.13.2.3 2008/10/24 00:46:27 patthoyts Exp $ */ static char sccsid[] = "@(#) man2tcl.c 1.3 95/08/12 17:34:08"; @@ -352,7 +352,7 @@ DoText( sscanf(p,"%d",&ch); PRINT(("text \\u%04x\n", ch)); while(*p&&*p!='\'') p++; - p++; + p++; } else if (*p != 0) { PRINT(("char {\\%c}\n", *p)); p++; -- cgit v0.12 From 95243878b468893c8ae8883654f57e5a68cfd10e Mon Sep 17 00:00:00 2001 From: das Date: Sat, 1 Nov 2008 15:03:32 +0000 Subject: fix typo: s/ZoneinfoFile/LoadZoneinfoFile/ --- library/clock.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/clock.tcl b/library/clock.tcl index c657234..b3cf9db 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47 2008/02/27 02:08:27 kennykb Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.47.2.1 2008/11/01 15:03:32 das Exp $ # #---------------------------------------------------------------------- @@ -3214,7 +3214,7 @@ proc ::tcl::clock::SetupTimeZone { timezone } { # again with a time zone file - this time without a colon if { [catch { LoadTimeZoneFile $timezone }] - && [catch { ZoneinfoFile $timezone } - opts] } { + && [catch { LoadZoneinfoFile $timezone } - opts] } { dict unset opts -errorinfo return -options $opts "time zone $timezone not found" } -- cgit v0.12 From 51dbb45357db08773e07e3cbb9ace98dff372eaa Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 4 Nov 2008 23:54:30 +0000 Subject: * generic/tclPort.h: remove the ../{win,unix}/ header dirs as the build system already has it, and it confuses builds when used with private headers installed. --- ChangeLog | 6 ++++++ generic/tclPort.h | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4ecf365..d0939a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-11-04 Jeff Hobbs + + * generic/tclPort.h: remove the ../{win,unix}/ header dirs as the + build system already has it, and it confuses builds when used with + private headers installed. + 2008-09-25 Don Porter * doc/global.n: Correct false claim about [info locals]. diff --git a/generic/tclPort.h b/generic/tclPort.h index d724c73..7b0d741 100644 --- a/generic/tclPort.h +++ b/generic/tclPort.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPort.h,v 1.6.2.1 2003/04/16 23:31:46 dgp Exp $ + * RCS: @(#) $Id: tclPort.h,v 1.6.2.2 2008/11/04 23:54:30 hobbs Exp $ */ #ifndef _TCLPORT @@ -19,12 +19,12 @@ #include "tcl.h" #if defined(__WIN32__) -# include "../win/tclWinPort.h" +# include "tclWinPort.h" #else # if defined(MAC_TCL) # include "tclMacPort.h" # else -# include "../unix/tclUnixPort.h" +# include "tclUnixPort.h" # endif #endif -- cgit v0.12 From b3062216f2dec1c08dbe11dc8bafd35dff15af20 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 4 Nov 2008 23:56:59 +0000 Subject: * generic/tclPort.h: remove the ../win/ header dir as the build system already has it, and it confuses builds when used with private headers installed. --- ChangeLog | 11 +++++++++-- generic/tclPort.h | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14e41f9..75831d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,14 @@ +2008-11-04 Jeff Hobbs + + * generic/tclPort.h: remove the ../win/ header dir as the build + system already has it, and it confuses builds when used with + private headers installed. + 2008-10-24 Pat Thoyts - * library/http/http.tcl: Backported a fix for reading HTTP-like protocols - that used to work and were broken with http 2.7. Now http 2.7.2 + * library/http/http.tcl: Backported a fix for reading HTTP-like + protocols that used to work and were broken with http 2.7. Now + http 2.7.2 2008-10-23 Don Porter diff --git a/generic/tclPort.h b/generic/tclPort.h index ad98823..efc5a73 100644 --- a/generic/tclPort.h +++ b/generic/tclPort.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPort.h,v 1.15 2005/05/10 18:34:47 kennykb Exp $ + * RCS: @(#) $Id: tclPort.h,v 1.15.10.1 2008/11/04 23:56:59 hobbs Exp $ */ #ifndef _TCLPORT @@ -22,7 +22,7 @@ #include "tcl.h" #if defined(__WIN32__) -# include "../win/tclWinPort.h" +# include "tclWinPort.h" #else # include "tclUnixPort.h" #endif -- cgit v0.12 From 1a689ba82658d24a00cc016d1175dc7ed959a167 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 10 Nov 2008 17:57:10 +0000 Subject: * doc/platform_shell.n: Fixed [Bug 2255235], reported by Ulrich * library/platform/pkgIndex.tcl: Ring . * library/platform/shell.tcl: Updated the LOCATE command in the * library/tm.tcl: package 'platform::shell' to handle the new form * unix/Makefile.in: of 'provide' commands generated by tm.tcl. Bumped * win/Makefile.in: package to version 1.1.4. Added cross-references to the relevant parts of the code to avoid future desynchronization. --- ChangeLog | 10 ++++++++++ doc/platform_shell.n | 8 ++++---- library/platform/pkgIndex.tcl | 2 +- library/platform/shell.tcl | 6 ++++-- library/tm.tcl | 10 ++++++++++ unix/Makefile.in | 6 +++--- win/Makefile.in | 6 +++--- 7 files changed, 35 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 75831d0..4b52dff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-11-10 Andreas Kupries + + * doc/platform_shell.n: Fixed [Bug 2255235], reported by Ulrich + * library/platform/pkgIndex.tcl: Ring . + * library/platform/shell.tcl: Updated the LOCATE command in the + * library/tm.tcl: package 'platform::shell' to handle the new form + * unix/Makefile.in: of 'provide' commands generated by tm.tcl. Bumped + * win/Makefile.in: package to version 1.1.4. Added cross-references + to the relevant parts of the code to avoid future desynchronization. + 2008-11-04 Jeff Hobbs * generic/tclPort.h: remove the ../win/ header dir as the build diff --git a/doc/platform_shell.n b/doc/platform_shell.n index 995467e..37c2127 100644 --- a/doc/platform_shell.n +++ b/doc/platform_shell.n @@ -1,20 +1,20 @@ '\" -'\" Copyright (c) 2006 ActiveState Software Inc +'\" Copyright (c) 2006-2008 ActiveState Software Inc '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: platform_shell.n,v 1.6 2008/03/26 09:59:22 dkf Exp $ +'\" RCS: @(#) $Id: platform_shell.n,v 1.6.2.1 2008/11/10 17:57:10 andreas_kupries Exp $ '\" .so man.macros -.TH "platform::shell" n 1.1.3 platform::shell "Tcl Bundled Packages" +.TH "platform::shell" n 1.1.4 platform::shell "Tcl Bundled Packages" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME platform::shell \- System identification support code and utilities .SH SYNOPSIS .nf -\fBpackage require platform::shell ?1.1.3?\fR +\fBpackage require platform::shell ?1.1.4?\fR .sp \fBplatform::shell::generic \fIshell\fR \fBplatform::shell::identify \fIshell\fR diff --git a/library/platform/pkgIndex.tcl b/library/platform/pkgIndex.tcl index 68924cb..27d596f 100644 --- a/library/platform/pkgIndex.tcl +++ b/library/platform/pkgIndex.tcl @@ -1,3 +1,3 @@ package ifneeded platform 1.0.3 [list source [file join $dir platform.tcl]] -package ifneeded platform::shell 1.1.3 [list source [file join $dir shell.tcl]] +package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]] diff --git a/library/platform/shell.tcl b/library/platform/shell.tcl index b007666..407e639 100644 --- a/library/platform/shell.tcl +++ b/library/platform/shell.tcl @@ -104,8 +104,10 @@ proc ::platform::shell::LOCATE {bv ov} { # here. If the found package is wrapped we copy the code somewhere # where the spawned shell will be able to read it. + # Note: This code depends on the form of the 'provide' command + # generated by tm.tcl. Keep them in sync. See Bug 2255235. set pl [package ifneeded platform [package require platform]] - foreach {cmd base} $pl break + set base [lindex $pl end] set out 0 if {[lindex [file system $base]] ne "native"} { @@ -233,4 +235,4 @@ proc ::platform::shell::DIR {} { # ### ### ### ######### ######### ######### ## Ready -package provide platform::shell 1.1.3 +package provide platform::shell 1.1.4 diff --git a/library/tm.tcl b/library/tm.tcl index 24ddb86..c5db437 100644 --- a/library/tm.tcl +++ b/library/tm.tcl @@ -254,6 +254,16 @@ proc ::tcl::tm::UnknownHandler {original name args} { # means something else without the namespace # specifier. + # NOTE. When making changes to the format of the + # provide command generated below CHECK that the + # 'LOCATE' procedure in core file + # 'platform/shell.tcl' still understands it, or, + # if not, update its implementation appropriately. + # + # Right now LOCATE's implementation assumes that + # the path of the package file is the last element + # in the list. + package ifneeded $pkgname $pkgversion \ "[::list package provide $pkgname $pkgversion];[::list source -encoding utf-8 $file]" diff --git a/unix/Makefile.in b/unix/Makefile.in index 901b4d7..e698cb1 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.9 2008/10/23 23:34:32 patthoyts Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.10 2008/11/10 17:57:10 andreas_kupries Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -796,8 +796,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs @echo "Installing package platform 1.0.3 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.3.tm; - @echo "Installing package platform::shell 1.1.3 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/platform/shell.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform/shell-1.1.3.tm; + @echo "Installing package platform::shell 1.1.4 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/platform/shell.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform/shell-1.1.4.tm; @echo "Installing library encoding directory"; @for i in $(TOP_DIR)/library/encoding/*.enc ; do \ diff --git a/win/Makefile.in b/win/Makefile.in index 8870d80..ed02377 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.5 2008/10/23 23:34:32 patthoyts Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.6 2008/11/10 17:57:10 andreas_kupries Exp $ VERSION = @TCL_VERSION@ @@ -648,8 +648,8 @@ install-libraries: libraries install-tzdata install-msgs @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.0.tm; @echo "Installing package platform 1.0.3 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.3.tm; - @echo "Installing package platform::shell 1.1.3 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/platform/shell.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform/shell-1.1.3.tm; + @echo "Installing package platform::shell 1.1.4 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/platform/shell.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform/shell-1.1.4.tm; @echo "Installing encodings"; @for i in $(ROOT_DIR)/library/encoding/*.enc ; do \ $(COPY) "$$i" "$(SCRIPT_INSTALL_DIR)/encoding"; \ -- cgit v0.12 From 2b17014256a8e898ed0d13b9440fb93c8167e6cc Mon Sep 17 00:00:00 2001 From: nijtmans Date: Fri, 14 Nov 2008 00:22:39 +0000 Subject: Fixed [Bug 2269431]: load of shared objects leaves emporary files on windows --- ChangeLog | 8 ++++++++ generic/tclIOUtil.c | 16 +++++----------- generic/tclInt.h | 5 +++-- generic/tclLoad.c | 8 +++++--- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4b52dff..6a1f276 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-11-13 Jan Nijtmans + + * generic/tclInt.h: rename static function FSUnloadTempFile to + * generic/tclIOUtil.c TclFSUnloadTempFile, needed in tclLoad.c + + * generic/tclLoad.c Fixed [Bug 2269431]: load of shared + objects leaves temporary files on windows + 2008-11-10 Andreas Kupries * doc/platform_shell.n: Fixed [Bug 2255235], reported by Ulrich diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 745ba6b..396acd7 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.151 2008/02/27 03:35:49 jenglish Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.151.2.1 2008/11/14 00:22:39 nijtmans Exp $ */ #include "tclInt.h" @@ -436,12 +436,6 @@ TCL_DECLARE_MUTEX(cwdMutex) Tcl_ThreadDataKey tclFsDataKey; /* - * Declare fallback support function and information for Tcl_FSLoadFile - */ - -static Tcl_FSUnloadFileProc FSUnloadTempFile; - -/* * One of these structures is used each time we successfully load a file from * a file system by way of making a temporary copy of the file on the native * filesystem. We need to store both the actual unloadProc/clientData @@ -3381,7 +3375,7 @@ TclLoadFile( copyToPtr = NULL; (*handlePtr) = newLoadHandle; (*clientDataPtr) = (ClientData) tvdlPtr; - (*unloadProcPtr) = &FSUnloadTempFile; + (*unloadProcPtr) = TclFSUnloadTempFile; Tcl_ResetResult(interp); return retVal; @@ -3445,7 +3439,7 @@ TclpLoadFile( /* *--------------------------------------------------------------------------- * - * FSUnloadTempFile -- + * TclFSUnloadTempFile -- * * This function is called when we loaded a library of code via an * intermediate temporary file. This function ensures the library is @@ -3461,8 +3455,8 @@ TclpLoadFile( *--------------------------------------------------------------------------- */ -static void -FSUnloadTempFile( +void +TclFSUnloadTempFile( Tcl_LoadHandle loadHandle) /* loadHandle returned by a previous call to * Tcl_FSLoadFile(). The loadHandle is a token * that represents the loaded file. */ diff --git a/generic/tclInt.h b/generic/tclInt.h index f90b629..aef7a3f 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362.2.4 2008/09/17 18:14:39 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.5 2008/11/14 00:22:39 nijtmans Exp $ */ #ifndef _TCLINT @@ -2524,6 +2524,7 @@ MODULE_SCOPE double TclFloor(mp_int *a); MODULE_SCOPE void TclFormatNaN(double value, char *buffer); MODULE_SCOPE int TclFSFileAttrIndex(Tcl_Obj *pathPtr, const char *attributeName, int *indexPtr); +MODULE_SCOPE void TclFSUnloadTempFile(Tcl_LoadHandle loadHandle); MODULE_SCOPE int * TclGetAsyncReadyPtr(void); MODULE_SCOPE Tcl_Obj * TclGetBgErrorHandler(Tcl_Interp *interp); MODULE_SCOPE int TclGetChannelFromObj(Tcl_Interp *interp, @@ -3888,7 +3889,7 @@ MODULE_SCOPE void TclBNInitBignumFromWideUInt(mp_int *bignum, #include "tclTomMathDecls.h" #endif /* _TCLINT */ - + /* * Local Variables: * mode: c diff --git a/generic/tclLoad.c b/generic/tclLoad.c index 89e003c..90fe79c 100644 --- a/generic/tclLoad.c +++ b/generic/tclLoad.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoad.c,v 1.16.4.1 2008/10/07 20:51:46 nijtmans Exp $ + * RCS: @(#) $Id: tclLoad.c,v 1.16.4.2 2008/11/14 00:22:39 nijtmans Exp $ */ #include "tclInt.h" @@ -795,7 +795,7 @@ Tcl_UnloadObjCmd( if (unLoadProcPtr != NULL) { Tcl_MutexLock(&packageMutex); - if (pkgPtr->unloadProc != NULL) { + if ((pkgPtr->unloadProc != NULL) || (unLoadProcPtr == TclFSUnloadTempFile)) { (*unLoadProcPtr)(pkgPtr->loadHandle); } @@ -1154,7 +1154,9 @@ TclFinalizeLoad(void) if (pkgPtr->fileName[0] != '\0') { Tcl_FSUnloadFileProc *unLoadProcPtr = pkgPtr->unLoadProcPtr; - if ((unLoadProcPtr != NULL) && (pkgPtr->unloadProc != NULL)) { + if ((unLoadProcPtr != NULL) + && ((pkgPtr->unloadProc != NULL) + || (unLoadProcPtr == TclFSUnloadTempFile))) { (*unLoadProcPtr)(pkgPtr->loadHandle); } } -- cgit v0.12 From 3c9a69481dd1285a19f13ee18f5f4cc42cc1d877 Mon Sep 17 00:00:00 2001 From: nijtmans Date: Tue, 18 Nov 2008 07:02:17 +0000 Subject: fix [Bug 2308236] signature of Tcl_HashStats() wrong --- ChangeLog | 7 +++++++ doc/Hash.3 | 4 ++-- generic/tcl.decls | 4 ++-- generic/tclDecls.h | 6 +++--- generic/tclHash.c | 4 ++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6a1f276..53e654b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-11-18 Jan Nijtmans + + * generic/tcl.decls: Fix signature and implementation of + * generic/tclDecls.h: Tcl_HashStats, such that it conforms + * generic/tclHash.c: to the documentation. + * doc/Hash.3: [Bug 2308236] + 2008-11-13 Jan Nijtmans * generic/tclInt.h: rename static function FSUnloadTempFile to diff --git a/doc/Hash.3 b/doc/Hash.3 index 0bd3315..8204c10 100644 --- a/doc/Hash.3 +++ b/doc/Hash.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Hash.3,v 1.26 2007/12/13 15:22:31 dgp Exp $ +'\" RCS: @(#) $Id: Hash.3,v 1.26.2.1 2008/11/18 07:02:17 nijtmans Exp $ '\" .so man.macros .TH Tcl_Hash 3 "" Tcl "Tcl Library Procedures" @@ -46,7 +46,7 @@ Tcl_HashEntry * Tcl_HashEntry * \fBTcl_NextHashEntry\fR(\fIsearchPtr\fR) .sp -const char * +char * \fBTcl_HashStats\fR(\fItablePtr\fR) .SH ARGUMENTS .AS Tcl_HashKeyType *searchPtr out diff --git a/generic/tcl.decls b/generic/tcl.decls index ecc0415..c238167 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tcl.decls,v 1.131 2008/03/19 16:56:13 das Exp $ +# RCS: @(#) $Id: tcl.decls,v 1.131.2.1 2008/11/18 07:02:17 nijtmans Exp $ library tcl @@ -953,7 +953,7 @@ declare 268 generic { void Tcl_AppendStringsToObjVA(Tcl_Obj *objPtr, va_list argList) } declare 269 generic { - CONST84_RETURN char * Tcl_HashStats(Tcl_HashTable *tablePtr) + char * Tcl_HashStats(Tcl_HashTable *tablePtr) } declare 270 generic { CONST84_RETURN char * Tcl_ParseVar(Tcl_Interp *interp, CONST char *start, diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 865dd6c..c3099ff 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDecls.h,v 1.130 2007/12/13 15:23:16 dgp Exp $ + * RCS: @(#) $Id: tclDecls.h,v 1.130.2.1 2008/11/18 07:02:17 nijtmans Exp $ */ #ifndef _TCLDECLS @@ -1690,7 +1690,7 @@ EXTERN void Tcl_AppendStringsToObjVA (Tcl_Obj * objPtr, #ifndef Tcl_HashStats_TCL_DECLARED #define Tcl_HashStats_TCL_DECLARED /* 269 */ -EXTERN CONST84_RETURN char * Tcl_HashStats (Tcl_HashTable * tablePtr); +EXTERN char * Tcl_HashStats (Tcl_HashTable * tablePtr); #endif #ifndef Tcl_ParseVar_TCL_DECLARED #define Tcl_ParseVar_TCL_DECLARED @@ -3829,7 +3829,7 @@ typedef struct TclStubs { void (*tcl_ValidateAllMemory) (CONST char * file, int line); /* 266 */ void (*tcl_AppendResultVA) (Tcl_Interp * interp, va_list argList); /* 267 */ void (*tcl_AppendStringsToObjVA) (Tcl_Obj * objPtr, va_list argList); /* 268 */ - CONST84_RETURN char * (*tcl_HashStats) (Tcl_HashTable * tablePtr); /* 269 */ + char * (*tcl_HashStats) (Tcl_HashTable * tablePtr); /* 269 */ CONST84_RETURN char * (*tcl_ParseVar) (Tcl_Interp * interp, CONST char * start, CONST84 char ** termPtr); /* 270 */ CONST84_RETURN char * (*tcl_PkgPresent) (Tcl_Interp * interp, CONST char * name, CONST char * version, int exact); /* 271 */ CONST84_RETURN char * (*tcl_PkgPresentEx) (Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr); /* 272 */ diff --git a/generic/tclHash.c b/generic/tclHash.c index 4285c9b..a606885 100644 --- a/generic/tclHash.c +++ b/generic/tclHash.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclHash.c,v 1.33 2007/12/13 15:23:17 dgp Exp $ + * RCS: @(#) $Id: tclHash.c,v 1.33.2.1 2008/11/18 07:02:17 nijtmans Exp $ */ #include "tclInt.h" @@ -614,7 +614,7 @@ Tcl_NextHashEntry( *---------------------------------------------------------------------- */ -const char * +char * Tcl_HashStats( Tcl_HashTable *tablePtr) /* Table for which to produce stats. */ { -- cgit v0.12 From d1b599fdf3dea45f15ac51111a2f2888e99da411 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Sun, 23 Nov 2008 19:26:08 +0000 Subject: * generic/tclIO.c: Backport of fix for [Bug 2333466]. --- ChangeLog | 4 ++++ generic/tclIO.c | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d0939a3..195bdf8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-08-23 Andreas Kupries + + * generic/tclIO.c: Backport of fix for [Bug 2333466]. + 2008-11-04 Jeff Hobbs * generic/tclPort.h: remove the ../{win,unix}/ header dirs as the diff --git a/generic/tclIO.c b/generic/tclIO.c index 866d70a..b145d0f 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.29 2008/05/23 21:12:11 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.30 2008/11/23 19:26:09 andreas_kupries Exp $ */ #include "tclInt.h" @@ -9017,8 +9017,10 @@ Tcl_IsChannelExisting(chanName) name = statePtr->channelName; } + /* Bug 2333466. Include \0 in the compare to prevent partial matching on prefixes. + */ if ((*chanName == *name) && - (memcmp(name, chanName, (size_t) chanNameLen) == 0)) { + (memcmp(name, chanName, (size_t) chanNameLen+1) == 0)) { return 1; } } -- cgit v0.12 From 7aaca6e2af565920f71bb68dbd2182b4ca82ed90 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Sun, 23 Nov 2008 19:29:19 +0000 Subject: * generic/tclIO.c: Backport of fix for [Bug 2333466]. --- ChangeLog | 4 ++++ generic/tclIO.c | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 53e654b..3acfaed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-08-23 Andreas Kupries + + * generic/tclIO.c: Backport of fix for [Bug 2333466]. + 2008-11-18 Jan Nijtmans * generic/tcl.decls: Fix signature and implementation of diff --git a/generic/tclIO.c b/generic/tclIO.c index b30385f..d1c7b6b 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.6 2008/05/23 21:10:43 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.7 2008/11/23 19:29:19 andreas_kupries Exp $ */ #include "tclInt.h" @@ -9810,8 +9810,11 @@ Tcl_IsChannelExisting( name = statePtr->channelName; } + /* Bug 2333466. Include \0 in the compare to prevent partial matching + * on prefixes. + */ if ((*chanName == *name) && - (memcmp(name, chanName, (size_t) chanNameLen) == 0)) { + (memcmp(name, chanName, (size_t) chanNameLen+1) == 0)) { return 1; } } -- cgit v0.12 From 4f1e14923d50353097e8f629a8138d1acb8e64a1 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 25 Nov 2008 22:16:03 +0000 Subject: * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Alexandre Ferrieux's patch for [Bug 2270477] to prevent infinite looping during finalization of channels not bound to interpreters. --- ChangeLog | 6 ++++++ generic/tclIO.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3acfaed..80b6cc6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-11-25 Andreas Kupries + + * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Alexandre + Ferrieux's patch for [Bug 2270477] to prevent infinite looping + during finalization of channels not bound to interpreters. + 2008-08-23 Andreas Kupries * generic/tclIO.c: Backport of fix for [Bug 2333466]. diff --git a/generic/tclIO.c b/generic/tclIO.c index d1c7b6b..96659e8 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.7 2008/11/23 19:29:19 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.8 2008/11/25 22:16:03 andreas_kupries Exp $ */ #include "tclInt.h" @@ -364,8 +364,8 @@ TclFinalizeIOSubsystem(void) */ chanPtr->instanceData = NULL; - SetFlag(statePtr, CHANNEL_DEAD); } + SetFlag(statePtr, CHANNEL_DEAD); } } -- cgit v0.12 From 2f424655e647b4d30c4ba3440f3e18778ec0964a Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 25 Nov 2008 22:18:15 +0000 Subject: * generic/tclIO.c (TclFinalizeIOSubsystem): Applied backport of Alexandre Ferrieux's patch for [Bug 2270477] to prevent infinite looping during finalization of channels not bound to interpreters. --- ChangeLog | 7 +++++++ generic/tclIO.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 195bdf8..4803a8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-11-25 Andreas Kupries + + * generic/tclIO.c (TclFinalizeIOSubsystem): Applied backport of + Alexandre Ferrieux's patch for [Bug 2270477] to prevent infinite + looping during finalization of channels not bound to + interpreters. + 2008-08-23 Andreas Kupries * generic/tclIO.c: Backport of fix for [Bug 2333466]. diff --git a/generic/tclIO.c b/generic/tclIO.c index b145d0f..8b7dd2f 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.30 2008/11/23 19:26:09 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.31 2008/11/25 22:18:16 andreas_kupries Exp $ */ #include "tclInt.h" @@ -302,8 +302,8 @@ TclFinalizeIOSubsystem(void) */ chanPtr->instanceData = NULL; - statePtr->flags |= CHANNEL_DEAD; } + statePtr->flags |= CHANNEL_DEAD; } } -- cgit v0.12 From 336831b7a640936c4ab784e96c3c0116fe3b04aa Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sun, 30 Nov 2008 19:25:45 +0000 Subject: * library/clock.tcl (format, ParseClockScanFormat): Added a [string map] to get rid of namespace delimiters before caching a scan or format procedure [Bug 2362156]. * tests/clock.test (clock-64.[12]): Added test cases for the bug that was tickled by a namespace delimiter inside a format string. --- ChangeLog | 9 +++++++++ library/clock.tcl | 8 +++++--- tests/clock.test | 15 ++++++++++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 80b6cc6..ae75031 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-11-30 Kevin B. Kenny + + * library/clock.tcl (format, ParseClockScanFormat): Added a + [string map] to get rid of namespace delimiters before caching a + scan or format procedure [Bug 2362156]. + * tests/clock.test (clock-64.[12]): Added test cases for the bug + that was tickled by a namespace delimiter inside a format string. + + 2008-11-25 Andreas Kupries * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Alexandre diff --git a/library/clock.tcl b/library/clock.tcl index b3cf9db..8b371d9 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47.2.1 2008/11/01 15:03:32 das Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.47.2.2 2008/11/30 19:25:46 kennykb Exp $ # #---------------------------------------------------------------------- @@ -687,7 +687,8 @@ proc ::tcl::clock::format { args } { # name in the 'FormatProc' array to avoid losing its internal # representation, which contains the name resolution. - set procName ::tcl::clock::formatproc'$format'$locale + set procName formatproc'$format'$locale + set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName] if {[info exists FormatProc($procName)]} { set procName $FormatProc($procName) } else { @@ -1531,7 +1532,8 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { # Check whether the format has been parsed previously, and return # the existing recognizer if it has. - set procName [namespace current]::scanproc'$formatString'$locale + set procName scanproc'$formatString'$locale + set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName] if { [namespace which $procName] != {} } { return $procName } diff --git a/tests/clock.test b/tests/clock.test index cb7c4a1..cdb577f 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.83.2.2 2008/06/17 02:22:26 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.83.2.3 2008/11/30 19:25:46 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36644,6 +36644,19 @@ test clock-63.1 {Incorrect use of internal ConvertLocalToUTC command} {*}{ -result {key "localseconds" not found in dictionary} } +test clock-64.1 {:: in format string [Bug 2362156]} {*}{ + -body { + clock scan 2001-02-03::04:05:06 -gmt 1 -format %Y-%m-%d::%H:%M:%S + } + -result 981173106 +} +test clock-64.2 {:: in format string [Bug 2362156]} {*}{ + -body { + clock format 981173106 -gmt 1 -format %Y-%m-%d::%H:%M:%S + } + -result 2001-02-03::04:05:06 +} + # cleanup namespace delete ::testClock -- cgit v0.12 From fa556f0aad80fad65699c15f325c4374e083f6f5 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 1 Dec 2008 21:48:00 +0000 Subject: * generic/tclIO.c (TclFinalizeIOSubsystem): Revised latest commit to something that doesn't crash the test suite. --- ChangeLog | 5 +++++ generic/tclIO.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4803a8e..98d77ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-12-01 Don Porter + + * generic/tclIO.c (TclFinalizeIOSubsystem): Revised latest commit to + something that doesn't crash the test suite. + 2008-11-25 Andreas Kupries * generic/tclIO.c (TclFinalizeIOSubsystem): Applied backport of diff --git a/generic/tclIO.c b/generic/tclIO.c index 8b7dd2f..8e00054 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.31 2008/11/25 22:18:16 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.32 2008/12/01 21:48:01 dgp Exp $ */ #include "tclInt.h" @@ -235,7 +235,7 @@ TclFinalizeIOSubsystem(void) statePtr != NULL; statePtr = statePtr->nextCSPtr) { chanPtr = statePtr->topChanPtr; - if (!(statePtr->flags & CHANNEL_DEAD)) { + if (!(statePtr->flags & (CHANNEL_INCLOSE|CHANNEL_CLOSED|CHANNEL_DEAD))) { active = 1; break; } @@ -302,8 +302,8 @@ TclFinalizeIOSubsystem(void) */ chanPtr->instanceData = NULL; + statePtr->flags |= CHANNEL_DEAD; } - statePtr->flags |= CHANNEL_DEAD; } } -- cgit v0.12 From 7d7e6c17a1d6a68a6ca89923164fa69be4244f6e Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 1 Dec 2008 22:39:58 +0000 Subject: * generic/tclParse.c: Backport fix for [Bug 2251175]. --- ChangeLog | 4 ++++ generic/tclParse.c | 36 ++++++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index ae75031..f34a79a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-12-01 Don Porter + + * generic/tclParse.c: Backport fix for [Bug 2251175]. + 2008-11-30 Kevin B. Kenny * library/clock.tcl (format, ParseClockScanFormat): Added a diff --git a/generic/tclParse.c b/generic/tclParse.c index 3197ac8..769be99 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParse.c,v 1.62.2.1 2008/05/21 20:38:09 dgp Exp $ + * RCS: @(#) $Id: tclParse.c,v 1.62.2.2 2008/12/01 22:39:59 dgp Exp $ */ #include "tclInt.h" @@ -435,7 +435,7 @@ Tcl_ParseCommand( } if (isLiteral) { - int elemCount = 0, code = TCL_OK; + int elemCount = 0, code = TCL_OK, nakedbs = 0; const char *nextElem, *listEnd, *elemStart; /* @@ -457,21 +457,37 @@ Tcl_ParseCommand( */ while (nextElem < listEnd) { + int size, brace; + code = TclFindElement(NULL, nextElem, listEnd - nextElem, - &elemStart, &nextElem, NULL, NULL); - if (code != TCL_OK) break; + &elemStart, &nextElem, &size, &brace); + if (code != TCL_OK) { + break; + } + if (!brace) { + const char *s; + + for(s=elemStart;size>0;s++,size--) { + if ((*s)=='\\') { + nakedbs=1; + break; + } + } + } if (elemStart < listEnd) { elemCount++; } } - if (code != TCL_OK) { + if ((code != TCL_OK) || nakedbs) { /* - * Some list element could not be parsed. This means the - * literal string was not in fact a valid list. Defer the - * handling of this to compile/eval time, where code is - * already in place to report the "attempt to expand a - * non-list" error. + * Some list element could not be parsed, or contained + * naked backslashes. This means the literal string was + * not in fact a valid nor canonical list. Defer the + * handling of this to compile/eval time, where code is + * already in place to report the "attempt to expand a + * non-list" error or expand lists that require + * substitution. */ tokenPtr->type = TCL_TOKEN_EXPAND_WORD; -- cgit v0.12 From 367a0d1f43cd0fd0273c65d8398d77926f811239 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 2 Dec 2008 18:23:51 +0000 Subject: * generic/tclIO.c (TclFinalizeIOSubsystem): Replaced Alexandre Ferrieux's first patch for [Bug 2270477] with a gentler version, also supplied by him. --- ChangeLog | 6 ++++++ generic/tclIO.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f34a79a..878caab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-12-02 Andreas Kupries + + * generic/tclIO.c (TclFinalizeIOSubsystem): Replaced Alexandre + Ferrieux's first patch for [Bug 2270477] with a gentler version, + also supplied by him. + 2008-12-01 Don Porter * generic/tclParse.c: Backport fix for [Bug 2251175]. diff --git a/generic/tclIO.c b/generic/tclIO.c index 96659e8..2e8b7dc 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.8 2008/11/25 22:16:03 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.9 2008/12/02 18:23:51 andreas_kupries Exp $ */ #include "tclInt.h" @@ -299,7 +299,7 @@ TclFinalizeIOSubsystem(void) statePtr != NULL; statePtr = statePtr->nextCSPtr) { chanPtr = statePtr->topChanPtr; - if (!(statePtr->flags & CHANNEL_DEAD)) { + if (!(statePtr->flags & (CHANNEL_INCLOSE|CHANNEL_CLOSED|CHANNEL_DEAD))) { active = 1; break; } @@ -364,8 +364,8 @@ TclFinalizeIOSubsystem(void) */ chanPtr->instanceData = NULL; + SetFlag(statePtr, CHANNEL_DEAD); } - SetFlag(statePtr, CHANNEL_DEAD); } } -- cgit v0.12 From 1320303a3a83a32f63deae54d36d1cfe2cdb89e6 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 3 Dec 2008 06:36:04 +0000 Subject: * generic/tclFileName.c (TclDoGlob): One of the Tcl_FSMatchInDirectory() calls did not have its return code checked. Some VFS drivers can return TCL_ERROR, and when that's not checked, the error message gets converted into a list of matching files returned by [glob], with ridiculous results. --- ChangeLog | 8 ++++++++ generic/tclFileName.c | 8 ++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 98d77ec..7b38f39 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-12-03 Don Porter + + * generic/tclFileName.c (TclDoGlob): One of the + Tcl_FSMatchInDirectory() calls did not have its return code + checked. Some VFS drivers can return TCL_ERROR, and when that's + not checked, the error message gets converted into a list of + matching files returned by [glob], with ridiculous results. + 2008-12-01 Don Porter * generic/tclIO.c (TclFinalizeIOSubsystem): Revised latest commit to diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 15c04d8..c14893f 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.16 2008/08/13 17:59:06 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.17 2008/12/03 06:36:05 dgp Exp $ */ #include "tclInt.h" @@ -2662,10 +2662,10 @@ TclDoGlob(interp, separators, headPtr, tail, types) nameObj = Tcl_NewStringObj(name, Tcl_DStringLength(headPtr)); Tcl_IncrRefCount(nameObj); - Tcl_FSMatchInDirectory(interp, Tcl_GetObjResult(interp), nameObj, - NULL, types); + result = Tcl_FSMatchInDirectory(interp, Tcl_GetObjResult(interp), + nameObj, NULL, types); Tcl_DecrRefCount(nameObj); - return TCL_OK; + return result; } } -- cgit v0.12 From 07dfdbffea40d23c42aa88231f95e3d8a8360608 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 3 Dec 2008 07:03:13 +0000 Subject: * generic/tclFileName.c (DoGlob): One of the Tcl_FSMatchInDirectory() calls did not have its return code checked. This caused error messages returned by some Tcl_Filesystem drivers to be swallowed. --- ChangeLog | 7 +++++++ generic/tclFileName.c | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 878caab..8aa8b15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-12-03 Don Porter + + * generic/tclFileName.c (DoGlob): One of the + Tcl_FSMatchInDirectory() calls did not have its return code checked. + This caused error messages returned by some Tcl_Filesystem drivers + to be swallowed. + 2008-12-02 Andreas Kupries * generic/tclIO.c (TclFinalizeIOSubsystem): Replaced Alexandre diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 1c4b97e..c56c684 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.86.2.1 2008/08/13 18:12:56 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.86.2.2 2008/12/03 07:03:13 dgp Exp $ */ #include "tclInt.h" @@ -2456,9 +2456,10 @@ DoGlob( } Tcl_IncrRefCount(joinedPtr); Tcl_DStringFree(&append); - Tcl_FSMatchInDirectory(interp, matchesObj, joinedPtr, NULL, types); + result = Tcl_FSMatchInDirectory(interp, matchesObj, joinedPtr, NULL, + types); Tcl_DecrRefCount(joinedPtr); - return TCL_OK; + return result; } /* -- cgit v0.12 From a7c51a9e790452db4a5d6bb8f38111f2f8e401bd Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 4 Dec 2008 17:43:53 +0000 Subject: * generic/tclIOUtil.c (Tcl_FSGetNormalizedPath): Added another flag value TCLPATH_NEEDNORM to mark those intreps which need more complete normalization attention for correct results. [Bug 2385549] --- ChangeLog | 6 ++++ generic/tclIOUtil.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 84 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7b38f39..e4c4c29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-12-04 Don Porter + + * generic/tclIOUtil.c (Tcl_FSGetNormalizedPath): Added another + flag value TCLPATH_NEEDNORM to mark those intreps which need more + complete normalization attention for correct results. [Bug 2385549] + 2008-12-03 Don Porter * generic/tclFileName.c (TclDoGlob): One of the diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 0de5890..82aa209 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.38 2008/06/28 04:19:15 dgp Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.39 2008/12/04 17:43:53 dgp Exp $ */ #include "tclInt.h" @@ -4683,6 +4683,7 @@ typedef struct FsPath { #define TCLPATH_APPENDED 1 #define TCLPATH_RELATIVE 2 +#define TCLPATH_NEEDNORM 4 /* *---------------------------------------------------------------------- @@ -5092,6 +5093,8 @@ TclNewFSPathObj(Tcl_Obj *dirPtr, CONST char *addStrRep, int len) FsPath *fsPathPtr; Tcl_Obj *objPtr; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + CONST char *p; + int state = 0, count = 0; objPtr = Tcl_NewObj(); fsPathPtr = (FsPath*)ckalloc((unsigned)sizeof(FsPath)); @@ -5124,6 +5127,45 @@ TclNewFSPathObj(Tcl_Obj *dirPtr, CONST char *addStrRep, int len) objPtr->bytes = NULL; objPtr->length = 0; + /* + * Look for path components made up of only "." + * This is overly conservative analysis to keep simple. It may + * mark some things as needing more aggressive normalization + * that don't actually need it. No harm done. + */ + for (p = addStrRep; len > 0; p++, len--) { + switch (state) { + case 0: /* So far only "." since last dirsep or start */ + switch (*p) { + case '.': + count++; + break; + case '/': + case '\\': + case ':': + if (count) { + PATHFLAGS(objPtr) |= TCLPATH_NEEDNORM; + len = 0; + } + break; + default: + count = 0; + state = 1; + } + case 1: /* Scanning for next dirsep */ + switch (*p) { + case '/': + case '\\': + case ':': + state = 0; + break; + } + } + } + if (len == 0 && count) { + PATHFLAGS(objPtr) |= TCLPATH_NEEDNORM; + } + return objPtr; } @@ -5592,16 +5634,36 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) break; } Tcl_AppendObjToObj(copy, fsPathPtr->normPathPtr); - /* - * Normalize the combined string, but only starting after - * the end of the previously normalized 'dir'. This should - * be much faster! We use 'cwdLen-1' so that we are - * already pointing at the dir-separator that we know about. - * The normalization code will actually start off directly - * after that separator. - */ - TclFSNormalizeToUniquePath(interp, copy, cwdLen-1, - (fsPathPtr->nativePathPtr == NULL ? &clientData : NULL)); + + /* Normalize the combined string. */ + + if (PATHFLAGS(pathObjPtr) & TCLPATH_NEEDNORM) { + /* + * If the "tail" part has components (like /../) that cause + * the combined path to need more complete normalizing, + * call on the more powerful routine to accomplish that so + * we avoid [Bug 2385549] ... + */ + + Tcl_Obj *newCopy = TclFSNormalizeAbsolutePath(interp, copy, NULL); + Tcl_DecrRefCount(copy); + copy = newCopy; + } else { + /* + * ... but in most cases where we join a trouble free tail + * to a normalized head, we can more efficiently normalize the + * combined path by passing over only the unnormalized tail + * portion. When this is sufficient, prior developers claim + * this should be much faster. We use 'cwdLen-1' so that we are + * already pointing at the dir-separator that we know about. + * The normalization code will actually start off directly + * after that separator. + */ + + TclFSNormalizeToUniquePath(interp, copy, cwdLen-1, + (fsPathPtr->nativePathPtr == NULL ? &clientData : NULL)); + } + /* Now we need to construct the new path object */ if (pathType == TCL_PATH_RELATIVE) { @@ -5626,6 +5688,11 @@ Tcl_FSGetNormalizedPath(interp, pathObjPtr) Tcl_DecrRefCount(dir); } if (clientData != NULL) { + /* + * This may be unnecessary. It appears that the + * TclFSNormalizeToUniquePath call above should have already + * set this up. Not changing out of fear of the unknown. + */ fsPathPtr->nativePathPtr = clientData; } PATHFLAGS(pathObjPtr) = 0; -- cgit v0.12 From 92c485de11094aa36afc3b3268e96b7fa882ba43 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 4 Dec 2008 17:45:02 +0000 Subject: * generic/tclPathObj.c (Tcl_FSGetNormalizedPath): Added another flag value TCLPATH_NEEDNORM to mark those intreps which need more complete normalization attention for correct results. [Bug 2385549] --- ChangeLog | 6 ++++ generic/tclPathObj.c | 89 ++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 82 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8aa8b15..545461d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-12-04 Don Porter + + * generic/tclPathObj.c (Tcl_FSGetNormalizedPath): Added another + flag value TCLPATH_NEEDNORM to mark those intreps which need more + complete normalization attention for correct results. [Bug 2385549] + 2008-12-03 Don Porter * generic/tclFileName.c (DoGlob): One of the diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index cdf6e2b..dee1745 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.4 2008/06/29 19:08:36 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.5 2008/12/04 17:45:02 dgp Exp $ */ #include "tclInt.h" @@ -103,6 +103,7 @@ typedef struct FsPath { */ #define TCLPATH_APPENDED 1 +#define TCLPATH_NEEDNORM 4 /* * Define some macros to give us convenient access to path-object specific @@ -1246,6 +1247,8 @@ TclNewFSPathObj( FsPath *fsPathPtr; Tcl_Obj *pathPtr; ThreadSpecificData *tsdPtr; + const char *p; + int state = 0, count = 0; tsdPtr = TCL_TSD_INIT(&tclFsDataKey); @@ -1271,6 +1274,45 @@ TclNewFSPathObj( pathPtr->bytes = NULL; pathPtr->length = 0; + /* + * Look for path components made up of only "." + * This is overly conservative analysis to keep simple. It may + * mark some things as needing more aggressive normalization + * that don't actually need it. No harm done. + */ + for (p = addStrRep; len > 0; p++, len--) { + switch (state) { + case 0: /* So far only "." since last dirsep or start */ + switch (*p) { + case '.': + count++; + break; + case '/': + case '\\': + case ':': + if (count) { + PATHFLAGS(pathPtr) |= TCLPATH_NEEDNORM; + len = 0; + } + break; + default: + count = 0; + state = 1; + } + case 1: /* Scanning for next dirsep */ + switch (*p) { + case '/': + case '\\': + case ':': + state = 0; + break; + } + } + } + if (len == 0 && count) { + PATHFLAGS(pathPtr) |= TCLPATH_NEEDNORM; + } + return pathPtr; } @@ -1756,20 +1798,36 @@ Tcl_FSGetNormalizedPath( } Tcl_AppendObjToObj(copy, fsPathPtr->normPathPtr); - /* - * Normalize the combined string, but only starting after the end of - * the previously normalized 'dir'. This should be much faster! We use - * 'cwdLen-1' so that we are already pointing at the dir-separator - * that we know about. The normalization code will actually start off - * directly after that separator. - */ + /* Normalize the combined string. */ - TclFSNormalizeToUniquePath(interp, copy, cwdLen-1, - (fsPathPtr->nativePathPtr == NULL ? &clientData : NULL)); + if (PATHFLAGS(pathPtr) & TCLPATH_NEEDNORM) { + /* + * If the "tail" part has components (like /../) that cause + * the combined path to need more complete normalizing, + * call on the more powerful routine to accomplish that so + * we avoid [Bug 2385549] ... + */ - /* - * Now we need to construct the new path object - */ + Tcl_Obj *newCopy = TclFSNormalizeAbsolutePath(interp, copy, NULL); + Tcl_DecrRefCount(copy); + copy = newCopy; + } else { + /* + * ... but in most cases where we join a trouble free tail + * to a normalized head, we can more efficiently normalize the + * combined path by passing over only the unnormalized tail + * portion. When this is sufficient, prior developers claim + * this should be much faster. We use 'cwdLen-1' so that we are + * already pointing at the dir-separator that we know about. + * The normalization code will actually start off directly + * after that separator. + */ + + TclFSNormalizeToUniquePath(interp, copy, cwdLen-1, + (fsPathPtr->nativePathPtr == NULL ? &clientData : NULL)); + } + + /* Now we need to construct the new path object. */ if (pathType == TCL_PATH_RELATIVE) { Tcl_Obj *origDir = fsPathPtr->cwdPtr; @@ -1810,6 +1868,11 @@ Tcl_FSGetNormalizedPath( TclDecrRefCount(dir); } if (clientData != NULL) { + /* + * This may be unnecessary. It appears that the + * TclFSNormalizeToUniquePath call above should have already + * set this up. Not changing out of fear of the unknown. + */ fsPathPtr->nativePathPtr = clientData; } PATHFLAGS(pathPtr) = 0; -- cgit v0.12 From ae94091202e41e5a219b1dee5916c485f243b39d Mon Sep 17 00:00:00 2001 From: das Date: Sun, 7 Dec 2008 16:39:32 +0000 Subject: Tcl_MacOSXOpenVersionedBundleResources: Fix leak, simplify logic --- macosx/tclMacOSXBundle.c | 64 +++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 469d2f1..f9af0b9 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -48,7 +48,7 @@ * permission to use and distribute the software in accordance with the * terms specified in this license. * - * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.11 2007/04/23 20:46:13 das Exp $ + * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.11.4.1 2008/12/07 16:39:32 das Exp $ */ #include "tclPort.h" @@ -121,7 +121,7 @@ Tcl_MacOSXOpenVersionedBundleResources( char *libraryPath) { #ifdef HAVE_COREFOUNDATION - CFBundleRef bundleRef; + CFBundleRef bundleRef, versionedBundleRef = NULL; CFStringRef bundleNameRef; CFURLRef libURL; @@ -138,41 +138,46 @@ Tcl_MacOSXOpenVersionedBundleResources( * Create bundle from bundleVersion subdirectory of 'Versions'. */ - CFBundleRef versionedBundleRef = NULL; - CFURLRef versionedBundleURL = NULL; - CFStringRef bundleVersionRef = CFStringCreateWithCString(NULL, - bundleVersion, kCFStringEncodingUTF8); CFURLRef bundleURL = CFBundleCopyBundleURL(bundleRef); if (bundleURL) { - CFStringRef bundleTailRef = CFURLCopyLastPathComponent(bundleURL); + CFStringRef bundleVersionRef = CFStringCreateWithCString(NULL, + bundleVersion, kCFStringEncodingUTF8); - if (bundleTailRef) { - if (CFStringCompare(bundleTailRef, bundleVersionRef, 0) == - kCFCompareEqualTo) { - versionedBundleRef = bundleRef; - } - CFRelease(bundleTailRef); - } - } + if (bundleVersionRef) { + CFStringRef bundleTailRef = CFURLCopyLastPathComponent( + bundleURL); - if (bundleURL && !versionedBundleRef) { - CFURLRef versURL = CFURLCreateCopyAppendingPathComponent(NULL, - bundleURL, CFSTR("Versions"), TRUE); - - if (versURL) { - versionedBundleURL = CFURLCreateCopyAppendingPathComponent( - NULL, versURL, bundleVersionRef, TRUE); - CFRelease(versURL); + if (bundleTailRef) { + if (CFStringCompare(bundleTailRef, bundleVersionRef, 0) == + kCFCompareEqualTo) { + versionedBundleRef = (CFBundleRef) CFRetain(bundleRef); + } + CFRelease(bundleTailRef); + } + if (!versionedBundleRef) { + CFURLRef versURL = CFURLCreateCopyAppendingPathComponent( + NULL, bundleURL, CFSTR("Versions"), TRUE); + + if (versURL) { + CFURLRef versionedBundleURL = + CFURLCreateCopyAppendingPathComponent( + NULL, versURL, bundleVersionRef, TRUE); + if (versionedBundleURL) { + versionedBundleRef = CFBundleCreate(NULL, + versionedBundleURL); + CFRelease(versionedBundleURL); + } + CFRelease(versURL); + } + } + CFRelease(bundleVersionRef); } CFRelease(bundleURL); } - CFRelease(bundleVersionRef); - if (versionedBundleURL) { - versionedBundleRef = CFBundleCreate(NULL, versionedBundleURL); - CFRelease(versionedBundleURL); + if (versionedBundleRef) { + bundleRef = versionedBundleRef; } - bundleRef = versionedBundleRef; } if (bundleRef) { @@ -219,6 +224,9 @@ Tcl_MacOSXOpenVersionedBundleResources( (unsigned char*) libraryPath, maxPathLen); CFRelease(libURL); } + if (versionedBundleRef) { + CFRelease(versionedBundleRef); + } } if (libraryPath[0]) { -- cgit v0.12 From 21007eb5fa1a81fd34515e6412b38e7531dcf45c Mon Sep 17 00:00:00 2001 From: das Date: Sun, 7 Dec 2008 16:39:56 +0000 Subject: Tcl_MacOSXOpenVersionedBundleResources: Fix leak, simplify logic --- macosx/tclMacOSXBundle.c | 64 +++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 3355e5f..af047d2 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -48,7 +48,7 @@ * permission to use and distribute the software in accordance with the * terms specified in this license. * - * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.3.2.6 2007/04/29 02:21:33 das Exp $ + * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.3.2.7 2008/12/07 16:39:56 das Exp $ */ #include "tclPort.h" @@ -121,7 +121,7 @@ Tcl_MacOSXOpenVersionedBundleResources( char *libraryPath) { #ifdef HAVE_COREFOUNDATION - CFBundleRef bundleRef; + CFBundleRef bundleRef, versionedBundleRef = NULL; CFStringRef bundleNameRef; CFURLRef libURL; @@ -138,41 +138,46 @@ Tcl_MacOSXOpenVersionedBundleResources( * Create bundle from bundleVersion subdirectory of 'Versions'. */ - CFBundleRef versionedBundleRef = NULL; - CFURLRef versionedBundleURL = NULL; - CFStringRef bundleVersionRef = CFStringCreateWithCString(NULL, - bundleVersion, kCFStringEncodingUTF8); CFURLRef bundleURL = CFBundleCopyBundleURL(bundleRef); if (bundleURL) { - CFStringRef bundleTailRef = CFURLCopyLastPathComponent(bundleURL); + CFStringRef bundleVersionRef = CFStringCreateWithCString(NULL, + bundleVersion, kCFStringEncodingUTF8); - if (bundleTailRef) { - if (CFStringCompare(bundleTailRef, bundleVersionRef, 0) == - kCFCompareEqualTo) { - versionedBundleRef = bundleRef; - } - CFRelease(bundleTailRef); - } - } + if (bundleVersionRef) { + CFStringRef bundleTailRef = CFURLCopyLastPathComponent( + bundleURL); - if (bundleURL && !versionedBundleRef) { - CFURLRef versURL = CFURLCreateCopyAppendingPathComponent(NULL, - bundleURL, CFSTR("Versions"), TRUE); - - if (versURL) { - versionedBundleURL = CFURLCreateCopyAppendingPathComponent( - NULL, versURL, bundleVersionRef, TRUE); - CFRelease(versURL); + if (bundleTailRef) { + if (CFStringCompare(bundleTailRef, bundleVersionRef, 0) == + kCFCompareEqualTo) { + versionedBundleRef = (CFBundleRef) CFRetain(bundleRef); + } + CFRelease(bundleTailRef); + } + if (!versionedBundleRef) { + CFURLRef versURL = CFURLCreateCopyAppendingPathComponent( + NULL, bundleURL, CFSTR("Versions"), TRUE); + + if (versURL) { + CFURLRef versionedBundleURL = + CFURLCreateCopyAppendingPathComponent( + NULL, versURL, bundleVersionRef, TRUE); + if (versionedBundleURL) { + versionedBundleRef = CFBundleCreate(NULL, + versionedBundleURL); + CFRelease(versionedBundleURL); + } + CFRelease(versURL); + } + } + CFRelease(bundleVersionRef); } CFRelease(bundleURL); } - CFRelease(bundleVersionRef); - if (versionedBundleURL) { - versionedBundleRef = CFBundleCreate(NULL, versionedBundleURL); - CFRelease(versionedBundleURL); + if (versionedBundleRef) { + bundleRef = versionedBundleRef; } - bundleRef = versionedBundleRef; } if (bundleRef) { @@ -219,6 +224,9 @@ Tcl_MacOSXOpenVersionedBundleResources( (unsigned char*) libraryPath, maxPathLen); CFRelease(libURL); } + if (versionedBundleRef) { + CFRelease(versionedBundleRef); + } } if (libraryPath[0]) { -- cgit v0.12 From fb8da459b418ec25e0dfbaa7f5bfa1e2cbe040f0 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 10 Dec 2008 19:03:58 +0000 Subject: library/tzdata/*: Update from Olson's tzdata2008i. --- ChangeLog | 4 + library/tzdata/Africa/Casablanca | 2 +- library/tzdata/America/Argentina/Buenos_Aires | 184 ++++++++++++------------ library/tzdata/America/Argentina/Catamarca | 184 +----------------------- library/tzdata/America/Argentina/Cordoba | 184 ++++++++++++------------ library/tzdata/America/Argentina/Jujuy | 184 +----------------------- library/tzdata/America/Argentina/La_Rioja | 184 +----------------------- library/tzdata/America/Argentina/Mendoza | 184 +----------------------- library/tzdata/America/Argentina/Rio_Gallegos | 184 +----------------------- library/tzdata/America/Argentina/Salta | 66 +++++++++ library/tzdata/America/Argentina/San_Juan | 184 +----------------------- library/tzdata/America/Argentina/Tucuman | 184 ++++++++++++------------ library/tzdata/America/Argentina/Ushuaia | 184 +----------------------- library/tzdata/America/Campo_Grande | 196 +++++++++++++------------- library/tzdata/America/Cuiaba | 196 +++++++++++++------------- library/tzdata/America/Sao_Paulo | 196 +++++++++++++------------- library/tzdata/Asia/Damascus | 184 ++++++++++++------------ library/tzdata/Asia/Gaza | 184 ++++++++++++------------ library/tzdata/Asia/Karachi | 2 +- library/tzdata/Indian/Mauritius | 183 +++++++++++++++++++++++- 20 files changed, 1015 insertions(+), 2038 deletions(-) create mode 100644 library/tzdata/America/Argentina/Salta diff --git a/ChangeLog b/ChangeLog index 545461d..22492a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-12-10 Kevin B. Kenny + + * library/tzdata/*: Update from Olson's tzdata2008i. + 2008-12-04 Don Porter * generic/tclPathObj.c (Tcl_FSGetNormalizedPath): Added another diff --git a/library/tzdata/Africa/Casablanca b/library/tzdata/Africa/Casablanca index 15613fb..da64c44 100644 --- a/library/tzdata/Africa/Casablanca +++ b/library/tzdata/Africa/Casablanca @@ -22,5 +22,5 @@ set TZData(:Africa/Casablanca) { {448243200 3600 0 CET} {504918000 0 0 WET} {1212278400 3600 1 WEST} - {1222556400 0 0 WET} + {1220223600 0 0 WET} } diff --git a/library/tzdata/America/Argentina/Buenos_Aires b/library/tzdata/America/Argentina/Buenos_Aires index bb9df31..beccff3 100644 --- a/library/tzdata/America/Argentina/Buenos_Aires +++ b/library/tzdata/America/Argentina/Buenos_Aires @@ -62,187 +62,187 @@ set TZData(:America/Argentina/Buenos_Aires) { {952056000 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} + {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} + {1255834800 -7200 1 ARST} {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} + {1287284400 -7200 1 ARST} {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} + {1318734000 -7200 1 ARST} {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} + {1350788400 -7200 1 ARST} {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} + {1382238000 -7200 1 ARST} {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} + {1413687600 -7200 1 ARST} {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} + {1445137200 -7200 1 ARST} {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} + {1476586800 -7200 1 ARST} {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} + {1508036400 -7200 1 ARST} {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} + {1540090800 -7200 1 ARST} {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} + {1571540400 -7200 1 ARST} {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} + {1602990000 -7200 1 ARST} {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} + {1634439600 -7200 1 ARST} {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} + {1665889200 -7200 1 ARST} {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} + {1697338800 -7200 1 ARST} {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} + {1729393200 -7200 1 ARST} {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} + {1760842800 -7200 1 ARST} {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} + {1792292400 -7200 1 ARST} {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} + {1823742000 -7200 1 ARST} {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} + {1855191600 -7200 1 ARST} {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} + {1887246000 -7200 1 ARST} {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} + {1918695600 -7200 1 ARST} {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} + {1950145200 -7200 1 ARST} {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} + {1981594800 -7200 1 ARST} {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} + {2013044400 -7200 1 ARST} {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} + {2044494000 -7200 1 ARST} {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} + {2076548400 -7200 1 ARST} {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} + {2107998000 -7200 1 ARST} {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} + {2139447600 -7200 1 ARST} {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} + {2170897200 -7200 1 ARST} {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} + {2202346800 -7200 1 ARST} {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} + {2234401200 -7200 1 ARST} {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} + {2265850800 -7200 1 ARST} {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} + {2297300400 -7200 1 ARST} {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} + {2328750000 -7200 1 ARST} {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} + {2360199600 -7200 1 ARST} {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} + {2391649200 -7200 1 ARST} {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} + {2423703600 -7200 1 ARST} {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} + {2455153200 -7200 1 ARST} {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} + {2486602800 -7200 1 ARST} {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} + {2518052400 -7200 1 ARST} {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} + {2549502000 -7200 1 ARST} {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} + {2580951600 -7200 1 ARST} {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} + {2613006000 -7200 1 ARST} {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} + {2644455600 -7200 1 ARST} {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} + {2675905200 -7200 1 ARST} {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} + {2707354800 -7200 1 ARST} {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} + {2738804400 -7200 1 ARST} {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} + {2770858800 -7200 1 ARST} {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} + {2802308400 -7200 1 ARST} {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} + {2833758000 -7200 1 ARST} {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} + {2865207600 -7200 1 ARST} {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} + {2896657200 -7200 1 ARST} {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} + {2928106800 -7200 1 ARST} {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} + {2960161200 -7200 1 ARST} {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} + {2991610800 -7200 1 ARST} {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} + {3023060400 -7200 1 ARST} {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} + {3054510000 -7200 1 ARST} {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} + {3085959600 -7200 1 ARST} {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} + {3118014000 -7200 1 ARST} {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} + {3149463600 -7200 1 ARST} {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} + {3180913200 -7200 1 ARST} {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} + {3212362800 -7200 1 ARST} {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} + {3243812400 -7200 1 ARST} {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} + {3275262000 -7200 1 ARST} {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} + {3307316400 -7200 1 ARST} {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} + {3338766000 -7200 1 ARST} {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} + {3370215600 -7200 1 ARST} {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} + {3401665200 -7200 1 ARST} {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} + {3433114800 -7200 1 ARST} {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} + {3464564400 -7200 1 ARST} {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} + {3496618800 -7200 1 ARST} {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} + {3528068400 -7200 1 ARST} {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} + {3559518000 -7200 1 ARST} {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} + {3590967600 -7200 1 ARST} {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} + {3622417200 -7200 1 ARST} {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} + {3654471600 -7200 1 ARST} {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} + {3685921200 -7200 1 ARST} {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} + {3717370800 -7200 1 ARST} {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} + {3748820400 -7200 1 ARST} {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} + {3780270000 -7200 1 ARST} {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} + {3811719600 -7200 1 ARST} {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} + {3843774000 -7200 1 ARST} {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} + {3875223600 -7200 1 ARST} {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} + {3906673200 -7200 1 ARST} {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} + {3938122800 -7200 1 ARST} {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} + {3969572400 -7200 1 ARST} {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} + {4001626800 -7200 1 ARST} {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} + {4033076400 -7200 1 ARST} {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} + {4064526000 -7200 1 ARST} {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Argentina/Catamarca b/library/tzdata/America/Argentina/Catamarca index fde4553..7739203 100644 --- a/library/tzdata/America/Argentina/Catamarca +++ b/library/tzdata/America/Argentina/Catamarca @@ -64,187 +64,5 @@ set TZData(:America/Argentina/Catamarca) { {1087704000 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {1224295200 -10800 0 ART} } diff --git a/library/tzdata/America/Argentina/Cordoba b/library/tzdata/America/Argentina/Cordoba index 97469b8..798ee86 100644 --- a/library/tzdata/America/Argentina/Cordoba +++ b/library/tzdata/America/Argentina/Cordoba @@ -62,187 +62,187 @@ set TZData(:America/Argentina/Cordoba) { {952056000 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} + {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} + {1255834800 -7200 1 ARST} {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} + {1287284400 -7200 1 ARST} {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} + {1318734000 -7200 1 ARST} {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} + {1350788400 -7200 1 ARST} {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} + {1382238000 -7200 1 ARST} {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} + {1413687600 -7200 1 ARST} {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} + {1445137200 -7200 1 ARST} {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} + {1476586800 -7200 1 ARST} {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} + {1508036400 -7200 1 ARST} {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} + {1540090800 -7200 1 ARST} {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} + {1571540400 -7200 1 ARST} {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} + {1602990000 -7200 1 ARST} {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} + {1634439600 -7200 1 ARST} {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} + {1665889200 -7200 1 ARST} {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} + {1697338800 -7200 1 ARST} {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} + {1729393200 -7200 1 ARST} {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} + {1760842800 -7200 1 ARST} {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} + {1792292400 -7200 1 ARST} {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} + {1823742000 -7200 1 ARST} {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} + {1855191600 -7200 1 ARST} {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} + {1887246000 -7200 1 ARST} {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} + {1918695600 -7200 1 ARST} {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} + {1950145200 -7200 1 ARST} {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} + {1981594800 -7200 1 ARST} {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} + {2013044400 -7200 1 ARST} {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} + {2044494000 -7200 1 ARST} {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} + {2076548400 -7200 1 ARST} {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} + {2107998000 -7200 1 ARST} {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} + {2139447600 -7200 1 ARST} {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} + {2170897200 -7200 1 ARST} {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} + {2202346800 -7200 1 ARST} {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} + {2234401200 -7200 1 ARST} {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} + {2265850800 -7200 1 ARST} {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} + {2297300400 -7200 1 ARST} {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} + {2328750000 -7200 1 ARST} {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} + {2360199600 -7200 1 ARST} {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} + {2391649200 -7200 1 ARST} {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} + {2423703600 -7200 1 ARST} {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} + {2455153200 -7200 1 ARST} {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} + {2486602800 -7200 1 ARST} {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} + {2518052400 -7200 1 ARST} {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} + {2549502000 -7200 1 ARST} {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} + {2580951600 -7200 1 ARST} {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} + {2613006000 -7200 1 ARST} {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} + {2644455600 -7200 1 ARST} {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} + {2675905200 -7200 1 ARST} {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} + {2707354800 -7200 1 ARST} {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} + {2738804400 -7200 1 ARST} {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} + {2770858800 -7200 1 ARST} {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} + {2802308400 -7200 1 ARST} {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} + {2833758000 -7200 1 ARST} {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} + {2865207600 -7200 1 ARST} {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} + {2896657200 -7200 1 ARST} {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} + {2928106800 -7200 1 ARST} {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} + {2960161200 -7200 1 ARST} {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} + {2991610800 -7200 1 ARST} {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} + {3023060400 -7200 1 ARST} {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} + {3054510000 -7200 1 ARST} {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} + {3085959600 -7200 1 ARST} {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} + {3118014000 -7200 1 ARST} {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} + {3149463600 -7200 1 ARST} {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} + {3180913200 -7200 1 ARST} {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} + {3212362800 -7200 1 ARST} {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} + {3243812400 -7200 1 ARST} {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} + {3275262000 -7200 1 ARST} {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} + {3307316400 -7200 1 ARST} {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} + {3338766000 -7200 1 ARST} {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} + {3370215600 -7200 1 ARST} {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} + {3401665200 -7200 1 ARST} {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} + {3433114800 -7200 1 ARST} {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} + {3464564400 -7200 1 ARST} {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} + {3496618800 -7200 1 ARST} {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} + {3528068400 -7200 1 ARST} {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} + {3559518000 -7200 1 ARST} {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} + {3590967600 -7200 1 ARST} {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} + {3622417200 -7200 1 ARST} {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} + {3654471600 -7200 1 ARST} {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} + {3685921200 -7200 1 ARST} {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} + {3717370800 -7200 1 ARST} {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} + {3748820400 -7200 1 ARST} {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} + {3780270000 -7200 1 ARST} {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} + {3811719600 -7200 1 ARST} {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} + {3843774000 -7200 1 ARST} {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} + {3875223600 -7200 1 ARST} {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} + {3906673200 -7200 1 ARST} {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} + {3938122800 -7200 1 ARST} {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} + {3969572400 -7200 1 ARST} {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} + {4001626800 -7200 1 ARST} {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} + {4033076400 -7200 1 ARST} {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} + {4064526000 -7200 1 ARST} {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Argentina/Jujuy b/library/tzdata/America/Argentina/Jujuy index b6a57d4..4f95f8a 100644 --- a/library/tzdata/America/Argentina/Jujuy +++ b/library/tzdata/America/Argentina/Jujuy @@ -63,187 +63,5 @@ set TZData(:America/Argentina/Jujuy) { {952056000 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {1224295200 -10800 0 ART} } diff --git a/library/tzdata/America/Argentina/La_Rioja b/library/tzdata/America/Argentina/La_Rioja index a9b9bd8..835e29d 100644 --- a/library/tzdata/America/Argentina/La_Rioja +++ b/library/tzdata/America/Argentina/La_Rioja @@ -65,187 +65,5 @@ set TZData(:America/Argentina/La_Rioja) { {1087704000 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {1224295200 -10800 0 ART} } diff --git a/library/tzdata/America/Argentina/Mendoza b/library/tzdata/America/Argentina/Mendoza index a74b660..2c6fb58 100644 --- a/library/tzdata/America/Argentina/Mendoza +++ b/library/tzdata/America/Argentina/Mendoza @@ -64,187 +64,5 @@ set TZData(:America/Argentina/Mendoza) { {1096171200 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {1224295200 -10800 0 ART} } diff --git a/library/tzdata/America/Argentina/Rio_Gallegos b/library/tzdata/America/Argentina/Rio_Gallegos index 83089d3..91d37dd 100644 --- a/library/tzdata/America/Argentina/Rio_Gallegos +++ b/library/tzdata/America/Argentina/Rio_Gallegos @@ -64,187 +64,5 @@ set TZData(:America/Argentina/Rio_Gallegos) { {1087704000 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {1224295200 -10800 0 ART} } diff --git a/library/tzdata/America/Argentina/Salta b/library/tzdata/America/Argentina/Salta new file mode 100644 index 0000000..a5a7010 --- /dev/null +++ b/library/tzdata/America/Argentina/Salta @@ -0,0 +1,66 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Salta) { + {-9223372036854775808 -15700 0 LMT} + {-2372096300 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -14400 0 WART} + {687931200 -7200 0 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/San_Juan b/library/tzdata/America/Argentina/San_Juan index 784bc24..417e234 100644 --- a/library/tzdata/America/Argentina/San_Juan +++ b/library/tzdata/America/Argentina/San_Juan @@ -65,187 +65,5 @@ set TZData(:America/Argentina/San_Juan) { {1090728000 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {1224295200 -10800 0 ART} } diff --git a/library/tzdata/America/Argentina/Tucuman b/library/tzdata/America/Argentina/Tucuman index 14da17d..6d12cb6 100644 --- a/library/tzdata/America/Argentina/Tucuman +++ b/library/tzdata/America/Argentina/Tucuman @@ -64,187 +64,187 @@ set TZData(:America/Argentina/Tucuman) { {1087099200 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} + {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} + {1255834800 -7200 1 ARST} {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} + {1287284400 -7200 1 ARST} {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} + {1318734000 -7200 1 ARST} {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} + {1350788400 -7200 1 ARST} {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} + {1382238000 -7200 1 ARST} {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} + {1413687600 -7200 1 ARST} {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} + {1445137200 -7200 1 ARST} {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} + {1476586800 -7200 1 ARST} {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} + {1508036400 -7200 1 ARST} {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} + {1540090800 -7200 1 ARST} {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} + {1571540400 -7200 1 ARST} {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} + {1602990000 -7200 1 ARST} {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} + {1634439600 -7200 1 ARST} {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} + {1665889200 -7200 1 ARST} {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} + {1697338800 -7200 1 ARST} {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} + {1729393200 -7200 1 ARST} {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} + {1760842800 -7200 1 ARST} {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} + {1792292400 -7200 1 ARST} {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} + {1823742000 -7200 1 ARST} {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} + {1855191600 -7200 1 ARST} {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} + {1887246000 -7200 1 ARST} {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} + {1918695600 -7200 1 ARST} {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} + {1950145200 -7200 1 ARST} {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} + {1981594800 -7200 1 ARST} {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} + {2013044400 -7200 1 ARST} {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} + {2044494000 -7200 1 ARST} {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} + {2076548400 -7200 1 ARST} {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} + {2107998000 -7200 1 ARST} {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} + {2139447600 -7200 1 ARST} {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} + {2170897200 -7200 1 ARST} {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} + {2202346800 -7200 1 ARST} {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} + {2234401200 -7200 1 ARST} {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} + {2265850800 -7200 1 ARST} {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} + {2297300400 -7200 1 ARST} {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} + {2328750000 -7200 1 ARST} {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} + {2360199600 -7200 1 ARST} {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} + {2391649200 -7200 1 ARST} {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} + {2423703600 -7200 1 ARST} {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} + {2455153200 -7200 1 ARST} {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} + {2486602800 -7200 1 ARST} {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} + {2518052400 -7200 1 ARST} {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} + {2549502000 -7200 1 ARST} {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} + {2580951600 -7200 1 ARST} {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} + {2613006000 -7200 1 ARST} {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} + {2644455600 -7200 1 ARST} {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} + {2675905200 -7200 1 ARST} {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} + {2707354800 -7200 1 ARST} {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} + {2738804400 -7200 1 ARST} {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} + {2770858800 -7200 1 ARST} {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} + {2802308400 -7200 1 ARST} {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} + {2833758000 -7200 1 ARST} {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} + {2865207600 -7200 1 ARST} {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} + {2896657200 -7200 1 ARST} {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} + {2928106800 -7200 1 ARST} {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} + {2960161200 -7200 1 ARST} {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} + {2991610800 -7200 1 ARST} {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} + {3023060400 -7200 1 ARST} {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} + {3054510000 -7200 1 ARST} {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} + {3085959600 -7200 1 ARST} {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} + {3118014000 -7200 1 ARST} {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} + {3149463600 -7200 1 ARST} {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} + {3180913200 -7200 1 ARST} {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} + {3212362800 -7200 1 ARST} {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} + {3243812400 -7200 1 ARST} {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} + {3275262000 -7200 1 ARST} {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} + {3307316400 -7200 1 ARST} {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} + {3338766000 -7200 1 ARST} {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} + {3370215600 -7200 1 ARST} {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} + {3401665200 -7200 1 ARST} {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} + {3433114800 -7200 1 ARST} {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} + {3464564400 -7200 1 ARST} {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} + {3496618800 -7200 1 ARST} {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} + {3528068400 -7200 1 ARST} {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} + {3559518000 -7200 1 ARST} {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} + {3590967600 -7200 1 ARST} {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} + {3622417200 -7200 1 ARST} {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} + {3654471600 -7200 1 ARST} {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} + {3685921200 -7200 1 ARST} {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} + {3717370800 -7200 1 ARST} {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} + {3748820400 -7200 1 ARST} {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} + {3780270000 -7200 1 ARST} {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} + {3811719600 -7200 1 ARST} {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} + {3843774000 -7200 1 ARST} {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} + {3875223600 -7200 1 ARST} {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} + {3906673200 -7200 1 ARST} {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} + {3938122800 -7200 1 ARST} {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} + {3969572400 -7200 1 ARST} {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} + {4001626800 -7200 1 ARST} {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} + {4033076400 -7200 1 ARST} {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} + {4064526000 -7200 1 ARST} {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Argentina/Ushuaia b/library/tzdata/America/Argentina/Ushuaia index d6ce9f5..4fcf92d 100644 --- a/library/tzdata/America/Argentina/Ushuaia +++ b/library/tzdata/America/Argentina/Ushuaia @@ -64,187 +64,5 @@ set TZData(:America/Argentina/Ushuaia) { {1087704000 -10800 0 ART} {1198983600 -7200 1 ARST} {1205632800 -10800 0 ART} - {1223175600 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1254625200 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1286074800 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1317524400 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1349578800 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1381028400 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1412478000 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1443927600 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1475377200 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1506826800 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1538881200 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1570330800 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1601780400 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1633230000 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1664679600 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1696129200 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1728183600 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1759633200 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1791082800 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1822532400 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1853982000 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1886036400 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1917486000 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1948935600 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1980385200 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2011834800 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2043284400 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2075338800 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2106788400 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2138238000 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2169687600 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2201137200 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2233191600 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2264641200 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2296090800 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2327540400 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2358990000 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2390439600 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2422494000 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2453943600 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2485393200 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2516842800 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2548292400 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2579742000 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2611796400 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2643246000 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2674695600 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2706145200 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2737594800 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2769649200 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2801098800 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2832548400 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2863998000 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2895447600 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2926897200 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2958951600 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2990401200 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3021850800 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3053300400 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3084750000 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3116804400 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3148254000 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3179703600 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3211153200 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3242602800 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3274052400 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3306106800 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3337556400 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3369006000 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3400455600 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3431905200 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3463354800 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3495409200 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3526858800 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3558308400 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3589758000 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3621207600 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3653262000 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3684711600 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3716161200 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3747610800 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3779060400 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3810510000 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3842564400 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3874014000 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3905463600 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3936913200 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3968362800 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4000417200 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4031866800 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4063316400 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4094766000 -7200 1 ARST} + {1224295200 -10800 0 ART} } diff --git a/library/tzdata/America/Campo_Grande b/library/tzdata/America/Campo_Grande index ced6197..2cafe14 100644 --- a/library/tzdata/America/Campo_Grande +++ b/library/tzdata/America/Campo_Grande @@ -71,187 +71,187 @@ set TZData(:America/Campo_Grande) { {1172372400 -14400 0 AMT} {1192334400 -10800 1 AMST} {1203217200 -14400 0 AMT} - {1223784000 -10800 1 AMST} + {1224388800 -10800 1 AMST} {1234666800 -14400 0 AMT} - {1255233600 -10800 1 AMST} + {1255838400 -10800 1 AMST} {1266721200 -14400 0 AMT} - {1286683200 -10800 1 AMST} + {1287288000 -10800 1 AMST} {1298170800 -14400 0 AMT} - {1318132800 -10800 1 AMST} - {1329620400 -14400 0 AMT} - {1350187200 -10800 1 AMST} + {1318737600 -10800 1 AMST} + {1330225200 -14400 0 AMT} + {1350792000 -10800 1 AMST} {1361070000 -14400 0 AMT} - {1381636800 -10800 1 AMST} + {1382241600 -10800 1 AMST} {1392519600 -14400 0 AMT} - {1413086400 -10800 1 AMST} - {1423969200 -14400 0 AMT} - {1444536000 -10800 1 AMST} + {1413691200 -10800 1 AMST} + {1424574000 -14400 0 AMT} + {1445140800 -10800 1 AMST} {1456023600 -14400 0 AMT} - {1475985600 -10800 1 AMST} + {1476590400 -10800 1 AMST} {1487473200 -14400 0 AMT} - {1507435200 -10800 1 AMST} + {1508040000 -10800 1 AMST} {1518922800 -14400 0 AMT} - {1539489600 -10800 1 AMST} + {1540094400 -10800 1 AMST} {1550372400 -14400 0 AMT} - {1570939200 -10800 1 AMST} + {1571544000 -10800 1 AMST} {1581822000 -14400 0 AMT} - {1602388800 -10800 1 AMST} + {1602993600 -10800 1 AMST} {1613876400 -14400 0 AMT} - {1633838400 -10800 1 AMST} + {1634443200 -10800 1 AMST} {1645326000 -14400 0 AMT} - {1665288000 -10800 1 AMST} - {1676775600 -14400 0 AMT} - {1696737600 -10800 1 AMST} + {1665892800 -10800 1 AMST} + {1677380400 -14400 0 AMT} + {1697342400 -10800 1 AMST} {1708225200 -14400 0 AMT} - {1728792000 -10800 1 AMST} + {1729396800 -10800 1 AMST} {1739674800 -14400 0 AMT} - {1760241600 -10800 1 AMST} - {1771124400 -14400 0 AMT} - {1791691200 -10800 1 AMST} + {1760846400 -10800 1 AMST} + {1771729200 -14400 0 AMT} + {1792296000 -10800 1 AMST} {1803178800 -14400 0 AMT} - {1823140800 -10800 1 AMST} + {1823745600 -10800 1 AMST} {1834628400 -14400 0 AMT} - {1854590400 -10800 1 AMST} + {1855195200 -10800 1 AMST} {1866078000 -14400 0 AMT} - {1886644800 -10800 1 AMST} + {1887249600 -10800 1 AMST} {1897527600 -14400 0 AMT} - {1918094400 -10800 1 AMST} + {1918699200 -10800 1 AMST} {1928977200 -14400 0 AMT} - {1949544000 -10800 1 AMST} + {1950148800 -10800 1 AMST} {1960426800 -14400 0 AMT} - {1980993600 -10800 1 AMST} + {1981598400 -10800 1 AMST} {1992481200 -14400 0 AMT} - {2012443200 -10800 1 AMST} - {2023930800 -14400 0 AMT} - {2043892800 -10800 1 AMST} + {2013048000 -10800 1 AMST} + {2024535600 -14400 0 AMT} + {2044497600 -10800 1 AMST} {2055380400 -14400 0 AMT} - {2075947200 -10800 1 AMST} + {2076552000 -10800 1 AMST} {2086830000 -14400 0 AMT} - {2107396800 -10800 1 AMST} - {2118279600 -14400 0 AMT} - {2138846400 -10800 1 AMST} + {2108001600 -10800 1 AMST} + {2118884400 -14400 0 AMT} + {2139451200 -10800 1 AMST} {2150334000 -14400 0 AMT} - {2170296000 -10800 1 AMST} + {2170900800 -10800 1 AMST} {2181783600 -14400 0 AMT} - {2201745600 -10800 1 AMST} + {2202350400 -10800 1 AMST} {2213233200 -14400 0 AMT} - {2233800000 -10800 1 AMST} + {2234404800 -10800 1 AMST} {2244682800 -14400 0 AMT} - {2265249600 -10800 1 AMST} + {2265854400 -10800 1 AMST} {2276132400 -14400 0 AMT} - {2296699200 -10800 1 AMST} + {2297304000 -10800 1 AMST} {2307582000 -14400 0 AMT} - {2328148800 -10800 1 AMST} + {2328753600 -10800 1 AMST} {2339636400 -14400 0 AMT} - {2359598400 -10800 1 AMST} + {2360203200 -10800 1 AMST} {2371086000 -14400 0 AMT} - {2391048000 -10800 1 AMST} + {2391652800 -10800 1 AMST} {2402535600 -14400 0 AMT} - {2423102400 -10800 1 AMST} + {2423707200 -10800 1 AMST} {2433985200 -14400 0 AMT} - {2454552000 -10800 1 AMST} + {2455156800 -10800 1 AMST} {2465434800 -14400 0 AMT} - {2486001600 -10800 1 AMST} + {2486606400 -10800 1 AMST} {2497489200 -14400 0 AMT} - {2517451200 -10800 1 AMST} + {2518056000 -10800 1 AMST} {2528938800 -14400 0 AMT} - {2548900800 -10800 1 AMST} + {2549505600 -10800 1 AMST} {2560388400 -14400 0 AMT} - {2580350400 -10800 1 AMST} + {2580955200 -10800 1 AMST} {2591838000 -14400 0 AMT} - {2612404800 -10800 1 AMST} + {2613009600 -10800 1 AMST} {2623287600 -14400 0 AMT} - {2643854400 -10800 1 AMST} + {2644459200 -10800 1 AMST} {2654737200 -14400 0 AMT} - {2675304000 -10800 1 AMST} + {2675908800 -10800 1 AMST} {2686791600 -14400 0 AMT} - {2706753600 -10800 1 AMST} + {2707358400 -10800 1 AMST} {2718241200 -14400 0 AMT} - {2738203200 -10800 1 AMST} + {2738808000 -10800 1 AMST} {2749690800 -14400 0 AMT} - {2770257600 -10800 1 AMST} + {2770862400 -10800 1 AMST} {2781140400 -14400 0 AMT} - {2801707200 -10800 1 AMST} + {2802312000 -10800 1 AMST} {2812590000 -14400 0 AMT} - {2833156800 -10800 1 AMST} + {2833761600 -10800 1 AMST} {2844039600 -14400 0 AMT} - {2864606400 -10800 1 AMST} + {2865211200 -10800 1 AMST} {2876094000 -14400 0 AMT} - {2896056000 -10800 1 AMST} + {2896660800 -10800 1 AMST} {2907543600 -14400 0 AMT} - {2927505600 -10800 1 AMST} + {2928110400 -10800 1 AMST} {2938993200 -14400 0 AMT} - {2959560000 -10800 1 AMST} + {2960164800 -10800 1 AMST} {2970442800 -14400 0 AMT} - {2991009600 -10800 1 AMST} + {2991614400 -10800 1 AMST} {3001892400 -14400 0 AMT} - {3022459200 -10800 1 AMST} + {3023064000 -10800 1 AMST} {3033946800 -14400 0 AMT} - {3053908800 -10800 1 AMST} + {3054513600 -10800 1 AMST} {3065396400 -14400 0 AMT} - {3085358400 -10800 1 AMST} + {3085963200 -10800 1 AMST} {3096846000 -14400 0 AMT} - {3117412800 -10800 1 AMST} + {3118017600 -10800 1 AMST} {3128295600 -14400 0 AMT} - {3148862400 -10800 1 AMST} + {3149467200 -10800 1 AMST} {3159745200 -14400 0 AMT} - {3180312000 -10800 1 AMST} + {3180916800 -10800 1 AMST} {3191194800 -14400 0 AMT} - {3211761600 -10800 1 AMST} + {3212366400 -10800 1 AMST} {3223249200 -14400 0 AMT} - {3243211200 -10800 1 AMST} + {3243816000 -10800 1 AMST} {3254698800 -14400 0 AMT} - {3274660800 -10800 1 AMST} + {3275265600 -10800 1 AMST} {3286148400 -14400 0 AMT} - {3306715200 -10800 1 AMST} + {3307320000 -10800 1 AMST} {3317598000 -14400 0 AMT} - {3338164800 -10800 1 AMST} + {3338769600 -10800 1 AMST} {3349047600 -14400 0 AMT} - {3369614400 -10800 1 AMST} + {3370219200 -10800 1 AMST} {3381102000 -14400 0 AMT} - {3401064000 -10800 1 AMST} + {3401668800 -10800 1 AMST} {3412551600 -14400 0 AMT} - {3432513600 -10800 1 AMST} + {3433118400 -10800 1 AMST} {3444001200 -14400 0 AMT} - {3463963200 -10800 1 AMST} + {3464568000 -10800 1 AMST} {3475450800 -14400 0 AMT} - {3496017600 -10800 1 AMST} + {3496622400 -10800 1 AMST} {3506900400 -14400 0 AMT} - {3527467200 -10800 1 AMST} + {3528072000 -10800 1 AMST} {3538350000 -14400 0 AMT} - {3558916800 -10800 1 AMST} + {3559521600 -10800 1 AMST} {3570404400 -14400 0 AMT} - {3590366400 -10800 1 AMST} + {3590971200 -10800 1 AMST} {3601854000 -14400 0 AMT} - {3621816000 -10800 1 AMST} + {3622420800 -10800 1 AMST} {3633303600 -14400 0 AMT} - {3653870400 -10800 1 AMST} + {3654475200 -10800 1 AMST} {3664753200 -14400 0 AMT} - {3685320000 -10800 1 AMST} + {3685924800 -10800 1 AMST} {3696202800 -14400 0 AMT} - {3716769600 -10800 1 AMST} + {3717374400 -10800 1 AMST} {3727652400 -14400 0 AMT} - {3748219200 -10800 1 AMST} + {3748824000 -10800 1 AMST} {3759706800 -14400 0 AMT} - {3779668800 -10800 1 AMST} + {3780273600 -10800 1 AMST} {3791156400 -14400 0 AMT} - {3811118400 -10800 1 AMST} + {3811723200 -10800 1 AMST} {3822606000 -14400 0 AMT} - {3843172800 -10800 1 AMST} + {3843777600 -10800 1 AMST} {3854055600 -14400 0 AMT} - {3874622400 -10800 1 AMST} + {3875227200 -10800 1 AMST} {3885505200 -14400 0 AMT} - {3906072000 -10800 1 AMST} + {3906676800 -10800 1 AMST} {3917559600 -14400 0 AMT} - {3937521600 -10800 1 AMST} + {3938126400 -10800 1 AMST} {3949009200 -14400 0 AMT} - {3968971200 -10800 1 AMST} + {3969576000 -10800 1 AMST} {3980458800 -14400 0 AMT} - {4001025600 -10800 1 AMST} + {4001630400 -10800 1 AMST} {4011908400 -14400 0 AMT} - {4032475200 -10800 1 AMST} + {4033080000 -10800 1 AMST} {4043358000 -14400 0 AMT} - {4063924800 -10800 1 AMST} + {4064529600 -10800 1 AMST} {4074807600 -14400 0 AMT} - {4095374400 -10800 1 AMST} + {4095979200 -10800 1 AMST} } diff --git a/library/tzdata/America/Cuiaba b/library/tzdata/America/Cuiaba index fb63ee8..0301862 100644 --- a/library/tzdata/America/Cuiaba +++ b/library/tzdata/America/Cuiaba @@ -71,187 +71,187 @@ set TZData(:America/Cuiaba) { {1172372400 -14400 0 AMT} {1192334400 -10800 1 AMST} {1203217200 -14400 0 AMT} - {1223784000 -10800 1 AMST} + {1224388800 -10800 1 AMST} {1234666800 -14400 0 AMT} - {1255233600 -10800 1 AMST} + {1255838400 -10800 1 AMST} {1266721200 -14400 0 AMT} - {1286683200 -10800 1 AMST} + {1287288000 -10800 1 AMST} {1298170800 -14400 0 AMT} - {1318132800 -10800 1 AMST} - {1329620400 -14400 0 AMT} - {1350187200 -10800 1 AMST} + {1318737600 -10800 1 AMST} + {1330225200 -14400 0 AMT} + {1350792000 -10800 1 AMST} {1361070000 -14400 0 AMT} - {1381636800 -10800 1 AMST} + {1382241600 -10800 1 AMST} {1392519600 -14400 0 AMT} - {1413086400 -10800 1 AMST} - {1423969200 -14400 0 AMT} - {1444536000 -10800 1 AMST} + {1413691200 -10800 1 AMST} + {1424574000 -14400 0 AMT} + {1445140800 -10800 1 AMST} {1456023600 -14400 0 AMT} - {1475985600 -10800 1 AMST} + {1476590400 -10800 1 AMST} {1487473200 -14400 0 AMT} - {1507435200 -10800 1 AMST} + {1508040000 -10800 1 AMST} {1518922800 -14400 0 AMT} - {1539489600 -10800 1 AMST} + {1540094400 -10800 1 AMST} {1550372400 -14400 0 AMT} - {1570939200 -10800 1 AMST} + {1571544000 -10800 1 AMST} {1581822000 -14400 0 AMT} - {1602388800 -10800 1 AMST} + {1602993600 -10800 1 AMST} {1613876400 -14400 0 AMT} - {1633838400 -10800 1 AMST} + {1634443200 -10800 1 AMST} {1645326000 -14400 0 AMT} - {1665288000 -10800 1 AMST} - {1676775600 -14400 0 AMT} - {1696737600 -10800 1 AMST} + {1665892800 -10800 1 AMST} + {1677380400 -14400 0 AMT} + {1697342400 -10800 1 AMST} {1708225200 -14400 0 AMT} - {1728792000 -10800 1 AMST} + {1729396800 -10800 1 AMST} {1739674800 -14400 0 AMT} - {1760241600 -10800 1 AMST} - {1771124400 -14400 0 AMT} - {1791691200 -10800 1 AMST} + {1760846400 -10800 1 AMST} + {1771729200 -14400 0 AMT} + {1792296000 -10800 1 AMST} {1803178800 -14400 0 AMT} - {1823140800 -10800 1 AMST} + {1823745600 -10800 1 AMST} {1834628400 -14400 0 AMT} - {1854590400 -10800 1 AMST} + {1855195200 -10800 1 AMST} {1866078000 -14400 0 AMT} - {1886644800 -10800 1 AMST} + {1887249600 -10800 1 AMST} {1897527600 -14400 0 AMT} - {1918094400 -10800 1 AMST} + {1918699200 -10800 1 AMST} {1928977200 -14400 0 AMT} - {1949544000 -10800 1 AMST} + {1950148800 -10800 1 AMST} {1960426800 -14400 0 AMT} - {1980993600 -10800 1 AMST} + {1981598400 -10800 1 AMST} {1992481200 -14400 0 AMT} - {2012443200 -10800 1 AMST} - {2023930800 -14400 0 AMT} - {2043892800 -10800 1 AMST} + {2013048000 -10800 1 AMST} + {2024535600 -14400 0 AMT} + {2044497600 -10800 1 AMST} {2055380400 -14400 0 AMT} - {2075947200 -10800 1 AMST} + {2076552000 -10800 1 AMST} {2086830000 -14400 0 AMT} - {2107396800 -10800 1 AMST} - {2118279600 -14400 0 AMT} - {2138846400 -10800 1 AMST} + {2108001600 -10800 1 AMST} + {2118884400 -14400 0 AMT} + {2139451200 -10800 1 AMST} {2150334000 -14400 0 AMT} - {2170296000 -10800 1 AMST} + {2170900800 -10800 1 AMST} {2181783600 -14400 0 AMT} - {2201745600 -10800 1 AMST} + {2202350400 -10800 1 AMST} {2213233200 -14400 0 AMT} - {2233800000 -10800 1 AMST} + {2234404800 -10800 1 AMST} {2244682800 -14400 0 AMT} - {2265249600 -10800 1 AMST} + {2265854400 -10800 1 AMST} {2276132400 -14400 0 AMT} - {2296699200 -10800 1 AMST} + {2297304000 -10800 1 AMST} {2307582000 -14400 0 AMT} - {2328148800 -10800 1 AMST} + {2328753600 -10800 1 AMST} {2339636400 -14400 0 AMT} - {2359598400 -10800 1 AMST} + {2360203200 -10800 1 AMST} {2371086000 -14400 0 AMT} - {2391048000 -10800 1 AMST} + {2391652800 -10800 1 AMST} {2402535600 -14400 0 AMT} - {2423102400 -10800 1 AMST} + {2423707200 -10800 1 AMST} {2433985200 -14400 0 AMT} - {2454552000 -10800 1 AMST} + {2455156800 -10800 1 AMST} {2465434800 -14400 0 AMT} - {2486001600 -10800 1 AMST} + {2486606400 -10800 1 AMST} {2497489200 -14400 0 AMT} - {2517451200 -10800 1 AMST} + {2518056000 -10800 1 AMST} {2528938800 -14400 0 AMT} - {2548900800 -10800 1 AMST} + {2549505600 -10800 1 AMST} {2560388400 -14400 0 AMT} - {2580350400 -10800 1 AMST} + {2580955200 -10800 1 AMST} {2591838000 -14400 0 AMT} - {2612404800 -10800 1 AMST} + {2613009600 -10800 1 AMST} {2623287600 -14400 0 AMT} - {2643854400 -10800 1 AMST} + {2644459200 -10800 1 AMST} {2654737200 -14400 0 AMT} - {2675304000 -10800 1 AMST} + {2675908800 -10800 1 AMST} {2686791600 -14400 0 AMT} - {2706753600 -10800 1 AMST} + {2707358400 -10800 1 AMST} {2718241200 -14400 0 AMT} - {2738203200 -10800 1 AMST} + {2738808000 -10800 1 AMST} {2749690800 -14400 0 AMT} - {2770257600 -10800 1 AMST} + {2770862400 -10800 1 AMST} {2781140400 -14400 0 AMT} - {2801707200 -10800 1 AMST} + {2802312000 -10800 1 AMST} {2812590000 -14400 0 AMT} - {2833156800 -10800 1 AMST} + {2833761600 -10800 1 AMST} {2844039600 -14400 0 AMT} - {2864606400 -10800 1 AMST} + {2865211200 -10800 1 AMST} {2876094000 -14400 0 AMT} - {2896056000 -10800 1 AMST} + {2896660800 -10800 1 AMST} {2907543600 -14400 0 AMT} - {2927505600 -10800 1 AMST} + {2928110400 -10800 1 AMST} {2938993200 -14400 0 AMT} - {2959560000 -10800 1 AMST} + {2960164800 -10800 1 AMST} {2970442800 -14400 0 AMT} - {2991009600 -10800 1 AMST} + {2991614400 -10800 1 AMST} {3001892400 -14400 0 AMT} - {3022459200 -10800 1 AMST} + {3023064000 -10800 1 AMST} {3033946800 -14400 0 AMT} - {3053908800 -10800 1 AMST} + {3054513600 -10800 1 AMST} {3065396400 -14400 0 AMT} - {3085358400 -10800 1 AMST} + {3085963200 -10800 1 AMST} {3096846000 -14400 0 AMT} - {3117412800 -10800 1 AMST} + {3118017600 -10800 1 AMST} {3128295600 -14400 0 AMT} - {3148862400 -10800 1 AMST} + {3149467200 -10800 1 AMST} {3159745200 -14400 0 AMT} - {3180312000 -10800 1 AMST} + {3180916800 -10800 1 AMST} {3191194800 -14400 0 AMT} - {3211761600 -10800 1 AMST} + {3212366400 -10800 1 AMST} {3223249200 -14400 0 AMT} - {3243211200 -10800 1 AMST} + {3243816000 -10800 1 AMST} {3254698800 -14400 0 AMT} - {3274660800 -10800 1 AMST} + {3275265600 -10800 1 AMST} {3286148400 -14400 0 AMT} - {3306715200 -10800 1 AMST} + {3307320000 -10800 1 AMST} {3317598000 -14400 0 AMT} - {3338164800 -10800 1 AMST} + {3338769600 -10800 1 AMST} {3349047600 -14400 0 AMT} - {3369614400 -10800 1 AMST} + {3370219200 -10800 1 AMST} {3381102000 -14400 0 AMT} - {3401064000 -10800 1 AMST} + {3401668800 -10800 1 AMST} {3412551600 -14400 0 AMT} - {3432513600 -10800 1 AMST} + {3433118400 -10800 1 AMST} {3444001200 -14400 0 AMT} - {3463963200 -10800 1 AMST} + {3464568000 -10800 1 AMST} {3475450800 -14400 0 AMT} - {3496017600 -10800 1 AMST} + {3496622400 -10800 1 AMST} {3506900400 -14400 0 AMT} - {3527467200 -10800 1 AMST} + {3528072000 -10800 1 AMST} {3538350000 -14400 0 AMT} - {3558916800 -10800 1 AMST} + {3559521600 -10800 1 AMST} {3570404400 -14400 0 AMT} - {3590366400 -10800 1 AMST} + {3590971200 -10800 1 AMST} {3601854000 -14400 0 AMT} - {3621816000 -10800 1 AMST} + {3622420800 -10800 1 AMST} {3633303600 -14400 0 AMT} - {3653870400 -10800 1 AMST} + {3654475200 -10800 1 AMST} {3664753200 -14400 0 AMT} - {3685320000 -10800 1 AMST} + {3685924800 -10800 1 AMST} {3696202800 -14400 0 AMT} - {3716769600 -10800 1 AMST} + {3717374400 -10800 1 AMST} {3727652400 -14400 0 AMT} - {3748219200 -10800 1 AMST} + {3748824000 -10800 1 AMST} {3759706800 -14400 0 AMT} - {3779668800 -10800 1 AMST} + {3780273600 -10800 1 AMST} {3791156400 -14400 0 AMT} - {3811118400 -10800 1 AMST} + {3811723200 -10800 1 AMST} {3822606000 -14400 0 AMT} - {3843172800 -10800 1 AMST} + {3843777600 -10800 1 AMST} {3854055600 -14400 0 AMT} - {3874622400 -10800 1 AMST} + {3875227200 -10800 1 AMST} {3885505200 -14400 0 AMT} - {3906072000 -10800 1 AMST} + {3906676800 -10800 1 AMST} {3917559600 -14400 0 AMT} - {3937521600 -10800 1 AMST} + {3938126400 -10800 1 AMST} {3949009200 -14400 0 AMT} - {3968971200 -10800 1 AMST} + {3969576000 -10800 1 AMST} {3980458800 -14400 0 AMT} - {4001025600 -10800 1 AMST} + {4001630400 -10800 1 AMST} {4011908400 -14400 0 AMT} - {4032475200 -10800 1 AMST} + {4033080000 -10800 1 AMST} {4043358000 -14400 0 AMT} - {4063924800 -10800 1 AMST} + {4064529600 -10800 1 AMST} {4074807600 -14400 0 AMT} - {4095374400 -10800 1 AMST} + {4095979200 -10800 1 AMST} } diff --git a/library/tzdata/America/Sao_Paulo b/library/tzdata/America/Sao_Paulo index 2f07b61..8d70063 100644 --- a/library/tzdata/America/Sao_Paulo +++ b/library/tzdata/America/Sao_Paulo @@ -72,187 +72,187 @@ set TZData(:America/Sao_Paulo) { {1172368800 -10800 0 BRT} {1192330800 -7200 1 BRST} {1203213600 -10800 0 BRT} - {1223780400 -7200 1 BRST} + {1224385200 -7200 1 BRST} {1234663200 -10800 0 BRT} - {1255230000 -7200 1 BRST} + {1255834800 -7200 1 BRST} {1266717600 -10800 0 BRT} - {1286679600 -7200 1 BRST} + {1287284400 -7200 1 BRST} {1298167200 -10800 0 BRT} - {1318129200 -7200 1 BRST} - {1329616800 -10800 0 BRT} - {1350183600 -7200 1 BRST} + {1318734000 -7200 1 BRST} + {1330221600 -10800 0 BRT} + {1350788400 -7200 1 BRST} {1361066400 -10800 0 BRT} - {1381633200 -7200 1 BRST} + {1382238000 -7200 1 BRST} {1392516000 -10800 0 BRT} - {1413082800 -7200 1 BRST} - {1423965600 -10800 0 BRT} - {1444532400 -7200 1 BRST} + {1413687600 -7200 1 BRST} + {1424570400 -10800 0 BRT} + {1445137200 -7200 1 BRST} {1456020000 -10800 0 BRT} - {1475982000 -7200 1 BRST} + {1476586800 -7200 1 BRST} {1487469600 -10800 0 BRT} - {1507431600 -7200 1 BRST} + {1508036400 -7200 1 BRST} {1518919200 -10800 0 BRT} - {1539486000 -7200 1 BRST} + {1540090800 -7200 1 BRST} {1550368800 -10800 0 BRT} - {1570935600 -7200 1 BRST} + {1571540400 -7200 1 BRST} {1581818400 -10800 0 BRT} - {1602385200 -7200 1 BRST} + {1602990000 -7200 1 BRST} {1613872800 -10800 0 BRT} - {1633834800 -7200 1 BRST} + {1634439600 -7200 1 BRST} {1645322400 -10800 0 BRT} - {1665284400 -7200 1 BRST} - {1676772000 -10800 0 BRT} - {1696734000 -7200 1 BRST} + {1665889200 -7200 1 BRST} + {1677376800 -10800 0 BRT} + {1697338800 -7200 1 BRST} {1708221600 -10800 0 BRT} - {1728788400 -7200 1 BRST} + {1729393200 -7200 1 BRST} {1739671200 -10800 0 BRT} - {1760238000 -7200 1 BRST} - {1771120800 -10800 0 BRT} - {1791687600 -7200 1 BRST} + {1760842800 -7200 1 BRST} + {1771725600 -10800 0 BRT} + {1792292400 -7200 1 BRST} {1803175200 -10800 0 BRT} - {1823137200 -7200 1 BRST} + {1823742000 -7200 1 BRST} {1834624800 -10800 0 BRT} - {1854586800 -7200 1 BRST} + {1855191600 -7200 1 BRST} {1866074400 -10800 0 BRT} - {1886641200 -7200 1 BRST} + {1887246000 -7200 1 BRST} {1897524000 -10800 0 BRT} - {1918090800 -7200 1 BRST} + {1918695600 -7200 1 BRST} {1928973600 -10800 0 BRT} - {1949540400 -7200 1 BRST} + {1950145200 -7200 1 BRST} {1960423200 -10800 0 BRT} - {1980990000 -7200 1 BRST} + {1981594800 -7200 1 BRST} {1992477600 -10800 0 BRT} - {2012439600 -7200 1 BRST} - {2023927200 -10800 0 BRT} - {2043889200 -7200 1 BRST} + {2013044400 -7200 1 BRST} + {2024532000 -10800 0 BRT} + {2044494000 -7200 1 BRST} {2055376800 -10800 0 BRT} - {2075943600 -7200 1 BRST} + {2076548400 -7200 1 BRST} {2086826400 -10800 0 BRT} - {2107393200 -7200 1 BRST} - {2118276000 -10800 0 BRT} - {2138842800 -7200 1 BRST} + {2107998000 -7200 1 BRST} + {2118880800 -10800 0 BRT} + {2139447600 -7200 1 BRST} {2150330400 -10800 0 BRT} - {2170292400 -7200 1 BRST} + {2170897200 -7200 1 BRST} {2181780000 -10800 0 BRT} - {2201742000 -7200 1 BRST} + {2202346800 -7200 1 BRST} {2213229600 -10800 0 BRT} - {2233796400 -7200 1 BRST} + {2234401200 -7200 1 BRST} {2244679200 -10800 0 BRT} - {2265246000 -7200 1 BRST} + {2265850800 -7200 1 BRST} {2276128800 -10800 0 BRT} - {2296695600 -7200 1 BRST} + {2297300400 -7200 1 BRST} {2307578400 -10800 0 BRT} - {2328145200 -7200 1 BRST} + {2328750000 -7200 1 BRST} {2339632800 -10800 0 BRT} - {2359594800 -7200 1 BRST} + {2360199600 -7200 1 BRST} {2371082400 -10800 0 BRT} - {2391044400 -7200 1 BRST} + {2391649200 -7200 1 BRST} {2402532000 -10800 0 BRT} - {2423098800 -7200 1 BRST} + {2423703600 -7200 1 BRST} {2433981600 -10800 0 BRT} - {2454548400 -7200 1 BRST} + {2455153200 -7200 1 BRST} {2465431200 -10800 0 BRT} - {2485998000 -7200 1 BRST} + {2486602800 -7200 1 BRST} {2497485600 -10800 0 BRT} - {2517447600 -7200 1 BRST} + {2518052400 -7200 1 BRST} {2528935200 -10800 0 BRT} - {2548897200 -7200 1 BRST} + {2549502000 -7200 1 BRST} {2560384800 -10800 0 BRT} - {2580346800 -7200 1 BRST} + {2580951600 -7200 1 BRST} {2591834400 -10800 0 BRT} - {2612401200 -7200 1 BRST} + {2613006000 -7200 1 BRST} {2623284000 -10800 0 BRT} - {2643850800 -7200 1 BRST} + {2644455600 -7200 1 BRST} {2654733600 -10800 0 BRT} - {2675300400 -7200 1 BRST} + {2675905200 -7200 1 BRST} {2686788000 -10800 0 BRT} - {2706750000 -7200 1 BRST} + {2707354800 -7200 1 BRST} {2718237600 -10800 0 BRT} - {2738199600 -7200 1 BRST} + {2738804400 -7200 1 BRST} {2749687200 -10800 0 BRT} - {2770254000 -7200 1 BRST} + {2770858800 -7200 1 BRST} {2781136800 -10800 0 BRT} - {2801703600 -7200 1 BRST} + {2802308400 -7200 1 BRST} {2812586400 -10800 0 BRT} - {2833153200 -7200 1 BRST} + {2833758000 -7200 1 BRST} {2844036000 -10800 0 BRT} - {2864602800 -7200 1 BRST} + {2865207600 -7200 1 BRST} {2876090400 -10800 0 BRT} - {2896052400 -7200 1 BRST} + {2896657200 -7200 1 BRST} {2907540000 -10800 0 BRT} - {2927502000 -7200 1 BRST} + {2928106800 -7200 1 BRST} {2938989600 -10800 0 BRT} - {2959556400 -7200 1 BRST} + {2960161200 -7200 1 BRST} {2970439200 -10800 0 BRT} - {2991006000 -7200 1 BRST} + {2991610800 -7200 1 BRST} {3001888800 -10800 0 BRT} - {3022455600 -7200 1 BRST} + {3023060400 -7200 1 BRST} {3033943200 -10800 0 BRT} - {3053905200 -7200 1 BRST} + {3054510000 -7200 1 BRST} {3065392800 -10800 0 BRT} - {3085354800 -7200 1 BRST} + {3085959600 -7200 1 BRST} {3096842400 -10800 0 BRT} - {3117409200 -7200 1 BRST} + {3118014000 -7200 1 BRST} {3128292000 -10800 0 BRT} - {3148858800 -7200 1 BRST} + {3149463600 -7200 1 BRST} {3159741600 -10800 0 BRT} - {3180308400 -7200 1 BRST} + {3180913200 -7200 1 BRST} {3191191200 -10800 0 BRT} - {3211758000 -7200 1 BRST} + {3212362800 -7200 1 BRST} {3223245600 -10800 0 BRT} - {3243207600 -7200 1 BRST} + {3243812400 -7200 1 BRST} {3254695200 -10800 0 BRT} - {3274657200 -7200 1 BRST} + {3275262000 -7200 1 BRST} {3286144800 -10800 0 BRT} - {3306711600 -7200 1 BRST} + {3307316400 -7200 1 BRST} {3317594400 -10800 0 BRT} - {3338161200 -7200 1 BRST} + {3338766000 -7200 1 BRST} {3349044000 -10800 0 BRT} - {3369610800 -7200 1 BRST} + {3370215600 -7200 1 BRST} {3381098400 -10800 0 BRT} - {3401060400 -7200 1 BRST} + {3401665200 -7200 1 BRST} {3412548000 -10800 0 BRT} - {3432510000 -7200 1 BRST} + {3433114800 -7200 1 BRST} {3443997600 -10800 0 BRT} - {3463959600 -7200 1 BRST} + {3464564400 -7200 1 BRST} {3475447200 -10800 0 BRT} - {3496014000 -7200 1 BRST} + {3496618800 -7200 1 BRST} {3506896800 -10800 0 BRT} - {3527463600 -7200 1 BRST} + {3528068400 -7200 1 BRST} {3538346400 -10800 0 BRT} - {3558913200 -7200 1 BRST} + {3559518000 -7200 1 BRST} {3570400800 -10800 0 BRT} - {3590362800 -7200 1 BRST} + {3590967600 -7200 1 BRST} {3601850400 -10800 0 BRT} - {3621812400 -7200 1 BRST} + {3622417200 -7200 1 BRST} {3633300000 -10800 0 BRT} - {3653866800 -7200 1 BRST} + {3654471600 -7200 1 BRST} {3664749600 -10800 0 BRT} - {3685316400 -7200 1 BRST} + {3685921200 -7200 1 BRST} {3696199200 -10800 0 BRT} - {3716766000 -7200 1 BRST} + {3717370800 -7200 1 BRST} {3727648800 -10800 0 BRT} - {3748215600 -7200 1 BRST} + {3748820400 -7200 1 BRST} {3759703200 -10800 0 BRT} - {3779665200 -7200 1 BRST} + {3780270000 -7200 1 BRST} {3791152800 -10800 0 BRT} - {3811114800 -7200 1 BRST} + {3811719600 -7200 1 BRST} {3822602400 -10800 0 BRT} - {3843169200 -7200 1 BRST} + {3843774000 -7200 1 BRST} {3854052000 -10800 0 BRT} - {3874618800 -7200 1 BRST} + {3875223600 -7200 1 BRST} {3885501600 -10800 0 BRT} - {3906068400 -7200 1 BRST} + {3906673200 -7200 1 BRST} {3917556000 -10800 0 BRT} - {3937518000 -7200 1 BRST} + {3938122800 -7200 1 BRST} {3949005600 -10800 0 BRT} - {3968967600 -7200 1 BRST} + {3969572400 -7200 1 BRST} {3980455200 -10800 0 BRT} - {4001022000 -7200 1 BRST} + {4001626800 -7200 1 BRST} {4011904800 -10800 0 BRT} - {4032471600 -7200 1 BRST} + {4033076400 -7200 1 BRST} {4043354400 -10800 0 BRT} - {4063921200 -7200 1 BRST} + {4064526000 -7200 1 BRST} {4074804000 -10800 0 BRT} - {4095370800 -7200 1 BRST} + {4095975600 -7200 1 BRST} } diff --git a/library/tzdata/Asia/Damascus b/library/tzdata/Asia/Damascus index 56b5e7d..4cfeee7 100644 --- a/library/tzdata/Asia/Damascus +++ b/library/tzdata/Asia/Damascus @@ -94,187 +94,187 @@ set TZData(:Asia/Damascus) { {1175205600 10800 1 EEST} {1193950800 7200 0 EET} {1207260000 10800 1 EEST} - {1222808400 7200 0 EET} + {1225486800 7200 0 EET} {1238709600 10800 1 EEST} - {1254344400 7200 0 EET} + {1257022800 7200 0 EET} {1270159200 10800 1 EEST} - {1285880400 7200 0 EET} + {1288558800 7200 0 EET} {1301608800 10800 1 EEST} - {1317416400 7200 0 EET} + {1320094800 7200 0 EET} {1333663200 10800 1 EEST} - {1349038800 7200 0 EET} + {1351717200 7200 0 EET} {1365112800 10800 1 EEST} - {1380574800 7200 0 EET} + {1383253200 7200 0 EET} {1396562400 10800 1 EEST} - {1412110800 7200 0 EET} + {1414789200 7200 0 EET} {1428012000 10800 1 EEST} - {1443646800 7200 0 EET} + {1446325200 7200 0 EET} {1459461600 10800 1 EEST} - {1475269200 7200 0 EET} + {1477947600 7200 0 EET} {1491516000 10800 1 EEST} - {1506805200 7200 0 EET} + {1509483600 7200 0 EET} {1522965600 10800 1 EEST} - {1538341200 7200 0 EET} + {1541019600 7200 0 EET} {1554415200 10800 1 EEST} - {1569877200 7200 0 EET} + {1572555600 7200 0 EET} {1585864800 10800 1 EEST} - {1601499600 7200 0 EET} + {1604178000 7200 0 EET} {1617314400 10800 1 EEST} - {1633035600 7200 0 EET} + {1635714000 7200 0 EET} {1648764000 10800 1 EEST} - {1664571600 7200 0 EET} + {1667250000 7200 0 EET} {1680818400 10800 1 EEST} - {1696107600 7200 0 EET} + {1698786000 7200 0 EET} {1712268000 10800 1 EEST} - {1727730000 7200 0 EET} + {1730408400 7200 0 EET} {1743717600 10800 1 EEST} - {1759266000 7200 0 EET} + {1761944400 7200 0 EET} {1775167200 10800 1 EEST} - {1790802000 7200 0 EET} + {1793480400 7200 0 EET} {1806616800 10800 1 EEST} - {1822338000 7200 0 EET} + {1825016400 7200 0 EET} {1838671200 10800 1 EEST} - {1853960400 7200 0 EET} + {1856638800 7200 0 EET} {1870120800 10800 1 EEST} - {1885496400 7200 0 EET} + {1888174800 7200 0 EET} {1901570400 10800 1 EEST} - {1917032400 7200 0 EET} + {1919710800 7200 0 EET} {1933020000 10800 1 EEST} - {1948568400 7200 0 EET} + {1951246800 7200 0 EET} {1964469600 10800 1 EEST} - {1980190800 7200 0 EET} + {1982869200 7200 0 EET} {1995919200 10800 1 EEST} - {2011726800 7200 0 EET} + {2014405200 7200 0 EET} {2027973600 10800 1 EEST} - {2043262800 7200 0 EET} + {2045941200 7200 0 EET} {2059423200 10800 1 EEST} - {2074798800 7200 0 EET} + {2077477200 7200 0 EET} {2090872800 10800 1 EEST} - {2106421200 7200 0 EET} + {2109099600 7200 0 EET} {2122322400 10800 1 EEST} - {2137957200 7200 0 EET} + {2140635600 7200 0 EET} {2153772000 10800 1 EEST} - {2169493200 7200 0 EET} + {2172171600 7200 0 EET} {2185221600 10800 1 EEST} - {2201029200 7200 0 EET} + {2203707600 7200 0 EET} {2217276000 10800 1 EEST} - {2232651600 7200 0 EET} + {2235330000 7200 0 EET} {2248725600 10800 1 EEST} - {2264187600 7200 0 EET} + {2266866000 7200 0 EET} {2280175200 10800 1 EEST} - {2295723600 7200 0 EET} + {2298402000 7200 0 EET} {2311624800 10800 1 EEST} - {2327259600 7200 0 EET} + {2329938000 7200 0 EET} {2343074400 10800 1 EEST} - {2358882000 7200 0 EET} + {2361560400 7200 0 EET} {2375128800 10800 1 EEST} - {2390418000 7200 0 EET} + {2393096400 7200 0 EET} {2406578400 10800 1 EEST} - {2421954000 7200 0 EET} + {2424632400 7200 0 EET} {2438028000 10800 1 EEST} - {2453490000 7200 0 EET} + {2456168400 7200 0 EET} {2469477600 10800 1 EEST} - {2485112400 7200 0 EET} + {2487790800 7200 0 EET} {2500927200 10800 1 EEST} - {2516648400 7200 0 EET} + {2519326800 7200 0 EET} {2532376800 10800 1 EEST} - {2548184400 7200 0 EET} + {2550862800 7200 0 EET} {2564431200 10800 1 EEST} - {2579720400 7200 0 EET} + {2582398800 7200 0 EET} {2595880800 10800 1 EEST} - {2611342800 7200 0 EET} + {2614021200 7200 0 EET} {2627330400 10800 1 EEST} - {2642878800 7200 0 EET} + {2645557200 7200 0 EET} {2658780000 10800 1 EEST} - {2674414800 7200 0 EET} + {2677093200 7200 0 EET} {2690229600 10800 1 EEST} - {2705950800 7200 0 EET} + {2708629200 7200 0 EET} {2722284000 10800 1 EEST} - {2737573200 7200 0 EET} + {2740251600 7200 0 EET} {2753733600 10800 1 EEST} - {2769109200 7200 0 EET} + {2771787600 7200 0 EET} {2785183200 10800 1 EEST} - {2800645200 7200 0 EET} + {2803323600 7200 0 EET} {2816632800 10800 1 EEST} - {2832181200 7200 0 EET} + {2834859600 7200 0 EET} {2848082400 10800 1 EEST} - {2863803600 7200 0 EET} + {2866482000 7200 0 EET} {2879532000 10800 1 EEST} - {2895339600 7200 0 EET} + {2898018000 7200 0 EET} {2911586400 10800 1 EEST} - {2926875600 7200 0 EET} + {2929554000 7200 0 EET} {2943036000 10800 1 EEST} - {2958411600 7200 0 EET} + {2961090000 7200 0 EET} {2974485600 10800 1 EEST} - {2990034000 7200 0 EET} + {2992712400 7200 0 EET} {3005935200 10800 1 EEST} - {3021570000 7200 0 EET} + {3024248400 7200 0 EET} {3037384800 10800 1 EEST} - {3053106000 7200 0 EET} + {3055784400 7200 0 EET} {3068834400 10800 1 EEST} - {3084642000 7200 0 EET} + {3087320400 7200 0 EET} {3100888800 10800 1 EEST} - {3116264400 7200 0 EET} + {3118942800 7200 0 EET} {3132338400 10800 1 EEST} - {3147800400 7200 0 EET} + {3150478800 7200 0 EET} {3163788000 10800 1 EEST} - {3179336400 7200 0 EET} + {3182014800 7200 0 EET} {3195237600 10800 1 EEST} - {3210872400 7200 0 EET} + {3213550800 7200 0 EET} {3226687200 10800 1 EEST} - {3242494800 7200 0 EET} + {3245173200 7200 0 EET} {3258741600 10800 1 EEST} - {3274030800 7200 0 EET} + {3276709200 7200 0 EET} {3290191200 10800 1 EEST} - {3305566800 7200 0 EET} + {3308245200 7200 0 EET} {3321640800 10800 1 EEST} - {3337102800 7200 0 EET} + {3339781200 7200 0 EET} {3353090400 10800 1 EEST} - {3368725200 7200 0 EET} + {3371403600 7200 0 EET} {3384540000 10800 1 EEST} - {3400261200 7200 0 EET} + {3402939600 7200 0 EET} {3415989600 10800 1 EEST} - {3431797200 7200 0 EET} + {3434475600 7200 0 EET} {3448044000 10800 1 EEST} - {3463333200 7200 0 EET} + {3466011600 7200 0 EET} {3479493600 10800 1 EEST} - {3494955600 7200 0 EET} + {3497634000 7200 0 EET} {3510943200 10800 1 EEST} - {3526491600 7200 0 EET} + {3529170000 7200 0 EET} {3542392800 10800 1 EEST} - {3558027600 7200 0 EET} + {3560706000 7200 0 EET} {3573842400 10800 1 EEST} - {3589563600 7200 0 EET} + {3592242000 7200 0 EET} {3605896800 10800 1 EEST} - {3621186000 7200 0 EET} + {3623864400 7200 0 EET} {3637346400 10800 1 EEST} - {3652722000 7200 0 EET} + {3655400400 7200 0 EET} {3668796000 10800 1 EEST} - {3684258000 7200 0 EET} + {3686936400 7200 0 EET} {3700245600 10800 1 EEST} - {3715794000 7200 0 EET} + {3718472400 7200 0 EET} {3731695200 10800 1 EEST} - {3747416400 7200 0 EET} + {3750094800 7200 0 EET} {3763144800 10800 1 EEST} - {3778952400 7200 0 EET} + {3781630800 7200 0 EET} {3795199200 10800 1 EEST} - {3810488400 7200 0 EET} + {3813166800 7200 0 EET} {3826648800 10800 1 EEST} - {3842024400 7200 0 EET} + {3844702800 7200 0 EET} {3858098400 10800 1 EEST} - {3873646800 7200 0 EET} + {3876325200 7200 0 EET} {3889548000 10800 1 EEST} - {3905182800 7200 0 EET} + {3907861200 7200 0 EET} {3920997600 10800 1 EEST} - {3936718800 7200 0 EET} + {3939397200 7200 0 EET} {3952447200 10800 1 EEST} - {3968254800 7200 0 EET} + {3970933200 7200 0 EET} {3984501600 10800 1 EEST} - {3999877200 7200 0 EET} + {4002555600 7200 0 EET} {4015951200 10800 1 EEST} - {4031413200 7200 0 EET} + {4034091600 7200 0 EET} {4047400800 10800 1 EEST} - {4062949200 7200 0 EET} + {4065627600 7200 0 EET} {4078850400 10800 1 EEST} - {4094485200 7200 0 EET} + {4097163600 7200 0 EET} } diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza index 5995729..80f53c9 100644 --- a/library/tzdata/Asia/Gaza +++ b/library/tzdata/Asia/Gaza @@ -89,187 +89,187 @@ set TZData(:Asia/Gaza) { {1175378400 10800 1 EEST} {1189638000 7200 0 EET} {1207000800 10800 1 EEST} - {1221087600 7200 0 EET} + {1219878000 7200 0 EET} {1238536800 10800 1 EEST} - {1252537200 7200 0 EET} + {1251327600 7200 0 EET} {1270072800 10800 1 EEST} - {1283986800 7200 0 EET} + {1282777200 7200 0 EET} {1301608800 10800 1 EEST} - {1315436400 7200 0 EET} + {1314226800 7200 0 EET} {1333231200 10800 1 EEST} - {1347490800 7200 0 EET} + {1346281200 7200 0 EET} {1364767200 10800 1 EEST} - {1378940400 7200 0 EET} + {1377730800 7200 0 EET} {1396303200 10800 1 EEST} - {1410390000 7200 0 EET} + {1409180400 7200 0 EET} {1427839200 10800 1 EEST} - {1441839600 7200 0 EET} + {1440630000 7200 0 EET} {1459461600 10800 1 EEST} - {1473289200 7200 0 EET} + {1472079600 7200 0 EET} {1490997600 10800 1 EEST} - {1505343600 7200 0 EET} + {1504134000 7200 0 EET} {1522533600 10800 1 EEST} - {1536793200 7200 0 EET} + {1535583600 7200 0 EET} {1554069600 10800 1 EEST} - {1568242800 7200 0 EET} + {1567033200 7200 0 EET} {1585692000 10800 1 EEST} - {1599692400 7200 0 EET} + {1598482800 7200 0 EET} {1617228000 10800 1 EEST} - {1631142000 7200 0 EET} + {1629932400 7200 0 EET} {1648764000 10800 1 EEST} - {1662591600 7200 0 EET} + {1661382000 7200 0 EET} {1680300000 10800 1 EEST} - {1694646000 7200 0 EET} + {1693436400 7200 0 EET} {1711922400 10800 1 EEST} - {1726095600 7200 0 EET} + {1724886000 7200 0 EET} {1743458400 10800 1 EEST} - {1757545200 7200 0 EET} + {1756335600 7200 0 EET} {1774994400 10800 1 EEST} - {1788994800 7200 0 EET} + {1787785200 7200 0 EET} {1806530400 10800 1 EEST} - {1820444400 7200 0 EET} + {1819234800 7200 0 EET} {1838152800 10800 1 EEST} - {1852498800 7200 0 EET} + {1851289200 7200 0 EET} {1869688800 10800 1 EEST} - {1883948400 7200 0 EET} + {1882738800 7200 0 EET} {1901224800 10800 1 EEST} - {1915398000 7200 0 EET} + {1914188400 7200 0 EET} {1932760800 10800 1 EEST} - {1946847600 7200 0 EET} + {1945638000 7200 0 EET} {1964383200 10800 1 EEST} - {1978297200 7200 0 EET} + {1977087600 7200 0 EET} {1995919200 10800 1 EEST} - {2009746800 7200 0 EET} + {2008537200 7200 0 EET} {2027455200 10800 1 EEST} - {2041801200 7200 0 EET} + {2040591600 7200 0 EET} {2058991200 10800 1 EEST} - {2073250800 7200 0 EET} + {2072041200 7200 0 EET} {2090613600 10800 1 EEST} - {2104700400 7200 0 EET} + {2103490800 7200 0 EET} {2122149600 10800 1 EEST} - {2136150000 7200 0 EET} + {2134940400 7200 0 EET} {2153685600 10800 1 EEST} - {2167599600 7200 0 EET} + {2166390000 7200 0 EET} {2185221600 10800 1 EEST} - {2199049200 7200 0 EET} + {2197839600 7200 0 EET} {2216844000 10800 1 EEST} - {2231103600 7200 0 EET} + {2229894000 7200 0 EET} {2248380000 10800 1 EEST} - {2262553200 7200 0 EET} + {2261343600 7200 0 EET} {2279916000 10800 1 EEST} - {2294002800 7200 0 EET} + {2292793200 7200 0 EET} {2311452000 10800 1 EEST} - {2325452400 7200 0 EET} + {2324242800 7200 0 EET} {2343074400 10800 1 EEST} - {2356902000 7200 0 EET} + {2355692400 7200 0 EET} {2374610400 10800 1 EEST} - {2388956400 7200 0 EET} + {2387746800 7200 0 EET} {2406146400 10800 1 EEST} - {2420406000 7200 0 EET} + {2419196400 7200 0 EET} {2437682400 10800 1 EEST} - {2451855600 7200 0 EET} + {2450646000 7200 0 EET} {2469304800 10800 1 EEST} - {2483305200 7200 0 EET} + {2482095600 7200 0 EET} {2500840800 10800 1 EEST} - {2514754800 7200 0 EET} + {2513545200 7200 0 EET} {2532376800 10800 1 EEST} - {2546204400 7200 0 EET} + {2544994800 7200 0 EET} {2563912800 10800 1 EEST} - {2578258800 7200 0 EET} + {2577049200 7200 0 EET} {2595535200 10800 1 EEST} - {2609708400 7200 0 EET} + {2608498800 7200 0 EET} {2627071200 10800 1 EEST} - {2641158000 7200 0 EET} + {2639948400 7200 0 EET} {2658607200 10800 1 EEST} - {2672607600 7200 0 EET} + {2671398000 7200 0 EET} {2690143200 10800 1 EEST} - {2704057200 7200 0 EET} + {2702847600 7200 0 EET} {2721765600 10800 1 EEST} - {2736111600 7200 0 EET} + {2734902000 7200 0 EET} {2753301600 10800 1 EEST} - {2767561200 7200 0 EET} + {2766351600 7200 0 EET} {2784837600 10800 1 EEST} - {2799010800 7200 0 EET} + {2797801200 7200 0 EET} {2816373600 10800 1 EEST} - {2830460400 7200 0 EET} + {2829250800 7200 0 EET} {2847996000 10800 1 EEST} - {2861910000 7200 0 EET} + {2860700400 7200 0 EET} {2879532000 10800 1 EEST} - {2893359600 7200 0 EET} + {2892150000 7200 0 EET} {2911068000 10800 1 EEST} - {2925414000 7200 0 EET} + {2924204400 7200 0 EET} {2942604000 10800 1 EEST} - {2956863600 7200 0 EET} + {2955654000 7200 0 EET} {2974226400 10800 1 EEST} - {2988313200 7200 0 EET} + {2987103600 7200 0 EET} {3005762400 10800 1 EEST} - {3019762800 7200 0 EET} + {3018553200 7200 0 EET} {3037298400 10800 1 EEST} - {3051212400 7200 0 EET} + {3050002800 7200 0 EET} {3068834400 10800 1 EEST} - {3082662000 7200 0 EET} + {3081452400 7200 0 EET} {3100456800 10800 1 EEST} - {3114716400 7200 0 EET} + {3113506800 7200 0 EET} {3131992800 10800 1 EEST} - {3146166000 7200 0 EET} + {3144956400 7200 0 EET} {3163528800 10800 1 EEST} - {3177615600 7200 0 EET} + {3176406000 7200 0 EET} {3195064800 10800 1 EEST} - {3209065200 7200 0 EET} + {3207855600 7200 0 EET} {3226687200 10800 1 EEST} - {3240514800 7200 0 EET} + {3239305200 7200 0 EET} {3258223200 10800 1 EEST} - {3272569200 7200 0 EET} + {3271359600 7200 0 EET} {3289759200 10800 1 EEST} - {3304018800 7200 0 EET} + {3302809200 7200 0 EET} {3321295200 10800 1 EEST} - {3335468400 7200 0 EET} + {3334258800 7200 0 EET} {3352917600 10800 1 EEST} - {3366918000 7200 0 EET} + {3365708400 7200 0 EET} {3384453600 10800 1 EEST} - {3398367600 7200 0 EET} + {3397158000 7200 0 EET} {3415989600 10800 1 EEST} - {3429817200 7200 0 EET} + {3428607600 7200 0 EET} {3447525600 10800 1 EEST} - {3461871600 7200 0 EET} + {3460662000 7200 0 EET} {3479148000 10800 1 EEST} - {3493321200 7200 0 EET} + {3492111600 7200 0 EET} {3510684000 10800 1 EEST} - {3524770800 7200 0 EET} + {3523561200 7200 0 EET} {3542220000 10800 1 EEST} - {3556220400 7200 0 EET} + {3555010800 7200 0 EET} {3573756000 10800 1 EEST} - {3587670000 7200 0 EET} + {3586460400 7200 0 EET} {3605378400 10800 1 EEST} - {3619724400 7200 0 EET} + {3618514800 7200 0 EET} {3636914400 10800 1 EEST} - {3651174000 7200 0 EET} + {3649964400 7200 0 EET} {3668450400 10800 1 EEST} - {3682623600 7200 0 EET} + {3681414000 7200 0 EET} {3699986400 10800 1 EEST} - {3714073200 7200 0 EET} + {3712863600 7200 0 EET} {3731608800 10800 1 EEST} - {3745522800 7200 0 EET} + {3744313200 7200 0 EET} {3763144800 10800 1 EEST} - {3776972400 7200 0 EET} + {3775762800 7200 0 EET} {3794680800 10800 1 EEST} - {3809026800 7200 0 EET} + {3807817200 7200 0 EET} {3826216800 10800 1 EEST} - {3840476400 7200 0 EET} + {3839266800 7200 0 EET} {3857839200 10800 1 EEST} - {3871926000 7200 0 EET} + {3870716400 7200 0 EET} {3889375200 10800 1 EEST} - {3903375600 7200 0 EET} + {3902166000 7200 0 EET} {3920911200 10800 1 EEST} - {3934825200 7200 0 EET} + {3933615600 7200 0 EET} {3952447200 10800 1 EEST} - {3966274800 7200 0 EET} + {3965065200 7200 0 EET} {3984069600 10800 1 EEST} - {3998329200 7200 0 EET} + {3997119600 7200 0 EET} {4015605600 10800 1 EEST} - {4029778800 7200 0 EET} + {4028569200 7200 0 EET} {4047141600 10800 1 EEST} - {4061228400 7200 0 EET} + {4060018800 7200 0 EET} {4078677600 10800 1 EEST} - {4092678000 7200 0 EET} + {4091468400 7200 0 EET} } diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 5e1c63e..9db002c 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -10,5 +10,5 @@ set TZData(:Asia/Karachi) { {1018119660 21600 1 PKST} {1033840860 18000 0 PKT} {1212260400 21600 1 PKST} - {1220205600 18000 0 PKT} + {1225476000 18000 0 PKT} } diff --git a/library/tzdata/Indian/Mauritius b/library/tzdata/Indian/Mauritius index 430bad4..69fe8fe 100644 --- a/library/tzdata/Indian/Mauritius +++ b/library/tzdata/Indian/Mauritius @@ -6,5 +6,186 @@ set TZData(:Indian/Mauritius) { {403041600 18000 1 MUST} {417034800 14400 0 MUT} {1224972000 18000 1 MUST} - {1238104800 14400 0 MUT} + {1238277600 14400 0 MUT} + {1256421600 18000 1 MUST} + {1269727200 14400 0 MUT} + {1288476000 18000 1 MUST} + {1301176800 14400 0 MUT} + {1319925600 18000 1 MUST} + {1332626400 14400 0 MUT} + {1351375200 18000 1 MUST} + {1364680800 14400 0 MUT} + {1382824800 18000 1 MUST} + {1396130400 14400 0 MUT} + {1414274400 18000 1 MUST} + {1427580000 14400 0 MUT} + {1445724000 18000 1 MUST} + {1459029600 14400 0 MUT} + {1477778400 18000 1 MUST} + {1490479200 14400 0 MUT} + {1509228000 18000 1 MUST} + {1521928800 14400 0 MUT} + {1540677600 18000 1 MUST} + {1553983200 14400 0 MUT} + {1572127200 18000 1 MUST} + {1585432800 14400 0 MUT} + {1603576800 18000 1 MUST} + {1616882400 14400 0 MUT} + {1635631200 18000 1 MUST} + {1648332000 14400 0 MUT} + {1667080800 18000 1 MUST} + {1679781600 14400 0 MUT} + {1698530400 18000 1 MUST} + {1711836000 14400 0 MUT} + {1729980000 18000 1 MUST} + {1743285600 14400 0 MUT} + {1761429600 18000 1 MUST} + {1774735200 14400 0 MUT} + {1792879200 18000 1 MUST} + {1806184800 14400 0 MUT} + {1824933600 18000 1 MUST} + {1837634400 14400 0 MUT} + {1856383200 18000 1 MUST} + {1869084000 14400 0 MUT} + {1887832800 18000 1 MUST} + {1901138400 14400 0 MUT} + {1919282400 18000 1 MUST} + {1932588000 14400 0 MUT} + {1950732000 18000 1 MUST} + {1964037600 14400 0 MUT} + {1982786400 18000 1 MUST} + {1995487200 14400 0 MUT} + {2014236000 18000 1 MUST} + {2026936800 14400 0 MUT} + {2045685600 18000 1 MUST} + {2058386400 14400 0 MUT} + {2077135200 18000 1 MUST} + {2090440800 14400 0 MUT} + {2108584800 18000 1 MUST} + {2121890400 14400 0 MUT} + {2140034400 18000 1 MUST} + {2153340000 14400 0 MUT} + {2172088800 18000 1 MUST} + {2184789600 14400 0 MUT} + {2203538400 18000 1 MUST} + {2216239200 14400 0 MUT} + {2234988000 18000 1 MUST} + {2248293600 14400 0 MUT} + {2266437600 18000 1 MUST} + {2279743200 14400 0 MUT} + {2297887200 18000 1 MUST} + {2311192800 14400 0 MUT} + {2329336800 18000 1 MUST} + {2342642400 14400 0 MUT} + {2361391200 18000 1 MUST} + {2374092000 14400 0 MUT} + {2392840800 18000 1 MUST} + {2405541600 14400 0 MUT} + {2424290400 18000 1 MUST} + {2437596000 14400 0 MUT} + {2455740000 18000 1 MUST} + {2469045600 14400 0 MUT} + {2487189600 18000 1 MUST} + {2500495200 14400 0 MUT} + {2519244000 18000 1 MUST} + {2531944800 14400 0 MUT} + {2550693600 18000 1 MUST} + {2563394400 14400 0 MUT} + {2582143200 18000 1 MUST} + {2595448800 14400 0 MUT} + {2613592800 18000 1 MUST} + {2626898400 14400 0 MUT} + {2645042400 18000 1 MUST} + {2658348000 14400 0 MUT} + {2676492000 18000 1 MUST} + {2689797600 14400 0 MUT} + {2708546400 18000 1 MUST} + {2721247200 14400 0 MUT} + {2739996000 18000 1 MUST} + {2752696800 14400 0 MUT} + {2771445600 18000 1 MUST} + {2784751200 14400 0 MUT} + {2802895200 18000 1 MUST} + {2816200800 14400 0 MUT} + {2834344800 18000 1 MUST} + {2847650400 14400 0 MUT} + {2866399200 18000 1 MUST} + {2879100000 14400 0 MUT} + {2897848800 18000 1 MUST} + {2910549600 14400 0 MUT} + {2929298400 18000 1 MUST} + {2941999200 14400 0 MUT} + {2960748000 18000 1 MUST} + {2974053600 14400 0 MUT} + {2992197600 18000 1 MUST} + {3005503200 14400 0 MUT} + {3023647200 18000 1 MUST} + {3036952800 14400 0 MUT} + {3055701600 18000 1 MUST} + {3068402400 14400 0 MUT} + {3087151200 18000 1 MUST} + {3099852000 14400 0 MUT} + {3118600800 18000 1 MUST} + {3131906400 14400 0 MUT} + {3150050400 18000 1 MUST} + {3163356000 14400 0 MUT} + {3181500000 18000 1 MUST} + {3194805600 14400 0 MUT} + {3212949600 18000 1 MUST} + {3226255200 14400 0 MUT} + {3245004000 18000 1 MUST} + {3257704800 14400 0 MUT} + {3276453600 18000 1 MUST} + {3289154400 14400 0 MUT} + {3307903200 18000 1 MUST} + {3321208800 14400 0 MUT} + {3339352800 18000 1 MUST} + {3352658400 14400 0 MUT} + {3370802400 18000 1 MUST} + {3384108000 14400 0 MUT} + {3402856800 18000 1 MUST} + {3415557600 14400 0 MUT} + {3434306400 18000 1 MUST} + {3447007200 14400 0 MUT} + {3465756000 18000 1 MUST} + {3479061600 14400 0 MUT} + {3497205600 18000 1 MUST} + {3510511200 14400 0 MUT} + {3528655200 18000 1 MUST} + {3541960800 14400 0 MUT} + {3560104800 18000 1 MUST} + {3573410400 14400 0 MUT} + {3592159200 18000 1 MUST} + {3604860000 14400 0 MUT} + {3623608800 18000 1 MUST} + {3636309600 14400 0 MUT} + {3655058400 18000 1 MUST} + {3668364000 14400 0 MUT} + {3686508000 18000 1 MUST} + {3699813600 14400 0 MUT} + {3717957600 18000 1 MUST} + {3731263200 14400 0 MUT} + {3750012000 18000 1 MUST} + {3762712800 14400 0 MUT} + {3781461600 18000 1 MUST} + {3794162400 14400 0 MUT} + {3812911200 18000 1 MUST} + {3825612000 14400 0 MUT} + {3844360800 18000 1 MUST} + {3857666400 14400 0 MUT} + {3875810400 18000 1 MUST} + {3889116000 14400 0 MUT} + {3907260000 18000 1 MUST} + {3920565600 14400 0 MUT} + {3939314400 18000 1 MUST} + {3952015200 14400 0 MUT} + {3970764000 18000 1 MUST} + {3983464800 14400 0 MUT} + {4002213600 18000 1 MUST} + {4015519200 14400 0 MUT} + {4033663200 18000 1 MUST} + {4046968800 14400 0 MUT} + {4065112800 18000 1 MUST} + {4078418400 14400 0 MUT} + {4096562400 18000 1 MUST} } -- cgit v0.12 From f7e06b3b6dd0f30a6ac2a0eb9c83606066682818 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Thu, 11 Dec 2008 01:20:02 +0000 Subject: [Bug 1929403] specify the translation mode when counting bytes --- tests/http.test | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/http.test b/tests/http.test index 18cf75a..94cc95b 100644 --- a/tests/http.test +++ b/tests/http.test @@ -12,7 +12,7 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # -# RCS: @(#) $Id: http.test,v 1.48 2008/03/12 09:51:39 hobbs Exp $ +# RCS: @(#) $Id: http.test,v 1.48.2.1 2008/12/11 01:20:02 patthoyts Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -364,6 +364,7 @@ test http-4.4 {http::Event} { test http-4.5 {http::Event} { set testfile [makeFile "" testfile] set out [open $testfile w] + fconfigure $out -translation lf set token [http::geturl $url -channel $out] close $out upvar #0 $token data -- cgit v0.12 From 0be8e1fe1558baf2361656165923b9191c37b254 Mon Sep 17 00:00:00 2001 From: nijtmans Date: Thu, 11 Dec 2008 14:05:28 +0000 Subject: Fallback to European time zone DST rules, when the timezone is between 0 and -12 [Bug 2207436]. --- ChangeLog | 7 +++++++ library/clock.tcl | 33 ++++++++++++++++++++++++++------- tests/clock.test | 24 +++++++++++++++++++++++- 3 files changed, 56 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 22492a8..d622cfd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-12-11 Jan Nijtmans + + * library/clock.tcl (ProcessPosixTimeZone): Fallback to + European time zone DST rules, when the timezone is + between 0 and -12 [Bug 2207436]. + * tests/clock.test (clock-64.[12]): Test cases for [Bug 2207436] + 2008-12-10 Kevin B. Kenny * library/tzdata/*: Update from Olson's tzdata2008i. diff --git a/library/clock.tcl b/library/clock.tcl index 8b371d9..da63faa 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47.2.2 2008/11/30 19:25:46 kennykb Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.47.2.3 2008/12/11 14:05:28 nijtmans Exp $ # #---------------------------------------------------------------------- @@ -3885,23 +3885,42 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { * $dstSignum }] } - # Fill in defaults for US DST rules + # Fill in defaults for European or US DST rules if { [dict get $z startDayOfYear] eq {} && [dict get $z startMonth] eq {} } { + if {($stdHours>=0) && ($stdHours<=12)} { + dict set z startWeekOfMonth 5 + if {$stdHours>1} { + dict set z startHours 2 + } else { + dict set z startHours [expr {$stdHours+1}] + } + } else { + dict set z startWeekOfMonth 2 + dict set z startHours 2 + } dict set z startMonth 3 - dict set z startWeekOfMonth 2 dict set z startDayOfWeek 0 - dict set z startHours 2 dict set z startMinutes 0 dict set z startSeconds 0 } if { [dict get $z endDayOfYear] eq {} && [dict get $z endMonth] eq {} } { - dict set z endMonth 11 - dict set z endWeekOfMonth 1 + if {($stdHours>=0) && ($stdHours<=12)} { + dict set z endMonth 10 + dict set z endWeekOfMonth 5 + if {$stdHours>1} { + dict set z endHours 3 + } else { + dict set z endHours [expr {$stdHours+2}] + } + } else { + dict set z endMonth 11 + dict set z endWeekOfMonth 1 + dict set z endHours 2 + } dict set z endDayOfWeek 0 - dict set z endHours 2 dict set z endMinutes 0 dict set z endSeconds 0 } diff --git a/tests/clock.test b/tests/clock.test index cdb577f..8cc5bdb 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.83.2.3 2008/11/30 19:25:46 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.83.2.4 2008/12/11 14:05:28 nijtmans Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36083,6 +36083,28 @@ test clock-52.1 {Posix timezone and conversion on last Sunday} { set result } {01:59:59 01:59:59 03:00:00 03:00:00} +test clock-52.2 {correct conversion of times in Europe} { + # [Bug 2207436] + set result {} + foreach t [list 1206838799 1206838800 1224982799 1224982800] { + lappend result [clock format $t -format %H:%M:%S \ + -timezone MET-1METDST] + lappend result [clock format $t -format %H:%M:%S \ + -timezone MET0METDST] + } + set result +} {01:59:59 00:59:59 03:00:00 02:00:00 02:59:59 01:59:59 02:00:00 01:00:00} + +test clock-52.3 {correct conversion of times in Russia} { + # [Bug 2207436] + set result {} + foreach t [list 1206799199 1206799200 1224943199 1224943200] { + lappend result [clock format $t -format %H:%M:%S \ + -timezone WST-12WSTDST] + } + set result +} {01:59:59 03:00:00 02:59:59 02:00:00} + # Regression test for Bug # 1505383 test clock-53.1 {%EC %Ey} { -- cgit v0.12 From 55bf3ca3e9a9391085b86903de99f529ca28142e Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 11 Dec 2008 17:27:39 +0000 Subject: * generic/tclIO.c (SetChannelFromAny and related): Modified the * tests/io.test: internal representation of the tclChannelType to contain not only the ChannelState pointer, but also a reference to the interpreter it was made in. Invalidate and recompute the internal representation when it is used in a different interpreter (Like cmdName intrep's). Added testcase. [Bug 2407783]. --- ChangeLog | 9 +++++++++ generic/tclIO.c | 20 +++++++++++++++++--- tests/io.test | 12 +++++++++++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index d622cfd..900e48f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-12-11 Andreas Kupries + + * generic/tclIO.c (SetChannelFromAny and related): Modified the + * tests/io.test: internal representation of the tclChannelType to + contain not only the ChannelState pointer, but also a reference to + the interpreter it was made in. Invalidate and recompute the + internal representation when it is used in a different interpreter + (Like cmdName intrep's). Added testcase. [Bug 2407783]. + 2008-12-11 Jan Nijtmans * library/clock.tcl (ProcessPosixTimeZone): Fallback to diff --git a/generic/tclIO.c b/generic/tclIO.c index 2e8b7dc..3553286 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.9 2008/12/02 18:23:51 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.10 2008/12/11 17:27:39 andreas_kupries Exp $ */ #include "tclInt.h" @@ -220,6 +220,10 @@ static Tcl_ObjType tclChannelType = { ((ChannelState *) (objPtr)->internalRep.otherValuePtr) #define SET_CHANNELSTATE(objPtr, storePtr) \ ((objPtr)->internalRep.otherValuePtr = (void *) (storePtr)) +#define GET_CHANNELINTERP(objPtr) \ + ((Interp *) (objPtr)->internalRep.twoPtrValue.ptr2) +#define SET_CHANNELINTERP(objPtr, storePtr) \ + ((objPtr)->internalRep.twoPtrValue.ptr2 = (void *) (storePtr)) #define BUSY_STATE(st,fl) \ ((((st)->csPtrR) && ((fl) & TCL_READABLE)) || \ @@ -10612,8 +10616,11 @@ DupChannelIntRep( register Tcl_Obj *copyPtr) /* Object with internal rep to set. Must not * currently have an internal rep.*/ { - ChannelState *statePtr = GET_CHANNELSTATE(srcPtr); + ChannelState *statePtr = GET_CHANNELSTATE(srcPtr); + Interp *interpPtr = GET_CHANNELINTERP(srcPtr); + SET_CHANNELSTATE(copyPtr, statePtr); + SET_CHANNELINTERP(copyPtr, interpPtr); Tcl_Preserve((ClientData) statePtr); copyPtr->typePtr = &tclChannelType; } @@ -10641,18 +10648,24 @@ SetChannelFromAny( register Tcl_Obj *objPtr) /* The object to convert. */ { ChannelState *statePtr; + Interp *interpPtr; if (objPtr->typePtr == &tclChannelType) { /* * The channel is valid until any call to DetachChannel occurs. * Ensure consistency checks are done. */ - statePtr = GET_CHANNELSTATE(objPtr); + statePtr = GET_CHANNELSTATE(objPtr); + interpPtr = GET_CHANNELINTERP(objPtr); if (statePtr->flags & (CHANNEL_TAINTED|CHANNEL_CLOSED)) { ResetFlag(statePtr, CHANNEL_TAINTED); Tcl_Release((ClientData) statePtr); UpdateStringOfChannel(objPtr); objPtr->typePtr = NULL; + } else if (interpPtr != (Interp*) interp) { + Tcl_Release((ClientData) statePtr); + UpdateStringOfChannel(objPtr); + objPtr->typePtr = NULL; } } if (objPtr->typePtr != &tclChannelType) { @@ -10675,6 +10688,7 @@ SetChannelFromAny( statePtr = ((Channel *)chan)->state; Tcl_Preserve((ClientData) statePtr); SET_CHANNELSTATE(objPtr, statePtr); + SET_CHANNELINTERP(objPtr, interp); objPtr->typePtr = &tclChannelType; } return TCL_OK; diff --git a/tests/io.test b/tests/io.test index a2aaf7f..2e21e5b 100644 --- a/tests/io.test +++ b/tests/io.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: io.test,v 1.80.2.12 2008/06/20 19:23:26 dgp Exp $ +# RCS: @(#) $Id: io.test,v 1.80.2.13 2008/12/11 17:27:39 andreas_kupries Exp $ if {[catch {package require tcltest 2}]} { puts stderr "Skipping tests in [info script]. tcltest 2 required." @@ -7695,6 +7695,16 @@ test io-73.1 {channel Tcl_Obj SetChannelFromAny} {} { catch {close [lreplace [list a] 0 end]} } {1} +test io-73.2 {channel Tcl_Obj SetChannelFromAny, bug 2407783} {} { + # Invalidate intrep of 'channel' Tcl_Obj when transiting between interpreters. + interp create foo + set f [open [info script] r] + seek $f 0 + set code [catch {interp eval foo [list seek $f 0]} msg] + # The string map converts the changing channel handle to a fixed string + list $code [string map [list $f @@] $msg] +} {1 {can not find channel named "@@"}} + # ### ### ### ######### ######### ######### # cleanup -- cgit v0.12 From 778670ee1455a5d8b9c36870bfe60de35afcca50 Mon Sep 17 00:00:00 2001 From: nijtmans Date: Fri, 12 Dec 2008 17:46:13 +0000 Subject: Fix time change in Eastern Europe (not 3:00 but 4:00 local time) [Bug 2207436] --- ChangeLog | 7 ++++++- library/clock.tcl | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 900e48f..14708bc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-12-12 Jan Nijtmans + + * library/clock.tcl (ProcessPosixTimeZone): Fix time change + in Eastern Europe (not 3:00 but 4:00 local time) [Bug 2207436] + 2008-12-11 Andreas Kupries * generic/tclIO.c (SetChannelFromAny and related): Modified the @@ -12,7 +17,7 @@ * library/clock.tcl (ProcessPosixTimeZone): Fallback to European time zone DST rules, when the timezone is between 0 and -12 [Bug 2207436]. - * tests/clock.test (clock-64.[12]): Test cases for [Bug 2207436] + * tests/clock.test (clock-52.[23]): Test cases for [Bug 2207436] 2008-12-10 Kevin B. Kenny diff --git a/library/clock.tcl b/library/clock.tcl index da63faa..4a34b82 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47.2.3 2008/12/11 14:05:28 nijtmans Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.47.2.4 2008/12/12 17:46:13 nijtmans Exp $ # #---------------------------------------------------------------------- @@ -3891,7 +3891,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { && [dict get $z startMonth] eq {} } { if {($stdHours>=0) && ($stdHours<=12)} { dict set z startWeekOfMonth 5 - if {$stdHours>1} { + if {$stdHours>2} { dict set z startHours 2 } else { dict set z startHours [expr {$stdHours+1}] @@ -3910,7 +3910,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { if {($stdHours>=0) && ($stdHours<=12)} { dict set z endMonth 10 dict set z endWeekOfMonth 5 - if {$stdHours>1} { + if {$stdHours>2} { dict set z endHours 3 } else { dict set z endHours [expr {$stdHours+2}] -- cgit v0.12 From 83965ef6baf152bbe9c64cde37d3a0d57c5f5f06 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 15 Dec 2008 15:43:43 +0000 Subject: optional argument format correction --- doc/Tcl_Main.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/Tcl_Main.3 b/doc/Tcl_Main.3 index b055e08..c4461bf 100644 --- a/doc/Tcl_Main.3 +++ b/doc/Tcl_Main.3 @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Tcl_Main.3,v 1.16 2007/12/13 15:22:32 dgp Exp $ +'\" RCS: @(#) $Id: Tcl_Main.3,v 1.16.2.1 2008/12/15 15:43:43 dgp Exp $ '\" .so man.macros .TH Tcl_Main 3 8.4 Tcl "Tcl Library Procedures" @@ -79,7 +79,7 @@ more information. .PP \fBTcl_Main\fR supports two modes of operation, depending on the values of \fIargc\fR and \fIargv\fR. If the first few arguments -in \fIargv\fR match ?\fB\-encoding \fIname\fR? ?\fIfileName\fR?, +in \fIargv\fR match ?\fB\-encoding \fIname\fR? \fIfileName\fR, where \fIfileName\fR does not begin with the character \fI\-\fR, then \fIfileName\fR is taken to be the name of a file containing a \fIstartup script\fR, and \fIname\fR is taken to be the name -- cgit v0.12 From 9827c24b7fa3b934568ea04dee4ade7ebf20b232 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 15 Dec 2008 23:26:58 +0000 Subject: Fix [Bug 2431847] --- ChangeLog | 87 +++++++++++++++++++++++++++------------------------- generic/tclExecute.c | 7 +++-- tests/dict.test | 8 ++++- 3 files changed, 57 insertions(+), 45 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14708bc..c2af525 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,23 +1,27 @@ +2008-12-15 Donal K. Fellows + + * generic/tclExecute.c (TEBC:INST_DICT_GET): Make sure that the result + is empty when generating an error message. [Bug 2431847] + 2008-12-12 Jan Nijtmans - * library/clock.tcl (ProcessPosixTimeZone): Fix time change - in Eastern Europe (not 3:00 but 4:00 local time) [Bug 2207436] + * library/clock.tcl (ProcessPosixTimeZone): Fix time change in Eastern + Europe (not 3:00 but 4:00 local time) [Bug 2207436] 2008-12-11 Andreas Kupries * generic/tclIO.c (SetChannelFromAny and related): Modified the * tests/io.test: internal representation of the tclChannelType to - contain not only the ChannelState pointer, but also a reference to - the interpreter it was made in. Invalidate and recompute the - internal representation when it is used in a different interpreter - (Like cmdName intrep's). Added testcase. [Bug 2407783]. + contain not only the ChannelState pointer, but also a reference to the + interpreter it was made in. Invalidate and recompute the internal + representation when it is used in a different interpreter (like + cmdName intrep's). Added testcase. [Bug 2407783] 2008-12-11 Jan Nijtmans - * library/clock.tcl (ProcessPosixTimeZone): Fallback to - European time zone DST rules, when the timezone is - between 0 and -12 [Bug 2207436]. - * tests/clock.test (clock-52.[23]): Test cases for [Bug 2207436] + * library/clock.tcl (ProcessPosixTimeZone): Fallback to European time + zone DST rules, when the timezone is between 0 and -12. [Bug 2207436] + * tests/clock.test (clock-52.[23]): Test cases. 2008-12-10 Kevin B. Kenny @@ -27,20 +31,19 @@ * generic/tclPathObj.c (Tcl_FSGetNormalizedPath): Added another flag value TCLPATH_NEEDNORM to mark those intreps which need more - complete normalization attention for correct results. [Bug 2385549] + complete normalization attention for correct results. [Bug 2385549] 2008-12-03 Don Porter - * generic/tclFileName.c (DoGlob): One of the - Tcl_FSMatchInDirectory() calls did not have its return code checked. - This caused error messages returned by some Tcl_Filesystem drivers - to be swallowed. + * generic/tclFileName.c (DoGlob): One of the Tcl_FSMatchInDirectory + calls did not have its return code checked. This caused error messages + returned by some Tcl_Filesystem drivers to be swallowed. 2008-12-02 Andreas Kupries * generic/tclIO.c (TclFinalizeIOSubsystem): Replaced Alexandre - Ferrieux's first patch for [Bug 2270477] with a gentler version, - also supplied by him. + Ferrieux's first patch for [Bug 2270477] with a gentler version, also + supplied by him. 2008-12-01 Don Porter @@ -48,18 +51,18 @@ 2008-11-30 Kevin B. Kenny - * library/clock.tcl (format, ParseClockScanFormat): Added a - [string map] to get rid of namespace delimiters before caching a - scan or format procedure [Bug 2362156]. - * tests/clock.test (clock-64.[12]): Added test cases for the bug - that was tickled by a namespace delimiter inside a format string. + * library/clock.tcl (format, ParseClockScanFormat): Added a [string + map] to get rid of namespace delimiters before caching a scan or + format procedure. [Bug 2362156] + * tests/clock.test (clock-64.[12]): Added test cases for the bug that + was tickled by a namespace delimiter inside a format string. 2008-11-25 Andreas Kupries * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Alexandre - Ferrieux's patch for [Bug 2270477] to prevent infinite looping - during finalization of channels not bound to interpreters. + Ferrieux's patch for [Bug 2270477] to prevent infinite looping during + finalization of channels not bound to interpreters. 2008-08-23 Andreas Kupries @@ -92,15 +95,15 @@ 2008-11-04 Jeff Hobbs - * generic/tclPort.h: remove the ../win/ header dir as the build - system already has it, and it confuses builds when used with - private headers installed. + * generic/tclPort.h: remove the ../win/ header dir as the build system + already has it, and it confuses builds when used with private headers + installed. 2008-10-24 Pat Thoyts * library/http/http.tcl: Backported a fix for reading HTTP-like - protocols that used to work and were broken with http 2.7. Now - http 2.7.2 + protocols that used to work and were broken with http 2.7. Now http + 2.7.2 2008-10-23 Don Porter @@ -118,14 +121,14 @@ 2008-10-19 Don Porter * generic/tclProc.c: Reset -level and -code values to defaults - after they are used. [Bug 2152286]. + after they are used. [Bug 2152286] 2008-10-16 Don Porter * library/init.tcl: Revised [unknown] so that it carefully - preserves the state of the ::errorInfo and ::errorCode variables - at the start of auto-loading and restores that state before the - autoloaded command is evaluated. [Bug 2140628] + preserves the state of the ::errorInfo and ::errorCode variables at + the start of auto-loading and restores that state before the + autoloaded command is evaluated. [Bug 2140628] 2008-10-10 Don Porter @@ -147,7 +150,7 @@ * generic/tclTrace.c: Corrected handling of errors returned by variable traces so that the errorInfo value contains the original - error message. [Bug 2151707] + error message. [Bug 2151707] * generic/tclVar.c: Revised implementation of TclObjVarErrMsg so that error message construction does not disturb an existing @@ -155,9 +158,10 @@ 2008-10-06 Jan Nijtmans - * tclWinTest.c: Fix compiler warning when compiling this file with mingw gcc: - tclWinTest.c:706: warning: dereferencing type-punned pointer will break - strict-aliasing rules + * tclWinTest.c: Fix compiler warning when compiling this file with + mingw gcc: + tclWinTest.c:706: warning: dereferencing type-punned pointer will + break strict-aliasing rules * generic/tclLoad.c: Make sure that any library which doesn't have an unloadproc is only really unloaded when no library code is executed yet. [Bug 2059262] @@ -169,11 +173,10 @@ 2008-10-05 Kevin B, Kenny - * libtommath/bn_mp_sqrt.c (bn_mp_sqrt): Handle the case where - * tests/expr.test (expr-47.13): a number's square root - is between n< diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 985a867..2800376 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.4 2008/08/04 04:48:14 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.5 2008/12/15 23:26:59 dkf Exp $ */ #include "tclInt.h" @@ -6678,7 +6678,10 @@ TclExecuteByteCode( "%u => ERROR reading leaf dictionary key \"%s\": ", opnd, O2S(dictPtr)), Tcl_GetObjResult(interp)); } else { - /*Tcl_ResetResult(interp);*/ + Tcl_Obj *tmpObj; + + TclNewObj(tmpObj); + Tcl_SetObjResult(interp, tmpObj); Tcl_AppendResult(interp, "key \"", TclGetString(OBJ_AT_TOS), "\" not known in dictionary", NULL); TRACE_WITH_OBJ(("%u => ERROR ", opnd), Tcl_GetObjResult(interp)); diff --git a/tests/dict.test b/tests/dict.test index cc861b4..5b08996 100644 --- a/tests/dict.test +++ b/tests/dict.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: dict.test,v 1.24.2.1 2008/05/07 10:39:40 dkf Exp $ +# RCS: @(#) $Id: dict.test,v 1.24.2.2 2008/12/15 23:26:59 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -113,6 +113,12 @@ test dict-3.13 {dict get command} { test dict-3.14 {dict get command} { list [catch {dict get {a b c d} a c} msg] $msg } {1 {missing value to go with key}} +test dict-3.15 {compiled dict get error cleanliness - Bug 2431847} -body { + apply {{} { + dict set a(z) b c + dict get $a(z) d + }} +} -returnCodes error -result {key "d" not known in dictionary} test dict-4.1 {dict replace command} { getOrder [dict replace {a b c d}] a c -- cgit v0.12 From 365d4172afaf0e0a1931b7f2b39fcca7b29e6fe6 Mon Sep 17 00:00:00 2001 From: ferrieux Date: Tue, 16 Dec 2008 22:04:00 +0000 Subject: Backport re-fix of [2431847] --- generic/tclExecute.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 2800376..26cfba3 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.5 2008/12/15 23:26:59 dkf Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.6 2008/12/16 22:04:00 ferrieux Exp $ */ #include "tclInt.h" @@ -6678,10 +6678,7 @@ TclExecuteByteCode( "%u => ERROR reading leaf dictionary key \"%s\": ", opnd, O2S(dictPtr)), Tcl_GetObjResult(interp)); } else { - Tcl_Obj *tmpObj; - - TclNewObj(tmpObj); - Tcl_SetObjResult(interp, tmpObj); + Tcl_ResetResult(interp); Tcl_AppendResult(interp, "key \"", TclGetString(OBJ_AT_TOS), "\" not known in dictionary", NULL); TRACE_WITH_OBJ(("%u => ERROR ", opnd), Tcl_GetObjResult(interp)); -- cgit v0.12 From a93408f444780aece0dbe83843fde536408ce36b Mon Sep 17 00:00:00 2001 From: dgp Date: Sun, 21 Dec 2008 20:13:48 +0000 Subject: * changes: Update for 8.5.6 release. * library/tclIndex: Removed reference to no-longer-extant procedure 'tclLdAout'. * doc/library.n: Corrected mention of 'auto_exec' to 'auto_execok'. [Patch 2114900] thanks to Stu Cassoff Backport of 2008-11-26 commit from Kevin Kenny. * win/tclWinThrd.c (TclpThreadCreate): We need to initialize the thread id variable to 0 as on 64 bit windows this is a pointer sized field while windows only fills it with a 32 bit value. The result is an inability to join the threads as the ids cannot be matched. Backport of 2008-10-13 commit from Pat Thoyts. --- ChangeLog | 17 ++++++++++++++++- changes | 29 ++++++++++++++++++++++++++++- doc/library.n | 4 ++-- library/tclIndex | 1 - win/tclWinThrd.c | 6 +++++- 5 files changed, 51 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index c2af525..785ee5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2008-12-21 Don Porter + + * changes: Update for 8.5.6 release. + + * library/tclIndex: Removed reference to no-longer-extant procedure + 'tclLdAout'. + * doc/library.n: Corrected mention of 'auto_exec' to 'auto_execok'. + [Patch 2114900] thanks to Stu Cassoff + Backport of 2008-11-26 commit from Kevin Kenny. + + * win/tclWinThrd.c (TclpThreadCreate): We need to initialize the + thread id variable to 0 as on 64 bit windows this is a pointer sized + field while windows only fills it with a 32 bit value. The result is + an inability to join the threads as the ids cannot be matched. + Backport of 2008-10-13 commit from Pat Thoyts. + 2008-12-15 Donal K. Fellows * generic/tclExecute.c (TEBC:INST_DICT_GET): Make sure that the result @@ -57,7 +73,6 @@ * tests/clock.test (clock-64.[12]): Added test cases for the bug that was tickled by a namespace delimiter inside a format string. - 2008-11-25 Andreas Kupries * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Alexandre diff --git a/changes b/changes index 21331bb..ff04826 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.10 2008/10/10 19:11:17 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.11 2008/12/21 20:13:48 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7261,3 +7261,30 @@ variables without "." added to customization hooks (kupries) 2008-10-08 (bug fix)[2151707] fix stack trace from variable trace (porter) --- Released 8.5.5, October 15, 2008 --- See ChangeLog for details --- + +2008-10-24 (bug fix) fix failure to read SHOUTcast streams (thoyts) +=> http 2.7.2 + +2008-11-10 (bug fix)[2255235] [platform::shell::LOCATE] update (ring,kupries) +=> platform::shell 1.1.4 + +2008-11-13 (bug fix)[2269431] VFS [load] -> tempfile litter (ficicchia,nijtmans) + +2008-11-30 (bug fix)[2362156] [clock]: colon in format string (mizuno,kenny) + +2008-12-01 (bug fix)[2251175] [{*}{\{}] errors (hellström,ferrieux,porter) + +2008-12-02 (bug fix)[2270477] hang in channel finalization (ferrieux,kupries) + +2008-12-04 (bug fix)[2385549] [file normalize] failed on some paths (porter) + +2008-12-10 tzdata updated to Olson's tzdata2008i (kenny) + +2008-12-11 (bug fix)[2407783] spoil ChannelState when channel name passes +among multiple interps (kupries) + +2008-12-21 (bug fix) Fix ability to join threads on 64-bit Windows (thoyts) + +2008-12-21 (bug fix)[2114900] updated tclIndex file (cassoff,kenny) + +--- Released 8.5.6, December 21, 2008 --- See ChangeLog for details --- diff --git a/doc/library.n b/doc/library.n index 7f75e67..80b6bd9 100644 --- a/doc/library.n +++ b/doc/library.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: library.n,v 1.22 2007/12/13 15:22:32 dgp Exp $ +'\" RCS: @(#) $Id: library.n,v 1.22.2.1 2008/12/21 20:13:49 dgp Exp $ .so man.macros .TH library n "8.0" Tcl "Tcl Built-In Commands" .BS @@ -65,7 +65,7 @@ named by \fIcmd\fR. If not, it returns an empty string. This command examines the directories in the current search path (given by the PATH environment variable) in its search for an executable file named \fIcmd\fR. On Windows platforms, the search is expanded with the same -directories and file extensions as used by \fBexec\fR. \fBAuto_exec\fR +directories and file extensions as used by \fBexec\fR. \fBAuto_execok\fR remembers information about previous searches in an array named \fBauto_execs\fR; this avoids the path search in future calls for the same \fIcmd\fR. The command \fBauto_reset\fR may be used to force diff --git a/library/tclIndex b/library/tclIndex index 2fcf4a5..010616f 100644 --- a/library/tclIndex +++ b/library/tclIndex @@ -27,7 +27,6 @@ set auto_index(::tcl::HistRedo) [list source [file join $dir history.tcl]] set auto_index(::tcl::HistIndex) [list source [file join $dir history.tcl]] set auto_index(::tcl::HistEvent) [list source [file join $dir history.tcl]] set auto_index(::tcl::HistChange) [list source [file join $dir history.tcl]] -set auto_index(tclLdAout) [list source [file join $dir ldAout.tcl]] set auto_index(pkg_mkIndex) [list source [file join $dir package.tcl]] set auto_index(tclPkgSetup) [list source [file join $dir package.tcl]] set auto_index(tclPkgUnknown) [list source [file join $dir package.tcl]] diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index 650e523..22ba966 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinThrd.c,v 1.43 2007/03/24 09:33:02 vasiljevic Exp $ + * RCS: @(#) $Id: tclWinThrd.c,v 1.43.4.1 2008/12/21 20:13:49 dgp Exp $ */ #include "tclWinInt.h" @@ -154,6 +154,10 @@ TclpThreadCreate( EnterCriticalSection(&joinLock); + *idPtr = 0; /* must initialize as Tcl_Thread is a pointer and + * on WIN64 sizeof void* != sizeof unsigned + */ + #if defined(_MSC_VER) || defined(__MSVCRT__) || defined(__BORLANDC__) tHandle = (HANDLE) _beginthreadex(NULL, (unsigned) stackSize, proc, clientData, 0, (unsigned *)idPtr); -- cgit v0.12 From 11c4e4197d065c5a7b0130450e267c81cd9acc4d Mon Sep 17 00:00:00 2001 From: dgp Date: Sun, 21 Dec 2008 20:22:37 +0000 Subject: advance tag --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 785ee5d..2844c19 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-12-21 Don Porter + *** 8.5.6 TAGGED FOR RELEASE *** + * changes: Update for 8.5.6 release. * library/tclIndex: Removed reference to no-longer-extant procedure -- cgit v0.12 From e6cf33a18dc5565003147b37744ef972ca11d902 Mon Sep 17 00:00:00 2001 From: dgp Date: Sun, 21 Dec 2008 20:59:01 +0000 Subject: * generic/tcl.h: Bump to 8.5.6 for release. * library/init.tcl: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/configure.in: * README: * unix/configure: autoconf-2.59 * win/configure: --- ChangeLog | 11 +++++++++++ README | 4 ++-- generic/tcl.h | 4 ++-- library/init.tcl | 4 ++-- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 26 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2844c19..4ffff1a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,17 @@ *** 8.5.6 TAGGED FOR RELEASE *** + * generic/tcl.h: Bump to 8.5.6 for release. + * library/init.tcl: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/configure.in: + * README: + + * unix/configure: autoconf-2.59 + * win/configure: + * changes: Update for 8.5.6 release. * library/tclIndex: Removed reference to no-longer-extant procedure diff --git a/README b/README index fd4ce13..7dc9fd7 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.5.6b1 source distribution. + This is the Tcl 8.5.6 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.67.2.4 2008/10/23 16:27:24 dgp Exp $ +RCS: @(#) $Id: README,v 1.67.2.5 2008/12/21 20:59:01 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 970d168..033ac05 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.7 2008/10/23 16:27:24 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.8 2008/12/21 20:59:01 dgp Exp $ */ #ifndef _TCL @@ -63,7 +63,7 @@ extern "C" { #define TCL_RELEASE_SERIAL 6 #define TCL_VERSION "8.5" -#define TCL_PATCH_LEVEL "8.5.6b1" +#define TCL_PATCH_LEVEL "8.5.6" /* * The following definitions set up the proper options for Windows compilers. diff --git a/library/init.tcl b/library/init.tcl index e456fc4..6b92c58 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.10 2008/10/23 16:27:24 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.11 2008/12/21 20:59:01 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -17,7 +17,7 @@ if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.5.6b1 +package require -exact Tcl 8.5.6 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index 19f0416..c87785f 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.5.6b1 + Disk Label=tcl8.5.6 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index b617348..b6b140b 100755 --- a/unix/configure +++ b/unix/configure @@ -1335,7 +1335,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".6b1" +TCL_PATCH_LEVEL=".6" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index 503f35c..c4e15cc 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.9 2008/10/23 16:27:24 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.10 2008/12/21 20:59:03 dgp Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -27,7 +27,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [ TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".6b1" +TCL_PATCH_LEVEL=".6" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 1582854..60904aa 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,11 +1,11 @@ -# $Id: tcl.spec,v 1.37.2.6 2008/10/23 16:27:25 dgp Exp $ +# $Id: tcl.spec,v 1.37.2.7 2008/12/21 20:59:03 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. %{!?directory:%define directory /usr/local} Name: tcl Summary: Tcl scripting language development environment -Version: 8.5.6b1 +Version: 8.5.6 Release: 2 License: BSD Group: Development/Languages diff --git a/win/configure b/win/configure index 0412f8a..9e89218 100755 --- a/win/configure +++ b/win/configure @@ -1272,7 +1272,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".6b1" +TCL_PATCH_LEVEL=".6" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 diff --git a/win/configure.in b/win/configure.in index f41fff1..33e0ba4 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.104.2.6 2008/10/23 16:27:25 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.104.2.7 2008/12/21 20:59:03 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.59) @@ -16,7 +16,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".6b1" +TCL_PATCH_LEVEL=".6" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 -- cgit v0.12 From b49de0b49faa2b9f256293a43ce833376f29ab43 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 3 Jan 2009 04:36:53 +0000 Subject: * library/clock.tcl (tcl::clock::add): Fixed error message formatting in the case where [clock add] is presented with a bad switch. * tests/clock.test (clock-65.1) Added a test case for the above problem [Bug 2481670]. --- ChangeLog | 8 ++++++++ library/clock.tcl | 6 +++--- tests/clock.test | 11 ++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4ffff1a..3b8570c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-01-03 Kevin B. Kenny : + + * library/clock.tcl (tcl::clock::add): Fixed error message formatting + in the case where [clock add] is presented with a bad switch. + * tests/clock.test (clock-65.1) Added a test case for the above + problem [Bug 2481670]. + + 2008-12-21 Don Porter *** 8.5.6 TAGGED FOR RELEASE *** diff --git a/library/clock.tcl b/library/clock.tcl index 4a34b82..8a78c39 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47.2.4 2008/12/12 17:46:13 nijtmans Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.47.2.5 2009/01/03 04:36:53 kennykb Exp $ # #---------------------------------------------------------------------- @@ -4378,8 +4378,8 @@ proc ::tcl::clock::add { clockval args } { } default { return -code error \ - -errorcode [list CLOCK badSwitch $flag] \ - "bad switch \"$flag\",\ + -errorcode [list CLOCK badSwitch $a] \ + "bad switch \"$a\",\ must be -gmt, -locale or -timezone" } } diff --git a/tests/clock.test b/tests/clock.test index 8cc5bdb..c58ac0e 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.83.2.4 2008/12/11 14:05:28 nijtmans Exp $ +# RCS: @(#) $Id: clock.test,v 1.83.2.5 2009/01/03 04:36:53 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36679,6 +36679,15 @@ test clock-64.2 {:: in format string [Bug 2362156]} {*}{ -result 2001-02-03::04:05:06 } +test clock-65.1 {clock add, bad option [Bug 2481670]} {*}{ + -body { + clock add 0 1 year -foo bar + } + -returnCodes error + -match glob + -result {bad switch "-foo"*} +} + # cleanup namespace delete ::testClock -- cgit v0.12 From c5400ebb09bad0749b45774ca10bd1dfa8b98b51 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 6 Jan 2009 15:12:42 +0000 Subject: Backport fix for [Bug 2006884] --- ChangeLog | 230 +++++++++++++++++++++++++++--------------------------- tests/string.test | 16 ++-- 2 files changed, 122 insertions(+), 124 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3b8570c..61f6c7a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,14 @@ +2009-01-06 Donal K. Fellows + + * tests/string.test: Eliminate non-ASCII characters. [Bug 2006884] + 2009-01-03 Kevin B. Kenny : - + * library/clock.tcl (tcl::clock::add): Fixed error message formatting in the case where [clock add] is presented with a bad switch. * tests/clock.test (clock-65.1) Added a test case for the above problem [Bug 2481670]. - 2008-12-21 Don Porter *** 8.5.6 TAGGED FOR RELEASE *** @@ -45,7 +48,7 @@ * library/clock.tcl (ProcessPosixTimeZone): Fix time change in Eastern Europe (not 3:00 but 4:00 local time) [Bug 2207436] -2008-12-11 Andreas Kupries +2008-12-11 Andreas Kupries * generic/tclIO.c (SetChannelFromAny and related): Modified the * tests/io.test: internal representation of the tclChannelType to @@ -59,24 +62,24 @@ * library/clock.tcl (ProcessPosixTimeZone): Fallback to European time zone DST rules, when the timezone is between 0 and -12. [Bug 2207436] * tests/clock.test (clock-52.[23]): Test cases. - + 2008-12-10 Kevin B. Kenny * library/tzdata/*: Update from Olson's tzdata2008i. - + 2008-12-04 Don Porter - * generic/tclPathObj.c (Tcl_FSGetNormalizedPath): Added another + * generic/tclPathObj.c (Tcl_FSGetNormalizedPath): Added another flag value TCLPATH_NEEDNORM to mark those intreps which need more complete normalization attention for correct results. [Bug 2385549] 2008-12-03 Don Porter - * generic/tclFileName.c (DoGlob): One of the Tcl_FSMatchInDirectory + * generic/tclFileName.c (DoGlob): One of the Tcl_FSMatchInDirectory calls did not have its return code checked. This caused error messages returned by some Tcl_Filesystem drivers to be swallowed. -2008-12-02 Andreas Kupries +2008-12-02 Andreas Kupries * generic/tclIO.c (TclFinalizeIOSubsystem): Replaced Alexandre Ferrieux's first patch for [Bug 2270477] with a gentler version, also @@ -93,7 +96,7 @@ format procedure. [Bug 2362156] * tests/clock.test (clock-64.[12]): Added test cases for the bug that was tickled by a namespace delimiter inside a format string. - + 2008-11-25 Andreas Kupries * generic/tclIO.c (TclFinalizeIOSubsystem): Applied Alexandre @@ -106,17 +109,17 @@ 2008-11-18 Jan Nijtmans - * generic/tcl.decls: Fix signature and implementation of - * generic/tclDecls.h: Tcl_HashStats, such that it conforms - * generic/tclHash.c: to the documentation. - * doc/Hash.3: [Bug 2308236] + * generic/tcl.decls: Fix signature and implementation of + * generic/tclDecls.h: Tcl_HashStats, such that it conforms + * generic/tclHash.c: to the documentation. [Bug 2308236] + * doc/Hash.3: 2008-11-13 Jan Nijtmans - * generic/tclInt.h: rename static function FSUnloadTempFile to - * generic/tclIOUtil.c TclFSUnloadTempFile, needed in tclLoad.c + * generic/tclInt.h: Rename static function FSUnloadTempFile to + * generic/tclIOUtil.c: TclFSUnloadTempFile, needed in tclLoad.c - * generic/tclLoad.c Fixed [Bug 2269431]: load of shared + * generic/tclLoad.c: Fixed [Bug 2269431]: load of shared objects leaves temporary files on windows 2008-11-10 Andreas Kupries @@ -161,7 +164,7 @@ 2008-10-16 Don Porter - * library/init.tcl: Revised [unknown] so that it carefully + * library/init.tcl: Revised [unknown] so that it carefully preserves the state of the ::errorInfo and ::errorCode variables at the start of auto-loading and restores that state before the autoloaded command is evaluated. [Bug 2140628] @@ -188,8 +191,8 @@ variable traces so that the errorInfo value contains the original error message. [Bug 2151707] - * generic/tclVar.c: Revised implementation of TclObjVarErrMsg - so that error message construction does not disturb an existing + * generic/tclVar.c: Revised implementation of TclObjVarErrMsg so + that error message construction does not disturb an existing iPtr->errorInfo that may be in progress. 2008-10-06 Jan Nijtmans @@ -207,13 +210,13 @@ * tools/man2tcl.c: Added missing line from patch by Harald Oehlmann. [Bug 1934200] -2008-10-05 Kevin B, Kenny +2008-10-05 Kevin B. Kenny * libtommath/bn_mp_sqrt.c (bn_mp_sqrt): Handle the case where a * tests/expr.test (expr-47.13): number's square root is between n< * tools/man2help2.tcl: Integrated patches from Harald Oehlmann. @@ -268,7 +271,7 @@ 2008-08-22 Don Porter * generic/tclUtil.c (TclReToGlob): Added missing set of the - *exactPtr value to really fix [Bug 2065115]. Also avoid possible + *exactPtr value to really fix [Bug 2065115]. Also avoid possible DString overflow. * tests/regexpComp.test: Correct duplicate test names. @@ -287,8 +290,8 @@ 2008-08-17 Miguel Sofer * generic/tclTest.c (TestconcatobjCmd): - * generic/tclUtil.c (Tcl_ConcatObj): - * tests/util.test (util-4.7): + * generic/tclUtil.c (Tcl_ConcatObj): + * tests/util.test (util-4.7): fix [Bug 1447328]; the original "fix" turned Tcl_ConcatObj() into a hairy monster. This was exposed by [Bug 2055782]. Additionally, Tcl_ConcatObj could corrupt its input under certain conditions! @@ -304,26 +307,26 @@ 2008-08-14 Daniel Steffen - * generic/tclCompile.h: add support for debug logging of DTrace + * generic/tclCompile.h: Add support for debug logging of DTrace * generic/tclBasic.c: 'proc', 'cmd' and 'inst' probes (does _not_ require a platform with DTrace). - * generic/tclCmdIL.c (TclInfoFrame): check fPtr->line before + * generic/tclCmdIL.c (TclInfoFrame): Check fPtr->line before dereferencing as line info may not exists when TclInfoFrame() is called from a DTrace probe. - * tests/msgcat.test: fix for ::tcl::mac::locale with + * tests/msgcat.test: Fix for ::tcl::mac::locale with @modifier (HEAD backport 2008-06-01). - * tests/fCmd.test (fCmd-6.23): made result matching robust when test + * tests/fCmd.test (fCmd-6.23): Made result matching robust when test workdir and /tmp are not on same FS. - * unix/Makefile.in: ensure Makefile shell is /bin/bash for + * unix/Makefile.in: Ensure Makefile shell is /bin/bash for * unix/configure.in (SunOS): DTrace-enabled build on Solaris. (followup to 2008-06-12) [Bug 2016584] - * unix/tcl.m4 (SC_PATH_X): check for libX11.dylib in addition to + * unix/tcl.m4 (SC_PATH_X): Check for libX11.dylib in addition to libX11.so et al. * unix/configure: autoconf-2.59 @@ -348,18 +351,17 @@ 2008-08-11 Andreas Kupries - * library/tm.tcl: Added a 'package provide' command to the - generated ifneeded scripts of Tcl Modules, for early detection of - conflicts between the version specified through the file name and - a 'provide' command in the module implementation, if any. Note - that this change also now allows Tcl Modules to not provide a - 'provide' command at all, and declaring their version only through - their filename. + * library/tm.tcl: Added a 'package provide' command to the generated + ifneeded scripts of Tcl Modules, for early detection of conflicts + between the version specified through the file name and a 'provide' + command in the module implementation, if any. Note that this change + also now allows Tcl Modules to not provide a 'provide' command at all, + and declaring their version only through their filename. * generic/tclProc.c (Tcl_ProcObjCmd): Fixed memory leak triggered - * tests/proc.test: by procbody::test::proc. See [Bug 2043636]. - Added a test case demonstrating the leak before the fix. Fixed a - few spelling errors in test descriptions as well. + * tests/proc.test: by procbody::test::proc. See [Bug 2043636]. Added a + test case demonstrating the leak before the fix. Fixed a few spelling + errors in test descriptions as well. 2008-08-11 Don Porter @@ -389,7 +391,7 @@ * changes: Update for 8.5.4 release. -2008-08-08 Kevin Kenny +2008-08-08 Kevin Kenny * library/tzdata/CET: * library/tzdata/MET: @@ -404,13 +406,13 @@ * library/tzdata/Europe/Budapest: * library/tzdata/Europe/Sofia: * library/tzdata/Indian/Mauritius: Olson's tzdata2008e. - + 2008-08-06 Don Porter * generic/tclVar.c (TclLookupSimpleVar): Retrieve the number of locals in the localCache from the CallFrame and not from the Proc - which may have been mangled by a (broken?) recompile. Backport - from the HEAD. + which may have been mangled by a (broken?) recompile. Backport from + the HEAD. 2008-08-04 Don Porter @@ -432,11 +434,11 @@ 2008-07-28 Andreas Kupries - * generic/tclBasic.c: Added missing ref count when creating an - empty string as path (TclEvalEx). In 8.4 the missing code caused - panics in the testsuite. It doesn't in 8.5. I am guessing that the - code path with the missing the incr-refcount is not invoked any - longer. Because the bug in itself is certainly the same. + * generic/tclBasic.c: Added missing ref count when creating an empty + string as path (TclEvalEx). In 8.4 the missing code caused panics in + the testsuite. It doesn't in 8.5. I am guessing that the code path + with the missing the incr-refcount is not invoked any longer. Because + the bug in itself is certainly the same. 2008-07-25 Daniel Steffen @@ -447,18 +449,17 @@ 2008-07-25 Andreas Kupries - * tests/info.test: Tests 38.* added, exactly testing the tracking - of location for uplevel scripts. + * tests/info.test: Tests 38.* added, exactly testing the tracking of + location for uplevel scripts. * generic/tclCompile.c (TclInitCompileEnv): Reorganized the - initialization of the #280 location information to match the flow - in TclEvalObjEx to get more absolute contexts. + initialization of the #280 location information to match the flow in + TclEvalObjEx to get more absolute contexts. - * generic/tclBasic.c (TclEvalObjEx): Moved the pure-list - optimization out of the eval-direct code path to be done always, - i.e. even when a compile is requested. This way we do not loose - the association between #280 location information and the list - elements, if any. + * generic/tclBasic.c (TclEvalObjEx): Moved the pure-list optimization + out of the eval-direct code path to be done always, i.e. even when a + compile is requested. This way we do not loose the association between + #280 location information and the list elements, if any. 2008-07-23 Andreas Kupries @@ -468,8 +469,8 @@ * generic/tclBasic.c: Modified TclArgumentGet to reject pure lists * generic/tclCmdIL.c: immediately, without search. Reworked setup * generic/tclCompile.c: of eoFramePtr, doesn't need the line - * tests/info.test: information, more sensible to have everything - on line 1 when eval'ing a pure list. Updated the users of the line + * tests/info.test: information, more sensible to have everything on + line 1 when eval'ing a pure list. Updated the users of the line information to special case this based on the frame type (i.e. TCL_LOCATION_EVAL_LIST). Added a testcase demonstrating the new behaviour. @@ -484,11 +485,10 @@ * generic/tclBasic.c: Reworked the handling of bytecode literals * generic/tclCompile.c: for #280 to fix the abysmal performance * generic/tclCompile.h: for deep recursion, replaced the linear - * generic/tclExecute.c: search through the whole stack with - * generic/tclInt.h: another hashtable and simplified the data - structure used by the compiler (array instead of hashtable). - Incidentially this also fixes the memory leak reported via [Bug - 2024937]. + * generic/tclExecute.c: search through the whole stack with another + * generic/tclInt.h: hashtable and simplified the data structure used + by the compiler (array instead of hashtable). Incidentially this also + fixes the memory leak reported via [Bug 2024937]. 2008-07-21 Don Porter @@ -529,8 +529,8 @@ 2008-07-07 Andreas Kupries - * generic/tclCmdIL.c (InfoFrameCmd): Fixed unsafe idiom of setting - the interp result found by Don Porter. + * generic/tclCmdIL.c (InfoFrameCmd): Fixed unsafe idiom of setting the + interp result found by Don Porter. 2008-07-07 Donal K. Fellows @@ -545,16 +545,16 @@ 2008-07-03 Andreas Kupries * generic/tclIORChan.c (InvokeTclMethod): Fixed the memory leak - reported in [Bug 1987821]. Thanks to Miguel for the rpeort and - Don Porter for tracking the cause down. + reported in [Bug 1987821]. Thanks to Miguel for the rpeort and Don + Porter for tracking the cause down. 2008-07-03 Don Porter * library/package.tcl: Removed [file readable] testing from - [tclPkgUnknown] and friends. We find out soon enough whether a - file is readable when we try to [source] it, and not testing - before allows us to workaround the bugs on some common filesystems - where [file readable] lies to us. [Patch 1969717] + [tclPkgUnknown] and friends. We find out soon enough whether a file is + readable when we try to [source] it, and not testing before allows us + to workaround the bugs on some common filesystems where [file + readable] lies to us. [Patch 1969717] 2008-06-29 Don Porter @@ -573,20 +573,20 @@ * doc/ObjectType.3: Updated documentation of the Tcl_ObjType struct to match expectations of Tcl 8.5 [Bug 1917650]. - * generic/tclPathObj.c: Plug memory leak in [Bug 1999176] fix. Thanks + * generic/tclPathObj.c: Plug memory leak in [Bug 1999176] fix. Thanks Rolf Ade for detecting. 2008-06-28 Don Porter - * generic/tclPathObj.c: Plug memory leak in [Bug 1972879] fix. Thanks + * generic/tclPathObj.c: Plug memory leak in [Bug 1972879] fix. Thanks Rolf Ade for detecting and Dan Steffen for the fix [Bug 2004654]. 2008-06-26 Andreas Kupries * unix/Makefile.in: Followup to my change of 2008-06-25, make code - generated by the Makefile and put into the installd tm.tcl - conditional on interpreter safeness as well. Thanks to Daniel - Steffen for reminding me of that code. + generated by the Makefile and put into the installd tm.tcl conditional + on interpreter safeness as well. Thanks to Daniel Steffen for + reminding me of that code. 2008-06-25 Don Porter @@ -607,16 +607,16 @@ 2008-06-24 Don Porter * generic/tclPathObj.c: Fixed some internals management in the "path" - Tcl_ObjType for the empty string value. Problem led to a crash in - the command [glob -dir {} a]. [Bug 1999176]. + Tcl_ObjType for the empty string value. Problem led to a crash in the + command [glob -dir {} a]. [Bug 1999176]. 2008-06-23 Don Porter * generic/tclPathObj.c: Fixed bug in Tcl_GetTranslatedPath() when operating on the "Special path" variant of the "path" Tcl_ObjType - intrep. A full normalization was getting done, in particular, coercing + intrep. A full normalization was getting done, in particular, coercing relative paths to absolute, contrary to what the function of - producing the "translated path" is supposed to do. [Bug 1972879]. + producing the "translated path" is supposed to do. [Bug 1972879] 2008-06-19 Don Porter @@ -624,7 +624,7 @@ * generic/tclInterp.c: Fixed completely boneheaded mistake that * tests/interp.test: [interp bgerror $slave] and [$slave bgerror] - would always act like [interp bgerror {}]. [Bug 1999035]. + would always act like [interp bgerror {}]. [Bug 1999035] * tests/chanio.test: Corrected flawed tests revealed by a -debug 1 * tests/event.test: -singleproc 1 test suite run. @@ -645,7 +645,7 @@ ::tcl::tm::Defaults. Updated the documentation to not only mention the new (underscored) form of environment variable names, but make it the encouraged form as well. See [Bug 1914604]. - + 2006-06-17 Kevin Kenny * generic/tclClock.c (ConvertLocalToUTC): @@ -654,7 +654,7 @@ dictionary without the 'localSeconds' key. To the best of my knowledge, the bug was not observable in the [clock] command itself. - + 2008-06-16 Andreas Kupries * generic/tclCmdIL.c (TclInfoFrame): Backport of fix made on the @@ -706,11 +706,11 @@ 2008-05-21 Don Porter - * generic/tclParse.c (ParseComment): The new TclParseAllWhiteSpace() + * generic/tclParse.c (ParseComment): The new TclParseAllWhiteSpace * tests/parse.test (parse-15.60): routine has no mechanism to return the "incomplete" status of "\\\n" so calling this routine - anywhere that can be reached within a Tcl_ParseCommand() call is a - mistake. In particular, ParseComment() must not use it. [Bug 1968882]. + anywhere that can be reached within a Tcl_ParseCommand call is a + mistake. In particular, ParseComment must not use it. [Bug 1968882] 2008-05-21 Donal K. Fellows @@ -720,8 +720,8 @@ 2008-05-16 Miguel Sofer - * generic/tclCompile.c: fix crash with tcl_traceExec. Found and - fixed by Alexander Pasadyn [Bug 1964803]. + * generic/tclCompile.c: Fix crash with tcl_traceExec. Found and + fixed by Alexander Pasadyn [Bug 1964803]. 2008-05-07 Donal K. Fellows @@ -846,26 +846,25 @@ 2008-04-05 Kevin B. Kenny * tests/chanio.test (chan-io-53.9): - * tests/io.test (io-53.9): Made test cleanup robust against - the possibility of slow process shutdown on Windows. + * tests/io.test (io-53.9): Made test cleanup robust against the + possibility of slow process shutdown on Windows. - * win/tcl.m4: Added -D_CRT_SECURE_NO_DEPRECATE and - -DCRT_NONSTDC_NO_DEPRECATE to the MSVC compilation flags - so that the compilation doesn't barf on perfectly reasonable - Posix system calls. + * win/tcl.m4: Added -D_CRT_SECURE_NO_DEPRECATE and + -DCRT_NONSTDC_NO_DEPRECATE to the MSVC compilation flags so that + the compilation doesn't barf on perfectly reasonable Posix system + calls. * win/configure: Manually patched (don't have the right autoconf to hand). - + * win/tclWinFile.c: (WinSymLinkDirectory): Fixed a problem that Tcl was creating an NTFS junction point (IO_REPARSE_TAG_MOUNT_POINT) - but filling in the union member for a Vista symbolic link. - We had gotten away with this error because the union member - (SymbolicLinkReparseBuffer) was misdefined in this file - and in the 'winnt.h' in early versions of MinGW. MinGW 3.4.2 - has the correct definition of SymbolicLinkReparseBuffer, exposing - the mismatch, and making tests cmdAH-19.4.1, fCmd-28.*, and - filename-11.* fail. - + but filling in the union member for a Vista symbolic link. We had + gotten away with this error because the union member + (SymbolicLinkReparseBuffer) was misdefined in this file and in the + 'winnt.h' in early versions of MinGW. MinGW 3.4.2 has the correct + definition of SymbolicLinkReparseBuffer, exposing the mismatch, + and making tests cmdAH-19.4.1, fCmd-28.*, and filename-11.* fail. + 2008-04-04 Andreas Kupries * tests/io.test (io-53.9): Added testcase for [Bug 780533], based @@ -925,13 +924,13 @@ by an overaggressive compiler. [Bug 1783544] * generic/tclObj.c: Added missing #include needed to locate isnan() after the above change. - + * unix/configure: autoconf-2.61 - + * tests/mathop.test (mathop-25.9, mathop-25.14): Modified tests to deal with (slightly buggy) math libraries in which pow() returns an incorrectly rounded result. [Bug 1808174] - + 2008-03-26 Don Porter *** 8.5.2 TAGGED FOR RELEASE *** @@ -981,7 +980,7 @@ * library/tzdata/Asia/Saigon: * library/tzdata/Pacific/Easter: Changes up to and including Olson's tzdata2008b. - + 2008-03-27 Daniel Steffen * unix/tcl.m4 (SunOS-5.1x): fix 64bit support for Sun cc. [Bug 1921166] @@ -1448,7 +1447,7 @@ 2008-01-22 Miguel Sofer - * generic/tclCmdIl.c (Tcl_LreverseObjCmd): + * generic/tclCmdIl.c (Tcl_LreverseObjCmd): * tests/cmdIL.test (cmdIL-7.7): Fix crash on reversing an empty list. [Bug 1876793] @@ -1467,26 +1466,25 @@ 2008-01-15 Miguel Sofer - * generic/tclCompExpr.c: Add an 'optimize' argument to + * generic/tclCompExpr.c: Add an 'optimize' argument to * generic/tclCompile.c: TclCompileExpr() to profit from better * generic/tclCompile.h: literal management according to usage. * generic/tclExecute.c: - * generic/tclCompExpr.c: Fix literal leak in exprs [Bug 1869989] (dgp) * generic/tclExecute.c: * tests/compExpr.test: - + * doc/proc.n: Changed wording for access to non-local variables; added mention to [namespace upvar]. Lame attempt at dealing with documentation. [Bug 1872708] - + 2008-01-15 Miguel Sofer * generic/tclBasic.c: Replacing 'operator' by 'op' in the def of * generic/tclCompExpr.c: struct TclOpCmdClientData to accommodate C++ * generic/tclCompile.h: compilers. [Bug 1855644] - + 2008-01-13 Jeff Hobbs * win/tclWinSerial.c (SerialCloseProc, TclWinOpenSerialChannel): Use @@ -6038,7 +6036,7 @@ * doc/package.n: Fixed nits reported by Daniel Steffen in the TIP#268 changes. -2006-09-25 Kevin B. Kenny +2006-09-25 Kevin B. Kenny * generic/tclNotify.c (Tcl_DeleteEvents): Simplified the code in hopes of making the invariants clearer and proving to Coverity that the diff --git a/tests/string.test b/tests/string.test index 85ca3f1..64427e4 100644 --- a/tests/string.test +++ b/tests/string.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: string.test,v 1.71 2007/12/13 15:26:07 dgp Exp $ +# RCS: @(#) $Id: string.test,v 1.71.2.1 2009/01/06 15:12:42 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -338,7 +338,7 @@ test string-6.13 {string is alnum, false} { list [string is alnum -failindex var abc1.23] $var } {0 4} test string-6.14 {string is alnum, unicode} { - string is alnum abcü + string is alnum abc\u00fc } 1 test string-6.15 {string is alpha, true} { string is alpha abc @@ -371,7 +371,7 @@ test string-6.24 {string is digit, true} { string is digit 0123456789 } 1 test string-6.25 {string is digit, false} { - list [string is digit -fail var 0123Ü567] $var + list [string is digit -fail var 0123\u00dc567] $var } {0 4} test string-6.26 {string is digit, false} { list [string is digit -fail var +123567] $var @@ -492,7 +492,7 @@ test string-6.60 {string is lower, true} { string is lower abc } 1 test string-6.61 {string is lower, unicode true} { - string is lower abcüue + string is lower abc\u00fcue } 1 test string-6.62 {string is lower, false} { list [string is lower -fail var aBc] $var @@ -501,7 +501,7 @@ test string-6.63 {string is lower, false} { list [string is lower -fail var abc1] $var } {0 3} test string-6.64 {string is lower, unicode false} { - list [string is lower -fail var abÜUE] $var + list [string is lower -fail var ab\u00dcUE] $var } {0 2} test string-6.65 {string is space, true} { string is space " \t\n\v\f" @@ -539,7 +539,7 @@ test string-6.75 {string is upper, true} { string is upper ABC } 1 test string-6.76 {string is upper, unicode true} { - string is upper ABCÜUE + string is upper ABC\u00dcUE } 1 test string-6.77 {string is upper, false} { list [string is upper -fail var AbC] $var @@ -548,13 +548,13 @@ test string-6.78 {string is upper, false} { list [string is upper -fail var AB2C] $var } {0 2} test string-6.79 {string is upper, unicode false} { - list [string is upper -fail var ABCüue] $var + list [string is upper -fail var ABC\u00fcue] $var } {0 3} test string-6.80 {string is wordchar, true} { string is wordchar abc_123 } 1 test string-6.81 {string is wordchar, unicode true} { - string is wordchar abcüabÜAB\u5001 + string is wordchar abc\u00fcab\u00dcAB\u5001 } 1 test string-6.82 {string is wordchar, false} { list [string is wordchar -fail var abcd.ef] $var -- cgit v0.12 From 620bc7f55e07794231c616458b821a30cb7c8c95 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 6 Jan 2009 15:23:24 +0000 Subject: Fix [Bug 2006879] --- ChangeLog | 3 ++- tests/expr.test | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 61f6c7a..d60fa16 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2009-01-06 Donal K. Fellows - * tests/string.test: Eliminate non-ASCII characters. [Bug 2006884] + * tests/expr.test, tests/string.test: Eliminate non-ASCII characters. + [Bugs 2006884, 2006879] 2009-01-03 Kevin B. Kenny : diff --git a/tests/expr.test b/tests/expr.test index 30aebc6..fd13bf9 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.72.2.1 2008/10/05 21:25:23 kennykb Exp $ +# RCS: @(#) $Id: expr.test,v 1.72.2.2 2009/01/06 15:23:24 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -355,7 +355,10 @@ test expr-8.11 {CompileEqualityExpr: error compiling equality arm} -body { expr 2!=x } -returnCodes error -match glob -result * test expr-8.12 {CompileBitAndExpr: equality expr} {expr {"a"eq"a"}} 1 -test expr-8.13 {CompileBitAndExpr: equality expr} {expr {"\374" eq "ü"}} 1 +test expr-8.13 {CompileBitAndExpr: equality expr} { + set s \u00fc + expr {"\374" eq $s} +} 1 test expr-8.14 {CompileBitAndExpr: equality expr} {expr 3eq2} 0 test expr-8.15 {CompileBitAndExpr: equality expr} {expr 2.0eq2} 0 test expr-8.16 {CompileBitAndExpr: equality expr} {expr 3.2ne2.2} 1 -- cgit v0.12 From 2fa2e74c29e259ce386e78b98f45efdfac56e11f Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 6 Jan 2009 16:07:17 +0000 Subject: Corrected twiddling in internals of dictionaries so that literals can't get destroyed. --- ChangeLog | 3 +++ generic/tclDictObj.c | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d60fa16..147058a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2009-01-06 Donal K. Fellows + * generic/tclDictObj.c (DictIncrCmd): Corrected twiddling in internals + of dictionaries so that literals can't get destroyed. + * tests/expr.test, tests/string.test: Eliminate non-ASCII characters. [Bugs 2006884, 2006879] diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index c74f10f..fc1cac1 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDictObj.c,v 1.56.2.1 2008/07/20 22:02:37 dkf Exp $ + * RCS: @(#) $Id: tclDictObj.c,v 1.56.2.2 2009/01/06 16:07:17 dkf Exp $ */ #include "tclInt.h" @@ -2129,10 +2129,11 @@ DictIncrCmd( */ char *saved = dictPtr->bytes; + Tcl_Obj *oldPtr = dictPtr; dictPtr->bytes = NULL; dictPtr = Tcl_DuplicateObj(dictPtr); - dictPtr->bytes = saved; + oldPtr->bytes = saved; } if (valuePtr == NULL) { /* -- cgit v0.12 From b98ad0d6cb97c6c201972b177bc0578706aee6cd Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 8 Jan 2009 17:55:41 +0000 Subject: * generic/tclStringObj.c (STRING_UALLOC): Added missing parens required to get correct results out of things like STRING_UALLOC(num + append). [Bug 2494093]. --- ChangeLog | 6 ++++++ generic/tclStringObj.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 147058a..f9413c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-01-08 Don Porter + + * generic/tclStringObj.c (STRING_UALLOC): Added missing parens + required to get correct results out of things like + STRING_UALLOC(num + append). [Bug 2494093]. + 2009-01-06 Donal K. Fellows * generic/tclDictObj.c (DictIncrCmd): Corrected twiddling in internals diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index b9311ec..9ab1abb 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.1 2008/04/07 16:07:00 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.2 2009/01/08 17:55:41 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -106,7 +106,7 @@ typedef struct String { } String; #define STRING_UALLOC(numChars) \ - (numChars * sizeof(Tcl_UniChar)) + ((numChars) * sizeof(Tcl_UniChar)) #define STRING_SIZE(ualloc) \ ((unsigned) ((ualloc) \ ? sizeof(String) - sizeof(Tcl_UniChar) + (ualloc) \ -- cgit v0.12 From 6f6d9966290325cb3c380aca5acd827f6b4748bd Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 8 Jan 2009 17:57:32 +0000 Subject: * generic/tclStringObj.c (STRING_UALLOC): Added missing parens required to get correct results out of things like STRING_UALLOC(num + append). [Bug 2494093]. --- ChangeLog | 6 ++++++ generic/tclStringObj.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e4c4c29..b85283f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-01-08 Don Porter + + * generic/tclStringObj.c (STRING_UALLOC): Added missing parens + required to get correct results out of things like + STRING_UALLOC(num + append). [Bug 2494093]. + 2008-12-04 Don Porter * generic/tclIOUtil.c (Tcl_FSGetNormalizedPath): Added another diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index ab04253..73aec31 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.2 2006/09/24 21:15:11 msofer Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.3 2009/01/08 17:57:32 dgp Exp $ */ #include "tclInt.h" @@ -104,7 +104,7 @@ typedef struct String { } String; #define STRING_UALLOC(numChars) \ - (numChars * sizeof(Tcl_UniChar)) + ((numChars) * sizeof(Tcl_UniChar)) #define STRING_SIZE(ualloc) \ ((unsigned) ((ualloc) \ ? sizeof(String) - sizeof(Tcl_UniChar) + (ualloc) \ -- cgit v0.12 From 7c046b459d010a331697abb8a76eecc8a81968c4 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 9 Jan 2009 15:12:23 +0000 Subject: * generic/tclStringObj.c (STRING_SIZE): Corrected failure to limit memory allocation requests to the sizes that can be supported by Tcl's memory allocation routines. [Bug 2494093]. --- ChangeLog | 6 ++++++ generic/tclStringObj.c | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index f9413c6..c6b9740 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-01-09 Don Porter + + * generic/tclStringObj.c (STRING_SIZE): Corrected failure to limit + memory allocation requests to the sizes that can be supported by + Tcl's memory allocation routines. [Bug 2494093]. + 2009-01-08 Don Porter * generic/tclStringObj.c (STRING_UALLOC): Added missing parens diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 9ab1abb..21c2e85 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.2 2009/01/08 17:55:41 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.3 2009/01/09 15:12:23 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -108,9 +108,12 @@ typedef struct String { #define STRING_UALLOC(numChars) \ ((numChars) * sizeof(Tcl_UniChar)) #define STRING_SIZE(ualloc) \ - ((unsigned) ((ualloc) \ - ? sizeof(String) - sizeof(Tcl_UniChar) + (ualloc) \ - : sizeof(String))) + ((unsigned) ((ualloc) \ + ? ((sizeof(String) - sizeof(Tcl_UniChar) + (ualloc) > INT_MAX) \ + ? Tcl_Panic("unable to alloc %u bytes", \ + sizeof(String) - sizeof(Tcl_UniChar) + (ualloc)), INT_MAX \ + : (sizeof(String) - sizeof(Tcl_UniChar) + (ualloc))) \ + : sizeof(String))) #define GET_STRING(objPtr) \ ((String *) (objPtr)->internalRep.otherValuePtr) #define SET_STRING(objPtr, stringPtr) \ -- cgit v0.12 From 3e8e91ba6eeecf57c292bc3922807c50dfa82572 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 9 Jan 2009 15:15:50 +0000 Subject: * generic/tclStringObj.c (STRING_SIZE): Corrected failure to limit memory allocation requests to the sizes that can be supported by Tcl's memory allocation routines. [Bug 2494093]. --- ChangeLog | 6 ++++++ generic/tclStringObj.c | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b85283f..2dd11be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-01-09 Don Porter + + * generic/tclStringObj.c (STRING_SIZE): Corrected failure to limit + memory allocation requests to the sizes that can be supported by + Tcl's memory allocation routines. [Bug 2494093]. + 2009-01-08 Don Porter * generic/tclStringObj.c (STRING_UALLOC): Added missing parens diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 73aec31..81a4765 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.3 2009/01/08 17:57:32 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.4 2009/01/09 15:15:50 dgp Exp $ */ #include "tclInt.h" @@ -106,9 +106,12 @@ typedef struct String { #define STRING_UALLOC(numChars) \ ((numChars) * sizeof(Tcl_UniChar)) #define STRING_SIZE(ualloc) \ - ((unsigned) ((ualloc) \ - ? sizeof(String) - sizeof(Tcl_UniChar) + (ualloc) \ - : sizeof(String))) + ((unsigned) ((ualloc) \ + ? ((sizeof(String) - sizeof(Tcl_UniChar) + (ualloc) > INT_MAX) \ + ? Tcl_Panic("unable to alloc %u bytes", \ + sizeof(String) - sizeof(Tcl_UniChar) + (ualloc)), INT_MAX \ + : (sizeof(String) - sizeof(Tcl_UniChar) + (ualloc))) \ + : sizeof(String))) #define GET_STRING(objPtr) \ ((String *) (objPtr)->internalRep.otherValuePtr) #define SET_STRING(objPtr, stringPtr) \ -- cgit v0.12 From 97bd7b4efa503d9bb23e9c0dd3bade2ba8698bc4 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 14 Jan 2009 14:12:23 +0000 Subject: typo --- doc/CrtTrace.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/CrtTrace.3 b/doc/CrtTrace.3 index f0d4d7a..038dfd6 100644 --- a/doc/CrtTrace.3 +++ b/doc/CrtTrace.3 @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtTrace.3,v 1.6.2.1 2003/07/18 15:20:51 dgp Exp $ +'\" RCS: @(#) $Id: CrtTrace.3,v 1.6.2.2 2009/01/14 14:12:23 dgp Exp $ '\" .so man.macros .TH Tcl_CreateTrace 3 "" Tcl "Tcl Library Procedures" @@ -87,7 +87,7 @@ points to a string containing the text of the command, before any argument substitution. The \fIcommandToken\fR parameter is a Tcl command token that identifies the command to be invoked. The token may be passed to \fBTcl_GetCommandName\fR, -\fBTcl_GetCommandTokenInfo\fR, or \fBTcl_SetCommandTokenInfo\fR to +\fBTcl_GetCommandInfoFromToken\fR, or \fBTcl_SetCommandInfoFromToken\fR to manipulate the definition of the command. The \fIobjc\fR and \fIobjv\fR parameters designate the final parameter count and parameter vector that will be passed to the command, and have had all substitutions -- cgit v0.12 From 93e5e125ba5052feeefa268b542cad1619074788 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 14 Jan 2009 14:13:17 +0000 Subject: typo --- doc/CrtTrace.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/CrtTrace.3 b/doc/CrtTrace.3 index b1cadf6..3ea1328 100644 --- a/doc/CrtTrace.3 +++ b/doc/CrtTrace.3 @@ -6,7 +6,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtTrace.3,v 1.14 2008/03/26 09:59:22 dkf Exp $ +'\" RCS: @(#) $Id: CrtTrace.3,v 1.14.2.1 2009/01/14 14:13:17 dgp Exp $ '\" .so man.macros .TH Tcl_CreateTrace 3 "" Tcl "Tcl Library Procedures" @@ -87,7 +87,7 @@ points to a string containing the text of the command, before any argument substitution. The \fIcommandToken\fR parameter is a Tcl command token that identifies the command to be invoked. The token may be passed to \fBTcl_GetCommandName\fR, -\fBTcl_GetCommandTokenInfo\fR, or \fBTcl_SetCommandTokenInfo\fR to +\fBTcl_GetCommandInfoFromToken\fR, or \fBTcl_SetCommandInfoFromToken\fR to manipulate the definition of the command. The \fIobjc\fR and \fIobjv\fR parameters designate the final parameter count and parameter vector that will be passed to the command, and have had all substitutions -- cgit v0.12 From 22ce7af7758444030a12394242057ab031c2c739 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 20 Jan 2009 03:54:35 +0000 Subject: Backport of Patch 907924 --- ChangeLog | 10 ++++++++++ unix/Makefile.in | 14 +++++++++----- unix/configure | 17 +++++++++++++---- unix/tcl.m4 | 11 ++++++++--- 4 files changed, 40 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index c6b9740..10edf6a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-01-19 Kevin B. Kenny + + * unix/Makefile.in: Added a CONFIG_INSTALL_DIR parameter so that + * unix/tcl.m4: distributors can control where tclConfig.sh goes. + Made the installation of 'ldAix' conditional + upon actually being on an AIX system. Allowed for downstream + packagers to customize SHLIB_VERSION on BSD-derived systems. + Thanks to Stuart Cassoff for [Patch 907924]. + * unix/configure: Autoconf 2.59 + 2009-01-09 Don Porter * generic/tclStringObj.c (STRING_SIZE): Corrected failure to limit diff --git a/unix/Makefile.in b/unix/Makefile.in index e698cb1..84ad721 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.10 2008/11/10 17:57:10 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.11 2009/01/20 03:54:35 kennykb Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -80,6 +80,9 @@ HTML_DIR = @HTML_DIR@ # Directory in which to install html documentation: HTML_INSTALL_DIR = $(INSTALL_ROOT)$(HTML_DIR) +# Directory in which to install the configuration file tclConfig.sh +CONFIG_INSTALL_DIR = $(INSTALL_ROOT)$(libdir) + # Package search path. TCL_PACKAGE_PATH = @TCL_PACKAGE_PATH@ @@ -711,7 +714,8 @@ install-strip: # (e.g. if installing as root). install-binaries: binaries - @for i in "$(LIB_INSTALL_DIR)" "$(BIN_INSTALL_DIR)" ; \ + @for i in "$(LIB_INSTALL_DIR)" "$(BIN_INSTALL_DIR)" \ + "$(CONFIG_INSTALL_DIR)"; \ do \ if [ ! -d "$$i" ] ; then \ echo "Making directory $$i"; \ @@ -733,8 +737,8 @@ install-binaries: binaries fi @echo "Installing tclsh as $(BIN_INSTALL_DIR)/tclsh$(VERSION)" @$(INSTALL_PROGRAM) tclsh "$(BIN_INSTALL_DIR)"/tclsh$(VERSION) - @echo "Installing tclConfig.sh to $(LIB_INSTALL_DIR)/" - @$(INSTALL_DATA) tclConfig.sh "$(LIB_INSTALL_DIR)"/tclConfig.sh + @echo "Installing tclConfig.sh to $(CONFIG_INSTALL_DIR)/" + @$(INSTALL_DATA) tclConfig.sh "$(CONFIG_INSTALL_DIR)"/tclConfig.sh @if test "$(STUB_LIB_FILE)" != "" ; then \ echo "Installing $(STUB_LIB_FILE) to $(LIB_INSTALL_DIR)/"; \ @INSTALL_STUB_LIB@ ; \ @@ -773,7 +777,7 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs done; @echo "Installing library files to $(SCRIPT_INSTALL_DIR)"; @for i in $(TOP_DIR)/library/*.tcl $(TOP_DIR)/library/tclIndex \ - $(UNIX_DIR)/tclAppInit.c $(UNIX_DIR)/ldAix @DTRACE_SRC@; \ + $(UNIX_DIR)/tclAppInit.c @LDAIX_SRC@ @DTRACE_SRC@; \ do \ $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"; \ done; diff --git a/unix/configure b/unix/configure index b6b140b..88021cd 100755 --- a/unix/configure +++ b/unix/configure @@ -308,7 +308,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS RANLIB ac_ct_RANLIB AR LIBOBJS TCL_LIBS DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT DTRACE TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_PATCH_LEVEL TCL_YEAR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_STUB_LIB_PATH TCL_INCLUDE_SPEC TCL_BUILD_STUB_LIB_SPEC TCL_BUILD_STUB_LIB_PATH TCL_SRC_DIR CFG_TCL_SHARED_LIB_SUFFIX CFG_TCL_UNSHARED_LIB_SUFFIX CFG_TCL_EXPORT_FILE_SUFFIX TCL_SHARED_BUILD LD_LIBRARY_PATH_VAR TCL_BUILD_LIB_SPEC TCL_NEEDS_EXP_FILE TCL_BUILD_EXP_FILE TCL_EXP_FILE TCL_LIB_VERSIONS_OK TCL_SHARED_LIB_SUFFIX TCL_UNSHARED_LIB_SUFFIX TCL_HAS_LONGLONG INSTALL_TZDATA DTRACE_SRC DTRACE_HDR DTRACE_OBJ MAKEFILE_SHELL BUILD_DLTEST TCL_PACKAGE_PATH TCL_MODULE_PATH TCL_LIBRARY PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_APP_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML EXTRA_TCLSH_LIBS DLTEST_LD DLTEST_SUFFIX' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS RANLIB ac_ct_RANLIB AR LIBOBJS TCL_LIBS DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS LDAIX_SRC CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT DTRACE TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_PATCH_LEVEL TCL_YEAR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_STUB_LIB_PATH TCL_INCLUDE_SPEC TCL_BUILD_STUB_LIB_SPEC TCL_BUILD_STUB_LIB_PATH TCL_SRC_DIR CFG_TCL_SHARED_LIB_SUFFIX CFG_TCL_UNSHARED_LIB_SUFFIX CFG_TCL_EXPORT_FILE_SUFFIX TCL_SHARED_BUILD LD_LIBRARY_PATH_VAR TCL_BUILD_LIB_SPEC TCL_NEEDS_EXP_FILE TCL_BUILD_EXP_FILE TCL_EXP_FILE TCL_LIB_VERSIONS_OK TCL_SHARED_LIB_SUFFIX TCL_UNSHARED_LIB_SUFFIX TCL_HAS_LONGLONG INSTALL_TZDATA DTRACE_SRC DTRACE_HDR DTRACE_OBJ MAKEFILE_SHELL BUILD_DLTEST TCL_PACKAGE_PATH TCL_MODULE_PATH TCL_LIBRARY PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_APP_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML EXTRA_TCLSH_LIBS DLTEST_LD DLTEST_SUFFIX' ac_subst_files='' # Initialize some variables set by options. @@ -6620,6 +6620,11 @@ fi # Require ranlib early so we can override it in special cases below. + LDAIX_SRC="" + if test x"$(SHLIB_VERSION)" = x; then + SHLIB_VERSION="1.0" +fi + @@ -6725,6 +6730,7 @@ fi LD_LIBRARY_PATH_VAR="LIBPATH" # Check to enable 64-bit flags for compiler/linker on AIX 4+ + LDAIX_SRC='$(UNIX_DIR)/ldAix' if test "$do64bit" = yes -a "`uname -v`" -gt 3; then if test "$GCC" = yes; then @@ -7541,7 +7547,7 @@ echo "${ECHO_T}$tcl_cv_ld_elf" >&6 else - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' fi @@ -7552,6 +7558,7 @@ fi TCL_LIB_VERSIONS_OK=nodots ;; OpenBSD-*) + CFLAGS_OPTIMIZE='-O2' SHLIB_CFLAGS="-fPIC" SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}' SHLIB_LD_LIBS='${LIBS}' @@ -7564,7 +7571,7 @@ fi fi LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' echo "$as_me:$LINENO: checking for ELF" >&5 echo $ECHO_N "checking for ELF... $ECHO_C" >&6 if test "${tcl_cv_ld_elf+set}" = set; then @@ -8310,7 +8317,7 @@ fi # requires an extra version number at the end of .so file names. # So, the library has to have a name like libtcl75.so.1.0 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' TCL_LIB_VERSIONS_OK=nodots ;; @@ -8922,6 +8929,7 @@ fi + cat >>confdefs.h <<_ACEOF #define TCL_SHLIB_EXT "${SHLIB_SUFFIX}" _ACEOF @@ -19621,6 +19629,7 @@ s,@DL_LIBS@,$DL_LIBS,;t t s,@DL_OBJS@,$DL_OBJS,;t t s,@PLAT_OBJS@,$PLAT_OBJS,;t t s,@PLAT_SRCS@,$PLAT_SRCS,;t t +s,@LDAIX_SRC@,$LDAIX_SRC,;t t s,@CFLAGS_DEBUG@,$CFLAGS_DEBUG,;t t s,@CFLAGS_OPTIMIZE@,$CFLAGS_OPTIMIZE,;t t s,@CFLAGS_WARNING@,$CFLAGS_WARNING,;t t diff --git a/unix/tcl.m4 b/unix/tcl.m4 index c7a13c6..4a44599 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1121,6 +1121,8 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no) # Require ranlib early so we can override it in special cases below. + LDAIX_SRC="" + AS_IF([test x"$(SHLIB_VERSION)" = x], [SHLIB_VERSION="1.0"]) AC_REQUIRE([AC_PROG_RANLIB]) @@ -1180,6 +1182,7 @@ dnl AC_CHECK_TOOL(AR, ar) LD_LIBRARY_PATH_VAR="LIBPATH" # Check to enable 64-bit flags for compiler/linker on AIX 4+ + LDAIX_SRC='$(UNIX_DIR)/ldAix' AS_IF([test "$do64bit" = yes -a "`uname -v`" -gt 3], [ AS_IF([test "$GCC" = yes], [ AC_MSG_WARN([64bit mode not supported with GCC on $system]) @@ -1521,7 +1524,7 @@ dnl AC_CHECK_TOOL(AR, ar) AS_IF([test $tcl_cv_ld_elf = yes], [ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so' ], [ - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' ]) # Ancient FreeBSD doesn't handle version numbers with dots. @@ -1530,6 +1533,7 @@ dnl AC_CHECK_TOOL(AR, ar) TCL_LIB_VERSIONS_OK=nodots ;; OpenBSD-*) + CFLAGS_OPTIMIZE='-O2' SHLIB_CFLAGS="-fPIC" SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}' SHLIB_LD_LIBS='${LIBS}' @@ -1539,7 +1543,7 @@ dnl AC_CHECK_TOOL(AR, ar) AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}']) LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [ AC_EGREP_CPP(yes, [ #ifdef __ELF__ @@ -1848,7 +1852,7 @@ dnl AC_CHECK_TOOL(AR, ar) # requires an extra version number at the end of .so file names. # So, the library has to have a name like libtcl75.so.1.0 - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' TCL_LIB_VERSIONS_OK=nodots ;; @@ -2112,6 +2116,7 @@ dnl # preprocessing tests use only CPPFLAGS. AC_SUBST(DL_OBJS) AC_SUBST(PLAT_OBJS) AC_SUBST(PLAT_SRCS) + AC_SUBST(LDAIX_SRC) AC_SUBST(CFLAGS) AC_SUBST(CFLAGS_DEBUG) AC_SUBST(CFLAGS_OPTIMIZE) -- cgit v0.12 From 9c026cec4e9775bcdcc7009b9866e4e570ba8b6e Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 22 Jan 2009 00:05:13 +0000 Subject: * generic/tclIORChan.c (ReflectClose): Fix for [Bug 2458202]. Closing a channel may supply NULL for the 'interp'. Test for finalization needs to be different, and one place has to pull the interp out of the channel instead. --- ChangeLog | 7 +++++++ generic/tclIORChan.c | 21 +++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 10edf6a..894f5f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-01-21 Andreas Kupries + + * generic/tclIORChan.c (ReflectClose): Fix for [Bug 2458202]. + Closing a channel may supply NULL for the 'interp'. Test for + finalization needs to be different, and one place has to pull the + interp out of the channel instead. + 2009-01-19 Kevin B. Kenny * unix/Makefile.in: Added a CONFIG_INSTALL_DIR parameter so that diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index d13b9aac..c9a294b 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.5 2008/07/03 17:38:18 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.6 2009/01/22 00:05:14 andreas_kupries Exp $ */ #include @@ -1046,7 +1046,7 @@ ReflectClose( ReflectedChannelMap* rcmPtr; /* Map of reflected channels with handlers in this interp */ Tcl_HashEntry* hPtr; /* Entry in the above map */ - if (interp == NULL) { + if (TclInThreadExit()) { /* * This call comes from TclFinalizeIOSystem. There are no * interpreters, and therefore we cannot call upon the handler command @@ -1134,13 +1134,18 @@ ReflectClose( * NOTE: The channel may not be in the map. This is ok, that happens * when the channel was created in a different interpreter and/or * thread and then was moved here. + * + * NOTE: The channel may have been removed from the map already via + * the per-interp DeleteReflectedChannelMap exit-handler. */ - - rcmPtr = GetReflectedChannelMap (interp); - hPtr = Tcl_FindHashEntry (&rcmPtr->map, - Tcl_GetChannelName (rcPtr->chan)); - if (hPtr) { - Tcl_DeleteHashEntry (hPtr); + + if (rcPtr->interp) { + rcmPtr = GetReflectedChannelMap (rcPtr->interp); + hPtr = Tcl_FindHashEntry (&rcmPtr->map, + Tcl_GetChannelName (rcPtr->chan)); + if (hPtr) { + Tcl_DeleteHashEntry (hPtr); + } } #ifdef TCL_THREADS rcmPtr = GetThreadReflectedChannelMap(); -- cgit v0.12 From 2692c18baacd3eafcb049e85e49faf0c28e715ea Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Thu, 22 Jan 2009 02:16:02 +0000 Subject: * unix/tcl.m4: Corrected a typo ($(SHLIB_VEERSION) should be ${SHLIB_VERSION}). * unix/configure: Autoconf 2.59 --- ChangeLog | 6 ++++++ unix/configure | 2 +- unix/tcl.m4 | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 894f5f8..fb784e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-01-22 Kevin B. Kenny + + * unix/tcl.m4: Corrected a typo ($(SHLIB_VEERSION) should be + ${SHLIB_VERSION}). + * unix/configure: Autoconf 2.59 + 2009-01-21 Andreas Kupries * generic/tclIORChan.c (ReflectClose): Fix for [Bug 2458202]. diff --git a/unix/configure b/unix/configure index 88021cd..e45d666 100755 --- a/unix/configure +++ b/unix/configure @@ -6621,7 +6621,7 @@ fi # Require ranlib early so we can override it in special cases below. LDAIX_SRC="" - if test x"$(SHLIB_VERSION)" = x; then + if test x"${SHLIB_VERSION}" = x; then SHLIB_VERSION="1.0" fi diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 4a44599..c7f26ca 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1122,7 +1122,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ # Require ranlib early so we can override it in special cases below. LDAIX_SRC="" - AS_IF([test x"$(SHLIB_VERSION)" = x], [SHLIB_VERSION="1.0"]) + AS_IF([test x"${SHLIB_VERSION}" = x], [SHLIB_VERSION="1.0"]) AC_REQUIRE([AC_PROG_RANLIB]) -- cgit v0.12 From 4412bccf99e79ac915c6a9df0b7d293750fe1bba Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 22 Jan 2009 05:06:03 +0000 Subject: typo --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index fb784e2..6f0ff85 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ 2009-01-22 Kevin B. Kenny - * unix/tcl.m4: Corrected a typo ($(SHLIB_VEERSION) should be + * unix/tcl.m4: Corrected a typo ($(SHLIB_VERSION) should be ${SHLIB_VERSION}). * unix/configure: Autoconf 2.59 -- cgit v0.12 From cc60365fd9005e253d3d786722bc32bd4c6aa66e Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 29 Jan 2009 16:08:39 +0000 Subject: Backport fix for [Bug 2519474] --- ChangeLog | 5 +++++ generic/tclNamesp.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6f0ff85..466485a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-01-29 Donal K. Fellows + + * generic/tclNamesp.c (Tcl_FindCommand): [Bug 2519474]: Ensure that + the path is not searched when the TCL_NAMESPACE_ONLY flag is given. + 2009-01-22 Kevin B. Kenny * unix/tcl.m4: Corrected a typo ($(SHLIB_VERSION) should be diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index dab46fc..6368022 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -23,7 +23,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.162.2.3 2008/07/21 19:38:19 andreas_kupries Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.162.2.4 2009/01/29 16:08:39 dkf Exp $ */ #include "tclInt.h" @@ -2415,7 +2415,8 @@ Tcl_FindCommand( */ cmdPtr = NULL; - if (cxtNsPtr->commandPathLength!=0 && strncmp(name, "::", 2)) { + if (cxtNsPtr->commandPathLength!=0 && strncmp(name, "::", 2) + && !(flags & TCL_NAMESPACE_ONLY)) { int i; Namespace *pathNsPtr, *realNsPtr, *dummyNsPtr; -- cgit v0.12 From 557a19a96c598d8b25e9e72134ea69030946a310 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 4 Feb 2009 18:57:47 +0000 Subject: * generic/tclCmdMZ.c: Prevent crashes due to int overflow of the length of the result of [string repeat]. [Bug 2561746] --- ChangeLog | 5 +++++ generic/tclCmdMZ.c | 25 ++++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 466485a..43cf9fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-02-04 Don Porter + + * generic/tclCmdMZ.c: Prevent crashes due to int overflow of the + length of the result of [string repeat]. [Bug 2561746] + 2009-01-29 Donal K. Fellows * generic/tclNamesp.c (Tcl_FindCommand): [Bug 2519474]: Ensure that diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 5e7b212..0e5330d 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.163.2.1 2008/09/18 15:00:58 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.163.2.2 2009/02/04 18:57:47 dgp Exp $ */ #include "tclInt.h" @@ -2132,22 +2132,25 @@ StringReptCmd( /* * Only build up a string that has data. Instead of building it up with * repeated appends, we just allocate the necessary space once and copy - * the string value in. Check for overflow with back-division. [Bug - * #714106] + * the string value in. + * + * We have to worry about overflow [Bugs 714106, 2561746]. + * At this point we know 1 <= length1 <= INT_MAX and 2 <= count <= INT_MAX. + * We need to keep 2 <= length2 <= INT_MAX. */ - length2 = length1 * count + 1; - if ((length2-1) / count != length1) { + if (count > (INT_MAX / length1)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "string size overflow, must be less than %d", INT_MAX)); + "max size for a Tcl value (%d bytes) exceeded", INT_MAX)); return TCL_ERROR; } + length2 = length1 * count; /* * Include space for the NUL. */ - string2 = attemptckalloc((size_t) length2); + string2 = attemptckalloc((unsigned) length2 + 1); if (string2 == NULL) { /* * Alloc failed. Note that in this case we try to do an error message @@ -2157,14 +2160,14 @@ StringReptCmd( */ Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "string size overflow, out of memory allocating %d bytes", - length2)); + "string size overflow, out of memory allocating %u bytes", + length2 + 1)); return TCL_ERROR; } for (index = 0; index < count; index++) { memcpy(string2 + (length1 * index), string1, (size_t) length1); } - string2[length2-1] = '\0'; + string2[length2] = '\0'; /* * We have to directly assign this instead of using Tcl_SetStringObj (and @@ -2174,7 +2177,7 @@ StringReptCmd( TclNewObj(resultPtr); resultPtr->bytes = string2; - resultPtr->length = length2-1; + resultPtr->length = length2; Tcl_SetObjResult(interp, resultPtr); done: -- cgit v0.12 From 14382184e4298588141bd84830147afe007d33db Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 4 Feb 2009 20:21:40 +0000 Subject: * generic/tclStringObj.c (SetUnicodeObj): Corrected failure of Tcl_SetUnicodeObj() to panic on a shared object. [Bug 2561488]. Also factored out common code to reduce duplication. --- ChangeLog | 4 +++ generic/tclStringObj.c | 71 ++++++++++++++++++++------------------------------ 2 files changed, 32 insertions(+), 43 deletions(-) diff --git a/ChangeLog b/ChangeLog index 43cf9fe..74b18bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2009-02-04 Don Porter + * generic/tclStringObj.c (SetUnicodeObj): Corrected failure of + Tcl_SetUnicodeObj() to panic on a shared object. [Bug 2561488]. Also + factored out common code to reduce duplication. + * generic/tclCmdMZ.c: Prevent crashes due to int overflow of the length of the result of [string repeat]. [Bug 2561746] diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 21c2e85..90aaf37 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.3 2009/01/09 15:12:23 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.4 2009/02/04 20:21:41 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -57,6 +57,8 @@ static void FreeStringInternalRep(Tcl_Obj *objPtr); static void DupStringInternalRep(Tcl_Obj *objPtr, Tcl_Obj *copyPtr); static int SetStringFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr); +static void SetUnicodeObj(Tcl_Obj *objPtr, + const Tcl_UniChar *unicode, int numChars); static void UpdateStringOfString(Tcl_Obj *objPtr); /* @@ -312,35 +314,9 @@ Tcl_NewUnicodeObj( * string. */ { Tcl_Obj *objPtr; - String *stringPtr; - size_t uallocated; - - if (numChars < 0) { - numChars = 0; - if (unicode) { - while (unicode[numChars] != 0) { - numChars++; - } - } - } - uallocated = STRING_UALLOC(numChars); - - /* - * Create a new obj with an invalid string rep. - */ TclNewObj(objPtr); - Tcl_InvalidateStringRep(objPtr); - objPtr->typePtr = &tclStringType; - - stringPtr = (String *) ckalloc(STRING_SIZE(uallocated)); - stringPtr->numChars = numChars; - stringPtr->uallocated = uallocated; - stringPtr->hasUnicode = (numChars > 0); - stringPtr->allocated = 0; - memcpy(stringPtr->unicode, unicode, uallocated); - stringPtr->unicode[numChars] = 0; - SET_STRING(objPtr, stringPtr); + SetUnicodeObj(objPtr, unicode, numChars); return objPtr; } @@ -695,11 +671,6 @@ Tcl_SetStringObj( * when initializing the object. If negative, * use bytes up to the first NUL byte.*/ { - /* - * Free any old string rep, then set the string rep to a copy of the - * length bytes starting at "bytes". - */ - if (Tcl_IsShared(objPtr)) { Tcl_Panic("%s called with shared object", "Tcl_SetStringObj"); } @@ -711,6 +682,11 @@ Tcl_SetStringObj( TclFreeIntRep(objPtr); objPtr->typePtr = NULL; + /* + * Free any old string rep, then set the string rep to a copy of the + * length bytes starting at "bytes". + */ + Tcl_InvalidateStringRep(objPtr); if (length < 0) { length = (bytes? strlen(bytes) : 0); @@ -981,6 +957,21 @@ Tcl_SetUnicodeObj( int numChars) /* Number of characters in the unicode * string. */ { + if (Tcl_IsShared(objPtr)) { + Tcl_Panic("%s called with shared object", "Tcl_SetUnicodeObj"); + } + TclFreeIntRep(objPtr); + SetUnicodeObj(objPtr, unicode, numChars); +} + +static void +SetUnicodeObj( + Tcl_Obj *objPtr, /* The object to set the string of. */ + const Tcl_UniChar *unicode, /* The unicode string used to initialize the + * object. */ + int numChars) /* Number of characters in the unicode + * string. */ +{ String *stringPtr; size_t uallocated; @@ -992,20 +983,14 @@ Tcl_SetUnicodeObj( } } } - uallocated = STRING_UALLOC(numChars); - - /* - * Free the internal rep if one exists, and invalidate the string rep. - */ - - TclFreeIntRep(objPtr); - objPtr->typePtr = &tclStringType; /* * Allocate enough space for the String structure + Unicode string. */ + uallocated = STRING_UALLOC(numChars); stringPtr = (String *) ckalloc(STRING_SIZE(uallocated)); + stringPtr->numChars = numChars; stringPtr->uallocated = uallocated; stringPtr->hasUnicode = (numChars > 0); @@ -1013,9 +998,9 @@ Tcl_SetUnicodeObj( memcpy(stringPtr->unicode, unicode, uallocated); stringPtr->unicode[numChars] = 0; - SET_STRING(objPtr, stringPtr); Tcl_InvalidateStringRep(objPtr); - return; + objPtr->typePtr = &tclStringType; + SET_STRING(objPtr, stringPtr); } /* -- cgit v0.12 From fb0738b32fc527f67ed00a01c99eb99ed396c40e Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 4 Feb 2009 21:43:51 +0000 Subject: comment typo --- generic/tclStringObj.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 90aaf37..0457b72 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.4 2009/02/04 20:21:41 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.5 2009/02/04 21:43:51 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -936,7 +936,7 @@ Tcl_AttemptSetObjLength( /* *--------------------------------------------------------------------------- * - * TclSetUnicodeObj -- + * Tcl_SetUnicodeObj -- * * Modify an object to hold the Unicode string indicated by "unicode". * -- cgit v0.12 From 824d5f55c502884fdf4482275d90eea283dbbdf3 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 4 Feb 2009 22:39:47 +0000 Subject: * generic/tclStringObj.c (SetUnicodeObj): Corrected failure of Tcl_SetUnicodeObj() to panic on a shared object. [Bug 2561488]. Also factored out common code to reduce duplication. --- ChangeLog | 6 ++++ generic/tclStringObj.c | 80 +++++++++++++++++++++----------------------------- 2 files changed, 40 insertions(+), 46 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2dd11be..f4467a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-02-04 Don Porter + + * generic/tclStringObj.c (SetUnicodeObj): Corrected failure of + Tcl_SetUnicodeObj() to panic on a shared object. [Bug 2561488]. Also + factored out common code to reduce duplication. + 2009-01-09 Don Porter * generic/tclStringObj.c (STRING_SIZE): Corrected failure to limit diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 81a4765..2325d1f 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.4 2009/01/09 15:15:50 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.5 2009/02/04 22:39:47 dgp Exp $ */ #include "tclInt.h" @@ -59,6 +59,8 @@ static void DupStringInternalRep _ANSI_ARGS_((Tcl_Obj *objPtr, Tcl_Obj *copyPtr)); static int SetStringFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); +static void SetUnicodeObj(Tcl_Obj *objPtr, + CONST Tcl_UniChar *unicode, int numChars); static void UpdateStringOfString _ANSI_ARGS_((Tcl_Obj *objPtr)); /* @@ -321,33 +323,9 @@ Tcl_NewUnicodeObj(unicode, numChars) * string. */ { Tcl_Obj *objPtr; - String *stringPtr; - size_t uallocated; - - if (numChars < 0) { - numChars = 0; - if (unicode) { - while (unicode[numChars] != 0) { numChars++; } - } - } - uallocated = STRING_UALLOC(numChars); - - /* - * Create a new obj with an invalid string rep. - */ TclNewObj(objPtr); - Tcl_InvalidateStringRep(objPtr); - objPtr->typePtr = &tclStringType; - - stringPtr = (String *) ckalloc(STRING_SIZE(uallocated)); - stringPtr->numChars = numChars; - stringPtr->uallocated = uallocated; - stringPtr->hasUnicode = (numChars > 0); - stringPtr->allocated = 0; - memcpy((VOID *) stringPtr->unicode, (VOID *) unicode, uallocated); - stringPtr->unicode[numChars] = 0; - SET_STRING(objPtr, stringPtr); + SetUnicodeObj(objPtr, unicode, numChars); return objPtr; } @@ -706,11 +684,6 @@ Tcl_SetStringObj(objPtr, bytes, length) { register Tcl_ObjType *oldTypePtr = objPtr->typePtr; - /* - * Free any old string rep, then set the string rep to a copy of - * the length bytes starting at "bytes". - */ - if (Tcl_IsShared(objPtr)) { panic("Tcl_SetStringObj called with shared object"); } @@ -724,6 +697,11 @@ Tcl_SetStringObj(objPtr, bytes, length) } objPtr->typePtr = NULL; + /* + * Free any old string rep, then set the string rep to a copy of + * the length bytes starting at "bytes". + */ + Tcl_InvalidateStringRep(objPtr); if (length < 0) { length = (bytes? strlen(bytes) : 0); @@ -934,7 +912,7 @@ Tcl_AttemptSetObjLength(objPtr, length) /* *--------------------------------------------------------------------------- * - * TclSetUnicodeObj -- + * Tcl_SetUnicodeObj -- * * Modify an object to hold the Unicode string indicated by "unicode". * @@ -955,7 +933,25 @@ Tcl_SetUnicodeObj(objPtr, unicode, numChars) int numChars; /* Number of characters in the unicode * string. */ { - Tcl_ObjType *typePtr; + Tcl_ObjType *typePtr = objPtr->typePtr; + + if (Tcl_IsShared(objPtr)) { + Tcl_Panic("%s called with shared object", "Tcl_SetUnicodeObj"); + } + if ((typePtr != NULL) && (typePtr->freeIntRepProc != NULL)) { + typePtr->freeIntRepProc(objPtr); + } + SetUnicodeObj(objPtr, unicode, numChars); +} + +static void +SetUnicodeObj(objPtr, unicode, numChars) + Tcl_Obj *objPtr; /* The object to set the string of. */ + CONST Tcl_UniChar *unicode; /* The unicode string used to initialize + * the object. */ + int numChars; /* Number of characters in the unicode + * string. */ +{ String *stringPtr; size_t uallocated; @@ -965,32 +961,24 @@ Tcl_SetUnicodeObj(objPtr, unicode, numChars) while (unicode[numChars] != 0) { numChars++; } } } - uallocated = STRING_UALLOC(numChars); - - /* - * Free the internal rep if one exists, and invalidate the string rep. - */ - - typePtr = objPtr->typePtr; - if ((typePtr != NULL) && (typePtr->freeIntRepProc) != NULL) { - (*typePtr->freeIntRepProc)(objPtr); - } - objPtr->typePtr = &tclStringType; /* * Allocate enough space for the String structure + Unicode string. */ + uallocated = STRING_UALLOC(numChars); stringPtr = (String *) ckalloc(STRING_SIZE(uallocated)); + stringPtr->numChars = numChars; stringPtr->uallocated = uallocated; stringPtr->hasUnicode = (numChars > 0); stringPtr->allocated = 0; memcpy((VOID *) stringPtr->unicode, (VOID *) unicode, uallocated); stringPtr->unicode[numChars] = 0; - SET_STRING(objPtr, stringPtr); + Tcl_InvalidateStringRep(objPtr); - return; + objPtr->typePtr = &tclStringType; + SET_STRING(objPtr, stringPtr); } /* -- cgit v0.12 From 9d3c4057d313047c7da3fa8d9624b06913b814d1 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 5 Feb 2009 13:59:20 +0000 Subject: * generic/tclStringObj.c: Added overflow protections to the AppendUtfToUtfRep routine to either avoid invalid arguments and crashes, or to replace them with controlled panics. [Bug 2561794] --- ChangeLog | 6 ++++++ generic/tclStringObj.c | 33 +++++++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 74b18bd..a5c16cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-02-05 Don Porter + + * generic/tclStringObj.c: Added overflow protections to the + AppendUtfToUtfRep routine to either avoid invalid arguments and + crashes, or to replace them with controlled panics. [Bug 2561794] + 2009-02-04 Don Porter * generic/tclStringObj.c (SetUnicodeObj): Corrected failure of diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 0457b72..e7c8aae 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.5 2009/02/04 21:43:51 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.6 2009/02/05 13:59:20 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -727,6 +727,14 @@ Tcl_SetObjLength( { String *stringPtr; + if (length < 0) { + /* + * Setting to a negative length is nonsense. This is probably the + * result of overflowing the signed integer range. + */ + Tcl_Panic("Tcl_SetObjLength: negative length requested: " + "%d (integer overflow?)", length); + } if (Tcl_IsShared(objPtr)) { Tcl_Panic("%s called with shared object", "Tcl_SetObjLength"); } @@ -738,7 +746,7 @@ Tcl_SetObjLength( * Check that we're not extending a pure unicode string. */ - if (length > (int) stringPtr->allocated && + if ((size_t)length > stringPtr->allocated && (objPtr->bytes != NULL || stringPtr->hasUnicode == 0)) { /* * Not enough space in current string. Reallocate the string space and @@ -841,6 +849,13 @@ Tcl_AttemptSetObjLength( { String *stringPtr; + if (length < 0) { + /* + * Setting to a negative length is nonsense. This is probably the + * result of overflowing the signed integer range. + */ + return 0; + } if (Tcl_IsShared(objPtr)) { Tcl_Panic("%s called with shared object", "Tcl_AttemptSetObjLength"); } @@ -1454,6 +1469,9 @@ AppendUtfToUtfRep( */ oldLength = objPtr->length; + if (numBytes > INT_MAX - oldLength) { + Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); + } newLength = numBytes + oldLength; stringPtr = GET_STRING(objPtr); @@ -1467,8 +1485,15 @@ AppendUtfToUtfRep( */ if (Tcl_AttemptSetObjLength(objPtr, 2 * newLength) == 0) { - Tcl_SetObjLength(objPtr, - newLength + numBytes + TCL_GROWTH_MIN_ALLOC); + /* + * Take care computing the amount of modest growth to avoid + * overflow into invalid argument values for Tcl_SetObjLength. + */ + unsigned int limit = INT_MAX - newLength; + unsigned int extra = numBytes + TCL_GROWTH_MIN_ALLOC; + int growth = (int) ((extra > limit) ? limit : extra); + + Tcl_SetObjLength(objPtr, newLength + growth); } } -- cgit v0.12 From 96c4e667ecc3d5195843b6bdcc56040f3827fff1 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 5 Feb 2009 14:10:57 +0000 Subject: * generic/tclStringObj.c: Added overflow protections to the AppendUtfToUtfRep routine to either avoid invalid arguments and crashes, or to replace them with controlled panics. [Bug 2561794] --- ChangeLog | 6 ++++++ generic/tclStringObj.c | 33 +++++++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index f4467a3..15452f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-02-05 Don Porter + + * generic/tclStringObj.c: Added overflow protections to the + AppendUtfToUtfRep routine to either avoid invalid arguments and + crashes, or to replace them with controlled panics. [Bug 2561794] + 2009-02-04 Don Porter * generic/tclStringObj.c (SetUnicodeObj): Corrected failure of diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 2325d1f..8d5bb6f 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.5 2009/02/04 22:39:47 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.6 2009/02/05 14:10:58 dgp Exp $ */ #include "tclInt.h" @@ -743,6 +743,14 @@ Tcl_SetObjLength(objPtr, length) { String *stringPtr; + if (length < 0) { + /* + * Setting to a negative length is nonsense. This is probably the + * result of overflowing the signed integer range. + */ + Tcl_Panic("Tcl_SetObjLength: negative length requested: " + "%d (integer overflow?)", length); + } if (Tcl_IsShared(objPtr)) { panic("Tcl_SetObjLength called with shared object"); } @@ -752,7 +760,7 @@ Tcl_SetObjLength(objPtr, length) /* Check that we're not extending a pure unicode string */ - if (length > (int) stringPtr->allocated && + if ((size_t)length > stringPtr->allocated && (objPtr->bytes != NULL || stringPtr->hasUnicode == 0)) { char *new; @@ -838,6 +846,13 @@ Tcl_AttemptSetObjLength(objPtr, length) { String *stringPtr; + if (length < 0) { + /* + * Setting to a negative length is nonsense. This is probably the + * result of overflowing the signed integer range. + */ + return 0; + } if (Tcl_IsShared(objPtr)) { panic("Tcl_AttemptSetObjLength called with shared object"); } @@ -1377,6 +1392,9 @@ AppendUtfToUtfRep(objPtr, bytes, numBytes) */ oldLength = objPtr->length; + if (numBytes > INT_MAX - oldLength) { + Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); + } newLength = numBytes + oldLength; stringPtr = GET_STRING(objPtr); @@ -1391,8 +1409,15 @@ AppendUtfToUtfRep(objPtr, bytes, numBytes) */ if (Tcl_AttemptSetObjLength(objPtr, 2 * newLength) == 0) { - Tcl_SetObjLength(objPtr, - newLength + numBytes + TCL_GROWTH_MIN_ALLOC); + /* + * Take care computing the amount of modest growth to avoid + * overflow into invalid argument values for Tcl_SetObjLength. + */ + unsigned int limit = INT_MAX - newLength; + unsigned int extra = numBytes + TCL_GROWTH_MIN_ALLOC; + int growth = (int) ((extra > limit) ? limit : extra); + + Tcl_SetObjLength(objPtr, newLength + growth); } } -- cgit v0.12 From 013eca4890e05fe73b703f0392142edce980ddda Mon Sep 17 00:00:00 2001 From: das Date: Fri, 6 Feb 2009 08:14:55 +0000 Subject: * generic/tcl.h (Darwin): workaround conflict between deprecated tcl panic macro and panic() function declaration in header. --- ChangeLog | 5 +++++ generic/tcl.h | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 15452f3..b5fa2ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-02-06 Daniel Steffen + + * generic/tcl.h (Darwin): workaround conflict between deprecated tcl + panic macro and panic() function declaration in header. + 2009-02-05 Don Porter * generic/tclStringObj.c: Added overflow protections to the diff --git a/generic/tcl.h b/generic/tcl.h index ae82114..5f48840 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.153.2.35 2008/04/11 16:57:38 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.153.2.36 2009/02/06 08:14:55 das Exp $ */ #ifndef _TCL @@ -339,6 +339,7 @@ typedef long LONG; # undef TCL_WIDE_INT_IS_LONG # endif /* __LP64__ */ # undef HAVE_STRUCT_STAT64 +# include #endif /* __APPLE__ */ /* -- cgit v0.12 From 9c046a5217080e9316c026a2df53062bbb0e76bc Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 17 Feb 2009 18:06:56 +0000 Subject: * win/tcl.m4, win/configure: Check if cl groks _WIN64 already to avoid CC manipulation that can screw up later configure checks. Use 'd'ebug runtime in 64-bit builds. --- ChangeLog | 6 ++ win/configure | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- win/tcl.m4 | 10 +++- 3 files changed, 189 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index a5c16cc..29ece9b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-02-17 Jeff Hobbs + + * win/tcl.m4, win/configure: Check if cl groks _WIN64 already to + avoid CC manipulation that can screw up later configure checks. + Use 'd'ebug runtime in 64-bit builds. + 2009-02-05 Don Porter * generic/tclStringObj.c: Added overflow protections to the diff --git a/win/configure b/win/configure index 9e89218..440c356 100755 --- a/win/configure +++ b/win/configure @@ -272,6 +272,43 @@ PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="../generic/tcl.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AR RANLIB RC SET_MAKE TCL_THREADS CYGPATH CELIB_DIR DL_LIBS CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING CFLAGS_DEFAULT LDFLAGS_DEFAULT TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_PATCH_LEVEL TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_STUB_LIB_PATH TCL_INCLUDE_SPEC TCL_BUILD_STUB_LIB_SPEC TCL_BUILD_STUB_LIB_PATH TCL_DLL_FILE TCL_SRC_DIR TCL_BIN_DIR TCL_DBGX CFG_TCL_SHARED_LIB_SUFFIX CFG_TCL_UNSHARED_LIB_SUFFIX CFG_TCL_EXPORT_FILE_SUFFIX EXTRA_CFLAGS DEPARG CC_OBJNAME CC_EXENAME LDFLAGS_DEBUG LDFLAGS_OPTIMIZE LDFLAGS_CONSOLE LDFLAGS_WINDOW STLIB_LD SHLIB_LD SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX TCL_SHARED_BUILD LIBS_GUI DLLSUFFIX LIBPREFIX LIBSUFFIX EXESUFFIX LIBRARIES MAKE_LIB POST_MAKE_LIB MAKE_DLL MAKE_EXE TCL_BUILD_LIB_SPEC TCL_LD_SEARCH_FLAGS TCL_NEEDS_EXP_FILE TCL_BUILD_EXP_FILE TCL_EXP_FILE TCL_LIB_VERSIONS_OK TCL_PACKAGE_PATH TCL_DDE_VERSION TCL_DDE_MAJOR_VERSION TCL_DDE_MINOR_VERSION TCL_DDE_PATCH_LEVEL TCL_REG_VERSION TCL_REG_MAJOR_VERSION TCL_REG_MINOR_VERSION TCL_REG_PATCH_LEVEL RC_OUT RC_TYPE RC_INCLUDE RC_DEFINE RC_DEFINES RES LIBOBJS LTLIBOBJS' ac_subst_files='' @@ -3663,6 +3700,78 @@ _ACEOF # after SC_ENABLE_SHARED checks the configure switches. #-------------------------------------------------------------------- +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + # Step 0: Enable 64 bit support? @@ -3981,10 +4090,74 @@ echo "${ECHO_T} Using 64-bit $MACHINE mode" >&6 # The space-based-path will work for the Makefile, but will # not work if AC_TRY_COMPILE is called. TEA has the # TEA_PATH_NOSPACE to avoid this issue. - CC="\"${PATH64}/cl.exe\" -I\"${MSSDK}/Include\" \ - -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\"" + # Check if _WIN64 is already recognized, and if so we don't + # need to modify CC. + echo "$as_me:$LINENO: checking whether _WIN64 is declared" >&5 +echo $ECHO_N "checking whether _WIN64 is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl__WIN64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef _WIN64 + char *p = (char *) _WIN64; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl__WIN64=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl__WIN64=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl__WIN64" >&5 +echo "${ECHO_T}$ac_cv_have_decl__WIN64" >&6 +if test $ac_cv_have_decl__WIN64 = yes; then + : +else + CC="\"${PATH64}/cl.exe\" -I\"${MSSDK}/Include\" \ + -I\"${MSSDK}/Include/crt\" \ + -I\"${MSSDK}/Include/crt/sys\"" +fi + RC="\"${MSSDK}/bin/rc.exe\"" - CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}" + CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" # Do not use -O2 for Win64 - this has proved buggy in code gen. CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}" lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\"" diff --git a/win/tcl.m4 b/win/tcl.m4 index fa34698..2f56787 100644 --- a/win/tcl.m4 +++ b/win/tcl.m4 @@ -619,10 +619,14 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ # The space-based-path will work for the Makefile, but will # not work if AC_TRY_COMPILE is called. TEA has the # TEA_PATH_NOSPACE to avoid this issue. - CC="\"${PATH64}/cl.exe\" -I\"${MSSDK}/Include\" \ - -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\"" + # Check if _WIN64 is already recognized, and if so we don't + # need to modify CC. + AC_CHECK_DECL([_WIN64], [], + [CC="\"${PATH64}/cl.exe\" -I\"${MSSDK}/Include\" \ + -I\"${MSSDK}/Include/crt\" \ + -I\"${MSSDK}/Include/crt/sys\""]) RC="\"${MSSDK}/bin/rc.exe\"" - CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}" + CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" # Do not use -O2 for Win64 - this has proved buggy in code gen. CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}" lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\"" -- cgit v0.12 From 153e08d5cd7c0d6b7c7d8078214b575d04b4ae90 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 Feb 2009 18:19:31 +0000 Subject: * generic/tclPathObj.c: Fixed mistaken logic in TclFSGetPathType() * tests/fileName.test: that assumed (not "absolute" => "relative"). This is a false assumption on Windows, where "volumerelative" is another possibility. [Bug 2571597]. --- ChangeLog | 7 +++++++ generic/tclPathObj.c | 11 ++++++++++- tests/fileName.test | 8 +++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 29ece9b..029392e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-02-20 Don Porter + + * generic/tclPathObj.c: Fixed mistaken logic in TclFSGetPathType() + * tests/fileName.test: that assumed (not "absolute" => "relative"). + This is a false assumption on Windows, where "volumerelative" is + another possibility. [Bug 2571597]. + 2009-02-17 Jeff Hobbs * win/tcl.m4, win/configure: Check if cl groks _WIN64 already to diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index dee1745..28345da 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.5 2008/12/04 17:45:02 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.6 2009/02/20 18:19:32 dgp Exp $ */ #include "tclInt.h" @@ -510,7 +510,16 @@ TclFSGetPathType( } if (PATHFLAGS(pathPtr) == 0) { + /* The path is not absolute... */ +#ifdef __WIN32__ + /* ... on Windows we must make another call to determine whether + * it's relative or volumerelative [Bug 2571597]. */ + return TclGetPathType(pathPtr, filesystemPtrPtr, driveNameLengthPtr, + NULL); +#else + /* On other systems, quickly deduce !absolute -> relative */ return TCL_PATH_RELATIVE; +#endif } return TclFSGetPathType(fsPathPtr->cwdPtr, filesystemPtrPtr, driveNameLengthPtr); diff --git a/tests/fileName.test b/tests/fileName.test index ebad33b..2cd68c6 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51.8.2 2008/08/14 13:08:45 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.3 2009/02/20 18:19:32 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1521,6 +1521,12 @@ test filename-17.2 {windows specific glob with executable} {win} { removeDirectory execglob set res } {abc.exe} +test filename-17.3 {Bug 2571597} win { + set p /a + file pathtype $p + file normalize $p + file pathtype $p +} volumerelative test fileName-18.1 {windows - split ADS name correctly} {win} { # bug 1194458 -- cgit v0.12 From 66e884275c19a6e17f016bf828eed7b61431888b Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 Feb 2009 18:24:28 +0000 Subject: * generic/tclPathObj.c: Fixed mistaken logic in TclFSGetPathType() * tests/fileName.test: that assumed (not "absolute" => "relative"). This is a false assumption on Windows, where "volumerelative" is another possibility. [Bug 2571597]. --- ChangeLog | 7 +++++++ generic/tclIOUtil.c | 11 ++++++++++- tests/fileName.test | 9 ++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b5fa2ee..660d511 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-02-20 Don Porter + + * generic/tclPathObj.c: Fixed mistaken logic in TclFSGetPathType() + * tests/fileName.test: that assumed (not "absolute" => "relative"). + This is a false assumption on Windows, where "volumerelative" is + another possibility. [Bug 2571597]. + 2008-02-06 Daniel Steffen * generic/tcl.h (Darwin): workaround conflict between deprecated tcl diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 82aa209..4d741b4 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.39 2008/12/04 17:43:53 dgp Exp $ + * RCS: @(#) $Id: tclIOUtil.c,v 1.77.2.40 2009/02/20 18:24:28 dgp Exp $ */ #include "tclInt.h" @@ -4747,7 +4747,16 @@ FSGetPathType(pathObjPtr, filesystemPtrPtr, driveNameLengthPtr) FsPath *fsPathPtr = (FsPath*) PATHOBJ(pathObjPtr); if (fsPathPtr->cwdPtr != NULL) { if (PATHFLAGS(pathObjPtr) == 0) { + /* The path is not absolute... */ +#ifdef __WIN32__ + /* ... on Windows we must make another call to determine + * whether it's relative or volumerelative [Bug 2571597]. */ + return GetPathType(pathObjPtr, filesystemPtrPtr, + driveNameLengthPtr, NULL); +#else + /* On other systems, quickly deduce !absolute -> relative */ return TCL_PATH_RELATIVE; +#endif } return FSGetPathType(fsPathPtr->cwdPtr, filesystemPtrPtr, driveNameLengthPtr); diff --git a/tests/fileName.test b/tests/fileName.test index 138f5c6..6e9eb79 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.9 2008/08/14 13:07:58 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.10 2009/02/20 18:24:28 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -2000,6 +2000,13 @@ test filename-17.2 {windows specific glob with executable} {winOnly} { removeDirectory execglob set res } {abc.exe} +test filename-17.3 {Bug 2571597} win { + set p /a + file pathtype $p + file normalize $p + file pathtype $p +} volumerelative + test fileName-18.1 {windows - split ADS name correctly} {winOnly} { # bug 1194458 -- cgit v0.12 From e9faab76a114f2450bf2bc9966992e0e180efe30 Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 15 Mar 2009 15:38:19 +0000 Subject: Added support for SIGINFO. [Patch 1513655] --- ChangeLog | 5 +++++ generic/tclPosixStr.c | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 029392e..dcefdc3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-15 Donal K. Fellows + + * generic/tclPosixStr.c (Tcl_SignalId,Tcl_SignalMsg): [Patch 1513655]: + Added support for SIGINFO, which is present on BSD platforms. + 2009-02-20 Don Porter * generic/tclPathObj.c: Fixed mistaken logic in TclFSGetPathType() diff --git a/generic/tclPosixStr.c b/generic/tclPosixStr.c index a48c2dd..31fccba 100644 --- a/generic/tclPosixStr.c +++ b/generic/tclPosixStr.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPosixStr.c,v 1.12 2005/11/07 15:16:03 dkf Exp $ + * RCS: @(#) $Id: tclPosixStr.c,v 1.12.10.1 2009/03/15 15:38:19 dkf Exp $ */ #include "tclInt.h" @@ -1039,6 +1039,9 @@ Tcl_SignalId( #ifdef SIGXFSZ case SIGXFSZ: return "SIGXFSZ"; #endif +#if defined(SIGINFO) && (!defined(SIGPWR) || (SIGINFO != SIGPWR)) + case SIGINFO: return "SIGINFO"; +#endif } return "unknown signal"; } @@ -1170,6 +1173,9 @@ Tcl_SignalMsg( #ifdef SIGXFSZ case SIGXFSZ: return "exceeded file size limit"; #endif +#if defined(SIGINFO) && (!defined(SIGPWR) || (SIGINFO != SIGPWR)) + case SIGINFO: return "information request"; +#endif } return "unknown signal"; } -- cgit v0.12 From ba8ebbff1d8a0c56faa5687b97762896372a7d97 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 18 Mar 2009 17:13:45 +0000 Subject: * win/tclWinFile.c (TclpObjNormalizePath): Corrected Tcl_Obj leak. Thanks to Joe Mistachkin for detection and patch. [Bug 2688184]. --- ChangeLog | 5 +++++ win/tclWinFile.c | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index dcefdc3..31d8032 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-18 Don Porter + + * win/tclWinFile.c (TclpObjNormalizePath): Corrected Tcl_Obj leak. + Thanks to Joe Mistachkin for detection and patch. [Bug 2688184]. + 2009-03-15 Donal K. Fellows * generic/tclPosixStr.c (Tcl_SignalId,Tcl_SignalMsg): [Patch 1513655]: diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 4a909f3..6e6b713 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.95.2.1 2008/04/05 23:22:41 kennykb Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.95.2.2 2009/03/18 17:13:45 dgp Exp $ */ /* #define _WIN32_WINNT 0x0500 */ @@ -2552,6 +2552,7 @@ TclpObjNormalizePath( char *lastValidPathEnd = NULL; Tcl_DString dsNorm; /* This will hold the normalized string. */ char *path, *currentPathEndPosition; + Tcl_Obj *temp = NULL; Tcl_DStringInit(&dsNorm); path = Tcl_GetString(pathPtr); @@ -2709,7 +2710,6 @@ TclpObjNormalizePath( * We're on WinNT (or 2000 or XP; something with an NT core). */ - Tcl_Obj *temp = NULL; int isDrive = 1; Tcl_DString ds; @@ -2981,6 +2981,15 @@ TclpObjNormalizePath( Tcl_DStringFree(&dsTemp); } Tcl_DStringFree(&dsNorm); + + /* + * This must be done after we are totally finished with 'path' as we are + * sharing the same underlying string. + */ + + if (temp != NULL) { + Tcl_DecrRefCount(temp); + } return nextCheckpoint; } -- cgit v0.12 From 653bcd908ccbb5daff9e2e4b6e01f64076a9247a Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 18 Mar 2009 17:18:54 +0000 Subject: * win/tclWinFile.c (TclpObjNormalizePath): Corrected Tcl_Obj leak. Thanks to Joe Mistachkin for detection and patch. [Bug 2688184]. --- ChangeLog | 5 +++++ win/tclWinFile.c | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 660d511..ce814b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-18 Don Porter + + * win/tclWinFile.c (TclpObjNormalizePath): Corrected Tcl_Obj leak. + Thanks to Joe Mistachkin for detection and patch. [Bug 2688184]. + 2009-02-20 Don Porter * generic/tclPathObj.c: Fixed mistaken logic in TclFSGetPathType() diff --git a/win/tclWinFile.c b/win/tclWinFile.c index c87edc3..8e35533 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.18 2006/10/17 04:36:45 dgp Exp $ + * RCS: @(#) $Id: tclWinFile.c,v 1.44.2.19 2009/03/18 17:18:54 dgp Exp $ */ //#define _WIN32_WINNT 0x0500 @@ -2324,6 +2324,7 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) Tcl_DString dsNorm; char *path; char *currentPathEndPosition; + Tcl_Obj *temp = NULL; Tcl_DStringInit(&dsNorm); path = Tcl_GetString(pathPtr); @@ -2420,7 +2421,6 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) } } else { /* We're on WinNT or 2000 or XP */ - Tcl_Obj *temp = NULL; int isDrive = 1; Tcl_DString ds; @@ -2609,6 +2609,16 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) Tcl_DStringFree(&dsTemp); } Tcl_DStringFree(&dsNorm); + + /* + * This must be done after we are totally finished with 'path' as we are + * sharing the same underlying string. + */ + + if (temp != NULL) { + Tcl_DecrRefCount(temp); + } + return nextCheckpoint; } -- cgit v0.12 From a8d345d8f8f69ab77a2110e5838f61475ec15c8f Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 Mar 2009 14:22:54 +0000 Subject: * generic/tclExecute.c (INST_CONCAT1): Panic when appends overflow the max length of a Tcl value. [Bug 2669109] --- ChangeLog | 5 +++++ generic/tclExecute.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ce814b6..5fd15a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-20 Don Porter + + * generic/tclExecute.c (INST_CONCAT1): Panic when appends overflow + the max length of a Tcl value. [Bug 2669109] + 2009-03-18 Don Porter * win/tclWinFile.c (TclpObjNormalizePath): Corrected Tcl_Obj leak. diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 657ac80..065024c 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.27 2008/07/23 04:08:00 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.28 2009/03/20 14:22:54 dgp Exp $ */ #include "tclInt.h" @@ -1442,13 +1442,19 @@ TclExecuteByteCode(interp, codePtr) * First, determine how many characters are needed. */ - for (i = (stackTop - (opnd-1)); i <= stackTop; i++) { + for (i = (stackTop - (opnd-1)); + totalLen >= 0 && i <= stackTop; i++) { bytes = Tcl_GetStringFromObj(stackPtr[i], &length); if (bytes != NULL) { totalLen += length; } } + if (totalLen < 0) { + Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", + INT_MAX); + } + /* * Initialize the new append string object by appending the * strings of the opnd stack objects. Also pop the objects. -- cgit v0.12 From ae500c24671537445c8f784f45e71f05c5b95bf6 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 20 Mar 2009 14:35:05 +0000 Subject: * generic/tclExecute.c (INST_CONCAT1): Panic when appends overflow the max length of a Tcl value. [Bug 2669109] --- ChangeLog | 5 +++++ generic/tclExecute.c | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 31d8032..9b7f01b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-20 Don Porter + + * generic/tclExecute.c (INST_CONCAT1): Panic when appends overflow + the max length of a Tcl value. [Bug 2669109] + 2009-03-18 Don Porter * win/tclWinFile.c (TclpObjNormalizePath): Corrected Tcl_Obj leak. diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 26cfba3..3bf099e 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.6 2008/12/16 22:04:00 ferrieux Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.7 2009/03/20 14:35:06 dgp Exp $ */ #include "tclInt.h" @@ -2112,13 +2112,18 @@ TclExecuteByteCode( * Compute the length to be appended. */ - for (currPtr=&OBJ_AT_DEPTH(opnd-2); currPtr<=&OBJ_AT_TOS; currPtr++) { + for (currPtr=&OBJ_AT_DEPTH(opnd-2); + appendLen >= 0 && currPtr<=&OBJ_AT_TOS; currPtr++) { bytes = TclGetStringFromObj(*currPtr, &length); if (bytes != NULL) { appendLen += length; } } + if (appendLen < 0) { + Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); + } + /* * If nothing is to be appended, just return the first object by * dropping all the others from the stack; this saves both the @@ -2142,6 +2147,9 @@ TclExecuteByteCode( objResultPtr = OBJ_AT_DEPTH(opnd-1); bytes = TclGetStringFromObj(objResultPtr, &length); + if (length + appendLen < 0) { + Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); + } #if !TCL_COMPILE_DEBUG if (bytes != tclEmptyStringRep && !Tcl_IsShared(objResultPtr)) { TclFreeIntRep(objResultPtr); -- cgit v0.12 From 495e84429c8bf25d60aa8194541575305b393c45 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 21 Mar 2009 02:53:17 +0000 Subject: * generic/tclStringObj.c: Test stringObj-6.9 checks that * tests/stringObj.test: Tcl_AppendStringsToObj() no longer crashes when operating on a pure unicode value. [Bug 2597185] --- ChangeLog | 4 ++++ generic/tclStringObj.c | 10 ++++++++-- tests/stringObj.test | 8 +++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5fd15a7..91f30ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2009-03-20 Don Porter + * generic/tclStringObj.c: Test stringObj-6.9 checks that + * tests/stringObj.test: Tcl_AppendStringsToObj() no longer + crashes when operating on a pure unicode value. [Bug 2597185] + * generic/tclExecute.c (INST_CONCAT1): Panic when appends overflow the max length of a Tcl value. [Bug 2669109] diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 8d5bb6f..32197a7 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.6 2009/02/05 14:10:58 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.7 2009/03/21 02:53:18 dgp Exp $ */ #include "tclInt.h" @@ -1473,6 +1473,13 @@ Tcl_AppendStringsToObjVA (objPtr, argList) SetStringFromAny(NULL, objPtr); /* + * Force the existence of a string rep. so we avoid crashes operating + * on a pure unicode value. [Bug 2597185] + */ + + (void) Tcl_GetStringFromObj(objPtr, &oldLength); + + /* * Figure out how much space is needed for all the strings, and * expand the string representation if it isn't big enough. If no * bytes would be appended, just return. Note that on some platforms @@ -1481,7 +1488,6 @@ Tcl_AppendStringsToObjVA (objPtr, argList) nargs = 0; newLength = 0; - oldLength = objPtr->length; while (1) { string = va_arg(argList, char *); if (string == NULL) { diff --git a/tests/stringObj.test b/tests/stringObj.test index e3bdbee..359e11a 100644 --- a/tests/stringObj.test +++ b/tests/stringObj.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: stringObj.test,v 1.15 2003/02/11 18:46:33 hobbs Exp $ +# RCS: @(#) $Id: stringObj.test,v 1.15.2.1 2009/03/21 02:53:18 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -165,6 +165,12 @@ test stringObj-6.8 {Tcl_AppendStringsToObj procedure, object totally empty} { teststringobj appendstrings 1 {} list [teststringobj length2 1] [teststringobj get 1] } {0 {}} +test stringObj-6.9 {Tcl_AppendStringToObj, pure unicode} { + testobj freeallvars + teststringobj set2 1 [string replace abc 1 1 d] + teststringobj appendstrings 1 foo bar soom + teststringobj get 1 +} adcfoobarsoom test stringObj-7.1 {SetStringFromAny procedure} { testobj freeallvars -- cgit v0.12 From 12adb10de26f2df3970251b318b64a2f5ccd61d8 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 21 Mar 2009 02:54:23 +0000 Subject: * generic/tclStringObj.c: Test stringObj-6.9 checks that * tests/stringObj.test: Tcl_AppendStringsToObj() no longer crashes when operating on a pure unicode value. [Bug 2597185] --- ChangeLog | 4 ++++ generic/tclStringObj.c | 10 ++++++++-- tests/stringObj.test | 8 +++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9b7f01b..891b36c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2009-03-20 Don Porter + * generic/tclStringObj.c: Test stringObj-6.9 checks that + * tests/stringObj.test: Tcl_AppendStringsToObj() no longer + crashes when operating on a pure unicode value. [Bug 2597185] + * generic/tclExecute.c (INST_CONCAT1): Panic when appends overflow the max length of a Tcl value. [Bug 2669109] diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index e7c8aae..6775273 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.6 2009/02/05 13:59:20 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.7 2009/03/21 02:54:23 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -1548,6 +1548,13 @@ Tcl_AppendStringsToObjVA( SetStringFromAny(NULL, objPtr); /* + * Force the existence of a string rep. so we avoid crashes operating + * on a pure unicode value. [Bug 2597185] + */ + + (void) Tcl_GetStringFromObj(objPtr, &oldLength); + + /* * Figure out how much space is needed for all the strings, and expand the * string representation if it isn't big enough. If no bytes would be * appended, just return. Note that on some platforms (notably OS/390) the @@ -1556,7 +1563,6 @@ Tcl_AppendStringsToObjVA( nargs = 0; newLength = 0; - oldLength = objPtr->length; while (1) { string = va_arg(argList, char *); if (string == NULL) { diff --git a/tests/stringObj.test b/tests/stringObj.test index 90ec9c3..d497262 100644 --- a/tests/stringObj.test +++ b/tests/stringObj.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: stringObj.test,v 1.16 2004/05/19 20:15:32 dkf Exp $ +# RCS: @(#) $Id: stringObj.test,v 1.16.14.1 2009/03/21 02:54:23 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -160,6 +160,12 @@ test stringObj-6.8 {Tcl_AppendStringsToObj procedure, object totally empty} test teststringobj appendstrings 1 {} list [teststringobj length2 1] [teststringobj get 1] } {0 {}} +test stringObj-6.9 {Tcl_AppendStringToObj, pure unicode} { + testobj freeallvars + teststringobj set2 1 [string replace abc 1 1 d] + teststringobj appendstrings 1 foo bar soom + teststringobj get 1 +} adcfoobarsoom test stringObj-7.1 {SetStringFromAny procedure} testobj { testobj freeallvars -- cgit v0.12 From dce424fd503c29bd61d1ea07d2461b3cb43d58b8 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 26 Mar 2009 19:58:37 +0000 Subject: typo --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 891b36c..8085ef8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -737,7 +737,7 @@ the new (underscored) form of environment variable names, but make it the encouraged form as well. See [Bug 1914604]. -2006-06-17 Kevin Kenny +2008-06-17 Kevin Kenny * generic/tclClock.c (ConvertLocalToUTC): * tests/clock.test (clock-63.1): Fixed a bug where the -- cgit v0.12 From 3af212fe560067545be57a91ec8cd1065ec77eff Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 27 Mar 2009 19:14:36 +0000 Subject: * tests/fileName.test: Tests for [Bug 2710920] to guard against its appearance. --- ChangeLog | 5 +++++ tests/fileName.test | 14 +++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 91f30ec..57a09a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-27 Don Porter + + * tests/fileName.test: Tests for [Bug 2710920] to guard against + its appearance. + 2009-03-20 Don Porter * generic/tclStringObj.c: Test stringObj-6.9 checks that diff --git a/tests/fileName.test b/tests/fileName.test index 6e9eb79..b197d2d 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.10 2009/02/20 18:24:28 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.11 2009/03/27 19:14:36 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1860,6 +1860,18 @@ test filename-14.25.1 {type specific globbing} {pcOnly macOnly} { test filename-14.26 {type specific globbing} { list [catch {glob -nocomplain -dir globTest -types {readonly} *} msg] $msg } [list 0 {}] +test filename-14.27 {Bug 2710920} {unixOrPc} { + file tail [lindex [lsort [glob globTest/*/]] 0] +} a1 +test filename-14.28 {Bug 2710920} {unixOrPc} { + file dirname [lindex [lsort [glob globTest/*/]] 0] +} globTest +test filename-14.29 {Bug 2710920} {unixOrPc} { + file extension [lindex [lsort [glob globTest/*/]] 0] +} {} +test filename-14.30 {Bug 2710920} {unixOrPc} { + file rootname [lindex [lsort [glob globTest/*/]] 0] +} globTest/a1/ unset globname -- cgit v0.12 From 3cafedec0ff906762951dbf8c5065947771aeb7f Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 27 Mar 2009 19:16:49 +0000 Subject: * generic/tclPathObj.c (TclPathPart): TclPathPart() was computing * tests/fileName.test: the wrong results for both [file dirname] and [file tail] on "path" arguments with the PATHFLAGS != 0 intrep and with an empty string for the "joined-on" part. [Bug 2710920] --- ChangeLog | 7 +++++++ generic/tclPathObj.c | 32 +++++++++++++++++++++++++++++--- tests/fileName.test | 15 ++++++++++++++- 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8085ef8..0b02323 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-03-27 Don Porter + + * generic/tclPathObj.c (TclPathPart): TclPathPart() was computing + * tests/fileName.test: the wrong results for both [file dirname] and + [file tail] on "path" arguments with the PATHFLAGS != 0 intrep and + with an empty string for the "joined-on" part. [Bug 2710920] + 2009-03-20 Don Porter * generic/tclStringObj.c: Test stringObj-6.9 checks that diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index 28345da..bb7b0f4 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.6 2009/02/20 18:19:32 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.7 2009/03/27 19:16:49 dgp Exp $ */ #include "tclInt.h" @@ -577,11 +577,24 @@ TclPathPart( * the standardPath code. */ - const char *rest = TclGetString(fsPathPtr->normPathPtr); + int numBytes; + const char *rest = + Tcl_GetStringFromObj(fsPathPtr->normPathPtr, &numBytes); if (strchr(rest, '/') != NULL) { goto standardPath; } + /* + * If the joined-on bit is empty, then [file dirname] is + * documented to return all but the last non-empty element + * of the path, so we need to split apart the main part to + * get the right answer. We could do that here, but it's + * simpler to fall back to the standardPath code. + * [Bug 2710920] + */ + if (numBytes == 0) { + goto standardPath; + } if (tclPlatform == TCL_PLATFORM_WINDOWS && strchr(rest, '\\') != NULL) { goto standardPath; @@ -602,11 +615,24 @@ TclPathPart( * we don't, and instead just use the standardPath code. */ - const char *rest = TclGetString(fsPathPtr->normPathPtr); + int numBytes; + const char *rest = + Tcl_GetStringFromObj(fsPathPtr->normPathPtr, &numBytes); if (strchr(rest, '/') != NULL) { goto standardPath; } + /* + * If the joined-on bit is empty, then [file tail] is + * documented to return the last non-empty element + * of the path, so we need to split off the last element + * of the main part to get the right answer. We could do + * that here, but it's simpler to fall back to the + * standardPath code. [Bug 2710920] + */ + if (numBytes == 0) { + goto standardPath; + } if (tclPlatform == TCL_PLATFORM_WINDOWS && strchr(rest, '\\') != NULL) { goto standardPath; diff --git a/tests/fileName.test b/tests/fileName.test index 2cd68c6..97bbc31 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51.8.3 2009/02/20 18:19:32 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.4 2009/03/27 19:16:49 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1335,6 +1335,19 @@ test filename-14.25.1 {type specific globbing} {win} { test filename-14.26 {type specific globbing} { list [catch {glob -nocomplain -dir globTest -types {readonly} *} msg] $msg } [list 0 {}] +test filename-14.27 {Bug 2710920} {unixOrPc} { + file tail [lindex [lsort [glob globTest/*/]] 0] +} a1 +test filename-14.28 {Bug 2710920} {unixOrPc} { + file dirname [lindex [lsort [glob globTest/*/]] 0] +} globTest +test filename-14.29 {Bug 2710920} {unixOrPc} { + file extension [lindex [lsort [glob globTest/*/]] 0] +} {} +test filename-14.30 {Bug 2710920} {unixOrPc} { + file rootname [lindex [lsort [glob globTest/*/]] 0] +} globTest/a1/ + unset globname -- cgit v0.12 From f92b558829c3d72d1ec0edd0e41477c9357cf8c8 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 30 Mar 2009 17:47:08 +0000 Subject: * generic/tclStringObj.c: Added protections from invalid memory * generic/tclTestObj.c: accesses when we append (some part of) * tests/stringObj.test: a Tcl_Obj to itself. Added the appendself and appendself2 subcommands to the [teststringobj] testing command and added tests to the test suite. [Bug 2603158] --- ChangeLog | 8 ++++++ generic/tclStringObj.c | 33 ++++++++++++++++++++++++- generic/tclTestObj.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++-- tests/stringObj.test | 35 +++++++++++++++++++++++++- 4 files changed, 139 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 57a09a1..847370a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-03-30 Don Porter + + * generic/tclStringObj.c: Added protections from invalid memory + * generic/tclTestObj.c: accesses when we append (some part of) + * tests/stringObj.test: a Tcl_Obj to itself. Added the + appendself and appendself2 subcommands to the [teststringobj] testing + command and added tests to the test suite. [Bug 2603158] + 2009-03-27 Don Porter * tests/fileName.test: Tests for [Bug 2710920] to guard against diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 32197a7..6490bc6 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.7 2009/03/21 02:53:18 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.8 2009/03/30 17:47:09 dgp Exp $ */ #include "tclInt.h" @@ -1242,6 +1242,17 @@ AppendUnicodeToUnicodeRep(objPtr, unicode, appendNumChars) numChars = stringPtr->numChars + appendNumChars; if (STRING_UALLOC(numChars) >= stringPtr->uallocated) { + /* + * Protect against case where unicode points into the existing + * stringPtr->unicode array. Force it to follow any relocations + * due to the reallocs below. + */ + int offset = -1; + if (unicode >= stringPtr->unicode && unicode <= stringPtr->unicode + + 1 + stringPtr->uallocated / sizeof(Tcl_UniChar)) { + offset = unicode - stringPtr->unicode; + } + stringPtr->uallocated = STRING_UALLOC(2 * numChars); tmpString = (String *) attemptckrealloc((char *)stringPtr, STRING_SIZE(stringPtr->uallocated)); @@ -1254,6 +1265,11 @@ AppendUnicodeToUnicodeRep(objPtr, unicode, appendNumChars) } stringPtr = tmpString; SET_STRING(objPtr, stringPtr); + + /* Relocate unicode if needed; see above. */ + if (offset >= 0) { + unicode = stringPtr->unicode + offset; + } } /* @@ -1399,6 +1415,16 @@ AppendUtfToUtfRep(objPtr, bytes, numBytes) stringPtr = GET_STRING(objPtr); if (newLength > (int) stringPtr->allocated) { + /* + * Protect against case where unicode points into the existing + * stringPtr->unicode array. Force it to follow any relocations + * due to the reallocs below. + */ + int offset = -1; + if (bytes >= objPtr->bytes + && bytes <= objPtr->bytes + objPtr->length) { + offset = bytes - objPtr->bytes; + } /* * There isn't currently enough space in the string representation @@ -1419,6 +1445,11 @@ AppendUtfToUtfRep(objPtr, bytes, numBytes) Tcl_SetObjLength(objPtr, newLength + growth); } + + /* Relocate bytes if needed; see above. */ + if (offset >=0) { + bytes = objPtr->bytes + offset; + } } /* diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c index 5c45d70..f9181a9 100644 --- a/generic/tclTestObj.c +++ b/generic/tclTestObj.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTestObj.c,v 1.12 2002/12/04 13:09:24 vincentdarley Exp $ + * RCS: @(#) $Id: tclTestObj.c,v 1.12.2.1 2009/03/30 17:47:09 dgp Exp $ */ #include "tclInt.h" @@ -906,13 +906,14 @@ TeststringobjCmd(clientData, interp, objc, objv) Tcl_Obj *CONST objv[]; /* Argument objects. */ { int varIndex, option, i, length; + Tcl_UniChar *unicode; #define MAX_STRINGS 11 char *index, *string, *strings[MAX_STRINGS+1]; TestString *strPtr; static CONST char *options[] = { "append", "appendstrings", "get", "get2", "length", "length2", "set", "set2", "setlength", "ualloc", "getunicode", - (char *) NULL + "appendself", "appendself2", (char *) NULL }; if (objc < 3) { @@ -1080,6 +1081,68 @@ TeststringobjCmd(clientData, interp, objc, objv) } Tcl_GetUnicodeFromObj(varPtr[varIndex], NULL); break; + case 11: /* appendself */ + if (objc != 4) { + goto wrongNumArgs; + } + if (varPtr[varIndex] == NULL) { + SetVarToObj(varIndex, Tcl_NewObj()); + } + + /* + * If the object bound to variable "varIndex" is shared, we must + * "copy on write" and append to a copy of the object. + */ + + if (Tcl_IsShared(varPtr[varIndex])) { + SetVarToObj(varIndex, Tcl_DuplicateObj(varPtr[varIndex])); + } + + string = Tcl_GetStringFromObj(varPtr[varIndex], &length); + + if (Tcl_GetIntFromObj(interp, objv[3], &i) != TCL_OK) { + return TCL_ERROR; + } + if ((i < 0) || (i > length)) { + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "index value out of range", -1)); + return TCL_ERROR; + } + + Tcl_AppendToObj(varPtr[varIndex], string + i, length - i); + Tcl_SetObjResult(interp, varPtr[varIndex]); + break; + case 12: /* appendself2 */ + if (objc != 4) { + goto wrongNumArgs; + } + if (varPtr[varIndex] == NULL) { + SetVarToObj(varIndex, Tcl_NewObj()); + } + + /* + * If the object bound to variable "varIndex" is shared, we must + * "copy on write" and append to a copy of the object. + */ + + if (Tcl_IsShared(varPtr[varIndex])) { + SetVarToObj(varIndex, Tcl_DuplicateObj(varPtr[varIndex])); + } + + unicode = Tcl_GetUnicodeFromObj(varPtr[varIndex], &length); + + if (Tcl_GetIntFromObj(interp, objv[3], &i) != TCL_OK) { + return TCL_ERROR; + } + if ((i < 0) || (i > length)) { + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "index value out of range", -1)); + return TCL_ERROR; + } + + Tcl_AppendUnicodeToObj(varPtr[varIndex], unicode + i, length - i); + Tcl_SetObjResult(interp, varPtr[varIndex]); + break; } return TCL_OK; diff --git a/tests/stringObj.test b/tests/stringObj.test index 359e11a..942645e 100644 --- a/tests/stringObj.test +++ b/tests/stringObj.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: stringObj.test,v 1.15.2.1 2009/03/21 02:53:18 dgp Exp $ +# RCS: @(#) $Id: stringObj.test,v 1.15.2.2 2009/03/30 17:47:09 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -439,6 +439,39 @@ test stringObj-14.1 {Tcl_SetObjLength on pure unicode object} { teststringobj get 1 } {bar} +test stringObj-15.1 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself 1 0 +} foofoo +test stringObj-15.2 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself 1 1 +} foooo +test stringObj-15.3 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself 1 2 +} fooo +test stringObj-15.4 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself 1 3 +} foo +test stringObj-15.5 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself2 1 0 +} foofoo +test stringObj-15.6 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself2 1 1 +} foooo +test stringObj-15.7 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself2 1 2 +} fooo +test stringObj-15.8 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself2 1 3 +} foo + testobj freeallvars # cleanup -- cgit v0.12 From 2824e0640e243a0e045149cc9f44298b48c025a6 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 30 Mar 2009 17:47:30 +0000 Subject: * generic/tclStringObj.c: Added protections from invalid memory * generic/tclTestObj.c: accesses when we append (some part of) * tests/stringObj.test: a Tcl_Obj to itself. Added the appendself and appendself2 subcommands to the [teststringobj] testing command and added tests to the test suite. [Bug 2603158] --- ChangeLog | 8 ++++++ generic/tclStringObj.c | 34 ++++++++++++++++++++++++- generic/tclTestObj.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++-- tests/stringObj.test | 35 +++++++++++++++++++++++++- 4 files changed, 141 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0b02323..1884852 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-03-30 Don Porter + + * generic/tclStringObj.c: Added protections from invalid memory + * generic/tclTestObj.c: accesses when we append (some part of) + * tests/stringObj.test: a Tcl_Obj to itself. Added the + appendself and appendself2 subcommands to the [teststringobj] testing + command and added tests to the test suite. [Bug 2603158] + 2009-03-27 Don Porter * generic/tclPathObj.c (TclPathPart): TclPathPart() was computing diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 6775273..45b0a25 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.7 2009/03/21 02:54:23 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.8 2009/03/30 17:47:30 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -1317,6 +1317,17 @@ AppendUnicodeToUnicodeRep( numChars = stringPtr->numChars + appendNumChars; if (STRING_UALLOC(numChars) >= stringPtr->uallocated) { + /* + * Protect against case where unicode points into the existing + * stringPtr->unicode array. Force it to follow any relocations + * due to the reallocs below. + */ + int offset = -1; + if (unicode >= stringPtr->unicode && unicode <= stringPtr->unicode + + 1 + stringPtr->uallocated / sizeof(Tcl_UniChar)) { + offset = unicode - stringPtr->unicode; + } + stringPtr->uallocated = STRING_UALLOC(2 * numChars); tmpString = (String *) attemptckrealloc((char *)stringPtr, STRING_SIZE(stringPtr->uallocated)); @@ -1329,6 +1340,11 @@ AppendUnicodeToUnicodeRep( } stringPtr = tmpString; SET_STRING(objPtr, stringPtr); + + /* Relocate unicode if needed; see above. */ + if (offset >= 0) { + unicode = stringPtr->unicode + offset; + } } /* @@ -1477,6 +1493,17 @@ AppendUtfToUtfRep( stringPtr = GET_STRING(objPtr); if (newLength > (int) stringPtr->allocated) { /* + * Protect against case where unicode points into the existing + * stringPtr->unicode array. Force it to follow any relocations + * due to the reallocs below. + */ + int offset = -1; + if (bytes >= objPtr->bytes + && bytes <= objPtr->bytes + objPtr->length) { + offset = bytes - objPtr->bytes; + } + + /* * There isn't currently enough space in the string representation so * allocate additional space. First, try to double the length * required. If that fails, try a more modest allocation. See the "TCL @@ -1495,6 +1522,11 @@ AppendUtfToUtfRep( Tcl_SetObjLength(objPtr, newLength + growth); } + + /* Relocate bytes if needed; see above. */ + if (offset >=0) { + bytes = objPtr->bytes + offset; + } } /* diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c index 3fb9794..c0a4275 100644 --- a/generic/tclTestObj.c +++ b/generic/tclTestObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTestObj.c,v 1.21 2007/12/13 15:23:20 dgp Exp $ + * RCS: @(#) $Id: tclTestObj.c,v 1.21.2.1 2009/03/30 17:47:30 dgp Exp $ */ #include "tclInt.h" @@ -993,12 +993,14 @@ TeststringobjCmd( Tcl_Obj *const objv[]) /* Argument objects. */ { int varIndex, option, i, length; + Tcl_UniChar *unicode; #define MAX_STRINGS 11 char *index, *string, *strings[MAX_STRINGS+1]; TestString *strPtr; static const char *options[] = { "append", "appendstrings", "get", "get2", "length", "length2", - "set", "set2", "setlength", "ualloc", "getunicode", NULL + "set", "set2", "setlength", "ualloc", "getunicode", + "appendself", "appendself2", NULL }; if (objc < 3) { @@ -1166,6 +1168,68 @@ TeststringobjCmd( } Tcl_GetUnicodeFromObj(varPtr[varIndex], NULL); break; + case 11: /* appendself */ + if (objc != 4) { + goto wrongNumArgs; + } + if (varPtr[varIndex] == NULL) { + SetVarToObj(varIndex, Tcl_NewObj()); + } + + /* + * If the object bound to variable "varIndex" is shared, we must + * "copy on write" and append to a copy of the object. + */ + + if (Tcl_IsShared(varPtr[varIndex])) { + SetVarToObj(varIndex, Tcl_DuplicateObj(varPtr[varIndex])); + } + + string = Tcl_GetStringFromObj(varPtr[varIndex], &length); + + if (Tcl_GetIntFromObj(interp, objv[3], &i) != TCL_OK) { + return TCL_ERROR; + } + if ((i < 0) || (i > length)) { + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "index value out of range", -1)); + return TCL_ERROR; + } + + Tcl_AppendToObj(varPtr[varIndex], string + i, length - i); + Tcl_SetObjResult(interp, varPtr[varIndex]); + break; + case 12: /* appendself2 */ + if (objc != 4) { + goto wrongNumArgs; + } + if (varPtr[varIndex] == NULL) { + SetVarToObj(varIndex, Tcl_NewObj()); + } + + /* + * If the object bound to variable "varIndex" is shared, we must + * "copy on write" and append to a copy of the object. + */ + + if (Tcl_IsShared(varPtr[varIndex])) { + SetVarToObj(varIndex, Tcl_DuplicateObj(varPtr[varIndex])); + } + + unicode = Tcl_GetUnicodeFromObj(varPtr[varIndex], &length); + + if (Tcl_GetIntFromObj(interp, objv[3], &i) != TCL_OK) { + return TCL_ERROR; + } + if ((i < 0) || (i > length)) { + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "index value out of range", -1)); + return TCL_ERROR; + } + + Tcl_AppendUnicodeToObj(varPtr[varIndex], unicode + i, length - i); + Tcl_SetObjResult(interp, varPtr[varIndex]); + break; } return TCL_OK; diff --git a/tests/stringObj.test b/tests/stringObj.test index d497262..5b0349c 100644 --- a/tests/stringObj.test +++ b/tests/stringObj.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: stringObj.test,v 1.16.14.1 2009/03/21 02:54:23 dgp Exp $ +# RCS: @(#) $Id: stringObj.test,v 1.16.14.2 2009/03/30 17:47:30 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -434,6 +434,39 @@ test stringObj-14.1 {Tcl_SetObjLength on pure unicode object} testobj { teststringobj get 1 } {bar} +test stringObj-15.1 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself 1 0 +} foofoo +test stringObj-15.2 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself 1 1 +} foooo +test stringObj-15.3 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself 1 2 +} fooo +test stringObj-15.4 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself 1 3 +} foo +test stringObj-15.5 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself2 1 0 +} foofoo +test stringObj-15.6 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself2 1 1 +} foooo +test stringObj-15.7 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself2 1 2 +} fooo +test stringObj-15.8 {Tcl_Append*ToObj: self appends} { + teststringobj set 1 foo + teststringobj appendself2 1 3 +} foo + if {[testConstraint testobj]} { testobj freeallvars } -- cgit v0.12 From f77c19abe8aabdfd400eea864208390516d293f9 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 30 Mar 2009 18:47:59 +0000 Subject: * doc/Alloc.3: Size argument is "unsigned int". [Bug 2556263] --- ChangeLog | 2 ++ doc/Alloc.3 | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 847370a..f5360e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2009-03-30 Don Porter + * doc/Alloc.3: Size argument is "unsigned int". [Bug 2556263] + * generic/tclStringObj.c: Added protections from invalid memory * generic/tclTestObj.c: accesses when we append (some part of) * tests/stringObj.test: a Tcl_Obj to itself. Added the diff --git a/doc/Alloc.3 b/doc/Alloc.3 index e016a6d..7226350 100644 --- a/doc/Alloc.3 +++ b/doc/Alloc.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Alloc.3,v 1.8 2002/10/09 09:38:38 dkf Exp $ +'\" RCS: @(#) $Id: Alloc.3,v 1.8.2.1 2009/03/30 18:47:59 dgp Exp $ '\" .so man.macros .TH Tcl_Alloc 3 7.5 Tcl "Tcl Library Procedures" @@ -46,7 +46,7 @@ char * \fBattemptckrealloc\fR(\fIptr, size\fR) .SH ARGUMENTS .AS char *size -.AP int size in +.AP "unsigned int" size in Size in bytes of the memory block to allocate. .AP char *ptr in Pointer to memory block to free or realloc. -- cgit v0.12 From 4be511abf54ae5257f4763888e4f018713754680 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 30 Mar 2009 18:48:18 +0000 Subject: * doc/Alloc.3: Size argument is "unsigned int". [Bug 2556263] --- ChangeLog | 2 ++ doc/Alloc.3 | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1884852..617a3de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2009-03-30 Don Porter + * doc/Alloc.3: Size argument is "unsigned int". [Bug 2556263] + * generic/tclStringObj.c: Added protections from invalid memory * generic/tclTestObj.c: accesses when we append (some part of) * tests/stringObj.test: a Tcl_Obj to itself. Added the diff --git a/doc/Alloc.3 b/doc/Alloc.3 index 2027d6c..f0f6c06 100644 --- a/doc/Alloc.3 +++ b/doc/Alloc.3 @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: Alloc.3,v 1.10 2006/06/05 10:04:33 dkf Exp $ +'\" RCS: @(#) $Id: Alloc.3,v 1.10.8.1 2009/03/30 18:48:18 dgp Exp $ '\" .so man.macros .TH Tcl_Alloc 3 7.5 Tcl "Tcl Library Procedures" @@ -46,7 +46,7 @@ char * \fBattemptckrealloc\fR(\fIptr, size\fR) .SH ARGUMENTS .AS char *size -.AP int size in +.AP "unsigned int" size in Size in bytes of the memory block to allocate. .AP char *ptr in Pointer to memory block to free or realloc. -- cgit v0.12 From b14b518fcf65b0e5ee71e42ab3d1bbdaaacde948 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Apr 2009 18:37:23 +0000 Subject: * generic/tclStringObj.c: Completed backports of fixes for [Bug 2494093] and [Bug 2553906]. --- ChangeLog | 5 ++ generic/tclStringObj.c | 180 ++++++++++++++++++++++++++++++------------------- 2 files changed, 117 insertions(+), 68 deletions(-) diff --git a/ChangeLog b/ChangeLog index 617a3de..f8d47f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-07 Don Porter + + * generic/tclStringObj.c: Completed backports of fixes for + [Bug 2494093] and [Bug 2553906]. + 2009-03-30 Don Porter * doc/Alloc.3: Size argument is "unsigned int". [Bug 2556263] diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 45b0a25..b4e5995 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.8 2009/03/30 17:47:30 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.9 2009/04/07 18:37:23 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -42,6 +42,8 @@ * Prototypes for functions defined later in this file: */ +static void AppendPrintfToObjVA(Tcl_Obj *objPtr, + const char *format, va_list argList); static void AppendUnicodeToUnicodeRep(Tcl_Obj *objPtr, const Tcl_UniChar *unicode, int appendNumChars); static void AppendUnicodeToUtfRep(Tcl_Obj *objPtr, @@ -50,15 +52,15 @@ static void AppendUtfToUnicodeRep(Tcl_Obj *objPtr, const char *bytes, int numBytes); static void AppendUtfToUtfRep(Tcl_Obj *objPtr, const char *bytes, int numBytes); -static void FillUnicodeRep(Tcl_Obj *objPtr); -static void AppendPrintfToObjVA(Tcl_Obj *objPtr, - const char *format, va_list argList); -static void FreeStringInternalRep(Tcl_Obj *objPtr); static void DupStringInternalRep(Tcl_Obj *objPtr, Tcl_Obj *copyPtr); +static void FillUnicodeRep(Tcl_Obj *objPtr); +static void FreeStringInternalRep(Tcl_Obj *objPtr); +static void GrowUnicodeBuffer(Tcl_Obj *objPtr, int needed); static int SetStringFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr); static void SetUnicodeObj(Tcl_Obj *objPtr, const Tcl_UniChar *unicode, int numChars); +static int UnicodeLength(const Tcl_UniChar *unicode); static void UpdateStringOfString(Tcl_Obj *objPtr); /* @@ -107,15 +109,25 @@ typedef struct String { * field above. */ } String; +#define STRING_MAXCHARS \ + (1 + (int)(((size_t)UINT_MAX - sizeof(String))/sizeof(Tcl_UniChar))) #define STRING_UALLOC(numChars) \ ((numChars) * sizeof(Tcl_UniChar)) #define STRING_SIZE(ualloc) \ ((unsigned) ((ualloc) \ - ? ((sizeof(String) - sizeof(Tcl_UniChar) + (ualloc) > INT_MAX) \ - ? Tcl_Panic("unable to alloc %u bytes", \ - sizeof(String) - sizeof(Tcl_UniChar) + (ualloc)), INT_MAX \ - : (sizeof(String) - sizeof(Tcl_UniChar) + (ualloc))) \ + ? (sizeof(String) - sizeof(Tcl_UniChar) + (ualloc)) \ : sizeof(String))) +#define stringCheckLimits(numChars) \ + if ((numChars) < 0 || (numChars) > STRING_MAXCHARS) { \ + Tcl_Panic("max length for a Tcl unicode value (%d chars) exceeded", \ + STRING_MAXCHARS); \ + } +#define stringRealloc(ptr, numChars) \ + (String *) ckrealloc((char *) ptr, \ + (unsigned) STRING_SIZE(STRING_UALLOC(numChars)) ) +#define stringAttemptRealloc(ptr, numChars) \ + (String *) attemptckrealloc((char *) ptr, \ + (unsigned) STRING_SIZE(STRING_UALLOC(numChars)) ) #define GET_STRING(objPtr) \ ((String *) (objPtr)->internalRep.otherValuePtr) #define SET_STRING(objPtr, stringPtr) \ @@ -158,6 +170,49 @@ typedef struct String { #ifndef TCL_GROWTH_MIN_ALLOC #define TCL_GROWTH_MIN_ALLOC 1024 #endif + +static void +GrowUnicodeBuffer( + Tcl_Obj *objPtr, + int needed) +{ + /* Pre-conditions: + * objPtr->typePtr == &tclStringType + * STRING_UALLOC(needed) > stringPtr->uallocated + * needed < STRING_MAXCHARS + */ + String *ptr = NULL, *stringPtr = GET_STRING(objPtr); + int attempt; + + if (stringPtr->uallocated > 0) { + /* Subsequent appends - apply the growth algorithm. */ + attempt = 2 * needed; + if (attempt >= 0 && attempt <= STRING_MAXCHARS) { + ptr = stringAttemptRealloc(stringPtr, attempt); + } + if (ptr == NULL) { + /* + * Take care computing the amount of modest growth to avoid + * overflow into invalid argument values for attempt. + */ + unsigned int limit = STRING_MAXCHARS - needed; + unsigned int extra = needed - stringPtr->numChars + + TCL_GROWTH_MIN_ALLOC/sizeof(Tcl_UniChar); + int growth = (int) ((extra > limit) ? limit : extra); + attempt = needed + growth; + ptr = stringAttemptRealloc(stringPtr, attempt); + } + } + if (ptr == NULL) { + /* First allocation - just big enough; or last chance fallback. */ + attempt = needed; + ptr = stringRealloc(stringPtr, attempt); + } + stringPtr = ptr; + stringPtr->uallocated = STRING_UALLOC(attempt); + SET_STRING(objPtr, stringPtr); +} + /* *---------------------------------------------------------------------- @@ -797,9 +852,9 @@ Tcl_SetObjLength( size_t uallocated = STRING_UALLOC(length); + stringCheckLimits(length); if (uallocated > stringPtr->uallocated) { - stringPtr = (String *) ckrealloc((char*) stringPtr, - STRING_SIZE(uallocated)); + stringPtr = stringRealloc(stringPtr, length); SET_STRING(objPtr, stringPtr); stringPtr->uallocated = uallocated; } @@ -924,10 +979,12 @@ Tcl_AttemptSetObjLength( */ size_t uallocated = STRING_UALLOC(length); + if (length > STRING_MAXCHARS) { + return 0; + } if (uallocated > stringPtr->uallocated) { - stringPtr = (String *) attemptckrealloc((char*) stringPtr, - STRING_SIZE(uallocated)); + stringPtr = stringAttemptRealloc(stringPtr, length); if (stringPtr == NULL) { return 0; } @@ -979,6 +1036,21 @@ Tcl_SetUnicodeObj( SetUnicodeObj(objPtr, unicode, numChars); } +static int +UnicodeLength( + const Tcl_UniChar *unicode) +{ + int numChars = 0; + + if (unicode) { + while (numChars >= 0 && unicode[numChars] != 0) { + numChars++; + } + } + stringCheckLimits(numChars); + return numChars; +} + static void SetUnicodeObj( Tcl_Obj *objPtr, /* The object to set the string of. */ @@ -991,18 +1063,14 @@ SetUnicodeObj( size_t uallocated; if (numChars < 0) { - numChars = 0; - if (unicode) { - while (unicode[numChars] != 0) { - numChars++; - } - } + numChars = UnicodeLength(unicode); } /* * Allocate enough space for the String structure + Unicode string. */ + stringCheckLimits(numChars); uallocated = STRING_UALLOC(numChars); stringPtr = (String *) ckalloc(STRING_SIZE(uallocated)); @@ -1288,16 +1356,11 @@ AppendUnicodeToUnicodeRep( const Tcl_UniChar *unicode, /* String to append. */ int appendNumChars) /* Number of chars of "unicode" to append. */ { - String *stringPtr, *tmpString; + String *stringPtr; size_t numChars; if (appendNumChars < 0) { - appendNumChars = 0; - if (unicode) { - while (unicode[appendNumChars] != 0) { - appendNumChars++; - } - } + appendNumChars = UnicodeLength(unicode); } if (appendNumChars == 0) { return; @@ -1315,6 +1378,7 @@ AppendUnicodeToUnicodeRep( */ numChars = stringPtr->numChars + appendNumChars; + stringCheckLimits(numChars); if (STRING_UALLOC(numChars) >= stringPtr->uallocated) { /* @@ -1328,18 +1392,8 @@ AppendUnicodeToUnicodeRep( offset = unicode - stringPtr->unicode; } - stringPtr->uallocated = STRING_UALLOC(2 * numChars); - tmpString = (String *) attemptckrealloc((char *)stringPtr, - STRING_SIZE(stringPtr->uallocated)); - if (tmpString == NULL) { - stringPtr->uallocated = - STRING_UALLOC(numChars + appendNumChars) - + TCL_GROWTH_MIN_ALLOC; - tmpString = (String *) ckrealloc((char *)stringPtr, - STRING_SIZE(stringPtr->uallocated)); - } - stringPtr = tmpString; - SET_STRING(objPtr, stringPtr); + GrowUnicodeBuffer(objPtr, numChars); + stringPtr = GET_STRING(objPtr); /* Relocate unicode if needed; see above. */ if (offset >= 0) { @@ -1387,12 +1441,7 @@ AppendUnicodeToUtfRep( const char *bytes; if (numChars < 0) { - numChars = 0; - if (unicode) { - while (unicode[numChars] != 0) { - numChars++; - } - } + numChars = UnicodeLength(unicode); } if (numChars == 0) { return; @@ -1485,10 +1534,10 @@ AppendUtfToUtfRep( */ oldLength = objPtr->length; - if (numBytes > INT_MAX - oldLength) { + newLength = numBytes + oldLength; + if (newLength < 0) { Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); } - newLength = numBytes + oldLength; stringPtr = GET_STRING(objPtr); if (newLength > (int) stringPtr->allocated) { @@ -2682,25 +2731,11 @@ FillUnicodeRep( } stringPtr->hasUnicode = (stringPtr->numChars > 0); + stringCheckLimits(stringPtr->numChars); uallocated = STRING_UALLOC(stringPtr->numChars); if (uallocated > stringPtr->uallocated) { - /* - * If not enough space has been allocated for the unicode rep, - * reallocate the internal rep object. - * - * There isn't currently enough space in the Unicode representation so - * allocate additional space. If the current Unicode representation - * isn't empty (i.e. it looks like we've done some appends) then - * overallocate the space so that we won't have to do as much - * reallocation in the future. - */ - - if (stringPtr->uallocated > 0) { - uallocated *= 2; - } - stringPtr = (String *) ckrealloc((char*) stringPtr, - STRING_SIZE(uallocated)); - stringPtr->uallocated = uallocated; + GrowUnicodeBuffer(objPtr, stringPtr->numChars); + stringPtr = GET_STRING(objPtr); } /* @@ -2752,8 +2787,8 @@ DupStringInternalRep( */ if (srcStringPtr->hasUnicode == 0) { - copyStringPtr = (String *) ckalloc(STRING_SIZE(STRING_UALLOC(0))); - copyStringPtr->uallocated = STRING_UALLOC(0); + copyStringPtr = (String *) ckalloc(sizeof(String)); + copyStringPtr->uallocated = 0; } else { copyStringPtr = (String *) ckalloc( STRING_SIZE(srcStringPtr->uallocated)); @@ -2822,9 +2857,9 @@ SetStringFromAny( * Allocate enough space for the basic String structure. */ - stringPtr = (String *) ckalloc(STRING_SIZE(STRING_UALLOC(0))); + stringPtr = (String *) ckalloc(sizeof(String)); stringPtr->numChars = -1; - stringPtr->uallocated = STRING_UALLOC(0); + stringPtr->uallocated = 0; stringPtr->hasUnicode = 0; if (objPtr->bytes != NULL) { @@ -2886,16 +2921,25 @@ UpdateStringOfString( * space the UTF string needs. */ + if (stringPtr->numChars <= INT_MAX/TCL_UTF_MAX + && stringPtr->allocated >= stringPtr->numChars * TCL_UTF_MAX) { + goto copyBytes; + } + size = 0; - for (i = 0; i < stringPtr->numChars; i++) { + for (i = 0; i < stringPtr->numChars && size >= 0; i++) { size += Tcl_UniCharToUtf((int) unicode[i], dummy); } + if (size < 0) { + Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); + } dst = (char *) ckalloc((unsigned) (size + 1)); objPtr->bytes = dst; objPtr->length = size; stringPtr->allocated = size; + copyBytes: for (i = 0; i < stringPtr->numChars; i++) { dst += Tcl_UniCharToUtf(unicode[i], dst); } -- cgit v0.12 From a04bd79877fc0082c18a3b9f7afa934b9f67cfd0 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 7 Apr 2009 18:37:42 +0000 Subject: * generic/tclStringObj.c: Completed backports of fixes for [Bug 2494093] and [Bug 2553906]. --- ChangeLog | 5 ++ generic/tclStringObj.c | 179 +++++++++++++++++++++++++++++++------------------ 2 files changed, 118 insertions(+), 66 deletions(-) diff --git a/ChangeLog b/ChangeLog index f5360e2..a31480e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-07 Don Porter + + * generic/tclStringObj.c: Completed backports of fixes for + [Bug 2494093] and [Bug 2553906]. + 2009-03-30 Don Porter * doc/Alloc.3: Size argument is "unsigned int". [Bug 2556263] diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 6490bc6..14f3bac 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.8 2009/03/30 17:47:09 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.9 2009/04/07 18:37:42 dgp Exp $ */ #include "tclInt.h" @@ -51,16 +51,17 @@ static void AppendUtfToUnicodeRep _ANSI_ARGS_((Tcl_Obj *objPtr, CONST char *bytes, int numBytes)); static void AppendUtfToUtfRep _ANSI_ARGS_((Tcl_Obj *objPtr, CONST char *bytes, int numBytes)); - -static void FillUnicodeRep _ANSI_ARGS_((Tcl_Obj *objPtr)); - -static void FreeStringInternalRep _ANSI_ARGS_((Tcl_Obj *objPtr)); static void DupStringInternalRep _ANSI_ARGS_((Tcl_Obj *objPtr, Tcl_Obj *copyPtr)); +static void FillUnicodeRep _ANSI_ARGS_((Tcl_Obj *objPtr)); +static void FreeStringInternalRep _ANSI_ARGS_((Tcl_Obj *objPtr)); +static void GrowUnicodeBuffer _ANSI_ARGS_((Tcl_Obj *objPtr, + int needed)); static int SetStringFromAny _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); static void SetUnicodeObj(Tcl_Obj *objPtr, CONST Tcl_UniChar *unicode, int numChars); +static int UnicodeLength _ANSI_ARGS_((CONST Tcl_UniChar *unicode)); static void UpdateStringOfString _ANSI_ARGS_((Tcl_Obj *objPtr)); /* @@ -105,15 +106,25 @@ typedef struct String { * 'uallocated' field above. */ } String; +#define STRING_MAXCHARS \ + (1 + (int)(((size_t)UINT_MAX - sizeof(String))/sizeof(Tcl_UniChar))) #define STRING_UALLOC(numChars) \ - ((numChars) * sizeof(Tcl_UniChar)) + ((numChars) * sizeof(Tcl_UniChar)) #define STRING_SIZE(ualloc) \ ((unsigned) ((ualloc) \ - ? ((sizeof(String) - sizeof(Tcl_UniChar) + (ualloc) > INT_MAX) \ - ? Tcl_Panic("unable to alloc %u bytes", \ - sizeof(String) - sizeof(Tcl_UniChar) + (ualloc)), INT_MAX \ - : (sizeof(String) - sizeof(Tcl_UniChar) + (ualloc))) \ + ? (sizeof(String) - sizeof(Tcl_UniChar) + (ualloc)) \ : sizeof(String))) +#define stringCheckLimits(numChars) \ + if ((numChars) < 0 || (numChars) > STRING_MAXCHARS) { \ + Tcl_Panic("max length for a Tcl unicode value (%d chars) exceeded", \ + STRING_MAXCHARS); \ + } +#define stringRealloc(ptr, numChars) \ + (String *) ckrealloc((char *) ptr, \ + (unsigned) STRING_SIZE(STRING_UALLOC(numChars)) ) +#define stringAttemptRealloc(ptr, numChars) \ + (String *) attemptckrealloc((char *) ptr, \ + (unsigned) STRING_SIZE(STRING_UALLOC(numChars)) ) #define GET_STRING(objPtr) \ ((String *) (objPtr)->internalRep.otherValuePtr) #define SET_STRING(objPtr, stringPtr) \ @@ -157,6 +168,48 @@ typedef struct String { #define TCL_GROWTH_MIN_ALLOC 1024 #endif +static void +GrowUnicodeBuffer( + Tcl_Obj *objPtr, + int needed) +{ + /* Pre-conditions: + * objPtr->typePtr == &tclStringType + * STRING_UALLOC(needed) > stringPtr->uallocated + * needed < STRING_MAXCHARS + */ + String *ptr = NULL, *stringPtr = GET_STRING(objPtr); + int attempt; + + if (stringPtr->uallocated > 0) { + /* Subsequent appends - apply the growth algorithm. */ + attempt = 2 * needed; + if (attempt >= 0 && attempt <= STRING_MAXCHARS) { + ptr = stringAttemptRealloc(stringPtr, attempt); + } + if (ptr == NULL) { + /* + * Take care computing the amount of modest growth to avoid + * overflow into invalid argument values for attempt. + */ + unsigned int limit = STRING_MAXCHARS - needed; + unsigned int extra = needed - stringPtr->numChars + + TCL_GROWTH_MIN_ALLOC/sizeof(Tcl_UniChar); + int growth = (int) ((extra > limit) ? limit : extra); + attempt = needed + growth; + ptr = stringAttemptRealloc(stringPtr, attempt); + } + } + if (ptr == NULL) { + /* First allocation - just big enough; or last chance fallback. */ + attempt = needed; + ptr = stringRealloc(stringPtr, attempt); + } + stringPtr = ptr; + stringPtr->uallocated = STRING_UALLOC(attempt); + SET_STRING(objPtr, stringPtr); +} + /* *---------------------------------------------------------------------- @@ -797,9 +850,10 @@ Tcl_SetObjLength(objPtr, length) } else { /* Changing length of pure unicode string */ size_t uallocated = STRING_UALLOC(length); + + stringCheckLimits(length); if (uallocated > stringPtr->uallocated) { - stringPtr = (String *) ckrealloc((char*) stringPtr, - STRING_SIZE(uallocated)); + stringPtr = stringRealloc(stringPtr, length); SET_STRING(objPtr, stringPtr); stringPtr->uallocated = uallocated; } @@ -905,9 +959,12 @@ Tcl_AttemptSetObjLength(objPtr, length) } else { /* Changing length of pure unicode string */ size_t uallocated = STRING_UALLOC(length); + if (length > STRING_MAXCHARS) { + return 0; + } + if (uallocated > stringPtr->uallocated) { - stringPtr = (String *) attemptckrealloc((char*) stringPtr, - STRING_SIZE(uallocated)); + stringPtr = stringAttemptRealloc(stringPtr, length); if (stringPtr == NULL) { return 0; } @@ -959,6 +1016,21 @@ Tcl_SetUnicodeObj(objPtr, unicode, numChars) SetUnicodeObj(objPtr, unicode, numChars); } +static int +UnicodeLength( + const Tcl_UniChar *unicode) +{ + int numChars = 0; + + if (unicode) { + while (numChars >= 0 && unicode[numChars] != 0) { + numChars++; + } + } + stringCheckLimits(numChars); + return numChars; +} + static void SetUnicodeObj(objPtr, unicode, numChars) Tcl_Obj *objPtr; /* The object to set the string of. */ @@ -971,16 +1043,14 @@ SetUnicodeObj(objPtr, unicode, numChars) size_t uallocated; if (numChars < 0) { - numChars = 0; - if (unicode) { - while (unicode[numChars] != 0) { numChars++; } - } + numChars = UnicodeLength(unicode); } /* * Allocate enough space for the String structure + Unicode string. */ + stringCheckLimits(numChars); uallocated = STRING_UALLOC(numChars); stringPtr = (String *) ckalloc(STRING_SIZE(uallocated)); @@ -1215,14 +1285,11 @@ AppendUnicodeToUnicodeRep(objPtr, unicode, appendNumChars) CONST Tcl_UniChar *unicode; /* String to append. */ int appendNumChars; /* Number of chars of "unicode" to append. */ { - String *stringPtr, *tmpString; + String *stringPtr; size_t numChars; if (appendNumChars < 0) { - appendNumChars = 0; - if (unicode) { - while (unicode[appendNumChars] != 0) { appendNumChars++; } - } + appendNumChars = UnicodeLength(unicode); } if (appendNumChars == 0) { return; @@ -1240,6 +1307,7 @@ AppendUnicodeToUnicodeRep(objPtr, unicode, appendNumChars) */ numChars = stringPtr->numChars + appendNumChars; + stringCheckLimits(numChars); if (STRING_UALLOC(numChars) >= stringPtr->uallocated) { /* @@ -1253,18 +1321,8 @@ AppendUnicodeToUnicodeRep(objPtr, unicode, appendNumChars) offset = unicode - stringPtr->unicode; } - stringPtr->uallocated = STRING_UALLOC(2 * numChars); - tmpString = (String *) attemptckrealloc((char *)stringPtr, - STRING_SIZE(stringPtr->uallocated)); - if (tmpString == NULL) { - stringPtr->uallocated = - STRING_UALLOC(numChars + appendNumChars) - + TCL_GROWTH_MIN_ALLOC; - tmpString = (String *) ckrealloc((char *)stringPtr, - STRING_SIZE(stringPtr->uallocated)); - } - stringPtr = tmpString; - SET_STRING(objPtr, stringPtr); + GrowUnicodeBuffer(objPtr, numChars); + stringPtr = GET_STRING(objPtr); /* Relocate unicode if needed; see above. */ if (offset >= 0) { @@ -1312,10 +1370,7 @@ AppendUnicodeToUtfRep(objPtr, unicode, numChars) CONST char *bytes; if (numChars < 0) { - numChars = 0; - if (unicode) { - while (unicode[numChars] != 0) { numChars++; } - } + numChars = UnicodeLength(unicode); } if (numChars == 0) { return; @@ -1408,10 +1463,10 @@ AppendUtfToUtfRep(objPtr, bytes, numBytes) */ oldLength = objPtr->length; - if (numBytes > INT_MAX - oldLength) { + newLength = numBytes + oldLength; + if (newLength < 0) { Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); } - newLength = numBytes + oldLength; stringPtr = GET_STRING(objPtr); if (newLength > (int) stringPtr->allocated) { @@ -1677,28 +1732,11 @@ FillUnicodeRep(objPtr) } stringPtr->hasUnicode = (stringPtr->numChars > 0); + stringCheckLimits(stringPtr->numChars); uallocated = STRING_UALLOC(stringPtr->numChars); if (uallocated > stringPtr->uallocated) { - - /* - * If not enough space has been allocated for the unicode rep, - * reallocate the internal rep object. - */ - - /* - * There isn't currently enough space in the Unicode - * representation so allocate additional space. If the current - * Unicode representation isn't empty (i.e. it looks like we've - * done some appends) then overallocate the space so - * that we won't have to do as much reallocation in the future. - */ - - if (stringPtr->uallocated > 0) { - uallocated *= 2; - } - stringPtr = (String *) ckrealloc((char*) stringPtr, - STRING_SIZE(uallocated)); - stringPtr->uallocated = uallocated; + GrowUnicodeBuffer(objPtr, stringPtr->numChars); + stringPtr = GET_STRING(objPtr); } /* @@ -1750,8 +1788,8 @@ DupStringInternalRep(srcPtr, copyPtr) */ if (srcStringPtr->hasUnicode == 0) { - copyStringPtr = (String *) ckalloc(STRING_SIZE(STRING_UALLOC(0))); - copyStringPtr->uallocated = STRING_UALLOC(0); + copyStringPtr = (String *) ckalloc(sizeof(String)); + copyStringPtr->uallocated = 0; } else { copyStringPtr = (String *) ckalloc( STRING_SIZE(srcStringPtr->uallocated)); @@ -1823,9 +1861,9 @@ SetStringFromAny(interp, objPtr) * Allocate enough space for the basic String structure. */ - stringPtr = (String *) ckalloc(STRING_SIZE(STRING_UALLOC(0))); + stringPtr = (String *) ckalloc(sizeof(String)); stringPtr->numChars = -1; - stringPtr->uallocated = STRING_UALLOC(0); + stringPtr->uallocated = 0; stringPtr->hasUnicode = 0; if (objPtr->bytes != NULL) { @@ -1889,17 +1927,26 @@ UpdateStringOfString(objPtr) * amount of space the UTF string needs. */ + if (stringPtr->numChars <= INT_MAX/TCL_UTF_MAX + && stringPtr->allocated >= stringPtr->numChars * TCL_UTF_MAX) { + goto copyBytes; + } + size = 0; for (i = 0; i < stringPtr->numChars; i++) { size += Tcl_UniCharToUtf((int) unicode[i], dummy); } + if (size < 0) { + Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); + } dst = (char *) ckalloc((unsigned) (size + 1)); objPtr->bytes = dst; objPtr->length = size; stringPtr->allocated = size; - for (i = 0; i < stringPtr->numChars; i++) { + copyBytes: + for (i = 0; i < stringPtr->numChars && size >= 0; i++) { dst += Tcl_UniCharToUtf(unicode[i], dst); } *dst = '\0'; -- cgit v0.12 From 56d606da4f2c662cd78633e61ac518bd99f52c57 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 8 Apr 2009 16:02:07 +0000 Subject: * library/tcltest/tcltest.tcl: Fixed unsafe [eval]s in the tcltest * library/tcltest/pkgIndex.tcl: package. [Bug 2570363] --- ChangeLog | 5 +++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 14 +++++++------- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index a31480e..4deb40b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-08 Don Porter + + * library/tcltest/tcltest.tcl: Fixed unsafe [eval]s in the tcltest + * library/tcltest/pkgIndex.tcl: package. [Bug 2570363] + 2009-04-07 Don Porter * generic/tclStringObj.c: Completed backports of fixes for diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index ec0ef1f..e569fa5 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.3]} {return} -package ifneeded tcltest 2.2.9 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.2.10 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index b78c822..f799f90 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.14 2007/09/11 21:18:42 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.78.2.15 2009/04/08 16:02:20 dgp Exp $ package require Tcl 8.3 ;# uses [glob -directory] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.2.9 + variable Version 2.2.10 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -1419,7 +1419,7 @@ proc tcltest::ProcessFlags {flagArray} { RemoveAutoConfigureTraces } else { set args $flagArray - while {[llength $args]>1 && [catch {eval configure $args} msg]} { + while {[llength $args]>1 && [catch {eval [linsert $args 0 configure]} msg]} { # Something went wrong parsing $args for tcltest options # Check whether the problem is "unknown option" @@ -2221,12 +2221,12 @@ proc tcltest::Skipped {name constraints} { set doTest 0 if {[string match {*[$\[]*} $constraints] != 0} { # full expression, e.g. {$foo > [info tclversion]} - catch {set doTest [uplevel #0 expr $constraints]} + catch {set doTest [uplevel #0 [list expr $constraints]]} } elseif {[regexp {[^.:_a-zA-Z0-9 \n\r\t]+} $constraints] != 0} { # something like {a || b} should be turned into # $testConstraints(a) || $testConstraints(b). regsub -all {[.\w]+} $constraints {$testConstraints(&)} c - catch {set doTest [eval expr $c]} + catch {set doTest [eval [list expr $c]]} } elseif {![catch {llength $constraints}]} { # just simple constraints such as {unixOnly fonts}. set doTest 1 @@ -3305,12 +3305,12 @@ namespace eval tcltest { Tcl list: $msg" return } - if {[llength $::env(TCLTEST_OPTIONS)] % 2} { + if {[llength $options] % 2} { Warn "invalid TCLTEST_OPTIONS: \"$options\":\n should be\ -option value ?-option value ...?" return } - if {[catch {eval Configure $::env(TCLTEST_OPTIONS)} msg]} { + if {[catch {eval [linsert $options 0 Configure]} msg]} { Warn "invalid TCLTEST_OPTIONS: \"$options\":\n $msg" return } -- cgit v0.12 From 5d6bed5903c5448fb571d77aeb25ef24d9c36d47 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 8 Apr 2009 16:04:44 +0000 Subject: * library/tcltest/tcltest.tcl: Converted [eval]s (some unsafe!) to * library/tcltest/pkgIndex.tcl: {*} in tcltest package. [Bug 2570363] * unix/Makefile.in: => tcltest 2.3.1 * win/Makefile.in: --- ChangeLog | 7 +++++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 20 ++++++++++---------- unix/Makefile.in | 6 +++--- win/Makefile.in | 6 +++--- 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index f8d47f5..27fa36d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-04-08 Don Porter + + * library/tcltest/tcltest.tcl: Converted [eval]s (some unsafe!) to + * library/tcltest/pkgIndex.tcl: {*} in tcltest package. [Bug 2570363] + * unix/Makefile.in: => tcltest 2.3.1 + * win/Makefile.in: + 2009-04-07 Don Porter * generic/tclStringObj.c: Completed backports of fixes for diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index f062cde..5b33ac7 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.5]} {return} -package ifneeded tcltest 2.3.0 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.3.1 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index d799eb0..52f7bf4 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.103 2007/12/13 15:26:03 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.103.2.1 2009/04/08 16:04:48 dgp Exp $ package require Tcl 8.5 ;# -verbose line uses [info frame] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.3.0 + variable Version 2.3.1 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -602,7 +602,7 @@ namespace eval tcltest { } proc configure args { RemoveAutoConfigureTraces - set code [catch {eval Configure $args} msg] + set code [catch {Configure {*}$args} msg] return -code $code $msg } @@ -1420,7 +1420,7 @@ proc tcltest::ProcessFlags {flagArray} { RemoveAutoConfigureTraces } else { set args $flagArray - while {[llength $args]>1 && [catch {eval configure $args} msg]} { + while {[llength $args]>1 && [catch {configure {*}$args} msg]} { # Something went wrong parsing $args for tcltest options # Check whether the problem is "unknown option" @@ -1585,7 +1585,7 @@ proc tcltest::Replace::puts {args} { # If we haven't returned by now, we don't know how to handle the # input. Let puts handle it. - return [eval Puts $args] + return [Puts {*}$args] } # tcltest::Eval -- @@ -2242,12 +2242,12 @@ proc tcltest::Skipped {name constraints} { set doTest 0 if {[string match {*[$\[]*} $constraints] != 0} { # full expression, e.g. {$foo > [info tclversion]} - catch {set doTest [uplevel #0 expr $constraints]} + catch {set doTest [uplevel #0 [list expr $constraints]]} } elseif {[regexp {[^.:_a-zA-Z0-9 \n\r\t]+} $constraints] != 0} { # something like {a || b} should be turned into # $testConstraints(a) || $testConstraints(b). regsub -all {[.\w]+} $constraints {$testConstraints(&)} c - catch {set doTest [eval expr $c]} + catch {set doTest [eval [list expr $c]]} } elseif {![catch {llength $constraints}]} { # just simple constraints such as {unixOnly fonts}. set doTest 1 @@ -2571,7 +2571,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { # None # a lower case version is needed for compatibility with tcltest 1.0 -proc tcltest::getMatchingFiles args {eval GetMatchingFiles $args} +proc tcltest::getMatchingFiles args {GetMatchingFiles {*}$args} proc tcltest::GetMatchingFiles { args } { if {[llength $args]} { @@ -3326,12 +3326,12 @@ namespace eval tcltest { Tcl list: $msg" return } - if {[llength $::env(TCLTEST_OPTIONS)] % 2} { + if {[llength $options] % 2} { Warn "invalid TCLTEST_OPTIONS: \"$options\":\n should be\ -option value ?-option value ...?" return } - if {[catch {eval Configure $::env(TCLTEST_OPTIONS)} msg]} { + if {[catch {Configure {*}$options} msg]} { Warn "invalid TCLTEST_OPTIONS: \"$options\":\n $msg" return } diff --git a/unix/Makefile.in b/unix/Makefile.in index 84ad721..c9f3e26 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.11 2009/01/20 03:54:35 kennykb Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.12 2009/04/08 16:04:48 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -795,8 +795,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs done; @echo "Installing package msgcat 1.4.2 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/msgcat-1.4.2.tm; - @echo "Installing package tcltest 2.3.0 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.0.tm; + @echo "Installing package tcltest 2.3.1 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.1.tm; @echo "Installing package platform 1.0.3 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.3.tm; diff --git a/win/Makefile.in b/win/Makefile.in index ed02377..00b6793 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.6 2008/11/10 17:57:10 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.7 2009/04/08 16:04:59 dgp Exp $ VERSION = @TCL_VERSION@ @@ -644,8 +644,8 @@ install-libraries: libraries install-tzdata install-msgs done; @echo "Installing package msgcat 1.4.2 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.4.2.tm; - @echo "Installing package tcltest 2.3.0 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.0.tm; + @echo "Installing package tcltest 2.3.1 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.1.tm; @echo "Installing package platform 1.0.3 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.3.tm; @echo "Installing package platform::shell 1.1.4 as a Tcl Module"; -- cgit v0.12 From bf46b0546f32b8e90f6d448efcbc45213ad75d27 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 8 Apr 2009 19:11:32 +0000 Subject: * library/platform/platform.tcl: Extended the darwin sections to * library/platform/pkgIndex.tcl: add a kernel version number to * unix/Makefile.in: the identifier for anything from Leopard (10.5) * win/Makefile.in: on up. Extended patterns for same. Extended cpu * doc/platform.n: recognition for 64bit Tcl running on a 32bit kernel on a 64bit processor (By Daniel Steffen). Bumped version to 1.0.4. Updated Makefiles. --- ChangeLog | 10 ++++++++++ doc/platform.n | 6 +++--- library/platform/pkgIndex.tcl | 2 +- library/platform/platform.tcl | 40 +++++++++++++++++++++++++++++++++++++++- unix/Makefile.in | 6 +++--- win/Makefile.in | 6 +++--- 6 files changed, 59 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 27fa36d..c9d4f63 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-04-08 Andreas Kupries + + * library/platform/platform.tcl: Extended the darwin sections to + * library/platform/pkgIndex.tcl: add a kernel version number to + * unix/Makefile.in: the identifier for anything from Leopard (10.5) + * win/Makefile.in: on up. Extended patterns for same. Extended cpu + * doc/platform.n: recognition for 64bit Tcl running on a 32bit + kernel on a 64bit processor (By Daniel Steffen). Bumped version to + 1.0.4. Updated Makefiles. + 2009-04-08 Don Porter * library/tcltest/tcltest.tcl: Converted [eval]s (some unsafe!) to diff --git a/doc/platform.n b/doc/platform.n index eaf7d78..3f10506 100644 --- a/doc/platform.n +++ b/doc/platform.n @@ -4,17 +4,17 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: platform.n,v 1.5 2008/03/26 09:59:22 dkf Exp $ +'\" RCS: @(#) $Id: platform.n,v 1.5.2.1 2009/04/08 19:11:44 andreas_kupries Exp $ '\" .so man.macros -.TH "platform" n 1.0.3 platform "Tcl Bundled Packages" +.TH "platform" n 1.0.4 platform "Tcl Bundled Packages" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME platform \- System identification support code and utilities .SH SYNOPSIS .nf -\fBpackage require platform ?1.0.3?\fR +\fBpackage require platform ?1.0.4?\fR .sp \fBplatform::generic\fR \fBplatform::identify\fR diff --git a/library/platform/pkgIndex.tcl b/library/platform/pkgIndex.tcl index 27d596f..a63f4aa 100644 --- a/library/platform/pkgIndex.tcl +++ b/library/platform/pkgIndex.tcl @@ -1,3 +1,3 @@ -package ifneeded platform 1.0.3 [list source [file join $dir platform.tcl]] +package ifneeded platform 1.0.4 [list source [file join $dir platform.tcl]] package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]] diff --git a/library/platform/platform.tcl b/library/platform/platform.tcl index 143cdc5..b42c419 100644 --- a/library/platform/platform.tcl +++ b/library/platform/platform.tcl @@ -111,6 +111,13 @@ proc ::platform::generic {} { } darwin { set plat macosx + # Correctly identify the cpu when running as a 64bit + # process on a machine with a 32bit kernel + if {$cpu eq "ix86"} { + if {$tcl_platform(wordSize) == 8} { + set cpu x86_64 + } + } } aix { set cpu powerpc @@ -154,6 +161,14 @@ proc ::platform::identify {} { append plat $text return "${plat}-${cpu}" } + macosx { + set major [lindex [split $tcl_platform(osVersion) .] 0] + if {$major > 8} { + incr major -4 + append plat 10.$major + return "${plat}-${cpu}" + } + } linux { # Look for the libc*.so and determine its version # (libc5/6, libc6 further glibc 2.X) @@ -238,6 +253,29 @@ proc ::platform::patterns {id} { } } } + macosx*-* { + # 10.5+ + if {[regexp {macosx([^-]*)-(.*)} $id -> v cpu]} { + if {$v ne ""} { + foreach {major minor} [split $v .] break + + # Add 10.5 to 10.minor to patterns. + set res {} + for {set j $minor} {$j >= 5} {incr j -1} { + lappend res macosx${major}.${j}-${cpu} + lappend res macosx${major}.${j}-universal + } + + # Add unversioned patterns for 10.3/10.4 builds. + lappend res macosx-${cpu} + lappend res macosx-universal + } else { + lappend res macosx-universal + } + } else { + lappend res macosx-universal + } + } macosx-powerpc - macosx-ix86 { lappend res macosx-universal @@ -251,7 +289,7 @@ proc ::platform::patterns {id} { # ### ### ### ######### ######### ######### ## Ready -package provide platform 1.0.3 +package provide platform 1.0.4 # ### ### ### ######### ######### ######### ## Demo application diff --git a/unix/Makefile.in b/unix/Makefile.in index c9f3e26..227177f 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.12 2009/04/08 16:04:48 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.13 2009/04/08 19:11:52 andreas_kupries Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -798,8 +798,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs @echo "Installing package tcltest 2.3.1 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.1.tm; - @echo "Installing package platform 1.0.3 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.3.tm; + @echo "Installing package platform 1.0.4 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.4.tm; @echo "Installing package platform::shell 1.1.4 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/platform/shell.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform/shell-1.1.4.tm; diff --git a/win/Makefile.in b/win/Makefile.in index 00b6793..35bdd97 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.7 2009/04/08 16:04:59 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.8 2009/04/08 19:12:04 andreas_kupries Exp $ VERSION = @TCL_VERSION@ @@ -646,8 +646,8 @@ install-libraries: libraries install-tzdata install-msgs @$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.4.2.tm; @echo "Installing package tcltest 2.3.1 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.1.tm; - @echo "Installing package platform 1.0.3 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.3.tm; + @echo "Installing package platform 1.0.4 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.4.tm; @echo "Installing package platform::shell 1.1.4 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/platform/shell.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform/shell-1.1.4.tm; @echo "Installing encodings"; -- cgit v0.12 From 79f05cfbe998e59ebdbdc86266d7fbb27238eb59 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 9 Apr 2009 17:05:39 +0000 Subject: * library/http/http.tcl: Backport http 2.7.3 from HEAD for * library/http/pkgIndex.tcl: bundling with the Tcl 8.5.7 release. * unix/Makefile.in: * win/Makefile.in: --- ChangeLog | 7 + library/http/http.tcl | 316 ++++++++++++++++++++++++++-------------------- library/http/pkgIndex.tcl | 2 +- unix/Makefile.in | 6 +- win/Makefile.in | 6 +- 5 files changed, 192 insertions(+), 145 deletions(-) diff --git a/ChangeLog b/ChangeLog index c9d4f63..1cc7b85 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-04-09 Don Porter + + * library/http/http.tcl: Backport http 2.7.3 from HEAD for + * library/http/pkgIndex.tcl: bundling with the Tcl 8.5.7 release. + * unix/Makefile.in: + * win/Makefile.in: + 2009-04-08 Andreas Kupries * library/platform/platform.tcl: Extended the darwin sections to diff --git a/library/http/http.tcl b/library/http/http.tcl index 06829cd..5dbce3c 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -1,19 +1,19 @@ # http.tcl -- # # Client-side HTTP for GET, POST, and HEAD commands. These routines can -# be used in untrusted code that uses the Safesock security policy. These -# procedures use a callback interface to avoid using vwait, which is not -# defined in the safe base. +# be used in untrusted code that uses the Safesock security policy. +# These procedures use a callback interface to avoid using vwait, which +# is not defined in the safe base. # # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.67.2.5 2008/10/23 23:34:32 patthoyts Exp $ +# RCS: @(#) $Id: http.tcl,v 1.67.2.6 2009/04/09 17:05:39 dgp Exp $ package require Tcl 8.4 -# Keep this in sync with pkgIndex.tcl and with the install directories -# in Makefiles -package provide http 2.7.2 +# Keep this in sync with pkgIndex.tcl and with the install directories in +# Makefiles +package provide http 2.7.3 namespace eval http { # Allow resourcing to not clobber existing data @@ -32,9 +32,9 @@ namespace eval http { proc init {} { # Set up the map for quoting chars. RFC3986 Section 2.3 say percent - # encode all except: "... percent-encoded octets in the ranges of ALPHA - # (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E), - # underscore (%5F), or tilde (%7E) should not be created by URI + # encode all except: "... percent-encoded octets in the ranges of + # ALPHA (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period + # (%2E), underscore (%5F), or tilde (%7E) should not be created by URI # producers ..." for {set i 0} {$i <= 256} {incr i} { set c [format %c $i] @@ -101,9 +101,9 @@ proc http::Log {args} {} # See documentation for details. # # Arguments: -# proto URL protocol prefix, e.g. https -# port Default port for protocol -# command Command to use to create socket +# proto URL protocol prefix, e.g. https +# port Default port for protocol +# command Command to use to create socket # Results: # list of port and command that was registered. @@ -117,7 +117,7 @@ proc http::register {proto port command} { # Unregisters URL protocol handler # # Arguments: -# proto URL protocol prefix, e.g. https +# proto URL protocol prefix, e.g. https # Results: # list of port and command that was unregistered. @@ -152,21 +152,19 @@ proc http::config {args} { return $result } set options [string map {- ""} $options] - set pat ^-([join $options |])$ + set pat ^-(?:[join $options |])$ if {[llength $args] == 1} { set flag [lindex $args 0] - if {[regexp -- $pat $flag]} { - return $http($flag) - } else { + if {![regexp -- $pat $flag]} { return -code error "Unknown option $flag, must be: $usage" } + return $http($flag) } else { foreach {flag value} $args { - if {[regexp -- $pat $flag]} { - set http($flag) $value - } else { + if {![regexp -- $pat $flag]} { return -code error "Unknown option $flag, must be: $usage" } + set http($flag) $value } } } @@ -179,14 +177,14 @@ proc http::config {args} { # token Connection token. # errormsg (optional) If set, forces status to error. # skipCB (optional) If set, don't call the -command callback. This -# is useful when geturl wants to throw an exception instead -# of calling the callback. That way, the same error isn't -# reported to two places. +# is useful when geturl wants to throw an exception instead +# of calling the callback. That way, the same error isn't +# reported to two places. # # Side Effects: # Closes the socket -proc http::Finish { token {errormsg ""} {skipCB 0}} { +proc http::Finish {token {errormsg ""} {skipCB 0}} { variable $token upvar 0 $token state global errorInfo errorCode @@ -194,12 +192,15 @@ proc http::Finish { token {errormsg ""} {skipCB 0}} { set state(error) [list $errormsg $errorInfo $errorCode] set state(status) "error" } - if {($state(status) eq "timeout") || ($state(status) eq "error") - || ([info exists state(connection)] && ($state(connection) eq "close")) - } { + if { + ($state(status) eq "timeout") || ($state(status) eq "error") || + ([info exists state(connection)] && ($state(connection) eq "close")) + } then { CloseSocket $state(sock) $token } - if {[info exists state(after)]} { after cancel $state(after) } + if {[info exists state(after)]} { + after cancel $state(after) + } if {[info exists state(-command)] && !$skipCB} { if {[catch {eval $state(-command) {$token}} err]} { if {$errormsg eq ""} { @@ -214,10 +215,10 @@ proc http::Finish { token {errormsg ""} {skipCB 0}} { # http::CloseSocket - # -# Close a socket and remove it from the persistent sockets table. -# If possible an http token is included here but when we are called -# from a fileevent on remote closure we need to find the correct -# entry - hence the second section. +# Close a socket and remove it from the persistent sockets table. If +# possible an http token is included here but when we are called from a +# fileevent on remote closure we need to find the correct entry - hence +# the second section. proc ::http::CloseSocket {s {token {}}} { variable socketmap @@ -227,23 +228,27 @@ proc ::http::CloseSocket {s {token {}}} { variable $token upvar 0 $token state if {[info exists state(socketinfo)]} { - set conn_id $state(socketinfo) + set conn_id $state(socketinfo) } } else { set map [array get socketmap] set ndx [lsearch -exact $map $s] if {$ndx != -1} { - incr ndx -1 - set conn_id [lindex $map $ndx] + incr ndx -1 + set conn_id [lindex $map $ndx] } } if {$conn_id eq {} || ![info exists socketmap($conn_id)]} { Log "Closing socket $s (no connection info)" - if {[catch {close $s} err]} { Log "Error: $err" } + if {[catch {close $s} err]} { + Log "Error: $err" + } } else { if {[info exists socketmap($conn_id)]} { Log "Closing connection $conn_id (sock $socketmap($conn_id))" - if {[catch {close $socketmap($conn_id)} err]} { Log "Error: $err" } + if {[catch {close $socketmap($conn_id)} err]} { + Log "Error: $err" + } unset socketmap($conn_id) } else { Log "Cannot close connection $conn_id - no socket in socket map" @@ -262,7 +267,7 @@ proc ::http::CloseSocket {s {token {}}} { # Side Effects: # See Finish -proc http::reset { token {why reset} } { +proc http::reset {token {why reset}} { variable $token upvar 0 $token state set state(status) $why @@ -285,10 +290,10 @@ proc http::reset { token {why reset} } { # args Option value pairs. Valid options include: # -blocksize, -validate, -headers, -timeout # Results: -# Returns a token for this connection. This token is the name of an array -# that the caller should unset to garbage collect the state. +# Returns a token for this connection. This token is the name of an +# array that the caller should unset to garbage collect the state. -proc http::geturl { url args } { +proc http::geturl {url args} { variable http variable urlTypes variable defaultCharset @@ -351,14 +356,17 @@ proc http::geturl { url args } { } set usage [join [lsort $options] ", "] set options [string map {- ""} $options] - set pat ^-([join $options |])$ + set pat ^-(?:[join $options |])$ foreach {flag value} $args { if {[regexp -- $pat $flag]} { # Validate numbers - if {[info exists type($flag)] && - ![string is $type($flag) -strict $value]} { + if { + [info exists type($flag)] && + ![string is $type($flag) -strict $value] + } then { unset $token - return -code error "Bad value for $flag ($value), must be $type($flag)" + return -code error \ + "Bad value for $flag ($value), must be $type($flag)" } set state($flag) $value } else { @@ -397,7 +405,9 @@ proc http::geturl { url args } { # pass it in here, but it's cheap to strip). # # An example of a URL that has all the parts: - # http://jschmoe:xyzzy@www.bogus.net:8000/foo/bar.tml?q=foo#changes + # + # http://jschmoe:xyzzy@www.bogus.net:8000/foo/bar.tml?q=foo#changes + # # The "http" is the protocol, the user is "jschmoe", the password is # "xyzzy", the host is "www.bogus.net", the port is "8000", the path is # "/foo/bar.tml", the query is "q=foo", and the fragment is "changes". @@ -408,9 +418,8 @@ proc http::geturl { url args } { # Also note that we do not currently support IPv6 addresses. # # From a validation perspective, we need to ensure that the parts of the - # URL that are going to the server are correctly encoded. - # This is only done if $state(-strict) is true (inherited from - # $::http::strict). + # URL that are going to the server are correctly encoded. This is only + # done if $state(-strict) is true (inherited from $::http::strict). set URLmatcher {(?x) # this is _expanded_ syntax ^ @@ -481,7 +490,7 @@ proc http::geturl { url args } { # Provide a better error message in this error case if {[regexp {(?i)%(?![0-9a-f][0-9a-f])..} $srvurl bad]} { return -code error \ - "Illegal encoding character usage \"$bad\" in URL path" + "Illegal encoding character usage \"$bad\" in URL path" } return -code error "Illegal characters in URL path" } @@ -565,15 +574,15 @@ proc http::geturl { url args } { lappend sockopts -myaddr $state(-myaddr) } if {[catch {eval $defcmd $sockopts $targetAddr} sock]} { - # something went wrong while trying to establish the - # connection. Clean up after events and such, but DON'T call the - # command callback (if available) because we're going to throw an - # exception from here instead. + # something went wrong while trying to establish the connection. + # Clean up after events and such, but DON'T call the command + # callback (if available) because we're going to throw an + # exception from here instead. set state(sock) $sock - Finish $token "" 1 - cleanup $token - return -code error $sock + Finish $token "" 1 + cleanup $token + return -code error $sock } } set state(sock) $sock @@ -591,8 +600,8 @@ proc http::geturl { url args } { if {![info exists state]} { # If we timed out then Finish has been called and the users - # command callback may have cleaned up the token. If so - # we end up here with nothing left to do. + # command callback may have cleaned up the token. If so we end up + # here with nothing left to do. return $token } elseif {$state(status) eq "error"} { # Something went wrong while trying to establish the connection. @@ -646,11 +655,11 @@ proc http::geturl { url args } { puts $sock "Accept: $http(-accept)" array set hdrs $state(-headers) if {[info exists hdrs(Host)]} { - # Allow Host spoofing [Bug 928154] + # Allow Host spoofing. [Bug 928154] puts $sock "Host: $hdrs(Host)" } elseif {$port == $defport} { - # Don't add port in this case, to handle broken servers. - # [Bug #504508] + # Don't add port in this case, to handle broken servers. [Bug + # #504508] puts $sock "Host: $host" } else { puts $sock "Host: $host:$port" @@ -658,20 +667,22 @@ proc http::geturl { url args } { unset hdrs puts $sock "User-Agent: $http(-useragent)" if {$state(-protocol) == 1.0 && $state(-keepalive)} { - puts $sock "Connection: keep-alive" + puts $sock "Connection: keep-alive" } if {$state(-protocol) > 1.0 && !$state(-keepalive)} { - puts $sock "Connection: close" ;# RFC2616 sec 8.1.2.1 + puts $sock "Connection: close" ;# RFC2616 sec 8.1.2.1 } if {[info exists phost] && ($phost ne "") && $state(-keepalive)} { - puts $sock "Proxy-Connection: Keep-Alive" + puts $sock "Proxy-Connection: Keep-Alive" } set accept_encoding_seen 0 foreach {key value} $state(-headers) { - if {[string equal -nocase $key "host"]} { continue } - if {[string equal -nocase $key "accept-encoding"]} { - set accept_encoding_seen 1 - } + if {[string equal -nocase $key "host"]} { + continue + } + if {[string equal -nocase $key "accept-encoding"]} { + set accept_encoding_seen 1 + } set value [string map [list \n "" \r ""] $value] set key [string trim $key] if {[string equal -nocase $key "content-length"]} { @@ -683,10 +694,13 @@ proc http::geturl { url args } { } } # Soft zlib dependency check - no package require - if {!$accept_encoding_seen && [llength [package provide zlib]] - && !([info exists state(-channel)] || [info exists state(-handler)]) - } { - puts $sock "Accept-Encoding: gzip, identity, *;q=0.1" + if { + !$accept_encoding_seen && + ([package vsatisfies [package provide Tcl] 8.6] + || [llength [package provide zlib]]) && + !([info exists state(-channel)] || [info exists state(-handler)]) + } then { + puts $sock "Accept-Encoding: gzip, identity, *;q=0.1" } if {$isQueryChannel && $state(querylength) == 0} { # Try to determine size of data in channel. If we cannot seek, the @@ -707,13 +721,14 @@ proc http::geturl { url args } { # It is possible to have both the read and write fileevents active at # this point. The only scenario it seems to affect is a server that # closes the connection without reading the POST data. (e.g., early - # versions TclHttpd in various error cases). Depending on the platform, - # the client may or may not be able to get the response from the server - # because of the error it will get trying to write the post data. - # Having both fileevents active changes the timing and the behavior, - # but no two platforms (among Solaris, Linux, and NT) behave the same, - # and none behave all that well in any case. Servers should always read - # their POST data if they expect the client to read their response. + # versions TclHttpd in various error cases). Depending on the + # platform, the client may or may not be able to get the response from + # the server because of the error it will get trying to write the post + # data. Having both fileevents active changes the timing and the + # behavior, but no two platforms (among Solaris, Linux, and NT) behave + # the same, and none behave all that well in any case. Servers should + # always read their POST data if they expect the client to read their + # response. if {$isQuery || $isQueryChannel} { puts $sock "Content-Type: $state(-type)" @@ -729,7 +744,7 @@ proc http::geturl { url args } { fileevent $sock readable [list http::Event $sock $token] } - if {! [info exists state(-command)]} { + if {![info exists state(-command)]} { # geturl does EVERYTHING asynchronously, so if the user calls it # synchronously, we just do a wait here. @@ -740,7 +755,7 @@ proc http::geturl { url args } { return -code error [lindex $state(error) 0] } } - } err]} { + } err]} then { # The socket probably was never connected, or the connection dropped # later. @@ -772,7 +787,9 @@ proc http::data {token} { return $state(body) } proc http::status {token} { - if {![info exists $token]} { return "error" } + if {![info exists $token]} { + return "error" + } variable $token upvar 0 $token state return $state(status) @@ -843,9 +860,11 @@ proc http::Connect {token} { variable $token upvar 0 $token state global errorInfo errorCode - if {[eof $state(sock)] || - [string length [fconfigure $state(sock) -error]]} { - Finish $token "connect failed [fconfigure $state(sock) -error]" 1 + if { + [eof $state(sock)] || + [string length [fconfigure $state(sock) -error]] + } then { + Finish $token "connect failed [fconfigure $state(sock) -error]" 1 } else { set state(status) connect fileevent $state(sock) writable {} @@ -896,7 +915,7 @@ proc http::Write {token} { set done 1 } } - } err]} { + } err]} then { # Do not call Finish here, but instead let the read half of the socket # process whatever server reply there is to get. @@ -934,8 +953,8 @@ proc http::Event {sock token} { if {![info exists state]} { Log "Event $sock with invalid token '$token' - remote close?" - if {! [eof $sock]} { - if {[string length [set d [read $sock]]] != 0} { + if {![eof $sock]} { + if {[set d [read $sock]] ne ""} { Log "WARNING: additional data left on closed socket" } } @@ -943,9 +962,10 @@ proc http::Event {sock token} { return } if {$state(state) eq "connecting"} { - set state(state) "header" if {[catch {gets $sock state(http)} n]} { return [Finish $token $n] + } elseif {$n >= 0} { + set state(state) "header" } } elseif {$state(state) eq "header"} { if {[catch {gets $sock line} n]} { @@ -953,7 +973,9 @@ proc http::Event {sock token} { } elseif {$n == 0} { # We have now read all headers # We ignore HTTP/1.1 100 Continue returns. RFC2616 sec 8.2.3 - if {$state(http) == "" || [lindex $state(http) 1] == 100} { return } + if {$state(http) == "" || [lindex $state(http) 1] == 100} { + return + } set state(state) body @@ -963,14 +985,15 @@ proc http::Event {sock token} { return } - # For non-chunked transfer we may have no body -- in this case we - # may get no further file event if the connection doesn't close and - # no more data is sent. We can tell and must finish up now - not - # later. - if {!(([info exists state(connection)] - && ($state(connection) eq "close")) - || [info exists state(transfer)]) - && $state(totalsize) == 0 + # For non-chunked transfer we may have no body - in this case we + # may get no further file event if the connection doesn't close + # and no more data is sent. We can tell and must finish up now - + # not later. + if { + !(([info exists state(connection)] + && ($state(connection) eq "close")) + || [info exists state(transfer)]) + && ($state(totalsize) == 0) } then { Log "body size is 0 and no events likely - complete." Eof $token @@ -980,18 +1003,24 @@ proc http::Event {sock token} { # We have to use binary translation to count bytes properly. fconfigure $sock -translation binary - if {$state(-binary) || ![string match -nocase text* $state(type)]} { + if { + $state(-binary) || ![string match -nocase text* $state(type)] + } then { # Turn off conversions for non-text data set state(binary) 1 } - if {$state(binary) || [string match *gzip* $state(coding)] - || [string match *compress* $state(coding)]} { + if { + $state(binary) || [string match *gzip* $state(coding)] || + [string match *compress* $state(coding)] + } then { if {[info exists state(-channel)]} { fconfigure $state(-channel) -translation binary } } - if {[info exists state(-channel)] && - ![info exists state(-handler)]} { + if { + [info exists state(-channel)] && + ![info exists state(-handler)] + } then { # Initiate a sequence of background fcopies fileevent $sock readable {} CopyStart $sock $token @@ -1041,8 +1070,10 @@ proc http::Event {sock token} { Log "final chunk part" Eof $token } - } elseif {[info exists state(transfer)] - && $state(transfer) eq "chunked"} { + } elseif { + [info exists state(transfer)] + && $state(transfer) eq "chunked" + } then { set size 0 set chunk [getTextLine $sock] set n [string length $chunk] @@ -1079,12 +1110,14 @@ proc http::Event {sock token} { incr state(currentsize) $n } # If Content-Length - check for end of data. - if {($state(totalsize) > 0) - && ($state(currentsize) >= $state(totalsize))} { + if { + ($state(totalsize) > 0) + && ($state(currentsize) >= $state(totalsize)) + } then { Eof $token } } - } err]} { + } err]} then { return [Finish $token $err] } else { if {[info exists state(-progress)]} { @@ -1143,7 +1176,7 @@ proc http::CopyStart {sock token} { if {[catch { fcopy $sock $state(-channel) -size $state(-blocksize) -command \ [list http::CopyDone $token] - } err]} { + } err]} then { Finish $token $err } } @@ -1200,22 +1233,26 @@ proc http::Eof {token {force 0}} { if {($state(coding) eq "gzip") && [string length $state(body)] > 0} { if {[catch { - set state(body) [Gunzip $state(body)] - } err]} { - return [Finish $token $err] + if {[package vsatisfies [package present Tcl] 8.6]} { + # The zlib integration into 8.6 includes proper gzip support + set state(body) [zlib gunzip $state(body)] + } else { + set state(body) [Gunzip $state(body)] + } + } err]} then { + return [Finish $token $err] } } if {!$state(binary)} { - - # If we are getting text, set the incoming channel's - # encoding correctly. iso8859-1 is the RFC default, but - # this could be any IANA charset. However, we only know - # how to convert what we have encodings for. + # If we are getting text, set the incoming channel's encoding + # correctly. iso8859-1 is the RFC default, but this could be any IANA + # charset. However, we only know how to convert what we have + # encodings for. set enc [CharsetToEncoding $state(charset)] if {$enc ne "binary"} { - set state(body) [encoding convertfrom $enc $state(body)] + set state(body) [encoding convertfrom $enc $state(body)] } # Translate text line endings. @@ -1317,8 +1354,10 @@ proc http::mapReply {string} { proc http::ProxyRequired {host} { variable http if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} { - if {![info exists http(-proxyport)] || \ - ![string length $http(-proxyport)]} { + if { + ![info exists http(-proxyport)] || + ![string length $http(-proxyport)] + } then { set http(-proxyport) 8080 } return [list $http(-proxyhost) $http(-proxyport)] @@ -1327,33 +1366,33 @@ proc http::ProxyRequired {host} { # http::CharsetToEncoding -- # -# Tries to map a given IANA charset to a tcl encoding. -# If no encoding can be found, returns binary. +# Tries to map a given IANA charset to a tcl encoding. If no encoding +# can be found, returns binary. # proc http::CharsetToEncoding {charset} { variable encodings set charset [string tolower $charset] - if {[regexp {iso-?8859-([0-9]+)} $charset - num]} { + if {[regexp {iso-?8859-([0-9]+)} $charset -> num]} { set encoding "iso8859-$num" - } elseif {[regexp {iso-?2022-(jp|kr)} $charset - ext]} { + } elseif {[regexp {iso-?2022-(jp|kr)} $charset -> ext]} { set encoding "iso2022-$ext" - } elseif {[regexp {shift[-_]?js} $charset -]} { + } elseif {[regexp {shift[-_]?js} $charset]} { set encoding "shiftjis" - } elseif {[regexp {(windows|cp)-?([0-9]+)} $charset - - num]} { + } elseif {[regexp {(?:windows|cp)-?([0-9]+)} $charset -> num]} { set encoding "cp$num" } elseif {$charset eq "us-ascii"} { set encoding "ascii" - } elseif {[regexp {(iso-?)?lat(in)?-?([0-9]+)} $charset - - - num]} { + } elseif {[regexp {(?:iso-?)?lat(?:in)?-?([0-9]+)} $charset -> num]} { switch -- $num { 5 {set encoding "iso8859-9"} - 1 - - 2 - - 3 {set encoding "iso8859-$num"} + 1 - 2 - 3 { + set encoding "iso8859-$num" + } } } else { - # other charset, like euc-xx, utf-8,... may directly maps to encoding + # other charset, like euc-xx, utf-8,... may directly map to encoding set encoding $charset } set idx [lsearch -exact $encodings $encoding] @@ -1380,9 +1419,10 @@ proc http::Gunzip {data} { return -code error "invalid compression method" } + # lassign [split $flags ""] f_text f_crc f_extra f_name f_comment foreach {f_text f_crc f_extra f_name f_comment} [split $flags ""] break set extra "" - if { $f_extra } { + if {$f_extra} { binary scan $data @${pos}S xlen incr pos 2 set extra [string range $data $pos $xlen] @@ -1390,21 +1430,21 @@ proc http::Gunzip {data} { } set name "" - if { $f_name } { + if {$f_name} { set ndx [string first \0 $data $pos] set name [string range $data $pos $ndx] set pos [incr ndx] } set comment "" - if { $f_comment } { + if {$f_comment} { set ndx [string first \0 $data $pos] set comment [string range $data $pos $ndx] set pos [incr ndx] } set fcrc "" - if { $f_crc } { + if {$f_crc} { set fcrc [string range $data $pos [incr pos]] incr pos } @@ -1412,7 +1452,7 @@ proc http::Gunzip {data} { binary scan [string range $data end-7 end] ii crc size set inflated [zlib inflate [string range $data $pos end-8]] set chk [zlib crc32 $inflated] - if { ($crc & 0xffffffff) != ($chk & 0xffffffff)} { + if {($crc & 0xffffffff) != ($chk & 0xffffffff)} { return -code error "invalid data: checksum mismatch $crc != $chk" } return $inflated diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 6badcea..07724d3 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,4 +1,4 @@ # Tcl package index file, version 1.1 if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.7.2 [list tclPkgSetup $dir http 2.7.2 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +package ifneeded http 2.7.3 [list tclPkgSetup $dir http 2.7.3 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] diff --git a/unix/Makefile.in b/unix/Makefile.in index 227177f..17561a5 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.13 2009/04/08 19:11:52 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.14 2009/04/09 17:05:41 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -786,8 +786,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs do \ $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \ done; - @echo "Installing package http 2.7.2 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.2.tm; + @echo "Installing package http 2.7.3 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.3.tm; @echo "Installing library opt0.4 directory"; @for i in $(TOP_DIR)/library/opt/*.tcl ; \ do \ diff --git a/win/Makefile.in b/win/Makefile.in index 35bdd97..7ae9c93 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.8 2009/04/08 19:12:04 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.9 2009/04/09 17:05:42 dgp Exp $ VERSION = @TCL_VERSION@ @@ -635,8 +635,8 @@ install-libraries: libraries install-tzdata install-msgs do \ $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \ done; - @echo "Installing package http 2.7.2 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.2.tm; + @echo "Installing package http 2.7.3 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.3.tm; @echo "Installing library opt0.4 directory"; @for j in $(ROOT_DIR)/library/opt/*.tcl; \ do \ -- cgit v0.12 From bef7925ea45ac7e83a9ecc812e9a2ccfc86fa207 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Thu, 9 Apr 2009 19:55:55 +0000 Subject: Olson's tzdata2009e --- ChangeLog | 4 + library/tzdata/Africa/Abidjan | 12 +- library/tzdata/Africa/Accra | 40 +- library/tzdata/Africa/Addis_Ababa | 14 +- library/tzdata/Africa/Algiers | 78 +-- library/tzdata/Africa/Asmara | 16 +- library/tzdata/Africa/Asmera | 10 +- library/tzdata/Africa/Bamako | 16 +- library/tzdata/Africa/Bangui | 12 +- library/tzdata/Africa/Banjul | 16 +- library/tzdata/Africa/Bissau | 14 +- library/tzdata/Africa/Blantyre | 12 +- library/tzdata/Africa/Brazzaville | 12 +- library/tzdata/Africa/Bujumbura | 12 +- library/tzdata/Africa/Cairo | 608 +++++++++---------- library/tzdata/Africa/Casablanca | 54 +- library/tzdata/Africa/Ceuta | 516 ++++++++-------- library/tzdata/Africa/Conakry | 16 +- library/tzdata/Africa/Dakar | 14 +- library/tzdata/Africa/Dar_es_Salaam | 16 +- library/tzdata/Africa/Djibouti | 12 +- library/tzdata/Africa/Douala | 12 +- library/tzdata/Africa/El_Aaiun | 14 +- library/tzdata/Africa/Freetown | 72 +-- library/tzdata/Africa/Gaborone | 16 +- library/tzdata/Africa/Harare | 12 +- library/tzdata/Africa/Johannesburg | 22 +- library/tzdata/Africa/Kampala | 18 +- library/tzdata/Africa/Khartoum | 78 +-- library/tzdata/Africa/Kigali | 12 +- library/tzdata/Africa/Kinshasa | 12 +- library/tzdata/Africa/Lagos | 12 +- library/tzdata/Africa/Libreville | 12 +- library/tzdata/Africa/Lome | 12 +- library/tzdata/Africa/Luanda | 14 +- library/tzdata/Africa/Lubumbashi | 12 +- library/tzdata/Africa/Lusaka | 12 +- library/tzdata/Africa/Malabo | 14 +- library/tzdata/Africa/Maputo | 12 +- library/tzdata/Africa/Maseru | 16 +- library/tzdata/Africa/Mbabane | 12 +- library/tzdata/Africa/Mogadishu | 16 +- library/tzdata/Africa/Monrovia | 16 +- library/tzdata/Africa/Nairobi | 18 +- library/tzdata/Africa/Ndjamena | 16 +- library/tzdata/Africa/Niamey | 16 +- library/tzdata/Africa/Nouakchott | 16 +- library/tzdata/Africa/Ouagadougou | 12 +- library/tzdata/Africa/Porto-Novo | 14 +- library/tzdata/Africa/Sao_Tome | 14 +- library/tzdata/Africa/Timbuktu | 10 +- library/tzdata/Africa/Tripoli | 62 +- library/tzdata/Africa/Tunis | 440 +++++++------- library/tzdata/Africa/Windhoek | 444 +++++++------- library/tzdata/America/Adak | 552 +++++++++--------- library/tzdata/America/Anchorage | 552 +++++++++--------- library/tzdata/America/Anguilla | 12 +- library/tzdata/America/Antigua | 14 +- library/tzdata/America/Araguaina | 114 ++-- library/tzdata/America/Argentina/Buenos_Aires | 496 ++++++++-------- library/tzdata/America/Argentina/Catamarca | 136 ++--- library/tzdata/America/Argentina/ComodRivadavia | 10 +- library/tzdata/America/Argentina/Cordoba | 496 ++++++++-------- library/tzdata/America/Argentina/Jujuy | 134 ++--- library/tzdata/America/Argentina/La_Rioja | 138 ++--- library/tzdata/America/Argentina/Mendoza | 136 ++--- library/tzdata/America/Argentina/Rio_Gallegos | 136 ++--- library/tzdata/America/Argentina/Salta | 132 ++--- library/tzdata/America/Argentina/San_Juan | 138 ++--- library/tzdata/America/Argentina/San_Luis | 311 ++++++++-- library/tzdata/America/Argentina/Tucuman | 500 ++++++++-------- library/tzdata/America/Argentina/Ushuaia | 136 ++--- library/tzdata/America/Aruba | 14 +- library/tzdata/America/Asuncion | 518 ++++++++--------- library/tzdata/America/Atikokan | 24 +- library/tzdata/America/Atka | 10 +- library/tzdata/America/Bahia | 130 ++--- library/tzdata/America/Barbados | 30 +- library/tzdata/America/Belem | 70 +-- library/tzdata/America/Belize | 120 ++-- library/tzdata/America/Blanc-Sablon | 24 +- library/tzdata/America/Boa_Vista | 80 +-- library/tzdata/America/Bogota | 18 +- library/tzdata/America/Boise | 562 +++++++++--------- library/tzdata/America/Buenos_Aires | 10 +- library/tzdata/America/Cambridge_Bay | 504 ++++++++-------- library/tzdata/America/Campo_Grande | 514 ++++++++-------- library/tzdata/America/Cancun | 432 +++++++------- library/tzdata/America/Caracas | 18 +- library/tzdata/America/Catamarca | 10 +- library/tzdata/America/Cayenne | 14 +- library/tzdata/America/Cayman | 14 +- library/tzdata/America/Chicago | 738 +++++++++++------------ library/tzdata/America/Chihuahua | 442 +++++++------- library/tzdata/America/Coral_Harbour | 10 +- library/tzdata/America/Cordoba | 10 +- library/tzdata/America/Costa_Rica | 30 +- library/tzdata/America/Cuiaba | 514 ++++++++-------- library/tzdata/America/Curacao | 14 +- library/tzdata/America/Danmarkshavn | 78 +-- library/tzdata/America/Dawson | 512 ++++++++-------- library/tzdata/America/Dawson_Creek | 128 ++-- library/tzdata/America/Denver | 582 +++++++++--------- library/tzdata/America/Detroit | 544 ++++++++--------- library/tzdata/America/Dominica | 12 +- library/tzdata/America/Edmonton | 568 +++++++++--------- library/tzdata/America/Eirunepe | 80 +-- library/tzdata/America/El_Salvador | 20 +- library/tzdata/America/Ensenada | 10 +- library/tzdata/America/Fort_Wayne | 10 +- library/tzdata/America/Fortaleza | 96 +-- library/tzdata/America/Glace_Bay | 546 ++++++++--------- library/tzdata/America/Godthab | 492 ++++++++-------- library/tzdata/America/Goose_Bay | 674 ++++++++++----------- library/tzdata/America/Grand_Turk | 498 ++++++++-------- library/tzdata/America/Grenada | 12 +- library/tzdata/America/Guadeloupe | 12 +- library/tzdata/America/Guatemala | 28 +- library/tzdata/America/Guayaquil | 14 +- library/tzdata/America/Guyana | 18 +- library/tzdata/America/Halifax | 722 +++++++++++------------ library/tzdata/America/Havana | 572 +++++++++--------- library/tzdata/America/Hermosillo | 42 +- library/tzdata/America/Indiana/Indianapolis | 468 +++++++-------- library/tzdata/America/Indiana/Knox | 570 +++++++++--------- library/tzdata/America/Indiana/Marengo | 472 +++++++-------- library/tzdata/America/Indiana/Petersburg | 494 ++++++++-------- library/tzdata/America/Indiana/Tell_City | 468 +++++++-------- library/tzdata/America/Indiana/Vevay | 426 +++++++------- library/tzdata/America/Indiana/Vincennes | 468 +++++++-------- library/tzdata/America/Indiana/Winamac | 480 +++++++-------- library/tzdata/America/Indianapolis | 10 +- library/tzdata/America/Inuvik | 498 ++++++++-------- library/tzdata/America/Iqaluit | 500 ++++++++-------- library/tzdata/America/Jamaica | 56 +- library/tzdata/America/Jujuy | 10 +- library/tzdata/America/Juneau | 550 +++++++++--------- library/tzdata/America/Kentucky/Louisville | 628 ++++++++++---------- library/tzdata/America/Kentucky/Monticello | 558 +++++++++--------- library/tzdata/America/Knox_IN | 10 +- library/tzdata/America/La_Paz | 16 +- library/tzdata/America/Lima | 32 +- library/tzdata/America/Los_Angeles | 634 ++++++++++---------- library/tzdata/America/Louisville | 10 +- library/tzdata/America/Maceio | 104 ++-- library/tzdata/America/Managua | 42 +- library/tzdata/America/Manaus | 78 +-- library/tzdata/America/Marigot | 10 +- library/tzdata/America/Martinique | 18 +- library/tzdata/America/Mazatlan | 444 +++++++------- library/tzdata/America/Mendoza | 10 +- library/tzdata/America/Menominee | 548 ++++++++--------- library/tzdata/America/Merida | 432 +++++++------- library/tzdata/America/Mexico_City | 456 +++++++-------- library/tzdata/America/Miquelon | 468 +++++++-------- library/tzdata/America/Moncton | 684 +++++++++++----------- library/tzdata/America/Monterrey | 436 +++++++------- library/tzdata/America/Montevideo | 522 ++++++++--------- library/tzdata/America/Montreal | 732 +++++++++++------------ library/tzdata/America/Montserrat | 12 +- library/tzdata/America/Nassau | 558 +++++++++--------- library/tzdata/America/New_York | 738 +++++++++++------------ library/tzdata/America/Nipigon | 528 ++++++++--------- library/tzdata/America/Nome | 552 +++++++++--------- library/tzdata/America/Noronha | 96 +-- library/tzdata/America/North_Dakota/Center | 558 +++++++++--------- library/tzdata/America/North_Dakota/New_Salem | 558 +++++++++--------- library/tzdata/America/Panama | 14 +- library/tzdata/America/Pangnirtung | 504 ++++++++-------- library/tzdata/America/Paramaribo | 20 +- library/tzdata/America/Phoenix | 34 +- library/tzdata/America/Port-au-Prince | 82 +-- library/tzdata/America/Port_of_Spain | 12 +- library/tzdata/America/Porto_Acre | 10 +- library/tzdata/America/Porto_Velho | 70 +-- library/tzdata/America/Puerto_Rico | 20 +- library/tzdata/America/Rainy_River | 528 ++++++++--------- library/tzdata/America/Rankin_Inlet | 496 ++++++++-------- library/tzdata/America/Recife | 96 +-- library/tzdata/America/Regina | 116 ++-- library/tzdata/America/Resolute | 311 ++++++++-- library/tzdata/America/Rio_Branco | 72 +-- library/tzdata/America/Rosario | 10 +- library/tzdata/America/Santarem | 72 +-- library/tzdata/America/Santiago | 582 +++++++++--------- library/tzdata/America/Santo_Domingo | 42 +- library/tzdata/America/Sao_Paulo | 516 ++++++++-------- library/tzdata/America/Scoresbysund | 492 ++++++++-------- library/tzdata/America/Shiprock | 10 +- library/tzdata/America/St_Barthelemy | 10 +- library/tzdata/America/St_Johns | 742 +++++++++++------------ library/tzdata/America/St_Kitts | 12 +- library/tzdata/America/St_Lucia | 14 +- library/tzdata/America/St_Thomas | 12 +- library/tzdata/America/St_Vincent | 14 +- library/tzdata/America/Swift_Current | 58 +- library/tzdata/America/Tegucigalpa | 24 +- library/tzdata/America/Thule | 448 +++++++------- library/tzdata/America/Thunder_Bay | 544 ++++++++--------- library/tzdata/America/Tijuana | 568 +++++++++--------- library/tzdata/America/Toronto | 730 +++++++++++------------ library/tzdata/America/Tortola | 12 +- library/tzdata/America/Vancouver | 640 ++++++++++---------- library/tzdata/America/Virgin | 10 +- library/tzdata/America/Whitehorse | 512 ++++++++-------- library/tzdata/America/Winnipeg | 632 ++++++++++---------- library/tzdata/America/Yakutat | 552 +++++++++--------- library/tzdata/America/Yellowknife | 504 ++++++++-------- library/tzdata/Antarctica/Casey | 12 +- library/tzdata/Antarctica/Davis | 16 +- library/tzdata/Antarctica/DumontDUrville | 16 +- library/tzdata/Antarctica/Mawson | 12 +- library/tzdata/Antarctica/McMurdo | 514 ++++++++-------- library/tzdata/Antarctica/Palmer | 508 ++++++++-------- library/tzdata/Antarctica/Rothera | 12 +- library/tzdata/Antarctica/South_Pole | 10 +- library/tzdata/Antarctica/Syowa | 12 +- library/tzdata/Antarctica/Vostok | 12 +- library/tzdata/Arctic/Longyearbyen | 10 +- library/tzdata/Asia/Aden | 12 +- library/tzdata/Asia/Almaty | 112 ++-- library/tzdata/Asia/Amman | 496 ++++++++-------- library/tzdata/Asia/Anadyr | 496 ++++++++-------- library/tzdata/Asia/Aqtau | 116 ++-- library/tzdata/Asia/Aqtobe | 114 ++-- library/tzdata/Asia/Ashgabat | 62 +- library/tzdata/Asia/Ashkhabad | 10 +- library/tzdata/Asia/Baghdad | 118 ++-- library/tzdata/Asia/Bahrain | 14 +- library/tzdata/Asia/Baku | 484 +++++++-------- library/tzdata/Asia/Bangkok | 14 +- library/tzdata/Asia/Beirut | 540 ++++++++--------- library/tzdata/Asia/Bishkek | 114 ++-- library/tzdata/Asia/Brunei | 14 +- library/tzdata/Asia/Calcutta | 10 +- library/tzdata/Asia/Choibalsan | 102 ++-- library/tzdata/Asia/Chongqing | 38 +- library/tzdata/Asia/Chungking | 10 +- library/tzdata/Asia/Colombo | 26 +- library/tzdata/Asia/Dacca | 10 +- library/tzdata/Asia/Damascus | 560 +++++++++--------- library/tzdata/Asia/Dhaka | 22 +- library/tzdata/Asia/Dili | 20 +- library/tzdata/Asia/Dubai | 12 +- library/tzdata/Asia/Dushanbe | 58 +- library/tzdata/Asia/Gaza | 550 +++++++++--------- library/tzdata/Asia/Harbin | 44 +- library/tzdata/Asia/Ho_Chi_Minh | 18 +- library/tzdata/Asia/Hong_Kong | 148 ++--- library/tzdata/Asia/Hovd | 102 ++-- library/tzdata/Asia/Irkutsk | 496 ++++++++-------- library/tzdata/Asia/Istanbul | 10 +- library/tzdata/Asia/Jakarta | 26 +- library/tzdata/Asia/Jayapura | 16 +- library/tzdata/Asia/Jerusalem | 296 +++++----- library/tzdata/Asia/Kabul | 14 +- library/tzdata/Asia/Kamchatka | 494 ++++++++-------- library/tzdata/Asia/Karachi | 28 +- library/tzdata/Asia/Kashgar | 40 +- library/tzdata/Asia/Kathmandu | 7 + library/tzdata/Asia/Katmandu | 12 +- library/tzdata/Asia/Kolkata | 20 +- library/tzdata/Asia/Krasnoyarsk | 494 ++++++++-------- library/tzdata/Asia/Kuala_Lumpur | 26 +- library/tzdata/Asia/Kuching | 48 +- library/tzdata/Asia/Kuwait | 12 +- library/tzdata/Asia/Macao | 10 +- library/tzdata/Asia/Macau | 92 +-- library/tzdata/Asia/Magadan | 494 ++++++++-------- library/tzdata/Asia/Makassar | 18 +- library/tzdata/Asia/Manila | 30 +- library/tzdata/Asia/Muscat | 12 +- library/tzdata/Asia/Nicosia | 514 ++++++++-------- library/tzdata/Asia/Novosibirsk | 496 ++++++++-------- library/tzdata/Asia/Omsk | 494 ++++++++-------- library/tzdata/Asia/Oral | 116 ++-- library/tzdata/Asia/Phnom_Penh | 18 +- library/tzdata/Asia/Pontianak | 26 +- library/tzdata/Asia/Pyongyang | 22 +- library/tzdata/Asia/Qatar | 14 +- library/tzdata/Asia/Qyzylorda | 116 ++-- library/tzdata/Asia/Rangoon | 18 +- library/tzdata/Asia/Riyadh | 12 +- library/tzdata/Asia/Saigon | 10 +- library/tzdata/Asia/Sakhalin | 498 ++++++++-------- library/tzdata/Asia/Samarkand | 64 +- library/tzdata/Asia/Seoul | 36 +- library/tzdata/Asia/Shanghai | 46 +- library/tzdata/Asia/Singapore | 28 +- library/tzdata/Asia/Taipei | 92 +-- library/tzdata/Asia/Tashkent | 64 +- library/tzdata/Asia/Tbilisi | 120 ++-- library/tzdata/Asia/Tehran | 210 +++---- library/tzdata/Asia/Tel_Aviv | 10 +- library/tzdata/Asia/Thimbu | 10 +- library/tzdata/Asia/Thimphu | 14 +- library/tzdata/Asia/Tokyo | 32 +- library/tzdata/Asia/Ujung_Pandang | 10 +- library/tzdata/Asia/Ulaanbaatar | 102 ++-- library/tzdata/Asia/Ulan_Bator | 10 +- library/tzdata/Asia/Urumqi | 38 +- library/tzdata/Asia/Vientiane | 18 +- library/tzdata/Asia/Vladivostok | 494 ++++++++-------- library/tzdata/Asia/Yakutsk | 494 ++++++++-------- library/tzdata/Asia/Yekaterinburg | 494 ++++++++-------- library/tzdata/Asia/Yerevan | 490 ++++++++-------- library/tzdata/Atlantic/Azores | 698 +++++++++++----------- library/tzdata/Atlantic/Bermuda | 518 ++++++++--------- library/tzdata/Atlantic/Canary | 496 ++++++++-------- library/tzdata/Atlantic/Cape_Verde | 18 +- library/tzdata/Atlantic/Faeroe | 10 +- library/tzdata/Atlantic/Faroe | 490 ++++++++-------- library/tzdata/Atlantic/Jan_Mayen | 10 +- library/tzdata/Atlantic/Madeira | 700 +++++++++++----------- library/tzdata/Atlantic/Reykjavik | 140 ++--- library/tzdata/Atlantic/South_Georgia | 12 +- library/tzdata/Atlantic/St_Helena | 14 +- library/tzdata/Atlantic/Stanley | 506 ++++++++-------- library/tzdata/Australia/ACT | 10 +- library/tzdata/Australia/Adelaide | 546 ++++++++--------- library/tzdata/Australia/Brisbane | 46 +- library/tzdata/Australia/Broken_Hill | 550 +++++++++--------- library/tzdata/Australia/Canberra | 10 +- library/tzdata/Australia/Currie | 546 ++++++++--------- library/tzdata/Australia/Darwin | 30 +- library/tzdata/Australia/Eucla | 50 +- library/tzdata/Australia/Hobart | 562 +++++++++--------- library/tzdata/Australia/LHI | 10 +- library/tzdata/Australia/Lindeman | 56 +- library/tzdata/Australia/Lord_Howe | 488 ++++++++-------- library/tzdata/Australia/Melbourne | 544 ++++++++--------- library/tzdata/Australia/NSW | 10 +- library/tzdata/Australia/North | 10 +- library/tzdata/Australia/Perth | 50 +- library/tzdata/Australia/Queensland | 10 +- library/tzdata/Australia/South | 10 +- library/tzdata/Australia/Sydney | 544 ++++++++--------- library/tzdata/Australia/Tasmania | 10 +- library/tzdata/Australia/Victoria | 10 +- library/tzdata/Australia/West | 10 +- library/tzdata/Australia/Yancowinna | 10 +- library/tzdata/Brazil/Acre | 10 +- library/tzdata/Brazil/DeNoronha | 10 +- library/tzdata/Brazil/East | 10 +- library/tzdata/Brazil/West | 10 +- library/tzdata/CET | 530 ++++++++--------- library/tzdata/CST6CDT | 556 +++++++++--------- library/tzdata/Canada/Atlantic | 10 +- library/tzdata/Canada/Central | 10 +- library/tzdata/Canada/East-Saskatchewan | 10 +- library/tzdata/Canada/Eastern | 10 +- library/tzdata/Canada/Mountain | 10 +- library/tzdata/Canada/Newfoundland | 10 +- library/tzdata/Canada/Pacific | 10 +- library/tzdata/Canada/Saskatchewan | 10 +- library/tzdata/Canada/Yukon | 10 +- library/tzdata/Chile/Continental | 10 +- library/tzdata/Chile/EasterIsland | 10 +- library/tzdata/Cuba | 10 +- library/tzdata/EET | 502 ++++++++-------- library/tzdata/EST | 10 +- library/tzdata/EST5EDT | 556 +++++++++--------- library/tzdata/Egypt | 10 +- library/tzdata/Eire | 10 +- library/tzdata/Etc/GMT | 10 +- library/tzdata/Etc/GMT+0 | 10 +- library/tzdata/Etc/GMT+1 | 10 +- library/tzdata/Etc/GMT+10 | 10 +- library/tzdata/Etc/GMT+11 | 10 +- library/tzdata/Etc/GMT+12 | 10 +- library/tzdata/Etc/GMT+2 | 10 +- library/tzdata/Etc/GMT+3 | 10 +- library/tzdata/Etc/GMT+4 | 10 +- library/tzdata/Etc/GMT+5 | 10 +- library/tzdata/Etc/GMT+6 | 10 +- library/tzdata/Etc/GMT+7 | 10 +- library/tzdata/Etc/GMT+8 | 10 +- library/tzdata/Etc/GMT+9 | 10 +- library/tzdata/Etc/GMT-0 | 10 +- library/tzdata/Etc/GMT-1 | 10 +- library/tzdata/Etc/GMT-10 | 10 +- library/tzdata/Etc/GMT-11 | 10 +- library/tzdata/Etc/GMT-12 | 10 +- library/tzdata/Etc/GMT-13 | 10 +- library/tzdata/Etc/GMT-14 | 10 +- library/tzdata/Etc/GMT-2 | 10 +- library/tzdata/Etc/GMT-3 | 10 +- library/tzdata/Etc/GMT-4 | 10 +- library/tzdata/Etc/GMT-5 | 10 +- library/tzdata/Etc/GMT-6 | 10 +- library/tzdata/Etc/GMT-7 | 10 +- library/tzdata/Etc/GMT-8 | 10 +- library/tzdata/Etc/GMT-9 | 10 +- library/tzdata/Etc/GMT0 | 10 +- library/tzdata/Etc/Greenwich | 10 +- library/tzdata/Etc/UCT | 10 +- library/tzdata/Etc/UTC | 10 +- library/tzdata/Etc/Universal | 10 +- library/tzdata/Etc/Zulu | 10 +- library/tzdata/Europe/Amsterdam | 620 ++++++++++---------- library/tzdata/Europe/Andorra | 474 +++++++-------- library/tzdata/Europe/Athens | 536 ++++++++--------- library/tzdata/Europe/Belfast | 10 +- library/tzdata/Europe/Belgrade | 500 ++++++++-------- library/tzdata/Europe/Berlin | 548 ++++++++--------- library/tzdata/Europe/Bratislava | 10 +- library/tzdata/Europe/Brussels | 632 ++++++++++---------- library/tzdata/Europe/Bucharest | 536 ++++++++--------- library/tzdata/Europe/Budapest | 568 +++++++++--------- library/tzdata/Europe/Chisinau | 544 ++++++++--------- library/tzdata/Europe/Copenhagen | 528 ++++++++--------- library/tzdata/Europe/Dublin | 718 +++++++++++------------ library/tzdata/Europe/Gibraltar | 656 ++++++++++----------- library/tzdata/Europe/Guernsey | 10 +- library/tzdata/Europe/Helsinki | 496 ++++++++-------- library/tzdata/Europe/Isle_of_Man | 10 +- library/tzdata/Europe/Istanbul | 606 +++++++++---------- library/tzdata/Europe/Jersey | 10 +- library/tzdata/Europe/Kaliningrad | 522 ++++++++--------- library/tzdata/Europe/Kiev | 502 ++++++++-------- library/tzdata/Europe/Lisbon | 702 +++++++++++----------- library/tzdata/Europe/Ljubljana | 10 +- library/tzdata/Europe/London | 744 ++++++++++++------------ library/tzdata/Europe/Luxembourg | 626 ++++++++++---------- library/tzdata/Europe/Madrid | 588 +++++++++---------- library/tzdata/Europe/Malta | 598 +++++++++---------- library/tzdata/Europe/Mariehamn | 10 +- library/tzdata/Europe/Minsk | 502 ++++++++-------- library/tzdata/Europe/Monaco | 630 ++++++++++---------- library/tzdata/Europe/Moscow | 520 ++++++++--------- library/tzdata/Europe/Nicosia | 10 +- library/tzdata/Europe/Oslo | 542 ++++++++--------- library/tzdata/Europe/Paris | 628 ++++++++++---------- library/tzdata/Europe/Podgorica | 10 +- library/tzdata/Europe/Prague | 544 ++++++++--------- library/tzdata/Europe/Riga | 516 ++++++++-------- library/tzdata/Europe/Rome | 602 +++++++++---------- library/tzdata/Europe/Samara | 498 ++++++++-------- library/tzdata/Europe/San_Marino | 10 +- library/tzdata/Europe/Sarajevo | 10 +- library/tzdata/Europe/Simferopol | 506 ++++++++-------- library/tzdata/Europe/Skopje | 10 +- library/tzdata/Europe/Sofia | 518 ++++++++--------- library/tzdata/Europe/Stockholm | 500 ++++++++-------- library/tzdata/Europe/Tallinn | 510 ++++++++-------- library/tzdata/Europe/Tirane | 526 ++++++++--------- library/tzdata/Europe/Tiraspol | 10 +- library/tzdata/Europe/Uzhgorod | 508 ++++++++-------- library/tzdata/Europe/Vaduz | 490 ++++++++-------- library/tzdata/Europe/Vatican | 10 +- library/tzdata/Europe/Vienna | 542 ++++++++--------- library/tzdata/Europe/Vilnius | 502 ++++++++-------- library/tzdata/Europe/Volgograd | 494 ++++++++-------- library/tzdata/Europe/Warsaw | 592 +++++++++---------- library/tzdata/Europe/Zagreb | 10 +- library/tzdata/Europe/Zaporozhye | 504 ++++++++-------- library/tzdata/Europe/Zurich | 502 ++++++++-------- library/tzdata/GB | 10 +- library/tzdata/GB-Eire | 10 +- library/tzdata/GMT | 10 +- library/tzdata/GMT+0 | 10 +- library/tzdata/GMT-0 | 10 +- library/tzdata/GMT0 | 10 +- library/tzdata/Greenwich | 10 +- library/tzdata/HST | 10 +- library/tzdata/Hongkong | 10 +- library/tzdata/Iceland | 10 +- library/tzdata/Indian/Antananarivo | 16 +- library/tzdata/Indian/Chagos | 14 +- library/tzdata/Indian/Christmas | 12 +- library/tzdata/Indian/Cocos | 12 +- library/tzdata/Indian/Comoro | 12 +- library/tzdata/Indian/Kerguelen | 12 +- library/tzdata/Indian/Mahe | 12 +- library/tzdata/Indian/Maldives | 14 +- library/tzdata/Indian/Mauritius | 382 ++++++------ library/tzdata/Indian/Mayotte | 12 +- library/tzdata/Indian/Reunion | 12 +- library/tzdata/Iran | 10 +- library/tzdata/Israel | 10 +- library/tzdata/Jamaica | 10 +- library/tzdata/Japan | 10 +- library/tzdata/Kwajalein | 10 +- library/tzdata/Libya | 10 +- library/tzdata/MET | 530 ++++++++--------- library/tzdata/MST | 10 +- library/tzdata/MST7MDT | 556 +++++++++--------- library/tzdata/Mexico/BajaNorte | 10 +- library/tzdata/Mexico/BajaSur | 10 +- library/tzdata/Mexico/General | 10 +- library/tzdata/NZ | 10 +- library/tzdata/NZ-CHAT | 10 +- library/tzdata/Navajo | 10 +- library/tzdata/PRC | 10 +- library/tzdata/PST8PDT | 556 +++++++++--------- library/tzdata/Pacific/Apia | 16 +- library/tzdata/Pacific/Auckland | 570 +++++++++--------- library/tzdata/Pacific/Chatham | 514 ++++++++-------- library/tzdata/Pacific/Easter | 550 +++++++++--------- library/tzdata/Pacific/Efate | 52 +- library/tzdata/Pacific/Enderbury | 16 +- library/tzdata/Pacific/Fakaofo | 12 +- library/tzdata/Pacific/Fiji | 20 +- library/tzdata/Pacific/Funafuti | 12 +- library/tzdata/Pacific/Galapagos | 14 +- library/tzdata/Pacific/Gambier | 12 +- library/tzdata/Pacific/Guadalcanal | 12 +- library/tzdata/Pacific/Guam | 16 +- library/tzdata/Pacific/Honolulu | 24 +- library/tzdata/Pacific/Johnston | 10 +- library/tzdata/Pacific/Kiritimati | 16 +- library/tzdata/Pacific/Kosrae | 16 +- library/tzdata/Pacific/Kwajalein | 16 +- library/tzdata/Pacific/Majuro | 14 +- library/tzdata/Pacific/Marquesas | 12 +- library/tzdata/Pacific/Midway | 20 +- library/tzdata/Pacific/Nauru | 18 +- library/tzdata/Pacific/Niue | 16 +- library/tzdata/Pacific/Norfolk | 14 +- library/tzdata/Pacific/Noumea | 24 +- library/tzdata/Pacific/Pago_Pago | 20 +- library/tzdata/Pacific/Palau | 12 +- library/tzdata/Pacific/Pitcairn | 14 +- library/tzdata/Pacific/Ponape | 12 +- library/tzdata/Pacific/Port_Moresby | 14 +- library/tzdata/Pacific/Rarotonga | 64 +- library/tzdata/Pacific/Saipan | 18 +- library/tzdata/Pacific/Samoa | 10 +- library/tzdata/Pacific/Tahiti | 12 +- library/tzdata/Pacific/Tarawa | 12 +- library/tzdata/Pacific/Tongatapu | 28 +- library/tzdata/Pacific/Truk | 12 +- library/tzdata/Pacific/Wake | 12 +- library/tzdata/Pacific/Wallis | 12 +- library/tzdata/Pacific/Yap | 10 +- library/tzdata/Poland | 10 +- library/tzdata/Portugal | 10 +- library/tzdata/ROC | 10 +- library/tzdata/ROK | 10 +- library/tzdata/Singapore | 10 +- library/tzdata/Turkey | 10 +- library/tzdata/UCT | 10 +- library/tzdata/US/Alaska | 10 +- library/tzdata/US/Aleutian | 10 +- library/tzdata/US/Arizona | 10 +- library/tzdata/US/Central | 10 +- library/tzdata/US/East-Indiana | 10 +- library/tzdata/US/Eastern | 10 +- library/tzdata/US/Hawaii | 10 +- library/tzdata/US/Indiana-Starke | 10 +- library/tzdata/US/Michigan | 10 +- library/tzdata/US/Mountain | 10 +- library/tzdata/US/Pacific | 10 +- library/tzdata/US/Pacific-New | 10 +- library/tzdata/US/Samoa | 10 +- library/tzdata/UTC | 10 +- library/tzdata/Universal | 10 +- library/tzdata/W-SU | 10 +- library/tzdata/WET | 502 ++++++++-------- library/tzdata/Zulu | 10 +- 560 files changed, 49075 insertions(+), 48700 deletions(-) create mode 100644 library/tzdata/Asia/Kathmandu diff --git a/ChangeLog b/ChangeLog index 1cc7b85..70812e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-04-09 Kevin B. Kenny + + * library/tzdata: Olson's tzdata2009e. + 2009-04-09 Don Porter * library/http/http.tcl: Backport http 2.7.3 from HEAD for diff --git a/library/tzdata/Africa/Abidjan b/library/tzdata/Africa/Abidjan index 4b4f5b2..151437a 100644 --- a/library/tzdata/Africa/Abidjan +++ b/library/tzdata/Africa/Abidjan @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Abidjan) { - {-9223372036854775808 -968 0 LMT} - {-1830383032 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Abidjan) { + {-9223372036854775808 -968 0 LMT} + {-1830383032 0 0 GMT} +} diff --git a/library/tzdata/Africa/Accra b/library/tzdata/Africa/Accra index faf58fb..d9ac8ba 100644 --- a/library/tzdata/Africa/Accra +++ b/library/tzdata/Africa/Accra @@ -1,20 +1,20 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Accra) { - {-9223372036854775808 -52 0 LMT} - {-1640995148 0 0 GMT} - {-1051920000 1200 1 GHST} - {-1041466800 0 0 GMT} - {-1020384000 1200 1 GHST} - {-1009930800 0 0 GMT} - {-988848000 1200 1 GHST} - {-978394800 0 0 GMT} - {-957312000 1200 1 GHST} - {-946858800 0 0 GMT} - {-925689600 1200 1 GHST} - {-915236400 0 0 GMT} - {-894153600 1200 1 GHST} - {-883700400 0 0 GMT} - {-862617600 1200 1 GHST} - {-852164400 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Accra) { + {-9223372036854775808 -52 0 LMT} + {-1640995148 0 0 GMT} + {-1051920000 1200 1 GHST} + {-1041466800 0 0 GMT} + {-1020384000 1200 1 GHST} + {-1009930800 0 0 GMT} + {-988848000 1200 1 GHST} + {-978394800 0 0 GMT} + {-957312000 1200 1 GHST} + {-946858800 0 0 GMT} + {-925689600 1200 1 GHST} + {-915236400 0 0 GMT} + {-894153600 1200 1 GHST} + {-883700400 0 0 GMT} + {-862617600 1200 1 GHST} + {-852164400 0 0 GMT} +} diff --git a/library/tzdata/Africa/Addis_Ababa b/library/tzdata/Africa/Addis_Ababa index 4b92483..1852794 100644 --- a/library/tzdata/Africa/Addis_Ababa +++ b/library/tzdata/Africa/Addis_Ababa @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Addis_Ababa) { - {-9223372036854775808 9288 0 LMT} - {-3155682888 9320 0 ADMT} - {-1062210920 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Addis_Ababa) { + {-9223372036854775808 9288 0 LMT} + {-3155682888 9320 0 ADMT} + {-1062210920 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Algiers b/library/tzdata/Africa/Algiers index fe4de22..061d82f 100644 --- a/library/tzdata/Africa/Algiers +++ b/library/tzdata/Africa/Algiers @@ -1,39 +1,39 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Algiers) { - {-9223372036854775808 732 0 LMT} - {-2486679072 561 0 PMT} - {-1855958961 0 0 WET} - {-1689814800 3600 1 WEST} - {-1680397200 0 0 WET} - {-1665363600 3600 1 WEST} - {-1648342800 0 0 WET} - {-1635123600 3600 1 WEST} - {-1616893200 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585443600 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552266000 0 0 WET} - {-1539997200 3600 1 WEST} - {-1531443600 0 0 WET} - {-956365200 3600 1 WEST} - {-950486400 0 0 WET} - {-942012000 3600 0 CET} - {-812502000 7200 1 CEST} - {-796262400 3600 0 CET} - {-781052400 7200 1 CEST} - {-766630800 3600 0 CET} - {-733280400 0 0 WET} - {-439430400 3600 0 CET} - {-212029200 0 0 WET} - {41468400 3600 1 WEST} - {54774000 0 0 WET} - {231724800 3600 1 WEST} - {246240000 3600 0 CET} - {259545600 7200 1 CEST} - {275274000 3600 0 CET} - {309740400 0 0 WET} - {325468800 3600 1 WEST} - {341802000 0 0 WET} - {357523200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Algiers) { + {-9223372036854775808 732 0 LMT} + {-2486679072 561 0 PMT} + {-1855958961 0 0 WET} + {-1689814800 3600 1 WEST} + {-1680397200 0 0 WET} + {-1665363600 3600 1 WEST} + {-1648342800 0 0 WET} + {-1635123600 3600 1 WEST} + {-1616893200 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585443600 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552266000 0 0 WET} + {-1539997200 3600 1 WEST} + {-1531443600 0 0 WET} + {-956365200 3600 1 WEST} + {-950486400 0 0 WET} + {-942012000 3600 0 CET} + {-812502000 7200 1 CEST} + {-796262400 3600 0 CET} + {-781052400 7200 1 CEST} + {-766630800 3600 0 CET} + {-733280400 0 0 WET} + {-439430400 3600 0 CET} + {-212029200 0 0 WET} + {41468400 3600 1 WEST} + {54774000 0 0 WET} + {231724800 3600 1 WEST} + {246240000 3600 0 CET} + {259545600 7200 1 CEST} + {275274000 3600 0 CET} + {309740400 0 0 WET} + {325468800 3600 1 WEST} + {341802000 0 0 WET} + {357523200 3600 0 CET} +} diff --git a/library/tzdata/Africa/Asmara b/library/tzdata/Africa/Asmara index 1f0f13e..ec623e8 100755 --- a/library/tzdata/Africa/Asmara +++ b/library/tzdata/Africa/Asmara @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Asmara) { - {-9223372036854775808 9332 0 LMT} - {-3155682932 9332 0 AMT} - {-2524530932 9320 0 ADMT} - {-1062210920 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Asmara) { + {-9223372036854775808 9332 0 LMT} + {-3155682932 9332 0 AMT} + {-2524530932 9320 0 ADMT} + {-1062210920 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Asmera b/library/tzdata/Africa/Asmera index 931c36d..66df9aa 100644 --- a/library/tzdata/Africa/Asmera +++ b/library/tzdata/Africa/Asmera @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Africa/Asmara)]} { - LoadTimeZoneFile Africa/Asmara -} -set TZData(:Africa/Asmera) $TZData(:Africa/Asmara) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Africa/Asmara)]} { + LoadTimeZoneFile Africa/Asmara +} +set TZData(:Africa/Asmera) $TZData(:Africa/Asmara) diff --git a/library/tzdata/Africa/Bamako b/library/tzdata/Africa/Bamako index 7ed62e0..77dab3f 100644 --- a/library/tzdata/Africa/Bamako +++ b/library/tzdata/Africa/Bamako @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Bamako) { - {-9223372036854775808 -1920 0 LMT} - {-1830382080 0 0 GMT} - {-1131235200 -3600 0 WAT} - {-300841200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Bamako) { + {-9223372036854775808 -1920 0 LMT} + {-1830382080 0 0 GMT} + {-1131235200 -3600 0 WAT} + {-300841200 0 0 GMT} +} diff --git a/library/tzdata/Africa/Bangui b/library/tzdata/Africa/Bangui index 94f5058..1bf5b6d 100644 --- a/library/tzdata/Africa/Bangui +++ b/library/tzdata/Africa/Bangui @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Bangui) { - {-9223372036854775808 4460 0 LMT} - {-1830388460 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Bangui) { + {-9223372036854775808 4460 0 LMT} + {-1830388460 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Banjul b/library/tzdata/Africa/Banjul index a7f0168..d602f14 100644 --- a/library/tzdata/Africa/Banjul +++ b/library/tzdata/Africa/Banjul @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Banjul) { - {-9223372036854775808 -3996 0 LMT} - {-1830380004 -3996 0 BMT} - {-1104533604 -3600 0 WAT} - {-189385200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Banjul) { + {-9223372036854775808 -3996 0 LMT} + {-1830380004 -3996 0 BMT} + {-1104533604 -3600 0 WAT} + {-189385200 0 0 GMT} +} diff --git a/library/tzdata/Africa/Bissau b/library/tzdata/Africa/Bissau index d51cb9f..cbd462b 100644 --- a/library/tzdata/Africa/Bissau +++ b/library/tzdata/Africa/Bissau @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Bissau) { - {-9223372036854775808 -3740 0 LMT} - {-1849388260 -3600 0 WAT} - {157770000 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Bissau) { + {-9223372036854775808 -3740 0 LMT} + {-1849388260 -3600 0 WAT} + {157770000 0 0 GMT} +} diff --git a/library/tzdata/Africa/Blantyre b/library/tzdata/Africa/Blantyre index 17b58f4..a8bcd01 100644 --- a/library/tzdata/Africa/Blantyre +++ b/library/tzdata/Africa/Blantyre @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Blantyre) { - {-9223372036854775808 8400 0 LMT} - {-2109291600 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Blantyre) { + {-9223372036854775808 8400 0 LMT} + {-2109291600 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Brazzaville b/library/tzdata/Africa/Brazzaville index b4e0923..14ad42c 100644 --- a/library/tzdata/Africa/Brazzaville +++ b/library/tzdata/Africa/Brazzaville @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Brazzaville) { - {-9223372036854775808 3668 0 LMT} - {-1830387668 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Brazzaville) { + {-9223372036854775808 3668 0 LMT} + {-1830387668 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Bujumbura b/library/tzdata/Africa/Bujumbura index c26d053..d9469a7 100644 --- a/library/tzdata/Africa/Bujumbura +++ b/library/tzdata/Africa/Bujumbura @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Bujumbura) { - {-9223372036854775808 7048 0 LMT} - {-2524528648 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Bujumbura) { + {-9223372036854775808 7048 0 LMT} + {-2524528648 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Cairo b/library/tzdata/Africa/Cairo index d812a44..ea42e6a 100644 --- a/library/tzdata/Africa/Cairo +++ b/library/tzdata/Africa/Cairo @@ -1,304 +1,304 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Cairo) { - {-9223372036854775808 7500 0 LMT} - {-2185409100 7200 0 EET} - {-929844000 10800 1 EEST} - {-923108400 7200 0 EET} - {-906170400 10800 1 EEST} - {-892868400 7200 0 EET} - {-875844000 10800 1 EEST} - {-857790000 7200 0 EET} - {-844308000 10800 1 EEST} - {-825822000 7200 0 EET} - {-812685600 10800 1 EEST} - {-794199600 7200 0 EET} - {-779853600 10800 1 EEST} - {-762663600 7200 0 EET} - {-399088800 10800 1 EEST} - {-386650800 7200 0 EET} - {-368330400 10800 1 EEST} - {-355114800 7200 0 EET} - {-336790800 10800 1 EEST} - {-323654400 7200 0 EET} - {-305168400 10800 1 EEST} - {-292032000 7200 0 EET} - {-273632400 10800 1 EEST} - {-260496000 7200 0 EET} - {-242096400 10800 1 EEST} - {-228960000 7200 0 EET} - {-210560400 10800 1 EEST} - {-197424000 7200 0 EET} - {-178938000 10800 1 EEST} - {-165801600 7200 0 EET} - {-147402000 10800 1 EEST} - {-134265600 7200 0 EET} - {-115866000 10800 1 EEST} - {-102643200 7200 0 EET} - {-84330000 10800 1 EEST} - {-71107200 7200 0 EET} - {-52707600 10800 1 EEST} - {-39484800 7200 0 EET} - {-21171600 10800 1 EEST} - {-7948800 7200 0 EET} - {10364400 10800 1 EEST} - {23587200 7200 0 EET} - {41900400 10800 1 EEST} - {55123200 7200 0 EET} - {73522800 10800 1 EEST} - {86745600 7200 0 EET} - {105058800 10800 1 EEST} - {118281600 7200 0 EET} - {136594800 10800 1 EEST} - {149817600 7200 0 EET} - {168130800 10800 1 EEST} - {181353600 7200 0 EET} - {199753200 10800 1 EEST} - {212976000 7200 0 EET} - {231289200 10800 1 EEST} - {244512000 7200 0 EET} - {262825200 10800 1 EEST} - {276048000 7200 0 EET} - {294361200 10800 1 EEST} - {307584000 7200 0 EET} - {325983600 10800 1 EEST} - {339206400 7200 0 EET} - {357519600 10800 1 EEST} - {370742400 7200 0 EET} - {396399600 10800 1 EEST} - {402278400 7200 0 EET} - {426812400 10800 1 EEST} - {433814400 7200 0 EET} - {452214000 10800 1 EEST} - {465436800 7200 0 EET} - {483750000 10800 1 EEST} - {496972800 7200 0 EET} - {515286000 10800 1 EEST} - {528508800 7200 0 EET} - {546822000 10800 1 EEST} - {560044800 7200 0 EET} - {578444400 10800 1 EEST} - {591667200 7200 0 EET} - {610412400 10800 1 EEST} - {623203200 7200 0 EET} - {641516400 10800 1 EEST} - {654739200 7200 0 EET} - {673052400 10800 1 EEST} - {686275200 7200 0 EET} - {704674800 10800 1 EEST} - {717897600 7200 0 EET} - {736210800 10800 1 EEST} - {749433600 7200 0 EET} - {767746800 10800 1 EEST} - {780969600 7200 0 EET} - {799020000 10800 1 EEST} - {812322000 7200 0 EET} - {830469600 10800 1 EEST} - {843771600 7200 0 EET} - {861919200 10800 1 EEST} - {875221200 7200 0 EET} - {893368800 10800 1 EEST} - {906670800 7200 0 EET} - {925423200 10800 1 EEST} - {938725200 7200 0 EET} - {956872800 10800 1 EEST} - {970174800 7200 0 EET} - {988322400 10800 1 EEST} - {1001624400 7200 0 EET} - {1019772000 10800 1 EEST} - {1033074000 7200 0 EET} - {1051221600 10800 1 EEST} - {1064523600 7200 0 EET} - {1083276000 10800 1 EEST} - {1096578000 7200 0 EET} - {1114725600 10800 1 EEST} - {1128027600 7200 0 EET} - {1146175200 10800 1 EEST} - {1158872400 7200 0 EET} - {1177624800 10800 1 EEST} - {1189112400 7200 0 EET} - {1209074400 10800 1 EEST} - {1219957200 7200 0 EET} - {1240524000 10800 1 EEST} - {1251406800 7200 0 EET} - {1272578400 10800 1 EEST} - {1282856400 7200 0 EET} - {1304028000 10800 1 EEST} - {1314306000 7200 0 EET} - {1335477600 10800 1 EEST} - {1346360400 7200 0 EET} - {1366927200 10800 1 EEST} - {1377810000 7200 0 EET} - {1398376800 10800 1 EEST} - {1409259600 7200 0 EET} - {1429826400 10800 1 EEST} - {1440709200 7200 0 EET} - {1461880800 10800 1 EEST} - {1472158800 7200 0 EET} - {1493330400 10800 1 EEST} - {1504213200 7200 0 EET} - {1524780000 10800 1 EEST} - {1535662800 7200 0 EET} - {1556229600 10800 1 EEST} - {1567112400 7200 0 EET} - {1587679200 10800 1 EEST} - {1598562000 7200 0 EET} - {1619733600 10800 1 EEST} - {1630011600 7200 0 EET} - {1651183200 10800 1 EEST} - {1661461200 7200 0 EET} - {1682632800 10800 1 EEST} - {1693515600 7200 0 EET} - {1714082400 10800 1 EEST} - {1724965200 7200 0 EET} - {1745532000 10800 1 EEST} - {1756414800 7200 0 EET} - {1776981600 10800 1 EEST} - {1787864400 7200 0 EET} - {1809036000 10800 1 EEST} - {1819314000 7200 0 EET} - {1840485600 10800 1 EEST} - {1851368400 7200 0 EET} - {1871935200 10800 1 EEST} - {1882818000 7200 0 EET} - {1903384800 10800 1 EEST} - {1914267600 7200 0 EET} - {1934834400 10800 1 EEST} - {1945717200 7200 0 EET} - {1966888800 10800 1 EEST} - {1977166800 7200 0 EET} - {1998338400 10800 1 EEST} - {2008616400 7200 0 EET} - {2029788000 10800 1 EEST} - {2040670800 7200 0 EET} - {2061237600 10800 1 EEST} - {2072120400 7200 0 EET} - {2092687200 10800 1 EEST} - {2103570000 7200 0 EET} - {2124136800 10800 1 EEST} - {2135019600 7200 0 EET} - {2156191200 10800 1 EEST} - {2166469200 7200 0 EET} - {2187640800 10800 1 EEST} - {2197918800 7200 0 EET} - {2219090400 10800 1 EEST} - {2229973200 7200 0 EET} - {2250540000 10800 1 EEST} - {2261422800 7200 0 EET} - {2281989600 10800 1 EEST} - {2292872400 7200 0 EET} - {2313439200 10800 1 EEST} - {2324322000 7200 0 EET} - {2345493600 10800 1 EEST} - {2355771600 7200 0 EET} - {2376943200 10800 1 EEST} - {2387826000 7200 0 EET} - {2408392800 10800 1 EEST} - {2419275600 7200 0 EET} - {2439842400 10800 1 EEST} - {2450725200 7200 0 EET} - {2471292000 10800 1 EEST} - {2482174800 7200 0 EET} - {2503346400 10800 1 EEST} - {2513624400 7200 0 EET} - {2534796000 10800 1 EEST} - {2545074000 7200 0 EET} - {2566245600 10800 1 EEST} - {2577128400 7200 0 EET} - {2597695200 10800 1 EEST} - {2608578000 7200 0 EET} - {2629144800 10800 1 EEST} - {2640027600 7200 0 EET} - {2660594400 10800 1 EEST} - {2671477200 7200 0 EET} - {2692648800 10800 1 EEST} - {2702926800 7200 0 EET} - {2724098400 10800 1 EEST} - {2734981200 7200 0 EET} - {2755548000 10800 1 EEST} - {2766430800 7200 0 EET} - {2786997600 10800 1 EEST} - {2797880400 7200 0 EET} - {2818447200 10800 1 EEST} - {2829330000 7200 0 EET} - {2850501600 10800 1 EEST} - {2860779600 7200 0 EET} - {2881951200 10800 1 EEST} - {2892229200 7200 0 EET} - {2913400800 10800 1 EEST} - {2924283600 7200 0 EET} - {2944850400 10800 1 EEST} - {2955733200 7200 0 EET} - {2976300000 10800 1 EEST} - {2987182800 7200 0 EET} - {3007749600 10800 1 EEST} - {3018632400 7200 0 EET} - {3039804000 10800 1 EEST} - {3050082000 7200 0 EET} - {3071253600 10800 1 EEST} - {3081531600 7200 0 EET} - {3102703200 10800 1 EEST} - {3113586000 7200 0 EET} - {3134152800 10800 1 EEST} - {3145035600 7200 0 EET} - {3165602400 10800 1 EEST} - {3176485200 7200 0 EET} - {3197052000 10800 1 EEST} - {3207934800 7200 0 EET} - {3229106400 10800 1 EEST} - {3239384400 7200 0 EET} - {3260556000 10800 1 EEST} - {3271438800 7200 0 EET} - {3292005600 10800 1 EEST} - {3302888400 7200 0 EET} - {3323455200 10800 1 EEST} - {3334338000 7200 0 EET} - {3354904800 10800 1 EEST} - {3365787600 7200 0 EET} - {3386959200 10800 1 EEST} - {3397237200 7200 0 EET} - {3418408800 10800 1 EEST} - {3428686800 7200 0 EET} - {3449858400 10800 1 EEST} - {3460741200 7200 0 EET} - {3481308000 10800 1 EEST} - {3492190800 7200 0 EET} - {3512757600 10800 1 EEST} - {3523640400 7200 0 EET} - {3544207200 10800 1 EEST} - {3555090000 7200 0 EET} - {3576261600 10800 1 EEST} - {3586539600 7200 0 EET} - {3607711200 10800 1 EEST} - {3618594000 7200 0 EET} - {3639160800 10800 1 EEST} - {3650043600 7200 0 EET} - {3670610400 10800 1 EEST} - {3681493200 7200 0 EET} - {3702060000 10800 1 EEST} - {3712942800 7200 0 EET} - {3734114400 10800 1 EEST} - {3744392400 7200 0 EET} - {3765564000 10800 1 EEST} - {3775842000 7200 0 EET} - {3797013600 10800 1 EEST} - {3807896400 7200 0 EET} - {3828463200 10800 1 EEST} - {3839346000 7200 0 EET} - {3859912800 10800 1 EEST} - {3870795600 7200 0 EET} - {3891362400 10800 1 EEST} - {3902245200 7200 0 EET} - {3923416800 10800 1 EEST} - {3933694800 7200 0 EET} - {3954866400 10800 1 EEST} - {3965144400 7200 0 EET} - {3986316000 10800 1 EEST} - {3997198800 7200 0 EET} - {4017765600 10800 1 EEST} - {4028648400 7200 0 EET} - {4049215200 10800 1 EEST} - {4060098000 7200 0 EET} - {4080664800 10800 1 EEST} - {4091547600 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Cairo) { + {-9223372036854775808 7500 0 LMT} + {-2185409100 7200 0 EET} + {-929844000 10800 1 EEST} + {-923108400 7200 0 EET} + {-906170400 10800 1 EEST} + {-892868400 7200 0 EET} + {-875844000 10800 1 EEST} + {-857790000 7200 0 EET} + {-844308000 10800 1 EEST} + {-825822000 7200 0 EET} + {-812685600 10800 1 EEST} + {-794199600 7200 0 EET} + {-779853600 10800 1 EEST} + {-762663600 7200 0 EET} + {-399088800 10800 1 EEST} + {-386650800 7200 0 EET} + {-368330400 10800 1 EEST} + {-355114800 7200 0 EET} + {-336790800 10800 1 EEST} + {-323654400 7200 0 EET} + {-305168400 10800 1 EEST} + {-292032000 7200 0 EET} + {-273632400 10800 1 EEST} + {-260496000 7200 0 EET} + {-242096400 10800 1 EEST} + {-228960000 7200 0 EET} + {-210560400 10800 1 EEST} + {-197424000 7200 0 EET} + {-178938000 10800 1 EEST} + {-165801600 7200 0 EET} + {-147402000 10800 1 EEST} + {-134265600 7200 0 EET} + {-115866000 10800 1 EEST} + {-102643200 7200 0 EET} + {-84330000 10800 1 EEST} + {-71107200 7200 0 EET} + {-52707600 10800 1 EEST} + {-39484800 7200 0 EET} + {-21171600 10800 1 EEST} + {-7948800 7200 0 EET} + {10364400 10800 1 EEST} + {23587200 7200 0 EET} + {41900400 10800 1 EEST} + {55123200 7200 0 EET} + {73522800 10800 1 EEST} + {86745600 7200 0 EET} + {105058800 10800 1 EEST} + {118281600 7200 0 EET} + {136594800 10800 1 EEST} + {149817600 7200 0 EET} + {168130800 10800 1 EEST} + {181353600 7200 0 EET} + {199753200 10800 1 EEST} + {212976000 7200 0 EET} + {231289200 10800 1 EEST} + {244512000 7200 0 EET} + {262825200 10800 1 EEST} + {276048000 7200 0 EET} + {294361200 10800 1 EEST} + {307584000 7200 0 EET} + {325983600 10800 1 EEST} + {339206400 7200 0 EET} + {357519600 10800 1 EEST} + {370742400 7200 0 EET} + {396399600 10800 1 EEST} + {402278400 7200 0 EET} + {426812400 10800 1 EEST} + {433814400 7200 0 EET} + {452214000 10800 1 EEST} + {465436800 7200 0 EET} + {483750000 10800 1 EEST} + {496972800 7200 0 EET} + {515286000 10800 1 EEST} + {528508800 7200 0 EET} + {546822000 10800 1 EEST} + {560044800 7200 0 EET} + {578444400 10800 1 EEST} + {591667200 7200 0 EET} + {610412400 10800 1 EEST} + {623203200 7200 0 EET} + {641516400 10800 1 EEST} + {654739200 7200 0 EET} + {673052400 10800 1 EEST} + {686275200 7200 0 EET} + {704674800 10800 1 EEST} + {717897600 7200 0 EET} + {736210800 10800 1 EEST} + {749433600 7200 0 EET} + {767746800 10800 1 EEST} + {780969600 7200 0 EET} + {799020000 10800 1 EEST} + {812322000 7200 0 EET} + {830469600 10800 1 EEST} + {843771600 7200 0 EET} + {861919200 10800 1 EEST} + {875221200 7200 0 EET} + {893368800 10800 1 EEST} + {906670800 7200 0 EET} + {925423200 10800 1 EEST} + {938725200 7200 0 EET} + {956872800 10800 1 EEST} + {970174800 7200 0 EET} + {988322400 10800 1 EEST} + {1001624400 7200 0 EET} + {1019772000 10800 1 EEST} + {1033074000 7200 0 EET} + {1051221600 10800 1 EEST} + {1064523600 7200 0 EET} + {1083276000 10800 1 EEST} + {1096578000 7200 0 EET} + {1114725600 10800 1 EEST} + {1128027600 7200 0 EET} + {1146175200 10800 1 EEST} + {1158872400 7200 0 EET} + {1177624800 10800 1 EEST} + {1189112400 7200 0 EET} + {1209074400 10800 1 EEST} + {1219957200 7200 0 EET} + {1240524000 10800 1 EEST} + {1251406800 7200 0 EET} + {1272578400 10800 1 EEST} + {1282856400 7200 0 EET} + {1304028000 10800 1 EEST} + {1314306000 7200 0 EET} + {1335477600 10800 1 EEST} + {1346360400 7200 0 EET} + {1366927200 10800 1 EEST} + {1377810000 7200 0 EET} + {1398376800 10800 1 EEST} + {1409259600 7200 0 EET} + {1429826400 10800 1 EEST} + {1440709200 7200 0 EET} + {1461880800 10800 1 EEST} + {1472158800 7200 0 EET} + {1493330400 10800 1 EEST} + {1504213200 7200 0 EET} + {1524780000 10800 1 EEST} + {1535662800 7200 0 EET} + {1556229600 10800 1 EEST} + {1567112400 7200 0 EET} + {1587679200 10800 1 EEST} + {1598562000 7200 0 EET} + {1619733600 10800 1 EEST} + {1630011600 7200 0 EET} + {1651183200 10800 1 EEST} + {1661461200 7200 0 EET} + {1682632800 10800 1 EEST} + {1693515600 7200 0 EET} + {1714082400 10800 1 EEST} + {1724965200 7200 0 EET} + {1745532000 10800 1 EEST} + {1756414800 7200 0 EET} + {1776981600 10800 1 EEST} + {1787864400 7200 0 EET} + {1809036000 10800 1 EEST} + {1819314000 7200 0 EET} + {1840485600 10800 1 EEST} + {1851368400 7200 0 EET} + {1871935200 10800 1 EEST} + {1882818000 7200 0 EET} + {1903384800 10800 1 EEST} + {1914267600 7200 0 EET} + {1934834400 10800 1 EEST} + {1945717200 7200 0 EET} + {1966888800 10800 1 EEST} + {1977166800 7200 0 EET} + {1998338400 10800 1 EEST} + {2008616400 7200 0 EET} + {2029788000 10800 1 EEST} + {2040670800 7200 0 EET} + {2061237600 10800 1 EEST} + {2072120400 7200 0 EET} + {2092687200 10800 1 EEST} + {2103570000 7200 0 EET} + {2124136800 10800 1 EEST} + {2135019600 7200 0 EET} + {2156191200 10800 1 EEST} + {2166469200 7200 0 EET} + {2187640800 10800 1 EEST} + {2197918800 7200 0 EET} + {2219090400 10800 1 EEST} + {2229973200 7200 0 EET} + {2250540000 10800 1 EEST} + {2261422800 7200 0 EET} + {2281989600 10800 1 EEST} + {2292872400 7200 0 EET} + {2313439200 10800 1 EEST} + {2324322000 7200 0 EET} + {2345493600 10800 1 EEST} + {2355771600 7200 0 EET} + {2376943200 10800 1 EEST} + {2387826000 7200 0 EET} + {2408392800 10800 1 EEST} + {2419275600 7200 0 EET} + {2439842400 10800 1 EEST} + {2450725200 7200 0 EET} + {2471292000 10800 1 EEST} + {2482174800 7200 0 EET} + {2503346400 10800 1 EEST} + {2513624400 7200 0 EET} + {2534796000 10800 1 EEST} + {2545074000 7200 0 EET} + {2566245600 10800 1 EEST} + {2577128400 7200 0 EET} + {2597695200 10800 1 EEST} + {2608578000 7200 0 EET} + {2629144800 10800 1 EEST} + {2640027600 7200 0 EET} + {2660594400 10800 1 EEST} + {2671477200 7200 0 EET} + {2692648800 10800 1 EEST} + {2702926800 7200 0 EET} + {2724098400 10800 1 EEST} + {2734981200 7200 0 EET} + {2755548000 10800 1 EEST} + {2766430800 7200 0 EET} + {2786997600 10800 1 EEST} + {2797880400 7200 0 EET} + {2818447200 10800 1 EEST} + {2829330000 7200 0 EET} + {2850501600 10800 1 EEST} + {2860779600 7200 0 EET} + {2881951200 10800 1 EEST} + {2892229200 7200 0 EET} + {2913400800 10800 1 EEST} + {2924283600 7200 0 EET} + {2944850400 10800 1 EEST} + {2955733200 7200 0 EET} + {2976300000 10800 1 EEST} + {2987182800 7200 0 EET} + {3007749600 10800 1 EEST} + {3018632400 7200 0 EET} + {3039804000 10800 1 EEST} + {3050082000 7200 0 EET} + {3071253600 10800 1 EEST} + {3081531600 7200 0 EET} + {3102703200 10800 1 EEST} + {3113586000 7200 0 EET} + {3134152800 10800 1 EEST} + {3145035600 7200 0 EET} + {3165602400 10800 1 EEST} + {3176485200 7200 0 EET} + {3197052000 10800 1 EEST} + {3207934800 7200 0 EET} + {3229106400 10800 1 EEST} + {3239384400 7200 0 EET} + {3260556000 10800 1 EEST} + {3271438800 7200 0 EET} + {3292005600 10800 1 EEST} + {3302888400 7200 0 EET} + {3323455200 10800 1 EEST} + {3334338000 7200 0 EET} + {3354904800 10800 1 EEST} + {3365787600 7200 0 EET} + {3386959200 10800 1 EEST} + {3397237200 7200 0 EET} + {3418408800 10800 1 EEST} + {3428686800 7200 0 EET} + {3449858400 10800 1 EEST} + {3460741200 7200 0 EET} + {3481308000 10800 1 EEST} + {3492190800 7200 0 EET} + {3512757600 10800 1 EEST} + {3523640400 7200 0 EET} + {3544207200 10800 1 EEST} + {3555090000 7200 0 EET} + {3576261600 10800 1 EEST} + {3586539600 7200 0 EET} + {3607711200 10800 1 EEST} + {3618594000 7200 0 EET} + {3639160800 10800 1 EEST} + {3650043600 7200 0 EET} + {3670610400 10800 1 EEST} + {3681493200 7200 0 EET} + {3702060000 10800 1 EEST} + {3712942800 7200 0 EET} + {3734114400 10800 1 EEST} + {3744392400 7200 0 EET} + {3765564000 10800 1 EEST} + {3775842000 7200 0 EET} + {3797013600 10800 1 EEST} + {3807896400 7200 0 EET} + {3828463200 10800 1 EEST} + {3839346000 7200 0 EET} + {3859912800 10800 1 EEST} + {3870795600 7200 0 EET} + {3891362400 10800 1 EEST} + {3902245200 7200 0 EET} + {3923416800 10800 1 EEST} + {3933694800 7200 0 EET} + {3954866400 10800 1 EEST} + {3965144400 7200 0 EET} + {3986316000 10800 1 EEST} + {3997198800 7200 0 EET} + {4017765600 10800 1 EEST} + {4028648400 7200 0 EET} + {4049215200 10800 1 EEST} + {4060098000 7200 0 EET} + {4080664800 10800 1 EEST} + {4091547600 7200 0 EET} +} diff --git a/library/tzdata/Africa/Casablanca b/library/tzdata/Africa/Casablanca index da64c44..c59ff9e 100644 --- a/library/tzdata/Africa/Casablanca +++ b/library/tzdata/Africa/Casablanca @@ -1,26 +1,28 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Casablanca) { - {-9223372036854775808 -1820 0 LMT} - {-1773012580 0 0 WET} - {-956361600 3600 1 WEST} - {-950490000 0 0 WET} - {-942019200 3600 1 WEST} - {-761187600 0 0 WET} - {-617241600 3600 1 WEST} - {-605149200 0 0 WET} - {-81432000 3600 1 WEST} - {-71110800 0 0 WET} - {141264000 3600 1 WEST} - {147222000 0 0 WET} - {199756800 3600 1 WEST} - {207702000 0 0 WET} - {231292800 3600 1 WEST} - {244249200 0 0 WET} - {265507200 3600 1 WEST} - {271033200 0 0 WET} - {448243200 3600 0 CET} - {504918000 0 0 WET} - {1212278400 3600 1 WEST} - {1220223600 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Casablanca) { + {-9223372036854775808 -1820 0 LMT} + {-1773012580 0 0 WET} + {-956361600 3600 1 WEST} + {-950490000 0 0 WET} + {-942019200 3600 1 WEST} + {-761187600 0 0 WET} + {-617241600 3600 1 WEST} + {-605149200 0 0 WET} + {-81432000 3600 1 WEST} + {-71110800 0 0 WET} + {141264000 3600 1 WEST} + {147222000 0 0 WET} + {199756800 3600 1 WEST} + {207702000 0 0 WET} + {231292800 3600 1 WEST} + {244249200 0 0 WET} + {265507200 3600 1 WEST} + {271033200 0 0 WET} + {448243200 3600 0 CET} + {504918000 0 0 WET} + {1212278400 3600 1 WEST} + {1220223600 0 0 WET} + {1243814400 3600 1 WEST} + {1250809200 0 0 WET} +} diff --git a/library/tzdata/Africa/Ceuta b/library/tzdata/Africa/Ceuta index 882c13d..dd5eea2 100644 --- a/library/tzdata/Africa/Ceuta +++ b/library/tzdata/Africa/Ceuta @@ -1,258 +1,258 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Ceuta) { - {-9223372036854775808 -1276 0 LMT} - {-2177451524 0 0 WET} - {-1630112400 3600 1 WEST} - {-1616810400 0 0 WET} - {-1451692800 0 0 WET} - {-1442451600 3600 1 WEST} - {-1427677200 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1293840000 0 0 WET} - {-81432000 3600 1 WEST} - {-71110800 0 0 WET} - {141264000 3600 1 WEST} - {147222000 0 0 WET} - {199756800 3600 1 WEST} - {207702000 0 0 WET} - {231292800 3600 1 WEST} - {244249200 0 0 WET} - {265507200 3600 1 WEST} - {271033200 0 0 WET} - {448243200 3600 0 CET} - {504918000 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Ceuta) { + {-9223372036854775808 -1276 0 LMT} + {-2177451524 0 0 WET} + {-1630112400 3600 1 WEST} + {-1616810400 0 0 WET} + {-1451692800 0 0 WET} + {-1442451600 3600 1 WEST} + {-1427677200 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1293840000 0 0 WET} + {-81432000 3600 1 WEST} + {-71110800 0 0 WET} + {141264000 3600 1 WEST} + {147222000 0 0 WET} + {199756800 3600 1 WEST} + {207702000 0 0 WET} + {231292800 3600 1 WEST} + {244249200 0 0 WET} + {265507200 3600 1 WEST} + {271033200 0 0 WET} + {448243200 3600 0 CET} + {504918000 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Africa/Conakry b/library/tzdata/Africa/Conakry index d17ce4b..b9a7982 100644 --- a/library/tzdata/Africa/Conakry +++ b/library/tzdata/Africa/Conakry @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Conakry) { - {-9223372036854775808 -3292 0 LMT} - {-1830380708 0 0 GMT} - {-1131235200 -3600 0 WAT} - {-315615600 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Conakry) { + {-9223372036854775808 -3292 0 LMT} + {-1830380708 0 0 GMT} + {-1131235200 -3600 0 WAT} + {-315615600 0 0 GMT} +} diff --git a/library/tzdata/Africa/Dakar b/library/tzdata/Africa/Dakar index 487dc62..4b10a52 100644 --- a/library/tzdata/Africa/Dakar +++ b/library/tzdata/Africa/Dakar @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Dakar) { - {-9223372036854775808 -4184 0 LMT} - {-1830379816 -3600 0 WAT} - {-902098800 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Dakar) { + {-9223372036854775808 -4184 0 LMT} + {-1830379816 -3600 0 WAT} + {-902098800 0 0 GMT} +} diff --git a/library/tzdata/Africa/Dar_es_Salaam b/library/tzdata/Africa/Dar_es_Salaam index e427b9c..e65ce66 100644 --- a/library/tzdata/Africa/Dar_es_Salaam +++ b/library/tzdata/Africa/Dar_es_Salaam @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Dar_es_Salaam) { - {-9223372036854775808 9428 0 LMT} - {-1230777428 10800 0 EAT} - {-694321200 9885 0 BEAUT} - {-284006685 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Dar_es_Salaam) { + {-9223372036854775808 9428 0 LMT} + {-1230777428 10800 0 EAT} + {-694321200 9885 0 BEAUT} + {-284006685 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Djibouti b/library/tzdata/Africa/Djibouti index 0ec510c..cf1aaf9 100644 --- a/library/tzdata/Africa/Djibouti +++ b/library/tzdata/Africa/Djibouti @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Djibouti) { - {-9223372036854775808 10356 0 LMT} - {-1846291956 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Djibouti) { + {-9223372036854775808 10356 0 LMT} + {-1846291956 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Douala b/library/tzdata/Africa/Douala index 301a530..44f479e 100644 --- a/library/tzdata/Africa/Douala +++ b/library/tzdata/Africa/Douala @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Douala) { - {-9223372036854775808 2328 0 LMT} - {-1830386328 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Douala) { + {-9223372036854775808 2328 0 LMT} + {-1830386328 3600 0 WAT} +} diff --git a/library/tzdata/Africa/El_Aaiun b/library/tzdata/Africa/El_Aaiun index a8b9d34..8fd7bcd 100644 --- a/library/tzdata/Africa/El_Aaiun +++ b/library/tzdata/Africa/El_Aaiun @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/El_Aaiun) { - {-9223372036854775808 -3168 0 LMT} - {-1136070432 -3600 0 WAT} - {198291600 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/El_Aaiun) { + {-9223372036854775808 -3168 0 LMT} + {-1136070432 -3600 0 WAT} + {198291600 0 0 WET} +} diff --git a/library/tzdata/Africa/Freetown b/library/tzdata/Africa/Freetown index c3f2d2e..6c74476 100644 --- a/library/tzdata/Africa/Freetown +++ b/library/tzdata/Africa/Freetown @@ -1,36 +1,36 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Freetown) { - {-9223372036854775808 -3180 0 LMT} - {-2776979220 -3180 0 FMT} - {-1785712020 -3600 0 WAT} - {-1091487600 -1200 1 SLST} - {-1080949200 -3600 0 WAT} - {-1059865200 -1200 1 SLST} - {-1049326800 -3600 0 WAT} - {-1028329200 -1200 1 SLST} - {-1017790800 -3600 0 WAT} - {-996793200 -1200 1 SLST} - {-986254800 -3600 0 WAT} - {-965257200 -1200 1 SLST} - {-954718800 -3600 0 WAT} - {-933634800 -1200 1 SLST} - {-923096400 -3600 0 WAT} - {-902098800 -1200 1 SLST} - {-891560400 -3600 0 WAT} - {-870562800 -1200 1 SLST} - {-860024400 -3600 0 WAT} - {-410223600 0 0 WAT} - {-397180800 3600 1 SLST} - {-389235600 0 0 GMT} - {-365644800 3600 1 SLST} - {-357699600 0 0 GMT} - {-334108800 3600 1 SLST} - {-326163600 0 0 GMT} - {-302486400 3600 1 SLST} - {-294541200 0 0 GMT} - {-270950400 3600 1 SLST} - {-263005200 0 0 GMT} - {-239414400 3600 1 SLST} - {-231469200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Freetown) { + {-9223372036854775808 -3180 0 LMT} + {-2776979220 -3180 0 FMT} + {-1785712020 -3600 0 WAT} + {-1091487600 -1200 1 SLST} + {-1080949200 -3600 0 WAT} + {-1059865200 -1200 1 SLST} + {-1049326800 -3600 0 WAT} + {-1028329200 -1200 1 SLST} + {-1017790800 -3600 0 WAT} + {-996793200 -1200 1 SLST} + {-986254800 -3600 0 WAT} + {-965257200 -1200 1 SLST} + {-954718800 -3600 0 WAT} + {-933634800 -1200 1 SLST} + {-923096400 -3600 0 WAT} + {-902098800 -1200 1 SLST} + {-891560400 -3600 0 WAT} + {-870562800 -1200 1 SLST} + {-860024400 -3600 0 WAT} + {-410223600 0 0 WAT} + {-397180800 3600 1 SLST} + {-389235600 0 0 GMT} + {-365644800 3600 1 SLST} + {-357699600 0 0 GMT} + {-334108800 3600 1 SLST} + {-326163600 0 0 GMT} + {-302486400 3600 1 SLST} + {-294541200 0 0 GMT} + {-270950400 3600 1 SLST} + {-263005200 0 0 GMT} + {-239414400 3600 1 SLST} + {-231469200 0 0 GMT} +} diff --git a/library/tzdata/Africa/Gaborone b/library/tzdata/Africa/Gaborone index 7753ba0..66f1338 100644 --- a/library/tzdata/Africa/Gaborone +++ b/library/tzdata/Africa/Gaborone @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Gaborone) { - {-9223372036854775808 6220 0 LMT} - {-2682294220 7200 0 CAT} - {-829526400 10800 1 CAST} - {-813805200 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Gaborone) { + {-9223372036854775808 6220 0 LMT} + {-2682294220 7200 0 CAT} + {-829526400 10800 1 CAST} + {-813805200 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Harare b/library/tzdata/Africa/Harare index 7482b15..bf7a703 100644 --- a/library/tzdata/Africa/Harare +++ b/library/tzdata/Africa/Harare @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Harare) { - {-9223372036854775808 7452 0 LMT} - {-2109290652 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Harare) { + {-9223372036854775808 7452 0 LMT} + {-2109290652 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Johannesburg b/library/tzdata/Africa/Johannesburg index b9a8348..0876cde 100644 --- a/library/tzdata/Africa/Johannesburg +++ b/library/tzdata/Africa/Johannesburg @@ -1,11 +1,11 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Johannesburg) { - {-9223372036854775808 6720 0 LMT} - {-2458173120 5400 0 SAST} - {-2109288600 7200 0 SAST} - {-860976000 10800 1 SAST} - {-845254800 7200 0 SAST} - {-829526400 10800 1 SAST} - {-813805200 7200 0 SAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Johannesburg) { + {-9223372036854775808 6720 0 LMT} + {-2458173120 5400 0 SAST} + {-2109288600 7200 0 SAST} + {-860976000 10800 1 SAST} + {-845254800 7200 0 SAST} + {-829526400 10800 1 SAST} + {-813805200 7200 0 SAST} +} diff --git a/library/tzdata/Africa/Kampala b/library/tzdata/Africa/Kampala index ab3f085..0166e6d 100644 --- a/library/tzdata/Africa/Kampala +++ b/library/tzdata/Africa/Kampala @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Kampala) { - {-9223372036854775808 7780 0 LMT} - {-1309745380 10800 0 EAT} - {-1262314800 9000 0 BEAT} - {-694319400 9885 0 BEAUT} - {-410237085 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Kampala) { + {-9223372036854775808 7780 0 LMT} + {-1309745380 10800 0 EAT} + {-1262314800 9000 0 BEAT} + {-694319400 9885 0 BEAUT} + {-410237085 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Khartoum b/library/tzdata/Africa/Khartoum index dfcac82..fdcd884 100644 --- a/library/tzdata/Africa/Khartoum +++ b/library/tzdata/Africa/Khartoum @@ -1,39 +1,39 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Khartoum) { - {-9223372036854775808 7808 0 LMT} - {-1230775808 7200 0 CAT} - {10360800 10800 1 CAST} - {24786000 7200 0 CAT} - {41810400 10800 1 CAST} - {56322000 7200 0 CAT} - {73432800 10800 1 CAST} - {87944400 7200 0 CAT} - {104882400 10800 1 CAST} - {119480400 7200 0 CAT} - {136332000 10800 1 CAST} - {151016400 7200 0 CAT} - {167781600 10800 1 CAST} - {182552400 7200 0 CAT} - {199231200 10800 1 CAST} - {214174800 7200 0 CAT} - {230680800 10800 1 CAST} - {245710800 7200 0 CAT} - {262735200 10800 1 CAST} - {277246800 7200 0 CAT} - {294184800 10800 1 CAST} - {308782800 7200 0 CAT} - {325634400 10800 1 CAST} - {340405200 7200 0 CAT} - {357084000 10800 1 CAST} - {371941200 7200 0 CAT} - {388533600 10800 1 CAST} - {403477200 7200 0 CAT} - {419983200 10800 1 CAST} - {435013200 7200 0 CAT} - {452037600 10800 1 CAST} - {466635600 7200 0 CAT} - {483487200 10800 1 CAST} - {498171600 7200 0 CAT} - {947930400 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Khartoum) { + {-9223372036854775808 7808 0 LMT} + {-1230775808 7200 0 CAT} + {10360800 10800 1 CAST} + {24786000 7200 0 CAT} + {41810400 10800 1 CAST} + {56322000 7200 0 CAT} + {73432800 10800 1 CAST} + {87944400 7200 0 CAT} + {104882400 10800 1 CAST} + {119480400 7200 0 CAT} + {136332000 10800 1 CAST} + {151016400 7200 0 CAT} + {167781600 10800 1 CAST} + {182552400 7200 0 CAT} + {199231200 10800 1 CAST} + {214174800 7200 0 CAT} + {230680800 10800 1 CAST} + {245710800 7200 0 CAT} + {262735200 10800 1 CAST} + {277246800 7200 0 CAT} + {294184800 10800 1 CAST} + {308782800 7200 0 CAT} + {325634400 10800 1 CAST} + {340405200 7200 0 CAT} + {357084000 10800 1 CAST} + {371941200 7200 0 CAT} + {388533600 10800 1 CAST} + {403477200 7200 0 CAT} + {419983200 10800 1 CAST} + {435013200 7200 0 CAT} + {452037600 10800 1 CAST} + {466635600 7200 0 CAT} + {483487200 10800 1 CAST} + {498171600 7200 0 CAT} + {947930400 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Kigali b/library/tzdata/Africa/Kigali index f723bcd..441e5c4 100644 --- a/library/tzdata/Africa/Kigali +++ b/library/tzdata/Africa/Kigali @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Kigali) { - {-9223372036854775808 7216 0 LMT} - {-1091498416 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Kigali) { + {-9223372036854775808 7216 0 LMT} + {-1091498416 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Kinshasa b/library/tzdata/Africa/Kinshasa index 050c1fa..4651394 100644 --- a/library/tzdata/Africa/Kinshasa +++ b/library/tzdata/Africa/Kinshasa @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Kinshasa) { - {-9223372036854775808 3672 0 LMT} - {-2276643672 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Kinshasa) { + {-9223372036854775808 3672 0 LMT} + {-2276643672 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Lagos b/library/tzdata/Africa/Lagos index 079572f..4617e46 100644 --- a/library/tzdata/Africa/Lagos +++ b/library/tzdata/Africa/Lagos @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Lagos) { - {-9223372036854775808 816 0 LMT} - {-1588464816 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Lagos) { + {-9223372036854775808 816 0 LMT} + {-1588464816 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Libreville b/library/tzdata/Africa/Libreville index 8427551..fc3934b 100644 --- a/library/tzdata/Africa/Libreville +++ b/library/tzdata/Africa/Libreville @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Libreville) { - {-9223372036854775808 2268 0 LMT} - {-1830386268 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Libreville) { + {-9223372036854775808 2268 0 LMT} + {-1830386268 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Lome b/library/tzdata/Africa/Lome index 606625c..d2ccc84 100644 --- a/library/tzdata/Africa/Lome +++ b/library/tzdata/Africa/Lome @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Lome) { - {-9223372036854775808 292 0 LMT} - {-2429827492 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Lome) { + {-9223372036854775808 292 0 LMT} + {-2429827492 0 0 GMT} +} diff --git a/library/tzdata/Africa/Luanda b/library/tzdata/Africa/Luanda index cd1b29e..8cfd5ed 100644 --- a/library/tzdata/Africa/Luanda +++ b/library/tzdata/Africa/Luanda @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Luanda) { - {-9223372036854775808 3176 0 LMT} - {-2461452776 3124 0 AOT} - {-1849395124 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Luanda) { + {-9223372036854775808 3176 0 LMT} + {-2461452776 3124 0 AOT} + {-1849395124 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Lubumbashi b/library/tzdata/Africa/Lubumbashi index bd67221..c49b032 100644 --- a/library/tzdata/Africa/Lubumbashi +++ b/library/tzdata/Africa/Lubumbashi @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Lubumbashi) { - {-9223372036854775808 6592 0 LMT} - {-2276646592 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Lubumbashi) { + {-9223372036854775808 6592 0 LMT} + {-2276646592 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Lusaka b/library/tzdata/Africa/Lusaka index ed9c30d..cf847f0 100644 --- a/library/tzdata/Africa/Lusaka +++ b/library/tzdata/Africa/Lusaka @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Lusaka) { - {-9223372036854775808 6788 0 LMT} - {-2109289988 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Lusaka) { + {-9223372036854775808 6788 0 LMT} + {-2109289988 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Malabo b/library/tzdata/Africa/Malabo index bec0524..6561b4b 100644 --- a/library/tzdata/Africa/Malabo +++ b/library/tzdata/Africa/Malabo @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Malabo) { - {-9223372036854775808 2108 0 LMT} - {-1830386108 0 0 GMT} - {-190857600 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Malabo) { + {-9223372036854775808 2108 0 LMT} + {-1830386108 0 0 GMT} + {-190857600 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Maputo b/library/tzdata/Africa/Maputo index 6ee208c..23e7413 100644 --- a/library/tzdata/Africa/Maputo +++ b/library/tzdata/Africa/Maputo @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Maputo) { - {-9223372036854775808 7820 0 LMT} - {-2109291020 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Maputo) { + {-9223372036854775808 7820 0 LMT} + {-2109291020 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Maseru b/library/tzdata/Africa/Maseru index 21ca968..3ab0e6f 100644 --- a/library/tzdata/Africa/Maseru +++ b/library/tzdata/Africa/Maseru @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Maseru) { - {-9223372036854775808 6600 0 LMT} - {-2109289800 7200 0 SAST} - {-829526400 10800 1 SAST} - {-813805200 7200 0 SAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Maseru) { + {-9223372036854775808 6600 0 LMT} + {-2109289800 7200 0 SAST} + {-829526400 10800 1 SAST} + {-813805200 7200 0 SAST} +} diff --git a/library/tzdata/Africa/Mbabane b/library/tzdata/Africa/Mbabane index 4d174d5..992d021 100644 --- a/library/tzdata/Africa/Mbabane +++ b/library/tzdata/Africa/Mbabane @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Mbabane) { - {-9223372036854775808 7464 0 LMT} - {-2109290664 7200 0 SAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Mbabane) { + {-9223372036854775808 7464 0 LMT} + {-2109290664 7200 0 SAST} +} diff --git a/library/tzdata/Africa/Mogadishu b/library/tzdata/Africa/Mogadishu index 570d3ea..170124a 100644 --- a/library/tzdata/Africa/Mogadishu +++ b/library/tzdata/Africa/Mogadishu @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Mogadishu) { - {-9223372036854775808 10888 0 LMT} - {-2403572488 10800 0 EAT} - {-1230778800 9000 0 BEAT} - {-410236200 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Mogadishu) { + {-9223372036854775808 10888 0 LMT} + {-2403572488 10800 0 EAT} + {-1230778800 9000 0 BEAT} + {-410236200 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Monrovia b/library/tzdata/Africa/Monrovia index 1cfff58..31140ce 100644 --- a/library/tzdata/Africa/Monrovia +++ b/library/tzdata/Africa/Monrovia @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Monrovia) { - {-9223372036854775808 -2588 0 LMT} - {-2776979812 -2588 0 MMT} - {-1604359012 -2670 0 LRT} - {73529070 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Monrovia) { + {-9223372036854775808 -2588 0 LMT} + {-2776979812 -2588 0 MMT} + {-1604359012 -2670 0 LRT} + {73529070 0 0 GMT} +} diff --git a/library/tzdata/Africa/Nairobi b/library/tzdata/Africa/Nairobi index 99b0d70..2e7925c 100644 --- a/library/tzdata/Africa/Nairobi +++ b/library/tzdata/Africa/Nairobi @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Nairobi) { - {-9223372036854775808 8836 0 LMT} - {-1309746436 10800 0 EAT} - {-1262314800 9000 0 BEAT} - {-946780200 9885 0 BEAUT} - {-315629085 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Nairobi) { + {-9223372036854775808 8836 0 LMT} + {-1309746436 10800 0 EAT} + {-1262314800 9000 0 BEAT} + {-946780200 9885 0 BEAUT} + {-315629085 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Ndjamena b/library/tzdata/Africa/Ndjamena index af4daaa..75b76b8 100644 --- a/library/tzdata/Africa/Ndjamena +++ b/library/tzdata/Africa/Ndjamena @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Ndjamena) { - {-9223372036854775808 3612 0 LMT} - {-1830387612 3600 0 WAT} - {308703600 7200 1 WAST} - {321314400 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Ndjamena) { + {-9223372036854775808 3612 0 LMT} + {-1830387612 3600 0 WAT} + {308703600 7200 1 WAST} + {321314400 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Niamey b/library/tzdata/Africa/Niamey index 40ded06b..b76dfcd 100644 --- a/library/tzdata/Africa/Niamey +++ b/library/tzdata/Africa/Niamey @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Niamey) { - {-9223372036854775808 508 0 LMT} - {-1830384508 -3600 0 WAT} - {-1131231600 0 0 GMT} - {-315619200 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Niamey) { + {-9223372036854775808 508 0 LMT} + {-1830384508 -3600 0 WAT} + {-1131231600 0 0 GMT} + {-315619200 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Nouakchott b/library/tzdata/Africa/Nouakchott index f7369d0..f09cd06 100644 --- a/library/tzdata/Africa/Nouakchott +++ b/library/tzdata/Africa/Nouakchott @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Nouakchott) { - {-9223372036854775808 -3828 0 LMT} - {-1830380172 0 0 GMT} - {-1131235200 -3600 0 WAT} - {-286930800 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Nouakchott) { + {-9223372036854775808 -3828 0 LMT} + {-1830380172 0 0 GMT} + {-1131235200 -3600 0 WAT} + {-286930800 0 0 GMT} +} diff --git a/library/tzdata/Africa/Ouagadougou b/library/tzdata/Africa/Ouagadougou index 88a7145..5c96c27 100644 --- a/library/tzdata/Africa/Ouagadougou +++ b/library/tzdata/Africa/Ouagadougou @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Ouagadougou) { - {-9223372036854775808 -364 0 LMT} - {-1830383636 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Ouagadougou) { + {-9223372036854775808 -364 0 LMT} + {-1830383636 0 0 GMT} +} diff --git a/library/tzdata/Africa/Porto-Novo b/library/tzdata/Africa/Porto-Novo index b89cf1b..5f1ab75 100644 --- a/library/tzdata/Africa/Porto-Novo +++ b/library/tzdata/Africa/Porto-Novo @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Porto-Novo) { - {-9223372036854775808 628 0 LMT} - {-1830384628 0 0 GMT} - {-1131235200 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Porto-Novo) { + {-9223372036854775808 628 0 LMT} + {-1830384628 0 0 GMT} + {-1131235200 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Sao_Tome b/library/tzdata/Africa/Sao_Tome index ab1590d..ebd2519 100644 --- a/library/tzdata/Africa/Sao_Tome +++ b/library/tzdata/Africa/Sao_Tome @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Sao_Tome) { - {-9223372036854775808 1616 0 LMT} - {-2713912016 -2192 0 LMT} - {-1830381808 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Sao_Tome) { + {-9223372036854775808 1616 0 LMT} + {-2713912016 -2192 0 LMT} + {-1830381808 0 0 GMT} +} diff --git a/library/tzdata/Africa/Timbuktu b/library/tzdata/Africa/Timbuktu index 8057eed..cb069ef 100644 --- a/library/tzdata/Africa/Timbuktu +++ b/library/tzdata/Africa/Timbuktu @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Africa/Bamako)]} { - LoadTimeZoneFile Africa/Bamako -} -set TZData(:Africa/Timbuktu) $TZData(:Africa/Bamako) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Africa/Bamako)]} { + LoadTimeZoneFile Africa/Bamako +} +set TZData(:Africa/Timbuktu) $TZData(:Africa/Bamako) diff --git a/library/tzdata/Africa/Tripoli b/library/tzdata/Africa/Tripoli index e993249..2e22ad3 100644 --- a/library/tzdata/Africa/Tripoli +++ b/library/tzdata/Africa/Tripoli @@ -1,31 +1,31 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Tripoli) { - {-9223372036854775808 3164 0 LMT} - {-1577926364 3600 0 CET} - {-574902000 7200 1 CEST} - {-512175600 7200 1 CEST} - {-449888400 7200 1 CEST} - {-347158800 7200 0 EET} - {378684000 3600 0 CET} - {386463600 7200 1 CEST} - {402271200 3600 0 CET} - {417999600 7200 1 CEST} - {433807200 3600 0 CET} - {449622000 7200 1 CEST} - {465429600 3600 0 CET} - {481590000 7200 1 CEST} - {496965600 3600 0 CET} - {512953200 7200 1 CEST} - {528674400 3600 0 CET} - {544230000 7200 1 CEST} - {560037600 3600 0 CET} - {575852400 7200 1 CEST} - {591660000 3600 0 CET} - {607388400 7200 1 CEST} - {623196000 3600 0 CET} - {641775600 7200 0 EET} - {844034400 3600 0 CET} - {860108400 7200 1 CEST} - {875916000 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Tripoli) { + {-9223372036854775808 3164 0 LMT} + {-1577926364 3600 0 CET} + {-574902000 7200 1 CEST} + {-512175600 7200 1 CEST} + {-449888400 7200 1 CEST} + {-347158800 7200 0 EET} + {378684000 3600 0 CET} + {386463600 7200 1 CEST} + {402271200 3600 0 CET} + {417999600 7200 1 CEST} + {433807200 3600 0 CET} + {449622000 7200 1 CEST} + {465429600 3600 0 CET} + {481590000 7200 1 CEST} + {496965600 3600 0 CET} + {512953200 7200 1 CEST} + {528674400 3600 0 CET} + {544230000 7200 1 CEST} + {560037600 3600 0 CET} + {575852400 7200 1 CEST} + {591660000 3600 0 CET} + {607388400 7200 1 CEST} + {623196000 3600 0 CET} + {641775600 7200 0 EET} + {844034400 3600 0 CET} + {860108400 7200 1 CEST} + {875916000 7200 0 EET} +} diff --git a/library/tzdata/Africa/Tunis b/library/tzdata/Africa/Tunis index 8fdb11b..e01ae1a 100644 --- a/library/tzdata/Africa/Tunis +++ b/library/tzdata/Africa/Tunis @@ -1,221 +1,219 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Tunis) { - {-9223372036854775808 2444 0 LMT} - {-2797202444 561 0 PMT} - {-1855958961 3600 0 CET} - {-969242400 7200 1 CEST} - {-950493600 3600 0 CET} - {-941940000 7200 1 CEST} - {-891136800 3600 0 CET} - {-877827600 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-842918400 3600 0 CET} - {-842223600 7200 1 CEST} - {-828230400 3600 0 CET} - {-812502000 7200 1 CEST} - {-796269600 3600 0 CET} - {-781052400 7200 1 CEST} - {-766634400 3600 0 CET} - {231202800 7200 1 CEST} - {243903600 3600 0 CET} - {262825200 7200 1 CEST} - {276044400 3600 0 CET} - {581122800 7200 1 CEST} - {591145200 3600 0 CET} - {606870000 7200 1 CEST} - {622594800 3600 0 CET} - {641516400 7200 1 CEST} - {654649200 3600 0 CET} - {1114902000 7200 1 CEST} - {1128038400 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Tunis) { + {-9223372036854775808 2444 0 LMT} + {-2797202444 561 0 PMT} + {-1855958961 3600 0 CET} + {-969242400 7200 1 CEST} + {-950493600 3600 0 CET} + {-941940000 7200 1 CEST} + {-891136800 3600 0 CET} + {-877827600 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-842918400 3600 0 CET} + {-842223600 7200 1 CEST} + {-828230400 3600 0 CET} + {-812502000 7200 1 CEST} + {-796269600 3600 0 CET} + {-781052400 7200 1 CEST} + {-766634400 3600 0 CET} + {231202800 7200 1 CEST} + {243903600 3600 0 CET} + {262825200 7200 1 CEST} + {276044400 3600 0 CET} + {581122800 7200 1 CEST} + {591145200 3600 0 CET} + {606870000 7200 1 CEST} + {622594800 3600 0 CET} + {641516400 7200 1 CEST} + {654649200 3600 0 CET} + {1114902000 7200 1 CEST} + {1128038400 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Africa/Windhoek b/library/tzdata/Africa/Windhoek index a655f2e..494e9e6 100644 --- a/library/tzdata/Africa/Windhoek +++ b/library/tzdata/Africa/Windhoek @@ -1,222 +1,222 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Windhoek) { - {-9223372036854775808 4104 0 LMT} - {-2458170504 5400 0 SWAT} - {-2109288600 7200 0 SAST} - {-860976000 10800 1 SAST} - {-845254800 7200 0 SAST} - {637970400 7200 0 CAT} - {765324000 3600 0 WAT} - {778640400 7200 1 WAST} - {796780800 3600 0 WAT} - {810090000 7200 1 WAST} - {828835200 3600 0 WAT} - {841539600 7200 1 WAST} - {860284800 3600 0 WAT} - {873594000 7200 1 WAST} - {891734400 3600 0 WAT} - {905043600 7200 1 WAST} - {923184000 3600 0 WAT} - {936493200 7200 1 WAST} - {954633600 3600 0 WAT} - {967942800 7200 1 WAST} - {986083200 3600 0 WAT} - {999392400 7200 1 WAST} - {1018137600 3600 0 WAT} - {1030842000 7200 1 WAST} - {1049587200 3600 0 WAT} - {1062896400 7200 1 WAST} - {1081036800 3600 0 WAT} - {1094346000 7200 1 WAST} - {1112486400 3600 0 WAT} - {1125795600 7200 1 WAST} - {1143936000 3600 0 WAT} - {1157245200 7200 1 WAST} - {1175385600 3600 0 WAT} - {1188694800 7200 1 WAST} - {1207440000 3600 0 WAT} - {1220749200 7200 1 WAST} - {1238889600 3600 0 WAT} - {1252198800 7200 1 WAST} - {1270339200 3600 0 WAT} - {1283648400 7200 1 WAST} - {1301788800 3600 0 WAT} - {1315098000 7200 1 WAST} - {1333238400 3600 0 WAT} - {1346547600 7200 1 WAST} - {1365292800 3600 0 WAT} - {1377997200 7200 1 WAST} - {1396742400 3600 0 WAT} - {1410051600 7200 1 WAST} - {1428192000 3600 0 WAT} - {1441501200 7200 1 WAST} - {1459641600 3600 0 WAT} - {1472950800 7200 1 WAST} - {1491091200 3600 0 WAT} - {1504400400 7200 1 WAST} - {1522540800 3600 0 WAT} - {1535850000 7200 1 WAST} - {1554595200 3600 0 WAT} - {1567299600 7200 1 WAST} - {1586044800 3600 0 WAT} - {1599354000 7200 1 WAST} - {1617494400 3600 0 WAT} - {1630803600 7200 1 WAST} - {1648944000 3600 0 WAT} - {1662253200 7200 1 WAST} - {1680393600 3600 0 WAT} - {1693702800 7200 1 WAST} - {1712448000 3600 0 WAT} - {1725152400 7200 1 WAST} - {1743897600 3600 0 WAT} - {1757206800 7200 1 WAST} - {1775347200 3600 0 WAT} - {1788656400 7200 1 WAST} - {1806796800 3600 0 WAT} - {1820106000 7200 1 WAST} - {1838246400 3600 0 WAT} - {1851555600 7200 1 WAST} - {1869696000 3600 0 WAT} - {1883005200 7200 1 WAST} - {1901750400 3600 0 WAT} - {1914454800 7200 1 WAST} - {1933200000 3600 0 WAT} - {1946509200 7200 1 WAST} - {1964649600 3600 0 WAT} - {1977958800 7200 1 WAST} - {1996099200 3600 0 WAT} - {2009408400 7200 1 WAST} - {2027548800 3600 0 WAT} - {2040858000 7200 1 WAST} - {2058998400 3600 0 WAT} - {2072307600 7200 1 WAST} - {2091052800 3600 0 WAT} - {2104362000 7200 1 WAST} - {2122502400 3600 0 WAT} - {2135811600 7200 1 WAST} - {2153952000 3600 0 WAT} - {2167261200 7200 1 WAST} - {2185401600 3600 0 WAT} - {2198710800 7200 1 WAST} - {2216851200 3600 0 WAT} - {2230160400 7200 1 WAST} - {2248905600 3600 0 WAT} - {2261610000 7200 1 WAST} - {2280355200 3600 0 WAT} - {2293664400 7200 1 WAST} - {2311804800 3600 0 WAT} - {2325114000 7200 1 WAST} - {2343254400 3600 0 WAT} - {2356563600 7200 1 WAST} - {2374704000 3600 0 WAT} - {2388013200 7200 1 WAST} - {2406153600 3600 0 WAT} - {2419462800 7200 1 WAST} - {2438208000 3600 0 WAT} - {2450912400 7200 1 WAST} - {2469657600 3600 0 WAT} - {2482966800 7200 1 WAST} - {2501107200 3600 0 WAT} - {2514416400 7200 1 WAST} - {2532556800 3600 0 WAT} - {2545866000 7200 1 WAST} - {2564006400 3600 0 WAT} - {2577315600 7200 1 WAST} - {2596060800 3600 0 WAT} - {2608765200 7200 1 WAST} - {2627510400 3600 0 WAT} - {2640819600 7200 1 WAST} - {2658960000 3600 0 WAT} - {2672269200 7200 1 WAST} - {2690409600 3600 0 WAT} - {2703718800 7200 1 WAST} - {2721859200 3600 0 WAT} - {2735168400 7200 1 WAST} - {2753308800 3600 0 WAT} - {2766618000 7200 1 WAST} - {2785363200 3600 0 WAT} - {2798067600 7200 1 WAST} - {2816812800 3600 0 WAT} - {2830122000 7200 1 WAST} - {2848262400 3600 0 WAT} - {2861571600 7200 1 WAST} - {2879712000 3600 0 WAT} - {2893021200 7200 1 WAST} - {2911161600 3600 0 WAT} - {2924470800 7200 1 WAST} - {2942611200 3600 0 WAT} - {2955920400 7200 1 WAST} - {2974665600 3600 0 WAT} - {2987974800 7200 1 WAST} - {3006115200 3600 0 WAT} - {3019424400 7200 1 WAST} - {3037564800 3600 0 WAT} - {3050874000 7200 1 WAST} - {3069014400 3600 0 WAT} - {3082323600 7200 1 WAST} - {3100464000 3600 0 WAT} - {3113773200 7200 1 WAST} - {3132518400 3600 0 WAT} - {3145222800 7200 1 WAST} - {3163968000 3600 0 WAT} - {3177277200 7200 1 WAST} - {3195417600 3600 0 WAT} - {3208726800 7200 1 WAST} - {3226867200 3600 0 WAT} - {3240176400 7200 1 WAST} - {3258316800 3600 0 WAT} - {3271626000 7200 1 WAST} - {3289766400 3600 0 WAT} - {3303075600 7200 1 WAST} - {3321820800 3600 0 WAT} - {3334525200 7200 1 WAST} - {3353270400 3600 0 WAT} - {3366579600 7200 1 WAST} - {3384720000 3600 0 WAT} - {3398029200 7200 1 WAST} - {3416169600 3600 0 WAT} - {3429478800 7200 1 WAST} - {3447619200 3600 0 WAT} - {3460928400 7200 1 WAST} - {3479673600 3600 0 WAT} - {3492378000 7200 1 WAST} - {3511123200 3600 0 WAT} - {3524432400 7200 1 WAST} - {3542572800 3600 0 WAT} - {3555882000 7200 1 WAST} - {3574022400 3600 0 WAT} - {3587331600 7200 1 WAST} - {3605472000 3600 0 WAT} - {3618781200 7200 1 WAST} - {3636921600 3600 0 WAT} - {3650230800 7200 1 WAST} - {3668976000 3600 0 WAT} - {3681680400 7200 1 WAST} - {3700425600 3600 0 WAT} - {3713734800 7200 1 WAST} - {3731875200 3600 0 WAT} - {3745184400 7200 1 WAST} - {3763324800 3600 0 WAT} - {3776634000 7200 1 WAST} - {3794774400 3600 0 WAT} - {3808083600 7200 1 WAST} - {3826224000 3600 0 WAT} - {3839533200 7200 1 WAST} - {3858278400 3600 0 WAT} - {3871587600 7200 1 WAST} - {3889728000 3600 0 WAT} - {3903037200 7200 1 WAST} - {3921177600 3600 0 WAT} - {3934486800 7200 1 WAST} - {3952627200 3600 0 WAT} - {3965936400 7200 1 WAST} - {3984076800 3600 0 WAT} - {3997386000 7200 1 WAST} - {4016131200 3600 0 WAT} - {4028835600 7200 1 WAST} - {4047580800 3600 0 WAT} - {4060890000 7200 1 WAST} - {4079030400 3600 0 WAT} - {4092339600 7200 1 WAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Windhoek) { + {-9223372036854775808 4104 0 LMT} + {-2458170504 5400 0 SWAT} + {-2109288600 7200 0 SAST} + {-860976000 10800 1 SAST} + {-845254800 7200 0 SAST} + {637970400 7200 0 CAT} + {765324000 3600 0 WAT} + {778640400 7200 1 WAST} + {796780800 3600 0 WAT} + {810090000 7200 1 WAST} + {828835200 3600 0 WAT} + {841539600 7200 1 WAST} + {860284800 3600 0 WAT} + {873594000 7200 1 WAST} + {891734400 3600 0 WAT} + {905043600 7200 1 WAST} + {923184000 3600 0 WAT} + {936493200 7200 1 WAST} + {954633600 3600 0 WAT} + {967942800 7200 1 WAST} + {986083200 3600 0 WAT} + {999392400 7200 1 WAST} + {1018137600 3600 0 WAT} + {1030842000 7200 1 WAST} + {1049587200 3600 0 WAT} + {1062896400 7200 1 WAST} + {1081036800 3600 0 WAT} + {1094346000 7200 1 WAST} + {1112486400 3600 0 WAT} + {1125795600 7200 1 WAST} + {1143936000 3600 0 WAT} + {1157245200 7200 1 WAST} + {1175385600 3600 0 WAT} + {1188694800 7200 1 WAST} + {1207440000 3600 0 WAT} + {1220749200 7200 1 WAST} + {1238889600 3600 0 WAT} + {1252198800 7200 1 WAST} + {1270339200 3600 0 WAT} + {1283648400 7200 1 WAST} + {1301788800 3600 0 WAT} + {1315098000 7200 1 WAST} + {1333238400 3600 0 WAT} + {1346547600 7200 1 WAST} + {1365292800 3600 0 WAT} + {1377997200 7200 1 WAST} + {1396742400 3600 0 WAT} + {1410051600 7200 1 WAST} + {1428192000 3600 0 WAT} + {1441501200 7200 1 WAST} + {1459641600 3600 0 WAT} + {1472950800 7200 1 WAST} + {1491091200 3600 0 WAT} + {1504400400 7200 1 WAST} + {1522540800 3600 0 WAT} + {1535850000 7200 1 WAST} + {1554595200 3600 0 WAT} + {1567299600 7200 1 WAST} + {1586044800 3600 0 WAT} + {1599354000 7200 1 WAST} + {1617494400 3600 0 WAT} + {1630803600 7200 1 WAST} + {1648944000 3600 0 WAT} + {1662253200 7200 1 WAST} + {1680393600 3600 0 WAT} + {1693702800 7200 1 WAST} + {1712448000 3600 0 WAT} + {1725152400 7200 1 WAST} + {1743897600 3600 0 WAT} + {1757206800 7200 1 WAST} + {1775347200 3600 0 WAT} + {1788656400 7200 1 WAST} + {1806796800 3600 0 WAT} + {1820106000 7200 1 WAST} + {1838246400 3600 0 WAT} + {1851555600 7200 1 WAST} + {1869696000 3600 0 WAT} + {1883005200 7200 1 WAST} + {1901750400 3600 0 WAT} + {1914454800 7200 1 WAST} + {1933200000 3600 0 WAT} + {1946509200 7200 1 WAST} + {1964649600 3600 0 WAT} + {1977958800 7200 1 WAST} + {1996099200 3600 0 WAT} + {2009408400 7200 1 WAST} + {2027548800 3600 0 WAT} + {2040858000 7200 1 WAST} + {2058998400 3600 0 WAT} + {2072307600 7200 1 WAST} + {2091052800 3600 0 WAT} + {2104362000 7200 1 WAST} + {2122502400 3600 0 WAT} + {2135811600 7200 1 WAST} + {2153952000 3600 0 WAT} + {2167261200 7200 1 WAST} + {2185401600 3600 0 WAT} + {2198710800 7200 1 WAST} + {2216851200 3600 0 WAT} + {2230160400 7200 1 WAST} + {2248905600 3600 0 WAT} + {2261610000 7200 1 WAST} + {2280355200 3600 0 WAT} + {2293664400 7200 1 WAST} + {2311804800 3600 0 WAT} + {2325114000 7200 1 WAST} + {2343254400 3600 0 WAT} + {2356563600 7200 1 WAST} + {2374704000 3600 0 WAT} + {2388013200 7200 1 WAST} + {2406153600 3600 0 WAT} + {2419462800 7200 1 WAST} + {2438208000 3600 0 WAT} + {2450912400 7200 1 WAST} + {2469657600 3600 0 WAT} + {2482966800 7200 1 WAST} + {2501107200 3600 0 WAT} + {2514416400 7200 1 WAST} + {2532556800 3600 0 WAT} + {2545866000 7200 1 WAST} + {2564006400 3600 0 WAT} + {2577315600 7200 1 WAST} + {2596060800 3600 0 WAT} + {2608765200 7200 1 WAST} + {2627510400 3600 0 WAT} + {2640819600 7200 1 WAST} + {2658960000 3600 0 WAT} + {2672269200 7200 1 WAST} + {2690409600 3600 0 WAT} + {2703718800 7200 1 WAST} + {2721859200 3600 0 WAT} + {2735168400 7200 1 WAST} + {2753308800 3600 0 WAT} + {2766618000 7200 1 WAST} + {2785363200 3600 0 WAT} + {2798067600 7200 1 WAST} + {2816812800 3600 0 WAT} + {2830122000 7200 1 WAST} + {2848262400 3600 0 WAT} + {2861571600 7200 1 WAST} + {2879712000 3600 0 WAT} + {2893021200 7200 1 WAST} + {2911161600 3600 0 WAT} + {2924470800 7200 1 WAST} + {2942611200 3600 0 WAT} + {2955920400 7200 1 WAST} + {2974665600 3600 0 WAT} + {2987974800 7200 1 WAST} + {3006115200 3600 0 WAT} + {3019424400 7200 1 WAST} + {3037564800 3600 0 WAT} + {3050874000 7200 1 WAST} + {3069014400 3600 0 WAT} + {3082323600 7200 1 WAST} + {3100464000 3600 0 WAT} + {3113773200 7200 1 WAST} + {3132518400 3600 0 WAT} + {3145222800 7200 1 WAST} + {3163968000 3600 0 WAT} + {3177277200 7200 1 WAST} + {3195417600 3600 0 WAT} + {3208726800 7200 1 WAST} + {3226867200 3600 0 WAT} + {3240176400 7200 1 WAST} + {3258316800 3600 0 WAT} + {3271626000 7200 1 WAST} + {3289766400 3600 0 WAT} + {3303075600 7200 1 WAST} + {3321820800 3600 0 WAT} + {3334525200 7200 1 WAST} + {3353270400 3600 0 WAT} + {3366579600 7200 1 WAST} + {3384720000 3600 0 WAT} + {3398029200 7200 1 WAST} + {3416169600 3600 0 WAT} + {3429478800 7200 1 WAST} + {3447619200 3600 0 WAT} + {3460928400 7200 1 WAST} + {3479673600 3600 0 WAT} + {3492378000 7200 1 WAST} + {3511123200 3600 0 WAT} + {3524432400 7200 1 WAST} + {3542572800 3600 0 WAT} + {3555882000 7200 1 WAST} + {3574022400 3600 0 WAT} + {3587331600 7200 1 WAST} + {3605472000 3600 0 WAT} + {3618781200 7200 1 WAST} + {3636921600 3600 0 WAT} + {3650230800 7200 1 WAST} + {3668976000 3600 0 WAT} + {3681680400 7200 1 WAST} + {3700425600 3600 0 WAT} + {3713734800 7200 1 WAST} + {3731875200 3600 0 WAT} + {3745184400 7200 1 WAST} + {3763324800 3600 0 WAT} + {3776634000 7200 1 WAST} + {3794774400 3600 0 WAT} + {3808083600 7200 1 WAST} + {3826224000 3600 0 WAT} + {3839533200 7200 1 WAST} + {3858278400 3600 0 WAT} + {3871587600 7200 1 WAST} + {3889728000 3600 0 WAT} + {3903037200 7200 1 WAST} + {3921177600 3600 0 WAT} + {3934486800 7200 1 WAST} + {3952627200 3600 0 WAT} + {3965936400 7200 1 WAST} + {3984076800 3600 0 WAT} + {3997386000 7200 1 WAST} + {4016131200 3600 0 WAT} + {4028835600 7200 1 WAST} + {4047580800 3600 0 WAT} + {4060890000 7200 1 WAST} + {4079030400 3600 0 WAT} + {4092339600 7200 1 WAST} +} diff --git a/library/tzdata/America/Adak b/library/tzdata/America/Adak index f3c5e5c..cfa868e 100644 --- a/library/tzdata/America/Adak +++ b/library/tzdata/America/Adak @@ -1,276 +1,276 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Adak) { - {-9223372036854775808 44001 0 LMT} - {-3225356001 -42398 0 LMT} - {-2188944802 -39600 0 NST} - {-883573200 -39600 0 NST} - {-880196400 -36000 1 NWT} - {-769395600 -36000 1 NPT} - {-765374400 -39600 0 NST} - {-757342800 -39600 0 NST} - {-86878800 -39600 0 BST} - {-31496400 -39600 0 BST} - {-21466800 -36000 1 BDT} - {-5745600 -39600 0 BST} - {9982800 -36000 1 BDT} - {25704000 -39600 0 BST} - {41432400 -36000 1 BDT} - {57758400 -39600 0 BST} - {73486800 -36000 1 BDT} - {89208000 -39600 0 BST} - {104936400 -36000 1 BDT} - {120657600 -39600 0 BST} - {126709200 -36000 1 BDT} - {152107200 -39600 0 BST} - {162392400 -36000 1 BDT} - {183556800 -39600 0 BST} - {199285200 -36000 1 BDT} - {215611200 -39600 0 BST} - {230734800 -36000 1 BDT} - {247060800 -39600 0 BST} - {262789200 -36000 1 BDT} - {278510400 -39600 0 BST} - {294238800 -36000 1 BDT} - {309960000 -39600 0 BST} - {325688400 -36000 1 BDT} - {341409600 -39600 0 BST} - {357138000 -36000 1 BDT} - {372859200 -39600 0 BST} - {388587600 -36000 1 BDT} - {404913600 -39600 0 BST} - {420037200 -36000 1 BDT} - {439034400 -36000 0 HAST} - {452088000 -32400 1 HADT} - {467809200 -36000 0 HAST} - {483537600 -32400 1 HADT} - {499258800 -36000 0 HAST} - {514987200 -32400 1 HADT} - {530708400 -36000 0 HAST} - {544622400 -32400 1 HADT} - {562158000 -36000 0 HAST} - {576072000 -32400 1 HADT} - {594212400 -36000 0 HAST} - {607521600 -32400 1 HADT} - {625662000 -36000 0 HAST} - {638971200 -32400 1 HADT} - {657111600 -36000 0 HAST} - {671025600 -32400 1 HADT} - {688561200 -36000 0 HAST} - {702475200 -32400 1 HADT} - {720010800 -36000 0 HAST} - {733924800 -32400 1 HADT} - {752065200 -36000 0 HAST} - {765374400 -32400 1 HADT} - {783514800 -36000 0 HAST} - {796824000 -32400 1 HADT} - {814964400 -36000 0 HAST} - {828878400 -32400 1 HADT} - {846414000 -36000 0 HAST} - {860328000 -32400 1 HADT} - {877863600 -36000 0 HAST} - {891777600 -32400 1 HADT} - {909313200 -36000 0 HAST} - {923227200 -32400 1 HADT} - {941367600 -36000 0 HAST} - {954676800 -32400 1 HADT} - {972817200 -36000 0 HAST} - {986126400 -32400 1 HADT} - {1004266800 -36000 0 HAST} - {1018180800 -32400 1 HADT} - {1035716400 -36000 0 HAST} - {1049630400 -32400 1 HADT} - {1067166000 -36000 0 HAST} - {1081080000 -32400 1 HADT} - {1099220400 -36000 0 HAST} - {1112529600 -32400 1 HADT} - {1130670000 -36000 0 HAST} - {1143979200 -32400 1 HADT} - {1162119600 -36000 0 HAST} - {1173614400 -32400 1 HADT} - {1194174000 -36000 0 HAST} - {1205064000 -32400 1 HADT} - {1225623600 -36000 0 HAST} - {1236513600 -32400 1 HADT} - {1257073200 -36000 0 HAST} - {1268568000 -32400 1 HADT} - {1289127600 -36000 0 HAST} - {1300017600 -32400 1 HADT} - {1320577200 -36000 0 HAST} - {1331467200 -32400 1 HADT} - {1352026800 -36000 0 HAST} - {1362916800 -32400 1 HADT} - {1383476400 -36000 0 HAST} - {1394366400 -32400 1 HADT} - {1414926000 -36000 0 HAST} - {1425816000 -32400 1 HADT} - {1446375600 -36000 0 HAST} - {1457870400 -32400 1 HADT} - {1478430000 -36000 0 HAST} - {1489320000 -32400 1 HADT} - {1509879600 -36000 0 HAST} - {1520769600 -32400 1 HADT} - {1541329200 -36000 0 HAST} - {1552219200 -32400 1 HADT} - {1572778800 -36000 0 HAST} - {1583668800 -32400 1 HADT} - {1604228400 -36000 0 HAST} - {1615723200 -32400 1 HADT} - {1636282800 -36000 0 HAST} - {1647172800 -32400 1 HADT} - {1667732400 -36000 0 HAST} - {1678622400 -32400 1 HADT} - {1699182000 -36000 0 HAST} - {1710072000 -32400 1 HADT} - {1730631600 -36000 0 HAST} - {1741521600 -32400 1 HADT} - {1762081200 -36000 0 HAST} - {1772971200 -32400 1 HADT} - {1793530800 -36000 0 HAST} - {1805025600 -32400 1 HADT} - {1825585200 -36000 0 HAST} - {1836475200 -32400 1 HADT} - {1857034800 -36000 0 HAST} - {1867924800 -32400 1 HADT} - {1888484400 -36000 0 HAST} - {1899374400 -32400 1 HADT} - {1919934000 -36000 0 HAST} - {1930824000 -32400 1 HADT} - {1951383600 -36000 0 HAST} - {1962878400 -32400 1 HADT} - {1983438000 -36000 0 HAST} - {1994328000 -32400 1 HADT} - {2014887600 -36000 0 HAST} - {2025777600 -32400 1 HADT} - {2046337200 -36000 0 HAST} - {2057227200 -32400 1 HADT} - {2077786800 -36000 0 HAST} - {2088676800 -32400 1 HADT} - {2109236400 -36000 0 HAST} - {2120126400 -32400 1 HADT} - {2140686000 -36000 0 HAST} - {2152180800 -32400 1 HADT} - {2172740400 -36000 0 HAST} - {2183630400 -32400 1 HADT} - {2204190000 -36000 0 HAST} - {2215080000 -32400 1 HADT} - {2235639600 -36000 0 HAST} - {2246529600 -32400 1 HADT} - {2267089200 -36000 0 HAST} - {2277979200 -32400 1 HADT} - {2298538800 -36000 0 HAST} - {2309428800 -32400 1 HADT} - {2329988400 -36000 0 HAST} - {2341483200 -32400 1 HADT} - {2362042800 -36000 0 HAST} - {2372932800 -32400 1 HADT} - {2393492400 -36000 0 HAST} - {2404382400 -32400 1 HADT} - {2424942000 -36000 0 HAST} - {2435832000 -32400 1 HADT} - {2456391600 -36000 0 HAST} - {2467281600 -32400 1 HADT} - {2487841200 -36000 0 HAST} - {2499336000 -32400 1 HADT} - {2519895600 -36000 0 HAST} - {2530785600 -32400 1 HADT} - {2551345200 -36000 0 HAST} - {2562235200 -32400 1 HADT} - {2582794800 -36000 0 HAST} - {2593684800 -32400 1 HADT} - {2614244400 -36000 0 HAST} - {2625134400 -32400 1 HADT} - {2645694000 -36000 0 HAST} - {2656584000 -32400 1 HADT} - {2677143600 -36000 0 HAST} - {2688638400 -32400 1 HADT} - {2709198000 -36000 0 HAST} - {2720088000 -32400 1 HADT} - {2740647600 -36000 0 HAST} - {2751537600 -32400 1 HADT} - {2772097200 -36000 0 HAST} - {2782987200 -32400 1 HADT} - {2803546800 -36000 0 HAST} - {2814436800 -32400 1 HADT} - {2834996400 -36000 0 HAST} - {2846491200 -32400 1 HADT} - {2867050800 -36000 0 HAST} - {2877940800 -32400 1 HADT} - {2898500400 -36000 0 HAST} - {2909390400 -32400 1 HADT} - {2929950000 -36000 0 HAST} - {2940840000 -32400 1 HADT} - {2961399600 -36000 0 HAST} - {2972289600 -32400 1 HADT} - {2992849200 -36000 0 HAST} - {3003739200 -32400 1 HADT} - {3024298800 -36000 0 HAST} - {3035793600 -32400 1 HADT} - {3056353200 -36000 0 HAST} - {3067243200 -32400 1 HADT} - {3087802800 -36000 0 HAST} - {3098692800 -32400 1 HADT} - {3119252400 -36000 0 HAST} - {3130142400 -32400 1 HADT} - {3150702000 -36000 0 HAST} - {3161592000 -32400 1 HADT} - {3182151600 -36000 0 HAST} - {3193041600 -32400 1 HADT} - {3213601200 -36000 0 HAST} - {3225096000 -32400 1 HADT} - {3245655600 -36000 0 HAST} - {3256545600 -32400 1 HADT} - {3277105200 -36000 0 HAST} - {3287995200 -32400 1 HADT} - {3308554800 -36000 0 HAST} - {3319444800 -32400 1 HADT} - {3340004400 -36000 0 HAST} - {3350894400 -32400 1 HADT} - {3371454000 -36000 0 HAST} - {3382948800 -32400 1 HADT} - {3403508400 -36000 0 HAST} - {3414398400 -32400 1 HADT} - {3434958000 -36000 0 HAST} - {3445848000 -32400 1 HADT} - {3466407600 -36000 0 HAST} - {3477297600 -32400 1 HADT} - {3497857200 -36000 0 HAST} - {3508747200 -32400 1 HADT} - {3529306800 -36000 0 HAST} - {3540196800 -32400 1 HADT} - {3560756400 -36000 0 HAST} - {3572251200 -32400 1 HADT} - {3592810800 -36000 0 HAST} - {3603700800 -32400 1 HADT} - {3624260400 -36000 0 HAST} - {3635150400 -32400 1 HADT} - {3655710000 -36000 0 HAST} - {3666600000 -32400 1 HADT} - {3687159600 -36000 0 HAST} - {3698049600 -32400 1 HADT} - {3718609200 -36000 0 HAST} - {3730104000 -32400 1 HADT} - {3750663600 -36000 0 HAST} - {3761553600 -32400 1 HADT} - {3782113200 -36000 0 HAST} - {3793003200 -32400 1 HADT} - {3813562800 -36000 0 HAST} - {3824452800 -32400 1 HADT} - {3845012400 -36000 0 HAST} - {3855902400 -32400 1 HADT} - {3876462000 -36000 0 HAST} - {3887352000 -32400 1 HADT} - {3907911600 -36000 0 HAST} - {3919406400 -32400 1 HADT} - {3939966000 -36000 0 HAST} - {3950856000 -32400 1 HADT} - {3971415600 -36000 0 HAST} - {3982305600 -32400 1 HADT} - {4002865200 -36000 0 HAST} - {4013755200 -32400 1 HADT} - {4034314800 -36000 0 HAST} - {4045204800 -32400 1 HADT} - {4065764400 -36000 0 HAST} - {4076654400 -32400 1 HADT} - {4097214000 -36000 0 HAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Adak) { + {-9223372036854775808 44001 0 LMT} + {-3225356001 -42398 0 LMT} + {-2188944802 -39600 0 NST} + {-883573200 -39600 0 NST} + {-880196400 -36000 1 NWT} + {-769395600 -36000 1 NPT} + {-765374400 -39600 0 NST} + {-757342800 -39600 0 NST} + {-86878800 -39600 0 BST} + {-31496400 -39600 0 BST} + {-21466800 -36000 1 BDT} + {-5745600 -39600 0 BST} + {9982800 -36000 1 BDT} + {25704000 -39600 0 BST} + {41432400 -36000 1 BDT} + {57758400 -39600 0 BST} + {73486800 -36000 1 BDT} + {89208000 -39600 0 BST} + {104936400 -36000 1 BDT} + {120657600 -39600 0 BST} + {126709200 -36000 1 BDT} + {152107200 -39600 0 BST} + {162392400 -36000 1 BDT} + {183556800 -39600 0 BST} + {199285200 -36000 1 BDT} + {215611200 -39600 0 BST} + {230734800 -36000 1 BDT} + {247060800 -39600 0 BST} + {262789200 -36000 1 BDT} + {278510400 -39600 0 BST} + {294238800 -36000 1 BDT} + {309960000 -39600 0 BST} + {325688400 -36000 1 BDT} + {341409600 -39600 0 BST} + {357138000 -36000 1 BDT} + {372859200 -39600 0 BST} + {388587600 -36000 1 BDT} + {404913600 -39600 0 BST} + {420037200 -36000 1 BDT} + {439034400 -36000 0 HAST} + {452088000 -32400 1 HADT} + {467809200 -36000 0 HAST} + {483537600 -32400 1 HADT} + {499258800 -36000 0 HAST} + {514987200 -32400 1 HADT} + {530708400 -36000 0 HAST} + {544622400 -32400 1 HADT} + {562158000 -36000 0 HAST} + {576072000 -32400 1 HADT} + {594212400 -36000 0 HAST} + {607521600 -32400 1 HADT} + {625662000 -36000 0 HAST} + {638971200 -32400 1 HADT} + {657111600 -36000 0 HAST} + {671025600 -32400 1 HADT} + {688561200 -36000 0 HAST} + {702475200 -32400 1 HADT} + {720010800 -36000 0 HAST} + {733924800 -32400 1 HADT} + {752065200 -36000 0 HAST} + {765374400 -32400 1 HADT} + {783514800 -36000 0 HAST} + {796824000 -32400 1 HADT} + {814964400 -36000 0 HAST} + {828878400 -32400 1 HADT} + {846414000 -36000 0 HAST} + {860328000 -32400 1 HADT} + {877863600 -36000 0 HAST} + {891777600 -32400 1 HADT} + {909313200 -36000 0 HAST} + {923227200 -32400 1 HADT} + {941367600 -36000 0 HAST} + {954676800 -32400 1 HADT} + {972817200 -36000 0 HAST} + {986126400 -32400 1 HADT} + {1004266800 -36000 0 HAST} + {1018180800 -32400 1 HADT} + {1035716400 -36000 0 HAST} + {1049630400 -32400 1 HADT} + {1067166000 -36000 0 HAST} + {1081080000 -32400 1 HADT} + {1099220400 -36000 0 HAST} + {1112529600 -32400 1 HADT} + {1130670000 -36000 0 HAST} + {1143979200 -32400 1 HADT} + {1162119600 -36000 0 HAST} + {1173614400 -32400 1 HADT} + {1194174000 -36000 0 HAST} + {1205064000 -32400 1 HADT} + {1225623600 -36000 0 HAST} + {1236513600 -32400 1 HADT} + {1257073200 -36000 0 HAST} + {1268568000 -32400 1 HADT} + {1289127600 -36000 0 HAST} + {1300017600 -32400 1 HADT} + {1320577200 -36000 0 HAST} + {1331467200 -32400 1 HADT} + {1352026800 -36000 0 HAST} + {1362916800 -32400 1 HADT} + {1383476400 -36000 0 HAST} + {1394366400 -32400 1 HADT} + {1414926000 -36000 0 HAST} + {1425816000 -32400 1 HADT} + {1446375600 -36000 0 HAST} + {1457870400 -32400 1 HADT} + {1478430000 -36000 0 HAST} + {1489320000 -32400 1 HADT} + {1509879600 -36000 0 HAST} + {1520769600 -32400 1 HADT} + {1541329200 -36000 0 HAST} + {1552219200 -32400 1 HADT} + {1572778800 -36000 0 HAST} + {1583668800 -32400 1 HADT} + {1604228400 -36000 0 HAST} + {1615723200 -32400 1 HADT} + {1636282800 -36000 0 HAST} + {1647172800 -32400 1 HADT} + {1667732400 -36000 0 HAST} + {1678622400 -32400 1 HADT} + {1699182000 -36000 0 HAST} + {1710072000 -32400 1 HADT} + {1730631600 -36000 0 HAST} + {1741521600 -32400 1 HADT} + {1762081200 -36000 0 HAST} + {1772971200 -32400 1 HADT} + {1793530800 -36000 0 HAST} + {1805025600 -32400 1 HADT} + {1825585200 -36000 0 HAST} + {1836475200 -32400 1 HADT} + {1857034800 -36000 0 HAST} + {1867924800 -32400 1 HADT} + {1888484400 -36000 0 HAST} + {1899374400 -32400 1 HADT} + {1919934000 -36000 0 HAST} + {1930824000 -32400 1 HADT} + {1951383600 -36000 0 HAST} + {1962878400 -32400 1 HADT} + {1983438000 -36000 0 HAST} + {1994328000 -32400 1 HADT} + {2014887600 -36000 0 HAST} + {2025777600 -32400 1 HADT} + {2046337200 -36000 0 HAST} + {2057227200 -32400 1 HADT} + {2077786800 -36000 0 HAST} + {2088676800 -32400 1 HADT} + {2109236400 -36000 0 HAST} + {2120126400 -32400 1 HADT} + {2140686000 -36000 0 HAST} + {2152180800 -32400 1 HADT} + {2172740400 -36000 0 HAST} + {2183630400 -32400 1 HADT} + {2204190000 -36000 0 HAST} + {2215080000 -32400 1 HADT} + {2235639600 -36000 0 HAST} + {2246529600 -32400 1 HADT} + {2267089200 -36000 0 HAST} + {2277979200 -32400 1 HADT} + {2298538800 -36000 0 HAST} + {2309428800 -32400 1 HADT} + {2329988400 -36000 0 HAST} + {2341483200 -32400 1 HADT} + {2362042800 -36000 0 HAST} + {2372932800 -32400 1 HADT} + {2393492400 -36000 0 HAST} + {2404382400 -32400 1 HADT} + {2424942000 -36000 0 HAST} + {2435832000 -32400 1 HADT} + {2456391600 -36000 0 HAST} + {2467281600 -32400 1 HADT} + {2487841200 -36000 0 HAST} + {2499336000 -32400 1 HADT} + {2519895600 -36000 0 HAST} + {2530785600 -32400 1 HADT} + {2551345200 -36000 0 HAST} + {2562235200 -32400 1 HADT} + {2582794800 -36000 0 HAST} + {2593684800 -32400 1 HADT} + {2614244400 -36000 0 HAST} + {2625134400 -32400 1 HADT} + {2645694000 -36000 0 HAST} + {2656584000 -32400 1 HADT} + {2677143600 -36000 0 HAST} + {2688638400 -32400 1 HADT} + {2709198000 -36000 0 HAST} + {2720088000 -32400 1 HADT} + {2740647600 -36000 0 HAST} + {2751537600 -32400 1 HADT} + {2772097200 -36000 0 HAST} + {2782987200 -32400 1 HADT} + {2803546800 -36000 0 HAST} + {2814436800 -32400 1 HADT} + {2834996400 -36000 0 HAST} + {2846491200 -32400 1 HADT} + {2867050800 -36000 0 HAST} + {2877940800 -32400 1 HADT} + {2898500400 -36000 0 HAST} + {2909390400 -32400 1 HADT} + {2929950000 -36000 0 HAST} + {2940840000 -32400 1 HADT} + {2961399600 -36000 0 HAST} + {2972289600 -32400 1 HADT} + {2992849200 -36000 0 HAST} + {3003739200 -32400 1 HADT} + {3024298800 -36000 0 HAST} + {3035793600 -32400 1 HADT} + {3056353200 -36000 0 HAST} + {3067243200 -32400 1 HADT} + {3087802800 -36000 0 HAST} + {3098692800 -32400 1 HADT} + {3119252400 -36000 0 HAST} + {3130142400 -32400 1 HADT} + {3150702000 -36000 0 HAST} + {3161592000 -32400 1 HADT} + {3182151600 -36000 0 HAST} + {3193041600 -32400 1 HADT} + {3213601200 -36000 0 HAST} + {3225096000 -32400 1 HADT} + {3245655600 -36000 0 HAST} + {3256545600 -32400 1 HADT} + {3277105200 -36000 0 HAST} + {3287995200 -32400 1 HADT} + {3308554800 -36000 0 HAST} + {3319444800 -32400 1 HADT} + {3340004400 -36000 0 HAST} + {3350894400 -32400 1 HADT} + {3371454000 -36000 0 HAST} + {3382948800 -32400 1 HADT} + {3403508400 -36000 0 HAST} + {3414398400 -32400 1 HADT} + {3434958000 -36000 0 HAST} + {3445848000 -32400 1 HADT} + {3466407600 -36000 0 HAST} + {3477297600 -32400 1 HADT} + {3497857200 -36000 0 HAST} + {3508747200 -32400 1 HADT} + {3529306800 -36000 0 HAST} + {3540196800 -32400 1 HADT} + {3560756400 -36000 0 HAST} + {3572251200 -32400 1 HADT} + {3592810800 -36000 0 HAST} + {3603700800 -32400 1 HADT} + {3624260400 -36000 0 HAST} + {3635150400 -32400 1 HADT} + {3655710000 -36000 0 HAST} + {3666600000 -32400 1 HADT} + {3687159600 -36000 0 HAST} + {3698049600 -32400 1 HADT} + {3718609200 -36000 0 HAST} + {3730104000 -32400 1 HADT} + {3750663600 -36000 0 HAST} + {3761553600 -32400 1 HADT} + {3782113200 -36000 0 HAST} + {3793003200 -32400 1 HADT} + {3813562800 -36000 0 HAST} + {3824452800 -32400 1 HADT} + {3845012400 -36000 0 HAST} + {3855902400 -32400 1 HADT} + {3876462000 -36000 0 HAST} + {3887352000 -32400 1 HADT} + {3907911600 -36000 0 HAST} + {3919406400 -32400 1 HADT} + {3939966000 -36000 0 HAST} + {3950856000 -32400 1 HADT} + {3971415600 -36000 0 HAST} + {3982305600 -32400 1 HADT} + {4002865200 -36000 0 HAST} + {4013755200 -32400 1 HADT} + {4034314800 -36000 0 HAST} + {4045204800 -32400 1 HADT} + {4065764400 -36000 0 HAST} + {4076654400 -32400 1 HADT} + {4097214000 -36000 0 HAST} +} diff --git a/library/tzdata/America/Anchorage b/library/tzdata/America/Anchorage index e02dd01..b8f2e25 100644 --- a/library/tzdata/America/Anchorage +++ b/library/tzdata/America/Anchorage @@ -1,276 +1,276 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Anchorage) { - {-9223372036854775808 50424 0 LMT} - {-3225362424 -35976 0 LMT} - {-2188951224 -36000 0 CAT} - {-883576800 -36000 0 CAWT} - {-880200000 -32400 1 CAWT} - {-769395600 -32400 0 CAPT} - {-765378000 -36000 0 CAPT} - {-757346400 -36000 0 CAT} - {-86882400 -36000 0 AHST} - {-31500000 -36000 0 AHST} - {-21470400 -32400 1 AHDT} - {-5749200 -36000 0 AHST} - {9979200 -32400 1 AHDT} - {25700400 -36000 0 AHST} - {41428800 -32400 1 AHDT} - {57754800 -36000 0 AHST} - {73483200 -32400 1 AHDT} - {89204400 -36000 0 AHST} - {104932800 -32400 1 AHDT} - {120654000 -36000 0 AHST} - {126705600 -32400 1 AHDT} - {152103600 -36000 0 AHST} - {162388800 -32400 1 AHDT} - {183553200 -36000 0 AHST} - {199281600 -32400 1 AHDT} - {215607600 -36000 0 AHST} - {230731200 -32400 1 AHDT} - {247057200 -36000 0 AHST} - {262785600 -32400 1 AHDT} - {278506800 -36000 0 AHST} - {294235200 -32400 1 AHDT} - {309956400 -36000 0 AHST} - {325684800 -32400 1 AHDT} - {341406000 -36000 0 AHST} - {357134400 -32400 1 AHDT} - {372855600 -36000 0 AHST} - {388584000 -32400 1 AHDT} - {404910000 -36000 0 AHST} - {420033600 -32400 1 AHDT} - {439030800 -32400 0 AKST} - {452084400 -28800 1 AKDT} - {467805600 -32400 0 AKST} - {483534000 -28800 1 AKDT} - {499255200 -32400 0 AKST} - {514983600 -28800 1 AKDT} - {530704800 -32400 0 AKST} - {544618800 -28800 1 AKDT} - {562154400 -32400 0 AKST} - {576068400 -28800 1 AKDT} - {594208800 -32400 0 AKST} - {607518000 -28800 1 AKDT} - {625658400 -32400 0 AKST} - {638967600 -28800 1 AKDT} - {657108000 -32400 0 AKST} - {671022000 -28800 1 AKDT} - {688557600 -32400 0 AKST} - {702471600 -28800 1 AKDT} - {720007200 -32400 0 AKST} - {733921200 -28800 1 AKDT} - {752061600 -32400 0 AKST} - {765370800 -28800 1 AKDT} - {783511200 -32400 0 AKST} - {796820400 -28800 1 AKDT} - {814960800 -32400 0 AKST} - {828874800 -28800 1 AKDT} - {846410400 -32400 0 AKST} - {860324400 -28800 1 AKDT} - {877860000 -32400 0 AKST} - {891774000 -28800 1 AKDT} - {909309600 -32400 0 AKST} - {923223600 -28800 1 AKDT} - {941364000 -32400 0 AKST} - {954673200 -28800 1 AKDT} - {972813600 -32400 0 AKST} - {986122800 -28800 1 AKDT} - {1004263200 -32400 0 AKST} - {1018177200 -28800 1 AKDT} - {1035712800 -32400 0 AKST} - {1049626800 -28800 1 AKDT} - {1067162400 -32400 0 AKST} - {1081076400 -28800 1 AKDT} - {1099216800 -32400 0 AKST} - {1112526000 -28800 1 AKDT} - {1130666400 -32400 0 AKST} - {1143975600 -28800 1 AKDT} - {1162116000 -32400 0 AKST} - {1173610800 -28800 1 AKDT} - {1194170400 -32400 0 AKST} - {1205060400 -28800 1 AKDT} - {1225620000 -32400 0 AKST} - {1236510000 -28800 1 AKDT} - {1257069600 -32400 0 AKST} - {1268564400 -28800 1 AKDT} - {1289124000 -32400 0 AKST} - {1300014000 -28800 1 AKDT} - {1320573600 -32400 0 AKST} - {1331463600 -28800 1 AKDT} - {1352023200 -32400 0 AKST} - {1362913200 -28800 1 AKDT} - {1383472800 -32400 0 AKST} - {1394362800 -28800 1 AKDT} - {1414922400 -32400 0 AKST} - {1425812400 -28800 1 AKDT} - {1446372000 -32400 0 AKST} - {1457866800 -28800 1 AKDT} - {1478426400 -32400 0 AKST} - {1489316400 -28800 1 AKDT} - {1509876000 -32400 0 AKST} - {1520766000 -28800 1 AKDT} - {1541325600 -32400 0 AKST} - {1552215600 -28800 1 AKDT} - {1572775200 -32400 0 AKST} - {1583665200 -28800 1 AKDT} - {1604224800 -32400 0 AKST} - {1615719600 -28800 1 AKDT} - {1636279200 -32400 0 AKST} - {1647169200 -28800 1 AKDT} - {1667728800 -32400 0 AKST} - {1678618800 -28800 1 AKDT} - {1699178400 -32400 0 AKST} - {1710068400 -28800 1 AKDT} - {1730628000 -32400 0 AKST} - {1741518000 -28800 1 AKDT} - {1762077600 -32400 0 AKST} - {1772967600 -28800 1 AKDT} - {1793527200 -32400 0 AKST} - {1805022000 -28800 1 AKDT} - {1825581600 -32400 0 AKST} - {1836471600 -28800 1 AKDT} - {1857031200 -32400 0 AKST} - {1867921200 -28800 1 AKDT} - {1888480800 -32400 0 AKST} - {1899370800 -28800 1 AKDT} - {1919930400 -32400 0 AKST} - {1930820400 -28800 1 AKDT} - {1951380000 -32400 0 AKST} - {1962874800 -28800 1 AKDT} - {1983434400 -32400 0 AKST} - {1994324400 -28800 1 AKDT} - {2014884000 -32400 0 AKST} - {2025774000 -28800 1 AKDT} - {2046333600 -32400 0 AKST} - {2057223600 -28800 1 AKDT} - {2077783200 -32400 0 AKST} - {2088673200 -28800 1 AKDT} - {2109232800 -32400 0 AKST} - {2120122800 -28800 1 AKDT} - {2140682400 -32400 0 AKST} - {2152177200 -28800 1 AKDT} - {2172736800 -32400 0 AKST} - {2183626800 -28800 1 AKDT} - {2204186400 -32400 0 AKST} - {2215076400 -28800 1 AKDT} - {2235636000 -32400 0 AKST} - {2246526000 -28800 1 AKDT} - {2267085600 -32400 0 AKST} - {2277975600 -28800 1 AKDT} - {2298535200 -32400 0 AKST} - {2309425200 -28800 1 AKDT} - {2329984800 -32400 0 AKST} - {2341479600 -28800 1 AKDT} - {2362039200 -32400 0 AKST} - {2372929200 -28800 1 AKDT} - {2393488800 -32400 0 AKST} - {2404378800 -28800 1 AKDT} - {2424938400 -32400 0 AKST} - {2435828400 -28800 1 AKDT} - {2456388000 -32400 0 AKST} - {2467278000 -28800 1 AKDT} - {2487837600 -32400 0 AKST} - {2499332400 -28800 1 AKDT} - {2519892000 -32400 0 AKST} - {2530782000 -28800 1 AKDT} - {2551341600 -32400 0 AKST} - {2562231600 -28800 1 AKDT} - {2582791200 -32400 0 AKST} - {2593681200 -28800 1 AKDT} - {2614240800 -32400 0 AKST} - {2625130800 -28800 1 AKDT} - {2645690400 -32400 0 AKST} - {2656580400 -28800 1 AKDT} - {2677140000 -32400 0 AKST} - {2688634800 -28800 1 AKDT} - {2709194400 -32400 0 AKST} - {2720084400 -28800 1 AKDT} - {2740644000 -32400 0 AKST} - {2751534000 -28800 1 AKDT} - {2772093600 -32400 0 AKST} - {2782983600 -28800 1 AKDT} - {2803543200 -32400 0 AKST} - {2814433200 -28800 1 AKDT} - {2834992800 -32400 0 AKST} - {2846487600 -28800 1 AKDT} - {2867047200 -32400 0 AKST} - {2877937200 -28800 1 AKDT} - {2898496800 -32400 0 AKST} - {2909386800 -28800 1 AKDT} - {2929946400 -32400 0 AKST} - {2940836400 -28800 1 AKDT} - {2961396000 -32400 0 AKST} - {2972286000 -28800 1 AKDT} - {2992845600 -32400 0 AKST} - {3003735600 -28800 1 AKDT} - {3024295200 -32400 0 AKST} - {3035790000 -28800 1 AKDT} - {3056349600 -32400 0 AKST} - {3067239600 -28800 1 AKDT} - {3087799200 -32400 0 AKST} - {3098689200 -28800 1 AKDT} - {3119248800 -32400 0 AKST} - {3130138800 -28800 1 AKDT} - {3150698400 -32400 0 AKST} - {3161588400 -28800 1 AKDT} - {3182148000 -32400 0 AKST} - {3193038000 -28800 1 AKDT} - {3213597600 -32400 0 AKST} - {3225092400 -28800 1 AKDT} - {3245652000 -32400 0 AKST} - {3256542000 -28800 1 AKDT} - {3277101600 -32400 0 AKST} - {3287991600 -28800 1 AKDT} - {3308551200 -32400 0 AKST} - {3319441200 -28800 1 AKDT} - {3340000800 -32400 0 AKST} - {3350890800 -28800 1 AKDT} - {3371450400 -32400 0 AKST} - {3382945200 -28800 1 AKDT} - {3403504800 -32400 0 AKST} - {3414394800 -28800 1 AKDT} - {3434954400 -32400 0 AKST} - {3445844400 -28800 1 AKDT} - {3466404000 -32400 0 AKST} - {3477294000 -28800 1 AKDT} - {3497853600 -32400 0 AKST} - {3508743600 -28800 1 AKDT} - {3529303200 -32400 0 AKST} - {3540193200 -28800 1 AKDT} - {3560752800 -32400 0 AKST} - {3572247600 -28800 1 AKDT} - {3592807200 -32400 0 AKST} - {3603697200 -28800 1 AKDT} - {3624256800 -32400 0 AKST} - {3635146800 -28800 1 AKDT} - {3655706400 -32400 0 AKST} - {3666596400 -28800 1 AKDT} - {3687156000 -32400 0 AKST} - {3698046000 -28800 1 AKDT} - {3718605600 -32400 0 AKST} - {3730100400 -28800 1 AKDT} - {3750660000 -32400 0 AKST} - {3761550000 -28800 1 AKDT} - {3782109600 -32400 0 AKST} - {3792999600 -28800 1 AKDT} - {3813559200 -32400 0 AKST} - {3824449200 -28800 1 AKDT} - {3845008800 -32400 0 AKST} - {3855898800 -28800 1 AKDT} - {3876458400 -32400 0 AKST} - {3887348400 -28800 1 AKDT} - {3907908000 -32400 0 AKST} - {3919402800 -28800 1 AKDT} - {3939962400 -32400 0 AKST} - {3950852400 -28800 1 AKDT} - {3971412000 -32400 0 AKST} - {3982302000 -28800 1 AKDT} - {4002861600 -32400 0 AKST} - {4013751600 -28800 1 AKDT} - {4034311200 -32400 0 AKST} - {4045201200 -28800 1 AKDT} - {4065760800 -32400 0 AKST} - {4076650800 -28800 1 AKDT} - {4097210400 -32400 0 AKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Anchorage) { + {-9223372036854775808 50424 0 LMT} + {-3225362424 -35976 0 LMT} + {-2188951224 -36000 0 CAT} + {-883576800 -36000 0 CAWT} + {-880200000 -32400 1 CAWT} + {-769395600 -32400 0 CAPT} + {-765378000 -36000 0 CAPT} + {-757346400 -36000 0 CAT} + {-86882400 -36000 0 AHST} + {-31500000 -36000 0 AHST} + {-21470400 -32400 1 AHDT} + {-5749200 -36000 0 AHST} + {9979200 -32400 1 AHDT} + {25700400 -36000 0 AHST} + {41428800 -32400 1 AHDT} + {57754800 -36000 0 AHST} + {73483200 -32400 1 AHDT} + {89204400 -36000 0 AHST} + {104932800 -32400 1 AHDT} + {120654000 -36000 0 AHST} + {126705600 -32400 1 AHDT} + {152103600 -36000 0 AHST} + {162388800 -32400 1 AHDT} + {183553200 -36000 0 AHST} + {199281600 -32400 1 AHDT} + {215607600 -36000 0 AHST} + {230731200 -32400 1 AHDT} + {247057200 -36000 0 AHST} + {262785600 -32400 1 AHDT} + {278506800 -36000 0 AHST} + {294235200 -32400 1 AHDT} + {309956400 -36000 0 AHST} + {325684800 -32400 1 AHDT} + {341406000 -36000 0 AHST} + {357134400 -32400 1 AHDT} + {372855600 -36000 0 AHST} + {388584000 -32400 1 AHDT} + {404910000 -36000 0 AHST} + {420033600 -32400 1 AHDT} + {439030800 -32400 0 AKST} + {452084400 -28800 1 AKDT} + {467805600 -32400 0 AKST} + {483534000 -28800 1 AKDT} + {499255200 -32400 0 AKST} + {514983600 -28800 1 AKDT} + {530704800 -32400 0 AKST} + {544618800 -28800 1 AKDT} + {562154400 -32400 0 AKST} + {576068400 -28800 1 AKDT} + {594208800 -32400 0 AKST} + {607518000 -28800 1 AKDT} + {625658400 -32400 0 AKST} + {638967600 -28800 1 AKDT} + {657108000 -32400 0 AKST} + {671022000 -28800 1 AKDT} + {688557600 -32400 0 AKST} + {702471600 -28800 1 AKDT} + {720007200 -32400 0 AKST} + {733921200 -28800 1 AKDT} + {752061600 -32400 0 AKST} + {765370800 -28800 1 AKDT} + {783511200 -32400 0 AKST} + {796820400 -28800 1 AKDT} + {814960800 -32400 0 AKST} + {828874800 -28800 1 AKDT} + {846410400 -32400 0 AKST} + {860324400 -28800 1 AKDT} + {877860000 -32400 0 AKST} + {891774000 -28800 1 AKDT} + {909309600 -32400 0 AKST} + {923223600 -28800 1 AKDT} + {941364000 -32400 0 AKST} + {954673200 -28800 1 AKDT} + {972813600 -32400 0 AKST} + {986122800 -28800 1 AKDT} + {1004263200 -32400 0 AKST} + {1018177200 -28800 1 AKDT} + {1035712800 -32400 0 AKST} + {1049626800 -28800 1 AKDT} + {1067162400 -32400 0 AKST} + {1081076400 -28800 1 AKDT} + {1099216800 -32400 0 AKST} + {1112526000 -28800 1 AKDT} + {1130666400 -32400 0 AKST} + {1143975600 -28800 1 AKDT} + {1162116000 -32400 0 AKST} + {1173610800 -28800 1 AKDT} + {1194170400 -32400 0 AKST} + {1205060400 -28800 1 AKDT} + {1225620000 -32400 0 AKST} + {1236510000 -28800 1 AKDT} + {1257069600 -32400 0 AKST} + {1268564400 -28800 1 AKDT} + {1289124000 -32400 0 AKST} + {1300014000 -28800 1 AKDT} + {1320573600 -32400 0 AKST} + {1331463600 -28800 1 AKDT} + {1352023200 -32400 0 AKST} + {1362913200 -28800 1 AKDT} + {1383472800 -32400 0 AKST} + {1394362800 -28800 1 AKDT} + {1414922400 -32400 0 AKST} + {1425812400 -28800 1 AKDT} + {1446372000 -32400 0 AKST} + {1457866800 -28800 1 AKDT} + {1478426400 -32400 0 AKST} + {1489316400 -28800 1 AKDT} + {1509876000 -32400 0 AKST} + {1520766000 -28800 1 AKDT} + {1541325600 -32400 0 AKST} + {1552215600 -28800 1 AKDT} + {1572775200 -32400 0 AKST} + {1583665200 -28800 1 AKDT} + {1604224800 -32400 0 AKST} + {1615719600 -28800 1 AKDT} + {1636279200 -32400 0 AKST} + {1647169200 -28800 1 AKDT} + {1667728800 -32400 0 AKST} + {1678618800 -28800 1 AKDT} + {1699178400 -32400 0 AKST} + {1710068400 -28800 1 AKDT} + {1730628000 -32400 0 AKST} + {1741518000 -28800 1 AKDT} + {1762077600 -32400 0 AKST} + {1772967600 -28800 1 AKDT} + {1793527200 -32400 0 AKST} + {1805022000 -28800 1 AKDT} + {1825581600 -32400 0 AKST} + {1836471600 -28800 1 AKDT} + {1857031200 -32400 0 AKST} + {1867921200 -28800 1 AKDT} + {1888480800 -32400 0 AKST} + {1899370800 -28800 1 AKDT} + {1919930400 -32400 0 AKST} + {1930820400 -28800 1 AKDT} + {1951380000 -32400 0 AKST} + {1962874800 -28800 1 AKDT} + {1983434400 -32400 0 AKST} + {1994324400 -28800 1 AKDT} + {2014884000 -32400 0 AKST} + {2025774000 -28800 1 AKDT} + {2046333600 -32400 0 AKST} + {2057223600 -28800 1 AKDT} + {2077783200 -32400 0 AKST} + {2088673200 -28800 1 AKDT} + {2109232800 -32400 0 AKST} + {2120122800 -28800 1 AKDT} + {2140682400 -32400 0 AKST} + {2152177200 -28800 1 AKDT} + {2172736800 -32400 0 AKST} + {2183626800 -28800 1 AKDT} + {2204186400 -32400 0 AKST} + {2215076400 -28800 1 AKDT} + {2235636000 -32400 0 AKST} + {2246526000 -28800 1 AKDT} + {2267085600 -32400 0 AKST} + {2277975600 -28800 1 AKDT} + {2298535200 -32400 0 AKST} + {2309425200 -28800 1 AKDT} + {2329984800 -32400 0 AKST} + {2341479600 -28800 1 AKDT} + {2362039200 -32400 0 AKST} + {2372929200 -28800 1 AKDT} + {2393488800 -32400 0 AKST} + {2404378800 -28800 1 AKDT} + {2424938400 -32400 0 AKST} + {2435828400 -28800 1 AKDT} + {2456388000 -32400 0 AKST} + {2467278000 -28800 1 AKDT} + {2487837600 -32400 0 AKST} + {2499332400 -28800 1 AKDT} + {2519892000 -32400 0 AKST} + {2530782000 -28800 1 AKDT} + {2551341600 -32400 0 AKST} + {2562231600 -28800 1 AKDT} + {2582791200 -32400 0 AKST} + {2593681200 -28800 1 AKDT} + {2614240800 -32400 0 AKST} + {2625130800 -28800 1 AKDT} + {2645690400 -32400 0 AKST} + {2656580400 -28800 1 AKDT} + {2677140000 -32400 0 AKST} + {2688634800 -28800 1 AKDT} + {2709194400 -32400 0 AKST} + {2720084400 -28800 1 AKDT} + {2740644000 -32400 0 AKST} + {2751534000 -28800 1 AKDT} + {2772093600 -32400 0 AKST} + {2782983600 -28800 1 AKDT} + {2803543200 -32400 0 AKST} + {2814433200 -28800 1 AKDT} + {2834992800 -32400 0 AKST} + {2846487600 -28800 1 AKDT} + {2867047200 -32400 0 AKST} + {2877937200 -28800 1 AKDT} + {2898496800 -32400 0 AKST} + {2909386800 -28800 1 AKDT} + {2929946400 -32400 0 AKST} + {2940836400 -28800 1 AKDT} + {2961396000 -32400 0 AKST} + {2972286000 -28800 1 AKDT} + {2992845600 -32400 0 AKST} + {3003735600 -28800 1 AKDT} + {3024295200 -32400 0 AKST} + {3035790000 -28800 1 AKDT} + {3056349600 -32400 0 AKST} + {3067239600 -28800 1 AKDT} + {3087799200 -32400 0 AKST} + {3098689200 -28800 1 AKDT} + {3119248800 -32400 0 AKST} + {3130138800 -28800 1 AKDT} + {3150698400 -32400 0 AKST} + {3161588400 -28800 1 AKDT} + {3182148000 -32400 0 AKST} + {3193038000 -28800 1 AKDT} + {3213597600 -32400 0 AKST} + {3225092400 -28800 1 AKDT} + {3245652000 -32400 0 AKST} + {3256542000 -28800 1 AKDT} + {3277101600 -32400 0 AKST} + {3287991600 -28800 1 AKDT} + {3308551200 -32400 0 AKST} + {3319441200 -28800 1 AKDT} + {3340000800 -32400 0 AKST} + {3350890800 -28800 1 AKDT} + {3371450400 -32400 0 AKST} + {3382945200 -28800 1 AKDT} + {3403504800 -32400 0 AKST} + {3414394800 -28800 1 AKDT} + {3434954400 -32400 0 AKST} + {3445844400 -28800 1 AKDT} + {3466404000 -32400 0 AKST} + {3477294000 -28800 1 AKDT} + {3497853600 -32400 0 AKST} + {3508743600 -28800 1 AKDT} + {3529303200 -32400 0 AKST} + {3540193200 -28800 1 AKDT} + {3560752800 -32400 0 AKST} + {3572247600 -28800 1 AKDT} + {3592807200 -32400 0 AKST} + {3603697200 -28800 1 AKDT} + {3624256800 -32400 0 AKST} + {3635146800 -28800 1 AKDT} + {3655706400 -32400 0 AKST} + {3666596400 -28800 1 AKDT} + {3687156000 -32400 0 AKST} + {3698046000 -28800 1 AKDT} + {3718605600 -32400 0 AKST} + {3730100400 -28800 1 AKDT} + {3750660000 -32400 0 AKST} + {3761550000 -28800 1 AKDT} + {3782109600 -32400 0 AKST} + {3792999600 -28800 1 AKDT} + {3813559200 -32400 0 AKST} + {3824449200 -28800 1 AKDT} + {3845008800 -32400 0 AKST} + {3855898800 -28800 1 AKDT} + {3876458400 -32400 0 AKST} + {3887348400 -28800 1 AKDT} + {3907908000 -32400 0 AKST} + {3919402800 -28800 1 AKDT} + {3939962400 -32400 0 AKST} + {3950852400 -28800 1 AKDT} + {3971412000 -32400 0 AKST} + {3982302000 -28800 1 AKDT} + {4002861600 -32400 0 AKST} + {4013751600 -28800 1 AKDT} + {4034311200 -32400 0 AKST} + {4045201200 -28800 1 AKDT} + {4065760800 -32400 0 AKST} + {4076650800 -28800 1 AKDT} + {4097210400 -32400 0 AKST} +} diff --git a/library/tzdata/America/Anguilla b/library/tzdata/America/Anguilla index cfe7483..e7b570c 100644 --- a/library/tzdata/America/Anguilla +++ b/library/tzdata/America/Anguilla @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Anguilla) { - {-9223372036854775808 -15136 0 LMT} - {-1825098464 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Anguilla) { + {-9223372036854775808 -15136 0 LMT} + {-1825098464 -14400 0 AST} +} diff --git a/library/tzdata/America/Antigua b/library/tzdata/America/Antigua index 5433e9b..9fe14cd 100644 --- a/library/tzdata/America/Antigua +++ b/library/tzdata/America/Antigua @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Antigua) { - {-9223372036854775808 -14832 0 LMT} - {-1825098768 -18000 0 EST} - {-599598000 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Antigua) { + {-9223372036854775808 -14832 0 LMT} + {-1825098768 -18000 0 EST} + {-599598000 -14400 0 AST} +} diff --git a/library/tzdata/America/Araguaina b/library/tzdata/America/Araguaina index 5073c56..4d862ee 100644 --- a/library/tzdata/America/Araguaina +++ b/library/tzdata/America/Araguaina @@ -1,57 +1,57 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Araguaina) { - {-9223372036854775808 -11568 0 LMT} - {-1767214032 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {653536800 -10800 0 BRT} - {811047600 -10800 0 BRT} - {813726000 -7200 1 BRST} - {824004000 -10800 0 BRT} - {844570800 -7200 1 BRST} - {856058400 -10800 0 BRT} - {876106800 -7200 1 BRST} - {888717600 -10800 0 BRT} - {908074800 -7200 1 BRST} - {919562400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {982461600 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1036292400 -7200 1 BRST} - {1045360800 -10800 0 BRT} - {1064368800 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Araguaina) { + {-9223372036854775808 -11568 0 LMT} + {-1767214032 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {653536800 -10800 0 BRT} + {811047600 -10800 0 BRT} + {813726000 -7200 1 BRST} + {824004000 -10800 0 BRT} + {844570800 -7200 1 BRST} + {856058400 -10800 0 BRT} + {876106800 -7200 1 BRST} + {888717600 -10800 0 BRT} + {908074800 -7200 1 BRST} + {919562400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {982461600 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1036292400 -7200 1 BRST} + {1045360800 -10800 0 BRT} + {1064368800 -10800 0 BRT} +} diff --git a/library/tzdata/America/Argentina/Buenos_Aires b/library/tzdata/America/Argentina/Buenos_Aires index beccff3..57c60c5 100644 --- a/library/tzdata/America/Argentina/Buenos_Aires +++ b/library/tzdata/America/Argentina/Buenos_Aires @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Buenos_Aires) { - {-9223372036854775808 -14028 0 LMT} - {-2372097972 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224385200 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Buenos_Aires) { + {-9223372036854775808 -14028 0 LMT} + {-2372097972 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224385200 -7200 1 ARST} + {1237082400 -10800 0 ART} + {1255834800 -7200 1 ARST} + {1269136800 -10800 0 ART} + {1287284400 -7200 1 ARST} + {1300586400 -10800 0 ART} + {1318734000 -7200 1 ARST} + {1332036000 -10800 0 ART} + {1350788400 -7200 1 ARST} + {1363485600 -10800 0 ART} + {1382238000 -7200 1 ARST} + {1394935200 -10800 0 ART} + {1413687600 -7200 1 ARST} + {1426384800 -10800 0 ART} + {1445137200 -7200 1 ARST} + {1458439200 -10800 0 ART} + {1476586800 -7200 1 ARST} + {1489888800 -10800 0 ART} + {1508036400 -7200 1 ARST} + {1521338400 -10800 0 ART} + {1540090800 -7200 1 ARST} + {1552788000 -10800 0 ART} + {1571540400 -7200 1 ARST} + {1584237600 -10800 0 ART} + {1602990000 -7200 1 ARST} + {1616292000 -10800 0 ART} + {1634439600 -7200 1 ARST} + {1647741600 -10800 0 ART} + {1665889200 -7200 1 ARST} + {1679191200 -10800 0 ART} + {1697338800 -7200 1 ARST} + {1710640800 -10800 0 ART} + {1729393200 -7200 1 ARST} + {1742090400 -10800 0 ART} + {1760842800 -7200 1 ARST} + {1773540000 -10800 0 ART} + {1792292400 -7200 1 ARST} + {1805594400 -10800 0 ART} + {1823742000 -7200 1 ARST} + {1837044000 -10800 0 ART} + {1855191600 -7200 1 ARST} + {1868493600 -10800 0 ART} + {1887246000 -7200 1 ARST} + {1899943200 -10800 0 ART} + {1918695600 -7200 1 ARST} + {1931392800 -10800 0 ART} + {1950145200 -7200 1 ARST} + {1963447200 -10800 0 ART} + {1981594800 -7200 1 ARST} + {1994896800 -10800 0 ART} + {2013044400 -7200 1 ARST} + {2026346400 -10800 0 ART} + {2044494000 -7200 1 ARST} + {2057796000 -10800 0 ART} + {2076548400 -7200 1 ARST} + {2089245600 -10800 0 ART} + {2107998000 -7200 1 ARST} + {2120695200 -10800 0 ART} + {2139447600 -7200 1 ARST} + {2152749600 -10800 0 ART} + {2170897200 -7200 1 ARST} + {2184199200 -10800 0 ART} + {2202346800 -7200 1 ARST} + {2215648800 -10800 0 ART} + {2234401200 -7200 1 ARST} + {2247098400 -10800 0 ART} + {2265850800 -7200 1 ARST} + {2278548000 -10800 0 ART} + {2297300400 -7200 1 ARST} + {2309997600 -10800 0 ART} + {2328750000 -7200 1 ARST} + {2342052000 -10800 0 ART} + {2360199600 -7200 1 ARST} + {2373501600 -10800 0 ART} + {2391649200 -7200 1 ARST} + {2404951200 -10800 0 ART} + {2423703600 -7200 1 ARST} + {2436400800 -10800 0 ART} + {2455153200 -7200 1 ARST} + {2467850400 -10800 0 ART} + {2486602800 -7200 1 ARST} + {2499904800 -10800 0 ART} + {2518052400 -7200 1 ARST} + {2531354400 -10800 0 ART} + {2549502000 -7200 1 ARST} + {2562804000 -10800 0 ART} + {2580951600 -7200 1 ARST} + {2594253600 -10800 0 ART} + {2613006000 -7200 1 ARST} + {2625703200 -10800 0 ART} + {2644455600 -7200 1 ARST} + {2657152800 -10800 0 ART} + {2675905200 -7200 1 ARST} + {2689207200 -10800 0 ART} + {2707354800 -7200 1 ARST} + {2720656800 -10800 0 ART} + {2738804400 -7200 1 ARST} + {2752106400 -10800 0 ART} + {2770858800 -7200 1 ARST} + {2783556000 -10800 0 ART} + {2802308400 -7200 1 ARST} + {2815005600 -10800 0 ART} + {2833758000 -7200 1 ARST} + {2847060000 -10800 0 ART} + {2865207600 -7200 1 ARST} + {2878509600 -10800 0 ART} + {2896657200 -7200 1 ARST} + {2909959200 -10800 0 ART} + {2928106800 -7200 1 ARST} + {2941408800 -10800 0 ART} + {2960161200 -7200 1 ARST} + {2972858400 -10800 0 ART} + {2991610800 -7200 1 ARST} + {3004308000 -10800 0 ART} + {3023060400 -7200 1 ARST} + {3036362400 -10800 0 ART} + {3054510000 -7200 1 ARST} + {3067812000 -10800 0 ART} + {3085959600 -7200 1 ARST} + {3099261600 -10800 0 ART} + {3118014000 -7200 1 ARST} + {3130711200 -10800 0 ART} + {3149463600 -7200 1 ARST} + {3162160800 -10800 0 ART} + {3180913200 -7200 1 ARST} + {3193610400 -10800 0 ART} + {3212362800 -7200 1 ARST} + {3225664800 -10800 0 ART} + {3243812400 -7200 1 ARST} + {3257114400 -10800 0 ART} + {3275262000 -7200 1 ARST} + {3288564000 -10800 0 ART} + {3307316400 -7200 1 ARST} + {3320013600 -10800 0 ART} + {3338766000 -7200 1 ARST} + {3351463200 -10800 0 ART} + {3370215600 -7200 1 ARST} + {3383517600 -10800 0 ART} + {3401665200 -7200 1 ARST} + {3414967200 -10800 0 ART} + {3433114800 -7200 1 ARST} + {3446416800 -10800 0 ART} + {3464564400 -7200 1 ARST} + {3477866400 -10800 0 ART} + {3496618800 -7200 1 ARST} + {3509316000 -10800 0 ART} + {3528068400 -7200 1 ARST} + {3540765600 -10800 0 ART} + {3559518000 -7200 1 ARST} + {3572820000 -10800 0 ART} + {3590967600 -7200 1 ARST} + {3604269600 -10800 0 ART} + {3622417200 -7200 1 ARST} + {3635719200 -10800 0 ART} + {3654471600 -7200 1 ARST} + {3667168800 -10800 0 ART} + {3685921200 -7200 1 ARST} + {3698618400 -10800 0 ART} + {3717370800 -7200 1 ARST} + {3730672800 -10800 0 ART} + {3748820400 -7200 1 ARST} + {3762122400 -10800 0 ART} + {3780270000 -7200 1 ARST} + {3793572000 -10800 0 ART} + {3811719600 -7200 1 ARST} + {3825021600 -10800 0 ART} + {3843774000 -7200 1 ARST} + {3856471200 -10800 0 ART} + {3875223600 -7200 1 ARST} + {3887920800 -10800 0 ART} + {3906673200 -7200 1 ARST} + {3919975200 -10800 0 ART} + {3938122800 -7200 1 ARST} + {3951424800 -10800 0 ART} + {3969572400 -7200 1 ARST} + {3982874400 -10800 0 ART} + {4001626800 -7200 1 ARST} + {4014324000 -10800 0 ART} + {4033076400 -7200 1 ARST} + {4045773600 -10800 0 ART} + {4064526000 -7200 1 ARST} + {4077223200 -10800 0 ART} + {4095975600 -7200 1 ARST} +} diff --git a/library/tzdata/America/Argentina/Catamarca b/library/tzdata/America/Argentina/Catamarca index 7739203..f436109 100644 --- a/library/tzdata/America/Argentina/Catamarca +++ b/library/tzdata/America/Argentina/Catamarca @@ -1,68 +1,68 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Catamarca) { - {-9223372036854775808 -15788 0 LMT} - {-2372096212 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -14400 0 WART} - {687931200 -7200 0 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1086058800 -14400 0 WART} - {1087704000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Catamarca) { + {-9223372036854775808 -15788 0 LMT} + {-2372096212 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -14400 0 WART} + {687931200 -7200 0 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1086058800 -14400 0 WART} + {1087704000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/ComodRivadavia b/library/tzdata/America/Argentina/ComodRivadavia index 2611a3d..14f10b6 100644 --- a/library/tzdata/America/Argentina/ComodRivadavia +++ b/library/tzdata/America/Argentina/ComodRivadavia @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Catamarca)]} { - LoadTimeZoneFile America/Argentina/Catamarca -} -set TZData(:America/Argentina/ComodRivadavia) $TZData(:America/Argentina/Catamarca) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Catamarca)]} { + LoadTimeZoneFile America/Argentina/Catamarca +} +set TZData(:America/Argentina/ComodRivadavia) $TZData(:America/Argentina/Catamarca) diff --git a/library/tzdata/America/Argentina/Cordoba b/library/tzdata/America/Argentina/Cordoba index 798ee86..43503ea 100644 --- a/library/tzdata/America/Argentina/Cordoba +++ b/library/tzdata/America/Argentina/Cordoba @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Cordoba) { - {-9223372036854775808 -15408 0 LMT} - {-2372096592 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -14400 0 WART} - {687931200 -7200 0 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224385200 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Cordoba) { + {-9223372036854775808 -15408 0 LMT} + {-2372096592 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -14400 0 WART} + {687931200 -7200 0 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224385200 -7200 1 ARST} + {1237082400 -10800 0 ART} + {1255834800 -7200 1 ARST} + {1269136800 -10800 0 ART} + {1287284400 -7200 1 ARST} + {1300586400 -10800 0 ART} + {1318734000 -7200 1 ARST} + {1332036000 -10800 0 ART} + {1350788400 -7200 1 ARST} + {1363485600 -10800 0 ART} + {1382238000 -7200 1 ARST} + {1394935200 -10800 0 ART} + {1413687600 -7200 1 ARST} + {1426384800 -10800 0 ART} + {1445137200 -7200 1 ARST} + {1458439200 -10800 0 ART} + {1476586800 -7200 1 ARST} + {1489888800 -10800 0 ART} + {1508036400 -7200 1 ARST} + {1521338400 -10800 0 ART} + {1540090800 -7200 1 ARST} + {1552788000 -10800 0 ART} + {1571540400 -7200 1 ARST} + {1584237600 -10800 0 ART} + {1602990000 -7200 1 ARST} + {1616292000 -10800 0 ART} + {1634439600 -7200 1 ARST} + {1647741600 -10800 0 ART} + {1665889200 -7200 1 ARST} + {1679191200 -10800 0 ART} + {1697338800 -7200 1 ARST} + {1710640800 -10800 0 ART} + {1729393200 -7200 1 ARST} + {1742090400 -10800 0 ART} + {1760842800 -7200 1 ARST} + {1773540000 -10800 0 ART} + {1792292400 -7200 1 ARST} + {1805594400 -10800 0 ART} + {1823742000 -7200 1 ARST} + {1837044000 -10800 0 ART} + {1855191600 -7200 1 ARST} + {1868493600 -10800 0 ART} + {1887246000 -7200 1 ARST} + {1899943200 -10800 0 ART} + {1918695600 -7200 1 ARST} + {1931392800 -10800 0 ART} + {1950145200 -7200 1 ARST} + {1963447200 -10800 0 ART} + {1981594800 -7200 1 ARST} + {1994896800 -10800 0 ART} + {2013044400 -7200 1 ARST} + {2026346400 -10800 0 ART} + {2044494000 -7200 1 ARST} + {2057796000 -10800 0 ART} + {2076548400 -7200 1 ARST} + {2089245600 -10800 0 ART} + {2107998000 -7200 1 ARST} + {2120695200 -10800 0 ART} + {2139447600 -7200 1 ARST} + {2152749600 -10800 0 ART} + {2170897200 -7200 1 ARST} + {2184199200 -10800 0 ART} + {2202346800 -7200 1 ARST} + {2215648800 -10800 0 ART} + {2234401200 -7200 1 ARST} + {2247098400 -10800 0 ART} + {2265850800 -7200 1 ARST} + {2278548000 -10800 0 ART} + {2297300400 -7200 1 ARST} + {2309997600 -10800 0 ART} + {2328750000 -7200 1 ARST} + {2342052000 -10800 0 ART} + {2360199600 -7200 1 ARST} + {2373501600 -10800 0 ART} + {2391649200 -7200 1 ARST} + {2404951200 -10800 0 ART} + {2423703600 -7200 1 ARST} + {2436400800 -10800 0 ART} + {2455153200 -7200 1 ARST} + {2467850400 -10800 0 ART} + {2486602800 -7200 1 ARST} + {2499904800 -10800 0 ART} + {2518052400 -7200 1 ARST} + {2531354400 -10800 0 ART} + {2549502000 -7200 1 ARST} + {2562804000 -10800 0 ART} + {2580951600 -7200 1 ARST} + {2594253600 -10800 0 ART} + {2613006000 -7200 1 ARST} + {2625703200 -10800 0 ART} + {2644455600 -7200 1 ARST} + {2657152800 -10800 0 ART} + {2675905200 -7200 1 ARST} + {2689207200 -10800 0 ART} + {2707354800 -7200 1 ARST} + {2720656800 -10800 0 ART} + {2738804400 -7200 1 ARST} + {2752106400 -10800 0 ART} + {2770858800 -7200 1 ARST} + {2783556000 -10800 0 ART} + {2802308400 -7200 1 ARST} + {2815005600 -10800 0 ART} + {2833758000 -7200 1 ARST} + {2847060000 -10800 0 ART} + {2865207600 -7200 1 ARST} + {2878509600 -10800 0 ART} + {2896657200 -7200 1 ARST} + {2909959200 -10800 0 ART} + {2928106800 -7200 1 ARST} + {2941408800 -10800 0 ART} + {2960161200 -7200 1 ARST} + {2972858400 -10800 0 ART} + {2991610800 -7200 1 ARST} + {3004308000 -10800 0 ART} + {3023060400 -7200 1 ARST} + {3036362400 -10800 0 ART} + {3054510000 -7200 1 ARST} + {3067812000 -10800 0 ART} + {3085959600 -7200 1 ARST} + {3099261600 -10800 0 ART} + {3118014000 -7200 1 ARST} + {3130711200 -10800 0 ART} + {3149463600 -7200 1 ARST} + {3162160800 -10800 0 ART} + {3180913200 -7200 1 ARST} + {3193610400 -10800 0 ART} + {3212362800 -7200 1 ARST} + {3225664800 -10800 0 ART} + {3243812400 -7200 1 ARST} + {3257114400 -10800 0 ART} + {3275262000 -7200 1 ARST} + {3288564000 -10800 0 ART} + {3307316400 -7200 1 ARST} + {3320013600 -10800 0 ART} + {3338766000 -7200 1 ARST} + {3351463200 -10800 0 ART} + {3370215600 -7200 1 ARST} + {3383517600 -10800 0 ART} + {3401665200 -7200 1 ARST} + {3414967200 -10800 0 ART} + {3433114800 -7200 1 ARST} + {3446416800 -10800 0 ART} + {3464564400 -7200 1 ARST} + {3477866400 -10800 0 ART} + {3496618800 -7200 1 ARST} + {3509316000 -10800 0 ART} + {3528068400 -7200 1 ARST} + {3540765600 -10800 0 ART} + {3559518000 -7200 1 ARST} + {3572820000 -10800 0 ART} + {3590967600 -7200 1 ARST} + {3604269600 -10800 0 ART} + {3622417200 -7200 1 ARST} + {3635719200 -10800 0 ART} + {3654471600 -7200 1 ARST} + {3667168800 -10800 0 ART} + {3685921200 -7200 1 ARST} + {3698618400 -10800 0 ART} + {3717370800 -7200 1 ARST} + {3730672800 -10800 0 ART} + {3748820400 -7200 1 ARST} + {3762122400 -10800 0 ART} + {3780270000 -7200 1 ARST} + {3793572000 -10800 0 ART} + {3811719600 -7200 1 ARST} + {3825021600 -10800 0 ART} + {3843774000 -7200 1 ARST} + {3856471200 -10800 0 ART} + {3875223600 -7200 1 ARST} + {3887920800 -10800 0 ART} + {3906673200 -7200 1 ARST} + {3919975200 -10800 0 ART} + {3938122800 -7200 1 ARST} + {3951424800 -10800 0 ART} + {3969572400 -7200 1 ARST} + {3982874400 -10800 0 ART} + {4001626800 -7200 1 ARST} + {4014324000 -10800 0 ART} + {4033076400 -7200 1 ARST} + {4045773600 -10800 0 ART} + {4064526000 -7200 1 ARST} + {4077223200 -10800 0 ART} + {4095975600 -7200 1 ARST} +} diff --git a/library/tzdata/America/Argentina/Jujuy b/library/tzdata/America/Argentina/Jujuy index 4f95f8a..18be87c 100644 --- a/library/tzdata/America/Argentina/Jujuy +++ b/library/tzdata/America/Argentina/Jujuy @@ -1,67 +1,67 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Jujuy) { - {-9223372036854775808 -15672 0 LMT} - {-2372096328 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -14400 0 WART} - {657086400 -10800 1 WARST} - {669178800 -14400 0 WART} - {686721600 -7200 1 ARST} - {694231200 -7200 0 ART} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Jujuy) { + {-9223372036854775808 -15672 0 LMT} + {-2372096328 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -14400 0 WART} + {657086400 -10800 1 WARST} + {669178800 -14400 0 WART} + {686721600 -7200 1 ARST} + {694231200 -7200 0 ART} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/La_Rioja b/library/tzdata/America/Argentina/La_Rioja index 835e29d..fbf04a6 100644 --- a/library/tzdata/America/Argentina/La_Rioja +++ b/library/tzdata/America/Argentina/La_Rioja @@ -1,69 +1,69 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/La_Rioja) { - {-9223372036854775808 -16044 0 LMT} - {-2372095956 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667792800 -14400 0 WART} - {673588800 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1086058800 -14400 0 WART} - {1087704000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/La_Rioja) { + {-9223372036854775808 -16044 0 LMT} + {-2372095956 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667792800 -14400 0 WART} + {673588800 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1086058800 -14400 0 WART} + {1087704000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/Mendoza b/library/tzdata/America/Argentina/Mendoza index 2c6fb58..c994fa1 100644 --- a/library/tzdata/America/Argentina/Mendoza +++ b/library/tzdata/America/Argentina/Mendoza @@ -1,68 +1,68 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Mendoza) { - {-9223372036854775808 -16516 0 LMT} - {-2372095484 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -14400 0 WART} - {655963200 -10800 1 WARST} - {667796400 -14400 0 WART} - {687499200 -10800 1 WARST} - {699418800 -14400 0 WART} - {719380800 -7200 0 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1085281200 -14400 0 WART} - {1096171200 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Mendoza) { + {-9223372036854775808 -16516 0 LMT} + {-2372095484 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -14400 0 WART} + {655963200 -10800 1 WARST} + {667796400 -14400 0 WART} + {687499200 -10800 1 WARST} + {699418800 -14400 0 WART} + {719380800 -7200 0 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1085281200 -14400 0 WART} + {1096171200 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/Rio_Gallegos b/library/tzdata/America/Argentina/Rio_Gallegos index 91d37dd..41c4835 100644 --- a/library/tzdata/America/Argentina/Rio_Gallegos +++ b/library/tzdata/America/Argentina/Rio_Gallegos @@ -1,68 +1,68 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Rio_Gallegos) { - {-9223372036854775808 -16612 0 LMT} - {-2372095388 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1086058800 -14400 0 WART} - {1087704000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Rio_Gallegos) { + {-9223372036854775808 -16612 0 LMT} + {-2372095388 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1086058800 -14400 0 WART} + {1087704000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/Salta b/library/tzdata/America/Argentina/Salta index a5a7010..d45019a 100644 --- a/library/tzdata/America/Argentina/Salta +++ b/library/tzdata/America/Argentina/Salta @@ -1,66 +1,66 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Salta) { - {-9223372036854775808 -15700 0 LMT} - {-2372096300 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -14400 0 WART} - {687931200 -7200 0 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Salta) { + {-9223372036854775808 -15700 0 LMT} + {-2372096300 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -14400 0 WART} + {687931200 -7200 0 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/San_Juan b/library/tzdata/America/Argentina/San_Juan index 417e234..123561d 100644 --- a/library/tzdata/America/Argentina/San_Juan +++ b/library/tzdata/America/Argentina/San_Juan @@ -1,69 +1,69 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/San_Juan) { - {-9223372036854775808 -16444 0 LMT} - {-2372095556 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667792800 -14400 0 WART} - {673588800 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1085972400 -14400 0 WART} - {1090728000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/San_Juan) { + {-9223372036854775808 -16444 0 LMT} + {-2372095556 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667792800 -14400 0 WART} + {673588800 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1085972400 -14400 0 WART} + {1090728000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/San_Luis b/library/tzdata/America/Argentina/San_Luis index 60a7995..c90ed11 100644 --- a/library/tzdata/America/Argentina/San_Luis +++ b/library/tzdata/America/Argentina/San_Luis @@ -1,64 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/San_Luis) { - {-9223372036854775808 -15924 0 LMT} - {-2372096076 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {631159200 -7200 1 ARST} - {637380000 -14400 0 WART} - {655963200 -10800 1 WARST} - {667796400 -14400 0 WART} - {675748800 -10800 0 ART} - {938919600 -10800 1 WARST} - {952052400 -10800 0 ART} - {1085972400 -14400 0 WART} - {1090728000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1200880800 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/San_Luis) { + {-9223372036854775808 -15924 0 LMT} + {-2372096076 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {631159200 -7200 1 ARST} + {637380000 -14400 0 WART} + {655963200 -10800 1 WARST} + {667796400 -14400 0 WART} + {675748800 -10800 0 ART} + {938919600 -10800 1 WARST} + {952052400 -10800 0 ART} + {1085972400 -14400 0 WART} + {1090728000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1200880800 -10800 0 ART} + {1237086000 -14400 0 WART} + {1237089600 -14400 0 WART} + {1255838400 -10800 1 WARST} + {1269140400 -14400 0 WART} + {1287288000 -10800 1 WARST} + {1300590000 -14400 0 WART} + {1318737600 -10800 1 WARST} + {1332039600 -14400 0 WART} + {1350792000 -10800 1 WARST} + {1363489200 -14400 0 WART} + {1382241600 -10800 1 WARST} + {1394938800 -14400 0 WART} + {1413691200 -10800 1 WARST} + {1426388400 -14400 0 WART} + {1445140800 -10800 1 WARST} + {1458442800 -14400 0 WART} + {1476590400 -10800 1 WARST} + {1489892400 -14400 0 WART} + {1508040000 -10800 1 WARST} + {1521342000 -14400 0 WART} + {1540094400 -10800 1 WARST} + {1552791600 -14400 0 WART} + {1571544000 -10800 1 WARST} + {1584241200 -14400 0 WART} + {1602993600 -10800 1 WARST} + {1616295600 -14400 0 WART} + {1634443200 -10800 1 WARST} + {1647745200 -14400 0 WART} + {1665892800 -10800 1 WARST} + {1679194800 -14400 0 WART} + {1697342400 -10800 1 WARST} + {1710644400 -14400 0 WART} + {1729396800 -10800 1 WARST} + {1742094000 -14400 0 WART} + {1760846400 -10800 1 WARST} + {1773543600 -14400 0 WART} + {1792296000 -10800 1 WARST} + {1805598000 -14400 0 WART} + {1823745600 -10800 1 WARST} + {1837047600 -14400 0 WART} + {1855195200 -10800 1 WARST} + {1868497200 -14400 0 WART} + {1887249600 -10800 1 WARST} + {1899946800 -14400 0 WART} + {1918699200 -10800 1 WARST} + {1931396400 -14400 0 WART} + {1950148800 -10800 1 WARST} + {1963450800 -14400 0 WART} + {1981598400 -10800 1 WARST} + {1994900400 -14400 0 WART} + {2013048000 -10800 1 WARST} + {2026350000 -14400 0 WART} + {2044497600 -10800 1 WARST} + {2057799600 -14400 0 WART} + {2076552000 -10800 1 WARST} + {2089249200 -14400 0 WART} + {2108001600 -10800 1 WARST} + {2120698800 -14400 0 WART} + {2139451200 -10800 1 WARST} + {2152753200 -14400 0 WART} + {2170900800 -10800 1 WARST} + {2184202800 -14400 0 WART} + {2202350400 -10800 1 WARST} + {2215652400 -14400 0 WART} + {2234404800 -10800 1 WARST} + {2247102000 -14400 0 WART} + {2265854400 -10800 1 WARST} + {2278551600 -14400 0 WART} + {2297304000 -10800 1 WARST} + {2310001200 -14400 0 WART} + {2328753600 -10800 1 WARST} + {2342055600 -14400 0 WART} + {2360203200 -10800 1 WARST} + {2373505200 -14400 0 WART} + {2391652800 -10800 1 WARST} + {2404954800 -14400 0 WART} + {2423707200 -10800 1 WARST} + {2436404400 -14400 0 WART} + {2455156800 -10800 1 WARST} + {2467854000 -14400 0 WART} + {2486606400 -10800 1 WARST} + {2499908400 -14400 0 WART} + {2518056000 -10800 1 WARST} + {2531358000 -14400 0 WART} + {2549505600 -10800 1 WARST} + {2562807600 -14400 0 WART} + {2580955200 -10800 1 WARST} + {2594257200 -14400 0 WART} + {2613009600 -10800 1 WARST} + {2625706800 -14400 0 WART} + {2644459200 -10800 1 WARST} + {2657156400 -14400 0 WART} + {2675908800 -10800 1 WARST} + {2689210800 -14400 0 WART} + {2707358400 -10800 1 WARST} + {2720660400 -14400 0 WART} + {2738808000 -10800 1 WARST} + {2752110000 -14400 0 WART} + {2770862400 -10800 1 WARST} + {2783559600 -14400 0 WART} + {2802312000 -10800 1 WARST} + {2815009200 -14400 0 WART} + {2833761600 -10800 1 WARST} + {2847063600 -14400 0 WART} + {2865211200 -10800 1 WARST} + {2878513200 -14400 0 WART} + {2896660800 -10800 1 WARST} + {2909962800 -14400 0 WART} + {2928110400 -10800 1 WARST} + {2941412400 -14400 0 WART} + {2960164800 -10800 1 WARST} + {2972862000 -14400 0 WART} + {2991614400 -10800 1 WARST} + {3004311600 -14400 0 WART} + {3023064000 -10800 1 WARST} + {3036366000 -14400 0 WART} + {3054513600 -10800 1 WARST} + {3067815600 -14400 0 WART} + {3085963200 -10800 1 WARST} + {3099265200 -14400 0 WART} + {3118017600 -10800 1 WARST} + {3130714800 -14400 0 WART} + {3149467200 -10800 1 WARST} + {3162164400 -14400 0 WART} + {3180916800 -10800 1 WARST} + {3193614000 -14400 0 WART} + {3212366400 -10800 1 WARST} + {3225668400 -14400 0 WART} + {3243816000 -10800 1 WARST} + {3257118000 -14400 0 WART} + {3275265600 -10800 1 WARST} + {3288567600 -14400 0 WART} + {3307320000 -10800 1 WARST} + {3320017200 -14400 0 WART} + {3338769600 -10800 1 WARST} + {3351466800 -14400 0 WART} + {3370219200 -10800 1 WARST} + {3383521200 -14400 0 WART} + {3401668800 -10800 1 WARST} + {3414970800 -14400 0 WART} + {3433118400 -10800 1 WARST} + {3446420400 -14400 0 WART} + {3464568000 -10800 1 WARST} + {3477870000 -14400 0 WART} + {3496622400 -10800 1 WARST} + {3509319600 -14400 0 WART} + {3528072000 -10800 1 WARST} + {3540769200 -14400 0 WART} + {3559521600 -10800 1 WARST} + {3572823600 -14400 0 WART} + {3590971200 -10800 1 WARST} + {3604273200 -14400 0 WART} + {3622420800 -10800 1 WARST} + {3635722800 -14400 0 WART} + {3654475200 -10800 1 WARST} + {3667172400 -14400 0 WART} + {3685924800 -10800 1 WARST} + {3698622000 -14400 0 WART} + {3717374400 -10800 1 WARST} + {3730676400 -14400 0 WART} + {3748824000 -10800 1 WARST} + {3762126000 -14400 0 WART} + {3780273600 -10800 1 WARST} + {3793575600 -14400 0 WART} + {3811723200 -10800 1 WARST} + {3825025200 -14400 0 WART} + {3843777600 -10800 1 WARST} + {3856474800 -14400 0 WART} + {3875227200 -10800 1 WARST} + {3887924400 -14400 0 WART} + {3906676800 -10800 1 WARST} + {3919978800 -14400 0 WART} + {3938126400 -10800 1 WARST} + {3951428400 -14400 0 WART} + {3969576000 -10800 1 WARST} + {3982878000 -14400 0 WART} + {4001630400 -10800 1 WARST} + {4014327600 -14400 0 WART} + {4033080000 -10800 1 WARST} + {4045777200 -14400 0 WART} + {4064529600 -10800 1 WARST} + {4077226800 -14400 0 WART} + {4095979200 -10800 1 WARST} +} diff --git a/library/tzdata/America/Argentina/Tucuman b/library/tzdata/America/Argentina/Tucuman index 6d12cb6..41ac5c7 100644 --- a/library/tzdata/America/Argentina/Tucuman +++ b/library/tzdata/America/Argentina/Tucuman @@ -1,250 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Tucuman) { - {-9223372036854775808 -15652 0 LMT} - {-2372096348 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -14400 0 WART} - {687931200 -7200 0 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1086058800 -14400 0 WART} - {1087099200 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224385200 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Tucuman) { + {-9223372036854775808 -15652 0 LMT} + {-2372096348 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -14400 0 WART} + {687931200 -7200 0 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1086058800 -14400 0 WART} + {1087099200 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224385200 -7200 1 ARST} + {1237082400 -10800 0 ART} + {1255834800 -7200 1 ARST} + {1269136800 -10800 0 ART} + {1287284400 -7200 1 ARST} + {1300586400 -10800 0 ART} + {1318734000 -7200 1 ARST} + {1332036000 -10800 0 ART} + {1350788400 -7200 1 ARST} + {1363485600 -10800 0 ART} + {1382238000 -7200 1 ARST} + {1394935200 -10800 0 ART} + {1413687600 -7200 1 ARST} + {1426384800 -10800 0 ART} + {1445137200 -7200 1 ARST} + {1458439200 -10800 0 ART} + {1476586800 -7200 1 ARST} + {1489888800 -10800 0 ART} + {1508036400 -7200 1 ARST} + {1521338400 -10800 0 ART} + {1540090800 -7200 1 ARST} + {1552788000 -10800 0 ART} + {1571540400 -7200 1 ARST} + {1584237600 -10800 0 ART} + {1602990000 -7200 1 ARST} + {1616292000 -10800 0 ART} + {1634439600 -7200 1 ARST} + {1647741600 -10800 0 ART} + {1665889200 -7200 1 ARST} + {1679191200 -10800 0 ART} + {1697338800 -7200 1 ARST} + {1710640800 -10800 0 ART} + {1729393200 -7200 1 ARST} + {1742090400 -10800 0 ART} + {1760842800 -7200 1 ARST} + {1773540000 -10800 0 ART} + {1792292400 -7200 1 ARST} + {1805594400 -10800 0 ART} + {1823742000 -7200 1 ARST} + {1837044000 -10800 0 ART} + {1855191600 -7200 1 ARST} + {1868493600 -10800 0 ART} + {1887246000 -7200 1 ARST} + {1899943200 -10800 0 ART} + {1918695600 -7200 1 ARST} + {1931392800 -10800 0 ART} + {1950145200 -7200 1 ARST} + {1963447200 -10800 0 ART} + {1981594800 -7200 1 ARST} + {1994896800 -10800 0 ART} + {2013044400 -7200 1 ARST} + {2026346400 -10800 0 ART} + {2044494000 -7200 1 ARST} + {2057796000 -10800 0 ART} + {2076548400 -7200 1 ARST} + {2089245600 -10800 0 ART} + {2107998000 -7200 1 ARST} + {2120695200 -10800 0 ART} + {2139447600 -7200 1 ARST} + {2152749600 -10800 0 ART} + {2170897200 -7200 1 ARST} + {2184199200 -10800 0 ART} + {2202346800 -7200 1 ARST} + {2215648800 -10800 0 ART} + {2234401200 -7200 1 ARST} + {2247098400 -10800 0 ART} + {2265850800 -7200 1 ARST} + {2278548000 -10800 0 ART} + {2297300400 -7200 1 ARST} + {2309997600 -10800 0 ART} + {2328750000 -7200 1 ARST} + {2342052000 -10800 0 ART} + {2360199600 -7200 1 ARST} + {2373501600 -10800 0 ART} + {2391649200 -7200 1 ARST} + {2404951200 -10800 0 ART} + {2423703600 -7200 1 ARST} + {2436400800 -10800 0 ART} + {2455153200 -7200 1 ARST} + {2467850400 -10800 0 ART} + {2486602800 -7200 1 ARST} + {2499904800 -10800 0 ART} + {2518052400 -7200 1 ARST} + {2531354400 -10800 0 ART} + {2549502000 -7200 1 ARST} + {2562804000 -10800 0 ART} + {2580951600 -7200 1 ARST} + {2594253600 -10800 0 ART} + {2613006000 -7200 1 ARST} + {2625703200 -10800 0 ART} + {2644455600 -7200 1 ARST} + {2657152800 -10800 0 ART} + {2675905200 -7200 1 ARST} + {2689207200 -10800 0 ART} + {2707354800 -7200 1 ARST} + {2720656800 -10800 0 ART} + {2738804400 -7200 1 ARST} + {2752106400 -10800 0 ART} + {2770858800 -7200 1 ARST} + {2783556000 -10800 0 ART} + {2802308400 -7200 1 ARST} + {2815005600 -10800 0 ART} + {2833758000 -7200 1 ARST} + {2847060000 -10800 0 ART} + {2865207600 -7200 1 ARST} + {2878509600 -10800 0 ART} + {2896657200 -7200 1 ARST} + {2909959200 -10800 0 ART} + {2928106800 -7200 1 ARST} + {2941408800 -10800 0 ART} + {2960161200 -7200 1 ARST} + {2972858400 -10800 0 ART} + {2991610800 -7200 1 ARST} + {3004308000 -10800 0 ART} + {3023060400 -7200 1 ARST} + {3036362400 -10800 0 ART} + {3054510000 -7200 1 ARST} + {3067812000 -10800 0 ART} + {3085959600 -7200 1 ARST} + {3099261600 -10800 0 ART} + {3118014000 -7200 1 ARST} + {3130711200 -10800 0 ART} + {3149463600 -7200 1 ARST} + {3162160800 -10800 0 ART} + {3180913200 -7200 1 ARST} + {3193610400 -10800 0 ART} + {3212362800 -7200 1 ARST} + {3225664800 -10800 0 ART} + {3243812400 -7200 1 ARST} + {3257114400 -10800 0 ART} + {3275262000 -7200 1 ARST} + {3288564000 -10800 0 ART} + {3307316400 -7200 1 ARST} + {3320013600 -10800 0 ART} + {3338766000 -7200 1 ARST} + {3351463200 -10800 0 ART} + {3370215600 -7200 1 ARST} + {3383517600 -10800 0 ART} + {3401665200 -7200 1 ARST} + {3414967200 -10800 0 ART} + {3433114800 -7200 1 ARST} + {3446416800 -10800 0 ART} + {3464564400 -7200 1 ARST} + {3477866400 -10800 0 ART} + {3496618800 -7200 1 ARST} + {3509316000 -10800 0 ART} + {3528068400 -7200 1 ARST} + {3540765600 -10800 0 ART} + {3559518000 -7200 1 ARST} + {3572820000 -10800 0 ART} + {3590967600 -7200 1 ARST} + {3604269600 -10800 0 ART} + {3622417200 -7200 1 ARST} + {3635719200 -10800 0 ART} + {3654471600 -7200 1 ARST} + {3667168800 -10800 0 ART} + {3685921200 -7200 1 ARST} + {3698618400 -10800 0 ART} + {3717370800 -7200 1 ARST} + {3730672800 -10800 0 ART} + {3748820400 -7200 1 ARST} + {3762122400 -10800 0 ART} + {3780270000 -7200 1 ARST} + {3793572000 -10800 0 ART} + {3811719600 -7200 1 ARST} + {3825021600 -10800 0 ART} + {3843774000 -7200 1 ARST} + {3856471200 -10800 0 ART} + {3875223600 -7200 1 ARST} + {3887920800 -10800 0 ART} + {3906673200 -7200 1 ARST} + {3919975200 -10800 0 ART} + {3938122800 -7200 1 ARST} + {3951424800 -10800 0 ART} + {3969572400 -7200 1 ARST} + {3982874400 -10800 0 ART} + {4001626800 -7200 1 ARST} + {4014324000 -10800 0 ART} + {4033076400 -7200 1 ARST} + {4045773600 -10800 0 ART} + {4064526000 -7200 1 ARST} + {4077223200 -10800 0 ART} + {4095975600 -7200 1 ARST} +} diff --git a/library/tzdata/America/Argentina/Ushuaia b/library/tzdata/America/Argentina/Ushuaia index 4fcf92d..b7d97b4 100644 --- a/library/tzdata/America/Argentina/Ushuaia +++ b/library/tzdata/America/Argentina/Ushuaia @@ -1,68 +1,68 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Ushuaia) { - {-9223372036854775808 -16392 0 LMT} - {-2372095608 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1085886000 -14400 0 WART} - {1087704000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Ushuaia) { + {-9223372036854775808 -16392 0 LMT} + {-2372095608 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1085886000 -14400 0 WART} + {1087704000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Aruba b/library/tzdata/America/Aruba index 92f182d..c4558ab 100644 --- a/library/tzdata/America/Aruba +++ b/library/tzdata/America/Aruba @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Aruba) { - {-9223372036854775808 -16824 0 LMT} - {-1826738376 -16200 0 ANT} - {-157750200 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Aruba) { + {-9223372036854775808 -16824 0 LMT} + {-1826738376 -16200 0 ANT} + {-157750200 -14400 0 AST} +} diff --git a/library/tzdata/America/Asuncion b/library/tzdata/America/Asuncion index fde228c..44e6f71 100644 --- a/library/tzdata/America/Asuncion +++ b/library/tzdata/America/Asuncion @@ -1,259 +1,259 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Asuncion) { - {-9223372036854775808 -13840 0 LMT} - {-2524507760 -13840 0 AMT} - {-1206389360 -14400 0 PYT} - {86760000 -10800 0 PYT} - {134017200 -14400 0 PYT} - {162878400 -14400 0 PYT} - {181368000 -10800 1 PYST} - {194497200 -14400 0 PYT} - {212990400 -10800 1 PYST} - {226033200 -14400 0 PYT} - {244526400 -10800 1 PYST} - {257569200 -14400 0 PYT} - {276062400 -10800 1 PYST} - {291783600 -14400 0 PYT} - {307598400 -10800 1 PYST} - {323406000 -14400 0 PYT} - {339220800 -10800 1 PYST} - {354942000 -14400 0 PYT} - {370756800 -10800 1 PYST} - {386478000 -14400 0 PYT} - {402292800 -10800 1 PYST} - {418014000 -14400 0 PYT} - {433828800 -10800 1 PYST} - {449636400 -14400 0 PYT} - {465451200 -10800 1 PYST} - {481172400 -14400 0 PYT} - {496987200 -10800 1 PYST} - {512708400 -14400 0 PYT} - {528523200 -10800 1 PYST} - {544244400 -14400 0 PYT} - {560059200 -10800 1 PYST} - {575866800 -14400 0 PYT} - {591681600 -10800 1 PYST} - {607402800 -14400 0 PYT} - {625032000 -10800 1 PYST} - {638938800 -14400 0 PYT} - {654753600 -10800 1 PYST} - {670474800 -14400 0 PYT} - {686721600 -10800 1 PYST} - {699418800 -14400 0 PYT} - {718257600 -10800 1 PYST} - {733546800 -14400 0 PYT} - {749448000 -10800 1 PYST} - {762318000 -14400 0 PYT} - {780984000 -10800 1 PYST} - {793767600 -14400 0 PYT} - {812520000 -10800 1 PYST} - {825649200 -14400 0 PYT} - {844574400 -10800 1 PYST} - {856666800 -14400 0 PYT} - {876024000 -10800 1 PYST} - {888721200 -14400 0 PYT} - {907473600 -10800 1 PYST} - {920775600 -14400 0 PYT} - {938923200 -10800 1 PYST} - {952225200 -14400 0 PYT} - {970372800 -10800 1 PYST} - {983674800 -14400 0 PYT} - {1002427200 -10800 1 PYST} - {1018148400 -14400 0 PYT} - {1030852800 -10800 1 PYST} - {1049598000 -14400 0 PYT} - {1062907200 -10800 1 PYST} - {1081047600 -14400 0 PYT} - {1097985600 -10800 1 PYST} - {1110682800 -14400 0 PYT} - {1129435200 -10800 1 PYST} - {1142132400 -14400 0 PYT} - {1160884800 -10800 1 PYST} - {1173582000 -14400 0 PYT} - {1192939200 -10800 1 PYST} - {1205031600 -14400 0 PYT} - {1224388800 -10800 1 PYST} - {1236481200 -14400 0 PYT} - {1255838400 -10800 1 PYST} - {1268535600 -14400 0 PYT} - {1287288000 -10800 1 PYST} - {1299985200 -14400 0 PYT} - {1318737600 -10800 1 PYST} - {1331434800 -14400 0 PYT} - {1350792000 -10800 1 PYST} - {1362884400 -14400 0 PYT} - {1382241600 -10800 1 PYST} - {1394334000 -14400 0 PYT} - {1413691200 -10800 1 PYST} - {1425783600 -14400 0 PYT} - {1445140800 -10800 1 PYST} - {1457838000 -14400 0 PYT} - {1476590400 -10800 1 PYST} - {1489287600 -14400 0 PYT} - {1508040000 -10800 1 PYST} - {1520737200 -14400 0 PYT} - {1540094400 -10800 1 PYST} - {1552186800 -14400 0 PYT} - {1571544000 -10800 1 PYST} - {1583636400 -14400 0 PYT} - {1602993600 -10800 1 PYST} - {1615690800 -14400 0 PYT} - {1634443200 -10800 1 PYST} - {1647140400 -14400 0 PYT} - {1665892800 -10800 1 PYST} - {1678590000 -14400 0 PYT} - {1697342400 -10800 1 PYST} - {1710039600 -14400 0 PYT} - {1729396800 -10800 1 PYST} - {1741489200 -14400 0 PYT} - {1760846400 -10800 1 PYST} - {1772938800 -14400 0 PYT} - {1792296000 -10800 1 PYST} - {1804993200 -14400 0 PYT} - {1823745600 -10800 1 PYST} - {1836442800 -14400 0 PYT} - {1855195200 -10800 1 PYST} - {1867892400 -14400 0 PYT} - {1887249600 -10800 1 PYST} - {1899342000 -14400 0 PYT} - {1918699200 -10800 1 PYST} - {1930791600 -14400 0 PYT} - {1950148800 -10800 1 PYST} - {1962846000 -14400 0 PYT} - {1981598400 -10800 1 PYST} - {1994295600 -14400 0 PYT} - {2013048000 -10800 1 PYST} - {2025745200 -14400 0 PYT} - {2044497600 -10800 1 PYST} - {2057194800 -14400 0 PYT} - {2076552000 -10800 1 PYST} - {2088644400 -14400 0 PYT} - {2108001600 -10800 1 PYST} - {2120094000 -14400 0 PYT} - {2139451200 -10800 1 PYST} - {2152148400 -14400 0 PYT} - {2170900800 -10800 1 PYST} - {2183598000 -14400 0 PYT} - {2202350400 -10800 1 PYST} - {2215047600 -14400 0 PYT} - {2234404800 -10800 1 PYST} - {2246497200 -14400 0 PYT} - {2265854400 -10800 1 PYST} - {2277946800 -14400 0 PYT} - {2297304000 -10800 1 PYST} - {2309396400 -14400 0 PYT} - {2328753600 -10800 1 PYST} - {2341450800 -14400 0 PYT} - {2360203200 -10800 1 PYST} - {2372900400 -14400 0 PYT} - {2391652800 -10800 1 PYST} - {2404350000 -14400 0 PYT} - {2423707200 -10800 1 PYST} - {2435799600 -14400 0 PYT} - {2455156800 -10800 1 PYST} - {2467249200 -14400 0 PYT} - {2486606400 -10800 1 PYST} - {2499303600 -14400 0 PYT} - {2518056000 -10800 1 PYST} - {2530753200 -14400 0 PYT} - {2549505600 -10800 1 PYST} - {2562202800 -14400 0 PYT} - {2580955200 -10800 1 PYST} - {2593652400 -14400 0 PYT} - {2613009600 -10800 1 PYST} - {2625102000 -14400 0 PYT} - {2644459200 -10800 1 PYST} - {2656551600 -14400 0 PYT} - {2675908800 -10800 1 PYST} - {2688606000 -14400 0 PYT} - {2707358400 -10800 1 PYST} - {2720055600 -14400 0 PYT} - {2738808000 -10800 1 PYST} - {2751505200 -14400 0 PYT} - {2770862400 -10800 1 PYST} - {2782954800 -14400 0 PYT} - {2802312000 -10800 1 PYST} - {2814404400 -14400 0 PYT} - {2833761600 -10800 1 PYST} - {2846458800 -14400 0 PYT} - {2865211200 -10800 1 PYST} - {2877908400 -14400 0 PYT} - {2896660800 -10800 1 PYST} - {2909358000 -14400 0 PYT} - {2928110400 -10800 1 PYST} - {2940807600 -14400 0 PYT} - {2960164800 -10800 1 PYST} - {2972257200 -14400 0 PYT} - {2991614400 -10800 1 PYST} - {3003706800 -14400 0 PYT} - {3023064000 -10800 1 PYST} - {3035761200 -14400 0 PYT} - {3054513600 -10800 1 PYST} - {3067210800 -14400 0 PYT} - {3085963200 -10800 1 PYST} - {3098660400 -14400 0 PYT} - {3118017600 -10800 1 PYST} - {3130110000 -14400 0 PYT} - {3149467200 -10800 1 PYST} - {3161559600 -14400 0 PYT} - {3180916800 -10800 1 PYST} - {3193009200 -14400 0 PYT} - {3212366400 -10800 1 PYST} - {3225063600 -14400 0 PYT} - {3243816000 -10800 1 PYST} - {3256513200 -14400 0 PYT} - {3275265600 -10800 1 PYST} - {3287962800 -14400 0 PYT} - {3307320000 -10800 1 PYST} - {3319412400 -14400 0 PYT} - {3338769600 -10800 1 PYST} - {3350862000 -14400 0 PYT} - {3370219200 -10800 1 PYST} - {3382916400 -14400 0 PYT} - {3401668800 -10800 1 PYST} - {3414366000 -14400 0 PYT} - {3433118400 -10800 1 PYST} - {3445815600 -14400 0 PYT} - {3464568000 -10800 1 PYST} - {3477265200 -14400 0 PYT} - {3496622400 -10800 1 PYST} - {3508714800 -14400 0 PYT} - {3528072000 -10800 1 PYST} - {3540164400 -14400 0 PYT} - {3559521600 -10800 1 PYST} - {3572218800 -14400 0 PYT} - {3590971200 -10800 1 PYST} - {3603668400 -14400 0 PYT} - {3622420800 -10800 1 PYST} - {3635118000 -14400 0 PYT} - {3654475200 -10800 1 PYST} - {3666567600 -14400 0 PYT} - {3685924800 -10800 1 PYST} - {3698017200 -14400 0 PYT} - {3717374400 -10800 1 PYST} - {3730071600 -14400 0 PYT} - {3748824000 -10800 1 PYST} - {3761521200 -14400 0 PYT} - {3780273600 -10800 1 PYST} - {3792970800 -14400 0 PYT} - {3811723200 -10800 1 PYST} - {3824420400 -14400 0 PYT} - {3843777600 -10800 1 PYST} - {3855870000 -14400 0 PYT} - {3875227200 -10800 1 PYST} - {3887319600 -14400 0 PYT} - {3906676800 -10800 1 PYST} - {3919374000 -14400 0 PYT} - {3938126400 -10800 1 PYST} - {3950823600 -14400 0 PYT} - {3969576000 -10800 1 PYST} - {3982273200 -14400 0 PYT} - {4001630400 -10800 1 PYST} - {4013722800 -14400 0 PYT} - {4033080000 -10800 1 PYST} - {4045172400 -14400 0 PYT} - {4064529600 -10800 1 PYST} - {4076622000 -14400 0 PYT} - {4095979200 -10800 1 PYST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Asuncion) { + {-9223372036854775808 -13840 0 LMT} + {-2524507760 -13840 0 AMT} + {-1206389360 -14400 0 PYT} + {86760000 -10800 0 PYT} + {134017200 -14400 0 PYT} + {162878400 -14400 0 PYT} + {181368000 -10800 1 PYST} + {194497200 -14400 0 PYT} + {212990400 -10800 1 PYST} + {226033200 -14400 0 PYT} + {244526400 -10800 1 PYST} + {257569200 -14400 0 PYT} + {276062400 -10800 1 PYST} + {291783600 -14400 0 PYT} + {307598400 -10800 1 PYST} + {323406000 -14400 0 PYT} + {339220800 -10800 1 PYST} + {354942000 -14400 0 PYT} + {370756800 -10800 1 PYST} + {386478000 -14400 0 PYT} + {402292800 -10800 1 PYST} + {418014000 -14400 0 PYT} + {433828800 -10800 1 PYST} + {449636400 -14400 0 PYT} + {465451200 -10800 1 PYST} + {481172400 -14400 0 PYT} + {496987200 -10800 1 PYST} + {512708400 -14400 0 PYT} + {528523200 -10800 1 PYST} + {544244400 -14400 0 PYT} + {560059200 -10800 1 PYST} + {575866800 -14400 0 PYT} + {591681600 -10800 1 PYST} + {607402800 -14400 0 PYT} + {625032000 -10800 1 PYST} + {638938800 -14400 0 PYT} + {654753600 -10800 1 PYST} + {670474800 -14400 0 PYT} + {686721600 -10800 1 PYST} + {699418800 -14400 0 PYT} + {718257600 -10800 1 PYST} + {733546800 -14400 0 PYT} + {749448000 -10800 1 PYST} + {762318000 -14400 0 PYT} + {780984000 -10800 1 PYST} + {793767600 -14400 0 PYT} + {812520000 -10800 1 PYST} + {825649200 -14400 0 PYT} + {844574400 -10800 1 PYST} + {856666800 -14400 0 PYT} + {876024000 -10800 1 PYST} + {888721200 -14400 0 PYT} + {907473600 -10800 1 PYST} + {920775600 -14400 0 PYT} + {938923200 -10800 1 PYST} + {952225200 -14400 0 PYT} + {970372800 -10800 1 PYST} + {983674800 -14400 0 PYT} + {1002427200 -10800 1 PYST} + {1018148400 -14400 0 PYT} + {1030852800 -10800 1 PYST} + {1049598000 -14400 0 PYT} + {1062907200 -10800 1 PYST} + {1081047600 -14400 0 PYT} + {1097985600 -10800 1 PYST} + {1110682800 -14400 0 PYT} + {1129435200 -10800 1 PYST} + {1142132400 -14400 0 PYT} + {1160884800 -10800 1 PYST} + {1173582000 -14400 0 PYT} + {1192939200 -10800 1 PYST} + {1205031600 -14400 0 PYT} + {1224388800 -10800 1 PYST} + {1236481200 -14400 0 PYT} + {1255838400 -10800 1 PYST} + {1268535600 -14400 0 PYT} + {1287288000 -10800 1 PYST} + {1299985200 -14400 0 PYT} + {1318737600 -10800 1 PYST} + {1331434800 -14400 0 PYT} + {1350792000 -10800 1 PYST} + {1362884400 -14400 0 PYT} + {1382241600 -10800 1 PYST} + {1394334000 -14400 0 PYT} + {1413691200 -10800 1 PYST} + {1425783600 -14400 0 PYT} + {1445140800 -10800 1 PYST} + {1457838000 -14400 0 PYT} + {1476590400 -10800 1 PYST} + {1489287600 -14400 0 PYT} + {1508040000 -10800 1 PYST} + {1520737200 -14400 0 PYT} + {1540094400 -10800 1 PYST} + {1552186800 -14400 0 PYT} + {1571544000 -10800 1 PYST} + {1583636400 -14400 0 PYT} + {1602993600 -10800 1 PYST} + {1615690800 -14400 0 PYT} + {1634443200 -10800 1 PYST} + {1647140400 -14400 0 PYT} + {1665892800 -10800 1 PYST} + {1678590000 -14400 0 PYT} + {1697342400 -10800 1 PYST} + {1710039600 -14400 0 PYT} + {1729396800 -10800 1 PYST} + {1741489200 -14400 0 PYT} + {1760846400 -10800 1 PYST} + {1772938800 -14400 0 PYT} + {1792296000 -10800 1 PYST} + {1804993200 -14400 0 PYT} + {1823745600 -10800 1 PYST} + {1836442800 -14400 0 PYT} + {1855195200 -10800 1 PYST} + {1867892400 -14400 0 PYT} + {1887249600 -10800 1 PYST} + {1899342000 -14400 0 PYT} + {1918699200 -10800 1 PYST} + {1930791600 -14400 0 PYT} + {1950148800 -10800 1 PYST} + {1962846000 -14400 0 PYT} + {1981598400 -10800 1 PYST} + {1994295600 -14400 0 PYT} + {2013048000 -10800 1 PYST} + {2025745200 -14400 0 PYT} + {2044497600 -10800 1 PYST} + {2057194800 -14400 0 PYT} + {2076552000 -10800 1 PYST} + {2088644400 -14400 0 PYT} + {2108001600 -10800 1 PYST} + {2120094000 -14400 0 PYT} + {2139451200 -10800 1 PYST} + {2152148400 -14400 0 PYT} + {2170900800 -10800 1 PYST} + {2183598000 -14400 0 PYT} + {2202350400 -10800 1 PYST} + {2215047600 -14400 0 PYT} + {2234404800 -10800 1 PYST} + {2246497200 -14400 0 PYT} + {2265854400 -10800 1 PYST} + {2277946800 -14400 0 PYT} + {2297304000 -10800 1 PYST} + {2309396400 -14400 0 PYT} + {2328753600 -10800 1 PYST} + {2341450800 -14400 0 PYT} + {2360203200 -10800 1 PYST} + {2372900400 -14400 0 PYT} + {2391652800 -10800 1 PYST} + {2404350000 -14400 0 PYT} + {2423707200 -10800 1 PYST} + {2435799600 -14400 0 PYT} + {2455156800 -10800 1 PYST} + {2467249200 -14400 0 PYT} + {2486606400 -10800 1 PYST} + {2499303600 -14400 0 PYT} + {2518056000 -10800 1 PYST} + {2530753200 -14400 0 PYT} + {2549505600 -10800 1 PYST} + {2562202800 -14400 0 PYT} + {2580955200 -10800 1 PYST} + {2593652400 -14400 0 PYT} + {2613009600 -10800 1 PYST} + {2625102000 -14400 0 PYT} + {2644459200 -10800 1 PYST} + {2656551600 -14400 0 PYT} + {2675908800 -10800 1 PYST} + {2688606000 -14400 0 PYT} + {2707358400 -10800 1 PYST} + {2720055600 -14400 0 PYT} + {2738808000 -10800 1 PYST} + {2751505200 -14400 0 PYT} + {2770862400 -10800 1 PYST} + {2782954800 -14400 0 PYT} + {2802312000 -10800 1 PYST} + {2814404400 -14400 0 PYT} + {2833761600 -10800 1 PYST} + {2846458800 -14400 0 PYT} + {2865211200 -10800 1 PYST} + {2877908400 -14400 0 PYT} + {2896660800 -10800 1 PYST} + {2909358000 -14400 0 PYT} + {2928110400 -10800 1 PYST} + {2940807600 -14400 0 PYT} + {2960164800 -10800 1 PYST} + {2972257200 -14400 0 PYT} + {2991614400 -10800 1 PYST} + {3003706800 -14400 0 PYT} + {3023064000 -10800 1 PYST} + {3035761200 -14400 0 PYT} + {3054513600 -10800 1 PYST} + {3067210800 -14400 0 PYT} + {3085963200 -10800 1 PYST} + {3098660400 -14400 0 PYT} + {3118017600 -10800 1 PYST} + {3130110000 -14400 0 PYT} + {3149467200 -10800 1 PYST} + {3161559600 -14400 0 PYT} + {3180916800 -10800 1 PYST} + {3193009200 -14400 0 PYT} + {3212366400 -10800 1 PYST} + {3225063600 -14400 0 PYT} + {3243816000 -10800 1 PYST} + {3256513200 -14400 0 PYT} + {3275265600 -10800 1 PYST} + {3287962800 -14400 0 PYT} + {3307320000 -10800 1 PYST} + {3319412400 -14400 0 PYT} + {3338769600 -10800 1 PYST} + {3350862000 -14400 0 PYT} + {3370219200 -10800 1 PYST} + {3382916400 -14400 0 PYT} + {3401668800 -10800 1 PYST} + {3414366000 -14400 0 PYT} + {3433118400 -10800 1 PYST} + {3445815600 -14400 0 PYT} + {3464568000 -10800 1 PYST} + {3477265200 -14400 0 PYT} + {3496622400 -10800 1 PYST} + {3508714800 -14400 0 PYT} + {3528072000 -10800 1 PYST} + {3540164400 -14400 0 PYT} + {3559521600 -10800 1 PYST} + {3572218800 -14400 0 PYT} + {3590971200 -10800 1 PYST} + {3603668400 -14400 0 PYT} + {3622420800 -10800 1 PYST} + {3635118000 -14400 0 PYT} + {3654475200 -10800 1 PYST} + {3666567600 -14400 0 PYT} + {3685924800 -10800 1 PYST} + {3698017200 -14400 0 PYT} + {3717374400 -10800 1 PYST} + {3730071600 -14400 0 PYT} + {3748824000 -10800 1 PYST} + {3761521200 -14400 0 PYT} + {3780273600 -10800 1 PYST} + {3792970800 -14400 0 PYT} + {3811723200 -10800 1 PYST} + {3824420400 -14400 0 PYT} + {3843777600 -10800 1 PYST} + {3855870000 -14400 0 PYT} + {3875227200 -10800 1 PYST} + {3887319600 -14400 0 PYT} + {3906676800 -10800 1 PYST} + {3919374000 -14400 0 PYT} + {3938126400 -10800 1 PYST} + {3950823600 -14400 0 PYT} + {3969576000 -10800 1 PYST} + {3982273200 -14400 0 PYT} + {4001630400 -10800 1 PYST} + {4013722800 -14400 0 PYT} + {4033080000 -10800 1 PYST} + {4045172400 -14400 0 PYT} + {4064529600 -10800 1 PYST} + {4076622000 -14400 0 PYT} + {4095979200 -10800 1 PYST} +} diff --git a/library/tzdata/America/Atikokan b/library/tzdata/America/Atikokan index ca0ac1c..b34b7ff 100755 --- a/library/tzdata/America/Atikokan +++ b/library/tzdata/America/Atikokan @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Atikokan) { - {-9223372036854775808 -21988 0 LMT} - {-2366733212 -21600 0 CST} - {-1632067200 -18000 1 CDT} - {-1614790800 -21600 0 CST} - {-923248800 -18000 1 CDT} - {-880214400 -18000 0 CWT} - {-769395600 -18000 1 CPT} - {-765388800 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Atikokan) { + {-9223372036854775808 -21988 0 LMT} + {-2366733212 -21600 0 CST} + {-1632067200 -18000 1 CDT} + {-1614790800 -21600 0 CST} + {-923248800 -18000 1 CDT} + {-880214400 -18000 0 CWT} + {-769395600 -18000 1 CPT} + {-765388800 -18000 0 EST} +} diff --git a/library/tzdata/America/Atka b/library/tzdata/America/Atka index 8da3302..2767382 100644 --- a/library/tzdata/America/Atka +++ b/library/tzdata/America/Atka @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Adak)]} { - LoadTimeZoneFile America/Adak -} -set TZData(:America/Atka) $TZData(:America/Adak) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Adak)]} { + LoadTimeZoneFile America/Adak +} +set TZData(:America/Atka) $TZData(:America/Adak) diff --git a/library/tzdata/America/Bahia b/library/tzdata/America/Bahia index b10a939..3225b72 100644 --- a/library/tzdata/America/Bahia +++ b/library/tzdata/America/Bahia @@ -1,65 +1,65 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Bahia) { - {-9223372036854775808 -9244 0 LMT} - {-1767216356 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {656478000 -7200 1 BRST} - {666756000 -10800 0 BRT} - {687927600 -7200 1 BRST} - {697600800 -10800 0 BRT} - {719982000 -7200 1 BRST} - {728445600 -10800 0 BRT} - {750826800 -7200 1 BRST} - {761709600 -10800 0 BRT} - {782276400 -7200 1 BRST} - {793159200 -10800 0 BRT} - {813726000 -7200 1 BRST} - {824004000 -10800 0 BRT} - {844570800 -7200 1 BRST} - {856058400 -10800 0 BRT} - {876106800 -7200 1 BRST} - {888717600 -10800 0 BRT} - {908074800 -7200 1 BRST} - {919562400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {982461600 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1036292400 -7200 1 BRST} - {1045360800 -10800 0 BRT} - {1064368800 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Bahia) { + {-9223372036854775808 -9244 0 LMT} + {-1767216356 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {656478000 -7200 1 BRST} + {666756000 -10800 0 BRT} + {687927600 -7200 1 BRST} + {697600800 -10800 0 BRT} + {719982000 -7200 1 BRST} + {728445600 -10800 0 BRT} + {750826800 -7200 1 BRST} + {761709600 -10800 0 BRT} + {782276400 -7200 1 BRST} + {793159200 -10800 0 BRT} + {813726000 -7200 1 BRST} + {824004000 -10800 0 BRT} + {844570800 -7200 1 BRST} + {856058400 -10800 0 BRT} + {876106800 -7200 1 BRST} + {888717600 -10800 0 BRT} + {908074800 -7200 1 BRST} + {919562400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {982461600 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1036292400 -7200 1 BRST} + {1045360800 -10800 0 BRT} + {1064368800 -10800 0 BRT} +} diff --git a/library/tzdata/America/Barbados b/library/tzdata/America/Barbados index 5c06408..3e7c244 100644 --- a/library/tzdata/America/Barbados +++ b/library/tzdata/America/Barbados @@ -1,15 +1,15 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Barbados) { - {-9223372036854775808 -14308 0 LMT} - {-1451678492 -14308 0 BMT} - {-1199217692 -14400 0 AST} - {234943200 -10800 1 ADT} - {244616400 -14400 0 AST} - {261554400 -10800 1 ADT} - {276066000 -14400 0 AST} - {293004000 -10800 1 ADT} - {307515600 -14400 0 AST} - {325058400 -10800 1 ADT} - {338706000 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Barbados) { + {-9223372036854775808 -14308 0 LMT} + {-1451678492 -14308 0 BMT} + {-1199217692 -14400 0 AST} + {234943200 -10800 1 ADT} + {244616400 -14400 0 AST} + {261554400 -10800 1 ADT} + {276066000 -14400 0 AST} + {293004000 -10800 1 ADT} + {307515600 -14400 0 AST} + {325058400 -10800 1 ADT} + {338706000 -14400 0 AST} +} diff --git a/library/tzdata/America/Belem b/library/tzdata/America/Belem index ed92fd1..d68c584 100644 --- a/library/tzdata/America/Belem +++ b/library/tzdata/America/Belem @@ -1,35 +1,35 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Belem) { - {-9223372036854775808 -11636 0 LMT} - {-1767213964 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {590032800 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Belem) { + {-9223372036854775808 -11636 0 LMT} + {-1767213964 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {590032800 -10800 0 BRT} +} diff --git a/library/tzdata/America/Belize b/library/tzdata/America/Belize index 547fd72..505f3f6 100644 --- a/library/tzdata/America/Belize +++ b/library/tzdata/America/Belize @@ -1,60 +1,60 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Belize) { - {-9223372036854775808 -21168 0 LMT} - {-1822500432 -21600 0 CST} - {-1616954400 -19800 1 CHDT} - {-1606069800 -21600 0 CST} - {-1585504800 -19800 1 CHDT} - {-1574015400 -21600 0 CST} - {-1554055200 -19800 1 CHDT} - {-1542565800 -21600 0 CST} - {-1522605600 -19800 1 CHDT} - {-1511116200 -21600 0 CST} - {-1490551200 -19800 1 CHDT} - {-1479666600 -21600 0 CST} - {-1459101600 -19800 1 CHDT} - {-1448217000 -21600 0 CST} - {-1427652000 -19800 1 CHDT} - {-1416162600 -21600 0 CST} - {-1396202400 -19800 1 CHDT} - {-1384713000 -21600 0 CST} - {-1364752800 -19800 1 CHDT} - {-1353263400 -21600 0 CST} - {-1333303200 -19800 1 CHDT} - {-1321813800 -21600 0 CST} - {-1301248800 -19800 1 CHDT} - {-1290364200 -21600 0 CST} - {-1269799200 -19800 1 CHDT} - {-1258914600 -21600 0 CST} - {-1238349600 -19800 1 CHDT} - {-1226860200 -21600 0 CST} - {-1206900000 -19800 1 CHDT} - {-1195410600 -21600 0 CST} - {-1175450400 -19800 1 CHDT} - {-1163961000 -21600 0 CST} - {-1143396000 -19800 1 CHDT} - {-1132511400 -21600 0 CST} - {-1111946400 -19800 1 CHDT} - {-1101061800 -21600 0 CST} - {-1080496800 -19800 1 CHDT} - {-1069612200 -21600 0 CST} - {-1049047200 -19800 1 CHDT} - {-1037557800 -21600 0 CST} - {-1017597600 -19800 1 CHDT} - {-1006108200 -21600 0 CST} - {-986148000 -19800 1 CHDT} - {-974658600 -21600 0 CST} - {-954093600 -19800 1 CHDT} - {-943209000 -21600 0 CST} - {-922644000 -19800 1 CHDT} - {-911759400 -21600 0 CST} - {-891194400 -19800 1 CHDT} - {-879705000 -21600 0 CST} - {-859744800 -19800 1 CHDT} - {-848255400 -21600 0 CST} - {123919200 -18000 1 CDT} - {129618000 -21600 0 CST} - {409039200 -18000 1 CDT} - {413874000 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Belize) { + {-9223372036854775808 -21168 0 LMT} + {-1822500432 -21600 0 CST} + {-1616954400 -19800 1 CHDT} + {-1606069800 -21600 0 CST} + {-1585504800 -19800 1 CHDT} + {-1574015400 -21600 0 CST} + {-1554055200 -19800 1 CHDT} + {-1542565800 -21600 0 CST} + {-1522605600 -19800 1 CHDT} + {-1511116200 -21600 0 CST} + {-1490551200 -19800 1 CHDT} + {-1479666600 -21600 0 CST} + {-1459101600 -19800 1 CHDT} + {-1448217000 -21600 0 CST} + {-1427652000 -19800 1 CHDT} + {-1416162600 -21600 0 CST} + {-1396202400 -19800 1 CHDT} + {-1384713000 -21600 0 CST} + {-1364752800 -19800 1 CHDT} + {-1353263400 -21600 0 CST} + {-1333303200 -19800 1 CHDT} + {-1321813800 -21600 0 CST} + {-1301248800 -19800 1 CHDT} + {-1290364200 -21600 0 CST} + {-1269799200 -19800 1 CHDT} + {-1258914600 -21600 0 CST} + {-1238349600 -19800 1 CHDT} + {-1226860200 -21600 0 CST} + {-1206900000 -19800 1 CHDT} + {-1195410600 -21600 0 CST} + {-1175450400 -19800 1 CHDT} + {-1163961000 -21600 0 CST} + {-1143396000 -19800 1 CHDT} + {-1132511400 -21600 0 CST} + {-1111946400 -19800 1 CHDT} + {-1101061800 -21600 0 CST} + {-1080496800 -19800 1 CHDT} + {-1069612200 -21600 0 CST} + {-1049047200 -19800 1 CHDT} + {-1037557800 -21600 0 CST} + {-1017597600 -19800 1 CHDT} + {-1006108200 -21600 0 CST} + {-986148000 -19800 1 CHDT} + {-974658600 -21600 0 CST} + {-954093600 -19800 1 CHDT} + {-943209000 -21600 0 CST} + {-922644000 -19800 1 CHDT} + {-911759400 -21600 0 CST} + {-891194400 -19800 1 CHDT} + {-879705000 -21600 0 CST} + {-859744800 -19800 1 CHDT} + {-848255400 -21600 0 CST} + {123919200 -18000 1 CDT} + {129618000 -21600 0 CST} + {409039200 -18000 1 CDT} + {413874000 -21600 0 CST} +} diff --git a/library/tzdata/America/Blanc-Sablon b/library/tzdata/America/Blanc-Sablon index 47f161a..e1d7333 100755 --- a/library/tzdata/America/Blanc-Sablon +++ b/library/tzdata/America/Blanc-Sablon @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Blanc-Sablon) { - {-9223372036854775808 -13708 0 LMT} - {-2713896692 -14400 0 AST} - {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} - {-880221600 -10800 1 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {14400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Blanc-Sablon) { + {-9223372036854775808 -13708 0 LMT} + {-2713896692 -14400 0 AST} + {-1632074400 -10800 1 ADT} + {-1614798000 -14400 0 AST} + {-880221600 -10800 1 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {14400 -14400 0 AST} +} diff --git a/library/tzdata/America/Boa_Vista b/library/tzdata/America/Boa_Vista index c85bc27..50634cd 100644 --- a/library/tzdata/America/Boa_Vista +++ b/library/tzdata/America/Boa_Vista @@ -1,40 +1,40 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Boa_Vista) { - {-9223372036854775808 -14560 0 LMT} - {-1767211040 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {590036400 -14400 0 AMT} - {938664000 -14400 0 AMT} - {938923200 -10800 1 AMST} - {951620400 -14400 0 AMT} - {970977600 -10800 1 AMST} - {971578800 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Boa_Vista) { + {-9223372036854775808 -14560 0 LMT} + {-1767211040 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {590036400 -14400 0 AMT} + {938664000 -14400 0 AMT} + {938923200 -10800 1 AMST} + {951620400 -14400 0 AMT} + {970977600 -10800 1 AMST} + {971578800 -14400 0 AMT} +} diff --git a/library/tzdata/America/Bogota b/library/tzdata/America/Bogota index f727d17..e2ba04c 100644 --- a/library/tzdata/America/Bogota +++ b/library/tzdata/America/Bogota @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Bogota) { - {-9223372036854775808 -17780 0 LMT} - {-2707671820 -17780 0 BMT} - {-1739041420 -18000 0 COT} - {704869200 -14400 1 COST} - {733896000 -18000 0 COT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Bogota) { + {-9223372036854775808 -17780 0 LMT} + {-2707671820 -17780 0 BMT} + {-1739041420 -18000 0 COT} + {704869200 -14400 1 COST} + {733896000 -18000 0 COT} +} diff --git a/library/tzdata/America/Boise b/library/tzdata/America/Boise index 62b22a0..e3a2cd9 100644 --- a/library/tzdata/America/Boise +++ b/library/tzdata/America/Boise @@ -1,281 +1,281 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Boise) { - {-9223372036854775808 -27889 0 LMT} - {-2717640000 -28800 0 PST} - {-1633269600 -25200 1 PDT} - {-1615129200 -28800 0 PST} - {-1601820000 -25200 1 PDT} - {-1583679600 -28800 0 PST} - {-1471788000 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126255600 -25200 0 MST} - {129114000 -21600 0 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Boise) { + {-9223372036854775808 -27889 0 LMT} + {-2717640000 -28800 0 PST} + {-1633269600 -25200 1 PDT} + {-1615129200 -28800 0 PST} + {-1601820000 -25200 1 PDT} + {-1583679600 -28800 0 PST} + {-1471788000 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126255600 -25200 0 MST} + {129114000 -21600 0 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Buenos_Aires b/library/tzdata/America/Buenos_Aires index 1389195..39f3b18 100644 --- a/library/tzdata/America/Buenos_Aires +++ b/library/tzdata/America/Buenos_Aires @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Buenos_Aires)]} { - LoadTimeZoneFile America/Argentina/Buenos_Aires -} -set TZData(:America/Buenos_Aires) $TZData(:America/Argentina/Buenos_Aires) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Buenos_Aires)]} { + LoadTimeZoneFile America/Argentina/Buenos_Aires +} +set TZData(:America/Buenos_Aires) $TZData(:America/Argentina/Buenos_Aires) diff --git a/library/tzdata/America/Cambridge_Bay b/library/tzdata/America/Cambridge_Bay index 23004bb..aa3ae53 100644 --- a/library/tzdata/America/Cambridge_Bay +++ b/library/tzdata/America/Cambridge_Bay @@ -1,252 +1,252 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cambridge_Bay) { - {-9223372036854775808 0 0 zzz} - {-1577923200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-147891600 -18000 1 MDDT} - {-131562000 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941360400 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {973400400 -21600 0 CST} - {986115600 -21600 0 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cambridge_Bay) { + {-9223372036854775808 0 0 zzz} + {-1577923200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-147891600 -18000 1 MDDT} + {-131562000 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941360400 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {973400400 -21600 0 CST} + {986115600 -21600 0 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Campo_Grande b/library/tzdata/America/Campo_Grande index 2cafe14..78ad47d 100644 --- a/library/tzdata/America/Campo_Grande +++ b/library/tzdata/America/Campo_Grande @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Campo_Grande) { - {-9223372036854775808 -13108 0 LMT} - {-1767212492 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {592977600 -10800 1 AMST} - {602046000 -14400 0 AMT} - {624427200 -10800 1 AMST} - {634705200 -14400 0 AMT} - {656481600 -10800 1 AMST} - {666759600 -14400 0 AMT} - {687931200 -10800 1 AMST} - {697604400 -14400 0 AMT} - {719985600 -10800 1 AMST} - {728449200 -14400 0 AMT} - {750830400 -10800 1 AMST} - {761713200 -14400 0 AMT} - {782280000 -10800 1 AMST} - {793162800 -14400 0 AMT} - {813729600 -10800 1 AMST} - {824007600 -14400 0 AMT} - {844574400 -10800 1 AMST} - {856062000 -14400 0 AMT} - {876110400 -10800 1 AMST} - {888721200 -14400 0 AMT} - {908078400 -10800 1 AMST} - {919566000 -14400 0 AMT} - {938923200 -10800 1 AMST} - {951620400 -14400 0 AMT} - {970977600 -10800 1 AMST} - {982465200 -14400 0 AMT} - {1003032000 -10800 1 AMST} - {1013914800 -14400 0 AMT} - {1036296000 -10800 1 AMST} - {1045364400 -14400 0 AMT} - {1066536000 -10800 1 AMST} - {1076814000 -14400 0 AMT} - {1099368000 -10800 1 AMST} - {1108868400 -14400 0 AMT} - {1129435200 -10800 1 AMST} - {1140318000 -14400 0 AMT} - {1162699200 -10800 1 AMST} - {1172372400 -14400 0 AMT} - {1192334400 -10800 1 AMST} - {1203217200 -14400 0 AMT} - {1224388800 -10800 1 AMST} - {1234666800 -14400 0 AMT} - {1255838400 -10800 1 AMST} - {1266721200 -14400 0 AMT} - {1287288000 -10800 1 AMST} - {1298170800 -14400 0 AMT} - {1318737600 -10800 1 AMST} - {1330225200 -14400 0 AMT} - {1350792000 -10800 1 AMST} - {1361070000 -14400 0 AMT} - {1382241600 -10800 1 AMST} - {1392519600 -14400 0 AMT} - {1413691200 -10800 1 AMST} - {1424574000 -14400 0 AMT} - {1445140800 -10800 1 AMST} - {1456023600 -14400 0 AMT} - {1476590400 -10800 1 AMST} - {1487473200 -14400 0 AMT} - {1508040000 -10800 1 AMST} - {1518922800 -14400 0 AMT} - {1540094400 -10800 1 AMST} - {1550372400 -14400 0 AMT} - {1571544000 -10800 1 AMST} - {1581822000 -14400 0 AMT} - {1602993600 -10800 1 AMST} - {1613876400 -14400 0 AMT} - {1634443200 -10800 1 AMST} - {1645326000 -14400 0 AMT} - {1665892800 -10800 1 AMST} - {1677380400 -14400 0 AMT} - {1697342400 -10800 1 AMST} - {1708225200 -14400 0 AMT} - {1729396800 -10800 1 AMST} - {1739674800 -14400 0 AMT} - {1760846400 -10800 1 AMST} - {1771729200 -14400 0 AMT} - {1792296000 -10800 1 AMST} - {1803178800 -14400 0 AMT} - {1823745600 -10800 1 AMST} - {1834628400 -14400 0 AMT} - {1855195200 -10800 1 AMST} - {1866078000 -14400 0 AMT} - {1887249600 -10800 1 AMST} - {1897527600 -14400 0 AMT} - {1918699200 -10800 1 AMST} - {1928977200 -14400 0 AMT} - {1950148800 -10800 1 AMST} - {1960426800 -14400 0 AMT} - {1981598400 -10800 1 AMST} - {1992481200 -14400 0 AMT} - {2013048000 -10800 1 AMST} - {2024535600 -14400 0 AMT} - {2044497600 -10800 1 AMST} - {2055380400 -14400 0 AMT} - {2076552000 -10800 1 AMST} - {2086830000 -14400 0 AMT} - {2108001600 -10800 1 AMST} - {2118884400 -14400 0 AMT} - {2139451200 -10800 1 AMST} - {2150334000 -14400 0 AMT} - {2170900800 -10800 1 AMST} - {2181783600 -14400 0 AMT} - {2202350400 -10800 1 AMST} - {2213233200 -14400 0 AMT} - {2234404800 -10800 1 AMST} - {2244682800 -14400 0 AMT} - {2265854400 -10800 1 AMST} - {2276132400 -14400 0 AMT} - {2297304000 -10800 1 AMST} - {2307582000 -14400 0 AMT} - {2328753600 -10800 1 AMST} - {2339636400 -14400 0 AMT} - {2360203200 -10800 1 AMST} - {2371086000 -14400 0 AMT} - {2391652800 -10800 1 AMST} - {2402535600 -14400 0 AMT} - {2423707200 -10800 1 AMST} - {2433985200 -14400 0 AMT} - {2455156800 -10800 1 AMST} - {2465434800 -14400 0 AMT} - {2486606400 -10800 1 AMST} - {2497489200 -14400 0 AMT} - {2518056000 -10800 1 AMST} - {2528938800 -14400 0 AMT} - {2549505600 -10800 1 AMST} - {2560388400 -14400 0 AMT} - {2580955200 -10800 1 AMST} - {2591838000 -14400 0 AMT} - {2613009600 -10800 1 AMST} - {2623287600 -14400 0 AMT} - {2644459200 -10800 1 AMST} - {2654737200 -14400 0 AMT} - {2675908800 -10800 1 AMST} - {2686791600 -14400 0 AMT} - {2707358400 -10800 1 AMST} - {2718241200 -14400 0 AMT} - {2738808000 -10800 1 AMST} - {2749690800 -14400 0 AMT} - {2770862400 -10800 1 AMST} - {2781140400 -14400 0 AMT} - {2802312000 -10800 1 AMST} - {2812590000 -14400 0 AMT} - {2833761600 -10800 1 AMST} - {2844039600 -14400 0 AMT} - {2865211200 -10800 1 AMST} - {2876094000 -14400 0 AMT} - {2896660800 -10800 1 AMST} - {2907543600 -14400 0 AMT} - {2928110400 -10800 1 AMST} - {2938993200 -14400 0 AMT} - {2960164800 -10800 1 AMST} - {2970442800 -14400 0 AMT} - {2991614400 -10800 1 AMST} - {3001892400 -14400 0 AMT} - {3023064000 -10800 1 AMST} - {3033946800 -14400 0 AMT} - {3054513600 -10800 1 AMST} - {3065396400 -14400 0 AMT} - {3085963200 -10800 1 AMST} - {3096846000 -14400 0 AMT} - {3118017600 -10800 1 AMST} - {3128295600 -14400 0 AMT} - {3149467200 -10800 1 AMST} - {3159745200 -14400 0 AMT} - {3180916800 -10800 1 AMST} - {3191194800 -14400 0 AMT} - {3212366400 -10800 1 AMST} - {3223249200 -14400 0 AMT} - {3243816000 -10800 1 AMST} - {3254698800 -14400 0 AMT} - {3275265600 -10800 1 AMST} - {3286148400 -14400 0 AMT} - {3307320000 -10800 1 AMST} - {3317598000 -14400 0 AMT} - {3338769600 -10800 1 AMST} - {3349047600 -14400 0 AMT} - {3370219200 -10800 1 AMST} - {3381102000 -14400 0 AMT} - {3401668800 -10800 1 AMST} - {3412551600 -14400 0 AMT} - {3433118400 -10800 1 AMST} - {3444001200 -14400 0 AMT} - {3464568000 -10800 1 AMST} - {3475450800 -14400 0 AMT} - {3496622400 -10800 1 AMST} - {3506900400 -14400 0 AMT} - {3528072000 -10800 1 AMST} - {3538350000 -14400 0 AMT} - {3559521600 -10800 1 AMST} - {3570404400 -14400 0 AMT} - {3590971200 -10800 1 AMST} - {3601854000 -14400 0 AMT} - {3622420800 -10800 1 AMST} - {3633303600 -14400 0 AMT} - {3654475200 -10800 1 AMST} - {3664753200 -14400 0 AMT} - {3685924800 -10800 1 AMST} - {3696202800 -14400 0 AMT} - {3717374400 -10800 1 AMST} - {3727652400 -14400 0 AMT} - {3748824000 -10800 1 AMST} - {3759706800 -14400 0 AMT} - {3780273600 -10800 1 AMST} - {3791156400 -14400 0 AMT} - {3811723200 -10800 1 AMST} - {3822606000 -14400 0 AMT} - {3843777600 -10800 1 AMST} - {3854055600 -14400 0 AMT} - {3875227200 -10800 1 AMST} - {3885505200 -14400 0 AMT} - {3906676800 -10800 1 AMST} - {3917559600 -14400 0 AMT} - {3938126400 -10800 1 AMST} - {3949009200 -14400 0 AMT} - {3969576000 -10800 1 AMST} - {3980458800 -14400 0 AMT} - {4001630400 -10800 1 AMST} - {4011908400 -14400 0 AMT} - {4033080000 -10800 1 AMST} - {4043358000 -14400 0 AMT} - {4064529600 -10800 1 AMST} - {4074807600 -14400 0 AMT} - {4095979200 -10800 1 AMST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Campo_Grande) { + {-9223372036854775808 -13108 0 LMT} + {-1767212492 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {592977600 -10800 1 AMST} + {602046000 -14400 0 AMT} + {624427200 -10800 1 AMST} + {634705200 -14400 0 AMT} + {656481600 -10800 1 AMST} + {666759600 -14400 0 AMT} + {687931200 -10800 1 AMST} + {697604400 -14400 0 AMT} + {719985600 -10800 1 AMST} + {728449200 -14400 0 AMT} + {750830400 -10800 1 AMST} + {761713200 -14400 0 AMT} + {782280000 -10800 1 AMST} + {793162800 -14400 0 AMT} + {813729600 -10800 1 AMST} + {824007600 -14400 0 AMT} + {844574400 -10800 1 AMST} + {856062000 -14400 0 AMT} + {876110400 -10800 1 AMST} + {888721200 -14400 0 AMT} + {908078400 -10800 1 AMST} + {919566000 -14400 0 AMT} + {938923200 -10800 1 AMST} + {951620400 -14400 0 AMT} + {970977600 -10800 1 AMST} + {982465200 -14400 0 AMT} + {1003032000 -10800 1 AMST} + {1013914800 -14400 0 AMT} + {1036296000 -10800 1 AMST} + {1045364400 -14400 0 AMT} + {1066536000 -10800 1 AMST} + {1076814000 -14400 0 AMT} + {1099368000 -10800 1 AMST} + {1108868400 -14400 0 AMT} + {1129435200 -10800 1 AMST} + {1140318000 -14400 0 AMT} + {1162699200 -10800 1 AMST} + {1172372400 -14400 0 AMT} + {1192334400 -10800 1 AMST} + {1203217200 -14400 0 AMT} + {1224388800 -10800 1 AMST} + {1234666800 -14400 0 AMT} + {1255838400 -10800 1 AMST} + {1266721200 -14400 0 AMT} + {1287288000 -10800 1 AMST} + {1298170800 -14400 0 AMT} + {1318737600 -10800 1 AMST} + {1330225200 -14400 0 AMT} + {1350792000 -10800 1 AMST} + {1361070000 -14400 0 AMT} + {1382241600 -10800 1 AMST} + {1392519600 -14400 0 AMT} + {1413691200 -10800 1 AMST} + {1424574000 -14400 0 AMT} + {1445140800 -10800 1 AMST} + {1456023600 -14400 0 AMT} + {1476590400 -10800 1 AMST} + {1487473200 -14400 0 AMT} + {1508040000 -10800 1 AMST} + {1518922800 -14400 0 AMT} + {1540094400 -10800 1 AMST} + {1550372400 -14400 0 AMT} + {1571544000 -10800 1 AMST} + {1581822000 -14400 0 AMT} + {1602993600 -10800 1 AMST} + {1613876400 -14400 0 AMT} + {1634443200 -10800 1 AMST} + {1645326000 -14400 0 AMT} + {1665892800 -10800 1 AMST} + {1677380400 -14400 0 AMT} + {1697342400 -10800 1 AMST} + {1708225200 -14400 0 AMT} + {1729396800 -10800 1 AMST} + {1739674800 -14400 0 AMT} + {1760846400 -10800 1 AMST} + {1771729200 -14400 0 AMT} + {1792296000 -10800 1 AMST} + {1803178800 -14400 0 AMT} + {1823745600 -10800 1 AMST} + {1834628400 -14400 0 AMT} + {1855195200 -10800 1 AMST} + {1866078000 -14400 0 AMT} + {1887249600 -10800 1 AMST} + {1897527600 -14400 0 AMT} + {1918699200 -10800 1 AMST} + {1928977200 -14400 0 AMT} + {1950148800 -10800 1 AMST} + {1960426800 -14400 0 AMT} + {1981598400 -10800 1 AMST} + {1992481200 -14400 0 AMT} + {2013048000 -10800 1 AMST} + {2024535600 -14400 0 AMT} + {2044497600 -10800 1 AMST} + {2055380400 -14400 0 AMT} + {2076552000 -10800 1 AMST} + {2086830000 -14400 0 AMT} + {2108001600 -10800 1 AMST} + {2118884400 -14400 0 AMT} + {2139451200 -10800 1 AMST} + {2150334000 -14400 0 AMT} + {2170900800 -10800 1 AMST} + {2181783600 -14400 0 AMT} + {2202350400 -10800 1 AMST} + {2213233200 -14400 0 AMT} + {2234404800 -10800 1 AMST} + {2244682800 -14400 0 AMT} + {2265854400 -10800 1 AMST} + {2276132400 -14400 0 AMT} + {2297304000 -10800 1 AMST} + {2307582000 -14400 0 AMT} + {2328753600 -10800 1 AMST} + {2339636400 -14400 0 AMT} + {2360203200 -10800 1 AMST} + {2371086000 -14400 0 AMT} + {2391652800 -10800 1 AMST} + {2402535600 -14400 0 AMT} + {2423707200 -10800 1 AMST} + {2433985200 -14400 0 AMT} + {2455156800 -10800 1 AMST} + {2465434800 -14400 0 AMT} + {2486606400 -10800 1 AMST} + {2497489200 -14400 0 AMT} + {2518056000 -10800 1 AMST} + {2528938800 -14400 0 AMT} + {2549505600 -10800 1 AMST} + {2560388400 -14400 0 AMT} + {2580955200 -10800 1 AMST} + {2591838000 -14400 0 AMT} + {2613009600 -10800 1 AMST} + {2623287600 -14400 0 AMT} + {2644459200 -10800 1 AMST} + {2654737200 -14400 0 AMT} + {2675908800 -10800 1 AMST} + {2686791600 -14400 0 AMT} + {2707358400 -10800 1 AMST} + {2718241200 -14400 0 AMT} + {2738808000 -10800 1 AMST} + {2749690800 -14400 0 AMT} + {2770862400 -10800 1 AMST} + {2781140400 -14400 0 AMT} + {2802312000 -10800 1 AMST} + {2812590000 -14400 0 AMT} + {2833761600 -10800 1 AMST} + {2844039600 -14400 0 AMT} + {2865211200 -10800 1 AMST} + {2876094000 -14400 0 AMT} + {2896660800 -10800 1 AMST} + {2907543600 -14400 0 AMT} + {2928110400 -10800 1 AMST} + {2938993200 -14400 0 AMT} + {2960164800 -10800 1 AMST} + {2970442800 -14400 0 AMT} + {2991614400 -10800 1 AMST} + {3001892400 -14400 0 AMT} + {3023064000 -10800 1 AMST} + {3033946800 -14400 0 AMT} + {3054513600 -10800 1 AMST} + {3065396400 -14400 0 AMT} + {3085963200 -10800 1 AMST} + {3096846000 -14400 0 AMT} + {3118017600 -10800 1 AMST} + {3128295600 -14400 0 AMT} + {3149467200 -10800 1 AMST} + {3159745200 -14400 0 AMT} + {3180916800 -10800 1 AMST} + {3191194800 -14400 0 AMT} + {3212366400 -10800 1 AMST} + {3223249200 -14400 0 AMT} + {3243816000 -10800 1 AMST} + {3254698800 -14400 0 AMT} + {3275265600 -10800 1 AMST} + {3286148400 -14400 0 AMT} + {3307320000 -10800 1 AMST} + {3317598000 -14400 0 AMT} + {3338769600 -10800 1 AMST} + {3349047600 -14400 0 AMT} + {3370219200 -10800 1 AMST} + {3381102000 -14400 0 AMT} + {3401668800 -10800 1 AMST} + {3412551600 -14400 0 AMT} + {3433118400 -10800 1 AMST} + {3444001200 -14400 0 AMT} + {3464568000 -10800 1 AMST} + {3475450800 -14400 0 AMT} + {3496622400 -10800 1 AMST} + {3506900400 -14400 0 AMT} + {3528072000 -10800 1 AMST} + {3538350000 -14400 0 AMT} + {3559521600 -10800 1 AMST} + {3570404400 -14400 0 AMT} + {3590971200 -10800 1 AMST} + {3601854000 -14400 0 AMT} + {3622420800 -10800 1 AMST} + {3633303600 -14400 0 AMT} + {3654475200 -10800 1 AMST} + {3664753200 -14400 0 AMT} + {3685924800 -10800 1 AMST} + {3696202800 -14400 0 AMT} + {3717374400 -10800 1 AMST} + {3727652400 -14400 0 AMT} + {3748824000 -10800 1 AMST} + {3759706800 -14400 0 AMT} + {3780273600 -10800 1 AMST} + {3791156400 -14400 0 AMT} + {3811723200 -10800 1 AMST} + {3822606000 -14400 0 AMT} + {3843777600 -10800 1 AMST} + {3854055600 -14400 0 AMT} + {3875227200 -10800 1 AMST} + {3885505200 -14400 0 AMT} + {3906676800 -10800 1 AMST} + {3917559600 -14400 0 AMT} + {3938126400 -10800 1 AMST} + {3949009200 -14400 0 AMT} + {3969576000 -10800 1 AMST} + {3980458800 -14400 0 AMT} + {4001630400 -10800 1 AMST} + {4011908400 -14400 0 AMT} + {4033080000 -10800 1 AMST} + {4043358000 -14400 0 AMT} + {4064529600 -10800 1 AMST} + {4074807600 -14400 0 AMT} + {4095979200 -10800 1 AMST} +} diff --git a/library/tzdata/America/Cancun b/library/tzdata/America/Cancun index 1620b15..bc68193 100644 --- a/library/tzdata/America/Cancun +++ b/library/tzdata/America/Cancun @@ -1,216 +1,216 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cancun) { - {-9223372036854775808 -20824 0 LMT} - {-1514743200 -21600 0 CST} - {377935200 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {902041200 -18000 0 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {989136000 -18000 1 CDT} - {1001833200 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1175414400 -18000 1 CDT} - {1193554800 -21600 0 CST} - {1207468800 -18000 1 CDT} - {1225004400 -21600 0 CST} - {1238918400 -18000 1 CDT} - {1256454000 -21600 0 CST} - {1270368000 -18000 1 CDT} - {1288508400 -21600 0 CST} - {1301817600 -18000 1 CDT} - {1319958000 -21600 0 CST} - {1333267200 -18000 1 CDT} - {1351407600 -21600 0 CST} - {1365321600 -18000 1 CDT} - {1382857200 -21600 0 CST} - {1396771200 -18000 1 CDT} - {1414306800 -21600 0 CST} - {1428220800 -18000 1 CDT} - {1445756400 -21600 0 CST} - {1459670400 -18000 1 CDT} - {1477810800 -21600 0 CST} - {1491120000 -18000 1 CDT} - {1509260400 -21600 0 CST} - {1522569600 -18000 1 CDT} - {1540710000 -21600 0 CST} - {1554624000 -18000 1 CDT} - {1572159600 -21600 0 CST} - {1586073600 -18000 1 CDT} - {1603609200 -21600 0 CST} - {1617523200 -18000 1 CDT} - {1635663600 -21600 0 CST} - {1648972800 -18000 1 CDT} - {1667113200 -21600 0 CST} - {1680422400 -18000 1 CDT} - {1698562800 -21600 0 CST} - {1712476800 -18000 1 CDT} - {1730012400 -21600 0 CST} - {1743926400 -18000 1 CDT} - {1761462000 -21600 0 CST} - {1775376000 -18000 1 CDT} - {1792911600 -21600 0 CST} - {1806825600 -18000 1 CDT} - {1824966000 -21600 0 CST} - {1838275200 -18000 1 CDT} - {1856415600 -21600 0 CST} - {1869724800 -18000 1 CDT} - {1887865200 -21600 0 CST} - {1901779200 -18000 1 CDT} - {1919314800 -21600 0 CST} - {1933228800 -18000 1 CDT} - {1950764400 -21600 0 CST} - {1964678400 -18000 1 CDT} - {1982818800 -21600 0 CST} - {1996128000 -18000 1 CDT} - {2014268400 -21600 0 CST} - {2027577600 -18000 1 CDT} - {2045718000 -21600 0 CST} - {2059027200 -18000 1 CDT} - {2077167600 -21600 0 CST} - {2091081600 -18000 1 CDT} - {2108617200 -21600 0 CST} - {2122531200 -18000 1 CDT} - {2140066800 -21600 0 CST} - {2153980800 -18000 1 CDT} - {2172121200 -21600 0 CST} - {2185430400 -18000 1 CDT} - {2203570800 -21600 0 CST} - {2216880000 -18000 1 CDT} - {2235020400 -21600 0 CST} - {2248934400 -18000 1 CDT} - {2266470000 -21600 0 CST} - {2280384000 -18000 1 CDT} - {2297919600 -21600 0 CST} - {2311833600 -18000 1 CDT} - {2329369200 -21600 0 CST} - {2343283200 -18000 1 CDT} - {2361423600 -21600 0 CST} - {2374732800 -18000 1 CDT} - {2392873200 -21600 0 CST} - {2406182400 -18000 1 CDT} - {2424322800 -21600 0 CST} - {2438236800 -18000 1 CDT} - {2455772400 -21600 0 CST} - {2469686400 -18000 1 CDT} - {2487222000 -21600 0 CST} - {2501136000 -18000 1 CDT} - {2519276400 -21600 0 CST} - {2532585600 -18000 1 CDT} - {2550726000 -21600 0 CST} - {2564035200 -18000 1 CDT} - {2582175600 -21600 0 CST} - {2596089600 -18000 1 CDT} - {2613625200 -21600 0 CST} - {2627539200 -18000 1 CDT} - {2645074800 -21600 0 CST} - {2658988800 -18000 1 CDT} - {2676524400 -21600 0 CST} - {2690438400 -18000 1 CDT} - {2708578800 -21600 0 CST} - {2721888000 -18000 1 CDT} - {2740028400 -21600 0 CST} - {2753337600 -18000 1 CDT} - {2771478000 -21600 0 CST} - {2785392000 -18000 1 CDT} - {2802927600 -21600 0 CST} - {2816841600 -18000 1 CDT} - {2834377200 -21600 0 CST} - {2848291200 -18000 1 CDT} - {2866431600 -21600 0 CST} - {2879740800 -18000 1 CDT} - {2897881200 -21600 0 CST} - {2911190400 -18000 1 CDT} - {2929330800 -21600 0 CST} - {2942640000 -18000 1 CDT} - {2960780400 -21600 0 CST} - {2974694400 -18000 1 CDT} - {2992230000 -21600 0 CST} - {3006144000 -18000 1 CDT} - {3023679600 -21600 0 CST} - {3037593600 -18000 1 CDT} - {3055734000 -21600 0 CST} - {3069043200 -18000 1 CDT} - {3087183600 -21600 0 CST} - {3100492800 -18000 1 CDT} - {3118633200 -21600 0 CST} - {3132547200 -18000 1 CDT} - {3150082800 -21600 0 CST} - {3163996800 -18000 1 CDT} - {3181532400 -21600 0 CST} - {3195446400 -18000 1 CDT} - {3212982000 -21600 0 CST} - {3226896000 -18000 1 CDT} - {3245036400 -21600 0 CST} - {3258345600 -18000 1 CDT} - {3276486000 -21600 0 CST} - {3289795200 -18000 1 CDT} - {3307935600 -21600 0 CST} - {3321849600 -18000 1 CDT} - {3339385200 -21600 0 CST} - {3353299200 -18000 1 CDT} - {3370834800 -21600 0 CST} - {3384748800 -18000 1 CDT} - {3402889200 -21600 0 CST} - {3416198400 -18000 1 CDT} - {3434338800 -21600 0 CST} - {3447648000 -18000 1 CDT} - {3465788400 -21600 0 CST} - {3479702400 -18000 1 CDT} - {3497238000 -21600 0 CST} - {3511152000 -18000 1 CDT} - {3528687600 -21600 0 CST} - {3542601600 -18000 1 CDT} - {3560137200 -21600 0 CST} - {3574051200 -18000 1 CDT} - {3592191600 -21600 0 CST} - {3605500800 -18000 1 CDT} - {3623641200 -21600 0 CST} - {3636950400 -18000 1 CDT} - {3655090800 -21600 0 CST} - {3669004800 -18000 1 CDT} - {3686540400 -21600 0 CST} - {3700454400 -18000 1 CDT} - {3717990000 -21600 0 CST} - {3731904000 -18000 1 CDT} - {3750044400 -21600 0 CST} - {3763353600 -18000 1 CDT} - {3781494000 -21600 0 CST} - {3794803200 -18000 1 CDT} - {3812943600 -21600 0 CST} - {3826252800 -18000 1 CDT} - {3844393200 -21600 0 CST} - {3858307200 -18000 1 CDT} - {3875842800 -21600 0 CST} - {3889756800 -18000 1 CDT} - {3907292400 -21600 0 CST} - {3921206400 -18000 1 CDT} - {3939346800 -21600 0 CST} - {3952656000 -18000 1 CDT} - {3970796400 -21600 0 CST} - {3984105600 -18000 1 CDT} - {4002246000 -21600 0 CST} - {4016160000 -18000 1 CDT} - {4033695600 -21600 0 CST} - {4047609600 -18000 1 CDT} - {4065145200 -21600 0 CST} - {4079059200 -18000 1 CDT} - {4096594800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cancun) { + {-9223372036854775808 -20824 0 LMT} + {-1514743200 -21600 0 CST} + {377935200 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {902041200 -18000 0 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {989136000 -18000 1 CDT} + {1001833200 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1175414400 -18000 1 CDT} + {1193554800 -21600 0 CST} + {1207468800 -18000 1 CDT} + {1225004400 -21600 0 CST} + {1238918400 -18000 1 CDT} + {1256454000 -21600 0 CST} + {1270368000 -18000 1 CDT} + {1288508400 -21600 0 CST} + {1301817600 -18000 1 CDT} + {1319958000 -21600 0 CST} + {1333267200 -18000 1 CDT} + {1351407600 -21600 0 CST} + {1365321600 -18000 1 CDT} + {1382857200 -21600 0 CST} + {1396771200 -18000 1 CDT} + {1414306800 -21600 0 CST} + {1428220800 -18000 1 CDT} + {1445756400 -21600 0 CST} + {1459670400 -18000 1 CDT} + {1477810800 -21600 0 CST} + {1491120000 -18000 1 CDT} + {1509260400 -21600 0 CST} + {1522569600 -18000 1 CDT} + {1540710000 -21600 0 CST} + {1554624000 -18000 1 CDT} + {1572159600 -21600 0 CST} + {1586073600 -18000 1 CDT} + {1603609200 -21600 0 CST} + {1617523200 -18000 1 CDT} + {1635663600 -21600 0 CST} + {1648972800 -18000 1 CDT} + {1667113200 -21600 0 CST} + {1680422400 -18000 1 CDT} + {1698562800 -21600 0 CST} + {1712476800 -18000 1 CDT} + {1730012400 -21600 0 CST} + {1743926400 -18000 1 CDT} + {1761462000 -21600 0 CST} + {1775376000 -18000 1 CDT} + {1792911600 -21600 0 CST} + {1806825600 -18000 1 CDT} + {1824966000 -21600 0 CST} + {1838275200 -18000 1 CDT} + {1856415600 -21600 0 CST} + {1869724800 -18000 1 CDT} + {1887865200 -21600 0 CST} + {1901779200 -18000 1 CDT} + {1919314800 -21600 0 CST} + {1933228800 -18000 1 CDT} + {1950764400 -21600 0 CST} + {1964678400 -18000 1 CDT} + {1982818800 -21600 0 CST} + {1996128000 -18000 1 CDT} + {2014268400 -21600 0 CST} + {2027577600 -18000 1 CDT} + {2045718000 -21600 0 CST} + {2059027200 -18000 1 CDT} + {2077167600 -21600 0 CST} + {2091081600 -18000 1 CDT} + {2108617200 -21600 0 CST} + {2122531200 -18000 1 CDT} + {2140066800 -21600 0 CST} + {2153980800 -18000 1 CDT} + {2172121200 -21600 0 CST} + {2185430400 -18000 1 CDT} + {2203570800 -21600 0 CST} + {2216880000 -18000 1 CDT} + {2235020400 -21600 0 CST} + {2248934400 -18000 1 CDT} + {2266470000 -21600 0 CST} + {2280384000 -18000 1 CDT} + {2297919600 -21600 0 CST} + {2311833600 -18000 1 CDT} + {2329369200 -21600 0 CST} + {2343283200 -18000 1 CDT} + {2361423600 -21600 0 CST} + {2374732800 -18000 1 CDT} + {2392873200 -21600 0 CST} + {2406182400 -18000 1 CDT} + {2424322800 -21600 0 CST} + {2438236800 -18000 1 CDT} + {2455772400 -21600 0 CST} + {2469686400 -18000 1 CDT} + {2487222000 -21600 0 CST} + {2501136000 -18000 1 CDT} + {2519276400 -21600 0 CST} + {2532585600 -18000 1 CDT} + {2550726000 -21600 0 CST} + {2564035200 -18000 1 CDT} + {2582175600 -21600 0 CST} + {2596089600 -18000 1 CDT} + {2613625200 -21600 0 CST} + {2627539200 -18000 1 CDT} + {2645074800 -21600 0 CST} + {2658988800 -18000 1 CDT} + {2676524400 -21600 0 CST} + {2690438400 -18000 1 CDT} + {2708578800 -21600 0 CST} + {2721888000 -18000 1 CDT} + {2740028400 -21600 0 CST} + {2753337600 -18000 1 CDT} + {2771478000 -21600 0 CST} + {2785392000 -18000 1 CDT} + {2802927600 -21600 0 CST} + {2816841600 -18000 1 CDT} + {2834377200 -21600 0 CST} + {2848291200 -18000 1 CDT} + {2866431600 -21600 0 CST} + {2879740800 -18000 1 CDT} + {2897881200 -21600 0 CST} + {2911190400 -18000 1 CDT} + {2929330800 -21600 0 CST} + {2942640000 -18000 1 CDT} + {2960780400 -21600 0 CST} + {2974694400 -18000 1 CDT} + {2992230000 -21600 0 CST} + {3006144000 -18000 1 CDT} + {3023679600 -21600 0 CST} + {3037593600 -18000 1 CDT} + {3055734000 -21600 0 CST} + {3069043200 -18000 1 CDT} + {3087183600 -21600 0 CST} + {3100492800 -18000 1 CDT} + {3118633200 -21600 0 CST} + {3132547200 -18000 1 CDT} + {3150082800 -21600 0 CST} + {3163996800 -18000 1 CDT} + {3181532400 -21600 0 CST} + {3195446400 -18000 1 CDT} + {3212982000 -21600 0 CST} + {3226896000 -18000 1 CDT} + {3245036400 -21600 0 CST} + {3258345600 -18000 1 CDT} + {3276486000 -21600 0 CST} + {3289795200 -18000 1 CDT} + {3307935600 -21600 0 CST} + {3321849600 -18000 1 CDT} + {3339385200 -21600 0 CST} + {3353299200 -18000 1 CDT} + {3370834800 -21600 0 CST} + {3384748800 -18000 1 CDT} + {3402889200 -21600 0 CST} + {3416198400 -18000 1 CDT} + {3434338800 -21600 0 CST} + {3447648000 -18000 1 CDT} + {3465788400 -21600 0 CST} + {3479702400 -18000 1 CDT} + {3497238000 -21600 0 CST} + {3511152000 -18000 1 CDT} + {3528687600 -21600 0 CST} + {3542601600 -18000 1 CDT} + {3560137200 -21600 0 CST} + {3574051200 -18000 1 CDT} + {3592191600 -21600 0 CST} + {3605500800 -18000 1 CDT} + {3623641200 -21600 0 CST} + {3636950400 -18000 1 CDT} + {3655090800 -21600 0 CST} + {3669004800 -18000 1 CDT} + {3686540400 -21600 0 CST} + {3700454400 -18000 1 CDT} + {3717990000 -21600 0 CST} + {3731904000 -18000 1 CDT} + {3750044400 -21600 0 CST} + {3763353600 -18000 1 CDT} + {3781494000 -21600 0 CST} + {3794803200 -18000 1 CDT} + {3812943600 -21600 0 CST} + {3826252800 -18000 1 CDT} + {3844393200 -21600 0 CST} + {3858307200 -18000 1 CDT} + {3875842800 -21600 0 CST} + {3889756800 -18000 1 CDT} + {3907292400 -21600 0 CST} + {3921206400 -18000 1 CDT} + {3939346800 -21600 0 CST} + {3952656000 -18000 1 CDT} + {3970796400 -21600 0 CST} + {3984105600 -18000 1 CDT} + {4002246000 -21600 0 CST} + {4016160000 -18000 1 CDT} + {4033695600 -21600 0 CST} + {4047609600 -18000 1 CDT} + {4065145200 -21600 0 CST} + {4079059200 -18000 1 CDT} + {4096594800 -21600 0 CST} +} diff --git a/library/tzdata/America/Caracas b/library/tzdata/America/Caracas index 2ba87ae..5add095 100644 --- a/library/tzdata/America/Caracas +++ b/library/tzdata/America/Caracas @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Caracas) { - {-9223372036854775808 -16064 0 LMT} - {-2524505536 -16060 0 CMT} - {-1826739140 -16200 0 VET} - {-157750200 -14400 0 VET} - {1197183600 -16200 0 VET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Caracas) { + {-9223372036854775808 -16064 0 LMT} + {-2524505536 -16060 0 CMT} + {-1826739140 -16200 0 VET} + {-157750200 -14400 0 VET} + {1197183600 -16200 0 VET} +} diff --git a/library/tzdata/America/Catamarca b/library/tzdata/America/Catamarca index 01c8ab6..1734f95 100644 --- a/library/tzdata/America/Catamarca +++ b/library/tzdata/America/Catamarca @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Catamarca)]} { - LoadTimeZoneFile America/Argentina/Catamarca -} -set TZData(:America/Catamarca) $TZData(:America/Argentina/Catamarca) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Catamarca)]} { + LoadTimeZoneFile America/Argentina/Catamarca +} +set TZData(:America/Catamarca) $TZData(:America/Argentina/Catamarca) diff --git a/library/tzdata/America/Cayenne b/library/tzdata/America/Cayenne index de3d65b..075a58c 100644 --- a/library/tzdata/America/Cayenne +++ b/library/tzdata/America/Cayenne @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cayenne) { - {-9223372036854775808 -12560 0 LMT} - {-1846269040 -14400 0 GFT} - {-71092800 -10800 0 GFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cayenne) { + {-9223372036854775808 -12560 0 LMT} + {-1846269040 -14400 0 GFT} + {-71092800 -10800 0 GFT} +} diff --git a/library/tzdata/America/Cayman b/library/tzdata/America/Cayman index ab5d12b..1ffa1db 100644 --- a/library/tzdata/America/Cayman +++ b/library/tzdata/America/Cayman @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cayman) { - {-9223372036854775808 -19532 0 LMT} - {-2524502068 -18432 0 KMT} - {-1827687168 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cayman) { + {-9223372036854775808 -19532 0 LMT} + {-2524502068 -18432 0 KMT} + {-1827687168 -18000 0 EST} +} diff --git a/library/tzdata/America/Chicago b/library/tzdata/America/Chicago index 545aedb..0e753cf 100644 --- a/library/tzdata/America/Chicago +++ b/library/tzdata/America/Chicago @@ -1,369 +1,369 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Chicago) { - {-9223372036854775808 -21036 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-1577901600 -21600 0 CST} - {-1563724800 -18000 1 CDT} - {-1551632400 -21600 0 CST} - {-1538928000 -18000 1 CDT} - {-1520182800 -21600 0 CST} - {-1504454400 -18000 1 CDT} - {-1491757200 -21600 0 CST} - {-1473004800 -18000 1 CDT} - {-1459702800 -21600 0 CST} - {-1441555200 -18000 1 CDT} - {-1428253200 -21600 0 CST} - {-1410105600 -18000 1 CDT} - {-1396803600 -21600 0 CST} - {-1378656000 -18000 1 CDT} - {-1365354000 -21600 0 CST} - {-1347206400 -18000 1 CDT} - {-1333904400 -21600 0 CST} - {-1315152000 -18000 1 CDT} - {-1301850000 -21600 0 CST} - {-1283702400 -18000 1 CDT} - {-1270400400 -21600 0 CST} - {-1252252800 -18000 1 CDT} - {-1238950800 -21600 0 CST} - {-1220803200 -18000 1 CDT} - {-1207501200 -21600 0 CST} - {-1189353600 -18000 1 CDT} - {-1176051600 -21600 0 CST} - {-1157299200 -18000 1 CDT} - {-1144602000 -21600 0 CST} - {-1125849600 -18000 1 CDT} - {-1112547600 -21600 0 CST} - {-1094400000 -18000 1 CDT} - {-1081098000 -21600 0 CST} - {-1067788800 -18000 0 EST} - {-1045414800 -21600 0 CST} - {-1031500800 -18000 1 CDT} - {-1018198800 -21600 0 CST} - {-1000051200 -18000 1 CDT} - {-986749200 -21600 0 CST} - {-967996800 -18000 1 CDT} - {-955299600 -21600 0 CST} - {-936547200 -18000 1 CDT} - {-923245200 -21600 0 CST} - {-905097600 -18000 1 CDT} - {-891795600 -21600 0 CST} - {-883591200 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620841600 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-447267600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-415818000 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-384368400 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-352918800 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-321469200 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-257965200 -21600 0 CST} - {-242236800 -18000 1 CDT} - {-226515600 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-195066000 -21600 0 CST} - {-179337600 -18000 1 CDT} - {-163616400 -21600 0 CST} - {-147888000 -18000 1 CDT} - {-131562000 -21600 0 CST} - {-116438400 -18000 1 CDT} - {-100112400 -21600 0 CST} - {-94672800 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68662800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Chicago) { + {-9223372036854775808 -21036 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-1577901600 -21600 0 CST} + {-1563724800 -18000 1 CDT} + {-1551632400 -21600 0 CST} + {-1538928000 -18000 1 CDT} + {-1520182800 -21600 0 CST} + {-1504454400 -18000 1 CDT} + {-1491757200 -21600 0 CST} + {-1473004800 -18000 1 CDT} + {-1459702800 -21600 0 CST} + {-1441555200 -18000 1 CDT} + {-1428253200 -21600 0 CST} + {-1410105600 -18000 1 CDT} + {-1396803600 -21600 0 CST} + {-1378656000 -18000 1 CDT} + {-1365354000 -21600 0 CST} + {-1347206400 -18000 1 CDT} + {-1333904400 -21600 0 CST} + {-1315152000 -18000 1 CDT} + {-1301850000 -21600 0 CST} + {-1283702400 -18000 1 CDT} + {-1270400400 -21600 0 CST} + {-1252252800 -18000 1 CDT} + {-1238950800 -21600 0 CST} + {-1220803200 -18000 1 CDT} + {-1207501200 -21600 0 CST} + {-1189353600 -18000 1 CDT} + {-1176051600 -21600 0 CST} + {-1157299200 -18000 1 CDT} + {-1144602000 -21600 0 CST} + {-1125849600 -18000 1 CDT} + {-1112547600 -21600 0 CST} + {-1094400000 -18000 1 CDT} + {-1081098000 -21600 0 CST} + {-1067788800 -18000 0 EST} + {-1045414800 -21600 0 CST} + {-1031500800 -18000 1 CDT} + {-1018198800 -21600 0 CST} + {-1000051200 -18000 1 CDT} + {-986749200 -21600 0 CST} + {-967996800 -18000 1 CDT} + {-955299600 -21600 0 CST} + {-936547200 -18000 1 CDT} + {-923245200 -21600 0 CST} + {-905097600 -18000 1 CDT} + {-891795600 -21600 0 CST} + {-883591200 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620841600 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-447267600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-415818000 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-384368400 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-352918800 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-321469200 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-257965200 -21600 0 CST} + {-242236800 -18000 1 CDT} + {-226515600 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-195066000 -21600 0 CST} + {-179337600 -18000 1 CDT} + {-163616400 -21600 0 CST} + {-147888000 -18000 1 CDT} + {-131562000 -21600 0 CST} + {-116438400 -18000 1 CDT} + {-100112400 -21600 0 CST} + {-94672800 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68662800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Chihuahua b/library/tzdata/America/Chihuahua index 5444930..04f4a24 100644 --- a/library/tzdata/America/Chihuahua +++ b/library/tzdata/America/Chihuahua @@ -1,221 +1,221 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Chihuahua) { - {-9223372036854775808 -25460 0 LMT} - {-1514739600 -25200 0 MST} - {-1343066400 -21600 0 CST} - {-1234807200 -25200 0 MST} - {-1220292000 -21600 0 CST} - {-1207159200 -25200 0 MST} - {-1191344400 -21600 0 CST} - {820476000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {883634400 -21600 0 CST} - {891766800 -21600 0 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {989139600 -21600 1 MDT} - {1001836800 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1175418000 -21600 1 MDT} - {1193558400 -25200 0 MST} - {1207472400 -21600 1 MDT} - {1225008000 -25200 0 MST} - {1238922000 -21600 1 MDT} - {1256457600 -25200 0 MST} - {1270371600 -21600 1 MDT} - {1288512000 -25200 0 MST} - {1301821200 -21600 1 MDT} - {1319961600 -25200 0 MST} - {1333270800 -21600 1 MDT} - {1351411200 -25200 0 MST} - {1365325200 -21600 1 MDT} - {1382860800 -25200 0 MST} - {1396774800 -21600 1 MDT} - {1414310400 -25200 0 MST} - {1428224400 -21600 1 MDT} - {1445760000 -25200 0 MST} - {1459674000 -21600 1 MDT} - {1477814400 -25200 0 MST} - {1491123600 -21600 1 MDT} - {1509264000 -25200 0 MST} - {1522573200 -21600 1 MDT} - {1540713600 -25200 0 MST} - {1554627600 -21600 1 MDT} - {1572163200 -25200 0 MST} - {1586077200 -21600 1 MDT} - {1603612800 -25200 0 MST} - {1617526800 -21600 1 MDT} - {1635667200 -25200 0 MST} - {1648976400 -21600 1 MDT} - {1667116800 -25200 0 MST} - {1680426000 -21600 1 MDT} - {1698566400 -25200 0 MST} - {1712480400 -21600 1 MDT} - {1730016000 -25200 0 MST} - {1743930000 -21600 1 MDT} - {1761465600 -25200 0 MST} - {1775379600 -21600 1 MDT} - {1792915200 -25200 0 MST} - {1806829200 -21600 1 MDT} - {1824969600 -25200 0 MST} - {1838278800 -21600 1 MDT} - {1856419200 -25200 0 MST} - {1869728400 -21600 1 MDT} - {1887868800 -25200 0 MST} - {1901782800 -21600 1 MDT} - {1919318400 -25200 0 MST} - {1933232400 -21600 1 MDT} - {1950768000 -25200 0 MST} - {1964682000 -21600 1 MDT} - {1982822400 -25200 0 MST} - {1996131600 -21600 1 MDT} - {2014272000 -25200 0 MST} - {2027581200 -21600 1 MDT} - {2045721600 -25200 0 MST} - {2059030800 -21600 1 MDT} - {2077171200 -25200 0 MST} - {2091085200 -21600 1 MDT} - {2108620800 -25200 0 MST} - {2122534800 -21600 1 MDT} - {2140070400 -25200 0 MST} - {2153984400 -21600 1 MDT} - {2172124800 -25200 0 MST} - {2185434000 -21600 1 MDT} - {2203574400 -25200 0 MST} - {2216883600 -21600 1 MDT} - {2235024000 -25200 0 MST} - {2248938000 -21600 1 MDT} - {2266473600 -25200 0 MST} - {2280387600 -21600 1 MDT} - {2297923200 -25200 0 MST} - {2311837200 -21600 1 MDT} - {2329372800 -25200 0 MST} - {2343286800 -21600 1 MDT} - {2361427200 -25200 0 MST} - {2374736400 -21600 1 MDT} - {2392876800 -25200 0 MST} - {2406186000 -21600 1 MDT} - {2424326400 -25200 0 MST} - {2438240400 -21600 1 MDT} - {2455776000 -25200 0 MST} - {2469690000 -21600 1 MDT} - {2487225600 -25200 0 MST} - {2501139600 -21600 1 MDT} - {2519280000 -25200 0 MST} - {2532589200 -21600 1 MDT} - {2550729600 -25200 0 MST} - {2564038800 -21600 1 MDT} - {2582179200 -25200 0 MST} - {2596093200 -21600 1 MDT} - {2613628800 -25200 0 MST} - {2627542800 -21600 1 MDT} - {2645078400 -25200 0 MST} - {2658992400 -21600 1 MDT} - {2676528000 -25200 0 MST} - {2690442000 -21600 1 MDT} - {2708582400 -25200 0 MST} - {2721891600 -21600 1 MDT} - {2740032000 -25200 0 MST} - {2753341200 -21600 1 MDT} - {2771481600 -25200 0 MST} - {2785395600 -21600 1 MDT} - {2802931200 -25200 0 MST} - {2816845200 -21600 1 MDT} - {2834380800 -25200 0 MST} - {2848294800 -21600 1 MDT} - {2866435200 -25200 0 MST} - {2879744400 -21600 1 MDT} - {2897884800 -25200 0 MST} - {2911194000 -21600 1 MDT} - {2929334400 -25200 0 MST} - {2942643600 -21600 1 MDT} - {2960784000 -25200 0 MST} - {2974698000 -21600 1 MDT} - {2992233600 -25200 0 MST} - {3006147600 -21600 1 MDT} - {3023683200 -25200 0 MST} - {3037597200 -21600 1 MDT} - {3055737600 -25200 0 MST} - {3069046800 -21600 1 MDT} - {3087187200 -25200 0 MST} - {3100496400 -21600 1 MDT} - {3118636800 -25200 0 MST} - {3132550800 -21600 1 MDT} - {3150086400 -25200 0 MST} - {3164000400 -21600 1 MDT} - {3181536000 -25200 0 MST} - {3195450000 -21600 1 MDT} - {3212985600 -25200 0 MST} - {3226899600 -21600 1 MDT} - {3245040000 -25200 0 MST} - {3258349200 -21600 1 MDT} - {3276489600 -25200 0 MST} - {3289798800 -21600 1 MDT} - {3307939200 -25200 0 MST} - {3321853200 -21600 1 MDT} - {3339388800 -25200 0 MST} - {3353302800 -21600 1 MDT} - {3370838400 -25200 0 MST} - {3384752400 -21600 1 MDT} - {3402892800 -25200 0 MST} - {3416202000 -21600 1 MDT} - {3434342400 -25200 0 MST} - {3447651600 -21600 1 MDT} - {3465792000 -25200 0 MST} - {3479706000 -21600 1 MDT} - {3497241600 -25200 0 MST} - {3511155600 -21600 1 MDT} - {3528691200 -25200 0 MST} - {3542605200 -21600 1 MDT} - {3560140800 -25200 0 MST} - {3574054800 -21600 1 MDT} - {3592195200 -25200 0 MST} - {3605504400 -21600 1 MDT} - {3623644800 -25200 0 MST} - {3636954000 -21600 1 MDT} - {3655094400 -25200 0 MST} - {3669008400 -21600 1 MDT} - {3686544000 -25200 0 MST} - {3700458000 -21600 1 MDT} - {3717993600 -25200 0 MST} - {3731907600 -21600 1 MDT} - {3750048000 -25200 0 MST} - {3763357200 -21600 1 MDT} - {3781497600 -25200 0 MST} - {3794806800 -21600 1 MDT} - {3812947200 -25200 0 MST} - {3826256400 -21600 1 MDT} - {3844396800 -25200 0 MST} - {3858310800 -21600 1 MDT} - {3875846400 -25200 0 MST} - {3889760400 -21600 1 MDT} - {3907296000 -25200 0 MST} - {3921210000 -21600 1 MDT} - {3939350400 -25200 0 MST} - {3952659600 -21600 1 MDT} - {3970800000 -25200 0 MST} - {3984109200 -21600 1 MDT} - {4002249600 -25200 0 MST} - {4016163600 -21600 1 MDT} - {4033699200 -25200 0 MST} - {4047613200 -21600 1 MDT} - {4065148800 -25200 0 MST} - {4079062800 -21600 1 MDT} - {4096598400 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Chihuahua) { + {-9223372036854775808 -25460 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {820476000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {883634400 -21600 0 CST} + {891766800 -21600 0 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {989139600 -21600 1 MDT} + {1001836800 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1175418000 -21600 1 MDT} + {1193558400 -25200 0 MST} + {1207472400 -21600 1 MDT} + {1225008000 -25200 0 MST} + {1238922000 -21600 1 MDT} + {1256457600 -25200 0 MST} + {1270371600 -21600 1 MDT} + {1288512000 -25200 0 MST} + {1301821200 -21600 1 MDT} + {1319961600 -25200 0 MST} + {1333270800 -21600 1 MDT} + {1351411200 -25200 0 MST} + {1365325200 -21600 1 MDT} + {1382860800 -25200 0 MST} + {1396774800 -21600 1 MDT} + {1414310400 -25200 0 MST} + {1428224400 -21600 1 MDT} + {1445760000 -25200 0 MST} + {1459674000 -21600 1 MDT} + {1477814400 -25200 0 MST} + {1491123600 -21600 1 MDT} + {1509264000 -25200 0 MST} + {1522573200 -21600 1 MDT} + {1540713600 -25200 0 MST} + {1554627600 -21600 1 MDT} + {1572163200 -25200 0 MST} + {1586077200 -21600 1 MDT} + {1603612800 -25200 0 MST} + {1617526800 -21600 1 MDT} + {1635667200 -25200 0 MST} + {1648976400 -21600 1 MDT} + {1667116800 -25200 0 MST} + {1680426000 -21600 1 MDT} + {1698566400 -25200 0 MST} + {1712480400 -21600 1 MDT} + {1730016000 -25200 0 MST} + {1743930000 -21600 1 MDT} + {1761465600 -25200 0 MST} + {1775379600 -21600 1 MDT} + {1792915200 -25200 0 MST} + {1806829200 -21600 1 MDT} + {1824969600 -25200 0 MST} + {1838278800 -21600 1 MDT} + {1856419200 -25200 0 MST} + {1869728400 -21600 1 MDT} + {1887868800 -25200 0 MST} + {1901782800 -21600 1 MDT} + {1919318400 -25200 0 MST} + {1933232400 -21600 1 MDT} + {1950768000 -25200 0 MST} + {1964682000 -21600 1 MDT} + {1982822400 -25200 0 MST} + {1996131600 -21600 1 MDT} + {2014272000 -25200 0 MST} + {2027581200 -21600 1 MDT} + {2045721600 -25200 0 MST} + {2059030800 -21600 1 MDT} + {2077171200 -25200 0 MST} + {2091085200 -21600 1 MDT} + {2108620800 -25200 0 MST} + {2122534800 -21600 1 MDT} + {2140070400 -25200 0 MST} + {2153984400 -21600 1 MDT} + {2172124800 -25200 0 MST} + {2185434000 -21600 1 MDT} + {2203574400 -25200 0 MST} + {2216883600 -21600 1 MDT} + {2235024000 -25200 0 MST} + {2248938000 -21600 1 MDT} + {2266473600 -25200 0 MST} + {2280387600 -21600 1 MDT} + {2297923200 -25200 0 MST} + {2311837200 -21600 1 MDT} + {2329372800 -25200 0 MST} + {2343286800 -21600 1 MDT} + {2361427200 -25200 0 MST} + {2374736400 -21600 1 MDT} + {2392876800 -25200 0 MST} + {2406186000 -21600 1 MDT} + {2424326400 -25200 0 MST} + {2438240400 -21600 1 MDT} + {2455776000 -25200 0 MST} + {2469690000 -21600 1 MDT} + {2487225600 -25200 0 MST} + {2501139600 -21600 1 MDT} + {2519280000 -25200 0 MST} + {2532589200 -21600 1 MDT} + {2550729600 -25200 0 MST} + {2564038800 -21600 1 MDT} + {2582179200 -25200 0 MST} + {2596093200 -21600 1 MDT} + {2613628800 -25200 0 MST} + {2627542800 -21600 1 MDT} + {2645078400 -25200 0 MST} + {2658992400 -21600 1 MDT} + {2676528000 -25200 0 MST} + {2690442000 -21600 1 MDT} + {2708582400 -25200 0 MST} + {2721891600 -21600 1 MDT} + {2740032000 -25200 0 MST} + {2753341200 -21600 1 MDT} + {2771481600 -25200 0 MST} + {2785395600 -21600 1 MDT} + {2802931200 -25200 0 MST} + {2816845200 -21600 1 MDT} + {2834380800 -25200 0 MST} + {2848294800 -21600 1 MDT} + {2866435200 -25200 0 MST} + {2879744400 -21600 1 MDT} + {2897884800 -25200 0 MST} + {2911194000 -21600 1 MDT} + {2929334400 -25200 0 MST} + {2942643600 -21600 1 MDT} + {2960784000 -25200 0 MST} + {2974698000 -21600 1 MDT} + {2992233600 -25200 0 MST} + {3006147600 -21600 1 MDT} + {3023683200 -25200 0 MST} + {3037597200 -21600 1 MDT} + {3055737600 -25200 0 MST} + {3069046800 -21600 1 MDT} + {3087187200 -25200 0 MST} + {3100496400 -21600 1 MDT} + {3118636800 -25200 0 MST} + {3132550800 -21600 1 MDT} + {3150086400 -25200 0 MST} + {3164000400 -21600 1 MDT} + {3181536000 -25200 0 MST} + {3195450000 -21600 1 MDT} + {3212985600 -25200 0 MST} + {3226899600 -21600 1 MDT} + {3245040000 -25200 0 MST} + {3258349200 -21600 1 MDT} + {3276489600 -25200 0 MST} + {3289798800 -21600 1 MDT} + {3307939200 -25200 0 MST} + {3321853200 -21600 1 MDT} + {3339388800 -25200 0 MST} + {3353302800 -21600 1 MDT} + {3370838400 -25200 0 MST} + {3384752400 -21600 1 MDT} + {3402892800 -25200 0 MST} + {3416202000 -21600 1 MDT} + {3434342400 -25200 0 MST} + {3447651600 -21600 1 MDT} + {3465792000 -25200 0 MST} + {3479706000 -21600 1 MDT} + {3497241600 -25200 0 MST} + {3511155600 -21600 1 MDT} + {3528691200 -25200 0 MST} + {3542605200 -21600 1 MDT} + {3560140800 -25200 0 MST} + {3574054800 -21600 1 MDT} + {3592195200 -25200 0 MST} + {3605504400 -21600 1 MDT} + {3623644800 -25200 0 MST} + {3636954000 -21600 1 MDT} + {3655094400 -25200 0 MST} + {3669008400 -21600 1 MDT} + {3686544000 -25200 0 MST} + {3700458000 -21600 1 MDT} + {3717993600 -25200 0 MST} + {3731907600 -21600 1 MDT} + {3750048000 -25200 0 MST} + {3763357200 -21600 1 MDT} + {3781497600 -25200 0 MST} + {3794806800 -21600 1 MDT} + {3812947200 -25200 0 MST} + {3826256400 -21600 1 MDT} + {3844396800 -25200 0 MST} + {3858310800 -21600 1 MDT} + {3875846400 -25200 0 MST} + {3889760400 -21600 1 MDT} + {3907296000 -25200 0 MST} + {3921210000 -21600 1 MDT} + {3939350400 -25200 0 MST} + {3952659600 -21600 1 MDT} + {3970800000 -25200 0 MST} + {3984109200 -21600 1 MDT} + {4002249600 -25200 0 MST} + {4016163600 -21600 1 MDT} + {4033699200 -25200 0 MST} + {4047613200 -21600 1 MDT} + {4065148800 -25200 0 MST} + {4079062800 -21600 1 MDT} + {4096598400 -25200 0 MST} +} diff --git a/library/tzdata/America/Coral_Harbour b/library/tzdata/America/Coral_Harbour index a27dc03..14aae52 100644 --- a/library/tzdata/America/Coral_Harbour +++ b/library/tzdata/America/Coral_Harbour @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Atikokan)]} { - LoadTimeZoneFile America/Atikokan -} -set TZData(:America/Coral_Harbour) $TZData(:America/Atikokan) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Atikokan)]} { + LoadTimeZoneFile America/Atikokan +} +set TZData(:America/Coral_Harbour) $TZData(:America/Atikokan) diff --git a/library/tzdata/America/Cordoba b/library/tzdata/America/Cordoba index c881558..85c12f4 100644 --- a/library/tzdata/America/Cordoba +++ b/library/tzdata/America/Cordoba @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Cordoba)]} { - LoadTimeZoneFile America/Argentina/Cordoba -} -set TZData(:America/Cordoba) $TZData(:America/Argentina/Cordoba) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Cordoba)]} { + LoadTimeZoneFile America/Argentina/Cordoba +} +set TZData(:America/Cordoba) $TZData(:America/Argentina/Cordoba) diff --git a/library/tzdata/America/Costa_Rica b/library/tzdata/America/Costa_Rica index 04420a4..f0bb633 100644 --- a/library/tzdata/America/Costa_Rica +++ b/library/tzdata/America/Costa_Rica @@ -1,15 +1,15 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Costa_Rica) { - {-9223372036854775808 -20180 0 LMT} - {-2524501420 -20180 0 SJMT} - {-1545071020 -21600 0 CST} - {288770400 -18000 1 CDT} - {297234000 -21600 0 CST} - {320220000 -18000 1 CDT} - {328683600 -21600 0 CST} - {664264800 -18000 1 CDT} - {678344400 -21600 0 CST} - {695714400 -18000 1 CDT} - {700635600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Costa_Rica) { + {-9223372036854775808 -20180 0 LMT} + {-2524501420 -20180 0 SJMT} + {-1545071020 -21600 0 CST} + {288770400 -18000 1 CDT} + {297234000 -21600 0 CST} + {320220000 -18000 1 CDT} + {328683600 -21600 0 CST} + {664264800 -18000 1 CDT} + {678344400 -21600 0 CST} + {695714400 -18000 1 CDT} + {700635600 -21600 0 CST} +} diff --git a/library/tzdata/America/Cuiaba b/library/tzdata/America/Cuiaba index 0301862..636a180 100644 --- a/library/tzdata/America/Cuiaba +++ b/library/tzdata/America/Cuiaba @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cuiaba) { - {-9223372036854775808 -13460 0 LMT} - {-1767212140 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {592977600 -10800 1 AMST} - {602046000 -14400 0 AMT} - {624427200 -10800 1 AMST} - {634705200 -14400 0 AMT} - {656481600 -10800 1 AMST} - {666759600 -14400 0 AMT} - {687931200 -10800 1 AMST} - {697604400 -14400 0 AMT} - {719985600 -10800 1 AMST} - {728449200 -14400 0 AMT} - {750830400 -10800 1 AMST} - {761713200 -14400 0 AMT} - {782280000 -10800 1 AMST} - {793162800 -14400 0 AMT} - {813729600 -10800 1 AMST} - {824007600 -14400 0 AMT} - {844574400 -10800 1 AMST} - {856062000 -14400 0 AMT} - {876110400 -10800 1 AMST} - {888721200 -14400 0 AMT} - {908078400 -10800 1 AMST} - {919566000 -14400 0 AMT} - {938923200 -10800 1 AMST} - {951620400 -14400 0 AMT} - {970977600 -10800 1 AMST} - {982465200 -14400 0 AMT} - {1003032000 -10800 1 AMST} - {1013914800 -14400 0 AMT} - {1036296000 -10800 1 AMST} - {1045364400 -14400 0 AMT} - {1064372400 -14400 0 AMT} - {1096603200 -14400 0 AMT} - {1099368000 -10800 1 AMST} - {1108868400 -14400 0 AMT} - {1129435200 -10800 1 AMST} - {1140318000 -14400 0 AMT} - {1162699200 -10800 1 AMST} - {1172372400 -14400 0 AMT} - {1192334400 -10800 1 AMST} - {1203217200 -14400 0 AMT} - {1224388800 -10800 1 AMST} - {1234666800 -14400 0 AMT} - {1255838400 -10800 1 AMST} - {1266721200 -14400 0 AMT} - {1287288000 -10800 1 AMST} - {1298170800 -14400 0 AMT} - {1318737600 -10800 1 AMST} - {1330225200 -14400 0 AMT} - {1350792000 -10800 1 AMST} - {1361070000 -14400 0 AMT} - {1382241600 -10800 1 AMST} - {1392519600 -14400 0 AMT} - {1413691200 -10800 1 AMST} - {1424574000 -14400 0 AMT} - {1445140800 -10800 1 AMST} - {1456023600 -14400 0 AMT} - {1476590400 -10800 1 AMST} - {1487473200 -14400 0 AMT} - {1508040000 -10800 1 AMST} - {1518922800 -14400 0 AMT} - {1540094400 -10800 1 AMST} - {1550372400 -14400 0 AMT} - {1571544000 -10800 1 AMST} - {1581822000 -14400 0 AMT} - {1602993600 -10800 1 AMST} - {1613876400 -14400 0 AMT} - {1634443200 -10800 1 AMST} - {1645326000 -14400 0 AMT} - {1665892800 -10800 1 AMST} - {1677380400 -14400 0 AMT} - {1697342400 -10800 1 AMST} - {1708225200 -14400 0 AMT} - {1729396800 -10800 1 AMST} - {1739674800 -14400 0 AMT} - {1760846400 -10800 1 AMST} - {1771729200 -14400 0 AMT} - {1792296000 -10800 1 AMST} - {1803178800 -14400 0 AMT} - {1823745600 -10800 1 AMST} - {1834628400 -14400 0 AMT} - {1855195200 -10800 1 AMST} - {1866078000 -14400 0 AMT} - {1887249600 -10800 1 AMST} - {1897527600 -14400 0 AMT} - {1918699200 -10800 1 AMST} - {1928977200 -14400 0 AMT} - {1950148800 -10800 1 AMST} - {1960426800 -14400 0 AMT} - {1981598400 -10800 1 AMST} - {1992481200 -14400 0 AMT} - {2013048000 -10800 1 AMST} - {2024535600 -14400 0 AMT} - {2044497600 -10800 1 AMST} - {2055380400 -14400 0 AMT} - {2076552000 -10800 1 AMST} - {2086830000 -14400 0 AMT} - {2108001600 -10800 1 AMST} - {2118884400 -14400 0 AMT} - {2139451200 -10800 1 AMST} - {2150334000 -14400 0 AMT} - {2170900800 -10800 1 AMST} - {2181783600 -14400 0 AMT} - {2202350400 -10800 1 AMST} - {2213233200 -14400 0 AMT} - {2234404800 -10800 1 AMST} - {2244682800 -14400 0 AMT} - {2265854400 -10800 1 AMST} - {2276132400 -14400 0 AMT} - {2297304000 -10800 1 AMST} - {2307582000 -14400 0 AMT} - {2328753600 -10800 1 AMST} - {2339636400 -14400 0 AMT} - {2360203200 -10800 1 AMST} - {2371086000 -14400 0 AMT} - {2391652800 -10800 1 AMST} - {2402535600 -14400 0 AMT} - {2423707200 -10800 1 AMST} - {2433985200 -14400 0 AMT} - {2455156800 -10800 1 AMST} - {2465434800 -14400 0 AMT} - {2486606400 -10800 1 AMST} - {2497489200 -14400 0 AMT} - {2518056000 -10800 1 AMST} - {2528938800 -14400 0 AMT} - {2549505600 -10800 1 AMST} - {2560388400 -14400 0 AMT} - {2580955200 -10800 1 AMST} - {2591838000 -14400 0 AMT} - {2613009600 -10800 1 AMST} - {2623287600 -14400 0 AMT} - {2644459200 -10800 1 AMST} - {2654737200 -14400 0 AMT} - {2675908800 -10800 1 AMST} - {2686791600 -14400 0 AMT} - {2707358400 -10800 1 AMST} - {2718241200 -14400 0 AMT} - {2738808000 -10800 1 AMST} - {2749690800 -14400 0 AMT} - {2770862400 -10800 1 AMST} - {2781140400 -14400 0 AMT} - {2802312000 -10800 1 AMST} - {2812590000 -14400 0 AMT} - {2833761600 -10800 1 AMST} - {2844039600 -14400 0 AMT} - {2865211200 -10800 1 AMST} - {2876094000 -14400 0 AMT} - {2896660800 -10800 1 AMST} - {2907543600 -14400 0 AMT} - {2928110400 -10800 1 AMST} - {2938993200 -14400 0 AMT} - {2960164800 -10800 1 AMST} - {2970442800 -14400 0 AMT} - {2991614400 -10800 1 AMST} - {3001892400 -14400 0 AMT} - {3023064000 -10800 1 AMST} - {3033946800 -14400 0 AMT} - {3054513600 -10800 1 AMST} - {3065396400 -14400 0 AMT} - {3085963200 -10800 1 AMST} - {3096846000 -14400 0 AMT} - {3118017600 -10800 1 AMST} - {3128295600 -14400 0 AMT} - {3149467200 -10800 1 AMST} - {3159745200 -14400 0 AMT} - {3180916800 -10800 1 AMST} - {3191194800 -14400 0 AMT} - {3212366400 -10800 1 AMST} - {3223249200 -14400 0 AMT} - {3243816000 -10800 1 AMST} - {3254698800 -14400 0 AMT} - {3275265600 -10800 1 AMST} - {3286148400 -14400 0 AMT} - {3307320000 -10800 1 AMST} - {3317598000 -14400 0 AMT} - {3338769600 -10800 1 AMST} - {3349047600 -14400 0 AMT} - {3370219200 -10800 1 AMST} - {3381102000 -14400 0 AMT} - {3401668800 -10800 1 AMST} - {3412551600 -14400 0 AMT} - {3433118400 -10800 1 AMST} - {3444001200 -14400 0 AMT} - {3464568000 -10800 1 AMST} - {3475450800 -14400 0 AMT} - {3496622400 -10800 1 AMST} - {3506900400 -14400 0 AMT} - {3528072000 -10800 1 AMST} - {3538350000 -14400 0 AMT} - {3559521600 -10800 1 AMST} - {3570404400 -14400 0 AMT} - {3590971200 -10800 1 AMST} - {3601854000 -14400 0 AMT} - {3622420800 -10800 1 AMST} - {3633303600 -14400 0 AMT} - {3654475200 -10800 1 AMST} - {3664753200 -14400 0 AMT} - {3685924800 -10800 1 AMST} - {3696202800 -14400 0 AMT} - {3717374400 -10800 1 AMST} - {3727652400 -14400 0 AMT} - {3748824000 -10800 1 AMST} - {3759706800 -14400 0 AMT} - {3780273600 -10800 1 AMST} - {3791156400 -14400 0 AMT} - {3811723200 -10800 1 AMST} - {3822606000 -14400 0 AMT} - {3843777600 -10800 1 AMST} - {3854055600 -14400 0 AMT} - {3875227200 -10800 1 AMST} - {3885505200 -14400 0 AMT} - {3906676800 -10800 1 AMST} - {3917559600 -14400 0 AMT} - {3938126400 -10800 1 AMST} - {3949009200 -14400 0 AMT} - {3969576000 -10800 1 AMST} - {3980458800 -14400 0 AMT} - {4001630400 -10800 1 AMST} - {4011908400 -14400 0 AMT} - {4033080000 -10800 1 AMST} - {4043358000 -14400 0 AMT} - {4064529600 -10800 1 AMST} - {4074807600 -14400 0 AMT} - {4095979200 -10800 1 AMST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cuiaba) { + {-9223372036854775808 -13460 0 LMT} + {-1767212140 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {592977600 -10800 1 AMST} + {602046000 -14400 0 AMT} + {624427200 -10800 1 AMST} + {634705200 -14400 0 AMT} + {656481600 -10800 1 AMST} + {666759600 -14400 0 AMT} + {687931200 -10800 1 AMST} + {697604400 -14400 0 AMT} + {719985600 -10800 1 AMST} + {728449200 -14400 0 AMT} + {750830400 -10800 1 AMST} + {761713200 -14400 0 AMT} + {782280000 -10800 1 AMST} + {793162800 -14400 0 AMT} + {813729600 -10800 1 AMST} + {824007600 -14400 0 AMT} + {844574400 -10800 1 AMST} + {856062000 -14400 0 AMT} + {876110400 -10800 1 AMST} + {888721200 -14400 0 AMT} + {908078400 -10800 1 AMST} + {919566000 -14400 0 AMT} + {938923200 -10800 1 AMST} + {951620400 -14400 0 AMT} + {970977600 -10800 1 AMST} + {982465200 -14400 0 AMT} + {1003032000 -10800 1 AMST} + {1013914800 -14400 0 AMT} + {1036296000 -10800 1 AMST} + {1045364400 -14400 0 AMT} + {1064372400 -14400 0 AMT} + {1096603200 -14400 0 AMT} + {1099368000 -10800 1 AMST} + {1108868400 -14400 0 AMT} + {1129435200 -10800 1 AMST} + {1140318000 -14400 0 AMT} + {1162699200 -10800 1 AMST} + {1172372400 -14400 0 AMT} + {1192334400 -10800 1 AMST} + {1203217200 -14400 0 AMT} + {1224388800 -10800 1 AMST} + {1234666800 -14400 0 AMT} + {1255838400 -10800 1 AMST} + {1266721200 -14400 0 AMT} + {1287288000 -10800 1 AMST} + {1298170800 -14400 0 AMT} + {1318737600 -10800 1 AMST} + {1330225200 -14400 0 AMT} + {1350792000 -10800 1 AMST} + {1361070000 -14400 0 AMT} + {1382241600 -10800 1 AMST} + {1392519600 -14400 0 AMT} + {1413691200 -10800 1 AMST} + {1424574000 -14400 0 AMT} + {1445140800 -10800 1 AMST} + {1456023600 -14400 0 AMT} + {1476590400 -10800 1 AMST} + {1487473200 -14400 0 AMT} + {1508040000 -10800 1 AMST} + {1518922800 -14400 0 AMT} + {1540094400 -10800 1 AMST} + {1550372400 -14400 0 AMT} + {1571544000 -10800 1 AMST} + {1581822000 -14400 0 AMT} + {1602993600 -10800 1 AMST} + {1613876400 -14400 0 AMT} + {1634443200 -10800 1 AMST} + {1645326000 -14400 0 AMT} + {1665892800 -10800 1 AMST} + {1677380400 -14400 0 AMT} + {1697342400 -10800 1 AMST} + {1708225200 -14400 0 AMT} + {1729396800 -10800 1 AMST} + {1739674800 -14400 0 AMT} + {1760846400 -10800 1 AMST} + {1771729200 -14400 0 AMT} + {1792296000 -10800 1 AMST} + {1803178800 -14400 0 AMT} + {1823745600 -10800 1 AMST} + {1834628400 -14400 0 AMT} + {1855195200 -10800 1 AMST} + {1866078000 -14400 0 AMT} + {1887249600 -10800 1 AMST} + {1897527600 -14400 0 AMT} + {1918699200 -10800 1 AMST} + {1928977200 -14400 0 AMT} + {1950148800 -10800 1 AMST} + {1960426800 -14400 0 AMT} + {1981598400 -10800 1 AMST} + {1992481200 -14400 0 AMT} + {2013048000 -10800 1 AMST} + {2024535600 -14400 0 AMT} + {2044497600 -10800 1 AMST} + {2055380400 -14400 0 AMT} + {2076552000 -10800 1 AMST} + {2086830000 -14400 0 AMT} + {2108001600 -10800 1 AMST} + {2118884400 -14400 0 AMT} + {2139451200 -10800 1 AMST} + {2150334000 -14400 0 AMT} + {2170900800 -10800 1 AMST} + {2181783600 -14400 0 AMT} + {2202350400 -10800 1 AMST} + {2213233200 -14400 0 AMT} + {2234404800 -10800 1 AMST} + {2244682800 -14400 0 AMT} + {2265854400 -10800 1 AMST} + {2276132400 -14400 0 AMT} + {2297304000 -10800 1 AMST} + {2307582000 -14400 0 AMT} + {2328753600 -10800 1 AMST} + {2339636400 -14400 0 AMT} + {2360203200 -10800 1 AMST} + {2371086000 -14400 0 AMT} + {2391652800 -10800 1 AMST} + {2402535600 -14400 0 AMT} + {2423707200 -10800 1 AMST} + {2433985200 -14400 0 AMT} + {2455156800 -10800 1 AMST} + {2465434800 -14400 0 AMT} + {2486606400 -10800 1 AMST} + {2497489200 -14400 0 AMT} + {2518056000 -10800 1 AMST} + {2528938800 -14400 0 AMT} + {2549505600 -10800 1 AMST} + {2560388400 -14400 0 AMT} + {2580955200 -10800 1 AMST} + {2591838000 -14400 0 AMT} + {2613009600 -10800 1 AMST} + {2623287600 -14400 0 AMT} + {2644459200 -10800 1 AMST} + {2654737200 -14400 0 AMT} + {2675908800 -10800 1 AMST} + {2686791600 -14400 0 AMT} + {2707358400 -10800 1 AMST} + {2718241200 -14400 0 AMT} + {2738808000 -10800 1 AMST} + {2749690800 -14400 0 AMT} + {2770862400 -10800 1 AMST} + {2781140400 -14400 0 AMT} + {2802312000 -10800 1 AMST} + {2812590000 -14400 0 AMT} + {2833761600 -10800 1 AMST} + {2844039600 -14400 0 AMT} + {2865211200 -10800 1 AMST} + {2876094000 -14400 0 AMT} + {2896660800 -10800 1 AMST} + {2907543600 -14400 0 AMT} + {2928110400 -10800 1 AMST} + {2938993200 -14400 0 AMT} + {2960164800 -10800 1 AMST} + {2970442800 -14400 0 AMT} + {2991614400 -10800 1 AMST} + {3001892400 -14400 0 AMT} + {3023064000 -10800 1 AMST} + {3033946800 -14400 0 AMT} + {3054513600 -10800 1 AMST} + {3065396400 -14400 0 AMT} + {3085963200 -10800 1 AMST} + {3096846000 -14400 0 AMT} + {3118017600 -10800 1 AMST} + {3128295600 -14400 0 AMT} + {3149467200 -10800 1 AMST} + {3159745200 -14400 0 AMT} + {3180916800 -10800 1 AMST} + {3191194800 -14400 0 AMT} + {3212366400 -10800 1 AMST} + {3223249200 -14400 0 AMT} + {3243816000 -10800 1 AMST} + {3254698800 -14400 0 AMT} + {3275265600 -10800 1 AMST} + {3286148400 -14400 0 AMT} + {3307320000 -10800 1 AMST} + {3317598000 -14400 0 AMT} + {3338769600 -10800 1 AMST} + {3349047600 -14400 0 AMT} + {3370219200 -10800 1 AMST} + {3381102000 -14400 0 AMT} + {3401668800 -10800 1 AMST} + {3412551600 -14400 0 AMT} + {3433118400 -10800 1 AMST} + {3444001200 -14400 0 AMT} + {3464568000 -10800 1 AMST} + {3475450800 -14400 0 AMT} + {3496622400 -10800 1 AMST} + {3506900400 -14400 0 AMT} + {3528072000 -10800 1 AMST} + {3538350000 -14400 0 AMT} + {3559521600 -10800 1 AMST} + {3570404400 -14400 0 AMT} + {3590971200 -10800 1 AMST} + {3601854000 -14400 0 AMT} + {3622420800 -10800 1 AMST} + {3633303600 -14400 0 AMT} + {3654475200 -10800 1 AMST} + {3664753200 -14400 0 AMT} + {3685924800 -10800 1 AMST} + {3696202800 -14400 0 AMT} + {3717374400 -10800 1 AMST} + {3727652400 -14400 0 AMT} + {3748824000 -10800 1 AMST} + {3759706800 -14400 0 AMT} + {3780273600 -10800 1 AMST} + {3791156400 -14400 0 AMT} + {3811723200 -10800 1 AMST} + {3822606000 -14400 0 AMT} + {3843777600 -10800 1 AMST} + {3854055600 -14400 0 AMT} + {3875227200 -10800 1 AMST} + {3885505200 -14400 0 AMT} + {3906676800 -10800 1 AMST} + {3917559600 -14400 0 AMT} + {3938126400 -10800 1 AMST} + {3949009200 -14400 0 AMT} + {3969576000 -10800 1 AMST} + {3980458800 -14400 0 AMT} + {4001630400 -10800 1 AMST} + {4011908400 -14400 0 AMT} + {4033080000 -10800 1 AMST} + {4043358000 -14400 0 AMT} + {4064529600 -10800 1 AMST} + {4074807600 -14400 0 AMT} + {4095979200 -10800 1 AMST} +} diff --git a/library/tzdata/America/Curacao b/library/tzdata/America/Curacao index 443a319..bbac005 100644 --- a/library/tzdata/America/Curacao +++ b/library/tzdata/America/Curacao @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Curacao) { - {-9223372036854775808 -16544 0 LMT} - {-1826738656 -16200 0 ANT} - {-157750200 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Curacao) { + {-9223372036854775808 -16544 0 LMT} + {-1826738656 -16200 0 ANT} + {-157750200 -14400 0 AST} +} diff --git a/library/tzdata/America/Danmarkshavn b/library/tzdata/America/Danmarkshavn index 8d66d3a..e6b6a28 100644 --- a/library/tzdata/America/Danmarkshavn +++ b/library/tzdata/America/Danmarkshavn @@ -1,39 +1,39 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Danmarkshavn) { - {-9223372036854775808 -4480 0 LMT} - {-1686091520 -10800 0 WGT} - {323845200 -7200 0 WGST} - {338950800 -10800 0 WGT} - {354675600 -7200 1 WGST} - {370400400 -10800 0 WGT} - {386125200 -7200 1 WGST} - {401850000 -10800 0 WGT} - {417574800 -7200 1 WGST} - {433299600 -10800 0 WGT} - {449024400 -7200 1 WGST} - {465354000 -10800 0 WGT} - {481078800 -7200 1 WGST} - {496803600 -10800 0 WGT} - {512528400 -7200 1 WGST} - {528253200 -10800 0 WGT} - {543978000 -7200 1 WGST} - {559702800 -10800 0 WGT} - {575427600 -7200 1 WGST} - {591152400 -10800 0 WGT} - {606877200 -7200 1 WGST} - {622602000 -10800 0 WGT} - {638326800 -7200 1 WGST} - {654656400 -10800 0 WGT} - {670381200 -7200 1 WGST} - {686106000 -10800 0 WGT} - {701830800 -7200 1 WGST} - {717555600 -10800 0 WGT} - {733280400 -7200 1 WGST} - {749005200 -10800 0 WGT} - {764730000 -7200 1 WGST} - {780454800 -10800 0 WGT} - {796179600 -7200 1 WGST} - {811904400 -10800 0 WGT} - {820465200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Danmarkshavn) { + {-9223372036854775808 -4480 0 LMT} + {-1686091520 -10800 0 WGT} + {323845200 -7200 0 WGST} + {338950800 -10800 0 WGT} + {354675600 -7200 1 WGST} + {370400400 -10800 0 WGT} + {386125200 -7200 1 WGST} + {401850000 -10800 0 WGT} + {417574800 -7200 1 WGST} + {433299600 -10800 0 WGT} + {449024400 -7200 1 WGST} + {465354000 -10800 0 WGT} + {481078800 -7200 1 WGST} + {496803600 -10800 0 WGT} + {512528400 -7200 1 WGST} + {528253200 -10800 0 WGT} + {543978000 -7200 1 WGST} + {559702800 -10800 0 WGT} + {575427600 -7200 1 WGST} + {591152400 -10800 0 WGT} + {606877200 -7200 1 WGST} + {622602000 -10800 0 WGT} + {638326800 -7200 1 WGST} + {654656400 -10800 0 WGT} + {670381200 -7200 1 WGST} + {686106000 -10800 0 WGT} + {701830800 -7200 1 WGST} + {717555600 -10800 0 WGT} + {733280400 -7200 1 WGST} + {749005200 -10800 0 WGT} + {764730000 -7200 1 WGST} + {780454800 -10800 0 WGT} + {796179600 -7200 1 WGST} + {811904400 -10800 0 WGT} + {820465200 0 0 GMT} +} diff --git a/library/tzdata/America/Dawson b/library/tzdata/America/Dawson index 8d2b641..f1841e4 100644 --- a/library/tzdata/America/Dawson +++ b/library/tzdata/America/Dawson @@ -1,256 +1,256 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Dawson) { - {-9223372036854775808 -33460 0 LMT} - {-2188996940 -32400 0 YST} - {-1632056400 -28800 1 YDT} - {-1615125600 -32400 0 YST} - {-1596978000 -28800 1 YDT} - {-1583164800 -32400 0 YST} - {-880203600 -28800 1 YWT} - {-769395600 -28800 1 YPT} - {-765381600 -32400 0 YST} - {-147884400 -25200 1 YDDT} - {-131554800 -32400 0 YST} - {315561600 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Dawson) { + {-9223372036854775808 -33460 0 LMT} + {-2188996940 -32400 0 YST} + {-1632056400 -28800 1 YDT} + {-1615125600 -32400 0 YST} + {-1596978000 -28800 1 YDT} + {-1583164800 -32400 0 YST} + {-880203600 -28800 1 YWT} + {-769395600 -28800 1 YPT} + {-765381600 -32400 0 YST} + {-147884400 -25200 1 YDDT} + {-131554800 -32400 0 YST} + {315561600 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/America/Dawson_Creek b/library/tzdata/America/Dawson_Creek index 9f8c921..7c78eeb 100644 --- a/library/tzdata/America/Dawson_Creek +++ b/library/tzdata/America/Dawson_Creek @@ -1,64 +1,64 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Dawson_Creek) { - {-9223372036854775808 -28856 0 LMT} - {-2713881544 -28800 0 PST} - {-1632060000 -25200 1 PDT} - {-1614783600 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-725817600 -28800 0 PST} - {-715788000 -25200 1 PDT} - {-702486000 -28800 0 PST} - {-684338400 -25200 1 PDT} - {-671036400 -28800 0 PST} - {-652888800 -25200 1 PDT} - {-639586800 -28800 0 PST} - {-620834400 -25200 1 PDT} - {-608137200 -28800 0 PST} - {-589384800 -25200 1 PDT} - {-576082800 -28800 0 PST} - {-557935200 -25200 1 PDT} - {-544633200 -28800 0 PST} - {-526485600 -25200 1 PDT} - {-513183600 -28800 0 PST} - {-495036000 -25200 1 PDT} - {-481734000 -28800 0 PST} - {-463586400 -25200 1 PDT} - {-450284400 -28800 0 PST} - {-431532000 -25200 1 PDT} - {-418230000 -28800 0 PST} - {-400082400 -25200 1 PDT} - {-386780400 -28800 0 PST} - {-368632800 -25200 1 PDT} - {-355330800 -28800 0 PST} - {-337183200 -25200 1 PDT} - {-323881200 -28800 0 PST} - {-305733600 -25200 1 PDT} - {-292431600 -28800 0 PST} - {-273679200 -25200 1 PDT} - {-260982000 -28800 0 PST} - {-242229600 -25200 1 PDT} - {-226508400 -28800 0 PST} - {-210780000 -25200 1 PDT} - {-195058800 -28800 0 PST} - {-179330400 -25200 1 PDT} - {-163609200 -28800 0 PST} - {-147880800 -25200 1 PDT} - {-131554800 -28800 0 PST} - {-116431200 -25200 1 PDT} - {-100105200 -28800 0 PST} - {-84376800 -25200 1 PDT} - {-68655600 -28800 0 PST} - {-52927200 -25200 1 PDT} - {-37206000 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {84016800 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Dawson_Creek) { + {-9223372036854775808 -28856 0 LMT} + {-2713881544 -28800 0 PST} + {-1632060000 -25200 1 PDT} + {-1614783600 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-725817600 -28800 0 PST} + {-715788000 -25200 1 PDT} + {-702486000 -28800 0 PST} + {-684338400 -25200 1 PDT} + {-671036400 -28800 0 PST} + {-652888800 -25200 1 PDT} + {-639586800 -28800 0 PST} + {-620834400 -25200 1 PDT} + {-608137200 -28800 0 PST} + {-589384800 -25200 1 PDT} + {-576082800 -28800 0 PST} + {-557935200 -25200 1 PDT} + {-544633200 -28800 0 PST} + {-526485600 -25200 1 PDT} + {-513183600 -28800 0 PST} + {-495036000 -25200 1 PDT} + {-481734000 -28800 0 PST} + {-463586400 -25200 1 PDT} + {-450284400 -28800 0 PST} + {-431532000 -25200 1 PDT} + {-418230000 -28800 0 PST} + {-400082400 -25200 1 PDT} + {-386780400 -28800 0 PST} + {-368632800 -25200 1 PDT} + {-355330800 -28800 0 PST} + {-337183200 -25200 1 PDT} + {-323881200 -28800 0 PST} + {-305733600 -25200 1 PDT} + {-292431600 -28800 0 PST} + {-273679200 -25200 1 PDT} + {-260982000 -28800 0 PST} + {-242229600 -25200 1 PDT} + {-226508400 -28800 0 PST} + {-210780000 -25200 1 PDT} + {-195058800 -28800 0 PST} + {-179330400 -25200 1 PDT} + {-163609200 -28800 0 PST} + {-147880800 -25200 1 PDT} + {-131554800 -28800 0 PST} + {-116431200 -25200 1 PDT} + {-100105200 -28800 0 PST} + {-84376800 -25200 1 PDT} + {-68655600 -28800 0 PST} + {-52927200 -25200 1 PDT} + {-37206000 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {84016800 -25200 0 MST} +} diff --git a/library/tzdata/America/Denver b/library/tzdata/America/Denver index 06bc80d..c8c9f03 100644 --- a/library/tzdata/America/Denver +++ b/library/tzdata/America/Denver @@ -1,291 +1,291 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Denver) { - {-9223372036854775808 -25196 0 LMT} - {-2717643600 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-1577898000 -25200 0 MST} - {-1570374000 -21600 1 MDT} - {-1551628800 -25200 0 MST} - {-1538924400 -21600 1 MDT} - {-1534089600 -25200 0 MST} - {-883587600 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-757357200 -25200 0 MST} - {-147884400 -21600 1 MDT} - {-131558400 -25200 0 MST} - {-116434800 -21600 1 MDT} - {-100108800 -25200 0 MST} - {-94669200 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126694800 -21600 1 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Denver) { + {-9223372036854775808 -25196 0 LMT} + {-2717643600 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-1577898000 -25200 0 MST} + {-1570374000 -21600 1 MDT} + {-1551628800 -25200 0 MST} + {-1538924400 -21600 1 MDT} + {-1534089600 -25200 0 MST} + {-883587600 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-757357200 -25200 0 MST} + {-147884400 -21600 1 MDT} + {-131558400 -25200 0 MST} + {-116434800 -21600 1 MDT} + {-100108800 -25200 0 MST} + {-94669200 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126694800 -21600 1 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Detroit b/library/tzdata/America/Detroit index 696a663..ff39065 100644 --- a/library/tzdata/America/Detroit +++ b/library/tzdata/America/Detroit @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Detroit) { - {-9223372036854775808 -19931 0 LMT} - {-2051202469 -21600 0 CST} - {-1724083200 -18000 0 EST} - {-883594800 -18000 0 EST} - {-880218000 -14400 1 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-757364400 -18000 0 EST} - {-684349200 -14400 1 EDT} - {-671047200 -18000 0 EST} - {-80499600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {94712400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -14400 1 EDT} - {152085600 -18000 0 EST} - {157784400 -18000 0 EST} - {167814000 -14400 0 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Detroit) { + {-9223372036854775808 -19931 0 LMT} + {-2051202469 -21600 0 CST} + {-1724083200 -18000 0 EST} + {-883594800 -18000 0 EST} + {-880218000 -14400 1 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-757364400 -18000 0 EST} + {-684349200 -14400 1 EDT} + {-671047200 -18000 0 EST} + {-80499600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {94712400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -14400 1 EDT} + {152085600 -18000 0 EST} + {157784400 -18000 0 EST} + {167814000 -14400 0 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Dominica b/library/tzdata/America/Dominica index 3503a65..168a6f1 100644 --- a/library/tzdata/America/Dominica +++ b/library/tzdata/America/Dominica @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Dominica) { - {-9223372036854775808 -14736 0 LMT} - {-1846266804 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Dominica) { + {-9223372036854775808 -14736 0 LMT} + {-1846266804 -14400 0 AST} +} diff --git a/library/tzdata/America/Edmonton b/library/tzdata/America/Edmonton index c4252f8..a634b28 100644 --- a/library/tzdata/America/Edmonton +++ b/library/tzdata/America/Edmonton @@ -1,284 +1,284 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Edmonton) { - {-9223372036854775808 -27232 0 LMT} - {-1998663968 -25200 0 MST} - {-1632063600 -21600 1 MDT} - {-1614787200 -25200 0 MST} - {-1600614000 -21600 1 MDT} - {-1596816000 -25200 0 MST} - {-1567954800 -21600 1 MDT} - {-1551628800 -25200 0 MST} - {-1536505200 -21600 1 MDT} - {-1523203200 -25200 0 MST} - {-1504450800 -21600 1 MDT} - {-1491753600 -25200 0 MST} - {-1473001200 -21600 1 MDT} - {-1459699200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-715791600 -21600 1 MDT} - {-702489600 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {136371600 -21600 1 MDT} - {152092800 -25200 0 MST} - {167821200 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {536482800 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Edmonton) { + {-9223372036854775808 -27232 0 LMT} + {-1998663968 -25200 0 MST} + {-1632063600 -21600 1 MDT} + {-1614787200 -25200 0 MST} + {-1600614000 -21600 1 MDT} + {-1596816000 -25200 0 MST} + {-1567954800 -21600 1 MDT} + {-1551628800 -25200 0 MST} + {-1536505200 -21600 1 MDT} + {-1523203200 -25200 0 MST} + {-1504450800 -21600 1 MDT} + {-1491753600 -25200 0 MST} + {-1473001200 -21600 1 MDT} + {-1459699200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-715791600 -21600 1 MDT} + {-702489600 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {136371600 -21600 1 MDT} + {152092800 -25200 0 MST} + {167821200 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {536482800 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Eirunepe b/library/tzdata/America/Eirunepe index 86dcd8f..436724d 100644 --- a/library/tzdata/America/Eirunepe +++ b/library/tzdata/America/Eirunepe @@ -1,40 +1,40 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Eirunepe) { - {-9223372036854775808 -16768 0 LMT} - {-1767208832 -18000 0 ACT} - {-1206950400 -14400 1 ACST} - {-1191355200 -18000 0 ACT} - {-1175367600 -14400 1 ACST} - {-1159819200 -18000 0 ACT} - {-633812400 -14400 1 ACST} - {-622062000 -18000 0 ACT} - {-602276400 -14400 1 ACST} - {-591825600 -18000 0 ACT} - {-570740400 -14400 1 ACST} - {-560203200 -18000 0 ACT} - {-539118000 -14400 1 ACST} - {-531345600 -18000 0 ACT} - {-191358000 -14400 1 ACST} - {-184190400 -18000 0 ACT} - {-155156400 -14400 1 ACST} - {-150062400 -18000 0 ACT} - {-128890800 -14400 1 ACST} - {-121118400 -18000 0 ACT} - {-99946800 -14400 1 ACST} - {-89582400 -18000 0 ACT} - {-68410800 -14400 1 ACST} - {-57960000 -18000 0 ACT} - {499755600 -14400 1 ACST} - {511243200 -18000 0 ACT} - {530600400 -14400 1 ACST} - {540273600 -18000 0 ACT} - {562136400 -14400 1 ACST} - {571204800 -18000 0 ACT} - {590040000 -18000 0 ACT} - {749192400 -18000 0 ACT} - {750834000 -14400 1 ACST} - {761716800 -18000 0 ACT} - {780206400 -18000 0 ACT} - {1214283600 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Eirunepe) { + {-9223372036854775808 -16768 0 LMT} + {-1767208832 -18000 0 ACT} + {-1206950400 -14400 1 ACST} + {-1191355200 -18000 0 ACT} + {-1175367600 -14400 1 ACST} + {-1159819200 -18000 0 ACT} + {-633812400 -14400 1 ACST} + {-622062000 -18000 0 ACT} + {-602276400 -14400 1 ACST} + {-591825600 -18000 0 ACT} + {-570740400 -14400 1 ACST} + {-560203200 -18000 0 ACT} + {-539118000 -14400 1 ACST} + {-531345600 -18000 0 ACT} + {-191358000 -14400 1 ACST} + {-184190400 -18000 0 ACT} + {-155156400 -14400 1 ACST} + {-150062400 -18000 0 ACT} + {-128890800 -14400 1 ACST} + {-121118400 -18000 0 ACT} + {-99946800 -14400 1 ACST} + {-89582400 -18000 0 ACT} + {-68410800 -14400 1 ACST} + {-57960000 -18000 0 ACT} + {499755600 -14400 1 ACST} + {511243200 -18000 0 ACT} + {530600400 -14400 1 ACST} + {540273600 -18000 0 ACT} + {562136400 -14400 1 ACST} + {571204800 -18000 0 ACT} + {590040000 -18000 0 ACT} + {749192400 -18000 0 ACT} + {750834000 -14400 1 ACST} + {761716800 -18000 0 ACT} + {780206400 -18000 0 ACT} + {1214283600 -14400 0 AMT} +} diff --git a/library/tzdata/America/El_Salvador b/library/tzdata/America/El_Salvador index 75d8129..34bde42 100644 --- a/library/tzdata/America/El_Salvador +++ b/library/tzdata/America/El_Salvador @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/El_Salvador) { - {-9223372036854775808 -21408 0 LMT} - {-1546279392 -21600 0 CST} - {547020000 -18000 1 CDT} - {559717200 -21600 0 CST} - {578469600 -18000 1 CDT} - {591166800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/El_Salvador) { + {-9223372036854775808 -21408 0 LMT} + {-1546279392 -21600 0 CST} + {547020000 -18000 1 CDT} + {559717200 -21600 0 CST} + {578469600 -18000 1 CDT} + {591166800 -21600 0 CST} +} diff --git a/library/tzdata/America/Ensenada b/library/tzdata/America/Ensenada index f600305..8f6cff5 100644 --- a/library/tzdata/America/Ensenada +++ b/library/tzdata/America/Ensenada @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Tijuana)]} { - LoadTimeZoneFile America/Tijuana -} -set TZData(:America/Ensenada) $TZData(:America/Tijuana) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Tijuana)]} { + LoadTimeZoneFile America/Tijuana +} +set TZData(:America/Ensenada) $TZData(:America/Tijuana) diff --git a/library/tzdata/America/Fort_Wayne b/library/tzdata/America/Fort_Wayne index 9514d57..4766b43 100644 --- a/library/tzdata/America/Fort_Wayne +++ b/library/tzdata/America/Fort_Wayne @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Indianapolis)]} { - LoadTimeZoneFile America/Indiana/Indianapolis -} -set TZData(:America/Fort_Wayne) $TZData(:America/Indiana/Indianapolis) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Indianapolis)]} { + LoadTimeZoneFile America/Indiana/Indianapolis +} +set TZData(:America/Fort_Wayne) $TZData(:America/Indiana/Indianapolis) diff --git a/library/tzdata/America/Fortaleza b/library/tzdata/America/Fortaleza index 581faa5..1fa2988 100644 --- a/library/tzdata/America/Fortaleza +++ b/library/tzdata/America/Fortaleza @@ -1,48 +1,48 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Fortaleza) { - {-9223372036854775808 -9240 0 LMT} - {-1767216360 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {653536800 -10800 0 BRT} - {938660400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {972180000 -10800 0 BRT} - {1000350000 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1033437600 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Fortaleza) { + {-9223372036854775808 -9240 0 LMT} + {-1767216360 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {653536800 -10800 0 BRT} + {938660400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {972180000 -10800 0 BRT} + {1000350000 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1033437600 -10800 0 BRT} +} diff --git a/library/tzdata/America/Glace_Bay b/library/tzdata/America/Glace_Bay index 84b4822..d5064fb 100644 --- a/library/tzdata/America/Glace_Bay +++ b/library/tzdata/America/Glace_Bay @@ -1,273 +1,273 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Glace_Bay) { - {-9223372036854775808 -14388 0 LMT} - {-2131646412 -14400 0 AST} - {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} - {-880221600 -10800 1 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-536443200 -14400 0 AST} - {-526500000 -10800 1 ADT} - {-513198000 -14400 0 AST} - {-504907200 -14400 0 AST} - {63086400 -14400 0 AST} - {73461600 -10800 1 ADT} - {89182800 -14400 0 AST} - {104911200 -10800 1 ADT} - {120632400 -14400 0 AST} - {126244800 -14400 0 AST} - {136360800 -10800 1 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -10800 1 ADT} - {814942800 -14400 0 AST} - {828856800 -10800 1 ADT} - {846392400 -14400 0 AST} - {860306400 -10800 1 ADT} - {877842000 -14400 0 AST} - {891756000 -10800 1 ADT} - {909291600 -14400 0 AST} - {923205600 -10800 1 ADT} - {941346000 -14400 0 AST} - {954655200 -10800 1 ADT} - {972795600 -14400 0 AST} - {986104800 -10800 1 ADT} - {1004245200 -14400 0 AST} - {1018159200 -10800 1 ADT} - {1035694800 -14400 0 AST} - {1049608800 -10800 1 ADT} - {1067144400 -14400 0 AST} - {1081058400 -10800 1 ADT} - {1099198800 -14400 0 AST} - {1112508000 -10800 1 ADT} - {1130648400 -14400 0 AST} - {1143957600 -10800 1 ADT} - {1162098000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Glace_Bay) { + {-9223372036854775808 -14388 0 LMT} + {-2131646412 -14400 0 AST} + {-1632074400 -10800 1 ADT} + {-1614798000 -14400 0 AST} + {-880221600 -10800 1 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-536443200 -14400 0 AST} + {-526500000 -10800 1 ADT} + {-513198000 -14400 0 AST} + {-504907200 -14400 0 AST} + {63086400 -14400 0 AST} + {73461600 -10800 1 ADT} + {89182800 -14400 0 AST} + {104911200 -10800 1 ADT} + {120632400 -14400 0 AST} + {126244800 -14400 0 AST} + {136360800 -10800 1 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -10800 1 ADT} + {814942800 -14400 0 AST} + {828856800 -10800 1 ADT} + {846392400 -14400 0 AST} + {860306400 -10800 1 ADT} + {877842000 -14400 0 AST} + {891756000 -10800 1 ADT} + {909291600 -14400 0 AST} + {923205600 -10800 1 ADT} + {941346000 -14400 0 AST} + {954655200 -10800 1 ADT} + {972795600 -14400 0 AST} + {986104800 -10800 1 ADT} + {1004245200 -14400 0 AST} + {1018159200 -10800 1 ADT} + {1035694800 -14400 0 AST} + {1049608800 -10800 1 ADT} + {1067144400 -14400 0 AST} + {1081058400 -10800 1 ADT} + {1099198800 -14400 0 AST} + {1112508000 -10800 1 ADT} + {1130648400 -14400 0 AST} + {1143957600 -10800 1 ADT} + {1162098000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/America/Godthab b/library/tzdata/America/Godthab index 3c003cc..7e21e64 100644 --- a/library/tzdata/America/Godthab +++ b/library/tzdata/America/Godthab @@ -1,246 +1,246 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Godthab) { - {-9223372036854775808 -12416 0 LMT} - {-1686083584 -10800 0 WGT} - {323845200 -7200 0 WGST} - {338950800 -10800 0 WGT} - {354675600 -7200 1 WGST} - {370400400 -10800 0 WGT} - {386125200 -7200 1 WGST} - {401850000 -10800 0 WGT} - {417574800 -7200 1 WGST} - {433299600 -10800 0 WGT} - {449024400 -7200 1 WGST} - {465354000 -10800 0 WGT} - {481078800 -7200 1 WGST} - {496803600 -10800 0 WGT} - {512528400 -7200 1 WGST} - {528253200 -10800 0 WGT} - {543978000 -7200 1 WGST} - {559702800 -10800 0 WGT} - {575427600 -7200 1 WGST} - {591152400 -10800 0 WGT} - {606877200 -7200 1 WGST} - {622602000 -10800 0 WGT} - {638326800 -7200 1 WGST} - {654656400 -10800 0 WGT} - {670381200 -7200 1 WGST} - {686106000 -10800 0 WGT} - {701830800 -7200 1 WGST} - {717555600 -10800 0 WGT} - {733280400 -7200 1 WGST} - {749005200 -10800 0 WGT} - {764730000 -7200 1 WGST} - {780454800 -10800 0 WGT} - {796179600 -7200 1 WGST} - {811904400 -10800 0 WGT} - {828234000 -7200 1 WGST} - {846378000 -10800 0 WGT} - {859683600 -7200 1 WGST} - {877827600 -10800 0 WGT} - {891133200 -7200 1 WGST} - {909277200 -10800 0 WGT} - {922582800 -7200 1 WGST} - {941331600 -10800 0 WGT} - {954032400 -7200 1 WGST} - {972781200 -10800 0 WGT} - {985482000 -7200 1 WGST} - {1004230800 -10800 0 WGT} - {1017536400 -7200 1 WGST} - {1035680400 -10800 0 WGT} - {1048986000 -7200 1 WGST} - {1067130000 -10800 0 WGT} - {1080435600 -7200 1 WGST} - {1099184400 -10800 0 WGT} - {1111885200 -7200 1 WGST} - {1130634000 -10800 0 WGT} - {1143334800 -7200 1 WGST} - {1162083600 -10800 0 WGT} - {1174784400 -7200 1 WGST} - {1193533200 -10800 0 WGT} - {1206838800 -7200 1 WGST} - {1224982800 -10800 0 WGT} - {1238288400 -7200 1 WGST} - {1256432400 -10800 0 WGT} - {1269738000 -7200 1 WGST} - {1288486800 -10800 0 WGT} - {1301187600 -7200 1 WGST} - {1319936400 -10800 0 WGT} - {1332637200 -7200 1 WGST} - {1351386000 -10800 0 WGT} - {1364691600 -7200 1 WGST} - {1382835600 -10800 0 WGT} - {1396141200 -7200 1 WGST} - {1414285200 -10800 0 WGT} - {1427590800 -7200 1 WGST} - {1445734800 -10800 0 WGT} - {1459040400 -7200 1 WGST} - {1477789200 -10800 0 WGT} - {1490490000 -7200 1 WGST} - {1509238800 -10800 0 WGT} - {1521939600 -7200 1 WGST} - {1540688400 -10800 0 WGT} - {1553994000 -7200 1 WGST} - {1572138000 -10800 0 WGT} - {1585443600 -7200 1 WGST} - {1603587600 -10800 0 WGT} - {1616893200 -7200 1 WGST} - {1635642000 -10800 0 WGT} - {1648342800 -7200 1 WGST} - {1667091600 -10800 0 WGT} - {1679792400 -7200 1 WGST} - {1698541200 -10800 0 WGT} - {1711846800 -7200 1 WGST} - {1729990800 -10800 0 WGT} - {1743296400 -7200 1 WGST} - {1761440400 -10800 0 WGT} - {1774746000 -7200 1 WGST} - {1792890000 -10800 0 WGT} - {1806195600 -7200 1 WGST} - {1824944400 -10800 0 WGT} - {1837645200 -7200 1 WGST} - {1856394000 -10800 0 WGT} - {1869094800 -7200 1 WGST} - {1887843600 -10800 0 WGT} - {1901149200 -7200 1 WGST} - {1919293200 -10800 0 WGT} - {1932598800 -7200 1 WGST} - {1950742800 -10800 0 WGT} - {1964048400 -7200 1 WGST} - {1982797200 -10800 0 WGT} - {1995498000 -7200 1 WGST} - {2014246800 -10800 0 WGT} - {2026947600 -7200 1 WGST} - {2045696400 -10800 0 WGT} - {2058397200 -7200 1 WGST} - {2077146000 -10800 0 WGT} - {2090451600 -7200 1 WGST} - {2108595600 -10800 0 WGT} - {2121901200 -7200 1 WGST} - {2140045200 -10800 0 WGT} - {2153350800 -7200 1 WGST} - {2172099600 -10800 0 WGT} - {2184800400 -7200 1 WGST} - {2203549200 -10800 0 WGT} - {2216250000 -7200 1 WGST} - {2234998800 -10800 0 WGT} - {2248304400 -7200 1 WGST} - {2266448400 -10800 0 WGT} - {2279754000 -7200 1 WGST} - {2297898000 -10800 0 WGT} - {2311203600 -7200 1 WGST} - {2329347600 -10800 0 WGT} - {2342653200 -7200 1 WGST} - {2361402000 -10800 0 WGT} - {2374102800 -7200 1 WGST} - {2392851600 -10800 0 WGT} - {2405552400 -7200 1 WGST} - {2424301200 -10800 0 WGT} - {2437606800 -7200 1 WGST} - {2455750800 -10800 0 WGT} - {2469056400 -7200 1 WGST} - {2487200400 -10800 0 WGT} - {2500506000 -7200 1 WGST} - {2519254800 -10800 0 WGT} - {2531955600 -7200 1 WGST} - {2550704400 -10800 0 WGT} - {2563405200 -7200 1 WGST} - {2582154000 -10800 0 WGT} - {2595459600 -7200 1 WGST} - {2613603600 -10800 0 WGT} - {2626909200 -7200 1 WGST} - {2645053200 -10800 0 WGT} - {2658358800 -7200 1 WGST} - {2676502800 -10800 0 WGT} - {2689808400 -7200 1 WGST} - {2708557200 -10800 0 WGT} - {2721258000 -7200 1 WGST} - {2740006800 -10800 0 WGT} - {2752707600 -7200 1 WGST} - {2771456400 -10800 0 WGT} - {2784762000 -7200 1 WGST} - {2802906000 -10800 0 WGT} - {2816211600 -7200 1 WGST} - {2834355600 -10800 0 WGT} - {2847661200 -7200 1 WGST} - {2866410000 -10800 0 WGT} - {2879110800 -7200 1 WGST} - {2897859600 -10800 0 WGT} - {2910560400 -7200 1 WGST} - {2929309200 -10800 0 WGT} - {2942010000 -7200 1 WGST} - {2960758800 -10800 0 WGT} - {2974064400 -7200 1 WGST} - {2992208400 -10800 0 WGT} - {3005514000 -7200 1 WGST} - {3023658000 -10800 0 WGT} - {3036963600 -7200 1 WGST} - {3055712400 -10800 0 WGT} - {3068413200 -7200 1 WGST} - {3087162000 -10800 0 WGT} - {3099862800 -7200 1 WGST} - {3118611600 -10800 0 WGT} - {3131917200 -7200 1 WGST} - {3150061200 -10800 0 WGT} - {3163366800 -7200 1 WGST} - {3181510800 -10800 0 WGT} - {3194816400 -7200 1 WGST} - {3212960400 -10800 0 WGT} - {3226266000 -7200 1 WGST} - {3245014800 -10800 0 WGT} - {3257715600 -7200 1 WGST} - {3276464400 -10800 0 WGT} - {3289165200 -7200 1 WGST} - {3307914000 -10800 0 WGT} - {3321219600 -7200 1 WGST} - {3339363600 -10800 0 WGT} - {3352669200 -7200 1 WGST} - {3370813200 -10800 0 WGT} - {3384118800 -7200 1 WGST} - {3402867600 -10800 0 WGT} - {3415568400 -7200 1 WGST} - {3434317200 -10800 0 WGT} - {3447018000 -7200 1 WGST} - {3465766800 -10800 0 WGT} - {3479072400 -7200 1 WGST} - {3497216400 -10800 0 WGT} - {3510522000 -7200 1 WGST} - {3528666000 -10800 0 WGT} - {3541971600 -7200 1 WGST} - {3560115600 -10800 0 WGT} - {3573421200 -7200 1 WGST} - {3592170000 -10800 0 WGT} - {3604870800 -7200 1 WGST} - {3623619600 -10800 0 WGT} - {3636320400 -7200 1 WGST} - {3655069200 -10800 0 WGT} - {3668374800 -7200 1 WGST} - {3686518800 -10800 0 WGT} - {3699824400 -7200 1 WGST} - {3717968400 -10800 0 WGT} - {3731274000 -7200 1 WGST} - {3750022800 -10800 0 WGT} - {3762723600 -7200 1 WGST} - {3781472400 -10800 0 WGT} - {3794173200 -7200 1 WGST} - {3812922000 -10800 0 WGT} - {3825622800 -7200 1 WGST} - {3844371600 -10800 0 WGT} - {3857677200 -7200 1 WGST} - {3875821200 -10800 0 WGT} - {3889126800 -7200 1 WGST} - {3907270800 -10800 0 WGT} - {3920576400 -7200 1 WGST} - {3939325200 -10800 0 WGT} - {3952026000 -7200 1 WGST} - {3970774800 -10800 0 WGT} - {3983475600 -7200 1 WGST} - {4002224400 -10800 0 WGT} - {4015530000 -7200 1 WGST} - {4033674000 -10800 0 WGT} - {4046979600 -7200 1 WGST} - {4065123600 -10800 0 WGT} - {4078429200 -7200 1 WGST} - {4096573200 -10800 0 WGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Godthab) { + {-9223372036854775808 -12416 0 LMT} + {-1686083584 -10800 0 WGT} + {323845200 -7200 0 WGST} + {338950800 -10800 0 WGT} + {354675600 -7200 1 WGST} + {370400400 -10800 0 WGT} + {386125200 -7200 1 WGST} + {401850000 -10800 0 WGT} + {417574800 -7200 1 WGST} + {433299600 -10800 0 WGT} + {449024400 -7200 1 WGST} + {465354000 -10800 0 WGT} + {481078800 -7200 1 WGST} + {496803600 -10800 0 WGT} + {512528400 -7200 1 WGST} + {528253200 -10800 0 WGT} + {543978000 -7200 1 WGST} + {559702800 -10800 0 WGT} + {575427600 -7200 1 WGST} + {591152400 -10800 0 WGT} + {606877200 -7200 1 WGST} + {622602000 -10800 0 WGT} + {638326800 -7200 1 WGST} + {654656400 -10800 0 WGT} + {670381200 -7200 1 WGST} + {686106000 -10800 0 WGT} + {701830800 -7200 1 WGST} + {717555600 -10800 0 WGT} + {733280400 -7200 1 WGST} + {749005200 -10800 0 WGT} + {764730000 -7200 1 WGST} + {780454800 -10800 0 WGT} + {796179600 -7200 1 WGST} + {811904400 -10800 0 WGT} + {828234000 -7200 1 WGST} + {846378000 -10800 0 WGT} + {859683600 -7200 1 WGST} + {877827600 -10800 0 WGT} + {891133200 -7200 1 WGST} + {909277200 -10800 0 WGT} + {922582800 -7200 1 WGST} + {941331600 -10800 0 WGT} + {954032400 -7200 1 WGST} + {972781200 -10800 0 WGT} + {985482000 -7200 1 WGST} + {1004230800 -10800 0 WGT} + {1017536400 -7200 1 WGST} + {1035680400 -10800 0 WGT} + {1048986000 -7200 1 WGST} + {1067130000 -10800 0 WGT} + {1080435600 -7200 1 WGST} + {1099184400 -10800 0 WGT} + {1111885200 -7200 1 WGST} + {1130634000 -10800 0 WGT} + {1143334800 -7200 1 WGST} + {1162083600 -10800 0 WGT} + {1174784400 -7200 1 WGST} + {1193533200 -10800 0 WGT} + {1206838800 -7200 1 WGST} + {1224982800 -10800 0 WGT} + {1238288400 -7200 1 WGST} + {1256432400 -10800 0 WGT} + {1269738000 -7200 1 WGST} + {1288486800 -10800 0 WGT} + {1301187600 -7200 1 WGST} + {1319936400 -10800 0 WGT} + {1332637200 -7200 1 WGST} + {1351386000 -10800 0 WGT} + {1364691600 -7200 1 WGST} + {1382835600 -10800 0 WGT} + {1396141200 -7200 1 WGST} + {1414285200 -10800 0 WGT} + {1427590800 -7200 1 WGST} + {1445734800 -10800 0 WGT} + {1459040400 -7200 1 WGST} + {1477789200 -10800 0 WGT} + {1490490000 -7200 1 WGST} + {1509238800 -10800 0 WGT} + {1521939600 -7200 1 WGST} + {1540688400 -10800 0 WGT} + {1553994000 -7200 1 WGST} + {1572138000 -10800 0 WGT} + {1585443600 -7200 1 WGST} + {1603587600 -10800 0 WGT} + {1616893200 -7200 1 WGST} + {1635642000 -10800 0 WGT} + {1648342800 -7200 1 WGST} + {1667091600 -10800 0 WGT} + {1679792400 -7200 1 WGST} + {1698541200 -10800 0 WGT} + {1711846800 -7200 1 WGST} + {1729990800 -10800 0 WGT} + {1743296400 -7200 1 WGST} + {1761440400 -10800 0 WGT} + {1774746000 -7200 1 WGST} + {1792890000 -10800 0 WGT} + {1806195600 -7200 1 WGST} + {1824944400 -10800 0 WGT} + {1837645200 -7200 1 WGST} + {1856394000 -10800 0 WGT} + {1869094800 -7200 1 WGST} + {1887843600 -10800 0 WGT} + {1901149200 -7200 1 WGST} + {1919293200 -10800 0 WGT} + {1932598800 -7200 1 WGST} + {1950742800 -10800 0 WGT} + {1964048400 -7200 1 WGST} + {1982797200 -10800 0 WGT} + {1995498000 -7200 1 WGST} + {2014246800 -10800 0 WGT} + {2026947600 -7200 1 WGST} + {2045696400 -10800 0 WGT} + {2058397200 -7200 1 WGST} + {2077146000 -10800 0 WGT} + {2090451600 -7200 1 WGST} + {2108595600 -10800 0 WGT} + {2121901200 -7200 1 WGST} + {2140045200 -10800 0 WGT} + {2153350800 -7200 1 WGST} + {2172099600 -10800 0 WGT} + {2184800400 -7200 1 WGST} + {2203549200 -10800 0 WGT} + {2216250000 -7200 1 WGST} + {2234998800 -10800 0 WGT} + {2248304400 -7200 1 WGST} + {2266448400 -10800 0 WGT} + {2279754000 -7200 1 WGST} + {2297898000 -10800 0 WGT} + {2311203600 -7200 1 WGST} + {2329347600 -10800 0 WGT} + {2342653200 -7200 1 WGST} + {2361402000 -10800 0 WGT} + {2374102800 -7200 1 WGST} + {2392851600 -10800 0 WGT} + {2405552400 -7200 1 WGST} + {2424301200 -10800 0 WGT} + {2437606800 -7200 1 WGST} + {2455750800 -10800 0 WGT} + {2469056400 -7200 1 WGST} + {2487200400 -10800 0 WGT} + {2500506000 -7200 1 WGST} + {2519254800 -10800 0 WGT} + {2531955600 -7200 1 WGST} + {2550704400 -10800 0 WGT} + {2563405200 -7200 1 WGST} + {2582154000 -10800 0 WGT} + {2595459600 -7200 1 WGST} + {2613603600 -10800 0 WGT} + {2626909200 -7200 1 WGST} + {2645053200 -10800 0 WGT} + {2658358800 -7200 1 WGST} + {2676502800 -10800 0 WGT} + {2689808400 -7200 1 WGST} + {2708557200 -10800 0 WGT} + {2721258000 -7200 1 WGST} + {2740006800 -10800 0 WGT} + {2752707600 -7200 1 WGST} + {2771456400 -10800 0 WGT} + {2784762000 -7200 1 WGST} + {2802906000 -10800 0 WGT} + {2816211600 -7200 1 WGST} + {2834355600 -10800 0 WGT} + {2847661200 -7200 1 WGST} + {2866410000 -10800 0 WGT} + {2879110800 -7200 1 WGST} + {2897859600 -10800 0 WGT} + {2910560400 -7200 1 WGST} + {2929309200 -10800 0 WGT} + {2942010000 -7200 1 WGST} + {2960758800 -10800 0 WGT} + {2974064400 -7200 1 WGST} + {2992208400 -10800 0 WGT} + {3005514000 -7200 1 WGST} + {3023658000 -10800 0 WGT} + {3036963600 -7200 1 WGST} + {3055712400 -10800 0 WGT} + {3068413200 -7200 1 WGST} + {3087162000 -10800 0 WGT} + {3099862800 -7200 1 WGST} + {3118611600 -10800 0 WGT} + {3131917200 -7200 1 WGST} + {3150061200 -10800 0 WGT} + {3163366800 -7200 1 WGST} + {3181510800 -10800 0 WGT} + {3194816400 -7200 1 WGST} + {3212960400 -10800 0 WGT} + {3226266000 -7200 1 WGST} + {3245014800 -10800 0 WGT} + {3257715600 -7200 1 WGST} + {3276464400 -10800 0 WGT} + {3289165200 -7200 1 WGST} + {3307914000 -10800 0 WGT} + {3321219600 -7200 1 WGST} + {3339363600 -10800 0 WGT} + {3352669200 -7200 1 WGST} + {3370813200 -10800 0 WGT} + {3384118800 -7200 1 WGST} + {3402867600 -10800 0 WGT} + {3415568400 -7200 1 WGST} + {3434317200 -10800 0 WGT} + {3447018000 -7200 1 WGST} + {3465766800 -10800 0 WGT} + {3479072400 -7200 1 WGST} + {3497216400 -10800 0 WGT} + {3510522000 -7200 1 WGST} + {3528666000 -10800 0 WGT} + {3541971600 -7200 1 WGST} + {3560115600 -10800 0 WGT} + {3573421200 -7200 1 WGST} + {3592170000 -10800 0 WGT} + {3604870800 -7200 1 WGST} + {3623619600 -10800 0 WGT} + {3636320400 -7200 1 WGST} + {3655069200 -10800 0 WGT} + {3668374800 -7200 1 WGST} + {3686518800 -10800 0 WGT} + {3699824400 -7200 1 WGST} + {3717968400 -10800 0 WGT} + {3731274000 -7200 1 WGST} + {3750022800 -10800 0 WGT} + {3762723600 -7200 1 WGST} + {3781472400 -10800 0 WGT} + {3794173200 -7200 1 WGST} + {3812922000 -10800 0 WGT} + {3825622800 -7200 1 WGST} + {3844371600 -10800 0 WGT} + {3857677200 -7200 1 WGST} + {3875821200 -10800 0 WGT} + {3889126800 -7200 1 WGST} + {3907270800 -10800 0 WGT} + {3920576400 -7200 1 WGST} + {3939325200 -10800 0 WGT} + {3952026000 -7200 1 WGST} + {3970774800 -10800 0 WGT} + {3983475600 -7200 1 WGST} + {4002224400 -10800 0 WGT} + {4015530000 -7200 1 WGST} + {4033674000 -10800 0 WGT} + {4046979600 -7200 1 WGST} + {4065123600 -10800 0 WGT} + {4078429200 -7200 1 WGST} + {4096573200 -10800 0 WGT} +} diff --git a/library/tzdata/America/Goose_Bay b/library/tzdata/America/Goose_Bay index f93b612..ae2c8b4 100644 --- a/library/tzdata/America/Goose_Bay +++ b/library/tzdata/America/Goose_Bay @@ -1,337 +1,337 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Goose_Bay) { - {-9223372036854775808 -14500 0 LMT} - {-2713895900 -12652 0 NST} - {-1640982548 -12652 0 NST} - {-1632076148 -9052 1 NDT} - {-1614799748 -12652 0 NST} - {-1609446548 -12652 0 NST} - {-1096921748 -12600 0 NST} - {-1072989000 -12600 0 NST} - {-1061670600 -9000 1 NDT} - {-1048973400 -12600 0 NST} - {-1030221000 -9000 1 NDT} - {-1017523800 -12600 0 NST} - {-998771400 -9000 1 NDT} - {-986074200 -12600 0 NST} - {-966717000 -9000 1 NDT} - {-954624600 -12600 0 NST} - {-935267400 -9000 1 NDT} - {-922570200 -12600 0 NST} - {-903817800 -9000 1 NDT} - {-891120600 -12600 0 NST} - {-872368200 -9000 0 NWT} - {-769395600 -9000 1 NPT} - {-765401400 -12600 0 NST} - {-757369800 -12600 0 NST} - {-746044200 -9000 1 NDT} - {-733347000 -12600 0 NST} - {-714594600 -9000 1 NDT} - {-701897400 -12600 0 NST} - {-683145000 -9000 1 NDT} - {-670447800 -12600 0 NST} - {-651695400 -9000 1 NDT} - {-638998200 -12600 0 NST} - {-619641000 -9000 1 NDT} - {-606943800 -12600 0 NST} - {-589401000 -9000 1 NDT} - {-576099000 -12600 0 NST} - {-557951400 -9000 1 NDT} - {-544649400 -12600 0 NST} - {-526501800 -9000 1 NDT} - {-513199800 -12600 0 NST} - {-495052200 -9000 1 NDT} - {-481750200 -12600 0 NST} - {-463602600 -9000 1 NDT} - {-450300600 -12600 0 NST} - {-431548200 -9000 1 NDT} - {-418246200 -12600 0 NST} - {-400098600 -9000 1 NDT} - {-386796600 -12600 0 NST} - {-368649000 -9000 1 NDT} - {-355347000 -12600 0 NST} - {-337199400 -9000 1 NDT} - {-323897400 -12600 0 NST} - {-305749800 -9000 1 NDT} - {-289423800 -12600 0 NST} - {-273695400 -9000 1 NDT} - {-257974200 -12600 0 NST} - {-242245800 -9000 1 NDT} - {-226524600 -12600 0 NST} - {-210796200 -9000 1 NDT} - {-195075000 -12600 0 NST} - {-179346600 -9000 1 NDT} - {-163625400 -12600 0 NST} - {-147897000 -9000 1 NDT} - {-131571000 -12600 0 NST} - {-119903400 -14400 0 AST} - {-116445600 -10800 1 ADT} - {-100119600 -14400 0 AST} - {-84391200 -10800 1 ADT} - {-68670000 -14400 0 AST} - {-52941600 -10800 1 ADT} - {-37220400 -14400 0 AST} - {-21492000 -10800 1 ADT} - {-5770800 -14400 0 AST} - {9957600 -10800 1 ADT} - {25678800 -14400 0 AST} - {41407200 -10800 1 ADT} - {57733200 -14400 0 AST} - {73461600 -10800 1 ADT} - {89182800 -14400 0 AST} - {104911200 -10800 1 ADT} - {120632400 -14400 0 AST} - {136360800 -10800 1 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544593660 -10800 1 ADT} - {562129260 -14400 0 AST} - {576043260 -7200 1 ADDT} - {594180060 -14400 0 AST} - {607492860 -10800 1 ADT} - {625633260 -14400 0 AST} - {638942460 -10800 1 ADT} - {657082860 -14400 0 AST} - {670996860 -10800 1 ADT} - {688532460 -14400 0 AST} - {702446460 -10800 1 ADT} - {719982060 -14400 0 AST} - {733896060 -10800 1 ADT} - {752036460 -14400 0 AST} - {765345660 -10800 1 ADT} - {783486060 -14400 0 AST} - {796795260 -10800 1 ADT} - {814935660 -14400 0 AST} - {828849660 -10800 1 ADT} - {846385260 -14400 0 AST} - {860299260 -10800 1 ADT} - {877834860 -14400 0 AST} - {891748860 -10800 1 ADT} - {909284460 -14400 0 AST} - {923198460 -10800 1 ADT} - {941338860 -14400 0 AST} - {954648060 -10800 1 ADT} - {972788460 -14400 0 AST} - {986097660 -10800 1 ADT} - {1004238060 -14400 0 AST} - {1018152060 -10800 1 ADT} - {1035687660 -14400 0 AST} - {1049601660 -10800 1 ADT} - {1067137260 -14400 0 AST} - {1081051260 -10800 1 ADT} - {1099191660 -14400 0 AST} - {1112500860 -10800 1 ADT} - {1130641260 -14400 0 AST} - {1143950460 -10800 1 ADT} - {1162090860 -14400 0 AST} - {1173585660 -10800 1 ADT} - {1194145260 -14400 0 AST} - {1205035260 -10800 1 ADT} - {1225594860 -14400 0 AST} - {1236484860 -10800 1 ADT} - {1257044460 -14400 0 AST} - {1268539260 -10800 1 ADT} - {1289098860 -14400 0 AST} - {1299988860 -10800 1 ADT} - {1320548460 -14400 0 AST} - {1331438460 -10800 1 ADT} - {1351998060 -14400 0 AST} - {1362888060 -10800 1 ADT} - {1383447660 -14400 0 AST} - {1394337660 -10800 1 ADT} - {1414897260 -14400 0 AST} - {1425787260 -10800 1 ADT} - {1446346860 -14400 0 AST} - {1457841660 -10800 1 ADT} - {1478401260 -14400 0 AST} - {1489291260 -10800 1 ADT} - {1509850860 -14400 0 AST} - {1520740860 -10800 1 ADT} - {1541300460 -14400 0 AST} - {1552190460 -10800 1 ADT} - {1572750060 -14400 0 AST} - {1583640060 -10800 1 ADT} - {1604199660 -14400 0 AST} - {1615694460 -10800 1 ADT} - {1636254060 -14400 0 AST} - {1647144060 -10800 1 ADT} - {1667703660 -14400 0 AST} - {1678593660 -10800 1 ADT} - {1699153260 -14400 0 AST} - {1710043260 -10800 1 ADT} - {1730602860 -14400 0 AST} - {1741492860 -10800 1 ADT} - {1762052460 -14400 0 AST} - {1772942460 -10800 1 ADT} - {1793502060 -14400 0 AST} - {1804996860 -10800 1 ADT} - {1825556460 -14400 0 AST} - {1836446460 -10800 1 ADT} - {1857006060 -14400 0 AST} - {1867896060 -10800 1 ADT} - {1888455660 -14400 0 AST} - {1899345660 -10800 1 ADT} - {1919905260 -14400 0 AST} - {1930795260 -10800 1 ADT} - {1951354860 -14400 0 AST} - {1962849660 -10800 1 ADT} - {1983409260 -14400 0 AST} - {1994299260 -10800 1 ADT} - {2014858860 -14400 0 AST} - {2025748860 -10800 1 ADT} - {2046308460 -14400 0 AST} - {2057198460 -10800 1 ADT} - {2077758060 -14400 0 AST} - {2088648060 -10800 1 ADT} - {2109207660 -14400 0 AST} - {2120097660 -10800 1 ADT} - {2140657260 -14400 0 AST} - {2152152060 -10800 1 ADT} - {2172711660 -14400 0 AST} - {2183601660 -10800 1 ADT} - {2204161260 -14400 0 AST} - {2215051260 -10800 1 ADT} - {2235610860 -14400 0 AST} - {2246500860 -10800 1 ADT} - {2267060460 -14400 0 AST} - {2277950460 -10800 1 ADT} - {2298510060 -14400 0 AST} - {2309400060 -10800 1 ADT} - {2329959660 -14400 0 AST} - {2341454460 -10800 1 ADT} - {2362014060 -14400 0 AST} - {2372904060 -10800 1 ADT} - {2393463660 -14400 0 AST} - {2404353660 -10800 1 ADT} - {2424913260 -14400 0 AST} - {2435803260 -10800 1 ADT} - {2456362860 -14400 0 AST} - {2467252860 -10800 1 ADT} - {2487812460 -14400 0 AST} - {2499307260 -10800 1 ADT} - {2519866860 -14400 0 AST} - {2530756860 -10800 1 ADT} - {2551316460 -14400 0 AST} - {2562206460 -10800 1 ADT} - {2582766060 -14400 0 AST} - {2593656060 -10800 1 ADT} - {2614215660 -14400 0 AST} - {2625105660 -10800 1 ADT} - {2645665260 -14400 0 AST} - {2656555260 -10800 1 ADT} - {2677114860 -14400 0 AST} - {2688609660 -10800 1 ADT} - {2709169260 -14400 0 AST} - {2720059260 -10800 1 ADT} - {2740618860 -14400 0 AST} - {2751508860 -10800 1 ADT} - {2772068460 -14400 0 AST} - {2782958460 -10800 1 ADT} - {2803518060 -14400 0 AST} - {2814408060 -10800 1 ADT} - {2834967660 -14400 0 AST} - {2846462460 -10800 1 ADT} - {2867022060 -14400 0 AST} - {2877912060 -10800 1 ADT} - {2898471660 -14400 0 AST} - {2909361660 -10800 1 ADT} - {2929921260 -14400 0 AST} - {2940811260 -10800 1 ADT} - {2961370860 -14400 0 AST} - {2972260860 -10800 1 ADT} - {2992820460 -14400 0 AST} - {3003710460 -10800 1 ADT} - {3024270060 -14400 0 AST} - {3035764860 -10800 1 ADT} - {3056324460 -14400 0 AST} - {3067214460 -10800 1 ADT} - {3087774060 -14400 0 AST} - {3098664060 -10800 1 ADT} - {3119223660 -14400 0 AST} - {3130113660 -10800 1 ADT} - {3150673260 -14400 0 AST} - {3161563260 -10800 1 ADT} - {3182122860 -14400 0 AST} - {3193012860 -10800 1 ADT} - {3213572460 -14400 0 AST} - {3225067260 -10800 1 ADT} - {3245626860 -14400 0 AST} - {3256516860 -10800 1 ADT} - {3277076460 -14400 0 AST} - {3287966460 -10800 1 ADT} - {3308526060 -14400 0 AST} - {3319416060 -10800 1 ADT} - {3339975660 -14400 0 AST} - {3350865660 -10800 1 ADT} - {3371425260 -14400 0 AST} - {3382920060 -10800 1 ADT} - {3403479660 -14400 0 AST} - {3414369660 -10800 1 ADT} - {3434929260 -14400 0 AST} - {3445819260 -10800 1 ADT} - {3466378860 -14400 0 AST} - {3477268860 -10800 1 ADT} - {3497828460 -14400 0 AST} - {3508718460 -10800 1 ADT} - {3529278060 -14400 0 AST} - {3540168060 -10800 1 ADT} - {3560727660 -14400 0 AST} - {3572222460 -10800 1 ADT} - {3592782060 -14400 0 AST} - {3603672060 -10800 1 ADT} - {3624231660 -14400 0 AST} - {3635121660 -10800 1 ADT} - {3655681260 -14400 0 AST} - {3666571260 -10800 1 ADT} - {3687130860 -14400 0 AST} - {3698020860 -10800 1 ADT} - {3718580460 -14400 0 AST} - {3730075260 -10800 1 ADT} - {3750634860 -14400 0 AST} - {3761524860 -10800 1 ADT} - {3782084460 -14400 0 AST} - {3792974460 -10800 1 ADT} - {3813534060 -14400 0 AST} - {3824424060 -10800 1 ADT} - {3844983660 -14400 0 AST} - {3855873660 -10800 1 ADT} - {3876433260 -14400 0 AST} - {3887323260 -10800 1 ADT} - {3907882860 -14400 0 AST} - {3919377660 -10800 1 ADT} - {3939937260 -14400 0 AST} - {3950827260 -10800 1 ADT} - {3971386860 -14400 0 AST} - {3982276860 -10800 1 ADT} - {4002836460 -14400 0 AST} - {4013726460 -10800 1 ADT} - {4034286060 -14400 0 AST} - {4045176060 -10800 1 ADT} - {4065735660 -14400 0 AST} - {4076625660 -10800 1 ADT} - {4097185260 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Goose_Bay) { + {-9223372036854775808 -14500 0 LMT} + {-2713895900 -12652 0 NST} + {-1640982548 -12652 0 NST} + {-1632076148 -9052 1 NDT} + {-1614799748 -12652 0 NST} + {-1609446548 -12652 0 NST} + {-1096921748 -12600 0 NST} + {-1072989000 -12600 0 NST} + {-1061670600 -9000 1 NDT} + {-1048973400 -12600 0 NST} + {-1030221000 -9000 1 NDT} + {-1017523800 -12600 0 NST} + {-998771400 -9000 1 NDT} + {-986074200 -12600 0 NST} + {-966717000 -9000 1 NDT} + {-954624600 -12600 0 NST} + {-935267400 -9000 1 NDT} + {-922570200 -12600 0 NST} + {-903817800 -9000 1 NDT} + {-891120600 -12600 0 NST} + {-872368200 -9000 0 NWT} + {-769395600 -9000 1 NPT} + {-765401400 -12600 0 NST} + {-757369800 -12600 0 NST} + {-746044200 -9000 1 NDT} + {-733347000 -12600 0 NST} + {-714594600 -9000 1 NDT} + {-701897400 -12600 0 NST} + {-683145000 -9000 1 NDT} + {-670447800 -12600 0 NST} + {-651695400 -9000 1 NDT} + {-638998200 -12600 0 NST} + {-619641000 -9000 1 NDT} + {-606943800 -12600 0 NST} + {-589401000 -9000 1 NDT} + {-576099000 -12600 0 NST} + {-557951400 -9000 1 NDT} + {-544649400 -12600 0 NST} + {-526501800 -9000 1 NDT} + {-513199800 -12600 0 NST} + {-495052200 -9000 1 NDT} + {-481750200 -12600 0 NST} + {-463602600 -9000 1 NDT} + {-450300600 -12600 0 NST} + {-431548200 -9000 1 NDT} + {-418246200 -12600 0 NST} + {-400098600 -9000 1 NDT} + {-386796600 -12600 0 NST} + {-368649000 -9000 1 NDT} + {-355347000 -12600 0 NST} + {-337199400 -9000 1 NDT} + {-323897400 -12600 0 NST} + {-305749800 -9000 1 NDT} + {-289423800 -12600 0 NST} + {-273695400 -9000 1 NDT} + {-257974200 -12600 0 NST} + {-242245800 -9000 1 NDT} + {-226524600 -12600 0 NST} + {-210796200 -9000 1 NDT} + {-195075000 -12600 0 NST} + {-179346600 -9000 1 NDT} + {-163625400 -12600 0 NST} + {-147897000 -9000 1 NDT} + {-131571000 -12600 0 NST} + {-119903400 -14400 0 AST} + {-116445600 -10800 1 ADT} + {-100119600 -14400 0 AST} + {-84391200 -10800 1 ADT} + {-68670000 -14400 0 AST} + {-52941600 -10800 1 ADT} + {-37220400 -14400 0 AST} + {-21492000 -10800 1 ADT} + {-5770800 -14400 0 AST} + {9957600 -10800 1 ADT} + {25678800 -14400 0 AST} + {41407200 -10800 1 ADT} + {57733200 -14400 0 AST} + {73461600 -10800 1 ADT} + {89182800 -14400 0 AST} + {104911200 -10800 1 ADT} + {120632400 -14400 0 AST} + {136360800 -10800 1 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544593660 -10800 1 ADT} + {562129260 -14400 0 AST} + {576043260 -7200 1 ADDT} + {594180060 -14400 0 AST} + {607492860 -10800 1 ADT} + {625633260 -14400 0 AST} + {638942460 -10800 1 ADT} + {657082860 -14400 0 AST} + {670996860 -10800 1 ADT} + {688532460 -14400 0 AST} + {702446460 -10800 1 ADT} + {719982060 -14400 0 AST} + {733896060 -10800 1 ADT} + {752036460 -14400 0 AST} + {765345660 -10800 1 ADT} + {783486060 -14400 0 AST} + {796795260 -10800 1 ADT} + {814935660 -14400 0 AST} + {828849660 -10800 1 ADT} + {846385260 -14400 0 AST} + {860299260 -10800 1 ADT} + {877834860 -14400 0 AST} + {891748860 -10800 1 ADT} + {909284460 -14400 0 AST} + {923198460 -10800 1 ADT} + {941338860 -14400 0 AST} + {954648060 -10800 1 ADT} + {972788460 -14400 0 AST} + {986097660 -10800 1 ADT} + {1004238060 -14400 0 AST} + {1018152060 -10800 1 ADT} + {1035687660 -14400 0 AST} + {1049601660 -10800 1 ADT} + {1067137260 -14400 0 AST} + {1081051260 -10800 1 ADT} + {1099191660 -14400 0 AST} + {1112500860 -10800 1 ADT} + {1130641260 -14400 0 AST} + {1143950460 -10800 1 ADT} + {1162090860 -14400 0 AST} + {1173585660 -10800 1 ADT} + {1194145260 -14400 0 AST} + {1205035260 -10800 1 ADT} + {1225594860 -14400 0 AST} + {1236484860 -10800 1 ADT} + {1257044460 -14400 0 AST} + {1268539260 -10800 1 ADT} + {1289098860 -14400 0 AST} + {1299988860 -10800 1 ADT} + {1320548460 -14400 0 AST} + {1331438460 -10800 1 ADT} + {1351998060 -14400 0 AST} + {1362888060 -10800 1 ADT} + {1383447660 -14400 0 AST} + {1394337660 -10800 1 ADT} + {1414897260 -14400 0 AST} + {1425787260 -10800 1 ADT} + {1446346860 -14400 0 AST} + {1457841660 -10800 1 ADT} + {1478401260 -14400 0 AST} + {1489291260 -10800 1 ADT} + {1509850860 -14400 0 AST} + {1520740860 -10800 1 ADT} + {1541300460 -14400 0 AST} + {1552190460 -10800 1 ADT} + {1572750060 -14400 0 AST} + {1583640060 -10800 1 ADT} + {1604199660 -14400 0 AST} + {1615694460 -10800 1 ADT} + {1636254060 -14400 0 AST} + {1647144060 -10800 1 ADT} + {1667703660 -14400 0 AST} + {1678593660 -10800 1 ADT} + {1699153260 -14400 0 AST} + {1710043260 -10800 1 ADT} + {1730602860 -14400 0 AST} + {1741492860 -10800 1 ADT} + {1762052460 -14400 0 AST} + {1772942460 -10800 1 ADT} + {1793502060 -14400 0 AST} + {1804996860 -10800 1 ADT} + {1825556460 -14400 0 AST} + {1836446460 -10800 1 ADT} + {1857006060 -14400 0 AST} + {1867896060 -10800 1 ADT} + {1888455660 -14400 0 AST} + {1899345660 -10800 1 ADT} + {1919905260 -14400 0 AST} + {1930795260 -10800 1 ADT} + {1951354860 -14400 0 AST} + {1962849660 -10800 1 ADT} + {1983409260 -14400 0 AST} + {1994299260 -10800 1 ADT} + {2014858860 -14400 0 AST} + {2025748860 -10800 1 ADT} + {2046308460 -14400 0 AST} + {2057198460 -10800 1 ADT} + {2077758060 -14400 0 AST} + {2088648060 -10800 1 ADT} + {2109207660 -14400 0 AST} + {2120097660 -10800 1 ADT} + {2140657260 -14400 0 AST} + {2152152060 -10800 1 ADT} + {2172711660 -14400 0 AST} + {2183601660 -10800 1 ADT} + {2204161260 -14400 0 AST} + {2215051260 -10800 1 ADT} + {2235610860 -14400 0 AST} + {2246500860 -10800 1 ADT} + {2267060460 -14400 0 AST} + {2277950460 -10800 1 ADT} + {2298510060 -14400 0 AST} + {2309400060 -10800 1 ADT} + {2329959660 -14400 0 AST} + {2341454460 -10800 1 ADT} + {2362014060 -14400 0 AST} + {2372904060 -10800 1 ADT} + {2393463660 -14400 0 AST} + {2404353660 -10800 1 ADT} + {2424913260 -14400 0 AST} + {2435803260 -10800 1 ADT} + {2456362860 -14400 0 AST} + {2467252860 -10800 1 ADT} + {2487812460 -14400 0 AST} + {2499307260 -10800 1 ADT} + {2519866860 -14400 0 AST} + {2530756860 -10800 1 ADT} + {2551316460 -14400 0 AST} + {2562206460 -10800 1 ADT} + {2582766060 -14400 0 AST} + {2593656060 -10800 1 ADT} + {2614215660 -14400 0 AST} + {2625105660 -10800 1 ADT} + {2645665260 -14400 0 AST} + {2656555260 -10800 1 ADT} + {2677114860 -14400 0 AST} + {2688609660 -10800 1 ADT} + {2709169260 -14400 0 AST} + {2720059260 -10800 1 ADT} + {2740618860 -14400 0 AST} + {2751508860 -10800 1 ADT} + {2772068460 -14400 0 AST} + {2782958460 -10800 1 ADT} + {2803518060 -14400 0 AST} + {2814408060 -10800 1 ADT} + {2834967660 -14400 0 AST} + {2846462460 -10800 1 ADT} + {2867022060 -14400 0 AST} + {2877912060 -10800 1 ADT} + {2898471660 -14400 0 AST} + {2909361660 -10800 1 ADT} + {2929921260 -14400 0 AST} + {2940811260 -10800 1 ADT} + {2961370860 -14400 0 AST} + {2972260860 -10800 1 ADT} + {2992820460 -14400 0 AST} + {3003710460 -10800 1 ADT} + {3024270060 -14400 0 AST} + {3035764860 -10800 1 ADT} + {3056324460 -14400 0 AST} + {3067214460 -10800 1 ADT} + {3087774060 -14400 0 AST} + {3098664060 -10800 1 ADT} + {3119223660 -14400 0 AST} + {3130113660 -10800 1 ADT} + {3150673260 -14400 0 AST} + {3161563260 -10800 1 ADT} + {3182122860 -14400 0 AST} + {3193012860 -10800 1 ADT} + {3213572460 -14400 0 AST} + {3225067260 -10800 1 ADT} + {3245626860 -14400 0 AST} + {3256516860 -10800 1 ADT} + {3277076460 -14400 0 AST} + {3287966460 -10800 1 ADT} + {3308526060 -14400 0 AST} + {3319416060 -10800 1 ADT} + {3339975660 -14400 0 AST} + {3350865660 -10800 1 ADT} + {3371425260 -14400 0 AST} + {3382920060 -10800 1 ADT} + {3403479660 -14400 0 AST} + {3414369660 -10800 1 ADT} + {3434929260 -14400 0 AST} + {3445819260 -10800 1 ADT} + {3466378860 -14400 0 AST} + {3477268860 -10800 1 ADT} + {3497828460 -14400 0 AST} + {3508718460 -10800 1 ADT} + {3529278060 -14400 0 AST} + {3540168060 -10800 1 ADT} + {3560727660 -14400 0 AST} + {3572222460 -10800 1 ADT} + {3592782060 -14400 0 AST} + {3603672060 -10800 1 ADT} + {3624231660 -14400 0 AST} + {3635121660 -10800 1 ADT} + {3655681260 -14400 0 AST} + {3666571260 -10800 1 ADT} + {3687130860 -14400 0 AST} + {3698020860 -10800 1 ADT} + {3718580460 -14400 0 AST} + {3730075260 -10800 1 ADT} + {3750634860 -14400 0 AST} + {3761524860 -10800 1 ADT} + {3782084460 -14400 0 AST} + {3792974460 -10800 1 ADT} + {3813534060 -14400 0 AST} + {3824424060 -10800 1 ADT} + {3844983660 -14400 0 AST} + {3855873660 -10800 1 ADT} + {3876433260 -14400 0 AST} + {3887323260 -10800 1 ADT} + {3907882860 -14400 0 AST} + {3919377660 -10800 1 ADT} + {3939937260 -14400 0 AST} + {3950827260 -10800 1 ADT} + {3971386860 -14400 0 AST} + {3982276860 -10800 1 ADT} + {4002836460 -14400 0 AST} + {4013726460 -10800 1 ADT} + {4034286060 -14400 0 AST} + {4045176060 -10800 1 ADT} + {4065735660 -14400 0 AST} + {4076625660 -10800 1 ADT} + {4097185260 -14400 0 AST} +} diff --git a/library/tzdata/America/Grand_Turk b/library/tzdata/America/Grand_Turk index a455dd5..30bb58a 100644 --- a/library/tzdata/America/Grand_Turk +++ b/library/tzdata/America/Grand_Turk @@ -1,249 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Grand_Turk) { - {-9223372036854775808 -17072 0 LMT} - {-2524504528 -18432 0 KMT} - {-1827687168 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Grand_Turk) { + {-9223372036854775808 -17072 0 LMT} + {-2524504528 -18432 0 KMT} + {-1827687168 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Grenada b/library/tzdata/America/Grenada index 3c2919b..c6f8093 100644 --- a/library/tzdata/America/Grenada +++ b/library/tzdata/America/Grenada @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Grenada) { - {-9223372036854775808 -14820 0 LMT} - {-1846266780 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Grenada) { + {-9223372036854775808 -14820 0 LMT} + {-1846266780 -14400 0 AST} +} diff --git a/library/tzdata/America/Guadeloupe b/library/tzdata/America/Guadeloupe index b1987ce..131bbe2 100644 --- a/library/tzdata/America/Guadeloupe +++ b/library/tzdata/America/Guadeloupe @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Guadeloupe) { - {-9223372036854775808 -14768 0 LMT} - {-1848254032 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Guadeloupe) { + {-9223372036854775808 -14768 0 LMT} + {-1848254032 -14400 0 AST} +} diff --git a/library/tzdata/America/Guatemala b/library/tzdata/America/Guatemala index e4db5ac..9d47c33 100644 --- a/library/tzdata/America/Guatemala +++ b/library/tzdata/America/Guatemala @@ -1,14 +1,14 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Guatemala) { - {-9223372036854775808 -21724 0 LMT} - {-1617040676 -21600 0 CST} - {123055200 -18000 1 CDT} - {130914000 -21600 0 CST} - {422344800 -18000 1 CDT} - {433054800 -21600 0 CST} - {669708000 -18000 1 CDT} - {684219600 -21600 0 CST} - {1146376800 -18000 1 CDT} - {1159678800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Guatemala) { + {-9223372036854775808 -21724 0 LMT} + {-1617040676 -21600 0 CST} + {123055200 -18000 1 CDT} + {130914000 -21600 0 CST} + {422344800 -18000 1 CDT} + {433054800 -21600 0 CST} + {669708000 -18000 1 CDT} + {684219600 -21600 0 CST} + {1146376800 -18000 1 CDT} + {1159678800 -21600 0 CST} +} diff --git a/library/tzdata/America/Guayaquil b/library/tzdata/America/Guayaquil index e940a5b..fe29ef0 100644 --- a/library/tzdata/America/Guayaquil +++ b/library/tzdata/America/Guayaquil @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Guayaquil) { - {-9223372036854775808 -19160 0 LMT} - {-2524502440 -18840 0 QMT} - {-1230749160 -18000 0 ECT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Guayaquil) { + {-9223372036854775808 -19160 0 LMT} + {-2524502440 -18840 0 QMT} + {-1230749160 -18000 0 ECT} +} diff --git a/library/tzdata/America/Guyana b/library/tzdata/America/Guyana index c58a989..8282656 100644 --- a/library/tzdata/America/Guyana +++ b/library/tzdata/America/Guyana @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Guyana) { - {-9223372036854775808 -13960 0 LMT} - {-1730578040 -13500 0 GBGT} - {-113688900 -13500 0 GYT} - {176010300 -10800 0 GYT} - {662698800 -14400 0 GYT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Guyana) { + {-9223372036854775808 -13960 0 LMT} + {-1730578040 -13500 0 GBGT} + {-113688900 -13500 0 GYT} + {176010300 -10800 0 GYT} + {662698800 -14400 0 GYT} +} diff --git a/library/tzdata/America/Halifax b/library/tzdata/America/Halifax index 76f016a..e606fce 100644 --- a/library/tzdata/America/Halifax +++ b/library/tzdata/America/Halifax @@ -1,361 +1,361 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Halifax) { - {-9223372036854775808 -15264 0 LMT} - {-2131645536 -14400 0 AST} - {-1696276800 -10800 1 ADT} - {-1680469200 -14400 0 AST} - {-1640980800 -14400 0 AST} - {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} - {-1609444800 -14400 0 AST} - {-1566763200 -10800 1 ADT} - {-1557090000 -14400 0 AST} - {-1535486400 -10800 1 ADT} - {-1524949200 -14400 0 AST} - {-1504468800 -10800 1 ADT} - {-1493413200 -14400 0 AST} - {-1472414400 -10800 1 ADT} - {-1461963600 -14400 0 AST} - {-1440964800 -10800 1 ADT} - {-1429390800 -14400 0 AST} - {-1409515200 -10800 1 ADT} - {-1396731600 -14400 0 AST} - {-1376856000 -10800 1 ADT} - {-1366491600 -14400 0 AST} - {-1346616000 -10800 1 ADT} - {-1333832400 -14400 0 AST} - {-1313956800 -10800 1 ADT} - {-1303678800 -14400 0 AST} - {-1282507200 -10800 1 ADT} - {-1272661200 -14400 0 AST} - {-1251057600 -10800 1 ADT} - {-1240088400 -14400 0 AST} - {-1219608000 -10800 1 ADT} - {-1207429200 -14400 0 AST} - {-1188763200 -10800 1 ADT} - {-1175979600 -14400 0 AST} - {-1157313600 -10800 1 ADT} - {-1143925200 -14400 0 AST} - {-1124049600 -10800 1 ADT} - {-1113771600 -14400 0 AST} - {-1091390400 -10800 1 ADT} - {-1081026000 -14400 0 AST} - {-1059854400 -10800 1 ADT} - {-1050786000 -14400 0 AST} - {-1030910400 -10800 1 ADT} - {-1018126800 -14400 0 AST} - {-999460800 -10800 1 ADT} - {-986677200 -14400 0 AST} - {-965592000 -10800 1 ADT} - {-955227600 -14400 0 AST} - {-935956800 -10800 1 ADT} - {-923173200 -14400 0 AST} - {-904507200 -10800 1 ADT} - {-891723600 -14400 0 AST} - {-880221600 -10800 0 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-757368000 -14400 0 AST} - {-747252000 -10800 1 ADT} - {-733950000 -14400 0 AST} - {-715802400 -10800 1 ADT} - {-702500400 -14400 0 AST} - {-684352800 -10800 1 ADT} - {-671050800 -14400 0 AST} - {-652903200 -10800 1 ADT} - {-639601200 -14400 0 AST} - {-589399200 -10800 1 ADT} - {-576097200 -14400 0 AST} - {-557949600 -10800 1 ADT} - {-544647600 -14400 0 AST} - {-526500000 -10800 1 ADT} - {-513198000 -14400 0 AST} - {-495050400 -10800 1 ADT} - {-481748400 -14400 0 AST} - {-431546400 -10800 1 ADT} - {-418244400 -14400 0 AST} - {-400096800 -10800 1 ADT} - {-386794800 -14400 0 AST} - {-368647200 -10800 1 ADT} - {-355345200 -14400 0 AST} - {-337197600 -10800 1 ADT} - {-323895600 -14400 0 AST} - {-242244000 -10800 1 ADT} - {-226522800 -14400 0 AST} - {-210794400 -10800 1 ADT} - {-195073200 -14400 0 AST} - {-179344800 -10800 1 ADT} - {-163623600 -14400 0 AST} - {-147895200 -10800 1 ADT} - {-131569200 -14400 0 AST} - {-116445600 -10800 1 ADT} - {-100119600 -14400 0 AST} - {-84391200 -10800 1 ADT} - {-68670000 -14400 0 AST} - {-52941600 -10800 1 ADT} - {-37220400 -14400 0 AST} - {-21492000 -10800 1 ADT} - {-5770800 -14400 0 AST} - {9957600 -10800 1 ADT} - {25678800 -14400 0 AST} - {41407200 -10800 1 ADT} - {57733200 -14400 0 AST} - {73461600 -10800 1 ADT} - {89182800 -14400 0 AST} - {104911200 -10800 1 ADT} - {120632400 -14400 0 AST} - {126244800 -14400 0 AST} - {136360800 -10800 1 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -10800 1 ADT} - {814942800 -14400 0 AST} - {828856800 -10800 1 ADT} - {846392400 -14400 0 AST} - {860306400 -10800 1 ADT} - {877842000 -14400 0 AST} - {891756000 -10800 1 ADT} - {909291600 -14400 0 AST} - {923205600 -10800 1 ADT} - {941346000 -14400 0 AST} - {954655200 -10800 1 ADT} - {972795600 -14400 0 AST} - {986104800 -10800 1 ADT} - {1004245200 -14400 0 AST} - {1018159200 -10800 1 ADT} - {1035694800 -14400 0 AST} - {1049608800 -10800 1 ADT} - {1067144400 -14400 0 AST} - {1081058400 -10800 1 ADT} - {1099198800 -14400 0 AST} - {1112508000 -10800 1 ADT} - {1130648400 -14400 0 AST} - {1143957600 -10800 1 ADT} - {1162098000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Halifax) { + {-9223372036854775808 -15264 0 LMT} + {-2131645536 -14400 0 AST} + {-1696276800 -10800 1 ADT} + {-1680469200 -14400 0 AST} + {-1640980800 -14400 0 AST} + {-1632074400 -10800 1 ADT} + {-1614798000 -14400 0 AST} + {-1609444800 -14400 0 AST} + {-1566763200 -10800 1 ADT} + {-1557090000 -14400 0 AST} + {-1535486400 -10800 1 ADT} + {-1524949200 -14400 0 AST} + {-1504468800 -10800 1 ADT} + {-1493413200 -14400 0 AST} + {-1472414400 -10800 1 ADT} + {-1461963600 -14400 0 AST} + {-1440964800 -10800 1 ADT} + {-1429390800 -14400 0 AST} + {-1409515200 -10800 1 ADT} + {-1396731600 -14400 0 AST} + {-1376856000 -10800 1 ADT} + {-1366491600 -14400 0 AST} + {-1346616000 -10800 1 ADT} + {-1333832400 -14400 0 AST} + {-1313956800 -10800 1 ADT} + {-1303678800 -14400 0 AST} + {-1282507200 -10800 1 ADT} + {-1272661200 -14400 0 AST} + {-1251057600 -10800 1 ADT} + {-1240088400 -14400 0 AST} + {-1219608000 -10800 1 ADT} + {-1207429200 -14400 0 AST} + {-1188763200 -10800 1 ADT} + {-1175979600 -14400 0 AST} + {-1157313600 -10800 1 ADT} + {-1143925200 -14400 0 AST} + {-1124049600 -10800 1 ADT} + {-1113771600 -14400 0 AST} + {-1091390400 -10800 1 ADT} + {-1081026000 -14400 0 AST} + {-1059854400 -10800 1 ADT} + {-1050786000 -14400 0 AST} + {-1030910400 -10800 1 ADT} + {-1018126800 -14400 0 AST} + {-999460800 -10800 1 ADT} + {-986677200 -14400 0 AST} + {-965592000 -10800 1 ADT} + {-955227600 -14400 0 AST} + {-935956800 -10800 1 ADT} + {-923173200 -14400 0 AST} + {-904507200 -10800 1 ADT} + {-891723600 -14400 0 AST} + {-880221600 -10800 0 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-757368000 -14400 0 AST} + {-747252000 -10800 1 ADT} + {-733950000 -14400 0 AST} + {-715802400 -10800 1 ADT} + {-702500400 -14400 0 AST} + {-684352800 -10800 1 ADT} + {-671050800 -14400 0 AST} + {-652903200 -10800 1 ADT} + {-639601200 -14400 0 AST} + {-589399200 -10800 1 ADT} + {-576097200 -14400 0 AST} + {-557949600 -10800 1 ADT} + {-544647600 -14400 0 AST} + {-526500000 -10800 1 ADT} + {-513198000 -14400 0 AST} + {-495050400 -10800 1 ADT} + {-481748400 -14400 0 AST} + {-431546400 -10800 1 ADT} + {-418244400 -14400 0 AST} + {-400096800 -10800 1 ADT} + {-386794800 -14400 0 AST} + {-368647200 -10800 1 ADT} + {-355345200 -14400 0 AST} + {-337197600 -10800 1 ADT} + {-323895600 -14400 0 AST} + {-242244000 -10800 1 ADT} + {-226522800 -14400 0 AST} + {-210794400 -10800 1 ADT} + {-195073200 -14400 0 AST} + {-179344800 -10800 1 ADT} + {-163623600 -14400 0 AST} + {-147895200 -10800 1 ADT} + {-131569200 -14400 0 AST} + {-116445600 -10800 1 ADT} + {-100119600 -14400 0 AST} + {-84391200 -10800 1 ADT} + {-68670000 -14400 0 AST} + {-52941600 -10800 1 ADT} + {-37220400 -14400 0 AST} + {-21492000 -10800 1 ADT} + {-5770800 -14400 0 AST} + {9957600 -10800 1 ADT} + {25678800 -14400 0 AST} + {41407200 -10800 1 ADT} + {57733200 -14400 0 AST} + {73461600 -10800 1 ADT} + {89182800 -14400 0 AST} + {104911200 -10800 1 ADT} + {120632400 -14400 0 AST} + {126244800 -14400 0 AST} + {136360800 -10800 1 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -10800 1 ADT} + {814942800 -14400 0 AST} + {828856800 -10800 1 ADT} + {846392400 -14400 0 AST} + {860306400 -10800 1 ADT} + {877842000 -14400 0 AST} + {891756000 -10800 1 ADT} + {909291600 -14400 0 AST} + {923205600 -10800 1 ADT} + {941346000 -14400 0 AST} + {954655200 -10800 1 ADT} + {972795600 -14400 0 AST} + {986104800 -10800 1 ADT} + {1004245200 -14400 0 AST} + {1018159200 -10800 1 ADT} + {1035694800 -14400 0 AST} + {1049608800 -10800 1 ADT} + {1067144400 -14400 0 AST} + {1081058400 -10800 1 ADT} + {1099198800 -14400 0 AST} + {1112508000 -10800 1 ADT} + {1130648400 -14400 0 AST} + {1143957600 -10800 1 ADT} + {1162098000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/America/Havana b/library/tzdata/America/Havana index fd66cb6..8ea6454 100644 --- a/library/tzdata/America/Havana +++ b/library/tzdata/America/Havana @@ -1,287 +1,285 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Havana) { - {-9223372036854775808 -19768 0 LMT} - {-2524501832 -19776 0 HMT} - {-1402813824 -18000 0 CST} - {-1311534000 -14400 1 CDT} - {-1300996800 -18000 0 CST} - {-933534000 -14400 1 CDT} - {-925675200 -18000 0 CST} - {-902084400 -14400 1 CDT} - {-893620800 -18000 0 CST} - {-870030000 -14400 1 CDT} - {-862171200 -18000 0 CST} - {-775681200 -14400 1 CDT} - {-767822400 -18000 0 CST} - {-744231600 -14400 1 CDT} - {-736372800 -18000 0 CST} - {-144702000 -14400 1 CDT} - {-134251200 -18000 0 CST} - {-113425200 -14400 1 CDT} - {-102542400 -18000 0 CST} - {-86295600 -14400 1 CDT} - {-72907200 -18000 0 CST} - {-54154800 -14400 1 CDT} - {-41457600 -18000 0 CST} - {-21495600 -14400 1 CDT} - {-5774400 -18000 0 CST} - {9954000 -14400 1 CDT} - {25675200 -18000 0 CST} - {41403600 -14400 1 CDT} - {57729600 -18000 0 CST} - {73458000 -14400 1 CDT} - {87364800 -18000 0 CST} - {104907600 -14400 1 CDT} - {118900800 -18000 0 CST} - {136357200 -14400 1 CDT} - {150436800 -18000 0 CST} - {167806800 -14400 1 CDT} - {183528000 -18000 0 CST} - {199256400 -14400 1 CDT} - {215582400 -18000 0 CST} - {230706000 -14400 1 CDT} - {247032000 -18000 0 CST} - {263365200 -14400 1 CDT} - {276667200 -18000 0 CST} - {290581200 -14400 1 CDT} - {308721600 -18000 0 CST} - {322030800 -14400 1 CDT} - {340171200 -18000 0 CST} - {358318800 -14400 1 CDT} - {371620800 -18000 0 CST} - {389768400 -14400 1 CDT} - {403070400 -18000 0 CST} - {421218000 -14400 1 CDT} - {434520000 -18000 0 CST} - {452667600 -14400 1 CDT} - {466574400 -18000 0 CST} - {484117200 -14400 1 CDT} - {498024000 -18000 0 CST} - {511333200 -14400 1 CDT} - {529473600 -18000 0 CST} - {542782800 -14400 1 CDT} - {560923200 -18000 0 CST} - {574837200 -14400 1 CDT} - {592372800 -18000 0 CST} - {606286800 -14400 1 CDT} - {623822400 -18000 0 CST} - {638946000 -14400 1 CDT} - {655876800 -18000 0 CST} - {671000400 -14400 1 CDT} - {687330000 -18000 0 CST} - {702450000 -14400 1 CDT} - {718779600 -18000 0 CST} - {733899600 -14400 1 CDT} - {750229200 -18000 0 CST} - {765349200 -14400 1 CDT} - {781678800 -18000 0 CST} - {796798800 -14400 1 CDT} - {813128400 -18000 0 CST} - {828853200 -14400 1 CDT} - {844578000 -18000 0 CST} - {860302800 -14400 1 CDT} - {876632400 -18000 0 CST} - {891147600 -14400 1 CDT} - {909291600 -18000 0 CST} - {922597200 -14400 1 CDT} - {941346000 -18000 0 CST} - {954651600 -14400 1 CDT} - {972795600 -18000 0 CST} - {986101200 -14400 1 CDT} - {1004245200 -18000 0 CST} - {1018155600 -14400 1 CDT} - {1035694800 -18000 0 CST} - {1049605200 -14400 1 CDT} - {1067144400 -18000 0 CST} - {1081054800 -14400 1 CDT} - {1112504400 -14400 1 CDT} - {1143954000 -14400 1 CDT} - {1162098000 -18000 0 CST} - {1173589200 -14400 1 CDT} - {1193547600 -18000 0 CST} - {1205643600 -14400 1 CDT} - {1224997200 -18000 0 CST} - {1237093200 -14400 1 CDT} - {1256446800 -18000 0 CST} - {1269147600 -14400 1 CDT} - {1288501200 -18000 0 CST} - {1300597200 -14400 1 CDT} - {1319950800 -18000 0 CST} - {1332046800 -14400 1 CDT} - {1351400400 -18000 0 CST} - {1363496400 -14400 1 CDT} - {1382850000 -18000 0 CST} - {1394946000 -14400 1 CDT} - {1414299600 -18000 0 CST} - {1426395600 -14400 1 CDT} - {1445749200 -18000 0 CST} - {1458450000 -14400 1 CDT} - {1477803600 -18000 0 CST} - {1489899600 -14400 1 CDT} - {1509253200 -18000 0 CST} - {1521349200 -14400 1 CDT} - {1540702800 -18000 0 CST} - {1552798800 -14400 1 CDT} - {1572152400 -18000 0 CST} - {1584248400 -14400 1 CDT} - {1603602000 -18000 0 CST} - {1616302800 -14400 1 CDT} - {1635656400 -18000 0 CST} - {1647752400 -14400 1 CDT} - {1667106000 -18000 0 CST} - {1679202000 -14400 1 CDT} - {1698555600 -18000 0 CST} - {1710651600 -14400 1 CDT} - {1730005200 -18000 0 CST} - {1742101200 -14400 1 CDT} - {1761454800 -18000 0 CST} - {1773550800 -14400 1 CDT} - {1792904400 -18000 0 CST} - {1805605200 -14400 1 CDT} - {1824958800 -18000 0 CST} - {1837054800 -14400 1 CDT} - {1856408400 -18000 0 CST} - {1868504400 -14400 1 CDT} - {1887858000 -18000 0 CST} - {1899954000 -14400 1 CDT} - {1919307600 -18000 0 CST} - {1931403600 -14400 1 CDT} - {1950757200 -18000 0 CST} - {1963458000 -14400 1 CDT} - {1982811600 -18000 0 CST} - {1994907600 -14400 1 CDT} - {2014261200 -18000 0 CST} - {2026357200 -14400 1 CDT} - {2045710800 -18000 0 CST} - {2057806800 -14400 1 CDT} - {2077160400 -18000 0 CST} - {2089256400 -14400 1 CDT} - {2108610000 -18000 0 CST} - {2120706000 -14400 1 CDT} - {2140059600 -18000 0 CST} - {2152760400 -14400 1 CDT} - {2172114000 -18000 0 CST} - {2184210000 -14400 1 CDT} - {2203563600 -18000 0 CST} - {2215659600 -14400 1 CDT} - {2235013200 -18000 0 CST} - {2247109200 -14400 1 CDT} - {2266462800 -18000 0 CST} - {2278558800 -14400 1 CDT} - {2297912400 -18000 0 CST} - {2310008400 -14400 1 CDT} - {2329362000 -18000 0 CST} - {2342062800 -14400 1 CDT} - {2361416400 -18000 0 CST} - {2373512400 -14400 1 CDT} - {2392866000 -18000 0 CST} - {2404962000 -14400 1 CDT} - {2424315600 -18000 0 CST} - {2436411600 -14400 1 CDT} - {2455765200 -18000 0 CST} - {2467861200 -14400 1 CDT} - {2487214800 -18000 0 CST} - {2499915600 -14400 1 CDT} - {2519269200 -18000 0 CST} - {2531365200 -14400 1 CDT} - {2550718800 -18000 0 CST} - {2562814800 -14400 1 CDT} - {2582168400 -18000 0 CST} - {2594264400 -14400 1 CDT} - {2613618000 -18000 0 CST} - {2625714000 -14400 1 CDT} - {2645067600 -18000 0 CST} - {2657163600 -14400 1 CDT} - {2676517200 -18000 0 CST} - {2689218000 -14400 1 CDT} - {2708571600 -18000 0 CST} - {2720667600 -14400 1 CDT} - {2740021200 -18000 0 CST} - {2752117200 -14400 1 CDT} - {2771470800 -18000 0 CST} - {2783566800 -14400 1 CDT} - {2802920400 -18000 0 CST} - {2815016400 -14400 1 CDT} - {2834370000 -18000 0 CST} - {2847070800 -14400 1 CDT} - {2866424400 -18000 0 CST} - {2878520400 -14400 1 CDT} - {2897874000 -18000 0 CST} - {2909970000 -14400 1 CDT} - {2929323600 -18000 0 CST} - {2941419600 -14400 1 CDT} - {2960773200 -18000 0 CST} - {2972869200 -14400 1 CDT} - {2992222800 -18000 0 CST} - {3004318800 -14400 1 CDT} - {3023672400 -18000 0 CST} - {3036373200 -14400 1 CDT} - {3055726800 -18000 0 CST} - {3067822800 -14400 1 CDT} - {3087176400 -18000 0 CST} - {3099272400 -14400 1 CDT} - {3118626000 -18000 0 CST} - {3130722000 -14400 1 CDT} - {3150075600 -18000 0 CST} - {3162171600 -14400 1 CDT} - {3181525200 -18000 0 CST} - {3193621200 -14400 1 CDT} - {3212974800 -18000 0 CST} - {3225675600 -14400 1 CDT} - {3245029200 -18000 0 CST} - {3257125200 -14400 1 CDT} - {3276478800 -18000 0 CST} - {3288574800 -14400 1 CDT} - {3307928400 -18000 0 CST} - {3320024400 -14400 1 CDT} - {3339378000 -18000 0 CST} - {3351474000 -14400 1 CDT} - {3370827600 -18000 0 CST} - {3383528400 -14400 1 CDT} - {3402882000 -18000 0 CST} - {3414978000 -14400 1 CDT} - {3434331600 -18000 0 CST} - {3446427600 -14400 1 CDT} - {3465781200 -18000 0 CST} - {3477877200 -14400 1 CDT} - {3497230800 -18000 0 CST} - {3509326800 -14400 1 CDT} - {3528680400 -18000 0 CST} - {3540776400 -14400 1 CDT} - {3560130000 -18000 0 CST} - {3572830800 -14400 1 CDT} - {3592184400 -18000 0 CST} - {3604280400 -14400 1 CDT} - {3623634000 -18000 0 CST} - {3635730000 -14400 1 CDT} - {3655083600 -18000 0 CST} - {3667179600 -14400 1 CDT} - {3686533200 -18000 0 CST} - {3698629200 -14400 1 CDT} - {3717982800 -18000 0 CST} - {3730683600 -14400 1 CDT} - {3750037200 -18000 0 CST} - {3762133200 -14400 1 CDT} - {3781486800 -18000 0 CST} - {3793582800 -14400 1 CDT} - {3812936400 -18000 0 CST} - {3825032400 -14400 1 CDT} - {3844386000 -18000 0 CST} - {3856482000 -14400 1 CDT} - {3875835600 -18000 0 CST} - {3887931600 -14400 1 CDT} - {3907285200 -18000 0 CST} - {3919986000 -14400 1 CDT} - {3939339600 -18000 0 CST} - {3951435600 -14400 1 CDT} - {3970789200 -18000 0 CST} - {3982885200 -14400 1 CDT} - {4002238800 -18000 0 CST} - {4014334800 -14400 1 CDT} - {4033688400 -18000 0 CST} - {4045784400 -14400 1 CDT} - {4065138000 -18000 0 CST} - {4077234000 -14400 1 CDT} - {4096587600 -18000 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Havana) { + {-9223372036854775808 -19768 0 LMT} + {-2524501832 -19776 0 HMT} + {-1402813824 -18000 0 CST} + {-1311534000 -14400 1 CDT} + {-1300996800 -18000 0 CST} + {-933534000 -14400 1 CDT} + {-925675200 -18000 0 CST} + {-902084400 -14400 1 CDT} + {-893620800 -18000 0 CST} + {-870030000 -14400 1 CDT} + {-862171200 -18000 0 CST} + {-775681200 -14400 1 CDT} + {-767822400 -18000 0 CST} + {-744231600 -14400 1 CDT} + {-736372800 -18000 0 CST} + {-144702000 -14400 1 CDT} + {-134251200 -18000 0 CST} + {-113425200 -14400 1 CDT} + {-102542400 -18000 0 CST} + {-86295600 -14400 1 CDT} + {-72907200 -18000 0 CST} + {-54154800 -14400 1 CDT} + {-41457600 -18000 0 CST} + {-21495600 -14400 1 CDT} + {-5774400 -18000 0 CST} + {9954000 -14400 1 CDT} + {25675200 -18000 0 CST} + {41403600 -14400 1 CDT} + {57729600 -18000 0 CST} + {73458000 -14400 1 CDT} + {87364800 -18000 0 CST} + {104907600 -14400 1 CDT} + {118900800 -18000 0 CST} + {136357200 -14400 1 CDT} + {150436800 -18000 0 CST} + {167806800 -14400 1 CDT} + {183528000 -18000 0 CST} + {199256400 -14400 1 CDT} + {215582400 -18000 0 CST} + {230706000 -14400 1 CDT} + {247032000 -18000 0 CST} + {263365200 -14400 1 CDT} + {276667200 -18000 0 CST} + {290581200 -14400 1 CDT} + {308721600 -18000 0 CST} + {322030800 -14400 1 CDT} + {340171200 -18000 0 CST} + {358318800 -14400 1 CDT} + {371620800 -18000 0 CST} + {389768400 -14400 1 CDT} + {403070400 -18000 0 CST} + {421218000 -14400 1 CDT} + {434520000 -18000 0 CST} + {452667600 -14400 1 CDT} + {466574400 -18000 0 CST} + {484117200 -14400 1 CDT} + {498024000 -18000 0 CST} + {511333200 -14400 1 CDT} + {529473600 -18000 0 CST} + {542782800 -14400 1 CDT} + {560923200 -18000 0 CST} + {574837200 -14400 1 CDT} + {592372800 -18000 0 CST} + {606286800 -14400 1 CDT} + {623822400 -18000 0 CST} + {638946000 -14400 1 CDT} + {655876800 -18000 0 CST} + {671000400 -14400 1 CDT} + {687330000 -18000 0 CST} + {702450000 -14400 1 CDT} + {718779600 -18000 0 CST} + {733899600 -14400 1 CDT} + {750229200 -18000 0 CST} + {765349200 -14400 1 CDT} + {781678800 -18000 0 CST} + {796798800 -14400 1 CDT} + {813128400 -18000 0 CST} + {828853200 -14400 1 CDT} + {844578000 -18000 0 CST} + {860302800 -14400 1 CDT} + {876632400 -18000 0 CST} + {891147600 -14400 1 CDT} + {909291600 -18000 0 CST} + {922597200 -14400 1 CDT} + {941346000 -18000 0 CST} + {954651600 -14400 1 CDT} + {972795600 -18000 0 CST} + {986101200 -14400 1 CDT} + {1004245200 -18000 0 CST} + {1018155600 -14400 1 CDT} + {1035694800 -18000 0 CST} + {1049605200 -14400 1 CDT} + {1067144400 -18000 0 CST} + {1081054800 -14400 1 CDT} + {1162098000 -18000 0 CST} + {1173589200 -14400 1 CDT} + {1193547600 -18000 0 CST} + {1205643600 -14400 1 CDT} + {1224997200 -18000 0 CST} + {1236488400 -14400 1 CDT} + {1256446800 -18000 0 CST} + {1268542800 -14400 1 CDT} + {1288501200 -18000 0 CST} + {1299992400 -14400 1 CDT} + {1319950800 -18000 0 CST} + {1331442000 -14400 1 CDT} + {1351400400 -18000 0 CST} + {1362891600 -14400 1 CDT} + {1382850000 -18000 0 CST} + {1394341200 -14400 1 CDT} + {1414299600 -18000 0 CST} + {1425790800 -14400 1 CDT} + {1445749200 -18000 0 CST} + {1457845200 -14400 1 CDT} + {1477803600 -18000 0 CST} + {1489294800 -14400 1 CDT} + {1509253200 -18000 0 CST} + {1520744400 -14400 1 CDT} + {1540702800 -18000 0 CST} + {1552194000 -14400 1 CDT} + {1572152400 -18000 0 CST} + {1583643600 -14400 1 CDT} + {1603602000 -18000 0 CST} + {1615698000 -14400 1 CDT} + {1635656400 -18000 0 CST} + {1647147600 -14400 1 CDT} + {1667106000 -18000 0 CST} + {1678597200 -14400 1 CDT} + {1698555600 -18000 0 CST} + {1710046800 -14400 1 CDT} + {1730005200 -18000 0 CST} + {1741496400 -14400 1 CDT} + {1761454800 -18000 0 CST} + {1772946000 -14400 1 CDT} + {1792904400 -18000 0 CST} + {1805000400 -14400 1 CDT} + {1824958800 -18000 0 CST} + {1836450000 -14400 1 CDT} + {1856408400 -18000 0 CST} + {1867899600 -14400 1 CDT} + {1887858000 -18000 0 CST} + {1899349200 -14400 1 CDT} + {1919307600 -18000 0 CST} + {1930798800 -14400 1 CDT} + {1950757200 -18000 0 CST} + {1962853200 -14400 1 CDT} + {1982811600 -18000 0 CST} + {1994302800 -14400 1 CDT} + {2014261200 -18000 0 CST} + {2025752400 -14400 1 CDT} + {2045710800 -18000 0 CST} + {2057202000 -14400 1 CDT} + {2077160400 -18000 0 CST} + {2088651600 -14400 1 CDT} + {2108610000 -18000 0 CST} + {2120101200 -14400 1 CDT} + {2140059600 -18000 0 CST} + {2152155600 -14400 1 CDT} + {2172114000 -18000 0 CST} + {2183605200 -14400 1 CDT} + {2203563600 -18000 0 CST} + {2215054800 -14400 1 CDT} + {2235013200 -18000 0 CST} + {2246504400 -14400 1 CDT} + {2266462800 -18000 0 CST} + {2277954000 -14400 1 CDT} + {2297912400 -18000 0 CST} + {2309403600 -14400 1 CDT} + {2329362000 -18000 0 CST} + {2341458000 -14400 1 CDT} + {2361416400 -18000 0 CST} + {2372907600 -14400 1 CDT} + {2392866000 -18000 0 CST} + {2404357200 -14400 1 CDT} + {2424315600 -18000 0 CST} + {2435806800 -14400 1 CDT} + {2455765200 -18000 0 CST} + {2467256400 -14400 1 CDT} + {2487214800 -18000 0 CST} + {2499310800 -14400 1 CDT} + {2519269200 -18000 0 CST} + {2530760400 -14400 1 CDT} + {2550718800 -18000 0 CST} + {2562210000 -14400 1 CDT} + {2582168400 -18000 0 CST} + {2593659600 -14400 1 CDT} + {2613618000 -18000 0 CST} + {2625109200 -14400 1 CDT} + {2645067600 -18000 0 CST} + {2656558800 -14400 1 CDT} + {2676517200 -18000 0 CST} + {2688613200 -14400 1 CDT} + {2708571600 -18000 0 CST} + {2720062800 -14400 1 CDT} + {2740021200 -18000 0 CST} + {2751512400 -14400 1 CDT} + {2771470800 -18000 0 CST} + {2782962000 -14400 1 CDT} + {2802920400 -18000 0 CST} + {2814411600 -14400 1 CDT} + {2834370000 -18000 0 CST} + {2846466000 -14400 1 CDT} + {2866424400 -18000 0 CST} + {2877915600 -14400 1 CDT} + {2897874000 -18000 0 CST} + {2909365200 -14400 1 CDT} + {2929323600 -18000 0 CST} + {2940814800 -14400 1 CDT} + {2960773200 -18000 0 CST} + {2972264400 -14400 1 CDT} + {2992222800 -18000 0 CST} + {3003714000 -14400 1 CDT} + {3023672400 -18000 0 CST} + {3035768400 -14400 1 CDT} + {3055726800 -18000 0 CST} + {3067218000 -14400 1 CDT} + {3087176400 -18000 0 CST} + {3098667600 -14400 1 CDT} + {3118626000 -18000 0 CST} + {3130117200 -14400 1 CDT} + {3150075600 -18000 0 CST} + {3161566800 -14400 1 CDT} + {3181525200 -18000 0 CST} + {3193016400 -14400 1 CDT} + {3212974800 -18000 0 CST} + {3225070800 -14400 1 CDT} + {3245029200 -18000 0 CST} + {3256520400 -14400 1 CDT} + {3276478800 -18000 0 CST} + {3287970000 -14400 1 CDT} + {3307928400 -18000 0 CST} + {3319419600 -14400 1 CDT} + {3339378000 -18000 0 CST} + {3350869200 -14400 1 CDT} + {3370827600 -18000 0 CST} + {3382923600 -14400 1 CDT} + {3402882000 -18000 0 CST} + {3414373200 -14400 1 CDT} + {3434331600 -18000 0 CST} + {3445822800 -14400 1 CDT} + {3465781200 -18000 0 CST} + {3477272400 -14400 1 CDT} + {3497230800 -18000 0 CST} + {3508722000 -14400 1 CDT} + {3528680400 -18000 0 CST} + {3540171600 -14400 1 CDT} + {3560130000 -18000 0 CST} + {3572226000 -14400 1 CDT} + {3592184400 -18000 0 CST} + {3603675600 -14400 1 CDT} + {3623634000 -18000 0 CST} + {3635125200 -14400 1 CDT} + {3655083600 -18000 0 CST} + {3666574800 -14400 1 CDT} + {3686533200 -18000 0 CST} + {3698024400 -14400 1 CDT} + {3717982800 -18000 0 CST} + {3730078800 -14400 1 CDT} + {3750037200 -18000 0 CST} + {3761528400 -14400 1 CDT} + {3781486800 -18000 0 CST} + {3792978000 -14400 1 CDT} + {3812936400 -18000 0 CST} + {3824427600 -14400 1 CDT} + {3844386000 -18000 0 CST} + {3855877200 -14400 1 CDT} + {3875835600 -18000 0 CST} + {3887326800 -14400 1 CDT} + {3907285200 -18000 0 CST} + {3919381200 -14400 1 CDT} + {3939339600 -18000 0 CST} + {3950830800 -14400 1 CDT} + {3970789200 -18000 0 CST} + {3982280400 -14400 1 CDT} + {4002238800 -18000 0 CST} + {4013730000 -14400 1 CDT} + {4033688400 -18000 0 CST} + {4045179600 -14400 1 CDT} + {4065138000 -18000 0 CST} + {4076629200 -14400 1 CDT} + {4096587600 -18000 0 CST} +} diff --git a/library/tzdata/America/Hermosillo b/library/tzdata/America/Hermosillo index 779020e..ec406ed 100644 --- a/library/tzdata/America/Hermosillo +++ b/library/tzdata/America/Hermosillo @@ -1,21 +1,21 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Hermosillo) { - {-9223372036854775808 -26632 0 LMT} - {-1514739600 -25200 0 MST} - {-1343066400 -21600 0 CST} - {-1234807200 -25200 0 MST} - {-1220292000 -21600 0 CST} - {-1207159200 -25200 0 MST} - {-1191344400 -21600 0 CST} - {-873828000 -25200 0 MST} - {-661539600 -28800 0 PST} - {28800 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {915174000 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Hermosillo) { + {-9223372036854775808 -26632 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {-873828000 -25200 0 MST} + {-661539600 -28800 0 PST} + {28800 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {915174000 -25200 0 MST} +} diff --git a/library/tzdata/America/Indiana/Indianapolis b/library/tzdata/America/Indiana/Indianapolis index 63c410c..2fe3912 100644 --- a/library/tzdata/America/Indiana/Indianapolis +++ b/library/tzdata/America/Indiana/Indianapolis @@ -1,234 +1,234 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Indianapolis) { - {-9223372036854775808 -20678 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-1577901600 -21600 0 CST} - {-900259200 -18000 1 CDT} - {-891795600 -21600 0 CST} - {-883591200 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620841600 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 0 EST} - {-386787600 -21600 0 CST} - {-368640000 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {31554000 -18000 0 EST} - {1136091600 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Indianapolis) { + {-9223372036854775808 -20678 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-1577901600 -21600 0 CST} + {-900259200 -18000 1 CDT} + {-891795600 -21600 0 CST} + {-883591200 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620841600 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 0 EST} + {-386787600 -21600 0 CST} + {-368640000 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {31554000 -18000 0 EST} + {1136091600 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Knox b/library/tzdata/America/Indiana/Knox index eee3ff4..235c075 100644 --- a/library/tzdata/America/Indiana/Knox +++ b/library/tzdata/America/Indiana/Knox @@ -1,285 +1,285 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Knox) { - {-9223372036854775808 -20790 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-725824800 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620841600 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-447267600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-415818000 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-321469200 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-257965200 -21600 0 CST} - {-242236800 -18000 0 EST} - {-195066000 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68662800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688550400 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Knox) { + {-9223372036854775808 -20790 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-725824800 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620841600 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-447267600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-415818000 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-321469200 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-257965200 -21600 0 CST} + {-242236800 -18000 0 EST} + {-195066000 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68662800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688550400 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Indiana/Marengo b/library/tzdata/America/Indiana/Marengo index 3f1d578..47e833e 100644 --- a/library/tzdata/America/Indiana/Marengo +++ b/library/tzdata/America/Indiana/Marengo @@ -1,236 +1,236 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Marengo) { - {-9223372036854775808 -20723 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-599594400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-292438800 -21600 0 CST} - {-273686400 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -18000 1 CDT} - {152089200 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {189320400 -18000 0 EST} - {1136091600 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Marengo) { + {-9223372036854775808 -20723 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-599594400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-292438800 -21600 0 CST} + {-273686400 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -18000 1 CDT} + {152089200 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {189320400 -18000 0 EST} + {1136091600 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Petersburg b/library/tzdata/America/Indiana/Petersburg index 6992bfc..15d5966 100755 --- a/library/tzdata/America/Indiana/Petersburg +++ b/library/tzdata/America/Indiana/Petersburg @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Petersburg) { - {-9223372036854775808 -20947 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-473364000 -21600 0 CST} - {-462996000 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-292438800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-257965200 -21600 0 CST} - {-242236800 -18000 1 CDT} - {-226515600 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-195066000 -21600 0 CST} - {-179337600 -18000 1 CDT} - {-163616400 -21600 0 CST} - {-147888000 -18000 0 EST} - {-100112400 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68662800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247046400 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194163200 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Petersburg) { + {-9223372036854775808 -20947 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-473364000 -21600 0 CST} + {-462996000 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-292438800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-257965200 -21600 0 CST} + {-242236800 -18000 1 CDT} + {-226515600 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-195066000 -21600 0 CST} + {-179337600 -18000 1 CDT} + {-163616400 -21600 0 CST} + {-147888000 -18000 0 EST} + {-100112400 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68662800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247046400 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194163200 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Tell_City b/library/tzdata/America/Indiana/Tell_City index 9eebcf7..4bf0fc0 100755 --- a/library/tzdata/America/Indiana/Tell_City +++ b/library/tzdata/America/Indiana/Tell_City @@ -1,234 +1,234 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Tell_City) { - {-9223372036854775808 -20823 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-462996000 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-260989200 -21600 0 CST} - {-242236800 -18000 1 CDT} - {-226515600 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-195066000 -21600 0 CST} - {-179337600 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {31554000 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Tell_City) { + {-9223372036854775808 -20823 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-462996000 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-260989200 -21600 0 CST} + {-242236800 -18000 1 CDT} + {-226515600 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-195066000 -21600 0 CST} + {-179337600 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {31554000 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Indiana/Vevay b/library/tzdata/America/Indiana/Vevay index 8d4157f..d0f8474 100644 --- a/library/tzdata/America/Indiana/Vevay +++ b/library/tzdata/America/Indiana/Vevay @@ -1,213 +1,213 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Vevay) { - {-9223372036854775808 -20416 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-495043200 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {94712400 -18000 0 EST} - {1136091600 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Vevay) { + {-9223372036854775808 -20416 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-495043200 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {94712400 -18000 0 EST} + {1136091600 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Vincennes b/library/tzdata/America/Indiana/Vincennes index 1af7fc9..0211a71 100755 --- a/library/tzdata/America/Indiana/Vincennes +++ b/library/tzdata/America/Indiana/Vincennes @@ -1,234 +1,234 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Vincennes) { - {-9223372036854775808 -21007 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-462996000 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-260989200 -21600 0 CST} - {-242236800 -18000 1 CDT} - {-226515600 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-195066000 -21600 0 CST} - {-179337600 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {31554000 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194163200 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Vincennes) { + {-9223372036854775808 -21007 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-462996000 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-260989200 -21600 0 CST} + {-242236800 -18000 1 CDT} + {-226515600 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-195066000 -21600 0 CST} + {-179337600 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {31554000 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194163200 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Winamac b/library/tzdata/America/Indiana/Winamac index fb6cd37..6cbe6eb 100755 --- a/library/tzdata/America/Indiana/Winamac +++ b/library/tzdata/America/Indiana/Winamac @@ -1,240 +1,240 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Winamac) { - {-9223372036854775808 -20785 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620841600 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-447267600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-415818000 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-292438800 -21600 0 CST} - {-273686400 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {31554000 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -14400 0 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Winamac) { + {-9223372036854775808 -20785 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620841600 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-447267600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-415818000 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-292438800 -21600 0 CST} + {-273686400 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {31554000 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -14400 0 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indianapolis b/library/tzdata/America/Indianapolis index 7398545..74ef61d 100644 --- a/library/tzdata/America/Indianapolis +++ b/library/tzdata/America/Indianapolis @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Indianapolis)]} { - LoadTimeZoneFile America/Indiana/Indianapolis -} -set TZData(:America/Indianapolis) $TZData(:America/Indiana/Indianapolis) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Indianapolis)]} { + LoadTimeZoneFile America/Indiana/Indianapolis +} +set TZData(:America/Indianapolis) $TZData(:America/Indiana/Indianapolis) diff --git a/library/tzdata/America/Inuvik b/library/tzdata/America/Inuvik index dd0d151..f24a10a 100644 --- a/library/tzdata/America/Inuvik +++ b/library/tzdata/America/Inuvik @@ -1,249 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Inuvik) { - {-9223372036854775808 0 0 zzz} - {-536457600 -28800 0 PST} - {-147888000 -21600 1 PDDT} - {-131558400 -28800 0 PST} - {315558000 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Inuvik) { + {-9223372036854775808 0 0 zzz} + {-536457600 -28800 0 PST} + {-147888000 -21600 1 PDDT} + {-131558400 -28800 0 PST} + {315558000 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Iqaluit b/library/tzdata/America/Iqaluit index 2a2e9fe..64a53cb 100644 --- a/library/tzdata/America/Iqaluit +++ b/library/tzdata/America/Iqaluit @@ -1,250 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Iqaluit) { - {-9223372036854775808 0 0 zzz} - {-865296000 -14400 0 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-147898800 -10800 1 EDDT} - {-131569200 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Iqaluit) { + {-9223372036854775808 0 0 zzz} + {-865296000 -14400 0 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-147898800 -10800 1 EDDT} + {-131569200 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Jamaica b/library/tzdata/America/Jamaica index 393d90a8..3625c4a 100644 --- a/library/tzdata/America/Jamaica +++ b/library/tzdata/America/Jamaica @@ -1,28 +1,28 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Jamaica) { - {-9223372036854775808 -18432 0 LMT} - {-2524503168 -18432 0 KMT} - {-1827687168 -18000 0 EST} - {136364400 -14400 0 EDT} - {152085600 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {441781200 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Jamaica) { + {-9223372036854775808 -18432 0 LMT} + {-2524503168 -18432 0 KMT} + {-1827687168 -18000 0 EST} + {136364400 -14400 0 EDT} + {152085600 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {441781200 -18000 0 EST} +} diff --git a/library/tzdata/America/Jujuy b/library/tzdata/America/Jujuy index b4c5da3..737dc37 100644 --- a/library/tzdata/America/Jujuy +++ b/library/tzdata/America/Jujuy @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Jujuy)]} { - LoadTimeZoneFile America/Argentina/Jujuy -} -set TZData(:America/Jujuy) $TZData(:America/Argentina/Jujuy) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Jujuy)]} { + LoadTimeZoneFile America/Argentina/Jujuy +} +set TZData(:America/Jujuy) $TZData(:America/Argentina/Jujuy) diff --git a/library/tzdata/America/Juneau b/library/tzdata/America/Juneau index 88fe0ce..b8e88ca 100644 --- a/library/tzdata/America/Juneau +++ b/library/tzdata/America/Juneau @@ -1,275 +1,275 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Juneau) { - {-9223372036854775808 54139 0 LMT} - {-3225366139 -32261 0 LMT} - {-2188954939 -28800 0 PST} - {-883584000 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-757353600 -28800 0 PST} - {-31507200 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {89197200 -28800 0 PST} - {104925600 -25200 1 PDT} - {120646800 -28800 0 PST} - {126698400 -25200 1 PDT} - {152096400 -28800 0 PST} - {162381600 -25200 1 PDT} - {183546000 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {439030800 -32400 0 AKST} - {452084400 -28800 1 AKDT} - {467805600 -32400 0 AKST} - {483534000 -28800 1 AKDT} - {499255200 -32400 0 AKST} - {514983600 -28800 1 AKDT} - {530704800 -32400 0 AKST} - {544618800 -28800 1 AKDT} - {562154400 -32400 0 AKST} - {576068400 -28800 1 AKDT} - {594208800 -32400 0 AKST} - {607518000 -28800 1 AKDT} - {625658400 -32400 0 AKST} - {638967600 -28800 1 AKDT} - {657108000 -32400 0 AKST} - {671022000 -28800 1 AKDT} - {688557600 -32400 0 AKST} - {702471600 -28800 1 AKDT} - {720007200 -32400 0 AKST} - {733921200 -28800 1 AKDT} - {752061600 -32400 0 AKST} - {765370800 -28800 1 AKDT} - {783511200 -32400 0 AKST} - {796820400 -28800 1 AKDT} - {814960800 -32400 0 AKST} - {828874800 -28800 1 AKDT} - {846410400 -32400 0 AKST} - {860324400 -28800 1 AKDT} - {877860000 -32400 0 AKST} - {891774000 -28800 1 AKDT} - {909309600 -32400 0 AKST} - {923223600 -28800 1 AKDT} - {941364000 -32400 0 AKST} - {954673200 -28800 1 AKDT} - {972813600 -32400 0 AKST} - {986122800 -28800 1 AKDT} - {1004263200 -32400 0 AKST} - {1018177200 -28800 1 AKDT} - {1035712800 -32400 0 AKST} - {1049626800 -28800 1 AKDT} - {1067162400 -32400 0 AKST} - {1081076400 -28800 1 AKDT} - {1099216800 -32400 0 AKST} - {1112526000 -28800 1 AKDT} - {1130666400 -32400 0 AKST} - {1143975600 -28800 1 AKDT} - {1162116000 -32400 0 AKST} - {1173610800 -28800 1 AKDT} - {1194170400 -32400 0 AKST} - {1205060400 -28800 1 AKDT} - {1225620000 -32400 0 AKST} - {1236510000 -28800 1 AKDT} - {1257069600 -32400 0 AKST} - {1268564400 -28800 1 AKDT} - {1289124000 -32400 0 AKST} - {1300014000 -28800 1 AKDT} - {1320573600 -32400 0 AKST} - {1331463600 -28800 1 AKDT} - {1352023200 -32400 0 AKST} - {1362913200 -28800 1 AKDT} - {1383472800 -32400 0 AKST} - {1394362800 -28800 1 AKDT} - {1414922400 -32400 0 AKST} - {1425812400 -28800 1 AKDT} - {1446372000 -32400 0 AKST} - {1457866800 -28800 1 AKDT} - {1478426400 -32400 0 AKST} - {1489316400 -28800 1 AKDT} - {1509876000 -32400 0 AKST} - {1520766000 -28800 1 AKDT} - {1541325600 -32400 0 AKST} - {1552215600 -28800 1 AKDT} - {1572775200 -32400 0 AKST} - {1583665200 -28800 1 AKDT} - {1604224800 -32400 0 AKST} - {1615719600 -28800 1 AKDT} - {1636279200 -32400 0 AKST} - {1647169200 -28800 1 AKDT} - {1667728800 -32400 0 AKST} - {1678618800 -28800 1 AKDT} - {1699178400 -32400 0 AKST} - {1710068400 -28800 1 AKDT} - {1730628000 -32400 0 AKST} - {1741518000 -28800 1 AKDT} - {1762077600 -32400 0 AKST} - {1772967600 -28800 1 AKDT} - {1793527200 -32400 0 AKST} - {1805022000 -28800 1 AKDT} - {1825581600 -32400 0 AKST} - {1836471600 -28800 1 AKDT} - {1857031200 -32400 0 AKST} - {1867921200 -28800 1 AKDT} - {1888480800 -32400 0 AKST} - {1899370800 -28800 1 AKDT} - {1919930400 -32400 0 AKST} - {1930820400 -28800 1 AKDT} - {1951380000 -32400 0 AKST} - {1962874800 -28800 1 AKDT} - {1983434400 -32400 0 AKST} - {1994324400 -28800 1 AKDT} - {2014884000 -32400 0 AKST} - {2025774000 -28800 1 AKDT} - {2046333600 -32400 0 AKST} - {2057223600 -28800 1 AKDT} - {2077783200 -32400 0 AKST} - {2088673200 -28800 1 AKDT} - {2109232800 -32400 0 AKST} - {2120122800 -28800 1 AKDT} - {2140682400 -32400 0 AKST} - {2152177200 -28800 1 AKDT} - {2172736800 -32400 0 AKST} - {2183626800 -28800 1 AKDT} - {2204186400 -32400 0 AKST} - {2215076400 -28800 1 AKDT} - {2235636000 -32400 0 AKST} - {2246526000 -28800 1 AKDT} - {2267085600 -32400 0 AKST} - {2277975600 -28800 1 AKDT} - {2298535200 -32400 0 AKST} - {2309425200 -28800 1 AKDT} - {2329984800 -32400 0 AKST} - {2341479600 -28800 1 AKDT} - {2362039200 -32400 0 AKST} - {2372929200 -28800 1 AKDT} - {2393488800 -32400 0 AKST} - {2404378800 -28800 1 AKDT} - {2424938400 -32400 0 AKST} - {2435828400 -28800 1 AKDT} - {2456388000 -32400 0 AKST} - {2467278000 -28800 1 AKDT} - {2487837600 -32400 0 AKST} - {2499332400 -28800 1 AKDT} - {2519892000 -32400 0 AKST} - {2530782000 -28800 1 AKDT} - {2551341600 -32400 0 AKST} - {2562231600 -28800 1 AKDT} - {2582791200 -32400 0 AKST} - {2593681200 -28800 1 AKDT} - {2614240800 -32400 0 AKST} - {2625130800 -28800 1 AKDT} - {2645690400 -32400 0 AKST} - {2656580400 -28800 1 AKDT} - {2677140000 -32400 0 AKST} - {2688634800 -28800 1 AKDT} - {2709194400 -32400 0 AKST} - {2720084400 -28800 1 AKDT} - {2740644000 -32400 0 AKST} - {2751534000 -28800 1 AKDT} - {2772093600 -32400 0 AKST} - {2782983600 -28800 1 AKDT} - {2803543200 -32400 0 AKST} - {2814433200 -28800 1 AKDT} - {2834992800 -32400 0 AKST} - {2846487600 -28800 1 AKDT} - {2867047200 -32400 0 AKST} - {2877937200 -28800 1 AKDT} - {2898496800 -32400 0 AKST} - {2909386800 -28800 1 AKDT} - {2929946400 -32400 0 AKST} - {2940836400 -28800 1 AKDT} - {2961396000 -32400 0 AKST} - {2972286000 -28800 1 AKDT} - {2992845600 -32400 0 AKST} - {3003735600 -28800 1 AKDT} - {3024295200 -32400 0 AKST} - {3035790000 -28800 1 AKDT} - {3056349600 -32400 0 AKST} - {3067239600 -28800 1 AKDT} - {3087799200 -32400 0 AKST} - {3098689200 -28800 1 AKDT} - {3119248800 -32400 0 AKST} - {3130138800 -28800 1 AKDT} - {3150698400 -32400 0 AKST} - {3161588400 -28800 1 AKDT} - {3182148000 -32400 0 AKST} - {3193038000 -28800 1 AKDT} - {3213597600 -32400 0 AKST} - {3225092400 -28800 1 AKDT} - {3245652000 -32400 0 AKST} - {3256542000 -28800 1 AKDT} - {3277101600 -32400 0 AKST} - {3287991600 -28800 1 AKDT} - {3308551200 -32400 0 AKST} - {3319441200 -28800 1 AKDT} - {3340000800 -32400 0 AKST} - {3350890800 -28800 1 AKDT} - {3371450400 -32400 0 AKST} - {3382945200 -28800 1 AKDT} - {3403504800 -32400 0 AKST} - {3414394800 -28800 1 AKDT} - {3434954400 -32400 0 AKST} - {3445844400 -28800 1 AKDT} - {3466404000 -32400 0 AKST} - {3477294000 -28800 1 AKDT} - {3497853600 -32400 0 AKST} - {3508743600 -28800 1 AKDT} - {3529303200 -32400 0 AKST} - {3540193200 -28800 1 AKDT} - {3560752800 -32400 0 AKST} - {3572247600 -28800 1 AKDT} - {3592807200 -32400 0 AKST} - {3603697200 -28800 1 AKDT} - {3624256800 -32400 0 AKST} - {3635146800 -28800 1 AKDT} - {3655706400 -32400 0 AKST} - {3666596400 -28800 1 AKDT} - {3687156000 -32400 0 AKST} - {3698046000 -28800 1 AKDT} - {3718605600 -32400 0 AKST} - {3730100400 -28800 1 AKDT} - {3750660000 -32400 0 AKST} - {3761550000 -28800 1 AKDT} - {3782109600 -32400 0 AKST} - {3792999600 -28800 1 AKDT} - {3813559200 -32400 0 AKST} - {3824449200 -28800 1 AKDT} - {3845008800 -32400 0 AKST} - {3855898800 -28800 1 AKDT} - {3876458400 -32400 0 AKST} - {3887348400 -28800 1 AKDT} - {3907908000 -32400 0 AKST} - {3919402800 -28800 1 AKDT} - {3939962400 -32400 0 AKST} - {3950852400 -28800 1 AKDT} - {3971412000 -32400 0 AKST} - {3982302000 -28800 1 AKDT} - {4002861600 -32400 0 AKST} - {4013751600 -28800 1 AKDT} - {4034311200 -32400 0 AKST} - {4045201200 -28800 1 AKDT} - {4065760800 -32400 0 AKST} - {4076650800 -28800 1 AKDT} - {4097210400 -32400 0 AKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Juneau) { + {-9223372036854775808 54139 0 LMT} + {-3225366139 -32261 0 LMT} + {-2188954939 -28800 0 PST} + {-883584000 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-757353600 -28800 0 PST} + {-31507200 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {126698400 -25200 1 PDT} + {152096400 -28800 0 PST} + {162381600 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {439030800 -32400 0 AKST} + {452084400 -28800 1 AKDT} + {467805600 -32400 0 AKST} + {483534000 -28800 1 AKDT} + {499255200 -32400 0 AKST} + {514983600 -28800 1 AKDT} + {530704800 -32400 0 AKST} + {544618800 -28800 1 AKDT} + {562154400 -32400 0 AKST} + {576068400 -28800 1 AKDT} + {594208800 -32400 0 AKST} + {607518000 -28800 1 AKDT} + {625658400 -32400 0 AKST} + {638967600 -28800 1 AKDT} + {657108000 -32400 0 AKST} + {671022000 -28800 1 AKDT} + {688557600 -32400 0 AKST} + {702471600 -28800 1 AKDT} + {720007200 -32400 0 AKST} + {733921200 -28800 1 AKDT} + {752061600 -32400 0 AKST} + {765370800 -28800 1 AKDT} + {783511200 -32400 0 AKST} + {796820400 -28800 1 AKDT} + {814960800 -32400 0 AKST} + {828874800 -28800 1 AKDT} + {846410400 -32400 0 AKST} + {860324400 -28800 1 AKDT} + {877860000 -32400 0 AKST} + {891774000 -28800 1 AKDT} + {909309600 -32400 0 AKST} + {923223600 -28800 1 AKDT} + {941364000 -32400 0 AKST} + {954673200 -28800 1 AKDT} + {972813600 -32400 0 AKST} + {986122800 -28800 1 AKDT} + {1004263200 -32400 0 AKST} + {1018177200 -28800 1 AKDT} + {1035712800 -32400 0 AKST} + {1049626800 -28800 1 AKDT} + {1067162400 -32400 0 AKST} + {1081076400 -28800 1 AKDT} + {1099216800 -32400 0 AKST} + {1112526000 -28800 1 AKDT} + {1130666400 -32400 0 AKST} + {1143975600 -28800 1 AKDT} + {1162116000 -32400 0 AKST} + {1173610800 -28800 1 AKDT} + {1194170400 -32400 0 AKST} + {1205060400 -28800 1 AKDT} + {1225620000 -32400 0 AKST} + {1236510000 -28800 1 AKDT} + {1257069600 -32400 0 AKST} + {1268564400 -28800 1 AKDT} + {1289124000 -32400 0 AKST} + {1300014000 -28800 1 AKDT} + {1320573600 -32400 0 AKST} + {1331463600 -28800 1 AKDT} + {1352023200 -32400 0 AKST} + {1362913200 -28800 1 AKDT} + {1383472800 -32400 0 AKST} + {1394362800 -28800 1 AKDT} + {1414922400 -32400 0 AKST} + {1425812400 -28800 1 AKDT} + {1446372000 -32400 0 AKST} + {1457866800 -28800 1 AKDT} + {1478426400 -32400 0 AKST} + {1489316400 -28800 1 AKDT} + {1509876000 -32400 0 AKST} + {1520766000 -28800 1 AKDT} + {1541325600 -32400 0 AKST} + {1552215600 -28800 1 AKDT} + {1572775200 -32400 0 AKST} + {1583665200 -28800 1 AKDT} + {1604224800 -32400 0 AKST} + {1615719600 -28800 1 AKDT} + {1636279200 -32400 0 AKST} + {1647169200 -28800 1 AKDT} + {1667728800 -32400 0 AKST} + {1678618800 -28800 1 AKDT} + {1699178400 -32400 0 AKST} + {1710068400 -28800 1 AKDT} + {1730628000 -32400 0 AKST} + {1741518000 -28800 1 AKDT} + {1762077600 -32400 0 AKST} + {1772967600 -28800 1 AKDT} + {1793527200 -32400 0 AKST} + {1805022000 -28800 1 AKDT} + {1825581600 -32400 0 AKST} + {1836471600 -28800 1 AKDT} + {1857031200 -32400 0 AKST} + {1867921200 -28800 1 AKDT} + {1888480800 -32400 0 AKST} + {1899370800 -28800 1 AKDT} + {1919930400 -32400 0 AKST} + {1930820400 -28800 1 AKDT} + {1951380000 -32400 0 AKST} + {1962874800 -28800 1 AKDT} + {1983434400 -32400 0 AKST} + {1994324400 -28800 1 AKDT} + {2014884000 -32400 0 AKST} + {2025774000 -28800 1 AKDT} + {2046333600 -32400 0 AKST} + {2057223600 -28800 1 AKDT} + {2077783200 -32400 0 AKST} + {2088673200 -28800 1 AKDT} + {2109232800 -32400 0 AKST} + {2120122800 -28800 1 AKDT} + {2140682400 -32400 0 AKST} + {2152177200 -28800 1 AKDT} + {2172736800 -32400 0 AKST} + {2183626800 -28800 1 AKDT} + {2204186400 -32400 0 AKST} + {2215076400 -28800 1 AKDT} + {2235636000 -32400 0 AKST} + {2246526000 -28800 1 AKDT} + {2267085600 -32400 0 AKST} + {2277975600 -28800 1 AKDT} + {2298535200 -32400 0 AKST} + {2309425200 -28800 1 AKDT} + {2329984800 -32400 0 AKST} + {2341479600 -28800 1 AKDT} + {2362039200 -32400 0 AKST} + {2372929200 -28800 1 AKDT} + {2393488800 -32400 0 AKST} + {2404378800 -28800 1 AKDT} + {2424938400 -32400 0 AKST} + {2435828400 -28800 1 AKDT} + {2456388000 -32400 0 AKST} + {2467278000 -28800 1 AKDT} + {2487837600 -32400 0 AKST} + {2499332400 -28800 1 AKDT} + {2519892000 -32400 0 AKST} + {2530782000 -28800 1 AKDT} + {2551341600 -32400 0 AKST} + {2562231600 -28800 1 AKDT} + {2582791200 -32400 0 AKST} + {2593681200 -28800 1 AKDT} + {2614240800 -32400 0 AKST} + {2625130800 -28800 1 AKDT} + {2645690400 -32400 0 AKST} + {2656580400 -28800 1 AKDT} + {2677140000 -32400 0 AKST} + {2688634800 -28800 1 AKDT} + {2709194400 -32400 0 AKST} + {2720084400 -28800 1 AKDT} + {2740644000 -32400 0 AKST} + {2751534000 -28800 1 AKDT} + {2772093600 -32400 0 AKST} + {2782983600 -28800 1 AKDT} + {2803543200 -32400 0 AKST} + {2814433200 -28800 1 AKDT} + {2834992800 -32400 0 AKST} + {2846487600 -28800 1 AKDT} + {2867047200 -32400 0 AKST} + {2877937200 -28800 1 AKDT} + {2898496800 -32400 0 AKST} + {2909386800 -28800 1 AKDT} + {2929946400 -32400 0 AKST} + {2940836400 -28800 1 AKDT} + {2961396000 -32400 0 AKST} + {2972286000 -28800 1 AKDT} + {2992845600 -32400 0 AKST} + {3003735600 -28800 1 AKDT} + {3024295200 -32400 0 AKST} + {3035790000 -28800 1 AKDT} + {3056349600 -32400 0 AKST} + {3067239600 -28800 1 AKDT} + {3087799200 -32400 0 AKST} + {3098689200 -28800 1 AKDT} + {3119248800 -32400 0 AKST} + {3130138800 -28800 1 AKDT} + {3150698400 -32400 0 AKST} + {3161588400 -28800 1 AKDT} + {3182148000 -32400 0 AKST} + {3193038000 -28800 1 AKDT} + {3213597600 -32400 0 AKST} + {3225092400 -28800 1 AKDT} + {3245652000 -32400 0 AKST} + {3256542000 -28800 1 AKDT} + {3277101600 -32400 0 AKST} + {3287991600 -28800 1 AKDT} + {3308551200 -32400 0 AKST} + {3319441200 -28800 1 AKDT} + {3340000800 -32400 0 AKST} + {3350890800 -28800 1 AKDT} + {3371450400 -32400 0 AKST} + {3382945200 -28800 1 AKDT} + {3403504800 -32400 0 AKST} + {3414394800 -28800 1 AKDT} + {3434954400 -32400 0 AKST} + {3445844400 -28800 1 AKDT} + {3466404000 -32400 0 AKST} + {3477294000 -28800 1 AKDT} + {3497853600 -32400 0 AKST} + {3508743600 -28800 1 AKDT} + {3529303200 -32400 0 AKST} + {3540193200 -28800 1 AKDT} + {3560752800 -32400 0 AKST} + {3572247600 -28800 1 AKDT} + {3592807200 -32400 0 AKST} + {3603697200 -28800 1 AKDT} + {3624256800 -32400 0 AKST} + {3635146800 -28800 1 AKDT} + {3655706400 -32400 0 AKST} + {3666596400 -28800 1 AKDT} + {3687156000 -32400 0 AKST} + {3698046000 -28800 1 AKDT} + {3718605600 -32400 0 AKST} + {3730100400 -28800 1 AKDT} + {3750660000 -32400 0 AKST} + {3761550000 -28800 1 AKDT} + {3782109600 -32400 0 AKST} + {3792999600 -28800 1 AKDT} + {3813559200 -32400 0 AKST} + {3824449200 -28800 1 AKDT} + {3845008800 -32400 0 AKST} + {3855898800 -28800 1 AKDT} + {3876458400 -32400 0 AKST} + {3887348400 -28800 1 AKDT} + {3907908000 -32400 0 AKST} + {3919402800 -28800 1 AKDT} + {3939962400 -32400 0 AKST} + {3950852400 -28800 1 AKDT} + {3971412000 -32400 0 AKST} + {3982302000 -28800 1 AKDT} + {4002861600 -32400 0 AKST} + {4013751600 -28800 1 AKDT} + {4034311200 -32400 0 AKST} + {4045201200 -28800 1 AKDT} + {4065760800 -32400 0 AKST} + {4076650800 -28800 1 AKDT} + {4097210400 -32400 0 AKST} +} diff --git a/library/tzdata/America/Kentucky/Louisville b/library/tzdata/America/Kentucky/Louisville index c2aa10c..5b18b03 100644 --- a/library/tzdata/America/Kentucky/Louisville +++ b/library/tzdata/America/Kentucky/Louisville @@ -1,314 +1,314 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Kentucky/Louisville) { - {-9223372036854775808 -20582 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-1546279200 -21600 0 CST} - {-1535904000 -18000 1 CDT} - {-1525280400 -21600 0 CST} - {-905097600 -18000 1 CDT} - {-891795600 -21600 0 CST} - {-883591200 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-744224400 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-684349200 -18000 1 CDT} - {-652899600 -18000 1 CDT} - {-620845200 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-415818000 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-384368400 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-352918800 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-321469200 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-266432400 -18000 0 EST} - {-63140400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -18000 1 CDT} - {152089200 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Kentucky/Louisville) { + {-9223372036854775808 -20582 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-1546279200 -21600 0 CST} + {-1535904000 -18000 1 CDT} + {-1525280400 -21600 0 CST} + {-905097600 -18000 1 CDT} + {-891795600 -21600 0 CST} + {-883591200 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-744224400 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-684349200 -18000 1 CDT} + {-652899600 -18000 1 CDT} + {-620845200 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-415818000 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-384368400 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-352918800 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-321469200 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-266432400 -18000 0 EST} + {-63140400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -18000 1 CDT} + {152089200 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Kentucky/Monticello b/library/tzdata/America/Kentucky/Monticello index e523ecb..84ae4b5 100644 --- a/library/tzdata/America/Kentucky/Monticello +++ b/library/tzdata/America/Kentucky/Monticello @@ -1,279 +1,279 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Kentucky/Monticello) { - {-9223372036854775808 -20364 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-63136800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Kentucky/Monticello) { + {-9223372036854775808 -20364 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-63136800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Knox_IN b/library/tzdata/America/Knox_IN index 00d21c0..e0a5cef 100644 --- a/library/tzdata/America/Knox_IN +++ b/library/tzdata/America/Knox_IN @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Knox)]} { - LoadTimeZoneFile America/Indiana/Knox -} -set TZData(:America/Knox_IN) $TZData(:America/Indiana/Knox) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Knox)]} { + LoadTimeZoneFile America/Indiana/Knox +} +set TZData(:America/Knox_IN) $TZData(:America/Indiana/Knox) diff --git a/library/tzdata/America/La_Paz b/library/tzdata/America/La_Paz index 38ffbb0..6480cfa 100644 --- a/library/tzdata/America/La_Paz +++ b/library/tzdata/America/La_Paz @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/La_Paz) { - {-9223372036854775808 -16356 0 LMT} - {-2524505244 -16356 0 CMT} - {-1205954844 -12756 1 BOST} - {-1192307244 -14400 0 BOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/La_Paz) { + {-9223372036854775808 -16356 0 LMT} + {-2524505244 -16356 0 CMT} + {-1205954844 -12756 1 BOST} + {-1192307244 -14400 0 BOT} +} diff --git a/library/tzdata/America/Lima b/library/tzdata/America/Lima index c6e6ac1..3e5dcf8 100644 --- a/library/tzdata/America/Lima +++ b/library/tzdata/America/Lima @@ -1,16 +1,16 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Lima) { - {-9223372036854775808 -18492 0 LMT} - {-2524503108 -18516 0 LMT} - {-1938538284 -14400 0 PEST} - {-1002052800 -18000 0 PET} - {-986756400 -14400 1 PEST} - {-971035200 -18000 0 PET} - {-955306800 -14400 1 PEST} - {-939585600 -18000 0 PET} - {512712000 -18000 0 PET} - {544248000 -18000 0 PET} - {638942400 -18000 0 PET} - {765172800 -18000 0 PET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Lima) { + {-9223372036854775808 -18492 0 LMT} + {-2524503108 -18516 0 LMT} + {-1938538284 -14400 0 PEST} + {-1002052800 -18000 0 PET} + {-986756400 -14400 1 PEST} + {-971035200 -18000 0 PET} + {-955306800 -14400 1 PEST} + {-939585600 -18000 0 PET} + {512712000 -18000 0 PET} + {544248000 -18000 0 PET} + {638942400 -18000 0 PET} + {765172800 -18000 0 PET} +} diff --git a/library/tzdata/America/Los_Angeles b/library/tzdata/America/Los_Angeles index da6ca99..d8dab61 100644 --- a/library/tzdata/America/Los_Angeles +++ b/library/tzdata/America/Los_Angeles @@ -1,317 +1,317 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Los_Angeles) { - {-9223372036854775808 -28378 0 LMT} - {-2717640000 -28800 0 PST} - {-1633269600 -25200 1 PDT} - {-1615129200 -28800 0 PST} - {-1601820000 -25200 1 PDT} - {-1583679600 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-757353600 -28800 0 PST} - {-687967200 -25200 1 PDT} - {-662655600 -28800 0 PST} - {-620834400 -25200 1 PDT} - {-608137200 -28800 0 PST} - {-589384800 -25200 1 PDT} - {-576082800 -28800 0 PST} - {-557935200 -25200 1 PDT} - {-544633200 -28800 0 PST} - {-526485600 -25200 1 PDT} - {-513183600 -28800 0 PST} - {-495036000 -25200 1 PDT} - {-481734000 -28800 0 PST} - {-463586400 -25200 1 PDT} - {-450284400 -28800 0 PST} - {-431532000 -25200 1 PDT} - {-418230000 -28800 0 PST} - {-400082400 -25200 1 PDT} - {-386780400 -28800 0 PST} - {-368632800 -25200 1 PDT} - {-355330800 -28800 0 PST} - {-337183200 -25200 1 PDT} - {-323881200 -28800 0 PST} - {-305733600 -25200 1 PDT} - {-292431600 -28800 0 PST} - {-273679200 -25200 1 PDT} - {-260982000 -28800 0 PST} - {-242229600 -25200 1 PDT} - {-226508400 -28800 0 PST} - {-210780000 -25200 1 PDT} - {-195058800 -28800 0 PST} - {-179330400 -25200 1 PDT} - {-163609200 -28800 0 PST} - {-147880800 -25200 1 PDT} - {-131554800 -28800 0 PST} - {-116431200 -25200 1 PDT} - {-100105200 -28800 0 PST} - {-94665600 -28800 0 PST} - {-84376800 -25200 1 PDT} - {-68655600 -28800 0 PST} - {-52927200 -25200 1 PDT} - {-37206000 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {89197200 -28800 0 PST} - {104925600 -25200 1 PDT} - {120646800 -28800 0 PST} - {126698400 -25200 1 PDT} - {152096400 -28800 0 PST} - {162381600 -25200 1 PDT} - {183546000 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Los_Angeles) { + {-9223372036854775808 -28378 0 LMT} + {-2717640000 -28800 0 PST} + {-1633269600 -25200 1 PDT} + {-1615129200 -28800 0 PST} + {-1601820000 -25200 1 PDT} + {-1583679600 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-757353600 -28800 0 PST} + {-687967200 -25200 1 PDT} + {-662655600 -28800 0 PST} + {-620834400 -25200 1 PDT} + {-608137200 -28800 0 PST} + {-589384800 -25200 1 PDT} + {-576082800 -28800 0 PST} + {-557935200 -25200 1 PDT} + {-544633200 -28800 0 PST} + {-526485600 -25200 1 PDT} + {-513183600 -28800 0 PST} + {-495036000 -25200 1 PDT} + {-481734000 -28800 0 PST} + {-463586400 -25200 1 PDT} + {-450284400 -28800 0 PST} + {-431532000 -25200 1 PDT} + {-418230000 -28800 0 PST} + {-400082400 -25200 1 PDT} + {-386780400 -28800 0 PST} + {-368632800 -25200 1 PDT} + {-355330800 -28800 0 PST} + {-337183200 -25200 1 PDT} + {-323881200 -28800 0 PST} + {-305733600 -25200 1 PDT} + {-292431600 -28800 0 PST} + {-273679200 -25200 1 PDT} + {-260982000 -28800 0 PST} + {-242229600 -25200 1 PDT} + {-226508400 -28800 0 PST} + {-210780000 -25200 1 PDT} + {-195058800 -28800 0 PST} + {-179330400 -25200 1 PDT} + {-163609200 -28800 0 PST} + {-147880800 -25200 1 PDT} + {-131554800 -28800 0 PST} + {-116431200 -25200 1 PDT} + {-100105200 -28800 0 PST} + {-94665600 -28800 0 PST} + {-84376800 -25200 1 PDT} + {-68655600 -28800 0 PST} + {-52927200 -25200 1 PDT} + {-37206000 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {126698400 -25200 1 PDT} + {152096400 -28800 0 PST} + {162381600 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/America/Louisville b/library/tzdata/America/Louisville index c5a3e1c..8b3171f 100644 --- a/library/tzdata/America/Louisville +++ b/library/tzdata/America/Louisville @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Kentucky/Louisville)]} { - LoadTimeZoneFile America/Kentucky/Louisville -} -set TZData(:America/Louisville) $TZData(:America/Kentucky/Louisville) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Kentucky/Louisville)]} { + LoadTimeZoneFile America/Kentucky/Louisville +} +set TZData(:America/Louisville) $TZData(:America/Kentucky/Louisville) diff --git a/library/tzdata/America/Maceio b/library/tzdata/America/Maceio index 333b878..93b9fc9 100644 --- a/library/tzdata/America/Maceio +++ b/library/tzdata/America/Maceio @@ -1,52 +1,52 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Maceio) { - {-9223372036854775808 -8572 0 LMT} - {-1767217028 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {653536800 -10800 0 BRT} - {813553200 -10800 0 BRT} - {813726000 -7200 1 BRST} - {824004000 -10800 0 BRT} - {841802400 -10800 0 BRT} - {938660400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {972180000 -10800 0 BRT} - {1000350000 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1033437600 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Maceio) { + {-9223372036854775808 -8572 0 LMT} + {-1767217028 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {653536800 -10800 0 BRT} + {813553200 -10800 0 BRT} + {813726000 -7200 1 BRST} + {824004000 -10800 0 BRT} + {841802400 -10800 0 BRT} + {938660400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {972180000 -10800 0 BRT} + {1000350000 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1033437600 -10800 0 BRT} +} diff --git a/library/tzdata/America/Managua b/library/tzdata/America/Managua index f729b8a..a1ceee8 100644 --- a/library/tzdata/America/Managua +++ b/library/tzdata/America/Managua @@ -1,21 +1,21 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Managua) { - {-9223372036854775808 -20708 0 LMT} - {-2524500892 -20712 0 MMT} - {-1121105688 -21600 0 CST} - {105084000 -18000 0 EST} - {161758800 -21600 0 CST} - {290584800 -18000 1 CDT} - {299134800 -21600 0 CST} - {322034400 -18000 1 CDT} - {330584400 -21600 0 CST} - {694260000 -18000 0 EST} - {717310800 -21600 0 CST} - {725868000 -18000 0 EST} - {852094800 -21600 0 CST} - {1113112800 -18000 1 CDT} - {1128229200 -21600 0 CST} - {1146384000 -18000 1 CDT} - {1159682400 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Managua) { + {-9223372036854775808 -20708 0 LMT} + {-2524500892 -20712 0 MMT} + {-1121105688 -21600 0 CST} + {105084000 -18000 0 EST} + {161758800 -21600 0 CST} + {290584800 -18000 1 CDT} + {299134800 -21600 0 CST} + {322034400 -18000 1 CDT} + {330584400 -21600 0 CST} + {694260000 -18000 0 EST} + {717310800 -21600 0 CST} + {725868000 -18000 0 EST} + {852094800 -21600 0 CST} + {1113112800 -18000 1 CDT} + {1128229200 -21600 0 CST} + {1146384000 -18000 1 CDT} + {1159682400 -21600 0 CST} +} diff --git a/library/tzdata/America/Manaus b/library/tzdata/America/Manaus index 058e0f7..9377e7f 100644 --- a/library/tzdata/America/Manaus +++ b/library/tzdata/America/Manaus @@ -1,39 +1,39 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Manaus) { - {-9223372036854775808 -14404 0 LMT} - {-1767211196 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {590036400 -14400 0 AMT} - {749188800 -14400 0 AMT} - {750830400 -10800 1 AMST} - {761713200 -14400 0 AMT} - {780202800 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Manaus) { + {-9223372036854775808 -14404 0 LMT} + {-1767211196 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {590036400 -14400 0 AMT} + {749188800 -14400 0 AMT} + {750830400 -10800 1 AMST} + {761713200 -14400 0 AMT} + {780202800 -14400 0 AMT} +} diff --git a/library/tzdata/America/Marigot b/library/tzdata/America/Marigot index 9f3f8f6..cf7949f 100644 --- a/library/tzdata/America/Marigot +++ b/library/tzdata/America/Marigot @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Guadeloupe)]} { - LoadTimeZoneFile America/Guadeloupe -} -set TZData(:America/Marigot) $TZData(:America/Guadeloupe) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Guadeloupe)]} { + LoadTimeZoneFile America/Guadeloupe +} +set TZData(:America/Marigot) $TZData(:America/Guadeloupe) diff --git a/library/tzdata/America/Martinique b/library/tzdata/America/Martinique index 1f1b491..7927785 100644 --- a/library/tzdata/America/Martinique +++ b/library/tzdata/America/Martinique @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Martinique) { - {-9223372036854775808 -14660 0 LMT} - {-2524506940 -14660 0 FFMT} - {-1851537340 -14400 0 AST} - {323841600 -10800 1 ADT} - {338958000 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Martinique) { + {-9223372036854775808 -14660 0 LMT} + {-2524506940 -14660 0 FFMT} + {-1851537340 -14400 0 AST} + {323841600 -10800 1 ADT} + {338958000 -14400 0 AST} +} diff --git a/library/tzdata/America/Mazatlan b/library/tzdata/America/Mazatlan index e56d7d0..051f9fe 100644 --- a/library/tzdata/America/Mazatlan +++ b/library/tzdata/America/Mazatlan @@ -1,222 +1,222 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Mazatlan) { - {-9223372036854775808 -25540 0 LMT} - {-1514739600 -25200 0 MST} - {-1343066400 -21600 0 CST} - {-1234807200 -25200 0 MST} - {-1220292000 -21600 0 CST} - {-1207159200 -25200 0 MST} - {-1191344400 -21600 0 CST} - {-873828000 -25200 0 MST} - {-661539600 -28800 0 PST} - {28800 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {989139600 -21600 1 MDT} - {1001836800 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1175418000 -21600 1 MDT} - {1193558400 -25200 0 MST} - {1207472400 -21600 1 MDT} - {1225008000 -25200 0 MST} - {1238922000 -21600 1 MDT} - {1256457600 -25200 0 MST} - {1270371600 -21600 1 MDT} - {1288512000 -25200 0 MST} - {1301821200 -21600 1 MDT} - {1319961600 -25200 0 MST} - {1333270800 -21600 1 MDT} - {1351411200 -25200 0 MST} - {1365325200 -21600 1 MDT} - {1382860800 -25200 0 MST} - {1396774800 -21600 1 MDT} - {1414310400 -25200 0 MST} - {1428224400 -21600 1 MDT} - {1445760000 -25200 0 MST} - {1459674000 -21600 1 MDT} - {1477814400 -25200 0 MST} - {1491123600 -21600 1 MDT} - {1509264000 -25200 0 MST} - {1522573200 -21600 1 MDT} - {1540713600 -25200 0 MST} - {1554627600 -21600 1 MDT} - {1572163200 -25200 0 MST} - {1586077200 -21600 1 MDT} - {1603612800 -25200 0 MST} - {1617526800 -21600 1 MDT} - {1635667200 -25200 0 MST} - {1648976400 -21600 1 MDT} - {1667116800 -25200 0 MST} - {1680426000 -21600 1 MDT} - {1698566400 -25200 0 MST} - {1712480400 -21600 1 MDT} - {1730016000 -25200 0 MST} - {1743930000 -21600 1 MDT} - {1761465600 -25200 0 MST} - {1775379600 -21600 1 MDT} - {1792915200 -25200 0 MST} - {1806829200 -21600 1 MDT} - {1824969600 -25200 0 MST} - {1838278800 -21600 1 MDT} - {1856419200 -25200 0 MST} - {1869728400 -21600 1 MDT} - {1887868800 -25200 0 MST} - {1901782800 -21600 1 MDT} - {1919318400 -25200 0 MST} - {1933232400 -21600 1 MDT} - {1950768000 -25200 0 MST} - {1964682000 -21600 1 MDT} - {1982822400 -25200 0 MST} - {1996131600 -21600 1 MDT} - {2014272000 -25200 0 MST} - {2027581200 -21600 1 MDT} - {2045721600 -25200 0 MST} - {2059030800 -21600 1 MDT} - {2077171200 -25200 0 MST} - {2091085200 -21600 1 MDT} - {2108620800 -25200 0 MST} - {2122534800 -21600 1 MDT} - {2140070400 -25200 0 MST} - {2153984400 -21600 1 MDT} - {2172124800 -25200 0 MST} - {2185434000 -21600 1 MDT} - {2203574400 -25200 0 MST} - {2216883600 -21600 1 MDT} - {2235024000 -25200 0 MST} - {2248938000 -21600 1 MDT} - {2266473600 -25200 0 MST} - {2280387600 -21600 1 MDT} - {2297923200 -25200 0 MST} - {2311837200 -21600 1 MDT} - {2329372800 -25200 0 MST} - {2343286800 -21600 1 MDT} - {2361427200 -25200 0 MST} - {2374736400 -21600 1 MDT} - {2392876800 -25200 0 MST} - {2406186000 -21600 1 MDT} - {2424326400 -25200 0 MST} - {2438240400 -21600 1 MDT} - {2455776000 -25200 0 MST} - {2469690000 -21600 1 MDT} - {2487225600 -25200 0 MST} - {2501139600 -21600 1 MDT} - {2519280000 -25200 0 MST} - {2532589200 -21600 1 MDT} - {2550729600 -25200 0 MST} - {2564038800 -21600 1 MDT} - {2582179200 -25200 0 MST} - {2596093200 -21600 1 MDT} - {2613628800 -25200 0 MST} - {2627542800 -21600 1 MDT} - {2645078400 -25200 0 MST} - {2658992400 -21600 1 MDT} - {2676528000 -25200 0 MST} - {2690442000 -21600 1 MDT} - {2708582400 -25200 0 MST} - {2721891600 -21600 1 MDT} - {2740032000 -25200 0 MST} - {2753341200 -21600 1 MDT} - {2771481600 -25200 0 MST} - {2785395600 -21600 1 MDT} - {2802931200 -25200 0 MST} - {2816845200 -21600 1 MDT} - {2834380800 -25200 0 MST} - {2848294800 -21600 1 MDT} - {2866435200 -25200 0 MST} - {2879744400 -21600 1 MDT} - {2897884800 -25200 0 MST} - {2911194000 -21600 1 MDT} - {2929334400 -25200 0 MST} - {2942643600 -21600 1 MDT} - {2960784000 -25200 0 MST} - {2974698000 -21600 1 MDT} - {2992233600 -25200 0 MST} - {3006147600 -21600 1 MDT} - {3023683200 -25200 0 MST} - {3037597200 -21600 1 MDT} - {3055737600 -25200 0 MST} - {3069046800 -21600 1 MDT} - {3087187200 -25200 0 MST} - {3100496400 -21600 1 MDT} - {3118636800 -25200 0 MST} - {3132550800 -21600 1 MDT} - {3150086400 -25200 0 MST} - {3164000400 -21600 1 MDT} - {3181536000 -25200 0 MST} - {3195450000 -21600 1 MDT} - {3212985600 -25200 0 MST} - {3226899600 -21600 1 MDT} - {3245040000 -25200 0 MST} - {3258349200 -21600 1 MDT} - {3276489600 -25200 0 MST} - {3289798800 -21600 1 MDT} - {3307939200 -25200 0 MST} - {3321853200 -21600 1 MDT} - {3339388800 -25200 0 MST} - {3353302800 -21600 1 MDT} - {3370838400 -25200 0 MST} - {3384752400 -21600 1 MDT} - {3402892800 -25200 0 MST} - {3416202000 -21600 1 MDT} - {3434342400 -25200 0 MST} - {3447651600 -21600 1 MDT} - {3465792000 -25200 0 MST} - {3479706000 -21600 1 MDT} - {3497241600 -25200 0 MST} - {3511155600 -21600 1 MDT} - {3528691200 -25200 0 MST} - {3542605200 -21600 1 MDT} - {3560140800 -25200 0 MST} - {3574054800 -21600 1 MDT} - {3592195200 -25200 0 MST} - {3605504400 -21600 1 MDT} - {3623644800 -25200 0 MST} - {3636954000 -21600 1 MDT} - {3655094400 -25200 0 MST} - {3669008400 -21600 1 MDT} - {3686544000 -25200 0 MST} - {3700458000 -21600 1 MDT} - {3717993600 -25200 0 MST} - {3731907600 -21600 1 MDT} - {3750048000 -25200 0 MST} - {3763357200 -21600 1 MDT} - {3781497600 -25200 0 MST} - {3794806800 -21600 1 MDT} - {3812947200 -25200 0 MST} - {3826256400 -21600 1 MDT} - {3844396800 -25200 0 MST} - {3858310800 -21600 1 MDT} - {3875846400 -25200 0 MST} - {3889760400 -21600 1 MDT} - {3907296000 -25200 0 MST} - {3921210000 -21600 1 MDT} - {3939350400 -25200 0 MST} - {3952659600 -21600 1 MDT} - {3970800000 -25200 0 MST} - {3984109200 -21600 1 MDT} - {4002249600 -25200 0 MST} - {4016163600 -21600 1 MDT} - {4033699200 -25200 0 MST} - {4047613200 -21600 1 MDT} - {4065148800 -25200 0 MST} - {4079062800 -21600 1 MDT} - {4096598400 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Mazatlan) { + {-9223372036854775808 -25540 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {-873828000 -25200 0 MST} + {-661539600 -28800 0 PST} + {28800 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {989139600 -21600 1 MDT} + {1001836800 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1175418000 -21600 1 MDT} + {1193558400 -25200 0 MST} + {1207472400 -21600 1 MDT} + {1225008000 -25200 0 MST} + {1238922000 -21600 1 MDT} + {1256457600 -25200 0 MST} + {1270371600 -21600 1 MDT} + {1288512000 -25200 0 MST} + {1301821200 -21600 1 MDT} + {1319961600 -25200 0 MST} + {1333270800 -21600 1 MDT} + {1351411200 -25200 0 MST} + {1365325200 -21600 1 MDT} + {1382860800 -25200 0 MST} + {1396774800 -21600 1 MDT} + {1414310400 -25200 0 MST} + {1428224400 -21600 1 MDT} + {1445760000 -25200 0 MST} + {1459674000 -21600 1 MDT} + {1477814400 -25200 0 MST} + {1491123600 -21600 1 MDT} + {1509264000 -25200 0 MST} + {1522573200 -21600 1 MDT} + {1540713600 -25200 0 MST} + {1554627600 -21600 1 MDT} + {1572163200 -25200 0 MST} + {1586077200 -21600 1 MDT} + {1603612800 -25200 0 MST} + {1617526800 -21600 1 MDT} + {1635667200 -25200 0 MST} + {1648976400 -21600 1 MDT} + {1667116800 -25200 0 MST} + {1680426000 -21600 1 MDT} + {1698566400 -25200 0 MST} + {1712480400 -21600 1 MDT} + {1730016000 -25200 0 MST} + {1743930000 -21600 1 MDT} + {1761465600 -25200 0 MST} + {1775379600 -21600 1 MDT} + {1792915200 -25200 0 MST} + {1806829200 -21600 1 MDT} + {1824969600 -25200 0 MST} + {1838278800 -21600 1 MDT} + {1856419200 -25200 0 MST} + {1869728400 -21600 1 MDT} + {1887868800 -25200 0 MST} + {1901782800 -21600 1 MDT} + {1919318400 -25200 0 MST} + {1933232400 -21600 1 MDT} + {1950768000 -25200 0 MST} + {1964682000 -21600 1 MDT} + {1982822400 -25200 0 MST} + {1996131600 -21600 1 MDT} + {2014272000 -25200 0 MST} + {2027581200 -21600 1 MDT} + {2045721600 -25200 0 MST} + {2059030800 -21600 1 MDT} + {2077171200 -25200 0 MST} + {2091085200 -21600 1 MDT} + {2108620800 -25200 0 MST} + {2122534800 -21600 1 MDT} + {2140070400 -25200 0 MST} + {2153984400 -21600 1 MDT} + {2172124800 -25200 0 MST} + {2185434000 -21600 1 MDT} + {2203574400 -25200 0 MST} + {2216883600 -21600 1 MDT} + {2235024000 -25200 0 MST} + {2248938000 -21600 1 MDT} + {2266473600 -25200 0 MST} + {2280387600 -21600 1 MDT} + {2297923200 -25200 0 MST} + {2311837200 -21600 1 MDT} + {2329372800 -25200 0 MST} + {2343286800 -21600 1 MDT} + {2361427200 -25200 0 MST} + {2374736400 -21600 1 MDT} + {2392876800 -25200 0 MST} + {2406186000 -21600 1 MDT} + {2424326400 -25200 0 MST} + {2438240400 -21600 1 MDT} + {2455776000 -25200 0 MST} + {2469690000 -21600 1 MDT} + {2487225600 -25200 0 MST} + {2501139600 -21600 1 MDT} + {2519280000 -25200 0 MST} + {2532589200 -21600 1 MDT} + {2550729600 -25200 0 MST} + {2564038800 -21600 1 MDT} + {2582179200 -25200 0 MST} + {2596093200 -21600 1 MDT} + {2613628800 -25200 0 MST} + {2627542800 -21600 1 MDT} + {2645078400 -25200 0 MST} + {2658992400 -21600 1 MDT} + {2676528000 -25200 0 MST} + {2690442000 -21600 1 MDT} + {2708582400 -25200 0 MST} + {2721891600 -21600 1 MDT} + {2740032000 -25200 0 MST} + {2753341200 -21600 1 MDT} + {2771481600 -25200 0 MST} + {2785395600 -21600 1 MDT} + {2802931200 -25200 0 MST} + {2816845200 -21600 1 MDT} + {2834380800 -25200 0 MST} + {2848294800 -21600 1 MDT} + {2866435200 -25200 0 MST} + {2879744400 -21600 1 MDT} + {2897884800 -25200 0 MST} + {2911194000 -21600 1 MDT} + {2929334400 -25200 0 MST} + {2942643600 -21600 1 MDT} + {2960784000 -25200 0 MST} + {2974698000 -21600 1 MDT} + {2992233600 -25200 0 MST} + {3006147600 -21600 1 MDT} + {3023683200 -25200 0 MST} + {3037597200 -21600 1 MDT} + {3055737600 -25200 0 MST} + {3069046800 -21600 1 MDT} + {3087187200 -25200 0 MST} + {3100496400 -21600 1 MDT} + {3118636800 -25200 0 MST} + {3132550800 -21600 1 MDT} + {3150086400 -25200 0 MST} + {3164000400 -21600 1 MDT} + {3181536000 -25200 0 MST} + {3195450000 -21600 1 MDT} + {3212985600 -25200 0 MST} + {3226899600 -21600 1 MDT} + {3245040000 -25200 0 MST} + {3258349200 -21600 1 MDT} + {3276489600 -25200 0 MST} + {3289798800 -21600 1 MDT} + {3307939200 -25200 0 MST} + {3321853200 -21600 1 MDT} + {3339388800 -25200 0 MST} + {3353302800 -21600 1 MDT} + {3370838400 -25200 0 MST} + {3384752400 -21600 1 MDT} + {3402892800 -25200 0 MST} + {3416202000 -21600 1 MDT} + {3434342400 -25200 0 MST} + {3447651600 -21600 1 MDT} + {3465792000 -25200 0 MST} + {3479706000 -21600 1 MDT} + {3497241600 -25200 0 MST} + {3511155600 -21600 1 MDT} + {3528691200 -25200 0 MST} + {3542605200 -21600 1 MDT} + {3560140800 -25200 0 MST} + {3574054800 -21600 1 MDT} + {3592195200 -25200 0 MST} + {3605504400 -21600 1 MDT} + {3623644800 -25200 0 MST} + {3636954000 -21600 1 MDT} + {3655094400 -25200 0 MST} + {3669008400 -21600 1 MDT} + {3686544000 -25200 0 MST} + {3700458000 -21600 1 MDT} + {3717993600 -25200 0 MST} + {3731907600 -21600 1 MDT} + {3750048000 -25200 0 MST} + {3763357200 -21600 1 MDT} + {3781497600 -25200 0 MST} + {3794806800 -21600 1 MDT} + {3812947200 -25200 0 MST} + {3826256400 -21600 1 MDT} + {3844396800 -25200 0 MST} + {3858310800 -21600 1 MDT} + {3875846400 -25200 0 MST} + {3889760400 -21600 1 MDT} + {3907296000 -25200 0 MST} + {3921210000 -21600 1 MDT} + {3939350400 -25200 0 MST} + {3952659600 -21600 1 MDT} + {3970800000 -25200 0 MST} + {3984109200 -21600 1 MDT} + {4002249600 -25200 0 MST} + {4016163600 -21600 1 MDT} + {4033699200 -25200 0 MST} + {4047613200 -21600 1 MDT} + {4065148800 -25200 0 MST} + {4079062800 -21600 1 MDT} + {4096598400 -25200 0 MST} +} diff --git a/library/tzdata/America/Mendoza b/library/tzdata/America/Mendoza index 511d83e..deca4f9 100644 --- a/library/tzdata/America/Mendoza +++ b/library/tzdata/America/Mendoza @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Mendoza)]} { - LoadTimeZoneFile America/Argentina/Mendoza -} -set TZData(:America/Mendoza) $TZData(:America/Argentina/Mendoza) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Mendoza)]} { + LoadTimeZoneFile America/Argentina/Mendoza +} +set TZData(:America/Mendoza) $TZData(:America/Argentina/Mendoza) diff --git a/library/tzdata/America/Menominee b/library/tzdata/America/Menominee index 382aeda..3e296e5 100644 --- a/library/tzdata/America/Menominee +++ b/library/tzdata/America/Menominee @@ -1,274 +1,274 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Menominee) { - {-9223372036854775808 -21027 0 LMT} - {-2659759773 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-116438400 -18000 1 CDT} - {-100112400 -21600 0 CST} - {-21484800 -18000 0 EST} - {104914800 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Menominee) { + {-9223372036854775808 -21027 0 LMT} + {-2659759773 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-116438400 -18000 1 CDT} + {-100112400 -21600 0 CST} + {-21484800 -18000 0 EST} + {104914800 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Merida b/library/tzdata/America/Merida index ebf5927..29e0eb0 100644 --- a/library/tzdata/America/Merida +++ b/library/tzdata/America/Merida @@ -1,216 +1,216 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Merida) { - {-9223372036854775808 -21508 0 LMT} - {-1514743200 -21600 0 CST} - {377935200 -18000 0 EST} - {407653200 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {989136000 -18000 1 CDT} - {1001833200 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1175414400 -18000 1 CDT} - {1193554800 -21600 0 CST} - {1207468800 -18000 1 CDT} - {1225004400 -21600 0 CST} - {1238918400 -18000 1 CDT} - {1256454000 -21600 0 CST} - {1270368000 -18000 1 CDT} - {1288508400 -21600 0 CST} - {1301817600 -18000 1 CDT} - {1319958000 -21600 0 CST} - {1333267200 -18000 1 CDT} - {1351407600 -21600 0 CST} - {1365321600 -18000 1 CDT} - {1382857200 -21600 0 CST} - {1396771200 -18000 1 CDT} - {1414306800 -21600 0 CST} - {1428220800 -18000 1 CDT} - {1445756400 -21600 0 CST} - {1459670400 -18000 1 CDT} - {1477810800 -21600 0 CST} - {1491120000 -18000 1 CDT} - {1509260400 -21600 0 CST} - {1522569600 -18000 1 CDT} - {1540710000 -21600 0 CST} - {1554624000 -18000 1 CDT} - {1572159600 -21600 0 CST} - {1586073600 -18000 1 CDT} - {1603609200 -21600 0 CST} - {1617523200 -18000 1 CDT} - {1635663600 -21600 0 CST} - {1648972800 -18000 1 CDT} - {1667113200 -21600 0 CST} - {1680422400 -18000 1 CDT} - {1698562800 -21600 0 CST} - {1712476800 -18000 1 CDT} - {1730012400 -21600 0 CST} - {1743926400 -18000 1 CDT} - {1761462000 -21600 0 CST} - {1775376000 -18000 1 CDT} - {1792911600 -21600 0 CST} - {1806825600 -18000 1 CDT} - {1824966000 -21600 0 CST} - {1838275200 -18000 1 CDT} - {1856415600 -21600 0 CST} - {1869724800 -18000 1 CDT} - {1887865200 -21600 0 CST} - {1901779200 -18000 1 CDT} - {1919314800 -21600 0 CST} - {1933228800 -18000 1 CDT} - {1950764400 -21600 0 CST} - {1964678400 -18000 1 CDT} - {1982818800 -21600 0 CST} - {1996128000 -18000 1 CDT} - {2014268400 -21600 0 CST} - {2027577600 -18000 1 CDT} - {2045718000 -21600 0 CST} - {2059027200 -18000 1 CDT} - {2077167600 -21600 0 CST} - {2091081600 -18000 1 CDT} - {2108617200 -21600 0 CST} - {2122531200 -18000 1 CDT} - {2140066800 -21600 0 CST} - {2153980800 -18000 1 CDT} - {2172121200 -21600 0 CST} - {2185430400 -18000 1 CDT} - {2203570800 -21600 0 CST} - {2216880000 -18000 1 CDT} - {2235020400 -21600 0 CST} - {2248934400 -18000 1 CDT} - {2266470000 -21600 0 CST} - {2280384000 -18000 1 CDT} - {2297919600 -21600 0 CST} - {2311833600 -18000 1 CDT} - {2329369200 -21600 0 CST} - {2343283200 -18000 1 CDT} - {2361423600 -21600 0 CST} - {2374732800 -18000 1 CDT} - {2392873200 -21600 0 CST} - {2406182400 -18000 1 CDT} - {2424322800 -21600 0 CST} - {2438236800 -18000 1 CDT} - {2455772400 -21600 0 CST} - {2469686400 -18000 1 CDT} - {2487222000 -21600 0 CST} - {2501136000 -18000 1 CDT} - {2519276400 -21600 0 CST} - {2532585600 -18000 1 CDT} - {2550726000 -21600 0 CST} - {2564035200 -18000 1 CDT} - {2582175600 -21600 0 CST} - {2596089600 -18000 1 CDT} - {2613625200 -21600 0 CST} - {2627539200 -18000 1 CDT} - {2645074800 -21600 0 CST} - {2658988800 -18000 1 CDT} - {2676524400 -21600 0 CST} - {2690438400 -18000 1 CDT} - {2708578800 -21600 0 CST} - {2721888000 -18000 1 CDT} - {2740028400 -21600 0 CST} - {2753337600 -18000 1 CDT} - {2771478000 -21600 0 CST} - {2785392000 -18000 1 CDT} - {2802927600 -21600 0 CST} - {2816841600 -18000 1 CDT} - {2834377200 -21600 0 CST} - {2848291200 -18000 1 CDT} - {2866431600 -21600 0 CST} - {2879740800 -18000 1 CDT} - {2897881200 -21600 0 CST} - {2911190400 -18000 1 CDT} - {2929330800 -21600 0 CST} - {2942640000 -18000 1 CDT} - {2960780400 -21600 0 CST} - {2974694400 -18000 1 CDT} - {2992230000 -21600 0 CST} - {3006144000 -18000 1 CDT} - {3023679600 -21600 0 CST} - {3037593600 -18000 1 CDT} - {3055734000 -21600 0 CST} - {3069043200 -18000 1 CDT} - {3087183600 -21600 0 CST} - {3100492800 -18000 1 CDT} - {3118633200 -21600 0 CST} - {3132547200 -18000 1 CDT} - {3150082800 -21600 0 CST} - {3163996800 -18000 1 CDT} - {3181532400 -21600 0 CST} - {3195446400 -18000 1 CDT} - {3212982000 -21600 0 CST} - {3226896000 -18000 1 CDT} - {3245036400 -21600 0 CST} - {3258345600 -18000 1 CDT} - {3276486000 -21600 0 CST} - {3289795200 -18000 1 CDT} - {3307935600 -21600 0 CST} - {3321849600 -18000 1 CDT} - {3339385200 -21600 0 CST} - {3353299200 -18000 1 CDT} - {3370834800 -21600 0 CST} - {3384748800 -18000 1 CDT} - {3402889200 -21600 0 CST} - {3416198400 -18000 1 CDT} - {3434338800 -21600 0 CST} - {3447648000 -18000 1 CDT} - {3465788400 -21600 0 CST} - {3479702400 -18000 1 CDT} - {3497238000 -21600 0 CST} - {3511152000 -18000 1 CDT} - {3528687600 -21600 0 CST} - {3542601600 -18000 1 CDT} - {3560137200 -21600 0 CST} - {3574051200 -18000 1 CDT} - {3592191600 -21600 0 CST} - {3605500800 -18000 1 CDT} - {3623641200 -21600 0 CST} - {3636950400 -18000 1 CDT} - {3655090800 -21600 0 CST} - {3669004800 -18000 1 CDT} - {3686540400 -21600 0 CST} - {3700454400 -18000 1 CDT} - {3717990000 -21600 0 CST} - {3731904000 -18000 1 CDT} - {3750044400 -21600 0 CST} - {3763353600 -18000 1 CDT} - {3781494000 -21600 0 CST} - {3794803200 -18000 1 CDT} - {3812943600 -21600 0 CST} - {3826252800 -18000 1 CDT} - {3844393200 -21600 0 CST} - {3858307200 -18000 1 CDT} - {3875842800 -21600 0 CST} - {3889756800 -18000 1 CDT} - {3907292400 -21600 0 CST} - {3921206400 -18000 1 CDT} - {3939346800 -21600 0 CST} - {3952656000 -18000 1 CDT} - {3970796400 -21600 0 CST} - {3984105600 -18000 1 CDT} - {4002246000 -21600 0 CST} - {4016160000 -18000 1 CDT} - {4033695600 -21600 0 CST} - {4047609600 -18000 1 CDT} - {4065145200 -21600 0 CST} - {4079059200 -18000 1 CDT} - {4096594800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Merida) { + {-9223372036854775808 -21508 0 LMT} + {-1514743200 -21600 0 CST} + {377935200 -18000 0 EST} + {407653200 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {989136000 -18000 1 CDT} + {1001833200 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1175414400 -18000 1 CDT} + {1193554800 -21600 0 CST} + {1207468800 -18000 1 CDT} + {1225004400 -21600 0 CST} + {1238918400 -18000 1 CDT} + {1256454000 -21600 0 CST} + {1270368000 -18000 1 CDT} + {1288508400 -21600 0 CST} + {1301817600 -18000 1 CDT} + {1319958000 -21600 0 CST} + {1333267200 -18000 1 CDT} + {1351407600 -21600 0 CST} + {1365321600 -18000 1 CDT} + {1382857200 -21600 0 CST} + {1396771200 -18000 1 CDT} + {1414306800 -21600 0 CST} + {1428220800 -18000 1 CDT} + {1445756400 -21600 0 CST} + {1459670400 -18000 1 CDT} + {1477810800 -21600 0 CST} + {1491120000 -18000 1 CDT} + {1509260400 -21600 0 CST} + {1522569600 -18000 1 CDT} + {1540710000 -21600 0 CST} + {1554624000 -18000 1 CDT} + {1572159600 -21600 0 CST} + {1586073600 -18000 1 CDT} + {1603609200 -21600 0 CST} + {1617523200 -18000 1 CDT} + {1635663600 -21600 0 CST} + {1648972800 -18000 1 CDT} + {1667113200 -21600 0 CST} + {1680422400 -18000 1 CDT} + {1698562800 -21600 0 CST} + {1712476800 -18000 1 CDT} + {1730012400 -21600 0 CST} + {1743926400 -18000 1 CDT} + {1761462000 -21600 0 CST} + {1775376000 -18000 1 CDT} + {1792911600 -21600 0 CST} + {1806825600 -18000 1 CDT} + {1824966000 -21600 0 CST} + {1838275200 -18000 1 CDT} + {1856415600 -21600 0 CST} + {1869724800 -18000 1 CDT} + {1887865200 -21600 0 CST} + {1901779200 -18000 1 CDT} + {1919314800 -21600 0 CST} + {1933228800 -18000 1 CDT} + {1950764400 -21600 0 CST} + {1964678400 -18000 1 CDT} + {1982818800 -21600 0 CST} + {1996128000 -18000 1 CDT} + {2014268400 -21600 0 CST} + {2027577600 -18000 1 CDT} + {2045718000 -21600 0 CST} + {2059027200 -18000 1 CDT} + {2077167600 -21600 0 CST} + {2091081600 -18000 1 CDT} + {2108617200 -21600 0 CST} + {2122531200 -18000 1 CDT} + {2140066800 -21600 0 CST} + {2153980800 -18000 1 CDT} + {2172121200 -21600 0 CST} + {2185430400 -18000 1 CDT} + {2203570800 -21600 0 CST} + {2216880000 -18000 1 CDT} + {2235020400 -21600 0 CST} + {2248934400 -18000 1 CDT} + {2266470000 -21600 0 CST} + {2280384000 -18000 1 CDT} + {2297919600 -21600 0 CST} + {2311833600 -18000 1 CDT} + {2329369200 -21600 0 CST} + {2343283200 -18000 1 CDT} + {2361423600 -21600 0 CST} + {2374732800 -18000 1 CDT} + {2392873200 -21600 0 CST} + {2406182400 -18000 1 CDT} + {2424322800 -21600 0 CST} + {2438236800 -18000 1 CDT} + {2455772400 -21600 0 CST} + {2469686400 -18000 1 CDT} + {2487222000 -21600 0 CST} + {2501136000 -18000 1 CDT} + {2519276400 -21600 0 CST} + {2532585600 -18000 1 CDT} + {2550726000 -21600 0 CST} + {2564035200 -18000 1 CDT} + {2582175600 -21600 0 CST} + {2596089600 -18000 1 CDT} + {2613625200 -21600 0 CST} + {2627539200 -18000 1 CDT} + {2645074800 -21600 0 CST} + {2658988800 -18000 1 CDT} + {2676524400 -21600 0 CST} + {2690438400 -18000 1 CDT} + {2708578800 -21600 0 CST} + {2721888000 -18000 1 CDT} + {2740028400 -21600 0 CST} + {2753337600 -18000 1 CDT} + {2771478000 -21600 0 CST} + {2785392000 -18000 1 CDT} + {2802927600 -21600 0 CST} + {2816841600 -18000 1 CDT} + {2834377200 -21600 0 CST} + {2848291200 -18000 1 CDT} + {2866431600 -21600 0 CST} + {2879740800 -18000 1 CDT} + {2897881200 -21600 0 CST} + {2911190400 -18000 1 CDT} + {2929330800 -21600 0 CST} + {2942640000 -18000 1 CDT} + {2960780400 -21600 0 CST} + {2974694400 -18000 1 CDT} + {2992230000 -21600 0 CST} + {3006144000 -18000 1 CDT} + {3023679600 -21600 0 CST} + {3037593600 -18000 1 CDT} + {3055734000 -21600 0 CST} + {3069043200 -18000 1 CDT} + {3087183600 -21600 0 CST} + {3100492800 -18000 1 CDT} + {3118633200 -21600 0 CST} + {3132547200 -18000 1 CDT} + {3150082800 -21600 0 CST} + {3163996800 -18000 1 CDT} + {3181532400 -21600 0 CST} + {3195446400 -18000 1 CDT} + {3212982000 -21600 0 CST} + {3226896000 -18000 1 CDT} + {3245036400 -21600 0 CST} + {3258345600 -18000 1 CDT} + {3276486000 -21600 0 CST} + {3289795200 -18000 1 CDT} + {3307935600 -21600 0 CST} + {3321849600 -18000 1 CDT} + {3339385200 -21600 0 CST} + {3353299200 -18000 1 CDT} + {3370834800 -21600 0 CST} + {3384748800 -18000 1 CDT} + {3402889200 -21600 0 CST} + {3416198400 -18000 1 CDT} + {3434338800 -21600 0 CST} + {3447648000 -18000 1 CDT} + {3465788400 -21600 0 CST} + {3479702400 -18000 1 CDT} + {3497238000 -21600 0 CST} + {3511152000 -18000 1 CDT} + {3528687600 -21600 0 CST} + {3542601600 -18000 1 CDT} + {3560137200 -21600 0 CST} + {3574051200 -18000 1 CDT} + {3592191600 -21600 0 CST} + {3605500800 -18000 1 CDT} + {3623641200 -21600 0 CST} + {3636950400 -18000 1 CDT} + {3655090800 -21600 0 CST} + {3669004800 -18000 1 CDT} + {3686540400 -21600 0 CST} + {3700454400 -18000 1 CDT} + {3717990000 -21600 0 CST} + {3731904000 -18000 1 CDT} + {3750044400 -21600 0 CST} + {3763353600 -18000 1 CDT} + {3781494000 -21600 0 CST} + {3794803200 -18000 1 CDT} + {3812943600 -21600 0 CST} + {3826252800 -18000 1 CDT} + {3844393200 -21600 0 CST} + {3858307200 -18000 1 CDT} + {3875842800 -21600 0 CST} + {3889756800 -18000 1 CDT} + {3907292400 -21600 0 CST} + {3921206400 -18000 1 CDT} + {3939346800 -21600 0 CST} + {3952656000 -18000 1 CDT} + {3970796400 -21600 0 CST} + {3984105600 -18000 1 CDT} + {4002246000 -21600 0 CST} + {4016160000 -18000 1 CDT} + {4033695600 -21600 0 CST} + {4047609600 -18000 1 CDT} + {4065145200 -21600 0 CST} + {4079059200 -18000 1 CDT} + {4096594800 -21600 0 CST} +} diff --git a/library/tzdata/America/Mexico_City b/library/tzdata/America/Mexico_City index 48462e4..86e473a 100644 --- a/library/tzdata/America/Mexico_City +++ b/library/tzdata/America/Mexico_City @@ -1,228 +1,228 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Mexico_City) { - {-9223372036854775808 -23796 0 LMT} - {-1514739600 -25200 0 MST} - {-1343066400 -21600 0 CST} - {-1234807200 -25200 0 MST} - {-1220292000 -21600 0 CST} - {-1207159200 -25200 0 MST} - {-1191344400 -21600 0 CST} - {-975261600 -18000 1 CDT} - {-963169200 -21600 0 CST} - {-917114400 -18000 1 CDT} - {-907354800 -21600 0 CST} - {-821901600 -18000 1 CWT} - {-810068400 -21600 0 CST} - {-627501600 -18000 1 CDT} - {-612990000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {989136000 -18000 1 CDT} - {1001836800 -21600 0 CST} - {1014184800 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1175414400 -18000 1 CDT} - {1193554800 -21600 0 CST} - {1207468800 -18000 1 CDT} - {1225004400 -21600 0 CST} - {1238918400 -18000 1 CDT} - {1256454000 -21600 0 CST} - {1270368000 -18000 1 CDT} - {1288508400 -21600 0 CST} - {1301817600 -18000 1 CDT} - {1319958000 -21600 0 CST} - {1333267200 -18000 1 CDT} - {1351407600 -21600 0 CST} - {1365321600 -18000 1 CDT} - {1382857200 -21600 0 CST} - {1396771200 -18000 1 CDT} - {1414306800 -21600 0 CST} - {1428220800 -18000 1 CDT} - {1445756400 -21600 0 CST} - {1459670400 -18000 1 CDT} - {1477810800 -21600 0 CST} - {1491120000 -18000 1 CDT} - {1509260400 -21600 0 CST} - {1522569600 -18000 1 CDT} - {1540710000 -21600 0 CST} - {1554624000 -18000 1 CDT} - {1572159600 -21600 0 CST} - {1586073600 -18000 1 CDT} - {1603609200 -21600 0 CST} - {1617523200 -18000 1 CDT} - {1635663600 -21600 0 CST} - {1648972800 -18000 1 CDT} - {1667113200 -21600 0 CST} - {1680422400 -18000 1 CDT} - {1698562800 -21600 0 CST} - {1712476800 -18000 1 CDT} - {1730012400 -21600 0 CST} - {1743926400 -18000 1 CDT} - {1761462000 -21600 0 CST} - {1775376000 -18000 1 CDT} - {1792911600 -21600 0 CST} - {1806825600 -18000 1 CDT} - {1824966000 -21600 0 CST} - {1838275200 -18000 1 CDT} - {1856415600 -21600 0 CST} - {1869724800 -18000 1 CDT} - {1887865200 -21600 0 CST} - {1901779200 -18000 1 CDT} - {1919314800 -21600 0 CST} - {1933228800 -18000 1 CDT} - {1950764400 -21600 0 CST} - {1964678400 -18000 1 CDT} - {1982818800 -21600 0 CST} - {1996128000 -18000 1 CDT} - {2014268400 -21600 0 CST} - {2027577600 -18000 1 CDT} - {2045718000 -21600 0 CST} - {2059027200 -18000 1 CDT} - {2077167600 -21600 0 CST} - {2091081600 -18000 1 CDT} - {2108617200 -21600 0 CST} - {2122531200 -18000 1 CDT} - {2140066800 -21600 0 CST} - {2153980800 -18000 1 CDT} - {2172121200 -21600 0 CST} - {2185430400 -18000 1 CDT} - {2203570800 -21600 0 CST} - {2216880000 -18000 1 CDT} - {2235020400 -21600 0 CST} - {2248934400 -18000 1 CDT} - {2266470000 -21600 0 CST} - {2280384000 -18000 1 CDT} - {2297919600 -21600 0 CST} - {2311833600 -18000 1 CDT} - {2329369200 -21600 0 CST} - {2343283200 -18000 1 CDT} - {2361423600 -21600 0 CST} - {2374732800 -18000 1 CDT} - {2392873200 -21600 0 CST} - {2406182400 -18000 1 CDT} - {2424322800 -21600 0 CST} - {2438236800 -18000 1 CDT} - {2455772400 -21600 0 CST} - {2469686400 -18000 1 CDT} - {2487222000 -21600 0 CST} - {2501136000 -18000 1 CDT} - {2519276400 -21600 0 CST} - {2532585600 -18000 1 CDT} - {2550726000 -21600 0 CST} - {2564035200 -18000 1 CDT} - {2582175600 -21600 0 CST} - {2596089600 -18000 1 CDT} - {2613625200 -21600 0 CST} - {2627539200 -18000 1 CDT} - {2645074800 -21600 0 CST} - {2658988800 -18000 1 CDT} - {2676524400 -21600 0 CST} - {2690438400 -18000 1 CDT} - {2708578800 -21600 0 CST} - {2721888000 -18000 1 CDT} - {2740028400 -21600 0 CST} - {2753337600 -18000 1 CDT} - {2771478000 -21600 0 CST} - {2785392000 -18000 1 CDT} - {2802927600 -21600 0 CST} - {2816841600 -18000 1 CDT} - {2834377200 -21600 0 CST} - {2848291200 -18000 1 CDT} - {2866431600 -21600 0 CST} - {2879740800 -18000 1 CDT} - {2897881200 -21600 0 CST} - {2911190400 -18000 1 CDT} - {2929330800 -21600 0 CST} - {2942640000 -18000 1 CDT} - {2960780400 -21600 0 CST} - {2974694400 -18000 1 CDT} - {2992230000 -21600 0 CST} - {3006144000 -18000 1 CDT} - {3023679600 -21600 0 CST} - {3037593600 -18000 1 CDT} - {3055734000 -21600 0 CST} - {3069043200 -18000 1 CDT} - {3087183600 -21600 0 CST} - {3100492800 -18000 1 CDT} - {3118633200 -21600 0 CST} - {3132547200 -18000 1 CDT} - {3150082800 -21600 0 CST} - {3163996800 -18000 1 CDT} - {3181532400 -21600 0 CST} - {3195446400 -18000 1 CDT} - {3212982000 -21600 0 CST} - {3226896000 -18000 1 CDT} - {3245036400 -21600 0 CST} - {3258345600 -18000 1 CDT} - {3276486000 -21600 0 CST} - {3289795200 -18000 1 CDT} - {3307935600 -21600 0 CST} - {3321849600 -18000 1 CDT} - {3339385200 -21600 0 CST} - {3353299200 -18000 1 CDT} - {3370834800 -21600 0 CST} - {3384748800 -18000 1 CDT} - {3402889200 -21600 0 CST} - {3416198400 -18000 1 CDT} - {3434338800 -21600 0 CST} - {3447648000 -18000 1 CDT} - {3465788400 -21600 0 CST} - {3479702400 -18000 1 CDT} - {3497238000 -21600 0 CST} - {3511152000 -18000 1 CDT} - {3528687600 -21600 0 CST} - {3542601600 -18000 1 CDT} - {3560137200 -21600 0 CST} - {3574051200 -18000 1 CDT} - {3592191600 -21600 0 CST} - {3605500800 -18000 1 CDT} - {3623641200 -21600 0 CST} - {3636950400 -18000 1 CDT} - {3655090800 -21600 0 CST} - {3669004800 -18000 1 CDT} - {3686540400 -21600 0 CST} - {3700454400 -18000 1 CDT} - {3717990000 -21600 0 CST} - {3731904000 -18000 1 CDT} - {3750044400 -21600 0 CST} - {3763353600 -18000 1 CDT} - {3781494000 -21600 0 CST} - {3794803200 -18000 1 CDT} - {3812943600 -21600 0 CST} - {3826252800 -18000 1 CDT} - {3844393200 -21600 0 CST} - {3858307200 -18000 1 CDT} - {3875842800 -21600 0 CST} - {3889756800 -18000 1 CDT} - {3907292400 -21600 0 CST} - {3921206400 -18000 1 CDT} - {3939346800 -21600 0 CST} - {3952656000 -18000 1 CDT} - {3970796400 -21600 0 CST} - {3984105600 -18000 1 CDT} - {4002246000 -21600 0 CST} - {4016160000 -18000 1 CDT} - {4033695600 -21600 0 CST} - {4047609600 -18000 1 CDT} - {4065145200 -21600 0 CST} - {4079059200 -18000 1 CDT} - {4096594800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Mexico_City) { + {-9223372036854775808 -23796 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {-975261600 -18000 1 CDT} + {-963169200 -21600 0 CST} + {-917114400 -18000 1 CDT} + {-907354800 -21600 0 CST} + {-821901600 -18000 1 CWT} + {-810068400 -21600 0 CST} + {-627501600 -18000 1 CDT} + {-612990000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {989136000 -18000 1 CDT} + {1001836800 -21600 0 CST} + {1014184800 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1175414400 -18000 1 CDT} + {1193554800 -21600 0 CST} + {1207468800 -18000 1 CDT} + {1225004400 -21600 0 CST} + {1238918400 -18000 1 CDT} + {1256454000 -21600 0 CST} + {1270368000 -18000 1 CDT} + {1288508400 -21600 0 CST} + {1301817600 -18000 1 CDT} + {1319958000 -21600 0 CST} + {1333267200 -18000 1 CDT} + {1351407600 -21600 0 CST} + {1365321600 -18000 1 CDT} + {1382857200 -21600 0 CST} + {1396771200 -18000 1 CDT} + {1414306800 -21600 0 CST} + {1428220800 -18000 1 CDT} + {1445756400 -21600 0 CST} + {1459670400 -18000 1 CDT} + {1477810800 -21600 0 CST} + {1491120000 -18000 1 CDT} + {1509260400 -21600 0 CST} + {1522569600 -18000 1 CDT} + {1540710000 -21600 0 CST} + {1554624000 -18000 1 CDT} + {1572159600 -21600 0 CST} + {1586073600 -18000 1 CDT} + {1603609200 -21600 0 CST} + {1617523200 -18000 1 CDT} + {1635663600 -21600 0 CST} + {1648972800 -18000 1 CDT} + {1667113200 -21600 0 CST} + {1680422400 -18000 1 CDT} + {1698562800 -21600 0 CST} + {1712476800 -18000 1 CDT} + {1730012400 -21600 0 CST} + {1743926400 -18000 1 CDT} + {1761462000 -21600 0 CST} + {1775376000 -18000 1 CDT} + {1792911600 -21600 0 CST} + {1806825600 -18000 1 CDT} + {1824966000 -21600 0 CST} + {1838275200 -18000 1 CDT} + {1856415600 -21600 0 CST} + {1869724800 -18000 1 CDT} + {1887865200 -21600 0 CST} + {1901779200 -18000 1 CDT} + {1919314800 -21600 0 CST} + {1933228800 -18000 1 CDT} + {1950764400 -21600 0 CST} + {1964678400 -18000 1 CDT} + {1982818800 -21600 0 CST} + {1996128000 -18000 1 CDT} + {2014268400 -21600 0 CST} + {2027577600 -18000 1 CDT} + {2045718000 -21600 0 CST} + {2059027200 -18000 1 CDT} + {2077167600 -21600 0 CST} + {2091081600 -18000 1 CDT} + {2108617200 -21600 0 CST} + {2122531200 -18000 1 CDT} + {2140066800 -21600 0 CST} + {2153980800 -18000 1 CDT} + {2172121200 -21600 0 CST} + {2185430400 -18000 1 CDT} + {2203570800 -21600 0 CST} + {2216880000 -18000 1 CDT} + {2235020400 -21600 0 CST} + {2248934400 -18000 1 CDT} + {2266470000 -21600 0 CST} + {2280384000 -18000 1 CDT} + {2297919600 -21600 0 CST} + {2311833600 -18000 1 CDT} + {2329369200 -21600 0 CST} + {2343283200 -18000 1 CDT} + {2361423600 -21600 0 CST} + {2374732800 -18000 1 CDT} + {2392873200 -21600 0 CST} + {2406182400 -18000 1 CDT} + {2424322800 -21600 0 CST} + {2438236800 -18000 1 CDT} + {2455772400 -21600 0 CST} + {2469686400 -18000 1 CDT} + {2487222000 -21600 0 CST} + {2501136000 -18000 1 CDT} + {2519276400 -21600 0 CST} + {2532585600 -18000 1 CDT} + {2550726000 -21600 0 CST} + {2564035200 -18000 1 CDT} + {2582175600 -21600 0 CST} + {2596089600 -18000 1 CDT} + {2613625200 -21600 0 CST} + {2627539200 -18000 1 CDT} + {2645074800 -21600 0 CST} + {2658988800 -18000 1 CDT} + {2676524400 -21600 0 CST} + {2690438400 -18000 1 CDT} + {2708578800 -21600 0 CST} + {2721888000 -18000 1 CDT} + {2740028400 -21600 0 CST} + {2753337600 -18000 1 CDT} + {2771478000 -21600 0 CST} + {2785392000 -18000 1 CDT} + {2802927600 -21600 0 CST} + {2816841600 -18000 1 CDT} + {2834377200 -21600 0 CST} + {2848291200 -18000 1 CDT} + {2866431600 -21600 0 CST} + {2879740800 -18000 1 CDT} + {2897881200 -21600 0 CST} + {2911190400 -18000 1 CDT} + {2929330800 -21600 0 CST} + {2942640000 -18000 1 CDT} + {2960780400 -21600 0 CST} + {2974694400 -18000 1 CDT} + {2992230000 -21600 0 CST} + {3006144000 -18000 1 CDT} + {3023679600 -21600 0 CST} + {3037593600 -18000 1 CDT} + {3055734000 -21600 0 CST} + {3069043200 -18000 1 CDT} + {3087183600 -21600 0 CST} + {3100492800 -18000 1 CDT} + {3118633200 -21600 0 CST} + {3132547200 -18000 1 CDT} + {3150082800 -21600 0 CST} + {3163996800 -18000 1 CDT} + {3181532400 -21600 0 CST} + {3195446400 -18000 1 CDT} + {3212982000 -21600 0 CST} + {3226896000 -18000 1 CDT} + {3245036400 -21600 0 CST} + {3258345600 -18000 1 CDT} + {3276486000 -21600 0 CST} + {3289795200 -18000 1 CDT} + {3307935600 -21600 0 CST} + {3321849600 -18000 1 CDT} + {3339385200 -21600 0 CST} + {3353299200 -18000 1 CDT} + {3370834800 -21600 0 CST} + {3384748800 -18000 1 CDT} + {3402889200 -21600 0 CST} + {3416198400 -18000 1 CDT} + {3434338800 -21600 0 CST} + {3447648000 -18000 1 CDT} + {3465788400 -21600 0 CST} + {3479702400 -18000 1 CDT} + {3497238000 -21600 0 CST} + {3511152000 -18000 1 CDT} + {3528687600 -21600 0 CST} + {3542601600 -18000 1 CDT} + {3560137200 -21600 0 CST} + {3574051200 -18000 1 CDT} + {3592191600 -21600 0 CST} + {3605500800 -18000 1 CDT} + {3623641200 -21600 0 CST} + {3636950400 -18000 1 CDT} + {3655090800 -21600 0 CST} + {3669004800 -18000 1 CDT} + {3686540400 -21600 0 CST} + {3700454400 -18000 1 CDT} + {3717990000 -21600 0 CST} + {3731904000 -18000 1 CDT} + {3750044400 -21600 0 CST} + {3763353600 -18000 1 CDT} + {3781494000 -21600 0 CST} + {3794803200 -18000 1 CDT} + {3812943600 -21600 0 CST} + {3826252800 -18000 1 CDT} + {3844393200 -21600 0 CST} + {3858307200 -18000 1 CDT} + {3875842800 -21600 0 CST} + {3889756800 -18000 1 CDT} + {3907292400 -21600 0 CST} + {3921206400 -18000 1 CDT} + {3939346800 -21600 0 CST} + {3952656000 -18000 1 CDT} + {3970796400 -21600 0 CST} + {3984105600 -18000 1 CDT} + {4002246000 -21600 0 CST} + {4016160000 -18000 1 CDT} + {4033695600 -21600 0 CST} + {4047609600 -18000 1 CDT} + {4065145200 -21600 0 CST} + {4079059200 -18000 1 CDT} + {4096594800 -21600 0 CST} +} diff --git a/library/tzdata/America/Miquelon b/library/tzdata/America/Miquelon index a7410f1..8abe498 100644 --- a/library/tzdata/America/Miquelon +++ b/library/tzdata/America/Miquelon @@ -1,234 +1,234 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Miquelon) { - {-9223372036854775808 -13480 0 LMT} - {-1850328920 -14400 0 AST} - {326001600 -10800 0 PMST} - {536468400 -10800 0 PMST} - {544597200 -7200 1 PMDT} - {562132800 -10800 0 PMST} - {576046800 -7200 1 PMDT} - {594187200 -10800 0 PMST} - {607496400 -7200 1 PMDT} - {625636800 -10800 0 PMST} - {638946000 -7200 1 PMDT} - {657086400 -10800 0 PMST} - {671000400 -7200 1 PMDT} - {688536000 -10800 0 PMST} - {702450000 -7200 1 PMDT} - {719985600 -10800 0 PMST} - {733899600 -7200 1 PMDT} - {752040000 -10800 0 PMST} - {765349200 -7200 1 PMDT} - {783489600 -10800 0 PMST} - {796798800 -7200 1 PMDT} - {814939200 -10800 0 PMST} - {828853200 -7200 1 PMDT} - {846388800 -10800 0 PMST} - {860302800 -7200 1 PMDT} - {877838400 -10800 0 PMST} - {891752400 -7200 1 PMDT} - {909288000 -10800 0 PMST} - {923202000 -7200 1 PMDT} - {941342400 -10800 0 PMST} - {954651600 -7200 1 PMDT} - {972792000 -10800 0 PMST} - {986101200 -7200 1 PMDT} - {1004241600 -10800 0 PMST} - {1018155600 -7200 1 PMDT} - {1035691200 -10800 0 PMST} - {1049605200 -7200 1 PMDT} - {1067140800 -10800 0 PMST} - {1081054800 -7200 1 PMDT} - {1099195200 -10800 0 PMST} - {1112504400 -7200 1 PMDT} - {1130644800 -10800 0 PMST} - {1143954000 -7200 1 PMDT} - {1162094400 -10800 0 PMST} - {1173589200 -7200 1 PMDT} - {1194148800 -10800 0 PMST} - {1205038800 -7200 1 PMDT} - {1225598400 -10800 0 PMST} - {1236488400 -7200 1 PMDT} - {1257048000 -10800 0 PMST} - {1268542800 -7200 1 PMDT} - {1289102400 -10800 0 PMST} - {1299992400 -7200 1 PMDT} - {1320552000 -10800 0 PMST} - {1331442000 -7200 1 PMDT} - {1352001600 -10800 0 PMST} - {1362891600 -7200 1 PMDT} - {1383451200 -10800 0 PMST} - {1394341200 -7200 1 PMDT} - {1414900800 -10800 0 PMST} - {1425790800 -7200 1 PMDT} - {1446350400 -10800 0 PMST} - {1457845200 -7200 1 PMDT} - {1478404800 -10800 0 PMST} - {1489294800 -7200 1 PMDT} - {1509854400 -10800 0 PMST} - {1520744400 -7200 1 PMDT} - {1541304000 -10800 0 PMST} - {1552194000 -7200 1 PMDT} - {1572753600 -10800 0 PMST} - {1583643600 -7200 1 PMDT} - {1604203200 -10800 0 PMST} - {1615698000 -7200 1 PMDT} - {1636257600 -10800 0 PMST} - {1647147600 -7200 1 PMDT} - {1667707200 -10800 0 PMST} - {1678597200 -7200 1 PMDT} - {1699156800 -10800 0 PMST} - {1710046800 -7200 1 PMDT} - {1730606400 -10800 0 PMST} - {1741496400 -7200 1 PMDT} - {1762056000 -10800 0 PMST} - {1772946000 -7200 1 PMDT} - {1793505600 -10800 0 PMST} - {1805000400 -7200 1 PMDT} - {1825560000 -10800 0 PMST} - {1836450000 -7200 1 PMDT} - {1857009600 -10800 0 PMST} - {1867899600 -7200 1 PMDT} - {1888459200 -10800 0 PMST} - {1899349200 -7200 1 PMDT} - {1919908800 -10800 0 PMST} - {1930798800 -7200 1 PMDT} - {1951358400 -10800 0 PMST} - {1962853200 -7200 1 PMDT} - {1983412800 -10800 0 PMST} - {1994302800 -7200 1 PMDT} - {2014862400 -10800 0 PMST} - {2025752400 -7200 1 PMDT} - {2046312000 -10800 0 PMST} - {2057202000 -7200 1 PMDT} - {2077761600 -10800 0 PMST} - {2088651600 -7200 1 PMDT} - {2109211200 -10800 0 PMST} - {2120101200 -7200 1 PMDT} - {2140660800 -10800 0 PMST} - {2152155600 -7200 1 PMDT} - {2172715200 -10800 0 PMST} - {2183605200 -7200 1 PMDT} - {2204164800 -10800 0 PMST} - {2215054800 -7200 1 PMDT} - {2235614400 -10800 0 PMST} - {2246504400 -7200 1 PMDT} - {2267064000 -10800 0 PMST} - {2277954000 -7200 1 PMDT} - {2298513600 -10800 0 PMST} - {2309403600 -7200 1 PMDT} - {2329963200 -10800 0 PMST} - {2341458000 -7200 1 PMDT} - {2362017600 -10800 0 PMST} - {2372907600 -7200 1 PMDT} - {2393467200 -10800 0 PMST} - {2404357200 -7200 1 PMDT} - {2424916800 -10800 0 PMST} - {2435806800 -7200 1 PMDT} - {2456366400 -10800 0 PMST} - {2467256400 -7200 1 PMDT} - {2487816000 -10800 0 PMST} - {2499310800 -7200 1 PMDT} - {2519870400 -10800 0 PMST} - {2530760400 -7200 1 PMDT} - {2551320000 -10800 0 PMST} - {2562210000 -7200 1 PMDT} - {2582769600 -10800 0 PMST} - {2593659600 -7200 1 PMDT} - {2614219200 -10800 0 PMST} - {2625109200 -7200 1 PMDT} - {2645668800 -10800 0 PMST} - {2656558800 -7200 1 PMDT} - {2677118400 -10800 0 PMST} - {2688613200 -7200 1 PMDT} - {2709172800 -10800 0 PMST} - {2720062800 -7200 1 PMDT} - {2740622400 -10800 0 PMST} - {2751512400 -7200 1 PMDT} - {2772072000 -10800 0 PMST} - {2782962000 -7200 1 PMDT} - {2803521600 -10800 0 PMST} - {2814411600 -7200 1 PMDT} - {2834971200 -10800 0 PMST} - {2846466000 -7200 1 PMDT} - {2867025600 -10800 0 PMST} - {2877915600 -7200 1 PMDT} - {2898475200 -10800 0 PMST} - {2909365200 -7200 1 PMDT} - {2929924800 -10800 0 PMST} - {2940814800 -7200 1 PMDT} - {2961374400 -10800 0 PMST} - {2972264400 -7200 1 PMDT} - {2992824000 -10800 0 PMST} - {3003714000 -7200 1 PMDT} - {3024273600 -10800 0 PMST} - {3035768400 -7200 1 PMDT} - {3056328000 -10800 0 PMST} - {3067218000 -7200 1 PMDT} - {3087777600 -10800 0 PMST} - {3098667600 -7200 1 PMDT} - {3119227200 -10800 0 PMST} - {3130117200 -7200 1 PMDT} - {3150676800 -10800 0 PMST} - {3161566800 -7200 1 PMDT} - {3182126400 -10800 0 PMST} - {3193016400 -7200 1 PMDT} - {3213576000 -10800 0 PMST} - {3225070800 -7200 1 PMDT} - {3245630400 -10800 0 PMST} - {3256520400 -7200 1 PMDT} - {3277080000 -10800 0 PMST} - {3287970000 -7200 1 PMDT} - {3308529600 -10800 0 PMST} - {3319419600 -7200 1 PMDT} - {3339979200 -10800 0 PMST} - {3350869200 -7200 1 PMDT} - {3371428800 -10800 0 PMST} - {3382923600 -7200 1 PMDT} - {3403483200 -10800 0 PMST} - {3414373200 -7200 1 PMDT} - {3434932800 -10800 0 PMST} - {3445822800 -7200 1 PMDT} - {3466382400 -10800 0 PMST} - {3477272400 -7200 1 PMDT} - {3497832000 -10800 0 PMST} - {3508722000 -7200 1 PMDT} - {3529281600 -10800 0 PMST} - {3540171600 -7200 1 PMDT} - {3560731200 -10800 0 PMST} - {3572226000 -7200 1 PMDT} - {3592785600 -10800 0 PMST} - {3603675600 -7200 1 PMDT} - {3624235200 -10800 0 PMST} - {3635125200 -7200 1 PMDT} - {3655684800 -10800 0 PMST} - {3666574800 -7200 1 PMDT} - {3687134400 -10800 0 PMST} - {3698024400 -7200 1 PMDT} - {3718584000 -10800 0 PMST} - {3730078800 -7200 1 PMDT} - {3750638400 -10800 0 PMST} - {3761528400 -7200 1 PMDT} - {3782088000 -10800 0 PMST} - {3792978000 -7200 1 PMDT} - {3813537600 -10800 0 PMST} - {3824427600 -7200 1 PMDT} - {3844987200 -10800 0 PMST} - {3855877200 -7200 1 PMDT} - {3876436800 -10800 0 PMST} - {3887326800 -7200 1 PMDT} - {3907886400 -10800 0 PMST} - {3919381200 -7200 1 PMDT} - {3939940800 -10800 0 PMST} - {3950830800 -7200 1 PMDT} - {3971390400 -10800 0 PMST} - {3982280400 -7200 1 PMDT} - {4002840000 -10800 0 PMST} - {4013730000 -7200 1 PMDT} - {4034289600 -10800 0 PMST} - {4045179600 -7200 1 PMDT} - {4065739200 -10800 0 PMST} - {4076629200 -7200 1 PMDT} - {4097188800 -10800 0 PMST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Miquelon) { + {-9223372036854775808 -13480 0 LMT} + {-1850328920 -14400 0 AST} + {326001600 -10800 0 PMST} + {536468400 -10800 0 PMST} + {544597200 -7200 1 PMDT} + {562132800 -10800 0 PMST} + {576046800 -7200 1 PMDT} + {594187200 -10800 0 PMST} + {607496400 -7200 1 PMDT} + {625636800 -10800 0 PMST} + {638946000 -7200 1 PMDT} + {657086400 -10800 0 PMST} + {671000400 -7200 1 PMDT} + {688536000 -10800 0 PMST} + {702450000 -7200 1 PMDT} + {719985600 -10800 0 PMST} + {733899600 -7200 1 PMDT} + {752040000 -10800 0 PMST} + {765349200 -7200 1 PMDT} + {783489600 -10800 0 PMST} + {796798800 -7200 1 PMDT} + {814939200 -10800 0 PMST} + {828853200 -7200 1 PMDT} + {846388800 -10800 0 PMST} + {860302800 -7200 1 PMDT} + {877838400 -10800 0 PMST} + {891752400 -7200 1 PMDT} + {909288000 -10800 0 PMST} + {923202000 -7200 1 PMDT} + {941342400 -10800 0 PMST} + {954651600 -7200 1 PMDT} + {972792000 -10800 0 PMST} + {986101200 -7200 1 PMDT} + {1004241600 -10800 0 PMST} + {1018155600 -7200 1 PMDT} + {1035691200 -10800 0 PMST} + {1049605200 -7200 1 PMDT} + {1067140800 -10800 0 PMST} + {1081054800 -7200 1 PMDT} + {1099195200 -10800 0 PMST} + {1112504400 -7200 1 PMDT} + {1130644800 -10800 0 PMST} + {1143954000 -7200 1 PMDT} + {1162094400 -10800 0 PMST} + {1173589200 -7200 1 PMDT} + {1194148800 -10800 0 PMST} + {1205038800 -7200 1 PMDT} + {1225598400 -10800 0 PMST} + {1236488400 -7200 1 PMDT} + {1257048000 -10800 0 PMST} + {1268542800 -7200 1 PMDT} + {1289102400 -10800 0 PMST} + {1299992400 -7200 1 PMDT} + {1320552000 -10800 0 PMST} + {1331442000 -7200 1 PMDT} + {1352001600 -10800 0 PMST} + {1362891600 -7200 1 PMDT} + {1383451200 -10800 0 PMST} + {1394341200 -7200 1 PMDT} + {1414900800 -10800 0 PMST} + {1425790800 -7200 1 PMDT} + {1446350400 -10800 0 PMST} + {1457845200 -7200 1 PMDT} + {1478404800 -10800 0 PMST} + {1489294800 -7200 1 PMDT} + {1509854400 -10800 0 PMST} + {1520744400 -7200 1 PMDT} + {1541304000 -10800 0 PMST} + {1552194000 -7200 1 PMDT} + {1572753600 -10800 0 PMST} + {1583643600 -7200 1 PMDT} + {1604203200 -10800 0 PMST} + {1615698000 -7200 1 PMDT} + {1636257600 -10800 0 PMST} + {1647147600 -7200 1 PMDT} + {1667707200 -10800 0 PMST} + {1678597200 -7200 1 PMDT} + {1699156800 -10800 0 PMST} + {1710046800 -7200 1 PMDT} + {1730606400 -10800 0 PMST} + {1741496400 -7200 1 PMDT} + {1762056000 -10800 0 PMST} + {1772946000 -7200 1 PMDT} + {1793505600 -10800 0 PMST} + {1805000400 -7200 1 PMDT} + {1825560000 -10800 0 PMST} + {1836450000 -7200 1 PMDT} + {1857009600 -10800 0 PMST} + {1867899600 -7200 1 PMDT} + {1888459200 -10800 0 PMST} + {1899349200 -7200 1 PMDT} + {1919908800 -10800 0 PMST} + {1930798800 -7200 1 PMDT} + {1951358400 -10800 0 PMST} + {1962853200 -7200 1 PMDT} + {1983412800 -10800 0 PMST} + {1994302800 -7200 1 PMDT} + {2014862400 -10800 0 PMST} + {2025752400 -7200 1 PMDT} + {2046312000 -10800 0 PMST} + {2057202000 -7200 1 PMDT} + {2077761600 -10800 0 PMST} + {2088651600 -7200 1 PMDT} + {2109211200 -10800 0 PMST} + {2120101200 -7200 1 PMDT} + {2140660800 -10800 0 PMST} + {2152155600 -7200 1 PMDT} + {2172715200 -10800 0 PMST} + {2183605200 -7200 1 PMDT} + {2204164800 -10800 0 PMST} + {2215054800 -7200 1 PMDT} + {2235614400 -10800 0 PMST} + {2246504400 -7200 1 PMDT} + {2267064000 -10800 0 PMST} + {2277954000 -7200 1 PMDT} + {2298513600 -10800 0 PMST} + {2309403600 -7200 1 PMDT} + {2329963200 -10800 0 PMST} + {2341458000 -7200 1 PMDT} + {2362017600 -10800 0 PMST} + {2372907600 -7200 1 PMDT} + {2393467200 -10800 0 PMST} + {2404357200 -7200 1 PMDT} + {2424916800 -10800 0 PMST} + {2435806800 -7200 1 PMDT} + {2456366400 -10800 0 PMST} + {2467256400 -7200 1 PMDT} + {2487816000 -10800 0 PMST} + {2499310800 -7200 1 PMDT} + {2519870400 -10800 0 PMST} + {2530760400 -7200 1 PMDT} + {2551320000 -10800 0 PMST} + {2562210000 -7200 1 PMDT} + {2582769600 -10800 0 PMST} + {2593659600 -7200 1 PMDT} + {2614219200 -10800 0 PMST} + {2625109200 -7200 1 PMDT} + {2645668800 -10800 0 PMST} + {2656558800 -7200 1 PMDT} + {2677118400 -10800 0 PMST} + {2688613200 -7200 1 PMDT} + {2709172800 -10800 0 PMST} + {2720062800 -7200 1 PMDT} + {2740622400 -10800 0 PMST} + {2751512400 -7200 1 PMDT} + {2772072000 -10800 0 PMST} + {2782962000 -7200 1 PMDT} + {2803521600 -10800 0 PMST} + {2814411600 -7200 1 PMDT} + {2834971200 -10800 0 PMST} + {2846466000 -7200 1 PMDT} + {2867025600 -10800 0 PMST} + {2877915600 -7200 1 PMDT} + {2898475200 -10800 0 PMST} + {2909365200 -7200 1 PMDT} + {2929924800 -10800 0 PMST} + {2940814800 -7200 1 PMDT} + {2961374400 -10800 0 PMST} + {2972264400 -7200 1 PMDT} + {2992824000 -10800 0 PMST} + {3003714000 -7200 1 PMDT} + {3024273600 -10800 0 PMST} + {3035768400 -7200 1 PMDT} + {3056328000 -10800 0 PMST} + {3067218000 -7200 1 PMDT} + {3087777600 -10800 0 PMST} + {3098667600 -7200 1 PMDT} + {3119227200 -10800 0 PMST} + {3130117200 -7200 1 PMDT} + {3150676800 -10800 0 PMST} + {3161566800 -7200 1 PMDT} + {3182126400 -10800 0 PMST} + {3193016400 -7200 1 PMDT} + {3213576000 -10800 0 PMST} + {3225070800 -7200 1 PMDT} + {3245630400 -10800 0 PMST} + {3256520400 -7200 1 PMDT} + {3277080000 -10800 0 PMST} + {3287970000 -7200 1 PMDT} + {3308529600 -10800 0 PMST} + {3319419600 -7200 1 PMDT} + {3339979200 -10800 0 PMST} + {3350869200 -7200 1 PMDT} + {3371428800 -10800 0 PMST} + {3382923600 -7200 1 PMDT} + {3403483200 -10800 0 PMST} + {3414373200 -7200 1 PMDT} + {3434932800 -10800 0 PMST} + {3445822800 -7200 1 PMDT} + {3466382400 -10800 0 PMST} + {3477272400 -7200 1 PMDT} + {3497832000 -10800 0 PMST} + {3508722000 -7200 1 PMDT} + {3529281600 -10800 0 PMST} + {3540171600 -7200 1 PMDT} + {3560731200 -10800 0 PMST} + {3572226000 -7200 1 PMDT} + {3592785600 -10800 0 PMST} + {3603675600 -7200 1 PMDT} + {3624235200 -10800 0 PMST} + {3635125200 -7200 1 PMDT} + {3655684800 -10800 0 PMST} + {3666574800 -7200 1 PMDT} + {3687134400 -10800 0 PMST} + {3698024400 -7200 1 PMDT} + {3718584000 -10800 0 PMST} + {3730078800 -7200 1 PMDT} + {3750638400 -10800 0 PMST} + {3761528400 -7200 1 PMDT} + {3782088000 -10800 0 PMST} + {3792978000 -7200 1 PMDT} + {3813537600 -10800 0 PMST} + {3824427600 -7200 1 PMDT} + {3844987200 -10800 0 PMST} + {3855877200 -7200 1 PMDT} + {3876436800 -10800 0 PMST} + {3887326800 -7200 1 PMDT} + {3907886400 -10800 0 PMST} + {3919381200 -7200 1 PMDT} + {3939940800 -10800 0 PMST} + {3950830800 -7200 1 PMDT} + {3971390400 -10800 0 PMST} + {3982280400 -7200 1 PMDT} + {4002840000 -10800 0 PMST} + {4013730000 -7200 1 PMDT} + {4034289600 -10800 0 PMST} + {4045179600 -7200 1 PMDT} + {4065739200 -10800 0 PMST} + {4076629200 -7200 1 PMDT} + {4097188800 -10800 0 PMST} +} diff --git a/library/tzdata/America/Moncton b/library/tzdata/America/Moncton index 408e3a1..9895582 100755 --- a/library/tzdata/America/Moncton +++ b/library/tzdata/America/Moncton @@ -1,342 +1,342 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Moncton) { - {-9223372036854775808 -15548 0 LMT} - {-2715882052 -18000 0 EST} - {-2131642800 -14400 0 AST} - {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} - {-1167595200 -14400 0 AST} - {-1153681200 -10800 1 ADT} - {-1145822400 -14400 0 AST} - {-1122231600 -10800 1 ADT} - {-1114372800 -14400 0 AST} - {-1090782000 -10800 1 ADT} - {-1082923200 -14400 0 AST} - {-1059332400 -10800 1 ADT} - {-1051473600 -14400 0 AST} - {-1027882800 -10800 1 ADT} - {-1020024000 -14400 0 AST} - {-996433200 -10800 1 ADT} - {-988574400 -14400 0 AST} - {-965674800 -10800 1 ADT} - {-955396800 -14400 0 AST} - {-934743600 -10800 1 ADT} - {-923947200 -14400 0 AST} - {-904503600 -10800 1 ADT} - {-891892800 -14400 0 AST} - {-883598400 -14400 0 AST} - {-880221600 -10800 1 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-757368000 -14400 0 AST} - {-747252000 -10800 1 ADT} - {-733950000 -14400 0 AST} - {-715802400 -10800 1 ADT} - {-702500400 -14400 0 AST} - {-684352800 -10800 1 ADT} - {-671050800 -14400 0 AST} - {-652903200 -10800 1 ADT} - {-639601200 -14400 0 AST} - {-620848800 -10800 1 ADT} - {-608151600 -14400 0 AST} - {-589399200 -10800 1 ADT} - {-576097200 -14400 0 AST} - {-557949600 -10800 1 ADT} - {-544647600 -14400 0 AST} - {-526500000 -10800 1 ADT} - {-513198000 -14400 0 AST} - {-495050400 -10800 1 ADT} - {-481748400 -14400 0 AST} - {-463600800 -10800 1 ADT} - {-450298800 -14400 0 AST} - {-431546400 -10800 1 ADT} - {-418244400 -14400 0 AST} - {-400096800 -10800 1 ADT} - {-384375600 -14400 0 AST} - {-368647200 -10800 1 ADT} - {-352926000 -14400 0 AST} - {-337197600 -10800 1 ADT} - {-321476400 -14400 0 AST} - {-305748000 -10800 1 ADT} - {-289422000 -14400 0 AST} - {-273693600 -10800 1 ADT} - {-257972400 -14400 0 AST} - {-242244000 -10800 1 ADT} - {-226522800 -14400 0 AST} - {-210794400 -10800 1 ADT} - {-195073200 -14400 0 AST} - {-179344800 -10800 1 ADT} - {-163623600 -14400 0 AST} - {-147895200 -10800 1 ADT} - {-131569200 -14400 0 AST} - {-116445600 -10800 1 ADT} - {-100119600 -14400 0 AST} - {-84391200 -10800 1 ADT} - {-68670000 -14400 0 AST} - {-52941600 -10800 1 ADT} - {-37220400 -14400 0 AST} - {-21492000 -10800 1 ADT} - {-5770800 -14400 0 AST} - {9957600 -10800 1 ADT} - {25678800 -14400 0 AST} - {41407200 -10800 1 ADT} - {57733200 -14400 0 AST} - {73461600 -10800 1 ADT} - {89182800 -14400 0 AST} - {94708800 -14400 0 AST} - {136360800 -10800 1 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {725860800 -14400 0 AST} - {733896060 -10800 1 ADT} - {752036460 -14400 0 AST} - {765345660 -10800 1 ADT} - {783486060 -14400 0 AST} - {796795260 -10800 1 ADT} - {814935660 -14400 0 AST} - {828849660 -10800 1 ADT} - {846385260 -14400 0 AST} - {860299260 -10800 1 ADT} - {877834860 -14400 0 AST} - {891748860 -10800 1 ADT} - {909284460 -14400 0 AST} - {923198460 -10800 1 ADT} - {941338860 -14400 0 AST} - {954648060 -10800 1 ADT} - {972788460 -14400 0 AST} - {986097660 -10800 1 ADT} - {1004238060 -14400 0 AST} - {1018152060 -10800 1 ADT} - {1035687660 -14400 0 AST} - {1049601660 -10800 1 ADT} - {1067137260 -14400 0 AST} - {1081051260 -10800 1 ADT} - {1099191660 -14400 0 AST} - {1112500860 -10800 1 ADT} - {1130641260 -14400 0 AST} - {1143950460 -10800 1 ADT} - {1162090860 -14400 0 AST} - {1167624000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Moncton) { + {-9223372036854775808 -15548 0 LMT} + {-2715882052 -18000 0 EST} + {-2131642800 -14400 0 AST} + {-1632074400 -10800 1 ADT} + {-1614798000 -14400 0 AST} + {-1167595200 -14400 0 AST} + {-1153681200 -10800 1 ADT} + {-1145822400 -14400 0 AST} + {-1122231600 -10800 1 ADT} + {-1114372800 -14400 0 AST} + {-1090782000 -10800 1 ADT} + {-1082923200 -14400 0 AST} + {-1059332400 -10800 1 ADT} + {-1051473600 -14400 0 AST} + {-1027882800 -10800 1 ADT} + {-1020024000 -14400 0 AST} + {-996433200 -10800 1 ADT} + {-988574400 -14400 0 AST} + {-965674800 -10800 1 ADT} + {-955396800 -14400 0 AST} + {-934743600 -10800 1 ADT} + {-923947200 -14400 0 AST} + {-904503600 -10800 1 ADT} + {-891892800 -14400 0 AST} + {-883598400 -14400 0 AST} + {-880221600 -10800 1 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-757368000 -14400 0 AST} + {-747252000 -10800 1 ADT} + {-733950000 -14400 0 AST} + {-715802400 -10800 1 ADT} + {-702500400 -14400 0 AST} + {-684352800 -10800 1 ADT} + {-671050800 -14400 0 AST} + {-652903200 -10800 1 ADT} + {-639601200 -14400 0 AST} + {-620848800 -10800 1 ADT} + {-608151600 -14400 0 AST} + {-589399200 -10800 1 ADT} + {-576097200 -14400 0 AST} + {-557949600 -10800 1 ADT} + {-544647600 -14400 0 AST} + {-526500000 -10800 1 ADT} + {-513198000 -14400 0 AST} + {-495050400 -10800 1 ADT} + {-481748400 -14400 0 AST} + {-463600800 -10800 1 ADT} + {-450298800 -14400 0 AST} + {-431546400 -10800 1 ADT} + {-418244400 -14400 0 AST} + {-400096800 -10800 1 ADT} + {-384375600 -14400 0 AST} + {-368647200 -10800 1 ADT} + {-352926000 -14400 0 AST} + {-337197600 -10800 1 ADT} + {-321476400 -14400 0 AST} + {-305748000 -10800 1 ADT} + {-289422000 -14400 0 AST} + {-273693600 -10800 1 ADT} + {-257972400 -14400 0 AST} + {-242244000 -10800 1 ADT} + {-226522800 -14400 0 AST} + {-210794400 -10800 1 ADT} + {-195073200 -14400 0 AST} + {-179344800 -10800 1 ADT} + {-163623600 -14400 0 AST} + {-147895200 -10800 1 ADT} + {-131569200 -14400 0 AST} + {-116445600 -10800 1 ADT} + {-100119600 -14400 0 AST} + {-84391200 -10800 1 ADT} + {-68670000 -14400 0 AST} + {-52941600 -10800 1 ADT} + {-37220400 -14400 0 AST} + {-21492000 -10800 1 ADT} + {-5770800 -14400 0 AST} + {9957600 -10800 1 ADT} + {25678800 -14400 0 AST} + {41407200 -10800 1 ADT} + {57733200 -14400 0 AST} + {73461600 -10800 1 ADT} + {89182800 -14400 0 AST} + {94708800 -14400 0 AST} + {136360800 -10800 1 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {725860800 -14400 0 AST} + {733896060 -10800 1 ADT} + {752036460 -14400 0 AST} + {765345660 -10800 1 ADT} + {783486060 -14400 0 AST} + {796795260 -10800 1 ADT} + {814935660 -14400 0 AST} + {828849660 -10800 1 ADT} + {846385260 -14400 0 AST} + {860299260 -10800 1 ADT} + {877834860 -14400 0 AST} + {891748860 -10800 1 ADT} + {909284460 -14400 0 AST} + {923198460 -10800 1 ADT} + {941338860 -14400 0 AST} + {954648060 -10800 1 ADT} + {972788460 -14400 0 AST} + {986097660 -10800 1 ADT} + {1004238060 -14400 0 AST} + {1018152060 -10800 1 ADT} + {1035687660 -14400 0 AST} + {1049601660 -10800 1 ADT} + {1067137260 -14400 0 AST} + {1081051260 -10800 1 ADT} + {1099191660 -14400 0 AST} + {1112500860 -10800 1 ADT} + {1130641260 -14400 0 AST} + {1143950460 -10800 1 ADT} + {1162090860 -14400 0 AST} + {1167624000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/America/Monterrey b/library/tzdata/America/Monterrey index 4135884..0db6106 100644 --- a/library/tzdata/America/Monterrey +++ b/library/tzdata/America/Monterrey @@ -1,218 +1,218 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Monterrey) { - {-9223372036854775808 -24076 0 LMT} - {-1514743200 -21600 0 CST} - {568015200 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {599637600 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {989136000 -18000 1 CDT} - {1001833200 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1175414400 -18000 1 CDT} - {1193554800 -21600 0 CST} - {1207468800 -18000 1 CDT} - {1225004400 -21600 0 CST} - {1238918400 -18000 1 CDT} - {1256454000 -21600 0 CST} - {1270368000 -18000 1 CDT} - {1288508400 -21600 0 CST} - {1301817600 -18000 1 CDT} - {1319958000 -21600 0 CST} - {1333267200 -18000 1 CDT} - {1351407600 -21600 0 CST} - {1365321600 -18000 1 CDT} - {1382857200 -21600 0 CST} - {1396771200 -18000 1 CDT} - {1414306800 -21600 0 CST} - {1428220800 -18000 1 CDT} - {1445756400 -21600 0 CST} - {1459670400 -18000 1 CDT} - {1477810800 -21600 0 CST} - {1491120000 -18000 1 CDT} - {1509260400 -21600 0 CST} - {1522569600 -18000 1 CDT} - {1540710000 -21600 0 CST} - {1554624000 -18000 1 CDT} - {1572159600 -21600 0 CST} - {1586073600 -18000 1 CDT} - {1603609200 -21600 0 CST} - {1617523200 -18000 1 CDT} - {1635663600 -21600 0 CST} - {1648972800 -18000 1 CDT} - {1667113200 -21600 0 CST} - {1680422400 -18000 1 CDT} - {1698562800 -21600 0 CST} - {1712476800 -18000 1 CDT} - {1730012400 -21600 0 CST} - {1743926400 -18000 1 CDT} - {1761462000 -21600 0 CST} - {1775376000 -18000 1 CDT} - {1792911600 -21600 0 CST} - {1806825600 -18000 1 CDT} - {1824966000 -21600 0 CST} - {1838275200 -18000 1 CDT} - {1856415600 -21600 0 CST} - {1869724800 -18000 1 CDT} - {1887865200 -21600 0 CST} - {1901779200 -18000 1 CDT} - {1919314800 -21600 0 CST} - {1933228800 -18000 1 CDT} - {1950764400 -21600 0 CST} - {1964678400 -18000 1 CDT} - {1982818800 -21600 0 CST} - {1996128000 -18000 1 CDT} - {2014268400 -21600 0 CST} - {2027577600 -18000 1 CDT} - {2045718000 -21600 0 CST} - {2059027200 -18000 1 CDT} - {2077167600 -21600 0 CST} - {2091081600 -18000 1 CDT} - {2108617200 -21600 0 CST} - {2122531200 -18000 1 CDT} - {2140066800 -21600 0 CST} - {2153980800 -18000 1 CDT} - {2172121200 -21600 0 CST} - {2185430400 -18000 1 CDT} - {2203570800 -21600 0 CST} - {2216880000 -18000 1 CDT} - {2235020400 -21600 0 CST} - {2248934400 -18000 1 CDT} - {2266470000 -21600 0 CST} - {2280384000 -18000 1 CDT} - {2297919600 -21600 0 CST} - {2311833600 -18000 1 CDT} - {2329369200 -21600 0 CST} - {2343283200 -18000 1 CDT} - {2361423600 -21600 0 CST} - {2374732800 -18000 1 CDT} - {2392873200 -21600 0 CST} - {2406182400 -18000 1 CDT} - {2424322800 -21600 0 CST} - {2438236800 -18000 1 CDT} - {2455772400 -21600 0 CST} - {2469686400 -18000 1 CDT} - {2487222000 -21600 0 CST} - {2501136000 -18000 1 CDT} - {2519276400 -21600 0 CST} - {2532585600 -18000 1 CDT} - {2550726000 -21600 0 CST} - {2564035200 -18000 1 CDT} - {2582175600 -21600 0 CST} - {2596089600 -18000 1 CDT} - {2613625200 -21600 0 CST} - {2627539200 -18000 1 CDT} - {2645074800 -21600 0 CST} - {2658988800 -18000 1 CDT} - {2676524400 -21600 0 CST} - {2690438400 -18000 1 CDT} - {2708578800 -21600 0 CST} - {2721888000 -18000 1 CDT} - {2740028400 -21600 0 CST} - {2753337600 -18000 1 CDT} - {2771478000 -21600 0 CST} - {2785392000 -18000 1 CDT} - {2802927600 -21600 0 CST} - {2816841600 -18000 1 CDT} - {2834377200 -21600 0 CST} - {2848291200 -18000 1 CDT} - {2866431600 -21600 0 CST} - {2879740800 -18000 1 CDT} - {2897881200 -21600 0 CST} - {2911190400 -18000 1 CDT} - {2929330800 -21600 0 CST} - {2942640000 -18000 1 CDT} - {2960780400 -21600 0 CST} - {2974694400 -18000 1 CDT} - {2992230000 -21600 0 CST} - {3006144000 -18000 1 CDT} - {3023679600 -21600 0 CST} - {3037593600 -18000 1 CDT} - {3055734000 -21600 0 CST} - {3069043200 -18000 1 CDT} - {3087183600 -21600 0 CST} - {3100492800 -18000 1 CDT} - {3118633200 -21600 0 CST} - {3132547200 -18000 1 CDT} - {3150082800 -21600 0 CST} - {3163996800 -18000 1 CDT} - {3181532400 -21600 0 CST} - {3195446400 -18000 1 CDT} - {3212982000 -21600 0 CST} - {3226896000 -18000 1 CDT} - {3245036400 -21600 0 CST} - {3258345600 -18000 1 CDT} - {3276486000 -21600 0 CST} - {3289795200 -18000 1 CDT} - {3307935600 -21600 0 CST} - {3321849600 -18000 1 CDT} - {3339385200 -21600 0 CST} - {3353299200 -18000 1 CDT} - {3370834800 -21600 0 CST} - {3384748800 -18000 1 CDT} - {3402889200 -21600 0 CST} - {3416198400 -18000 1 CDT} - {3434338800 -21600 0 CST} - {3447648000 -18000 1 CDT} - {3465788400 -21600 0 CST} - {3479702400 -18000 1 CDT} - {3497238000 -21600 0 CST} - {3511152000 -18000 1 CDT} - {3528687600 -21600 0 CST} - {3542601600 -18000 1 CDT} - {3560137200 -21600 0 CST} - {3574051200 -18000 1 CDT} - {3592191600 -21600 0 CST} - {3605500800 -18000 1 CDT} - {3623641200 -21600 0 CST} - {3636950400 -18000 1 CDT} - {3655090800 -21600 0 CST} - {3669004800 -18000 1 CDT} - {3686540400 -21600 0 CST} - {3700454400 -18000 1 CDT} - {3717990000 -21600 0 CST} - {3731904000 -18000 1 CDT} - {3750044400 -21600 0 CST} - {3763353600 -18000 1 CDT} - {3781494000 -21600 0 CST} - {3794803200 -18000 1 CDT} - {3812943600 -21600 0 CST} - {3826252800 -18000 1 CDT} - {3844393200 -21600 0 CST} - {3858307200 -18000 1 CDT} - {3875842800 -21600 0 CST} - {3889756800 -18000 1 CDT} - {3907292400 -21600 0 CST} - {3921206400 -18000 1 CDT} - {3939346800 -21600 0 CST} - {3952656000 -18000 1 CDT} - {3970796400 -21600 0 CST} - {3984105600 -18000 1 CDT} - {4002246000 -21600 0 CST} - {4016160000 -18000 1 CDT} - {4033695600 -21600 0 CST} - {4047609600 -18000 1 CDT} - {4065145200 -21600 0 CST} - {4079059200 -18000 1 CDT} - {4096594800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Monterrey) { + {-9223372036854775808 -24076 0 LMT} + {-1514743200 -21600 0 CST} + {568015200 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {599637600 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {989136000 -18000 1 CDT} + {1001833200 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1175414400 -18000 1 CDT} + {1193554800 -21600 0 CST} + {1207468800 -18000 1 CDT} + {1225004400 -21600 0 CST} + {1238918400 -18000 1 CDT} + {1256454000 -21600 0 CST} + {1270368000 -18000 1 CDT} + {1288508400 -21600 0 CST} + {1301817600 -18000 1 CDT} + {1319958000 -21600 0 CST} + {1333267200 -18000 1 CDT} + {1351407600 -21600 0 CST} + {1365321600 -18000 1 CDT} + {1382857200 -21600 0 CST} + {1396771200 -18000 1 CDT} + {1414306800 -21600 0 CST} + {1428220800 -18000 1 CDT} + {1445756400 -21600 0 CST} + {1459670400 -18000 1 CDT} + {1477810800 -21600 0 CST} + {1491120000 -18000 1 CDT} + {1509260400 -21600 0 CST} + {1522569600 -18000 1 CDT} + {1540710000 -21600 0 CST} + {1554624000 -18000 1 CDT} + {1572159600 -21600 0 CST} + {1586073600 -18000 1 CDT} + {1603609200 -21600 0 CST} + {1617523200 -18000 1 CDT} + {1635663600 -21600 0 CST} + {1648972800 -18000 1 CDT} + {1667113200 -21600 0 CST} + {1680422400 -18000 1 CDT} + {1698562800 -21600 0 CST} + {1712476800 -18000 1 CDT} + {1730012400 -21600 0 CST} + {1743926400 -18000 1 CDT} + {1761462000 -21600 0 CST} + {1775376000 -18000 1 CDT} + {1792911600 -21600 0 CST} + {1806825600 -18000 1 CDT} + {1824966000 -21600 0 CST} + {1838275200 -18000 1 CDT} + {1856415600 -21600 0 CST} + {1869724800 -18000 1 CDT} + {1887865200 -21600 0 CST} + {1901779200 -18000 1 CDT} + {1919314800 -21600 0 CST} + {1933228800 -18000 1 CDT} + {1950764400 -21600 0 CST} + {1964678400 -18000 1 CDT} + {1982818800 -21600 0 CST} + {1996128000 -18000 1 CDT} + {2014268400 -21600 0 CST} + {2027577600 -18000 1 CDT} + {2045718000 -21600 0 CST} + {2059027200 -18000 1 CDT} + {2077167600 -21600 0 CST} + {2091081600 -18000 1 CDT} + {2108617200 -21600 0 CST} + {2122531200 -18000 1 CDT} + {2140066800 -21600 0 CST} + {2153980800 -18000 1 CDT} + {2172121200 -21600 0 CST} + {2185430400 -18000 1 CDT} + {2203570800 -21600 0 CST} + {2216880000 -18000 1 CDT} + {2235020400 -21600 0 CST} + {2248934400 -18000 1 CDT} + {2266470000 -21600 0 CST} + {2280384000 -18000 1 CDT} + {2297919600 -21600 0 CST} + {2311833600 -18000 1 CDT} + {2329369200 -21600 0 CST} + {2343283200 -18000 1 CDT} + {2361423600 -21600 0 CST} + {2374732800 -18000 1 CDT} + {2392873200 -21600 0 CST} + {2406182400 -18000 1 CDT} + {2424322800 -21600 0 CST} + {2438236800 -18000 1 CDT} + {2455772400 -21600 0 CST} + {2469686400 -18000 1 CDT} + {2487222000 -21600 0 CST} + {2501136000 -18000 1 CDT} + {2519276400 -21600 0 CST} + {2532585600 -18000 1 CDT} + {2550726000 -21600 0 CST} + {2564035200 -18000 1 CDT} + {2582175600 -21600 0 CST} + {2596089600 -18000 1 CDT} + {2613625200 -21600 0 CST} + {2627539200 -18000 1 CDT} + {2645074800 -21600 0 CST} + {2658988800 -18000 1 CDT} + {2676524400 -21600 0 CST} + {2690438400 -18000 1 CDT} + {2708578800 -21600 0 CST} + {2721888000 -18000 1 CDT} + {2740028400 -21600 0 CST} + {2753337600 -18000 1 CDT} + {2771478000 -21600 0 CST} + {2785392000 -18000 1 CDT} + {2802927600 -21600 0 CST} + {2816841600 -18000 1 CDT} + {2834377200 -21600 0 CST} + {2848291200 -18000 1 CDT} + {2866431600 -21600 0 CST} + {2879740800 -18000 1 CDT} + {2897881200 -21600 0 CST} + {2911190400 -18000 1 CDT} + {2929330800 -21600 0 CST} + {2942640000 -18000 1 CDT} + {2960780400 -21600 0 CST} + {2974694400 -18000 1 CDT} + {2992230000 -21600 0 CST} + {3006144000 -18000 1 CDT} + {3023679600 -21600 0 CST} + {3037593600 -18000 1 CDT} + {3055734000 -21600 0 CST} + {3069043200 -18000 1 CDT} + {3087183600 -21600 0 CST} + {3100492800 -18000 1 CDT} + {3118633200 -21600 0 CST} + {3132547200 -18000 1 CDT} + {3150082800 -21600 0 CST} + {3163996800 -18000 1 CDT} + {3181532400 -21600 0 CST} + {3195446400 -18000 1 CDT} + {3212982000 -21600 0 CST} + {3226896000 -18000 1 CDT} + {3245036400 -21600 0 CST} + {3258345600 -18000 1 CDT} + {3276486000 -21600 0 CST} + {3289795200 -18000 1 CDT} + {3307935600 -21600 0 CST} + {3321849600 -18000 1 CDT} + {3339385200 -21600 0 CST} + {3353299200 -18000 1 CDT} + {3370834800 -21600 0 CST} + {3384748800 -18000 1 CDT} + {3402889200 -21600 0 CST} + {3416198400 -18000 1 CDT} + {3434338800 -21600 0 CST} + {3447648000 -18000 1 CDT} + {3465788400 -21600 0 CST} + {3479702400 -18000 1 CDT} + {3497238000 -21600 0 CST} + {3511152000 -18000 1 CDT} + {3528687600 -21600 0 CST} + {3542601600 -18000 1 CDT} + {3560137200 -21600 0 CST} + {3574051200 -18000 1 CDT} + {3592191600 -21600 0 CST} + {3605500800 -18000 1 CDT} + {3623641200 -21600 0 CST} + {3636950400 -18000 1 CDT} + {3655090800 -21600 0 CST} + {3669004800 -18000 1 CDT} + {3686540400 -21600 0 CST} + {3700454400 -18000 1 CDT} + {3717990000 -21600 0 CST} + {3731904000 -18000 1 CDT} + {3750044400 -21600 0 CST} + {3763353600 -18000 1 CDT} + {3781494000 -21600 0 CST} + {3794803200 -18000 1 CDT} + {3812943600 -21600 0 CST} + {3826252800 -18000 1 CDT} + {3844393200 -21600 0 CST} + {3858307200 -18000 1 CDT} + {3875842800 -21600 0 CST} + {3889756800 -18000 1 CDT} + {3907292400 -21600 0 CST} + {3921206400 -18000 1 CDT} + {3939346800 -21600 0 CST} + {3952656000 -18000 1 CDT} + {3970796400 -21600 0 CST} + {3984105600 -18000 1 CDT} + {4002246000 -21600 0 CST} + {4016160000 -18000 1 CDT} + {4033695600 -21600 0 CST} + {4047609600 -18000 1 CDT} + {4065145200 -21600 0 CST} + {4079059200 -18000 1 CDT} + {4096594800 -21600 0 CST} +} diff --git a/library/tzdata/America/Montevideo b/library/tzdata/America/Montevideo index aa469b9..7741fd2 100644 --- a/library/tzdata/America/Montevideo +++ b/library/tzdata/America/Montevideo @@ -1,261 +1,261 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Montevideo) { - {-9223372036854775808 -13484 0 LMT} - {-2256668116 -13484 0 MMT} - {-1567455316 -12600 0 UYT} - {-1459542600 -10800 1 UYHST} - {-1443819600 -12600 0 UYT} - {-1428006600 -10800 1 UYHST} - {-1412283600 -12600 0 UYT} - {-1396470600 -10800 1 UYHST} - {-1380747600 -12600 0 UYT} - {-1141590600 -10800 1 UYHST} - {-1128286800 -12600 0 UYT} - {-1110141000 -10800 1 UYHST} - {-1096837200 -12600 0 UYT} - {-1078691400 -10800 1 UYHST} - {-1065387600 -12600 0 UYT} - {-1046637000 -10800 1 UYHST} - {-1033938000 -12600 0 UYT} - {-1015187400 -10800 1 UYHST} - {-1002488400 -12600 0 UYT} - {-983737800 -10800 1 UYHST} - {-971038800 -12600 0 UYT} - {-952288200 -10800 1 UYHST} - {-938984400 -12600 0 UYT} - {-920838600 -10800 1 UYHST} - {-907534800 -12600 0 UYT} - {-896819400 -10800 1 UYHST} - {-853623000 -10800 0 UYT} - {-853621200 -7200 1 UYST} - {-845848800 -10800 0 UYT} - {-334789200 -7200 1 UYST} - {-319672800 -10800 0 UYT} - {-314226000 -7200 1 UYST} - {-309996000 -10800 0 UYT} - {-149720400 -7200 1 UYST} - {-134604000 -10800 0 UYT} - {-118270800 -7200 1 UYST} - {-100044000 -10800 0 UYT} - {-86821200 -7200 1 UYST} - {-68508000 -10800 0 UYT} - {-50446800 -9000 1 UYHST} - {-34119000 -10800 0 UYT} - {-18910800 -9000 1 UYHST} - {-2583000 -10800 0 UYT} - {12625200 -9000 1 UYHST} - {28953000 -10800 0 UYT} - {72932400 -7200 1 UYST} - {82692000 -10800 0 UYT} - {132116400 -9000 1 UYHST} - {156911400 -7200 1 UYST} - {212983200 -10800 0 UYT} - {250052400 -7200 1 UYST} - {260244000 -10800 0 UYT} - {307594800 -7200 1 UYST} - {325994400 -10800 0 UYT} - {566449200 -7200 1 UYST} - {574308000 -10800 0 UYT} - {597812400 -7200 1 UYST} - {605671200 -10800 0 UYT} - {625633200 -7200 1 UYST} - {636516000 -10800 0 UYT} - {656478000 -7200 1 UYST} - {667965600 -10800 0 UYT} - {688532400 -7200 1 UYST} - {699415200 -10800 0 UYT} - {719377200 -7200 1 UYST} - {730864800 -10800 0 UYT} - {1095562800 -7200 1 UYST} - {1111896000 -10800 0 UYT} - {1128834000 -7200 1 UYST} - {1142136000 -10800 0 UYT} - {1159678800 -7200 1 UYST} - {1173585600 -10800 0 UYT} - {1191733200 -7200 1 UYST} - {1205035200 -10800 0 UYT} - {1223182800 -7200 1 UYST} - {1236484800 -10800 0 UYT} - {1254632400 -7200 1 UYST} - {1268539200 -10800 0 UYT} - {1286082000 -7200 1 UYST} - {1299988800 -10800 0 UYT} - {1317531600 -7200 1 UYST} - {1331438400 -10800 0 UYT} - {1349586000 -7200 1 UYST} - {1362888000 -10800 0 UYT} - {1381035600 -7200 1 UYST} - {1394337600 -10800 0 UYT} - {1412485200 -7200 1 UYST} - {1425787200 -10800 0 UYT} - {1443934800 -7200 1 UYST} - {1457841600 -10800 0 UYT} - {1475384400 -7200 1 UYST} - {1489291200 -10800 0 UYT} - {1506834000 -7200 1 UYST} - {1520740800 -10800 0 UYT} - {1538888400 -7200 1 UYST} - {1552190400 -10800 0 UYT} - {1570338000 -7200 1 UYST} - {1583640000 -10800 0 UYT} - {1601787600 -7200 1 UYST} - {1615694400 -10800 0 UYT} - {1633237200 -7200 1 UYST} - {1647144000 -10800 0 UYT} - {1664686800 -7200 1 UYST} - {1678593600 -10800 0 UYT} - {1696136400 -7200 1 UYST} - {1710043200 -10800 0 UYT} - {1728190800 -7200 1 UYST} - {1741492800 -10800 0 UYT} - {1759640400 -7200 1 UYST} - {1772942400 -10800 0 UYT} - {1791090000 -7200 1 UYST} - {1804996800 -10800 0 UYT} - {1822539600 -7200 1 UYST} - {1836446400 -10800 0 UYT} - {1853989200 -7200 1 UYST} - {1867896000 -10800 0 UYT} - {1886043600 -7200 1 UYST} - {1899345600 -10800 0 UYT} - {1917493200 -7200 1 UYST} - {1930795200 -10800 0 UYT} - {1948942800 -7200 1 UYST} - {1962849600 -10800 0 UYT} - {1980392400 -7200 1 UYST} - {1994299200 -10800 0 UYT} - {2011842000 -7200 1 UYST} - {2025748800 -10800 0 UYT} - {2043291600 -7200 1 UYST} - {2057198400 -10800 0 UYT} - {2075346000 -7200 1 UYST} - {2088648000 -10800 0 UYT} - {2106795600 -7200 1 UYST} - {2120097600 -10800 0 UYT} - {2138245200 -7200 1 UYST} - {2152152000 -10800 0 UYT} - {2169694800 -7200 1 UYST} - {2183601600 -10800 0 UYT} - {2201144400 -7200 1 UYST} - {2215051200 -10800 0 UYT} - {2233198800 -7200 1 UYST} - {2246500800 -10800 0 UYT} - {2264648400 -7200 1 UYST} - {2277950400 -10800 0 UYT} - {2296098000 -7200 1 UYST} - {2309400000 -10800 0 UYT} - {2327547600 -7200 1 UYST} - {2341454400 -10800 0 UYT} - {2358997200 -7200 1 UYST} - {2372904000 -10800 0 UYT} - {2390446800 -7200 1 UYST} - {2404353600 -10800 0 UYT} - {2422501200 -7200 1 UYST} - {2435803200 -10800 0 UYT} - {2453950800 -7200 1 UYST} - {2467252800 -10800 0 UYT} - {2485400400 -7200 1 UYST} - {2499307200 -10800 0 UYT} - {2516850000 -7200 1 UYST} - {2530756800 -10800 0 UYT} - {2548299600 -7200 1 UYST} - {2562206400 -10800 0 UYT} - {2579749200 -7200 1 UYST} - {2593656000 -10800 0 UYT} - {2611803600 -7200 1 UYST} - {2625105600 -10800 0 UYT} - {2643253200 -7200 1 UYST} - {2656555200 -10800 0 UYT} - {2674702800 -7200 1 UYST} - {2688609600 -10800 0 UYT} - {2706152400 -7200 1 UYST} - {2720059200 -10800 0 UYT} - {2737602000 -7200 1 UYST} - {2751508800 -10800 0 UYT} - {2769656400 -7200 1 UYST} - {2782958400 -10800 0 UYT} - {2801106000 -7200 1 UYST} - {2814408000 -10800 0 UYT} - {2832555600 -7200 1 UYST} - {2846462400 -10800 0 UYT} - {2864005200 -7200 1 UYST} - {2877912000 -10800 0 UYT} - {2895454800 -7200 1 UYST} - {2909361600 -10800 0 UYT} - {2926904400 -7200 1 UYST} - {2940811200 -10800 0 UYT} - {2958958800 -7200 1 UYST} - {2972260800 -10800 0 UYT} - {2990408400 -7200 1 UYST} - {3003710400 -10800 0 UYT} - {3021858000 -7200 1 UYST} - {3035764800 -10800 0 UYT} - {3053307600 -7200 1 UYST} - {3067214400 -10800 0 UYT} - {3084757200 -7200 1 UYST} - {3098664000 -10800 0 UYT} - {3116811600 -7200 1 UYST} - {3130113600 -10800 0 UYT} - {3148261200 -7200 1 UYST} - {3161563200 -10800 0 UYT} - {3179710800 -7200 1 UYST} - {3193012800 -10800 0 UYT} - {3211160400 -7200 1 UYST} - {3225067200 -10800 0 UYT} - {3242610000 -7200 1 UYST} - {3256516800 -10800 0 UYT} - {3274059600 -7200 1 UYST} - {3287966400 -10800 0 UYT} - {3306114000 -7200 1 UYST} - {3319416000 -10800 0 UYT} - {3337563600 -7200 1 UYST} - {3350865600 -10800 0 UYT} - {3369013200 -7200 1 UYST} - {3382920000 -10800 0 UYT} - {3400462800 -7200 1 UYST} - {3414369600 -10800 0 UYT} - {3431912400 -7200 1 UYST} - {3445819200 -10800 0 UYT} - {3463362000 -7200 1 UYST} - {3477268800 -10800 0 UYT} - {3495416400 -7200 1 UYST} - {3508718400 -10800 0 UYT} - {3526866000 -7200 1 UYST} - {3540168000 -10800 0 UYT} - {3558315600 -7200 1 UYST} - {3572222400 -10800 0 UYT} - {3589765200 -7200 1 UYST} - {3603672000 -10800 0 UYT} - {3621214800 -7200 1 UYST} - {3635121600 -10800 0 UYT} - {3653269200 -7200 1 UYST} - {3666571200 -10800 0 UYT} - {3684718800 -7200 1 UYST} - {3698020800 -10800 0 UYT} - {3716168400 -7200 1 UYST} - {3730075200 -10800 0 UYT} - {3747618000 -7200 1 UYST} - {3761524800 -10800 0 UYT} - {3779067600 -7200 1 UYST} - {3792974400 -10800 0 UYT} - {3810517200 -7200 1 UYST} - {3824424000 -10800 0 UYT} - {3842571600 -7200 1 UYST} - {3855873600 -10800 0 UYT} - {3874021200 -7200 1 UYST} - {3887323200 -10800 0 UYT} - {3905470800 -7200 1 UYST} - {3919377600 -10800 0 UYT} - {3936920400 -7200 1 UYST} - {3950827200 -10800 0 UYT} - {3968370000 -7200 1 UYST} - {3982276800 -10800 0 UYT} - {4000424400 -7200 1 UYST} - {4013726400 -10800 0 UYT} - {4031874000 -7200 1 UYST} - {4045176000 -10800 0 UYT} - {4063323600 -7200 1 UYST} - {4076625600 -10800 0 UYT} - {4094773200 -7200 1 UYST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Montevideo) { + {-9223372036854775808 -13484 0 LMT} + {-2256668116 -13484 0 MMT} + {-1567455316 -12600 0 UYT} + {-1459542600 -10800 1 UYHST} + {-1443819600 -12600 0 UYT} + {-1428006600 -10800 1 UYHST} + {-1412283600 -12600 0 UYT} + {-1396470600 -10800 1 UYHST} + {-1380747600 -12600 0 UYT} + {-1141590600 -10800 1 UYHST} + {-1128286800 -12600 0 UYT} + {-1110141000 -10800 1 UYHST} + {-1096837200 -12600 0 UYT} + {-1078691400 -10800 1 UYHST} + {-1065387600 -12600 0 UYT} + {-1046637000 -10800 1 UYHST} + {-1033938000 -12600 0 UYT} + {-1015187400 -10800 1 UYHST} + {-1002488400 -12600 0 UYT} + {-983737800 -10800 1 UYHST} + {-971038800 -12600 0 UYT} + {-952288200 -10800 1 UYHST} + {-938984400 -12600 0 UYT} + {-920838600 -10800 1 UYHST} + {-907534800 -12600 0 UYT} + {-896819400 -10800 1 UYHST} + {-853623000 -10800 0 UYT} + {-853621200 -7200 1 UYST} + {-845848800 -10800 0 UYT} + {-334789200 -7200 1 UYST} + {-319672800 -10800 0 UYT} + {-314226000 -7200 1 UYST} + {-309996000 -10800 0 UYT} + {-149720400 -7200 1 UYST} + {-134604000 -10800 0 UYT} + {-118270800 -7200 1 UYST} + {-100044000 -10800 0 UYT} + {-86821200 -7200 1 UYST} + {-68508000 -10800 0 UYT} + {-50446800 -9000 1 UYHST} + {-34119000 -10800 0 UYT} + {-18910800 -9000 1 UYHST} + {-2583000 -10800 0 UYT} + {12625200 -9000 1 UYHST} + {28953000 -10800 0 UYT} + {72932400 -7200 1 UYST} + {82692000 -10800 0 UYT} + {132116400 -9000 1 UYHST} + {156911400 -7200 1 UYST} + {212983200 -10800 0 UYT} + {250052400 -7200 1 UYST} + {260244000 -10800 0 UYT} + {307594800 -7200 1 UYST} + {325994400 -10800 0 UYT} + {566449200 -7200 1 UYST} + {574308000 -10800 0 UYT} + {597812400 -7200 1 UYST} + {605671200 -10800 0 UYT} + {625633200 -7200 1 UYST} + {636516000 -10800 0 UYT} + {656478000 -7200 1 UYST} + {667965600 -10800 0 UYT} + {688532400 -7200 1 UYST} + {699415200 -10800 0 UYT} + {719377200 -7200 1 UYST} + {730864800 -10800 0 UYT} + {1095562800 -7200 1 UYST} + {1111896000 -10800 0 UYT} + {1128834000 -7200 1 UYST} + {1142136000 -10800 0 UYT} + {1159678800 -7200 1 UYST} + {1173585600 -10800 0 UYT} + {1191733200 -7200 1 UYST} + {1205035200 -10800 0 UYT} + {1223182800 -7200 1 UYST} + {1236484800 -10800 0 UYT} + {1254632400 -7200 1 UYST} + {1268539200 -10800 0 UYT} + {1286082000 -7200 1 UYST} + {1299988800 -10800 0 UYT} + {1317531600 -7200 1 UYST} + {1331438400 -10800 0 UYT} + {1349586000 -7200 1 UYST} + {1362888000 -10800 0 UYT} + {1381035600 -7200 1 UYST} + {1394337600 -10800 0 UYT} + {1412485200 -7200 1 UYST} + {1425787200 -10800 0 UYT} + {1443934800 -7200 1 UYST} + {1457841600 -10800 0 UYT} + {1475384400 -7200 1 UYST} + {1489291200 -10800 0 UYT} + {1506834000 -7200 1 UYST} + {1520740800 -10800 0 UYT} + {1538888400 -7200 1 UYST} + {1552190400 -10800 0 UYT} + {1570338000 -7200 1 UYST} + {1583640000 -10800 0 UYT} + {1601787600 -7200 1 UYST} + {1615694400 -10800 0 UYT} + {1633237200 -7200 1 UYST} + {1647144000 -10800 0 UYT} + {1664686800 -7200 1 UYST} + {1678593600 -10800 0 UYT} + {1696136400 -7200 1 UYST} + {1710043200 -10800 0 UYT} + {1728190800 -7200 1 UYST} + {1741492800 -10800 0 UYT} + {1759640400 -7200 1 UYST} + {1772942400 -10800 0 UYT} + {1791090000 -7200 1 UYST} + {1804996800 -10800 0 UYT} + {1822539600 -7200 1 UYST} + {1836446400 -10800 0 UYT} + {1853989200 -7200 1 UYST} + {1867896000 -10800 0 UYT} + {1886043600 -7200 1 UYST} + {1899345600 -10800 0 UYT} + {1917493200 -7200 1 UYST} + {1930795200 -10800 0 UYT} + {1948942800 -7200 1 UYST} + {1962849600 -10800 0 UYT} + {1980392400 -7200 1 UYST} + {1994299200 -10800 0 UYT} + {2011842000 -7200 1 UYST} + {2025748800 -10800 0 UYT} + {2043291600 -7200 1 UYST} + {2057198400 -10800 0 UYT} + {2075346000 -7200 1 UYST} + {2088648000 -10800 0 UYT} + {2106795600 -7200 1 UYST} + {2120097600 -10800 0 UYT} + {2138245200 -7200 1 UYST} + {2152152000 -10800 0 UYT} + {2169694800 -7200 1 UYST} + {2183601600 -10800 0 UYT} + {2201144400 -7200 1 UYST} + {2215051200 -10800 0 UYT} + {2233198800 -7200 1 UYST} + {2246500800 -10800 0 UYT} + {2264648400 -7200 1 UYST} + {2277950400 -10800 0 UYT} + {2296098000 -7200 1 UYST} + {2309400000 -10800 0 UYT} + {2327547600 -7200 1 UYST} + {2341454400 -10800 0 UYT} + {2358997200 -7200 1 UYST} + {2372904000 -10800 0 UYT} + {2390446800 -7200 1 UYST} + {2404353600 -10800 0 UYT} + {2422501200 -7200 1 UYST} + {2435803200 -10800 0 UYT} + {2453950800 -7200 1 UYST} + {2467252800 -10800 0 UYT} + {2485400400 -7200 1 UYST} + {2499307200 -10800 0 UYT} + {2516850000 -7200 1 UYST} + {2530756800 -10800 0 UYT} + {2548299600 -7200 1 UYST} + {2562206400 -10800 0 UYT} + {2579749200 -7200 1 UYST} + {2593656000 -10800 0 UYT} + {2611803600 -7200 1 UYST} + {2625105600 -10800 0 UYT} + {2643253200 -7200 1 UYST} + {2656555200 -10800 0 UYT} + {2674702800 -7200 1 UYST} + {2688609600 -10800 0 UYT} + {2706152400 -7200 1 UYST} + {2720059200 -10800 0 UYT} + {2737602000 -7200 1 UYST} + {2751508800 -10800 0 UYT} + {2769656400 -7200 1 UYST} + {2782958400 -10800 0 UYT} + {2801106000 -7200 1 UYST} + {2814408000 -10800 0 UYT} + {2832555600 -7200 1 UYST} + {2846462400 -10800 0 UYT} + {2864005200 -7200 1 UYST} + {2877912000 -10800 0 UYT} + {2895454800 -7200 1 UYST} + {2909361600 -10800 0 UYT} + {2926904400 -7200 1 UYST} + {2940811200 -10800 0 UYT} + {2958958800 -7200 1 UYST} + {2972260800 -10800 0 UYT} + {2990408400 -7200 1 UYST} + {3003710400 -10800 0 UYT} + {3021858000 -7200 1 UYST} + {3035764800 -10800 0 UYT} + {3053307600 -7200 1 UYST} + {3067214400 -10800 0 UYT} + {3084757200 -7200 1 UYST} + {3098664000 -10800 0 UYT} + {3116811600 -7200 1 UYST} + {3130113600 -10800 0 UYT} + {3148261200 -7200 1 UYST} + {3161563200 -10800 0 UYT} + {3179710800 -7200 1 UYST} + {3193012800 -10800 0 UYT} + {3211160400 -7200 1 UYST} + {3225067200 -10800 0 UYT} + {3242610000 -7200 1 UYST} + {3256516800 -10800 0 UYT} + {3274059600 -7200 1 UYST} + {3287966400 -10800 0 UYT} + {3306114000 -7200 1 UYST} + {3319416000 -10800 0 UYT} + {3337563600 -7200 1 UYST} + {3350865600 -10800 0 UYT} + {3369013200 -7200 1 UYST} + {3382920000 -10800 0 UYT} + {3400462800 -7200 1 UYST} + {3414369600 -10800 0 UYT} + {3431912400 -7200 1 UYST} + {3445819200 -10800 0 UYT} + {3463362000 -7200 1 UYST} + {3477268800 -10800 0 UYT} + {3495416400 -7200 1 UYST} + {3508718400 -10800 0 UYT} + {3526866000 -7200 1 UYST} + {3540168000 -10800 0 UYT} + {3558315600 -7200 1 UYST} + {3572222400 -10800 0 UYT} + {3589765200 -7200 1 UYST} + {3603672000 -10800 0 UYT} + {3621214800 -7200 1 UYST} + {3635121600 -10800 0 UYT} + {3653269200 -7200 1 UYST} + {3666571200 -10800 0 UYT} + {3684718800 -7200 1 UYST} + {3698020800 -10800 0 UYT} + {3716168400 -7200 1 UYST} + {3730075200 -10800 0 UYT} + {3747618000 -7200 1 UYST} + {3761524800 -10800 0 UYT} + {3779067600 -7200 1 UYST} + {3792974400 -10800 0 UYT} + {3810517200 -7200 1 UYST} + {3824424000 -10800 0 UYT} + {3842571600 -7200 1 UYST} + {3855873600 -10800 0 UYT} + {3874021200 -7200 1 UYST} + {3887323200 -10800 0 UYT} + {3905470800 -7200 1 UYST} + {3919377600 -10800 0 UYT} + {3936920400 -7200 1 UYST} + {3950827200 -10800 0 UYT} + {3968370000 -7200 1 UYST} + {3982276800 -10800 0 UYT} + {4000424400 -7200 1 UYST} + {4013726400 -10800 0 UYT} + {4031874000 -7200 1 UYST} + {4045176000 -10800 0 UYT} + {4063323600 -7200 1 UYST} + {4076625600 -10800 0 UYT} + {4094773200 -7200 1 UYST} +} diff --git a/library/tzdata/America/Montreal b/library/tzdata/America/Montreal index b9535eb..47e60ea 100644 --- a/library/tzdata/America/Montreal +++ b/library/tzdata/America/Montreal @@ -1,366 +1,366 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Montreal) { - {-9223372036854775808 -17656 0 LMT} - {-2713892744 -18000 0 EST} - {-1665334800 -14400 1 EDT} - {-1662753600 -18000 0 EST} - {-1640977200 -18000 0 EST} - {-1632070800 -14400 1 EDT} - {-1614794400 -18000 0 EST} - {-1609441200 -18000 0 EST} - {-1601742600 -14400 1 EDT} - {-1583775000 -18000 0 EST} - {-1567355400 -14400 1 EDT} - {-1554053400 -18000 0 EST} - {-1535907600 -14400 1 EDT} - {-1522603800 -18000 0 EST} - {-1504458000 -14400 1 EDT} - {-1491154200 -18000 0 EST} - {-1439830800 -14400 1 EDT} - {-1428255000 -18000 0 EST} - {-1409504400 -14400 1 EDT} - {-1396805400 -18000 0 EST} - {-1378054800 -14400 1 EDT} - {-1365355800 -18000 0 EST} - {-1346612400 -14400 1 EDT} - {-1333915200 -18000 0 EST} - {-1315162800 -14400 1 EDT} - {-1301860800 -18000 0 EST} - {-1283713200 -14400 1 EDT} - {-1270411200 -18000 0 EST} - {-1252263600 -14400 1 EDT} - {-1238961600 -18000 0 EST} - {-1220814000 -14400 1 EDT} - {-1207512000 -18000 0 EST} - {-1188759600 -14400 1 EDT} - {-1176062400 -18000 0 EST} - {-1157310000 -14400 1 EDT} - {-1144008000 -18000 0 EST} - {-1125860400 -14400 1 EDT} - {-1112558400 -18000 0 EST} - {-1094410800 -14400 1 EDT} - {-1081108800 -18000 0 EST} - {-1062961200 -14400 1 EDT} - {-1049659200 -18000 0 EST} - {-1031511600 -14400 1 EDT} - {-1018209600 -18000 0 EST} - {-1000062000 -14400 1 EDT} - {-986760000 -18000 0 EST} - {-968007600 -14400 1 EDT} - {-955310400 -18000 0 EST} - {-936558000 -14400 1 EDT} - {-880218000 -14400 0 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-757364400 -18000 0 EST} - {-747248400 -14400 1 EDT} - {-733946400 -18000 0 EST} - {-715798800 -14400 1 EDT} - {-702496800 -18000 0 EST} - {-684349200 -14400 1 EDT} - {-671047200 -18000 0 EST} - {-652899600 -14400 1 EDT} - {-636573600 -18000 0 EST} - {-620845200 -14400 1 EDT} - {-605124000 -18000 0 EST} - {-589395600 -14400 1 EDT} - {-576093600 -18000 0 EST} - {-557946000 -14400 1 EDT} - {-544644000 -18000 0 EST} - {-526496400 -14400 1 EDT} - {-513194400 -18000 0 EST} - {-495046800 -14400 1 EDT} - {-481744800 -18000 0 EST} - {-463597200 -14400 1 EDT} - {-450295200 -18000 0 EST} - {-431542800 -14400 1 EDT} - {-418240800 -18000 0 EST} - {-400093200 -14400 1 EDT} - {-384372000 -18000 0 EST} - {-368643600 -14400 1 EDT} - {-352922400 -18000 0 EST} - {-337194000 -14400 1 EDT} - {-321472800 -18000 0 EST} - {-305744400 -14400 1 EDT} - {-289418400 -18000 0 EST} - {-273690000 -14400 1 EDT} - {-257968800 -18000 0 EST} - {-242240400 -14400 1 EDT} - {-226519200 -18000 0 EST} - {-210790800 -14400 1 EDT} - {-195069600 -18000 0 EST} - {-179341200 -14400 1 EDT} - {-163620000 -18000 0 EST} - {-147891600 -14400 1 EDT} - {-131565600 -18000 0 EST} - {-116442000 -14400 1 EDT} - {-100116000 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126248400 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Montreal) { + {-9223372036854775808 -17656 0 LMT} + {-2713892744 -18000 0 EST} + {-1665334800 -14400 1 EDT} + {-1662753600 -18000 0 EST} + {-1640977200 -18000 0 EST} + {-1632070800 -14400 1 EDT} + {-1614794400 -18000 0 EST} + {-1609441200 -18000 0 EST} + {-1601742600 -14400 1 EDT} + {-1583775000 -18000 0 EST} + {-1567355400 -14400 1 EDT} + {-1554053400 -18000 0 EST} + {-1535907600 -14400 1 EDT} + {-1522603800 -18000 0 EST} + {-1504458000 -14400 1 EDT} + {-1491154200 -18000 0 EST} + {-1439830800 -14400 1 EDT} + {-1428255000 -18000 0 EST} + {-1409504400 -14400 1 EDT} + {-1396805400 -18000 0 EST} + {-1378054800 -14400 1 EDT} + {-1365355800 -18000 0 EST} + {-1346612400 -14400 1 EDT} + {-1333915200 -18000 0 EST} + {-1315162800 -14400 1 EDT} + {-1301860800 -18000 0 EST} + {-1283713200 -14400 1 EDT} + {-1270411200 -18000 0 EST} + {-1252263600 -14400 1 EDT} + {-1238961600 -18000 0 EST} + {-1220814000 -14400 1 EDT} + {-1207512000 -18000 0 EST} + {-1188759600 -14400 1 EDT} + {-1176062400 -18000 0 EST} + {-1157310000 -14400 1 EDT} + {-1144008000 -18000 0 EST} + {-1125860400 -14400 1 EDT} + {-1112558400 -18000 0 EST} + {-1094410800 -14400 1 EDT} + {-1081108800 -18000 0 EST} + {-1062961200 -14400 1 EDT} + {-1049659200 -18000 0 EST} + {-1031511600 -14400 1 EDT} + {-1018209600 -18000 0 EST} + {-1000062000 -14400 1 EDT} + {-986760000 -18000 0 EST} + {-968007600 -14400 1 EDT} + {-955310400 -18000 0 EST} + {-936558000 -14400 1 EDT} + {-880218000 -14400 0 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-757364400 -18000 0 EST} + {-747248400 -14400 1 EDT} + {-733946400 -18000 0 EST} + {-715798800 -14400 1 EDT} + {-702496800 -18000 0 EST} + {-684349200 -14400 1 EDT} + {-671047200 -18000 0 EST} + {-652899600 -14400 1 EDT} + {-636573600 -18000 0 EST} + {-620845200 -14400 1 EDT} + {-605124000 -18000 0 EST} + {-589395600 -14400 1 EDT} + {-576093600 -18000 0 EST} + {-557946000 -14400 1 EDT} + {-544644000 -18000 0 EST} + {-526496400 -14400 1 EDT} + {-513194400 -18000 0 EST} + {-495046800 -14400 1 EDT} + {-481744800 -18000 0 EST} + {-463597200 -14400 1 EDT} + {-450295200 -18000 0 EST} + {-431542800 -14400 1 EDT} + {-418240800 -18000 0 EST} + {-400093200 -14400 1 EDT} + {-384372000 -18000 0 EST} + {-368643600 -14400 1 EDT} + {-352922400 -18000 0 EST} + {-337194000 -14400 1 EDT} + {-321472800 -18000 0 EST} + {-305744400 -14400 1 EDT} + {-289418400 -18000 0 EST} + {-273690000 -14400 1 EDT} + {-257968800 -18000 0 EST} + {-242240400 -14400 1 EDT} + {-226519200 -18000 0 EST} + {-210790800 -14400 1 EDT} + {-195069600 -18000 0 EST} + {-179341200 -14400 1 EDT} + {-163620000 -18000 0 EST} + {-147891600 -14400 1 EDT} + {-131565600 -18000 0 EST} + {-116442000 -14400 1 EDT} + {-100116000 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126248400 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Montserrat b/library/tzdata/America/Montserrat index 4d82766..7b22fcd 100644 --- a/library/tzdata/America/Montserrat +++ b/library/tzdata/America/Montserrat @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Montserrat) { - {-9223372036854775808 -14932 0 LMT} - {-1846266608 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Montserrat) { + {-9223372036854775808 -14932 0 LMT} + {-1846266608 -14400 0 AST} +} diff --git a/library/tzdata/America/Nassau b/library/tzdata/America/Nassau index 06c5f06..28a2942 100644 --- a/library/tzdata/America/Nassau +++ b/library/tzdata/America/Nassau @@ -1,279 +1,279 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Nassau) { - {-9223372036854775808 -18564 0 LMT} - {-1825095036 -18000 0 EST} - {-179341200 -14400 1 EDT} - {-163620000 -18000 0 EST} - {-147891600 -14400 1 EDT} - {-131565600 -18000 0 EST} - {-116442000 -14400 1 EDT} - {-100116000 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {189320400 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Nassau) { + {-9223372036854775808 -18564 0 LMT} + {-1825095036 -18000 0 EST} + {-179341200 -14400 1 EDT} + {-163620000 -18000 0 EST} + {-147891600 -14400 1 EDT} + {-131565600 -18000 0 EST} + {-116442000 -14400 1 EDT} + {-100116000 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {189320400 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/New_York b/library/tzdata/America/New_York index 72f2c96..3c52355 100644 --- a/library/tzdata/America/New_York +++ b/library/tzdata/America/New_York @@ -1,369 +1,369 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/New_York) { - {-9223372036854775808 -17762 0 LMT} - {-2717650800 -18000 0 EST} - {-1633280400 -14400 1 EDT} - {-1615140000 -18000 0 EST} - {-1601830800 -14400 1 EDT} - {-1583690400 -18000 0 EST} - {-1577905200 -18000 0 EST} - {-1570381200 -14400 1 EDT} - {-1551636000 -18000 0 EST} - {-1536512400 -14400 1 EDT} - {-1523210400 -18000 0 EST} - {-1504458000 -14400 1 EDT} - {-1491760800 -18000 0 EST} - {-1473008400 -14400 1 EDT} - {-1459706400 -18000 0 EST} - {-1441558800 -14400 1 EDT} - {-1428256800 -18000 0 EST} - {-1410109200 -14400 1 EDT} - {-1396807200 -18000 0 EST} - {-1378659600 -14400 1 EDT} - {-1365357600 -18000 0 EST} - {-1347210000 -14400 1 EDT} - {-1333908000 -18000 0 EST} - {-1315155600 -14400 1 EDT} - {-1301853600 -18000 0 EST} - {-1283706000 -14400 1 EDT} - {-1270404000 -18000 0 EST} - {-1252256400 -14400 1 EDT} - {-1238954400 -18000 0 EST} - {-1220806800 -14400 1 EDT} - {-1207504800 -18000 0 EST} - {-1189357200 -14400 1 EDT} - {-1176055200 -18000 0 EST} - {-1157302800 -14400 1 EDT} - {-1144605600 -18000 0 EST} - {-1125853200 -14400 1 EDT} - {-1112551200 -18000 0 EST} - {-1094403600 -14400 1 EDT} - {-1081101600 -18000 0 EST} - {-1062954000 -14400 1 EDT} - {-1049652000 -18000 0 EST} - {-1031504400 -14400 1 EDT} - {-1018202400 -18000 0 EST} - {-1000054800 -14400 1 EDT} - {-986752800 -18000 0 EST} - {-968000400 -14400 1 EDT} - {-955303200 -18000 0 EST} - {-936550800 -14400 1 EDT} - {-923248800 -18000 0 EST} - {-905101200 -14400 1 EDT} - {-891799200 -18000 0 EST} - {-883594800 -18000 0 EST} - {-880218000 -14400 1 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-757364400 -18000 0 EST} - {-747248400 -14400 1 EDT} - {-733946400 -18000 0 EST} - {-715798800 -14400 1 EDT} - {-702496800 -18000 0 EST} - {-684349200 -14400 1 EDT} - {-671047200 -18000 0 EST} - {-652899600 -14400 1 EDT} - {-639597600 -18000 0 EST} - {-620845200 -14400 1 EDT} - {-608148000 -18000 0 EST} - {-589395600 -14400 1 EDT} - {-576093600 -18000 0 EST} - {-557946000 -14400 1 EDT} - {-544644000 -18000 0 EST} - {-526496400 -14400 1 EDT} - {-513194400 -18000 0 EST} - {-495046800 -14400 1 EDT} - {-481744800 -18000 0 EST} - {-463597200 -14400 1 EDT} - {-447271200 -18000 0 EST} - {-431542800 -14400 1 EDT} - {-415821600 -18000 0 EST} - {-400093200 -14400 1 EDT} - {-384372000 -18000 0 EST} - {-368643600 -14400 1 EDT} - {-352922400 -18000 0 EST} - {-337194000 -14400 1 EDT} - {-321472800 -18000 0 EST} - {-305744400 -14400 1 EDT} - {-289418400 -18000 0 EST} - {-273690000 -14400 1 EDT} - {-257968800 -18000 0 EST} - {-242240400 -14400 1 EDT} - {-226519200 -18000 0 EST} - {-210790800 -14400 1 EDT} - {-195069600 -18000 0 EST} - {-179341200 -14400 1 EDT} - {-163620000 -18000 0 EST} - {-147891600 -14400 1 EDT} - {-131565600 -18000 0 EST} - {-116442000 -14400 1 EDT} - {-100116000 -18000 0 EST} - {-94676400 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -14400 1 EDT} - {152085600 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/New_York) { + {-9223372036854775808 -17762 0 LMT} + {-2717650800 -18000 0 EST} + {-1633280400 -14400 1 EDT} + {-1615140000 -18000 0 EST} + {-1601830800 -14400 1 EDT} + {-1583690400 -18000 0 EST} + {-1577905200 -18000 0 EST} + {-1570381200 -14400 1 EDT} + {-1551636000 -18000 0 EST} + {-1536512400 -14400 1 EDT} + {-1523210400 -18000 0 EST} + {-1504458000 -14400 1 EDT} + {-1491760800 -18000 0 EST} + {-1473008400 -14400 1 EDT} + {-1459706400 -18000 0 EST} + {-1441558800 -14400 1 EDT} + {-1428256800 -18000 0 EST} + {-1410109200 -14400 1 EDT} + {-1396807200 -18000 0 EST} + {-1378659600 -14400 1 EDT} + {-1365357600 -18000 0 EST} + {-1347210000 -14400 1 EDT} + {-1333908000 -18000 0 EST} + {-1315155600 -14400 1 EDT} + {-1301853600 -18000 0 EST} + {-1283706000 -14400 1 EDT} + {-1270404000 -18000 0 EST} + {-1252256400 -14400 1 EDT} + {-1238954400 -18000 0 EST} + {-1220806800 -14400 1 EDT} + {-1207504800 -18000 0 EST} + {-1189357200 -14400 1 EDT} + {-1176055200 -18000 0 EST} + {-1157302800 -14400 1 EDT} + {-1144605600 -18000 0 EST} + {-1125853200 -14400 1 EDT} + {-1112551200 -18000 0 EST} + {-1094403600 -14400 1 EDT} + {-1081101600 -18000 0 EST} + {-1062954000 -14400 1 EDT} + {-1049652000 -18000 0 EST} + {-1031504400 -14400 1 EDT} + {-1018202400 -18000 0 EST} + {-1000054800 -14400 1 EDT} + {-986752800 -18000 0 EST} + {-968000400 -14400 1 EDT} + {-955303200 -18000 0 EST} + {-936550800 -14400 1 EDT} + {-923248800 -18000 0 EST} + {-905101200 -14400 1 EDT} + {-891799200 -18000 0 EST} + {-883594800 -18000 0 EST} + {-880218000 -14400 1 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-757364400 -18000 0 EST} + {-747248400 -14400 1 EDT} + {-733946400 -18000 0 EST} + {-715798800 -14400 1 EDT} + {-702496800 -18000 0 EST} + {-684349200 -14400 1 EDT} + {-671047200 -18000 0 EST} + {-652899600 -14400 1 EDT} + {-639597600 -18000 0 EST} + {-620845200 -14400 1 EDT} + {-608148000 -18000 0 EST} + {-589395600 -14400 1 EDT} + {-576093600 -18000 0 EST} + {-557946000 -14400 1 EDT} + {-544644000 -18000 0 EST} + {-526496400 -14400 1 EDT} + {-513194400 -18000 0 EST} + {-495046800 -14400 1 EDT} + {-481744800 -18000 0 EST} + {-463597200 -14400 1 EDT} + {-447271200 -18000 0 EST} + {-431542800 -14400 1 EDT} + {-415821600 -18000 0 EST} + {-400093200 -14400 1 EDT} + {-384372000 -18000 0 EST} + {-368643600 -14400 1 EDT} + {-352922400 -18000 0 EST} + {-337194000 -14400 1 EDT} + {-321472800 -18000 0 EST} + {-305744400 -14400 1 EDT} + {-289418400 -18000 0 EST} + {-273690000 -14400 1 EDT} + {-257968800 -18000 0 EST} + {-242240400 -14400 1 EDT} + {-226519200 -18000 0 EST} + {-210790800 -14400 1 EDT} + {-195069600 -18000 0 EST} + {-179341200 -14400 1 EDT} + {-163620000 -18000 0 EST} + {-147891600 -14400 1 EDT} + {-131565600 -18000 0 EST} + {-116442000 -14400 1 EDT} + {-100116000 -18000 0 EST} + {-94676400 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -14400 1 EDT} + {152085600 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Nipigon b/library/tzdata/America/Nipigon index e98bb8c..73aa9af 100644 --- a/library/tzdata/America/Nipigon +++ b/library/tzdata/America/Nipigon @@ -1,264 +1,264 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Nipigon) { - {-9223372036854775808 -21184 0 LMT} - {-2366734016 -18000 0 EST} - {-1632070800 -14400 1 EDT} - {-1614794400 -18000 0 EST} - {-923252400 -14400 1 EDT} - {-880218000 -14400 0 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Nipigon) { + {-9223372036854775808 -21184 0 LMT} + {-2366734016 -18000 0 EST} + {-1632070800 -14400 1 EDT} + {-1614794400 -18000 0 EST} + {-923252400 -14400 1 EDT} + {-880218000 -14400 0 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Nome b/library/tzdata/America/Nome index c095b79..3152a13 100644 --- a/library/tzdata/America/Nome +++ b/library/tzdata/America/Nome @@ -1,276 +1,276 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Nome) { - {-9223372036854775808 46701 0 LMT} - {-3225358701 -39698 0 LMT} - {-2188947502 -39600 0 NST} - {-883573200 -39600 0 NST} - {-880196400 -36000 1 NWT} - {-769395600 -36000 1 NPT} - {-765374400 -39600 0 NST} - {-757342800 -39600 0 NST} - {-86878800 -39600 0 BST} - {-31496400 -39600 0 BST} - {-21466800 -36000 1 BDT} - {-5745600 -39600 0 BST} - {9982800 -36000 1 BDT} - {25704000 -39600 0 BST} - {41432400 -36000 1 BDT} - {57758400 -39600 0 BST} - {73486800 -36000 1 BDT} - {89208000 -39600 0 BST} - {104936400 -36000 1 BDT} - {120657600 -39600 0 BST} - {126709200 -36000 1 BDT} - {152107200 -39600 0 BST} - {162392400 -36000 1 BDT} - {183556800 -39600 0 BST} - {199285200 -36000 1 BDT} - {215611200 -39600 0 BST} - {230734800 -36000 1 BDT} - {247060800 -39600 0 BST} - {262789200 -36000 1 BDT} - {278510400 -39600 0 BST} - {294238800 -36000 1 BDT} - {309960000 -39600 0 BST} - {325688400 -36000 1 BDT} - {341409600 -39600 0 BST} - {357138000 -36000 1 BDT} - {372859200 -39600 0 BST} - {388587600 -36000 1 BDT} - {404913600 -39600 0 BST} - {420037200 -36000 1 BDT} - {439030800 -32400 0 AKST} - {452084400 -28800 1 AKDT} - {467805600 -32400 0 AKST} - {483534000 -28800 1 AKDT} - {499255200 -32400 0 AKST} - {514983600 -28800 1 AKDT} - {530704800 -32400 0 AKST} - {544618800 -28800 1 AKDT} - {562154400 -32400 0 AKST} - {576068400 -28800 1 AKDT} - {594208800 -32400 0 AKST} - {607518000 -28800 1 AKDT} - {625658400 -32400 0 AKST} - {638967600 -28800 1 AKDT} - {657108000 -32400 0 AKST} - {671022000 -28800 1 AKDT} - {688557600 -32400 0 AKST} - {702471600 -28800 1 AKDT} - {720007200 -32400 0 AKST} - {733921200 -28800 1 AKDT} - {752061600 -32400 0 AKST} - {765370800 -28800 1 AKDT} - {783511200 -32400 0 AKST} - {796820400 -28800 1 AKDT} - {814960800 -32400 0 AKST} - {828874800 -28800 1 AKDT} - {846410400 -32400 0 AKST} - {860324400 -28800 1 AKDT} - {877860000 -32400 0 AKST} - {891774000 -28800 1 AKDT} - {909309600 -32400 0 AKST} - {923223600 -28800 1 AKDT} - {941364000 -32400 0 AKST} - {954673200 -28800 1 AKDT} - {972813600 -32400 0 AKST} - {986122800 -28800 1 AKDT} - {1004263200 -32400 0 AKST} - {1018177200 -28800 1 AKDT} - {1035712800 -32400 0 AKST} - {1049626800 -28800 1 AKDT} - {1067162400 -32400 0 AKST} - {1081076400 -28800 1 AKDT} - {1099216800 -32400 0 AKST} - {1112526000 -28800 1 AKDT} - {1130666400 -32400 0 AKST} - {1143975600 -28800 1 AKDT} - {1162116000 -32400 0 AKST} - {1173610800 -28800 1 AKDT} - {1194170400 -32400 0 AKST} - {1205060400 -28800 1 AKDT} - {1225620000 -32400 0 AKST} - {1236510000 -28800 1 AKDT} - {1257069600 -32400 0 AKST} - {1268564400 -28800 1 AKDT} - {1289124000 -32400 0 AKST} - {1300014000 -28800 1 AKDT} - {1320573600 -32400 0 AKST} - {1331463600 -28800 1 AKDT} - {1352023200 -32400 0 AKST} - {1362913200 -28800 1 AKDT} - {1383472800 -32400 0 AKST} - {1394362800 -28800 1 AKDT} - {1414922400 -32400 0 AKST} - {1425812400 -28800 1 AKDT} - {1446372000 -32400 0 AKST} - {1457866800 -28800 1 AKDT} - {1478426400 -32400 0 AKST} - {1489316400 -28800 1 AKDT} - {1509876000 -32400 0 AKST} - {1520766000 -28800 1 AKDT} - {1541325600 -32400 0 AKST} - {1552215600 -28800 1 AKDT} - {1572775200 -32400 0 AKST} - {1583665200 -28800 1 AKDT} - {1604224800 -32400 0 AKST} - {1615719600 -28800 1 AKDT} - {1636279200 -32400 0 AKST} - {1647169200 -28800 1 AKDT} - {1667728800 -32400 0 AKST} - {1678618800 -28800 1 AKDT} - {1699178400 -32400 0 AKST} - {1710068400 -28800 1 AKDT} - {1730628000 -32400 0 AKST} - {1741518000 -28800 1 AKDT} - {1762077600 -32400 0 AKST} - {1772967600 -28800 1 AKDT} - {1793527200 -32400 0 AKST} - {1805022000 -28800 1 AKDT} - {1825581600 -32400 0 AKST} - {1836471600 -28800 1 AKDT} - {1857031200 -32400 0 AKST} - {1867921200 -28800 1 AKDT} - {1888480800 -32400 0 AKST} - {1899370800 -28800 1 AKDT} - {1919930400 -32400 0 AKST} - {1930820400 -28800 1 AKDT} - {1951380000 -32400 0 AKST} - {1962874800 -28800 1 AKDT} - {1983434400 -32400 0 AKST} - {1994324400 -28800 1 AKDT} - {2014884000 -32400 0 AKST} - {2025774000 -28800 1 AKDT} - {2046333600 -32400 0 AKST} - {2057223600 -28800 1 AKDT} - {2077783200 -32400 0 AKST} - {2088673200 -28800 1 AKDT} - {2109232800 -32400 0 AKST} - {2120122800 -28800 1 AKDT} - {2140682400 -32400 0 AKST} - {2152177200 -28800 1 AKDT} - {2172736800 -32400 0 AKST} - {2183626800 -28800 1 AKDT} - {2204186400 -32400 0 AKST} - {2215076400 -28800 1 AKDT} - {2235636000 -32400 0 AKST} - {2246526000 -28800 1 AKDT} - {2267085600 -32400 0 AKST} - {2277975600 -28800 1 AKDT} - {2298535200 -32400 0 AKST} - {2309425200 -28800 1 AKDT} - {2329984800 -32400 0 AKST} - {2341479600 -28800 1 AKDT} - {2362039200 -32400 0 AKST} - {2372929200 -28800 1 AKDT} - {2393488800 -32400 0 AKST} - {2404378800 -28800 1 AKDT} - {2424938400 -32400 0 AKST} - {2435828400 -28800 1 AKDT} - {2456388000 -32400 0 AKST} - {2467278000 -28800 1 AKDT} - {2487837600 -32400 0 AKST} - {2499332400 -28800 1 AKDT} - {2519892000 -32400 0 AKST} - {2530782000 -28800 1 AKDT} - {2551341600 -32400 0 AKST} - {2562231600 -28800 1 AKDT} - {2582791200 -32400 0 AKST} - {2593681200 -28800 1 AKDT} - {2614240800 -32400 0 AKST} - {2625130800 -28800 1 AKDT} - {2645690400 -32400 0 AKST} - {2656580400 -28800 1 AKDT} - {2677140000 -32400 0 AKST} - {2688634800 -28800 1 AKDT} - {2709194400 -32400 0 AKST} - {2720084400 -28800 1 AKDT} - {2740644000 -32400 0 AKST} - {2751534000 -28800 1 AKDT} - {2772093600 -32400 0 AKST} - {2782983600 -28800 1 AKDT} - {2803543200 -32400 0 AKST} - {2814433200 -28800 1 AKDT} - {2834992800 -32400 0 AKST} - {2846487600 -28800 1 AKDT} - {2867047200 -32400 0 AKST} - {2877937200 -28800 1 AKDT} - {2898496800 -32400 0 AKST} - {2909386800 -28800 1 AKDT} - {2929946400 -32400 0 AKST} - {2940836400 -28800 1 AKDT} - {2961396000 -32400 0 AKST} - {2972286000 -28800 1 AKDT} - {2992845600 -32400 0 AKST} - {3003735600 -28800 1 AKDT} - {3024295200 -32400 0 AKST} - {3035790000 -28800 1 AKDT} - {3056349600 -32400 0 AKST} - {3067239600 -28800 1 AKDT} - {3087799200 -32400 0 AKST} - {3098689200 -28800 1 AKDT} - {3119248800 -32400 0 AKST} - {3130138800 -28800 1 AKDT} - {3150698400 -32400 0 AKST} - {3161588400 -28800 1 AKDT} - {3182148000 -32400 0 AKST} - {3193038000 -28800 1 AKDT} - {3213597600 -32400 0 AKST} - {3225092400 -28800 1 AKDT} - {3245652000 -32400 0 AKST} - {3256542000 -28800 1 AKDT} - {3277101600 -32400 0 AKST} - {3287991600 -28800 1 AKDT} - {3308551200 -32400 0 AKST} - {3319441200 -28800 1 AKDT} - {3340000800 -32400 0 AKST} - {3350890800 -28800 1 AKDT} - {3371450400 -32400 0 AKST} - {3382945200 -28800 1 AKDT} - {3403504800 -32400 0 AKST} - {3414394800 -28800 1 AKDT} - {3434954400 -32400 0 AKST} - {3445844400 -28800 1 AKDT} - {3466404000 -32400 0 AKST} - {3477294000 -28800 1 AKDT} - {3497853600 -32400 0 AKST} - {3508743600 -28800 1 AKDT} - {3529303200 -32400 0 AKST} - {3540193200 -28800 1 AKDT} - {3560752800 -32400 0 AKST} - {3572247600 -28800 1 AKDT} - {3592807200 -32400 0 AKST} - {3603697200 -28800 1 AKDT} - {3624256800 -32400 0 AKST} - {3635146800 -28800 1 AKDT} - {3655706400 -32400 0 AKST} - {3666596400 -28800 1 AKDT} - {3687156000 -32400 0 AKST} - {3698046000 -28800 1 AKDT} - {3718605600 -32400 0 AKST} - {3730100400 -28800 1 AKDT} - {3750660000 -32400 0 AKST} - {3761550000 -28800 1 AKDT} - {3782109600 -32400 0 AKST} - {3792999600 -28800 1 AKDT} - {3813559200 -32400 0 AKST} - {3824449200 -28800 1 AKDT} - {3845008800 -32400 0 AKST} - {3855898800 -28800 1 AKDT} - {3876458400 -32400 0 AKST} - {3887348400 -28800 1 AKDT} - {3907908000 -32400 0 AKST} - {3919402800 -28800 1 AKDT} - {3939962400 -32400 0 AKST} - {3950852400 -28800 1 AKDT} - {3971412000 -32400 0 AKST} - {3982302000 -28800 1 AKDT} - {4002861600 -32400 0 AKST} - {4013751600 -28800 1 AKDT} - {4034311200 -32400 0 AKST} - {4045201200 -28800 1 AKDT} - {4065760800 -32400 0 AKST} - {4076650800 -28800 1 AKDT} - {4097210400 -32400 0 AKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Nome) { + {-9223372036854775808 46701 0 LMT} + {-3225358701 -39698 0 LMT} + {-2188947502 -39600 0 NST} + {-883573200 -39600 0 NST} + {-880196400 -36000 1 NWT} + {-769395600 -36000 1 NPT} + {-765374400 -39600 0 NST} + {-757342800 -39600 0 NST} + {-86878800 -39600 0 BST} + {-31496400 -39600 0 BST} + {-21466800 -36000 1 BDT} + {-5745600 -39600 0 BST} + {9982800 -36000 1 BDT} + {25704000 -39600 0 BST} + {41432400 -36000 1 BDT} + {57758400 -39600 0 BST} + {73486800 -36000 1 BDT} + {89208000 -39600 0 BST} + {104936400 -36000 1 BDT} + {120657600 -39600 0 BST} + {126709200 -36000 1 BDT} + {152107200 -39600 0 BST} + {162392400 -36000 1 BDT} + {183556800 -39600 0 BST} + {199285200 -36000 1 BDT} + {215611200 -39600 0 BST} + {230734800 -36000 1 BDT} + {247060800 -39600 0 BST} + {262789200 -36000 1 BDT} + {278510400 -39600 0 BST} + {294238800 -36000 1 BDT} + {309960000 -39600 0 BST} + {325688400 -36000 1 BDT} + {341409600 -39600 0 BST} + {357138000 -36000 1 BDT} + {372859200 -39600 0 BST} + {388587600 -36000 1 BDT} + {404913600 -39600 0 BST} + {420037200 -36000 1 BDT} + {439030800 -32400 0 AKST} + {452084400 -28800 1 AKDT} + {467805600 -32400 0 AKST} + {483534000 -28800 1 AKDT} + {499255200 -32400 0 AKST} + {514983600 -28800 1 AKDT} + {530704800 -32400 0 AKST} + {544618800 -28800 1 AKDT} + {562154400 -32400 0 AKST} + {576068400 -28800 1 AKDT} + {594208800 -32400 0 AKST} + {607518000 -28800 1 AKDT} + {625658400 -32400 0 AKST} + {638967600 -28800 1 AKDT} + {657108000 -32400 0 AKST} + {671022000 -28800 1 AKDT} + {688557600 -32400 0 AKST} + {702471600 -28800 1 AKDT} + {720007200 -32400 0 AKST} + {733921200 -28800 1 AKDT} + {752061600 -32400 0 AKST} + {765370800 -28800 1 AKDT} + {783511200 -32400 0 AKST} + {796820400 -28800 1 AKDT} + {814960800 -32400 0 AKST} + {828874800 -28800 1 AKDT} + {846410400 -32400 0 AKST} + {860324400 -28800 1 AKDT} + {877860000 -32400 0 AKST} + {891774000 -28800 1 AKDT} + {909309600 -32400 0 AKST} + {923223600 -28800 1 AKDT} + {941364000 -32400 0 AKST} + {954673200 -28800 1 AKDT} + {972813600 -32400 0 AKST} + {986122800 -28800 1 AKDT} + {1004263200 -32400 0 AKST} + {1018177200 -28800 1 AKDT} + {1035712800 -32400 0 AKST} + {1049626800 -28800 1 AKDT} + {1067162400 -32400 0 AKST} + {1081076400 -28800 1 AKDT} + {1099216800 -32400 0 AKST} + {1112526000 -28800 1 AKDT} + {1130666400 -32400 0 AKST} + {1143975600 -28800 1 AKDT} + {1162116000 -32400 0 AKST} + {1173610800 -28800 1 AKDT} + {1194170400 -32400 0 AKST} + {1205060400 -28800 1 AKDT} + {1225620000 -32400 0 AKST} + {1236510000 -28800 1 AKDT} + {1257069600 -32400 0 AKST} + {1268564400 -28800 1 AKDT} + {1289124000 -32400 0 AKST} + {1300014000 -28800 1 AKDT} + {1320573600 -32400 0 AKST} + {1331463600 -28800 1 AKDT} + {1352023200 -32400 0 AKST} + {1362913200 -28800 1 AKDT} + {1383472800 -32400 0 AKST} + {1394362800 -28800 1 AKDT} + {1414922400 -32400 0 AKST} + {1425812400 -28800 1 AKDT} + {1446372000 -32400 0 AKST} + {1457866800 -28800 1 AKDT} + {1478426400 -32400 0 AKST} + {1489316400 -28800 1 AKDT} + {1509876000 -32400 0 AKST} + {1520766000 -28800 1 AKDT} + {1541325600 -32400 0 AKST} + {1552215600 -28800 1 AKDT} + {1572775200 -32400 0 AKST} + {1583665200 -28800 1 AKDT} + {1604224800 -32400 0 AKST} + {1615719600 -28800 1 AKDT} + {1636279200 -32400 0 AKST} + {1647169200 -28800 1 AKDT} + {1667728800 -32400 0 AKST} + {1678618800 -28800 1 AKDT} + {1699178400 -32400 0 AKST} + {1710068400 -28800 1 AKDT} + {1730628000 -32400 0 AKST} + {1741518000 -28800 1 AKDT} + {1762077600 -32400 0 AKST} + {1772967600 -28800 1 AKDT} + {1793527200 -32400 0 AKST} + {1805022000 -28800 1 AKDT} + {1825581600 -32400 0 AKST} + {1836471600 -28800 1 AKDT} + {1857031200 -32400 0 AKST} + {1867921200 -28800 1 AKDT} + {1888480800 -32400 0 AKST} + {1899370800 -28800 1 AKDT} + {1919930400 -32400 0 AKST} + {1930820400 -28800 1 AKDT} + {1951380000 -32400 0 AKST} + {1962874800 -28800 1 AKDT} + {1983434400 -32400 0 AKST} + {1994324400 -28800 1 AKDT} + {2014884000 -32400 0 AKST} + {2025774000 -28800 1 AKDT} + {2046333600 -32400 0 AKST} + {2057223600 -28800 1 AKDT} + {2077783200 -32400 0 AKST} + {2088673200 -28800 1 AKDT} + {2109232800 -32400 0 AKST} + {2120122800 -28800 1 AKDT} + {2140682400 -32400 0 AKST} + {2152177200 -28800 1 AKDT} + {2172736800 -32400 0 AKST} + {2183626800 -28800 1 AKDT} + {2204186400 -32400 0 AKST} + {2215076400 -28800 1 AKDT} + {2235636000 -32400 0 AKST} + {2246526000 -28800 1 AKDT} + {2267085600 -32400 0 AKST} + {2277975600 -28800 1 AKDT} + {2298535200 -32400 0 AKST} + {2309425200 -28800 1 AKDT} + {2329984800 -32400 0 AKST} + {2341479600 -28800 1 AKDT} + {2362039200 -32400 0 AKST} + {2372929200 -28800 1 AKDT} + {2393488800 -32400 0 AKST} + {2404378800 -28800 1 AKDT} + {2424938400 -32400 0 AKST} + {2435828400 -28800 1 AKDT} + {2456388000 -32400 0 AKST} + {2467278000 -28800 1 AKDT} + {2487837600 -32400 0 AKST} + {2499332400 -28800 1 AKDT} + {2519892000 -32400 0 AKST} + {2530782000 -28800 1 AKDT} + {2551341600 -32400 0 AKST} + {2562231600 -28800 1 AKDT} + {2582791200 -32400 0 AKST} + {2593681200 -28800 1 AKDT} + {2614240800 -32400 0 AKST} + {2625130800 -28800 1 AKDT} + {2645690400 -32400 0 AKST} + {2656580400 -28800 1 AKDT} + {2677140000 -32400 0 AKST} + {2688634800 -28800 1 AKDT} + {2709194400 -32400 0 AKST} + {2720084400 -28800 1 AKDT} + {2740644000 -32400 0 AKST} + {2751534000 -28800 1 AKDT} + {2772093600 -32400 0 AKST} + {2782983600 -28800 1 AKDT} + {2803543200 -32400 0 AKST} + {2814433200 -28800 1 AKDT} + {2834992800 -32400 0 AKST} + {2846487600 -28800 1 AKDT} + {2867047200 -32400 0 AKST} + {2877937200 -28800 1 AKDT} + {2898496800 -32400 0 AKST} + {2909386800 -28800 1 AKDT} + {2929946400 -32400 0 AKST} + {2940836400 -28800 1 AKDT} + {2961396000 -32400 0 AKST} + {2972286000 -28800 1 AKDT} + {2992845600 -32400 0 AKST} + {3003735600 -28800 1 AKDT} + {3024295200 -32400 0 AKST} + {3035790000 -28800 1 AKDT} + {3056349600 -32400 0 AKST} + {3067239600 -28800 1 AKDT} + {3087799200 -32400 0 AKST} + {3098689200 -28800 1 AKDT} + {3119248800 -32400 0 AKST} + {3130138800 -28800 1 AKDT} + {3150698400 -32400 0 AKST} + {3161588400 -28800 1 AKDT} + {3182148000 -32400 0 AKST} + {3193038000 -28800 1 AKDT} + {3213597600 -32400 0 AKST} + {3225092400 -28800 1 AKDT} + {3245652000 -32400 0 AKST} + {3256542000 -28800 1 AKDT} + {3277101600 -32400 0 AKST} + {3287991600 -28800 1 AKDT} + {3308551200 -32400 0 AKST} + {3319441200 -28800 1 AKDT} + {3340000800 -32400 0 AKST} + {3350890800 -28800 1 AKDT} + {3371450400 -32400 0 AKST} + {3382945200 -28800 1 AKDT} + {3403504800 -32400 0 AKST} + {3414394800 -28800 1 AKDT} + {3434954400 -32400 0 AKST} + {3445844400 -28800 1 AKDT} + {3466404000 -32400 0 AKST} + {3477294000 -28800 1 AKDT} + {3497853600 -32400 0 AKST} + {3508743600 -28800 1 AKDT} + {3529303200 -32400 0 AKST} + {3540193200 -28800 1 AKDT} + {3560752800 -32400 0 AKST} + {3572247600 -28800 1 AKDT} + {3592807200 -32400 0 AKST} + {3603697200 -28800 1 AKDT} + {3624256800 -32400 0 AKST} + {3635146800 -28800 1 AKDT} + {3655706400 -32400 0 AKST} + {3666596400 -28800 1 AKDT} + {3687156000 -32400 0 AKST} + {3698046000 -28800 1 AKDT} + {3718605600 -32400 0 AKST} + {3730100400 -28800 1 AKDT} + {3750660000 -32400 0 AKST} + {3761550000 -28800 1 AKDT} + {3782109600 -32400 0 AKST} + {3792999600 -28800 1 AKDT} + {3813559200 -32400 0 AKST} + {3824449200 -28800 1 AKDT} + {3845008800 -32400 0 AKST} + {3855898800 -28800 1 AKDT} + {3876458400 -32400 0 AKST} + {3887348400 -28800 1 AKDT} + {3907908000 -32400 0 AKST} + {3919402800 -28800 1 AKDT} + {3939962400 -32400 0 AKST} + {3950852400 -28800 1 AKDT} + {3971412000 -32400 0 AKST} + {3982302000 -28800 1 AKDT} + {4002861600 -32400 0 AKST} + {4013751600 -28800 1 AKDT} + {4034311200 -32400 0 AKST} + {4045201200 -28800 1 AKDT} + {4065760800 -32400 0 AKST} + {4076650800 -28800 1 AKDT} + {4097210400 -32400 0 AKST} +} diff --git a/library/tzdata/America/Noronha b/library/tzdata/America/Noronha index 94d6f42..e933e20 100644 --- a/library/tzdata/America/Noronha +++ b/library/tzdata/America/Noronha @@ -1,48 +1,48 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Noronha) { - {-9223372036854775808 -7780 0 LMT} - {-1767217820 -7200 0 FNT} - {-1206961200 -3600 1 FNST} - {-1191366000 -7200 0 FNT} - {-1175378400 -3600 1 FNST} - {-1159830000 -7200 0 FNT} - {-633823200 -3600 1 FNST} - {-622072800 -7200 0 FNT} - {-602287200 -3600 1 FNST} - {-591836400 -7200 0 FNT} - {-570751200 -3600 1 FNST} - {-560214000 -7200 0 FNT} - {-539128800 -3600 1 FNST} - {-531356400 -7200 0 FNT} - {-191368800 -3600 1 FNST} - {-184201200 -7200 0 FNT} - {-155167200 -3600 1 FNST} - {-150073200 -7200 0 FNT} - {-128901600 -3600 1 FNST} - {-121129200 -7200 0 FNT} - {-99957600 -3600 1 FNST} - {-89593200 -7200 0 FNT} - {-68421600 -3600 1 FNST} - {-57970800 -7200 0 FNT} - {499744800 -3600 1 FNST} - {511232400 -7200 0 FNT} - {530589600 -3600 1 FNST} - {540262800 -7200 0 FNT} - {562125600 -3600 1 FNST} - {571194000 -7200 0 FNT} - {592970400 -3600 1 FNST} - {602038800 -7200 0 FNT} - {624420000 -3600 1 FNST} - {634698000 -7200 0 FNT} - {653533200 -7200 0 FNT} - {938656800 -7200 0 FNT} - {938916000 -3600 1 FNST} - {951613200 -7200 0 FNT} - {970970400 -3600 1 FNST} - {971571600 -7200 0 FNT} - {1000346400 -7200 0 FNT} - {1003024800 -3600 1 FNST} - {1013907600 -7200 0 FNT} - {1033434000 -7200 0 FNT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Noronha) { + {-9223372036854775808 -7780 0 LMT} + {-1767217820 -7200 0 FNT} + {-1206961200 -3600 1 FNST} + {-1191366000 -7200 0 FNT} + {-1175378400 -3600 1 FNST} + {-1159830000 -7200 0 FNT} + {-633823200 -3600 1 FNST} + {-622072800 -7200 0 FNT} + {-602287200 -3600 1 FNST} + {-591836400 -7200 0 FNT} + {-570751200 -3600 1 FNST} + {-560214000 -7200 0 FNT} + {-539128800 -3600 1 FNST} + {-531356400 -7200 0 FNT} + {-191368800 -3600 1 FNST} + {-184201200 -7200 0 FNT} + {-155167200 -3600 1 FNST} + {-150073200 -7200 0 FNT} + {-128901600 -3600 1 FNST} + {-121129200 -7200 0 FNT} + {-99957600 -3600 1 FNST} + {-89593200 -7200 0 FNT} + {-68421600 -3600 1 FNST} + {-57970800 -7200 0 FNT} + {499744800 -3600 1 FNST} + {511232400 -7200 0 FNT} + {530589600 -3600 1 FNST} + {540262800 -7200 0 FNT} + {562125600 -3600 1 FNST} + {571194000 -7200 0 FNT} + {592970400 -3600 1 FNST} + {602038800 -7200 0 FNT} + {624420000 -3600 1 FNST} + {634698000 -7200 0 FNT} + {653533200 -7200 0 FNT} + {938656800 -7200 0 FNT} + {938916000 -3600 1 FNST} + {951613200 -7200 0 FNT} + {970970400 -3600 1 FNST} + {971571600 -7200 0 FNT} + {1000346400 -7200 0 FNT} + {1003024800 -3600 1 FNST} + {1013907600 -7200 0 FNT} + {1033434000 -7200 0 FNT} +} diff --git a/library/tzdata/America/North_Dakota/Center b/library/tzdata/America/North_Dakota/Center index 30782f7..8f3c3a9 100644 --- a/library/tzdata/America/North_Dakota/Center +++ b/library/tzdata/America/North_Dakota/Center @@ -1,279 +1,279 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/North_Dakota/Center) { - {-9223372036854775808 -24312 0 LMT} - {-2717643600 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126694800 -21600 1 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720003600 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/North_Dakota/Center) { + {-9223372036854775808 -24312 0 LMT} + {-2717643600 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126694800 -21600 1 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720003600 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/North_Dakota/New_Salem b/library/tzdata/America/North_Dakota/New_Salem index 5a9d229..c34a1ca 100755 --- a/library/tzdata/America/North_Dakota/New_Salem +++ b/library/tzdata/America/North_Dakota/New_Salem @@ -1,279 +1,279 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/North_Dakota/New_Salem) { - {-9223372036854775808 -24339 0 LMT} - {-2717643600 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126694800 -21600 1 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067158800 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/North_Dakota/New_Salem) { + {-9223372036854775808 -24339 0 LMT} + {-2717643600 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126694800 -21600 1 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067158800 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Panama b/library/tzdata/America/Panama index 3006785..c5b18fc 100644 --- a/library/tzdata/America/Panama +++ b/library/tzdata/America/Panama @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Panama) { - {-9223372036854775808 -19088 0 LMT} - {-2524502512 -19176 0 CMT} - {-1946918424 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Panama) { + {-9223372036854775808 -19088 0 LMT} + {-2524502512 -19176 0 CMT} + {-1946918424 -18000 0 EST} +} diff --git a/library/tzdata/America/Pangnirtung b/library/tzdata/America/Pangnirtung index 640808e..ff5b8c1 100644 --- a/library/tzdata/America/Pangnirtung +++ b/library/tzdata/America/Pangnirtung @@ -1,252 +1,252 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Pangnirtung) { - {-9223372036854775808 0 0 zzz} - {-1546300800 -14400 0 AST} - {-880221600 -10800 1 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-147902400 -7200 1 ADDT} - {-131572800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Pangnirtung) { + {-9223372036854775808 0 0 zzz} + {-1546300800 -14400 0 AST} + {-880221600 -10800 1 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-147902400 -7200 1 ADDT} + {-131572800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Paramaribo b/library/tzdata/America/Paramaribo index d15f5c7..2cea133 100644 --- a/library/tzdata/America/Paramaribo +++ b/library/tzdata/America/Paramaribo @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Paramaribo) { - {-9223372036854775808 -13240 0 LMT} - {-1861906760 -13252 0 PMT} - {-1104524348 -13236 0 PMT} - {-765317964 -12600 0 NEGT} - {185686200 -12600 0 SRT} - {465449400 -10800 0 SRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Paramaribo) { + {-9223372036854775808 -13240 0 LMT} + {-1861906760 -13252 0 PMT} + {-1104524348 -13236 0 PMT} + {-765317964 -12600 0 NEGT} + {185686200 -12600 0 SRT} + {465449400 -10800 0 SRT} +} diff --git a/library/tzdata/America/Phoenix b/library/tzdata/America/Phoenix index 3d37bb4..75258e5 100644 --- a/library/tzdata/America/Phoenix +++ b/library/tzdata/America/Phoenix @@ -1,17 +1,17 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Phoenix) { - {-9223372036854775808 -26898 0 LMT} - {-2717643600 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-820519140 -25200 0 MST} - {-796841940 -25200 0 MST} - {-94669200 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-56221200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Phoenix) { + {-9223372036854775808 -26898 0 LMT} + {-2717643600 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-820519140 -25200 0 MST} + {-796841940 -25200 0 MST} + {-94669200 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-56221200 -25200 0 MST} +} diff --git a/library/tzdata/America/Port-au-Prince b/library/tzdata/America/Port-au-Prince index 04ee62c..26a2c18 100644 --- a/library/tzdata/America/Port-au-Prince +++ b/library/tzdata/America/Port-au-Prince @@ -1,41 +1,41 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Port-au-Prince) { - {-9223372036854775808 -17360 0 LMT} - {-2524504240 -17340 0 PPMT} - {-1670483460 -18000 0 EST} - {421218000 -14400 1 EDT} - {436334400 -18000 0 EST} - {452062800 -14400 1 EDT} - {467784000 -18000 0 EST} - {483512400 -14400 1 EDT} - {499233600 -18000 0 EST} - {514962000 -14400 1 EDT} - {530683200 -18000 0 EST} - {546411600 -14400 1 EDT} - {562132800 -18000 0 EST} - {576050400 -14400 1 EDT} - {594194400 -18000 0 EST} - {607500000 -14400 1 EDT} - {625644000 -18000 0 EST} - {638949600 -14400 1 EDT} - {657093600 -18000 0 EST} - {671004000 -14400 1 EDT} - {688543200 -18000 0 EST} - {702453600 -14400 1 EDT} - {719992800 -18000 0 EST} - {733903200 -14400 1 EDT} - {752047200 -18000 0 EST} - {765352800 -14400 1 EDT} - {783496800 -18000 0 EST} - {796802400 -14400 1 EDT} - {814946400 -18000 0 EST} - {828856800 -14400 1 EDT} - {846396000 -18000 0 EST} - {860306400 -14400 1 EDT} - {877845600 -18000 0 EST} - {1112504400 -14400 1 EDT} - {1130644800 -18000 0 EST} - {1143954000 -14400 1 EDT} - {1162094400 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Port-au-Prince) { + {-9223372036854775808 -17360 0 LMT} + {-2524504240 -17340 0 PPMT} + {-1670483460 -18000 0 EST} + {421218000 -14400 1 EDT} + {436334400 -18000 0 EST} + {452062800 -14400 1 EDT} + {467784000 -18000 0 EST} + {483512400 -14400 1 EDT} + {499233600 -18000 0 EST} + {514962000 -14400 1 EDT} + {530683200 -18000 0 EST} + {546411600 -14400 1 EDT} + {562132800 -18000 0 EST} + {576050400 -14400 1 EDT} + {594194400 -18000 0 EST} + {607500000 -14400 1 EDT} + {625644000 -18000 0 EST} + {638949600 -14400 1 EDT} + {657093600 -18000 0 EST} + {671004000 -14400 1 EDT} + {688543200 -18000 0 EST} + {702453600 -14400 1 EDT} + {719992800 -18000 0 EST} + {733903200 -14400 1 EDT} + {752047200 -18000 0 EST} + {765352800 -14400 1 EDT} + {783496800 -18000 0 EST} + {796802400 -14400 1 EDT} + {814946400 -18000 0 EST} + {828856800 -14400 1 EDT} + {846396000 -18000 0 EST} + {860306400 -14400 1 EDT} + {877845600 -18000 0 EST} + {1112504400 -14400 1 EDT} + {1130644800 -18000 0 EST} + {1143954000 -14400 1 EDT} + {1162094400 -18000 0 EST} +} diff --git a/library/tzdata/America/Port_of_Spain b/library/tzdata/America/Port_of_Spain index c360c87..4d52ff7 100644 --- a/library/tzdata/America/Port_of_Spain +++ b/library/tzdata/America/Port_of_Spain @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Port_of_Spain) { - {-9223372036854775808 -14764 0 LMT} - {-1825098836 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Port_of_Spain) { + {-9223372036854775808 -14764 0 LMT} + {-1825098836 -14400 0 AST} +} diff --git a/library/tzdata/America/Porto_Acre b/library/tzdata/America/Porto_Acre index 0626001..9841d66 100644 --- a/library/tzdata/America/Porto_Acre +++ b/library/tzdata/America/Porto_Acre @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Rio_Branco)]} { - LoadTimeZoneFile America/Rio_Branco -} -set TZData(:America/Porto_Acre) $TZData(:America/Rio_Branco) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Rio_Branco)]} { + LoadTimeZoneFile America/Rio_Branco +} +set TZData(:America/Porto_Acre) $TZData(:America/Rio_Branco) diff --git a/library/tzdata/America/Porto_Velho b/library/tzdata/America/Porto_Velho index ce611d2..02405e4 100644 --- a/library/tzdata/America/Porto_Velho +++ b/library/tzdata/America/Porto_Velho @@ -1,35 +1,35 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Porto_Velho) { - {-9223372036854775808 -15336 0 LMT} - {-1767210264 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {590036400 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Porto_Velho) { + {-9223372036854775808 -15336 0 LMT} + {-1767210264 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {590036400 -14400 0 AMT} +} diff --git a/library/tzdata/America/Puerto_Rico b/library/tzdata/America/Puerto_Rico index 0d5c9b4..48e54c7 100644 --- a/library/tzdata/America/Puerto_Rico +++ b/library/tzdata/America/Puerto_Rico @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Puerto_Rico) { - {-9223372036854775808 -15865 0 LMT} - {-2233035335 -14400 0 AST} - {-873057600 -10800 0 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-757368000 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Puerto_Rico) { + {-9223372036854775808 -15865 0 LMT} + {-2233035335 -14400 0 AST} + {-873057600 -10800 0 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-757368000 -14400 0 AST} +} diff --git a/library/tzdata/America/Rainy_River b/library/tzdata/America/Rainy_River index 331bac6..8a577b1 100644 --- a/library/tzdata/America/Rainy_River +++ b/library/tzdata/America/Rainy_River @@ -1,264 +1,264 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Rainy_River) { - {-9223372036854775808 -22696 0 LMT} - {-2366732504 -21600 0 CST} - {-1632067200 -18000 1 CDT} - {-1614790800 -21600 0 CST} - {-923248800 -18000 1 CDT} - {-880214400 -18000 0 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {136368000 -18000 1 CDT} - {152089200 -21600 0 CST} - {167817600 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Rainy_River) { + {-9223372036854775808 -22696 0 LMT} + {-2366732504 -21600 0 CST} + {-1632067200 -18000 1 CDT} + {-1614790800 -21600 0 CST} + {-923248800 -18000 1 CDT} + {-880214400 -18000 0 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {136368000 -18000 1 CDT} + {152089200 -21600 0 CST} + {167817600 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Rankin_Inlet b/library/tzdata/America/Rankin_Inlet index 770ec5d..36b9c7b 100644 --- a/library/tzdata/America/Rankin_Inlet +++ b/library/tzdata/America/Rankin_Inlet @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Rankin_Inlet) { - {-9223372036854775808 0 0 zzz} - {-410227200 -21600 0 CST} - {-147895200 -14400 1 CDDT} - {-131565600 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986112000 -18000 0 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Rankin_Inlet) { + {-9223372036854775808 0 0 zzz} + {-410227200 -21600 0 CST} + {-147895200 -14400 1 CDDT} + {-131565600 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986112000 -18000 0 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Recife b/library/tzdata/America/Recife index f6ae00e..038ec0f 100644 --- a/library/tzdata/America/Recife +++ b/library/tzdata/America/Recife @@ -1,48 +1,48 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Recife) { - {-9223372036854775808 -8376 0 LMT} - {-1767217224 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {653536800 -10800 0 BRT} - {938660400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {971575200 -10800 0 BRT} - {1000350000 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1033437600 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Recife) { + {-9223372036854775808 -8376 0 LMT} + {-1767217224 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {653536800 -10800 0 BRT} + {938660400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {971575200 -10800 0 BRT} + {1000350000 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1033437600 -10800 0 BRT} +} diff --git a/library/tzdata/America/Regina b/library/tzdata/America/Regina index 2030d75..8f5f188 100644 --- a/library/tzdata/America/Regina +++ b/library/tzdata/America/Regina @@ -1,58 +1,58 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Regina) { - {-9223372036854775808 -25116 0 LMT} - {-2030202084 -25200 0 MST} - {-1632063600 -21600 1 MDT} - {-1614787200 -25200 0 MST} - {-1251651600 -21600 1 MDT} - {-1238349600 -25200 0 MST} - {-1220202000 -21600 1 MDT} - {-1206900000 -25200 0 MST} - {-1188752400 -21600 1 MDT} - {-1175450400 -25200 0 MST} - {-1156698000 -21600 1 MDT} - {-1144000800 -25200 0 MST} - {-1125248400 -21600 1 MDT} - {-1111946400 -25200 0 MST} - {-1032714000 -21600 1 MDT} - {-1016992800 -25200 0 MST} - {-1001264400 -21600 1 MDT} - {-986148000 -25200 0 MST} - {-969814800 -21600 1 MDT} - {-954093600 -25200 0 MST} - {-937760400 -21600 1 MDT} - {-922039200 -25200 0 MST} - {-906310800 -21600 1 MDT} - {-890589600 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-748450800 -21600 1 MDT} - {-732729600 -25200 0 MST} - {-715791600 -21600 1 MDT} - {-702489600 -25200 0 MST} - {-684342000 -21600 1 MDT} - {-671040000 -25200 0 MST} - {-652892400 -21600 1 MDT} - {-639590400 -25200 0 MST} - {-620838000 -21600 1 MDT} - {-608140800 -25200 0 MST} - {-589388400 -21600 1 MDT} - {-576086400 -25200 0 MST} - {-557938800 -21600 1 MDT} - {-544636800 -25200 0 MST} - {-526489200 -21600 1 MDT} - {-513187200 -25200 0 MST} - {-495039600 -21600 1 MDT} - {-481737600 -25200 0 MST} - {-463590000 -21600 1 MDT} - {-450288000 -25200 0 MST} - {-431535600 -21600 1 MDT} - {-418233600 -25200 0 MST} - {-400086000 -21600 1 MDT} - {-386784000 -25200 0 MST} - {-337186800 -21600 1 MDT} - {-321465600 -25200 0 MST} - {-305737200 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Regina) { + {-9223372036854775808 -25116 0 LMT} + {-2030202084 -25200 0 MST} + {-1632063600 -21600 1 MDT} + {-1614787200 -25200 0 MST} + {-1251651600 -21600 1 MDT} + {-1238349600 -25200 0 MST} + {-1220202000 -21600 1 MDT} + {-1206900000 -25200 0 MST} + {-1188752400 -21600 1 MDT} + {-1175450400 -25200 0 MST} + {-1156698000 -21600 1 MDT} + {-1144000800 -25200 0 MST} + {-1125248400 -21600 1 MDT} + {-1111946400 -25200 0 MST} + {-1032714000 -21600 1 MDT} + {-1016992800 -25200 0 MST} + {-1001264400 -21600 1 MDT} + {-986148000 -25200 0 MST} + {-969814800 -21600 1 MDT} + {-954093600 -25200 0 MST} + {-937760400 -21600 1 MDT} + {-922039200 -25200 0 MST} + {-906310800 -21600 1 MDT} + {-890589600 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-748450800 -21600 1 MDT} + {-732729600 -25200 0 MST} + {-715791600 -21600 1 MDT} + {-702489600 -25200 0 MST} + {-684342000 -21600 1 MDT} + {-671040000 -25200 0 MST} + {-652892400 -21600 1 MDT} + {-639590400 -25200 0 MST} + {-620838000 -21600 1 MDT} + {-608140800 -25200 0 MST} + {-589388400 -21600 1 MDT} + {-576086400 -25200 0 MST} + {-557938800 -21600 1 MDT} + {-544636800 -25200 0 MST} + {-526489200 -21600 1 MDT} + {-513187200 -25200 0 MST} + {-495039600 -21600 1 MDT} + {-481737600 -25200 0 MST} + {-463590000 -21600 1 MDT} + {-450288000 -25200 0 MST} + {-431535600 -21600 1 MDT} + {-418233600 -25200 0 MST} + {-400086000 -21600 1 MDT} + {-386784000 -25200 0 MST} + {-337186800 -21600 1 MDT} + {-321465600 -25200 0 MST} + {-305737200 -21600 0 CST} +} diff --git a/library/tzdata/America/Resolute b/library/tzdata/America/Resolute index d82a837..5ac1610 100755 --- a/library/tzdata/America/Resolute +++ b/library/tzdata/America/Resolute @@ -1,62 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Resolute) { - {-9223372036854775808 0 0 zzz} - {-704937600 -21600 0 CST} - {-147895200 -14400 1 CDDT} - {-131565600 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986112000 -18000 0 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162108800 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Resolute) { + {-9223372036854775808 0 0 zzz} + {-704937600 -21600 0 CST} + {-147895200 -14400 1 CDDT} + {-131565600 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986112000 -18000 0 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162108800 -18000 0 EST} + {1162710000 -18000 0 EST} + {1173596400 -18000 0 CDT} + {1194159600 -18000 0 EST} + {1205046000 -18000 0 CDT} + {1225609200 -18000 0 EST} + {1236495600 -18000 0 CDT} + {1257058800 -18000 0 EST} + {1268550000 -18000 0 CDT} + {1289113200 -18000 0 EST} + {1299999600 -18000 0 CDT} + {1320562800 -18000 0 EST} + {1331449200 -18000 0 CDT} + {1352012400 -18000 0 EST} + {1362898800 -18000 0 CDT} + {1383462000 -18000 0 EST} + {1394348400 -18000 0 CDT} + {1414911600 -18000 0 EST} + {1425798000 -18000 0 CDT} + {1446361200 -18000 0 EST} + {1457852400 -18000 0 CDT} + {1478415600 -18000 0 EST} + {1489302000 -18000 0 CDT} + {1509865200 -18000 0 EST} + {1520751600 -18000 0 CDT} + {1541314800 -18000 0 EST} + {1552201200 -18000 0 CDT} + {1572764400 -18000 0 EST} + {1583650800 -18000 0 CDT} + {1604214000 -18000 0 EST} + {1615705200 -18000 0 CDT} + {1636268400 -18000 0 EST} + {1647154800 -18000 0 CDT} + {1667718000 -18000 0 EST} + {1678604400 -18000 0 CDT} + {1699167600 -18000 0 EST} + {1710054000 -18000 0 CDT} + {1730617200 -18000 0 EST} + {1741503600 -18000 0 CDT} + {1762066800 -18000 0 EST} + {1772953200 -18000 0 CDT} + {1793516400 -18000 0 EST} + {1805007600 -18000 0 CDT} + {1825570800 -18000 0 EST} + {1836457200 -18000 0 CDT} + {1857020400 -18000 0 EST} + {1867906800 -18000 0 CDT} + {1888470000 -18000 0 EST} + {1899356400 -18000 0 CDT} + {1919919600 -18000 0 EST} + {1930806000 -18000 0 CDT} + {1951369200 -18000 0 EST} + {1962860400 -18000 0 CDT} + {1983423600 -18000 0 EST} + {1994310000 -18000 0 CDT} + {2014873200 -18000 0 EST} + {2025759600 -18000 0 CDT} + {2046322800 -18000 0 EST} + {2057209200 -18000 0 CDT} + {2077772400 -18000 0 EST} + {2088658800 -18000 0 CDT} + {2109222000 -18000 0 EST} + {2120108400 -18000 0 CDT} + {2140671600 -18000 0 EST} + {2152162800 -18000 0 CDT} + {2172726000 -18000 0 EST} + {2183612400 -18000 0 CDT} + {2204175600 -18000 0 EST} + {2215062000 -18000 0 CDT} + {2235625200 -18000 0 EST} + {2246511600 -18000 0 CDT} + {2267074800 -18000 0 EST} + {2277961200 -18000 0 CDT} + {2298524400 -18000 0 EST} + {2309410800 -18000 0 CDT} + {2329974000 -18000 0 EST} + {2341465200 -18000 0 CDT} + {2362028400 -18000 0 EST} + {2372914800 -18000 0 CDT} + {2393478000 -18000 0 EST} + {2404364400 -18000 0 CDT} + {2424927600 -18000 0 EST} + {2435814000 -18000 0 CDT} + {2456377200 -18000 0 EST} + {2467263600 -18000 0 CDT} + {2487826800 -18000 0 EST} + {2499318000 -18000 0 CDT} + {2519881200 -18000 0 EST} + {2530767600 -18000 0 CDT} + {2551330800 -18000 0 EST} + {2562217200 -18000 0 CDT} + {2582780400 -18000 0 EST} + {2593666800 -18000 0 CDT} + {2614230000 -18000 0 EST} + {2625116400 -18000 0 CDT} + {2645679600 -18000 0 EST} + {2656566000 -18000 0 CDT} + {2677129200 -18000 0 EST} + {2688620400 -18000 0 CDT} + {2709183600 -18000 0 EST} + {2720070000 -18000 0 CDT} + {2740633200 -18000 0 EST} + {2751519600 -18000 0 CDT} + {2772082800 -18000 0 EST} + {2782969200 -18000 0 CDT} + {2803532400 -18000 0 EST} + {2814418800 -18000 0 CDT} + {2834982000 -18000 0 EST} + {2846473200 -18000 0 CDT} + {2867036400 -18000 0 EST} + {2877922800 -18000 0 CDT} + {2898486000 -18000 0 EST} + {2909372400 -18000 0 CDT} + {2929935600 -18000 0 EST} + {2940822000 -18000 0 CDT} + {2961385200 -18000 0 EST} + {2972271600 -18000 0 CDT} + {2992834800 -18000 0 EST} + {3003721200 -18000 0 CDT} + {3024284400 -18000 0 EST} + {3035775600 -18000 0 CDT} + {3056338800 -18000 0 EST} + {3067225200 -18000 0 CDT} + {3087788400 -18000 0 EST} + {3098674800 -18000 0 CDT} + {3119238000 -18000 0 EST} + {3130124400 -18000 0 CDT} + {3150687600 -18000 0 EST} + {3161574000 -18000 0 CDT} + {3182137200 -18000 0 EST} + {3193023600 -18000 0 CDT} + {3213586800 -18000 0 EST} + {3225078000 -18000 0 CDT} + {3245641200 -18000 0 EST} + {3256527600 -18000 0 CDT} + {3277090800 -18000 0 EST} + {3287977200 -18000 0 CDT} + {3308540400 -18000 0 EST} + {3319426800 -18000 0 CDT} + {3339990000 -18000 0 EST} + {3350876400 -18000 0 CDT} + {3371439600 -18000 0 EST} + {3382930800 -18000 0 CDT} + {3403494000 -18000 0 EST} + {3414380400 -18000 0 CDT} + {3434943600 -18000 0 EST} + {3445830000 -18000 0 CDT} + {3466393200 -18000 0 EST} + {3477279600 -18000 0 CDT} + {3497842800 -18000 0 EST} + {3508729200 -18000 0 CDT} + {3529292400 -18000 0 EST} + {3540178800 -18000 0 CDT} + {3560742000 -18000 0 EST} + {3572233200 -18000 0 CDT} + {3592796400 -18000 0 EST} + {3603682800 -18000 0 CDT} + {3624246000 -18000 0 EST} + {3635132400 -18000 0 CDT} + {3655695600 -18000 0 EST} + {3666582000 -18000 0 CDT} + {3687145200 -18000 0 EST} + {3698031600 -18000 0 CDT} + {3718594800 -18000 0 EST} + {3730086000 -18000 0 CDT} + {3750649200 -18000 0 EST} + {3761535600 -18000 0 CDT} + {3782098800 -18000 0 EST} + {3792985200 -18000 0 CDT} + {3813548400 -18000 0 EST} + {3824434800 -18000 0 CDT} + {3844998000 -18000 0 EST} + {3855884400 -18000 0 CDT} + {3876447600 -18000 0 EST} + {3887334000 -18000 0 CDT} + {3907897200 -18000 0 EST} + {3919388400 -18000 0 CDT} + {3939951600 -18000 0 EST} + {3950838000 -18000 0 CDT} + {3971401200 -18000 0 EST} + {3982287600 -18000 0 CDT} + {4002850800 -18000 0 EST} + {4013737200 -18000 0 CDT} + {4034300400 -18000 0 EST} + {4045186800 -18000 0 CDT} + {4065750000 -18000 0 EST} + {4076636400 -18000 0 CDT} + {4097199600 -18000 0 EST} +} diff --git a/library/tzdata/America/Rio_Branco b/library/tzdata/America/Rio_Branco index 20889cb..7669ba8 100644 --- a/library/tzdata/America/Rio_Branco +++ b/library/tzdata/America/Rio_Branco @@ -1,36 +1,36 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Rio_Branco) { - {-9223372036854775808 -16272 0 LMT} - {-1767209328 -18000 0 ACT} - {-1206950400 -14400 1 ACST} - {-1191355200 -18000 0 ACT} - {-1175367600 -14400 1 ACST} - {-1159819200 -18000 0 ACT} - {-633812400 -14400 1 ACST} - {-622062000 -18000 0 ACT} - {-602276400 -14400 1 ACST} - {-591825600 -18000 0 ACT} - {-570740400 -14400 1 ACST} - {-560203200 -18000 0 ACT} - {-539118000 -14400 1 ACST} - {-531345600 -18000 0 ACT} - {-191358000 -14400 1 ACST} - {-184190400 -18000 0 ACT} - {-155156400 -14400 1 ACST} - {-150062400 -18000 0 ACT} - {-128890800 -14400 1 ACST} - {-121118400 -18000 0 ACT} - {-99946800 -14400 1 ACST} - {-89582400 -18000 0 ACT} - {-68410800 -14400 1 ACST} - {-57960000 -18000 0 ACT} - {499755600 -14400 1 ACST} - {511243200 -18000 0 ACT} - {530600400 -14400 1 ACST} - {540273600 -18000 0 ACT} - {562136400 -14400 1 ACST} - {571204800 -18000 0 ACT} - {590040000 -18000 0 ACT} - {1214283600 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Rio_Branco) { + {-9223372036854775808 -16272 0 LMT} + {-1767209328 -18000 0 ACT} + {-1206950400 -14400 1 ACST} + {-1191355200 -18000 0 ACT} + {-1175367600 -14400 1 ACST} + {-1159819200 -18000 0 ACT} + {-633812400 -14400 1 ACST} + {-622062000 -18000 0 ACT} + {-602276400 -14400 1 ACST} + {-591825600 -18000 0 ACT} + {-570740400 -14400 1 ACST} + {-560203200 -18000 0 ACT} + {-539118000 -14400 1 ACST} + {-531345600 -18000 0 ACT} + {-191358000 -14400 1 ACST} + {-184190400 -18000 0 ACT} + {-155156400 -14400 1 ACST} + {-150062400 -18000 0 ACT} + {-128890800 -14400 1 ACST} + {-121118400 -18000 0 ACT} + {-99946800 -14400 1 ACST} + {-89582400 -18000 0 ACT} + {-68410800 -14400 1 ACST} + {-57960000 -18000 0 ACT} + {499755600 -14400 1 ACST} + {511243200 -18000 0 ACT} + {530600400 -14400 1 ACST} + {540273600 -18000 0 ACT} + {562136400 -14400 1 ACST} + {571204800 -18000 0 ACT} + {590040000 -18000 0 ACT} + {1214283600 -14400 0 AMT} +} diff --git a/library/tzdata/America/Rosario b/library/tzdata/America/Rosario index 6687f88..d613ce9 100644 --- a/library/tzdata/America/Rosario +++ b/library/tzdata/America/Rosario @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Cordoba)]} { - LoadTimeZoneFile America/Argentina/Cordoba -} -set TZData(:America/Rosario) $TZData(:America/Argentina/Cordoba) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Cordoba)]} { + LoadTimeZoneFile America/Argentina/Cordoba +} +set TZData(:America/Rosario) $TZData(:America/Argentina/Cordoba) diff --git a/library/tzdata/America/Santarem b/library/tzdata/America/Santarem index b6e9264..ada2898 100644 --- a/library/tzdata/America/Santarem +++ b/library/tzdata/America/Santarem @@ -1,36 +1,36 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Santarem) { - {-9223372036854775808 -13128 0 LMT} - {-1767212472 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {590036400 -14400 0 AMT} - {1214280000 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Santarem) { + {-9223372036854775808 -13128 0 LMT} + {-1767212472 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {590036400 -14400 0 AMT} + {1214280000 -10800 0 BRT} +} diff --git a/library/tzdata/America/Santiago b/library/tzdata/America/Santiago index 9f1d358..2d54d00 100644 --- a/library/tzdata/America/Santiago +++ b/library/tzdata/America/Santiago @@ -1,291 +1,291 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Santiago) { - {-9223372036854775808 -16966 0 LMT} - {-2524504634 -16966 0 SMT} - {-1893439034 -18000 0 CLT} - {-1688410800 -16966 0 SMT} - {-1619983034 -14400 0 CLT} - {-1593806400 -16966 0 SMT} - {-1335986234 -18000 0 CLT} - {-1335985200 -14400 1 CLST} - {-1317585600 -18000 0 CLT} - {-1304362800 -14400 1 CLST} - {-1286049600 -18000 0 CLT} - {-1272826800 -14400 1 CLST} - {-1254513600 -18000 0 CLT} - {-1241290800 -14400 1 CLST} - {-1222977600 -18000 0 CLT} - {-1209754800 -14400 1 CLST} - {-1191355200 -18000 0 CLT} - {-1178132400 -14400 1 CLST} - {-870552000 -18000 0 CLT} - {-865278000 -14400 1 CLST} - {-740520000 -14400 1 CLST} - {-736376400 -18000 0 CLT} - {-718056000 -18000 0 CLT} - {-713646000 -14400 0 CLT} - {-36619200 -10800 1 CLST} - {-23922000 -14400 0 CLT} - {-3355200 -10800 1 CLST} - {7527600 -14400 0 CLT} - {24465600 -10800 1 CLST} - {37767600 -14400 0 CLT} - {55915200 -10800 1 CLST} - {69217200 -14400 0 CLT} - {87969600 -10800 1 CLST} - {100666800 -14400 0 CLT} - {118209600 -10800 1 CLST} - {132116400 -14400 0 CLT} - {150868800 -10800 1 CLST} - {163566000 -14400 0 CLT} - {182318400 -10800 1 CLST} - {195620400 -14400 0 CLT} - {213768000 -10800 1 CLST} - {227070000 -14400 0 CLT} - {245217600 -10800 1 CLST} - {258519600 -14400 0 CLT} - {277272000 -10800 1 CLST} - {289969200 -14400 0 CLT} - {308721600 -10800 1 CLST} - {321418800 -14400 0 CLT} - {340171200 -10800 1 CLST} - {353473200 -14400 0 CLT} - {371620800 -10800 1 CLST} - {384922800 -14400 0 CLT} - {403070400 -10800 1 CLST} - {416372400 -14400 0 CLT} - {434520000 -10800 1 CLST} - {447822000 -14400 0 CLT} - {466574400 -10800 1 CLST} - {479271600 -14400 0 CLT} - {498024000 -10800 1 CLST} - {510721200 -14400 0 CLT} - {529473600 -10800 1 CLST} - {545194800 -14400 0 CLT} - {560923200 -10800 1 CLST} - {574225200 -14400 0 CLT} - {591768000 -10800 1 CLST} - {605674800 -14400 0 CLT} - {624427200 -10800 1 CLST} - {637729200 -14400 0 CLT} - {653457600 -10800 1 CLST} - {668574000 -14400 0 CLT} - {687326400 -10800 1 CLST} - {700628400 -14400 0 CLT} - {718776000 -10800 1 CLST} - {732078000 -14400 0 CLT} - {750225600 -10800 1 CLST} - {763527600 -14400 0 CLT} - {781675200 -10800 1 CLST} - {794977200 -14400 0 CLT} - {813729600 -10800 1 CLST} - {826426800 -14400 0 CLT} - {845179200 -10800 1 CLST} - {859690800 -14400 0 CLT} - {876628800 -10800 1 CLST} - {889930800 -14400 0 CLT} - {906868800 -10800 1 CLST} - {923194800 -14400 0 CLT} - {939528000 -10800 1 CLST} - {952830000 -14400 0 CLT} - {971582400 -10800 1 CLST} - {984279600 -14400 0 CLT} - {1003032000 -10800 1 CLST} - {1015729200 -14400 0 CLT} - {1034481600 -10800 1 CLST} - {1047178800 -14400 0 CLT} - {1065931200 -10800 1 CLST} - {1079233200 -14400 0 CLT} - {1097380800 -10800 1 CLST} - {1110682800 -14400 0 CLT} - {1128830400 -10800 1 CLST} - {1142132400 -14400 0 CLT} - {1160884800 -10800 1 CLST} - {1173582000 -14400 0 CLT} - {1192334400 -10800 1 CLST} - {1206846000 -14400 0 CLT} - {1223784000 -10800 1 CLST} - {1237086000 -14400 0 CLT} - {1255233600 -10800 1 CLST} - {1268535600 -14400 0 CLT} - {1286683200 -10800 1 CLST} - {1299985200 -14400 0 CLT} - {1318132800 -10800 1 CLST} - {1331434800 -14400 0 CLT} - {1350187200 -10800 1 CLST} - {1362884400 -14400 0 CLT} - {1381636800 -10800 1 CLST} - {1394334000 -14400 0 CLT} - {1413086400 -10800 1 CLST} - {1426388400 -14400 0 CLT} - {1444536000 -10800 1 CLST} - {1457838000 -14400 0 CLT} - {1475985600 -10800 1 CLST} - {1489287600 -14400 0 CLT} - {1508040000 -10800 1 CLST} - {1520737200 -14400 0 CLT} - {1539489600 -10800 1 CLST} - {1552186800 -14400 0 CLT} - {1570939200 -10800 1 CLST} - {1584241200 -14400 0 CLT} - {1602388800 -10800 1 CLST} - {1615690800 -14400 0 CLT} - {1633838400 -10800 1 CLST} - {1647140400 -14400 0 CLT} - {1665288000 -10800 1 CLST} - {1678590000 -14400 0 CLT} - {1697342400 -10800 1 CLST} - {1710039600 -14400 0 CLT} - {1728792000 -10800 1 CLST} - {1741489200 -14400 0 CLT} - {1760241600 -10800 1 CLST} - {1773543600 -14400 0 CLT} - {1791691200 -10800 1 CLST} - {1804993200 -14400 0 CLT} - {1823140800 -10800 1 CLST} - {1836442800 -14400 0 CLT} - {1855195200 -10800 1 CLST} - {1867892400 -14400 0 CLT} - {1886644800 -10800 1 CLST} - {1899342000 -14400 0 CLT} - {1918094400 -10800 1 CLST} - {1930791600 -14400 0 CLT} - {1949544000 -10800 1 CLST} - {1962846000 -14400 0 CLT} - {1980993600 -10800 1 CLST} - {1994295600 -14400 0 CLT} - {2012443200 -10800 1 CLST} - {2025745200 -14400 0 CLT} - {2044497600 -10800 1 CLST} - {2057194800 -14400 0 CLT} - {2075947200 -10800 1 CLST} - {2088644400 -14400 0 CLT} - {2107396800 -10800 1 CLST} - {2120698800 -14400 0 CLT} - {2138846400 -10800 1 CLST} - {2152148400 -14400 0 CLT} - {2170296000 -10800 1 CLST} - {2183598000 -14400 0 CLT} - {2201745600 -10800 1 CLST} - {2215047600 -14400 0 CLT} - {2233800000 -10800 1 CLST} - {2246497200 -14400 0 CLT} - {2265249600 -10800 1 CLST} - {2277946800 -14400 0 CLT} - {2296699200 -10800 1 CLST} - {2310001200 -14400 0 CLT} - {2328148800 -10800 1 CLST} - {2341450800 -14400 0 CLT} - {2359598400 -10800 1 CLST} - {2372900400 -14400 0 CLT} - {2391652800 -10800 1 CLST} - {2404350000 -14400 0 CLT} - {2423102400 -10800 1 CLST} - {2435799600 -14400 0 CLT} - {2454552000 -10800 1 CLST} - {2467854000 -14400 0 CLT} - {2486001600 -10800 1 CLST} - {2499303600 -14400 0 CLT} - {2517451200 -10800 1 CLST} - {2530753200 -14400 0 CLT} - {2548900800 -10800 1 CLST} - {2562202800 -14400 0 CLT} - {2580955200 -10800 1 CLST} - {2593652400 -14400 0 CLT} - {2612404800 -10800 1 CLST} - {2625102000 -14400 0 CLT} - {2643854400 -10800 1 CLST} - {2657156400 -14400 0 CLT} - {2675304000 -10800 1 CLST} - {2688606000 -14400 0 CLT} - {2706753600 -10800 1 CLST} - {2720055600 -14400 0 CLT} - {2738808000 -10800 1 CLST} - {2751505200 -14400 0 CLT} - {2770257600 -10800 1 CLST} - {2782954800 -14400 0 CLT} - {2801707200 -10800 1 CLST} - {2814404400 -14400 0 CLT} - {2833156800 -10800 1 CLST} - {2846458800 -14400 0 CLT} - {2864606400 -10800 1 CLST} - {2877908400 -14400 0 CLT} - {2896056000 -10800 1 CLST} - {2909358000 -14400 0 CLT} - {2928110400 -10800 1 CLST} - {2940807600 -14400 0 CLT} - {2959560000 -10800 1 CLST} - {2972257200 -14400 0 CLT} - {2991009600 -10800 1 CLST} - {3004311600 -14400 0 CLT} - {3022459200 -10800 1 CLST} - {3035761200 -14400 0 CLT} - {3053908800 -10800 1 CLST} - {3067210800 -14400 0 CLT} - {3085358400 -10800 1 CLST} - {3098660400 -14400 0 CLT} - {3117412800 -10800 1 CLST} - {3130110000 -14400 0 CLT} - {3148862400 -10800 1 CLST} - {3161559600 -14400 0 CLT} - {3180312000 -10800 1 CLST} - {3193614000 -14400 0 CLT} - {3211761600 -10800 1 CLST} - {3225063600 -14400 0 CLT} - {3243211200 -10800 1 CLST} - {3256513200 -14400 0 CLT} - {3275265600 -10800 1 CLST} - {3287962800 -14400 0 CLT} - {3306715200 -10800 1 CLST} - {3319412400 -14400 0 CLT} - {3338164800 -10800 1 CLST} - {3351466800 -14400 0 CLT} - {3369614400 -10800 1 CLST} - {3382916400 -14400 0 CLT} - {3401064000 -10800 1 CLST} - {3414366000 -14400 0 CLT} - {3432513600 -10800 1 CLST} - {3445815600 -14400 0 CLT} - {3464568000 -10800 1 CLST} - {3477265200 -14400 0 CLT} - {3496017600 -10800 1 CLST} - {3508714800 -14400 0 CLT} - {3527467200 -10800 1 CLST} - {3540769200 -14400 0 CLT} - {3558916800 -10800 1 CLST} - {3572218800 -14400 0 CLT} - {3590366400 -10800 1 CLST} - {3603668400 -14400 0 CLT} - {3622420800 -10800 1 CLST} - {3635118000 -14400 0 CLT} - {3653870400 -10800 1 CLST} - {3666567600 -14400 0 CLT} - {3685320000 -10800 1 CLST} - {3698017200 -14400 0 CLT} - {3716769600 -10800 1 CLST} - {3730071600 -14400 0 CLT} - {3748219200 -10800 1 CLST} - {3761521200 -14400 0 CLT} - {3779668800 -10800 1 CLST} - {3792970800 -14400 0 CLT} - {3811723200 -10800 1 CLST} - {3824420400 -14400 0 CLT} - {3843172800 -10800 1 CLST} - {3855870000 -14400 0 CLT} - {3874622400 -10800 1 CLST} - {3887924400 -14400 0 CLT} - {3906072000 -10800 1 CLST} - {3919374000 -14400 0 CLT} - {3937521600 -10800 1 CLST} - {3950823600 -14400 0 CLT} - {3968971200 -10800 1 CLST} - {3982273200 -14400 0 CLT} - {4001025600 -10800 1 CLST} - {4013722800 -14400 0 CLT} - {4032475200 -10800 1 CLST} - {4045172400 -14400 0 CLT} - {4063924800 -10800 1 CLST} - {4077226800 -14400 0 CLT} - {4095374400 -10800 1 CLST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Santiago) { + {-9223372036854775808 -16966 0 LMT} + {-2524504634 -16966 0 SMT} + {-1893439034 -18000 0 CLT} + {-1688410800 -16966 0 SMT} + {-1619983034 -14400 0 CLT} + {-1593806400 -16966 0 SMT} + {-1335986234 -18000 0 CLT} + {-1335985200 -14400 1 CLST} + {-1317585600 -18000 0 CLT} + {-1304362800 -14400 1 CLST} + {-1286049600 -18000 0 CLT} + {-1272826800 -14400 1 CLST} + {-1254513600 -18000 0 CLT} + {-1241290800 -14400 1 CLST} + {-1222977600 -18000 0 CLT} + {-1209754800 -14400 1 CLST} + {-1191355200 -18000 0 CLT} + {-1178132400 -14400 1 CLST} + {-870552000 -18000 0 CLT} + {-865278000 -14400 1 CLST} + {-740520000 -14400 1 CLST} + {-736376400 -18000 0 CLT} + {-718056000 -18000 0 CLT} + {-713646000 -14400 0 CLT} + {-36619200 -10800 1 CLST} + {-23922000 -14400 0 CLT} + {-3355200 -10800 1 CLST} + {7527600 -14400 0 CLT} + {24465600 -10800 1 CLST} + {37767600 -14400 0 CLT} + {55915200 -10800 1 CLST} + {69217200 -14400 0 CLT} + {87969600 -10800 1 CLST} + {100666800 -14400 0 CLT} + {118209600 -10800 1 CLST} + {132116400 -14400 0 CLT} + {150868800 -10800 1 CLST} + {163566000 -14400 0 CLT} + {182318400 -10800 1 CLST} + {195620400 -14400 0 CLT} + {213768000 -10800 1 CLST} + {227070000 -14400 0 CLT} + {245217600 -10800 1 CLST} + {258519600 -14400 0 CLT} + {277272000 -10800 1 CLST} + {289969200 -14400 0 CLT} + {308721600 -10800 1 CLST} + {321418800 -14400 0 CLT} + {340171200 -10800 1 CLST} + {353473200 -14400 0 CLT} + {371620800 -10800 1 CLST} + {384922800 -14400 0 CLT} + {403070400 -10800 1 CLST} + {416372400 -14400 0 CLT} + {434520000 -10800 1 CLST} + {447822000 -14400 0 CLT} + {466574400 -10800 1 CLST} + {479271600 -14400 0 CLT} + {498024000 -10800 1 CLST} + {510721200 -14400 0 CLT} + {529473600 -10800 1 CLST} + {545194800 -14400 0 CLT} + {560923200 -10800 1 CLST} + {574225200 -14400 0 CLT} + {591768000 -10800 1 CLST} + {605674800 -14400 0 CLT} + {624427200 -10800 1 CLST} + {637729200 -14400 0 CLT} + {653457600 -10800 1 CLST} + {668574000 -14400 0 CLT} + {687326400 -10800 1 CLST} + {700628400 -14400 0 CLT} + {718776000 -10800 1 CLST} + {732078000 -14400 0 CLT} + {750225600 -10800 1 CLST} + {763527600 -14400 0 CLT} + {781675200 -10800 1 CLST} + {794977200 -14400 0 CLT} + {813729600 -10800 1 CLST} + {826426800 -14400 0 CLT} + {845179200 -10800 1 CLST} + {859690800 -14400 0 CLT} + {876628800 -10800 1 CLST} + {889930800 -14400 0 CLT} + {906868800 -10800 1 CLST} + {923194800 -14400 0 CLT} + {939528000 -10800 1 CLST} + {952830000 -14400 0 CLT} + {971582400 -10800 1 CLST} + {984279600 -14400 0 CLT} + {1003032000 -10800 1 CLST} + {1015729200 -14400 0 CLT} + {1034481600 -10800 1 CLST} + {1047178800 -14400 0 CLT} + {1065931200 -10800 1 CLST} + {1079233200 -14400 0 CLT} + {1097380800 -10800 1 CLST} + {1110682800 -14400 0 CLT} + {1128830400 -10800 1 CLST} + {1142132400 -14400 0 CLT} + {1160884800 -10800 1 CLST} + {1173582000 -14400 0 CLT} + {1192334400 -10800 1 CLST} + {1206846000 -14400 0 CLT} + {1223784000 -10800 1 CLST} + {1237086000 -14400 0 CLT} + {1255233600 -10800 1 CLST} + {1268535600 -14400 0 CLT} + {1286683200 -10800 1 CLST} + {1299985200 -14400 0 CLT} + {1318132800 -10800 1 CLST} + {1331434800 -14400 0 CLT} + {1350187200 -10800 1 CLST} + {1362884400 -14400 0 CLT} + {1381636800 -10800 1 CLST} + {1394334000 -14400 0 CLT} + {1413086400 -10800 1 CLST} + {1426388400 -14400 0 CLT} + {1444536000 -10800 1 CLST} + {1457838000 -14400 0 CLT} + {1475985600 -10800 1 CLST} + {1489287600 -14400 0 CLT} + {1508040000 -10800 1 CLST} + {1520737200 -14400 0 CLT} + {1539489600 -10800 1 CLST} + {1552186800 -14400 0 CLT} + {1570939200 -10800 1 CLST} + {1584241200 -14400 0 CLT} + {1602388800 -10800 1 CLST} + {1615690800 -14400 0 CLT} + {1633838400 -10800 1 CLST} + {1647140400 -14400 0 CLT} + {1665288000 -10800 1 CLST} + {1678590000 -14400 0 CLT} + {1697342400 -10800 1 CLST} + {1710039600 -14400 0 CLT} + {1728792000 -10800 1 CLST} + {1741489200 -14400 0 CLT} + {1760241600 -10800 1 CLST} + {1773543600 -14400 0 CLT} + {1791691200 -10800 1 CLST} + {1804993200 -14400 0 CLT} + {1823140800 -10800 1 CLST} + {1836442800 -14400 0 CLT} + {1855195200 -10800 1 CLST} + {1867892400 -14400 0 CLT} + {1886644800 -10800 1 CLST} + {1899342000 -14400 0 CLT} + {1918094400 -10800 1 CLST} + {1930791600 -14400 0 CLT} + {1949544000 -10800 1 CLST} + {1962846000 -14400 0 CLT} + {1980993600 -10800 1 CLST} + {1994295600 -14400 0 CLT} + {2012443200 -10800 1 CLST} + {2025745200 -14400 0 CLT} + {2044497600 -10800 1 CLST} + {2057194800 -14400 0 CLT} + {2075947200 -10800 1 CLST} + {2088644400 -14400 0 CLT} + {2107396800 -10800 1 CLST} + {2120698800 -14400 0 CLT} + {2138846400 -10800 1 CLST} + {2152148400 -14400 0 CLT} + {2170296000 -10800 1 CLST} + {2183598000 -14400 0 CLT} + {2201745600 -10800 1 CLST} + {2215047600 -14400 0 CLT} + {2233800000 -10800 1 CLST} + {2246497200 -14400 0 CLT} + {2265249600 -10800 1 CLST} + {2277946800 -14400 0 CLT} + {2296699200 -10800 1 CLST} + {2310001200 -14400 0 CLT} + {2328148800 -10800 1 CLST} + {2341450800 -14400 0 CLT} + {2359598400 -10800 1 CLST} + {2372900400 -14400 0 CLT} + {2391652800 -10800 1 CLST} + {2404350000 -14400 0 CLT} + {2423102400 -10800 1 CLST} + {2435799600 -14400 0 CLT} + {2454552000 -10800 1 CLST} + {2467854000 -14400 0 CLT} + {2486001600 -10800 1 CLST} + {2499303600 -14400 0 CLT} + {2517451200 -10800 1 CLST} + {2530753200 -14400 0 CLT} + {2548900800 -10800 1 CLST} + {2562202800 -14400 0 CLT} + {2580955200 -10800 1 CLST} + {2593652400 -14400 0 CLT} + {2612404800 -10800 1 CLST} + {2625102000 -14400 0 CLT} + {2643854400 -10800 1 CLST} + {2657156400 -14400 0 CLT} + {2675304000 -10800 1 CLST} + {2688606000 -14400 0 CLT} + {2706753600 -10800 1 CLST} + {2720055600 -14400 0 CLT} + {2738808000 -10800 1 CLST} + {2751505200 -14400 0 CLT} + {2770257600 -10800 1 CLST} + {2782954800 -14400 0 CLT} + {2801707200 -10800 1 CLST} + {2814404400 -14400 0 CLT} + {2833156800 -10800 1 CLST} + {2846458800 -14400 0 CLT} + {2864606400 -10800 1 CLST} + {2877908400 -14400 0 CLT} + {2896056000 -10800 1 CLST} + {2909358000 -14400 0 CLT} + {2928110400 -10800 1 CLST} + {2940807600 -14400 0 CLT} + {2959560000 -10800 1 CLST} + {2972257200 -14400 0 CLT} + {2991009600 -10800 1 CLST} + {3004311600 -14400 0 CLT} + {3022459200 -10800 1 CLST} + {3035761200 -14400 0 CLT} + {3053908800 -10800 1 CLST} + {3067210800 -14400 0 CLT} + {3085358400 -10800 1 CLST} + {3098660400 -14400 0 CLT} + {3117412800 -10800 1 CLST} + {3130110000 -14400 0 CLT} + {3148862400 -10800 1 CLST} + {3161559600 -14400 0 CLT} + {3180312000 -10800 1 CLST} + {3193614000 -14400 0 CLT} + {3211761600 -10800 1 CLST} + {3225063600 -14400 0 CLT} + {3243211200 -10800 1 CLST} + {3256513200 -14400 0 CLT} + {3275265600 -10800 1 CLST} + {3287962800 -14400 0 CLT} + {3306715200 -10800 1 CLST} + {3319412400 -14400 0 CLT} + {3338164800 -10800 1 CLST} + {3351466800 -14400 0 CLT} + {3369614400 -10800 1 CLST} + {3382916400 -14400 0 CLT} + {3401064000 -10800 1 CLST} + {3414366000 -14400 0 CLT} + {3432513600 -10800 1 CLST} + {3445815600 -14400 0 CLT} + {3464568000 -10800 1 CLST} + {3477265200 -14400 0 CLT} + {3496017600 -10800 1 CLST} + {3508714800 -14400 0 CLT} + {3527467200 -10800 1 CLST} + {3540769200 -14400 0 CLT} + {3558916800 -10800 1 CLST} + {3572218800 -14400 0 CLT} + {3590366400 -10800 1 CLST} + {3603668400 -14400 0 CLT} + {3622420800 -10800 1 CLST} + {3635118000 -14400 0 CLT} + {3653870400 -10800 1 CLST} + {3666567600 -14400 0 CLT} + {3685320000 -10800 1 CLST} + {3698017200 -14400 0 CLT} + {3716769600 -10800 1 CLST} + {3730071600 -14400 0 CLT} + {3748219200 -10800 1 CLST} + {3761521200 -14400 0 CLT} + {3779668800 -10800 1 CLST} + {3792970800 -14400 0 CLT} + {3811723200 -10800 1 CLST} + {3824420400 -14400 0 CLT} + {3843172800 -10800 1 CLST} + {3855870000 -14400 0 CLT} + {3874622400 -10800 1 CLST} + {3887924400 -14400 0 CLT} + {3906072000 -10800 1 CLST} + {3919374000 -14400 0 CLT} + {3937521600 -10800 1 CLST} + {3950823600 -14400 0 CLT} + {3968971200 -10800 1 CLST} + {3982273200 -14400 0 CLT} + {4001025600 -10800 1 CLST} + {4013722800 -14400 0 CLT} + {4032475200 -10800 1 CLST} + {4045172400 -14400 0 CLT} + {4063924800 -10800 1 CLST} + {4077226800 -14400 0 CLT} + {4095374400 -10800 1 CLST} +} diff --git a/library/tzdata/America/Santo_Domingo b/library/tzdata/America/Santo_Domingo index 7706918..4882085 100644 --- a/library/tzdata/America/Santo_Domingo +++ b/library/tzdata/America/Santo_Domingo @@ -1,21 +1,21 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Santo_Domingo) { - {-9223372036854775808 -16776 0 LMT} - {-2524504824 -16800 0 SDMT} - {-1159773600 -18000 0 EST} - {-100119600 -14400 1 EDT} - {-89668800 -18000 0 EST} - {-5770800 -16200 1 EHDT} - {4422600 -18000 0 EST} - {25678800 -16200 1 EHDT} - {33193800 -18000 0 EST} - {57733200 -16200 1 EHDT} - {64816200 -18000 0 EST} - {89182800 -16200 1 EHDT} - {96438600 -18000 0 EST} - {120632400 -16200 1 EHDT} - {127974600 -18000 0 EST} - {152082000 -14400 0 AST} - {975823200 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Santo_Domingo) { + {-9223372036854775808 -16776 0 LMT} + {-2524504824 -16800 0 SDMT} + {-1159773600 -18000 0 EST} + {-100119600 -14400 1 EDT} + {-89668800 -18000 0 EST} + {-5770800 -16200 1 EHDT} + {4422600 -18000 0 EST} + {25678800 -16200 1 EHDT} + {33193800 -18000 0 EST} + {57733200 -16200 1 EHDT} + {64816200 -18000 0 EST} + {89182800 -16200 1 EHDT} + {96438600 -18000 0 EST} + {120632400 -16200 1 EHDT} + {127974600 -18000 0 EST} + {152082000 -14400 0 AST} + {975823200 -14400 0 AST} +} diff --git a/library/tzdata/America/Sao_Paulo b/library/tzdata/America/Sao_Paulo index 8d70063..c2f11d1 100644 --- a/library/tzdata/America/Sao_Paulo +++ b/library/tzdata/America/Sao_Paulo @@ -1,258 +1,258 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Sao_Paulo) { - {-9223372036854775808 -11188 0 LMT} - {-1767214412 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-195429600 -7200 1 BRST} - {-189381600 -7200 0 BRT} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {656478000 -7200 1 BRST} - {666756000 -10800 0 BRT} - {687927600 -7200 1 BRST} - {697600800 -10800 0 BRT} - {719982000 -7200 1 BRST} - {728445600 -10800 0 BRT} - {750826800 -7200 1 BRST} - {761709600 -10800 0 BRT} - {782276400 -7200 1 BRST} - {793159200 -10800 0 BRT} - {813726000 -7200 1 BRST} - {824004000 -10800 0 BRT} - {844570800 -7200 1 BRST} - {856058400 -10800 0 BRT} - {876106800 -7200 1 BRST} - {888717600 -10800 0 BRT} - {908074800 -7200 1 BRST} - {919562400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {982461600 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1036292400 -7200 1 BRST} - {1045360800 -10800 0 BRT} - {1066532400 -7200 1 BRST} - {1076810400 -10800 0 BRT} - {1099364400 -7200 1 BRST} - {1108864800 -10800 0 BRT} - {1129431600 -7200 1 BRST} - {1140314400 -10800 0 BRT} - {1162695600 -7200 1 BRST} - {1172368800 -10800 0 BRT} - {1192330800 -7200 1 BRST} - {1203213600 -10800 0 BRT} - {1224385200 -7200 1 BRST} - {1234663200 -10800 0 BRT} - {1255834800 -7200 1 BRST} - {1266717600 -10800 0 BRT} - {1287284400 -7200 1 BRST} - {1298167200 -10800 0 BRT} - {1318734000 -7200 1 BRST} - {1330221600 -10800 0 BRT} - {1350788400 -7200 1 BRST} - {1361066400 -10800 0 BRT} - {1382238000 -7200 1 BRST} - {1392516000 -10800 0 BRT} - {1413687600 -7200 1 BRST} - {1424570400 -10800 0 BRT} - {1445137200 -7200 1 BRST} - {1456020000 -10800 0 BRT} - {1476586800 -7200 1 BRST} - {1487469600 -10800 0 BRT} - {1508036400 -7200 1 BRST} - {1518919200 -10800 0 BRT} - {1540090800 -7200 1 BRST} - {1550368800 -10800 0 BRT} - {1571540400 -7200 1 BRST} - {1581818400 -10800 0 BRT} - {1602990000 -7200 1 BRST} - {1613872800 -10800 0 BRT} - {1634439600 -7200 1 BRST} - {1645322400 -10800 0 BRT} - {1665889200 -7200 1 BRST} - {1677376800 -10800 0 BRT} - {1697338800 -7200 1 BRST} - {1708221600 -10800 0 BRT} - {1729393200 -7200 1 BRST} - {1739671200 -10800 0 BRT} - {1760842800 -7200 1 BRST} - {1771725600 -10800 0 BRT} - {1792292400 -7200 1 BRST} - {1803175200 -10800 0 BRT} - {1823742000 -7200 1 BRST} - {1834624800 -10800 0 BRT} - {1855191600 -7200 1 BRST} - {1866074400 -10800 0 BRT} - {1887246000 -7200 1 BRST} - {1897524000 -10800 0 BRT} - {1918695600 -7200 1 BRST} - {1928973600 -10800 0 BRT} - {1950145200 -7200 1 BRST} - {1960423200 -10800 0 BRT} - {1981594800 -7200 1 BRST} - {1992477600 -10800 0 BRT} - {2013044400 -7200 1 BRST} - {2024532000 -10800 0 BRT} - {2044494000 -7200 1 BRST} - {2055376800 -10800 0 BRT} - {2076548400 -7200 1 BRST} - {2086826400 -10800 0 BRT} - {2107998000 -7200 1 BRST} - {2118880800 -10800 0 BRT} - {2139447600 -7200 1 BRST} - {2150330400 -10800 0 BRT} - {2170897200 -7200 1 BRST} - {2181780000 -10800 0 BRT} - {2202346800 -7200 1 BRST} - {2213229600 -10800 0 BRT} - {2234401200 -7200 1 BRST} - {2244679200 -10800 0 BRT} - {2265850800 -7200 1 BRST} - {2276128800 -10800 0 BRT} - {2297300400 -7200 1 BRST} - {2307578400 -10800 0 BRT} - {2328750000 -7200 1 BRST} - {2339632800 -10800 0 BRT} - {2360199600 -7200 1 BRST} - {2371082400 -10800 0 BRT} - {2391649200 -7200 1 BRST} - {2402532000 -10800 0 BRT} - {2423703600 -7200 1 BRST} - {2433981600 -10800 0 BRT} - {2455153200 -7200 1 BRST} - {2465431200 -10800 0 BRT} - {2486602800 -7200 1 BRST} - {2497485600 -10800 0 BRT} - {2518052400 -7200 1 BRST} - {2528935200 -10800 0 BRT} - {2549502000 -7200 1 BRST} - {2560384800 -10800 0 BRT} - {2580951600 -7200 1 BRST} - {2591834400 -10800 0 BRT} - {2613006000 -7200 1 BRST} - {2623284000 -10800 0 BRT} - {2644455600 -7200 1 BRST} - {2654733600 -10800 0 BRT} - {2675905200 -7200 1 BRST} - {2686788000 -10800 0 BRT} - {2707354800 -7200 1 BRST} - {2718237600 -10800 0 BRT} - {2738804400 -7200 1 BRST} - {2749687200 -10800 0 BRT} - {2770858800 -7200 1 BRST} - {2781136800 -10800 0 BRT} - {2802308400 -7200 1 BRST} - {2812586400 -10800 0 BRT} - {2833758000 -7200 1 BRST} - {2844036000 -10800 0 BRT} - {2865207600 -7200 1 BRST} - {2876090400 -10800 0 BRT} - {2896657200 -7200 1 BRST} - {2907540000 -10800 0 BRT} - {2928106800 -7200 1 BRST} - {2938989600 -10800 0 BRT} - {2960161200 -7200 1 BRST} - {2970439200 -10800 0 BRT} - {2991610800 -7200 1 BRST} - {3001888800 -10800 0 BRT} - {3023060400 -7200 1 BRST} - {3033943200 -10800 0 BRT} - {3054510000 -7200 1 BRST} - {3065392800 -10800 0 BRT} - {3085959600 -7200 1 BRST} - {3096842400 -10800 0 BRT} - {3118014000 -7200 1 BRST} - {3128292000 -10800 0 BRT} - {3149463600 -7200 1 BRST} - {3159741600 -10800 0 BRT} - {3180913200 -7200 1 BRST} - {3191191200 -10800 0 BRT} - {3212362800 -7200 1 BRST} - {3223245600 -10800 0 BRT} - {3243812400 -7200 1 BRST} - {3254695200 -10800 0 BRT} - {3275262000 -7200 1 BRST} - {3286144800 -10800 0 BRT} - {3307316400 -7200 1 BRST} - {3317594400 -10800 0 BRT} - {3338766000 -7200 1 BRST} - {3349044000 -10800 0 BRT} - {3370215600 -7200 1 BRST} - {3381098400 -10800 0 BRT} - {3401665200 -7200 1 BRST} - {3412548000 -10800 0 BRT} - {3433114800 -7200 1 BRST} - {3443997600 -10800 0 BRT} - {3464564400 -7200 1 BRST} - {3475447200 -10800 0 BRT} - {3496618800 -7200 1 BRST} - {3506896800 -10800 0 BRT} - {3528068400 -7200 1 BRST} - {3538346400 -10800 0 BRT} - {3559518000 -7200 1 BRST} - {3570400800 -10800 0 BRT} - {3590967600 -7200 1 BRST} - {3601850400 -10800 0 BRT} - {3622417200 -7200 1 BRST} - {3633300000 -10800 0 BRT} - {3654471600 -7200 1 BRST} - {3664749600 -10800 0 BRT} - {3685921200 -7200 1 BRST} - {3696199200 -10800 0 BRT} - {3717370800 -7200 1 BRST} - {3727648800 -10800 0 BRT} - {3748820400 -7200 1 BRST} - {3759703200 -10800 0 BRT} - {3780270000 -7200 1 BRST} - {3791152800 -10800 0 BRT} - {3811719600 -7200 1 BRST} - {3822602400 -10800 0 BRT} - {3843774000 -7200 1 BRST} - {3854052000 -10800 0 BRT} - {3875223600 -7200 1 BRST} - {3885501600 -10800 0 BRT} - {3906673200 -7200 1 BRST} - {3917556000 -10800 0 BRT} - {3938122800 -7200 1 BRST} - {3949005600 -10800 0 BRT} - {3969572400 -7200 1 BRST} - {3980455200 -10800 0 BRT} - {4001626800 -7200 1 BRST} - {4011904800 -10800 0 BRT} - {4033076400 -7200 1 BRST} - {4043354400 -10800 0 BRT} - {4064526000 -7200 1 BRST} - {4074804000 -10800 0 BRT} - {4095975600 -7200 1 BRST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Sao_Paulo) { + {-9223372036854775808 -11188 0 LMT} + {-1767214412 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-195429600 -7200 1 BRST} + {-189381600 -7200 0 BRT} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {656478000 -7200 1 BRST} + {666756000 -10800 0 BRT} + {687927600 -7200 1 BRST} + {697600800 -10800 0 BRT} + {719982000 -7200 1 BRST} + {728445600 -10800 0 BRT} + {750826800 -7200 1 BRST} + {761709600 -10800 0 BRT} + {782276400 -7200 1 BRST} + {793159200 -10800 0 BRT} + {813726000 -7200 1 BRST} + {824004000 -10800 0 BRT} + {844570800 -7200 1 BRST} + {856058400 -10800 0 BRT} + {876106800 -7200 1 BRST} + {888717600 -10800 0 BRT} + {908074800 -7200 1 BRST} + {919562400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {982461600 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1036292400 -7200 1 BRST} + {1045360800 -10800 0 BRT} + {1066532400 -7200 1 BRST} + {1076810400 -10800 0 BRT} + {1099364400 -7200 1 BRST} + {1108864800 -10800 0 BRT} + {1129431600 -7200 1 BRST} + {1140314400 -10800 0 BRT} + {1162695600 -7200 1 BRST} + {1172368800 -10800 0 BRT} + {1192330800 -7200 1 BRST} + {1203213600 -10800 0 BRT} + {1224385200 -7200 1 BRST} + {1234663200 -10800 0 BRT} + {1255834800 -7200 1 BRST} + {1266717600 -10800 0 BRT} + {1287284400 -7200 1 BRST} + {1298167200 -10800 0 BRT} + {1318734000 -7200 1 BRST} + {1330221600 -10800 0 BRT} + {1350788400 -7200 1 BRST} + {1361066400 -10800 0 BRT} + {1382238000 -7200 1 BRST} + {1392516000 -10800 0 BRT} + {1413687600 -7200 1 BRST} + {1424570400 -10800 0 BRT} + {1445137200 -7200 1 BRST} + {1456020000 -10800 0 BRT} + {1476586800 -7200 1 BRST} + {1487469600 -10800 0 BRT} + {1508036400 -7200 1 BRST} + {1518919200 -10800 0 BRT} + {1540090800 -7200 1 BRST} + {1550368800 -10800 0 BRT} + {1571540400 -7200 1 BRST} + {1581818400 -10800 0 BRT} + {1602990000 -7200 1 BRST} + {1613872800 -10800 0 BRT} + {1634439600 -7200 1 BRST} + {1645322400 -10800 0 BRT} + {1665889200 -7200 1 BRST} + {1677376800 -10800 0 BRT} + {1697338800 -7200 1 BRST} + {1708221600 -10800 0 BRT} + {1729393200 -7200 1 BRST} + {1739671200 -10800 0 BRT} + {1760842800 -7200 1 BRST} + {1771725600 -10800 0 BRT} + {1792292400 -7200 1 BRST} + {1803175200 -10800 0 BRT} + {1823742000 -7200 1 BRST} + {1834624800 -10800 0 BRT} + {1855191600 -7200 1 BRST} + {1866074400 -10800 0 BRT} + {1887246000 -7200 1 BRST} + {1897524000 -10800 0 BRT} + {1918695600 -7200 1 BRST} + {1928973600 -10800 0 BRT} + {1950145200 -7200 1 BRST} + {1960423200 -10800 0 BRT} + {1981594800 -7200 1 BRST} + {1992477600 -10800 0 BRT} + {2013044400 -7200 1 BRST} + {2024532000 -10800 0 BRT} + {2044494000 -7200 1 BRST} + {2055376800 -10800 0 BRT} + {2076548400 -7200 1 BRST} + {2086826400 -10800 0 BRT} + {2107998000 -7200 1 BRST} + {2118880800 -10800 0 BRT} + {2139447600 -7200 1 BRST} + {2150330400 -10800 0 BRT} + {2170897200 -7200 1 BRST} + {2181780000 -10800 0 BRT} + {2202346800 -7200 1 BRST} + {2213229600 -10800 0 BRT} + {2234401200 -7200 1 BRST} + {2244679200 -10800 0 BRT} + {2265850800 -7200 1 BRST} + {2276128800 -10800 0 BRT} + {2297300400 -7200 1 BRST} + {2307578400 -10800 0 BRT} + {2328750000 -7200 1 BRST} + {2339632800 -10800 0 BRT} + {2360199600 -7200 1 BRST} + {2371082400 -10800 0 BRT} + {2391649200 -7200 1 BRST} + {2402532000 -10800 0 BRT} + {2423703600 -7200 1 BRST} + {2433981600 -10800 0 BRT} + {2455153200 -7200 1 BRST} + {2465431200 -10800 0 BRT} + {2486602800 -7200 1 BRST} + {2497485600 -10800 0 BRT} + {2518052400 -7200 1 BRST} + {2528935200 -10800 0 BRT} + {2549502000 -7200 1 BRST} + {2560384800 -10800 0 BRT} + {2580951600 -7200 1 BRST} + {2591834400 -10800 0 BRT} + {2613006000 -7200 1 BRST} + {2623284000 -10800 0 BRT} + {2644455600 -7200 1 BRST} + {2654733600 -10800 0 BRT} + {2675905200 -7200 1 BRST} + {2686788000 -10800 0 BRT} + {2707354800 -7200 1 BRST} + {2718237600 -10800 0 BRT} + {2738804400 -7200 1 BRST} + {2749687200 -10800 0 BRT} + {2770858800 -7200 1 BRST} + {2781136800 -10800 0 BRT} + {2802308400 -7200 1 BRST} + {2812586400 -10800 0 BRT} + {2833758000 -7200 1 BRST} + {2844036000 -10800 0 BRT} + {2865207600 -7200 1 BRST} + {2876090400 -10800 0 BRT} + {2896657200 -7200 1 BRST} + {2907540000 -10800 0 BRT} + {2928106800 -7200 1 BRST} + {2938989600 -10800 0 BRT} + {2960161200 -7200 1 BRST} + {2970439200 -10800 0 BRT} + {2991610800 -7200 1 BRST} + {3001888800 -10800 0 BRT} + {3023060400 -7200 1 BRST} + {3033943200 -10800 0 BRT} + {3054510000 -7200 1 BRST} + {3065392800 -10800 0 BRT} + {3085959600 -7200 1 BRST} + {3096842400 -10800 0 BRT} + {3118014000 -7200 1 BRST} + {3128292000 -10800 0 BRT} + {3149463600 -7200 1 BRST} + {3159741600 -10800 0 BRT} + {3180913200 -7200 1 BRST} + {3191191200 -10800 0 BRT} + {3212362800 -7200 1 BRST} + {3223245600 -10800 0 BRT} + {3243812400 -7200 1 BRST} + {3254695200 -10800 0 BRT} + {3275262000 -7200 1 BRST} + {3286144800 -10800 0 BRT} + {3307316400 -7200 1 BRST} + {3317594400 -10800 0 BRT} + {3338766000 -7200 1 BRST} + {3349044000 -10800 0 BRT} + {3370215600 -7200 1 BRST} + {3381098400 -10800 0 BRT} + {3401665200 -7200 1 BRST} + {3412548000 -10800 0 BRT} + {3433114800 -7200 1 BRST} + {3443997600 -10800 0 BRT} + {3464564400 -7200 1 BRST} + {3475447200 -10800 0 BRT} + {3496618800 -7200 1 BRST} + {3506896800 -10800 0 BRT} + {3528068400 -7200 1 BRST} + {3538346400 -10800 0 BRT} + {3559518000 -7200 1 BRST} + {3570400800 -10800 0 BRT} + {3590967600 -7200 1 BRST} + {3601850400 -10800 0 BRT} + {3622417200 -7200 1 BRST} + {3633300000 -10800 0 BRT} + {3654471600 -7200 1 BRST} + {3664749600 -10800 0 BRT} + {3685921200 -7200 1 BRST} + {3696199200 -10800 0 BRT} + {3717370800 -7200 1 BRST} + {3727648800 -10800 0 BRT} + {3748820400 -7200 1 BRST} + {3759703200 -10800 0 BRT} + {3780270000 -7200 1 BRST} + {3791152800 -10800 0 BRT} + {3811719600 -7200 1 BRST} + {3822602400 -10800 0 BRT} + {3843774000 -7200 1 BRST} + {3854052000 -10800 0 BRT} + {3875223600 -7200 1 BRST} + {3885501600 -10800 0 BRT} + {3906673200 -7200 1 BRST} + {3917556000 -10800 0 BRT} + {3938122800 -7200 1 BRST} + {3949005600 -10800 0 BRT} + {3969572400 -7200 1 BRST} + {3980455200 -10800 0 BRT} + {4001626800 -7200 1 BRST} + {4011904800 -10800 0 BRT} + {4033076400 -7200 1 BRST} + {4043354400 -10800 0 BRT} + {4064526000 -7200 1 BRST} + {4074804000 -10800 0 BRT} + {4095975600 -7200 1 BRST} +} diff --git a/library/tzdata/America/Scoresbysund b/library/tzdata/America/Scoresbysund index 74a332c..2ed5dcd 100644 --- a/library/tzdata/America/Scoresbysund +++ b/library/tzdata/America/Scoresbysund @@ -1,246 +1,246 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Scoresbysund) { - {-9223372036854775808 -5272 0 LMT} - {-1686090728 -7200 0 CGT} - {323841600 -3600 0 CGST} - {338961600 -7200 0 CGT} - {354679200 0 0 EGST} - {370400400 -3600 0 EGT} - {386125200 0 1 EGST} - {401850000 -3600 0 EGT} - {417574800 0 1 EGST} - {433299600 -3600 0 EGT} - {449024400 0 1 EGST} - {465354000 -3600 0 EGT} - {481078800 0 1 EGST} - {496803600 -3600 0 EGT} - {512528400 0 1 EGST} - {528253200 -3600 0 EGT} - {543978000 0 1 EGST} - {559702800 -3600 0 EGT} - {575427600 0 1 EGST} - {591152400 -3600 0 EGT} - {606877200 0 1 EGST} - {622602000 -3600 0 EGT} - {638326800 0 1 EGST} - {654656400 -3600 0 EGT} - {670381200 0 1 EGST} - {686106000 -3600 0 EGT} - {701830800 0 1 EGST} - {717555600 -3600 0 EGT} - {733280400 0 1 EGST} - {749005200 -3600 0 EGT} - {764730000 0 1 EGST} - {780454800 -3600 0 EGT} - {796179600 0 1 EGST} - {811904400 -3600 0 EGT} - {828234000 0 1 EGST} - {846378000 -3600 0 EGT} - {859683600 0 1 EGST} - {877827600 -3600 0 EGT} - {891133200 0 1 EGST} - {909277200 -3600 0 EGT} - {922582800 0 1 EGST} - {941331600 -3600 0 EGT} - {954032400 0 1 EGST} - {972781200 -3600 0 EGT} - {985482000 0 1 EGST} - {1004230800 -3600 0 EGT} - {1017536400 0 1 EGST} - {1035680400 -3600 0 EGT} - {1048986000 0 1 EGST} - {1067130000 -3600 0 EGT} - {1080435600 0 1 EGST} - {1099184400 -3600 0 EGT} - {1111885200 0 1 EGST} - {1130634000 -3600 0 EGT} - {1143334800 0 1 EGST} - {1162083600 -3600 0 EGT} - {1174784400 0 1 EGST} - {1193533200 -3600 0 EGT} - {1206838800 0 1 EGST} - {1224982800 -3600 0 EGT} - {1238288400 0 1 EGST} - {1256432400 -3600 0 EGT} - {1269738000 0 1 EGST} - {1288486800 -3600 0 EGT} - {1301187600 0 1 EGST} - {1319936400 -3600 0 EGT} - {1332637200 0 1 EGST} - {1351386000 -3600 0 EGT} - {1364691600 0 1 EGST} - {1382835600 -3600 0 EGT} - {1396141200 0 1 EGST} - {1414285200 -3600 0 EGT} - {1427590800 0 1 EGST} - {1445734800 -3600 0 EGT} - {1459040400 0 1 EGST} - {1477789200 -3600 0 EGT} - {1490490000 0 1 EGST} - {1509238800 -3600 0 EGT} - {1521939600 0 1 EGST} - {1540688400 -3600 0 EGT} - {1553994000 0 1 EGST} - {1572138000 -3600 0 EGT} - {1585443600 0 1 EGST} - {1603587600 -3600 0 EGT} - {1616893200 0 1 EGST} - {1635642000 -3600 0 EGT} - {1648342800 0 1 EGST} - {1667091600 -3600 0 EGT} - {1679792400 0 1 EGST} - {1698541200 -3600 0 EGT} - {1711846800 0 1 EGST} - {1729990800 -3600 0 EGT} - {1743296400 0 1 EGST} - {1761440400 -3600 0 EGT} - {1774746000 0 1 EGST} - {1792890000 -3600 0 EGT} - {1806195600 0 1 EGST} - {1824944400 -3600 0 EGT} - {1837645200 0 1 EGST} - {1856394000 -3600 0 EGT} - {1869094800 0 1 EGST} - {1887843600 -3600 0 EGT} - {1901149200 0 1 EGST} - {1919293200 -3600 0 EGT} - {1932598800 0 1 EGST} - {1950742800 -3600 0 EGT} - {1964048400 0 1 EGST} - {1982797200 -3600 0 EGT} - {1995498000 0 1 EGST} - {2014246800 -3600 0 EGT} - {2026947600 0 1 EGST} - {2045696400 -3600 0 EGT} - {2058397200 0 1 EGST} - {2077146000 -3600 0 EGT} - {2090451600 0 1 EGST} - {2108595600 -3600 0 EGT} - {2121901200 0 1 EGST} - {2140045200 -3600 0 EGT} - {2153350800 0 1 EGST} - {2172099600 -3600 0 EGT} - {2184800400 0 1 EGST} - {2203549200 -3600 0 EGT} - {2216250000 0 1 EGST} - {2234998800 -3600 0 EGT} - {2248304400 0 1 EGST} - {2266448400 -3600 0 EGT} - {2279754000 0 1 EGST} - {2297898000 -3600 0 EGT} - {2311203600 0 1 EGST} - {2329347600 -3600 0 EGT} - {2342653200 0 1 EGST} - {2361402000 -3600 0 EGT} - {2374102800 0 1 EGST} - {2392851600 -3600 0 EGT} - {2405552400 0 1 EGST} - {2424301200 -3600 0 EGT} - {2437606800 0 1 EGST} - {2455750800 -3600 0 EGT} - {2469056400 0 1 EGST} - {2487200400 -3600 0 EGT} - {2500506000 0 1 EGST} - {2519254800 -3600 0 EGT} - {2531955600 0 1 EGST} - {2550704400 -3600 0 EGT} - {2563405200 0 1 EGST} - {2582154000 -3600 0 EGT} - {2595459600 0 1 EGST} - {2613603600 -3600 0 EGT} - {2626909200 0 1 EGST} - {2645053200 -3600 0 EGT} - {2658358800 0 1 EGST} - {2676502800 -3600 0 EGT} - {2689808400 0 1 EGST} - {2708557200 -3600 0 EGT} - {2721258000 0 1 EGST} - {2740006800 -3600 0 EGT} - {2752707600 0 1 EGST} - {2771456400 -3600 0 EGT} - {2784762000 0 1 EGST} - {2802906000 -3600 0 EGT} - {2816211600 0 1 EGST} - {2834355600 -3600 0 EGT} - {2847661200 0 1 EGST} - {2866410000 -3600 0 EGT} - {2879110800 0 1 EGST} - {2897859600 -3600 0 EGT} - {2910560400 0 1 EGST} - {2929309200 -3600 0 EGT} - {2942010000 0 1 EGST} - {2960758800 -3600 0 EGT} - {2974064400 0 1 EGST} - {2992208400 -3600 0 EGT} - {3005514000 0 1 EGST} - {3023658000 -3600 0 EGT} - {3036963600 0 1 EGST} - {3055712400 -3600 0 EGT} - {3068413200 0 1 EGST} - {3087162000 -3600 0 EGT} - {3099862800 0 1 EGST} - {3118611600 -3600 0 EGT} - {3131917200 0 1 EGST} - {3150061200 -3600 0 EGT} - {3163366800 0 1 EGST} - {3181510800 -3600 0 EGT} - {3194816400 0 1 EGST} - {3212960400 -3600 0 EGT} - {3226266000 0 1 EGST} - {3245014800 -3600 0 EGT} - {3257715600 0 1 EGST} - {3276464400 -3600 0 EGT} - {3289165200 0 1 EGST} - {3307914000 -3600 0 EGT} - {3321219600 0 1 EGST} - {3339363600 -3600 0 EGT} - {3352669200 0 1 EGST} - {3370813200 -3600 0 EGT} - {3384118800 0 1 EGST} - {3402867600 -3600 0 EGT} - {3415568400 0 1 EGST} - {3434317200 -3600 0 EGT} - {3447018000 0 1 EGST} - {3465766800 -3600 0 EGT} - {3479072400 0 1 EGST} - {3497216400 -3600 0 EGT} - {3510522000 0 1 EGST} - {3528666000 -3600 0 EGT} - {3541971600 0 1 EGST} - {3560115600 -3600 0 EGT} - {3573421200 0 1 EGST} - {3592170000 -3600 0 EGT} - {3604870800 0 1 EGST} - {3623619600 -3600 0 EGT} - {3636320400 0 1 EGST} - {3655069200 -3600 0 EGT} - {3668374800 0 1 EGST} - {3686518800 -3600 0 EGT} - {3699824400 0 1 EGST} - {3717968400 -3600 0 EGT} - {3731274000 0 1 EGST} - {3750022800 -3600 0 EGT} - {3762723600 0 1 EGST} - {3781472400 -3600 0 EGT} - {3794173200 0 1 EGST} - {3812922000 -3600 0 EGT} - {3825622800 0 1 EGST} - {3844371600 -3600 0 EGT} - {3857677200 0 1 EGST} - {3875821200 -3600 0 EGT} - {3889126800 0 1 EGST} - {3907270800 -3600 0 EGT} - {3920576400 0 1 EGST} - {3939325200 -3600 0 EGT} - {3952026000 0 1 EGST} - {3970774800 -3600 0 EGT} - {3983475600 0 1 EGST} - {4002224400 -3600 0 EGT} - {4015530000 0 1 EGST} - {4033674000 -3600 0 EGT} - {4046979600 0 1 EGST} - {4065123600 -3600 0 EGT} - {4078429200 0 1 EGST} - {4096573200 -3600 0 EGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Scoresbysund) { + {-9223372036854775808 -5272 0 LMT} + {-1686090728 -7200 0 CGT} + {323841600 -3600 0 CGST} + {338961600 -7200 0 CGT} + {354679200 0 0 EGST} + {370400400 -3600 0 EGT} + {386125200 0 1 EGST} + {401850000 -3600 0 EGT} + {417574800 0 1 EGST} + {433299600 -3600 0 EGT} + {449024400 0 1 EGST} + {465354000 -3600 0 EGT} + {481078800 0 1 EGST} + {496803600 -3600 0 EGT} + {512528400 0 1 EGST} + {528253200 -3600 0 EGT} + {543978000 0 1 EGST} + {559702800 -3600 0 EGT} + {575427600 0 1 EGST} + {591152400 -3600 0 EGT} + {606877200 0 1 EGST} + {622602000 -3600 0 EGT} + {638326800 0 1 EGST} + {654656400 -3600 0 EGT} + {670381200 0 1 EGST} + {686106000 -3600 0 EGT} + {701830800 0 1 EGST} + {717555600 -3600 0 EGT} + {733280400 0 1 EGST} + {749005200 -3600 0 EGT} + {764730000 0 1 EGST} + {780454800 -3600 0 EGT} + {796179600 0 1 EGST} + {811904400 -3600 0 EGT} + {828234000 0 1 EGST} + {846378000 -3600 0 EGT} + {859683600 0 1 EGST} + {877827600 -3600 0 EGT} + {891133200 0 1 EGST} + {909277200 -3600 0 EGT} + {922582800 0 1 EGST} + {941331600 -3600 0 EGT} + {954032400 0 1 EGST} + {972781200 -3600 0 EGT} + {985482000 0 1 EGST} + {1004230800 -3600 0 EGT} + {1017536400 0 1 EGST} + {1035680400 -3600 0 EGT} + {1048986000 0 1 EGST} + {1067130000 -3600 0 EGT} + {1080435600 0 1 EGST} + {1099184400 -3600 0 EGT} + {1111885200 0 1 EGST} + {1130634000 -3600 0 EGT} + {1143334800 0 1 EGST} + {1162083600 -3600 0 EGT} + {1174784400 0 1 EGST} + {1193533200 -3600 0 EGT} + {1206838800 0 1 EGST} + {1224982800 -3600 0 EGT} + {1238288400 0 1 EGST} + {1256432400 -3600 0 EGT} + {1269738000 0 1 EGST} + {1288486800 -3600 0 EGT} + {1301187600 0 1 EGST} + {1319936400 -3600 0 EGT} + {1332637200 0 1 EGST} + {1351386000 -3600 0 EGT} + {1364691600 0 1 EGST} + {1382835600 -3600 0 EGT} + {1396141200 0 1 EGST} + {1414285200 -3600 0 EGT} + {1427590800 0 1 EGST} + {1445734800 -3600 0 EGT} + {1459040400 0 1 EGST} + {1477789200 -3600 0 EGT} + {1490490000 0 1 EGST} + {1509238800 -3600 0 EGT} + {1521939600 0 1 EGST} + {1540688400 -3600 0 EGT} + {1553994000 0 1 EGST} + {1572138000 -3600 0 EGT} + {1585443600 0 1 EGST} + {1603587600 -3600 0 EGT} + {1616893200 0 1 EGST} + {1635642000 -3600 0 EGT} + {1648342800 0 1 EGST} + {1667091600 -3600 0 EGT} + {1679792400 0 1 EGST} + {1698541200 -3600 0 EGT} + {1711846800 0 1 EGST} + {1729990800 -3600 0 EGT} + {1743296400 0 1 EGST} + {1761440400 -3600 0 EGT} + {1774746000 0 1 EGST} + {1792890000 -3600 0 EGT} + {1806195600 0 1 EGST} + {1824944400 -3600 0 EGT} + {1837645200 0 1 EGST} + {1856394000 -3600 0 EGT} + {1869094800 0 1 EGST} + {1887843600 -3600 0 EGT} + {1901149200 0 1 EGST} + {1919293200 -3600 0 EGT} + {1932598800 0 1 EGST} + {1950742800 -3600 0 EGT} + {1964048400 0 1 EGST} + {1982797200 -3600 0 EGT} + {1995498000 0 1 EGST} + {2014246800 -3600 0 EGT} + {2026947600 0 1 EGST} + {2045696400 -3600 0 EGT} + {2058397200 0 1 EGST} + {2077146000 -3600 0 EGT} + {2090451600 0 1 EGST} + {2108595600 -3600 0 EGT} + {2121901200 0 1 EGST} + {2140045200 -3600 0 EGT} + {2153350800 0 1 EGST} + {2172099600 -3600 0 EGT} + {2184800400 0 1 EGST} + {2203549200 -3600 0 EGT} + {2216250000 0 1 EGST} + {2234998800 -3600 0 EGT} + {2248304400 0 1 EGST} + {2266448400 -3600 0 EGT} + {2279754000 0 1 EGST} + {2297898000 -3600 0 EGT} + {2311203600 0 1 EGST} + {2329347600 -3600 0 EGT} + {2342653200 0 1 EGST} + {2361402000 -3600 0 EGT} + {2374102800 0 1 EGST} + {2392851600 -3600 0 EGT} + {2405552400 0 1 EGST} + {2424301200 -3600 0 EGT} + {2437606800 0 1 EGST} + {2455750800 -3600 0 EGT} + {2469056400 0 1 EGST} + {2487200400 -3600 0 EGT} + {2500506000 0 1 EGST} + {2519254800 -3600 0 EGT} + {2531955600 0 1 EGST} + {2550704400 -3600 0 EGT} + {2563405200 0 1 EGST} + {2582154000 -3600 0 EGT} + {2595459600 0 1 EGST} + {2613603600 -3600 0 EGT} + {2626909200 0 1 EGST} + {2645053200 -3600 0 EGT} + {2658358800 0 1 EGST} + {2676502800 -3600 0 EGT} + {2689808400 0 1 EGST} + {2708557200 -3600 0 EGT} + {2721258000 0 1 EGST} + {2740006800 -3600 0 EGT} + {2752707600 0 1 EGST} + {2771456400 -3600 0 EGT} + {2784762000 0 1 EGST} + {2802906000 -3600 0 EGT} + {2816211600 0 1 EGST} + {2834355600 -3600 0 EGT} + {2847661200 0 1 EGST} + {2866410000 -3600 0 EGT} + {2879110800 0 1 EGST} + {2897859600 -3600 0 EGT} + {2910560400 0 1 EGST} + {2929309200 -3600 0 EGT} + {2942010000 0 1 EGST} + {2960758800 -3600 0 EGT} + {2974064400 0 1 EGST} + {2992208400 -3600 0 EGT} + {3005514000 0 1 EGST} + {3023658000 -3600 0 EGT} + {3036963600 0 1 EGST} + {3055712400 -3600 0 EGT} + {3068413200 0 1 EGST} + {3087162000 -3600 0 EGT} + {3099862800 0 1 EGST} + {3118611600 -3600 0 EGT} + {3131917200 0 1 EGST} + {3150061200 -3600 0 EGT} + {3163366800 0 1 EGST} + {3181510800 -3600 0 EGT} + {3194816400 0 1 EGST} + {3212960400 -3600 0 EGT} + {3226266000 0 1 EGST} + {3245014800 -3600 0 EGT} + {3257715600 0 1 EGST} + {3276464400 -3600 0 EGT} + {3289165200 0 1 EGST} + {3307914000 -3600 0 EGT} + {3321219600 0 1 EGST} + {3339363600 -3600 0 EGT} + {3352669200 0 1 EGST} + {3370813200 -3600 0 EGT} + {3384118800 0 1 EGST} + {3402867600 -3600 0 EGT} + {3415568400 0 1 EGST} + {3434317200 -3600 0 EGT} + {3447018000 0 1 EGST} + {3465766800 -3600 0 EGT} + {3479072400 0 1 EGST} + {3497216400 -3600 0 EGT} + {3510522000 0 1 EGST} + {3528666000 -3600 0 EGT} + {3541971600 0 1 EGST} + {3560115600 -3600 0 EGT} + {3573421200 0 1 EGST} + {3592170000 -3600 0 EGT} + {3604870800 0 1 EGST} + {3623619600 -3600 0 EGT} + {3636320400 0 1 EGST} + {3655069200 -3600 0 EGT} + {3668374800 0 1 EGST} + {3686518800 -3600 0 EGT} + {3699824400 0 1 EGST} + {3717968400 -3600 0 EGT} + {3731274000 0 1 EGST} + {3750022800 -3600 0 EGT} + {3762723600 0 1 EGST} + {3781472400 -3600 0 EGT} + {3794173200 0 1 EGST} + {3812922000 -3600 0 EGT} + {3825622800 0 1 EGST} + {3844371600 -3600 0 EGT} + {3857677200 0 1 EGST} + {3875821200 -3600 0 EGT} + {3889126800 0 1 EGST} + {3907270800 -3600 0 EGT} + {3920576400 0 1 EGST} + {3939325200 -3600 0 EGT} + {3952026000 0 1 EGST} + {3970774800 -3600 0 EGT} + {3983475600 0 1 EGST} + {4002224400 -3600 0 EGT} + {4015530000 0 1 EGST} + {4033674000 -3600 0 EGT} + {4046979600 0 1 EGST} + {4065123600 -3600 0 EGT} + {4078429200 0 1 EGST} + {4096573200 -3600 0 EGT} +} diff --git a/library/tzdata/America/Shiprock b/library/tzdata/America/Shiprock index 995d25d..9ff1747 100644 --- a/library/tzdata/America/Shiprock +++ b/library/tzdata/America/Shiprock @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Denver)]} { - LoadTimeZoneFile America/Denver -} -set TZData(:America/Shiprock) $TZData(:America/Denver) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Denver)]} { + LoadTimeZoneFile America/Denver +} +set TZData(:America/Shiprock) $TZData(:America/Denver) diff --git a/library/tzdata/America/St_Barthelemy b/library/tzdata/America/St_Barthelemy index 25c114a..c1f0176 100644 --- a/library/tzdata/America/St_Barthelemy +++ b/library/tzdata/America/St_Barthelemy @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Guadeloupe)]} { - LoadTimeZoneFile America/Guadeloupe -} -set TZData(:America/St_Barthelemy) $TZData(:America/Guadeloupe) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Guadeloupe)]} { + LoadTimeZoneFile America/Guadeloupe +} +set TZData(:America/St_Barthelemy) $TZData(:America/Guadeloupe) diff --git a/library/tzdata/America/St_Johns b/library/tzdata/America/St_Johns index 59f92bb..01fc5aa 100644 --- a/library/tzdata/America/St_Johns +++ b/library/tzdata/America/St_Johns @@ -1,371 +1,371 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Johns) { - {-9223372036854775808 -12652 0 LMT} - {-2713897748 -12652 0 NST} - {-1664130548 -9052 1 NDT} - {-1650137348 -12652 0 NST} - {-1640982548 -12652 0 NST} - {-1632076148 -9052 1 NDT} - {-1614799748 -12652 0 NST} - {-1609446548 -12652 0 NST} - {-1598650148 -9052 1 NDT} - {-1590100148 -12652 0 NST} - {-1567286948 -9052 1 NDT} - {-1551565748 -12652 0 NST} - {-1535837348 -9052 1 NDT} - {-1520116148 -12652 0 NST} - {-1503782948 -9052 1 NDT} - {-1488666548 -12652 0 NST} - {-1472333348 -9052 1 NDT} - {-1457216948 -12652 0 NST} - {-1440883748 -9052 1 NDT} - {-1425767348 -12652 0 NST} - {-1409434148 -9052 1 NDT} - {-1394317748 -12652 0 NST} - {-1377984548 -9052 1 NDT} - {-1362263348 -12652 0 NST} - {-1346534948 -9052 1 NDT} - {-1330813748 -12652 0 NST} - {-1314480548 -9052 1 NDT} - {-1299364148 -12652 0 NST} - {-1283030948 -9052 1 NDT} - {-1267914548 -12652 0 NST} - {-1251581348 -9052 1 NDT} - {-1236464948 -12652 0 NST} - {-1220131748 -9052 1 NDT} - {-1205015348 -12652 0 NST} - {-1188682148 -9052 1 NDT} - {-1172960948 -12652 0 NST} - {-1156627748 -9052 1 NDT} - {-1141511348 -12652 0 NST} - {-1125178148 -9052 1 NDT} - {-1110061748 -12652 0 NST} - {-1096921748 -12600 0 NST} - {-1093728600 -9000 1 NDT} - {-1078612200 -12600 0 NST} - {-1061670600 -9000 1 NDT} - {-1048973400 -12600 0 NST} - {-1030221000 -9000 1 NDT} - {-1017523800 -12600 0 NST} - {-998771400 -9000 1 NDT} - {-986074200 -12600 0 NST} - {-966717000 -9000 1 NDT} - {-954624600 -12600 0 NST} - {-935267400 -9000 1 NDT} - {-922570200 -12600 0 NST} - {-903817800 -9000 1 NDT} - {-891120600 -12600 0 NST} - {-872368200 -9000 0 NWT} - {-769395600 -9000 1 NPT} - {-765401400 -12600 0 NST} - {-757369800 -12600 0 NST} - {-746044200 -9000 1 NDT} - {-733347000 -12600 0 NST} - {-714594600 -9000 1 NDT} - {-701897400 -12600 0 NST} - {-683145000 -9000 1 NDT} - {-670447800 -12600 0 NST} - {-651695400 -9000 1 NDT} - {-638998200 -12600 0 NST} - {-619641000 -9000 1 NDT} - {-606943800 -12600 0 NST} - {-589401000 -9000 1 NDT} - {-576099000 -12600 0 NST} - {-557951400 -9000 1 NDT} - {-544649400 -12600 0 NST} - {-526501800 -9000 1 NDT} - {-513199800 -12600 0 NST} - {-495052200 -9000 1 NDT} - {-481750200 -12600 0 NST} - {-463602600 -9000 1 NDT} - {-450300600 -12600 0 NST} - {-431548200 -9000 1 NDT} - {-418246200 -12600 0 NST} - {-400098600 -9000 1 NDT} - {-386796600 -12600 0 NST} - {-368649000 -9000 1 NDT} - {-355347000 -12600 0 NST} - {-337199400 -9000 1 NDT} - {-323897400 -12600 0 NST} - {-305749800 -9000 1 NDT} - {-289423800 -12600 0 NST} - {-273695400 -9000 1 NDT} - {-257974200 -12600 0 NST} - {-242245800 -9000 1 NDT} - {-226524600 -12600 0 NST} - {-210796200 -9000 1 NDT} - {-195075000 -12600 0 NST} - {-179346600 -9000 1 NDT} - {-163625400 -12600 0 NST} - {-147897000 -9000 1 NDT} - {-131571000 -12600 0 NST} - {-116447400 -9000 1 NDT} - {-100121400 -12600 0 NST} - {-84393000 -9000 1 NDT} - {-68671800 -12600 0 NST} - {-52943400 -9000 1 NDT} - {-37222200 -12600 0 NST} - {-21493800 -9000 1 NDT} - {-5772600 -12600 0 NST} - {9955800 -9000 1 NDT} - {25677000 -12600 0 NST} - {41405400 -9000 1 NDT} - {57731400 -12600 0 NST} - {73459800 -9000 1 NDT} - {89181000 -12600 0 NST} - {104909400 -9000 1 NDT} - {120630600 -12600 0 NST} - {136359000 -9000 1 NDT} - {152080200 -12600 0 NST} - {167808600 -9000 1 NDT} - {183529800 -12600 0 NST} - {199258200 -9000 1 NDT} - {215584200 -12600 0 NST} - {230707800 -9000 1 NDT} - {247033800 -12600 0 NST} - {262762200 -9000 1 NDT} - {278483400 -12600 0 NST} - {294211800 -9000 1 NDT} - {309933000 -12600 0 NST} - {325661400 -9000 1 NDT} - {341382600 -12600 0 NST} - {357111000 -9000 1 NDT} - {372832200 -12600 0 NST} - {388560600 -9000 1 NDT} - {404886600 -12600 0 NST} - {420010200 -9000 1 NDT} - {436336200 -12600 0 NST} - {452064600 -9000 1 NDT} - {467785800 -12600 0 NST} - {483514200 -9000 1 NDT} - {499235400 -12600 0 NST} - {514963800 -9000 1 NDT} - {530685000 -12600 0 NST} - {544591860 -9000 1 NDT} - {562127460 -12600 0 NST} - {576041460 -5400 1 NDDT} - {594178260 -12600 0 NST} - {607491060 -9000 1 NDT} - {625631460 -12600 0 NST} - {638940660 -9000 1 NDT} - {657081060 -12600 0 NST} - {670995060 -9000 1 NDT} - {688530660 -12600 0 NST} - {702444660 -9000 1 NDT} - {719980260 -12600 0 NST} - {733894260 -9000 1 NDT} - {752034660 -12600 0 NST} - {765343860 -9000 1 NDT} - {783484260 -12600 0 NST} - {796793460 -9000 1 NDT} - {814933860 -12600 0 NST} - {828847860 -9000 1 NDT} - {846383460 -12600 0 NST} - {860297460 -9000 1 NDT} - {877833060 -12600 0 NST} - {891747060 -9000 1 NDT} - {909282660 -12600 0 NST} - {923196660 -9000 1 NDT} - {941337060 -12600 0 NST} - {954646260 -9000 1 NDT} - {972786660 -12600 0 NST} - {986095860 -9000 1 NDT} - {1004236260 -12600 0 NST} - {1018150260 -9000 1 NDT} - {1035685860 -12600 0 NST} - {1049599860 -9000 1 NDT} - {1067135460 -12600 0 NST} - {1081049460 -9000 1 NDT} - {1099189860 -12600 0 NST} - {1112499060 -9000 1 NDT} - {1130639460 -12600 0 NST} - {1143948660 -9000 1 NDT} - {1162089060 -12600 0 NST} - {1173583860 -9000 1 NDT} - {1194143460 -12600 0 NST} - {1205033460 -9000 1 NDT} - {1225593060 -12600 0 NST} - {1236483060 -9000 1 NDT} - {1257042660 -12600 0 NST} - {1268537460 -9000 1 NDT} - {1289097060 -12600 0 NST} - {1299987060 -9000 1 NDT} - {1320546660 -12600 0 NST} - {1331436660 -9000 1 NDT} - {1351996260 -12600 0 NST} - {1362886260 -9000 1 NDT} - {1383445860 -12600 0 NST} - {1394335860 -9000 1 NDT} - {1414895460 -12600 0 NST} - {1425785460 -9000 1 NDT} - {1446345060 -12600 0 NST} - {1457839860 -9000 1 NDT} - {1478399460 -12600 0 NST} - {1489289460 -9000 1 NDT} - {1509849060 -12600 0 NST} - {1520739060 -9000 1 NDT} - {1541298660 -12600 0 NST} - {1552188660 -9000 1 NDT} - {1572748260 -12600 0 NST} - {1583638260 -9000 1 NDT} - {1604197860 -12600 0 NST} - {1615692660 -9000 1 NDT} - {1636252260 -12600 0 NST} - {1647142260 -9000 1 NDT} - {1667701860 -12600 0 NST} - {1678591860 -9000 1 NDT} - {1699151460 -12600 0 NST} - {1710041460 -9000 1 NDT} - {1730601060 -12600 0 NST} - {1741491060 -9000 1 NDT} - {1762050660 -12600 0 NST} - {1772940660 -9000 1 NDT} - {1793500260 -12600 0 NST} - {1804995060 -9000 1 NDT} - {1825554660 -12600 0 NST} - {1836444660 -9000 1 NDT} - {1857004260 -12600 0 NST} - {1867894260 -9000 1 NDT} - {1888453860 -12600 0 NST} - {1899343860 -9000 1 NDT} - {1919903460 -12600 0 NST} - {1930793460 -9000 1 NDT} - {1951353060 -12600 0 NST} - {1962847860 -9000 1 NDT} - {1983407460 -12600 0 NST} - {1994297460 -9000 1 NDT} - {2014857060 -12600 0 NST} - {2025747060 -9000 1 NDT} - {2046306660 -12600 0 NST} - {2057196660 -9000 1 NDT} - {2077756260 -12600 0 NST} - {2088646260 -9000 1 NDT} - {2109205860 -12600 0 NST} - {2120095860 -9000 1 NDT} - {2140655460 -12600 0 NST} - {2152150260 -9000 1 NDT} - {2172709860 -12600 0 NST} - {2183599860 -9000 1 NDT} - {2204159460 -12600 0 NST} - {2215049460 -9000 1 NDT} - {2235609060 -12600 0 NST} - {2246499060 -9000 1 NDT} - {2267058660 -12600 0 NST} - {2277948660 -9000 1 NDT} - {2298508260 -12600 0 NST} - {2309398260 -9000 1 NDT} - {2329957860 -12600 0 NST} - {2341452660 -9000 1 NDT} - {2362012260 -12600 0 NST} - {2372902260 -9000 1 NDT} - {2393461860 -12600 0 NST} - {2404351860 -9000 1 NDT} - {2424911460 -12600 0 NST} - {2435801460 -9000 1 NDT} - {2456361060 -12600 0 NST} - {2467251060 -9000 1 NDT} - {2487810660 -12600 0 NST} - {2499305460 -9000 1 NDT} - {2519865060 -12600 0 NST} - {2530755060 -9000 1 NDT} - {2551314660 -12600 0 NST} - {2562204660 -9000 1 NDT} - {2582764260 -12600 0 NST} - {2593654260 -9000 1 NDT} - {2614213860 -12600 0 NST} - {2625103860 -9000 1 NDT} - {2645663460 -12600 0 NST} - {2656553460 -9000 1 NDT} - {2677113060 -12600 0 NST} - {2688607860 -9000 1 NDT} - {2709167460 -12600 0 NST} - {2720057460 -9000 1 NDT} - {2740617060 -12600 0 NST} - {2751507060 -9000 1 NDT} - {2772066660 -12600 0 NST} - {2782956660 -9000 1 NDT} - {2803516260 -12600 0 NST} - {2814406260 -9000 1 NDT} - {2834965860 -12600 0 NST} - {2846460660 -9000 1 NDT} - {2867020260 -12600 0 NST} - {2877910260 -9000 1 NDT} - {2898469860 -12600 0 NST} - {2909359860 -9000 1 NDT} - {2929919460 -12600 0 NST} - {2940809460 -9000 1 NDT} - {2961369060 -12600 0 NST} - {2972259060 -9000 1 NDT} - {2992818660 -12600 0 NST} - {3003708660 -9000 1 NDT} - {3024268260 -12600 0 NST} - {3035763060 -9000 1 NDT} - {3056322660 -12600 0 NST} - {3067212660 -9000 1 NDT} - {3087772260 -12600 0 NST} - {3098662260 -9000 1 NDT} - {3119221860 -12600 0 NST} - {3130111860 -9000 1 NDT} - {3150671460 -12600 0 NST} - {3161561460 -9000 1 NDT} - {3182121060 -12600 0 NST} - {3193011060 -9000 1 NDT} - {3213570660 -12600 0 NST} - {3225065460 -9000 1 NDT} - {3245625060 -12600 0 NST} - {3256515060 -9000 1 NDT} - {3277074660 -12600 0 NST} - {3287964660 -9000 1 NDT} - {3308524260 -12600 0 NST} - {3319414260 -9000 1 NDT} - {3339973860 -12600 0 NST} - {3350863860 -9000 1 NDT} - {3371423460 -12600 0 NST} - {3382918260 -9000 1 NDT} - {3403477860 -12600 0 NST} - {3414367860 -9000 1 NDT} - {3434927460 -12600 0 NST} - {3445817460 -9000 1 NDT} - {3466377060 -12600 0 NST} - {3477267060 -9000 1 NDT} - {3497826660 -12600 0 NST} - {3508716660 -9000 1 NDT} - {3529276260 -12600 0 NST} - {3540166260 -9000 1 NDT} - {3560725860 -12600 0 NST} - {3572220660 -9000 1 NDT} - {3592780260 -12600 0 NST} - {3603670260 -9000 1 NDT} - {3624229860 -12600 0 NST} - {3635119860 -9000 1 NDT} - {3655679460 -12600 0 NST} - {3666569460 -9000 1 NDT} - {3687129060 -12600 0 NST} - {3698019060 -9000 1 NDT} - {3718578660 -12600 0 NST} - {3730073460 -9000 1 NDT} - {3750633060 -12600 0 NST} - {3761523060 -9000 1 NDT} - {3782082660 -12600 0 NST} - {3792972660 -9000 1 NDT} - {3813532260 -12600 0 NST} - {3824422260 -9000 1 NDT} - {3844981860 -12600 0 NST} - {3855871860 -9000 1 NDT} - {3876431460 -12600 0 NST} - {3887321460 -9000 1 NDT} - {3907881060 -12600 0 NST} - {3919375860 -9000 1 NDT} - {3939935460 -12600 0 NST} - {3950825460 -9000 1 NDT} - {3971385060 -12600 0 NST} - {3982275060 -9000 1 NDT} - {4002834660 -12600 0 NST} - {4013724660 -9000 1 NDT} - {4034284260 -12600 0 NST} - {4045174260 -9000 1 NDT} - {4065733860 -12600 0 NST} - {4076623860 -9000 1 NDT} - {4097183460 -12600 0 NST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Johns) { + {-9223372036854775808 -12652 0 LMT} + {-2713897748 -12652 0 NST} + {-1664130548 -9052 1 NDT} + {-1650137348 -12652 0 NST} + {-1640982548 -12652 0 NST} + {-1632076148 -9052 1 NDT} + {-1614799748 -12652 0 NST} + {-1609446548 -12652 0 NST} + {-1598650148 -9052 1 NDT} + {-1590100148 -12652 0 NST} + {-1567286948 -9052 1 NDT} + {-1551565748 -12652 0 NST} + {-1535837348 -9052 1 NDT} + {-1520116148 -12652 0 NST} + {-1503782948 -9052 1 NDT} + {-1488666548 -12652 0 NST} + {-1472333348 -9052 1 NDT} + {-1457216948 -12652 0 NST} + {-1440883748 -9052 1 NDT} + {-1425767348 -12652 0 NST} + {-1409434148 -9052 1 NDT} + {-1394317748 -12652 0 NST} + {-1377984548 -9052 1 NDT} + {-1362263348 -12652 0 NST} + {-1346534948 -9052 1 NDT} + {-1330813748 -12652 0 NST} + {-1314480548 -9052 1 NDT} + {-1299364148 -12652 0 NST} + {-1283030948 -9052 1 NDT} + {-1267914548 -12652 0 NST} + {-1251581348 -9052 1 NDT} + {-1236464948 -12652 0 NST} + {-1220131748 -9052 1 NDT} + {-1205015348 -12652 0 NST} + {-1188682148 -9052 1 NDT} + {-1172960948 -12652 0 NST} + {-1156627748 -9052 1 NDT} + {-1141511348 -12652 0 NST} + {-1125178148 -9052 1 NDT} + {-1110061748 -12652 0 NST} + {-1096921748 -12600 0 NST} + {-1093728600 -9000 1 NDT} + {-1078612200 -12600 0 NST} + {-1061670600 -9000 1 NDT} + {-1048973400 -12600 0 NST} + {-1030221000 -9000 1 NDT} + {-1017523800 -12600 0 NST} + {-998771400 -9000 1 NDT} + {-986074200 -12600 0 NST} + {-966717000 -9000 1 NDT} + {-954624600 -12600 0 NST} + {-935267400 -9000 1 NDT} + {-922570200 -12600 0 NST} + {-903817800 -9000 1 NDT} + {-891120600 -12600 0 NST} + {-872368200 -9000 0 NWT} + {-769395600 -9000 1 NPT} + {-765401400 -12600 0 NST} + {-757369800 -12600 0 NST} + {-746044200 -9000 1 NDT} + {-733347000 -12600 0 NST} + {-714594600 -9000 1 NDT} + {-701897400 -12600 0 NST} + {-683145000 -9000 1 NDT} + {-670447800 -12600 0 NST} + {-651695400 -9000 1 NDT} + {-638998200 -12600 0 NST} + {-619641000 -9000 1 NDT} + {-606943800 -12600 0 NST} + {-589401000 -9000 1 NDT} + {-576099000 -12600 0 NST} + {-557951400 -9000 1 NDT} + {-544649400 -12600 0 NST} + {-526501800 -9000 1 NDT} + {-513199800 -12600 0 NST} + {-495052200 -9000 1 NDT} + {-481750200 -12600 0 NST} + {-463602600 -9000 1 NDT} + {-450300600 -12600 0 NST} + {-431548200 -9000 1 NDT} + {-418246200 -12600 0 NST} + {-400098600 -9000 1 NDT} + {-386796600 -12600 0 NST} + {-368649000 -9000 1 NDT} + {-355347000 -12600 0 NST} + {-337199400 -9000 1 NDT} + {-323897400 -12600 0 NST} + {-305749800 -9000 1 NDT} + {-289423800 -12600 0 NST} + {-273695400 -9000 1 NDT} + {-257974200 -12600 0 NST} + {-242245800 -9000 1 NDT} + {-226524600 -12600 0 NST} + {-210796200 -9000 1 NDT} + {-195075000 -12600 0 NST} + {-179346600 -9000 1 NDT} + {-163625400 -12600 0 NST} + {-147897000 -9000 1 NDT} + {-131571000 -12600 0 NST} + {-116447400 -9000 1 NDT} + {-100121400 -12600 0 NST} + {-84393000 -9000 1 NDT} + {-68671800 -12600 0 NST} + {-52943400 -9000 1 NDT} + {-37222200 -12600 0 NST} + {-21493800 -9000 1 NDT} + {-5772600 -12600 0 NST} + {9955800 -9000 1 NDT} + {25677000 -12600 0 NST} + {41405400 -9000 1 NDT} + {57731400 -12600 0 NST} + {73459800 -9000 1 NDT} + {89181000 -12600 0 NST} + {104909400 -9000 1 NDT} + {120630600 -12600 0 NST} + {136359000 -9000 1 NDT} + {152080200 -12600 0 NST} + {167808600 -9000 1 NDT} + {183529800 -12600 0 NST} + {199258200 -9000 1 NDT} + {215584200 -12600 0 NST} + {230707800 -9000 1 NDT} + {247033800 -12600 0 NST} + {262762200 -9000 1 NDT} + {278483400 -12600 0 NST} + {294211800 -9000 1 NDT} + {309933000 -12600 0 NST} + {325661400 -9000 1 NDT} + {341382600 -12600 0 NST} + {357111000 -9000 1 NDT} + {372832200 -12600 0 NST} + {388560600 -9000 1 NDT} + {404886600 -12600 0 NST} + {420010200 -9000 1 NDT} + {436336200 -12600 0 NST} + {452064600 -9000 1 NDT} + {467785800 -12600 0 NST} + {483514200 -9000 1 NDT} + {499235400 -12600 0 NST} + {514963800 -9000 1 NDT} + {530685000 -12600 0 NST} + {544591860 -9000 1 NDT} + {562127460 -12600 0 NST} + {576041460 -5400 1 NDDT} + {594178260 -12600 0 NST} + {607491060 -9000 1 NDT} + {625631460 -12600 0 NST} + {638940660 -9000 1 NDT} + {657081060 -12600 0 NST} + {670995060 -9000 1 NDT} + {688530660 -12600 0 NST} + {702444660 -9000 1 NDT} + {719980260 -12600 0 NST} + {733894260 -9000 1 NDT} + {752034660 -12600 0 NST} + {765343860 -9000 1 NDT} + {783484260 -12600 0 NST} + {796793460 -9000 1 NDT} + {814933860 -12600 0 NST} + {828847860 -9000 1 NDT} + {846383460 -12600 0 NST} + {860297460 -9000 1 NDT} + {877833060 -12600 0 NST} + {891747060 -9000 1 NDT} + {909282660 -12600 0 NST} + {923196660 -9000 1 NDT} + {941337060 -12600 0 NST} + {954646260 -9000 1 NDT} + {972786660 -12600 0 NST} + {986095860 -9000 1 NDT} + {1004236260 -12600 0 NST} + {1018150260 -9000 1 NDT} + {1035685860 -12600 0 NST} + {1049599860 -9000 1 NDT} + {1067135460 -12600 0 NST} + {1081049460 -9000 1 NDT} + {1099189860 -12600 0 NST} + {1112499060 -9000 1 NDT} + {1130639460 -12600 0 NST} + {1143948660 -9000 1 NDT} + {1162089060 -12600 0 NST} + {1173583860 -9000 1 NDT} + {1194143460 -12600 0 NST} + {1205033460 -9000 1 NDT} + {1225593060 -12600 0 NST} + {1236483060 -9000 1 NDT} + {1257042660 -12600 0 NST} + {1268537460 -9000 1 NDT} + {1289097060 -12600 0 NST} + {1299987060 -9000 1 NDT} + {1320546660 -12600 0 NST} + {1331436660 -9000 1 NDT} + {1351996260 -12600 0 NST} + {1362886260 -9000 1 NDT} + {1383445860 -12600 0 NST} + {1394335860 -9000 1 NDT} + {1414895460 -12600 0 NST} + {1425785460 -9000 1 NDT} + {1446345060 -12600 0 NST} + {1457839860 -9000 1 NDT} + {1478399460 -12600 0 NST} + {1489289460 -9000 1 NDT} + {1509849060 -12600 0 NST} + {1520739060 -9000 1 NDT} + {1541298660 -12600 0 NST} + {1552188660 -9000 1 NDT} + {1572748260 -12600 0 NST} + {1583638260 -9000 1 NDT} + {1604197860 -12600 0 NST} + {1615692660 -9000 1 NDT} + {1636252260 -12600 0 NST} + {1647142260 -9000 1 NDT} + {1667701860 -12600 0 NST} + {1678591860 -9000 1 NDT} + {1699151460 -12600 0 NST} + {1710041460 -9000 1 NDT} + {1730601060 -12600 0 NST} + {1741491060 -9000 1 NDT} + {1762050660 -12600 0 NST} + {1772940660 -9000 1 NDT} + {1793500260 -12600 0 NST} + {1804995060 -9000 1 NDT} + {1825554660 -12600 0 NST} + {1836444660 -9000 1 NDT} + {1857004260 -12600 0 NST} + {1867894260 -9000 1 NDT} + {1888453860 -12600 0 NST} + {1899343860 -9000 1 NDT} + {1919903460 -12600 0 NST} + {1930793460 -9000 1 NDT} + {1951353060 -12600 0 NST} + {1962847860 -9000 1 NDT} + {1983407460 -12600 0 NST} + {1994297460 -9000 1 NDT} + {2014857060 -12600 0 NST} + {2025747060 -9000 1 NDT} + {2046306660 -12600 0 NST} + {2057196660 -9000 1 NDT} + {2077756260 -12600 0 NST} + {2088646260 -9000 1 NDT} + {2109205860 -12600 0 NST} + {2120095860 -9000 1 NDT} + {2140655460 -12600 0 NST} + {2152150260 -9000 1 NDT} + {2172709860 -12600 0 NST} + {2183599860 -9000 1 NDT} + {2204159460 -12600 0 NST} + {2215049460 -9000 1 NDT} + {2235609060 -12600 0 NST} + {2246499060 -9000 1 NDT} + {2267058660 -12600 0 NST} + {2277948660 -9000 1 NDT} + {2298508260 -12600 0 NST} + {2309398260 -9000 1 NDT} + {2329957860 -12600 0 NST} + {2341452660 -9000 1 NDT} + {2362012260 -12600 0 NST} + {2372902260 -9000 1 NDT} + {2393461860 -12600 0 NST} + {2404351860 -9000 1 NDT} + {2424911460 -12600 0 NST} + {2435801460 -9000 1 NDT} + {2456361060 -12600 0 NST} + {2467251060 -9000 1 NDT} + {2487810660 -12600 0 NST} + {2499305460 -9000 1 NDT} + {2519865060 -12600 0 NST} + {2530755060 -9000 1 NDT} + {2551314660 -12600 0 NST} + {2562204660 -9000 1 NDT} + {2582764260 -12600 0 NST} + {2593654260 -9000 1 NDT} + {2614213860 -12600 0 NST} + {2625103860 -9000 1 NDT} + {2645663460 -12600 0 NST} + {2656553460 -9000 1 NDT} + {2677113060 -12600 0 NST} + {2688607860 -9000 1 NDT} + {2709167460 -12600 0 NST} + {2720057460 -9000 1 NDT} + {2740617060 -12600 0 NST} + {2751507060 -9000 1 NDT} + {2772066660 -12600 0 NST} + {2782956660 -9000 1 NDT} + {2803516260 -12600 0 NST} + {2814406260 -9000 1 NDT} + {2834965860 -12600 0 NST} + {2846460660 -9000 1 NDT} + {2867020260 -12600 0 NST} + {2877910260 -9000 1 NDT} + {2898469860 -12600 0 NST} + {2909359860 -9000 1 NDT} + {2929919460 -12600 0 NST} + {2940809460 -9000 1 NDT} + {2961369060 -12600 0 NST} + {2972259060 -9000 1 NDT} + {2992818660 -12600 0 NST} + {3003708660 -9000 1 NDT} + {3024268260 -12600 0 NST} + {3035763060 -9000 1 NDT} + {3056322660 -12600 0 NST} + {3067212660 -9000 1 NDT} + {3087772260 -12600 0 NST} + {3098662260 -9000 1 NDT} + {3119221860 -12600 0 NST} + {3130111860 -9000 1 NDT} + {3150671460 -12600 0 NST} + {3161561460 -9000 1 NDT} + {3182121060 -12600 0 NST} + {3193011060 -9000 1 NDT} + {3213570660 -12600 0 NST} + {3225065460 -9000 1 NDT} + {3245625060 -12600 0 NST} + {3256515060 -9000 1 NDT} + {3277074660 -12600 0 NST} + {3287964660 -9000 1 NDT} + {3308524260 -12600 0 NST} + {3319414260 -9000 1 NDT} + {3339973860 -12600 0 NST} + {3350863860 -9000 1 NDT} + {3371423460 -12600 0 NST} + {3382918260 -9000 1 NDT} + {3403477860 -12600 0 NST} + {3414367860 -9000 1 NDT} + {3434927460 -12600 0 NST} + {3445817460 -9000 1 NDT} + {3466377060 -12600 0 NST} + {3477267060 -9000 1 NDT} + {3497826660 -12600 0 NST} + {3508716660 -9000 1 NDT} + {3529276260 -12600 0 NST} + {3540166260 -9000 1 NDT} + {3560725860 -12600 0 NST} + {3572220660 -9000 1 NDT} + {3592780260 -12600 0 NST} + {3603670260 -9000 1 NDT} + {3624229860 -12600 0 NST} + {3635119860 -9000 1 NDT} + {3655679460 -12600 0 NST} + {3666569460 -9000 1 NDT} + {3687129060 -12600 0 NST} + {3698019060 -9000 1 NDT} + {3718578660 -12600 0 NST} + {3730073460 -9000 1 NDT} + {3750633060 -12600 0 NST} + {3761523060 -9000 1 NDT} + {3782082660 -12600 0 NST} + {3792972660 -9000 1 NDT} + {3813532260 -12600 0 NST} + {3824422260 -9000 1 NDT} + {3844981860 -12600 0 NST} + {3855871860 -9000 1 NDT} + {3876431460 -12600 0 NST} + {3887321460 -9000 1 NDT} + {3907881060 -12600 0 NST} + {3919375860 -9000 1 NDT} + {3939935460 -12600 0 NST} + {3950825460 -9000 1 NDT} + {3971385060 -12600 0 NST} + {3982275060 -9000 1 NDT} + {4002834660 -12600 0 NST} + {4013724660 -9000 1 NDT} + {4034284260 -12600 0 NST} + {4045174260 -9000 1 NDT} + {4065733860 -12600 0 NST} + {4076623860 -9000 1 NDT} + {4097183460 -12600 0 NST} +} diff --git a/library/tzdata/America/St_Kitts b/library/tzdata/America/St_Kitts index bfd803b..8065f6b 100644 --- a/library/tzdata/America/St_Kitts +++ b/library/tzdata/America/St_Kitts @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Kitts) { - {-9223372036854775808 -15052 0 LMT} - {-1825098548 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Kitts) { + {-9223372036854775808 -15052 0 LMT} + {-1825098548 -14400 0 AST} +} diff --git a/library/tzdata/America/St_Lucia b/library/tzdata/America/St_Lucia index c2767dd..bfc3125 100644 --- a/library/tzdata/America/St_Lucia +++ b/library/tzdata/America/St_Lucia @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Lucia) { - {-9223372036854775808 -14640 0 LMT} - {-2524506960 -14640 0 CMT} - {-1830369360 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Lucia) { + {-9223372036854775808 -14640 0 LMT} + {-2524506960 -14640 0 CMT} + {-1830369360 -14400 0 AST} +} diff --git a/library/tzdata/America/St_Thomas b/library/tzdata/America/St_Thomas index bf93595..423f1fa 100644 --- a/library/tzdata/America/St_Thomas +++ b/library/tzdata/America/St_Thomas @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Thomas) { - {-9223372036854775808 -15584 0 LMT} - {-1846266016 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Thomas) { + {-9223372036854775808 -15584 0 LMT} + {-1846266016 -14400 0 AST} +} diff --git a/library/tzdata/America/St_Vincent b/library/tzdata/America/St_Vincent index 3a884c7..8ddb4d8 100644 --- a/library/tzdata/America/St_Vincent +++ b/library/tzdata/America/St_Vincent @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Vincent) { - {-9223372036854775808 -14696 0 LMT} - {-2524506904 -14696 0 KMT} - {-1830369304 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Vincent) { + {-9223372036854775808 -14696 0 LMT} + {-2524506904 -14696 0 KMT} + {-1830369304 -14400 0 AST} +} diff --git a/library/tzdata/America/Swift_Current b/library/tzdata/America/Swift_Current index dc4aa37..2012add 100644 --- a/library/tzdata/America/Swift_Current +++ b/library/tzdata/America/Swift_Current @@ -1,29 +1,29 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Swift_Current) { - {-9223372036854775808 -25880 0 LMT} - {-2030201320 -25200 0 MST} - {-1632063600 -21600 1 MDT} - {-1614787200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-747241200 -21600 0 MDT} - {-732729600 -25200 0 MST} - {-715791600 -21600 1 MDT} - {-702489600 -25200 0 MST} - {-684342000 -21600 1 MDT} - {-671040000 -25200 0 MST} - {-652892400 -21600 1 MDT} - {-639590400 -25200 0 MST} - {-631126800 -25200 0 MST} - {-400086000 -21600 1 MDT} - {-384364800 -25200 0 MST} - {-337186800 -21600 1 MDT} - {-321465600 -25200 0 MST} - {-305737200 -21600 1 MDT} - {-292435200 -25200 0 MST} - {-273682800 -21600 1 MDT} - {-260985600 -25200 0 MST} - {73472400 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Swift_Current) { + {-9223372036854775808 -25880 0 LMT} + {-2030201320 -25200 0 MST} + {-1632063600 -21600 1 MDT} + {-1614787200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-747241200 -21600 0 MDT} + {-732729600 -25200 0 MST} + {-715791600 -21600 1 MDT} + {-702489600 -25200 0 MST} + {-684342000 -21600 1 MDT} + {-671040000 -25200 0 MST} + {-652892400 -21600 1 MDT} + {-639590400 -25200 0 MST} + {-631126800 -25200 0 MST} + {-400086000 -21600 1 MDT} + {-384364800 -25200 0 MST} + {-337186800 -21600 1 MDT} + {-321465600 -25200 0 MST} + {-305737200 -21600 1 MDT} + {-292435200 -25200 0 MST} + {-273682800 -21600 1 MDT} + {-260985600 -25200 0 MST} + {73472400 -21600 0 CST} +} diff --git a/library/tzdata/America/Tegucigalpa b/library/tzdata/America/Tegucigalpa index 050661e..4438247 100644 --- a/library/tzdata/America/Tegucigalpa +++ b/library/tzdata/America/Tegucigalpa @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Tegucigalpa) { - {-9223372036854775808 -20932 0 LMT} - {-1538503868 -21600 0 CST} - {547020000 -18000 1 CDT} - {559717200 -21600 0 CST} - {578469600 -18000 1 CDT} - {591166800 -21600 0 CST} - {1146981600 -18000 1 CDT} - {1154926800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Tegucigalpa) { + {-9223372036854775808 -20932 0 LMT} + {-1538503868 -21600 0 CST} + {547020000 -18000 1 CDT} + {559717200 -21600 0 CST} + {578469600 -18000 1 CDT} + {591166800 -21600 0 CST} + {1146981600 -18000 1 CDT} + {1154926800 -21600 0 CST} +} diff --git a/library/tzdata/America/Thule b/library/tzdata/America/Thule index 0aaf9a1..d4b9b15 100644 --- a/library/tzdata/America/Thule +++ b/library/tzdata/America/Thule @@ -1,224 +1,224 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Thule) { - {-9223372036854775808 -16508 0 LMT} - {-1686079492 -14400 0 AST} - {670399200 -10800 1 ADT} - {686120400 -14400 0 AST} - {701848800 -10800 1 ADT} - {717570000 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -10800 1 ADT} - {814942800 -14400 0 AST} - {828856800 -10800 1 ADT} - {846392400 -14400 0 AST} - {860306400 -10800 1 ADT} - {877842000 -14400 0 AST} - {891756000 -10800 1 ADT} - {909291600 -14400 0 AST} - {923205600 -10800 1 ADT} - {941346000 -14400 0 AST} - {954655200 -10800 1 ADT} - {972795600 -14400 0 AST} - {986104800 -10800 1 ADT} - {1004245200 -14400 0 AST} - {1018159200 -10800 1 ADT} - {1035694800 -14400 0 AST} - {1049608800 -10800 1 ADT} - {1067144400 -14400 0 AST} - {1081058400 -10800 1 ADT} - {1099198800 -14400 0 AST} - {1112508000 -10800 1 ADT} - {1130648400 -14400 0 AST} - {1143957600 -10800 1 ADT} - {1162098000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Thule) { + {-9223372036854775808 -16508 0 LMT} + {-1686079492 -14400 0 AST} + {670399200 -10800 1 ADT} + {686120400 -14400 0 AST} + {701848800 -10800 1 ADT} + {717570000 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -10800 1 ADT} + {814942800 -14400 0 AST} + {828856800 -10800 1 ADT} + {846392400 -14400 0 AST} + {860306400 -10800 1 ADT} + {877842000 -14400 0 AST} + {891756000 -10800 1 ADT} + {909291600 -14400 0 AST} + {923205600 -10800 1 ADT} + {941346000 -14400 0 AST} + {954655200 -10800 1 ADT} + {972795600 -14400 0 AST} + {986104800 -10800 1 ADT} + {1004245200 -14400 0 AST} + {1018159200 -10800 1 ADT} + {1035694800 -14400 0 AST} + {1049608800 -10800 1 ADT} + {1067144400 -14400 0 AST} + {1081058400 -10800 1 ADT} + {1099198800 -14400 0 AST} + {1112508000 -10800 1 ADT} + {1130648400 -14400 0 AST} + {1143957600 -10800 1 ADT} + {1162098000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/America/Thunder_Bay b/library/tzdata/America/Thunder_Bay index 8a454be..812e243 100644 --- a/library/tzdata/America/Thunder_Bay +++ b/library/tzdata/America/Thunder_Bay @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Thunder_Bay) { - {-9223372036854775808 -21420 0 LMT} - {-2366733780 -21600 0 CST} - {-1893434400 -18000 0 EST} - {-883594800 -18000 0 EST} - {-880218000 -14400 1 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {18000 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {94712400 -18000 0 EST} - {126248400 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Thunder_Bay) { + {-9223372036854775808 -21420 0 LMT} + {-2366733780 -21600 0 CST} + {-1893434400 -18000 0 EST} + {-883594800 -18000 0 EST} + {-880218000 -14400 1 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {18000 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {94712400 -18000 0 EST} + {126248400 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Tijuana b/library/tzdata/America/Tijuana index c191c3c..9244c2e 100644 --- a/library/tzdata/America/Tijuana +++ b/library/tzdata/America/Tijuana @@ -1,284 +1,284 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Tijuana) { - {-9223372036854775808 -28084 0 LMT} - {-1514736000 -25200 0 MST} - {-1451667600 -28800 0 PST} - {-1343062800 -25200 0 MST} - {-1234803600 -28800 0 PST} - {-1222963200 -25200 1 PDT} - {-1207242000 -28800 0 PST} - {-873820800 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-761677200 -28800 0 PST} - {-686073600 -25200 1 PDT} - {-661539600 -28800 0 PST} - {-504892800 -28800 0 PST} - {-495036000 -25200 1 PDT} - {-481734000 -28800 0 PST} - {-463586400 -25200 1 PDT} - {-450284400 -28800 0 PST} - {-431532000 -25200 1 PDT} - {-418230000 -28800 0 PST} - {-400082400 -25200 1 PDT} - {-386780400 -28800 0 PST} - {-368632800 -25200 1 PDT} - {-355330800 -28800 0 PST} - {-337183200 -25200 1 PDT} - {-323881200 -28800 0 PST} - {-305733600 -25200 1 PDT} - {-292431600 -28800 0 PST} - {-283968000 -28800 0 PST} - {189331200 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {820483200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {978336000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1014192000 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1175421600 -25200 1 PDT} - {1193562000 -28800 0 PST} - {1207476000 -25200 1 PDT} - {1225011600 -28800 0 PST} - {1238925600 -25200 1 PDT} - {1256461200 -28800 0 PST} - {1270375200 -25200 1 PDT} - {1288515600 -28800 0 PST} - {1301824800 -25200 1 PDT} - {1319965200 -28800 0 PST} - {1333274400 -25200 1 PDT} - {1351414800 -28800 0 PST} - {1365328800 -25200 1 PDT} - {1382864400 -28800 0 PST} - {1396778400 -25200 1 PDT} - {1414314000 -28800 0 PST} - {1428228000 -25200 1 PDT} - {1445763600 -28800 0 PST} - {1459677600 -25200 1 PDT} - {1477818000 -28800 0 PST} - {1491127200 -25200 1 PDT} - {1509267600 -28800 0 PST} - {1522576800 -25200 1 PDT} - {1540717200 -28800 0 PST} - {1554631200 -25200 1 PDT} - {1572166800 -28800 0 PST} - {1586080800 -25200 1 PDT} - {1603616400 -28800 0 PST} - {1617530400 -25200 1 PDT} - {1635670800 -28800 0 PST} - {1648980000 -25200 1 PDT} - {1667120400 -28800 0 PST} - {1680429600 -25200 1 PDT} - {1698570000 -28800 0 PST} - {1712484000 -25200 1 PDT} - {1730019600 -28800 0 PST} - {1743933600 -25200 1 PDT} - {1761469200 -28800 0 PST} - {1775383200 -25200 1 PDT} - {1792918800 -28800 0 PST} - {1806832800 -25200 1 PDT} - {1824973200 -28800 0 PST} - {1838282400 -25200 1 PDT} - {1856422800 -28800 0 PST} - {1869732000 -25200 1 PDT} - {1887872400 -28800 0 PST} - {1901786400 -25200 1 PDT} - {1919322000 -28800 0 PST} - {1933236000 -25200 1 PDT} - {1950771600 -28800 0 PST} - {1964685600 -25200 1 PDT} - {1982826000 -28800 0 PST} - {1996135200 -25200 1 PDT} - {2014275600 -28800 0 PST} - {2027584800 -25200 1 PDT} - {2045725200 -28800 0 PST} - {2059034400 -25200 1 PDT} - {2077174800 -28800 0 PST} - {2091088800 -25200 1 PDT} - {2108624400 -28800 0 PST} - {2122538400 -25200 1 PDT} - {2140074000 -28800 0 PST} - {2153988000 -25200 1 PDT} - {2172128400 -28800 0 PST} - {2185437600 -25200 1 PDT} - {2203578000 -28800 0 PST} - {2216887200 -25200 1 PDT} - {2235027600 -28800 0 PST} - {2248941600 -25200 1 PDT} - {2266477200 -28800 0 PST} - {2280391200 -25200 1 PDT} - {2297926800 -28800 0 PST} - {2311840800 -25200 1 PDT} - {2329376400 -28800 0 PST} - {2343290400 -25200 1 PDT} - {2361430800 -28800 0 PST} - {2374740000 -25200 1 PDT} - {2392880400 -28800 0 PST} - {2406189600 -25200 1 PDT} - {2424330000 -28800 0 PST} - {2438244000 -25200 1 PDT} - {2455779600 -28800 0 PST} - {2469693600 -25200 1 PDT} - {2487229200 -28800 0 PST} - {2501143200 -25200 1 PDT} - {2519283600 -28800 0 PST} - {2532592800 -25200 1 PDT} - {2550733200 -28800 0 PST} - {2564042400 -25200 1 PDT} - {2582182800 -28800 0 PST} - {2596096800 -25200 1 PDT} - {2613632400 -28800 0 PST} - {2627546400 -25200 1 PDT} - {2645082000 -28800 0 PST} - {2658996000 -25200 1 PDT} - {2676531600 -28800 0 PST} - {2690445600 -25200 1 PDT} - {2708586000 -28800 0 PST} - {2721895200 -25200 1 PDT} - {2740035600 -28800 0 PST} - {2753344800 -25200 1 PDT} - {2771485200 -28800 0 PST} - {2785399200 -25200 1 PDT} - {2802934800 -28800 0 PST} - {2816848800 -25200 1 PDT} - {2834384400 -28800 0 PST} - {2848298400 -25200 1 PDT} - {2866438800 -28800 0 PST} - {2879748000 -25200 1 PDT} - {2897888400 -28800 0 PST} - {2911197600 -25200 1 PDT} - {2929338000 -28800 0 PST} - {2942647200 -25200 1 PDT} - {2960787600 -28800 0 PST} - {2974701600 -25200 1 PDT} - {2992237200 -28800 0 PST} - {3006151200 -25200 1 PDT} - {3023686800 -28800 0 PST} - {3037600800 -25200 1 PDT} - {3055741200 -28800 0 PST} - {3069050400 -25200 1 PDT} - {3087190800 -28800 0 PST} - {3100500000 -25200 1 PDT} - {3118640400 -28800 0 PST} - {3132554400 -25200 1 PDT} - {3150090000 -28800 0 PST} - {3164004000 -25200 1 PDT} - {3181539600 -28800 0 PST} - {3195453600 -25200 1 PDT} - {3212989200 -28800 0 PST} - {3226903200 -25200 1 PDT} - {3245043600 -28800 0 PST} - {3258352800 -25200 1 PDT} - {3276493200 -28800 0 PST} - {3289802400 -25200 1 PDT} - {3307942800 -28800 0 PST} - {3321856800 -25200 1 PDT} - {3339392400 -28800 0 PST} - {3353306400 -25200 1 PDT} - {3370842000 -28800 0 PST} - {3384756000 -25200 1 PDT} - {3402896400 -28800 0 PST} - {3416205600 -25200 1 PDT} - {3434346000 -28800 0 PST} - {3447655200 -25200 1 PDT} - {3465795600 -28800 0 PST} - {3479709600 -25200 1 PDT} - {3497245200 -28800 0 PST} - {3511159200 -25200 1 PDT} - {3528694800 -28800 0 PST} - {3542608800 -25200 1 PDT} - {3560144400 -28800 0 PST} - {3574058400 -25200 1 PDT} - {3592198800 -28800 0 PST} - {3605508000 -25200 1 PDT} - {3623648400 -28800 0 PST} - {3636957600 -25200 1 PDT} - {3655098000 -28800 0 PST} - {3669012000 -25200 1 PDT} - {3686547600 -28800 0 PST} - {3700461600 -25200 1 PDT} - {3717997200 -28800 0 PST} - {3731911200 -25200 1 PDT} - {3750051600 -28800 0 PST} - {3763360800 -25200 1 PDT} - {3781501200 -28800 0 PST} - {3794810400 -25200 1 PDT} - {3812950800 -28800 0 PST} - {3826260000 -25200 1 PDT} - {3844400400 -28800 0 PST} - {3858314400 -25200 1 PDT} - {3875850000 -28800 0 PST} - {3889764000 -25200 1 PDT} - {3907299600 -28800 0 PST} - {3921213600 -25200 1 PDT} - {3939354000 -28800 0 PST} - {3952663200 -25200 1 PDT} - {3970803600 -28800 0 PST} - {3984112800 -25200 1 PDT} - {4002253200 -28800 0 PST} - {4016167200 -25200 1 PDT} - {4033702800 -28800 0 PST} - {4047616800 -25200 1 PDT} - {4065152400 -28800 0 PST} - {4079066400 -25200 1 PDT} - {4096602000 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Tijuana) { + {-9223372036854775808 -28084 0 LMT} + {-1514736000 -25200 0 MST} + {-1451667600 -28800 0 PST} + {-1343062800 -25200 0 MST} + {-1234803600 -28800 0 PST} + {-1222963200 -25200 1 PDT} + {-1207242000 -28800 0 PST} + {-873820800 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-761677200 -28800 0 PST} + {-686073600 -25200 1 PDT} + {-661539600 -28800 0 PST} + {-504892800 -28800 0 PST} + {-495036000 -25200 1 PDT} + {-481734000 -28800 0 PST} + {-463586400 -25200 1 PDT} + {-450284400 -28800 0 PST} + {-431532000 -25200 1 PDT} + {-418230000 -28800 0 PST} + {-400082400 -25200 1 PDT} + {-386780400 -28800 0 PST} + {-368632800 -25200 1 PDT} + {-355330800 -28800 0 PST} + {-337183200 -25200 1 PDT} + {-323881200 -28800 0 PST} + {-305733600 -25200 1 PDT} + {-292431600 -28800 0 PST} + {-283968000 -28800 0 PST} + {189331200 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {820483200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {978336000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1014192000 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1175421600 -25200 1 PDT} + {1193562000 -28800 0 PST} + {1207476000 -25200 1 PDT} + {1225011600 -28800 0 PST} + {1238925600 -25200 1 PDT} + {1256461200 -28800 0 PST} + {1270375200 -25200 1 PDT} + {1288515600 -28800 0 PST} + {1301824800 -25200 1 PDT} + {1319965200 -28800 0 PST} + {1333274400 -25200 1 PDT} + {1351414800 -28800 0 PST} + {1365328800 -25200 1 PDT} + {1382864400 -28800 0 PST} + {1396778400 -25200 1 PDT} + {1414314000 -28800 0 PST} + {1428228000 -25200 1 PDT} + {1445763600 -28800 0 PST} + {1459677600 -25200 1 PDT} + {1477818000 -28800 0 PST} + {1491127200 -25200 1 PDT} + {1509267600 -28800 0 PST} + {1522576800 -25200 1 PDT} + {1540717200 -28800 0 PST} + {1554631200 -25200 1 PDT} + {1572166800 -28800 0 PST} + {1586080800 -25200 1 PDT} + {1603616400 -28800 0 PST} + {1617530400 -25200 1 PDT} + {1635670800 -28800 0 PST} + {1648980000 -25200 1 PDT} + {1667120400 -28800 0 PST} + {1680429600 -25200 1 PDT} + {1698570000 -28800 0 PST} + {1712484000 -25200 1 PDT} + {1730019600 -28800 0 PST} + {1743933600 -25200 1 PDT} + {1761469200 -28800 0 PST} + {1775383200 -25200 1 PDT} + {1792918800 -28800 0 PST} + {1806832800 -25200 1 PDT} + {1824973200 -28800 0 PST} + {1838282400 -25200 1 PDT} + {1856422800 -28800 0 PST} + {1869732000 -25200 1 PDT} + {1887872400 -28800 0 PST} + {1901786400 -25200 1 PDT} + {1919322000 -28800 0 PST} + {1933236000 -25200 1 PDT} + {1950771600 -28800 0 PST} + {1964685600 -25200 1 PDT} + {1982826000 -28800 0 PST} + {1996135200 -25200 1 PDT} + {2014275600 -28800 0 PST} + {2027584800 -25200 1 PDT} + {2045725200 -28800 0 PST} + {2059034400 -25200 1 PDT} + {2077174800 -28800 0 PST} + {2091088800 -25200 1 PDT} + {2108624400 -28800 0 PST} + {2122538400 -25200 1 PDT} + {2140074000 -28800 0 PST} + {2153988000 -25200 1 PDT} + {2172128400 -28800 0 PST} + {2185437600 -25200 1 PDT} + {2203578000 -28800 0 PST} + {2216887200 -25200 1 PDT} + {2235027600 -28800 0 PST} + {2248941600 -25200 1 PDT} + {2266477200 -28800 0 PST} + {2280391200 -25200 1 PDT} + {2297926800 -28800 0 PST} + {2311840800 -25200 1 PDT} + {2329376400 -28800 0 PST} + {2343290400 -25200 1 PDT} + {2361430800 -28800 0 PST} + {2374740000 -25200 1 PDT} + {2392880400 -28800 0 PST} + {2406189600 -25200 1 PDT} + {2424330000 -28800 0 PST} + {2438244000 -25200 1 PDT} + {2455779600 -28800 0 PST} + {2469693600 -25200 1 PDT} + {2487229200 -28800 0 PST} + {2501143200 -25200 1 PDT} + {2519283600 -28800 0 PST} + {2532592800 -25200 1 PDT} + {2550733200 -28800 0 PST} + {2564042400 -25200 1 PDT} + {2582182800 -28800 0 PST} + {2596096800 -25200 1 PDT} + {2613632400 -28800 0 PST} + {2627546400 -25200 1 PDT} + {2645082000 -28800 0 PST} + {2658996000 -25200 1 PDT} + {2676531600 -28800 0 PST} + {2690445600 -25200 1 PDT} + {2708586000 -28800 0 PST} + {2721895200 -25200 1 PDT} + {2740035600 -28800 0 PST} + {2753344800 -25200 1 PDT} + {2771485200 -28800 0 PST} + {2785399200 -25200 1 PDT} + {2802934800 -28800 0 PST} + {2816848800 -25200 1 PDT} + {2834384400 -28800 0 PST} + {2848298400 -25200 1 PDT} + {2866438800 -28800 0 PST} + {2879748000 -25200 1 PDT} + {2897888400 -28800 0 PST} + {2911197600 -25200 1 PDT} + {2929338000 -28800 0 PST} + {2942647200 -25200 1 PDT} + {2960787600 -28800 0 PST} + {2974701600 -25200 1 PDT} + {2992237200 -28800 0 PST} + {3006151200 -25200 1 PDT} + {3023686800 -28800 0 PST} + {3037600800 -25200 1 PDT} + {3055741200 -28800 0 PST} + {3069050400 -25200 1 PDT} + {3087190800 -28800 0 PST} + {3100500000 -25200 1 PDT} + {3118640400 -28800 0 PST} + {3132554400 -25200 1 PDT} + {3150090000 -28800 0 PST} + {3164004000 -25200 1 PDT} + {3181539600 -28800 0 PST} + {3195453600 -25200 1 PDT} + {3212989200 -28800 0 PST} + {3226903200 -25200 1 PDT} + {3245043600 -28800 0 PST} + {3258352800 -25200 1 PDT} + {3276493200 -28800 0 PST} + {3289802400 -25200 1 PDT} + {3307942800 -28800 0 PST} + {3321856800 -25200 1 PDT} + {3339392400 -28800 0 PST} + {3353306400 -25200 1 PDT} + {3370842000 -28800 0 PST} + {3384756000 -25200 1 PDT} + {3402896400 -28800 0 PST} + {3416205600 -25200 1 PDT} + {3434346000 -28800 0 PST} + {3447655200 -25200 1 PDT} + {3465795600 -28800 0 PST} + {3479709600 -25200 1 PDT} + {3497245200 -28800 0 PST} + {3511159200 -25200 1 PDT} + {3528694800 -28800 0 PST} + {3542608800 -25200 1 PDT} + {3560144400 -28800 0 PST} + {3574058400 -25200 1 PDT} + {3592198800 -28800 0 PST} + {3605508000 -25200 1 PDT} + {3623648400 -28800 0 PST} + {3636957600 -25200 1 PDT} + {3655098000 -28800 0 PST} + {3669012000 -25200 1 PDT} + {3686547600 -28800 0 PST} + {3700461600 -25200 1 PDT} + {3717997200 -28800 0 PST} + {3731911200 -25200 1 PDT} + {3750051600 -28800 0 PST} + {3763360800 -25200 1 PDT} + {3781501200 -28800 0 PST} + {3794810400 -25200 1 PDT} + {3812950800 -28800 0 PST} + {3826260000 -25200 1 PDT} + {3844400400 -28800 0 PST} + {3858314400 -25200 1 PDT} + {3875850000 -28800 0 PST} + {3889764000 -25200 1 PDT} + {3907299600 -28800 0 PST} + {3921213600 -25200 1 PDT} + {3939354000 -28800 0 PST} + {3952663200 -25200 1 PDT} + {3970803600 -28800 0 PST} + {3984112800 -25200 1 PDT} + {4002253200 -28800 0 PST} + {4016167200 -25200 1 PDT} + {4033702800 -28800 0 PST} + {4047616800 -25200 1 PDT} + {4065152400 -28800 0 PST} + {4079066400 -25200 1 PDT} + {4096602000 -28800 0 PST} +} diff --git a/library/tzdata/America/Toronto b/library/tzdata/America/Toronto index e4fc91a..9243269 100644 --- a/library/tzdata/America/Toronto +++ b/library/tzdata/America/Toronto @@ -1,365 +1,365 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Toronto) { - {-9223372036854775808 -19052 0 LMT} - {-2366736148 -18000 0 EST} - {-1632070800 -14400 1 EDT} - {-1614794400 -18000 0 EST} - {-1609441200 -18000 0 EST} - {-1601753400 -14400 1 EDT} - {-1583697600 -18000 0 EST} - {-1567357200 -14400 1 EDT} - {-1554667200 -18000 0 EST} - {-1534698000 -14400 1 EDT} - {-1524074400 -18000 0 EST} - {-1503248400 -14400 1 EDT} - {-1492365600 -18000 0 EST} - {-1471798800 -14400 1 EDT} - {-1460916000 -18000 0 EST} - {-1440954000 -14400 1 EDT} - {-1428861600 -18000 0 EST} - {-1409504400 -14400 1 EDT} - {-1397412000 -18000 0 EST} - {-1378054800 -14400 1 EDT} - {-1365962400 -18000 0 EST} - {-1346605200 -14400 1 EDT} - {-1333908000 -18000 0 EST} - {-1315155600 -14400 1 EDT} - {-1301853600 -18000 0 EST} - {-1283706000 -14400 1 EDT} - {-1270404000 -18000 0 EST} - {-1252256400 -14400 1 EDT} - {-1238954400 -18000 0 EST} - {-1220806800 -14400 1 EDT} - {-1207504800 -18000 0 EST} - {-1188752400 -14400 1 EDT} - {-1176055200 -18000 0 EST} - {-1157302800 -14400 1 EDT} - {-1144000800 -18000 0 EST} - {-1125853200 -14400 1 EDT} - {-1112551200 -18000 0 EST} - {-1094403600 -14400 1 EDT} - {-1081101600 -18000 0 EST} - {-1062954000 -14400 1 EDT} - {-1049652000 -18000 0 EST} - {-1031504400 -14400 1 EDT} - {-1018202400 -18000 0 EST} - {-1000054800 -14400 1 EDT} - {-986752800 -18000 0 EST} - {-968000400 -14400 1 EDT} - {-955303200 -18000 0 EST} - {-936550800 -14400 1 EDT} - {-880218000 -14400 0 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-757364400 -18000 0 EST} - {-747248400 -14400 1 EDT} - {-733946400 -18000 0 EST} - {-715806000 -14400 1 EDT} - {-702504000 -18000 0 EST} - {-684356400 -14400 1 EDT} - {-671054400 -18000 0 EST} - {-652906800 -14400 1 EDT} - {-634161600 -18000 0 EST} - {-620845200 -14400 1 EDT} - {-602704800 -18000 0 EST} - {-589395600 -14400 1 EDT} - {-576093600 -18000 0 EST} - {-557946000 -14400 1 EDT} - {-544644000 -18000 0 EST} - {-526496400 -14400 1 EDT} - {-513194400 -18000 0 EST} - {-495046800 -14400 1 EDT} - {-481744800 -18000 0 EST} - {-463597200 -14400 1 EDT} - {-450295200 -18000 0 EST} - {-431542800 -14400 1 EDT} - {-418240800 -18000 0 EST} - {-400093200 -14400 1 EDT} - {-384372000 -18000 0 EST} - {-368643600 -14400 1 EDT} - {-352922400 -18000 0 EST} - {-337194000 -14400 1 EDT} - {-321472800 -18000 0 EST} - {-305744400 -14400 1 EDT} - {-289418400 -18000 0 EST} - {-273690000 -14400 1 EDT} - {-257968800 -18000 0 EST} - {-242240400 -14400 1 EDT} - {-226519200 -18000 0 EST} - {-210790800 -14400 1 EDT} - {-195069600 -18000 0 EST} - {-179341200 -14400 1 EDT} - {-163620000 -18000 0 EST} - {-147891600 -14400 1 EDT} - {-131565600 -18000 0 EST} - {-116442000 -14400 1 EDT} - {-100116000 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126248400 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Toronto) { + {-9223372036854775808 -19052 0 LMT} + {-2366736148 -18000 0 EST} + {-1632070800 -14400 1 EDT} + {-1614794400 -18000 0 EST} + {-1609441200 -18000 0 EST} + {-1601753400 -14400 1 EDT} + {-1583697600 -18000 0 EST} + {-1567357200 -14400 1 EDT} + {-1554667200 -18000 0 EST} + {-1534698000 -14400 1 EDT} + {-1524074400 -18000 0 EST} + {-1503248400 -14400 1 EDT} + {-1492365600 -18000 0 EST} + {-1471798800 -14400 1 EDT} + {-1460916000 -18000 0 EST} + {-1440954000 -14400 1 EDT} + {-1428861600 -18000 0 EST} + {-1409504400 -14400 1 EDT} + {-1397412000 -18000 0 EST} + {-1378054800 -14400 1 EDT} + {-1365962400 -18000 0 EST} + {-1346605200 -14400 1 EDT} + {-1333908000 -18000 0 EST} + {-1315155600 -14400 1 EDT} + {-1301853600 -18000 0 EST} + {-1283706000 -14400 1 EDT} + {-1270404000 -18000 0 EST} + {-1252256400 -14400 1 EDT} + {-1238954400 -18000 0 EST} + {-1220806800 -14400 1 EDT} + {-1207504800 -18000 0 EST} + {-1188752400 -14400 1 EDT} + {-1176055200 -18000 0 EST} + {-1157302800 -14400 1 EDT} + {-1144000800 -18000 0 EST} + {-1125853200 -14400 1 EDT} + {-1112551200 -18000 0 EST} + {-1094403600 -14400 1 EDT} + {-1081101600 -18000 0 EST} + {-1062954000 -14400 1 EDT} + {-1049652000 -18000 0 EST} + {-1031504400 -14400 1 EDT} + {-1018202400 -18000 0 EST} + {-1000054800 -14400 1 EDT} + {-986752800 -18000 0 EST} + {-968000400 -14400 1 EDT} + {-955303200 -18000 0 EST} + {-936550800 -14400 1 EDT} + {-880218000 -14400 0 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-757364400 -18000 0 EST} + {-747248400 -14400 1 EDT} + {-733946400 -18000 0 EST} + {-715806000 -14400 1 EDT} + {-702504000 -18000 0 EST} + {-684356400 -14400 1 EDT} + {-671054400 -18000 0 EST} + {-652906800 -14400 1 EDT} + {-634161600 -18000 0 EST} + {-620845200 -14400 1 EDT} + {-602704800 -18000 0 EST} + {-589395600 -14400 1 EDT} + {-576093600 -18000 0 EST} + {-557946000 -14400 1 EDT} + {-544644000 -18000 0 EST} + {-526496400 -14400 1 EDT} + {-513194400 -18000 0 EST} + {-495046800 -14400 1 EDT} + {-481744800 -18000 0 EST} + {-463597200 -14400 1 EDT} + {-450295200 -18000 0 EST} + {-431542800 -14400 1 EDT} + {-418240800 -18000 0 EST} + {-400093200 -14400 1 EDT} + {-384372000 -18000 0 EST} + {-368643600 -14400 1 EDT} + {-352922400 -18000 0 EST} + {-337194000 -14400 1 EDT} + {-321472800 -18000 0 EST} + {-305744400 -14400 1 EDT} + {-289418400 -18000 0 EST} + {-273690000 -14400 1 EDT} + {-257968800 -18000 0 EST} + {-242240400 -14400 1 EDT} + {-226519200 -18000 0 EST} + {-210790800 -14400 1 EDT} + {-195069600 -18000 0 EST} + {-179341200 -14400 1 EDT} + {-163620000 -18000 0 EST} + {-147891600 -14400 1 EDT} + {-131565600 -18000 0 EST} + {-116442000 -14400 1 EDT} + {-100116000 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126248400 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Tortola b/library/tzdata/America/Tortola index bf7f1fc..d421392 100644 --- a/library/tzdata/America/Tortola +++ b/library/tzdata/America/Tortola @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Tortola) { - {-9223372036854775808 -15508 0 LMT} - {-1846266092 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Tortola) { + {-9223372036854775808 -15508 0 LMT} + {-1846266092 -14400 0 AST} +} diff --git a/library/tzdata/America/Vancouver b/library/tzdata/America/Vancouver index b2e0415..73ccb1f 100644 --- a/library/tzdata/America/Vancouver +++ b/library/tzdata/America/Vancouver @@ -1,320 +1,320 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Vancouver) { - {-9223372036854775808 -29548 0 LMT} - {-2713880852 -28800 0 PST} - {-1632060000 -25200 1 PDT} - {-1614783600 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-747237600 -25200 1 PDT} - {-732726000 -28800 0 PST} - {-715788000 -25200 1 PDT} - {-702486000 -28800 0 PST} - {-684338400 -25200 1 PDT} - {-671036400 -28800 0 PST} - {-652888800 -25200 1 PDT} - {-639586800 -28800 0 PST} - {-620834400 -25200 1 PDT} - {-608137200 -28800 0 PST} - {-589384800 -25200 1 PDT} - {-576082800 -28800 0 PST} - {-557935200 -25200 1 PDT} - {-544633200 -28800 0 PST} - {-526485600 -25200 1 PDT} - {-513183600 -28800 0 PST} - {-495036000 -25200 1 PDT} - {-481734000 -28800 0 PST} - {-463586400 -25200 1 PDT} - {-450284400 -28800 0 PST} - {-431532000 -25200 1 PDT} - {-418230000 -28800 0 PST} - {-400082400 -25200 1 PDT} - {-386780400 -28800 0 PST} - {-368632800 -25200 1 PDT} - {-355330800 -28800 0 PST} - {-337183200 -25200 1 PDT} - {-323881200 -28800 0 PST} - {-305733600 -25200 1 PDT} - {-292431600 -28800 0 PST} - {-273679200 -25200 1 PDT} - {-260982000 -28800 0 PST} - {-242229600 -25200 1 PDT} - {-226508400 -28800 0 PST} - {-210780000 -25200 1 PDT} - {-195058800 -28800 0 PST} - {-179330400 -25200 1 PDT} - {-163609200 -28800 0 PST} - {-147880800 -25200 1 PDT} - {-131554800 -28800 0 PST} - {-116431200 -25200 1 PDT} - {-100105200 -28800 0 PST} - {-84376800 -25200 1 PDT} - {-68655600 -28800 0 PST} - {-52927200 -25200 1 PDT} - {-37206000 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {89197200 -28800 0 PST} - {104925600 -25200 1 PDT} - {120646800 -28800 0 PST} - {136375200 -25200 1 PDT} - {152096400 -28800 0 PST} - {167824800 -25200 1 PDT} - {183546000 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {536486400 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Vancouver) { + {-9223372036854775808 -29548 0 LMT} + {-2713880852 -28800 0 PST} + {-1632060000 -25200 1 PDT} + {-1614783600 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-747237600 -25200 1 PDT} + {-732726000 -28800 0 PST} + {-715788000 -25200 1 PDT} + {-702486000 -28800 0 PST} + {-684338400 -25200 1 PDT} + {-671036400 -28800 0 PST} + {-652888800 -25200 1 PDT} + {-639586800 -28800 0 PST} + {-620834400 -25200 1 PDT} + {-608137200 -28800 0 PST} + {-589384800 -25200 1 PDT} + {-576082800 -28800 0 PST} + {-557935200 -25200 1 PDT} + {-544633200 -28800 0 PST} + {-526485600 -25200 1 PDT} + {-513183600 -28800 0 PST} + {-495036000 -25200 1 PDT} + {-481734000 -28800 0 PST} + {-463586400 -25200 1 PDT} + {-450284400 -28800 0 PST} + {-431532000 -25200 1 PDT} + {-418230000 -28800 0 PST} + {-400082400 -25200 1 PDT} + {-386780400 -28800 0 PST} + {-368632800 -25200 1 PDT} + {-355330800 -28800 0 PST} + {-337183200 -25200 1 PDT} + {-323881200 -28800 0 PST} + {-305733600 -25200 1 PDT} + {-292431600 -28800 0 PST} + {-273679200 -25200 1 PDT} + {-260982000 -28800 0 PST} + {-242229600 -25200 1 PDT} + {-226508400 -28800 0 PST} + {-210780000 -25200 1 PDT} + {-195058800 -28800 0 PST} + {-179330400 -25200 1 PDT} + {-163609200 -28800 0 PST} + {-147880800 -25200 1 PDT} + {-131554800 -28800 0 PST} + {-116431200 -25200 1 PDT} + {-100105200 -28800 0 PST} + {-84376800 -25200 1 PDT} + {-68655600 -28800 0 PST} + {-52927200 -25200 1 PDT} + {-37206000 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {136375200 -25200 1 PDT} + {152096400 -28800 0 PST} + {167824800 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {536486400 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/America/Virgin b/library/tzdata/America/Virgin index 390d7c2..f55eda2 100644 --- a/library/tzdata/America/Virgin +++ b/library/tzdata/America/Virgin @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/St_Thomas)]} { - LoadTimeZoneFile America/St_Thomas -} -set TZData(:America/Virgin) $TZData(:America/St_Thomas) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/St_Thomas)]} { + LoadTimeZoneFile America/St_Thomas +} +set TZData(:America/Virgin) $TZData(:America/St_Thomas) diff --git a/library/tzdata/America/Whitehorse b/library/tzdata/America/Whitehorse index 1d61093..1137440 100644 --- a/library/tzdata/America/Whitehorse +++ b/library/tzdata/America/Whitehorse @@ -1,256 +1,256 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Whitehorse) { - {-9223372036854775808 -32412 0 LMT} - {-2188997988 -32400 0 YST} - {-1632056400 -28800 1 YDT} - {-1615125600 -32400 0 YST} - {-1596978000 -28800 1 YDT} - {-1583164800 -32400 0 YST} - {-880203600 -28800 1 YWT} - {-769395600 -28800 1 YPT} - {-765381600 -32400 0 YST} - {-147884400 -25200 1 YDDT} - {-131554800 -32400 0 YST} - {315561600 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Whitehorse) { + {-9223372036854775808 -32412 0 LMT} + {-2188997988 -32400 0 YST} + {-1632056400 -28800 1 YDT} + {-1615125600 -32400 0 YST} + {-1596978000 -28800 1 YDT} + {-1583164800 -32400 0 YST} + {-880203600 -28800 1 YWT} + {-769395600 -28800 1 YPT} + {-765381600 -32400 0 YST} + {-147884400 -25200 1 YDDT} + {-131554800 -32400 0 YST} + {315561600 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/America/Winnipeg b/library/tzdata/America/Winnipeg index 7e6208a..5ad59aa 100644 --- a/library/tzdata/America/Winnipeg +++ b/library/tzdata/America/Winnipeg @@ -1,316 +1,316 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Winnipeg) { - {-9223372036854775808 -23316 0 LMT} - {-2602258284 -21600 0 CST} - {-1694368800 -18000 1 CDT} - {-1681671600 -21600 0 CST} - {-1632067200 -18000 1 CDT} - {-1614790800 -21600 0 CST} - {-1029686400 -18000 1 CDT} - {-1018198800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-746035200 -18000 1 CDT} - {-732733200 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620755200 -18000 1 CDT} - {-607626000 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-321469200 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-292438800 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-198090000 -21600 0 CST} - {-116438400 -18000 1 CDT} - {-100108800 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68659200 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37209600 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5760000 -21600 0 CST} - {9964800 -18000 1 CDT} - {25689600 -21600 0 CST} - {41414400 -18000 1 CDT} - {57744000 -21600 0 CST} - {73468800 -18000 1 CDT} - {89193600 -21600 0 CST} - {104918400 -18000 1 CDT} - {120643200 -21600 0 CST} - {136368000 -18000 1 CDT} - {152092800 -21600 0 CST} - {167817600 -18000 1 CDT} - {183542400 -21600 0 CST} - {199267200 -18000 1 CDT} - {215596800 -21600 0 CST} - {230716800 -18000 1 CDT} - {247046400 -21600 0 CST} - {262771200 -18000 1 CDT} - {278496000 -21600 0 CST} - {294220800 -18000 1 CDT} - {309945600 -21600 0 CST} - {325670400 -18000 1 CDT} - {341395200 -21600 0 CST} - {357120000 -18000 1 CDT} - {372844800 -21600 0 CST} - {388569600 -18000 1 CDT} - {404899200 -21600 0 CST} - {420019200 -18000 1 CDT} - {436348800 -21600 0 CST} - {452073600 -18000 1 CDT} - {467798400 -21600 0 CST} - {483523200 -18000 1 CDT} - {499248000 -21600 0 CST} - {514972800 -18000 1 CDT} - {530697600 -21600 0 CST} - {544608000 -18000 1 CDT} - {562147200 -21600 0 CST} - {576057600 -18000 1 CDT} - {594201600 -21600 0 CST} - {607507200 -18000 1 CDT} - {625651200 -21600 0 CST} - {638956800 -18000 1 CDT} - {657100800 -21600 0 CST} - {671011200 -18000 1 CDT} - {688550400 -21600 0 CST} - {702460800 -18000 1 CDT} - {720000000 -21600 0 CST} - {733910400 -18000 1 CDT} - {752054400 -21600 0 CST} - {765360000 -18000 1 CDT} - {783504000 -21600 0 CST} - {796809600 -18000 1 CDT} - {814953600 -21600 0 CST} - {828864000 -18000 1 CDT} - {846403200 -21600 0 CST} - {860313600 -18000 1 CDT} - {877852800 -21600 0 CST} - {891763200 -18000 1 CDT} - {909302400 -21600 0 CST} - {923212800 -18000 1 CDT} - {941356800 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004256000 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035705600 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067155200 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099209600 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130659200 -21600 0 CST} - {1136095200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Winnipeg) { + {-9223372036854775808 -23316 0 LMT} + {-2602258284 -21600 0 CST} + {-1694368800 -18000 1 CDT} + {-1681671600 -21600 0 CST} + {-1632067200 -18000 1 CDT} + {-1614790800 -21600 0 CST} + {-1029686400 -18000 1 CDT} + {-1018198800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-746035200 -18000 1 CDT} + {-732733200 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620755200 -18000 1 CDT} + {-607626000 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-321469200 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-292438800 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-198090000 -21600 0 CST} + {-116438400 -18000 1 CDT} + {-100108800 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68659200 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37209600 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5760000 -21600 0 CST} + {9964800 -18000 1 CDT} + {25689600 -21600 0 CST} + {41414400 -18000 1 CDT} + {57744000 -21600 0 CST} + {73468800 -18000 1 CDT} + {89193600 -21600 0 CST} + {104918400 -18000 1 CDT} + {120643200 -21600 0 CST} + {136368000 -18000 1 CDT} + {152092800 -21600 0 CST} + {167817600 -18000 1 CDT} + {183542400 -21600 0 CST} + {199267200 -18000 1 CDT} + {215596800 -21600 0 CST} + {230716800 -18000 1 CDT} + {247046400 -21600 0 CST} + {262771200 -18000 1 CDT} + {278496000 -21600 0 CST} + {294220800 -18000 1 CDT} + {309945600 -21600 0 CST} + {325670400 -18000 1 CDT} + {341395200 -21600 0 CST} + {357120000 -18000 1 CDT} + {372844800 -21600 0 CST} + {388569600 -18000 1 CDT} + {404899200 -21600 0 CST} + {420019200 -18000 1 CDT} + {436348800 -21600 0 CST} + {452073600 -18000 1 CDT} + {467798400 -21600 0 CST} + {483523200 -18000 1 CDT} + {499248000 -21600 0 CST} + {514972800 -18000 1 CDT} + {530697600 -21600 0 CST} + {544608000 -18000 1 CDT} + {562147200 -21600 0 CST} + {576057600 -18000 1 CDT} + {594201600 -21600 0 CST} + {607507200 -18000 1 CDT} + {625651200 -21600 0 CST} + {638956800 -18000 1 CDT} + {657100800 -21600 0 CST} + {671011200 -18000 1 CDT} + {688550400 -21600 0 CST} + {702460800 -18000 1 CDT} + {720000000 -21600 0 CST} + {733910400 -18000 1 CDT} + {752054400 -21600 0 CST} + {765360000 -18000 1 CDT} + {783504000 -21600 0 CST} + {796809600 -18000 1 CDT} + {814953600 -21600 0 CST} + {828864000 -18000 1 CDT} + {846403200 -21600 0 CST} + {860313600 -18000 1 CDT} + {877852800 -21600 0 CST} + {891763200 -18000 1 CDT} + {909302400 -21600 0 CST} + {923212800 -18000 1 CDT} + {941356800 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004256000 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035705600 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067155200 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099209600 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130659200 -21600 0 CST} + {1136095200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Yakutat b/library/tzdata/America/Yakutat index a0420c5..be4e2d5 100644 --- a/library/tzdata/America/Yakutat +++ b/library/tzdata/America/Yakutat @@ -1,276 +1,276 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Yakutat) { - {-9223372036854775808 52865 0 LMT} - {-3225364865 -33535 0 LMT} - {-2188953665 -32400 0 YST} - {-883580400 -32400 0 YST} - {-880203600 -28800 1 YWT} - {-769395600 -28800 1 YPT} - {-765381600 -32400 0 YST} - {-757350000 -32400 0 YST} - {-31503600 -32400 0 YST} - {-21474000 -28800 1 YDT} - {-5752800 -32400 0 YST} - {9975600 -28800 1 YDT} - {25696800 -32400 0 YST} - {41425200 -28800 1 YDT} - {57751200 -32400 0 YST} - {73479600 -28800 1 YDT} - {89200800 -32400 0 YST} - {104929200 -28800 1 YDT} - {120650400 -32400 0 YST} - {126702000 -28800 1 YDT} - {152100000 -32400 0 YST} - {162385200 -28800 1 YDT} - {183549600 -32400 0 YST} - {199278000 -28800 1 YDT} - {215604000 -32400 0 YST} - {230727600 -28800 1 YDT} - {247053600 -32400 0 YST} - {262782000 -28800 1 YDT} - {278503200 -32400 0 YST} - {294231600 -28800 1 YDT} - {309952800 -32400 0 YST} - {325681200 -28800 1 YDT} - {341402400 -32400 0 YST} - {357130800 -28800 1 YDT} - {372852000 -32400 0 YST} - {388580400 -28800 1 YDT} - {404906400 -32400 0 YST} - {420030000 -28800 1 YDT} - {436356000 -32400 0 YST} - {439030800 -32400 0 AKST} - {452084400 -28800 1 AKDT} - {467805600 -32400 0 AKST} - {483534000 -28800 1 AKDT} - {499255200 -32400 0 AKST} - {514983600 -28800 1 AKDT} - {530704800 -32400 0 AKST} - {544618800 -28800 1 AKDT} - {562154400 -32400 0 AKST} - {576068400 -28800 1 AKDT} - {594208800 -32400 0 AKST} - {607518000 -28800 1 AKDT} - {625658400 -32400 0 AKST} - {638967600 -28800 1 AKDT} - {657108000 -32400 0 AKST} - {671022000 -28800 1 AKDT} - {688557600 -32400 0 AKST} - {702471600 -28800 1 AKDT} - {720007200 -32400 0 AKST} - {733921200 -28800 1 AKDT} - {752061600 -32400 0 AKST} - {765370800 -28800 1 AKDT} - {783511200 -32400 0 AKST} - {796820400 -28800 1 AKDT} - {814960800 -32400 0 AKST} - {828874800 -28800 1 AKDT} - {846410400 -32400 0 AKST} - {860324400 -28800 1 AKDT} - {877860000 -32400 0 AKST} - {891774000 -28800 1 AKDT} - {909309600 -32400 0 AKST} - {923223600 -28800 1 AKDT} - {941364000 -32400 0 AKST} - {954673200 -28800 1 AKDT} - {972813600 -32400 0 AKST} - {986122800 -28800 1 AKDT} - {1004263200 -32400 0 AKST} - {1018177200 -28800 1 AKDT} - {1035712800 -32400 0 AKST} - {1049626800 -28800 1 AKDT} - {1067162400 -32400 0 AKST} - {1081076400 -28800 1 AKDT} - {1099216800 -32400 0 AKST} - {1112526000 -28800 1 AKDT} - {1130666400 -32400 0 AKST} - {1143975600 -28800 1 AKDT} - {1162116000 -32400 0 AKST} - {1173610800 -28800 1 AKDT} - {1194170400 -32400 0 AKST} - {1205060400 -28800 1 AKDT} - {1225620000 -32400 0 AKST} - {1236510000 -28800 1 AKDT} - {1257069600 -32400 0 AKST} - {1268564400 -28800 1 AKDT} - {1289124000 -32400 0 AKST} - {1300014000 -28800 1 AKDT} - {1320573600 -32400 0 AKST} - {1331463600 -28800 1 AKDT} - {1352023200 -32400 0 AKST} - {1362913200 -28800 1 AKDT} - {1383472800 -32400 0 AKST} - {1394362800 -28800 1 AKDT} - {1414922400 -32400 0 AKST} - {1425812400 -28800 1 AKDT} - {1446372000 -32400 0 AKST} - {1457866800 -28800 1 AKDT} - {1478426400 -32400 0 AKST} - {1489316400 -28800 1 AKDT} - {1509876000 -32400 0 AKST} - {1520766000 -28800 1 AKDT} - {1541325600 -32400 0 AKST} - {1552215600 -28800 1 AKDT} - {1572775200 -32400 0 AKST} - {1583665200 -28800 1 AKDT} - {1604224800 -32400 0 AKST} - {1615719600 -28800 1 AKDT} - {1636279200 -32400 0 AKST} - {1647169200 -28800 1 AKDT} - {1667728800 -32400 0 AKST} - {1678618800 -28800 1 AKDT} - {1699178400 -32400 0 AKST} - {1710068400 -28800 1 AKDT} - {1730628000 -32400 0 AKST} - {1741518000 -28800 1 AKDT} - {1762077600 -32400 0 AKST} - {1772967600 -28800 1 AKDT} - {1793527200 -32400 0 AKST} - {1805022000 -28800 1 AKDT} - {1825581600 -32400 0 AKST} - {1836471600 -28800 1 AKDT} - {1857031200 -32400 0 AKST} - {1867921200 -28800 1 AKDT} - {1888480800 -32400 0 AKST} - {1899370800 -28800 1 AKDT} - {1919930400 -32400 0 AKST} - {1930820400 -28800 1 AKDT} - {1951380000 -32400 0 AKST} - {1962874800 -28800 1 AKDT} - {1983434400 -32400 0 AKST} - {1994324400 -28800 1 AKDT} - {2014884000 -32400 0 AKST} - {2025774000 -28800 1 AKDT} - {2046333600 -32400 0 AKST} - {2057223600 -28800 1 AKDT} - {2077783200 -32400 0 AKST} - {2088673200 -28800 1 AKDT} - {2109232800 -32400 0 AKST} - {2120122800 -28800 1 AKDT} - {2140682400 -32400 0 AKST} - {2152177200 -28800 1 AKDT} - {2172736800 -32400 0 AKST} - {2183626800 -28800 1 AKDT} - {2204186400 -32400 0 AKST} - {2215076400 -28800 1 AKDT} - {2235636000 -32400 0 AKST} - {2246526000 -28800 1 AKDT} - {2267085600 -32400 0 AKST} - {2277975600 -28800 1 AKDT} - {2298535200 -32400 0 AKST} - {2309425200 -28800 1 AKDT} - {2329984800 -32400 0 AKST} - {2341479600 -28800 1 AKDT} - {2362039200 -32400 0 AKST} - {2372929200 -28800 1 AKDT} - {2393488800 -32400 0 AKST} - {2404378800 -28800 1 AKDT} - {2424938400 -32400 0 AKST} - {2435828400 -28800 1 AKDT} - {2456388000 -32400 0 AKST} - {2467278000 -28800 1 AKDT} - {2487837600 -32400 0 AKST} - {2499332400 -28800 1 AKDT} - {2519892000 -32400 0 AKST} - {2530782000 -28800 1 AKDT} - {2551341600 -32400 0 AKST} - {2562231600 -28800 1 AKDT} - {2582791200 -32400 0 AKST} - {2593681200 -28800 1 AKDT} - {2614240800 -32400 0 AKST} - {2625130800 -28800 1 AKDT} - {2645690400 -32400 0 AKST} - {2656580400 -28800 1 AKDT} - {2677140000 -32400 0 AKST} - {2688634800 -28800 1 AKDT} - {2709194400 -32400 0 AKST} - {2720084400 -28800 1 AKDT} - {2740644000 -32400 0 AKST} - {2751534000 -28800 1 AKDT} - {2772093600 -32400 0 AKST} - {2782983600 -28800 1 AKDT} - {2803543200 -32400 0 AKST} - {2814433200 -28800 1 AKDT} - {2834992800 -32400 0 AKST} - {2846487600 -28800 1 AKDT} - {2867047200 -32400 0 AKST} - {2877937200 -28800 1 AKDT} - {2898496800 -32400 0 AKST} - {2909386800 -28800 1 AKDT} - {2929946400 -32400 0 AKST} - {2940836400 -28800 1 AKDT} - {2961396000 -32400 0 AKST} - {2972286000 -28800 1 AKDT} - {2992845600 -32400 0 AKST} - {3003735600 -28800 1 AKDT} - {3024295200 -32400 0 AKST} - {3035790000 -28800 1 AKDT} - {3056349600 -32400 0 AKST} - {3067239600 -28800 1 AKDT} - {3087799200 -32400 0 AKST} - {3098689200 -28800 1 AKDT} - {3119248800 -32400 0 AKST} - {3130138800 -28800 1 AKDT} - {3150698400 -32400 0 AKST} - {3161588400 -28800 1 AKDT} - {3182148000 -32400 0 AKST} - {3193038000 -28800 1 AKDT} - {3213597600 -32400 0 AKST} - {3225092400 -28800 1 AKDT} - {3245652000 -32400 0 AKST} - {3256542000 -28800 1 AKDT} - {3277101600 -32400 0 AKST} - {3287991600 -28800 1 AKDT} - {3308551200 -32400 0 AKST} - {3319441200 -28800 1 AKDT} - {3340000800 -32400 0 AKST} - {3350890800 -28800 1 AKDT} - {3371450400 -32400 0 AKST} - {3382945200 -28800 1 AKDT} - {3403504800 -32400 0 AKST} - {3414394800 -28800 1 AKDT} - {3434954400 -32400 0 AKST} - {3445844400 -28800 1 AKDT} - {3466404000 -32400 0 AKST} - {3477294000 -28800 1 AKDT} - {3497853600 -32400 0 AKST} - {3508743600 -28800 1 AKDT} - {3529303200 -32400 0 AKST} - {3540193200 -28800 1 AKDT} - {3560752800 -32400 0 AKST} - {3572247600 -28800 1 AKDT} - {3592807200 -32400 0 AKST} - {3603697200 -28800 1 AKDT} - {3624256800 -32400 0 AKST} - {3635146800 -28800 1 AKDT} - {3655706400 -32400 0 AKST} - {3666596400 -28800 1 AKDT} - {3687156000 -32400 0 AKST} - {3698046000 -28800 1 AKDT} - {3718605600 -32400 0 AKST} - {3730100400 -28800 1 AKDT} - {3750660000 -32400 0 AKST} - {3761550000 -28800 1 AKDT} - {3782109600 -32400 0 AKST} - {3792999600 -28800 1 AKDT} - {3813559200 -32400 0 AKST} - {3824449200 -28800 1 AKDT} - {3845008800 -32400 0 AKST} - {3855898800 -28800 1 AKDT} - {3876458400 -32400 0 AKST} - {3887348400 -28800 1 AKDT} - {3907908000 -32400 0 AKST} - {3919402800 -28800 1 AKDT} - {3939962400 -32400 0 AKST} - {3950852400 -28800 1 AKDT} - {3971412000 -32400 0 AKST} - {3982302000 -28800 1 AKDT} - {4002861600 -32400 0 AKST} - {4013751600 -28800 1 AKDT} - {4034311200 -32400 0 AKST} - {4045201200 -28800 1 AKDT} - {4065760800 -32400 0 AKST} - {4076650800 -28800 1 AKDT} - {4097210400 -32400 0 AKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Yakutat) { + {-9223372036854775808 52865 0 LMT} + {-3225364865 -33535 0 LMT} + {-2188953665 -32400 0 YST} + {-883580400 -32400 0 YST} + {-880203600 -28800 1 YWT} + {-769395600 -28800 1 YPT} + {-765381600 -32400 0 YST} + {-757350000 -32400 0 YST} + {-31503600 -32400 0 YST} + {-21474000 -28800 1 YDT} + {-5752800 -32400 0 YST} + {9975600 -28800 1 YDT} + {25696800 -32400 0 YST} + {41425200 -28800 1 YDT} + {57751200 -32400 0 YST} + {73479600 -28800 1 YDT} + {89200800 -32400 0 YST} + {104929200 -28800 1 YDT} + {120650400 -32400 0 YST} + {126702000 -28800 1 YDT} + {152100000 -32400 0 YST} + {162385200 -28800 1 YDT} + {183549600 -32400 0 YST} + {199278000 -28800 1 YDT} + {215604000 -32400 0 YST} + {230727600 -28800 1 YDT} + {247053600 -32400 0 YST} + {262782000 -28800 1 YDT} + {278503200 -32400 0 YST} + {294231600 -28800 1 YDT} + {309952800 -32400 0 YST} + {325681200 -28800 1 YDT} + {341402400 -32400 0 YST} + {357130800 -28800 1 YDT} + {372852000 -32400 0 YST} + {388580400 -28800 1 YDT} + {404906400 -32400 0 YST} + {420030000 -28800 1 YDT} + {436356000 -32400 0 YST} + {439030800 -32400 0 AKST} + {452084400 -28800 1 AKDT} + {467805600 -32400 0 AKST} + {483534000 -28800 1 AKDT} + {499255200 -32400 0 AKST} + {514983600 -28800 1 AKDT} + {530704800 -32400 0 AKST} + {544618800 -28800 1 AKDT} + {562154400 -32400 0 AKST} + {576068400 -28800 1 AKDT} + {594208800 -32400 0 AKST} + {607518000 -28800 1 AKDT} + {625658400 -32400 0 AKST} + {638967600 -28800 1 AKDT} + {657108000 -32400 0 AKST} + {671022000 -28800 1 AKDT} + {688557600 -32400 0 AKST} + {702471600 -28800 1 AKDT} + {720007200 -32400 0 AKST} + {733921200 -28800 1 AKDT} + {752061600 -32400 0 AKST} + {765370800 -28800 1 AKDT} + {783511200 -32400 0 AKST} + {796820400 -28800 1 AKDT} + {814960800 -32400 0 AKST} + {828874800 -28800 1 AKDT} + {846410400 -32400 0 AKST} + {860324400 -28800 1 AKDT} + {877860000 -32400 0 AKST} + {891774000 -28800 1 AKDT} + {909309600 -32400 0 AKST} + {923223600 -28800 1 AKDT} + {941364000 -32400 0 AKST} + {954673200 -28800 1 AKDT} + {972813600 -32400 0 AKST} + {986122800 -28800 1 AKDT} + {1004263200 -32400 0 AKST} + {1018177200 -28800 1 AKDT} + {1035712800 -32400 0 AKST} + {1049626800 -28800 1 AKDT} + {1067162400 -32400 0 AKST} + {1081076400 -28800 1 AKDT} + {1099216800 -32400 0 AKST} + {1112526000 -28800 1 AKDT} + {1130666400 -32400 0 AKST} + {1143975600 -28800 1 AKDT} + {1162116000 -32400 0 AKST} + {1173610800 -28800 1 AKDT} + {1194170400 -32400 0 AKST} + {1205060400 -28800 1 AKDT} + {1225620000 -32400 0 AKST} + {1236510000 -28800 1 AKDT} + {1257069600 -32400 0 AKST} + {1268564400 -28800 1 AKDT} + {1289124000 -32400 0 AKST} + {1300014000 -28800 1 AKDT} + {1320573600 -32400 0 AKST} + {1331463600 -28800 1 AKDT} + {1352023200 -32400 0 AKST} + {1362913200 -28800 1 AKDT} + {1383472800 -32400 0 AKST} + {1394362800 -28800 1 AKDT} + {1414922400 -32400 0 AKST} + {1425812400 -28800 1 AKDT} + {1446372000 -32400 0 AKST} + {1457866800 -28800 1 AKDT} + {1478426400 -32400 0 AKST} + {1489316400 -28800 1 AKDT} + {1509876000 -32400 0 AKST} + {1520766000 -28800 1 AKDT} + {1541325600 -32400 0 AKST} + {1552215600 -28800 1 AKDT} + {1572775200 -32400 0 AKST} + {1583665200 -28800 1 AKDT} + {1604224800 -32400 0 AKST} + {1615719600 -28800 1 AKDT} + {1636279200 -32400 0 AKST} + {1647169200 -28800 1 AKDT} + {1667728800 -32400 0 AKST} + {1678618800 -28800 1 AKDT} + {1699178400 -32400 0 AKST} + {1710068400 -28800 1 AKDT} + {1730628000 -32400 0 AKST} + {1741518000 -28800 1 AKDT} + {1762077600 -32400 0 AKST} + {1772967600 -28800 1 AKDT} + {1793527200 -32400 0 AKST} + {1805022000 -28800 1 AKDT} + {1825581600 -32400 0 AKST} + {1836471600 -28800 1 AKDT} + {1857031200 -32400 0 AKST} + {1867921200 -28800 1 AKDT} + {1888480800 -32400 0 AKST} + {1899370800 -28800 1 AKDT} + {1919930400 -32400 0 AKST} + {1930820400 -28800 1 AKDT} + {1951380000 -32400 0 AKST} + {1962874800 -28800 1 AKDT} + {1983434400 -32400 0 AKST} + {1994324400 -28800 1 AKDT} + {2014884000 -32400 0 AKST} + {2025774000 -28800 1 AKDT} + {2046333600 -32400 0 AKST} + {2057223600 -28800 1 AKDT} + {2077783200 -32400 0 AKST} + {2088673200 -28800 1 AKDT} + {2109232800 -32400 0 AKST} + {2120122800 -28800 1 AKDT} + {2140682400 -32400 0 AKST} + {2152177200 -28800 1 AKDT} + {2172736800 -32400 0 AKST} + {2183626800 -28800 1 AKDT} + {2204186400 -32400 0 AKST} + {2215076400 -28800 1 AKDT} + {2235636000 -32400 0 AKST} + {2246526000 -28800 1 AKDT} + {2267085600 -32400 0 AKST} + {2277975600 -28800 1 AKDT} + {2298535200 -32400 0 AKST} + {2309425200 -28800 1 AKDT} + {2329984800 -32400 0 AKST} + {2341479600 -28800 1 AKDT} + {2362039200 -32400 0 AKST} + {2372929200 -28800 1 AKDT} + {2393488800 -32400 0 AKST} + {2404378800 -28800 1 AKDT} + {2424938400 -32400 0 AKST} + {2435828400 -28800 1 AKDT} + {2456388000 -32400 0 AKST} + {2467278000 -28800 1 AKDT} + {2487837600 -32400 0 AKST} + {2499332400 -28800 1 AKDT} + {2519892000 -32400 0 AKST} + {2530782000 -28800 1 AKDT} + {2551341600 -32400 0 AKST} + {2562231600 -28800 1 AKDT} + {2582791200 -32400 0 AKST} + {2593681200 -28800 1 AKDT} + {2614240800 -32400 0 AKST} + {2625130800 -28800 1 AKDT} + {2645690400 -32400 0 AKST} + {2656580400 -28800 1 AKDT} + {2677140000 -32400 0 AKST} + {2688634800 -28800 1 AKDT} + {2709194400 -32400 0 AKST} + {2720084400 -28800 1 AKDT} + {2740644000 -32400 0 AKST} + {2751534000 -28800 1 AKDT} + {2772093600 -32400 0 AKST} + {2782983600 -28800 1 AKDT} + {2803543200 -32400 0 AKST} + {2814433200 -28800 1 AKDT} + {2834992800 -32400 0 AKST} + {2846487600 -28800 1 AKDT} + {2867047200 -32400 0 AKST} + {2877937200 -28800 1 AKDT} + {2898496800 -32400 0 AKST} + {2909386800 -28800 1 AKDT} + {2929946400 -32400 0 AKST} + {2940836400 -28800 1 AKDT} + {2961396000 -32400 0 AKST} + {2972286000 -28800 1 AKDT} + {2992845600 -32400 0 AKST} + {3003735600 -28800 1 AKDT} + {3024295200 -32400 0 AKST} + {3035790000 -28800 1 AKDT} + {3056349600 -32400 0 AKST} + {3067239600 -28800 1 AKDT} + {3087799200 -32400 0 AKST} + {3098689200 -28800 1 AKDT} + {3119248800 -32400 0 AKST} + {3130138800 -28800 1 AKDT} + {3150698400 -32400 0 AKST} + {3161588400 -28800 1 AKDT} + {3182148000 -32400 0 AKST} + {3193038000 -28800 1 AKDT} + {3213597600 -32400 0 AKST} + {3225092400 -28800 1 AKDT} + {3245652000 -32400 0 AKST} + {3256542000 -28800 1 AKDT} + {3277101600 -32400 0 AKST} + {3287991600 -28800 1 AKDT} + {3308551200 -32400 0 AKST} + {3319441200 -28800 1 AKDT} + {3340000800 -32400 0 AKST} + {3350890800 -28800 1 AKDT} + {3371450400 -32400 0 AKST} + {3382945200 -28800 1 AKDT} + {3403504800 -32400 0 AKST} + {3414394800 -28800 1 AKDT} + {3434954400 -32400 0 AKST} + {3445844400 -28800 1 AKDT} + {3466404000 -32400 0 AKST} + {3477294000 -28800 1 AKDT} + {3497853600 -32400 0 AKST} + {3508743600 -28800 1 AKDT} + {3529303200 -32400 0 AKST} + {3540193200 -28800 1 AKDT} + {3560752800 -32400 0 AKST} + {3572247600 -28800 1 AKDT} + {3592807200 -32400 0 AKST} + {3603697200 -28800 1 AKDT} + {3624256800 -32400 0 AKST} + {3635146800 -28800 1 AKDT} + {3655706400 -32400 0 AKST} + {3666596400 -28800 1 AKDT} + {3687156000 -32400 0 AKST} + {3698046000 -28800 1 AKDT} + {3718605600 -32400 0 AKST} + {3730100400 -28800 1 AKDT} + {3750660000 -32400 0 AKST} + {3761550000 -28800 1 AKDT} + {3782109600 -32400 0 AKST} + {3792999600 -28800 1 AKDT} + {3813559200 -32400 0 AKST} + {3824449200 -28800 1 AKDT} + {3845008800 -32400 0 AKST} + {3855898800 -28800 1 AKDT} + {3876458400 -32400 0 AKST} + {3887348400 -28800 1 AKDT} + {3907908000 -32400 0 AKST} + {3919402800 -28800 1 AKDT} + {3939962400 -32400 0 AKST} + {3950852400 -28800 1 AKDT} + {3971412000 -32400 0 AKST} + {3982302000 -28800 1 AKDT} + {4002861600 -32400 0 AKST} + {4013751600 -28800 1 AKDT} + {4034311200 -32400 0 AKST} + {4045201200 -28800 1 AKDT} + {4065760800 -32400 0 AKST} + {4076650800 -28800 1 AKDT} + {4097210400 -32400 0 AKST} +} diff --git a/library/tzdata/America/Yellowknife b/library/tzdata/America/Yellowknife index 44ca658..a77632a 100644 --- a/library/tzdata/America/Yellowknife +++ b/library/tzdata/America/Yellowknife @@ -1,252 +1,252 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Yellowknife) { - {-9223372036854775808 0 0 zzz} - {-1104537600 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-147891600 -18000 1 MDDT} - {-131562000 -25200 0 MST} - {315558000 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Yellowknife) { + {-9223372036854775808 0 0 zzz} + {-1104537600 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-147891600 -18000 1 MDDT} + {-131562000 -25200 0 MST} + {315558000 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/Antarctica/Casey b/library/tzdata/Antarctica/Casey index 6d383f3..0c046f3 100644 --- a/library/tzdata/Antarctica/Casey +++ b/library/tzdata/Antarctica/Casey @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Casey) { - {-9223372036854775808 0 0 zzz} - {-31536000 28800 0 WST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Casey) { + {-9223372036854775808 0 0 zzz} + {-31536000 28800 0 WST} +} diff --git a/library/tzdata/Antarctica/Davis b/library/tzdata/Antarctica/Davis index f4b7282..05eda36 100644 --- a/library/tzdata/Antarctica/Davis +++ b/library/tzdata/Antarctica/Davis @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Davis) { - {-9223372036854775808 0 0 zzz} - {-409190400 25200 0 DAVT} - {-163062000 0 0 zzz} - {-28857600 25200 0 DAVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Davis) { + {-9223372036854775808 0 0 zzz} + {-409190400 25200 0 DAVT} + {-163062000 0 0 zzz} + {-28857600 25200 0 DAVT} +} diff --git a/library/tzdata/Antarctica/DumontDUrville b/library/tzdata/Antarctica/DumontDUrville index 41dc1e3..ad3f35b 100644 --- a/library/tzdata/Antarctica/DumontDUrville +++ b/library/tzdata/Antarctica/DumontDUrville @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/DumontDUrville) { - {-9223372036854775808 0 0 zzz} - {-725846400 36000 0 PMT} - {-566992800 0 0 zzz} - {-415497600 36000 0 DDUT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/DumontDUrville) { + {-9223372036854775808 0 0 zzz} + {-725846400 36000 0 PMT} + {-566992800 0 0 zzz} + {-415497600 36000 0 DDUT} +} diff --git a/library/tzdata/Antarctica/Mawson b/library/tzdata/Antarctica/Mawson index 1f0c3fe..28bef79 100644 --- a/library/tzdata/Antarctica/Mawson +++ b/library/tzdata/Antarctica/Mawson @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Mawson) { - {-9223372036854775808 0 0 zzz} - {-501206400 21600 0 MAWT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Mawson) { + {-9223372036854775808 0 0 zzz} + {-501206400 21600 0 MAWT} +} diff --git a/library/tzdata/Antarctica/McMurdo b/library/tzdata/Antarctica/McMurdo index 670f7eb..436e8a4 100644 --- a/library/tzdata/Antarctica/McMurdo +++ b/library/tzdata/Antarctica/McMurdo @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/McMurdo) { - {-9223372036854775808 0 0 zzz} - {-441849600 43200 0 NZST} - {152632800 46800 1 NZDT} - {162309600 43200 0 NZST} - {183477600 46800 1 NZDT} - {194968800 43200 0 NZST} - {215532000 46800 1 NZDT} - {226418400 43200 0 NZST} - {246981600 46800 1 NZDT} - {257868000 43200 0 NZST} - {278431200 46800 1 NZDT} - {289317600 43200 0 NZST} - {309880800 46800 1 NZDT} - {320767200 43200 0 NZST} - {341330400 46800 1 NZDT} - {352216800 43200 0 NZST} - {372780000 46800 1 NZDT} - {384271200 43200 0 NZST} - {404834400 46800 1 NZDT} - {415720800 43200 0 NZST} - {436284000 46800 1 NZDT} - {447170400 43200 0 NZST} - {467733600 46800 1 NZDT} - {478620000 43200 0 NZST} - {499183200 46800 1 NZDT} - {510069600 43200 0 NZST} - {530632800 46800 1 NZDT} - {541519200 43200 0 NZST} - {562082400 46800 1 NZDT} - {573573600 43200 0 NZST} - {594136800 46800 1 NZDT} - {605023200 43200 0 NZST} - {623772000 46800 1 NZDT} - {637682400 43200 0 NZST} - {655221600 46800 1 NZDT} - {669132000 43200 0 NZST} - {686671200 46800 1 NZDT} - {700581600 43200 0 NZST} - {718120800 46800 1 NZDT} - {732636000 43200 0 NZST} - {749570400 46800 1 NZDT} - {764085600 43200 0 NZST} - {781020000 46800 1 NZDT} - {795535200 43200 0 NZST} - {812469600 46800 1 NZDT} - {826984800 43200 0 NZST} - {844524000 46800 1 NZDT} - {858434400 43200 0 NZST} - {875973600 46800 1 NZDT} - {889884000 43200 0 NZST} - {907423200 46800 1 NZDT} - {921938400 43200 0 NZST} - {938872800 46800 1 NZDT} - {953388000 43200 0 NZST} - {970322400 46800 1 NZDT} - {984837600 43200 0 NZST} - {1002376800 46800 1 NZDT} - {1016287200 43200 0 NZST} - {1033826400 46800 1 NZDT} - {1047736800 43200 0 NZST} - {1065276000 46800 1 NZDT} - {1079791200 43200 0 NZST} - {1096725600 46800 1 NZDT} - {1111240800 43200 0 NZST} - {1128175200 46800 1 NZDT} - {1142690400 43200 0 NZST} - {1159624800 46800 1 NZDT} - {1174140000 43200 0 NZST} - {1191074400 46800 1 NZDT} - {1207404000 43200 0 NZST} - {1222524000 46800 1 NZDT} - {1238853600 43200 0 NZST} - {1253973600 46800 1 NZDT} - {1270303200 43200 0 NZST} - {1285423200 46800 1 NZDT} - {1301752800 43200 0 NZST} - {1316872800 46800 1 NZDT} - {1333202400 43200 0 NZST} - {1348927200 46800 1 NZDT} - {1365256800 43200 0 NZST} - {1380376800 46800 1 NZDT} - {1396706400 43200 0 NZST} - {1411826400 46800 1 NZDT} - {1428156000 43200 0 NZST} - {1443276000 46800 1 NZDT} - {1459605600 43200 0 NZST} - {1474725600 46800 1 NZDT} - {1491055200 43200 0 NZST} - {1506175200 46800 1 NZDT} - {1522504800 43200 0 NZST} - {1538229600 46800 1 NZDT} - {1554559200 43200 0 NZST} - {1569679200 46800 1 NZDT} - {1586008800 43200 0 NZST} - {1601128800 46800 1 NZDT} - {1617458400 43200 0 NZST} - {1632578400 46800 1 NZDT} - {1648908000 43200 0 NZST} - {1664028000 46800 1 NZDT} - {1680357600 43200 0 NZST} - {1695477600 46800 1 NZDT} - {1712412000 43200 0 NZST} - {1727532000 46800 1 NZDT} - {1743861600 43200 0 NZST} - {1758981600 46800 1 NZDT} - {1775311200 43200 0 NZST} - {1790431200 46800 1 NZDT} - {1806760800 43200 0 NZST} - {1821880800 46800 1 NZDT} - {1838210400 43200 0 NZST} - {1853330400 46800 1 NZDT} - {1869660000 43200 0 NZST} - {1885384800 46800 1 NZDT} - {1901714400 43200 0 NZST} - {1916834400 46800 1 NZDT} - {1933164000 43200 0 NZST} - {1948284000 46800 1 NZDT} - {1964613600 43200 0 NZST} - {1979733600 46800 1 NZDT} - {1996063200 43200 0 NZST} - {2011183200 46800 1 NZDT} - {2027512800 43200 0 NZST} - {2042632800 46800 1 NZDT} - {2058962400 43200 0 NZST} - {2074687200 46800 1 NZDT} - {2091016800 43200 0 NZST} - {2106136800 46800 1 NZDT} - {2122466400 43200 0 NZST} - {2137586400 46800 1 NZDT} - {2153916000 43200 0 NZST} - {2169036000 46800 1 NZDT} - {2185365600 43200 0 NZST} - {2200485600 46800 1 NZDT} - {2216815200 43200 0 NZST} - {2232540000 46800 1 NZDT} - {2248869600 43200 0 NZST} - {2263989600 46800 1 NZDT} - {2280319200 43200 0 NZST} - {2295439200 46800 1 NZDT} - {2311768800 43200 0 NZST} - {2326888800 46800 1 NZDT} - {2343218400 43200 0 NZST} - {2358338400 46800 1 NZDT} - {2374668000 43200 0 NZST} - {2389788000 46800 1 NZDT} - {2406117600 43200 0 NZST} - {2421842400 46800 1 NZDT} - {2438172000 43200 0 NZST} - {2453292000 46800 1 NZDT} - {2469621600 43200 0 NZST} - {2484741600 46800 1 NZDT} - {2501071200 43200 0 NZST} - {2516191200 46800 1 NZDT} - {2532520800 43200 0 NZST} - {2547640800 46800 1 NZDT} - {2563970400 43200 0 NZST} - {2579090400 46800 1 NZDT} - {2596024800 43200 0 NZST} - {2611144800 46800 1 NZDT} - {2627474400 43200 0 NZST} - {2642594400 46800 1 NZDT} - {2658924000 43200 0 NZST} - {2674044000 46800 1 NZDT} - {2690373600 43200 0 NZST} - {2705493600 46800 1 NZDT} - {2721823200 43200 0 NZST} - {2736943200 46800 1 NZDT} - {2753272800 43200 0 NZST} - {2768997600 46800 1 NZDT} - {2785327200 43200 0 NZST} - {2800447200 46800 1 NZDT} - {2816776800 43200 0 NZST} - {2831896800 46800 1 NZDT} - {2848226400 43200 0 NZST} - {2863346400 46800 1 NZDT} - {2879676000 43200 0 NZST} - {2894796000 46800 1 NZDT} - {2911125600 43200 0 NZST} - {2926245600 46800 1 NZDT} - {2942575200 43200 0 NZST} - {2958300000 46800 1 NZDT} - {2974629600 43200 0 NZST} - {2989749600 46800 1 NZDT} - {3006079200 43200 0 NZST} - {3021199200 46800 1 NZDT} - {3037528800 43200 0 NZST} - {3052648800 46800 1 NZDT} - {3068978400 43200 0 NZST} - {3084098400 46800 1 NZDT} - {3100428000 43200 0 NZST} - {3116152800 46800 1 NZDT} - {3132482400 43200 0 NZST} - {3147602400 46800 1 NZDT} - {3163932000 43200 0 NZST} - {3179052000 46800 1 NZDT} - {3195381600 43200 0 NZST} - {3210501600 46800 1 NZDT} - {3226831200 43200 0 NZST} - {3241951200 46800 1 NZDT} - {3258280800 43200 0 NZST} - {3273400800 46800 1 NZDT} - {3289730400 43200 0 NZST} - {3305455200 46800 1 NZDT} - {3321784800 43200 0 NZST} - {3336904800 46800 1 NZDT} - {3353234400 43200 0 NZST} - {3368354400 46800 1 NZDT} - {3384684000 43200 0 NZST} - {3399804000 46800 1 NZDT} - {3416133600 43200 0 NZST} - {3431253600 46800 1 NZDT} - {3447583200 43200 0 NZST} - {3462703200 46800 1 NZDT} - {3479637600 43200 0 NZST} - {3494757600 46800 1 NZDT} - {3511087200 43200 0 NZST} - {3526207200 46800 1 NZDT} - {3542536800 43200 0 NZST} - {3557656800 46800 1 NZDT} - {3573986400 43200 0 NZST} - {3589106400 46800 1 NZDT} - {3605436000 43200 0 NZST} - {3620556000 46800 1 NZDT} - {3636885600 43200 0 NZST} - {3652610400 46800 1 NZDT} - {3668940000 43200 0 NZST} - {3684060000 46800 1 NZDT} - {3700389600 43200 0 NZST} - {3715509600 46800 1 NZDT} - {3731839200 43200 0 NZST} - {3746959200 46800 1 NZDT} - {3763288800 43200 0 NZST} - {3778408800 46800 1 NZDT} - {3794738400 43200 0 NZST} - {3809858400 46800 1 NZDT} - {3826188000 43200 0 NZST} - {3841912800 46800 1 NZDT} - {3858242400 43200 0 NZST} - {3873362400 46800 1 NZDT} - {3889692000 43200 0 NZST} - {3904812000 46800 1 NZDT} - {3921141600 43200 0 NZST} - {3936261600 46800 1 NZDT} - {3952591200 43200 0 NZST} - {3967711200 46800 1 NZDT} - {3984040800 43200 0 NZST} - {3999765600 46800 1 NZDT} - {4016095200 43200 0 NZST} - {4031215200 46800 1 NZDT} - {4047544800 43200 0 NZST} - {4062664800 46800 1 NZDT} - {4078994400 43200 0 NZST} - {4094114400 46800 1 NZDT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/McMurdo) { + {-9223372036854775808 0 0 zzz} + {-441849600 43200 0 NZST} + {152632800 46800 1 NZDT} + {162309600 43200 0 NZST} + {183477600 46800 1 NZDT} + {194968800 43200 0 NZST} + {215532000 46800 1 NZDT} + {226418400 43200 0 NZST} + {246981600 46800 1 NZDT} + {257868000 43200 0 NZST} + {278431200 46800 1 NZDT} + {289317600 43200 0 NZST} + {309880800 46800 1 NZDT} + {320767200 43200 0 NZST} + {341330400 46800 1 NZDT} + {352216800 43200 0 NZST} + {372780000 46800 1 NZDT} + {384271200 43200 0 NZST} + {404834400 46800 1 NZDT} + {415720800 43200 0 NZST} + {436284000 46800 1 NZDT} + {447170400 43200 0 NZST} + {467733600 46800 1 NZDT} + {478620000 43200 0 NZST} + {499183200 46800 1 NZDT} + {510069600 43200 0 NZST} + {530632800 46800 1 NZDT} + {541519200 43200 0 NZST} + {562082400 46800 1 NZDT} + {573573600 43200 0 NZST} + {594136800 46800 1 NZDT} + {605023200 43200 0 NZST} + {623772000 46800 1 NZDT} + {637682400 43200 0 NZST} + {655221600 46800 1 NZDT} + {669132000 43200 0 NZST} + {686671200 46800 1 NZDT} + {700581600 43200 0 NZST} + {718120800 46800 1 NZDT} + {732636000 43200 0 NZST} + {749570400 46800 1 NZDT} + {764085600 43200 0 NZST} + {781020000 46800 1 NZDT} + {795535200 43200 0 NZST} + {812469600 46800 1 NZDT} + {826984800 43200 0 NZST} + {844524000 46800 1 NZDT} + {858434400 43200 0 NZST} + {875973600 46800 1 NZDT} + {889884000 43200 0 NZST} + {907423200 46800 1 NZDT} + {921938400 43200 0 NZST} + {938872800 46800 1 NZDT} + {953388000 43200 0 NZST} + {970322400 46800 1 NZDT} + {984837600 43200 0 NZST} + {1002376800 46800 1 NZDT} + {1016287200 43200 0 NZST} + {1033826400 46800 1 NZDT} + {1047736800 43200 0 NZST} + {1065276000 46800 1 NZDT} + {1079791200 43200 0 NZST} + {1096725600 46800 1 NZDT} + {1111240800 43200 0 NZST} + {1128175200 46800 1 NZDT} + {1142690400 43200 0 NZST} + {1159624800 46800 1 NZDT} + {1174140000 43200 0 NZST} + {1191074400 46800 1 NZDT} + {1207404000 43200 0 NZST} + {1222524000 46800 1 NZDT} + {1238853600 43200 0 NZST} + {1253973600 46800 1 NZDT} + {1270303200 43200 0 NZST} + {1285423200 46800 1 NZDT} + {1301752800 43200 0 NZST} + {1316872800 46800 1 NZDT} + {1333202400 43200 0 NZST} + {1348927200 46800 1 NZDT} + {1365256800 43200 0 NZST} + {1380376800 46800 1 NZDT} + {1396706400 43200 0 NZST} + {1411826400 46800 1 NZDT} + {1428156000 43200 0 NZST} + {1443276000 46800 1 NZDT} + {1459605600 43200 0 NZST} + {1474725600 46800 1 NZDT} + {1491055200 43200 0 NZST} + {1506175200 46800 1 NZDT} + {1522504800 43200 0 NZST} + {1538229600 46800 1 NZDT} + {1554559200 43200 0 NZST} + {1569679200 46800 1 NZDT} + {1586008800 43200 0 NZST} + {1601128800 46800 1 NZDT} + {1617458400 43200 0 NZST} + {1632578400 46800 1 NZDT} + {1648908000 43200 0 NZST} + {1664028000 46800 1 NZDT} + {1680357600 43200 0 NZST} + {1695477600 46800 1 NZDT} + {1712412000 43200 0 NZST} + {1727532000 46800 1 NZDT} + {1743861600 43200 0 NZST} + {1758981600 46800 1 NZDT} + {1775311200 43200 0 NZST} + {1790431200 46800 1 NZDT} + {1806760800 43200 0 NZST} + {1821880800 46800 1 NZDT} + {1838210400 43200 0 NZST} + {1853330400 46800 1 NZDT} + {1869660000 43200 0 NZST} + {1885384800 46800 1 NZDT} + {1901714400 43200 0 NZST} + {1916834400 46800 1 NZDT} + {1933164000 43200 0 NZST} + {1948284000 46800 1 NZDT} + {1964613600 43200 0 NZST} + {1979733600 46800 1 NZDT} + {1996063200 43200 0 NZST} + {2011183200 46800 1 NZDT} + {2027512800 43200 0 NZST} + {2042632800 46800 1 NZDT} + {2058962400 43200 0 NZST} + {2074687200 46800 1 NZDT} + {2091016800 43200 0 NZST} + {2106136800 46800 1 NZDT} + {2122466400 43200 0 NZST} + {2137586400 46800 1 NZDT} + {2153916000 43200 0 NZST} + {2169036000 46800 1 NZDT} + {2185365600 43200 0 NZST} + {2200485600 46800 1 NZDT} + {2216815200 43200 0 NZST} + {2232540000 46800 1 NZDT} + {2248869600 43200 0 NZST} + {2263989600 46800 1 NZDT} + {2280319200 43200 0 NZST} + {2295439200 46800 1 NZDT} + {2311768800 43200 0 NZST} + {2326888800 46800 1 NZDT} + {2343218400 43200 0 NZST} + {2358338400 46800 1 NZDT} + {2374668000 43200 0 NZST} + {2389788000 46800 1 NZDT} + {2406117600 43200 0 NZST} + {2421842400 46800 1 NZDT} + {2438172000 43200 0 NZST} + {2453292000 46800 1 NZDT} + {2469621600 43200 0 NZST} + {2484741600 46800 1 NZDT} + {2501071200 43200 0 NZST} + {2516191200 46800 1 NZDT} + {2532520800 43200 0 NZST} + {2547640800 46800 1 NZDT} + {2563970400 43200 0 NZST} + {2579090400 46800 1 NZDT} + {2596024800 43200 0 NZST} + {2611144800 46800 1 NZDT} + {2627474400 43200 0 NZST} + {2642594400 46800 1 NZDT} + {2658924000 43200 0 NZST} + {2674044000 46800 1 NZDT} + {2690373600 43200 0 NZST} + {2705493600 46800 1 NZDT} + {2721823200 43200 0 NZST} + {2736943200 46800 1 NZDT} + {2753272800 43200 0 NZST} + {2768997600 46800 1 NZDT} + {2785327200 43200 0 NZST} + {2800447200 46800 1 NZDT} + {2816776800 43200 0 NZST} + {2831896800 46800 1 NZDT} + {2848226400 43200 0 NZST} + {2863346400 46800 1 NZDT} + {2879676000 43200 0 NZST} + {2894796000 46800 1 NZDT} + {2911125600 43200 0 NZST} + {2926245600 46800 1 NZDT} + {2942575200 43200 0 NZST} + {2958300000 46800 1 NZDT} + {2974629600 43200 0 NZST} + {2989749600 46800 1 NZDT} + {3006079200 43200 0 NZST} + {3021199200 46800 1 NZDT} + {3037528800 43200 0 NZST} + {3052648800 46800 1 NZDT} + {3068978400 43200 0 NZST} + {3084098400 46800 1 NZDT} + {3100428000 43200 0 NZST} + {3116152800 46800 1 NZDT} + {3132482400 43200 0 NZST} + {3147602400 46800 1 NZDT} + {3163932000 43200 0 NZST} + {3179052000 46800 1 NZDT} + {3195381600 43200 0 NZST} + {3210501600 46800 1 NZDT} + {3226831200 43200 0 NZST} + {3241951200 46800 1 NZDT} + {3258280800 43200 0 NZST} + {3273400800 46800 1 NZDT} + {3289730400 43200 0 NZST} + {3305455200 46800 1 NZDT} + {3321784800 43200 0 NZST} + {3336904800 46800 1 NZDT} + {3353234400 43200 0 NZST} + {3368354400 46800 1 NZDT} + {3384684000 43200 0 NZST} + {3399804000 46800 1 NZDT} + {3416133600 43200 0 NZST} + {3431253600 46800 1 NZDT} + {3447583200 43200 0 NZST} + {3462703200 46800 1 NZDT} + {3479637600 43200 0 NZST} + {3494757600 46800 1 NZDT} + {3511087200 43200 0 NZST} + {3526207200 46800 1 NZDT} + {3542536800 43200 0 NZST} + {3557656800 46800 1 NZDT} + {3573986400 43200 0 NZST} + {3589106400 46800 1 NZDT} + {3605436000 43200 0 NZST} + {3620556000 46800 1 NZDT} + {3636885600 43200 0 NZST} + {3652610400 46800 1 NZDT} + {3668940000 43200 0 NZST} + {3684060000 46800 1 NZDT} + {3700389600 43200 0 NZST} + {3715509600 46800 1 NZDT} + {3731839200 43200 0 NZST} + {3746959200 46800 1 NZDT} + {3763288800 43200 0 NZST} + {3778408800 46800 1 NZDT} + {3794738400 43200 0 NZST} + {3809858400 46800 1 NZDT} + {3826188000 43200 0 NZST} + {3841912800 46800 1 NZDT} + {3858242400 43200 0 NZST} + {3873362400 46800 1 NZDT} + {3889692000 43200 0 NZST} + {3904812000 46800 1 NZDT} + {3921141600 43200 0 NZST} + {3936261600 46800 1 NZDT} + {3952591200 43200 0 NZST} + {3967711200 46800 1 NZDT} + {3984040800 43200 0 NZST} + {3999765600 46800 1 NZDT} + {4016095200 43200 0 NZST} + {4031215200 46800 1 NZDT} + {4047544800 43200 0 NZST} + {4062664800 46800 1 NZDT} + {4078994400 43200 0 NZST} + {4094114400 46800 1 NZDT} +} diff --git a/library/tzdata/Antarctica/Palmer b/library/tzdata/Antarctica/Palmer index 1e24754..7cb3d22 100644 --- a/library/tzdata/Antarctica/Palmer +++ b/library/tzdata/Antarctica/Palmer @@ -1,254 +1,254 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Palmer) { - {-9223372036854775808 0 0 zzz} - {-157766400 -14400 0 ART} - {-152654400 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {389070000 -14400 0 CLT} - {403070400 -10800 1 CLST} - {416372400 -14400 0 CLT} - {434520000 -10800 1 CLST} - {447822000 -14400 0 CLT} - {466574400 -10800 1 CLST} - {479271600 -14400 0 CLT} - {498024000 -10800 1 CLST} - {510721200 -14400 0 CLT} - {529473600 -10800 1 CLST} - {545194800 -14400 0 CLT} - {560923200 -10800 1 CLST} - {574225200 -14400 0 CLT} - {591768000 -10800 1 CLST} - {605674800 -14400 0 CLT} - {624427200 -10800 1 CLST} - {637729200 -14400 0 CLT} - {653457600 -10800 1 CLST} - {668574000 -14400 0 CLT} - {687326400 -10800 1 CLST} - {700628400 -14400 0 CLT} - {718776000 -10800 1 CLST} - {732078000 -14400 0 CLT} - {750225600 -10800 1 CLST} - {763527600 -14400 0 CLT} - {781675200 -10800 1 CLST} - {794977200 -14400 0 CLT} - {813729600 -10800 1 CLST} - {826426800 -14400 0 CLT} - {845179200 -10800 1 CLST} - {859690800 -14400 0 CLT} - {876628800 -10800 1 CLST} - {889930800 -14400 0 CLT} - {906868800 -10800 1 CLST} - {923194800 -14400 0 CLT} - {939528000 -10800 1 CLST} - {952830000 -14400 0 CLT} - {971582400 -10800 1 CLST} - {984279600 -14400 0 CLT} - {1003032000 -10800 1 CLST} - {1015729200 -14400 0 CLT} - {1034481600 -10800 1 CLST} - {1047178800 -14400 0 CLT} - {1065931200 -10800 1 CLST} - {1079233200 -14400 0 CLT} - {1097380800 -10800 1 CLST} - {1110682800 -14400 0 CLT} - {1128830400 -10800 1 CLST} - {1142132400 -14400 0 CLT} - {1160884800 -10800 1 CLST} - {1173582000 -14400 0 CLT} - {1192334400 -10800 1 CLST} - {1205031600 -14400 0 CLT} - {1223784000 -10800 1 CLST} - {1237086000 -14400 0 CLT} - {1255233600 -10800 1 CLST} - {1268535600 -14400 0 CLT} - {1286683200 -10800 1 CLST} - {1299985200 -14400 0 CLT} - {1318132800 -10800 1 CLST} - {1331434800 -14400 0 CLT} - {1350187200 -10800 1 CLST} - {1362884400 -14400 0 CLT} - {1381636800 -10800 1 CLST} - {1394334000 -14400 0 CLT} - {1413086400 -10800 1 CLST} - {1426388400 -14400 0 CLT} - {1444536000 -10800 1 CLST} - {1457838000 -14400 0 CLT} - {1475985600 -10800 1 CLST} - {1489287600 -14400 0 CLT} - {1508040000 -10800 1 CLST} - {1520737200 -14400 0 CLT} - {1539489600 -10800 1 CLST} - {1552186800 -14400 0 CLT} - {1570939200 -10800 1 CLST} - {1584241200 -14400 0 CLT} - {1602388800 -10800 1 CLST} - {1615690800 -14400 0 CLT} - {1633838400 -10800 1 CLST} - {1647140400 -14400 0 CLT} - {1665288000 -10800 1 CLST} - {1678590000 -14400 0 CLT} - {1697342400 -10800 1 CLST} - {1710039600 -14400 0 CLT} - {1728792000 -10800 1 CLST} - {1741489200 -14400 0 CLT} - {1760241600 -10800 1 CLST} - {1773543600 -14400 0 CLT} - {1791691200 -10800 1 CLST} - {1804993200 -14400 0 CLT} - {1823140800 -10800 1 CLST} - {1836442800 -14400 0 CLT} - {1855195200 -10800 1 CLST} - {1867892400 -14400 0 CLT} - {1886644800 -10800 1 CLST} - {1899342000 -14400 0 CLT} - {1918094400 -10800 1 CLST} - {1930791600 -14400 0 CLT} - {1949544000 -10800 1 CLST} - {1962846000 -14400 0 CLT} - {1980993600 -10800 1 CLST} - {1994295600 -14400 0 CLT} - {2012443200 -10800 1 CLST} - {2025745200 -14400 0 CLT} - {2044497600 -10800 1 CLST} - {2057194800 -14400 0 CLT} - {2075947200 -10800 1 CLST} - {2088644400 -14400 0 CLT} - {2107396800 -10800 1 CLST} - {2120698800 -14400 0 CLT} - {2138846400 -10800 1 CLST} - {2152148400 -14400 0 CLT} - {2170296000 -10800 1 CLST} - {2183598000 -14400 0 CLT} - {2201745600 -10800 1 CLST} - {2215047600 -14400 0 CLT} - {2233800000 -10800 1 CLST} - {2246497200 -14400 0 CLT} - {2265249600 -10800 1 CLST} - {2277946800 -14400 0 CLT} - {2296699200 -10800 1 CLST} - {2310001200 -14400 0 CLT} - {2328148800 -10800 1 CLST} - {2341450800 -14400 0 CLT} - {2359598400 -10800 1 CLST} - {2372900400 -14400 0 CLT} - {2391652800 -10800 1 CLST} - {2404350000 -14400 0 CLT} - {2423102400 -10800 1 CLST} - {2435799600 -14400 0 CLT} - {2454552000 -10800 1 CLST} - {2467854000 -14400 0 CLT} - {2486001600 -10800 1 CLST} - {2499303600 -14400 0 CLT} - {2517451200 -10800 1 CLST} - {2530753200 -14400 0 CLT} - {2548900800 -10800 1 CLST} - {2562202800 -14400 0 CLT} - {2580955200 -10800 1 CLST} - {2593652400 -14400 0 CLT} - {2612404800 -10800 1 CLST} - {2625102000 -14400 0 CLT} - {2643854400 -10800 1 CLST} - {2657156400 -14400 0 CLT} - {2675304000 -10800 1 CLST} - {2688606000 -14400 0 CLT} - {2706753600 -10800 1 CLST} - {2720055600 -14400 0 CLT} - {2738808000 -10800 1 CLST} - {2751505200 -14400 0 CLT} - {2770257600 -10800 1 CLST} - {2782954800 -14400 0 CLT} - {2801707200 -10800 1 CLST} - {2814404400 -14400 0 CLT} - {2833156800 -10800 1 CLST} - {2846458800 -14400 0 CLT} - {2864606400 -10800 1 CLST} - {2877908400 -14400 0 CLT} - {2896056000 -10800 1 CLST} - {2909358000 -14400 0 CLT} - {2928110400 -10800 1 CLST} - {2940807600 -14400 0 CLT} - {2959560000 -10800 1 CLST} - {2972257200 -14400 0 CLT} - {2991009600 -10800 1 CLST} - {3004311600 -14400 0 CLT} - {3022459200 -10800 1 CLST} - {3035761200 -14400 0 CLT} - {3053908800 -10800 1 CLST} - {3067210800 -14400 0 CLT} - {3085358400 -10800 1 CLST} - {3098660400 -14400 0 CLT} - {3117412800 -10800 1 CLST} - {3130110000 -14400 0 CLT} - {3148862400 -10800 1 CLST} - {3161559600 -14400 0 CLT} - {3180312000 -10800 1 CLST} - {3193614000 -14400 0 CLT} - {3211761600 -10800 1 CLST} - {3225063600 -14400 0 CLT} - {3243211200 -10800 1 CLST} - {3256513200 -14400 0 CLT} - {3275265600 -10800 1 CLST} - {3287962800 -14400 0 CLT} - {3306715200 -10800 1 CLST} - {3319412400 -14400 0 CLT} - {3338164800 -10800 1 CLST} - {3351466800 -14400 0 CLT} - {3369614400 -10800 1 CLST} - {3382916400 -14400 0 CLT} - {3401064000 -10800 1 CLST} - {3414366000 -14400 0 CLT} - {3432513600 -10800 1 CLST} - {3445815600 -14400 0 CLT} - {3464568000 -10800 1 CLST} - {3477265200 -14400 0 CLT} - {3496017600 -10800 1 CLST} - {3508714800 -14400 0 CLT} - {3527467200 -10800 1 CLST} - {3540769200 -14400 0 CLT} - {3558916800 -10800 1 CLST} - {3572218800 -14400 0 CLT} - {3590366400 -10800 1 CLST} - {3603668400 -14400 0 CLT} - {3622420800 -10800 1 CLST} - {3635118000 -14400 0 CLT} - {3653870400 -10800 1 CLST} - {3666567600 -14400 0 CLT} - {3685320000 -10800 1 CLST} - {3698017200 -14400 0 CLT} - {3716769600 -10800 1 CLST} - {3730071600 -14400 0 CLT} - {3748219200 -10800 1 CLST} - {3761521200 -14400 0 CLT} - {3779668800 -10800 1 CLST} - {3792970800 -14400 0 CLT} - {3811723200 -10800 1 CLST} - {3824420400 -14400 0 CLT} - {3843172800 -10800 1 CLST} - {3855870000 -14400 0 CLT} - {3874622400 -10800 1 CLST} - {3887924400 -14400 0 CLT} - {3906072000 -10800 1 CLST} - {3919374000 -14400 0 CLT} - {3937521600 -10800 1 CLST} - {3950823600 -14400 0 CLT} - {3968971200 -10800 1 CLST} - {3982273200 -14400 0 CLT} - {4001025600 -10800 1 CLST} - {4013722800 -14400 0 CLT} - {4032475200 -10800 1 CLST} - {4045172400 -14400 0 CLT} - {4063924800 -10800 1 CLST} - {4077226800 -14400 0 CLT} - {4095374400 -10800 1 CLST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Palmer) { + {-9223372036854775808 0 0 zzz} + {-157766400 -14400 0 ART} + {-152654400 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {389070000 -14400 0 CLT} + {403070400 -10800 1 CLST} + {416372400 -14400 0 CLT} + {434520000 -10800 1 CLST} + {447822000 -14400 0 CLT} + {466574400 -10800 1 CLST} + {479271600 -14400 0 CLT} + {498024000 -10800 1 CLST} + {510721200 -14400 0 CLT} + {529473600 -10800 1 CLST} + {545194800 -14400 0 CLT} + {560923200 -10800 1 CLST} + {574225200 -14400 0 CLT} + {591768000 -10800 1 CLST} + {605674800 -14400 0 CLT} + {624427200 -10800 1 CLST} + {637729200 -14400 0 CLT} + {653457600 -10800 1 CLST} + {668574000 -14400 0 CLT} + {687326400 -10800 1 CLST} + {700628400 -14400 0 CLT} + {718776000 -10800 1 CLST} + {732078000 -14400 0 CLT} + {750225600 -10800 1 CLST} + {763527600 -14400 0 CLT} + {781675200 -10800 1 CLST} + {794977200 -14400 0 CLT} + {813729600 -10800 1 CLST} + {826426800 -14400 0 CLT} + {845179200 -10800 1 CLST} + {859690800 -14400 0 CLT} + {876628800 -10800 1 CLST} + {889930800 -14400 0 CLT} + {906868800 -10800 1 CLST} + {923194800 -14400 0 CLT} + {939528000 -10800 1 CLST} + {952830000 -14400 0 CLT} + {971582400 -10800 1 CLST} + {984279600 -14400 0 CLT} + {1003032000 -10800 1 CLST} + {1015729200 -14400 0 CLT} + {1034481600 -10800 1 CLST} + {1047178800 -14400 0 CLT} + {1065931200 -10800 1 CLST} + {1079233200 -14400 0 CLT} + {1097380800 -10800 1 CLST} + {1110682800 -14400 0 CLT} + {1128830400 -10800 1 CLST} + {1142132400 -14400 0 CLT} + {1160884800 -10800 1 CLST} + {1173582000 -14400 0 CLT} + {1192334400 -10800 1 CLST} + {1205031600 -14400 0 CLT} + {1223784000 -10800 1 CLST} + {1237086000 -14400 0 CLT} + {1255233600 -10800 1 CLST} + {1268535600 -14400 0 CLT} + {1286683200 -10800 1 CLST} + {1299985200 -14400 0 CLT} + {1318132800 -10800 1 CLST} + {1331434800 -14400 0 CLT} + {1350187200 -10800 1 CLST} + {1362884400 -14400 0 CLT} + {1381636800 -10800 1 CLST} + {1394334000 -14400 0 CLT} + {1413086400 -10800 1 CLST} + {1426388400 -14400 0 CLT} + {1444536000 -10800 1 CLST} + {1457838000 -14400 0 CLT} + {1475985600 -10800 1 CLST} + {1489287600 -14400 0 CLT} + {1508040000 -10800 1 CLST} + {1520737200 -14400 0 CLT} + {1539489600 -10800 1 CLST} + {1552186800 -14400 0 CLT} + {1570939200 -10800 1 CLST} + {1584241200 -14400 0 CLT} + {1602388800 -10800 1 CLST} + {1615690800 -14400 0 CLT} + {1633838400 -10800 1 CLST} + {1647140400 -14400 0 CLT} + {1665288000 -10800 1 CLST} + {1678590000 -14400 0 CLT} + {1697342400 -10800 1 CLST} + {1710039600 -14400 0 CLT} + {1728792000 -10800 1 CLST} + {1741489200 -14400 0 CLT} + {1760241600 -10800 1 CLST} + {1773543600 -14400 0 CLT} + {1791691200 -10800 1 CLST} + {1804993200 -14400 0 CLT} + {1823140800 -10800 1 CLST} + {1836442800 -14400 0 CLT} + {1855195200 -10800 1 CLST} + {1867892400 -14400 0 CLT} + {1886644800 -10800 1 CLST} + {1899342000 -14400 0 CLT} + {1918094400 -10800 1 CLST} + {1930791600 -14400 0 CLT} + {1949544000 -10800 1 CLST} + {1962846000 -14400 0 CLT} + {1980993600 -10800 1 CLST} + {1994295600 -14400 0 CLT} + {2012443200 -10800 1 CLST} + {2025745200 -14400 0 CLT} + {2044497600 -10800 1 CLST} + {2057194800 -14400 0 CLT} + {2075947200 -10800 1 CLST} + {2088644400 -14400 0 CLT} + {2107396800 -10800 1 CLST} + {2120698800 -14400 0 CLT} + {2138846400 -10800 1 CLST} + {2152148400 -14400 0 CLT} + {2170296000 -10800 1 CLST} + {2183598000 -14400 0 CLT} + {2201745600 -10800 1 CLST} + {2215047600 -14400 0 CLT} + {2233800000 -10800 1 CLST} + {2246497200 -14400 0 CLT} + {2265249600 -10800 1 CLST} + {2277946800 -14400 0 CLT} + {2296699200 -10800 1 CLST} + {2310001200 -14400 0 CLT} + {2328148800 -10800 1 CLST} + {2341450800 -14400 0 CLT} + {2359598400 -10800 1 CLST} + {2372900400 -14400 0 CLT} + {2391652800 -10800 1 CLST} + {2404350000 -14400 0 CLT} + {2423102400 -10800 1 CLST} + {2435799600 -14400 0 CLT} + {2454552000 -10800 1 CLST} + {2467854000 -14400 0 CLT} + {2486001600 -10800 1 CLST} + {2499303600 -14400 0 CLT} + {2517451200 -10800 1 CLST} + {2530753200 -14400 0 CLT} + {2548900800 -10800 1 CLST} + {2562202800 -14400 0 CLT} + {2580955200 -10800 1 CLST} + {2593652400 -14400 0 CLT} + {2612404800 -10800 1 CLST} + {2625102000 -14400 0 CLT} + {2643854400 -10800 1 CLST} + {2657156400 -14400 0 CLT} + {2675304000 -10800 1 CLST} + {2688606000 -14400 0 CLT} + {2706753600 -10800 1 CLST} + {2720055600 -14400 0 CLT} + {2738808000 -10800 1 CLST} + {2751505200 -14400 0 CLT} + {2770257600 -10800 1 CLST} + {2782954800 -14400 0 CLT} + {2801707200 -10800 1 CLST} + {2814404400 -14400 0 CLT} + {2833156800 -10800 1 CLST} + {2846458800 -14400 0 CLT} + {2864606400 -10800 1 CLST} + {2877908400 -14400 0 CLT} + {2896056000 -10800 1 CLST} + {2909358000 -14400 0 CLT} + {2928110400 -10800 1 CLST} + {2940807600 -14400 0 CLT} + {2959560000 -10800 1 CLST} + {2972257200 -14400 0 CLT} + {2991009600 -10800 1 CLST} + {3004311600 -14400 0 CLT} + {3022459200 -10800 1 CLST} + {3035761200 -14400 0 CLT} + {3053908800 -10800 1 CLST} + {3067210800 -14400 0 CLT} + {3085358400 -10800 1 CLST} + {3098660400 -14400 0 CLT} + {3117412800 -10800 1 CLST} + {3130110000 -14400 0 CLT} + {3148862400 -10800 1 CLST} + {3161559600 -14400 0 CLT} + {3180312000 -10800 1 CLST} + {3193614000 -14400 0 CLT} + {3211761600 -10800 1 CLST} + {3225063600 -14400 0 CLT} + {3243211200 -10800 1 CLST} + {3256513200 -14400 0 CLT} + {3275265600 -10800 1 CLST} + {3287962800 -14400 0 CLT} + {3306715200 -10800 1 CLST} + {3319412400 -14400 0 CLT} + {3338164800 -10800 1 CLST} + {3351466800 -14400 0 CLT} + {3369614400 -10800 1 CLST} + {3382916400 -14400 0 CLT} + {3401064000 -10800 1 CLST} + {3414366000 -14400 0 CLT} + {3432513600 -10800 1 CLST} + {3445815600 -14400 0 CLT} + {3464568000 -10800 1 CLST} + {3477265200 -14400 0 CLT} + {3496017600 -10800 1 CLST} + {3508714800 -14400 0 CLT} + {3527467200 -10800 1 CLST} + {3540769200 -14400 0 CLT} + {3558916800 -10800 1 CLST} + {3572218800 -14400 0 CLT} + {3590366400 -10800 1 CLST} + {3603668400 -14400 0 CLT} + {3622420800 -10800 1 CLST} + {3635118000 -14400 0 CLT} + {3653870400 -10800 1 CLST} + {3666567600 -14400 0 CLT} + {3685320000 -10800 1 CLST} + {3698017200 -14400 0 CLT} + {3716769600 -10800 1 CLST} + {3730071600 -14400 0 CLT} + {3748219200 -10800 1 CLST} + {3761521200 -14400 0 CLT} + {3779668800 -10800 1 CLST} + {3792970800 -14400 0 CLT} + {3811723200 -10800 1 CLST} + {3824420400 -14400 0 CLT} + {3843172800 -10800 1 CLST} + {3855870000 -14400 0 CLT} + {3874622400 -10800 1 CLST} + {3887924400 -14400 0 CLT} + {3906072000 -10800 1 CLST} + {3919374000 -14400 0 CLT} + {3937521600 -10800 1 CLST} + {3950823600 -14400 0 CLT} + {3968971200 -10800 1 CLST} + {3982273200 -14400 0 CLT} + {4001025600 -10800 1 CLST} + {4013722800 -14400 0 CLT} + {4032475200 -10800 1 CLST} + {4045172400 -14400 0 CLT} + {4063924800 -10800 1 CLST} + {4077226800 -14400 0 CLT} + {4095374400 -10800 1 CLST} +} diff --git a/library/tzdata/Antarctica/Rothera b/library/tzdata/Antarctica/Rothera index 24d7f3e..4f60fac 100644 --- a/library/tzdata/Antarctica/Rothera +++ b/library/tzdata/Antarctica/Rothera @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Rothera) { - {-9223372036854775808 0 0 zzz} - {218246400 -10800 0 ROTT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Rothera) { + {-9223372036854775808 0 0 zzz} + {218246400 -10800 0 ROTT} +} diff --git a/library/tzdata/Antarctica/South_Pole b/library/tzdata/Antarctica/South_Pole index 34d0db1..4b2cbfb 100644 --- a/library/tzdata/Antarctica/South_Pole +++ b/library/tzdata/Antarctica/South_Pole @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Antarctica/McMurdo)]} { - LoadTimeZoneFile Antarctica/McMurdo -} -set TZData(:Antarctica/South_Pole) $TZData(:Antarctica/McMurdo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Antarctica/McMurdo)]} { + LoadTimeZoneFile Antarctica/McMurdo +} +set TZData(:Antarctica/South_Pole) $TZData(:Antarctica/McMurdo) diff --git a/library/tzdata/Antarctica/Syowa b/library/tzdata/Antarctica/Syowa index 4d046b5..e649e47 100644 --- a/library/tzdata/Antarctica/Syowa +++ b/library/tzdata/Antarctica/Syowa @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Syowa) { - {-9223372036854775808 0 0 zzz} - {-407808000 10800 0 SYOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Syowa) { + {-9223372036854775808 0 0 zzz} + {-407808000 10800 0 SYOT} +} diff --git a/library/tzdata/Antarctica/Vostok b/library/tzdata/Antarctica/Vostok index f846f65..36297a9 100644 --- a/library/tzdata/Antarctica/Vostok +++ b/library/tzdata/Antarctica/Vostok @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Vostok) { - {-9223372036854775808 0 0 zzz} - {-380073600 21600 0 VOST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Vostok) { + {-9223372036854775808 0 0 zzz} + {-380073600 21600 0 VOST} +} diff --git a/library/tzdata/Arctic/Longyearbyen b/library/tzdata/Arctic/Longyearbyen index 51f83dc..e628b96 100644 --- a/library/tzdata/Arctic/Longyearbyen +++ b/library/tzdata/Arctic/Longyearbyen @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Oslo)]} { - LoadTimeZoneFile Europe/Oslo -} -set TZData(:Arctic/Longyearbyen) $TZData(:Europe/Oslo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Oslo)]} { + LoadTimeZoneFile Europe/Oslo +} +set TZData(:Arctic/Longyearbyen) $TZData(:Europe/Oslo) diff --git a/library/tzdata/Asia/Aden b/library/tzdata/Asia/Aden index e939235..333ea02 100644 --- a/library/tzdata/Asia/Aden +++ b/library/tzdata/Asia/Aden @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Aden) { - {-9223372036854775808 10848 0 LMT} - {-631162848 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Aden) { + {-9223372036854775808 10848 0 LMT} + {-631162848 10800 0 AST} +} diff --git a/library/tzdata/Asia/Almaty b/library/tzdata/Asia/Almaty index 68dee29..ab9b5d0 100644 --- a/library/tzdata/Asia/Almaty +++ b/library/tzdata/Asia/Almaty @@ -1,56 +1,56 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Almaty) { - {-9223372036854775808 18468 0 LMT} - {-1441170468 18000 0 ALMT} - {-1247547600 21600 0 ALMT} - {354909600 25200 1 ALMST} - {370717200 21600 0 ALMT} - {386445600 25200 1 ALMST} - {402253200 21600 0 ALMT} - {417981600 25200 1 ALMST} - {433789200 21600 0 ALMT} - {449604000 25200 1 ALMST} - {465336000 21600 0 ALMT} - {481060800 25200 1 ALMST} - {496785600 21600 0 ALMT} - {512510400 25200 1 ALMST} - {528235200 21600 0 ALMT} - {543960000 25200 1 ALMST} - {559684800 21600 0 ALMT} - {575409600 25200 1 ALMST} - {591134400 21600 0 ALMT} - {606859200 25200 1 ALMST} - {622584000 21600 0 ALMT} - {638308800 25200 1 ALMST} - {654638400 21600 0 ALMT} - {662666400 21600 0 ALMT} - {694202400 21600 0 ALMT} - {701802000 25200 1 ALMST} - {717523200 21600 0 ALMT} - {733262400 25200 1 ALMST} - {748987200 21600 0 ALMT} - {764712000 25200 1 ALMST} - {780436800 21600 0 ALMT} - {796161600 25200 1 ALMST} - {811886400 21600 0 ALMT} - {828216000 25200 1 ALMST} - {846360000 21600 0 ALMT} - {859665600 25200 1 ALMST} - {877809600 21600 0 ALMT} - {891115200 25200 1 ALMST} - {909259200 21600 0 ALMT} - {922564800 25200 1 ALMST} - {941313600 21600 0 ALMT} - {954014400 25200 1 ALMST} - {972763200 21600 0 ALMT} - {985464000 25200 1 ALMST} - {1004212800 21600 0 ALMT} - {1017518400 25200 1 ALMST} - {1035662400 21600 0 ALMT} - {1048968000 25200 1 ALMST} - {1067112000 21600 0 ALMT} - {1080417600 25200 1 ALMST} - {1099166400 21600 0 ALMT} - {1110823200 21600 0 ALMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Almaty) { + {-9223372036854775808 18468 0 LMT} + {-1441170468 18000 0 ALMT} + {-1247547600 21600 0 ALMT} + {354909600 25200 1 ALMST} + {370717200 21600 0 ALMT} + {386445600 25200 1 ALMST} + {402253200 21600 0 ALMT} + {417981600 25200 1 ALMST} + {433789200 21600 0 ALMT} + {449604000 25200 1 ALMST} + {465336000 21600 0 ALMT} + {481060800 25200 1 ALMST} + {496785600 21600 0 ALMT} + {512510400 25200 1 ALMST} + {528235200 21600 0 ALMT} + {543960000 25200 1 ALMST} + {559684800 21600 0 ALMT} + {575409600 25200 1 ALMST} + {591134400 21600 0 ALMT} + {606859200 25200 1 ALMST} + {622584000 21600 0 ALMT} + {638308800 25200 1 ALMST} + {654638400 21600 0 ALMT} + {662666400 21600 0 ALMT} + {694202400 21600 0 ALMT} + {701802000 25200 1 ALMST} + {717523200 21600 0 ALMT} + {733262400 25200 1 ALMST} + {748987200 21600 0 ALMT} + {764712000 25200 1 ALMST} + {780436800 21600 0 ALMT} + {796161600 25200 1 ALMST} + {811886400 21600 0 ALMT} + {828216000 25200 1 ALMST} + {846360000 21600 0 ALMT} + {859665600 25200 1 ALMST} + {877809600 21600 0 ALMT} + {891115200 25200 1 ALMST} + {909259200 21600 0 ALMT} + {922564800 25200 1 ALMST} + {941313600 21600 0 ALMT} + {954014400 25200 1 ALMST} + {972763200 21600 0 ALMT} + {985464000 25200 1 ALMST} + {1004212800 21600 0 ALMT} + {1017518400 25200 1 ALMST} + {1035662400 21600 0 ALMT} + {1048968000 25200 1 ALMST} + {1067112000 21600 0 ALMT} + {1080417600 25200 1 ALMST} + {1099166400 21600 0 ALMT} + {1110823200 21600 0 ALMT} +} diff --git a/library/tzdata/Asia/Amman b/library/tzdata/Asia/Amman index 5b34dbd..8baec6e 100644 --- a/library/tzdata/Asia/Amman +++ b/library/tzdata/Asia/Amman @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Amman) { - {-9223372036854775808 8624 0 LMT} - {-1230776624 7200 0 EET} - {108165600 10800 1 EEST} - {118270800 7200 0 EET} - {136591200 10800 1 EEST} - {149806800 7200 0 EET} - {168127200 10800 1 EEST} - {181342800 7200 0 EET} - {199749600 10800 1 EEST} - {215643600 7200 0 EET} - {231285600 10800 1 EEST} - {244501200 7200 0 EET} - {262735200 10800 1 EEST} - {275950800 7200 0 EET} - {481154400 10800 1 EEST} - {496962000 7200 0 EET} - {512949600 10800 1 EEST} - {528670800 7200 0 EET} - {544399200 10800 1 EEST} - {560120400 7200 0 EET} - {575848800 10800 1 EEST} - {592174800 7200 0 EET} - {610581600 10800 1 EEST} - {623624400 7200 0 EET} - {641167200 10800 1 EEST} - {655074000 7200 0 EET} - {671839200 10800 1 EEST} - {685918800 7200 0 EET} - {702856800 10800 1 EEST} - {717973200 7200 0 EET} - {733701600 10800 1 EEST} - {749422800 7200 0 EET} - {765151200 10800 1 EEST} - {779662800 7200 0 EET} - {797205600 10800 1 EEST} - {811116000 7200 0 EET} - {828655200 10800 1 EEST} - {843170400 7200 0 EET} - {860104800 10800 1 EEST} - {874620000 7200 0 EET} - {891554400 10800 1 EEST} - {906069600 7200 0 EET} - {930780000 10800 1 EEST} - {938642400 7200 0 EET} - {954367200 10800 1 EEST} - {970092000 7200 0 EET} - {985816800 10800 1 EEST} - {1001541600 7200 0 EET} - {1017266400 10800 1 EEST} - {1032991200 7200 0 EET} - {1048716000 10800 1 EEST} - {1066946400 7200 0 EET} - {1080165600 10800 1 EEST} - {1097791200 7200 0 EET} - {1112220000 10800 1 EEST} - {1128031200 7200 0 EET} - {1143669600 10800 1 EEST} - {1161900000 7200 0 EET} - {1175119200 10800 1 EEST} - {1193349600 7200 0 EET} - {1206568800 10800 1 EEST} - {1225404000 7200 0 EET} - {1238018400 10800 1 EEST} - {1256853600 7200 0 EET} - {1269468000 10800 1 EEST} - {1288303200 7200 0 EET} - {1301522400 10800 1 EEST} - {1319752800 7200 0 EET} - {1332972000 10800 1 EEST} - {1351202400 7200 0 EET} - {1364421600 10800 1 EEST} - {1382652000 7200 0 EET} - {1395871200 10800 1 EEST} - {1414706400 7200 0 EET} - {1427320800 10800 1 EEST} - {1446156000 7200 0 EET} - {1459375200 10800 1 EEST} - {1477605600 7200 0 EET} - {1490824800 10800 1 EEST} - {1509055200 7200 0 EET} - {1522274400 10800 1 EEST} - {1540504800 7200 0 EET} - {1553724000 10800 1 EEST} - {1571954400 7200 0 EET} - {1585173600 10800 1 EEST} - {1604008800 7200 0 EET} - {1616623200 10800 1 EEST} - {1635458400 7200 0 EET} - {1648677600 10800 1 EEST} - {1666908000 7200 0 EET} - {1680127200 10800 1 EEST} - {1698357600 7200 0 EET} - {1711576800 10800 1 EEST} - {1729807200 7200 0 EET} - {1743026400 10800 1 EEST} - {1761861600 7200 0 EET} - {1774476000 10800 1 EEST} - {1793311200 7200 0 EET} - {1805925600 10800 1 EEST} - {1824760800 7200 0 EET} - {1837980000 10800 1 EEST} - {1856210400 7200 0 EET} - {1869429600 10800 1 EEST} - {1887660000 7200 0 EET} - {1900879200 10800 1 EEST} - {1919109600 7200 0 EET} - {1932328800 10800 1 EEST} - {1951164000 7200 0 EET} - {1963778400 10800 1 EEST} - {1982613600 7200 0 EET} - {1995832800 10800 1 EEST} - {2014063200 7200 0 EET} - {2027282400 10800 1 EEST} - {2045512800 7200 0 EET} - {2058732000 10800 1 EEST} - {2076962400 7200 0 EET} - {2090181600 10800 1 EEST} - {2109016800 7200 0 EET} - {2121631200 10800 1 EEST} - {2140466400 7200 0 EET} - {2153080800 10800 1 EEST} - {2171916000 7200 0 EET} - {2185135200 10800 1 EEST} - {2203365600 7200 0 EET} - {2216584800 10800 1 EEST} - {2234815200 7200 0 EET} - {2248034400 10800 1 EEST} - {2266264800 7200 0 EET} - {2279484000 10800 1 EEST} - {2298319200 7200 0 EET} - {2310933600 10800 1 EEST} - {2329768800 7200 0 EET} - {2342988000 10800 1 EEST} - {2361218400 7200 0 EET} - {2374437600 10800 1 EEST} - {2392668000 7200 0 EET} - {2405887200 10800 1 EEST} - {2424117600 7200 0 EET} - {2437336800 10800 1 EEST} - {2455567200 7200 0 EET} - {2468786400 10800 1 EEST} - {2487621600 7200 0 EET} - {2500236000 10800 1 EEST} - {2519071200 7200 0 EET} - {2532290400 10800 1 EEST} - {2550520800 7200 0 EET} - {2563740000 10800 1 EEST} - {2581970400 7200 0 EET} - {2595189600 10800 1 EEST} - {2613420000 7200 0 EET} - {2626639200 10800 1 EEST} - {2645474400 7200 0 EET} - {2658088800 10800 1 EEST} - {2676924000 7200 0 EET} - {2689538400 10800 1 EEST} - {2708373600 7200 0 EET} - {2721592800 10800 1 EEST} - {2739823200 7200 0 EET} - {2753042400 10800 1 EEST} - {2771272800 7200 0 EET} - {2784492000 10800 1 EEST} - {2802722400 7200 0 EET} - {2815941600 10800 1 EEST} - {2834776800 7200 0 EET} - {2847391200 10800 1 EEST} - {2866226400 7200 0 EET} - {2879445600 10800 1 EEST} - {2897676000 7200 0 EET} - {2910895200 10800 1 EEST} - {2929125600 7200 0 EET} - {2942344800 10800 1 EEST} - {2960575200 7200 0 EET} - {2973794400 10800 1 EEST} - {2992629600 7200 0 EET} - {3005244000 10800 1 EEST} - {3024079200 7200 0 EET} - {3036693600 10800 1 EEST} - {3055528800 7200 0 EET} - {3068748000 10800 1 EEST} - {3086978400 7200 0 EET} - {3100197600 10800 1 EEST} - {3118428000 7200 0 EET} - {3131647200 10800 1 EEST} - {3149877600 7200 0 EET} - {3163096800 10800 1 EEST} - {3181932000 7200 0 EET} - {3194546400 10800 1 EEST} - {3213381600 7200 0 EET} - {3226600800 10800 1 EEST} - {3244831200 7200 0 EET} - {3258050400 10800 1 EEST} - {3276280800 7200 0 EET} - {3289500000 10800 1 EEST} - {3307730400 7200 0 EET} - {3320949600 10800 1 EEST} - {3339180000 7200 0 EET} - {3352399200 10800 1 EEST} - {3371234400 7200 0 EET} - {3383848800 10800 1 EEST} - {3402684000 7200 0 EET} - {3415903200 10800 1 EEST} - {3434133600 7200 0 EET} - {3447352800 10800 1 EEST} - {3465583200 7200 0 EET} - {3478802400 10800 1 EEST} - {3497032800 7200 0 EET} - {3510252000 10800 1 EEST} - {3529087200 7200 0 EET} - {3541701600 10800 1 EEST} - {3560536800 7200 0 EET} - {3573151200 10800 1 EEST} - {3591986400 7200 0 EET} - {3605205600 10800 1 EEST} - {3623436000 7200 0 EET} - {3636655200 10800 1 EEST} - {3654885600 7200 0 EET} - {3668104800 10800 1 EEST} - {3686335200 7200 0 EET} - {3699554400 10800 1 EEST} - {3718389600 7200 0 EET} - {3731004000 10800 1 EEST} - {3749839200 7200 0 EET} - {3763058400 10800 1 EEST} - {3781288800 7200 0 EET} - {3794508000 10800 1 EEST} - {3812738400 7200 0 EET} - {3825957600 10800 1 EEST} - {3844188000 7200 0 EET} - {3857407200 10800 1 EEST} - {3876242400 7200 0 EET} - {3888856800 10800 1 EEST} - {3907692000 7200 0 EET} - {3920306400 10800 1 EEST} - {3939141600 7200 0 EET} - {3952360800 10800 1 EEST} - {3970591200 7200 0 EET} - {3983810400 10800 1 EEST} - {4002040800 7200 0 EET} - {4015260000 10800 1 EEST} - {4033490400 7200 0 EET} - {4046709600 10800 1 EEST} - {4065544800 7200 0 EET} - {4078159200 10800 1 EEST} - {4096994400 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Amman) { + {-9223372036854775808 8624 0 LMT} + {-1230776624 7200 0 EET} + {108165600 10800 1 EEST} + {118270800 7200 0 EET} + {136591200 10800 1 EEST} + {149806800 7200 0 EET} + {168127200 10800 1 EEST} + {181342800 7200 0 EET} + {199749600 10800 1 EEST} + {215643600 7200 0 EET} + {231285600 10800 1 EEST} + {244501200 7200 0 EET} + {262735200 10800 1 EEST} + {275950800 7200 0 EET} + {481154400 10800 1 EEST} + {496962000 7200 0 EET} + {512949600 10800 1 EEST} + {528670800 7200 0 EET} + {544399200 10800 1 EEST} + {560120400 7200 0 EET} + {575848800 10800 1 EEST} + {592174800 7200 0 EET} + {610581600 10800 1 EEST} + {623624400 7200 0 EET} + {641167200 10800 1 EEST} + {655074000 7200 0 EET} + {671839200 10800 1 EEST} + {685918800 7200 0 EET} + {702856800 10800 1 EEST} + {717973200 7200 0 EET} + {733701600 10800 1 EEST} + {749422800 7200 0 EET} + {765151200 10800 1 EEST} + {779662800 7200 0 EET} + {797205600 10800 1 EEST} + {811116000 7200 0 EET} + {828655200 10800 1 EEST} + {843170400 7200 0 EET} + {860104800 10800 1 EEST} + {874620000 7200 0 EET} + {891554400 10800 1 EEST} + {906069600 7200 0 EET} + {930780000 10800 1 EEST} + {938124000 7200 0 EET} + {954367200 10800 1 EEST} + {970178400 7200 0 EET} + {985816800 10800 1 EEST} + {1001628000 7200 0 EET} + {1017352800 10800 1 EEST} + {1033077600 7200 0 EET} + {1048802400 10800 1 EEST} + {1066946400 7200 0 EET} + {1080252000 10800 1 EEST} + {1097791200 7200 0 EET} + {1111701600 10800 1 EEST} + {1128031200 7200 0 EET} + {1143756000 10800 1 EEST} + {1161900000 7200 0 EET} + {1175205600 10800 1 EEST} + {1193349600 7200 0 EET} + {1206655200 10800 1 EEST} + {1225404000 7200 0 EET} + {1238104800 10800 1 EEST} + {1256853600 7200 0 EET} + {1269554400 10800 1 EEST} + {1288303200 7200 0 EET} + {1301004000 10800 1 EEST} + {1319752800 7200 0 EET} + {1333058400 10800 1 EEST} + {1351202400 7200 0 EET} + {1364508000 10800 1 EEST} + {1382652000 7200 0 EET} + {1395957600 10800 1 EEST} + {1414706400 7200 0 EET} + {1427407200 10800 1 EEST} + {1446156000 7200 0 EET} + {1458856800 10800 1 EEST} + {1477605600 7200 0 EET} + {1490911200 10800 1 EEST} + {1509055200 7200 0 EET} + {1522360800 10800 1 EEST} + {1540504800 7200 0 EET} + {1553810400 10800 1 EEST} + {1571954400 7200 0 EET} + {1585260000 10800 1 EEST} + {1604008800 7200 0 EET} + {1616709600 10800 1 EEST} + {1635458400 7200 0 EET} + {1648159200 10800 1 EEST} + {1666908000 7200 0 EET} + {1680213600 10800 1 EEST} + {1698357600 7200 0 EET} + {1711663200 10800 1 EEST} + {1729807200 7200 0 EET} + {1743112800 10800 1 EEST} + {1761861600 7200 0 EET} + {1774562400 10800 1 EEST} + {1793311200 7200 0 EET} + {1806012000 10800 1 EEST} + {1824760800 7200 0 EET} + {1838066400 10800 1 EEST} + {1856210400 7200 0 EET} + {1869516000 10800 1 EEST} + {1887660000 7200 0 EET} + {1900965600 10800 1 EEST} + {1919109600 7200 0 EET} + {1932415200 10800 1 EEST} + {1951164000 7200 0 EET} + {1963864800 10800 1 EEST} + {1982613600 7200 0 EET} + {1995314400 10800 1 EEST} + {2014063200 7200 0 EET} + {2027368800 10800 1 EEST} + {2045512800 7200 0 EET} + {2058818400 10800 1 EEST} + {2076962400 7200 0 EET} + {2090268000 10800 1 EEST} + {2109016800 7200 0 EET} + {2121717600 10800 1 EEST} + {2140466400 7200 0 EET} + {2153167200 10800 1 EEST} + {2171916000 7200 0 EET} + {2184616800 10800 1 EEST} + {2203365600 7200 0 EET} + {2216671200 10800 1 EEST} + {2234815200 7200 0 EET} + {2248120800 10800 1 EEST} + {2266264800 7200 0 EET} + {2279570400 10800 1 EEST} + {2298319200 7200 0 EET} + {2311020000 10800 1 EEST} + {2329768800 7200 0 EET} + {2342469600 10800 1 EEST} + {2361218400 7200 0 EET} + {2374524000 10800 1 EEST} + {2392668000 7200 0 EET} + {2405973600 10800 1 EEST} + {2424117600 7200 0 EET} + {2437423200 10800 1 EEST} + {2455567200 7200 0 EET} + {2468872800 10800 1 EEST} + {2487621600 7200 0 EET} + {2500322400 10800 1 EEST} + {2519071200 7200 0 EET} + {2531772000 10800 1 EEST} + {2550520800 7200 0 EET} + {2563826400 10800 1 EEST} + {2581970400 7200 0 EET} + {2595276000 10800 1 EEST} + {2613420000 7200 0 EET} + {2626725600 10800 1 EEST} + {2645474400 7200 0 EET} + {2658175200 10800 1 EEST} + {2676924000 7200 0 EET} + {2689624800 10800 1 EEST} + {2708373600 7200 0 EET} + {2721679200 10800 1 EEST} + {2739823200 7200 0 EET} + {2753128800 10800 1 EEST} + {2771272800 7200 0 EET} + {2784578400 10800 1 EEST} + {2802722400 7200 0 EET} + {2816028000 10800 1 EEST} + {2834776800 7200 0 EET} + {2847477600 10800 1 EEST} + {2866226400 7200 0 EET} + {2878927200 10800 1 EEST} + {2897676000 7200 0 EET} + {2910981600 10800 1 EEST} + {2929125600 7200 0 EET} + {2942431200 10800 1 EEST} + {2960575200 7200 0 EET} + {2973880800 10800 1 EEST} + {2992629600 7200 0 EET} + {3005330400 10800 1 EEST} + {3024079200 7200 0 EET} + {3036780000 10800 1 EEST} + {3055528800 7200 0 EET} + {3068229600 10800 1 EEST} + {3086978400 7200 0 EET} + {3100284000 10800 1 EEST} + {3118428000 7200 0 EET} + {3131733600 10800 1 EEST} + {3149877600 7200 0 EET} + {3163183200 10800 1 EEST} + {3181932000 7200 0 EET} + {3194632800 10800 1 EEST} + {3213381600 7200 0 EET} + {3226082400 10800 1 EEST} + {3244831200 7200 0 EET} + {3258136800 10800 1 EEST} + {3276280800 7200 0 EET} + {3289586400 10800 1 EEST} + {3307730400 7200 0 EET} + {3321036000 10800 1 EEST} + {3339180000 7200 0 EET} + {3352485600 10800 1 EEST} + {3371234400 7200 0 EET} + {3383935200 10800 1 EEST} + {3402684000 7200 0 EET} + {3415384800 10800 1 EEST} + {3434133600 7200 0 EET} + {3447439200 10800 1 EEST} + {3465583200 7200 0 EET} + {3478888800 10800 1 EEST} + {3497032800 7200 0 EET} + {3510338400 10800 1 EEST} + {3529087200 7200 0 EET} + {3541788000 10800 1 EEST} + {3560536800 7200 0 EET} + {3573237600 10800 1 EEST} + {3591986400 7200 0 EET} + {3605292000 10800 1 EEST} + {3623436000 7200 0 EET} + {3636741600 10800 1 EEST} + {3654885600 7200 0 EET} + {3668191200 10800 1 EEST} + {3686335200 7200 0 EET} + {3699640800 10800 1 EEST} + {3718389600 7200 0 EET} + {3731090400 10800 1 EEST} + {3749839200 7200 0 EET} + {3762540000 10800 1 EEST} + {3781288800 7200 0 EET} + {3794594400 10800 1 EEST} + {3812738400 7200 0 EET} + {3826044000 10800 1 EEST} + {3844188000 7200 0 EET} + {3857493600 10800 1 EEST} + {3876242400 7200 0 EET} + {3888943200 10800 1 EEST} + {3907692000 7200 0 EET} + {3920392800 10800 1 EEST} + {3939141600 7200 0 EET} + {3951842400 10800 1 EEST} + {3970591200 7200 0 EET} + {3983896800 10800 1 EEST} + {4002040800 7200 0 EET} + {4015346400 10800 1 EEST} + {4033490400 7200 0 EET} + {4046796000 10800 1 EEST} + {4065544800 7200 0 EET} + {4078245600 10800 1 EEST} + {4096994400 7200 0 EET} +} diff --git a/library/tzdata/Asia/Anadyr b/library/tzdata/Asia/Anadyr index c0e98a7..f2b09b6 100644 --- a/library/tzdata/Asia/Anadyr +++ b/library/tzdata/Asia/Anadyr @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Anadyr) { - {-9223372036854775808 42596 0 LMT} - {-1441194596 43200 0 ANAT} - {-1247572800 46800 0 ANAMMTT} - {354884400 50400 1 ANAST} - {370692000 46800 0 ANAT} - {386420400 43200 0 ANAMMTT} - {386424000 46800 1 ANAST} - {402231600 43200 0 ANAT} - {417960000 46800 1 ANAST} - {433767600 43200 0 ANAT} - {449582400 46800 1 ANAST} - {465314400 43200 0 ANAT} - {481039200 46800 1 ANAST} - {496764000 43200 0 ANAT} - {512488800 46800 1 ANAST} - {528213600 43200 0 ANAT} - {543938400 46800 1 ANAST} - {559663200 43200 0 ANAT} - {575388000 46800 1 ANAST} - {591112800 43200 0 ANAT} - {606837600 46800 1 ANAST} - {622562400 43200 0 ANAT} - {638287200 46800 1 ANAST} - {654616800 43200 0 ANAT} - {670341600 39600 0 ANAMMTT} - {670345200 43200 1 ANAST} - {686070000 39600 0 ANAT} - {695746800 43200 0 ANAMMTT} - {701780400 46800 1 ANAST} - {717501600 43200 0 ANAT} - {733240800 46800 1 ANAST} - {748965600 43200 0 ANAT} - {764690400 46800 1 ANAST} - {780415200 43200 0 ANAT} - {796140000 46800 1 ANAST} - {811864800 43200 0 ANAT} - {828194400 46800 1 ANAST} - {846338400 43200 0 ANAT} - {859644000 46800 1 ANAST} - {877788000 43200 0 ANAT} - {891093600 46800 1 ANAST} - {909237600 43200 0 ANAT} - {922543200 46800 1 ANAST} - {941292000 43200 0 ANAT} - {953992800 46800 1 ANAST} - {972741600 43200 0 ANAT} - {985442400 46800 1 ANAST} - {1004191200 43200 0 ANAT} - {1017496800 46800 1 ANAST} - {1035640800 43200 0 ANAT} - {1048946400 46800 1 ANAST} - {1067090400 43200 0 ANAT} - {1080396000 46800 1 ANAST} - {1099144800 43200 0 ANAT} - {1111845600 46800 1 ANAST} - {1130594400 43200 0 ANAT} - {1143295200 46800 1 ANAST} - {1162044000 43200 0 ANAT} - {1174744800 46800 1 ANAST} - {1193493600 43200 0 ANAT} - {1206799200 46800 1 ANAST} - {1224943200 43200 0 ANAT} - {1238248800 46800 1 ANAST} - {1256392800 43200 0 ANAT} - {1269698400 46800 1 ANAST} - {1288447200 43200 0 ANAT} - {1301148000 46800 1 ANAST} - {1319896800 43200 0 ANAT} - {1332597600 46800 1 ANAST} - {1351346400 43200 0 ANAT} - {1364652000 46800 1 ANAST} - {1382796000 43200 0 ANAT} - {1396101600 46800 1 ANAST} - {1414245600 43200 0 ANAT} - {1427551200 46800 1 ANAST} - {1445695200 43200 0 ANAT} - {1459000800 46800 1 ANAST} - {1477749600 43200 0 ANAT} - {1490450400 46800 1 ANAST} - {1509199200 43200 0 ANAT} - {1521900000 46800 1 ANAST} - {1540648800 43200 0 ANAT} - {1553954400 46800 1 ANAST} - {1572098400 43200 0 ANAT} - {1585404000 46800 1 ANAST} - {1603548000 43200 0 ANAT} - {1616853600 46800 1 ANAST} - {1635602400 43200 0 ANAT} - {1648303200 46800 1 ANAST} - {1667052000 43200 0 ANAT} - {1679752800 46800 1 ANAST} - {1698501600 43200 0 ANAT} - {1711807200 46800 1 ANAST} - {1729951200 43200 0 ANAT} - {1743256800 46800 1 ANAST} - {1761400800 43200 0 ANAT} - {1774706400 46800 1 ANAST} - {1792850400 43200 0 ANAT} - {1806156000 46800 1 ANAST} - {1824904800 43200 0 ANAT} - {1837605600 46800 1 ANAST} - {1856354400 43200 0 ANAT} - {1869055200 46800 1 ANAST} - {1887804000 43200 0 ANAT} - {1901109600 46800 1 ANAST} - {1919253600 43200 0 ANAT} - {1932559200 46800 1 ANAST} - {1950703200 43200 0 ANAT} - {1964008800 46800 1 ANAST} - {1982757600 43200 0 ANAT} - {1995458400 46800 1 ANAST} - {2014207200 43200 0 ANAT} - {2026908000 46800 1 ANAST} - {2045656800 43200 0 ANAT} - {2058357600 46800 1 ANAST} - {2077106400 43200 0 ANAT} - {2090412000 46800 1 ANAST} - {2108556000 43200 0 ANAT} - {2121861600 46800 1 ANAST} - {2140005600 43200 0 ANAT} - {2153311200 46800 1 ANAST} - {2172060000 43200 0 ANAT} - {2184760800 46800 1 ANAST} - {2203509600 43200 0 ANAT} - {2216210400 46800 1 ANAST} - {2234959200 43200 0 ANAT} - {2248264800 46800 1 ANAST} - {2266408800 43200 0 ANAT} - {2279714400 46800 1 ANAST} - {2297858400 43200 0 ANAT} - {2311164000 46800 1 ANAST} - {2329308000 43200 0 ANAT} - {2342613600 46800 1 ANAST} - {2361362400 43200 0 ANAT} - {2374063200 46800 1 ANAST} - {2392812000 43200 0 ANAT} - {2405512800 46800 1 ANAST} - {2424261600 43200 0 ANAT} - {2437567200 46800 1 ANAST} - {2455711200 43200 0 ANAT} - {2469016800 46800 1 ANAST} - {2487160800 43200 0 ANAT} - {2500466400 46800 1 ANAST} - {2519215200 43200 0 ANAT} - {2531916000 46800 1 ANAST} - {2550664800 43200 0 ANAT} - {2563365600 46800 1 ANAST} - {2582114400 43200 0 ANAT} - {2595420000 46800 1 ANAST} - {2613564000 43200 0 ANAT} - {2626869600 46800 1 ANAST} - {2645013600 43200 0 ANAT} - {2658319200 46800 1 ANAST} - {2676463200 43200 0 ANAT} - {2689768800 46800 1 ANAST} - {2708517600 43200 0 ANAT} - {2721218400 46800 1 ANAST} - {2739967200 43200 0 ANAT} - {2752668000 46800 1 ANAST} - {2771416800 43200 0 ANAT} - {2784722400 46800 1 ANAST} - {2802866400 43200 0 ANAT} - {2816172000 46800 1 ANAST} - {2834316000 43200 0 ANAT} - {2847621600 46800 1 ANAST} - {2866370400 43200 0 ANAT} - {2879071200 46800 1 ANAST} - {2897820000 43200 0 ANAT} - {2910520800 46800 1 ANAST} - {2929269600 43200 0 ANAT} - {2941970400 46800 1 ANAST} - {2960719200 43200 0 ANAT} - {2974024800 46800 1 ANAST} - {2992168800 43200 0 ANAT} - {3005474400 46800 1 ANAST} - {3023618400 43200 0 ANAT} - {3036924000 46800 1 ANAST} - {3055672800 43200 0 ANAT} - {3068373600 46800 1 ANAST} - {3087122400 43200 0 ANAT} - {3099823200 46800 1 ANAST} - {3118572000 43200 0 ANAT} - {3131877600 46800 1 ANAST} - {3150021600 43200 0 ANAT} - {3163327200 46800 1 ANAST} - {3181471200 43200 0 ANAT} - {3194776800 46800 1 ANAST} - {3212920800 43200 0 ANAT} - {3226226400 46800 1 ANAST} - {3244975200 43200 0 ANAT} - {3257676000 46800 1 ANAST} - {3276424800 43200 0 ANAT} - {3289125600 46800 1 ANAST} - {3307874400 43200 0 ANAT} - {3321180000 46800 1 ANAST} - {3339324000 43200 0 ANAT} - {3352629600 46800 1 ANAST} - {3370773600 43200 0 ANAT} - {3384079200 46800 1 ANAST} - {3402828000 43200 0 ANAT} - {3415528800 46800 1 ANAST} - {3434277600 43200 0 ANAT} - {3446978400 46800 1 ANAST} - {3465727200 43200 0 ANAT} - {3479032800 46800 1 ANAST} - {3497176800 43200 0 ANAT} - {3510482400 46800 1 ANAST} - {3528626400 43200 0 ANAT} - {3541932000 46800 1 ANAST} - {3560076000 43200 0 ANAT} - {3573381600 46800 1 ANAST} - {3592130400 43200 0 ANAT} - {3604831200 46800 1 ANAST} - {3623580000 43200 0 ANAT} - {3636280800 46800 1 ANAST} - {3655029600 43200 0 ANAT} - {3668335200 46800 1 ANAST} - {3686479200 43200 0 ANAT} - {3699784800 46800 1 ANAST} - {3717928800 43200 0 ANAT} - {3731234400 46800 1 ANAST} - {3749983200 43200 0 ANAT} - {3762684000 46800 1 ANAST} - {3781432800 43200 0 ANAT} - {3794133600 46800 1 ANAST} - {3812882400 43200 0 ANAT} - {3825583200 46800 1 ANAST} - {3844332000 43200 0 ANAT} - {3857637600 46800 1 ANAST} - {3875781600 43200 0 ANAT} - {3889087200 46800 1 ANAST} - {3907231200 43200 0 ANAT} - {3920536800 46800 1 ANAST} - {3939285600 43200 0 ANAT} - {3951986400 46800 1 ANAST} - {3970735200 43200 0 ANAT} - {3983436000 46800 1 ANAST} - {4002184800 43200 0 ANAT} - {4015490400 46800 1 ANAST} - {4033634400 43200 0 ANAT} - {4046940000 46800 1 ANAST} - {4065084000 43200 0 ANAT} - {4078389600 46800 1 ANAST} - {4096533600 43200 0 ANAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Anadyr) { + {-9223372036854775808 42596 0 LMT} + {-1441194596 43200 0 ANAT} + {-1247572800 46800 0 ANAMMTT} + {354884400 50400 1 ANAST} + {370692000 46800 0 ANAT} + {386420400 43200 0 ANAMMTT} + {386424000 46800 1 ANAST} + {402231600 43200 0 ANAT} + {417960000 46800 1 ANAST} + {433767600 43200 0 ANAT} + {449582400 46800 1 ANAST} + {465314400 43200 0 ANAT} + {481039200 46800 1 ANAST} + {496764000 43200 0 ANAT} + {512488800 46800 1 ANAST} + {528213600 43200 0 ANAT} + {543938400 46800 1 ANAST} + {559663200 43200 0 ANAT} + {575388000 46800 1 ANAST} + {591112800 43200 0 ANAT} + {606837600 46800 1 ANAST} + {622562400 43200 0 ANAT} + {638287200 46800 1 ANAST} + {654616800 43200 0 ANAT} + {670341600 39600 0 ANAMMTT} + {670345200 43200 1 ANAST} + {686070000 39600 0 ANAT} + {695746800 43200 0 ANAMMTT} + {701780400 46800 1 ANAST} + {717501600 43200 0 ANAT} + {733240800 46800 1 ANAST} + {748965600 43200 0 ANAT} + {764690400 46800 1 ANAST} + {780415200 43200 0 ANAT} + {796140000 46800 1 ANAST} + {811864800 43200 0 ANAT} + {828194400 46800 1 ANAST} + {846338400 43200 0 ANAT} + {859644000 46800 1 ANAST} + {877788000 43200 0 ANAT} + {891093600 46800 1 ANAST} + {909237600 43200 0 ANAT} + {922543200 46800 1 ANAST} + {941292000 43200 0 ANAT} + {953992800 46800 1 ANAST} + {972741600 43200 0 ANAT} + {985442400 46800 1 ANAST} + {1004191200 43200 0 ANAT} + {1017496800 46800 1 ANAST} + {1035640800 43200 0 ANAT} + {1048946400 46800 1 ANAST} + {1067090400 43200 0 ANAT} + {1080396000 46800 1 ANAST} + {1099144800 43200 0 ANAT} + {1111845600 46800 1 ANAST} + {1130594400 43200 0 ANAT} + {1143295200 46800 1 ANAST} + {1162044000 43200 0 ANAT} + {1174744800 46800 1 ANAST} + {1193493600 43200 0 ANAT} + {1206799200 46800 1 ANAST} + {1224943200 43200 0 ANAT} + {1238248800 46800 1 ANAST} + {1256392800 43200 0 ANAT} + {1269698400 46800 1 ANAST} + {1288447200 43200 0 ANAT} + {1301148000 46800 1 ANAST} + {1319896800 43200 0 ANAT} + {1332597600 46800 1 ANAST} + {1351346400 43200 0 ANAT} + {1364652000 46800 1 ANAST} + {1382796000 43200 0 ANAT} + {1396101600 46800 1 ANAST} + {1414245600 43200 0 ANAT} + {1427551200 46800 1 ANAST} + {1445695200 43200 0 ANAT} + {1459000800 46800 1 ANAST} + {1477749600 43200 0 ANAT} + {1490450400 46800 1 ANAST} + {1509199200 43200 0 ANAT} + {1521900000 46800 1 ANAST} + {1540648800 43200 0 ANAT} + {1553954400 46800 1 ANAST} + {1572098400 43200 0 ANAT} + {1585404000 46800 1 ANAST} + {1603548000 43200 0 ANAT} + {1616853600 46800 1 ANAST} + {1635602400 43200 0 ANAT} + {1648303200 46800 1 ANAST} + {1667052000 43200 0 ANAT} + {1679752800 46800 1 ANAST} + {1698501600 43200 0 ANAT} + {1711807200 46800 1 ANAST} + {1729951200 43200 0 ANAT} + {1743256800 46800 1 ANAST} + {1761400800 43200 0 ANAT} + {1774706400 46800 1 ANAST} + {1792850400 43200 0 ANAT} + {1806156000 46800 1 ANAST} + {1824904800 43200 0 ANAT} + {1837605600 46800 1 ANAST} + {1856354400 43200 0 ANAT} + {1869055200 46800 1 ANAST} + {1887804000 43200 0 ANAT} + {1901109600 46800 1 ANAST} + {1919253600 43200 0 ANAT} + {1932559200 46800 1 ANAST} + {1950703200 43200 0 ANAT} + {1964008800 46800 1 ANAST} + {1982757600 43200 0 ANAT} + {1995458400 46800 1 ANAST} + {2014207200 43200 0 ANAT} + {2026908000 46800 1 ANAST} + {2045656800 43200 0 ANAT} + {2058357600 46800 1 ANAST} + {2077106400 43200 0 ANAT} + {2090412000 46800 1 ANAST} + {2108556000 43200 0 ANAT} + {2121861600 46800 1 ANAST} + {2140005600 43200 0 ANAT} + {2153311200 46800 1 ANAST} + {2172060000 43200 0 ANAT} + {2184760800 46800 1 ANAST} + {2203509600 43200 0 ANAT} + {2216210400 46800 1 ANAST} + {2234959200 43200 0 ANAT} + {2248264800 46800 1 ANAST} + {2266408800 43200 0 ANAT} + {2279714400 46800 1 ANAST} + {2297858400 43200 0 ANAT} + {2311164000 46800 1 ANAST} + {2329308000 43200 0 ANAT} + {2342613600 46800 1 ANAST} + {2361362400 43200 0 ANAT} + {2374063200 46800 1 ANAST} + {2392812000 43200 0 ANAT} + {2405512800 46800 1 ANAST} + {2424261600 43200 0 ANAT} + {2437567200 46800 1 ANAST} + {2455711200 43200 0 ANAT} + {2469016800 46800 1 ANAST} + {2487160800 43200 0 ANAT} + {2500466400 46800 1 ANAST} + {2519215200 43200 0 ANAT} + {2531916000 46800 1 ANAST} + {2550664800 43200 0 ANAT} + {2563365600 46800 1 ANAST} + {2582114400 43200 0 ANAT} + {2595420000 46800 1 ANAST} + {2613564000 43200 0 ANAT} + {2626869600 46800 1 ANAST} + {2645013600 43200 0 ANAT} + {2658319200 46800 1 ANAST} + {2676463200 43200 0 ANAT} + {2689768800 46800 1 ANAST} + {2708517600 43200 0 ANAT} + {2721218400 46800 1 ANAST} + {2739967200 43200 0 ANAT} + {2752668000 46800 1 ANAST} + {2771416800 43200 0 ANAT} + {2784722400 46800 1 ANAST} + {2802866400 43200 0 ANAT} + {2816172000 46800 1 ANAST} + {2834316000 43200 0 ANAT} + {2847621600 46800 1 ANAST} + {2866370400 43200 0 ANAT} + {2879071200 46800 1 ANAST} + {2897820000 43200 0 ANAT} + {2910520800 46800 1 ANAST} + {2929269600 43200 0 ANAT} + {2941970400 46800 1 ANAST} + {2960719200 43200 0 ANAT} + {2974024800 46800 1 ANAST} + {2992168800 43200 0 ANAT} + {3005474400 46800 1 ANAST} + {3023618400 43200 0 ANAT} + {3036924000 46800 1 ANAST} + {3055672800 43200 0 ANAT} + {3068373600 46800 1 ANAST} + {3087122400 43200 0 ANAT} + {3099823200 46800 1 ANAST} + {3118572000 43200 0 ANAT} + {3131877600 46800 1 ANAST} + {3150021600 43200 0 ANAT} + {3163327200 46800 1 ANAST} + {3181471200 43200 0 ANAT} + {3194776800 46800 1 ANAST} + {3212920800 43200 0 ANAT} + {3226226400 46800 1 ANAST} + {3244975200 43200 0 ANAT} + {3257676000 46800 1 ANAST} + {3276424800 43200 0 ANAT} + {3289125600 46800 1 ANAST} + {3307874400 43200 0 ANAT} + {3321180000 46800 1 ANAST} + {3339324000 43200 0 ANAT} + {3352629600 46800 1 ANAST} + {3370773600 43200 0 ANAT} + {3384079200 46800 1 ANAST} + {3402828000 43200 0 ANAT} + {3415528800 46800 1 ANAST} + {3434277600 43200 0 ANAT} + {3446978400 46800 1 ANAST} + {3465727200 43200 0 ANAT} + {3479032800 46800 1 ANAST} + {3497176800 43200 0 ANAT} + {3510482400 46800 1 ANAST} + {3528626400 43200 0 ANAT} + {3541932000 46800 1 ANAST} + {3560076000 43200 0 ANAT} + {3573381600 46800 1 ANAST} + {3592130400 43200 0 ANAT} + {3604831200 46800 1 ANAST} + {3623580000 43200 0 ANAT} + {3636280800 46800 1 ANAST} + {3655029600 43200 0 ANAT} + {3668335200 46800 1 ANAST} + {3686479200 43200 0 ANAT} + {3699784800 46800 1 ANAST} + {3717928800 43200 0 ANAT} + {3731234400 46800 1 ANAST} + {3749983200 43200 0 ANAT} + {3762684000 46800 1 ANAST} + {3781432800 43200 0 ANAT} + {3794133600 46800 1 ANAST} + {3812882400 43200 0 ANAT} + {3825583200 46800 1 ANAST} + {3844332000 43200 0 ANAT} + {3857637600 46800 1 ANAST} + {3875781600 43200 0 ANAT} + {3889087200 46800 1 ANAST} + {3907231200 43200 0 ANAT} + {3920536800 46800 1 ANAST} + {3939285600 43200 0 ANAT} + {3951986400 46800 1 ANAST} + {3970735200 43200 0 ANAT} + {3983436000 46800 1 ANAST} + {4002184800 43200 0 ANAT} + {4015490400 46800 1 ANAST} + {4033634400 43200 0 ANAT} + {4046940000 46800 1 ANAST} + {4065084000 43200 0 ANAT} + {4078389600 46800 1 ANAST} + {4096533600 43200 0 ANAT} +} diff --git a/library/tzdata/Asia/Aqtau b/library/tzdata/Asia/Aqtau index 11e89a2..9c73d23 100644 --- a/library/tzdata/Asia/Aqtau +++ b/library/tzdata/Asia/Aqtau @@ -1,58 +1,58 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Aqtau) { - {-9223372036854775808 12064 0 LMT} - {-1441164064 14400 0 FORT} - {-1247544000 18000 0 FORT} - {-220942800 18000 0 SHET} - {370724400 21600 0 SHET} - {386445600 18000 0 SHET} - {386449200 21600 1 SHEST} - {402256800 18000 0 SHET} - {417985200 21600 1 SHEST} - {433792800 18000 0 SHET} - {449607600 21600 1 SHEST} - {465339600 18000 0 SHET} - {481064400 21600 1 SHEST} - {496789200 18000 0 SHET} - {512514000 21600 1 SHEST} - {528238800 18000 0 SHET} - {543963600 21600 1 SHEST} - {559688400 18000 0 SHET} - {575413200 21600 1 SHEST} - {591138000 18000 0 SHET} - {606862800 21600 1 SHEST} - {622587600 18000 0 SHET} - {638312400 21600 1 SHEST} - {654642000 18000 0 SHET} - {662670000 18000 0 SHET} - {692823600 18000 0 AQTT} - {701805600 21600 1 AQTST} - {717526800 18000 0 AQTT} - {733266000 21600 1 AQTST} - {748990800 18000 0 AQTT} - {764715600 21600 1 AQTST} - {780440400 18000 0 AQTT} - {796165200 14400 0 AQTT} - {796168800 18000 1 AQTST} - {811893600 14400 0 AQTT} - {828223200 18000 1 AQTST} - {846367200 14400 0 AQTT} - {859672800 18000 1 AQTST} - {877816800 14400 0 AQTT} - {891122400 18000 1 AQTST} - {909266400 14400 0 AQTT} - {922572000 18000 1 AQTST} - {941320800 14400 0 AQTT} - {954021600 18000 1 AQTST} - {972770400 14400 0 AQTT} - {985471200 18000 1 AQTST} - {1004220000 14400 0 AQTT} - {1017525600 18000 1 AQTST} - {1035669600 14400 0 AQTT} - {1048975200 18000 1 AQTST} - {1067119200 14400 0 AQTT} - {1080424800 18000 1 AQTST} - {1099173600 14400 0 AQTT} - {1110830400 18000 0 AQTT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Aqtau) { + {-9223372036854775808 12064 0 LMT} + {-1441164064 14400 0 FORT} + {-1247544000 18000 0 FORT} + {-220942800 18000 0 SHET} + {370724400 21600 0 SHET} + {386445600 18000 0 SHET} + {386449200 21600 1 SHEST} + {402256800 18000 0 SHET} + {417985200 21600 1 SHEST} + {433792800 18000 0 SHET} + {449607600 21600 1 SHEST} + {465339600 18000 0 SHET} + {481064400 21600 1 SHEST} + {496789200 18000 0 SHET} + {512514000 21600 1 SHEST} + {528238800 18000 0 SHET} + {543963600 21600 1 SHEST} + {559688400 18000 0 SHET} + {575413200 21600 1 SHEST} + {591138000 18000 0 SHET} + {606862800 21600 1 SHEST} + {622587600 18000 0 SHET} + {638312400 21600 1 SHEST} + {654642000 18000 0 SHET} + {662670000 18000 0 SHET} + {692823600 18000 0 AQTT} + {701805600 21600 1 AQTST} + {717526800 18000 0 AQTT} + {733266000 21600 1 AQTST} + {748990800 18000 0 AQTT} + {764715600 21600 1 AQTST} + {780440400 18000 0 AQTT} + {796165200 14400 0 AQTT} + {796168800 18000 1 AQTST} + {811893600 14400 0 AQTT} + {828223200 18000 1 AQTST} + {846367200 14400 0 AQTT} + {859672800 18000 1 AQTST} + {877816800 14400 0 AQTT} + {891122400 18000 1 AQTST} + {909266400 14400 0 AQTT} + {922572000 18000 1 AQTST} + {941320800 14400 0 AQTT} + {954021600 18000 1 AQTST} + {972770400 14400 0 AQTT} + {985471200 18000 1 AQTST} + {1004220000 14400 0 AQTT} + {1017525600 18000 1 AQTST} + {1035669600 14400 0 AQTT} + {1048975200 18000 1 AQTST} + {1067119200 14400 0 AQTT} + {1080424800 18000 1 AQTST} + {1099173600 14400 0 AQTT} + {1110830400 18000 0 AQTT} +} diff --git a/library/tzdata/Asia/Aqtobe b/library/tzdata/Asia/Aqtobe index c857491..b0bcbe0 100644 --- a/library/tzdata/Asia/Aqtobe +++ b/library/tzdata/Asia/Aqtobe @@ -1,57 +1,57 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Aqtobe) { - {-9223372036854775808 13720 0 LMT} - {-1441165720 14400 0 AKTT} - {-1247544000 18000 0 AKTT} - {354913200 21600 1 AKTST} - {370720800 21600 0 AKTT} - {386445600 18000 0 AKTT} - {386449200 21600 1 AKTST} - {402256800 18000 0 AKTT} - {417985200 21600 1 AKTST} - {433792800 18000 0 AKTT} - {449607600 21600 1 AKTST} - {465339600 18000 0 AKTT} - {481064400 21600 1 AKTST} - {496789200 18000 0 AKTT} - {512514000 21600 1 AKTST} - {528238800 18000 0 AKTT} - {543963600 21600 1 AKTST} - {559688400 18000 0 AKTT} - {575413200 21600 1 AKTST} - {591138000 18000 0 AKTT} - {606862800 21600 1 AKTST} - {622587600 18000 0 AKTT} - {638312400 21600 1 AKTST} - {654642000 18000 0 AKTT} - {662670000 18000 0 AKTT} - {692823600 18000 0 AQTT} - {701805600 21600 1 AQTST} - {717526800 18000 0 AQTT} - {733266000 21600 1 AQTST} - {748990800 18000 0 AQTT} - {764715600 21600 1 AQTST} - {780440400 18000 0 AQTT} - {796165200 21600 1 AQTST} - {811890000 18000 0 AQTT} - {828219600 21600 1 AQTST} - {846363600 18000 0 AQTT} - {859669200 21600 1 AQTST} - {877813200 18000 0 AQTT} - {891118800 21600 1 AQTST} - {909262800 18000 0 AQTT} - {922568400 21600 1 AQTST} - {941317200 18000 0 AQTT} - {954018000 21600 1 AQTST} - {972766800 18000 0 AQTT} - {985467600 21600 1 AQTST} - {1004216400 18000 0 AQTT} - {1017522000 21600 1 AQTST} - {1035666000 18000 0 AQTT} - {1048971600 21600 1 AQTST} - {1067115600 18000 0 AQTT} - {1080421200 21600 1 AQTST} - {1099170000 18000 0 AQTT} - {1110826800 18000 0 AQTT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Aqtobe) { + {-9223372036854775808 13720 0 LMT} + {-1441165720 14400 0 AKTT} + {-1247544000 18000 0 AKTT} + {354913200 21600 1 AKTST} + {370720800 21600 0 AKTT} + {386445600 18000 0 AKTT} + {386449200 21600 1 AKTST} + {402256800 18000 0 AKTT} + {417985200 21600 1 AKTST} + {433792800 18000 0 AKTT} + {449607600 21600 1 AKTST} + {465339600 18000 0 AKTT} + {481064400 21600 1 AKTST} + {496789200 18000 0 AKTT} + {512514000 21600 1 AKTST} + {528238800 18000 0 AKTT} + {543963600 21600 1 AKTST} + {559688400 18000 0 AKTT} + {575413200 21600 1 AKTST} + {591138000 18000 0 AKTT} + {606862800 21600 1 AKTST} + {622587600 18000 0 AKTT} + {638312400 21600 1 AKTST} + {654642000 18000 0 AKTT} + {662670000 18000 0 AKTT} + {692823600 18000 0 AQTT} + {701805600 21600 1 AQTST} + {717526800 18000 0 AQTT} + {733266000 21600 1 AQTST} + {748990800 18000 0 AQTT} + {764715600 21600 1 AQTST} + {780440400 18000 0 AQTT} + {796165200 21600 1 AQTST} + {811890000 18000 0 AQTT} + {828219600 21600 1 AQTST} + {846363600 18000 0 AQTT} + {859669200 21600 1 AQTST} + {877813200 18000 0 AQTT} + {891118800 21600 1 AQTST} + {909262800 18000 0 AQTT} + {922568400 21600 1 AQTST} + {941317200 18000 0 AQTT} + {954018000 21600 1 AQTST} + {972766800 18000 0 AQTT} + {985467600 21600 1 AQTST} + {1004216400 18000 0 AQTT} + {1017522000 21600 1 AQTST} + {1035666000 18000 0 AQTT} + {1048971600 21600 1 AQTST} + {1067115600 18000 0 AQTT} + {1080421200 21600 1 AQTST} + {1099170000 18000 0 AQTT} + {1110826800 18000 0 AQTT} +} diff --git a/library/tzdata/Asia/Ashgabat b/library/tzdata/Asia/Ashgabat index 64bdb3a..794bc9f 100644 --- a/library/tzdata/Asia/Ashgabat +++ b/library/tzdata/Asia/Ashgabat @@ -1,31 +1,31 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Ashgabat) { - {-9223372036854775808 14012 0 LMT} - {-1441166012 14400 0 ASHT} - {-1247544000 18000 0 ASHT} - {354913200 21600 1 ASHST} - {370720800 18000 0 ASHT} - {386449200 21600 1 ASHST} - {402256800 18000 0 ASHT} - {417985200 21600 1 ASHST} - {433792800 18000 0 ASHT} - {449607600 21600 1 ASHST} - {465339600 18000 0 ASHT} - {481064400 21600 1 ASHST} - {496789200 18000 0 ASHT} - {512514000 21600 1 ASHST} - {528238800 18000 0 ASHT} - {543963600 21600 1 ASHST} - {559688400 18000 0 ASHT} - {575413200 21600 1 ASHST} - {591138000 18000 0 ASHT} - {606862800 21600 1 ASHST} - {622587600 18000 0 ASHT} - {638312400 21600 1 ASHST} - {654642000 18000 0 ASHT} - {670366800 14400 0 ASHT} - {670370400 18000 1 ASHST} - {686095200 14400 0 ASHT} - {695772000 18000 0 TMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Ashgabat) { + {-9223372036854775808 14012 0 LMT} + {-1441166012 14400 0 ASHT} + {-1247544000 18000 0 ASHT} + {354913200 21600 1 ASHST} + {370720800 18000 0 ASHT} + {386449200 21600 1 ASHST} + {402256800 18000 0 ASHT} + {417985200 21600 1 ASHST} + {433792800 18000 0 ASHT} + {449607600 21600 1 ASHST} + {465339600 18000 0 ASHT} + {481064400 21600 1 ASHST} + {496789200 18000 0 ASHT} + {512514000 21600 1 ASHST} + {528238800 18000 0 ASHT} + {543963600 21600 1 ASHST} + {559688400 18000 0 ASHT} + {575413200 21600 1 ASHST} + {591138000 18000 0 ASHT} + {606862800 21600 1 ASHST} + {622587600 18000 0 ASHT} + {638312400 21600 1 ASHST} + {654642000 18000 0 ASHT} + {670366800 14400 0 ASHT} + {670370400 18000 1 ASHST} + {686095200 14400 0 ASHT} + {695772000 18000 0 TMT} +} diff --git a/library/tzdata/Asia/Ashkhabad b/library/tzdata/Asia/Ashkhabad index 3000c94..ebc99ad 100644 --- a/library/tzdata/Asia/Ashkhabad +++ b/library/tzdata/Asia/Ashkhabad @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Ashgabat)]} { - LoadTimeZoneFile Asia/Ashgabat -} -set TZData(:Asia/Ashkhabad) $TZData(:Asia/Ashgabat) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Ashgabat)]} { + LoadTimeZoneFile Asia/Ashgabat +} +set TZData(:Asia/Ashkhabad) $TZData(:Asia/Ashgabat) diff --git a/library/tzdata/Asia/Baghdad b/library/tzdata/Asia/Baghdad index c1058cb..e92d60c 100644 --- a/library/tzdata/Asia/Baghdad +++ b/library/tzdata/Asia/Baghdad @@ -1,59 +1,59 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Baghdad) { - {-9223372036854775808 10660 0 LMT} - {-2524532260 10656 0 BMT} - {-1641005856 10800 0 AST} - {389048400 14400 0 ADT} - {402264000 10800 0 AST} - {417906000 14400 1 ADT} - {433800000 10800 0 AST} - {449614800 14400 1 ADT} - {465422400 10800 0 AST} - {481150800 14400 1 ADT} - {496792800 10800 0 AST} - {512517600 14400 1 ADT} - {528242400 10800 0 AST} - {543967200 14400 1 ADT} - {559692000 10800 0 AST} - {575416800 14400 1 ADT} - {591141600 10800 0 AST} - {606866400 14400 1 ADT} - {622591200 10800 0 AST} - {638316000 14400 1 ADT} - {654645600 10800 0 AST} - {670464000 14400 1 ADT} - {686275200 10800 0 AST} - {702086400 14400 1 ADT} - {717897600 10800 0 AST} - {733622400 14400 1 ADT} - {749433600 10800 0 AST} - {765158400 14400 1 ADT} - {780969600 10800 0 AST} - {796694400 14400 1 ADT} - {812505600 10800 0 AST} - {828316800 14400 1 ADT} - {844128000 10800 0 AST} - {859852800 14400 1 ADT} - {875664000 10800 0 AST} - {891388800 14400 1 ADT} - {907200000 10800 0 AST} - {922924800 14400 1 ADT} - {938736000 10800 0 AST} - {954547200 14400 1 ADT} - {970358400 10800 0 AST} - {986083200 14400 1 ADT} - {1001894400 10800 0 AST} - {1017619200 14400 1 ADT} - {1033430400 10800 0 AST} - {1049155200 14400 1 ADT} - {1064966400 10800 0 AST} - {1080777600 14400 1 ADT} - {1096588800 10800 0 AST} - {1112313600 14400 1 ADT} - {1128124800 10800 0 AST} - {1143849600 14400 1 ADT} - {1159660800 10800 0 AST} - {1175385600 14400 1 ADT} - {1191196800 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Baghdad) { + {-9223372036854775808 10660 0 LMT} + {-2524532260 10656 0 BMT} + {-1641005856 10800 0 AST} + {389048400 14400 0 ADT} + {402264000 10800 0 AST} + {417906000 14400 1 ADT} + {433800000 10800 0 AST} + {449614800 14400 1 ADT} + {465422400 10800 0 AST} + {481150800 14400 1 ADT} + {496792800 10800 0 AST} + {512517600 14400 1 ADT} + {528242400 10800 0 AST} + {543967200 14400 1 ADT} + {559692000 10800 0 AST} + {575416800 14400 1 ADT} + {591141600 10800 0 AST} + {606866400 14400 1 ADT} + {622591200 10800 0 AST} + {638316000 14400 1 ADT} + {654645600 10800 0 AST} + {670464000 14400 1 ADT} + {686275200 10800 0 AST} + {702086400 14400 1 ADT} + {717897600 10800 0 AST} + {733622400 14400 1 ADT} + {749433600 10800 0 AST} + {765158400 14400 1 ADT} + {780969600 10800 0 AST} + {796694400 14400 1 ADT} + {812505600 10800 0 AST} + {828316800 14400 1 ADT} + {844128000 10800 0 AST} + {859852800 14400 1 ADT} + {875664000 10800 0 AST} + {891388800 14400 1 ADT} + {907200000 10800 0 AST} + {922924800 14400 1 ADT} + {938736000 10800 0 AST} + {954547200 14400 1 ADT} + {970358400 10800 0 AST} + {986083200 14400 1 ADT} + {1001894400 10800 0 AST} + {1017619200 14400 1 ADT} + {1033430400 10800 0 AST} + {1049155200 14400 1 ADT} + {1064966400 10800 0 AST} + {1080777600 14400 1 ADT} + {1096588800 10800 0 AST} + {1112313600 14400 1 ADT} + {1128124800 10800 0 AST} + {1143849600 14400 1 ADT} + {1159660800 10800 0 AST} + {1175385600 14400 1 ADT} + {1191196800 10800 0 AST} +} diff --git a/library/tzdata/Asia/Bahrain b/library/tzdata/Asia/Bahrain index d4b7d2c..35fa8eb 100644 --- a/library/tzdata/Asia/Bahrain +++ b/library/tzdata/Asia/Bahrain @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Bahrain) { - {-9223372036854775808 12140 0 LMT} - {-1577935340 14400 0 GST} - {76190400 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Bahrain) { + {-9223372036854775808 12140 0 LMT} + {-1577935340 14400 0 GST} + {76190400 10800 0 AST} +} diff --git a/library/tzdata/Asia/Baku b/library/tzdata/Asia/Baku index e50071b..b9704ea 100644 --- a/library/tzdata/Asia/Baku +++ b/library/tzdata/Asia/Baku @@ -1,242 +1,242 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Baku) { - {-9223372036854775808 11964 0 LMT} - {-1441163964 10800 0 BAKT} - {-405140400 14400 0 BAKT} - {354916800 18000 1 BAKST} - {370724400 14400 0 BAKT} - {386452800 18000 1 BAKST} - {402260400 14400 0 BAKT} - {417988800 18000 1 BAKST} - {433796400 14400 0 BAKT} - {449611200 18000 1 BAKST} - {465343200 14400 0 BAKT} - {481068000 18000 1 BAKST} - {496792800 14400 0 BAKT} - {512517600 18000 1 BAKST} - {528242400 14400 0 BAKT} - {543967200 18000 1 BAKST} - {559692000 14400 0 BAKT} - {575416800 18000 1 BAKST} - {591141600 14400 0 BAKT} - {606866400 18000 1 BAKST} - {622591200 14400 0 BAKT} - {638316000 18000 1 BAKST} - {654645600 14400 0 BAKT} - {670370400 14400 1 BAKST} - {683496000 14400 0 AZST} - {686098800 10800 0 AZT} - {701812800 14400 1 AZST} - {717537600 14400 0 AZT} - {820440000 14400 0 AZT} - {828234000 18000 1 AZST} - {846378000 14400 0 AZT} - {852062400 14400 0 AZT} - {859680000 18000 1 AZST} - {877824000 14400 0 AZT} - {891129600 18000 1 AZST} - {909273600 14400 0 AZT} - {922579200 18000 1 AZST} - {941328000 14400 0 AZT} - {954028800 18000 1 AZST} - {972777600 14400 0 AZT} - {985478400 18000 1 AZST} - {1004227200 14400 0 AZT} - {1017532800 18000 1 AZST} - {1035676800 14400 0 AZT} - {1048982400 18000 1 AZST} - {1067126400 14400 0 AZT} - {1080432000 18000 1 AZST} - {1099180800 14400 0 AZT} - {1111881600 18000 1 AZST} - {1130630400 14400 0 AZT} - {1143331200 18000 1 AZST} - {1162080000 14400 0 AZT} - {1174780800 18000 1 AZST} - {1193529600 14400 0 AZT} - {1206835200 18000 1 AZST} - {1224979200 14400 0 AZT} - {1238284800 18000 1 AZST} - {1256428800 14400 0 AZT} - {1269734400 18000 1 AZST} - {1288483200 14400 0 AZT} - {1301184000 18000 1 AZST} - {1319932800 14400 0 AZT} - {1332633600 18000 1 AZST} - {1351382400 14400 0 AZT} - {1364688000 18000 1 AZST} - {1382832000 14400 0 AZT} - {1396137600 18000 1 AZST} - {1414281600 14400 0 AZT} - {1427587200 18000 1 AZST} - {1445731200 14400 0 AZT} - {1459036800 18000 1 AZST} - {1477785600 14400 0 AZT} - {1490486400 18000 1 AZST} - {1509235200 14400 0 AZT} - {1521936000 18000 1 AZST} - {1540684800 14400 0 AZT} - {1553990400 18000 1 AZST} - {1572134400 14400 0 AZT} - {1585440000 18000 1 AZST} - {1603584000 14400 0 AZT} - {1616889600 18000 1 AZST} - {1635638400 14400 0 AZT} - {1648339200 18000 1 AZST} - {1667088000 14400 0 AZT} - {1679788800 18000 1 AZST} - {1698537600 14400 0 AZT} - {1711843200 18000 1 AZST} - {1729987200 14400 0 AZT} - {1743292800 18000 1 AZST} - {1761436800 14400 0 AZT} - {1774742400 18000 1 AZST} - {1792886400 14400 0 AZT} - {1806192000 18000 1 AZST} - {1824940800 14400 0 AZT} - {1837641600 18000 1 AZST} - {1856390400 14400 0 AZT} - {1869091200 18000 1 AZST} - {1887840000 14400 0 AZT} - {1901145600 18000 1 AZST} - {1919289600 14400 0 AZT} - {1932595200 18000 1 AZST} - {1950739200 14400 0 AZT} - {1964044800 18000 1 AZST} - {1982793600 14400 0 AZT} - {1995494400 18000 1 AZST} - {2014243200 14400 0 AZT} - {2026944000 18000 1 AZST} - {2045692800 14400 0 AZT} - {2058393600 18000 1 AZST} - {2077142400 14400 0 AZT} - {2090448000 18000 1 AZST} - {2108592000 14400 0 AZT} - {2121897600 18000 1 AZST} - {2140041600 14400 0 AZT} - {2153347200 18000 1 AZST} - {2172096000 14400 0 AZT} - {2184796800 18000 1 AZST} - {2203545600 14400 0 AZT} - {2216246400 18000 1 AZST} - {2234995200 14400 0 AZT} - {2248300800 18000 1 AZST} - {2266444800 14400 0 AZT} - {2279750400 18000 1 AZST} - {2297894400 14400 0 AZT} - {2311200000 18000 1 AZST} - {2329344000 14400 0 AZT} - {2342649600 18000 1 AZST} - {2361398400 14400 0 AZT} - {2374099200 18000 1 AZST} - {2392848000 14400 0 AZT} - {2405548800 18000 1 AZST} - {2424297600 14400 0 AZT} - {2437603200 18000 1 AZST} - {2455747200 14400 0 AZT} - {2469052800 18000 1 AZST} - {2487196800 14400 0 AZT} - {2500502400 18000 1 AZST} - {2519251200 14400 0 AZT} - {2531952000 18000 1 AZST} - {2550700800 14400 0 AZT} - {2563401600 18000 1 AZST} - {2582150400 14400 0 AZT} - {2595456000 18000 1 AZST} - {2613600000 14400 0 AZT} - {2626905600 18000 1 AZST} - {2645049600 14400 0 AZT} - {2658355200 18000 1 AZST} - {2676499200 14400 0 AZT} - {2689804800 18000 1 AZST} - {2708553600 14400 0 AZT} - {2721254400 18000 1 AZST} - {2740003200 14400 0 AZT} - {2752704000 18000 1 AZST} - {2771452800 14400 0 AZT} - {2784758400 18000 1 AZST} - {2802902400 14400 0 AZT} - {2816208000 18000 1 AZST} - {2834352000 14400 0 AZT} - {2847657600 18000 1 AZST} - {2866406400 14400 0 AZT} - {2879107200 18000 1 AZST} - {2897856000 14400 0 AZT} - {2910556800 18000 1 AZST} - {2929305600 14400 0 AZT} - {2942006400 18000 1 AZST} - {2960755200 14400 0 AZT} - {2974060800 18000 1 AZST} - {2992204800 14400 0 AZT} - {3005510400 18000 1 AZST} - {3023654400 14400 0 AZT} - {3036960000 18000 1 AZST} - {3055708800 14400 0 AZT} - {3068409600 18000 1 AZST} - {3087158400 14400 0 AZT} - {3099859200 18000 1 AZST} - {3118608000 14400 0 AZT} - {3131913600 18000 1 AZST} - {3150057600 14400 0 AZT} - {3163363200 18000 1 AZST} - {3181507200 14400 0 AZT} - {3194812800 18000 1 AZST} - {3212956800 14400 0 AZT} - {3226262400 18000 1 AZST} - {3245011200 14400 0 AZT} - {3257712000 18000 1 AZST} - {3276460800 14400 0 AZT} - {3289161600 18000 1 AZST} - {3307910400 14400 0 AZT} - {3321216000 18000 1 AZST} - {3339360000 14400 0 AZT} - {3352665600 18000 1 AZST} - {3370809600 14400 0 AZT} - {3384115200 18000 1 AZST} - {3402864000 14400 0 AZT} - {3415564800 18000 1 AZST} - {3434313600 14400 0 AZT} - {3447014400 18000 1 AZST} - {3465763200 14400 0 AZT} - {3479068800 18000 1 AZST} - {3497212800 14400 0 AZT} - {3510518400 18000 1 AZST} - {3528662400 14400 0 AZT} - {3541968000 18000 1 AZST} - {3560112000 14400 0 AZT} - {3573417600 18000 1 AZST} - {3592166400 14400 0 AZT} - {3604867200 18000 1 AZST} - {3623616000 14400 0 AZT} - {3636316800 18000 1 AZST} - {3655065600 14400 0 AZT} - {3668371200 18000 1 AZST} - {3686515200 14400 0 AZT} - {3699820800 18000 1 AZST} - {3717964800 14400 0 AZT} - {3731270400 18000 1 AZST} - {3750019200 14400 0 AZT} - {3762720000 18000 1 AZST} - {3781468800 14400 0 AZT} - {3794169600 18000 1 AZST} - {3812918400 14400 0 AZT} - {3825619200 18000 1 AZST} - {3844368000 14400 0 AZT} - {3857673600 18000 1 AZST} - {3875817600 14400 0 AZT} - {3889123200 18000 1 AZST} - {3907267200 14400 0 AZT} - {3920572800 18000 1 AZST} - {3939321600 14400 0 AZT} - {3952022400 18000 1 AZST} - {3970771200 14400 0 AZT} - {3983472000 18000 1 AZST} - {4002220800 14400 0 AZT} - {4015526400 18000 1 AZST} - {4033670400 14400 0 AZT} - {4046976000 18000 1 AZST} - {4065120000 14400 0 AZT} - {4078425600 18000 1 AZST} - {4096569600 14400 0 AZT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Baku) { + {-9223372036854775808 11964 0 LMT} + {-1441163964 10800 0 BAKT} + {-405140400 14400 0 BAKT} + {354916800 18000 1 BAKST} + {370724400 14400 0 BAKT} + {386452800 18000 1 BAKST} + {402260400 14400 0 BAKT} + {417988800 18000 1 BAKST} + {433796400 14400 0 BAKT} + {449611200 18000 1 BAKST} + {465343200 14400 0 BAKT} + {481068000 18000 1 BAKST} + {496792800 14400 0 BAKT} + {512517600 18000 1 BAKST} + {528242400 14400 0 BAKT} + {543967200 18000 1 BAKST} + {559692000 14400 0 BAKT} + {575416800 18000 1 BAKST} + {591141600 14400 0 BAKT} + {606866400 18000 1 BAKST} + {622591200 14400 0 BAKT} + {638316000 18000 1 BAKST} + {654645600 14400 0 BAKT} + {670370400 14400 1 BAKST} + {683496000 14400 0 AZST} + {686098800 10800 0 AZT} + {701812800 14400 1 AZST} + {717537600 14400 0 AZT} + {820440000 14400 0 AZT} + {828234000 18000 1 AZST} + {846378000 14400 0 AZT} + {852062400 14400 0 AZT} + {859680000 18000 1 AZST} + {877824000 14400 0 AZT} + {891129600 18000 1 AZST} + {909273600 14400 0 AZT} + {922579200 18000 1 AZST} + {941328000 14400 0 AZT} + {954028800 18000 1 AZST} + {972777600 14400 0 AZT} + {985478400 18000 1 AZST} + {1004227200 14400 0 AZT} + {1017532800 18000 1 AZST} + {1035676800 14400 0 AZT} + {1048982400 18000 1 AZST} + {1067126400 14400 0 AZT} + {1080432000 18000 1 AZST} + {1099180800 14400 0 AZT} + {1111881600 18000 1 AZST} + {1130630400 14400 0 AZT} + {1143331200 18000 1 AZST} + {1162080000 14400 0 AZT} + {1174780800 18000 1 AZST} + {1193529600 14400 0 AZT} + {1206835200 18000 1 AZST} + {1224979200 14400 0 AZT} + {1238284800 18000 1 AZST} + {1256428800 14400 0 AZT} + {1269734400 18000 1 AZST} + {1288483200 14400 0 AZT} + {1301184000 18000 1 AZST} + {1319932800 14400 0 AZT} + {1332633600 18000 1 AZST} + {1351382400 14400 0 AZT} + {1364688000 18000 1 AZST} + {1382832000 14400 0 AZT} + {1396137600 18000 1 AZST} + {1414281600 14400 0 AZT} + {1427587200 18000 1 AZST} + {1445731200 14400 0 AZT} + {1459036800 18000 1 AZST} + {1477785600 14400 0 AZT} + {1490486400 18000 1 AZST} + {1509235200 14400 0 AZT} + {1521936000 18000 1 AZST} + {1540684800 14400 0 AZT} + {1553990400 18000 1 AZST} + {1572134400 14400 0 AZT} + {1585440000 18000 1 AZST} + {1603584000 14400 0 AZT} + {1616889600 18000 1 AZST} + {1635638400 14400 0 AZT} + {1648339200 18000 1 AZST} + {1667088000 14400 0 AZT} + {1679788800 18000 1 AZST} + {1698537600 14400 0 AZT} + {1711843200 18000 1 AZST} + {1729987200 14400 0 AZT} + {1743292800 18000 1 AZST} + {1761436800 14400 0 AZT} + {1774742400 18000 1 AZST} + {1792886400 14400 0 AZT} + {1806192000 18000 1 AZST} + {1824940800 14400 0 AZT} + {1837641600 18000 1 AZST} + {1856390400 14400 0 AZT} + {1869091200 18000 1 AZST} + {1887840000 14400 0 AZT} + {1901145600 18000 1 AZST} + {1919289600 14400 0 AZT} + {1932595200 18000 1 AZST} + {1950739200 14400 0 AZT} + {1964044800 18000 1 AZST} + {1982793600 14400 0 AZT} + {1995494400 18000 1 AZST} + {2014243200 14400 0 AZT} + {2026944000 18000 1 AZST} + {2045692800 14400 0 AZT} + {2058393600 18000 1 AZST} + {2077142400 14400 0 AZT} + {2090448000 18000 1 AZST} + {2108592000 14400 0 AZT} + {2121897600 18000 1 AZST} + {2140041600 14400 0 AZT} + {2153347200 18000 1 AZST} + {2172096000 14400 0 AZT} + {2184796800 18000 1 AZST} + {2203545600 14400 0 AZT} + {2216246400 18000 1 AZST} + {2234995200 14400 0 AZT} + {2248300800 18000 1 AZST} + {2266444800 14400 0 AZT} + {2279750400 18000 1 AZST} + {2297894400 14400 0 AZT} + {2311200000 18000 1 AZST} + {2329344000 14400 0 AZT} + {2342649600 18000 1 AZST} + {2361398400 14400 0 AZT} + {2374099200 18000 1 AZST} + {2392848000 14400 0 AZT} + {2405548800 18000 1 AZST} + {2424297600 14400 0 AZT} + {2437603200 18000 1 AZST} + {2455747200 14400 0 AZT} + {2469052800 18000 1 AZST} + {2487196800 14400 0 AZT} + {2500502400 18000 1 AZST} + {2519251200 14400 0 AZT} + {2531952000 18000 1 AZST} + {2550700800 14400 0 AZT} + {2563401600 18000 1 AZST} + {2582150400 14400 0 AZT} + {2595456000 18000 1 AZST} + {2613600000 14400 0 AZT} + {2626905600 18000 1 AZST} + {2645049600 14400 0 AZT} + {2658355200 18000 1 AZST} + {2676499200 14400 0 AZT} + {2689804800 18000 1 AZST} + {2708553600 14400 0 AZT} + {2721254400 18000 1 AZST} + {2740003200 14400 0 AZT} + {2752704000 18000 1 AZST} + {2771452800 14400 0 AZT} + {2784758400 18000 1 AZST} + {2802902400 14400 0 AZT} + {2816208000 18000 1 AZST} + {2834352000 14400 0 AZT} + {2847657600 18000 1 AZST} + {2866406400 14400 0 AZT} + {2879107200 18000 1 AZST} + {2897856000 14400 0 AZT} + {2910556800 18000 1 AZST} + {2929305600 14400 0 AZT} + {2942006400 18000 1 AZST} + {2960755200 14400 0 AZT} + {2974060800 18000 1 AZST} + {2992204800 14400 0 AZT} + {3005510400 18000 1 AZST} + {3023654400 14400 0 AZT} + {3036960000 18000 1 AZST} + {3055708800 14400 0 AZT} + {3068409600 18000 1 AZST} + {3087158400 14400 0 AZT} + {3099859200 18000 1 AZST} + {3118608000 14400 0 AZT} + {3131913600 18000 1 AZST} + {3150057600 14400 0 AZT} + {3163363200 18000 1 AZST} + {3181507200 14400 0 AZT} + {3194812800 18000 1 AZST} + {3212956800 14400 0 AZT} + {3226262400 18000 1 AZST} + {3245011200 14400 0 AZT} + {3257712000 18000 1 AZST} + {3276460800 14400 0 AZT} + {3289161600 18000 1 AZST} + {3307910400 14400 0 AZT} + {3321216000 18000 1 AZST} + {3339360000 14400 0 AZT} + {3352665600 18000 1 AZST} + {3370809600 14400 0 AZT} + {3384115200 18000 1 AZST} + {3402864000 14400 0 AZT} + {3415564800 18000 1 AZST} + {3434313600 14400 0 AZT} + {3447014400 18000 1 AZST} + {3465763200 14400 0 AZT} + {3479068800 18000 1 AZST} + {3497212800 14400 0 AZT} + {3510518400 18000 1 AZST} + {3528662400 14400 0 AZT} + {3541968000 18000 1 AZST} + {3560112000 14400 0 AZT} + {3573417600 18000 1 AZST} + {3592166400 14400 0 AZT} + {3604867200 18000 1 AZST} + {3623616000 14400 0 AZT} + {3636316800 18000 1 AZST} + {3655065600 14400 0 AZT} + {3668371200 18000 1 AZST} + {3686515200 14400 0 AZT} + {3699820800 18000 1 AZST} + {3717964800 14400 0 AZT} + {3731270400 18000 1 AZST} + {3750019200 14400 0 AZT} + {3762720000 18000 1 AZST} + {3781468800 14400 0 AZT} + {3794169600 18000 1 AZST} + {3812918400 14400 0 AZT} + {3825619200 18000 1 AZST} + {3844368000 14400 0 AZT} + {3857673600 18000 1 AZST} + {3875817600 14400 0 AZT} + {3889123200 18000 1 AZST} + {3907267200 14400 0 AZT} + {3920572800 18000 1 AZST} + {3939321600 14400 0 AZT} + {3952022400 18000 1 AZST} + {3970771200 14400 0 AZT} + {3983472000 18000 1 AZST} + {4002220800 14400 0 AZT} + {4015526400 18000 1 AZST} + {4033670400 14400 0 AZT} + {4046976000 18000 1 AZST} + {4065120000 14400 0 AZT} + {4078425600 18000 1 AZST} + {4096569600 14400 0 AZT} +} diff --git a/library/tzdata/Asia/Bangkok b/library/tzdata/Asia/Bangkok index 6df7680..2c405cc 100644 --- a/library/tzdata/Asia/Bangkok +++ b/library/tzdata/Asia/Bangkok @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Bangkok) { - {-9223372036854775808 24124 0 LMT} - {-2840164924 24124 0 BMT} - {-1570084924 25200 0 ICT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Bangkok) { + {-9223372036854775808 24124 0 LMT} + {-2840164924 24124 0 BMT} + {-1570084924 25200 0 ICT} +} diff --git a/library/tzdata/Asia/Beirut b/library/tzdata/Asia/Beirut index ac0a64e..8b70bb9 100644 --- a/library/tzdata/Asia/Beirut +++ b/library/tzdata/Asia/Beirut @@ -1,270 +1,270 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Beirut) { - {-9223372036854775808 8520 0 LMT} - {-2840149320 7200 0 EET} - {-1570413600 10800 1 EEST} - {-1552186800 7200 0 EET} - {-1538359200 10800 1 EEST} - {-1522551600 7200 0 EET} - {-1507514400 10800 1 EEST} - {-1490583600 7200 0 EET} - {-1473645600 10800 1 EEST} - {-1460948400 7200 0 EET} - {-399866400 10800 1 EEST} - {-386650800 7200 0 EET} - {-368330400 10800 1 EEST} - {-355114800 7200 0 EET} - {-336794400 10800 1 EEST} - {-323578800 7200 0 EET} - {-305172000 10800 1 EEST} - {-291956400 7200 0 EET} - {-273636000 10800 1 EEST} - {-260420400 7200 0 EET} - {78012000 10800 1 EEST} - {86734800 7200 0 EET} - {105055200 10800 1 EEST} - {118270800 7200 0 EET} - {136591200 10800 1 EEST} - {149806800 7200 0 EET} - {168127200 10800 1 EEST} - {181342800 7200 0 EET} - {199749600 10800 1 EEST} - {212965200 7200 0 EET} - {231285600 10800 1 EEST} - {244501200 7200 0 EET} - {262735200 10800 1 EEST} - {275950800 7200 0 EET} - {452210400 10800 1 EEST} - {466722000 7200 0 EET} - {483746400 10800 1 EEST} - {498258000 7200 0 EET} - {515282400 10800 1 EEST} - {529794000 7200 0 EET} - {546818400 10800 1 EEST} - {561330000 7200 0 EET} - {581119200 10800 1 EEST} - {592952400 7200 0 EET} - {610754400 10800 1 EEST} - {624488400 7200 0 EET} - {641512800 10800 1 EEST} - {656024400 7200 0 EET} - {673048800 10800 1 EEST} - {687560400 7200 0 EET} - {704671200 10800 1 EEST} - {718146000 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {843944400 7200 0 EET} - {859672800 10800 1 EEST} - {875394000 7200 0 EET} - {891122400 10800 1 EEST} - {906843600 7200 0 EET} - {922572000 10800 1 EEST} - {941317200 7200 0 EET} - {954021600 10800 1 EEST} - {972766800 7200 0 EET} - {985471200 10800 1 EEST} - {1004216400 7200 0 EET} - {1017525600 10800 1 EEST} - {1035666000 7200 0 EET} - {1048975200 10800 1 EEST} - {1067115600 7200 0 EET} - {1080424800 10800 1 EEST} - {1099170000 7200 0 EET} - {1111874400 10800 1 EEST} - {1130619600 7200 0 EET} - {1143324000 10800 1 EEST} - {1162069200 7200 0 EET} - {1174773600 10800 1 EEST} - {1193518800 7200 0 EET} - {1206828000 10800 1 EEST} - {1224968400 7200 0 EET} - {1238277600 10800 1 EEST} - {1256418000 7200 0 EET} - {1269727200 10800 1 EEST} - {1288472400 7200 0 EET} - {1301176800 10800 1 EEST} - {1319922000 7200 0 EET} - {1332626400 10800 1 EEST} - {1351371600 7200 0 EET} - {1364680800 10800 1 EEST} - {1382821200 7200 0 EET} - {1396130400 10800 1 EEST} - {1414270800 7200 0 EET} - {1427580000 10800 1 EEST} - {1445720400 7200 0 EET} - {1459029600 10800 1 EEST} - {1477774800 7200 0 EET} - {1490479200 10800 1 EEST} - {1509224400 7200 0 EET} - {1521928800 10800 1 EEST} - {1540674000 7200 0 EET} - {1553983200 10800 1 EEST} - {1572123600 7200 0 EET} - {1585432800 10800 1 EEST} - {1603573200 7200 0 EET} - {1616882400 10800 1 EEST} - {1635627600 7200 0 EET} - {1648332000 10800 1 EEST} - {1667077200 7200 0 EET} - {1679781600 10800 1 EEST} - {1698526800 7200 0 EET} - {1711836000 10800 1 EEST} - {1729976400 7200 0 EET} - {1743285600 10800 1 EEST} - {1761426000 7200 0 EET} - {1774735200 10800 1 EEST} - {1792875600 7200 0 EET} - {1806184800 10800 1 EEST} - {1824930000 7200 0 EET} - {1837634400 10800 1 EEST} - {1856379600 7200 0 EET} - {1869084000 10800 1 EEST} - {1887829200 7200 0 EET} - {1901138400 10800 1 EEST} - {1919278800 7200 0 EET} - {1932588000 10800 1 EEST} - {1950728400 7200 0 EET} - {1964037600 10800 1 EEST} - {1982782800 7200 0 EET} - {1995487200 10800 1 EEST} - {2014232400 7200 0 EET} - {2026936800 10800 1 EEST} - {2045682000 7200 0 EET} - {2058386400 10800 1 EEST} - {2077131600 7200 0 EET} - {2090440800 10800 1 EEST} - {2108581200 7200 0 EET} - {2121890400 10800 1 EEST} - {2140030800 7200 0 EET} - {2153340000 10800 1 EEST} - {2172085200 7200 0 EET} - {2184789600 10800 1 EEST} - {2203534800 7200 0 EET} - {2216239200 10800 1 EEST} - {2234984400 7200 0 EET} - {2248293600 10800 1 EEST} - {2266434000 7200 0 EET} - {2279743200 10800 1 EEST} - {2297883600 7200 0 EET} - {2311192800 10800 1 EEST} - {2329333200 7200 0 EET} - {2342642400 10800 1 EEST} - {2361387600 7200 0 EET} - {2374092000 10800 1 EEST} - {2392837200 7200 0 EET} - {2405541600 10800 1 EEST} - {2424286800 7200 0 EET} - {2437596000 10800 1 EEST} - {2455736400 7200 0 EET} - {2469045600 10800 1 EEST} - {2487186000 7200 0 EET} - {2500495200 10800 1 EEST} - {2519240400 7200 0 EET} - {2531944800 10800 1 EEST} - {2550690000 7200 0 EET} - {2563394400 10800 1 EEST} - {2582139600 7200 0 EET} - {2595448800 10800 1 EEST} - {2613589200 7200 0 EET} - {2626898400 10800 1 EEST} - {2645038800 7200 0 EET} - {2658348000 10800 1 EEST} - {2676488400 7200 0 EET} - {2689797600 10800 1 EEST} - {2708542800 7200 0 EET} - {2721247200 10800 1 EEST} - {2739992400 7200 0 EET} - {2752696800 10800 1 EEST} - {2771442000 7200 0 EET} - {2784751200 10800 1 EEST} - {2802891600 7200 0 EET} - {2816200800 10800 1 EEST} - {2834341200 7200 0 EET} - {2847650400 10800 1 EEST} - {2866395600 7200 0 EET} - {2879100000 10800 1 EEST} - {2897845200 7200 0 EET} - {2910549600 10800 1 EEST} - {2929294800 7200 0 EET} - {2941999200 10800 1 EEST} - {2960744400 7200 0 EET} - {2974053600 10800 1 EEST} - {2992194000 7200 0 EET} - {3005503200 10800 1 EEST} - {3023643600 7200 0 EET} - {3036952800 10800 1 EEST} - {3055698000 7200 0 EET} - {3068402400 10800 1 EEST} - {3087147600 7200 0 EET} - {3099852000 10800 1 EEST} - {3118597200 7200 0 EET} - {3131906400 10800 1 EEST} - {3150046800 7200 0 EET} - {3163356000 10800 1 EEST} - {3181496400 7200 0 EET} - {3194805600 10800 1 EEST} - {3212946000 7200 0 EET} - {3226255200 10800 1 EEST} - {3245000400 7200 0 EET} - {3257704800 10800 1 EEST} - {3276450000 7200 0 EET} - {3289154400 10800 1 EEST} - {3307899600 7200 0 EET} - {3321208800 10800 1 EEST} - {3339349200 7200 0 EET} - {3352658400 10800 1 EEST} - {3370798800 7200 0 EET} - {3384108000 10800 1 EEST} - {3402853200 7200 0 EET} - {3415557600 10800 1 EEST} - {3434302800 7200 0 EET} - {3447007200 10800 1 EEST} - {3465752400 7200 0 EET} - {3479061600 10800 1 EEST} - {3497202000 7200 0 EET} - {3510511200 10800 1 EEST} - {3528651600 7200 0 EET} - {3541960800 10800 1 EEST} - {3560101200 7200 0 EET} - {3573410400 10800 1 EEST} - {3592155600 7200 0 EET} - {3604860000 10800 1 EEST} - {3623605200 7200 0 EET} - {3636309600 10800 1 EEST} - {3655054800 7200 0 EET} - {3668364000 10800 1 EEST} - {3686504400 7200 0 EET} - {3699813600 10800 1 EEST} - {3717954000 7200 0 EET} - {3731263200 10800 1 EEST} - {3750008400 7200 0 EET} - {3762712800 10800 1 EEST} - {3781458000 7200 0 EET} - {3794162400 10800 1 EEST} - {3812907600 7200 0 EET} - {3825612000 10800 1 EEST} - {3844357200 7200 0 EET} - {3857666400 10800 1 EEST} - {3875806800 7200 0 EET} - {3889116000 10800 1 EEST} - {3907256400 7200 0 EET} - {3920565600 10800 1 EEST} - {3939310800 7200 0 EET} - {3952015200 10800 1 EEST} - {3970760400 7200 0 EET} - {3983464800 10800 1 EEST} - {4002210000 7200 0 EET} - {4015519200 10800 1 EEST} - {4033659600 7200 0 EET} - {4046968800 10800 1 EEST} - {4065109200 7200 0 EET} - {4078418400 10800 1 EEST} - {4096558800 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Beirut) { + {-9223372036854775808 8520 0 LMT} + {-2840149320 7200 0 EET} + {-1570413600 10800 1 EEST} + {-1552186800 7200 0 EET} + {-1538359200 10800 1 EEST} + {-1522551600 7200 0 EET} + {-1507514400 10800 1 EEST} + {-1490583600 7200 0 EET} + {-1473645600 10800 1 EEST} + {-1460948400 7200 0 EET} + {-399866400 10800 1 EEST} + {-386650800 7200 0 EET} + {-368330400 10800 1 EEST} + {-355114800 7200 0 EET} + {-336794400 10800 1 EEST} + {-323578800 7200 0 EET} + {-305172000 10800 1 EEST} + {-291956400 7200 0 EET} + {-273636000 10800 1 EEST} + {-260420400 7200 0 EET} + {78012000 10800 1 EEST} + {86734800 7200 0 EET} + {105055200 10800 1 EEST} + {118270800 7200 0 EET} + {136591200 10800 1 EEST} + {149806800 7200 0 EET} + {168127200 10800 1 EEST} + {181342800 7200 0 EET} + {199749600 10800 1 EEST} + {212965200 7200 0 EET} + {231285600 10800 1 EEST} + {244501200 7200 0 EET} + {262735200 10800 1 EEST} + {275950800 7200 0 EET} + {452210400 10800 1 EEST} + {466722000 7200 0 EET} + {483746400 10800 1 EEST} + {498258000 7200 0 EET} + {515282400 10800 1 EEST} + {529794000 7200 0 EET} + {546818400 10800 1 EEST} + {561330000 7200 0 EET} + {581119200 10800 1 EEST} + {592952400 7200 0 EET} + {610754400 10800 1 EEST} + {624488400 7200 0 EET} + {641512800 10800 1 EEST} + {656024400 7200 0 EET} + {673048800 10800 1 EEST} + {687560400 7200 0 EET} + {704671200 10800 1 EEST} + {718146000 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {843944400 7200 0 EET} + {859672800 10800 1 EEST} + {875394000 7200 0 EET} + {891122400 10800 1 EEST} + {906843600 7200 0 EET} + {922572000 10800 1 EEST} + {941317200 7200 0 EET} + {954021600 10800 1 EEST} + {972766800 7200 0 EET} + {985471200 10800 1 EEST} + {1004216400 7200 0 EET} + {1017525600 10800 1 EEST} + {1035666000 7200 0 EET} + {1048975200 10800 1 EEST} + {1067115600 7200 0 EET} + {1080424800 10800 1 EEST} + {1099170000 7200 0 EET} + {1111874400 10800 1 EEST} + {1130619600 7200 0 EET} + {1143324000 10800 1 EEST} + {1162069200 7200 0 EET} + {1174773600 10800 1 EEST} + {1193518800 7200 0 EET} + {1206828000 10800 1 EEST} + {1224968400 7200 0 EET} + {1238277600 10800 1 EEST} + {1256418000 7200 0 EET} + {1269727200 10800 1 EEST} + {1288472400 7200 0 EET} + {1301176800 10800 1 EEST} + {1319922000 7200 0 EET} + {1332626400 10800 1 EEST} + {1351371600 7200 0 EET} + {1364680800 10800 1 EEST} + {1382821200 7200 0 EET} + {1396130400 10800 1 EEST} + {1414270800 7200 0 EET} + {1427580000 10800 1 EEST} + {1445720400 7200 0 EET} + {1459029600 10800 1 EEST} + {1477774800 7200 0 EET} + {1490479200 10800 1 EEST} + {1509224400 7200 0 EET} + {1521928800 10800 1 EEST} + {1540674000 7200 0 EET} + {1553983200 10800 1 EEST} + {1572123600 7200 0 EET} + {1585432800 10800 1 EEST} + {1603573200 7200 0 EET} + {1616882400 10800 1 EEST} + {1635627600 7200 0 EET} + {1648332000 10800 1 EEST} + {1667077200 7200 0 EET} + {1679781600 10800 1 EEST} + {1698526800 7200 0 EET} + {1711836000 10800 1 EEST} + {1729976400 7200 0 EET} + {1743285600 10800 1 EEST} + {1761426000 7200 0 EET} + {1774735200 10800 1 EEST} + {1792875600 7200 0 EET} + {1806184800 10800 1 EEST} + {1824930000 7200 0 EET} + {1837634400 10800 1 EEST} + {1856379600 7200 0 EET} + {1869084000 10800 1 EEST} + {1887829200 7200 0 EET} + {1901138400 10800 1 EEST} + {1919278800 7200 0 EET} + {1932588000 10800 1 EEST} + {1950728400 7200 0 EET} + {1964037600 10800 1 EEST} + {1982782800 7200 0 EET} + {1995487200 10800 1 EEST} + {2014232400 7200 0 EET} + {2026936800 10800 1 EEST} + {2045682000 7200 0 EET} + {2058386400 10800 1 EEST} + {2077131600 7200 0 EET} + {2090440800 10800 1 EEST} + {2108581200 7200 0 EET} + {2121890400 10800 1 EEST} + {2140030800 7200 0 EET} + {2153340000 10800 1 EEST} + {2172085200 7200 0 EET} + {2184789600 10800 1 EEST} + {2203534800 7200 0 EET} + {2216239200 10800 1 EEST} + {2234984400 7200 0 EET} + {2248293600 10800 1 EEST} + {2266434000 7200 0 EET} + {2279743200 10800 1 EEST} + {2297883600 7200 0 EET} + {2311192800 10800 1 EEST} + {2329333200 7200 0 EET} + {2342642400 10800 1 EEST} + {2361387600 7200 0 EET} + {2374092000 10800 1 EEST} + {2392837200 7200 0 EET} + {2405541600 10800 1 EEST} + {2424286800 7200 0 EET} + {2437596000 10800 1 EEST} + {2455736400 7200 0 EET} + {2469045600 10800 1 EEST} + {2487186000 7200 0 EET} + {2500495200 10800 1 EEST} + {2519240400 7200 0 EET} + {2531944800 10800 1 EEST} + {2550690000 7200 0 EET} + {2563394400 10800 1 EEST} + {2582139600 7200 0 EET} + {2595448800 10800 1 EEST} + {2613589200 7200 0 EET} + {2626898400 10800 1 EEST} + {2645038800 7200 0 EET} + {2658348000 10800 1 EEST} + {2676488400 7200 0 EET} + {2689797600 10800 1 EEST} + {2708542800 7200 0 EET} + {2721247200 10800 1 EEST} + {2739992400 7200 0 EET} + {2752696800 10800 1 EEST} + {2771442000 7200 0 EET} + {2784751200 10800 1 EEST} + {2802891600 7200 0 EET} + {2816200800 10800 1 EEST} + {2834341200 7200 0 EET} + {2847650400 10800 1 EEST} + {2866395600 7200 0 EET} + {2879100000 10800 1 EEST} + {2897845200 7200 0 EET} + {2910549600 10800 1 EEST} + {2929294800 7200 0 EET} + {2941999200 10800 1 EEST} + {2960744400 7200 0 EET} + {2974053600 10800 1 EEST} + {2992194000 7200 0 EET} + {3005503200 10800 1 EEST} + {3023643600 7200 0 EET} + {3036952800 10800 1 EEST} + {3055698000 7200 0 EET} + {3068402400 10800 1 EEST} + {3087147600 7200 0 EET} + {3099852000 10800 1 EEST} + {3118597200 7200 0 EET} + {3131906400 10800 1 EEST} + {3150046800 7200 0 EET} + {3163356000 10800 1 EEST} + {3181496400 7200 0 EET} + {3194805600 10800 1 EEST} + {3212946000 7200 0 EET} + {3226255200 10800 1 EEST} + {3245000400 7200 0 EET} + {3257704800 10800 1 EEST} + {3276450000 7200 0 EET} + {3289154400 10800 1 EEST} + {3307899600 7200 0 EET} + {3321208800 10800 1 EEST} + {3339349200 7200 0 EET} + {3352658400 10800 1 EEST} + {3370798800 7200 0 EET} + {3384108000 10800 1 EEST} + {3402853200 7200 0 EET} + {3415557600 10800 1 EEST} + {3434302800 7200 0 EET} + {3447007200 10800 1 EEST} + {3465752400 7200 0 EET} + {3479061600 10800 1 EEST} + {3497202000 7200 0 EET} + {3510511200 10800 1 EEST} + {3528651600 7200 0 EET} + {3541960800 10800 1 EEST} + {3560101200 7200 0 EET} + {3573410400 10800 1 EEST} + {3592155600 7200 0 EET} + {3604860000 10800 1 EEST} + {3623605200 7200 0 EET} + {3636309600 10800 1 EEST} + {3655054800 7200 0 EET} + {3668364000 10800 1 EEST} + {3686504400 7200 0 EET} + {3699813600 10800 1 EEST} + {3717954000 7200 0 EET} + {3731263200 10800 1 EEST} + {3750008400 7200 0 EET} + {3762712800 10800 1 EEST} + {3781458000 7200 0 EET} + {3794162400 10800 1 EEST} + {3812907600 7200 0 EET} + {3825612000 10800 1 EEST} + {3844357200 7200 0 EET} + {3857666400 10800 1 EEST} + {3875806800 7200 0 EET} + {3889116000 10800 1 EEST} + {3907256400 7200 0 EET} + {3920565600 10800 1 EEST} + {3939310800 7200 0 EET} + {3952015200 10800 1 EEST} + {3970760400 7200 0 EET} + {3983464800 10800 1 EEST} + {4002210000 7200 0 EET} + {4015519200 10800 1 EEST} + {4033659600 7200 0 EET} + {4046968800 10800 1 EEST} + {4065109200 7200 0 EET} + {4078418400 10800 1 EEST} + {4096558800 7200 0 EET} +} diff --git a/library/tzdata/Asia/Bishkek b/library/tzdata/Asia/Bishkek index 6ba3896..8f9f8b7 100644 --- a/library/tzdata/Asia/Bishkek +++ b/library/tzdata/Asia/Bishkek @@ -1,57 +1,57 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Bishkek) { - {-9223372036854775808 17904 0 LMT} - {-1441169904 18000 0 FRUT} - {-1247547600 21600 0 FRUT} - {354909600 25200 1 FRUST} - {370717200 21600 0 FRUT} - {386445600 25200 1 FRUST} - {402253200 21600 0 FRUT} - {417981600 25200 1 FRUST} - {433789200 21600 0 FRUT} - {449604000 25200 1 FRUST} - {465336000 21600 0 FRUT} - {481060800 25200 1 FRUST} - {496785600 21600 0 FRUT} - {512510400 25200 1 FRUST} - {528235200 21600 0 FRUT} - {543960000 25200 1 FRUST} - {559684800 21600 0 FRUT} - {575409600 25200 1 FRUST} - {591134400 21600 0 FRUT} - {606859200 25200 1 FRUST} - {622584000 21600 0 FRUT} - {638308800 25200 1 FRUST} - {654638400 21600 0 FRUT} - {670363200 21600 1 FRUST} - {683582400 21600 0 KGT} - {703018800 21600 1 KGST} - {717530400 18000 0 KGT} - {734468400 21600 1 KGST} - {748980000 18000 0 KGT} - {765918000 21600 1 KGST} - {780429600 18000 0 KGT} - {797367600 21600 1 KGST} - {811879200 18000 0 KGT} - {828817200 21600 1 KGST} - {843933600 18000 0 KGT} - {859671000 21600 1 KGST} - {877811400 18000 0 KGT} - {891120600 21600 1 KGST} - {909261000 18000 0 KGT} - {922570200 21600 1 KGST} - {941315400 18000 0 KGT} - {954019800 21600 1 KGST} - {972765000 18000 0 KGT} - {985469400 21600 1 KGST} - {1004214600 18000 0 KGT} - {1017523800 21600 1 KGST} - {1035664200 18000 0 KGT} - {1048973400 21600 1 KGST} - {1067113800 18000 0 KGT} - {1080423000 21600 1 KGST} - {1099168200 18000 0 KGT} - {1111872600 21600 1 KGST} - {1123783200 21600 0 KGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Bishkek) { + {-9223372036854775808 17904 0 LMT} + {-1441169904 18000 0 FRUT} + {-1247547600 21600 0 FRUT} + {354909600 25200 1 FRUST} + {370717200 21600 0 FRUT} + {386445600 25200 1 FRUST} + {402253200 21600 0 FRUT} + {417981600 25200 1 FRUST} + {433789200 21600 0 FRUT} + {449604000 25200 1 FRUST} + {465336000 21600 0 FRUT} + {481060800 25200 1 FRUST} + {496785600 21600 0 FRUT} + {512510400 25200 1 FRUST} + {528235200 21600 0 FRUT} + {543960000 25200 1 FRUST} + {559684800 21600 0 FRUT} + {575409600 25200 1 FRUST} + {591134400 21600 0 FRUT} + {606859200 25200 1 FRUST} + {622584000 21600 0 FRUT} + {638308800 25200 1 FRUST} + {654638400 21600 0 FRUT} + {670363200 21600 1 FRUST} + {683582400 21600 0 KGT} + {703018800 21600 1 KGST} + {717530400 18000 0 KGT} + {734468400 21600 1 KGST} + {748980000 18000 0 KGT} + {765918000 21600 1 KGST} + {780429600 18000 0 KGT} + {797367600 21600 1 KGST} + {811879200 18000 0 KGT} + {828817200 21600 1 KGST} + {843933600 18000 0 KGT} + {859671000 21600 1 KGST} + {877811400 18000 0 KGT} + {891120600 21600 1 KGST} + {909261000 18000 0 KGT} + {922570200 21600 1 KGST} + {941315400 18000 0 KGT} + {954019800 21600 1 KGST} + {972765000 18000 0 KGT} + {985469400 21600 1 KGST} + {1004214600 18000 0 KGT} + {1017523800 21600 1 KGST} + {1035664200 18000 0 KGT} + {1048973400 21600 1 KGST} + {1067113800 18000 0 KGT} + {1080423000 21600 1 KGST} + {1099168200 18000 0 KGT} + {1111872600 21600 1 KGST} + {1123783200 21600 0 KGT} +} diff --git a/library/tzdata/Asia/Brunei b/library/tzdata/Asia/Brunei index 63d380b..88fff9b 100644 --- a/library/tzdata/Asia/Brunei +++ b/library/tzdata/Asia/Brunei @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Brunei) { - {-9223372036854775808 27580 0 LMT} - {-1383464380 27000 0 BNT} - {-1167636600 28800 0 BNT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Brunei) { + {-9223372036854775808 27580 0 LMT} + {-1383464380 27000 0 BNT} + {-1167636600 28800 0 BNT} +} diff --git a/library/tzdata/Asia/Calcutta b/library/tzdata/Asia/Calcutta index 7243ef8..4ab0ab7 100644 --- a/library/tzdata/Asia/Calcutta +++ b/library/tzdata/Asia/Calcutta @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Kolkata)]} { - LoadTimeZoneFile Asia/Kolkata -} -set TZData(:Asia/Calcutta) $TZData(:Asia/Kolkata) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Kolkata)]} { + LoadTimeZoneFile Asia/Kolkata +} +set TZData(:Asia/Calcutta) $TZData(:Asia/Kolkata) diff --git a/library/tzdata/Asia/Choibalsan b/library/tzdata/Asia/Choibalsan index 3d42617..1725ed6 100644 --- a/library/tzdata/Asia/Choibalsan +++ b/library/tzdata/Asia/Choibalsan @@ -1,51 +1,51 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Choibalsan) { - {-9223372036854775808 27480 0 LMT} - {-2032933080 25200 0 ULAT} - {252435600 28800 0 ULAT} - {417974400 36000 0 CHOST} - {433778400 32400 0 CHOT} - {449593200 36000 1 CHOST} - {465314400 32400 0 CHOT} - {481042800 36000 1 CHOST} - {496764000 32400 0 CHOT} - {512492400 36000 1 CHOST} - {528213600 32400 0 CHOT} - {543942000 36000 1 CHOST} - {559663200 32400 0 CHOT} - {575391600 36000 1 CHOST} - {591112800 32400 0 CHOT} - {606841200 36000 1 CHOST} - {622562400 32400 0 CHOT} - {638290800 36000 1 CHOST} - {654616800 32400 0 CHOT} - {670345200 36000 1 CHOST} - {686066400 32400 0 CHOT} - {701794800 36000 1 CHOST} - {717516000 32400 0 CHOT} - {733244400 36000 1 CHOST} - {748965600 32400 0 CHOT} - {764694000 36000 1 CHOST} - {780415200 32400 0 CHOT} - {796143600 36000 1 CHOST} - {811864800 32400 0 CHOT} - {828198000 36000 1 CHOST} - {843919200 32400 0 CHOT} - {859647600 36000 1 CHOST} - {875368800 32400 0 CHOT} - {891097200 36000 1 CHOST} - {906818400 32400 0 CHOT} - {988390800 36000 1 CHOST} - {1001692800 32400 0 CHOT} - {1017421200 36000 1 CHOST} - {1033142400 32400 0 CHOT} - {1048870800 36000 1 CHOST} - {1064592000 32400 0 CHOT} - {1080320400 36000 1 CHOST} - {1096041600 32400 0 CHOT} - {1111770000 36000 1 CHOST} - {1127491200 32400 0 CHOT} - {1143219600 36000 1 CHOST} - {1159545600 32400 0 CHOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Choibalsan) { + {-9223372036854775808 27480 0 LMT} + {-2032933080 25200 0 ULAT} + {252435600 28800 0 ULAT} + {417974400 36000 0 CHOST} + {433778400 32400 0 CHOT} + {449593200 36000 1 CHOST} + {465314400 32400 0 CHOT} + {481042800 36000 1 CHOST} + {496764000 32400 0 CHOT} + {512492400 36000 1 CHOST} + {528213600 32400 0 CHOT} + {543942000 36000 1 CHOST} + {559663200 32400 0 CHOT} + {575391600 36000 1 CHOST} + {591112800 32400 0 CHOT} + {606841200 36000 1 CHOST} + {622562400 32400 0 CHOT} + {638290800 36000 1 CHOST} + {654616800 32400 0 CHOT} + {670345200 36000 1 CHOST} + {686066400 32400 0 CHOT} + {701794800 36000 1 CHOST} + {717516000 32400 0 CHOT} + {733244400 36000 1 CHOST} + {748965600 32400 0 CHOT} + {764694000 36000 1 CHOST} + {780415200 32400 0 CHOT} + {796143600 36000 1 CHOST} + {811864800 32400 0 CHOT} + {828198000 36000 1 CHOST} + {843919200 32400 0 CHOT} + {859647600 36000 1 CHOST} + {875368800 32400 0 CHOT} + {891097200 36000 1 CHOST} + {906818400 32400 0 CHOT} + {988390800 36000 1 CHOST} + {1001692800 32400 0 CHOT} + {1017421200 36000 1 CHOST} + {1033142400 32400 0 CHOT} + {1048870800 36000 1 CHOST} + {1064592000 32400 0 CHOT} + {1080320400 36000 1 CHOST} + {1096041600 32400 0 CHOT} + {1111770000 36000 1 CHOST} + {1127491200 32400 0 CHOT} + {1143219600 36000 1 CHOST} + {1159545600 32400 0 CHOT} +} diff --git a/library/tzdata/Asia/Chongqing b/library/tzdata/Asia/Chongqing index eff3536..bf373df 100644 --- a/library/tzdata/Asia/Chongqing +++ b/library/tzdata/Asia/Chongqing @@ -1,19 +1,19 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Chongqing) { - {-9223372036854775808 25580 0 LMT} - {-1325487980 25200 0 LONT} - {325962000 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Chongqing) { + {-9223372036854775808 25580 0 LMT} + {-1325487980 25200 0 LONT} + {325962000 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Chungking b/library/tzdata/Asia/Chungking index f10d8a1..11a68e0 100644 --- a/library/tzdata/Asia/Chungking +++ b/library/tzdata/Asia/Chungking @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Chongqing)]} { - LoadTimeZoneFile Asia/Chongqing -} -set TZData(:Asia/Chungking) $TZData(:Asia/Chongqing) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Chongqing)]} { + LoadTimeZoneFile Asia/Chongqing +} +set TZData(:Asia/Chungking) $TZData(:Asia/Chongqing) diff --git a/library/tzdata/Asia/Colombo b/library/tzdata/Asia/Colombo index ca7bffc..6f188cd 100644 --- a/library/tzdata/Asia/Colombo +++ b/library/tzdata/Asia/Colombo @@ -1,13 +1,13 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Colombo) { - {-9223372036854775808 19164 0 LMT} - {-2840159964 19172 0 MMT} - {-2019705572 19800 0 IST} - {-883287000 21600 1 IHST} - {-862639200 23400 1 IST} - {-764051400 19800 0 IST} - {832962600 23400 0 LKT} - {846266400 21600 0 LKT} - {1145039400 19800 0 IST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Colombo) { + {-9223372036854775808 19164 0 LMT} + {-2840159964 19172 0 MMT} + {-2019705572 19800 0 IST} + {-883287000 21600 1 IHST} + {-862639200 23400 1 IST} + {-764051400 19800 0 IST} + {832962600 23400 0 LKT} + {846266400 21600 0 LKT} + {1145039400 19800 0 IST} +} diff --git a/library/tzdata/Asia/Dacca b/library/tzdata/Asia/Dacca index b91d7fa..40f6386 100644 --- a/library/tzdata/Asia/Dacca +++ b/library/tzdata/Asia/Dacca @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Dhaka)]} { - LoadTimeZoneFile Asia/Dhaka -} -set TZData(:Asia/Dacca) $TZData(:Asia/Dhaka) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Dhaka)]} { + LoadTimeZoneFile Asia/Dhaka +} +set TZData(:Asia/Dacca) $TZData(:Asia/Dhaka) diff --git a/library/tzdata/Asia/Damascus b/library/tzdata/Asia/Damascus index 4cfeee7..61b7ee7 100644 --- a/library/tzdata/Asia/Damascus +++ b/library/tzdata/Asia/Damascus @@ -1,280 +1,280 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Damascus) { - {-9223372036854775808 8712 0 LMT} - {-1577931912 7200 0 EET} - {-1568592000 10800 1 EEST} - {-1554080400 7200 0 EET} - {-1537142400 10800 1 EEST} - {-1522630800 7200 0 EET} - {-1505692800 10800 1 EEST} - {-1491181200 7200 0 EET} - {-1474243200 10800 1 EEST} - {-1459126800 7200 0 EET} - {-242265600 10800 1 EEST} - {-228877200 7200 0 EET} - {-210556800 10800 1 EEST} - {-197427600 7200 0 EET} - {-178934400 10800 1 EEST} - {-165718800 7200 0 EET} - {-147398400 10800 1 EEST} - {-134269200 7200 0 EET} - {-116467200 10800 1 EEST} - {-102646800 7200 0 EET} - {-84326400 10800 1 EEST} - {-71110800 7200 0 EET} - {-52704000 10800 1 EEST} - {-39488400 7200 0 EET} - {-21168000 10800 1 EEST} - {-7952400 7200 0 EET} - {10368000 10800 1 EEST} - {23583600 7200 0 EET} - {41904000 10800 1 EEST} - {55119600 7200 0 EET} - {73526400 10800 1 EEST} - {86742000 7200 0 EET} - {105062400 10800 1 EEST} - {118278000 7200 0 EET} - {136598400 10800 1 EEST} - {149814000 7200 0 EET} - {168134400 10800 1 EEST} - {181350000 7200 0 EET} - {199756800 10800 1 EEST} - {212972400 7200 0 EET} - {231292800 10800 1 EEST} - {241916400 7200 0 EET} - {262828800 10800 1 EEST} - {273452400 7200 0 EET} - {418694400 10800 1 EEST} - {433810800 7200 0 EET} - {450316800 10800 1 EEST} - {465433200 7200 0 EET} - {508896000 10800 1 EEST} - {529196400 7200 0 EET} - {541555200 10800 1 EEST} - {562633200 7200 0 EET} - {574387200 10800 1 EEST} - {594255600 7200 0 EET} - {607305600 10800 1 EEST} - {623199600 7200 0 EET} - {638928000 10800 1 EEST} - {654649200 7200 0 EET} - {670456800 10800 1 EEST} - {686264400 7200 0 EET} - {702684000 10800 1 EEST} - {717886800 7200 0 EET} - {733096800 10800 1 EEST} - {748904400 7200 0 EET} - {765151200 10800 1 EEST} - {780958800 7200 0 EET} - {796687200 10800 1 EEST} - {812494800 7200 0 EET} - {828309600 10800 1 EEST} - {844117200 7200 0 EET} - {859759200 10800 1 EEST} - {875653200 7200 0 EET} - {891208800 10800 1 EEST} - {907189200 7200 0 EET} - {922917600 10800 1 EEST} - {938725200 7200 0 EET} - {954540000 10800 1 EEST} - {970347600 7200 0 EET} - {986076000 10800 1 EEST} - {1001883600 7200 0 EET} - {1017612000 10800 1 EEST} - {1033419600 7200 0 EET} - {1049148000 10800 1 EEST} - {1064955600 7200 0 EET} - {1080770400 10800 1 EEST} - {1096578000 7200 0 EET} - {1112306400 10800 1 EEST} - {1128114000 7200 0 EET} - {1143842400 10800 1 EEST} - {1158872400 7200 0 EET} - {1175205600 10800 1 EEST} - {1193950800 7200 0 EET} - {1207260000 10800 1 EEST} - {1225486800 7200 0 EET} - {1238709600 10800 1 EEST} - {1257022800 7200 0 EET} - {1270159200 10800 1 EEST} - {1288558800 7200 0 EET} - {1301608800 10800 1 EEST} - {1320094800 7200 0 EET} - {1333663200 10800 1 EEST} - {1351717200 7200 0 EET} - {1365112800 10800 1 EEST} - {1383253200 7200 0 EET} - {1396562400 10800 1 EEST} - {1414789200 7200 0 EET} - {1428012000 10800 1 EEST} - {1446325200 7200 0 EET} - {1459461600 10800 1 EEST} - {1477947600 7200 0 EET} - {1491516000 10800 1 EEST} - {1509483600 7200 0 EET} - {1522965600 10800 1 EEST} - {1541019600 7200 0 EET} - {1554415200 10800 1 EEST} - {1572555600 7200 0 EET} - {1585864800 10800 1 EEST} - {1604178000 7200 0 EET} - {1617314400 10800 1 EEST} - {1635714000 7200 0 EET} - {1648764000 10800 1 EEST} - {1667250000 7200 0 EET} - {1680818400 10800 1 EEST} - {1698786000 7200 0 EET} - {1712268000 10800 1 EEST} - {1730408400 7200 0 EET} - {1743717600 10800 1 EEST} - {1761944400 7200 0 EET} - {1775167200 10800 1 EEST} - {1793480400 7200 0 EET} - {1806616800 10800 1 EEST} - {1825016400 7200 0 EET} - {1838671200 10800 1 EEST} - {1856638800 7200 0 EET} - {1870120800 10800 1 EEST} - {1888174800 7200 0 EET} - {1901570400 10800 1 EEST} - {1919710800 7200 0 EET} - {1933020000 10800 1 EEST} - {1951246800 7200 0 EET} - {1964469600 10800 1 EEST} - {1982869200 7200 0 EET} - {1995919200 10800 1 EEST} - {2014405200 7200 0 EET} - {2027973600 10800 1 EEST} - {2045941200 7200 0 EET} - {2059423200 10800 1 EEST} - {2077477200 7200 0 EET} - {2090872800 10800 1 EEST} - {2109099600 7200 0 EET} - {2122322400 10800 1 EEST} - {2140635600 7200 0 EET} - {2153772000 10800 1 EEST} - {2172171600 7200 0 EET} - {2185221600 10800 1 EEST} - {2203707600 7200 0 EET} - {2217276000 10800 1 EEST} - {2235330000 7200 0 EET} - {2248725600 10800 1 EEST} - {2266866000 7200 0 EET} - {2280175200 10800 1 EEST} - {2298402000 7200 0 EET} - {2311624800 10800 1 EEST} - {2329938000 7200 0 EET} - {2343074400 10800 1 EEST} - {2361560400 7200 0 EET} - {2375128800 10800 1 EEST} - {2393096400 7200 0 EET} - {2406578400 10800 1 EEST} - {2424632400 7200 0 EET} - {2438028000 10800 1 EEST} - {2456168400 7200 0 EET} - {2469477600 10800 1 EEST} - {2487790800 7200 0 EET} - {2500927200 10800 1 EEST} - {2519326800 7200 0 EET} - {2532376800 10800 1 EEST} - {2550862800 7200 0 EET} - {2564431200 10800 1 EEST} - {2582398800 7200 0 EET} - {2595880800 10800 1 EEST} - {2614021200 7200 0 EET} - {2627330400 10800 1 EEST} - {2645557200 7200 0 EET} - {2658780000 10800 1 EEST} - {2677093200 7200 0 EET} - {2690229600 10800 1 EEST} - {2708629200 7200 0 EET} - {2722284000 10800 1 EEST} - {2740251600 7200 0 EET} - {2753733600 10800 1 EEST} - {2771787600 7200 0 EET} - {2785183200 10800 1 EEST} - {2803323600 7200 0 EET} - {2816632800 10800 1 EEST} - {2834859600 7200 0 EET} - {2848082400 10800 1 EEST} - {2866482000 7200 0 EET} - {2879532000 10800 1 EEST} - {2898018000 7200 0 EET} - {2911586400 10800 1 EEST} - {2929554000 7200 0 EET} - {2943036000 10800 1 EEST} - {2961090000 7200 0 EET} - {2974485600 10800 1 EEST} - {2992712400 7200 0 EET} - {3005935200 10800 1 EEST} - {3024248400 7200 0 EET} - {3037384800 10800 1 EEST} - {3055784400 7200 0 EET} - {3068834400 10800 1 EEST} - {3087320400 7200 0 EET} - {3100888800 10800 1 EEST} - {3118942800 7200 0 EET} - {3132338400 10800 1 EEST} - {3150478800 7200 0 EET} - {3163788000 10800 1 EEST} - {3182014800 7200 0 EET} - {3195237600 10800 1 EEST} - {3213550800 7200 0 EET} - {3226687200 10800 1 EEST} - {3245173200 7200 0 EET} - {3258741600 10800 1 EEST} - {3276709200 7200 0 EET} - {3290191200 10800 1 EEST} - {3308245200 7200 0 EET} - {3321640800 10800 1 EEST} - {3339781200 7200 0 EET} - {3353090400 10800 1 EEST} - {3371403600 7200 0 EET} - {3384540000 10800 1 EEST} - {3402939600 7200 0 EET} - {3415989600 10800 1 EEST} - {3434475600 7200 0 EET} - {3448044000 10800 1 EEST} - {3466011600 7200 0 EET} - {3479493600 10800 1 EEST} - {3497634000 7200 0 EET} - {3510943200 10800 1 EEST} - {3529170000 7200 0 EET} - {3542392800 10800 1 EEST} - {3560706000 7200 0 EET} - {3573842400 10800 1 EEST} - {3592242000 7200 0 EET} - {3605896800 10800 1 EEST} - {3623864400 7200 0 EET} - {3637346400 10800 1 EEST} - {3655400400 7200 0 EET} - {3668796000 10800 1 EEST} - {3686936400 7200 0 EET} - {3700245600 10800 1 EEST} - {3718472400 7200 0 EET} - {3731695200 10800 1 EEST} - {3750094800 7200 0 EET} - {3763144800 10800 1 EEST} - {3781630800 7200 0 EET} - {3795199200 10800 1 EEST} - {3813166800 7200 0 EET} - {3826648800 10800 1 EEST} - {3844702800 7200 0 EET} - {3858098400 10800 1 EEST} - {3876325200 7200 0 EET} - {3889548000 10800 1 EEST} - {3907861200 7200 0 EET} - {3920997600 10800 1 EEST} - {3939397200 7200 0 EET} - {3952447200 10800 1 EEST} - {3970933200 7200 0 EET} - {3984501600 10800 1 EEST} - {4002555600 7200 0 EET} - {4015951200 10800 1 EEST} - {4034091600 7200 0 EET} - {4047400800 10800 1 EEST} - {4065627600 7200 0 EET} - {4078850400 10800 1 EEST} - {4097163600 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Damascus) { + {-9223372036854775808 8712 0 LMT} + {-1577931912 7200 0 EET} + {-1568592000 10800 1 EEST} + {-1554080400 7200 0 EET} + {-1537142400 10800 1 EEST} + {-1522630800 7200 0 EET} + {-1505692800 10800 1 EEST} + {-1491181200 7200 0 EET} + {-1474243200 10800 1 EEST} + {-1459126800 7200 0 EET} + {-242265600 10800 1 EEST} + {-228877200 7200 0 EET} + {-210556800 10800 1 EEST} + {-197427600 7200 0 EET} + {-178934400 10800 1 EEST} + {-165718800 7200 0 EET} + {-147398400 10800 1 EEST} + {-134269200 7200 0 EET} + {-116467200 10800 1 EEST} + {-102646800 7200 0 EET} + {-84326400 10800 1 EEST} + {-71110800 7200 0 EET} + {-52704000 10800 1 EEST} + {-39488400 7200 0 EET} + {-21168000 10800 1 EEST} + {-7952400 7200 0 EET} + {10368000 10800 1 EEST} + {23583600 7200 0 EET} + {41904000 10800 1 EEST} + {55119600 7200 0 EET} + {73526400 10800 1 EEST} + {86742000 7200 0 EET} + {105062400 10800 1 EEST} + {118278000 7200 0 EET} + {136598400 10800 1 EEST} + {149814000 7200 0 EET} + {168134400 10800 1 EEST} + {181350000 7200 0 EET} + {199756800 10800 1 EEST} + {212972400 7200 0 EET} + {231292800 10800 1 EEST} + {241916400 7200 0 EET} + {262828800 10800 1 EEST} + {273452400 7200 0 EET} + {418694400 10800 1 EEST} + {433810800 7200 0 EET} + {450316800 10800 1 EEST} + {465433200 7200 0 EET} + {508896000 10800 1 EEST} + {529196400 7200 0 EET} + {541555200 10800 1 EEST} + {562633200 7200 0 EET} + {574387200 10800 1 EEST} + {594255600 7200 0 EET} + {607305600 10800 1 EEST} + {623199600 7200 0 EET} + {638928000 10800 1 EEST} + {654649200 7200 0 EET} + {670456800 10800 1 EEST} + {686264400 7200 0 EET} + {702684000 10800 1 EEST} + {717886800 7200 0 EET} + {733096800 10800 1 EEST} + {748904400 7200 0 EET} + {765151200 10800 1 EEST} + {780958800 7200 0 EET} + {796687200 10800 1 EEST} + {812494800 7200 0 EET} + {828309600 10800 1 EEST} + {844117200 7200 0 EET} + {859759200 10800 1 EEST} + {875653200 7200 0 EET} + {891208800 10800 1 EEST} + {907189200 7200 0 EET} + {922917600 10800 1 EEST} + {938725200 7200 0 EET} + {954540000 10800 1 EEST} + {970347600 7200 0 EET} + {986076000 10800 1 EEST} + {1001883600 7200 0 EET} + {1017612000 10800 1 EEST} + {1033419600 7200 0 EET} + {1049148000 10800 1 EEST} + {1064955600 7200 0 EET} + {1080770400 10800 1 EEST} + {1096578000 7200 0 EET} + {1112306400 10800 1 EEST} + {1128114000 7200 0 EET} + {1143842400 10800 1 EEST} + {1158872400 7200 0 EET} + {1175205600 10800 1 EEST} + {1193950800 7200 0 EET} + {1207260000 10800 1 EEST} + {1225486800 7200 0 EET} + {1238104800 10800 1 EEST} + {1257022800 7200 0 EET} + {1269554400 10800 1 EEST} + {1288558800 7200 0 EET} + {1301004000 10800 1 EEST} + {1320094800 7200 0 EET} + {1333058400 10800 1 EEST} + {1351717200 7200 0 EET} + {1364508000 10800 1 EEST} + {1383253200 7200 0 EET} + {1395957600 10800 1 EEST} + {1414789200 7200 0 EET} + {1427407200 10800 1 EEST} + {1446325200 7200 0 EET} + {1458856800 10800 1 EEST} + {1477947600 7200 0 EET} + {1490911200 10800 1 EEST} + {1509483600 7200 0 EET} + {1522360800 10800 1 EEST} + {1541019600 7200 0 EET} + {1553810400 10800 1 EEST} + {1572555600 7200 0 EET} + {1585260000 10800 1 EEST} + {1604178000 7200 0 EET} + {1616709600 10800 1 EEST} + {1635714000 7200 0 EET} + {1648159200 10800 1 EEST} + {1667250000 7200 0 EET} + {1680213600 10800 1 EEST} + {1698786000 7200 0 EET} + {1711663200 10800 1 EEST} + {1730408400 7200 0 EET} + {1743112800 10800 1 EEST} + {1761944400 7200 0 EET} + {1774562400 10800 1 EEST} + {1793480400 7200 0 EET} + {1806012000 10800 1 EEST} + {1825016400 7200 0 EET} + {1838066400 10800 1 EEST} + {1856638800 7200 0 EET} + {1869516000 10800 1 EEST} + {1888174800 7200 0 EET} + {1900965600 10800 1 EEST} + {1919710800 7200 0 EET} + {1932415200 10800 1 EEST} + {1951246800 7200 0 EET} + {1963864800 10800 1 EEST} + {1982869200 7200 0 EET} + {1995314400 10800 1 EEST} + {2014405200 7200 0 EET} + {2027368800 10800 1 EEST} + {2045941200 7200 0 EET} + {2058818400 10800 1 EEST} + {2077477200 7200 0 EET} + {2090268000 10800 1 EEST} + {2109099600 7200 0 EET} + {2121717600 10800 1 EEST} + {2140635600 7200 0 EET} + {2153167200 10800 1 EEST} + {2172171600 7200 0 EET} + {2184616800 10800 1 EEST} + {2203707600 7200 0 EET} + {2216671200 10800 1 EEST} + {2235330000 7200 0 EET} + {2248120800 10800 1 EEST} + {2266866000 7200 0 EET} + {2279570400 10800 1 EEST} + {2298402000 7200 0 EET} + {2311020000 10800 1 EEST} + {2329938000 7200 0 EET} + {2342469600 10800 1 EEST} + {2361560400 7200 0 EET} + {2374524000 10800 1 EEST} + {2393096400 7200 0 EET} + {2405973600 10800 1 EEST} + {2424632400 7200 0 EET} + {2437423200 10800 1 EEST} + {2456168400 7200 0 EET} + {2468872800 10800 1 EEST} + {2487790800 7200 0 EET} + {2500322400 10800 1 EEST} + {2519326800 7200 0 EET} + {2531772000 10800 1 EEST} + {2550862800 7200 0 EET} + {2563826400 10800 1 EEST} + {2582398800 7200 0 EET} + {2595276000 10800 1 EEST} + {2614021200 7200 0 EET} + {2626725600 10800 1 EEST} + {2645557200 7200 0 EET} + {2658175200 10800 1 EEST} + {2677093200 7200 0 EET} + {2689624800 10800 1 EEST} + {2708629200 7200 0 EET} + {2721679200 10800 1 EEST} + {2740251600 7200 0 EET} + {2753128800 10800 1 EEST} + {2771787600 7200 0 EET} + {2784578400 10800 1 EEST} + {2803323600 7200 0 EET} + {2816028000 10800 1 EEST} + {2834859600 7200 0 EET} + {2847477600 10800 1 EEST} + {2866482000 7200 0 EET} + {2878927200 10800 1 EEST} + {2898018000 7200 0 EET} + {2910981600 10800 1 EEST} + {2929554000 7200 0 EET} + {2942431200 10800 1 EEST} + {2961090000 7200 0 EET} + {2973880800 10800 1 EEST} + {2992712400 7200 0 EET} + {3005330400 10800 1 EEST} + {3024248400 7200 0 EET} + {3036780000 10800 1 EEST} + {3055784400 7200 0 EET} + {3068229600 10800 1 EEST} + {3087320400 7200 0 EET} + {3100284000 10800 1 EEST} + {3118942800 7200 0 EET} + {3131733600 10800 1 EEST} + {3150478800 7200 0 EET} + {3163183200 10800 1 EEST} + {3182014800 7200 0 EET} + {3194632800 10800 1 EEST} + {3213550800 7200 0 EET} + {3226082400 10800 1 EEST} + {3245173200 7200 0 EET} + {3258136800 10800 1 EEST} + {3276709200 7200 0 EET} + {3289586400 10800 1 EEST} + {3308245200 7200 0 EET} + {3321036000 10800 1 EEST} + {3339781200 7200 0 EET} + {3352485600 10800 1 EEST} + {3371403600 7200 0 EET} + {3383935200 10800 1 EEST} + {3402939600 7200 0 EET} + {3415384800 10800 1 EEST} + {3434475600 7200 0 EET} + {3447439200 10800 1 EEST} + {3466011600 7200 0 EET} + {3478888800 10800 1 EEST} + {3497634000 7200 0 EET} + {3510338400 10800 1 EEST} + {3529170000 7200 0 EET} + {3541788000 10800 1 EEST} + {3560706000 7200 0 EET} + {3573237600 10800 1 EEST} + {3592242000 7200 0 EET} + {3605292000 10800 1 EEST} + {3623864400 7200 0 EET} + {3636741600 10800 1 EEST} + {3655400400 7200 0 EET} + {3668191200 10800 1 EEST} + {3686936400 7200 0 EET} + {3699640800 10800 1 EEST} + {3718472400 7200 0 EET} + {3731090400 10800 1 EEST} + {3750094800 7200 0 EET} + {3762540000 10800 1 EEST} + {3781630800 7200 0 EET} + {3794594400 10800 1 EEST} + {3813166800 7200 0 EET} + {3826044000 10800 1 EEST} + {3844702800 7200 0 EET} + {3857493600 10800 1 EEST} + {3876325200 7200 0 EET} + {3888943200 10800 1 EEST} + {3907861200 7200 0 EET} + {3920392800 10800 1 EEST} + {3939397200 7200 0 EET} + {3951842400 10800 1 EEST} + {3970933200 7200 0 EET} + {3983896800 10800 1 EEST} + {4002555600 7200 0 EET} + {4015346400 10800 1 EEST} + {4034091600 7200 0 EET} + {4046796000 10800 1 EEST} + {4065627600 7200 0 EET} + {4078245600 10800 1 EEST} + {4097163600 7200 0 EET} +} diff --git a/library/tzdata/Asia/Dhaka b/library/tzdata/Asia/Dhaka index 8eac24f..3ab1955 100644 --- a/library/tzdata/Asia/Dhaka +++ b/library/tzdata/Asia/Dhaka @@ -1,11 +1,11 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Dhaka) { - {-9223372036854775808 21700 0 LMT} - {-2524543300 21200 0 HMT} - {-891582800 23400 0 BURT} - {-872058600 19800 0 IST} - {-862637400 23400 0 BURT} - {-576138600 21600 0 DACT} - {38772000 21600 0 BDT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Dhaka) { + {-9223372036854775808 21700 0 LMT} + {-2524543300 21200 0 HMT} + {-891582800 23400 0 BURT} + {-872058600 19800 0 IST} + {-862637400 23400 0 BURT} + {-576138600 21600 0 DACT} + {38772000 21600 0 BDT} +} diff --git a/library/tzdata/Asia/Dili b/library/tzdata/Asia/Dili index 36910fd..72adfef 100644 --- a/library/tzdata/Asia/Dili +++ b/library/tzdata/Asia/Dili @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Dili) { - {-9223372036854775808 30140 0 LMT} - {-1830414140 28800 0 TLT} - {-879152400 32400 0 JST} - {-766054800 32400 0 TLT} - {199897200 28800 0 CIT} - {969120000 32400 0 TLT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Dili) { + {-9223372036854775808 30140 0 LMT} + {-1830414140 28800 0 TLT} + {-879152400 32400 0 JST} + {-766054800 32400 0 TLT} + {199897200 28800 0 CIT} + {969120000 32400 0 TLT} +} diff --git a/library/tzdata/Asia/Dubai b/library/tzdata/Asia/Dubai index b8730e5..99cfe2e 100644 --- a/library/tzdata/Asia/Dubai +++ b/library/tzdata/Asia/Dubai @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Dubai) { - {-9223372036854775808 13272 0 LMT} - {-1577936472 14400 0 GST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Dubai) { + {-9223372036854775808 13272 0 LMT} + {-1577936472 14400 0 GST} +} diff --git a/library/tzdata/Asia/Dushanbe b/library/tzdata/Asia/Dushanbe index 59f8cb6..2eb2739 100644 --- a/library/tzdata/Asia/Dushanbe +++ b/library/tzdata/Asia/Dushanbe @@ -1,29 +1,29 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Dushanbe) { - {-9223372036854775808 16512 0 LMT} - {-1441168512 18000 0 DUST} - {-1247547600 21600 0 DUST} - {354909600 25200 1 DUSST} - {370717200 21600 0 DUST} - {386445600 25200 1 DUSST} - {402253200 21600 0 DUST} - {417981600 25200 1 DUSST} - {433789200 21600 0 DUST} - {449604000 25200 1 DUSST} - {465336000 21600 0 DUST} - {481060800 25200 1 DUSST} - {496785600 21600 0 DUST} - {512510400 25200 1 DUSST} - {528235200 21600 0 DUST} - {543960000 25200 1 DUSST} - {559684800 21600 0 DUST} - {575409600 25200 1 DUSST} - {591134400 21600 0 DUST} - {606859200 25200 1 DUSST} - {622584000 21600 0 DUST} - {638308800 25200 1 DUSST} - {654638400 21600 0 DUST} - {670363200 21600 1 DUSST} - {684363600 18000 0 TJT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Dushanbe) { + {-9223372036854775808 16512 0 LMT} + {-1441168512 18000 0 DUST} + {-1247547600 21600 0 DUST} + {354909600 25200 1 DUSST} + {370717200 21600 0 DUST} + {386445600 25200 1 DUSST} + {402253200 21600 0 DUST} + {417981600 25200 1 DUSST} + {433789200 21600 0 DUST} + {449604000 25200 1 DUSST} + {465336000 21600 0 DUST} + {481060800 25200 1 DUSST} + {496785600 21600 0 DUST} + {512510400 25200 1 DUSST} + {528235200 21600 0 DUST} + {543960000 25200 1 DUSST} + {559684800 21600 0 DUST} + {575409600 25200 1 DUSST} + {591134400 21600 0 DUST} + {606859200 25200 1 DUSST} + {622584000 21600 0 DUST} + {638308800 25200 1 DUSST} + {654638400 21600 0 DUST} + {670363200 21600 1 DUSST} + {684363600 18000 0 TJT} +} diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza index 80f53c9..7046f78 100644 --- a/library/tzdata/Asia/Gaza +++ b/library/tzdata/Asia/Gaza @@ -1,275 +1,275 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Gaza) { - {-9223372036854775808 8272 0 LMT} - {-2185409872 7200 0 EET} - {-933645600 10800 1 EET} - {-857358000 7200 0 EET} - {-844300800 10800 1 EET} - {-825822000 7200 0 EET} - {-812685600 10800 1 EET} - {-794199600 7200 0 EET} - {-779853600 10800 1 EET} - {-762656400 7200 0 EET} - {-748310400 10800 1 EET} - {-731127600 7200 0 EET} - {-682653600 7200 0 EET} - {-399088800 10800 1 EEST} - {-386650800 7200 0 EET} - {-368330400 10800 1 EEST} - {-355114800 7200 0 EET} - {-336790800 10800 1 EEST} - {-323654400 7200 0 EET} - {-305168400 10800 1 EEST} - {-292032000 7200 0 EET} - {-273632400 10800 1 EEST} - {-260496000 7200 0 EET} - {-242096400 10800 1 EEST} - {-228960000 7200 0 EET} - {-210560400 10800 1 EEST} - {-197424000 7200 0 EET} - {-178938000 10800 1 EEST} - {-165801600 7200 0 EET} - {-147402000 10800 1 EEST} - {-134265600 7200 0 EET} - {-115866000 10800 1 EEST} - {-102643200 7200 0 EET} - {-84330000 10800 1 EEST} - {-81313200 10800 0 IST} - {142376400 10800 1 IDT} - {150843600 7200 0 IST} - {167176800 10800 1 IDT} - {178664400 7200 0 IST} - {482277600 10800 1 IDT} - {495579600 7200 0 IST} - {516751200 10800 1 IDT} - {526424400 7200 0 IST} - {545436000 10800 1 IDT} - {558478800 7200 0 IST} - {576540000 10800 1 IDT} - {589237200 7200 0 IST} - {609890400 10800 1 IDT} - {620773200 7200 0 IST} - {638316000 10800 1 IDT} - {651618000 7200 0 IST} - {669765600 10800 1 IDT} - {683672400 7200 0 IST} - {701820000 10800 1 IDT} - {715726800 7200 0 IST} - {733701600 10800 1 IDT} - {747176400 7200 0 IST} - {765151200 10800 1 IDT} - {778021200 7200 0 IST} - {796600800 10800 1 IDT} - {810075600 7200 0 IST} - {820447200 7200 0 EET} - {828655200 10800 1 EEST} - {843170400 7200 0 EET} - {860104800 10800 1 EEST} - {874620000 7200 0 EET} - {891554400 10800 1 EEST} - {906069600 7200 0 EET} - {915141600 7200 0 EET} - {924213600 10800 1 EEST} - {939934800 7200 0 EET} - {956268000 10800 1 EEST} - {971989200 7200 0 EET} - {987717600 10800 1 EEST} - {1003438800 7200 0 EET} - {1019167200 10800 1 EEST} - {1034888400 7200 0 EET} - {1050616800 10800 1 EEST} - {1066338000 7200 0 EET} - {1082066400 10800 1 EEST} - {1096581600 7200 0 EET} - {1113516000 10800 1 EEST} - {1128380400 7200 0 EET} - {1143842400 10800 1 EEST} - {1158872400 7200 0 EET} - {1175378400 10800 1 EEST} - {1189638000 7200 0 EET} - {1207000800 10800 1 EEST} - {1219878000 7200 0 EET} - {1238536800 10800 1 EEST} - {1251327600 7200 0 EET} - {1270072800 10800 1 EEST} - {1282777200 7200 0 EET} - {1301608800 10800 1 EEST} - {1314226800 7200 0 EET} - {1333231200 10800 1 EEST} - {1346281200 7200 0 EET} - {1364767200 10800 1 EEST} - {1377730800 7200 0 EET} - {1396303200 10800 1 EEST} - {1409180400 7200 0 EET} - {1427839200 10800 1 EEST} - {1440630000 7200 0 EET} - {1459461600 10800 1 EEST} - {1472079600 7200 0 EET} - {1490997600 10800 1 EEST} - {1504134000 7200 0 EET} - {1522533600 10800 1 EEST} - {1535583600 7200 0 EET} - {1554069600 10800 1 EEST} - {1567033200 7200 0 EET} - {1585692000 10800 1 EEST} - {1598482800 7200 0 EET} - {1617228000 10800 1 EEST} - {1629932400 7200 0 EET} - {1648764000 10800 1 EEST} - {1661382000 7200 0 EET} - {1680300000 10800 1 EEST} - {1693436400 7200 0 EET} - {1711922400 10800 1 EEST} - {1724886000 7200 0 EET} - {1743458400 10800 1 EEST} - {1756335600 7200 0 EET} - {1774994400 10800 1 EEST} - {1787785200 7200 0 EET} - {1806530400 10800 1 EEST} - {1819234800 7200 0 EET} - {1838152800 10800 1 EEST} - {1851289200 7200 0 EET} - {1869688800 10800 1 EEST} - {1882738800 7200 0 EET} - {1901224800 10800 1 EEST} - {1914188400 7200 0 EET} - {1932760800 10800 1 EEST} - {1945638000 7200 0 EET} - {1964383200 10800 1 EEST} - {1977087600 7200 0 EET} - {1995919200 10800 1 EEST} - {2008537200 7200 0 EET} - {2027455200 10800 1 EEST} - {2040591600 7200 0 EET} - {2058991200 10800 1 EEST} - {2072041200 7200 0 EET} - {2090613600 10800 1 EEST} - {2103490800 7200 0 EET} - {2122149600 10800 1 EEST} - {2134940400 7200 0 EET} - {2153685600 10800 1 EEST} - {2166390000 7200 0 EET} - {2185221600 10800 1 EEST} - {2197839600 7200 0 EET} - {2216844000 10800 1 EEST} - {2229894000 7200 0 EET} - {2248380000 10800 1 EEST} - {2261343600 7200 0 EET} - {2279916000 10800 1 EEST} - {2292793200 7200 0 EET} - {2311452000 10800 1 EEST} - {2324242800 7200 0 EET} - {2343074400 10800 1 EEST} - {2355692400 7200 0 EET} - {2374610400 10800 1 EEST} - {2387746800 7200 0 EET} - {2406146400 10800 1 EEST} - {2419196400 7200 0 EET} - {2437682400 10800 1 EEST} - {2450646000 7200 0 EET} - {2469304800 10800 1 EEST} - {2482095600 7200 0 EET} - {2500840800 10800 1 EEST} - {2513545200 7200 0 EET} - {2532376800 10800 1 EEST} - {2544994800 7200 0 EET} - {2563912800 10800 1 EEST} - {2577049200 7200 0 EET} - {2595535200 10800 1 EEST} - {2608498800 7200 0 EET} - {2627071200 10800 1 EEST} - {2639948400 7200 0 EET} - {2658607200 10800 1 EEST} - {2671398000 7200 0 EET} - {2690143200 10800 1 EEST} - {2702847600 7200 0 EET} - {2721765600 10800 1 EEST} - {2734902000 7200 0 EET} - {2753301600 10800 1 EEST} - {2766351600 7200 0 EET} - {2784837600 10800 1 EEST} - {2797801200 7200 0 EET} - {2816373600 10800 1 EEST} - {2829250800 7200 0 EET} - {2847996000 10800 1 EEST} - {2860700400 7200 0 EET} - {2879532000 10800 1 EEST} - {2892150000 7200 0 EET} - {2911068000 10800 1 EEST} - {2924204400 7200 0 EET} - {2942604000 10800 1 EEST} - {2955654000 7200 0 EET} - {2974226400 10800 1 EEST} - {2987103600 7200 0 EET} - {3005762400 10800 1 EEST} - {3018553200 7200 0 EET} - {3037298400 10800 1 EEST} - {3050002800 7200 0 EET} - {3068834400 10800 1 EEST} - {3081452400 7200 0 EET} - {3100456800 10800 1 EEST} - {3113506800 7200 0 EET} - {3131992800 10800 1 EEST} - {3144956400 7200 0 EET} - {3163528800 10800 1 EEST} - {3176406000 7200 0 EET} - {3195064800 10800 1 EEST} - {3207855600 7200 0 EET} - {3226687200 10800 1 EEST} - {3239305200 7200 0 EET} - {3258223200 10800 1 EEST} - {3271359600 7200 0 EET} - {3289759200 10800 1 EEST} - {3302809200 7200 0 EET} - {3321295200 10800 1 EEST} - {3334258800 7200 0 EET} - {3352917600 10800 1 EEST} - {3365708400 7200 0 EET} - {3384453600 10800 1 EEST} - {3397158000 7200 0 EET} - {3415989600 10800 1 EEST} - {3428607600 7200 0 EET} - {3447525600 10800 1 EEST} - {3460662000 7200 0 EET} - {3479148000 10800 1 EEST} - {3492111600 7200 0 EET} - {3510684000 10800 1 EEST} - {3523561200 7200 0 EET} - {3542220000 10800 1 EEST} - {3555010800 7200 0 EET} - {3573756000 10800 1 EEST} - {3586460400 7200 0 EET} - {3605378400 10800 1 EEST} - {3618514800 7200 0 EET} - {3636914400 10800 1 EEST} - {3649964400 7200 0 EET} - {3668450400 10800 1 EEST} - {3681414000 7200 0 EET} - {3699986400 10800 1 EEST} - {3712863600 7200 0 EET} - {3731608800 10800 1 EEST} - {3744313200 7200 0 EET} - {3763144800 10800 1 EEST} - {3775762800 7200 0 EET} - {3794680800 10800 1 EEST} - {3807817200 7200 0 EET} - {3826216800 10800 1 EEST} - {3839266800 7200 0 EET} - {3857839200 10800 1 EEST} - {3870716400 7200 0 EET} - {3889375200 10800 1 EEST} - {3902166000 7200 0 EET} - {3920911200 10800 1 EEST} - {3933615600 7200 0 EET} - {3952447200 10800 1 EEST} - {3965065200 7200 0 EET} - {3984069600 10800 1 EEST} - {3997119600 7200 0 EET} - {4015605600 10800 1 EEST} - {4028569200 7200 0 EET} - {4047141600 10800 1 EEST} - {4060018800 7200 0 EET} - {4078677600 10800 1 EEST} - {4091468400 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Gaza) { + {-9223372036854775808 8272 0 LMT} + {-2185409872 7200 0 EET} + {-933645600 10800 1 EET} + {-857358000 7200 0 EET} + {-844300800 10800 1 EET} + {-825822000 7200 0 EET} + {-812685600 10800 1 EET} + {-794199600 7200 0 EET} + {-779853600 10800 1 EET} + {-762656400 7200 0 EET} + {-748310400 10800 1 EET} + {-731127600 7200 0 EET} + {-682653600 7200 0 EET} + {-399088800 10800 1 EEST} + {-386650800 7200 0 EET} + {-368330400 10800 1 EEST} + {-355114800 7200 0 EET} + {-336790800 10800 1 EEST} + {-323654400 7200 0 EET} + {-305168400 10800 1 EEST} + {-292032000 7200 0 EET} + {-273632400 10800 1 EEST} + {-260496000 7200 0 EET} + {-242096400 10800 1 EEST} + {-228960000 7200 0 EET} + {-210560400 10800 1 EEST} + {-197424000 7200 0 EET} + {-178938000 10800 1 EEST} + {-165801600 7200 0 EET} + {-147402000 10800 1 EEST} + {-134265600 7200 0 EET} + {-115866000 10800 1 EEST} + {-102643200 7200 0 EET} + {-84330000 10800 1 EEST} + {-81313200 10800 0 IST} + {142376400 10800 1 IDT} + {150843600 7200 0 IST} + {167176800 10800 1 IDT} + {178664400 7200 0 IST} + {482277600 10800 1 IDT} + {495579600 7200 0 IST} + {516751200 10800 1 IDT} + {526424400 7200 0 IST} + {545436000 10800 1 IDT} + {558478800 7200 0 IST} + {576540000 10800 1 IDT} + {589237200 7200 0 IST} + {609890400 10800 1 IDT} + {620773200 7200 0 IST} + {638316000 10800 1 IDT} + {651618000 7200 0 IST} + {669765600 10800 1 IDT} + {683672400 7200 0 IST} + {701820000 10800 1 IDT} + {715726800 7200 0 IST} + {733701600 10800 1 IDT} + {747176400 7200 0 IST} + {765151200 10800 1 IDT} + {778021200 7200 0 IST} + {796600800 10800 1 IDT} + {810075600 7200 0 IST} + {820447200 7200 0 EET} + {828655200 10800 1 EEST} + {843170400 7200 0 EET} + {860104800 10800 1 EEST} + {874620000 7200 0 EET} + {891554400 10800 1 EEST} + {906069600 7200 0 EET} + {915141600 7200 0 EET} + {924213600 10800 1 EEST} + {939934800 7200 0 EET} + {956268000 10800 1 EEST} + {971989200 7200 0 EET} + {987717600 10800 1 EEST} + {1003438800 7200 0 EET} + {1019167200 10800 1 EEST} + {1034888400 7200 0 EET} + {1050616800 10800 1 EEST} + {1066338000 7200 0 EET} + {1082066400 10800 1 EEST} + {1096581600 7200 0 EET} + {1113516000 10800 1 EEST} + {1128380400 7200 0 EET} + {1143842400 10800 1 EEST} + {1158872400 7200 0 EET} + {1175378400 10800 1 EEST} + {1189638000 7200 0 EET} + {1207000800 10800 1 EEST} + {1219964400 7200 0 EET} + {1238104800 10800 1 EEST} + {1254092400 7200 0 EET} + {1269554400 10800 1 EEST} + {1285542000 7200 0 EET} + {1301004000 10800 1 EEST} + {1316991600 7200 0 EET} + {1333058400 10800 1 EEST} + {1348441200 7200 0 EET} + {1364508000 10800 1 EEST} + {1380495600 7200 0 EET} + {1395957600 10800 1 EEST} + {1411945200 7200 0 EET} + {1427407200 10800 1 EEST} + {1443394800 7200 0 EET} + {1458856800 10800 1 EEST} + {1474844400 7200 0 EET} + {1490911200 10800 1 EEST} + {1506294000 7200 0 EET} + {1522360800 10800 1 EEST} + {1537743600 7200 0 EET} + {1553810400 10800 1 EEST} + {1569798000 7200 0 EET} + {1585260000 10800 1 EEST} + {1601247600 7200 0 EET} + {1616709600 10800 1 EEST} + {1632697200 7200 0 EET} + {1648159200 10800 1 EEST} + {1664146800 7200 0 EET} + {1680213600 10800 1 EEST} + {1695596400 7200 0 EET} + {1711663200 10800 1 EEST} + {1727650800 7200 0 EET} + {1743112800 10800 1 EEST} + {1759100400 7200 0 EET} + {1774562400 10800 1 EEST} + {1790550000 7200 0 EET} + {1806012000 10800 1 EEST} + {1821999600 7200 0 EET} + {1838066400 10800 1 EEST} + {1853449200 7200 0 EET} + {1869516000 10800 1 EEST} + {1884898800 7200 0 EET} + {1900965600 10800 1 EEST} + {1916953200 7200 0 EET} + {1932415200 10800 1 EEST} + {1948402800 7200 0 EET} + {1963864800 10800 1 EEST} + {1979852400 7200 0 EET} + {1995314400 10800 1 EEST} + {2011302000 7200 0 EET} + {2027368800 10800 1 EEST} + {2042751600 7200 0 EET} + {2058818400 10800 1 EEST} + {2074201200 7200 0 EET} + {2090268000 10800 1 EEST} + {2106255600 7200 0 EET} + {2121717600 10800 1 EEST} + {2137705200 7200 0 EET} + {2153167200 10800 1 EEST} + {2169154800 7200 0 EET} + {2184616800 10800 1 EEST} + {2200604400 7200 0 EET} + {2216671200 10800 1 EEST} + {2232054000 7200 0 EET} + {2248120800 10800 1 EEST} + {2264108400 7200 0 EET} + {2279570400 10800 1 EEST} + {2295558000 7200 0 EET} + {2311020000 10800 1 EEST} + {2327007600 7200 0 EET} + {2342469600 10800 1 EEST} + {2358457200 7200 0 EET} + {2374524000 10800 1 EEST} + {2389906800 7200 0 EET} + {2405973600 10800 1 EEST} + {2421356400 7200 0 EET} + {2437423200 10800 1 EEST} + {2453410800 7200 0 EET} + {2468872800 10800 1 EEST} + {2484860400 7200 0 EET} + {2500322400 10800 1 EEST} + {2516310000 7200 0 EET} + {2531772000 10800 1 EEST} + {2547759600 7200 0 EET} + {2563826400 10800 1 EEST} + {2579209200 7200 0 EET} + {2595276000 10800 1 EEST} + {2611263600 7200 0 EET} + {2626725600 10800 1 EEST} + {2642713200 7200 0 EET} + {2658175200 10800 1 EEST} + {2674162800 7200 0 EET} + {2689624800 10800 1 EEST} + {2705612400 7200 0 EET} + {2721679200 10800 1 EEST} + {2737062000 7200 0 EET} + {2753128800 10800 1 EEST} + {2768511600 7200 0 EET} + {2784578400 10800 1 EEST} + {2800566000 7200 0 EET} + {2816028000 10800 1 EEST} + {2832015600 7200 0 EET} + {2847477600 10800 1 EEST} + {2863465200 7200 0 EET} + {2878927200 10800 1 EEST} + {2894914800 7200 0 EET} + {2910981600 10800 1 EEST} + {2926364400 7200 0 EET} + {2942431200 10800 1 EEST} + {2957814000 7200 0 EET} + {2973880800 10800 1 EEST} + {2989868400 7200 0 EET} + {3005330400 10800 1 EEST} + {3021318000 7200 0 EET} + {3036780000 10800 1 EEST} + {3052767600 7200 0 EET} + {3068229600 10800 1 EEST} + {3084217200 7200 0 EET} + {3100284000 10800 1 EEST} + {3115666800 7200 0 EET} + {3131733600 10800 1 EEST} + {3147721200 7200 0 EET} + {3163183200 10800 1 EEST} + {3179170800 7200 0 EET} + {3194632800 10800 1 EEST} + {3210620400 7200 0 EET} + {3226082400 10800 1 EEST} + {3242070000 7200 0 EET} + {3258136800 10800 1 EEST} + {3273519600 7200 0 EET} + {3289586400 10800 1 EEST} + {3304969200 7200 0 EET} + {3321036000 10800 1 EEST} + {3337023600 7200 0 EET} + {3352485600 10800 1 EEST} + {3368473200 7200 0 EET} + {3383935200 10800 1 EEST} + {3399922800 7200 0 EET} + {3415384800 10800 1 EEST} + {3431372400 7200 0 EET} + {3447439200 10800 1 EEST} + {3462822000 7200 0 EET} + {3478888800 10800 1 EEST} + {3494876400 7200 0 EET} + {3510338400 10800 1 EEST} + {3526326000 7200 0 EET} + {3541788000 10800 1 EEST} + {3557775600 7200 0 EET} + {3573237600 10800 1 EEST} + {3589225200 7200 0 EET} + {3605292000 10800 1 EEST} + {3620674800 7200 0 EET} + {3636741600 10800 1 EEST} + {3652124400 7200 0 EET} + {3668191200 10800 1 EEST} + {3684178800 7200 0 EET} + {3699640800 10800 1 EEST} + {3715628400 7200 0 EET} + {3731090400 10800 1 EEST} + {3747078000 7200 0 EET} + {3762540000 10800 1 EEST} + {3778527600 7200 0 EET} + {3794594400 10800 1 EEST} + {3809977200 7200 0 EET} + {3826044000 10800 1 EEST} + {3841426800 7200 0 EET} + {3857493600 10800 1 EEST} + {3873481200 7200 0 EET} + {3888943200 10800 1 EEST} + {3904930800 7200 0 EET} + {3920392800 10800 1 EEST} + {3936380400 7200 0 EET} + {3951842400 10800 1 EEST} + {3967830000 7200 0 EET} + {3983896800 10800 1 EEST} + {3999279600 7200 0 EET} + {4015346400 10800 1 EEST} + {4031334000 7200 0 EET} + {4046796000 10800 1 EEST} + {4062783600 7200 0 EET} + {4078245600 10800 1 EEST} + {4094233200 7200 0 EET} +} diff --git a/library/tzdata/Asia/Harbin b/library/tzdata/Asia/Harbin index 0eb0c12..2e5fcf6 100644 --- a/library/tzdata/Asia/Harbin +++ b/library/tzdata/Asia/Harbin @@ -1,22 +1,22 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Harbin) { - {-9223372036854775808 30404 0 LMT} - {-1325492804 30600 0 CHAT} - {-1194078600 28800 0 CST} - {-946800000 32400 0 CHAT} - {-115894800 30600 0 CHAT} - {325956600 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Harbin) { + {-9223372036854775808 30404 0 LMT} + {-1325492804 30600 0 CHAT} + {-1194078600 28800 0 CST} + {-946800000 32400 0 CHAT} + {-115894800 30600 0 CHAT} + {325956600 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Ho_Chi_Minh b/library/tzdata/Asia/Ho_Chi_Minh index 777c8db..2eaca7e 100644 --- a/library/tzdata/Asia/Ho_Chi_Minh +++ b/library/tzdata/Asia/Ho_Chi_Minh @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Ho_Chi_Minh) { - {-9223372036854775808 25600 0 LMT} - {-2005974400 25580 0 SMT} - {-1855983920 25200 0 ICT} - {-1819954800 28800 0 ICT} - {-1220428800 25200 0 ICT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Ho_Chi_Minh) { + {-9223372036854775808 25600 0 LMT} + {-2005974400 25580 0 SMT} + {-1855983920 25200 0 ICT} + {-1819954800 28800 0 ICT} + {-1220428800 25200 0 ICT} +} diff --git a/library/tzdata/Asia/Hong_Kong b/library/tzdata/Asia/Hong_Kong index 88d8091..aa2089f 100644 --- a/library/tzdata/Asia/Hong_Kong +++ b/library/tzdata/Asia/Hong_Kong @@ -1,74 +1,74 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Hong_Kong) { - {-9223372036854775808 27396 0 LMT} - {-2056692996 28800 0 HKT} - {-747981000 32400 1 HKST} - {-728544600 28800 0 HKT} - {-717049800 32400 1 HKST} - {-694503000 28800 0 HKT} - {-683785800 32400 1 HKST} - {-668064600 28800 0 HKT} - {-654755400 32400 1 HKST} - {-636615000 28800 0 HKT} - {-623305800 32400 1 HKST} - {-605165400 28800 0 HKT} - {-591856200 32400 1 HKST} - {-573715800 28800 0 HKT} - {-559801800 32400 1 HKST} - {-542266200 28800 0 HKT} - {-528352200 32400 1 HKST} - {-510211800 28800 0 HKT} - {-498112200 32400 1 HKST} - {-478762200 28800 0 HKT} - {-466662600 32400 1 HKST} - {-446707800 28800 0 HKT} - {-435213000 32400 1 HKST} - {-415258200 28800 0 HKT} - {-403158600 32400 1 HKST} - {-383808600 28800 0 HKT} - {-371709000 32400 1 HKST} - {-352359000 28800 0 HKT} - {-340259400 32400 1 HKST} - {-320909400 28800 0 HKT} - {-308809800 32400 1 HKST} - {-288855000 28800 0 HKT} - {-277360200 32400 1 HKST} - {-257405400 28800 0 HKT} - {-245910600 32400 1 HKST} - {-225955800 28800 0 HKT} - {-213856200 32400 1 HKST} - {-194506200 28800 0 HKT} - {-182406600 32400 1 HKST} - {-163056600 28800 0 HKT} - {-148537800 32400 1 HKST} - {-132816600 28800 0 HKT} - {-117088200 32400 1 HKST} - {-101367000 28800 0 HKT} - {-85638600 32400 1 HKST} - {-69312600 28800 0 HKT} - {-53584200 32400 1 HKST} - {-37863000 28800 0 HKT} - {-22134600 32400 1 HKST} - {-6413400 28800 0 HKT} - {9315000 32400 1 HKST} - {25036200 28800 0 HKT} - {40764600 32400 1 HKST} - {56485800 28800 0 HKT} - {72214200 32400 1 HKST} - {88540200 28800 0 HKT} - {104268600 32400 1 HKST} - {119989800 28800 0 HKT} - {135718200 32400 1 HKST} - {151439400 28800 0 HKT} - {167167800 32400 1 HKST} - {182889000 28800 0 HKT} - {198617400 32400 1 HKST} - {214338600 28800 0 HKT} - {230067000 32400 1 HKST} - {245788200 28800 0 HKT} - {295385400 32400 1 HKST} - {309292200 28800 0 HKT} - {326835000 32400 1 HKST} - {340741800 28800 0 HKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Hong_Kong) { + {-9223372036854775808 27396 0 LMT} + {-2056692996 28800 0 HKT} + {-747981000 32400 1 HKST} + {-728544600 28800 0 HKT} + {-717049800 32400 1 HKST} + {-694503000 28800 0 HKT} + {-683785800 32400 1 HKST} + {-668064600 28800 0 HKT} + {-654755400 32400 1 HKST} + {-636615000 28800 0 HKT} + {-623305800 32400 1 HKST} + {-605165400 28800 0 HKT} + {-591856200 32400 1 HKST} + {-573715800 28800 0 HKT} + {-559801800 32400 1 HKST} + {-542266200 28800 0 HKT} + {-528352200 32400 1 HKST} + {-510211800 28800 0 HKT} + {-498112200 32400 1 HKST} + {-478762200 28800 0 HKT} + {-466662600 32400 1 HKST} + {-446707800 28800 0 HKT} + {-435213000 32400 1 HKST} + {-415258200 28800 0 HKT} + {-403158600 32400 1 HKST} + {-383808600 28800 0 HKT} + {-371709000 32400 1 HKST} + {-352359000 28800 0 HKT} + {-340259400 32400 1 HKST} + {-320909400 28800 0 HKT} + {-308809800 32400 1 HKST} + {-288855000 28800 0 HKT} + {-277360200 32400 1 HKST} + {-257405400 28800 0 HKT} + {-245910600 32400 1 HKST} + {-225955800 28800 0 HKT} + {-213856200 32400 1 HKST} + {-194506200 28800 0 HKT} + {-182406600 32400 1 HKST} + {-163056600 28800 0 HKT} + {-148537800 32400 1 HKST} + {-132816600 28800 0 HKT} + {-117088200 32400 1 HKST} + {-101367000 28800 0 HKT} + {-85638600 32400 1 HKST} + {-69312600 28800 0 HKT} + {-53584200 32400 1 HKST} + {-37863000 28800 0 HKT} + {-22134600 32400 1 HKST} + {-6413400 28800 0 HKT} + {9315000 32400 1 HKST} + {25036200 28800 0 HKT} + {40764600 32400 1 HKST} + {56485800 28800 0 HKT} + {72214200 32400 1 HKST} + {88540200 28800 0 HKT} + {104268600 32400 1 HKST} + {119989800 28800 0 HKT} + {135718200 32400 1 HKST} + {151439400 28800 0 HKT} + {167167800 32400 1 HKST} + {182889000 28800 0 HKT} + {198617400 32400 1 HKST} + {214338600 28800 0 HKT} + {230067000 32400 1 HKST} + {245788200 28800 0 HKT} + {295385400 32400 1 HKST} + {309292200 28800 0 HKT} + {326835000 32400 1 HKST} + {340741800 28800 0 HKT} +} diff --git a/library/tzdata/Asia/Hovd b/library/tzdata/Asia/Hovd index 2a87dab..a779080 100644 --- a/library/tzdata/Asia/Hovd +++ b/library/tzdata/Asia/Hovd @@ -1,51 +1,51 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Hovd) { - {-9223372036854775808 21996 0 LMT} - {-2032927596 21600 0 HOVT} - {252439200 25200 0 HOVT} - {417978000 28800 1 HOVST} - {433785600 25200 0 HOVT} - {449600400 28800 1 HOVST} - {465321600 25200 0 HOVT} - {481050000 28800 1 HOVST} - {496771200 25200 0 HOVT} - {512499600 28800 1 HOVST} - {528220800 25200 0 HOVT} - {543949200 28800 1 HOVST} - {559670400 25200 0 HOVT} - {575398800 28800 1 HOVST} - {591120000 25200 0 HOVT} - {606848400 28800 1 HOVST} - {622569600 25200 0 HOVT} - {638298000 28800 1 HOVST} - {654624000 25200 0 HOVT} - {670352400 28800 1 HOVST} - {686073600 25200 0 HOVT} - {701802000 28800 1 HOVST} - {717523200 25200 0 HOVT} - {733251600 28800 1 HOVST} - {748972800 25200 0 HOVT} - {764701200 28800 1 HOVST} - {780422400 25200 0 HOVT} - {796150800 28800 1 HOVST} - {811872000 25200 0 HOVT} - {828205200 28800 1 HOVST} - {843926400 25200 0 HOVT} - {859654800 28800 1 HOVST} - {875376000 25200 0 HOVT} - {891104400 28800 1 HOVST} - {906825600 25200 0 HOVT} - {988398000 28800 1 HOVST} - {1001700000 25200 0 HOVT} - {1017428400 28800 1 HOVST} - {1033149600 25200 0 HOVT} - {1048878000 28800 1 HOVST} - {1064599200 25200 0 HOVT} - {1080327600 28800 1 HOVST} - {1096048800 25200 0 HOVT} - {1111777200 28800 1 HOVST} - {1127498400 25200 0 HOVT} - {1143226800 28800 1 HOVST} - {1159552800 25200 0 HOVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Hovd) { + {-9223372036854775808 21996 0 LMT} + {-2032927596 21600 0 HOVT} + {252439200 25200 0 HOVT} + {417978000 28800 1 HOVST} + {433785600 25200 0 HOVT} + {449600400 28800 1 HOVST} + {465321600 25200 0 HOVT} + {481050000 28800 1 HOVST} + {496771200 25200 0 HOVT} + {512499600 28800 1 HOVST} + {528220800 25200 0 HOVT} + {543949200 28800 1 HOVST} + {559670400 25200 0 HOVT} + {575398800 28800 1 HOVST} + {591120000 25200 0 HOVT} + {606848400 28800 1 HOVST} + {622569600 25200 0 HOVT} + {638298000 28800 1 HOVST} + {654624000 25200 0 HOVT} + {670352400 28800 1 HOVST} + {686073600 25200 0 HOVT} + {701802000 28800 1 HOVST} + {717523200 25200 0 HOVT} + {733251600 28800 1 HOVST} + {748972800 25200 0 HOVT} + {764701200 28800 1 HOVST} + {780422400 25200 0 HOVT} + {796150800 28800 1 HOVST} + {811872000 25200 0 HOVT} + {828205200 28800 1 HOVST} + {843926400 25200 0 HOVT} + {859654800 28800 1 HOVST} + {875376000 25200 0 HOVT} + {891104400 28800 1 HOVST} + {906825600 25200 0 HOVT} + {988398000 28800 1 HOVST} + {1001700000 25200 0 HOVT} + {1017428400 28800 1 HOVST} + {1033149600 25200 0 HOVT} + {1048878000 28800 1 HOVST} + {1064599200 25200 0 HOVT} + {1080327600 28800 1 HOVST} + {1096048800 25200 0 HOVT} + {1111777200 28800 1 HOVST} + {1127498400 25200 0 HOVT} + {1143226800 28800 1 HOVST} + {1159552800 25200 0 HOVT} +} diff --git a/library/tzdata/Asia/Irkutsk b/library/tzdata/Asia/Irkutsk index 771ebc9..80ad7b9 100644 --- a/library/tzdata/Asia/Irkutsk +++ b/library/tzdata/Asia/Irkutsk @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Irkutsk) { - {-9223372036854775808 25040 0 LMT} - {-2840165840 25040 0 IMT} - {-1575874640 25200 0 IRKT} - {-1247554800 28800 0 IRKMMTT} - {354902400 32400 1 IRKST} - {370710000 28800 0 IRKT} - {386438400 32400 1 IRKST} - {402246000 28800 0 IRKT} - {417974400 32400 1 IRKST} - {433782000 28800 0 IRKT} - {449596800 32400 1 IRKST} - {465328800 28800 0 IRKT} - {481053600 32400 1 IRKST} - {496778400 28800 0 IRKT} - {512503200 32400 1 IRKST} - {528228000 28800 0 IRKT} - {543952800 32400 1 IRKST} - {559677600 28800 0 IRKT} - {575402400 32400 1 IRKST} - {591127200 28800 0 IRKT} - {606852000 32400 1 IRKST} - {622576800 28800 0 IRKT} - {638301600 32400 1 IRKST} - {654631200 28800 0 IRKT} - {670356000 25200 0 IRKMMTT} - {670359600 28800 1 IRKST} - {686084400 25200 0 IRKT} - {695761200 28800 0 IRKMMTT} - {701794800 32400 1 IRKST} - {717516000 28800 0 IRKT} - {733255200 32400 1 IRKST} - {748980000 28800 0 IRKT} - {764704800 32400 1 IRKST} - {780429600 28800 0 IRKT} - {796154400 32400 1 IRKST} - {811879200 28800 0 IRKT} - {828208800 32400 1 IRKST} - {846352800 28800 0 IRKT} - {859658400 32400 1 IRKST} - {877802400 28800 0 IRKT} - {891108000 32400 1 IRKST} - {909252000 28800 0 IRKT} - {922557600 32400 1 IRKST} - {941306400 28800 0 IRKT} - {954007200 32400 1 IRKST} - {972756000 28800 0 IRKT} - {985456800 32400 1 IRKST} - {1004205600 28800 0 IRKT} - {1017511200 32400 1 IRKST} - {1035655200 28800 0 IRKT} - {1048960800 32400 1 IRKST} - {1067104800 28800 0 IRKT} - {1080410400 32400 1 IRKST} - {1099159200 28800 0 IRKT} - {1111860000 32400 1 IRKST} - {1130608800 28800 0 IRKT} - {1143309600 32400 1 IRKST} - {1162058400 28800 0 IRKT} - {1174759200 32400 1 IRKST} - {1193508000 28800 0 IRKT} - {1206813600 32400 1 IRKST} - {1224957600 28800 0 IRKT} - {1238263200 32400 1 IRKST} - {1256407200 28800 0 IRKT} - {1269712800 32400 1 IRKST} - {1288461600 28800 0 IRKT} - {1301162400 32400 1 IRKST} - {1319911200 28800 0 IRKT} - {1332612000 32400 1 IRKST} - {1351360800 28800 0 IRKT} - {1364666400 32400 1 IRKST} - {1382810400 28800 0 IRKT} - {1396116000 32400 1 IRKST} - {1414260000 28800 0 IRKT} - {1427565600 32400 1 IRKST} - {1445709600 28800 0 IRKT} - {1459015200 32400 1 IRKST} - {1477764000 28800 0 IRKT} - {1490464800 32400 1 IRKST} - {1509213600 28800 0 IRKT} - {1521914400 32400 1 IRKST} - {1540663200 28800 0 IRKT} - {1553968800 32400 1 IRKST} - {1572112800 28800 0 IRKT} - {1585418400 32400 1 IRKST} - {1603562400 28800 0 IRKT} - {1616868000 32400 1 IRKST} - {1635616800 28800 0 IRKT} - {1648317600 32400 1 IRKST} - {1667066400 28800 0 IRKT} - {1679767200 32400 1 IRKST} - {1698516000 28800 0 IRKT} - {1711821600 32400 1 IRKST} - {1729965600 28800 0 IRKT} - {1743271200 32400 1 IRKST} - {1761415200 28800 0 IRKT} - {1774720800 32400 1 IRKST} - {1792864800 28800 0 IRKT} - {1806170400 32400 1 IRKST} - {1824919200 28800 0 IRKT} - {1837620000 32400 1 IRKST} - {1856368800 28800 0 IRKT} - {1869069600 32400 1 IRKST} - {1887818400 28800 0 IRKT} - {1901124000 32400 1 IRKST} - {1919268000 28800 0 IRKT} - {1932573600 32400 1 IRKST} - {1950717600 28800 0 IRKT} - {1964023200 32400 1 IRKST} - {1982772000 28800 0 IRKT} - {1995472800 32400 1 IRKST} - {2014221600 28800 0 IRKT} - {2026922400 32400 1 IRKST} - {2045671200 28800 0 IRKT} - {2058372000 32400 1 IRKST} - {2077120800 28800 0 IRKT} - {2090426400 32400 1 IRKST} - {2108570400 28800 0 IRKT} - {2121876000 32400 1 IRKST} - {2140020000 28800 0 IRKT} - {2153325600 32400 1 IRKST} - {2172074400 28800 0 IRKT} - {2184775200 32400 1 IRKST} - {2203524000 28800 0 IRKT} - {2216224800 32400 1 IRKST} - {2234973600 28800 0 IRKT} - {2248279200 32400 1 IRKST} - {2266423200 28800 0 IRKT} - {2279728800 32400 1 IRKST} - {2297872800 28800 0 IRKT} - {2311178400 32400 1 IRKST} - {2329322400 28800 0 IRKT} - {2342628000 32400 1 IRKST} - {2361376800 28800 0 IRKT} - {2374077600 32400 1 IRKST} - {2392826400 28800 0 IRKT} - {2405527200 32400 1 IRKST} - {2424276000 28800 0 IRKT} - {2437581600 32400 1 IRKST} - {2455725600 28800 0 IRKT} - {2469031200 32400 1 IRKST} - {2487175200 28800 0 IRKT} - {2500480800 32400 1 IRKST} - {2519229600 28800 0 IRKT} - {2531930400 32400 1 IRKST} - {2550679200 28800 0 IRKT} - {2563380000 32400 1 IRKST} - {2582128800 28800 0 IRKT} - {2595434400 32400 1 IRKST} - {2613578400 28800 0 IRKT} - {2626884000 32400 1 IRKST} - {2645028000 28800 0 IRKT} - {2658333600 32400 1 IRKST} - {2676477600 28800 0 IRKT} - {2689783200 32400 1 IRKST} - {2708532000 28800 0 IRKT} - {2721232800 32400 1 IRKST} - {2739981600 28800 0 IRKT} - {2752682400 32400 1 IRKST} - {2771431200 28800 0 IRKT} - {2784736800 32400 1 IRKST} - {2802880800 28800 0 IRKT} - {2816186400 32400 1 IRKST} - {2834330400 28800 0 IRKT} - {2847636000 32400 1 IRKST} - {2866384800 28800 0 IRKT} - {2879085600 32400 1 IRKST} - {2897834400 28800 0 IRKT} - {2910535200 32400 1 IRKST} - {2929284000 28800 0 IRKT} - {2941984800 32400 1 IRKST} - {2960733600 28800 0 IRKT} - {2974039200 32400 1 IRKST} - {2992183200 28800 0 IRKT} - {3005488800 32400 1 IRKST} - {3023632800 28800 0 IRKT} - {3036938400 32400 1 IRKST} - {3055687200 28800 0 IRKT} - {3068388000 32400 1 IRKST} - {3087136800 28800 0 IRKT} - {3099837600 32400 1 IRKST} - {3118586400 28800 0 IRKT} - {3131892000 32400 1 IRKST} - {3150036000 28800 0 IRKT} - {3163341600 32400 1 IRKST} - {3181485600 28800 0 IRKT} - {3194791200 32400 1 IRKST} - {3212935200 28800 0 IRKT} - {3226240800 32400 1 IRKST} - {3244989600 28800 0 IRKT} - {3257690400 32400 1 IRKST} - {3276439200 28800 0 IRKT} - {3289140000 32400 1 IRKST} - {3307888800 28800 0 IRKT} - {3321194400 32400 1 IRKST} - {3339338400 28800 0 IRKT} - {3352644000 32400 1 IRKST} - {3370788000 28800 0 IRKT} - {3384093600 32400 1 IRKST} - {3402842400 28800 0 IRKT} - {3415543200 32400 1 IRKST} - {3434292000 28800 0 IRKT} - {3446992800 32400 1 IRKST} - {3465741600 28800 0 IRKT} - {3479047200 32400 1 IRKST} - {3497191200 28800 0 IRKT} - {3510496800 32400 1 IRKST} - {3528640800 28800 0 IRKT} - {3541946400 32400 1 IRKST} - {3560090400 28800 0 IRKT} - {3573396000 32400 1 IRKST} - {3592144800 28800 0 IRKT} - {3604845600 32400 1 IRKST} - {3623594400 28800 0 IRKT} - {3636295200 32400 1 IRKST} - {3655044000 28800 0 IRKT} - {3668349600 32400 1 IRKST} - {3686493600 28800 0 IRKT} - {3699799200 32400 1 IRKST} - {3717943200 28800 0 IRKT} - {3731248800 32400 1 IRKST} - {3749997600 28800 0 IRKT} - {3762698400 32400 1 IRKST} - {3781447200 28800 0 IRKT} - {3794148000 32400 1 IRKST} - {3812896800 28800 0 IRKT} - {3825597600 32400 1 IRKST} - {3844346400 28800 0 IRKT} - {3857652000 32400 1 IRKST} - {3875796000 28800 0 IRKT} - {3889101600 32400 1 IRKST} - {3907245600 28800 0 IRKT} - {3920551200 32400 1 IRKST} - {3939300000 28800 0 IRKT} - {3952000800 32400 1 IRKST} - {3970749600 28800 0 IRKT} - {3983450400 32400 1 IRKST} - {4002199200 28800 0 IRKT} - {4015504800 32400 1 IRKST} - {4033648800 28800 0 IRKT} - {4046954400 32400 1 IRKST} - {4065098400 28800 0 IRKT} - {4078404000 32400 1 IRKST} - {4096548000 28800 0 IRKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Irkutsk) { + {-9223372036854775808 25040 0 LMT} + {-2840165840 25040 0 IMT} + {-1575874640 25200 0 IRKT} + {-1247554800 28800 0 IRKMMTT} + {354902400 32400 1 IRKST} + {370710000 28800 0 IRKT} + {386438400 32400 1 IRKST} + {402246000 28800 0 IRKT} + {417974400 32400 1 IRKST} + {433782000 28800 0 IRKT} + {449596800 32400 1 IRKST} + {465328800 28800 0 IRKT} + {481053600 32400 1 IRKST} + {496778400 28800 0 IRKT} + {512503200 32400 1 IRKST} + {528228000 28800 0 IRKT} + {543952800 32400 1 IRKST} + {559677600 28800 0 IRKT} + {575402400 32400 1 IRKST} + {591127200 28800 0 IRKT} + {606852000 32400 1 IRKST} + {622576800 28800 0 IRKT} + {638301600 32400 1 IRKST} + {654631200 28800 0 IRKT} + {670356000 25200 0 IRKMMTT} + {670359600 28800 1 IRKST} + {686084400 25200 0 IRKT} + {695761200 28800 0 IRKMMTT} + {701794800 32400 1 IRKST} + {717516000 28800 0 IRKT} + {733255200 32400 1 IRKST} + {748980000 28800 0 IRKT} + {764704800 32400 1 IRKST} + {780429600 28800 0 IRKT} + {796154400 32400 1 IRKST} + {811879200 28800 0 IRKT} + {828208800 32400 1 IRKST} + {846352800 28800 0 IRKT} + {859658400 32400 1 IRKST} + {877802400 28800 0 IRKT} + {891108000 32400 1 IRKST} + {909252000 28800 0 IRKT} + {922557600 32400 1 IRKST} + {941306400 28800 0 IRKT} + {954007200 32400 1 IRKST} + {972756000 28800 0 IRKT} + {985456800 32400 1 IRKST} + {1004205600 28800 0 IRKT} + {1017511200 32400 1 IRKST} + {1035655200 28800 0 IRKT} + {1048960800 32400 1 IRKST} + {1067104800 28800 0 IRKT} + {1080410400 32400 1 IRKST} + {1099159200 28800 0 IRKT} + {1111860000 32400 1 IRKST} + {1130608800 28800 0 IRKT} + {1143309600 32400 1 IRKST} + {1162058400 28800 0 IRKT} + {1174759200 32400 1 IRKST} + {1193508000 28800 0 IRKT} + {1206813600 32400 1 IRKST} + {1224957600 28800 0 IRKT} + {1238263200 32400 1 IRKST} + {1256407200 28800 0 IRKT} + {1269712800 32400 1 IRKST} + {1288461600 28800 0 IRKT} + {1301162400 32400 1 IRKST} + {1319911200 28800 0 IRKT} + {1332612000 32400 1 IRKST} + {1351360800 28800 0 IRKT} + {1364666400 32400 1 IRKST} + {1382810400 28800 0 IRKT} + {1396116000 32400 1 IRKST} + {1414260000 28800 0 IRKT} + {1427565600 32400 1 IRKST} + {1445709600 28800 0 IRKT} + {1459015200 32400 1 IRKST} + {1477764000 28800 0 IRKT} + {1490464800 32400 1 IRKST} + {1509213600 28800 0 IRKT} + {1521914400 32400 1 IRKST} + {1540663200 28800 0 IRKT} + {1553968800 32400 1 IRKST} + {1572112800 28800 0 IRKT} + {1585418400 32400 1 IRKST} + {1603562400 28800 0 IRKT} + {1616868000 32400 1 IRKST} + {1635616800 28800 0 IRKT} + {1648317600 32400 1 IRKST} + {1667066400 28800 0 IRKT} + {1679767200 32400 1 IRKST} + {1698516000 28800 0 IRKT} + {1711821600 32400 1 IRKST} + {1729965600 28800 0 IRKT} + {1743271200 32400 1 IRKST} + {1761415200 28800 0 IRKT} + {1774720800 32400 1 IRKST} + {1792864800 28800 0 IRKT} + {1806170400 32400 1 IRKST} + {1824919200 28800 0 IRKT} + {1837620000 32400 1 IRKST} + {1856368800 28800 0 IRKT} + {1869069600 32400 1 IRKST} + {1887818400 28800 0 IRKT} + {1901124000 32400 1 IRKST} + {1919268000 28800 0 IRKT} + {1932573600 32400 1 IRKST} + {1950717600 28800 0 IRKT} + {1964023200 32400 1 IRKST} + {1982772000 28800 0 IRKT} + {1995472800 32400 1 IRKST} + {2014221600 28800 0 IRKT} + {2026922400 32400 1 IRKST} + {2045671200 28800 0 IRKT} + {2058372000 32400 1 IRKST} + {2077120800 28800 0 IRKT} + {2090426400 32400 1 IRKST} + {2108570400 28800 0 IRKT} + {2121876000 32400 1 IRKST} + {2140020000 28800 0 IRKT} + {2153325600 32400 1 IRKST} + {2172074400 28800 0 IRKT} + {2184775200 32400 1 IRKST} + {2203524000 28800 0 IRKT} + {2216224800 32400 1 IRKST} + {2234973600 28800 0 IRKT} + {2248279200 32400 1 IRKST} + {2266423200 28800 0 IRKT} + {2279728800 32400 1 IRKST} + {2297872800 28800 0 IRKT} + {2311178400 32400 1 IRKST} + {2329322400 28800 0 IRKT} + {2342628000 32400 1 IRKST} + {2361376800 28800 0 IRKT} + {2374077600 32400 1 IRKST} + {2392826400 28800 0 IRKT} + {2405527200 32400 1 IRKST} + {2424276000 28800 0 IRKT} + {2437581600 32400 1 IRKST} + {2455725600 28800 0 IRKT} + {2469031200 32400 1 IRKST} + {2487175200 28800 0 IRKT} + {2500480800 32400 1 IRKST} + {2519229600 28800 0 IRKT} + {2531930400 32400 1 IRKST} + {2550679200 28800 0 IRKT} + {2563380000 32400 1 IRKST} + {2582128800 28800 0 IRKT} + {2595434400 32400 1 IRKST} + {2613578400 28800 0 IRKT} + {2626884000 32400 1 IRKST} + {2645028000 28800 0 IRKT} + {2658333600 32400 1 IRKST} + {2676477600 28800 0 IRKT} + {2689783200 32400 1 IRKST} + {2708532000 28800 0 IRKT} + {2721232800 32400 1 IRKST} + {2739981600 28800 0 IRKT} + {2752682400 32400 1 IRKST} + {2771431200 28800 0 IRKT} + {2784736800 32400 1 IRKST} + {2802880800 28800 0 IRKT} + {2816186400 32400 1 IRKST} + {2834330400 28800 0 IRKT} + {2847636000 32400 1 IRKST} + {2866384800 28800 0 IRKT} + {2879085600 32400 1 IRKST} + {2897834400 28800 0 IRKT} + {2910535200 32400 1 IRKST} + {2929284000 28800 0 IRKT} + {2941984800 32400 1 IRKST} + {2960733600 28800 0 IRKT} + {2974039200 32400 1 IRKST} + {2992183200 28800 0 IRKT} + {3005488800 32400 1 IRKST} + {3023632800 28800 0 IRKT} + {3036938400 32400 1 IRKST} + {3055687200 28800 0 IRKT} + {3068388000 32400 1 IRKST} + {3087136800 28800 0 IRKT} + {3099837600 32400 1 IRKST} + {3118586400 28800 0 IRKT} + {3131892000 32400 1 IRKST} + {3150036000 28800 0 IRKT} + {3163341600 32400 1 IRKST} + {3181485600 28800 0 IRKT} + {3194791200 32400 1 IRKST} + {3212935200 28800 0 IRKT} + {3226240800 32400 1 IRKST} + {3244989600 28800 0 IRKT} + {3257690400 32400 1 IRKST} + {3276439200 28800 0 IRKT} + {3289140000 32400 1 IRKST} + {3307888800 28800 0 IRKT} + {3321194400 32400 1 IRKST} + {3339338400 28800 0 IRKT} + {3352644000 32400 1 IRKST} + {3370788000 28800 0 IRKT} + {3384093600 32400 1 IRKST} + {3402842400 28800 0 IRKT} + {3415543200 32400 1 IRKST} + {3434292000 28800 0 IRKT} + {3446992800 32400 1 IRKST} + {3465741600 28800 0 IRKT} + {3479047200 32400 1 IRKST} + {3497191200 28800 0 IRKT} + {3510496800 32400 1 IRKST} + {3528640800 28800 0 IRKT} + {3541946400 32400 1 IRKST} + {3560090400 28800 0 IRKT} + {3573396000 32400 1 IRKST} + {3592144800 28800 0 IRKT} + {3604845600 32400 1 IRKST} + {3623594400 28800 0 IRKT} + {3636295200 32400 1 IRKST} + {3655044000 28800 0 IRKT} + {3668349600 32400 1 IRKST} + {3686493600 28800 0 IRKT} + {3699799200 32400 1 IRKST} + {3717943200 28800 0 IRKT} + {3731248800 32400 1 IRKST} + {3749997600 28800 0 IRKT} + {3762698400 32400 1 IRKST} + {3781447200 28800 0 IRKT} + {3794148000 32400 1 IRKST} + {3812896800 28800 0 IRKT} + {3825597600 32400 1 IRKST} + {3844346400 28800 0 IRKT} + {3857652000 32400 1 IRKST} + {3875796000 28800 0 IRKT} + {3889101600 32400 1 IRKST} + {3907245600 28800 0 IRKT} + {3920551200 32400 1 IRKST} + {3939300000 28800 0 IRKT} + {3952000800 32400 1 IRKST} + {3970749600 28800 0 IRKT} + {3983450400 32400 1 IRKST} + {4002199200 28800 0 IRKT} + {4015504800 32400 1 IRKST} + {4033648800 28800 0 IRKT} + {4046954400 32400 1 IRKST} + {4065098400 28800 0 IRKT} + {4078404000 32400 1 IRKST} + {4096548000 28800 0 IRKT} +} diff --git a/library/tzdata/Asia/Istanbul b/library/tzdata/Asia/Istanbul index 85b3fc2..2547496 100644 --- a/library/tzdata/Asia/Istanbul +++ b/library/tzdata/Asia/Istanbul @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Istanbul)]} { - LoadTimeZoneFile Europe/Istanbul -} -set TZData(:Asia/Istanbul) $TZData(:Europe/Istanbul) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Istanbul)]} { + LoadTimeZoneFile Europe/Istanbul +} +set TZData(:Asia/Istanbul) $TZData(:Europe/Istanbul) diff --git a/library/tzdata/Asia/Jakarta b/library/tzdata/Asia/Jakarta index 27033e8..59bb57a 100644 --- a/library/tzdata/Asia/Jakarta +++ b/library/tzdata/Asia/Jakarta @@ -1,13 +1,13 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Jakarta) { - {-9223372036854775808 25632 0 LMT} - {-3231299232 25632 0 JMT} - {-1451719200 26400 0 JAVT} - {-1172906400 27000 0 WIT} - {-876641400 32400 0 JST} - {-766054800 27000 0 WIT} - {-683883000 28800 0 WIT} - {-620812800 27000 0 WIT} - {-189415800 25200 0 WIT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Jakarta) { + {-9223372036854775808 25632 0 LMT} + {-3231299232 25632 0 JMT} + {-1451719200 26400 0 JAVT} + {-1172906400 27000 0 WIT} + {-876641400 32400 0 JST} + {-766054800 27000 0 WIT} + {-683883000 28800 0 WIT} + {-620812800 27000 0 WIT} + {-189415800 25200 0 WIT} +} diff --git a/library/tzdata/Asia/Jayapura b/library/tzdata/Asia/Jayapura index 893da8b..efe1ce2 100644 --- a/library/tzdata/Asia/Jayapura +++ b/library/tzdata/Asia/Jayapura @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Jayapura) { - {-9223372036854775808 33768 0 LMT} - {-1172913768 32400 0 EIT} - {-799491600 34200 0 CST} - {-189423000 32400 0 EIT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Jayapura) { + {-9223372036854775808 33768 0 LMT} + {-1172913768 32400 0 EIT} + {-799491600 34200 0 CST} + {-189423000 32400 0 EIT} +} diff --git a/library/tzdata/Asia/Jerusalem b/library/tzdata/Asia/Jerusalem index 48e213d..563b238 100644 --- a/library/tzdata/Asia/Jerusalem +++ b/library/tzdata/Asia/Jerusalem @@ -1,148 +1,148 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Jerusalem) { - {-9223372036854775808 8456 0 LMT} - {-2840149256 8440 0 JMT} - {-1641003640 7200 0 IST} - {-933645600 10800 1 IDT} - {-857358000 7200 0 IST} - {-844300800 10800 1 IDT} - {-825822000 7200 0 IST} - {-812685600 10800 1 IDT} - {-794199600 7200 0 IST} - {-779853600 10800 1 IDT} - {-762656400 7200 0 IST} - {-748310400 10800 1 IDT} - {-731127600 7200 0 IST} - {-681962400 14400 1 IDDT} - {-673243200 10800 1 IDT} - {-667962000 7200 0 IST} - {-652327200 10800 1 IDT} - {-636426000 7200 0 IST} - {-622087200 10800 1 IDT} - {-608947200 7200 0 IST} - {-591847200 10800 1 IDT} - {-572486400 7200 0 IST} - {-558576000 10800 1 IDT} - {-542851200 7200 0 IST} - {-527731200 10800 1 IDT} - {-514425600 7200 0 IST} - {-490845600 10800 1 IDT} - {-482986800 7200 0 IST} - {-459475200 10800 1 IDT} - {-451537200 7200 0 IST} - {-428551200 10800 1 IDT} - {-418262400 7200 0 IST} - {-400032000 10800 1 IDT} - {-387428400 7200 0 IST} - {142380000 10800 1 IDT} - {150843600 7200 0 IST} - {167176800 10800 1 IDT} - {178664400 7200 0 IST} - {482277600 10800 1 IDT} - {495579600 7200 0 IST} - {516751200 10800 1 IDT} - {526424400 7200 0 IST} - {545436000 10800 1 IDT} - {558478800 7200 0 IST} - {576540000 10800 1 IDT} - {589237200 7200 0 IST} - {609890400 10800 1 IDT} - {620773200 7200 0 IST} - {638316000 10800 1 IDT} - {651618000 7200 0 IST} - {669765600 10800 1 IDT} - {683672400 7200 0 IST} - {701820000 10800 1 IDT} - {715726800 7200 0 IST} - {733701600 10800 1 IDT} - {747176400 7200 0 IST} - {765151200 10800 1 IDT} - {778021200 7200 0 IST} - {796600800 10800 1 IDT} - {810075600 7200 0 IST} - {826840800 10800 1 IDT} - {842821200 7200 0 IST} - {858895200 10800 1 IDT} - {874184400 7200 0 IST} - {890344800 10800 1 IDT} - {905029200 7200 0 IST} - {923011200 10800 1 IDT} - {936313200 7200 0 IST} - {955670400 10800 1 IDT} - {970783200 7200 0 IST} - {986770800 10800 1 IDT} - {1001282400 7200 0 IST} - {1017356400 10800 1 IDT} - {1033941600 7200 0 IST} - {1048806000 10800 1 IDT} - {1065132000 7200 0 IST} - {1081292400 10800 1 IDT} - {1095804000 7200 0 IST} - {1112313600 10800 1 IDT} - {1128812400 7200 0 IST} - {1143763200 10800 1 IDT} - {1159657200 7200 0 IST} - {1175212800 10800 1 IDT} - {1189897200 7200 0 IST} - {1206662400 10800 1 IDT} - {1223161200 7200 0 IST} - {1238112000 10800 1 IDT} - {1254006000 7200 0 IST} - {1269561600 10800 1 IDT} - {1284246000 7200 0 IST} - {1301616000 10800 1 IDT} - {1317510000 7200 0 IST} - {1333065600 10800 1 IDT} - {1348354800 7200 0 IST} - {1364515200 10800 1 IDT} - {1378594800 7200 0 IST} - {1395964800 10800 1 IDT} - {1411858800 7200 0 IST} - {1427414400 10800 1 IDT} - {1442703600 7200 0 IST} - {1459468800 10800 1 IDT} - {1475967600 7200 0 IST} - {1490918400 10800 1 IDT} - {1506207600 7200 0 IST} - {1522368000 10800 1 IDT} - {1537052400 7200 0 IST} - {1553817600 10800 1 IDT} - {1570316400 7200 0 IST} - {1585267200 10800 1 IDT} - {1601161200 7200 0 IST} - {1616716800 10800 1 IDT} - {1631401200 7200 0 IST} - {1648771200 10800 1 IDT} - {1664665200 7200 0 IST} - {1680220800 10800 1 IDT} - {1695510000 7200 0 IST} - {1711670400 10800 1 IDT} - {1728169200 7200 0 IST} - {1743120000 10800 1 IDT} - {1759014000 7200 0 IST} - {1774569600 10800 1 IDT} - {1789858800 7200 0 IST} - {1806019200 10800 1 IDT} - {1823122800 7200 0 IST} - {1838073600 10800 1 IDT} - {1853362800 7200 0 IST} - {1869523200 10800 1 IDT} - {1884207600 7200 0 IST} - {1900972800 10800 1 IDT} - {1917471600 7200 0 IST} - {1932422400 10800 1 IDT} - {1947711600 7200 0 IST} - {1963872000 10800 1 IDT} - {1978556400 7200 0 IST} - {1995926400 10800 1 IDT} - {2011820400 7200 0 IST} - {2027376000 10800 1 IDT} - {2042060400 7200 0 IST} - {2058825600 10800 1 IDT} - {2075324400 7200 0 IST} - {2090275200 10800 1 IDT} - {2106169200 7200 0 IST} - {2121724800 10800 1 IDT} - {2136409200 7200 0 IST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Jerusalem) { + {-9223372036854775808 8456 0 LMT} + {-2840149256 8440 0 JMT} + {-1641003640 7200 0 IST} + {-933645600 10800 1 IDT} + {-857358000 7200 0 IST} + {-844300800 10800 1 IDT} + {-825822000 7200 0 IST} + {-812685600 10800 1 IDT} + {-794199600 7200 0 IST} + {-779853600 10800 1 IDT} + {-762656400 7200 0 IST} + {-748310400 10800 1 IDT} + {-731127600 7200 0 IST} + {-681962400 14400 1 IDDT} + {-673243200 10800 1 IDT} + {-667962000 7200 0 IST} + {-652327200 10800 1 IDT} + {-636426000 7200 0 IST} + {-622087200 10800 1 IDT} + {-608947200 7200 0 IST} + {-591847200 10800 1 IDT} + {-572486400 7200 0 IST} + {-558576000 10800 1 IDT} + {-542851200 7200 0 IST} + {-527731200 10800 1 IDT} + {-514425600 7200 0 IST} + {-490845600 10800 1 IDT} + {-482986800 7200 0 IST} + {-459475200 10800 1 IDT} + {-451537200 7200 0 IST} + {-428551200 10800 1 IDT} + {-418262400 7200 0 IST} + {-400032000 10800 1 IDT} + {-387428400 7200 0 IST} + {142380000 10800 1 IDT} + {150843600 7200 0 IST} + {167176800 10800 1 IDT} + {178664400 7200 0 IST} + {482277600 10800 1 IDT} + {495579600 7200 0 IST} + {516751200 10800 1 IDT} + {526424400 7200 0 IST} + {545436000 10800 1 IDT} + {558478800 7200 0 IST} + {576540000 10800 1 IDT} + {589237200 7200 0 IST} + {609890400 10800 1 IDT} + {620773200 7200 0 IST} + {638316000 10800 1 IDT} + {651618000 7200 0 IST} + {669765600 10800 1 IDT} + {683672400 7200 0 IST} + {701820000 10800 1 IDT} + {715726800 7200 0 IST} + {733701600 10800 1 IDT} + {747176400 7200 0 IST} + {765151200 10800 1 IDT} + {778021200 7200 0 IST} + {796600800 10800 1 IDT} + {810075600 7200 0 IST} + {826840800 10800 1 IDT} + {842821200 7200 0 IST} + {858895200 10800 1 IDT} + {874184400 7200 0 IST} + {890344800 10800 1 IDT} + {905029200 7200 0 IST} + {923011200 10800 1 IDT} + {936313200 7200 0 IST} + {955670400 10800 1 IDT} + {970783200 7200 0 IST} + {986770800 10800 1 IDT} + {1001282400 7200 0 IST} + {1017356400 10800 1 IDT} + {1033941600 7200 0 IST} + {1048806000 10800 1 IDT} + {1065132000 7200 0 IST} + {1081292400 10800 1 IDT} + {1095804000 7200 0 IST} + {1112313600 10800 1 IDT} + {1128812400 7200 0 IST} + {1143763200 10800 1 IDT} + {1159657200 7200 0 IST} + {1175212800 10800 1 IDT} + {1189897200 7200 0 IST} + {1206662400 10800 1 IDT} + {1223161200 7200 0 IST} + {1238112000 10800 1 IDT} + {1254006000 7200 0 IST} + {1269561600 10800 1 IDT} + {1284246000 7200 0 IST} + {1301616000 10800 1 IDT} + {1317510000 7200 0 IST} + {1333065600 10800 1 IDT} + {1348354800 7200 0 IST} + {1364515200 10800 1 IDT} + {1378594800 7200 0 IST} + {1395964800 10800 1 IDT} + {1411858800 7200 0 IST} + {1427414400 10800 1 IDT} + {1442703600 7200 0 IST} + {1459468800 10800 1 IDT} + {1475967600 7200 0 IST} + {1490918400 10800 1 IDT} + {1506207600 7200 0 IST} + {1522368000 10800 1 IDT} + {1537052400 7200 0 IST} + {1553817600 10800 1 IDT} + {1570316400 7200 0 IST} + {1585267200 10800 1 IDT} + {1601161200 7200 0 IST} + {1616716800 10800 1 IDT} + {1631401200 7200 0 IST} + {1648771200 10800 1 IDT} + {1664665200 7200 0 IST} + {1680220800 10800 1 IDT} + {1695510000 7200 0 IST} + {1711670400 10800 1 IDT} + {1728169200 7200 0 IST} + {1743120000 10800 1 IDT} + {1759014000 7200 0 IST} + {1774569600 10800 1 IDT} + {1789858800 7200 0 IST} + {1806019200 10800 1 IDT} + {1823122800 7200 0 IST} + {1838073600 10800 1 IDT} + {1853362800 7200 0 IST} + {1869523200 10800 1 IDT} + {1884207600 7200 0 IST} + {1900972800 10800 1 IDT} + {1917471600 7200 0 IST} + {1932422400 10800 1 IDT} + {1947711600 7200 0 IST} + {1963872000 10800 1 IDT} + {1978556400 7200 0 IST} + {1995926400 10800 1 IDT} + {2011820400 7200 0 IST} + {2027376000 10800 1 IDT} + {2042060400 7200 0 IST} + {2058825600 10800 1 IDT} + {2075324400 7200 0 IST} + {2090275200 10800 1 IDT} + {2106169200 7200 0 IST} + {2121724800 10800 1 IDT} + {2136409200 7200 0 IST} +} diff --git a/library/tzdata/Asia/Kabul b/library/tzdata/Asia/Kabul index 33d7282..336d901 100644 --- a/library/tzdata/Asia/Kabul +++ b/library/tzdata/Asia/Kabul @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kabul) { - {-9223372036854775808 16608 0 LMT} - {-2524538208 14400 0 AFT} - {-788932800 16200 0 AFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kabul) { + {-9223372036854775808 16608 0 LMT} + {-2524538208 14400 0 AFT} + {-788932800 16200 0 AFT} +} diff --git a/library/tzdata/Asia/Kamchatka b/library/tzdata/Asia/Kamchatka index a390701..3fff12b 100644 --- a/library/tzdata/Asia/Kamchatka +++ b/library/tzdata/Asia/Kamchatka @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kamchatka) { - {-9223372036854775808 38076 0 LMT} - {-1487759676 39600 0 PETT} - {-1247569200 43200 0 PETMMTT} - {354888000 46800 1 PETST} - {370695600 43200 0 PETT} - {386424000 46800 1 PETST} - {402231600 43200 0 PETT} - {417960000 46800 1 PETST} - {433767600 43200 0 PETT} - {449582400 46800 1 PETST} - {465314400 43200 0 PETT} - {481039200 46800 1 PETST} - {496764000 43200 0 PETT} - {512488800 46800 1 PETST} - {528213600 43200 0 PETT} - {543938400 46800 1 PETST} - {559663200 43200 0 PETT} - {575388000 46800 1 PETST} - {591112800 43200 0 PETT} - {606837600 46800 1 PETST} - {622562400 43200 0 PETT} - {638287200 46800 1 PETST} - {654616800 43200 0 PETT} - {670341600 39600 0 PETMMTT} - {670345200 43200 1 PETST} - {686070000 39600 0 PETT} - {695746800 43200 0 PETMMTT} - {701780400 46800 1 PETST} - {717501600 43200 0 PETT} - {733240800 46800 1 PETST} - {748965600 43200 0 PETT} - {764690400 46800 1 PETST} - {780415200 43200 0 PETT} - {796140000 46800 1 PETST} - {811864800 43200 0 PETT} - {828194400 46800 1 PETST} - {846338400 43200 0 PETT} - {859644000 46800 1 PETST} - {877788000 43200 0 PETT} - {891093600 46800 1 PETST} - {909237600 43200 0 PETT} - {922543200 46800 1 PETST} - {941292000 43200 0 PETT} - {953992800 46800 1 PETST} - {972741600 43200 0 PETT} - {985442400 46800 1 PETST} - {1004191200 43200 0 PETT} - {1017496800 46800 1 PETST} - {1035640800 43200 0 PETT} - {1048946400 46800 1 PETST} - {1067090400 43200 0 PETT} - {1080396000 46800 1 PETST} - {1099144800 43200 0 PETT} - {1111845600 46800 1 PETST} - {1130594400 43200 0 PETT} - {1143295200 46800 1 PETST} - {1162044000 43200 0 PETT} - {1174744800 46800 1 PETST} - {1193493600 43200 0 PETT} - {1206799200 46800 1 PETST} - {1224943200 43200 0 PETT} - {1238248800 46800 1 PETST} - {1256392800 43200 0 PETT} - {1269698400 46800 1 PETST} - {1288447200 43200 0 PETT} - {1301148000 46800 1 PETST} - {1319896800 43200 0 PETT} - {1332597600 46800 1 PETST} - {1351346400 43200 0 PETT} - {1364652000 46800 1 PETST} - {1382796000 43200 0 PETT} - {1396101600 46800 1 PETST} - {1414245600 43200 0 PETT} - {1427551200 46800 1 PETST} - {1445695200 43200 0 PETT} - {1459000800 46800 1 PETST} - {1477749600 43200 0 PETT} - {1490450400 46800 1 PETST} - {1509199200 43200 0 PETT} - {1521900000 46800 1 PETST} - {1540648800 43200 0 PETT} - {1553954400 46800 1 PETST} - {1572098400 43200 0 PETT} - {1585404000 46800 1 PETST} - {1603548000 43200 0 PETT} - {1616853600 46800 1 PETST} - {1635602400 43200 0 PETT} - {1648303200 46800 1 PETST} - {1667052000 43200 0 PETT} - {1679752800 46800 1 PETST} - {1698501600 43200 0 PETT} - {1711807200 46800 1 PETST} - {1729951200 43200 0 PETT} - {1743256800 46800 1 PETST} - {1761400800 43200 0 PETT} - {1774706400 46800 1 PETST} - {1792850400 43200 0 PETT} - {1806156000 46800 1 PETST} - {1824904800 43200 0 PETT} - {1837605600 46800 1 PETST} - {1856354400 43200 0 PETT} - {1869055200 46800 1 PETST} - {1887804000 43200 0 PETT} - {1901109600 46800 1 PETST} - {1919253600 43200 0 PETT} - {1932559200 46800 1 PETST} - {1950703200 43200 0 PETT} - {1964008800 46800 1 PETST} - {1982757600 43200 0 PETT} - {1995458400 46800 1 PETST} - {2014207200 43200 0 PETT} - {2026908000 46800 1 PETST} - {2045656800 43200 0 PETT} - {2058357600 46800 1 PETST} - {2077106400 43200 0 PETT} - {2090412000 46800 1 PETST} - {2108556000 43200 0 PETT} - {2121861600 46800 1 PETST} - {2140005600 43200 0 PETT} - {2153311200 46800 1 PETST} - {2172060000 43200 0 PETT} - {2184760800 46800 1 PETST} - {2203509600 43200 0 PETT} - {2216210400 46800 1 PETST} - {2234959200 43200 0 PETT} - {2248264800 46800 1 PETST} - {2266408800 43200 0 PETT} - {2279714400 46800 1 PETST} - {2297858400 43200 0 PETT} - {2311164000 46800 1 PETST} - {2329308000 43200 0 PETT} - {2342613600 46800 1 PETST} - {2361362400 43200 0 PETT} - {2374063200 46800 1 PETST} - {2392812000 43200 0 PETT} - {2405512800 46800 1 PETST} - {2424261600 43200 0 PETT} - {2437567200 46800 1 PETST} - {2455711200 43200 0 PETT} - {2469016800 46800 1 PETST} - {2487160800 43200 0 PETT} - {2500466400 46800 1 PETST} - {2519215200 43200 0 PETT} - {2531916000 46800 1 PETST} - {2550664800 43200 0 PETT} - {2563365600 46800 1 PETST} - {2582114400 43200 0 PETT} - {2595420000 46800 1 PETST} - {2613564000 43200 0 PETT} - {2626869600 46800 1 PETST} - {2645013600 43200 0 PETT} - {2658319200 46800 1 PETST} - {2676463200 43200 0 PETT} - {2689768800 46800 1 PETST} - {2708517600 43200 0 PETT} - {2721218400 46800 1 PETST} - {2739967200 43200 0 PETT} - {2752668000 46800 1 PETST} - {2771416800 43200 0 PETT} - {2784722400 46800 1 PETST} - {2802866400 43200 0 PETT} - {2816172000 46800 1 PETST} - {2834316000 43200 0 PETT} - {2847621600 46800 1 PETST} - {2866370400 43200 0 PETT} - {2879071200 46800 1 PETST} - {2897820000 43200 0 PETT} - {2910520800 46800 1 PETST} - {2929269600 43200 0 PETT} - {2941970400 46800 1 PETST} - {2960719200 43200 0 PETT} - {2974024800 46800 1 PETST} - {2992168800 43200 0 PETT} - {3005474400 46800 1 PETST} - {3023618400 43200 0 PETT} - {3036924000 46800 1 PETST} - {3055672800 43200 0 PETT} - {3068373600 46800 1 PETST} - {3087122400 43200 0 PETT} - {3099823200 46800 1 PETST} - {3118572000 43200 0 PETT} - {3131877600 46800 1 PETST} - {3150021600 43200 0 PETT} - {3163327200 46800 1 PETST} - {3181471200 43200 0 PETT} - {3194776800 46800 1 PETST} - {3212920800 43200 0 PETT} - {3226226400 46800 1 PETST} - {3244975200 43200 0 PETT} - {3257676000 46800 1 PETST} - {3276424800 43200 0 PETT} - {3289125600 46800 1 PETST} - {3307874400 43200 0 PETT} - {3321180000 46800 1 PETST} - {3339324000 43200 0 PETT} - {3352629600 46800 1 PETST} - {3370773600 43200 0 PETT} - {3384079200 46800 1 PETST} - {3402828000 43200 0 PETT} - {3415528800 46800 1 PETST} - {3434277600 43200 0 PETT} - {3446978400 46800 1 PETST} - {3465727200 43200 0 PETT} - {3479032800 46800 1 PETST} - {3497176800 43200 0 PETT} - {3510482400 46800 1 PETST} - {3528626400 43200 0 PETT} - {3541932000 46800 1 PETST} - {3560076000 43200 0 PETT} - {3573381600 46800 1 PETST} - {3592130400 43200 0 PETT} - {3604831200 46800 1 PETST} - {3623580000 43200 0 PETT} - {3636280800 46800 1 PETST} - {3655029600 43200 0 PETT} - {3668335200 46800 1 PETST} - {3686479200 43200 0 PETT} - {3699784800 46800 1 PETST} - {3717928800 43200 0 PETT} - {3731234400 46800 1 PETST} - {3749983200 43200 0 PETT} - {3762684000 46800 1 PETST} - {3781432800 43200 0 PETT} - {3794133600 46800 1 PETST} - {3812882400 43200 0 PETT} - {3825583200 46800 1 PETST} - {3844332000 43200 0 PETT} - {3857637600 46800 1 PETST} - {3875781600 43200 0 PETT} - {3889087200 46800 1 PETST} - {3907231200 43200 0 PETT} - {3920536800 46800 1 PETST} - {3939285600 43200 0 PETT} - {3951986400 46800 1 PETST} - {3970735200 43200 0 PETT} - {3983436000 46800 1 PETST} - {4002184800 43200 0 PETT} - {4015490400 46800 1 PETST} - {4033634400 43200 0 PETT} - {4046940000 46800 1 PETST} - {4065084000 43200 0 PETT} - {4078389600 46800 1 PETST} - {4096533600 43200 0 PETT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kamchatka) { + {-9223372036854775808 38076 0 LMT} + {-1487759676 39600 0 PETT} + {-1247569200 43200 0 PETMMTT} + {354888000 46800 1 PETST} + {370695600 43200 0 PETT} + {386424000 46800 1 PETST} + {402231600 43200 0 PETT} + {417960000 46800 1 PETST} + {433767600 43200 0 PETT} + {449582400 46800 1 PETST} + {465314400 43200 0 PETT} + {481039200 46800 1 PETST} + {496764000 43200 0 PETT} + {512488800 46800 1 PETST} + {528213600 43200 0 PETT} + {543938400 46800 1 PETST} + {559663200 43200 0 PETT} + {575388000 46800 1 PETST} + {591112800 43200 0 PETT} + {606837600 46800 1 PETST} + {622562400 43200 0 PETT} + {638287200 46800 1 PETST} + {654616800 43200 0 PETT} + {670341600 39600 0 PETMMTT} + {670345200 43200 1 PETST} + {686070000 39600 0 PETT} + {695746800 43200 0 PETMMTT} + {701780400 46800 1 PETST} + {717501600 43200 0 PETT} + {733240800 46800 1 PETST} + {748965600 43200 0 PETT} + {764690400 46800 1 PETST} + {780415200 43200 0 PETT} + {796140000 46800 1 PETST} + {811864800 43200 0 PETT} + {828194400 46800 1 PETST} + {846338400 43200 0 PETT} + {859644000 46800 1 PETST} + {877788000 43200 0 PETT} + {891093600 46800 1 PETST} + {909237600 43200 0 PETT} + {922543200 46800 1 PETST} + {941292000 43200 0 PETT} + {953992800 46800 1 PETST} + {972741600 43200 0 PETT} + {985442400 46800 1 PETST} + {1004191200 43200 0 PETT} + {1017496800 46800 1 PETST} + {1035640800 43200 0 PETT} + {1048946400 46800 1 PETST} + {1067090400 43200 0 PETT} + {1080396000 46800 1 PETST} + {1099144800 43200 0 PETT} + {1111845600 46800 1 PETST} + {1130594400 43200 0 PETT} + {1143295200 46800 1 PETST} + {1162044000 43200 0 PETT} + {1174744800 46800 1 PETST} + {1193493600 43200 0 PETT} + {1206799200 46800 1 PETST} + {1224943200 43200 0 PETT} + {1238248800 46800 1 PETST} + {1256392800 43200 0 PETT} + {1269698400 46800 1 PETST} + {1288447200 43200 0 PETT} + {1301148000 46800 1 PETST} + {1319896800 43200 0 PETT} + {1332597600 46800 1 PETST} + {1351346400 43200 0 PETT} + {1364652000 46800 1 PETST} + {1382796000 43200 0 PETT} + {1396101600 46800 1 PETST} + {1414245600 43200 0 PETT} + {1427551200 46800 1 PETST} + {1445695200 43200 0 PETT} + {1459000800 46800 1 PETST} + {1477749600 43200 0 PETT} + {1490450400 46800 1 PETST} + {1509199200 43200 0 PETT} + {1521900000 46800 1 PETST} + {1540648800 43200 0 PETT} + {1553954400 46800 1 PETST} + {1572098400 43200 0 PETT} + {1585404000 46800 1 PETST} + {1603548000 43200 0 PETT} + {1616853600 46800 1 PETST} + {1635602400 43200 0 PETT} + {1648303200 46800 1 PETST} + {1667052000 43200 0 PETT} + {1679752800 46800 1 PETST} + {1698501600 43200 0 PETT} + {1711807200 46800 1 PETST} + {1729951200 43200 0 PETT} + {1743256800 46800 1 PETST} + {1761400800 43200 0 PETT} + {1774706400 46800 1 PETST} + {1792850400 43200 0 PETT} + {1806156000 46800 1 PETST} + {1824904800 43200 0 PETT} + {1837605600 46800 1 PETST} + {1856354400 43200 0 PETT} + {1869055200 46800 1 PETST} + {1887804000 43200 0 PETT} + {1901109600 46800 1 PETST} + {1919253600 43200 0 PETT} + {1932559200 46800 1 PETST} + {1950703200 43200 0 PETT} + {1964008800 46800 1 PETST} + {1982757600 43200 0 PETT} + {1995458400 46800 1 PETST} + {2014207200 43200 0 PETT} + {2026908000 46800 1 PETST} + {2045656800 43200 0 PETT} + {2058357600 46800 1 PETST} + {2077106400 43200 0 PETT} + {2090412000 46800 1 PETST} + {2108556000 43200 0 PETT} + {2121861600 46800 1 PETST} + {2140005600 43200 0 PETT} + {2153311200 46800 1 PETST} + {2172060000 43200 0 PETT} + {2184760800 46800 1 PETST} + {2203509600 43200 0 PETT} + {2216210400 46800 1 PETST} + {2234959200 43200 0 PETT} + {2248264800 46800 1 PETST} + {2266408800 43200 0 PETT} + {2279714400 46800 1 PETST} + {2297858400 43200 0 PETT} + {2311164000 46800 1 PETST} + {2329308000 43200 0 PETT} + {2342613600 46800 1 PETST} + {2361362400 43200 0 PETT} + {2374063200 46800 1 PETST} + {2392812000 43200 0 PETT} + {2405512800 46800 1 PETST} + {2424261600 43200 0 PETT} + {2437567200 46800 1 PETST} + {2455711200 43200 0 PETT} + {2469016800 46800 1 PETST} + {2487160800 43200 0 PETT} + {2500466400 46800 1 PETST} + {2519215200 43200 0 PETT} + {2531916000 46800 1 PETST} + {2550664800 43200 0 PETT} + {2563365600 46800 1 PETST} + {2582114400 43200 0 PETT} + {2595420000 46800 1 PETST} + {2613564000 43200 0 PETT} + {2626869600 46800 1 PETST} + {2645013600 43200 0 PETT} + {2658319200 46800 1 PETST} + {2676463200 43200 0 PETT} + {2689768800 46800 1 PETST} + {2708517600 43200 0 PETT} + {2721218400 46800 1 PETST} + {2739967200 43200 0 PETT} + {2752668000 46800 1 PETST} + {2771416800 43200 0 PETT} + {2784722400 46800 1 PETST} + {2802866400 43200 0 PETT} + {2816172000 46800 1 PETST} + {2834316000 43200 0 PETT} + {2847621600 46800 1 PETST} + {2866370400 43200 0 PETT} + {2879071200 46800 1 PETST} + {2897820000 43200 0 PETT} + {2910520800 46800 1 PETST} + {2929269600 43200 0 PETT} + {2941970400 46800 1 PETST} + {2960719200 43200 0 PETT} + {2974024800 46800 1 PETST} + {2992168800 43200 0 PETT} + {3005474400 46800 1 PETST} + {3023618400 43200 0 PETT} + {3036924000 46800 1 PETST} + {3055672800 43200 0 PETT} + {3068373600 46800 1 PETST} + {3087122400 43200 0 PETT} + {3099823200 46800 1 PETST} + {3118572000 43200 0 PETT} + {3131877600 46800 1 PETST} + {3150021600 43200 0 PETT} + {3163327200 46800 1 PETST} + {3181471200 43200 0 PETT} + {3194776800 46800 1 PETST} + {3212920800 43200 0 PETT} + {3226226400 46800 1 PETST} + {3244975200 43200 0 PETT} + {3257676000 46800 1 PETST} + {3276424800 43200 0 PETT} + {3289125600 46800 1 PETST} + {3307874400 43200 0 PETT} + {3321180000 46800 1 PETST} + {3339324000 43200 0 PETT} + {3352629600 46800 1 PETST} + {3370773600 43200 0 PETT} + {3384079200 46800 1 PETST} + {3402828000 43200 0 PETT} + {3415528800 46800 1 PETST} + {3434277600 43200 0 PETT} + {3446978400 46800 1 PETST} + {3465727200 43200 0 PETT} + {3479032800 46800 1 PETST} + {3497176800 43200 0 PETT} + {3510482400 46800 1 PETST} + {3528626400 43200 0 PETT} + {3541932000 46800 1 PETST} + {3560076000 43200 0 PETT} + {3573381600 46800 1 PETST} + {3592130400 43200 0 PETT} + {3604831200 46800 1 PETST} + {3623580000 43200 0 PETT} + {3636280800 46800 1 PETST} + {3655029600 43200 0 PETT} + {3668335200 46800 1 PETST} + {3686479200 43200 0 PETT} + {3699784800 46800 1 PETST} + {3717928800 43200 0 PETT} + {3731234400 46800 1 PETST} + {3749983200 43200 0 PETT} + {3762684000 46800 1 PETST} + {3781432800 43200 0 PETT} + {3794133600 46800 1 PETST} + {3812882400 43200 0 PETT} + {3825583200 46800 1 PETST} + {3844332000 43200 0 PETT} + {3857637600 46800 1 PETST} + {3875781600 43200 0 PETT} + {3889087200 46800 1 PETST} + {3907231200 43200 0 PETT} + {3920536800 46800 1 PETST} + {3939285600 43200 0 PETT} + {3951986400 46800 1 PETST} + {3970735200 43200 0 PETT} + {3983436000 46800 1 PETST} + {4002184800 43200 0 PETT} + {4015490400 46800 1 PETST} + {4033634400 43200 0 PETT} + {4046940000 46800 1 PETST} + {4065084000 43200 0 PETT} + {4078389600 46800 1 PETST} + {4096533600 43200 0 PETT} +} diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 9db002c..3022de8 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -1,14 +1,14 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Karachi) { - {-9223372036854775808 16092 0 LMT} - {-1988166492 19800 0 IST} - {-862637400 23400 1 IST} - {-764145000 19800 0 IST} - {-576135000 18000 0 KART} - {38775600 18000 0 PKT} - {1018119660 21600 1 PKST} - {1033840860 18000 0 PKT} - {1212260400 21600 1 PKST} - {1225476000 18000 0 PKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Karachi) { + {-9223372036854775808 16092 0 LMT} + {-1988166492 19800 0 IST} + {-862637400 23400 1 IST} + {-764145000 19800 0 IST} + {-576135000 18000 0 KART} + {38775600 18000 0 PKT} + {1018119660 21600 1 PKST} + {1033840860 18000 0 PKT} + {1212260400 21600 1 PKST} + {1225476000 18000 0 PKT} +} diff --git a/library/tzdata/Asia/Kashgar b/library/tzdata/Asia/Kashgar index 2f64f42..7988656 100644 --- a/library/tzdata/Asia/Kashgar +++ b/library/tzdata/Asia/Kashgar @@ -1,20 +1,20 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kashgar) { - {-9223372036854775808 18236 0 LMT} - {-1325480636 19800 0 KAST} - {-946791000 18000 0 KAST} - {325969200 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kashgar) { + {-9223372036854775808 18236 0 LMT} + {-1325480636 19800 0 KAST} + {-946791000 18000 0 KAST} + {325969200 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Kathmandu b/library/tzdata/Asia/Kathmandu new file mode 100644 index 0000000..5b99813 --- /dev/null +++ b/library/tzdata/Asia/Kathmandu @@ -0,0 +1,7 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kathmandu) { + {-9223372036854775808 20476 0 LMT} + {-1577943676 19800 0 IST} + {504901800 20700 0 NPT} +} diff --git a/library/tzdata/Asia/Katmandu b/library/tzdata/Asia/Katmandu index 12f7662..2312210 100644 --- a/library/tzdata/Asia/Katmandu +++ b/library/tzdata/Asia/Katmandu @@ -1,7 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Katmandu) { - {-9223372036854775808 20476 0 LMT} - {-1577943676 19800 0 IST} - {504901800 20700 0 NPT} -} +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Kathmandu)]} { + LoadTimeZoneFile Asia/Kathmandu +} +set TZData(:Asia/Katmandu) $TZData(:Asia/Kathmandu) diff --git a/library/tzdata/Asia/Kolkata b/library/tzdata/Asia/Kolkata index a87bf31..f5028e8 100644 --- a/library/tzdata/Asia/Kolkata +++ b/library/tzdata/Asia/Kolkata @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kolkata) { - {-9223372036854775808 21208 0 LMT} - {-2840162008 21200 0 HMT} - {-891582800 23400 0 BURT} - {-872058600 19800 0 IST} - {-862637400 23400 1 IST} - {-764145000 19800 0 IST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kolkata) { + {-9223372036854775808 21208 0 LMT} + {-2840162008 21200 0 HMT} + {-891582800 23400 0 BURT} + {-872058600 19800 0 IST} + {-862637400 23400 1 IST} + {-764145000 19800 0 IST} +} diff --git a/library/tzdata/Asia/Krasnoyarsk b/library/tzdata/Asia/Krasnoyarsk index 24046fe..9abc439 100644 --- a/library/tzdata/Asia/Krasnoyarsk +++ b/library/tzdata/Asia/Krasnoyarsk @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Krasnoyarsk) { - {-9223372036854775808 22280 0 LMT} - {-1577513480 21600 0 KRAT} - {-1247551200 25200 0 KRAMMTT} - {354906000 28800 1 KRAST} - {370713600 25200 0 KRAT} - {386442000 28800 1 KRAST} - {402249600 25200 0 KRAT} - {417978000 28800 1 KRAST} - {433785600 25200 0 KRAT} - {449600400 28800 1 KRAST} - {465332400 25200 0 KRAT} - {481057200 28800 1 KRAST} - {496782000 25200 0 KRAT} - {512506800 28800 1 KRAST} - {528231600 25200 0 KRAT} - {543956400 28800 1 KRAST} - {559681200 25200 0 KRAT} - {575406000 28800 1 KRAST} - {591130800 25200 0 KRAT} - {606855600 28800 1 KRAST} - {622580400 25200 0 KRAT} - {638305200 28800 1 KRAST} - {654634800 25200 0 KRAT} - {670359600 21600 0 KRAMMTT} - {670363200 25200 1 KRAST} - {686088000 21600 0 KRAT} - {695764800 25200 0 KRAMMTT} - {701798400 28800 1 KRAST} - {717519600 25200 0 KRAT} - {733258800 28800 1 KRAST} - {748983600 25200 0 KRAT} - {764708400 28800 1 KRAST} - {780433200 25200 0 KRAT} - {796158000 28800 1 KRAST} - {811882800 25200 0 KRAT} - {828212400 28800 1 KRAST} - {846356400 25200 0 KRAT} - {859662000 28800 1 KRAST} - {877806000 25200 0 KRAT} - {891111600 28800 1 KRAST} - {909255600 25200 0 KRAT} - {922561200 28800 1 KRAST} - {941310000 25200 0 KRAT} - {954010800 28800 1 KRAST} - {972759600 25200 0 KRAT} - {985460400 28800 1 KRAST} - {1004209200 25200 0 KRAT} - {1017514800 28800 1 KRAST} - {1035658800 25200 0 KRAT} - {1048964400 28800 1 KRAST} - {1067108400 25200 0 KRAT} - {1080414000 28800 1 KRAST} - {1099162800 25200 0 KRAT} - {1111863600 28800 1 KRAST} - {1130612400 25200 0 KRAT} - {1143313200 28800 1 KRAST} - {1162062000 25200 0 KRAT} - {1174762800 28800 1 KRAST} - {1193511600 25200 0 KRAT} - {1206817200 28800 1 KRAST} - {1224961200 25200 0 KRAT} - {1238266800 28800 1 KRAST} - {1256410800 25200 0 KRAT} - {1269716400 28800 1 KRAST} - {1288465200 25200 0 KRAT} - {1301166000 28800 1 KRAST} - {1319914800 25200 0 KRAT} - {1332615600 28800 1 KRAST} - {1351364400 25200 0 KRAT} - {1364670000 28800 1 KRAST} - {1382814000 25200 0 KRAT} - {1396119600 28800 1 KRAST} - {1414263600 25200 0 KRAT} - {1427569200 28800 1 KRAST} - {1445713200 25200 0 KRAT} - {1459018800 28800 1 KRAST} - {1477767600 25200 0 KRAT} - {1490468400 28800 1 KRAST} - {1509217200 25200 0 KRAT} - {1521918000 28800 1 KRAST} - {1540666800 25200 0 KRAT} - {1553972400 28800 1 KRAST} - {1572116400 25200 0 KRAT} - {1585422000 28800 1 KRAST} - {1603566000 25200 0 KRAT} - {1616871600 28800 1 KRAST} - {1635620400 25200 0 KRAT} - {1648321200 28800 1 KRAST} - {1667070000 25200 0 KRAT} - {1679770800 28800 1 KRAST} - {1698519600 25200 0 KRAT} - {1711825200 28800 1 KRAST} - {1729969200 25200 0 KRAT} - {1743274800 28800 1 KRAST} - {1761418800 25200 0 KRAT} - {1774724400 28800 1 KRAST} - {1792868400 25200 0 KRAT} - {1806174000 28800 1 KRAST} - {1824922800 25200 0 KRAT} - {1837623600 28800 1 KRAST} - {1856372400 25200 0 KRAT} - {1869073200 28800 1 KRAST} - {1887822000 25200 0 KRAT} - {1901127600 28800 1 KRAST} - {1919271600 25200 0 KRAT} - {1932577200 28800 1 KRAST} - {1950721200 25200 0 KRAT} - {1964026800 28800 1 KRAST} - {1982775600 25200 0 KRAT} - {1995476400 28800 1 KRAST} - {2014225200 25200 0 KRAT} - {2026926000 28800 1 KRAST} - {2045674800 25200 0 KRAT} - {2058375600 28800 1 KRAST} - {2077124400 25200 0 KRAT} - {2090430000 28800 1 KRAST} - {2108574000 25200 0 KRAT} - {2121879600 28800 1 KRAST} - {2140023600 25200 0 KRAT} - {2153329200 28800 1 KRAST} - {2172078000 25200 0 KRAT} - {2184778800 28800 1 KRAST} - {2203527600 25200 0 KRAT} - {2216228400 28800 1 KRAST} - {2234977200 25200 0 KRAT} - {2248282800 28800 1 KRAST} - {2266426800 25200 0 KRAT} - {2279732400 28800 1 KRAST} - {2297876400 25200 0 KRAT} - {2311182000 28800 1 KRAST} - {2329326000 25200 0 KRAT} - {2342631600 28800 1 KRAST} - {2361380400 25200 0 KRAT} - {2374081200 28800 1 KRAST} - {2392830000 25200 0 KRAT} - {2405530800 28800 1 KRAST} - {2424279600 25200 0 KRAT} - {2437585200 28800 1 KRAST} - {2455729200 25200 0 KRAT} - {2469034800 28800 1 KRAST} - {2487178800 25200 0 KRAT} - {2500484400 28800 1 KRAST} - {2519233200 25200 0 KRAT} - {2531934000 28800 1 KRAST} - {2550682800 25200 0 KRAT} - {2563383600 28800 1 KRAST} - {2582132400 25200 0 KRAT} - {2595438000 28800 1 KRAST} - {2613582000 25200 0 KRAT} - {2626887600 28800 1 KRAST} - {2645031600 25200 0 KRAT} - {2658337200 28800 1 KRAST} - {2676481200 25200 0 KRAT} - {2689786800 28800 1 KRAST} - {2708535600 25200 0 KRAT} - {2721236400 28800 1 KRAST} - {2739985200 25200 0 KRAT} - {2752686000 28800 1 KRAST} - {2771434800 25200 0 KRAT} - {2784740400 28800 1 KRAST} - {2802884400 25200 0 KRAT} - {2816190000 28800 1 KRAST} - {2834334000 25200 0 KRAT} - {2847639600 28800 1 KRAST} - {2866388400 25200 0 KRAT} - {2879089200 28800 1 KRAST} - {2897838000 25200 0 KRAT} - {2910538800 28800 1 KRAST} - {2929287600 25200 0 KRAT} - {2941988400 28800 1 KRAST} - {2960737200 25200 0 KRAT} - {2974042800 28800 1 KRAST} - {2992186800 25200 0 KRAT} - {3005492400 28800 1 KRAST} - {3023636400 25200 0 KRAT} - {3036942000 28800 1 KRAST} - {3055690800 25200 0 KRAT} - {3068391600 28800 1 KRAST} - {3087140400 25200 0 KRAT} - {3099841200 28800 1 KRAST} - {3118590000 25200 0 KRAT} - {3131895600 28800 1 KRAST} - {3150039600 25200 0 KRAT} - {3163345200 28800 1 KRAST} - {3181489200 25200 0 KRAT} - {3194794800 28800 1 KRAST} - {3212938800 25200 0 KRAT} - {3226244400 28800 1 KRAST} - {3244993200 25200 0 KRAT} - {3257694000 28800 1 KRAST} - {3276442800 25200 0 KRAT} - {3289143600 28800 1 KRAST} - {3307892400 25200 0 KRAT} - {3321198000 28800 1 KRAST} - {3339342000 25200 0 KRAT} - {3352647600 28800 1 KRAST} - {3370791600 25200 0 KRAT} - {3384097200 28800 1 KRAST} - {3402846000 25200 0 KRAT} - {3415546800 28800 1 KRAST} - {3434295600 25200 0 KRAT} - {3446996400 28800 1 KRAST} - {3465745200 25200 0 KRAT} - {3479050800 28800 1 KRAST} - {3497194800 25200 0 KRAT} - {3510500400 28800 1 KRAST} - {3528644400 25200 0 KRAT} - {3541950000 28800 1 KRAST} - {3560094000 25200 0 KRAT} - {3573399600 28800 1 KRAST} - {3592148400 25200 0 KRAT} - {3604849200 28800 1 KRAST} - {3623598000 25200 0 KRAT} - {3636298800 28800 1 KRAST} - {3655047600 25200 0 KRAT} - {3668353200 28800 1 KRAST} - {3686497200 25200 0 KRAT} - {3699802800 28800 1 KRAST} - {3717946800 25200 0 KRAT} - {3731252400 28800 1 KRAST} - {3750001200 25200 0 KRAT} - {3762702000 28800 1 KRAST} - {3781450800 25200 0 KRAT} - {3794151600 28800 1 KRAST} - {3812900400 25200 0 KRAT} - {3825601200 28800 1 KRAST} - {3844350000 25200 0 KRAT} - {3857655600 28800 1 KRAST} - {3875799600 25200 0 KRAT} - {3889105200 28800 1 KRAST} - {3907249200 25200 0 KRAT} - {3920554800 28800 1 KRAST} - {3939303600 25200 0 KRAT} - {3952004400 28800 1 KRAST} - {3970753200 25200 0 KRAT} - {3983454000 28800 1 KRAST} - {4002202800 25200 0 KRAT} - {4015508400 28800 1 KRAST} - {4033652400 25200 0 KRAT} - {4046958000 28800 1 KRAST} - {4065102000 25200 0 KRAT} - {4078407600 28800 1 KRAST} - {4096551600 25200 0 KRAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Krasnoyarsk) { + {-9223372036854775808 22280 0 LMT} + {-1577513480 21600 0 KRAT} + {-1247551200 25200 0 KRAMMTT} + {354906000 28800 1 KRAST} + {370713600 25200 0 KRAT} + {386442000 28800 1 KRAST} + {402249600 25200 0 KRAT} + {417978000 28800 1 KRAST} + {433785600 25200 0 KRAT} + {449600400 28800 1 KRAST} + {465332400 25200 0 KRAT} + {481057200 28800 1 KRAST} + {496782000 25200 0 KRAT} + {512506800 28800 1 KRAST} + {528231600 25200 0 KRAT} + {543956400 28800 1 KRAST} + {559681200 25200 0 KRAT} + {575406000 28800 1 KRAST} + {591130800 25200 0 KRAT} + {606855600 28800 1 KRAST} + {622580400 25200 0 KRAT} + {638305200 28800 1 KRAST} + {654634800 25200 0 KRAT} + {670359600 21600 0 KRAMMTT} + {670363200 25200 1 KRAST} + {686088000 21600 0 KRAT} + {695764800 25200 0 KRAMMTT} + {701798400 28800 1 KRAST} + {717519600 25200 0 KRAT} + {733258800 28800 1 KRAST} + {748983600 25200 0 KRAT} + {764708400 28800 1 KRAST} + {780433200 25200 0 KRAT} + {796158000 28800 1 KRAST} + {811882800 25200 0 KRAT} + {828212400 28800 1 KRAST} + {846356400 25200 0 KRAT} + {859662000 28800 1 KRAST} + {877806000 25200 0 KRAT} + {891111600 28800 1 KRAST} + {909255600 25200 0 KRAT} + {922561200 28800 1 KRAST} + {941310000 25200 0 KRAT} + {954010800 28800 1 KRAST} + {972759600 25200 0 KRAT} + {985460400 28800 1 KRAST} + {1004209200 25200 0 KRAT} + {1017514800 28800 1 KRAST} + {1035658800 25200 0 KRAT} + {1048964400 28800 1 KRAST} + {1067108400 25200 0 KRAT} + {1080414000 28800 1 KRAST} + {1099162800 25200 0 KRAT} + {1111863600 28800 1 KRAST} + {1130612400 25200 0 KRAT} + {1143313200 28800 1 KRAST} + {1162062000 25200 0 KRAT} + {1174762800 28800 1 KRAST} + {1193511600 25200 0 KRAT} + {1206817200 28800 1 KRAST} + {1224961200 25200 0 KRAT} + {1238266800 28800 1 KRAST} + {1256410800 25200 0 KRAT} + {1269716400 28800 1 KRAST} + {1288465200 25200 0 KRAT} + {1301166000 28800 1 KRAST} + {1319914800 25200 0 KRAT} + {1332615600 28800 1 KRAST} + {1351364400 25200 0 KRAT} + {1364670000 28800 1 KRAST} + {1382814000 25200 0 KRAT} + {1396119600 28800 1 KRAST} + {1414263600 25200 0 KRAT} + {1427569200 28800 1 KRAST} + {1445713200 25200 0 KRAT} + {1459018800 28800 1 KRAST} + {1477767600 25200 0 KRAT} + {1490468400 28800 1 KRAST} + {1509217200 25200 0 KRAT} + {1521918000 28800 1 KRAST} + {1540666800 25200 0 KRAT} + {1553972400 28800 1 KRAST} + {1572116400 25200 0 KRAT} + {1585422000 28800 1 KRAST} + {1603566000 25200 0 KRAT} + {1616871600 28800 1 KRAST} + {1635620400 25200 0 KRAT} + {1648321200 28800 1 KRAST} + {1667070000 25200 0 KRAT} + {1679770800 28800 1 KRAST} + {1698519600 25200 0 KRAT} + {1711825200 28800 1 KRAST} + {1729969200 25200 0 KRAT} + {1743274800 28800 1 KRAST} + {1761418800 25200 0 KRAT} + {1774724400 28800 1 KRAST} + {1792868400 25200 0 KRAT} + {1806174000 28800 1 KRAST} + {1824922800 25200 0 KRAT} + {1837623600 28800 1 KRAST} + {1856372400 25200 0 KRAT} + {1869073200 28800 1 KRAST} + {1887822000 25200 0 KRAT} + {1901127600 28800 1 KRAST} + {1919271600 25200 0 KRAT} + {1932577200 28800 1 KRAST} + {1950721200 25200 0 KRAT} + {1964026800 28800 1 KRAST} + {1982775600 25200 0 KRAT} + {1995476400 28800 1 KRAST} + {2014225200 25200 0 KRAT} + {2026926000 28800 1 KRAST} + {2045674800 25200 0 KRAT} + {2058375600 28800 1 KRAST} + {2077124400 25200 0 KRAT} + {2090430000 28800 1 KRAST} + {2108574000 25200 0 KRAT} + {2121879600 28800 1 KRAST} + {2140023600 25200 0 KRAT} + {2153329200 28800 1 KRAST} + {2172078000 25200 0 KRAT} + {2184778800 28800 1 KRAST} + {2203527600 25200 0 KRAT} + {2216228400 28800 1 KRAST} + {2234977200 25200 0 KRAT} + {2248282800 28800 1 KRAST} + {2266426800 25200 0 KRAT} + {2279732400 28800 1 KRAST} + {2297876400 25200 0 KRAT} + {2311182000 28800 1 KRAST} + {2329326000 25200 0 KRAT} + {2342631600 28800 1 KRAST} + {2361380400 25200 0 KRAT} + {2374081200 28800 1 KRAST} + {2392830000 25200 0 KRAT} + {2405530800 28800 1 KRAST} + {2424279600 25200 0 KRAT} + {2437585200 28800 1 KRAST} + {2455729200 25200 0 KRAT} + {2469034800 28800 1 KRAST} + {2487178800 25200 0 KRAT} + {2500484400 28800 1 KRAST} + {2519233200 25200 0 KRAT} + {2531934000 28800 1 KRAST} + {2550682800 25200 0 KRAT} + {2563383600 28800 1 KRAST} + {2582132400 25200 0 KRAT} + {2595438000 28800 1 KRAST} + {2613582000 25200 0 KRAT} + {2626887600 28800 1 KRAST} + {2645031600 25200 0 KRAT} + {2658337200 28800 1 KRAST} + {2676481200 25200 0 KRAT} + {2689786800 28800 1 KRAST} + {2708535600 25200 0 KRAT} + {2721236400 28800 1 KRAST} + {2739985200 25200 0 KRAT} + {2752686000 28800 1 KRAST} + {2771434800 25200 0 KRAT} + {2784740400 28800 1 KRAST} + {2802884400 25200 0 KRAT} + {2816190000 28800 1 KRAST} + {2834334000 25200 0 KRAT} + {2847639600 28800 1 KRAST} + {2866388400 25200 0 KRAT} + {2879089200 28800 1 KRAST} + {2897838000 25200 0 KRAT} + {2910538800 28800 1 KRAST} + {2929287600 25200 0 KRAT} + {2941988400 28800 1 KRAST} + {2960737200 25200 0 KRAT} + {2974042800 28800 1 KRAST} + {2992186800 25200 0 KRAT} + {3005492400 28800 1 KRAST} + {3023636400 25200 0 KRAT} + {3036942000 28800 1 KRAST} + {3055690800 25200 0 KRAT} + {3068391600 28800 1 KRAST} + {3087140400 25200 0 KRAT} + {3099841200 28800 1 KRAST} + {3118590000 25200 0 KRAT} + {3131895600 28800 1 KRAST} + {3150039600 25200 0 KRAT} + {3163345200 28800 1 KRAST} + {3181489200 25200 0 KRAT} + {3194794800 28800 1 KRAST} + {3212938800 25200 0 KRAT} + {3226244400 28800 1 KRAST} + {3244993200 25200 0 KRAT} + {3257694000 28800 1 KRAST} + {3276442800 25200 0 KRAT} + {3289143600 28800 1 KRAST} + {3307892400 25200 0 KRAT} + {3321198000 28800 1 KRAST} + {3339342000 25200 0 KRAT} + {3352647600 28800 1 KRAST} + {3370791600 25200 0 KRAT} + {3384097200 28800 1 KRAST} + {3402846000 25200 0 KRAT} + {3415546800 28800 1 KRAST} + {3434295600 25200 0 KRAT} + {3446996400 28800 1 KRAST} + {3465745200 25200 0 KRAT} + {3479050800 28800 1 KRAST} + {3497194800 25200 0 KRAT} + {3510500400 28800 1 KRAST} + {3528644400 25200 0 KRAT} + {3541950000 28800 1 KRAST} + {3560094000 25200 0 KRAT} + {3573399600 28800 1 KRAST} + {3592148400 25200 0 KRAT} + {3604849200 28800 1 KRAST} + {3623598000 25200 0 KRAT} + {3636298800 28800 1 KRAST} + {3655047600 25200 0 KRAT} + {3668353200 28800 1 KRAST} + {3686497200 25200 0 KRAT} + {3699802800 28800 1 KRAST} + {3717946800 25200 0 KRAT} + {3731252400 28800 1 KRAST} + {3750001200 25200 0 KRAT} + {3762702000 28800 1 KRAST} + {3781450800 25200 0 KRAT} + {3794151600 28800 1 KRAST} + {3812900400 25200 0 KRAT} + {3825601200 28800 1 KRAST} + {3844350000 25200 0 KRAT} + {3857655600 28800 1 KRAST} + {3875799600 25200 0 KRAT} + {3889105200 28800 1 KRAST} + {3907249200 25200 0 KRAT} + {3920554800 28800 1 KRAST} + {3939303600 25200 0 KRAT} + {3952004400 28800 1 KRAST} + {3970753200 25200 0 KRAT} + {3983454000 28800 1 KRAST} + {4002202800 25200 0 KRAT} + {4015508400 28800 1 KRAST} + {4033652400 25200 0 KRAT} + {4046958000 28800 1 KRAST} + {4065102000 25200 0 KRAT} + {4078407600 28800 1 KRAST} + {4096551600 25200 0 KRAT} +} diff --git a/library/tzdata/Asia/Kuala_Lumpur b/library/tzdata/Asia/Kuala_Lumpur index 7a54bd6..a1f44d8 100644 --- a/library/tzdata/Asia/Kuala_Lumpur +++ b/library/tzdata/Asia/Kuala_Lumpur @@ -1,13 +1,13 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kuala_Lumpur) { - {-9223372036854775808 24406 0 LMT} - {-2177477206 24925 0 SMT} - {-2038200925 25200 0 MALT} - {-1167634800 26400 1 MALST} - {-1073028000 26400 0 MALT} - {-894180000 27000 0 MALT} - {-879665400 32400 0 JST} - {-767005200 27000 0 MALT} - {378664200 28800 0 MYT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kuala_Lumpur) { + {-9223372036854775808 24406 0 LMT} + {-2177477206 24925 0 SMT} + {-2038200925 25200 0 MALT} + {-1167634800 26400 1 MALST} + {-1073028000 26400 0 MALT} + {-894180000 27000 0 MALT} + {-879665400 32400 0 JST} + {-767005200 27000 0 MALT} + {378664200 28800 0 MYT} +} diff --git a/library/tzdata/Asia/Kuching b/library/tzdata/Asia/Kuching index 0f9110c..830726c 100644 --- a/library/tzdata/Asia/Kuching +++ b/library/tzdata/Asia/Kuching @@ -1,24 +1,24 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kuching) { - {-9223372036854775808 26480 0 LMT} - {-1383463280 27000 0 BORT} - {-1167636600 28800 0 BORT} - {-1082448000 30000 1 BORTST} - {-1074586800 28800 0 BORT} - {-1050825600 30000 1 BORTST} - {-1042964400 28800 0 BORT} - {-1019289600 30000 1 BORTST} - {-1011428400 28800 0 BORT} - {-987753600 30000 1 BORTST} - {-979892400 28800 0 BORT} - {-956217600 30000 1 BORTST} - {-948356400 28800 0 BORT} - {-924595200 30000 1 BORTST} - {-916734000 28800 0 BORT} - {-893059200 30000 1 BORTST} - {-885198000 28800 0 BORT} - {-879667200 32400 0 JST} - {-767005200 28800 0 BORT} - {378662400 28800 0 MYT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kuching) { + {-9223372036854775808 26480 0 LMT} + {-1383463280 27000 0 BORT} + {-1167636600 28800 0 BORT} + {-1082448000 30000 1 BORTST} + {-1074586800 28800 0 BORT} + {-1050825600 30000 1 BORTST} + {-1042964400 28800 0 BORT} + {-1019289600 30000 1 BORTST} + {-1011428400 28800 0 BORT} + {-987753600 30000 1 BORTST} + {-979892400 28800 0 BORT} + {-956217600 30000 1 BORTST} + {-948356400 28800 0 BORT} + {-924595200 30000 1 BORTST} + {-916734000 28800 0 BORT} + {-893059200 30000 1 BORTST} + {-885198000 28800 0 BORT} + {-879667200 32400 0 JST} + {-767005200 28800 0 BORT} + {378662400 28800 0 MYT} +} diff --git a/library/tzdata/Asia/Kuwait b/library/tzdata/Asia/Kuwait index 15d26db..1cc34ce 100644 --- a/library/tzdata/Asia/Kuwait +++ b/library/tzdata/Asia/Kuwait @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kuwait) { - {-9223372036854775808 11516 0 LMT} - {-631163516 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kuwait) { + {-9223372036854775808 11516 0 LMT} + {-631163516 10800 0 AST} +} diff --git a/library/tzdata/Asia/Macao b/library/tzdata/Asia/Macao index 6e972ff..e097dd3 100644 --- a/library/tzdata/Asia/Macao +++ b/library/tzdata/Asia/Macao @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Macau)]} { - LoadTimeZoneFile Asia/Macau -} -set TZData(:Asia/Macao) $TZData(:Asia/Macau) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Macau)]} { + LoadTimeZoneFile Asia/Macau +} +set TZData(:Asia/Macao) $TZData(:Asia/Macau) diff --git a/library/tzdata/Asia/Macau b/library/tzdata/Asia/Macau index 9d4abfe..01229e3 100644 --- a/library/tzdata/Asia/Macau +++ b/library/tzdata/Asia/Macau @@ -1,46 +1,46 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Macau) { - {-9223372036854775808 27260 0 LMT} - {-1830411260 28800 0 MOT} - {-277360200 32400 1 MOST} - {-257405400 28800 0 MOT} - {-245910600 32400 1 MOST} - {-225955800 28800 0 MOT} - {-214473600 32400 1 MOST} - {-194506200 28800 0 MOT} - {-182406600 32400 1 MOST} - {-163056600 28800 0 MOT} - {-150969600 32400 1 MOST} - {-131619600 28800 0 MOT} - {-117088200 32400 1 MOST} - {-101367000 28800 0 MOT} - {-85638600 32400 1 MOST} - {-69312600 28800 0 MOT} - {-53584200 32400 1 MOST} - {-37863000 28800 0 MOT} - {-22134600 32400 1 MOST} - {-6413400 28800 0 MOT} - {9315000 32400 1 MOST} - {25036200 28800 0 MOT} - {40764600 32400 1 MOST} - {56485800 28800 0 MOT} - {72201600 32400 1 MOST} - {87922800 28800 0 MOT} - {103651200 32400 1 MOST} - {119977200 28800 0 MOT} - {135705600 32400 1 MOST} - {151439400 28800 0 MOT} - {167167800 32400 1 MOST} - {182889000 28800 0 MOT} - {198617400 32400 1 MOST} - {214338600 28800 0 MOT} - {230067000 32400 1 MOST} - {245788200 28800 0 MOT} - {261504000 32400 1 MOST} - {277225200 28800 0 MOT} - {292953600 32400 1 MOST} - {309279600 28800 0 MOT} - {325008000 32400 1 MOST} - {340729200 28800 0 MOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Macau) { + {-9223372036854775808 27260 0 LMT} + {-1830411260 28800 0 MOT} + {-277360200 32400 1 MOST} + {-257405400 28800 0 MOT} + {-245910600 32400 1 MOST} + {-225955800 28800 0 MOT} + {-214473600 32400 1 MOST} + {-194506200 28800 0 MOT} + {-182406600 32400 1 MOST} + {-163056600 28800 0 MOT} + {-150969600 32400 1 MOST} + {-131619600 28800 0 MOT} + {-117088200 32400 1 MOST} + {-101367000 28800 0 MOT} + {-85638600 32400 1 MOST} + {-69312600 28800 0 MOT} + {-53584200 32400 1 MOST} + {-37863000 28800 0 MOT} + {-22134600 32400 1 MOST} + {-6413400 28800 0 MOT} + {9315000 32400 1 MOST} + {25036200 28800 0 MOT} + {40764600 32400 1 MOST} + {56485800 28800 0 MOT} + {72201600 32400 1 MOST} + {87922800 28800 0 MOT} + {103651200 32400 1 MOST} + {119977200 28800 0 MOT} + {135705600 32400 1 MOST} + {151439400 28800 0 MOT} + {167167800 32400 1 MOST} + {182889000 28800 0 MOT} + {198617400 32400 1 MOST} + {214338600 28800 0 MOT} + {230067000 32400 1 MOST} + {245788200 28800 0 MOT} + {261504000 32400 1 MOST} + {277225200 28800 0 MOT} + {292953600 32400 1 MOST} + {309279600 28800 0 MOT} + {325008000 32400 1 MOST} + {340729200 28800 0 MOT} +} diff --git a/library/tzdata/Asia/Magadan b/library/tzdata/Asia/Magadan index 28e1f2f..31fc205 100644 --- a/library/tzdata/Asia/Magadan +++ b/library/tzdata/Asia/Magadan @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Magadan) { - {-9223372036854775808 36192 0 LMT} - {-1441188192 36000 0 MAGT} - {-1247565600 39600 0 MAGMMTT} - {354891600 43200 1 MAGST} - {370699200 39600 0 MAGT} - {386427600 43200 1 MAGST} - {402235200 39600 0 MAGT} - {417963600 43200 1 MAGST} - {433771200 39600 0 MAGT} - {449586000 43200 1 MAGST} - {465318000 39600 0 MAGT} - {481042800 43200 1 MAGST} - {496767600 39600 0 MAGT} - {512492400 43200 1 MAGST} - {528217200 39600 0 MAGT} - {543942000 43200 1 MAGST} - {559666800 39600 0 MAGT} - {575391600 43200 1 MAGST} - {591116400 39600 0 MAGT} - {606841200 43200 1 MAGST} - {622566000 39600 0 MAGT} - {638290800 43200 1 MAGST} - {654620400 39600 0 MAGT} - {670345200 36000 0 MAGMMTT} - {670348800 39600 1 MAGST} - {686073600 36000 0 MAGT} - {695750400 39600 0 MAGMMTT} - {701784000 43200 1 MAGST} - {717505200 39600 0 MAGT} - {733244400 43200 1 MAGST} - {748969200 39600 0 MAGT} - {764694000 43200 1 MAGST} - {780418800 39600 0 MAGT} - {796143600 43200 1 MAGST} - {811868400 39600 0 MAGT} - {828198000 43200 1 MAGST} - {846342000 39600 0 MAGT} - {859647600 43200 1 MAGST} - {877791600 39600 0 MAGT} - {891097200 43200 1 MAGST} - {909241200 39600 0 MAGT} - {922546800 43200 1 MAGST} - {941295600 39600 0 MAGT} - {953996400 43200 1 MAGST} - {972745200 39600 0 MAGT} - {985446000 43200 1 MAGST} - {1004194800 39600 0 MAGT} - {1017500400 43200 1 MAGST} - {1035644400 39600 0 MAGT} - {1048950000 43200 1 MAGST} - {1067094000 39600 0 MAGT} - {1080399600 43200 1 MAGST} - {1099148400 39600 0 MAGT} - {1111849200 43200 1 MAGST} - {1130598000 39600 0 MAGT} - {1143298800 43200 1 MAGST} - {1162047600 39600 0 MAGT} - {1174748400 43200 1 MAGST} - {1193497200 39600 0 MAGT} - {1206802800 43200 1 MAGST} - {1224946800 39600 0 MAGT} - {1238252400 43200 1 MAGST} - {1256396400 39600 0 MAGT} - {1269702000 43200 1 MAGST} - {1288450800 39600 0 MAGT} - {1301151600 43200 1 MAGST} - {1319900400 39600 0 MAGT} - {1332601200 43200 1 MAGST} - {1351350000 39600 0 MAGT} - {1364655600 43200 1 MAGST} - {1382799600 39600 0 MAGT} - {1396105200 43200 1 MAGST} - {1414249200 39600 0 MAGT} - {1427554800 43200 1 MAGST} - {1445698800 39600 0 MAGT} - {1459004400 43200 1 MAGST} - {1477753200 39600 0 MAGT} - {1490454000 43200 1 MAGST} - {1509202800 39600 0 MAGT} - {1521903600 43200 1 MAGST} - {1540652400 39600 0 MAGT} - {1553958000 43200 1 MAGST} - {1572102000 39600 0 MAGT} - {1585407600 43200 1 MAGST} - {1603551600 39600 0 MAGT} - {1616857200 43200 1 MAGST} - {1635606000 39600 0 MAGT} - {1648306800 43200 1 MAGST} - {1667055600 39600 0 MAGT} - {1679756400 43200 1 MAGST} - {1698505200 39600 0 MAGT} - {1711810800 43200 1 MAGST} - {1729954800 39600 0 MAGT} - {1743260400 43200 1 MAGST} - {1761404400 39600 0 MAGT} - {1774710000 43200 1 MAGST} - {1792854000 39600 0 MAGT} - {1806159600 43200 1 MAGST} - {1824908400 39600 0 MAGT} - {1837609200 43200 1 MAGST} - {1856358000 39600 0 MAGT} - {1869058800 43200 1 MAGST} - {1887807600 39600 0 MAGT} - {1901113200 43200 1 MAGST} - {1919257200 39600 0 MAGT} - {1932562800 43200 1 MAGST} - {1950706800 39600 0 MAGT} - {1964012400 43200 1 MAGST} - {1982761200 39600 0 MAGT} - {1995462000 43200 1 MAGST} - {2014210800 39600 0 MAGT} - {2026911600 43200 1 MAGST} - {2045660400 39600 0 MAGT} - {2058361200 43200 1 MAGST} - {2077110000 39600 0 MAGT} - {2090415600 43200 1 MAGST} - {2108559600 39600 0 MAGT} - {2121865200 43200 1 MAGST} - {2140009200 39600 0 MAGT} - {2153314800 43200 1 MAGST} - {2172063600 39600 0 MAGT} - {2184764400 43200 1 MAGST} - {2203513200 39600 0 MAGT} - {2216214000 43200 1 MAGST} - {2234962800 39600 0 MAGT} - {2248268400 43200 1 MAGST} - {2266412400 39600 0 MAGT} - {2279718000 43200 1 MAGST} - {2297862000 39600 0 MAGT} - {2311167600 43200 1 MAGST} - {2329311600 39600 0 MAGT} - {2342617200 43200 1 MAGST} - {2361366000 39600 0 MAGT} - {2374066800 43200 1 MAGST} - {2392815600 39600 0 MAGT} - {2405516400 43200 1 MAGST} - {2424265200 39600 0 MAGT} - {2437570800 43200 1 MAGST} - {2455714800 39600 0 MAGT} - {2469020400 43200 1 MAGST} - {2487164400 39600 0 MAGT} - {2500470000 43200 1 MAGST} - {2519218800 39600 0 MAGT} - {2531919600 43200 1 MAGST} - {2550668400 39600 0 MAGT} - {2563369200 43200 1 MAGST} - {2582118000 39600 0 MAGT} - {2595423600 43200 1 MAGST} - {2613567600 39600 0 MAGT} - {2626873200 43200 1 MAGST} - {2645017200 39600 0 MAGT} - {2658322800 43200 1 MAGST} - {2676466800 39600 0 MAGT} - {2689772400 43200 1 MAGST} - {2708521200 39600 0 MAGT} - {2721222000 43200 1 MAGST} - {2739970800 39600 0 MAGT} - {2752671600 43200 1 MAGST} - {2771420400 39600 0 MAGT} - {2784726000 43200 1 MAGST} - {2802870000 39600 0 MAGT} - {2816175600 43200 1 MAGST} - {2834319600 39600 0 MAGT} - {2847625200 43200 1 MAGST} - {2866374000 39600 0 MAGT} - {2879074800 43200 1 MAGST} - {2897823600 39600 0 MAGT} - {2910524400 43200 1 MAGST} - {2929273200 39600 0 MAGT} - {2941974000 43200 1 MAGST} - {2960722800 39600 0 MAGT} - {2974028400 43200 1 MAGST} - {2992172400 39600 0 MAGT} - {3005478000 43200 1 MAGST} - {3023622000 39600 0 MAGT} - {3036927600 43200 1 MAGST} - {3055676400 39600 0 MAGT} - {3068377200 43200 1 MAGST} - {3087126000 39600 0 MAGT} - {3099826800 43200 1 MAGST} - {3118575600 39600 0 MAGT} - {3131881200 43200 1 MAGST} - {3150025200 39600 0 MAGT} - {3163330800 43200 1 MAGST} - {3181474800 39600 0 MAGT} - {3194780400 43200 1 MAGST} - {3212924400 39600 0 MAGT} - {3226230000 43200 1 MAGST} - {3244978800 39600 0 MAGT} - {3257679600 43200 1 MAGST} - {3276428400 39600 0 MAGT} - {3289129200 43200 1 MAGST} - {3307878000 39600 0 MAGT} - {3321183600 43200 1 MAGST} - {3339327600 39600 0 MAGT} - {3352633200 43200 1 MAGST} - {3370777200 39600 0 MAGT} - {3384082800 43200 1 MAGST} - {3402831600 39600 0 MAGT} - {3415532400 43200 1 MAGST} - {3434281200 39600 0 MAGT} - {3446982000 43200 1 MAGST} - {3465730800 39600 0 MAGT} - {3479036400 43200 1 MAGST} - {3497180400 39600 0 MAGT} - {3510486000 43200 1 MAGST} - {3528630000 39600 0 MAGT} - {3541935600 43200 1 MAGST} - {3560079600 39600 0 MAGT} - {3573385200 43200 1 MAGST} - {3592134000 39600 0 MAGT} - {3604834800 43200 1 MAGST} - {3623583600 39600 0 MAGT} - {3636284400 43200 1 MAGST} - {3655033200 39600 0 MAGT} - {3668338800 43200 1 MAGST} - {3686482800 39600 0 MAGT} - {3699788400 43200 1 MAGST} - {3717932400 39600 0 MAGT} - {3731238000 43200 1 MAGST} - {3749986800 39600 0 MAGT} - {3762687600 43200 1 MAGST} - {3781436400 39600 0 MAGT} - {3794137200 43200 1 MAGST} - {3812886000 39600 0 MAGT} - {3825586800 43200 1 MAGST} - {3844335600 39600 0 MAGT} - {3857641200 43200 1 MAGST} - {3875785200 39600 0 MAGT} - {3889090800 43200 1 MAGST} - {3907234800 39600 0 MAGT} - {3920540400 43200 1 MAGST} - {3939289200 39600 0 MAGT} - {3951990000 43200 1 MAGST} - {3970738800 39600 0 MAGT} - {3983439600 43200 1 MAGST} - {4002188400 39600 0 MAGT} - {4015494000 43200 1 MAGST} - {4033638000 39600 0 MAGT} - {4046943600 43200 1 MAGST} - {4065087600 39600 0 MAGT} - {4078393200 43200 1 MAGST} - {4096537200 39600 0 MAGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Magadan) { + {-9223372036854775808 36192 0 LMT} + {-1441188192 36000 0 MAGT} + {-1247565600 39600 0 MAGMMTT} + {354891600 43200 1 MAGST} + {370699200 39600 0 MAGT} + {386427600 43200 1 MAGST} + {402235200 39600 0 MAGT} + {417963600 43200 1 MAGST} + {433771200 39600 0 MAGT} + {449586000 43200 1 MAGST} + {465318000 39600 0 MAGT} + {481042800 43200 1 MAGST} + {496767600 39600 0 MAGT} + {512492400 43200 1 MAGST} + {528217200 39600 0 MAGT} + {543942000 43200 1 MAGST} + {559666800 39600 0 MAGT} + {575391600 43200 1 MAGST} + {591116400 39600 0 MAGT} + {606841200 43200 1 MAGST} + {622566000 39600 0 MAGT} + {638290800 43200 1 MAGST} + {654620400 39600 0 MAGT} + {670345200 36000 0 MAGMMTT} + {670348800 39600 1 MAGST} + {686073600 36000 0 MAGT} + {695750400 39600 0 MAGMMTT} + {701784000 43200 1 MAGST} + {717505200 39600 0 MAGT} + {733244400 43200 1 MAGST} + {748969200 39600 0 MAGT} + {764694000 43200 1 MAGST} + {780418800 39600 0 MAGT} + {796143600 43200 1 MAGST} + {811868400 39600 0 MAGT} + {828198000 43200 1 MAGST} + {846342000 39600 0 MAGT} + {859647600 43200 1 MAGST} + {877791600 39600 0 MAGT} + {891097200 43200 1 MAGST} + {909241200 39600 0 MAGT} + {922546800 43200 1 MAGST} + {941295600 39600 0 MAGT} + {953996400 43200 1 MAGST} + {972745200 39600 0 MAGT} + {985446000 43200 1 MAGST} + {1004194800 39600 0 MAGT} + {1017500400 43200 1 MAGST} + {1035644400 39600 0 MAGT} + {1048950000 43200 1 MAGST} + {1067094000 39600 0 MAGT} + {1080399600 43200 1 MAGST} + {1099148400 39600 0 MAGT} + {1111849200 43200 1 MAGST} + {1130598000 39600 0 MAGT} + {1143298800 43200 1 MAGST} + {1162047600 39600 0 MAGT} + {1174748400 43200 1 MAGST} + {1193497200 39600 0 MAGT} + {1206802800 43200 1 MAGST} + {1224946800 39600 0 MAGT} + {1238252400 43200 1 MAGST} + {1256396400 39600 0 MAGT} + {1269702000 43200 1 MAGST} + {1288450800 39600 0 MAGT} + {1301151600 43200 1 MAGST} + {1319900400 39600 0 MAGT} + {1332601200 43200 1 MAGST} + {1351350000 39600 0 MAGT} + {1364655600 43200 1 MAGST} + {1382799600 39600 0 MAGT} + {1396105200 43200 1 MAGST} + {1414249200 39600 0 MAGT} + {1427554800 43200 1 MAGST} + {1445698800 39600 0 MAGT} + {1459004400 43200 1 MAGST} + {1477753200 39600 0 MAGT} + {1490454000 43200 1 MAGST} + {1509202800 39600 0 MAGT} + {1521903600 43200 1 MAGST} + {1540652400 39600 0 MAGT} + {1553958000 43200 1 MAGST} + {1572102000 39600 0 MAGT} + {1585407600 43200 1 MAGST} + {1603551600 39600 0 MAGT} + {1616857200 43200 1 MAGST} + {1635606000 39600 0 MAGT} + {1648306800 43200 1 MAGST} + {1667055600 39600 0 MAGT} + {1679756400 43200 1 MAGST} + {1698505200 39600 0 MAGT} + {1711810800 43200 1 MAGST} + {1729954800 39600 0 MAGT} + {1743260400 43200 1 MAGST} + {1761404400 39600 0 MAGT} + {1774710000 43200 1 MAGST} + {1792854000 39600 0 MAGT} + {1806159600 43200 1 MAGST} + {1824908400 39600 0 MAGT} + {1837609200 43200 1 MAGST} + {1856358000 39600 0 MAGT} + {1869058800 43200 1 MAGST} + {1887807600 39600 0 MAGT} + {1901113200 43200 1 MAGST} + {1919257200 39600 0 MAGT} + {1932562800 43200 1 MAGST} + {1950706800 39600 0 MAGT} + {1964012400 43200 1 MAGST} + {1982761200 39600 0 MAGT} + {1995462000 43200 1 MAGST} + {2014210800 39600 0 MAGT} + {2026911600 43200 1 MAGST} + {2045660400 39600 0 MAGT} + {2058361200 43200 1 MAGST} + {2077110000 39600 0 MAGT} + {2090415600 43200 1 MAGST} + {2108559600 39600 0 MAGT} + {2121865200 43200 1 MAGST} + {2140009200 39600 0 MAGT} + {2153314800 43200 1 MAGST} + {2172063600 39600 0 MAGT} + {2184764400 43200 1 MAGST} + {2203513200 39600 0 MAGT} + {2216214000 43200 1 MAGST} + {2234962800 39600 0 MAGT} + {2248268400 43200 1 MAGST} + {2266412400 39600 0 MAGT} + {2279718000 43200 1 MAGST} + {2297862000 39600 0 MAGT} + {2311167600 43200 1 MAGST} + {2329311600 39600 0 MAGT} + {2342617200 43200 1 MAGST} + {2361366000 39600 0 MAGT} + {2374066800 43200 1 MAGST} + {2392815600 39600 0 MAGT} + {2405516400 43200 1 MAGST} + {2424265200 39600 0 MAGT} + {2437570800 43200 1 MAGST} + {2455714800 39600 0 MAGT} + {2469020400 43200 1 MAGST} + {2487164400 39600 0 MAGT} + {2500470000 43200 1 MAGST} + {2519218800 39600 0 MAGT} + {2531919600 43200 1 MAGST} + {2550668400 39600 0 MAGT} + {2563369200 43200 1 MAGST} + {2582118000 39600 0 MAGT} + {2595423600 43200 1 MAGST} + {2613567600 39600 0 MAGT} + {2626873200 43200 1 MAGST} + {2645017200 39600 0 MAGT} + {2658322800 43200 1 MAGST} + {2676466800 39600 0 MAGT} + {2689772400 43200 1 MAGST} + {2708521200 39600 0 MAGT} + {2721222000 43200 1 MAGST} + {2739970800 39600 0 MAGT} + {2752671600 43200 1 MAGST} + {2771420400 39600 0 MAGT} + {2784726000 43200 1 MAGST} + {2802870000 39600 0 MAGT} + {2816175600 43200 1 MAGST} + {2834319600 39600 0 MAGT} + {2847625200 43200 1 MAGST} + {2866374000 39600 0 MAGT} + {2879074800 43200 1 MAGST} + {2897823600 39600 0 MAGT} + {2910524400 43200 1 MAGST} + {2929273200 39600 0 MAGT} + {2941974000 43200 1 MAGST} + {2960722800 39600 0 MAGT} + {2974028400 43200 1 MAGST} + {2992172400 39600 0 MAGT} + {3005478000 43200 1 MAGST} + {3023622000 39600 0 MAGT} + {3036927600 43200 1 MAGST} + {3055676400 39600 0 MAGT} + {3068377200 43200 1 MAGST} + {3087126000 39600 0 MAGT} + {3099826800 43200 1 MAGST} + {3118575600 39600 0 MAGT} + {3131881200 43200 1 MAGST} + {3150025200 39600 0 MAGT} + {3163330800 43200 1 MAGST} + {3181474800 39600 0 MAGT} + {3194780400 43200 1 MAGST} + {3212924400 39600 0 MAGT} + {3226230000 43200 1 MAGST} + {3244978800 39600 0 MAGT} + {3257679600 43200 1 MAGST} + {3276428400 39600 0 MAGT} + {3289129200 43200 1 MAGST} + {3307878000 39600 0 MAGT} + {3321183600 43200 1 MAGST} + {3339327600 39600 0 MAGT} + {3352633200 43200 1 MAGST} + {3370777200 39600 0 MAGT} + {3384082800 43200 1 MAGST} + {3402831600 39600 0 MAGT} + {3415532400 43200 1 MAGST} + {3434281200 39600 0 MAGT} + {3446982000 43200 1 MAGST} + {3465730800 39600 0 MAGT} + {3479036400 43200 1 MAGST} + {3497180400 39600 0 MAGT} + {3510486000 43200 1 MAGST} + {3528630000 39600 0 MAGT} + {3541935600 43200 1 MAGST} + {3560079600 39600 0 MAGT} + {3573385200 43200 1 MAGST} + {3592134000 39600 0 MAGT} + {3604834800 43200 1 MAGST} + {3623583600 39600 0 MAGT} + {3636284400 43200 1 MAGST} + {3655033200 39600 0 MAGT} + {3668338800 43200 1 MAGST} + {3686482800 39600 0 MAGT} + {3699788400 43200 1 MAGST} + {3717932400 39600 0 MAGT} + {3731238000 43200 1 MAGST} + {3749986800 39600 0 MAGT} + {3762687600 43200 1 MAGST} + {3781436400 39600 0 MAGT} + {3794137200 43200 1 MAGST} + {3812886000 39600 0 MAGT} + {3825586800 43200 1 MAGST} + {3844335600 39600 0 MAGT} + {3857641200 43200 1 MAGST} + {3875785200 39600 0 MAGT} + {3889090800 43200 1 MAGST} + {3907234800 39600 0 MAGT} + {3920540400 43200 1 MAGST} + {3939289200 39600 0 MAGT} + {3951990000 43200 1 MAGST} + {3970738800 39600 0 MAGT} + {3983439600 43200 1 MAGST} + {4002188400 39600 0 MAGT} + {4015494000 43200 1 MAGST} + {4033638000 39600 0 MAGT} + {4046943600 43200 1 MAGST} + {4065087600 39600 0 MAGT} + {4078393200 43200 1 MAGST} + {4096537200 39600 0 MAGT} +} diff --git a/library/tzdata/Asia/Makassar b/library/tzdata/Asia/Makassar index aa604b4..9887d0e 100644 --- a/library/tzdata/Asia/Makassar +++ b/library/tzdata/Asia/Makassar @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Makassar) { - {-9223372036854775808 28656 0 LMT} - {-1577951856 28656 0 MMT} - {-1172908656 28800 0 CIT} - {-880272000 32400 0 JST} - {-766054800 28800 0 CIT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Makassar) { + {-9223372036854775808 28656 0 LMT} + {-1577951856 28656 0 MMT} + {-1172908656 28800 0 CIT} + {-880272000 32400 0 JST} + {-766054800 28800 0 CIT} +} diff --git a/library/tzdata/Asia/Manila b/library/tzdata/Asia/Manila index 9cc25e8..ab9b8d4 100644 --- a/library/tzdata/Asia/Manila +++ b/library/tzdata/Asia/Manila @@ -1,15 +1,15 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Manila) { - {-9223372036854775808 -57360 0 LMT} - {-3944621040 29040 0 LMT} - {-2229321840 28800 0 PHT} - {-1046678400 32400 1 PHST} - {-1038733200 28800 0 PHT} - {-873273600 32400 0 JST} - {-794221200 28800 0 PHT} - {-496224000 32400 1 PHST} - {-489315600 28800 0 PHT} - {259344000 32400 1 PHST} - {275151600 28800 0 PHT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Manila) { + {-9223372036854775808 -57360 0 LMT} + {-3944621040 29040 0 LMT} + {-2229321840 28800 0 PHT} + {-1046678400 32400 1 PHST} + {-1038733200 28800 0 PHT} + {-873273600 32400 0 JST} + {-794221200 28800 0 PHT} + {-496224000 32400 1 PHST} + {-489315600 28800 0 PHT} + {259344000 32400 1 PHST} + {275151600 28800 0 PHT} +} diff --git a/library/tzdata/Asia/Muscat b/library/tzdata/Asia/Muscat index 21b5873..13abf7a 100644 --- a/library/tzdata/Asia/Muscat +++ b/library/tzdata/Asia/Muscat @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Muscat) { - {-9223372036854775808 14060 0 LMT} - {-1577937260 14400 0 GST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Muscat) { + {-9223372036854775808 14060 0 LMT} + {-1577937260 14400 0 GST} +} diff --git a/library/tzdata/Asia/Nicosia b/library/tzdata/Asia/Nicosia index 73a7b4c..89279d4 100644 --- a/library/tzdata/Asia/Nicosia +++ b/library/tzdata/Asia/Nicosia @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Nicosia) { - {-9223372036854775808 8008 0 LMT} - {-1518920008 7200 0 EET} - {166572000 10800 1 EEST} - {182293200 7200 0 EET} - {200959200 10800 1 EEST} - {213829200 7200 0 EET} - {228866400 10800 1 EEST} - {243982800 7200 0 EET} - {260316000 10800 1 EEST} - {276123600 7200 0 EET} - {291765600 10800 1 EEST} - {307486800 7200 0 EET} - {323820000 10800 1 EEST} - {338936400 7200 0 EET} - {354664800 10800 1 EEST} - {370386000 7200 0 EET} - {386114400 10800 1 EEST} - {401835600 7200 0 EET} - {417564000 10800 1 EEST} - {433285200 7200 0 EET} - {449013600 10800 1 EEST} - {465339600 7200 0 EET} - {481068000 10800 1 EEST} - {496789200 7200 0 EET} - {512517600 10800 1 EEST} - {528238800 7200 0 EET} - {543967200 10800 1 EEST} - {559688400 7200 0 EET} - {575416800 10800 1 EEST} - {591138000 7200 0 EET} - {606866400 10800 1 EEST} - {622587600 7200 0 EET} - {638316000 10800 1 EEST} - {654642000 7200 0 EET} - {670370400 10800 1 EEST} - {686091600 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {843944400 7200 0 EET} - {859672800 10800 1 EEST} - {875394000 7200 0 EET} - {891122400 10800 1 EEST} - {904597200 10800 0 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Nicosia) { + {-9223372036854775808 8008 0 LMT} + {-1518920008 7200 0 EET} + {166572000 10800 1 EEST} + {182293200 7200 0 EET} + {200959200 10800 1 EEST} + {213829200 7200 0 EET} + {228866400 10800 1 EEST} + {243982800 7200 0 EET} + {260316000 10800 1 EEST} + {276123600 7200 0 EET} + {291765600 10800 1 EEST} + {307486800 7200 0 EET} + {323820000 10800 1 EEST} + {338936400 7200 0 EET} + {354664800 10800 1 EEST} + {370386000 7200 0 EET} + {386114400 10800 1 EEST} + {401835600 7200 0 EET} + {417564000 10800 1 EEST} + {433285200 7200 0 EET} + {449013600 10800 1 EEST} + {465339600 7200 0 EET} + {481068000 10800 1 EEST} + {496789200 7200 0 EET} + {512517600 10800 1 EEST} + {528238800 7200 0 EET} + {543967200 10800 1 EEST} + {559688400 7200 0 EET} + {575416800 10800 1 EEST} + {591138000 7200 0 EET} + {606866400 10800 1 EEST} + {622587600 7200 0 EET} + {638316000 10800 1 EEST} + {654642000 7200 0 EET} + {670370400 10800 1 EEST} + {686091600 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {843944400 7200 0 EET} + {859672800 10800 1 EEST} + {875394000 7200 0 EET} + {891122400 10800 1 EEST} + {904597200 10800 0 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Asia/Novosibirsk b/library/tzdata/Asia/Novosibirsk index 0b35658..d04207c 100644 --- a/library/tzdata/Asia/Novosibirsk +++ b/library/tzdata/Asia/Novosibirsk @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Novosibirsk) { - {-9223372036854775808 19900 0 LMT} - {-1579476700 21600 0 NOVT} - {-1247551200 25200 0 NOVMMTT} - {354906000 28800 1 NOVST} - {370713600 25200 0 NOVT} - {386442000 28800 1 NOVST} - {402249600 25200 0 NOVT} - {417978000 28800 1 NOVST} - {433785600 25200 0 NOVT} - {449600400 28800 1 NOVST} - {465332400 25200 0 NOVT} - {481057200 28800 1 NOVST} - {496782000 25200 0 NOVT} - {512506800 28800 1 NOVST} - {528231600 25200 0 NOVT} - {543956400 28800 1 NOVST} - {559681200 25200 0 NOVT} - {575406000 28800 1 NOVST} - {591130800 25200 0 NOVT} - {606855600 28800 1 NOVST} - {622580400 25200 0 NOVT} - {638305200 28800 1 NOVST} - {654634800 25200 0 NOVT} - {670359600 21600 0 NOVMMTT} - {670363200 25200 1 NOVST} - {686088000 21600 0 NOVT} - {695764800 25200 0 NOVMMTT} - {701798400 28800 1 NOVST} - {717519600 25200 0 NOVT} - {733258800 28800 1 NOVST} - {738090000 25200 0 NOVST} - {748987200 21600 0 NOVT} - {764712000 25200 1 NOVST} - {780436800 21600 0 NOVT} - {796161600 25200 1 NOVST} - {811886400 21600 0 NOVT} - {828216000 25200 1 NOVST} - {846360000 21600 0 NOVT} - {859665600 25200 1 NOVST} - {877809600 21600 0 NOVT} - {891115200 25200 1 NOVST} - {909259200 21600 0 NOVT} - {922564800 25200 1 NOVST} - {941313600 21600 0 NOVT} - {954014400 25200 1 NOVST} - {972763200 21600 0 NOVT} - {985464000 25200 1 NOVST} - {1004212800 21600 0 NOVT} - {1017518400 25200 1 NOVST} - {1035662400 21600 0 NOVT} - {1048968000 25200 1 NOVST} - {1067112000 21600 0 NOVT} - {1080417600 25200 1 NOVST} - {1099166400 21600 0 NOVT} - {1111867200 25200 1 NOVST} - {1130616000 21600 0 NOVT} - {1143316800 25200 1 NOVST} - {1162065600 21600 0 NOVT} - {1174766400 25200 1 NOVST} - {1193515200 21600 0 NOVT} - {1206820800 25200 1 NOVST} - {1224964800 21600 0 NOVT} - {1238270400 25200 1 NOVST} - {1256414400 21600 0 NOVT} - {1269720000 25200 1 NOVST} - {1288468800 21600 0 NOVT} - {1301169600 25200 1 NOVST} - {1319918400 21600 0 NOVT} - {1332619200 25200 1 NOVST} - {1351368000 21600 0 NOVT} - {1364673600 25200 1 NOVST} - {1382817600 21600 0 NOVT} - {1396123200 25200 1 NOVST} - {1414267200 21600 0 NOVT} - {1427572800 25200 1 NOVST} - {1445716800 21600 0 NOVT} - {1459022400 25200 1 NOVST} - {1477771200 21600 0 NOVT} - {1490472000 25200 1 NOVST} - {1509220800 21600 0 NOVT} - {1521921600 25200 1 NOVST} - {1540670400 21600 0 NOVT} - {1553976000 25200 1 NOVST} - {1572120000 21600 0 NOVT} - {1585425600 25200 1 NOVST} - {1603569600 21600 0 NOVT} - {1616875200 25200 1 NOVST} - {1635624000 21600 0 NOVT} - {1648324800 25200 1 NOVST} - {1667073600 21600 0 NOVT} - {1679774400 25200 1 NOVST} - {1698523200 21600 0 NOVT} - {1711828800 25200 1 NOVST} - {1729972800 21600 0 NOVT} - {1743278400 25200 1 NOVST} - {1761422400 21600 0 NOVT} - {1774728000 25200 1 NOVST} - {1792872000 21600 0 NOVT} - {1806177600 25200 1 NOVST} - {1824926400 21600 0 NOVT} - {1837627200 25200 1 NOVST} - {1856376000 21600 0 NOVT} - {1869076800 25200 1 NOVST} - {1887825600 21600 0 NOVT} - {1901131200 25200 1 NOVST} - {1919275200 21600 0 NOVT} - {1932580800 25200 1 NOVST} - {1950724800 21600 0 NOVT} - {1964030400 25200 1 NOVST} - {1982779200 21600 0 NOVT} - {1995480000 25200 1 NOVST} - {2014228800 21600 0 NOVT} - {2026929600 25200 1 NOVST} - {2045678400 21600 0 NOVT} - {2058379200 25200 1 NOVST} - {2077128000 21600 0 NOVT} - {2090433600 25200 1 NOVST} - {2108577600 21600 0 NOVT} - {2121883200 25200 1 NOVST} - {2140027200 21600 0 NOVT} - {2153332800 25200 1 NOVST} - {2172081600 21600 0 NOVT} - {2184782400 25200 1 NOVST} - {2203531200 21600 0 NOVT} - {2216232000 25200 1 NOVST} - {2234980800 21600 0 NOVT} - {2248286400 25200 1 NOVST} - {2266430400 21600 0 NOVT} - {2279736000 25200 1 NOVST} - {2297880000 21600 0 NOVT} - {2311185600 25200 1 NOVST} - {2329329600 21600 0 NOVT} - {2342635200 25200 1 NOVST} - {2361384000 21600 0 NOVT} - {2374084800 25200 1 NOVST} - {2392833600 21600 0 NOVT} - {2405534400 25200 1 NOVST} - {2424283200 21600 0 NOVT} - {2437588800 25200 1 NOVST} - {2455732800 21600 0 NOVT} - {2469038400 25200 1 NOVST} - {2487182400 21600 0 NOVT} - {2500488000 25200 1 NOVST} - {2519236800 21600 0 NOVT} - {2531937600 25200 1 NOVST} - {2550686400 21600 0 NOVT} - {2563387200 25200 1 NOVST} - {2582136000 21600 0 NOVT} - {2595441600 25200 1 NOVST} - {2613585600 21600 0 NOVT} - {2626891200 25200 1 NOVST} - {2645035200 21600 0 NOVT} - {2658340800 25200 1 NOVST} - {2676484800 21600 0 NOVT} - {2689790400 25200 1 NOVST} - {2708539200 21600 0 NOVT} - {2721240000 25200 1 NOVST} - {2739988800 21600 0 NOVT} - {2752689600 25200 1 NOVST} - {2771438400 21600 0 NOVT} - {2784744000 25200 1 NOVST} - {2802888000 21600 0 NOVT} - {2816193600 25200 1 NOVST} - {2834337600 21600 0 NOVT} - {2847643200 25200 1 NOVST} - {2866392000 21600 0 NOVT} - {2879092800 25200 1 NOVST} - {2897841600 21600 0 NOVT} - {2910542400 25200 1 NOVST} - {2929291200 21600 0 NOVT} - {2941992000 25200 1 NOVST} - {2960740800 21600 0 NOVT} - {2974046400 25200 1 NOVST} - {2992190400 21600 0 NOVT} - {3005496000 25200 1 NOVST} - {3023640000 21600 0 NOVT} - {3036945600 25200 1 NOVST} - {3055694400 21600 0 NOVT} - {3068395200 25200 1 NOVST} - {3087144000 21600 0 NOVT} - {3099844800 25200 1 NOVST} - {3118593600 21600 0 NOVT} - {3131899200 25200 1 NOVST} - {3150043200 21600 0 NOVT} - {3163348800 25200 1 NOVST} - {3181492800 21600 0 NOVT} - {3194798400 25200 1 NOVST} - {3212942400 21600 0 NOVT} - {3226248000 25200 1 NOVST} - {3244996800 21600 0 NOVT} - {3257697600 25200 1 NOVST} - {3276446400 21600 0 NOVT} - {3289147200 25200 1 NOVST} - {3307896000 21600 0 NOVT} - {3321201600 25200 1 NOVST} - {3339345600 21600 0 NOVT} - {3352651200 25200 1 NOVST} - {3370795200 21600 0 NOVT} - {3384100800 25200 1 NOVST} - {3402849600 21600 0 NOVT} - {3415550400 25200 1 NOVST} - {3434299200 21600 0 NOVT} - {3447000000 25200 1 NOVST} - {3465748800 21600 0 NOVT} - {3479054400 25200 1 NOVST} - {3497198400 21600 0 NOVT} - {3510504000 25200 1 NOVST} - {3528648000 21600 0 NOVT} - {3541953600 25200 1 NOVST} - {3560097600 21600 0 NOVT} - {3573403200 25200 1 NOVST} - {3592152000 21600 0 NOVT} - {3604852800 25200 1 NOVST} - {3623601600 21600 0 NOVT} - {3636302400 25200 1 NOVST} - {3655051200 21600 0 NOVT} - {3668356800 25200 1 NOVST} - {3686500800 21600 0 NOVT} - {3699806400 25200 1 NOVST} - {3717950400 21600 0 NOVT} - {3731256000 25200 1 NOVST} - {3750004800 21600 0 NOVT} - {3762705600 25200 1 NOVST} - {3781454400 21600 0 NOVT} - {3794155200 25200 1 NOVST} - {3812904000 21600 0 NOVT} - {3825604800 25200 1 NOVST} - {3844353600 21600 0 NOVT} - {3857659200 25200 1 NOVST} - {3875803200 21600 0 NOVT} - {3889108800 25200 1 NOVST} - {3907252800 21600 0 NOVT} - {3920558400 25200 1 NOVST} - {3939307200 21600 0 NOVT} - {3952008000 25200 1 NOVST} - {3970756800 21600 0 NOVT} - {3983457600 25200 1 NOVST} - {4002206400 21600 0 NOVT} - {4015512000 25200 1 NOVST} - {4033656000 21600 0 NOVT} - {4046961600 25200 1 NOVST} - {4065105600 21600 0 NOVT} - {4078411200 25200 1 NOVST} - {4096555200 21600 0 NOVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Novosibirsk) { + {-9223372036854775808 19900 0 LMT} + {-1579476700 21600 0 NOVT} + {-1247551200 25200 0 NOVMMTT} + {354906000 28800 1 NOVST} + {370713600 25200 0 NOVT} + {386442000 28800 1 NOVST} + {402249600 25200 0 NOVT} + {417978000 28800 1 NOVST} + {433785600 25200 0 NOVT} + {449600400 28800 1 NOVST} + {465332400 25200 0 NOVT} + {481057200 28800 1 NOVST} + {496782000 25200 0 NOVT} + {512506800 28800 1 NOVST} + {528231600 25200 0 NOVT} + {543956400 28800 1 NOVST} + {559681200 25200 0 NOVT} + {575406000 28800 1 NOVST} + {591130800 25200 0 NOVT} + {606855600 28800 1 NOVST} + {622580400 25200 0 NOVT} + {638305200 28800 1 NOVST} + {654634800 25200 0 NOVT} + {670359600 21600 0 NOVMMTT} + {670363200 25200 1 NOVST} + {686088000 21600 0 NOVT} + {695764800 25200 0 NOVMMTT} + {701798400 28800 1 NOVST} + {717519600 25200 0 NOVT} + {733258800 28800 1 NOVST} + {738090000 25200 0 NOVST} + {748987200 21600 0 NOVT} + {764712000 25200 1 NOVST} + {780436800 21600 0 NOVT} + {796161600 25200 1 NOVST} + {811886400 21600 0 NOVT} + {828216000 25200 1 NOVST} + {846360000 21600 0 NOVT} + {859665600 25200 1 NOVST} + {877809600 21600 0 NOVT} + {891115200 25200 1 NOVST} + {909259200 21600 0 NOVT} + {922564800 25200 1 NOVST} + {941313600 21600 0 NOVT} + {954014400 25200 1 NOVST} + {972763200 21600 0 NOVT} + {985464000 25200 1 NOVST} + {1004212800 21600 0 NOVT} + {1017518400 25200 1 NOVST} + {1035662400 21600 0 NOVT} + {1048968000 25200 1 NOVST} + {1067112000 21600 0 NOVT} + {1080417600 25200 1 NOVST} + {1099166400 21600 0 NOVT} + {1111867200 25200 1 NOVST} + {1130616000 21600 0 NOVT} + {1143316800 25200 1 NOVST} + {1162065600 21600 0 NOVT} + {1174766400 25200 1 NOVST} + {1193515200 21600 0 NOVT} + {1206820800 25200 1 NOVST} + {1224964800 21600 0 NOVT} + {1238270400 25200 1 NOVST} + {1256414400 21600 0 NOVT} + {1269720000 25200 1 NOVST} + {1288468800 21600 0 NOVT} + {1301169600 25200 1 NOVST} + {1319918400 21600 0 NOVT} + {1332619200 25200 1 NOVST} + {1351368000 21600 0 NOVT} + {1364673600 25200 1 NOVST} + {1382817600 21600 0 NOVT} + {1396123200 25200 1 NOVST} + {1414267200 21600 0 NOVT} + {1427572800 25200 1 NOVST} + {1445716800 21600 0 NOVT} + {1459022400 25200 1 NOVST} + {1477771200 21600 0 NOVT} + {1490472000 25200 1 NOVST} + {1509220800 21600 0 NOVT} + {1521921600 25200 1 NOVST} + {1540670400 21600 0 NOVT} + {1553976000 25200 1 NOVST} + {1572120000 21600 0 NOVT} + {1585425600 25200 1 NOVST} + {1603569600 21600 0 NOVT} + {1616875200 25200 1 NOVST} + {1635624000 21600 0 NOVT} + {1648324800 25200 1 NOVST} + {1667073600 21600 0 NOVT} + {1679774400 25200 1 NOVST} + {1698523200 21600 0 NOVT} + {1711828800 25200 1 NOVST} + {1729972800 21600 0 NOVT} + {1743278400 25200 1 NOVST} + {1761422400 21600 0 NOVT} + {1774728000 25200 1 NOVST} + {1792872000 21600 0 NOVT} + {1806177600 25200 1 NOVST} + {1824926400 21600 0 NOVT} + {1837627200 25200 1 NOVST} + {1856376000 21600 0 NOVT} + {1869076800 25200 1 NOVST} + {1887825600 21600 0 NOVT} + {1901131200 25200 1 NOVST} + {1919275200 21600 0 NOVT} + {1932580800 25200 1 NOVST} + {1950724800 21600 0 NOVT} + {1964030400 25200 1 NOVST} + {1982779200 21600 0 NOVT} + {1995480000 25200 1 NOVST} + {2014228800 21600 0 NOVT} + {2026929600 25200 1 NOVST} + {2045678400 21600 0 NOVT} + {2058379200 25200 1 NOVST} + {2077128000 21600 0 NOVT} + {2090433600 25200 1 NOVST} + {2108577600 21600 0 NOVT} + {2121883200 25200 1 NOVST} + {2140027200 21600 0 NOVT} + {2153332800 25200 1 NOVST} + {2172081600 21600 0 NOVT} + {2184782400 25200 1 NOVST} + {2203531200 21600 0 NOVT} + {2216232000 25200 1 NOVST} + {2234980800 21600 0 NOVT} + {2248286400 25200 1 NOVST} + {2266430400 21600 0 NOVT} + {2279736000 25200 1 NOVST} + {2297880000 21600 0 NOVT} + {2311185600 25200 1 NOVST} + {2329329600 21600 0 NOVT} + {2342635200 25200 1 NOVST} + {2361384000 21600 0 NOVT} + {2374084800 25200 1 NOVST} + {2392833600 21600 0 NOVT} + {2405534400 25200 1 NOVST} + {2424283200 21600 0 NOVT} + {2437588800 25200 1 NOVST} + {2455732800 21600 0 NOVT} + {2469038400 25200 1 NOVST} + {2487182400 21600 0 NOVT} + {2500488000 25200 1 NOVST} + {2519236800 21600 0 NOVT} + {2531937600 25200 1 NOVST} + {2550686400 21600 0 NOVT} + {2563387200 25200 1 NOVST} + {2582136000 21600 0 NOVT} + {2595441600 25200 1 NOVST} + {2613585600 21600 0 NOVT} + {2626891200 25200 1 NOVST} + {2645035200 21600 0 NOVT} + {2658340800 25200 1 NOVST} + {2676484800 21600 0 NOVT} + {2689790400 25200 1 NOVST} + {2708539200 21600 0 NOVT} + {2721240000 25200 1 NOVST} + {2739988800 21600 0 NOVT} + {2752689600 25200 1 NOVST} + {2771438400 21600 0 NOVT} + {2784744000 25200 1 NOVST} + {2802888000 21600 0 NOVT} + {2816193600 25200 1 NOVST} + {2834337600 21600 0 NOVT} + {2847643200 25200 1 NOVST} + {2866392000 21600 0 NOVT} + {2879092800 25200 1 NOVST} + {2897841600 21600 0 NOVT} + {2910542400 25200 1 NOVST} + {2929291200 21600 0 NOVT} + {2941992000 25200 1 NOVST} + {2960740800 21600 0 NOVT} + {2974046400 25200 1 NOVST} + {2992190400 21600 0 NOVT} + {3005496000 25200 1 NOVST} + {3023640000 21600 0 NOVT} + {3036945600 25200 1 NOVST} + {3055694400 21600 0 NOVT} + {3068395200 25200 1 NOVST} + {3087144000 21600 0 NOVT} + {3099844800 25200 1 NOVST} + {3118593600 21600 0 NOVT} + {3131899200 25200 1 NOVST} + {3150043200 21600 0 NOVT} + {3163348800 25200 1 NOVST} + {3181492800 21600 0 NOVT} + {3194798400 25200 1 NOVST} + {3212942400 21600 0 NOVT} + {3226248000 25200 1 NOVST} + {3244996800 21600 0 NOVT} + {3257697600 25200 1 NOVST} + {3276446400 21600 0 NOVT} + {3289147200 25200 1 NOVST} + {3307896000 21600 0 NOVT} + {3321201600 25200 1 NOVST} + {3339345600 21600 0 NOVT} + {3352651200 25200 1 NOVST} + {3370795200 21600 0 NOVT} + {3384100800 25200 1 NOVST} + {3402849600 21600 0 NOVT} + {3415550400 25200 1 NOVST} + {3434299200 21600 0 NOVT} + {3447000000 25200 1 NOVST} + {3465748800 21600 0 NOVT} + {3479054400 25200 1 NOVST} + {3497198400 21600 0 NOVT} + {3510504000 25200 1 NOVST} + {3528648000 21600 0 NOVT} + {3541953600 25200 1 NOVST} + {3560097600 21600 0 NOVT} + {3573403200 25200 1 NOVST} + {3592152000 21600 0 NOVT} + {3604852800 25200 1 NOVST} + {3623601600 21600 0 NOVT} + {3636302400 25200 1 NOVST} + {3655051200 21600 0 NOVT} + {3668356800 25200 1 NOVST} + {3686500800 21600 0 NOVT} + {3699806400 25200 1 NOVST} + {3717950400 21600 0 NOVT} + {3731256000 25200 1 NOVST} + {3750004800 21600 0 NOVT} + {3762705600 25200 1 NOVST} + {3781454400 21600 0 NOVT} + {3794155200 25200 1 NOVST} + {3812904000 21600 0 NOVT} + {3825604800 25200 1 NOVST} + {3844353600 21600 0 NOVT} + {3857659200 25200 1 NOVST} + {3875803200 21600 0 NOVT} + {3889108800 25200 1 NOVST} + {3907252800 21600 0 NOVT} + {3920558400 25200 1 NOVST} + {3939307200 21600 0 NOVT} + {3952008000 25200 1 NOVST} + {3970756800 21600 0 NOVT} + {3983457600 25200 1 NOVST} + {4002206400 21600 0 NOVT} + {4015512000 25200 1 NOVST} + {4033656000 21600 0 NOVT} + {4046961600 25200 1 NOVST} + {4065105600 21600 0 NOVT} + {4078411200 25200 1 NOVST} + {4096555200 21600 0 NOVT} +} diff --git a/library/tzdata/Asia/Omsk b/library/tzdata/Asia/Omsk index 21db9c9..8502050 100644 --- a/library/tzdata/Asia/Omsk +++ b/library/tzdata/Asia/Omsk @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Omsk) { - {-9223372036854775808 17616 0 LMT} - {-1582088016 18000 0 OMST} - {-1247547600 21600 0 OMSMMTT} - {354909600 25200 1 OMSST} - {370717200 21600 0 OMST} - {386445600 25200 1 OMSST} - {402253200 21600 0 OMST} - {417981600 25200 1 OMSST} - {433789200 21600 0 OMST} - {449604000 25200 1 OMSST} - {465336000 21600 0 OMST} - {481060800 25200 1 OMSST} - {496785600 21600 0 OMST} - {512510400 25200 1 OMSST} - {528235200 21600 0 OMST} - {543960000 25200 1 OMSST} - {559684800 21600 0 OMST} - {575409600 25200 1 OMSST} - {591134400 21600 0 OMST} - {606859200 25200 1 OMSST} - {622584000 21600 0 OMST} - {638308800 25200 1 OMSST} - {654638400 21600 0 OMST} - {670363200 18000 0 OMSMMTT} - {670366800 21600 1 OMSST} - {686091600 18000 0 OMST} - {695768400 21600 0 OMSMMTT} - {701802000 25200 1 OMSST} - {717523200 21600 0 OMST} - {733262400 25200 1 OMSST} - {748987200 21600 0 OMST} - {764712000 25200 1 OMSST} - {780436800 21600 0 OMST} - {796161600 25200 1 OMSST} - {811886400 21600 0 OMST} - {828216000 25200 1 OMSST} - {846360000 21600 0 OMST} - {859665600 25200 1 OMSST} - {877809600 21600 0 OMST} - {891115200 25200 1 OMSST} - {909259200 21600 0 OMST} - {922564800 25200 1 OMSST} - {941313600 21600 0 OMST} - {954014400 25200 1 OMSST} - {972763200 21600 0 OMST} - {985464000 25200 1 OMSST} - {1004212800 21600 0 OMST} - {1017518400 25200 1 OMSST} - {1035662400 21600 0 OMST} - {1048968000 25200 1 OMSST} - {1067112000 21600 0 OMST} - {1080417600 25200 1 OMSST} - {1099166400 21600 0 OMST} - {1111867200 25200 1 OMSST} - {1130616000 21600 0 OMST} - {1143316800 25200 1 OMSST} - {1162065600 21600 0 OMST} - {1174766400 25200 1 OMSST} - {1193515200 21600 0 OMST} - {1206820800 25200 1 OMSST} - {1224964800 21600 0 OMST} - {1238270400 25200 1 OMSST} - {1256414400 21600 0 OMST} - {1269720000 25200 1 OMSST} - {1288468800 21600 0 OMST} - {1301169600 25200 1 OMSST} - {1319918400 21600 0 OMST} - {1332619200 25200 1 OMSST} - {1351368000 21600 0 OMST} - {1364673600 25200 1 OMSST} - {1382817600 21600 0 OMST} - {1396123200 25200 1 OMSST} - {1414267200 21600 0 OMST} - {1427572800 25200 1 OMSST} - {1445716800 21600 0 OMST} - {1459022400 25200 1 OMSST} - {1477771200 21600 0 OMST} - {1490472000 25200 1 OMSST} - {1509220800 21600 0 OMST} - {1521921600 25200 1 OMSST} - {1540670400 21600 0 OMST} - {1553976000 25200 1 OMSST} - {1572120000 21600 0 OMST} - {1585425600 25200 1 OMSST} - {1603569600 21600 0 OMST} - {1616875200 25200 1 OMSST} - {1635624000 21600 0 OMST} - {1648324800 25200 1 OMSST} - {1667073600 21600 0 OMST} - {1679774400 25200 1 OMSST} - {1698523200 21600 0 OMST} - {1711828800 25200 1 OMSST} - {1729972800 21600 0 OMST} - {1743278400 25200 1 OMSST} - {1761422400 21600 0 OMST} - {1774728000 25200 1 OMSST} - {1792872000 21600 0 OMST} - {1806177600 25200 1 OMSST} - {1824926400 21600 0 OMST} - {1837627200 25200 1 OMSST} - {1856376000 21600 0 OMST} - {1869076800 25200 1 OMSST} - {1887825600 21600 0 OMST} - {1901131200 25200 1 OMSST} - {1919275200 21600 0 OMST} - {1932580800 25200 1 OMSST} - {1950724800 21600 0 OMST} - {1964030400 25200 1 OMSST} - {1982779200 21600 0 OMST} - {1995480000 25200 1 OMSST} - {2014228800 21600 0 OMST} - {2026929600 25200 1 OMSST} - {2045678400 21600 0 OMST} - {2058379200 25200 1 OMSST} - {2077128000 21600 0 OMST} - {2090433600 25200 1 OMSST} - {2108577600 21600 0 OMST} - {2121883200 25200 1 OMSST} - {2140027200 21600 0 OMST} - {2153332800 25200 1 OMSST} - {2172081600 21600 0 OMST} - {2184782400 25200 1 OMSST} - {2203531200 21600 0 OMST} - {2216232000 25200 1 OMSST} - {2234980800 21600 0 OMST} - {2248286400 25200 1 OMSST} - {2266430400 21600 0 OMST} - {2279736000 25200 1 OMSST} - {2297880000 21600 0 OMST} - {2311185600 25200 1 OMSST} - {2329329600 21600 0 OMST} - {2342635200 25200 1 OMSST} - {2361384000 21600 0 OMST} - {2374084800 25200 1 OMSST} - {2392833600 21600 0 OMST} - {2405534400 25200 1 OMSST} - {2424283200 21600 0 OMST} - {2437588800 25200 1 OMSST} - {2455732800 21600 0 OMST} - {2469038400 25200 1 OMSST} - {2487182400 21600 0 OMST} - {2500488000 25200 1 OMSST} - {2519236800 21600 0 OMST} - {2531937600 25200 1 OMSST} - {2550686400 21600 0 OMST} - {2563387200 25200 1 OMSST} - {2582136000 21600 0 OMST} - {2595441600 25200 1 OMSST} - {2613585600 21600 0 OMST} - {2626891200 25200 1 OMSST} - {2645035200 21600 0 OMST} - {2658340800 25200 1 OMSST} - {2676484800 21600 0 OMST} - {2689790400 25200 1 OMSST} - {2708539200 21600 0 OMST} - {2721240000 25200 1 OMSST} - {2739988800 21600 0 OMST} - {2752689600 25200 1 OMSST} - {2771438400 21600 0 OMST} - {2784744000 25200 1 OMSST} - {2802888000 21600 0 OMST} - {2816193600 25200 1 OMSST} - {2834337600 21600 0 OMST} - {2847643200 25200 1 OMSST} - {2866392000 21600 0 OMST} - {2879092800 25200 1 OMSST} - {2897841600 21600 0 OMST} - {2910542400 25200 1 OMSST} - {2929291200 21600 0 OMST} - {2941992000 25200 1 OMSST} - {2960740800 21600 0 OMST} - {2974046400 25200 1 OMSST} - {2992190400 21600 0 OMST} - {3005496000 25200 1 OMSST} - {3023640000 21600 0 OMST} - {3036945600 25200 1 OMSST} - {3055694400 21600 0 OMST} - {3068395200 25200 1 OMSST} - {3087144000 21600 0 OMST} - {3099844800 25200 1 OMSST} - {3118593600 21600 0 OMST} - {3131899200 25200 1 OMSST} - {3150043200 21600 0 OMST} - {3163348800 25200 1 OMSST} - {3181492800 21600 0 OMST} - {3194798400 25200 1 OMSST} - {3212942400 21600 0 OMST} - {3226248000 25200 1 OMSST} - {3244996800 21600 0 OMST} - {3257697600 25200 1 OMSST} - {3276446400 21600 0 OMST} - {3289147200 25200 1 OMSST} - {3307896000 21600 0 OMST} - {3321201600 25200 1 OMSST} - {3339345600 21600 0 OMST} - {3352651200 25200 1 OMSST} - {3370795200 21600 0 OMST} - {3384100800 25200 1 OMSST} - {3402849600 21600 0 OMST} - {3415550400 25200 1 OMSST} - {3434299200 21600 0 OMST} - {3447000000 25200 1 OMSST} - {3465748800 21600 0 OMST} - {3479054400 25200 1 OMSST} - {3497198400 21600 0 OMST} - {3510504000 25200 1 OMSST} - {3528648000 21600 0 OMST} - {3541953600 25200 1 OMSST} - {3560097600 21600 0 OMST} - {3573403200 25200 1 OMSST} - {3592152000 21600 0 OMST} - {3604852800 25200 1 OMSST} - {3623601600 21600 0 OMST} - {3636302400 25200 1 OMSST} - {3655051200 21600 0 OMST} - {3668356800 25200 1 OMSST} - {3686500800 21600 0 OMST} - {3699806400 25200 1 OMSST} - {3717950400 21600 0 OMST} - {3731256000 25200 1 OMSST} - {3750004800 21600 0 OMST} - {3762705600 25200 1 OMSST} - {3781454400 21600 0 OMST} - {3794155200 25200 1 OMSST} - {3812904000 21600 0 OMST} - {3825604800 25200 1 OMSST} - {3844353600 21600 0 OMST} - {3857659200 25200 1 OMSST} - {3875803200 21600 0 OMST} - {3889108800 25200 1 OMSST} - {3907252800 21600 0 OMST} - {3920558400 25200 1 OMSST} - {3939307200 21600 0 OMST} - {3952008000 25200 1 OMSST} - {3970756800 21600 0 OMST} - {3983457600 25200 1 OMSST} - {4002206400 21600 0 OMST} - {4015512000 25200 1 OMSST} - {4033656000 21600 0 OMST} - {4046961600 25200 1 OMSST} - {4065105600 21600 0 OMST} - {4078411200 25200 1 OMSST} - {4096555200 21600 0 OMST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Omsk) { + {-9223372036854775808 17616 0 LMT} + {-1582088016 18000 0 OMST} + {-1247547600 21600 0 OMSMMTT} + {354909600 25200 1 OMSST} + {370717200 21600 0 OMST} + {386445600 25200 1 OMSST} + {402253200 21600 0 OMST} + {417981600 25200 1 OMSST} + {433789200 21600 0 OMST} + {449604000 25200 1 OMSST} + {465336000 21600 0 OMST} + {481060800 25200 1 OMSST} + {496785600 21600 0 OMST} + {512510400 25200 1 OMSST} + {528235200 21600 0 OMST} + {543960000 25200 1 OMSST} + {559684800 21600 0 OMST} + {575409600 25200 1 OMSST} + {591134400 21600 0 OMST} + {606859200 25200 1 OMSST} + {622584000 21600 0 OMST} + {638308800 25200 1 OMSST} + {654638400 21600 0 OMST} + {670363200 18000 0 OMSMMTT} + {670366800 21600 1 OMSST} + {686091600 18000 0 OMST} + {695768400 21600 0 OMSMMTT} + {701802000 25200 1 OMSST} + {717523200 21600 0 OMST} + {733262400 25200 1 OMSST} + {748987200 21600 0 OMST} + {764712000 25200 1 OMSST} + {780436800 21600 0 OMST} + {796161600 25200 1 OMSST} + {811886400 21600 0 OMST} + {828216000 25200 1 OMSST} + {846360000 21600 0 OMST} + {859665600 25200 1 OMSST} + {877809600 21600 0 OMST} + {891115200 25200 1 OMSST} + {909259200 21600 0 OMST} + {922564800 25200 1 OMSST} + {941313600 21600 0 OMST} + {954014400 25200 1 OMSST} + {972763200 21600 0 OMST} + {985464000 25200 1 OMSST} + {1004212800 21600 0 OMST} + {1017518400 25200 1 OMSST} + {1035662400 21600 0 OMST} + {1048968000 25200 1 OMSST} + {1067112000 21600 0 OMST} + {1080417600 25200 1 OMSST} + {1099166400 21600 0 OMST} + {1111867200 25200 1 OMSST} + {1130616000 21600 0 OMST} + {1143316800 25200 1 OMSST} + {1162065600 21600 0 OMST} + {1174766400 25200 1 OMSST} + {1193515200 21600 0 OMST} + {1206820800 25200 1 OMSST} + {1224964800 21600 0 OMST} + {1238270400 25200 1 OMSST} + {1256414400 21600 0 OMST} + {1269720000 25200 1 OMSST} + {1288468800 21600 0 OMST} + {1301169600 25200 1 OMSST} + {1319918400 21600 0 OMST} + {1332619200 25200 1 OMSST} + {1351368000 21600 0 OMST} + {1364673600 25200 1 OMSST} + {1382817600 21600 0 OMST} + {1396123200 25200 1 OMSST} + {1414267200 21600 0 OMST} + {1427572800 25200 1 OMSST} + {1445716800 21600 0 OMST} + {1459022400 25200 1 OMSST} + {1477771200 21600 0 OMST} + {1490472000 25200 1 OMSST} + {1509220800 21600 0 OMST} + {1521921600 25200 1 OMSST} + {1540670400 21600 0 OMST} + {1553976000 25200 1 OMSST} + {1572120000 21600 0 OMST} + {1585425600 25200 1 OMSST} + {1603569600 21600 0 OMST} + {1616875200 25200 1 OMSST} + {1635624000 21600 0 OMST} + {1648324800 25200 1 OMSST} + {1667073600 21600 0 OMST} + {1679774400 25200 1 OMSST} + {1698523200 21600 0 OMST} + {1711828800 25200 1 OMSST} + {1729972800 21600 0 OMST} + {1743278400 25200 1 OMSST} + {1761422400 21600 0 OMST} + {1774728000 25200 1 OMSST} + {1792872000 21600 0 OMST} + {1806177600 25200 1 OMSST} + {1824926400 21600 0 OMST} + {1837627200 25200 1 OMSST} + {1856376000 21600 0 OMST} + {1869076800 25200 1 OMSST} + {1887825600 21600 0 OMST} + {1901131200 25200 1 OMSST} + {1919275200 21600 0 OMST} + {1932580800 25200 1 OMSST} + {1950724800 21600 0 OMST} + {1964030400 25200 1 OMSST} + {1982779200 21600 0 OMST} + {1995480000 25200 1 OMSST} + {2014228800 21600 0 OMST} + {2026929600 25200 1 OMSST} + {2045678400 21600 0 OMST} + {2058379200 25200 1 OMSST} + {2077128000 21600 0 OMST} + {2090433600 25200 1 OMSST} + {2108577600 21600 0 OMST} + {2121883200 25200 1 OMSST} + {2140027200 21600 0 OMST} + {2153332800 25200 1 OMSST} + {2172081600 21600 0 OMST} + {2184782400 25200 1 OMSST} + {2203531200 21600 0 OMST} + {2216232000 25200 1 OMSST} + {2234980800 21600 0 OMST} + {2248286400 25200 1 OMSST} + {2266430400 21600 0 OMST} + {2279736000 25200 1 OMSST} + {2297880000 21600 0 OMST} + {2311185600 25200 1 OMSST} + {2329329600 21600 0 OMST} + {2342635200 25200 1 OMSST} + {2361384000 21600 0 OMST} + {2374084800 25200 1 OMSST} + {2392833600 21600 0 OMST} + {2405534400 25200 1 OMSST} + {2424283200 21600 0 OMST} + {2437588800 25200 1 OMSST} + {2455732800 21600 0 OMST} + {2469038400 25200 1 OMSST} + {2487182400 21600 0 OMST} + {2500488000 25200 1 OMSST} + {2519236800 21600 0 OMST} + {2531937600 25200 1 OMSST} + {2550686400 21600 0 OMST} + {2563387200 25200 1 OMSST} + {2582136000 21600 0 OMST} + {2595441600 25200 1 OMSST} + {2613585600 21600 0 OMST} + {2626891200 25200 1 OMSST} + {2645035200 21600 0 OMST} + {2658340800 25200 1 OMSST} + {2676484800 21600 0 OMST} + {2689790400 25200 1 OMSST} + {2708539200 21600 0 OMST} + {2721240000 25200 1 OMSST} + {2739988800 21600 0 OMST} + {2752689600 25200 1 OMSST} + {2771438400 21600 0 OMST} + {2784744000 25200 1 OMSST} + {2802888000 21600 0 OMST} + {2816193600 25200 1 OMSST} + {2834337600 21600 0 OMST} + {2847643200 25200 1 OMSST} + {2866392000 21600 0 OMST} + {2879092800 25200 1 OMSST} + {2897841600 21600 0 OMST} + {2910542400 25200 1 OMSST} + {2929291200 21600 0 OMST} + {2941992000 25200 1 OMSST} + {2960740800 21600 0 OMST} + {2974046400 25200 1 OMSST} + {2992190400 21600 0 OMST} + {3005496000 25200 1 OMSST} + {3023640000 21600 0 OMST} + {3036945600 25200 1 OMSST} + {3055694400 21600 0 OMST} + {3068395200 25200 1 OMSST} + {3087144000 21600 0 OMST} + {3099844800 25200 1 OMSST} + {3118593600 21600 0 OMST} + {3131899200 25200 1 OMSST} + {3150043200 21600 0 OMST} + {3163348800 25200 1 OMSST} + {3181492800 21600 0 OMST} + {3194798400 25200 1 OMSST} + {3212942400 21600 0 OMST} + {3226248000 25200 1 OMSST} + {3244996800 21600 0 OMST} + {3257697600 25200 1 OMSST} + {3276446400 21600 0 OMST} + {3289147200 25200 1 OMSST} + {3307896000 21600 0 OMST} + {3321201600 25200 1 OMSST} + {3339345600 21600 0 OMST} + {3352651200 25200 1 OMSST} + {3370795200 21600 0 OMST} + {3384100800 25200 1 OMSST} + {3402849600 21600 0 OMST} + {3415550400 25200 1 OMSST} + {3434299200 21600 0 OMST} + {3447000000 25200 1 OMSST} + {3465748800 21600 0 OMST} + {3479054400 25200 1 OMSST} + {3497198400 21600 0 OMST} + {3510504000 25200 1 OMSST} + {3528648000 21600 0 OMST} + {3541953600 25200 1 OMSST} + {3560097600 21600 0 OMST} + {3573403200 25200 1 OMSST} + {3592152000 21600 0 OMST} + {3604852800 25200 1 OMSST} + {3623601600 21600 0 OMST} + {3636302400 25200 1 OMSST} + {3655051200 21600 0 OMST} + {3668356800 25200 1 OMSST} + {3686500800 21600 0 OMST} + {3699806400 25200 1 OMSST} + {3717950400 21600 0 OMST} + {3731256000 25200 1 OMSST} + {3750004800 21600 0 OMST} + {3762705600 25200 1 OMSST} + {3781454400 21600 0 OMST} + {3794155200 25200 1 OMSST} + {3812904000 21600 0 OMST} + {3825604800 25200 1 OMSST} + {3844353600 21600 0 OMST} + {3857659200 25200 1 OMSST} + {3875803200 21600 0 OMST} + {3889108800 25200 1 OMSST} + {3907252800 21600 0 OMST} + {3920558400 25200 1 OMSST} + {3939307200 21600 0 OMST} + {3952008000 25200 1 OMSST} + {3970756800 21600 0 OMST} + {3983457600 25200 1 OMSST} + {4002206400 21600 0 OMST} + {4015512000 25200 1 OMSST} + {4033656000 21600 0 OMST} + {4046961600 25200 1 OMSST} + {4065105600 21600 0 OMST} + {4078411200 25200 1 OMSST} + {4096555200 21600 0 OMST} +} diff --git a/library/tzdata/Asia/Oral b/library/tzdata/Asia/Oral index 88b9a29..b529a7f 100644 --- a/library/tzdata/Asia/Oral +++ b/library/tzdata/Asia/Oral @@ -1,58 +1,58 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Oral) { - {-9223372036854775808 12324 0 LMT} - {-1441164324 14400 0 URAT} - {-1247544000 18000 0 URAT} - {354913200 21600 1 URAST} - {370720800 21600 0 URAT} - {386445600 18000 0 URAT} - {386449200 21600 1 URAST} - {402256800 18000 0 URAT} - {417985200 21600 1 URAST} - {433792800 18000 0 URAT} - {449607600 21600 1 URAST} - {465339600 18000 0 URAT} - {481064400 21600 1 URAST} - {496789200 18000 0 URAT} - {512514000 21600 1 URAST} - {528238800 18000 0 URAT} - {543963600 21600 1 URAST} - {559688400 18000 0 URAT} - {575413200 21600 1 URAST} - {591138000 18000 0 URAT} - {606862800 14400 0 URAT} - {606866400 18000 1 URAST} - {622591200 14400 0 URAT} - {638316000 18000 1 URAST} - {654645600 14400 0 URAT} - {662673600 14400 0 URAT} - {692827200 14400 0 ORAT} - {701809200 18000 1 ORAST} - {717530400 14400 0 ORAT} - {733269600 18000 1 ORAST} - {748994400 14400 0 ORAT} - {764719200 18000 1 ORAST} - {780444000 14400 0 ORAT} - {796168800 18000 1 ORAST} - {811893600 14400 0 ORAT} - {828223200 18000 1 ORAST} - {846367200 14400 0 ORAT} - {859672800 18000 1 ORAST} - {877816800 14400 0 ORAT} - {891122400 18000 1 ORAST} - {909266400 14400 0 ORAT} - {922572000 18000 1 ORAST} - {941320800 14400 0 ORAT} - {954021600 18000 1 ORAST} - {972770400 14400 0 ORAT} - {985471200 18000 1 ORAST} - {1004220000 14400 0 ORAT} - {1017525600 18000 1 ORAST} - {1035669600 14400 0 ORAT} - {1048975200 18000 1 ORAST} - {1067119200 14400 0 ORAT} - {1080424800 18000 1 ORAST} - {1099173600 14400 0 ORAT} - {1110830400 18000 0 ORAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Oral) { + {-9223372036854775808 12324 0 LMT} + {-1441164324 14400 0 URAT} + {-1247544000 18000 0 URAT} + {354913200 21600 1 URAST} + {370720800 21600 0 URAT} + {386445600 18000 0 URAT} + {386449200 21600 1 URAST} + {402256800 18000 0 URAT} + {417985200 21600 1 URAST} + {433792800 18000 0 URAT} + {449607600 21600 1 URAST} + {465339600 18000 0 URAT} + {481064400 21600 1 URAST} + {496789200 18000 0 URAT} + {512514000 21600 1 URAST} + {528238800 18000 0 URAT} + {543963600 21600 1 URAST} + {559688400 18000 0 URAT} + {575413200 21600 1 URAST} + {591138000 18000 0 URAT} + {606862800 14400 0 URAT} + {606866400 18000 1 URAST} + {622591200 14400 0 URAT} + {638316000 18000 1 URAST} + {654645600 14400 0 URAT} + {662673600 14400 0 URAT} + {692827200 14400 0 ORAT} + {701809200 18000 1 ORAST} + {717530400 14400 0 ORAT} + {733269600 18000 1 ORAST} + {748994400 14400 0 ORAT} + {764719200 18000 1 ORAST} + {780444000 14400 0 ORAT} + {796168800 18000 1 ORAST} + {811893600 14400 0 ORAT} + {828223200 18000 1 ORAST} + {846367200 14400 0 ORAT} + {859672800 18000 1 ORAST} + {877816800 14400 0 ORAT} + {891122400 18000 1 ORAST} + {909266400 14400 0 ORAT} + {922572000 18000 1 ORAST} + {941320800 14400 0 ORAT} + {954021600 18000 1 ORAST} + {972770400 14400 0 ORAT} + {985471200 18000 1 ORAST} + {1004220000 14400 0 ORAT} + {1017525600 18000 1 ORAST} + {1035669600 14400 0 ORAT} + {1048975200 18000 1 ORAST} + {1067119200 14400 0 ORAT} + {1080424800 18000 1 ORAST} + {1099173600 14400 0 ORAT} + {1110830400 18000 0 ORAT} +} diff --git a/library/tzdata/Asia/Phnom_Penh b/library/tzdata/Asia/Phnom_Penh index 4f28420..825edc7 100644 --- a/library/tzdata/Asia/Phnom_Penh +++ b/library/tzdata/Asia/Phnom_Penh @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Phnom_Penh) { - {-9223372036854775808 25180 0 LMT} - {-2005973980 25580 0 SMT} - {-1855983920 25200 0 ICT} - {-1819954800 28800 0 ICT} - {-1220428800 25200 0 ICT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Phnom_Penh) { + {-9223372036854775808 25180 0 LMT} + {-2005973980 25580 0 SMT} + {-1855983920 25200 0 ICT} + {-1819954800 28800 0 ICT} + {-1220428800 25200 0 ICT} +} diff --git a/library/tzdata/Asia/Pontianak b/library/tzdata/Asia/Pontianak index f3567dd..805655b 100644 --- a/library/tzdata/Asia/Pontianak +++ b/library/tzdata/Asia/Pontianak @@ -1,13 +1,13 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Pontianak) { - {-9223372036854775808 26240 0 LMT} - {-1946186240 26240 0 PMT} - {-1172906240 27000 0 WIT} - {-881220600 32400 0 JST} - {-766054800 27000 0 WIT} - {-683883000 28800 0 WIT} - {-620812800 27000 0 WIT} - {-189415800 28800 0 CIT} - {567964800 25200 0 WIT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Pontianak) { + {-9223372036854775808 26240 0 LMT} + {-1946186240 26240 0 PMT} + {-1172906240 27000 0 WIT} + {-881220600 32400 0 JST} + {-766054800 27000 0 WIT} + {-683883000 28800 0 WIT} + {-620812800 27000 0 WIT} + {-189415800 28800 0 CIT} + {567964800 25200 0 WIT} +} diff --git a/library/tzdata/Asia/Pyongyang b/library/tzdata/Asia/Pyongyang index 21c9a68..9febcbf 100644 --- a/library/tzdata/Asia/Pyongyang +++ b/library/tzdata/Asia/Pyongyang @@ -1,11 +1,11 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Pyongyang) { - {-9223372036854775808 30180 0 LMT} - {-2524551780 30600 0 KST} - {-2053931400 32400 0 KST} - {-1325494800 30600 0 KST} - {-1199262600 32400 0 KST} - {-498128400 28800 0 KST} - {-264931200 32400 0 KST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Pyongyang) { + {-9223372036854775808 30180 0 LMT} + {-2524551780 30600 0 KST} + {-2053931400 32400 0 KST} + {-1325494800 30600 0 KST} + {-1199262600 32400 0 KST} + {-498128400 28800 0 KST} + {-264931200 32400 0 KST} +} diff --git a/library/tzdata/Asia/Qatar b/library/tzdata/Asia/Qatar index bfb4eb4..06698f6 100644 --- a/library/tzdata/Asia/Qatar +++ b/library/tzdata/Asia/Qatar @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Qatar) { - {-9223372036854775808 12368 0 LMT} - {-1577935568 14400 0 GST} - {76190400 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Qatar) { + {-9223372036854775808 12368 0 LMT} + {-1577935568 14400 0 GST} + {76190400 10800 0 AST} +} diff --git a/library/tzdata/Asia/Qyzylorda b/library/tzdata/Asia/Qyzylorda index 16da574..cdc3219 100644 --- a/library/tzdata/Asia/Qyzylorda +++ b/library/tzdata/Asia/Qyzylorda @@ -1,58 +1,58 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Qyzylorda) { - {-9223372036854775808 15712 0 LMT} - {-1441167712 14400 0 KIZT} - {-1247544000 18000 0 KIZT} - {354913200 21600 1 KIZST} - {370720800 21600 0 KIZT} - {386445600 18000 0 KIZT} - {386449200 21600 1 KIZST} - {402256800 18000 0 KIZT} - {417985200 21600 1 KIZST} - {433792800 18000 0 KIZT} - {449607600 21600 1 KIZST} - {465339600 18000 0 KIZT} - {481064400 21600 1 KIZST} - {496789200 18000 0 KIZT} - {512514000 21600 1 KIZST} - {528238800 18000 0 KIZT} - {543963600 21600 1 KIZST} - {559688400 18000 0 KIZT} - {575413200 21600 1 KIZST} - {591138000 18000 0 KIZT} - {606862800 21600 1 KIZST} - {622587600 18000 0 KIZT} - {638312400 21600 1 KIZST} - {654642000 18000 0 KIZT} - {662670000 18000 0 KIZT} - {692823600 18000 0 QYZT} - {695768400 21600 0 QYZT} - {701802000 25200 1 QYZST} - {717523200 21600 0 QYZT} - {733262400 25200 1 QYZST} - {748987200 21600 0 QYZT} - {764712000 25200 1 QYZST} - {780436800 21600 0 QYZT} - {796161600 25200 1 QYZST} - {811886400 21600 0 QYZT} - {828216000 25200 1 QYZST} - {846360000 21600 0 QYZT} - {859665600 25200 1 QYZST} - {877809600 21600 0 QYZT} - {891115200 25200 1 QYZST} - {909259200 21600 0 QYZT} - {922564800 25200 1 QYZST} - {941313600 21600 0 QYZT} - {954014400 25200 1 QYZST} - {972763200 21600 0 QYZT} - {985464000 25200 1 QYZST} - {1004212800 21600 0 QYZT} - {1017518400 25200 1 QYZST} - {1035662400 21600 0 QYZT} - {1048968000 25200 1 QYZST} - {1067112000 21600 0 QYZT} - {1080417600 25200 1 QYZST} - {1099166400 21600 0 QYZT} - {1110823200 21600 0 QYZT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Qyzylorda) { + {-9223372036854775808 15712 0 LMT} + {-1441167712 14400 0 KIZT} + {-1247544000 18000 0 KIZT} + {354913200 21600 1 KIZST} + {370720800 21600 0 KIZT} + {386445600 18000 0 KIZT} + {386449200 21600 1 KIZST} + {402256800 18000 0 KIZT} + {417985200 21600 1 KIZST} + {433792800 18000 0 KIZT} + {449607600 21600 1 KIZST} + {465339600 18000 0 KIZT} + {481064400 21600 1 KIZST} + {496789200 18000 0 KIZT} + {512514000 21600 1 KIZST} + {528238800 18000 0 KIZT} + {543963600 21600 1 KIZST} + {559688400 18000 0 KIZT} + {575413200 21600 1 KIZST} + {591138000 18000 0 KIZT} + {606862800 21600 1 KIZST} + {622587600 18000 0 KIZT} + {638312400 21600 1 KIZST} + {654642000 18000 0 KIZT} + {662670000 18000 0 KIZT} + {692823600 18000 0 QYZT} + {695768400 21600 0 QYZT} + {701802000 25200 1 QYZST} + {717523200 21600 0 QYZT} + {733262400 25200 1 QYZST} + {748987200 21600 0 QYZT} + {764712000 25200 1 QYZST} + {780436800 21600 0 QYZT} + {796161600 25200 1 QYZST} + {811886400 21600 0 QYZT} + {828216000 25200 1 QYZST} + {846360000 21600 0 QYZT} + {859665600 25200 1 QYZST} + {877809600 21600 0 QYZT} + {891115200 25200 1 QYZST} + {909259200 21600 0 QYZT} + {922564800 25200 1 QYZST} + {941313600 21600 0 QYZT} + {954014400 25200 1 QYZST} + {972763200 21600 0 QYZT} + {985464000 25200 1 QYZST} + {1004212800 21600 0 QYZT} + {1017518400 25200 1 QYZST} + {1035662400 21600 0 QYZT} + {1048968000 25200 1 QYZST} + {1067112000 21600 0 QYZT} + {1080417600 25200 1 QYZST} + {1099166400 21600 0 QYZT} + {1110823200 21600 0 QYZT} +} diff --git a/library/tzdata/Asia/Rangoon b/library/tzdata/Asia/Rangoon index 2b8c4fa..417a3af 100644 --- a/library/tzdata/Asia/Rangoon +++ b/library/tzdata/Asia/Rangoon @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Rangoon) { - {-9223372036854775808 23080 0 LMT} - {-2840163880 23076 0 RMT} - {-1577946276 23400 0 BURT} - {-873268200 32400 0 JST} - {-778410000 23400 0 MMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Rangoon) { + {-9223372036854775808 23080 0 LMT} + {-2840163880 23076 0 RMT} + {-1577946276 23400 0 BURT} + {-873268200 32400 0 JST} + {-778410000 23400 0 MMT} +} diff --git a/library/tzdata/Asia/Riyadh b/library/tzdata/Asia/Riyadh index 0ef28a9..0690ac2 100644 --- a/library/tzdata/Asia/Riyadh +++ b/library/tzdata/Asia/Riyadh @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Riyadh) { - {-9223372036854775808 11212 0 LMT} - {-631163212 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Riyadh) { + {-9223372036854775808 11212 0 LMT} + {-631163212 10800 0 AST} +} diff --git a/library/tzdata/Asia/Saigon b/library/tzdata/Asia/Saigon index 1e42eed..2f195a2 100644 --- a/library/tzdata/Asia/Saigon +++ b/library/tzdata/Asia/Saigon @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Ho_Chi_Minh)]} { - LoadTimeZoneFile Asia/Ho_Chi_Minh -} -set TZData(:Asia/Saigon) $TZData(:Asia/Ho_Chi_Minh) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Ho_Chi_Minh)]} { + LoadTimeZoneFile Asia/Ho_Chi_Minh +} +set TZData(:Asia/Saigon) $TZData(:Asia/Ho_Chi_Minh) diff --git a/library/tzdata/Asia/Sakhalin b/library/tzdata/Asia/Sakhalin index 31395ab..51c8803 100644 --- a/library/tzdata/Asia/Sakhalin +++ b/library/tzdata/Asia/Sakhalin @@ -1,249 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Sakhalin) { - {-9223372036854775808 34248 0 LMT} - {-2031039048 32400 0 CJT} - {-1009875600 32400 0 JST} - {-768560400 39600 0 SAKMMTT} - {354891600 43200 1 SAKST} - {370699200 39600 0 SAKT} - {386427600 43200 1 SAKST} - {402235200 39600 0 SAKT} - {417963600 43200 1 SAKST} - {433771200 39600 0 SAKT} - {449586000 43200 1 SAKST} - {465318000 39600 0 SAKT} - {481042800 43200 1 SAKST} - {496767600 39600 0 SAKT} - {512492400 43200 1 SAKST} - {528217200 39600 0 SAKT} - {543942000 43200 1 SAKST} - {559666800 39600 0 SAKT} - {575391600 43200 1 SAKST} - {591116400 39600 0 SAKT} - {606841200 43200 1 SAKST} - {622566000 39600 0 SAKT} - {638290800 43200 1 SAKST} - {654620400 39600 0 SAKT} - {670345200 36000 0 SAKMMTT} - {670348800 39600 1 SAKST} - {686073600 36000 0 SAKT} - {695750400 39600 0 SAKMMTT} - {701784000 43200 1 SAKST} - {717505200 39600 0 SAKT} - {733244400 43200 1 SAKST} - {748969200 39600 0 SAKT} - {764694000 43200 1 SAKST} - {780418800 39600 0 SAKT} - {796143600 43200 1 SAKST} - {811868400 39600 0 SAKT} - {828198000 43200 1 SAKST} - {846342000 39600 0 SAKT} - {859647600 36000 0 SAKMMTT} - {859651200 39600 1 SAKST} - {877795200 36000 0 SAKT} - {891100800 39600 1 SAKST} - {909244800 36000 0 SAKT} - {922550400 39600 1 SAKST} - {941299200 36000 0 SAKT} - {954000000 39600 1 SAKST} - {972748800 36000 0 SAKT} - {985449600 39600 1 SAKST} - {1004198400 36000 0 SAKT} - {1017504000 39600 1 SAKST} - {1035648000 36000 0 SAKT} - {1048953600 39600 1 SAKST} - {1067097600 36000 0 SAKT} - {1080403200 39600 1 SAKST} - {1099152000 36000 0 SAKT} - {1111852800 39600 1 SAKST} - {1130601600 36000 0 SAKT} - {1143302400 39600 1 SAKST} - {1162051200 36000 0 SAKT} - {1174752000 39600 1 SAKST} - {1193500800 36000 0 SAKT} - {1206806400 39600 1 SAKST} - {1224950400 36000 0 SAKT} - {1238256000 39600 1 SAKST} - {1256400000 36000 0 SAKT} - {1269705600 39600 1 SAKST} - {1288454400 36000 0 SAKT} - {1301155200 39600 1 SAKST} - {1319904000 36000 0 SAKT} - {1332604800 39600 1 SAKST} - {1351353600 36000 0 SAKT} - {1364659200 39600 1 SAKST} - {1382803200 36000 0 SAKT} - {1396108800 39600 1 SAKST} - {1414252800 36000 0 SAKT} - {1427558400 39600 1 SAKST} - {1445702400 36000 0 SAKT} - {1459008000 39600 1 SAKST} - {1477756800 36000 0 SAKT} - {1490457600 39600 1 SAKST} - {1509206400 36000 0 SAKT} - {1521907200 39600 1 SAKST} - {1540656000 36000 0 SAKT} - {1553961600 39600 1 SAKST} - {1572105600 36000 0 SAKT} - {1585411200 39600 1 SAKST} - {1603555200 36000 0 SAKT} - {1616860800 39600 1 SAKST} - {1635609600 36000 0 SAKT} - {1648310400 39600 1 SAKST} - {1667059200 36000 0 SAKT} - {1679760000 39600 1 SAKST} - {1698508800 36000 0 SAKT} - {1711814400 39600 1 SAKST} - {1729958400 36000 0 SAKT} - {1743264000 39600 1 SAKST} - {1761408000 36000 0 SAKT} - {1774713600 39600 1 SAKST} - {1792857600 36000 0 SAKT} - {1806163200 39600 1 SAKST} - {1824912000 36000 0 SAKT} - {1837612800 39600 1 SAKST} - {1856361600 36000 0 SAKT} - {1869062400 39600 1 SAKST} - {1887811200 36000 0 SAKT} - {1901116800 39600 1 SAKST} - {1919260800 36000 0 SAKT} - {1932566400 39600 1 SAKST} - {1950710400 36000 0 SAKT} - {1964016000 39600 1 SAKST} - {1982764800 36000 0 SAKT} - {1995465600 39600 1 SAKST} - {2014214400 36000 0 SAKT} - {2026915200 39600 1 SAKST} - {2045664000 36000 0 SAKT} - {2058364800 39600 1 SAKST} - {2077113600 36000 0 SAKT} - {2090419200 39600 1 SAKST} - {2108563200 36000 0 SAKT} - {2121868800 39600 1 SAKST} - {2140012800 36000 0 SAKT} - {2153318400 39600 1 SAKST} - {2172067200 36000 0 SAKT} - {2184768000 39600 1 SAKST} - {2203516800 36000 0 SAKT} - {2216217600 39600 1 SAKST} - {2234966400 36000 0 SAKT} - {2248272000 39600 1 SAKST} - {2266416000 36000 0 SAKT} - {2279721600 39600 1 SAKST} - {2297865600 36000 0 SAKT} - {2311171200 39600 1 SAKST} - {2329315200 36000 0 SAKT} - {2342620800 39600 1 SAKST} - {2361369600 36000 0 SAKT} - {2374070400 39600 1 SAKST} - {2392819200 36000 0 SAKT} - {2405520000 39600 1 SAKST} - {2424268800 36000 0 SAKT} - {2437574400 39600 1 SAKST} - {2455718400 36000 0 SAKT} - {2469024000 39600 1 SAKST} - {2487168000 36000 0 SAKT} - {2500473600 39600 1 SAKST} - {2519222400 36000 0 SAKT} - {2531923200 39600 1 SAKST} - {2550672000 36000 0 SAKT} - {2563372800 39600 1 SAKST} - {2582121600 36000 0 SAKT} - {2595427200 39600 1 SAKST} - {2613571200 36000 0 SAKT} - {2626876800 39600 1 SAKST} - {2645020800 36000 0 SAKT} - {2658326400 39600 1 SAKST} - {2676470400 36000 0 SAKT} - {2689776000 39600 1 SAKST} - {2708524800 36000 0 SAKT} - {2721225600 39600 1 SAKST} - {2739974400 36000 0 SAKT} - {2752675200 39600 1 SAKST} - {2771424000 36000 0 SAKT} - {2784729600 39600 1 SAKST} - {2802873600 36000 0 SAKT} - {2816179200 39600 1 SAKST} - {2834323200 36000 0 SAKT} - {2847628800 39600 1 SAKST} - {2866377600 36000 0 SAKT} - {2879078400 39600 1 SAKST} - {2897827200 36000 0 SAKT} - {2910528000 39600 1 SAKST} - {2929276800 36000 0 SAKT} - {2941977600 39600 1 SAKST} - {2960726400 36000 0 SAKT} - {2974032000 39600 1 SAKST} - {2992176000 36000 0 SAKT} - {3005481600 39600 1 SAKST} - {3023625600 36000 0 SAKT} - {3036931200 39600 1 SAKST} - {3055680000 36000 0 SAKT} - {3068380800 39600 1 SAKST} - {3087129600 36000 0 SAKT} - {3099830400 39600 1 SAKST} - {3118579200 36000 0 SAKT} - {3131884800 39600 1 SAKST} - {3150028800 36000 0 SAKT} - {3163334400 39600 1 SAKST} - {3181478400 36000 0 SAKT} - {3194784000 39600 1 SAKST} - {3212928000 36000 0 SAKT} - {3226233600 39600 1 SAKST} - {3244982400 36000 0 SAKT} - {3257683200 39600 1 SAKST} - {3276432000 36000 0 SAKT} - {3289132800 39600 1 SAKST} - {3307881600 36000 0 SAKT} - {3321187200 39600 1 SAKST} - {3339331200 36000 0 SAKT} - {3352636800 39600 1 SAKST} - {3370780800 36000 0 SAKT} - {3384086400 39600 1 SAKST} - {3402835200 36000 0 SAKT} - {3415536000 39600 1 SAKST} - {3434284800 36000 0 SAKT} - {3446985600 39600 1 SAKST} - {3465734400 36000 0 SAKT} - {3479040000 39600 1 SAKST} - {3497184000 36000 0 SAKT} - {3510489600 39600 1 SAKST} - {3528633600 36000 0 SAKT} - {3541939200 39600 1 SAKST} - {3560083200 36000 0 SAKT} - {3573388800 39600 1 SAKST} - {3592137600 36000 0 SAKT} - {3604838400 39600 1 SAKST} - {3623587200 36000 0 SAKT} - {3636288000 39600 1 SAKST} - {3655036800 36000 0 SAKT} - {3668342400 39600 1 SAKST} - {3686486400 36000 0 SAKT} - {3699792000 39600 1 SAKST} - {3717936000 36000 0 SAKT} - {3731241600 39600 1 SAKST} - {3749990400 36000 0 SAKT} - {3762691200 39600 1 SAKST} - {3781440000 36000 0 SAKT} - {3794140800 39600 1 SAKST} - {3812889600 36000 0 SAKT} - {3825590400 39600 1 SAKST} - {3844339200 36000 0 SAKT} - {3857644800 39600 1 SAKST} - {3875788800 36000 0 SAKT} - {3889094400 39600 1 SAKST} - {3907238400 36000 0 SAKT} - {3920544000 39600 1 SAKST} - {3939292800 36000 0 SAKT} - {3951993600 39600 1 SAKST} - {3970742400 36000 0 SAKT} - {3983443200 39600 1 SAKST} - {4002192000 36000 0 SAKT} - {4015497600 39600 1 SAKST} - {4033641600 36000 0 SAKT} - {4046947200 39600 1 SAKST} - {4065091200 36000 0 SAKT} - {4078396800 39600 1 SAKST} - {4096540800 36000 0 SAKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Sakhalin) { + {-9223372036854775808 34248 0 LMT} + {-2031039048 32400 0 CJT} + {-1009875600 32400 0 JST} + {-768560400 39600 0 SAKMMTT} + {354891600 43200 1 SAKST} + {370699200 39600 0 SAKT} + {386427600 43200 1 SAKST} + {402235200 39600 0 SAKT} + {417963600 43200 1 SAKST} + {433771200 39600 0 SAKT} + {449586000 43200 1 SAKST} + {465318000 39600 0 SAKT} + {481042800 43200 1 SAKST} + {496767600 39600 0 SAKT} + {512492400 43200 1 SAKST} + {528217200 39600 0 SAKT} + {543942000 43200 1 SAKST} + {559666800 39600 0 SAKT} + {575391600 43200 1 SAKST} + {591116400 39600 0 SAKT} + {606841200 43200 1 SAKST} + {622566000 39600 0 SAKT} + {638290800 43200 1 SAKST} + {654620400 39600 0 SAKT} + {670345200 36000 0 SAKMMTT} + {670348800 39600 1 SAKST} + {686073600 36000 0 SAKT} + {695750400 39600 0 SAKMMTT} + {701784000 43200 1 SAKST} + {717505200 39600 0 SAKT} + {733244400 43200 1 SAKST} + {748969200 39600 0 SAKT} + {764694000 43200 1 SAKST} + {780418800 39600 0 SAKT} + {796143600 43200 1 SAKST} + {811868400 39600 0 SAKT} + {828198000 43200 1 SAKST} + {846342000 39600 0 SAKT} + {859647600 36000 0 SAKMMTT} + {859651200 39600 1 SAKST} + {877795200 36000 0 SAKT} + {891100800 39600 1 SAKST} + {909244800 36000 0 SAKT} + {922550400 39600 1 SAKST} + {941299200 36000 0 SAKT} + {954000000 39600 1 SAKST} + {972748800 36000 0 SAKT} + {985449600 39600 1 SAKST} + {1004198400 36000 0 SAKT} + {1017504000 39600 1 SAKST} + {1035648000 36000 0 SAKT} + {1048953600 39600 1 SAKST} + {1067097600 36000 0 SAKT} + {1080403200 39600 1 SAKST} + {1099152000 36000 0 SAKT} + {1111852800 39600 1 SAKST} + {1130601600 36000 0 SAKT} + {1143302400 39600 1 SAKST} + {1162051200 36000 0 SAKT} + {1174752000 39600 1 SAKST} + {1193500800 36000 0 SAKT} + {1206806400 39600 1 SAKST} + {1224950400 36000 0 SAKT} + {1238256000 39600 1 SAKST} + {1256400000 36000 0 SAKT} + {1269705600 39600 1 SAKST} + {1288454400 36000 0 SAKT} + {1301155200 39600 1 SAKST} + {1319904000 36000 0 SAKT} + {1332604800 39600 1 SAKST} + {1351353600 36000 0 SAKT} + {1364659200 39600 1 SAKST} + {1382803200 36000 0 SAKT} + {1396108800 39600 1 SAKST} + {1414252800 36000 0 SAKT} + {1427558400 39600 1 SAKST} + {1445702400 36000 0 SAKT} + {1459008000 39600 1 SAKST} + {1477756800 36000 0 SAKT} + {1490457600 39600 1 SAKST} + {1509206400 36000 0 SAKT} + {1521907200 39600 1 SAKST} + {1540656000 36000 0 SAKT} + {1553961600 39600 1 SAKST} + {1572105600 36000 0 SAKT} + {1585411200 39600 1 SAKST} + {1603555200 36000 0 SAKT} + {1616860800 39600 1 SAKST} + {1635609600 36000 0 SAKT} + {1648310400 39600 1 SAKST} + {1667059200 36000 0 SAKT} + {1679760000 39600 1 SAKST} + {1698508800 36000 0 SAKT} + {1711814400 39600 1 SAKST} + {1729958400 36000 0 SAKT} + {1743264000 39600 1 SAKST} + {1761408000 36000 0 SAKT} + {1774713600 39600 1 SAKST} + {1792857600 36000 0 SAKT} + {1806163200 39600 1 SAKST} + {1824912000 36000 0 SAKT} + {1837612800 39600 1 SAKST} + {1856361600 36000 0 SAKT} + {1869062400 39600 1 SAKST} + {1887811200 36000 0 SAKT} + {1901116800 39600 1 SAKST} + {1919260800 36000 0 SAKT} + {1932566400 39600 1 SAKST} + {1950710400 36000 0 SAKT} + {1964016000 39600 1 SAKST} + {1982764800 36000 0 SAKT} + {1995465600 39600 1 SAKST} + {2014214400 36000 0 SAKT} + {2026915200 39600 1 SAKST} + {2045664000 36000 0 SAKT} + {2058364800 39600 1 SAKST} + {2077113600 36000 0 SAKT} + {2090419200 39600 1 SAKST} + {2108563200 36000 0 SAKT} + {2121868800 39600 1 SAKST} + {2140012800 36000 0 SAKT} + {2153318400 39600 1 SAKST} + {2172067200 36000 0 SAKT} + {2184768000 39600 1 SAKST} + {2203516800 36000 0 SAKT} + {2216217600 39600 1 SAKST} + {2234966400 36000 0 SAKT} + {2248272000 39600 1 SAKST} + {2266416000 36000 0 SAKT} + {2279721600 39600 1 SAKST} + {2297865600 36000 0 SAKT} + {2311171200 39600 1 SAKST} + {2329315200 36000 0 SAKT} + {2342620800 39600 1 SAKST} + {2361369600 36000 0 SAKT} + {2374070400 39600 1 SAKST} + {2392819200 36000 0 SAKT} + {2405520000 39600 1 SAKST} + {2424268800 36000 0 SAKT} + {2437574400 39600 1 SAKST} + {2455718400 36000 0 SAKT} + {2469024000 39600 1 SAKST} + {2487168000 36000 0 SAKT} + {2500473600 39600 1 SAKST} + {2519222400 36000 0 SAKT} + {2531923200 39600 1 SAKST} + {2550672000 36000 0 SAKT} + {2563372800 39600 1 SAKST} + {2582121600 36000 0 SAKT} + {2595427200 39600 1 SAKST} + {2613571200 36000 0 SAKT} + {2626876800 39600 1 SAKST} + {2645020800 36000 0 SAKT} + {2658326400 39600 1 SAKST} + {2676470400 36000 0 SAKT} + {2689776000 39600 1 SAKST} + {2708524800 36000 0 SAKT} + {2721225600 39600 1 SAKST} + {2739974400 36000 0 SAKT} + {2752675200 39600 1 SAKST} + {2771424000 36000 0 SAKT} + {2784729600 39600 1 SAKST} + {2802873600 36000 0 SAKT} + {2816179200 39600 1 SAKST} + {2834323200 36000 0 SAKT} + {2847628800 39600 1 SAKST} + {2866377600 36000 0 SAKT} + {2879078400 39600 1 SAKST} + {2897827200 36000 0 SAKT} + {2910528000 39600 1 SAKST} + {2929276800 36000 0 SAKT} + {2941977600 39600 1 SAKST} + {2960726400 36000 0 SAKT} + {2974032000 39600 1 SAKST} + {2992176000 36000 0 SAKT} + {3005481600 39600 1 SAKST} + {3023625600 36000 0 SAKT} + {3036931200 39600 1 SAKST} + {3055680000 36000 0 SAKT} + {3068380800 39600 1 SAKST} + {3087129600 36000 0 SAKT} + {3099830400 39600 1 SAKST} + {3118579200 36000 0 SAKT} + {3131884800 39600 1 SAKST} + {3150028800 36000 0 SAKT} + {3163334400 39600 1 SAKST} + {3181478400 36000 0 SAKT} + {3194784000 39600 1 SAKST} + {3212928000 36000 0 SAKT} + {3226233600 39600 1 SAKST} + {3244982400 36000 0 SAKT} + {3257683200 39600 1 SAKST} + {3276432000 36000 0 SAKT} + {3289132800 39600 1 SAKST} + {3307881600 36000 0 SAKT} + {3321187200 39600 1 SAKST} + {3339331200 36000 0 SAKT} + {3352636800 39600 1 SAKST} + {3370780800 36000 0 SAKT} + {3384086400 39600 1 SAKST} + {3402835200 36000 0 SAKT} + {3415536000 39600 1 SAKST} + {3434284800 36000 0 SAKT} + {3446985600 39600 1 SAKST} + {3465734400 36000 0 SAKT} + {3479040000 39600 1 SAKST} + {3497184000 36000 0 SAKT} + {3510489600 39600 1 SAKST} + {3528633600 36000 0 SAKT} + {3541939200 39600 1 SAKST} + {3560083200 36000 0 SAKT} + {3573388800 39600 1 SAKST} + {3592137600 36000 0 SAKT} + {3604838400 39600 1 SAKST} + {3623587200 36000 0 SAKT} + {3636288000 39600 1 SAKST} + {3655036800 36000 0 SAKT} + {3668342400 39600 1 SAKST} + {3686486400 36000 0 SAKT} + {3699792000 39600 1 SAKST} + {3717936000 36000 0 SAKT} + {3731241600 39600 1 SAKST} + {3749990400 36000 0 SAKT} + {3762691200 39600 1 SAKST} + {3781440000 36000 0 SAKT} + {3794140800 39600 1 SAKST} + {3812889600 36000 0 SAKT} + {3825590400 39600 1 SAKST} + {3844339200 36000 0 SAKT} + {3857644800 39600 1 SAKST} + {3875788800 36000 0 SAKT} + {3889094400 39600 1 SAKST} + {3907238400 36000 0 SAKT} + {3920544000 39600 1 SAKST} + {3939292800 36000 0 SAKT} + {3951993600 39600 1 SAKST} + {3970742400 36000 0 SAKT} + {3983443200 39600 1 SAKST} + {4002192000 36000 0 SAKT} + {4015497600 39600 1 SAKST} + {4033641600 36000 0 SAKT} + {4046947200 39600 1 SAKST} + {4065091200 36000 0 SAKT} + {4078396800 39600 1 SAKST} + {4096540800 36000 0 SAKT} +} diff --git a/library/tzdata/Asia/Samarkand b/library/tzdata/Asia/Samarkand index 6a1be11..43f50e7 100644 --- a/library/tzdata/Asia/Samarkand +++ b/library/tzdata/Asia/Samarkand @@ -1,32 +1,32 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Samarkand) { - {-9223372036854775808 16032 0 LMT} - {-1441168032 14400 0 SAMT} - {-1247544000 18000 0 SAMT} - {354913200 21600 1 SAMST} - {370720800 21600 0 TAST} - {386445600 18000 0 SAMT} - {386449200 21600 1 SAMST} - {402256800 18000 0 SAMT} - {417985200 21600 1 SAMST} - {433792800 18000 0 SAMT} - {449607600 21600 1 SAMST} - {465339600 18000 0 SAMT} - {481064400 21600 1 SAMST} - {496789200 18000 0 SAMT} - {512514000 21600 1 SAMST} - {528238800 18000 0 SAMT} - {543963600 21600 1 SAMST} - {559688400 18000 0 SAMT} - {575413200 21600 1 SAMST} - {591138000 18000 0 SAMT} - {606862800 21600 1 SAMST} - {622587600 18000 0 SAMT} - {638312400 21600 1 SAMST} - {654642000 18000 0 SAMT} - {670366800 21600 1 SAMST} - {683665200 21600 0 UZST} - {686091600 18000 0 UZT} - {694206000 18000 0 UZT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Samarkand) { + {-9223372036854775808 16032 0 LMT} + {-1441168032 14400 0 SAMT} + {-1247544000 18000 0 SAMT} + {354913200 21600 1 SAMST} + {370720800 21600 0 TAST} + {386445600 18000 0 SAMT} + {386449200 21600 1 SAMST} + {402256800 18000 0 SAMT} + {417985200 21600 1 SAMST} + {433792800 18000 0 SAMT} + {449607600 21600 1 SAMST} + {465339600 18000 0 SAMT} + {481064400 21600 1 SAMST} + {496789200 18000 0 SAMT} + {512514000 21600 1 SAMST} + {528238800 18000 0 SAMT} + {543963600 21600 1 SAMST} + {559688400 18000 0 SAMT} + {575413200 21600 1 SAMST} + {591138000 18000 0 SAMT} + {606862800 21600 1 SAMST} + {622587600 18000 0 SAMT} + {638312400 21600 1 SAMST} + {654642000 18000 0 SAMT} + {670366800 21600 1 SAMST} + {683665200 21600 0 UZST} + {686091600 18000 0 UZT} + {694206000 18000 0 UZT} +} diff --git a/library/tzdata/Asia/Seoul b/library/tzdata/Asia/Seoul index 9c83e30..9449555 100644 --- a/library/tzdata/Asia/Seoul +++ b/library/tzdata/Asia/Seoul @@ -1,18 +1,18 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Seoul) { - {-9223372036854775808 30472 0 LMT} - {-2524552072 30600 0 KST} - {-2053931400 32400 0 KST} - {-1325494800 30600 0 KST} - {-1199262600 32400 0 KST} - {-498128400 28800 0 KST} - {-303984000 32400 1 KDT} - {-293533200 28800 0 KST} - {-264931200 30600 0 KST} - {-39515400 32400 0 KST} - {547570800 36000 1 KDT} - {560872800 32400 0 KST} - {579020400 36000 1 KDT} - {592322400 32400 0 KST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Seoul) { + {-9223372036854775808 30472 0 LMT} + {-2524552072 30600 0 KST} + {-2053931400 32400 0 KST} + {-1325494800 30600 0 KST} + {-1199262600 32400 0 KST} + {-498128400 28800 0 KST} + {-303984000 32400 1 KDT} + {-293533200 28800 0 KST} + {-264931200 30600 0 KST} + {-39515400 32400 0 KST} + {547570800 36000 1 KDT} + {560872800 32400 0 KST} + {579020400 36000 1 KDT} + {592322400 32400 0 KST} +} diff --git a/library/tzdata/Asia/Shanghai b/library/tzdata/Asia/Shanghai index aa7dc58..c4e7880 100644 --- a/library/tzdata/Asia/Shanghai +++ b/library/tzdata/Asia/Shanghai @@ -1,23 +1,23 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Shanghai) { - {-9223372036854775808 29152 0 LMT} - {-1325491552 28800 0 CST} - {-933494400 32400 1 CDT} - {-923130000 28800 0 CST} - {-908784000 32400 1 CDT} - {-891594000 28800 0 CST} - {-662716800 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Shanghai) { + {-9223372036854775808 29152 0 LMT} + {-1325491552 28800 0 CST} + {-933494400 32400 1 CDT} + {-923130000 28800 0 CST} + {-908784000 32400 1 CDT} + {-891594000 28800 0 CST} + {-662716800 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Singapore b/library/tzdata/Asia/Singapore index e2f226e..dafb3bf 100644 --- a/library/tzdata/Asia/Singapore +++ b/library/tzdata/Asia/Singapore @@ -1,14 +1,14 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Singapore) { - {-9223372036854775808 24925 0 LMT} - {-2177477725 24925 0 SMT} - {-2038200925 25200 0 MALT} - {-1167634800 26400 1 MALST} - {-1073028000 26400 0 MALT} - {-894180000 27000 0 MALT} - {-879665400 32400 0 JST} - {-767005200 27000 0 MALT} - {-138785400 27000 0 SGT} - {378664200 28800 0 SGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Singapore) { + {-9223372036854775808 24925 0 LMT} + {-2177477725 24925 0 SMT} + {-2038200925 25200 0 MALT} + {-1167634800 26400 1 MALST} + {-1073028000 26400 0 MALT} + {-894180000 27000 0 MALT} + {-879665400 32400 0 JST} + {-767005200 27000 0 MALT} + {-138785400 27000 0 SGT} + {378664200 28800 0 SGT} +} diff --git a/library/tzdata/Asia/Taipei b/library/tzdata/Asia/Taipei index 6366b34..df934b3 100644 --- a/library/tzdata/Asia/Taipei +++ b/library/tzdata/Asia/Taipei @@ -1,46 +1,46 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Taipei) { - {-9223372036854775808 29160 0 LMT} - {-2335248360 28800 0 CST} - {-778579200 32400 1 CDT} - {-765363600 28800 0 CST} - {-747043200 32400 1 CDT} - {-733827600 28800 0 CST} - {-715507200 32400 1 CDT} - {-702291600 28800 0 CST} - {-683884800 32400 1 CDT} - {-670669200 28800 0 CST} - {-652348800 32400 1 CDT} - {-639133200 28800 0 CST} - {-620812800 32400 1 CDT} - {-607597200 28800 0 CST} - {-589276800 32400 1 CDT} - {-576061200 28800 0 CST} - {-562924800 32400 1 CDT} - {-541760400 28800 0 CST} - {-528710400 32400 1 CDT} - {-510224400 28800 0 CST} - {-497174400 32400 1 CDT} - {-478688400 28800 0 CST} - {-465638400 32400 1 CDT} - {-449830800 28800 0 CST} - {-434016000 32400 1 CDT} - {-418208400 28800 0 CST} - {-402480000 32400 1 CDT} - {-386672400 28800 0 CST} - {-370944000 32400 1 CDT} - {-355136400 28800 0 CST} - {-339408000 32400 1 CDT} - {-323600400 28800 0 CST} - {-302515200 32400 1 CDT} - {-291978000 28800 0 CST} - {-270979200 32400 1 CDT} - {-260442000 28800 0 CST} - {133977600 32400 1 CDT} - {149785200 28800 0 CST} - {165513600 32400 1 CDT} - {181321200 28800 0 CST} - {331142400 32400 1 CDT} - {339087600 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Taipei) { + {-9223372036854775808 29160 0 LMT} + {-2335248360 28800 0 CST} + {-778579200 32400 1 CDT} + {-765363600 28800 0 CST} + {-747043200 32400 1 CDT} + {-733827600 28800 0 CST} + {-715507200 32400 1 CDT} + {-702291600 28800 0 CST} + {-683884800 32400 1 CDT} + {-670669200 28800 0 CST} + {-652348800 32400 1 CDT} + {-639133200 28800 0 CST} + {-620812800 32400 1 CDT} + {-607597200 28800 0 CST} + {-589276800 32400 1 CDT} + {-576061200 28800 0 CST} + {-562924800 32400 1 CDT} + {-541760400 28800 0 CST} + {-528710400 32400 1 CDT} + {-510224400 28800 0 CST} + {-497174400 32400 1 CDT} + {-478688400 28800 0 CST} + {-465638400 32400 1 CDT} + {-449830800 28800 0 CST} + {-434016000 32400 1 CDT} + {-418208400 28800 0 CST} + {-402480000 32400 1 CDT} + {-386672400 28800 0 CST} + {-370944000 32400 1 CDT} + {-355136400 28800 0 CST} + {-339408000 32400 1 CDT} + {-323600400 28800 0 CST} + {-302515200 32400 1 CDT} + {-291978000 28800 0 CST} + {-270979200 32400 1 CDT} + {-260442000 28800 0 CST} + {133977600 32400 1 CDT} + {149785200 28800 0 CST} + {165513600 32400 1 CDT} + {181321200 28800 0 CST} + {331142400 32400 1 CDT} + {339087600 28800 0 CST} +} diff --git a/library/tzdata/Asia/Tashkent b/library/tzdata/Asia/Tashkent index fcee755..c0f5120 100644 --- a/library/tzdata/Asia/Tashkent +++ b/library/tzdata/Asia/Tashkent @@ -1,32 +1,32 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Tashkent) { - {-9223372036854775808 16632 0 LMT} - {-1441168632 18000 0 TAST} - {-1247547600 21600 0 TAST} - {354909600 25200 1 TASST} - {370717200 21600 0 TAST} - {386445600 25200 1 TASST} - {402253200 21600 0 TAST} - {417981600 25200 1 TASST} - {433789200 21600 0 TAST} - {449604000 25200 1 TASST} - {465336000 21600 0 TAST} - {481060800 25200 1 TASST} - {496785600 21600 0 TAST} - {512510400 25200 1 TASST} - {528235200 21600 0 TAST} - {543960000 25200 1 TASST} - {559684800 21600 0 TAST} - {575409600 25200 1 TASST} - {591134400 21600 0 TAST} - {606859200 25200 1 TASST} - {622584000 21600 0 TAST} - {638308800 25200 1 TASST} - {654638400 21600 0 TAST} - {670363200 18000 0 TAST} - {670366800 21600 1 TASST} - {683665200 21600 0 UZST} - {686091600 18000 0 UZT} - {694206000 18000 0 UZT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Tashkent) { + {-9223372036854775808 16632 0 LMT} + {-1441168632 18000 0 TAST} + {-1247547600 21600 0 TAST} + {354909600 25200 1 TASST} + {370717200 21600 0 TAST} + {386445600 25200 1 TASST} + {402253200 21600 0 TAST} + {417981600 25200 1 TASST} + {433789200 21600 0 TAST} + {449604000 25200 1 TASST} + {465336000 21600 0 TAST} + {481060800 25200 1 TASST} + {496785600 21600 0 TAST} + {512510400 25200 1 TASST} + {528235200 21600 0 TAST} + {543960000 25200 1 TASST} + {559684800 21600 0 TAST} + {575409600 25200 1 TASST} + {591134400 21600 0 TAST} + {606859200 25200 1 TASST} + {622584000 21600 0 TAST} + {638308800 25200 1 TASST} + {654638400 21600 0 TAST} + {670363200 18000 0 TAST} + {670366800 21600 1 TASST} + {683665200 21600 0 UZST} + {686091600 18000 0 UZT} + {694206000 18000 0 UZT} +} diff --git a/library/tzdata/Asia/Tbilisi b/library/tzdata/Asia/Tbilisi index a716917..3082f74 100644 --- a/library/tzdata/Asia/Tbilisi +++ b/library/tzdata/Asia/Tbilisi @@ -1,60 +1,60 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Tbilisi) { - {-9223372036854775808 10756 0 LMT} - {-2840151556 10756 0 TBMT} - {-1441162756 10800 0 TBIT} - {-405140400 14400 0 TBIT} - {354916800 18000 1 TBIST} - {370724400 14400 0 TBIT} - {386452800 18000 1 TBIST} - {402260400 14400 0 TBIT} - {417988800 18000 1 TBIST} - {433796400 14400 0 TBIT} - {449611200 18000 1 TBIST} - {465343200 14400 0 TBIT} - {481068000 18000 1 TBIST} - {496792800 14400 0 TBIT} - {512517600 18000 1 TBIST} - {528242400 14400 0 TBIT} - {543967200 18000 1 TBIST} - {559692000 14400 0 TBIT} - {575416800 18000 1 TBIST} - {591141600 14400 0 TBIT} - {606866400 18000 1 TBIST} - {622591200 14400 0 TBIT} - {638316000 18000 1 TBIST} - {654645600 14400 0 TBIT} - {670370400 14400 1 TBIST} - {671140800 14400 0 GEST} - {686098800 10800 0 GET} - {694213200 10800 0 GET} - {701816400 14400 1 GEST} - {717537600 10800 0 GET} - {733266000 14400 1 GEST} - {748987200 10800 0 GET} - {764715600 14400 1 GEST} - {780440400 14400 0 GET} - {796161600 18000 1 GEST} - {811882800 14400 0 GET} - {828216000 18000 1 GEST} - {846360000 18000 1 GEST} - {859662000 18000 0 GEST} - {877806000 14400 0 GET} - {891115200 18000 1 GEST} - {909255600 14400 0 GET} - {922564800 18000 1 GEST} - {941310000 14400 0 GET} - {954014400 18000 1 GEST} - {972759600 14400 0 GET} - {985464000 18000 1 GEST} - {1004209200 14400 0 GET} - {1017518400 18000 1 GEST} - {1035658800 14400 0 GET} - {1048968000 18000 1 GEST} - {1067108400 14400 0 GET} - {1080417600 18000 1 GEST} - {1088280000 14400 0 GEST} - {1099177200 10800 0 GET} - {1111878000 14400 0 GET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Tbilisi) { + {-9223372036854775808 10756 0 LMT} + {-2840151556 10756 0 TBMT} + {-1441162756 10800 0 TBIT} + {-405140400 14400 0 TBIT} + {354916800 18000 1 TBIST} + {370724400 14400 0 TBIT} + {386452800 18000 1 TBIST} + {402260400 14400 0 TBIT} + {417988800 18000 1 TBIST} + {433796400 14400 0 TBIT} + {449611200 18000 1 TBIST} + {465343200 14400 0 TBIT} + {481068000 18000 1 TBIST} + {496792800 14400 0 TBIT} + {512517600 18000 1 TBIST} + {528242400 14400 0 TBIT} + {543967200 18000 1 TBIST} + {559692000 14400 0 TBIT} + {575416800 18000 1 TBIST} + {591141600 14400 0 TBIT} + {606866400 18000 1 TBIST} + {622591200 14400 0 TBIT} + {638316000 18000 1 TBIST} + {654645600 14400 0 TBIT} + {670370400 14400 1 TBIST} + {671140800 14400 0 GEST} + {686098800 10800 0 GET} + {694213200 10800 0 GET} + {701816400 14400 1 GEST} + {717537600 10800 0 GET} + {733266000 14400 1 GEST} + {748987200 10800 0 GET} + {764715600 14400 1 GEST} + {780440400 14400 0 GET} + {796161600 18000 1 GEST} + {811882800 14400 0 GET} + {828216000 18000 1 GEST} + {846360000 18000 1 GEST} + {859662000 18000 0 GEST} + {877806000 14400 0 GET} + {891115200 18000 1 GEST} + {909255600 14400 0 GET} + {922564800 18000 1 GEST} + {941310000 14400 0 GET} + {954014400 18000 1 GEST} + {972759600 14400 0 GET} + {985464000 18000 1 GEST} + {1004209200 14400 0 GET} + {1017518400 18000 1 GEST} + {1035658800 14400 0 GET} + {1048968000 18000 1 GEST} + {1067108400 14400 0 GET} + {1080417600 18000 1 GEST} + {1088280000 14400 0 GEST} + {1099177200 10800 0 GET} + {1111878000 14400 0 GET} +} diff --git a/library/tzdata/Asia/Tehran b/library/tzdata/Asia/Tehran index 7dca0ae..9a47f7e 100644 --- a/library/tzdata/Asia/Tehran +++ b/library/tzdata/Asia/Tehran @@ -1,105 +1,105 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Tehran) { - {-9223372036854775808 12344 0 LMT} - {-1704165944 12344 0 TMT} - {-757394744 12600 0 IRST} - {247177800 14400 0 IRST} - {259272000 18000 1 IRDT} - {277758000 14400 0 IRST} - {283982400 12600 0 IRST} - {290809800 16200 1 IRDT} - {306531000 12600 0 IRST} - {322432200 16200 1 IRDT} - {338499000 12600 0 IRST} - {673216200 16200 1 IRDT} - {685481400 12600 0 IRST} - {701209800 16200 1 IRDT} - {717103800 12600 0 IRST} - {732745800 16200 1 IRDT} - {748639800 12600 0 IRST} - {764281800 16200 1 IRDT} - {780175800 12600 0 IRST} - {795817800 16200 1 IRDT} - {811711800 12600 0 IRST} - {827353800 16200 1 IRDT} - {843247800 12600 0 IRST} - {858976200 16200 1 IRDT} - {874870200 12600 0 IRST} - {890512200 16200 1 IRDT} - {906406200 12600 0 IRST} - {922048200 16200 1 IRDT} - {937942200 12600 0 IRST} - {953584200 16200 1 IRDT} - {969478200 12600 0 IRST} - {985206600 16200 1 IRDT} - {1001100600 12600 0 IRST} - {1016742600 16200 1 IRDT} - {1032636600 12600 0 IRST} - {1048278600 16200 1 IRDT} - {1064172600 12600 0 IRST} - {1079814600 16200 1 IRDT} - {1095708600 12600 0 IRST} - {1111437000 16200 1 IRDT} - {1127331000 12600 0 IRST} - {1206045000 16200 1 IRDT} - {1221939000 12600 0 IRST} - {1237667400 16200 1 IRDT} - {1253561400 12600 0 IRST} - {1269203400 16200 1 IRDT} - {1285097400 12600 0 IRST} - {1300739400 16200 1 IRDT} - {1316633400 12600 0 IRST} - {1332275400 16200 1 IRDT} - {1348169400 12600 0 IRST} - {1363897800 16200 1 IRDT} - {1379791800 12600 0 IRST} - {1395433800 16200 1 IRDT} - {1411327800 12600 0 IRST} - {1426969800 16200 1 IRDT} - {1442863800 12600 0 IRST} - {1458505800 16200 1 IRDT} - {1474399800 12600 0 IRST} - {1490128200 16200 1 IRDT} - {1506022200 12600 0 IRST} - {1521664200 16200 1 IRDT} - {1537558200 12600 0 IRST} - {1553200200 16200 1 IRDT} - {1569094200 12600 0 IRST} - {1584736200 16200 1 IRDT} - {1600630200 12600 0 IRST} - {1616358600 16200 1 IRDT} - {1632252600 12600 0 IRST} - {1647894600 16200 1 IRDT} - {1663788600 12600 0 IRST} - {1679430600 16200 1 IRDT} - {1695324600 12600 0 IRST} - {1710966600 16200 1 IRDT} - {1726860600 12600 0 IRST} - {1742589000 16200 1 IRDT} - {1758483000 12600 0 IRST} - {1774125000 16200 1 IRDT} - {1790019000 12600 0 IRST} - {1805661000 16200 1 IRDT} - {1821555000 12600 0 IRST} - {1837197000 16200 1 IRDT} - {1853091000 12600 0 IRST} - {1868733000 16200 1 IRDT} - {1884627000 12600 0 IRST} - {1900355400 16200 1 IRDT} - {1916249400 12600 0 IRST} - {1931891400 16200 1 IRDT} - {1947785400 12600 0 IRST} - {1963427400 16200 1 IRDT} - {1979321400 12600 0 IRST} - {1994963400 16200 1 IRDT} - {2010857400 12600 0 IRST} - {2026585800 16200 1 IRDT} - {2042479800 12600 0 IRST} - {2058121800 16200 1 IRDT} - {2074015800 12600 0 IRST} - {2089657800 16200 1 IRDT} - {2105551800 12600 0 IRST} - {2121193800 16200 1 IRDT} - {2137087800 12600 0 IRST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Tehran) { + {-9223372036854775808 12344 0 LMT} + {-1704165944 12344 0 TMT} + {-757394744 12600 0 IRST} + {247177800 14400 0 IRST} + {259272000 18000 1 IRDT} + {277758000 14400 0 IRST} + {283982400 12600 0 IRST} + {290809800 16200 1 IRDT} + {306531000 12600 0 IRST} + {322432200 16200 1 IRDT} + {338499000 12600 0 IRST} + {673216200 16200 1 IRDT} + {685481400 12600 0 IRST} + {701209800 16200 1 IRDT} + {717103800 12600 0 IRST} + {732745800 16200 1 IRDT} + {748639800 12600 0 IRST} + {764281800 16200 1 IRDT} + {780175800 12600 0 IRST} + {795817800 16200 1 IRDT} + {811711800 12600 0 IRST} + {827353800 16200 1 IRDT} + {843247800 12600 0 IRST} + {858976200 16200 1 IRDT} + {874870200 12600 0 IRST} + {890512200 16200 1 IRDT} + {906406200 12600 0 IRST} + {922048200 16200 1 IRDT} + {937942200 12600 0 IRST} + {953584200 16200 1 IRDT} + {969478200 12600 0 IRST} + {985206600 16200 1 IRDT} + {1001100600 12600 0 IRST} + {1016742600 16200 1 IRDT} + {1032636600 12600 0 IRST} + {1048278600 16200 1 IRDT} + {1064172600 12600 0 IRST} + {1079814600 16200 1 IRDT} + {1095708600 12600 0 IRST} + {1111437000 16200 1 IRDT} + {1127331000 12600 0 IRST} + {1206045000 16200 1 IRDT} + {1221939000 12600 0 IRST} + {1237667400 16200 1 IRDT} + {1253561400 12600 0 IRST} + {1269203400 16200 1 IRDT} + {1285097400 12600 0 IRST} + {1300739400 16200 1 IRDT} + {1316633400 12600 0 IRST} + {1332275400 16200 1 IRDT} + {1348169400 12600 0 IRST} + {1363897800 16200 1 IRDT} + {1379791800 12600 0 IRST} + {1395433800 16200 1 IRDT} + {1411327800 12600 0 IRST} + {1426969800 16200 1 IRDT} + {1442863800 12600 0 IRST} + {1458505800 16200 1 IRDT} + {1474399800 12600 0 IRST} + {1490128200 16200 1 IRDT} + {1506022200 12600 0 IRST} + {1521664200 16200 1 IRDT} + {1537558200 12600 0 IRST} + {1553200200 16200 1 IRDT} + {1569094200 12600 0 IRST} + {1584736200 16200 1 IRDT} + {1600630200 12600 0 IRST} + {1616358600 16200 1 IRDT} + {1632252600 12600 0 IRST} + {1647894600 16200 1 IRDT} + {1663788600 12600 0 IRST} + {1679430600 16200 1 IRDT} + {1695324600 12600 0 IRST} + {1710966600 16200 1 IRDT} + {1726860600 12600 0 IRST} + {1742589000 16200 1 IRDT} + {1758483000 12600 0 IRST} + {1774125000 16200 1 IRDT} + {1790019000 12600 0 IRST} + {1805661000 16200 1 IRDT} + {1821555000 12600 0 IRST} + {1837197000 16200 1 IRDT} + {1853091000 12600 0 IRST} + {1868733000 16200 1 IRDT} + {1884627000 12600 0 IRST} + {1900355400 16200 1 IRDT} + {1916249400 12600 0 IRST} + {1931891400 16200 1 IRDT} + {1947785400 12600 0 IRST} + {1963427400 16200 1 IRDT} + {1979321400 12600 0 IRST} + {1994963400 16200 1 IRDT} + {2010857400 12600 0 IRST} + {2026585800 16200 1 IRDT} + {2042479800 12600 0 IRST} + {2058121800 16200 1 IRDT} + {2074015800 12600 0 IRST} + {2089657800 16200 1 IRDT} + {2105551800 12600 0 IRST} + {2121193800 16200 1 IRDT} + {2137087800 12600 0 IRST} +} diff --git a/library/tzdata/Asia/Tel_Aviv b/library/tzdata/Asia/Tel_Aviv index 3e7278d..1fdf48b 100644 --- a/library/tzdata/Asia/Tel_Aviv +++ b/library/tzdata/Asia/Tel_Aviv @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Jerusalem)]} { - LoadTimeZoneFile Asia/Jerusalem -} -set TZData(:Asia/Tel_Aviv) $TZData(:Asia/Jerusalem) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Jerusalem)]} { + LoadTimeZoneFile Asia/Jerusalem +} +set TZData(:Asia/Tel_Aviv) $TZData(:Asia/Jerusalem) diff --git a/library/tzdata/Asia/Thimbu b/library/tzdata/Asia/Thimbu index 94b0846..d46d63f 100644 --- a/library/tzdata/Asia/Thimbu +++ b/library/tzdata/Asia/Thimbu @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Thimphu)]} { - LoadTimeZoneFile Asia/Thimphu -} -set TZData(:Asia/Thimbu) $TZData(:Asia/Thimphu) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Thimphu)]} { + LoadTimeZoneFile Asia/Thimphu +} +set TZData(:Asia/Thimbu) $TZData(:Asia/Thimphu) diff --git a/library/tzdata/Asia/Thimphu b/library/tzdata/Asia/Thimphu index 8c981de..bf517dc 100644 --- a/library/tzdata/Asia/Thimphu +++ b/library/tzdata/Asia/Thimphu @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Thimphu) { - {-9223372036854775808 21516 0 LMT} - {-706341516 19800 0 IST} - {560025000 21600 0 BTT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Thimphu) { + {-9223372036854775808 21516 0 LMT} + {-706341516 19800 0 IST} + {560025000 21600 0 BTT} +} diff --git a/library/tzdata/Asia/Tokyo b/library/tzdata/Asia/Tokyo index 8d1ce11..e761d34 100644 --- a/library/tzdata/Asia/Tokyo +++ b/library/tzdata/Asia/Tokyo @@ -1,16 +1,16 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Tokyo) { - {-9223372036854775808 33539 0 LMT} - {-2587712400 32400 0 JST} - {-2335251600 32400 0 CJT} - {-1009875600 32400 0 JST} - {-683794800 36000 1 JDT} - {-672393600 32400 0 JST} - {-654764400 36000 1 JDT} - {-640944000 32400 0 JST} - {-620290800 36000 1 JDT} - {-609494400 32400 0 JST} - {-588841200 36000 1 JDT} - {-578044800 32400 0 JST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Tokyo) { + {-9223372036854775808 33539 0 LMT} + {-2587712400 32400 0 JST} + {-2335251600 32400 0 CJT} + {-1009875600 32400 0 JST} + {-683794800 36000 1 JDT} + {-672393600 32400 0 JST} + {-654764400 36000 1 JDT} + {-640944000 32400 0 JST} + {-620290800 36000 1 JDT} + {-609494400 32400 0 JST} + {-588841200 36000 1 JDT} + {-578044800 32400 0 JST} +} diff --git a/library/tzdata/Asia/Ujung_Pandang b/library/tzdata/Asia/Ujung_Pandang index abe142e..82995ea 100644 --- a/library/tzdata/Asia/Ujung_Pandang +++ b/library/tzdata/Asia/Ujung_Pandang @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Makassar)]} { - LoadTimeZoneFile Asia/Makassar -} -set TZData(:Asia/Ujung_Pandang) $TZData(:Asia/Makassar) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Makassar)]} { + LoadTimeZoneFile Asia/Makassar +} +set TZData(:Asia/Ujung_Pandang) $TZData(:Asia/Makassar) diff --git a/library/tzdata/Asia/Ulaanbaatar b/library/tzdata/Asia/Ulaanbaatar index fef76ec..78e49d3 100644 --- a/library/tzdata/Asia/Ulaanbaatar +++ b/library/tzdata/Asia/Ulaanbaatar @@ -1,51 +1,51 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Ulaanbaatar) { - {-9223372036854775808 25652 0 LMT} - {-2032931252 25200 0 ULAT} - {252435600 28800 0 ULAT} - {417974400 32400 1 ULAST} - {433782000 28800 0 ULAT} - {449596800 32400 1 ULAST} - {465318000 28800 0 ULAT} - {481046400 32400 1 ULAST} - {496767600 28800 0 ULAT} - {512496000 32400 1 ULAST} - {528217200 28800 0 ULAT} - {543945600 32400 1 ULAST} - {559666800 28800 0 ULAT} - {575395200 32400 1 ULAST} - {591116400 28800 0 ULAT} - {606844800 32400 1 ULAST} - {622566000 28800 0 ULAT} - {638294400 32400 1 ULAST} - {654620400 28800 0 ULAT} - {670348800 32400 1 ULAST} - {686070000 28800 0 ULAT} - {701798400 32400 1 ULAST} - {717519600 28800 0 ULAT} - {733248000 32400 1 ULAST} - {748969200 28800 0 ULAT} - {764697600 32400 1 ULAST} - {780418800 28800 0 ULAT} - {796147200 32400 1 ULAST} - {811868400 28800 0 ULAT} - {828201600 32400 1 ULAST} - {843922800 28800 0 ULAT} - {859651200 32400 1 ULAST} - {875372400 28800 0 ULAT} - {891100800 32400 1 ULAST} - {906822000 28800 0 ULAT} - {988394400 32400 1 ULAST} - {1001696400 28800 0 ULAT} - {1017424800 32400 1 ULAST} - {1033146000 28800 0 ULAT} - {1048874400 32400 1 ULAST} - {1064595600 28800 0 ULAT} - {1080324000 32400 1 ULAST} - {1096045200 28800 0 ULAT} - {1111773600 32400 1 ULAST} - {1127494800 28800 0 ULAT} - {1143223200 32400 1 ULAST} - {1159549200 28800 0 ULAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Ulaanbaatar) { + {-9223372036854775808 25652 0 LMT} + {-2032931252 25200 0 ULAT} + {252435600 28800 0 ULAT} + {417974400 32400 1 ULAST} + {433782000 28800 0 ULAT} + {449596800 32400 1 ULAST} + {465318000 28800 0 ULAT} + {481046400 32400 1 ULAST} + {496767600 28800 0 ULAT} + {512496000 32400 1 ULAST} + {528217200 28800 0 ULAT} + {543945600 32400 1 ULAST} + {559666800 28800 0 ULAT} + {575395200 32400 1 ULAST} + {591116400 28800 0 ULAT} + {606844800 32400 1 ULAST} + {622566000 28800 0 ULAT} + {638294400 32400 1 ULAST} + {654620400 28800 0 ULAT} + {670348800 32400 1 ULAST} + {686070000 28800 0 ULAT} + {701798400 32400 1 ULAST} + {717519600 28800 0 ULAT} + {733248000 32400 1 ULAST} + {748969200 28800 0 ULAT} + {764697600 32400 1 ULAST} + {780418800 28800 0 ULAT} + {796147200 32400 1 ULAST} + {811868400 28800 0 ULAT} + {828201600 32400 1 ULAST} + {843922800 28800 0 ULAT} + {859651200 32400 1 ULAST} + {875372400 28800 0 ULAT} + {891100800 32400 1 ULAST} + {906822000 28800 0 ULAT} + {988394400 32400 1 ULAST} + {1001696400 28800 0 ULAT} + {1017424800 32400 1 ULAST} + {1033146000 28800 0 ULAT} + {1048874400 32400 1 ULAST} + {1064595600 28800 0 ULAT} + {1080324000 32400 1 ULAST} + {1096045200 28800 0 ULAT} + {1111773600 32400 1 ULAST} + {1127494800 28800 0 ULAT} + {1143223200 32400 1 ULAST} + {1159549200 28800 0 ULAT} +} diff --git a/library/tzdata/Asia/Ulan_Bator b/library/tzdata/Asia/Ulan_Bator index 3215ee7..dab5187 100644 --- a/library/tzdata/Asia/Ulan_Bator +++ b/library/tzdata/Asia/Ulan_Bator @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Ulaanbaatar)]} { - LoadTimeZoneFile Asia/Ulaanbaatar -} -set TZData(:Asia/Ulan_Bator) $TZData(:Asia/Ulaanbaatar) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Ulaanbaatar)]} { + LoadTimeZoneFile Asia/Ulaanbaatar +} +set TZData(:Asia/Ulan_Bator) $TZData(:Asia/Ulaanbaatar) diff --git a/library/tzdata/Asia/Urumqi b/library/tzdata/Asia/Urumqi index 93fc909..0e1af1e 100644 --- a/library/tzdata/Asia/Urumqi +++ b/library/tzdata/Asia/Urumqi @@ -1,19 +1,19 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Urumqi) { - {-9223372036854775808 21020 0 LMT} - {-1325483420 21600 0 URUT} - {325965600 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Urumqi) { + {-9223372036854775808 21020 0 LMT} + {-1325483420 21600 0 URUT} + {325965600 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Vientiane b/library/tzdata/Asia/Vientiane index 18ade4d..c98b69d 100644 --- a/library/tzdata/Asia/Vientiane +++ b/library/tzdata/Asia/Vientiane @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Vientiane) { - {-9223372036854775808 24624 0 LMT} - {-2005973424 25580 0 SMT} - {-1855983920 25200 0 ICT} - {-1819954800 28800 0 ICT} - {-1220428800 25200 0 ICT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Vientiane) { + {-9223372036854775808 24624 0 LMT} + {-2005973424 25580 0 SMT} + {-1855983920 25200 0 ICT} + {-1819954800 28800 0 ICT} + {-1220428800 25200 0 ICT} +} diff --git a/library/tzdata/Asia/Vladivostok b/library/tzdata/Asia/Vladivostok index 29e8f62..6c6148d 100644 --- a/library/tzdata/Asia/Vladivostok +++ b/library/tzdata/Asia/Vladivostok @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Vladivostok) { - {-9223372036854775808 31664 0 LMT} - {-1487321264 32400 0 VLAT} - {-1247562000 36000 0 VLAMMTT} - {354895200 39600 1 VLAST} - {370702800 36000 0 VLAT} - {386431200 39600 1 VLAST} - {402238800 36000 0 VLAT} - {417967200 39600 1 VLAST} - {433774800 36000 0 VLAT} - {449589600 39600 1 VLAST} - {465321600 36000 0 VLAT} - {481046400 39600 1 VLAST} - {496771200 36000 0 VLAT} - {512496000 39600 1 VLAST} - {528220800 36000 0 VLAT} - {543945600 39600 1 VLAST} - {559670400 36000 0 VLAT} - {575395200 39600 1 VLAST} - {591120000 36000 0 VLAT} - {606844800 39600 1 VLAST} - {622569600 36000 0 VLAT} - {638294400 39600 1 VLAST} - {654624000 36000 0 VLAT} - {670348800 32400 0 VLAMMTST} - {670352400 36000 1 VLASST} - {686077200 32400 0 VLAST} - {695754000 36000 0 VLAMMTT} - {701787600 39600 1 VLAST} - {717508800 36000 0 VLAT} - {733248000 39600 1 VLAST} - {748972800 36000 0 VLAT} - {764697600 39600 1 VLAST} - {780422400 36000 0 VLAT} - {796147200 39600 1 VLAST} - {811872000 36000 0 VLAT} - {828201600 39600 1 VLAST} - {846345600 36000 0 VLAT} - {859651200 39600 1 VLAST} - {877795200 36000 0 VLAT} - {891100800 39600 1 VLAST} - {909244800 36000 0 VLAT} - {922550400 39600 1 VLAST} - {941299200 36000 0 VLAT} - {954000000 39600 1 VLAST} - {972748800 36000 0 VLAT} - {985449600 39600 1 VLAST} - {1004198400 36000 0 VLAT} - {1017504000 39600 1 VLAST} - {1035648000 36000 0 VLAT} - {1048953600 39600 1 VLAST} - {1067097600 36000 0 VLAT} - {1080403200 39600 1 VLAST} - {1099152000 36000 0 VLAT} - {1111852800 39600 1 VLAST} - {1130601600 36000 0 VLAT} - {1143302400 39600 1 VLAST} - {1162051200 36000 0 VLAT} - {1174752000 39600 1 VLAST} - {1193500800 36000 0 VLAT} - {1206806400 39600 1 VLAST} - {1224950400 36000 0 VLAT} - {1238256000 39600 1 VLAST} - {1256400000 36000 0 VLAT} - {1269705600 39600 1 VLAST} - {1288454400 36000 0 VLAT} - {1301155200 39600 1 VLAST} - {1319904000 36000 0 VLAT} - {1332604800 39600 1 VLAST} - {1351353600 36000 0 VLAT} - {1364659200 39600 1 VLAST} - {1382803200 36000 0 VLAT} - {1396108800 39600 1 VLAST} - {1414252800 36000 0 VLAT} - {1427558400 39600 1 VLAST} - {1445702400 36000 0 VLAT} - {1459008000 39600 1 VLAST} - {1477756800 36000 0 VLAT} - {1490457600 39600 1 VLAST} - {1509206400 36000 0 VLAT} - {1521907200 39600 1 VLAST} - {1540656000 36000 0 VLAT} - {1553961600 39600 1 VLAST} - {1572105600 36000 0 VLAT} - {1585411200 39600 1 VLAST} - {1603555200 36000 0 VLAT} - {1616860800 39600 1 VLAST} - {1635609600 36000 0 VLAT} - {1648310400 39600 1 VLAST} - {1667059200 36000 0 VLAT} - {1679760000 39600 1 VLAST} - {1698508800 36000 0 VLAT} - {1711814400 39600 1 VLAST} - {1729958400 36000 0 VLAT} - {1743264000 39600 1 VLAST} - {1761408000 36000 0 VLAT} - {1774713600 39600 1 VLAST} - {1792857600 36000 0 VLAT} - {1806163200 39600 1 VLAST} - {1824912000 36000 0 VLAT} - {1837612800 39600 1 VLAST} - {1856361600 36000 0 VLAT} - {1869062400 39600 1 VLAST} - {1887811200 36000 0 VLAT} - {1901116800 39600 1 VLAST} - {1919260800 36000 0 VLAT} - {1932566400 39600 1 VLAST} - {1950710400 36000 0 VLAT} - {1964016000 39600 1 VLAST} - {1982764800 36000 0 VLAT} - {1995465600 39600 1 VLAST} - {2014214400 36000 0 VLAT} - {2026915200 39600 1 VLAST} - {2045664000 36000 0 VLAT} - {2058364800 39600 1 VLAST} - {2077113600 36000 0 VLAT} - {2090419200 39600 1 VLAST} - {2108563200 36000 0 VLAT} - {2121868800 39600 1 VLAST} - {2140012800 36000 0 VLAT} - {2153318400 39600 1 VLAST} - {2172067200 36000 0 VLAT} - {2184768000 39600 1 VLAST} - {2203516800 36000 0 VLAT} - {2216217600 39600 1 VLAST} - {2234966400 36000 0 VLAT} - {2248272000 39600 1 VLAST} - {2266416000 36000 0 VLAT} - {2279721600 39600 1 VLAST} - {2297865600 36000 0 VLAT} - {2311171200 39600 1 VLAST} - {2329315200 36000 0 VLAT} - {2342620800 39600 1 VLAST} - {2361369600 36000 0 VLAT} - {2374070400 39600 1 VLAST} - {2392819200 36000 0 VLAT} - {2405520000 39600 1 VLAST} - {2424268800 36000 0 VLAT} - {2437574400 39600 1 VLAST} - {2455718400 36000 0 VLAT} - {2469024000 39600 1 VLAST} - {2487168000 36000 0 VLAT} - {2500473600 39600 1 VLAST} - {2519222400 36000 0 VLAT} - {2531923200 39600 1 VLAST} - {2550672000 36000 0 VLAT} - {2563372800 39600 1 VLAST} - {2582121600 36000 0 VLAT} - {2595427200 39600 1 VLAST} - {2613571200 36000 0 VLAT} - {2626876800 39600 1 VLAST} - {2645020800 36000 0 VLAT} - {2658326400 39600 1 VLAST} - {2676470400 36000 0 VLAT} - {2689776000 39600 1 VLAST} - {2708524800 36000 0 VLAT} - {2721225600 39600 1 VLAST} - {2739974400 36000 0 VLAT} - {2752675200 39600 1 VLAST} - {2771424000 36000 0 VLAT} - {2784729600 39600 1 VLAST} - {2802873600 36000 0 VLAT} - {2816179200 39600 1 VLAST} - {2834323200 36000 0 VLAT} - {2847628800 39600 1 VLAST} - {2866377600 36000 0 VLAT} - {2879078400 39600 1 VLAST} - {2897827200 36000 0 VLAT} - {2910528000 39600 1 VLAST} - {2929276800 36000 0 VLAT} - {2941977600 39600 1 VLAST} - {2960726400 36000 0 VLAT} - {2974032000 39600 1 VLAST} - {2992176000 36000 0 VLAT} - {3005481600 39600 1 VLAST} - {3023625600 36000 0 VLAT} - {3036931200 39600 1 VLAST} - {3055680000 36000 0 VLAT} - {3068380800 39600 1 VLAST} - {3087129600 36000 0 VLAT} - {3099830400 39600 1 VLAST} - {3118579200 36000 0 VLAT} - {3131884800 39600 1 VLAST} - {3150028800 36000 0 VLAT} - {3163334400 39600 1 VLAST} - {3181478400 36000 0 VLAT} - {3194784000 39600 1 VLAST} - {3212928000 36000 0 VLAT} - {3226233600 39600 1 VLAST} - {3244982400 36000 0 VLAT} - {3257683200 39600 1 VLAST} - {3276432000 36000 0 VLAT} - {3289132800 39600 1 VLAST} - {3307881600 36000 0 VLAT} - {3321187200 39600 1 VLAST} - {3339331200 36000 0 VLAT} - {3352636800 39600 1 VLAST} - {3370780800 36000 0 VLAT} - {3384086400 39600 1 VLAST} - {3402835200 36000 0 VLAT} - {3415536000 39600 1 VLAST} - {3434284800 36000 0 VLAT} - {3446985600 39600 1 VLAST} - {3465734400 36000 0 VLAT} - {3479040000 39600 1 VLAST} - {3497184000 36000 0 VLAT} - {3510489600 39600 1 VLAST} - {3528633600 36000 0 VLAT} - {3541939200 39600 1 VLAST} - {3560083200 36000 0 VLAT} - {3573388800 39600 1 VLAST} - {3592137600 36000 0 VLAT} - {3604838400 39600 1 VLAST} - {3623587200 36000 0 VLAT} - {3636288000 39600 1 VLAST} - {3655036800 36000 0 VLAT} - {3668342400 39600 1 VLAST} - {3686486400 36000 0 VLAT} - {3699792000 39600 1 VLAST} - {3717936000 36000 0 VLAT} - {3731241600 39600 1 VLAST} - {3749990400 36000 0 VLAT} - {3762691200 39600 1 VLAST} - {3781440000 36000 0 VLAT} - {3794140800 39600 1 VLAST} - {3812889600 36000 0 VLAT} - {3825590400 39600 1 VLAST} - {3844339200 36000 0 VLAT} - {3857644800 39600 1 VLAST} - {3875788800 36000 0 VLAT} - {3889094400 39600 1 VLAST} - {3907238400 36000 0 VLAT} - {3920544000 39600 1 VLAST} - {3939292800 36000 0 VLAT} - {3951993600 39600 1 VLAST} - {3970742400 36000 0 VLAT} - {3983443200 39600 1 VLAST} - {4002192000 36000 0 VLAT} - {4015497600 39600 1 VLAST} - {4033641600 36000 0 VLAT} - {4046947200 39600 1 VLAST} - {4065091200 36000 0 VLAT} - {4078396800 39600 1 VLAST} - {4096540800 36000 0 VLAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Vladivostok) { + {-9223372036854775808 31664 0 LMT} + {-1487321264 32400 0 VLAT} + {-1247562000 36000 0 VLAMMTT} + {354895200 39600 1 VLAST} + {370702800 36000 0 VLAT} + {386431200 39600 1 VLAST} + {402238800 36000 0 VLAT} + {417967200 39600 1 VLAST} + {433774800 36000 0 VLAT} + {449589600 39600 1 VLAST} + {465321600 36000 0 VLAT} + {481046400 39600 1 VLAST} + {496771200 36000 0 VLAT} + {512496000 39600 1 VLAST} + {528220800 36000 0 VLAT} + {543945600 39600 1 VLAST} + {559670400 36000 0 VLAT} + {575395200 39600 1 VLAST} + {591120000 36000 0 VLAT} + {606844800 39600 1 VLAST} + {622569600 36000 0 VLAT} + {638294400 39600 1 VLAST} + {654624000 36000 0 VLAT} + {670348800 32400 0 VLAMMTST} + {670352400 36000 1 VLASST} + {686077200 32400 0 VLAST} + {695754000 36000 0 VLAMMTT} + {701787600 39600 1 VLAST} + {717508800 36000 0 VLAT} + {733248000 39600 1 VLAST} + {748972800 36000 0 VLAT} + {764697600 39600 1 VLAST} + {780422400 36000 0 VLAT} + {796147200 39600 1 VLAST} + {811872000 36000 0 VLAT} + {828201600 39600 1 VLAST} + {846345600 36000 0 VLAT} + {859651200 39600 1 VLAST} + {877795200 36000 0 VLAT} + {891100800 39600 1 VLAST} + {909244800 36000 0 VLAT} + {922550400 39600 1 VLAST} + {941299200 36000 0 VLAT} + {954000000 39600 1 VLAST} + {972748800 36000 0 VLAT} + {985449600 39600 1 VLAST} + {1004198400 36000 0 VLAT} + {1017504000 39600 1 VLAST} + {1035648000 36000 0 VLAT} + {1048953600 39600 1 VLAST} + {1067097600 36000 0 VLAT} + {1080403200 39600 1 VLAST} + {1099152000 36000 0 VLAT} + {1111852800 39600 1 VLAST} + {1130601600 36000 0 VLAT} + {1143302400 39600 1 VLAST} + {1162051200 36000 0 VLAT} + {1174752000 39600 1 VLAST} + {1193500800 36000 0 VLAT} + {1206806400 39600 1 VLAST} + {1224950400 36000 0 VLAT} + {1238256000 39600 1 VLAST} + {1256400000 36000 0 VLAT} + {1269705600 39600 1 VLAST} + {1288454400 36000 0 VLAT} + {1301155200 39600 1 VLAST} + {1319904000 36000 0 VLAT} + {1332604800 39600 1 VLAST} + {1351353600 36000 0 VLAT} + {1364659200 39600 1 VLAST} + {1382803200 36000 0 VLAT} + {1396108800 39600 1 VLAST} + {1414252800 36000 0 VLAT} + {1427558400 39600 1 VLAST} + {1445702400 36000 0 VLAT} + {1459008000 39600 1 VLAST} + {1477756800 36000 0 VLAT} + {1490457600 39600 1 VLAST} + {1509206400 36000 0 VLAT} + {1521907200 39600 1 VLAST} + {1540656000 36000 0 VLAT} + {1553961600 39600 1 VLAST} + {1572105600 36000 0 VLAT} + {1585411200 39600 1 VLAST} + {1603555200 36000 0 VLAT} + {1616860800 39600 1 VLAST} + {1635609600 36000 0 VLAT} + {1648310400 39600 1 VLAST} + {1667059200 36000 0 VLAT} + {1679760000 39600 1 VLAST} + {1698508800 36000 0 VLAT} + {1711814400 39600 1 VLAST} + {1729958400 36000 0 VLAT} + {1743264000 39600 1 VLAST} + {1761408000 36000 0 VLAT} + {1774713600 39600 1 VLAST} + {1792857600 36000 0 VLAT} + {1806163200 39600 1 VLAST} + {1824912000 36000 0 VLAT} + {1837612800 39600 1 VLAST} + {1856361600 36000 0 VLAT} + {1869062400 39600 1 VLAST} + {1887811200 36000 0 VLAT} + {1901116800 39600 1 VLAST} + {1919260800 36000 0 VLAT} + {1932566400 39600 1 VLAST} + {1950710400 36000 0 VLAT} + {1964016000 39600 1 VLAST} + {1982764800 36000 0 VLAT} + {1995465600 39600 1 VLAST} + {2014214400 36000 0 VLAT} + {2026915200 39600 1 VLAST} + {2045664000 36000 0 VLAT} + {2058364800 39600 1 VLAST} + {2077113600 36000 0 VLAT} + {2090419200 39600 1 VLAST} + {2108563200 36000 0 VLAT} + {2121868800 39600 1 VLAST} + {2140012800 36000 0 VLAT} + {2153318400 39600 1 VLAST} + {2172067200 36000 0 VLAT} + {2184768000 39600 1 VLAST} + {2203516800 36000 0 VLAT} + {2216217600 39600 1 VLAST} + {2234966400 36000 0 VLAT} + {2248272000 39600 1 VLAST} + {2266416000 36000 0 VLAT} + {2279721600 39600 1 VLAST} + {2297865600 36000 0 VLAT} + {2311171200 39600 1 VLAST} + {2329315200 36000 0 VLAT} + {2342620800 39600 1 VLAST} + {2361369600 36000 0 VLAT} + {2374070400 39600 1 VLAST} + {2392819200 36000 0 VLAT} + {2405520000 39600 1 VLAST} + {2424268800 36000 0 VLAT} + {2437574400 39600 1 VLAST} + {2455718400 36000 0 VLAT} + {2469024000 39600 1 VLAST} + {2487168000 36000 0 VLAT} + {2500473600 39600 1 VLAST} + {2519222400 36000 0 VLAT} + {2531923200 39600 1 VLAST} + {2550672000 36000 0 VLAT} + {2563372800 39600 1 VLAST} + {2582121600 36000 0 VLAT} + {2595427200 39600 1 VLAST} + {2613571200 36000 0 VLAT} + {2626876800 39600 1 VLAST} + {2645020800 36000 0 VLAT} + {2658326400 39600 1 VLAST} + {2676470400 36000 0 VLAT} + {2689776000 39600 1 VLAST} + {2708524800 36000 0 VLAT} + {2721225600 39600 1 VLAST} + {2739974400 36000 0 VLAT} + {2752675200 39600 1 VLAST} + {2771424000 36000 0 VLAT} + {2784729600 39600 1 VLAST} + {2802873600 36000 0 VLAT} + {2816179200 39600 1 VLAST} + {2834323200 36000 0 VLAT} + {2847628800 39600 1 VLAST} + {2866377600 36000 0 VLAT} + {2879078400 39600 1 VLAST} + {2897827200 36000 0 VLAT} + {2910528000 39600 1 VLAST} + {2929276800 36000 0 VLAT} + {2941977600 39600 1 VLAST} + {2960726400 36000 0 VLAT} + {2974032000 39600 1 VLAST} + {2992176000 36000 0 VLAT} + {3005481600 39600 1 VLAST} + {3023625600 36000 0 VLAT} + {3036931200 39600 1 VLAST} + {3055680000 36000 0 VLAT} + {3068380800 39600 1 VLAST} + {3087129600 36000 0 VLAT} + {3099830400 39600 1 VLAST} + {3118579200 36000 0 VLAT} + {3131884800 39600 1 VLAST} + {3150028800 36000 0 VLAT} + {3163334400 39600 1 VLAST} + {3181478400 36000 0 VLAT} + {3194784000 39600 1 VLAST} + {3212928000 36000 0 VLAT} + {3226233600 39600 1 VLAST} + {3244982400 36000 0 VLAT} + {3257683200 39600 1 VLAST} + {3276432000 36000 0 VLAT} + {3289132800 39600 1 VLAST} + {3307881600 36000 0 VLAT} + {3321187200 39600 1 VLAST} + {3339331200 36000 0 VLAT} + {3352636800 39600 1 VLAST} + {3370780800 36000 0 VLAT} + {3384086400 39600 1 VLAST} + {3402835200 36000 0 VLAT} + {3415536000 39600 1 VLAST} + {3434284800 36000 0 VLAT} + {3446985600 39600 1 VLAST} + {3465734400 36000 0 VLAT} + {3479040000 39600 1 VLAST} + {3497184000 36000 0 VLAT} + {3510489600 39600 1 VLAST} + {3528633600 36000 0 VLAT} + {3541939200 39600 1 VLAST} + {3560083200 36000 0 VLAT} + {3573388800 39600 1 VLAST} + {3592137600 36000 0 VLAT} + {3604838400 39600 1 VLAST} + {3623587200 36000 0 VLAT} + {3636288000 39600 1 VLAST} + {3655036800 36000 0 VLAT} + {3668342400 39600 1 VLAST} + {3686486400 36000 0 VLAT} + {3699792000 39600 1 VLAST} + {3717936000 36000 0 VLAT} + {3731241600 39600 1 VLAST} + {3749990400 36000 0 VLAT} + {3762691200 39600 1 VLAST} + {3781440000 36000 0 VLAT} + {3794140800 39600 1 VLAST} + {3812889600 36000 0 VLAT} + {3825590400 39600 1 VLAST} + {3844339200 36000 0 VLAT} + {3857644800 39600 1 VLAST} + {3875788800 36000 0 VLAT} + {3889094400 39600 1 VLAST} + {3907238400 36000 0 VLAT} + {3920544000 39600 1 VLAST} + {3939292800 36000 0 VLAT} + {3951993600 39600 1 VLAST} + {3970742400 36000 0 VLAT} + {3983443200 39600 1 VLAST} + {4002192000 36000 0 VLAT} + {4015497600 39600 1 VLAST} + {4033641600 36000 0 VLAT} + {4046947200 39600 1 VLAST} + {4065091200 36000 0 VLAT} + {4078396800 39600 1 VLAST} + {4096540800 36000 0 VLAT} +} diff --git a/library/tzdata/Asia/Yakutsk b/library/tzdata/Asia/Yakutsk index acf5d7d..5dfd344 100644 --- a/library/tzdata/Asia/Yakutsk +++ b/library/tzdata/Asia/Yakutsk @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Yakutsk) { - {-9223372036854775808 31120 0 LMT} - {-1579423120 28800 0 YAKT} - {-1247558400 32400 0 YAKMMTT} - {354898800 36000 1 YAKST} - {370706400 32400 0 YAKT} - {386434800 36000 1 YAKST} - {402242400 32400 0 YAKT} - {417970800 36000 1 YAKST} - {433778400 32400 0 YAKT} - {449593200 36000 1 YAKST} - {465325200 32400 0 YAKT} - {481050000 36000 1 YAKST} - {496774800 32400 0 YAKT} - {512499600 36000 1 YAKST} - {528224400 32400 0 YAKT} - {543949200 36000 1 YAKST} - {559674000 32400 0 YAKT} - {575398800 36000 1 YAKST} - {591123600 32400 0 YAKT} - {606848400 36000 1 YAKST} - {622573200 32400 0 YAKT} - {638298000 36000 1 YAKST} - {654627600 32400 0 YAKT} - {670352400 28800 0 YAKMMTT} - {670356000 32400 1 YAKST} - {686080800 28800 0 YAKT} - {695757600 32400 0 YAKMMTT} - {701791200 36000 1 YAKST} - {717512400 32400 0 YAKT} - {733251600 36000 1 YAKST} - {748976400 32400 0 YAKT} - {764701200 36000 1 YAKST} - {780426000 32400 0 YAKT} - {796150800 36000 1 YAKST} - {811875600 32400 0 YAKT} - {828205200 36000 1 YAKST} - {846349200 32400 0 YAKT} - {859654800 36000 1 YAKST} - {877798800 32400 0 YAKT} - {891104400 36000 1 YAKST} - {909248400 32400 0 YAKT} - {922554000 36000 1 YAKST} - {941302800 32400 0 YAKT} - {954003600 36000 1 YAKST} - {972752400 32400 0 YAKT} - {985453200 36000 1 YAKST} - {1004202000 32400 0 YAKT} - {1017507600 36000 1 YAKST} - {1035651600 32400 0 YAKT} - {1048957200 36000 1 YAKST} - {1067101200 32400 0 YAKT} - {1080406800 36000 1 YAKST} - {1099155600 32400 0 YAKT} - {1111856400 36000 1 YAKST} - {1130605200 32400 0 YAKT} - {1143306000 36000 1 YAKST} - {1162054800 32400 0 YAKT} - {1174755600 36000 1 YAKST} - {1193504400 32400 0 YAKT} - {1206810000 36000 1 YAKST} - {1224954000 32400 0 YAKT} - {1238259600 36000 1 YAKST} - {1256403600 32400 0 YAKT} - {1269709200 36000 1 YAKST} - {1288458000 32400 0 YAKT} - {1301158800 36000 1 YAKST} - {1319907600 32400 0 YAKT} - {1332608400 36000 1 YAKST} - {1351357200 32400 0 YAKT} - {1364662800 36000 1 YAKST} - {1382806800 32400 0 YAKT} - {1396112400 36000 1 YAKST} - {1414256400 32400 0 YAKT} - {1427562000 36000 1 YAKST} - {1445706000 32400 0 YAKT} - {1459011600 36000 1 YAKST} - {1477760400 32400 0 YAKT} - {1490461200 36000 1 YAKST} - {1509210000 32400 0 YAKT} - {1521910800 36000 1 YAKST} - {1540659600 32400 0 YAKT} - {1553965200 36000 1 YAKST} - {1572109200 32400 0 YAKT} - {1585414800 36000 1 YAKST} - {1603558800 32400 0 YAKT} - {1616864400 36000 1 YAKST} - {1635613200 32400 0 YAKT} - {1648314000 36000 1 YAKST} - {1667062800 32400 0 YAKT} - {1679763600 36000 1 YAKST} - {1698512400 32400 0 YAKT} - {1711818000 36000 1 YAKST} - {1729962000 32400 0 YAKT} - {1743267600 36000 1 YAKST} - {1761411600 32400 0 YAKT} - {1774717200 36000 1 YAKST} - {1792861200 32400 0 YAKT} - {1806166800 36000 1 YAKST} - {1824915600 32400 0 YAKT} - {1837616400 36000 1 YAKST} - {1856365200 32400 0 YAKT} - {1869066000 36000 1 YAKST} - {1887814800 32400 0 YAKT} - {1901120400 36000 1 YAKST} - {1919264400 32400 0 YAKT} - {1932570000 36000 1 YAKST} - {1950714000 32400 0 YAKT} - {1964019600 36000 1 YAKST} - {1982768400 32400 0 YAKT} - {1995469200 36000 1 YAKST} - {2014218000 32400 0 YAKT} - {2026918800 36000 1 YAKST} - {2045667600 32400 0 YAKT} - {2058368400 36000 1 YAKST} - {2077117200 32400 0 YAKT} - {2090422800 36000 1 YAKST} - {2108566800 32400 0 YAKT} - {2121872400 36000 1 YAKST} - {2140016400 32400 0 YAKT} - {2153322000 36000 1 YAKST} - {2172070800 32400 0 YAKT} - {2184771600 36000 1 YAKST} - {2203520400 32400 0 YAKT} - {2216221200 36000 1 YAKST} - {2234970000 32400 0 YAKT} - {2248275600 36000 1 YAKST} - {2266419600 32400 0 YAKT} - {2279725200 36000 1 YAKST} - {2297869200 32400 0 YAKT} - {2311174800 36000 1 YAKST} - {2329318800 32400 0 YAKT} - {2342624400 36000 1 YAKST} - {2361373200 32400 0 YAKT} - {2374074000 36000 1 YAKST} - {2392822800 32400 0 YAKT} - {2405523600 36000 1 YAKST} - {2424272400 32400 0 YAKT} - {2437578000 36000 1 YAKST} - {2455722000 32400 0 YAKT} - {2469027600 36000 1 YAKST} - {2487171600 32400 0 YAKT} - {2500477200 36000 1 YAKST} - {2519226000 32400 0 YAKT} - {2531926800 36000 1 YAKST} - {2550675600 32400 0 YAKT} - {2563376400 36000 1 YAKST} - {2582125200 32400 0 YAKT} - {2595430800 36000 1 YAKST} - {2613574800 32400 0 YAKT} - {2626880400 36000 1 YAKST} - {2645024400 32400 0 YAKT} - {2658330000 36000 1 YAKST} - {2676474000 32400 0 YAKT} - {2689779600 36000 1 YAKST} - {2708528400 32400 0 YAKT} - {2721229200 36000 1 YAKST} - {2739978000 32400 0 YAKT} - {2752678800 36000 1 YAKST} - {2771427600 32400 0 YAKT} - {2784733200 36000 1 YAKST} - {2802877200 32400 0 YAKT} - {2816182800 36000 1 YAKST} - {2834326800 32400 0 YAKT} - {2847632400 36000 1 YAKST} - {2866381200 32400 0 YAKT} - {2879082000 36000 1 YAKST} - {2897830800 32400 0 YAKT} - {2910531600 36000 1 YAKST} - {2929280400 32400 0 YAKT} - {2941981200 36000 1 YAKST} - {2960730000 32400 0 YAKT} - {2974035600 36000 1 YAKST} - {2992179600 32400 0 YAKT} - {3005485200 36000 1 YAKST} - {3023629200 32400 0 YAKT} - {3036934800 36000 1 YAKST} - {3055683600 32400 0 YAKT} - {3068384400 36000 1 YAKST} - {3087133200 32400 0 YAKT} - {3099834000 36000 1 YAKST} - {3118582800 32400 0 YAKT} - {3131888400 36000 1 YAKST} - {3150032400 32400 0 YAKT} - {3163338000 36000 1 YAKST} - {3181482000 32400 0 YAKT} - {3194787600 36000 1 YAKST} - {3212931600 32400 0 YAKT} - {3226237200 36000 1 YAKST} - {3244986000 32400 0 YAKT} - {3257686800 36000 1 YAKST} - {3276435600 32400 0 YAKT} - {3289136400 36000 1 YAKST} - {3307885200 32400 0 YAKT} - {3321190800 36000 1 YAKST} - {3339334800 32400 0 YAKT} - {3352640400 36000 1 YAKST} - {3370784400 32400 0 YAKT} - {3384090000 36000 1 YAKST} - {3402838800 32400 0 YAKT} - {3415539600 36000 1 YAKST} - {3434288400 32400 0 YAKT} - {3446989200 36000 1 YAKST} - {3465738000 32400 0 YAKT} - {3479043600 36000 1 YAKST} - {3497187600 32400 0 YAKT} - {3510493200 36000 1 YAKST} - {3528637200 32400 0 YAKT} - {3541942800 36000 1 YAKST} - {3560086800 32400 0 YAKT} - {3573392400 36000 1 YAKST} - {3592141200 32400 0 YAKT} - {3604842000 36000 1 YAKST} - {3623590800 32400 0 YAKT} - {3636291600 36000 1 YAKST} - {3655040400 32400 0 YAKT} - {3668346000 36000 1 YAKST} - {3686490000 32400 0 YAKT} - {3699795600 36000 1 YAKST} - {3717939600 32400 0 YAKT} - {3731245200 36000 1 YAKST} - {3749994000 32400 0 YAKT} - {3762694800 36000 1 YAKST} - {3781443600 32400 0 YAKT} - {3794144400 36000 1 YAKST} - {3812893200 32400 0 YAKT} - {3825594000 36000 1 YAKST} - {3844342800 32400 0 YAKT} - {3857648400 36000 1 YAKST} - {3875792400 32400 0 YAKT} - {3889098000 36000 1 YAKST} - {3907242000 32400 0 YAKT} - {3920547600 36000 1 YAKST} - {3939296400 32400 0 YAKT} - {3951997200 36000 1 YAKST} - {3970746000 32400 0 YAKT} - {3983446800 36000 1 YAKST} - {4002195600 32400 0 YAKT} - {4015501200 36000 1 YAKST} - {4033645200 32400 0 YAKT} - {4046950800 36000 1 YAKST} - {4065094800 32400 0 YAKT} - {4078400400 36000 1 YAKST} - {4096544400 32400 0 YAKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Yakutsk) { + {-9223372036854775808 31120 0 LMT} + {-1579423120 28800 0 YAKT} + {-1247558400 32400 0 YAKMMTT} + {354898800 36000 1 YAKST} + {370706400 32400 0 YAKT} + {386434800 36000 1 YAKST} + {402242400 32400 0 YAKT} + {417970800 36000 1 YAKST} + {433778400 32400 0 YAKT} + {449593200 36000 1 YAKST} + {465325200 32400 0 YAKT} + {481050000 36000 1 YAKST} + {496774800 32400 0 YAKT} + {512499600 36000 1 YAKST} + {528224400 32400 0 YAKT} + {543949200 36000 1 YAKST} + {559674000 32400 0 YAKT} + {575398800 36000 1 YAKST} + {591123600 32400 0 YAKT} + {606848400 36000 1 YAKST} + {622573200 32400 0 YAKT} + {638298000 36000 1 YAKST} + {654627600 32400 0 YAKT} + {670352400 28800 0 YAKMMTT} + {670356000 32400 1 YAKST} + {686080800 28800 0 YAKT} + {695757600 32400 0 YAKMMTT} + {701791200 36000 1 YAKST} + {717512400 32400 0 YAKT} + {733251600 36000 1 YAKST} + {748976400 32400 0 YAKT} + {764701200 36000 1 YAKST} + {780426000 32400 0 YAKT} + {796150800 36000 1 YAKST} + {811875600 32400 0 YAKT} + {828205200 36000 1 YAKST} + {846349200 32400 0 YAKT} + {859654800 36000 1 YAKST} + {877798800 32400 0 YAKT} + {891104400 36000 1 YAKST} + {909248400 32400 0 YAKT} + {922554000 36000 1 YAKST} + {941302800 32400 0 YAKT} + {954003600 36000 1 YAKST} + {972752400 32400 0 YAKT} + {985453200 36000 1 YAKST} + {1004202000 32400 0 YAKT} + {1017507600 36000 1 YAKST} + {1035651600 32400 0 YAKT} + {1048957200 36000 1 YAKST} + {1067101200 32400 0 YAKT} + {1080406800 36000 1 YAKST} + {1099155600 32400 0 YAKT} + {1111856400 36000 1 YAKST} + {1130605200 32400 0 YAKT} + {1143306000 36000 1 YAKST} + {1162054800 32400 0 YAKT} + {1174755600 36000 1 YAKST} + {1193504400 32400 0 YAKT} + {1206810000 36000 1 YAKST} + {1224954000 32400 0 YAKT} + {1238259600 36000 1 YAKST} + {1256403600 32400 0 YAKT} + {1269709200 36000 1 YAKST} + {1288458000 32400 0 YAKT} + {1301158800 36000 1 YAKST} + {1319907600 32400 0 YAKT} + {1332608400 36000 1 YAKST} + {1351357200 32400 0 YAKT} + {1364662800 36000 1 YAKST} + {1382806800 32400 0 YAKT} + {1396112400 36000 1 YAKST} + {1414256400 32400 0 YAKT} + {1427562000 36000 1 YAKST} + {1445706000 32400 0 YAKT} + {1459011600 36000 1 YAKST} + {1477760400 32400 0 YAKT} + {1490461200 36000 1 YAKST} + {1509210000 32400 0 YAKT} + {1521910800 36000 1 YAKST} + {1540659600 32400 0 YAKT} + {1553965200 36000 1 YAKST} + {1572109200 32400 0 YAKT} + {1585414800 36000 1 YAKST} + {1603558800 32400 0 YAKT} + {1616864400 36000 1 YAKST} + {1635613200 32400 0 YAKT} + {1648314000 36000 1 YAKST} + {1667062800 32400 0 YAKT} + {1679763600 36000 1 YAKST} + {1698512400 32400 0 YAKT} + {1711818000 36000 1 YAKST} + {1729962000 32400 0 YAKT} + {1743267600 36000 1 YAKST} + {1761411600 32400 0 YAKT} + {1774717200 36000 1 YAKST} + {1792861200 32400 0 YAKT} + {1806166800 36000 1 YAKST} + {1824915600 32400 0 YAKT} + {1837616400 36000 1 YAKST} + {1856365200 32400 0 YAKT} + {1869066000 36000 1 YAKST} + {1887814800 32400 0 YAKT} + {1901120400 36000 1 YAKST} + {1919264400 32400 0 YAKT} + {1932570000 36000 1 YAKST} + {1950714000 32400 0 YAKT} + {1964019600 36000 1 YAKST} + {1982768400 32400 0 YAKT} + {1995469200 36000 1 YAKST} + {2014218000 32400 0 YAKT} + {2026918800 36000 1 YAKST} + {2045667600 32400 0 YAKT} + {2058368400 36000 1 YAKST} + {2077117200 32400 0 YAKT} + {2090422800 36000 1 YAKST} + {2108566800 32400 0 YAKT} + {2121872400 36000 1 YAKST} + {2140016400 32400 0 YAKT} + {2153322000 36000 1 YAKST} + {2172070800 32400 0 YAKT} + {2184771600 36000 1 YAKST} + {2203520400 32400 0 YAKT} + {2216221200 36000 1 YAKST} + {2234970000 32400 0 YAKT} + {2248275600 36000 1 YAKST} + {2266419600 32400 0 YAKT} + {2279725200 36000 1 YAKST} + {2297869200 32400 0 YAKT} + {2311174800 36000 1 YAKST} + {2329318800 32400 0 YAKT} + {2342624400 36000 1 YAKST} + {2361373200 32400 0 YAKT} + {2374074000 36000 1 YAKST} + {2392822800 32400 0 YAKT} + {2405523600 36000 1 YAKST} + {2424272400 32400 0 YAKT} + {2437578000 36000 1 YAKST} + {2455722000 32400 0 YAKT} + {2469027600 36000 1 YAKST} + {2487171600 32400 0 YAKT} + {2500477200 36000 1 YAKST} + {2519226000 32400 0 YAKT} + {2531926800 36000 1 YAKST} + {2550675600 32400 0 YAKT} + {2563376400 36000 1 YAKST} + {2582125200 32400 0 YAKT} + {2595430800 36000 1 YAKST} + {2613574800 32400 0 YAKT} + {2626880400 36000 1 YAKST} + {2645024400 32400 0 YAKT} + {2658330000 36000 1 YAKST} + {2676474000 32400 0 YAKT} + {2689779600 36000 1 YAKST} + {2708528400 32400 0 YAKT} + {2721229200 36000 1 YAKST} + {2739978000 32400 0 YAKT} + {2752678800 36000 1 YAKST} + {2771427600 32400 0 YAKT} + {2784733200 36000 1 YAKST} + {2802877200 32400 0 YAKT} + {2816182800 36000 1 YAKST} + {2834326800 32400 0 YAKT} + {2847632400 36000 1 YAKST} + {2866381200 32400 0 YAKT} + {2879082000 36000 1 YAKST} + {2897830800 32400 0 YAKT} + {2910531600 36000 1 YAKST} + {2929280400 32400 0 YAKT} + {2941981200 36000 1 YAKST} + {2960730000 32400 0 YAKT} + {2974035600 36000 1 YAKST} + {2992179600 32400 0 YAKT} + {3005485200 36000 1 YAKST} + {3023629200 32400 0 YAKT} + {3036934800 36000 1 YAKST} + {3055683600 32400 0 YAKT} + {3068384400 36000 1 YAKST} + {3087133200 32400 0 YAKT} + {3099834000 36000 1 YAKST} + {3118582800 32400 0 YAKT} + {3131888400 36000 1 YAKST} + {3150032400 32400 0 YAKT} + {3163338000 36000 1 YAKST} + {3181482000 32400 0 YAKT} + {3194787600 36000 1 YAKST} + {3212931600 32400 0 YAKT} + {3226237200 36000 1 YAKST} + {3244986000 32400 0 YAKT} + {3257686800 36000 1 YAKST} + {3276435600 32400 0 YAKT} + {3289136400 36000 1 YAKST} + {3307885200 32400 0 YAKT} + {3321190800 36000 1 YAKST} + {3339334800 32400 0 YAKT} + {3352640400 36000 1 YAKST} + {3370784400 32400 0 YAKT} + {3384090000 36000 1 YAKST} + {3402838800 32400 0 YAKT} + {3415539600 36000 1 YAKST} + {3434288400 32400 0 YAKT} + {3446989200 36000 1 YAKST} + {3465738000 32400 0 YAKT} + {3479043600 36000 1 YAKST} + {3497187600 32400 0 YAKT} + {3510493200 36000 1 YAKST} + {3528637200 32400 0 YAKT} + {3541942800 36000 1 YAKST} + {3560086800 32400 0 YAKT} + {3573392400 36000 1 YAKST} + {3592141200 32400 0 YAKT} + {3604842000 36000 1 YAKST} + {3623590800 32400 0 YAKT} + {3636291600 36000 1 YAKST} + {3655040400 32400 0 YAKT} + {3668346000 36000 1 YAKST} + {3686490000 32400 0 YAKT} + {3699795600 36000 1 YAKST} + {3717939600 32400 0 YAKT} + {3731245200 36000 1 YAKST} + {3749994000 32400 0 YAKT} + {3762694800 36000 1 YAKST} + {3781443600 32400 0 YAKT} + {3794144400 36000 1 YAKST} + {3812893200 32400 0 YAKT} + {3825594000 36000 1 YAKST} + {3844342800 32400 0 YAKT} + {3857648400 36000 1 YAKST} + {3875792400 32400 0 YAKT} + {3889098000 36000 1 YAKST} + {3907242000 32400 0 YAKT} + {3920547600 36000 1 YAKST} + {3939296400 32400 0 YAKT} + {3951997200 36000 1 YAKST} + {3970746000 32400 0 YAKT} + {3983446800 36000 1 YAKST} + {4002195600 32400 0 YAKT} + {4015501200 36000 1 YAKST} + {4033645200 32400 0 YAKT} + {4046950800 36000 1 YAKST} + {4065094800 32400 0 YAKT} + {4078400400 36000 1 YAKST} + {4096544400 32400 0 YAKT} +} diff --git a/library/tzdata/Asia/Yekaterinburg b/library/tzdata/Asia/Yekaterinburg index 980f903..142ed0d 100644 --- a/library/tzdata/Asia/Yekaterinburg +++ b/library/tzdata/Asia/Yekaterinburg @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Yekaterinburg) { - {-9223372036854775808 14544 0 LMT} - {-1592611344 14400 0 SVET} - {-1247544000 18000 0 SVEMMTT} - {354913200 21600 1 SVEST} - {370720800 18000 0 SVET} - {386449200 21600 1 SVEST} - {402256800 18000 0 SVET} - {417985200 21600 1 SVEST} - {433792800 18000 0 SVET} - {449607600 21600 1 SVEST} - {465339600 18000 0 SVET} - {481064400 21600 1 SVEST} - {496789200 18000 0 SVET} - {512514000 21600 1 SVEST} - {528238800 18000 0 SVET} - {543963600 21600 1 SVEST} - {559688400 18000 0 SVET} - {575413200 21600 1 SVEST} - {591138000 18000 0 SVET} - {606862800 21600 1 SVEST} - {622587600 18000 0 SVET} - {638312400 21600 1 SVEST} - {654642000 18000 0 SVET} - {670366800 14400 0 SVEMMTT} - {670370400 18000 1 SVEST} - {686095200 14400 0 SVET} - {695772000 18000 0 YEKMMTT} - {701805600 21600 1 YEKST} - {717526800 18000 0 YEKT} - {733266000 21600 1 YEKST} - {748990800 18000 0 YEKT} - {764715600 21600 1 YEKST} - {780440400 18000 0 YEKT} - {796165200 21600 1 YEKST} - {811890000 18000 0 YEKT} - {828219600 21600 1 YEKST} - {846363600 18000 0 YEKT} - {859669200 21600 1 YEKST} - {877813200 18000 0 YEKT} - {891118800 21600 1 YEKST} - {909262800 18000 0 YEKT} - {922568400 21600 1 YEKST} - {941317200 18000 0 YEKT} - {954018000 21600 1 YEKST} - {972766800 18000 0 YEKT} - {985467600 21600 1 YEKST} - {1004216400 18000 0 YEKT} - {1017522000 21600 1 YEKST} - {1035666000 18000 0 YEKT} - {1048971600 21600 1 YEKST} - {1067115600 18000 0 YEKT} - {1080421200 21600 1 YEKST} - {1099170000 18000 0 YEKT} - {1111870800 21600 1 YEKST} - {1130619600 18000 0 YEKT} - {1143320400 21600 1 YEKST} - {1162069200 18000 0 YEKT} - {1174770000 21600 1 YEKST} - {1193518800 18000 0 YEKT} - {1206824400 21600 1 YEKST} - {1224968400 18000 0 YEKT} - {1238274000 21600 1 YEKST} - {1256418000 18000 0 YEKT} - {1269723600 21600 1 YEKST} - {1288472400 18000 0 YEKT} - {1301173200 21600 1 YEKST} - {1319922000 18000 0 YEKT} - {1332622800 21600 1 YEKST} - {1351371600 18000 0 YEKT} - {1364677200 21600 1 YEKST} - {1382821200 18000 0 YEKT} - {1396126800 21600 1 YEKST} - {1414270800 18000 0 YEKT} - {1427576400 21600 1 YEKST} - {1445720400 18000 0 YEKT} - {1459026000 21600 1 YEKST} - {1477774800 18000 0 YEKT} - {1490475600 21600 1 YEKST} - {1509224400 18000 0 YEKT} - {1521925200 21600 1 YEKST} - {1540674000 18000 0 YEKT} - {1553979600 21600 1 YEKST} - {1572123600 18000 0 YEKT} - {1585429200 21600 1 YEKST} - {1603573200 18000 0 YEKT} - {1616878800 21600 1 YEKST} - {1635627600 18000 0 YEKT} - {1648328400 21600 1 YEKST} - {1667077200 18000 0 YEKT} - {1679778000 21600 1 YEKST} - {1698526800 18000 0 YEKT} - {1711832400 21600 1 YEKST} - {1729976400 18000 0 YEKT} - {1743282000 21600 1 YEKST} - {1761426000 18000 0 YEKT} - {1774731600 21600 1 YEKST} - {1792875600 18000 0 YEKT} - {1806181200 21600 1 YEKST} - {1824930000 18000 0 YEKT} - {1837630800 21600 1 YEKST} - {1856379600 18000 0 YEKT} - {1869080400 21600 1 YEKST} - {1887829200 18000 0 YEKT} - {1901134800 21600 1 YEKST} - {1919278800 18000 0 YEKT} - {1932584400 21600 1 YEKST} - {1950728400 18000 0 YEKT} - {1964034000 21600 1 YEKST} - {1982782800 18000 0 YEKT} - {1995483600 21600 1 YEKST} - {2014232400 18000 0 YEKT} - {2026933200 21600 1 YEKST} - {2045682000 18000 0 YEKT} - {2058382800 21600 1 YEKST} - {2077131600 18000 0 YEKT} - {2090437200 21600 1 YEKST} - {2108581200 18000 0 YEKT} - {2121886800 21600 1 YEKST} - {2140030800 18000 0 YEKT} - {2153336400 21600 1 YEKST} - {2172085200 18000 0 YEKT} - {2184786000 21600 1 YEKST} - {2203534800 18000 0 YEKT} - {2216235600 21600 1 YEKST} - {2234984400 18000 0 YEKT} - {2248290000 21600 1 YEKST} - {2266434000 18000 0 YEKT} - {2279739600 21600 1 YEKST} - {2297883600 18000 0 YEKT} - {2311189200 21600 1 YEKST} - {2329333200 18000 0 YEKT} - {2342638800 21600 1 YEKST} - {2361387600 18000 0 YEKT} - {2374088400 21600 1 YEKST} - {2392837200 18000 0 YEKT} - {2405538000 21600 1 YEKST} - {2424286800 18000 0 YEKT} - {2437592400 21600 1 YEKST} - {2455736400 18000 0 YEKT} - {2469042000 21600 1 YEKST} - {2487186000 18000 0 YEKT} - {2500491600 21600 1 YEKST} - {2519240400 18000 0 YEKT} - {2531941200 21600 1 YEKST} - {2550690000 18000 0 YEKT} - {2563390800 21600 1 YEKST} - {2582139600 18000 0 YEKT} - {2595445200 21600 1 YEKST} - {2613589200 18000 0 YEKT} - {2626894800 21600 1 YEKST} - {2645038800 18000 0 YEKT} - {2658344400 21600 1 YEKST} - {2676488400 18000 0 YEKT} - {2689794000 21600 1 YEKST} - {2708542800 18000 0 YEKT} - {2721243600 21600 1 YEKST} - {2739992400 18000 0 YEKT} - {2752693200 21600 1 YEKST} - {2771442000 18000 0 YEKT} - {2784747600 21600 1 YEKST} - {2802891600 18000 0 YEKT} - {2816197200 21600 1 YEKST} - {2834341200 18000 0 YEKT} - {2847646800 21600 1 YEKST} - {2866395600 18000 0 YEKT} - {2879096400 21600 1 YEKST} - {2897845200 18000 0 YEKT} - {2910546000 21600 1 YEKST} - {2929294800 18000 0 YEKT} - {2941995600 21600 1 YEKST} - {2960744400 18000 0 YEKT} - {2974050000 21600 1 YEKST} - {2992194000 18000 0 YEKT} - {3005499600 21600 1 YEKST} - {3023643600 18000 0 YEKT} - {3036949200 21600 1 YEKST} - {3055698000 18000 0 YEKT} - {3068398800 21600 1 YEKST} - {3087147600 18000 0 YEKT} - {3099848400 21600 1 YEKST} - {3118597200 18000 0 YEKT} - {3131902800 21600 1 YEKST} - {3150046800 18000 0 YEKT} - {3163352400 21600 1 YEKST} - {3181496400 18000 0 YEKT} - {3194802000 21600 1 YEKST} - {3212946000 18000 0 YEKT} - {3226251600 21600 1 YEKST} - {3245000400 18000 0 YEKT} - {3257701200 21600 1 YEKST} - {3276450000 18000 0 YEKT} - {3289150800 21600 1 YEKST} - {3307899600 18000 0 YEKT} - {3321205200 21600 1 YEKST} - {3339349200 18000 0 YEKT} - {3352654800 21600 1 YEKST} - {3370798800 18000 0 YEKT} - {3384104400 21600 1 YEKST} - {3402853200 18000 0 YEKT} - {3415554000 21600 1 YEKST} - {3434302800 18000 0 YEKT} - {3447003600 21600 1 YEKST} - {3465752400 18000 0 YEKT} - {3479058000 21600 1 YEKST} - {3497202000 18000 0 YEKT} - {3510507600 21600 1 YEKST} - {3528651600 18000 0 YEKT} - {3541957200 21600 1 YEKST} - {3560101200 18000 0 YEKT} - {3573406800 21600 1 YEKST} - {3592155600 18000 0 YEKT} - {3604856400 21600 1 YEKST} - {3623605200 18000 0 YEKT} - {3636306000 21600 1 YEKST} - {3655054800 18000 0 YEKT} - {3668360400 21600 1 YEKST} - {3686504400 18000 0 YEKT} - {3699810000 21600 1 YEKST} - {3717954000 18000 0 YEKT} - {3731259600 21600 1 YEKST} - {3750008400 18000 0 YEKT} - {3762709200 21600 1 YEKST} - {3781458000 18000 0 YEKT} - {3794158800 21600 1 YEKST} - {3812907600 18000 0 YEKT} - {3825608400 21600 1 YEKST} - {3844357200 18000 0 YEKT} - {3857662800 21600 1 YEKST} - {3875806800 18000 0 YEKT} - {3889112400 21600 1 YEKST} - {3907256400 18000 0 YEKT} - {3920562000 21600 1 YEKST} - {3939310800 18000 0 YEKT} - {3952011600 21600 1 YEKST} - {3970760400 18000 0 YEKT} - {3983461200 21600 1 YEKST} - {4002210000 18000 0 YEKT} - {4015515600 21600 1 YEKST} - {4033659600 18000 0 YEKT} - {4046965200 21600 1 YEKST} - {4065109200 18000 0 YEKT} - {4078414800 21600 1 YEKST} - {4096558800 18000 0 YEKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Yekaterinburg) { + {-9223372036854775808 14544 0 LMT} + {-1592611344 14400 0 SVET} + {-1247544000 18000 0 SVEMMTT} + {354913200 21600 1 SVEST} + {370720800 18000 0 SVET} + {386449200 21600 1 SVEST} + {402256800 18000 0 SVET} + {417985200 21600 1 SVEST} + {433792800 18000 0 SVET} + {449607600 21600 1 SVEST} + {465339600 18000 0 SVET} + {481064400 21600 1 SVEST} + {496789200 18000 0 SVET} + {512514000 21600 1 SVEST} + {528238800 18000 0 SVET} + {543963600 21600 1 SVEST} + {559688400 18000 0 SVET} + {575413200 21600 1 SVEST} + {591138000 18000 0 SVET} + {606862800 21600 1 SVEST} + {622587600 18000 0 SVET} + {638312400 21600 1 SVEST} + {654642000 18000 0 SVET} + {670366800 14400 0 SVEMMTT} + {670370400 18000 1 SVEST} + {686095200 14400 0 SVET} + {695772000 18000 0 YEKMMTT} + {701805600 21600 1 YEKST} + {717526800 18000 0 YEKT} + {733266000 21600 1 YEKST} + {748990800 18000 0 YEKT} + {764715600 21600 1 YEKST} + {780440400 18000 0 YEKT} + {796165200 21600 1 YEKST} + {811890000 18000 0 YEKT} + {828219600 21600 1 YEKST} + {846363600 18000 0 YEKT} + {859669200 21600 1 YEKST} + {877813200 18000 0 YEKT} + {891118800 21600 1 YEKST} + {909262800 18000 0 YEKT} + {922568400 21600 1 YEKST} + {941317200 18000 0 YEKT} + {954018000 21600 1 YEKST} + {972766800 18000 0 YEKT} + {985467600 21600 1 YEKST} + {1004216400 18000 0 YEKT} + {1017522000 21600 1 YEKST} + {1035666000 18000 0 YEKT} + {1048971600 21600 1 YEKST} + {1067115600 18000 0 YEKT} + {1080421200 21600 1 YEKST} + {1099170000 18000 0 YEKT} + {1111870800 21600 1 YEKST} + {1130619600 18000 0 YEKT} + {1143320400 21600 1 YEKST} + {1162069200 18000 0 YEKT} + {1174770000 21600 1 YEKST} + {1193518800 18000 0 YEKT} + {1206824400 21600 1 YEKST} + {1224968400 18000 0 YEKT} + {1238274000 21600 1 YEKST} + {1256418000 18000 0 YEKT} + {1269723600 21600 1 YEKST} + {1288472400 18000 0 YEKT} + {1301173200 21600 1 YEKST} + {1319922000 18000 0 YEKT} + {1332622800 21600 1 YEKST} + {1351371600 18000 0 YEKT} + {1364677200 21600 1 YEKST} + {1382821200 18000 0 YEKT} + {1396126800 21600 1 YEKST} + {1414270800 18000 0 YEKT} + {1427576400 21600 1 YEKST} + {1445720400 18000 0 YEKT} + {1459026000 21600 1 YEKST} + {1477774800 18000 0 YEKT} + {1490475600 21600 1 YEKST} + {1509224400 18000 0 YEKT} + {1521925200 21600 1 YEKST} + {1540674000 18000 0 YEKT} + {1553979600 21600 1 YEKST} + {1572123600 18000 0 YEKT} + {1585429200 21600 1 YEKST} + {1603573200 18000 0 YEKT} + {1616878800 21600 1 YEKST} + {1635627600 18000 0 YEKT} + {1648328400 21600 1 YEKST} + {1667077200 18000 0 YEKT} + {1679778000 21600 1 YEKST} + {1698526800 18000 0 YEKT} + {1711832400 21600 1 YEKST} + {1729976400 18000 0 YEKT} + {1743282000 21600 1 YEKST} + {1761426000 18000 0 YEKT} + {1774731600 21600 1 YEKST} + {1792875600 18000 0 YEKT} + {1806181200 21600 1 YEKST} + {1824930000 18000 0 YEKT} + {1837630800 21600 1 YEKST} + {1856379600 18000 0 YEKT} + {1869080400 21600 1 YEKST} + {1887829200 18000 0 YEKT} + {1901134800 21600 1 YEKST} + {1919278800 18000 0 YEKT} + {1932584400 21600 1 YEKST} + {1950728400 18000 0 YEKT} + {1964034000 21600 1 YEKST} + {1982782800 18000 0 YEKT} + {1995483600 21600 1 YEKST} + {2014232400 18000 0 YEKT} + {2026933200 21600 1 YEKST} + {2045682000 18000 0 YEKT} + {2058382800 21600 1 YEKST} + {2077131600 18000 0 YEKT} + {2090437200 21600 1 YEKST} + {2108581200 18000 0 YEKT} + {2121886800 21600 1 YEKST} + {2140030800 18000 0 YEKT} + {2153336400 21600 1 YEKST} + {2172085200 18000 0 YEKT} + {2184786000 21600 1 YEKST} + {2203534800 18000 0 YEKT} + {2216235600 21600 1 YEKST} + {2234984400 18000 0 YEKT} + {2248290000 21600 1 YEKST} + {2266434000 18000 0 YEKT} + {2279739600 21600 1 YEKST} + {2297883600 18000 0 YEKT} + {2311189200 21600 1 YEKST} + {2329333200 18000 0 YEKT} + {2342638800 21600 1 YEKST} + {2361387600 18000 0 YEKT} + {2374088400 21600 1 YEKST} + {2392837200 18000 0 YEKT} + {2405538000 21600 1 YEKST} + {2424286800 18000 0 YEKT} + {2437592400 21600 1 YEKST} + {2455736400 18000 0 YEKT} + {2469042000 21600 1 YEKST} + {2487186000 18000 0 YEKT} + {2500491600 21600 1 YEKST} + {2519240400 18000 0 YEKT} + {2531941200 21600 1 YEKST} + {2550690000 18000 0 YEKT} + {2563390800 21600 1 YEKST} + {2582139600 18000 0 YEKT} + {2595445200 21600 1 YEKST} + {2613589200 18000 0 YEKT} + {2626894800 21600 1 YEKST} + {2645038800 18000 0 YEKT} + {2658344400 21600 1 YEKST} + {2676488400 18000 0 YEKT} + {2689794000 21600 1 YEKST} + {2708542800 18000 0 YEKT} + {2721243600 21600 1 YEKST} + {2739992400 18000 0 YEKT} + {2752693200 21600 1 YEKST} + {2771442000 18000 0 YEKT} + {2784747600 21600 1 YEKST} + {2802891600 18000 0 YEKT} + {2816197200 21600 1 YEKST} + {2834341200 18000 0 YEKT} + {2847646800 21600 1 YEKST} + {2866395600 18000 0 YEKT} + {2879096400 21600 1 YEKST} + {2897845200 18000 0 YEKT} + {2910546000 21600 1 YEKST} + {2929294800 18000 0 YEKT} + {2941995600 21600 1 YEKST} + {2960744400 18000 0 YEKT} + {2974050000 21600 1 YEKST} + {2992194000 18000 0 YEKT} + {3005499600 21600 1 YEKST} + {3023643600 18000 0 YEKT} + {3036949200 21600 1 YEKST} + {3055698000 18000 0 YEKT} + {3068398800 21600 1 YEKST} + {3087147600 18000 0 YEKT} + {3099848400 21600 1 YEKST} + {3118597200 18000 0 YEKT} + {3131902800 21600 1 YEKST} + {3150046800 18000 0 YEKT} + {3163352400 21600 1 YEKST} + {3181496400 18000 0 YEKT} + {3194802000 21600 1 YEKST} + {3212946000 18000 0 YEKT} + {3226251600 21600 1 YEKST} + {3245000400 18000 0 YEKT} + {3257701200 21600 1 YEKST} + {3276450000 18000 0 YEKT} + {3289150800 21600 1 YEKST} + {3307899600 18000 0 YEKT} + {3321205200 21600 1 YEKST} + {3339349200 18000 0 YEKT} + {3352654800 21600 1 YEKST} + {3370798800 18000 0 YEKT} + {3384104400 21600 1 YEKST} + {3402853200 18000 0 YEKT} + {3415554000 21600 1 YEKST} + {3434302800 18000 0 YEKT} + {3447003600 21600 1 YEKST} + {3465752400 18000 0 YEKT} + {3479058000 21600 1 YEKST} + {3497202000 18000 0 YEKT} + {3510507600 21600 1 YEKST} + {3528651600 18000 0 YEKT} + {3541957200 21600 1 YEKST} + {3560101200 18000 0 YEKT} + {3573406800 21600 1 YEKST} + {3592155600 18000 0 YEKT} + {3604856400 21600 1 YEKST} + {3623605200 18000 0 YEKT} + {3636306000 21600 1 YEKST} + {3655054800 18000 0 YEKT} + {3668360400 21600 1 YEKST} + {3686504400 18000 0 YEKT} + {3699810000 21600 1 YEKST} + {3717954000 18000 0 YEKT} + {3731259600 21600 1 YEKST} + {3750008400 18000 0 YEKT} + {3762709200 21600 1 YEKST} + {3781458000 18000 0 YEKT} + {3794158800 21600 1 YEKST} + {3812907600 18000 0 YEKT} + {3825608400 21600 1 YEKST} + {3844357200 18000 0 YEKT} + {3857662800 21600 1 YEKST} + {3875806800 18000 0 YEKT} + {3889112400 21600 1 YEKST} + {3907256400 18000 0 YEKT} + {3920562000 21600 1 YEKST} + {3939310800 18000 0 YEKT} + {3952011600 21600 1 YEKST} + {3970760400 18000 0 YEKT} + {3983461200 21600 1 YEKST} + {4002210000 18000 0 YEKT} + {4015515600 21600 1 YEKST} + {4033659600 18000 0 YEKT} + {4046965200 21600 1 YEKST} + {4065109200 18000 0 YEKT} + {4078414800 21600 1 YEKST} + {4096558800 18000 0 YEKT} +} diff --git a/library/tzdata/Asia/Yerevan b/library/tzdata/Asia/Yerevan index cd70b4f..708f712 100644 --- a/library/tzdata/Asia/Yerevan +++ b/library/tzdata/Asia/Yerevan @@ -1,245 +1,245 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Yerevan) { - {-9223372036854775808 10680 0 LMT} - {-1441162680 10800 0 YERT} - {-405140400 14400 0 YERT} - {354916800 18000 1 YERST} - {370724400 14400 0 YERT} - {386452800 18000 1 YERST} - {402260400 14400 0 YERT} - {417988800 18000 1 YERST} - {433796400 14400 0 YERT} - {449611200 18000 1 YERST} - {465343200 14400 0 YERT} - {481068000 18000 1 YERST} - {496792800 14400 0 YERT} - {512517600 18000 1 YERST} - {528242400 14400 0 YERT} - {543967200 18000 1 YERST} - {559692000 14400 0 YERT} - {575416800 18000 1 YERST} - {591141600 14400 0 YERT} - {606866400 18000 1 YERST} - {622591200 14400 0 YERT} - {638316000 18000 1 YERST} - {654645600 14400 0 YERT} - {670370400 14400 1 YERST} - {685569600 14400 0 AMST} - {686098800 10800 0 AMT} - {701812800 14400 1 AMST} - {717534000 10800 0 AMT} - {733273200 14400 1 AMST} - {748998000 10800 0 AMT} - {764722800 14400 1 AMST} - {780447600 10800 0 AMT} - {796172400 14400 1 AMST} - {811897200 14400 0 AMT} - {852062400 14400 0 AMT} - {859672800 18000 1 AMST} - {877816800 14400 0 AMT} - {891122400 18000 1 AMST} - {909266400 14400 0 AMT} - {922572000 18000 1 AMST} - {941320800 14400 0 AMT} - {954021600 18000 1 AMST} - {972770400 14400 0 AMT} - {985471200 18000 1 AMST} - {1004220000 14400 0 AMT} - {1017525600 18000 1 AMST} - {1035669600 14400 0 AMT} - {1048975200 18000 1 AMST} - {1067119200 14400 0 AMT} - {1080424800 18000 1 AMST} - {1099173600 14400 0 AMT} - {1111874400 18000 1 AMST} - {1130623200 14400 0 AMT} - {1143324000 18000 1 AMST} - {1162072800 14400 0 AMT} - {1174773600 18000 1 AMST} - {1193522400 14400 0 AMT} - {1206828000 18000 1 AMST} - {1224972000 14400 0 AMT} - {1238277600 18000 1 AMST} - {1256421600 14400 0 AMT} - {1269727200 18000 1 AMST} - {1288476000 14400 0 AMT} - {1301176800 18000 1 AMST} - {1319925600 14400 0 AMT} - {1332626400 18000 1 AMST} - {1351375200 14400 0 AMT} - {1364680800 18000 1 AMST} - {1382824800 14400 0 AMT} - {1396130400 18000 1 AMST} - {1414274400 14400 0 AMT} - {1427580000 18000 1 AMST} - {1445724000 14400 0 AMT} - {1459029600 18000 1 AMST} - {1477778400 14400 0 AMT} - {1490479200 18000 1 AMST} - {1509228000 14400 0 AMT} - {1521928800 18000 1 AMST} - {1540677600 14400 0 AMT} - {1553983200 18000 1 AMST} - {1572127200 14400 0 AMT} - {1585432800 18000 1 AMST} - {1603576800 14400 0 AMT} - {1616882400 18000 1 AMST} - {1635631200 14400 0 AMT} - {1648332000 18000 1 AMST} - {1667080800 14400 0 AMT} - {1679781600 18000 1 AMST} - {1698530400 14400 0 AMT} - {1711836000 18000 1 AMST} - {1729980000 14400 0 AMT} - {1743285600 18000 1 AMST} - {1761429600 14400 0 AMT} - {1774735200 18000 1 AMST} - {1792879200 14400 0 AMT} - {1806184800 18000 1 AMST} - {1824933600 14400 0 AMT} - {1837634400 18000 1 AMST} - {1856383200 14400 0 AMT} - {1869084000 18000 1 AMST} - {1887832800 14400 0 AMT} - {1901138400 18000 1 AMST} - {1919282400 14400 0 AMT} - {1932588000 18000 1 AMST} - {1950732000 14400 0 AMT} - {1964037600 18000 1 AMST} - {1982786400 14400 0 AMT} - {1995487200 18000 1 AMST} - {2014236000 14400 0 AMT} - {2026936800 18000 1 AMST} - {2045685600 14400 0 AMT} - {2058386400 18000 1 AMST} - {2077135200 14400 0 AMT} - {2090440800 18000 1 AMST} - {2108584800 14400 0 AMT} - {2121890400 18000 1 AMST} - {2140034400 14400 0 AMT} - {2153340000 18000 1 AMST} - {2172088800 14400 0 AMT} - {2184789600 18000 1 AMST} - {2203538400 14400 0 AMT} - {2216239200 18000 1 AMST} - {2234988000 14400 0 AMT} - {2248293600 18000 1 AMST} - {2266437600 14400 0 AMT} - {2279743200 18000 1 AMST} - {2297887200 14400 0 AMT} - {2311192800 18000 1 AMST} - {2329336800 14400 0 AMT} - {2342642400 18000 1 AMST} - {2361391200 14400 0 AMT} - {2374092000 18000 1 AMST} - {2392840800 14400 0 AMT} - {2405541600 18000 1 AMST} - {2424290400 14400 0 AMT} - {2437596000 18000 1 AMST} - {2455740000 14400 0 AMT} - {2469045600 18000 1 AMST} - {2487189600 14400 0 AMT} - {2500495200 18000 1 AMST} - {2519244000 14400 0 AMT} - {2531944800 18000 1 AMST} - {2550693600 14400 0 AMT} - {2563394400 18000 1 AMST} - {2582143200 14400 0 AMT} - {2595448800 18000 1 AMST} - {2613592800 14400 0 AMT} - {2626898400 18000 1 AMST} - {2645042400 14400 0 AMT} - {2658348000 18000 1 AMST} - {2676492000 14400 0 AMT} - {2689797600 18000 1 AMST} - {2708546400 14400 0 AMT} - {2721247200 18000 1 AMST} - {2739996000 14400 0 AMT} - {2752696800 18000 1 AMST} - {2771445600 14400 0 AMT} - {2784751200 18000 1 AMST} - {2802895200 14400 0 AMT} - {2816200800 18000 1 AMST} - {2834344800 14400 0 AMT} - {2847650400 18000 1 AMST} - {2866399200 14400 0 AMT} - {2879100000 18000 1 AMST} - {2897848800 14400 0 AMT} - {2910549600 18000 1 AMST} - {2929298400 14400 0 AMT} - {2941999200 18000 1 AMST} - {2960748000 14400 0 AMT} - {2974053600 18000 1 AMST} - {2992197600 14400 0 AMT} - {3005503200 18000 1 AMST} - {3023647200 14400 0 AMT} - {3036952800 18000 1 AMST} - {3055701600 14400 0 AMT} - {3068402400 18000 1 AMST} - {3087151200 14400 0 AMT} - {3099852000 18000 1 AMST} - {3118600800 14400 0 AMT} - {3131906400 18000 1 AMST} - {3150050400 14400 0 AMT} - {3163356000 18000 1 AMST} - {3181500000 14400 0 AMT} - {3194805600 18000 1 AMST} - {3212949600 14400 0 AMT} - {3226255200 18000 1 AMST} - {3245004000 14400 0 AMT} - {3257704800 18000 1 AMST} - {3276453600 14400 0 AMT} - {3289154400 18000 1 AMST} - {3307903200 14400 0 AMT} - {3321208800 18000 1 AMST} - {3339352800 14400 0 AMT} - {3352658400 18000 1 AMST} - {3370802400 14400 0 AMT} - {3384108000 18000 1 AMST} - {3402856800 14400 0 AMT} - {3415557600 18000 1 AMST} - {3434306400 14400 0 AMT} - {3447007200 18000 1 AMST} - {3465756000 14400 0 AMT} - {3479061600 18000 1 AMST} - {3497205600 14400 0 AMT} - {3510511200 18000 1 AMST} - {3528655200 14400 0 AMT} - {3541960800 18000 1 AMST} - {3560104800 14400 0 AMT} - {3573410400 18000 1 AMST} - {3592159200 14400 0 AMT} - {3604860000 18000 1 AMST} - {3623608800 14400 0 AMT} - {3636309600 18000 1 AMST} - {3655058400 14400 0 AMT} - {3668364000 18000 1 AMST} - {3686508000 14400 0 AMT} - {3699813600 18000 1 AMST} - {3717957600 14400 0 AMT} - {3731263200 18000 1 AMST} - {3750012000 14400 0 AMT} - {3762712800 18000 1 AMST} - {3781461600 14400 0 AMT} - {3794162400 18000 1 AMST} - {3812911200 14400 0 AMT} - {3825612000 18000 1 AMST} - {3844360800 14400 0 AMT} - {3857666400 18000 1 AMST} - {3875810400 14400 0 AMT} - {3889116000 18000 1 AMST} - {3907260000 14400 0 AMT} - {3920565600 18000 1 AMST} - {3939314400 14400 0 AMT} - {3952015200 18000 1 AMST} - {3970764000 14400 0 AMT} - {3983464800 18000 1 AMST} - {4002213600 14400 0 AMT} - {4015519200 18000 1 AMST} - {4033663200 14400 0 AMT} - {4046968800 18000 1 AMST} - {4065112800 14400 0 AMT} - {4078418400 18000 1 AMST} - {4096562400 14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Yerevan) { + {-9223372036854775808 10680 0 LMT} + {-1441162680 10800 0 YERT} + {-405140400 14400 0 YERT} + {354916800 18000 1 YERST} + {370724400 14400 0 YERT} + {386452800 18000 1 YERST} + {402260400 14400 0 YERT} + {417988800 18000 1 YERST} + {433796400 14400 0 YERT} + {449611200 18000 1 YERST} + {465343200 14400 0 YERT} + {481068000 18000 1 YERST} + {496792800 14400 0 YERT} + {512517600 18000 1 YERST} + {528242400 14400 0 YERT} + {543967200 18000 1 YERST} + {559692000 14400 0 YERT} + {575416800 18000 1 YERST} + {591141600 14400 0 YERT} + {606866400 18000 1 YERST} + {622591200 14400 0 YERT} + {638316000 18000 1 YERST} + {654645600 14400 0 YERT} + {670370400 14400 1 YERST} + {685569600 14400 0 AMST} + {686098800 10800 0 AMT} + {701812800 14400 1 AMST} + {717534000 10800 0 AMT} + {733273200 14400 1 AMST} + {748998000 10800 0 AMT} + {764722800 14400 1 AMST} + {780447600 10800 0 AMT} + {796172400 14400 1 AMST} + {811897200 14400 0 AMT} + {852062400 14400 0 AMT} + {859672800 18000 1 AMST} + {877816800 14400 0 AMT} + {891122400 18000 1 AMST} + {909266400 14400 0 AMT} + {922572000 18000 1 AMST} + {941320800 14400 0 AMT} + {954021600 18000 1 AMST} + {972770400 14400 0 AMT} + {985471200 18000 1 AMST} + {1004220000 14400 0 AMT} + {1017525600 18000 1 AMST} + {1035669600 14400 0 AMT} + {1048975200 18000 1 AMST} + {1067119200 14400 0 AMT} + {1080424800 18000 1 AMST} + {1099173600 14400 0 AMT} + {1111874400 18000 1 AMST} + {1130623200 14400 0 AMT} + {1143324000 18000 1 AMST} + {1162072800 14400 0 AMT} + {1174773600 18000 1 AMST} + {1193522400 14400 0 AMT} + {1206828000 18000 1 AMST} + {1224972000 14400 0 AMT} + {1238277600 18000 1 AMST} + {1256421600 14400 0 AMT} + {1269727200 18000 1 AMST} + {1288476000 14400 0 AMT} + {1301176800 18000 1 AMST} + {1319925600 14400 0 AMT} + {1332626400 18000 1 AMST} + {1351375200 14400 0 AMT} + {1364680800 18000 1 AMST} + {1382824800 14400 0 AMT} + {1396130400 18000 1 AMST} + {1414274400 14400 0 AMT} + {1427580000 18000 1 AMST} + {1445724000 14400 0 AMT} + {1459029600 18000 1 AMST} + {1477778400 14400 0 AMT} + {1490479200 18000 1 AMST} + {1509228000 14400 0 AMT} + {1521928800 18000 1 AMST} + {1540677600 14400 0 AMT} + {1553983200 18000 1 AMST} + {1572127200 14400 0 AMT} + {1585432800 18000 1 AMST} + {1603576800 14400 0 AMT} + {1616882400 18000 1 AMST} + {1635631200 14400 0 AMT} + {1648332000 18000 1 AMST} + {1667080800 14400 0 AMT} + {1679781600 18000 1 AMST} + {1698530400 14400 0 AMT} + {1711836000 18000 1 AMST} + {1729980000 14400 0 AMT} + {1743285600 18000 1 AMST} + {1761429600 14400 0 AMT} + {1774735200 18000 1 AMST} + {1792879200 14400 0 AMT} + {1806184800 18000 1 AMST} + {1824933600 14400 0 AMT} + {1837634400 18000 1 AMST} + {1856383200 14400 0 AMT} + {1869084000 18000 1 AMST} + {1887832800 14400 0 AMT} + {1901138400 18000 1 AMST} + {1919282400 14400 0 AMT} + {1932588000 18000 1 AMST} + {1950732000 14400 0 AMT} + {1964037600 18000 1 AMST} + {1982786400 14400 0 AMT} + {1995487200 18000 1 AMST} + {2014236000 14400 0 AMT} + {2026936800 18000 1 AMST} + {2045685600 14400 0 AMT} + {2058386400 18000 1 AMST} + {2077135200 14400 0 AMT} + {2090440800 18000 1 AMST} + {2108584800 14400 0 AMT} + {2121890400 18000 1 AMST} + {2140034400 14400 0 AMT} + {2153340000 18000 1 AMST} + {2172088800 14400 0 AMT} + {2184789600 18000 1 AMST} + {2203538400 14400 0 AMT} + {2216239200 18000 1 AMST} + {2234988000 14400 0 AMT} + {2248293600 18000 1 AMST} + {2266437600 14400 0 AMT} + {2279743200 18000 1 AMST} + {2297887200 14400 0 AMT} + {2311192800 18000 1 AMST} + {2329336800 14400 0 AMT} + {2342642400 18000 1 AMST} + {2361391200 14400 0 AMT} + {2374092000 18000 1 AMST} + {2392840800 14400 0 AMT} + {2405541600 18000 1 AMST} + {2424290400 14400 0 AMT} + {2437596000 18000 1 AMST} + {2455740000 14400 0 AMT} + {2469045600 18000 1 AMST} + {2487189600 14400 0 AMT} + {2500495200 18000 1 AMST} + {2519244000 14400 0 AMT} + {2531944800 18000 1 AMST} + {2550693600 14400 0 AMT} + {2563394400 18000 1 AMST} + {2582143200 14400 0 AMT} + {2595448800 18000 1 AMST} + {2613592800 14400 0 AMT} + {2626898400 18000 1 AMST} + {2645042400 14400 0 AMT} + {2658348000 18000 1 AMST} + {2676492000 14400 0 AMT} + {2689797600 18000 1 AMST} + {2708546400 14400 0 AMT} + {2721247200 18000 1 AMST} + {2739996000 14400 0 AMT} + {2752696800 18000 1 AMST} + {2771445600 14400 0 AMT} + {2784751200 18000 1 AMST} + {2802895200 14400 0 AMT} + {2816200800 18000 1 AMST} + {2834344800 14400 0 AMT} + {2847650400 18000 1 AMST} + {2866399200 14400 0 AMT} + {2879100000 18000 1 AMST} + {2897848800 14400 0 AMT} + {2910549600 18000 1 AMST} + {2929298400 14400 0 AMT} + {2941999200 18000 1 AMST} + {2960748000 14400 0 AMT} + {2974053600 18000 1 AMST} + {2992197600 14400 0 AMT} + {3005503200 18000 1 AMST} + {3023647200 14400 0 AMT} + {3036952800 18000 1 AMST} + {3055701600 14400 0 AMT} + {3068402400 18000 1 AMST} + {3087151200 14400 0 AMT} + {3099852000 18000 1 AMST} + {3118600800 14400 0 AMT} + {3131906400 18000 1 AMST} + {3150050400 14400 0 AMT} + {3163356000 18000 1 AMST} + {3181500000 14400 0 AMT} + {3194805600 18000 1 AMST} + {3212949600 14400 0 AMT} + {3226255200 18000 1 AMST} + {3245004000 14400 0 AMT} + {3257704800 18000 1 AMST} + {3276453600 14400 0 AMT} + {3289154400 18000 1 AMST} + {3307903200 14400 0 AMT} + {3321208800 18000 1 AMST} + {3339352800 14400 0 AMT} + {3352658400 18000 1 AMST} + {3370802400 14400 0 AMT} + {3384108000 18000 1 AMST} + {3402856800 14400 0 AMT} + {3415557600 18000 1 AMST} + {3434306400 14400 0 AMT} + {3447007200 18000 1 AMST} + {3465756000 14400 0 AMT} + {3479061600 18000 1 AMST} + {3497205600 14400 0 AMT} + {3510511200 18000 1 AMST} + {3528655200 14400 0 AMT} + {3541960800 18000 1 AMST} + {3560104800 14400 0 AMT} + {3573410400 18000 1 AMST} + {3592159200 14400 0 AMT} + {3604860000 18000 1 AMST} + {3623608800 14400 0 AMT} + {3636309600 18000 1 AMST} + {3655058400 14400 0 AMT} + {3668364000 18000 1 AMST} + {3686508000 14400 0 AMT} + {3699813600 18000 1 AMST} + {3717957600 14400 0 AMT} + {3731263200 18000 1 AMST} + {3750012000 14400 0 AMT} + {3762712800 18000 1 AMST} + {3781461600 14400 0 AMT} + {3794162400 18000 1 AMST} + {3812911200 14400 0 AMT} + {3825612000 18000 1 AMST} + {3844360800 14400 0 AMT} + {3857666400 18000 1 AMST} + {3875810400 14400 0 AMT} + {3889116000 18000 1 AMST} + {3907260000 14400 0 AMT} + {3920565600 18000 1 AMST} + {3939314400 14400 0 AMT} + {3952015200 18000 1 AMST} + {3970764000 14400 0 AMT} + {3983464800 18000 1 AMST} + {4002213600 14400 0 AMT} + {4015519200 18000 1 AMST} + {4033663200 14400 0 AMT} + {4046968800 18000 1 AMST} + {4065112800 14400 0 AMT} + {4078418400 18000 1 AMST} + {4096562400 14400 0 AMT} +} diff --git a/library/tzdata/Atlantic/Azores b/library/tzdata/Atlantic/Azores index c476191..d9f832c 100644 --- a/library/tzdata/Atlantic/Azores +++ b/library/tzdata/Atlantic/Azores @@ -1,349 +1,349 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Azores) { - {-9223372036854775808 -6160 0 LMT} - {-2713904240 -6872 0 HMT} - {-1849557928 -7200 0 AZOT} - {-1689548400 -3600 1 AZOST} - {-1677794400 -7200 0 AZOT} - {-1667430000 -3600 1 AZOST} - {-1647730800 -7200 0 AZOT} - {-1635807600 -3600 1 AZOST} - {-1616194800 -7200 0 AZOT} - {-1604358000 -3600 1 AZOST} - {-1584658800 -7200 0 AZOT} - {-1572735600 -3600 1 AZOST} - {-1553036400 -7200 0 AZOT} - {-1541199600 -3600 1 AZOST} - {-1521500400 -7200 0 AZOT} - {-1442444400 -3600 1 AZOST} - {-1426806000 -7200 0 AZOT} - {-1379286000 -3600 1 AZOST} - {-1364770800 -7200 0 AZOT} - {-1348441200 -3600 1 AZOST} - {-1333321200 -7200 0 AZOT} - {-1316386800 -3600 1 AZOST} - {-1301266800 -7200 0 AZOT} - {-1284332400 -3600 1 AZOST} - {-1269817200 -7200 0 AZOT} - {-1221433200 -3600 1 AZOST} - {-1206918000 -7200 0 AZOT} - {-1191193200 -3600 1 AZOST} - {-1175468400 -7200 0 AZOT} - {-1127689200 -3600 1 AZOST} - {-1111964400 -7200 0 AZOT} - {-1096844400 -3600 1 AZOST} - {-1080514800 -7200 0 AZOT} - {-1063580400 -3600 1 AZOST} - {-1049065200 -7200 0 AZOT} - {-1033340400 -3600 1 AZOST} - {-1017615600 -7200 0 AZOT} - {-1002495600 -3600 1 AZOST} - {-986166000 -7200 0 AZOT} - {-969231600 -3600 1 AZOST} - {-950482800 -7200 0 AZOT} - {-942015600 -3600 1 AZOST} - {-922662000 -7200 0 AZOT} - {-906937200 -3600 1 AZOST} - {-891126000 -7200 0 AZOT} - {-877302000 -3600 1 AZOST} - {-873676800 0 1 AZOMT} - {-864000000 -3600 1 AZOST} - {-857948400 -7200 0 AZOT} - {-845852400 -3600 1 AZOST} - {-842832000 0 1 AZOMT} - {-831340800 -3600 1 AZOST} - {-825894000 -7200 0 AZOT} - {-814402800 -3600 1 AZOST} - {-810777600 0 1 AZOMT} - {-799891200 -3600 1 AZOST} - {-794444400 -7200 0 AZOT} - {-782953200 -3600 1 AZOST} - {-779328000 0 1 AZOMT} - {-768441600 -3600 1 AZOST} - {-762994800 -7200 0 AZOT} - {-749084400 -3600 1 AZOST} - {-733359600 -7200 0 AZOT} - {-717624000 -3600 1 AZOST} - {-701899200 -7200 0 AZOT} - {-686174400 -3600 1 AZOST} - {-670449600 -7200 0 AZOT} - {-654724800 -3600 1 AZOST} - {-639000000 -7200 0 AZOT} - {-591825600 -3600 1 AZOST} - {-575496000 -7200 0 AZOT} - {-559771200 -3600 1 AZOST} - {-544046400 -7200 0 AZOT} - {-528321600 -3600 1 AZOST} - {-512596800 -7200 0 AZOT} - {-496872000 -3600 1 AZOST} - {-481147200 -7200 0 AZOT} - {-465422400 -3600 1 AZOST} - {-449697600 -7200 0 AZOT} - {-433972800 -3600 1 AZOST} - {-417643200 -7200 0 AZOT} - {-401918400 -3600 1 AZOST} - {-386193600 -7200 0 AZOT} - {-370468800 -3600 1 AZOST} - {-354744000 -7200 0 AZOT} - {-339019200 -3600 1 AZOST} - {-323294400 -7200 0 AZOT} - {-307569600 -3600 1 AZOST} - {-291844800 -7200 0 AZOT} - {-276120000 -3600 1 AZOST} - {-260395200 -7200 0 AZOT} - {-244670400 -3600 1 AZOST} - {-228340800 -7200 0 AZOT} - {-212616000 -3600 1 AZOST} - {-196891200 -7200 0 AZOT} - {-181166400 -3600 1 AZOST} - {-165441600 -7200 0 AZOT} - {-149716800 -3600 1 AZOST} - {-133992000 -7200 0 AZOT} - {-118267200 -3600 0 AZOT} - {228272400 0 1 AZOST} - {243997200 -3600 0 AZOT} - {260326800 0 1 AZOST} - {276051600 -3600 0 AZOT} - {291776400 0 1 AZOST} - {307504800 -3600 0 AZOT} - {323226000 0 1 AZOST} - {338954400 -3600 0 AZOT} - {354679200 0 1 AZOST} - {370404000 -3600 0 AZOT} - {386128800 0 1 AZOST} - {401853600 -3600 0 AZOT} - {417582000 0 1 AZOST} - {433303200 -3600 0 AZOT} - {449028000 0 1 AZOST} - {465357600 -3600 0 AZOT} - {481082400 0 1 AZOST} - {496807200 -3600 0 AZOT} - {512532000 0 1 AZOST} - {528256800 -3600 0 AZOT} - {543981600 0 1 AZOST} - {559706400 -3600 0 AZOT} - {575431200 0 1 AZOST} - {591156000 -3600 0 AZOT} - {606880800 0 1 AZOST} - {622605600 -3600 0 AZOT} - {638330400 0 1 AZOST} - {654660000 -3600 0 AZOT} - {670384800 0 1 AZOST} - {686109600 -3600 0 AZOT} - {701834400 0 1 AZOST} - {733280400 0 0 AZOST} - {749005200 -3600 0 AZOT} - {764730000 0 1 AZOST} - {780454800 -3600 0 AZOT} - {796179600 0 1 AZOST} - {811904400 -3600 0 AZOT} - {828234000 0 1 AZOST} - {846378000 -3600 0 AZOT} - {859683600 0 1 AZOST} - {877827600 -3600 0 AZOT} - {891133200 0 1 AZOST} - {909277200 -3600 0 AZOT} - {922582800 0 1 AZOST} - {941331600 -3600 0 AZOT} - {954032400 0 1 AZOST} - {972781200 -3600 0 AZOT} - {985482000 0 1 AZOST} - {1004230800 -3600 0 AZOT} - {1017536400 0 1 AZOST} - {1035680400 -3600 0 AZOT} - {1048986000 0 1 AZOST} - {1067130000 -3600 0 AZOT} - {1080435600 0 1 AZOST} - {1099184400 -3600 0 AZOT} - {1111885200 0 1 AZOST} - {1130634000 -3600 0 AZOT} - {1143334800 0 1 AZOST} - {1162083600 -3600 0 AZOT} - {1174784400 0 1 AZOST} - {1193533200 -3600 0 AZOT} - {1206838800 0 1 AZOST} - {1224982800 -3600 0 AZOT} - {1238288400 0 1 AZOST} - {1256432400 -3600 0 AZOT} - {1269738000 0 1 AZOST} - {1288486800 -3600 0 AZOT} - {1301187600 0 1 AZOST} - {1319936400 -3600 0 AZOT} - {1332637200 0 1 AZOST} - {1351386000 -3600 0 AZOT} - {1364691600 0 1 AZOST} - {1382835600 -3600 0 AZOT} - {1396141200 0 1 AZOST} - {1414285200 -3600 0 AZOT} - {1427590800 0 1 AZOST} - {1445734800 -3600 0 AZOT} - {1459040400 0 1 AZOST} - {1477789200 -3600 0 AZOT} - {1490490000 0 1 AZOST} - {1509238800 -3600 0 AZOT} - {1521939600 0 1 AZOST} - {1540688400 -3600 0 AZOT} - {1553994000 0 1 AZOST} - {1572138000 -3600 0 AZOT} - {1585443600 0 1 AZOST} - {1603587600 -3600 0 AZOT} - {1616893200 0 1 AZOST} - {1635642000 -3600 0 AZOT} - {1648342800 0 1 AZOST} - {1667091600 -3600 0 AZOT} - {1679792400 0 1 AZOST} - {1698541200 -3600 0 AZOT} - {1711846800 0 1 AZOST} - {1729990800 -3600 0 AZOT} - {1743296400 0 1 AZOST} - {1761440400 -3600 0 AZOT} - {1774746000 0 1 AZOST} - {1792890000 -3600 0 AZOT} - {1806195600 0 1 AZOST} - {1824944400 -3600 0 AZOT} - {1837645200 0 1 AZOST} - {1856394000 -3600 0 AZOT} - {1869094800 0 1 AZOST} - {1887843600 -3600 0 AZOT} - {1901149200 0 1 AZOST} - {1919293200 -3600 0 AZOT} - {1932598800 0 1 AZOST} - {1950742800 -3600 0 AZOT} - {1964048400 0 1 AZOST} - {1982797200 -3600 0 AZOT} - {1995498000 0 1 AZOST} - {2014246800 -3600 0 AZOT} - {2026947600 0 1 AZOST} - {2045696400 -3600 0 AZOT} - {2058397200 0 1 AZOST} - {2077146000 -3600 0 AZOT} - {2090451600 0 1 AZOST} - {2108595600 -3600 0 AZOT} - {2121901200 0 1 AZOST} - {2140045200 -3600 0 AZOT} - {2153350800 0 1 AZOST} - {2172099600 -3600 0 AZOT} - {2184800400 0 1 AZOST} - {2203549200 -3600 0 AZOT} - {2216250000 0 1 AZOST} - {2234998800 -3600 0 AZOT} - {2248304400 0 1 AZOST} - {2266448400 -3600 0 AZOT} - {2279754000 0 1 AZOST} - {2297898000 -3600 0 AZOT} - {2311203600 0 1 AZOST} - {2329347600 -3600 0 AZOT} - {2342653200 0 1 AZOST} - {2361402000 -3600 0 AZOT} - {2374102800 0 1 AZOST} - {2392851600 -3600 0 AZOT} - {2405552400 0 1 AZOST} - {2424301200 -3600 0 AZOT} - {2437606800 0 1 AZOST} - {2455750800 -3600 0 AZOT} - {2469056400 0 1 AZOST} - {2487200400 -3600 0 AZOT} - {2500506000 0 1 AZOST} - {2519254800 -3600 0 AZOT} - {2531955600 0 1 AZOST} - {2550704400 -3600 0 AZOT} - {2563405200 0 1 AZOST} - {2582154000 -3600 0 AZOT} - {2595459600 0 1 AZOST} - {2613603600 -3600 0 AZOT} - {2626909200 0 1 AZOST} - {2645053200 -3600 0 AZOT} - {2658358800 0 1 AZOST} - {2676502800 -3600 0 AZOT} - {2689808400 0 1 AZOST} - {2708557200 -3600 0 AZOT} - {2721258000 0 1 AZOST} - {2740006800 -3600 0 AZOT} - {2752707600 0 1 AZOST} - {2771456400 -3600 0 AZOT} - {2784762000 0 1 AZOST} - {2802906000 -3600 0 AZOT} - {2816211600 0 1 AZOST} - {2834355600 -3600 0 AZOT} - {2847661200 0 1 AZOST} - {2866410000 -3600 0 AZOT} - {2879110800 0 1 AZOST} - {2897859600 -3600 0 AZOT} - {2910560400 0 1 AZOST} - {2929309200 -3600 0 AZOT} - {2942010000 0 1 AZOST} - {2960758800 -3600 0 AZOT} - {2974064400 0 1 AZOST} - {2992208400 -3600 0 AZOT} - {3005514000 0 1 AZOST} - {3023658000 -3600 0 AZOT} - {3036963600 0 1 AZOST} - {3055712400 -3600 0 AZOT} - {3068413200 0 1 AZOST} - {3087162000 -3600 0 AZOT} - {3099862800 0 1 AZOST} - {3118611600 -3600 0 AZOT} - {3131917200 0 1 AZOST} - {3150061200 -3600 0 AZOT} - {3163366800 0 1 AZOST} - {3181510800 -3600 0 AZOT} - {3194816400 0 1 AZOST} - {3212960400 -3600 0 AZOT} - {3226266000 0 1 AZOST} - {3245014800 -3600 0 AZOT} - {3257715600 0 1 AZOST} - {3276464400 -3600 0 AZOT} - {3289165200 0 1 AZOST} - {3307914000 -3600 0 AZOT} - {3321219600 0 1 AZOST} - {3339363600 -3600 0 AZOT} - {3352669200 0 1 AZOST} - {3370813200 -3600 0 AZOT} - {3384118800 0 1 AZOST} - {3402867600 -3600 0 AZOT} - {3415568400 0 1 AZOST} - {3434317200 -3600 0 AZOT} - {3447018000 0 1 AZOST} - {3465766800 -3600 0 AZOT} - {3479072400 0 1 AZOST} - {3497216400 -3600 0 AZOT} - {3510522000 0 1 AZOST} - {3528666000 -3600 0 AZOT} - {3541971600 0 1 AZOST} - {3560115600 -3600 0 AZOT} - {3573421200 0 1 AZOST} - {3592170000 -3600 0 AZOT} - {3604870800 0 1 AZOST} - {3623619600 -3600 0 AZOT} - {3636320400 0 1 AZOST} - {3655069200 -3600 0 AZOT} - {3668374800 0 1 AZOST} - {3686518800 -3600 0 AZOT} - {3699824400 0 1 AZOST} - {3717968400 -3600 0 AZOT} - {3731274000 0 1 AZOST} - {3750022800 -3600 0 AZOT} - {3762723600 0 1 AZOST} - {3781472400 -3600 0 AZOT} - {3794173200 0 1 AZOST} - {3812922000 -3600 0 AZOT} - {3825622800 0 1 AZOST} - {3844371600 -3600 0 AZOT} - {3857677200 0 1 AZOST} - {3875821200 -3600 0 AZOT} - {3889126800 0 1 AZOST} - {3907270800 -3600 0 AZOT} - {3920576400 0 1 AZOST} - {3939325200 -3600 0 AZOT} - {3952026000 0 1 AZOST} - {3970774800 -3600 0 AZOT} - {3983475600 0 1 AZOST} - {4002224400 -3600 0 AZOT} - {4015530000 0 1 AZOST} - {4033674000 -3600 0 AZOT} - {4046979600 0 1 AZOST} - {4065123600 -3600 0 AZOT} - {4078429200 0 1 AZOST} - {4096573200 -3600 0 AZOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Azores) { + {-9223372036854775808 -6160 0 LMT} + {-2713904240 -6872 0 HMT} + {-1849557928 -7200 0 AZOT} + {-1689548400 -3600 1 AZOST} + {-1677794400 -7200 0 AZOT} + {-1667430000 -3600 1 AZOST} + {-1647730800 -7200 0 AZOT} + {-1635807600 -3600 1 AZOST} + {-1616194800 -7200 0 AZOT} + {-1604358000 -3600 1 AZOST} + {-1584658800 -7200 0 AZOT} + {-1572735600 -3600 1 AZOST} + {-1553036400 -7200 0 AZOT} + {-1541199600 -3600 1 AZOST} + {-1521500400 -7200 0 AZOT} + {-1442444400 -3600 1 AZOST} + {-1426806000 -7200 0 AZOT} + {-1379286000 -3600 1 AZOST} + {-1364770800 -7200 0 AZOT} + {-1348441200 -3600 1 AZOST} + {-1333321200 -7200 0 AZOT} + {-1316386800 -3600 1 AZOST} + {-1301266800 -7200 0 AZOT} + {-1284332400 -3600 1 AZOST} + {-1269817200 -7200 0 AZOT} + {-1221433200 -3600 1 AZOST} + {-1206918000 -7200 0 AZOT} + {-1191193200 -3600 1 AZOST} + {-1175468400 -7200 0 AZOT} + {-1127689200 -3600 1 AZOST} + {-1111964400 -7200 0 AZOT} + {-1096844400 -3600 1 AZOST} + {-1080514800 -7200 0 AZOT} + {-1063580400 -3600 1 AZOST} + {-1049065200 -7200 0 AZOT} + {-1033340400 -3600 1 AZOST} + {-1017615600 -7200 0 AZOT} + {-1002495600 -3600 1 AZOST} + {-986166000 -7200 0 AZOT} + {-969231600 -3600 1 AZOST} + {-950482800 -7200 0 AZOT} + {-942015600 -3600 1 AZOST} + {-922662000 -7200 0 AZOT} + {-906937200 -3600 1 AZOST} + {-891126000 -7200 0 AZOT} + {-877302000 -3600 1 AZOST} + {-873676800 0 1 AZOMT} + {-864000000 -3600 1 AZOST} + {-857948400 -7200 0 AZOT} + {-845852400 -3600 1 AZOST} + {-842832000 0 1 AZOMT} + {-831340800 -3600 1 AZOST} + {-825894000 -7200 0 AZOT} + {-814402800 -3600 1 AZOST} + {-810777600 0 1 AZOMT} + {-799891200 -3600 1 AZOST} + {-794444400 -7200 0 AZOT} + {-782953200 -3600 1 AZOST} + {-779328000 0 1 AZOMT} + {-768441600 -3600 1 AZOST} + {-762994800 -7200 0 AZOT} + {-749084400 -3600 1 AZOST} + {-733359600 -7200 0 AZOT} + {-717624000 -3600 1 AZOST} + {-701899200 -7200 0 AZOT} + {-686174400 -3600 1 AZOST} + {-670449600 -7200 0 AZOT} + {-654724800 -3600 1 AZOST} + {-639000000 -7200 0 AZOT} + {-591825600 -3600 1 AZOST} + {-575496000 -7200 0 AZOT} + {-559771200 -3600 1 AZOST} + {-544046400 -7200 0 AZOT} + {-528321600 -3600 1 AZOST} + {-512596800 -7200 0 AZOT} + {-496872000 -3600 1 AZOST} + {-481147200 -7200 0 AZOT} + {-465422400 -3600 1 AZOST} + {-449697600 -7200 0 AZOT} + {-433972800 -3600 1 AZOST} + {-417643200 -7200 0 AZOT} + {-401918400 -3600 1 AZOST} + {-386193600 -7200 0 AZOT} + {-370468800 -3600 1 AZOST} + {-354744000 -7200 0 AZOT} + {-339019200 -3600 1 AZOST} + {-323294400 -7200 0 AZOT} + {-307569600 -3600 1 AZOST} + {-291844800 -7200 0 AZOT} + {-276120000 -3600 1 AZOST} + {-260395200 -7200 0 AZOT} + {-244670400 -3600 1 AZOST} + {-228340800 -7200 0 AZOT} + {-212616000 -3600 1 AZOST} + {-196891200 -7200 0 AZOT} + {-181166400 -3600 1 AZOST} + {-165441600 -7200 0 AZOT} + {-149716800 -3600 1 AZOST} + {-133992000 -7200 0 AZOT} + {-118267200 -3600 0 AZOT} + {228272400 0 1 AZOST} + {243997200 -3600 0 AZOT} + {260326800 0 1 AZOST} + {276051600 -3600 0 AZOT} + {291776400 0 1 AZOST} + {307504800 -3600 0 AZOT} + {323226000 0 1 AZOST} + {338954400 -3600 0 AZOT} + {354679200 0 1 AZOST} + {370404000 -3600 0 AZOT} + {386128800 0 1 AZOST} + {401853600 -3600 0 AZOT} + {417582000 0 1 AZOST} + {433303200 -3600 0 AZOT} + {449028000 0 1 AZOST} + {465357600 -3600 0 AZOT} + {481082400 0 1 AZOST} + {496807200 -3600 0 AZOT} + {512532000 0 1 AZOST} + {528256800 -3600 0 AZOT} + {543981600 0 1 AZOST} + {559706400 -3600 0 AZOT} + {575431200 0 1 AZOST} + {591156000 -3600 0 AZOT} + {606880800 0 1 AZOST} + {622605600 -3600 0 AZOT} + {638330400 0 1 AZOST} + {654660000 -3600 0 AZOT} + {670384800 0 1 AZOST} + {686109600 -3600 0 AZOT} + {701834400 0 1 AZOST} + {733280400 0 0 AZOST} + {749005200 -3600 0 AZOT} + {764730000 0 1 AZOST} + {780454800 -3600 0 AZOT} + {796179600 0 1 AZOST} + {811904400 -3600 0 AZOT} + {828234000 0 1 AZOST} + {846378000 -3600 0 AZOT} + {859683600 0 1 AZOST} + {877827600 -3600 0 AZOT} + {891133200 0 1 AZOST} + {909277200 -3600 0 AZOT} + {922582800 0 1 AZOST} + {941331600 -3600 0 AZOT} + {954032400 0 1 AZOST} + {972781200 -3600 0 AZOT} + {985482000 0 1 AZOST} + {1004230800 -3600 0 AZOT} + {1017536400 0 1 AZOST} + {1035680400 -3600 0 AZOT} + {1048986000 0 1 AZOST} + {1067130000 -3600 0 AZOT} + {1080435600 0 1 AZOST} + {1099184400 -3600 0 AZOT} + {1111885200 0 1 AZOST} + {1130634000 -3600 0 AZOT} + {1143334800 0 1 AZOST} + {1162083600 -3600 0 AZOT} + {1174784400 0 1 AZOST} + {1193533200 -3600 0 AZOT} + {1206838800 0 1 AZOST} + {1224982800 -3600 0 AZOT} + {1238288400 0 1 AZOST} + {1256432400 -3600 0 AZOT} + {1269738000 0 1 AZOST} + {1288486800 -3600 0 AZOT} + {1301187600 0 1 AZOST} + {1319936400 -3600 0 AZOT} + {1332637200 0 1 AZOST} + {1351386000 -3600 0 AZOT} + {1364691600 0 1 AZOST} + {1382835600 -3600 0 AZOT} + {1396141200 0 1 AZOST} + {1414285200 -3600 0 AZOT} + {1427590800 0 1 AZOST} + {1445734800 -3600 0 AZOT} + {1459040400 0 1 AZOST} + {1477789200 -3600 0 AZOT} + {1490490000 0 1 AZOST} + {1509238800 -3600 0 AZOT} + {1521939600 0 1 AZOST} + {1540688400 -3600 0 AZOT} + {1553994000 0 1 AZOST} + {1572138000 -3600 0 AZOT} + {1585443600 0 1 AZOST} + {1603587600 -3600 0 AZOT} + {1616893200 0 1 AZOST} + {1635642000 -3600 0 AZOT} + {1648342800 0 1 AZOST} + {1667091600 -3600 0 AZOT} + {1679792400 0 1 AZOST} + {1698541200 -3600 0 AZOT} + {1711846800 0 1 AZOST} + {1729990800 -3600 0 AZOT} + {1743296400 0 1 AZOST} + {1761440400 -3600 0 AZOT} + {1774746000 0 1 AZOST} + {1792890000 -3600 0 AZOT} + {1806195600 0 1 AZOST} + {1824944400 -3600 0 AZOT} + {1837645200 0 1 AZOST} + {1856394000 -3600 0 AZOT} + {1869094800 0 1 AZOST} + {1887843600 -3600 0 AZOT} + {1901149200 0 1 AZOST} + {1919293200 -3600 0 AZOT} + {1932598800 0 1 AZOST} + {1950742800 -3600 0 AZOT} + {1964048400 0 1 AZOST} + {1982797200 -3600 0 AZOT} + {1995498000 0 1 AZOST} + {2014246800 -3600 0 AZOT} + {2026947600 0 1 AZOST} + {2045696400 -3600 0 AZOT} + {2058397200 0 1 AZOST} + {2077146000 -3600 0 AZOT} + {2090451600 0 1 AZOST} + {2108595600 -3600 0 AZOT} + {2121901200 0 1 AZOST} + {2140045200 -3600 0 AZOT} + {2153350800 0 1 AZOST} + {2172099600 -3600 0 AZOT} + {2184800400 0 1 AZOST} + {2203549200 -3600 0 AZOT} + {2216250000 0 1 AZOST} + {2234998800 -3600 0 AZOT} + {2248304400 0 1 AZOST} + {2266448400 -3600 0 AZOT} + {2279754000 0 1 AZOST} + {2297898000 -3600 0 AZOT} + {2311203600 0 1 AZOST} + {2329347600 -3600 0 AZOT} + {2342653200 0 1 AZOST} + {2361402000 -3600 0 AZOT} + {2374102800 0 1 AZOST} + {2392851600 -3600 0 AZOT} + {2405552400 0 1 AZOST} + {2424301200 -3600 0 AZOT} + {2437606800 0 1 AZOST} + {2455750800 -3600 0 AZOT} + {2469056400 0 1 AZOST} + {2487200400 -3600 0 AZOT} + {2500506000 0 1 AZOST} + {2519254800 -3600 0 AZOT} + {2531955600 0 1 AZOST} + {2550704400 -3600 0 AZOT} + {2563405200 0 1 AZOST} + {2582154000 -3600 0 AZOT} + {2595459600 0 1 AZOST} + {2613603600 -3600 0 AZOT} + {2626909200 0 1 AZOST} + {2645053200 -3600 0 AZOT} + {2658358800 0 1 AZOST} + {2676502800 -3600 0 AZOT} + {2689808400 0 1 AZOST} + {2708557200 -3600 0 AZOT} + {2721258000 0 1 AZOST} + {2740006800 -3600 0 AZOT} + {2752707600 0 1 AZOST} + {2771456400 -3600 0 AZOT} + {2784762000 0 1 AZOST} + {2802906000 -3600 0 AZOT} + {2816211600 0 1 AZOST} + {2834355600 -3600 0 AZOT} + {2847661200 0 1 AZOST} + {2866410000 -3600 0 AZOT} + {2879110800 0 1 AZOST} + {2897859600 -3600 0 AZOT} + {2910560400 0 1 AZOST} + {2929309200 -3600 0 AZOT} + {2942010000 0 1 AZOST} + {2960758800 -3600 0 AZOT} + {2974064400 0 1 AZOST} + {2992208400 -3600 0 AZOT} + {3005514000 0 1 AZOST} + {3023658000 -3600 0 AZOT} + {3036963600 0 1 AZOST} + {3055712400 -3600 0 AZOT} + {3068413200 0 1 AZOST} + {3087162000 -3600 0 AZOT} + {3099862800 0 1 AZOST} + {3118611600 -3600 0 AZOT} + {3131917200 0 1 AZOST} + {3150061200 -3600 0 AZOT} + {3163366800 0 1 AZOST} + {3181510800 -3600 0 AZOT} + {3194816400 0 1 AZOST} + {3212960400 -3600 0 AZOT} + {3226266000 0 1 AZOST} + {3245014800 -3600 0 AZOT} + {3257715600 0 1 AZOST} + {3276464400 -3600 0 AZOT} + {3289165200 0 1 AZOST} + {3307914000 -3600 0 AZOT} + {3321219600 0 1 AZOST} + {3339363600 -3600 0 AZOT} + {3352669200 0 1 AZOST} + {3370813200 -3600 0 AZOT} + {3384118800 0 1 AZOST} + {3402867600 -3600 0 AZOT} + {3415568400 0 1 AZOST} + {3434317200 -3600 0 AZOT} + {3447018000 0 1 AZOST} + {3465766800 -3600 0 AZOT} + {3479072400 0 1 AZOST} + {3497216400 -3600 0 AZOT} + {3510522000 0 1 AZOST} + {3528666000 -3600 0 AZOT} + {3541971600 0 1 AZOST} + {3560115600 -3600 0 AZOT} + {3573421200 0 1 AZOST} + {3592170000 -3600 0 AZOT} + {3604870800 0 1 AZOST} + {3623619600 -3600 0 AZOT} + {3636320400 0 1 AZOST} + {3655069200 -3600 0 AZOT} + {3668374800 0 1 AZOST} + {3686518800 -3600 0 AZOT} + {3699824400 0 1 AZOST} + {3717968400 -3600 0 AZOT} + {3731274000 0 1 AZOST} + {3750022800 -3600 0 AZOT} + {3762723600 0 1 AZOST} + {3781472400 -3600 0 AZOT} + {3794173200 0 1 AZOST} + {3812922000 -3600 0 AZOT} + {3825622800 0 1 AZOST} + {3844371600 -3600 0 AZOT} + {3857677200 0 1 AZOST} + {3875821200 -3600 0 AZOT} + {3889126800 0 1 AZOST} + {3907270800 -3600 0 AZOT} + {3920576400 0 1 AZOST} + {3939325200 -3600 0 AZOT} + {3952026000 0 1 AZOST} + {3970774800 -3600 0 AZOT} + {3983475600 0 1 AZOST} + {4002224400 -3600 0 AZOT} + {4015530000 0 1 AZOST} + {4033674000 -3600 0 AZOT} + {4046979600 0 1 AZOST} + {4065123600 -3600 0 AZOT} + {4078429200 0 1 AZOST} + {4096573200 -3600 0 AZOT} +} diff --git a/library/tzdata/Atlantic/Bermuda b/library/tzdata/Atlantic/Bermuda index e8b165a..b3f6378 100644 --- a/library/tzdata/Atlantic/Bermuda +++ b/library/tzdata/Atlantic/Bermuda @@ -1,259 +1,259 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Bermuda) { - {-9223372036854775808 -15544 0 LMT} - {-1262281256 -14400 0 AST} - {136360800 -10800 0 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {189316800 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -10800 1 ADT} - {814942800 -14400 0 AST} - {828856800 -10800 1 ADT} - {846392400 -14400 0 AST} - {860306400 -10800 1 ADT} - {877842000 -14400 0 AST} - {891756000 -10800 1 ADT} - {909291600 -14400 0 AST} - {923205600 -10800 1 ADT} - {941346000 -14400 0 AST} - {954655200 -10800 1 ADT} - {972795600 -14400 0 AST} - {986104800 -10800 1 ADT} - {1004245200 -14400 0 AST} - {1018159200 -10800 1 ADT} - {1035694800 -14400 0 AST} - {1049608800 -10800 1 ADT} - {1067144400 -14400 0 AST} - {1081058400 -10800 1 ADT} - {1099198800 -14400 0 AST} - {1112508000 -10800 1 ADT} - {1130648400 -14400 0 AST} - {1143957600 -10800 1 ADT} - {1162098000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Bermuda) { + {-9223372036854775808 -15544 0 LMT} + {-1262281256 -14400 0 AST} + {136360800 -10800 0 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {189316800 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -10800 1 ADT} + {814942800 -14400 0 AST} + {828856800 -10800 1 ADT} + {846392400 -14400 0 AST} + {860306400 -10800 1 ADT} + {877842000 -14400 0 AST} + {891756000 -10800 1 ADT} + {909291600 -14400 0 AST} + {923205600 -10800 1 ADT} + {941346000 -14400 0 AST} + {954655200 -10800 1 ADT} + {972795600 -14400 0 AST} + {986104800 -10800 1 ADT} + {1004245200 -14400 0 AST} + {1018159200 -10800 1 ADT} + {1035694800 -14400 0 AST} + {1049608800 -10800 1 ADT} + {1067144400 -14400 0 AST} + {1081058400 -10800 1 ADT} + {1099198800 -14400 0 AST} + {1112508000 -10800 1 ADT} + {1130648400 -14400 0 AST} + {1143957600 -10800 1 ADT} + {1162098000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/Atlantic/Canary b/library/tzdata/Atlantic/Canary index 4b802c7..155c0c7 100644 --- a/library/tzdata/Atlantic/Canary +++ b/library/tzdata/Atlantic/Canary @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Canary) { - {-9223372036854775808 -3696 0 LMT} - {-1509663504 -3600 0 CANT} - {-733874400 0 0 WET} - {323827200 3600 1 WEST} - {338947200 3600 0 WEST} - {338950800 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417574800 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 0 0 WET} - {733280400 3600 1 WEST} - {749005200 0 0 WET} - {764730000 3600 1 WEST} - {780454800 0 0 WET} - {796179600 3600 1 WEST} - {811904400 0 0 WET} - {828234000 3600 1 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Canary) { + {-9223372036854775808 -3696 0 LMT} + {-1509663504 -3600 0 CANT} + {-733874400 0 0 WET} + {323827200 3600 1 WEST} + {338947200 3600 0 WEST} + {338950800 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417574800 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 0 0 WET} + {733280400 3600 1 WEST} + {749005200 0 0 WET} + {764730000 3600 1 WEST} + {780454800 0 0 WET} + {796179600 3600 1 WEST} + {811904400 0 0 WET} + {828234000 3600 1 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Atlantic/Cape_Verde b/library/tzdata/Atlantic/Cape_Verde index f0bb79f..6fbb644 100644 --- a/library/tzdata/Atlantic/Cape_Verde +++ b/library/tzdata/Atlantic/Cape_Verde @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Cape_Verde) { - {-9223372036854775808 -5644 0 LMT} - {-1988144756 -7200 0 CVT} - {-862610400 -3600 1 CVST} - {-764118000 -7200 0 CVT} - {186120000 -3600 0 CVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Cape_Verde) { + {-9223372036854775808 -5644 0 LMT} + {-1988144756 -7200 0 CVT} + {-862610400 -3600 1 CVST} + {-764118000 -7200 0 CVT} + {186120000 -3600 0 CVT} +} diff --git a/library/tzdata/Atlantic/Faeroe b/library/tzdata/Atlantic/Faeroe index 4cafc34..a60b15a 100644 --- a/library/tzdata/Atlantic/Faeroe +++ b/library/tzdata/Atlantic/Faeroe @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Atlantic/Faroe)]} { - LoadTimeZoneFile Atlantic/Faroe -} -set TZData(:Atlantic/Faeroe) $TZData(:Atlantic/Faroe) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Atlantic/Faroe)]} { + LoadTimeZoneFile Atlantic/Faroe +} +set TZData(:Atlantic/Faeroe) $TZData(:Atlantic/Faroe) diff --git a/library/tzdata/Atlantic/Faroe b/library/tzdata/Atlantic/Faroe index d2c314a..95ede24 100755 --- a/library/tzdata/Atlantic/Faroe +++ b/library/tzdata/Atlantic/Faroe @@ -1,245 +1,245 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Faroe) { - {-9223372036854775808 -1624 0 LMT} - {-1955748776 0 0 WET} - {347155200 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417574800 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 0 0 WET} - {733280400 3600 1 WEST} - {749005200 0 0 WET} - {764730000 3600 1 WEST} - {780454800 0 0 WET} - {796179600 3600 1 WEST} - {811904400 0 0 WET} - {828234000 3600 1 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Faroe) { + {-9223372036854775808 -1624 0 LMT} + {-1955748776 0 0 WET} + {347155200 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417574800 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 0 0 WET} + {733280400 3600 1 WEST} + {749005200 0 0 WET} + {764730000 3600 1 WEST} + {780454800 0 0 WET} + {796179600 3600 1 WEST} + {811904400 0 0 WET} + {828234000 3600 1 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Atlantic/Jan_Mayen b/library/tzdata/Atlantic/Jan_Mayen index e592187..8ec5ea7 100644 --- a/library/tzdata/Atlantic/Jan_Mayen +++ b/library/tzdata/Atlantic/Jan_Mayen @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Oslo)]} { - LoadTimeZoneFile Europe/Oslo -} -set TZData(:Atlantic/Jan_Mayen) $TZData(:Europe/Oslo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Oslo)]} { + LoadTimeZoneFile Europe/Oslo +} +set TZData(:Atlantic/Jan_Mayen) $TZData(:Europe/Oslo) diff --git a/library/tzdata/Atlantic/Madeira b/library/tzdata/Atlantic/Madeira index 4960eeb..2e31681 100644 --- a/library/tzdata/Atlantic/Madeira +++ b/library/tzdata/Atlantic/Madeira @@ -1,350 +1,350 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Madeira) { - {-9223372036854775808 -4056 0 LMT} - {-2713906344 -4056 0 FMT} - {-1849560744 -3600 0 MADT} - {-1689552000 0 1 MADST} - {-1677798000 -3600 0 MADT} - {-1667433600 0 1 MADST} - {-1647734400 -3600 0 MADT} - {-1635811200 0 1 MADST} - {-1616198400 -3600 0 MADT} - {-1604361600 0 1 MADST} - {-1584662400 -3600 0 MADT} - {-1572739200 0 1 MADST} - {-1553040000 -3600 0 MADT} - {-1541203200 0 1 MADST} - {-1521504000 -3600 0 MADT} - {-1442448000 0 1 MADST} - {-1426809600 -3600 0 MADT} - {-1379289600 0 1 MADST} - {-1364774400 -3600 0 MADT} - {-1348444800 0 1 MADST} - {-1333324800 -3600 0 MADT} - {-1316390400 0 1 MADST} - {-1301270400 -3600 0 MADT} - {-1284336000 0 1 MADST} - {-1269820800 -3600 0 MADT} - {-1221436800 0 1 MADST} - {-1206921600 -3600 0 MADT} - {-1191196800 0 1 MADST} - {-1175472000 -3600 0 MADT} - {-1127692800 0 1 MADST} - {-1111968000 -3600 0 MADT} - {-1096848000 0 1 MADST} - {-1080518400 -3600 0 MADT} - {-1063584000 0 1 MADST} - {-1049068800 -3600 0 MADT} - {-1033344000 0 1 MADST} - {-1017619200 -3600 0 MADT} - {-1002499200 0 1 MADST} - {-986169600 -3600 0 MADT} - {-969235200 0 1 MADST} - {-950486400 -3600 0 MADT} - {-942019200 0 1 MADST} - {-922665600 -3600 0 MADT} - {-906940800 0 1 MADST} - {-891129600 -3600 0 MADT} - {-877305600 0 1 MADST} - {-873680400 3600 1 MADMT} - {-864003600 0 1 MADST} - {-857952000 -3600 0 MADT} - {-845856000 0 1 MADST} - {-842835600 3600 1 MADMT} - {-831344400 0 1 MADST} - {-825897600 -3600 0 MADT} - {-814406400 0 1 MADST} - {-810781200 3600 1 MADMT} - {-799894800 0 1 MADST} - {-794448000 -3600 0 MADT} - {-782956800 0 1 MADST} - {-779331600 3600 1 MADMT} - {-768445200 0 1 MADST} - {-762998400 -3600 0 MADT} - {-749088000 0 1 MADST} - {-733363200 -3600 0 MADT} - {-717627600 0 1 MADST} - {-701902800 -3600 0 MADT} - {-686178000 0 1 MADST} - {-670453200 -3600 0 MADT} - {-654728400 0 1 MADST} - {-639003600 -3600 0 MADT} - {-591829200 0 1 MADST} - {-575499600 -3600 0 MADT} - {-559774800 0 1 MADST} - {-544050000 -3600 0 MADT} - {-528325200 0 1 MADST} - {-512600400 -3600 0 MADT} - {-496875600 0 1 MADST} - {-481150800 -3600 0 MADT} - {-465426000 0 1 MADST} - {-449701200 -3600 0 MADT} - {-433976400 0 1 MADST} - {-417646800 -3600 0 MADT} - {-401922000 0 1 MADST} - {-386197200 -3600 0 MADT} - {-370472400 0 1 MADST} - {-354747600 -3600 0 MADT} - {-339022800 0 1 MADST} - {-323298000 -3600 0 MADT} - {-307573200 0 1 MADST} - {-291848400 -3600 0 MADT} - {-276123600 0 1 MADST} - {-260398800 -3600 0 MADT} - {-244674000 0 1 MADST} - {-228344400 -3600 0 MADT} - {-212619600 0 1 MADST} - {-196894800 -3600 0 MADT} - {-181170000 0 1 MADST} - {-165445200 -3600 0 MADT} - {-149720400 0 1 MADST} - {-133995600 -3600 0 MADT} - {-118270800 0 0 WET} - {228268800 3600 1 WEST} - {243993600 0 0 WET} - {260323200 3600 1 WEST} - {276048000 0 0 WET} - {291772800 3600 1 WEST} - {307501200 0 0 WET} - {323222400 3600 1 WEST} - {338950800 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417578400 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 0 0 WET} - {733280400 3600 1 WEST} - {749005200 0 0 WET} - {764730000 3600 1 WEST} - {780454800 0 0 WET} - {796179600 3600 1 WEST} - {811904400 0 0 WET} - {828234000 3600 1 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Madeira) { + {-9223372036854775808 -4056 0 LMT} + {-2713906344 -4056 0 FMT} + {-1849560744 -3600 0 MADT} + {-1689552000 0 1 MADST} + {-1677798000 -3600 0 MADT} + {-1667433600 0 1 MADST} + {-1647734400 -3600 0 MADT} + {-1635811200 0 1 MADST} + {-1616198400 -3600 0 MADT} + {-1604361600 0 1 MADST} + {-1584662400 -3600 0 MADT} + {-1572739200 0 1 MADST} + {-1553040000 -3600 0 MADT} + {-1541203200 0 1 MADST} + {-1521504000 -3600 0 MADT} + {-1442448000 0 1 MADST} + {-1426809600 -3600 0 MADT} + {-1379289600 0 1 MADST} + {-1364774400 -3600 0 MADT} + {-1348444800 0 1 MADST} + {-1333324800 -3600 0 MADT} + {-1316390400 0 1 MADST} + {-1301270400 -3600 0 MADT} + {-1284336000 0 1 MADST} + {-1269820800 -3600 0 MADT} + {-1221436800 0 1 MADST} + {-1206921600 -3600 0 MADT} + {-1191196800 0 1 MADST} + {-1175472000 -3600 0 MADT} + {-1127692800 0 1 MADST} + {-1111968000 -3600 0 MADT} + {-1096848000 0 1 MADST} + {-1080518400 -3600 0 MADT} + {-1063584000 0 1 MADST} + {-1049068800 -3600 0 MADT} + {-1033344000 0 1 MADST} + {-1017619200 -3600 0 MADT} + {-1002499200 0 1 MADST} + {-986169600 -3600 0 MADT} + {-969235200 0 1 MADST} + {-950486400 -3600 0 MADT} + {-942019200 0 1 MADST} + {-922665600 -3600 0 MADT} + {-906940800 0 1 MADST} + {-891129600 -3600 0 MADT} + {-877305600 0 1 MADST} + {-873680400 3600 1 MADMT} + {-864003600 0 1 MADST} + {-857952000 -3600 0 MADT} + {-845856000 0 1 MADST} + {-842835600 3600 1 MADMT} + {-831344400 0 1 MADST} + {-825897600 -3600 0 MADT} + {-814406400 0 1 MADST} + {-810781200 3600 1 MADMT} + {-799894800 0 1 MADST} + {-794448000 -3600 0 MADT} + {-782956800 0 1 MADST} + {-779331600 3600 1 MADMT} + {-768445200 0 1 MADST} + {-762998400 -3600 0 MADT} + {-749088000 0 1 MADST} + {-733363200 -3600 0 MADT} + {-717627600 0 1 MADST} + {-701902800 -3600 0 MADT} + {-686178000 0 1 MADST} + {-670453200 -3600 0 MADT} + {-654728400 0 1 MADST} + {-639003600 -3600 0 MADT} + {-591829200 0 1 MADST} + {-575499600 -3600 0 MADT} + {-559774800 0 1 MADST} + {-544050000 -3600 0 MADT} + {-528325200 0 1 MADST} + {-512600400 -3600 0 MADT} + {-496875600 0 1 MADST} + {-481150800 -3600 0 MADT} + {-465426000 0 1 MADST} + {-449701200 -3600 0 MADT} + {-433976400 0 1 MADST} + {-417646800 -3600 0 MADT} + {-401922000 0 1 MADST} + {-386197200 -3600 0 MADT} + {-370472400 0 1 MADST} + {-354747600 -3600 0 MADT} + {-339022800 0 1 MADST} + {-323298000 -3600 0 MADT} + {-307573200 0 1 MADST} + {-291848400 -3600 0 MADT} + {-276123600 0 1 MADST} + {-260398800 -3600 0 MADT} + {-244674000 0 1 MADST} + {-228344400 -3600 0 MADT} + {-212619600 0 1 MADST} + {-196894800 -3600 0 MADT} + {-181170000 0 1 MADST} + {-165445200 -3600 0 MADT} + {-149720400 0 1 MADST} + {-133995600 -3600 0 MADT} + {-118270800 0 0 WET} + {228268800 3600 1 WEST} + {243993600 0 0 WET} + {260323200 3600 1 WEST} + {276048000 0 0 WET} + {291772800 3600 1 WEST} + {307501200 0 0 WET} + {323222400 3600 1 WEST} + {338950800 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417578400 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 0 0 WET} + {733280400 3600 1 WEST} + {749005200 0 0 WET} + {764730000 3600 1 WEST} + {780454800 0 0 WET} + {796179600 3600 1 WEST} + {811904400 0 0 WET} + {828234000 3600 1 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Atlantic/Reykjavik b/library/tzdata/Atlantic/Reykjavik index f0248ad..c36b1aa 100644 --- a/library/tzdata/Atlantic/Reykjavik +++ b/library/tzdata/Atlantic/Reykjavik @@ -1,70 +1,70 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Reykjavik) { - {-9223372036854775808 -5244 0 LMT} - {-4197047556 -5268 0 RMT} - {-1956609132 -3600 0 IST} - {-1668211200 0 1 ISST} - {-1647212400 -3600 0 IST} - {-1636675200 0 1 ISST} - {-1613430000 -3600 0 IST} - {-968025600 0 1 ISST} - {-949615200 -3600 0 IST} - {-942008400 0 1 ISST} - {-920239200 -3600 0 IST} - {-909957600 0 1 ISST} - {-888789600 -3600 0 IST} - {-877903200 0 1 ISST} - {-857944800 -3600 0 IST} - {-846453600 0 1 ISST} - {-826495200 -3600 0 IST} - {-815004000 0 1 ISST} - {-795045600 -3600 0 IST} - {-783554400 0 1 ISST} - {-762991200 -3600 0 IST} - {-752104800 0 1 ISST} - {-731541600 -3600 0 IST} - {-717631200 0 1 ISST} - {-700092000 -3600 0 IST} - {-686181600 0 1 ISST} - {-668642400 -3600 0 IST} - {-654732000 0 1 ISST} - {-636588000 -3600 0 IST} - {-623282400 0 1 ISST} - {-605743200 -3600 0 IST} - {-591832800 0 1 ISST} - {-573688800 -3600 0 IST} - {-559778400 0 1 ISST} - {-542239200 -3600 0 IST} - {-528328800 0 1 ISST} - {-510789600 -3600 0 IST} - {-496879200 0 1 ISST} - {-479340000 -3600 0 IST} - {-465429600 0 1 ISST} - {-447890400 -3600 0 IST} - {-433980000 0 1 ISST} - {-415836000 -3600 0 IST} - {-401925600 0 1 ISST} - {-384386400 -3600 0 IST} - {-370476000 0 1 ISST} - {-352936800 -3600 0 IST} - {-339026400 0 1 ISST} - {-321487200 -3600 0 IST} - {-307576800 0 1 ISST} - {-290037600 -3600 0 IST} - {-276127200 0 1 ISST} - {-258588000 -3600 0 IST} - {-244677600 0 1 ISST} - {-226533600 -3600 0 IST} - {-212623200 0 1 ISST} - {-195084000 -3600 0 IST} - {-181173600 0 1 ISST} - {-163634400 -3600 0 IST} - {-149724000 0 1 ISST} - {-132184800 -3600 0 IST} - {-118274400 0 1 ISST} - {-100735200 -3600 0 IST} - {-86824800 0 1 ISST} - {-68680800 -3600 0 IST} - {-54770400 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Reykjavik) { + {-9223372036854775808 -5244 0 LMT} + {-4197047556 -5268 0 RMT} + {-1956609132 -3600 0 IST} + {-1668211200 0 1 ISST} + {-1647212400 -3600 0 IST} + {-1636675200 0 1 ISST} + {-1613430000 -3600 0 IST} + {-968025600 0 1 ISST} + {-949615200 -3600 0 IST} + {-942008400 0 1 ISST} + {-920239200 -3600 0 IST} + {-909957600 0 1 ISST} + {-888789600 -3600 0 IST} + {-877903200 0 1 ISST} + {-857944800 -3600 0 IST} + {-846453600 0 1 ISST} + {-826495200 -3600 0 IST} + {-815004000 0 1 ISST} + {-795045600 -3600 0 IST} + {-783554400 0 1 ISST} + {-762991200 -3600 0 IST} + {-752104800 0 1 ISST} + {-731541600 -3600 0 IST} + {-717631200 0 1 ISST} + {-700092000 -3600 0 IST} + {-686181600 0 1 ISST} + {-668642400 -3600 0 IST} + {-654732000 0 1 ISST} + {-636588000 -3600 0 IST} + {-623282400 0 1 ISST} + {-605743200 -3600 0 IST} + {-591832800 0 1 ISST} + {-573688800 -3600 0 IST} + {-559778400 0 1 ISST} + {-542239200 -3600 0 IST} + {-528328800 0 1 ISST} + {-510789600 -3600 0 IST} + {-496879200 0 1 ISST} + {-479340000 -3600 0 IST} + {-465429600 0 1 ISST} + {-447890400 -3600 0 IST} + {-433980000 0 1 ISST} + {-415836000 -3600 0 IST} + {-401925600 0 1 ISST} + {-384386400 -3600 0 IST} + {-370476000 0 1 ISST} + {-352936800 -3600 0 IST} + {-339026400 0 1 ISST} + {-321487200 -3600 0 IST} + {-307576800 0 1 ISST} + {-290037600 -3600 0 IST} + {-276127200 0 1 ISST} + {-258588000 -3600 0 IST} + {-244677600 0 1 ISST} + {-226533600 -3600 0 IST} + {-212623200 0 1 ISST} + {-195084000 -3600 0 IST} + {-181173600 0 1 ISST} + {-163634400 -3600 0 IST} + {-149724000 0 1 ISST} + {-132184800 -3600 0 IST} + {-118274400 0 1 ISST} + {-100735200 -3600 0 IST} + {-86824800 0 1 ISST} + {-68680800 -3600 0 IST} + {-54770400 0 0 GMT} +} diff --git a/library/tzdata/Atlantic/South_Georgia b/library/tzdata/Atlantic/South_Georgia index cbfc826..88a6b8b 100644 --- a/library/tzdata/Atlantic/South_Georgia +++ b/library/tzdata/Atlantic/South_Georgia @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/South_Georgia) { - {-9223372036854775808 -8768 0 LMT} - {-2524512832 -7200 0 GST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/South_Georgia) { + {-9223372036854775808 -8768 0 LMT} + {-2524512832 -7200 0 GST} +} diff --git a/library/tzdata/Atlantic/St_Helena b/library/tzdata/Atlantic/St_Helena index 6d0c00d..e78e7a5 100644 --- a/library/tzdata/Atlantic/St_Helena +++ b/library/tzdata/Atlantic/St_Helena @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/St_Helena) { - {-9223372036854775808 -1368 0 LMT} - {-2524520232 -1368 0 JMT} - {-599614632 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/St_Helena) { + {-9223372036854775808 -1368 0 LMT} + {-2524520232 -1368 0 JMT} + {-599614632 0 0 GMT} +} diff --git a/library/tzdata/Atlantic/Stanley b/library/tzdata/Atlantic/Stanley index 70dc402..8112146 100644 --- a/library/tzdata/Atlantic/Stanley +++ b/library/tzdata/Atlantic/Stanley @@ -1,253 +1,253 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Stanley) { - {-9223372036854775808 -13884 0 LMT} - {-2524507716 -13884 0 SMT} - {-1824235716 -14400 0 FKT} - {-1018209600 -10800 1 FKST} - {-1003093200 -14400 0 FKT} - {-986760000 -10800 1 FKST} - {-971643600 -14400 0 FKT} - {-954705600 -10800 1 FKST} - {-939589200 -14400 0 FKT} - {-923256000 -10800 1 FKST} - {-908139600 -14400 0 FKT} - {-891806400 -10800 1 FKST} - {-876690000 -14400 0 FKT} - {-860356800 -10800 1 FKST} - {420606000 -7200 0 FKT} - {433303200 -7200 1 FKST} - {452052000 -10800 0 FKT} - {464151600 -7200 1 FKST} - {483501600 -10800 0 FKT} - {495597600 -14400 0 FKT} - {495604800 -10800 1 FKST} - {514350000 -14400 0 FKT} - {527054400 -10800 1 FKST} - {545799600 -14400 0 FKT} - {558504000 -10800 1 FKST} - {577249200 -14400 0 FKT} - {589953600 -10800 1 FKST} - {608698800 -14400 0 FKT} - {621403200 -10800 1 FKST} - {640753200 -14400 0 FKT} - {652852800 -10800 1 FKST} - {672202800 -14400 0 FKT} - {684907200 -10800 1 FKST} - {703652400 -14400 0 FKT} - {716356800 -10800 1 FKST} - {735102000 -14400 0 FKT} - {747806400 -10800 1 FKST} - {766551600 -14400 0 FKT} - {779256000 -10800 1 FKST} - {798001200 -14400 0 FKT} - {810705600 -10800 1 FKST} - {830055600 -14400 0 FKT} - {842760000 -10800 1 FKST} - {861505200 -14400 0 FKT} - {874209600 -10800 1 FKST} - {892954800 -14400 0 FKT} - {905659200 -10800 1 FKST} - {924404400 -14400 0 FKT} - {937108800 -10800 1 FKST} - {955854000 -14400 0 FKT} - {968558400 -10800 1 FKST} - {987310800 -14400 0 FKT} - {999410400 -10800 1 FKST} - {1019365200 -14400 0 FKT} - {1030860000 -10800 1 FKST} - {1050814800 -14400 0 FKT} - {1062914400 -10800 1 FKST} - {1082264400 -14400 0 FKT} - {1094364000 -10800 1 FKST} - {1113714000 -14400 0 FKT} - {1125813600 -10800 1 FKST} - {1145163600 -14400 0 FKT} - {1157263200 -10800 1 FKST} - {1176613200 -14400 0 FKT} - {1188712800 -10800 1 FKST} - {1208667600 -14400 0 FKT} - {1220767200 -10800 1 FKST} - {1240117200 -14400 0 FKT} - {1252216800 -10800 1 FKST} - {1271566800 -14400 0 FKT} - {1283666400 -10800 1 FKST} - {1303016400 -14400 0 FKT} - {1315116000 -10800 1 FKST} - {1334466000 -14400 0 FKT} - {1346565600 -10800 1 FKST} - {1366520400 -14400 0 FKT} - {1378015200 -10800 1 FKST} - {1397970000 -14400 0 FKT} - {1410069600 -10800 1 FKST} - {1429419600 -14400 0 FKT} - {1441519200 -10800 1 FKST} - {1460869200 -14400 0 FKT} - {1472968800 -10800 1 FKST} - {1492318800 -14400 0 FKT} - {1504418400 -10800 1 FKST} - {1523768400 -14400 0 FKT} - {1535868000 -10800 1 FKST} - {1555822800 -14400 0 FKT} - {1567317600 -10800 1 FKST} - {1587272400 -14400 0 FKT} - {1599372000 -10800 1 FKST} - {1618722000 -14400 0 FKT} - {1630821600 -10800 1 FKST} - {1650171600 -14400 0 FKT} - {1662271200 -10800 1 FKST} - {1681621200 -14400 0 FKT} - {1693720800 -10800 1 FKST} - {1713675600 -14400 0 FKT} - {1725170400 -10800 1 FKST} - {1745125200 -14400 0 FKT} - {1757224800 -10800 1 FKST} - {1776574800 -14400 0 FKT} - {1788674400 -10800 1 FKST} - {1808024400 -14400 0 FKT} - {1820124000 -10800 1 FKST} - {1839474000 -14400 0 FKT} - {1851573600 -10800 1 FKST} - {1870923600 -14400 0 FKT} - {1883023200 -10800 1 FKST} - {1902978000 -14400 0 FKT} - {1914472800 -10800 1 FKST} - {1934427600 -14400 0 FKT} - {1946527200 -10800 1 FKST} - {1965877200 -14400 0 FKT} - {1977976800 -10800 1 FKST} - {1997326800 -14400 0 FKT} - {2009426400 -10800 1 FKST} - {2028776400 -14400 0 FKT} - {2040876000 -10800 1 FKST} - {2060226000 -14400 0 FKT} - {2072325600 -10800 1 FKST} - {2092280400 -14400 0 FKT} - {2104380000 -10800 1 FKST} - {2123730000 -14400 0 FKT} - {2135829600 -10800 1 FKST} - {2155179600 -14400 0 FKT} - {2167279200 -10800 1 FKST} - {2186629200 -14400 0 FKT} - {2198728800 -10800 1 FKST} - {2218078800 -14400 0 FKT} - {2230178400 -10800 1 FKST} - {2250133200 -14400 0 FKT} - {2261628000 -10800 1 FKST} - {2281582800 -14400 0 FKT} - {2293682400 -10800 1 FKST} - {2313032400 -14400 0 FKT} - {2325132000 -10800 1 FKST} - {2344482000 -14400 0 FKT} - {2356581600 -10800 1 FKST} - {2375931600 -14400 0 FKT} - {2388031200 -10800 1 FKST} - {2407381200 -14400 0 FKT} - {2419480800 -10800 1 FKST} - {2439435600 -14400 0 FKT} - {2450930400 -10800 1 FKST} - {2470885200 -14400 0 FKT} - {2482984800 -10800 1 FKST} - {2502334800 -14400 0 FKT} - {2514434400 -10800 1 FKST} - {2533784400 -14400 0 FKT} - {2545884000 -10800 1 FKST} - {2565234000 -14400 0 FKT} - {2577333600 -10800 1 FKST} - {2597288400 -14400 0 FKT} - {2608783200 -10800 1 FKST} - {2628738000 -14400 0 FKT} - {2640837600 -10800 1 FKST} - {2660187600 -14400 0 FKT} - {2672287200 -10800 1 FKST} - {2691637200 -14400 0 FKT} - {2703736800 -10800 1 FKST} - {2723086800 -14400 0 FKT} - {2735186400 -10800 1 FKST} - {2754536400 -14400 0 FKT} - {2766636000 -10800 1 FKST} - {2786590800 -14400 0 FKT} - {2798085600 -10800 1 FKST} - {2818040400 -14400 0 FKT} - {2830140000 -10800 1 FKST} - {2849490000 -14400 0 FKT} - {2861589600 -10800 1 FKST} - {2880939600 -14400 0 FKT} - {2893039200 -10800 1 FKST} - {2912389200 -14400 0 FKT} - {2924488800 -10800 1 FKST} - {2943838800 -14400 0 FKT} - {2955938400 -10800 1 FKST} - {2975893200 -14400 0 FKT} - {2987992800 -10800 1 FKST} - {3007342800 -14400 0 FKT} - {3019442400 -10800 1 FKST} - {3038792400 -14400 0 FKT} - {3050892000 -10800 1 FKST} - {3070242000 -14400 0 FKT} - {3082341600 -10800 1 FKST} - {3101691600 -14400 0 FKT} - {3113791200 -10800 1 FKST} - {3133746000 -14400 0 FKT} - {3145240800 -10800 1 FKST} - {3165195600 -14400 0 FKT} - {3177295200 -10800 1 FKST} - {3196645200 -14400 0 FKT} - {3208744800 -10800 1 FKST} - {3228094800 -14400 0 FKT} - {3240194400 -10800 1 FKST} - {3259544400 -14400 0 FKT} - {3271644000 -10800 1 FKST} - {3290994000 -14400 0 FKT} - {3303093600 -10800 1 FKST} - {3323048400 -14400 0 FKT} - {3334543200 -10800 1 FKST} - {3354498000 -14400 0 FKT} - {3366597600 -10800 1 FKST} - {3385947600 -14400 0 FKT} - {3398047200 -10800 1 FKST} - {3417397200 -14400 0 FKT} - {3429496800 -10800 1 FKST} - {3448846800 -14400 0 FKT} - {3460946400 -10800 1 FKST} - {3480901200 -14400 0 FKT} - {3492396000 -10800 1 FKST} - {3512350800 -14400 0 FKT} - {3524450400 -10800 1 FKST} - {3543800400 -14400 0 FKT} - {3555900000 -10800 1 FKST} - {3575250000 -14400 0 FKT} - {3587349600 -10800 1 FKST} - {3606699600 -14400 0 FKT} - {3618799200 -10800 1 FKST} - {3638149200 -14400 0 FKT} - {3650248800 -10800 1 FKST} - {3670203600 -14400 0 FKT} - {3681698400 -10800 1 FKST} - {3701653200 -14400 0 FKT} - {3713752800 -10800 1 FKST} - {3733102800 -14400 0 FKT} - {3745202400 -10800 1 FKST} - {3764552400 -14400 0 FKT} - {3776652000 -10800 1 FKST} - {3796002000 -14400 0 FKT} - {3808101600 -10800 1 FKST} - {3827451600 -14400 0 FKT} - {3839551200 -10800 1 FKST} - {3859506000 -14400 0 FKT} - {3871605600 -10800 1 FKST} - {3890955600 -14400 0 FKT} - {3903055200 -10800 1 FKST} - {3922405200 -14400 0 FKT} - {3934504800 -10800 1 FKST} - {3953854800 -14400 0 FKT} - {3965954400 -10800 1 FKST} - {3985304400 -14400 0 FKT} - {3997404000 -10800 1 FKST} - {4017358800 -14400 0 FKT} - {4028853600 -10800 1 FKST} - {4048808400 -14400 0 FKT} - {4060908000 -10800 1 FKST} - {4080258000 -14400 0 FKT} - {4092357600 -10800 1 FKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Stanley) { + {-9223372036854775808 -13884 0 LMT} + {-2524507716 -13884 0 SMT} + {-1824235716 -14400 0 FKT} + {-1018209600 -10800 1 FKST} + {-1003093200 -14400 0 FKT} + {-986760000 -10800 1 FKST} + {-971643600 -14400 0 FKT} + {-954705600 -10800 1 FKST} + {-939589200 -14400 0 FKT} + {-923256000 -10800 1 FKST} + {-908139600 -14400 0 FKT} + {-891806400 -10800 1 FKST} + {-876690000 -14400 0 FKT} + {-860356800 -10800 1 FKST} + {420606000 -7200 0 FKT} + {433303200 -7200 1 FKST} + {452052000 -10800 0 FKT} + {464151600 -7200 1 FKST} + {483501600 -10800 0 FKT} + {495597600 -14400 0 FKT} + {495604800 -10800 1 FKST} + {514350000 -14400 0 FKT} + {527054400 -10800 1 FKST} + {545799600 -14400 0 FKT} + {558504000 -10800 1 FKST} + {577249200 -14400 0 FKT} + {589953600 -10800 1 FKST} + {608698800 -14400 0 FKT} + {621403200 -10800 1 FKST} + {640753200 -14400 0 FKT} + {652852800 -10800 1 FKST} + {672202800 -14400 0 FKT} + {684907200 -10800 1 FKST} + {703652400 -14400 0 FKT} + {716356800 -10800 1 FKST} + {735102000 -14400 0 FKT} + {747806400 -10800 1 FKST} + {766551600 -14400 0 FKT} + {779256000 -10800 1 FKST} + {798001200 -14400 0 FKT} + {810705600 -10800 1 FKST} + {830055600 -14400 0 FKT} + {842760000 -10800 1 FKST} + {861505200 -14400 0 FKT} + {874209600 -10800 1 FKST} + {892954800 -14400 0 FKT} + {905659200 -10800 1 FKST} + {924404400 -14400 0 FKT} + {937108800 -10800 1 FKST} + {955854000 -14400 0 FKT} + {968558400 -10800 1 FKST} + {987310800 -14400 0 FKT} + {999410400 -10800 1 FKST} + {1019365200 -14400 0 FKT} + {1030860000 -10800 1 FKST} + {1050814800 -14400 0 FKT} + {1062914400 -10800 1 FKST} + {1082264400 -14400 0 FKT} + {1094364000 -10800 1 FKST} + {1113714000 -14400 0 FKT} + {1125813600 -10800 1 FKST} + {1145163600 -14400 0 FKT} + {1157263200 -10800 1 FKST} + {1176613200 -14400 0 FKT} + {1188712800 -10800 1 FKST} + {1208667600 -14400 0 FKT} + {1220767200 -10800 1 FKST} + {1240117200 -14400 0 FKT} + {1252216800 -10800 1 FKST} + {1271566800 -14400 0 FKT} + {1283666400 -10800 1 FKST} + {1303016400 -14400 0 FKT} + {1315116000 -10800 1 FKST} + {1334466000 -14400 0 FKT} + {1346565600 -10800 1 FKST} + {1366520400 -14400 0 FKT} + {1378015200 -10800 1 FKST} + {1397970000 -14400 0 FKT} + {1410069600 -10800 1 FKST} + {1429419600 -14400 0 FKT} + {1441519200 -10800 1 FKST} + {1460869200 -14400 0 FKT} + {1472968800 -10800 1 FKST} + {1492318800 -14400 0 FKT} + {1504418400 -10800 1 FKST} + {1523768400 -14400 0 FKT} + {1535868000 -10800 1 FKST} + {1555822800 -14400 0 FKT} + {1567317600 -10800 1 FKST} + {1587272400 -14400 0 FKT} + {1599372000 -10800 1 FKST} + {1618722000 -14400 0 FKT} + {1630821600 -10800 1 FKST} + {1650171600 -14400 0 FKT} + {1662271200 -10800 1 FKST} + {1681621200 -14400 0 FKT} + {1693720800 -10800 1 FKST} + {1713675600 -14400 0 FKT} + {1725170400 -10800 1 FKST} + {1745125200 -14400 0 FKT} + {1757224800 -10800 1 FKST} + {1776574800 -14400 0 FKT} + {1788674400 -10800 1 FKST} + {1808024400 -14400 0 FKT} + {1820124000 -10800 1 FKST} + {1839474000 -14400 0 FKT} + {1851573600 -10800 1 FKST} + {1870923600 -14400 0 FKT} + {1883023200 -10800 1 FKST} + {1902978000 -14400 0 FKT} + {1914472800 -10800 1 FKST} + {1934427600 -14400 0 FKT} + {1946527200 -10800 1 FKST} + {1965877200 -14400 0 FKT} + {1977976800 -10800 1 FKST} + {1997326800 -14400 0 FKT} + {2009426400 -10800 1 FKST} + {2028776400 -14400 0 FKT} + {2040876000 -10800 1 FKST} + {2060226000 -14400 0 FKT} + {2072325600 -10800 1 FKST} + {2092280400 -14400 0 FKT} + {2104380000 -10800 1 FKST} + {2123730000 -14400 0 FKT} + {2135829600 -10800 1 FKST} + {2155179600 -14400 0 FKT} + {2167279200 -10800 1 FKST} + {2186629200 -14400 0 FKT} + {2198728800 -10800 1 FKST} + {2218078800 -14400 0 FKT} + {2230178400 -10800 1 FKST} + {2250133200 -14400 0 FKT} + {2261628000 -10800 1 FKST} + {2281582800 -14400 0 FKT} + {2293682400 -10800 1 FKST} + {2313032400 -14400 0 FKT} + {2325132000 -10800 1 FKST} + {2344482000 -14400 0 FKT} + {2356581600 -10800 1 FKST} + {2375931600 -14400 0 FKT} + {2388031200 -10800 1 FKST} + {2407381200 -14400 0 FKT} + {2419480800 -10800 1 FKST} + {2439435600 -14400 0 FKT} + {2450930400 -10800 1 FKST} + {2470885200 -14400 0 FKT} + {2482984800 -10800 1 FKST} + {2502334800 -14400 0 FKT} + {2514434400 -10800 1 FKST} + {2533784400 -14400 0 FKT} + {2545884000 -10800 1 FKST} + {2565234000 -14400 0 FKT} + {2577333600 -10800 1 FKST} + {2597288400 -14400 0 FKT} + {2608783200 -10800 1 FKST} + {2628738000 -14400 0 FKT} + {2640837600 -10800 1 FKST} + {2660187600 -14400 0 FKT} + {2672287200 -10800 1 FKST} + {2691637200 -14400 0 FKT} + {2703736800 -10800 1 FKST} + {2723086800 -14400 0 FKT} + {2735186400 -10800 1 FKST} + {2754536400 -14400 0 FKT} + {2766636000 -10800 1 FKST} + {2786590800 -14400 0 FKT} + {2798085600 -10800 1 FKST} + {2818040400 -14400 0 FKT} + {2830140000 -10800 1 FKST} + {2849490000 -14400 0 FKT} + {2861589600 -10800 1 FKST} + {2880939600 -14400 0 FKT} + {2893039200 -10800 1 FKST} + {2912389200 -14400 0 FKT} + {2924488800 -10800 1 FKST} + {2943838800 -14400 0 FKT} + {2955938400 -10800 1 FKST} + {2975893200 -14400 0 FKT} + {2987992800 -10800 1 FKST} + {3007342800 -14400 0 FKT} + {3019442400 -10800 1 FKST} + {3038792400 -14400 0 FKT} + {3050892000 -10800 1 FKST} + {3070242000 -14400 0 FKT} + {3082341600 -10800 1 FKST} + {3101691600 -14400 0 FKT} + {3113791200 -10800 1 FKST} + {3133746000 -14400 0 FKT} + {3145240800 -10800 1 FKST} + {3165195600 -14400 0 FKT} + {3177295200 -10800 1 FKST} + {3196645200 -14400 0 FKT} + {3208744800 -10800 1 FKST} + {3228094800 -14400 0 FKT} + {3240194400 -10800 1 FKST} + {3259544400 -14400 0 FKT} + {3271644000 -10800 1 FKST} + {3290994000 -14400 0 FKT} + {3303093600 -10800 1 FKST} + {3323048400 -14400 0 FKT} + {3334543200 -10800 1 FKST} + {3354498000 -14400 0 FKT} + {3366597600 -10800 1 FKST} + {3385947600 -14400 0 FKT} + {3398047200 -10800 1 FKST} + {3417397200 -14400 0 FKT} + {3429496800 -10800 1 FKST} + {3448846800 -14400 0 FKT} + {3460946400 -10800 1 FKST} + {3480901200 -14400 0 FKT} + {3492396000 -10800 1 FKST} + {3512350800 -14400 0 FKT} + {3524450400 -10800 1 FKST} + {3543800400 -14400 0 FKT} + {3555900000 -10800 1 FKST} + {3575250000 -14400 0 FKT} + {3587349600 -10800 1 FKST} + {3606699600 -14400 0 FKT} + {3618799200 -10800 1 FKST} + {3638149200 -14400 0 FKT} + {3650248800 -10800 1 FKST} + {3670203600 -14400 0 FKT} + {3681698400 -10800 1 FKST} + {3701653200 -14400 0 FKT} + {3713752800 -10800 1 FKST} + {3733102800 -14400 0 FKT} + {3745202400 -10800 1 FKST} + {3764552400 -14400 0 FKT} + {3776652000 -10800 1 FKST} + {3796002000 -14400 0 FKT} + {3808101600 -10800 1 FKST} + {3827451600 -14400 0 FKT} + {3839551200 -10800 1 FKST} + {3859506000 -14400 0 FKT} + {3871605600 -10800 1 FKST} + {3890955600 -14400 0 FKT} + {3903055200 -10800 1 FKST} + {3922405200 -14400 0 FKT} + {3934504800 -10800 1 FKST} + {3953854800 -14400 0 FKT} + {3965954400 -10800 1 FKST} + {3985304400 -14400 0 FKT} + {3997404000 -10800 1 FKST} + {4017358800 -14400 0 FKT} + {4028853600 -10800 1 FKST} + {4048808400 -14400 0 FKT} + {4060908000 -10800 1 FKST} + {4080258000 -14400 0 FKT} + {4092357600 -10800 1 FKST} +} diff --git a/library/tzdata/Australia/ACT b/library/tzdata/Australia/ACT index f7da281..ab9005b 100644 --- a/library/tzdata/Australia/ACT +++ b/library/tzdata/Australia/ACT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Sydney)]} { - LoadTimeZoneFile Australia/Sydney -} -set TZData(:Australia/ACT) $TZData(:Australia/Sydney) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Sydney)]} { + LoadTimeZoneFile Australia/Sydney +} +set TZData(:Australia/ACT) $TZData(:Australia/Sydney) diff --git a/library/tzdata/Australia/Adelaide b/library/tzdata/Australia/Adelaide index 9abe192..f04b59b 100644 --- a/library/tzdata/Australia/Adelaide +++ b/library/tzdata/Australia/Adelaide @@ -1,273 +1,273 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Adelaide) { - {-9223372036854775808 33260 0 LMT} - {-2364110060 32400 0 CST} - {-2230189200 34200 0 CST} - {-1672565340 37800 1 CST} - {-1665390600 34200 0 CST} - {-883639800 37800 1 CST} - {-876126600 34200 0 CST} - {-860398200 37800 1 CST} - {-844677000 34200 0 CST} - {-828343800 37800 1 CST} - {-813227400 34200 0 CST} - {31501800 34200 0 CST} - {57688200 37800 1 CST} - {67969800 34200 0 CST} - {89137800 37800 1 CST} - {100024200 34200 0 CST} - {120587400 37800 1 CST} - {131473800 34200 0 CST} - {152037000 37800 1 CST} - {162923400 34200 0 CST} - {183486600 37800 1 CST} - {194977800 34200 0 CST} - {215541000 37800 1 CST} - {226427400 34200 0 CST} - {246990600 37800 1 CST} - {257877000 34200 0 CST} - {278440200 37800 1 CST} - {289326600 34200 0 CST} - {309889800 37800 1 CST} - {320776200 34200 0 CST} - {341339400 37800 1 CST} - {352225800 34200 0 CST} - {372789000 37800 1 CST} - {384280200 34200 0 CST} - {404843400 37800 1 CST} - {415729800 34200 0 CST} - {436293000 37800 1 CST} - {447179400 34200 0 CST} - {467742600 37800 1 CST} - {478629000 34200 0 CST} - {499192200 37800 1 CST} - {511288200 34200 0 CST} - {530037000 37800 1 CST} - {542737800 34200 0 CST} - {562091400 37800 1 CST} - {574792200 34200 0 CST} - {594145800 37800 1 CST} - {606241800 34200 0 CST} - {625595400 37800 1 CST} - {637691400 34200 0 CST} - {657045000 37800 1 CST} - {667931400 34200 0 CST} - {688494600 37800 1 CST} - {701195400 34200 0 CST} - {719944200 37800 1 CST} - {731435400 34200 0 CST} - {751998600 37800 1 CST} - {764094600 34200 0 CST} - {783448200 37800 1 CST} - {796149000 34200 0 CST} - {814897800 37800 1 CST} - {828203400 34200 0 CST} - {846347400 37800 1 CST} - {859653000 34200 0 CST} - {877797000 37800 1 CST} - {891102600 34200 0 CST} - {909246600 37800 1 CST} - {922552200 34200 0 CST} - {941301000 37800 1 CST} - {954001800 34200 0 CST} - {972750600 37800 1 CST} - {985451400 34200 0 CST} - {1004200200 37800 1 CST} - {1017505800 34200 0 CST} - {1035649800 37800 1 CST} - {1048955400 34200 0 CST} - {1067099400 37800 1 CST} - {1080405000 34200 0 CST} - {1099153800 37800 1 CST} - {1111854600 34200 0 CST} - {1130603400 37800 1 CST} - {1143909000 34200 0 CST} - {1162053000 37800 1 CST} - {1174753800 34200 0 CST} - {1193502600 37800 1 CST} - {1207413000 34200 0 CST} - {1223137800 37800 1 CST} - {1238862600 34200 0 CST} - {1254587400 37800 1 CST} - {1270312200 34200 0 CST} - {1286037000 37800 1 CST} - {1301761800 34200 0 CST} - {1317486600 37800 1 CST} - {1333211400 34200 0 CST} - {1349541000 37800 1 CST} - {1365265800 34200 0 CST} - {1380990600 37800 1 CST} - {1396715400 34200 0 CST} - {1412440200 37800 1 CST} - {1428165000 34200 0 CST} - {1443889800 37800 1 CST} - {1459614600 34200 0 CST} - {1475339400 37800 1 CST} - {1491064200 34200 0 CST} - {1506789000 37800 1 CST} - {1522513800 34200 0 CST} - {1538843400 37800 1 CST} - {1554568200 34200 0 CST} - {1570293000 37800 1 CST} - {1586017800 34200 0 CST} - {1601742600 37800 1 CST} - {1617467400 34200 0 CST} - {1633192200 37800 1 CST} - {1648917000 34200 0 CST} - {1664641800 37800 1 CST} - {1680366600 34200 0 CST} - {1696091400 37800 1 CST} - {1712421000 34200 0 CST} - {1728145800 37800 1 CST} - {1743870600 34200 0 CST} - {1759595400 37800 1 CST} - {1775320200 34200 0 CST} - {1791045000 37800 1 CST} - {1806769800 34200 0 CST} - {1822494600 37800 1 CST} - {1838219400 34200 0 CST} - {1853944200 37800 1 CST} - {1869669000 34200 0 CST} - {1885998600 37800 1 CST} - {1901723400 34200 0 CST} - {1917448200 37800 1 CST} - {1933173000 34200 0 CST} - {1948897800 37800 1 CST} - {1964622600 34200 0 CST} - {1980347400 37800 1 CST} - {1996072200 34200 0 CST} - {2011797000 37800 1 CST} - {2027521800 34200 0 CST} - {2043246600 37800 1 CST} - {2058971400 34200 0 CST} - {2075301000 37800 1 CST} - {2091025800 34200 0 CST} - {2106750600 37800 1 CST} - {2122475400 34200 0 CST} - {2138200200 37800 1 CST} - {2153925000 34200 0 CST} - {2169649800 37800 1 CST} - {2185374600 34200 0 CST} - {2201099400 37800 1 CST} - {2216824200 34200 0 CST} - {2233153800 37800 1 CST} - {2248878600 34200 0 CST} - {2264603400 37800 1 CST} - {2280328200 34200 0 CST} - {2296053000 37800 1 CST} - {2311777800 34200 0 CST} - {2327502600 37800 1 CST} - {2343227400 34200 0 CST} - {2358952200 37800 1 CST} - {2374677000 34200 0 CST} - {2390401800 37800 1 CST} - {2406126600 34200 0 CST} - {2422456200 37800 1 CST} - {2438181000 34200 0 CST} - {2453905800 37800 1 CST} - {2469630600 34200 0 CST} - {2485355400 37800 1 CST} - {2501080200 34200 0 CST} - {2516805000 37800 1 CST} - {2532529800 34200 0 CST} - {2548254600 37800 1 CST} - {2563979400 34200 0 CST} - {2579704200 37800 1 CST} - {2596033800 34200 0 CST} - {2611758600 37800 1 CST} - {2627483400 34200 0 CST} - {2643208200 37800 1 CST} - {2658933000 34200 0 CST} - {2674657800 37800 1 CST} - {2690382600 34200 0 CST} - {2706107400 37800 1 CST} - {2721832200 34200 0 CST} - {2737557000 37800 1 CST} - {2753281800 34200 0 CST} - {2769611400 37800 1 CST} - {2785336200 34200 0 CST} - {2801061000 37800 1 CST} - {2816785800 34200 0 CST} - {2832510600 37800 1 CST} - {2848235400 34200 0 CST} - {2863960200 37800 1 CST} - {2879685000 34200 0 CST} - {2895409800 37800 1 CST} - {2911134600 34200 0 CST} - {2926859400 37800 1 CST} - {2942584200 34200 0 CST} - {2958913800 37800 1 CST} - {2974638600 34200 0 CST} - {2990363400 37800 1 CST} - {3006088200 34200 0 CST} - {3021813000 37800 1 CST} - {3037537800 34200 0 CST} - {3053262600 37800 1 CST} - {3068987400 34200 0 CST} - {3084712200 37800 1 CST} - {3100437000 34200 0 CST} - {3116766600 37800 1 CST} - {3132491400 34200 0 CST} - {3148216200 37800 1 CST} - {3163941000 34200 0 CST} - {3179665800 37800 1 CST} - {3195390600 34200 0 CST} - {3211115400 37800 1 CST} - {3226840200 34200 0 CST} - {3242565000 37800 1 CST} - {3258289800 34200 0 CST} - {3274014600 37800 1 CST} - {3289739400 34200 0 CST} - {3306069000 37800 1 CST} - {3321793800 34200 0 CST} - {3337518600 37800 1 CST} - {3353243400 34200 0 CST} - {3368968200 37800 1 CST} - {3384693000 34200 0 CST} - {3400417800 37800 1 CST} - {3416142600 34200 0 CST} - {3431867400 37800 1 CST} - {3447592200 34200 0 CST} - {3463317000 37800 1 CST} - {3479646600 34200 0 CST} - {3495371400 37800 1 CST} - {3511096200 34200 0 CST} - {3526821000 37800 1 CST} - {3542545800 34200 0 CST} - {3558270600 37800 1 CST} - {3573995400 34200 0 CST} - {3589720200 37800 1 CST} - {3605445000 34200 0 CST} - {3621169800 37800 1 CST} - {3636894600 34200 0 CST} - {3653224200 37800 1 CST} - {3668949000 34200 0 CST} - {3684673800 37800 1 CST} - {3700398600 34200 0 CST} - {3716123400 37800 1 CST} - {3731848200 34200 0 CST} - {3747573000 37800 1 CST} - {3763297800 34200 0 CST} - {3779022600 37800 1 CST} - {3794747400 34200 0 CST} - {3810472200 37800 1 CST} - {3826197000 34200 0 CST} - {3842526600 37800 1 CST} - {3858251400 34200 0 CST} - {3873976200 37800 1 CST} - {3889701000 34200 0 CST} - {3905425800 37800 1 CST} - {3921150600 34200 0 CST} - {3936875400 37800 1 CST} - {3952600200 34200 0 CST} - {3968325000 37800 1 CST} - {3984049800 34200 0 CST} - {4000379400 37800 1 CST} - {4016104200 34200 0 CST} - {4031829000 37800 1 CST} - {4047553800 34200 0 CST} - {4063278600 37800 1 CST} - {4079003400 34200 0 CST} - {4094728200 37800 1 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Adelaide) { + {-9223372036854775808 33260 0 LMT} + {-2364110060 32400 0 CST} + {-2230189200 34200 0 CST} + {-1672565340 37800 1 CST} + {-1665390600 34200 0 CST} + {-883639800 37800 1 CST} + {-876126600 34200 0 CST} + {-860398200 37800 1 CST} + {-844677000 34200 0 CST} + {-828343800 37800 1 CST} + {-813227400 34200 0 CST} + {31501800 34200 0 CST} + {57688200 37800 1 CST} + {67969800 34200 0 CST} + {89137800 37800 1 CST} + {100024200 34200 0 CST} + {120587400 37800 1 CST} + {131473800 34200 0 CST} + {152037000 37800 1 CST} + {162923400 34200 0 CST} + {183486600 37800 1 CST} + {194977800 34200 0 CST} + {215541000 37800 1 CST} + {226427400 34200 0 CST} + {246990600 37800 1 CST} + {257877000 34200 0 CST} + {278440200 37800 1 CST} + {289326600 34200 0 CST} + {309889800 37800 1 CST} + {320776200 34200 0 CST} + {341339400 37800 1 CST} + {352225800 34200 0 CST} + {372789000 37800 1 CST} + {384280200 34200 0 CST} + {404843400 37800 1 CST} + {415729800 34200 0 CST} + {436293000 37800 1 CST} + {447179400 34200 0 CST} + {467742600 37800 1 CST} + {478629000 34200 0 CST} + {499192200 37800 1 CST} + {511288200 34200 0 CST} + {530037000 37800 1 CST} + {542737800 34200 0 CST} + {562091400 37800 1 CST} + {574792200 34200 0 CST} + {594145800 37800 1 CST} + {606241800 34200 0 CST} + {625595400 37800 1 CST} + {637691400 34200 0 CST} + {657045000 37800 1 CST} + {667931400 34200 0 CST} + {688494600 37800 1 CST} + {701195400 34200 0 CST} + {719944200 37800 1 CST} + {731435400 34200 0 CST} + {751998600 37800 1 CST} + {764094600 34200 0 CST} + {783448200 37800 1 CST} + {796149000 34200 0 CST} + {814897800 37800 1 CST} + {828203400 34200 0 CST} + {846347400 37800 1 CST} + {859653000 34200 0 CST} + {877797000 37800 1 CST} + {891102600 34200 0 CST} + {909246600 37800 1 CST} + {922552200 34200 0 CST} + {941301000 37800 1 CST} + {954001800 34200 0 CST} + {972750600 37800 1 CST} + {985451400 34200 0 CST} + {1004200200 37800 1 CST} + {1017505800 34200 0 CST} + {1035649800 37800 1 CST} + {1048955400 34200 0 CST} + {1067099400 37800 1 CST} + {1080405000 34200 0 CST} + {1099153800 37800 1 CST} + {1111854600 34200 0 CST} + {1130603400 37800 1 CST} + {1143909000 34200 0 CST} + {1162053000 37800 1 CST} + {1174753800 34200 0 CST} + {1193502600 37800 1 CST} + {1207413000 34200 0 CST} + {1223137800 37800 1 CST} + {1238862600 34200 0 CST} + {1254587400 37800 1 CST} + {1270312200 34200 0 CST} + {1286037000 37800 1 CST} + {1301761800 34200 0 CST} + {1317486600 37800 1 CST} + {1333211400 34200 0 CST} + {1349541000 37800 1 CST} + {1365265800 34200 0 CST} + {1380990600 37800 1 CST} + {1396715400 34200 0 CST} + {1412440200 37800 1 CST} + {1428165000 34200 0 CST} + {1443889800 37800 1 CST} + {1459614600 34200 0 CST} + {1475339400 37800 1 CST} + {1491064200 34200 0 CST} + {1506789000 37800 1 CST} + {1522513800 34200 0 CST} + {1538843400 37800 1 CST} + {1554568200 34200 0 CST} + {1570293000 37800 1 CST} + {1586017800 34200 0 CST} + {1601742600 37800 1 CST} + {1617467400 34200 0 CST} + {1633192200 37800 1 CST} + {1648917000 34200 0 CST} + {1664641800 37800 1 CST} + {1680366600 34200 0 CST} + {1696091400 37800 1 CST} + {1712421000 34200 0 CST} + {1728145800 37800 1 CST} + {1743870600 34200 0 CST} + {1759595400 37800 1 CST} + {1775320200 34200 0 CST} + {1791045000 37800 1 CST} + {1806769800 34200 0 CST} + {1822494600 37800 1 CST} + {1838219400 34200 0 CST} + {1853944200 37800 1 CST} + {1869669000 34200 0 CST} + {1885998600 37800 1 CST} + {1901723400 34200 0 CST} + {1917448200 37800 1 CST} + {1933173000 34200 0 CST} + {1948897800 37800 1 CST} + {1964622600 34200 0 CST} + {1980347400 37800 1 CST} + {1996072200 34200 0 CST} + {2011797000 37800 1 CST} + {2027521800 34200 0 CST} + {2043246600 37800 1 CST} + {2058971400 34200 0 CST} + {2075301000 37800 1 CST} + {2091025800 34200 0 CST} + {2106750600 37800 1 CST} + {2122475400 34200 0 CST} + {2138200200 37800 1 CST} + {2153925000 34200 0 CST} + {2169649800 37800 1 CST} + {2185374600 34200 0 CST} + {2201099400 37800 1 CST} + {2216824200 34200 0 CST} + {2233153800 37800 1 CST} + {2248878600 34200 0 CST} + {2264603400 37800 1 CST} + {2280328200 34200 0 CST} + {2296053000 37800 1 CST} + {2311777800 34200 0 CST} + {2327502600 37800 1 CST} + {2343227400 34200 0 CST} + {2358952200 37800 1 CST} + {2374677000 34200 0 CST} + {2390401800 37800 1 CST} + {2406126600 34200 0 CST} + {2422456200 37800 1 CST} + {2438181000 34200 0 CST} + {2453905800 37800 1 CST} + {2469630600 34200 0 CST} + {2485355400 37800 1 CST} + {2501080200 34200 0 CST} + {2516805000 37800 1 CST} + {2532529800 34200 0 CST} + {2548254600 37800 1 CST} + {2563979400 34200 0 CST} + {2579704200 37800 1 CST} + {2596033800 34200 0 CST} + {2611758600 37800 1 CST} + {2627483400 34200 0 CST} + {2643208200 37800 1 CST} + {2658933000 34200 0 CST} + {2674657800 37800 1 CST} + {2690382600 34200 0 CST} + {2706107400 37800 1 CST} + {2721832200 34200 0 CST} + {2737557000 37800 1 CST} + {2753281800 34200 0 CST} + {2769611400 37800 1 CST} + {2785336200 34200 0 CST} + {2801061000 37800 1 CST} + {2816785800 34200 0 CST} + {2832510600 37800 1 CST} + {2848235400 34200 0 CST} + {2863960200 37800 1 CST} + {2879685000 34200 0 CST} + {2895409800 37800 1 CST} + {2911134600 34200 0 CST} + {2926859400 37800 1 CST} + {2942584200 34200 0 CST} + {2958913800 37800 1 CST} + {2974638600 34200 0 CST} + {2990363400 37800 1 CST} + {3006088200 34200 0 CST} + {3021813000 37800 1 CST} + {3037537800 34200 0 CST} + {3053262600 37800 1 CST} + {3068987400 34200 0 CST} + {3084712200 37800 1 CST} + {3100437000 34200 0 CST} + {3116766600 37800 1 CST} + {3132491400 34200 0 CST} + {3148216200 37800 1 CST} + {3163941000 34200 0 CST} + {3179665800 37800 1 CST} + {3195390600 34200 0 CST} + {3211115400 37800 1 CST} + {3226840200 34200 0 CST} + {3242565000 37800 1 CST} + {3258289800 34200 0 CST} + {3274014600 37800 1 CST} + {3289739400 34200 0 CST} + {3306069000 37800 1 CST} + {3321793800 34200 0 CST} + {3337518600 37800 1 CST} + {3353243400 34200 0 CST} + {3368968200 37800 1 CST} + {3384693000 34200 0 CST} + {3400417800 37800 1 CST} + {3416142600 34200 0 CST} + {3431867400 37800 1 CST} + {3447592200 34200 0 CST} + {3463317000 37800 1 CST} + {3479646600 34200 0 CST} + {3495371400 37800 1 CST} + {3511096200 34200 0 CST} + {3526821000 37800 1 CST} + {3542545800 34200 0 CST} + {3558270600 37800 1 CST} + {3573995400 34200 0 CST} + {3589720200 37800 1 CST} + {3605445000 34200 0 CST} + {3621169800 37800 1 CST} + {3636894600 34200 0 CST} + {3653224200 37800 1 CST} + {3668949000 34200 0 CST} + {3684673800 37800 1 CST} + {3700398600 34200 0 CST} + {3716123400 37800 1 CST} + {3731848200 34200 0 CST} + {3747573000 37800 1 CST} + {3763297800 34200 0 CST} + {3779022600 37800 1 CST} + {3794747400 34200 0 CST} + {3810472200 37800 1 CST} + {3826197000 34200 0 CST} + {3842526600 37800 1 CST} + {3858251400 34200 0 CST} + {3873976200 37800 1 CST} + {3889701000 34200 0 CST} + {3905425800 37800 1 CST} + {3921150600 34200 0 CST} + {3936875400 37800 1 CST} + {3952600200 34200 0 CST} + {3968325000 37800 1 CST} + {3984049800 34200 0 CST} + {4000379400 37800 1 CST} + {4016104200 34200 0 CST} + {4031829000 37800 1 CST} + {4047553800 34200 0 CST} + {4063278600 37800 1 CST} + {4079003400 34200 0 CST} + {4094728200 37800 1 CST} +} diff --git a/library/tzdata/Australia/Brisbane b/library/tzdata/Australia/Brisbane index fe6d154..dd0a57f 100644 --- a/library/tzdata/Australia/Brisbane +++ b/library/tzdata/Australia/Brisbane @@ -1,23 +1,23 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Brisbane) { - {-9223372036854775808 36728 0 LMT} - {-2366791928 36000 0 EST} - {-1672567140 39600 1 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {31500000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {625593600 39600 1 EST} - {636480000 36000 0 EST} - {657043200 39600 1 EST} - {667929600 36000 0 EST} - {688492800 39600 1 EST} - {699379200 36000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Brisbane) { + {-9223372036854775808 36728 0 LMT} + {-2366791928 36000 0 EST} + {-1672567140 39600 1 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {31500000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {625593600 39600 1 EST} + {636480000 36000 0 EST} + {657043200 39600 1 EST} + {667929600 36000 0 EST} + {688492800 39600 1 EST} + {699379200 36000 0 EST} +} diff --git a/library/tzdata/Australia/Broken_Hill b/library/tzdata/Australia/Broken_Hill index 35cbb7e..013859b 100644 --- a/library/tzdata/Australia/Broken_Hill +++ b/library/tzdata/Australia/Broken_Hill @@ -1,275 +1,275 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Broken_Hill) { - {-9223372036854775808 33948 0 LMT} - {-2364110748 36000 0 EST} - {-2314951200 32400 0 CST} - {-2230189200 34200 0 CST} - {-1672565340 37800 1 CST} - {-1665390600 34200 0 CST} - {-883639800 37800 1 CST} - {-876126600 34200 0 CST} - {-860398200 37800 1 CST} - {-844677000 34200 0 CST} - {-828343800 37800 1 CST} - {-813227400 34200 0 CST} - {31501800 34200 0 CST} - {57688200 37800 1 CST} - {67969800 34200 0 CST} - {89137800 37800 1 CST} - {100024200 34200 0 CST} - {120587400 37800 1 CST} - {131473800 34200 0 CST} - {152037000 37800 1 CST} - {162923400 34200 0 CST} - {183486600 37800 1 CST} - {194977800 34200 0 CST} - {215541000 37800 1 CST} - {226427400 34200 0 CST} - {246990600 37800 1 CST} - {257877000 34200 0 CST} - {278440200 37800 1 CST} - {289326600 34200 0 CST} - {309889800 37800 1 CST} - {320776200 34200 0 CST} - {341339400 37800 1 CST} - {352225800 34200 0 CST} - {372789000 37800 1 CST} - {386699400 34200 0 CST} - {404843400 37800 1 CST} - {415729800 34200 0 CST} - {436293000 37800 1 CST} - {447179400 34200 0 CST} - {467742600 37800 1 CST} - {478629000 34200 0 CST} - {499192200 37800 1 CST} - {511288200 34200 0 CST} - {530037000 37800 1 CST} - {542737800 34200 0 CST} - {562091400 37800 1 CST} - {574792200 34200 0 CST} - {594145800 37800 1 CST} - {606241800 34200 0 CST} - {625595400 37800 1 CST} - {636481800 34200 0 CST} - {657045000 37800 1 CST} - {667931400 34200 0 CST} - {688494600 37800 1 CST} - {699381000 34200 0 CST} - {719944200 37800 1 CST} - {731435400 34200 0 CST} - {751998600 37800 1 CST} - {762885000 34200 0 CST} - {783448200 37800 1 CST} - {794334600 34200 0 CST} - {814897800 37800 1 CST} - {828203400 34200 0 CST} - {846347400 37800 1 CST} - {859653000 34200 0 CST} - {877797000 37800 1 CST} - {891102600 34200 0 CST} - {909246600 37800 1 CST} - {922552200 34200 0 CST} - {941301000 37800 1 CST} - {946647000 37800 0 CST} - {954001800 34200 0 CST} - {972750600 37800 1 CST} - {985451400 34200 0 CST} - {1004200200 37800 1 CST} - {1017505800 34200 0 CST} - {1035649800 37800 1 CST} - {1048955400 34200 0 CST} - {1067099400 37800 1 CST} - {1080405000 34200 0 CST} - {1099153800 37800 1 CST} - {1111854600 34200 0 CST} - {1130603400 37800 1 CST} - {1143909000 34200 0 CST} - {1162053000 37800 1 CST} - {1174753800 34200 0 CST} - {1193502600 37800 1 CST} - {1207413000 34200 0 CST} - {1223137800 37800 1 CST} - {1238862600 34200 0 CST} - {1254587400 37800 1 CST} - {1270312200 34200 0 CST} - {1286037000 37800 1 CST} - {1301761800 34200 0 CST} - {1317486600 37800 1 CST} - {1333211400 34200 0 CST} - {1349541000 37800 1 CST} - {1365265800 34200 0 CST} - {1380990600 37800 1 CST} - {1396715400 34200 0 CST} - {1412440200 37800 1 CST} - {1428165000 34200 0 CST} - {1443889800 37800 1 CST} - {1459614600 34200 0 CST} - {1475339400 37800 1 CST} - {1491064200 34200 0 CST} - {1506789000 37800 1 CST} - {1522513800 34200 0 CST} - {1538843400 37800 1 CST} - {1554568200 34200 0 CST} - {1570293000 37800 1 CST} - {1586017800 34200 0 CST} - {1601742600 37800 1 CST} - {1617467400 34200 0 CST} - {1633192200 37800 1 CST} - {1648917000 34200 0 CST} - {1664641800 37800 1 CST} - {1680366600 34200 0 CST} - {1696091400 37800 1 CST} - {1712421000 34200 0 CST} - {1728145800 37800 1 CST} - {1743870600 34200 0 CST} - {1759595400 37800 1 CST} - {1775320200 34200 0 CST} - {1791045000 37800 1 CST} - {1806769800 34200 0 CST} - {1822494600 37800 1 CST} - {1838219400 34200 0 CST} - {1853944200 37800 1 CST} - {1869669000 34200 0 CST} - {1885998600 37800 1 CST} - {1901723400 34200 0 CST} - {1917448200 37800 1 CST} - {1933173000 34200 0 CST} - {1948897800 37800 1 CST} - {1964622600 34200 0 CST} - {1980347400 37800 1 CST} - {1996072200 34200 0 CST} - {2011797000 37800 1 CST} - {2027521800 34200 0 CST} - {2043246600 37800 1 CST} - {2058971400 34200 0 CST} - {2075301000 37800 1 CST} - {2091025800 34200 0 CST} - {2106750600 37800 1 CST} - {2122475400 34200 0 CST} - {2138200200 37800 1 CST} - {2153925000 34200 0 CST} - {2169649800 37800 1 CST} - {2185374600 34200 0 CST} - {2201099400 37800 1 CST} - {2216824200 34200 0 CST} - {2233153800 37800 1 CST} - {2248878600 34200 0 CST} - {2264603400 37800 1 CST} - {2280328200 34200 0 CST} - {2296053000 37800 1 CST} - {2311777800 34200 0 CST} - {2327502600 37800 1 CST} - {2343227400 34200 0 CST} - {2358952200 37800 1 CST} - {2374677000 34200 0 CST} - {2390401800 37800 1 CST} - {2406126600 34200 0 CST} - {2422456200 37800 1 CST} - {2438181000 34200 0 CST} - {2453905800 37800 1 CST} - {2469630600 34200 0 CST} - {2485355400 37800 1 CST} - {2501080200 34200 0 CST} - {2516805000 37800 1 CST} - {2532529800 34200 0 CST} - {2548254600 37800 1 CST} - {2563979400 34200 0 CST} - {2579704200 37800 1 CST} - {2596033800 34200 0 CST} - {2611758600 37800 1 CST} - {2627483400 34200 0 CST} - {2643208200 37800 1 CST} - {2658933000 34200 0 CST} - {2674657800 37800 1 CST} - {2690382600 34200 0 CST} - {2706107400 37800 1 CST} - {2721832200 34200 0 CST} - {2737557000 37800 1 CST} - {2753281800 34200 0 CST} - {2769611400 37800 1 CST} - {2785336200 34200 0 CST} - {2801061000 37800 1 CST} - {2816785800 34200 0 CST} - {2832510600 37800 1 CST} - {2848235400 34200 0 CST} - {2863960200 37800 1 CST} - {2879685000 34200 0 CST} - {2895409800 37800 1 CST} - {2911134600 34200 0 CST} - {2926859400 37800 1 CST} - {2942584200 34200 0 CST} - {2958913800 37800 1 CST} - {2974638600 34200 0 CST} - {2990363400 37800 1 CST} - {3006088200 34200 0 CST} - {3021813000 37800 1 CST} - {3037537800 34200 0 CST} - {3053262600 37800 1 CST} - {3068987400 34200 0 CST} - {3084712200 37800 1 CST} - {3100437000 34200 0 CST} - {3116766600 37800 1 CST} - {3132491400 34200 0 CST} - {3148216200 37800 1 CST} - {3163941000 34200 0 CST} - {3179665800 37800 1 CST} - {3195390600 34200 0 CST} - {3211115400 37800 1 CST} - {3226840200 34200 0 CST} - {3242565000 37800 1 CST} - {3258289800 34200 0 CST} - {3274014600 37800 1 CST} - {3289739400 34200 0 CST} - {3306069000 37800 1 CST} - {3321793800 34200 0 CST} - {3337518600 37800 1 CST} - {3353243400 34200 0 CST} - {3368968200 37800 1 CST} - {3384693000 34200 0 CST} - {3400417800 37800 1 CST} - {3416142600 34200 0 CST} - {3431867400 37800 1 CST} - {3447592200 34200 0 CST} - {3463317000 37800 1 CST} - {3479646600 34200 0 CST} - {3495371400 37800 1 CST} - {3511096200 34200 0 CST} - {3526821000 37800 1 CST} - {3542545800 34200 0 CST} - {3558270600 37800 1 CST} - {3573995400 34200 0 CST} - {3589720200 37800 1 CST} - {3605445000 34200 0 CST} - {3621169800 37800 1 CST} - {3636894600 34200 0 CST} - {3653224200 37800 1 CST} - {3668949000 34200 0 CST} - {3684673800 37800 1 CST} - {3700398600 34200 0 CST} - {3716123400 37800 1 CST} - {3731848200 34200 0 CST} - {3747573000 37800 1 CST} - {3763297800 34200 0 CST} - {3779022600 37800 1 CST} - {3794747400 34200 0 CST} - {3810472200 37800 1 CST} - {3826197000 34200 0 CST} - {3842526600 37800 1 CST} - {3858251400 34200 0 CST} - {3873976200 37800 1 CST} - {3889701000 34200 0 CST} - {3905425800 37800 1 CST} - {3921150600 34200 0 CST} - {3936875400 37800 1 CST} - {3952600200 34200 0 CST} - {3968325000 37800 1 CST} - {3984049800 34200 0 CST} - {4000379400 37800 1 CST} - {4016104200 34200 0 CST} - {4031829000 37800 1 CST} - {4047553800 34200 0 CST} - {4063278600 37800 1 CST} - {4079003400 34200 0 CST} - {4094728200 37800 1 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Broken_Hill) { + {-9223372036854775808 33948 0 LMT} + {-2364110748 36000 0 EST} + {-2314951200 32400 0 CST} + {-2230189200 34200 0 CST} + {-1672565340 37800 1 CST} + {-1665390600 34200 0 CST} + {-883639800 37800 1 CST} + {-876126600 34200 0 CST} + {-860398200 37800 1 CST} + {-844677000 34200 0 CST} + {-828343800 37800 1 CST} + {-813227400 34200 0 CST} + {31501800 34200 0 CST} + {57688200 37800 1 CST} + {67969800 34200 0 CST} + {89137800 37800 1 CST} + {100024200 34200 0 CST} + {120587400 37800 1 CST} + {131473800 34200 0 CST} + {152037000 37800 1 CST} + {162923400 34200 0 CST} + {183486600 37800 1 CST} + {194977800 34200 0 CST} + {215541000 37800 1 CST} + {226427400 34200 0 CST} + {246990600 37800 1 CST} + {257877000 34200 0 CST} + {278440200 37800 1 CST} + {289326600 34200 0 CST} + {309889800 37800 1 CST} + {320776200 34200 0 CST} + {341339400 37800 1 CST} + {352225800 34200 0 CST} + {372789000 37800 1 CST} + {386699400 34200 0 CST} + {404843400 37800 1 CST} + {415729800 34200 0 CST} + {436293000 37800 1 CST} + {447179400 34200 0 CST} + {467742600 37800 1 CST} + {478629000 34200 0 CST} + {499192200 37800 1 CST} + {511288200 34200 0 CST} + {530037000 37800 1 CST} + {542737800 34200 0 CST} + {562091400 37800 1 CST} + {574792200 34200 0 CST} + {594145800 37800 1 CST} + {606241800 34200 0 CST} + {625595400 37800 1 CST} + {636481800 34200 0 CST} + {657045000 37800 1 CST} + {667931400 34200 0 CST} + {688494600 37800 1 CST} + {699381000 34200 0 CST} + {719944200 37800 1 CST} + {731435400 34200 0 CST} + {751998600 37800 1 CST} + {762885000 34200 0 CST} + {783448200 37800 1 CST} + {794334600 34200 0 CST} + {814897800 37800 1 CST} + {828203400 34200 0 CST} + {846347400 37800 1 CST} + {859653000 34200 0 CST} + {877797000 37800 1 CST} + {891102600 34200 0 CST} + {909246600 37800 1 CST} + {922552200 34200 0 CST} + {941301000 37800 1 CST} + {946647000 37800 0 CST} + {954001800 34200 0 CST} + {972750600 37800 1 CST} + {985451400 34200 0 CST} + {1004200200 37800 1 CST} + {1017505800 34200 0 CST} + {1035649800 37800 1 CST} + {1048955400 34200 0 CST} + {1067099400 37800 1 CST} + {1080405000 34200 0 CST} + {1099153800 37800 1 CST} + {1111854600 34200 0 CST} + {1130603400 37800 1 CST} + {1143909000 34200 0 CST} + {1162053000 37800 1 CST} + {1174753800 34200 0 CST} + {1193502600 37800 1 CST} + {1207413000 34200 0 CST} + {1223137800 37800 1 CST} + {1238862600 34200 0 CST} + {1254587400 37800 1 CST} + {1270312200 34200 0 CST} + {1286037000 37800 1 CST} + {1301761800 34200 0 CST} + {1317486600 37800 1 CST} + {1333211400 34200 0 CST} + {1349541000 37800 1 CST} + {1365265800 34200 0 CST} + {1380990600 37800 1 CST} + {1396715400 34200 0 CST} + {1412440200 37800 1 CST} + {1428165000 34200 0 CST} + {1443889800 37800 1 CST} + {1459614600 34200 0 CST} + {1475339400 37800 1 CST} + {1491064200 34200 0 CST} + {1506789000 37800 1 CST} + {1522513800 34200 0 CST} + {1538843400 37800 1 CST} + {1554568200 34200 0 CST} + {1570293000 37800 1 CST} + {1586017800 34200 0 CST} + {1601742600 37800 1 CST} + {1617467400 34200 0 CST} + {1633192200 37800 1 CST} + {1648917000 34200 0 CST} + {1664641800 37800 1 CST} + {1680366600 34200 0 CST} + {1696091400 37800 1 CST} + {1712421000 34200 0 CST} + {1728145800 37800 1 CST} + {1743870600 34200 0 CST} + {1759595400 37800 1 CST} + {1775320200 34200 0 CST} + {1791045000 37800 1 CST} + {1806769800 34200 0 CST} + {1822494600 37800 1 CST} + {1838219400 34200 0 CST} + {1853944200 37800 1 CST} + {1869669000 34200 0 CST} + {1885998600 37800 1 CST} + {1901723400 34200 0 CST} + {1917448200 37800 1 CST} + {1933173000 34200 0 CST} + {1948897800 37800 1 CST} + {1964622600 34200 0 CST} + {1980347400 37800 1 CST} + {1996072200 34200 0 CST} + {2011797000 37800 1 CST} + {2027521800 34200 0 CST} + {2043246600 37800 1 CST} + {2058971400 34200 0 CST} + {2075301000 37800 1 CST} + {2091025800 34200 0 CST} + {2106750600 37800 1 CST} + {2122475400 34200 0 CST} + {2138200200 37800 1 CST} + {2153925000 34200 0 CST} + {2169649800 37800 1 CST} + {2185374600 34200 0 CST} + {2201099400 37800 1 CST} + {2216824200 34200 0 CST} + {2233153800 37800 1 CST} + {2248878600 34200 0 CST} + {2264603400 37800 1 CST} + {2280328200 34200 0 CST} + {2296053000 37800 1 CST} + {2311777800 34200 0 CST} + {2327502600 37800 1 CST} + {2343227400 34200 0 CST} + {2358952200 37800 1 CST} + {2374677000 34200 0 CST} + {2390401800 37800 1 CST} + {2406126600 34200 0 CST} + {2422456200 37800 1 CST} + {2438181000 34200 0 CST} + {2453905800 37800 1 CST} + {2469630600 34200 0 CST} + {2485355400 37800 1 CST} + {2501080200 34200 0 CST} + {2516805000 37800 1 CST} + {2532529800 34200 0 CST} + {2548254600 37800 1 CST} + {2563979400 34200 0 CST} + {2579704200 37800 1 CST} + {2596033800 34200 0 CST} + {2611758600 37800 1 CST} + {2627483400 34200 0 CST} + {2643208200 37800 1 CST} + {2658933000 34200 0 CST} + {2674657800 37800 1 CST} + {2690382600 34200 0 CST} + {2706107400 37800 1 CST} + {2721832200 34200 0 CST} + {2737557000 37800 1 CST} + {2753281800 34200 0 CST} + {2769611400 37800 1 CST} + {2785336200 34200 0 CST} + {2801061000 37800 1 CST} + {2816785800 34200 0 CST} + {2832510600 37800 1 CST} + {2848235400 34200 0 CST} + {2863960200 37800 1 CST} + {2879685000 34200 0 CST} + {2895409800 37800 1 CST} + {2911134600 34200 0 CST} + {2926859400 37800 1 CST} + {2942584200 34200 0 CST} + {2958913800 37800 1 CST} + {2974638600 34200 0 CST} + {2990363400 37800 1 CST} + {3006088200 34200 0 CST} + {3021813000 37800 1 CST} + {3037537800 34200 0 CST} + {3053262600 37800 1 CST} + {3068987400 34200 0 CST} + {3084712200 37800 1 CST} + {3100437000 34200 0 CST} + {3116766600 37800 1 CST} + {3132491400 34200 0 CST} + {3148216200 37800 1 CST} + {3163941000 34200 0 CST} + {3179665800 37800 1 CST} + {3195390600 34200 0 CST} + {3211115400 37800 1 CST} + {3226840200 34200 0 CST} + {3242565000 37800 1 CST} + {3258289800 34200 0 CST} + {3274014600 37800 1 CST} + {3289739400 34200 0 CST} + {3306069000 37800 1 CST} + {3321793800 34200 0 CST} + {3337518600 37800 1 CST} + {3353243400 34200 0 CST} + {3368968200 37800 1 CST} + {3384693000 34200 0 CST} + {3400417800 37800 1 CST} + {3416142600 34200 0 CST} + {3431867400 37800 1 CST} + {3447592200 34200 0 CST} + {3463317000 37800 1 CST} + {3479646600 34200 0 CST} + {3495371400 37800 1 CST} + {3511096200 34200 0 CST} + {3526821000 37800 1 CST} + {3542545800 34200 0 CST} + {3558270600 37800 1 CST} + {3573995400 34200 0 CST} + {3589720200 37800 1 CST} + {3605445000 34200 0 CST} + {3621169800 37800 1 CST} + {3636894600 34200 0 CST} + {3653224200 37800 1 CST} + {3668949000 34200 0 CST} + {3684673800 37800 1 CST} + {3700398600 34200 0 CST} + {3716123400 37800 1 CST} + {3731848200 34200 0 CST} + {3747573000 37800 1 CST} + {3763297800 34200 0 CST} + {3779022600 37800 1 CST} + {3794747400 34200 0 CST} + {3810472200 37800 1 CST} + {3826197000 34200 0 CST} + {3842526600 37800 1 CST} + {3858251400 34200 0 CST} + {3873976200 37800 1 CST} + {3889701000 34200 0 CST} + {3905425800 37800 1 CST} + {3921150600 34200 0 CST} + {3936875400 37800 1 CST} + {3952600200 34200 0 CST} + {3968325000 37800 1 CST} + {3984049800 34200 0 CST} + {4000379400 37800 1 CST} + {4016104200 34200 0 CST} + {4031829000 37800 1 CST} + {4047553800 34200 0 CST} + {4063278600 37800 1 CST} + {4079003400 34200 0 CST} + {4094728200 37800 1 CST} +} diff --git a/library/tzdata/Australia/Canberra b/library/tzdata/Australia/Canberra index 0b7b9ca..b0fb475 100644 --- a/library/tzdata/Australia/Canberra +++ b/library/tzdata/Australia/Canberra @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Sydney)]} { - LoadTimeZoneFile Australia/Sydney -} -set TZData(:Australia/Canberra) $TZData(:Australia/Sydney) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Sydney)]} { + LoadTimeZoneFile Australia/Sydney +} +set TZData(:Australia/Canberra) $TZData(:Australia/Sydney) diff --git a/library/tzdata/Australia/Currie b/library/tzdata/Australia/Currie index ae6d1f0..c949bc4 100644 --- a/library/tzdata/Australia/Currie +++ b/library/tzdata/Australia/Currie @@ -1,273 +1,273 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Currie) { - {-9223372036854775808 34528 0 LMT} - {-2345794528 36000 0 EST} - {-1680508800 39600 1 EST} - {-1669892400 39600 0 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {47138400 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {89136000 39600 1 EST} - {100022400 36000 0 EST} - {120585600 39600 1 EST} - {131472000 36000 0 EST} - {152035200 39600 1 EST} - {162921600 36000 0 EST} - {183484800 39600 1 EST} - {194976000 36000 0 EST} - {215539200 39600 1 EST} - {226425600 36000 0 EST} - {246988800 39600 1 EST} - {257875200 36000 0 EST} - {278438400 39600 1 EST} - {289324800 36000 0 EST} - {309888000 39600 1 EST} - {320774400 36000 0 EST} - {341337600 39600 1 EST} - {352224000 36000 0 EST} - {372787200 39600 1 EST} - {386092800 36000 0 EST} - {404841600 39600 1 EST} - {417542400 36000 0 EST} - {436291200 39600 1 EST} - {447177600 36000 0 EST} - {467740800 39600 1 EST} - {478627200 36000 0 EST} - {499190400 39600 1 EST} - {510076800 36000 0 EST} - {530035200 39600 1 EST} - {542736000 36000 0 EST} - {562089600 39600 1 EST} - {574790400 36000 0 EST} - {594144000 39600 1 EST} - {606240000 36000 0 EST} - {625593600 39600 1 EST} - {637689600 36000 0 EST} - {657043200 39600 1 EST} - {670348800 36000 0 EST} - {686678400 39600 1 EST} - {701798400 36000 0 EST} - {718128000 39600 1 EST} - {733248000 36000 0 EST} - {749577600 39600 1 EST} - {764697600 36000 0 EST} - {781027200 39600 1 EST} - {796147200 36000 0 EST} - {812476800 39600 1 EST} - {828201600 36000 0 EST} - {844531200 39600 1 EST} - {859651200 36000 0 EST} - {875980800 39600 1 EST} - {891100800 36000 0 EST} - {907430400 39600 1 EST} - {922550400 36000 0 EST} - {938880000 39600 1 EST} - {954000000 36000 0 EST} - {967305600 39600 1 EST} - {985449600 36000 0 EST} - {1002384000 39600 1 EST} - {1017504000 36000 0 EST} - {1033833600 39600 1 EST} - {1048953600 36000 0 EST} - {1065283200 39600 1 EST} - {1080403200 36000 0 EST} - {1096732800 39600 1 EST} - {1111852800 36000 0 EST} - {1128182400 39600 1 EST} - {1143907200 36000 0 EST} - {1159632000 39600 1 EST} - {1174752000 36000 0 EST} - {1191686400 39600 1 EST} - {1207411200 36000 0 EST} - {1223136000 39600 1 EST} - {1238860800 36000 0 EST} - {1254585600 39600 1 EST} - {1270310400 36000 0 EST} - {1286035200 39600 1 EST} - {1301760000 36000 0 EST} - {1317484800 39600 1 EST} - {1333209600 36000 0 EST} - {1349539200 39600 1 EST} - {1365264000 36000 0 EST} - {1380988800 39600 1 EST} - {1396713600 36000 0 EST} - {1412438400 39600 1 EST} - {1428163200 36000 0 EST} - {1443888000 39600 1 EST} - {1459612800 36000 0 EST} - {1475337600 39600 1 EST} - {1491062400 36000 0 EST} - {1506787200 39600 1 EST} - {1522512000 36000 0 EST} - {1538841600 39600 1 EST} - {1554566400 36000 0 EST} - {1570291200 39600 1 EST} - {1586016000 36000 0 EST} - {1601740800 39600 1 EST} - {1617465600 36000 0 EST} - {1633190400 39600 1 EST} - {1648915200 36000 0 EST} - {1664640000 39600 1 EST} - {1680364800 36000 0 EST} - {1696089600 39600 1 EST} - {1712419200 36000 0 EST} - {1728144000 39600 1 EST} - {1743868800 36000 0 EST} - {1759593600 39600 1 EST} - {1775318400 36000 0 EST} - {1791043200 39600 1 EST} - {1806768000 36000 0 EST} - {1822492800 39600 1 EST} - {1838217600 36000 0 EST} - {1853942400 39600 1 EST} - {1869667200 36000 0 EST} - {1885996800 39600 1 EST} - {1901721600 36000 0 EST} - {1917446400 39600 1 EST} - {1933171200 36000 0 EST} - {1948896000 39600 1 EST} - {1964620800 36000 0 EST} - {1980345600 39600 1 EST} - {1996070400 36000 0 EST} - {2011795200 39600 1 EST} - {2027520000 36000 0 EST} - {2043244800 39600 1 EST} - {2058969600 36000 0 EST} - {2075299200 39600 1 EST} - {2091024000 36000 0 EST} - {2106748800 39600 1 EST} - {2122473600 36000 0 EST} - {2138198400 39600 1 EST} - {2153923200 36000 0 EST} - {2169648000 39600 1 EST} - {2185372800 36000 0 EST} - {2201097600 39600 1 EST} - {2216822400 36000 0 EST} - {2233152000 39600 1 EST} - {2248876800 36000 0 EST} - {2264601600 39600 1 EST} - {2280326400 36000 0 EST} - {2296051200 39600 1 EST} - {2311776000 36000 0 EST} - {2327500800 39600 1 EST} - {2343225600 36000 0 EST} - {2358950400 39600 1 EST} - {2374675200 36000 0 EST} - {2390400000 39600 1 EST} - {2406124800 36000 0 EST} - {2422454400 39600 1 EST} - {2438179200 36000 0 EST} - {2453904000 39600 1 EST} - {2469628800 36000 0 EST} - {2485353600 39600 1 EST} - {2501078400 36000 0 EST} - {2516803200 39600 1 EST} - {2532528000 36000 0 EST} - {2548252800 39600 1 EST} - {2563977600 36000 0 EST} - {2579702400 39600 1 EST} - {2596032000 36000 0 EST} - {2611756800 39600 1 EST} - {2627481600 36000 0 EST} - {2643206400 39600 1 EST} - {2658931200 36000 0 EST} - {2674656000 39600 1 EST} - {2690380800 36000 0 EST} - {2706105600 39600 1 EST} - {2721830400 36000 0 EST} - {2737555200 39600 1 EST} - {2753280000 36000 0 EST} - {2769609600 39600 1 EST} - {2785334400 36000 0 EST} - {2801059200 39600 1 EST} - {2816784000 36000 0 EST} - {2832508800 39600 1 EST} - {2848233600 36000 0 EST} - {2863958400 39600 1 EST} - {2879683200 36000 0 EST} - {2895408000 39600 1 EST} - {2911132800 36000 0 EST} - {2926857600 39600 1 EST} - {2942582400 36000 0 EST} - {2958912000 39600 1 EST} - {2974636800 36000 0 EST} - {2990361600 39600 1 EST} - {3006086400 36000 0 EST} - {3021811200 39600 1 EST} - {3037536000 36000 0 EST} - {3053260800 39600 1 EST} - {3068985600 36000 0 EST} - {3084710400 39600 1 EST} - {3100435200 36000 0 EST} - {3116764800 39600 1 EST} - {3132489600 36000 0 EST} - {3148214400 39600 1 EST} - {3163939200 36000 0 EST} - {3179664000 39600 1 EST} - {3195388800 36000 0 EST} - {3211113600 39600 1 EST} - {3226838400 36000 0 EST} - {3242563200 39600 1 EST} - {3258288000 36000 0 EST} - {3274012800 39600 1 EST} - {3289737600 36000 0 EST} - {3306067200 39600 1 EST} - {3321792000 36000 0 EST} - {3337516800 39600 1 EST} - {3353241600 36000 0 EST} - {3368966400 39600 1 EST} - {3384691200 36000 0 EST} - {3400416000 39600 1 EST} - {3416140800 36000 0 EST} - {3431865600 39600 1 EST} - {3447590400 36000 0 EST} - {3463315200 39600 1 EST} - {3479644800 36000 0 EST} - {3495369600 39600 1 EST} - {3511094400 36000 0 EST} - {3526819200 39600 1 EST} - {3542544000 36000 0 EST} - {3558268800 39600 1 EST} - {3573993600 36000 0 EST} - {3589718400 39600 1 EST} - {3605443200 36000 0 EST} - {3621168000 39600 1 EST} - {3636892800 36000 0 EST} - {3653222400 39600 1 EST} - {3668947200 36000 0 EST} - {3684672000 39600 1 EST} - {3700396800 36000 0 EST} - {3716121600 39600 1 EST} - {3731846400 36000 0 EST} - {3747571200 39600 1 EST} - {3763296000 36000 0 EST} - {3779020800 39600 1 EST} - {3794745600 36000 0 EST} - {3810470400 39600 1 EST} - {3826195200 36000 0 EST} - {3842524800 39600 1 EST} - {3858249600 36000 0 EST} - {3873974400 39600 1 EST} - {3889699200 36000 0 EST} - {3905424000 39600 1 EST} - {3921148800 36000 0 EST} - {3936873600 39600 1 EST} - {3952598400 36000 0 EST} - {3968323200 39600 1 EST} - {3984048000 36000 0 EST} - {4000377600 39600 1 EST} - {4016102400 36000 0 EST} - {4031827200 39600 1 EST} - {4047552000 36000 0 EST} - {4063276800 39600 1 EST} - {4079001600 36000 0 EST} - {4094726400 39600 1 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Currie) { + {-9223372036854775808 34528 0 LMT} + {-2345794528 36000 0 EST} + {-1680508800 39600 1 EST} + {-1669892400 39600 0 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {47138400 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {89136000 39600 1 EST} + {100022400 36000 0 EST} + {120585600 39600 1 EST} + {131472000 36000 0 EST} + {152035200 39600 1 EST} + {162921600 36000 0 EST} + {183484800 39600 1 EST} + {194976000 36000 0 EST} + {215539200 39600 1 EST} + {226425600 36000 0 EST} + {246988800 39600 1 EST} + {257875200 36000 0 EST} + {278438400 39600 1 EST} + {289324800 36000 0 EST} + {309888000 39600 1 EST} + {320774400 36000 0 EST} + {341337600 39600 1 EST} + {352224000 36000 0 EST} + {372787200 39600 1 EST} + {386092800 36000 0 EST} + {404841600 39600 1 EST} + {417542400 36000 0 EST} + {436291200 39600 1 EST} + {447177600 36000 0 EST} + {467740800 39600 1 EST} + {478627200 36000 0 EST} + {499190400 39600 1 EST} + {510076800 36000 0 EST} + {530035200 39600 1 EST} + {542736000 36000 0 EST} + {562089600 39600 1 EST} + {574790400 36000 0 EST} + {594144000 39600 1 EST} + {606240000 36000 0 EST} + {625593600 39600 1 EST} + {637689600 36000 0 EST} + {657043200 39600 1 EST} + {670348800 36000 0 EST} + {686678400 39600 1 EST} + {701798400 36000 0 EST} + {718128000 39600 1 EST} + {733248000 36000 0 EST} + {749577600 39600 1 EST} + {764697600 36000 0 EST} + {781027200 39600 1 EST} + {796147200 36000 0 EST} + {812476800 39600 1 EST} + {828201600 36000 0 EST} + {844531200 39600 1 EST} + {859651200 36000 0 EST} + {875980800 39600 1 EST} + {891100800 36000 0 EST} + {907430400 39600 1 EST} + {922550400 36000 0 EST} + {938880000 39600 1 EST} + {954000000 36000 0 EST} + {967305600 39600 1 EST} + {985449600 36000 0 EST} + {1002384000 39600 1 EST} + {1017504000 36000 0 EST} + {1033833600 39600 1 EST} + {1048953600 36000 0 EST} + {1065283200 39600 1 EST} + {1080403200 36000 0 EST} + {1096732800 39600 1 EST} + {1111852800 36000 0 EST} + {1128182400 39600 1 EST} + {1143907200 36000 0 EST} + {1159632000 39600 1 EST} + {1174752000 36000 0 EST} + {1191686400 39600 1 EST} + {1207411200 36000 0 EST} + {1223136000 39600 1 EST} + {1238860800 36000 0 EST} + {1254585600 39600 1 EST} + {1270310400 36000 0 EST} + {1286035200 39600 1 EST} + {1301760000 36000 0 EST} + {1317484800 39600 1 EST} + {1333209600 36000 0 EST} + {1349539200 39600 1 EST} + {1365264000 36000 0 EST} + {1380988800 39600 1 EST} + {1396713600 36000 0 EST} + {1412438400 39600 1 EST} + {1428163200 36000 0 EST} + {1443888000 39600 1 EST} + {1459612800 36000 0 EST} + {1475337600 39600 1 EST} + {1491062400 36000 0 EST} + {1506787200 39600 1 EST} + {1522512000 36000 0 EST} + {1538841600 39600 1 EST} + {1554566400 36000 0 EST} + {1570291200 39600 1 EST} + {1586016000 36000 0 EST} + {1601740800 39600 1 EST} + {1617465600 36000 0 EST} + {1633190400 39600 1 EST} + {1648915200 36000 0 EST} + {1664640000 39600 1 EST} + {1680364800 36000 0 EST} + {1696089600 39600 1 EST} + {1712419200 36000 0 EST} + {1728144000 39600 1 EST} + {1743868800 36000 0 EST} + {1759593600 39600 1 EST} + {1775318400 36000 0 EST} + {1791043200 39600 1 EST} + {1806768000 36000 0 EST} + {1822492800 39600 1 EST} + {1838217600 36000 0 EST} + {1853942400 39600 1 EST} + {1869667200 36000 0 EST} + {1885996800 39600 1 EST} + {1901721600 36000 0 EST} + {1917446400 39600 1 EST} + {1933171200 36000 0 EST} + {1948896000 39600 1 EST} + {1964620800 36000 0 EST} + {1980345600 39600 1 EST} + {1996070400 36000 0 EST} + {2011795200 39600 1 EST} + {2027520000 36000 0 EST} + {2043244800 39600 1 EST} + {2058969600 36000 0 EST} + {2075299200 39600 1 EST} + {2091024000 36000 0 EST} + {2106748800 39600 1 EST} + {2122473600 36000 0 EST} + {2138198400 39600 1 EST} + {2153923200 36000 0 EST} + {2169648000 39600 1 EST} + {2185372800 36000 0 EST} + {2201097600 39600 1 EST} + {2216822400 36000 0 EST} + {2233152000 39600 1 EST} + {2248876800 36000 0 EST} + {2264601600 39600 1 EST} + {2280326400 36000 0 EST} + {2296051200 39600 1 EST} + {2311776000 36000 0 EST} + {2327500800 39600 1 EST} + {2343225600 36000 0 EST} + {2358950400 39600 1 EST} + {2374675200 36000 0 EST} + {2390400000 39600 1 EST} + {2406124800 36000 0 EST} + {2422454400 39600 1 EST} + {2438179200 36000 0 EST} + {2453904000 39600 1 EST} + {2469628800 36000 0 EST} + {2485353600 39600 1 EST} + {2501078400 36000 0 EST} + {2516803200 39600 1 EST} + {2532528000 36000 0 EST} + {2548252800 39600 1 EST} + {2563977600 36000 0 EST} + {2579702400 39600 1 EST} + {2596032000 36000 0 EST} + {2611756800 39600 1 EST} + {2627481600 36000 0 EST} + {2643206400 39600 1 EST} + {2658931200 36000 0 EST} + {2674656000 39600 1 EST} + {2690380800 36000 0 EST} + {2706105600 39600 1 EST} + {2721830400 36000 0 EST} + {2737555200 39600 1 EST} + {2753280000 36000 0 EST} + {2769609600 39600 1 EST} + {2785334400 36000 0 EST} + {2801059200 39600 1 EST} + {2816784000 36000 0 EST} + {2832508800 39600 1 EST} + {2848233600 36000 0 EST} + {2863958400 39600 1 EST} + {2879683200 36000 0 EST} + {2895408000 39600 1 EST} + {2911132800 36000 0 EST} + {2926857600 39600 1 EST} + {2942582400 36000 0 EST} + {2958912000 39600 1 EST} + {2974636800 36000 0 EST} + {2990361600 39600 1 EST} + {3006086400 36000 0 EST} + {3021811200 39600 1 EST} + {3037536000 36000 0 EST} + {3053260800 39600 1 EST} + {3068985600 36000 0 EST} + {3084710400 39600 1 EST} + {3100435200 36000 0 EST} + {3116764800 39600 1 EST} + {3132489600 36000 0 EST} + {3148214400 39600 1 EST} + {3163939200 36000 0 EST} + {3179664000 39600 1 EST} + {3195388800 36000 0 EST} + {3211113600 39600 1 EST} + {3226838400 36000 0 EST} + {3242563200 39600 1 EST} + {3258288000 36000 0 EST} + {3274012800 39600 1 EST} + {3289737600 36000 0 EST} + {3306067200 39600 1 EST} + {3321792000 36000 0 EST} + {3337516800 39600 1 EST} + {3353241600 36000 0 EST} + {3368966400 39600 1 EST} + {3384691200 36000 0 EST} + {3400416000 39600 1 EST} + {3416140800 36000 0 EST} + {3431865600 39600 1 EST} + {3447590400 36000 0 EST} + {3463315200 39600 1 EST} + {3479644800 36000 0 EST} + {3495369600 39600 1 EST} + {3511094400 36000 0 EST} + {3526819200 39600 1 EST} + {3542544000 36000 0 EST} + {3558268800 39600 1 EST} + {3573993600 36000 0 EST} + {3589718400 39600 1 EST} + {3605443200 36000 0 EST} + {3621168000 39600 1 EST} + {3636892800 36000 0 EST} + {3653222400 39600 1 EST} + {3668947200 36000 0 EST} + {3684672000 39600 1 EST} + {3700396800 36000 0 EST} + {3716121600 39600 1 EST} + {3731846400 36000 0 EST} + {3747571200 39600 1 EST} + {3763296000 36000 0 EST} + {3779020800 39600 1 EST} + {3794745600 36000 0 EST} + {3810470400 39600 1 EST} + {3826195200 36000 0 EST} + {3842524800 39600 1 EST} + {3858249600 36000 0 EST} + {3873974400 39600 1 EST} + {3889699200 36000 0 EST} + {3905424000 39600 1 EST} + {3921148800 36000 0 EST} + {3936873600 39600 1 EST} + {3952598400 36000 0 EST} + {3968323200 39600 1 EST} + {3984048000 36000 0 EST} + {4000377600 39600 1 EST} + {4016102400 36000 0 EST} + {4031827200 39600 1 EST} + {4047552000 36000 0 EST} + {4063276800 39600 1 EST} + {4079001600 36000 0 EST} + {4094726400 39600 1 EST} +} diff --git a/library/tzdata/Australia/Darwin b/library/tzdata/Australia/Darwin index 9be372d..b5b4bce 100644 --- a/library/tzdata/Australia/Darwin +++ b/library/tzdata/Australia/Darwin @@ -1,15 +1,15 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Darwin) { - {-9223372036854775808 31400 0 LMT} - {-2364108200 32400 0 CST} - {-2230189200 34200 0 CST} - {-1672565340 37800 1 CST} - {-1665390600 34200 0 CST} - {-883639800 37800 1 CST} - {-876126600 34200 0 CST} - {-860398200 37800 1 CST} - {-844677000 34200 0 CST} - {-828343800 37800 1 CST} - {-813227400 34200 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Darwin) { + {-9223372036854775808 31400 0 LMT} + {-2364108200 32400 0 CST} + {-2230189200 34200 0 CST} + {-1672565340 37800 1 CST} + {-1665390600 34200 0 CST} + {-883639800 37800 1 CST} + {-876126600 34200 0 CST} + {-860398200 37800 1 CST} + {-844677000 34200 0 CST} + {-828343800 37800 1 CST} + {-813227400 34200 0 CST} +} diff --git a/library/tzdata/Australia/Eucla b/library/tzdata/Australia/Eucla index 0f8ed4d..ec2f760 100755 --- a/library/tzdata/Australia/Eucla +++ b/library/tzdata/Australia/Eucla @@ -1,25 +1,25 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Eucla) { - {-9223372036854775808 30928 0 LMT} - {-2337928528 31500 0 CWST} - {-1672562640 35100 1 CWST} - {-1665387900 31500 0 CWST} - {-883637100 35100 1 CWST} - {-876123900 31500 0 CWST} - {-860395500 35100 1 CWST} - {-844674300 31500 0 CWST} - {-836473500 35100 0 CWST} - {152039700 35100 1 CWST} - {162926100 31500 0 CWST} - {436295700 35100 1 CWST} - {447182100 31500 0 CWST} - {690311700 35100 1 CWST} - {699383700 31500 0 CWST} - {1165079700 35100 1 CWST} - {1174756500 31500 0 CWST} - {1193505300 35100 1 CWST} - {1206810900 31500 0 CWST} - {1224954900 35100 1 CWST} - {1238260500 31500 0 CWST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Eucla) { + {-9223372036854775808 30928 0 LMT} + {-2337928528 31500 0 CWST} + {-1672562640 35100 1 CWST} + {-1665387900 31500 0 CWST} + {-883637100 35100 1 CWST} + {-876123900 31500 0 CWST} + {-860395500 35100 1 CWST} + {-844674300 31500 0 CWST} + {-836473500 35100 0 CWST} + {152039700 35100 1 CWST} + {162926100 31500 0 CWST} + {436295700 35100 1 CWST} + {447182100 31500 0 CWST} + {690311700 35100 1 CWST} + {699383700 31500 0 CWST} + {1165079700 35100 1 CWST} + {1174756500 31500 0 CWST} + {1193505300 35100 1 CWST} + {1206810900 31500 0 CWST} + {1224954900 35100 1 CWST} + {1238260500 31500 0 CWST} +} diff --git a/library/tzdata/Australia/Hobart b/library/tzdata/Australia/Hobart index 8f27110..220be55 100644 --- a/library/tzdata/Australia/Hobart +++ b/library/tzdata/Australia/Hobart @@ -1,281 +1,281 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Hobart) { - {-9223372036854775808 35356 0 LMT} - {-2345795356 36000 0 EST} - {-1680508800 39600 1 EST} - {-1669892400 39600 0 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {-94730400 36000 0 EST} - {-71136000 39600 1 EST} - {-55411200 36000 0 EST} - {-37267200 39600 1 EST} - {-25776000 36000 0 EST} - {-5817600 39600 1 EST} - {5673600 36000 0 EST} - {25632000 39600 1 EST} - {37728000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {89136000 39600 1 EST} - {100022400 36000 0 EST} - {120585600 39600 1 EST} - {131472000 36000 0 EST} - {152035200 39600 1 EST} - {162921600 36000 0 EST} - {183484800 39600 1 EST} - {194976000 36000 0 EST} - {215539200 39600 1 EST} - {226425600 36000 0 EST} - {246988800 39600 1 EST} - {257875200 36000 0 EST} - {278438400 39600 1 EST} - {289324800 36000 0 EST} - {309888000 39600 1 EST} - {320774400 36000 0 EST} - {341337600 39600 1 EST} - {352224000 36000 0 EST} - {372787200 39600 1 EST} - {386092800 36000 0 EST} - {404841600 39600 1 EST} - {417542400 36000 0 EST} - {436291200 39600 1 EST} - {447177600 36000 0 EST} - {467740800 39600 1 EST} - {478627200 36000 0 EST} - {499190400 39600 1 EST} - {510076800 36000 0 EST} - {530035200 39600 1 EST} - {542736000 36000 0 EST} - {562089600 39600 1 EST} - {574790400 36000 0 EST} - {594144000 39600 1 EST} - {606240000 36000 0 EST} - {625593600 39600 1 EST} - {637689600 36000 0 EST} - {657043200 39600 1 EST} - {670348800 36000 0 EST} - {686678400 39600 1 EST} - {701798400 36000 0 EST} - {718128000 39600 1 EST} - {733248000 36000 0 EST} - {749577600 39600 1 EST} - {764697600 36000 0 EST} - {781027200 39600 1 EST} - {796147200 36000 0 EST} - {812476800 39600 1 EST} - {828201600 36000 0 EST} - {844531200 39600 1 EST} - {859651200 36000 0 EST} - {875980800 39600 1 EST} - {891100800 36000 0 EST} - {907430400 39600 1 EST} - {922550400 36000 0 EST} - {938880000 39600 1 EST} - {954000000 36000 0 EST} - {967305600 39600 1 EST} - {985449600 36000 0 EST} - {1002384000 39600 1 EST} - {1017504000 36000 0 EST} - {1033833600 39600 1 EST} - {1048953600 36000 0 EST} - {1065283200 39600 1 EST} - {1080403200 36000 0 EST} - {1096732800 39600 1 EST} - {1111852800 36000 0 EST} - {1128182400 39600 1 EST} - {1143907200 36000 0 EST} - {1159632000 39600 1 EST} - {1174752000 36000 0 EST} - {1191686400 39600 1 EST} - {1207411200 36000 0 EST} - {1223136000 39600 1 EST} - {1238860800 36000 0 EST} - {1254585600 39600 1 EST} - {1270310400 36000 0 EST} - {1286035200 39600 1 EST} - {1301760000 36000 0 EST} - {1317484800 39600 1 EST} - {1333209600 36000 0 EST} - {1349539200 39600 1 EST} - {1365264000 36000 0 EST} - {1380988800 39600 1 EST} - {1396713600 36000 0 EST} - {1412438400 39600 1 EST} - {1428163200 36000 0 EST} - {1443888000 39600 1 EST} - {1459612800 36000 0 EST} - {1475337600 39600 1 EST} - {1491062400 36000 0 EST} - {1506787200 39600 1 EST} - {1522512000 36000 0 EST} - {1538841600 39600 1 EST} - {1554566400 36000 0 EST} - {1570291200 39600 1 EST} - {1586016000 36000 0 EST} - {1601740800 39600 1 EST} - {1617465600 36000 0 EST} - {1633190400 39600 1 EST} - {1648915200 36000 0 EST} - {1664640000 39600 1 EST} - {1680364800 36000 0 EST} - {1696089600 39600 1 EST} - {1712419200 36000 0 EST} - {1728144000 39600 1 EST} - {1743868800 36000 0 EST} - {1759593600 39600 1 EST} - {1775318400 36000 0 EST} - {1791043200 39600 1 EST} - {1806768000 36000 0 EST} - {1822492800 39600 1 EST} - {1838217600 36000 0 EST} - {1853942400 39600 1 EST} - {1869667200 36000 0 EST} - {1885996800 39600 1 EST} - {1901721600 36000 0 EST} - {1917446400 39600 1 EST} - {1933171200 36000 0 EST} - {1948896000 39600 1 EST} - {1964620800 36000 0 EST} - {1980345600 39600 1 EST} - {1996070400 36000 0 EST} - {2011795200 39600 1 EST} - {2027520000 36000 0 EST} - {2043244800 39600 1 EST} - {2058969600 36000 0 EST} - {2075299200 39600 1 EST} - {2091024000 36000 0 EST} - {2106748800 39600 1 EST} - {2122473600 36000 0 EST} - {2138198400 39600 1 EST} - {2153923200 36000 0 EST} - {2169648000 39600 1 EST} - {2185372800 36000 0 EST} - {2201097600 39600 1 EST} - {2216822400 36000 0 EST} - {2233152000 39600 1 EST} - {2248876800 36000 0 EST} - {2264601600 39600 1 EST} - {2280326400 36000 0 EST} - {2296051200 39600 1 EST} - {2311776000 36000 0 EST} - {2327500800 39600 1 EST} - {2343225600 36000 0 EST} - {2358950400 39600 1 EST} - {2374675200 36000 0 EST} - {2390400000 39600 1 EST} - {2406124800 36000 0 EST} - {2422454400 39600 1 EST} - {2438179200 36000 0 EST} - {2453904000 39600 1 EST} - {2469628800 36000 0 EST} - {2485353600 39600 1 EST} - {2501078400 36000 0 EST} - {2516803200 39600 1 EST} - {2532528000 36000 0 EST} - {2548252800 39600 1 EST} - {2563977600 36000 0 EST} - {2579702400 39600 1 EST} - {2596032000 36000 0 EST} - {2611756800 39600 1 EST} - {2627481600 36000 0 EST} - {2643206400 39600 1 EST} - {2658931200 36000 0 EST} - {2674656000 39600 1 EST} - {2690380800 36000 0 EST} - {2706105600 39600 1 EST} - {2721830400 36000 0 EST} - {2737555200 39600 1 EST} - {2753280000 36000 0 EST} - {2769609600 39600 1 EST} - {2785334400 36000 0 EST} - {2801059200 39600 1 EST} - {2816784000 36000 0 EST} - {2832508800 39600 1 EST} - {2848233600 36000 0 EST} - {2863958400 39600 1 EST} - {2879683200 36000 0 EST} - {2895408000 39600 1 EST} - {2911132800 36000 0 EST} - {2926857600 39600 1 EST} - {2942582400 36000 0 EST} - {2958912000 39600 1 EST} - {2974636800 36000 0 EST} - {2990361600 39600 1 EST} - {3006086400 36000 0 EST} - {3021811200 39600 1 EST} - {3037536000 36000 0 EST} - {3053260800 39600 1 EST} - {3068985600 36000 0 EST} - {3084710400 39600 1 EST} - {3100435200 36000 0 EST} - {3116764800 39600 1 EST} - {3132489600 36000 0 EST} - {3148214400 39600 1 EST} - {3163939200 36000 0 EST} - {3179664000 39600 1 EST} - {3195388800 36000 0 EST} - {3211113600 39600 1 EST} - {3226838400 36000 0 EST} - {3242563200 39600 1 EST} - {3258288000 36000 0 EST} - {3274012800 39600 1 EST} - {3289737600 36000 0 EST} - {3306067200 39600 1 EST} - {3321792000 36000 0 EST} - {3337516800 39600 1 EST} - {3353241600 36000 0 EST} - {3368966400 39600 1 EST} - {3384691200 36000 0 EST} - {3400416000 39600 1 EST} - {3416140800 36000 0 EST} - {3431865600 39600 1 EST} - {3447590400 36000 0 EST} - {3463315200 39600 1 EST} - {3479644800 36000 0 EST} - {3495369600 39600 1 EST} - {3511094400 36000 0 EST} - {3526819200 39600 1 EST} - {3542544000 36000 0 EST} - {3558268800 39600 1 EST} - {3573993600 36000 0 EST} - {3589718400 39600 1 EST} - {3605443200 36000 0 EST} - {3621168000 39600 1 EST} - {3636892800 36000 0 EST} - {3653222400 39600 1 EST} - {3668947200 36000 0 EST} - {3684672000 39600 1 EST} - {3700396800 36000 0 EST} - {3716121600 39600 1 EST} - {3731846400 36000 0 EST} - {3747571200 39600 1 EST} - {3763296000 36000 0 EST} - {3779020800 39600 1 EST} - {3794745600 36000 0 EST} - {3810470400 39600 1 EST} - {3826195200 36000 0 EST} - {3842524800 39600 1 EST} - {3858249600 36000 0 EST} - {3873974400 39600 1 EST} - {3889699200 36000 0 EST} - {3905424000 39600 1 EST} - {3921148800 36000 0 EST} - {3936873600 39600 1 EST} - {3952598400 36000 0 EST} - {3968323200 39600 1 EST} - {3984048000 36000 0 EST} - {4000377600 39600 1 EST} - {4016102400 36000 0 EST} - {4031827200 39600 1 EST} - {4047552000 36000 0 EST} - {4063276800 39600 1 EST} - {4079001600 36000 0 EST} - {4094726400 39600 1 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Hobart) { + {-9223372036854775808 35356 0 LMT} + {-2345795356 36000 0 EST} + {-1680508800 39600 1 EST} + {-1669892400 39600 0 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {-94730400 36000 0 EST} + {-71136000 39600 1 EST} + {-55411200 36000 0 EST} + {-37267200 39600 1 EST} + {-25776000 36000 0 EST} + {-5817600 39600 1 EST} + {5673600 36000 0 EST} + {25632000 39600 1 EST} + {37728000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {89136000 39600 1 EST} + {100022400 36000 0 EST} + {120585600 39600 1 EST} + {131472000 36000 0 EST} + {152035200 39600 1 EST} + {162921600 36000 0 EST} + {183484800 39600 1 EST} + {194976000 36000 0 EST} + {215539200 39600 1 EST} + {226425600 36000 0 EST} + {246988800 39600 1 EST} + {257875200 36000 0 EST} + {278438400 39600 1 EST} + {289324800 36000 0 EST} + {309888000 39600 1 EST} + {320774400 36000 0 EST} + {341337600 39600 1 EST} + {352224000 36000 0 EST} + {372787200 39600 1 EST} + {386092800 36000 0 EST} + {404841600 39600 1 EST} + {417542400 36000 0 EST} + {436291200 39600 1 EST} + {447177600 36000 0 EST} + {467740800 39600 1 EST} + {478627200 36000 0 EST} + {499190400 39600 1 EST} + {510076800 36000 0 EST} + {530035200 39600 1 EST} + {542736000 36000 0 EST} + {562089600 39600 1 EST} + {574790400 36000 0 EST} + {594144000 39600 1 EST} + {606240000 36000 0 EST} + {625593600 39600 1 EST} + {637689600 36000 0 EST} + {657043200 39600 1 EST} + {670348800 36000 0 EST} + {686678400 39600 1 EST} + {701798400 36000 0 EST} + {718128000 39600 1 EST} + {733248000 36000 0 EST} + {749577600 39600 1 EST} + {764697600 36000 0 EST} + {781027200 39600 1 EST} + {796147200 36000 0 EST} + {812476800 39600 1 EST} + {828201600 36000 0 EST} + {844531200 39600 1 EST} + {859651200 36000 0 EST} + {875980800 39600 1 EST} + {891100800 36000 0 EST} + {907430400 39600 1 EST} + {922550400 36000 0 EST} + {938880000 39600 1 EST} + {954000000 36000 0 EST} + {967305600 39600 1 EST} + {985449600 36000 0 EST} + {1002384000 39600 1 EST} + {1017504000 36000 0 EST} + {1033833600 39600 1 EST} + {1048953600 36000 0 EST} + {1065283200 39600 1 EST} + {1080403200 36000 0 EST} + {1096732800 39600 1 EST} + {1111852800 36000 0 EST} + {1128182400 39600 1 EST} + {1143907200 36000 0 EST} + {1159632000 39600 1 EST} + {1174752000 36000 0 EST} + {1191686400 39600 1 EST} + {1207411200 36000 0 EST} + {1223136000 39600 1 EST} + {1238860800 36000 0 EST} + {1254585600 39600 1 EST} + {1270310400 36000 0 EST} + {1286035200 39600 1 EST} + {1301760000 36000 0 EST} + {1317484800 39600 1 EST} + {1333209600 36000 0 EST} + {1349539200 39600 1 EST} + {1365264000 36000 0 EST} + {1380988800 39600 1 EST} + {1396713600 36000 0 EST} + {1412438400 39600 1 EST} + {1428163200 36000 0 EST} + {1443888000 39600 1 EST} + {1459612800 36000 0 EST} + {1475337600 39600 1 EST} + {1491062400 36000 0 EST} + {1506787200 39600 1 EST} + {1522512000 36000 0 EST} + {1538841600 39600 1 EST} + {1554566400 36000 0 EST} + {1570291200 39600 1 EST} + {1586016000 36000 0 EST} + {1601740800 39600 1 EST} + {1617465600 36000 0 EST} + {1633190400 39600 1 EST} + {1648915200 36000 0 EST} + {1664640000 39600 1 EST} + {1680364800 36000 0 EST} + {1696089600 39600 1 EST} + {1712419200 36000 0 EST} + {1728144000 39600 1 EST} + {1743868800 36000 0 EST} + {1759593600 39600 1 EST} + {1775318400 36000 0 EST} + {1791043200 39600 1 EST} + {1806768000 36000 0 EST} + {1822492800 39600 1 EST} + {1838217600 36000 0 EST} + {1853942400 39600 1 EST} + {1869667200 36000 0 EST} + {1885996800 39600 1 EST} + {1901721600 36000 0 EST} + {1917446400 39600 1 EST} + {1933171200 36000 0 EST} + {1948896000 39600 1 EST} + {1964620800 36000 0 EST} + {1980345600 39600 1 EST} + {1996070400 36000 0 EST} + {2011795200 39600 1 EST} + {2027520000 36000 0 EST} + {2043244800 39600 1 EST} + {2058969600 36000 0 EST} + {2075299200 39600 1 EST} + {2091024000 36000 0 EST} + {2106748800 39600 1 EST} + {2122473600 36000 0 EST} + {2138198400 39600 1 EST} + {2153923200 36000 0 EST} + {2169648000 39600 1 EST} + {2185372800 36000 0 EST} + {2201097600 39600 1 EST} + {2216822400 36000 0 EST} + {2233152000 39600 1 EST} + {2248876800 36000 0 EST} + {2264601600 39600 1 EST} + {2280326400 36000 0 EST} + {2296051200 39600 1 EST} + {2311776000 36000 0 EST} + {2327500800 39600 1 EST} + {2343225600 36000 0 EST} + {2358950400 39600 1 EST} + {2374675200 36000 0 EST} + {2390400000 39600 1 EST} + {2406124800 36000 0 EST} + {2422454400 39600 1 EST} + {2438179200 36000 0 EST} + {2453904000 39600 1 EST} + {2469628800 36000 0 EST} + {2485353600 39600 1 EST} + {2501078400 36000 0 EST} + {2516803200 39600 1 EST} + {2532528000 36000 0 EST} + {2548252800 39600 1 EST} + {2563977600 36000 0 EST} + {2579702400 39600 1 EST} + {2596032000 36000 0 EST} + {2611756800 39600 1 EST} + {2627481600 36000 0 EST} + {2643206400 39600 1 EST} + {2658931200 36000 0 EST} + {2674656000 39600 1 EST} + {2690380800 36000 0 EST} + {2706105600 39600 1 EST} + {2721830400 36000 0 EST} + {2737555200 39600 1 EST} + {2753280000 36000 0 EST} + {2769609600 39600 1 EST} + {2785334400 36000 0 EST} + {2801059200 39600 1 EST} + {2816784000 36000 0 EST} + {2832508800 39600 1 EST} + {2848233600 36000 0 EST} + {2863958400 39600 1 EST} + {2879683200 36000 0 EST} + {2895408000 39600 1 EST} + {2911132800 36000 0 EST} + {2926857600 39600 1 EST} + {2942582400 36000 0 EST} + {2958912000 39600 1 EST} + {2974636800 36000 0 EST} + {2990361600 39600 1 EST} + {3006086400 36000 0 EST} + {3021811200 39600 1 EST} + {3037536000 36000 0 EST} + {3053260800 39600 1 EST} + {3068985600 36000 0 EST} + {3084710400 39600 1 EST} + {3100435200 36000 0 EST} + {3116764800 39600 1 EST} + {3132489600 36000 0 EST} + {3148214400 39600 1 EST} + {3163939200 36000 0 EST} + {3179664000 39600 1 EST} + {3195388800 36000 0 EST} + {3211113600 39600 1 EST} + {3226838400 36000 0 EST} + {3242563200 39600 1 EST} + {3258288000 36000 0 EST} + {3274012800 39600 1 EST} + {3289737600 36000 0 EST} + {3306067200 39600 1 EST} + {3321792000 36000 0 EST} + {3337516800 39600 1 EST} + {3353241600 36000 0 EST} + {3368966400 39600 1 EST} + {3384691200 36000 0 EST} + {3400416000 39600 1 EST} + {3416140800 36000 0 EST} + {3431865600 39600 1 EST} + {3447590400 36000 0 EST} + {3463315200 39600 1 EST} + {3479644800 36000 0 EST} + {3495369600 39600 1 EST} + {3511094400 36000 0 EST} + {3526819200 39600 1 EST} + {3542544000 36000 0 EST} + {3558268800 39600 1 EST} + {3573993600 36000 0 EST} + {3589718400 39600 1 EST} + {3605443200 36000 0 EST} + {3621168000 39600 1 EST} + {3636892800 36000 0 EST} + {3653222400 39600 1 EST} + {3668947200 36000 0 EST} + {3684672000 39600 1 EST} + {3700396800 36000 0 EST} + {3716121600 39600 1 EST} + {3731846400 36000 0 EST} + {3747571200 39600 1 EST} + {3763296000 36000 0 EST} + {3779020800 39600 1 EST} + {3794745600 36000 0 EST} + {3810470400 39600 1 EST} + {3826195200 36000 0 EST} + {3842524800 39600 1 EST} + {3858249600 36000 0 EST} + {3873974400 39600 1 EST} + {3889699200 36000 0 EST} + {3905424000 39600 1 EST} + {3921148800 36000 0 EST} + {3936873600 39600 1 EST} + {3952598400 36000 0 EST} + {3968323200 39600 1 EST} + {3984048000 36000 0 EST} + {4000377600 39600 1 EST} + {4016102400 36000 0 EST} + {4031827200 39600 1 EST} + {4047552000 36000 0 EST} + {4063276800 39600 1 EST} + {4079001600 36000 0 EST} + {4094726400 39600 1 EST} +} diff --git a/library/tzdata/Australia/LHI b/library/tzdata/Australia/LHI index ddc79ce..889f85a 100644 --- a/library/tzdata/Australia/LHI +++ b/library/tzdata/Australia/LHI @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Lord_Howe)]} { - LoadTimeZoneFile Australia/Lord_Howe -} -set TZData(:Australia/LHI) $TZData(:Australia/Lord_Howe) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Lord_Howe)]} { + LoadTimeZoneFile Australia/Lord_Howe +} +set TZData(:Australia/LHI) $TZData(:Australia/Lord_Howe) diff --git a/library/tzdata/Australia/Lindeman b/library/tzdata/Australia/Lindeman index de11c35..77bce8f 100644 --- a/library/tzdata/Australia/Lindeman +++ b/library/tzdata/Australia/Lindeman @@ -1,28 +1,28 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Lindeman) { - {-9223372036854775808 35756 0 LMT} - {-2366790956 36000 0 EST} - {-1672567140 39600 1 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {31500000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {625593600 39600 1 EST} - {636480000 36000 0 EST} - {657043200 39600 1 EST} - {667929600 36000 0 EST} - {688492800 39600 1 EST} - {699379200 36000 0 EST} - {709912800 36000 0 EST} - {719942400 39600 1 EST} - {731433600 36000 0 EST} - {751996800 39600 1 EST} - {762883200 36000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Lindeman) { + {-9223372036854775808 35756 0 LMT} + {-2366790956 36000 0 EST} + {-1672567140 39600 1 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {31500000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {625593600 39600 1 EST} + {636480000 36000 0 EST} + {657043200 39600 1 EST} + {667929600 36000 0 EST} + {688492800 39600 1 EST} + {699379200 36000 0 EST} + {709912800 36000 0 EST} + {719942400 39600 1 EST} + {731433600 36000 0 EST} + {751996800 39600 1 EST} + {762883200 36000 0 EST} +} diff --git a/library/tzdata/Australia/Lord_Howe b/library/tzdata/Australia/Lord_Howe index da094e5..19733e1 100644 --- a/library/tzdata/Australia/Lord_Howe +++ b/library/tzdata/Australia/Lord_Howe @@ -1,244 +1,244 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Lord_Howe) { - {-9223372036854775808 38180 0 LMT} - {-2364114980 36000 0 EST} - {352216800 37800 0 LHST} - {372785400 41400 1 LHST} - {384273000 37800 0 LHST} - {404839800 41400 1 LHST} - {415722600 37800 0 LHST} - {436289400 41400 1 LHST} - {447172200 37800 0 LHST} - {467739000 41400 1 LHST} - {478621800 37800 0 LHST} - {499188600 39600 1 LHST} - {511282800 37800 0 LHST} - {530033400 39600 1 LHST} - {542732400 37800 0 LHST} - {562087800 39600 1 LHST} - {574786800 37800 0 LHST} - {594142200 39600 1 LHST} - {606236400 37800 0 LHST} - {625591800 39600 1 LHST} - {636476400 37800 0 LHST} - {657041400 39600 1 LHST} - {667926000 37800 0 LHST} - {688491000 39600 1 LHST} - {699375600 37800 0 LHST} - {719940600 39600 1 LHST} - {731430000 37800 0 LHST} - {751995000 39600 1 LHST} - {762879600 37800 0 LHST} - {783444600 39600 1 LHST} - {794329200 37800 0 LHST} - {814894200 39600 1 LHST} - {828198000 37800 0 LHST} - {846343800 39600 1 LHST} - {859647600 37800 0 LHST} - {877793400 39600 1 LHST} - {891097200 37800 0 LHST} - {909243000 39600 1 LHST} - {922546800 37800 0 LHST} - {941297400 39600 1 LHST} - {953996400 37800 0 LHST} - {967303800 39600 1 LHST} - {985446000 37800 0 LHST} - {1004196600 39600 1 LHST} - {1017500400 37800 0 LHST} - {1035646200 39600 1 LHST} - {1048950000 37800 0 LHST} - {1067095800 39600 1 LHST} - {1080399600 37800 0 LHST} - {1099150200 39600 1 LHST} - {1111849200 37800 0 LHST} - {1130599800 39600 1 LHST} - {1143903600 37800 0 LHST} - {1162049400 39600 1 LHST} - {1174748400 37800 0 LHST} - {1193499000 39600 1 LHST} - {1207407600 37800 0 LHST} - {1223134200 39600 1 LHST} - {1238857200 37800 0 LHST} - {1254583800 39600 1 LHST} - {1270306800 37800 0 LHST} - {1286033400 39600 1 LHST} - {1301756400 37800 0 LHST} - {1317483000 39600 1 LHST} - {1333206000 37800 0 LHST} - {1349537400 39600 1 LHST} - {1365260400 37800 0 LHST} - {1380987000 39600 1 LHST} - {1396710000 37800 0 LHST} - {1412436600 39600 1 LHST} - {1428159600 37800 0 LHST} - {1443886200 39600 1 LHST} - {1459609200 37800 0 LHST} - {1475335800 39600 1 LHST} - {1491058800 37800 0 LHST} - {1506785400 39600 1 LHST} - {1522508400 37800 0 LHST} - {1538839800 39600 1 LHST} - {1554562800 37800 0 LHST} - {1570289400 39600 1 LHST} - {1586012400 37800 0 LHST} - {1601739000 39600 1 LHST} - {1617462000 37800 0 LHST} - {1633188600 39600 1 LHST} - {1648911600 37800 0 LHST} - {1664638200 39600 1 LHST} - {1680361200 37800 0 LHST} - {1696087800 39600 1 LHST} - {1712415600 37800 0 LHST} - {1728142200 39600 1 LHST} - {1743865200 37800 0 LHST} - {1759591800 39600 1 LHST} - {1775314800 37800 0 LHST} - {1791041400 39600 1 LHST} - {1806764400 37800 0 LHST} - {1822491000 39600 1 LHST} - {1838214000 37800 0 LHST} - {1853940600 39600 1 LHST} - {1869663600 37800 0 LHST} - {1885995000 39600 1 LHST} - {1901718000 37800 0 LHST} - {1917444600 39600 1 LHST} - {1933167600 37800 0 LHST} - {1948894200 39600 1 LHST} - {1964617200 37800 0 LHST} - {1980343800 39600 1 LHST} - {1996066800 37800 0 LHST} - {2011793400 39600 1 LHST} - {2027516400 37800 0 LHST} - {2043243000 39600 1 LHST} - {2058966000 37800 0 LHST} - {2075297400 39600 1 LHST} - {2091020400 37800 0 LHST} - {2106747000 39600 1 LHST} - {2122470000 37800 0 LHST} - {2138196600 39600 1 LHST} - {2153919600 37800 0 LHST} - {2169646200 39600 1 LHST} - {2185369200 37800 0 LHST} - {2201095800 39600 1 LHST} - {2216818800 37800 0 LHST} - {2233150200 39600 1 LHST} - {2248873200 37800 0 LHST} - {2264599800 39600 1 LHST} - {2280322800 37800 0 LHST} - {2296049400 39600 1 LHST} - {2311772400 37800 0 LHST} - {2327499000 39600 1 LHST} - {2343222000 37800 0 LHST} - {2358948600 39600 1 LHST} - {2374671600 37800 0 LHST} - {2390398200 39600 1 LHST} - {2406121200 37800 0 LHST} - {2422452600 39600 1 LHST} - {2438175600 37800 0 LHST} - {2453902200 39600 1 LHST} - {2469625200 37800 0 LHST} - {2485351800 39600 1 LHST} - {2501074800 37800 0 LHST} - {2516801400 39600 1 LHST} - {2532524400 37800 0 LHST} - {2548251000 39600 1 LHST} - {2563974000 37800 0 LHST} - {2579700600 39600 1 LHST} - {2596028400 37800 0 LHST} - {2611755000 39600 1 LHST} - {2627478000 37800 0 LHST} - {2643204600 39600 1 LHST} - {2658927600 37800 0 LHST} - {2674654200 39600 1 LHST} - {2690377200 37800 0 LHST} - {2706103800 39600 1 LHST} - {2721826800 37800 0 LHST} - {2737553400 39600 1 LHST} - {2753276400 37800 0 LHST} - {2769607800 39600 1 LHST} - {2785330800 37800 0 LHST} - {2801057400 39600 1 LHST} - {2816780400 37800 0 LHST} - {2832507000 39600 1 LHST} - {2848230000 37800 0 LHST} - {2863956600 39600 1 LHST} - {2879679600 37800 0 LHST} - {2895406200 39600 1 LHST} - {2911129200 37800 0 LHST} - {2926855800 39600 1 LHST} - {2942578800 37800 0 LHST} - {2958910200 39600 1 LHST} - {2974633200 37800 0 LHST} - {2990359800 39600 1 LHST} - {3006082800 37800 0 LHST} - {3021809400 39600 1 LHST} - {3037532400 37800 0 LHST} - {3053259000 39600 1 LHST} - {3068982000 37800 0 LHST} - {3084708600 39600 1 LHST} - {3100431600 37800 0 LHST} - {3116763000 39600 1 LHST} - {3132486000 37800 0 LHST} - {3148212600 39600 1 LHST} - {3163935600 37800 0 LHST} - {3179662200 39600 1 LHST} - {3195385200 37800 0 LHST} - {3211111800 39600 1 LHST} - {3226834800 37800 0 LHST} - {3242561400 39600 1 LHST} - {3258284400 37800 0 LHST} - {3274011000 39600 1 LHST} - {3289734000 37800 0 LHST} - {3306065400 39600 1 LHST} - {3321788400 37800 0 LHST} - {3337515000 39600 1 LHST} - {3353238000 37800 0 LHST} - {3368964600 39600 1 LHST} - {3384687600 37800 0 LHST} - {3400414200 39600 1 LHST} - {3416137200 37800 0 LHST} - {3431863800 39600 1 LHST} - {3447586800 37800 0 LHST} - {3463313400 39600 1 LHST} - {3479641200 37800 0 LHST} - {3495367800 39600 1 LHST} - {3511090800 37800 0 LHST} - {3526817400 39600 1 LHST} - {3542540400 37800 0 LHST} - {3558267000 39600 1 LHST} - {3573990000 37800 0 LHST} - {3589716600 39600 1 LHST} - {3605439600 37800 0 LHST} - {3621166200 39600 1 LHST} - {3636889200 37800 0 LHST} - {3653220600 39600 1 LHST} - {3668943600 37800 0 LHST} - {3684670200 39600 1 LHST} - {3700393200 37800 0 LHST} - {3716119800 39600 1 LHST} - {3731842800 37800 0 LHST} - {3747569400 39600 1 LHST} - {3763292400 37800 0 LHST} - {3779019000 39600 1 LHST} - {3794742000 37800 0 LHST} - {3810468600 39600 1 LHST} - {3826191600 37800 0 LHST} - {3842523000 39600 1 LHST} - {3858246000 37800 0 LHST} - {3873972600 39600 1 LHST} - {3889695600 37800 0 LHST} - {3905422200 39600 1 LHST} - {3921145200 37800 0 LHST} - {3936871800 39600 1 LHST} - {3952594800 37800 0 LHST} - {3968321400 39600 1 LHST} - {3984044400 37800 0 LHST} - {4000375800 39600 1 LHST} - {4016098800 37800 0 LHST} - {4031825400 39600 1 LHST} - {4047548400 37800 0 LHST} - {4063275000 39600 1 LHST} - {4078998000 37800 0 LHST} - {4094724600 39600 1 LHST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Lord_Howe) { + {-9223372036854775808 38180 0 LMT} + {-2364114980 36000 0 EST} + {352216800 37800 0 LHST} + {372785400 41400 1 LHST} + {384273000 37800 0 LHST} + {404839800 41400 1 LHST} + {415722600 37800 0 LHST} + {436289400 41400 1 LHST} + {447172200 37800 0 LHST} + {467739000 41400 1 LHST} + {478621800 37800 0 LHST} + {499188600 39600 1 LHST} + {511282800 37800 0 LHST} + {530033400 39600 1 LHST} + {542732400 37800 0 LHST} + {562087800 39600 1 LHST} + {574786800 37800 0 LHST} + {594142200 39600 1 LHST} + {606236400 37800 0 LHST} + {625591800 39600 1 LHST} + {636476400 37800 0 LHST} + {657041400 39600 1 LHST} + {667926000 37800 0 LHST} + {688491000 39600 1 LHST} + {699375600 37800 0 LHST} + {719940600 39600 1 LHST} + {731430000 37800 0 LHST} + {751995000 39600 1 LHST} + {762879600 37800 0 LHST} + {783444600 39600 1 LHST} + {794329200 37800 0 LHST} + {814894200 39600 1 LHST} + {828198000 37800 0 LHST} + {846343800 39600 1 LHST} + {859647600 37800 0 LHST} + {877793400 39600 1 LHST} + {891097200 37800 0 LHST} + {909243000 39600 1 LHST} + {922546800 37800 0 LHST} + {941297400 39600 1 LHST} + {953996400 37800 0 LHST} + {967303800 39600 1 LHST} + {985446000 37800 0 LHST} + {1004196600 39600 1 LHST} + {1017500400 37800 0 LHST} + {1035646200 39600 1 LHST} + {1048950000 37800 0 LHST} + {1067095800 39600 1 LHST} + {1080399600 37800 0 LHST} + {1099150200 39600 1 LHST} + {1111849200 37800 0 LHST} + {1130599800 39600 1 LHST} + {1143903600 37800 0 LHST} + {1162049400 39600 1 LHST} + {1174748400 37800 0 LHST} + {1193499000 39600 1 LHST} + {1207407600 37800 0 LHST} + {1223134200 39600 1 LHST} + {1238857200 37800 0 LHST} + {1254583800 39600 1 LHST} + {1270306800 37800 0 LHST} + {1286033400 39600 1 LHST} + {1301756400 37800 0 LHST} + {1317483000 39600 1 LHST} + {1333206000 37800 0 LHST} + {1349537400 39600 1 LHST} + {1365260400 37800 0 LHST} + {1380987000 39600 1 LHST} + {1396710000 37800 0 LHST} + {1412436600 39600 1 LHST} + {1428159600 37800 0 LHST} + {1443886200 39600 1 LHST} + {1459609200 37800 0 LHST} + {1475335800 39600 1 LHST} + {1491058800 37800 0 LHST} + {1506785400 39600 1 LHST} + {1522508400 37800 0 LHST} + {1538839800 39600 1 LHST} + {1554562800 37800 0 LHST} + {1570289400 39600 1 LHST} + {1586012400 37800 0 LHST} + {1601739000 39600 1 LHST} + {1617462000 37800 0 LHST} + {1633188600 39600 1 LHST} + {1648911600 37800 0 LHST} + {1664638200 39600 1 LHST} + {1680361200 37800 0 LHST} + {1696087800 39600 1 LHST} + {1712415600 37800 0 LHST} + {1728142200 39600 1 LHST} + {1743865200 37800 0 LHST} + {1759591800 39600 1 LHST} + {1775314800 37800 0 LHST} + {1791041400 39600 1 LHST} + {1806764400 37800 0 LHST} + {1822491000 39600 1 LHST} + {1838214000 37800 0 LHST} + {1853940600 39600 1 LHST} + {1869663600 37800 0 LHST} + {1885995000 39600 1 LHST} + {1901718000 37800 0 LHST} + {1917444600 39600 1 LHST} + {1933167600 37800 0 LHST} + {1948894200 39600 1 LHST} + {1964617200 37800 0 LHST} + {1980343800 39600 1 LHST} + {1996066800 37800 0 LHST} + {2011793400 39600 1 LHST} + {2027516400 37800 0 LHST} + {2043243000 39600 1 LHST} + {2058966000 37800 0 LHST} + {2075297400 39600 1 LHST} + {2091020400 37800 0 LHST} + {2106747000 39600 1 LHST} + {2122470000 37800 0 LHST} + {2138196600 39600 1 LHST} + {2153919600 37800 0 LHST} + {2169646200 39600 1 LHST} + {2185369200 37800 0 LHST} + {2201095800 39600 1 LHST} + {2216818800 37800 0 LHST} + {2233150200 39600 1 LHST} + {2248873200 37800 0 LHST} + {2264599800 39600 1 LHST} + {2280322800 37800 0 LHST} + {2296049400 39600 1 LHST} + {2311772400 37800 0 LHST} + {2327499000 39600 1 LHST} + {2343222000 37800 0 LHST} + {2358948600 39600 1 LHST} + {2374671600 37800 0 LHST} + {2390398200 39600 1 LHST} + {2406121200 37800 0 LHST} + {2422452600 39600 1 LHST} + {2438175600 37800 0 LHST} + {2453902200 39600 1 LHST} + {2469625200 37800 0 LHST} + {2485351800 39600 1 LHST} + {2501074800 37800 0 LHST} + {2516801400 39600 1 LHST} + {2532524400 37800 0 LHST} + {2548251000 39600 1 LHST} + {2563974000 37800 0 LHST} + {2579700600 39600 1 LHST} + {2596028400 37800 0 LHST} + {2611755000 39600 1 LHST} + {2627478000 37800 0 LHST} + {2643204600 39600 1 LHST} + {2658927600 37800 0 LHST} + {2674654200 39600 1 LHST} + {2690377200 37800 0 LHST} + {2706103800 39600 1 LHST} + {2721826800 37800 0 LHST} + {2737553400 39600 1 LHST} + {2753276400 37800 0 LHST} + {2769607800 39600 1 LHST} + {2785330800 37800 0 LHST} + {2801057400 39600 1 LHST} + {2816780400 37800 0 LHST} + {2832507000 39600 1 LHST} + {2848230000 37800 0 LHST} + {2863956600 39600 1 LHST} + {2879679600 37800 0 LHST} + {2895406200 39600 1 LHST} + {2911129200 37800 0 LHST} + {2926855800 39600 1 LHST} + {2942578800 37800 0 LHST} + {2958910200 39600 1 LHST} + {2974633200 37800 0 LHST} + {2990359800 39600 1 LHST} + {3006082800 37800 0 LHST} + {3021809400 39600 1 LHST} + {3037532400 37800 0 LHST} + {3053259000 39600 1 LHST} + {3068982000 37800 0 LHST} + {3084708600 39600 1 LHST} + {3100431600 37800 0 LHST} + {3116763000 39600 1 LHST} + {3132486000 37800 0 LHST} + {3148212600 39600 1 LHST} + {3163935600 37800 0 LHST} + {3179662200 39600 1 LHST} + {3195385200 37800 0 LHST} + {3211111800 39600 1 LHST} + {3226834800 37800 0 LHST} + {3242561400 39600 1 LHST} + {3258284400 37800 0 LHST} + {3274011000 39600 1 LHST} + {3289734000 37800 0 LHST} + {3306065400 39600 1 LHST} + {3321788400 37800 0 LHST} + {3337515000 39600 1 LHST} + {3353238000 37800 0 LHST} + {3368964600 39600 1 LHST} + {3384687600 37800 0 LHST} + {3400414200 39600 1 LHST} + {3416137200 37800 0 LHST} + {3431863800 39600 1 LHST} + {3447586800 37800 0 LHST} + {3463313400 39600 1 LHST} + {3479641200 37800 0 LHST} + {3495367800 39600 1 LHST} + {3511090800 37800 0 LHST} + {3526817400 39600 1 LHST} + {3542540400 37800 0 LHST} + {3558267000 39600 1 LHST} + {3573990000 37800 0 LHST} + {3589716600 39600 1 LHST} + {3605439600 37800 0 LHST} + {3621166200 39600 1 LHST} + {3636889200 37800 0 LHST} + {3653220600 39600 1 LHST} + {3668943600 37800 0 LHST} + {3684670200 39600 1 LHST} + {3700393200 37800 0 LHST} + {3716119800 39600 1 LHST} + {3731842800 37800 0 LHST} + {3747569400 39600 1 LHST} + {3763292400 37800 0 LHST} + {3779019000 39600 1 LHST} + {3794742000 37800 0 LHST} + {3810468600 39600 1 LHST} + {3826191600 37800 0 LHST} + {3842523000 39600 1 LHST} + {3858246000 37800 0 LHST} + {3873972600 39600 1 LHST} + {3889695600 37800 0 LHST} + {3905422200 39600 1 LHST} + {3921145200 37800 0 LHST} + {3936871800 39600 1 LHST} + {3952594800 37800 0 LHST} + {3968321400 39600 1 LHST} + {3984044400 37800 0 LHST} + {4000375800 39600 1 LHST} + {4016098800 37800 0 LHST} + {4031825400 39600 1 LHST} + {4047548400 37800 0 LHST} + {4063275000 39600 1 LHST} + {4078998000 37800 0 LHST} + {4094724600 39600 1 LHST} +} diff --git a/library/tzdata/Australia/Melbourne b/library/tzdata/Australia/Melbourne index 907b8b9..5fe9a7a 100644 --- a/library/tzdata/Australia/Melbourne +++ b/library/tzdata/Australia/Melbourne @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Melbourne) { - {-9223372036854775808 34792 0 LMT} - {-2364111592 36000 0 EST} - {-1672567140 39600 1 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {31500000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {89136000 39600 1 EST} - {100022400 36000 0 EST} - {120585600 39600 1 EST} - {131472000 36000 0 EST} - {152035200 39600 1 EST} - {162921600 36000 0 EST} - {183484800 39600 1 EST} - {194976000 36000 0 EST} - {215539200 39600 1 EST} - {226425600 36000 0 EST} - {246988800 39600 1 EST} - {257875200 36000 0 EST} - {278438400 39600 1 EST} - {289324800 36000 0 EST} - {309888000 39600 1 EST} - {320774400 36000 0 EST} - {341337600 39600 1 EST} - {352224000 36000 0 EST} - {372787200 39600 1 EST} - {384278400 36000 0 EST} - {404841600 39600 1 EST} - {415728000 36000 0 EST} - {436291200 39600 1 EST} - {447177600 36000 0 EST} - {467740800 39600 1 EST} - {478627200 36000 0 EST} - {499190400 39600 1 EST} - {511286400 36000 0 EST} - {530035200 39600 1 EST} - {542736000 36000 0 EST} - {561484800 39600 1 EST} - {574790400 36000 0 EST} - {594144000 39600 1 EST} - {606240000 36000 0 EST} - {625593600 39600 1 EST} - {637689600 36000 0 EST} - {657043200 39600 1 EST} - {667929600 36000 0 EST} - {688492800 39600 1 EST} - {699379200 36000 0 EST} - {719942400 39600 1 EST} - {731433600 36000 0 EST} - {751996800 39600 1 EST} - {762883200 36000 0 EST} - {783446400 39600 1 EST} - {796147200 36000 0 EST} - {814896000 39600 1 EST} - {828201600 36000 0 EST} - {846345600 39600 1 EST} - {859651200 36000 0 EST} - {877795200 39600 1 EST} - {891100800 36000 0 EST} - {909244800 39600 1 EST} - {922550400 36000 0 EST} - {941299200 39600 1 EST} - {954000000 36000 0 EST} - {967305600 39600 1 EST} - {985449600 36000 0 EST} - {1004198400 39600 1 EST} - {1017504000 36000 0 EST} - {1035648000 39600 1 EST} - {1048953600 36000 0 EST} - {1067097600 39600 1 EST} - {1080403200 36000 0 EST} - {1099152000 39600 1 EST} - {1111852800 36000 0 EST} - {1130601600 39600 1 EST} - {1143907200 36000 0 EST} - {1162051200 39600 1 EST} - {1174752000 36000 0 EST} - {1193500800 39600 1 EST} - {1207411200 36000 0 EST} - {1223136000 39600 1 EST} - {1238860800 36000 0 EST} - {1254585600 39600 1 EST} - {1270310400 36000 0 EST} - {1286035200 39600 1 EST} - {1301760000 36000 0 EST} - {1317484800 39600 1 EST} - {1333209600 36000 0 EST} - {1349539200 39600 1 EST} - {1365264000 36000 0 EST} - {1380988800 39600 1 EST} - {1396713600 36000 0 EST} - {1412438400 39600 1 EST} - {1428163200 36000 0 EST} - {1443888000 39600 1 EST} - {1459612800 36000 0 EST} - {1475337600 39600 1 EST} - {1491062400 36000 0 EST} - {1506787200 39600 1 EST} - {1522512000 36000 0 EST} - {1538841600 39600 1 EST} - {1554566400 36000 0 EST} - {1570291200 39600 1 EST} - {1586016000 36000 0 EST} - {1601740800 39600 1 EST} - {1617465600 36000 0 EST} - {1633190400 39600 1 EST} - {1648915200 36000 0 EST} - {1664640000 39600 1 EST} - {1680364800 36000 0 EST} - {1696089600 39600 1 EST} - {1712419200 36000 0 EST} - {1728144000 39600 1 EST} - {1743868800 36000 0 EST} - {1759593600 39600 1 EST} - {1775318400 36000 0 EST} - {1791043200 39600 1 EST} - {1806768000 36000 0 EST} - {1822492800 39600 1 EST} - {1838217600 36000 0 EST} - {1853942400 39600 1 EST} - {1869667200 36000 0 EST} - {1885996800 39600 1 EST} - {1901721600 36000 0 EST} - {1917446400 39600 1 EST} - {1933171200 36000 0 EST} - {1948896000 39600 1 EST} - {1964620800 36000 0 EST} - {1980345600 39600 1 EST} - {1996070400 36000 0 EST} - {2011795200 39600 1 EST} - {2027520000 36000 0 EST} - {2043244800 39600 1 EST} - {2058969600 36000 0 EST} - {2075299200 39600 1 EST} - {2091024000 36000 0 EST} - {2106748800 39600 1 EST} - {2122473600 36000 0 EST} - {2138198400 39600 1 EST} - {2153923200 36000 0 EST} - {2169648000 39600 1 EST} - {2185372800 36000 0 EST} - {2201097600 39600 1 EST} - {2216822400 36000 0 EST} - {2233152000 39600 1 EST} - {2248876800 36000 0 EST} - {2264601600 39600 1 EST} - {2280326400 36000 0 EST} - {2296051200 39600 1 EST} - {2311776000 36000 0 EST} - {2327500800 39600 1 EST} - {2343225600 36000 0 EST} - {2358950400 39600 1 EST} - {2374675200 36000 0 EST} - {2390400000 39600 1 EST} - {2406124800 36000 0 EST} - {2422454400 39600 1 EST} - {2438179200 36000 0 EST} - {2453904000 39600 1 EST} - {2469628800 36000 0 EST} - {2485353600 39600 1 EST} - {2501078400 36000 0 EST} - {2516803200 39600 1 EST} - {2532528000 36000 0 EST} - {2548252800 39600 1 EST} - {2563977600 36000 0 EST} - {2579702400 39600 1 EST} - {2596032000 36000 0 EST} - {2611756800 39600 1 EST} - {2627481600 36000 0 EST} - {2643206400 39600 1 EST} - {2658931200 36000 0 EST} - {2674656000 39600 1 EST} - {2690380800 36000 0 EST} - {2706105600 39600 1 EST} - {2721830400 36000 0 EST} - {2737555200 39600 1 EST} - {2753280000 36000 0 EST} - {2769609600 39600 1 EST} - {2785334400 36000 0 EST} - {2801059200 39600 1 EST} - {2816784000 36000 0 EST} - {2832508800 39600 1 EST} - {2848233600 36000 0 EST} - {2863958400 39600 1 EST} - {2879683200 36000 0 EST} - {2895408000 39600 1 EST} - {2911132800 36000 0 EST} - {2926857600 39600 1 EST} - {2942582400 36000 0 EST} - {2958912000 39600 1 EST} - {2974636800 36000 0 EST} - {2990361600 39600 1 EST} - {3006086400 36000 0 EST} - {3021811200 39600 1 EST} - {3037536000 36000 0 EST} - {3053260800 39600 1 EST} - {3068985600 36000 0 EST} - {3084710400 39600 1 EST} - {3100435200 36000 0 EST} - {3116764800 39600 1 EST} - {3132489600 36000 0 EST} - {3148214400 39600 1 EST} - {3163939200 36000 0 EST} - {3179664000 39600 1 EST} - {3195388800 36000 0 EST} - {3211113600 39600 1 EST} - {3226838400 36000 0 EST} - {3242563200 39600 1 EST} - {3258288000 36000 0 EST} - {3274012800 39600 1 EST} - {3289737600 36000 0 EST} - {3306067200 39600 1 EST} - {3321792000 36000 0 EST} - {3337516800 39600 1 EST} - {3353241600 36000 0 EST} - {3368966400 39600 1 EST} - {3384691200 36000 0 EST} - {3400416000 39600 1 EST} - {3416140800 36000 0 EST} - {3431865600 39600 1 EST} - {3447590400 36000 0 EST} - {3463315200 39600 1 EST} - {3479644800 36000 0 EST} - {3495369600 39600 1 EST} - {3511094400 36000 0 EST} - {3526819200 39600 1 EST} - {3542544000 36000 0 EST} - {3558268800 39600 1 EST} - {3573993600 36000 0 EST} - {3589718400 39600 1 EST} - {3605443200 36000 0 EST} - {3621168000 39600 1 EST} - {3636892800 36000 0 EST} - {3653222400 39600 1 EST} - {3668947200 36000 0 EST} - {3684672000 39600 1 EST} - {3700396800 36000 0 EST} - {3716121600 39600 1 EST} - {3731846400 36000 0 EST} - {3747571200 39600 1 EST} - {3763296000 36000 0 EST} - {3779020800 39600 1 EST} - {3794745600 36000 0 EST} - {3810470400 39600 1 EST} - {3826195200 36000 0 EST} - {3842524800 39600 1 EST} - {3858249600 36000 0 EST} - {3873974400 39600 1 EST} - {3889699200 36000 0 EST} - {3905424000 39600 1 EST} - {3921148800 36000 0 EST} - {3936873600 39600 1 EST} - {3952598400 36000 0 EST} - {3968323200 39600 1 EST} - {3984048000 36000 0 EST} - {4000377600 39600 1 EST} - {4016102400 36000 0 EST} - {4031827200 39600 1 EST} - {4047552000 36000 0 EST} - {4063276800 39600 1 EST} - {4079001600 36000 0 EST} - {4094726400 39600 1 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Melbourne) { + {-9223372036854775808 34792 0 LMT} + {-2364111592 36000 0 EST} + {-1672567140 39600 1 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {31500000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {89136000 39600 1 EST} + {100022400 36000 0 EST} + {120585600 39600 1 EST} + {131472000 36000 0 EST} + {152035200 39600 1 EST} + {162921600 36000 0 EST} + {183484800 39600 1 EST} + {194976000 36000 0 EST} + {215539200 39600 1 EST} + {226425600 36000 0 EST} + {246988800 39600 1 EST} + {257875200 36000 0 EST} + {278438400 39600 1 EST} + {289324800 36000 0 EST} + {309888000 39600 1 EST} + {320774400 36000 0 EST} + {341337600 39600 1 EST} + {352224000 36000 0 EST} + {372787200 39600 1 EST} + {384278400 36000 0 EST} + {404841600 39600 1 EST} + {415728000 36000 0 EST} + {436291200 39600 1 EST} + {447177600 36000 0 EST} + {467740800 39600 1 EST} + {478627200 36000 0 EST} + {499190400 39600 1 EST} + {511286400 36000 0 EST} + {530035200 39600 1 EST} + {542736000 36000 0 EST} + {561484800 39600 1 EST} + {574790400 36000 0 EST} + {594144000 39600 1 EST} + {606240000 36000 0 EST} + {625593600 39600 1 EST} + {637689600 36000 0 EST} + {657043200 39600 1 EST} + {667929600 36000 0 EST} + {688492800 39600 1 EST} + {699379200 36000 0 EST} + {719942400 39600 1 EST} + {731433600 36000 0 EST} + {751996800 39600 1 EST} + {762883200 36000 0 EST} + {783446400 39600 1 EST} + {796147200 36000 0 EST} + {814896000 39600 1 EST} + {828201600 36000 0 EST} + {846345600 39600 1 EST} + {859651200 36000 0 EST} + {877795200 39600 1 EST} + {891100800 36000 0 EST} + {909244800 39600 1 EST} + {922550400 36000 0 EST} + {941299200 39600 1 EST} + {954000000 36000 0 EST} + {967305600 39600 1 EST} + {985449600 36000 0 EST} + {1004198400 39600 1 EST} + {1017504000 36000 0 EST} + {1035648000 39600 1 EST} + {1048953600 36000 0 EST} + {1067097600 39600 1 EST} + {1080403200 36000 0 EST} + {1099152000 39600 1 EST} + {1111852800 36000 0 EST} + {1130601600 39600 1 EST} + {1143907200 36000 0 EST} + {1162051200 39600 1 EST} + {1174752000 36000 0 EST} + {1193500800 39600 1 EST} + {1207411200 36000 0 EST} + {1223136000 39600 1 EST} + {1238860800 36000 0 EST} + {1254585600 39600 1 EST} + {1270310400 36000 0 EST} + {1286035200 39600 1 EST} + {1301760000 36000 0 EST} + {1317484800 39600 1 EST} + {1333209600 36000 0 EST} + {1349539200 39600 1 EST} + {1365264000 36000 0 EST} + {1380988800 39600 1 EST} + {1396713600 36000 0 EST} + {1412438400 39600 1 EST} + {1428163200 36000 0 EST} + {1443888000 39600 1 EST} + {1459612800 36000 0 EST} + {1475337600 39600 1 EST} + {1491062400 36000 0 EST} + {1506787200 39600 1 EST} + {1522512000 36000 0 EST} + {1538841600 39600 1 EST} + {1554566400 36000 0 EST} + {1570291200 39600 1 EST} + {1586016000 36000 0 EST} + {1601740800 39600 1 EST} + {1617465600 36000 0 EST} + {1633190400 39600 1 EST} + {1648915200 36000 0 EST} + {1664640000 39600 1 EST} + {1680364800 36000 0 EST} + {1696089600 39600 1 EST} + {1712419200 36000 0 EST} + {1728144000 39600 1 EST} + {1743868800 36000 0 EST} + {1759593600 39600 1 EST} + {1775318400 36000 0 EST} + {1791043200 39600 1 EST} + {1806768000 36000 0 EST} + {1822492800 39600 1 EST} + {1838217600 36000 0 EST} + {1853942400 39600 1 EST} + {1869667200 36000 0 EST} + {1885996800 39600 1 EST} + {1901721600 36000 0 EST} + {1917446400 39600 1 EST} + {1933171200 36000 0 EST} + {1948896000 39600 1 EST} + {1964620800 36000 0 EST} + {1980345600 39600 1 EST} + {1996070400 36000 0 EST} + {2011795200 39600 1 EST} + {2027520000 36000 0 EST} + {2043244800 39600 1 EST} + {2058969600 36000 0 EST} + {2075299200 39600 1 EST} + {2091024000 36000 0 EST} + {2106748800 39600 1 EST} + {2122473600 36000 0 EST} + {2138198400 39600 1 EST} + {2153923200 36000 0 EST} + {2169648000 39600 1 EST} + {2185372800 36000 0 EST} + {2201097600 39600 1 EST} + {2216822400 36000 0 EST} + {2233152000 39600 1 EST} + {2248876800 36000 0 EST} + {2264601600 39600 1 EST} + {2280326400 36000 0 EST} + {2296051200 39600 1 EST} + {2311776000 36000 0 EST} + {2327500800 39600 1 EST} + {2343225600 36000 0 EST} + {2358950400 39600 1 EST} + {2374675200 36000 0 EST} + {2390400000 39600 1 EST} + {2406124800 36000 0 EST} + {2422454400 39600 1 EST} + {2438179200 36000 0 EST} + {2453904000 39600 1 EST} + {2469628800 36000 0 EST} + {2485353600 39600 1 EST} + {2501078400 36000 0 EST} + {2516803200 39600 1 EST} + {2532528000 36000 0 EST} + {2548252800 39600 1 EST} + {2563977600 36000 0 EST} + {2579702400 39600 1 EST} + {2596032000 36000 0 EST} + {2611756800 39600 1 EST} + {2627481600 36000 0 EST} + {2643206400 39600 1 EST} + {2658931200 36000 0 EST} + {2674656000 39600 1 EST} + {2690380800 36000 0 EST} + {2706105600 39600 1 EST} + {2721830400 36000 0 EST} + {2737555200 39600 1 EST} + {2753280000 36000 0 EST} + {2769609600 39600 1 EST} + {2785334400 36000 0 EST} + {2801059200 39600 1 EST} + {2816784000 36000 0 EST} + {2832508800 39600 1 EST} + {2848233600 36000 0 EST} + {2863958400 39600 1 EST} + {2879683200 36000 0 EST} + {2895408000 39600 1 EST} + {2911132800 36000 0 EST} + {2926857600 39600 1 EST} + {2942582400 36000 0 EST} + {2958912000 39600 1 EST} + {2974636800 36000 0 EST} + {2990361600 39600 1 EST} + {3006086400 36000 0 EST} + {3021811200 39600 1 EST} + {3037536000 36000 0 EST} + {3053260800 39600 1 EST} + {3068985600 36000 0 EST} + {3084710400 39600 1 EST} + {3100435200 36000 0 EST} + {3116764800 39600 1 EST} + {3132489600 36000 0 EST} + {3148214400 39600 1 EST} + {3163939200 36000 0 EST} + {3179664000 39600 1 EST} + {3195388800 36000 0 EST} + {3211113600 39600 1 EST} + {3226838400 36000 0 EST} + {3242563200 39600 1 EST} + {3258288000 36000 0 EST} + {3274012800 39600 1 EST} + {3289737600 36000 0 EST} + {3306067200 39600 1 EST} + {3321792000 36000 0 EST} + {3337516800 39600 1 EST} + {3353241600 36000 0 EST} + {3368966400 39600 1 EST} + {3384691200 36000 0 EST} + {3400416000 39600 1 EST} + {3416140800 36000 0 EST} + {3431865600 39600 1 EST} + {3447590400 36000 0 EST} + {3463315200 39600 1 EST} + {3479644800 36000 0 EST} + {3495369600 39600 1 EST} + {3511094400 36000 0 EST} + {3526819200 39600 1 EST} + {3542544000 36000 0 EST} + {3558268800 39600 1 EST} + {3573993600 36000 0 EST} + {3589718400 39600 1 EST} + {3605443200 36000 0 EST} + {3621168000 39600 1 EST} + {3636892800 36000 0 EST} + {3653222400 39600 1 EST} + {3668947200 36000 0 EST} + {3684672000 39600 1 EST} + {3700396800 36000 0 EST} + {3716121600 39600 1 EST} + {3731846400 36000 0 EST} + {3747571200 39600 1 EST} + {3763296000 36000 0 EST} + {3779020800 39600 1 EST} + {3794745600 36000 0 EST} + {3810470400 39600 1 EST} + {3826195200 36000 0 EST} + {3842524800 39600 1 EST} + {3858249600 36000 0 EST} + {3873974400 39600 1 EST} + {3889699200 36000 0 EST} + {3905424000 39600 1 EST} + {3921148800 36000 0 EST} + {3936873600 39600 1 EST} + {3952598400 36000 0 EST} + {3968323200 39600 1 EST} + {3984048000 36000 0 EST} + {4000377600 39600 1 EST} + {4016102400 36000 0 EST} + {4031827200 39600 1 EST} + {4047552000 36000 0 EST} + {4063276800 39600 1 EST} + {4079001600 36000 0 EST} + {4094726400 39600 1 EST} +} diff --git a/library/tzdata/Australia/NSW b/library/tzdata/Australia/NSW index 905bdfe..46758f8 100644 --- a/library/tzdata/Australia/NSW +++ b/library/tzdata/Australia/NSW @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Sydney)]} { - LoadTimeZoneFile Australia/Sydney -} -set TZData(:Australia/NSW) $TZData(:Australia/Sydney) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Sydney)]} { + LoadTimeZoneFile Australia/Sydney +} +set TZData(:Australia/NSW) $TZData(:Australia/Sydney) diff --git a/library/tzdata/Australia/North b/library/tzdata/Australia/North index 950c88c..a6a0b0d 100644 --- a/library/tzdata/Australia/North +++ b/library/tzdata/Australia/North @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Darwin)]} { - LoadTimeZoneFile Australia/Darwin -} -set TZData(:Australia/North) $TZData(:Australia/Darwin) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Darwin)]} { + LoadTimeZoneFile Australia/Darwin +} +set TZData(:Australia/North) $TZData(:Australia/Darwin) diff --git a/library/tzdata/Australia/Perth b/library/tzdata/Australia/Perth index 5d8f116..80c6981 100644 --- a/library/tzdata/Australia/Perth +++ b/library/tzdata/Australia/Perth @@ -1,25 +1,25 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Perth) { - {-9223372036854775808 27804 0 LMT} - {-2337925404 28800 0 WST} - {-1672559940 32400 1 WST} - {-1665385200 28800 0 WST} - {-883634400 32400 1 WST} - {-876121200 28800 0 WST} - {-860392800 32400 1 WST} - {-844671600 28800 0 WST} - {-836470800 32400 0 WST} - {152042400 32400 1 WST} - {162928800 28800 0 WST} - {436298400 32400 1 WST} - {447184800 28800 0 WST} - {690314400 32400 1 WST} - {699386400 28800 0 WST} - {1165082400 32400 1 WST} - {1174759200 28800 0 WST} - {1193508000 32400 1 WST} - {1206813600 28800 0 WST} - {1224957600 32400 1 WST} - {1238263200 28800 0 WST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Perth) { + {-9223372036854775808 27804 0 LMT} + {-2337925404 28800 0 WST} + {-1672559940 32400 1 WST} + {-1665385200 28800 0 WST} + {-883634400 32400 1 WST} + {-876121200 28800 0 WST} + {-860392800 32400 1 WST} + {-844671600 28800 0 WST} + {-836470800 32400 0 WST} + {152042400 32400 1 WST} + {162928800 28800 0 WST} + {436298400 32400 1 WST} + {447184800 28800 0 WST} + {690314400 32400 1 WST} + {699386400 28800 0 WST} + {1165082400 32400 1 WST} + {1174759200 28800 0 WST} + {1193508000 32400 1 WST} + {1206813600 28800 0 WST} + {1224957600 32400 1 WST} + {1238263200 28800 0 WST} +} diff --git a/library/tzdata/Australia/Queensland b/library/tzdata/Australia/Queensland index 6246e92..333cf7f 100644 --- a/library/tzdata/Australia/Queensland +++ b/library/tzdata/Australia/Queensland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Brisbane)]} { - LoadTimeZoneFile Australia/Brisbane -} -set TZData(:Australia/Queensland) $TZData(:Australia/Brisbane) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Brisbane)]} { + LoadTimeZoneFile Australia/Brisbane +} +set TZData(:Australia/Queensland) $TZData(:Australia/Brisbane) diff --git a/library/tzdata/Australia/South b/library/tzdata/Australia/South index 9c7dd95..26b23c4 100644 --- a/library/tzdata/Australia/South +++ b/library/tzdata/Australia/South @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Adelaide)]} { - LoadTimeZoneFile Australia/Adelaide -} -set TZData(:Australia/South) $TZData(:Australia/Adelaide) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Adelaide)]} { + LoadTimeZoneFile Australia/Adelaide +} +set TZData(:Australia/South) $TZData(:Australia/Adelaide) diff --git a/library/tzdata/Australia/Sydney b/library/tzdata/Australia/Sydney index 84b1d14..7fa36db 100644 --- a/library/tzdata/Australia/Sydney +++ b/library/tzdata/Australia/Sydney @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Sydney) { - {-9223372036854775808 36292 0 LMT} - {-2364113092 36000 0 EST} - {-1672567140 39600 1 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {31500000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {89136000 39600 1 EST} - {100022400 36000 0 EST} - {120585600 39600 1 EST} - {131472000 36000 0 EST} - {152035200 39600 1 EST} - {162921600 36000 0 EST} - {183484800 39600 1 EST} - {194976000 36000 0 EST} - {215539200 39600 1 EST} - {226425600 36000 0 EST} - {246988800 39600 1 EST} - {257875200 36000 0 EST} - {278438400 39600 1 EST} - {289324800 36000 0 EST} - {309888000 39600 1 EST} - {320774400 36000 0 EST} - {341337600 39600 1 EST} - {352224000 36000 0 EST} - {372787200 39600 1 EST} - {386697600 36000 0 EST} - {404841600 39600 1 EST} - {415728000 36000 0 EST} - {436291200 39600 1 EST} - {447177600 36000 0 EST} - {467740800 39600 1 EST} - {478627200 36000 0 EST} - {499190400 39600 1 EST} - {511286400 36000 0 EST} - {530035200 39600 1 EST} - {542736000 36000 0 EST} - {562089600 39600 1 EST} - {574790400 36000 0 EST} - {594144000 39600 1 EST} - {606240000 36000 0 EST} - {625593600 39600 1 EST} - {636480000 36000 0 EST} - {657043200 39600 1 EST} - {667929600 36000 0 EST} - {688492800 39600 1 EST} - {699379200 36000 0 EST} - {719942400 39600 1 EST} - {731433600 36000 0 EST} - {751996800 39600 1 EST} - {762883200 36000 0 EST} - {783446400 39600 1 EST} - {794332800 36000 0 EST} - {814896000 39600 1 EST} - {828201600 36000 0 EST} - {846345600 39600 1 EST} - {859651200 36000 0 EST} - {877795200 39600 1 EST} - {891100800 36000 0 EST} - {909244800 39600 1 EST} - {922550400 36000 0 EST} - {941299200 39600 1 EST} - {954000000 36000 0 EST} - {967305600 39600 1 EST} - {985449600 36000 0 EST} - {1004198400 39600 1 EST} - {1017504000 36000 0 EST} - {1035648000 39600 1 EST} - {1048953600 36000 0 EST} - {1067097600 39600 1 EST} - {1080403200 36000 0 EST} - {1099152000 39600 1 EST} - {1111852800 36000 0 EST} - {1130601600 39600 1 EST} - {1143907200 36000 0 EST} - {1162051200 39600 1 EST} - {1174752000 36000 0 EST} - {1193500800 39600 1 EST} - {1207411200 36000 0 EST} - {1223136000 39600 1 EST} - {1238860800 36000 0 EST} - {1254585600 39600 1 EST} - {1270310400 36000 0 EST} - {1286035200 39600 1 EST} - {1301760000 36000 0 EST} - {1317484800 39600 1 EST} - {1333209600 36000 0 EST} - {1349539200 39600 1 EST} - {1365264000 36000 0 EST} - {1380988800 39600 1 EST} - {1396713600 36000 0 EST} - {1412438400 39600 1 EST} - {1428163200 36000 0 EST} - {1443888000 39600 1 EST} - {1459612800 36000 0 EST} - {1475337600 39600 1 EST} - {1491062400 36000 0 EST} - {1506787200 39600 1 EST} - {1522512000 36000 0 EST} - {1538841600 39600 1 EST} - {1554566400 36000 0 EST} - {1570291200 39600 1 EST} - {1586016000 36000 0 EST} - {1601740800 39600 1 EST} - {1617465600 36000 0 EST} - {1633190400 39600 1 EST} - {1648915200 36000 0 EST} - {1664640000 39600 1 EST} - {1680364800 36000 0 EST} - {1696089600 39600 1 EST} - {1712419200 36000 0 EST} - {1728144000 39600 1 EST} - {1743868800 36000 0 EST} - {1759593600 39600 1 EST} - {1775318400 36000 0 EST} - {1791043200 39600 1 EST} - {1806768000 36000 0 EST} - {1822492800 39600 1 EST} - {1838217600 36000 0 EST} - {1853942400 39600 1 EST} - {1869667200 36000 0 EST} - {1885996800 39600 1 EST} - {1901721600 36000 0 EST} - {1917446400 39600 1 EST} - {1933171200 36000 0 EST} - {1948896000 39600 1 EST} - {1964620800 36000 0 EST} - {1980345600 39600 1 EST} - {1996070400 36000 0 EST} - {2011795200 39600 1 EST} - {2027520000 36000 0 EST} - {2043244800 39600 1 EST} - {2058969600 36000 0 EST} - {2075299200 39600 1 EST} - {2091024000 36000 0 EST} - {2106748800 39600 1 EST} - {2122473600 36000 0 EST} - {2138198400 39600 1 EST} - {2153923200 36000 0 EST} - {2169648000 39600 1 EST} - {2185372800 36000 0 EST} - {2201097600 39600 1 EST} - {2216822400 36000 0 EST} - {2233152000 39600 1 EST} - {2248876800 36000 0 EST} - {2264601600 39600 1 EST} - {2280326400 36000 0 EST} - {2296051200 39600 1 EST} - {2311776000 36000 0 EST} - {2327500800 39600 1 EST} - {2343225600 36000 0 EST} - {2358950400 39600 1 EST} - {2374675200 36000 0 EST} - {2390400000 39600 1 EST} - {2406124800 36000 0 EST} - {2422454400 39600 1 EST} - {2438179200 36000 0 EST} - {2453904000 39600 1 EST} - {2469628800 36000 0 EST} - {2485353600 39600 1 EST} - {2501078400 36000 0 EST} - {2516803200 39600 1 EST} - {2532528000 36000 0 EST} - {2548252800 39600 1 EST} - {2563977600 36000 0 EST} - {2579702400 39600 1 EST} - {2596032000 36000 0 EST} - {2611756800 39600 1 EST} - {2627481600 36000 0 EST} - {2643206400 39600 1 EST} - {2658931200 36000 0 EST} - {2674656000 39600 1 EST} - {2690380800 36000 0 EST} - {2706105600 39600 1 EST} - {2721830400 36000 0 EST} - {2737555200 39600 1 EST} - {2753280000 36000 0 EST} - {2769609600 39600 1 EST} - {2785334400 36000 0 EST} - {2801059200 39600 1 EST} - {2816784000 36000 0 EST} - {2832508800 39600 1 EST} - {2848233600 36000 0 EST} - {2863958400 39600 1 EST} - {2879683200 36000 0 EST} - {2895408000 39600 1 EST} - {2911132800 36000 0 EST} - {2926857600 39600 1 EST} - {2942582400 36000 0 EST} - {2958912000 39600 1 EST} - {2974636800 36000 0 EST} - {2990361600 39600 1 EST} - {3006086400 36000 0 EST} - {3021811200 39600 1 EST} - {3037536000 36000 0 EST} - {3053260800 39600 1 EST} - {3068985600 36000 0 EST} - {3084710400 39600 1 EST} - {3100435200 36000 0 EST} - {3116764800 39600 1 EST} - {3132489600 36000 0 EST} - {3148214400 39600 1 EST} - {3163939200 36000 0 EST} - {3179664000 39600 1 EST} - {3195388800 36000 0 EST} - {3211113600 39600 1 EST} - {3226838400 36000 0 EST} - {3242563200 39600 1 EST} - {3258288000 36000 0 EST} - {3274012800 39600 1 EST} - {3289737600 36000 0 EST} - {3306067200 39600 1 EST} - {3321792000 36000 0 EST} - {3337516800 39600 1 EST} - {3353241600 36000 0 EST} - {3368966400 39600 1 EST} - {3384691200 36000 0 EST} - {3400416000 39600 1 EST} - {3416140800 36000 0 EST} - {3431865600 39600 1 EST} - {3447590400 36000 0 EST} - {3463315200 39600 1 EST} - {3479644800 36000 0 EST} - {3495369600 39600 1 EST} - {3511094400 36000 0 EST} - {3526819200 39600 1 EST} - {3542544000 36000 0 EST} - {3558268800 39600 1 EST} - {3573993600 36000 0 EST} - {3589718400 39600 1 EST} - {3605443200 36000 0 EST} - {3621168000 39600 1 EST} - {3636892800 36000 0 EST} - {3653222400 39600 1 EST} - {3668947200 36000 0 EST} - {3684672000 39600 1 EST} - {3700396800 36000 0 EST} - {3716121600 39600 1 EST} - {3731846400 36000 0 EST} - {3747571200 39600 1 EST} - {3763296000 36000 0 EST} - {3779020800 39600 1 EST} - {3794745600 36000 0 EST} - {3810470400 39600 1 EST} - {3826195200 36000 0 EST} - {3842524800 39600 1 EST} - {3858249600 36000 0 EST} - {3873974400 39600 1 EST} - {3889699200 36000 0 EST} - {3905424000 39600 1 EST} - {3921148800 36000 0 EST} - {3936873600 39600 1 EST} - {3952598400 36000 0 EST} - {3968323200 39600 1 EST} - {3984048000 36000 0 EST} - {4000377600 39600 1 EST} - {4016102400 36000 0 EST} - {4031827200 39600 1 EST} - {4047552000 36000 0 EST} - {4063276800 39600 1 EST} - {4079001600 36000 0 EST} - {4094726400 39600 1 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Sydney) { + {-9223372036854775808 36292 0 LMT} + {-2364113092 36000 0 EST} + {-1672567140 39600 1 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {31500000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {89136000 39600 1 EST} + {100022400 36000 0 EST} + {120585600 39600 1 EST} + {131472000 36000 0 EST} + {152035200 39600 1 EST} + {162921600 36000 0 EST} + {183484800 39600 1 EST} + {194976000 36000 0 EST} + {215539200 39600 1 EST} + {226425600 36000 0 EST} + {246988800 39600 1 EST} + {257875200 36000 0 EST} + {278438400 39600 1 EST} + {289324800 36000 0 EST} + {309888000 39600 1 EST} + {320774400 36000 0 EST} + {341337600 39600 1 EST} + {352224000 36000 0 EST} + {372787200 39600 1 EST} + {386697600 36000 0 EST} + {404841600 39600 1 EST} + {415728000 36000 0 EST} + {436291200 39600 1 EST} + {447177600 36000 0 EST} + {467740800 39600 1 EST} + {478627200 36000 0 EST} + {499190400 39600 1 EST} + {511286400 36000 0 EST} + {530035200 39600 1 EST} + {542736000 36000 0 EST} + {562089600 39600 1 EST} + {574790400 36000 0 EST} + {594144000 39600 1 EST} + {606240000 36000 0 EST} + {625593600 39600 1 EST} + {636480000 36000 0 EST} + {657043200 39600 1 EST} + {667929600 36000 0 EST} + {688492800 39600 1 EST} + {699379200 36000 0 EST} + {719942400 39600 1 EST} + {731433600 36000 0 EST} + {751996800 39600 1 EST} + {762883200 36000 0 EST} + {783446400 39600 1 EST} + {794332800 36000 0 EST} + {814896000 39600 1 EST} + {828201600 36000 0 EST} + {846345600 39600 1 EST} + {859651200 36000 0 EST} + {877795200 39600 1 EST} + {891100800 36000 0 EST} + {909244800 39600 1 EST} + {922550400 36000 0 EST} + {941299200 39600 1 EST} + {954000000 36000 0 EST} + {967305600 39600 1 EST} + {985449600 36000 0 EST} + {1004198400 39600 1 EST} + {1017504000 36000 0 EST} + {1035648000 39600 1 EST} + {1048953600 36000 0 EST} + {1067097600 39600 1 EST} + {1080403200 36000 0 EST} + {1099152000 39600 1 EST} + {1111852800 36000 0 EST} + {1130601600 39600 1 EST} + {1143907200 36000 0 EST} + {1162051200 39600 1 EST} + {1174752000 36000 0 EST} + {1193500800 39600 1 EST} + {1207411200 36000 0 EST} + {1223136000 39600 1 EST} + {1238860800 36000 0 EST} + {1254585600 39600 1 EST} + {1270310400 36000 0 EST} + {1286035200 39600 1 EST} + {1301760000 36000 0 EST} + {1317484800 39600 1 EST} + {1333209600 36000 0 EST} + {1349539200 39600 1 EST} + {1365264000 36000 0 EST} + {1380988800 39600 1 EST} + {1396713600 36000 0 EST} + {1412438400 39600 1 EST} + {1428163200 36000 0 EST} + {1443888000 39600 1 EST} + {1459612800 36000 0 EST} + {1475337600 39600 1 EST} + {1491062400 36000 0 EST} + {1506787200 39600 1 EST} + {1522512000 36000 0 EST} + {1538841600 39600 1 EST} + {1554566400 36000 0 EST} + {1570291200 39600 1 EST} + {1586016000 36000 0 EST} + {1601740800 39600 1 EST} + {1617465600 36000 0 EST} + {1633190400 39600 1 EST} + {1648915200 36000 0 EST} + {1664640000 39600 1 EST} + {1680364800 36000 0 EST} + {1696089600 39600 1 EST} + {1712419200 36000 0 EST} + {1728144000 39600 1 EST} + {1743868800 36000 0 EST} + {1759593600 39600 1 EST} + {1775318400 36000 0 EST} + {1791043200 39600 1 EST} + {1806768000 36000 0 EST} + {1822492800 39600 1 EST} + {1838217600 36000 0 EST} + {1853942400 39600 1 EST} + {1869667200 36000 0 EST} + {1885996800 39600 1 EST} + {1901721600 36000 0 EST} + {1917446400 39600 1 EST} + {1933171200 36000 0 EST} + {1948896000 39600 1 EST} + {1964620800 36000 0 EST} + {1980345600 39600 1 EST} + {1996070400 36000 0 EST} + {2011795200 39600 1 EST} + {2027520000 36000 0 EST} + {2043244800 39600 1 EST} + {2058969600 36000 0 EST} + {2075299200 39600 1 EST} + {2091024000 36000 0 EST} + {2106748800 39600 1 EST} + {2122473600 36000 0 EST} + {2138198400 39600 1 EST} + {2153923200 36000 0 EST} + {2169648000 39600 1 EST} + {2185372800 36000 0 EST} + {2201097600 39600 1 EST} + {2216822400 36000 0 EST} + {2233152000 39600 1 EST} + {2248876800 36000 0 EST} + {2264601600 39600 1 EST} + {2280326400 36000 0 EST} + {2296051200 39600 1 EST} + {2311776000 36000 0 EST} + {2327500800 39600 1 EST} + {2343225600 36000 0 EST} + {2358950400 39600 1 EST} + {2374675200 36000 0 EST} + {2390400000 39600 1 EST} + {2406124800 36000 0 EST} + {2422454400 39600 1 EST} + {2438179200 36000 0 EST} + {2453904000 39600 1 EST} + {2469628800 36000 0 EST} + {2485353600 39600 1 EST} + {2501078400 36000 0 EST} + {2516803200 39600 1 EST} + {2532528000 36000 0 EST} + {2548252800 39600 1 EST} + {2563977600 36000 0 EST} + {2579702400 39600 1 EST} + {2596032000 36000 0 EST} + {2611756800 39600 1 EST} + {2627481600 36000 0 EST} + {2643206400 39600 1 EST} + {2658931200 36000 0 EST} + {2674656000 39600 1 EST} + {2690380800 36000 0 EST} + {2706105600 39600 1 EST} + {2721830400 36000 0 EST} + {2737555200 39600 1 EST} + {2753280000 36000 0 EST} + {2769609600 39600 1 EST} + {2785334400 36000 0 EST} + {2801059200 39600 1 EST} + {2816784000 36000 0 EST} + {2832508800 39600 1 EST} + {2848233600 36000 0 EST} + {2863958400 39600 1 EST} + {2879683200 36000 0 EST} + {2895408000 39600 1 EST} + {2911132800 36000 0 EST} + {2926857600 39600 1 EST} + {2942582400 36000 0 EST} + {2958912000 39600 1 EST} + {2974636800 36000 0 EST} + {2990361600 39600 1 EST} + {3006086400 36000 0 EST} + {3021811200 39600 1 EST} + {3037536000 36000 0 EST} + {3053260800 39600 1 EST} + {3068985600 36000 0 EST} + {3084710400 39600 1 EST} + {3100435200 36000 0 EST} + {3116764800 39600 1 EST} + {3132489600 36000 0 EST} + {3148214400 39600 1 EST} + {3163939200 36000 0 EST} + {3179664000 39600 1 EST} + {3195388800 36000 0 EST} + {3211113600 39600 1 EST} + {3226838400 36000 0 EST} + {3242563200 39600 1 EST} + {3258288000 36000 0 EST} + {3274012800 39600 1 EST} + {3289737600 36000 0 EST} + {3306067200 39600 1 EST} + {3321792000 36000 0 EST} + {3337516800 39600 1 EST} + {3353241600 36000 0 EST} + {3368966400 39600 1 EST} + {3384691200 36000 0 EST} + {3400416000 39600 1 EST} + {3416140800 36000 0 EST} + {3431865600 39600 1 EST} + {3447590400 36000 0 EST} + {3463315200 39600 1 EST} + {3479644800 36000 0 EST} + {3495369600 39600 1 EST} + {3511094400 36000 0 EST} + {3526819200 39600 1 EST} + {3542544000 36000 0 EST} + {3558268800 39600 1 EST} + {3573993600 36000 0 EST} + {3589718400 39600 1 EST} + {3605443200 36000 0 EST} + {3621168000 39600 1 EST} + {3636892800 36000 0 EST} + {3653222400 39600 1 EST} + {3668947200 36000 0 EST} + {3684672000 39600 1 EST} + {3700396800 36000 0 EST} + {3716121600 39600 1 EST} + {3731846400 36000 0 EST} + {3747571200 39600 1 EST} + {3763296000 36000 0 EST} + {3779020800 39600 1 EST} + {3794745600 36000 0 EST} + {3810470400 39600 1 EST} + {3826195200 36000 0 EST} + {3842524800 39600 1 EST} + {3858249600 36000 0 EST} + {3873974400 39600 1 EST} + {3889699200 36000 0 EST} + {3905424000 39600 1 EST} + {3921148800 36000 0 EST} + {3936873600 39600 1 EST} + {3952598400 36000 0 EST} + {3968323200 39600 1 EST} + {3984048000 36000 0 EST} + {4000377600 39600 1 EST} + {4016102400 36000 0 EST} + {4031827200 39600 1 EST} + {4047552000 36000 0 EST} + {4063276800 39600 1 EST} + {4079001600 36000 0 EST} + {4094726400 39600 1 EST} +} diff --git a/library/tzdata/Australia/Tasmania b/library/tzdata/Australia/Tasmania index 1849bde..757f9ce 100644 --- a/library/tzdata/Australia/Tasmania +++ b/library/tzdata/Australia/Tasmania @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Hobart)]} { - LoadTimeZoneFile Australia/Hobart -} -set TZData(:Australia/Tasmania) $TZData(:Australia/Hobart) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Hobart)]} { + LoadTimeZoneFile Australia/Hobart +} +set TZData(:Australia/Tasmania) $TZData(:Australia/Hobart) diff --git a/library/tzdata/Australia/Victoria b/library/tzdata/Australia/Victoria index 037bfeb..ddab7c1 100644 --- a/library/tzdata/Australia/Victoria +++ b/library/tzdata/Australia/Victoria @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Melbourne)]} { - LoadTimeZoneFile Australia/Melbourne -} -set TZData(:Australia/Victoria) $TZData(:Australia/Melbourne) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Melbourne)]} { + LoadTimeZoneFile Australia/Melbourne +} +set TZData(:Australia/Victoria) $TZData(:Australia/Melbourne) diff --git a/library/tzdata/Australia/West b/library/tzdata/Australia/West index 4689f7e..52ec575 100644 --- a/library/tzdata/Australia/West +++ b/library/tzdata/Australia/West @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Perth)]} { - LoadTimeZoneFile Australia/Perth -} -set TZData(:Australia/West) $TZData(:Australia/Perth) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Perth)]} { + LoadTimeZoneFile Australia/Perth +} +set TZData(:Australia/West) $TZData(:Australia/Perth) diff --git a/library/tzdata/Australia/Yancowinna b/library/tzdata/Australia/Yancowinna index b7d668d..032b862 100644 --- a/library/tzdata/Australia/Yancowinna +++ b/library/tzdata/Australia/Yancowinna @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Broken_Hill)]} { - LoadTimeZoneFile Australia/Broken_Hill -} -set TZData(:Australia/Yancowinna) $TZData(:Australia/Broken_Hill) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Broken_Hill)]} { + LoadTimeZoneFile Australia/Broken_Hill +} +set TZData(:Australia/Yancowinna) $TZData(:Australia/Broken_Hill) diff --git a/library/tzdata/Brazil/Acre b/library/tzdata/Brazil/Acre index abb0b98..dc21ad2 100644 --- a/library/tzdata/Brazil/Acre +++ b/library/tzdata/Brazil/Acre @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Rio_Branco)]} { - LoadTimeZoneFile America/Rio_Branco -} -set TZData(:Brazil/Acre) $TZData(:America/Rio_Branco) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Rio_Branco)]} { + LoadTimeZoneFile America/Rio_Branco +} +set TZData(:Brazil/Acre) $TZData(:America/Rio_Branco) diff --git a/library/tzdata/Brazil/DeNoronha b/library/tzdata/Brazil/DeNoronha index 53accb4..0f038fa 100644 --- a/library/tzdata/Brazil/DeNoronha +++ b/library/tzdata/Brazil/DeNoronha @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Noronha)]} { - LoadTimeZoneFile America/Noronha -} -set TZData(:Brazil/DeNoronha) $TZData(:America/Noronha) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Noronha)]} { + LoadTimeZoneFile America/Noronha +} +set TZData(:Brazil/DeNoronha) $TZData(:America/Noronha) diff --git a/library/tzdata/Brazil/East b/library/tzdata/Brazil/East index f684633..ca46381 100644 --- a/library/tzdata/Brazil/East +++ b/library/tzdata/Brazil/East @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Sao_Paulo)]} { - LoadTimeZoneFile America/Sao_Paulo -} -set TZData(:Brazil/East) $TZData(:America/Sao_Paulo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Sao_Paulo)]} { + LoadTimeZoneFile America/Sao_Paulo +} +set TZData(:Brazil/East) $TZData(:America/Sao_Paulo) diff --git a/library/tzdata/Brazil/West b/library/tzdata/Brazil/West index 67676d9..77231d5 100644 --- a/library/tzdata/Brazil/West +++ b/library/tzdata/Brazil/West @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Manaus)]} { - LoadTimeZoneFile America/Manaus -} -set TZData(:Brazil/West) $TZData(:America/Manaus) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Manaus)]} { + LoadTimeZoneFile America/Manaus +} +set TZData(:Brazil/West) $TZData(:America/Manaus) diff --git a/library/tzdata/CET b/library/tzdata/CET index b08750a..68ab621 100644 --- a/library/tzdata/CET +++ b/library/tzdata/CET @@ -1,265 +1,265 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:CET) { - {-9223372036854775808 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 1 CEST} - {-766623600 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:CET) { + {-9223372036854775808 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 1 CEST} + {-766623600 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/CST6CDT b/library/tzdata/CST6CDT index 11e45f0..379866d 100644 --- a/library/tzdata/CST6CDT +++ b/library/tzdata/CST6CDT @@ -1,278 +1,278 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:CST6CDT) { - {-9223372036854775808 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68662800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:CST6CDT) { + {-9223372036854775808 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68662800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/Canada/Atlantic b/library/tzdata/Canada/Atlantic index d1478d9..adf7856 100644 --- a/library/tzdata/Canada/Atlantic +++ b/library/tzdata/Canada/Atlantic @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Halifax)]} { - LoadTimeZoneFile America/Halifax -} -set TZData(:Canada/Atlantic) $TZData(:America/Halifax) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Halifax)]} { + LoadTimeZoneFile America/Halifax +} +set TZData(:Canada/Atlantic) $TZData(:America/Halifax) diff --git a/library/tzdata/Canada/Central b/library/tzdata/Canada/Central index b04bef9..a050d74 100644 --- a/library/tzdata/Canada/Central +++ b/library/tzdata/Canada/Central @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Winnipeg)]} { - LoadTimeZoneFile America/Winnipeg -} -set TZData(:Canada/Central) $TZData(:America/Winnipeg) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Winnipeg)]} { + LoadTimeZoneFile America/Winnipeg +} +set TZData(:Canada/Central) $TZData(:America/Winnipeg) diff --git a/library/tzdata/Canada/East-Saskatchewan b/library/tzdata/Canada/East-Saskatchewan index f7e500c..4139d33 100644 --- a/library/tzdata/Canada/East-Saskatchewan +++ b/library/tzdata/Canada/East-Saskatchewan @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Regina)]} { - LoadTimeZoneFile America/Regina -} -set TZData(:Canada/East-Saskatchewan) $TZData(:America/Regina) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Regina)]} { + LoadTimeZoneFile America/Regina +} +set TZData(:Canada/East-Saskatchewan) $TZData(:America/Regina) diff --git a/library/tzdata/Canada/Eastern b/library/tzdata/Canada/Eastern index 74528eb..3b99d63 100644 --- a/library/tzdata/Canada/Eastern +++ b/library/tzdata/Canada/Eastern @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Toronto)]} { - LoadTimeZoneFile America/Toronto -} -set TZData(:Canada/Eastern) $TZData(:America/Toronto) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Toronto)]} { + LoadTimeZoneFile America/Toronto +} +set TZData(:Canada/Eastern) $TZData(:America/Toronto) diff --git a/library/tzdata/Canada/Mountain b/library/tzdata/Canada/Mountain index 8c6458d..5342803 100644 --- a/library/tzdata/Canada/Mountain +++ b/library/tzdata/Canada/Mountain @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Edmonton)]} { - LoadTimeZoneFile America/Edmonton -} -set TZData(:Canada/Mountain) $TZData(:America/Edmonton) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Edmonton)]} { + LoadTimeZoneFile America/Edmonton +} +set TZData(:Canada/Mountain) $TZData(:America/Edmonton) diff --git a/library/tzdata/Canada/Newfoundland b/library/tzdata/Canada/Newfoundland index 6904cde..ca1ab26 100644 --- a/library/tzdata/Canada/Newfoundland +++ b/library/tzdata/Canada/Newfoundland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/St_Johns)]} { - LoadTimeZoneFile America/St_Johns -} -set TZData(:Canada/Newfoundland) $TZData(:America/St_Johns) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/St_Johns)]} { + LoadTimeZoneFile America/St_Johns +} +set TZData(:Canada/Newfoundland) $TZData(:America/St_Johns) diff --git a/library/tzdata/Canada/Pacific b/library/tzdata/Canada/Pacific index 4d70342..49ba7da 100644 --- a/library/tzdata/Canada/Pacific +++ b/library/tzdata/Canada/Pacific @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Vancouver)]} { - LoadTimeZoneFile America/Vancouver -} -set TZData(:Canada/Pacific) $TZData(:America/Vancouver) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Vancouver)]} { + LoadTimeZoneFile America/Vancouver +} +set TZData(:Canada/Pacific) $TZData(:America/Vancouver) diff --git a/library/tzdata/Canada/Saskatchewan b/library/tzdata/Canada/Saskatchewan index cd56446..4c19827 100644 --- a/library/tzdata/Canada/Saskatchewan +++ b/library/tzdata/Canada/Saskatchewan @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Regina)]} { - LoadTimeZoneFile America/Regina -} -set TZData(:Canada/Saskatchewan) $TZData(:America/Regina) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Regina)]} { + LoadTimeZoneFile America/Regina +} +set TZData(:Canada/Saskatchewan) $TZData(:America/Regina) diff --git a/library/tzdata/Canada/Yukon b/library/tzdata/Canada/Yukon index 04b8368..34e5846 100644 --- a/library/tzdata/Canada/Yukon +++ b/library/tzdata/Canada/Yukon @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Whitehorse)]} { - LoadTimeZoneFile America/Whitehorse -} -set TZData(:Canada/Yukon) $TZData(:America/Whitehorse) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Whitehorse)]} { + LoadTimeZoneFile America/Whitehorse +} +set TZData(:Canada/Yukon) $TZData(:America/Whitehorse) diff --git a/library/tzdata/Chile/Continental b/library/tzdata/Chile/Continental index 0f858a3..2844b93 100644 --- a/library/tzdata/Chile/Continental +++ b/library/tzdata/Chile/Continental @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Santiago)]} { - LoadTimeZoneFile America/Santiago -} -set TZData(:Chile/Continental) $TZData(:America/Santiago) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Santiago)]} { + LoadTimeZoneFile America/Santiago +} +set TZData(:Chile/Continental) $TZData(:America/Santiago) diff --git a/library/tzdata/Chile/EasterIsland b/library/tzdata/Chile/EasterIsland index 4edc034..9b91321 100644 --- a/library/tzdata/Chile/EasterIsland +++ b/library/tzdata/Chile/EasterIsland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Easter)]} { - LoadTimeZoneFile Pacific/Easter -} -set TZData(:Chile/EasterIsland) $TZData(:Pacific/Easter) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Easter)]} { + LoadTimeZoneFile Pacific/Easter +} +set TZData(:Chile/EasterIsland) $TZData(:Pacific/Easter) diff --git a/library/tzdata/Cuba b/library/tzdata/Cuba index 17f7b45..a0eb0e6 100644 --- a/library/tzdata/Cuba +++ b/library/tzdata/Cuba @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Havana)]} { - LoadTimeZoneFile America/Havana -} -set TZData(:Cuba) $TZData(:America/Havana) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Havana)]} { + LoadTimeZoneFile America/Havana +} +set TZData(:Cuba) $TZData(:America/Havana) diff --git a/library/tzdata/EET b/library/tzdata/EET index e7c102a..1c62ae5 100644 --- a/library/tzdata/EET +++ b/library/tzdata/EET @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:EET) { - {-9223372036854775808 7200 0 EET} - {228877200 10800 1 EEST} - {243997200 7200 0 EET} - {260326800 10800 1 EEST} - {276051600 7200 0 EET} - {291776400 10800 1 EEST} - {307501200 7200 0 EET} - {323830800 10800 1 EEST} - {338950800 7200 0 EET} - {354675600 10800 1 EEST} - {370400400 7200 0 EET} - {386125200 10800 1 EEST} - {401850000 7200 0 EET} - {417574800 10800 1 EEST} - {433299600 7200 0 EET} - {449024400 10800 1 EEST} - {465354000 7200 0 EET} - {481078800 10800 1 EEST} - {496803600 7200 0 EET} - {512528400 10800 1 EEST} - {528253200 7200 0 EET} - {543978000 10800 1 EEST} - {559702800 7200 0 EET} - {575427600 10800 1 EEST} - {591152400 7200 0 EET} - {606877200 10800 1 EEST} - {622602000 7200 0 EET} - {638326800 10800 1 EEST} - {654656400 7200 0 EET} - {670381200 10800 1 EEST} - {686106000 7200 0 EET} - {701830800 10800 1 EEST} - {717555600 7200 0 EET} - {733280400 10800 1 EEST} - {749005200 7200 0 EET} - {764730000 10800 1 EEST} - {780454800 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:EET) { + {-9223372036854775808 7200 0 EET} + {228877200 10800 1 EEST} + {243997200 7200 0 EET} + {260326800 10800 1 EEST} + {276051600 7200 0 EET} + {291776400 10800 1 EEST} + {307501200 7200 0 EET} + {323830800 10800 1 EEST} + {338950800 7200 0 EET} + {354675600 10800 1 EEST} + {370400400 7200 0 EET} + {386125200 10800 1 EEST} + {401850000 7200 0 EET} + {417574800 10800 1 EEST} + {433299600 7200 0 EET} + {449024400 10800 1 EEST} + {465354000 7200 0 EET} + {481078800 10800 1 EEST} + {496803600 7200 0 EET} + {512528400 10800 1 EEST} + {528253200 7200 0 EET} + {543978000 10800 1 EEST} + {559702800 7200 0 EET} + {575427600 10800 1 EEST} + {591152400 7200 0 EET} + {606877200 10800 1 EEST} + {622602000 7200 0 EET} + {638326800 10800 1 EEST} + {654656400 7200 0 EET} + {670381200 10800 1 EEST} + {686106000 7200 0 EET} + {701830800 10800 1 EEST} + {717555600 7200 0 EET} + {733280400 10800 1 EEST} + {749005200 7200 0 EET} + {764730000 10800 1 EEST} + {780454800 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/EST b/library/tzdata/EST index 72c5b17..224e15f 100644 --- a/library/tzdata/EST +++ b/library/tzdata/EST @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:EST) { - {-9223372036854775808 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:EST) { + {-9223372036854775808 -18000 0 EST} +} diff --git a/library/tzdata/EST5EDT b/library/tzdata/EST5EDT index 968833e..a25adb1 100644 --- a/library/tzdata/EST5EDT +++ b/library/tzdata/EST5EDT @@ -1,278 +1,278 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:EST5EDT) { - {-9223372036854775808 -18000 0 EST} - {-1633280400 -14400 1 EDT} - {-1615140000 -18000 0 EST} - {-1601830800 -14400 1 EDT} - {-1583690400 -18000 0 EST} - {-880218000 -14400 1 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -14400 1 EDT} - {152085600 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:EST5EDT) { + {-9223372036854775808 -18000 0 EST} + {-1633280400 -14400 1 EDT} + {-1615140000 -18000 0 EST} + {-1601830800 -14400 1 EDT} + {-1583690400 -18000 0 EST} + {-880218000 -14400 1 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -14400 1 EDT} + {152085600 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/Egypt b/library/tzdata/Egypt index 63341bc..52707f2 100644 --- a/library/tzdata/Egypt +++ b/library/tzdata/Egypt @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Africa/Cairo)]} { - LoadTimeZoneFile Africa/Cairo -} -set TZData(:Egypt) $TZData(:Africa/Cairo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Africa/Cairo)]} { + LoadTimeZoneFile Africa/Cairo +} +set TZData(:Egypt) $TZData(:Africa/Cairo) diff --git a/library/tzdata/Eire b/library/tzdata/Eire index c86c91c..cb3357e 100644 --- a/library/tzdata/Eire +++ b/library/tzdata/Eire @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Dublin)]} { - LoadTimeZoneFile Europe/Dublin -} -set TZData(:Eire) $TZData(:Europe/Dublin) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Dublin)]} { + LoadTimeZoneFile Europe/Dublin +} +set TZData(:Eire) $TZData(:Europe/Dublin) diff --git a/library/tzdata/Etc/GMT b/library/tzdata/Etc/GMT index 7454fd5..9c7fde0 100644 --- a/library/tzdata/Etc/GMT +++ b/library/tzdata/Etc/GMT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT) { - {-9223372036854775808 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT) { + {-9223372036854775808 0 0 GMT} +} diff --git a/library/tzdata/Etc/GMT+0 b/library/tzdata/Etc/GMT+0 index 017dee1..b60be1f 100644 --- a/library/tzdata/Etc/GMT+0 +++ b/library/tzdata/Etc/GMT+0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Etc/GMT+0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Etc/GMT+0) $TZData(:Etc/GMT) diff --git a/library/tzdata/Etc/GMT+1 b/library/tzdata/Etc/GMT+1 index 12f97ba..109c036 100644 --- a/library/tzdata/Etc/GMT+1 +++ b/library/tzdata/Etc/GMT+1 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+1) { - {-9223372036854775808 -3600 0 GMT+1} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+1) { + {-9223372036854775808 -3600 0 GMT+1} +} diff --git a/library/tzdata/Etc/GMT+10 b/library/tzdata/Etc/GMT+10 index 6ea50bb..44d896c 100644 --- a/library/tzdata/Etc/GMT+10 +++ b/library/tzdata/Etc/GMT+10 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+10) { - {-9223372036854775808 -36000 0 GMT+10} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+10) { + {-9223372036854775808 -36000 0 GMT+10} +} diff --git a/library/tzdata/Etc/GMT+11 b/library/tzdata/Etc/GMT+11 index c91b169..208f4ca 100644 --- a/library/tzdata/Etc/GMT+11 +++ b/library/tzdata/Etc/GMT+11 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+11) { - {-9223372036854775808 -39600 0 GMT+11} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+11) { + {-9223372036854775808 -39600 0 GMT+11} +} diff --git a/library/tzdata/Etc/GMT+12 b/library/tzdata/Etc/GMT+12 index 29a4cee..732de37 100644 --- a/library/tzdata/Etc/GMT+12 +++ b/library/tzdata/Etc/GMT+12 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+12) { - {-9223372036854775808 -43200 0 GMT+12} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+12) { + {-9223372036854775808 -43200 0 GMT+12} +} diff --git a/library/tzdata/Etc/GMT+2 b/library/tzdata/Etc/GMT+2 index 8c6b526..b408335 100644 --- a/library/tzdata/Etc/GMT+2 +++ b/library/tzdata/Etc/GMT+2 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+2) { - {-9223372036854775808 -7200 0 GMT+2} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+2) { + {-9223372036854775808 -7200 0 GMT+2} +} diff --git a/library/tzdata/Etc/GMT+3 b/library/tzdata/Etc/GMT+3 index 862571d..ef4ae20 100644 --- a/library/tzdata/Etc/GMT+3 +++ b/library/tzdata/Etc/GMT+3 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+3) { - {-9223372036854775808 -10800 0 GMT+3} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+3) { + {-9223372036854775808 -10800 0 GMT+3} +} diff --git a/library/tzdata/Etc/GMT+4 b/library/tzdata/Etc/GMT+4 index a933bbc..161c789 100644 --- a/library/tzdata/Etc/GMT+4 +++ b/library/tzdata/Etc/GMT+4 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+4) { - {-9223372036854775808 -14400 0 GMT+4} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+4) { + {-9223372036854775808 -14400 0 GMT+4} +} diff --git a/library/tzdata/Etc/GMT+5 b/library/tzdata/Etc/GMT+5 index 80cc25c..f1879c8 100644 --- a/library/tzdata/Etc/GMT+5 +++ b/library/tzdata/Etc/GMT+5 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+5) { - {-9223372036854775808 -18000 0 GMT+5} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+5) { + {-9223372036854775808 -18000 0 GMT+5} +} diff --git a/library/tzdata/Etc/GMT+6 b/library/tzdata/Etc/GMT+6 index bc57bd6..b8b8382 100644 --- a/library/tzdata/Etc/GMT+6 +++ b/library/tzdata/Etc/GMT+6 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+6) { - {-9223372036854775808 -21600 0 GMT+6} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+6) { + {-9223372036854775808 -21600 0 GMT+6} +} diff --git a/library/tzdata/Etc/GMT+7 b/library/tzdata/Etc/GMT+7 index d419eb9..2ab56f9 100644 --- a/library/tzdata/Etc/GMT+7 +++ b/library/tzdata/Etc/GMT+7 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+7) { - {-9223372036854775808 -25200 0 GMT+7} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+7) { + {-9223372036854775808 -25200 0 GMT+7} +} diff --git a/library/tzdata/Etc/GMT+8 b/library/tzdata/Etc/GMT+8 index 705ad40..08c5bdf 100644 --- a/library/tzdata/Etc/GMT+8 +++ b/library/tzdata/Etc/GMT+8 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+8) { - {-9223372036854775808 -28800 0 GMT+8} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+8) { + {-9223372036854775808 -28800 0 GMT+8} +} diff --git a/library/tzdata/Etc/GMT+9 b/library/tzdata/Etc/GMT+9 index 4086639..977d4b2 100644 --- a/library/tzdata/Etc/GMT+9 +++ b/library/tzdata/Etc/GMT+9 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+9) { - {-9223372036854775808 -32400 0 GMT+9} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+9) { + {-9223372036854775808 -32400 0 GMT+9} +} diff --git a/library/tzdata/Etc/GMT-0 b/library/tzdata/Etc/GMT-0 index d8913d5..9d34107 100644 --- a/library/tzdata/Etc/GMT-0 +++ b/library/tzdata/Etc/GMT-0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Etc/GMT-0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Etc/GMT-0) $TZData(:Etc/GMT) diff --git a/library/tzdata/Etc/GMT-1 b/library/tzdata/Etc/GMT-1 index a44dd1f..77cae3a 100644 --- a/library/tzdata/Etc/GMT-1 +++ b/library/tzdata/Etc/GMT-1 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-1) { - {-9223372036854775808 3600 0 GMT-1} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-1) { + {-9223372036854775808 3600 0 GMT-1} +} diff --git a/library/tzdata/Etc/GMT-10 b/library/tzdata/Etc/GMT-10 index 1c50d01..69ea253 100644 --- a/library/tzdata/Etc/GMT-10 +++ b/library/tzdata/Etc/GMT-10 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-10) { - {-9223372036854775808 36000 0 GMT-10} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-10) { + {-9223372036854775808 36000 0 GMT-10} +} diff --git a/library/tzdata/Etc/GMT-11 b/library/tzdata/Etc/GMT-11 index d07710f..554fa68 100644 --- a/library/tzdata/Etc/GMT-11 +++ b/library/tzdata/Etc/GMT-11 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-11) { - {-9223372036854775808 39600 0 GMT-11} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-11) { + {-9223372036854775808 39600 0 GMT-11} +} diff --git a/library/tzdata/Etc/GMT-12 b/library/tzdata/Etc/GMT-12 index a23b98d..25b31ce 100644 --- a/library/tzdata/Etc/GMT-12 +++ b/library/tzdata/Etc/GMT-12 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-12) { - {-9223372036854775808 43200 0 GMT-12} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-12) { + {-9223372036854775808 43200 0 GMT-12} +} diff --git a/library/tzdata/Etc/GMT-13 b/library/tzdata/Etc/GMT-13 index 1a6700a..b049979 100644 --- a/library/tzdata/Etc/GMT-13 +++ b/library/tzdata/Etc/GMT-13 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-13) { - {-9223372036854775808 46800 0 GMT-13} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-13) { + {-9223372036854775808 46800 0 GMT-13} +} diff --git a/library/tzdata/Etc/GMT-14 b/library/tzdata/Etc/GMT-14 index 3707e21..488df67 100644 --- a/library/tzdata/Etc/GMT-14 +++ b/library/tzdata/Etc/GMT-14 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-14) { - {-9223372036854775808 50400 0 GMT-14} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-14) { + {-9223372036854775808 50400 0 GMT-14} +} diff --git a/library/tzdata/Etc/GMT-2 b/library/tzdata/Etc/GMT-2 index f9dea16..2d716b1 100644 --- a/library/tzdata/Etc/GMT-2 +++ b/library/tzdata/Etc/GMT-2 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-2) { - {-9223372036854775808 7200 0 GMT-2} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-2) { + {-9223372036854775808 7200 0 GMT-2} +} diff --git a/library/tzdata/Etc/GMT-3 b/library/tzdata/Etc/GMT-3 index 99145b8..344d48e 100644 --- a/library/tzdata/Etc/GMT-3 +++ b/library/tzdata/Etc/GMT-3 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-3) { - {-9223372036854775808 10800 0 GMT-3} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-3) { + {-9223372036854775808 10800 0 GMT-3} +} diff --git a/library/tzdata/Etc/GMT-4 b/library/tzdata/Etc/GMT-4 index 27b4fec..6f5a134 100644 --- a/library/tzdata/Etc/GMT-4 +++ b/library/tzdata/Etc/GMT-4 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-4) { - {-9223372036854775808 14400 0 GMT-4} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-4) { + {-9223372036854775808 14400 0 GMT-4} +} diff --git a/library/tzdata/Etc/GMT-5 b/library/tzdata/Etc/GMT-5 index dbe3df7..ca03b45 100644 --- a/library/tzdata/Etc/GMT-5 +++ b/library/tzdata/Etc/GMT-5 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-5) { - {-9223372036854775808 18000 0 GMT-5} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-5) { + {-9223372036854775808 18000 0 GMT-5} +} diff --git a/library/tzdata/Etc/GMT-6 b/library/tzdata/Etc/GMT-6 index 414dbfa..69c724f 100644 --- a/library/tzdata/Etc/GMT-6 +++ b/library/tzdata/Etc/GMT-6 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-6) { - {-9223372036854775808 21600 0 GMT-6} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-6) { + {-9223372036854775808 21600 0 GMT-6} +} diff --git a/library/tzdata/Etc/GMT-7 b/library/tzdata/Etc/GMT-7 index 2bd59db..c39fd98 100644 --- a/library/tzdata/Etc/GMT-7 +++ b/library/tzdata/Etc/GMT-7 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-7) { - {-9223372036854775808 25200 0 GMT-7} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-7) { + {-9223372036854775808 25200 0 GMT-7} +} diff --git a/library/tzdata/Etc/GMT-8 b/library/tzdata/Etc/GMT-8 index 7303721..ec85c12 100644 --- a/library/tzdata/Etc/GMT-8 +++ b/library/tzdata/Etc/GMT-8 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-8) { - {-9223372036854775808 28800 0 GMT-8} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-8) { + {-9223372036854775808 28800 0 GMT-8} +} diff --git a/library/tzdata/Etc/GMT-9 b/library/tzdata/Etc/GMT-9 index 46e6878..87e3b91 100644 --- a/library/tzdata/Etc/GMT-9 +++ b/library/tzdata/Etc/GMT-9 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-9) { - {-9223372036854775808 32400 0 GMT-9} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-9) { + {-9223372036854775808 32400 0 GMT-9} +} diff --git a/library/tzdata/Etc/GMT0 b/library/tzdata/Etc/GMT0 index dba1fe9..91087c2 100644 --- a/library/tzdata/Etc/GMT0 +++ b/library/tzdata/Etc/GMT0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Etc/GMT0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Etc/GMT0) $TZData(:Etc/GMT) diff --git a/library/tzdata/Etc/Greenwich b/library/tzdata/Etc/Greenwich index 53acea0..38f8753 100644 --- a/library/tzdata/Etc/Greenwich +++ b/library/tzdata/Etc/Greenwich @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Etc/Greenwich) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Etc/Greenwich) $TZData(:Etc/GMT) diff --git a/library/tzdata/Etc/UCT b/library/tzdata/Etc/UCT index f7d795e..48cb188 100644 --- a/library/tzdata/Etc/UCT +++ b/library/tzdata/Etc/UCT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/UCT) { - {-9223372036854775808 0 0 UCT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/UCT) { + {-9223372036854775808 0 0 UCT} +} diff --git a/library/tzdata/Etc/UTC b/library/tzdata/Etc/UTC index db5954b..eb41277 100644 --- a/library/tzdata/Etc/UTC +++ b/library/tzdata/Etc/UTC @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/UTC) { - {-9223372036854775808 0 0 UTC} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/UTC) { + {-9223372036854775808 0 0 UTC} +} diff --git a/library/tzdata/Etc/Universal b/library/tzdata/Etc/Universal index a3b7547..0d1c335 100644 --- a/library/tzdata/Etc/Universal +++ b/library/tzdata/Etc/Universal @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:Etc/Universal) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:Etc/Universal) $TZData(:Etc/UTC) diff --git a/library/tzdata/Etc/Zulu b/library/tzdata/Etc/Zulu index f643db9..6a0a8fd 100644 --- a/library/tzdata/Etc/Zulu +++ b/library/tzdata/Etc/Zulu @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:Etc/Zulu) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:Etc/Zulu) $TZData(:Etc/UTC) diff --git a/library/tzdata/Europe/Amsterdam b/library/tzdata/Europe/Amsterdam index bd89127..82a9b04 100644 --- a/library/tzdata/Europe/Amsterdam +++ b/library/tzdata/Europe/Amsterdam @@ -1,310 +1,310 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Amsterdam) { - {-9223372036854775808 1172 0 LMT} - {-4260212372 1172 0 AMT} - {-1693700372 4772 1 NST} - {-1680484772 1172 0 AMT} - {-1663453172 4772 1 NST} - {-1650147572 1172 0 AMT} - {-1633213172 4772 1 NST} - {-1617488372 1172 0 AMT} - {-1601158772 4772 1 NST} - {-1586038772 1172 0 AMT} - {-1569709172 4772 1 NST} - {-1554589172 1172 0 AMT} - {-1538259572 4772 1 NST} - {-1523139572 1172 0 AMT} - {-1507501172 4772 1 NST} - {-1490566772 1172 0 AMT} - {-1470176372 4772 1 NST} - {-1459117172 1172 0 AMT} - {-1443997172 4772 1 NST} - {-1427667572 1172 0 AMT} - {-1406672372 4772 1 NST} - {-1396217972 1172 0 AMT} - {-1376950772 4772 1 NST} - {-1364768372 1172 0 AMT} - {-1345414772 4772 1 NST} - {-1333318772 1172 0 AMT} - {-1313792372 4772 1 NST} - {-1301264372 1172 0 AMT} - {-1282256372 4772 1 NST} - {-1269814772 1172 0 AMT} - {-1250720372 4772 1 NST} - {-1238365172 1172 0 AMT} - {-1219184372 4772 1 NST} - {-1206915572 1172 0 AMT} - {-1186957172 4772 1 NST} - {-1175465972 1172 0 AMT} - {-1156025972 4772 1 NST} - {-1143411572 1172 0 AMT} - {-1124489972 4772 1 NST} - {-1111961972 1172 0 AMT} - {-1092953972 4772 1 NST} - {-1080512372 1172 0 AMT} - {-1061331572 4772 1 NST} - {-1049062772 1172 0 AMT} - {-1029190772 4772 1 NST} - {-1025741972 4800 0 NEST} - {-1017613200 1200 0 NET} - {-998259600 4800 1 NEST} - {-986163600 1200 0 NET} - {-966723600 4800 1 NEST} - {-954109200 1200 0 NET} - {-935022000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 0 CEST} - {-766623600 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Amsterdam) { + {-9223372036854775808 1172 0 LMT} + {-4260212372 1172 0 AMT} + {-1693700372 4772 1 NST} + {-1680484772 1172 0 AMT} + {-1663453172 4772 1 NST} + {-1650147572 1172 0 AMT} + {-1633213172 4772 1 NST} + {-1617488372 1172 0 AMT} + {-1601158772 4772 1 NST} + {-1586038772 1172 0 AMT} + {-1569709172 4772 1 NST} + {-1554589172 1172 0 AMT} + {-1538259572 4772 1 NST} + {-1523139572 1172 0 AMT} + {-1507501172 4772 1 NST} + {-1490566772 1172 0 AMT} + {-1470176372 4772 1 NST} + {-1459117172 1172 0 AMT} + {-1443997172 4772 1 NST} + {-1427667572 1172 0 AMT} + {-1406672372 4772 1 NST} + {-1396217972 1172 0 AMT} + {-1376950772 4772 1 NST} + {-1364768372 1172 0 AMT} + {-1345414772 4772 1 NST} + {-1333318772 1172 0 AMT} + {-1313792372 4772 1 NST} + {-1301264372 1172 0 AMT} + {-1282256372 4772 1 NST} + {-1269814772 1172 0 AMT} + {-1250720372 4772 1 NST} + {-1238365172 1172 0 AMT} + {-1219184372 4772 1 NST} + {-1206915572 1172 0 AMT} + {-1186957172 4772 1 NST} + {-1175465972 1172 0 AMT} + {-1156025972 4772 1 NST} + {-1143411572 1172 0 AMT} + {-1124489972 4772 1 NST} + {-1111961972 1172 0 AMT} + {-1092953972 4772 1 NST} + {-1080512372 1172 0 AMT} + {-1061331572 4772 1 NST} + {-1049062772 1172 0 AMT} + {-1029190772 4772 1 NST} + {-1025741972 4800 0 NEST} + {-1017613200 1200 0 NET} + {-998259600 4800 1 NEST} + {-986163600 1200 0 NET} + {-966723600 4800 1 NEST} + {-954109200 1200 0 NET} + {-935022000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 0 CEST} + {-766623600 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Andorra b/library/tzdata/Europe/Andorra index 89233fe..abb33b7 100644 --- a/library/tzdata/Europe/Andorra +++ b/library/tzdata/Europe/Andorra @@ -1,237 +1,237 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Andorra) { - {-9223372036854775808 364 0 LMT} - {-2177453164 0 0 WET} - {-733881600 3600 0 CET} - {481078800 7200 0 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Andorra) { + {-9223372036854775808 364 0 LMT} + {-2177453164 0 0 WET} + {-733881600 3600 0 CET} + {481078800 7200 0 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Athens b/library/tzdata/Europe/Athens index f8df408..512030d 100644 --- a/library/tzdata/Europe/Athens +++ b/library/tzdata/Europe/Athens @@ -1,268 +1,268 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Athens) { - {-9223372036854775808 5692 0 LMT} - {-2344642492 5692 0 AMT} - {-1686101632 7200 0 EET} - {-1182996000 10800 1 EEST} - {-1178161200 7200 0 EET} - {-906861600 10800 1 EEST} - {-904878000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844477200 7200 1 CEST} - {-828237600 3600 0 CET} - {-812422800 7200 0 EET} - {-552362400 10800 1 EEST} - {-541652400 7200 0 EET} - {166485600 10800 1 EEST} - {186184800 7200 0 EET} - {198028800 10800 1 EEST} - {213753600 7200 0 EET} - {228873600 10800 1 EEST} - {244080000 7200 0 EET} - {260323200 10800 1 EEST} - {275446800 7200 0 EET} - {291798000 10800 1 EEST} - {307407600 7200 0 EET} - {323388000 10800 1 EEST} - {338936400 7200 0 EET} - {347148000 7200 0 EET} - {354675600 10800 1 EEST} - {370400400 7200 0 EET} - {386125200 10800 1 EEST} - {401850000 7200 0 EET} - {417574800 10800 1 EEST} - {433299600 7200 0 EET} - {449024400 10800 1 EEST} - {465354000 7200 0 EET} - {481078800 10800 1 EEST} - {496803600 7200 0 EET} - {512528400 10800 1 EEST} - {528253200 7200 0 EET} - {543978000 10800 1 EEST} - {559702800 7200 0 EET} - {575427600 10800 1 EEST} - {591152400 7200 0 EET} - {606877200 10800 1 EEST} - {622602000 7200 0 EET} - {638326800 10800 1 EEST} - {654656400 7200 0 EET} - {670381200 10800 1 EEST} - {686106000 7200 0 EET} - {701830800 10800 1 EEST} - {717555600 7200 0 EET} - {733280400 10800 1 EEST} - {749005200 7200 0 EET} - {764730000 10800 1 EEST} - {780454800 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Athens) { + {-9223372036854775808 5692 0 LMT} + {-2344642492 5692 0 AMT} + {-1686101632 7200 0 EET} + {-1182996000 10800 1 EEST} + {-1178161200 7200 0 EET} + {-906861600 10800 1 EEST} + {-904878000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844477200 7200 1 CEST} + {-828237600 3600 0 CET} + {-812422800 7200 0 EET} + {-552362400 10800 1 EEST} + {-541652400 7200 0 EET} + {166485600 10800 1 EEST} + {186184800 7200 0 EET} + {198028800 10800 1 EEST} + {213753600 7200 0 EET} + {228873600 10800 1 EEST} + {244080000 7200 0 EET} + {260323200 10800 1 EEST} + {275446800 7200 0 EET} + {291798000 10800 1 EEST} + {307407600 7200 0 EET} + {323388000 10800 1 EEST} + {338936400 7200 0 EET} + {347148000 7200 0 EET} + {354675600 10800 1 EEST} + {370400400 7200 0 EET} + {386125200 10800 1 EEST} + {401850000 7200 0 EET} + {417574800 10800 1 EEST} + {433299600 7200 0 EET} + {449024400 10800 1 EEST} + {465354000 7200 0 EET} + {481078800 10800 1 EEST} + {496803600 7200 0 EET} + {512528400 10800 1 EEST} + {528253200 7200 0 EET} + {543978000 10800 1 EEST} + {559702800 7200 0 EET} + {575427600 10800 1 EEST} + {591152400 7200 0 EET} + {606877200 10800 1 EEST} + {622602000 7200 0 EET} + {638326800 10800 1 EEST} + {654656400 7200 0 EET} + {670381200 10800 1 EEST} + {686106000 7200 0 EET} + {701830800 10800 1 EEST} + {717555600 7200 0 EET} + {733280400 10800 1 EEST} + {749005200 7200 0 EET} + {764730000 10800 1 EEST} + {780454800 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Belfast b/library/tzdata/Europe/Belfast index 51cd3ce..4ea63be 100644 --- a/library/tzdata/Europe/Belfast +++ b/library/tzdata/Europe/Belfast @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:Europe/Belfast) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:Europe/Belfast) $TZData(:Europe/London) diff --git a/library/tzdata/Europe/Belgrade b/library/tzdata/Europe/Belgrade index b11f7b3..b7e326d 100644 --- a/library/tzdata/Europe/Belgrade +++ b/library/tzdata/Europe/Belgrade @@ -1,250 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Belgrade) { - {-9223372036854775808 4920 0 LMT} - {-2713915320 3600 0 CET} - {-905824800 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-788922000 3600 0 CET} - {-777942000 7200 1 CEST} - {-766623600 3600 0 CET} - {407199600 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Belgrade) { + {-9223372036854775808 4920 0 LMT} + {-2713915320 3600 0 CET} + {-905824800 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-788922000 3600 0 CET} + {-777942000 7200 1 CEST} + {-766623600 3600 0 CET} + {407199600 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Berlin b/library/tzdata/Europe/Berlin index 5469cf6..90ca6ce 100644 --- a/library/tzdata/Europe/Berlin +++ b/library/tzdata/Europe/Berlin @@ -1,274 +1,274 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Berlin) { - {-9223372036854775808 3208 0 LMT} - {-2422054408 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 1 CEST} - {-776559600 10800 0 CEMT} - {-765936000 7200 1 CEST} - {-761180400 3600 0 CET} - {-757386000 3600 0 CET} - {-748479600 7200 1 CEST} - {-733273200 3600 0 CET} - {-717631200 7200 1 CEST} - {-714610800 10800 1 CEMT} - {-710380800 7200 1 CEST} - {-701910000 3600 0 CET} - {-684975600 7200 1 CEST} - {-670460400 3600 0 CET} - {-654130800 7200 1 CEST} - {-639010800 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Berlin) { + {-9223372036854775808 3208 0 LMT} + {-2422054408 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 1 CEST} + {-776559600 10800 0 CEMT} + {-765936000 7200 1 CEST} + {-761180400 3600 0 CET} + {-757386000 3600 0 CET} + {-748479600 7200 1 CEST} + {-733273200 3600 0 CET} + {-717631200 7200 1 CEST} + {-714610800 10800 1 CEMT} + {-710380800 7200 1 CEST} + {-701910000 3600 0 CET} + {-684975600 7200 1 CEST} + {-670460400 3600 0 CET} + {-654130800 7200 1 CEST} + {-639010800 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Bratislava b/library/tzdata/Europe/Bratislava index d65ea5a..1fa501c 100644 --- a/library/tzdata/Europe/Bratislava +++ b/library/tzdata/Europe/Bratislava @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Prague)]} { - LoadTimeZoneFile Europe/Prague -} -set TZData(:Europe/Bratislava) $TZData(:Europe/Prague) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Prague)]} { + LoadTimeZoneFile Europe/Prague +} +set TZData(:Europe/Bratislava) $TZData(:Europe/Prague) diff --git a/library/tzdata/Europe/Brussels b/library/tzdata/Europe/Brussels index 3cb9b14..5060e6d 100644 --- a/library/tzdata/Europe/Brussels +++ b/library/tzdata/Europe/Brussels @@ -1,316 +1,316 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Brussels) { - {-9223372036854775808 1050 0 LMT} - {-2840141850 1050 0 BMT} - {-2450953050 0 0 WET} - {-1740355200 3600 0 CET} - {-1693702800 7200 0 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-1613826000 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585530000 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552266000 0 0 WET} - {-1539997200 3600 1 WEST} - {-1520557200 0 0 WET} - {-1507510800 3600 1 WEST} - {-1490576400 0 0 WET} - {-1473642000 3600 1 WEST} - {-1459126800 0 0 WET} - {-1444006800 3600 1 WEST} - {-1427677200 0 0 WET} - {-1411952400 3600 1 WEST} - {-1396227600 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301263200 0 0 WET} - {-1284328800 3600 1 WEST} - {-1269813600 0 0 WET} - {-1253484000 3600 1 WEST} - {-1238364000 0 0 WET} - {-1221429600 3600 1 WEST} - {-1206914400 0 0 WET} - {-1191189600 3600 1 WEST} - {-1175464800 0 0 WET} - {-1160344800 3600 1 WEST} - {-1143410400 0 0 WET} - {-1127685600 3600 1 WEST} - {-1111960800 0 0 WET} - {-1096840800 3600 1 WEST} - {-1080511200 0 0 WET} - {-1063576800 3600 1 WEST} - {-1049061600 0 0 WET} - {-1033336800 3600 1 WEST} - {-1017612000 0 0 WET} - {-1002492000 3600 1 WEST} - {-986162400 0 0 WET} - {-969228000 3600 1 WEST} - {-950479200 0 0 WET} - {-942012000 3600 1 WEST} - {-934668000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-799290000 3600 0 CET} - {-798073200 3600 0 CET} - {-781052400 7200 1 CEST} - {-766623600 3600 0 CET} - {-745455600 7200 1 CEST} - {-733273200 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Brussels) { + {-9223372036854775808 1050 0 LMT} + {-2840141850 1050 0 BMT} + {-2450953050 0 0 WET} + {-1740355200 3600 0 CET} + {-1693702800 7200 0 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-1613826000 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585530000 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552266000 0 0 WET} + {-1539997200 3600 1 WEST} + {-1520557200 0 0 WET} + {-1507510800 3600 1 WEST} + {-1490576400 0 0 WET} + {-1473642000 3600 1 WEST} + {-1459126800 0 0 WET} + {-1444006800 3600 1 WEST} + {-1427677200 0 0 WET} + {-1411952400 3600 1 WEST} + {-1396227600 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301263200 0 0 WET} + {-1284328800 3600 1 WEST} + {-1269813600 0 0 WET} + {-1253484000 3600 1 WEST} + {-1238364000 0 0 WET} + {-1221429600 3600 1 WEST} + {-1206914400 0 0 WET} + {-1191189600 3600 1 WEST} + {-1175464800 0 0 WET} + {-1160344800 3600 1 WEST} + {-1143410400 0 0 WET} + {-1127685600 3600 1 WEST} + {-1111960800 0 0 WET} + {-1096840800 3600 1 WEST} + {-1080511200 0 0 WET} + {-1063576800 3600 1 WEST} + {-1049061600 0 0 WET} + {-1033336800 3600 1 WEST} + {-1017612000 0 0 WET} + {-1002492000 3600 1 WEST} + {-986162400 0 0 WET} + {-969228000 3600 1 WEST} + {-950479200 0 0 WET} + {-942012000 3600 1 WEST} + {-934668000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-799290000 3600 0 CET} + {-798073200 3600 0 CET} + {-781052400 7200 1 CEST} + {-766623600 3600 0 CET} + {-745455600 7200 1 CEST} + {-733273200 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Bucharest b/library/tzdata/Europe/Bucharest index 7b3bed4..85ce7ec 100644 --- a/library/tzdata/Europe/Bucharest +++ b/library/tzdata/Europe/Bucharest @@ -1,268 +1,268 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Bucharest) { - {-9223372036854775808 6264 0 LMT} - {-2469404664 6264 0 BMT} - {-1213148664 7200 0 EET} - {-1187056800 10800 1 EEST} - {-1175479200 7200 0 EET} - {-1159754400 10800 1 EEST} - {-1144029600 7200 0 EET} - {-1127700000 10800 1 EEST} - {-1111975200 7200 0 EET} - {-1096250400 10800 1 EEST} - {-1080525600 7200 0 EET} - {-1064800800 10800 1 EEST} - {-1049076000 7200 0 EET} - {-1033351200 10800 1 EEST} - {-1017626400 7200 0 EET} - {-1001901600 10800 1 EEST} - {-986176800 7200 0 EET} - {-970452000 10800 1 EEST} - {-954727200 7200 0 EET} - {296604000 10800 1 EEST} - {307486800 7200 0 EET} - {323816400 10800 1 EEST} - {338940000 7200 0 EET} - {354672000 10800 0 EEST} - {370396800 7200 0 EET} - {386121600 10800 1 EEST} - {401846400 7200 0 EET} - {417571200 10800 1 EEST} - {433296000 7200 0 EET} - {449020800 10800 1 EEST} - {465350400 7200 0 EET} - {481075200 10800 1 EEST} - {496800000 7200 0 EET} - {512524800 10800 1 EEST} - {528249600 7200 0 EET} - {543974400 10800 1 EEST} - {559699200 7200 0 EET} - {575424000 10800 1 EEST} - {591148800 7200 0 EET} - {606873600 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {662680800 7200 0 EET} - {670370400 10800 1 EEST} - {686095200 7200 0 EET} - {701820000 10800 1 EEST} - {717544800 7200 0 EET} - {733269600 10800 1 EEST} - {748994400 7200 0 EET} - {757375200 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {846363600 7200 0 EET} - {852069600 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Bucharest) { + {-9223372036854775808 6264 0 LMT} + {-2469404664 6264 0 BMT} + {-1213148664 7200 0 EET} + {-1187056800 10800 1 EEST} + {-1175479200 7200 0 EET} + {-1159754400 10800 1 EEST} + {-1144029600 7200 0 EET} + {-1127700000 10800 1 EEST} + {-1111975200 7200 0 EET} + {-1096250400 10800 1 EEST} + {-1080525600 7200 0 EET} + {-1064800800 10800 1 EEST} + {-1049076000 7200 0 EET} + {-1033351200 10800 1 EEST} + {-1017626400 7200 0 EET} + {-1001901600 10800 1 EEST} + {-986176800 7200 0 EET} + {-970452000 10800 1 EEST} + {-954727200 7200 0 EET} + {296604000 10800 1 EEST} + {307486800 7200 0 EET} + {323816400 10800 1 EEST} + {338940000 7200 0 EET} + {354672000 10800 0 EEST} + {370396800 7200 0 EET} + {386121600 10800 1 EEST} + {401846400 7200 0 EET} + {417571200 10800 1 EEST} + {433296000 7200 0 EET} + {449020800 10800 1 EEST} + {465350400 7200 0 EET} + {481075200 10800 1 EEST} + {496800000 7200 0 EET} + {512524800 10800 1 EEST} + {528249600 7200 0 EET} + {543974400 10800 1 EEST} + {559699200 7200 0 EET} + {575424000 10800 1 EEST} + {591148800 7200 0 EET} + {606873600 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {662680800 7200 0 EET} + {670370400 10800 1 EEST} + {686095200 7200 0 EET} + {701820000 10800 1 EEST} + {717544800 7200 0 EET} + {733269600 10800 1 EEST} + {748994400 7200 0 EET} + {757375200 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {846363600 7200 0 EET} + {852069600 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Budapest b/library/tzdata/Europe/Budapest index fd41acc..faf1bdf 100644 --- a/library/tzdata/Europe/Budapest +++ b/library/tzdata/Europe/Budapest @@ -1,284 +1,284 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Budapest) { - {-9223372036854775808 4580 0 LMT} - {-2500938980 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1640998800 3600 0 CET} - {-1633212000 7200 1 CEST} - {-1617577200 3600 0 CET} - {-1600466400 7200 1 CEST} - {-1587250800 3600 0 CET} - {-1569708000 7200 1 CEST} - {-1554332400 3600 0 CET} - {-906937200 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-788922000 3600 0 CET} - {-778471200 7200 1 CEST} - {-762487200 3600 0 CET} - {-749689200 7200 1 CEST} - {-733359600 3600 0 CET} - {-717634800 7200 1 CEST} - {-701910000 3600 0 CET} - {-686185200 7200 1 CEST} - {-670460400 3600 0 CET} - {-654130800 7200 1 CEST} - {-639010800 3600 0 CET} - {-621990000 7200 1 CEST} - {-605660400 3600 0 CET} - {-492656400 7200 1 CEST} - {-481168800 3600 0 CET} - {-461120400 7200 1 CEST} - {-449632800 3600 0 CET} - {-428547600 7200 1 CEST} - {-418269600 3600 0 CET} - {-397094400 7200 1 CEST} - {-386809200 3600 0 CET} - {323827200 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Budapest) { + {-9223372036854775808 4580 0 LMT} + {-2500938980 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1640998800 3600 0 CET} + {-1633212000 7200 1 CEST} + {-1617577200 3600 0 CET} + {-1600466400 7200 1 CEST} + {-1587250800 3600 0 CET} + {-1569708000 7200 1 CEST} + {-1554332400 3600 0 CET} + {-906937200 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-788922000 3600 0 CET} + {-778471200 7200 1 CEST} + {-762487200 3600 0 CET} + {-749689200 7200 1 CEST} + {-733359600 3600 0 CET} + {-717634800 7200 1 CEST} + {-701910000 3600 0 CET} + {-686185200 7200 1 CEST} + {-670460400 3600 0 CET} + {-654130800 7200 1 CEST} + {-639010800 3600 0 CET} + {-621990000 7200 1 CEST} + {-605660400 3600 0 CET} + {-492656400 7200 1 CEST} + {-481168800 3600 0 CET} + {-461120400 7200 1 CEST} + {-449632800 3600 0 CET} + {-428547600 7200 1 CEST} + {-418269600 3600 0 CET} + {-397094400 7200 1 CEST} + {-386809200 3600 0 CET} + {323827200 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Chisinau b/library/tzdata/Europe/Chisinau index 4ef466b..dfbb281 100644 --- a/library/tzdata/Europe/Chisinau +++ b/library/tzdata/Europe/Chisinau @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Chisinau) { - {-9223372036854775808 6920 0 LMT} - {-2840147720 6900 0 CMT} - {-1637114100 6264 0 BMT} - {-1213148664 7200 0 EET} - {-1187056800 10800 1 EEST} - {-1175479200 7200 0 EET} - {-1159754400 10800 1 EEST} - {-1144029600 7200 0 EET} - {-1127700000 10800 1 EEST} - {-1111975200 7200 0 EET} - {-1096250400 10800 1 EEST} - {-1080525600 7200 0 EET} - {-1064800800 10800 1 EEST} - {-1049076000 7200 0 EET} - {-1033351200 10800 1 EEST} - {-1017626400 7200 0 EET} - {-1001901600 10800 1 EEST} - {-986176800 7200 0 EET} - {-970452000 10800 1 EEST} - {-954727200 7200 0 EET} - {-927165600 10800 1 EEST} - {-898138800 7200 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-800154000 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {641941200 7200 0 EET} - {662680800 7200 0 EEMMTT} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {694216800 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {846363600 7200 0 EET} - {852069600 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Chisinau) { + {-9223372036854775808 6920 0 LMT} + {-2840147720 6900 0 CMT} + {-1637114100 6264 0 BMT} + {-1213148664 7200 0 EET} + {-1187056800 10800 1 EEST} + {-1175479200 7200 0 EET} + {-1159754400 10800 1 EEST} + {-1144029600 7200 0 EET} + {-1127700000 10800 1 EEST} + {-1111975200 7200 0 EET} + {-1096250400 10800 1 EEST} + {-1080525600 7200 0 EET} + {-1064800800 10800 1 EEST} + {-1049076000 7200 0 EET} + {-1033351200 10800 1 EEST} + {-1017626400 7200 0 EET} + {-1001901600 10800 1 EEST} + {-986176800 7200 0 EET} + {-970452000 10800 1 EEST} + {-954727200 7200 0 EET} + {-927165600 10800 1 EEST} + {-898138800 7200 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-800154000 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {641941200 7200 0 EET} + {662680800 7200 0 EEMMTT} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {694216800 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {846363600 7200 0 EET} + {852069600 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Copenhagen b/library/tzdata/Europe/Copenhagen index c747e58..409cacd 100644 --- a/library/tzdata/Europe/Copenhagen +++ b/library/tzdata/Europe/Copenhagen @@ -1,264 +1,264 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Copenhagen) { - {-9223372036854775808 3020 0 LMT} - {-2524524620 3020 0 CMT} - {-2398294220 3600 0 CET} - {-1692496800 7200 1 CEST} - {-1680490800 3600 0 CET} - {-935110800 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 0 CEST} - {-769388400 3600 0 CET} - {-747010800 7200 1 CEST} - {-736383600 3600 0 CET} - {-715215600 7200 1 CEST} - {-706748400 3600 0 CET} - {-683161200 7200 1 CEST} - {-675298800 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Copenhagen) { + {-9223372036854775808 3020 0 LMT} + {-2524524620 3020 0 CMT} + {-2398294220 3600 0 CET} + {-1692496800 7200 1 CEST} + {-1680490800 3600 0 CET} + {-935110800 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 0 CEST} + {-769388400 3600 0 CET} + {-747010800 7200 1 CEST} + {-736383600 3600 0 CET} + {-715215600 7200 1 CEST} + {-706748400 3600 0 CET} + {-683161200 7200 1 CEST} + {-675298800 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Dublin b/library/tzdata/Europe/Dublin index 4b43bc0..9d30a9f 100644 --- a/library/tzdata/Europe/Dublin +++ b/library/tzdata/Europe/Dublin @@ -1,359 +1,359 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Dublin) { - {-9223372036854775808 -1500 0 LMT} - {-2821649700 -1521 0 DMT} - {-1691962479 2079 1 IST} - {-1680471279 0 0 GMT} - {-1664143200 3600 1 BST} - {-1650146400 0 0 GMT} - {-1633903200 3600 1 BST} - {-1617487200 0 0 GMT} - {-1601848800 3600 1 BST} - {-1586037600 0 0 GMT} - {-1570399200 3600 1 BST} - {-1552168800 0 0 GMT} - {-1538344800 3600 1 BST} - {-1522533600 0 0 GMT} - {-1517011200 0 0 IST} - {-1507500000 3600 1 IST} - {-1490565600 0 0 IST} - {-1473631200 3600 1 IST} - {-1460930400 0 0 IST} - {-1442786400 3600 1 IST} - {-1428876000 0 0 IST} - {-1410732000 3600 1 IST} - {-1396216800 0 0 IST} - {-1379282400 3600 1 IST} - {-1364767200 0 0 IST} - {-1348437600 3600 1 IST} - {-1333317600 0 0 IST} - {-1315778400 3600 1 IST} - {-1301263200 0 0 IST} - {-1284328800 3600 1 IST} - {-1269813600 0 0 IST} - {-1253484000 3600 1 IST} - {-1238364000 0 0 IST} - {-1221429600 3600 1 IST} - {-1206914400 0 0 IST} - {-1189980000 3600 1 IST} - {-1175464800 0 0 IST} - {-1159135200 3600 1 IST} - {-1143410400 0 0 IST} - {-1126476000 3600 1 IST} - {-1111960800 0 0 IST} - {-1095631200 3600 1 IST} - {-1080511200 0 0 IST} - {-1063576800 3600 1 IST} - {-1049061600 0 0 IST} - {-1032127200 3600 1 IST} - {-1017612000 0 0 IST} - {-1001282400 3600 1 IST} - {-986162400 0 0 IST} - {-969228000 3600 1 IST} - {-950479200 0 0 IST} - {-942015600 3600 1 IST} - {-733359600 0 0 GMT} - {-719445600 3600 1 IST} - {-699490800 0 0 GMT} - {-684972000 3600 0 IST} - {-668037600 0 0 IST} - {-654732000 3600 1 IST} - {-636588000 0 0 IST} - {-622072800 3600 1 IST} - {-605743200 0 0 IST} - {-590623200 3600 1 IST} - {-574293600 0 0 IST} - {-558568800 3600 1 IST} - {-542239200 0 0 IST} - {-527119200 3600 1 IST} - {-512604000 0 0 IST} - {-496274400 3600 1 IST} - {-481154400 0 0 IST} - {-464220000 3600 1 IST} - {-449704800 0 0 IST} - {-432165600 3600 1 IST} - {-417650400 0 0 IST} - {-401320800 3600 1 IST} - {-386200800 0 0 IST} - {-369266400 3600 1 IST} - {-354751200 0 0 IST} - {-337816800 3600 1 IST} - {-323301600 0 0 IST} - {-306972000 3600 1 IST} - {-291852000 0 0 IST} - {-276732000 3600 1 IST} - {-257983200 0 0 IST} - {-245282400 3600 1 IST} - {-226533600 0 0 IST} - {-213228000 3600 1 IST} - {-195084000 0 0 IST} - {-182383200 3600 1 IST} - {-163634400 0 0 IST} - {-150933600 3600 1 IST} - {-132184800 0 0 IST} - {-119484000 3600 1 IST} - {-100735200 0 0 IST} - {-88034400 3600 1 IST} - {-68680800 0 0 IST} - {-59004000 3600 1 IST} - {-37238400 3600 0 IST} - {57722400 0 0 IST} - {69818400 3600 1 IST} - {89172000 0 0 IST} - {101268000 3600 1 IST} - {120621600 0 0 IST} - {132717600 3600 1 IST} - {152071200 0 0 IST} - {164167200 3600 1 IST} - {183520800 0 0 IST} - {196221600 3600 1 IST} - {214970400 0 0 IST} - {227671200 3600 1 IST} - {246420000 0 0 IST} - {259120800 3600 1 IST} - {278474400 0 0 IST} - {290570400 3600 1 IST} - {309924000 0 0 IST} - {322020000 3600 1 IST} - {341373600 0 0 IST} - {354675600 3600 1 IST} - {372819600 0 0 IST} - {386125200 3600 1 IST} - {404269200 0 0 IST} - {417574800 3600 1 IST} - {435718800 0 0 IST} - {449024400 3600 1 IST} - {467773200 0 0 IST} - {481078800 3600 1 IST} - {499222800 0 0 IST} - {512528400 3600 1 IST} - {530672400 0 0 IST} - {543978000 3600 1 IST} - {562122000 0 0 IST} - {575427600 3600 1 IST} - {593571600 0 0 IST} - {606877200 3600 1 IST} - {625626000 0 0 IST} - {638326800 3600 1 IST} - {657075600 0 0 IST} - {670381200 3600 1 IST} - {688525200 0 0 IST} - {701830800 3600 1 IST} - {719974800 0 0 IST} - {733280400 3600 1 IST} - {751424400 0 0 IST} - {764730000 3600 1 IST} - {782874000 0 0 IST} - {796179600 3600 1 IST} - {814323600 0 0 IST} - {820454400 0 0 GMT} - {828234000 3600 1 IST} - {846378000 0 0 GMT} - {859683600 3600 1 IST} - {877827600 0 0 GMT} - {891133200 3600 1 IST} - {909277200 0 0 GMT} - {922582800 3600 1 IST} - {941331600 0 0 GMT} - {954032400 3600 1 IST} - {972781200 0 0 GMT} - {985482000 3600 1 IST} - {1004230800 0 0 GMT} - {1017536400 3600 1 IST} - {1035680400 0 0 GMT} - {1048986000 3600 1 IST} - {1067130000 0 0 GMT} - {1080435600 3600 1 IST} - {1099184400 0 0 GMT} - {1111885200 3600 1 IST} - {1130634000 0 0 GMT} - {1143334800 3600 1 IST} - {1162083600 0 0 GMT} - {1174784400 3600 1 IST} - {1193533200 0 0 GMT} - {1206838800 3600 1 IST} - {1224982800 0 0 GMT} - {1238288400 3600 1 IST} - {1256432400 0 0 GMT} - {1269738000 3600 1 IST} - {1288486800 0 0 GMT} - {1301187600 3600 1 IST} - {1319936400 0 0 GMT} - {1332637200 3600 1 IST} - {1351386000 0 0 GMT} - {1364691600 3600 1 IST} - {1382835600 0 0 GMT} - {1396141200 3600 1 IST} - {1414285200 0 0 GMT} - {1427590800 3600 1 IST} - {1445734800 0 0 GMT} - {1459040400 3600 1 IST} - {1477789200 0 0 GMT} - {1490490000 3600 1 IST} - {1509238800 0 0 GMT} - {1521939600 3600 1 IST} - {1540688400 0 0 GMT} - {1553994000 3600 1 IST} - {1572138000 0 0 GMT} - {1585443600 3600 1 IST} - {1603587600 0 0 GMT} - {1616893200 3600 1 IST} - {1635642000 0 0 GMT} - {1648342800 3600 1 IST} - {1667091600 0 0 GMT} - {1679792400 3600 1 IST} - {1698541200 0 0 GMT} - {1711846800 3600 1 IST} - {1729990800 0 0 GMT} - {1743296400 3600 1 IST} - {1761440400 0 0 GMT} - {1774746000 3600 1 IST} - {1792890000 0 0 GMT} - {1806195600 3600 1 IST} - {1824944400 0 0 GMT} - {1837645200 3600 1 IST} - {1856394000 0 0 GMT} - {1869094800 3600 1 IST} - {1887843600 0 0 GMT} - {1901149200 3600 1 IST} - {1919293200 0 0 GMT} - {1932598800 3600 1 IST} - {1950742800 0 0 GMT} - {1964048400 3600 1 IST} - {1982797200 0 0 GMT} - {1995498000 3600 1 IST} - {2014246800 0 0 GMT} - {2026947600 3600 1 IST} - {2045696400 0 0 GMT} - {2058397200 3600 1 IST} - {2077146000 0 0 GMT} - {2090451600 3600 1 IST} - {2108595600 0 0 GMT} - {2121901200 3600 1 IST} - {2140045200 0 0 GMT} - {2153350800 3600 1 IST} - {2172099600 0 0 GMT} - {2184800400 3600 1 IST} - {2203549200 0 0 GMT} - {2216250000 3600 1 IST} - {2234998800 0 0 GMT} - {2248304400 3600 1 IST} - {2266448400 0 0 GMT} - {2279754000 3600 1 IST} - {2297898000 0 0 GMT} - {2311203600 3600 1 IST} - {2329347600 0 0 GMT} - {2342653200 3600 1 IST} - {2361402000 0 0 GMT} - {2374102800 3600 1 IST} - {2392851600 0 0 GMT} - {2405552400 3600 1 IST} - {2424301200 0 0 GMT} - {2437606800 3600 1 IST} - {2455750800 0 0 GMT} - {2469056400 3600 1 IST} - {2487200400 0 0 GMT} - {2500506000 3600 1 IST} - {2519254800 0 0 GMT} - {2531955600 3600 1 IST} - {2550704400 0 0 GMT} - {2563405200 3600 1 IST} - {2582154000 0 0 GMT} - {2595459600 3600 1 IST} - {2613603600 0 0 GMT} - {2626909200 3600 1 IST} - {2645053200 0 0 GMT} - {2658358800 3600 1 IST} - {2676502800 0 0 GMT} - {2689808400 3600 1 IST} - {2708557200 0 0 GMT} - {2721258000 3600 1 IST} - {2740006800 0 0 GMT} - {2752707600 3600 1 IST} - {2771456400 0 0 GMT} - {2784762000 3600 1 IST} - {2802906000 0 0 GMT} - {2816211600 3600 1 IST} - {2834355600 0 0 GMT} - {2847661200 3600 1 IST} - {2866410000 0 0 GMT} - {2879110800 3600 1 IST} - {2897859600 0 0 GMT} - {2910560400 3600 1 IST} - {2929309200 0 0 GMT} - {2942010000 3600 1 IST} - {2960758800 0 0 GMT} - {2974064400 3600 1 IST} - {2992208400 0 0 GMT} - {3005514000 3600 1 IST} - {3023658000 0 0 GMT} - {3036963600 3600 1 IST} - {3055712400 0 0 GMT} - {3068413200 3600 1 IST} - {3087162000 0 0 GMT} - {3099862800 3600 1 IST} - {3118611600 0 0 GMT} - {3131917200 3600 1 IST} - {3150061200 0 0 GMT} - {3163366800 3600 1 IST} - {3181510800 0 0 GMT} - {3194816400 3600 1 IST} - {3212960400 0 0 GMT} - {3226266000 3600 1 IST} - {3245014800 0 0 GMT} - {3257715600 3600 1 IST} - {3276464400 0 0 GMT} - {3289165200 3600 1 IST} - {3307914000 0 0 GMT} - {3321219600 3600 1 IST} - {3339363600 0 0 GMT} - {3352669200 3600 1 IST} - {3370813200 0 0 GMT} - {3384118800 3600 1 IST} - {3402867600 0 0 GMT} - {3415568400 3600 1 IST} - {3434317200 0 0 GMT} - {3447018000 3600 1 IST} - {3465766800 0 0 GMT} - {3479072400 3600 1 IST} - {3497216400 0 0 GMT} - {3510522000 3600 1 IST} - {3528666000 0 0 GMT} - {3541971600 3600 1 IST} - {3560115600 0 0 GMT} - {3573421200 3600 1 IST} - {3592170000 0 0 GMT} - {3604870800 3600 1 IST} - {3623619600 0 0 GMT} - {3636320400 3600 1 IST} - {3655069200 0 0 GMT} - {3668374800 3600 1 IST} - {3686518800 0 0 GMT} - {3699824400 3600 1 IST} - {3717968400 0 0 GMT} - {3731274000 3600 1 IST} - {3750022800 0 0 GMT} - {3762723600 3600 1 IST} - {3781472400 0 0 GMT} - {3794173200 3600 1 IST} - {3812922000 0 0 GMT} - {3825622800 3600 1 IST} - {3844371600 0 0 GMT} - {3857677200 3600 1 IST} - {3875821200 0 0 GMT} - {3889126800 3600 1 IST} - {3907270800 0 0 GMT} - {3920576400 3600 1 IST} - {3939325200 0 0 GMT} - {3952026000 3600 1 IST} - {3970774800 0 0 GMT} - {3983475600 3600 1 IST} - {4002224400 0 0 GMT} - {4015530000 3600 1 IST} - {4033674000 0 0 GMT} - {4046979600 3600 1 IST} - {4065123600 0 0 GMT} - {4078429200 3600 1 IST} - {4096573200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Dublin) { + {-9223372036854775808 -1500 0 LMT} + {-2821649700 -1521 0 DMT} + {-1691962479 2079 1 IST} + {-1680471279 0 0 GMT} + {-1664143200 3600 1 BST} + {-1650146400 0 0 GMT} + {-1633903200 3600 1 BST} + {-1617487200 0 0 GMT} + {-1601848800 3600 1 BST} + {-1586037600 0 0 GMT} + {-1570399200 3600 1 BST} + {-1552168800 0 0 GMT} + {-1538344800 3600 1 BST} + {-1522533600 0 0 GMT} + {-1517011200 0 0 IST} + {-1507500000 3600 1 IST} + {-1490565600 0 0 IST} + {-1473631200 3600 1 IST} + {-1460930400 0 0 IST} + {-1442786400 3600 1 IST} + {-1428876000 0 0 IST} + {-1410732000 3600 1 IST} + {-1396216800 0 0 IST} + {-1379282400 3600 1 IST} + {-1364767200 0 0 IST} + {-1348437600 3600 1 IST} + {-1333317600 0 0 IST} + {-1315778400 3600 1 IST} + {-1301263200 0 0 IST} + {-1284328800 3600 1 IST} + {-1269813600 0 0 IST} + {-1253484000 3600 1 IST} + {-1238364000 0 0 IST} + {-1221429600 3600 1 IST} + {-1206914400 0 0 IST} + {-1189980000 3600 1 IST} + {-1175464800 0 0 IST} + {-1159135200 3600 1 IST} + {-1143410400 0 0 IST} + {-1126476000 3600 1 IST} + {-1111960800 0 0 IST} + {-1095631200 3600 1 IST} + {-1080511200 0 0 IST} + {-1063576800 3600 1 IST} + {-1049061600 0 0 IST} + {-1032127200 3600 1 IST} + {-1017612000 0 0 IST} + {-1001282400 3600 1 IST} + {-986162400 0 0 IST} + {-969228000 3600 1 IST} + {-950479200 0 0 IST} + {-942015600 3600 1 IST} + {-733359600 0 0 GMT} + {-719445600 3600 1 IST} + {-699490800 0 0 GMT} + {-684972000 3600 0 IST} + {-668037600 0 0 IST} + {-654732000 3600 1 IST} + {-636588000 0 0 IST} + {-622072800 3600 1 IST} + {-605743200 0 0 IST} + {-590623200 3600 1 IST} + {-574293600 0 0 IST} + {-558568800 3600 1 IST} + {-542239200 0 0 IST} + {-527119200 3600 1 IST} + {-512604000 0 0 IST} + {-496274400 3600 1 IST} + {-481154400 0 0 IST} + {-464220000 3600 1 IST} + {-449704800 0 0 IST} + {-432165600 3600 1 IST} + {-417650400 0 0 IST} + {-401320800 3600 1 IST} + {-386200800 0 0 IST} + {-369266400 3600 1 IST} + {-354751200 0 0 IST} + {-337816800 3600 1 IST} + {-323301600 0 0 IST} + {-306972000 3600 1 IST} + {-291852000 0 0 IST} + {-276732000 3600 1 IST} + {-257983200 0 0 IST} + {-245282400 3600 1 IST} + {-226533600 0 0 IST} + {-213228000 3600 1 IST} + {-195084000 0 0 IST} + {-182383200 3600 1 IST} + {-163634400 0 0 IST} + {-150933600 3600 1 IST} + {-132184800 0 0 IST} + {-119484000 3600 1 IST} + {-100735200 0 0 IST} + {-88034400 3600 1 IST} + {-68680800 0 0 IST} + {-59004000 3600 1 IST} + {-37238400 3600 0 IST} + {57722400 0 0 IST} + {69818400 3600 1 IST} + {89172000 0 0 IST} + {101268000 3600 1 IST} + {120621600 0 0 IST} + {132717600 3600 1 IST} + {152071200 0 0 IST} + {164167200 3600 1 IST} + {183520800 0 0 IST} + {196221600 3600 1 IST} + {214970400 0 0 IST} + {227671200 3600 1 IST} + {246420000 0 0 IST} + {259120800 3600 1 IST} + {278474400 0 0 IST} + {290570400 3600 1 IST} + {309924000 0 0 IST} + {322020000 3600 1 IST} + {341373600 0 0 IST} + {354675600 3600 1 IST} + {372819600 0 0 IST} + {386125200 3600 1 IST} + {404269200 0 0 IST} + {417574800 3600 1 IST} + {435718800 0 0 IST} + {449024400 3600 1 IST} + {467773200 0 0 IST} + {481078800 3600 1 IST} + {499222800 0 0 IST} + {512528400 3600 1 IST} + {530672400 0 0 IST} + {543978000 3600 1 IST} + {562122000 0 0 IST} + {575427600 3600 1 IST} + {593571600 0 0 IST} + {606877200 3600 1 IST} + {625626000 0 0 IST} + {638326800 3600 1 IST} + {657075600 0 0 IST} + {670381200 3600 1 IST} + {688525200 0 0 IST} + {701830800 3600 1 IST} + {719974800 0 0 IST} + {733280400 3600 1 IST} + {751424400 0 0 IST} + {764730000 3600 1 IST} + {782874000 0 0 IST} + {796179600 3600 1 IST} + {814323600 0 0 IST} + {820454400 0 0 GMT} + {828234000 3600 1 IST} + {846378000 0 0 GMT} + {859683600 3600 1 IST} + {877827600 0 0 GMT} + {891133200 3600 1 IST} + {909277200 0 0 GMT} + {922582800 3600 1 IST} + {941331600 0 0 GMT} + {954032400 3600 1 IST} + {972781200 0 0 GMT} + {985482000 3600 1 IST} + {1004230800 0 0 GMT} + {1017536400 3600 1 IST} + {1035680400 0 0 GMT} + {1048986000 3600 1 IST} + {1067130000 0 0 GMT} + {1080435600 3600 1 IST} + {1099184400 0 0 GMT} + {1111885200 3600 1 IST} + {1130634000 0 0 GMT} + {1143334800 3600 1 IST} + {1162083600 0 0 GMT} + {1174784400 3600 1 IST} + {1193533200 0 0 GMT} + {1206838800 3600 1 IST} + {1224982800 0 0 GMT} + {1238288400 3600 1 IST} + {1256432400 0 0 GMT} + {1269738000 3600 1 IST} + {1288486800 0 0 GMT} + {1301187600 3600 1 IST} + {1319936400 0 0 GMT} + {1332637200 3600 1 IST} + {1351386000 0 0 GMT} + {1364691600 3600 1 IST} + {1382835600 0 0 GMT} + {1396141200 3600 1 IST} + {1414285200 0 0 GMT} + {1427590800 3600 1 IST} + {1445734800 0 0 GMT} + {1459040400 3600 1 IST} + {1477789200 0 0 GMT} + {1490490000 3600 1 IST} + {1509238800 0 0 GMT} + {1521939600 3600 1 IST} + {1540688400 0 0 GMT} + {1553994000 3600 1 IST} + {1572138000 0 0 GMT} + {1585443600 3600 1 IST} + {1603587600 0 0 GMT} + {1616893200 3600 1 IST} + {1635642000 0 0 GMT} + {1648342800 3600 1 IST} + {1667091600 0 0 GMT} + {1679792400 3600 1 IST} + {1698541200 0 0 GMT} + {1711846800 3600 1 IST} + {1729990800 0 0 GMT} + {1743296400 3600 1 IST} + {1761440400 0 0 GMT} + {1774746000 3600 1 IST} + {1792890000 0 0 GMT} + {1806195600 3600 1 IST} + {1824944400 0 0 GMT} + {1837645200 3600 1 IST} + {1856394000 0 0 GMT} + {1869094800 3600 1 IST} + {1887843600 0 0 GMT} + {1901149200 3600 1 IST} + {1919293200 0 0 GMT} + {1932598800 3600 1 IST} + {1950742800 0 0 GMT} + {1964048400 3600 1 IST} + {1982797200 0 0 GMT} + {1995498000 3600 1 IST} + {2014246800 0 0 GMT} + {2026947600 3600 1 IST} + {2045696400 0 0 GMT} + {2058397200 3600 1 IST} + {2077146000 0 0 GMT} + {2090451600 3600 1 IST} + {2108595600 0 0 GMT} + {2121901200 3600 1 IST} + {2140045200 0 0 GMT} + {2153350800 3600 1 IST} + {2172099600 0 0 GMT} + {2184800400 3600 1 IST} + {2203549200 0 0 GMT} + {2216250000 3600 1 IST} + {2234998800 0 0 GMT} + {2248304400 3600 1 IST} + {2266448400 0 0 GMT} + {2279754000 3600 1 IST} + {2297898000 0 0 GMT} + {2311203600 3600 1 IST} + {2329347600 0 0 GMT} + {2342653200 3600 1 IST} + {2361402000 0 0 GMT} + {2374102800 3600 1 IST} + {2392851600 0 0 GMT} + {2405552400 3600 1 IST} + {2424301200 0 0 GMT} + {2437606800 3600 1 IST} + {2455750800 0 0 GMT} + {2469056400 3600 1 IST} + {2487200400 0 0 GMT} + {2500506000 3600 1 IST} + {2519254800 0 0 GMT} + {2531955600 3600 1 IST} + {2550704400 0 0 GMT} + {2563405200 3600 1 IST} + {2582154000 0 0 GMT} + {2595459600 3600 1 IST} + {2613603600 0 0 GMT} + {2626909200 3600 1 IST} + {2645053200 0 0 GMT} + {2658358800 3600 1 IST} + {2676502800 0 0 GMT} + {2689808400 3600 1 IST} + {2708557200 0 0 GMT} + {2721258000 3600 1 IST} + {2740006800 0 0 GMT} + {2752707600 3600 1 IST} + {2771456400 0 0 GMT} + {2784762000 3600 1 IST} + {2802906000 0 0 GMT} + {2816211600 3600 1 IST} + {2834355600 0 0 GMT} + {2847661200 3600 1 IST} + {2866410000 0 0 GMT} + {2879110800 3600 1 IST} + {2897859600 0 0 GMT} + {2910560400 3600 1 IST} + {2929309200 0 0 GMT} + {2942010000 3600 1 IST} + {2960758800 0 0 GMT} + {2974064400 3600 1 IST} + {2992208400 0 0 GMT} + {3005514000 3600 1 IST} + {3023658000 0 0 GMT} + {3036963600 3600 1 IST} + {3055712400 0 0 GMT} + {3068413200 3600 1 IST} + {3087162000 0 0 GMT} + {3099862800 3600 1 IST} + {3118611600 0 0 GMT} + {3131917200 3600 1 IST} + {3150061200 0 0 GMT} + {3163366800 3600 1 IST} + {3181510800 0 0 GMT} + {3194816400 3600 1 IST} + {3212960400 0 0 GMT} + {3226266000 3600 1 IST} + {3245014800 0 0 GMT} + {3257715600 3600 1 IST} + {3276464400 0 0 GMT} + {3289165200 3600 1 IST} + {3307914000 0 0 GMT} + {3321219600 3600 1 IST} + {3339363600 0 0 GMT} + {3352669200 3600 1 IST} + {3370813200 0 0 GMT} + {3384118800 3600 1 IST} + {3402867600 0 0 GMT} + {3415568400 3600 1 IST} + {3434317200 0 0 GMT} + {3447018000 3600 1 IST} + {3465766800 0 0 GMT} + {3479072400 3600 1 IST} + {3497216400 0 0 GMT} + {3510522000 3600 1 IST} + {3528666000 0 0 GMT} + {3541971600 3600 1 IST} + {3560115600 0 0 GMT} + {3573421200 3600 1 IST} + {3592170000 0 0 GMT} + {3604870800 3600 1 IST} + {3623619600 0 0 GMT} + {3636320400 3600 1 IST} + {3655069200 0 0 GMT} + {3668374800 3600 1 IST} + {3686518800 0 0 GMT} + {3699824400 3600 1 IST} + {3717968400 0 0 GMT} + {3731274000 3600 1 IST} + {3750022800 0 0 GMT} + {3762723600 3600 1 IST} + {3781472400 0 0 GMT} + {3794173200 3600 1 IST} + {3812922000 0 0 GMT} + {3825622800 3600 1 IST} + {3844371600 0 0 GMT} + {3857677200 3600 1 IST} + {3875821200 0 0 GMT} + {3889126800 3600 1 IST} + {3907270800 0 0 GMT} + {3920576400 3600 1 IST} + {3939325200 0 0 GMT} + {3952026000 3600 1 IST} + {3970774800 0 0 GMT} + {3983475600 3600 1 IST} + {4002224400 0 0 GMT} + {4015530000 3600 1 IST} + {4033674000 0 0 GMT} + {4046979600 3600 1 IST} + {4065123600 0 0 GMT} + {4078429200 3600 1 IST} + {4096573200 0 0 GMT} +} diff --git a/library/tzdata/Europe/Gibraltar b/library/tzdata/Europe/Gibraltar index de29c03..1f597b0 100644 --- a/library/tzdata/Europe/Gibraltar +++ b/library/tzdata/Europe/Gibraltar @@ -1,328 +1,328 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Gibraltar) { - {-9223372036854775808 -1284 0 LMT} - {-2821649916 0 0 GMT} - {-1691964000 3600 1 BST} - {-1680472800 0 0 GMT} - {-1664143200 3600 1 BST} - {-1650146400 0 0 GMT} - {-1633903200 3600 1 BST} - {-1617487200 0 0 GMT} - {-1601848800 3600 1 BST} - {-1586037600 0 0 GMT} - {-1570399200 3600 1 BST} - {-1552168800 0 0 GMT} - {-1538344800 3600 1 BST} - {-1522533600 0 0 GMT} - {-1507500000 3600 1 BST} - {-1490565600 0 0 GMT} - {-1473631200 3600 1 BST} - {-1460930400 0 0 GMT} - {-1442786400 3600 1 BST} - {-1428876000 0 0 GMT} - {-1410732000 3600 1 BST} - {-1396216800 0 0 GMT} - {-1379282400 3600 1 BST} - {-1364767200 0 0 GMT} - {-1348437600 3600 1 BST} - {-1333317600 0 0 GMT} - {-1315778400 3600 1 BST} - {-1301263200 0 0 GMT} - {-1284328800 3600 1 BST} - {-1269813600 0 0 GMT} - {-1253484000 3600 1 BST} - {-1238364000 0 0 GMT} - {-1221429600 3600 1 BST} - {-1206914400 0 0 GMT} - {-1189980000 3600 1 BST} - {-1175464800 0 0 GMT} - {-1159135200 3600 1 BST} - {-1143410400 0 0 GMT} - {-1126476000 3600 1 BST} - {-1111960800 0 0 GMT} - {-1095631200 3600 1 BST} - {-1080511200 0 0 GMT} - {-1063576800 3600 1 BST} - {-1049061600 0 0 GMT} - {-1032127200 3600 1 BST} - {-1017612000 0 0 GMT} - {-1001282400 3600 1 BST} - {-986162400 0 0 GMT} - {-969228000 3600 1 BST} - {-950479200 0 0 GMT} - {-942012000 3600 1 BST} - {-904518000 7200 1 BDST} - {-896050800 3600 1 BST} - {-875487600 7200 1 BDST} - {-864601200 3600 1 BST} - {-844038000 7200 1 BDST} - {-832546800 3600 1 BST} - {-812588400 7200 1 BDST} - {-798073200 3600 1 BST} - {-781052400 7200 1 BDST} - {-772066800 3600 1 BST} - {-764805600 0 0 GMT} - {-748476000 3600 1 BST} - {-733356000 0 0 GMT} - {-719445600 3600 1 BST} - {-717030000 7200 1 BDST} - {-706748400 3600 1 BST} - {-699487200 0 0 GMT} - {-687996000 3600 1 BST} - {-668037600 0 0 GMT} - {-654732000 3600 1 BST} - {-636588000 0 0 GMT} - {-622072800 3600 1 BST} - {-605743200 0 0 GMT} - {-590623200 3600 1 BST} - {-574293600 0 0 GMT} - {-558568800 3600 1 BST} - {-542239200 0 0 GMT} - {-527119200 3600 1 BST} - {-512604000 0 0 GMT} - {-496274400 3600 1 BST} - {-481154400 0 0 GMT} - {-464220000 3600 1 BST} - {-449704800 0 0 GMT} - {-432165600 3600 1 BST} - {-417650400 0 0 GMT} - {-401320800 3600 0 CET} - {378687600 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Gibraltar) { + {-9223372036854775808 -1284 0 LMT} + {-2821649916 0 0 GMT} + {-1691964000 3600 1 BST} + {-1680472800 0 0 GMT} + {-1664143200 3600 1 BST} + {-1650146400 0 0 GMT} + {-1633903200 3600 1 BST} + {-1617487200 0 0 GMT} + {-1601848800 3600 1 BST} + {-1586037600 0 0 GMT} + {-1570399200 3600 1 BST} + {-1552168800 0 0 GMT} + {-1538344800 3600 1 BST} + {-1522533600 0 0 GMT} + {-1507500000 3600 1 BST} + {-1490565600 0 0 GMT} + {-1473631200 3600 1 BST} + {-1460930400 0 0 GMT} + {-1442786400 3600 1 BST} + {-1428876000 0 0 GMT} + {-1410732000 3600 1 BST} + {-1396216800 0 0 GMT} + {-1379282400 3600 1 BST} + {-1364767200 0 0 GMT} + {-1348437600 3600 1 BST} + {-1333317600 0 0 GMT} + {-1315778400 3600 1 BST} + {-1301263200 0 0 GMT} + {-1284328800 3600 1 BST} + {-1269813600 0 0 GMT} + {-1253484000 3600 1 BST} + {-1238364000 0 0 GMT} + {-1221429600 3600 1 BST} + {-1206914400 0 0 GMT} + {-1189980000 3600 1 BST} + {-1175464800 0 0 GMT} + {-1159135200 3600 1 BST} + {-1143410400 0 0 GMT} + {-1126476000 3600 1 BST} + {-1111960800 0 0 GMT} + {-1095631200 3600 1 BST} + {-1080511200 0 0 GMT} + {-1063576800 3600 1 BST} + {-1049061600 0 0 GMT} + {-1032127200 3600 1 BST} + {-1017612000 0 0 GMT} + {-1001282400 3600 1 BST} + {-986162400 0 0 GMT} + {-969228000 3600 1 BST} + {-950479200 0 0 GMT} + {-942012000 3600 1 BST} + {-904518000 7200 1 BDST} + {-896050800 3600 1 BST} + {-875487600 7200 1 BDST} + {-864601200 3600 1 BST} + {-844038000 7200 1 BDST} + {-832546800 3600 1 BST} + {-812588400 7200 1 BDST} + {-798073200 3600 1 BST} + {-781052400 7200 1 BDST} + {-772066800 3600 1 BST} + {-764805600 0 0 GMT} + {-748476000 3600 1 BST} + {-733356000 0 0 GMT} + {-719445600 3600 1 BST} + {-717030000 7200 1 BDST} + {-706748400 3600 1 BST} + {-699487200 0 0 GMT} + {-687996000 3600 1 BST} + {-668037600 0 0 GMT} + {-654732000 3600 1 BST} + {-636588000 0 0 GMT} + {-622072800 3600 1 BST} + {-605743200 0 0 GMT} + {-590623200 3600 1 BST} + {-574293600 0 0 GMT} + {-558568800 3600 1 BST} + {-542239200 0 0 GMT} + {-527119200 3600 1 BST} + {-512604000 0 0 GMT} + {-496274400 3600 1 BST} + {-481154400 0 0 GMT} + {-464220000 3600 1 BST} + {-449704800 0 0 GMT} + {-432165600 3600 1 BST} + {-417650400 0 0 GMT} + {-401320800 3600 0 CET} + {378687600 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Guernsey b/library/tzdata/Europe/Guernsey index 4372c64..3e02d68 100755 --- a/library/tzdata/Europe/Guernsey +++ b/library/tzdata/Europe/Guernsey @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:Europe/Guernsey) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:Europe/Guernsey) $TZData(:Europe/London) diff --git a/library/tzdata/Europe/Helsinki b/library/tzdata/Europe/Helsinki index 04bd991..90fe276 100644 --- a/library/tzdata/Europe/Helsinki +++ b/library/tzdata/Europe/Helsinki @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Helsinki) { - {-9223372036854775808 5992 0 LMT} - {-2890258792 5992 0 HMT} - {-1535938792 7200 0 EET} - {-875671200 10800 1 EEST} - {-859863600 7200 0 EET} - {354672000 7200 0 EET} - {354675600 10800 1 EEST} - {370400400 7200 0 EET} - {386125200 10800 1 EEST} - {401850000 7200 0 EET} - {417574800 10800 1 EEST} - {433299600 7200 0 EET} - {449024400 10800 1 EEST} - {465354000 7200 0 EET} - {481078800 10800 1 EEST} - {496803600 7200 0 EET} - {512528400 10800 1 EEST} - {528253200 7200 0 EET} - {543978000 10800 1 EEST} - {559702800 7200 0 EET} - {575427600 10800 1 EEST} - {591152400 7200 0 EET} - {606877200 10800 1 EEST} - {622602000 7200 0 EET} - {638326800 10800 1 EEST} - {654656400 7200 0 EET} - {670381200 10800 1 EEST} - {686106000 7200 0 EET} - {701830800 10800 1 EEST} - {717555600 7200 0 EET} - {733280400 10800 1 EEST} - {749005200 7200 0 EET} - {764730000 10800 1 EEST} - {780454800 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Helsinki) { + {-9223372036854775808 5992 0 LMT} + {-2890258792 5992 0 HMT} + {-1535938792 7200 0 EET} + {-875671200 10800 1 EEST} + {-859863600 7200 0 EET} + {354672000 7200 0 EET} + {354675600 10800 1 EEST} + {370400400 7200 0 EET} + {386125200 10800 1 EEST} + {401850000 7200 0 EET} + {417574800 10800 1 EEST} + {433299600 7200 0 EET} + {449024400 10800 1 EEST} + {465354000 7200 0 EET} + {481078800 10800 1 EEST} + {496803600 7200 0 EET} + {512528400 10800 1 EEST} + {528253200 7200 0 EET} + {543978000 10800 1 EEST} + {559702800 7200 0 EET} + {575427600 10800 1 EEST} + {591152400 7200 0 EET} + {606877200 10800 1 EEST} + {622602000 7200 0 EET} + {638326800 10800 1 EEST} + {654656400 7200 0 EET} + {670381200 10800 1 EEST} + {686106000 7200 0 EET} + {701830800 10800 1 EEST} + {717555600 7200 0 EET} + {733280400 10800 1 EEST} + {749005200 7200 0 EET} + {764730000 10800 1 EEST} + {780454800 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Isle_of_Man b/library/tzdata/Europe/Isle_of_Man index 870ac45..c64ef04 100755 --- a/library/tzdata/Europe/Isle_of_Man +++ b/library/tzdata/Europe/Isle_of_Man @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:Europe/Isle_of_Man) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:Europe/Isle_of_Man) $TZData(:Europe/London) diff --git a/library/tzdata/Europe/Istanbul b/library/tzdata/Europe/Istanbul index 06b2f88..054308a 100644 --- a/library/tzdata/Europe/Istanbul +++ b/library/tzdata/Europe/Istanbul @@ -1,303 +1,303 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Istanbul) { - {-9223372036854775808 6952 0 LMT} - {-2840147752 7016 0 IMT} - {-1869875816 7200 0 EET} - {-1693706400 10800 1 EEST} - {-1680490800 7200 0 EET} - {-1570413600 10800 1 EEST} - {-1552186800 7200 0 EET} - {-1538359200 10800 1 EEST} - {-1522551600 7200 0 EET} - {-1507514400 10800 1 EEST} - {-1490583600 7200 0 EET} - {-1440208800 10800 1 EEST} - {-1428030000 7200 0 EET} - {-1409709600 10800 1 EEST} - {-1396494000 7200 0 EET} - {-931140000 10800 1 EEST} - {-922762800 7200 0 EET} - {-917834400 10800 1 EEST} - {-892436400 7200 0 EET} - {-875844000 10800 1 EEST} - {-857358000 7200 0 EET} - {-781063200 10800 1 EEST} - {-764737200 7200 0 EET} - {-744343200 10800 1 EEST} - {-733806000 7200 0 EET} - {-716436000 10800 1 EEST} - {-701924400 7200 0 EET} - {-684986400 10800 1 EEST} - {-670474800 7200 0 EET} - {-654141600 10800 1 EEST} - {-639025200 7200 0 EET} - {-621828000 10800 1 EEST} - {-606970800 7200 0 EET} - {-590032800 10800 1 EEST} - {-575434800 7200 0 EET} - {-235620000 10800 1 EEST} - {-228279600 7200 0 EET} - {-177732000 10800 1 EEST} - {-165726000 7200 0 EET} - {10533600 10800 1 EEST} - {23835600 7200 0 EET} - {41983200 10800 1 EEST} - {55285200 7200 0 EET} - {74037600 10800 1 EEST} - {87339600 7200 0 EET} - {107910000 10800 1 EEST} - {121219200 7200 0 EET} - {133920000 10800 1 EEST} - {152676000 7200 0 EET} - {165362400 10800 1 EEST} - {183502800 7200 0 EET} - {202428000 10800 1 EEST} - {215557200 7200 0 EET} - {228866400 10800 1 EEST} - {245797200 7200 0 EET} - {260316000 10800 1 EEST} - {277246800 14400 0 TRST} - {291769200 14400 1 TRST} - {308779200 10800 0 TRT} - {323827200 14400 1 TRST} - {340228800 10800 0 TRT} - {354672000 14400 1 TRST} - {371678400 10800 0 TRT} - {386121600 14400 1 TRST} - {403128000 10800 0 TRT} - {428446800 14400 1 TRST} - {433886400 10800 0 TRT} - {482792400 7200 0 EET} - {482796000 10800 1 EEST} - {496702800 7200 0 EET} - {512524800 10800 1 EEST} - {528249600 7200 0 EET} - {543974400 10800 1 EEST} - {559699200 7200 0 EET} - {575424000 10800 1 EEST} - {591148800 7200 0 EET} - {606873600 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {670374000 10800 1 EEST} - {686098800 7200 0 EET} - {701823600 10800 1 EEST} - {717548400 7200 0 EET} - {733273200 10800 1 EEST} - {748998000 7200 0 EET} - {764722800 10800 1 EEST} - {780447600 7200 0 EET} - {796172400 10800 1 EEST} - {811897200 7200 0 EET} - {828226800 10800 1 EEST} - {846370800 7200 0 EET} - {859676400 10800 1 EEST} - {877820400 7200 0 EET} - {891126000 10800 1 EEST} - {909270000 7200 0 EET} - {922575600 10800 1 EEST} - {941324400 7200 0 EET} - {954025200 10800 1 EEST} - {972774000 7200 0 EET} - {985474800 10800 1 EEST} - {1004223600 7200 0 EET} - {1017529200 10800 1 EEST} - {1035673200 7200 0 EET} - {1048978800 10800 1 EEST} - {1067122800 7200 0 EET} - {1080428400 10800 1 EEST} - {1099177200 7200 0 EET} - {1111878000 10800 1 EEST} - {1130626800 7200 0 EET} - {1143327600 10800 1 EEST} - {1162076400 7200 0 EET} - {1167602400 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Istanbul) { + {-9223372036854775808 6952 0 LMT} + {-2840147752 7016 0 IMT} + {-1869875816 7200 0 EET} + {-1693706400 10800 1 EEST} + {-1680490800 7200 0 EET} + {-1570413600 10800 1 EEST} + {-1552186800 7200 0 EET} + {-1538359200 10800 1 EEST} + {-1522551600 7200 0 EET} + {-1507514400 10800 1 EEST} + {-1490583600 7200 0 EET} + {-1440208800 10800 1 EEST} + {-1428030000 7200 0 EET} + {-1409709600 10800 1 EEST} + {-1396494000 7200 0 EET} + {-931140000 10800 1 EEST} + {-922762800 7200 0 EET} + {-917834400 10800 1 EEST} + {-892436400 7200 0 EET} + {-875844000 10800 1 EEST} + {-857358000 7200 0 EET} + {-781063200 10800 1 EEST} + {-764737200 7200 0 EET} + {-744343200 10800 1 EEST} + {-733806000 7200 0 EET} + {-716436000 10800 1 EEST} + {-701924400 7200 0 EET} + {-684986400 10800 1 EEST} + {-670474800 7200 0 EET} + {-654141600 10800 1 EEST} + {-639025200 7200 0 EET} + {-621828000 10800 1 EEST} + {-606970800 7200 0 EET} + {-590032800 10800 1 EEST} + {-575434800 7200 0 EET} + {-235620000 10800 1 EEST} + {-228279600 7200 0 EET} + {-177732000 10800 1 EEST} + {-165726000 7200 0 EET} + {10533600 10800 1 EEST} + {23835600 7200 0 EET} + {41983200 10800 1 EEST} + {55285200 7200 0 EET} + {74037600 10800 1 EEST} + {87339600 7200 0 EET} + {107910000 10800 1 EEST} + {121219200 7200 0 EET} + {133920000 10800 1 EEST} + {152676000 7200 0 EET} + {165362400 10800 1 EEST} + {183502800 7200 0 EET} + {202428000 10800 1 EEST} + {215557200 7200 0 EET} + {228866400 10800 1 EEST} + {245797200 7200 0 EET} + {260316000 10800 1 EEST} + {277246800 14400 0 TRST} + {291769200 14400 1 TRST} + {308779200 10800 0 TRT} + {323827200 14400 1 TRST} + {340228800 10800 0 TRT} + {354672000 14400 1 TRST} + {371678400 10800 0 TRT} + {386121600 14400 1 TRST} + {403128000 10800 0 TRT} + {428446800 14400 1 TRST} + {433886400 10800 0 TRT} + {482792400 7200 0 EET} + {482796000 10800 1 EEST} + {496702800 7200 0 EET} + {512524800 10800 1 EEST} + {528249600 7200 0 EET} + {543974400 10800 1 EEST} + {559699200 7200 0 EET} + {575424000 10800 1 EEST} + {591148800 7200 0 EET} + {606873600 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {670374000 10800 1 EEST} + {686098800 7200 0 EET} + {701823600 10800 1 EEST} + {717548400 7200 0 EET} + {733273200 10800 1 EEST} + {748998000 7200 0 EET} + {764722800 10800 1 EEST} + {780447600 7200 0 EET} + {796172400 10800 1 EEST} + {811897200 7200 0 EET} + {828226800 10800 1 EEST} + {846370800 7200 0 EET} + {859676400 10800 1 EEST} + {877820400 7200 0 EET} + {891126000 10800 1 EEST} + {909270000 7200 0 EET} + {922575600 10800 1 EEST} + {941324400 7200 0 EET} + {954025200 10800 1 EEST} + {972774000 7200 0 EET} + {985474800 10800 1 EEST} + {1004223600 7200 0 EET} + {1017529200 10800 1 EEST} + {1035673200 7200 0 EET} + {1048978800 10800 1 EEST} + {1067122800 7200 0 EET} + {1080428400 10800 1 EEST} + {1099177200 7200 0 EET} + {1111878000 10800 1 EEST} + {1130626800 7200 0 EET} + {1143327600 10800 1 EEST} + {1162076400 7200 0 EET} + {1167602400 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Jersey b/library/tzdata/Europe/Jersey index e4da512..eb92e8a 100755 --- a/library/tzdata/Europe/Jersey +++ b/library/tzdata/Europe/Jersey @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:Europe/Jersey) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:Europe/Jersey) $TZData(:Europe/London) diff --git a/library/tzdata/Europe/Kaliningrad b/library/tzdata/Europe/Kaliningrad index 94ebb12..8a106e4 100644 --- a/library/tzdata/Europe/Kaliningrad +++ b/library/tzdata/Europe/Kaliningrad @@ -1,261 +1,261 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Kaliningrad) { - {-9223372036854775808 4920 0 LMT} - {-2422056120 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-788922000 7200 0 CET} - {-778730400 10800 1 CEST} - {-762663600 7200 0 CET} - {-757389600 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {638319600 14400 1 MSD} - {654649200 10800 0 MSK} - {670374000 7200 0 EEMMTT} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {701816400 10800 1 EEST} - {717537600 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {846374400 7200 0 EET} - {859680000 10800 1 EEST} - {877824000 7200 0 EET} - {891129600 10800 1 EEST} - {909273600 7200 0 EET} - {922579200 10800 1 EEST} - {941328000 7200 0 EET} - {954028800 10800 1 EEST} - {972777600 7200 0 EET} - {985478400 10800 1 EEST} - {1004227200 7200 0 EET} - {1017532800 10800 1 EEST} - {1035676800 7200 0 EET} - {1048982400 10800 1 EEST} - {1067126400 7200 0 EET} - {1080432000 10800 1 EEST} - {1099180800 7200 0 EET} - {1111881600 10800 1 EEST} - {1130630400 7200 0 EET} - {1143331200 10800 1 EEST} - {1162080000 7200 0 EET} - {1174780800 10800 1 EEST} - {1193529600 7200 0 EET} - {1206835200 10800 1 EEST} - {1224979200 7200 0 EET} - {1238284800 10800 1 EEST} - {1256428800 7200 0 EET} - {1269734400 10800 1 EEST} - {1288483200 7200 0 EET} - {1301184000 10800 1 EEST} - {1319932800 7200 0 EET} - {1332633600 10800 1 EEST} - {1351382400 7200 0 EET} - {1364688000 10800 1 EEST} - {1382832000 7200 0 EET} - {1396137600 10800 1 EEST} - {1414281600 7200 0 EET} - {1427587200 10800 1 EEST} - {1445731200 7200 0 EET} - {1459036800 10800 1 EEST} - {1477785600 7200 0 EET} - {1490486400 10800 1 EEST} - {1509235200 7200 0 EET} - {1521936000 10800 1 EEST} - {1540684800 7200 0 EET} - {1553990400 10800 1 EEST} - {1572134400 7200 0 EET} - {1585440000 10800 1 EEST} - {1603584000 7200 0 EET} - {1616889600 10800 1 EEST} - {1635638400 7200 0 EET} - {1648339200 10800 1 EEST} - {1667088000 7200 0 EET} - {1679788800 10800 1 EEST} - {1698537600 7200 0 EET} - {1711843200 10800 1 EEST} - {1729987200 7200 0 EET} - {1743292800 10800 1 EEST} - {1761436800 7200 0 EET} - {1774742400 10800 1 EEST} - {1792886400 7200 0 EET} - {1806192000 10800 1 EEST} - {1824940800 7200 0 EET} - {1837641600 10800 1 EEST} - {1856390400 7200 0 EET} - {1869091200 10800 1 EEST} - {1887840000 7200 0 EET} - {1901145600 10800 1 EEST} - {1919289600 7200 0 EET} - {1932595200 10800 1 EEST} - {1950739200 7200 0 EET} - {1964044800 10800 1 EEST} - {1982793600 7200 0 EET} - {1995494400 10800 1 EEST} - {2014243200 7200 0 EET} - {2026944000 10800 1 EEST} - {2045692800 7200 0 EET} - {2058393600 10800 1 EEST} - {2077142400 7200 0 EET} - {2090448000 10800 1 EEST} - {2108592000 7200 0 EET} - {2121897600 10800 1 EEST} - {2140041600 7200 0 EET} - {2153347200 10800 1 EEST} - {2172096000 7200 0 EET} - {2184796800 10800 1 EEST} - {2203545600 7200 0 EET} - {2216246400 10800 1 EEST} - {2234995200 7200 0 EET} - {2248300800 10800 1 EEST} - {2266444800 7200 0 EET} - {2279750400 10800 1 EEST} - {2297894400 7200 0 EET} - {2311200000 10800 1 EEST} - {2329344000 7200 0 EET} - {2342649600 10800 1 EEST} - {2361398400 7200 0 EET} - {2374099200 10800 1 EEST} - {2392848000 7200 0 EET} - {2405548800 10800 1 EEST} - {2424297600 7200 0 EET} - {2437603200 10800 1 EEST} - {2455747200 7200 0 EET} - {2469052800 10800 1 EEST} - {2487196800 7200 0 EET} - {2500502400 10800 1 EEST} - {2519251200 7200 0 EET} - {2531952000 10800 1 EEST} - {2550700800 7200 0 EET} - {2563401600 10800 1 EEST} - {2582150400 7200 0 EET} - {2595456000 10800 1 EEST} - {2613600000 7200 0 EET} - {2626905600 10800 1 EEST} - {2645049600 7200 0 EET} - {2658355200 10800 1 EEST} - {2676499200 7200 0 EET} - {2689804800 10800 1 EEST} - {2708553600 7200 0 EET} - {2721254400 10800 1 EEST} - {2740003200 7200 0 EET} - {2752704000 10800 1 EEST} - {2771452800 7200 0 EET} - {2784758400 10800 1 EEST} - {2802902400 7200 0 EET} - {2816208000 10800 1 EEST} - {2834352000 7200 0 EET} - {2847657600 10800 1 EEST} - {2866406400 7200 0 EET} - {2879107200 10800 1 EEST} - {2897856000 7200 0 EET} - {2910556800 10800 1 EEST} - {2929305600 7200 0 EET} - {2942006400 10800 1 EEST} - {2960755200 7200 0 EET} - {2974060800 10800 1 EEST} - {2992204800 7200 0 EET} - {3005510400 10800 1 EEST} - {3023654400 7200 0 EET} - {3036960000 10800 1 EEST} - {3055708800 7200 0 EET} - {3068409600 10800 1 EEST} - {3087158400 7200 0 EET} - {3099859200 10800 1 EEST} - {3118608000 7200 0 EET} - {3131913600 10800 1 EEST} - {3150057600 7200 0 EET} - {3163363200 10800 1 EEST} - {3181507200 7200 0 EET} - {3194812800 10800 1 EEST} - {3212956800 7200 0 EET} - {3226262400 10800 1 EEST} - {3245011200 7200 0 EET} - {3257712000 10800 1 EEST} - {3276460800 7200 0 EET} - {3289161600 10800 1 EEST} - {3307910400 7200 0 EET} - {3321216000 10800 1 EEST} - {3339360000 7200 0 EET} - {3352665600 10800 1 EEST} - {3370809600 7200 0 EET} - {3384115200 10800 1 EEST} - {3402864000 7200 0 EET} - {3415564800 10800 1 EEST} - {3434313600 7200 0 EET} - {3447014400 10800 1 EEST} - {3465763200 7200 0 EET} - {3479068800 10800 1 EEST} - {3497212800 7200 0 EET} - {3510518400 10800 1 EEST} - {3528662400 7200 0 EET} - {3541968000 10800 1 EEST} - {3560112000 7200 0 EET} - {3573417600 10800 1 EEST} - {3592166400 7200 0 EET} - {3604867200 10800 1 EEST} - {3623616000 7200 0 EET} - {3636316800 10800 1 EEST} - {3655065600 7200 0 EET} - {3668371200 10800 1 EEST} - {3686515200 7200 0 EET} - {3699820800 10800 1 EEST} - {3717964800 7200 0 EET} - {3731270400 10800 1 EEST} - {3750019200 7200 0 EET} - {3762720000 10800 1 EEST} - {3781468800 7200 0 EET} - {3794169600 10800 1 EEST} - {3812918400 7200 0 EET} - {3825619200 10800 1 EEST} - {3844368000 7200 0 EET} - {3857673600 10800 1 EEST} - {3875817600 7200 0 EET} - {3889123200 10800 1 EEST} - {3907267200 7200 0 EET} - {3920572800 10800 1 EEST} - {3939321600 7200 0 EET} - {3952022400 10800 1 EEST} - {3970771200 7200 0 EET} - {3983472000 10800 1 EEST} - {4002220800 7200 0 EET} - {4015526400 10800 1 EEST} - {4033670400 7200 0 EET} - {4046976000 10800 1 EEST} - {4065120000 7200 0 EET} - {4078425600 10800 1 EEST} - {4096569600 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Kaliningrad) { + {-9223372036854775808 4920 0 LMT} + {-2422056120 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-788922000 7200 0 CET} + {-778730400 10800 1 CEST} + {-762663600 7200 0 CET} + {-757389600 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 7200 0 EEMMTT} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {701816400 10800 1 EEST} + {717537600 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {846374400 7200 0 EET} + {859680000 10800 1 EEST} + {877824000 7200 0 EET} + {891129600 10800 1 EEST} + {909273600 7200 0 EET} + {922579200 10800 1 EEST} + {941328000 7200 0 EET} + {954028800 10800 1 EEST} + {972777600 7200 0 EET} + {985478400 10800 1 EEST} + {1004227200 7200 0 EET} + {1017532800 10800 1 EEST} + {1035676800 7200 0 EET} + {1048982400 10800 1 EEST} + {1067126400 7200 0 EET} + {1080432000 10800 1 EEST} + {1099180800 7200 0 EET} + {1111881600 10800 1 EEST} + {1130630400 7200 0 EET} + {1143331200 10800 1 EEST} + {1162080000 7200 0 EET} + {1174780800 10800 1 EEST} + {1193529600 7200 0 EET} + {1206835200 10800 1 EEST} + {1224979200 7200 0 EET} + {1238284800 10800 1 EEST} + {1256428800 7200 0 EET} + {1269734400 10800 1 EEST} + {1288483200 7200 0 EET} + {1301184000 10800 1 EEST} + {1319932800 7200 0 EET} + {1332633600 10800 1 EEST} + {1351382400 7200 0 EET} + {1364688000 10800 1 EEST} + {1382832000 7200 0 EET} + {1396137600 10800 1 EEST} + {1414281600 7200 0 EET} + {1427587200 10800 1 EEST} + {1445731200 7200 0 EET} + {1459036800 10800 1 EEST} + {1477785600 7200 0 EET} + {1490486400 10800 1 EEST} + {1509235200 7200 0 EET} + {1521936000 10800 1 EEST} + {1540684800 7200 0 EET} + {1553990400 10800 1 EEST} + {1572134400 7200 0 EET} + {1585440000 10800 1 EEST} + {1603584000 7200 0 EET} + {1616889600 10800 1 EEST} + {1635638400 7200 0 EET} + {1648339200 10800 1 EEST} + {1667088000 7200 0 EET} + {1679788800 10800 1 EEST} + {1698537600 7200 0 EET} + {1711843200 10800 1 EEST} + {1729987200 7200 0 EET} + {1743292800 10800 1 EEST} + {1761436800 7200 0 EET} + {1774742400 10800 1 EEST} + {1792886400 7200 0 EET} + {1806192000 10800 1 EEST} + {1824940800 7200 0 EET} + {1837641600 10800 1 EEST} + {1856390400 7200 0 EET} + {1869091200 10800 1 EEST} + {1887840000 7200 0 EET} + {1901145600 10800 1 EEST} + {1919289600 7200 0 EET} + {1932595200 10800 1 EEST} + {1950739200 7200 0 EET} + {1964044800 10800 1 EEST} + {1982793600 7200 0 EET} + {1995494400 10800 1 EEST} + {2014243200 7200 0 EET} + {2026944000 10800 1 EEST} + {2045692800 7200 0 EET} + {2058393600 10800 1 EEST} + {2077142400 7200 0 EET} + {2090448000 10800 1 EEST} + {2108592000 7200 0 EET} + {2121897600 10800 1 EEST} + {2140041600 7200 0 EET} + {2153347200 10800 1 EEST} + {2172096000 7200 0 EET} + {2184796800 10800 1 EEST} + {2203545600 7200 0 EET} + {2216246400 10800 1 EEST} + {2234995200 7200 0 EET} + {2248300800 10800 1 EEST} + {2266444800 7200 0 EET} + {2279750400 10800 1 EEST} + {2297894400 7200 0 EET} + {2311200000 10800 1 EEST} + {2329344000 7200 0 EET} + {2342649600 10800 1 EEST} + {2361398400 7200 0 EET} + {2374099200 10800 1 EEST} + {2392848000 7200 0 EET} + {2405548800 10800 1 EEST} + {2424297600 7200 0 EET} + {2437603200 10800 1 EEST} + {2455747200 7200 0 EET} + {2469052800 10800 1 EEST} + {2487196800 7200 0 EET} + {2500502400 10800 1 EEST} + {2519251200 7200 0 EET} + {2531952000 10800 1 EEST} + {2550700800 7200 0 EET} + {2563401600 10800 1 EEST} + {2582150400 7200 0 EET} + {2595456000 10800 1 EEST} + {2613600000 7200 0 EET} + {2626905600 10800 1 EEST} + {2645049600 7200 0 EET} + {2658355200 10800 1 EEST} + {2676499200 7200 0 EET} + {2689804800 10800 1 EEST} + {2708553600 7200 0 EET} + {2721254400 10800 1 EEST} + {2740003200 7200 0 EET} + {2752704000 10800 1 EEST} + {2771452800 7200 0 EET} + {2784758400 10800 1 EEST} + {2802902400 7200 0 EET} + {2816208000 10800 1 EEST} + {2834352000 7200 0 EET} + {2847657600 10800 1 EEST} + {2866406400 7200 0 EET} + {2879107200 10800 1 EEST} + {2897856000 7200 0 EET} + {2910556800 10800 1 EEST} + {2929305600 7200 0 EET} + {2942006400 10800 1 EEST} + {2960755200 7200 0 EET} + {2974060800 10800 1 EEST} + {2992204800 7200 0 EET} + {3005510400 10800 1 EEST} + {3023654400 7200 0 EET} + {3036960000 10800 1 EEST} + {3055708800 7200 0 EET} + {3068409600 10800 1 EEST} + {3087158400 7200 0 EET} + {3099859200 10800 1 EEST} + {3118608000 7200 0 EET} + {3131913600 10800 1 EEST} + {3150057600 7200 0 EET} + {3163363200 10800 1 EEST} + {3181507200 7200 0 EET} + {3194812800 10800 1 EEST} + {3212956800 7200 0 EET} + {3226262400 10800 1 EEST} + {3245011200 7200 0 EET} + {3257712000 10800 1 EEST} + {3276460800 7200 0 EET} + {3289161600 10800 1 EEST} + {3307910400 7200 0 EET} + {3321216000 10800 1 EEST} + {3339360000 7200 0 EET} + {3352665600 10800 1 EEST} + {3370809600 7200 0 EET} + {3384115200 10800 1 EEST} + {3402864000 7200 0 EET} + {3415564800 10800 1 EEST} + {3434313600 7200 0 EET} + {3447014400 10800 1 EEST} + {3465763200 7200 0 EET} + {3479068800 10800 1 EEST} + {3497212800 7200 0 EET} + {3510518400 10800 1 EEST} + {3528662400 7200 0 EET} + {3541968000 10800 1 EEST} + {3560112000 7200 0 EET} + {3573417600 10800 1 EEST} + {3592166400 7200 0 EET} + {3604867200 10800 1 EEST} + {3623616000 7200 0 EET} + {3636316800 10800 1 EEST} + {3655065600 7200 0 EET} + {3668371200 10800 1 EEST} + {3686515200 7200 0 EET} + {3699820800 10800 1 EEST} + {3717964800 7200 0 EET} + {3731270400 10800 1 EEST} + {3750019200 7200 0 EET} + {3762720000 10800 1 EEST} + {3781468800 7200 0 EET} + {3794169600 10800 1 EEST} + {3812918400 7200 0 EET} + {3825619200 10800 1 EEST} + {3844368000 7200 0 EET} + {3857673600 10800 1 EEST} + {3875817600 7200 0 EET} + {3889123200 10800 1 EEST} + {3907267200 7200 0 EET} + {3920572800 10800 1 EEST} + {3939321600 7200 0 EET} + {3952022400 10800 1 EEST} + {3970771200 7200 0 EET} + {3983472000 10800 1 EEST} + {4002220800 7200 0 EET} + {4015526400 10800 1 EEST} + {4033670400 7200 0 EET} + {4046976000 10800 1 EEST} + {4065120000 7200 0 EET} + {4078425600 10800 1 EEST} + {4096569600 7200 0 EET} +} diff --git a/library/tzdata/Europe/Kiev b/library/tzdata/Europe/Kiev index 0206be7..fdb86e7 100644 --- a/library/tzdata/Europe/Kiev +++ b/library/tzdata/Europe/Kiev @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Kiev) { - {-9223372036854775808 7324 0 LMT} - {-2840148124 7324 0 KMT} - {-1441159324 7200 0 EET} - {-1247536800 10800 0 MSK} - {-892522800 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-825382800 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {646786800 7200 0 EET} - {694216800 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {788911200 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Kiev) { + {-9223372036854775808 7324 0 LMT} + {-2840148124 7324 0 KMT} + {-1441159324 7200 0 EET} + {-1247536800 10800 0 MSK} + {-892522800 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-825382800 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {646786800 7200 0 EET} + {694216800 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {788911200 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Lisbon b/library/tzdata/Europe/Lisbon index 79c688a..20e270e 100644 --- a/library/tzdata/Europe/Lisbon +++ b/library/tzdata/Europe/Lisbon @@ -1,351 +1,351 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Lisbon) { - {-9223372036854775808 -2192 0 LMT} - {-2713908208 -2192 0 LMT} - {-1830381808 0 0 WET} - {-1689555600 3600 1 WEST} - {-1677801600 0 0 WET} - {-1667437200 3600 1 WEST} - {-1647738000 0 0 WET} - {-1635814800 3600 1 WEST} - {-1616202000 0 0 WET} - {-1604365200 3600 1 WEST} - {-1584666000 0 0 WET} - {-1572742800 3600 1 WEST} - {-1553043600 0 0 WET} - {-1541206800 3600 1 WEST} - {-1521507600 0 0 WET} - {-1442451600 3600 1 WEST} - {-1426813200 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269824400 0 0 WET} - {-1221440400 3600 1 WEST} - {-1206925200 0 0 WET} - {-1191200400 3600 1 WEST} - {-1175475600 0 0 WET} - {-1127696400 3600 1 WEST} - {-1111971600 0 0 WET} - {-1096851600 3600 1 WEST} - {-1080522000 0 0 WET} - {-1063587600 3600 1 WEST} - {-1049072400 0 0 WET} - {-1033347600 3600 1 WEST} - {-1017622800 0 0 WET} - {-1002502800 3600 1 WEST} - {-986173200 0 0 WET} - {-969238800 3600 1 WEST} - {-950490000 0 0 WET} - {-942022800 3600 1 WEST} - {-922669200 0 0 WET} - {-906944400 3600 1 WEST} - {-891133200 0 0 WET} - {-877309200 3600 1 WEST} - {-873684000 7200 1 WEMT} - {-864007200 3600 1 WEST} - {-857955600 0 0 WET} - {-845859600 3600 1 WEST} - {-842839200 7200 1 WEMT} - {-831348000 3600 1 WEST} - {-825901200 0 0 WET} - {-814410000 3600 1 WEST} - {-810784800 7200 1 WEMT} - {-799898400 3600 1 WEST} - {-794451600 0 0 WET} - {-782960400 3600 1 WEST} - {-779335200 7200 1 WEMT} - {-768448800 3600 1 WEST} - {-763002000 0 0 WET} - {-749091600 3600 1 WEST} - {-733366800 0 0 WET} - {-717631200 3600 1 WEST} - {-701906400 0 0 WET} - {-686181600 3600 1 WEST} - {-670456800 0 0 WET} - {-654732000 3600 1 WEST} - {-639007200 0 0 WET} - {-591832800 3600 1 WEST} - {-575503200 0 0 WET} - {-559778400 3600 1 WEST} - {-544053600 0 0 WET} - {-528328800 3600 1 WEST} - {-512604000 0 0 WET} - {-496879200 3600 1 WEST} - {-481154400 0 0 WET} - {-465429600 3600 1 WEST} - {-449704800 0 0 WET} - {-433980000 3600 1 WEST} - {-417650400 0 0 WET} - {-401925600 3600 1 WEST} - {-386200800 0 0 WET} - {-370476000 3600 1 WEST} - {-354751200 0 0 WET} - {-339026400 3600 1 WEST} - {-323301600 0 0 WET} - {-307576800 3600 1 WEST} - {-291852000 0 0 WET} - {-276127200 3600 1 WEST} - {-260402400 0 0 WET} - {-244677600 3600 1 WEST} - {-228348000 0 0 WET} - {-212623200 3600 1 WEST} - {-196898400 0 0 WET} - {-181173600 3600 1 WEST} - {-165448800 0 0 WET} - {-149724000 3600 1 WEST} - {-133999200 0 0 WET} - {-118274400 3600 0 CET} - {212544000 0 0 WET} - {228268800 3600 1 WEST} - {243993600 0 0 WET} - {260323200 3600 1 WEST} - {276048000 0 0 WET} - {291772800 3600 1 WEST} - {307501200 0 0 WET} - {323222400 3600 1 WEST} - {338950800 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417578400 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 3600 0 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Lisbon) { + {-9223372036854775808 -2192 0 LMT} + {-2713908208 -2192 0 LMT} + {-1830381808 0 0 WET} + {-1689555600 3600 1 WEST} + {-1677801600 0 0 WET} + {-1667437200 3600 1 WEST} + {-1647738000 0 0 WET} + {-1635814800 3600 1 WEST} + {-1616202000 0 0 WET} + {-1604365200 3600 1 WEST} + {-1584666000 0 0 WET} + {-1572742800 3600 1 WEST} + {-1553043600 0 0 WET} + {-1541206800 3600 1 WEST} + {-1521507600 0 0 WET} + {-1442451600 3600 1 WEST} + {-1426813200 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269824400 0 0 WET} + {-1221440400 3600 1 WEST} + {-1206925200 0 0 WET} + {-1191200400 3600 1 WEST} + {-1175475600 0 0 WET} + {-1127696400 3600 1 WEST} + {-1111971600 0 0 WET} + {-1096851600 3600 1 WEST} + {-1080522000 0 0 WET} + {-1063587600 3600 1 WEST} + {-1049072400 0 0 WET} + {-1033347600 3600 1 WEST} + {-1017622800 0 0 WET} + {-1002502800 3600 1 WEST} + {-986173200 0 0 WET} + {-969238800 3600 1 WEST} + {-950490000 0 0 WET} + {-942022800 3600 1 WEST} + {-922669200 0 0 WET} + {-906944400 3600 1 WEST} + {-891133200 0 0 WET} + {-877309200 3600 1 WEST} + {-873684000 7200 1 WEMT} + {-864007200 3600 1 WEST} + {-857955600 0 0 WET} + {-845859600 3600 1 WEST} + {-842839200 7200 1 WEMT} + {-831348000 3600 1 WEST} + {-825901200 0 0 WET} + {-814410000 3600 1 WEST} + {-810784800 7200 1 WEMT} + {-799898400 3600 1 WEST} + {-794451600 0 0 WET} + {-782960400 3600 1 WEST} + {-779335200 7200 1 WEMT} + {-768448800 3600 1 WEST} + {-763002000 0 0 WET} + {-749091600 3600 1 WEST} + {-733366800 0 0 WET} + {-717631200 3600 1 WEST} + {-701906400 0 0 WET} + {-686181600 3600 1 WEST} + {-670456800 0 0 WET} + {-654732000 3600 1 WEST} + {-639007200 0 0 WET} + {-591832800 3600 1 WEST} + {-575503200 0 0 WET} + {-559778400 3600 1 WEST} + {-544053600 0 0 WET} + {-528328800 3600 1 WEST} + {-512604000 0 0 WET} + {-496879200 3600 1 WEST} + {-481154400 0 0 WET} + {-465429600 3600 1 WEST} + {-449704800 0 0 WET} + {-433980000 3600 1 WEST} + {-417650400 0 0 WET} + {-401925600 3600 1 WEST} + {-386200800 0 0 WET} + {-370476000 3600 1 WEST} + {-354751200 0 0 WET} + {-339026400 3600 1 WEST} + {-323301600 0 0 WET} + {-307576800 3600 1 WEST} + {-291852000 0 0 WET} + {-276127200 3600 1 WEST} + {-260402400 0 0 WET} + {-244677600 3600 1 WEST} + {-228348000 0 0 WET} + {-212623200 3600 1 WEST} + {-196898400 0 0 WET} + {-181173600 3600 1 WEST} + {-165448800 0 0 WET} + {-149724000 3600 1 WEST} + {-133999200 0 0 WET} + {-118274400 3600 0 CET} + {212544000 0 0 WET} + {228268800 3600 1 WEST} + {243993600 0 0 WET} + {260323200 3600 1 WEST} + {276048000 0 0 WET} + {291772800 3600 1 WEST} + {307501200 0 0 WET} + {323222400 3600 1 WEST} + {338950800 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417578400 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 3600 0 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Europe/Ljubljana b/library/tzdata/Europe/Ljubljana index 42c7df4..bd46db1 100644 --- a/library/tzdata/Europe/Ljubljana +++ b/library/tzdata/Europe/Ljubljana @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Ljubljana) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Ljubljana) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/London b/library/tzdata/Europe/London index 2014e00..0bca507 100644 --- a/library/tzdata/Europe/London +++ b/library/tzdata/Europe/London @@ -1,372 +1,372 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/London) { - {-9223372036854775808 -75 0 LMT} - {-3852662325 0 0 GMT} - {-1691964000 3600 1 BST} - {-1680472800 0 0 GMT} - {-1664143200 3600 1 BST} - {-1650146400 0 0 GMT} - {-1633903200 3600 1 BST} - {-1617487200 0 0 GMT} - {-1601848800 3600 1 BST} - {-1586037600 0 0 GMT} - {-1570399200 3600 1 BST} - {-1552168800 0 0 GMT} - {-1538344800 3600 1 BST} - {-1522533600 0 0 GMT} - {-1507500000 3600 1 BST} - {-1490565600 0 0 GMT} - {-1473631200 3600 1 BST} - {-1460930400 0 0 GMT} - {-1442786400 3600 1 BST} - {-1428876000 0 0 GMT} - {-1410732000 3600 1 BST} - {-1396216800 0 0 GMT} - {-1379282400 3600 1 BST} - {-1364767200 0 0 GMT} - {-1348437600 3600 1 BST} - {-1333317600 0 0 GMT} - {-1315778400 3600 1 BST} - {-1301263200 0 0 GMT} - {-1284328800 3600 1 BST} - {-1269813600 0 0 GMT} - {-1253484000 3600 1 BST} - {-1238364000 0 0 GMT} - {-1221429600 3600 1 BST} - {-1206914400 0 0 GMT} - {-1189980000 3600 1 BST} - {-1175464800 0 0 GMT} - {-1159135200 3600 1 BST} - {-1143410400 0 0 GMT} - {-1126476000 3600 1 BST} - {-1111960800 0 0 GMT} - {-1095631200 3600 1 BST} - {-1080511200 0 0 GMT} - {-1063576800 3600 1 BST} - {-1049061600 0 0 GMT} - {-1032127200 3600 1 BST} - {-1017612000 0 0 GMT} - {-1001282400 3600 1 BST} - {-986162400 0 0 GMT} - {-969228000 3600 1 BST} - {-950479200 0 0 GMT} - {-942012000 3600 1 BST} - {-904518000 7200 1 BDST} - {-896050800 3600 1 BST} - {-875487600 7200 1 BDST} - {-864601200 3600 1 BST} - {-844038000 7200 1 BDST} - {-832546800 3600 1 BST} - {-812588400 7200 1 BDST} - {-798073200 3600 1 BST} - {-781052400 7200 1 BDST} - {-772066800 3600 1 BST} - {-764805600 0 0 GMT} - {-748476000 3600 1 BST} - {-733356000 0 0 GMT} - {-719445600 3600 1 BST} - {-717030000 7200 1 BDST} - {-706748400 3600 1 BST} - {-699487200 0 0 GMT} - {-687996000 3600 1 BST} - {-668037600 0 0 GMT} - {-654732000 3600 1 BST} - {-636588000 0 0 GMT} - {-622072800 3600 1 BST} - {-605743200 0 0 GMT} - {-590623200 3600 1 BST} - {-574293600 0 0 GMT} - {-558568800 3600 1 BST} - {-542239200 0 0 GMT} - {-527119200 3600 1 BST} - {-512604000 0 0 GMT} - {-496274400 3600 1 BST} - {-481154400 0 0 GMT} - {-464220000 3600 1 BST} - {-449704800 0 0 GMT} - {-432165600 3600 1 BST} - {-417650400 0 0 GMT} - {-401320800 3600 1 BST} - {-386200800 0 0 GMT} - {-369266400 3600 1 BST} - {-354751200 0 0 GMT} - {-337816800 3600 1 BST} - {-323301600 0 0 GMT} - {-306972000 3600 1 BST} - {-291852000 0 0 GMT} - {-276732000 3600 1 BST} - {-257983200 0 0 GMT} - {-245282400 3600 1 BST} - {-226533600 0 0 GMT} - {-213228000 3600 1 BST} - {-195084000 0 0 GMT} - {-182383200 3600 1 BST} - {-163634400 0 0 GMT} - {-150933600 3600 1 BST} - {-132184800 0 0 GMT} - {-119484000 3600 1 BST} - {-100735200 0 0 GMT} - {-88034400 3600 1 BST} - {-68680800 0 0 GMT} - {-59004000 3600 1 BST} - {-37238400 3600 0 BST} - {57722400 0 0 GMT} - {69818400 3600 1 BST} - {89172000 0 0 GMT} - {101268000 3600 1 BST} - {120621600 0 0 GMT} - {132717600 3600 1 BST} - {152071200 0 0 GMT} - {164167200 3600 1 BST} - {183520800 0 0 GMT} - {196221600 3600 1 BST} - {214970400 0 0 GMT} - {227671200 3600 1 BST} - {246420000 0 0 GMT} - {259120800 3600 1 BST} - {278474400 0 0 GMT} - {290570400 3600 1 BST} - {309924000 0 0 GMT} - {322020000 3600 1 BST} - {341373600 0 0 GMT} - {354675600 3600 1 BST} - {372819600 0 0 GMT} - {386125200 3600 1 BST} - {404269200 0 0 GMT} - {417574800 3600 1 BST} - {435718800 0 0 GMT} - {449024400 3600 1 BST} - {467773200 0 0 GMT} - {481078800 3600 1 BST} - {499222800 0 0 GMT} - {512528400 3600 1 BST} - {530672400 0 0 GMT} - {543978000 3600 1 BST} - {562122000 0 0 GMT} - {575427600 3600 1 BST} - {593571600 0 0 GMT} - {606877200 3600 1 BST} - {625626000 0 0 GMT} - {638326800 3600 1 BST} - {657075600 0 0 GMT} - {670381200 3600 1 BST} - {688525200 0 0 GMT} - {701830800 3600 1 BST} - {719974800 0 0 GMT} - {733280400 3600 1 BST} - {751424400 0 0 GMT} - {764730000 3600 1 BST} - {782874000 0 0 GMT} - {796179600 3600 1 BST} - {814323600 0 0 GMT} - {820454400 0 0 GMT} - {828234000 3600 1 BST} - {846378000 0 0 GMT} - {859683600 3600 1 BST} - {877827600 0 0 GMT} - {891133200 3600 1 BST} - {909277200 0 0 GMT} - {922582800 3600 1 BST} - {941331600 0 0 GMT} - {954032400 3600 1 BST} - {972781200 0 0 GMT} - {985482000 3600 1 BST} - {1004230800 0 0 GMT} - {1017536400 3600 1 BST} - {1035680400 0 0 GMT} - {1048986000 3600 1 BST} - {1067130000 0 0 GMT} - {1080435600 3600 1 BST} - {1099184400 0 0 GMT} - {1111885200 3600 1 BST} - {1130634000 0 0 GMT} - {1143334800 3600 1 BST} - {1162083600 0 0 GMT} - {1174784400 3600 1 BST} - {1193533200 0 0 GMT} - {1206838800 3600 1 BST} - {1224982800 0 0 GMT} - {1238288400 3600 1 BST} - {1256432400 0 0 GMT} - {1269738000 3600 1 BST} - {1288486800 0 0 GMT} - {1301187600 3600 1 BST} - {1319936400 0 0 GMT} - {1332637200 3600 1 BST} - {1351386000 0 0 GMT} - {1364691600 3600 1 BST} - {1382835600 0 0 GMT} - {1396141200 3600 1 BST} - {1414285200 0 0 GMT} - {1427590800 3600 1 BST} - {1445734800 0 0 GMT} - {1459040400 3600 1 BST} - {1477789200 0 0 GMT} - {1490490000 3600 1 BST} - {1509238800 0 0 GMT} - {1521939600 3600 1 BST} - {1540688400 0 0 GMT} - {1553994000 3600 1 BST} - {1572138000 0 0 GMT} - {1585443600 3600 1 BST} - {1603587600 0 0 GMT} - {1616893200 3600 1 BST} - {1635642000 0 0 GMT} - {1648342800 3600 1 BST} - {1667091600 0 0 GMT} - {1679792400 3600 1 BST} - {1698541200 0 0 GMT} - {1711846800 3600 1 BST} - {1729990800 0 0 GMT} - {1743296400 3600 1 BST} - {1761440400 0 0 GMT} - {1774746000 3600 1 BST} - {1792890000 0 0 GMT} - {1806195600 3600 1 BST} - {1824944400 0 0 GMT} - {1837645200 3600 1 BST} - {1856394000 0 0 GMT} - {1869094800 3600 1 BST} - {1887843600 0 0 GMT} - {1901149200 3600 1 BST} - {1919293200 0 0 GMT} - {1932598800 3600 1 BST} - {1950742800 0 0 GMT} - {1964048400 3600 1 BST} - {1982797200 0 0 GMT} - {1995498000 3600 1 BST} - {2014246800 0 0 GMT} - {2026947600 3600 1 BST} - {2045696400 0 0 GMT} - {2058397200 3600 1 BST} - {2077146000 0 0 GMT} - {2090451600 3600 1 BST} - {2108595600 0 0 GMT} - {2121901200 3600 1 BST} - {2140045200 0 0 GMT} - {2153350800 3600 1 BST} - {2172099600 0 0 GMT} - {2184800400 3600 1 BST} - {2203549200 0 0 GMT} - {2216250000 3600 1 BST} - {2234998800 0 0 GMT} - {2248304400 3600 1 BST} - {2266448400 0 0 GMT} - {2279754000 3600 1 BST} - {2297898000 0 0 GMT} - {2311203600 3600 1 BST} - {2329347600 0 0 GMT} - {2342653200 3600 1 BST} - {2361402000 0 0 GMT} - {2374102800 3600 1 BST} - {2392851600 0 0 GMT} - {2405552400 3600 1 BST} - {2424301200 0 0 GMT} - {2437606800 3600 1 BST} - {2455750800 0 0 GMT} - {2469056400 3600 1 BST} - {2487200400 0 0 GMT} - {2500506000 3600 1 BST} - {2519254800 0 0 GMT} - {2531955600 3600 1 BST} - {2550704400 0 0 GMT} - {2563405200 3600 1 BST} - {2582154000 0 0 GMT} - {2595459600 3600 1 BST} - {2613603600 0 0 GMT} - {2626909200 3600 1 BST} - {2645053200 0 0 GMT} - {2658358800 3600 1 BST} - {2676502800 0 0 GMT} - {2689808400 3600 1 BST} - {2708557200 0 0 GMT} - {2721258000 3600 1 BST} - {2740006800 0 0 GMT} - {2752707600 3600 1 BST} - {2771456400 0 0 GMT} - {2784762000 3600 1 BST} - {2802906000 0 0 GMT} - {2816211600 3600 1 BST} - {2834355600 0 0 GMT} - {2847661200 3600 1 BST} - {2866410000 0 0 GMT} - {2879110800 3600 1 BST} - {2897859600 0 0 GMT} - {2910560400 3600 1 BST} - {2929309200 0 0 GMT} - {2942010000 3600 1 BST} - {2960758800 0 0 GMT} - {2974064400 3600 1 BST} - {2992208400 0 0 GMT} - {3005514000 3600 1 BST} - {3023658000 0 0 GMT} - {3036963600 3600 1 BST} - {3055712400 0 0 GMT} - {3068413200 3600 1 BST} - {3087162000 0 0 GMT} - {3099862800 3600 1 BST} - {3118611600 0 0 GMT} - {3131917200 3600 1 BST} - {3150061200 0 0 GMT} - {3163366800 3600 1 BST} - {3181510800 0 0 GMT} - {3194816400 3600 1 BST} - {3212960400 0 0 GMT} - {3226266000 3600 1 BST} - {3245014800 0 0 GMT} - {3257715600 3600 1 BST} - {3276464400 0 0 GMT} - {3289165200 3600 1 BST} - {3307914000 0 0 GMT} - {3321219600 3600 1 BST} - {3339363600 0 0 GMT} - {3352669200 3600 1 BST} - {3370813200 0 0 GMT} - {3384118800 3600 1 BST} - {3402867600 0 0 GMT} - {3415568400 3600 1 BST} - {3434317200 0 0 GMT} - {3447018000 3600 1 BST} - {3465766800 0 0 GMT} - {3479072400 3600 1 BST} - {3497216400 0 0 GMT} - {3510522000 3600 1 BST} - {3528666000 0 0 GMT} - {3541971600 3600 1 BST} - {3560115600 0 0 GMT} - {3573421200 3600 1 BST} - {3592170000 0 0 GMT} - {3604870800 3600 1 BST} - {3623619600 0 0 GMT} - {3636320400 3600 1 BST} - {3655069200 0 0 GMT} - {3668374800 3600 1 BST} - {3686518800 0 0 GMT} - {3699824400 3600 1 BST} - {3717968400 0 0 GMT} - {3731274000 3600 1 BST} - {3750022800 0 0 GMT} - {3762723600 3600 1 BST} - {3781472400 0 0 GMT} - {3794173200 3600 1 BST} - {3812922000 0 0 GMT} - {3825622800 3600 1 BST} - {3844371600 0 0 GMT} - {3857677200 3600 1 BST} - {3875821200 0 0 GMT} - {3889126800 3600 1 BST} - {3907270800 0 0 GMT} - {3920576400 3600 1 BST} - {3939325200 0 0 GMT} - {3952026000 3600 1 BST} - {3970774800 0 0 GMT} - {3983475600 3600 1 BST} - {4002224400 0 0 GMT} - {4015530000 3600 1 BST} - {4033674000 0 0 GMT} - {4046979600 3600 1 BST} - {4065123600 0 0 GMT} - {4078429200 3600 1 BST} - {4096573200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/London) { + {-9223372036854775808 -75 0 LMT} + {-3852662325 0 0 GMT} + {-1691964000 3600 1 BST} + {-1680472800 0 0 GMT} + {-1664143200 3600 1 BST} + {-1650146400 0 0 GMT} + {-1633903200 3600 1 BST} + {-1617487200 0 0 GMT} + {-1601848800 3600 1 BST} + {-1586037600 0 0 GMT} + {-1570399200 3600 1 BST} + {-1552168800 0 0 GMT} + {-1538344800 3600 1 BST} + {-1522533600 0 0 GMT} + {-1507500000 3600 1 BST} + {-1490565600 0 0 GMT} + {-1473631200 3600 1 BST} + {-1460930400 0 0 GMT} + {-1442786400 3600 1 BST} + {-1428876000 0 0 GMT} + {-1410732000 3600 1 BST} + {-1396216800 0 0 GMT} + {-1379282400 3600 1 BST} + {-1364767200 0 0 GMT} + {-1348437600 3600 1 BST} + {-1333317600 0 0 GMT} + {-1315778400 3600 1 BST} + {-1301263200 0 0 GMT} + {-1284328800 3600 1 BST} + {-1269813600 0 0 GMT} + {-1253484000 3600 1 BST} + {-1238364000 0 0 GMT} + {-1221429600 3600 1 BST} + {-1206914400 0 0 GMT} + {-1189980000 3600 1 BST} + {-1175464800 0 0 GMT} + {-1159135200 3600 1 BST} + {-1143410400 0 0 GMT} + {-1126476000 3600 1 BST} + {-1111960800 0 0 GMT} + {-1095631200 3600 1 BST} + {-1080511200 0 0 GMT} + {-1063576800 3600 1 BST} + {-1049061600 0 0 GMT} + {-1032127200 3600 1 BST} + {-1017612000 0 0 GMT} + {-1001282400 3600 1 BST} + {-986162400 0 0 GMT} + {-969228000 3600 1 BST} + {-950479200 0 0 GMT} + {-942012000 3600 1 BST} + {-904518000 7200 1 BDST} + {-896050800 3600 1 BST} + {-875487600 7200 1 BDST} + {-864601200 3600 1 BST} + {-844038000 7200 1 BDST} + {-832546800 3600 1 BST} + {-812588400 7200 1 BDST} + {-798073200 3600 1 BST} + {-781052400 7200 1 BDST} + {-772066800 3600 1 BST} + {-764805600 0 0 GMT} + {-748476000 3600 1 BST} + {-733356000 0 0 GMT} + {-719445600 3600 1 BST} + {-717030000 7200 1 BDST} + {-706748400 3600 1 BST} + {-699487200 0 0 GMT} + {-687996000 3600 1 BST} + {-668037600 0 0 GMT} + {-654732000 3600 1 BST} + {-636588000 0 0 GMT} + {-622072800 3600 1 BST} + {-605743200 0 0 GMT} + {-590623200 3600 1 BST} + {-574293600 0 0 GMT} + {-558568800 3600 1 BST} + {-542239200 0 0 GMT} + {-527119200 3600 1 BST} + {-512604000 0 0 GMT} + {-496274400 3600 1 BST} + {-481154400 0 0 GMT} + {-464220000 3600 1 BST} + {-449704800 0 0 GMT} + {-432165600 3600 1 BST} + {-417650400 0 0 GMT} + {-401320800 3600 1 BST} + {-386200800 0 0 GMT} + {-369266400 3600 1 BST} + {-354751200 0 0 GMT} + {-337816800 3600 1 BST} + {-323301600 0 0 GMT} + {-306972000 3600 1 BST} + {-291852000 0 0 GMT} + {-276732000 3600 1 BST} + {-257983200 0 0 GMT} + {-245282400 3600 1 BST} + {-226533600 0 0 GMT} + {-213228000 3600 1 BST} + {-195084000 0 0 GMT} + {-182383200 3600 1 BST} + {-163634400 0 0 GMT} + {-150933600 3600 1 BST} + {-132184800 0 0 GMT} + {-119484000 3600 1 BST} + {-100735200 0 0 GMT} + {-88034400 3600 1 BST} + {-68680800 0 0 GMT} + {-59004000 3600 1 BST} + {-37238400 3600 0 BST} + {57722400 0 0 GMT} + {69818400 3600 1 BST} + {89172000 0 0 GMT} + {101268000 3600 1 BST} + {120621600 0 0 GMT} + {132717600 3600 1 BST} + {152071200 0 0 GMT} + {164167200 3600 1 BST} + {183520800 0 0 GMT} + {196221600 3600 1 BST} + {214970400 0 0 GMT} + {227671200 3600 1 BST} + {246420000 0 0 GMT} + {259120800 3600 1 BST} + {278474400 0 0 GMT} + {290570400 3600 1 BST} + {309924000 0 0 GMT} + {322020000 3600 1 BST} + {341373600 0 0 GMT} + {354675600 3600 1 BST} + {372819600 0 0 GMT} + {386125200 3600 1 BST} + {404269200 0 0 GMT} + {417574800 3600 1 BST} + {435718800 0 0 GMT} + {449024400 3600 1 BST} + {467773200 0 0 GMT} + {481078800 3600 1 BST} + {499222800 0 0 GMT} + {512528400 3600 1 BST} + {530672400 0 0 GMT} + {543978000 3600 1 BST} + {562122000 0 0 GMT} + {575427600 3600 1 BST} + {593571600 0 0 GMT} + {606877200 3600 1 BST} + {625626000 0 0 GMT} + {638326800 3600 1 BST} + {657075600 0 0 GMT} + {670381200 3600 1 BST} + {688525200 0 0 GMT} + {701830800 3600 1 BST} + {719974800 0 0 GMT} + {733280400 3600 1 BST} + {751424400 0 0 GMT} + {764730000 3600 1 BST} + {782874000 0 0 GMT} + {796179600 3600 1 BST} + {814323600 0 0 GMT} + {820454400 0 0 GMT} + {828234000 3600 1 BST} + {846378000 0 0 GMT} + {859683600 3600 1 BST} + {877827600 0 0 GMT} + {891133200 3600 1 BST} + {909277200 0 0 GMT} + {922582800 3600 1 BST} + {941331600 0 0 GMT} + {954032400 3600 1 BST} + {972781200 0 0 GMT} + {985482000 3600 1 BST} + {1004230800 0 0 GMT} + {1017536400 3600 1 BST} + {1035680400 0 0 GMT} + {1048986000 3600 1 BST} + {1067130000 0 0 GMT} + {1080435600 3600 1 BST} + {1099184400 0 0 GMT} + {1111885200 3600 1 BST} + {1130634000 0 0 GMT} + {1143334800 3600 1 BST} + {1162083600 0 0 GMT} + {1174784400 3600 1 BST} + {1193533200 0 0 GMT} + {1206838800 3600 1 BST} + {1224982800 0 0 GMT} + {1238288400 3600 1 BST} + {1256432400 0 0 GMT} + {1269738000 3600 1 BST} + {1288486800 0 0 GMT} + {1301187600 3600 1 BST} + {1319936400 0 0 GMT} + {1332637200 3600 1 BST} + {1351386000 0 0 GMT} + {1364691600 3600 1 BST} + {1382835600 0 0 GMT} + {1396141200 3600 1 BST} + {1414285200 0 0 GMT} + {1427590800 3600 1 BST} + {1445734800 0 0 GMT} + {1459040400 3600 1 BST} + {1477789200 0 0 GMT} + {1490490000 3600 1 BST} + {1509238800 0 0 GMT} + {1521939600 3600 1 BST} + {1540688400 0 0 GMT} + {1553994000 3600 1 BST} + {1572138000 0 0 GMT} + {1585443600 3600 1 BST} + {1603587600 0 0 GMT} + {1616893200 3600 1 BST} + {1635642000 0 0 GMT} + {1648342800 3600 1 BST} + {1667091600 0 0 GMT} + {1679792400 3600 1 BST} + {1698541200 0 0 GMT} + {1711846800 3600 1 BST} + {1729990800 0 0 GMT} + {1743296400 3600 1 BST} + {1761440400 0 0 GMT} + {1774746000 3600 1 BST} + {1792890000 0 0 GMT} + {1806195600 3600 1 BST} + {1824944400 0 0 GMT} + {1837645200 3600 1 BST} + {1856394000 0 0 GMT} + {1869094800 3600 1 BST} + {1887843600 0 0 GMT} + {1901149200 3600 1 BST} + {1919293200 0 0 GMT} + {1932598800 3600 1 BST} + {1950742800 0 0 GMT} + {1964048400 3600 1 BST} + {1982797200 0 0 GMT} + {1995498000 3600 1 BST} + {2014246800 0 0 GMT} + {2026947600 3600 1 BST} + {2045696400 0 0 GMT} + {2058397200 3600 1 BST} + {2077146000 0 0 GMT} + {2090451600 3600 1 BST} + {2108595600 0 0 GMT} + {2121901200 3600 1 BST} + {2140045200 0 0 GMT} + {2153350800 3600 1 BST} + {2172099600 0 0 GMT} + {2184800400 3600 1 BST} + {2203549200 0 0 GMT} + {2216250000 3600 1 BST} + {2234998800 0 0 GMT} + {2248304400 3600 1 BST} + {2266448400 0 0 GMT} + {2279754000 3600 1 BST} + {2297898000 0 0 GMT} + {2311203600 3600 1 BST} + {2329347600 0 0 GMT} + {2342653200 3600 1 BST} + {2361402000 0 0 GMT} + {2374102800 3600 1 BST} + {2392851600 0 0 GMT} + {2405552400 3600 1 BST} + {2424301200 0 0 GMT} + {2437606800 3600 1 BST} + {2455750800 0 0 GMT} + {2469056400 3600 1 BST} + {2487200400 0 0 GMT} + {2500506000 3600 1 BST} + {2519254800 0 0 GMT} + {2531955600 3600 1 BST} + {2550704400 0 0 GMT} + {2563405200 3600 1 BST} + {2582154000 0 0 GMT} + {2595459600 3600 1 BST} + {2613603600 0 0 GMT} + {2626909200 3600 1 BST} + {2645053200 0 0 GMT} + {2658358800 3600 1 BST} + {2676502800 0 0 GMT} + {2689808400 3600 1 BST} + {2708557200 0 0 GMT} + {2721258000 3600 1 BST} + {2740006800 0 0 GMT} + {2752707600 3600 1 BST} + {2771456400 0 0 GMT} + {2784762000 3600 1 BST} + {2802906000 0 0 GMT} + {2816211600 3600 1 BST} + {2834355600 0 0 GMT} + {2847661200 3600 1 BST} + {2866410000 0 0 GMT} + {2879110800 3600 1 BST} + {2897859600 0 0 GMT} + {2910560400 3600 1 BST} + {2929309200 0 0 GMT} + {2942010000 3600 1 BST} + {2960758800 0 0 GMT} + {2974064400 3600 1 BST} + {2992208400 0 0 GMT} + {3005514000 3600 1 BST} + {3023658000 0 0 GMT} + {3036963600 3600 1 BST} + {3055712400 0 0 GMT} + {3068413200 3600 1 BST} + {3087162000 0 0 GMT} + {3099862800 3600 1 BST} + {3118611600 0 0 GMT} + {3131917200 3600 1 BST} + {3150061200 0 0 GMT} + {3163366800 3600 1 BST} + {3181510800 0 0 GMT} + {3194816400 3600 1 BST} + {3212960400 0 0 GMT} + {3226266000 3600 1 BST} + {3245014800 0 0 GMT} + {3257715600 3600 1 BST} + {3276464400 0 0 GMT} + {3289165200 3600 1 BST} + {3307914000 0 0 GMT} + {3321219600 3600 1 BST} + {3339363600 0 0 GMT} + {3352669200 3600 1 BST} + {3370813200 0 0 GMT} + {3384118800 3600 1 BST} + {3402867600 0 0 GMT} + {3415568400 3600 1 BST} + {3434317200 0 0 GMT} + {3447018000 3600 1 BST} + {3465766800 0 0 GMT} + {3479072400 3600 1 BST} + {3497216400 0 0 GMT} + {3510522000 3600 1 BST} + {3528666000 0 0 GMT} + {3541971600 3600 1 BST} + {3560115600 0 0 GMT} + {3573421200 3600 1 BST} + {3592170000 0 0 GMT} + {3604870800 3600 1 BST} + {3623619600 0 0 GMT} + {3636320400 3600 1 BST} + {3655069200 0 0 GMT} + {3668374800 3600 1 BST} + {3686518800 0 0 GMT} + {3699824400 3600 1 BST} + {3717968400 0 0 GMT} + {3731274000 3600 1 BST} + {3750022800 0 0 GMT} + {3762723600 3600 1 BST} + {3781472400 0 0 GMT} + {3794173200 3600 1 BST} + {3812922000 0 0 GMT} + {3825622800 3600 1 BST} + {3844371600 0 0 GMT} + {3857677200 3600 1 BST} + {3875821200 0 0 GMT} + {3889126800 3600 1 BST} + {3907270800 0 0 GMT} + {3920576400 3600 1 BST} + {3939325200 0 0 GMT} + {3952026000 3600 1 BST} + {3970774800 0 0 GMT} + {3983475600 3600 1 BST} + {4002224400 0 0 GMT} + {4015530000 3600 1 BST} + {4033674000 0 0 GMT} + {4046979600 3600 1 BST} + {4065123600 0 0 GMT} + {4078429200 3600 1 BST} + {4096573200 0 0 GMT} +} diff --git a/library/tzdata/Europe/Luxembourg b/library/tzdata/Europe/Luxembourg index 2a88c4b..475213f 100644 --- a/library/tzdata/Europe/Luxembourg +++ b/library/tzdata/Europe/Luxembourg @@ -1,313 +1,313 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Luxembourg) { - {-9223372036854775808 1476 0 LMT} - {-2069713476 3600 0 CET} - {-1692496800 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1662343200 7200 1 CEST} - {-1650157200 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-1612659600 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585519200 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552258800 0 0 WET} - {-1539997200 3600 1 WEST} - {-1520550000 0 0 WET} - {-1507510800 3600 1 WEST} - {-1490572800 0 0 WET} - {-1473642000 3600 1 WEST} - {-1459119600 0 0 WET} - {-1444006800 3600 1 WEST} - {-1427673600 0 0 WET} - {-1411866000 3600 1 WEST} - {-1396224000 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364774400 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333324800 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301270400 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269813600 0 0 WET} - {-1253484000 3600 1 WEST} - {-1238364000 0 0 WET} - {-1221429600 3600 1 WEST} - {-1206914400 0 0 WET} - {-1191189600 3600 1 WEST} - {-1175464800 0 0 WET} - {-1160344800 3600 1 WEST} - {-1143410400 0 0 WET} - {-1127685600 3600 1 WEST} - {-1111960800 0 0 WET} - {-1096840800 3600 1 WEST} - {-1080511200 0 0 WET} - {-1063576800 3600 1 WEST} - {-1049061600 0 0 WET} - {-1033336800 3600 1 WEST} - {-1017612000 0 0 WET} - {-1002492000 3600 1 WEST} - {-986162400 0 0 WET} - {-969228000 3600 1 WEST} - {-950479200 0 0 WET} - {-942012000 3600 1 WEST} - {-935186400 7200 0 WEST} - {-857257200 3600 0 WET} - {-844556400 7200 1 WEST} - {-828226800 3600 0 WET} - {-812502000 7200 1 WEST} - {-797983200 3600 0 CET} - {-781052400 7200 1 CEST} - {-766623600 3600 0 CET} - {-745455600 7200 1 CEST} - {-733273200 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Luxembourg) { + {-9223372036854775808 1476 0 LMT} + {-2069713476 3600 0 CET} + {-1692496800 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1662343200 7200 1 CEST} + {-1650157200 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-1612659600 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585519200 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552258800 0 0 WET} + {-1539997200 3600 1 WEST} + {-1520550000 0 0 WET} + {-1507510800 3600 1 WEST} + {-1490572800 0 0 WET} + {-1473642000 3600 1 WEST} + {-1459119600 0 0 WET} + {-1444006800 3600 1 WEST} + {-1427673600 0 0 WET} + {-1411866000 3600 1 WEST} + {-1396224000 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364774400 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333324800 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301270400 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269813600 0 0 WET} + {-1253484000 3600 1 WEST} + {-1238364000 0 0 WET} + {-1221429600 3600 1 WEST} + {-1206914400 0 0 WET} + {-1191189600 3600 1 WEST} + {-1175464800 0 0 WET} + {-1160344800 3600 1 WEST} + {-1143410400 0 0 WET} + {-1127685600 3600 1 WEST} + {-1111960800 0 0 WET} + {-1096840800 3600 1 WEST} + {-1080511200 0 0 WET} + {-1063576800 3600 1 WEST} + {-1049061600 0 0 WET} + {-1033336800 3600 1 WEST} + {-1017612000 0 0 WET} + {-1002492000 3600 1 WEST} + {-986162400 0 0 WET} + {-969228000 3600 1 WEST} + {-950479200 0 0 WET} + {-942012000 3600 1 WEST} + {-935186400 7200 0 WEST} + {-857257200 3600 0 WET} + {-844556400 7200 1 WEST} + {-828226800 3600 0 WET} + {-812502000 7200 1 WEST} + {-797983200 3600 0 CET} + {-781052400 7200 1 CEST} + {-766623600 3600 0 CET} + {-745455600 7200 1 CEST} + {-733273200 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Madrid b/library/tzdata/Europe/Madrid index 50de14f..ff126aa 100644 --- a/library/tzdata/Europe/Madrid +++ b/library/tzdata/Europe/Madrid @@ -1,294 +1,294 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Madrid) { - {-9223372036854775808 -884 0 LMT} - {-2177451916 0 0 WET} - {-1661734800 3600 1 WEST} - {-1648429200 0 0 WET} - {-1631926800 3600 1 WEST} - {-1616893200 0 0 WET} - {-1601254800 3600 1 WEST} - {-1585357200 0 0 WET} - {-1442451600 3600 1 WEST} - {-1427677200 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269824400 0 0 WET} - {-1029114000 3600 1 WEST} - {-1017622800 0 0 WET} - {-1002848400 3600 1 WEST} - {-986173200 0 0 WET} - {-969238800 3600 1 WEST} - {-954118800 0 0 WET} - {-940208400 3600 1 WEST} - {-873079200 7200 1 WEMT} - {-862538400 3600 1 WEST} - {-842839200 7200 1 WEMT} - {-828237600 3600 1 WEST} - {-811389600 7200 1 WEMT} - {-796010400 3600 1 WEST} - {-779940000 7200 1 WEMT} - {-765421200 3600 1 WEST} - {-748490400 7200 1 WEMT} - {-733881600 3600 0 CET} - {-652327200 7200 1 CEST} - {-639190800 3600 0 CET} - {135122400 7200 1 CEST} - {150246000 3600 0 CET} - {167176800 7200 1 CEST} - {181695600 3600 0 CET} - {196812000 7200 1 CEST} - {212540400 3600 0 CET} - {228866400 7200 1 CEST} - {243990000 3600 0 CET} - {260402400 7200 1 CEST} - {276044400 3600 0 CET} - {283993200 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Madrid) { + {-9223372036854775808 -884 0 LMT} + {-2177451916 0 0 WET} + {-1661734800 3600 1 WEST} + {-1648429200 0 0 WET} + {-1631926800 3600 1 WEST} + {-1616893200 0 0 WET} + {-1601254800 3600 1 WEST} + {-1585357200 0 0 WET} + {-1442451600 3600 1 WEST} + {-1427677200 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269824400 0 0 WET} + {-1029114000 3600 1 WEST} + {-1017622800 0 0 WET} + {-1002848400 3600 1 WEST} + {-986173200 0 0 WET} + {-969238800 3600 1 WEST} + {-954118800 0 0 WET} + {-940208400 3600 1 WEST} + {-873079200 7200 1 WEMT} + {-862538400 3600 1 WEST} + {-842839200 7200 1 WEMT} + {-828237600 3600 1 WEST} + {-811389600 7200 1 WEMT} + {-796010400 3600 1 WEST} + {-779940000 7200 1 WEMT} + {-765421200 3600 1 WEST} + {-748490400 7200 1 WEMT} + {-733881600 3600 0 CET} + {-652327200 7200 1 CEST} + {-639190800 3600 0 CET} + {135122400 7200 1 CEST} + {150246000 3600 0 CET} + {167176800 7200 1 CEST} + {181695600 3600 0 CET} + {196812000 7200 1 CEST} + {212540400 3600 0 CET} + {228866400 7200 1 CEST} + {243990000 3600 0 CET} + {260402400 7200 1 CEST} + {276044400 3600 0 CET} + {283993200 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Malta b/library/tzdata/Europe/Malta index b84f68e..1392c4e 100644 --- a/library/tzdata/Europe/Malta +++ b/library/tzdata/Europe/Malta @@ -1,299 +1,299 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Malta) { - {-9223372036854775808 3484 0 LMT} - {-2403478684 3600 0 CET} - {-1690851600 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1664758800 7200 1 CEST} - {-1649034000 3600 0 CET} - {-1635123600 7200 1 CEST} - {-1616979600 3600 0 CET} - {-1604278800 7200 1 CEST} - {-1585530000 3600 0 CET} - {-1571014800 7200 1 CEST} - {-1555290000 3600 0 CET} - {-932432400 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 0 CEST} - {-766717200 3600 0 CET} - {-750898800 7200 1 CEST} - {-733359600 3600 0 CET} - {-719456400 7200 1 CEST} - {-701917200 3600 0 CET} - {-689209200 7200 1 CEST} - {-670460400 3600 0 CET} - {-114051600 7200 1 CEST} - {-103168800 3600 0 CET} - {-81997200 7200 1 CEST} - {-71719200 3600 0 CET} - {-50547600 7200 1 CEST} - {-40269600 3600 0 CET} - {-18493200 7200 1 CEST} - {-8215200 3600 0 CET} - {12956400 7200 1 CEST} - {23234400 3600 0 CET} - {43801200 7200 1 CEST} - {54687600 3600 0 CET} - {75855600 7200 1 CEST} - {86738400 3600 0 CET} - {102380400 7200 0 CEST} - {118105200 3600 0 CET} - {135730800 7200 1 CEST} - {148518000 3600 0 CET} - {167187600 7200 1 CEST} - {180489600 3600 0 CET} - {198637200 7200 1 CEST} - {211939200 3600 0 CET} - {230086800 7200 1 CEST} - {243388800 3600 0 CET} - {261536400 7200 1 CEST} - {274838400 3600 0 CET} - {292986000 7200 1 CEST} - {306288000 3600 0 CET} - {323312400 7200 1 CEST} - {338342400 3600 0 CET} - {347151600 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Malta) { + {-9223372036854775808 3484 0 LMT} + {-2403478684 3600 0 CET} + {-1690851600 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1664758800 7200 1 CEST} + {-1649034000 3600 0 CET} + {-1635123600 7200 1 CEST} + {-1616979600 3600 0 CET} + {-1604278800 7200 1 CEST} + {-1585530000 3600 0 CET} + {-1571014800 7200 1 CEST} + {-1555290000 3600 0 CET} + {-932432400 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 0 CEST} + {-766717200 3600 0 CET} + {-750898800 7200 1 CEST} + {-733359600 3600 0 CET} + {-719456400 7200 1 CEST} + {-701917200 3600 0 CET} + {-689209200 7200 1 CEST} + {-670460400 3600 0 CET} + {-114051600 7200 1 CEST} + {-103168800 3600 0 CET} + {-81997200 7200 1 CEST} + {-71719200 3600 0 CET} + {-50547600 7200 1 CEST} + {-40269600 3600 0 CET} + {-18493200 7200 1 CEST} + {-8215200 3600 0 CET} + {12956400 7200 1 CEST} + {23234400 3600 0 CET} + {43801200 7200 1 CEST} + {54687600 3600 0 CET} + {75855600 7200 1 CEST} + {86738400 3600 0 CET} + {102380400 7200 0 CEST} + {118105200 3600 0 CET} + {135730800 7200 1 CEST} + {148518000 3600 0 CET} + {167187600 7200 1 CEST} + {180489600 3600 0 CET} + {198637200 7200 1 CEST} + {211939200 3600 0 CET} + {230086800 7200 1 CEST} + {243388800 3600 0 CET} + {261536400 7200 1 CEST} + {274838400 3600 0 CET} + {292986000 7200 1 CEST} + {306288000 3600 0 CET} + {323312400 7200 1 CEST} + {338342400 3600 0 CET} + {347151600 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Mariehamn b/library/tzdata/Europe/Mariehamn index 26d9177..6856579 100644 --- a/library/tzdata/Europe/Mariehamn +++ b/library/tzdata/Europe/Mariehamn @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Helsinki)]} { - LoadTimeZoneFile Europe/Helsinki -} -set TZData(:Europe/Mariehamn) $TZData(:Europe/Helsinki) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Helsinki)]} { + LoadTimeZoneFile Europe/Helsinki +} +set TZData(:Europe/Mariehamn) $TZData(:Europe/Helsinki) diff --git a/library/tzdata/Europe/Minsk b/library/tzdata/Europe/Minsk index d7d9434..21ecf17 100644 --- a/library/tzdata/Europe/Minsk +++ b/library/tzdata/Europe/Minsk @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Minsk) { - {-9223372036854775808 6616 0 LMT} - {-2840147416 6600 0 MMT} - {-1441158600 7200 0 EET} - {-1247536800 10800 0 MSK} - {-899780400 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-804646800 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {670374000 10800 1 EEST} - {686102400 7200 0 EET} - {701820000 10800 1 EEST} - {717544800 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {846374400 7200 0 EET} - {859680000 10800 1 EEST} - {877824000 7200 0 EET} - {891129600 10800 1 EEST} - {909273600 7200 0 EET} - {922579200 10800 1 EEST} - {941328000 7200 0 EET} - {954028800 10800 1 EEST} - {972777600 7200 0 EET} - {985478400 10800 1 EEST} - {1004227200 7200 0 EET} - {1017532800 10800 1 EEST} - {1035676800 7200 0 EET} - {1048982400 10800 1 EEST} - {1067126400 7200 0 EET} - {1080432000 10800 1 EEST} - {1099180800 7200 0 EET} - {1111881600 10800 1 EEST} - {1130630400 7200 0 EET} - {1143331200 10800 1 EEST} - {1162080000 7200 0 EET} - {1174780800 10800 1 EEST} - {1193529600 7200 0 EET} - {1206835200 10800 1 EEST} - {1224979200 7200 0 EET} - {1238284800 10800 1 EEST} - {1256428800 7200 0 EET} - {1269734400 10800 1 EEST} - {1288483200 7200 0 EET} - {1301184000 10800 1 EEST} - {1319932800 7200 0 EET} - {1332633600 10800 1 EEST} - {1351382400 7200 0 EET} - {1364688000 10800 1 EEST} - {1382832000 7200 0 EET} - {1396137600 10800 1 EEST} - {1414281600 7200 0 EET} - {1427587200 10800 1 EEST} - {1445731200 7200 0 EET} - {1459036800 10800 1 EEST} - {1477785600 7200 0 EET} - {1490486400 10800 1 EEST} - {1509235200 7200 0 EET} - {1521936000 10800 1 EEST} - {1540684800 7200 0 EET} - {1553990400 10800 1 EEST} - {1572134400 7200 0 EET} - {1585440000 10800 1 EEST} - {1603584000 7200 0 EET} - {1616889600 10800 1 EEST} - {1635638400 7200 0 EET} - {1648339200 10800 1 EEST} - {1667088000 7200 0 EET} - {1679788800 10800 1 EEST} - {1698537600 7200 0 EET} - {1711843200 10800 1 EEST} - {1729987200 7200 0 EET} - {1743292800 10800 1 EEST} - {1761436800 7200 0 EET} - {1774742400 10800 1 EEST} - {1792886400 7200 0 EET} - {1806192000 10800 1 EEST} - {1824940800 7200 0 EET} - {1837641600 10800 1 EEST} - {1856390400 7200 0 EET} - {1869091200 10800 1 EEST} - {1887840000 7200 0 EET} - {1901145600 10800 1 EEST} - {1919289600 7200 0 EET} - {1932595200 10800 1 EEST} - {1950739200 7200 0 EET} - {1964044800 10800 1 EEST} - {1982793600 7200 0 EET} - {1995494400 10800 1 EEST} - {2014243200 7200 0 EET} - {2026944000 10800 1 EEST} - {2045692800 7200 0 EET} - {2058393600 10800 1 EEST} - {2077142400 7200 0 EET} - {2090448000 10800 1 EEST} - {2108592000 7200 0 EET} - {2121897600 10800 1 EEST} - {2140041600 7200 0 EET} - {2153347200 10800 1 EEST} - {2172096000 7200 0 EET} - {2184796800 10800 1 EEST} - {2203545600 7200 0 EET} - {2216246400 10800 1 EEST} - {2234995200 7200 0 EET} - {2248300800 10800 1 EEST} - {2266444800 7200 0 EET} - {2279750400 10800 1 EEST} - {2297894400 7200 0 EET} - {2311200000 10800 1 EEST} - {2329344000 7200 0 EET} - {2342649600 10800 1 EEST} - {2361398400 7200 0 EET} - {2374099200 10800 1 EEST} - {2392848000 7200 0 EET} - {2405548800 10800 1 EEST} - {2424297600 7200 0 EET} - {2437603200 10800 1 EEST} - {2455747200 7200 0 EET} - {2469052800 10800 1 EEST} - {2487196800 7200 0 EET} - {2500502400 10800 1 EEST} - {2519251200 7200 0 EET} - {2531952000 10800 1 EEST} - {2550700800 7200 0 EET} - {2563401600 10800 1 EEST} - {2582150400 7200 0 EET} - {2595456000 10800 1 EEST} - {2613600000 7200 0 EET} - {2626905600 10800 1 EEST} - {2645049600 7200 0 EET} - {2658355200 10800 1 EEST} - {2676499200 7200 0 EET} - {2689804800 10800 1 EEST} - {2708553600 7200 0 EET} - {2721254400 10800 1 EEST} - {2740003200 7200 0 EET} - {2752704000 10800 1 EEST} - {2771452800 7200 0 EET} - {2784758400 10800 1 EEST} - {2802902400 7200 0 EET} - {2816208000 10800 1 EEST} - {2834352000 7200 0 EET} - {2847657600 10800 1 EEST} - {2866406400 7200 0 EET} - {2879107200 10800 1 EEST} - {2897856000 7200 0 EET} - {2910556800 10800 1 EEST} - {2929305600 7200 0 EET} - {2942006400 10800 1 EEST} - {2960755200 7200 0 EET} - {2974060800 10800 1 EEST} - {2992204800 7200 0 EET} - {3005510400 10800 1 EEST} - {3023654400 7200 0 EET} - {3036960000 10800 1 EEST} - {3055708800 7200 0 EET} - {3068409600 10800 1 EEST} - {3087158400 7200 0 EET} - {3099859200 10800 1 EEST} - {3118608000 7200 0 EET} - {3131913600 10800 1 EEST} - {3150057600 7200 0 EET} - {3163363200 10800 1 EEST} - {3181507200 7200 0 EET} - {3194812800 10800 1 EEST} - {3212956800 7200 0 EET} - {3226262400 10800 1 EEST} - {3245011200 7200 0 EET} - {3257712000 10800 1 EEST} - {3276460800 7200 0 EET} - {3289161600 10800 1 EEST} - {3307910400 7200 0 EET} - {3321216000 10800 1 EEST} - {3339360000 7200 0 EET} - {3352665600 10800 1 EEST} - {3370809600 7200 0 EET} - {3384115200 10800 1 EEST} - {3402864000 7200 0 EET} - {3415564800 10800 1 EEST} - {3434313600 7200 0 EET} - {3447014400 10800 1 EEST} - {3465763200 7200 0 EET} - {3479068800 10800 1 EEST} - {3497212800 7200 0 EET} - {3510518400 10800 1 EEST} - {3528662400 7200 0 EET} - {3541968000 10800 1 EEST} - {3560112000 7200 0 EET} - {3573417600 10800 1 EEST} - {3592166400 7200 0 EET} - {3604867200 10800 1 EEST} - {3623616000 7200 0 EET} - {3636316800 10800 1 EEST} - {3655065600 7200 0 EET} - {3668371200 10800 1 EEST} - {3686515200 7200 0 EET} - {3699820800 10800 1 EEST} - {3717964800 7200 0 EET} - {3731270400 10800 1 EEST} - {3750019200 7200 0 EET} - {3762720000 10800 1 EEST} - {3781468800 7200 0 EET} - {3794169600 10800 1 EEST} - {3812918400 7200 0 EET} - {3825619200 10800 1 EEST} - {3844368000 7200 0 EET} - {3857673600 10800 1 EEST} - {3875817600 7200 0 EET} - {3889123200 10800 1 EEST} - {3907267200 7200 0 EET} - {3920572800 10800 1 EEST} - {3939321600 7200 0 EET} - {3952022400 10800 1 EEST} - {3970771200 7200 0 EET} - {3983472000 10800 1 EEST} - {4002220800 7200 0 EET} - {4015526400 10800 1 EEST} - {4033670400 7200 0 EET} - {4046976000 10800 1 EEST} - {4065120000 7200 0 EET} - {4078425600 10800 1 EEST} - {4096569600 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Minsk) { + {-9223372036854775808 6616 0 LMT} + {-2840147416 6600 0 MMT} + {-1441158600 7200 0 EET} + {-1247536800 10800 0 MSK} + {-899780400 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-804646800 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {670374000 10800 1 EEST} + {686102400 7200 0 EET} + {701820000 10800 1 EEST} + {717544800 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {846374400 7200 0 EET} + {859680000 10800 1 EEST} + {877824000 7200 0 EET} + {891129600 10800 1 EEST} + {909273600 7200 0 EET} + {922579200 10800 1 EEST} + {941328000 7200 0 EET} + {954028800 10800 1 EEST} + {972777600 7200 0 EET} + {985478400 10800 1 EEST} + {1004227200 7200 0 EET} + {1017532800 10800 1 EEST} + {1035676800 7200 0 EET} + {1048982400 10800 1 EEST} + {1067126400 7200 0 EET} + {1080432000 10800 1 EEST} + {1099180800 7200 0 EET} + {1111881600 10800 1 EEST} + {1130630400 7200 0 EET} + {1143331200 10800 1 EEST} + {1162080000 7200 0 EET} + {1174780800 10800 1 EEST} + {1193529600 7200 0 EET} + {1206835200 10800 1 EEST} + {1224979200 7200 0 EET} + {1238284800 10800 1 EEST} + {1256428800 7200 0 EET} + {1269734400 10800 1 EEST} + {1288483200 7200 0 EET} + {1301184000 10800 1 EEST} + {1319932800 7200 0 EET} + {1332633600 10800 1 EEST} + {1351382400 7200 0 EET} + {1364688000 10800 1 EEST} + {1382832000 7200 0 EET} + {1396137600 10800 1 EEST} + {1414281600 7200 0 EET} + {1427587200 10800 1 EEST} + {1445731200 7200 0 EET} + {1459036800 10800 1 EEST} + {1477785600 7200 0 EET} + {1490486400 10800 1 EEST} + {1509235200 7200 0 EET} + {1521936000 10800 1 EEST} + {1540684800 7200 0 EET} + {1553990400 10800 1 EEST} + {1572134400 7200 0 EET} + {1585440000 10800 1 EEST} + {1603584000 7200 0 EET} + {1616889600 10800 1 EEST} + {1635638400 7200 0 EET} + {1648339200 10800 1 EEST} + {1667088000 7200 0 EET} + {1679788800 10800 1 EEST} + {1698537600 7200 0 EET} + {1711843200 10800 1 EEST} + {1729987200 7200 0 EET} + {1743292800 10800 1 EEST} + {1761436800 7200 0 EET} + {1774742400 10800 1 EEST} + {1792886400 7200 0 EET} + {1806192000 10800 1 EEST} + {1824940800 7200 0 EET} + {1837641600 10800 1 EEST} + {1856390400 7200 0 EET} + {1869091200 10800 1 EEST} + {1887840000 7200 0 EET} + {1901145600 10800 1 EEST} + {1919289600 7200 0 EET} + {1932595200 10800 1 EEST} + {1950739200 7200 0 EET} + {1964044800 10800 1 EEST} + {1982793600 7200 0 EET} + {1995494400 10800 1 EEST} + {2014243200 7200 0 EET} + {2026944000 10800 1 EEST} + {2045692800 7200 0 EET} + {2058393600 10800 1 EEST} + {2077142400 7200 0 EET} + {2090448000 10800 1 EEST} + {2108592000 7200 0 EET} + {2121897600 10800 1 EEST} + {2140041600 7200 0 EET} + {2153347200 10800 1 EEST} + {2172096000 7200 0 EET} + {2184796800 10800 1 EEST} + {2203545600 7200 0 EET} + {2216246400 10800 1 EEST} + {2234995200 7200 0 EET} + {2248300800 10800 1 EEST} + {2266444800 7200 0 EET} + {2279750400 10800 1 EEST} + {2297894400 7200 0 EET} + {2311200000 10800 1 EEST} + {2329344000 7200 0 EET} + {2342649600 10800 1 EEST} + {2361398400 7200 0 EET} + {2374099200 10800 1 EEST} + {2392848000 7200 0 EET} + {2405548800 10800 1 EEST} + {2424297600 7200 0 EET} + {2437603200 10800 1 EEST} + {2455747200 7200 0 EET} + {2469052800 10800 1 EEST} + {2487196800 7200 0 EET} + {2500502400 10800 1 EEST} + {2519251200 7200 0 EET} + {2531952000 10800 1 EEST} + {2550700800 7200 0 EET} + {2563401600 10800 1 EEST} + {2582150400 7200 0 EET} + {2595456000 10800 1 EEST} + {2613600000 7200 0 EET} + {2626905600 10800 1 EEST} + {2645049600 7200 0 EET} + {2658355200 10800 1 EEST} + {2676499200 7200 0 EET} + {2689804800 10800 1 EEST} + {2708553600 7200 0 EET} + {2721254400 10800 1 EEST} + {2740003200 7200 0 EET} + {2752704000 10800 1 EEST} + {2771452800 7200 0 EET} + {2784758400 10800 1 EEST} + {2802902400 7200 0 EET} + {2816208000 10800 1 EEST} + {2834352000 7200 0 EET} + {2847657600 10800 1 EEST} + {2866406400 7200 0 EET} + {2879107200 10800 1 EEST} + {2897856000 7200 0 EET} + {2910556800 10800 1 EEST} + {2929305600 7200 0 EET} + {2942006400 10800 1 EEST} + {2960755200 7200 0 EET} + {2974060800 10800 1 EEST} + {2992204800 7200 0 EET} + {3005510400 10800 1 EEST} + {3023654400 7200 0 EET} + {3036960000 10800 1 EEST} + {3055708800 7200 0 EET} + {3068409600 10800 1 EEST} + {3087158400 7200 0 EET} + {3099859200 10800 1 EEST} + {3118608000 7200 0 EET} + {3131913600 10800 1 EEST} + {3150057600 7200 0 EET} + {3163363200 10800 1 EEST} + {3181507200 7200 0 EET} + {3194812800 10800 1 EEST} + {3212956800 7200 0 EET} + {3226262400 10800 1 EEST} + {3245011200 7200 0 EET} + {3257712000 10800 1 EEST} + {3276460800 7200 0 EET} + {3289161600 10800 1 EEST} + {3307910400 7200 0 EET} + {3321216000 10800 1 EEST} + {3339360000 7200 0 EET} + {3352665600 10800 1 EEST} + {3370809600 7200 0 EET} + {3384115200 10800 1 EEST} + {3402864000 7200 0 EET} + {3415564800 10800 1 EEST} + {3434313600 7200 0 EET} + {3447014400 10800 1 EEST} + {3465763200 7200 0 EET} + {3479068800 10800 1 EEST} + {3497212800 7200 0 EET} + {3510518400 10800 1 EEST} + {3528662400 7200 0 EET} + {3541968000 10800 1 EEST} + {3560112000 7200 0 EET} + {3573417600 10800 1 EEST} + {3592166400 7200 0 EET} + {3604867200 10800 1 EEST} + {3623616000 7200 0 EET} + {3636316800 10800 1 EEST} + {3655065600 7200 0 EET} + {3668371200 10800 1 EEST} + {3686515200 7200 0 EET} + {3699820800 10800 1 EEST} + {3717964800 7200 0 EET} + {3731270400 10800 1 EEST} + {3750019200 7200 0 EET} + {3762720000 10800 1 EEST} + {3781468800 7200 0 EET} + {3794169600 10800 1 EEST} + {3812918400 7200 0 EET} + {3825619200 10800 1 EEST} + {3844368000 7200 0 EET} + {3857673600 10800 1 EEST} + {3875817600 7200 0 EET} + {3889123200 10800 1 EEST} + {3907267200 7200 0 EET} + {3920572800 10800 1 EEST} + {3939321600 7200 0 EET} + {3952022400 10800 1 EEST} + {3970771200 7200 0 EET} + {3983472000 10800 1 EEST} + {4002220800 7200 0 EET} + {4015526400 10800 1 EEST} + {4033670400 7200 0 EET} + {4046976000 10800 1 EEST} + {4065120000 7200 0 EET} + {4078425600 10800 1 EEST} + {4096569600 7200 0 EET} +} diff --git a/library/tzdata/Europe/Monaco b/library/tzdata/Europe/Monaco index f887b0b..99a8b48 100644 --- a/library/tzdata/Europe/Monaco +++ b/library/tzdata/Europe/Monaco @@ -1,315 +1,315 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Monaco) { - {-9223372036854775808 1772 0 LMT} - {-2486680172 561 0 PMT} - {-1855958961 0 0 WET} - {-1689814800 3600 1 WEST} - {-1680397200 0 0 WET} - {-1665363600 3600 1 WEST} - {-1648342800 0 0 WET} - {-1635123600 3600 1 WEST} - {-1616893200 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585443600 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552266000 0 0 WET} - {-1539997200 3600 1 WEST} - {-1520557200 0 0 WET} - {-1507510800 3600 1 WEST} - {-1490576400 0 0 WET} - {-1470618000 3600 1 WEST} - {-1459126800 0 0 WET} - {-1444006800 3600 1 WEST} - {-1427677200 0 0 WET} - {-1411952400 3600 1 WEST} - {-1396227600 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269824400 0 0 WET} - {-1253494800 3600 1 WEST} - {-1238374800 0 0 WET} - {-1221440400 3600 1 WEST} - {-1206925200 0 0 WET} - {-1191200400 3600 1 WEST} - {-1175475600 0 0 WET} - {-1160355600 3600 1 WEST} - {-1143421200 0 0 WET} - {-1127696400 3600 1 WEST} - {-1111971600 0 0 WET} - {-1096851600 3600 1 WEST} - {-1080522000 0 0 WET} - {-1063587600 3600 1 WEST} - {-1049072400 0 0 WET} - {-1033347600 3600 1 WEST} - {-1017622800 0 0 WET} - {-1002502800 3600 1 WEST} - {-986173200 0 0 WET} - {-969238800 3600 1 WEST} - {-950490000 0 0 WET} - {-942012000 3600 1 WEST} - {-904438800 7200 1 WEMT} - {-891136800 3600 1 WEST} - {-877827600 7200 1 WEMT} - {-857257200 3600 1 WEST} - {-844556400 7200 1 WEMT} - {-828226800 3600 1 WEST} - {-812502000 7200 1 WEMT} - {-796266000 3600 1 WEST} - {-781052400 7200 1 WEMT} - {-766616400 3600 0 CET} - {196819200 7200 1 CEST} - {212540400 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Monaco) { + {-9223372036854775808 1772 0 LMT} + {-2486680172 561 0 PMT} + {-1855958961 0 0 WET} + {-1689814800 3600 1 WEST} + {-1680397200 0 0 WET} + {-1665363600 3600 1 WEST} + {-1648342800 0 0 WET} + {-1635123600 3600 1 WEST} + {-1616893200 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585443600 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552266000 0 0 WET} + {-1539997200 3600 1 WEST} + {-1520557200 0 0 WET} + {-1507510800 3600 1 WEST} + {-1490576400 0 0 WET} + {-1470618000 3600 1 WEST} + {-1459126800 0 0 WET} + {-1444006800 3600 1 WEST} + {-1427677200 0 0 WET} + {-1411952400 3600 1 WEST} + {-1396227600 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269824400 0 0 WET} + {-1253494800 3600 1 WEST} + {-1238374800 0 0 WET} + {-1221440400 3600 1 WEST} + {-1206925200 0 0 WET} + {-1191200400 3600 1 WEST} + {-1175475600 0 0 WET} + {-1160355600 3600 1 WEST} + {-1143421200 0 0 WET} + {-1127696400 3600 1 WEST} + {-1111971600 0 0 WET} + {-1096851600 3600 1 WEST} + {-1080522000 0 0 WET} + {-1063587600 3600 1 WEST} + {-1049072400 0 0 WET} + {-1033347600 3600 1 WEST} + {-1017622800 0 0 WET} + {-1002502800 3600 1 WEST} + {-986173200 0 0 WET} + {-969238800 3600 1 WEST} + {-950490000 0 0 WET} + {-942012000 3600 1 WEST} + {-904438800 7200 1 WEMT} + {-891136800 3600 1 WEST} + {-877827600 7200 1 WEMT} + {-857257200 3600 1 WEST} + {-844556400 7200 1 WEMT} + {-828226800 3600 1 WEST} + {-812502000 7200 1 WEMT} + {-796266000 3600 1 WEST} + {-781052400 7200 1 WEMT} + {-766616400 3600 0 CET} + {196819200 7200 1 CEST} + {212540400 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Moscow b/library/tzdata/Europe/Moscow index 9acbd2c..1e1bb24 100644 --- a/library/tzdata/Europe/Moscow +++ b/library/tzdata/Europe/Moscow @@ -1,260 +1,260 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Moscow) { - {-9223372036854775808 9020 0 LMT} - {-2840149820 9000 0 MMT} - {-1688265000 9048 0 MMT} - {-1656819048 12648 1 MST} - {-1641353448 9048 0 MMT} - {-1627965048 16248 1 MDST} - {-1618716648 12648 1 MST} - {-1596429048 16248 1 MDST} - {-1593822648 14400 0 MSD} - {-1589860800 10800 0 MSK} - {-1542427200 14400 1 MSD} - {-1539493200 18000 1 MSD} - {-1525323600 14400 1 MSD} - {-1522728000 10800 0 MSK} - {-1491188400 7200 0 EET} - {-1247536800 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {638319600 14400 1 MSD} - {654649200 10800 0 MSK} - {670374000 7200 0 EEMMTT} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {695779200 10800 0 MSD} - {701812800 14400 1 MSD} - {717534000 10800 0 MSK} - {733273200 14400 1 MSD} - {748998000 10800 0 MSK} - {764722800 14400 1 MSD} - {780447600 10800 0 MSK} - {796172400 14400 1 MSD} - {811897200 10800 0 MSK} - {828226800 14400 1 MSD} - {846370800 10800 0 MSK} - {859676400 14400 1 MSD} - {877820400 10800 0 MSK} - {891126000 14400 1 MSD} - {909270000 10800 0 MSK} - {922575600 14400 1 MSD} - {941324400 10800 0 MSK} - {954025200 14400 1 MSD} - {972774000 10800 0 MSK} - {985474800 14400 1 MSD} - {1004223600 10800 0 MSK} - {1017529200 14400 1 MSD} - {1035673200 10800 0 MSK} - {1048978800 14400 1 MSD} - {1067122800 10800 0 MSK} - {1080428400 14400 1 MSD} - {1099177200 10800 0 MSK} - {1111878000 14400 1 MSD} - {1130626800 10800 0 MSK} - {1143327600 14400 1 MSD} - {1162076400 10800 0 MSK} - {1174777200 14400 1 MSD} - {1193526000 10800 0 MSK} - {1206831600 14400 1 MSD} - {1224975600 10800 0 MSK} - {1238281200 14400 1 MSD} - {1256425200 10800 0 MSK} - {1269730800 14400 1 MSD} - {1288479600 10800 0 MSK} - {1301180400 14400 1 MSD} - {1319929200 10800 0 MSK} - {1332630000 14400 1 MSD} - {1351378800 10800 0 MSK} - {1364684400 14400 1 MSD} - {1382828400 10800 0 MSK} - {1396134000 14400 1 MSD} - {1414278000 10800 0 MSK} - {1427583600 14400 1 MSD} - {1445727600 10800 0 MSK} - {1459033200 14400 1 MSD} - {1477782000 10800 0 MSK} - {1490482800 14400 1 MSD} - {1509231600 10800 0 MSK} - {1521932400 14400 1 MSD} - {1540681200 10800 0 MSK} - {1553986800 14400 1 MSD} - {1572130800 10800 0 MSK} - {1585436400 14400 1 MSD} - {1603580400 10800 0 MSK} - {1616886000 14400 1 MSD} - {1635634800 10800 0 MSK} - {1648335600 14400 1 MSD} - {1667084400 10800 0 MSK} - {1679785200 14400 1 MSD} - {1698534000 10800 0 MSK} - {1711839600 14400 1 MSD} - {1729983600 10800 0 MSK} - {1743289200 14400 1 MSD} - {1761433200 10800 0 MSK} - {1774738800 14400 1 MSD} - {1792882800 10800 0 MSK} - {1806188400 14400 1 MSD} - {1824937200 10800 0 MSK} - {1837638000 14400 1 MSD} - {1856386800 10800 0 MSK} - {1869087600 14400 1 MSD} - {1887836400 10800 0 MSK} - {1901142000 14400 1 MSD} - {1919286000 10800 0 MSK} - {1932591600 14400 1 MSD} - {1950735600 10800 0 MSK} - {1964041200 14400 1 MSD} - {1982790000 10800 0 MSK} - {1995490800 14400 1 MSD} - {2014239600 10800 0 MSK} - {2026940400 14400 1 MSD} - {2045689200 10800 0 MSK} - {2058390000 14400 1 MSD} - {2077138800 10800 0 MSK} - {2090444400 14400 1 MSD} - {2108588400 10800 0 MSK} - {2121894000 14400 1 MSD} - {2140038000 10800 0 MSK} - {2153343600 14400 1 MSD} - {2172092400 10800 0 MSK} - {2184793200 14400 1 MSD} - {2203542000 10800 0 MSK} - {2216242800 14400 1 MSD} - {2234991600 10800 0 MSK} - {2248297200 14400 1 MSD} - {2266441200 10800 0 MSK} - {2279746800 14400 1 MSD} - {2297890800 10800 0 MSK} - {2311196400 14400 1 MSD} - {2329340400 10800 0 MSK} - {2342646000 14400 1 MSD} - {2361394800 10800 0 MSK} - {2374095600 14400 1 MSD} - {2392844400 10800 0 MSK} - {2405545200 14400 1 MSD} - {2424294000 10800 0 MSK} - {2437599600 14400 1 MSD} - {2455743600 10800 0 MSK} - {2469049200 14400 1 MSD} - {2487193200 10800 0 MSK} - {2500498800 14400 1 MSD} - {2519247600 10800 0 MSK} - {2531948400 14400 1 MSD} - {2550697200 10800 0 MSK} - {2563398000 14400 1 MSD} - {2582146800 10800 0 MSK} - {2595452400 14400 1 MSD} - {2613596400 10800 0 MSK} - {2626902000 14400 1 MSD} - {2645046000 10800 0 MSK} - {2658351600 14400 1 MSD} - {2676495600 10800 0 MSK} - {2689801200 14400 1 MSD} - {2708550000 10800 0 MSK} - {2721250800 14400 1 MSD} - {2739999600 10800 0 MSK} - {2752700400 14400 1 MSD} - {2771449200 10800 0 MSK} - {2784754800 14400 1 MSD} - {2802898800 10800 0 MSK} - {2816204400 14400 1 MSD} - {2834348400 10800 0 MSK} - {2847654000 14400 1 MSD} - {2866402800 10800 0 MSK} - {2879103600 14400 1 MSD} - {2897852400 10800 0 MSK} - {2910553200 14400 1 MSD} - {2929302000 10800 0 MSK} - {2942002800 14400 1 MSD} - {2960751600 10800 0 MSK} - {2974057200 14400 1 MSD} - {2992201200 10800 0 MSK} - {3005506800 14400 1 MSD} - {3023650800 10800 0 MSK} - {3036956400 14400 1 MSD} - {3055705200 10800 0 MSK} - {3068406000 14400 1 MSD} - {3087154800 10800 0 MSK} - {3099855600 14400 1 MSD} - {3118604400 10800 0 MSK} - {3131910000 14400 1 MSD} - {3150054000 10800 0 MSK} - {3163359600 14400 1 MSD} - {3181503600 10800 0 MSK} - {3194809200 14400 1 MSD} - {3212953200 10800 0 MSK} - {3226258800 14400 1 MSD} - {3245007600 10800 0 MSK} - {3257708400 14400 1 MSD} - {3276457200 10800 0 MSK} - {3289158000 14400 1 MSD} - {3307906800 10800 0 MSK} - {3321212400 14400 1 MSD} - {3339356400 10800 0 MSK} - {3352662000 14400 1 MSD} - {3370806000 10800 0 MSK} - {3384111600 14400 1 MSD} - {3402860400 10800 0 MSK} - {3415561200 14400 1 MSD} - {3434310000 10800 0 MSK} - {3447010800 14400 1 MSD} - {3465759600 10800 0 MSK} - {3479065200 14400 1 MSD} - {3497209200 10800 0 MSK} - {3510514800 14400 1 MSD} - {3528658800 10800 0 MSK} - {3541964400 14400 1 MSD} - {3560108400 10800 0 MSK} - {3573414000 14400 1 MSD} - {3592162800 10800 0 MSK} - {3604863600 14400 1 MSD} - {3623612400 10800 0 MSK} - {3636313200 14400 1 MSD} - {3655062000 10800 0 MSK} - {3668367600 14400 1 MSD} - {3686511600 10800 0 MSK} - {3699817200 14400 1 MSD} - {3717961200 10800 0 MSK} - {3731266800 14400 1 MSD} - {3750015600 10800 0 MSK} - {3762716400 14400 1 MSD} - {3781465200 10800 0 MSK} - {3794166000 14400 1 MSD} - {3812914800 10800 0 MSK} - {3825615600 14400 1 MSD} - {3844364400 10800 0 MSK} - {3857670000 14400 1 MSD} - {3875814000 10800 0 MSK} - {3889119600 14400 1 MSD} - {3907263600 10800 0 MSK} - {3920569200 14400 1 MSD} - {3939318000 10800 0 MSK} - {3952018800 14400 1 MSD} - {3970767600 10800 0 MSK} - {3983468400 14400 1 MSD} - {4002217200 10800 0 MSK} - {4015522800 14400 1 MSD} - {4033666800 10800 0 MSK} - {4046972400 14400 1 MSD} - {4065116400 10800 0 MSK} - {4078422000 14400 1 MSD} - {4096566000 10800 0 MSK} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Moscow) { + {-9223372036854775808 9020 0 LMT} + {-2840149820 9000 0 MMT} + {-1688265000 9048 0 MMT} + {-1656819048 12648 1 MST} + {-1641353448 9048 0 MMT} + {-1627965048 16248 1 MDST} + {-1618716648 12648 1 MST} + {-1596429048 16248 1 MDST} + {-1593822648 14400 0 MSD} + {-1589860800 10800 0 MSK} + {-1542427200 14400 1 MSD} + {-1539493200 18000 1 MSD} + {-1525323600 14400 1 MSD} + {-1522728000 10800 0 MSK} + {-1491188400 7200 0 EET} + {-1247536800 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 7200 0 EEMMTT} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {695779200 10800 0 MSD} + {701812800 14400 1 MSD} + {717534000 10800 0 MSK} + {733273200 14400 1 MSD} + {748998000 10800 0 MSK} + {764722800 14400 1 MSD} + {780447600 10800 0 MSK} + {796172400 14400 1 MSD} + {811897200 10800 0 MSK} + {828226800 14400 1 MSD} + {846370800 10800 0 MSK} + {859676400 14400 1 MSD} + {877820400 10800 0 MSK} + {891126000 14400 1 MSD} + {909270000 10800 0 MSK} + {922575600 14400 1 MSD} + {941324400 10800 0 MSK} + {954025200 14400 1 MSD} + {972774000 10800 0 MSK} + {985474800 14400 1 MSD} + {1004223600 10800 0 MSK} + {1017529200 14400 1 MSD} + {1035673200 10800 0 MSK} + {1048978800 14400 1 MSD} + {1067122800 10800 0 MSK} + {1080428400 14400 1 MSD} + {1099177200 10800 0 MSK} + {1111878000 14400 1 MSD} + {1130626800 10800 0 MSK} + {1143327600 14400 1 MSD} + {1162076400 10800 0 MSK} + {1174777200 14400 1 MSD} + {1193526000 10800 0 MSK} + {1206831600 14400 1 MSD} + {1224975600 10800 0 MSK} + {1238281200 14400 1 MSD} + {1256425200 10800 0 MSK} + {1269730800 14400 1 MSD} + {1288479600 10800 0 MSK} + {1301180400 14400 1 MSD} + {1319929200 10800 0 MSK} + {1332630000 14400 1 MSD} + {1351378800 10800 0 MSK} + {1364684400 14400 1 MSD} + {1382828400 10800 0 MSK} + {1396134000 14400 1 MSD} + {1414278000 10800 0 MSK} + {1427583600 14400 1 MSD} + {1445727600 10800 0 MSK} + {1459033200 14400 1 MSD} + {1477782000 10800 0 MSK} + {1490482800 14400 1 MSD} + {1509231600 10800 0 MSK} + {1521932400 14400 1 MSD} + {1540681200 10800 0 MSK} + {1553986800 14400 1 MSD} + {1572130800 10800 0 MSK} + {1585436400 14400 1 MSD} + {1603580400 10800 0 MSK} + {1616886000 14400 1 MSD} + {1635634800 10800 0 MSK} + {1648335600 14400 1 MSD} + {1667084400 10800 0 MSK} + {1679785200 14400 1 MSD} + {1698534000 10800 0 MSK} + {1711839600 14400 1 MSD} + {1729983600 10800 0 MSK} + {1743289200 14400 1 MSD} + {1761433200 10800 0 MSK} + {1774738800 14400 1 MSD} + {1792882800 10800 0 MSK} + {1806188400 14400 1 MSD} + {1824937200 10800 0 MSK} + {1837638000 14400 1 MSD} + {1856386800 10800 0 MSK} + {1869087600 14400 1 MSD} + {1887836400 10800 0 MSK} + {1901142000 14400 1 MSD} + {1919286000 10800 0 MSK} + {1932591600 14400 1 MSD} + {1950735600 10800 0 MSK} + {1964041200 14400 1 MSD} + {1982790000 10800 0 MSK} + {1995490800 14400 1 MSD} + {2014239600 10800 0 MSK} + {2026940400 14400 1 MSD} + {2045689200 10800 0 MSK} + {2058390000 14400 1 MSD} + {2077138800 10800 0 MSK} + {2090444400 14400 1 MSD} + {2108588400 10800 0 MSK} + {2121894000 14400 1 MSD} + {2140038000 10800 0 MSK} + {2153343600 14400 1 MSD} + {2172092400 10800 0 MSK} + {2184793200 14400 1 MSD} + {2203542000 10800 0 MSK} + {2216242800 14400 1 MSD} + {2234991600 10800 0 MSK} + {2248297200 14400 1 MSD} + {2266441200 10800 0 MSK} + {2279746800 14400 1 MSD} + {2297890800 10800 0 MSK} + {2311196400 14400 1 MSD} + {2329340400 10800 0 MSK} + {2342646000 14400 1 MSD} + {2361394800 10800 0 MSK} + {2374095600 14400 1 MSD} + {2392844400 10800 0 MSK} + {2405545200 14400 1 MSD} + {2424294000 10800 0 MSK} + {2437599600 14400 1 MSD} + {2455743600 10800 0 MSK} + {2469049200 14400 1 MSD} + {2487193200 10800 0 MSK} + {2500498800 14400 1 MSD} + {2519247600 10800 0 MSK} + {2531948400 14400 1 MSD} + {2550697200 10800 0 MSK} + {2563398000 14400 1 MSD} + {2582146800 10800 0 MSK} + {2595452400 14400 1 MSD} + {2613596400 10800 0 MSK} + {2626902000 14400 1 MSD} + {2645046000 10800 0 MSK} + {2658351600 14400 1 MSD} + {2676495600 10800 0 MSK} + {2689801200 14400 1 MSD} + {2708550000 10800 0 MSK} + {2721250800 14400 1 MSD} + {2739999600 10800 0 MSK} + {2752700400 14400 1 MSD} + {2771449200 10800 0 MSK} + {2784754800 14400 1 MSD} + {2802898800 10800 0 MSK} + {2816204400 14400 1 MSD} + {2834348400 10800 0 MSK} + {2847654000 14400 1 MSD} + {2866402800 10800 0 MSK} + {2879103600 14400 1 MSD} + {2897852400 10800 0 MSK} + {2910553200 14400 1 MSD} + {2929302000 10800 0 MSK} + {2942002800 14400 1 MSD} + {2960751600 10800 0 MSK} + {2974057200 14400 1 MSD} + {2992201200 10800 0 MSK} + {3005506800 14400 1 MSD} + {3023650800 10800 0 MSK} + {3036956400 14400 1 MSD} + {3055705200 10800 0 MSK} + {3068406000 14400 1 MSD} + {3087154800 10800 0 MSK} + {3099855600 14400 1 MSD} + {3118604400 10800 0 MSK} + {3131910000 14400 1 MSD} + {3150054000 10800 0 MSK} + {3163359600 14400 1 MSD} + {3181503600 10800 0 MSK} + {3194809200 14400 1 MSD} + {3212953200 10800 0 MSK} + {3226258800 14400 1 MSD} + {3245007600 10800 0 MSK} + {3257708400 14400 1 MSD} + {3276457200 10800 0 MSK} + {3289158000 14400 1 MSD} + {3307906800 10800 0 MSK} + {3321212400 14400 1 MSD} + {3339356400 10800 0 MSK} + {3352662000 14400 1 MSD} + {3370806000 10800 0 MSK} + {3384111600 14400 1 MSD} + {3402860400 10800 0 MSK} + {3415561200 14400 1 MSD} + {3434310000 10800 0 MSK} + {3447010800 14400 1 MSD} + {3465759600 10800 0 MSK} + {3479065200 14400 1 MSD} + {3497209200 10800 0 MSK} + {3510514800 14400 1 MSD} + {3528658800 10800 0 MSK} + {3541964400 14400 1 MSD} + {3560108400 10800 0 MSK} + {3573414000 14400 1 MSD} + {3592162800 10800 0 MSK} + {3604863600 14400 1 MSD} + {3623612400 10800 0 MSK} + {3636313200 14400 1 MSD} + {3655062000 10800 0 MSK} + {3668367600 14400 1 MSD} + {3686511600 10800 0 MSK} + {3699817200 14400 1 MSD} + {3717961200 10800 0 MSK} + {3731266800 14400 1 MSD} + {3750015600 10800 0 MSK} + {3762716400 14400 1 MSD} + {3781465200 10800 0 MSK} + {3794166000 14400 1 MSD} + {3812914800 10800 0 MSK} + {3825615600 14400 1 MSD} + {3844364400 10800 0 MSK} + {3857670000 14400 1 MSD} + {3875814000 10800 0 MSK} + {3889119600 14400 1 MSD} + {3907263600 10800 0 MSK} + {3920569200 14400 1 MSD} + {3939318000 10800 0 MSK} + {3952018800 14400 1 MSD} + {3970767600 10800 0 MSK} + {3983468400 14400 1 MSD} + {4002217200 10800 0 MSK} + {4015522800 14400 1 MSD} + {4033666800 10800 0 MSK} + {4046972400 14400 1 MSD} + {4065116400 10800 0 MSK} + {4078422000 14400 1 MSD} + {4096566000 10800 0 MSK} +} diff --git a/library/tzdata/Europe/Nicosia b/library/tzdata/Europe/Nicosia index 2d58355..3429a63 100644 --- a/library/tzdata/Europe/Nicosia +++ b/library/tzdata/Europe/Nicosia @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Nicosia)]} { - LoadTimeZoneFile Asia/Nicosia -} -set TZData(:Europe/Nicosia) $TZData(:Asia/Nicosia) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Nicosia)]} { + LoadTimeZoneFile Asia/Nicosia +} +set TZData(:Europe/Nicosia) $TZData(:Asia/Nicosia) diff --git a/library/tzdata/Europe/Oslo b/library/tzdata/Europe/Oslo index 6787c1e..25bbace 100644 --- a/library/tzdata/Europe/Oslo +++ b/library/tzdata/Europe/Oslo @@ -1,271 +1,271 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Oslo) { - {-9223372036854775808 2580 0 LMT} - {-2366757780 3600 0 CET} - {-1691884800 7200 1 CEST} - {-1680573600 3600 0 CET} - {-927511200 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 0 CEST} - {-765327600 3600 0 CET} - {-340844400 7200 1 CEST} - {-324514800 3600 0 CET} - {-308790000 7200 1 CEST} - {-293065200 3600 0 CET} - {-277340400 7200 1 CEST} - {-261615600 3600 0 CET} - {-245890800 7200 1 CEST} - {-230166000 3600 0 CET} - {-214441200 7200 1 CEST} - {-198716400 3600 0 CET} - {-182991600 7200 1 CEST} - {-166662000 3600 0 CET} - {-147913200 7200 1 CEST} - {-135212400 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Oslo) { + {-9223372036854775808 2580 0 LMT} + {-2366757780 3600 0 CET} + {-1691884800 7200 1 CEST} + {-1680573600 3600 0 CET} + {-927511200 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 0 CEST} + {-765327600 3600 0 CET} + {-340844400 7200 1 CEST} + {-324514800 3600 0 CET} + {-308790000 7200 1 CEST} + {-293065200 3600 0 CET} + {-277340400 7200 1 CEST} + {-261615600 3600 0 CET} + {-245890800 7200 1 CEST} + {-230166000 3600 0 CET} + {-214441200 7200 1 CEST} + {-198716400 3600 0 CET} + {-182991600 7200 1 CEST} + {-166662000 3600 0 CET} + {-147913200 7200 1 CEST} + {-135212400 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Paris b/library/tzdata/Europe/Paris index 4b22a09..548671d 100644 --- a/library/tzdata/Europe/Paris +++ b/library/tzdata/Europe/Paris @@ -1,314 +1,314 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Paris) { - {-9223372036854775808 561 0 LMT} - {-2486678901 561 0 PMT} - {-1855958901 0 0 WET} - {-1689814800 3600 1 WEST} - {-1680397200 0 0 WET} - {-1665363600 3600 1 WEST} - {-1648342800 0 0 WET} - {-1635123600 3600 1 WEST} - {-1616893200 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585443600 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552266000 0 0 WET} - {-1539997200 3600 1 WEST} - {-1520557200 0 0 WET} - {-1507510800 3600 1 WEST} - {-1490576400 0 0 WET} - {-1470618000 3600 1 WEST} - {-1459126800 0 0 WET} - {-1444006800 3600 1 WEST} - {-1427677200 0 0 WET} - {-1411952400 3600 1 WEST} - {-1396227600 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269824400 0 0 WET} - {-1253494800 3600 1 WEST} - {-1238374800 0 0 WET} - {-1221440400 3600 1 WEST} - {-1206925200 0 0 WET} - {-1191200400 3600 1 WEST} - {-1175475600 0 0 WET} - {-1160355600 3600 1 WEST} - {-1143421200 0 0 WET} - {-1127696400 3600 1 WEST} - {-1111971600 0 0 WET} - {-1096851600 3600 1 WEST} - {-1080522000 0 0 WET} - {-1063587600 3600 1 WEST} - {-1049072400 0 0 WET} - {-1033347600 3600 1 WEST} - {-1017622800 0 0 WET} - {-1002502800 3600 1 WEST} - {-986173200 0 0 WET} - {-969238800 3600 1 WEST} - {-950490000 0 0 WET} - {-942012000 3600 1 WEST} - {-932436000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-800067600 7200 0 WEMT} - {-796266000 3600 1 WEST} - {-781052400 7200 1 WEMT} - {-766616400 3600 0 CET} - {196819200 7200 1 CEST} - {212540400 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Paris) { + {-9223372036854775808 561 0 LMT} + {-2486678901 561 0 PMT} + {-1855958901 0 0 WET} + {-1689814800 3600 1 WEST} + {-1680397200 0 0 WET} + {-1665363600 3600 1 WEST} + {-1648342800 0 0 WET} + {-1635123600 3600 1 WEST} + {-1616893200 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585443600 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552266000 0 0 WET} + {-1539997200 3600 1 WEST} + {-1520557200 0 0 WET} + {-1507510800 3600 1 WEST} + {-1490576400 0 0 WET} + {-1470618000 3600 1 WEST} + {-1459126800 0 0 WET} + {-1444006800 3600 1 WEST} + {-1427677200 0 0 WET} + {-1411952400 3600 1 WEST} + {-1396227600 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269824400 0 0 WET} + {-1253494800 3600 1 WEST} + {-1238374800 0 0 WET} + {-1221440400 3600 1 WEST} + {-1206925200 0 0 WET} + {-1191200400 3600 1 WEST} + {-1175475600 0 0 WET} + {-1160355600 3600 1 WEST} + {-1143421200 0 0 WET} + {-1127696400 3600 1 WEST} + {-1111971600 0 0 WET} + {-1096851600 3600 1 WEST} + {-1080522000 0 0 WET} + {-1063587600 3600 1 WEST} + {-1049072400 0 0 WET} + {-1033347600 3600 1 WEST} + {-1017622800 0 0 WET} + {-1002502800 3600 1 WEST} + {-986173200 0 0 WET} + {-969238800 3600 1 WEST} + {-950490000 0 0 WET} + {-942012000 3600 1 WEST} + {-932436000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-800067600 7200 0 WEMT} + {-796266000 3600 1 WEST} + {-781052400 7200 1 WEMT} + {-766616400 3600 0 CET} + {196819200 7200 1 CEST} + {212540400 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Podgorica b/library/tzdata/Europe/Podgorica index f4f9066..9c8429a 100755 --- a/library/tzdata/Europe/Podgorica +++ b/library/tzdata/Europe/Podgorica @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Podgorica) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Podgorica) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/Prague b/library/tzdata/Europe/Prague index 222b1ae..802c02b 100644 --- a/library/tzdata/Europe/Prague +++ b/library/tzdata/Europe/Prague @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Prague) { - {-9223372036854775808 3464 0 LMT} - {-3786829064 3464 0 PMT} - {-2469401864 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-798073200 3600 0 CET} - {-780534000 7200 1 CEST} - {-761180400 3600 0 CET} - {-746578800 7200 1 CEST} - {-733359600 3600 0 CET} - {-716425200 7200 1 CEST} - {-701910000 3600 0 CET} - {-684975600 7200 1 CEST} - {-670460400 3600 0 CET} - {-654217200 7200 1 CEST} - {-639010800 3600 0 CET} - {283993200 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Prague) { + {-9223372036854775808 3464 0 LMT} + {-3786829064 3464 0 PMT} + {-2469401864 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-798073200 3600 0 CET} + {-780534000 7200 1 CEST} + {-761180400 3600 0 CET} + {-746578800 7200 1 CEST} + {-733359600 3600 0 CET} + {-716425200 7200 1 CEST} + {-701910000 3600 0 CET} + {-684975600 7200 1 CEST} + {-670460400 3600 0 CET} + {-654217200 7200 1 CEST} + {-639010800 3600 0 CET} + {283993200 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Riga b/library/tzdata/Europe/Riga index 9fad0f8..0597166 100644 --- a/library/tzdata/Europe/Riga +++ b/library/tzdata/Europe/Riga @@ -1,258 +1,258 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Riga) { - {-9223372036854775808 5784 0 LMT} - {-2840146584 5784 0 RMT} - {-1632008184 9384 1 LST} - {-1618702584 5784 0 RMT} - {-1601681784 9384 1 LST} - {-1597275384 5784 0 RMT} - {-1377308184 7200 0 EET} - {-928029600 10800 0 MSK} - {-899521200 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-795834000 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {701827200 10800 1 EEST} - {717552000 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {843955200 7200 0 EET} - {853797600 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {951775200 7200 0 EET} - {978386400 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Riga) { + {-9223372036854775808 5784 0 LMT} + {-2840146584 5784 0 RMT} + {-1632008184 9384 1 LST} + {-1618702584 5784 0 RMT} + {-1601681784 9384 1 LST} + {-1597275384 5784 0 RMT} + {-1377308184 7200 0 EET} + {-928029600 10800 0 MSK} + {-899521200 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-795834000 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {701827200 10800 1 EEST} + {717552000 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {843955200 7200 0 EET} + {853797600 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {951775200 7200 0 EET} + {978386400 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Rome b/library/tzdata/Europe/Rome index 64948b8..d5a463b 100644 --- a/library/tzdata/Europe/Rome +++ b/library/tzdata/Europe/Rome @@ -1,301 +1,301 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Rome) { - {-9223372036854775808 2996 0 LMT} - {-3259097396 2996 0 RMT} - {-2403564596 3600 0 CET} - {-1690851600 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1664758800 7200 1 CEST} - {-1649034000 3600 0 CET} - {-1635123600 7200 1 CEST} - {-1616979600 3600 0 CET} - {-1604278800 7200 1 CEST} - {-1585530000 3600 0 CET} - {-1571014800 7200 1 CEST} - {-1555290000 3600 0 CET} - {-932432400 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-804819600 3600 0 CET} - {-798080400 3600 0 CET} - {-781052400 7200 1 CEST} - {-766717200 3600 0 CET} - {-750898800 7200 1 CEST} - {-733359600 3600 0 CET} - {-719456400 7200 1 CEST} - {-701917200 3600 0 CET} - {-689209200 7200 1 CEST} - {-670460400 3600 0 CET} - {-114051600 7200 1 CEST} - {-103168800 3600 0 CET} - {-81997200 7200 1 CEST} - {-71719200 3600 0 CET} - {-50547600 7200 1 CEST} - {-40269600 3600 0 CET} - {-18493200 7200 1 CEST} - {-8215200 3600 0 CET} - {12956400 7200 1 CEST} - {23234400 3600 0 CET} - {43801200 7200 1 CEST} - {54687600 3600 0 CET} - {75855600 7200 1 CEST} - {86738400 3600 0 CET} - {107910000 7200 1 CEST} - {118188000 3600 0 CET} - {138754800 7200 1 CEST} - {149637600 3600 0 CET} - {170809200 7200 1 CEST} - {181090800 3600 0 CET} - {202258800 7200 1 CEST} - {212540400 3600 0 CET} - {233103600 7200 1 CEST} - {243990000 3600 0 CET} - {265158000 7200 1 CEST} - {276044400 3600 0 CET} - {296607600 7200 1 CEST} - {307494000 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Rome) { + {-9223372036854775808 2996 0 LMT} + {-3259097396 2996 0 RMT} + {-2403564596 3600 0 CET} + {-1690851600 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1664758800 7200 1 CEST} + {-1649034000 3600 0 CET} + {-1635123600 7200 1 CEST} + {-1616979600 3600 0 CET} + {-1604278800 7200 1 CEST} + {-1585530000 3600 0 CET} + {-1571014800 7200 1 CEST} + {-1555290000 3600 0 CET} + {-932432400 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-804819600 3600 0 CET} + {-798080400 3600 0 CET} + {-781052400 7200 1 CEST} + {-766717200 3600 0 CET} + {-750898800 7200 1 CEST} + {-733359600 3600 0 CET} + {-719456400 7200 1 CEST} + {-701917200 3600 0 CET} + {-689209200 7200 1 CEST} + {-670460400 3600 0 CET} + {-114051600 7200 1 CEST} + {-103168800 3600 0 CET} + {-81997200 7200 1 CEST} + {-71719200 3600 0 CET} + {-50547600 7200 1 CEST} + {-40269600 3600 0 CET} + {-18493200 7200 1 CEST} + {-8215200 3600 0 CET} + {12956400 7200 1 CEST} + {23234400 3600 0 CET} + {43801200 7200 1 CEST} + {54687600 3600 0 CET} + {75855600 7200 1 CEST} + {86738400 3600 0 CET} + {107910000 7200 1 CEST} + {118188000 3600 0 CET} + {138754800 7200 1 CEST} + {149637600 3600 0 CET} + {170809200 7200 1 CEST} + {181090800 3600 0 CET} + {202258800 7200 1 CEST} + {212540400 3600 0 CET} + {233103600 7200 1 CEST} + {243990000 3600 0 CET} + {265158000 7200 1 CEST} + {276044400 3600 0 CET} + {296607600 7200 1 CEST} + {307494000 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Samara b/library/tzdata/Europe/Samara index 47e57e4..61e2997 100644 --- a/library/tzdata/Europe/Samara +++ b/library/tzdata/Europe/Samara @@ -1,249 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Samara) { - {-9223372036854775808 12036 0 LMT} - {-1593825636 10800 0 SAMT} - {-1247540400 14400 0 SAMT} - {-1102305600 14400 0 KUYMMTT} - {354916800 18000 1 KUYST} - {370724400 14400 0 KUYT} - {386452800 18000 1 KUYST} - {402260400 14400 0 KUYT} - {417988800 18000 1 KUYST} - {433796400 14400 0 KUYT} - {449611200 18000 1 KUYST} - {465343200 14400 0 KUYT} - {481068000 18000 1 KUYST} - {496792800 14400 0 KUYT} - {512517600 18000 1 KUYST} - {528242400 14400 0 KUYT} - {543967200 18000 1 KUYST} - {559692000 14400 0 KUYT} - {575416800 18000 1 KUYST} - {591141600 14400 0 KUYT} - {606866400 10800 0 KUYMMTT} - {606870000 14400 1 KUYST} - {622594800 10800 0 KUYT} - {638319600 14400 1 KUYST} - {654649200 10800 0 KUYT} - {670374000 7200 0 KUYMMTT} - {670377600 10800 1 KUYST} - {686102400 10800 0 KUYT} - {687916800 14400 0 SAMT} - {701809200 18000 1 SAMST} - {717530400 14400 0 SAMT} - {733269600 18000 1 SAMST} - {748994400 14400 0 SAMT} - {764719200 18000 1 SAMST} - {780444000 14400 0 SAMT} - {796168800 18000 1 SAMST} - {811893600 14400 0 SAMT} - {828223200 18000 1 SAMST} - {846367200 14400 0 SAMT} - {859672800 18000 1 SAMST} - {877816800 14400 0 SAMT} - {891122400 18000 1 SAMST} - {909266400 14400 0 SAMT} - {922572000 18000 1 SAMST} - {941320800 14400 0 SAMT} - {954021600 18000 1 SAMST} - {972770400 14400 0 SAMT} - {985471200 18000 1 SAMST} - {1004220000 14400 0 SAMT} - {1017525600 18000 1 SAMST} - {1035669600 14400 0 SAMT} - {1048975200 18000 1 SAMST} - {1067119200 14400 0 SAMT} - {1080424800 18000 1 SAMST} - {1099173600 14400 0 SAMT} - {1111874400 18000 1 SAMST} - {1130623200 14400 0 SAMT} - {1143324000 18000 1 SAMST} - {1162072800 14400 0 SAMT} - {1174773600 18000 1 SAMST} - {1193522400 14400 0 SAMT} - {1206828000 18000 1 SAMST} - {1224972000 14400 0 SAMT} - {1238277600 18000 1 SAMST} - {1256421600 14400 0 SAMT} - {1269727200 18000 1 SAMST} - {1288476000 14400 0 SAMT} - {1301176800 18000 1 SAMST} - {1319925600 14400 0 SAMT} - {1332626400 18000 1 SAMST} - {1351375200 14400 0 SAMT} - {1364680800 18000 1 SAMST} - {1382824800 14400 0 SAMT} - {1396130400 18000 1 SAMST} - {1414274400 14400 0 SAMT} - {1427580000 18000 1 SAMST} - {1445724000 14400 0 SAMT} - {1459029600 18000 1 SAMST} - {1477778400 14400 0 SAMT} - {1490479200 18000 1 SAMST} - {1509228000 14400 0 SAMT} - {1521928800 18000 1 SAMST} - {1540677600 14400 0 SAMT} - {1553983200 18000 1 SAMST} - {1572127200 14400 0 SAMT} - {1585432800 18000 1 SAMST} - {1603576800 14400 0 SAMT} - {1616882400 18000 1 SAMST} - {1635631200 14400 0 SAMT} - {1648332000 18000 1 SAMST} - {1667080800 14400 0 SAMT} - {1679781600 18000 1 SAMST} - {1698530400 14400 0 SAMT} - {1711836000 18000 1 SAMST} - {1729980000 14400 0 SAMT} - {1743285600 18000 1 SAMST} - {1761429600 14400 0 SAMT} - {1774735200 18000 1 SAMST} - {1792879200 14400 0 SAMT} - {1806184800 18000 1 SAMST} - {1824933600 14400 0 SAMT} - {1837634400 18000 1 SAMST} - {1856383200 14400 0 SAMT} - {1869084000 18000 1 SAMST} - {1887832800 14400 0 SAMT} - {1901138400 18000 1 SAMST} - {1919282400 14400 0 SAMT} - {1932588000 18000 1 SAMST} - {1950732000 14400 0 SAMT} - {1964037600 18000 1 SAMST} - {1982786400 14400 0 SAMT} - {1995487200 18000 1 SAMST} - {2014236000 14400 0 SAMT} - {2026936800 18000 1 SAMST} - {2045685600 14400 0 SAMT} - {2058386400 18000 1 SAMST} - {2077135200 14400 0 SAMT} - {2090440800 18000 1 SAMST} - {2108584800 14400 0 SAMT} - {2121890400 18000 1 SAMST} - {2140034400 14400 0 SAMT} - {2153340000 18000 1 SAMST} - {2172088800 14400 0 SAMT} - {2184789600 18000 1 SAMST} - {2203538400 14400 0 SAMT} - {2216239200 18000 1 SAMST} - {2234988000 14400 0 SAMT} - {2248293600 18000 1 SAMST} - {2266437600 14400 0 SAMT} - {2279743200 18000 1 SAMST} - {2297887200 14400 0 SAMT} - {2311192800 18000 1 SAMST} - {2329336800 14400 0 SAMT} - {2342642400 18000 1 SAMST} - {2361391200 14400 0 SAMT} - {2374092000 18000 1 SAMST} - {2392840800 14400 0 SAMT} - {2405541600 18000 1 SAMST} - {2424290400 14400 0 SAMT} - {2437596000 18000 1 SAMST} - {2455740000 14400 0 SAMT} - {2469045600 18000 1 SAMST} - {2487189600 14400 0 SAMT} - {2500495200 18000 1 SAMST} - {2519244000 14400 0 SAMT} - {2531944800 18000 1 SAMST} - {2550693600 14400 0 SAMT} - {2563394400 18000 1 SAMST} - {2582143200 14400 0 SAMT} - {2595448800 18000 1 SAMST} - {2613592800 14400 0 SAMT} - {2626898400 18000 1 SAMST} - {2645042400 14400 0 SAMT} - {2658348000 18000 1 SAMST} - {2676492000 14400 0 SAMT} - {2689797600 18000 1 SAMST} - {2708546400 14400 0 SAMT} - {2721247200 18000 1 SAMST} - {2739996000 14400 0 SAMT} - {2752696800 18000 1 SAMST} - {2771445600 14400 0 SAMT} - {2784751200 18000 1 SAMST} - {2802895200 14400 0 SAMT} - {2816200800 18000 1 SAMST} - {2834344800 14400 0 SAMT} - {2847650400 18000 1 SAMST} - {2866399200 14400 0 SAMT} - {2879100000 18000 1 SAMST} - {2897848800 14400 0 SAMT} - {2910549600 18000 1 SAMST} - {2929298400 14400 0 SAMT} - {2941999200 18000 1 SAMST} - {2960748000 14400 0 SAMT} - {2974053600 18000 1 SAMST} - {2992197600 14400 0 SAMT} - {3005503200 18000 1 SAMST} - {3023647200 14400 0 SAMT} - {3036952800 18000 1 SAMST} - {3055701600 14400 0 SAMT} - {3068402400 18000 1 SAMST} - {3087151200 14400 0 SAMT} - {3099852000 18000 1 SAMST} - {3118600800 14400 0 SAMT} - {3131906400 18000 1 SAMST} - {3150050400 14400 0 SAMT} - {3163356000 18000 1 SAMST} - {3181500000 14400 0 SAMT} - {3194805600 18000 1 SAMST} - {3212949600 14400 0 SAMT} - {3226255200 18000 1 SAMST} - {3245004000 14400 0 SAMT} - {3257704800 18000 1 SAMST} - {3276453600 14400 0 SAMT} - {3289154400 18000 1 SAMST} - {3307903200 14400 0 SAMT} - {3321208800 18000 1 SAMST} - {3339352800 14400 0 SAMT} - {3352658400 18000 1 SAMST} - {3370802400 14400 0 SAMT} - {3384108000 18000 1 SAMST} - {3402856800 14400 0 SAMT} - {3415557600 18000 1 SAMST} - {3434306400 14400 0 SAMT} - {3447007200 18000 1 SAMST} - {3465756000 14400 0 SAMT} - {3479061600 18000 1 SAMST} - {3497205600 14400 0 SAMT} - {3510511200 18000 1 SAMST} - {3528655200 14400 0 SAMT} - {3541960800 18000 1 SAMST} - {3560104800 14400 0 SAMT} - {3573410400 18000 1 SAMST} - {3592159200 14400 0 SAMT} - {3604860000 18000 1 SAMST} - {3623608800 14400 0 SAMT} - {3636309600 18000 1 SAMST} - {3655058400 14400 0 SAMT} - {3668364000 18000 1 SAMST} - {3686508000 14400 0 SAMT} - {3699813600 18000 1 SAMST} - {3717957600 14400 0 SAMT} - {3731263200 18000 1 SAMST} - {3750012000 14400 0 SAMT} - {3762712800 18000 1 SAMST} - {3781461600 14400 0 SAMT} - {3794162400 18000 1 SAMST} - {3812911200 14400 0 SAMT} - {3825612000 18000 1 SAMST} - {3844360800 14400 0 SAMT} - {3857666400 18000 1 SAMST} - {3875810400 14400 0 SAMT} - {3889116000 18000 1 SAMST} - {3907260000 14400 0 SAMT} - {3920565600 18000 1 SAMST} - {3939314400 14400 0 SAMT} - {3952015200 18000 1 SAMST} - {3970764000 14400 0 SAMT} - {3983464800 18000 1 SAMST} - {4002213600 14400 0 SAMT} - {4015519200 18000 1 SAMST} - {4033663200 14400 0 SAMT} - {4046968800 18000 1 SAMST} - {4065112800 14400 0 SAMT} - {4078418400 18000 1 SAMST} - {4096562400 14400 0 SAMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Samara) { + {-9223372036854775808 12036 0 LMT} + {-1593825636 10800 0 SAMT} + {-1247540400 14400 0 SAMT} + {-1102305600 14400 0 KUYMMTT} + {354916800 18000 1 KUYST} + {370724400 14400 0 KUYT} + {386452800 18000 1 KUYST} + {402260400 14400 0 KUYT} + {417988800 18000 1 KUYST} + {433796400 14400 0 KUYT} + {449611200 18000 1 KUYST} + {465343200 14400 0 KUYT} + {481068000 18000 1 KUYST} + {496792800 14400 0 KUYT} + {512517600 18000 1 KUYST} + {528242400 14400 0 KUYT} + {543967200 18000 1 KUYST} + {559692000 14400 0 KUYT} + {575416800 18000 1 KUYST} + {591141600 14400 0 KUYT} + {606866400 10800 0 KUYMMTT} + {606870000 14400 1 KUYST} + {622594800 10800 0 KUYT} + {638319600 14400 1 KUYST} + {654649200 10800 0 KUYT} + {670374000 7200 0 KUYMMTT} + {670377600 10800 1 KUYST} + {686102400 10800 0 KUYT} + {687916800 14400 0 SAMT} + {701809200 18000 1 SAMST} + {717530400 14400 0 SAMT} + {733269600 18000 1 SAMST} + {748994400 14400 0 SAMT} + {764719200 18000 1 SAMST} + {780444000 14400 0 SAMT} + {796168800 18000 1 SAMST} + {811893600 14400 0 SAMT} + {828223200 18000 1 SAMST} + {846367200 14400 0 SAMT} + {859672800 18000 1 SAMST} + {877816800 14400 0 SAMT} + {891122400 18000 1 SAMST} + {909266400 14400 0 SAMT} + {922572000 18000 1 SAMST} + {941320800 14400 0 SAMT} + {954021600 18000 1 SAMST} + {972770400 14400 0 SAMT} + {985471200 18000 1 SAMST} + {1004220000 14400 0 SAMT} + {1017525600 18000 1 SAMST} + {1035669600 14400 0 SAMT} + {1048975200 18000 1 SAMST} + {1067119200 14400 0 SAMT} + {1080424800 18000 1 SAMST} + {1099173600 14400 0 SAMT} + {1111874400 18000 1 SAMST} + {1130623200 14400 0 SAMT} + {1143324000 18000 1 SAMST} + {1162072800 14400 0 SAMT} + {1174773600 18000 1 SAMST} + {1193522400 14400 0 SAMT} + {1206828000 18000 1 SAMST} + {1224972000 14400 0 SAMT} + {1238277600 18000 1 SAMST} + {1256421600 14400 0 SAMT} + {1269727200 18000 1 SAMST} + {1288476000 14400 0 SAMT} + {1301176800 18000 1 SAMST} + {1319925600 14400 0 SAMT} + {1332626400 18000 1 SAMST} + {1351375200 14400 0 SAMT} + {1364680800 18000 1 SAMST} + {1382824800 14400 0 SAMT} + {1396130400 18000 1 SAMST} + {1414274400 14400 0 SAMT} + {1427580000 18000 1 SAMST} + {1445724000 14400 0 SAMT} + {1459029600 18000 1 SAMST} + {1477778400 14400 0 SAMT} + {1490479200 18000 1 SAMST} + {1509228000 14400 0 SAMT} + {1521928800 18000 1 SAMST} + {1540677600 14400 0 SAMT} + {1553983200 18000 1 SAMST} + {1572127200 14400 0 SAMT} + {1585432800 18000 1 SAMST} + {1603576800 14400 0 SAMT} + {1616882400 18000 1 SAMST} + {1635631200 14400 0 SAMT} + {1648332000 18000 1 SAMST} + {1667080800 14400 0 SAMT} + {1679781600 18000 1 SAMST} + {1698530400 14400 0 SAMT} + {1711836000 18000 1 SAMST} + {1729980000 14400 0 SAMT} + {1743285600 18000 1 SAMST} + {1761429600 14400 0 SAMT} + {1774735200 18000 1 SAMST} + {1792879200 14400 0 SAMT} + {1806184800 18000 1 SAMST} + {1824933600 14400 0 SAMT} + {1837634400 18000 1 SAMST} + {1856383200 14400 0 SAMT} + {1869084000 18000 1 SAMST} + {1887832800 14400 0 SAMT} + {1901138400 18000 1 SAMST} + {1919282400 14400 0 SAMT} + {1932588000 18000 1 SAMST} + {1950732000 14400 0 SAMT} + {1964037600 18000 1 SAMST} + {1982786400 14400 0 SAMT} + {1995487200 18000 1 SAMST} + {2014236000 14400 0 SAMT} + {2026936800 18000 1 SAMST} + {2045685600 14400 0 SAMT} + {2058386400 18000 1 SAMST} + {2077135200 14400 0 SAMT} + {2090440800 18000 1 SAMST} + {2108584800 14400 0 SAMT} + {2121890400 18000 1 SAMST} + {2140034400 14400 0 SAMT} + {2153340000 18000 1 SAMST} + {2172088800 14400 0 SAMT} + {2184789600 18000 1 SAMST} + {2203538400 14400 0 SAMT} + {2216239200 18000 1 SAMST} + {2234988000 14400 0 SAMT} + {2248293600 18000 1 SAMST} + {2266437600 14400 0 SAMT} + {2279743200 18000 1 SAMST} + {2297887200 14400 0 SAMT} + {2311192800 18000 1 SAMST} + {2329336800 14400 0 SAMT} + {2342642400 18000 1 SAMST} + {2361391200 14400 0 SAMT} + {2374092000 18000 1 SAMST} + {2392840800 14400 0 SAMT} + {2405541600 18000 1 SAMST} + {2424290400 14400 0 SAMT} + {2437596000 18000 1 SAMST} + {2455740000 14400 0 SAMT} + {2469045600 18000 1 SAMST} + {2487189600 14400 0 SAMT} + {2500495200 18000 1 SAMST} + {2519244000 14400 0 SAMT} + {2531944800 18000 1 SAMST} + {2550693600 14400 0 SAMT} + {2563394400 18000 1 SAMST} + {2582143200 14400 0 SAMT} + {2595448800 18000 1 SAMST} + {2613592800 14400 0 SAMT} + {2626898400 18000 1 SAMST} + {2645042400 14400 0 SAMT} + {2658348000 18000 1 SAMST} + {2676492000 14400 0 SAMT} + {2689797600 18000 1 SAMST} + {2708546400 14400 0 SAMT} + {2721247200 18000 1 SAMST} + {2739996000 14400 0 SAMT} + {2752696800 18000 1 SAMST} + {2771445600 14400 0 SAMT} + {2784751200 18000 1 SAMST} + {2802895200 14400 0 SAMT} + {2816200800 18000 1 SAMST} + {2834344800 14400 0 SAMT} + {2847650400 18000 1 SAMST} + {2866399200 14400 0 SAMT} + {2879100000 18000 1 SAMST} + {2897848800 14400 0 SAMT} + {2910549600 18000 1 SAMST} + {2929298400 14400 0 SAMT} + {2941999200 18000 1 SAMST} + {2960748000 14400 0 SAMT} + {2974053600 18000 1 SAMST} + {2992197600 14400 0 SAMT} + {3005503200 18000 1 SAMST} + {3023647200 14400 0 SAMT} + {3036952800 18000 1 SAMST} + {3055701600 14400 0 SAMT} + {3068402400 18000 1 SAMST} + {3087151200 14400 0 SAMT} + {3099852000 18000 1 SAMST} + {3118600800 14400 0 SAMT} + {3131906400 18000 1 SAMST} + {3150050400 14400 0 SAMT} + {3163356000 18000 1 SAMST} + {3181500000 14400 0 SAMT} + {3194805600 18000 1 SAMST} + {3212949600 14400 0 SAMT} + {3226255200 18000 1 SAMST} + {3245004000 14400 0 SAMT} + {3257704800 18000 1 SAMST} + {3276453600 14400 0 SAMT} + {3289154400 18000 1 SAMST} + {3307903200 14400 0 SAMT} + {3321208800 18000 1 SAMST} + {3339352800 14400 0 SAMT} + {3352658400 18000 1 SAMST} + {3370802400 14400 0 SAMT} + {3384108000 18000 1 SAMST} + {3402856800 14400 0 SAMT} + {3415557600 18000 1 SAMST} + {3434306400 14400 0 SAMT} + {3447007200 18000 1 SAMST} + {3465756000 14400 0 SAMT} + {3479061600 18000 1 SAMST} + {3497205600 14400 0 SAMT} + {3510511200 18000 1 SAMST} + {3528655200 14400 0 SAMT} + {3541960800 18000 1 SAMST} + {3560104800 14400 0 SAMT} + {3573410400 18000 1 SAMST} + {3592159200 14400 0 SAMT} + {3604860000 18000 1 SAMST} + {3623608800 14400 0 SAMT} + {3636309600 18000 1 SAMST} + {3655058400 14400 0 SAMT} + {3668364000 18000 1 SAMST} + {3686508000 14400 0 SAMT} + {3699813600 18000 1 SAMST} + {3717957600 14400 0 SAMT} + {3731263200 18000 1 SAMST} + {3750012000 14400 0 SAMT} + {3762712800 18000 1 SAMST} + {3781461600 14400 0 SAMT} + {3794162400 18000 1 SAMST} + {3812911200 14400 0 SAMT} + {3825612000 18000 1 SAMST} + {3844360800 14400 0 SAMT} + {3857666400 18000 1 SAMST} + {3875810400 14400 0 SAMT} + {3889116000 18000 1 SAMST} + {3907260000 14400 0 SAMT} + {3920565600 18000 1 SAMST} + {3939314400 14400 0 SAMT} + {3952015200 18000 1 SAMST} + {3970764000 14400 0 SAMT} + {3983464800 18000 1 SAMST} + {4002213600 14400 0 SAMT} + {4015519200 18000 1 SAMST} + {4033663200 14400 0 SAMT} + {4046968800 18000 1 SAMST} + {4065112800 14400 0 SAMT} + {4078418400 18000 1 SAMST} + {4096562400 14400 0 SAMT} +} diff --git a/library/tzdata/Europe/San_Marino b/library/tzdata/Europe/San_Marino index 927ad29..5704f6f 100644 --- a/library/tzdata/Europe/San_Marino +++ b/library/tzdata/Europe/San_Marino @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Rome)]} { - LoadTimeZoneFile Europe/Rome -} -set TZData(:Europe/San_Marino) $TZData(:Europe/Rome) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Rome)]} { + LoadTimeZoneFile Europe/Rome +} +set TZData(:Europe/San_Marino) $TZData(:Europe/Rome) diff --git a/library/tzdata/Europe/Sarajevo b/library/tzdata/Europe/Sarajevo index 1b14286..32d1240 100644 --- a/library/tzdata/Europe/Sarajevo +++ b/library/tzdata/Europe/Sarajevo @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Sarajevo) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Sarajevo) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/Simferopol b/library/tzdata/Europe/Simferopol index 9836560..a0f703d 100644 --- a/library/tzdata/Europe/Simferopol +++ b/library/tzdata/Europe/Simferopol @@ -1,253 +1,253 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Simferopol) { - {-9223372036854775808 8184 0 LMT} - {-2840148984 8160 0 SMT} - {-1441160160 7200 0 EET} - {-1247536800 10800 0 MSK} - {-888894000 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-811645200 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {646786800 7200 0 EET} - {694216800 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {767743200 14400 0 MSD} - {780436800 10800 0 MSK} - {796165200 14400 1 MSD} - {811886400 10800 0 MSK} - {828219600 14400 1 MSD} - {828230400 14400 1 MSD} - {852066000 10800 0 MSK} - {859683600 10800 0 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Simferopol) { + {-9223372036854775808 8184 0 LMT} + {-2840148984 8160 0 SMT} + {-1441160160 7200 0 EET} + {-1247536800 10800 0 MSK} + {-888894000 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-811645200 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {646786800 7200 0 EET} + {694216800 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {767743200 14400 0 MSD} + {780436800 10800 0 MSK} + {796165200 14400 1 MSD} + {811886400 10800 0 MSK} + {828219600 14400 1 MSD} + {828230400 14400 1 MSD} + {852066000 10800 0 MSK} + {859683600 10800 0 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Skopje b/library/tzdata/Europe/Skopje index 07eedbe..8091fca 100644 --- a/library/tzdata/Europe/Skopje +++ b/library/tzdata/Europe/Skopje @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Skopje) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Skopje) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/Sofia b/library/tzdata/Europe/Sofia index 8fd55f6..6653075 100644 --- a/library/tzdata/Europe/Sofia +++ b/library/tzdata/Europe/Sofia @@ -1,259 +1,259 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Sofia) { - {-9223372036854775808 5596 0 LMT} - {-2840146396 7016 0 IMT} - {-2369527016 7200 0 EET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-788922000 3600 0 CET} - {-781048800 7200 0 EET} - {291762000 10800 0 EEST} - {307576800 7200 0 EET} - {323816400 10800 1 EEST} - {339026400 7200 0 EET} - {355266000 10800 1 EEST} - {370393200 7200 0 EET} - {386715600 10800 1 EEST} - {401842800 10800 0 EEST} - {401846400 7200 0 EET} - {417571200 10800 1 EEST} - {433296000 7200 0 EET} - {449020800 10800 1 EEST} - {465350400 7200 0 EET} - {481075200 10800 1 EEST} - {496800000 7200 0 EET} - {512524800 10800 1 EEST} - {528249600 7200 0 EET} - {543974400 10800 1 EEST} - {559699200 7200 0 EET} - {575424000 10800 1 EEST} - {591148800 7200 0 EET} - {606873600 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {662680800 7200 0 EET} - {670370400 10800 1 EEST} - {686091600 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {846363600 7200 0 EET} - {852069600 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Sofia) { + {-9223372036854775808 5596 0 LMT} + {-2840146396 7016 0 IMT} + {-2369527016 7200 0 EET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-788922000 3600 0 CET} + {-781048800 7200 0 EET} + {291762000 10800 0 EEST} + {307576800 7200 0 EET} + {323816400 10800 1 EEST} + {339026400 7200 0 EET} + {355266000 10800 1 EEST} + {370393200 7200 0 EET} + {386715600 10800 1 EEST} + {401842800 10800 0 EEST} + {401846400 7200 0 EET} + {417571200 10800 1 EEST} + {433296000 7200 0 EET} + {449020800 10800 1 EEST} + {465350400 7200 0 EET} + {481075200 10800 1 EEST} + {496800000 7200 0 EET} + {512524800 10800 1 EEST} + {528249600 7200 0 EET} + {543974400 10800 1 EEST} + {559699200 7200 0 EET} + {575424000 10800 1 EEST} + {591148800 7200 0 EET} + {606873600 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {662680800 7200 0 EET} + {670370400 10800 1 EEST} + {686091600 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {846363600 7200 0 EET} + {852069600 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Stockholm b/library/tzdata/Europe/Stockholm index b74d327..1456313 100644 --- a/library/tzdata/Europe/Stockholm +++ b/library/tzdata/Europe/Stockholm @@ -1,250 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Stockholm) { - {-9223372036854775808 4332 0 LMT} - {-2871681132 3614 0 SET} - {-2208992414 3600 0 CET} - {-1692496800 7200 1 CEST} - {-1680483600 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Stockholm) { + {-9223372036854775808 4332 0 LMT} + {-2871681132 3614 0 SET} + {-2208992414 3600 0 CET} + {-1692496800 7200 1 CEST} + {-1680483600 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Tallinn b/library/tzdata/Europe/Tallinn index 17f14e6..03eda88 100644 --- a/library/tzdata/Europe/Tallinn +++ b/library/tzdata/Europe/Tallinn @@ -1,255 +1,255 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Tallinn) { - {-9223372036854775808 5940 0 LMT} - {-2840146740 5940 0 TMT} - {-1638322740 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-1593824400 5940 0 TMT} - {-1535938740 7200 0 EET} - {-927943200 10800 0 MSK} - {-892954800 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-797648400 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {701827200 10800 1 EEST} - {717552000 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {846374400 7200 0 EET} - {859680000 10800 1 EEST} - {877824000 7200 0 EET} - {891129600 10800 1 EEST} - {906415200 10800 0 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {941407200 7200 0 EET} - {1014242400 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Tallinn) { + {-9223372036854775808 5940 0 LMT} + {-2840146740 5940 0 TMT} + {-1638322740 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-1593824400 5940 0 TMT} + {-1535938740 7200 0 EET} + {-927943200 10800 0 MSK} + {-892954800 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-797648400 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {701827200 10800 1 EEST} + {717552000 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {846374400 7200 0 EET} + {859680000 10800 1 EEST} + {877824000 7200 0 EET} + {891129600 10800 1 EEST} + {906415200 10800 0 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {941407200 7200 0 EET} + {1014242400 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Tirane b/library/tzdata/Europe/Tirane index 14ace2e..b0c17b9 100644 --- a/library/tzdata/Europe/Tirane +++ b/library/tzdata/Europe/Tirane @@ -1,263 +1,263 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Tirane) { - {-9223372036854775808 4760 0 LMT} - {-1767230360 3600 0 CET} - {-932346000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-843519600 3600 0 CET} - {136854000 7200 1 CEST} - {149896800 3600 0 CET} - {168130800 7200 1 CEST} - {181432800 3600 0 CET} - {199839600 7200 1 CEST} - {213141600 3600 0 CET} - {231894000 7200 1 CEST} - {244591200 3600 0 CET} - {263257200 7200 1 CEST} - {276040800 3600 0 CET} - {294706800 7200 1 CEST} - {307490400 3600 0 CET} - {326156400 7200 1 CEST} - {339458400 3600 0 CET} - {357087600 7200 1 CEST} - {370389600 3600 0 CET} - {389142000 7200 1 CEST} - {402444000 3600 0 CET} - {419468400 7200 1 CEST} - {433807200 3600 0 CET} - {449622000 7200 1 CEST} - {457480800 7200 0 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Tirane) { + {-9223372036854775808 4760 0 LMT} + {-1767230360 3600 0 CET} + {-932346000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-843519600 3600 0 CET} + {136854000 7200 1 CEST} + {149896800 3600 0 CET} + {168130800 7200 1 CEST} + {181432800 3600 0 CET} + {199839600 7200 1 CEST} + {213141600 3600 0 CET} + {231894000 7200 1 CEST} + {244591200 3600 0 CET} + {263257200 7200 1 CEST} + {276040800 3600 0 CET} + {294706800 7200 1 CEST} + {307490400 3600 0 CET} + {326156400 7200 1 CEST} + {339458400 3600 0 CET} + {357087600 7200 1 CEST} + {370389600 3600 0 CET} + {389142000 7200 1 CEST} + {402444000 3600 0 CET} + {419468400 7200 1 CEST} + {433807200 3600 0 CET} + {449622000 7200 1 CEST} + {457480800 7200 0 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Tiraspol b/library/tzdata/Europe/Tiraspol index ea8f671..703a733 100644 --- a/library/tzdata/Europe/Tiraspol +++ b/library/tzdata/Europe/Tiraspol @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Chisinau)]} { - LoadTimeZoneFile Europe/Chisinau -} -set TZData(:Europe/Tiraspol) $TZData(:Europe/Chisinau) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Chisinau)]} { + LoadTimeZoneFile Europe/Chisinau +} +set TZData(:Europe/Tiraspol) $TZData(:Europe/Chisinau) diff --git a/library/tzdata/Europe/Uzhgorod b/library/tzdata/Europe/Uzhgorod index f6e580b..8e2f658 100644 --- a/library/tzdata/Europe/Uzhgorod +++ b/library/tzdata/Europe/Uzhgorod @@ -1,254 +1,254 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Uzhgorod) { - {-9223372036854775808 5352 0 LMT} - {-2500939752 3600 0 CET} - {-946774800 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796870800 7200 1 CEST} - {-794714400 3600 0 CET} - {-773456400 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {646786800 3600 0 CET} - {670384800 7200 0 EET} - {694216800 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {788911200 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Uzhgorod) { + {-9223372036854775808 5352 0 LMT} + {-2500939752 3600 0 CET} + {-946774800 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796870800 7200 1 CEST} + {-794714400 3600 0 CET} + {-773456400 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {646786800 3600 0 CET} + {670384800 7200 0 EET} + {694216800 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {788911200 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Vaduz b/library/tzdata/Europe/Vaduz index 3118331..e4f18c8 100644 --- a/library/tzdata/Europe/Vaduz +++ b/library/tzdata/Europe/Vaduz @@ -1,245 +1,245 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Vaduz) { - {-9223372036854775808 2284 0 LMT} - {-2385247084 3600 0 CET} - {347151600 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Vaduz) { + {-9223372036854775808 2284 0 LMT} + {-2385247084 3600 0 CET} + {347151600 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Vatican b/library/tzdata/Europe/Vatican index fe50765..b1f3821 100644 --- a/library/tzdata/Europe/Vatican +++ b/library/tzdata/Europe/Vatican @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Rome)]} { - LoadTimeZoneFile Europe/Rome -} -set TZData(:Europe/Vatican) $TZData(:Europe/Rome) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Rome)]} { + LoadTimeZoneFile Europe/Rome +} +set TZData(:Europe/Vatican) $TZData(:Europe/Rome) diff --git a/library/tzdata/Europe/Vienna b/library/tzdata/Europe/Vienna index 41d744d..63bbafb 100644 --- a/library/tzdata/Europe/Vienna +++ b/library/tzdata/Europe/Vienna @@ -1,271 +1,271 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Vienna) { - {-9223372036854775808 3920 0 LMT} - {-2422055120 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-1577926800 3600 0 CET} - {-1569711600 7200 1 CEST} - {-1555801200 3600 0 CET} - {-938905200 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 1 CEST} - {-780188400 3600 0 CET} - {-757386000 3600 0 CET} - {-748479600 7200 1 CEST} - {-733359600 3600 0 CET} - {-717634800 7200 1 CEST} - {-701910000 3600 0 CET} - {-684975600 7200 1 CEST} - {-670460400 3600 0 CET} - {323823600 7200 1 CEST} - {338940000 3600 0 CET} - {347151600 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Vienna) { + {-9223372036854775808 3920 0 LMT} + {-2422055120 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-1577926800 3600 0 CET} + {-1569711600 7200 1 CEST} + {-1555801200 3600 0 CET} + {-938905200 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 1 CEST} + {-780188400 3600 0 CET} + {-757386000 3600 0 CET} + {-748479600 7200 1 CEST} + {-733359600 3600 0 CET} + {-717634800 7200 1 CEST} + {-701910000 3600 0 CET} + {-684975600 7200 1 CEST} + {-670460400 3600 0 CET} + {323823600 7200 1 CEST} + {338940000 3600 0 CET} + {347151600 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Vilnius b/library/tzdata/Europe/Vilnius index 62d5d87..05e2865 100644 --- a/library/tzdata/Europe/Vilnius +++ b/library/tzdata/Europe/Vilnius @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Vilnius) { - {-9223372036854775808 6076 0 LMT} - {-2840146876 5040 0 WMT} - {-1672536240 5736 0 KMT} - {-1585100136 3600 0 CET} - {-1561251600 7200 0 EET} - {-1553565600 3600 0 CET} - {-928198800 10800 0 MSK} - {-900126000 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-802141200 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {638319600 14400 1 MSD} - {654649200 10800 0 MSK} - {670374000 10800 1 EEST} - {686102400 7200 0 EET} - {701827200 10800 1 EEST} - {717552000 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {846374400 7200 0 EET} - {859680000 10800 1 EEST} - {877824000 7200 0 EET} - {883605600 7200 0 EET} - {891133200 7200 0 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 7200 0 EET} - {1041372000 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Vilnius) { + {-9223372036854775808 6076 0 LMT} + {-2840146876 5040 0 WMT} + {-1672536240 5736 0 KMT} + {-1585100136 3600 0 CET} + {-1561251600 7200 0 EET} + {-1553565600 3600 0 CET} + {-928198800 10800 0 MSK} + {-900126000 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-802141200 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 10800 1 EEST} + {686102400 7200 0 EET} + {701827200 10800 1 EEST} + {717552000 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {846374400 7200 0 EET} + {859680000 10800 1 EEST} + {877824000 7200 0 EET} + {883605600 7200 0 EET} + {891133200 7200 0 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 7200 0 EET} + {1041372000 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Volgograd b/library/tzdata/Europe/Volgograd index 49cf1e5..334e05b 100755 --- a/library/tzdata/Europe/Volgograd +++ b/library/tzdata/Europe/Volgograd @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Volgograd) { - {-9223372036854775808 10660 0 LMT} - {-1577761060 10800 0 TSAT} - {-1411873200 10800 0 STAT} - {-1247540400 14400 0 STAT} - {-256881600 14400 0 VOLMMTT} - {354916800 18000 1 VOLST} - {370724400 14400 0 VOLT} - {386452800 18000 1 VOLST} - {402260400 14400 0 VOLT} - {417988800 18000 1 VOLST} - {433796400 14400 0 VOLT} - {449611200 18000 1 VOLST} - {465343200 14400 0 VOLT} - {481068000 18000 1 VOLST} - {496792800 14400 0 VOLT} - {512517600 18000 1 VOLST} - {528242400 14400 0 VOLT} - {543967200 18000 1 VOLST} - {559692000 14400 0 VOLT} - {575416800 18000 1 VOLST} - {591141600 14400 0 VOLT} - {606866400 10800 0 VOLMMTT} - {606870000 14400 1 VOLST} - {622594800 10800 0 VOLT} - {638319600 14400 1 VOLST} - {654649200 10800 0 VOLT} - {670374000 14400 0 VOLT} - {701820000 14400 0 VOLST} - {717534000 10800 0 VOLT} - {733273200 14400 1 VOLST} - {748998000 10800 0 VOLT} - {764722800 14400 1 VOLST} - {780447600 10800 0 VOLT} - {796172400 14400 1 VOLST} - {811897200 10800 0 VOLT} - {828226800 14400 1 VOLST} - {846370800 10800 0 VOLT} - {859676400 14400 1 VOLST} - {877820400 10800 0 VOLT} - {891126000 14400 1 VOLST} - {909270000 10800 0 VOLT} - {922575600 14400 1 VOLST} - {941324400 10800 0 VOLT} - {954025200 14400 1 VOLST} - {972774000 10800 0 VOLT} - {985474800 14400 1 VOLST} - {1004223600 10800 0 VOLT} - {1017529200 14400 1 VOLST} - {1035673200 10800 0 VOLT} - {1048978800 14400 1 VOLST} - {1067122800 10800 0 VOLT} - {1080428400 14400 1 VOLST} - {1099177200 10800 0 VOLT} - {1111878000 14400 1 VOLST} - {1130626800 10800 0 VOLT} - {1143327600 14400 1 VOLST} - {1162076400 10800 0 VOLT} - {1174777200 14400 1 VOLST} - {1193526000 10800 0 VOLT} - {1206831600 14400 1 VOLST} - {1224975600 10800 0 VOLT} - {1238281200 14400 1 VOLST} - {1256425200 10800 0 VOLT} - {1269730800 14400 1 VOLST} - {1288479600 10800 0 VOLT} - {1301180400 14400 1 VOLST} - {1319929200 10800 0 VOLT} - {1332630000 14400 1 VOLST} - {1351378800 10800 0 VOLT} - {1364684400 14400 1 VOLST} - {1382828400 10800 0 VOLT} - {1396134000 14400 1 VOLST} - {1414278000 10800 0 VOLT} - {1427583600 14400 1 VOLST} - {1445727600 10800 0 VOLT} - {1459033200 14400 1 VOLST} - {1477782000 10800 0 VOLT} - {1490482800 14400 1 VOLST} - {1509231600 10800 0 VOLT} - {1521932400 14400 1 VOLST} - {1540681200 10800 0 VOLT} - {1553986800 14400 1 VOLST} - {1572130800 10800 0 VOLT} - {1585436400 14400 1 VOLST} - {1603580400 10800 0 VOLT} - {1616886000 14400 1 VOLST} - {1635634800 10800 0 VOLT} - {1648335600 14400 1 VOLST} - {1667084400 10800 0 VOLT} - {1679785200 14400 1 VOLST} - {1698534000 10800 0 VOLT} - {1711839600 14400 1 VOLST} - {1729983600 10800 0 VOLT} - {1743289200 14400 1 VOLST} - {1761433200 10800 0 VOLT} - {1774738800 14400 1 VOLST} - {1792882800 10800 0 VOLT} - {1806188400 14400 1 VOLST} - {1824937200 10800 0 VOLT} - {1837638000 14400 1 VOLST} - {1856386800 10800 0 VOLT} - {1869087600 14400 1 VOLST} - {1887836400 10800 0 VOLT} - {1901142000 14400 1 VOLST} - {1919286000 10800 0 VOLT} - {1932591600 14400 1 VOLST} - {1950735600 10800 0 VOLT} - {1964041200 14400 1 VOLST} - {1982790000 10800 0 VOLT} - {1995490800 14400 1 VOLST} - {2014239600 10800 0 VOLT} - {2026940400 14400 1 VOLST} - {2045689200 10800 0 VOLT} - {2058390000 14400 1 VOLST} - {2077138800 10800 0 VOLT} - {2090444400 14400 1 VOLST} - {2108588400 10800 0 VOLT} - {2121894000 14400 1 VOLST} - {2140038000 10800 0 VOLT} - {2153343600 14400 1 VOLST} - {2172092400 10800 0 VOLT} - {2184793200 14400 1 VOLST} - {2203542000 10800 0 VOLT} - {2216242800 14400 1 VOLST} - {2234991600 10800 0 VOLT} - {2248297200 14400 1 VOLST} - {2266441200 10800 0 VOLT} - {2279746800 14400 1 VOLST} - {2297890800 10800 0 VOLT} - {2311196400 14400 1 VOLST} - {2329340400 10800 0 VOLT} - {2342646000 14400 1 VOLST} - {2361394800 10800 0 VOLT} - {2374095600 14400 1 VOLST} - {2392844400 10800 0 VOLT} - {2405545200 14400 1 VOLST} - {2424294000 10800 0 VOLT} - {2437599600 14400 1 VOLST} - {2455743600 10800 0 VOLT} - {2469049200 14400 1 VOLST} - {2487193200 10800 0 VOLT} - {2500498800 14400 1 VOLST} - {2519247600 10800 0 VOLT} - {2531948400 14400 1 VOLST} - {2550697200 10800 0 VOLT} - {2563398000 14400 1 VOLST} - {2582146800 10800 0 VOLT} - {2595452400 14400 1 VOLST} - {2613596400 10800 0 VOLT} - {2626902000 14400 1 VOLST} - {2645046000 10800 0 VOLT} - {2658351600 14400 1 VOLST} - {2676495600 10800 0 VOLT} - {2689801200 14400 1 VOLST} - {2708550000 10800 0 VOLT} - {2721250800 14400 1 VOLST} - {2739999600 10800 0 VOLT} - {2752700400 14400 1 VOLST} - {2771449200 10800 0 VOLT} - {2784754800 14400 1 VOLST} - {2802898800 10800 0 VOLT} - {2816204400 14400 1 VOLST} - {2834348400 10800 0 VOLT} - {2847654000 14400 1 VOLST} - {2866402800 10800 0 VOLT} - {2879103600 14400 1 VOLST} - {2897852400 10800 0 VOLT} - {2910553200 14400 1 VOLST} - {2929302000 10800 0 VOLT} - {2942002800 14400 1 VOLST} - {2960751600 10800 0 VOLT} - {2974057200 14400 1 VOLST} - {2992201200 10800 0 VOLT} - {3005506800 14400 1 VOLST} - {3023650800 10800 0 VOLT} - {3036956400 14400 1 VOLST} - {3055705200 10800 0 VOLT} - {3068406000 14400 1 VOLST} - {3087154800 10800 0 VOLT} - {3099855600 14400 1 VOLST} - {3118604400 10800 0 VOLT} - {3131910000 14400 1 VOLST} - {3150054000 10800 0 VOLT} - {3163359600 14400 1 VOLST} - {3181503600 10800 0 VOLT} - {3194809200 14400 1 VOLST} - {3212953200 10800 0 VOLT} - {3226258800 14400 1 VOLST} - {3245007600 10800 0 VOLT} - {3257708400 14400 1 VOLST} - {3276457200 10800 0 VOLT} - {3289158000 14400 1 VOLST} - {3307906800 10800 0 VOLT} - {3321212400 14400 1 VOLST} - {3339356400 10800 0 VOLT} - {3352662000 14400 1 VOLST} - {3370806000 10800 0 VOLT} - {3384111600 14400 1 VOLST} - {3402860400 10800 0 VOLT} - {3415561200 14400 1 VOLST} - {3434310000 10800 0 VOLT} - {3447010800 14400 1 VOLST} - {3465759600 10800 0 VOLT} - {3479065200 14400 1 VOLST} - {3497209200 10800 0 VOLT} - {3510514800 14400 1 VOLST} - {3528658800 10800 0 VOLT} - {3541964400 14400 1 VOLST} - {3560108400 10800 0 VOLT} - {3573414000 14400 1 VOLST} - {3592162800 10800 0 VOLT} - {3604863600 14400 1 VOLST} - {3623612400 10800 0 VOLT} - {3636313200 14400 1 VOLST} - {3655062000 10800 0 VOLT} - {3668367600 14400 1 VOLST} - {3686511600 10800 0 VOLT} - {3699817200 14400 1 VOLST} - {3717961200 10800 0 VOLT} - {3731266800 14400 1 VOLST} - {3750015600 10800 0 VOLT} - {3762716400 14400 1 VOLST} - {3781465200 10800 0 VOLT} - {3794166000 14400 1 VOLST} - {3812914800 10800 0 VOLT} - {3825615600 14400 1 VOLST} - {3844364400 10800 0 VOLT} - {3857670000 14400 1 VOLST} - {3875814000 10800 0 VOLT} - {3889119600 14400 1 VOLST} - {3907263600 10800 0 VOLT} - {3920569200 14400 1 VOLST} - {3939318000 10800 0 VOLT} - {3952018800 14400 1 VOLST} - {3970767600 10800 0 VOLT} - {3983468400 14400 1 VOLST} - {4002217200 10800 0 VOLT} - {4015522800 14400 1 VOLST} - {4033666800 10800 0 VOLT} - {4046972400 14400 1 VOLST} - {4065116400 10800 0 VOLT} - {4078422000 14400 1 VOLST} - {4096566000 10800 0 VOLT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Volgograd) { + {-9223372036854775808 10660 0 LMT} + {-1577761060 10800 0 TSAT} + {-1411873200 10800 0 STAT} + {-1247540400 14400 0 STAT} + {-256881600 14400 0 VOLMMTT} + {354916800 18000 1 VOLST} + {370724400 14400 0 VOLT} + {386452800 18000 1 VOLST} + {402260400 14400 0 VOLT} + {417988800 18000 1 VOLST} + {433796400 14400 0 VOLT} + {449611200 18000 1 VOLST} + {465343200 14400 0 VOLT} + {481068000 18000 1 VOLST} + {496792800 14400 0 VOLT} + {512517600 18000 1 VOLST} + {528242400 14400 0 VOLT} + {543967200 18000 1 VOLST} + {559692000 14400 0 VOLT} + {575416800 18000 1 VOLST} + {591141600 14400 0 VOLT} + {606866400 10800 0 VOLMMTT} + {606870000 14400 1 VOLST} + {622594800 10800 0 VOLT} + {638319600 14400 1 VOLST} + {654649200 10800 0 VOLT} + {670374000 14400 0 VOLT} + {701820000 14400 0 VOLST} + {717534000 10800 0 VOLT} + {733273200 14400 1 VOLST} + {748998000 10800 0 VOLT} + {764722800 14400 1 VOLST} + {780447600 10800 0 VOLT} + {796172400 14400 1 VOLST} + {811897200 10800 0 VOLT} + {828226800 14400 1 VOLST} + {846370800 10800 0 VOLT} + {859676400 14400 1 VOLST} + {877820400 10800 0 VOLT} + {891126000 14400 1 VOLST} + {909270000 10800 0 VOLT} + {922575600 14400 1 VOLST} + {941324400 10800 0 VOLT} + {954025200 14400 1 VOLST} + {972774000 10800 0 VOLT} + {985474800 14400 1 VOLST} + {1004223600 10800 0 VOLT} + {1017529200 14400 1 VOLST} + {1035673200 10800 0 VOLT} + {1048978800 14400 1 VOLST} + {1067122800 10800 0 VOLT} + {1080428400 14400 1 VOLST} + {1099177200 10800 0 VOLT} + {1111878000 14400 1 VOLST} + {1130626800 10800 0 VOLT} + {1143327600 14400 1 VOLST} + {1162076400 10800 0 VOLT} + {1174777200 14400 1 VOLST} + {1193526000 10800 0 VOLT} + {1206831600 14400 1 VOLST} + {1224975600 10800 0 VOLT} + {1238281200 14400 1 VOLST} + {1256425200 10800 0 VOLT} + {1269730800 14400 1 VOLST} + {1288479600 10800 0 VOLT} + {1301180400 14400 1 VOLST} + {1319929200 10800 0 VOLT} + {1332630000 14400 1 VOLST} + {1351378800 10800 0 VOLT} + {1364684400 14400 1 VOLST} + {1382828400 10800 0 VOLT} + {1396134000 14400 1 VOLST} + {1414278000 10800 0 VOLT} + {1427583600 14400 1 VOLST} + {1445727600 10800 0 VOLT} + {1459033200 14400 1 VOLST} + {1477782000 10800 0 VOLT} + {1490482800 14400 1 VOLST} + {1509231600 10800 0 VOLT} + {1521932400 14400 1 VOLST} + {1540681200 10800 0 VOLT} + {1553986800 14400 1 VOLST} + {1572130800 10800 0 VOLT} + {1585436400 14400 1 VOLST} + {1603580400 10800 0 VOLT} + {1616886000 14400 1 VOLST} + {1635634800 10800 0 VOLT} + {1648335600 14400 1 VOLST} + {1667084400 10800 0 VOLT} + {1679785200 14400 1 VOLST} + {1698534000 10800 0 VOLT} + {1711839600 14400 1 VOLST} + {1729983600 10800 0 VOLT} + {1743289200 14400 1 VOLST} + {1761433200 10800 0 VOLT} + {1774738800 14400 1 VOLST} + {1792882800 10800 0 VOLT} + {1806188400 14400 1 VOLST} + {1824937200 10800 0 VOLT} + {1837638000 14400 1 VOLST} + {1856386800 10800 0 VOLT} + {1869087600 14400 1 VOLST} + {1887836400 10800 0 VOLT} + {1901142000 14400 1 VOLST} + {1919286000 10800 0 VOLT} + {1932591600 14400 1 VOLST} + {1950735600 10800 0 VOLT} + {1964041200 14400 1 VOLST} + {1982790000 10800 0 VOLT} + {1995490800 14400 1 VOLST} + {2014239600 10800 0 VOLT} + {2026940400 14400 1 VOLST} + {2045689200 10800 0 VOLT} + {2058390000 14400 1 VOLST} + {2077138800 10800 0 VOLT} + {2090444400 14400 1 VOLST} + {2108588400 10800 0 VOLT} + {2121894000 14400 1 VOLST} + {2140038000 10800 0 VOLT} + {2153343600 14400 1 VOLST} + {2172092400 10800 0 VOLT} + {2184793200 14400 1 VOLST} + {2203542000 10800 0 VOLT} + {2216242800 14400 1 VOLST} + {2234991600 10800 0 VOLT} + {2248297200 14400 1 VOLST} + {2266441200 10800 0 VOLT} + {2279746800 14400 1 VOLST} + {2297890800 10800 0 VOLT} + {2311196400 14400 1 VOLST} + {2329340400 10800 0 VOLT} + {2342646000 14400 1 VOLST} + {2361394800 10800 0 VOLT} + {2374095600 14400 1 VOLST} + {2392844400 10800 0 VOLT} + {2405545200 14400 1 VOLST} + {2424294000 10800 0 VOLT} + {2437599600 14400 1 VOLST} + {2455743600 10800 0 VOLT} + {2469049200 14400 1 VOLST} + {2487193200 10800 0 VOLT} + {2500498800 14400 1 VOLST} + {2519247600 10800 0 VOLT} + {2531948400 14400 1 VOLST} + {2550697200 10800 0 VOLT} + {2563398000 14400 1 VOLST} + {2582146800 10800 0 VOLT} + {2595452400 14400 1 VOLST} + {2613596400 10800 0 VOLT} + {2626902000 14400 1 VOLST} + {2645046000 10800 0 VOLT} + {2658351600 14400 1 VOLST} + {2676495600 10800 0 VOLT} + {2689801200 14400 1 VOLST} + {2708550000 10800 0 VOLT} + {2721250800 14400 1 VOLST} + {2739999600 10800 0 VOLT} + {2752700400 14400 1 VOLST} + {2771449200 10800 0 VOLT} + {2784754800 14400 1 VOLST} + {2802898800 10800 0 VOLT} + {2816204400 14400 1 VOLST} + {2834348400 10800 0 VOLT} + {2847654000 14400 1 VOLST} + {2866402800 10800 0 VOLT} + {2879103600 14400 1 VOLST} + {2897852400 10800 0 VOLT} + {2910553200 14400 1 VOLST} + {2929302000 10800 0 VOLT} + {2942002800 14400 1 VOLST} + {2960751600 10800 0 VOLT} + {2974057200 14400 1 VOLST} + {2992201200 10800 0 VOLT} + {3005506800 14400 1 VOLST} + {3023650800 10800 0 VOLT} + {3036956400 14400 1 VOLST} + {3055705200 10800 0 VOLT} + {3068406000 14400 1 VOLST} + {3087154800 10800 0 VOLT} + {3099855600 14400 1 VOLST} + {3118604400 10800 0 VOLT} + {3131910000 14400 1 VOLST} + {3150054000 10800 0 VOLT} + {3163359600 14400 1 VOLST} + {3181503600 10800 0 VOLT} + {3194809200 14400 1 VOLST} + {3212953200 10800 0 VOLT} + {3226258800 14400 1 VOLST} + {3245007600 10800 0 VOLT} + {3257708400 14400 1 VOLST} + {3276457200 10800 0 VOLT} + {3289158000 14400 1 VOLST} + {3307906800 10800 0 VOLT} + {3321212400 14400 1 VOLST} + {3339356400 10800 0 VOLT} + {3352662000 14400 1 VOLST} + {3370806000 10800 0 VOLT} + {3384111600 14400 1 VOLST} + {3402860400 10800 0 VOLT} + {3415561200 14400 1 VOLST} + {3434310000 10800 0 VOLT} + {3447010800 14400 1 VOLST} + {3465759600 10800 0 VOLT} + {3479065200 14400 1 VOLST} + {3497209200 10800 0 VOLT} + {3510514800 14400 1 VOLST} + {3528658800 10800 0 VOLT} + {3541964400 14400 1 VOLST} + {3560108400 10800 0 VOLT} + {3573414000 14400 1 VOLST} + {3592162800 10800 0 VOLT} + {3604863600 14400 1 VOLST} + {3623612400 10800 0 VOLT} + {3636313200 14400 1 VOLST} + {3655062000 10800 0 VOLT} + {3668367600 14400 1 VOLST} + {3686511600 10800 0 VOLT} + {3699817200 14400 1 VOLST} + {3717961200 10800 0 VOLT} + {3731266800 14400 1 VOLST} + {3750015600 10800 0 VOLT} + {3762716400 14400 1 VOLST} + {3781465200 10800 0 VOLT} + {3794166000 14400 1 VOLST} + {3812914800 10800 0 VOLT} + {3825615600 14400 1 VOLST} + {3844364400 10800 0 VOLT} + {3857670000 14400 1 VOLST} + {3875814000 10800 0 VOLT} + {3889119600 14400 1 VOLST} + {3907263600 10800 0 VOLT} + {3920569200 14400 1 VOLST} + {3939318000 10800 0 VOLT} + {3952018800 14400 1 VOLST} + {3970767600 10800 0 VOLT} + {3983468400 14400 1 VOLST} + {4002217200 10800 0 VOLT} + {4015522800 14400 1 VOLST} + {4033666800 10800 0 VOLT} + {4046972400 14400 1 VOLST} + {4065116400 10800 0 VOLT} + {4078422000 14400 1 VOLST} + {4096566000 10800 0 VOLT} +} diff --git a/library/tzdata/Europe/Warsaw b/library/tzdata/Europe/Warsaw index 6288a8a..42d901f 100644 --- a/library/tzdata/Europe/Warsaw +++ b/library/tzdata/Europe/Warsaw @@ -1,296 +1,296 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Warsaw) { - {-9223372036854775808 5040 0 LMT} - {-2840145840 5040 0 WMT} - {-1717032240 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618696800 7200 0 EET} - {-1600473600 10800 1 EEST} - {-1587168000 7200 0 EET} - {-931734000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796870800 7200 0 CEST} - {-796608000 3600 0 CET} - {-778726800 7200 1 CEST} - {-762660000 3600 0 CET} - {-748486800 7200 1 CEST} - {-733273200 3600 0 CET} - {-715215600 7200 1 CEST} - {-701910000 3600 0 CET} - {-684975600 7200 1 CEST} - {-670460400 3600 0 CET} - {-654130800 7200 1 CEST} - {-639010800 3600 0 CET} - {-397094400 7200 1 CEST} - {-386812800 3600 0 CET} - {-371088000 7200 1 CEST} - {-355363200 3600 0 CET} - {-334195200 7200 1 CEST} - {-323308800 3600 0 CET} - {-307584000 7200 1 CEST} - {-291859200 3600 0 CET} - {-271296000 7200 1 CEST} - {-260409600 3600 0 CET} - {-239846400 7200 1 CEST} - {-228960000 3600 0 CET} - {-208396800 7200 1 CEST} - {-197510400 3600 0 CET} - {-176342400 7200 1 CEST} - {-166060800 3600 0 CET} - {220921200 3600 0 CET} - {228873600 7200 1 CEST} - {243993600 3600 0 CET} - {260323200 7200 1 CEST} - {276048000 3600 0 CET} - {291772800 7200 1 CEST} - {307497600 3600 0 CET} - {323827200 7200 1 CEST} - {338947200 3600 0 CET} - {354672000 7200 1 CEST} - {370396800 3600 0 CET} - {386121600 7200 1 CEST} - {401846400 3600 0 CET} - {417571200 7200 1 CEST} - {433296000 3600 0 CET} - {449020800 7200 1 CEST} - {465350400 3600 0 CET} - {481075200 7200 1 CEST} - {496800000 3600 0 CET} - {512524800 7200 1 CEST} - {528249600 3600 0 CET} - {543974400 7200 1 CEST} - {559699200 3600 0 CET} - {567990000 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Warsaw) { + {-9223372036854775808 5040 0 LMT} + {-2840145840 5040 0 WMT} + {-1717032240 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618696800 7200 0 EET} + {-1600473600 10800 1 EEST} + {-1587168000 7200 0 EET} + {-931734000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796870800 7200 0 CEST} + {-796608000 3600 0 CET} + {-778726800 7200 1 CEST} + {-762660000 3600 0 CET} + {-748486800 7200 1 CEST} + {-733273200 3600 0 CET} + {-715215600 7200 1 CEST} + {-701910000 3600 0 CET} + {-684975600 7200 1 CEST} + {-670460400 3600 0 CET} + {-654130800 7200 1 CEST} + {-639010800 3600 0 CET} + {-397094400 7200 1 CEST} + {-386812800 3600 0 CET} + {-371088000 7200 1 CEST} + {-355363200 3600 0 CET} + {-334195200 7200 1 CEST} + {-323308800 3600 0 CET} + {-307584000 7200 1 CEST} + {-291859200 3600 0 CET} + {-271296000 7200 1 CEST} + {-260409600 3600 0 CET} + {-239846400 7200 1 CEST} + {-228960000 3600 0 CET} + {-208396800 7200 1 CEST} + {-197510400 3600 0 CET} + {-176342400 7200 1 CEST} + {-166060800 3600 0 CET} + {220921200 3600 0 CET} + {228873600 7200 1 CEST} + {243993600 3600 0 CET} + {260323200 7200 1 CEST} + {276048000 3600 0 CET} + {291772800 7200 1 CEST} + {307497600 3600 0 CET} + {323827200 7200 1 CEST} + {338947200 3600 0 CET} + {354672000 7200 1 CEST} + {370396800 3600 0 CET} + {386121600 7200 1 CEST} + {401846400 3600 0 CET} + {417571200 7200 1 CEST} + {433296000 3600 0 CET} + {449020800 7200 1 CEST} + {465350400 3600 0 CET} + {481075200 7200 1 CEST} + {496800000 3600 0 CET} + {512524800 7200 1 CEST} + {528249600 3600 0 CET} + {543974400 7200 1 CEST} + {559699200 3600 0 CET} + {567990000 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Zagreb b/library/tzdata/Europe/Zagreb index 46319a4..3626797 100644 --- a/library/tzdata/Europe/Zagreb +++ b/library/tzdata/Europe/Zagreb @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Zagreb) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Zagreb) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/Zaporozhye b/library/tzdata/Europe/Zaporozhye index 01418cd..cb275cf 100644 --- a/library/tzdata/Europe/Zaporozhye +++ b/library/tzdata/Europe/Zaporozhye @@ -1,252 +1,252 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Zaporozhye) { - {-9223372036854775808 8440 0 LMT} - {-2840149240 8400 0 CUT} - {-1441160400 7200 0 EET} - {-1247536800 10800 0 MSK} - {-894769200 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-826419600 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {638319600 14400 1 MSD} - {654649200 10800 0 MSK} - {670374000 10800 0 EEST} - {686091600 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {788911200 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Zaporozhye) { + {-9223372036854775808 8440 0 LMT} + {-2840149240 8400 0 CUT} + {-1441160400 7200 0 EET} + {-1247536800 10800 0 MSK} + {-894769200 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-826419600 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 10800 0 EEST} + {686091600 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {788911200 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Zurich b/library/tzdata/Europe/Zurich index b6b44d1..efd6c41 100644 --- a/library/tzdata/Europe/Zurich +++ b/library/tzdata/Europe/Zurich @@ -1,252 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Zurich) { - {-9223372036854775808 2048 0 LMT} - {-3827954048 1784 0 BMT} - {-2385246584 3600 0 CET} - {-920336400 7200 1 CEST} - {-915242400 3600 0 CET} - {-904518000 7200 1 CEST} - {-891223200 3600 0 CET} - {-873068400 7200 1 CEST} - {-859773600 3600 0 CET} - {347151600 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Zurich) { + {-9223372036854775808 2048 0 LMT} + {-3827954048 1784 0 BMT} + {-2385246584 3600 0 CET} + {-904435200 7200 1 CEST} + {-891129600 3600 0 CET} + {-872985600 7200 1 CEST} + {-859680000 3600 0 CET} + {347151600 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/GB b/library/tzdata/GB index 72d77ee..96c42ae 100644 --- a/library/tzdata/GB +++ b/library/tzdata/GB @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:GB) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:GB) $TZData(:Europe/London) diff --git a/library/tzdata/GB-Eire b/library/tzdata/GB-Eire index 1622417..38f7a95 100644 --- a/library/tzdata/GB-Eire +++ b/library/tzdata/GB-Eire @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:GB-Eire) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:GB-Eire) $TZData(:Europe/London) diff --git a/library/tzdata/GMT b/library/tzdata/GMT index 4258564..6f6874a 100644 --- a/library/tzdata/GMT +++ b/library/tzdata/GMT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:GMT) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:GMT) $TZData(:Etc/GMT) diff --git a/library/tzdata/GMT+0 b/library/tzdata/GMT+0 index a1e8126..08bdf7c 100644 --- a/library/tzdata/GMT+0 +++ b/library/tzdata/GMT+0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:GMT+0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:GMT+0) $TZData(:Etc/GMT) diff --git a/library/tzdata/GMT-0 b/library/tzdata/GMT-0 index 04ccafe..9240d42 100644 --- a/library/tzdata/GMT-0 +++ b/library/tzdata/GMT-0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:GMT-0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:GMT-0) $TZData(:Etc/GMT) diff --git a/library/tzdata/GMT0 b/library/tzdata/GMT0 index 92e95a3..80f6d32 100644 --- a/library/tzdata/GMT0 +++ b/library/tzdata/GMT0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:GMT0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:GMT0) $TZData(:Etc/GMT) diff --git a/library/tzdata/Greenwich b/library/tzdata/Greenwich index 6115233..2d18a88 100644 --- a/library/tzdata/Greenwich +++ b/library/tzdata/Greenwich @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Greenwich) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Greenwich) $TZData(:Etc/GMT) diff --git a/library/tzdata/HST b/library/tzdata/HST index fea7f14..4ac7487 100644 --- a/library/tzdata/HST +++ b/library/tzdata/HST @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:HST) { - {-9223372036854775808 -36000 0 HST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:HST) { + {-9223372036854775808 -36000 0 HST} +} diff --git a/library/tzdata/Hongkong b/library/tzdata/Hongkong index f9d4dac..aa3bbbd 100644 --- a/library/tzdata/Hongkong +++ b/library/tzdata/Hongkong @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Hong_Kong)]} { - LoadTimeZoneFile Asia/Hong_Kong -} -set TZData(:Hongkong) $TZData(:Asia/Hong_Kong) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Hong_Kong)]} { + LoadTimeZoneFile Asia/Hong_Kong +} +set TZData(:Hongkong) $TZData(:Asia/Hong_Kong) diff --git a/library/tzdata/Iceland b/library/tzdata/Iceland index eb3f3eb..58ad2cf 100644 --- a/library/tzdata/Iceland +++ b/library/tzdata/Iceland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Atlantic/Reykjavik)]} { - LoadTimeZoneFile Atlantic/Reykjavik -} -set TZData(:Iceland) $TZData(:Atlantic/Reykjavik) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Atlantic/Reykjavik)]} { + LoadTimeZoneFile Atlantic/Reykjavik +} +set TZData(:Iceland) $TZData(:Atlantic/Reykjavik) diff --git a/library/tzdata/Indian/Antananarivo b/library/tzdata/Indian/Antananarivo index 217715e..99dbc34 100644 --- a/library/tzdata/Indian/Antananarivo +++ b/library/tzdata/Indian/Antananarivo @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Antananarivo) { - {-9223372036854775808 11404 0 LMT} - {-1846293004 10800 0 EAT} - {-499924800 14400 1 EAST} - {-492062400 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Antananarivo) { + {-9223372036854775808 11404 0 LMT} + {-1846293004 10800 0 EAT} + {-499924800 14400 1 EAST} + {-492062400 10800 0 EAT} +} diff --git a/library/tzdata/Indian/Chagos b/library/tzdata/Indian/Chagos index a5cec61..222d217 100644 --- a/library/tzdata/Indian/Chagos +++ b/library/tzdata/Indian/Chagos @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Chagos) { - {-9223372036854775808 17380 0 LMT} - {-1988167780 18000 0 IOT} - {820436400 21600 0 IOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Chagos) { + {-9223372036854775808 17380 0 LMT} + {-1988167780 18000 0 IOT} + {820436400 21600 0 IOT} +} diff --git a/library/tzdata/Indian/Christmas b/library/tzdata/Indian/Christmas index c36e973..920ffa8 100644 --- a/library/tzdata/Indian/Christmas +++ b/library/tzdata/Indian/Christmas @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Christmas) { - {-9223372036854775808 25372 0 LMT} - {-2364102172 25200 0 CXT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Christmas) { + {-9223372036854775808 25372 0 LMT} + {-2364102172 25200 0 CXT} +} diff --git a/library/tzdata/Indian/Cocos b/library/tzdata/Indian/Cocos index a63ae68..0619eea 100644 --- a/library/tzdata/Indian/Cocos +++ b/library/tzdata/Indian/Cocos @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Cocos) { - {-9223372036854775808 23260 0 LMT} - {-2209012060 23400 0 CCT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Cocos) { + {-9223372036854775808 23260 0 LMT} + {-2209012060 23400 0 CCT} +} diff --git a/library/tzdata/Indian/Comoro b/library/tzdata/Indian/Comoro index 0b3c33a..bbc5f37 100644 --- a/library/tzdata/Indian/Comoro +++ b/library/tzdata/Indian/Comoro @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Comoro) { - {-9223372036854775808 10384 0 LMT} - {-1846291984 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Comoro) { + {-9223372036854775808 10384 0 LMT} + {-1846291984 10800 0 EAT} +} diff --git a/library/tzdata/Indian/Kerguelen b/library/tzdata/Indian/Kerguelen index b41b85a..23d30e2 100644 --- a/library/tzdata/Indian/Kerguelen +++ b/library/tzdata/Indian/Kerguelen @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Kerguelen) { - {-9223372036854775808 0 0 zzz} - {-631152000 18000 0 TFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Kerguelen) { + {-9223372036854775808 0 0 zzz} + {-631152000 18000 0 TFT} +} diff --git a/library/tzdata/Indian/Mahe b/library/tzdata/Indian/Mahe index c88a24b..7602932 100644 --- a/library/tzdata/Indian/Mahe +++ b/library/tzdata/Indian/Mahe @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Mahe) { - {-9223372036854775808 13308 0 LMT} - {-2006653308 14400 0 SCT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Mahe) { + {-9223372036854775808 13308 0 LMT} + {-2006653308 14400 0 SCT} +} diff --git a/library/tzdata/Indian/Maldives b/library/tzdata/Indian/Maldives index 2c2c739..2bcc8cf 100644 --- a/library/tzdata/Indian/Maldives +++ b/library/tzdata/Indian/Maldives @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Maldives) { - {-9223372036854775808 17640 0 LMT} - {-2840158440 17640 0 MMT} - {-315636840 18000 0 MVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Maldives) { + {-9223372036854775808 17640 0 LMT} + {-2840158440 17640 0 MMT} + {-315636840 18000 0 MVT} +} diff --git a/library/tzdata/Indian/Mauritius b/library/tzdata/Indian/Mauritius index 69fe8fe..89c3c10 100644 --- a/library/tzdata/Indian/Mauritius +++ b/library/tzdata/Indian/Mauritius @@ -1,191 +1,191 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Mauritius) { - {-9223372036854775808 13800 0 LMT} - {-1988164200 14400 0 MUT} - {403041600 18000 1 MUST} - {417034800 14400 0 MUT} - {1224972000 18000 1 MUST} - {1238277600 14400 0 MUT} - {1256421600 18000 1 MUST} - {1269727200 14400 0 MUT} - {1288476000 18000 1 MUST} - {1301176800 14400 0 MUT} - {1319925600 18000 1 MUST} - {1332626400 14400 0 MUT} - {1351375200 18000 1 MUST} - {1364680800 14400 0 MUT} - {1382824800 18000 1 MUST} - {1396130400 14400 0 MUT} - {1414274400 18000 1 MUST} - {1427580000 14400 0 MUT} - {1445724000 18000 1 MUST} - {1459029600 14400 0 MUT} - {1477778400 18000 1 MUST} - {1490479200 14400 0 MUT} - {1509228000 18000 1 MUST} - {1521928800 14400 0 MUT} - {1540677600 18000 1 MUST} - {1553983200 14400 0 MUT} - {1572127200 18000 1 MUST} - {1585432800 14400 0 MUT} - {1603576800 18000 1 MUST} - {1616882400 14400 0 MUT} - {1635631200 18000 1 MUST} - {1648332000 14400 0 MUT} - {1667080800 18000 1 MUST} - {1679781600 14400 0 MUT} - {1698530400 18000 1 MUST} - {1711836000 14400 0 MUT} - {1729980000 18000 1 MUST} - {1743285600 14400 0 MUT} - {1761429600 18000 1 MUST} - {1774735200 14400 0 MUT} - {1792879200 18000 1 MUST} - {1806184800 14400 0 MUT} - {1824933600 18000 1 MUST} - {1837634400 14400 0 MUT} - {1856383200 18000 1 MUST} - {1869084000 14400 0 MUT} - {1887832800 18000 1 MUST} - {1901138400 14400 0 MUT} - {1919282400 18000 1 MUST} - {1932588000 14400 0 MUT} - {1950732000 18000 1 MUST} - {1964037600 14400 0 MUT} - {1982786400 18000 1 MUST} - {1995487200 14400 0 MUT} - {2014236000 18000 1 MUST} - {2026936800 14400 0 MUT} - {2045685600 18000 1 MUST} - {2058386400 14400 0 MUT} - {2077135200 18000 1 MUST} - {2090440800 14400 0 MUT} - {2108584800 18000 1 MUST} - {2121890400 14400 0 MUT} - {2140034400 18000 1 MUST} - {2153340000 14400 0 MUT} - {2172088800 18000 1 MUST} - {2184789600 14400 0 MUT} - {2203538400 18000 1 MUST} - {2216239200 14400 0 MUT} - {2234988000 18000 1 MUST} - {2248293600 14400 0 MUT} - {2266437600 18000 1 MUST} - {2279743200 14400 0 MUT} - {2297887200 18000 1 MUST} - {2311192800 14400 0 MUT} - {2329336800 18000 1 MUST} - {2342642400 14400 0 MUT} - {2361391200 18000 1 MUST} - {2374092000 14400 0 MUT} - {2392840800 18000 1 MUST} - {2405541600 14400 0 MUT} - {2424290400 18000 1 MUST} - {2437596000 14400 0 MUT} - {2455740000 18000 1 MUST} - {2469045600 14400 0 MUT} - {2487189600 18000 1 MUST} - {2500495200 14400 0 MUT} - {2519244000 18000 1 MUST} - {2531944800 14400 0 MUT} - {2550693600 18000 1 MUST} - {2563394400 14400 0 MUT} - {2582143200 18000 1 MUST} - {2595448800 14400 0 MUT} - {2613592800 18000 1 MUST} - {2626898400 14400 0 MUT} - {2645042400 18000 1 MUST} - {2658348000 14400 0 MUT} - {2676492000 18000 1 MUST} - {2689797600 14400 0 MUT} - {2708546400 18000 1 MUST} - {2721247200 14400 0 MUT} - {2739996000 18000 1 MUST} - {2752696800 14400 0 MUT} - {2771445600 18000 1 MUST} - {2784751200 14400 0 MUT} - {2802895200 18000 1 MUST} - {2816200800 14400 0 MUT} - {2834344800 18000 1 MUST} - {2847650400 14400 0 MUT} - {2866399200 18000 1 MUST} - {2879100000 14400 0 MUT} - {2897848800 18000 1 MUST} - {2910549600 14400 0 MUT} - {2929298400 18000 1 MUST} - {2941999200 14400 0 MUT} - {2960748000 18000 1 MUST} - {2974053600 14400 0 MUT} - {2992197600 18000 1 MUST} - {3005503200 14400 0 MUT} - {3023647200 18000 1 MUST} - {3036952800 14400 0 MUT} - {3055701600 18000 1 MUST} - {3068402400 14400 0 MUT} - {3087151200 18000 1 MUST} - {3099852000 14400 0 MUT} - {3118600800 18000 1 MUST} - {3131906400 14400 0 MUT} - {3150050400 18000 1 MUST} - {3163356000 14400 0 MUT} - {3181500000 18000 1 MUST} - {3194805600 14400 0 MUT} - {3212949600 18000 1 MUST} - {3226255200 14400 0 MUT} - {3245004000 18000 1 MUST} - {3257704800 14400 0 MUT} - {3276453600 18000 1 MUST} - {3289154400 14400 0 MUT} - {3307903200 18000 1 MUST} - {3321208800 14400 0 MUT} - {3339352800 18000 1 MUST} - {3352658400 14400 0 MUT} - {3370802400 18000 1 MUST} - {3384108000 14400 0 MUT} - {3402856800 18000 1 MUST} - {3415557600 14400 0 MUT} - {3434306400 18000 1 MUST} - {3447007200 14400 0 MUT} - {3465756000 18000 1 MUST} - {3479061600 14400 0 MUT} - {3497205600 18000 1 MUST} - {3510511200 14400 0 MUT} - {3528655200 18000 1 MUST} - {3541960800 14400 0 MUT} - {3560104800 18000 1 MUST} - {3573410400 14400 0 MUT} - {3592159200 18000 1 MUST} - {3604860000 14400 0 MUT} - {3623608800 18000 1 MUST} - {3636309600 14400 0 MUT} - {3655058400 18000 1 MUST} - {3668364000 14400 0 MUT} - {3686508000 18000 1 MUST} - {3699813600 14400 0 MUT} - {3717957600 18000 1 MUST} - {3731263200 14400 0 MUT} - {3750012000 18000 1 MUST} - {3762712800 14400 0 MUT} - {3781461600 18000 1 MUST} - {3794162400 14400 0 MUT} - {3812911200 18000 1 MUST} - {3825612000 14400 0 MUT} - {3844360800 18000 1 MUST} - {3857666400 14400 0 MUT} - {3875810400 18000 1 MUST} - {3889116000 14400 0 MUT} - {3907260000 18000 1 MUST} - {3920565600 14400 0 MUT} - {3939314400 18000 1 MUST} - {3952015200 14400 0 MUT} - {3970764000 18000 1 MUST} - {3983464800 14400 0 MUT} - {4002213600 18000 1 MUST} - {4015519200 14400 0 MUT} - {4033663200 18000 1 MUST} - {4046968800 14400 0 MUT} - {4065112800 18000 1 MUST} - {4078418400 14400 0 MUT} - {4096562400 18000 1 MUST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Mauritius) { + {-9223372036854775808 13800 0 LMT} + {-1988164200 14400 0 MUT} + {403041600 18000 1 MUST} + {417034800 14400 0 MUT} + {1224972000 18000 1 MUST} + {1238277600 14400 0 MUT} + {1256421600 18000 1 MUST} + {1269727200 14400 0 MUT} + {1288476000 18000 1 MUST} + {1301176800 14400 0 MUT} + {1319925600 18000 1 MUST} + {1332626400 14400 0 MUT} + {1351375200 18000 1 MUST} + {1364680800 14400 0 MUT} + {1382824800 18000 1 MUST} + {1396130400 14400 0 MUT} + {1414274400 18000 1 MUST} + {1427580000 14400 0 MUT} + {1445724000 18000 1 MUST} + {1459029600 14400 0 MUT} + {1477778400 18000 1 MUST} + {1490479200 14400 0 MUT} + {1509228000 18000 1 MUST} + {1521928800 14400 0 MUT} + {1540677600 18000 1 MUST} + {1553983200 14400 0 MUT} + {1572127200 18000 1 MUST} + {1585432800 14400 0 MUT} + {1603576800 18000 1 MUST} + {1616882400 14400 0 MUT} + {1635631200 18000 1 MUST} + {1648332000 14400 0 MUT} + {1667080800 18000 1 MUST} + {1679781600 14400 0 MUT} + {1698530400 18000 1 MUST} + {1711836000 14400 0 MUT} + {1729980000 18000 1 MUST} + {1743285600 14400 0 MUT} + {1761429600 18000 1 MUST} + {1774735200 14400 0 MUT} + {1792879200 18000 1 MUST} + {1806184800 14400 0 MUT} + {1824933600 18000 1 MUST} + {1837634400 14400 0 MUT} + {1856383200 18000 1 MUST} + {1869084000 14400 0 MUT} + {1887832800 18000 1 MUST} + {1901138400 14400 0 MUT} + {1919282400 18000 1 MUST} + {1932588000 14400 0 MUT} + {1950732000 18000 1 MUST} + {1964037600 14400 0 MUT} + {1982786400 18000 1 MUST} + {1995487200 14400 0 MUT} + {2014236000 18000 1 MUST} + {2026936800 14400 0 MUT} + {2045685600 18000 1 MUST} + {2058386400 14400 0 MUT} + {2077135200 18000 1 MUST} + {2090440800 14400 0 MUT} + {2108584800 18000 1 MUST} + {2121890400 14400 0 MUT} + {2140034400 18000 1 MUST} + {2153340000 14400 0 MUT} + {2172088800 18000 1 MUST} + {2184789600 14400 0 MUT} + {2203538400 18000 1 MUST} + {2216239200 14400 0 MUT} + {2234988000 18000 1 MUST} + {2248293600 14400 0 MUT} + {2266437600 18000 1 MUST} + {2279743200 14400 0 MUT} + {2297887200 18000 1 MUST} + {2311192800 14400 0 MUT} + {2329336800 18000 1 MUST} + {2342642400 14400 0 MUT} + {2361391200 18000 1 MUST} + {2374092000 14400 0 MUT} + {2392840800 18000 1 MUST} + {2405541600 14400 0 MUT} + {2424290400 18000 1 MUST} + {2437596000 14400 0 MUT} + {2455740000 18000 1 MUST} + {2469045600 14400 0 MUT} + {2487189600 18000 1 MUST} + {2500495200 14400 0 MUT} + {2519244000 18000 1 MUST} + {2531944800 14400 0 MUT} + {2550693600 18000 1 MUST} + {2563394400 14400 0 MUT} + {2582143200 18000 1 MUST} + {2595448800 14400 0 MUT} + {2613592800 18000 1 MUST} + {2626898400 14400 0 MUT} + {2645042400 18000 1 MUST} + {2658348000 14400 0 MUT} + {2676492000 18000 1 MUST} + {2689797600 14400 0 MUT} + {2708546400 18000 1 MUST} + {2721247200 14400 0 MUT} + {2739996000 18000 1 MUST} + {2752696800 14400 0 MUT} + {2771445600 18000 1 MUST} + {2784751200 14400 0 MUT} + {2802895200 18000 1 MUST} + {2816200800 14400 0 MUT} + {2834344800 18000 1 MUST} + {2847650400 14400 0 MUT} + {2866399200 18000 1 MUST} + {2879100000 14400 0 MUT} + {2897848800 18000 1 MUST} + {2910549600 14400 0 MUT} + {2929298400 18000 1 MUST} + {2941999200 14400 0 MUT} + {2960748000 18000 1 MUST} + {2974053600 14400 0 MUT} + {2992197600 18000 1 MUST} + {3005503200 14400 0 MUT} + {3023647200 18000 1 MUST} + {3036952800 14400 0 MUT} + {3055701600 18000 1 MUST} + {3068402400 14400 0 MUT} + {3087151200 18000 1 MUST} + {3099852000 14400 0 MUT} + {3118600800 18000 1 MUST} + {3131906400 14400 0 MUT} + {3150050400 18000 1 MUST} + {3163356000 14400 0 MUT} + {3181500000 18000 1 MUST} + {3194805600 14400 0 MUT} + {3212949600 18000 1 MUST} + {3226255200 14400 0 MUT} + {3245004000 18000 1 MUST} + {3257704800 14400 0 MUT} + {3276453600 18000 1 MUST} + {3289154400 14400 0 MUT} + {3307903200 18000 1 MUST} + {3321208800 14400 0 MUT} + {3339352800 18000 1 MUST} + {3352658400 14400 0 MUT} + {3370802400 18000 1 MUST} + {3384108000 14400 0 MUT} + {3402856800 18000 1 MUST} + {3415557600 14400 0 MUT} + {3434306400 18000 1 MUST} + {3447007200 14400 0 MUT} + {3465756000 18000 1 MUST} + {3479061600 14400 0 MUT} + {3497205600 18000 1 MUST} + {3510511200 14400 0 MUT} + {3528655200 18000 1 MUST} + {3541960800 14400 0 MUT} + {3560104800 18000 1 MUST} + {3573410400 14400 0 MUT} + {3592159200 18000 1 MUST} + {3604860000 14400 0 MUT} + {3623608800 18000 1 MUST} + {3636309600 14400 0 MUT} + {3655058400 18000 1 MUST} + {3668364000 14400 0 MUT} + {3686508000 18000 1 MUST} + {3699813600 14400 0 MUT} + {3717957600 18000 1 MUST} + {3731263200 14400 0 MUT} + {3750012000 18000 1 MUST} + {3762712800 14400 0 MUT} + {3781461600 18000 1 MUST} + {3794162400 14400 0 MUT} + {3812911200 18000 1 MUST} + {3825612000 14400 0 MUT} + {3844360800 18000 1 MUST} + {3857666400 14400 0 MUT} + {3875810400 18000 1 MUST} + {3889116000 14400 0 MUT} + {3907260000 18000 1 MUST} + {3920565600 14400 0 MUT} + {3939314400 18000 1 MUST} + {3952015200 14400 0 MUT} + {3970764000 18000 1 MUST} + {3983464800 14400 0 MUT} + {4002213600 18000 1 MUST} + {4015519200 14400 0 MUT} + {4033663200 18000 1 MUST} + {4046968800 14400 0 MUT} + {4065112800 18000 1 MUST} + {4078418400 14400 0 MUT} + {4096562400 18000 1 MUST} +} diff --git a/library/tzdata/Indian/Mayotte b/library/tzdata/Indian/Mayotte index 0fe5f56..e93ddcd 100644 --- a/library/tzdata/Indian/Mayotte +++ b/library/tzdata/Indian/Mayotte @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Mayotte) { - {-9223372036854775808 10856 0 LMT} - {-1846292456 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Mayotte) { + {-9223372036854775808 10856 0 LMT} + {-1846292456 10800 0 EAT} +} diff --git a/library/tzdata/Indian/Reunion b/library/tzdata/Indian/Reunion index de2dd60..c2e90ef 100644 --- a/library/tzdata/Indian/Reunion +++ b/library/tzdata/Indian/Reunion @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Reunion) { - {-9223372036854775808 13312 0 LMT} - {-1848886912 14400 0 RET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Reunion) { + {-9223372036854775808 13312 0 LMT} + {-1848886912 14400 0 RET} +} diff --git a/library/tzdata/Iran b/library/tzdata/Iran index e200b4d..40e9642 100644 --- a/library/tzdata/Iran +++ b/library/tzdata/Iran @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Tehran)]} { - LoadTimeZoneFile Asia/Tehran -} -set TZData(:Iran) $TZData(:Asia/Tehran) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Tehran)]} { + LoadTimeZoneFile Asia/Tehran +} +set TZData(:Iran) $TZData(:Asia/Tehran) diff --git a/library/tzdata/Israel b/library/tzdata/Israel index af521f5..a3b6cbb 100644 --- a/library/tzdata/Israel +++ b/library/tzdata/Israel @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Jerusalem)]} { - LoadTimeZoneFile Asia/Jerusalem -} -set TZData(:Israel) $TZData(:Asia/Jerusalem) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Jerusalem)]} { + LoadTimeZoneFile Asia/Jerusalem +} +set TZData(:Israel) $TZData(:Asia/Jerusalem) diff --git a/library/tzdata/Jamaica b/library/tzdata/Jamaica index ddb5d45..348bb7f 100644 --- a/library/tzdata/Jamaica +++ b/library/tzdata/Jamaica @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Jamaica)]} { - LoadTimeZoneFile America/Jamaica -} -set TZData(:Jamaica) $TZData(:America/Jamaica) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Jamaica)]} { + LoadTimeZoneFile America/Jamaica +} +set TZData(:Jamaica) $TZData(:America/Jamaica) diff --git a/library/tzdata/Japan b/library/tzdata/Japan index 428a79f..481d6e4 100644 --- a/library/tzdata/Japan +++ b/library/tzdata/Japan @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Tokyo)]} { - LoadTimeZoneFile Asia/Tokyo -} -set TZData(:Japan) $TZData(:Asia/Tokyo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Tokyo)]} { + LoadTimeZoneFile Asia/Tokyo +} +set TZData(:Japan) $TZData(:Asia/Tokyo) diff --git a/library/tzdata/Kwajalein b/library/tzdata/Kwajalein index 586db6d..4093cfe 100644 --- a/library/tzdata/Kwajalein +++ b/library/tzdata/Kwajalein @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Kwajalein)]} { - LoadTimeZoneFile Pacific/Kwajalein -} -set TZData(:Kwajalein) $TZData(:Pacific/Kwajalein) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Kwajalein)]} { + LoadTimeZoneFile Pacific/Kwajalein +} +set TZData(:Kwajalein) $TZData(:Pacific/Kwajalein) diff --git a/library/tzdata/Libya b/library/tzdata/Libya index 6cd77e1..7bef1c1 100644 --- a/library/tzdata/Libya +++ b/library/tzdata/Libya @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Africa/Tripoli)]} { - LoadTimeZoneFile Africa/Tripoli -} -set TZData(:Libya) $TZData(:Africa/Tripoli) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Africa/Tripoli)]} { + LoadTimeZoneFile Africa/Tripoli +} +set TZData(:Libya) $TZData(:Africa/Tripoli) diff --git a/library/tzdata/MET b/library/tzdata/MET index 8789c97..38c02cc 100644 --- a/library/tzdata/MET +++ b/library/tzdata/MET @@ -1,265 +1,265 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:MET) { - {-9223372036854775808 3600 0 MET} - {-1693706400 7200 1 MEST} - {-1680483600 3600 0 MET} - {-1663455600 7200 1 MEST} - {-1650150000 3600 0 MET} - {-1632006000 7200 1 MEST} - {-1618700400 3600 0 MET} - {-938905200 7200 1 MEST} - {-857257200 3600 0 MET} - {-844556400 7200 1 MEST} - {-828226800 3600 0 MET} - {-812502000 7200 1 MEST} - {-796777200 3600 0 MET} - {-781052400 7200 1 MEST} - {-766623600 3600 0 MET} - {228877200 7200 1 MEST} - {243997200 3600 0 MET} - {260326800 7200 1 MEST} - {276051600 3600 0 MET} - {291776400 7200 1 MEST} - {307501200 3600 0 MET} - {323830800 7200 1 MEST} - {338950800 3600 0 MET} - {354675600 7200 1 MEST} - {370400400 3600 0 MET} - {386125200 7200 1 MEST} - {401850000 3600 0 MET} - {417574800 7200 1 MEST} - {433299600 3600 0 MET} - {449024400 7200 1 MEST} - {465354000 3600 0 MET} - {481078800 7200 1 MEST} - {496803600 3600 0 MET} - {512528400 7200 1 MEST} - {528253200 3600 0 MET} - {543978000 7200 1 MEST} - {559702800 3600 0 MET} - {575427600 7200 1 MEST} - {591152400 3600 0 MET} - {606877200 7200 1 MEST} - {622602000 3600 0 MET} - {638326800 7200 1 MEST} - {654656400 3600 0 MET} - {670381200 7200 1 MEST} - {686106000 3600 0 MET} - {701830800 7200 1 MEST} - {717555600 3600 0 MET} - {733280400 7200 1 MEST} - {749005200 3600 0 MET} - {764730000 7200 1 MEST} - {780454800 3600 0 MET} - {796179600 7200 1 MEST} - {811904400 3600 0 MET} - {828234000 7200 1 MEST} - {846378000 3600 0 MET} - {859683600 7200 1 MEST} - {877827600 3600 0 MET} - {891133200 7200 1 MEST} - {909277200 3600 0 MET} - {922582800 7200 1 MEST} - {941331600 3600 0 MET} - {954032400 7200 1 MEST} - {972781200 3600 0 MET} - {985482000 7200 1 MEST} - {1004230800 3600 0 MET} - {1017536400 7200 1 MEST} - {1035680400 3600 0 MET} - {1048986000 7200 1 MEST} - {1067130000 3600 0 MET} - {1080435600 7200 1 MEST} - {1099184400 3600 0 MET} - {1111885200 7200 1 MEST} - {1130634000 3600 0 MET} - {1143334800 7200 1 MEST} - {1162083600 3600 0 MET} - {1174784400 7200 1 MEST} - {1193533200 3600 0 MET} - {1206838800 7200 1 MEST} - {1224982800 3600 0 MET} - {1238288400 7200 1 MEST} - {1256432400 3600 0 MET} - {1269738000 7200 1 MEST} - {1288486800 3600 0 MET} - {1301187600 7200 1 MEST} - {1319936400 3600 0 MET} - {1332637200 7200 1 MEST} - {1351386000 3600 0 MET} - {1364691600 7200 1 MEST} - {1382835600 3600 0 MET} - {1396141200 7200 1 MEST} - {1414285200 3600 0 MET} - {1427590800 7200 1 MEST} - {1445734800 3600 0 MET} - {1459040400 7200 1 MEST} - {1477789200 3600 0 MET} - {1490490000 7200 1 MEST} - {1509238800 3600 0 MET} - {1521939600 7200 1 MEST} - {1540688400 3600 0 MET} - {1553994000 7200 1 MEST} - {1572138000 3600 0 MET} - {1585443600 7200 1 MEST} - {1603587600 3600 0 MET} - {1616893200 7200 1 MEST} - {1635642000 3600 0 MET} - {1648342800 7200 1 MEST} - {1667091600 3600 0 MET} - {1679792400 7200 1 MEST} - {1698541200 3600 0 MET} - {1711846800 7200 1 MEST} - {1729990800 3600 0 MET} - {1743296400 7200 1 MEST} - {1761440400 3600 0 MET} - {1774746000 7200 1 MEST} - {1792890000 3600 0 MET} - {1806195600 7200 1 MEST} - {1824944400 3600 0 MET} - {1837645200 7200 1 MEST} - {1856394000 3600 0 MET} - {1869094800 7200 1 MEST} - {1887843600 3600 0 MET} - {1901149200 7200 1 MEST} - {1919293200 3600 0 MET} - {1932598800 7200 1 MEST} - {1950742800 3600 0 MET} - {1964048400 7200 1 MEST} - {1982797200 3600 0 MET} - {1995498000 7200 1 MEST} - {2014246800 3600 0 MET} - {2026947600 7200 1 MEST} - {2045696400 3600 0 MET} - {2058397200 7200 1 MEST} - {2077146000 3600 0 MET} - {2090451600 7200 1 MEST} - {2108595600 3600 0 MET} - {2121901200 7200 1 MEST} - {2140045200 3600 0 MET} - {2153350800 7200 1 MEST} - {2172099600 3600 0 MET} - {2184800400 7200 1 MEST} - {2203549200 3600 0 MET} - {2216250000 7200 1 MEST} - {2234998800 3600 0 MET} - {2248304400 7200 1 MEST} - {2266448400 3600 0 MET} - {2279754000 7200 1 MEST} - {2297898000 3600 0 MET} - {2311203600 7200 1 MEST} - {2329347600 3600 0 MET} - {2342653200 7200 1 MEST} - {2361402000 3600 0 MET} - {2374102800 7200 1 MEST} - {2392851600 3600 0 MET} - {2405552400 7200 1 MEST} - {2424301200 3600 0 MET} - {2437606800 7200 1 MEST} - {2455750800 3600 0 MET} - {2469056400 7200 1 MEST} - {2487200400 3600 0 MET} - {2500506000 7200 1 MEST} - {2519254800 3600 0 MET} - {2531955600 7200 1 MEST} - {2550704400 3600 0 MET} - {2563405200 7200 1 MEST} - {2582154000 3600 0 MET} - {2595459600 7200 1 MEST} - {2613603600 3600 0 MET} - {2626909200 7200 1 MEST} - {2645053200 3600 0 MET} - {2658358800 7200 1 MEST} - {2676502800 3600 0 MET} - {2689808400 7200 1 MEST} - {2708557200 3600 0 MET} - {2721258000 7200 1 MEST} - {2740006800 3600 0 MET} - {2752707600 7200 1 MEST} - {2771456400 3600 0 MET} - {2784762000 7200 1 MEST} - {2802906000 3600 0 MET} - {2816211600 7200 1 MEST} - {2834355600 3600 0 MET} - {2847661200 7200 1 MEST} - {2866410000 3600 0 MET} - {2879110800 7200 1 MEST} - {2897859600 3600 0 MET} - {2910560400 7200 1 MEST} - {2929309200 3600 0 MET} - {2942010000 7200 1 MEST} - {2960758800 3600 0 MET} - {2974064400 7200 1 MEST} - {2992208400 3600 0 MET} - {3005514000 7200 1 MEST} - {3023658000 3600 0 MET} - {3036963600 7200 1 MEST} - {3055712400 3600 0 MET} - {3068413200 7200 1 MEST} - {3087162000 3600 0 MET} - {3099862800 7200 1 MEST} - {3118611600 3600 0 MET} - {3131917200 7200 1 MEST} - {3150061200 3600 0 MET} - {3163366800 7200 1 MEST} - {3181510800 3600 0 MET} - {3194816400 7200 1 MEST} - {3212960400 3600 0 MET} - {3226266000 7200 1 MEST} - {3245014800 3600 0 MET} - {3257715600 7200 1 MEST} - {3276464400 3600 0 MET} - {3289165200 7200 1 MEST} - {3307914000 3600 0 MET} - {3321219600 7200 1 MEST} - {3339363600 3600 0 MET} - {3352669200 7200 1 MEST} - {3370813200 3600 0 MET} - {3384118800 7200 1 MEST} - {3402867600 3600 0 MET} - {3415568400 7200 1 MEST} - {3434317200 3600 0 MET} - {3447018000 7200 1 MEST} - {3465766800 3600 0 MET} - {3479072400 7200 1 MEST} - {3497216400 3600 0 MET} - {3510522000 7200 1 MEST} - {3528666000 3600 0 MET} - {3541971600 7200 1 MEST} - {3560115600 3600 0 MET} - {3573421200 7200 1 MEST} - {3592170000 3600 0 MET} - {3604870800 7200 1 MEST} - {3623619600 3600 0 MET} - {3636320400 7200 1 MEST} - {3655069200 3600 0 MET} - {3668374800 7200 1 MEST} - {3686518800 3600 0 MET} - {3699824400 7200 1 MEST} - {3717968400 3600 0 MET} - {3731274000 7200 1 MEST} - {3750022800 3600 0 MET} - {3762723600 7200 1 MEST} - {3781472400 3600 0 MET} - {3794173200 7200 1 MEST} - {3812922000 3600 0 MET} - {3825622800 7200 1 MEST} - {3844371600 3600 0 MET} - {3857677200 7200 1 MEST} - {3875821200 3600 0 MET} - {3889126800 7200 1 MEST} - {3907270800 3600 0 MET} - {3920576400 7200 1 MEST} - {3939325200 3600 0 MET} - {3952026000 7200 1 MEST} - {3970774800 3600 0 MET} - {3983475600 7200 1 MEST} - {4002224400 3600 0 MET} - {4015530000 7200 1 MEST} - {4033674000 3600 0 MET} - {4046979600 7200 1 MEST} - {4065123600 3600 0 MET} - {4078429200 7200 1 MEST} - {4096573200 3600 0 MET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:MET) { + {-9223372036854775808 3600 0 MET} + {-1693706400 7200 1 MEST} + {-1680483600 3600 0 MET} + {-1663455600 7200 1 MEST} + {-1650150000 3600 0 MET} + {-1632006000 7200 1 MEST} + {-1618700400 3600 0 MET} + {-938905200 7200 1 MEST} + {-857257200 3600 0 MET} + {-844556400 7200 1 MEST} + {-828226800 3600 0 MET} + {-812502000 7200 1 MEST} + {-796777200 3600 0 MET} + {-781052400 7200 1 MEST} + {-766623600 3600 0 MET} + {228877200 7200 1 MEST} + {243997200 3600 0 MET} + {260326800 7200 1 MEST} + {276051600 3600 0 MET} + {291776400 7200 1 MEST} + {307501200 3600 0 MET} + {323830800 7200 1 MEST} + {338950800 3600 0 MET} + {354675600 7200 1 MEST} + {370400400 3600 0 MET} + {386125200 7200 1 MEST} + {401850000 3600 0 MET} + {417574800 7200 1 MEST} + {433299600 3600 0 MET} + {449024400 7200 1 MEST} + {465354000 3600 0 MET} + {481078800 7200 1 MEST} + {496803600 3600 0 MET} + {512528400 7200 1 MEST} + {528253200 3600 0 MET} + {543978000 7200 1 MEST} + {559702800 3600 0 MET} + {575427600 7200 1 MEST} + {591152400 3600 0 MET} + {606877200 7200 1 MEST} + {622602000 3600 0 MET} + {638326800 7200 1 MEST} + {654656400 3600 0 MET} + {670381200 7200 1 MEST} + {686106000 3600 0 MET} + {701830800 7200 1 MEST} + {717555600 3600 0 MET} + {733280400 7200 1 MEST} + {749005200 3600 0 MET} + {764730000 7200 1 MEST} + {780454800 3600 0 MET} + {796179600 7200 1 MEST} + {811904400 3600 0 MET} + {828234000 7200 1 MEST} + {846378000 3600 0 MET} + {859683600 7200 1 MEST} + {877827600 3600 0 MET} + {891133200 7200 1 MEST} + {909277200 3600 0 MET} + {922582800 7200 1 MEST} + {941331600 3600 0 MET} + {954032400 7200 1 MEST} + {972781200 3600 0 MET} + {985482000 7200 1 MEST} + {1004230800 3600 0 MET} + {1017536400 7200 1 MEST} + {1035680400 3600 0 MET} + {1048986000 7200 1 MEST} + {1067130000 3600 0 MET} + {1080435600 7200 1 MEST} + {1099184400 3600 0 MET} + {1111885200 7200 1 MEST} + {1130634000 3600 0 MET} + {1143334800 7200 1 MEST} + {1162083600 3600 0 MET} + {1174784400 7200 1 MEST} + {1193533200 3600 0 MET} + {1206838800 7200 1 MEST} + {1224982800 3600 0 MET} + {1238288400 7200 1 MEST} + {1256432400 3600 0 MET} + {1269738000 7200 1 MEST} + {1288486800 3600 0 MET} + {1301187600 7200 1 MEST} + {1319936400 3600 0 MET} + {1332637200 7200 1 MEST} + {1351386000 3600 0 MET} + {1364691600 7200 1 MEST} + {1382835600 3600 0 MET} + {1396141200 7200 1 MEST} + {1414285200 3600 0 MET} + {1427590800 7200 1 MEST} + {1445734800 3600 0 MET} + {1459040400 7200 1 MEST} + {1477789200 3600 0 MET} + {1490490000 7200 1 MEST} + {1509238800 3600 0 MET} + {1521939600 7200 1 MEST} + {1540688400 3600 0 MET} + {1553994000 7200 1 MEST} + {1572138000 3600 0 MET} + {1585443600 7200 1 MEST} + {1603587600 3600 0 MET} + {1616893200 7200 1 MEST} + {1635642000 3600 0 MET} + {1648342800 7200 1 MEST} + {1667091600 3600 0 MET} + {1679792400 7200 1 MEST} + {1698541200 3600 0 MET} + {1711846800 7200 1 MEST} + {1729990800 3600 0 MET} + {1743296400 7200 1 MEST} + {1761440400 3600 0 MET} + {1774746000 7200 1 MEST} + {1792890000 3600 0 MET} + {1806195600 7200 1 MEST} + {1824944400 3600 0 MET} + {1837645200 7200 1 MEST} + {1856394000 3600 0 MET} + {1869094800 7200 1 MEST} + {1887843600 3600 0 MET} + {1901149200 7200 1 MEST} + {1919293200 3600 0 MET} + {1932598800 7200 1 MEST} + {1950742800 3600 0 MET} + {1964048400 7200 1 MEST} + {1982797200 3600 0 MET} + {1995498000 7200 1 MEST} + {2014246800 3600 0 MET} + {2026947600 7200 1 MEST} + {2045696400 3600 0 MET} + {2058397200 7200 1 MEST} + {2077146000 3600 0 MET} + {2090451600 7200 1 MEST} + {2108595600 3600 0 MET} + {2121901200 7200 1 MEST} + {2140045200 3600 0 MET} + {2153350800 7200 1 MEST} + {2172099600 3600 0 MET} + {2184800400 7200 1 MEST} + {2203549200 3600 0 MET} + {2216250000 7200 1 MEST} + {2234998800 3600 0 MET} + {2248304400 7200 1 MEST} + {2266448400 3600 0 MET} + {2279754000 7200 1 MEST} + {2297898000 3600 0 MET} + {2311203600 7200 1 MEST} + {2329347600 3600 0 MET} + {2342653200 7200 1 MEST} + {2361402000 3600 0 MET} + {2374102800 7200 1 MEST} + {2392851600 3600 0 MET} + {2405552400 7200 1 MEST} + {2424301200 3600 0 MET} + {2437606800 7200 1 MEST} + {2455750800 3600 0 MET} + {2469056400 7200 1 MEST} + {2487200400 3600 0 MET} + {2500506000 7200 1 MEST} + {2519254800 3600 0 MET} + {2531955600 7200 1 MEST} + {2550704400 3600 0 MET} + {2563405200 7200 1 MEST} + {2582154000 3600 0 MET} + {2595459600 7200 1 MEST} + {2613603600 3600 0 MET} + {2626909200 7200 1 MEST} + {2645053200 3600 0 MET} + {2658358800 7200 1 MEST} + {2676502800 3600 0 MET} + {2689808400 7200 1 MEST} + {2708557200 3600 0 MET} + {2721258000 7200 1 MEST} + {2740006800 3600 0 MET} + {2752707600 7200 1 MEST} + {2771456400 3600 0 MET} + {2784762000 7200 1 MEST} + {2802906000 3600 0 MET} + {2816211600 7200 1 MEST} + {2834355600 3600 0 MET} + {2847661200 7200 1 MEST} + {2866410000 3600 0 MET} + {2879110800 7200 1 MEST} + {2897859600 3600 0 MET} + {2910560400 7200 1 MEST} + {2929309200 3600 0 MET} + {2942010000 7200 1 MEST} + {2960758800 3600 0 MET} + {2974064400 7200 1 MEST} + {2992208400 3600 0 MET} + {3005514000 7200 1 MEST} + {3023658000 3600 0 MET} + {3036963600 7200 1 MEST} + {3055712400 3600 0 MET} + {3068413200 7200 1 MEST} + {3087162000 3600 0 MET} + {3099862800 7200 1 MEST} + {3118611600 3600 0 MET} + {3131917200 7200 1 MEST} + {3150061200 3600 0 MET} + {3163366800 7200 1 MEST} + {3181510800 3600 0 MET} + {3194816400 7200 1 MEST} + {3212960400 3600 0 MET} + {3226266000 7200 1 MEST} + {3245014800 3600 0 MET} + {3257715600 7200 1 MEST} + {3276464400 3600 0 MET} + {3289165200 7200 1 MEST} + {3307914000 3600 0 MET} + {3321219600 7200 1 MEST} + {3339363600 3600 0 MET} + {3352669200 7200 1 MEST} + {3370813200 3600 0 MET} + {3384118800 7200 1 MEST} + {3402867600 3600 0 MET} + {3415568400 7200 1 MEST} + {3434317200 3600 0 MET} + {3447018000 7200 1 MEST} + {3465766800 3600 0 MET} + {3479072400 7200 1 MEST} + {3497216400 3600 0 MET} + {3510522000 7200 1 MEST} + {3528666000 3600 0 MET} + {3541971600 7200 1 MEST} + {3560115600 3600 0 MET} + {3573421200 7200 1 MEST} + {3592170000 3600 0 MET} + {3604870800 7200 1 MEST} + {3623619600 3600 0 MET} + {3636320400 7200 1 MEST} + {3655069200 3600 0 MET} + {3668374800 7200 1 MEST} + {3686518800 3600 0 MET} + {3699824400 7200 1 MEST} + {3717968400 3600 0 MET} + {3731274000 7200 1 MEST} + {3750022800 3600 0 MET} + {3762723600 7200 1 MEST} + {3781472400 3600 0 MET} + {3794173200 7200 1 MEST} + {3812922000 3600 0 MET} + {3825622800 7200 1 MEST} + {3844371600 3600 0 MET} + {3857677200 7200 1 MEST} + {3875821200 3600 0 MET} + {3889126800 7200 1 MEST} + {3907270800 3600 0 MET} + {3920576400 7200 1 MEST} + {3939325200 3600 0 MET} + {3952026000 7200 1 MEST} + {3970774800 3600 0 MET} + {3983475600 7200 1 MEST} + {4002224400 3600 0 MET} + {4015530000 7200 1 MEST} + {4033674000 3600 0 MET} + {4046979600 7200 1 MEST} + {4065123600 3600 0 MET} + {4078429200 7200 1 MEST} + {4096573200 3600 0 MET} +} diff --git a/library/tzdata/MST b/library/tzdata/MST index 8c967ab..cb4eb8b 100644 --- a/library/tzdata/MST +++ b/library/tzdata/MST @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:MST) { - {-9223372036854775808 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:MST) { + {-9223372036854775808 -25200 0 MST} +} diff --git a/library/tzdata/MST7MDT b/library/tzdata/MST7MDT index ff52048..45ba6b5 100644 --- a/library/tzdata/MST7MDT +++ b/library/tzdata/MST7MDT @@ -1,278 +1,278 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:MST7MDT) { - {-9223372036854775808 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126694800 -21600 1 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:MST7MDT) { + {-9223372036854775808 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126694800 -21600 1 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/Mexico/BajaNorte b/library/tzdata/Mexico/BajaNorte index 8f6f459..39429f4 100644 --- a/library/tzdata/Mexico/BajaNorte +++ b/library/tzdata/Mexico/BajaNorte @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Tijuana)]} { - LoadTimeZoneFile America/Tijuana -} -set TZData(:Mexico/BajaNorte) $TZData(:America/Tijuana) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Tijuana)]} { + LoadTimeZoneFile America/Tijuana +} +set TZData(:Mexico/BajaNorte) $TZData(:America/Tijuana) diff --git a/library/tzdata/Mexico/BajaSur b/library/tzdata/Mexico/BajaSur index 6d335a1..3b708fa 100644 --- a/library/tzdata/Mexico/BajaSur +++ b/library/tzdata/Mexico/BajaSur @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Mazatlan)]} { - LoadTimeZoneFile America/Mazatlan -} -set TZData(:Mexico/BajaSur) $TZData(:America/Mazatlan) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Mazatlan)]} { + LoadTimeZoneFile America/Mazatlan +} +set TZData(:Mexico/BajaSur) $TZData(:America/Mazatlan) diff --git a/library/tzdata/Mexico/General b/library/tzdata/Mexico/General index 0cac92f..fa48148 100644 --- a/library/tzdata/Mexico/General +++ b/library/tzdata/Mexico/General @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Mexico_City)]} { - LoadTimeZoneFile America/Mexico_City -} -set TZData(:Mexico/General) $TZData(:America/Mexico_City) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Mexico_City)]} { + LoadTimeZoneFile America/Mexico_City +} +set TZData(:Mexico/General) $TZData(:America/Mexico_City) diff --git a/library/tzdata/NZ b/library/tzdata/NZ index 36d22a7..7cbb4bc 100644 --- a/library/tzdata/NZ +++ b/library/tzdata/NZ @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Auckland)]} { - LoadTimeZoneFile Pacific/Auckland -} -set TZData(:NZ) $TZData(:Pacific/Auckland) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Auckland)]} { + LoadTimeZoneFile Pacific/Auckland +} +set TZData(:NZ) $TZData(:Pacific/Auckland) diff --git a/library/tzdata/NZ-CHAT b/library/tzdata/NZ-CHAT index 7f7c918..12ce757 100644 --- a/library/tzdata/NZ-CHAT +++ b/library/tzdata/NZ-CHAT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Chatham)]} { - LoadTimeZoneFile Pacific/Chatham -} -set TZData(:NZ-CHAT) $TZData(:Pacific/Chatham) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Chatham)]} { + LoadTimeZoneFile Pacific/Chatham +} +set TZData(:NZ-CHAT) $TZData(:Pacific/Chatham) diff --git a/library/tzdata/Navajo b/library/tzdata/Navajo index 78cc2e2..81bb466 100644 --- a/library/tzdata/Navajo +++ b/library/tzdata/Navajo @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Denver)]} { - LoadTimeZoneFile America/Denver -} -set TZData(:Navajo) $TZData(:America/Denver) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Denver)]} { + LoadTimeZoneFile America/Denver +} +set TZData(:Navajo) $TZData(:America/Denver) diff --git a/library/tzdata/PRC b/library/tzdata/PRC index 1d8bb7c..42c6af4 100644 --- a/library/tzdata/PRC +++ b/library/tzdata/PRC @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Shanghai)]} { - LoadTimeZoneFile Asia/Shanghai -} -set TZData(:PRC) $TZData(:Asia/Shanghai) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Shanghai)]} { + LoadTimeZoneFile Asia/Shanghai +} +set TZData(:PRC) $TZData(:Asia/Shanghai) diff --git a/library/tzdata/PST8PDT b/library/tzdata/PST8PDT index 87a94da..632fbfe 100644 --- a/library/tzdata/PST8PDT +++ b/library/tzdata/PST8PDT @@ -1,278 +1,278 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:PST8PDT) { - {-9223372036854775808 -28800 0 PST} - {-1633269600 -25200 1 PDT} - {-1615129200 -28800 0 PST} - {-1601820000 -25200 1 PDT} - {-1583679600 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-84376800 -25200 1 PDT} - {-68655600 -28800 0 PST} - {-52927200 -25200 1 PDT} - {-37206000 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {89197200 -28800 0 PST} - {104925600 -25200 1 PDT} - {120646800 -28800 0 PST} - {126698400 -25200 1 PDT} - {152096400 -28800 0 PST} - {162381600 -25200 1 PDT} - {183546000 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:PST8PDT) { + {-9223372036854775808 -28800 0 PST} + {-1633269600 -25200 1 PDT} + {-1615129200 -28800 0 PST} + {-1601820000 -25200 1 PDT} + {-1583679600 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-84376800 -25200 1 PDT} + {-68655600 -28800 0 PST} + {-52927200 -25200 1 PDT} + {-37206000 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {126698400 -25200 1 PDT} + {152096400 -28800 0 PST} + {162381600 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/Pacific/Apia b/library/tzdata/Pacific/Apia index 5d34ed1..ba105b0 100644 --- a/library/tzdata/Pacific/Apia +++ b/library/tzdata/Pacific/Apia @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Apia) { - {-9223372036854775808 45184 0 LMT} - {-2855737984 -41216 0 LMT} - {-1861878784 -41400 0 SAMT} - {-631110600 -39600 0 WST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Apia) { + {-9223372036854775808 45184 0 LMT} + {-2855737984 -41216 0 LMT} + {-1861878784 -41400 0 SAMT} + {-631110600 -39600 0 WST} +} diff --git a/library/tzdata/Pacific/Auckland b/library/tzdata/Pacific/Auckland index 5f7e238..5e9f195 100644 --- a/library/tzdata/Pacific/Auckland +++ b/library/tzdata/Pacific/Auckland @@ -1,285 +1,285 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Auckland) { - {-9223372036854775808 41944 0 LMT} - {-3192435544 41400 0 NZMT} - {-1330335000 45000 1 NZST} - {-1320057000 41400 0 NZMT} - {-1300699800 43200 1 NZST} - {-1287396000 41400 0 NZMT} - {-1269250200 43200 1 NZST} - {-1255946400 41400 0 NZMT} - {-1237800600 43200 1 NZST} - {-1224496800 41400 0 NZMT} - {-1206351000 43200 1 NZST} - {-1192442400 41400 0 NZMT} - {-1174901400 43200 1 NZST} - {-1160992800 41400 0 NZMT} - {-1143451800 43200 1 NZST} - {-1125914400 41400 0 NZMT} - {-1112607000 43200 1 NZST} - {-1094464800 41400 0 NZMT} - {-1081157400 43200 1 NZST} - {-1063015200 41400 0 NZMT} - {-1049707800 43200 1 NZST} - {-1031565600 41400 0 NZMT} - {-1018258200 43200 1 NZST} - {-1000116000 41400 0 NZMT} - {-986808600 43200 1 NZST} - {-968061600 41400 0 NZMT} - {-955359000 43200 1 NZST} - {-936612000 41400 0 NZMT} - {-923304600 43200 1 NZST} - {-757425600 43200 0 NZST} - {152632800 46800 1 NZDT} - {162309600 43200 0 NZST} - {183477600 46800 1 NZDT} - {194968800 43200 0 NZST} - {215532000 46800 1 NZDT} - {226418400 43200 0 NZST} - {246981600 46800 1 NZDT} - {257868000 43200 0 NZST} - {278431200 46800 1 NZDT} - {289317600 43200 0 NZST} - {309880800 46800 1 NZDT} - {320767200 43200 0 NZST} - {341330400 46800 1 NZDT} - {352216800 43200 0 NZST} - {372780000 46800 1 NZDT} - {384271200 43200 0 NZST} - {404834400 46800 1 NZDT} - {415720800 43200 0 NZST} - {436284000 46800 1 NZDT} - {447170400 43200 0 NZST} - {467733600 46800 1 NZDT} - {478620000 43200 0 NZST} - {499183200 46800 1 NZDT} - {510069600 43200 0 NZST} - {530632800 46800 1 NZDT} - {541519200 43200 0 NZST} - {562082400 46800 1 NZDT} - {573573600 43200 0 NZST} - {594136800 46800 1 NZDT} - {605023200 43200 0 NZST} - {623772000 46800 1 NZDT} - {637682400 43200 0 NZST} - {655221600 46800 1 NZDT} - {669132000 43200 0 NZST} - {686671200 46800 1 NZDT} - {700581600 43200 0 NZST} - {718120800 46800 1 NZDT} - {732636000 43200 0 NZST} - {749570400 46800 1 NZDT} - {764085600 43200 0 NZST} - {781020000 46800 1 NZDT} - {795535200 43200 0 NZST} - {812469600 46800 1 NZDT} - {826984800 43200 0 NZST} - {844524000 46800 1 NZDT} - {858434400 43200 0 NZST} - {875973600 46800 1 NZDT} - {889884000 43200 0 NZST} - {907423200 46800 1 NZDT} - {921938400 43200 0 NZST} - {938872800 46800 1 NZDT} - {953388000 43200 0 NZST} - {970322400 46800 1 NZDT} - {984837600 43200 0 NZST} - {1002376800 46800 1 NZDT} - {1016287200 43200 0 NZST} - {1033826400 46800 1 NZDT} - {1047736800 43200 0 NZST} - {1065276000 46800 1 NZDT} - {1079791200 43200 0 NZST} - {1096725600 46800 1 NZDT} - {1111240800 43200 0 NZST} - {1128175200 46800 1 NZDT} - {1142690400 43200 0 NZST} - {1159624800 46800 1 NZDT} - {1174140000 43200 0 NZST} - {1191074400 46800 1 NZDT} - {1207404000 43200 0 NZST} - {1222524000 46800 1 NZDT} - {1238853600 43200 0 NZST} - {1253973600 46800 1 NZDT} - {1270303200 43200 0 NZST} - {1285423200 46800 1 NZDT} - {1301752800 43200 0 NZST} - {1316872800 46800 1 NZDT} - {1333202400 43200 0 NZST} - {1348927200 46800 1 NZDT} - {1365256800 43200 0 NZST} - {1380376800 46800 1 NZDT} - {1396706400 43200 0 NZST} - {1411826400 46800 1 NZDT} - {1428156000 43200 0 NZST} - {1443276000 46800 1 NZDT} - {1459605600 43200 0 NZST} - {1474725600 46800 1 NZDT} - {1491055200 43200 0 NZST} - {1506175200 46800 1 NZDT} - {1522504800 43200 0 NZST} - {1538229600 46800 1 NZDT} - {1554559200 43200 0 NZST} - {1569679200 46800 1 NZDT} - {1586008800 43200 0 NZST} - {1601128800 46800 1 NZDT} - {1617458400 43200 0 NZST} - {1632578400 46800 1 NZDT} - {1648908000 43200 0 NZST} - {1664028000 46800 1 NZDT} - {1680357600 43200 0 NZST} - {1695477600 46800 1 NZDT} - {1712412000 43200 0 NZST} - {1727532000 46800 1 NZDT} - {1743861600 43200 0 NZST} - {1758981600 46800 1 NZDT} - {1775311200 43200 0 NZST} - {1790431200 46800 1 NZDT} - {1806760800 43200 0 NZST} - {1821880800 46800 1 NZDT} - {1838210400 43200 0 NZST} - {1853330400 46800 1 NZDT} - {1869660000 43200 0 NZST} - {1885384800 46800 1 NZDT} - {1901714400 43200 0 NZST} - {1916834400 46800 1 NZDT} - {1933164000 43200 0 NZST} - {1948284000 46800 1 NZDT} - {1964613600 43200 0 NZST} - {1979733600 46800 1 NZDT} - {1996063200 43200 0 NZST} - {2011183200 46800 1 NZDT} - {2027512800 43200 0 NZST} - {2042632800 46800 1 NZDT} - {2058962400 43200 0 NZST} - {2074687200 46800 1 NZDT} - {2091016800 43200 0 NZST} - {2106136800 46800 1 NZDT} - {2122466400 43200 0 NZST} - {2137586400 46800 1 NZDT} - {2153916000 43200 0 NZST} - {2169036000 46800 1 NZDT} - {2185365600 43200 0 NZST} - {2200485600 46800 1 NZDT} - {2216815200 43200 0 NZST} - {2232540000 46800 1 NZDT} - {2248869600 43200 0 NZST} - {2263989600 46800 1 NZDT} - {2280319200 43200 0 NZST} - {2295439200 46800 1 NZDT} - {2311768800 43200 0 NZST} - {2326888800 46800 1 NZDT} - {2343218400 43200 0 NZST} - {2358338400 46800 1 NZDT} - {2374668000 43200 0 NZST} - {2389788000 46800 1 NZDT} - {2406117600 43200 0 NZST} - {2421842400 46800 1 NZDT} - {2438172000 43200 0 NZST} - {2453292000 46800 1 NZDT} - {2469621600 43200 0 NZST} - {2484741600 46800 1 NZDT} - {2501071200 43200 0 NZST} - {2516191200 46800 1 NZDT} - {2532520800 43200 0 NZST} - {2547640800 46800 1 NZDT} - {2563970400 43200 0 NZST} - {2579090400 46800 1 NZDT} - {2596024800 43200 0 NZST} - {2611144800 46800 1 NZDT} - {2627474400 43200 0 NZST} - {2642594400 46800 1 NZDT} - {2658924000 43200 0 NZST} - {2674044000 46800 1 NZDT} - {2690373600 43200 0 NZST} - {2705493600 46800 1 NZDT} - {2721823200 43200 0 NZST} - {2736943200 46800 1 NZDT} - {2753272800 43200 0 NZST} - {2768997600 46800 1 NZDT} - {2785327200 43200 0 NZST} - {2800447200 46800 1 NZDT} - {2816776800 43200 0 NZST} - {2831896800 46800 1 NZDT} - {2848226400 43200 0 NZST} - {2863346400 46800 1 NZDT} - {2879676000 43200 0 NZST} - {2894796000 46800 1 NZDT} - {2911125600 43200 0 NZST} - {2926245600 46800 1 NZDT} - {2942575200 43200 0 NZST} - {2958300000 46800 1 NZDT} - {2974629600 43200 0 NZST} - {2989749600 46800 1 NZDT} - {3006079200 43200 0 NZST} - {3021199200 46800 1 NZDT} - {3037528800 43200 0 NZST} - {3052648800 46800 1 NZDT} - {3068978400 43200 0 NZST} - {3084098400 46800 1 NZDT} - {3100428000 43200 0 NZST} - {3116152800 46800 1 NZDT} - {3132482400 43200 0 NZST} - {3147602400 46800 1 NZDT} - {3163932000 43200 0 NZST} - {3179052000 46800 1 NZDT} - {3195381600 43200 0 NZST} - {3210501600 46800 1 NZDT} - {3226831200 43200 0 NZST} - {3241951200 46800 1 NZDT} - {3258280800 43200 0 NZST} - {3273400800 46800 1 NZDT} - {3289730400 43200 0 NZST} - {3305455200 46800 1 NZDT} - {3321784800 43200 0 NZST} - {3336904800 46800 1 NZDT} - {3353234400 43200 0 NZST} - {3368354400 46800 1 NZDT} - {3384684000 43200 0 NZST} - {3399804000 46800 1 NZDT} - {3416133600 43200 0 NZST} - {3431253600 46800 1 NZDT} - {3447583200 43200 0 NZST} - {3462703200 46800 1 NZDT} - {3479637600 43200 0 NZST} - {3494757600 46800 1 NZDT} - {3511087200 43200 0 NZST} - {3526207200 46800 1 NZDT} - {3542536800 43200 0 NZST} - {3557656800 46800 1 NZDT} - {3573986400 43200 0 NZST} - {3589106400 46800 1 NZDT} - {3605436000 43200 0 NZST} - {3620556000 46800 1 NZDT} - {3636885600 43200 0 NZST} - {3652610400 46800 1 NZDT} - {3668940000 43200 0 NZST} - {3684060000 46800 1 NZDT} - {3700389600 43200 0 NZST} - {3715509600 46800 1 NZDT} - {3731839200 43200 0 NZST} - {3746959200 46800 1 NZDT} - {3763288800 43200 0 NZST} - {3778408800 46800 1 NZDT} - {3794738400 43200 0 NZST} - {3809858400 46800 1 NZDT} - {3826188000 43200 0 NZST} - {3841912800 46800 1 NZDT} - {3858242400 43200 0 NZST} - {3873362400 46800 1 NZDT} - {3889692000 43200 0 NZST} - {3904812000 46800 1 NZDT} - {3921141600 43200 0 NZST} - {3936261600 46800 1 NZDT} - {3952591200 43200 0 NZST} - {3967711200 46800 1 NZDT} - {3984040800 43200 0 NZST} - {3999765600 46800 1 NZDT} - {4016095200 43200 0 NZST} - {4031215200 46800 1 NZDT} - {4047544800 43200 0 NZST} - {4062664800 46800 1 NZDT} - {4078994400 43200 0 NZST} - {4094114400 46800 1 NZDT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Auckland) { + {-9223372036854775808 41944 0 LMT} + {-3192435544 41400 0 NZMT} + {-1330335000 45000 1 NZST} + {-1320057000 41400 0 NZMT} + {-1300699800 43200 1 NZST} + {-1287396000 41400 0 NZMT} + {-1269250200 43200 1 NZST} + {-1255946400 41400 0 NZMT} + {-1237800600 43200 1 NZST} + {-1224496800 41400 0 NZMT} + {-1206351000 43200 1 NZST} + {-1192442400 41400 0 NZMT} + {-1174901400 43200 1 NZST} + {-1160992800 41400 0 NZMT} + {-1143451800 43200 1 NZST} + {-1125914400 41400 0 NZMT} + {-1112607000 43200 1 NZST} + {-1094464800 41400 0 NZMT} + {-1081157400 43200 1 NZST} + {-1063015200 41400 0 NZMT} + {-1049707800 43200 1 NZST} + {-1031565600 41400 0 NZMT} + {-1018258200 43200 1 NZST} + {-1000116000 41400 0 NZMT} + {-986808600 43200 1 NZST} + {-968061600 41400 0 NZMT} + {-955359000 43200 1 NZST} + {-936612000 41400 0 NZMT} + {-923304600 43200 1 NZST} + {-757425600 43200 0 NZST} + {152632800 46800 1 NZDT} + {162309600 43200 0 NZST} + {183477600 46800 1 NZDT} + {194968800 43200 0 NZST} + {215532000 46800 1 NZDT} + {226418400 43200 0 NZST} + {246981600 46800 1 NZDT} + {257868000 43200 0 NZST} + {278431200 46800 1 NZDT} + {289317600 43200 0 NZST} + {309880800 46800 1 NZDT} + {320767200 43200 0 NZST} + {341330400 46800 1 NZDT} + {352216800 43200 0 NZST} + {372780000 46800 1 NZDT} + {384271200 43200 0 NZST} + {404834400 46800 1 NZDT} + {415720800 43200 0 NZST} + {436284000 46800 1 NZDT} + {447170400 43200 0 NZST} + {467733600 46800 1 NZDT} + {478620000 43200 0 NZST} + {499183200 46800 1 NZDT} + {510069600 43200 0 NZST} + {530632800 46800 1 NZDT} + {541519200 43200 0 NZST} + {562082400 46800 1 NZDT} + {573573600 43200 0 NZST} + {594136800 46800 1 NZDT} + {605023200 43200 0 NZST} + {623772000 46800 1 NZDT} + {637682400 43200 0 NZST} + {655221600 46800 1 NZDT} + {669132000 43200 0 NZST} + {686671200 46800 1 NZDT} + {700581600 43200 0 NZST} + {718120800 46800 1 NZDT} + {732636000 43200 0 NZST} + {749570400 46800 1 NZDT} + {764085600 43200 0 NZST} + {781020000 46800 1 NZDT} + {795535200 43200 0 NZST} + {812469600 46800 1 NZDT} + {826984800 43200 0 NZST} + {844524000 46800 1 NZDT} + {858434400 43200 0 NZST} + {875973600 46800 1 NZDT} + {889884000 43200 0 NZST} + {907423200 46800 1 NZDT} + {921938400 43200 0 NZST} + {938872800 46800 1 NZDT} + {953388000 43200 0 NZST} + {970322400 46800 1 NZDT} + {984837600 43200 0 NZST} + {1002376800 46800 1 NZDT} + {1016287200 43200 0 NZST} + {1033826400 46800 1 NZDT} + {1047736800 43200 0 NZST} + {1065276000 46800 1 NZDT} + {1079791200 43200 0 NZST} + {1096725600 46800 1 NZDT} + {1111240800 43200 0 NZST} + {1128175200 46800 1 NZDT} + {1142690400 43200 0 NZST} + {1159624800 46800 1 NZDT} + {1174140000 43200 0 NZST} + {1191074400 46800 1 NZDT} + {1207404000 43200 0 NZST} + {1222524000 46800 1 NZDT} + {1238853600 43200 0 NZST} + {1253973600 46800 1 NZDT} + {1270303200 43200 0 NZST} + {1285423200 46800 1 NZDT} + {1301752800 43200 0 NZST} + {1316872800 46800 1 NZDT} + {1333202400 43200 0 NZST} + {1348927200 46800 1 NZDT} + {1365256800 43200 0 NZST} + {1380376800 46800 1 NZDT} + {1396706400 43200 0 NZST} + {1411826400 46800 1 NZDT} + {1428156000 43200 0 NZST} + {1443276000 46800 1 NZDT} + {1459605600 43200 0 NZST} + {1474725600 46800 1 NZDT} + {1491055200 43200 0 NZST} + {1506175200 46800 1 NZDT} + {1522504800 43200 0 NZST} + {1538229600 46800 1 NZDT} + {1554559200 43200 0 NZST} + {1569679200 46800 1 NZDT} + {1586008800 43200 0 NZST} + {1601128800 46800 1 NZDT} + {1617458400 43200 0 NZST} + {1632578400 46800 1 NZDT} + {1648908000 43200 0 NZST} + {1664028000 46800 1 NZDT} + {1680357600 43200 0 NZST} + {1695477600 46800 1 NZDT} + {1712412000 43200 0 NZST} + {1727532000 46800 1 NZDT} + {1743861600 43200 0 NZST} + {1758981600 46800 1 NZDT} + {1775311200 43200 0 NZST} + {1790431200 46800 1 NZDT} + {1806760800 43200 0 NZST} + {1821880800 46800 1 NZDT} + {1838210400 43200 0 NZST} + {1853330400 46800 1 NZDT} + {1869660000 43200 0 NZST} + {1885384800 46800 1 NZDT} + {1901714400 43200 0 NZST} + {1916834400 46800 1 NZDT} + {1933164000 43200 0 NZST} + {1948284000 46800 1 NZDT} + {1964613600 43200 0 NZST} + {1979733600 46800 1 NZDT} + {1996063200 43200 0 NZST} + {2011183200 46800 1 NZDT} + {2027512800 43200 0 NZST} + {2042632800 46800 1 NZDT} + {2058962400 43200 0 NZST} + {2074687200 46800 1 NZDT} + {2091016800 43200 0 NZST} + {2106136800 46800 1 NZDT} + {2122466400 43200 0 NZST} + {2137586400 46800 1 NZDT} + {2153916000 43200 0 NZST} + {2169036000 46800 1 NZDT} + {2185365600 43200 0 NZST} + {2200485600 46800 1 NZDT} + {2216815200 43200 0 NZST} + {2232540000 46800 1 NZDT} + {2248869600 43200 0 NZST} + {2263989600 46800 1 NZDT} + {2280319200 43200 0 NZST} + {2295439200 46800 1 NZDT} + {2311768800 43200 0 NZST} + {2326888800 46800 1 NZDT} + {2343218400 43200 0 NZST} + {2358338400 46800 1 NZDT} + {2374668000 43200 0 NZST} + {2389788000 46800 1 NZDT} + {2406117600 43200 0 NZST} + {2421842400 46800 1 NZDT} + {2438172000 43200 0 NZST} + {2453292000 46800 1 NZDT} + {2469621600 43200 0 NZST} + {2484741600 46800 1 NZDT} + {2501071200 43200 0 NZST} + {2516191200 46800 1 NZDT} + {2532520800 43200 0 NZST} + {2547640800 46800 1 NZDT} + {2563970400 43200 0 NZST} + {2579090400 46800 1 NZDT} + {2596024800 43200 0 NZST} + {2611144800 46800 1 NZDT} + {2627474400 43200 0 NZST} + {2642594400 46800 1 NZDT} + {2658924000 43200 0 NZST} + {2674044000 46800 1 NZDT} + {2690373600 43200 0 NZST} + {2705493600 46800 1 NZDT} + {2721823200 43200 0 NZST} + {2736943200 46800 1 NZDT} + {2753272800 43200 0 NZST} + {2768997600 46800 1 NZDT} + {2785327200 43200 0 NZST} + {2800447200 46800 1 NZDT} + {2816776800 43200 0 NZST} + {2831896800 46800 1 NZDT} + {2848226400 43200 0 NZST} + {2863346400 46800 1 NZDT} + {2879676000 43200 0 NZST} + {2894796000 46800 1 NZDT} + {2911125600 43200 0 NZST} + {2926245600 46800 1 NZDT} + {2942575200 43200 0 NZST} + {2958300000 46800 1 NZDT} + {2974629600 43200 0 NZST} + {2989749600 46800 1 NZDT} + {3006079200 43200 0 NZST} + {3021199200 46800 1 NZDT} + {3037528800 43200 0 NZST} + {3052648800 46800 1 NZDT} + {3068978400 43200 0 NZST} + {3084098400 46800 1 NZDT} + {3100428000 43200 0 NZST} + {3116152800 46800 1 NZDT} + {3132482400 43200 0 NZST} + {3147602400 46800 1 NZDT} + {3163932000 43200 0 NZST} + {3179052000 46800 1 NZDT} + {3195381600 43200 0 NZST} + {3210501600 46800 1 NZDT} + {3226831200 43200 0 NZST} + {3241951200 46800 1 NZDT} + {3258280800 43200 0 NZST} + {3273400800 46800 1 NZDT} + {3289730400 43200 0 NZST} + {3305455200 46800 1 NZDT} + {3321784800 43200 0 NZST} + {3336904800 46800 1 NZDT} + {3353234400 43200 0 NZST} + {3368354400 46800 1 NZDT} + {3384684000 43200 0 NZST} + {3399804000 46800 1 NZDT} + {3416133600 43200 0 NZST} + {3431253600 46800 1 NZDT} + {3447583200 43200 0 NZST} + {3462703200 46800 1 NZDT} + {3479637600 43200 0 NZST} + {3494757600 46800 1 NZDT} + {3511087200 43200 0 NZST} + {3526207200 46800 1 NZDT} + {3542536800 43200 0 NZST} + {3557656800 46800 1 NZDT} + {3573986400 43200 0 NZST} + {3589106400 46800 1 NZDT} + {3605436000 43200 0 NZST} + {3620556000 46800 1 NZDT} + {3636885600 43200 0 NZST} + {3652610400 46800 1 NZDT} + {3668940000 43200 0 NZST} + {3684060000 46800 1 NZDT} + {3700389600 43200 0 NZST} + {3715509600 46800 1 NZDT} + {3731839200 43200 0 NZST} + {3746959200 46800 1 NZDT} + {3763288800 43200 0 NZST} + {3778408800 46800 1 NZDT} + {3794738400 43200 0 NZST} + {3809858400 46800 1 NZDT} + {3826188000 43200 0 NZST} + {3841912800 46800 1 NZDT} + {3858242400 43200 0 NZST} + {3873362400 46800 1 NZDT} + {3889692000 43200 0 NZST} + {3904812000 46800 1 NZDT} + {3921141600 43200 0 NZST} + {3936261600 46800 1 NZDT} + {3952591200 43200 0 NZST} + {3967711200 46800 1 NZDT} + {3984040800 43200 0 NZST} + {3999765600 46800 1 NZDT} + {4016095200 43200 0 NZST} + {4031215200 46800 1 NZDT} + {4047544800 43200 0 NZST} + {4062664800 46800 1 NZDT} + {4078994400 43200 0 NZST} + {4094114400 46800 1 NZDT} +} diff --git a/library/tzdata/Pacific/Chatham b/library/tzdata/Pacific/Chatham index 0ed2260..c567bae 100644 --- a/library/tzdata/Pacific/Chatham +++ b/library/tzdata/Pacific/Chatham @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Chatham) { - {-9223372036854775808 44028 0 LMT} - {-410271228 45900 0 CHAST} - {152632800 49500 1 CHADT} - {162309600 45900 0 CHAST} - {183477600 49500 1 CHADT} - {194968800 45900 0 CHAST} - {215532000 49500 1 CHADT} - {226418400 45900 0 CHAST} - {246981600 49500 1 CHADT} - {257868000 45900 0 CHAST} - {278431200 49500 1 CHADT} - {289317600 45900 0 CHAST} - {309880800 49500 1 CHADT} - {320767200 45900 0 CHAST} - {341330400 49500 1 CHADT} - {352216800 45900 0 CHAST} - {372780000 49500 1 CHADT} - {384271200 45900 0 CHAST} - {404834400 49500 1 CHADT} - {415720800 45900 0 CHAST} - {436284000 49500 1 CHADT} - {447170400 45900 0 CHAST} - {467733600 49500 1 CHADT} - {478620000 45900 0 CHAST} - {499183200 49500 1 CHADT} - {510069600 45900 0 CHAST} - {530632800 49500 1 CHADT} - {541519200 45900 0 CHAST} - {562082400 49500 1 CHADT} - {573573600 45900 0 CHAST} - {594136800 49500 1 CHADT} - {605023200 45900 0 CHAST} - {623772000 49500 1 CHADT} - {637682400 45900 0 CHAST} - {655221600 49500 1 CHADT} - {669132000 45900 0 CHAST} - {686671200 49500 1 CHADT} - {700581600 45900 0 CHAST} - {718120800 49500 1 CHADT} - {732636000 45900 0 CHAST} - {749570400 49500 1 CHADT} - {764085600 45900 0 CHAST} - {781020000 49500 1 CHADT} - {795535200 45900 0 CHAST} - {812469600 49500 1 CHADT} - {826984800 45900 0 CHAST} - {844524000 49500 1 CHADT} - {858434400 45900 0 CHAST} - {875973600 49500 1 CHADT} - {889884000 45900 0 CHAST} - {907423200 49500 1 CHADT} - {921938400 45900 0 CHAST} - {938872800 49500 1 CHADT} - {953388000 45900 0 CHAST} - {970322400 49500 1 CHADT} - {984837600 45900 0 CHAST} - {1002376800 49500 1 CHADT} - {1016287200 45900 0 CHAST} - {1033826400 49500 1 CHADT} - {1047736800 45900 0 CHAST} - {1065276000 49500 1 CHADT} - {1079791200 45900 0 CHAST} - {1096725600 49500 1 CHADT} - {1111240800 45900 0 CHAST} - {1128175200 49500 1 CHADT} - {1142690400 45900 0 CHAST} - {1159624800 49500 1 CHADT} - {1174140000 45900 0 CHAST} - {1191074400 49500 1 CHADT} - {1207404000 45900 0 CHAST} - {1222524000 49500 1 CHADT} - {1238853600 45900 0 CHAST} - {1253973600 49500 1 CHADT} - {1270303200 45900 0 CHAST} - {1285423200 49500 1 CHADT} - {1301752800 45900 0 CHAST} - {1316872800 49500 1 CHADT} - {1333202400 45900 0 CHAST} - {1348927200 49500 1 CHADT} - {1365256800 45900 0 CHAST} - {1380376800 49500 1 CHADT} - {1396706400 45900 0 CHAST} - {1411826400 49500 1 CHADT} - {1428156000 45900 0 CHAST} - {1443276000 49500 1 CHADT} - {1459605600 45900 0 CHAST} - {1474725600 49500 1 CHADT} - {1491055200 45900 0 CHAST} - {1506175200 49500 1 CHADT} - {1522504800 45900 0 CHAST} - {1538229600 49500 1 CHADT} - {1554559200 45900 0 CHAST} - {1569679200 49500 1 CHADT} - {1586008800 45900 0 CHAST} - {1601128800 49500 1 CHADT} - {1617458400 45900 0 CHAST} - {1632578400 49500 1 CHADT} - {1648908000 45900 0 CHAST} - {1664028000 49500 1 CHADT} - {1680357600 45900 0 CHAST} - {1695477600 49500 1 CHADT} - {1712412000 45900 0 CHAST} - {1727532000 49500 1 CHADT} - {1743861600 45900 0 CHAST} - {1758981600 49500 1 CHADT} - {1775311200 45900 0 CHAST} - {1790431200 49500 1 CHADT} - {1806760800 45900 0 CHAST} - {1821880800 49500 1 CHADT} - {1838210400 45900 0 CHAST} - {1853330400 49500 1 CHADT} - {1869660000 45900 0 CHAST} - {1885384800 49500 1 CHADT} - {1901714400 45900 0 CHAST} - {1916834400 49500 1 CHADT} - {1933164000 45900 0 CHAST} - {1948284000 49500 1 CHADT} - {1964613600 45900 0 CHAST} - {1979733600 49500 1 CHADT} - {1996063200 45900 0 CHAST} - {2011183200 49500 1 CHADT} - {2027512800 45900 0 CHAST} - {2042632800 49500 1 CHADT} - {2058962400 45900 0 CHAST} - {2074687200 49500 1 CHADT} - {2091016800 45900 0 CHAST} - {2106136800 49500 1 CHADT} - {2122466400 45900 0 CHAST} - {2137586400 49500 1 CHADT} - {2153916000 45900 0 CHAST} - {2169036000 49500 1 CHADT} - {2185365600 45900 0 CHAST} - {2200485600 49500 1 CHADT} - {2216815200 45900 0 CHAST} - {2232540000 49500 1 CHADT} - {2248869600 45900 0 CHAST} - {2263989600 49500 1 CHADT} - {2280319200 45900 0 CHAST} - {2295439200 49500 1 CHADT} - {2311768800 45900 0 CHAST} - {2326888800 49500 1 CHADT} - {2343218400 45900 0 CHAST} - {2358338400 49500 1 CHADT} - {2374668000 45900 0 CHAST} - {2389788000 49500 1 CHADT} - {2406117600 45900 0 CHAST} - {2421842400 49500 1 CHADT} - {2438172000 45900 0 CHAST} - {2453292000 49500 1 CHADT} - {2469621600 45900 0 CHAST} - {2484741600 49500 1 CHADT} - {2501071200 45900 0 CHAST} - {2516191200 49500 1 CHADT} - {2532520800 45900 0 CHAST} - {2547640800 49500 1 CHADT} - {2563970400 45900 0 CHAST} - {2579090400 49500 1 CHADT} - {2596024800 45900 0 CHAST} - {2611144800 49500 1 CHADT} - {2627474400 45900 0 CHAST} - {2642594400 49500 1 CHADT} - {2658924000 45900 0 CHAST} - {2674044000 49500 1 CHADT} - {2690373600 45900 0 CHAST} - {2705493600 49500 1 CHADT} - {2721823200 45900 0 CHAST} - {2736943200 49500 1 CHADT} - {2753272800 45900 0 CHAST} - {2768997600 49500 1 CHADT} - {2785327200 45900 0 CHAST} - {2800447200 49500 1 CHADT} - {2816776800 45900 0 CHAST} - {2831896800 49500 1 CHADT} - {2848226400 45900 0 CHAST} - {2863346400 49500 1 CHADT} - {2879676000 45900 0 CHAST} - {2894796000 49500 1 CHADT} - {2911125600 45900 0 CHAST} - {2926245600 49500 1 CHADT} - {2942575200 45900 0 CHAST} - {2958300000 49500 1 CHADT} - {2974629600 45900 0 CHAST} - {2989749600 49500 1 CHADT} - {3006079200 45900 0 CHAST} - {3021199200 49500 1 CHADT} - {3037528800 45900 0 CHAST} - {3052648800 49500 1 CHADT} - {3068978400 45900 0 CHAST} - {3084098400 49500 1 CHADT} - {3100428000 45900 0 CHAST} - {3116152800 49500 1 CHADT} - {3132482400 45900 0 CHAST} - {3147602400 49500 1 CHADT} - {3163932000 45900 0 CHAST} - {3179052000 49500 1 CHADT} - {3195381600 45900 0 CHAST} - {3210501600 49500 1 CHADT} - {3226831200 45900 0 CHAST} - {3241951200 49500 1 CHADT} - {3258280800 45900 0 CHAST} - {3273400800 49500 1 CHADT} - {3289730400 45900 0 CHAST} - {3305455200 49500 1 CHADT} - {3321784800 45900 0 CHAST} - {3336904800 49500 1 CHADT} - {3353234400 45900 0 CHAST} - {3368354400 49500 1 CHADT} - {3384684000 45900 0 CHAST} - {3399804000 49500 1 CHADT} - {3416133600 45900 0 CHAST} - {3431253600 49500 1 CHADT} - {3447583200 45900 0 CHAST} - {3462703200 49500 1 CHADT} - {3479637600 45900 0 CHAST} - {3494757600 49500 1 CHADT} - {3511087200 45900 0 CHAST} - {3526207200 49500 1 CHADT} - {3542536800 45900 0 CHAST} - {3557656800 49500 1 CHADT} - {3573986400 45900 0 CHAST} - {3589106400 49500 1 CHADT} - {3605436000 45900 0 CHAST} - {3620556000 49500 1 CHADT} - {3636885600 45900 0 CHAST} - {3652610400 49500 1 CHADT} - {3668940000 45900 0 CHAST} - {3684060000 49500 1 CHADT} - {3700389600 45900 0 CHAST} - {3715509600 49500 1 CHADT} - {3731839200 45900 0 CHAST} - {3746959200 49500 1 CHADT} - {3763288800 45900 0 CHAST} - {3778408800 49500 1 CHADT} - {3794738400 45900 0 CHAST} - {3809858400 49500 1 CHADT} - {3826188000 45900 0 CHAST} - {3841912800 49500 1 CHADT} - {3858242400 45900 0 CHAST} - {3873362400 49500 1 CHADT} - {3889692000 45900 0 CHAST} - {3904812000 49500 1 CHADT} - {3921141600 45900 0 CHAST} - {3936261600 49500 1 CHADT} - {3952591200 45900 0 CHAST} - {3967711200 49500 1 CHADT} - {3984040800 45900 0 CHAST} - {3999765600 49500 1 CHADT} - {4016095200 45900 0 CHAST} - {4031215200 49500 1 CHADT} - {4047544800 45900 0 CHAST} - {4062664800 49500 1 CHADT} - {4078994400 45900 0 CHAST} - {4094114400 49500 1 CHADT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Chatham) { + {-9223372036854775808 44028 0 LMT} + {-410271228 45900 0 CHAST} + {152632800 49500 1 CHADT} + {162309600 45900 0 CHAST} + {183477600 49500 1 CHADT} + {194968800 45900 0 CHAST} + {215532000 49500 1 CHADT} + {226418400 45900 0 CHAST} + {246981600 49500 1 CHADT} + {257868000 45900 0 CHAST} + {278431200 49500 1 CHADT} + {289317600 45900 0 CHAST} + {309880800 49500 1 CHADT} + {320767200 45900 0 CHAST} + {341330400 49500 1 CHADT} + {352216800 45900 0 CHAST} + {372780000 49500 1 CHADT} + {384271200 45900 0 CHAST} + {404834400 49500 1 CHADT} + {415720800 45900 0 CHAST} + {436284000 49500 1 CHADT} + {447170400 45900 0 CHAST} + {467733600 49500 1 CHADT} + {478620000 45900 0 CHAST} + {499183200 49500 1 CHADT} + {510069600 45900 0 CHAST} + {530632800 49500 1 CHADT} + {541519200 45900 0 CHAST} + {562082400 49500 1 CHADT} + {573573600 45900 0 CHAST} + {594136800 49500 1 CHADT} + {605023200 45900 0 CHAST} + {623772000 49500 1 CHADT} + {637682400 45900 0 CHAST} + {655221600 49500 1 CHADT} + {669132000 45900 0 CHAST} + {686671200 49500 1 CHADT} + {700581600 45900 0 CHAST} + {718120800 49500 1 CHADT} + {732636000 45900 0 CHAST} + {749570400 49500 1 CHADT} + {764085600 45900 0 CHAST} + {781020000 49500 1 CHADT} + {795535200 45900 0 CHAST} + {812469600 49500 1 CHADT} + {826984800 45900 0 CHAST} + {844524000 49500 1 CHADT} + {858434400 45900 0 CHAST} + {875973600 49500 1 CHADT} + {889884000 45900 0 CHAST} + {907423200 49500 1 CHADT} + {921938400 45900 0 CHAST} + {938872800 49500 1 CHADT} + {953388000 45900 0 CHAST} + {970322400 49500 1 CHADT} + {984837600 45900 0 CHAST} + {1002376800 49500 1 CHADT} + {1016287200 45900 0 CHAST} + {1033826400 49500 1 CHADT} + {1047736800 45900 0 CHAST} + {1065276000 49500 1 CHADT} + {1079791200 45900 0 CHAST} + {1096725600 49500 1 CHADT} + {1111240800 45900 0 CHAST} + {1128175200 49500 1 CHADT} + {1142690400 45900 0 CHAST} + {1159624800 49500 1 CHADT} + {1174140000 45900 0 CHAST} + {1191074400 49500 1 CHADT} + {1207404000 45900 0 CHAST} + {1222524000 49500 1 CHADT} + {1238853600 45900 0 CHAST} + {1253973600 49500 1 CHADT} + {1270303200 45900 0 CHAST} + {1285423200 49500 1 CHADT} + {1301752800 45900 0 CHAST} + {1316872800 49500 1 CHADT} + {1333202400 45900 0 CHAST} + {1348927200 49500 1 CHADT} + {1365256800 45900 0 CHAST} + {1380376800 49500 1 CHADT} + {1396706400 45900 0 CHAST} + {1411826400 49500 1 CHADT} + {1428156000 45900 0 CHAST} + {1443276000 49500 1 CHADT} + {1459605600 45900 0 CHAST} + {1474725600 49500 1 CHADT} + {1491055200 45900 0 CHAST} + {1506175200 49500 1 CHADT} + {1522504800 45900 0 CHAST} + {1538229600 49500 1 CHADT} + {1554559200 45900 0 CHAST} + {1569679200 49500 1 CHADT} + {1586008800 45900 0 CHAST} + {1601128800 49500 1 CHADT} + {1617458400 45900 0 CHAST} + {1632578400 49500 1 CHADT} + {1648908000 45900 0 CHAST} + {1664028000 49500 1 CHADT} + {1680357600 45900 0 CHAST} + {1695477600 49500 1 CHADT} + {1712412000 45900 0 CHAST} + {1727532000 49500 1 CHADT} + {1743861600 45900 0 CHAST} + {1758981600 49500 1 CHADT} + {1775311200 45900 0 CHAST} + {1790431200 49500 1 CHADT} + {1806760800 45900 0 CHAST} + {1821880800 49500 1 CHADT} + {1838210400 45900 0 CHAST} + {1853330400 49500 1 CHADT} + {1869660000 45900 0 CHAST} + {1885384800 49500 1 CHADT} + {1901714400 45900 0 CHAST} + {1916834400 49500 1 CHADT} + {1933164000 45900 0 CHAST} + {1948284000 49500 1 CHADT} + {1964613600 45900 0 CHAST} + {1979733600 49500 1 CHADT} + {1996063200 45900 0 CHAST} + {2011183200 49500 1 CHADT} + {2027512800 45900 0 CHAST} + {2042632800 49500 1 CHADT} + {2058962400 45900 0 CHAST} + {2074687200 49500 1 CHADT} + {2091016800 45900 0 CHAST} + {2106136800 49500 1 CHADT} + {2122466400 45900 0 CHAST} + {2137586400 49500 1 CHADT} + {2153916000 45900 0 CHAST} + {2169036000 49500 1 CHADT} + {2185365600 45900 0 CHAST} + {2200485600 49500 1 CHADT} + {2216815200 45900 0 CHAST} + {2232540000 49500 1 CHADT} + {2248869600 45900 0 CHAST} + {2263989600 49500 1 CHADT} + {2280319200 45900 0 CHAST} + {2295439200 49500 1 CHADT} + {2311768800 45900 0 CHAST} + {2326888800 49500 1 CHADT} + {2343218400 45900 0 CHAST} + {2358338400 49500 1 CHADT} + {2374668000 45900 0 CHAST} + {2389788000 49500 1 CHADT} + {2406117600 45900 0 CHAST} + {2421842400 49500 1 CHADT} + {2438172000 45900 0 CHAST} + {2453292000 49500 1 CHADT} + {2469621600 45900 0 CHAST} + {2484741600 49500 1 CHADT} + {2501071200 45900 0 CHAST} + {2516191200 49500 1 CHADT} + {2532520800 45900 0 CHAST} + {2547640800 49500 1 CHADT} + {2563970400 45900 0 CHAST} + {2579090400 49500 1 CHADT} + {2596024800 45900 0 CHAST} + {2611144800 49500 1 CHADT} + {2627474400 45900 0 CHAST} + {2642594400 49500 1 CHADT} + {2658924000 45900 0 CHAST} + {2674044000 49500 1 CHADT} + {2690373600 45900 0 CHAST} + {2705493600 49500 1 CHADT} + {2721823200 45900 0 CHAST} + {2736943200 49500 1 CHADT} + {2753272800 45900 0 CHAST} + {2768997600 49500 1 CHADT} + {2785327200 45900 0 CHAST} + {2800447200 49500 1 CHADT} + {2816776800 45900 0 CHAST} + {2831896800 49500 1 CHADT} + {2848226400 45900 0 CHAST} + {2863346400 49500 1 CHADT} + {2879676000 45900 0 CHAST} + {2894796000 49500 1 CHADT} + {2911125600 45900 0 CHAST} + {2926245600 49500 1 CHADT} + {2942575200 45900 0 CHAST} + {2958300000 49500 1 CHADT} + {2974629600 45900 0 CHAST} + {2989749600 49500 1 CHADT} + {3006079200 45900 0 CHAST} + {3021199200 49500 1 CHADT} + {3037528800 45900 0 CHAST} + {3052648800 49500 1 CHADT} + {3068978400 45900 0 CHAST} + {3084098400 49500 1 CHADT} + {3100428000 45900 0 CHAST} + {3116152800 49500 1 CHADT} + {3132482400 45900 0 CHAST} + {3147602400 49500 1 CHADT} + {3163932000 45900 0 CHAST} + {3179052000 49500 1 CHADT} + {3195381600 45900 0 CHAST} + {3210501600 49500 1 CHADT} + {3226831200 45900 0 CHAST} + {3241951200 49500 1 CHADT} + {3258280800 45900 0 CHAST} + {3273400800 49500 1 CHADT} + {3289730400 45900 0 CHAST} + {3305455200 49500 1 CHADT} + {3321784800 45900 0 CHAST} + {3336904800 49500 1 CHADT} + {3353234400 45900 0 CHAST} + {3368354400 49500 1 CHADT} + {3384684000 45900 0 CHAST} + {3399804000 49500 1 CHADT} + {3416133600 45900 0 CHAST} + {3431253600 49500 1 CHADT} + {3447583200 45900 0 CHAST} + {3462703200 49500 1 CHADT} + {3479637600 45900 0 CHAST} + {3494757600 49500 1 CHADT} + {3511087200 45900 0 CHAST} + {3526207200 49500 1 CHADT} + {3542536800 45900 0 CHAST} + {3557656800 49500 1 CHADT} + {3573986400 45900 0 CHAST} + {3589106400 49500 1 CHADT} + {3605436000 45900 0 CHAST} + {3620556000 49500 1 CHADT} + {3636885600 45900 0 CHAST} + {3652610400 49500 1 CHADT} + {3668940000 45900 0 CHAST} + {3684060000 49500 1 CHADT} + {3700389600 45900 0 CHAST} + {3715509600 49500 1 CHADT} + {3731839200 45900 0 CHAST} + {3746959200 49500 1 CHADT} + {3763288800 45900 0 CHAST} + {3778408800 49500 1 CHADT} + {3794738400 45900 0 CHAST} + {3809858400 49500 1 CHADT} + {3826188000 45900 0 CHAST} + {3841912800 49500 1 CHADT} + {3858242400 45900 0 CHAST} + {3873362400 49500 1 CHADT} + {3889692000 45900 0 CHAST} + {3904812000 49500 1 CHADT} + {3921141600 45900 0 CHAST} + {3936261600 49500 1 CHADT} + {3952591200 45900 0 CHAST} + {3967711200 49500 1 CHADT} + {3984040800 45900 0 CHAST} + {3999765600 49500 1 CHADT} + {4016095200 45900 0 CHAST} + {4031215200 49500 1 CHADT} + {4047544800 45900 0 CHAST} + {4062664800 49500 1 CHADT} + {4078994400 45900 0 CHAST} + {4094114400 49500 1 CHADT} +} diff --git a/library/tzdata/Pacific/Easter b/library/tzdata/Pacific/Easter index ac00f5e..625e37c 100644 --- a/library/tzdata/Pacific/Easter +++ b/library/tzdata/Pacific/Easter @@ -1,275 +1,275 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Easter) { - {-9223372036854775808 -26264 0 LMT} - {-2524495336 -26248 0 EMT} - {-1178124152 -21600 0 EASST} - {-870552000 -25200 0 EAST} - {-865278000 -21600 1 EASST} - {-740520000 -21600 1 EASST} - {-736376400 -25200 0 EAST} - {-718056000 -25200 0 EAST} - {-36619200 -21600 1 EASST} - {-23922000 -25200 0 EAST} - {-3355200 -21600 1 EASST} - {7527600 -25200 0 EAST} - {24465600 -21600 1 EASST} - {37767600 -25200 0 EAST} - {55915200 -21600 1 EASST} - {69217200 -25200 0 EAST} - {87969600 -21600 1 EASST} - {100666800 -25200 0 EAST} - {118209600 -21600 1 EASST} - {132116400 -25200 0 EAST} - {150868800 -21600 1 EASST} - {163566000 -25200 0 EAST} - {182318400 -21600 1 EASST} - {195620400 -25200 0 EAST} - {213768000 -21600 1 EASST} - {227070000 -25200 0 EAST} - {245217600 -21600 1 EASST} - {258519600 -25200 0 EAST} - {277272000 -21600 1 EASST} - {289969200 -25200 0 EAST} - {308721600 -21600 1 EASST} - {321418800 -25200 0 EAST} - {340171200 -21600 1 EASST} - {353473200 -25200 0 EAST} - {371620800 -21600 1 EASST} - {384922800 -21600 0 EAST} - {403070400 -18000 1 EASST} - {416372400 -21600 0 EAST} - {434520000 -18000 1 EASST} - {447822000 -21600 0 EAST} - {466574400 -18000 1 EASST} - {479271600 -21600 0 EAST} - {498024000 -18000 1 EASST} - {510721200 -21600 0 EAST} - {529473600 -18000 1 EASST} - {545194800 -21600 0 EAST} - {560923200 -18000 1 EASST} - {574225200 -21600 0 EAST} - {591768000 -18000 1 EASST} - {605674800 -21600 0 EAST} - {624427200 -18000 1 EASST} - {637729200 -21600 0 EAST} - {653457600 -18000 1 EASST} - {668574000 -21600 0 EAST} - {687326400 -18000 1 EASST} - {700628400 -21600 0 EAST} - {718776000 -18000 1 EASST} - {732078000 -21600 0 EAST} - {750225600 -18000 1 EASST} - {763527600 -21600 0 EAST} - {781675200 -18000 1 EASST} - {794977200 -21600 0 EAST} - {813729600 -18000 1 EASST} - {826426800 -21600 0 EAST} - {845179200 -18000 1 EASST} - {859690800 -21600 0 EAST} - {876628800 -18000 1 EASST} - {889930800 -21600 0 EAST} - {906868800 -18000 1 EASST} - {923194800 -21600 0 EAST} - {939528000 -18000 1 EASST} - {952830000 -21600 0 EAST} - {971582400 -18000 1 EASST} - {984279600 -21600 0 EAST} - {1003032000 -18000 1 EASST} - {1015729200 -21600 0 EAST} - {1034481600 -18000 1 EASST} - {1047178800 -21600 0 EAST} - {1065931200 -18000 1 EASST} - {1079233200 -21600 0 EAST} - {1097380800 -18000 1 EASST} - {1110682800 -21600 0 EAST} - {1128830400 -18000 1 EASST} - {1142132400 -21600 0 EAST} - {1160884800 -18000 1 EASST} - {1173582000 -21600 0 EAST} - {1192334400 -18000 1 EASST} - {1206846000 -21600 0 EAST} - {1223784000 -18000 1 EASST} - {1237086000 -21600 0 EAST} - {1255233600 -18000 1 EASST} - {1268535600 -21600 0 EAST} - {1286683200 -18000 1 EASST} - {1299985200 -21600 0 EAST} - {1318132800 -18000 1 EASST} - {1331434800 -21600 0 EAST} - {1350187200 -18000 1 EASST} - {1362884400 -21600 0 EAST} - {1381636800 -18000 1 EASST} - {1394334000 -21600 0 EAST} - {1413086400 -18000 1 EASST} - {1426388400 -21600 0 EAST} - {1444536000 -18000 1 EASST} - {1457838000 -21600 0 EAST} - {1475985600 -18000 1 EASST} - {1489287600 -21600 0 EAST} - {1508040000 -18000 1 EASST} - {1520737200 -21600 0 EAST} - {1539489600 -18000 1 EASST} - {1552186800 -21600 0 EAST} - {1570939200 -18000 1 EASST} - {1584241200 -21600 0 EAST} - {1602388800 -18000 1 EASST} - {1615690800 -21600 0 EAST} - {1633838400 -18000 1 EASST} - {1647140400 -21600 0 EAST} - {1665288000 -18000 1 EASST} - {1678590000 -21600 0 EAST} - {1697342400 -18000 1 EASST} - {1710039600 -21600 0 EAST} - {1728792000 -18000 1 EASST} - {1741489200 -21600 0 EAST} - {1760241600 -18000 1 EASST} - {1773543600 -21600 0 EAST} - {1791691200 -18000 1 EASST} - {1804993200 -21600 0 EAST} - {1823140800 -18000 1 EASST} - {1836442800 -21600 0 EAST} - {1855195200 -18000 1 EASST} - {1867892400 -21600 0 EAST} - {1886644800 -18000 1 EASST} - {1899342000 -21600 0 EAST} - {1918094400 -18000 1 EASST} - {1930791600 -21600 0 EAST} - {1949544000 -18000 1 EASST} - {1962846000 -21600 0 EAST} - {1980993600 -18000 1 EASST} - {1994295600 -21600 0 EAST} - {2012443200 -18000 1 EASST} - {2025745200 -21600 0 EAST} - {2044497600 -18000 1 EASST} - {2057194800 -21600 0 EAST} - {2075947200 -18000 1 EASST} - {2088644400 -21600 0 EAST} - {2107396800 -18000 1 EASST} - {2120698800 -21600 0 EAST} - {2138846400 -18000 1 EASST} - {2152148400 -21600 0 EAST} - {2170296000 -18000 1 EASST} - {2183598000 -21600 0 EAST} - {2201745600 -18000 1 EASST} - {2215047600 -21600 0 EAST} - {2233800000 -18000 1 EASST} - {2246497200 -21600 0 EAST} - {2265249600 -18000 1 EASST} - {2277946800 -21600 0 EAST} - {2296699200 -18000 1 EASST} - {2310001200 -21600 0 EAST} - {2328148800 -18000 1 EASST} - {2341450800 -21600 0 EAST} - {2359598400 -18000 1 EASST} - {2372900400 -21600 0 EAST} - {2391652800 -18000 1 EASST} - {2404350000 -21600 0 EAST} - {2423102400 -18000 1 EASST} - {2435799600 -21600 0 EAST} - {2454552000 -18000 1 EASST} - {2467854000 -21600 0 EAST} - {2486001600 -18000 1 EASST} - {2499303600 -21600 0 EAST} - {2517451200 -18000 1 EASST} - {2530753200 -21600 0 EAST} - {2548900800 -18000 1 EASST} - {2562202800 -21600 0 EAST} - {2580955200 -18000 1 EASST} - {2593652400 -21600 0 EAST} - {2612404800 -18000 1 EASST} - {2625102000 -21600 0 EAST} - {2643854400 -18000 1 EASST} - {2657156400 -21600 0 EAST} - {2675304000 -18000 1 EASST} - {2688606000 -21600 0 EAST} - {2706753600 -18000 1 EASST} - {2720055600 -21600 0 EAST} - {2738808000 -18000 1 EASST} - {2751505200 -21600 0 EAST} - {2770257600 -18000 1 EASST} - {2782954800 -21600 0 EAST} - {2801707200 -18000 1 EASST} - {2814404400 -21600 0 EAST} - {2833156800 -18000 1 EASST} - {2846458800 -21600 0 EAST} - {2864606400 -18000 1 EASST} - {2877908400 -21600 0 EAST} - {2896056000 -18000 1 EASST} - {2909358000 -21600 0 EAST} - {2928110400 -18000 1 EASST} - {2940807600 -21600 0 EAST} - {2959560000 -18000 1 EASST} - {2972257200 -21600 0 EAST} - {2991009600 -18000 1 EASST} - {3004311600 -21600 0 EAST} - {3022459200 -18000 1 EASST} - {3035761200 -21600 0 EAST} - {3053908800 -18000 1 EASST} - {3067210800 -21600 0 EAST} - {3085358400 -18000 1 EASST} - {3098660400 -21600 0 EAST} - {3117412800 -18000 1 EASST} - {3130110000 -21600 0 EAST} - {3148862400 -18000 1 EASST} - {3161559600 -21600 0 EAST} - {3180312000 -18000 1 EASST} - {3193614000 -21600 0 EAST} - {3211761600 -18000 1 EASST} - {3225063600 -21600 0 EAST} - {3243211200 -18000 1 EASST} - {3256513200 -21600 0 EAST} - {3275265600 -18000 1 EASST} - {3287962800 -21600 0 EAST} - {3306715200 -18000 1 EASST} - {3319412400 -21600 0 EAST} - {3338164800 -18000 1 EASST} - {3351466800 -21600 0 EAST} - {3369614400 -18000 1 EASST} - {3382916400 -21600 0 EAST} - {3401064000 -18000 1 EASST} - {3414366000 -21600 0 EAST} - {3432513600 -18000 1 EASST} - {3445815600 -21600 0 EAST} - {3464568000 -18000 1 EASST} - {3477265200 -21600 0 EAST} - {3496017600 -18000 1 EASST} - {3508714800 -21600 0 EAST} - {3527467200 -18000 1 EASST} - {3540769200 -21600 0 EAST} - {3558916800 -18000 1 EASST} - {3572218800 -21600 0 EAST} - {3590366400 -18000 1 EASST} - {3603668400 -21600 0 EAST} - {3622420800 -18000 1 EASST} - {3635118000 -21600 0 EAST} - {3653870400 -18000 1 EASST} - {3666567600 -21600 0 EAST} - {3685320000 -18000 1 EASST} - {3698017200 -21600 0 EAST} - {3716769600 -18000 1 EASST} - {3730071600 -21600 0 EAST} - {3748219200 -18000 1 EASST} - {3761521200 -21600 0 EAST} - {3779668800 -18000 1 EASST} - {3792970800 -21600 0 EAST} - {3811723200 -18000 1 EASST} - {3824420400 -21600 0 EAST} - {3843172800 -18000 1 EASST} - {3855870000 -21600 0 EAST} - {3874622400 -18000 1 EASST} - {3887924400 -21600 0 EAST} - {3906072000 -18000 1 EASST} - {3919374000 -21600 0 EAST} - {3937521600 -18000 1 EASST} - {3950823600 -21600 0 EAST} - {3968971200 -18000 1 EASST} - {3982273200 -21600 0 EAST} - {4001025600 -18000 1 EASST} - {4013722800 -21600 0 EAST} - {4032475200 -18000 1 EASST} - {4045172400 -21600 0 EAST} - {4063924800 -18000 1 EASST} - {4077226800 -21600 0 EAST} - {4095374400 -18000 1 EASST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Easter) { + {-9223372036854775808 -26264 0 LMT} + {-2524495336 -26248 0 EMT} + {-1178124152 -21600 0 EASST} + {-870552000 -25200 0 EAST} + {-865278000 -21600 1 EASST} + {-740520000 -21600 1 EASST} + {-736376400 -25200 0 EAST} + {-718056000 -25200 0 EAST} + {-36619200 -21600 1 EASST} + {-23922000 -25200 0 EAST} + {-3355200 -21600 1 EASST} + {7527600 -25200 0 EAST} + {24465600 -21600 1 EASST} + {37767600 -25200 0 EAST} + {55915200 -21600 1 EASST} + {69217200 -25200 0 EAST} + {87969600 -21600 1 EASST} + {100666800 -25200 0 EAST} + {118209600 -21600 1 EASST} + {132116400 -25200 0 EAST} + {150868800 -21600 1 EASST} + {163566000 -25200 0 EAST} + {182318400 -21600 1 EASST} + {195620400 -25200 0 EAST} + {213768000 -21600 1 EASST} + {227070000 -25200 0 EAST} + {245217600 -21600 1 EASST} + {258519600 -25200 0 EAST} + {277272000 -21600 1 EASST} + {289969200 -25200 0 EAST} + {308721600 -21600 1 EASST} + {321418800 -25200 0 EAST} + {340171200 -21600 1 EASST} + {353473200 -25200 0 EAST} + {371620800 -21600 1 EASST} + {384922800 -21600 0 EAST} + {403070400 -18000 1 EASST} + {416372400 -21600 0 EAST} + {434520000 -18000 1 EASST} + {447822000 -21600 0 EAST} + {466574400 -18000 1 EASST} + {479271600 -21600 0 EAST} + {498024000 -18000 1 EASST} + {510721200 -21600 0 EAST} + {529473600 -18000 1 EASST} + {545194800 -21600 0 EAST} + {560923200 -18000 1 EASST} + {574225200 -21600 0 EAST} + {591768000 -18000 1 EASST} + {605674800 -21600 0 EAST} + {624427200 -18000 1 EASST} + {637729200 -21600 0 EAST} + {653457600 -18000 1 EASST} + {668574000 -21600 0 EAST} + {687326400 -18000 1 EASST} + {700628400 -21600 0 EAST} + {718776000 -18000 1 EASST} + {732078000 -21600 0 EAST} + {750225600 -18000 1 EASST} + {763527600 -21600 0 EAST} + {781675200 -18000 1 EASST} + {794977200 -21600 0 EAST} + {813729600 -18000 1 EASST} + {826426800 -21600 0 EAST} + {845179200 -18000 1 EASST} + {859690800 -21600 0 EAST} + {876628800 -18000 1 EASST} + {889930800 -21600 0 EAST} + {906868800 -18000 1 EASST} + {923194800 -21600 0 EAST} + {939528000 -18000 1 EASST} + {952830000 -21600 0 EAST} + {971582400 -18000 1 EASST} + {984279600 -21600 0 EAST} + {1003032000 -18000 1 EASST} + {1015729200 -21600 0 EAST} + {1034481600 -18000 1 EASST} + {1047178800 -21600 0 EAST} + {1065931200 -18000 1 EASST} + {1079233200 -21600 0 EAST} + {1097380800 -18000 1 EASST} + {1110682800 -21600 0 EAST} + {1128830400 -18000 1 EASST} + {1142132400 -21600 0 EAST} + {1160884800 -18000 1 EASST} + {1173582000 -21600 0 EAST} + {1192334400 -18000 1 EASST} + {1206846000 -21600 0 EAST} + {1223784000 -18000 1 EASST} + {1237086000 -21600 0 EAST} + {1255233600 -18000 1 EASST} + {1268535600 -21600 0 EAST} + {1286683200 -18000 1 EASST} + {1299985200 -21600 0 EAST} + {1318132800 -18000 1 EASST} + {1331434800 -21600 0 EAST} + {1350187200 -18000 1 EASST} + {1362884400 -21600 0 EAST} + {1381636800 -18000 1 EASST} + {1394334000 -21600 0 EAST} + {1413086400 -18000 1 EASST} + {1426388400 -21600 0 EAST} + {1444536000 -18000 1 EASST} + {1457838000 -21600 0 EAST} + {1475985600 -18000 1 EASST} + {1489287600 -21600 0 EAST} + {1508040000 -18000 1 EASST} + {1520737200 -21600 0 EAST} + {1539489600 -18000 1 EASST} + {1552186800 -21600 0 EAST} + {1570939200 -18000 1 EASST} + {1584241200 -21600 0 EAST} + {1602388800 -18000 1 EASST} + {1615690800 -21600 0 EAST} + {1633838400 -18000 1 EASST} + {1647140400 -21600 0 EAST} + {1665288000 -18000 1 EASST} + {1678590000 -21600 0 EAST} + {1697342400 -18000 1 EASST} + {1710039600 -21600 0 EAST} + {1728792000 -18000 1 EASST} + {1741489200 -21600 0 EAST} + {1760241600 -18000 1 EASST} + {1773543600 -21600 0 EAST} + {1791691200 -18000 1 EASST} + {1804993200 -21600 0 EAST} + {1823140800 -18000 1 EASST} + {1836442800 -21600 0 EAST} + {1855195200 -18000 1 EASST} + {1867892400 -21600 0 EAST} + {1886644800 -18000 1 EASST} + {1899342000 -21600 0 EAST} + {1918094400 -18000 1 EASST} + {1930791600 -21600 0 EAST} + {1949544000 -18000 1 EASST} + {1962846000 -21600 0 EAST} + {1980993600 -18000 1 EASST} + {1994295600 -21600 0 EAST} + {2012443200 -18000 1 EASST} + {2025745200 -21600 0 EAST} + {2044497600 -18000 1 EASST} + {2057194800 -21600 0 EAST} + {2075947200 -18000 1 EASST} + {2088644400 -21600 0 EAST} + {2107396800 -18000 1 EASST} + {2120698800 -21600 0 EAST} + {2138846400 -18000 1 EASST} + {2152148400 -21600 0 EAST} + {2170296000 -18000 1 EASST} + {2183598000 -21600 0 EAST} + {2201745600 -18000 1 EASST} + {2215047600 -21600 0 EAST} + {2233800000 -18000 1 EASST} + {2246497200 -21600 0 EAST} + {2265249600 -18000 1 EASST} + {2277946800 -21600 0 EAST} + {2296699200 -18000 1 EASST} + {2310001200 -21600 0 EAST} + {2328148800 -18000 1 EASST} + {2341450800 -21600 0 EAST} + {2359598400 -18000 1 EASST} + {2372900400 -21600 0 EAST} + {2391652800 -18000 1 EASST} + {2404350000 -21600 0 EAST} + {2423102400 -18000 1 EASST} + {2435799600 -21600 0 EAST} + {2454552000 -18000 1 EASST} + {2467854000 -21600 0 EAST} + {2486001600 -18000 1 EASST} + {2499303600 -21600 0 EAST} + {2517451200 -18000 1 EASST} + {2530753200 -21600 0 EAST} + {2548900800 -18000 1 EASST} + {2562202800 -21600 0 EAST} + {2580955200 -18000 1 EASST} + {2593652400 -21600 0 EAST} + {2612404800 -18000 1 EASST} + {2625102000 -21600 0 EAST} + {2643854400 -18000 1 EASST} + {2657156400 -21600 0 EAST} + {2675304000 -18000 1 EASST} + {2688606000 -21600 0 EAST} + {2706753600 -18000 1 EASST} + {2720055600 -21600 0 EAST} + {2738808000 -18000 1 EASST} + {2751505200 -21600 0 EAST} + {2770257600 -18000 1 EASST} + {2782954800 -21600 0 EAST} + {2801707200 -18000 1 EASST} + {2814404400 -21600 0 EAST} + {2833156800 -18000 1 EASST} + {2846458800 -21600 0 EAST} + {2864606400 -18000 1 EASST} + {2877908400 -21600 0 EAST} + {2896056000 -18000 1 EASST} + {2909358000 -21600 0 EAST} + {2928110400 -18000 1 EASST} + {2940807600 -21600 0 EAST} + {2959560000 -18000 1 EASST} + {2972257200 -21600 0 EAST} + {2991009600 -18000 1 EASST} + {3004311600 -21600 0 EAST} + {3022459200 -18000 1 EASST} + {3035761200 -21600 0 EAST} + {3053908800 -18000 1 EASST} + {3067210800 -21600 0 EAST} + {3085358400 -18000 1 EASST} + {3098660400 -21600 0 EAST} + {3117412800 -18000 1 EASST} + {3130110000 -21600 0 EAST} + {3148862400 -18000 1 EASST} + {3161559600 -21600 0 EAST} + {3180312000 -18000 1 EASST} + {3193614000 -21600 0 EAST} + {3211761600 -18000 1 EASST} + {3225063600 -21600 0 EAST} + {3243211200 -18000 1 EASST} + {3256513200 -21600 0 EAST} + {3275265600 -18000 1 EASST} + {3287962800 -21600 0 EAST} + {3306715200 -18000 1 EASST} + {3319412400 -21600 0 EAST} + {3338164800 -18000 1 EASST} + {3351466800 -21600 0 EAST} + {3369614400 -18000 1 EASST} + {3382916400 -21600 0 EAST} + {3401064000 -18000 1 EASST} + {3414366000 -21600 0 EAST} + {3432513600 -18000 1 EASST} + {3445815600 -21600 0 EAST} + {3464568000 -18000 1 EASST} + {3477265200 -21600 0 EAST} + {3496017600 -18000 1 EASST} + {3508714800 -21600 0 EAST} + {3527467200 -18000 1 EASST} + {3540769200 -21600 0 EAST} + {3558916800 -18000 1 EASST} + {3572218800 -21600 0 EAST} + {3590366400 -18000 1 EASST} + {3603668400 -21600 0 EAST} + {3622420800 -18000 1 EASST} + {3635118000 -21600 0 EAST} + {3653870400 -18000 1 EASST} + {3666567600 -21600 0 EAST} + {3685320000 -18000 1 EASST} + {3698017200 -21600 0 EAST} + {3716769600 -18000 1 EASST} + {3730071600 -21600 0 EAST} + {3748219200 -18000 1 EASST} + {3761521200 -21600 0 EAST} + {3779668800 -18000 1 EASST} + {3792970800 -21600 0 EAST} + {3811723200 -18000 1 EASST} + {3824420400 -21600 0 EAST} + {3843172800 -18000 1 EASST} + {3855870000 -21600 0 EAST} + {3874622400 -18000 1 EASST} + {3887924400 -21600 0 EAST} + {3906072000 -18000 1 EASST} + {3919374000 -21600 0 EAST} + {3937521600 -18000 1 EASST} + {3950823600 -21600 0 EAST} + {3968971200 -18000 1 EASST} + {3982273200 -21600 0 EAST} + {4001025600 -18000 1 EASST} + {4013722800 -21600 0 EAST} + {4032475200 -18000 1 EASST} + {4045172400 -21600 0 EAST} + {4063924800 -18000 1 EASST} + {4077226800 -21600 0 EAST} + {4095374400 -18000 1 EASST} +} diff --git a/library/tzdata/Pacific/Efate b/library/tzdata/Pacific/Efate index 18db6de..d6df182 100644 --- a/library/tzdata/Pacific/Efate +++ b/library/tzdata/Pacific/Efate @@ -1,26 +1,26 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Efate) { - {-9223372036854775808 40396 0 LMT} - {-1829387596 39600 0 VUT} - {433256400 43200 1 VUST} - {448977600 39600 0 VUT} - {467298000 43200 1 VUST} - {480427200 39600 0 VUT} - {496760400 43200 1 VUST} - {511876800 39600 0 VUT} - {528210000 43200 1 VUST} - {543931200 39600 0 VUT} - {559659600 43200 1 VUST} - {575380800 39600 0 VUT} - {591109200 43200 1 VUST} - {606830400 39600 0 VUT} - {622558800 43200 1 VUST} - {638280000 39600 0 VUT} - {654008400 43200 1 VUST} - {669729600 39600 0 VUT} - {686062800 43200 1 VUST} - {696340800 39600 0 VUT} - {719931600 43200 1 VUST} - {727790400 39600 0 VUT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Efate) { + {-9223372036854775808 40396 0 LMT} + {-1829387596 39600 0 VUT} + {433256400 43200 1 VUST} + {448977600 39600 0 VUT} + {467298000 43200 1 VUST} + {480427200 39600 0 VUT} + {496760400 43200 1 VUST} + {511876800 39600 0 VUT} + {528210000 43200 1 VUST} + {543931200 39600 0 VUT} + {559659600 43200 1 VUST} + {575380800 39600 0 VUT} + {591109200 43200 1 VUST} + {606830400 39600 0 VUT} + {622558800 43200 1 VUST} + {638280000 39600 0 VUT} + {654008400 43200 1 VUST} + {669729600 39600 0 VUT} + {686062800 43200 1 VUST} + {696340800 39600 0 VUT} + {719931600 43200 1 VUST} + {727790400 39600 0 VUT} +} diff --git a/library/tzdata/Pacific/Enderbury b/library/tzdata/Pacific/Enderbury index 55784c4..a5f5839 100644 --- a/library/tzdata/Pacific/Enderbury +++ b/library/tzdata/Pacific/Enderbury @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Enderbury) { - {-9223372036854775808 -41060 0 LMT} - {-2177411740 -43200 0 PHOT} - {307627200 -39600 0 PHOT} - {788958000 46800 0 PHOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Enderbury) { + {-9223372036854775808 -41060 0 LMT} + {-2177411740 -43200 0 PHOT} + {307627200 -39600 0 PHOT} + {788958000 46800 0 PHOT} +} diff --git a/library/tzdata/Pacific/Fakaofo b/library/tzdata/Pacific/Fakaofo index 7420639..bb3f93e 100644 --- a/library/tzdata/Pacific/Fakaofo +++ b/library/tzdata/Pacific/Fakaofo @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Fakaofo) { - {-9223372036854775808 -41096 0 LMT} - {-2177411704 -36000 0 TKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Fakaofo) { + {-9223372036854775808 -41096 0 LMT} + {-2177411704 -36000 0 TKT} +} diff --git a/library/tzdata/Pacific/Fiji b/library/tzdata/Pacific/Fiji index 2194d59..57eb643 100644 --- a/library/tzdata/Pacific/Fiji +++ b/library/tzdata/Pacific/Fiji @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Fiji) { - {-9223372036854775808 42820 0 LMT} - {-1709985220 43200 0 FJT} - {909842400 46800 1 FJST} - {920124000 43200 0 FJT} - {941896800 46800 1 FJST} - {951573600 43200 0 FJT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Fiji) { + {-9223372036854775808 42820 0 LMT} + {-1709985220 43200 0 FJT} + {909842400 46800 1 FJST} + {920124000 43200 0 FJT} + {941896800 46800 1 FJST} + {951573600 43200 0 FJT} +} diff --git a/library/tzdata/Pacific/Funafuti b/library/tzdata/Pacific/Funafuti index b94e4fb..b40c989 100644 --- a/library/tzdata/Pacific/Funafuti +++ b/library/tzdata/Pacific/Funafuti @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Funafuti) { - {-9223372036854775808 43012 0 LMT} - {-2177495812 43200 0 TVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Funafuti) { + {-9223372036854775808 43012 0 LMT} + {-2177495812 43200 0 TVT} +} diff --git a/library/tzdata/Pacific/Galapagos b/library/tzdata/Pacific/Galapagos index d8c80e8..ff79a8d 100644 --- a/library/tzdata/Pacific/Galapagos +++ b/library/tzdata/Pacific/Galapagos @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Galapagos) { - {-9223372036854775808 -21504 0 LMT} - {-1230746496 -18000 0 ECT} - {504939600 -21600 0 GALT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Galapagos) { + {-9223372036854775808 -21504 0 LMT} + {-1230746496 -18000 0 ECT} + {504939600 -21600 0 GALT} +} diff --git a/library/tzdata/Pacific/Gambier b/library/tzdata/Pacific/Gambier index d69f99a..4ad611e 100644 --- a/library/tzdata/Pacific/Gambier +++ b/library/tzdata/Pacific/Gambier @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Gambier) { - {-9223372036854775808 -32388 0 LMT} - {-1806678012 -32400 0 GAMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Gambier) { + {-9223372036854775808 -32388 0 LMT} + {-1806678012 -32400 0 GAMT} +} diff --git a/library/tzdata/Pacific/Guadalcanal b/library/tzdata/Pacific/Guadalcanal index 09a67dd..6ad2bee 100644 --- a/library/tzdata/Pacific/Guadalcanal +++ b/library/tzdata/Pacific/Guadalcanal @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Guadalcanal) { - {-9223372036854775808 38388 0 LMT} - {-1806748788 39600 0 SBT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Guadalcanal) { + {-9223372036854775808 38388 0 LMT} + {-1806748788 39600 0 SBT} +} diff --git a/library/tzdata/Pacific/Guam b/library/tzdata/Pacific/Guam index 79cca80..91c5a16 100644 --- a/library/tzdata/Pacific/Guam +++ b/library/tzdata/Pacific/Guam @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Guam) { - {-9223372036854775808 -51660 0 LMT} - {-3944626740 34740 0 LMT} - {-2177487540 36000 0 GST} - {977493600 36000 0 ChST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Guam) { + {-9223372036854775808 -51660 0 LMT} + {-3944626740 34740 0 LMT} + {-2177487540 36000 0 GST} + {977493600 36000 0 ChST} +} diff --git a/library/tzdata/Pacific/Honolulu b/library/tzdata/Pacific/Honolulu index f441a02..c928582 100644 --- a/library/tzdata/Pacific/Honolulu +++ b/library/tzdata/Pacific/Honolulu @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Honolulu) { - {-9223372036854775808 -37886 0 LMT} - {-2208907714 -37800 0 HST} - {-1157283000 -34200 1 HDT} - {-1155472200 -34200 0 HST} - {-880201800 -34200 1 HWT} - {-769395600 -34200 1 HPT} - {-765376200 -37800 0 HST} - {-712150200 -36000 0 HST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Honolulu) { + {-9223372036854775808 -37886 0 LMT} + {-2208907714 -37800 0 HST} + {-1157283000 -34200 1 HDT} + {-1155472200 -34200 0 HST} + {-880201800 -34200 1 HWT} + {-769395600 -34200 1 HPT} + {-765376200 -37800 0 HST} + {-712150200 -36000 0 HST} +} diff --git a/library/tzdata/Pacific/Johnston b/library/tzdata/Pacific/Johnston index 7f9fee4..24033a2 100644 --- a/library/tzdata/Pacific/Johnston +++ b/library/tzdata/Pacific/Johnston @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Johnston) { - {-9223372036854775808 -36000 0 HST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Johnston) { + {-9223372036854775808 -36000 0 HST} +} diff --git a/library/tzdata/Pacific/Kiritimati b/library/tzdata/Pacific/Kiritimati index 06b695b..3996e96 100644 --- a/library/tzdata/Pacific/Kiritimati +++ b/library/tzdata/Pacific/Kiritimati @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Kiritimati) { - {-9223372036854775808 -37760 0 LMT} - {-2177415040 -38400 0 LINT} - {307622400 -36000 0 LINT} - {788954400 50400 0 LINT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Kiritimati) { + {-9223372036854775808 -37760 0 LMT} + {-2177415040 -38400 0 LINT} + {307622400 -36000 0 LINT} + {788954400 50400 0 LINT} +} diff --git a/library/tzdata/Pacific/Kosrae b/library/tzdata/Pacific/Kosrae index a16b19d..c3d98f7 100644 --- a/library/tzdata/Pacific/Kosrae +++ b/library/tzdata/Pacific/Kosrae @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Kosrae) { - {-9223372036854775808 39116 0 LMT} - {-2177491916 39600 0 KOST} - {-7988400 43200 0 KOST} - {915105600 39600 0 KOST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Kosrae) { + {-9223372036854775808 39116 0 LMT} + {-2177491916 39600 0 KOST} + {-7988400 43200 0 KOST} + {915105600 39600 0 KOST} +} diff --git a/library/tzdata/Pacific/Kwajalein b/library/tzdata/Pacific/Kwajalein index 8600b3b..7b43796 100644 --- a/library/tzdata/Pacific/Kwajalein +++ b/library/tzdata/Pacific/Kwajalein @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Kwajalein) { - {-9223372036854775808 40160 0 LMT} - {-2177492960 39600 0 MHT} - {-7988400 -43200 0 KWAT} - {745848000 43200 0 MHT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Kwajalein) { + {-9223372036854775808 40160 0 LMT} + {-2177492960 39600 0 MHT} + {-7988400 -43200 0 KWAT} + {745848000 43200 0 MHT} +} diff --git a/library/tzdata/Pacific/Majuro b/library/tzdata/Pacific/Majuro index 468baab..e701b05 100644 --- a/library/tzdata/Pacific/Majuro +++ b/library/tzdata/Pacific/Majuro @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Majuro) { - {-9223372036854775808 41088 0 LMT} - {-2177493888 39600 0 MHT} - {-7988400 43200 0 MHT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Majuro) { + {-9223372036854775808 41088 0 LMT} + {-2177493888 39600 0 MHT} + {-7988400 43200 0 MHT} +} diff --git a/library/tzdata/Pacific/Marquesas b/library/tzdata/Pacific/Marquesas index 9bb508f..0d6e545 100644 --- a/library/tzdata/Pacific/Marquesas +++ b/library/tzdata/Pacific/Marquesas @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Marquesas) { - {-9223372036854775808 -33480 0 LMT} - {-1806676920 -34200 0 MART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Marquesas) { + {-9223372036854775808 -33480 0 LMT} + {-1806676920 -34200 0 MART} +} diff --git a/library/tzdata/Pacific/Midway b/library/tzdata/Pacific/Midway index c07b030..318ce84 100644 --- a/library/tzdata/Pacific/Midway +++ b/library/tzdata/Pacific/Midway @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Midway) { - {-9223372036854775808 -42568 0 LMT} - {-2177410232 -39600 0 NST} - {-428504400 -36000 1 NDT} - {-420645600 -39600 0 NST} - {-86878800 -39600 0 BST} - {439038000 -39600 0 SST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Midway) { + {-9223372036854775808 -42568 0 LMT} + {-2177410232 -39600 0 NST} + {-428504400 -36000 1 NDT} + {-420645600 -39600 0 NST} + {-86878800 -39600 0 BST} + {439038000 -39600 0 SST} +} diff --git a/library/tzdata/Pacific/Nauru b/library/tzdata/Pacific/Nauru index 2da1e25..0926efc 100644 --- a/library/tzdata/Pacific/Nauru +++ b/library/tzdata/Pacific/Nauru @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Nauru) { - {-9223372036854775808 40060 0 LMT} - {-1545131260 41400 0 NRT} - {-877347000 32400 0 JST} - {-800960400 41400 0 NRT} - {294323400 43200 0 NRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Nauru) { + {-9223372036854775808 40060 0 LMT} + {-1545131260 41400 0 NRT} + {-877347000 32400 0 JST} + {-800960400 41400 0 NRT} + {294323400 43200 0 NRT} +} diff --git a/library/tzdata/Pacific/Niue b/library/tzdata/Pacific/Niue index cf149fc..ad8bffd 100644 --- a/library/tzdata/Pacific/Niue +++ b/library/tzdata/Pacific/Niue @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Niue) { - {-9223372036854775808 -40780 0 LMT} - {-2177412020 -40800 0 NUT} - {-599575200 -41400 0 NUT} - {276089400 -39600 0 NUT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Niue) { + {-9223372036854775808 -40780 0 LMT} + {-2177412020 -40800 0 NUT} + {-599575200 -41400 0 NUT} + {276089400 -39600 0 NUT} +} diff --git a/library/tzdata/Pacific/Norfolk b/library/tzdata/Pacific/Norfolk index a8fac15..a399902 100644 --- a/library/tzdata/Pacific/Norfolk +++ b/library/tzdata/Pacific/Norfolk @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Norfolk) { - {-9223372036854775808 40312 0 LMT} - {-2177493112 40320 0 NMT} - {-599656320 41400 0 NFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Norfolk) { + {-9223372036854775808 40312 0 LMT} + {-2177493112 40320 0 NMT} + {-599656320 41400 0 NFT} +} diff --git a/library/tzdata/Pacific/Noumea b/library/tzdata/Pacific/Noumea index db1eeae..332eee7 100644 --- a/library/tzdata/Pacific/Noumea +++ b/library/tzdata/Pacific/Noumea @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Noumea) { - {-9223372036854775808 39948 0 LMT} - {-1829387148 39600 0 NCT} - {250002000 43200 1 NCST} - {257342400 39600 0 NCT} - {281451600 43200 1 NCST} - {288878400 39600 0 NCT} - {849366000 43200 1 NCST} - {857228400 39600 0 NCT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Noumea) { + {-9223372036854775808 39948 0 LMT} + {-1829387148 39600 0 NCT} + {250002000 43200 1 NCST} + {257342400 39600 0 NCT} + {281451600 43200 1 NCST} + {288878400 39600 0 NCT} + {849366000 43200 1 NCST} + {857228400 39600 0 NCT} +} diff --git a/library/tzdata/Pacific/Pago_Pago b/library/tzdata/Pacific/Pago_Pago index 830f9ee..dc2cd53 100644 --- a/library/tzdata/Pacific/Pago_Pago +++ b/library/tzdata/Pacific/Pago_Pago @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Pago_Pago) { - {-9223372036854775808 45432 0 LMT} - {-2855738232 -40968 0 LMT} - {-1861879032 -41400 0 SAMT} - {-631110600 -39600 0 NST} - {-86878800 -39600 0 BST} - {439038000 -39600 0 SST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Pago_Pago) { + {-9223372036854775808 45432 0 LMT} + {-2855738232 -40968 0 LMT} + {-1861879032 -41400 0 SAMT} + {-631110600 -39600 0 NST} + {-86878800 -39600 0 BST} + {439038000 -39600 0 SST} +} diff --git a/library/tzdata/Pacific/Palau b/library/tzdata/Pacific/Palau index ee0606d..2b1622f 100644 --- a/library/tzdata/Pacific/Palau +++ b/library/tzdata/Pacific/Palau @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Palau) { - {-9223372036854775808 32276 0 LMT} - {-2177485076 32400 0 PWT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Palau) { + {-9223372036854775808 32276 0 LMT} + {-2177485076 32400 0 PWT} +} diff --git a/library/tzdata/Pacific/Pitcairn b/library/tzdata/Pacific/Pitcairn index d62644e..183b07b 100644 --- a/library/tzdata/Pacific/Pitcairn +++ b/library/tzdata/Pacific/Pitcairn @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Pitcairn) { - {-9223372036854775808 -31220 0 LMT} - {-2177421580 -30600 0 PNT} - {893665800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Pitcairn) { + {-9223372036854775808 -31220 0 LMT} + {-2177421580 -30600 0 PNT} + {893665800 -28800 0 PST} +} diff --git a/library/tzdata/Pacific/Ponape b/library/tzdata/Pacific/Ponape index 092b0a9..4811b88 100644 --- a/library/tzdata/Pacific/Ponape +++ b/library/tzdata/Pacific/Ponape @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Ponape) { - {-9223372036854775808 37972 0 LMT} - {-2177490772 39600 0 PONT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Ponape) { + {-9223372036854775808 37972 0 LMT} + {-2177490772 39600 0 PONT} +} diff --git a/library/tzdata/Pacific/Port_Moresby b/library/tzdata/Pacific/Port_Moresby index 65eb533..0f81755 100644 --- a/library/tzdata/Pacific/Port_Moresby +++ b/library/tzdata/Pacific/Port_Moresby @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Port_Moresby) { - {-9223372036854775808 35320 0 LMT} - {-2840176120 35312 0 PMMT} - {-2366790512 36000 0 PGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Port_Moresby) { + {-9223372036854775808 35320 0 LMT} + {-2840176120 35312 0 PMMT} + {-2366790512 36000 0 PGT} +} diff --git a/library/tzdata/Pacific/Rarotonga b/library/tzdata/Pacific/Rarotonga index a4ecf8d..4a7688c 100644 --- a/library/tzdata/Pacific/Rarotonga +++ b/library/tzdata/Pacific/Rarotonga @@ -1,32 +1,32 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Rarotonga) { - {-9223372036854775808 -38344 0 LMT} - {-2177414456 -37800 0 CKT} - {279714600 -34200 0 CKHST} - {289387800 -36000 0 CKT} - {309952800 -34200 1 CKHST} - {320837400 -36000 0 CKT} - {341402400 -34200 1 CKHST} - {352287000 -36000 0 CKT} - {372852000 -34200 1 CKHST} - {384341400 -36000 0 CKT} - {404906400 -34200 1 CKHST} - {415791000 -36000 0 CKT} - {436356000 -34200 1 CKHST} - {447240600 -36000 0 CKT} - {467805600 -34200 1 CKHST} - {478690200 -36000 0 CKT} - {499255200 -34200 1 CKHST} - {510139800 -36000 0 CKT} - {530704800 -34200 1 CKHST} - {541589400 -36000 0 CKT} - {562154400 -34200 1 CKHST} - {573643800 -36000 0 CKT} - {594208800 -34200 1 CKHST} - {605093400 -36000 0 CKT} - {625658400 -34200 1 CKHST} - {636543000 -36000 0 CKT} - {657108000 -34200 1 CKHST} - {667992600 -36000 0 CKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Rarotonga) { + {-9223372036854775808 -38344 0 LMT} + {-2177414456 -37800 0 CKT} + {279714600 -34200 0 CKHST} + {289387800 -36000 0 CKT} + {309952800 -34200 1 CKHST} + {320837400 -36000 0 CKT} + {341402400 -34200 1 CKHST} + {352287000 -36000 0 CKT} + {372852000 -34200 1 CKHST} + {384341400 -36000 0 CKT} + {404906400 -34200 1 CKHST} + {415791000 -36000 0 CKT} + {436356000 -34200 1 CKHST} + {447240600 -36000 0 CKT} + {467805600 -34200 1 CKHST} + {478690200 -36000 0 CKT} + {499255200 -34200 1 CKHST} + {510139800 -36000 0 CKT} + {530704800 -34200 1 CKHST} + {541589400 -36000 0 CKT} + {562154400 -34200 1 CKHST} + {573643800 -36000 0 CKT} + {594208800 -34200 1 CKHST} + {605093400 -36000 0 CKT} + {625658400 -34200 1 CKHST} + {636543000 -36000 0 CKT} + {657108000 -34200 1 CKHST} + {667992600 -36000 0 CKT} +} diff --git a/library/tzdata/Pacific/Saipan b/library/tzdata/Pacific/Saipan index b799298..45fcfba 100644 --- a/library/tzdata/Pacific/Saipan +++ b/library/tzdata/Pacific/Saipan @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Saipan) { - {-9223372036854775808 -51420 0 LMT} - {-3944626980 34980 0 LMT} - {-2177487780 32400 0 MPT} - {-7981200 36000 0 MPT} - {977493600 36000 0 ChST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Saipan) { + {-9223372036854775808 -51420 0 LMT} + {-3944626980 34980 0 LMT} + {-2177487780 32400 0 MPT} + {-7981200 36000 0 MPT} + {977493600 36000 0 ChST} +} diff --git a/library/tzdata/Pacific/Samoa b/library/tzdata/Pacific/Samoa index 686eb34..8db0891 100644 --- a/library/tzdata/Pacific/Samoa +++ b/library/tzdata/Pacific/Samoa @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Pago_Pago)]} { - LoadTimeZoneFile Pacific/Pago_Pago -} -set TZData(:Pacific/Samoa) $TZData(:Pacific/Pago_Pago) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Pago_Pago)]} { + LoadTimeZoneFile Pacific/Pago_Pago +} +set TZData(:Pacific/Samoa) $TZData(:Pacific/Pago_Pago) diff --git a/library/tzdata/Pacific/Tahiti b/library/tzdata/Pacific/Tahiti index f739223..6117f02 100644 --- a/library/tzdata/Pacific/Tahiti +++ b/library/tzdata/Pacific/Tahiti @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Tahiti) { - {-9223372036854775808 -35896 0 LMT} - {-1806674504 -36000 0 TAHT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Tahiti) { + {-9223372036854775808 -35896 0 LMT} + {-1806674504 -36000 0 TAHT} +} diff --git a/library/tzdata/Pacific/Tarawa b/library/tzdata/Pacific/Tarawa index 2dab5a2..2ee564b 100644 --- a/library/tzdata/Pacific/Tarawa +++ b/library/tzdata/Pacific/Tarawa @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Tarawa) { - {-9223372036854775808 41524 0 LMT} - {-2177494324 43200 0 GILT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Tarawa) { + {-9223372036854775808 41524 0 LMT} + {-2177494324 43200 0 GILT} +} diff --git a/library/tzdata/Pacific/Tongatapu b/library/tzdata/Pacific/Tongatapu index da9f857..6f6e4a8 100644 --- a/library/tzdata/Pacific/Tongatapu +++ b/library/tzdata/Pacific/Tongatapu @@ -1,14 +1,14 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Tongatapu) { - {-9223372036854775808 44360 0 LMT} - {-2177497160 44400 0 TOT} - {-915193200 46800 0 TOT} - {915102000 46800 0 TOT} - {939214800 50400 1 TOST} - {953384400 46800 0 TOT} - {973342800 50400 1 TOST} - {980596800 46800 0 TOT} - {1004792400 50400 1 TOST} - {1012046400 46800 0 TOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Tongatapu) { + {-9223372036854775808 44360 0 LMT} + {-2177497160 44400 0 TOT} + {-915193200 46800 0 TOT} + {915102000 46800 0 TOT} + {939214800 50400 1 TOST} + {953384400 46800 0 TOT} + {973342800 50400 1 TOST} + {980596800 46800 0 TOT} + {1004792400 50400 1 TOST} + {1012046400 46800 0 TOT} +} diff --git a/library/tzdata/Pacific/Truk b/library/tzdata/Pacific/Truk index c152198..67808ca 100644 --- a/library/tzdata/Pacific/Truk +++ b/library/tzdata/Pacific/Truk @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Truk) { - {-9223372036854775808 36428 0 LMT} - {-2177489228 36000 0 TRUT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Truk) { + {-9223372036854775808 36428 0 LMT} + {-2177489228 36000 0 TRUT} +} diff --git a/library/tzdata/Pacific/Wake b/library/tzdata/Pacific/Wake index 5afedf5..8e87682 100644 --- a/library/tzdata/Pacific/Wake +++ b/library/tzdata/Pacific/Wake @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Wake) { - {-9223372036854775808 39988 0 LMT} - {-2177492788 43200 0 WAKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Wake) { + {-9223372036854775808 39988 0 LMT} + {-2177492788 43200 0 WAKT} +} diff --git a/library/tzdata/Pacific/Wallis b/library/tzdata/Pacific/Wallis index 7bdd964..1f99f2b 100644 --- a/library/tzdata/Pacific/Wallis +++ b/library/tzdata/Pacific/Wallis @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Wallis) { - {-9223372036854775808 44120 0 LMT} - {-2177496920 43200 0 WFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Wallis) { + {-9223372036854775808 44120 0 LMT} + {-2177496920 43200 0 WFT} +} diff --git a/library/tzdata/Pacific/Yap b/library/tzdata/Pacific/Yap index a97a195..fed590a 100644 --- a/library/tzdata/Pacific/Yap +++ b/library/tzdata/Pacific/Yap @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Truk)]} { - LoadTimeZoneFile Pacific/Truk -} -set TZData(:Pacific/Yap) $TZData(:Pacific/Truk) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Truk)]} { + LoadTimeZoneFile Pacific/Truk +} +set TZData(:Pacific/Yap) $TZData(:Pacific/Truk) diff --git a/library/tzdata/Poland b/library/tzdata/Poland index bd24028..2534324 100644 --- a/library/tzdata/Poland +++ b/library/tzdata/Poland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Warsaw)]} { - LoadTimeZoneFile Europe/Warsaw -} -set TZData(:Poland) $TZData(:Europe/Warsaw) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Warsaw)]} { + LoadTimeZoneFile Europe/Warsaw +} +set TZData(:Poland) $TZData(:Europe/Warsaw) diff --git a/library/tzdata/Portugal b/library/tzdata/Portugal index d1ffd9f..908e581 100644 --- a/library/tzdata/Portugal +++ b/library/tzdata/Portugal @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Lisbon)]} { - LoadTimeZoneFile Europe/Lisbon -} -set TZData(:Portugal) $TZData(:Europe/Lisbon) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Lisbon)]} { + LoadTimeZoneFile Europe/Lisbon +} +set TZData(:Portugal) $TZData(:Europe/Lisbon) diff --git a/library/tzdata/ROC b/library/tzdata/ROC index 5dd196d..9902ce9 100644 --- a/library/tzdata/ROC +++ b/library/tzdata/ROC @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Taipei)]} { - LoadTimeZoneFile Asia/Taipei -} -set TZData(:ROC) $TZData(:Asia/Taipei) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Taipei)]} { + LoadTimeZoneFile Asia/Taipei +} +set TZData(:ROC) $TZData(:Asia/Taipei) diff --git a/library/tzdata/ROK b/library/tzdata/ROK index 1162ce4..e2ad2d8 100644 --- a/library/tzdata/ROK +++ b/library/tzdata/ROK @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Seoul)]} { - LoadTimeZoneFile Asia/Seoul -} -set TZData(:ROK) $TZData(:Asia/Seoul) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Seoul)]} { + LoadTimeZoneFile Asia/Seoul +} +set TZData(:ROK) $TZData(:Asia/Seoul) diff --git a/library/tzdata/Singapore b/library/tzdata/Singapore index 1584b35..7381f8f 100644 --- a/library/tzdata/Singapore +++ b/library/tzdata/Singapore @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Singapore)]} { - LoadTimeZoneFile Asia/Singapore -} -set TZData(:Singapore) $TZData(:Asia/Singapore) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Singapore)]} { + LoadTimeZoneFile Asia/Singapore +} +set TZData(:Singapore) $TZData(:Asia/Singapore) diff --git a/library/tzdata/Turkey b/library/tzdata/Turkey index e20a7a5..120da0e 100644 --- a/library/tzdata/Turkey +++ b/library/tzdata/Turkey @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Istanbul)]} { - LoadTimeZoneFile Europe/Istanbul -} -set TZData(:Turkey) $TZData(:Europe/Istanbul) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Istanbul)]} { + LoadTimeZoneFile Europe/Istanbul +} +set TZData(:Turkey) $TZData(:Europe/Istanbul) diff --git a/library/tzdata/UCT b/library/tzdata/UCT index 8449328..7e78306 100644 --- a/library/tzdata/UCT +++ b/library/tzdata/UCT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UCT)]} { - LoadTimeZoneFile Etc/UCT -} -set TZData(:UCT) $TZData(:Etc/UCT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UCT)]} { + LoadTimeZoneFile Etc/UCT +} +set TZData(:UCT) $TZData(:Etc/UCT) diff --git a/library/tzdata/US/Alaska b/library/tzdata/US/Alaska index 69a3899..2afc7d1 100644 --- a/library/tzdata/US/Alaska +++ b/library/tzdata/US/Alaska @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Anchorage)]} { - LoadTimeZoneFile America/Anchorage -} -set TZData(:US/Alaska) $TZData(:America/Anchorage) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Anchorage)]} { + LoadTimeZoneFile America/Anchorage +} +set TZData(:US/Alaska) $TZData(:America/Anchorage) diff --git a/library/tzdata/US/Aleutian b/library/tzdata/US/Aleutian index 024e70b..cd7a011 100644 --- a/library/tzdata/US/Aleutian +++ b/library/tzdata/US/Aleutian @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Adak)]} { - LoadTimeZoneFile America/Adak -} -set TZData(:US/Aleutian) $TZData(:America/Adak) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Adak)]} { + LoadTimeZoneFile America/Adak +} +set TZData(:US/Aleutian) $TZData(:America/Adak) diff --git a/library/tzdata/US/Arizona b/library/tzdata/US/Arizona index 8eaa961..17d0dd8 100644 --- a/library/tzdata/US/Arizona +++ b/library/tzdata/US/Arizona @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Phoenix)]} { - LoadTimeZoneFile America/Phoenix -} -set TZData(:US/Arizona) $TZData(:America/Phoenix) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Phoenix)]} { + LoadTimeZoneFile America/Phoenix +} +set TZData(:US/Arizona) $TZData(:America/Phoenix) diff --git a/library/tzdata/US/Central b/library/tzdata/US/Central index 2aab66e..e13980f 100644 --- a/library/tzdata/US/Central +++ b/library/tzdata/US/Central @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Chicago)]} { - LoadTimeZoneFile America/Chicago -} -set TZData(:US/Central) $TZData(:America/Chicago) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Chicago)]} { + LoadTimeZoneFile America/Chicago +} +set TZData(:US/Central) $TZData(:America/Chicago) diff --git a/library/tzdata/US/East-Indiana b/library/tzdata/US/East-Indiana index 2035a06..0ee4428 100644 --- a/library/tzdata/US/East-Indiana +++ b/library/tzdata/US/East-Indiana @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Indianapolis)]} { - LoadTimeZoneFile America/Indiana/Indianapolis -} -set TZData(:US/East-Indiana) $TZData(:America/Indiana/Indianapolis) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Indianapolis)]} { + LoadTimeZoneFile America/Indiana/Indianapolis +} +set TZData(:US/East-Indiana) $TZData(:America/Indiana/Indianapolis) diff --git a/library/tzdata/US/Eastern b/library/tzdata/US/Eastern index 3cf2651..ceee746 100644 --- a/library/tzdata/US/Eastern +++ b/library/tzdata/US/Eastern @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/New_York)]} { - LoadTimeZoneFile America/New_York -} -set TZData(:US/Eastern) $TZData(:America/New_York) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/New_York)]} { + LoadTimeZoneFile America/New_York +} +set TZData(:US/Eastern) $TZData(:America/New_York) diff --git a/library/tzdata/US/Hawaii b/library/tzdata/US/Hawaii index 6d1af65..0ff0b1c 100644 --- a/library/tzdata/US/Hawaii +++ b/library/tzdata/US/Hawaii @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Honolulu)]} { - LoadTimeZoneFile Pacific/Honolulu -} -set TZData(:US/Hawaii) $TZData(:Pacific/Honolulu) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Honolulu)]} { + LoadTimeZoneFile Pacific/Honolulu +} +set TZData(:US/Hawaii) $TZData(:Pacific/Honolulu) diff --git a/library/tzdata/US/Indiana-Starke b/library/tzdata/US/Indiana-Starke index 6ffe0e2..e2cced4 100644 --- a/library/tzdata/US/Indiana-Starke +++ b/library/tzdata/US/Indiana-Starke @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Knox)]} { - LoadTimeZoneFile America/Indiana/Knox -} -set TZData(:US/Indiana-Starke) $TZData(:America/Indiana/Knox) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Knox)]} { + LoadTimeZoneFile America/Indiana/Knox +} +set TZData(:US/Indiana-Starke) $TZData(:America/Indiana/Knox) diff --git a/library/tzdata/US/Michigan b/library/tzdata/US/Michigan index b15035c..dd307f0 100644 --- a/library/tzdata/US/Michigan +++ b/library/tzdata/US/Michigan @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Detroit)]} { - LoadTimeZoneFile America/Detroit -} -set TZData(:US/Michigan) $TZData(:America/Detroit) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Detroit)]} { + LoadTimeZoneFile America/Detroit +} +set TZData(:US/Michigan) $TZData(:America/Detroit) diff --git a/library/tzdata/US/Mountain b/library/tzdata/US/Mountain index b54235f..c91abd8 100644 --- a/library/tzdata/US/Mountain +++ b/library/tzdata/US/Mountain @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Denver)]} { - LoadTimeZoneFile America/Denver -} -set TZData(:US/Mountain) $TZData(:America/Denver) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Denver)]} { + LoadTimeZoneFile America/Denver +} +set TZData(:US/Mountain) $TZData(:America/Denver) diff --git a/library/tzdata/US/Pacific b/library/tzdata/US/Pacific index 7232215..b53a54a 100644 --- a/library/tzdata/US/Pacific +++ b/library/tzdata/US/Pacific @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Los_Angeles)]} { - LoadTimeZoneFile America/Los_Angeles -} -set TZData(:US/Pacific) $TZData(:America/Los_Angeles) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Los_Angeles)]} { + LoadTimeZoneFile America/Los_Angeles +} +set TZData(:US/Pacific) $TZData(:America/Los_Angeles) diff --git a/library/tzdata/US/Pacific-New b/library/tzdata/US/Pacific-New index 2eb30f8..89fd6fc 100644 --- a/library/tzdata/US/Pacific-New +++ b/library/tzdata/US/Pacific-New @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Los_Angeles)]} { - LoadTimeZoneFile America/Los_Angeles -} -set TZData(:US/Pacific-New) $TZData(:America/Los_Angeles) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Los_Angeles)]} { + LoadTimeZoneFile America/Los_Angeles +} +set TZData(:US/Pacific-New) $TZData(:America/Los_Angeles) diff --git a/library/tzdata/US/Samoa b/library/tzdata/US/Samoa index ad86b4f..2b491d5 100644 --- a/library/tzdata/US/Samoa +++ b/library/tzdata/US/Samoa @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Pago_Pago)]} { - LoadTimeZoneFile Pacific/Pago_Pago -} -set TZData(:US/Samoa) $TZData(:Pacific/Pago_Pago) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Pago_Pago)]} { + LoadTimeZoneFile Pacific/Pago_Pago +} +set TZData(:US/Samoa) $TZData(:Pacific/Pago_Pago) diff --git a/library/tzdata/UTC b/library/tzdata/UTC index 6d04d96..1307f77 100644 --- a/library/tzdata/UTC +++ b/library/tzdata/UTC @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:UTC) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:UTC) $TZData(:Etc/UTC) diff --git a/library/tzdata/Universal b/library/tzdata/Universal index 4a9ed5e..bddfd71 100644 --- a/library/tzdata/Universal +++ b/library/tzdata/Universal @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:Universal) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:Universal) $TZData(:Etc/UTC) diff --git a/library/tzdata/W-SU b/library/tzdata/W-SU index 7e1f613..b653e7b 100644 --- a/library/tzdata/W-SU +++ b/library/tzdata/W-SU @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Moscow)]} { - LoadTimeZoneFile Europe/Moscow -} -set TZData(:W-SU) $TZData(:Europe/Moscow) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Moscow)]} { + LoadTimeZoneFile Europe/Moscow +} +set TZData(:W-SU) $TZData(:Europe/Moscow) diff --git a/library/tzdata/WET b/library/tzdata/WET index 60366a3..c60a5c5 100644 --- a/library/tzdata/WET +++ b/library/tzdata/WET @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:WET) { - {-9223372036854775808 0 0 WET} - {228877200 3600 1 WEST} - {243997200 0 0 WET} - {260326800 3600 1 WEST} - {276051600 0 0 WET} - {291776400 3600 1 WEST} - {307501200 0 0 WET} - {323830800 3600 1 WEST} - {338950800 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417574800 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 0 0 WET} - {733280400 3600 1 WEST} - {749005200 0 0 WET} - {764730000 3600 1 WEST} - {780454800 0 0 WET} - {796179600 3600 1 WEST} - {811904400 0 0 WET} - {828234000 3600 1 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:WET) { + {-9223372036854775808 0 0 WET} + {228877200 3600 1 WEST} + {243997200 0 0 WET} + {260326800 3600 1 WEST} + {276051600 0 0 WET} + {291776400 3600 1 WEST} + {307501200 0 0 WET} + {323830800 3600 1 WEST} + {338950800 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417574800 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 0 0 WET} + {733280400 3600 1 WEST} + {749005200 0 0 WET} + {764730000 3600 1 WEST} + {780454800 0 0 WET} + {796179600 3600 1 WEST} + {811904400 0 0 WET} + {828234000 3600 1 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Zulu b/library/tzdata/Zulu index e9748e4..63d6a7d 100644 --- a/library/tzdata/Zulu +++ b/library/tzdata/Zulu @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:Zulu) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:Zulu) $TZData(:Etc/UTC) -- cgit v0.12 From 1d411553104b36d5a80c7a465812e262145c1942 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Thu, 9 Apr 2009 20:11:51 +0000 Subject: Fix tzdata line terminators --- ChangeLog | 1 + library/tzdata/Africa/Abidjan | 12 +- library/tzdata/Africa/Accra | 40 +- library/tzdata/Africa/Addis_Ababa | 14 +- library/tzdata/Africa/Algiers | 78 +-- library/tzdata/Africa/Asmara | 16 +- library/tzdata/Africa/Asmera | 10 +- library/tzdata/Africa/Bamako | 16 +- library/tzdata/Africa/Bangui | 12 +- library/tzdata/Africa/Banjul | 16 +- library/tzdata/Africa/Bissau | 14 +- library/tzdata/Africa/Blantyre | 12 +- library/tzdata/Africa/Brazzaville | 12 +- library/tzdata/Africa/Bujumbura | 12 +- library/tzdata/Africa/Cairo | 608 +++++++++---------- library/tzdata/Africa/Casablanca | 56 +- library/tzdata/Africa/Ceuta | 516 ++++++++-------- library/tzdata/Africa/Conakry | 16 +- library/tzdata/Africa/Dakar | 14 +- library/tzdata/Africa/Dar_es_Salaam | 16 +- library/tzdata/Africa/Djibouti | 12 +- library/tzdata/Africa/Douala | 12 +- library/tzdata/Africa/El_Aaiun | 14 +- library/tzdata/Africa/Freetown | 72 +-- library/tzdata/Africa/Gaborone | 16 +- library/tzdata/Africa/Harare | 12 +- library/tzdata/Africa/Johannesburg | 22 +- library/tzdata/Africa/Kampala | 18 +- library/tzdata/Africa/Khartoum | 78 +-- library/tzdata/Africa/Kigali | 12 +- library/tzdata/Africa/Kinshasa | 12 +- library/tzdata/Africa/Lagos | 12 +- library/tzdata/Africa/Libreville | 12 +- library/tzdata/Africa/Lome | 12 +- library/tzdata/Africa/Luanda | 14 +- library/tzdata/Africa/Lubumbashi | 12 +- library/tzdata/Africa/Lusaka | 12 +- library/tzdata/Africa/Malabo | 14 +- library/tzdata/Africa/Maputo | 12 +- library/tzdata/Africa/Maseru | 16 +- library/tzdata/Africa/Mbabane | 12 +- library/tzdata/Africa/Mogadishu | 16 +- library/tzdata/Africa/Monrovia | 16 +- library/tzdata/Africa/Nairobi | 18 +- library/tzdata/Africa/Ndjamena | 16 +- library/tzdata/Africa/Niamey | 16 +- library/tzdata/Africa/Nouakchott | 16 +- library/tzdata/Africa/Ouagadougou | 12 +- library/tzdata/Africa/Porto-Novo | 14 +- library/tzdata/Africa/Sao_Tome | 14 +- library/tzdata/Africa/Timbuktu | 10 +- library/tzdata/Africa/Tripoli | 62 +- library/tzdata/Africa/Tunis | 438 +++++++------- library/tzdata/Africa/Windhoek | 444 +++++++------- library/tzdata/America/Adak | 552 +++++++++--------- library/tzdata/America/Anchorage | 552 +++++++++--------- library/tzdata/America/Anguilla | 12 +- library/tzdata/America/Antigua | 14 +- library/tzdata/America/Araguaina | 114 ++-- library/tzdata/America/Argentina/Buenos_Aires | 496 ++++++++-------- library/tzdata/America/Argentina/Catamarca | 136 ++--- library/tzdata/America/Argentina/ComodRivadavia | 10 +- library/tzdata/America/Argentina/Cordoba | 496 ++++++++-------- library/tzdata/America/Argentina/Jujuy | 134 ++--- library/tzdata/America/Argentina/La_Rioja | 138 ++--- library/tzdata/America/Argentina/Mendoza | 136 ++--- library/tzdata/America/Argentina/Rio_Gallegos | 136 ++--- library/tzdata/America/Argentina/Salta | 132 ++--- library/tzdata/America/Argentina/San_Juan | 138 ++--- library/tzdata/America/Argentina/San_Luis | 494 ++++++++-------- library/tzdata/America/Argentina/Tucuman | 500 ++++++++-------- library/tzdata/America/Argentina/Ushuaia | 136 ++--- library/tzdata/America/Aruba | 14 +- library/tzdata/America/Asuncion | 518 ++++++++--------- library/tzdata/America/Atikokan | 24 +- library/tzdata/America/Atka | 10 +- library/tzdata/America/Bahia | 130 ++--- library/tzdata/America/Barbados | 30 +- library/tzdata/America/Belem | 70 +-- library/tzdata/America/Belize | 120 ++-- library/tzdata/America/Blanc-Sablon | 24 +- library/tzdata/America/Boa_Vista | 80 +-- library/tzdata/America/Bogota | 18 +- library/tzdata/America/Boise | 562 +++++++++--------- library/tzdata/America/Buenos_Aires | 10 +- library/tzdata/America/Cambridge_Bay | 504 ++++++++-------- library/tzdata/America/Campo_Grande | 514 ++++++++-------- library/tzdata/America/Cancun | 432 +++++++------- library/tzdata/America/Caracas | 18 +- library/tzdata/America/Catamarca | 10 +- library/tzdata/America/Cayenne | 14 +- library/tzdata/America/Cayman | 14 +- library/tzdata/America/Chicago | 738 +++++++++++------------ library/tzdata/America/Chihuahua | 442 +++++++------- library/tzdata/America/Coral_Harbour | 10 +- library/tzdata/America/Cordoba | 10 +- library/tzdata/America/Costa_Rica | 30 +- library/tzdata/America/Cuiaba | 514 ++++++++-------- library/tzdata/America/Curacao | 14 +- library/tzdata/America/Danmarkshavn | 78 +-- library/tzdata/America/Dawson | 512 ++++++++-------- library/tzdata/America/Dawson_Creek | 128 ++-- library/tzdata/America/Denver | 582 +++++++++--------- library/tzdata/America/Detroit | 544 ++++++++--------- library/tzdata/America/Dominica | 12 +- library/tzdata/America/Edmonton | 568 +++++++++--------- library/tzdata/America/Eirunepe | 80 +-- library/tzdata/America/El_Salvador | 20 +- library/tzdata/America/Ensenada | 10 +- library/tzdata/America/Fort_Wayne | 10 +- library/tzdata/America/Fortaleza | 96 +-- library/tzdata/America/Glace_Bay | 546 ++++++++--------- library/tzdata/America/Godthab | 492 ++++++++-------- library/tzdata/America/Goose_Bay | 674 ++++++++++----------- library/tzdata/America/Grand_Turk | 498 ++++++++-------- library/tzdata/America/Grenada | 12 +- library/tzdata/America/Guadeloupe | 12 +- library/tzdata/America/Guatemala | 28 +- library/tzdata/America/Guayaquil | 14 +- library/tzdata/America/Guyana | 18 +- library/tzdata/America/Halifax | 722 +++++++++++------------ library/tzdata/America/Havana | 570 +++++++++--------- library/tzdata/America/Hermosillo | 42 +- library/tzdata/America/Indiana/Indianapolis | 468 +++++++-------- library/tzdata/America/Indiana/Knox | 570 +++++++++--------- library/tzdata/America/Indiana/Marengo | 472 +++++++-------- library/tzdata/America/Indiana/Petersburg | 494 ++++++++-------- library/tzdata/America/Indiana/Tell_City | 468 +++++++-------- library/tzdata/America/Indiana/Vevay | 426 +++++++------- library/tzdata/America/Indiana/Vincennes | 468 +++++++-------- library/tzdata/America/Indiana/Winamac | 480 +++++++-------- library/tzdata/America/Indianapolis | 10 +- library/tzdata/America/Inuvik | 498 ++++++++-------- library/tzdata/America/Iqaluit | 500 ++++++++-------- library/tzdata/America/Jamaica | 56 +- library/tzdata/America/Jujuy | 10 +- library/tzdata/America/Juneau | 550 +++++++++--------- library/tzdata/America/Kentucky/Louisville | 628 ++++++++++---------- library/tzdata/America/Kentucky/Monticello | 558 +++++++++--------- library/tzdata/America/Knox_IN | 10 +- library/tzdata/America/La_Paz | 16 +- library/tzdata/America/Lima | 32 +- library/tzdata/America/Los_Angeles | 634 ++++++++++---------- library/tzdata/America/Louisville | 10 +- library/tzdata/America/Maceio | 104 ++-- library/tzdata/America/Managua | 42 +- library/tzdata/America/Manaus | 78 +-- library/tzdata/America/Marigot | 10 +- library/tzdata/America/Martinique | 18 +- library/tzdata/America/Mazatlan | 444 +++++++------- library/tzdata/America/Mendoza | 10 +- library/tzdata/America/Menominee | 548 ++++++++--------- library/tzdata/America/Merida | 432 +++++++------- library/tzdata/America/Mexico_City | 456 +++++++-------- library/tzdata/America/Miquelon | 468 +++++++-------- library/tzdata/America/Moncton | 684 +++++++++++----------- library/tzdata/America/Monterrey | 436 +++++++------- library/tzdata/America/Montevideo | 522 ++++++++--------- library/tzdata/America/Montreal | 732 +++++++++++------------ library/tzdata/America/Montserrat | 12 +- library/tzdata/America/Nassau | 558 +++++++++--------- library/tzdata/America/New_York | 738 +++++++++++------------ library/tzdata/America/Nipigon | 528 ++++++++--------- library/tzdata/America/Nome | 552 +++++++++--------- library/tzdata/America/Noronha | 96 +-- library/tzdata/America/North_Dakota/Center | 558 +++++++++--------- library/tzdata/America/North_Dakota/New_Salem | 558 +++++++++--------- library/tzdata/America/Panama | 14 +- library/tzdata/America/Pangnirtung | 504 ++++++++-------- library/tzdata/America/Paramaribo | 20 +- library/tzdata/America/Phoenix | 34 +- library/tzdata/America/Port-au-Prince | 82 +-- library/tzdata/America/Port_of_Spain | 12 +- library/tzdata/America/Porto_Acre | 10 +- library/tzdata/America/Porto_Velho | 70 +-- library/tzdata/America/Puerto_Rico | 20 +- library/tzdata/America/Rainy_River | 528 ++++++++--------- library/tzdata/America/Rankin_Inlet | 496 ++++++++-------- library/tzdata/America/Recife | 96 +-- library/tzdata/America/Regina | 116 ++-- library/tzdata/America/Resolute | 498 ++++++++-------- library/tzdata/America/Rio_Branco | 72 +-- library/tzdata/America/Rosario | 10 +- library/tzdata/America/Santarem | 72 +-- library/tzdata/America/Santiago | 582 +++++++++--------- library/tzdata/America/Santo_Domingo | 42 +- library/tzdata/America/Sao_Paulo | 516 ++++++++-------- library/tzdata/America/Scoresbysund | 492 ++++++++-------- library/tzdata/America/Shiprock | 10 +- library/tzdata/America/St_Barthelemy | 10 +- library/tzdata/America/St_Johns | 742 +++++++++++------------ library/tzdata/America/St_Kitts | 12 +- library/tzdata/America/St_Lucia | 14 +- library/tzdata/America/St_Thomas | 12 +- library/tzdata/America/St_Vincent | 14 +- library/tzdata/America/Swift_Current | 58 +- library/tzdata/America/Tegucigalpa | 24 +- library/tzdata/America/Thule | 448 +++++++------- library/tzdata/America/Thunder_Bay | 544 ++++++++--------- library/tzdata/America/Tijuana | 568 +++++++++--------- library/tzdata/America/Toronto | 730 +++++++++++------------ library/tzdata/America/Tortola | 12 +- library/tzdata/America/Vancouver | 640 ++++++++++---------- library/tzdata/America/Virgin | 10 +- library/tzdata/America/Whitehorse | 512 ++++++++-------- library/tzdata/America/Winnipeg | 632 ++++++++++---------- library/tzdata/America/Yakutat | 552 +++++++++--------- library/tzdata/America/Yellowknife | 504 ++++++++-------- library/tzdata/Antarctica/Casey | 12 +- library/tzdata/Antarctica/Davis | 16 +- library/tzdata/Antarctica/DumontDUrville | 16 +- library/tzdata/Antarctica/Mawson | 12 +- library/tzdata/Antarctica/McMurdo | 514 ++++++++-------- library/tzdata/Antarctica/Palmer | 508 ++++++++-------- library/tzdata/Antarctica/Rothera | 12 +- library/tzdata/Antarctica/South_Pole | 10 +- library/tzdata/Antarctica/Syowa | 12 +- library/tzdata/Antarctica/Vostok | 12 +- library/tzdata/Arctic/Longyearbyen | 10 +- library/tzdata/Asia/Aden | 12 +- library/tzdata/Asia/Almaty | 112 ++-- library/tzdata/Asia/Amman | 496 ++++++++-------- library/tzdata/Asia/Anadyr | 496 ++++++++-------- library/tzdata/Asia/Aqtau | 116 ++-- library/tzdata/Asia/Aqtobe | 114 ++-- library/tzdata/Asia/Ashgabat | 62 +- library/tzdata/Asia/Ashkhabad | 10 +- library/tzdata/Asia/Baghdad | 118 ++-- library/tzdata/Asia/Bahrain | 14 +- library/tzdata/Asia/Baku | 484 +++++++-------- library/tzdata/Asia/Bangkok | 14 +- library/tzdata/Asia/Beirut | 540 ++++++++--------- library/tzdata/Asia/Bishkek | 114 ++-- library/tzdata/Asia/Brunei | 14 +- library/tzdata/Asia/Calcutta | 10 +- library/tzdata/Asia/Choibalsan | 102 ++-- library/tzdata/Asia/Chongqing | 38 +- library/tzdata/Asia/Chungking | 10 +- library/tzdata/Asia/Colombo | 26 +- library/tzdata/Asia/Dacca | 10 +- library/tzdata/Asia/Damascus | 560 +++++++++--------- library/tzdata/Asia/Dhaka | 22 +- library/tzdata/Asia/Dili | 20 +- library/tzdata/Asia/Dubai | 12 +- library/tzdata/Asia/Dushanbe | 58 +- library/tzdata/Asia/Gaza | 550 +++++++++--------- library/tzdata/Asia/Harbin | 44 +- library/tzdata/Asia/Ho_Chi_Minh | 18 +- library/tzdata/Asia/Hong_Kong | 148 ++--- library/tzdata/Asia/Hovd | 102 ++-- library/tzdata/Asia/Irkutsk | 496 ++++++++-------- library/tzdata/Asia/Istanbul | 10 +- library/tzdata/Asia/Jakarta | 26 +- library/tzdata/Asia/Jayapura | 16 +- library/tzdata/Asia/Jerusalem | 296 +++++----- library/tzdata/Asia/Kabul | 14 +- library/tzdata/Asia/Kamchatka | 494 ++++++++-------- library/tzdata/Asia/Karachi | 28 +- library/tzdata/Asia/Kashgar | 40 +- library/tzdata/Asia/Kathmandu | 14 +- library/tzdata/Asia/Katmandu | 10 +- library/tzdata/Asia/Kolkata | 20 +- library/tzdata/Asia/Krasnoyarsk | 494 ++++++++-------- library/tzdata/Asia/Kuala_Lumpur | 26 +- library/tzdata/Asia/Kuching | 48 +- library/tzdata/Asia/Kuwait | 12 +- library/tzdata/Asia/Macao | 10 +- library/tzdata/Asia/Macau | 92 +-- library/tzdata/Asia/Magadan | 494 ++++++++-------- library/tzdata/Asia/Makassar | 18 +- library/tzdata/Asia/Manila | 30 +- library/tzdata/Asia/Muscat | 12 +- library/tzdata/Asia/Nicosia | 514 ++++++++-------- library/tzdata/Asia/Novosibirsk | 496 ++++++++-------- library/tzdata/Asia/Omsk | 494 ++++++++-------- library/tzdata/Asia/Oral | 116 ++-- library/tzdata/Asia/Phnom_Penh | 18 +- library/tzdata/Asia/Pontianak | 26 +- library/tzdata/Asia/Pyongyang | 22 +- library/tzdata/Asia/Qatar | 14 +- library/tzdata/Asia/Qyzylorda | 116 ++-- library/tzdata/Asia/Rangoon | 18 +- library/tzdata/Asia/Riyadh | 12 +- library/tzdata/Asia/Saigon | 10 +- library/tzdata/Asia/Sakhalin | 498 ++++++++-------- library/tzdata/Asia/Samarkand | 64 +- library/tzdata/Asia/Seoul | 36 +- library/tzdata/Asia/Shanghai | 46 +- library/tzdata/Asia/Singapore | 28 +- library/tzdata/Asia/Taipei | 92 +-- library/tzdata/Asia/Tashkent | 64 +- library/tzdata/Asia/Tbilisi | 120 ++-- library/tzdata/Asia/Tehran | 210 +++---- library/tzdata/Asia/Tel_Aviv | 10 +- library/tzdata/Asia/Thimbu | 10 +- library/tzdata/Asia/Thimphu | 14 +- library/tzdata/Asia/Tokyo | 32 +- library/tzdata/Asia/Ujung_Pandang | 10 +- library/tzdata/Asia/Ulaanbaatar | 102 ++-- library/tzdata/Asia/Ulan_Bator | 10 +- library/tzdata/Asia/Urumqi | 38 +- library/tzdata/Asia/Vientiane | 18 +- library/tzdata/Asia/Vladivostok | 494 ++++++++-------- library/tzdata/Asia/Yakutsk | 494 ++++++++-------- library/tzdata/Asia/Yekaterinburg | 494 ++++++++-------- library/tzdata/Asia/Yerevan | 490 ++++++++-------- library/tzdata/Atlantic/Azores | 698 +++++++++++----------- library/tzdata/Atlantic/Bermuda | 518 ++++++++--------- library/tzdata/Atlantic/Canary | 496 ++++++++-------- library/tzdata/Atlantic/Cape_Verde | 18 +- library/tzdata/Atlantic/Faeroe | 10 +- library/tzdata/Atlantic/Faroe | 490 ++++++++-------- library/tzdata/Atlantic/Jan_Mayen | 10 +- library/tzdata/Atlantic/Madeira | 700 +++++++++++----------- library/tzdata/Atlantic/Reykjavik | 140 ++--- library/tzdata/Atlantic/South_Georgia | 12 +- library/tzdata/Atlantic/St_Helena | 14 +- library/tzdata/Atlantic/Stanley | 506 ++++++++-------- library/tzdata/Australia/ACT | 10 +- library/tzdata/Australia/Adelaide | 546 ++++++++--------- library/tzdata/Australia/Brisbane | 46 +- library/tzdata/Australia/Broken_Hill | 550 +++++++++--------- library/tzdata/Australia/Canberra | 10 +- library/tzdata/Australia/Currie | 546 ++++++++--------- library/tzdata/Australia/Darwin | 30 +- library/tzdata/Australia/Eucla | 50 +- library/tzdata/Australia/Hobart | 562 +++++++++--------- library/tzdata/Australia/LHI | 10 +- library/tzdata/Australia/Lindeman | 56 +- library/tzdata/Australia/Lord_Howe | 488 ++++++++-------- library/tzdata/Australia/Melbourne | 544 ++++++++--------- library/tzdata/Australia/NSW | 10 +- library/tzdata/Australia/North | 10 +- library/tzdata/Australia/Perth | 50 +- library/tzdata/Australia/Queensland | 10 +- library/tzdata/Australia/South | 10 +- library/tzdata/Australia/Sydney | 544 ++++++++--------- library/tzdata/Australia/Tasmania | 10 +- library/tzdata/Australia/Victoria | 10 +- library/tzdata/Australia/West | 10 +- library/tzdata/Australia/Yancowinna | 10 +- library/tzdata/Brazil/Acre | 10 +- library/tzdata/Brazil/DeNoronha | 10 +- library/tzdata/Brazil/East | 10 +- library/tzdata/Brazil/West | 10 +- library/tzdata/CET | 530 ++++++++--------- library/tzdata/CST6CDT | 556 +++++++++--------- library/tzdata/Canada/Atlantic | 10 +- library/tzdata/Canada/Central | 10 +- library/tzdata/Canada/East-Saskatchewan | 10 +- library/tzdata/Canada/Eastern | 10 +- library/tzdata/Canada/Mountain | 10 +- library/tzdata/Canada/Newfoundland | 10 +- library/tzdata/Canada/Pacific | 10 +- library/tzdata/Canada/Saskatchewan | 10 +- library/tzdata/Canada/Yukon | 10 +- library/tzdata/Chile/Continental | 10 +- library/tzdata/Chile/EasterIsland | 10 +- library/tzdata/Cuba | 10 +- library/tzdata/EET | 502 ++++++++-------- library/tzdata/EST | 10 +- library/tzdata/EST5EDT | 556 +++++++++--------- library/tzdata/Egypt | 10 +- library/tzdata/Eire | 10 +- library/tzdata/Etc/GMT | 10 +- library/tzdata/Etc/GMT+0 | 10 +- library/tzdata/Etc/GMT+1 | 10 +- library/tzdata/Etc/GMT+10 | 10 +- library/tzdata/Etc/GMT+11 | 10 +- library/tzdata/Etc/GMT+12 | 10 +- library/tzdata/Etc/GMT+2 | 10 +- library/tzdata/Etc/GMT+3 | 10 +- library/tzdata/Etc/GMT+4 | 10 +- library/tzdata/Etc/GMT+5 | 10 +- library/tzdata/Etc/GMT+6 | 10 +- library/tzdata/Etc/GMT+7 | 10 +- library/tzdata/Etc/GMT+8 | 10 +- library/tzdata/Etc/GMT+9 | 10 +- library/tzdata/Etc/GMT-0 | 10 +- library/tzdata/Etc/GMT-1 | 10 +- library/tzdata/Etc/GMT-10 | 10 +- library/tzdata/Etc/GMT-11 | 10 +- library/tzdata/Etc/GMT-12 | 10 +- library/tzdata/Etc/GMT-13 | 10 +- library/tzdata/Etc/GMT-14 | 10 +- library/tzdata/Etc/GMT-2 | 10 +- library/tzdata/Etc/GMT-3 | 10 +- library/tzdata/Etc/GMT-4 | 10 +- library/tzdata/Etc/GMT-5 | 10 +- library/tzdata/Etc/GMT-6 | 10 +- library/tzdata/Etc/GMT-7 | 10 +- library/tzdata/Etc/GMT-8 | 10 +- library/tzdata/Etc/GMT-9 | 10 +- library/tzdata/Etc/GMT0 | 10 +- library/tzdata/Etc/Greenwich | 10 +- library/tzdata/Etc/UCT | 10 +- library/tzdata/Etc/UTC | 10 +- library/tzdata/Etc/Universal | 10 +- library/tzdata/Etc/Zulu | 10 +- library/tzdata/Europe/Amsterdam | 620 ++++++++++---------- library/tzdata/Europe/Andorra | 474 +++++++-------- library/tzdata/Europe/Athens | 536 ++++++++--------- library/tzdata/Europe/Belfast | 10 +- library/tzdata/Europe/Belgrade | 500 ++++++++-------- library/tzdata/Europe/Berlin | 548 ++++++++--------- library/tzdata/Europe/Bratislava | 10 +- library/tzdata/Europe/Brussels | 632 ++++++++++---------- library/tzdata/Europe/Bucharest | 536 ++++++++--------- library/tzdata/Europe/Budapest | 568 +++++++++--------- library/tzdata/Europe/Chisinau | 544 ++++++++--------- library/tzdata/Europe/Copenhagen | 528 ++++++++--------- library/tzdata/Europe/Dublin | 718 +++++++++++------------ library/tzdata/Europe/Gibraltar | 656 ++++++++++----------- library/tzdata/Europe/Guernsey | 10 +- library/tzdata/Europe/Helsinki | 496 ++++++++-------- library/tzdata/Europe/Isle_of_Man | 10 +- library/tzdata/Europe/Istanbul | 606 +++++++++---------- library/tzdata/Europe/Jersey | 10 +- library/tzdata/Europe/Kaliningrad | 522 ++++++++--------- library/tzdata/Europe/Kiev | 502 ++++++++-------- library/tzdata/Europe/Lisbon | 702 +++++++++++----------- library/tzdata/Europe/Ljubljana | 10 +- library/tzdata/Europe/London | 744 ++++++++++++------------ library/tzdata/Europe/Luxembourg | 626 ++++++++++---------- library/tzdata/Europe/Madrid | 588 +++++++++---------- library/tzdata/Europe/Malta | 598 +++++++++---------- library/tzdata/Europe/Mariehamn | 10 +- library/tzdata/Europe/Minsk | 502 ++++++++-------- library/tzdata/Europe/Monaco | 630 ++++++++++---------- library/tzdata/Europe/Moscow | 520 ++++++++--------- library/tzdata/Europe/Nicosia | 10 +- library/tzdata/Europe/Oslo | 542 ++++++++--------- library/tzdata/Europe/Paris | 628 ++++++++++---------- library/tzdata/Europe/Podgorica | 10 +- library/tzdata/Europe/Prague | 544 ++++++++--------- library/tzdata/Europe/Riga | 516 ++++++++-------- library/tzdata/Europe/Rome | 602 +++++++++---------- library/tzdata/Europe/Samara | 498 ++++++++-------- library/tzdata/Europe/San_Marino | 10 +- library/tzdata/Europe/Sarajevo | 10 +- library/tzdata/Europe/Simferopol | 506 ++++++++-------- library/tzdata/Europe/Skopje | 10 +- library/tzdata/Europe/Sofia | 518 ++++++++--------- library/tzdata/Europe/Stockholm | 500 ++++++++-------- library/tzdata/Europe/Tallinn | 510 ++++++++-------- library/tzdata/Europe/Tirane | 526 ++++++++--------- library/tzdata/Europe/Tiraspol | 10 +- library/tzdata/Europe/Uzhgorod | 508 ++++++++-------- library/tzdata/Europe/Vaduz | 490 ++++++++-------- library/tzdata/Europe/Vatican | 10 +- library/tzdata/Europe/Vienna | 542 ++++++++--------- library/tzdata/Europe/Vilnius | 502 ++++++++-------- library/tzdata/Europe/Volgograd | 494 ++++++++-------- library/tzdata/Europe/Warsaw | 592 +++++++++---------- library/tzdata/Europe/Zagreb | 10 +- library/tzdata/Europe/Zaporozhye | 504 ++++++++-------- library/tzdata/Europe/Zurich | 500 ++++++++-------- library/tzdata/GB | 10 +- library/tzdata/GB-Eire | 10 +- library/tzdata/GMT | 10 +- library/tzdata/GMT+0 | 10 +- library/tzdata/GMT-0 | 10 +- library/tzdata/GMT0 | 10 +- library/tzdata/Greenwich | 10 +- library/tzdata/HST | 10 +- library/tzdata/Hongkong | 10 +- library/tzdata/Iceland | 10 +- library/tzdata/Indian/Antananarivo | 16 +- library/tzdata/Indian/Chagos | 14 +- library/tzdata/Indian/Christmas | 12 +- library/tzdata/Indian/Cocos | 12 +- library/tzdata/Indian/Comoro | 12 +- library/tzdata/Indian/Kerguelen | 12 +- library/tzdata/Indian/Mahe | 12 +- library/tzdata/Indian/Maldives | 14 +- library/tzdata/Indian/Mauritius | 382 ++++++------ library/tzdata/Indian/Mayotte | 12 +- library/tzdata/Indian/Reunion | 12 +- library/tzdata/Iran | 10 +- library/tzdata/Israel | 10 +- library/tzdata/Jamaica | 10 +- library/tzdata/Japan | 10 +- library/tzdata/Kwajalein | 10 +- library/tzdata/Libya | 10 +- library/tzdata/MET | 530 ++++++++--------- library/tzdata/MST | 10 +- library/tzdata/MST7MDT | 556 +++++++++--------- library/tzdata/Mexico/BajaNorte | 10 +- library/tzdata/Mexico/BajaSur | 10 +- library/tzdata/Mexico/General | 10 +- library/tzdata/NZ | 10 +- library/tzdata/NZ-CHAT | 10 +- library/tzdata/Navajo | 10 +- library/tzdata/PRC | 10 +- library/tzdata/PST8PDT | 556 +++++++++--------- library/tzdata/Pacific/Apia | 16 +- library/tzdata/Pacific/Auckland | 570 +++++++++--------- library/tzdata/Pacific/Chatham | 514 ++++++++-------- library/tzdata/Pacific/Easter | 550 +++++++++--------- library/tzdata/Pacific/Efate | 52 +- library/tzdata/Pacific/Enderbury | 16 +- library/tzdata/Pacific/Fakaofo | 12 +- library/tzdata/Pacific/Fiji | 20 +- library/tzdata/Pacific/Funafuti | 12 +- library/tzdata/Pacific/Galapagos | 14 +- library/tzdata/Pacific/Gambier | 12 +- library/tzdata/Pacific/Guadalcanal | 12 +- library/tzdata/Pacific/Guam | 16 +- library/tzdata/Pacific/Honolulu | 24 +- library/tzdata/Pacific/Johnston | 10 +- library/tzdata/Pacific/Kiritimati | 16 +- library/tzdata/Pacific/Kosrae | 16 +- library/tzdata/Pacific/Kwajalein | 16 +- library/tzdata/Pacific/Majuro | 14 +- library/tzdata/Pacific/Marquesas | 12 +- library/tzdata/Pacific/Midway | 20 +- library/tzdata/Pacific/Nauru | 18 +- library/tzdata/Pacific/Niue | 16 +- library/tzdata/Pacific/Norfolk | 14 +- library/tzdata/Pacific/Noumea | 24 +- library/tzdata/Pacific/Pago_Pago | 20 +- library/tzdata/Pacific/Palau | 12 +- library/tzdata/Pacific/Pitcairn | 14 +- library/tzdata/Pacific/Ponape | 12 +- library/tzdata/Pacific/Port_Moresby | 14 +- library/tzdata/Pacific/Rarotonga | 64 +- library/tzdata/Pacific/Saipan | 18 +- library/tzdata/Pacific/Samoa | 10 +- library/tzdata/Pacific/Tahiti | 12 +- library/tzdata/Pacific/Tarawa | 12 +- library/tzdata/Pacific/Tongatapu | 28 +- library/tzdata/Pacific/Truk | 12 +- library/tzdata/Pacific/Wake | 12 +- library/tzdata/Pacific/Wallis | 12 +- library/tzdata/Pacific/Yap | 10 +- library/tzdata/Poland | 10 +- library/tzdata/Portugal | 10 +- library/tzdata/ROC | 10 +- library/tzdata/ROK | 10 +- library/tzdata/Singapore | 10 +- library/tzdata/Turkey | 10 +- library/tzdata/UCT | 10 +- library/tzdata/US/Alaska | 10 +- library/tzdata/US/Aleutian | 10 +- library/tzdata/US/Arizona | 10 +- library/tzdata/US/Central | 10 +- library/tzdata/US/East-Indiana | 10 +- library/tzdata/US/Eastern | 10 +- library/tzdata/US/Hawaii | 10 +- library/tzdata/US/Indiana-Starke | 10 +- library/tzdata/US/Michigan | 10 +- library/tzdata/US/Mountain | 10 +- library/tzdata/US/Pacific | 10 +- library/tzdata/US/Pacific-New | 10 +- library/tzdata/US/Samoa | 10 +- library/tzdata/UTC | 10 +- library/tzdata/Universal | 10 +- library/tzdata/W-SU | 10 +- library/tzdata/WET | 502 ++++++++-------- library/tzdata/Zulu | 10 +- tools/tclZIC.tcl | 4 +- 561 files changed, 49075 insertions(+), 49072 deletions(-) diff --git a/ChangeLog b/ChangeLog index 70812e8..a80f875 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 2008-04-09 Kevin B. Kenny + * tools/tclZIC.tcl: Always emit Unix-style line terminators. * library/tzdata: Olson's tzdata2009e. 2009-04-09 Don Porter diff --git a/library/tzdata/Africa/Abidjan b/library/tzdata/Africa/Abidjan index 151437a..4b4f5b2 100644 --- a/library/tzdata/Africa/Abidjan +++ b/library/tzdata/Africa/Abidjan @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Abidjan) { - {-9223372036854775808 -968 0 LMT} - {-1830383032 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Abidjan) { + {-9223372036854775808 -968 0 LMT} + {-1830383032 0 0 GMT} +} diff --git a/library/tzdata/Africa/Accra b/library/tzdata/Africa/Accra index d9ac8ba..faf58fb 100644 --- a/library/tzdata/Africa/Accra +++ b/library/tzdata/Africa/Accra @@ -1,20 +1,20 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Accra) { - {-9223372036854775808 -52 0 LMT} - {-1640995148 0 0 GMT} - {-1051920000 1200 1 GHST} - {-1041466800 0 0 GMT} - {-1020384000 1200 1 GHST} - {-1009930800 0 0 GMT} - {-988848000 1200 1 GHST} - {-978394800 0 0 GMT} - {-957312000 1200 1 GHST} - {-946858800 0 0 GMT} - {-925689600 1200 1 GHST} - {-915236400 0 0 GMT} - {-894153600 1200 1 GHST} - {-883700400 0 0 GMT} - {-862617600 1200 1 GHST} - {-852164400 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Accra) { + {-9223372036854775808 -52 0 LMT} + {-1640995148 0 0 GMT} + {-1051920000 1200 1 GHST} + {-1041466800 0 0 GMT} + {-1020384000 1200 1 GHST} + {-1009930800 0 0 GMT} + {-988848000 1200 1 GHST} + {-978394800 0 0 GMT} + {-957312000 1200 1 GHST} + {-946858800 0 0 GMT} + {-925689600 1200 1 GHST} + {-915236400 0 0 GMT} + {-894153600 1200 1 GHST} + {-883700400 0 0 GMT} + {-862617600 1200 1 GHST} + {-852164400 0 0 GMT} +} diff --git a/library/tzdata/Africa/Addis_Ababa b/library/tzdata/Africa/Addis_Ababa index 1852794..4b92483 100644 --- a/library/tzdata/Africa/Addis_Ababa +++ b/library/tzdata/Africa/Addis_Ababa @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Addis_Ababa) { - {-9223372036854775808 9288 0 LMT} - {-3155682888 9320 0 ADMT} - {-1062210920 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Addis_Ababa) { + {-9223372036854775808 9288 0 LMT} + {-3155682888 9320 0 ADMT} + {-1062210920 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Algiers b/library/tzdata/Africa/Algiers index 061d82f..fe4de22 100644 --- a/library/tzdata/Africa/Algiers +++ b/library/tzdata/Africa/Algiers @@ -1,39 +1,39 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Algiers) { - {-9223372036854775808 732 0 LMT} - {-2486679072 561 0 PMT} - {-1855958961 0 0 WET} - {-1689814800 3600 1 WEST} - {-1680397200 0 0 WET} - {-1665363600 3600 1 WEST} - {-1648342800 0 0 WET} - {-1635123600 3600 1 WEST} - {-1616893200 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585443600 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552266000 0 0 WET} - {-1539997200 3600 1 WEST} - {-1531443600 0 0 WET} - {-956365200 3600 1 WEST} - {-950486400 0 0 WET} - {-942012000 3600 0 CET} - {-812502000 7200 1 CEST} - {-796262400 3600 0 CET} - {-781052400 7200 1 CEST} - {-766630800 3600 0 CET} - {-733280400 0 0 WET} - {-439430400 3600 0 CET} - {-212029200 0 0 WET} - {41468400 3600 1 WEST} - {54774000 0 0 WET} - {231724800 3600 1 WEST} - {246240000 3600 0 CET} - {259545600 7200 1 CEST} - {275274000 3600 0 CET} - {309740400 0 0 WET} - {325468800 3600 1 WEST} - {341802000 0 0 WET} - {357523200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Algiers) { + {-9223372036854775808 732 0 LMT} + {-2486679072 561 0 PMT} + {-1855958961 0 0 WET} + {-1689814800 3600 1 WEST} + {-1680397200 0 0 WET} + {-1665363600 3600 1 WEST} + {-1648342800 0 0 WET} + {-1635123600 3600 1 WEST} + {-1616893200 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585443600 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552266000 0 0 WET} + {-1539997200 3600 1 WEST} + {-1531443600 0 0 WET} + {-956365200 3600 1 WEST} + {-950486400 0 0 WET} + {-942012000 3600 0 CET} + {-812502000 7200 1 CEST} + {-796262400 3600 0 CET} + {-781052400 7200 1 CEST} + {-766630800 3600 0 CET} + {-733280400 0 0 WET} + {-439430400 3600 0 CET} + {-212029200 0 0 WET} + {41468400 3600 1 WEST} + {54774000 0 0 WET} + {231724800 3600 1 WEST} + {246240000 3600 0 CET} + {259545600 7200 1 CEST} + {275274000 3600 0 CET} + {309740400 0 0 WET} + {325468800 3600 1 WEST} + {341802000 0 0 WET} + {357523200 3600 0 CET} +} diff --git a/library/tzdata/Africa/Asmara b/library/tzdata/Africa/Asmara index ec623e8..1f0f13e 100755 --- a/library/tzdata/Africa/Asmara +++ b/library/tzdata/Africa/Asmara @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Asmara) { - {-9223372036854775808 9332 0 LMT} - {-3155682932 9332 0 AMT} - {-2524530932 9320 0 ADMT} - {-1062210920 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Asmara) { + {-9223372036854775808 9332 0 LMT} + {-3155682932 9332 0 AMT} + {-2524530932 9320 0 ADMT} + {-1062210920 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Asmera b/library/tzdata/Africa/Asmera index 66df9aa..931c36d 100644 --- a/library/tzdata/Africa/Asmera +++ b/library/tzdata/Africa/Asmera @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Africa/Asmara)]} { - LoadTimeZoneFile Africa/Asmara -} -set TZData(:Africa/Asmera) $TZData(:Africa/Asmara) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Africa/Asmara)]} { + LoadTimeZoneFile Africa/Asmara +} +set TZData(:Africa/Asmera) $TZData(:Africa/Asmara) diff --git a/library/tzdata/Africa/Bamako b/library/tzdata/Africa/Bamako index 77dab3f..7ed62e0 100644 --- a/library/tzdata/Africa/Bamako +++ b/library/tzdata/Africa/Bamako @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Bamako) { - {-9223372036854775808 -1920 0 LMT} - {-1830382080 0 0 GMT} - {-1131235200 -3600 0 WAT} - {-300841200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Bamako) { + {-9223372036854775808 -1920 0 LMT} + {-1830382080 0 0 GMT} + {-1131235200 -3600 0 WAT} + {-300841200 0 0 GMT} +} diff --git a/library/tzdata/Africa/Bangui b/library/tzdata/Africa/Bangui index 1bf5b6d..94f5058 100644 --- a/library/tzdata/Africa/Bangui +++ b/library/tzdata/Africa/Bangui @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Bangui) { - {-9223372036854775808 4460 0 LMT} - {-1830388460 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Bangui) { + {-9223372036854775808 4460 0 LMT} + {-1830388460 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Banjul b/library/tzdata/Africa/Banjul index d602f14..a7f0168 100644 --- a/library/tzdata/Africa/Banjul +++ b/library/tzdata/Africa/Banjul @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Banjul) { - {-9223372036854775808 -3996 0 LMT} - {-1830380004 -3996 0 BMT} - {-1104533604 -3600 0 WAT} - {-189385200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Banjul) { + {-9223372036854775808 -3996 0 LMT} + {-1830380004 -3996 0 BMT} + {-1104533604 -3600 0 WAT} + {-189385200 0 0 GMT} +} diff --git a/library/tzdata/Africa/Bissau b/library/tzdata/Africa/Bissau index cbd462b..d51cb9f 100644 --- a/library/tzdata/Africa/Bissau +++ b/library/tzdata/Africa/Bissau @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Bissau) { - {-9223372036854775808 -3740 0 LMT} - {-1849388260 -3600 0 WAT} - {157770000 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Bissau) { + {-9223372036854775808 -3740 0 LMT} + {-1849388260 -3600 0 WAT} + {157770000 0 0 GMT} +} diff --git a/library/tzdata/Africa/Blantyre b/library/tzdata/Africa/Blantyre index a8bcd01..17b58f4 100644 --- a/library/tzdata/Africa/Blantyre +++ b/library/tzdata/Africa/Blantyre @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Blantyre) { - {-9223372036854775808 8400 0 LMT} - {-2109291600 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Blantyre) { + {-9223372036854775808 8400 0 LMT} + {-2109291600 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Brazzaville b/library/tzdata/Africa/Brazzaville index 14ad42c..b4e0923 100644 --- a/library/tzdata/Africa/Brazzaville +++ b/library/tzdata/Africa/Brazzaville @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Brazzaville) { - {-9223372036854775808 3668 0 LMT} - {-1830387668 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Brazzaville) { + {-9223372036854775808 3668 0 LMT} + {-1830387668 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Bujumbura b/library/tzdata/Africa/Bujumbura index d9469a7..c26d053 100644 --- a/library/tzdata/Africa/Bujumbura +++ b/library/tzdata/Africa/Bujumbura @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Bujumbura) { - {-9223372036854775808 7048 0 LMT} - {-2524528648 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Bujumbura) { + {-9223372036854775808 7048 0 LMT} + {-2524528648 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Cairo b/library/tzdata/Africa/Cairo index ea42e6a..d812a44 100644 --- a/library/tzdata/Africa/Cairo +++ b/library/tzdata/Africa/Cairo @@ -1,304 +1,304 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Cairo) { - {-9223372036854775808 7500 0 LMT} - {-2185409100 7200 0 EET} - {-929844000 10800 1 EEST} - {-923108400 7200 0 EET} - {-906170400 10800 1 EEST} - {-892868400 7200 0 EET} - {-875844000 10800 1 EEST} - {-857790000 7200 0 EET} - {-844308000 10800 1 EEST} - {-825822000 7200 0 EET} - {-812685600 10800 1 EEST} - {-794199600 7200 0 EET} - {-779853600 10800 1 EEST} - {-762663600 7200 0 EET} - {-399088800 10800 1 EEST} - {-386650800 7200 0 EET} - {-368330400 10800 1 EEST} - {-355114800 7200 0 EET} - {-336790800 10800 1 EEST} - {-323654400 7200 0 EET} - {-305168400 10800 1 EEST} - {-292032000 7200 0 EET} - {-273632400 10800 1 EEST} - {-260496000 7200 0 EET} - {-242096400 10800 1 EEST} - {-228960000 7200 0 EET} - {-210560400 10800 1 EEST} - {-197424000 7200 0 EET} - {-178938000 10800 1 EEST} - {-165801600 7200 0 EET} - {-147402000 10800 1 EEST} - {-134265600 7200 0 EET} - {-115866000 10800 1 EEST} - {-102643200 7200 0 EET} - {-84330000 10800 1 EEST} - {-71107200 7200 0 EET} - {-52707600 10800 1 EEST} - {-39484800 7200 0 EET} - {-21171600 10800 1 EEST} - {-7948800 7200 0 EET} - {10364400 10800 1 EEST} - {23587200 7200 0 EET} - {41900400 10800 1 EEST} - {55123200 7200 0 EET} - {73522800 10800 1 EEST} - {86745600 7200 0 EET} - {105058800 10800 1 EEST} - {118281600 7200 0 EET} - {136594800 10800 1 EEST} - {149817600 7200 0 EET} - {168130800 10800 1 EEST} - {181353600 7200 0 EET} - {199753200 10800 1 EEST} - {212976000 7200 0 EET} - {231289200 10800 1 EEST} - {244512000 7200 0 EET} - {262825200 10800 1 EEST} - {276048000 7200 0 EET} - {294361200 10800 1 EEST} - {307584000 7200 0 EET} - {325983600 10800 1 EEST} - {339206400 7200 0 EET} - {357519600 10800 1 EEST} - {370742400 7200 0 EET} - {396399600 10800 1 EEST} - {402278400 7200 0 EET} - {426812400 10800 1 EEST} - {433814400 7200 0 EET} - {452214000 10800 1 EEST} - {465436800 7200 0 EET} - {483750000 10800 1 EEST} - {496972800 7200 0 EET} - {515286000 10800 1 EEST} - {528508800 7200 0 EET} - {546822000 10800 1 EEST} - {560044800 7200 0 EET} - {578444400 10800 1 EEST} - {591667200 7200 0 EET} - {610412400 10800 1 EEST} - {623203200 7200 0 EET} - {641516400 10800 1 EEST} - {654739200 7200 0 EET} - {673052400 10800 1 EEST} - {686275200 7200 0 EET} - {704674800 10800 1 EEST} - {717897600 7200 0 EET} - {736210800 10800 1 EEST} - {749433600 7200 0 EET} - {767746800 10800 1 EEST} - {780969600 7200 0 EET} - {799020000 10800 1 EEST} - {812322000 7200 0 EET} - {830469600 10800 1 EEST} - {843771600 7200 0 EET} - {861919200 10800 1 EEST} - {875221200 7200 0 EET} - {893368800 10800 1 EEST} - {906670800 7200 0 EET} - {925423200 10800 1 EEST} - {938725200 7200 0 EET} - {956872800 10800 1 EEST} - {970174800 7200 0 EET} - {988322400 10800 1 EEST} - {1001624400 7200 0 EET} - {1019772000 10800 1 EEST} - {1033074000 7200 0 EET} - {1051221600 10800 1 EEST} - {1064523600 7200 0 EET} - {1083276000 10800 1 EEST} - {1096578000 7200 0 EET} - {1114725600 10800 1 EEST} - {1128027600 7200 0 EET} - {1146175200 10800 1 EEST} - {1158872400 7200 0 EET} - {1177624800 10800 1 EEST} - {1189112400 7200 0 EET} - {1209074400 10800 1 EEST} - {1219957200 7200 0 EET} - {1240524000 10800 1 EEST} - {1251406800 7200 0 EET} - {1272578400 10800 1 EEST} - {1282856400 7200 0 EET} - {1304028000 10800 1 EEST} - {1314306000 7200 0 EET} - {1335477600 10800 1 EEST} - {1346360400 7200 0 EET} - {1366927200 10800 1 EEST} - {1377810000 7200 0 EET} - {1398376800 10800 1 EEST} - {1409259600 7200 0 EET} - {1429826400 10800 1 EEST} - {1440709200 7200 0 EET} - {1461880800 10800 1 EEST} - {1472158800 7200 0 EET} - {1493330400 10800 1 EEST} - {1504213200 7200 0 EET} - {1524780000 10800 1 EEST} - {1535662800 7200 0 EET} - {1556229600 10800 1 EEST} - {1567112400 7200 0 EET} - {1587679200 10800 1 EEST} - {1598562000 7200 0 EET} - {1619733600 10800 1 EEST} - {1630011600 7200 0 EET} - {1651183200 10800 1 EEST} - {1661461200 7200 0 EET} - {1682632800 10800 1 EEST} - {1693515600 7200 0 EET} - {1714082400 10800 1 EEST} - {1724965200 7200 0 EET} - {1745532000 10800 1 EEST} - {1756414800 7200 0 EET} - {1776981600 10800 1 EEST} - {1787864400 7200 0 EET} - {1809036000 10800 1 EEST} - {1819314000 7200 0 EET} - {1840485600 10800 1 EEST} - {1851368400 7200 0 EET} - {1871935200 10800 1 EEST} - {1882818000 7200 0 EET} - {1903384800 10800 1 EEST} - {1914267600 7200 0 EET} - {1934834400 10800 1 EEST} - {1945717200 7200 0 EET} - {1966888800 10800 1 EEST} - {1977166800 7200 0 EET} - {1998338400 10800 1 EEST} - {2008616400 7200 0 EET} - {2029788000 10800 1 EEST} - {2040670800 7200 0 EET} - {2061237600 10800 1 EEST} - {2072120400 7200 0 EET} - {2092687200 10800 1 EEST} - {2103570000 7200 0 EET} - {2124136800 10800 1 EEST} - {2135019600 7200 0 EET} - {2156191200 10800 1 EEST} - {2166469200 7200 0 EET} - {2187640800 10800 1 EEST} - {2197918800 7200 0 EET} - {2219090400 10800 1 EEST} - {2229973200 7200 0 EET} - {2250540000 10800 1 EEST} - {2261422800 7200 0 EET} - {2281989600 10800 1 EEST} - {2292872400 7200 0 EET} - {2313439200 10800 1 EEST} - {2324322000 7200 0 EET} - {2345493600 10800 1 EEST} - {2355771600 7200 0 EET} - {2376943200 10800 1 EEST} - {2387826000 7200 0 EET} - {2408392800 10800 1 EEST} - {2419275600 7200 0 EET} - {2439842400 10800 1 EEST} - {2450725200 7200 0 EET} - {2471292000 10800 1 EEST} - {2482174800 7200 0 EET} - {2503346400 10800 1 EEST} - {2513624400 7200 0 EET} - {2534796000 10800 1 EEST} - {2545074000 7200 0 EET} - {2566245600 10800 1 EEST} - {2577128400 7200 0 EET} - {2597695200 10800 1 EEST} - {2608578000 7200 0 EET} - {2629144800 10800 1 EEST} - {2640027600 7200 0 EET} - {2660594400 10800 1 EEST} - {2671477200 7200 0 EET} - {2692648800 10800 1 EEST} - {2702926800 7200 0 EET} - {2724098400 10800 1 EEST} - {2734981200 7200 0 EET} - {2755548000 10800 1 EEST} - {2766430800 7200 0 EET} - {2786997600 10800 1 EEST} - {2797880400 7200 0 EET} - {2818447200 10800 1 EEST} - {2829330000 7200 0 EET} - {2850501600 10800 1 EEST} - {2860779600 7200 0 EET} - {2881951200 10800 1 EEST} - {2892229200 7200 0 EET} - {2913400800 10800 1 EEST} - {2924283600 7200 0 EET} - {2944850400 10800 1 EEST} - {2955733200 7200 0 EET} - {2976300000 10800 1 EEST} - {2987182800 7200 0 EET} - {3007749600 10800 1 EEST} - {3018632400 7200 0 EET} - {3039804000 10800 1 EEST} - {3050082000 7200 0 EET} - {3071253600 10800 1 EEST} - {3081531600 7200 0 EET} - {3102703200 10800 1 EEST} - {3113586000 7200 0 EET} - {3134152800 10800 1 EEST} - {3145035600 7200 0 EET} - {3165602400 10800 1 EEST} - {3176485200 7200 0 EET} - {3197052000 10800 1 EEST} - {3207934800 7200 0 EET} - {3229106400 10800 1 EEST} - {3239384400 7200 0 EET} - {3260556000 10800 1 EEST} - {3271438800 7200 0 EET} - {3292005600 10800 1 EEST} - {3302888400 7200 0 EET} - {3323455200 10800 1 EEST} - {3334338000 7200 0 EET} - {3354904800 10800 1 EEST} - {3365787600 7200 0 EET} - {3386959200 10800 1 EEST} - {3397237200 7200 0 EET} - {3418408800 10800 1 EEST} - {3428686800 7200 0 EET} - {3449858400 10800 1 EEST} - {3460741200 7200 0 EET} - {3481308000 10800 1 EEST} - {3492190800 7200 0 EET} - {3512757600 10800 1 EEST} - {3523640400 7200 0 EET} - {3544207200 10800 1 EEST} - {3555090000 7200 0 EET} - {3576261600 10800 1 EEST} - {3586539600 7200 0 EET} - {3607711200 10800 1 EEST} - {3618594000 7200 0 EET} - {3639160800 10800 1 EEST} - {3650043600 7200 0 EET} - {3670610400 10800 1 EEST} - {3681493200 7200 0 EET} - {3702060000 10800 1 EEST} - {3712942800 7200 0 EET} - {3734114400 10800 1 EEST} - {3744392400 7200 0 EET} - {3765564000 10800 1 EEST} - {3775842000 7200 0 EET} - {3797013600 10800 1 EEST} - {3807896400 7200 0 EET} - {3828463200 10800 1 EEST} - {3839346000 7200 0 EET} - {3859912800 10800 1 EEST} - {3870795600 7200 0 EET} - {3891362400 10800 1 EEST} - {3902245200 7200 0 EET} - {3923416800 10800 1 EEST} - {3933694800 7200 0 EET} - {3954866400 10800 1 EEST} - {3965144400 7200 0 EET} - {3986316000 10800 1 EEST} - {3997198800 7200 0 EET} - {4017765600 10800 1 EEST} - {4028648400 7200 0 EET} - {4049215200 10800 1 EEST} - {4060098000 7200 0 EET} - {4080664800 10800 1 EEST} - {4091547600 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Cairo) { + {-9223372036854775808 7500 0 LMT} + {-2185409100 7200 0 EET} + {-929844000 10800 1 EEST} + {-923108400 7200 0 EET} + {-906170400 10800 1 EEST} + {-892868400 7200 0 EET} + {-875844000 10800 1 EEST} + {-857790000 7200 0 EET} + {-844308000 10800 1 EEST} + {-825822000 7200 0 EET} + {-812685600 10800 1 EEST} + {-794199600 7200 0 EET} + {-779853600 10800 1 EEST} + {-762663600 7200 0 EET} + {-399088800 10800 1 EEST} + {-386650800 7200 0 EET} + {-368330400 10800 1 EEST} + {-355114800 7200 0 EET} + {-336790800 10800 1 EEST} + {-323654400 7200 0 EET} + {-305168400 10800 1 EEST} + {-292032000 7200 0 EET} + {-273632400 10800 1 EEST} + {-260496000 7200 0 EET} + {-242096400 10800 1 EEST} + {-228960000 7200 0 EET} + {-210560400 10800 1 EEST} + {-197424000 7200 0 EET} + {-178938000 10800 1 EEST} + {-165801600 7200 0 EET} + {-147402000 10800 1 EEST} + {-134265600 7200 0 EET} + {-115866000 10800 1 EEST} + {-102643200 7200 0 EET} + {-84330000 10800 1 EEST} + {-71107200 7200 0 EET} + {-52707600 10800 1 EEST} + {-39484800 7200 0 EET} + {-21171600 10800 1 EEST} + {-7948800 7200 0 EET} + {10364400 10800 1 EEST} + {23587200 7200 0 EET} + {41900400 10800 1 EEST} + {55123200 7200 0 EET} + {73522800 10800 1 EEST} + {86745600 7200 0 EET} + {105058800 10800 1 EEST} + {118281600 7200 0 EET} + {136594800 10800 1 EEST} + {149817600 7200 0 EET} + {168130800 10800 1 EEST} + {181353600 7200 0 EET} + {199753200 10800 1 EEST} + {212976000 7200 0 EET} + {231289200 10800 1 EEST} + {244512000 7200 0 EET} + {262825200 10800 1 EEST} + {276048000 7200 0 EET} + {294361200 10800 1 EEST} + {307584000 7200 0 EET} + {325983600 10800 1 EEST} + {339206400 7200 0 EET} + {357519600 10800 1 EEST} + {370742400 7200 0 EET} + {396399600 10800 1 EEST} + {402278400 7200 0 EET} + {426812400 10800 1 EEST} + {433814400 7200 0 EET} + {452214000 10800 1 EEST} + {465436800 7200 0 EET} + {483750000 10800 1 EEST} + {496972800 7200 0 EET} + {515286000 10800 1 EEST} + {528508800 7200 0 EET} + {546822000 10800 1 EEST} + {560044800 7200 0 EET} + {578444400 10800 1 EEST} + {591667200 7200 0 EET} + {610412400 10800 1 EEST} + {623203200 7200 0 EET} + {641516400 10800 1 EEST} + {654739200 7200 0 EET} + {673052400 10800 1 EEST} + {686275200 7200 0 EET} + {704674800 10800 1 EEST} + {717897600 7200 0 EET} + {736210800 10800 1 EEST} + {749433600 7200 0 EET} + {767746800 10800 1 EEST} + {780969600 7200 0 EET} + {799020000 10800 1 EEST} + {812322000 7200 0 EET} + {830469600 10800 1 EEST} + {843771600 7200 0 EET} + {861919200 10800 1 EEST} + {875221200 7200 0 EET} + {893368800 10800 1 EEST} + {906670800 7200 0 EET} + {925423200 10800 1 EEST} + {938725200 7200 0 EET} + {956872800 10800 1 EEST} + {970174800 7200 0 EET} + {988322400 10800 1 EEST} + {1001624400 7200 0 EET} + {1019772000 10800 1 EEST} + {1033074000 7200 0 EET} + {1051221600 10800 1 EEST} + {1064523600 7200 0 EET} + {1083276000 10800 1 EEST} + {1096578000 7200 0 EET} + {1114725600 10800 1 EEST} + {1128027600 7200 0 EET} + {1146175200 10800 1 EEST} + {1158872400 7200 0 EET} + {1177624800 10800 1 EEST} + {1189112400 7200 0 EET} + {1209074400 10800 1 EEST} + {1219957200 7200 0 EET} + {1240524000 10800 1 EEST} + {1251406800 7200 0 EET} + {1272578400 10800 1 EEST} + {1282856400 7200 0 EET} + {1304028000 10800 1 EEST} + {1314306000 7200 0 EET} + {1335477600 10800 1 EEST} + {1346360400 7200 0 EET} + {1366927200 10800 1 EEST} + {1377810000 7200 0 EET} + {1398376800 10800 1 EEST} + {1409259600 7200 0 EET} + {1429826400 10800 1 EEST} + {1440709200 7200 0 EET} + {1461880800 10800 1 EEST} + {1472158800 7200 0 EET} + {1493330400 10800 1 EEST} + {1504213200 7200 0 EET} + {1524780000 10800 1 EEST} + {1535662800 7200 0 EET} + {1556229600 10800 1 EEST} + {1567112400 7200 0 EET} + {1587679200 10800 1 EEST} + {1598562000 7200 0 EET} + {1619733600 10800 1 EEST} + {1630011600 7200 0 EET} + {1651183200 10800 1 EEST} + {1661461200 7200 0 EET} + {1682632800 10800 1 EEST} + {1693515600 7200 0 EET} + {1714082400 10800 1 EEST} + {1724965200 7200 0 EET} + {1745532000 10800 1 EEST} + {1756414800 7200 0 EET} + {1776981600 10800 1 EEST} + {1787864400 7200 0 EET} + {1809036000 10800 1 EEST} + {1819314000 7200 0 EET} + {1840485600 10800 1 EEST} + {1851368400 7200 0 EET} + {1871935200 10800 1 EEST} + {1882818000 7200 0 EET} + {1903384800 10800 1 EEST} + {1914267600 7200 0 EET} + {1934834400 10800 1 EEST} + {1945717200 7200 0 EET} + {1966888800 10800 1 EEST} + {1977166800 7200 0 EET} + {1998338400 10800 1 EEST} + {2008616400 7200 0 EET} + {2029788000 10800 1 EEST} + {2040670800 7200 0 EET} + {2061237600 10800 1 EEST} + {2072120400 7200 0 EET} + {2092687200 10800 1 EEST} + {2103570000 7200 0 EET} + {2124136800 10800 1 EEST} + {2135019600 7200 0 EET} + {2156191200 10800 1 EEST} + {2166469200 7200 0 EET} + {2187640800 10800 1 EEST} + {2197918800 7200 0 EET} + {2219090400 10800 1 EEST} + {2229973200 7200 0 EET} + {2250540000 10800 1 EEST} + {2261422800 7200 0 EET} + {2281989600 10800 1 EEST} + {2292872400 7200 0 EET} + {2313439200 10800 1 EEST} + {2324322000 7200 0 EET} + {2345493600 10800 1 EEST} + {2355771600 7200 0 EET} + {2376943200 10800 1 EEST} + {2387826000 7200 0 EET} + {2408392800 10800 1 EEST} + {2419275600 7200 0 EET} + {2439842400 10800 1 EEST} + {2450725200 7200 0 EET} + {2471292000 10800 1 EEST} + {2482174800 7200 0 EET} + {2503346400 10800 1 EEST} + {2513624400 7200 0 EET} + {2534796000 10800 1 EEST} + {2545074000 7200 0 EET} + {2566245600 10800 1 EEST} + {2577128400 7200 0 EET} + {2597695200 10800 1 EEST} + {2608578000 7200 0 EET} + {2629144800 10800 1 EEST} + {2640027600 7200 0 EET} + {2660594400 10800 1 EEST} + {2671477200 7200 0 EET} + {2692648800 10800 1 EEST} + {2702926800 7200 0 EET} + {2724098400 10800 1 EEST} + {2734981200 7200 0 EET} + {2755548000 10800 1 EEST} + {2766430800 7200 0 EET} + {2786997600 10800 1 EEST} + {2797880400 7200 0 EET} + {2818447200 10800 1 EEST} + {2829330000 7200 0 EET} + {2850501600 10800 1 EEST} + {2860779600 7200 0 EET} + {2881951200 10800 1 EEST} + {2892229200 7200 0 EET} + {2913400800 10800 1 EEST} + {2924283600 7200 0 EET} + {2944850400 10800 1 EEST} + {2955733200 7200 0 EET} + {2976300000 10800 1 EEST} + {2987182800 7200 0 EET} + {3007749600 10800 1 EEST} + {3018632400 7200 0 EET} + {3039804000 10800 1 EEST} + {3050082000 7200 0 EET} + {3071253600 10800 1 EEST} + {3081531600 7200 0 EET} + {3102703200 10800 1 EEST} + {3113586000 7200 0 EET} + {3134152800 10800 1 EEST} + {3145035600 7200 0 EET} + {3165602400 10800 1 EEST} + {3176485200 7200 0 EET} + {3197052000 10800 1 EEST} + {3207934800 7200 0 EET} + {3229106400 10800 1 EEST} + {3239384400 7200 0 EET} + {3260556000 10800 1 EEST} + {3271438800 7200 0 EET} + {3292005600 10800 1 EEST} + {3302888400 7200 0 EET} + {3323455200 10800 1 EEST} + {3334338000 7200 0 EET} + {3354904800 10800 1 EEST} + {3365787600 7200 0 EET} + {3386959200 10800 1 EEST} + {3397237200 7200 0 EET} + {3418408800 10800 1 EEST} + {3428686800 7200 0 EET} + {3449858400 10800 1 EEST} + {3460741200 7200 0 EET} + {3481308000 10800 1 EEST} + {3492190800 7200 0 EET} + {3512757600 10800 1 EEST} + {3523640400 7200 0 EET} + {3544207200 10800 1 EEST} + {3555090000 7200 0 EET} + {3576261600 10800 1 EEST} + {3586539600 7200 0 EET} + {3607711200 10800 1 EEST} + {3618594000 7200 0 EET} + {3639160800 10800 1 EEST} + {3650043600 7200 0 EET} + {3670610400 10800 1 EEST} + {3681493200 7200 0 EET} + {3702060000 10800 1 EEST} + {3712942800 7200 0 EET} + {3734114400 10800 1 EEST} + {3744392400 7200 0 EET} + {3765564000 10800 1 EEST} + {3775842000 7200 0 EET} + {3797013600 10800 1 EEST} + {3807896400 7200 0 EET} + {3828463200 10800 1 EEST} + {3839346000 7200 0 EET} + {3859912800 10800 1 EEST} + {3870795600 7200 0 EET} + {3891362400 10800 1 EEST} + {3902245200 7200 0 EET} + {3923416800 10800 1 EEST} + {3933694800 7200 0 EET} + {3954866400 10800 1 EEST} + {3965144400 7200 0 EET} + {3986316000 10800 1 EEST} + {3997198800 7200 0 EET} + {4017765600 10800 1 EEST} + {4028648400 7200 0 EET} + {4049215200 10800 1 EEST} + {4060098000 7200 0 EET} + {4080664800 10800 1 EEST} + {4091547600 7200 0 EET} +} diff --git a/library/tzdata/Africa/Casablanca b/library/tzdata/Africa/Casablanca index c59ff9e..d976aa5 100644 --- a/library/tzdata/Africa/Casablanca +++ b/library/tzdata/Africa/Casablanca @@ -1,28 +1,28 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Casablanca) { - {-9223372036854775808 -1820 0 LMT} - {-1773012580 0 0 WET} - {-956361600 3600 1 WEST} - {-950490000 0 0 WET} - {-942019200 3600 1 WEST} - {-761187600 0 0 WET} - {-617241600 3600 1 WEST} - {-605149200 0 0 WET} - {-81432000 3600 1 WEST} - {-71110800 0 0 WET} - {141264000 3600 1 WEST} - {147222000 0 0 WET} - {199756800 3600 1 WEST} - {207702000 0 0 WET} - {231292800 3600 1 WEST} - {244249200 0 0 WET} - {265507200 3600 1 WEST} - {271033200 0 0 WET} - {448243200 3600 0 CET} - {504918000 0 0 WET} - {1212278400 3600 1 WEST} - {1220223600 0 0 WET} - {1243814400 3600 1 WEST} - {1250809200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Casablanca) { + {-9223372036854775808 -1820 0 LMT} + {-1773012580 0 0 WET} + {-956361600 3600 1 WEST} + {-950490000 0 0 WET} + {-942019200 3600 1 WEST} + {-761187600 0 0 WET} + {-617241600 3600 1 WEST} + {-605149200 0 0 WET} + {-81432000 3600 1 WEST} + {-71110800 0 0 WET} + {141264000 3600 1 WEST} + {147222000 0 0 WET} + {199756800 3600 1 WEST} + {207702000 0 0 WET} + {231292800 3600 1 WEST} + {244249200 0 0 WET} + {265507200 3600 1 WEST} + {271033200 0 0 WET} + {448243200 3600 0 CET} + {504918000 0 0 WET} + {1212278400 3600 1 WEST} + {1220223600 0 0 WET} + {1243814400 3600 1 WEST} + {1250809200 0 0 WET} +} diff --git a/library/tzdata/Africa/Ceuta b/library/tzdata/Africa/Ceuta index dd5eea2..882c13d 100644 --- a/library/tzdata/Africa/Ceuta +++ b/library/tzdata/Africa/Ceuta @@ -1,258 +1,258 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Ceuta) { - {-9223372036854775808 -1276 0 LMT} - {-2177451524 0 0 WET} - {-1630112400 3600 1 WEST} - {-1616810400 0 0 WET} - {-1451692800 0 0 WET} - {-1442451600 3600 1 WEST} - {-1427677200 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1293840000 0 0 WET} - {-81432000 3600 1 WEST} - {-71110800 0 0 WET} - {141264000 3600 1 WEST} - {147222000 0 0 WET} - {199756800 3600 1 WEST} - {207702000 0 0 WET} - {231292800 3600 1 WEST} - {244249200 0 0 WET} - {265507200 3600 1 WEST} - {271033200 0 0 WET} - {448243200 3600 0 CET} - {504918000 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Ceuta) { + {-9223372036854775808 -1276 0 LMT} + {-2177451524 0 0 WET} + {-1630112400 3600 1 WEST} + {-1616810400 0 0 WET} + {-1451692800 0 0 WET} + {-1442451600 3600 1 WEST} + {-1427677200 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1293840000 0 0 WET} + {-81432000 3600 1 WEST} + {-71110800 0 0 WET} + {141264000 3600 1 WEST} + {147222000 0 0 WET} + {199756800 3600 1 WEST} + {207702000 0 0 WET} + {231292800 3600 1 WEST} + {244249200 0 0 WET} + {265507200 3600 1 WEST} + {271033200 0 0 WET} + {448243200 3600 0 CET} + {504918000 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Africa/Conakry b/library/tzdata/Africa/Conakry index b9a7982..d17ce4b 100644 --- a/library/tzdata/Africa/Conakry +++ b/library/tzdata/Africa/Conakry @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Conakry) { - {-9223372036854775808 -3292 0 LMT} - {-1830380708 0 0 GMT} - {-1131235200 -3600 0 WAT} - {-315615600 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Conakry) { + {-9223372036854775808 -3292 0 LMT} + {-1830380708 0 0 GMT} + {-1131235200 -3600 0 WAT} + {-315615600 0 0 GMT} +} diff --git a/library/tzdata/Africa/Dakar b/library/tzdata/Africa/Dakar index 4b10a52..487dc62 100644 --- a/library/tzdata/Africa/Dakar +++ b/library/tzdata/Africa/Dakar @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Dakar) { - {-9223372036854775808 -4184 0 LMT} - {-1830379816 -3600 0 WAT} - {-902098800 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Dakar) { + {-9223372036854775808 -4184 0 LMT} + {-1830379816 -3600 0 WAT} + {-902098800 0 0 GMT} +} diff --git a/library/tzdata/Africa/Dar_es_Salaam b/library/tzdata/Africa/Dar_es_Salaam index e65ce66..e427b9c 100644 --- a/library/tzdata/Africa/Dar_es_Salaam +++ b/library/tzdata/Africa/Dar_es_Salaam @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Dar_es_Salaam) { - {-9223372036854775808 9428 0 LMT} - {-1230777428 10800 0 EAT} - {-694321200 9885 0 BEAUT} - {-284006685 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Dar_es_Salaam) { + {-9223372036854775808 9428 0 LMT} + {-1230777428 10800 0 EAT} + {-694321200 9885 0 BEAUT} + {-284006685 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Djibouti b/library/tzdata/Africa/Djibouti index cf1aaf9..0ec510c 100644 --- a/library/tzdata/Africa/Djibouti +++ b/library/tzdata/Africa/Djibouti @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Djibouti) { - {-9223372036854775808 10356 0 LMT} - {-1846291956 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Djibouti) { + {-9223372036854775808 10356 0 LMT} + {-1846291956 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Douala b/library/tzdata/Africa/Douala index 44f479e..301a530 100644 --- a/library/tzdata/Africa/Douala +++ b/library/tzdata/Africa/Douala @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Douala) { - {-9223372036854775808 2328 0 LMT} - {-1830386328 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Douala) { + {-9223372036854775808 2328 0 LMT} + {-1830386328 3600 0 WAT} +} diff --git a/library/tzdata/Africa/El_Aaiun b/library/tzdata/Africa/El_Aaiun index 8fd7bcd..a8b9d34 100644 --- a/library/tzdata/Africa/El_Aaiun +++ b/library/tzdata/Africa/El_Aaiun @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/El_Aaiun) { - {-9223372036854775808 -3168 0 LMT} - {-1136070432 -3600 0 WAT} - {198291600 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/El_Aaiun) { + {-9223372036854775808 -3168 0 LMT} + {-1136070432 -3600 0 WAT} + {198291600 0 0 WET} +} diff --git a/library/tzdata/Africa/Freetown b/library/tzdata/Africa/Freetown index 6c74476..c3f2d2e 100644 --- a/library/tzdata/Africa/Freetown +++ b/library/tzdata/Africa/Freetown @@ -1,36 +1,36 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Freetown) { - {-9223372036854775808 -3180 0 LMT} - {-2776979220 -3180 0 FMT} - {-1785712020 -3600 0 WAT} - {-1091487600 -1200 1 SLST} - {-1080949200 -3600 0 WAT} - {-1059865200 -1200 1 SLST} - {-1049326800 -3600 0 WAT} - {-1028329200 -1200 1 SLST} - {-1017790800 -3600 0 WAT} - {-996793200 -1200 1 SLST} - {-986254800 -3600 0 WAT} - {-965257200 -1200 1 SLST} - {-954718800 -3600 0 WAT} - {-933634800 -1200 1 SLST} - {-923096400 -3600 0 WAT} - {-902098800 -1200 1 SLST} - {-891560400 -3600 0 WAT} - {-870562800 -1200 1 SLST} - {-860024400 -3600 0 WAT} - {-410223600 0 0 WAT} - {-397180800 3600 1 SLST} - {-389235600 0 0 GMT} - {-365644800 3600 1 SLST} - {-357699600 0 0 GMT} - {-334108800 3600 1 SLST} - {-326163600 0 0 GMT} - {-302486400 3600 1 SLST} - {-294541200 0 0 GMT} - {-270950400 3600 1 SLST} - {-263005200 0 0 GMT} - {-239414400 3600 1 SLST} - {-231469200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Freetown) { + {-9223372036854775808 -3180 0 LMT} + {-2776979220 -3180 0 FMT} + {-1785712020 -3600 0 WAT} + {-1091487600 -1200 1 SLST} + {-1080949200 -3600 0 WAT} + {-1059865200 -1200 1 SLST} + {-1049326800 -3600 0 WAT} + {-1028329200 -1200 1 SLST} + {-1017790800 -3600 0 WAT} + {-996793200 -1200 1 SLST} + {-986254800 -3600 0 WAT} + {-965257200 -1200 1 SLST} + {-954718800 -3600 0 WAT} + {-933634800 -1200 1 SLST} + {-923096400 -3600 0 WAT} + {-902098800 -1200 1 SLST} + {-891560400 -3600 0 WAT} + {-870562800 -1200 1 SLST} + {-860024400 -3600 0 WAT} + {-410223600 0 0 WAT} + {-397180800 3600 1 SLST} + {-389235600 0 0 GMT} + {-365644800 3600 1 SLST} + {-357699600 0 0 GMT} + {-334108800 3600 1 SLST} + {-326163600 0 0 GMT} + {-302486400 3600 1 SLST} + {-294541200 0 0 GMT} + {-270950400 3600 1 SLST} + {-263005200 0 0 GMT} + {-239414400 3600 1 SLST} + {-231469200 0 0 GMT} +} diff --git a/library/tzdata/Africa/Gaborone b/library/tzdata/Africa/Gaborone index 66f1338..7753ba0 100644 --- a/library/tzdata/Africa/Gaborone +++ b/library/tzdata/Africa/Gaborone @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Gaborone) { - {-9223372036854775808 6220 0 LMT} - {-2682294220 7200 0 CAT} - {-829526400 10800 1 CAST} - {-813805200 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Gaborone) { + {-9223372036854775808 6220 0 LMT} + {-2682294220 7200 0 CAT} + {-829526400 10800 1 CAST} + {-813805200 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Harare b/library/tzdata/Africa/Harare index bf7a703..7482b15 100644 --- a/library/tzdata/Africa/Harare +++ b/library/tzdata/Africa/Harare @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Harare) { - {-9223372036854775808 7452 0 LMT} - {-2109290652 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Harare) { + {-9223372036854775808 7452 0 LMT} + {-2109290652 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Johannesburg b/library/tzdata/Africa/Johannesburg index 0876cde..b9a8348 100644 --- a/library/tzdata/Africa/Johannesburg +++ b/library/tzdata/Africa/Johannesburg @@ -1,11 +1,11 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Johannesburg) { - {-9223372036854775808 6720 0 LMT} - {-2458173120 5400 0 SAST} - {-2109288600 7200 0 SAST} - {-860976000 10800 1 SAST} - {-845254800 7200 0 SAST} - {-829526400 10800 1 SAST} - {-813805200 7200 0 SAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Johannesburg) { + {-9223372036854775808 6720 0 LMT} + {-2458173120 5400 0 SAST} + {-2109288600 7200 0 SAST} + {-860976000 10800 1 SAST} + {-845254800 7200 0 SAST} + {-829526400 10800 1 SAST} + {-813805200 7200 0 SAST} +} diff --git a/library/tzdata/Africa/Kampala b/library/tzdata/Africa/Kampala index 0166e6d..ab3f085 100644 --- a/library/tzdata/Africa/Kampala +++ b/library/tzdata/Africa/Kampala @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Kampala) { - {-9223372036854775808 7780 0 LMT} - {-1309745380 10800 0 EAT} - {-1262314800 9000 0 BEAT} - {-694319400 9885 0 BEAUT} - {-410237085 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Kampala) { + {-9223372036854775808 7780 0 LMT} + {-1309745380 10800 0 EAT} + {-1262314800 9000 0 BEAT} + {-694319400 9885 0 BEAUT} + {-410237085 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Khartoum b/library/tzdata/Africa/Khartoum index fdcd884..dfcac82 100644 --- a/library/tzdata/Africa/Khartoum +++ b/library/tzdata/Africa/Khartoum @@ -1,39 +1,39 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Khartoum) { - {-9223372036854775808 7808 0 LMT} - {-1230775808 7200 0 CAT} - {10360800 10800 1 CAST} - {24786000 7200 0 CAT} - {41810400 10800 1 CAST} - {56322000 7200 0 CAT} - {73432800 10800 1 CAST} - {87944400 7200 0 CAT} - {104882400 10800 1 CAST} - {119480400 7200 0 CAT} - {136332000 10800 1 CAST} - {151016400 7200 0 CAT} - {167781600 10800 1 CAST} - {182552400 7200 0 CAT} - {199231200 10800 1 CAST} - {214174800 7200 0 CAT} - {230680800 10800 1 CAST} - {245710800 7200 0 CAT} - {262735200 10800 1 CAST} - {277246800 7200 0 CAT} - {294184800 10800 1 CAST} - {308782800 7200 0 CAT} - {325634400 10800 1 CAST} - {340405200 7200 0 CAT} - {357084000 10800 1 CAST} - {371941200 7200 0 CAT} - {388533600 10800 1 CAST} - {403477200 7200 0 CAT} - {419983200 10800 1 CAST} - {435013200 7200 0 CAT} - {452037600 10800 1 CAST} - {466635600 7200 0 CAT} - {483487200 10800 1 CAST} - {498171600 7200 0 CAT} - {947930400 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Khartoum) { + {-9223372036854775808 7808 0 LMT} + {-1230775808 7200 0 CAT} + {10360800 10800 1 CAST} + {24786000 7200 0 CAT} + {41810400 10800 1 CAST} + {56322000 7200 0 CAT} + {73432800 10800 1 CAST} + {87944400 7200 0 CAT} + {104882400 10800 1 CAST} + {119480400 7200 0 CAT} + {136332000 10800 1 CAST} + {151016400 7200 0 CAT} + {167781600 10800 1 CAST} + {182552400 7200 0 CAT} + {199231200 10800 1 CAST} + {214174800 7200 0 CAT} + {230680800 10800 1 CAST} + {245710800 7200 0 CAT} + {262735200 10800 1 CAST} + {277246800 7200 0 CAT} + {294184800 10800 1 CAST} + {308782800 7200 0 CAT} + {325634400 10800 1 CAST} + {340405200 7200 0 CAT} + {357084000 10800 1 CAST} + {371941200 7200 0 CAT} + {388533600 10800 1 CAST} + {403477200 7200 0 CAT} + {419983200 10800 1 CAST} + {435013200 7200 0 CAT} + {452037600 10800 1 CAST} + {466635600 7200 0 CAT} + {483487200 10800 1 CAST} + {498171600 7200 0 CAT} + {947930400 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Kigali b/library/tzdata/Africa/Kigali index 441e5c4..f723bcd 100644 --- a/library/tzdata/Africa/Kigali +++ b/library/tzdata/Africa/Kigali @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Kigali) { - {-9223372036854775808 7216 0 LMT} - {-1091498416 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Kigali) { + {-9223372036854775808 7216 0 LMT} + {-1091498416 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Kinshasa b/library/tzdata/Africa/Kinshasa index 4651394..050c1fa 100644 --- a/library/tzdata/Africa/Kinshasa +++ b/library/tzdata/Africa/Kinshasa @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Kinshasa) { - {-9223372036854775808 3672 0 LMT} - {-2276643672 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Kinshasa) { + {-9223372036854775808 3672 0 LMT} + {-2276643672 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Lagos b/library/tzdata/Africa/Lagos index 4617e46..079572f 100644 --- a/library/tzdata/Africa/Lagos +++ b/library/tzdata/Africa/Lagos @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Lagos) { - {-9223372036854775808 816 0 LMT} - {-1588464816 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Lagos) { + {-9223372036854775808 816 0 LMT} + {-1588464816 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Libreville b/library/tzdata/Africa/Libreville index fc3934b..8427551 100644 --- a/library/tzdata/Africa/Libreville +++ b/library/tzdata/Africa/Libreville @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Libreville) { - {-9223372036854775808 2268 0 LMT} - {-1830386268 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Libreville) { + {-9223372036854775808 2268 0 LMT} + {-1830386268 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Lome b/library/tzdata/Africa/Lome index d2ccc84..606625c 100644 --- a/library/tzdata/Africa/Lome +++ b/library/tzdata/Africa/Lome @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Lome) { - {-9223372036854775808 292 0 LMT} - {-2429827492 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Lome) { + {-9223372036854775808 292 0 LMT} + {-2429827492 0 0 GMT} +} diff --git a/library/tzdata/Africa/Luanda b/library/tzdata/Africa/Luanda index 8cfd5ed..cd1b29e 100644 --- a/library/tzdata/Africa/Luanda +++ b/library/tzdata/Africa/Luanda @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Luanda) { - {-9223372036854775808 3176 0 LMT} - {-2461452776 3124 0 AOT} - {-1849395124 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Luanda) { + {-9223372036854775808 3176 0 LMT} + {-2461452776 3124 0 AOT} + {-1849395124 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Lubumbashi b/library/tzdata/Africa/Lubumbashi index c49b032..bd67221 100644 --- a/library/tzdata/Africa/Lubumbashi +++ b/library/tzdata/Africa/Lubumbashi @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Lubumbashi) { - {-9223372036854775808 6592 0 LMT} - {-2276646592 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Lubumbashi) { + {-9223372036854775808 6592 0 LMT} + {-2276646592 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Lusaka b/library/tzdata/Africa/Lusaka index cf847f0..ed9c30d 100644 --- a/library/tzdata/Africa/Lusaka +++ b/library/tzdata/Africa/Lusaka @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Lusaka) { - {-9223372036854775808 6788 0 LMT} - {-2109289988 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Lusaka) { + {-9223372036854775808 6788 0 LMT} + {-2109289988 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Malabo b/library/tzdata/Africa/Malabo index 6561b4b..bec0524 100644 --- a/library/tzdata/Africa/Malabo +++ b/library/tzdata/Africa/Malabo @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Malabo) { - {-9223372036854775808 2108 0 LMT} - {-1830386108 0 0 GMT} - {-190857600 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Malabo) { + {-9223372036854775808 2108 0 LMT} + {-1830386108 0 0 GMT} + {-190857600 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Maputo b/library/tzdata/Africa/Maputo index 23e7413..6ee208c 100644 --- a/library/tzdata/Africa/Maputo +++ b/library/tzdata/Africa/Maputo @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Maputo) { - {-9223372036854775808 7820 0 LMT} - {-2109291020 7200 0 CAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Maputo) { + {-9223372036854775808 7820 0 LMT} + {-2109291020 7200 0 CAT} +} diff --git a/library/tzdata/Africa/Maseru b/library/tzdata/Africa/Maseru index 3ab0e6f..21ca968 100644 --- a/library/tzdata/Africa/Maseru +++ b/library/tzdata/Africa/Maseru @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Maseru) { - {-9223372036854775808 6600 0 LMT} - {-2109289800 7200 0 SAST} - {-829526400 10800 1 SAST} - {-813805200 7200 0 SAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Maseru) { + {-9223372036854775808 6600 0 LMT} + {-2109289800 7200 0 SAST} + {-829526400 10800 1 SAST} + {-813805200 7200 0 SAST} +} diff --git a/library/tzdata/Africa/Mbabane b/library/tzdata/Africa/Mbabane index 992d021..4d174d5 100644 --- a/library/tzdata/Africa/Mbabane +++ b/library/tzdata/Africa/Mbabane @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Mbabane) { - {-9223372036854775808 7464 0 LMT} - {-2109290664 7200 0 SAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Mbabane) { + {-9223372036854775808 7464 0 LMT} + {-2109290664 7200 0 SAST} +} diff --git a/library/tzdata/Africa/Mogadishu b/library/tzdata/Africa/Mogadishu index 170124a..570d3ea 100644 --- a/library/tzdata/Africa/Mogadishu +++ b/library/tzdata/Africa/Mogadishu @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Mogadishu) { - {-9223372036854775808 10888 0 LMT} - {-2403572488 10800 0 EAT} - {-1230778800 9000 0 BEAT} - {-410236200 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Mogadishu) { + {-9223372036854775808 10888 0 LMT} + {-2403572488 10800 0 EAT} + {-1230778800 9000 0 BEAT} + {-410236200 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Monrovia b/library/tzdata/Africa/Monrovia index 31140ce..1cfff58 100644 --- a/library/tzdata/Africa/Monrovia +++ b/library/tzdata/Africa/Monrovia @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Monrovia) { - {-9223372036854775808 -2588 0 LMT} - {-2776979812 -2588 0 MMT} - {-1604359012 -2670 0 LRT} - {73529070 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Monrovia) { + {-9223372036854775808 -2588 0 LMT} + {-2776979812 -2588 0 MMT} + {-1604359012 -2670 0 LRT} + {73529070 0 0 GMT} +} diff --git a/library/tzdata/Africa/Nairobi b/library/tzdata/Africa/Nairobi index 2e7925c..99b0d70 100644 --- a/library/tzdata/Africa/Nairobi +++ b/library/tzdata/Africa/Nairobi @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Nairobi) { - {-9223372036854775808 8836 0 LMT} - {-1309746436 10800 0 EAT} - {-1262314800 9000 0 BEAT} - {-946780200 9885 0 BEAUT} - {-315629085 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Nairobi) { + {-9223372036854775808 8836 0 LMT} + {-1309746436 10800 0 EAT} + {-1262314800 9000 0 BEAT} + {-946780200 9885 0 BEAUT} + {-315629085 10800 0 EAT} +} diff --git a/library/tzdata/Africa/Ndjamena b/library/tzdata/Africa/Ndjamena index 75b76b8..af4daaa 100644 --- a/library/tzdata/Africa/Ndjamena +++ b/library/tzdata/Africa/Ndjamena @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Ndjamena) { - {-9223372036854775808 3612 0 LMT} - {-1830387612 3600 0 WAT} - {308703600 7200 1 WAST} - {321314400 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Ndjamena) { + {-9223372036854775808 3612 0 LMT} + {-1830387612 3600 0 WAT} + {308703600 7200 1 WAST} + {321314400 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Niamey b/library/tzdata/Africa/Niamey index b76dfcd..40ded06b 100644 --- a/library/tzdata/Africa/Niamey +++ b/library/tzdata/Africa/Niamey @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Niamey) { - {-9223372036854775808 508 0 LMT} - {-1830384508 -3600 0 WAT} - {-1131231600 0 0 GMT} - {-315619200 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Niamey) { + {-9223372036854775808 508 0 LMT} + {-1830384508 -3600 0 WAT} + {-1131231600 0 0 GMT} + {-315619200 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Nouakchott b/library/tzdata/Africa/Nouakchott index f09cd06..f7369d0 100644 --- a/library/tzdata/Africa/Nouakchott +++ b/library/tzdata/Africa/Nouakchott @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Nouakchott) { - {-9223372036854775808 -3828 0 LMT} - {-1830380172 0 0 GMT} - {-1131235200 -3600 0 WAT} - {-286930800 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Nouakchott) { + {-9223372036854775808 -3828 0 LMT} + {-1830380172 0 0 GMT} + {-1131235200 -3600 0 WAT} + {-286930800 0 0 GMT} +} diff --git a/library/tzdata/Africa/Ouagadougou b/library/tzdata/Africa/Ouagadougou index 5c96c27..88a7145 100644 --- a/library/tzdata/Africa/Ouagadougou +++ b/library/tzdata/Africa/Ouagadougou @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Ouagadougou) { - {-9223372036854775808 -364 0 LMT} - {-1830383636 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Ouagadougou) { + {-9223372036854775808 -364 0 LMT} + {-1830383636 0 0 GMT} +} diff --git a/library/tzdata/Africa/Porto-Novo b/library/tzdata/Africa/Porto-Novo index 5f1ab75..b89cf1b 100644 --- a/library/tzdata/Africa/Porto-Novo +++ b/library/tzdata/Africa/Porto-Novo @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Porto-Novo) { - {-9223372036854775808 628 0 LMT} - {-1830384628 0 0 GMT} - {-1131235200 3600 0 WAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Porto-Novo) { + {-9223372036854775808 628 0 LMT} + {-1830384628 0 0 GMT} + {-1131235200 3600 0 WAT} +} diff --git a/library/tzdata/Africa/Sao_Tome b/library/tzdata/Africa/Sao_Tome index ebd2519..ab1590d 100644 --- a/library/tzdata/Africa/Sao_Tome +++ b/library/tzdata/Africa/Sao_Tome @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Sao_Tome) { - {-9223372036854775808 1616 0 LMT} - {-2713912016 -2192 0 LMT} - {-1830381808 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Sao_Tome) { + {-9223372036854775808 1616 0 LMT} + {-2713912016 -2192 0 LMT} + {-1830381808 0 0 GMT} +} diff --git a/library/tzdata/Africa/Timbuktu b/library/tzdata/Africa/Timbuktu index cb069ef..8057eed 100644 --- a/library/tzdata/Africa/Timbuktu +++ b/library/tzdata/Africa/Timbuktu @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Africa/Bamako)]} { - LoadTimeZoneFile Africa/Bamako -} -set TZData(:Africa/Timbuktu) $TZData(:Africa/Bamako) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Africa/Bamako)]} { + LoadTimeZoneFile Africa/Bamako +} +set TZData(:Africa/Timbuktu) $TZData(:Africa/Bamako) diff --git a/library/tzdata/Africa/Tripoli b/library/tzdata/Africa/Tripoli index 2e22ad3..e993249 100644 --- a/library/tzdata/Africa/Tripoli +++ b/library/tzdata/Africa/Tripoli @@ -1,31 +1,31 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Tripoli) { - {-9223372036854775808 3164 0 LMT} - {-1577926364 3600 0 CET} - {-574902000 7200 1 CEST} - {-512175600 7200 1 CEST} - {-449888400 7200 1 CEST} - {-347158800 7200 0 EET} - {378684000 3600 0 CET} - {386463600 7200 1 CEST} - {402271200 3600 0 CET} - {417999600 7200 1 CEST} - {433807200 3600 0 CET} - {449622000 7200 1 CEST} - {465429600 3600 0 CET} - {481590000 7200 1 CEST} - {496965600 3600 0 CET} - {512953200 7200 1 CEST} - {528674400 3600 0 CET} - {544230000 7200 1 CEST} - {560037600 3600 0 CET} - {575852400 7200 1 CEST} - {591660000 3600 0 CET} - {607388400 7200 1 CEST} - {623196000 3600 0 CET} - {641775600 7200 0 EET} - {844034400 3600 0 CET} - {860108400 7200 1 CEST} - {875916000 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Tripoli) { + {-9223372036854775808 3164 0 LMT} + {-1577926364 3600 0 CET} + {-574902000 7200 1 CEST} + {-512175600 7200 1 CEST} + {-449888400 7200 1 CEST} + {-347158800 7200 0 EET} + {378684000 3600 0 CET} + {386463600 7200 1 CEST} + {402271200 3600 0 CET} + {417999600 7200 1 CEST} + {433807200 3600 0 CET} + {449622000 7200 1 CEST} + {465429600 3600 0 CET} + {481590000 7200 1 CEST} + {496965600 3600 0 CET} + {512953200 7200 1 CEST} + {528674400 3600 0 CET} + {544230000 7200 1 CEST} + {560037600 3600 0 CET} + {575852400 7200 1 CEST} + {591660000 3600 0 CET} + {607388400 7200 1 CEST} + {623196000 3600 0 CET} + {641775600 7200 0 EET} + {844034400 3600 0 CET} + {860108400 7200 1 CEST} + {875916000 7200 0 EET} +} diff --git a/library/tzdata/Africa/Tunis b/library/tzdata/Africa/Tunis index e01ae1a..8a7ec16 100644 --- a/library/tzdata/Africa/Tunis +++ b/library/tzdata/Africa/Tunis @@ -1,219 +1,219 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Tunis) { - {-9223372036854775808 2444 0 LMT} - {-2797202444 561 0 PMT} - {-1855958961 3600 0 CET} - {-969242400 7200 1 CEST} - {-950493600 3600 0 CET} - {-941940000 7200 1 CEST} - {-891136800 3600 0 CET} - {-877827600 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-842918400 3600 0 CET} - {-842223600 7200 1 CEST} - {-828230400 3600 0 CET} - {-812502000 7200 1 CEST} - {-796269600 3600 0 CET} - {-781052400 7200 1 CEST} - {-766634400 3600 0 CET} - {231202800 7200 1 CEST} - {243903600 3600 0 CET} - {262825200 7200 1 CEST} - {276044400 3600 0 CET} - {581122800 7200 1 CEST} - {591145200 3600 0 CET} - {606870000 7200 1 CEST} - {622594800 3600 0 CET} - {641516400 7200 1 CEST} - {654649200 3600 0 CET} - {1114902000 7200 1 CEST} - {1128038400 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Tunis) { + {-9223372036854775808 2444 0 LMT} + {-2797202444 561 0 PMT} + {-1855958961 3600 0 CET} + {-969242400 7200 1 CEST} + {-950493600 3600 0 CET} + {-941940000 7200 1 CEST} + {-891136800 3600 0 CET} + {-877827600 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-842918400 3600 0 CET} + {-842223600 7200 1 CEST} + {-828230400 3600 0 CET} + {-812502000 7200 1 CEST} + {-796269600 3600 0 CET} + {-781052400 7200 1 CEST} + {-766634400 3600 0 CET} + {231202800 7200 1 CEST} + {243903600 3600 0 CET} + {262825200 7200 1 CEST} + {276044400 3600 0 CET} + {581122800 7200 1 CEST} + {591145200 3600 0 CET} + {606870000 7200 1 CEST} + {622594800 3600 0 CET} + {641516400 7200 1 CEST} + {654649200 3600 0 CET} + {1114902000 7200 1 CEST} + {1128038400 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Africa/Windhoek b/library/tzdata/Africa/Windhoek index 494e9e6..a655f2e 100644 --- a/library/tzdata/Africa/Windhoek +++ b/library/tzdata/Africa/Windhoek @@ -1,222 +1,222 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Africa/Windhoek) { - {-9223372036854775808 4104 0 LMT} - {-2458170504 5400 0 SWAT} - {-2109288600 7200 0 SAST} - {-860976000 10800 1 SAST} - {-845254800 7200 0 SAST} - {637970400 7200 0 CAT} - {765324000 3600 0 WAT} - {778640400 7200 1 WAST} - {796780800 3600 0 WAT} - {810090000 7200 1 WAST} - {828835200 3600 0 WAT} - {841539600 7200 1 WAST} - {860284800 3600 0 WAT} - {873594000 7200 1 WAST} - {891734400 3600 0 WAT} - {905043600 7200 1 WAST} - {923184000 3600 0 WAT} - {936493200 7200 1 WAST} - {954633600 3600 0 WAT} - {967942800 7200 1 WAST} - {986083200 3600 0 WAT} - {999392400 7200 1 WAST} - {1018137600 3600 0 WAT} - {1030842000 7200 1 WAST} - {1049587200 3600 0 WAT} - {1062896400 7200 1 WAST} - {1081036800 3600 0 WAT} - {1094346000 7200 1 WAST} - {1112486400 3600 0 WAT} - {1125795600 7200 1 WAST} - {1143936000 3600 0 WAT} - {1157245200 7200 1 WAST} - {1175385600 3600 0 WAT} - {1188694800 7200 1 WAST} - {1207440000 3600 0 WAT} - {1220749200 7200 1 WAST} - {1238889600 3600 0 WAT} - {1252198800 7200 1 WAST} - {1270339200 3600 0 WAT} - {1283648400 7200 1 WAST} - {1301788800 3600 0 WAT} - {1315098000 7200 1 WAST} - {1333238400 3600 0 WAT} - {1346547600 7200 1 WAST} - {1365292800 3600 0 WAT} - {1377997200 7200 1 WAST} - {1396742400 3600 0 WAT} - {1410051600 7200 1 WAST} - {1428192000 3600 0 WAT} - {1441501200 7200 1 WAST} - {1459641600 3600 0 WAT} - {1472950800 7200 1 WAST} - {1491091200 3600 0 WAT} - {1504400400 7200 1 WAST} - {1522540800 3600 0 WAT} - {1535850000 7200 1 WAST} - {1554595200 3600 0 WAT} - {1567299600 7200 1 WAST} - {1586044800 3600 0 WAT} - {1599354000 7200 1 WAST} - {1617494400 3600 0 WAT} - {1630803600 7200 1 WAST} - {1648944000 3600 0 WAT} - {1662253200 7200 1 WAST} - {1680393600 3600 0 WAT} - {1693702800 7200 1 WAST} - {1712448000 3600 0 WAT} - {1725152400 7200 1 WAST} - {1743897600 3600 0 WAT} - {1757206800 7200 1 WAST} - {1775347200 3600 0 WAT} - {1788656400 7200 1 WAST} - {1806796800 3600 0 WAT} - {1820106000 7200 1 WAST} - {1838246400 3600 0 WAT} - {1851555600 7200 1 WAST} - {1869696000 3600 0 WAT} - {1883005200 7200 1 WAST} - {1901750400 3600 0 WAT} - {1914454800 7200 1 WAST} - {1933200000 3600 0 WAT} - {1946509200 7200 1 WAST} - {1964649600 3600 0 WAT} - {1977958800 7200 1 WAST} - {1996099200 3600 0 WAT} - {2009408400 7200 1 WAST} - {2027548800 3600 0 WAT} - {2040858000 7200 1 WAST} - {2058998400 3600 0 WAT} - {2072307600 7200 1 WAST} - {2091052800 3600 0 WAT} - {2104362000 7200 1 WAST} - {2122502400 3600 0 WAT} - {2135811600 7200 1 WAST} - {2153952000 3600 0 WAT} - {2167261200 7200 1 WAST} - {2185401600 3600 0 WAT} - {2198710800 7200 1 WAST} - {2216851200 3600 0 WAT} - {2230160400 7200 1 WAST} - {2248905600 3600 0 WAT} - {2261610000 7200 1 WAST} - {2280355200 3600 0 WAT} - {2293664400 7200 1 WAST} - {2311804800 3600 0 WAT} - {2325114000 7200 1 WAST} - {2343254400 3600 0 WAT} - {2356563600 7200 1 WAST} - {2374704000 3600 0 WAT} - {2388013200 7200 1 WAST} - {2406153600 3600 0 WAT} - {2419462800 7200 1 WAST} - {2438208000 3600 0 WAT} - {2450912400 7200 1 WAST} - {2469657600 3600 0 WAT} - {2482966800 7200 1 WAST} - {2501107200 3600 0 WAT} - {2514416400 7200 1 WAST} - {2532556800 3600 0 WAT} - {2545866000 7200 1 WAST} - {2564006400 3600 0 WAT} - {2577315600 7200 1 WAST} - {2596060800 3600 0 WAT} - {2608765200 7200 1 WAST} - {2627510400 3600 0 WAT} - {2640819600 7200 1 WAST} - {2658960000 3600 0 WAT} - {2672269200 7200 1 WAST} - {2690409600 3600 0 WAT} - {2703718800 7200 1 WAST} - {2721859200 3600 0 WAT} - {2735168400 7200 1 WAST} - {2753308800 3600 0 WAT} - {2766618000 7200 1 WAST} - {2785363200 3600 0 WAT} - {2798067600 7200 1 WAST} - {2816812800 3600 0 WAT} - {2830122000 7200 1 WAST} - {2848262400 3600 0 WAT} - {2861571600 7200 1 WAST} - {2879712000 3600 0 WAT} - {2893021200 7200 1 WAST} - {2911161600 3600 0 WAT} - {2924470800 7200 1 WAST} - {2942611200 3600 0 WAT} - {2955920400 7200 1 WAST} - {2974665600 3600 0 WAT} - {2987974800 7200 1 WAST} - {3006115200 3600 0 WAT} - {3019424400 7200 1 WAST} - {3037564800 3600 0 WAT} - {3050874000 7200 1 WAST} - {3069014400 3600 0 WAT} - {3082323600 7200 1 WAST} - {3100464000 3600 0 WAT} - {3113773200 7200 1 WAST} - {3132518400 3600 0 WAT} - {3145222800 7200 1 WAST} - {3163968000 3600 0 WAT} - {3177277200 7200 1 WAST} - {3195417600 3600 0 WAT} - {3208726800 7200 1 WAST} - {3226867200 3600 0 WAT} - {3240176400 7200 1 WAST} - {3258316800 3600 0 WAT} - {3271626000 7200 1 WAST} - {3289766400 3600 0 WAT} - {3303075600 7200 1 WAST} - {3321820800 3600 0 WAT} - {3334525200 7200 1 WAST} - {3353270400 3600 0 WAT} - {3366579600 7200 1 WAST} - {3384720000 3600 0 WAT} - {3398029200 7200 1 WAST} - {3416169600 3600 0 WAT} - {3429478800 7200 1 WAST} - {3447619200 3600 0 WAT} - {3460928400 7200 1 WAST} - {3479673600 3600 0 WAT} - {3492378000 7200 1 WAST} - {3511123200 3600 0 WAT} - {3524432400 7200 1 WAST} - {3542572800 3600 0 WAT} - {3555882000 7200 1 WAST} - {3574022400 3600 0 WAT} - {3587331600 7200 1 WAST} - {3605472000 3600 0 WAT} - {3618781200 7200 1 WAST} - {3636921600 3600 0 WAT} - {3650230800 7200 1 WAST} - {3668976000 3600 0 WAT} - {3681680400 7200 1 WAST} - {3700425600 3600 0 WAT} - {3713734800 7200 1 WAST} - {3731875200 3600 0 WAT} - {3745184400 7200 1 WAST} - {3763324800 3600 0 WAT} - {3776634000 7200 1 WAST} - {3794774400 3600 0 WAT} - {3808083600 7200 1 WAST} - {3826224000 3600 0 WAT} - {3839533200 7200 1 WAST} - {3858278400 3600 0 WAT} - {3871587600 7200 1 WAST} - {3889728000 3600 0 WAT} - {3903037200 7200 1 WAST} - {3921177600 3600 0 WAT} - {3934486800 7200 1 WAST} - {3952627200 3600 0 WAT} - {3965936400 7200 1 WAST} - {3984076800 3600 0 WAT} - {3997386000 7200 1 WAST} - {4016131200 3600 0 WAT} - {4028835600 7200 1 WAST} - {4047580800 3600 0 WAT} - {4060890000 7200 1 WAST} - {4079030400 3600 0 WAT} - {4092339600 7200 1 WAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Africa/Windhoek) { + {-9223372036854775808 4104 0 LMT} + {-2458170504 5400 0 SWAT} + {-2109288600 7200 0 SAST} + {-860976000 10800 1 SAST} + {-845254800 7200 0 SAST} + {637970400 7200 0 CAT} + {765324000 3600 0 WAT} + {778640400 7200 1 WAST} + {796780800 3600 0 WAT} + {810090000 7200 1 WAST} + {828835200 3600 0 WAT} + {841539600 7200 1 WAST} + {860284800 3600 0 WAT} + {873594000 7200 1 WAST} + {891734400 3600 0 WAT} + {905043600 7200 1 WAST} + {923184000 3600 0 WAT} + {936493200 7200 1 WAST} + {954633600 3600 0 WAT} + {967942800 7200 1 WAST} + {986083200 3600 0 WAT} + {999392400 7200 1 WAST} + {1018137600 3600 0 WAT} + {1030842000 7200 1 WAST} + {1049587200 3600 0 WAT} + {1062896400 7200 1 WAST} + {1081036800 3600 0 WAT} + {1094346000 7200 1 WAST} + {1112486400 3600 0 WAT} + {1125795600 7200 1 WAST} + {1143936000 3600 0 WAT} + {1157245200 7200 1 WAST} + {1175385600 3600 0 WAT} + {1188694800 7200 1 WAST} + {1207440000 3600 0 WAT} + {1220749200 7200 1 WAST} + {1238889600 3600 0 WAT} + {1252198800 7200 1 WAST} + {1270339200 3600 0 WAT} + {1283648400 7200 1 WAST} + {1301788800 3600 0 WAT} + {1315098000 7200 1 WAST} + {1333238400 3600 0 WAT} + {1346547600 7200 1 WAST} + {1365292800 3600 0 WAT} + {1377997200 7200 1 WAST} + {1396742400 3600 0 WAT} + {1410051600 7200 1 WAST} + {1428192000 3600 0 WAT} + {1441501200 7200 1 WAST} + {1459641600 3600 0 WAT} + {1472950800 7200 1 WAST} + {1491091200 3600 0 WAT} + {1504400400 7200 1 WAST} + {1522540800 3600 0 WAT} + {1535850000 7200 1 WAST} + {1554595200 3600 0 WAT} + {1567299600 7200 1 WAST} + {1586044800 3600 0 WAT} + {1599354000 7200 1 WAST} + {1617494400 3600 0 WAT} + {1630803600 7200 1 WAST} + {1648944000 3600 0 WAT} + {1662253200 7200 1 WAST} + {1680393600 3600 0 WAT} + {1693702800 7200 1 WAST} + {1712448000 3600 0 WAT} + {1725152400 7200 1 WAST} + {1743897600 3600 0 WAT} + {1757206800 7200 1 WAST} + {1775347200 3600 0 WAT} + {1788656400 7200 1 WAST} + {1806796800 3600 0 WAT} + {1820106000 7200 1 WAST} + {1838246400 3600 0 WAT} + {1851555600 7200 1 WAST} + {1869696000 3600 0 WAT} + {1883005200 7200 1 WAST} + {1901750400 3600 0 WAT} + {1914454800 7200 1 WAST} + {1933200000 3600 0 WAT} + {1946509200 7200 1 WAST} + {1964649600 3600 0 WAT} + {1977958800 7200 1 WAST} + {1996099200 3600 0 WAT} + {2009408400 7200 1 WAST} + {2027548800 3600 0 WAT} + {2040858000 7200 1 WAST} + {2058998400 3600 0 WAT} + {2072307600 7200 1 WAST} + {2091052800 3600 0 WAT} + {2104362000 7200 1 WAST} + {2122502400 3600 0 WAT} + {2135811600 7200 1 WAST} + {2153952000 3600 0 WAT} + {2167261200 7200 1 WAST} + {2185401600 3600 0 WAT} + {2198710800 7200 1 WAST} + {2216851200 3600 0 WAT} + {2230160400 7200 1 WAST} + {2248905600 3600 0 WAT} + {2261610000 7200 1 WAST} + {2280355200 3600 0 WAT} + {2293664400 7200 1 WAST} + {2311804800 3600 0 WAT} + {2325114000 7200 1 WAST} + {2343254400 3600 0 WAT} + {2356563600 7200 1 WAST} + {2374704000 3600 0 WAT} + {2388013200 7200 1 WAST} + {2406153600 3600 0 WAT} + {2419462800 7200 1 WAST} + {2438208000 3600 0 WAT} + {2450912400 7200 1 WAST} + {2469657600 3600 0 WAT} + {2482966800 7200 1 WAST} + {2501107200 3600 0 WAT} + {2514416400 7200 1 WAST} + {2532556800 3600 0 WAT} + {2545866000 7200 1 WAST} + {2564006400 3600 0 WAT} + {2577315600 7200 1 WAST} + {2596060800 3600 0 WAT} + {2608765200 7200 1 WAST} + {2627510400 3600 0 WAT} + {2640819600 7200 1 WAST} + {2658960000 3600 0 WAT} + {2672269200 7200 1 WAST} + {2690409600 3600 0 WAT} + {2703718800 7200 1 WAST} + {2721859200 3600 0 WAT} + {2735168400 7200 1 WAST} + {2753308800 3600 0 WAT} + {2766618000 7200 1 WAST} + {2785363200 3600 0 WAT} + {2798067600 7200 1 WAST} + {2816812800 3600 0 WAT} + {2830122000 7200 1 WAST} + {2848262400 3600 0 WAT} + {2861571600 7200 1 WAST} + {2879712000 3600 0 WAT} + {2893021200 7200 1 WAST} + {2911161600 3600 0 WAT} + {2924470800 7200 1 WAST} + {2942611200 3600 0 WAT} + {2955920400 7200 1 WAST} + {2974665600 3600 0 WAT} + {2987974800 7200 1 WAST} + {3006115200 3600 0 WAT} + {3019424400 7200 1 WAST} + {3037564800 3600 0 WAT} + {3050874000 7200 1 WAST} + {3069014400 3600 0 WAT} + {3082323600 7200 1 WAST} + {3100464000 3600 0 WAT} + {3113773200 7200 1 WAST} + {3132518400 3600 0 WAT} + {3145222800 7200 1 WAST} + {3163968000 3600 0 WAT} + {3177277200 7200 1 WAST} + {3195417600 3600 0 WAT} + {3208726800 7200 1 WAST} + {3226867200 3600 0 WAT} + {3240176400 7200 1 WAST} + {3258316800 3600 0 WAT} + {3271626000 7200 1 WAST} + {3289766400 3600 0 WAT} + {3303075600 7200 1 WAST} + {3321820800 3600 0 WAT} + {3334525200 7200 1 WAST} + {3353270400 3600 0 WAT} + {3366579600 7200 1 WAST} + {3384720000 3600 0 WAT} + {3398029200 7200 1 WAST} + {3416169600 3600 0 WAT} + {3429478800 7200 1 WAST} + {3447619200 3600 0 WAT} + {3460928400 7200 1 WAST} + {3479673600 3600 0 WAT} + {3492378000 7200 1 WAST} + {3511123200 3600 0 WAT} + {3524432400 7200 1 WAST} + {3542572800 3600 0 WAT} + {3555882000 7200 1 WAST} + {3574022400 3600 0 WAT} + {3587331600 7200 1 WAST} + {3605472000 3600 0 WAT} + {3618781200 7200 1 WAST} + {3636921600 3600 0 WAT} + {3650230800 7200 1 WAST} + {3668976000 3600 0 WAT} + {3681680400 7200 1 WAST} + {3700425600 3600 0 WAT} + {3713734800 7200 1 WAST} + {3731875200 3600 0 WAT} + {3745184400 7200 1 WAST} + {3763324800 3600 0 WAT} + {3776634000 7200 1 WAST} + {3794774400 3600 0 WAT} + {3808083600 7200 1 WAST} + {3826224000 3600 0 WAT} + {3839533200 7200 1 WAST} + {3858278400 3600 0 WAT} + {3871587600 7200 1 WAST} + {3889728000 3600 0 WAT} + {3903037200 7200 1 WAST} + {3921177600 3600 0 WAT} + {3934486800 7200 1 WAST} + {3952627200 3600 0 WAT} + {3965936400 7200 1 WAST} + {3984076800 3600 0 WAT} + {3997386000 7200 1 WAST} + {4016131200 3600 0 WAT} + {4028835600 7200 1 WAST} + {4047580800 3600 0 WAT} + {4060890000 7200 1 WAST} + {4079030400 3600 0 WAT} + {4092339600 7200 1 WAST} +} diff --git a/library/tzdata/America/Adak b/library/tzdata/America/Adak index cfa868e..f3c5e5c 100644 --- a/library/tzdata/America/Adak +++ b/library/tzdata/America/Adak @@ -1,276 +1,276 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Adak) { - {-9223372036854775808 44001 0 LMT} - {-3225356001 -42398 0 LMT} - {-2188944802 -39600 0 NST} - {-883573200 -39600 0 NST} - {-880196400 -36000 1 NWT} - {-769395600 -36000 1 NPT} - {-765374400 -39600 0 NST} - {-757342800 -39600 0 NST} - {-86878800 -39600 0 BST} - {-31496400 -39600 0 BST} - {-21466800 -36000 1 BDT} - {-5745600 -39600 0 BST} - {9982800 -36000 1 BDT} - {25704000 -39600 0 BST} - {41432400 -36000 1 BDT} - {57758400 -39600 0 BST} - {73486800 -36000 1 BDT} - {89208000 -39600 0 BST} - {104936400 -36000 1 BDT} - {120657600 -39600 0 BST} - {126709200 -36000 1 BDT} - {152107200 -39600 0 BST} - {162392400 -36000 1 BDT} - {183556800 -39600 0 BST} - {199285200 -36000 1 BDT} - {215611200 -39600 0 BST} - {230734800 -36000 1 BDT} - {247060800 -39600 0 BST} - {262789200 -36000 1 BDT} - {278510400 -39600 0 BST} - {294238800 -36000 1 BDT} - {309960000 -39600 0 BST} - {325688400 -36000 1 BDT} - {341409600 -39600 0 BST} - {357138000 -36000 1 BDT} - {372859200 -39600 0 BST} - {388587600 -36000 1 BDT} - {404913600 -39600 0 BST} - {420037200 -36000 1 BDT} - {439034400 -36000 0 HAST} - {452088000 -32400 1 HADT} - {467809200 -36000 0 HAST} - {483537600 -32400 1 HADT} - {499258800 -36000 0 HAST} - {514987200 -32400 1 HADT} - {530708400 -36000 0 HAST} - {544622400 -32400 1 HADT} - {562158000 -36000 0 HAST} - {576072000 -32400 1 HADT} - {594212400 -36000 0 HAST} - {607521600 -32400 1 HADT} - {625662000 -36000 0 HAST} - {638971200 -32400 1 HADT} - {657111600 -36000 0 HAST} - {671025600 -32400 1 HADT} - {688561200 -36000 0 HAST} - {702475200 -32400 1 HADT} - {720010800 -36000 0 HAST} - {733924800 -32400 1 HADT} - {752065200 -36000 0 HAST} - {765374400 -32400 1 HADT} - {783514800 -36000 0 HAST} - {796824000 -32400 1 HADT} - {814964400 -36000 0 HAST} - {828878400 -32400 1 HADT} - {846414000 -36000 0 HAST} - {860328000 -32400 1 HADT} - {877863600 -36000 0 HAST} - {891777600 -32400 1 HADT} - {909313200 -36000 0 HAST} - {923227200 -32400 1 HADT} - {941367600 -36000 0 HAST} - {954676800 -32400 1 HADT} - {972817200 -36000 0 HAST} - {986126400 -32400 1 HADT} - {1004266800 -36000 0 HAST} - {1018180800 -32400 1 HADT} - {1035716400 -36000 0 HAST} - {1049630400 -32400 1 HADT} - {1067166000 -36000 0 HAST} - {1081080000 -32400 1 HADT} - {1099220400 -36000 0 HAST} - {1112529600 -32400 1 HADT} - {1130670000 -36000 0 HAST} - {1143979200 -32400 1 HADT} - {1162119600 -36000 0 HAST} - {1173614400 -32400 1 HADT} - {1194174000 -36000 0 HAST} - {1205064000 -32400 1 HADT} - {1225623600 -36000 0 HAST} - {1236513600 -32400 1 HADT} - {1257073200 -36000 0 HAST} - {1268568000 -32400 1 HADT} - {1289127600 -36000 0 HAST} - {1300017600 -32400 1 HADT} - {1320577200 -36000 0 HAST} - {1331467200 -32400 1 HADT} - {1352026800 -36000 0 HAST} - {1362916800 -32400 1 HADT} - {1383476400 -36000 0 HAST} - {1394366400 -32400 1 HADT} - {1414926000 -36000 0 HAST} - {1425816000 -32400 1 HADT} - {1446375600 -36000 0 HAST} - {1457870400 -32400 1 HADT} - {1478430000 -36000 0 HAST} - {1489320000 -32400 1 HADT} - {1509879600 -36000 0 HAST} - {1520769600 -32400 1 HADT} - {1541329200 -36000 0 HAST} - {1552219200 -32400 1 HADT} - {1572778800 -36000 0 HAST} - {1583668800 -32400 1 HADT} - {1604228400 -36000 0 HAST} - {1615723200 -32400 1 HADT} - {1636282800 -36000 0 HAST} - {1647172800 -32400 1 HADT} - {1667732400 -36000 0 HAST} - {1678622400 -32400 1 HADT} - {1699182000 -36000 0 HAST} - {1710072000 -32400 1 HADT} - {1730631600 -36000 0 HAST} - {1741521600 -32400 1 HADT} - {1762081200 -36000 0 HAST} - {1772971200 -32400 1 HADT} - {1793530800 -36000 0 HAST} - {1805025600 -32400 1 HADT} - {1825585200 -36000 0 HAST} - {1836475200 -32400 1 HADT} - {1857034800 -36000 0 HAST} - {1867924800 -32400 1 HADT} - {1888484400 -36000 0 HAST} - {1899374400 -32400 1 HADT} - {1919934000 -36000 0 HAST} - {1930824000 -32400 1 HADT} - {1951383600 -36000 0 HAST} - {1962878400 -32400 1 HADT} - {1983438000 -36000 0 HAST} - {1994328000 -32400 1 HADT} - {2014887600 -36000 0 HAST} - {2025777600 -32400 1 HADT} - {2046337200 -36000 0 HAST} - {2057227200 -32400 1 HADT} - {2077786800 -36000 0 HAST} - {2088676800 -32400 1 HADT} - {2109236400 -36000 0 HAST} - {2120126400 -32400 1 HADT} - {2140686000 -36000 0 HAST} - {2152180800 -32400 1 HADT} - {2172740400 -36000 0 HAST} - {2183630400 -32400 1 HADT} - {2204190000 -36000 0 HAST} - {2215080000 -32400 1 HADT} - {2235639600 -36000 0 HAST} - {2246529600 -32400 1 HADT} - {2267089200 -36000 0 HAST} - {2277979200 -32400 1 HADT} - {2298538800 -36000 0 HAST} - {2309428800 -32400 1 HADT} - {2329988400 -36000 0 HAST} - {2341483200 -32400 1 HADT} - {2362042800 -36000 0 HAST} - {2372932800 -32400 1 HADT} - {2393492400 -36000 0 HAST} - {2404382400 -32400 1 HADT} - {2424942000 -36000 0 HAST} - {2435832000 -32400 1 HADT} - {2456391600 -36000 0 HAST} - {2467281600 -32400 1 HADT} - {2487841200 -36000 0 HAST} - {2499336000 -32400 1 HADT} - {2519895600 -36000 0 HAST} - {2530785600 -32400 1 HADT} - {2551345200 -36000 0 HAST} - {2562235200 -32400 1 HADT} - {2582794800 -36000 0 HAST} - {2593684800 -32400 1 HADT} - {2614244400 -36000 0 HAST} - {2625134400 -32400 1 HADT} - {2645694000 -36000 0 HAST} - {2656584000 -32400 1 HADT} - {2677143600 -36000 0 HAST} - {2688638400 -32400 1 HADT} - {2709198000 -36000 0 HAST} - {2720088000 -32400 1 HADT} - {2740647600 -36000 0 HAST} - {2751537600 -32400 1 HADT} - {2772097200 -36000 0 HAST} - {2782987200 -32400 1 HADT} - {2803546800 -36000 0 HAST} - {2814436800 -32400 1 HADT} - {2834996400 -36000 0 HAST} - {2846491200 -32400 1 HADT} - {2867050800 -36000 0 HAST} - {2877940800 -32400 1 HADT} - {2898500400 -36000 0 HAST} - {2909390400 -32400 1 HADT} - {2929950000 -36000 0 HAST} - {2940840000 -32400 1 HADT} - {2961399600 -36000 0 HAST} - {2972289600 -32400 1 HADT} - {2992849200 -36000 0 HAST} - {3003739200 -32400 1 HADT} - {3024298800 -36000 0 HAST} - {3035793600 -32400 1 HADT} - {3056353200 -36000 0 HAST} - {3067243200 -32400 1 HADT} - {3087802800 -36000 0 HAST} - {3098692800 -32400 1 HADT} - {3119252400 -36000 0 HAST} - {3130142400 -32400 1 HADT} - {3150702000 -36000 0 HAST} - {3161592000 -32400 1 HADT} - {3182151600 -36000 0 HAST} - {3193041600 -32400 1 HADT} - {3213601200 -36000 0 HAST} - {3225096000 -32400 1 HADT} - {3245655600 -36000 0 HAST} - {3256545600 -32400 1 HADT} - {3277105200 -36000 0 HAST} - {3287995200 -32400 1 HADT} - {3308554800 -36000 0 HAST} - {3319444800 -32400 1 HADT} - {3340004400 -36000 0 HAST} - {3350894400 -32400 1 HADT} - {3371454000 -36000 0 HAST} - {3382948800 -32400 1 HADT} - {3403508400 -36000 0 HAST} - {3414398400 -32400 1 HADT} - {3434958000 -36000 0 HAST} - {3445848000 -32400 1 HADT} - {3466407600 -36000 0 HAST} - {3477297600 -32400 1 HADT} - {3497857200 -36000 0 HAST} - {3508747200 -32400 1 HADT} - {3529306800 -36000 0 HAST} - {3540196800 -32400 1 HADT} - {3560756400 -36000 0 HAST} - {3572251200 -32400 1 HADT} - {3592810800 -36000 0 HAST} - {3603700800 -32400 1 HADT} - {3624260400 -36000 0 HAST} - {3635150400 -32400 1 HADT} - {3655710000 -36000 0 HAST} - {3666600000 -32400 1 HADT} - {3687159600 -36000 0 HAST} - {3698049600 -32400 1 HADT} - {3718609200 -36000 0 HAST} - {3730104000 -32400 1 HADT} - {3750663600 -36000 0 HAST} - {3761553600 -32400 1 HADT} - {3782113200 -36000 0 HAST} - {3793003200 -32400 1 HADT} - {3813562800 -36000 0 HAST} - {3824452800 -32400 1 HADT} - {3845012400 -36000 0 HAST} - {3855902400 -32400 1 HADT} - {3876462000 -36000 0 HAST} - {3887352000 -32400 1 HADT} - {3907911600 -36000 0 HAST} - {3919406400 -32400 1 HADT} - {3939966000 -36000 0 HAST} - {3950856000 -32400 1 HADT} - {3971415600 -36000 0 HAST} - {3982305600 -32400 1 HADT} - {4002865200 -36000 0 HAST} - {4013755200 -32400 1 HADT} - {4034314800 -36000 0 HAST} - {4045204800 -32400 1 HADT} - {4065764400 -36000 0 HAST} - {4076654400 -32400 1 HADT} - {4097214000 -36000 0 HAST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Adak) { + {-9223372036854775808 44001 0 LMT} + {-3225356001 -42398 0 LMT} + {-2188944802 -39600 0 NST} + {-883573200 -39600 0 NST} + {-880196400 -36000 1 NWT} + {-769395600 -36000 1 NPT} + {-765374400 -39600 0 NST} + {-757342800 -39600 0 NST} + {-86878800 -39600 0 BST} + {-31496400 -39600 0 BST} + {-21466800 -36000 1 BDT} + {-5745600 -39600 0 BST} + {9982800 -36000 1 BDT} + {25704000 -39600 0 BST} + {41432400 -36000 1 BDT} + {57758400 -39600 0 BST} + {73486800 -36000 1 BDT} + {89208000 -39600 0 BST} + {104936400 -36000 1 BDT} + {120657600 -39600 0 BST} + {126709200 -36000 1 BDT} + {152107200 -39600 0 BST} + {162392400 -36000 1 BDT} + {183556800 -39600 0 BST} + {199285200 -36000 1 BDT} + {215611200 -39600 0 BST} + {230734800 -36000 1 BDT} + {247060800 -39600 0 BST} + {262789200 -36000 1 BDT} + {278510400 -39600 0 BST} + {294238800 -36000 1 BDT} + {309960000 -39600 0 BST} + {325688400 -36000 1 BDT} + {341409600 -39600 0 BST} + {357138000 -36000 1 BDT} + {372859200 -39600 0 BST} + {388587600 -36000 1 BDT} + {404913600 -39600 0 BST} + {420037200 -36000 1 BDT} + {439034400 -36000 0 HAST} + {452088000 -32400 1 HADT} + {467809200 -36000 0 HAST} + {483537600 -32400 1 HADT} + {499258800 -36000 0 HAST} + {514987200 -32400 1 HADT} + {530708400 -36000 0 HAST} + {544622400 -32400 1 HADT} + {562158000 -36000 0 HAST} + {576072000 -32400 1 HADT} + {594212400 -36000 0 HAST} + {607521600 -32400 1 HADT} + {625662000 -36000 0 HAST} + {638971200 -32400 1 HADT} + {657111600 -36000 0 HAST} + {671025600 -32400 1 HADT} + {688561200 -36000 0 HAST} + {702475200 -32400 1 HADT} + {720010800 -36000 0 HAST} + {733924800 -32400 1 HADT} + {752065200 -36000 0 HAST} + {765374400 -32400 1 HADT} + {783514800 -36000 0 HAST} + {796824000 -32400 1 HADT} + {814964400 -36000 0 HAST} + {828878400 -32400 1 HADT} + {846414000 -36000 0 HAST} + {860328000 -32400 1 HADT} + {877863600 -36000 0 HAST} + {891777600 -32400 1 HADT} + {909313200 -36000 0 HAST} + {923227200 -32400 1 HADT} + {941367600 -36000 0 HAST} + {954676800 -32400 1 HADT} + {972817200 -36000 0 HAST} + {986126400 -32400 1 HADT} + {1004266800 -36000 0 HAST} + {1018180800 -32400 1 HADT} + {1035716400 -36000 0 HAST} + {1049630400 -32400 1 HADT} + {1067166000 -36000 0 HAST} + {1081080000 -32400 1 HADT} + {1099220400 -36000 0 HAST} + {1112529600 -32400 1 HADT} + {1130670000 -36000 0 HAST} + {1143979200 -32400 1 HADT} + {1162119600 -36000 0 HAST} + {1173614400 -32400 1 HADT} + {1194174000 -36000 0 HAST} + {1205064000 -32400 1 HADT} + {1225623600 -36000 0 HAST} + {1236513600 -32400 1 HADT} + {1257073200 -36000 0 HAST} + {1268568000 -32400 1 HADT} + {1289127600 -36000 0 HAST} + {1300017600 -32400 1 HADT} + {1320577200 -36000 0 HAST} + {1331467200 -32400 1 HADT} + {1352026800 -36000 0 HAST} + {1362916800 -32400 1 HADT} + {1383476400 -36000 0 HAST} + {1394366400 -32400 1 HADT} + {1414926000 -36000 0 HAST} + {1425816000 -32400 1 HADT} + {1446375600 -36000 0 HAST} + {1457870400 -32400 1 HADT} + {1478430000 -36000 0 HAST} + {1489320000 -32400 1 HADT} + {1509879600 -36000 0 HAST} + {1520769600 -32400 1 HADT} + {1541329200 -36000 0 HAST} + {1552219200 -32400 1 HADT} + {1572778800 -36000 0 HAST} + {1583668800 -32400 1 HADT} + {1604228400 -36000 0 HAST} + {1615723200 -32400 1 HADT} + {1636282800 -36000 0 HAST} + {1647172800 -32400 1 HADT} + {1667732400 -36000 0 HAST} + {1678622400 -32400 1 HADT} + {1699182000 -36000 0 HAST} + {1710072000 -32400 1 HADT} + {1730631600 -36000 0 HAST} + {1741521600 -32400 1 HADT} + {1762081200 -36000 0 HAST} + {1772971200 -32400 1 HADT} + {1793530800 -36000 0 HAST} + {1805025600 -32400 1 HADT} + {1825585200 -36000 0 HAST} + {1836475200 -32400 1 HADT} + {1857034800 -36000 0 HAST} + {1867924800 -32400 1 HADT} + {1888484400 -36000 0 HAST} + {1899374400 -32400 1 HADT} + {1919934000 -36000 0 HAST} + {1930824000 -32400 1 HADT} + {1951383600 -36000 0 HAST} + {1962878400 -32400 1 HADT} + {1983438000 -36000 0 HAST} + {1994328000 -32400 1 HADT} + {2014887600 -36000 0 HAST} + {2025777600 -32400 1 HADT} + {2046337200 -36000 0 HAST} + {2057227200 -32400 1 HADT} + {2077786800 -36000 0 HAST} + {2088676800 -32400 1 HADT} + {2109236400 -36000 0 HAST} + {2120126400 -32400 1 HADT} + {2140686000 -36000 0 HAST} + {2152180800 -32400 1 HADT} + {2172740400 -36000 0 HAST} + {2183630400 -32400 1 HADT} + {2204190000 -36000 0 HAST} + {2215080000 -32400 1 HADT} + {2235639600 -36000 0 HAST} + {2246529600 -32400 1 HADT} + {2267089200 -36000 0 HAST} + {2277979200 -32400 1 HADT} + {2298538800 -36000 0 HAST} + {2309428800 -32400 1 HADT} + {2329988400 -36000 0 HAST} + {2341483200 -32400 1 HADT} + {2362042800 -36000 0 HAST} + {2372932800 -32400 1 HADT} + {2393492400 -36000 0 HAST} + {2404382400 -32400 1 HADT} + {2424942000 -36000 0 HAST} + {2435832000 -32400 1 HADT} + {2456391600 -36000 0 HAST} + {2467281600 -32400 1 HADT} + {2487841200 -36000 0 HAST} + {2499336000 -32400 1 HADT} + {2519895600 -36000 0 HAST} + {2530785600 -32400 1 HADT} + {2551345200 -36000 0 HAST} + {2562235200 -32400 1 HADT} + {2582794800 -36000 0 HAST} + {2593684800 -32400 1 HADT} + {2614244400 -36000 0 HAST} + {2625134400 -32400 1 HADT} + {2645694000 -36000 0 HAST} + {2656584000 -32400 1 HADT} + {2677143600 -36000 0 HAST} + {2688638400 -32400 1 HADT} + {2709198000 -36000 0 HAST} + {2720088000 -32400 1 HADT} + {2740647600 -36000 0 HAST} + {2751537600 -32400 1 HADT} + {2772097200 -36000 0 HAST} + {2782987200 -32400 1 HADT} + {2803546800 -36000 0 HAST} + {2814436800 -32400 1 HADT} + {2834996400 -36000 0 HAST} + {2846491200 -32400 1 HADT} + {2867050800 -36000 0 HAST} + {2877940800 -32400 1 HADT} + {2898500400 -36000 0 HAST} + {2909390400 -32400 1 HADT} + {2929950000 -36000 0 HAST} + {2940840000 -32400 1 HADT} + {2961399600 -36000 0 HAST} + {2972289600 -32400 1 HADT} + {2992849200 -36000 0 HAST} + {3003739200 -32400 1 HADT} + {3024298800 -36000 0 HAST} + {3035793600 -32400 1 HADT} + {3056353200 -36000 0 HAST} + {3067243200 -32400 1 HADT} + {3087802800 -36000 0 HAST} + {3098692800 -32400 1 HADT} + {3119252400 -36000 0 HAST} + {3130142400 -32400 1 HADT} + {3150702000 -36000 0 HAST} + {3161592000 -32400 1 HADT} + {3182151600 -36000 0 HAST} + {3193041600 -32400 1 HADT} + {3213601200 -36000 0 HAST} + {3225096000 -32400 1 HADT} + {3245655600 -36000 0 HAST} + {3256545600 -32400 1 HADT} + {3277105200 -36000 0 HAST} + {3287995200 -32400 1 HADT} + {3308554800 -36000 0 HAST} + {3319444800 -32400 1 HADT} + {3340004400 -36000 0 HAST} + {3350894400 -32400 1 HADT} + {3371454000 -36000 0 HAST} + {3382948800 -32400 1 HADT} + {3403508400 -36000 0 HAST} + {3414398400 -32400 1 HADT} + {3434958000 -36000 0 HAST} + {3445848000 -32400 1 HADT} + {3466407600 -36000 0 HAST} + {3477297600 -32400 1 HADT} + {3497857200 -36000 0 HAST} + {3508747200 -32400 1 HADT} + {3529306800 -36000 0 HAST} + {3540196800 -32400 1 HADT} + {3560756400 -36000 0 HAST} + {3572251200 -32400 1 HADT} + {3592810800 -36000 0 HAST} + {3603700800 -32400 1 HADT} + {3624260400 -36000 0 HAST} + {3635150400 -32400 1 HADT} + {3655710000 -36000 0 HAST} + {3666600000 -32400 1 HADT} + {3687159600 -36000 0 HAST} + {3698049600 -32400 1 HADT} + {3718609200 -36000 0 HAST} + {3730104000 -32400 1 HADT} + {3750663600 -36000 0 HAST} + {3761553600 -32400 1 HADT} + {3782113200 -36000 0 HAST} + {3793003200 -32400 1 HADT} + {3813562800 -36000 0 HAST} + {3824452800 -32400 1 HADT} + {3845012400 -36000 0 HAST} + {3855902400 -32400 1 HADT} + {3876462000 -36000 0 HAST} + {3887352000 -32400 1 HADT} + {3907911600 -36000 0 HAST} + {3919406400 -32400 1 HADT} + {3939966000 -36000 0 HAST} + {3950856000 -32400 1 HADT} + {3971415600 -36000 0 HAST} + {3982305600 -32400 1 HADT} + {4002865200 -36000 0 HAST} + {4013755200 -32400 1 HADT} + {4034314800 -36000 0 HAST} + {4045204800 -32400 1 HADT} + {4065764400 -36000 0 HAST} + {4076654400 -32400 1 HADT} + {4097214000 -36000 0 HAST} +} diff --git a/library/tzdata/America/Anchorage b/library/tzdata/America/Anchorage index b8f2e25..e02dd01 100644 --- a/library/tzdata/America/Anchorage +++ b/library/tzdata/America/Anchorage @@ -1,276 +1,276 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Anchorage) { - {-9223372036854775808 50424 0 LMT} - {-3225362424 -35976 0 LMT} - {-2188951224 -36000 0 CAT} - {-883576800 -36000 0 CAWT} - {-880200000 -32400 1 CAWT} - {-769395600 -32400 0 CAPT} - {-765378000 -36000 0 CAPT} - {-757346400 -36000 0 CAT} - {-86882400 -36000 0 AHST} - {-31500000 -36000 0 AHST} - {-21470400 -32400 1 AHDT} - {-5749200 -36000 0 AHST} - {9979200 -32400 1 AHDT} - {25700400 -36000 0 AHST} - {41428800 -32400 1 AHDT} - {57754800 -36000 0 AHST} - {73483200 -32400 1 AHDT} - {89204400 -36000 0 AHST} - {104932800 -32400 1 AHDT} - {120654000 -36000 0 AHST} - {126705600 -32400 1 AHDT} - {152103600 -36000 0 AHST} - {162388800 -32400 1 AHDT} - {183553200 -36000 0 AHST} - {199281600 -32400 1 AHDT} - {215607600 -36000 0 AHST} - {230731200 -32400 1 AHDT} - {247057200 -36000 0 AHST} - {262785600 -32400 1 AHDT} - {278506800 -36000 0 AHST} - {294235200 -32400 1 AHDT} - {309956400 -36000 0 AHST} - {325684800 -32400 1 AHDT} - {341406000 -36000 0 AHST} - {357134400 -32400 1 AHDT} - {372855600 -36000 0 AHST} - {388584000 -32400 1 AHDT} - {404910000 -36000 0 AHST} - {420033600 -32400 1 AHDT} - {439030800 -32400 0 AKST} - {452084400 -28800 1 AKDT} - {467805600 -32400 0 AKST} - {483534000 -28800 1 AKDT} - {499255200 -32400 0 AKST} - {514983600 -28800 1 AKDT} - {530704800 -32400 0 AKST} - {544618800 -28800 1 AKDT} - {562154400 -32400 0 AKST} - {576068400 -28800 1 AKDT} - {594208800 -32400 0 AKST} - {607518000 -28800 1 AKDT} - {625658400 -32400 0 AKST} - {638967600 -28800 1 AKDT} - {657108000 -32400 0 AKST} - {671022000 -28800 1 AKDT} - {688557600 -32400 0 AKST} - {702471600 -28800 1 AKDT} - {720007200 -32400 0 AKST} - {733921200 -28800 1 AKDT} - {752061600 -32400 0 AKST} - {765370800 -28800 1 AKDT} - {783511200 -32400 0 AKST} - {796820400 -28800 1 AKDT} - {814960800 -32400 0 AKST} - {828874800 -28800 1 AKDT} - {846410400 -32400 0 AKST} - {860324400 -28800 1 AKDT} - {877860000 -32400 0 AKST} - {891774000 -28800 1 AKDT} - {909309600 -32400 0 AKST} - {923223600 -28800 1 AKDT} - {941364000 -32400 0 AKST} - {954673200 -28800 1 AKDT} - {972813600 -32400 0 AKST} - {986122800 -28800 1 AKDT} - {1004263200 -32400 0 AKST} - {1018177200 -28800 1 AKDT} - {1035712800 -32400 0 AKST} - {1049626800 -28800 1 AKDT} - {1067162400 -32400 0 AKST} - {1081076400 -28800 1 AKDT} - {1099216800 -32400 0 AKST} - {1112526000 -28800 1 AKDT} - {1130666400 -32400 0 AKST} - {1143975600 -28800 1 AKDT} - {1162116000 -32400 0 AKST} - {1173610800 -28800 1 AKDT} - {1194170400 -32400 0 AKST} - {1205060400 -28800 1 AKDT} - {1225620000 -32400 0 AKST} - {1236510000 -28800 1 AKDT} - {1257069600 -32400 0 AKST} - {1268564400 -28800 1 AKDT} - {1289124000 -32400 0 AKST} - {1300014000 -28800 1 AKDT} - {1320573600 -32400 0 AKST} - {1331463600 -28800 1 AKDT} - {1352023200 -32400 0 AKST} - {1362913200 -28800 1 AKDT} - {1383472800 -32400 0 AKST} - {1394362800 -28800 1 AKDT} - {1414922400 -32400 0 AKST} - {1425812400 -28800 1 AKDT} - {1446372000 -32400 0 AKST} - {1457866800 -28800 1 AKDT} - {1478426400 -32400 0 AKST} - {1489316400 -28800 1 AKDT} - {1509876000 -32400 0 AKST} - {1520766000 -28800 1 AKDT} - {1541325600 -32400 0 AKST} - {1552215600 -28800 1 AKDT} - {1572775200 -32400 0 AKST} - {1583665200 -28800 1 AKDT} - {1604224800 -32400 0 AKST} - {1615719600 -28800 1 AKDT} - {1636279200 -32400 0 AKST} - {1647169200 -28800 1 AKDT} - {1667728800 -32400 0 AKST} - {1678618800 -28800 1 AKDT} - {1699178400 -32400 0 AKST} - {1710068400 -28800 1 AKDT} - {1730628000 -32400 0 AKST} - {1741518000 -28800 1 AKDT} - {1762077600 -32400 0 AKST} - {1772967600 -28800 1 AKDT} - {1793527200 -32400 0 AKST} - {1805022000 -28800 1 AKDT} - {1825581600 -32400 0 AKST} - {1836471600 -28800 1 AKDT} - {1857031200 -32400 0 AKST} - {1867921200 -28800 1 AKDT} - {1888480800 -32400 0 AKST} - {1899370800 -28800 1 AKDT} - {1919930400 -32400 0 AKST} - {1930820400 -28800 1 AKDT} - {1951380000 -32400 0 AKST} - {1962874800 -28800 1 AKDT} - {1983434400 -32400 0 AKST} - {1994324400 -28800 1 AKDT} - {2014884000 -32400 0 AKST} - {2025774000 -28800 1 AKDT} - {2046333600 -32400 0 AKST} - {2057223600 -28800 1 AKDT} - {2077783200 -32400 0 AKST} - {2088673200 -28800 1 AKDT} - {2109232800 -32400 0 AKST} - {2120122800 -28800 1 AKDT} - {2140682400 -32400 0 AKST} - {2152177200 -28800 1 AKDT} - {2172736800 -32400 0 AKST} - {2183626800 -28800 1 AKDT} - {2204186400 -32400 0 AKST} - {2215076400 -28800 1 AKDT} - {2235636000 -32400 0 AKST} - {2246526000 -28800 1 AKDT} - {2267085600 -32400 0 AKST} - {2277975600 -28800 1 AKDT} - {2298535200 -32400 0 AKST} - {2309425200 -28800 1 AKDT} - {2329984800 -32400 0 AKST} - {2341479600 -28800 1 AKDT} - {2362039200 -32400 0 AKST} - {2372929200 -28800 1 AKDT} - {2393488800 -32400 0 AKST} - {2404378800 -28800 1 AKDT} - {2424938400 -32400 0 AKST} - {2435828400 -28800 1 AKDT} - {2456388000 -32400 0 AKST} - {2467278000 -28800 1 AKDT} - {2487837600 -32400 0 AKST} - {2499332400 -28800 1 AKDT} - {2519892000 -32400 0 AKST} - {2530782000 -28800 1 AKDT} - {2551341600 -32400 0 AKST} - {2562231600 -28800 1 AKDT} - {2582791200 -32400 0 AKST} - {2593681200 -28800 1 AKDT} - {2614240800 -32400 0 AKST} - {2625130800 -28800 1 AKDT} - {2645690400 -32400 0 AKST} - {2656580400 -28800 1 AKDT} - {2677140000 -32400 0 AKST} - {2688634800 -28800 1 AKDT} - {2709194400 -32400 0 AKST} - {2720084400 -28800 1 AKDT} - {2740644000 -32400 0 AKST} - {2751534000 -28800 1 AKDT} - {2772093600 -32400 0 AKST} - {2782983600 -28800 1 AKDT} - {2803543200 -32400 0 AKST} - {2814433200 -28800 1 AKDT} - {2834992800 -32400 0 AKST} - {2846487600 -28800 1 AKDT} - {2867047200 -32400 0 AKST} - {2877937200 -28800 1 AKDT} - {2898496800 -32400 0 AKST} - {2909386800 -28800 1 AKDT} - {2929946400 -32400 0 AKST} - {2940836400 -28800 1 AKDT} - {2961396000 -32400 0 AKST} - {2972286000 -28800 1 AKDT} - {2992845600 -32400 0 AKST} - {3003735600 -28800 1 AKDT} - {3024295200 -32400 0 AKST} - {3035790000 -28800 1 AKDT} - {3056349600 -32400 0 AKST} - {3067239600 -28800 1 AKDT} - {3087799200 -32400 0 AKST} - {3098689200 -28800 1 AKDT} - {3119248800 -32400 0 AKST} - {3130138800 -28800 1 AKDT} - {3150698400 -32400 0 AKST} - {3161588400 -28800 1 AKDT} - {3182148000 -32400 0 AKST} - {3193038000 -28800 1 AKDT} - {3213597600 -32400 0 AKST} - {3225092400 -28800 1 AKDT} - {3245652000 -32400 0 AKST} - {3256542000 -28800 1 AKDT} - {3277101600 -32400 0 AKST} - {3287991600 -28800 1 AKDT} - {3308551200 -32400 0 AKST} - {3319441200 -28800 1 AKDT} - {3340000800 -32400 0 AKST} - {3350890800 -28800 1 AKDT} - {3371450400 -32400 0 AKST} - {3382945200 -28800 1 AKDT} - {3403504800 -32400 0 AKST} - {3414394800 -28800 1 AKDT} - {3434954400 -32400 0 AKST} - {3445844400 -28800 1 AKDT} - {3466404000 -32400 0 AKST} - {3477294000 -28800 1 AKDT} - {3497853600 -32400 0 AKST} - {3508743600 -28800 1 AKDT} - {3529303200 -32400 0 AKST} - {3540193200 -28800 1 AKDT} - {3560752800 -32400 0 AKST} - {3572247600 -28800 1 AKDT} - {3592807200 -32400 0 AKST} - {3603697200 -28800 1 AKDT} - {3624256800 -32400 0 AKST} - {3635146800 -28800 1 AKDT} - {3655706400 -32400 0 AKST} - {3666596400 -28800 1 AKDT} - {3687156000 -32400 0 AKST} - {3698046000 -28800 1 AKDT} - {3718605600 -32400 0 AKST} - {3730100400 -28800 1 AKDT} - {3750660000 -32400 0 AKST} - {3761550000 -28800 1 AKDT} - {3782109600 -32400 0 AKST} - {3792999600 -28800 1 AKDT} - {3813559200 -32400 0 AKST} - {3824449200 -28800 1 AKDT} - {3845008800 -32400 0 AKST} - {3855898800 -28800 1 AKDT} - {3876458400 -32400 0 AKST} - {3887348400 -28800 1 AKDT} - {3907908000 -32400 0 AKST} - {3919402800 -28800 1 AKDT} - {3939962400 -32400 0 AKST} - {3950852400 -28800 1 AKDT} - {3971412000 -32400 0 AKST} - {3982302000 -28800 1 AKDT} - {4002861600 -32400 0 AKST} - {4013751600 -28800 1 AKDT} - {4034311200 -32400 0 AKST} - {4045201200 -28800 1 AKDT} - {4065760800 -32400 0 AKST} - {4076650800 -28800 1 AKDT} - {4097210400 -32400 0 AKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Anchorage) { + {-9223372036854775808 50424 0 LMT} + {-3225362424 -35976 0 LMT} + {-2188951224 -36000 0 CAT} + {-883576800 -36000 0 CAWT} + {-880200000 -32400 1 CAWT} + {-769395600 -32400 0 CAPT} + {-765378000 -36000 0 CAPT} + {-757346400 -36000 0 CAT} + {-86882400 -36000 0 AHST} + {-31500000 -36000 0 AHST} + {-21470400 -32400 1 AHDT} + {-5749200 -36000 0 AHST} + {9979200 -32400 1 AHDT} + {25700400 -36000 0 AHST} + {41428800 -32400 1 AHDT} + {57754800 -36000 0 AHST} + {73483200 -32400 1 AHDT} + {89204400 -36000 0 AHST} + {104932800 -32400 1 AHDT} + {120654000 -36000 0 AHST} + {126705600 -32400 1 AHDT} + {152103600 -36000 0 AHST} + {162388800 -32400 1 AHDT} + {183553200 -36000 0 AHST} + {199281600 -32400 1 AHDT} + {215607600 -36000 0 AHST} + {230731200 -32400 1 AHDT} + {247057200 -36000 0 AHST} + {262785600 -32400 1 AHDT} + {278506800 -36000 0 AHST} + {294235200 -32400 1 AHDT} + {309956400 -36000 0 AHST} + {325684800 -32400 1 AHDT} + {341406000 -36000 0 AHST} + {357134400 -32400 1 AHDT} + {372855600 -36000 0 AHST} + {388584000 -32400 1 AHDT} + {404910000 -36000 0 AHST} + {420033600 -32400 1 AHDT} + {439030800 -32400 0 AKST} + {452084400 -28800 1 AKDT} + {467805600 -32400 0 AKST} + {483534000 -28800 1 AKDT} + {499255200 -32400 0 AKST} + {514983600 -28800 1 AKDT} + {530704800 -32400 0 AKST} + {544618800 -28800 1 AKDT} + {562154400 -32400 0 AKST} + {576068400 -28800 1 AKDT} + {594208800 -32400 0 AKST} + {607518000 -28800 1 AKDT} + {625658400 -32400 0 AKST} + {638967600 -28800 1 AKDT} + {657108000 -32400 0 AKST} + {671022000 -28800 1 AKDT} + {688557600 -32400 0 AKST} + {702471600 -28800 1 AKDT} + {720007200 -32400 0 AKST} + {733921200 -28800 1 AKDT} + {752061600 -32400 0 AKST} + {765370800 -28800 1 AKDT} + {783511200 -32400 0 AKST} + {796820400 -28800 1 AKDT} + {814960800 -32400 0 AKST} + {828874800 -28800 1 AKDT} + {846410400 -32400 0 AKST} + {860324400 -28800 1 AKDT} + {877860000 -32400 0 AKST} + {891774000 -28800 1 AKDT} + {909309600 -32400 0 AKST} + {923223600 -28800 1 AKDT} + {941364000 -32400 0 AKST} + {954673200 -28800 1 AKDT} + {972813600 -32400 0 AKST} + {986122800 -28800 1 AKDT} + {1004263200 -32400 0 AKST} + {1018177200 -28800 1 AKDT} + {1035712800 -32400 0 AKST} + {1049626800 -28800 1 AKDT} + {1067162400 -32400 0 AKST} + {1081076400 -28800 1 AKDT} + {1099216800 -32400 0 AKST} + {1112526000 -28800 1 AKDT} + {1130666400 -32400 0 AKST} + {1143975600 -28800 1 AKDT} + {1162116000 -32400 0 AKST} + {1173610800 -28800 1 AKDT} + {1194170400 -32400 0 AKST} + {1205060400 -28800 1 AKDT} + {1225620000 -32400 0 AKST} + {1236510000 -28800 1 AKDT} + {1257069600 -32400 0 AKST} + {1268564400 -28800 1 AKDT} + {1289124000 -32400 0 AKST} + {1300014000 -28800 1 AKDT} + {1320573600 -32400 0 AKST} + {1331463600 -28800 1 AKDT} + {1352023200 -32400 0 AKST} + {1362913200 -28800 1 AKDT} + {1383472800 -32400 0 AKST} + {1394362800 -28800 1 AKDT} + {1414922400 -32400 0 AKST} + {1425812400 -28800 1 AKDT} + {1446372000 -32400 0 AKST} + {1457866800 -28800 1 AKDT} + {1478426400 -32400 0 AKST} + {1489316400 -28800 1 AKDT} + {1509876000 -32400 0 AKST} + {1520766000 -28800 1 AKDT} + {1541325600 -32400 0 AKST} + {1552215600 -28800 1 AKDT} + {1572775200 -32400 0 AKST} + {1583665200 -28800 1 AKDT} + {1604224800 -32400 0 AKST} + {1615719600 -28800 1 AKDT} + {1636279200 -32400 0 AKST} + {1647169200 -28800 1 AKDT} + {1667728800 -32400 0 AKST} + {1678618800 -28800 1 AKDT} + {1699178400 -32400 0 AKST} + {1710068400 -28800 1 AKDT} + {1730628000 -32400 0 AKST} + {1741518000 -28800 1 AKDT} + {1762077600 -32400 0 AKST} + {1772967600 -28800 1 AKDT} + {1793527200 -32400 0 AKST} + {1805022000 -28800 1 AKDT} + {1825581600 -32400 0 AKST} + {1836471600 -28800 1 AKDT} + {1857031200 -32400 0 AKST} + {1867921200 -28800 1 AKDT} + {1888480800 -32400 0 AKST} + {1899370800 -28800 1 AKDT} + {1919930400 -32400 0 AKST} + {1930820400 -28800 1 AKDT} + {1951380000 -32400 0 AKST} + {1962874800 -28800 1 AKDT} + {1983434400 -32400 0 AKST} + {1994324400 -28800 1 AKDT} + {2014884000 -32400 0 AKST} + {2025774000 -28800 1 AKDT} + {2046333600 -32400 0 AKST} + {2057223600 -28800 1 AKDT} + {2077783200 -32400 0 AKST} + {2088673200 -28800 1 AKDT} + {2109232800 -32400 0 AKST} + {2120122800 -28800 1 AKDT} + {2140682400 -32400 0 AKST} + {2152177200 -28800 1 AKDT} + {2172736800 -32400 0 AKST} + {2183626800 -28800 1 AKDT} + {2204186400 -32400 0 AKST} + {2215076400 -28800 1 AKDT} + {2235636000 -32400 0 AKST} + {2246526000 -28800 1 AKDT} + {2267085600 -32400 0 AKST} + {2277975600 -28800 1 AKDT} + {2298535200 -32400 0 AKST} + {2309425200 -28800 1 AKDT} + {2329984800 -32400 0 AKST} + {2341479600 -28800 1 AKDT} + {2362039200 -32400 0 AKST} + {2372929200 -28800 1 AKDT} + {2393488800 -32400 0 AKST} + {2404378800 -28800 1 AKDT} + {2424938400 -32400 0 AKST} + {2435828400 -28800 1 AKDT} + {2456388000 -32400 0 AKST} + {2467278000 -28800 1 AKDT} + {2487837600 -32400 0 AKST} + {2499332400 -28800 1 AKDT} + {2519892000 -32400 0 AKST} + {2530782000 -28800 1 AKDT} + {2551341600 -32400 0 AKST} + {2562231600 -28800 1 AKDT} + {2582791200 -32400 0 AKST} + {2593681200 -28800 1 AKDT} + {2614240800 -32400 0 AKST} + {2625130800 -28800 1 AKDT} + {2645690400 -32400 0 AKST} + {2656580400 -28800 1 AKDT} + {2677140000 -32400 0 AKST} + {2688634800 -28800 1 AKDT} + {2709194400 -32400 0 AKST} + {2720084400 -28800 1 AKDT} + {2740644000 -32400 0 AKST} + {2751534000 -28800 1 AKDT} + {2772093600 -32400 0 AKST} + {2782983600 -28800 1 AKDT} + {2803543200 -32400 0 AKST} + {2814433200 -28800 1 AKDT} + {2834992800 -32400 0 AKST} + {2846487600 -28800 1 AKDT} + {2867047200 -32400 0 AKST} + {2877937200 -28800 1 AKDT} + {2898496800 -32400 0 AKST} + {2909386800 -28800 1 AKDT} + {2929946400 -32400 0 AKST} + {2940836400 -28800 1 AKDT} + {2961396000 -32400 0 AKST} + {2972286000 -28800 1 AKDT} + {2992845600 -32400 0 AKST} + {3003735600 -28800 1 AKDT} + {3024295200 -32400 0 AKST} + {3035790000 -28800 1 AKDT} + {3056349600 -32400 0 AKST} + {3067239600 -28800 1 AKDT} + {3087799200 -32400 0 AKST} + {3098689200 -28800 1 AKDT} + {3119248800 -32400 0 AKST} + {3130138800 -28800 1 AKDT} + {3150698400 -32400 0 AKST} + {3161588400 -28800 1 AKDT} + {3182148000 -32400 0 AKST} + {3193038000 -28800 1 AKDT} + {3213597600 -32400 0 AKST} + {3225092400 -28800 1 AKDT} + {3245652000 -32400 0 AKST} + {3256542000 -28800 1 AKDT} + {3277101600 -32400 0 AKST} + {3287991600 -28800 1 AKDT} + {3308551200 -32400 0 AKST} + {3319441200 -28800 1 AKDT} + {3340000800 -32400 0 AKST} + {3350890800 -28800 1 AKDT} + {3371450400 -32400 0 AKST} + {3382945200 -28800 1 AKDT} + {3403504800 -32400 0 AKST} + {3414394800 -28800 1 AKDT} + {3434954400 -32400 0 AKST} + {3445844400 -28800 1 AKDT} + {3466404000 -32400 0 AKST} + {3477294000 -28800 1 AKDT} + {3497853600 -32400 0 AKST} + {3508743600 -28800 1 AKDT} + {3529303200 -32400 0 AKST} + {3540193200 -28800 1 AKDT} + {3560752800 -32400 0 AKST} + {3572247600 -28800 1 AKDT} + {3592807200 -32400 0 AKST} + {3603697200 -28800 1 AKDT} + {3624256800 -32400 0 AKST} + {3635146800 -28800 1 AKDT} + {3655706400 -32400 0 AKST} + {3666596400 -28800 1 AKDT} + {3687156000 -32400 0 AKST} + {3698046000 -28800 1 AKDT} + {3718605600 -32400 0 AKST} + {3730100400 -28800 1 AKDT} + {3750660000 -32400 0 AKST} + {3761550000 -28800 1 AKDT} + {3782109600 -32400 0 AKST} + {3792999600 -28800 1 AKDT} + {3813559200 -32400 0 AKST} + {3824449200 -28800 1 AKDT} + {3845008800 -32400 0 AKST} + {3855898800 -28800 1 AKDT} + {3876458400 -32400 0 AKST} + {3887348400 -28800 1 AKDT} + {3907908000 -32400 0 AKST} + {3919402800 -28800 1 AKDT} + {3939962400 -32400 0 AKST} + {3950852400 -28800 1 AKDT} + {3971412000 -32400 0 AKST} + {3982302000 -28800 1 AKDT} + {4002861600 -32400 0 AKST} + {4013751600 -28800 1 AKDT} + {4034311200 -32400 0 AKST} + {4045201200 -28800 1 AKDT} + {4065760800 -32400 0 AKST} + {4076650800 -28800 1 AKDT} + {4097210400 -32400 0 AKST} +} diff --git a/library/tzdata/America/Anguilla b/library/tzdata/America/Anguilla index e7b570c..cfe7483 100644 --- a/library/tzdata/America/Anguilla +++ b/library/tzdata/America/Anguilla @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Anguilla) { - {-9223372036854775808 -15136 0 LMT} - {-1825098464 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Anguilla) { + {-9223372036854775808 -15136 0 LMT} + {-1825098464 -14400 0 AST} +} diff --git a/library/tzdata/America/Antigua b/library/tzdata/America/Antigua index 9fe14cd..5433e9b 100644 --- a/library/tzdata/America/Antigua +++ b/library/tzdata/America/Antigua @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Antigua) { - {-9223372036854775808 -14832 0 LMT} - {-1825098768 -18000 0 EST} - {-599598000 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Antigua) { + {-9223372036854775808 -14832 0 LMT} + {-1825098768 -18000 0 EST} + {-599598000 -14400 0 AST} +} diff --git a/library/tzdata/America/Araguaina b/library/tzdata/America/Araguaina index 4d862ee..5073c56 100644 --- a/library/tzdata/America/Araguaina +++ b/library/tzdata/America/Araguaina @@ -1,57 +1,57 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Araguaina) { - {-9223372036854775808 -11568 0 LMT} - {-1767214032 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {653536800 -10800 0 BRT} - {811047600 -10800 0 BRT} - {813726000 -7200 1 BRST} - {824004000 -10800 0 BRT} - {844570800 -7200 1 BRST} - {856058400 -10800 0 BRT} - {876106800 -7200 1 BRST} - {888717600 -10800 0 BRT} - {908074800 -7200 1 BRST} - {919562400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {982461600 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1036292400 -7200 1 BRST} - {1045360800 -10800 0 BRT} - {1064368800 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Araguaina) { + {-9223372036854775808 -11568 0 LMT} + {-1767214032 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {653536800 -10800 0 BRT} + {811047600 -10800 0 BRT} + {813726000 -7200 1 BRST} + {824004000 -10800 0 BRT} + {844570800 -7200 1 BRST} + {856058400 -10800 0 BRT} + {876106800 -7200 1 BRST} + {888717600 -10800 0 BRT} + {908074800 -7200 1 BRST} + {919562400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {982461600 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1036292400 -7200 1 BRST} + {1045360800 -10800 0 BRT} + {1064368800 -10800 0 BRT} +} diff --git a/library/tzdata/America/Argentina/Buenos_Aires b/library/tzdata/America/Argentina/Buenos_Aires index 57c60c5..beccff3 100644 --- a/library/tzdata/America/Argentina/Buenos_Aires +++ b/library/tzdata/America/Argentina/Buenos_Aires @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Buenos_Aires) { - {-9223372036854775808 -14028 0 LMT} - {-2372097972 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224385200 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Buenos_Aires) { + {-9223372036854775808 -14028 0 LMT} + {-2372097972 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224385200 -7200 1 ARST} + {1237082400 -10800 0 ART} + {1255834800 -7200 1 ARST} + {1269136800 -10800 0 ART} + {1287284400 -7200 1 ARST} + {1300586400 -10800 0 ART} + {1318734000 -7200 1 ARST} + {1332036000 -10800 0 ART} + {1350788400 -7200 1 ARST} + {1363485600 -10800 0 ART} + {1382238000 -7200 1 ARST} + {1394935200 -10800 0 ART} + {1413687600 -7200 1 ARST} + {1426384800 -10800 0 ART} + {1445137200 -7200 1 ARST} + {1458439200 -10800 0 ART} + {1476586800 -7200 1 ARST} + {1489888800 -10800 0 ART} + {1508036400 -7200 1 ARST} + {1521338400 -10800 0 ART} + {1540090800 -7200 1 ARST} + {1552788000 -10800 0 ART} + {1571540400 -7200 1 ARST} + {1584237600 -10800 0 ART} + {1602990000 -7200 1 ARST} + {1616292000 -10800 0 ART} + {1634439600 -7200 1 ARST} + {1647741600 -10800 0 ART} + {1665889200 -7200 1 ARST} + {1679191200 -10800 0 ART} + {1697338800 -7200 1 ARST} + {1710640800 -10800 0 ART} + {1729393200 -7200 1 ARST} + {1742090400 -10800 0 ART} + {1760842800 -7200 1 ARST} + {1773540000 -10800 0 ART} + {1792292400 -7200 1 ARST} + {1805594400 -10800 0 ART} + {1823742000 -7200 1 ARST} + {1837044000 -10800 0 ART} + {1855191600 -7200 1 ARST} + {1868493600 -10800 0 ART} + {1887246000 -7200 1 ARST} + {1899943200 -10800 0 ART} + {1918695600 -7200 1 ARST} + {1931392800 -10800 0 ART} + {1950145200 -7200 1 ARST} + {1963447200 -10800 0 ART} + {1981594800 -7200 1 ARST} + {1994896800 -10800 0 ART} + {2013044400 -7200 1 ARST} + {2026346400 -10800 0 ART} + {2044494000 -7200 1 ARST} + {2057796000 -10800 0 ART} + {2076548400 -7200 1 ARST} + {2089245600 -10800 0 ART} + {2107998000 -7200 1 ARST} + {2120695200 -10800 0 ART} + {2139447600 -7200 1 ARST} + {2152749600 -10800 0 ART} + {2170897200 -7200 1 ARST} + {2184199200 -10800 0 ART} + {2202346800 -7200 1 ARST} + {2215648800 -10800 0 ART} + {2234401200 -7200 1 ARST} + {2247098400 -10800 0 ART} + {2265850800 -7200 1 ARST} + {2278548000 -10800 0 ART} + {2297300400 -7200 1 ARST} + {2309997600 -10800 0 ART} + {2328750000 -7200 1 ARST} + {2342052000 -10800 0 ART} + {2360199600 -7200 1 ARST} + {2373501600 -10800 0 ART} + {2391649200 -7200 1 ARST} + {2404951200 -10800 0 ART} + {2423703600 -7200 1 ARST} + {2436400800 -10800 0 ART} + {2455153200 -7200 1 ARST} + {2467850400 -10800 0 ART} + {2486602800 -7200 1 ARST} + {2499904800 -10800 0 ART} + {2518052400 -7200 1 ARST} + {2531354400 -10800 0 ART} + {2549502000 -7200 1 ARST} + {2562804000 -10800 0 ART} + {2580951600 -7200 1 ARST} + {2594253600 -10800 0 ART} + {2613006000 -7200 1 ARST} + {2625703200 -10800 0 ART} + {2644455600 -7200 1 ARST} + {2657152800 -10800 0 ART} + {2675905200 -7200 1 ARST} + {2689207200 -10800 0 ART} + {2707354800 -7200 1 ARST} + {2720656800 -10800 0 ART} + {2738804400 -7200 1 ARST} + {2752106400 -10800 0 ART} + {2770858800 -7200 1 ARST} + {2783556000 -10800 0 ART} + {2802308400 -7200 1 ARST} + {2815005600 -10800 0 ART} + {2833758000 -7200 1 ARST} + {2847060000 -10800 0 ART} + {2865207600 -7200 1 ARST} + {2878509600 -10800 0 ART} + {2896657200 -7200 1 ARST} + {2909959200 -10800 0 ART} + {2928106800 -7200 1 ARST} + {2941408800 -10800 0 ART} + {2960161200 -7200 1 ARST} + {2972858400 -10800 0 ART} + {2991610800 -7200 1 ARST} + {3004308000 -10800 0 ART} + {3023060400 -7200 1 ARST} + {3036362400 -10800 0 ART} + {3054510000 -7200 1 ARST} + {3067812000 -10800 0 ART} + {3085959600 -7200 1 ARST} + {3099261600 -10800 0 ART} + {3118014000 -7200 1 ARST} + {3130711200 -10800 0 ART} + {3149463600 -7200 1 ARST} + {3162160800 -10800 0 ART} + {3180913200 -7200 1 ARST} + {3193610400 -10800 0 ART} + {3212362800 -7200 1 ARST} + {3225664800 -10800 0 ART} + {3243812400 -7200 1 ARST} + {3257114400 -10800 0 ART} + {3275262000 -7200 1 ARST} + {3288564000 -10800 0 ART} + {3307316400 -7200 1 ARST} + {3320013600 -10800 0 ART} + {3338766000 -7200 1 ARST} + {3351463200 -10800 0 ART} + {3370215600 -7200 1 ARST} + {3383517600 -10800 0 ART} + {3401665200 -7200 1 ARST} + {3414967200 -10800 0 ART} + {3433114800 -7200 1 ARST} + {3446416800 -10800 0 ART} + {3464564400 -7200 1 ARST} + {3477866400 -10800 0 ART} + {3496618800 -7200 1 ARST} + {3509316000 -10800 0 ART} + {3528068400 -7200 1 ARST} + {3540765600 -10800 0 ART} + {3559518000 -7200 1 ARST} + {3572820000 -10800 0 ART} + {3590967600 -7200 1 ARST} + {3604269600 -10800 0 ART} + {3622417200 -7200 1 ARST} + {3635719200 -10800 0 ART} + {3654471600 -7200 1 ARST} + {3667168800 -10800 0 ART} + {3685921200 -7200 1 ARST} + {3698618400 -10800 0 ART} + {3717370800 -7200 1 ARST} + {3730672800 -10800 0 ART} + {3748820400 -7200 1 ARST} + {3762122400 -10800 0 ART} + {3780270000 -7200 1 ARST} + {3793572000 -10800 0 ART} + {3811719600 -7200 1 ARST} + {3825021600 -10800 0 ART} + {3843774000 -7200 1 ARST} + {3856471200 -10800 0 ART} + {3875223600 -7200 1 ARST} + {3887920800 -10800 0 ART} + {3906673200 -7200 1 ARST} + {3919975200 -10800 0 ART} + {3938122800 -7200 1 ARST} + {3951424800 -10800 0 ART} + {3969572400 -7200 1 ARST} + {3982874400 -10800 0 ART} + {4001626800 -7200 1 ARST} + {4014324000 -10800 0 ART} + {4033076400 -7200 1 ARST} + {4045773600 -10800 0 ART} + {4064526000 -7200 1 ARST} + {4077223200 -10800 0 ART} + {4095975600 -7200 1 ARST} +} diff --git a/library/tzdata/America/Argentina/Catamarca b/library/tzdata/America/Argentina/Catamarca index f436109..7739203 100644 --- a/library/tzdata/America/Argentina/Catamarca +++ b/library/tzdata/America/Argentina/Catamarca @@ -1,68 +1,68 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Catamarca) { - {-9223372036854775808 -15788 0 LMT} - {-2372096212 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -14400 0 WART} - {687931200 -7200 0 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1086058800 -14400 0 WART} - {1087704000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Catamarca) { + {-9223372036854775808 -15788 0 LMT} + {-2372096212 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -14400 0 WART} + {687931200 -7200 0 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1086058800 -14400 0 WART} + {1087704000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/ComodRivadavia b/library/tzdata/America/Argentina/ComodRivadavia index 14f10b6..2611a3d 100644 --- a/library/tzdata/America/Argentina/ComodRivadavia +++ b/library/tzdata/America/Argentina/ComodRivadavia @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Catamarca)]} { - LoadTimeZoneFile America/Argentina/Catamarca -} -set TZData(:America/Argentina/ComodRivadavia) $TZData(:America/Argentina/Catamarca) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Catamarca)]} { + LoadTimeZoneFile America/Argentina/Catamarca +} +set TZData(:America/Argentina/ComodRivadavia) $TZData(:America/Argentina/Catamarca) diff --git a/library/tzdata/America/Argentina/Cordoba b/library/tzdata/America/Argentina/Cordoba index 43503ea..798ee86 100644 --- a/library/tzdata/America/Argentina/Cordoba +++ b/library/tzdata/America/Argentina/Cordoba @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Cordoba) { - {-9223372036854775808 -15408 0 LMT} - {-2372096592 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -14400 0 WART} - {687931200 -7200 0 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224385200 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Cordoba) { + {-9223372036854775808 -15408 0 LMT} + {-2372096592 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -14400 0 WART} + {687931200 -7200 0 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224385200 -7200 1 ARST} + {1237082400 -10800 0 ART} + {1255834800 -7200 1 ARST} + {1269136800 -10800 0 ART} + {1287284400 -7200 1 ARST} + {1300586400 -10800 0 ART} + {1318734000 -7200 1 ARST} + {1332036000 -10800 0 ART} + {1350788400 -7200 1 ARST} + {1363485600 -10800 0 ART} + {1382238000 -7200 1 ARST} + {1394935200 -10800 0 ART} + {1413687600 -7200 1 ARST} + {1426384800 -10800 0 ART} + {1445137200 -7200 1 ARST} + {1458439200 -10800 0 ART} + {1476586800 -7200 1 ARST} + {1489888800 -10800 0 ART} + {1508036400 -7200 1 ARST} + {1521338400 -10800 0 ART} + {1540090800 -7200 1 ARST} + {1552788000 -10800 0 ART} + {1571540400 -7200 1 ARST} + {1584237600 -10800 0 ART} + {1602990000 -7200 1 ARST} + {1616292000 -10800 0 ART} + {1634439600 -7200 1 ARST} + {1647741600 -10800 0 ART} + {1665889200 -7200 1 ARST} + {1679191200 -10800 0 ART} + {1697338800 -7200 1 ARST} + {1710640800 -10800 0 ART} + {1729393200 -7200 1 ARST} + {1742090400 -10800 0 ART} + {1760842800 -7200 1 ARST} + {1773540000 -10800 0 ART} + {1792292400 -7200 1 ARST} + {1805594400 -10800 0 ART} + {1823742000 -7200 1 ARST} + {1837044000 -10800 0 ART} + {1855191600 -7200 1 ARST} + {1868493600 -10800 0 ART} + {1887246000 -7200 1 ARST} + {1899943200 -10800 0 ART} + {1918695600 -7200 1 ARST} + {1931392800 -10800 0 ART} + {1950145200 -7200 1 ARST} + {1963447200 -10800 0 ART} + {1981594800 -7200 1 ARST} + {1994896800 -10800 0 ART} + {2013044400 -7200 1 ARST} + {2026346400 -10800 0 ART} + {2044494000 -7200 1 ARST} + {2057796000 -10800 0 ART} + {2076548400 -7200 1 ARST} + {2089245600 -10800 0 ART} + {2107998000 -7200 1 ARST} + {2120695200 -10800 0 ART} + {2139447600 -7200 1 ARST} + {2152749600 -10800 0 ART} + {2170897200 -7200 1 ARST} + {2184199200 -10800 0 ART} + {2202346800 -7200 1 ARST} + {2215648800 -10800 0 ART} + {2234401200 -7200 1 ARST} + {2247098400 -10800 0 ART} + {2265850800 -7200 1 ARST} + {2278548000 -10800 0 ART} + {2297300400 -7200 1 ARST} + {2309997600 -10800 0 ART} + {2328750000 -7200 1 ARST} + {2342052000 -10800 0 ART} + {2360199600 -7200 1 ARST} + {2373501600 -10800 0 ART} + {2391649200 -7200 1 ARST} + {2404951200 -10800 0 ART} + {2423703600 -7200 1 ARST} + {2436400800 -10800 0 ART} + {2455153200 -7200 1 ARST} + {2467850400 -10800 0 ART} + {2486602800 -7200 1 ARST} + {2499904800 -10800 0 ART} + {2518052400 -7200 1 ARST} + {2531354400 -10800 0 ART} + {2549502000 -7200 1 ARST} + {2562804000 -10800 0 ART} + {2580951600 -7200 1 ARST} + {2594253600 -10800 0 ART} + {2613006000 -7200 1 ARST} + {2625703200 -10800 0 ART} + {2644455600 -7200 1 ARST} + {2657152800 -10800 0 ART} + {2675905200 -7200 1 ARST} + {2689207200 -10800 0 ART} + {2707354800 -7200 1 ARST} + {2720656800 -10800 0 ART} + {2738804400 -7200 1 ARST} + {2752106400 -10800 0 ART} + {2770858800 -7200 1 ARST} + {2783556000 -10800 0 ART} + {2802308400 -7200 1 ARST} + {2815005600 -10800 0 ART} + {2833758000 -7200 1 ARST} + {2847060000 -10800 0 ART} + {2865207600 -7200 1 ARST} + {2878509600 -10800 0 ART} + {2896657200 -7200 1 ARST} + {2909959200 -10800 0 ART} + {2928106800 -7200 1 ARST} + {2941408800 -10800 0 ART} + {2960161200 -7200 1 ARST} + {2972858400 -10800 0 ART} + {2991610800 -7200 1 ARST} + {3004308000 -10800 0 ART} + {3023060400 -7200 1 ARST} + {3036362400 -10800 0 ART} + {3054510000 -7200 1 ARST} + {3067812000 -10800 0 ART} + {3085959600 -7200 1 ARST} + {3099261600 -10800 0 ART} + {3118014000 -7200 1 ARST} + {3130711200 -10800 0 ART} + {3149463600 -7200 1 ARST} + {3162160800 -10800 0 ART} + {3180913200 -7200 1 ARST} + {3193610400 -10800 0 ART} + {3212362800 -7200 1 ARST} + {3225664800 -10800 0 ART} + {3243812400 -7200 1 ARST} + {3257114400 -10800 0 ART} + {3275262000 -7200 1 ARST} + {3288564000 -10800 0 ART} + {3307316400 -7200 1 ARST} + {3320013600 -10800 0 ART} + {3338766000 -7200 1 ARST} + {3351463200 -10800 0 ART} + {3370215600 -7200 1 ARST} + {3383517600 -10800 0 ART} + {3401665200 -7200 1 ARST} + {3414967200 -10800 0 ART} + {3433114800 -7200 1 ARST} + {3446416800 -10800 0 ART} + {3464564400 -7200 1 ARST} + {3477866400 -10800 0 ART} + {3496618800 -7200 1 ARST} + {3509316000 -10800 0 ART} + {3528068400 -7200 1 ARST} + {3540765600 -10800 0 ART} + {3559518000 -7200 1 ARST} + {3572820000 -10800 0 ART} + {3590967600 -7200 1 ARST} + {3604269600 -10800 0 ART} + {3622417200 -7200 1 ARST} + {3635719200 -10800 0 ART} + {3654471600 -7200 1 ARST} + {3667168800 -10800 0 ART} + {3685921200 -7200 1 ARST} + {3698618400 -10800 0 ART} + {3717370800 -7200 1 ARST} + {3730672800 -10800 0 ART} + {3748820400 -7200 1 ARST} + {3762122400 -10800 0 ART} + {3780270000 -7200 1 ARST} + {3793572000 -10800 0 ART} + {3811719600 -7200 1 ARST} + {3825021600 -10800 0 ART} + {3843774000 -7200 1 ARST} + {3856471200 -10800 0 ART} + {3875223600 -7200 1 ARST} + {3887920800 -10800 0 ART} + {3906673200 -7200 1 ARST} + {3919975200 -10800 0 ART} + {3938122800 -7200 1 ARST} + {3951424800 -10800 0 ART} + {3969572400 -7200 1 ARST} + {3982874400 -10800 0 ART} + {4001626800 -7200 1 ARST} + {4014324000 -10800 0 ART} + {4033076400 -7200 1 ARST} + {4045773600 -10800 0 ART} + {4064526000 -7200 1 ARST} + {4077223200 -10800 0 ART} + {4095975600 -7200 1 ARST} +} diff --git a/library/tzdata/America/Argentina/Jujuy b/library/tzdata/America/Argentina/Jujuy index 18be87c..4f95f8a 100644 --- a/library/tzdata/America/Argentina/Jujuy +++ b/library/tzdata/America/Argentina/Jujuy @@ -1,67 +1,67 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Jujuy) { - {-9223372036854775808 -15672 0 LMT} - {-2372096328 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -14400 0 WART} - {657086400 -10800 1 WARST} - {669178800 -14400 0 WART} - {686721600 -7200 1 ARST} - {694231200 -7200 0 ART} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Jujuy) { + {-9223372036854775808 -15672 0 LMT} + {-2372096328 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -14400 0 WART} + {657086400 -10800 1 WARST} + {669178800 -14400 0 WART} + {686721600 -7200 1 ARST} + {694231200 -7200 0 ART} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/La_Rioja b/library/tzdata/America/Argentina/La_Rioja index fbf04a6..835e29d 100644 --- a/library/tzdata/America/Argentina/La_Rioja +++ b/library/tzdata/America/Argentina/La_Rioja @@ -1,69 +1,69 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/La_Rioja) { - {-9223372036854775808 -16044 0 LMT} - {-2372095956 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667792800 -14400 0 WART} - {673588800 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1086058800 -14400 0 WART} - {1087704000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/La_Rioja) { + {-9223372036854775808 -16044 0 LMT} + {-2372095956 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667792800 -14400 0 WART} + {673588800 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1086058800 -14400 0 WART} + {1087704000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/Mendoza b/library/tzdata/America/Argentina/Mendoza index c994fa1..2c6fb58 100644 --- a/library/tzdata/America/Argentina/Mendoza +++ b/library/tzdata/America/Argentina/Mendoza @@ -1,68 +1,68 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Mendoza) { - {-9223372036854775808 -16516 0 LMT} - {-2372095484 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -14400 0 WART} - {655963200 -10800 1 WARST} - {667796400 -14400 0 WART} - {687499200 -10800 1 WARST} - {699418800 -14400 0 WART} - {719380800 -7200 0 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1085281200 -14400 0 WART} - {1096171200 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Mendoza) { + {-9223372036854775808 -16516 0 LMT} + {-2372095484 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -14400 0 WART} + {655963200 -10800 1 WARST} + {667796400 -14400 0 WART} + {687499200 -10800 1 WARST} + {699418800 -14400 0 WART} + {719380800 -7200 0 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1085281200 -14400 0 WART} + {1096171200 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/Rio_Gallegos b/library/tzdata/America/Argentina/Rio_Gallegos index 41c4835..91d37dd 100644 --- a/library/tzdata/America/Argentina/Rio_Gallegos +++ b/library/tzdata/America/Argentina/Rio_Gallegos @@ -1,68 +1,68 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Rio_Gallegos) { - {-9223372036854775808 -16612 0 LMT} - {-2372095388 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1086058800 -14400 0 WART} - {1087704000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Rio_Gallegos) { + {-9223372036854775808 -16612 0 LMT} + {-2372095388 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1086058800 -14400 0 WART} + {1087704000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/Salta b/library/tzdata/America/Argentina/Salta index d45019a..a5a7010 100644 --- a/library/tzdata/America/Argentina/Salta +++ b/library/tzdata/America/Argentina/Salta @@ -1,66 +1,66 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Salta) { - {-9223372036854775808 -15700 0 LMT} - {-2372096300 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -14400 0 WART} - {687931200 -7200 0 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Salta) { + {-9223372036854775808 -15700 0 LMT} + {-2372096300 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -14400 0 WART} + {687931200 -7200 0 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/San_Juan b/library/tzdata/America/Argentina/San_Juan index 123561d..417e234 100644 --- a/library/tzdata/America/Argentina/San_Juan +++ b/library/tzdata/America/Argentina/San_Juan @@ -1,69 +1,69 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/San_Juan) { - {-9223372036854775808 -16444 0 LMT} - {-2372095556 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667792800 -14400 0 WART} - {673588800 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1085972400 -14400 0 WART} - {1090728000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/San_Juan) { + {-9223372036854775808 -16444 0 LMT} + {-2372095556 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667792800 -14400 0 WART} + {673588800 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1085972400 -14400 0 WART} + {1090728000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Argentina/San_Luis b/library/tzdata/America/Argentina/San_Luis index c90ed11..1d06652 100644 --- a/library/tzdata/America/Argentina/San_Luis +++ b/library/tzdata/America/Argentina/San_Luis @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/San_Luis) { - {-9223372036854775808 -15924 0 LMT} - {-2372096076 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {631159200 -7200 1 ARST} - {637380000 -14400 0 WART} - {655963200 -10800 1 WARST} - {667796400 -14400 0 WART} - {675748800 -10800 0 ART} - {938919600 -10800 1 WARST} - {952052400 -10800 0 ART} - {1085972400 -14400 0 WART} - {1090728000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1200880800 -10800 0 ART} - {1237086000 -14400 0 WART} - {1237089600 -14400 0 WART} - {1255838400 -10800 1 WARST} - {1269140400 -14400 0 WART} - {1287288000 -10800 1 WARST} - {1300590000 -14400 0 WART} - {1318737600 -10800 1 WARST} - {1332039600 -14400 0 WART} - {1350792000 -10800 1 WARST} - {1363489200 -14400 0 WART} - {1382241600 -10800 1 WARST} - {1394938800 -14400 0 WART} - {1413691200 -10800 1 WARST} - {1426388400 -14400 0 WART} - {1445140800 -10800 1 WARST} - {1458442800 -14400 0 WART} - {1476590400 -10800 1 WARST} - {1489892400 -14400 0 WART} - {1508040000 -10800 1 WARST} - {1521342000 -14400 0 WART} - {1540094400 -10800 1 WARST} - {1552791600 -14400 0 WART} - {1571544000 -10800 1 WARST} - {1584241200 -14400 0 WART} - {1602993600 -10800 1 WARST} - {1616295600 -14400 0 WART} - {1634443200 -10800 1 WARST} - {1647745200 -14400 0 WART} - {1665892800 -10800 1 WARST} - {1679194800 -14400 0 WART} - {1697342400 -10800 1 WARST} - {1710644400 -14400 0 WART} - {1729396800 -10800 1 WARST} - {1742094000 -14400 0 WART} - {1760846400 -10800 1 WARST} - {1773543600 -14400 0 WART} - {1792296000 -10800 1 WARST} - {1805598000 -14400 0 WART} - {1823745600 -10800 1 WARST} - {1837047600 -14400 0 WART} - {1855195200 -10800 1 WARST} - {1868497200 -14400 0 WART} - {1887249600 -10800 1 WARST} - {1899946800 -14400 0 WART} - {1918699200 -10800 1 WARST} - {1931396400 -14400 0 WART} - {1950148800 -10800 1 WARST} - {1963450800 -14400 0 WART} - {1981598400 -10800 1 WARST} - {1994900400 -14400 0 WART} - {2013048000 -10800 1 WARST} - {2026350000 -14400 0 WART} - {2044497600 -10800 1 WARST} - {2057799600 -14400 0 WART} - {2076552000 -10800 1 WARST} - {2089249200 -14400 0 WART} - {2108001600 -10800 1 WARST} - {2120698800 -14400 0 WART} - {2139451200 -10800 1 WARST} - {2152753200 -14400 0 WART} - {2170900800 -10800 1 WARST} - {2184202800 -14400 0 WART} - {2202350400 -10800 1 WARST} - {2215652400 -14400 0 WART} - {2234404800 -10800 1 WARST} - {2247102000 -14400 0 WART} - {2265854400 -10800 1 WARST} - {2278551600 -14400 0 WART} - {2297304000 -10800 1 WARST} - {2310001200 -14400 0 WART} - {2328753600 -10800 1 WARST} - {2342055600 -14400 0 WART} - {2360203200 -10800 1 WARST} - {2373505200 -14400 0 WART} - {2391652800 -10800 1 WARST} - {2404954800 -14400 0 WART} - {2423707200 -10800 1 WARST} - {2436404400 -14400 0 WART} - {2455156800 -10800 1 WARST} - {2467854000 -14400 0 WART} - {2486606400 -10800 1 WARST} - {2499908400 -14400 0 WART} - {2518056000 -10800 1 WARST} - {2531358000 -14400 0 WART} - {2549505600 -10800 1 WARST} - {2562807600 -14400 0 WART} - {2580955200 -10800 1 WARST} - {2594257200 -14400 0 WART} - {2613009600 -10800 1 WARST} - {2625706800 -14400 0 WART} - {2644459200 -10800 1 WARST} - {2657156400 -14400 0 WART} - {2675908800 -10800 1 WARST} - {2689210800 -14400 0 WART} - {2707358400 -10800 1 WARST} - {2720660400 -14400 0 WART} - {2738808000 -10800 1 WARST} - {2752110000 -14400 0 WART} - {2770862400 -10800 1 WARST} - {2783559600 -14400 0 WART} - {2802312000 -10800 1 WARST} - {2815009200 -14400 0 WART} - {2833761600 -10800 1 WARST} - {2847063600 -14400 0 WART} - {2865211200 -10800 1 WARST} - {2878513200 -14400 0 WART} - {2896660800 -10800 1 WARST} - {2909962800 -14400 0 WART} - {2928110400 -10800 1 WARST} - {2941412400 -14400 0 WART} - {2960164800 -10800 1 WARST} - {2972862000 -14400 0 WART} - {2991614400 -10800 1 WARST} - {3004311600 -14400 0 WART} - {3023064000 -10800 1 WARST} - {3036366000 -14400 0 WART} - {3054513600 -10800 1 WARST} - {3067815600 -14400 0 WART} - {3085963200 -10800 1 WARST} - {3099265200 -14400 0 WART} - {3118017600 -10800 1 WARST} - {3130714800 -14400 0 WART} - {3149467200 -10800 1 WARST} - {3162164400 -14400 0 WART} - {3180916800 -10800 1 WARST} - {3193614000 -14400 0 WART} - {3212366400 -10800 1 WARST} - {3225668400 -14400 0 WART} - {3243816000 -10800 1 WARST} - {3257118000 -14400 0 WART} - {3275265600 -10800 1 WARST} - {3288567600 -14400 0 WART} - {3307320000 -10800 1 WARST} - {3320017200 -14400 0 WART} - {3338769600 -10800 1 WARST} - {3351466800 -14400 0 WART} - {3370219200 -10800 1 WARST} - {3383521200 -14400 0 WART} - {3401668800 -10800 1 WARST} - {3414970800 -14400 0 WART} - {3433118400 -10800 1 WARST} - {3446420400 -14400 0 WART} - {3464568000 -10800 1 WARST} - {3477870000 -14400 0 WART} - {3496622400 -10800 1 WARST} - {3509319600 -14400 0 WART} - {3528072000 -10800 1 WARST} - {3540769200 -14400 0 WART} - {3559521600 -10800 1 WARST} - {3572823600 -14400 0 WART} - {3590971200 -10800 1 WARST} - {3604273200 -14400 0 WART} - {3622420800 -10800 1 WARST} - {3635722800 -14400 0 WART} - {3654475200 -10800 1 WARST} - {3667172400 -14400 0 WART} - {3685924800 -10800 1 WARST} - {3698622000 -14400 0 WART} - {3717374400 -10800 1 WARST} - {3730676400 -14400 0 WART} - {3748824000 -10800 1 WARST} - {3762126000 -14400 0 WART} - {3780273600 -10800 1 WARST} - {3793575600 -14400 0 WART} - {3811723200 -10800 1 WARST} - {3825025200 -14400 0 WART} - {3843777600 -10800 1 WARST} - {3856474800 -14400 0 WART} - {3875227200 -10800 1 WARST} - {3887924400 -14400 0 WART} - {3906676800 -10800 1 WARST} - {3919978800 -14400 0 WART} - {3938126400 -10800 1 WARST} - {3951428400 -14400 0 WART} - {3969576000 -10800 1 WARST} - {3982878000 -14400 0 WART} - {4001630400 -10800 1 WARST} - {4014327600 -14400 0 WART} - {4033080000 -10800 1 WARST} - {4045777200 -14400 0 WART} - {4064529600 -10800 1 WARST} - {4077226800 -14400 0 WART} - {4095979200 -10800 1 WARST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/San_Luis) { + {-9223372036854775808 -15924 0 LMT} + {-2372096076 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {631159200 -7200 1 ARST} + {637380000 -14400 0 WART} + {655963200 -10800 1 WARST} + {667796400 -14400 0 WART} + {675748800 -10800 0 ART} + {938919600 -10800 1 WARST} + {952052400 -10800 0 ART} + {1085972400 -14400 0 WART} + {1090728000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1200880800 -10800 0 ART} + {1237086000 -14400 0 WART} + {1237089600 -14400 0 WART} + {1255838400 -10800 1 WARST} + {1269140400 -14400 0 WART} + {1287288000 -10800 1 WARST} + {1300590000 -14400 0 WART} + {1318737600 -10800 1 WARST} + {1332039600 -14400 0 WART} + {1350792000 -10800 1 WARST} + {1363489200 -14400 0 WART} + {1382241600 -10800 1 WARST} + {1394938800 -14400 0 WART} + {1413691200 -10800 1 WARST} + {1426388400 -14400 0 WART} + {1445140800 -10800 1 WARST} + {1458442800 -14400 0 WART} + {1476590400 -10800 1 WARST} + {1489892400 -14400 0 WART} + {1508040000 -10800 1 WARST} + {1521342000 -14400 0 WART} + {1540094400 -10800 1 WARST} + {1552791600 -14400 0 WART} + {1571544000 -10800 1 WARST} + {1584241200 -14400 0 WART} + {1602993600 -10800 1 WARST} + {1616295600 -14400 0 WART} + {1634443200 -10800 1 WARST} + {1647745200 -14400 0 WART} + {1665892800 -10800 1 WARST} + {1679194800 -14400 0 WART} + {1697342400 -10800 1 WARST} + {1710644400 -14400 0 WART} + {1729396800 -10800 1 WARST} + {1742094000 -14400 0 WART} + {1760846400 -10800 1 WARST} + {1773543600 -14400 0 WART} + {1792296000 -10800 1 WARST} + {1805598000 -14400 0 WART} + {1823745600 -10800 1 WARST} + {1837047600 -14400 0 WART} + {1855195200 -10800 1 WARST} + {1868497200 -14400 0 WART} + {1887249600 -10800 1 WARST} + {1899946800 -14400 0 WART} + {1918699200 -10800 1 WARST} + {1931396400 -14400 0 WART} + {1950148800 -10800 1 WARST} + {1963450800 -14400 0 WART} + {1981598400 -10800 1 WARST} + {1994900400 -14400 0 WART} + {2013048000 -10800 1 WARST} + {2026350000 -14400 0 WART} + {2044497600 -10800 1 WARST} + {2057799600 -14400 0 WART} + {2076552000 -10800 1 WARST} + {2089249200 -14400 0 WART} + {2108001600 -10800 1 WARST} + {2120698800 -14400 0 WART} + {2139451200 -10800 1 WARST} + {2152753200 -14400 0 WART} + {2170900800 -10800 1 WARST} + {2184202800 -14400 0 WART} + {2202350400 -10800 1 WARST} + {2215652400 -14400 0 WART} + {2234404800 -10800 1 WARST} + {2247102000 -14400 0 WART} + {2265854400 -10800 1 WARST} + {2278551600 -14400 0 WART} + {2297304000 -10800 1 WARST} + {2310001200 -14400 0 WART} + {2328753600 -10800 1 WARST} + {2342055600 -14400 0 WART} + {2360203200 -10800 1 WARST} + {2373505200 -14400 0 WART} + {2391652800 -10800 1 WARST} + {2404954800 -14400 0 WART} + {2423707200 -10800 1 WARST} + {2436404400 -14400 0 WART} + {2455156800 -10800 1 WARST} + {2467854000 -14400 0 WART} + {2486606400 -10800 1 WARST} + {2499908400 -14400 0 WART} + {2518056000 -10800 1 WARST} + {2531358000 -14400 0 WART} + {2549505600 -10800 1 WARST} + {2562807600 -14400 0 WART} + {2580955200 -10800 1 WARST} + {2594257200 -14400 0 WART} + {2613009600 -10800 1 WARST} + {2625706800 -14400 0 WART} + {2644459200 -10800 1 WARST} + {2657156400 -14400 0 WART} + {2675908800 -10800 1 WARST} + {2689210800 -14400 0 WART} + {2707358400 -10800 1 WARST} + {2720660400 -14400 0 WART} + {2738808000 -10800 1 WARST} + {2752110000 -14400 0 WART} + {2770862400 -10800 1 WARST} + {2783559600 -14400 0 WART} + {2802312000 -10800 1 WARST} + {2815009200 -14400 0 WART} + {2833761600 -10800 1 WARST} + {2847063600 -14400 0 WART} + {2865211200 -10800 1 WARST} + {2878513200 -14400 0 WART} + {2896660800 -10800 1 WARST} + {2909962800 -14400 0 WART} + {2928110400 -10800 1 WARST} + {2941412400 -14400 0 WART} + {2960164800 -10800 1 WARST} + {2972862000 -14400 0 WART} + {2991614400 -10800 1 WARST} + {3004311600 -14400 0 WART} + {3023064000 -10800 1 WARST} + {3036366000 -14400 0 WART} + {3054513600 -10800 1 WARST} + {3067815600 -14400 0 WART} + {3085963200 -10800 1 WARST} + {3099265200 -14400 0 WART} + {3118017600 -10800 1 WARST} + {3130714800 -14400 0 WART} + {3149467200 -10800 1 WARST} + {3162164400 -14400 0 WART} + {3180916800 -10800 1 WARST} + {3193614000 -14400 0 WART} + {3212366400 -10800 1 WARST} + {3225668400 -14400 0 WART} + {3243816000 -10800 1 WARST} + {3257118000 -14400 0 WART} + {3275265600 -10800 1 WARST} + {3288567600 -14400 0 WART} + {3307320000 -10800 1 WARST} + {3320017200 -14400 0 WART} + {3338769600 -10800 1 WARST} + {3351466800 -14400 0 WART} + {3370219200 -10800 1 WARST} + {3383521200 -14400 0 WART} + {3401668800 -10800 1 WARST} + {3414970800 -14400 0 WART} + {3433118400 -10800 1 WARST} + {3446420400 -14400 0 WART} + {3464568000 -10800 1 WARST} + {3477870000 -14400 0 WART} + {3496622400 -10800 1 WARST} + {3509319600 -14400 0 WART} + {3528072000 -10800 1 WARST} + {3540769200 -14400 0 WART} + {3559521600 -10800 1 WARST} + {3572823600 -14400 0 WART} + {3590971200 -10800 1 WARST} + {3604273200 -14400 0 WART} + {3622420800 -10800 1 WARST} + {3635722800 -14400 0 WART} + {3654475200 -10800 1 WARST} + {3667172400 -14400 0 WART} + {3685924800 -10800 1 WARST} + {3698622000 -14400 0 WART} + {3717374400 -10800 1 WARST} + {3730676400 -14400 0 WART} + {3748824000 -10800 1 WARST} + {3762126000 -14400 0 WART} + {3780273600 -10800 1 WARST} + {3793575600 -14400 0 WART} + {3811723200 -10800 1 WARST} + {3825025200 -14400 0 WART} + {3843777600 -10800 1 WARST} + {3856474800 -14400 0 WART} + {3875227200 -10800 1 WARST} + {3887924400 -14400 0 WART} + {3906676800 -10800 1 WARST} + {3919978800 -14400 0 WART} + {3938126400 -10800 1 WARST} + {3951428400 -14400 0 WART} + {3969576000 -10800 1 WARST} + {3982878000 -14400 0 WART} + {4001630400 -10800 1 WARST} + {4014327600 -14400 0 WART} + {4033080000 -10800 1 WARST} + {4045777200 -14400 0 WART} + {4064529600 -10800 1 WARST} + {4077226800 -14400 0 WART} + {4095979200 -10800 1 WARST} +} diff --git a/library/tzdata/America/Argentina/Tucuman b/library/tzdata/America/Argentina/Tucuman index 41ac5c7..6d12cb6 100644 --- a/library/tzdata/America/Argentina/Tucuman +++ b/library/tzdata/America/Argentina/Tucuman @@ -1,250 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Tucuman) { - {-9223372036854775808 -15652 0 LMT} - {-2372096348 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -14400 0 WART} - {687931200 -7200 0 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1086058800 -14400 0 WART} - {1087099200 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224385200 -7200 1 ARST} - {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Tucuman) { + {-9223372036854775808 -15652 0 LMT} + {-2372096348 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -14400 0 WART} + {687931200 -7200 0 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1086058800 -14400 0 WART} + {1087099200 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224385200 -7200 1 ARST} + {1237082400 -10800 0 ART} + {1255834800 -7200 1 ARST} + {1269136800 -10800 0 ART} + {1287284400 -7200 1 ARST} + {1300586400 -10800 0 ART} + {1318734000 -7200 1 ARST} + {1332036000 -10800 0 ART} + {1350788400 -7200 1 ARST} + {1363485600 -10800 0 ART} + {1382238000 -7200 1 ARST} + {1394935200 -10800 0 ART} + {1413687600 -7200 1 ARST} + {1426384800 -10800 0 ART} + {1445137200 -7200 1 ARST} + {1458439200 -10800 0 ART} + {1476586800 -7200 1 ARST} + {1489888800 -10800 0 ART} + {1508036400 -7200 1 ARST} + {1521338400 -10800 0 ART} + {1540090800 -7200 1 ARST} + {1552788000 -10800 0 ART} + {1571540400 -7200 1 ARST} + {1584237600 -10800 0 ART} + {1602990000 -7200 1 ARST} + {1616292000 -10800 0 ART} + {1634439600 -7200 1 ARST} + {1647741600 -10800 0 ART} + {1665889200 -7200 1 ARST} + {1679191200 -10800 0 ART} + {1697338800 -7200 1 ARST} + {1710640800 -10800 0 ART} + {1729393200 -7200 1 ARST} + {1742090400 -10800 0 ART} + {1760842800 -7200 1 ARST} + {1773540000 -10800 0 ART} + {1792292400 -7200 1 ARST} + {1805594400 -10800 0 ART} + {1823742000 -7200 1 ARST} + {1837044000 -10800 0 ART} + {1855191600 -7200 1 ARST} + {1868493600 -10800 0 ART} + {1887246000 -7200 1 ARST} + {1899943200 -10800 0 ART} + {1918695600 -7200 1 ARST} + {1931392800 -10800 0 ART} + {1950145200 -7200 1 ARST} + {1963447200 -10800 0 ART} + {1981594800 -7200 1 ARST} + {1994896800 -10800 0 ART} + {2013044400 -7200 1 ARST} + {2026346400 -10800 0 ART} + {2044494000 -7200 1 ARST} + {2057796000 -10800 0 ART} + {2076548400 -7200 1 ARST} + {2089245600 -10800 0 ART} + {2107998000 -7200 1 ARST} + {2120695200 -10800 0 ART} + {2139447600 -7200 1 ARST} + {2152749600 -10800 0 ART} + {2170897200 -7200 1 ARST} + {2184199200 -10800 0 ART} + {2202346800 -7200 1 ARST} + {2215648800 -10800 0 ART} + {2234401200 -7200 1 ARST} + {2247098400 -10800 0 ART} + {2265850800 -7200 1 ARST} + {2278548000 -10800 0 ART} + {2297300400 -7200 1 ARST} + {2309997600 -10800 0 ART} + {2328750000 -7200 1 ARST} + {2342052000 -10800 0 ART} + {2360199600 -7200 1 ARST} + {2373501600 -10800 0 ART} + {2391649200 -7200 1 ARST} + {2404951200 -10800 0 ART} + {2423703600 -7200 1 ARST} + {2436400800 -10800 0 ART} + {2455153200 -7200 1 ARST} + {2467850400 -10800 0 ART} + {2486602800 -7200 1 ARST} + {2499904800 -10800 0 ART} + {2518052400 -7200 1 ARST} + {2531354400 -10800 0 ART} + {2549502000 -7200 1 ARST} + {2562804000 -10800 0 ART} + {2580951600 -7200 1 ARST} + {2594253600 -10800 0 ART} + {2613006000 -7200 1 ARST} + {2625703200 -10800 0 ART} + {2644455600 -7200 1 ARST} + {2657152800 -10800 0 ART} + {2675905200 -7200 1 ARST} + {2689207200 -10800 0 ART} + {2707354800 -7200 1 ARST} + {2720656800 -10800 0 ART} + {2738804400 -7200 1 ARST} + {2752106400 -10800 0 ART} + {2770858800 -7200 1 ARST} + {2783556000 -10800 0 ART} + {2802308400 -7200 1 ARST} + {2815005600 -10800 0 ART} + {2833758000 -7200 1 ARST} + {2847060000 -10800 0 ART} + {2865207600 -7200 1 ARST} + {2878509600 -10800 0 ART} + {2896657200 -7200 1 ARST} + {2909959200 -10800 0 ART} + {2928106800 -7200 1 ARST} + {2941408800 -10800 0 ART} + {2960161200 -7200 1 ARST} + {2972858400 -10800 0 ART} + {2991610800 -7200 1 ARST} + {3004308000 -10800 0 ART} + {3023060400 -7200 1 ARST} + {3036362400 -10800 0 ART} + {3054510000 -7200 1 ARST} + {3067812000 -10800 0 ART} + {3085959600 -7200 1 ARST} + {3099261600 -10800 0 ART} + {3118014000 -7200 1 ARST} + {3130711200 -10800 0 ART} + {3149463600 -7200 1 ARST} + {3162160800 -10800 0 ART} + {3180913200 -7200 1 ARST} + {3193610400 -10800 0 ART} + {3212362800 -7200 1 ARST} + {3225664800 -10800 0 ART} + {3243812400 -7200 1 ARST} + {3257114400 -10800 0 ART} + {3275262000 -7200 1 ARST} + {3288564000 -10800 0 ART} + {3307316400 -7200 1 ARST} + {3320013600 -10800 0 ART} + {3338766000 -7200 1 ARST} + {3351463200 -10800 0 ART} + {3370215600 -7200 1 ARST} + {3383517600 -10800 0 ART} + {3401665200 -7200 1 ARST} + {3414967200 -10800 0 ART} + {3433114800 -7200 1 ARST} + {3446416800 -10800 0 ART} + {3464564400 -7200 1 ARST} + {3477866400 -10800 0 ART} + {3496618800 -7200 1 ARST} + {3509316000 -10800 0 ART} + {3528068400 -7200 1 ARST} + {3540765600 -10800 0 ART} + {3559518000 -7200 1 ARST} + {3572820000 -10800 0 ART} + {3590967600 -7200 1 ARST} + {3604269600 -10800 0 ART} + {3622417200 -7200 1 ARST} + {3635719200 -10800 0 ART} + {3654471600 -7200 1 ARST} + {3667168800 -10800 0 ART} + {3685921200 -7200 1 ARST} + {3698618400 -10800 0 ART} + {3717370800 -7200 1 ARST} + {3730672800 -10800 0 ART} + {3748820400 -7200 1 ARST} + {3762122400 -10800 0 ART} + {3780270000 -7200 1 ARST} + {3793572000 -10800 0 ART} + {3811719600 -7200 1 ARST} + {3825021600 -10800 0 ART} + {3843774000 -7200 1 ARST} + {3856471200 -10800 0 ART} + {3875223600 -7200 1 ARST} + {3887920800 -10800 0 ART} + {3906673200 -7200 1 ARST} + {3919975200 -10800 0 ART} + {3938122800 -7200 1 ARST} + {3951424800 -10800 0 ART} + {3969572400 -7200 1 ARST} + {3982874400 -10800 0 ART} + {4001626800 -7200 1 ARST} + {4014324000 -10800 0 ART} + {4033076400 -7200 1 ARST} + {4045773600 -10800 0 ART} + {4064526000 -7200 1 ARST} + {4077223200 -10800 0 ART} + {4095975600 -7200 1 ARST} +} diff --git a/library/tzdata/America/Argentina/Ushuaia b/library/tzdata/America/Argentina/Ushuaia index b7d97b4..4fcf92d 100644 --- a/library/tzdata/America/Argentina/Ushuaia +++ b/library/tzdata/America/Argentina/Ushuaia @@ -1,68 +1,68 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Argentina/Ushuaia) { - {-9223372036854775808 -16392 0 LMT} - {-2372095608 -15408 0 CMT} - {-1567453392 -14400 0 ART} - {-1233432000 -10800 0 ARST} - {-1222981200 -14400 0 ART} - {-1205956800 -10800 1 ARST} - {-1194037200 -14400 0 ART} - {-1172865600 -10800 1 ARST} - {-1162501200 -14400 0 ART} - {-1141329600 -10800 1 ARST} - {-1130965200 -14400 0 ART} - {-1109793600 -10800 1 ARST} - {-1099429200 -14400 0 ART} - {-1078257600 -10800 1 ARST} - {-1067806800 -14400 0 ART} - {-1046635200 -10800 1 ARST} - {-1036270800 -14400 0 ART} - {-1015099200 -10800 1 ARST} - {-1004734800 -14400 0 ART} - {-983563200 -10800 1 ARST} - {-973198800 -14400 0 ART} - {-952027200 -10800 1 ARST} - {-941576400 -14400 0 ART} - {-931032000 -10800 1 ARST} - {-900882000 -14400 0 ART} - {-890337600 -10800 1 ARST} - {-833749200 -14400 0 ART} - {-827265600 -10800 1 ARST} - {-752274000 -14400 0 ART} - {-733780800 -10800 1 ARST} - {-197326800 -14400 0 ART} - {-190843200 -10800 1 ARST} - {-184194000 -14400 0 ART} - {-164491200 -10800 1 ARST} - {-152658000 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {596948400 -7200 1 ARST} - {605066400 -10800 0 ART} - {624423600 -7200 1 ARST} - {636516000 -10800 0 ART} - {656478000 -7200 1 ARST} - {667965600 -10800 0 ART} - {687927600 -7200 1 ARST} - {699415200 -10800 0 ART} - {719377200 -7200 1 ARST} - {731469600 -10800 0 ART} - {938916000 -10800 0 ART} - {938919600 -10800 1 ARST} - {952056000 -10800 0 ART} - {1085886000 -14400 0 WART} - {1087704000 -10800 0 ART} - {1198983600 -7200 1 ARST} - {1205632800 -10800 0 ART} - {1224295200 -10800 0 ART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Argentina/Ushuaia) { + {-9223372036854775808 -16392 0 LMT} + {-2372095608 -15408 0 CMT} + {-1567453392 -14400 0 ART} + {-1233432000 -10800 0 ARST} + {-1222981200 -14400 0 ART} + {-1205956800 -10800 1 ARST} + {-1194037200 -14400 0 ART} + {-1172865600 -10800 1 ARST} + {-1162501200 -14400 0 ART} + {-1141329600 -10800 1 ARST} + {-1130965200 -14400 0 ART} + {-1109793600 -10800 1 ARST} + {-1099429200 -14400 0 ART} + {-1078257600 -10800 1 ARST} + {-1067806800 -14400 0 ART} + {-1046635200 -10800 1 ARST} + {-1036270800 -14400 0 ART} + {-1015099200 -10800 1 ARST} + {-1004734800 -14400 0 ART} + {-983563200 -10800 1 ARST} + {-973198800 -14400 0 ART} + {-952027200 -10800 1 ARST} + {-941576400 -14400 0 ART} + {-931032000 -10800 1 ARST} + {-900882000 -14400 0 ART} + {-890337600 -10800 1 ARST} + {-833749200 -14400 0 ART} + {-827265600 -10800 1 ARST} + {-752274000 -14400 0 ART} + {-733780800 -10800 1 ARST} + {-197326800 -14400 0 ART} + {-190843200 -10800 1 ARST} + {-184194000 -14400 0 ART} + {-164491200 -10800 1 ARST} + {-152658000 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {596948400 -7200 1 ARST} + {605066400 -10800 0 ART} + {624423600 -7200 1 ARST} + {636516000 -10800 0 ART} + {656478000 -7200 1 ARST} + {667965600 -10800 0 ART} + {687927600 -7200 1 ARST} + {699415200 -10800 0 ART} + {719377200 -7200 1 ARST} + {731469600 -10800 0 ART} + {938916000 -10800 0 ART} + {938919600 -10800 1 ARST} + {952056000 -10800 0 ART} + {1085886000 -14400 0 WART} + {1087704000 -10800 0 ART} + {1198983600 -7200 1 ARST} + {1205632800 -10800 0 ART} + {1224295200 -10800 0 ART} +} diff --git a/library/tzdata/America/Aruba b/library/tzdata/America/Aruba index c4558ab..92f182d 100644 --- a/library/tzdata/America/Aruba +++ b/library/tzdata/America/Aruba @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Aruba) { - {-9223372036854775808 -16824 0 LMT} - {-1826738376 -16200 0 ANT} - {-157750200 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Aruba) { + {-9223372036854775808 -16824 0 LMT} + {-1826738376 -16200 0 ANT} + {-157750200 -14400 0 AST} +} diff --git a/library/tzdata/America/Asuncion b/library/tzdata/America/Asuncion index 44e6f71..fde228c 100644 --- a/library/tzdata/America/Asuncion +++ b/library/tzdata/America/Asuncion @@ -1,259 +1,259 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Asuncion) { - {-9223372036854775808 -13840 0 LMT} - {-2524507760 -13840 0 AMT} - {-1206389360 -14400 0 PYT} - {86760000 -10800 0 PYT} - {134017200 -14400 0 PYT} - {162878400 -14400 0 PYT} - {181368000 -10800 1 PYST} - {194497200 -14400 0 PYT} - {212990400 -10800 1 PYST} - {226033200 -14400 0 PYT} - {244526400 -10800 1 PYST} - {257569200 -14400 0 PYT} - {276062400 -10800 1 PYST} - {291783600 -14400 0 PYT} - {307598400 -10800 1 PYST} - {323406000 -14400 0 PYT} - {339220800 -10800 1 PYST} - {354942000 -14400 0 PYT} - {370756800 -10800 1 PYST} - {386478000 -14400 0 PYT} - {402292800 -10800 1 PYST} - {418014000 -14400 0 PYT} - {433828800 -10800 1 PYST} - {449636400 -14400 0 PYT} - {465451200 -10800 1 PYST} - {481172400 -14400 0 PYT} - {496987200 -10800 1 PYST} - {512708400 -14400 0 PYT} - {528523200 -10800 1 PYST} - {544244400 -14400 0 PYT} - {560059200 -10800 1 PYST} - {575866800 -14400 0 PYT} - {591681600 -10800 1 PYST} - {607402800 -14400 0 PYT} - {625032000 -10800 1 PYST} - {638938800 -14400 0 PYT} - {654753600 -10800 1 PYST} - {670474800 -14400 0 PYT} - {686721600 -10800 1 PYST} - {699418800 -14400 0 PYT} - {718257600 -10800 1 PYST} - {733546800 -14400 0 PYT} - {749448000 -10800 1 PYST} - {762318000 -14400 0 PYT} - {780984000 -10800 1 PYST} - {793767600 -14400 0 PYT} - {812520000 -10800 1 PYST} - {825649200 -14400 0 PYT} - {844574400 -10800 1 PYST} - {856666800 -14400 0 PYT} - {876024000 -10800 1 PYST} - {888721200 -14400 0 PYT} - {907473600 -10800 1 PYST} - {920775600 -14400 0 PYT} - {938923200 -10800 1 PYST} - {952225200 -14400 0 PYT} - {970372800 -10800 1 PYST} - {983674800 -14400 0 PYT} - {1002427200 -10800 1 PYST} - {1018148400 -14400 0 PYT} - {1030852800 -10800 1 PYST} - {1049598000 -14400 0 PYT} - {1062907200 -10800 1 PYST} - {1081047600 -14400 0 PYT} - {1097985600 -10800 1 PYST} - {1110682800 -14400 0 PYT} - {1129435200 -10800 1 PYST} - {1142132400 -14400 0 PYT} - {1160884800 -10800 1 PYST} - {1173582000 -14400 0 PYT} - {1192939200 -10800 1 PYST} - {1205031600 -14400 0 PYT} - {1224388800 -10800 1 PYST} - {1236481200 -14400 0 PYT} - {1255838400 -10800 1 PYST} - {1268535600 -14400 0 PYT} - {1287288000 -10800 1 PYST} - {1299985200 -14400 0 PYT} - {1318737600 -10800 1 PYST} - {1331434800 -14400 0 PYT} - {1350792000 -10800 1 PYST} - {1362884400 -14400 0 PYT} - {1382241600 -10800 1 PYST} - {1394334000 -14400 0 PYT} - {1413691200 -10800 1 PYST} - {1425783600 -14400 0 PYT} - {1445140800 -10800 1 PYST} - {1457838000 -14400 0 PYT} - {1476590400 -10800 1 PYST} - {1489287600 -14400 0 PYT} - {1508040000 -10800 1 PYST} - {1520737200 -14400 0 PYT} - {1540094400 -10800 1 PYST} - {1552186800 -14400 0 PYT} - {1571544000 -10800 1 PYST} - {1583636400 -14400 0 PYT} - {1602993600 -10800 1 PYST} - {1615690800 -14400 0 PYT} - {1634443200 -10800 1 PYST} - {1647140400 -14400 0 PYT} - {1665892800 -10800 1 PYST} - {1678590000 -14400 0 PYT} - {1697342400 -10800 1 PYST} - {1710039600 -14400 0 PYT} - {1729396800 -10800 1 PYST} - {1741489200 -14400 0 PYT} - {1760846400 -10800 1 PYST} - {1772938800 -14400 0 PYT} - {1792296000 -10800 1 PYST} - {1804993200 -14400 0 PYT} - {1823745600 -10800 1 PYST} - {1836442800 -14400 0 PYT} - {1855195200 -10800 1 PYST} - {1867892400 -14400 0 PYT} - {1887249600 -10800 1 PYST} - {1899342000 -14400 0 PYT} - {1918699200 -10800 1 PYST} - {1930791600 -14400 0 PYT} - {1950148800 -10800 1 PYST} - {1962846000 -14400 0 PYT} - {1981598400 -10800 1 PYST} - {1994295600 -14400 0 PYT} - {2013048000 -10800 1 PYST} - {2025745200 -14400 0 PYT} - {2044497600 -10800 1 PYST} - {2057194800 -14400 0 PYT} - {2076552000 -10800 1 PYST} - {2088644400 -14400 0 PYT} - {2108001600 -10800 1 PYST} - {2120094000 -14400 0 PYT} - {2139451200 -10800 1 PYST} - {2152148400 -14400 0 PYT} - {2170900800 -10800 1 PYST} - {2183598000 -14400 0 PYT} - {2202350400 -10800 1 PYST} - {2215047600 -14400 0 PYT} - {2234404800 -10800 1 PYST} - {2246497200 -14400 0 PYT} - {2265854400 -10800 1 PYST} - {2277946800 -14400 0 PYT} - {2297304000 -10800 1 PYST} - {2309396400 -14400 0 PYT} - {2328753600 -10800 1 PYST} - {2341450800 -14400 0 PYT} - {2360203200 -10800 1 PYST} - {2372900400 -14400 0 PYT} - {2391652800 -10800 1 PYST} - {2404350000 -14400 0 PYT} - {2423707200 -10800 1 PYST} - {2435799600 -14400 0 PYT} - {2455156800 -10800 1 PYST} - {2467249200 -14400 0 PYT} - {2486606400 -10800 1 PYST} - {2499303600 -14400 0 PYT} - {2518056000 -10800 1 PYST} - {2530753200 -14400 0 PYT} - {2549505600 -10800 1 PYST} - {2562202800 -14400 0 PYT} - {2580955200 -10800 1 PYST} - {2593652400 -14400 0 PYT} - {2613009600 -10800 1 PYST} - {2625102000 -14400 0 PYT} - {2644459200 -10800 1 PYST} - {2656551600 -14400 0 PYT} - {2675908800 -10800 1 PYST} - {2688606000 -14400 0 PYT} - {2707358400 -10800 1 PYST} - {2720055600 -14400 0 PYT} - {2738808000 -10800 1 PYST} - {2751505200 -14400 0 PYT} - {2770862400 -10800 1 PYST} - {2782954800 -14400 0 PYT} - {2802312000 -10800 1 PYST} - {2814404400 -14400 0 PYT} - {2833761600 -10800 1 PYST} - {2846458800 -14400 0 PYT} - {2865211200 -10800 1 PYST} - {2877908400 -14400 0 PYT} - {2896660800 -10800 1 PYST} - {2909358000 -14400 0 PYT} - {2928110400 -10800 1 PYST} - {2940807600 -14400 0 PYT} - {2960164800 -10800 1 PYST} - {2972257200 -14400 0 PYT} - {2991614400 -10800 1 PYST} - {3003706800 -14400 0 PYT} - {3023064000 -10800 1 PYST} - {3035761200 -14400 0 PYT} - {3054513600 -10800 1 PYST} - {3067210800 -14400 0 PYT} - {3085963200 -10800 1 PYST} - {3098660400 -14400 0 PYT} - {3118017600 -10800 1 PYST} - {3130110000 -14400 0 PYT} - {3149467200 -10800 1 PYST} - {3161559600 -14400 0 PYT} - {3180916800 -10800 1 PYST} - {3193009200 -14400 0 PYT} - {3212366400 -10800 1 PYST} - {3225063600 -14400 0 PYT} - {3243816000 -10800 1 PYST} - {3256513200 -14400 0 PYT} - {3275265600 -10800 1 PYST} - {3287962800 -14400 0 PYT} - {3307320000 -10800 1 PYST} - {3319412400 -14400 0 PYT} - {3338769600 -10800 1 PYST} - {3350862000 -14400 0 PYT} - {3370219200 -10800 1 PYST} - {3382916400 -14400 0 PYT} - {3401668800 -10800 1 PYST} - {3414366000 -14400 0 PYT} - {3433118400 -10800 1 PYST} - {3445815600 -14400 0 PYT} - {3464568000 -10800 1 PYST} - {3477265200 -14400 0 PYT} - {3496622400 -10800 1 PYST} - {3508714800 -14400 0 PYT} - {3528072000 -10800 1 PYST} - {3540164400 -14400 0 PYT} - {3559521600 -10800 1 PYST} - {3572218800 -14400 0 PYT} - {3590971200 -10800 1 PYST} - {3603668400 -14400 0 PYT} - {3622420800 -10800 1 PYST} - {3635118000 -14400 0 PYT} - {3654475200 -10800 1 PYST} - {3666567600 -14400 0 PYT} - {3685924800 -10800 1 PYST} - {3698017200 -14400 0 PYT} - {3717374400 -10800 1 PYST} - {3730071600 -14400 0 PYT} - {3748824000 -10800 1 PYST} - {3761521200 -14400 0 PYT} - {3780273600 -10800 1 PYST} - {3792970800 -14400 0 PYT} - {3811723200 -10800 1 PYST} - {3824420400 -14400 0 PYT} - {3843777600 -10800 1 PYST} - {3855870000 -14400 0 PYT} - {3875227200 -10800 1 PYST} - {3887319600 -14400 0 PYT} - {3906676800 -10800 1 PYST} - {3919374000 -14400 0 PYT} - {3938126400 -10800 1 PYST} - {3950823600 -14400 0 PYT} - {3969576000 -10800 1 PYST} - {3982273200 -14400 0 PYT} - {4001630400 -10800 1 PYST} - {4013722800 -14400 0 PYT} - {4033080000 -10800 1 PYST} - {4045172400 -14400 0 PYT} - {4064529600 -10800 1 PYST} - {4076622000 -14400 0 PYT} - {4095979200 -10800 1 PYST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Asuncion) { + {-9223372036854775808 -13840 0 LMT} + {-2524507760 -13840 0 AMT} + {-1206389360 -14400 0 PYT} + {86760000 -10800 0 PYT} + {134017200 -14400 0 PYT} + {162878400 -14400 0 PYT} + {181368000 -10800 1 PYST} + {194497200 -14400 0 PYT} + {212990400 -10800 1 PYST} + {226033200 -14400 0 PYT} + {244526400 -10800 1 PYST} + {257569200 -14400 0 PYT} + {276062400 -10800 1 PYST} + {291783600 -14400 0 PYT} + {307598400 -10800 1 PYST} + {323406000 -14400 0 PYT} + {339220800 -10800 1 PYST} + {354942000 -14400 0 PYT} + {370756800 -10800 1 PYST} + {386478000 -14400 0 PYT} + {402292800 -10800 1 PYST} + {418014000 -14400 0 PYT} + {433828800 -10800 1 PYST} + {449636400 -14400 0 PYT} + {465451200 -10800 1 PYST} + {481172400 -14400 0 PYT} + {496987200 -10800 1 PYST} + {512708400 -14400 0 PYT} + {528523200 -10800 1 PYST} + {544244400 -14400 0 PYT} + {560059200 -10800 1 PYST} + {575866800 -14400 0 PYT} + {591681600 -10800 1 PYST} + {607402800 -14400 0 PYT} + {625032000 -10800 1 PYST} + {638938800 -14400 0 PYT} + {654753600 -10800 1 PYST} + {670474800 -14400 0 PYT} + {686721600 -10800 1 PYST} + {699418800 -14400 0 PYT} + {718257600 -10800 1 PYST} + {733546800 -14400 0 PYT} + {749448000 -10800 1 PYST} + {762318000 -14400 0 PYT} + {780984000 -10800 1 PYST} + {793767600 -14400 0 PYT} + {812520000 -10800 1 PYST} + {825649200 -14400 0 PYT} + {844574400 -10800 1 PYST} + {856666800 -14400 0 PYT} + {876024000 -10800 1 PYST} + {888721200 -14400 0 PYT} + {907473600 -10800 1 PYST} + {920775600 -14400 0 PYT} + {938923200 -10800 1 PYST} + {952225200 -14400 0 PYT} + {970372800 -10800 1 PYST} + {983674800 -14400 0 PYT} + {1002427200 -10800 1 PYST} + {1018148400 -14400 0 PYT} + {1030852800 -10800 1 PYST} + {1049598000 -14400 0 PYT} + {1062907200 -10800 1 PYST} + {1081047600 -14400 0 PYT} + {1097985600 -10800 1 PYST} + {1110682800 -14400 0 PYT} + {1129435200 -10800 1 PYST} + {1142132400 -14400 0 PYT} + {1160884800 -10800 1 PYST} + {1173582000 -14400 0 PYT} + {1192939200 -10800 1 PYST} + {1205031600 -14400 0 PYT} + {1224388800 -10800 1 PYST} + {1236481200 -14400 0 PYT} + {1255838400 -10800 1 PYST} + {1268535600 -14400 0 PYT} + {1287288000 -10800 1 PYST} + {1299985200 -14400 0 PYT} + {1318737600 -10800 1 PYST} + {1331434800 -14400 0 PYT} + {1350792000 -10800 1 PYST} + {1362884400 -14400 0 PYT} + {1382241600 -10800 1 PYST} + {1394334000 -14400 0 PYT} + {1413691200 -10800 1 PYST} + {1425783600 -14400 0 PYT} + {1445140800 -10800 1 PYST} + {1457838000 -14400 0 PYT} + {1476590400 -10800 1 PYST} + {1489287600 -14400 0 PYT} + {1508040000 -10800 1 PYST} + {1520737200 -14400 0 PYT} + {1540094400 -10800 1 PYST} + {1552186800 -14400 0 PYT} + {1571544000 -10800 1 PYST} + {1583636400 -14400 0 PYT} + {1602993600 -10800 1 PYST} + {1615690800 -14400 0 PYT} + {1634443200 -10800 1 PYST} + {1647140400 -14400 0 PYT} + {1665892800 -10800 1 PYST} + {1678590000 -14400 0 PYT} + {1697342400 -10800 1 PYST} + {1710039600 -14400 0 PYT} + {1729396800 -10800 1 PYST} + {1741489200 -14400 0 PYT} + {1760846400 -10800 1 PYST} + {1772938800 -14400 0 PYT} + {1792296000 -10800 1 PYST} + {1804993200 -14400 0 PYT} + {1823745600 -10800 1 PYST} + {1836442800 -14400 0 PYT} + {1855195200 -10800 1 PYST} + {1867892400 -14400 0 PYT} + {1887249600 -10800 1 PYST} + {1899342000 -14400 0 PYT} + {1918699200 -10800 1 PYST} + {1930791600 -14400 0 PYT} + {1950148800 -10800 1 PYST} + {1962846000 -14400 0 PYT} + {1981598400 -10800 1 PYST} + {1994295600 -14400 0 PYT} + {2013048000 -10800 1 PYST} + {2025745200 -14400 0 PYT} + {2044497600 -10800 1 PYST} + {2057194800 -14400 0 PYT} + {2076552000 -10800 1 PYST} + {2088644400 -14400 0 PYT} + {2108001600 -10800 1 PYST} + {2120094000 -14400 0 PYT} + {2139451200 -10800 1 PYST} + {2152148400 -14400 0 PYT} + {2170900800 -10800 1 PYST} + {2183598000 -14400 0 PYT} + {2202350400 -10800 1 PYST} + {2215047600 -14400 0 PYT} + {2234404800 -10800 1 PYST} + {2246497200 -14400 0 PYT} + {2265854400 -10800 1 PYST} + {2277946800 -14400 0 PYT} + {2297304000 -10800 1 PYST} + {2309396400 -14400 0 PYT} + {2328753600 -10800 1 PYST} + {2341450800 -14400 0 PYT} + {2360203200 -10800 1 PYST} + {2372900400 -14400 0 PYT} + {2391652800 -10800 1 PYST} + {2404350000 -14400 0 PYT} + {2423707200 -10800 1 PYST} + {2435799600 -14400 0 PYT} + {2455156800 -10800 1 PYST} + {2467249200 -14400 0 PYT} + {2486606400 -10800 1 PYST} + {2499303600 -14400 0 PYT} + {2518056000 -10800 1 PYST} + {2530753200 -14400 0 PYT} + {2549505600 -10800 1 PYST} + {2562202800 -14400 0 PYT} + {2580955200 -10800 1 PYST} + {2593652400 -14400 0 PYT} + {2613009600 -10800 1 PYST} + {2625102000 -14400 0 PYT} + {2644459200 -10800 1 PYST} + {2656551600 -14400 0 PYT} + {2675908800 -10800 1 PYST} + {2688606000 -14400 0 PYT} + {2707358400 -10800 1 PYST} + {2720055600 -14400 0 PYT} + {2738808000 -10800 1 PYST} + {2751505200 -14400 0 PYT} + {2770862400 -10800 1 PYST} + {2782954800 -14400 0 PYT} + {2802312000 -10800 1 PYST} + {2814404400 -14400 0 PYT} + {2833761600 -10800 1 PYST} + {2846458800 -14400 0 PYT} + {2865211200 -10800 1 PYST} + {2877908400 -14400 0 PYT} + {2896660800 -10800 1 PYST} + {2909358000 -14400 0 PYT} + {2928110400 -10800 1 PYST} + {2940807600 -14400 0 PYT} + {2960164800 -10800 1 PYST} + {2972257200 -14400 0 PYT} + {2991614400 -10800 1 PYST} + {3003706800 -14400 0 PYT} + {3023064000 -10800 1 PYST} + {3035761200 -14400 0 PYT} + {3054513600 -10800 1 PYST} + {3067210800 -14400 0 PYT} + {3085963200 -10800 1 PYST} + {3098660400 -14400 0 PYT} + {3118017600 -10800 1 PYST} + {3130110000 -14400 0 PYT} + {3149467200 -10800 1 PYST} + {3161559600 -14400 0 PYT} + {3180916800 -10800 1 PYST} + {3193009200 -14400 0 PYT} + {3212366400 -10800 1 PYST} + {3225063600 -14400 0 PYT} + {3243816000 -10800 1 PYST} + {3256513200 -14400 0 PYT} + {3275265600 -10800 1 PYST} + {3287962800 -14400 0 PYT} + {3307320000 -10800 1 PYST} + {3319412400 -14400 0 PYT} + {3338769600 -10800 1 PYST} + {3350862000 -14400 0 PYT} + {3370219200 -10800 1 PYST} + {3382916400 -14400 0 PYT} + {3401668800 -10800 1 PYST} + {3414366000 -14400 0 PYT} + {3433118400 -10800 1 PYST} + {3445815600 -14400 0 PYT} + {3464568000 -10800 1 PYST} + {3477265200 -14400 0 PYT} + {3496622400 -10800 1 PYST} + {3508714800 -14400 0 PYT} + {3528072000 -10800 1 PYST} + {3540164400 -14400 0 PYT} + {3559521600 -10800 1 PYST} + {3572218800 -14400 0 PYT} + {3590971200 -10800 1 PYST} + {3603668400 -14400 0 PYT} + {3622420800 -10800 1 PYST} + {3635118000 -14400 0 PYT} + {3654475200 -10800 1 PYST} + {3666567600 -14400 0 PYT} + {3685924800 -10800 1 PYST} + {3698017200 -14400 0 PYT} + {3717374400 -10800 1 PYST} + {3730071600 -14400 0 PYT} + {3748824000 -10800 1 PYST} + {3761521200 -14400 0 PYT} + {3780273600 -10800 1 PYST} + {3792970800 -14400 0 PYT} + {3811723200 -10800 1 PYST} + {3824420400 -14400 0 PYT} + {3843777600 -10800 1 PYST} + {3855870000 -14400 0 PYT} + {3875227200 -10800 1 PYST} + {3887319600 -14400 0 PYT} + {3906676800 -10800 1 PYST} + {3919374000 -14400 0 PYT} + {3938126400 -10800 1 PYST} + {3950823600 -14400 0 PYT} + {3969576000 -10800 1 PYST} + {3982273200 -14400 0 PYT} + {4001630400 -10800 1 PYST} + {4013722800 -14400 0 PYT} + {4033080000 -10800 1 PYST} + {4045172400 -14400 0 PYT} + {4064529600 -10800 1 PYST} + {4076622000 -14400 0 PYT} + {4095979200 -10800 1 PYST} +} diff --git a/library/tzdata/America/Atikokan b/library/tzdata/America/Atikokan index b34b7ff..ca0ac1c 100755 --- a/library/tzdata/America/Atikokan +++ b/library/tzdata/America/Atikokan @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Atikokan) { - {-9223372036854775808 -21988 0 LMT} - {-2366733212 -21600 0 CST} - {-1632067200 -18000 1 CDT} - {-1614790800 -21600 0 CST} - {-923248800 -18000 1 CDT} - {-880214400 -18000 0 CWT} - {-769395600 -18000 1 CPT} - {-765388800 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Atikokan) { + {-9223372036854775808 -21988 0 LMT} + {-2366733212 -21600 0 CST} + {-1632067200 -18000 1 CDT} + {-1614790800 -21600 0 CST} + {-923248800 -18000 1 CDT} + {-880214400 -18000 0 CWT} + {-769395600 -18000 1 CPT} + {-765388800 -18000 0 EST} +} diff --git a/library/tzdata/America/Atka b/library/tzdata/America/Atka index 2767382..8da3302 100644 --- a/library/tzdata/America/Atka +++ b/library/tzdata/America/Atka @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Adak)]} { - LoadTimeZoneFile America/Adak -} -set TZData(:America/Atka) $TZData(:America/Adak) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Adak)]} { + LoadTimeZoneFile America/Adak +} +set TZData(:America/Atka) $TZData(:America/Adak) diff --git a/library/tzdata/America/Bahia b/library/tzdata/America/Bahia index 3225b72..b10a939 100644 --- a/library/tzdata/America/Bahia +++ b/library/tzdata/America/Bahia @@ -1,65 +1,65 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Bahia) { - {-9223372036854775808 -9244 0 LMT} - {-1767216356 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {656478000 -7200 1 BRST} - {666756000 -10800 0 BRT} - {687927600 -7200 1 BRST} - {697600800 -10800 0 BRT} - {719982000 -7200 1 BRST} - {728445600 -10800 0 BRT} - {750826800 -7200 1 BRST} - {761709600 -10800 0 BRT} - {782276400 -7200 1 BRST} - {793159200 -10800 0 BRT} - {813726000 -7200 1 BRST} - {824004000 -10800 0 BRT} - {844570800 -7200 1 BRST} - {856058400 -10800 0 BRT} - {876106800 -7200 1 BRST} - {888717600 -10800 0 BRT} - {908074800 -7200 1 BRST} - {919562400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {982461600 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1036292400 -7200 1 BRST} - {1045360800 -10800 0 BRT} - {1064368800 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Bahia) { + {-9223372036854775808 -9244 0 LMT} + {-1767216356 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {656478000 -7200 1 BRST} + {666756000 -10800 0 BRT} + {687927600 -7200 1 BRST} + {697600800 -10800 0 BRT} + {719982000 -7200 1 BRST} + {728445600 -10800 0 BRT} + {750826800 -7200 1 BRST} + {761709600 -10800 0 BRT} + {782276400 -7200 1 BRST} + {793159200 -10800 0 BRT} + {813726000 -7200 1 BRST} + {824004000 -10800 0 BRT} + {844570800 -7200 1 BRST} + {856058400 -10800 0 BRT} + {876106800 -7200 1 BRST} + {888717600 -10800 0 BRT} + {908074800 -7200 1 BRST} + {919562400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {982461600 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1036292400 -7200 1 BRST} + {1045360800 -10800 0 BRT} + {1064368800 -10800 0 BRT} +} diff --git a/library/tzdata/America/Barbados b/library/tzdata/America/Barbados index 3e7c244..5c06408 100644 --- a/library/tzdata/America/Barbados +++ b/library/tzdata/America/Barbados @@ -1,15 +1,15 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Barbados) { - {-9223372036854775808 -14308 0 LMT} - {-1451678492 -14308 0 BMT} - {-1199217692 -14400 0 AST} - {234943200 -10800 1 ADT} - {244616400 -14400 0 AST} - {261554400 -10800 1 ADT} - {276066000 -14400 0 AST} - {293004000 -10800 1 ADT} - {307515600 -14400 0 AST} - {325058400 -10800 1 ADT} - {338706000 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Barbados) { + {-9223372036854775808 -14308 0 LMT} + {-1451678492 -14308 0 BMT} + {-1199217692 -14400 0 AST} + {234943200 -10800 1 ADT} + {244616400 -14400 0 AST} + {261554400 -10800 1 ADT} + {276066000 -14400 0 AST} + {293004000 -10800 1 ADT} + {307515600 -14400 0 AST} + {325058400 -10800 1 ADT} + {338706000 -14400 0 AST} +} diff --git a/library/tzdata/America/Belem b/library/tzdata/America/Belem index d68c584..ed92fd1 100644 --- a/library/tzdata/America/Belem +++ b/library/tzdata/America/Belem @@ -1,35 +1,35 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Belem) { - {-9223372036854775808 -11636 0 LMT} - {-1767213964 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {590032800 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Belem) { + {-9223372036854775808 -11636 0 LMT} + {-1767213964 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {590032800 -10800 0 BRT} +} diff --git a/library/tzdata/America/Belize b/library/tzdata/America/Belize index 505f3f6..547fd72 100644 --- a/library/tzdata/America/Belize +++ b/library/tzdata/America/Belize @@ -1,60 +1,60 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Belize) { - {-9223372036854775808 -21168 0 LMT} - {-1822500432 -21600 0 CST} - {-1616954400 -19800 1 CHDT} - {-1606069800 -21600 0 CST} - {-1585504800 -19800 1 CHDT} - {-1574015400 -21600 0 CST} - {-1554055200 -19800 1 CHDT} - {-1542565800 -21600 0 CST} - {-1522605600 -19800 1 CHDT} - {-1511116200 -21600 0 CST} - {-1490551200 -19800 1 CHDT} - {-1479666600 -21600 0 CST} - {-1459101600 -19800 1 CHDT} - {-1448217000 -21600 0 CST} - {-1427652000 -19800 1 CHDT} - {-1416162600 -21600 0 CST} - {-1396202400 -19800 1 CHDT} - {-1384713000 -21600 0 CST} - {-1364752800 -19800 1 CHDT} - {-1353263400 -21600 0 CST} - {-1333303200 -19800 1 CHDT} - {-1321813800 -21600 0 CST} - {-1301248800 -19800 1 CHDT} - {-1290364200 -21600 0 CST} - {-1269799200 -19800 1 CHDT} - {-1258914600 -21600 0 CST} - {-1238349600 -19800 1 CHDT} - {-1226860200 -21600 0 CST} - {-1206900000 -19800 1 CHDT} - {-1195410600 -21600 0 CST} - {-1175450400 -19800 1 CHDT} - {-1163961000 -21600 0 CST} - {-1143396000 -19800 1 CHDT} - {-1132511400 -21600 0 CST} - {-1111946400 -19800 1 CHDT} - {-1101061800 -21600 0 CST} - {-1080496800 -19800 1 CHDT} - {-1069612200 -21600 0 CST} - {-1049047200 -19800 1 CHDT} - {-1037557800 -21600 0 CST} - {-1017597600 -19800 1 CHDT} - {-1006108200 -21600 0 CST} - {-986148000 -19800 1 CHDT} - {-974658600 -21600 0 CST} - {-954093600 -19800 1 CHDT} - {-943209000 -21600 0 CST} - {-922644000 -19800 1 CHDT} - {-911759400 -21600 0 CST} - {-891194400 -19800 1 CHDT} - {-879705000 -21600 0 CST} - {-859744800 -19800 1 CHDT} - {-848255400 -21600 0 CST} - {123919200 -18000 1 CDT} - {129618000 -21600 0 CST} - {409039200 -18000 1 CDT} - {413874000 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Belize) { + {-9223372036854775808 -21168 0 LMT} + {-1822500432 -21600 0 CST} + {-1616954400 -19800 1 CHDT} + {-1606069800 -21600 0 CST} + {-1585504800 -19800 1 CHDT} + {-1574015400 -21600 0 CST} + {-1554055200 -19800 1 CHDT} + {-1542565800 -21600 0 CST} + {-1522605600 -19800 1 CHDT} + {-1511116200 -21600 0 CST} + {-1490551200 -19800 1 CHDT} + {-1479666600 -21600 0 CST} + {-1459101600 -19800 1 CHDT} + {-1448217000 -21600 0 CST} + {-1427652000 -19800 1 CHDT} + {-1416162600 -21600 0 CST} + {-1396202400 -19800 1 CHDT} + {-1384713000 -21600 0 CST} + {-1364752800 -19800 1 CHDT} + {-1353263400 -21600 0 CST} + {-1333303200 -19800 1 CHDT} + {-1321813800 -21600 0 CST} + {-1301248800 -19800 1 CHDT} + {-1290364200 -21600 0 CST} + {-1269799200 -19800 1 CHDT} + {-1258914600 -21600 0 CST} + {-1238349600 -19800 1 CHDT} + {-1226860200 -21600 0 CST} + {-1206900000 -19800 1 CHDT} + {-1195410600 -21600 0 CST} + {-1175450400 -19800 1 CHDT} + {-1163961000 -21600 0 CST} + {-1143396000 -19800 1 CHDT} + {-1132511400 -21600 0 CST} + {-1111946400 -19800 1 CHDT} + {-1101061800 -21600 0 CST} + {-1080496800 -19800 1 CHDT} + {-1069612200 -21600 0 CST} + {-1049047200 -19800 1 CHDT} + {-1037557800 -21600 0 CST} + {-1017597600 -19800 1 CHDT} + {-1006108200 -21600 0 CST} + {-986148000 -19800 1 CHDT} + {-974658600 -21600 0 CST} + {-954093600 -19800 1 CHDT} + {-943209000 -21600 0 CST} + {-922644000 -19800 1 CHDT} + {-911759400 -21600 0 CST} + {-891194400 -19800 1 CHDT} + {-879705000 -21600 0 CST} + {-859744800 -19800 1 CHDT} + {-848255400 -21600 0 CST} + {123919200 -18000 1 CDT} + {129618000 -21600 0 CST} + {409039200 -18000 1 CDT} + {413874000 -21600 0 CST} +} diff --git a/library/tzdata/America/Blanc-Sablon b/library/tzdata/America/Blanc-Sablon index e1d7333..47f161a 100755 --- a/library/tzdata/America/Blanc-Sablon +++ b/library/tzdata/America/Blanc-Sablon @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Blanc-Sablon) { - {-9223372036854775808 -13708 0 LMT} - {-2713896692 -14400 0 AST} - {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} - {-880221600 -10800 1 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {14400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Blanc-Sablon) { + {-9223372036854775808 -13708 0 LMT} + {-2713896692 -14400 0 AST} + {-1632074400 -10800 1 ADT} + {-1614798000 -14400 0 AST} + {-880221600 -10800 1 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {14400 -14400 0 AST} +} diff --git a/library/tzdata/America/Boa_Vista b/library/tzdata/America/Boa_Vista index 50634cd..c85bc27 100644 --- a/library/tzdata/America/Boa_Vista +++ b/library/tzdata/America/Boa_Vista @@ -1,40 +1,40 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Boa_Vista) { - {-9223372036854775808 -14560 0 LMT} - {-1767211040 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {590036400 -14400 0 AMT} - {938664000 -14400 0 AMT} - {938923200 -10800 1 AMST} - {951620400 -14400 0 AMT} - {970977600 -10800 1 AMST} - {971578800 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Boa_Vista) { + {-9223372036854775808 -14560 0 LMT} + {-1767211040 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {590036400 -14400 0 AMT} + {938664000 -14400 0 AMT} + {938923200 -10800 1 AMST} + {951620400 -14400 0 AMT} + {970977600 -10800 1 AMST} + {971578800 -14400 0 AMT} +} diff --git a/library/tzdata/America/Bogota b/library/tzdata/America/Bogota index e2ba04c..f727d17 100644 --- a/library/tzdata/America/Bogota +++ b/library/tzdata/America/Bogota @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Bogota) { - {-9223372036854775808 -17780 0 LMT} - {-2707671820 -17780 0 BMT} - {-1739041420 -18000 0 COT} - {704869200 -14400 1 COST} - {733896000 -18000 0 COT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Bogota) { + {-9223372036854775808 -17780 0 LMT} + {-2707671820 -17780 0 BMT} + {-1739041420 -18000 0 COT} + {704869200 -14400 1 COST} + {733896000 -18000 0 COT} +} diff --git a/library/tzdata/America/Boise b/library/tzdata/America/Boise index e3a2cd9..62b22a0 100644 --- a/library/tzdata/America/Boise +++ b/library/tzdata/America/Boise @@ -1,281 +1,281 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Boise) { - {-9223372036854775808 -27889 0 LMT} - {-2717640000 -28800 0 PST} - {-1633269600 -25200 1 PDT} - {-1615129200 -28800 0 PST} - {-1601820000 -25200 1 PDT} - {-1583679600 -28800 0 PST} - {-1471788000 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126255600 -25200 0 MST} - {129114000 -21600 0 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Boise) { + {-9223372036854775808 -27889 0 LMT} + {-2717640000 -28800 0 PST} + {-1633269600 -25200 1 PDT} + {-1615129200 -28800 0 PST} + {-1601820000 -25200 1 PDT} + {-1583679600 -28800 0 PST} + {-1471788000 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126255600 -25200 0 MST} + {129114000 -21600 0 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Buenos_Aires b/library/tzdata/America/Buenos_Aires index 39f3b18..1389195 100644 --- a/library/tzdata/America/Buenos_Aires +++ b/library/tzdata/America/Buenos_Aires @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Buenos_Aires)]} { - LoadTimeZoneFile America/Argentina/Buenos_Aires -} -set TZData(:America/Buenos_Aires) $TZData(:America/Argentina/Buenos_Aires) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Buenos_Aires)]} { + LoadTimeZoneFile America/Argentina/Buenos_Aires +} +set TZData(:America/Buenos_Aires) $TZData(:America/Argentina/Buenos_Aires) diff --git a/library/tzdata/America/Cambridge_Bay b/library/tzdata/America/Cambridge_Bay index aa3ae53..23004bb 100644 --- a/library/tzdata/America/Cambridge_Bay +++ b/library/tzdata/America/Cambridge_Bay @@ -1,252 +1,252 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cambridge_Bay) { - {-9223372036854775808 0 0 zzz} - {-1577923200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-147891600 -18000 1 MDDT} - {-131562000 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941360400 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {973400400 -21600 0 CST} - {986115600 -21600 0 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cambridge_Bay) { + {-9223372036854775808 0 0 zzz} + {-1577923200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-147891600 -18000 1 MDDT} + {-131562000 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941360400 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {973400400 -21600 0 CST} + {986115600 -21600 0 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Campo_Grande b/library/tzdata/America/Campo_Grande index 78ad47d..2cafe14 100644 --- a/library/tzdata/America/Campo_Grande +++ b/library/tzdata/America/Campo_Grande @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Campo_Grande) { - {-9223372036854775808 -13108 0 LMT} - {-1767212492 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {592977600 -10800 1 AMST} - {602046000 -14400 0 AMT} - {624427200 -10800 1 AMST} - {634705200 -14400 0 AMT} - {656481600 -10800 1 AMST} - {666759600 -14400 0 AMT} - {687931200 -10800 1 AMST} - {697604400 -14400 0 AMT} - {719985600 -10800 1 AMST} - {728449200 -14400 0 AMT} - {750830400 -10800 1 AMST} - {761713200 -14400 0 AMT} - {782280000 -10800 1 AMST} - {793162800 -14400 0 AMT} - {813729600 -10800 1 AMST} - {824007600 -14400 0 AMT} - {844574400 -10800 1 AMST} - {856062000 -14400 0 AMT} - {876110400 -10800 1 AMST} - {888721200 -14400 0 AMT} - {908078400 -10800 1 AMST} - {919566000 -14400 0 AMT} - {938923200 -10800 1 AMST} - {951620400 -14400 0 AMT} - {970977600 -10800 1 AMST} - {982465200 -14400 0 AMT} - {1003032000 -10800 1 AMST} - {1013914800 -14400 0 AMT} - {1036296000 -10800 1 AMST} - {1045364400 -14400 0 AMT} - {1066536000 -10800 1 AMST} - {1076814000 -14400 0 AMT} - {1099368000 -10800 1 AMST} - {1108868400 -14400 0 AMT} - {1129435200 -10800 1 AMST} - {1140318000 -14400 0 AMT} - {1162699200 -10800 1 AMST} - {1172372400 -14400 0 AMT} - {1192334400 -10800 1 AMST} - {1203217200 -14400 0 AMT} - {1224388800 -10800 1 AMST} - {1234666800 -14400 0 AMT} - {1255838400 -10800 1 AMST} - {1266721200 -14400 0 AMT} - {1287288000 -10800 1 AMST} - {1298170800 -14400 0 AMT} - {1318737600 -10800 1 AMST} - {1330225200 -14400 0 AMT} - {1350792000 -10800 1 AMST} - {1361070000 -14400 0 AMT} - {1382241600 -10800 1 AMST} - {1392519600 -14400 0 AMT} - {1413691200 -10800 1 AMST} - {1424574000 -14400 0 AMT} - {1445140800 -10800 1 AMST} - {1456023600 -14400 0 AMT} - {1476590400 -10800 1 AMST} - {1487473200 -14400 0 AMT} - {1508040000 -10800 1 AMST} - {1518922800 -14400 0 AMT} - {1540094400 -10800 1 AMST} - {1550372400 -14400 0 AMT} - {1571544000 -10800 1 AMST} - {1581822000 -14400 0 AMT} - {1602993600 -10800 1 AMST} - {1613876400 -14400 0 AMT} - {1634443200 -10800 1 AMST} - {1645326000 -14400 0 AMT} - {1665892800 -10800 1 AMST} - {1677380400 -14400 0 AMT} - {1697342400 -10800 1 AMST} - {1708225200 -14400 0 AMT} - {1729396800 -10800 1 AMST} - {1739674800 -14400 0 AMT} - {1760846400 -10800 1 AMST} - {1771729200 -14400 0 AMT} - {1792296000 -10800 1 AMST} - {1803178800 -14400 0 AMT} - {1823745600 -10800 1 AMST} - {1834628400 -14400 0 AMT} - {1855195200 -10800 1 AMST} - {1866078000 -14400 0 AMT} - {1887249600 -10800 1 AMST} - {1897527600 -14400 0 AMT} - {1918699200 -10800 1 AMST} - {1928977200 -14400 0 AMT} - {1950148800 -10800 1 AMST} - {1960426800 -14400 0 AMT} - {1981598400 -10800 1 AMST} - {1992481200 -14400 0 AMT} - {2013048000 -10800 1 AMST} - {2024535600 -14400 0 AMT} - {2044497600 -10800 1 AMST} - {2055380400 -14400 0 AMT} - {2076552000 -10800 1 AMST} - {2086830000 -14400 0 AMT} - {2108001600 -10800 1 AMST} - {2118884400 -14400 0 AMT} - {2139451200 -10800 1 AMST} - {2150334000 -14400 0 AMT} - {2170900800 -10800 1 AMST} - {2181783600 -14400 0 AMT} - {2202350400 -10800 1 AMST} - {2213233200 -14400 0 AMT} - {2234404800 -10800 1 AMST} - {2244682800 -14400 0 AMT} - {2265854400 -10800 1 AMST} - {2276132400 -14400 0 AMT} - {2297304000 -10800 1 AMST} - {2307582000 -14400 0 AMT} - {2328753600 -10800 1 AMST} - {2339636400 -14400 0 AMT} - {2360203200 -10800 1 AMST} - {2371086000 -14400 0 AMT} - {2391652800 -10800 1 AMST} - {2402535600 -14400 0 AMT} - {2423707200 -10800 1 AMST} - {2433985200 -14400 0 AMT} - {2455156800 -10800 1 AMST} - {2465434800 -14400 0 AMT} - {2486606400 -10800 1 AMST} - {2497489200 -14400 0 AMT} - {2518056000 -10800 1 AMST} - {2528938800 -14400 0 AMT} - {2549505600 -10800 1 AMST} - {2560388400 -14400 0 AMT} - {2580955200 -10800 1 AMST} - {2591838000 -14400 0 AMT} - {2613009600 -10800 1 AMST} - {2623287600 -14400 0 AMT} - {2644459200 -10800 1 AMST} - {2654737200 -14400 0 AMT} - {2675908800 -10800 1 AMST} - {2686791600 -14400 0 AMT} - {2707358400 -10800 1 AMST} - {2718241200 -14400 0 AMT} - {2738808000 -10800 1 AMST} - {2749690800 -14400 0 AMT} - {2770862400 -10800 1 AMST} - {2781140400 -14400 0 AMT} - {2802312000 -10800 1 AMST} - {2812590000 -14400 0 AMT} - {2833761600 -10800 1 AMST} - {2844039600 -14400 0 AMT} - {2865211200 -10800 1 AMST} - {2876094000 -14400 0 AMT} - {2896660800 -10800 1 AMST} - {2907543600 -14400 0 AMT} - {2928110400 -10800 1 AMST} - {2938993200 -14400 0 AMT} - {2960164800 -10800 1 AMST} - {2970442800 -14400 0 AMT} - {2991614400 -10800 1 AMST} - {3001892400 -14400 0 AMT} - {3023064000 -10800 1 AMST} - {3033946800 -14400 0 AMT} - {3054513600 -10800 1 AMST} - {3065396400 -14400 0 AMT} - {3085963200 -10800 1 AMST} - {3096846000 -14400 0 AMT} - {3118017600 -10800 1 AMST} - {3128295600 -14400 0 AMT} - {3149467200 -10800 1 AMST} - {3159745200 -14400 0 AMT} - {3180916800 -10800 1 AMST} - {3191194800 -14400 0 AMT} - {3212366400 -10800 1 AMST} - {3223249200 -14400 0 AMT} - {3243816000 -10800 1 AMST} - {3254698800 -14400 0 AMT} - {3275265600 -10800 1 AMST} - {3286148400 -14400 0 AMT} - {3307320000 -10800 1 AMST} - {3317598000 -14400 0 AMT} - {3338769600 -10800 1 AMST} - {3349047600 -14400 0 AMT} - {3370219200 -10800 1 AMST} - {3381102000 -14400 0 AMT} - {3401668800 -10800 1 AMST} - {3412551600 -14400 0 AMT} - {3433118400 -10800 1 AMST} - {3444001200 -14400 0 AMT} - {3464568000 -10800 1 AMST} - {3475450800 -14400 0 AMT} - {3496622400 -10800 1 AMST} - {3506900400 -14400 0 AMT} - {3528072000 -10800 1 AMST} - {3538350000 -14400 0 AMT} - {3559521600 -10800 1 AMST} - {3570404400 -14400 0 AMT} - {3590971200 -10800 1 AMST} - {3601854000 -14400 0 AMT} - {3622420800 -10800 1 AMST} - {3633303600 -14400 0 AMT} - {3654475200 -10800 1 AMST} - {3664753200 -14400 0 AMT} - {3685924800 -10800 1 AMST} - {3696202800 -14400 0 AMT} - {3717374400 -10800 1 AMST} - {3727652400 -14400 0 AMT} - {3748824000 -10800 1 AMST} - {3759706800 -14400 0 AMT} - {3780273600 -10800 1 AMST} - {3791156400 -14400 0 AMT} - {3811723200 -10800 1 AMST} - {3822606000 -14400 0 AMT} - {3843777600 -10800 1 AMST} - {3854055600 -14400 0 AMT} - {3875227200 -10800 1 AMST} - {3885505200 -14400 0 AMT} - {3906676800 -10800 1 AMST} - {3917559600 -14400 0 AMT} - {3938126400 -10800 1 AMST} - {3949009200 -14400 0 AMT} - {3969576000 -10800 1 AMST} - {3980458800 -14400 0 AMT} - {4001630400 -10800 1 AMST} - {4011908400 -14400 0 AMT} - {4033080000 -10800 1 AMST} - {4043358000 -14400 0 AMT} - {4064529600 -10800 1 AMST} - {4074807600 -14400 0 AMT} - {4095979200 -10800 1 AMST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Campo_Grande) { + {-9223372036854775808 -13108 0 LMT} + {-1767212492 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {592977600 -10800 1 AMST} + {602046000 -14400 0 AMT} + {624427200 -10800 1 AMST} + {634705200 -14400 0 AMT} + {656481600 -10800 1 AMST} + {666759600 -14400 0 AMT} + {687931200 -10800 1 AMST} + {697604400 -14400 0 AMT} + {719985600 -10800 1 AMST} + {728449200 -14400 0 AMT} + {750830400 -10800 1 AMST} + {761713200 -14400 0 AMT} + {782280000 -10800 1 AMST} + {793162800 -14400 0 AMT} + {813729600 -10800 1 AMST} + {824007600 -14400 0 AMT} + {844574400 -10800 1 AMST} + {856062000 -14400 0 AMT} + {876110400 -10800 1 AMST} + {888721200 -14400 0 AMT} + {908078400 -10800 1 AMST} + {919566000 -14400 0 AMT} + {938923200 -10800 1 AMST} + {951620400 -14400 0 AMT} + {970977600 -10800 1 AMST} + {982465200 -14400 0 AMT} + {1003032000 -10800 1 AMST} + {1013914800 -14400 0 AMT} + {1036296000 -10800 1 AMST} + {1045364400 -14400 0 AMT} + {1066536000 -10800 1 AMST} + {1076814000 -14400 0 AMT} + {1099368000 -10800 1 AMST} + {1108868400 -14400 0 AMT} + {1129435200 -10800 1 AMST} + {1140318000 -14400 0 AMT} + {1162699200 -10800 1 AMST} + {1172372400 -14400 0 AMT} + {1192334400 -10800 1 AMST} + {1203217200 -14400 0 AMT} + {1224388800 -10800 1 AMST} + {1234666800 -14400 0 AMT} + {1255838400 -10800 1 AMST} + {1266721200 -14400 0 AMT} + {1287288000 -10800 1 AMST} + {1298170800 -14400 0 AMT} + {1318737600 -10800 1 AMST} + {1330225200 -14400 0 AMT} + {1350792000 -10800 1 AMST} + {1361070000 -14400 0 AMT} + {1382241600 -10800 1 AMST} + {1392519600 -14400 0 AMT} + {1413691200 -10800 1 AMST} + {1424574000 -14400 0 AMT} + {1445140800 -10800 1 AMST} + {1456023600 -14400 0 AMT} + {1476590400 -10800 1 AMST} + {1487473200 -14400 0 AMT} + {1508040000 -10800 1 AMST} + {1518922800 -14400 0 AMT} + {1540094400 -10800 1 AMST} + {1550372400 -14400 0 AMT} + {1571544000 -10800 1 AMST} + {1581822000 -14400 0 AMT} + {1602993600 -10800 1 AMST} + {1613876400 -14400 0 AMT} + {1634443200 -10800 1 AMST} + {1645326000 -14400 0 AMT} + {1665892800 -10800 1 AMST} + {1677380400 -14400 0 AMT} + {1697342400 -10800 1 AMST} + {1708225200 -14400 0 AMT} + {1729396800 -10800 1 AMST} + {1739674800 -14400 0 AMT} + {1760846400 -10800 1 AMST} + {1771729200 -14400 0 AMT} + {1792296000 -10800 1 AMST} + {1803178800 -14400 0 AMT} + {1823745600 -10800 1 AMST} + {1834628400 -14400 0 AMT} + {1855195200 -10800 1 AMST} + {1866078000 -14400 0 AMT} + {1887249600 -10800 1 AMST} + {1897527600 -14400 0 AMT} + {1918699200 -10800 1 AMST} + {1928977200 -14400 0 AMT} + {1950148800 -10800 1 AMST} + {1960426800 -14400 0 AMT} + {1981598400 -10800 1 AMST} + {1992481200 -14400 0 AMT} + {2013048000 -10800 1 AMST} + {2024535600 -14400 0 AMT} + {2044497600 -10800 1 AMST} + {2055380400 -14400 0 AMT} + {2076552000 -10800 1 AMST} + {2086830000 -14400 0 AMT} + {2108001600 -10800 1 AMST} + {2118884400 -14400 0 AMT} + {2139451200 -10800 1 AMST} + {2150334000 -14400 0 AMT} + {2170900800 -10800 1 AMST} + {2181783600 -14400 0 AMT} + {2202350400 -10800 1 AMST} + {2213233200 -14400 0 AMT} + {2234404800 -10800 1 AMST} + {2244682800 -14400 0 AMT} + {2265854400 -10800 1 AMST} + {2276132400 -14400 0 AMT} + {2297304000 -10800 1 AMST} + {2307582000 -14400 0 AMT} + {2328753600 -10800 1 AMST} + {2339636400 -14400 0 AMT} + {2360203200 -10800 1 AMST} + {2371086000 -14400 0 AMT} + {2391652800 -10800 1 AMST} + {2402535600 -14400 0 AMT} + {2423707200 -10800 1 AMST} + {2433985200 -14400 0 AMT} + {2455156800 -10800 1 AMST} + {2465434800 -14400 0 AMT} + {2486606400 -10800 1 AMST} + {2497489200 -14400 0 AMT} + {2518056000 -10800 1 AMST} + {2528938800 -14400 0 AMT} + {2549505600 -10800 1 AMST} + {2560388400 -14400 0 AMT} + {2580955200 -10800 1 AMST} + {2591838000 -14400 0 AMT} + {2613009600 -10800 1 AMST} + {2623287600 -14400 0 AMT} + {2644459200 -10800 1 AMST} + {2654737200 -14400 0 AMT} + {2675908800 -10800 1 AMST} + {2686791600 -14400 0 AMT} + {2707358400 -10800 1 AMST} + {2718241200 -14400 0 AMT} + {2738808000 -10800 1 AMST} + {2749690800 -14400 0 AMT} + {2770862400 -10800 1 AMST} + {2781140400 -14400 0 AMT} + {2802312000 -10800 1 AMST} + {2812590000 -14400 0 AMT} + {2833761600 -10800 1 AMST} + {2844039600 -14400 0 AMT} + {2865211200 -10800 1 AMST} + {2876094000 -14400 0 AMT} + {2896660800 -10800 1 AMST} + {2907543600 -14400 0 AMT} + {2928110400 -10800 1 AMST} + {2938993200 -14400 0 AMT} + {2960164800 -10800 1 AMST} + {2970442800 -14400 0 AMT} + {2991614400 -10800 1 AMST} + {3001892400 -14400 0 AMT} + {3023064000 -10800 1 AMST} + {3033946800 -14400 0 AMT} + {3054513600 -10800 1 AMST} + {3065396400 -14400 0 AMT} + {3085963200 -10800 1 AMST} + {3096846000 -14400 0 AMT} + {3118017600 -10800 1 AMST} + {3128295600 -14400 0 AMT} + {3149467200 -10800 1 AMST} + {3159745200 -14400 0 AMT} + {3180916800 -10800 1 AMST} + {3191194800 -14400 0 AMT} + {3212366400 -10800 1 AMST} + {3223249200 -14400 0 AMT} + {3243816000 -10800 1 AMST} + {3254698800 -14400 0 AMT} + {3275265600 -10800 1 AMST} + {3286148400 -14400 0 AMT} + {3307320000 -10800 1 AMST} + {3317598000 -14400 0 AMT} + {3338769600 -10800 1 AMST} + {3349047600 -14400 0 AMT} + {3370219200 -10800 1 AMST} + {3381102000 -14400 0 AMT} + {3401668800 -10800 1 AMST} + {3412551600 -14400 0 AMT} + {3433118400 -10800 1 AMST} + {3444001200 -14400 0 AMT} + {3464568000 -10800 1 AMST} + {3475450800 -14400 0 AMT} + {3496622400 -10800 1 AMST} + {3506900400 -14400 0 AMT} + {3528072000 -10800 1 AMST} + {3538350000 -14400 0 AMT} + {3559521600 -10800 1 AMST} + {3570404400 -14400 0 AMT} + {3590971200 -10800 1 AMST} + {3601854000 -14400 0 AMT} + {3622420800 -10800 1 AMST} + {3633303600 -14400 0 AMT} + {3654475200 -10800 1 AMST} + {3664753200 -14400 0 AMT} + {3685924800 -10800 1 AMST} + {3696202800 -14400 0 AMT} + {3717374400 -10800 1 AMST} + {3727652400 -14400 0 AMT} + {3748824000 -10800 1 AMST} + {3759706800 -14400 0 AMT} + {3780273600 -10800 1 AMST} + {3791156400 -14400 0 AMT} + {3811723200 -10800 1 AMST} + {3822606000 -14400 0 AMT} + {3843777600 -10800 1 AMST} + {3854055600 -14400 0 AMT} + {3875227200 -10800 1 AMST} + {3885505200 -14400 0 AMT} + {3906676800 -10800 1 AMST} + {3917559600 -14400 0 AMT} + {3938126400 -10800 1 AMST} + {3949009200 -14400 0 AMT} + {3969576000 -10800 1 AMST} + {3980458800 -14400 0 AMT} + {4001630400 -10800 1 AMST} + {4011908400 -14400 0 AMT} + {4033080000 -10800 1 AMST} + {4043358000 -14400 0 AMT} + {4064529600 -10800 1 AMST} + {4074807600 -14400 0 AMT} + {4095979200 -10800 1 AMST} +} diff --git a/library/tzdata/America/Cancun b/library/tzdata/America/Cancun index bc68193..1620b15 100644 --- a/library/tzdata/America/Cancun +++ b/library/tzdata/America/Cancun @@ -1,216 +1,216 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cancun) { - {-9223372036854775808 -20824 0 LMT} - {-1514743200 -21600 0 CST} - {377935200 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {902041200 -18000 0 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {989136000 -18000 1 CDT} - {1001833200 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1175414400 -18000 1 CDT} - {1193554800 -21600 0 CST} - {1207468800 -18000 1 CDT} - {1225004400 -21600 0 CST} - {1238918400 -18000 1 CDT} - {1256454000 -21600 0 CST} - {1270368000 -18000 1 CDT} - {1288508400 -21600 0 CST} - {1301817600 -18000 1 CDT} - {1319958000 -21600 0 CST} - {1333267200 -18000 1 CDT} - {1351407600 -21600 0 CST} - {1365321600 -18000 1 CDT} - {1382857200 -21600 0 CST} - {1396771200 -18000 1 CDT} - {1414306800 -21600 0 CST} - {1428220800 -18000 1 CDT} - {1445756400 -21600 0 CST} - {1459670400 -18000 1 CDT} - {1477810800 -21600 0 CST} - {1491120000 -18000 1 CDT} - {1509260400 -21600 0 CST} - {1522569600 -18000 1 CDT} - {1540710000 -21600 0 CST} - {1554624000 -18000 1 CDT} - {1572159600 -21600 0 CST} - {1586073600 -18000 1 CDT} - {1603609200 -21600 0 CST} - {1617523200 -18000 1 CDT} - {1635663600 -21600 0 CST} - {1648972800 -18000 1 CDT} - {1667113200 -21600 0 CST} - {1680422400 -18000 1 CDT} - {1698562800 -21600 0 CST} - {1712476800 -18000 1 CDT} - {1730012400 -21600 0 CST} - {1743926400 -18000 1 CDT} - {1761462000 -21600 0 CST} - {1775376000 -18000 1 CDT} - {1792911600 -21600 0 CST} - {1806825600 -18000 1 CDT} - {1824966000 -21600 0 CST} - {1838275200 -18000 1 CDT} - {1856415600 -21600 0 CST} - {1869724800 -18000 1 CDT} - {1887865200 -21600 0 CST} - {1901779200 -18000 1 CDT} - {1919314800 -21600 0 CST} - {1933228800 -18000 1 CDT} - {1950764400 -21600 0 CST} - {1964678400 -18000 1 CDT} - {1982818800 -21600 0 CST} - {1996128000 -18000 1 CDT} - {2014268400 -21600 0 CST} - {2027577600 -18000 1 CDT} - {2045718000 -21600 0 CST} - {2059027200 -18000 1 CDT} - {2077167600 -21600 0 CST} - {2091081600 -18000 1 CDT} - {2108617200 -21600 0 CST} - {2122531200 -18000 1 CDT} - {2140066800 -21600 0 CST} - {2153980800 -18000 1 CDT} - {2172121200 -21600 0 CST} - {2185430400 -18000 1 CDT} - {2203570800 -21600 0 CST} - {2216880000 -18000 1 CDT} - {2235020400 -21600 0 CST} - {2248934400 -18000 1 CDT} - {2266470000 -21600 0 CST} - {2280384000 -18000 1 CDT} - {2297919600 -21600 0 CST} - {2311833600 -18000 1 CDT} - {2329369200 -21600 0 CST} - {2343283200 -18000 1 CDT} - {2361423600 -21600 0 CST} - {2374732800 -18000 1 CDT} - {2392873200 -21600 0 CST} - {2406182400 -18000 1 CDT} - {2424322800 -21600 0 CST} - {2438236800 -18000 1 CDT} - {2455772400 -21600 0 CST} - {2469686400 -18000 1 CDT} - {2487222000 -21600 0 CST} - {2501136000 -18000 1 CDT} - {2519276400 -21600 0 CST} - {2532585600 -18000 1 CDT} - {2550726000 -21600 0 CST} - {2564035200 -18000 1 CDT} - {2582175600 -21600 0 CST} - {2596089600 -18000 1 CDT} - {2613625200 -21600 0 CST} - {2627539200 -18000 1 CDT} - {2645074800 -21600 0 CST} - {2658988800 -18000 1 CDT} - {2676524400 -21600 0 CST} - {2690438400 -18000 1 CDT} - {2708578800 -21600 0 CST} - {2721888000 -18000 1 CDT} - {2740028400 -21600 0 CST} - {2753337600 -18000 1 CDT} - {2771478000 -21600 0 CST} - {2785392000 -18000 1 CDT} - {2802927600 -21600 0 CST} - {2816841600 -18000 1 CDT} - {2834377200 -21600 0 CST} - {2848291200 -18000 1 CDT} - {2866431600 -21600 0 CST} - {2879740800 -18000 1 CDT} - {2897881200 -21600 0 CST} - {2911190400 -18000 1 CDT} - {2929330800 -21600 0 CST} - {2942640000 -18000 1 CDT} - {2960780400 -21600 0 CST} - {2974694400 -18000 1 CDT} - {2992230000 -21600 0 CST} - {3006144000 -18000 1 CDT} - {3023679600 -21600 0 CST} - {3037593600 -18000 1 CDT} - {3055734000 -21600 0 CST} - {3069043200 -18000 1 CDT} - {3087183600 -21600 0 CST} - {3100492800 -18000 1 CDT} - {3118633200 -21600 0 CST} - {3132547200 -18000 1 CDT} - {3150082800 -21600 0 CST} - {3163996800 -18000 1 CDT} - {3181532400 -21600 0 CST} - {3195446400 -18000 1 CDT} - {3212982000 -21600 0 CST} - {3226896000 -18000 1 CDT} - {3245036400 -21600 0 CST} - {3258345600 -18000 1 CDT} - {3276486000 -21600 0 CST} - {3289795200 -18000 1 CDT} - {3307935600 -21600 0 CST} - {3321849600 -18000 1 CDT} - {3339385200 -21600 0 CST} - {3353299200 -18000 1 CDT} - {3370834800 -21600 0 CST} - {3384748800 -18000 1 CDT} - {3402889200 -21600 0 CST} - {3416198400 -18000 1 CDT} - {3434338800 -21600 0 CST} - {3447648000 -18000 1 CDT} - {3465788400 -21600 0 CST} - {3479702400 -18000 1 CDT} - {3497238000 -21600 0 CST} - {3511152000 -18000 1 CDT} - {3528687600 -21600 0 CST} - {3542601600 -18000 1 CDT} - {3560137200 -21600 0 CST} - {3574051200 -18000 1 CDT} - {3592191600 -21600 0 CST} - {3605500800 -18000 1 CDT} - {3623641200 -21600 0 CST} - {3636950400 -18000 1 CDT} - {3655090800 -21600 0 CST} - {3669004800 -18000 1 CDT} - {3686540400 -21600 0 CST} - {3700454400 -18000 1 CDT} - {3717990000 -21600 0 CST} - {3731904000 -18000 1 CDT} - {3750044400 -21600 0 CST} - {3763353600 -18000 1 CDT} - {3781494000 -21600 0 CST} - {3794803200 -18000 1 CDT} - {3812943600 -21600 0 CST} - {3826252800 -18000 1 CDT} - {3844393200 -21600 0 CST} - {3858307200 -18000 1 CDT} - {3875842800 -21600 0 CST} - {3889756800 -18000 1 CDT} - {3907292400 -21600 0 CST} - {3921206400 -18000 1 CDT} - {3939346800 -21600 0 CST} - {3952656000 -18000 1 CDT} - {3970796400 -21600 0 CST} - {3984105600 -18000 1 CDT} - {4002246000 -21600 0 CST} - {4016160000 -18000 1 CDT} - {4033695600 -21600 0 CST} - {4047609600 -18000 1 CDT} - {4065145200 -21600 0 CST} - {4079059200 -18000 1 CDT} - {4096594800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cancun) { + {-9223372036854775808 -20824 0 LMT} + {-1514743200 -21600 0 CST} + {377935200 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {902041200 -18000 0 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {989136000 -18000 1 CDT} + {1001833200 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1175414400 -18000 1 CDT} + {1193554800 -21600 0 CST} + {1207468800 -18000 1 CDT} + {1225004400 -21600 0 CST} + {1238918400 -18000 1 CDT} + {1256454000 -21600 0 CST} + {1270368000 -18000 1 CDT} + {1288508400 -21600 0 CST} + {1301817600 -18000 1 CDT} + {1319958000 -21600 0 CST} + {1333267200 -18000 1 CDT} + {1351407600 -21600 0 CST} + {1365321600 -18000 1 CDT} + {1382857200 -21600 0 CST} + {1396771200 -18000 1 CDT} + {1414306800 -21600 0 CST} + {1428220800 -18000 1 CDT} + {1445756400 -21600 0 CST} + {1459670400 -18000 1 CDT} + {1477810800 -21600 0 CST} + {1491120000 -18000 1 CDT} + {1509260400 -21600 0 CST} + {1522569600 -18000 1 CDT} + {1540710000 -21600 0 CST} + {1554624000 -18000 1 CDT} + {1572159600 -21600 0 CST} + {1586073600 -18000 1 CDT} + {1603609200 -21600 0 CST} + {1617523200 -18000 1 CDT} + {1635663600 -21600 0 CST} + {1648972800 -18000 1 CDT} + {1667113200 -21600 0 CST} + {1680422400 -18000 1 CDT} + {1698562800 -21600 0 CST} + {1712476800 -18000 1 CDT} + {1730012400 -21600 0 CST} + {1743926400 -18000 1 CDT} + {1761462000 -21600 0 CST} + {1775376000 -18000 1 CDT} + {1792911600 -21600 0 CST} + {1806825600 -18000 1 CDT} + {1824966000 -21600 0 CST} + {1838275200 -18000 1 CDT} + {1856415600 -21600 0 CST} + {1869724800 -18000 1 CDT} + {1887865200 -21600 0 CST} + {1901779200 -18000 1 CDT} + {1919314800 -21600 0 CST} + {1933228800 -18000 1 CDT} + {1950764400 -21600 0 CST} + {1964678400 -18000 1 CDT} + {1982818800 -21600 0 CST} + {1996128000 -18000 1 CDT} + {2014268400 -21600 0 CST} + {2027577600 -18000 1 CDT} + {2045718000 -21600 0 CST} + {2059027200 -18000 1 CDT} + {2077167600 -21600 0 CST} + {2091081600 -18000 1 CDT} + {2108617200 -21600 0 CST} + {2122531200 -18000 1 CDT} + {2140066800 -21600 0 CST} + {2153980800 -18000 1 CDT} + {2172121200 -21600 0 CST} + {2185430400 -18000 1 CDT} + {2203570800 -21600 0 CST} + {2216880000 -18000 1 CDT} + {2235020400 -21600 0 CST} + {2248934400 -18000 1 CDT} + {2266470000 -21600 0 CST} + {2280384000 -18000 1 CDT} + {2297919600 -21600 0 CST} + {2311833600 -18000 1 CDT} + {2329369200 -21600 0 CST} + {2343283200 -18000 1 CDT} + {2361423600 -21600 0 CST} + {2374732800 -18000 1 CDT} + {2392873200 -21600 0 CST} + {2406182400 -18000 1 CDT} + {2424322800 -21600 0 CST} + {2438236800 -18000 1 CDT} + {2455772400 -21600 0 CST} + {2469686400 -18000 1 CDT} + {2487222000 -21600 0 CST} + {2501136000 -18000 1 CDT} + {2519276400 -21600 0 CST} + {2532585600 -18000 1 CDT} + {2550726000 -21600 0 CST} + {2564035200 -18000 1 CDT} + {2582175600 -21600 0 CST} + {2596089600 -18000 1 CDT} + {2613625200 -21600 0 CST} + {2627539200 -18000 1 CDT} + {2645074800 -21600 0 CST} + {2658988800 -18000 1 CDT} + {2676524400 -21600 0 CST} + {2690438400 -18000 1 CDT} + {2708578800 -21600 0 CST} + {2721888000 -18000 1 CDT} + {2740028400 -21600 0 CST} + {2753337600 -18000 1 CDT} + {2771478000 -21600 0 CST} + {2785392000 -18000 1 CDT} + {2802927600 -21600 0 CST} + {2816841600 -18000 1 CDT} + {2834377200 -21600 0 CST} + {2848291200 -18000 1 CDT} + {2866431600 -21600 0 CST} + {2879740800 -18000 1 CDT} + {2897881200 -21600 0 CST} + {2911190400 -18000 1 CDT} + {2929330800 -21600 0 CST} + {2942640000 -18000 1 CDT} + {2960780400 -21600 0 CST} + {2974694400 -18000 1 CDT} + {2992230000 -21600 0 CST} + {3006144000 -18000 1 CDT} + {3023679600 -21600 0 CST} + {3037593600 -18000 1 CDT} + {3055734000 -21600 0 CST} + {3069043200 -18000 1 CDT} + {3087183600 -21600 0 CST} + {3100492800 -18000 1 CDT} + {3118633200 -21600 0 CST} + {3132547200 -18000 1 CDT} + {3150082800 -21600 0 CST} + {3163996800 -18000 1 CDT} + {3181532400 -21600 0 CST} + {3195446400 -18000 1 CDT} + {3212982000 -21600 0 CST} + {3226896000 -18000 1 CDT} + {3245036400 -21600 0 CST} + {3258345600 -18000 1 CDT} + {3276486000 -21600 0 CST} + {3289795200 -18000 1 CDT} + {3307935600 -21600 0 CST} + {3321849600 -18000 1 CDT} + {3339385200 -21600 0 CST} + {3353299200 -18000 1 CDT} + {3370834800 -21600 0 CST} + {3384748800 -18000 1 CDT} + {3402889200 -21600 0 CST} + {3416198400 -18000 1 CDT} + {3434338800 -21600 0 CST} + {3447648000 -18000 1 CDT} + {3465788400 -21600 0 CST} + {3479702400 -18000 1 CDT} + {3497238000 -21600 0 CST} + {3511152000 -18000 1 CDT} + {3528687600 -21600 0 CST} + {3542601600 -18000 1 CDT} + {3560137200 -21600 0 CST} + {3574051200 -18000 1 CDT} + {3592191600 -21600 0 CST} + {3605500800 -18000 1 CDT} + {3623641200 -21600 0 CST} + {3636950400 -18000 1 CDT} + {3655090800 -21600 0 CST} + {3669004800 -18000 1 CDT} + {3686540400 -21600 0 CST} + {3700454400 -18000 1 CDT} + {3717990000 -21600 0 CST} + {3731904000 -18000 1 CDT} + {3750044400 -21600 0 CST} + {3763353600 -18000 1 CDT} + {3781494000 -21600 0 CST} + {3794803200 -18000 1 CDT} + {3812943600 -21600 0 CST} + {3826252800 -18000 1 CDT} + {3844393200 -21600 0 CST} + {3858307200 -18000 1 CDT} + {3875842800 -21600 0 CST} + {3889756800 -18000 1 CDT} + {3907292400 -21600 0 CST} + {3921206400 -18000 1 CDT} + {3939346800 -21600 0 CST} + {3952656000 -18000 1 CDT} + {3970796400 -21600 0 CST} + {3984105600 -18000 1 CDT} + {4002246000 -21600 0 CST} + {4016160000 -18000 1 CDT} + {4033695600 -21600 0 CST} + {4047609600 -18000 1 CDT} + {4065145200 -21600 0 CST} + {4079059200 -18000 1 CDT} + {4096594800 -21600 0 CST} +} diff --git a/library/tzdata/America/Caracas b/library/tzdata/America/Caracas index 5add095..2ba87ae 100644 --- a/library/tzdata/America/Caracas +++ b/library/tzdata/America/Caracas @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Caracas) { - {-9223372036854775808 -16064 0 LMT} - {-2524505536 -16060 0 CMT} - {-1826739140 -16200 0 VET} - {-157750200 -14400 0 VET} - {1197183600 -16200 0 VET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Caracas) { + {-9223372036854775808 -16064 0 LMT} + {-2524505536 -16060 0 CMT} + {-1826739140 -16200 0 VET} + {-157750200 -14400 0 VET} + {1197183600 -16200 0 VET} +} diff --git a/library/tzdata/America/Catamarca b/library/tzdata/America/Catamarca index 1734f95..01c8ab6 100644 --- a/library/tzdata/America/Catamarca +++ b/library/tzdata/America/Catamarca @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Catamarca)]} { - LoadTimeZoneFile America/Argentina/Catamarca -} -set TZData(:America/Catamarca) $TZData(:America/Argentina/Catamarca) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Catamarca)]} { + LoadTimeZoneFile America/Argentina/Catamarca +} +set TZData(:America/Catamarca) $TZData(:America/Argentina/Catamarca) diff --git a/library/tzdata/America/Cayenne b/library/tzdata/America/Cayenne index 075a58c..de3d65b 100644 --- a/library/tzdata/America/Cayenne +++ b/library/tzdata/America/Cayenne @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cayenne) { - {-9223372036854775808 -12560 0 LMT} - {-1846269040 -14400 0 GFT} - {-71092800 -10800 0 GFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cayenne) { + {-9223372036854775808 -12560 0 LMT} + {-1846269040 -14400 0 GFT} + {-71092800 -10800 0 GFT} +} diff --git a/library/tzdata/America/Cayman b/library/tzdata/America/Cayman index 1ffa1db..ab5d12b 100644 --- a/library/tzdata/America/Cayman +++ b/library/tzdata/America/Cayman @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cayman) { - {-9223372036854775808 -19532 0 LMT} - {-2524502068 -18432 0 KMT} - {-1827687168 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cayman) { + {-9223372036854775808 -19532 0 LMT} + {-2524502068 -18432 0 KMT} + {-1827687168 -18000 0 EST} +} diff --git a/library/tzdata/America/Chicago b/library/tzdata/America/Chicago index 0e753cf..545aedb 100644 --- a/library/tzdata/America/Chicago +++ b/library/tzdata/America/Chicago @@ -1,369 +1,369 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Chicago) { - {-9223372036854775808 -21036 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-1577901600 -21600 0 CST} - {-1563724800 -18000 1 CDT} - {-1551632400 -21600 0 CST} - {-1538928000 -18000 1 CDT} - {-1520182800 -21600 0 CST} - {-1504454400 -18000 1 CDT} - {-1491757200 -21600 0 CST} - {-1473004800 -18000 1 CDT} - {-1459702800 -21600 0 CST} - {-1441555200 -18000 1 CDT} - {-1428253200 -21600 0 CST} - {-1410105600 -18000 1 CDT} - {-1396803600 -21600 0 CST} - {-1378656000 -18000 1 CDT} - {-1365354000 -21600 0 CST} - {-1347206400 -18000 1 CDT} - {-1333904400 -21600 0 CST} - {-1315152000 -18000 1 CDT} - {-1301850000 -21600 0 CST} - {-1283702400 -18000 1 CDT} - {-1270400400 -21600 0 CST} - {-1252252800 -18000 1 CDT} - {-1238950800 -21600 0 CST} - {-1220803200 -18000 1 CDT} - {-1207501200 -21600 0 CST} - {-1189353600 -18000 1 CDT} - {-1176051600 -21600 0 CST} - {-1157299200 -18000 1 CDT} - {-1144602000 -21600 0 CST} - {-1125849600 -18000 1 CDT} - {-1112547600 -21600 0 CST} - {-1094400000 -18000 1 CDT} - {-1081098000 -21600 0 CST} - {-1067788800 -18000 0 EST} - {-1045414800 -21600 0 CST} - {-1031500800 -18000 1 CDT} - {-1018198800 -21600 0 CST} - {-1000051200 -18000 1 CDT} - {-986749200 -21600 0 CST} - {-967996800 -18000 1 CDT} - {-955299600 -21600 0 CST} - {-936547200 -18000 1 CDT} - {-923245200 -21600 0 CST} - {-905097600 -18000 1 CDT} - {-891795600 -21600 0 CST} - {-883591200 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620841600 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-447267600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-415818000 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-384368400 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-352918800 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-321469200 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-257965200 -21600 0 CST} - {-242236800 -18000 1 CDT} - {-226515600 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-195066000 -21600 0 CST} - {-179337600 -18000 1 CDT} - {-163616400 -21600 0 CST} - {-147888000 -18000 1 CDT} - {-131562000 -21600 0 CST} - {-116438400 -18000 1 CDT} - {-100112400 -21600 0 CST} - {-94672800 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68662800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Chicago) { + {-9223372036854775808 -21036 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-1577901600 -21600 0 CST} + {-1563724800 -18000 1 CDT} + {-1551632400 -21600 0 CST} + {-1538928000 -18000 1 CDT} + {-1520182800 -21600 0 CST} + {-1504454400 -18000 1 CDT} + {-1491757200 -21600 0 CST} + {-1473004800 -18000 1 CDT} + {-1459702800 -21600 0 CST} + {-1441555200 -18000 1 CDT} + {-1428253200 -21600 0 CST} + {-1410105600 -18000 1 CDT} + {-1396803600 -21600 0 CST} + {-1378656000 -18000 1 CDT} + {-1365354000 -21600 0 CST} + {-1347206400 -18000 1 CDT} + {-1333904400 -21600 0 CST} + {-1315152000 -18000 1 CDT} + {-1301850000 -21600 0 CST} + {-1283702400 -18000 1 CDT} + {-1270400400 -21600 0 CST} + {-1252252800 -18000 1 CDT} + {-1238950800 -21600 0 CST} + {-1220803200 -18000 1 CDT} + {-1207501200 -21600 0 CST} + {-1189353600 -18000 1 CDT} + {-1176051600 -21600 0 CST} + {-1157299200 -18000 1 CDT} + {-1144602000 -21600 0 CST} + {-1125849600 -18000 1 CDT} + {-1112547600 -21600 0 CST} + {-1094400000 -18000 1 CDT} + {-1081098000 -21600 0 CST} + {-1067788800 -18000 0 EST} + {-1045414800 -21600 0 CST} + {-1031500800 -18000 1 CDT} + {-1018198800 -21600 0 CST} + {-1000051200 -18000 1 CDT} + {-986749200 -21600 0 CST} + {-967996800 -18000 1 CDT} + {-955299600 -21600 0 CST} + {-936547200 -18000 1 CDT} + {-923245200 -21600 0 CST} + {-905097600 -18000 1 CDT} + {-891795600 -21600 0 CST} + {-883591200 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620841600 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-447267600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-415818000 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-384368400 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-352918800 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-321469200 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-257965200 -21600 0 CST} + {-242236800 -18000 1 CDT} + {-226515600 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-195066000 -21600 0 CST} + {-179337600 -18000 1 CDT} + {-163616400 -21600 0 CST} + {-147888000 -18000 1 CDT} + {-131562000 -21600 0 CST} + {-116438400 -18000 1 CDT} + {-100112400 -21600 0 CST} + {-94672800 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68662800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Chihuahua b/library/tzdata/America/Chihuahua index 04f4a24..5444930 100644 --- a/library/tzdata/America/Chihuahua +++ b/library/tzdata/America/Chihuahua @@ -1,221 +1,221 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Chihuahua) { - {-9223372036854775808 -25460 0 LMT} - {-1514739600 -25200 0 MST} - {-1343066400 -21600 0 CST} - {-1234807200 -25200 0 MST} - {-1220292000 -21600 0 CST} - {-1207159200 -25200 0 MST} - {-1191344400 -21600 0 CST} - {820476000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {883634400 -21600 0 CST} - {891766800 -21600 0 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {989139600 -21600 1 MDT} - {1001836800 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1175418000 -21600 1 MDT} - {1193558400 -25200 0 MST} - {1207472400 -21600 1 MDT} - {1225008000 -25200 0 MST} - {1238922000 -21600 1 MDT} - {1256457600 -25200 0 MST} - {1270371600 -21600 1 MDT} - {1288512000 -25200 0 MST} - {1301821200 -21600 1 MDT} - {1319961600 -25200 0 MST} - {1333270800 -21600 1 MDT} - {1351411200 -25200 0 MST} - {1365325200 -21600 1 MDT} - {1382860800 -25200 0 MST} - {1396774800 -21600 1 MDT} - {1414310400 -25200 0 MST} - {1428224400 -21600 1 MDT} - {1445760000 -25200 0 MST} - {1459674000 -21600 1 MDT} - {1477814400 -25200 0 MST} - {1491123600 -21600 1 MDT} - {1509264000 -25200 0 MST} - {1522573200 -21600 1 MDT} - {1540713600 -25200 0 MST} - {1554627600 -21600 1 MDT} - {1572163200 -25200 0 MST} - {1586077200 -21600 1 MDT} - {1603612800 -25200 0 MST} - {1617526800 -21600 1 MDT} - {1635667200 -25200 0 MST} - {1648976400 -21600 1 MDT} - {1667116800 -25200 0 MST} - {1680426000 -21600 1 MDT} - {1698566400 -25200 0 MST} - {1712480400 -21600 1 MDT} - {1730016000 -25200 0 MST} - {1743930000 -21600 1 MDT} - {1761465600 -25200 0 MST} - {1775379600 -21600 1 MDT} - {1792915200 -25200 0 MST} - {1806829200 -21600 1 MDT} - {1824969600 -25200 0 MST} - {1838278800 -21600 1 MDT} - {1856419200 -25200 0 MST} - {1869728400 -21600 1 MDT} - {1887868800 -25200 0 MST} - {1901782800 -21600 1 MDT} - {1919318400 -25200 0 MST} - {1933232400 -21600 1 MDT} - {1950768000 -25200 0 MST} - {1964682000 -21600 1 MDT} - {1982822400 -25200 0 MST} - {1996131600 -21600 1 MDT} - {2014272000 -25200 0 MST} - {2027581200 -21600 1 MDT} - {2045721600 -25200 0 MST} - {2059030800 -21600 1 MDT} - {2077171200 -25200 0 MST} - {2091085200 -21600 1 MDT} - {2108620800 -25200 0 MST} - {2122534800 -21600 1 MDT} - {2140070400 -25200 0 MST} - {2153984400 -21600 1 MDT} - {2172124800 -25200 0 MST} - {2185434000 -21600 1 MDT} - {2203574400 -25200 0 MST} - {2216883600 -21600 1 MDT} - {2235024000 -25200 0 MST} - {2248938000 -21600 1 MDT} - {2266473600 -25200 0 MST} - {2280387600 -21600 1 MDT} - {2297923200 -25200 0 MST} - {2311837200 -21600 1 MDT} - {2329372800 -25200 0 MST} - {2343286800 -21600 1 MDT} - {2361427200 -25200 0 MST} - {2374736400 -21600 1 MDT} - {2392876800 -25200 0 MST} - {2406186000 -21600 1 MDT} - {2424326400 -25200 0 MST} - {2438240400 -21600 1 MDT} - {2455776000 -25200 0 MST} - {2469690000 -21600 1 MDT} - {2487225600 -25200 0 MST} - {2501139600 -21600 1 MDT} - {2519280000 -25200 0 MST} - {2532589200 -21600 1 MDT} - {2550729600 -25200 0 MST} - {2564038800 -21600 1 MDT} - {2582179200 -25200 0 MST} - {2596093200 -21600 1 MDT} - {2613628800 -25200 0 MST} - {2627542800 -21600 1 MDT} - {2645078400 -25200 0 MST} - {2658992400 -21600 1 MDT} - {2676528000 -25200 0 MST} - {2690442000 -21600 1 MDT} - {2708582400 -25200 0 MST} - {2721891600 -21600 1 MDT} - {2740032000 -25200 0 MST} - {2753341200 -21600 1 MDT} - {2771481600 -25200 0 MST} - {2785395600 -21600 1 MDT} - {2802931200 -25200 0 MST} - {2816845200 -21600 1 MDT} - {2834380800 -25200 0 MST} - {2848294800 -21600 1 MDT} - {2866435200 -25200 0 MST} - {2879744400 -21600 1 MDT} - {2897884800 -25200 0 MST} - {2911194000 -21600 1 MDT} - {2929334400 -25200 0 MST} - {2942643600 -21600 1 MDT} - {2960784000 -25200 0 MST} - {2974698000 -21600 1 MDT} - {2992233600 -25200 0 MST} - {3006147600 -21600 1 MDT} - {3023683200 -25200 0 MST} - {3037597200 -21600 1 MDT} - {3055737600 -25200 0 MST} - {3069046800 -21600 1 MDT} - {3087187200 -25200 0 MST} - {3100496400 -21600 1 MDT} - {3118636800 -25200 0 MST} - {3132550800 -21600 1 MDT} - {3150086400 -25200 0 MST} - {3164000400 -21600 1 MDT} - {3181536000 -25200 0 MST} - {3195450000 -21600 1 MDT} - {3212985600 -25200 0 MST} - {3226899600 -21600 1 MDT} - {3245040000 -25200 0 MST} - {3258349200 -21600 1 MDT} - {3276489600 -25200 0 MST} - {3289798800 -21600 1 MDT} - {3307939200 -25200 0 MST} - {3321853200 -21600 1 MDT} - {3339388800 -25200 0 MST} - {3353302800 -21600 1 MDT} - {3370838400 -25200 0 MST} - {3384752400 -21600 1 MDT} - {3402892800 -25200 0 MST} - {3416202000 -21600 1 MDT} - {3434342400 -25200 0 MST} - {3447651600 -21600 1 MDT} - {3465792000 -25200 0 MST} - {3479706000 -21600 1 MDT} - {3497241600 -25200 0 MST} - {3511155600 -21600 1 MDT} - {3528691200 -25200 0 MST} - {3542605200 -21600 1 MDT} - {3560140800 -25200 0 MST} - {3574054800 -21600 1 MDT} - {3592195200 -25200 0 MST} - {3605504400 -21600 1 MDT} - {3623644800 -25200 0 MST} - {3636954000 -21600 1 MDT} - {3655094400 -25200 0 MST} - {3669008400 -21600 1 MDT} - {3686544000 -25200 0 MST} - {3700458000 -21600 1 MDT} - {3717993600 -25200 0 MST} - {3731907600 -21600 1 MDT} - {3750048000 -25200 0 MST} - {3763357200 -21600 1 MDT} - {3781497600 -25200 0 MST} - {3794806800 -21600 1 MDT} - {3812947200 -25200 0 MST} - {3826256400 -21600 1 MDT} - {3844396800 -25200 0 MST} - {3858310800 -21600 1 MDT} - {3875846400 -25200 0 MST} - {3889760400 -21600 1 MDT} - {3907296000 -25200 0 MST} - {3921210000 -21600 1 MDT} - {3939350400 -25200 0 MST} - {3952659600 -21600 1 MDT} - {3970800000 -25200 0 MST} - {3984109200 -21600 1 MDT} - {4002249600 -25200 0 MST} - {4016163600 -21600 1 MDT} - {4033699200 -25200 0 MST} - {4047613200 -21600 1 MDT} - {4065148800 -25200 0 MST} - {4079062800 -21600 1 MDT} - {4096598400 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Chihuahua) { + {-9223372036854775808 -25460 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {820476000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {883634400 -21600 0 CST} + {891766800 -21600 0 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {989139600 -21600 1 MDT} + {1001836800 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1175418000 -21600 1 MDT} + {1193558400 -25200 0 MST} + {1207472400 -21600 1 MDT} + {1225008000 -25200 0 MST} + {1238922000 -21600 1 MDT} + {1256457600 -25200 0 MST} + {1270371600 -21600 1 MDT} + {1288512000 -25200 0 MST} + {1301821200 -21600 1 MDT} + {1319961600 -25200 0 MST} + {1333270800 -21600 1 MDT} + {1351411200 -25200 0 MST} + {1365325200 -21600 1 MDT} + {1382860800 -25200 0 MST} + {1396774800 -21600 1 MDT} + {1414310400 -25200 0 MST} + {1428224400 -21600 1 MDT} + {1445760000 -25200 0 MST} + {1459674000 -21600 1 MDT} + {1477814400 -25200 0 MST} + {1491123600 -21600 1 MDT} + {1509264000 -25200 0 MST} + {1522573200 -21600 1 MDT} + {1540713600 -25200 0 MST} + {1554627600 -21600 1 MDT} + {1572163200 -25200 0 MST} + {1586077200 -21600 1 MDT} + {1603612800 -25200 0 MST} + {1617526800 -21600 1 MDT} + {1635667200 -25200 0 MST} + {1648976400 -21600 1 MDT} + {1667116800 -25200 0 MST} + {1680426000 -21600 1 MDT} + {1698566400 -25200 0 MST} + {1712480400 -21600 1 MDT} + {1730016000 -25200 0 MST} + {1743930000 -21600 1 MDT} + {1761465600 -25200 0 MST} + {1775379600 -21600 1 MDT} + {1792915200 -25200 0 MST} + {1806829200 -21600 1 MDT} + {1824969600 -25200 0 MST} + {1838278800 -21600 1 MDT} + {1856419200 -25200 0 MST} + {1869728400 -21600 1 MDT} + {1887868800 -25200 0 MST} + {1901782800 -21600 1 MDT} + {1919318400 -25200 0 MST} + {1933232400 -21600 1 MDT} + {1950768000 -25200 0 MST} + {1964682000 -21600 1 MDT} + {1982822400 -25200 0 MST} + {1996131600 -21600 1 MDT} + {2014272000 -25200 0 MST} + {2027581200 -21600 1 MDT} + {2045721600 -25200 0 MST} + {2059030800 -21600 1 MDT} + {2077171200 -25200 0 MST} + {2091085200 -21600 1 MDT} + {2108620800 -25200 0 MST} + {2122534800 -21600 1 MDT} + {2140070400 -25200 0 MST} + {2153984400 -21600 1 MDT} + {2172124800 -25200 0 MST} + {2185434000 -21600 1 MDT} + {2203574400 -25200 0 MST} + {2216883600 -21600 1 MDT} + {2235024000 -25200 0 MST} + {2248938000 -21600 1 MDT} + {2266473600 -25200 0 MST} + {2280387600 -21600 1 MDT} + {2297923200 -25200 0 MST} + {2311837200 -21600 1 MDT} + {2329372800 -25200 0 MST} + {2343286800 -21600 1 MDT} + {2361427200 -25200 0 MST} + {2374736400 -21600 1 MDT} + {2392876800 -25200 0 MST} + {2406186000 -21600 1 MDT} + {2424326400 -25200 0 MST} + {2438240400 -21600 1 MDT} + {2455776000 -25200 0 MST} + {2469690000 -21600 1 MDT} + {2487225600 -25200 0 MST} + {2501139600 -21600 1 MDT} + {2519280000 -25200 0 MST} + {2532589200 -21600 1 MDT} + {2550729600 -25200 0 MST} + {2564038800 -21600 1 MDT} + {2582179200 -25200 0 MST} + {2596093200 -21600 1 MDT} + {2613628800 -25200 0 MST} + {2627542800 -21600 1 MDT} + {2645078400 -25200 0 MST} + {2658992400 -21600 1 MDT} + {2676528000 -25200 0 MST} + {2690442000 -21600 1 MDT} + {2708582400 -25200 0 MST} + {2721891600 -21600 1 MDT} + {2740032000 -25200 0 MST} + {2753341200 -21600 1 MDT} + {2771481600 -25200 0 MST} + {2785395600 -21600 1 MDT} + {2802931200 -25200 0 MST} + {2816845200 -21600 1 MDT} + {2834380800 -25200 0 MST} + {2848294800 -21600 1 MDT} + {2866435200 -25200 0 MST} + {2879744400 -21600 1 MDT} + {2897884800 -25200 0 MST} + {2911194000 -21600 1 MDT} + {2929334400 -25200 0 MST} + {2942643600 -21600 1 MDT} + {2960784000 -25200 0 MST} + {2974698000 -21600 1 MDT} + {2992233600 -25200 0 MST} + {3006147600 -21600 1 MDT} + {3023683200 -25200 0 MST} + {3037597200 -21600 1 MDT} + {3055737600 -25200 0 MST} + {3069046800 -21600 1 MDT} + {3087187200 -25200 0 MST} + {3100496400 -21600 1 MDT} + {3118636800 -25200 0 MST} + {3132550800 -21600 1 MDT} + {3150086400 -25200 0 MST} + {3164000400 -21600 1 MDT} + {3181536000 -25200 0 MST} + {3195450000 -21600 1 MDT} + {3212985600 -25200 0 MST} + {3226899600 -21600 1 MDT} + {3245040000 -25200 0 MST} + {3258349200 -21600 1 MDT} + {3276489600 -25200 0 MST} + {3289798800 -21600 1 MDT} + {3307939200 -25200 0 MST} + {3321853200 -21600 1 MDT} + {3339388800 -25200 0 MST} + {3353302800 -21600 1 MDT} + {3370838400 -25200 0 MST} + {3384752400 -21600 1 MDT} + {3402892800 -25200 0 MST} + {3416202000 -21600 1 MDT} + {3434342400 -25200 0 MST} + {3447651600 -21600 1 MDT} + {3465792000 -25200 0 MST} + {3479706000 -21600 1 MDT} + {3497241600 -25200 0 MST} + {3511155600 -21600 1 MDT} + {3528691200 -25200 0 MST} + {3542605200 -21600 1 MDT} + {3560140800 -25200 0 MST} + {3574054800 -21600 1 MDT} + {3592195200 -25200 0 MST} + {3605504400 -21600 1 MDT} + {3623644800 -25200 0 MST} + {3636954000 -21600 1 MDT} + {3655094400 -25200 0 MST} + {3669008400 -21600 1 MDT} + {3686544000 -25200 0 MST} + {3700458000 -21600 1 MDT} + {3717993600 -25200 0 MST} + {3731907600 -21600 1 MDT} + {3750048000 -25200 0 MST} + {3763357200 -21600 1 MDT} + {3781497600 -25200 0 MST} + {3794806800 -21600 1 MDT} + {3812947200 -25200 0 MST} + {3826256400 -21600 1 MDT} + {3844396800 -25200 0 MST} + {3858310800 -21600 1 MDT} + {3875846400 -25200 0 MST} + {3889760400 -21600 1 MDT} + {3907296000 -25200 0 MST} + {3921210000 -21600 1 MDT} + {3939350400 -25200 0 MST} + {3952659600 -21600 1 MDT} + {3970800000 -25200 0 MST} + {3984109200 -21600 1 MDT} + {4002249600 -25200 0 MST} + {4016163600 -21600 1 MDT} + {4033699200 -25200 0 MST} + {4047613200 -21600 1 MDT} + {4065148800 -25200 0 MST} + {4079062800 -21600 1 MDT} + {4096598400 -25200 0 MST} +} diff --git a/library/tzdata/America/Coral_Harbour b/library/tzdata/America/Coral_Harbour index 14aae52..a27dc03 100644 --- a/library/tzdata/America/Coral_Harbour +++ b/library/tzdata/America/Coral_Harbour @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Atikokan)]} { - LoadTimeZoneFile America/Atikokan -} -set TZData(:America/Coral_Harbour) $TZData(:America/Atikokan) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Atikokan)]} { + LoadTimeZoneFile America/Atikokan +} +set TZData(:America/Coral_Harbour) $TZData(:America/Atikokan) diff --git a/library/tzdata/America/Cordoba b/library/tzdata/America/Cordoba index 85c12f4..c881558 100644 --- a/library/tzdata/America/Cordoba +++ b/library/tzdata/America/Cordoba @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Cordoba)]} { - LoadTimeZoneFile America/Argentina/Cordoba -} -set TZData(:America/Cordoba) $TZData(:America/Argentina/Cordoba) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Cordoba)]} { + LoadTimeZoneFile America/Argentina/Cordoba +} +set TZData(:America/Cordoba) $TZData(:America/Argentina/Cordoba) diff --git a/library/tzdata/America/Costa_Rica b/library/tzdata/America/Costa_Rica index f0bb633..04420a4 100644 --- a/library/tzdata/America/Costa_Rica +++ b/library/tzdata/America/Costa_Rica @@ -1,15 +1,15 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Costa_Rica) { - {-9223372036854775808 -20180 0 LMT} - {-2524501420 -20180 0 SJMT} - {-1545071020 -21600 0 CST} - {288770400 -18000 1 CDT} - {297234000 -21600 0 CST} - {320220000 -18000 1 CDT} - {328683600 -21600 0 CST} - {664264800 -18000 1 CDT} - {678344400 -21600 0 CST} - {695714400 -18000 1 CDT} - {700635600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Costa_Rica) { + {-9223372036854775808 -20180 0 LMT} + {-2524501420 -20180 0 SJMT} + {-1545071020 -21600 0 CST} + {288770400 -18000 1 CDT} + {297234000 -21600 0 CST} + {320220000 -18000 1 CDT} + {328683600 -21600 0 CST} + {664264800 -18000 1 CDT} + {678344400 -21600 0 CST} + {695714400 -18000 1 CDT} + {700635600 -21600 0 CST} +} diff --git a/library/tzdata/America/Cuiaba b/library/tzdata/America/Cuiaba index 636a180..0301862 100644 --- a/library/tzdata/America/Cuiaba +++ b/library/tzdata/America/Cuiaba @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Cuiaba) { - {-9223372036854775808 -13460 0 LMT} - {-1767212140 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {592977600 -10800 1 AMST} - {602046000 -14400 0 AMT} - {624427200 -10800 1 AMST} - {634705200 -14400 0 AMT} - {656481600 -10800 1 AMST} - {666759600 -14400 0 AMT} - {687931200 -10800 1 AMST} - {697604400 -14400 0 AMT} - {719985600 -10800 1 AMST} - {728449200 -14400 0 AMT} - {750830400 -10800 1 AMST} - {761713200 -14400 0 AMT} - {782280000 -10800 1 AMST} - {793162800 -14400 0 AMT} - {813729600 -10800 1 AMST} - {824007600 -14400 0 AMT} - {844574400 -10800 1 AMST} - {856062000 -14400 0 AMT} - {876110400 -10800 1 AMST} - {888721200 -14400 0 AMT} - {908078400 -10800 1 AMST} - {919566000 -14400 0 AMT} - {938923200 -10800 1 AMST} - {951620400 -14400 0 AMT} - {970977600 -10800 1 AMST} - {982465200 -14400 0 AMT} - {1003032000 -10800 1 AMST} - {1013914800 -14400 0 AMT} - {1036296000 -10800 1 AMST} - {1045364400 -14400 0 AMT} - {1064372400 -14400 0 AMT} - {1096603200 -14400 0 AMT} - {1099368000 -10800 1 AMST} - {1108868400 -14400 0 AMT} - {1129435200 -10800 1 AMST} - {1140318000 -14400 0 AMT} - {1162699200 -10800 1 AMST} - {1172372400 -14400 0 AMT} - {1192334400 -10800 1 AMST} - {1203217200 -14400 0 AMT} - {1224388800 -10800 1 AMST} - {1234666800 -14400 0 AMT} - {1255838400 -10800 1 AMST} - {1266721200 -14400 0 AMT} - {1287288000 -10800 1 AMST} - {1298170800 -14400 0 AMT} - {1318737600 -10800 1 AMST} - {1330225200 -14400 0 AMT} - {1350792000 -10800 1 AMST} - {1361070000 -14400 0 AMT} - {1382241600 -10800 1 AMST} - {1392519600 -14400 0 AMT} - {1413691200 -10800 1 AMST} - {1424574000 -14400 0 AMT} - {1445140800 -10800 1 AMST} - {1456023600 -14400 0 AMT} - {1476590400 -10800 1 AMST} - {1487473200 -14400 0 AMT} - {1508040000 -10800 1 AMST} - {1518922800 -14400 0 AMT} - {1540094400 -10800 1 AMST} - {1550372400 -14400 0 AMT} - {1571544000 -10800 1 AMST} - {1581822000 -14400 0 AMT} - {1602993600 -10800 1 AMST} - {1613876400 -14400 0 AMT} - {1634443200 -10800 1 AMST} - {1645326000 -14400 0 AMT} - {1665892800 -10800 1 AMST} - {1677380400 -14400 0 AMT} - {1697342400 -10800 1 AMST} - {1708225200 -14400 0 AMT} - {1729396800 -10800 1 AMST} - {1739674800 -14400 0 AMT} - {1760846400 -10800 1 AMST} - {1771729200 -14400 0 AMT} - {1792296000 -10800 1 AMST} - {1803178800 -14400 0 AMT} - {1823745600 -10800 1 AMST} - {1834628400 -14400 0 AMT} - {1855195200 -10800 1 AMST} - {1866078000 -14400 0 AMT} - {1887249600 -10800 1 AMST} - {1897527600 -14400 0 AMT} - {1918699200 -10800 1 AMST} - {1928977200 -14400 0 AMT} - {1950148800 -10800 1 AMST} - {1960426800 -14400 0 AMT} - {1981598400 -10800 1 AMST} - {1992481200 -14400 0 AMT} - {2013048000 -10800 1 AMST} - {2024535600 -14400 0 AMT} - {2044497600 -10800 1 AMST} - {2055380400 -14400 0 AMT} - {2076552000 -10800 1 AMST} - {2086830000 -14400 0 AMT} - {2108001600 -10800 1 AMST} - {2118884400 -14400 0 AMT} - {2139451200 -10800 1 AMST} - {2150334000 -14400 0 AMT} - {2170900800 -10800 1 AMST} - {2181783600 -14400 0 AMT} - {2202350400 -10800 1 AMST} - {2213233200 -14400 0 AMT} - {2234404800 -10800 1 AMST} - {2244682800 -14400 0 AMT} - {2265854400 -10800 1 AMST} - {2276132400 -14400 0 AMT} - {2297304000 -10800 1 AMST} - {2307582000 -14400 0 AMT} - {2328753600 -10800 1 AMST} - {2339636400 -14400 0 AMT} - {2360203200 -10800 1 AMST} - {2371086000 -14400 0 AMT} - {2391652800 -10800 1 AMST} - {2402535600 -14400 0 AMT} - {2423707200 -10800 1 AMST} - {2433985200 -14400 0 AMT} - {2455156800 -10800 1 AMST} - {2465434800 -14400 0 AMT} - {2486606400 -10800 1 AMST} - {2497489200 -14400 0 AMT} - {2518056000 -10800 1 AMST} - {2528938800 -14400 0 AMT} - {2549505600 -10800 1 AMST} - {2560388400 -14400 0 AMT} - {2580955200 -10800 1 AMST} - {2591838000 -14400 0 AMT} - {2613009600 -10800 1 AMST} - {2623287600 -14400 0 AMT} - {2644459200 -10800 1 AMST} - {2654737200 -14400 0 AMT} - {2675908800 -10800 1 AMST} - {2686791600 -14400 0 AMT} - {2707358400 -10800 1 AMST} - {2718241200 -14400 0 AMT} - {2738808000 -10800 1 AMST} - {2749690800 -14400 0 AMT} - {2770862400 -10800 1 AMST} - {2781140400 -14400 0 AMT} - {2802312000 -10800 1 AMST} - {2812590000 -14400 0 AMT} - {2833761600 -10800 1 AMST} - {2844039600 -14400 0 AMT} - {2865211200 -10800 1 AMST} - {2876094000 -14400 0 AMT} - {2896660800 -10800 1 AMST} - {2907543600 -14400 0 AMT} - {2928110400 -10800 1 AMST} - {2938993200 -14400 0 AMT} - {2960164800 -10800 1 AMST} - {2970442800 -14400 0 AMT} - {2991614400 -10800 1 AMST} - {3001892400 -14400 0 AMT} - {3023064000 -10800 1 AMST} - {3033946800 -14400 0 AMT} - {3054513600 -10800 1 AMST} - {3065396400 -14400 0 AMT} - {3085963200 -10800 1 AMST} - {3096846000 -14400 0 AMT} - {3118017600 -10800 1 AMST} - {3128295600 -14400 0 AMT} - {3149467200 -10800 1 AMST} - {3159745200 -14400 0 AMT} - {3180916800 -10800 1 AMST} - {3191194800 -14400 0 AMT} - {3212366400 -10800 1 AMST} - {3223249200 -14400 0 AMT} - {3243816000 -10800 1 AMST} - {3254698800 -14400 0 AMT} - {3275265600 -10800 1 AMST} - {3286148400 -14400 0 AMT} - {3307320000 -10800 1 AMST} - {3317598000 -14400 0 AMT} - {3338769600 -10800 1 AMST} - {3349047600 -14400 0 AMT} - {3370219200 -10800 1 AMST} - {3381102000 -14400 0 AMT} - {3401668800 -10800 1 AMST} - {3412551600 -14400 0 AMT} - {3433118400 -10800 1 AMST} - {3444001200 -14400 0 AMT} - {3464568000 -10800 1 AMST} - {3475450800 -14400 0 AMT} - {3496622400 -10800 1 AMST} - {3506900400 -14400 0 AMT} - {3528072000 -10800 1 AMST} - {3538350000 -14400 0 AMT} - {3559521600 -10800 1 AMST} - {3570404400 -14400 0 AMT} - {3590971200 -10800 1 AMST} - {3601854000 -14400 0 AMT} - {3622420800 -10800 1 AMST} - {3633303600 -14400 0 AMT} - {3654475200 -10800 1 AMST} - {3664753200 -14400 0 AMT} - {3685924800 -10800 1 AMST} - {3696202800 -14400 0 AMT} - {3717374400 -10800 1 AMST} - {3727652400 -14400 0 AMT} - {3748824000 -10800 1 AMST} - {3759706800 -14400 0 AMT} - {3780273600 -10800 1 AMST} - {3791156400 -14400 0 AMT} - {3811723200 -10800 1 AMST} - {3822606000 -14400 0 AMT} - {3843777600 -10800 1 AMST} - {3854055600 -14400 0 AMT} - {3875227200 -10800 1 AMST} - {3885505200 -14400 0 AMT} - {3906676800 -10800 1 AMST} - {3917559600 -14400 0 AMT} - {3938126400 -10800 1 AMST} - {3949009200 -14400 0 AMT} - {3969576000 -10800 1 AMST} - {3980458800 -14400 0 AMT} - {4001630400 -10800 1 AMST} - {4011908400 -14400 0 AMT} - {4033080000 -10800 1 AMST} - {4043358000 -14400 0 AMT} - {4064529600 -10800 1 AMST} - {4074807600 -14400 0 AMT} - {4095979200 -10800 1 AMST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Cuiaba) { + {-9223372036854775808 -13460 0 LMT} + {-1767212140 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {592977600 -10800 1 AMST} + {602046000 -14400 0 AMT} + {624427200 -10800 1 AMST} + {634705200 -14400 0 AMT} + {656481600 -10800 1 AMST} + {666759600 -14400 0 AMT} + {687931200 -10800 1 AMST} + {697604400 -14400 0 AMT} + {719985600 -10800 1 AMST} + {728449200 -14400 0 AMT} + {750830400 -10800 1 AMST} + {761713200 -14400 0 AMT} + {782280000 -10800 1 AMST} + {793162800 -14400 0 AMT} + {813729600 -10800 1 AMST} + {824007600 -14400 0 AMT} + {844574400 -10800 1 AMST} + {856062000 -14400 0 AMT} + {876110400 -10800 1 AMST} + {888721200 -14400 0 AMT} + {908078400 -10800 1 AMST} + {919566000 -14400 0 AMT} + {938923200 -10800 1 AMST} + {951620400 -14400 0 AMT} + {970977600 -10800 1 AMST} + {982465200 -14400 0 AMT} + {1003032000 -10800 1 AMST} + {1013914800 -14400 0 AMT} + {1036296000 -10800 1 AMST} + {1045364400 -14400 0 AMT} + {1064372400 -14400 0 AMT} + {1096603200 -14400 0 AMT} + {1099368000 -10800 1 AMST} + {1108868400 -14400 0 AMT} + {1129435200 -10800 1 AMST} + {1140318000 -14400 0 AMT} + {1162699200 -10800 1 AMST} + {1172372400 -14400 0 AMT} + {1192334400 -10800 1 AMST} + {1203217200 -14400 0 AMT} + {1224388800 -10800 1 AMST} + {1234666800 -14400 0 AMT} + {1255838400 -10800 1 AMST} + {1266721200 -14400 0 AMT} + {1287288000 -10800 1 AMST} + {1298170800 -14400 0 AMT} + {1318737600 -10800 1 AMST} + {1330225200 -14400 0 AMT} + {1350792000 -10800 1 AMST} + {1361070000 -14400 0 AMT} + {1382241600 -10800 1 AMST} + {1392519600 -14400 0 AMT} + {1413691200 -10800 1 AMST} + {1424574000 -14400 0 AMT} + {1445140800 -10800 1 AMST} + {1456023600 -14400 0 AMT} + {1476590400 -10800 1 AMST} + {1487473200 -14400 0 AMT} + {1508040000 -10800 1 AMST} + {1518922800 -14400 0 AMT} + {1540094400 -10800 1 AMST} + {1550372400 -14400 0 AMT} + {1571544000 -10800 1 AMST} + {1581822000 -14400 0 AMT} + {1602993600 -10800 1 AMST} + {1613876400 -14400 0 AMT} + {1634443200 -10800 1 AMST} + {1645326000 -14400 0 AMT} + {1665892800 -10800 1 AMST} + {1677380400 -14400 0 AMT} + {1697342400 -10800 1 AMST} + {1708225200 -14400 0 AMT} + {1729396800 -10800 1 AMST} + {1739674800 -14400 0 AMT} + {1760846400 -10800 1 AMST} + {1771729200 -14400 0 AMT} + {1792296000 -10800 1 AMST} + {1803178800 -14400 0 AMT} + {1823745600 -10800 1 AMST} + {1834628400 -14400 0 AMT} + {1855195200 -10800 1 AMST} + {1866078000 -14400 0 AMT} + {1887249600 -10800 1 AMST} + {1897527600 -14400 0 AMT} + {1918699200 -10800 1 AMST} + {1928977200 -14400 0 AMT} + {1950148800 -10800 1 AMST} + {1960426800 -14400 0 AMT} + {1981598400 -10800 1 AMST} + {1992481200 -14400 0 AMT} + {2013048000 -10800 1 AMST} + {2024535600 -14400 0 AMT} + {2044497600 -10800 1 AMST} + {2055380400 -14400 0 AMT} + {2076552000 -10800 1 AMST} + {2086830000 -14400 0 AMT} + {2108001600 -10800 1 AMST} + {2118884400 -14400 0 AMT} + {2139451200 -10800 1 AMST} + {2150334000 -14400 0 AMT} + {2170900800 -10800 1 AMST} + {2181783600 -14400 0 AMT} + {2202350400 -10800 1 AMST} + {2213233200 -14400 0 AMT} + {2234404800 -10800 1 AMST} + {2244682800 -14400 0 AMT} + {2265854400 -10800 1 AMST} + {2276132400 -14400 0 AMT} + {2297304000 -10800 1 AMST} + {2307582000 -14400 0 AMT} + {2328753600 -10800 1 AMST} + {2339636400 -14400 0 AMT} + {2360203200 -10800 1 AMST} + {2371086000 -14400 0 AMT} + {2391652800 -10800 1 AMST} + {2402535600 -14400 0 AMT} + {2423707200 -10800 1 AMST} + {2433985200 -14400 0 AMT} + {2455156800 -10800 1 AMST} + {2465434800 -14400 0 AMT} + {2486606400 -10800 1 AMST} + {2497489200 -14400 0 AMT} + {2518056000 -10800 1 AMST} + {2528938800 -14400 0 AMT} + {2549505600 -10800 1 AMST} + {2560388400 -14400 0 AMT} + {2580955200 -10800 1 AMST} + {2591838000 -14400 0 AMT} + {2613009600 -10800 1 AMST} + {2623287600 -14400 0 AMT} + {2644459200 -10800 1 AMST} + {2654737200 -14400 0 AMT} + {2675908800 -10800 1 AMST} + {2686791600 -14400 0 AMT} + {2707358400 -10800 1 AMST} + {2718241200 -14400 0 AMT} + {2738808000 -10800 1 AMST} + {2749690800 -14400 0 AMT} + {2770862400 -10800 1 AMST} + {2781140400 -14400 0 AMT} + {2802312000 -10800 1 AMST} + {2812590000 -14400 0 AMT} + {2833761600 -10800 1 AMST} + {2844039600 -14400 0 AMT} + {2865211200 -10800 1 AMST} + {2876094000 -14400 0 AMT} + {2896660800 -10800 1 AMST} + {2907543600 -14400 0 AMT} + {2928110400 -10800 1 AMST} + {2938993200 -14400 0 AMT} + {2960164800 -10800 1 AMST} + {2970442800 -14400 0 AMT} + {2991614400 -10800 1 AMST} + {3001892400 -14400 0 AMT} + {3023064000 -10800 1 AMST} + {3033946800 -14400 0 AMT} + {3054513600 -10800 1 AMST} + {3065396400 -14400 0 AMT} + {3085963200 -10800 1 AMST} + {3096846000 -14400 0 AMT} + {3118017600 -10800 1 AMST} + {3128295600 -14400 0 AMT} + {3149467200 -10800 1 AMST} + {3159745200 -14400 0 AMT} + {3180916800 -10800 1 AMST} + {3191194800 -14400 0 AMT} + {3212366400 -10800 1 AMST} + {3223249200 -14400 0 AMT} + {3243816000 -10800 1 AMST} + {3254698800 -14400 0 AMT} + {3275265600 -10800 1 AMST} + {3286148400 -14400 0 AMT} + {3307320000 -10800 1 AMST} + {3317598000 -14400 0 AMT} + {3338769600 -10800 1 AMST} + {3349047600 -14400 0 AMT} + {3370219200 -10800 1 AMST} + {3381102000 -14400 0 AMT} + {3401668800 -10800 1 AMST} + {3412551600 -14400 0 AMT} + {3433118400 -10800 1 AMST} + {3444001200 -14400 0 AMT} + {3464568000 -10800 1 AMST} + {3475450800 -14400 0 AMT} + {3496622400 -10800 1 AMST} + {3506900400 -14400 0 AMT} + {3528072000 -10800 1 AMST} + {3538350000 -14400 0 AMT} + {3559521600 -10800 1 AMST} + {3570404400 -14400 0 AMT} + {3590971200 -10800 1 AMST} + {3601854000 -14400 0 AMT} + {3622420800 -10800 1 AMST} + {3633303600 -14400 0 AMT} + {3654475200 -10800 1 AMST} + {3664753200 -14400 0 AMT} + {3685924800 -10800 1 AMST} + {3696202800 -14400 0 AMT} + {3717374400 -10800 1 AMST} + {3727652400 -14400 0 AMT} + {3748824000 -10800 1 AMST} + {3759706800 -14400 0 AMT} + {3780273600 -10800 1 AMST} + {3791156400 -14400 0 AMT} + {3811723200 -10800 1 AMST} + {3822606000 -14400 0 AMT} + {3843777600 -10800 1 AMST} + {3854055600 -14400 0 AMT} + {3875227200 -10800 1 AMST} + {3885505200 -14400 0 AMT} + {3906676800 -10800 1 AMST} + {3917559600 -14400 0 AMT} + {3938126400 -10800 1 AMST} + {3949009200 -14400 0 AMT} + {3969576000 -10800 1 AMST} + {3980458800 -14400 0 AMT} + {4001630400 -10800 1 AMST} + {4011908400 -14400 0 AMT} + {4033080000 -10800 1 AMST} + {4043358000 -14400 0 AMT} + {4064529600 -10800 1 AMST} + {4074807600 -14400 0 AMT} + {4095979200 -10800 1 AMST} +} diff --git a/library/tzdata/America/Curacao b/library/tzdata/America/Curacao index bbac005..443a319 100644 --- a/library/tzdata/America/Curacao +++ b/library/tzdata/America/Curacao @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Curacao) { - {-9223372036854775808 -16544 0 LMT} - {-1826738656 -16200 0 ANT} - {-157750200 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Curacao) { + {-9223372036854775808 -16544 0 LMT} + {-1826738656 -16200 0 ANT} + {-157750200 -14400 0 AST} +} diff --git a/library/tzdata/America/Danmarkshavn b/library/tzdata/America/Danmarkshavn index e6b6a28..8d66d3a 100644 --- a/library/tzdata/America/Danmarkshavn +++ b/library/tzdata/America/Danmarkshavn @@ -1,39 +1,39 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Danmarkshavn) { - {-9223372036854775808 -4480 0 LMT} - {-1686091520 -10800 0 WGT} - {323845200 -7200 0 WGST} - {338950800 -10800 0 WGT} - {354675600 -7200 1 WGST} - {370400400 -10800 0 WGT} - {386125200 -7200 1 WGST} - {401850000 -10800 0 WGT} - {417574800 -7200 1 WGST} - {433299600 -10800 0 WGT} - {449024400 -7200 1 WGST} - {465354000 -10800 0 WGT} - {481078800 -7200 1 WGST} - {496803600 -10800 0 WGT} - {512528400 -7200 1 WGST} - {528253200 -10800 0 WGT} - {543978000 -7200 1 WGST} - {559702800 -10800 0 WGT} - {575427600 -7200 1 WGST} - {591152400 -10800 0 WGT} - {606877200 -7200 1 WGST} - {622602000 -10800 0 WGT} - {638326800 -7200 1 WGST} - {654656400 -10800 0 WGT} - {670381200 -7200 1 WGST} - {686106000 -10800 0 WGT} - {701830800 -7200 1 WGST} - {717555600 -10800 0 WGT} - {733280400 -7200 1 WGST} - {749005200 -10800 0 WGT} - {764730000 -7200 1 WGST} - {780454800 -10800 0 WGT} - {796179600 -7200 1 WGST} - {811904400 -10800 0 WGT} - {820465200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Danmarkshavn) { + {-9223372036854775808 -4480 0 LMT} + {-1686091520 -10800 0 WGT} + {323845200 -7200 0 WGST} + {338950800 -10800 0 WGT} + {354675600 -7200 1 WGST} + {370400400 -10800 0 WGT} + {386125200 -7200 1 WGST} + {401850000 -10800 0 WGT} + {417574800 -7200 1 WGST} + {433299600 -10800 0 WGT} + {449024400 -7200 1 WGST} + {465354000 -10800 0 WGT} + {481078800 -7200 1 WGST} + {496803600 -10800 0 WGT} + {512528400 -7200 1 WGST} + {528253200 -10800 0 WGT} + {543978000 -7200 1 WGST} + {559702800 -10800 0 WGT} + {575427600 -7200 1 WGST} + {591152400 -10800 0 WGT} + {606877200 -7200 1 WGST} + {622602000 -10800 0 WGT} + {638326800 -7200 1 WGST} + {654656400 -10800 0 WGT} + {670381200 -7200 1 WGST} + {686106000 -10800 0 WGT} + {701830800 -7200 1 WGST} + {717555600 -10800 0 WGT} + {733280400 -7200 1 WGST} + {749005200 -10800 0 WGT} + {764730000 -7200 1 WGST} + {780454800 -10800 0 WGT} + {796179600 -7200 1 WGST} + {811904400 -10800 0 WGT} + {820465200 0 0 GMT} +} diff --git a/library/tzdata/America/Dawson b/library/tzdata/America/Dawson index f1841e4..8d2b641 100644 --- a/library/tzdata/America/Dawson +++ b/library/tzdata/America/Dawson @@ -1,256 +1,256 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Dawson) { - {-9223372036854775808 -33460 0 LMT} - {-2188996940 -32400 0 YST} - {-1632056400 -28800 1 YDT} - {-1615125600 -32400 0 YST} - {-1596978000 -28800 1 YDT} - {-1583164800 -32400 0 YST} - {-880203600 -28800 1 YWT} - {-769395600 -28800 1 YPT} - {-765381600 -32400 0 YST} - {-147884400 -25200 1 YDDT} - {-131554800 -32400 0 YST} - {315561600 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Dawson) { + {-9223372036854775808 -33460 0 LMT} + {-2188996940 -32400 0 YST} + {-1632056400 -28800 1 YDT} + {-1615125600 -32400 0 YST} + {-1596978000 -28800 1 YDT} + {-1583164800 -32400 0 YST} + {-880203600 -28800 1 YWT} + {-769395600 -28800 1 YPT} + {-765381600 -32400 0 YST} + {-147884400 -25200 1 YDDT} + {-131554800 -32400 0 YST} + {315561600 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/America/Dawson_Creek b/library/tzdata/America/Dawson_Creek index 7c78eeb..9f8c921 100644 --- a/library/tzdata/America/Dawson_Creek +++ b/library/tzdata/America/Dawson_Creek @@ -1,64 +1,64 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Dawson_Creek) { - {-9223372036854775808 -28856 0 LMT} - {-2713881544 -28800 0 PST} - {-1632060000 -25200 1 PDT} - {-1614783600 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-725817600 -28800 0 PST} - {-715788000 -25200 1 PDT} - {-702486000 -28800 0 PST} - {-684338400 -25200 1 PDT} - {-671036400 -28800 0 PST} - {-652888800 -25200 1 PDT} - {-639586800 -28800 0 PST} - {-620834400 -25200 1 PDT} - {-608137200 -28800 0 PST} - {-589384800 -25200 1 PDT} - {-576082800 -28800 0 PST} - {-557935200 -25200 1 PDT} - {-544633200 -28800 0 PST} - {-526485600 -25200 1 PDT} - {-513183600 -28800 0 PST} - {-495036000 -25200 1 PDT} - {-481734000 -28800 0 PST} - {-463586400 -25200 1 PDT} - {-450284400 -28800 0 PST} - {-431532000 -25200 1 PDT} - {-418230000 -28800 0 PST} - {-400082400 -25200 1 PDT} - {-386780400 -28800 0 PST} - {-368632800 -25200 1 PDT} - {-355330800 -28800 0 PST} - {-337183200 -25200 1 PDT} - {-323881200 -28800 0 PST} - {-305733600 -25200 1 PDT} - {-292431600 -28800 0 PST} - {-273679200 -25200 1 PDT} - {-260982000 -28800 0 PST} - {-242229600 -25200 1 PDT} - {-226508400 -28800 0 PST} - {-210780000 -25200 1 PDT} - {-195058800 -28800 0 PST} - {-179330400 -25200 1 PDT} - {-163609200 -28800 0 PST} - {-147880800 -25200 1 PDT} - {-131554800 -28800 0 PST} - {-116431200 -25200 1 PDT} - {-100105200 -28800 0 PST} - {-84376800 -25200 1 PDT} - {-68655600 -28800 0 PST} - {-52927200 -25200 1 PDT} - {-37206000 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {84016800 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Dawson_Creek) { + {-9223372036854775808 -28856 0 LMT} + {-2713881544 -28800 0 PST} + {-1632060000 -25200 1 PDT} + {-1614783600 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-725817600 -28800 0 PST} + {-715788000 -25200 1 PDT} + {-702486000 -28800 0 PST} + {-684338400 -25200 1 PDT} + {-671036400 -28800 0 PST} + {-652888800 -25200 1 PDT} + {-639586800 -28800 0 PST} + {-620834400 -25200 1 PDT} + {-608137200 -28800 0 PST} + {-589384800 -25200 1 PDT} + {-576082800 -28800 0 PST} + {-557935200 -25200 1 PDT} + {-544633200 -28800 0 PST} + {-526485600 -25200 1 PDT} + {-513183600 -28800 0 PST} + {-495036000 -25200 1 PDT} + {-481734000 -28800 0 PST} + {-463586400 -25200 1 PDT} + {-450284400 -28800 0 PST} + {-431532000 -25200 1 PDT} + {-418230000 -28800 0 PST} + {-400082400 -25200 1 PDT} + {-386780400 -28800 0 PST} + {-368632800 -25200 1 PDT} + {-355330800 -28800 0 PST} + {-337183200 -25200 1 PDT} + {-323881200 -28800 0 PST} + {-305733600 -25200 1 PDT} + {-292431600 -28800 0 PST} + {-273679200 -25200 1 PDT} + {-260982000 -28800 0 PST} + {-242229600 -25200 1 PDT} + {-226508400 -28800 0 PST} + {-210780000 -25200 1 PDT} + {-195058800 -28800 0 PST} + {-179330400 -25200 1 PDT} + {-163609200 -28800 0 PST} + {-147880800 -25200 1 PDT} + {-131554800 -28800 0 PST} + {-116431200 -25200 1 PDT} + {-100105200 -28800 0 PST} + {-84376800 -25200 1 PDT} + {-68655600 -28800 0 PST} + {-52927200 -25200 1 PDT} + {-37206000 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {84016800 -25200 0 MST} +} diff --git a/library/tzdata/America/Denver b/library/tzdata/America/Denver index c8c9f03..06bc80d 100644 --- a/library/tzdata/America/Denver +++ b/library/tzdata/America/Denver @@ -1,291 +1,291 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Denver) { - {-9223372036854775808 -25196 0 LMT} - {-2717643600 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-1577898000 -25200 0 MST} - {-1570374000 -21600 1 MDT} - {-1551628800 -25200 0 MST} - {-1538924400 -21600 1 MDT} - {-1534089600 -25200 0 MST} - {-883587600 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-757357200 -25200 0 MST} - {-147884400 -21600 1 MDT} - {-131558400 -25200 0 MST} - {-116434800 -21600 1 MDT} - {-100108800 -25200 0 MST} - {-94669200 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126694800 -21600 1 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Denver) { + {-9223372036854775808 -25196 0 LMT} + {-2717643600 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-1577898000 -25200 0 MST} + {-1570374000 -21600 1 MDT} + {-1551628800 -25200 0 MST} + {-1538924400 -21600 1 MDT} + {-1534089600 -25200 0 MST} + {-883587600 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-757357200 -25200 0 MST} + {-147884400 -21600 1 MDT} + {-131558400 -25200 0 MST} + {-116434800 -21600 1 MDT} + {-100108800 -25200 0 MST} + {-94669200 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126694800 -21600 1 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Detroit b/library/tzdata/America/Detroit index ff39065..696a663 100644 --- a/library/tzdata/America/Detroit +++ b/library/tzdata/America/Detroit @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Detroit) { - {-9223372036854775808 -19931 0 LMT} - {-2051202469 -21600 0 CST} - {-1724083200 -18000 0 EST} - {-883594800 -18000 0 EST} - {-880218000 -14400 1 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-757364400 -18000 0 EST} - {-684349200 -14400 1 EDT} - {-671047200 -18000 0 EST} - {-80499600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {94712400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -14400 1 EDT} - {152085600 -18000 0 EST} - {157784400 -18000 0 EST} - {167814000 -14400 0 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Detroit) { + {-9223372036854775808 -19931 0 LMT} + {-2051202469 -21600 0 CST} + {-1724083200 -18000 0 EST} + {-883594800 -18000 0 EST} + {-880218000 -14400 1 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-757364400 -18000 0 EST} + {-684349200 -14400 1 EDT} + {-671047200 -18000 0 EST} + {-80499600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {94712400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -14400 1 EDT} + {152085600 -18000 0 EST} + {157784400 -18000 0 EST} + {167814000 -14400 0 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Dominica b/library/tzdata/America/Dominica index 168a6f1..3503a65 100644 --- a/library/tzdata/America/Dominica +++ b/library/tzdata/America/Dominica @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Dominica) { - {-9223372036854775808 -14736 0 LMT} - {-1846266804 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Dominica) { + {-9223372036854775808 -14736 0 LMT} + {-1846266804 -14400 0 AST} +} diff --git a/library/tzdata/America/Edmonton b/library/tzdata/America/Edmonton index a634b28..c4252f8 100644 --- a/library/tzdata/America/Edmonton +++ b/library/tzdata/America/Edmonton @@ -1,284 +1,284 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Edmonton) { - {-9223372036854775808 -27232 0 LMT} - {-1998663968 -25200 0 MST} - {-1632063600 -21600 1 MDT} - {-1614787200 -25200 0 MST} - {-1600614000 -21600 1 MDT} - {-1596816000 -25200 0 MST} - {-1567954800 -21600 1 MDT} - {-1551628800 -25200 0 MST} - {-1536505200 -21600 1 MDT} - {-1523203200 -25200 0 MST} - {-1504450800 -21600 1 MDT} - {-1491753600 -25200 0 MST} - {-1473001200 -21600 1 MDT} - {-1459699200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-715791600 -21600 1 MDT} - {-702489600 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {136371600 -21600 1 MDT} - {152092800 -25200 0 MST} - {167821200 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {536482800 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Edmonton) { + {-9223372036854775808 -27232 0 LMT} + {-1998663968 -25200 0 MST} + {-1632063600 -21600 1 MDT} + {-1614787200 -25200 0 MST} + {-1600614000 -21600 1 MDT} + {-1596816000 -25200 0 MST} + {-1567954800 -21600 1 MDT} + {-1551628800 -25200 0 MST} + {-1536505200 -21600 1 MDT} + {-1523203200 -25200 0 MST} + {-1504450800 -21600 1 MDT} + {-1491753600 -25200 0 MST} + {-1473001200 -21600 1 MDT} + {-1459699200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-715791600 -21600 1 MDT} + {-702489600 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {136371600 -21600 1 MDT} + {152092800 -25200 0 MST} + {167821200 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {536482800 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Eirunepe b/library/tzdata/America/Eirunepe index 436724d..86dcd8f 100644 --- a/library/tzdata/America/Eirunepe +++ b/library/tzdata/America/Eirunepe @@ -1,40 +1,40 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Eirunepe) { - {-9223372036854775808 -16768 0 LMT} - {-1767208832 -18000 0 ACT} - {-1206950400 -14400 1 ACST} - {-1191355200 -18000 0 ACT} - {-1175367600 -14400 1 ACST} - {-1159819200 -18000 0 ACT} - {-633812400 -14400 1 ACST} - {-622062000 -18000 0 ACT} - {-602276400 -14400 1 ACST} - {-591825600 -18000 0 ACT} - {-570740400 -14400 1 ACST} - {-560203200 -18000 0 ACT} - {-539118000 -14400 1 ACST} - {-531345600 -18000 0 ACT} - {-191358000 -14400 1 ACST} - {-184190400 -18000 0 ACT} - {-155156400 -14400 1 ACST} - {-150062400 -18000 0 ACT} - {-128890800 -14400 1 ACST} - {-121118400 -18000 0 ACT} - {-99946800 -14400 1 ACST} - {-89582400 -18000 0 ACT} - {-68410800 -14400 1 ACST} - {-57960000 -18000 0 ACT} - {499755600 -14400 1 ACST} - {511243200 -18000 0 ACT} - {530600400 -14400 1 ACST} - {540273600 -18000 0 ACT} - {562136400 -14400 1 ACST} - {571204800 -18000 0 ACT} - {590040000 -18000 0 ACT} - {749192400 -18000 0 ACT} - {750834000 -14400 1 ACST} - {761716800 -18000 0 ACT} - {780206400 -18000 0 ACT} - {1214283600 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Eirunepe) { + {-9223372036854775808 -16768 0 LMT} + {-1767208832 -18000 0 ACT} + {-1206950400 -14400 1 ACST} + {-1191355200 -18000 0 ACT} + {-1175367600 -14400 1 ACST} + {-1159819200 -18000 0 ACT} + {-633812400 -14400 1 ACST} + {-622062000 -18000 0 ACT} + {-602276400 -14400 1 ACST} + {-591825600 -18000 0 ACT} + {-570740400 -14400 1 ACST} + {-560203200 -18000 0 ACT} + {-539118000 -14400 1 ACST} + {-531345600 -18000 0 ACT} + {-191358000 -14400 1 ACST} + {-184190400 -18000 0 ACT} + {-155156400 -14400 1 ACST} + {-150062400 -18000 0 ACT} + {-128890800 -14400 1 ACST} + {-121118400 -18000 0 ACT} + {-99946800 -14400 1 ACST} + {-89582400 -18000 0 ACT} + {-68410800 -14400 1 ACST} + {-57960000 -18000 0 ACT} + {499755600 -14400 1 ACST} + {511243200 -18000 0 ACT} + {530600400 -14400 1 ACST} + {540273600 -18000 0 ACT} + {562136400 -14400 1 ACST} + {571204800 -18000 0 ACT} + {590040000 -18000 0 ACT} + {749192400 -18000 0 ACT} + {750834000 -14400 1 ACST} + {761716800 -18000 0 ACT} + {780206400 -18000 0 ACT} + {1214283600 -14400 0 AMT} +} diff --git a/library/tzdata/America/El_Salvador b/library/tzdata/America/El_Salvador index 34bde42..75d8129 100644 --- a/library/tzdata/America/El_Salvador +++ b/library/tzdata/America/El_Salvador @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/El_Salvador) { - {-9223372036854775808 -21408 0 LMT} - {-1546279392 -21600 0 CST} - {547020000 -18000 1 CDT} - {559717200 -21600 0 CST} - {578469600 -18000 1 CDT} - {591166800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/El_Salvador) { + {-9223372036854775808 -21408 0 LMT} + {-1546279392 -21600 0 CST} + {547020000 -18000 1 CDT} + {559717200 -21600 0 CST} + {578469600 -18000 1 CDT} + {591166800 -21600 0 CST} +} diff --git a/library/tzdata/America/Ensenada b/library/tzdata/America/Ensenada index 8f6cff5..f600305 100644 --- a/library/tzdata/America/Ensenada +++ b/library/tzdata/America/Ensenada @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Tijuana)]} { - LoadTimeZoneFile America/Tijuana -} -set TZData(:America/Ensenada) $TZData(:America/Tijuana) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Tijuana)]} { + LoadTimeZoneFile America/Tijuana +} +set TZData(:America/Ensenada) $TZData(:America/Tijuana) diff --git a/library/tzdata/America/Fort_Wayne b/library/tzdata/America/Fort_Wayne index 4766b43..9514d57 100644 --- a/library/tzdata/America/Fort_Wayne +++ b/library/tzdata/America/Fort_Wayne @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Indianapolis)]} { - LoadTimeZoneFile America/Indiana/Indianapolis -} -set TZData(:America/Fort_Wayne) $TZData(:America/Indiana/Indianapolis) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Indianapolis)]} { + LoadTimeZoneFile America/Indiana/Indianapolis +} +set TZData(:America/Fort_Wayne) $TZData(:America/Indiana/Indianapolis) diff --git a/library/tzdata/America/Fortaleza b/library/tzdata/America/Fortaleza index 1fa2988..581faa5 100644 --- a/library/tzdata/America/Fortaleza +++ b/library/tzdata/America/Fortaleza @@ -1,48 +1,48 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Fortaleza) { - {-9223372036854775808 -9240 0 LMT} - {-1767216360 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {653536800 -10800 0 BRT} - {938660400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {972180000 -10800 0 BRT} - {1000350000 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1033437600 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Fortaleza) { + {-9223372036854775808 -9240 0 LMT} + {-1767216360 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {653536800 -10800 0 BRT} + {938660400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {972180000 -10800 0 BRT} + {1000350000 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1033437600 -10800 0 BRT} +} diff --git a/library/tzdata/America/Glace_Bay b/library/tzdata/America/Glace_Bay index d5064fb..84b4822 100644 --- a/library/tzdata/America/Glace_Bay +++ b/library/tzdata/America/Glace_Bay @@ -1,273 +1,273 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Glace_Bay) { - {-9223372036854775808 -14388 0 LMT} - {-2131646412 -14400 0 AST} - {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} - {-880221600 -10800 1 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-536443200 -14400 0 AST} - {-526500000 -10800 1 ADT} - {-513198000 -14400 0 AST} - {-504907200 -14400 0 AST} - {63086400 -14400 0 AST} - {73461600 -10800 1 ADT} - {89182800 -14400 0 AST} - {104911200 -10800 1 ADT} - {120632400 -14400 0 AST} - {126244800 -14400 0 AST} - {136360800 -10800 1 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -10800 1 ADT} - {814942800 -14400 0 AST} - {828856800 -10800 1 ADT} - {846392400 -14400 0 AST} - {860306400 -10800 1 ADT} - {877842000 -14400 0 AST} - {891756000 -10800 1 ADT} - {909291600 -14400 0 AST} - {923205600 -10800 1 ADT} - {941346000 -14400 0 AST} - {954655200 -10800 1 ADT} - {972795600 -14400 0 AST} - {986104800 -10800 1 ADT} - {1004245200 -14400 0 AST} - {1018159200 -10800 1 ADT} - {1035694800 -14400 0 AST} - {1049608800 -10800 1 ADT} - {1067144400 -14400 0 AST} - {1081058400 -10800 1 ADT} - {1099198800 -14400 0 AST} - {1112508000 -10800 1 ADT} - {1130648400 -14400 0 AST} - {1143957600 -10800 1 ADT} - {1162098000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Glace_Bay) { + {-9223372036854775808 -14388 0 LMT} + {-2131646412 -14400 0 AST} + {-1632074400 -10800 1 ADT} + {-1614798000 -14400 0 AST} + {-880221600 -10800 1 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-536443200 -14400 0 AST} + {-526500000 -10800 1 ADT} + {-513198000 -14400 0 AST} + {-504907200 -14400 0 AST} + {63086400 -14400 0 AST} + {73461600 -10800 1 ADT} + {89182800 -14400 0 AST} + {104911200 -10800 1 ADT} + {120632400 -14400 0 AST} + {126244800 -14400 0 AST} + {136360800 -10800 1 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -10800 1 ADT} + {814942800 -14400 0 AST} + {828856800 -10800 1 ADT} + {846392400 -14400 0 AST} + {860306400 -10800 1 ADT} + {877842000 -14400 0 AST} + {891756000 -10800 1 ADT} + {909291600 -14400 0 AST} + {923205600 -10800 1 ADT} + {941346000 -14400 0 AST} + {954655200 -10800 1 ADT} + {972795600 -14400 0 AST} + {986104800 -10800 1 ADT} + {1004245200 -14400 0 AST} + {1018159200 -10800 1 ADT} + {1035694800 -14400 0 AST} + {1049608800 -10800 1 ADT} + {1067144400 -14400 0 AST} + {1081058400 -10800 1 ADT} + {1099198800 -14400 0 AST} + {1112508000 -10800 1 ADT} + {1130648400 -14400 0 AST} + {1143957600 -10800 1 ADT} + {1162098000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/America/Godthab b/library/tzdata/America/Godthab index 7e21e64..3c003cc 100644 --- a/library/tzdata/America/Godthab +++ b/library/tzdata/America/Godthab @@ -1,246 +1,246 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Godthab) { - {-9223372036854775808 -12416 0 LMT} - {-1686083584 -10800 0 WGT} - {323845200 -7200 0 WGST} - {338950800 -10800 0 WGT} - {354675600 -7200 1 WGST} - {370400400 -10800 0 WGT} - {386125200 -7200 1 WGST} - {401850000 -10800 0 WGT} - {417574800 -7200 1 WGST} - {433299600 -10800 0 WGT} - {449024400 -7200 1 WGST} - {465354000 -10800 0 WGT} - {481078800 -7200 1 WGST} - {496803600 -10800 0 WGT} - {512528400 -7200 1 WGST} - {528253200 -10800 0 WGT} - {543978000 -7200 1 WGST} - {559702800 -10800 0 WGT} - {575427600 -7200 1 WGST} - {591152400 -10800 0 WGT} - {606877200 -7200 1 WGST} - {622602000 -10800 0 WGT} - {638326800 -7200 1 WGST} - {654656400 -10800 0 WGT} - {670381200 -7200 1 WGST} - {686106000 -10800 0 WGT} - {701830800 -7200 1 WGST} - {717555600 -10800 0 WGT} - {733280400 -7200 1 WGST} - {749005200 -10800 0 WGT} - {764730000 -7200 1 WGST} - {780454800 -10800 0 WGT} - {796179600 -7200 1 WGST} - {811904400 -10800 0 WGT} - {828234000 -7200 1 WGST} - {846378000 -10800 0 WGT} - {859683600 -7200 1 WGST} - {877827600 -10800 0 WGT} - {891133200 -7200 1 WGST} - {909277200 -10800 0 WGT} - {922582800 -7200 1 WGST} - {941331600 -10800 0 WGT} - {954032400 -7200 1 WGST} - {972781200 -10800 0 WGT} - {985482000 -7200 1 WGST} - {1004230800 -10800 0 WGT} - {1017536400 -7200 1 WGST} - {1035680400 -10800 0 WGT} - {1048986000 -7200 1 WGST} - {1067130000 -10800 0 WGT} - {1080435600 -7200 1 WGST} - {1099184400 -10800 0 WGT} - {1111885200 -7200 1 WGST} - {1130634000 -10800 0 WGT} - {1143334800 -7200 1 WGST} - {1162083600 -10800 0 WGT} - {1174784400 -7200 1 WGST} - {1193533200 -10800 0 WGT} - {1206838800 -7200 1 WGST} - {1224982800 -10800 0 WGT} - {1238288400 -7200 1 WGST} - {1256432400 -10800 0 WGT} - {1269738000 -7200 1 WGST} - {1288486800 -10800 0 WGT} - {1301187600 -7200 1 WGST} - {1319936400 -10800 0 WGT} - {1332637200 -7200 1 WGST} - {1351386000 -10800 0 WGT} - {1364691600 -7200 1 WGST} - {1382835600 -10800 0 WGT} - {1396141200 -7200 1 WGST} - {1414285200 -10800 0 WGT} - {1427590800 -7200 1 WGST} - {1445734800 -10800 0 WGT} - {1459040400 -7200 1 WGST} - {1477789200 -10800 0 WGT} - {1490490000 -7200 1 WGST} - {1509238800 -10800 0 WGT} - {1521939600 -7200 1 WGST} - {1540688400 -10800 0 WGT} - {1553994000 -7200 1 WGST} - {1572138000 -10800 0 WGT} - {1585443600 -7200 1 WGST} - {1603587600 -10800 0 WGT} - {1616893200 -7200 1 WGST} - {1635642000 -10800 0 WGT} - {1648342800 -7200 1 WGST} - {1667091600 -10800 0 WGT} - {1679792400 -7200 1 WGST} - {1698541200 -10800 0 WGT} - {1711846800 -7200 1 WGST} - {1729990800 -10800 0 WGT} - {1743296400 -7200 1 WGST} - {1761440400 -10800 0 WGT} - {1774746000 -7200 1 WGST} - {1792890000 -10800 0 WGT} - {1806195600 -7200 1 WGST} - {1824944400 -10800 0 WGT} - {1837645200 -7200 1 WGST} - {1856394000 -10800 0 WGT} - {1869094800 -7200 1 WGST} - {1887843600 -10800 0 WGT} - {1901149200 -7200 1 WGST} - {1919293200 -10800 0 WGT} - {1932598800 -7200 1 WGST} - {1950742800 -10800 0 WGT} - {1964048400 -7200 1 WGST} - {1982797200 -10800 0 WGT} - {1995498000 -7200 1 WGST} - {2014246800 -10800 0 WGT} - {2026947600 -7200 1 WGST} - {2045696400 -10800 0 WGT} - {2058397200 -7200 1 WGST} - {2077146000 -10800 0 WGT} - {2090451600 -7200 1 WGST} - {2108595600 -10800 0 WGT} - {2121901200 -7200 1 WGST} - {2140045200 -10800 0 WGT} - {2153350800 -7200 1 WGST} - {2172099600 -10800 0 WGT} - {2184800400 -7200 1 WGST} - {2203549200 -10800 0 WGT} - {2216250000 -7200 1 WGST} - {2234998800 -10800 0 WGT} - {2248304400 -7200 1 WGST} - {2266448400 -10800 0 WGT} - {2279754000 -7200 1 WGST} - {2297898000 -10800 0 WGT} - {2311203600 -7200 1 WGST} - {2329347600 -10800 0 WGT} - {2342653200 -7200 1 WGST} - {2361402000 -10800 0 WGT} - {2374102800 -7200 1 WGST} - {2392851600 -10800 0 WGT} - {2405552400 -7200 1 WGST} - {2424301200 -10800 0 WGT} - {2437606800 -7200 1 WGST} - {2455750800 -10800 0 WGT} - {2469056400 -7200 1 WGST} - {2487200400 -10800 0 WGT} - {2500506000 -7200 1 WGST} - {2519254800 -10800 0 WGT} - {2531955600 -7200 1 WGST} - {2550704400 -10800 0 WGT} - {2563405200 -7200 1 WGST} - {2582154000 -10800 0 WGT} - {2595459600 -7200 1 WGST} - {2613603600 -10800 0 WGT} - {2626909200 -7200 1 WGST} - {2645053200 -10800 0 WGT} - {2658358800 -7200 1 WGST} - {2676502800 -10800 0 WGT} - {2689808400 -7200 1 WGST} - {2708557200 -10800 0 WGT} - {2721258000 -7200 1 WGST} - {2740006800 -10800 0 WGT} - {2752707600 -7200 1 WGST} - {2771456400 -10800 0 WGT} - {2784762000 -7200 1 WGST} - {2802906000 -10800 0 WGT} - {2816211600 -7200 1 WGST} - {2834355600 -10800 0 WGT} - {2847661200 -7200 1 WGST} - {2866410000 -10800 0 WGT} - {2879110800 -7200 1 WGST} - {2897859600 -10800 0 WGT} - {2910560400 -7200 1 WGST} - {2929309200 -10800 0 WGT} - {2942010000 -7200 1 WGST} - {2960758800 -10800 0 WGT} - {2974064400 -7200 1 WGST} - {2992208400 -10800 0 WGT} - {3005514000 -7200 1 WGST} - {3023658000 -10800 0 WGT} - {3036963600 -7200 1 WGST} - {3055712400 -10800 0 WGT} - {3068413200 -7200 1 WGST} - {3087162000 -10800 0 WGT} - {3099862800 -7200 1 WGST} - {3118611600 -10800 0 WGT} - {3131917200 -7200 1 WGST} - {3150061200 -10800 0 WGT} - {3163366800 -7200 1 WGST} - {3181510800 -10800 0 WGT} - {3194816400 -7200 1 WGST} - {3212960400 -10800 0 WGT} - {3226266000 -7200 1 WGST} - {3245014800 -10800 0 WGT} - {3257715600 -7200 1 WGST} - {3276464400 -10800 0 WGT} - {3289165200 -7200 1 WGST} - {3307914000 -10800 0 WGT} - {3321219600 -7200 1 WGST} - {3339363600 -10800 0 WGT} - {3352669200 -7200 1 WGST} - {3370813200 -10800 0 WGT} - {3384118800 -7200 1 WGST} - {3402867600 -10800 0 WGT} - {3415568400 -7200 1 WGST} - {3434317200 -10800 0 WGT} - {3447018000 -7200 1 WGST} - {3465766800 -10800 0 WGT} - {3479072400 -7200 1 WGST} - {3497216400 -10800 0 WGT} - {3510522000 -7200 1 WGST} - {3528666000 -10800 0 WGT} - {3541971600 -7200 1 WGST} - {3560115600 -10800 0 WGT} - {3573421200 -7200 1 WGST} - {3592170000 -10800 0 WGT} - {3604870800 -7200 1 WGST} - {3623619600 -10800 0 WGT} - {3636320400 -7200 1 WGST} - {3655069200 -10800 0 WGT} - {3668374800 -7200 1 WGST} - {3686518800 -10800 0 WGT} - {3699824400 -7200 1 WGST} - {3717968400 -10800 0 WGT} - {3731274000 -7200 1 WGST} - {3750022800 -10800 0 WGT} - {3762723600 -7200 1 WGST} - {3781472400 -10800 0 WGT} - {3794173200 -7200 1 WGST} - {3812922000 -10800 0 WGT} - {3825622800 -7200 1 WGST} - {3844371600 -10800 0 WGT} - {3857677200 -7200 1 WGST} - {3875821200 -10800 0 WGT} - {3889126800 -7200 1 WGST} - {3907270800 -10800 0 WGT} - {3920576400 -7200 1 WGST} - {3939325200 -10800 0 WGT} - {3952026000 -7200 1 WGST} - {3970774800 -10800 0 WGT} - {3983475600 -7200 1 WGST} - {4002224400 -10800 0 WGT} - {4015530000 -7200 1 WGST} - {4033674000 -10800 0 WGT} - {4046979600 -7200 1 WGST} - {4065123600 -10800 0 WGT} - {4078429200 -7200 1 WGST} - {4096573200 -10800 0 WGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Godthab) { + {-9223372036854775808 -12416 0 LMT} + {-1686083584 -10800 0 WGT} + {323845200 -7200 0 WGST} + {338950800 -10800 0 WGT} + {354675600 -7200 1 WGST} + {370400400 -10800 0 WGT} + {386125200 -7200 1 WGST} + {401850000 -10800 0 WGT} + {417574800 -7200 1 WGST} + {433299600 -10800 0 WGT} + {449024400 -7200 1 WGST} + {465354000 -10800 0 WGT} + {481078800 -7200 1 WGST} + {496803600 -10800 0 WGT} + {512528400 -7200 1 WGST} + {528253200 -10800 0 WGT} + {543978000 -7200 1 WGST} + {559702800 -10800 0 WGT} + {575427600 -7200 1 WGST} + {591152400 -10800 0 WGT} + {606877200 -7200 1 WGST} + {622602000 -10800 0 WGT} + {638326800 -7200 1 WGST} + {654656400 -10800 0 WGT} + {670381200 -7200 1 WGST} + {686106000 -10800 0 WGT} + {701830800 -7200 1 WGST} + {717555600 -10800 0 WGT} + {733280400 -7200 1 WGST} + {749005200 -10800 0 WGT} + {764730000 -7200 1 WGST} + {780454800 -10800 0 WGT} + {796179600 -7200 1 WGST} + {811904400 -10800 0 WGT} + {828234000 -7200 1 WGST} + {846378000 -10800 0 WGT} + {859683600 -7200 1 WGST} + {877827600 -10800 0 WGT} + {891133200 -7200 1 WGST} + {909277200 -10800 0 WGT} + {922582800 -7200 1 WGST} + {941331600 -10800 0 WGT} + {954032400 -7200 1 WGST} + {972781200 -10800 0 WGT} + {985482000 -7200 1 WGST} + {1004230800 -10800 0 WGT} + {1017536400 -7200 1 WGST} + {1035680400 -10800 0 WGT} + {1048986000 -7200 1 WGST} + {1067130000 -10800 0 WGT} + {1080435600 -7200 1 WGST} + {1099184400 -10800 0 WGT} + {1111885200 -7200 1 WGST} + {1130634000 -10800 0 WGT} + {1143334800 -7200 1 WGST} + {1162083600 -10800 0 WGT} + {1174784400 -7200 1 WGST} + {1193533200 -10800 0 WGT} + {1206838800 -7200 1 WGST} + {1224982800 -10800 0 WGT} + {1238288400 -7200 1 WGST} + {1256432400 -10800 0 WGT} + {1269738000 -7200 1 WGST} + {1288486800 -10800 0 WGT} + {1301187600 -7200 1 WGST} + {1319936400 -10800 0 WGT} + {1332637200 -7200 1 WGST} + {1351386000 -10800 0 WGT} + {1364691600 -7200 1 WGST} + {1382835600 -10800 0 WGT} + {1396141200 -7200 1 WGST} + {1414285200 -10800 0 WGT} + {1427590800 -7200 1 WGST} + {1445734800 -10800 0 WGT} + {1459040400 -7200 1 WGST} + {1477789200 -10800 0 WGT} + {1490490000 -7200 1 WGST} + {1509238800 -10800 0 WGT} + {1521939600 -7200 1 WGST} + {1540688400 -10800 0 WGT} + {1553994000 -7200 1 WGST} + {1572138000 -10800 0 WGT} + {1585443600 -7200 1 WGST} + {1603587600 -10800 0 WGT} + {1616893200 -7200 1 WGST} + {1635642000 -10800 0 WGT} + {1648342800 -7200 1 WGST} + {1667091600 -10800 0 WGT} + {1679792400 -7200 1 WGST} + {1698541200 -10800 0 WGT} + {1711846800 -7200 1 WGST} + {1729990800 -10800 0 WGT} + {1743296400 -7200 1 WGST} + {1761440400 -10800 0 WGT} + {1774746000 -7200 1 WGST} + {1792890000 -10800 0 WGT} + {1806195600 -7200 1 WGST} + {1824944400 -10800 0 WGT} + {1837645200 -7200 1 WGST} + {1856394000 -10800 0 WGT} + {1869094800 -7200 1 WGST} + {1887843600 -10800 0 WGT} + {1901149200 -7200 1 WGST} + {1919293200 -10800 0 WGT} + {1932598800 -7200 1 WGST} + {1950742800 -10800 0 WGT} + {1964048400 -7200 1 WGST} + {1982797200 -10800 0 WGT} + {1995498000 -7200 1 WGST} + {2014246800 -10800 0 WGT} + {2026947600 -7200 1 WGST} + {2045696400 -10800 0 WGT} + {2058397200 -7200 1 WGST} + {2077146000 -10800 0 WGT} + {2090451600 -7200 1 WGST} + {2108595600 -10800 0 WGT} + {2121901200 -7200 1 WGST} + {2140045200 -10800 0 WGT} + {2153350800 -7200 1 WGST} + {2172099600 -10800 0 WGT} + {2184800400 -7200 1 WGST} + {2203549200 -10800 0 WGT} + {2216250000 -7200 1 WGST} + {2234998800 -10800 0 WGT} + {2248304400 -7200 1 WGST} + {2266448400 -10800 0 WGT} + {2279754000 -7200 1 WGST} + {2297898000 -10800 0 WGT} + {2311203600 -7200 1 WGST} + {2329347600 -10800 0 WGT} + {2342653200 -7200 1 WGST} + {2361402000 -10800 0 WGT} + {2374102800 -7200 1 WGST} + {2392851600 -10800 0 WGT} + {2405552400 -7200 1 WGST} + {2424301200 -10800 0 WGT} + {2437606800 -7200 1 WGST} + {2455750800 -10800 0 WGT} + {2469056400 -7200 1 WGST} + {2487200400 -10800 0 WGT} + {2500506000 -7200 1 WGST} + {2519254800 -10800 0 WGT} + {2531955600 -7200 1 WGST} + {2550704400 -10800 0 WGT} + {2563405200 -7200 1 WGST} + {2582154000 -10800 0 WGT} + {2595459600 -7200 1 WGST} + {2613603600 -10800 0 WGT} + {2626909200 -7200 1 WGST} + {2645053200 -10800 0 WGT} + {2658358800 -7200 1 WGST} + {2676502800 -10800 0 WGT} + {2689808400 -7200 1 WGST} + {2708557200 -10800 0 WGT} + {2721258000 -7200 1 WGST} + {2740006800 -10800 0 WGT} + {2752707600 -7200 1 WGST} + {2771456400 -10800 0 WGT} + {2784762000 -7200 1 WGST} + {2802906000 -10800 0 WGT} + {2816211600 -7200 1 WGST} + {2834355600 -10800 0 WGT} + {2847661200 -7200 1 WGST} + {2866410000 -10800 0 WGT} + {2879110800 -7200 1 WGST} + {2897859600 -10800 0 WGT} + {2910560400 -7200 1 WGST} + {2929309200 -10800 0 WGT} + {2942010000 -7200 1 WGST} + {2960758800 -10800 0 WGT} + {2974064400 -7200 1 WGST} + {2992208400 -10800 0 WGT} + {3005514000 -7200 1 WGST} + {3023658000 -10800 0 WGT} + {3036963600 -7200 1 WGST} + {3055712400 -10800 0 WGT} + {3068413200 -7200 1 WGST} + {3087162000 -10800 0 WGT} + {3099862800 -7200 1 WGST} + {3118611600 -10800 0 WGT} + {3131917200 -7200 1 WGST} + {3150061200 -10800 0 WGT} + {3163366800 -7200 1 WGST} + {3181510800 -10800 0 WGT} + {3194816400 -7200 1 WGST} + {3212960400 -10800 0 WGT} + {3226266000 -7200 1 WGST} + {3245014800 -10800 0 WGT} + {3257715600 -7200 1 WGST} + {3276464400 -10800 0 WGT} + {3289165200 -7200 1 WGST} + {3307914000 -10800 0 WGT} + {3321219600 -7200 1 WGST} + {3339363600 -10800 0 WGT} + {3352669200 -7200 1 WGST} + {3370813200 -10800 0 WGT} + {3384118800 -7200 1 WGST} + {3402867600 -10800 0 WGT} + {3415568400 -7200 1 WGST} + {3434317200 -10800 0 WGT} + {3447018000 -7200 1 WGST} + {3465766800 -10800 0 WGT} + {3479072400 -7200 1 WGST} + {3497216400 -10800 0 WGT} + {3510522000 -7200 1 WGST} + {3528666000 -10800 0 WGT} + {3541971600 -7200 1 WGST} + {3560115600 -10800 0 WGT} + {3573421200 -7200 1 WGST} + {3592170000 -10800 0 WGT} + {3604870800 -7200 1 WGST} + {3623619600 -10800 0 WGT} + {3636320400 -7200 1 WGST} + {3655069200 -10800 0 WGT} + {3668374800 -7200 1 WGST} + {3686518800 -10800 0 WGT} + {3699824400 -7200 1 WGST} + {3717968400 -10800 0 WGT} + {3731274000 -7200 1 WGST} + {3750022800 -10800 0 WGT} + {3762723600 -7200 1 WGST} + {3781472400 -10800 0 WGT} + {3794173200 -7200 1 WGST} + {3812922000 -10800 0 WGT} + {3825622800 -7200 1 WGST} + {3844371600 -10800 0 WGT} + {3857677200 -7200 1 WGST} + {3875821200 -10800 0 WGT} + {3889126800 -7200 1 WGST} + {3907270800 -10800 0 WGT} + {3920576400 -7200 1 WGST} + {3939325200 -10800 0 WGT} + {3952026000 -7200 1 WGST} + {3970774800 -10800 0 WGT} + {3983475600 -7200 1 WGST} + {4002224400 -10800 0 WGT} + {4015530000 -7200 1 WGST} + {4033674000 -10800 0 WGT} + {4046979600 -7200 1 WGST} + {4065123600 -10800 0 WGT} + {4078429200 -7200 1 WGST} + {4096573200 -10800 0 WGT} +} diff --git a/library/tzdata/America/Goose_Bay b/library/tzdata/America/Goose_Bay index ae2c8b4..f93b612 100644 --- a/library/tzdata/America/Goose_Bay +++ b/library/tzdata/America/Goose_Bay @@ -1,337 +1,337 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Goose_Bay) { - {-9223372036854775808 -14500 0 LMT} - {-2713895900 -12652 0 NST} - {-1640982548 -12652 0 NST} - {-1632076148 -9052 1 NDT} - {-1614799748 -12652 0 NST} - {-1609446548 -12652 0 NST} - {-1096921748 -12600 0 NST} - {-1072989000 -12600 0 NST} - {-1061670600 -9000 1 NDT} - {-1048973400 -12600 0 NST} - {-1030221000 -9000 1 NDT} - {-1017523800 -12600 0 NST} - {-998771400 -9000 1 NDT} - {-986074200 -12600 0 NST} - {-966717000 -9000 1 NDT} - {-954624600 -12600 0 NST} - {-935267400 -9000 1 NDT} - {-922570200 -12600 0 NST} - {-903817800 -9000 1 NDT} - {-891120600 -12600 0 NST} - {-872368200 -9000 0 NWT} - {-769395600 -9000 1 NPT} - {-765401400 -12600 0 NST} - {-757369800 -12600 0 NST} - {-746044200 -9000 1 NDT} - {-733347000 -12600 0 NST} - {-714594600 -9000 1 NDT} - {-701897400 -12600 0 NST} - {-683145000 -9000 1 NDT} - {-670447800 -12600 0 NST} - {-651695400 -9000 1 NDT} - {-638998200 -12600 0 NST} - {-619641000 -9000 1 NDT} - {-606943800 -12600 0 NST} - {-589401000 -9000 1 NDT} - {-576099000 -12600 0 NST} - {-557951400 -9000 1 NDT} - {-544649400 -12600 0 NST} - {-526501800 -9000 1 NDT} - {-513199800 -12600 0 NST} - {-495052200 -9000 1 NDT} - {-481750200 -12600 0 NST} - {-463602600 -9000 1 NDT} - {-450300600 -12600 0 NST} - {-431548200 -9000 1 NDT} - {-418246200 -12600 0 NST} - {-400098600 -9000 1 NDT} - {-386796600 -12600 0 NST} - {-368649000 -9000 1 NDT} - {-355347000 -12600 0 NST} - {-337199400 -9000 1 NDT} - {-323897400 -12600 0 NST} - {-305749800 -9000 1 NDT} - {-289423800 -12600 0 NST} - {-273695400 -9000 1 NDT} - {-257974200 -12600 0 NST} - {-242245800 -9000 1 NDT} - {-226524600 -12600 0 NST} - {-210796200 -9000 1 NDT} - {-195075000 -12600 0 NST} - {-179346600 -9000 1 NDT} - {-163625400 -12600 0 NST} - {-147897000 -9000 1 NDT} - {-131571000 -12600 0 NST} - {-119903400 -14400 0 AST} - {-116445600 -10800 1 ADT} - {-100119600 -14400 0 AST} - {-84391200 -10800 1 ADT} - {-68670000 -14400 0 AST} - {-52941600 -10800 1 ADT} - {-37220400 -14400 0 AST} - {-21492000 -10800 1 ADT} - {-5770800 -14400 0 AST} - {9957600 -10800 1 ADT} - {25678800 -14400 0 AST} - {41407200 -10800 1 ADT} - {57733200 -14400 0 AST} - {73461600 -10800 1 ADT} - {89182800 -14400 0 AST} - {104911200 -10800 1 ADT} - {120632400 -14400 0 AST} - {136360800 -10800 1 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544593660 -10800 1 ADT} - {562129260 -14400 0 AST} - {576043260 -7200 1 ADDT} - {594180060 -14400 0 AST} - {607492860 -10800 1 ADT} - {625633260 -14400 0 AST} - {638942460 -10800 1 ADT} - {657082860 -14400 0 AST} - {670996860 -10800 1 ADT} - {688532460 -14400 0 AST} - {702446460 -10800 1 ADT} - {719982060 -14400 0 AST} - {733896060 -10800 1 ADT} - {752036460 -14400 0 AST} - {765345660 -10800 1 ADT} - {783486060 -14400 0 AST} - {796795260 -10800 1 ADT} - {814935660 -14400 0 AST} - {828849660 -10800 1 ADT} - {846385260 -14400 0 AST} - {860299260 -10800 1 ADT} - {877834860 -14400 0 AST} - {891748860 -10800 1 ADT} - {909284460 -14400 0 AST} - {923198460 -10800 1 ADT} - {941338860 -14400 0 AST} - {954648060 -10800 1 ADT} - {972788460 -14400 0 AST} - {986097660 -10800 1 ADT} - {1004238060 -14400 0 AST} - {1018152060 -10800 1 ADT} - {1035687660 -14400 0 AST} - {1049601660 -10800 1 ADT} - {1067137260 -14400 0 AST} - {1081051260 -10800 1 ADT} - {1099191660 -14400 0 AST} - {1112500860 -10800 1 ADT} - {1130641260 -14400 0 AST} - {1143950460 -10800 1 ADT} - {1162090860 -14400 0 AST} - {1173585660 -10800 1 ADT} - {1194145260 -14400 0 AST} - {1205035260 -10800 1 ADT} - {1225594860 -14400 0 AST} - {1236484860 -10800 1 ADT} - {1257044460 -14400 0 AST} - {1268539260 -10800 1 ADT} - {1289098860 -14400 0 AST} - {1299988860 -10800 1 ADT} - {1320548460 -14400 0 AST} - {1331438460 -10800 1 ADT} - {1351998060 -14400 0 AST} - {1362888060 -10800 1 ADT} - {1383447660 -14400 0 AST} - {1394337660 -10800 1 ADT} - {1414897260 -14400 0 AST} - {1425787260 -10800 1 ADT} - {1446346860 -14400 0 AST} - {1457841660 -10800 1 ADT} - {1478401260 -14400 0 AST} - {1489291260 -10800 1 ADT} - {1509850860 -14400 0 AST} - {1520740860 -10800 1 ADT} - {1541300460 -14400 0 AST} - {1552190460 -10800 1 ADT} - {1572750060 -14400 0 AST} - {1583640060 -10800 1 ADT} - {1604199660 -14400 0 AST} - {1615694460 -10800 1 ADT} - {1636254060 -14400 0 AST} - {1647144060 -10800 1 ADT} - {1667703660 -14400 0 AST} - {1678593660 -10800 1 ADT} - {1699153260 -14400 0 AST} - {1710043260 -10800 1 ADT} - {1730602860 -14400 0 AST} - {1741492860 -10800 1 ADT} - {1762052460 -14400 0 AST} - {1772942460 -10800 1 ADT} - {1793502060 -14400 0 AST} - {1804996860 -10800 1 ADT} - {1825556460 -14400 0 AST} - {1836446460 -10800 1 ADT} - {1857006060 -14400 0 AST} - {1867896060 -10800 1 ADT} - {1888455660 -14400 0 AST} - {1899345660 -10800 1 ADT} - {1919905260 -14400 0 AST} - {1930795260 -10800 1 ADT} - {1951354860 -14400 0 AST} - {1962849660 -10800 1 ADT} - {1983409260 -14400 0 AST} - {1994299260 -10800 1 ADT} - {2014858860 -14400 0 AST} - {2025748860 -10800 1 ADT} - {2046308460 -14400 0 AST} - {2057198460 -10800 1 ADT} - {2077758060 -14400 0 AST} - {2088648060 -10800 1 ADT} - {2109207660 -14400 0 AST} - {2120097660 -10800 1 ADT} - {2140657260 -14400 0 AST} - {2152152060 -10800 1 ADT} - {2172711660 -14400 0 AST} - {2183601660 -10800 1 ADT} - {2204161260 -14400 0 AST} - {2215051260 -10800 1 ADT} - {2235610860 -14400 0 AST} - {2246500860 -10800 1 ADT} - {2267060460 -14400 0 AST} - {2277950460 -10800 1 ADT} - {2298510060 -14400 0 AST} - {2309400060 -10800 1 ADT} - {2329959660 -14400 0 AST} - {2341454460 -10800 1 ADT} - {2362014060 -14400 0 AST} - {2372904060 -10800 1 ADT} - {2393463660 -14400 0 AST} - {2404353660 -10800 1 ADT} - {2424913260 -14400 0 AST} - {2435803260 -10800 1 ADT} - {2456362860 -14400 0 AST} - {2467252860 -10800 1 ADT} - {2487812460 -14400 0 AST} - {2499307260 -10800 1 ADT} - {2519866860 -14400 0 AST} - {2530756860 -10800 1 ADT} - {2551316460 -14400 0 AST} - {2562206460 -10800 1 ADT} - {2582766060 -14400 0 AST} - {2593656060 -10800 1 ADT} - {2614215660 -14400 0 AST} - {2625105660 -10800 1 ADT} - {2645665260 -14400 0 AST} - {2656555260 -10800 1 ADT} - {2677114860 -14400 0 AST} - {2688609660 -10800 1 ADT} - {2709169260 -14400 0 AST} - {2720059260 -10800 1 ADT} - {2740618860 -14400 0 AST} - {2751508860 -10800 1 ADT} - {2772068460 -14400 0 AST} - {2782958460 -10800 1 ADT} - {2803518060 -14400 0 AST} - {2814408060 -10800 1 ADT} - {2834967660 -14400 0 AST} - {2846462460 -10800 1 ADT} - {2867022060 -14400 0 AST} - {2877912060 -10800 1 ADT} - {2898471660 -14400 0 AST} - {2909361660 -10800 1 ADT} - {2929921260 -14400 0 AST} - {2940811260 -10800 1 ADT} - {2961370860 -14400 0 AST} - {2972260860 -10800 1 ADT} - {2992820460 -14400 0 AST} - {3003710460 -10800 1 ADT} - {3024270060 -14400 0 AST} - {3035764860 -10800 1 ADT} - {3056324460 -14400 0 AST} - {3067214460 -10800 1 ADT} - {3087774060 -14400 0 AST} - {3098664060 -10800 1 ADT} - {3119223660 -14400 0 AST} - {3130113660 -10800 1 ADT} - {3150673260 -14400 0 AST} - {3161563260 -10800 1 ADT} - {3182122860 -14400 0 AST} - {3193012860 -10800 1 ADT} - {3213572460 -14400 0 AST} - {3225067260 -10800 1 ADT} - {3245626860 -14400 0 AST} - {3256516860 -10800 1 ADT} - {3277076460 -14400 0 AST} - {3287966460 -10800 1 ADT} - {3308526060 -14400 0 AST} - {3319416060 -10800 1 ADT} - {3339975660 -14400 0 AST} - {3350865660 -10800 1 ADT} - {3371425260 -14400 0 AST} - {3382920060 -10800 1 ADT} - {3403479660 -14400 0 AST} - {3414369660 -10800 1 ADT} - {3434929260 -14400 0 AST} - {3445819260 -10800 1 ADT} - {3466378860 -14400 0 AST} - {3477268860 -10800 1 ADT} - {3497828460 -14400 0 AST} - {3508718460 -10800 1 ADT} - {3529278060 -14400 0 AST} - {3540168060 -10800 1 ADT} - {3560727660 -14400 0 AST} - {3572222460 -10800 1 ADT} - {3592782060 -14400 0 AST} - {3603672060 -10800 1 ADT} - {3624231660 -14400 0 AST} - {3635121660 -10800 1 ADT} - {3655681260 -14400 0 AST} - {3666571260 -10800 1 ADT} - {3687130860 -14400 0 AST} - {3698020860 -10800 1 ADT} - {3718580460 -14400 0 AST} - {3730075260 -10800 1 ADT} - {3750634860 -14400 0 AST} - {3761524860 -10800 1 ADT} - {3782084460 -14400 0 AST} - {3792974460 -10800 1 ADT} - {3813534060 -14400 0 AST} - {3824424060 -10800 1 ADT} - {3844983660 -14400 0 AST} - {3855873660 -10800 1 ADT} - {3876433260 -14400 0 AST} - {3887323260 -10800 1 ADT} - {3907882860 -14400 0 AST} - {3919377660 -10800 1 ADT} - {3939937260 -14400 0 AST} - {3950827260 -10800 1 ADT} - {3971386860 -14400 0 AST} - {3982276860 -10800 1 ADT} - {4002836460 -14400 0 AST} - {4013726460 -10800 1 ADT} - {4034286060 -14400 0 AST} - {4045176060 -10800 1 ADT} - {4065735660 -14400 0 AST} - {4076625660 -10800 1 ADT} - {4097185260 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Goose_Bay) { + {-9223372036854775808 -14500 0 LMT} + {-2713895900 -12652 0 NST} + {-1640982548 -12652 0 NST} + {-1632076148 -9052 1 NDT} + {-1614799748 -12652 0 NST} + {-1609446548 -12652 0 NST} + {-1096921748 -12600 0 NST} + {-1072989000 -12600 0 NST} + {-1061670600 -9000 1 NDT} + {-1048973400 -12600 0 NST} + {-1030221000 -9000 1 NDT} + {-1017523800 -12600 0 NST} + {-998771400 -9000 1 NDT} + {-986074200 -12600 0 NST} + {-966717000 -9000 1 NDT} + {-954624600 -12600 0 NST} + {-935267400 -9000 1 NDT} + {-922570200 -12600 0 NST} + {-903817800 -9000 1 NDT} + {-891120600 -12600 0 NST} + {-872368200 -9000 0 NWT} + {-769395600 -9000 1 NPT} + {-765401400 -12600 0 NST} + {-757369800 -12600 0 NST} + {-746044200 -9000 1 NDT} + {-733347000 -12600 0 NST} + {-714594600 -9000 1 NDT} + {-701897400 -12600 0 NST} + {-683145000 -9000 1 NDT} + {-670447800 -12600 0 NST} + {-651695400 -9000 1 NDT} + {-638998200 -12600 0 NST} + {-619641000 -9000 1 NDT} + {-606943800 -12600 0 NST} + {-589401000 -9000 1 NDT} + {-576099000 -12600 0 NST} + {-557951400 -9000 1 NDT} + {-544649400 -12600 0 NST} + {-526501800 -9000 1 NDT} + {-513199800 -12600 0 NST} + {-495052200 -9000 1 NDT} + {-481750200 -12600 0 NST} + {-463602600 -9000 1 NDT} + {-450300600 -12600 0 NST} + {-431548200 -9000 1 NDT} + {-418246200 -12600 0 NST} + {-400098600 -9000 1 NDT} + {-386796600 -12600 0 NST} + {-368649000 -9000 1 NDT} + {-355347000 -12600 0 NST} + {-337199400 -9000 1 NDT} + {-323897400 -12600 0 NST} + {-305749800 -9000 1 NDT} + {-289423800 -12600 0 NST} + {-273695400 -9000 1 NDT} + {-257974200 -12600 0 NST} + {-242245800 -9000 1 NDT} + {-226524600 -12600 0 NST} + {-210796200 -9000 1 NDT} + {-195075000 -12600 0 NST} + {-179346600 -9000 1 NDT} + {-163625400 -12600 0 NST} + {-147897000 -9000 1 NDT} + {-131571000 -12600 0 NST} + {-119903400 -14400 0 AST} + {-116445600 -10800 1 ADT} + {-100119600 -14400 0 AST} + {-84391200 -10800 1 ADT} + {-68670000 -14400 0 AST} + {-52941600 -10800 1 ADT} + {-37220400 -14400 0 AST} + {-21492000 -10800 1 ADT} + {-5770800 -14400 0 AST} + {9957600 -10800 1 ADT} + {25678800 -14400 0 AST} + {41407200 -10800 1 ADT} + {57733200 -14400 0 AST} + {73461600 -10800 1 ADT} + {89182800 -14400 0 AST} + {104911200 -10800 1 ADT} + {120632400 -14400 0 AST} + {136360800 -10800 1 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544593660 -10800 1 ADT} + {562129260 -14400 0 AST} + {576043260 -7200 1 ADDT} + {594180060 -14400 0 AST} + {607492860 -10800 1 ADT} + {625633260 -14400 0 AST} + {638942460 -10800 1 ADT} + {657082860 -14400 0 AST} + {670996860 -10800 1 ADT} + {688532460 -14400 0 AST} + {702446460 -10800 1 ADT} + {719982060 -14400 0 AST} + {733896060 -10800 1 ADT} + {752036460 -14400 0 AST} + {765345660 -10800 1 ADT} + {783486060 -14400 0 AST} + {796795260 -10800 1 ADT} + {814935660 -14400 0 AST} + {828849660 -10800 1 ADT} + {846385260 -14400 0 AST} + {860299260 -10800 1 ADT} + {877834860 -14400 0 AST} + {891748860 -10800 1 ADT} + {909284460 -14400 0 AST} + {923198460 -10800 1 ADT} + {941338860 -14400 0 AST} + {954648060 -10800 1 ADT} + {972788460 -14400 0 AST} + {986097660 -10800 1 ADT} + {1004238060 -14400 0 AST} + {1018152060 -10800 1 ADT} + {1035687660 -14400 0 AST} + {1049601660 -10800 1 ADT} + {1067137260 -14400 0 AST} + {1081051260 -10800 1 ADT} + {1099191660 -14400 0 AST} + {1112500860 -10800 1 ADT} + {1130641260 -14400 0 AST} + {1143950460 -10800 1 ADT} + {1162090860 -14400 0 AST} + {1173585660 -10800 1 ADT} + {1194145260 -14400 0 AST} + {1205035260 -10800 1 ADT} + {1225594860 -14400 0 AST} + {1236484860 -10800 1 ADT} + {1257044460 -14400 0 AST} + {1268539260 -10800 1 ADT} + {1289098860 -14400 0 AST} + {1299988860 -10800 1 ADT} + {1320548460 -14400 0 AST} + {1331438460 -10800 1 ADT} + {1351998060 -14400 0 AST} + {1362888060 -10800 1 ADT} + {1383447660 -14400 0 AST} + {1394337660 -10800 1 ADT} + {1414897260 -14400 0 AST} + {1425787260 -10800 1 ADT} + {1446346860 -14400 0 AST} + {1457841660 -10800 1 ADT} + {1478401260 -14400 0 AST} + {1489291260 -10800 1 ADT} + {1509850860 -14400 0 AST} + {1520740860 -10800 1 ADT} + {1541300460 -14400 0 AST} + {1552190460 -10800 1 ADT} + {1572750060 -14400 0 AST} + {1583640060 -10800 1 ADT} + {1604199660 -14400 0 AST} + {1615694460 -10800 1 ADT} + {1636254060 -14400 0 AST} + {1647144060 -10800 1 ADT} + {1667703660 -14400 0 AST} + {1678593660 -10800 1 ADT} + {1699153260 -14400 0 AST} + {1710043260 -10800 1 ADT} + {1730602860 -14400 0 AST} + {1741492860 -10800 1 ADT} + {1762052460 -14400 0 AST} + {1772942460 -10800 1 ADT} + {1793502060 -14400 0 AST} + {1804996860 -10800 1 ADT} + {1825556460 -14400 0 AST} + {1836446460 -10800 1 ADT} + {1857006060 -14400 0 AST} + {1867896060 -10800 1 ADT} + {1888455660 -14400 0 AST} + {1899345660 -10800 1 ADT} + {1919905260 -14400 0 AST} + {1930795260 -10800 1 ADT} + {1951354860 -14400 0 AST} + {1962849660 -10800 1 ADT} + {1983409260 -14400 0 AST} + {1994299260 -10800 1 ADT} + {2014858860 -14400 0 AST} + {2025748860 -10800 1 ADT} + {2046308460 -14400 0 AST} + {2057198460 -10800 1 ADT} + {2077758060 -14400 0 AST} + {2088648060 -10800 1 ADT} + {2109207660 -14400 0 AST} + {2120097660 -10800 1 ADT} + {2140657260 -14400 0 AST} + {2152152060 -10800 1 ADT} + {2172711660 -14400 0 AST} + {2183601660 -10800 1 ADT} + {2204161260 -14400 0 AST} + {2215051260 -10800 1 ADT} + {2235610860 -14400 0 AST} + {2246500860 -10800 1 ADT} + {2267060460 -14400 0 AST} + {2277950460 -10800 1 ADT} + {2298510060 -14400 0 AST} + {2309400060 -10800 1 ADT} + {2329959660 -14400 0 AST} + {2341454460 -10800 1 ADT} + {2362014060 -14400 0 AST} + {2372904060 -10800 1 ADT} + {2393463660 -14400 0 AST} + {2404353660 -10800 1 ADT} + {2424913260 -14400 0 AST} + {2435803260 -10800 1 ADT} + {2456362860 -14400 0 AST} + {2467252860 -10800 1 ADT} + {2487812460 -14400 0 AST} + {2499307260 -10800 1 ADT} + {2519866860 -14400 0 AST} + {2530756860 -10800 1 ADT} + {2551316460 -14400 0 AST} + {2562206460 -10800 1 ADT} + {2582766060 -14400 0 AST} + {2593656060 -10800 1 ADT} + {2614215660 -14400 0 AST} + {2625105660 -10800 1 ADT} + {2645665260 -14400 0 AST} + {2656555260 -10800 1 ADT} + {2677114860 -14400 0 AST} + {2688609660 -10800 1 ADT} + {2709169260 -14400 0 AST} + {2720059260 -10800 1 ADT} + {2740618860 -14400 0 AST} + {2751508860 -10800 1 ADT} + {2772068460 -14400 0 AST} + {2782958460 -10800 1 ADT} + {2803518060 -14400 0 AST} + {2814408060 -10800 1 ADT} + {2834967660 -14400 0 AST} + {2846462460 -10800 1 ADT} + {2867022060 -14400 0 AST} + {2877912060 -10800 1 ADT} + {2898471660 -14400 0 AST} + {2909361660 -10800 1 ADT} + {2929921260 -14400 0 AST} + {2940811260 -10800 1 ADT} + {2961370860 -14400 0 AST} + {2972260860 -10800 1 ADT} + {2992820460 -14400 0 AST} + {3003710460 -10800 1 ADT} + {3024270060 -14400 0 AST} + {3035764860 -10800 1 ADT} + {3056324460 -14400 0 AST} + {3067214460 -10800 1 ADT} + {3087774060 -14400 0 AST} + {3098664060 -10800 1 ADT} + {3119223660 -14400 0 AST} + {3130113660 -10800 1 ADT} + {3150673260 -14400 0 AST} + {3161563260 -10800 1 ADT} + {3182122860 -14400 0 AST} + {3193012860 -10800 1 ADT} + {3213572460 -14400 0 AST} + {3225067260 -10800 1 ADT} + {3245626860 -14400 0 AST} + {3256516860 -10800 1 ADT} + {3277076460 -14400 0 AST} + {3287966460 -10800 1 ADT} + {3308526060 -14400 0 AST} + {3319416060 -10800 1 ADT} + {3339975660 -14400 0 AST} + {3350865660 -10800 1 ADT} + {3371425260 -14400 0 AST} + {3382920060 -10800 1 ADT} + {3403479660 -14400 0 AST} + {3414369660 -10800 1 ADT} + {3434929260 -14400 0 AST} + {3445819260 -10800 1 ADT} + {3466378860 -14400 0 AST} + {3477268860 -10800 1 ADT} + {3497828460 -14400 0 AST} + {3508718460 -10800 1 ADT} + {3529278060 -14400 0 AST} + {3540168060 -10800 1 ADT} + {3560727660 -14400 0 AST} + {3572222460 -10800 1 ADT} + {3592782060 -14400 0 AST} + {3603672060 -10800 1 ADT} + {3624231660 -14400 0 AST} + {3635121660 -10800 1 ADT} + {3655681260 -14400 0 AST} + {3666571260 -10800 1 ADT} + {3687130860 -14400 0 AST} + {3698020860 -10800 1 ADT} + {3718580460 -14400 0 AST} + {3730075260 -10800 1 ADT} + {3750634860 -14400 0 AST} + {3761524860 -10800 1 ADT} + {3782084460 -14400 0 AST} + {3792974460 -10800 1 ADT} + {3813534060 -14400 0 AST} + {3824424060 -10800 1 ADT} + {3844983660 -14400 0 AST} + {3855873660 -10800 1 ADT} + {3876433260 -14400 0 AST} + {3887323260 -10800 1 ADT} + {3907882860 -14400 0 AST} + {3919377660 -10800 1 ADT} + {3939937260 -14400 0 AST} + {3950827260 -10800 1 ADT} + {3971386860 -14400 0 AST} + {3982276860 -10800 1 ADT} + {4002836460 -14400 0 AST} + {4013726460 -10800 1 ADT} + {4034286060 -14400 0 AST} + {4045176060 -10800 1 ADT} + {4065735660 -14400 0 AST} + {4076625660 -10800 1 ADT} + {4097185260 -14400 0 AST} +} diff --git a/library/tzdata/America/Grand_Turk b/library/tzdata/America/Grand_Turk index 30bb58a..a455dd5 100644 --- a/library/tzdata/America/Grand_Turk +++ b/library/tzdata/America/Grand_Turk @@ -1,249 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Grand_Turk) { - {-9223372036854775808 -17072 0 LMT} - {-2524504528 -18432 0 KMT} - {-1827687168 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Grand_Turk) { + {-9223372036854775808 -17072 0 LMT} + {-2524504528 -18432 0 KMT} + {-1827687168 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Grenada b/library/tzdata/America/Grenada index c6f8093..3c2919b 100644 --- a/library/tzdata/America/Grenada +++ b/library/tzdata/America/Grenada @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Grenada) { - {-9223372036854775808 -14820 0 LMT} - {-1846266780 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Grenada) { + {-9223372036854775808 -14820 0 LMT} + {-1846266780 -14400 0 AST} +} diff --git a/library/tzdata/America/Guadeloupe b/library/tzdata/America/Guadeloupe index 131bbe2..b1987ce 100644 --- a/library/tzdata/America/Guadeloupe +++ b/library/tzdata/America/Guadeloupe @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Guadeloupe) { - {-9223372036854775808 -14768 0 LMT} - {-1848254032 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Guadeloupe) { + {-9223372036854775808 -14768 0 LMT} + {-1848254032 -14400 0 AST} +} diff --git a/library/tzdata/America/Guatemala b/library/tzdata/America/Guatemala index 9d47c33..e4db5ac 100644 --- a/library/tzdata/America/Guatemala +++ b/library/tzdata/America/Guatemala @@ -1,14 +1,14 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Guatemala) { - {-9223372036854775808 -21724 0 LMT} - {-1617040676 -21600 0 CST} - {123055200 -18000 1 CDT} - {130914000 -21600 0 CST} - {422344800 -18000 1 CDT} - {433054800 -21600 0 CST} - {669708000 -18000 1 CDT} - {684219600 -21600 0 CST} - {1146376800 -18000 1 CDT} - {1159678800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Guatemala) { + {-9223372036854775808 -21724 0 LMT} + {-1617040676 -21600 0 CST} + {123055200 -18000 1 CDT} + {130914000 -21600 0 CST} + {422344800 -18000 1 CDT} + {433054800 -21600 0 CST} + {669708000 -18000 1 CDT} + {684219600 -21600 0 CST} + {1146376800 -18000 1 CDT} + {1159678800 -21600 0 CST} +} diff --git a/library/tzdata/America/Guayaquil b/library/tzdata/America/Guayaquil index fe29ef0..e940a5b 100644 --- a/library/tzdata/America/Guayaquil +++ b/library/tzdata/America/Guayaquil @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Guayaquil) { - {-9223372036854775808 -19160 0 LMT} - {-2524502440 -18840 0 QMT} - {-1230749160 -18000 0 ECT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Guayaquil) { + {-9223372036854775808 -19160 0 LMT} + {-2524502440 -18840 0 QMT} + {-1230749160 -18000 0 ECT} +} diff --git a/library/tzdata/America/Guyana b/library/tzdata/America/Guyana index 8282656..c58a989 100644 --- a/library/tzdata/America/Guyana +++ b/library/tzdata/America/Guyana @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Guyana) { - {-9223372036854775808 -13960 0 LMT} - {-1730578040 -13500 0 GBGT} - {-113688900 -13500 0 GYT} - {176010300 -10800 0 GYT} - {662698800 -14400 0 GYT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Guyana) { + {-9223372036854775808 -13960 0 LMT} + {-1730578040 -13500 0 GBGT} + {-113688900 -13500 0 GYT} + {176010300 -10800 0 GYT} + {662698800 -14400 0 GYT} +} diff --git a/library/tzdata/America/Halifax b/library/tzdata/America/Halifax index e606fce..76f016a 100644 --- a/library/tzdata/America/Halifax +++ b/library/tzdata/America/Halifax @@ -1,361 +1,361 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Halifax) { - {-9223372036854775808 -15264 0 LMT} - {-2131645536 -14400 0 AST} - {-1696276800 -10800 1 ADT} - {-1680469200 -14400 0 AST} - {-1640980800 -14400 0 AST} - {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} - {-1609444800 -14400 0 AST} - {-1566763200 -10800 1 ADT} - {-1557090000 -14400 0 AST} - {-1535486400 -10800 1 ADT} - {-1524949200 -14400 0 AST} - {-1504468800 -10800 1 ADT} - {-1493413200 -14400 0 AST} - {-1472414400 -10800 1 ADT} - {-1461963600 -14400 0 AST} - {-1440964800 -10800 1 ADT} - {-1429390800 -14400 0 AST} - {-1409515200 -10800 1 ADT} - {-1396731600 -14400 0 AST} - {-1376856000 -10800 1 ADT} - {-1366491600 -14400 0 AST} - {-1346616000 -10800 1 ADT} - {-1333832400 -14400 0 AST} - {-1313956800 -10800 1 ADT} - {-1303678800 -14400 0 AST} - {-1282507200 -10800 1 ADT} - {-1272661200 -14400 0 AST} - {-1251057600 -10800 1 ADT} - {-1240088400 -14400 0 AST} - {-1219608000 -10800 1 ADT} - {-1207429200 -14400 0 AST} - {-1188763200 -10800 1 ADT} - {-1175979600 -14400 0 AST} - {-1157313600 -10800 1 ADT} - {-1143925200 -14400 0 AST} - {-1124049600 -10800 1 ADT} - {-1113771600 -14400 0 AST} - {-1091390400 -10800 1 ADT} - {-1081026000 -14400 0 AST} - {-1059854400 -10800 1 ADT} - {-1050786000 -14400 0 AST} - {-1030910400 -10800 1 ADT} - {-1018126800 -14400 0 AST} - {-999460800 -10800 1 ADT} - {-986677200 -14400 0 AST} - {-965592000 -10800 1 ADT} - {-955227600 -14400 0 AST} - {-935956800 -10800 1 ADT} - {-923173200 -14400 0 AST} - {-904507200 -10800 1 ADT} - {-891723600 -14400 0 AST} - {-880221600 -10800 0 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-757368000 -14400 0 AST} - {-747252000 -10800 1 ADT} - {-733950000 -14400 0 AST} - {-715802400 -10800 1 ADT} - {-702500400 -14400 0 AST} - {-684352800 -10800 1 ADT} - {-671050800 -14400 0 AST} - {-652903200 -10800 1 ADT} - {-639601200 -14400 0 AST} - {-589399200 -10800 1 ADT} - {-576097200 -14400 0 AST} - {-557949600 -10800 1 ADT} - {-544647600 -14400 0 AST} - {-526500000 -10800 1 ADT} - {-513198000 -14400 0 AST} - {-495050400 -10800 1 ADT} - {-481748400 -14400 0 AST} - {-431546400 -10800 1 ADT} - {-418244400 -14400 0 AST} - {-400096800 -10800 1 ADT} - {-386794800 -14400 0 AST} - {-368647200 -10800 1 ADT} - {-355345200 -14400 0 AST} - {-337197600 -10800 1 ADT} - {-323895600 -14400 0 AST} - {-242244000 -10800 1 ADT} - {-226522800 -14400 0 AST} - {-210794400 -10800 1 ADT} - {-195073200 -14400 0 AST} - {-179344800 -10800 1 ADT} - {-163623600 -14400 0 AST} - {-147895200 -10800 1 ADT} - {-131569200 -14400 0 AST} - {-116445600 -10800 1 ADT} - {-100119600 -14400 0 AST} - {-84391200 -10800 1 ADT} - {-68670000 -14400 0 AST} - {-52941600 -10800 1 ADT} - {-37220400 -14400 0 AST} - {-21492000 -10800 1 ADT} - {-5770800 -14400 0 AST} - {9957600 -10800 1 ADT} - {25678800 -14400 0 AST} - {41407200 -10800 1 ADT} - {57733200 -14400 0 AST} - {73461600 -10800 1 ADT} - {89182800 -14400 0 AST} - {104911200 -10800 1 ADT} - {120632400 -14400 0 AST} - {126244800 -14400 0 AST} - {136360800 -10800 1 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -10800 1 ADT} - {814942800 -14400 0 AST} - {828856800 -10800 1 ADT} - {846392400 -14400 0 AST} - {860306400 -10800 1 ADT} - {877842000 -14400 0 AST} - {891756000 -10800 1 ADT} - {909291600 -14400 0 AST} - {923205600 -10800 1 ADT} - {941346000 -14400 0 AST} - {954655200 -10800 1 ADT} - {972795600 -14400 0 AST} - {986104800 -10800 1 ADT} - {1004245200 -14400 0 AST} - {1018159200 -10800 1 ADT} - {1035694800 -14400 0 AST} - {1049608800 -10800 1 ADT} - {1067144400 -14400 0 AST} - {1081058400 -10800 1 ADT} - {1099198800 -14400 0 AST} - {1112508000 -10800 1 ADT} - {1130648400 -14400 0 AST} - {1143957600 -10800 1 ADT} - {1162098000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Halifax) { + {-9223372036854775808 -15264 0 LMT} + {-2131645536 -14400 0 AST} + {-1696276800 -10800 1 ADT} + {-1680469200 -14400 0 AST} + {-1640980800 -14400 0 AST} + {-1632074400 -10800 1 ADT} + {-1614798000 -14400 0 AST} + {-1609444800 -14400 0 AST} + {-1566763200 -10800 1 ADT} + {-1557090000 -14400 0 AST} + {-1535486400 -10800 1 ADT} + {-1524949200 -14400 0 AST} + {-1504468800 -10800 1 ADT} + {-1493413200 -14400 0 AST} + {-1472414400 -10800 1 ADT} + {-1461963600 -14400 0 AST} + {-1440964800 -10800 1 ADT} + {-1429390800 -14400 0 AST} + {-1409515200 -10800 1 ADT} + {-1396731600 -14400 0 AST} + {-1376856000 -10800 1 ADT} + {-1366491600 -14400 0 AST} + {-1346616000 -10800 1 ADT} + {-1333832400 -14400 0 AST} + {-1313956800 -10800 1 ADT} + {-1303678800 -14400 0 AST} + {-1282507200 -10800 1 ADT} + {-1272661200 -14400 0 AST} + {-1251057600 -10800 1 ADT} + {-1240088400 -14400 0 AST} + {-1219608000 -10800 1 ADT} + {-1207429200 -14400 0 AST} + {-1188763200 -10800 1 ADT} + {-1175979600 -14400 0 AST} + {-1157313600 -10800 1 ADT} + {-1143925200 -14400 0 AST} + {-1124049600 -10800 1 ADT} + {-1113771600 -14400 0 AST} + {-1091390400 -10800 1 ADT} + {-1081026000 -14400 0 AST} + {-1059854400 -10800 1 ADT} + {-1050786000 -14400 0 AST} + {-1030910400 -10800 1 ADT} + {-1018126800 -14400 0 AST} + {-999460800 -10800 1 ADT} + {-986677200 -14400 0 AST} + {-965592000 -10800 1 ADT} + {-955227600 -14400 0 AST} + {-935956800 -10800 1 ADT} + {-923173200 -14400 0 AST} + {-904507200 -10800 1 ADT} + {-891723600 -14400 0 AST} + {-880221600 -10800 0 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-757368000 -14400 0 AST} + {-747252000 -10800 1 ADT} + {-733950000 -14400 0 AST} + {-715802400 -10800 1 ADT} + {-702500400 -14400 0 AST} + {-684352800 -10800 1 ADT} + {-671050800 -14400 0 AST} + {-652903200 -10800 1 ADT} + {-639601200 -14400 0 AST} + {-589399200 -10800 1 ADT} + {-576097200 -14400 0 AST} + {-557949600 -10800 1 ADT} + {-544647600 -14400 0 AST} + {-526500000 -10800 1 ADT} + {-513198000 -14400 0 AST} + {-495050400 -10800 1 ADT} + {-481748400 -14400 0 AST} + {-431546400 -10800 1 ADT} + {-418244400 -14400 0 AST} + {-400096800 -10800 1 ADT} + {-386794800 -14400 0 AST} + {-368647200 -10800 1 ADT} + {-355345200 -14400 0 AST} + {-337197600 -10800 1 ADT} + {-323895600 -14400 0 AST} + {-242244000 -10800 1 ADT} + {-226522800 -14400 0 AST} + {-210794400 -10800 1 ADT} + {-195073200 -14400 0 AST} + {-179344800 -10800 1 ADT} + {-163623600 -14400 0 AST} + {-147895200 -10800 1 ADT} + {-131569200 -14400 0 AST} + {-116445600 -10800 1 ADT} + {-100119600 -14400 0 AST} + {-84391200 -10800 1 ADT} + {-68670000 -14400 0 AST} + {-52941600 -10800 1 ADT} + {-37220400 -14400 0 AST} + {-21492000 -10800 1 ADT} + {-5770800 -14400 0 AST} + {9957600 -10800 1 ADT} + {25678800 -14400 0 AST} + {41407200 -10800 1 ADT} + {57733200 -14400 0 AST} + {73461600 -10800 1 ADT} + {89182800 -14400 0 AST} + {104911200 -10800 1 ADT} + {120632400 -14400 0 AST} + {126244800 -14400 0 AST} + {136360800 -10800 1 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -10800 1 ADT} + {814942800 -14400 0 AST} + {828856800 -10800 1 ADT} + {846392400 -14400 0 AST} + {860306400 -10800 1 ADT} + {877842000 -14400 0 AST} + {891756000 -10800 1 ADT} + {909291600 -14400 0 AST} + {923205600 -10800 1 ADT} + {941346000 -14400 0 AST} + {954655200 -10800 1 ADT} + {972795600 -14400 0 AST} + {986104800 -10800 1 ADT} + {1004245200 -14400 0 AST} + {1018159200 -10800 1 ADT} + {1035694800 -14400 0 AST} + {1049608800 -10800 1 ADT} + {1067144400 -14400 0 AST} + {1081058400 -10800 1 ADT} + {1099198800 -14400 0 AST} + {1112508000 -10800 1 ADT} + {1130648400 -14400 0 AST} + {1143957600 -10800 1 ADT} + {1162098000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/America/Havana b/library/tzdata/America/Havana index 8ea6454..7fc6305 100644 --- a/library/tzdata/America/Havana +++ b/library/tzdata/America/Havana @@ -1,285 +1,285 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Havana) { - {-9223372036854775808 -19768 0 LMT} - {-2524501832 -19776 0 HMT} - {-1402813824 -18000 0 CST} - {-1311534000 -14400 1 CDT} - {-1300996800 -18000 0 CST} - {-933534000 -14400 1 CDT} - {-925675200 -18000 0 CST} - {-902084400 -14400 1 CDT} - {-893620800 -18000 0 CST} - {-870030000 -14400 1 CDT} - {-862171200 -18000 0 CST} - {-775681200 -14400 1 CDT} - {-767822400 -18000 0 CST} - {-744231600 -14400 1 CDT} - {-736372800 -18000 0 CST} - {-144702000 -14400 1 CDT} - {-134251200 -18000 0 CST} - {-113425200 -14400 1 CDT} - {-102542400 -18000 0 CST} - {-86295600 -14400 1 CDT} - {-72907200 -18000 0 CST} - {-54154800 -14400 1 CDT} - {-41457600 -18000 0 CST} - {-21495600 -14400 1 CDT} - {-5774400 -18000 0 CST} - {9954000 -14400 1 CDT} - {25675200 -18000 0 CST} - {41403600 -14400 1 CDT} - {57729600 -18000 0 CST} - {73458000 -14400 1 CDT} - {87364800 -18000 0 CST} - {104907600 -14400 1 CDT} - {118900800 -18000 0 CST} - {136357200 -14400 1 CDT} - {150436800 -18000 0 CST} - {167806800 -14400 1 CDT} - {183528000 -18000 0 CST} - {199256400 -14400 1 CDT} - {215582400 -18000 0 CST} - {230706000 -14400 1 CDT} - {247032000 -18000 0 CST} - {263365200 -14400 1 CDT} - {276667200 -18000 0 CST} - {290581200 -14400 1 CDT} - {308721600 -18000 0 CST} - {322030800 -14400 1 CDT} - {340171200 -18000 0 CST} - {358318800 -14400 1 CDT} - {371620800 -18000 0 CST} - {389768400 -14400 1 CDT} - {403070400 -18000 0 CST} - {421218000 -14400 1 CDT} - {434520000 -18000 0 CST} - {452667600 -14400 1 CDT} - {466574400 -18000 0 CST} - {484117200 -14400 1 CDT} - {498024000 -18000 0 CST} - {511333200 -14400 1 CDT} - {529473600 -18000 0 CST} - {542782800 -14400 1 CDT} - {560923200 -18000 0 CST} - {574837200 -14400 1 CDT} - {592372800 -18000 0 CST} - {606286800 -14400 1 CDT} - {623822400 -18000 0 CST} - {638946000 -14400 1 CDT} - {655876800 -18000 0 CST} - {671000400 -14400 1 CDT} - {687330000 -18000 0 CST} - {702450000 -14400 1 CDT} - {718779600 -18000 0 CST} - {733899600 -14400 1 CDT} - {750229200 -18000 0 CST} - {765349200 -14400 1 CDT} - {781678800 -18000 0 CST} - {796798800 -14400 1 CDT} - {813128400 -18000 0 CST} - {828853200 -14400 1 CDT} - {844578000 -18000 0 CST} - {860302800 -14400 1 CDT} - {876632400 -18000 0 CST} - {891147600 -14400 1 CDT} - {909291600 -18000 0 CST} - {922597200 -14400 1 CDT} - {941346000 -18000 0 CST} - {954651600 -14400 1 CDT} - {972795600 -18000 0 CST} - {986101200 -14400 1 CDT} - {1004245200 -18000 0 CST} - {1018155600 -14400 1 CDT} - {1035694800 -18000 0 CST} - {1049605200 -14400 1 CDT} - {1067144400 -18000 0 CST} - {1081054800 -14400 1 CDT} - {1162098000 -18000 0 CST} - {1173589200 -14400 1 CDT} - {1193547600 -18000 0 CST} - {1205643600 -14400 1 CDT} - {1224997200 -18000 0 CST} - {1236488400 -14400 1 CDT} - {1256446800 -18000 0 CST} - {1268542800 -14400 1 CDT} - {1288501200 -18000 0 CST} - {1299992400 -14400 1 CDT} - {1319950800 -18000 0 CST} - {1331442000 -14400 1 CDT} - {1351400400 -18000 0 CST} - {1362891600 -14400 1 CDT} - {1382850000 -18000 0 CST} - {1394341200 -14400 1 CDT} - {1414299600 -18000 0 CST} - {1425790800 -14400 1 CDT} - {1445749200 -18000 0 CST} - {1457845200 -14400 1 CDT} - {1477803600 -18000 0 CST} - {1489294800 -14400 1 CDT} - {1509253200 -18000 0 CST} - {1520744400 -14400 1 CDT} - {1540702800 -18000 0 CST} - {1552194000 -14400 1 CDT} - {1572152400 -18000 0 CST} - {1583643600 -14400 1 CDT} - {1603602000 -18000 0 CST} - {1615698000 -14400 1 CDT} - {1635656400 -18000 0 CST} - {1647147600 -14400 1 CDT} - {1667106000 -18000 0 CST} - {1678597200 -14400 1 CDT} - {1698555600 -18000 0 CST} - {1710046800 -14400 1 CDT} - {1730005200 -18000 0 CST} - {1741496400 -14400 1 CDT} - {1761454800 -18000 0 CST} - {1772946000 -14400 1 CDT} - {1792904400 -18000 0 CST} - {1805000400 -14400 1 CDT} - {1824958800 -18000 0 CST} - {1836450000 -14400 1 CDT} - {1856408400 -18000 0 CST} - {1867899600 -14400 1 CDT} - {1887858000 -18000 0 CST} - {1899349200 -14400 1 CDT} - {1919307600 -18000 0 CST} - {1930798800 -14400 1 CDT} - {1950757200 -18000 0 CST} - {1962853200 -14400 1 CDT} - {1982811600 -18000 0 CST} - {1994302800 -14400 1 CDT} - {2014261200 -18000 0 CST} - {2025752400 -14400 1 CDT} - {2045710800 -18000 0 CST} - {2057202000 -14400 1 CDT} - {2077160400 -18000 0 CST} - {2088651600 -14400 1 CDT} - {2108610000 -18000 0 CST} - {2120101200 -14400 1 CDT} - {2140059600 -18000 0 CST} - {2152155600 -14400 1 CDT} - {2172114000 -18000 0 CST} - {2183605200 -14400 1 CDT} - {2203563600 -18000 0 CST} - {2215054800 -14400 1 CDT} - {2235013200 -18000 0 CST} - {2246504400 -14400 1 CDT} - {2266462800 -18000 0 CST} - {2277954000 -14400 1 CDT} - {2297912400 -18000 0 CST} - {2309403600 -14400 1 CDT} - {2329362000 -18000 0 CST} - {2341458000 -14400 1 CDT} - {2361416400 -18000 0 CST} - {2372907600 -14400 1 CDT} - {2392866000 -18000 0 CST} - {2404357200 -14400 1 CDT} - {2424315600 -18000 0 CST} - {2435806800 -14400 1 CDT} - {2455765200 -18000 0 CST} - {2467256400 -14400 1 CDT} - {2487214800 -18000 0 CST} - {2499310800 -14400 1 CDT} - {2519269200 -18000 0 CST} - {2530760400 -14400 1 CDT} - {2550718800 -18000 0 CST} - {2562210000 -14400 1 CDT} - {2582168400 -18000 0 CST} - {2593659600 -14400 1 CDT} - {2613618000 -18000 0 CST} - {2625109200 -14400 1 CDT} - {2645067600 -18000 0 CST} - {2656558800 -14400 1 CDT} - {2676517200 -18000 0 CST} - {2688613200 -14400 1 CDT} - {2708571600 -18000 0 CST} - {2720062800 -14400 1 CDT} - {2740021200 -18000 0 CST} - {2751512400 -14400 1 CDT} - {2771470800 -18000 0 CST} - {2782962000 -14400 1 CDT} - {2802920400 -18000 0 CST} - {2814411600 -14400 1 CDT} - {2834370000 -18000 0 CST} - {2846466000 -14400 1 CDT} - {2866424400 -18000 0 CST} - {2877915600 -14400 1 CDT} - {2897874000 -18000 0 CST} - {2909365200 -14400 1 CDT} - {2929323600 -18000 0 CST} - {2940814800 -14400 1 CDT} - {2960773200 -18000 0 CST} - {2972264400 -14400 1 CDT} - {2992222800 -18000 0 CST} - {3003714000 -14400 1 CDT} - {3023672400 -18000 0 CST} - {3035768400 -14400 1 CDT} - {3055726800 -18000 0 CST} - {3067218000 -14400 1 CDT} - {3087176400 -18000 0 CST} - {3098667600 -14400 1 CDT} - {3118626000 -18000 0 CST} - {3130117200 -14400 1 CDT} - {3150075600 -18000 0 CST} - {3161566800 -14400 1 CDT} - {3181525200 -18000 0 CST} - {3193016400 -14400 1 CDT} - {3212974800 -18000 0 CST} - {3225070800 -14400 1 CDT} - {3245029200 -18000 0 CST} - {3256520400 -14400 1 CDT} - {3276478800 -18000 0 CST} - {3287970000 -14400 1 CDT} - {3307928400 -18000 0 CST} - {3319419600 -14400 1 CDT} - {3339378000 -18000 0 CST} - {3350869200 -14400 1 CDT} - {3370827600 -18000 0 CST} - {3382923600 -14400 1 CDT} - {3402882000 -18000 0 CST} - {3414373200 -14400 1 CDT} - {3434331600 -18000 0 CST} - {3445822800 -14400 1 CDT} - {3465781200 -18000 0 CST} - {3477272400 -14400 1 CDT} - {3497230800 -18000 0 CST} - {3508722000 -14400 1 CDT} - {3528680400 -18000 0 CST} - {3540171600 -14400 1 CDT} - {3560130000 -18000 0 CST} - {3572226000 -14400 1 CDT} - {3592184400 -18000 0 CST} - {3603675600 -14400 1 CDT} - {3623634000 -18000 0 CST} - {3635125200 -14400 1 CDT} - {3655083600 -18000 0 CST} - {3666574800 -14400 1 CDT} - {3686533200 -18000 0 CST} - {3698024400 -14400 1 CDT} - {3717982800 -18000 0 CST} - {3730078800 -14400 1 CDT} - {3750037200 -18000 0 CST} - {3761528400 -14400 1 CDT} - {3781486800 -18000 0 CST} - {3792978000 -14400 1 CDT} - {3812936400 -18000 0 CST} - {3824427600 -14400 1 CDT} - {3844386000 -18000 0 CST} - {3855877200 -14400 1 CDT} - {3875835600 -18000 0 CST} - {3887326800 -14400 1 CDT} - {3907285200 -18000 0 CST} - {3919381200 -14400 1 CDT} - {3939339600 -18000 0 CST} - {3950830800 -14400 1 CDT} - {3970789200 -18000 0 CST} - {3982280400 -14400 1 CDT} - {4002238800 -18000 0 CST} - {4013730000 -14400 1 CDT} - {4033688400 -18000 0 CST} - {4045179600 -14400 1 CDT} - {4065138000 -18000 0 CST} - {4076629200 -14400 1 CDT} - {4096587600 -18000 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Havana) { + {-9223372036854775808 -19768 0 LMT} + {-2524501832 -19776 0 HMT} + {-1402813824 -18000 0 CST} + {-1311534000 -14400 1 CDT} + {-1300996800 -18000 0 CST} + {-933534000 -14400 1 CDT} + {-925675200 -18000 0 CST} + {-902084400 -14400 1 CDT} + {-893620800 -18000 0 CST} + {-870030000 -14400 1 CDT} + {-862171200 -18000 0 CST} + {-775681200 -14400 1 CDT} + {-767822400 -18000 0 CST} + {-744231600 -14400 1 CDT} + {-736372800 -18000 0 CST} + {-144702000 -14400 1 CDT} + {-134251200 -18000 0 CST} + {-113425200 -14400 1 CDT} + {-102542400 -18000 0 CST} + {-86295600 -14400 1 CDT} + {-72907200 -18000 0 CST} + {-54154800 -14400 1 CDT} + {-41457600 -18000 0 CST} + {-21495600 -14400 1 CDT} + {-5774400 -18000 0 CST} + {9954000 -14400 1 CDT} + {25675200 -18000 0 CST} + {41403600 -14400 1 CDT} + {57729600 -18000 0 CST} + {73458000 -14400 1 CDT} + {87364800 -18000 0 CST} + {104907600 -14400 1 CDT} + {118900800 -18000 0 CST} + {136357200 -14400 1 CDT} + {150436800 -18000 0 CST} + {167806800 -14400 1 CDT} + {183528000 -18000 0 CST} + {199256400 -14400 1 CDT} + {215582400 -18000 0 CST} + {230706000 -14400 1 CDT} + {247032000 -18000 0 CST} + {263365200 -14400 1 CDT} + {276667200 -18000 0 CST} + {290581200 -14400 1 CDT} + {308721600 -18000 0 CST} + {322030800 -14400 1 CDT} + {340171200 -18000 0 CST} + {358318800 -14400 1 CDT} + {371620800 -18000 0 CST} + {389768400 -14400 1 CDT} + {403070400 -18000 0 CST} + {421218000 -14400 1 CDT} + {434520000 -18000 0 CST} + {452667600 -14400 1 CDT} + {466574400 -18000 0 CST} + {484117200 -14400 1 CDT} + {498024000 -18000 0 CST} + {511333200 -14400 1 CDT} + {529473600 -18000 0 CST} + {542782800 -14400 1 CDT} + {560923200 -18000 0 CST} + {574837200 -14400 1 CDT} + {592372800 -18000 0 CST} + {606286800 -14400 1 CDT} + {623822400 -18000 0 CST} + {638946000 -14400 1 CDT} + {655876800 -18000 0 CST} + {671000400 -14400 1 CDT} + {687330000 -18000 0 CST} + {702450000 -14400 1 CDT} + {718779600 -18000 0 CST} + {733899600 -14400 1 CDT} + {750229200 -18000 0 CST} + {765349200 -14400 1 CDT} + {781678800 -18000 0 CST} + {796798800 -14400 1 CDT} + {813128400 -18000 0 CST} + {828853200 -14400 1 CDT} + {844578000 -18000 0 CST} + {860302800 -14400 1 CDT} + {876632400 -18000 0 CST} + {891147600 -14400 1 CDT} + {909291600 -18000 0 CST} + {922597200 -14400 1 CDT} + {941346000 -18000 0 CST} + {954651600 -14400 1 CDT} + {972795600 -18000 0 CST} + {986101200 -14400 1 CDT} + {1004245200 -18000 0 CST} + {1018155600 -14400 1 CDT} + {1035694800 -18000 0 CST} + {1049605200 -14400 1 CDT} + {1067144400 -18000 0 CST} + {1081054800 -14400 1 CDT} + {1162098000 -18000 0 CST} + {1173589200 -14400 1 CDT} + {1193547600 -18000 0 CST} + {1205643600 -14400 1 CDT} + {1224997200 -18000 0 CST} + {1236488400 -14400 1 CDT} + {1256446800 -18000 0 CST} + {1268542800 -14400 1 CDT} + {1288501200 -18000 0 CST} + {1299992400 -14400 1 CDT} + {1319950800 -18000 0 CST} + {1331442000 -14400 1 CDT} + {1351400400 -18000 0 CST} + {1362891600 -14400 1 CDT} + {1382850000 -18000 0 CST} + {1394341200 -14400 1 CDT} + {1414299600 -18000 0 CST} + {1425790800 -14400 1 CDT} + {1445749200 -18000 0 CST} + {1457845200 -14400 1 CDT} + {1477803600 -18000 0 CST} + {1489294800 -14400 1 CDT} + {1509253200 -18000 0 CST} + {1520744400 -14400 1 CDT} + {1540702800 -18000 0 CST} + {1552194000 -14400 1 CDT} + {1572152400 -18000 0 CST} + {1583643600 -14400 1 CDT} + {1603602000 -18000 0 CST} + {1615698000 -14400 1 CDT} + {1635656400 -18000 0 CST} + {1647147600 -14400 1 CDT} + {1667106000 -18000 0 CST} + {1678597200 -14400 1 CDT} + {1698555600 -18000 0 CST} + {1710046800 -14400 1 CDT} + {1730005200 -18000 0 CST} + {1741496400 -14400 1 CDT} + {1761454800 -18000 0 CST} + {1772946000 -14400 1 CDT} + {1792904400 -18000 0 CST} + {1805000400 -14400 1 CDT} + {1824958800 -18000 0 CST} + {1836450000 -14400 1 CDT} + {1856408400 -18000 0 CST} + {1867899600 -14400 1 CDT} + {1887858000 -18000 0 CST} + {1899349200 -14400 1 CDT} + {1919307600 -18000 0 CST} + {1930798800 -14400 1 CDT} + {1950757200 -18000 0 CST} + {1962853200 -14400 1 CDT} + {1982811600 -18000 0 CST} + {1994302800 -14400 1 CDT} + {2014261200 -18000 0 CST} + {2025752400 -14400 1 CDT} + {2045710800 -18000 0 CST} + {2057202000 -14400 1 CDT} + {2077160400 -18000 0 CST} + {2088651600 -14400 1 CDT} + {2108610000 -18000 0 CST} + {2120101200 -14400 1 CDT} + {2140059600 -18000 0 CST} + {2152155600 -14400 1 CDT} + {2172114000 -18000 0 CST} + {2183605200 -14400 1 CDT} + {2203563600 -18000 0 CST} + {2215054800 -14400 1 CDT} + {2235013200 -18000 0 CST} + {2246504400 -14400 1 CDT} + {2266462800 -18000 0 CST} + {2277954000 -14400 1 CDT} + {2297912400 -18000 0 CST} + {2309403600 -14400 1 CDT} + {2329362000 -18000 0 CST} + {2341458000 -14400 1 CDT} + {2361416400 -18000 0 CST} + {2372907600 -14400 1 CDT} + {2392866000 -18000 0 CST} + {2404357200 -14400 1 CDT} + {2424315600 -18000 0 CST} + {2435806800 -14400 1 CDT} + {2455765200 -18000 0 CST} + {2467256400 -14400 1 CDT} + {2487214800 -18000 0 CST} + {2499310800 -14400 1 CDT} + {2519269200 -18000 0 CST} + {2530760400 -14400 1 CDT} + {2550718800 -18000 0 CST} + {2562210000 -14400 1 CDT} + {2582168400 -18000 0 CST} + {2593659600 -14400 1 CDT} + {2613618000 -18000 0 CST} + {2625109200 -14400 1 CDT} + {2645067600 -18000 0 CST} + {2656558800 -14400 1 CDT} + {2676517200 -18000 0 CST} + {2688613200 -14400 1 CDT} + {2708571600 -18000 0 CST} + {2720062800 -14400 1 CDT} + {2740021200 -18000 0 CST} + {2751512400 -14400 1 CDT} + {2771470800 -18000 0 CST} + {2782962000 -14400 1 CDT} + {2802920400 -18000 0 CST} + {2814411600 -14400 1 CDT} + {2834370000 -18000 0 CST} + {2846466000 -14400 1 CDT} + {2866424400 -18000 0 CST} + {2877915600 -14400 1 CDT} + {2897874000 -18000 0 CST} + {2909365200 -14400 1 CDT} + {2929323600 -18000 0 CST} + {2940814800 -14400 1 CDT} + {2960773200 -18000 0 CST} + {2972264400 -14400 1 CDT} + {2992222800 -18000 0 CST} + {3003714000 -14400 1 CDT} + {3023672400 -18000 0 CST} + {3035768400 -14400 1 CDT} + {3055726800 -18000 0 CST} + {3067218000 -14400 1 CDT} + {3087176400 -18000 0 CST} + {3098667600 -14400 1 CDT} + {3118626000 -18000 0 CST} + {3130117200 -14400 1 CDT} + {3150075600 -18000 0 CST} + {3161566800 -14400 1 CDT} + {3181525200 -18000 0 CST} + {3193016400 -14400 1 CDT} + {3212974800 -18000 0 CST} + {3225070800 -14400 1 CDT} + {3245029200 -18000 0 CST} + {3256520400 -14400 1 CDT} + {3276478800 -18000 0 CST} + {3287970000 -14400 1 CDT} + {3307928400 -18000 0 CST} + {3319419600 -14400 1 CDT} + {3339378000 -18000 0 CST} + {3350869200 -14400 1 CDT} + {3370827600 -18000 0 CST} + {3382923600 -14400 1 CDT} + {3402882000 -18000 0 CST} + {3414373200 -14400 1 CDT} + {3434331600 -18000 0 CST} + {3445822800 -14400 1 CDT} + {3465781200 -18000 0 CST} + {3477272400 -14400 1 CDT} + {3497230800 -18000 0 CST} + {3508722000 -14400 1 CDT} + {3528680400 -18000 0 CST} + {3540171600 -14400 1 CDT} + {3560130000 -18000 0 CST} + {3572226000 -14400 1 CDT} + {3592184400 -18000 0 CST} + {3603675600 -14400 1 CDT} + {3623634000 -18000 0 CST} + {3635125200 -14400 1 CDT} + {3655083600 -18000 0 CST} + {3666574800 -14400 1 CDT} + {3686533200 -18000 0 CST} + {3698024400 -14400 1 CDT} + {3717982800 -18000 0 CST} + {3730078800 -14400 1 CDT} + {3750037200 -18000 0 CST} + {3761528400 -14400 1 CDT} + {3781486800 -18000 0 CST} + {3792978000 -14400 1 CDT} + {3812936400 -18000 0 CST} + {3824427600 -14400 1 CDT} + {3844386000 -18000 0 CST} + {3855877200 -14400 1 CDT} + {3875835600 -18000 0 CST} + {3887326800 -14400 1 CDT} + {3907285200 -18000 0 CST} + {3919381200 -14400 1 CDT} + {3939339600 -18000 0 CST} + {3950830800 -14400 1 CDT} + {3970789200 -18000 0 CST} + {3982280400 -14400 1 CDT} + {4002238800 -18000 0 CST} + {4013730000 -14400 1 CDT} + {4033688400 -18000 0 CST} + {4045179600 -14400 1 CDT} + {4065138000 -18000 0 CST} + {4076629200 -14400 1 CDT} + {4096587600 -18000 0 CST} +} diff --git a/library/tzdata/America/Hermosillo b/library/tzdata/America/Hermosillo index ec406ed..779020e 100644 --- a/library/tzdata/America/Hermosillo +++ b/library/tzdata/America/Hermosillo @@ -1,21 +1,21 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Hermosillo) { - {-9223372036854775808 -26632 0 LMT} - {-1514739600 -25200 0 MST} - {-1343066400 -21600 0 CST} - {-1234807200 -25200 0 MST} - {-1220292000 -21600 0 CST} - {-1207159200 -25200 0 MST} - {-1191344400 -21600 0 CST} - {-873828000 -25200 0 MST} - {-661539600 -28800 0 PST} - {28800 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {915174000 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Hermosillo) { + {-9223372036854775808 -26632 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {-873828000 -25200 0 MST} + {-661539600 -28800 0 PST} + {28800 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {915174000 -25200 0 MST} +} diff --git a/library/tzdata/America/Indiana/Indianapolis b/library/tzdata/America/Indiana/Indianapolis index 2fe3912..63c410c 100644 --- a/library/tzdata/America/Indiana/Indianapolis +++ b/library/tzdata/America/Indiana/Indianapolis @@ -1,234 +1,234 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Indianapolis) { - {-9223372036854775808 -20678 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-1577901600 -21600 0 CST} - {-900259200 -18000 1 CDT} - {-891795600 -21600 0 CST} - {-883591200 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620841600 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 0 EST} - {-386787600 -21600 0 CST} - {-368640000 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {31554000 -18000 0 EST} - {1136091600 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Indianapolis) { + {-9223372036854775808 -20678 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-1577901600 -21600 0 CST} + {-900259200 -18000 1 CDT} + {-891795600 -21600 0 CST} + {-883591200 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620841600 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 0 EST} + {-386787600 -21600 0 CST} + {-368640000 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {31554000 -18000 0 EST} + {1136091600 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Knox b/library/tzdata/America/Indiana/Knox index 235c075..eee3ff4 100644 --- a/library/tzdata/America/Indiana/Knox +++ b/library/tzdata/America/Indiana/Knox @@ -1,285 +1,285 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Knox) { - {-9223372036854775808 -20790 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-725824800 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620841600 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-447267600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-415818000 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-321469200 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-257965200 -21600 0 CST} - {-242236800 -18000 0 EST} - {-195066000 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68662800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688550400 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Knox) { + {-9223372036854775808 -20790 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-725824800 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620841600 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-447267600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-415818000 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-321469200 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-257965200 -21600 0 CST} + {-242236800 -18000 0 EST} + {-195066000 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68662800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688550400 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Indiana/Marengo b/library/tzdata/America/Indiana/Marengo index 47e833e..3f1d578 100644 --- a/library/tzdata/America/Indiana/Marengo +++ b/library/tzdata/America/Indiana/Marengo @@ -1,236 +1,236 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Marengo) { - {-9223372036854775808 -20723 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-599594400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-292438800 -21600 0 CST} - {-273686400 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -18000 1 CDT} - {152089200 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {189320400 -18000 0 EST} - {1136091600 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Marengo) { + {-9223372036854775808 -20723 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-599594400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-292438800 -21600 0 CST} + {-273686400 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -18000 1 CDT} + {152089200 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {189320400 -18000 0 EST} + {1136091600 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Petersburg b/library/tzdata/America/Indiana/Petersburg index 15d5966..6992bfc 100755 --- a/library/tzdata/America/Indiana/Petersburg +++ b/library/tzdata/America/Indiana/Petersburg @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Petersburg) { - {-9223372036854775808 -20947 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-473364000 -21600 0 CST} - {-462996000 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-292438800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-257965200 -21600 0 CST} - {-242236800 -18000 1 CDT} - {-226515600 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-195066000 -21600 0 CST} - {-179337600 -18000 1 CDT} - {-163616400 -21600 0 CST} - {-147888000 -18000 0 EST} - {-100112400 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68662800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247046400 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194163200 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Petersburg) { + {-9223372036854775808 -20947 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-473364000 -21600 0 CST} + {-462996000 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-292438800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-257965200 -21600 0 CST} + {-242236800 -18000 1 CDT} + {-226515600 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-195066000 -21600 0 CST} + {-179337600 -18000 1 CDT} + {-163616400 -21600 0 CST} + {-147888000 -18000 0 EST} + {-100112400 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68662800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247046400 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194163200 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Tell_City b/library/tzdata/America/Indiana/Tell_City index 4bf0fc0..9eebcf7 100755 --- a/library/tzdata/America/Indiana/Tell_City +++ b/library/tzdata/America/Indiana/Tell_City @@ -1,234 +1,234 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Tell_City) { - {-9223372036854775808 -20823 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-462996000 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-260989200 -21600 0 CST} - {-242236800 -18000 1 CDT} - {-226515600 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-195066000 -21600 0 CST} - {-179337600 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {31554000 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Tell_City) { + {-9223372036854775808 -20823 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-462996000 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-260989200 -21600 0 CST} + {-242236800 -18000 1 CDT} + {-226515600 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-195066000 -21600 0 CST} + {-179337600 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {31554000 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Indiana/Vevay b/library/tzdata/America/Indiana/Vevay index d0f8474..8d4157f 100644 --- a/library/tzdata/America/Indiana/Vevay +++ b/library/tzdata/America/Indiana/Vevay @@ -1,213 +1,213 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Vevay) { - {-9223372036854775808 -20416 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-495043200 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {94712400 -18000 0 EST} - {1136091600 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Vevay) { + {-9223372036854775808 -20416 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-495043200 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {94712400 -18000 0 EST} + {1136091600 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Vincennes b/library/tzdata/America/Indiana/Vincennes index 0211a71..1af7fc9 100755 --- a/library/tzdata/America/Indiana/Vincennes +++ b/library/tzdata/America/Indiana/Vincennes @@ -1,234 +1,234 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Vincennes) { - {-9223372036854775808 -21007 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-462996000 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-260989200 -21600 0 CST} - {-242236800 -18000 1 CDT} - {-226515600 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-195066000 -21600 0 CST} - {-179337600 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {31554000 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194163200 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Vincennes) { + {-9223372036854775808 -21007 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-462996000 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-260989200 -21600 0 CST} + {-242236800 -18000 1 CDT} + {-226515600 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-195066000 -21600 0 CST} + {-179337600 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {31554000 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194163200 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indiana/Winamac b/library/tzdata/America/Indiana/Winamac index 6cbe6eb..fb6cd37 100755 --- a/library/tzdata/America/Indiana/Winamac +++ b/library/tzdata/America/Indiana/Winamac @@ -1,240 +1,240 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Indiana/Winamac) { - {-9223372036854775808 -20785 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620841600 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-447267600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-415818000 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-323888400 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-292438800 -21600 0 CST} - {-273686400 -18000 0 EST} - {-31518000 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {31554000 -18000 0 EST} - {1143961200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -14400 0 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Indiana/Winamac) { + {-9223372036854775808 -20785 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620841600 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-447267600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-415818000 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-323888400 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-292438800 -21600 0 CST} + {-273686400 -18000 0 EST} + {-31518000 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {31554000 -18000 0 EST} + {1143961200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -14400 0 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Indianapolis b/library/tzdata/America/Indianapolis index 74ef61d..7398545 100644 --- a/library/tzdata/America/Indianapolis +++ b/library/tzdata/America/Indianapolis @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Indianapolis)]} { - LoadTimeZoneFile America/Indiana/Indianapolis -} -set TZData(:America/Indianapolis) $TZData(:America/Indiana/Indianapolis) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Indianapolis)]} { + LoadTimeZoneFile America/Indiana/Indianapolis +} +set TZData(:America/Indianapolis) $TZData(:America/Indiana/Indianapolis) diff --git a/library/tzdata/America/Inuvik b/library/tzdata/America/Inuvik index f24a10a..dd0d151 100644 --- a/library/tzdata/America/Inuvik +++ b/library/tzdata/America/Inuvik @@ -1,249 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Inuvik) { - {-9223372036854775808 0 0 zzz} - {-536457600 -28800 0 PST} - {-147888000 -21600 1 PDDT} - {-131558400 -28800 0 PST} - {315558000 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Inuvik) { + {-9223372036854775808 0 0 zzz} + {-536457600 -28800 0 PST} + {-147888000 -21600 1 PDDT} + {-131558400 -28800 0 PST} + {315558000 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Iqaluit b/library/tzdata/America/Iqaluit index 64a53cb..2a2e9fe 100644 --- a/library/tzdata/America/Iqaluit +++ b/library/tzdata/America/Iqaluit @@ -1,250 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Iqaluit) { - {-9223372036854775808 0 0 zzz} - {-865296000 -14400 0 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-147898800 -10800 1 EDDT} - {-131569200 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Iqaluit) { + {-9223372036854775808 0 0 zzz} + {-865296000 -14400 0 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-147898800 -10800 1 EDDT} + {-131569200 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Jamaica b/library/tzdata/America/Jamaica index 3625c4a..393d90a8 100644 --- a/library/tzdata/America/Jamaica +++ b/library/tzdata/America/Jamaica @@ -1,28 +1,28 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Jamaica) { - {-9223372036854775808 -18432 0 LMT} - {-2524503168 -18432 0 KMT} - {-1827687168 -18000 0 EST} - {136364400 -14400 0 EDT} - {152085600 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {441781200 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Jamaica) { + {-9223372036854775808 -18432 0 LMT} + {-2524503168 -18432 0 KMT} + {-1827687168 -18000 0 EST} + {136364400 -14400 0 EDT} + {152085600 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {441781200 -18000 0 EST} +} diff --git a/library/tzdata/America/Jujuy b/library/tzdata/America/Jujuy index 737dc37..b4c5da3 100644 --- a/library/tzdata/America/Jujuy +++ b/library/tzdata/America/Jujuy @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Jujuy)]} { - LoadTimeZoneFile America/Argentina/Jujuy -} -set TZData(:America/Jujuy) $TZData(:America/Argentina/Jujuy) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Jujuy)]} { + LoadTimeZoneFile America/Argentina/Jujuy +} +set TZData(:America/Jujuy) $TZData(:America/Argentina/Jujuy) diff --git a/library/tzdata/America/Juneau b/library/tzdata/America/Juneau index b8e88ca..88fe0ce 100644 --- a/library/tzdata/America/Juneau +++ b/library/tzdata/America/Juneau @@ -1,275 +1,275 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Juneau) { - {-9223372036854775808 54139 0 LMT} - {-3225366139 -32261 0 LMT} - {-2188954939 -28800 0 PST} - {-883584000 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-757353600 -28800 0 PST} - {-31507200 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {89197200 -28800 0 PST} - {104925600 -25200 1 PDT} - {120646800 -28800 0 PST} - {126698400 -25200 1 PDT} - {152096400 -28800 0 PST} - {162381600 -25200 1 PDT} - {183546000 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {439030800 -32400 0 AKST} - {452084400 -28800 1 AKDT} - {467805600 -32400 0 AKST} - {483534000 -28800 1 AKDT} - {499255200 -32400 0 AKST} - {514983600 -28800 1 AKDT} - {530704800 -32400 0 AKST} - {544618800 -28800 1 AKDT} - {562154400 -32400 0 AKST} - {576068400 -28800 1 AKDT} - {594208800 -32400 0 AKST} - {607518000 -28800 1 AKDT} - {625658400 -32400 0 AKST} - {638967600 -28800 1 AKDT} - {657108000 -32400 0 AKST} - {671022000 -28800 1 AKDT} - {688557600 -32400 0 AKST} - {702471600 -28800 1 AKDT} - {720007200 -32400 0 AKST} - {733921200 -28800 1 AKDT} - {752061600 -32400 0 AKST} - {765370800 -28800 1 AKDT} - {783511200 -32400 0 AKST} - {796820400 -28800 1 AKDT} - {814960800 -32400 0 AKST} - {828874800 -28800 1 AKDT} - {846410400 -32400 0 AKST} - {860324400 -28800 1 AKDT} - {877860000 -32400 0 AKST} - {891774000 -28800 1 AKDT} - {909309600 -32400 0 AKST} - {923223600 -28800 1 AKDT} - {941364000 -32400 0 AKST} - {954673200 -28800 1 AKDT} - {972813600 -32400 0 AKST} - {986122800 -28800 1 AKDT} - {1004263200 -32400 0 AKST} - {1018177200 -28800 1 AKDT} - {1035712800 -32400 0 AKST} - {1049626800 -28800 1 AKDT} - {1067162400 -32400 0 AKST} - {1081076400 -28800 1 AKDT} - {1099216800 -32400 0 AKST} - {1112526000 -28800 1 AKDT} - {1130666400 -32400 0 AKST} - {1143975600 -28800 1 AKDT} - {1162116000 -32400 0 AKST} - {1173610800 -28800 1 AKDT} - {1194170400 -32400 0 AKST} - {1205060400 -28800 1 AKDT} - {1225620000 -32400 0 AKST} - {1236510000 -28800 1 AKDT} - {1257069600 -32400 0 AKST} - {1268564400 -28800 1 AKDT} - {1289124000 -32400 0 AKST} - {1300014000 -28800 1 AKDT} - {1320573600 -32400 0 AKST} - {1331463600 -28800 1 AKDT} - {1352023200 -32400 0 AKST} - {1362913200 -28800 1 AKDT} - {1383472800 -32400 0 AKST} - {1394362800 -28800 1 AKDT} - {1414922400 -32400 0 AKST} - {1425812400 -28800 1 AKDT} - {1446372000 -32400 0 AKST} - {1457866800 -28800 1 AKDT} - {1478426400 -32400 0 AKST} - {1489316400 -28800 1 AKDT} - {1509876000 -32400 0 AKST} - {1520766000 -28800 1 AKDT} - {1541325600 -32400 0 AKST} - {1552215600 -28800 1 AKDT} - {1572775200 -32400 0 AKST} - {1583665200 -28800 1 AKDT} - {1604224800 -32400 0 AKST} - {1615719600 -28800 1 AKDT} - {1636279200 -32400 0 AKST} - {1647169200 -28800 1 AKDT} - {1667728800 -32400 0 AKST} - {1678618800 -28800 1 AKDT} - {1699178400 -32400 0 AKST} - {1710068400 -28800 1 AKDT} - {1730628000 -32400 0 AKST} - {1741518000 -28800 1 AKDT} - {1762077600 -32400 0 AKST} - {1772967600 -28800 1 AKDT} - {1793527200 -32400 0 AKST} - {1805022000 -28800 1 AKDT} - {1825581600 -32400 0 AKST} - {1836471600 -28800 1 AKDT} - {1857031200 -32400 0 AKST} - {1867921200 -28800 1 AKDT} - {1888480800 -32400 0 AKST} - {1899370800 -28800 1 AKDT} - {1919930400 -32400 0 AKST} - {1930820400 -28800 1 AKDT} - {1951380000 -32400 0 AKST} - {1962874800 -28800 1 AKDT} - {1983434400 -32400 0 AKST} - {1994324400 -28800 1 AKDT} - {2014884000 -32400 0 AKST} - {2025774000 -28800 1 AKDT} - {2046333600 -32400 0 AKST} - {2057223600 -28800 1 AKDT} - {2077783200 -32400 0 AKST} - {2088673200 -28800 1 AKDT} - {2109232800 -32400 0 AKST} - {2120122800 -28800 1 AKDT} - {2140682400 -32400 0 AKST} - {2152177200 -28800 1 AKDT} - {2172736800 -32400 0 AKST} - {2183626800 -28800 1 AKDT} - {2204186400 -32400 0 AKST} - {2215076400 -28800 1 AKDT} - {2235636000 -32400 0 AKST} - {2246526000 -28800 1 AKDT} - {2267085600 -32400 0 AKST} - {2277975600 -28800 1 AKDT} - {2298535200 -32400 0 AKST} - {2309425200 -28800 1 AKDT} - {2329984800 -32400 0 AKST} - {2341479600 -28800 1 AKDT} - {2362039200 -32400 0 AKST} - {2372929200 -28800 1 AKDT} - {2393488800 -32400 0 AKST} - {2404378800 -28800 1 AKDT} - {2424938400 -32400 0 AKST} - {2435828400 -28800 1 AKDT} - {2456388000 -32400 0 AKST} - {2467278000 -28800 1 AKDT} - {2487837600 -32400 0 AKST} - {2499332400 -28800 1 AKDT} - {2519892000 -32400 0 AKST} - {2530782000 -28800 1 AKDT} - {2551341600 -32400 0 AKST} - {2562231600 -28800 1 AKDT} - {2582791200 -32400 0 AKST} - {2593681200 -28800 1 AKDT} - {2614240800 -32400 0 AKST} - {2625130800 -28800 1 AKDT} - {2645690400 -32400 0 AKST} - {2656580400 -28800 1 AKDT} - {2677140000 -32400 0 AKST} - {2688634800 -28800 1 AKDT} - {2709194400 -32400 0 AKST} - {2720084400 -28800 1 AKDT} - {2740644000 -32400 0 AKST} - {2751534000 -28800 1 AKDT} - {2772093600 -32400 0 AKST} - {2782983600 -28800 1 AKDT} - {2803543200 -32400 0 AKST} - {2814433200 -28800 1 AKDT} - {2834992800 -32400 0 AKST} - {2846487600 -28800 1 AKDT} - {2867047200 -32400 0 AKST} - {2877937200 -28800 1 AKDT} - {2898496800 -32400 0 AKST} - {2909386800 -28800 1 AKDT} - {2929946400 -32400 0 AKST} - {2940836400 -28800 1 AKDT} - {2961396000 -32400 0 AKST} - {2972286000 -28800 1 AKDT} - {2992845600 -32400 0 AKST} - {3003735600 -28800 1 AKDT} - {3024295200 -32400 0 AKST} - {3035790000 -28800 1 AKDT} - {3056349600 -32400 0 AKST} - {3067239600 -28800 1 AKDT} - {3087799200 -32400 0 AKST} - {3098689200 -28800 1 AKDT} - {3119248800 -32400 0 AKST} - {3130138800 -28800 1 AKDT} - {3150698400 -32400 0 AKST} - {3161588400 -28800 1 AKDT} - {3182148000 -32400 0 AKST} - {3193038000 -28800 1 AKDT} - {3213597600 -32400 0 AKST} - {3225092400 -28800 1 AKDT} - {3245652000 -32400 0 AKST} - {3256542000 -28800 1 AKDT} - {3277101600 -32400 0 AKST} - {3287991600 -28800 1 AKDT} - {3308551200 -32400 0 AKST} - {3319441200 -28800 1 AKDT} - {3340000800 -32400 0 AKST} - {3350890800 -28800 1 AKDT} - {3371450400 -32400 0 AKST} - {3382945200 -28800 1 AKDT} - {3403504800 -32400 0 AKST} - {3414394800 -28800 1 AKDT} - {3434954400 -32400 0 AKST} - {3445844400 -28800 1 AKDT} - {3466404000 -32400 0 AKST} - {3477294000 -28800 1 AKDT} - {3497853600 -32400 0 AKST} - {3508743600 -28800 1 AKDT} - {3529303200 -32400 0 AKST} - {3540193200 -28800 1 AKDT} - {3560752800 -32400 0 AKST} - {3572247600 -28800 1 AKDT} - {3592807200 -32400 0 AKST} - {3603697200 -28800 1 AKDT} - {3624256800 -32400 0 AKST} - {3635146800 -28800 1 AKDT} - {3655706400 -32400 0 AKST} - {3666596400 -28800 1 AKDT} - {3687156000 -32400 0 AKST} - {3698046000 -28800 1 AKDT} - {3718605600 -32400 0 AKST} - {3730100400 -28800 1 AKDT} - {3750660000 -32400 0 AKST} - {3761550000 -28800 1 AKDT} - {3782109600 -32400 0 AKST} - {3792999600 -28800 1 AKDT} - {3813559200 -32400 0 AKST} - {3824449200 -28800 1 AKDT} - {3845008800 -32400 0 AKST} - {3855898800 -28800 1 AKDT} - {3876458400 -32400 0 AKST} - {3887348400 -28800 1 AKDT} - {3907908000 -32400 0 AKST} - {3919402800 -28800 1 AKDT} - {3939962400 -32400 0 AKST} - {3950852400 -28800 1 AKDT} - {3971412000 -32400 0 AKST} - {3982302000 -28800 1 AKDT} - {4002861600 -32400 0 AKST} - {4013751600 -28800 1 AKDT} - {4034311200 -32400 0 AKST} - {4045201200 -28800 1 AKDT} - {4065760800 -32400 0 AKST} - {4076650800 -28800 1 AKDT} - {4097210400 -32400 0 AKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Juneau) { + {-9223372036854775808 54139 0 LMT} + {-3225366139 -32261 0 LMT} + {-2188954939 -28800 0 PST} + {-883584000 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-757353600 -28800 0 PST} + {-31507200 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {126698400 -25200 1 PDT} + {152096400 -28800 0 PST} + {162381600 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {439030800 -32400 0 AKST} + {452084400 -28800 1 AKDT} + {467805600 -32400 0 AKST} + {483534000 -28800 1 AKDT} + {499255200 -32400 0 AKST} + {514983600 -28800 1 AKDT} + {530704800 -32400 0 AKST} + {544618800 -28800 1 AKDT} + {562154400 -32400 0 AKST} + {576068400 -28800 1 AKDT} + {594208800 -32400 0 AKST} + {607518000 -28800 1 AKDT} + {625658400 -32400 0 AKST} + {638967600 -28800 1 AKDT} + {657108000 -32400 0 AKST} + {671022000 -28800 1 AKDT} + {688557600 -32400 0 AKST} + {702471600 -28800 1 AKDT} + {720007200 -32400 0 AKST} + {733921200 -28800 1 AKDT} + {752061600 -32400 0 AKST} + {765370800 -28800 1 AKDT} + {783511200 -32400 0 AKST} + {796820400 -28800 1 AKDT} + {814960800 -32400 0 AKST} + {828874800 -28800 1 AKDT} + {846410400 -32400 0 AKST} + {860324400 -28800 1 AKDT} + {877860000 -32400 0 AKST} + {891774000 -28800 1 AKDT} + {909309600 -32400 0 AKST} + {923223600 -28800 1 AKDT} + {941364000 -32400 0 AKST} + {954673200 -28800 1 AKDT} + {972813600 -32400 0 AKST} + {986122800 -28800 1 AKDT} + {1004263200 -32400 0 AKST} + {1018177200 -28800 1 AKDT} + {1035712800 -32400 0 AKST} + {1049626800 -28800 1 AKDT} + {1067162400 -32400 0 AKST} + {1081076400 -28800 1 AKDT} + {1099216800 -32400 0 AKST} + {1112526000 -28800 1 AKDT} + {1130666400 -32400 0 AKST} + {1143975600 -28800 1 AKDT} + {1162116000 -32400 0 AKST} + {1173610800 -28800 1 AKDT} + {1194170400 -32400 0 AKST} + {1205060400 -28800 1 AKDT} + {1225620000 -32400 0 AKST} + {1236510000 -28800 1 AKDT} + {1257069600 -32400 0 AKST} + {1268564400 -28800 1 AKDT} + {1289124000 -32400 0 AKST} + {1300014000 -28800 1 AKDT} + {1320573600 -32400 0 AKST} + {1331463600 -28800 1 AKDT} + {1352023200 -32400 0 AKST} + {1362913200 -28800 1 AKDT} + {1383472800 -32400 0 AKST} + {1394362800 -28800 1 AKDT} + {1414922400 -32400 0 AKST} + {1425812400 -28800 1 AKDT} + {1446372000 -32400 0 AKST} + {1457866800 -28800 1 AKDT} + {1478426400 -32400 0 AKST} + {1489316400 -28800 1 AKDT} + {1509876000 -32400 0 AKST} + {1520766000 -28800 1 AKDT} + {1541325600 -32400 0 AKST} + {1552215600 -28800 1 AKDT} + {1572775200 -32400 0 AKST} + {1583665200 -28800 1 AKDT} + {1604224800 -32400 0 AKST} + {1615719600 -28800 1 AKDT} + {1636279200 -32400 0 AKST} + {1647169200 -28800 1 AKDT} + {1667728800 -32400 0 AKST} + {1678618800 -28800 1 AKDT} + {1699178400 -32400 0 AKST} + {1710068400 -28800 1 AKDT} + {1730628000 -32400 0 AKST} + {1741518000 -28800 1 AKDT} + {1762077600 -32400 0 AKST} + {1772967600 -28800 1 AKDT} + {1793527200 -32400 0 AKST} + {1805022000 -28800 1 AKDT} + {1825581600 -32400 0 AKST} + {1836471600 -28800 1 AKDT} + {1857031200 -32400 0 AKST} + {1867921200 -28800 1 AKDT} + {1888480800 -32400 0 AKST} + {1899370800 -28800 1 AKDT} + {1919930400 -32400 0 AKST} + {1930820400 -28800 1 AKDT} + {1951380000 -32400 0 AKST} + {1962874800 -28800 1 AKDT} + {1983434400 -32400 0 AKST} + {1994324400 -28800 1 AKDT} + {2014884000 -32400 0 AKST} + {2025774000 -28800 1 AKDT} + {2046333600 -32400 0 AKST} + {2057223600 -28800 1 AKDT} + {2077783200 -32400 0 AKST} + {2088673200 -28800 1 AKDT} + {2109232800 -32400 0 AKST} + {2120122800 -28800 1 AKDT} + {2140682400 -32400 0 AKST} + {2152177200 -28800 1 AKDT} + {2172736800 -32400 0 AKST} + {2183626800 -28800 1 AKDT} + {2204186400 -32400 0 AKST} + {2215076400 -28800 1 AKDT} + {2235636000 -32400 0 AKST} + {2246526000 -28800 1 AKDT} + {2267085600 -32400 0 AKST} + {2277975600 -28800 1 AKDT} + {2298535200 -32400 0 AKST} + {2309425200 -28800 1 AKDT} + {2329984800 -32400 0 AKST} + {2341479600 -28800 1 AKDT} + {2362039200 -32400 0 AKST} + {2372929200 -28800 1 AKDT} + {2393488800 -32400 0 AKST} + {2404378800 -28800 1 AKDT} + {2424938400 -32400 0 AKST} + {2435828400 -28800 1 AKDT} + {2456388000 -32400 0 AKST} + {2467278000 -28800 1 AKDT} + {2487837600 -32400 0 AKST} + {2499332400 -28800 1 AKDT} + {2519892000 -32400 0 AKST} + {2530782000 -28800 1 AKDT} + {2551341600 -32400 0 AKST} + {2562231600 -28800 1 AKDT} + {2582791200 -32400 0 AKST} + {2593681200 -28800 1 AKDT} + {2614240800 -32400 0 AKST} + {2625130800 -28800 1 AKDT} + {2645690400 -32400 0 AKST} + {2656580400 -28800 1 AKDT} + {2677140000 -32400 0 AKST} + {2688634800 -28800 1 AKDT} + {2709194400 -32400 0 AKST} + {2720084400 -28800 1 AKDT} + {2740644000 -32400 0 AKST} + {2751534000 -28800 1 AKDT} + {2772093600 -32400 0 AKST} + {2782983600 -28800 1 AKDT} + {2803543200 -32400 0 AKST} + {2814433200 -28800 1 AKDT} + {2834992800 -32400 0 AKST} + {2846487600 -28800 1 AKDT} + {2867047200 -32400 0 AKST} + {2877937200 -28800 1 AKDT} + {2898496800 -32400 0 AKST} + {2909386800 -28800 1 AKDT} + {2929946400 -32400 0 AKST} + {2940836400 -28800 1 AKDT} + {2961396000 -32400 0 AKST} + {2972286000 -28800 1 AKDT} + {2992845600 -32400 0 AKST} + {3003735600 -28800 1 AKDT} + {3024295200 -32400 0 AKST} + {3035790000 -28800 1 AKDT} + {3056349600 -32400 0 AKST} + {3067239600 -28800 1 AKDT} + {3087799200 -32400 0 AKST} + {3098689200 -28800 1 AKDT} + {3119248800 -32400 0 AKST} + {3130138800 -28800 1 AKDT} + {3150698400 -32400 0 AKST} + {3161588400 -28800 1 AKDT} + {3182148000 -32400 0 AKST} + {3193038000 -28800 1 AKDT} + {3213597600 -32400 0 AKST} + {3225092400 -28800 1 AKDT} + {3245652000 -32400 0 AKST} + {3256542000 -28800 1 AKDT} + {3277101600 -32400 0 AKST} + {3287991600 -28800 1 AKDT} + {3308551200 -32400 0 AKST} + {3319441200 -28800 1 AKDT} + {3340000800 -32400 0 AKST} + {3350890800 -28800 1 AKDT} + {3371450400 -32400 0 AKST} + {3382945200 -28800 1 AKDT} + {3403504800 -32400 0 AKST} + {3414394800 -28800 1 AKDT} + {3434954400 -32400 0 AKST} + {3445844400 -28800 1 AKDT} + {3466404000 -32400 0 AKST} + {3477294000 -28800 1 AKDT} + {3497853600 -32400 0 AKST} + {3508743600 -28800 1 AKDT} + {3529303200 -32400 0 AKST} + {3540193200 -28800 1 AKDT} + {3560752800 -32400 0 AKST} + {3572247600 -28800 1 AKDT} + {3592807200 -32400 0 AKST} + {3603697200 -28800 1 AKDT} + {3624256800 -32400 0 AKST} + {3635146800 -28800 1 AKDT} + {3655706400 -32400 0 AKST} + {3666596400 -28800 1 AKDT} + {3687156000 -32400 0 AKST} + {3698046000 -28800 1 AKDT} + {3718605600 -32400 0 AKST} + {3730100400 -28800 1 AKDT} + {3750660000 -32400 0 AKST} + {3761550000 -28800 1 AKDT} + {3782109600 -32400 0 AKST} + {3792999600 -28800 1 AKDT} + {3813559200 -32400 0 AKST} + {3824449200 -28800 1 AKDT} + {3845008800 -32400 0 AKST} + {3855898800 -28800 1 AKDT} + {3876458400 -32400 0 AKST} + {3887348400 -28800 1 AKDT} + {3907908000 -32400 0 AKST} + {3919402800 -28800 1 AKDT} + {3939962400 -32400 0 AKST} + {3950852400 -28800 1 AKDT} + {3971412000 -32400 0 AKST} + {3982302000 -28800 1 AKDT} + {4002861600 -32400 0 AKST} + {4013751600 -28800 1 AKDT} + {4034311200 -32400 0 AKST} + {4045201200 -28800 1 AKDT} + {4065760800 -32400 0 AKST} + {4076650800 -28800 1 AKDT} + {4097210400 -32400 0 AKST} +} diff --git a/library/tzdata/America/Kentucky/Louisville b/library/tzdata/America/Kentucky/Louisville index 5b18b03..c2aa10c 100644 --- a/library/tzdata/America/Kentucky/Louisville +++ b/library/tzdata/America/Kentucky/Louisville @@ -1,314 +1,314 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Kentucky/Louisville) { - {-9223372036854775808 -20582 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-1546279200 -21600 0 CST} - {-1535904000 -18000 1 CDT} - {-1525280400 -21600 0 CST} - {-905097600 -18000 1 CDT} - {-891795600 -21600 0 CST} - {-883591200 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-744224400 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-684349200 -18000 1 CDT} - {-652899600 -18000 1 CDT} - {-620845200 -18000 1 CDT} - {-608144400 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-415818000 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-384368400 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-352918800 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-321469200 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-289414800 -21600 0 CST} - {-273686400 -18000 1 CDT} - {-266432400 -18000 0 EST} - {-63140400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -18000 1 CDT} - {152089200 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Kentucky/Louisville) { + {-9223372036854775808 -20582 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-1546279200 -21600 0 CST} + {-1535904000 -18000 1 CDT} + {-1525280400 -21600 0 CST} + {-905097600 -18000 1 CDT} + {-891795600 -21600 0 CST} + {-883591200 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-744224400 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-684349200 -18000 1 CDT} + {-652899600 -18000 1 CDT} + {-620845200 -18000 1 CDT} + {-608144400 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-415818000 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-384368400 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-352918800 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-321469200 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-289414800 -21600 0 CST} + {-273686400 -18000 1 CDT} + {-266432400 -18000 0 EST} + {-63140400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -18000 1 CDT} + {152089200 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Kentucky/Monticello b/library/tzdata/America/Kentucky/Monticello index 84ae4b5..e523ecb 100644 --- a/library/tzdata/America/Kentucky/Monticello +++ b/library/tzdata/America/Kentucky/Monticello @@ -1,279 +1,279 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Kentucky/Monticello) { - {-9223372036854775808 -20364 0 LMT} - {-2717647200 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-63136800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Kentucky/Monticello) { + {-9223372036854775808 -20364 0 LMT} + {-2717647200 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-63136800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Knox_IN b/library/tzdata/America/Knox_IN index e0a5cef..00d21c0 100644 --- a/library/tzdata/America/Knox_IN +++ b/library/tzdata/America/Knox_IN @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Knox)]} { - LoadTimeZoneFile America/Indiana/Knox -} -set TZData(:America/Knox_IN) $TZData(:America/Indiana/Knox) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Knox)]} { + LoadTimeZoneFile America/Indiana/Knox +} +set TZData(:America/Knox_IN) $TZData(:America/Indiana/Knox) diff --git a/library/tzdata/America/La_Paz b/library/tzdata/America/La_Paz index 6480cfa..38ffbb0 100644 --- a/library/tzdata/America/La_Paz +++ b/library/tzdata/America/La_Paz @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/La_Paz) { - {-9223372036854775808 -16356 0 LMT} - {-2524505244 -16356 0 CMT} - {-1205954844 -12756 1 BOST} - {-1192307244 -14400 0 BOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/La_Paz) { + {-9223372036854775808 -16356 0 LMT} + {-2524505244 -16356 0 CMT} + {-1205954844 -12756 1 BOST} + {-1192307244 -14400 0 BOT} +} diff --git a/library/tzdata/America/Lima b/library/tzdata/America/Lima index 3e5dcf8..c6e6ac1 100644 --- a/library/tzdata/America/Lima +++ b/library/tzdata/America/Lima @@ -1,16 +1,16 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Lima) { - {-9223372036854775808 -18492 0 LMT} - {-2524503108 -18516 0 LMT} - {-1938538284 -14400 0 PEST} - {-1002052800 -18000 0 PET} - {-986756400 -14400 1 PEST} - {-971035200 -18000 0 PET} - {-955306800 -14400 1 PEST} - {-939585600 -18000 0 PET} - {512712000 -18000 0 PET} - {544248000 -18000 0 PET} - {638942400 -18000 0 PET} - {765172800 -18000 0 PET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Lima) { + {-9223372036854775808 -18492 0 LMT} + {-2524503108 -18516 0 LMT} + {-1938538284 -14400 0 PEST} + {-1002052800 -18000 0 PET} + {-986756400 -14400 1 PEST} + {-971035200 -18000 0 PET} + {-955306800 -14400 1 PEST} + {-939585600 -18000 0 PET} + {512712000 -18000 0 PET} + {544248000 -18000 0 PET} + {638942400 -18000 0 PET} + {765172800 -18000 0 PET} +} diff --git a/library/tzdata/America/Los_Angeles b/library/tzdata/America/Los_Angeles index d8dab61..da6ca99 100644 --- a/library/tzdata/America/Los_Angeles +++ b/library/tzdata/America/Los_Angeles @@ -1,317 +1,317 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Los_Angeles) { - {-9223372036854775808 -28378 0 LMT} - {-2717640000 -28800 0 PST} - {-1633269600 -25200 1 PDT} - {-1615129200 -28800 0 PST} - {-1601820000 -25200 1 PDT} - {-1583679600 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-757353600 -28800 0 PST} - {-687967200 -25200 1 PDT} - {-662655600 -28800 0 PST} - {-620834400 -25200 1 PDT} - {-608137200 -28800 0 PST} - {-589384800 -25200 1 PDT} - {-576082800 -28800 0 PST} - {-557935200 -25200 1 PDT} - {-544633200 -28800 0 PST} - {-526485600 -25200 1 PDT} - {-513183600 -28800 0 PST} - {-495036000 -25200 1 PDT} - {-481734000 -28800 0 PST} - {-463586400 -25200 1 PDT} - {-450284400 -28800 0 PST} - {-431532000 -25200 1 PDT} - {-418230000 -28800 0 PST} - {-400082400 -25200 1 PDT} - {-386780400 -28800 0 PST} - {-368632800 -25200 1 PDT} - {-355330800 -28800 0 PST} - {-337183200 -25200 1 PDT} - {-323881200 -28800 0 PST} - {-305733600 -25200 1 PDT} - {-292431600 -28800 0 PST} - {-273679200 -25200 1 PDT} - {-260982000 -28800 0 PST} - {-242229600 -25200 1 PDT} - {-226508400 -28800 0 PST} - {-210780000 -25200 1 PDT} - {-195058800 -28800 0 PST} - {-179330400 -25200 1 PDT} - {-163609200 -28800 0 PST} - {-147880800 -25200 1 PDT} - {-131554800 -28800 0 PST} - {-116431200 -25200 1 PDT} - {-100105200 -28800 0 PST} - {-94665600 -28800 0 PST} - {-84376800 -25200 1 PDT} - {-68655600 -28800 0 PST} - {-52927200 -25200 1 PDT} - {-37206000 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {89197200 -28800 0 PST} - {104925600 -25200 1 PDT} - {120646800 -28800 0 PST} - {126698400 -25200 1 PDT} - {152096400 -28800 0 PST} - {162381600 -25200 1 PDT} - {183546000 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Los_Angeles) { + {-9223372036854775808 -28378 0 LMT} + {-2717640000 -28800 0 PST} + {-1633269600 -25200 1 PDT} + {-1615129200 -28800 0 PST} + {-1601820000 -25200 1 PDT} + {-1583679600 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-757353600 -28800 0 PST} + {-687967200 -25200 1 PDT} + {-662655600 -28800 0 PST} + {-620834400 -25200 1 PDT} + {-608137200 -28800 0 PST} + {-589384800 -25200 1 PDT} + {-576082800 -28800 0 PST} + {-557935200 -25200 1 PDT} + {-544633200 -28800 0 PST} + {-526485600 -25200 1 PDT} + {-513183600 -28800 0 PST} + {-495036000 -25200 1 PDT} + {-481734000 -28800 0 PST} + {-463586400 -25200 1 PDT} + {-450284400 -28800 0 PST} + {-431532000 -25200 1 PDT} + {-418230000 -28800 0 PST} + {-400082400 -25200 1 PDT} + {-386780400 -28800 0 PST} + {-368632800 -25200 1 PDT} + {-355330800 -28800 0 PST} + {-337183200 -25200 1 PDT} + {-323881200 -28800 0 PST} + {-305733600 -25200 1 PDT} + {-292431600 -28800 0 PST} + {-273679200 -25200 1 PDT} + {-260982000 -28800 0 PST} + {-242229600 -25200 1 PDT} + {-226508400 -28800 0 PST} + {-210780000 -25200 1 PDT} + {-195058800 -28800 0 PST} + {-179330400 -25200 1 PDT} + {-163609200 -28800 0 PST} + {-147880800 -25200 1 PDT} + {-131554800 -28800 0 PST} + {-116431200 -25200 1 PDT} + {-100105200 -28800 0 PST} + {-94665600 -28800 0 PST} + {-84376800 -25200 1 PDT} + {-68655600 -28800 0 PST} + {-52927200 -25200 1 PDT} + {-37206000 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {126698400 -25200 1 PDT} + {152096400 -28800 0 PST} + {162381600 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/America/Louisville b/library/tzdata/America/Louisville index 8b3171f..c5a3e1c 100644 --- a/library/tzdata/America/Louisville +++ b/library/tzdata/America/Louisville @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Kentucky/Louisville)]} { - LoadTimeZoneFile America/Kentucky/Louisville -} -set TZData(:America/Louisville) $TZData(:America/Kentucky/Louisville) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Kentucky/Louisville)]} { + LoadTimeZoneFile America/Kentucky/Louisville +} +set TZData(:America/Louisville) $TZData(:America/Kentucky/Louisville) diff --git a/library/tzdata/America/Maceio b/library/tzdata/America/Maceio index 93b9fc9..333b878 100644 --- a/library/tzdata/America/Maceio +++ b/library/tzdata/America/Maceio @@ -1,52 +1,52 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Maceio) { - {-9223372036854775808 -8572 0 LMT} - {-1767217028 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {653536800 -10800 0 BRT} - {813553200 -10800 0 BRT} - {813726000 -7200 1 BRST} - {824004000 -10800 0 BRT} - {841802400 -10800 0 BRT} - {938660400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {972180000 -10800 0 BRT} - {1000350000 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1033437600 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Maceio) { + {-9223372036854775808 -8572 0 LMT} + {-1767217028 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {653536800 -10800 0 BRT} + {813553200 -10800 0 BRT} + {813726000 -7200 1 BRST} + {824004000 -10800 0 BRT} + {841802400 -10800 0 BRT} + {938660400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {972180000 -10800 0 BRT} + {1000350000 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1033437600 -10800 0 BRT} +} diff --git a/library/tzdata/America/Managua b/library/tzdata/America/Managua index a1ceee8..f729b8a 100644 --- a/library/tzdata/America/Managua +++ b/library/tzdata/America/Managua @@ -1,21 +1,21 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Managua) { - {-9223372036854775808 -20708 0 LMT} - {-2524500892 -20712 0 MMT} - {-1121105688 -21600 0 CST} - {105084000 -18000 0 EST} - {161758800 -21600 0 CST} - {290584800 -18000 1 CDT} - {299134800 -21600 0 CST} - {322034400 -18000 1 CDT} - {330584400 -21600 0 CST} - {694260000 -18000 0 EST} - {717310800 -21600 0 CST} - {725868000 -18000 0 EST} - {852094800 -21600 0 CST} - {1113112800 -18000 1 CDT} - {1128229200 -21600 0 CST} - {1146384000 -18000 1 CDT} - {1159682400 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Managua) { + {-9223372036854775808 -20708 0 LMT} + {-2524500892 -20712 0 MMT} + {-1121105688 -21600 0 CST} + {105084000 -18000 0 EST} + {161758800 -21600 0 CST} + {290584800 -18000 1 CDT} + {299134800 -21600 0 CST} + {322034400 -18000 1 CDT} + {330584400 -21600 0 CST} + {694260000 -18000 0 EST} + {717310800 -21600 0 CST} + {725868000 -18000 0 EST} + {852094800 -21600 0 CST} + {1113112800 -18000 1 CDT} + {1128229200 -21600 0 CST} + {1146384000 -18000 1 CDT} + {1159682400 -21600 0 CST} +} diff --git a/library/tzdata/America/Manaus b/library/tzdata/America/Manaus index 9377e7f..058e0f7 100644 --- a/library/tzdata/America/Manaus +++ b/library/tzdata/America/Manaus @@ -1,39 +1,39 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Manaus) { - {-9223372036854775808 -14404 0 LMT} - {-1767211196 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {590036400 -14400 0 AMT} - {749188800 -14400 0 AMT} - {750830400 -10800 1 AMST} - {761713200 -14400 0 AMT} - {780202800 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Manaus) { + {-9223372036854775808 -14404 0 LMT} + {-1767211196 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {590036400 -14400 0 AMT} + {749188800 -14400 0 AMT} + {750830400 -10800 1 AMST} + {761713200 -14400 0 AMT} + {780202800 -14400 0 AMT} +} diff --git a/library/tzdata/America/Marigot b/library/tzdata/America/Marigot index cf7949f..9f3f8f6 100644 --- a/library/tzdata/America/Marigot +++ b/library/tzdata/America/Marigot @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Guadeloupe)]} { - LoadTimeZoneFile America/Guadeloupe -} -set TZData(:America/Marigot) $TZData(:America/Guadeloupe) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Guadeloupe)]} { + LoadTimeZoneFile America/Guadeloupe +} +set TZData(:America/Marigot) $TZData(:America/Guadeloupe) diff --git a/library/tzdata/America/Martinique b/library/tzdata/America/Martinique index 7927785..1f1b491 100644 --- a/library/tzdata/America/Martinique +++ b/library/tzdata/America/Martinique @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Martinique) { - {-9223372036854775808 -14660 0 LMT} - {-2524506940 -14660 0 FFMT} - {-1851537340 -14400 0 AST} - {323841600 -10800 1 ADT} - {338958000 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Martinique) { + {-9223372036854775808 -14660 0 LMT} + {-2524506940 -14660 0 FFMT} + {-1851537340 -14400 0 AST} + {323841600 -10800 1 ADT} + {338958000 -14400 0 AST} +} diff --git a/library/tzdata/America/Mazatlan b/library/tzdata/America/Mazatlan index 051f9fe..e56d7d0 100644 --- a/library/tzdata/America/Mazatlan +++ b/library/tzdata/America/Mazatlan @@ -1,222 +1,222 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Mazatlan) { - {-9223372036854775808 -25540 0 LMT} - {-1514739600 -25200 0 MST} - {-1343066400 -21600 0 CST} - {-1234807200 -25200 0 MST} - {-1220292000 -21600 0 CST} - {-1207159200 -25200 0 MST} - {-1191344400 -21600 0 CST} - {-873828000 -25200 0 MST} - {-661539600 -28800 0 PST} - {28800 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {989139600 -21600 1 MDT} - {1001836800 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1175418000 -21600 1 MDT} - {1193558400 -25200 0 MST} - {1207472400 -21600 1 MDT} - {1225008000 -25200 0 MST} - {1238922000 -21600 1 MDT} - {1256457600 -25200 0 MST} - {1270371600 -21600 1 MDT} - {1288512000 -25200 0 MST} - {1301821200 -21600 1 MDT} - {1319961600 -25200 0 MST} - {1333270800 -21600 1 MDT} - {1351411200 -25200 0 MST} - {1365325200 -21600 1 MDT} - {1382860800 -25200 0 MST} - {1396774800 -21600 1 MDT} - {1414310400 -25200 0 MST} - {1428224400 -21600 1 MDT} - {1445760000 -25200 0 MST} - {1459674000 -21600 1 MDT} - {1477814400 -25200 0 MST} - {1491123600 -21600 1 MDT} - {1509264000 -25200 0 MST} - {1522573200 -21600 1 MDT} - {1540713600 -25200 0 MST} - {1554627600 -21600 1 MDT} - {1572163200 -25200 0 MST} - {1586077200 -21600 1 MDT} - {1603612800 -25200 0 MST} - {1617526800 -21600 1 MDT} - {1635667200 -25200 0 MST} - {1648976400 -21600 1 MDT} - {1667116800 -25200 0 MST} - {1680426000 -21600 1 MDT} - {1698566400 -25200 0 MST} - {1712480400 -21600 1 MDT} - {1730016000 -25200 0 MST} - {1743930000 -21600 1 MDT} - {1761465600 -25200 0 MST} - {1775379600 -21600 1 MDT} - {1792915200 -25200 0 MST} - {1806829200 -21600 1 MDT} - {1824969600 -25200 0 MST} - {1838278800 -21600 1 MDT} - {1856419200 -25200 0 MST} - {1869728400 -21600 1 MDT} - {1887868800 -25200 0 MST} - {1901782800 -21600 1 MDT} - {1919318400 -25200 0 MST} - {1933232400 -21600 1 MDT} - {1950768000 -25200 0 MST} - {1964682000 -21600 1 MDT} - {1982822400 -25200 0 MST} - {1996131600 -21600 1 MDT} - {2014272000 -25200 0 MST} - {2027581200 -21600 1 MDT} - {2045721600 -25200 0 MST} - {2059030800 -21600 1 MDT} - {2077171200 -25200 0 MST} - {2091085200 -21600 1 MDT} - {2108620800 -25200 0 MST} - {2122534800 -21600 1 MDT} - {2140070400 -25200 0 MST} - {2153984400 -21600 1 MDT} - {2172124800 -25200 0 MST} - {2185434000 -21600 1 MDT} - {2203574400 -25200 0 MST} - {2216883600 -21600 1 MDT} - {2235024000 -25200 0 MST} - {2248938000 -21600 1 MDT} - {2266473600 -25200 0 MST} - {2280387600 -21600 1 MDT} - {2297923200 -25200 0 MST} - {2311837200 -21600 1 MDT} - {2329372800 -25200 0 MST} - {2343286800 -21600 1 MDT} - {2361427200 -25200 0 MST} - {2374736400 -21600 1 MDT} - {2392876800 -25200 0 MST} - {2406186000 -21600 1 MDT} - {2424326400 -25200 0 MST} - {2438240400 -21600 1 MDT} - {2455776000 -25200 0 MST} - {2469690000 -21600 1 MDT} - {2487225600 -25200 0 MST} - {2501139600 -21600 1 MDT} - {2519280000 -25200 0 MST} - {2532589200 -21600 1 MDT} - {2550729600 -25200 0 MST} - {2564038800 -21600 1 MDT} - {2582179200 -25200 0 MST} - {2596093200 -21600 1 MDT} - {2613628800 -25200 0 MST} - {2627542800 -21600 1 MDT} - {2645078400 -25200 0 MST} - {2658992400 -21600 1 MDT} - {2676528000 -25200 0 MST} - {2690442000 -21600 1 MDT} - {2708582400 -25200 0 MST} - {2721891600 -21600 1 MDT} - {2740032000 -25200 0 MST} - {2753341200 -21600 1 MDT} - {2771481600 -25200 0 MST} - {2785395600 -21600 1 MDT} - {2802931200 -25200 0 MST} - {2816845200 -21600 1 MDT} - {2834380800 -25200 0 MST} - {2848294800 -21600 1 MDT} - {2866435200 -25200 0 MST} - {2879744400 -21600 1 MDT} - {2897884800 -25200 0 MST} - {2911194000 -21600 1 MDT} - {2929334400 -25200 0 MST} - {2942643600 -21600 1 MDT} - {2960784000 -25200 0 MST} - {2974698000 -21600 1 MDT} - {2992233600 -25200 0 MST} - {3006147600 -21600 1 MDT} - {3023683200 -25200 0 MST} - {3037597200 -21600 1 MDT} - {3055737600 -25200 0 MST} - {3069046800 -21600 1 MDT} - {3087187200 -25200 0 MST} - {3100496400 -21600 1 MDT} - {3118636800 -25200 0 MST} - {3132550800 -21600 1 MDT} - {3150086400 -25200 0 MST} - {3164000400 -21600 1 MDT} - {3181536000 -25200 0 MST} - {3195450000 -21600 1 MDT} - {3212985600 -25200 0 MST} - {3226899600 -21600 1 MDT} - {3245040000 -25200 0 MST} - {3258349200 -21600 1 MDT} - {3276489600 -25200 0 MST} - {3289798800 -21600 1 MDT} - {3307939200 -25200 0 MST} - {3321853200 -21600 1 MDT} - {3339388800 -25200 0 MST} - {3353302800 -21600 1 MDT} - {3370838400 -25200 0 MST} - {3384752400 -21600 1 MDT} - {3402892800 -25200 0 MST} - {3416202000 -21600 1 MDT} - {3434342400 -25200 0 MST} - {3447651600 -21600 1 MDT} - {3465792000 -25200 0 MST} - {3479706000 -21600 1 MDT} - {3497241600 -25200 0 MST} - {3511155600 -21600 1 MDT} - {3528691200 -25200 0 MST} - {3542605200 -21600 1 MDT} - {3560140800 -25200 0 MST} - {3574054800 -21600 1 MDT} - {3592195200 -25200 0 MST} - {3605504400 -21600 1 MDT} - {3623644800 -25200 0 MST} - {3636954000 -21600 1 MDT} - {3655094400 -25200 0 MST} - {3669008400 -21600 1 MDT} - {3686544000 -25200 0 MST} - {3700458000 -21600 1 MDT} - {3717993600 -25200 0 MST} - {3731907600 -21600 1 MDT} - {3750048000 -25200 0 MST} - {3763357200 -21600 1 MDT} - {3781497600 -25200 0 MST} - {3794806800 -21600 1 MDT} - {3812947200 -25200 0 MST} - {3826256400 -21600 1 MDT} - {3844396800 -25200 0 MST} - {3858310800 -21600 1 MDT} - {3875846400 -25200 0 MST} - {3889760400 -21600 1 MDT} - {3907296000 -25200 0 MST} - {3921210000 -21600 1 MDT} - {3939350400 -25200 0 MST} - {3952659600 -21600 1 MDT} - {3970800000 -25200 0 MST} - {3984109200 -21600 1 MDT} - {4002249600 -25200 0 MST} - {4016163600 -21600 1 MDT} - {4033699200 -25200 0 MST} - {4047613200 -21600 1 MDT} - {4065148800 -25200 0 MST} - {4079062800 -21600 1 MDT} - {4096598400 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Mazatlan) { + {-9223372036854775808 -25540 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {-873828000 -25200 0 MST} + {-661539600 -28800 0 PST} + {28800 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {989139600 -21600 1 MDT} + {1001836800 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1175418000 -21600 1 MDT} + {1193558400 -25200 0 MST} + {1207472400 -21600 1 MDT} + {1225008000 -25200 0 MST} + {1238922000 -21600 1 MDT} + {1256457600 -25200 0 MST} + {1270371600 -21600 1 MDT} + {1288512000 -25200 0 MST} + {1301821200 -21600 1 MDT} + {1319961600 -25200 0 MST} + {1333270800 -21600 1 MDT} + {1351411200 -25200 0 MST} + {1365325200 -21600 1 MDT} + {1382860800 -25200 0 MST} + {1396774800 -21600 1 MDT} + {1414310400 -25200 0 MST} + {1428224400 -21600 1 MDT} + {1445760000 -25200 0 MST} + {1459674000 -21600 1 MDT} + {1477814400 -25200 0 MST} + {1491123600 -21600 1 MDT} + {1509264000 -25200 0 MST} + {1522573200 -21600 1 MDT} + {1540713600 -25200 0 MST} + {1554627600 -21600 1 MDT} + {1572163200 -25200 0 MST} + {1586077200 -21600 1 MDT} + {1603612800 -25200 0 MST} + {1617526800 -21600 1 MDT} + {1635667200 -25200 0 MST} + {1648976400 -21600 1 MDT} + {1667116800 -25200 0 MST} + {1680426000 -21600 1 MDT} + {1698566400 -25200 0 MST} + {1712480400 -21600 1 MDT} + {1730016000 -25200 0 MST} + {1743930000 -21600 1 MDT} + {1761465600 -25200 0 MST} + {1775379600 -21600 1 MDT} + {1792915200 -25200 0 MST} + {1806829200 -21600 1 MDT} + {1824969600 -25200 0 MST} + {1838278800 -21600 1 MDT} + {1856419200 -25200 0 MST} + {1869728400 -21600 1 MDT} + {1887868800 -25200 0 MST} + {1901782800 -21600 1 MDT} + {1919318400 -25200 0 MST} + {1933232400 -21600 1 MDT} + {1950768000 -25200 0 MST} + {1964682000 -21600 1 MDT} + {1982822400 -25200 0 MST} + {1996131600 -21600 1 MDT} + {2014272000 -25200 0 MST} + {2027581200 -21600 1 MDT} + {2045721600 -25200 0 MST} + {2059030800 -21600 1 MDT} + {2077171200 -25200 0 MST} + {2091085200 -21600 1 MDT} + {2108620800 -25200 0 MST} + {2122534800 -21600 1 MDT} + {2140070400 -25200 0 MST} + {2153984400 -21600 1 MDT} + {2172124800 -25200 0 MST} + {2185434000 -21600 1 MDT} + {2203574400 -25200 0 MST} + {2216883600 -21600 1 MDT} + {2235024000 -25200 0 MST} + {2248938000 -21600 1 MDT} + {2266473600 -25200 0 MST} + {2280387600 -21600 1 MDT} + {2297923200 -25200 0 MST} + {2311837200 -21600 1 MDT} + {2329372800 -25200 0 MST} + {2343286800 -21600 1 MDT} + {2361427200 -25200 0 MST} + {2374736400 -21600 1 MDT} + {2392876800 -25200 0 MST} + {2406186000 -21600 1 MDT} + {2424326400 -25200 0 MST} + {2438240400 -21600 1 MDT} + {2455776000 -25200 0 MST} + {2469690000 -21600 1 MDT} + {2487225600 -25200 0 MST} + {2501139600 -21600 1 MDT} + {2519280000 -25200 0 MST} + {2532589200 -21600 1 MDT} + {2550729600 -25200 0 MST} + {2564038800 -21600 1 MDT} + {2582179200 -25200 0 MST} + {2596093200 -21600 1 MDT} + {2613628800 -25200 0 MST} + {2627542800 -21600 1 MDT} + {2645078400 -25200 0 MST} + {2658992400 -21600 1 MDT} + {2676528000 -25200 0 MST} + {2690442000 -21600 1 MDT} + {2708582400 -25200 0 MST} + {2721891600 -21600 1 MDT} + {2740032000 -25200 0 MST} + {2753341200 -21600 1 MDT} + {2771481600 -25200 0 MST} + {2785395600 -21600 1 MDT} + {2802931200 -25200 0 MST} + {2816845200 -21600 1 MDT} + {2834380800 -25200 0 MST} + {2848294800 -21600 1 MDT} + {2866435200 -25200 0 MST} + {2879744400 -21600 1 MDT} + {2897884800 -25200 0 MST} + {2911194000 -21600 1 MDT} + {2929334400 -25200 0 MST} + {2942643600 -21600 1 MDT} + {2960784000 -25200 0 MST} + {2974698000 -21600 1 MDT} + {2992233600 -25200 0 MST} + {3006147600 -21600 1 MDT} + {3023683200 -25200 0 MST} + {3037597200 -21600 1 MDT} + {3055737600 -25200 0 MST} + {3069046800 -21600 1 MDT} + {3087187200 -25200 0 MST} + {3100496400 -21600 1 MDT} + {3118636800 -25200 0 MST} + {3132550800 -21600 1 MDT} + {3150086400 -25200 0 MST} + {3164000400 -21600 1 MDT} + {3181536000 -25200 0 MST} + {3195450000 -21600 1 MDT} + {3212985600 -25200 0 MST} + {3226899600 -21600 1 MDT} + {3245040000 -25200 0 MST} + {3258349200 -21600 1 MDT} + {3276489600 -25200 0 MST} + {3289798800 -21600 1 MDT} + {3307939200 -25200 0 MST} + {3321853200 -21600 1 MDT} + {3339388800 -25200 0 MST} + {3353302800 -21600 1 MDT} + {3370838400 -25200 0 MST} + {3384752400 -21600 1 MDT} + {3402892800 -25200 0 MST} + {3416202000 -21600 1 MDT} + {3434342400 -25200 0 MST} + {3447651600 -21600 1 MDT} + {3465792000 -25200 0 MST} + {3479706000 -21600 1 MDT} + {3497241600 -25200 0 MST} + {3511155600 -21600 1 MDT} + {3528691200 -25200 0 MST} + {3542605200 -21600 1 MDT} + {3560140800 -25200 0 MST} + {3574054800 -21600 1 MDT} + {3592195200 -25200 0 MST} + {3605504400 -21600 1 MDT} + {3623644800 -25200 0 MST} + {3636954000 -21600 1 MDT} + {3655094400 -25200 0 MST} + {3669008400 -21600 1 MDT} + {3686544000 -25200 0 MST} + {3700458000 -21600 1 MDT} + {3717993600 -25200 0 MST} + {3731907600 -21600 1 MDT} + {3750048000 -25200 0 MST} + {3763357200 -21600 1 MDT} + {3781497600 -25200 0 MST} + {3794806800 -21600 1 MDT} + {3812947200 -25200 0 MST} + {3826256400 -21600 1 MDT} + {3844396800 -25200 0 MST} + {3858310800 -21600 1 MDT} + {3875846400 -25200 0 MST} + {3889760400 -21600 1 MDT} + {3907296000 -25200 0 MST} + {3921210000 -21600 1 MDT} + {3939350400 -25200 0 MST} + {3952659600 -21600 1 MDT} + {3970800000 -25200 0 MST} + {3984109200 -21600 1 MDT} + {4002249600 -25200 0 MST} + {4016163600 -21600 1 MDT} + {4033699200 -25200 0 MST} + {4047613200 -21600 1 MDT} + {4065148800 -25200 0 MST} + {4079062800 -21600 1 MDT} + {4096598400 -25200 0 MST} +} diff --git a/library/tzdata/America/Mendoza b/library/tzdata/America/Mendoza index deca4f9..511d83e 100644 --- a/library/tzdata/America/Mendoza +++ b/library/tzdata/America/Mendoza @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Mendoza)]} { - LoadTimeZoneFile America/Argentina/Mendoza -} -set TZData(:America/Mendoza) $TZData(:America/Argentina/Mendoza) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Mendoza)]} { + LoadTimeZoneFile America/Argentina/Mendoza +} +set TZData(:America/Mendoza) $TZData(:America/Argentina/Mendoza) diff --git a/library/tzdata/America/Menominee b/library/tzdata/America/Menominee index 3e296e5..382aeda 100644 --- a/library/tzdata/America/Menominee +++ b/library/tzdata/America/Menominee @@ -1,274 +1,274 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Menominee) { - {-9223372036854775808 -21027 0 LMT} - {-2659759773 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-757360800 -21600 0 CST} - {-747244800 -18000 1 CDT} - {-733942800 -21600 0 CST} - {-116438400 -18000 1 CDT} - {-100112400 -21600 0 CST} - {-21484800 -18000 0 EST} - {104914800 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Menominee) { + {-9223372036854775808 -21027 0 LMT} + {-2659759773 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-757360800 -21600 0 CST} + {-747244800 -18000 1 CDT} + {-733942800 -21600 0 CST} + {-116438400 -18000 1 CDT} + {-100112400 -21600 0 CST} + {-21484800 -18000 0 EST} + {104914800 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Merida b/library/tzdata/America/Merida index 29e0eb0..ebf5927 100644 --- a/library/tzdata/America/Merida +++ b/library/tzdata/America/Merida @@ -1,216 +1,216 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Merida) { - {-9223372036854775808 -21508 0 LMT} - {-1514743200 -21600 0 CST} - {377935200 -18000 0 EST} - {407653200 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {989136000 -18000 1 CDT} - {1001833200 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1175414400 -18000 1 CDT} - {1193554800 -21600 0 CST} - {1207468800 -18000 1 CDT} - {1225004400 -21600 0 CST} - {1238918400 -18000 1 CDT} - {1256454000 -21600 0 CST} - {1270368000 -18000 1 CDT} - {1288508400 -21600 0 CST} - {1301817600 -18000 1 CDT} - {1319958000 -21600 0 CST} - {1333267200 -18000 1 CDT} - {1351407600 -21600 0 CST} - {1365321600 -18000 1 CDT} - {1382857200 -21600 0 CST} - {1396771200 -18000 1 CDT} - {1414306800 -21600 0 CST} - {1428220800 -18000 1 CDT} - {1445756400 -21600 0 CST} - {1459670400 -18000 1 CDT} - {1477810800 -21600 0 CST} - {1491120000 -18000 1 CDT} - {1509260400 -21600 0 CST} - {1522569600 -18000 1 CDT} - {1540710000 -21600 0 CST} - {1554624000 -18000 1 CDT} - {1572159600 -21600 0 CST} - {1586073600 -18000 1 CDT} - {1603609200 -21600 0 CST} - {1617523200 -18000 1 CDT} - {1635663600 -21600 0 CST} - {1648972800 -18000 1 CDT} - {1667113200 -21600 0 CST} - {1680422400 -18000 1 CDT} - {1698562800 -21600 0 CST} - {1712476800 -18000 1 CDT} - {1730012400 -21600 0 CST} - {1743926400 -18000 1 CDT} - {1761462000 -21600 0 CST} - {1775376000 -18000 1 CDT} - {1792911600 -21600 0 CST} - {1806825600 -18000 1 CDT} - {1824966000 -21600 0 CST} - {1838275200 -18000 1 CDT} - {1856415600 -21600 0 CST} - {1869724800 -18000 1 CDT} - {1887865200 -21600 0 CST} - {1901779200 -18000 1 CDT} - {1919314800 -21600 0 CST} - {1933228800 -18000 1 CDT} - {1950764400 -21600 0 CST} - {1964678400 -18000 1 CDT} - {1982818800 -21600 0 CST} - {1996128000 -18000 1 CDT} - {2014268400 -21600 0 CST} - {2027577600 -18000 1 CDT} - {2045718000 -21600 0 CST} - {2059027200 -18000 1 CDT} - {2077167600 -21600 0 CST} - {2091081600 -18000 1 CDT} - {2108617200 -21600 0 CST} - {2122531200 -18000 1 CDT} - {2140066800 -21600 0 CST} - {2153980800 -18000 1 CDT} - {2172121200 -21600 0 CST} - {2185430400 -18000 1 CDT} - {2203570800 -21600 0 CST} - {2216880000 -18000 1 CDT} - {2235020400 -21600 0 CST} - {2248934400 -18000 1 CDT} - {2266470000 -21600 0 CST} - {2280384000 -18000 1 CDT} - {2297919600 -21600 0 CST} - {2311833600 -18000 1 CDT} - {2329369200 -21600 0 CST} - {2343283200 -18000 1 CDT} - {2361423600 -21600 0 CST} - {2374732800 -18000 1 CDT} - {2392873200 -21600 0 CST} - {2406182400 -18000 1 CDT} - {2424322800 -21600 0 CST} - {2438236800 -18000 1 CDT} - {2455772400 -21600 0 CST} - {2469686400 -18000 1 CDT} - {2487222000 -21600 0 CST} - {2501136000 -18000 1 CDT} - {2519276400 -21600 0 CST} - {2532585600 -18000 1 CDT} - {2550726000 -21600 0 CST} - {2564035200 -18000 1 CDT} - {2582175600 -21600 0 CST} - {2596089600 -18000 1 CDT} - {2613625200 -21600 0 CST} - {2627539200 -18000 1 CDT} - {2645074800 -21600 0 CST} - {2658988800 -18000 1 CDT} - {2676524400 -21600 0 CST} - {2690438400 -18000 1 CDT} - {2708578800 -21600 0 CST} - {2721888000 -18000 1 CDT} - {2740028400 -21600 0 CST} - {2753337600 -18000 1 CDT} - {2771478000 -21600 0 CST} - {2785392000 -18000 1 CDT} - {2802927600 -21600 0 CST} - {2816841600 -18000 1 CDT} - {2834377200 -21600 0 CST} - {2848291200 -18000 1 CDT} - {2866431600 -21600 0 CST} - {2879740800 -18000 1 CDT} - {2897881200 -21600 0 CST} - {2911190400 -18000 1 CDT} - {2929330800 -21600 0 CST} - {2942640000 -18000 1 CDT} - {2960780400 -21600 0 CST} - {2974694400 -18000 1 CDT} - {2992230000 -21600 0 CST} - {3006144000 -18000 1 CDT} - {3023679600 -21600 0 CST} - {3037593600 -18000 1 CDT} - {3055734000 -21600 0 CST} - {3069043200 -18000 1 CDT} - {3087183600 -21600 0 CST} - {3100492800 -18000 1 CDT} - {3118633200 -21600 0 CST} - {3132547200 -18000 1 CDT} - {3150082800 -21600 0 CST} - {3163996800 -18000 1 CDT} - {3181532400 -21600 0 CST} - {3195446400 -18000 1 CDT} - {3212982000 -21600 0 CST} - {3226896000 -18000 1 CDT} - {3245036400 -21600 0 CST} - {3258345600 -18000 1 CDT} - {3276486000 -21600 0 CST} - {3289795200 -18000 1 CDT} - {3307935600 -21600 0 CST} - {3321849600 -18000 1 CDT} - {3339385200 -21600 0 CST} - {3353299200 -18000 1 CDT} - {3370834800 -21600 0 CST} - {3384748800 -18000 1 CDT} - {3402889200 -21600 0 CST} - {3416198400 -18000 1 CDT} - {3434338800 -21600 0 CST} - {3447648000 -18000 1 CDT} - {3465788400 -21600 0 CST} - {3479702400 -18000 1 CDT} - {3497238000 -21600 0 CST} - {3511152000 -18000 1 CDT} - {3528687600 -21600 0 CST} - {3542601600 -18000 1 CDT} - {3560137200 -21600 0 CST} - {3574051200 -18000 1 CDT} - {3592191600 -21600 0 CST} - {3605500800 -18000 1 CDT} - {3623641200 -21600 0 CST} - {3636950400 -18000 1 CDT} - {3655090800 -21600 0 CST} - {3669004800 -18000 1 CDT} - {3686540400 -21600 0 CST} - {3700454400 -18000 1 CDT} - {3717990000 -21600 0 CST} - {3731904000 -18000 1 CDT} - {3750044400 -21600 0 CST} - {3763353600 -18000 1 CDT} - {3781494000 -21600 0 CST} - {3794803200 -18000 1 CDT} - {3812943600 -21600 0 CST} - {3826252800 -18000 1 CDT} - {3844393200 -21600 0 CST} - {3858307200 -18000 1 CDT} - {3875842800 -21600 0 CST} - {3889756800 -18000 1 CDT} - {3907292400 -21600 0 CST} - {3921206400 -18000 1 CDT} - {3939346800 -21600 0 CST} - {3952656000 -18000 1 CDT} - {3970796400 -21600 0 CST} - {3984105600 -18000 1 CDT} - {4002246000 -21600 0 CST} - {4016160000 -18000 1 CDT} - {4033695600 -21600 0 CST} - {4047609600 -18000 1 CDT} - {4065145200 -21600 0 CST} - {4079059200 -18000 1 CDT} - {4096594800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Merida) { + {-9223372036854775808 -21508 0 LMT} + {-1514743200 -21600 0 CST} + {377935200 -18000 0 EST} + {407653200 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {989136000 -18000 1 CDT} + {1001833200 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1175414400 -18000 1 CDT} + {1193554800 -21600 0 CST} + {1207468800 -18000 1 CDT} + {1225004400 -21600 0 CST} + {1238918400 -18000 1 CDT} + {1256454000 -21600 0 CST} + {1270368000 -18000 1 CDT} + {1288508400 -21600 0 CST} + {1301817600 -18000 1 CDT} + {1319958000 -21600 0 CST} + {1333267200 -18000 1 CDT} + {1351407600 -21600 0 CST} + {1365321600 -18000 1 CDT} + {1382857200 -21600 0 CST} + {1396771200 -18000 1 CDT} + {1414306800 -21600 0 CST} + {1428220800 -18000 1 CDT} + {1445756400 -21600 0 CST} + {1459670400 -18000 1 CDT} + {1477810800 -21600 0 CST} + {1491120000 -18000 1 CDT} + {1509260400 -21600 0 CST} + {1522569600 -18000 1 CDT} + {1540710000 -21600 0 CST} + {1554624000 -18000 1 CDT} + {1572159600 -21600 0 CST} + {1586073600 -18000 1 CDT} + {1603609200 -21600 0 CST} + {1617523200 -18000 1 CDT} + {1635663600 -21600 0 CST} + {1648972800 -18000 1 CDT} + {1667113200 -21600 0 CST} + {1680422400 -18000 1 CDT} + {1698562800 -21600 0 CST} + {1712476800 -18000 1 CDT} + {1730012400 -21600 0 CST} + {1743926400 -18000 1 CDT} + {1761462000 -21600 0 CST} + {1775376000 -18000 1 CDT} + {1792911600 -21600 0 CST} + {1806825600 -18000 1 CDT} + {1824966000 -21600 0 CST} + {1838275200 -18000 1 CDT} + {1856415600 -21600 0 CST} + {1869724800 -18000 1 CDT} + {1887865200 -21600 0 CST} + {1901779200 -18000 1 CDT} + {1919314800 -21600 0 CST} + {1933228800 -18000 1 CDT} + {1950764400 -21600 0 CST} + {1964678400 -18000 1 CDT} + {1982818800 -21600 0 CST} + {1996128000 -18000 1 CDT} + {2014268400 -21600 0 CST} + {2027577600 -18000 1 CDT} + {2045718000 -21600 0 CST} + {2059027200 -18000 1 CDT} + {2077167600 -21600 0 CST} + {2091081600 -18000 1 CDT} + {2108617200 -21600 0 CST} + {2122531200 -18000 1 CDT} + {2140066800 -21600 0 CST} + {2153980800 -18000 1 CDT} + {2172121200 -21600 0 CST} + {2185430400 -18000 1 CDT} + {2203570800 -21600 0 CST} + {2216880000 -18000 1 CDT} + {2235020400 -21600 0 CST} + {2248934400 -18000 1 CDT} + {2266470000 -21600 0 CST} + {2280384000 -18000 1 CDT} + {2297919600 -21600 0 CST} + {2311833600 -18000 1 CDT} + {2329369200 -21600 0 CST} + {2343283200 -18000 1 CDT} + {2361423600 -21600 0 CST} + {2374732800 -18000 1 CDT} + {2392873200 -21600 0 CST} + {2406182400 -18000 1 CDT} + {2424322800 -21600 0 CST} + {2438236800 -18000 1 CDT} + {2455772400 -21600 0 CST} + {2469686400 -18000 1 CDT} + {2487222000 -21600 0 CST} + {2501136000 -18000 1 CDT} + {2519276400 -21600 0 CST} + {2532585600 -18000 1 CDT} + {2550726000 -21600 0 CST} + {2564035200 -18000 1 CDT} + {2582175600 -21600 0 CST} + {2596089600 -18000 1 CDT} + {2613625200 -21600 0 CST} + {2627539200 -18000 1 CDT} + {2645074800 -21600 0 CST} + {2658988800 -18000 1 CDT} + {2676524400 -21600 0 CST} + {2690438400 -18000 1 CDT} + {2708578800 -21600 0 CST} + {2721888000 -18000 1 CDT} + {2740028400 -21600 0 CST} + {2753337600 -18000 1 CDT} + {2771478000 -21600 0 CST} + {2785392000 -18000 1 CDT} + {2802927600 -21600 0 CST} + {2816841600 -18000 1 CDT} + {2834377200 -21600 0 CST} + {2848291200 -18000 1 CDT} + {2866431600 -21600 0 CST} + {2879740800 -18000 1 CDT} + {2897881200 -21600 0 CST} + {2911190400 -18000 1 CDT} + {2929330800 -21600 0 CST} + {2942640000 -18000 1 CDT} + {2960780400 -21600 0 CST} + {2974694400 -18000 1 CDT} + {2992230000 -21600 0 CST} + {3006144000 -18000 1 CDT} + {3023679600 -21600 0 CST} + {3037593600 -18000 1 CDT} + {3055734000 -21600 0 CST} + {3069043200 -18000 1 CDT} + {3087183600 -21600 0 CST} + {3100492800 -18000 1 CDT} + {3118633200 -21600 0 CST} + {3132547200 -18000 1 CDT} + {3150082800 -21600 0 CST} + {3163996800 -18000 1 CDT} + {3181532400 -21600 0 CST} + {3195446400 -18000 1 CDT} + {3212982000 -21600 0 CST} + {3226896000 -18000 1 CDT} + {3245036400 -21600 0 CST} + {3258345600 -18000 1 CDT} + {3276486000 -21600 0 CST} + {3289795200 -18000 1 CDT} + {3307935600 -21600 0 CST} + {3321849600 -18000 1 CDT} + {3339385200 -21600 0 CST} + {3353299200 -18000 1 CDT} + {3370834800 -21600 0 CST} + {3384748800 -18000 1 CDT} + {3402889200 -21600 0 CST} + {3416198400 -18000 1 CDT} + {3434338800 -21600 0 CST} + {3447648000 -18000 1 CDT} + {3465788400 -21600 0 CST} + {3479702400 -18000 1 CDT} + {3497238000 -21600 0 CST} + {3511152000 -18000 1 CDT} + {3528687600 -21600 0 CST} + {3542601600 -18000 1 CDT} + {3560137200 -21600 0 CST} + {3574051200 -18000 1 CDT} + {3592191600 -21600 0 CST} + {3605500800 -18000 1 CDT} + {3623641200 -21600 0 CST} + {3636950400 -18000 1 CDT} + {3655090800 -21600 0 CST} + {3669004800 -18000 1 CDT} + {3686540400 -21600 0 CST} + {3700454400 -18000 1 CDT} + {3717990000 -21600 0 CST} + {3731904000 -18000 1 CDT} + {3750044400 -21600 0 CST} + {3763353600 -18000 1 CDT} + {3781494000 -21600 0 CST} + {3794803200 -18000 1 CDT} + {3812943600 -21600 0 CST} + {3826252800 -18000 1 CDT} + {3844393200 -21600 0 CST} + {3858307200 -18000 1 CDT} + {3875842800 -21600 0 CST} + {3889756800 -18000 1 CDT} + {3907292400 -21600 0 CST} + {3921206400 -18000 1 CDT} + {3939346800 -21600 0 CST} + {3952656000 -18000 1 CDT} + {3970796400 -21600 0 CST} + {3984105600 -18000 1 CDT} + {4002246000 -21600 0 CST} + {4016160000 -18000 1 CDT} + {4033695600 -21600 0 CST} + {4047609600 -18000 1 CDT} + {4065145200 -21600 0 CST} + {4079059200 -18000 1 CDT} + {4096594800 -21600 0 CST} +} diff --git a/library/tzdata/America/Mexico_City b/library/tzdata/America/Mexico_City index 86e473a..48462e4 100644 --- a/library/tzdata/America/Mexico_City +++ b/library/tzdata/America/Mexico_City @@ -1,228 +1,228 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Mexico_City) { - {-9223372036854775808 -23796 0 LMT} - {-1514739600 -25200 0 MST} - {-1343066400 -21600 0 CST} - {-1234807200 -25200 0 MST} - {-1220292000 -21600 0 CST} - {-1207159200 -25200 0 MST} - {-1191344400 -21600 0 CST} - {-975261600 -18000 1 CDT} - {-963169200 -21600 0 CST} - {-917114400 -18000 1 CDT} - {-907354800 -21600 0 CST} - {-821901600 -18000 1 CWT} - {-810068400 -21600 0 CST} - {-627501600 -18000 1 CDT} - {-612990000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {989136000 -18000 1 CDT} - {1001836800 -21600 0 CST} - {1014184800 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1175414400 -18000 1 CDT} - {1193554800 -21600 0 CST} - {1207468800 -18000 1 CDT} - {1225004400 -21600 0 CST} - {1238918400 -18000 1 CDT} - {1256454000 -21600 0 CST} - {1270368000 -18000 1 CDT} - {1288508400 -21600 0 CST} - {1301817600 -18000 1 CDT} - {1319958000 -21600 0 CST} - {1333267200 -18000 1 CDT} - {1351407600 -21600 0 CST} - {1365321600 -18000 1 CDT} - {1382857200 -21600 0 CST} - {1396771200 -18000 1 CDT} - {1414306800 -21600 0 CST} - {1428220800 -18000 1 CDT} - {1445756400 -21600 0 CST} - {1459670400 -18000 1 CDT} - {1477810800 -21600 0 CST} - {1491120000 -18000 1 CDT} - {1509260400 -21600 0 CST} - {1522569600 -18000 1 CDT} - {1540710000 -21600 0 CST} - {1554624000 -18000 1 CDT} - {1572159600 -21600 0 CST} - {1586073600 -18000 1 CDT} - {1603609200 -21600 0 CST} - {1617523200 -18000 1 CDT} - {1635663600 -21600 0 CST} - {1648972800 -18000 1 CDT} - {1667113200 -21600 0 CST} - {1680422400 -18000 1 CDT} - {1698562800 -21600 0 CST} - {1712476800 -18000 1 CDT} - {1730012400 -21600 0 CST} - {1743926400 -18000 1 CDT} - {1761462000 -21600 0 CST} - {1775376000 -18000 1 CDT} - {1792911600 -21600 0 CST} - {1806825600 -18000 1 CDT} - {1824966000 -21600 0 CST} - {1838275200 -18000 1 CDT} - {1856415600 -21600 0 CST} - {1869724800 -18000 1 CDT} - {1887865200 -21600 0 CST} - {1901779200 -18000 1 CDT} - {1919314800 -21600 0 CST} - {1933228800 -18000 1 CDT} - {1950764400 -21600 0 CST} - {1964678400 -18000 1 CDT} - {1982818800 -21600 0 CST} - {1996128000 -18000 1 CDT} - {2014268400 -21600 0 CST} - {2027577600 -18000 1 CDT} - {2045718000 -21600 0 CST} - {2059027200 -18000 1 CDT} - {2077167600 -21600 0 CST} - {2091081600 -18000 1 CDT} - {2108617200 -21600 0 CST} - {2122531200 -18000 1 CDT} - {2140066800 -21600 0 CST} - {2153980800 -18000 1 CDT} - {2172121200 -21600 0 CST} - {2185430400 -18000 1 CDT} - {2203570800 -21600 0 CST} - {2216880000 -18000 1 CDT} - {2235020400 -21600 0 CST} - {2248934400 -18000 1 CDT} - {2266470000 -21600 0 CST} - {2280384000 -18000 1 CDT} - {2297919600 -21600 0 CST} - {2311833600 -18000 1 CDT} - {2329369200 -21600 0 CST} - {2343283200 -18000 1 CDT} - {2361423600 -21600 0 CST} - {2374732800 -18000 1 CDT} - {2392873200 -21600 0 CST} - {2406182400 -18000 1 CDT} - {2424322800 -21600 0 CST} - {2438236800 -18000 1 CDT} - {2455772400 -21600 0 CST} - {2469686400 -18000 1 CDT} - {2487222000 -21600 0 CST} - {2501136000 -18000 1 CDT} - {2519276400 -21600 0 CST} - {2532585600 -18000 1 CDT} - {2550726000 -21600 0 CST} - {2564035200 -18000 1 CDT} - {2582175600 -21600 0 CST} - {2596089600 -18000 1 CDT} - {2613625200 -21600 0 CST} - {2627539200 -18000 1 CDT} - {2645074800 -21600 0 CST} - {2658988800 -18000 1 CDT} - {2676524400 -21600 0 CST} - {2690438400 -18000 1 CDT} - {2708578800 -21600 0 CST} - {2721888000 -18000 1 CDT} - {2740028400 -21600 0 CST} - {2753337600 -18000 1 CDT} - {2771478000 -21600 0 CST} - {2785392000 -18000 1 CDT} - {2802927600 -21600 0 CST} - {2816841600 -18000 1 CDT} - {2834377200 -21600 0 CST} - {2848291200 -18000 1 CDT} - {2866431600 -21600 0 CST} - {2879740800 -18000 1 CDT} - {2897881200 -21600 0 CST} - {2911190400 -18000 1 CDT} - {2929330800 -21600 0 CST} - {2942640000 -18000 1 CDT} - {2960780400 -21600 0 CST} - {2974694400 -18000 1 CDT} - {2992230000 -21600 0 CST} - {3006144000 -18000 1 CDT} - {3023679600 -21600 0 CST} - {3037593600 -18000 1 CDT} - {3055734000 -21600 0 CST} - {3069043200 -18000 1 CDT} - {3087183600 -21600 0 CST} - {3100492800 -18000 1 CDT} - {3118633200 -21600 0 CST} - {3132547200 -18000 1 CDT} - {3150082800 -21600 0 CST} - {3163996800 -18000 1 CDT} - {3181532400 -21600 0 CST} - {3195446400 -18000 1 CDT} - {3212982000 -21600 0 CST} - {3226896000 -18000 1 CDT} - {3245036400 -21600 0 CST} - {3258345600 -18000 1 CDT} - {3276486000 -21600 0 CST} - {3289795200 -18000 1 CDT} - {3307935600 -21600 0 CST} - {3321849600 -18000 1 CDT} - {3339385200 -21600 0 CST} - {3353299200 -18000 1 CDT} - {3370834800 -21600 0 CST} - {3384748800 -18000 1 CDT} - {3402889200 -21600 0 CST} - {3416198400 -18000 1 CDT} - {3434338800 -21600 0 CST} - {3447648000 -18000 1 CDT} - {3465788400 -21600 0 CST} - {3479702400 -18000 1 CDT} - {3497238000 -21600 0 CST} - {3511152000 -18000 1 CDT} - {3528687600 -21600 0 CST} - {3542601600 -18000 1 CDT} - {3560137200 -21600 0 CST} - {3574051200 -18000 1 CDT} - {3592191600 -21600 0 CST} - {3605500800 -18000 1 CDT} - {3623641200 -21600 0 CST} - {3636950400 -18000 1 CDT} - {3655090800 -21600 0 CST} - {3669004800 -18000 1 CDT} - {3686540400 -21600 0 CST} - {3700454400 -18000 1 CDT} - {3717990000 -21600 0 CST} - {3731904000 -18000 1 CDT} - {3750044400 -21600 0 CST} - {3763353600 -18000 1 CDT} - {3781494000 -21600 0 CST} - {3794803200 -18000 1 CDT} - {3812943600 -21600 0 CST} - {3826252800 -18000 1 CDT} - {3844393200 -21600 0 CST} - {3858307200 -18000 1 CDT} - {3875842800 -21600 0 CST} - {3889756800 -18000 1 CDT} - {3907292400 -21600 0 CST} - {3921206400 -18000 1 CDT} - {3939346800 -21600 0 CST} - {3952656000 -18000 1 CDT} - {3970796400 -21600 0 CST} - {3984105600 -18000 1 CDT} - {4002246000 -21600 0 CST} - {4016160000 -18000 1 CDT} - {4033695600 -21600 0 CST} - {4047609600 -18000 1 CDT} - {4065145200 -21600 0 CST} - {4079059200 -18000 1 CDT} - {4096594800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Mexico_City) { + {-9223372036854775808 -23796 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {-975261600 -18000 1 CDT} + {-963169200 -21600 0 CST} + {-917114400 -18000 1 CDT} + {-907354800 -21600 0 CST} + {-821901600 -18000 1 CWT} + {-810068400 -21600 0 CST} + {-627501600 -18000 1 CDT} + {-612990000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {989136000 -18000 1 CDT} + {1001836800 -21600 0 CST} + {1014184800 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1175414400 -18000 1 CDT} + {1193554800 -21600 0 CST} + {1207468800 -18000 1 CDT} + {1225004400 -21600 0 CST} + {1238918400 -18000 1 CDT} + {1256454000 -21600 0 CST} + {1270368000 -18000 1 CDT} + {1288508400 -21600 0 CST} + {1301817600 -18000 1 CDT} + {1319958000 -21600 0 CST} + {1333267200 -18000 1 CDT} + {1351407600 -21600 0 CST} + {1365321600 -18000 1 CDT} + {1382857200 -21600 0 CST} + {1396771200 -18000 1 CDT} + {1414306800 -21600 0 CST} + {1428220800 -18000 1 CDT} + {1445756400 -21600 0 CST} + {1459670400 -18000 1 CDT} + {1477810800 -21600 0 CST} + {1491120000 -18000 1 CDT} + {1509260400 -21600 0 CST} + {1522569600 -18000 1 CDT} + {1540710000 -21600 0 CST} + {1554624000 -18000 1 CDT} + {1572159600 -21600 0 CST} + {1586073600 -18000 1 CDT} + {1603609200 -21600 0 CST} + {1617523200 -18000 1 CDT} + {1635663600 -21600 0 CST} + {1648972800 -18000 1 CDT} + {1667113200 -21600 0 CST} + {1680422400 -18000 1 CDT} + {1698562800 -21600 0 CST} + {1712476800 -18000 1 CDT} + {1730012400 -21600 0 CST} + {1743926400 -18000 1 CDT} + {1761462000 -21600 0 CST} + {1775376000 -18000 1 CDT} + {1792911600 -21600 0 CST} + {1806825600 -18000 1 CDT} + {1824966000 -21600 0 CST} + {1838275200 -18000 1 CDT} + {1856415600 -21600 0 CST} + {1869724800 -18000 1 CDT} + {1887865200 -21600 0 CST} + {1901779200 -18000 1 CDT} + {1919314800 -21600 0 CST} + {1933228800 -18000 1 CDT} + {1950764400 -21600 0 CST} + {1964678400 -18000 1 CDT} + {1982818800 -21600 0 CST} + {1996128000 -18000 1 CDT} + {2014268400 -21600 0 CST} + {2027577600 -18000 1 CDT} + {2045718000 -21600 0 CST} + {2059027200 -18000 1 CDT} + {2077167600 -21600 0 CST} + {2091081600 -18000 1 CDT} + {2108617200 -21600 0 CST} + {2122531200 -18000 1 CDT} + {2140066800 -21600 0 CST} + {2153980800 -18000 1 CDT} + {2172121200 -21600 0 CST} + {2185430400 -18000 1 CDT} + {2203570800 -21600 0 CST} + {2216880000 -18000 1 CDT} + {2235020400 -21600 0 CST} + {2248934400 -18000 1 CDT} + {2266470000 -21600 0 CST} + {2280384000 -18000 1 CDT} + {2297919600 -21600 0 CST} + {2311833600 -18000 1 CDT} + {2329369200 -21600 0 CST} + {2343283200 -18000 1 CDT} + {2361423600 -21600 0 CST} + {2374732800 -18000 1 CDT} + {2392873200 -21600 0 CST} + {2406182400 -18000 1 CDT} + {2424322800 -21600 0 CST} + {2438236800 -18000 1 CDT} + {2455772400 -21600 0 CST} + {2469686400 -18000 1 CDT} + {2487222000 -21600 0 CST} + {2501136000 -18000 1 CDT} + {2519276400 -21600 0 CST} + {2532585600 -18000 1 CDT} + {2550726000 -21600 0 CST} + {2564035200 -18000 1 CDT} + {2582175600 -21600 0 CST} + {2596089600 -18000 1 CDT} + {2613625200 -21600 0 CST} + {2627539200 -18000 1 CDT} + {2645074800 -21600 0 CST} + {2658988800 -18000 1 CDT} + {2676524400 -21600 0 CST} + {2690438400 -18000 1 CDT} + {2708578800 -21600 0 CST} + {2721888000 -18000 1 CDT} + {2740028400 -21600 0 CST} + {2753337600 -18000 1 CDT} + {2771478000 -21600 0 CST} + {2785392000 -18000 1 CDT} + {2802927600 -21600 0 CST} + {2816841600 -18000 1 CDT} + {2834377200 -21600 0 CST} + {2848291200 -18000 1 CDT} + {2866431600 -21600 0 CST} + {2879740800 -18000 1 CDT} + {2897881200 -21600 0 CST} + {2911190400 -18000 1 CDT} + {2929330800 -21600 0 CST} + {2942640000 -18000 1 CDT} + {2960780400 -21600 0 CST} + {2974694400 -18000 1 CDT} + {2992230000 -21600 0 CST} + {3006144000 -18000 1 CDT} + {3023679600 -21600 0 CST} + {3037593600 -18000 1 CDT} + {3055734000 -21600 0 CST} + {3069043200 -18000 1 CDT} + {3087183600 -21600 0 CST} + {3100492800 -18000 1 CDT} + {3118633200 -21600 0 CST} + {3132547200 -18000 1 CDT} + {3150082800 -21600 0 CST} + {3163996800 -18000 1 CDT} + {3181532400 -21600 0 CST} + {3195446400 -18000 1 CDT} + {3212982000 -21600 0 CST} + {3226896000 -18000 1 CDT} + {3245036400 -21600 0 CST} + {3258345600 -18000 1 CDT} + {3276486000 -21600 0 CST} + {3289795200 -18000 1 CDT} + {3307935600 -21600 0 CST} + {3321849600 -18000 1 CDT} + {3339385200 -21600 0 CST} + {3353299200 -18000 1 CDT} + {3370834800 -21600 0 CST} + {3384748800 -18000 1 CDT} + {3402889200 -21600 0 CST} + {3416198400 -18000 1 CDT} + {3434338800 -21600 0 CST} + {3447648000 -18000 1 CDT} + {3465788400 -21600 0 CST} + {3479702400 -18000 1 CDT} + {3497238000 -21600 0 CST} + {3511152000 -18000 1 CDT} + {3528687600 -21600 0 CST} + {3542601600 -18000 1 CDT} + {3560137200 -21600 0 CST} + {3574051200 -18000 1 CDT} + {3592191600 -21600 0 CST} + {3605500800 -18000 1 CDT} + {3623641200 -21600 0 CST} + {3636950400 -18000 1 CDT} + {3655090800 -21600 0 CST} + {3669004800 -18000 1 CDT} + {3686540400 -21600 0 CST} + {3700454400 -18000 1 CDT} + {3717990000 -21600 0 CST} + {3731904000 -18000 1 CDT} + {3750044400 -21600 0 CST} + {3763353600 -18000 1 CDT} + {3781494000 -21600 0 CST} + {3794803200 -18000 1 CDT} + {3812943600 -21600 0 CST} + {3826252800 -18000 1 CDT} + {3844393200 -21600 0 CST} + {3858307200 -18000 1 CDT} + {3875842800 -21600 0 CST} + {3889756800 -18000 1 CDT} + {3907292400 -21600 0 CST} + {3921206400 -18000 1 CDT} + {3939346800 -21600 0 CST} + {3952656000 -18000 1 CDT} + {3970796400 -21600 0 CST} + {3984105600 -18000 1 CDT} + {4002246000 -21600 0 CST} + {4016160000 -18000 1 CDT} + {4033695600 -21600 0 CST} + {4047609600 -18000 1 CDT} + {4065145200 -21600 0 CST} + {4079059200 -18000 1 CDT} + {4096594800 -21600 0 CST} +} diff --git a/library/tzdata/America/Miquelon b/library/tzdata/America/Miquelon index 8abe498..a7410f1 100644 --- a/library/tzdata/America/Miquelon +++ b/library/tzdata/America/Miquelon @@ -1,234 +1,234 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Miquelon) { - {-9223372036854775808 -13480 0 LMT} - {-1850328920 -14400 0 AST} - {326001600 -10800 0 PMST} - {536468400 -10800 0 PMST} - {544597200 -7200 1 PMDT} - {562132800 -10800 0 PMST} - {576046800 -7200 1 PMDT} - {594187200 -10800 0 PMST} - {607496400 -7200 1 PMDT} - {625636800 -10800 0 PMST} - {638946000 -7200 1 PMDT} - {657086400 -10800 0 PMST} - {671000400 -7200 1 PMDT} - {688536000 -10800 0 PMST} - {702450000 -7200 1 PMDT} - {719985600 -10800 0 PMST} - {733899600 -7200 1 PMDT} - {752040000 -10800 0 PMST} - {765349200 -7200 1 PMDT} - {783489600 -10800 0 PMST} - {796798800 -7200 1 PMDT} - {814939200 -10800 0 PMST} - {828853200 -7200 1 PMDT} - {846388800 -10800 0 PMST} - {860302800 -7200 1 PMDT} - {877838400 -10800 0 PMST} - {891752400 -7200 1 PMDT} - {909288000 -10800 0 PMST} - {923202000 -7200 1 PMDT} - {941342400 -10800 0 PMST} - {954651600 -7200 1 PMDT} - {972792000 -10800 0 PMST} - {986101200 -7200 1 PMDT} - {1004241600 -10800 0 PMST} - {1018155600 -7200 1 PMDT} - {1035691200 -10800 0 PMST} - {1049605200 -7200 1 PMDT} - {1067140800 -10800 0 PMST} - {1081054800 -7200 1 PMDT} - {1099195200 -10800 0 PMST} - {1112504400 -7200 1 PMDT} - {1130644800 -10800 0 PMST} - {1143954000 -7200 1 PMDT} - {1162094400 -10800 0 PMST} - {1173589200 -7200 1 PMDT} - {1194148800 -10800 0 PMST} - {1205038800 -7200 1 PMDT} - {1225598400 -10800 0 PMST} - {1236488400 -7200 1 PMDT} - {1257048000 -10800 0 PMST} - {1268542800 -7200 1 PMDT} - {1289102400 -10800 0 PMST} - {1299992400 -7200 1 PMDT} - {1320552000 -10800 0 PMST} - {1331442000 -7200 1 PMDT} - {1352001600 -10800 0 PMST} - {1362891600 -7200 1 PMDT} - {1383451200 -10800 0 PMST} - {1394341200 -7200 1 PMDT} - {1414900800 -10800 0 PMST} - {1425790800 -7200 1 PMDT} - {1446350400 -10800 0 PMST} - {1457845200 -7200 1 PMDT} - {1478404800 -10800 0 PMST} - {1489294800 -7200 1 PMDT} - {1509854400 -10800 0 PMST} - {1520744400 -7200 1 PMDT} - {1541304000 -10800 0 PMST} - {1552194000 -7200 1 PMDT} - {1572753600 -10800 0 PMST} - {1583643600 -7200 1 PMDT} - {1604203200 -10800 0 PMST} - {1615698000 -7200 1 PMDT} - {1636257600 -10800 0 PMST} - {1647147600 -7200 1 PMDT} - {1667707200 -10800 0 PMST} - {1678597200 -7200 1 PMDT} - {1699156800 -10800 0 PMST} - {1710046800 -7200 1 PMDT} - {1730606400 -10800 0 PMST} - {1741496400 -7200 1 PMDT} - {1762056000 -10800 0 PMST} - {1772946000 -7200 1 PMDT} - {1793505600 -10800 0 PMST} - {1805000400 -7200 1 PMDT} - {1825560000 -10800 0 PMST} - {1836450000 -7200 1 PMDT} - {1857009600 -10800 0 PMST} - {1867899600 -7200 1 PMDT} - {1888459200 -10800 0 PMST} - {1899349200 -7200 1 PMDT} - {1919908800 -10800 0 PMST} - {1930798800 -7200 1 PMDT} - {1951358400 -10800 0 PMST} - {1962853200 -7200 1 PMDT} - {1983412800 -10800 0 PMST} - {1994302800 -7200 1 PMDT} - {2014862400 -10800 0 PMST} - {2025752400 -7200 1 PMDT} - {2046312000 -10800 0 PMST} - {2057202000 -7200 1 PMDT} - {2077761600 -10800 0 PMST} - {2088651600 -7200 1 PMDT} - {2109211200 -10800 0 PMST} - {2120101200 -7200 1 PMDT} - {2140660800 -10800 0 PMST} - {2152155600 -7200 1 PMDT} - {2172715200 -10800 0 PMST} - {2183605200 -7200 1 PMDT} - {2204164800 -10800 0 PMST} - {2215054800 -7200 1 PMDT} - {2235614400 -10800 0 PMST} - {2246504400 -7200 1 PMDT} - {2267064000 -10800 0 PMST} - {2277954000 -7200 1 PMDT} - {2298513600 -10800 0 PMST} - {2309403600 -7200 1 PMDT} - {2329963200 -10800 0 PMST} - {2341458000 -7200 1 PMDT} - {2362017600 -10800 0 PMST} - {2372907600 -7200 1 PMDT} - {2393467200 -10800 0 PMST} - {2404357200 -7200 1 PMDT} - {2424916800 -10800 0 PMST} - {2435806800 -7200 1 PMDT} - {2456366400 -10800 0 PMST} - {2467256400 -7200 1 PMDT} - {2487816000 -10800 0 PMST} - {2499310800 -7200 1 PMDT} - {2519870400 -10800 0 PMST} - {2530760400 -7200 1 PMDT} - {2551320000 -10800 0 PMST} - {2562210000 -7200 1 PMDT} - {2582769600 -10800 0 PMST} - {2593659600 -7200 1 PMDT} - {2614219200 -10800 0 PMST} - {2625109200 -7200 1 PMDT} - {2645668800 -10800 0 PMST} - {2656558800 -7200 1 PMDT} - {2677118400 -10800 0 PMST} - {2688613200 -7200 1 PMDT} - {2709172800 -10800 0 PMST} - {2720062800 -7200 1 PMDT} - {2740622400 -10800 0 PMST} - {2751512400 -7200 1 PMDT} - {2772072000 -10800 0 PMST} - {2782962000 -7200 1 PMDT} - {2803521600 -10800 0 PMST} - {2814411600 -7200 1 PMDT} - {2834971200 -10800 0 PMST} - {2846466000 -7200 1 PMDT} - {2867025600 -10800 0 PMST} - {2877915600 -7200 1 PMDT} - {2898475200 -10800 0 PMST} - {2909365200 -7200 1 PMDT} - {2929924800 -10800 0 PMST} - {2940814800 -7200 1 PMDT} - {2961374400 -10800 0 PMST} - {2972264400 -7200 1 PMDT} - {2992824000 -10800 0 PMST} - {3003714000 -7200 1 PMDT} - {3024273600 -10800 0 PMST} - {3035768400 -7200 1 PMDT} - {3056328000 -10800 0 PMST} - {3067218000 -7200 1 PMDT} - {3087777600 -10800 0 PMST} - {3098667600 -7200 1 PMDT} - {3119227200 -10800 0 PMST} - {3130117200 -7200 1 PMDT} - {3150676800 -10800 0 PMST} - {3161566800 -7200 1 PMDT} - {3182126400 -10800 0 PMST} - {3193016400 -7200 1 PMDT} - {3213576000 -10800 0 PMST} - {3225070800 -7200 1 PMDT} - {3245630400 -10800 0 PMST} - {3256520400 -7200 1 PMDT} - {3277080000 -10800 0 PMST} - {3287970000 -7200 1 PMDT} - {3308529600 -10800 0 PMST} - {3319419600 -7200 1 PMDT} - {3339979200 -10800 0 PMST} - {3350869200 -7200 1 PMDT} - {3371428800 -10800 0 PMST} - {3382923600 -7200 1 PMDT} - {3403483200 -10800 0 PMST} - {3414373200 -7200 1 PMDT} - {3434932800 -10800 0 PMST} - {3445822800 -7200 1 PMDT} - {3466382400 -10800 0 PMST} - {3477272400 -7200 1 PMDT} - {3497832000 -10800 0 PMST} - {3508722000 -7200 1 PMDT} - {3529281600 -10800 0 PMST} - {3540171600 -7200 1 PMDT} - {3560731200 -10800 0 PMST} - {3572226000 -7200 1 PMDT} - {3592785600 -10800 0 PMST} - {3603675600 -7200 1 PMDT} - {3624235200 -10800 0 PMST} - {3635125200 -7200 1 PMDT} - {3655684800 -10800 0 PMST} - {3666574800 -7200 1 PMDT} - {3687134400 -10800 0 PMST} - {3698024400 -7200 1 PMDT} - {3718584000 -10800 0 PMST} - {3730078800 -7200 1 PMDT} - {3750638400 -10800 0 PMST} - {3761528400 -7200 1 PMDT} - {3782088000 -10800 0 PMST} - {3792978000 -7200 1 PMDT} - {3813537600 -10800 0 PMST} - {3824427600 -7200 1 PMDT} - {3844987200 -10800 0 PMST} - {3855877200 -7200 1 PMDT} - {3876436800 -10800 0 PMST} - {3887326800 -7200 1 PMDT} - {3907886400 -10800 0 PMST} - {3919381200 -7200 1 PMDT} - {3939940800 -10800 0 PMST} - {3950830800 -7200 1 PMDT} - {3971390400 -10800 0 PMST} - {3982280400 -7200 1 PMDT} - {4002840000 -10800 0 PMST} - {4013730000 -7200 1 PMDT} - {4034289600 -10800 0 PMST} - {4045179600 -7200 1 PMDT} - {4065739200 -10800 0 PMST} - {4076629200 -7200 1 PMDT} - {4097188800 -10800 0 PMST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Miquelon) { + {-9223372036854775808 -13480 0 LMT} + {-1850328920 -14400 0 AST} + {326001600 -10800 0 PMST} + {536468400 -10800 0 PMST} + {544597200 -7200 1 PMDT} + {562132800 -10800 0 PMST} + {576046800 -7200 1 PMDT} + {594187200 -10800 0 PMST} + {607496400 -7200 1 PMDT} + {625636800 -10800 0 PMST} + {638946000 -7200 1 PMDT} + {657086400 -10800 0 PMST} + {671000400 -7200 1 PMDT} + {688536000 -10800 0 PMST} + {702450000 -7200 1 PMDT} + {719985600 -10800 0 PMST} + {733899600 -7200 1 PMDT} + {752040000 -10800 0 PMST} + {765349200 -7200 1 PMDT} + {783489600 -10800 0 PMST} + {796798800 -7200 1 PMDT} + {814939200 -10800 0 PMST} + {828853200 -7200 1 PMDT} + {846388800 -10800 0 PMST} + {860302800 -7200 1 PMDT} + {877838400 -10800 0 PMST} + {891752400 -7200 1 PMDT} + {909288000 -10800 0 PMST} + {923202000 -7200 1 PMDT} + {941342400 -10800 0 PMST} + {954651600 -7200 1 PMDT} + {972792000 -10800 0 PMST} + {986101200 -7200 1 PMDT} + {1004241600 -10800 0 PMST} + {1018155600 -7200 1 PMDT} + {1035691200 -10800 0 PMST} + {1049605200 -7200 1 PMDT} + {1067140800 -10800 0 PMST} + {1081054800 -7200 1 PMDT} + {1099195200 -10800 0 PMST} + {1112504400 -7200 1 PMDT} + {1130644800 -10800 0 PMST} + {1143954000 -7200 1 PMDT} + {1162094400 -10800 0 PMST} + {1173589200 -7200 1 PMDT} + {1194148800 -10800 0 PMST} + {1205038800 -7200 1 PMDT} + {1225598400 -10800 0 PMST} + {1236488400 -7200 1 PMDT} + {1257048000 -10800 0 PMST} + {1268542800 -7200 1 PMDT} + {1289102400 -10800 0 PMST} + {1299992400 -7200 1 PMDT} + {1320552000 -10800 0 PMST} + {1331442000 -7200 1 PMDT} + {1352001600 -10800 0 PMST} + {1362891600 -7200 1 PMDT} + {1383451200 -10800 0 PMST} + {1394341200 -7200 1 PMDT} + {1414900800 -10800 0 PMST} + {1425790800 -7200 1 PMDT} + {1446350400 -10800 0 PMST} + {1457845200 -7200 1 PMDT} + {1478404800 -10800 0 PMST} + {1489294800 -7200 1 PMDT} + {1509854400 -10800 0 PMST} + {1520744400 -7200 1 PMDT} + {1541304000 -10800 0 PMST} + {1552194000 -7200 1 PMDT} + {1572753600 -10800 0 PMST} + {1583643600 -7200 1 PMDT} + {1604203200 -10800 0 PMST} + {1615698000 -7200 1 PMDT} + {1636257600 -10800 0 PMST} + {1647147600 -7200 1 PMDT} + {1667707200 -10800 0 PMST} + {1678597200 -7200 1 PMDT} + {1699156800 -10800 0 PMST} + {1710046800 -7200 1 PMDT} + {1730606400 -10800 0 PMST} + {1741496400 -7200 1 PMDT} + {1762056000 -10800 0 PMST} + {1772946000 -7200 1 PMDT} + {1793505600 -10800 0 PMST} + {1805000400 -7200 1 PMDT} + {1825560000 -10800 0 PMST} + {1836450000 -7200 1 PMDT} + {1857009600 -10800 0 PMST} + {1867899600 -7200 1 PMDT} + {1888459200 -10800 0 PMST} + {1899349200 -7200 1 PMDT} + {1919908800 -10800 0 PMST} + {1930798800 -7200 1 PMDT} + {1951358400 -10800 0 PMST} + {1962853200 -7200 1 PMDT} + {1983412800 -10800 0 PMST} + {1994302800 -7200 1 PMDT} + {2014862400 -10800 0 PMST} + {2025752400 -7200 1 PMDT} + {2046312000 -10800 0 PMST} + {2057202000 -7200 1 PMDT} + {2077761600 -10800 0 PMST} + {2088651600 -7200 1 PMDT} + {2109211200 -10800 0 PMST} + {2120101200 -7200 1 PMDT} + {2140660800 -10800 0 PMST} + {2152155600 -7200 1 PMDT} + {2172715200 -10800 0 PMST} + {2183605200 -7200 1 PMDT} + {2204164800 -10800 0 PMST} + {2215054800 -7200 1 PMDT} + {2235614400 -10800 0 PMST} + {2246504400 -7200 1 PMDT} + {2267064000 -10800 0 PMST} + {2277954000 -7200 1 PMDT} + {2298513600 -10800 0 PMST} + {2309403600 -7200 1 PMDT} + {2329963200 -10800 0 PMST} + {2341458000 -7200 1 PMDT} + {2362017600 -10800 0 PMST} + {2372907600 -7200 1 PMDT} + {2393467200 -10800 0 PMST} + {2404357200 -7200 1 PMDT} + {2424916800 -10800 0 PMST} + {2435806800 -7200 1 PMDT} + {2456366400 -10800 0 PMST} + {2467256400 -7200 1 PMDT} + {2487816000 -10800 0 PMST} + {2499310800 -7200 1 PMDT} + {2519870400 -10800 0 PMST} + {2530760400 -7200 1 PMDT} + {2551320000 -10800 0 PMST} + {2562210000 -7200 1 PMDT} + {2582769600 -10800 0 PMST} + {2593659600 -7200 1 PMDT} + {2614219200 -10800 0 PMST} + {2625109200 -7200 1 PMDT} + {2645668800 -10800 0 PMST} + {2656558800 -7200 1 PMDT} + {2677118400 -10800 0 PMST} + {2688613200 -7200 1 PMDT} + {2709172800 -10800 0 PMST} + {2720062800 -7200 1 PMDT} + {2740622400 -10800 0 PMST} + {2751512400 -7200 1 PMDT} + {2772072000 -10800 0 PMST} + {2782962000 -7200 1 PMDT} + {2803521600 -10800 0 PMST} + {2814411600 -7200 1 PMDT} + {2834971200 -10800 0 PMST} + {2846466000 -7200 1 PMDT} + {2867025600 -10800 0 PMST} + {2877915600 -7200 1 PMDT} + {2898475200 -10800 0 PMST} + {2909365200 -7200 1 PMDT} + {2929924800 -10800 0 PMST} + {2940814800 -7200 1 PMDT} + {2961374400 -10800 0 PMST} + {2972264400 -7200 1 PMDT} + {2992824000 -10800 0 PMST} + {3003714000 -7200 1 PMDT} + {3024273600 -10800 0 PMST} + {3035768400 -7200 1 PMDT} + {3056328000 -10800 0 PMST} + {3067218000 -7200 1 PMDT} + {3087777600 -10800 0 PMST} + {3098667600 -7200 1 PMDT} + {3119227200 -10800 0 PMST} + {3130117200 -7200 1 PMDT} + {3150676800 -10800 0 PMST} + {3161566800 -7200 1 PMDT} + {3182126400 -10800 0 PMST} + {3193016400 -7200 1 PMDT} + {3213576000 -10800 0 PMST} + {3225070800 -7200 1 PMDT} + {3245630400 -10800 0 PMST} + {3256520400 -7200 1 PMDT} + {3277080000 -10800 0 PMST} + {3287970000 -7200 1 PMDT} + {3308529600 -10800 0 PMST} + {3319419600 -7200 1 PMDT} + {3339979200 -10800 0 PMST} + {3350869200 -7200 1 PMDT} + {3371428800 -10800 0 PMST} + {3382923600 -7200 1 PMDT} + {3403483200 -10800 0 PMST} + {3414373200 -7200 1 PMDT} + {3434932800 -10800 0 PMST} + {3445822800 -7200 1 PMDT} + {3466382400 -10800 0 PMST} + {3477272400 -7200 1 PMDT} + {3497832000 -10800 0 PMST} + {3508722000 -7200 1 PMDT} + {3529281600 -10800 0 PMST} + {3540171600 -7200 1 PMDT} + {3560731200 -10800 0 PMST} + {3572226000 -7200 1 PMDT} + {3592785600 -10800 0 PMST} + {3603675600 -7200 1 PMDT} + {3624235200 -10800 0 PMST} + {3635125200 -7200 1 PMDT} + {3655684800 -10800 0 PMST} + {3666574800 -7200 1 PMDT} + {3687134400 -10800 0 PMST} + {3698024400 -7200 1 PMDT} + {3718584000 -10800 0 PMST} + {3730078800 -7200 1 PMDT} + {3750638400 -10800 0 PMST} + {3761528400 -7200 1 PMDT} + {3782088000 -10800 0 PMST} + {3792978000 -7200 1 PMDT} + {3813537600 -10800 0 PMST} + {3824427600 -7200 1 PMDT} + {3844987200 -10800 0 PMST} + {3855877200 -7200 1 PMDT} + {3876436800 -10800 0 PMST} + {3887326800 -7200 1 PMDT} + {3907886400 -10800 0 PMST} + {3919381200 -7200 1 PMDT} + {3939940800 -10800 0 PMST} + {3950830800 -7200 1 PMDT} + {3971390400 -10800 0 PMST} + {3982280400 -7200 1 PMDT} + {4002840000 -10800 0 PMST} + {4013730000 -7200 1 PMDT} + {4034289600 -10800 0 PMST} + {4045179600 -7200 1 PMDT} + {4065739200 -10800 0 PMST} + {4076629200 -7200 1 PMDT} + {4097188800 -10800 0 PMST} +} diff --git a/library/tzdata/America/Moncton b/library/tzdata/America/Moncton index 9895582..408e3a1 100755 --- a/library/tzdata/America/Moncton +++ b/library/tzdata/America/Moncton @@ -1,342 +1,342 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Moncton) { - {-9223372036854775808 -15548 0 LMT} - {-2715882052 -18000 0 EST} - {-2131642800 -14400 0 AST} - {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} - {-1167595200 -14400 0 AST} - {-1153681200 -10800 1 ADT} - {-1145822400 -14400 0 AST} - {-1122231600 -10800 1 ADT} - {-1114372800 -14400 0 AST} - {-1090782000 -10800 1 ADT} - {-1082923200 -14400 0 AST} - {-1059332400 -10800 1 ADT} - {-1051473600 -14400 0 AST} - {-1027882800 -10800 1 ADT} - {-1020024000 -14400 0 AST} - {-996433200 -10800 1 ADT} - {-988574400 -14400 0 AST} - {-965674800 -10800 1 ADT} - {-955396800 -14400 0 AST} - {-934743600 -10800 1 ADT} - {-923947200 -14400 0 AST} - {-904503600 -10800 1 ADT} - {-891892800 -14400 0 AST} - {-883598400 -14400 0 AST} - {-880221600 -10800 1 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-757368000 -14400 0 AST} - {-747252000 -10800 1 ADT} - {-733950000 -14400 0 AST} - {-715802400 -10800 1 ADT} - {-702500400 -14400 0 AST} - {-684352800 -10800 1 ADT} - {-671050800 -14400 0 AST} - {-652903200 -10800 1 ADT} - {-639601200 -14400 0 AST} - {-620848800 -10800 1 ADT} - {-608151600 -14400 0 AST} - {-589399200 -10800 1 ADT} - {-576097200 -14400 0 AST} - {-557949600 -10800 1 ADT} - {-544647600 -14400 0 AST} - {-526500000 -10800 1 ADT} - {-513198000 -14400 0 AST} - {-495050400 -10800 1 ADT} - {-481748400 -14400 0 AST} - {-463600800 -10800 1 ADT} - {-450298800 -14400 0 AST} - {-431546400 -10800 1 ADT} - {-418244400 -14400 0 AST} - {-400096800 -10800 1 ADT} - {-384375600 -14400 0 AST} - {-368647200 -10800 1 ADT} - {-352926000 -14400 0 AST} - {-337197600 -10800 1 ADT} - {-321476400 -14400 0 AST} - {-305748000 -10800 1 ADT} - {-289422000 -14400 0 AST} - {-273693600 -10800 1 ADT} - {-257972400 -14400 0 AST} - {-242244000 -10800 1 ADT} - {-226522800 -14400 0 AST} - {-210794400 -10800 1 ADT} - {-195073200 -14400 0 AST} - {-179344800 -10800 1 ADT} - {-163623600 -14400 0 AST} - {-147895200 -10800 1 ADT} - {-131569200 -14400 0 AST} - {-116445600 -10800 1 ADT} - {-100119600 -14400 0 AST} - {-84391200 -10800 1 ADT} - {-68670000 -14400 0 AST} - {-52941600 -10800 1 ADT} - {-37220400 -14400 0 AST} - {-21492000 -10800 1 ADT} - {-5770800 -14400 0 AST} - {9957600 -10800 1 ADT} - {25678800 -14400 0 AST} - {41407200 -10800 1 ADT} - {57733200 -14400 0 AST} - {73461600 -10800 1 ADT} - {89182800 -14400 0 AST} - {94708800 -14400 0 AST} - {136360800 -10800 1 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {725860800 -14400 0 AST} - {733896060 -10800 1 ADT} - {752036460 -14400 0 AST} - {765345660 -10800 1 ADT} - {783486060 -14400 0 AST} - {796795260 -10800 1 ADT} - {814935660 -14400 0 AST} - {828849660 -10800 1 ADT} - {846385260 -14400 0 AST} - {860299260 -10800 1 ADT} - {877834860 -14400 0 AST} - {891748860 -10800 1 ADT} - {909284460 -14400 0 AST} - {923198460 -10800 1 ADT} - {941338860 -14400 0 AST} - {954648060 -10800 1 ADT} - {972788460 -14400 0 AST} - {986097660 -10800 1 ADT} - {1004238060 -14400 0 AST} - {1018152060 -10800 1 ADT} - {1035687660 -14400 0 AST} - {1049601660 -10800 1 ADT} - {1067137260 -14400 0 AST} - {1081051260 -10800 1 ADT} - {1099191660 -14400 0 AST} - {1112500860 -10800 1 ADT} - {1130641260 -14400 0 AST} - {1143950460 -10800 1 ADT} - {1162090860 -14400 0 AST} - {1167624000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Moncton) { + {-9223372036854775808 -15548 0 LMT} + {-2715882052 -18000 0 EST} + {-2131642800 -14400 0 AST} + {-1632074400 -10800 1 ADT} + {-1614798000 -14400 0 AST} + {-1167595200 -14400 0 AST} + {-1153681200 -10800 1 ADT} + {-1145822400 -14400 0 AST} + {-1122231600 -10800 1 ADT} + {-1114372800 -14400 0 AST} + {-1090782000 -10800 1 ADT} + {-1082923200 -14400 0 AST} + {-1059332400 -10800 1 ADT} + {-1051473600 -14400 0 AST} + {-1027882800 -10800 1 ADT} + {-1020024000 -14400 0 AST} + {-996433200 -10800 1 ADT} + {-988574400 -14400 0 AST} + {-965674800 -10800 1 ADT} + {-955396800 -14400 0 AST} + {-934743600 -10800 1 ADT} + {-923947200 -14400 0 AST} + {-904503600 -10800 1 ADT} + {-891892800 -14400 0 AST} + {-883598400 -14400 0 AST} + {-880221600 -10800 1 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-757368000 -14400 0 AST} + {-747252000 -10800 1 ADT} + {-733950000 -14400 0 AST} + {-715802400 -10800 1 ADT} + {-702500400 -14400 0 AST} + {-684352800 -10800 1 ADT} + {-671050800 -14400 0 AST} + {-652903200 -10800 1 ADT} + {-639601200 -14400 0 AST} + {-620848800 -10800 1 ADT} + {-608151600 -14400 0 AST} + {-589399200 -10800 1 ADT} + {-576097200 -14400 0 AST} + {-557949600 -10800 1 ADT} + {-544647600 -14400 0 AST} + {-526500000 -10800 1 ADT} + {-513198000 -14400 0 AST} + {-495050400 -10800 1 ADT} + {-481748400 -14400 0 AST} + {-463600800 -10800 1 ADT} + {-450298800 -14400 0 AST} + {-431546400 -10800 1 ADT} + {-418244400 -14400 0 AST} + {-400096800 -10800 1 ADT} + {-384375600 -14400 0 AST} + {-368647200 -10800 1 ADT} + {-352926000 -14400 0 AST} + {-337197600 -10800 1 ADT} + {-321476400 -14400 0 AST} + {-305748000 -10800 1 ADT} + {-289422000 -14400 0 AST} + {-273693600 -10800 1 ADT} + {-257972400 -14400 0 AST} + {-242244000 -10800 1 ADT} + {-226522800 -14400 0 AST} + {-210794400 -10800 1 ADT} + {-195073200 -14400 0 AST} + {-179344800 -10800 1 ADT} + {-163623600 -14400 0 AST} + {-147895200 -10800 1 ADT} + {-131569200 -14400 0 AST} + {-116445600 -10800 1 ADT} + {-100119600 -14400 0 AST} + {-84391200 -10800 1 ADT} + {-68670000 -14400 0 AST} + {-52941600 -10800 1 ADT} + {-37220400 -14400 0 AST} + {-21492000 -10800 1 ADT} + {-5770800 -14400 0 AST} + {9957600 -10800 1 ADT} + {25678800 -14400 0 AST} + {41407200 -10800 1 ADT} + {57733200 -14400 0 AST} + {73461600 -10800 1 ADT} + {89182800 -14400 0 AST} + {94708800 -14400 0 AST} + {136360800 -10800 1 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {725860800 -14400 0 AST} + {733896060 -10800 1 ADT} + {752036460 -14400 0 AST} + {765345660 -10800 1 ADT} + {783486060 -14400 0 AST} + {796795260 -10800 1 ADT} + {814935660 -14400 0 AST} + {828849660 -10800 1 ADT} + {846385260 -14400 0 AST} + {860299260 -10800 1 ADT} + {877834860 -14400 0 AST} + {891748860 -10800 1 ADT} + {909284460 -14400 0 AST} + {923198460 -10800 1 ADT} + {941338860 -14400 0 AST} + {954648060 -10800 1 ADT} + {972788460 -14400 0 AST} + {986097660 -10800 1 ADT} + {1004238060 -14400 0 AST} + {1018152060 -10800 1 ADT} + {1035687660 -14400 0 AST} + {1049601660 -10800 1 ADT} + {1067137260 -14400 0 AST} + {1081051260 -10800 1 ADT} + {1099191660 -14400 0 AST} + {1112500860 -10800 1 ADT} + {1130641260 -14400 0 AST} + {1143950460 -10800 1 ADT} + {1162090860 -14400 0 AST} + {1167624000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/America/Monterrey b/library/tzdata/America/Monterrey index 0db6106..4135884 100644 --- a/library/tzdata/America/Monterrey +++ b/library/tzdata/America/Monterrey @@ -1,218 +1,218 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Monterrey) { - {-9223372036854775808 -24076 0 LMT} - {-1514743200 -21600 0 CST} - {568015200 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {599637600 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {989136000 -18000 1 CDT} - {1001833200 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1175414400 -18000 1 CDT} - {1193554800 -21600 0 CST} - {1207468800 -18000 1 CDT} - {1225004400 -21600 0 CST} - {1238918400 -18000 1 CDT} - {1256454000 -21600 0 CST} - {1270368000 -18000 1 CDT} - {1288508400 -21600 0 CST} - {1301817600 -18000 1 CDT} - {1319958000 -21600 0 CST} - {1333267200 -18000 1 CDT} - {1351407600 -21600 0 CST} - {1365321600 -18000 1 CDT} - {1382857200 -21600 0 CST} - {1396771200 -18000 1 CDT} - {1414306800 -21600 0 CST} - {1428220800 -18000 1 CDT} - {1445756400 -21600 0 CST} - {1459670400 -18000 1 CDT} - {1477810800 -21600 0 CST} - {1491120000 -18000 1 CDT} - {1509260400 -21600 0 CST} - {1522569600 -18000 1 CDT} - {1540710000 -21600 0 CST} - {1554624000 -18000 1 CDT} - {1572159600 -21600 0 CST} - {1586073600 -18000 1 CDT} - {1603609200 -21600 0 CST} - {1617523200 -18000 1 CDT} - {1635663600 -21600 0 CST} - {1648972800 -18000 1 CDT} - {1667113200 -21600 0 CST} - {1680422400 -18000 1 CDT} - {1698562800 -21600 0 CST} - {1712476800 -18000 1 CDT} - {1730012400 -21600 0 CST} - {1743926400 -18000 1 CDT} - {1761462000 -21600 0 CST} - {1775376000 -18000 1 CDT} - {1792911600 -21600 0 CST} - {1806825600 -18000 1 CDT} - {1824966000 -21600 0 CST} - {1838275200 -18000 1 CDT} - {1856415600 -21600 0 CST} - {1869724800 -18000 1 CDT} - {1887865200 -21600 0 CST} - {1901779200 -18000 1 CDT} - {1919314800 -21600 0 CST} - {1933228800 -18000 1 CDT} - {1950764400 -21600 0 CST} - {1964678400 -18000 1 CDT} - {1982818800 -21600 0 CST} - {1996128000 -18000 1 CDT} - {2014268400 -21600 0 CST} - {2027577600 -18000 1 CDT} - {2045718000 -21600 0 CST} - {2059027200 -18000 1 CDT} - {2077167600 -21600 0 CST} - {2091081600 -18000 1 CDT} - {2108617200 -21600 0 CST} - {2122531200 -18000 1 CDT} - {2140066800 -21600 0 CST} - {2153980800 -18000 1 CDT} - {2172121200 -21600 0 CST} - {2185430400 -18000 1 CDT} - {2203570800 -21600 0 CST} - {2216880000 -18000 1 CDT} - {2235020400 -21600 0 CST} - {2248934400 -18000 1 CDT} - {2266470000 -21600 0 CST} - {2280384000 -18000 1 CDT} - {2297919600 -21600 0 CST} - {2311833600 -18000 1 CDT} - {2329369200 -21600 0 CST} - {2343283200 -18000 1 CDT} - {2361423600 -21600 0 CST} - {2374732800 -18000 1 CDT} - {2392873200 -21600 0 CST} - {2406182400 -18000 1 CDT} - {2424322800 -21600 0 CST} - {2438236800 -18000 1 CDT} - {2455772400 -21600 0 CST} - {2469686400 -18000 1 CDT} - {2487222000 -21600 0 CST} - {2501136000 -18000 1 CDT} - {2519276400 -21600 0 CST} - {2532585600 -18000 1 CDT} - {2550726000 -21600 0 CST} - {2564035200 -18000 1 CDT} - {2582175600 -21600 0 CST} - {2596089600 -18000 1 CDT} - {2613625200 -21600 0 CST} - {2627539200 -18000 1 CDT} - {2645074800 -21600 0 CST} - {2658988800 -18000 1 CDT} - {2676524400 -21600 0 CST} - {2690438400 -18000 1 CDT} - {2708578800 -21600 0 CST} - {2721888000 -18000 1 CDT} - {2740028400 -21600 0 CST} - {2753337600 -18000 1 CDT} - {2771478000 -21600 0 CST} - {2785392000 -18000 1 CDT} - {2802927600 -21600 0 CST} - {2816841600 -18000 1 CDT} - {2834377200 -21600 0 CST} - {2848291200 -18000 1 CDT} - {2866431600 -21600 0 CST} - {2879740800 -18000 1 CDT} - {2897881200 -21600 0 CST} - {2911190400 -18000 1 CDT} - {2929330800 -21600 0 CST} - {2942640000 -18000 1 CDT} - {2960780400 -21600 0 CST} - {2974694400 -18000 1 CDT} - {2992230000 -21600 0 CST} - {3006144000 -18000 1 CDT} - {3023679600 -21600 0 CST} - {3037593600 -18000 1 CDT} - {3055734000 -21600 0 CST} - {3069043200 -18000 1 CDT} - {3087183600 -21600 0 CST} - {3100492800 -18000 1 CDT} - {3118633200 -21600 0 CST} - {3132547200 -18000 1 CDT} - {3150082800 -21600 0 CST} - {3163996800 -18000 1 CDT} - {3181532400 -21600 0 CST} - {3195446400 -18000 1 CDT} - {3212982000 -21600 0 CST} - {3226896000 -18000 1 CDT} - {3245036400 -21600 0 CST} - {3258345600 -18000 1 CDT} - {3276486000 -21600 0 CST} - {3289795200 -18000 1 CDT} - {3307935600 -21600 0 CST} - {3321849600 -18000 1 CDT} - {3339385200 -21600 0 CST} - {3353299200 -18000 1 CDT} - {3370834800 -21600 0 CST} - {3384748800 -18000 1 CDT} - {3402889200 -21600 0 CST} - {3416198400 -18000 1 CDT} - {3434338800 -21600 0 CST} - {3447648000 -18000 1 CDT} - {3465788400 -21600 0 CST} - {3479702400 -18000 1 CDT} - {3497238000 -21600 0 CST} - {3511152000 -18000 1 CDT} - {3528687600 -21600 0 CST} - {3542601600 -18000 1 CDT} - {3560137200 -21600 0 CST} - {3574051200 -18000 1 CDT} - {3592191600 -21600 0 CST} - {3605500800 -18000 1 CDT} - {3623641200 -21600 0 CST} - {3636950400 -18000 1 CDT} - {3655090800 -21600 0 CST} - {3669004800 -18000 1 CDT} - {3686540400 -21600 0 CST} - {3700454400 -18000 1 CDT} - {3717990000 -21600 0 CST} - {3731904000 -18000 1 CDT} - {3750044400 -21600 0 CST} - {3763353600 -18000 1 CDT} - {3781494000 -21600 0 CST} - {3794803200 -18000 1 CDT} - {3812943600 -21600 0 CST} - {3826252800 -18000 1 CDT} - {3844393200 -21600 0 CST} - {3858307200 -18000 1 CDT} - {3875842800 -21600 0 CST} - {3889756800 -18000 1 CDT} - {3907292400 -21600 0 CST} - {3921206400 -18000 1 CDT} - {3939346800 -21600 0 CST} - {3952656000 -18000 1 CDT} - {3970796400 -21600 0 CST} - {3984105600 -18000 1 CDT} - {4002246000 -21600 0 CST} - {4016160000 -18000 1 CDT} - {4033695600 -21600 0 CST} - {4047609600 -18000 1 CDT} - {4065145200 -21600 0 CST} - {4079059200 -18000 1 CDT} - {4096594800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Monterrey) { + {-9223372036854775808 -24076 0 LMT} + {-1514743200 -21600 0 CST} + {568015200 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {599637600 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {989136000 -18000 1 CDT} + {1001833200 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1175414400 -18000 1 CDT} + {1193554800 -21600 0 CST} + {1207468800 -18000 1 CDT} + {1225004400 -21600 0 CST} + {1238918400 -18000 1 CDT} + {1256454000 -21600 0 CST} + {1270368000 -18000 1 CDT} + {1288508400 -21600 0 CST} + {1301817600 -18000 1 CDT} + {1319958000 -21600 0 CST} + {1333267200 -18000 1 CDT} + {1351407600 -21600 0 CST} + {1365321600 -18000 1 CDT} + {1382857200 -21600 0 CST} + {1396771200 -18000 1 CDT} + {1414306800 -21600 0 CST} + {1428220800 -18000 1 CDT} + {1445756400 -21600 0 CST} + {1459670400 -18000 1 CDT} + {1477810800 -21600 0 CST} + {1491120000 -18000 1 CDT} + {1509260400 -21600 0 CST} + {1522569600 -18000 1 CDT} + {1540710000 -21600 0 CST} + {1554624000 -18000 1 CDT} + {1572159600 -21600 0 CST} + {1586073600 -18000 1 CDT} + {1603609200 -21600 0 CST} + {1617523200 -18000 1 CDT} + {1635663600 -21600 0 CST} + {1648972800 -18000 1 CDT} + {1667113200 -21600 0 CST} + {1680422400 -18000 1 CDT} + {1698562800 -21600 0 CST} + {1712476800 -18000 1 CDT} + {1730012400 -21600 0 CST} + {1743926400 -18000 1 CDT} + {1761462000 -21600 0 CST} + {1775376000 -18000 1 CDT} + {1792911600 -21600 0 CST} + {1806825600 -18000 1 CDT} + {1824966000 -21600 0 CST} + {1838275200 -18000 1 CDT} + {1856415600 -21600 0 CST} + {1869724800 -18000 1 CDT} + {1887865200 -21600 0 CST} + {1901779200 -18000 1 CDT} + {1919314800 -21600 0 CST} + {1933228800 -18000 1 CDT} + {1950764400 -21600 0 CST} + {1964678400 -18000 1 CDT} + {1982818800 -21600 0 CST} + {1996128000 -18000 1 CDT} + {2014268400 -21600 0 CST} + {2027577600 -18000 1 CDT} + {2045718000 -21600 0 CST} + {2059027200 -18000 1 CDT} + {2077167600 -21600 0 CST} + {2091081600 -18000 1 CDT} + {2108617200 -21600 0 CST} + {2122531200 -18000 1 CDT} + {2140066800 -21600 0 CST} + {2153980800 -18000 1 CDT} + {2172121200 -21600 0 CST} + {2185430400 -18000 1 CDT} + {2203570800 -21600 0 CST} + {2216880000 -18000 1 CDT} + {2235020400 -21600 0 CST} + {2248934400 -18000 1 CDT} + {2266470000 -21600 0 CST} + {2280384000 -18000 1 CDT} + {2297919600 -21600 0 CST} + {2311833600 -18000 1 CDT} + {2329369200 -21600 0 CST} + {2343283200 -18000 1 CDT} + {2361423600 -21600 0 CST} + {2374732800 -18000 1 CDT} + {2392873200 -21600 0 CST} + {2406182400 -18000 1 CDT} + {2424322800 -21600 0 CST} + {2438236800 -18000 1 CDT} + {2455772400 -21600 0 CST} + {2469686400 -18000 1 CDT} + {2487222000 -21600 0 CST} + {2501136000 -18000 1 CDT} + {2519276400 -21600 0 CST} + {2532585600 -18000 1 CDT} + {2550726000 -21600 0 CST} + {2564035200 -18000 1 CDT} + {2582175600 -21600 0 CST} + {2596089600 -18000 1 CDT} + {2613625200 -21600 0 CST} + {2627539200 -18000 1 CDT} + {2645074800 -21600 0 CST} + {2658988800 -18000 1 CDT} + {2676524400 -21600 0 CST} + {2690438400 -18000 1 CDT} + {2708578800 -21600 0 CST} + {2721888000 -18000 1 CDT} + {2740028400 -21600 0 CST} + {2753337600 -18000 1 CDT} + {2771478000 -21600 0 CST} + {2785392000 -18000 1 CDT} + {2802927600 -21600 0 CST} + {2816841600 -18000 1 CDT} + {2834377200 -21600 0 CST} + {2848291200 -18000 1 CDT} + {2866431600 -21600 0 CST} + {2879740800 -18000 1 CDT} + {2897881200 -21600 0 CST} + {2911190400 -18000 1 CDT} + {2929330800 -21600 0 CST} + {2942640000 -18000 1 CDT} + {2960780400 -21600 0 CST} + {2974694400 -18000 1 CDT} + {2992230000 -21600 0 CST} + {3006144000 -18000 1 CDT} + {3023679600 -21600 0 CST} + {3037593600 -18000 1 CDT} + {3055734000 -21600 0 CST} + {3069043200 -18000 1 CDT} + {3087183600 -21600 0 CST} + {3100492800 -18000 1 CDT} + {3118633200 -21600 0 CST} + {3132547200 -18000 1 CDT} + {3150082800 -21600 0 CST} + {3163996800 -18000 1 CDT} + {3181532400 -21600 0 CST} + {3195446400 -18000 1 CDT} + {3212982000 -21600 0 CST} + {3226896000 -18000 1 CDT} + {3245036400 -21600 0 CST} + {3258345600 -18000 1 CDT} + {3276486000 -21600 0 CST} + {3289795200 -18000 1 CDT} + {3307935600 -21600 0 CST} + {3321849600 -18000 1 CDT} + {3339385200 -21600 0 CST} + {3353299200 -18000 1 CDT} + {3370834800 -21600 0 CST} + {3384748800 -18000 1 CDT} + {3402889200 -21600 0 CST} + {3416198400 -18000 1 CDT} + {3434338800 -21600 0 CST} + {3447648000 -18000 1 CDT} + {3465788400 -21600 0 CST} + {3479702400 -18000 1 CDT} + {3497238000 -21600 0 CST} + {3511152000 -18000 1 CDT} + {3528687600 -21600 0 CST} + {3542601600 -18000 1 CDT} + {3560137200 -21600 0 CST} + {3574051200 -18000 1 CDT} + {3592191600 -21600 0 CST} + {3605500800 -18000 1 CDT} + {3623641200 -21600 0 CST} + {3636950400 -18000 1 CDT} + {3655090800 -21600 0 CST} + {3669004800 -18000 1 CDT} + {3686540400 -21600 0 CST} + {3700454400 -18000 1 CDT} + {3717990000 -21600 0 CST} + {3731904000 -18000 1 CDT} + {3750044400 -21600 0 CST} + {3763353600 -18000 1 CDT} + {3781494000 -21600 0 CST} + {3794803200 -18000 1 CDT} + {3812943600 -21600 0 CST} + {3826252800 -18000 1 CDT} + {3844393200 -21600 0 CST} + {3858307200 -18000 1 CDT} + {3875842800 -21600 0 CST} + {3889756800 -18000 1 CDT} + {3907292400 -21600 0 CST} + {3921206400 -18000 1 CDT} + {3939346800 -21600 0 CST} + {3952656000 -18000 1 CDT} + {3970796400 -21600 0 CST} + {3984105600 -18000 1 CDT} + {4002246000 -21600 0 CST} + {4016160000 -18000 1 CDT} + {4033695600 -21600 0 CST} + {4047609600 -18000 1 CDT} + {4065145200 -21600 0 CST} + {4079059200 -18000 1 CDT} + {4096594800 -21600 0 CST} +} diff --git a/library/tzdata/America/Montevideo b/library/tzdata/America/Montevideo index 7741fd2..aa469b9 100644 --- a/library/tzdata/America/Montevideo +++ b/library/tzdata/America/Montevideo @@ -1,261 +1,261 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Montevideo) { - {-9223372036854775808 -13484 0 LMT} - {-2256668116 -13484 0 MMT} - {-1567455316 -12600 0 UYT} - {-1459542600 -10800 1 UYHST} - {-1443819600 -12600 0 UYT} - {-1428006600 -10800 1 UYHST} - {-1412283600 -12600 0 UYT} - {-1396470600 -10800 1 UYHST} - {-1380747600 -12600 0 UYT} - {-1141590600 -10800 1 UYHST} - {-1128286800 -12600 0 UYT} - {-1110141000 -10800 1 UYHST} - {-1096837200 -12600 0 UYT} - {-1078691400 -10800 1 UYHST} - {-1065387600 -12600 0 UYT} - {-1046637000 -10800 1 UYHST} - {-1033938000 -12600 0 UYT} - {-1015187400 -10800 1 UYHST} - {-1002488400 -12600 0 UYT} - {-983737800 -10800 1 UYHST} - {-971038800 -12600 0 UYT} - {-952288200 -10800 1 UYHST} - {-938984400 -12600 0 UYT} - {-920838600 -10800 1 UYHST} - {-907534800 -12600 0 UYT} - {-896819400 -10800 1 UYHST} - {-853623000 -10800 0 UYT} - {-853621200 -7200 1 UYST} - {-845848800 -10800 0 UYT} - {-334789200 -7200 1 UYST} - {-319672800 -10800 0 UYT} - {-314226000 -7200 1 UYST} - {-309996000 -10800 0 UYT} - {-149720400 -7200 1 UYST} - {-134604000 -10800 0 UYT} - {-118270800 -7200 1 UYST} - {-100044000 -10800 0 UYT} - {-86821200 -7200 1 UYST} - {-68508000 -10800 0 UYT} - {-50446800 -9000 1 UYHST} - {-34119000 -10800 0 UYT} - {-18910800 -9000 1 UYHST} - {-2583000 -10800 0 UYT} - {12625200 -9000 1 UYHST} - {28953000 -10800 0 UYT} - {72932400 -7200 1 UYST} - {82692000 -10800 0 UYT} - {132116400 -9000 1 UYHST} - {156911400 -7200 1 UYST} - {212983200 -10800 0 UYT} - {250052400 -7200 1 UYST} - {260244000 -10800 0 UYT} - {307594800 -7200 1 UYST} - {325994400 -10800 0 UYT} - {566449200 -7200 1 UYST} - {574308000 -10800 0 UYT} - {597812400 -7200 1 UYST} - {605671200 -10800 0 UYT} - {625633200 -7200 1 UYST} - {636516000 -10800 0 UYT} - {656478000 -7200 1 UYST} - {667965600 -10800 0 UYT} - {688532400 -7200 1 UYST} - {699415200 -10800 0 UYT} - {719377200 -7200 1 UYST} - {730864800 -10800 0 UYT} - {1095562800 -7200 1 UYST} - {1111896000 -10800 0 UYT} - {1128834000 -7200 1 UYST} - {1142136000 -10800 0 UYT} - {1159678800 -7200 1 UYST} - {1173585600 -10800 0 UYT} - {1191733200 -7200 1 UYST} - {1205035200 -10800 0 UYT} - {1223182800 -7200 1 UYST} - {1236484800 -10800 0 UYT} - {1254632400 -7200 1 UYST} - {1268539200 -10800 0 UYT} - {1286082000 -7200 1 UYST} - {1299988800 -10800 0 UYT} - {1317531600 -7200 1 UYST} - {1331438400 -10800 0 UYT} - {1349586000 -7200 1 UYST} - {1362888000 -10800 0 UYT} - {1381035600 -7200 1 UYST} - {1394337600 -10800 0 UYT} - {1412485200 -7200 1 UYST} - {1425787200 -10800 0 UYT} - {1443934800 -7200 1 UYST} - {1457841600 -10800 0 UYT} - {1475384400 -7200 1 UYST} - {1489291200 -10800 0 UYT} - {1506834000 -7200 1 UYST} - {1520740800 -10800 0 UYT} - {1538888400 -7200 1 UYST} - {1552190400 -10800 0 UYT} - {1570338000 -7200 1 UYST} - {1583640000 -10800 0 UYT} - {1601787600 -7200 1 UYST} - {1615694400 -10800 0 UYT} - {1633237200 -7200 1 UYST} - {1647144000 -10800 0 UYT} - {1664686800 -7200 1 UYST} - {1678593600 -10800 0 UYT} - {1696136400 -7200 1 UYST} - {1710043200 -10800 0 UYT} - {1728190800 -7200 1 UYST} - {1741492800 -10800 0 UYT} - {1759640400 -7200 1 UYST} - {1772942400 -10800 0 UYT} - {1791090000 -7200 1 UYST} - {1804996800 -10800 0 UYT} - {1822539600 -7200 1 UYST} - {1836446400 -10800 0 UYT} - {1853989200 -7200 1 UYST} - {1867896000 -10800 0 UYT} - {1886043600 -7200 1 UYST} - {1899345600 -10800 0 UYT} - {1917493200 -7200 1 UYST} - {1930795200 -10800 0 UYT} - {1948942800 -7200 1 UYST} - {1962849600 -10800 0 UYT} - {1980392400 -7200 1 UYST} - {1994299200 -10800 0 UYT} - {2011842000 -7200 1 UYST} - {2025748800 -10800 0 UYT} - {2043291600 -7200 1 UYST} - {2057198400 -10800 0 UYT} - {2075346000 -7200 1 UYST} - {2088648000 -10800 0 UYT} - {2106795600 -7200 1 UYST} - {2120097600 -10800 0 UYT} - {2138245200 -7200 1 UYST} - {2152152000 -10800 0 UYT} - {2169694800 -7200 1 UYST} - {2183601600 -10800 0 UYT} - {2201144400 -7200 1 UYST} - {2215051200 -10800 0 UYT} - {2233198800 -7200 1 UYST} - {2246500800 -10800 0 UYT} - {2264648400 -7200 1 UYST} - {2277950400 -10800 0 UYT} - {2296098000 -7200 1 UYST} - {2309400000 -10800 0 UYT} - {2327547600 -7200 1 UYST} - {2341454400 -10800 0 UYT} - {2358997200 -7200 1 UYST} - {2372904000 -10800 0 UYT} - {2390446800 -7200 1 UYST} - {2404353600 -10800 0 UYT} - {2422501200 -7200 1 UYST} - {2435803200 -10800 0 UYT} - {2453950800 -7200 1 UYST} - {2467252800 -10800 0 UYT} - {2485400400 -7200 1 UYST} - {2499307200 -10800 0 UYT} - {2516850000 -7200 1 UYST} - {2530756800 -10800 0 UYT} - {2548299600 -7200 1 UYST} - {2562206400 -10800 0 UYT} - {2579749200 -7200 1 UYST} - {2593656000 -10800 0 UYT} - {2611803600 -7200 1 UYST} - {2625105600 -10800 0 UYT} - {2643253200 -7200 1 UYST} - {2656555200 -10800 0 UYT} - {2674702800 -7200 1 UYST} - {2688609600 -10800 0 UYT} - {2706152400 -7200 1 UYST} - {2720059200 -10800 0 UYT} - {2737602000 -7200 1 UYST} - {2751508800 -10800 0 UYT} - {2769656400 -7200 1 UYST} - {2782958400 -10800 0 UYT} - {2801106000 -7200 1 UYST} - {2814408000 -10800 0 UYT} - {2832555600 -7200 1 UYST} - {2846462400 -10800 0 UYT} - {2864005200 -7200 1 UYST} - {2877912000 -10800 0 UYT} - {2895454800 -7200 1 UYST} - {2909361600 -10800 0 UYT} - {2926904400 -7200 1 UYST} - {2940811200 -10800 0 UYT} - {2958958800 -7200 1 UYST} - {2972260800 -10800 0 UYT} - {2990408400 -7200 1 UYST} - {3003710400 -10800 0 UYT} - {3021858000 -7200 1 UYST} - {3035764800 -10800 0 UYT} - {3053307600 -7200 1 UYST} - {3067214400 -10800 0 UYT} - {3084757200 -7200 1 UYST} - {3098664000 -10800 0 UYT} - {3116811600 -7200 1 UYST} - {3130113600 -10800 0 UYT} - {3148261200 -7200 1 UYST} - {3161563200 -10800 0 UYT} - {3179710800 -7200 1 UYST} - {3193012800 -10800 0 UYT} - {3211160400 -7200 1 UYST} - {3225067200 -10800 0 UYT} - {3242610000 -7200 1 UYST} - {3256516800 -10800 0 UYT} - {3274059600 -7200 1 UYST} - {3287966400 -10800 0 UYT} - {3306114000 -7200 1 UYST} - {3319416000 -10800 0 UYT} - {3337563600 -7200 1 UYST} - {3350865600 -10800 0 UYT} - {3369013200 -7200 1 UYST} - {3382920000 -10800 0 UYT} - {3400462800 -7200 1 UYST} - {3414369600 -10800 0 UYT} - {3431912400 -7200 1 UYST} - {3445819200 -10800 0 UYT} - {3463362000 -7200 1 UYST} - {3477268800 -10800 0 UYT} - {3495416400 -7200 1 UYST} - {3508718400 -10800 0 UYT} - {3526866000 -7200 1 UYST} - {3540168000 -10800 0 UYT} - {3558315600 -7200 1 UYST} - {3572222400 -10800 0 UYT} - {3589765200 -7200 1 UYST} - {3603672000 -10800 0 UYT} - {3621214800 -7200 1 UYST} - {3635121600 -10800 0 UYT} - {3653269200 -7200 1 UYST} - {3666571200 -10800 0 UYT} - {3684718800 -7200 1 UYST} - {3698020800 -10800 0 UYT} - {3716168400 -7200 1 UYST} - {3730075200 -10800 0 UYT} - {3747618000 -7200 1 UYST} - {3761524800 -10800 0 UYT} - {3779067600 -7200 1 UYST} - {3792974400 -10800 0 UYT} - {3810517200 -7200 1 UYST} - {3824424000 -10800 0 UYT} - {3842571600 -7200 1 UYST} - {3855873600 -10800 0 UYT} - {3874021200 -7200 1 UYST} - {3887323200 -10800 0 UYT} - {3905470800 -7200 1 UYST} - {3919377600 -10800 0 UYT} - {3936920400 -7200 1 UYST} - {3950827200 -10800 0 UYT} - {3968370000 -7200 1 UYST} - {3982276800 -10800 0 UYT} - {4000424400 -7200 1 UYST} - {4013726400 -10800 0 UYT} - {4031874000 -7200 1 UYST} - {4045176000 -10800 0 UYT} - {4063323600 -7200 1 UYST} - {4076625600 -10800 0 UYT} - {4094773200 -7200 1 UYST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Montevideo) { + {-9223372036854775808 -13484 0 LMT} + {-2256668116 -13484 0 MMT} + {-1567455316 -12600 0 UYT} + {-1459542600 -10800 1 UYHST} + {-1443819600 -12600 0 UYT} + {-1428006600 -10800 1 UYHST} + {-1412283600 -12600 0 UYT} + {-1396470600 -10800 1 UYHST} + {-1380747600 -12600 0 UYT} + {-1141590600 -10800 1 UYHST} + {-1128286800 -12600 0 UYT} + {-1110141000 -10800 1 UYHST} + {-1096837200 -12600 0 UYT} + {-1078691400 -10800 1 UYHST} + {-1065387600 -12600 0 UYT} + {-1046637000 -10800 1 UYHST} + {-1033938000 -12600 0 UYT} + {-1015187400 -10800 1 UYHST} + {-1002488400 -12600 0 UYT} + {-983737800 -10800 1 UYHST} + {-971038800 -12600 0 UYT} + {-952288200 -10800 1 UYHST} + {-938984400 -12600 0 UYT} + {-920838600 -10800 1 UYHST} + {-907534800 -12600 0 UYT} + {-896819400 -10800 1 UYHST} + {-853623000 -10800 0 UYT} + {-853621200 -7200 1 UYST} + {-845848800 -10800 0 UYT} + {-334789200 -7200 1 UYST} + {-319672800 -10800 0 UYT} + {-314226000 -7200 1 UYST} + {-309996000 -10800 0 UYT} + {-149720400 -7200 1 UYST} + {-134604000 -10800 0 UYT} + {-118270800 -7200 1 UYST} + {-100044000 -10800 0 UYT} + {-86821200 -7200 1 UYST} + {-68508000 -10800 0 UYT} + {-50446800 -9000 1 UYHST} + {-34119000 -10800 0 UYT} + {-18910800 -9000 1 UYHST} + {-2583000 -10800 0 UYT} + {12625200 -9000 1 UYHST} + {28953000 -10800 0 UYT} + {72932400 -7200 1 UYST} + {82692000 -10800 0 UYT} + {132116400 -9000 1 UYHST} + {156911400 -7200 1 UYST} + {212983200 -10800 0 UYT} + {250052400 -7200 1 UYST} + {260244000 -10800 0 UYT} + {307594800 -7200 1 UYST} + {325994400 -10800 0 UYT} + {566449200 -7200 1 UYST} + {574308000 -10800 0 UYT} + {597812400 -7200 1 UYST} + {605671200 -10800 0 UYT} + {625633200 -7200 1 UYST} + {636516000 -10800 0 UYT} + {656478000 -7200 1 UYST} + {667965600 -10800 0 UYT} + {688532400 -7200 1 UYST} + {699415200 -10800 0 UYT} + {719377200 -7200 1 UYST} + {730864800 -10800 0 UYT} + {1095562800 -7200 1 UYST} + {1111896000 -10800 0 UYT} + {1128834000 -7200 1 UYST} + {1142136000 -10800 0 UYT} + {1159678800 -7200 1 UYST} + {1173585600 -10800 0 UYT} + {1191733200 -7200 1 UYST} + {1205035200 -10800 0 UYT} + {1223182800 -7200 1 UYST} + {1236484800 -10800 0 UYT} + {1254632400 -7200 1 UYST} + {1268539200 -10800 0 UYT} + {1286082000 -7200 1 UYST} + {1299988800 -10800 0 UYT} + {1317531600 -7200 1 UYST} + {1331438400 -10800 0 UYT} + {1349586000 -7200 1 UYST} + {1362888000 -10800 0 UYT} + {1381035600 -7200 1 UYST} + {1394337600 -10800 0 UYT} + {1412485200 -7200 1 UYST} + {1425787200 -10800 0 UYT} + {1443934800 -7200 1 UYST} + {1457841600 -10800 0 UYT} + {1475384400 -7200 1 UYST} + {1489291200 -10800 0 UYT} + {1506834000 -7200 1 UYST} + {1520740800 -10800 0 UYT} + {1538888400 -7200 1 UYST} + {1552190400 -10800 0 UYT} + {1570338000 -7200 1 UYST} + {1583640000 -10800 0 UYT} + {1601787600 -7200 1 UYST} + {1615694400 -10800 0 UYT} + {1633237200 -7200 1 UYST} + {1647144000 -10800 0 UYT} + {1664686800 -7200 1 UYST} + {1678593600 -10800 0 UYT} + {1696136400 -7200 1 UYST} + {1710043200 -10800 0 UYT} + {1728190800 -7200 1 UYST} + {1741492800 -10800 0 UYT} + {1759640400 -7200 1 UYST} + {1772942400 -10800 0 UYT} + {1791090000 -7200 1 UYST} + {1804996800 -10800 0 UYT} + {1822539600 -7200 1 UYST} + {1836446400 -10800 0 UYT} + {1853989200 -7200 1 UYST} + {1867896000 -10800 0 UYT} + {1886043600 -7200 1 UYST} + {1899345600 -10800 0 UYT} + {1917493200 -7200 1 UYST} + {1930795200 -10800 0 UYT} + {1948942800 -7200 1 UYST} + {1962849600 -10800 0 UYT} + {1980392400 -7200 1 UYST} + {1994299200 -10800 0 UYT} + {2011842000 -7200 1 UYST} + {2025748800 -10800 0 UYT} + {2043291600 -7200 1 UYST} + {2057198400 -10800 0 UYT} + {2075346000 -7200 1 UYST} + {2088648000 -10800 0 UYT} + {2106795600 -7200 1 UYST} + {2120097600 -10800 0 UYT} + {2138245200 -7200 1 UYST} + {2152152000 -10800 0 UYT} + {2169694800 -7200 1 UYST} + {2183601600 -10800 0 UYT} + {2201144400 -7200 1 UYST} + {2215051200 -10800 0 UYT} + {2233198800 -7200 1 UYST} + {2246500800 -10800 0 UYT} + {2264648400 -7200 1 UYST} + {2277950400 -10800 0 UYT} + {2296098000 -7200 1 UYST} + {2309400000 -10800 0 UYT} + {2327547600 -7200 1 UYST} + {2341454400 -10800 0 UYT} + {2358997200 -7200 1 UYST} + {2372904000 -10800 0 UYT} + {2390446800 -7200 1 UYST} + {2404353600 -10800 0 UYT} + {2422501200 -7200 1 UYST} + {2435803200 -10800 0 UYT} + {2453950800 -7200 1 UYST} + {2467252800 -10800 0 UYT} + {2485400400 -7200 1 UYST} + {2499307200 -10800 0 UYT} + {2516850000 -7200 1 UYST} + {2530756800 -10800 0 UYT} + {2548299600 -7200 1 UYST} + {2562206400 -10800 0 UYT} + {2579749200 -7200 1 UYST} + {2593656000 -10800 0 UYT} + {2611803600 -7200 1 UYST} + {2625105600 -10800 0 UYT} + {2643253200 -7200 1 UYST} + {2656555200 -10800 0 UYT} + {2674702800 -7200 1 UYST} + {2688609600 -10800 0 UYT} + {2706152400 -7200 1 UYST} + {2720059200 -10800 0 UYT} + {2737602000 -7200 1 UYST} + {2751508800 -10800 0 UYT} + {2769656400 -7200 1 UYST} + {2782958400 -10800 0 UYT} + {2801106000 -7200 1 UYST} + {2814408000 -10800 0 UYT} + {2832555600 -7200 1 UYST} + {2846462400 -10800 0 UYT} + {2864005200 -7200 1 UYST} + {2877912000 -10800 0 UYT} + {2895454800 -7200 1 UYST} + {2909361600 -10800 0 UYT} + {2926904400 -7200 1 UYST} + {2940811200 -10800 0 UYT} + {2958958800 -7200 1 UYST} + {2972260800 -10800 0 UYT} + {2990408400 -7200 1 UYST} + {3003710400 -10800 0 UYT} + {3021858000 -7200 1 UYST} + {3035764800 -10800 0 UYT} + {3053307600 -7200 1 UYST} + {3067214400 -10800 0 UYT} + {3084757200 -7200 1 UYST} + {3098664000 -10800 0 UYT} + {3116811600 -7200 1 UYST} + {3130113600 -10800 0 UYT} + {3148261200 -7200 1 UYST} + {3161563200 -10800 0 UYT} + {3179710800 -7200 1 UYST} + {3193012800 -10800 0 UYT} + {3211160400 -7200 1 UYST} + {3225067200 -10800 0 UYT} + {3242610000 -7200 1 UYST} + {3256516800 -10800 0 UYT} + {3274059600 -7200 1 UYST} + {3287966400 -10800 0 UYT} + {3306114000 -7200 1 UYST} + {3319416000 -10800 0 UYT} + {3337563600 -7200 1 UYST} + {3350865600 -10800 0 UYT} + {3369013200 -7200 1 UYST} + {3382920000 -10800 0 UYT} + {3400462800 -7200 1 UYST} + {3414369600 -10800 0 UYT} + {3431912400 -7200 1 UYST} + {3445819200 -10800 0 UYT} + {3463362000 -7200 1 UYST} + {3477268800 -10800 0 UYT} + {3495416400 -7200 1 UYST} + {3508718400 -10800 0 UYT} + {3526866000 -7200 1 UYST} + {3540168000 -10800 0 UYT} + {3558315600 -7200 1 UYST} + {3572222400 -10800 0 UYT} + {3589765200 -7200 1 UYST} + {3603672000 -10800 0 UYT} + {3621214800 -7200 1 UYST} + {3635121600 -10800 0 UYT} + {3653269200 -7200 1 UYST} + {3666571200 -10800 0 UYT} + {3684718800 -7200 1 UYST} + {3698020800 -10800 0 UYT} + {3716168400 -7200 1 UYST} + {3730075200 -10800 0 UYT} + {3747618000 -7200 1 UYST} + {3761524800 -10800 0 UYT} + {3779067600 -7200 1 UYST} + {3792974400 -10800 0 UYT} + {3810517200 -7200 1 UYST} + {3824424000 -10800 0 UYT} + {3842571600 -7200 1 UYST} + {3855873600 -10800 0 UYT} + {3874021200 -7200 1 UYST} + {3887323200 -10800 0 UYT} + {3905470800 -7200 1 UYST} + {3919377600 -10800 0 UYT} + {3936920400 -7200 1 UYST} + {3950827200 -10800 0 UYT} + {3968370000 -7200 1 UYST} + {3982276800 -10800 0 UYT} + {4000424400 -7200 1 UYST} + {4013726400 -10800 0 UYT} + {4031874000 -7200 1 UYST} + {4045176000 -10800 0 UYT} + {4063323600 -7200 1 UYST} + {4076625600 -10800 0 UYT} + {4094773200 -7200 1 UYST} +} diff --git a/library/tzdata/America/Montreal b/library/tzdata/America/Montreal index 47e60ea..b9535eb 100644 --- a/library/tzdata/America/Montreal +++ b/library/tzdata/America/Montreal @@ -1,366 +1,366 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Montreal) { - {-9223372036854775808 -17656 0 LMT} - {-2713892744 -18000 0 EST} - {-1665334800 -14400 1 EDT} - {-1662753600 -18000 0 EST} - {-1640977200 -18000 0 EST} - {-1632070800 -14400 1 EDT} - {-1614794400 -18000 0 EST} - {-1609441200 -18000 0 EST} - {-1601742600 -14400 1 EDT} - {-1583775000 -18000 0 EST} - {-1567355400 -14400 1 EDT} - {-1554053400 -18000 0 EST} - {-1535907600 -14400 1 EDT} - {-1522603800 -18000 0 EST} - {-1504458000 -14400 1 EDT} - {-1491154200 -18000 0 EST} - {-1439830800 -14400 1 EDT} - {-1428255000 -18000 0 EST} - {-1409504400 -14400 1 EDT} - {-1396805400 -18000 0 EST} - {-1378054800 -14400 1 EDT} - {-1365355800 -18000 0 EST} - {-1346612400 -14400 1 EDT} - {-1333915200 -18000 0 EST} - {-1315162800 -14400 1 EDT} - {-1301860800 -18000 0 EST} - {-1283713200 -14400 1 EDT} - {-1270411200 -18000 0 EST} - {-1252263600 -14400 1 EDT} - {-1238961600 -18000 0 EST} - {-1220814000 -14400 1 EDT} - {-1207512000 -18000 0 EST} - {-1188759600 -14400 1 EDT} - {-1176062400 -18000 0 EST} - {-1157310000 -14400 1 EDT} - {-1144008000 -18000 0 EST} - {-1125860400 -14400 1 EDT} - {-1112558400 -18000 0 EST} - {-1094410800 -14400 1 EDT} - {-1081108800 -18000 0 EST} - {-1062961200 -14400 1 EDT} - {-1049659200 -18000 0 EST} - {-1031511600 -14400 1 EDT} - {-1018209600 -18000 0 EST} - {-1000062000 -14400 1 EDT} - {-986760000 -18000 0 EST} - {-968007600 -14400 1 EDT} - {-955310400 -18000 0 EST} - {-936558000 -14400 1 EDT} - {-880218000 -14400 0 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-757364400 -18000 0 EST} - {-747248400 -14400 1 EDT} - {-733946400 -18000 0 EST} - {-715798800 -14400 1 EDT} - {-702496800 -18000 0 EST} - {-684349200 -14400 1 EDT} - {-671047200 -18000 0 EST} - {-652899600 -14400 1 EDT} - {-636573600 -18000 0 EST} - {-620845200 -14400 1 EDT} - {-605124000 -18000 0 EST} - {-589395600 -14400 1 EDT} - {-576093600 -18000 0 EST} - {-557946000 -14400 1 EDT} - {-544644000 -18000 0 EST} - {-526496400 -14400 1 EDT} - {-513194400 -18000 0 EST} - {-495046800 -14400 1 EDT} - {-481744800 -18000 0 EST} - {-463597200 -14400 1 EDT} - {-450295200 -18000 0 EST} - {-431542800 -14400 1 EDT} - {-418240800 -18000 0 EST} - {-400093200 -14400 1 EDT} - {-384372000 -18000 0 EST} - {-368643600 -14400 1 EDT} - {-352922400 -18000 0 EST} - {-337194000 -14400 1 EDT} - {-321472800 -18000 0 EST} - {-305744400 -14400 1 EDT} - {-289418400 -18000 0 EST} - {-273690000 -14400 1 EDT} - {-257968800 -18000 0 EST} - {-242240400 -14400 1 EDT} - {-226519200 -18000 0 EST} - {-210790800 -14400 1 EDT} - {-195069600 -18000 0 EST} - {-179341200 -14400 1 EDT} - {-163620000 -18000 0 EST} - {-147891600 -14400 1 EDT} - {-131565600 -18000 0 EST} - {-116442000 -14400 1 EDT} - {-100116000 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126248400 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Montreal) { + {-9223372036854775808 -17656 0 LMT} + {-2713892744 -18000 0 EST} + {-1665334800 -14400 1 EDT} + {-1662753600 -18000 0 EST} + {-1640977200 -18000 0 EST} + {-1632070800 -14400 1 EDT} + {-1614794400 -18000 0 EST} + {-1609441200 -18000 0 EST} + {-1601742600 -14400 1 EDT} + {-1583775000 -18000 0 EST} + {-1567355400 -14400 1 EDT} + {-1554053400 -18000 0 EST} + {-1535907600 -14400 1 EDT} + {-1522603800 -18000 0 EST} + {-1504458000 -14400 1 EDT} + {-1491154200 -18000 0 EST} + {-1439830800 -14400 1 EDT} + {-1428255000 -18000 0 EST} + {-1409504400 -14400 1 EDT} + {-1396805400 -18000 0 EST} + {-1378054800 -14400 1 EDT} + {-1365355800 -18000 0 EST} + {-1346612400 -14400 1 EDT} + {-1333915200 -18000 0 EST} + {-1315162800 -14400 1 EDT} + {-1301860800 -18000 0 EST} + {-1283713200 -14400 1 EDT} + {-1270411200 -18000 0 EST} + {-1252263600 -14400 1 EDT} + {-1238961600 -18000 0 EST} + {-1220814000 -14400 1 EDT} + {-1207512000 -18000 0 EST} + {-1188759600 -14400 1 EDT} + {-1176062400 -18000 0 EST} + {-1157310000 -14400 1 EDT} + {-1144008000 -18000 0 EST} + {-1125860400 -14400 1 EDT} + {-1112558400 -18000 0 EST} + {-1094410800 -14400 1 EDT} + {-1081108800 -18000 0 EST} + {-1062961200 -14400 1 EDT} + {-1049659200 -18000 0 EST} + {-1031511600 -14400 1 EDT} + {-1018209600 -18000 0 EST} + {-1000062000 -14400 1 EDT} + {-986760000 -18000 0 EST} + {-968007600 -14400 1 EDT} + {-955310400 -18000 0 EST} + {-936558000 -14400 1 EDT} + {-880218000 -14400 0 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-757364400 -18000 0 EST} + {-747248400 -14400 1 EDT} + {-733946400 -18000 0 EST} + {-715798800 -14400 1 EDT} + {-702496800 -18000 0 EST} + {-684349200 -14400 1 EDT} + {-671047200 -18000 0 EST} + {-652899600 -14400 1 EDT} + {-636573600 -18000 0 EST} + {-620845200 -14400 1 EDT} + {-605124000 -18000 0 EST} + {-589395600 -14400 1 EDT} + {-576093600 -18000 0 EST} + {-557946000 -14400 1 EDT} + {-544644000 -18000 0 EST} + {-526496400 -14400 1 EDT} + {-513194400 -18000 0 EST} + {-495046800 -14400 1 EDT} + {-481744800 -18000 0 EST} + {-463597200 -14400 1 EDT} + {-450295200 -18000 0 EST} + {-431542800 -14400 1 EDT} + {-418240800 -18000 0 EST} + {-400093200 -14400 1 EDT} + {-384372000 -18000 0 EST} + {-368643600 -14400 1 EDT} + {-352922400 -18000 0 EST} + {-337194000 -14400 1 EDT} + {-321472800 -18000 0 EST} + {-305744400 -14400 1 EDT} + {-289418400 -18000 0 EST} + {-273690000 -14400 1 EDT} + {-257968800 -18000 0 EST} + {-242240400 -14400 1 EDT} + {-226519200 -18000 0 EST} + {-210790800 -14400 1 EDT} + {-195069600 -18000 0 EST} + {-179341200 -14400 1 EDT} + {-163620000 -18000 0 EST} + {-147891600 -14400 1 EDT} + {-131565600 -18000 0 EST} + {-116442000 -14400 1 EDT} + {-100116000 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126248400 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Montserrat b/library/tzdata/America/Montserrat index 7b22fcd..4d82766 100644 --- a/library/tzdata/America/Montserrat +++ b/library/tzdata/America/Montserrat @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Montserrat) { - {-9223372036854775808 -14932 0 LMT} - {-1846266608 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Montserrat) { + {-9223372036854775808 -14932 0 LMT} + {-1846266608 -14400 0 AST} +} diff --git a/library/tzdata/America/Nassau b/library/tzdata/America/Nassau index 28a2942..06c5f06 100644 --- a/library/tzdata/America/Nassau +++ b/library/tzdata/America/Nassau @@ -1,279 +1,279 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Nassau) { - {-9223372036854775808 -18564 0 LMT} - {-1825095036 -18000 0 EST} - {-179341200 -14400 1 EDT} - {-163620000 -18000 0 EST} - {-147891600 -14400 1 EDT} - {-131565600 -18000 0 EST} - {-116442000 -14400 1 EDT} - {-100116000 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {189320400 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Nassau) { + {-9223372036854775808 -18564 0 LMT} + {-1825095036 -18000 0 EST} + {-179341200 -14400 1 EDT} + {-163620000 -18000 0 EST} + {-147891600 -14400 1 EDT} + {-131565600 -18000 0 EST} + {-116442000 -14400 1 EDT} + {-100116000 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {189320400 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/New_York b/library/tzdata/America/New_York index 3c52355..72f2c96 100644 --- a/library/tzdata/America/New_York +++ b/library/tzdata/America/New_York @@ -1,369 +1,369 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/New_York) { - {-9223372036854775808 -17762 0 LMT} - {-2717650800 -18000 0 EST} - {-1633280400 -14400 1 EDT} - {-1615140000 -18000 0 EST} - {-1601830800 -14400 1 EDT} - {-1583690400 -18000 0 EST} - {-1577905200 -18000 0 EST} - {-1570381200 -14400 1 EDT} - {-1551636000 -18000 0 EST} - {-1536512400 -14400 1 EDT} - {-1523210400 -18000 0 EST} - {-1504458000 -14400 1 EDT} - {-1491760800 -18000 0 EST} - {-1473008400 -14400 1 EDT} - {-1459706400 -18000 0 EST} - {-1441558800 -14400 1 EDT} - {-1428256800 -18000 0 EST} - {-1410109200 -14400 1 EDT} - {-1396807200 -18000 0 EST} - {-1378659600 -14400 1 EDT} - {-1365357600 -18000 0 EST} - {-1347210000 -14400 1 EDT} - {-1333908000 -18000 0 EST} - {-1315155600 -14400 1 EDT} - {-1301853600 -18000 0 EST} - {-1283706000 -14400 1 EDT} - {-1270404000 -18000 0 EST} - {-1252256400 -14400 1 EDT} - {-1238954400 -18000 0 EST} - {-1220806800 -14400 1 EDT} - {-1207504800 -18000 0 EST} - {-1189357200 -14400 1 EDT} - {-1176055200 -18000 0 EST} - {-1157302800 -14400 1 EDT} - {-1144605600 -18000 0 EST} - {-1125853200 -14400 1 EDT} - {-1112551200 -18000 0 EST} - {-1094403600 -14400 1 EDT} - {-1081101600 -18000 0 EST} - {-1062954000 -14400 1 EDT} - {-1049652000 -18000 0 EST} - {-1031504400 -14400 1 EDT} - {-1018202400 -18000 0 EST} - {-1000054800 -14400 1 EDT} - {-986752800 -18000 0 EST} - {-968000400 -14400 1 EDT} - {-955303200 -18000 0 EST} - {-936550800 -14400 1 EDT} - {-923248800 -18000 0 EST} - {-905101200 -14400 1 EDT} - {-891799200 -18000 0 EST} - {-883594800 -18000 0 EST} - {-880218000 -14400 1 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-757364400 -18000 0 EST} - {-747248400 -14400 1 EDT} - {-733946400 -18000 0 EST} - {-715798800 -14400 1 EDT} - {-702496800 -18000 0 EST} - {-684349200 -14400 1 EDT} - {-671047200 -18000 0 EST} - {-652899600 -14400 1 EDT} - {-639597600 -18000 0 EST} - {-620845200 -14400 1 EDT} - {-608148000 -18000 0 EST} - {-589395600 -14400 1 EDT} - {-576093600 -18000 0 EST} - {-557946000 -14400 1 EDT} - {-544644000 -18000 0 EST} - {-526496400 -14400 1 EDT} - {-513194400 -18000 0 EST} - {-495046800 -14400 1 EDT} - {-481744800 -18000 0 EST} - {-463597200 -14400 1 EDT} - {-447271200 -18000 0 EST} - {-431542800 -14400 1 EDT} - {-415821600 -18000 0 EST} - {-400093200 -14400 1 EDT} - {-384372000 -18000 0 EST} - {-368643600 -14400 1 EDT} - {-352922400 -18000 0 EST} - {-337194000 -14400 1 EDT} - {-321472800 -18000 0 EST} - {-305744400 -14400 1 EDT} - {-289418400 -18000 0 EST} - {-273690000 -14400 1 EDT} - {-257968800 -18000 0 EST} - {-242240400 -14400 1 EDT} - {-226519200 -18000 0 EST} - {-210790800 -14400 1 EDT} - {-195069600 -18000 0 EST} - {-179341200 -14400 1 EDT} - {-163620000 -18000 0 EST} - {-147891600 -14400 1 EDT} - {-131565600 -18000 0 EST} - {-116442000 -14400 1 EDT} - {-100116000 -18000 0 EST} - {-94676400 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -14400 1 EDT} - {152085600 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/New_York) { + {-9223372036854775808 -17762 0 LMT} + {-2717650800 -18000 0 EST} + {-1633280400 -14400 1 EDT} + {-1615140000 -18000 0 EST} + {-1601830800 -14400 1 EDT} + {-1583690400 -18000 0 EST} + {-1577905200 -18000 0 EST} + {-1570381200 -14400 1 EDT} + {-1551636000 -18000 0 EST} + {-1536512400 -14400 1 EDT} + {-1523210400 -18000 0 EST} + {-1504458000 -14400 1 EDT} + {-1491760800 -18000 0 EST} + {-1473008400 -14400 1 EDT} + {-1459706400 -18000 0 EST} + {-1441558800 -14400 1 EDT} + {-1428256800 -18000 0 EST} + {-1410109200 -14400 1 EDT} + {-1396807200 -18000 0 EST} + {-1378659600 -14400 1 EDT} + {-1365357600 -18000 0 EST} + {-1347210000 -14400 1 EDT} + {-1333908000 -18000 0 EST} + {-1315155600 -14400 1 EDT} + {-1301853600 -18000 0 EST} + {-1283706000 -14400 1 EDT} + {-1270404000 -18000 0 EST} + {-1252256400 -14400 1 EDT} + {-1238954400 -18000 0 EST} + {-1220806800 -14400 1 EDT} + {-1207504800 -18000 0 EST} + {-1189357200 -14400 1 EDT} + {-1176055200 -18000 0 EST} + {-1157302800 -14400 1 EDT} + {-1144605600 -18000 0 EST} + {-1125853200 -14400 1 EDT} + {-1112551200 -18000 0 EST} + {-1094403600 -14400 1 EDT} + {-1081101600 -18000 0 EST} + {-1062954000 -14400 1 EDT} + {-1049652000 -18000 0 EST} + {-1031504400 -14400 1 EDT} + {-1018202400 -18000 0 EST} + {-1000054800 -14400 1 EDT} + {-986752800 -18000 0 EST} + {-968000400 -14400 1 EDT} + {-955303200 -18000 0 EST} + {-936550800 -14400 1 EDT} + {-923248800 -18000 0 EST} + {-905101200 -14400 1 EDT} + {-891799200 -18000 0 EST} + {-883594800 -18000 0 EST} + {-880218000 -14400 1 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-757364400 -18000 0 EST} + {-747248400 -14400 1 EDT} + {-733946400 -18000 0 EST} + {-715798800 -14400 1 EDT} + {-702496800 -18000 0 EST} + {-684349200 -14400 1 EDT} + {-671047200 -18000 0 EST} + {-652899600 -14400 1 EDT} + {-639597600 -18000 0 EST} + {-620845200 -14400 1 EDT} + {-608148000 -18000 0 EST} + {-589395600 -14400 1 EDT} + {-576093600 -18000 0 EST} + {-557946000 -14400 1 EDT} + {-544644000 -18000 0 EST} + {-526496400 -14400 1 EDT} + {-513194400 -18000 0 EST} + {-495046800 -14400 1 EDT} + {-481744800 -18000 0 EST} + {-463597200 -14400 1 EDT} + {-447271200 -18000 0 EST} + {-431542800 -14400 1 EDT} + {-415821600 -18000 0 EST} + {-400093200 -14400 1 EDT} + {-384372000 -18000 0 EST} + {-368643600 -14400 1 EDT} + {-352922400 -18000 0 EST} + {-337194000 -14400 1 EDT} + {-321472800 -18000 0 EST} + {-305744400 -14400 1 EDT} + {-289418400 -18000 0 EST} + {-273690000 -14400 1 EDT} + {-257968800 -18000 0 EST} + {-242240400 -14400 1 EDT} + {-226519200 -18000 0 EST} + {-210790800 -14400 1 EDT} + {-195069600 -18000 0 EST} + {-179341200 -14400 1 EDT} + {-163620000 -18000 0 EST} + {-147891600 -14400 1 EDT} + {-131565600 -18000 0 EST} + {-116442000 -14400 1 EDT} + {-100116000 -18000 0 EST} + {-94676400 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -14400 1 EDT} + {152085600 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Nipigon b/library/tzdata/America/Nipigon index 73aa9af..e98bb8c 100644 --- a/library/tzdata/America/Nipigon +++ b/library/tzdata/America/Nipigon @@ -1,264 +1,264 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Nipigon) { - {-9223372036854775808 -21184 0 LMT} - {-2366734016 -18000 0 EST} - {-1632070800 -14400 1 EDT} - {-1614794400 -18000 0 EST} - {-923252400 -14400 1 EDT} - {-880218000 -14400 0 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Nipigon) { + {-9223372036854775808 -21184 0 LMT} + {-2366734016 -18000 0 EST} + {-1632070800 -14400 1 EDT} + {-1614794400 -18000 0 EST} + {-923252400 -14400 1 EDT} + {-880218000 -14400 0 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Nome b/library/tzdata/America/Nome index 3152a13..c095b79 100644 --- a/library/tzdata/America/Nome +++ b/library/tzdata/America/Nome @@ -1,276 +1,276 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Nome) { - {-9223372036854775808 46701 0 LMT} - {-3225358701 -39698 0 LMT} - {-2188947502 -39600 0 NST} - {-883573200 -39600 0 NST} - {-880196400 -36000 1 NWT} - {-769395600 -36000 1 NPT} - {-765374400 -39600 0 NST} - {-757342800 -39600 0 NST} - {-86878800 -39600 0 BST} - {-31496400 -39600 0 BST} - {-21466800 -36000 1 BDT} - {-5745600 -39600 0 BST} - {9982800 -36000 1 BDT} - {25704000 -39600 0 BST} - {41432400 -36000 1 BDT} - {57758400 -39600 0 BST} - {73486800 -36000 1 BDT} - {89208000 -39600 0 BST} - {104936400 -36000 1 BDT} - {120657600 -39600 0 BST} - {126709200 -36000 1 BDT} - {152107200 -39600 0 BST} - {162392400 -36000 1 BDT} - {183556800 -39600 0 BST} - {199285200 -36000 1 BDT} - {215611200 -39600 0 BST} - {230734800 -36000 1 BDT} - {247060800 -39600 0 BST} - {262789200 -36000 1 BDT} - {278510400 -39600 0 BST} - {294238800 -36000 1 BDT} - {309960000 -39600 0 BST} - {325688400 -36000 1 BDT} - {341409600 -39600 0 BST} - {357138000 -36000 1 BDT} - {372859200 -39600 0 BST} - {388587600 -36000 1 BDT} - {404913600 -39600 0 BST} - {420037200 -36000 1 BDT} - {439030800 -32400 0 AKST} - {452084400 -28800 1 AKDT} - {467805600 -32400 0 AKST} - {483534000 -28800 1 AKDT} - {499255200 -32400 0 AKST} - {514983600 -28800 1 AKDT} - {530704800 -32400 0 AKST} - {544618800 -28800 1 AKDT} - {562154400 -32400 0 AKST} - {576068400 -28800 1 AKDT} - {594208800 -32400 0 AKST} - {607518000 -28800 1 AKDT} - {625658400 -32400 0 AKST} - {638967600 -28800 1 AKDT} - {657108000 -32400 0 AKST} - {671022000 -28800 1 AKDT} - {688557600 -32400 0 AKST} - {702471600 -28800 1 AKDT} - {720007200 -32400 0 AKST} - {733921200 -28800 1 AKDT} - {752061600 -32400 0 AKST} - {765370800 -28800 1 AKDT} - {783511200 -32400 0 AKST} - {796820400 -28800 1 AKDT} - {814960800 -32400 0 AKST} - {828874800 -28800 1 AKDT} - {846410400 -32400 0 AKST} - {860324400 -28800 1 AKDT} - {877860000 -32400 0 AKST} - {891774000 -28800 1 AKDT} - {909309600 -32400 0 AKST} - {923223600 -28800 1 AKDT} - {941364000 -32400 0 AKST} - {954673200 -28800 1 AKDT} - {972813600 -32400 0 AKST} - {986122800 -28800 1 AKDT} - {1004263200 -32400 0 AKST} - {1018177200 -28800 1 AKDT} - {1035712800 -32400 0 AKST} - {1049626800 -28800 1 AKDT} - {1067162400 -32400 0 AKST} - {1081076400 -28800 1 AKDT} - {1099216800 -32400 0 AKST} - {1112526000 -28800 1 AKDT} - {1130666400 -32400 0 AKST} - {1143975600 -28800 1 AKDT} - {1162116000 -32400 0 AKST} - {1173610800 -28800 1 AKDT} - {1194170400 -32400 0 AKST} - {1205060400 -28800 1 AKDT} - {1225620000 -32400 0 AKST} - {1236510000 -28800 1 AKDT} - {1257069600 -32400 0 AKST} - {1268564400 -28800 1 AKDT} - {1289124000 -32400 0 AKST} - {1300014000 -28800 1 AKDT} - {1320573600 -32400 0 AKST} - {1331463600 -28800 1 AKDT} - {1352023200 -32400 0 AKST} - {1362913200 -28800 1 AKDT} - {1383472800 -32400 0 AKST} - {1394362800 -28800 1 AKDT} - {1414922400 -32400 0 AKST} - {1425812400 -28800 1 AKDT} - {1446372000 -32400 0 AKST} - {1457866800 -28800 1 AKDT} - {1478426400 -32400 0 AKST} - {1489316400 -28800 1 AKDT} - {1509876000 -32400 0 AKST} - {1520766000 -28800 1 AKDT} - {1541325600 -32400 0 AKST} - {1552215600 -28800 1 AKDT} - {1572775200 -32400 0 AKST} - {1583665200 -28800 1 AKDT} - {1604224800 -32400 0 AKST} - {1615719600 -28800 1 AKDT} - {1636279200 -32400 0 AKST} - {1647169200 -28800 1 AKDT} - {1667728800 -32400 0 AKST} - {1678618800 -28800 1 AKDT} - {1699178400 -32400 0 AKST} - {1710068400 -28800 1 AKDT} - {1730628000 -32400 0 AKST} - {1741518000 -28800 1 AKDT} - {1762077600 -32400 0 AKST} - {1772967600 -28800 1 AKDT} - {1793527200 -32400 0 AKST} - {1805022000 -28800 1 AKDT} - {1825581600 -32400 0 AKST} - {1836471600 -28800 1 AKDT} - {1857031200 -32400 0 AKST} - {1867921200 -28800 1 AKDT} - {1888480800 -32400 0 AKST} - {1899370800 -28800 1 AKDT} - {1919930400 -32400 0 AKST} - {1930820400 -28800 1 AKDT} - {1951380000 -32400 0 AKST} - {1962874800 -28800 1 AKDT} - {1983434400 -32400 0 AKST} - {1994324400 -28800 1 AKDT} - {2014884000 -32400 0 AKST} - {2025774000 -28800 1 AKDT} - {2046333600 -32400 0 AKST} - {2057223600 -28800 1 AKDT} - {2077783200 -32400 0 AKST} - {2088673200 -28800 1 AKDT} - {2109232800 -32400 0 AKST} - {2120122800 -28800 1 AKDT} - {2140682400 -32400 0 AKST} - {2152177200 -28800 1 AKDT} - {2172736800 -32400 0 AKST} - {2183626800 -28800 1 AKDT} - {2204186400 -32400 0 AKST} - {2215076400 -28800 1 AKDT} - {2235636000 -32400 0 AKST} - {2246526000 -28800 1 AKDT} - {2267085600 -32400 0 AKST} - {2277975600 -28800 1 AKDT} - {2298535200 -32400 0 AKST} - {2309425200 -28800 1 AKDT} - {2329984800 -32400 0 AKST} - {2341479600 -28800 1 AKDT} - {2362039200 -32400 0 AKST} - {2372929200 -28800 1 AKDT} - {2393488800 -32400 0 AKST} - {2404378800 -28800 1 AKDT} - {2424938400 -32400 0 AKST} - {2435828400 -28800 1 AKDT} - {2456388000 -32400 0 AKST} - {2467278000 -28800 1 AKDT} - {2487837600 -32400 0 AKST} - {2499332400 -28800 1 AKDT} - {2519892000 -32400 0 AKST} - {2530782000 -28800 1 AKDT} - {2551341600 -32400 0 AKST} - {2562231600 -28800 1 AKDT} - {2582791200 -32400 0 AKST} - {2593681200 -28800 1 AKDT} - {2614240800 -32400 0 AKST} - {2625130800 -28800 1 AKDT} - {2645690400 -32400 0 AKST} - {2656580400 -28800 1 AKDT} - {2677140000 -32400 0 AKST} - {2688634800 -28800 1 AKDT} - {2709194400 -32400 0 AKST} - {2720084400 -28800 1 AKDT} - {2740644000 -32400 0 AKST} - {2751534000 -28800 1 AKDT} - {2772093600 -32400 0 AKST} - {2782983600 -28800 1 AKDT} - {2803543200 -32400 0 AKST} - {2814433200 -28800 1 AKDT} - {2834992800 -32400 0 AKST} - {2846487600 -28800 1 AKDT} - {2867047200 -32400 0 AKST} - {2877937200 -28800 1 AKDT} - {2898496800 -32400 0 AKST} - {2909386800 -28800 1 AKDT} - {2929946400 -32400 0 AKST} - {2940836400 -28800 1 AKDT} - {2961396000 -32400 0 AKST} - {2972286000 -28800 1 AKDT} - {2992845600 -32400 0 AKST} - {3003735600 -28800 1 AKDT} - {3024295200 -32400 0 AKST} - {3035790000 -28800 1 AKDT} - {3056349600 -32400 0 AKST} - {3067239600 -28800 1 AKDT} - {3087799200 -32400 0 AKST} - {3098689200 -28800 1 AKDT} - {3119248800 -32400 0 AKST} - {3130138800 -28800 1 AKDT} - {3150698400 -32400 0 AKST} - {3161588400 -28800 1 AKDT} - {3182148000 -32400 0 AKST} - {3193038000 -28800 1 AKDT} - {3213597600 -32400 0 AKST} - {3225092400 -28800 1 AKDT} - {3245652000 -32400 0 AKST} - {3256542000 -28800 1 AKDT} - {3277101600 -32400 0 AKST} - {3287991600 -28800 1 AKDT} - {3308551200 -32400 0 AKST} - {3319441200 -28800 1 AKDT} - {3340000800 -32400 0 AKST} - {3350890800 -28800 1 AKDT} - {3371450400 -32400 0 AKST} - {3382945200 -28800 1 AKDT} - {3403504800 -32400 0 AKST} - {3414394800 -28800 1 AKDT} - {3434954400 -32400 0 AKST} - {3445844400 -28800 1 AKDT} - {3466404000 -32400 0 AKST} - {3477294000 -28800 1 AKDT} - {3497853600 -32400 0 AKST} - {3508743600 -28800 1 AKDT} - {3529303200 -32400 0 AKST} - {3540193200 -28800 1 AKDT} - {3560752800 -32400 0 AKST} - {3572247600 -28800 1 AKDT} - {3592807200 -32400 0 AKST} - {3603697200 -28800 1 AKDT} - {3624256800 -32400 0 AKST} - {3635146800 -28800 1 AKDT} - {3655706400 -32400 0 AKST} - {3666596400 -28800 1 AKDT} - {3687156000 -32400 0 AKST} - {3698046000 -28800 1 AKDT} - {3718605600 -32400 0 AKST} - {3730100400 -28800 1 AKDT} - {3750660000 -32400 0 AKST} - {3761550000 -28800 1 AKDT} - {3782109600 -32400 0 AKST} - {3792999600 -28800 1 AKDT} - {3813559200 -32400 0 AKST} - {3824449200 -28800 1 AKDT} - {3845008800 -32400 0 AKST} - {3855898800 -28800 1 AKDT} - {3876458400 -32400 0 AKST} - {3887348400 -28800 1 AKDT} - {3907908000 -32400 0 AKST} - {3919402800 -28800 1 AKDT} - {3939962400 -32400 0 AKST} - {3950852400 -28800 1 AKDT} - {3971412000 -32400 0 AKST} - {3982302000 -28800 1 AKDT} - {4002861600 -32400 0 AKST} - {4013751600 -28800 1 AKDT} - {4034311200 -32400 0 AKST} - {4045201200 -28800 1 AKDT} - {4065760800 -32400 0 AKST} - {4076650800 -28800 1 AKDT} - {4097210400 -32400 0 AKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Nome) { + {-9223372036854775808 46701 0 LMT} + {-3225358701 -39698 0 LMT} + {-2188947502 -39600 0 NST} + {-883573200 -39600 0 NST} + {-880196400 -36000 1 NWT} + {-769395600 -36000 1 NPT} + {-765374400 -39600 0 NST} + {-757342800 -39600 0 NST} + {-86878800 -39600 0 BST} + {-31496400 -39600 0 BST} + {-21466800 -36000 1 BDT} + {-5745600 -39600 0 BST} + {9982800 -36000 1 BDT} + {25704000 -39600 0 BST} + {41432400 -36000 1 BDT} + {57758400 -39600 0 BST} + {73486800 -36000 1 BDT} + {89208000 -39600 0 BST} + {104936400 -36000 1 BDT} + {120657600 -39600 0 BST} + {126709200 -36000 1 BDT} + {152107200 -39600 0 BST} + {162392400 -36000 1 BDT} + {183556800 -39600 0 BST} + {199285200 -36000 1 BDT} + {215611200 -39600 0 BST} + {230734800 -36000 1 BDT} + {247060800 -39600 0 BST} + {262789200 -36000 1 BDT} + {278510400 -39600 0 BST} + {294238800 -36000 1 BDT} + {309960000 -39600 0 BST} + {325688400 -36000 1 BDT} + {341409600 -39600 0 BST} + {357138000 -36000 1 BDT} + {372859200 -39600 0 BST} + {388587600 -36000 1 BDT} + {404913600 -39600 0 BST} + {420037200 -36000 1 BDT} + {439030800 -32400 0 AKST} + {452084400 -28800 1 AKDT} + {467805600 -32400 0 AKST} + {483534000 -28800 1 AKDT} + {499255200 -32400 0 AKST} + {514983600 -28800 1 AKDT} + {530704800 -32400 0 AKST} + {544618800 -28800 1 AKDT} + {562154400 -32400 0 AKST} + {576068400 -28800 1 AKDT} + {594208800 -32400 0 AKST} + {607518000 -28800 1 AKDT} + {625658400 -32400 0 AKST} + {638967600 -28800 1 AKDT} + {657108000 -32400 0 AKST} + {671022000 -28800 1 AKDT} + {688557600 -32400 0 AKST} + {702471600 -28800 1 AKDT} + {720007200 -32400 0 AKST} + {733921200 -28800 1 AKDT} + {752061600 -32400 0 AKST} + {765370800 -28800 1 AKDT} + {783511200 -32400 0 AKST} + {796820400 -28800 1 AKDT} + {814960800 -32400 0 AKST} + {828874800 -28800 1 AKDT} + {846410400 -32400 0 AKST} + {860324400 -28800 1 AKDT} + {877860000 -32400 0 AKST} + {891774000 -28800 1 AKDT} + {909309600 -32400 0 AKST} + {923223600 -28800 1 AKDT} + {941364000 -32400 0 AKST} + {954673200 -28800 1 AKDT} + {972813600 -32400 0 AKST} + {986122800 -28800 1 AKDT} + {1004263200 -32400 0 AKST} + {1018177200 -28800 1 AKDT} + {1035712800 -32400 0 AKST} + {1049626800 -28800 1 AKDT} + {1067162400 -32400 0 AKST} + {1081076400 -28800 1 AKDT} + {1099216800 -32400 0 AKST} + {1112526000 -28800 1 AKDT} + {1130666400 -32400 0 AKST} + {1143975600 -28800 1 AKDT} + {1162116000 -32400 0 AKST} + {1173610800 -28800 1 AKDT} + {1194170400 -32400 0 AKST} + {1205060400 -28800 1 AKDT} + {1225620000 -32400 0 AKST} + {1236510000 -28800 1 AKDT} + {1257069600 -32400 0 AKST} + {1268564400 -28800 1 AKDT} + {1289124000 -32400 0 AKST} + {1300014000 -28800 1 AKDT} + {1320573600 -32400 0 AKST} + {1331463600 -28800 1 AKDT} + {1352023200 -32400 0 AKST} + {1362913200 -28800 1 AKDT} + {1383472800 -32400 0 AKST} + {1394362800 -28800 1 AKDT} + {1414922400 -32400 0 AKST} + {1425812400 -28800 1 AKDT} + {1446372000 -32400 0 AKST} + {1457866800 -28800 1 AKDT} + {1478426400 -32400 0 AKST} + {1489316400 -28800 1 AKDT} + {1509876000 -32400 0 AKST} + {1520766000 -28800 1 AKDT} + {1541325600 -32400 0 AKST} + {1552215600 -28800 1 AKDT} + {1572775200 -32400 0 AKST} + {1583665200 -28800 1 AKDT} + {1604224800 -32400 0 AKST} + {1615719600 -28800 1 AKDT} + {1636279200 -32400 0 AKST} + {1647169200 -28800 1 AKDT} + {1667728800 -32400 0 AKST} + {1678618800 -28800 1 AKDT} + {1699178400 -32400 0 AKST} + {1710068400 -28800 1 AKDT} + {1730628000 -32400 0 AKST} + {1741518000 -28800 1 AKDT} + {1762077600 -32400 0 AKST} + {1772967600 -28800 1 AKDT} + {1793527200 -32400 0 AKST} + {1805022000 -28800 1 AKDT} + {1825581600 -32400 0 AKST} + {1836471600 -28800 1 AKDT} + {1857031200 -32400 0 AKST} + {1867921200 -28800 1 AKDT} + {1888480800 -32400 0 AKST} + {1899370800 -28800 1 AKDT} + {1919930400 -32400 0 AKST} + {1930820400 -28800 1 AKDT} + {1951380000 -32400 0 AKST} + {1962874800 -28800 1 AKDT} + {1983434400 -32400 0 AKST} + {1994324400 -28800 1 AKDT} + {2014884000 -32400 0 AKST} + {2025774000 -28800 1 AKDT} + {2046333600 -32400 0 AKST} + {2057223600 -28800 1 AKDT} + {2077783200 -32400 0 AKST} + {2088673200 -28800 1 AKDT} + {2109232800 -32400 0 AKST} + {2120122800 -28800 1 AKDT} + {2140682400 -32400 0 AKST} + {2152177200 -28800 1 AKDT} + {2172736800 -32400 0 AKST} + {2183626800 -28800 1 AKDT} + {2204186400 -32400 0 AKST} + {2215076400 -28800 1 AKDT} + {2235636000 -32400 0 AKST} + {2246526000 -28800 1 AKDT} + {2267085600 -32400 0 AKST} + {2277975600 -28800 1 AKDT} + {2298535200 -32400 0 AKST} + {2309425200 -28800 1 AKDT} + {2329984800 -32400 0 AKST} + {2341479600 -28800 1 AKDT} + {2362039200 -32400 0 AKST} + {2372929200 -28800 1 AKDT} + {2393488800 -32400 0 AKST} + {2404378800 -28800 1 AKDT} + {2424938400 -32400 0 AKST} + {2435828400 -28800 1 AKDT} + {2456388000 -32400 0 AKST} + {2467278000 -28800 1 AKDT} + {2487837600 -32400 0 AKST} + {2499332400 -28800 1 AKDT} + {2519892000 -32400 0 AKST} + {2530782000 -28800 1 AKDT} + {2551341600 -32400 0 AKST} + {2562231600 -28800 1 AKDT} + {2582791200 -32400 0 AKST} + {2593681200 -28800 1 AKDT} + {2614240800 -32400 0 AKST} + {2625130800 -28800 1 AKDT} + {2645690400 -32400 0 AKST} + {2656580400 -28800 1 AKDT} + {2677140000 -32400 0 AKST} + {2688634800 -28800 1 AKDT} + {2709194400 -32400 0 AKST} + {2720084400 -28800 1 AKDT} + {2740644000 -32400 0 AKST} + {2751534000 -28800 1 AKDT} + {2772093600 -32400 0 AKST} + {2782983600 -28800 1 AKDT} + {2803543200 -32400 0 AKST} + {2814433200 -28800 1 AKDT} + {2834992800 -32400 0 AKST} + {2846487600 -28800 1 AKDT} + {2867047200 -32400 0 AKST} + {2877937200 -28800 1 AKDT} + {2898496800 -32400 0 AKST} + {2909386800 -28800 1 AKDT} + {2929946400 -32400 0 AKST} + {2940836400 -28800 1 AKDT} + {2961396000 -32400 0 AKST} + {2972286000 -28800 1 AKDT} + {2992845600 -32400 0 AKST} + {3003735600 -28800 1 AKDT} + {3024295200 -32400 0 AKST} + {3035790000 -28800 1 AKDT} + {3056349600 -32400 0 AKST} + {3067239600 -28800 1 AKDT} + {3087799200 -32400 0 AKST} + {3098689200 -28800 1 AKDT} + {3119248800 -32400 0 AKST} + {3130138800 -28800 1 AKDT} + {3150698400 -32400 0 AKST} + {3161588400 -28800 1 AKDT} + {3182148000 -32400 0 AKST} + {3193038000 -28800 1 AKDT} + {3213597600 -32400 0 AKST} + {3225092400 -28800 1 AKDT} + {3245652000 -32400 0 AKST} + {3256542000 -28800 1 AKDT} + {3277101600 -32400 0 AKST} + {3287991600 -28800 1 AKDT} + {3308551200 -32400 0 AKST} + {3319441200 -28800 1 AKDT} + {3340000800 -32400 0 AKST} + {3350890800 -28800 1 AKDT} + {3371450400 -32400 0 AKST} + {3382945200 -28800 1 AKDT} + {3403504800 -32400 0 AKST} + {3414394800 -28800 1 AKDT} + {3434954400 -32400 0 AKST} + {3445844400 -28800 1 AKDT} + {3466404000 -32400 0 AKST} + {3477294000 -28800 1 AKDT} + {3497853600 -32400 0 AKST} + {3508743600 -28800 1 AKDT} + {3529303200 -32400 0 AKST} + {3540193200 -28800 1 AKDT} + {3560752800 -32400 0 AKST} + {3572247600 -28800 1 AKDT} + {3592807200 -32400 0 AKST} + {3603697200 -28800 1 AKDT} + {3624256800 -32400 0 AKST} + {3635146800 -28800 1 AKDT} + {3655706400 -32400 0 AKST} + {3666596400 -28800 1 AKDT} + {3687156000 -32400 0 AKST} + {3698046000 -28800 1 AKDT} + {3718605600 -32400 0 AKST} + {3730100400 -28800 1 AKDT} + {3750660000 -32400 0 AKST} + {3761550000 -28800 1 AKDT} + {3782109600 -32400 0 AKST} + {3792999600 -28800 1 AKDT} + {3813559200 -32400 0 AKST} + {3824449200 -28800 1 AKDT} + {3845008800 -32400 0 AKST} + {3855898800 -28800 1 AKDT} + {3876458400 -32400 0 AKST} + {3887348400 -28800 1 AKDT} + {3907908000 -32400 0 AKST} + {3919402800 -28800 1 AKDT} + {3939962400 -32400 0 AKST} + {3950852400 -28800 1 AKDT} + {3971412000 -32400 0 AKST} + {3982302000 -28800 1 AKDT} + {4002861600 -32400 0 AKST} + {4013751600 -28800 1 AKDT} + {4034311200 -32400 0 AKST} + {4045201200 -28800 1 AKDT} + {4065760800 -32400 0 AKST} + {4076650800 -28800 1 AKDT} + {4097210400 -32400 0 AKST} +} diff --git a/library/tzdata/America/Noronha b/library/tzdata/America/Noronha index e933e20..94d6f42 100644 --- a/library/tzdata/America/Noronha +++ b/library/tzdata/America/Noronha @@ -1,48 +1,48 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Noronha) { - {-9223372036854775808 -7780 0 LMT} - {-1767217820 -7200 0 FNT} - {-1206961200 -3600 1 FNST} - {-1191366000 -7200 0 FNT} - {-1175378400 -3600 1 FNST} - {-1159830000 -7200 0 FNT} - {-633823200 -3600 1 FNST} - {-622072800 -7200 0 FNT} - {-602287200 -3600 1 FNST} - {-591836400 -7200 0 FNT} - {-570751200 -3600 1 FNST} - {-560214000 -7200 0 FNT} - {-539128800 -3600 1 FNST} - {-531356400 -7200 0 FNT} - {-191368800 -3600 1 FNST} - {-184201200 -7200 0 FNT} - {-155167200 -3600 1 FNST} - {-150073200 -7200 0 FNT} - {-128901600 -3600 1 FNST} - {-121129200 -7200 0 FNT} - {-99957600 -3600 1 FNST} - {-89593200 -7200 0 FNT} - {-68421600 -3600 1 FNST} - {-57970800 -7200 0 FNT} - {499744800 -3600 1 FNST} - {511232400 -7200 0 FNT} - {530589600 -3600 1 FNST} - {540262800 -7200 0 FNT} - {562125600 -3600 1 FNST} - {571194000 -7200 0 FNT} - {592970400 -3600 1 FNST} - {602038800 -7200 0 FNT} - {624420000 -3600 1 FNST} - {634698000 -7200 0 FNT} - {653533200 -7200 0 FNT} - {938656800 -7200 0 FNT} - {938916000 -3600 1 FNST} - {951613200 -7200 0 FNT} - {970970400 -3600 1 FNST} - {971571600 -7200 0 FNT} - {1000346400 -7200 0 FNT} - {1003024800 -3600 1 FNST} - {1013907600 -7200 0 FNT} - {1033434000 -7200 0 FNT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Noronha) { + {-9223372036854775808 -7780 0 LMT} + {-1767217820 -7200 0 FNT} + {-1206961200 -3600 1 FNST} + {-1191366000 -7200 0 FNT} + {-1175378400 -3600 1 FNST} + {-1159830000 -7200 0 FNT} + {-633823200 -3600 1 FNST} + {-622072800 -7200 0 FNT} + {-602287200 -3600 1 FNST} + {-591836400 -7200 0 FNT} + {-570751200 -3600 1 FNST} + {-560214000 -7200 0 FNT} + {-539128800 -3600 1 FNST} + {-531356400 -7200 0 FNT} + {-191368800 -3600 1 FNST} + {-184201200 -7200 0 FNT} + {-155167200 -3600 1 FNST} + {-150073200 -7200 0 FNT} + {-128901600 -3600 1 FNST} + {-121129200 -7200 0 FNT} + {-99957600 -3600 1 FNST} + {-89593200 -7200 0 FNT} + {-68421600 -3600 1 FNST} + {-57970800 -7200 0 FNT} + {499744800 -3600 1 FNST} + {511232400 -7200 0 FNT} + {530589600 -3600 1 FNST} + {540262800 -7200 0 FNT} + {562125600 -3600 1 FNST} + {571194000 -7200 0 FNT} + {592970400 -3600 1 FNST} + {602038800 -7200 0 FNT} + {624420000 -3600 1 FNST} + {634698000 -7200 0 FNT} + {653533200 -7200 0 FNT} + {938656800 -7200 0 FNT} + {938916000 -3600 1 FNST} + {951613200 -7200 0 FNT} + {970970400 -3600 1 FNST} + {971571600 -7200 0 FNT} + {1000346400 -7200 0 FNT} + {1003024800 -3600 1 FNST} + {1013907600 -7200 0 FNT} + {1033434000 -7200 0 FNT} +} diff --git a/library/tzdata/America/North_Dakota/Center b/library/tzdata/America/North_Dakota/Center index 8f3c3a9..30782f7 100644 --- a/library/tzdata/America/North_Dakota/Center +++ b/library/tzdata/America/North_Dakota/Center @@ -1,279 +1,279 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/North_Dakota/Center) { - {-9223372036854775808 -24312 0 LMT} - {-2717643600 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126694800 -21600 1 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720003600 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/North_Dakota/Center) { + {-9223372036854775808 -24312 0 LMT} + {-2717643600 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126694800 -21600 1 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720003600 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/North_Dakota/New_Salem b/library/tzdata/America/North_Dakota/New_Salem index c34a1ca..5a9d229 100755 --- a/library/tzdata/America/North_Dakota/New_Salem +++ b/library/tzdata/America/North_Dakota/New_Salem @@ -1,279 +1,279 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/North_Dakota/New_Salem) { - {-9223372036854775808 -24339 0 LMT} - {-2717643600 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126694800 -21600 1 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067158800 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/North_Dakota/New_Salem) { + {-9223372036854775808 -24339 0 LMT} + {-2717643600 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126694800 -21600 1 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067158800 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Panama b/library/tzdata/America/Panama index c5b18fc..3006785 100644 --- a/library/tzdata/America/Panama +++ b/library/tzdata/America/Panama @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Panama) { - {-9223372036854775808 -19088 0 LMT} - {-2524502512 -19176 0 CMT} - {-1946918424 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Panama) { + {-9223372036854775808 -19088 0 LMT} + {-2524502512 -19176 0 CMT} + {-1946918424 -18000 0 EST} +} diff --git a/library/tzdata/America/Pangnirtung b/library/tzdata/America/Pangnirtung index ff5b8c1..640808e 100644 --- a/library/tzdata/America/Pangnirtung +++ b/library/tzdata/America/Pangnirtung @@ -1,252 +1,252 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Pangnirtung) { - {-9223372036854775808 0 0 zzz} - {-1546300800 -14400 0 AST} - {-880221600 -10800 1 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-147902400 -7200 1 ADDT} - {-131572800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Pangnirtung) { + {-9223372036854775808 0 0 zzz} + {-1546300800 -14400 0 AST} + {-880221600 -10800 1 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-147902400 -7200 1 ADDT} + {-131572800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Paramaribo b/library/tzdata/America/Paramaribo index 2cea133..d15f5c7 100644 --- a/library/tzdata/America/Paramaribo +++ b/library/tzdata/America/Paramaribo @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Paramaribo) { - {-9223372036854775808 -13240 0 LMT} - {-1861906760 -13252 0 PMT} - {-1104524348 -13236 0 PMT} - {-765317964 -12600 0 NEGT} - {185686200 -12600 0 SRT} - {465449400 -10800 0 SRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Paramaribo) { + {-9223372036854775808 -13240 0 LMT} + {-1861906760 -13252 0 PMT} + {-1104524348 -13236 0 PMT} + {-765317964 -12600 0 NEGT} + {185686200 -12600 0 SRT} + {465449400 -10800 0 SRT} +} diff --git a/library/tzdata/America/Phoenix b/library/tzdata/America/Phoenix index 75258e5..3d37bb4 100644 --- a/library/tzdata/America/Phoenix +++ b/library/tzdata/America/Phoenix @@ -1,17 +1,17 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Phoenix) { - {-9223372036854775808 -26898 0 LMT} - {-2717643600 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-820519140 -25200 0 MST} - {-796841940 -25200 0 MST} - {-94669200 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-56221200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Phoenix) { + {-9223372036854775808 -26898 0 LMT} + {-2717643600 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-820519140 -25200 0 MST} + {-796841940 -25200 0 MST} + {-94669200 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-56221200 -25200 0 MST} +} diff --git a/library/tzdata/America/Port-au-Prince b/library/tzdata/America/Port-au-Prince index 26a2c18..04ee62c 100644 --- a/library/tzdata/America/Port-au-Prince +++ b/library/tzdata/America/Port-au-Prince @@ -1,41 +1,41 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Port-au-Prince) { - {-9223372036854775808 -17360 0 LMT} - {-2524504240 -17340 0 PPMT} - {-1670483460 -18000 0 EST} - {421218000 -14400 1 EDT} - {436334400 -18000 0 EST} - {452062800 -14400 1 EDT} - {467784000 -18000 0 EST} - {483512400 -14400 1 EDT} - {499233600 -18000 0 EST} - {514962000 -14400 1 EDT} - {530683200 -18000 0 EST} - {546411600 -14400 1 EDT} - {562132800 -18000 0 EST} - {576050400 -14400 1 EDT} - {594194400 -18000 0 EST} - {607500000 -14400 1 EDT} - {625644000 -18000 0 EST} - {638949600 -14400 1 EDT} - {657093600 -18000 0 EST} - {671004000 -14400 1 EDT} - {688543200 -18000 0 EST} - {702453600 -14400 1 EDT} - {719992800 -18000 0 EST} - {733903200 -14400 1 EDT} - {752047200 -18000 0 EST} - {765352800 -14400 1 EDT} - {783496800 -18000 0 EST} - {796802400 -14400 1 EDT} - {814946400 -18000 0 EST} - {828856800 -14400 1 EDT} - {846396000 -18000 0 EST} - {860306400 -14400 1 EDT} - {877845600 -18000 0 EST} - {1112504400 -14400 1 EDT} - {1130644800 -18000 0 EST} - {1143954000 -14400 1 EDT} - {1162094400 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Port-au-Prince) { + {-9223372036854775808 -17360 0 LMT} + {-2524504240 -17340 0 PPMT} + {-1670483460 -18000 0 EST} + {421218000 -14400 1 EDT} + {436334400 -18000 0 EST} + {452062800 -14400 1 EDT} + {467784000 -18000 0 EST} + {483512400 -14400 1 EDT} + {499233600 -18000 0 EST} + {514962000 -14400 1 EDT} + {530683200 -18000 0 EST} + {546411600 -14400 1 EDT} + {562132800 -18000 0 EST} + {576050400 -14400 1 EDT} + {594194400 -18000 0 EST} + {607500000 -14400 1 EDT} + {625644000 -18000 0 EST} + {638949600 -14400 1 EDT} + {657093600 -18000 0 EST} + {671004000 -14400 1 EDT} + {688543200 -18000 0 EST} + {702453600 -14400 1 EDT} + {719992800 -18000 0 EST} + {733903200 -14400 1 EDT} + {752047200 -18000 0 EST} + {765352800 -14400 1 EDT} + {783496800 -18000 0 EST} + {796802400 -14400 1 EDT} + {814946400 -18000 0 EST} + {828856800 -14400 1 EDT} + {846396000 -18000 0 EST} + {860306400 -14400 1 EDT} + {877845600 -18000 0 EST} + {1112504400 -14400 1 EDT} + {1130644800 -18000 0 EST} + {1143954000 -14400 1 EDT} + {1162094400 -18000 0 EST} +} diff --git a/library/tzdata/America/Port_of_Spain b/library/tzdata/America/Port_of_Spain index 4d52ff7..c360c87 100644 --- a/library/tzdata/America/Port_of_Spain +++ b/library/tzdata/America/Port_of_Spain @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Port_of_Spain) { - {-9223372036854775808 -14764 0 LMT} - {-1825098836 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Port_of_Spain) { + {-9223372036854775808 -14764 0 LMT} + {-1825098836 -14400 0 AST} +} diff --git a/library/tzdata/America/Porto_Acre b/library/tzdata/America/Porto_Acre index 9841d66..0626001 100644 --- a/library/tzdata/America/Porto_Acre +++ b/library/tzdata/America/Porto_Acre @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Rio_Branco)]} { - LoadTimeZoneFile America/Rio_Branco -} -set TZData(:America/Porto_Acre) $TZData(:America/Rio_Branco) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Rio_Branco)]} { + LoadTimeZoneFile America/Rio_Branco +} +set TZData(:America/Porto_Acre) $TZData(:America/Rio_Branco) diff --git a/library/tzdata/America/Porto_Velho b/library/tzdata/America/Porto_Velho index 02405e4..ce611d2 100644 --- a/library/tzdata/America/Porto_Velho +++ b/library/tzdata/America/Porto_Velho @@ -1,35 +1,35 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Porto_Velho) { - {-9223372036854775808 -15336 0 LMT} - {-1767210264 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {590036400 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Porto_Velho) { + {-9223372036854775808 -15336 0 LMT} + {-1767210264 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {590036400 -14400 0 AMT} +} diff --git a/library/tzdata/America/Puerto_Rico b/library/tzdata/America/Puerto_Rico index 48e54c7..0d5c9b4 100644 --- a/library/tzdata/America/Puerto_Rico +++ b/library/tzdata/America/Puerto_Rico @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Puerto_Rico) { - {-9223372036854775808 -15865 0 LMT} - {-2233035335 -14400 0 AST} - {-873057600 -10800 0 AWT} - {-769395600 -10800 1 APT} - {-765399600 -14400 0 AST} - {-757368000 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Puerto_Rico) { + {-9223372036854775808 -15865 0 LMT} + {-2233035335 -14400 0 AST} + {-873057600 -10800 0 AWT} + {-769395600 -10800 1 APT} + {-765399600 -14400 0 AST} + {-757368000 -14400 0 AST} +} diff --git a/library/tzdata/America/Rainy_River b/library/tzdata/America/Rainy_River index 8a577b1..331bac6 100644 --- a/library/tzdata/America/Rainy_River +++ b/library/tzdata/America/Rainy_River @@ -1,264 +1,264 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Rainy_River) { - {-9223372036854775808 -22696 0 LMT} - {-2366732504 -21600 0 CST} - {-1632067200 -18000 1 CDT} - {-1614790800 -21600 0 CST} - {-923248800 -18000 1 CDT} - {-880214400 -18000 0 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {136368000 -18000 1 CDT} - {152089200 -21600 0 CST} - {167817600 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Rainy_River) { + {-9223372036854775808 -22696 0 LMT} + {-2366732504 -21600 0 CST} + {-1632067200 -18000 1 CDT} + {-1614790800 -21600 0 CST} + {-923248800 -18000 1 CDT} + {-880214400 -18000 0 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {136368000 -18000 1 CDT} + {152089200 -21600 0 CST} + {167817600 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Rankin_Inlet b/library/tzdata/America/Rankin_Inlet index 36b9c7b..770ec5d 100644 --- a/library/tzdata/America/Rankin_Inlet +++ b/library/tzdata/America/Rankin_Inlet @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Rankin_Inlet) { - {-9223372036854775808 0 0 zzz} - {-410227200 -21600 0 CST} - {-147895200 -14400 1 CDDT} - {-131565600 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986112000 -18000 0 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Rankin_Inlet) { + {-9223372036854775808 0 0 zzz} + {-410227200 -21600 0 CST} + {-147895200 -14400 1 CDDT} + {-131565600 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986112000 -18000 0 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Recife b/library/tzdata/America/Recife index 038ec0f..f6ae00e 100644 --- a/library/tzdata/America/Recife +++ b/library/tzdata/America/Recife @@ -1,48 +1,48 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Recife) { - {-9223372036854775808 -8376 0 LMT} - {-1767217224 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-191365200 -7200 1 BRST} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {653536800 -10800 0 BRT} - {938660400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {971575200 -10800 0 BRT} - {1000350000 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1033437600 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Recife) { + {-9223372036854775808 -8376 0 LMT} + {-1767217224 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-191365200 -7200 1 BRST} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {653536800 -10800 0 BRT} + {938660400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {971575200 -10800 0 BRT} + {1000350000 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1033437600 -10800 0 BRT} +} diff --git a/library/tzdata/America/Regina b/library/tzdata/America/Regina index 8f5f188..2030d75 100644 --- a/library/tzdata/America/Regina +++ b/library/tzdata/America/Regina @@ -1,58 +1,58 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Regina) { - {-9223372036854775808 -25116 0 LMT} - {-2030202084 -25200 0 MST} - {-1632063600 -21600 1 MDT} - {-1614787200 -25200 0 MST} - {-1251651600 -21600 1 MDT} - {-1238349600 -25200 0 MST} - {-1220202000 -21600 1 MDT} - {-1206900000 -25200 0 MST} - {-1188752400 -21600 1 MDT} - {-1175450400 -25200 0 MST} - {-1156698000 -21600 1 MDT} - {-1144000800 -25200 0 MST} - {-1125248400 -21600 1 MDT} - {-1111946400 -25200 0 MST} - {-1032714000 -21600 1 MDT} - {-1016992800 -25200 0 MST} - {-1001264400 -21600 1 MDT} - {-986148000 -25200 0 MST} - {-969814800 -21600 1 MDT} - {-954093600 -25200 0 MST} - {-937760400 -21600 1 MDT} - {-922039200 -25200 0 MST} - {-906310800 -21600 1 MDT} - {-890589600 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-748450800 -21600 1 MDT} - {-732729600 -25200 0 MST} - {-715791600 -21600 1 MDT} - {-702489600 -25200 0 MST} - {-684342000 -21600 1 MDT} - {-671040000 -25200 0 MST} - {-652892400 -21600 1 MDT} - {-639590400 -25200 0 MST} - {-620838000 -21600 1 MDT} - {-608140800 -25200 0 MST} - {-589388400 -21600 1 MDT} - {-576086400 -25200 0 MST} - {-557938800 -21600 1 MDT} - {-544636800 -25200 0 MST} - {-526489200 -21600 1 MDT} - {-513187200 -25200 0 MST} - {-495039600 -21600 1 MDT} - {-481737600 -25200 0 MST} - {-463590000 -21600 1 MDT} - {-450288000 -25200 0 MST} - {-431535600 -21600 1 MDT} - {-418233600 -25200 0 MST} - {-400086000 -21600 1 MDT} - {-386784000 -25200 0 MST} - {-337186800 -21600 1 MDT} - {-321465600 -25200 0 MST} - {-305737200 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Regina) { + {-9223372036854775808 -25116 0 LMT} + {-2030202084 -25200 0 MST} + {-1632063600 -21600 1 MDT} + {-1614787200 -25200 0 MST} + {-1251651600 -21600 1 MDT} + {-1238349600 -25200 0 MST} + {-1220202000 -21600 1 MDT} + {-1206900000 -25200 0 MST} + {-1188752400 -21600 1 MDT} + {-1175450400 -25200 0 MST} + {-1156698000 -21600 1 MDT} + {-1144000800 -25200 0 MST} + {-1125248400 -21600 1 MDT} + {-1111946400 -25200 0 MST} + {-1032714000 -21600 1 MDT} + {-1016992800 -25200 0 MST} + {-1001264400 -21600 1 MDT} + {-986148000 -25200 0 MST} + {-969814800 -21600 1 MDT} + {-954093600 -25200 0 MST} + {-937760400 -21600 1 MDT} + {-922039200 -25200 0 MST} + {-906310800 -21600 1 MDT} + {-890589600 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-748450800 -21600 1 MDT} + {-732729600 -25200 0 MST} + {-715791600 -21600 1 MDT} + {-702489600 -25200 0 MST} + {-684342000 -21600 1 MDT} + {-671040000 -25200 0 MST} + {-652892400 -21600 1 MDT} + {-639590400 -25200 0 MST} + {-620838000 -21600 1 MDT} + {-608140800 -25200 0 MST} + {-589388400 -21600 1 MDT} + {-576086400 -25200 0 MST} + {-557938800 -21600 1 MDT} + {-544636800 -25200 0 MST} + {-526489200 -21600 1 MDT} + {-513187200 -25200 0 MST} + {-495039600 -21600 1 MDT} + {-481737600 -25200 0 MST} + {-463590000 -21600 1 MDT} + {-450288000 -25200 0 MST} + {-431535600 -21600 1 MDT} + {-418233600 -25200 0 MST} + {-400086000 -21600 1 MDT} + {-386784000 -25200 0 MST} + {-337186800 -21600 1 MDT} + {-321465600 -25200 0 MST} + {-305737200 -21600 0 CST} +} diff --git a/library/tzdata/America/Resolute b/library/tzdata/America/Resolute index 5ac1610..50ab9df 100755 --- a/library/tzdata/America/Resolute +++ b/library/tzdata/America/Resolute @@ -1,249 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Resolute) { - {-9223372036854775808 0 0 zzz} - {-704937600 -21600 0 CST} - {-147895200 -14400 1 CDDT} - {-131565600 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -18000 0 EST} - {986112000 -18000 0 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162108800 -18000 0 EST} - {1162710000 -18000 0 EST} - {1173596400 -18000 0 CDT} - {1194159600 -18000 0 EST} - {1205046000 -18000 0 CDT} - {1225609200 -18000 0 EST} - {1236495600 -18000 0 CDT} - {1257058800 -18000 0 EST} - {1268550000 -18000 0 CDT} - {1289113200 -18000 0 EST} - {1299999600 -18000 0 CDT} - {1320562800 -18000 0 EST} - {1331449200 -18000 0 CDT} - {1352012400 -18000 0 EST} - {1362898800 -18000 0 CDT} - {1383462000 -18000 0 EST} - {1394348400 -18000 0 CDT} - {1414911600 -18000 0 EST} - {1425798000 -18000 0 CDT} - {1446361200 -18000 0 EST} - {1457852400 -18000 0 CDT} - {1478415600 -18000 0 EST} - {1489302000 -18000 0 CDT} - {1509865200 -18000 0 EST} - {1520751600 -18000 0 CDT} - {1541314800 -18000 0 EST} - {1552201200 -18000 0 CDT} - {1572764400 -18000 0 EST} - {1583650800 -18000 0 CDT} - {1604214000 -18000 0 EST} - {1615705200 -18000 0 CDT} - {1636268400 -18000 0 EST} - {1647154800 -18000 0 CDT} - {1667718000 -18000 0 EST} - {1678604400 -18000 0 CDT} - {1699167600 -18000 0 EST} - {1710054000 -18000 0 CDT} - {1730617200 -18000 0 EST} - {1741503600 -18000 0 CDT} - {1762066800 -18000 0 EST} - {1772953200 -18000 0 CDT} - {1793516400 -18000 0 EST} - {1805007600 -18000 0 CDT} - {1825570800 -18000 0 EST} - {1836457200 -18000 0 CDT} - {1857020400 -18000 0 EST} - {1867906800 -18000 0 CDT} - {1888470000 -18000 0 EST} - {1899356400 -18000 0 CDT} - {1919919600 -18000 0 EST} - {1930806000 -18000 0 CDT} - {1951369200 -18000 0 EST} - {1962860400 -18000 0 CDT} - {1983423600 -18000 0 EST} - {1994310000 -18000 0 CDT} - {2014873200 -18000 0 EST} - {2025759600 -18000 0 CDT} - {2046322800 -18000 0 EST} - {2057209200 -18000 0 CDT} - {2077772400 -18000 0 EST} - {2088658800 -18000 0 CDT} - {2109222000 -18000 0 EST} - {2120108400 -18000 0 CDT} - {2140671600 -18000 0 EST} - {2152162800 -18000 0 CDT} - {2172726000 -18000 0 EST} - {2183612400 -18000 0 CDT} - {2204175600 -18000 0 EST} - {2215062000 -18000 0 CDT} - {2235625200 -18000 0 EST} - {2246511600 -18000 0 CDT} - {2267074800 -18000 0 EST} - {2277961200 -18000 0 CDT} - {2298524400 -18000 0 EST} - {2309410800 -18000 0 CDT} - {2329974000 -18000 0 EST} - {2341465200 -18000 0 CDT} - {2362028400 -18000 0 EST} - {2372914800 -18000 0 CDT} - {2393478000 -18000 0 EST} - {2404364400 -18000 0 CDT} - {2424927600 -18000 0 EST} - {2435814000 -18000 0 CDT} - {2456377200 -18000 0 EST} - {2467263600 -18000 0 CDT} - {2487826800 -18000 0 EST} - {2499318000 -18000 0 CDT} - {2519881200 -18000 0 EST} - {2530767600 -18000 0 CDT} - {2551330800 -18000 0 EST} - {2562217200 -18000 0 CDT} - {2582780400 -18000 0 EST} - {2593666800 -18000 0 CDT} - {2614230000 -18000 0 EST} - {2625116400 -18000 0 CDT} - {2645679600 -18000 0 EST} - {2656566000 -18000 0 CDT} - {2677129200 -18000 0 EST} - {2688620400 -18000 0 CDT} - {2709183600 -18000 0 EST} - {2720070000 -18000 0 CDT} - {2740633200 -18000 0 EST} - {2751519600 -18000 0 CDT} - {2772082800 -18000 0 EST} - {2782969200 -18000 0 CDT} - {2803532400 -18000 0 EST} - {2814418800 -18000 0 CDT} - {2834982000 -18000 0 EST} - {2846473200 -18000 0 CDT} - {2867036400 -18000 0 EST} - {2877922800 -18000 0 CDT} - {2898486000 -18000 0 EST} - {2909372400 -18000 0 CDT} - {2929935600 -18000 0 EST} - {2940822000 -18000 0 CDT} - {2961385200 -18000 0 EST} - {2972271600 -18000 0 CDT} - {2992834800 -18000 0 EST} - {3003721200 -18000 0 CDT} - {3024284400 -18000 0 EST} - {3035775600 -18000 0 CDT} - {3056338800 -18000 0 EST} - {3067225200 -18000 0 CDT} - {3087788400 -18000 0 EST} - {3098674800 -18000 0 CDT} - {3119238000 -18000 0 EST} - {3130124400 -18000 0 CDT} - {3150687600 -18000 0 EST} - {3161574000 -18000 0 CDT} - {3182137200 -18000 0 EST} - {3193023600 -18000 0 CDT} - {3213586800 -18000 0 EST} - {3225078000 -18000 0 CDT} - {3245641200 -18000 0 EST} - {3256527600 -18000 0 CDT} - {3277090800 -18000 0 EST} - {3287977200 -18000 0 CDT} - {3308540400 -18000 0 EST} - {3319426800 -18000 0 CDT} - {3339990000 -18000 0 EST} - {3350876400 -18000 0 CDT} - {3371439600 -18000 0 EST} - {3382930800 -18000 0 CDT} - {3403494000 -18000 0 EST} - {3414380400 -18000 0 CDT} - {3434943600 -18000 0 EST} - {3445830000 -18000 0 CDT} - {3466393200 -18000 0 EST} - {3477279600 -18000 0 CDT} - {3497842800 -18000 0 EST} - {3508729200 -18000 0 CDT} - {3529292400 -18000 0 EST} - {3540178800 -18000 0 CDT} - {3560742000 -18000 0 EST} - {3572233200 -18000 0 CDT} - {3592796400 -18000 0 EST} - {3603682800 -18000 0 CDT} - {3624246000 -18000 0 EST} - {3635132400 -18000 0 CDT} - {3655695600 -18000 0 EST} - {3666582000 -18000 0 CDT} - {3687145200 -18000 0 EST} - {3698031600 -18000 0 CDT} - {3718594800 -18000 0 EST} - {3730086000 -18000 0 CDT} - {3750649200 -18000 0 EST} - {3761535600 -18000 0 CDT} - {3782098800 -18000 0 EST} - {3792985200 -18000 0 CDT} - {3813548400 -18000 0 EST} - {3824434800 -18000 0 CDT} - {3844998000 -18000 0 EST} - {3855884400 -18000 0 CDT} - {3876447600 -18000 0 EST} - {3887334000 -18000 0 CDT} - {3907897200 -18000 0 EST} - {3919388400 -18000 0 CDT} - {3939951600 -18000 0 EST} - {3950838000 -18000 0 CDT} - {3971401200 -18000 0 EST} - {3982287600 -18000 0 CDT} - {4002850800 -18000 0 EST} - {4013737200 -18000 0 CDT} - {4034300400 -18000 0 EST} - {4045186800 -18000 0 CDT} - {4065750000 -18000 0 EST} - {4076636400 -18000 0 CDT} - {4097199600 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Resolute) { + {-9223372036854775808 0 0 zzz} + {-704937600 -21600 0 CST} + {-147895200 -14400 1 CDDT} + {-131565600 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -18000 0 EST} + {986112000 -18000 0 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162108800 -18000 0 EST} + {1162710000 -18000 0 EST} + {1173596400 -18000 0 CDT} + {1194159600 -18000 0 EST} + {1205046000 -18000 0 CDT} + {1225609200 -18000 0 EST} + {1236495600 -18000 0 CDT} + {1257058800 -18000 0 EST} + {1268550000 -18000 0 CDT} + {1289113200 -18000 0 EST} + {1299999600 -18000 0 CDT} + {1320562800 -18000 0 EST} + {1331449200 -18000 0 CDT} + {1352012400 -18000 0 EST} + {1362898800 -18000 0 CDT} + {1383462000 -18000 0 EST} + {1394348400 -18000 0 CDT} + {1414911600 -18000 0 EST} + {1425798000 -18000 0 CDT} + {1446361200 -18000 0 EST} + {1457852400 -18000 0 CDT} + {1478415600 -18000 0 EST} + {1489302000 -18000 0 CDT} + {1509865200 -18000 0 EST} + {1520751600 -18000 0 CDT} + {1541314800 -18000 0 EST} + {1552201200 -18000 0 CDT} + {1572764400 -18000 0 EST} + {1583650800 -18000 0 CDT} + {1604214000 -18000 0 EST} + {1615705200 -18000 0 CDT} + {1636268400 -18000 0 EST} + {1647154800 -18000 0 CDT} + {1667718000 -18000 0 EST} + {1678604400 -18000 0 CDT} + {1699167600 -18000 0 EST} + {1710054000 -18000 0 CDT} + {1730617200 -18000 0 EST} + {1741503600 -18000 0 CDT} + {1762066800 -18000 0 EST} + {1772953200 -18000 0 CDT} + {1793516400 -18000 0 EST} + {1805007600 -18000 0 CDT} + {1825570800 -18000 0 EST} + {1836457200 -18000 0 CDT} + {1857020400 -18000 0 EST} + {1867906800 -18000 0 CDT} + {1888470000 -18000 0 EST} + {1899356400 -18000 0 CDT} + {1919919600 -18000 0 EST} + {1930806000 -18000 0 CDT} + {1951369200 -18000 0 EST} + {1962860400 -18000 0 CDT} + {1983423600 -18000 0 EST} + {1994310000 -18000 0 CDT} + {2014873200 -18000 0 EST} + {2025759600 -18000 0 CDT} + {2046322800 -18000 0 EST} + {2057209200 -18000 0 CDT} + {2077772400 -18000 0 EST} + {2088658800 -18000 0 CDT} + {2109222000 -18000 0 EST} + {2120108400 -18000 0 CDT} + {2140671600 -18000 0 EST} + {2152162800 -18000 0 CDT} + {2172726000 -18000 0 EST} + {2183612400 -18000 0 CDT} + {2204175600 -18000 0 EST} + {2215062000 -18000 0 CDT} + {2235625200 -18000 0 EST} + {2246511600 -18000 0 CDT} + {2267074800 -18000 0 EST} + {2277961200 -18000 0 CDT} + {2298524400 -18000 0 EST} + {2309410800 -18000 0 CDT} + {2329974000 -18000 0 EST} + {2341465200 -18000 0 CDT} + {2362028400 -18000 0 EST} + {2372914800 -18000 0 CDT} + {2393478000 -18000 0 EST} + {2404364400 -18000 0 CDT} + {2424927600 -18000 0 EST} + {2435814000 -18000 0 CDT} + {2456377200 -18000 0 EST} + {2467263600 -18000 0 CDT} + {2487826800 -18000 0 EST} + {2499318000 -18000 0 CDT} + {2519881200 -18000 0 EST} + {2530767600 -18000 0 CDT} + {2551330800 -18000 0 EST} + {2562217200 -18000 0 CDT} + {2582780400 -18000 0 EST} + {2593666800 -18000 0 CDT} + {2614230000 -18000 0 EST} + {2625116400 -18000 0 CDT} + {2645679600 -18000 0 EST} + {2656566000 -18000 0 CDT} + {2677129200 -18000 0 EST} + {2688620400 -18000 0 CDT} + {2709183600 -18000 0 EST} + {2720070000 -18000 0 CDT} + {2740633200 -18000 0 EST} + {2751519600 -18000 0 CDT} + {2772082800 -18000 0 EST} + {2782969200 -18000 0 CDT} + {2803532400 -18000 0 EST} + {2814418800 -18000 0 CDT} + {2834982000 -18000 0 EST} + {2846473200 -18000 0 CDT} + {2867036400 -18000 0 EST} + {2877922800 -18000 0 CDT} + {2898486000 -18000 0 EST} + {2909372400 -18000 0 CDT} + {2929935600 -18000 0 EST} + {2940822000 -18000 0 CDT} + {2961385200 -18000 0 EST} + {2972271600 -18000 0 CDT} + {2992834800 -18000 0 EST} + {3003721200 -18000 0 CDT} + {3024284400 -18000 0 EST} + {3035775600 -18000 0 CDT} + {3056338800 -18000 0 EST} + {3067225200 -18000 0 CDT} + {3087788400 -18000 0 EST} + {3098674800 -18000 0 CDT} + {3119238000 -18000 0 EST} + {3130124400 -18000 0 CDT} + {3150687600 -18000 0 EST} + {3161574000 -18000 0 CDT} + {3182137200 -18000 0 EST} + {3193023600 -18000 0 CDT} + {3213586800 -18000 0 EST} + {3225078000 -18000 0 CDT} + {3245641200 -18000 0 EST} + {3256527600 -18000 0 CDT} + {3277090800 -18000 0 EST} + {3287977200 -18000 0 CDT} + {3308540400 -18000 0 EST} + {3319426800 -18000 0 CDT} + {3339990000 -18000 0 EST} + {3350876400 -18000 0 CDT} + {3371439600 -18000 0 EST} + {3382930800 -18000 0 CDT} + {3403494000 -18000 0 EST} + {3414380400 -18000 0 CDT} + {3434943600 -18000 0 EST} + {3445830000 -18000 0 CDT} + {3466393200 -18000 0 EST} + {3477279600 -18000 0 CDT} + {3497842800 -18000 0 EST} + {3508729200 -18000 0 CDT} + {3529292400 -18000 0 EST} + {3540178800 -18000 0 CDT} + {3560742000 -18000 0 EST} + {3572233200 -18000 0 CDT} + {3592796400 -18000 0 EST} + {3603682800 -18000 0 CDT} + {3624246000 -18000 0 EST} + {3635132400 -18000 0 CDT} + {3655695600 -18000 0 EST} + {3666582000 -18000 0 CDT} + {3687145200 -18000 0 EST} + {3698031600 -18000 0 CDT} + {3718594800 -18000 0 EST} + {3730086000 -18000 0 CDT} + {3750649200 -18000 0 EST} + {3761535600 -18000 0 CDT} + {3782098800 -18000 0 EST} + {3792985200 -18000 0 CDT} + {3813548400 -18000 0 EST} + {3824434800 -18000 0 CDT} + {3844998000 -18000 0 EST} + {3855884400 -18000 0 CDT} + {3876447600 -18000 0 EST} + {3887334000 -18000 0 CDT} + {3907897200 -18000 0 EST} + {3919388400 -18000 0 CDT} + {3939951600 -18000 0 EST} + {3950838000 -18000 0 CDT} + {3971401200 -18000 0 EST} + {3982287600 -18000 0 CDT} + {4002850800 -18000 0 EST} + {4013737200 -18000 0 CDT} + {4034300400 -18000 0 EST} + {4045186800 -18000 0 CDT} + {4065750000 -18000 0 EST} + {4076636400 -18000 0 CDT} + {4097199600 -18000 0 EST} +} diff --git a/library/tzdata/America/Rio_Branco b/library/tzdata/America/Rio_Branco index 7669ba8..20889cb 100644 --- a/library/tzdata/America/Rio_Branco +++ b/library/tzdata/America/Rio_Branco @@ -1,36 +1,36 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Rio_Branco) { - {-9223372036854775808 -16272 0 LMT} - {-1767209328 -18000 0 ACT} - {-1206950400 -14400 1 ACST} - {-1191355200 -18000 0 ACT} - {-1175367600 -14400 1 ACST} - {-1159819200 -18000 0 ACT} - {-633812400 -14400 1 ACST} - {-622062000 -18000 0 ACT} - {-602276400 -14400 1 ACST} - {-591825600 -18000 0 ACT} - {-570740400 -14400 1 ACST} - {-560203200 -18000 0 ACT} - {-539118000 -14400 1 ACST} - {-531345600 -18000 0 ACT} - {-191358000 -14400 1 ACST} - {-184190400 -18000 0 ACT} - {-155156400 -14400 1 ACST} - {-150062400 -18000 0 ACT} - {-128890800 -14400 1 ACST} - {-121118400 -18000 0 ACT} - {-99946800 -14400 1 ACST} - {-89582400 -18000 0 ACT} - {-68410800 -14400 1 ACST} - {-57960000 -18000 0 ACT} - {499755600 -14400 1 ACST} - {511243200 -18000 0 ACT} - {530600400 -14400 1 ACST} - {540273600 -18000 0 ACT} - {562136400 -14400 1 ACST} - {571204800 -18000 0 ACT} - {590040000 -18000 0 ACT} - {1214283600 -14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Rio_Branco) { + {-9223372036854775808 -16272 0 LMT} + {-1767209328 -18000 0 ACT} + {-1206950400 -14400 1 ACST} + {-1191355200 -18000 0 ACT} + {-1175367600 -14400 1 ACST} + {-1159819200 -18000 0 ACT} + {-633812400 -14400 1 ACST} + {-622062000 -18000 0 ACT} + {-602276400 -14400 1 ACST} + {-591825600 -18000 0 ACT} + {-570740400 -14400 1 ACST} + {-560203200 -18000 0 ACT} + {-539118000 -14400 1 ACST} + {-531345600 -18000 0 ACT} + {-191358000 -14400 1 ACST} + {-184190400 -18000 0 ACT} + {-155156400 -14400 1 ACST} + {-150062400 -18000 0 ACT} + {-128890800 -14400 1 ACST} + {-121118400 -18000 0 ACT} + {-99946800 -14400 1 ACST} + {-89582400 -18000 0 ACT} + {-68410800 -14400 1 ACST} + {-57960000 -18000 0 ACT} + {499755600 -14400 1 ACST} + {511243200 -18000 0 ACT} + {530600400 -14400 1 ACST} + {540273600 -18000 0 ACT} + {562136400 -14400 1 ACST} + {571204800 -18000 0 ACT} + {590040000 -18000 0 ACT} + {1214283600 -14400 0 AMT} +} diff --git a/library/tzdata/America/Rosario b/library/tzdata/America/Rosario index d613ce9..6687f88 100644 --- a/library/tzdata/America/Rosario +++ b/library/tzdata/America/Rosario @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Argentina/Cordoba)]} { - LoadTimeZoneFile America/Argentina/Cordoba -} -set TZData(:America/Rosario) $TZData(:America/Argentina/Cordoba) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Argentina/Cordoba)]} { + LoadTimeZoneFile America/Argentina/Cordoba +} +set TZData(:America/Rosario) $TZData(:America/Argentina/Cordoba) diff --git a/library/tzdata/America/Santarem b/library/tzdata/America/Santarem index ada2898..b6e9264 100644 --- a/library/tzdata/America/Santarem +++ b/library/tzdata/America/Santarem @@ -1,36 +1,36 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Santarem) { - {-9223372036854775808 -13128 0 LMT} - {-1767212472 -14400 0 AMT} - {-1206954000 -10800 1 AMST} - {-1191358800 -14400 0 AMT} - {-1175371200 -10800 1 AMST} - {-1159822800 -14400 0 AMT} - {-633816000 -10800 1 AMST} - {-622065600 -14400 0 AMT} - {-602280000 -10800 1 AMST} - {-591829200 -14400 0 AMT} - {-570744000 -10800 1 AMST} - {-560206800 -14400 0 AMT} - {-539121600 -10800 1 AMST} - {-531349200 -14400 0 AMT} - {-191361600 -10800 1 AMST} - {-184194000 -14400 0 AMT} - {-155160000 -10800 1 AMST} - {-150066000 -14400 0 AMT} - {-128894400 -10800 1 AMST} - {-121122000 -14400 0 AMT} - {-99950400 -10800 1 AMST} - {-89586000 -14400 0 AMT} - {-68414400 -10800 1 AMST} - {-57963600 -14400 0 AMT} - {499752000 -10800 1 AMST} - {511239600 -14400 0 AMT} - {530596800 -10800 1 AMST} - {540270000 -14400 0 AMT} - {562132800 -10800 1 AMST} - {571201200 -14400 0 AMT} - {590036400 -14400 0 AMT} - {1214280000 -10800 0 BRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Santarem) { + {-9223372036854775808 -13128 0 LMT} + {-1767212472 -14400 0 AMT} + {-1206954000 -10800 1 AMST} + {-1191358800 -14400 0 AMT} + {-1175371200 -10800 1 AMST} + {-1159822800 -14400 0 AMT} + {-633816000 -10800 1 AMST} + {-622065600 -14400 0 AMT} + {-602280000 -10800 1 AMST} + {-591829200 -14400 0 AMT} + {-570744000 -10800 1 AMST} + {-560206800 -14400 0 AMT} + {-539121600 -10800 1 AMST} + {-531349200 -14400 0 AMT} + {-191361600 -10800 1 AMST} + {-184194000 -14400 0 AMT} + {-155160000 -10800 1 AMST} + {-150066000 -14400 0 AMT} + {-128894400 -10800 1 AMST} + {-121122000 -14400 0 AMT} + {-99950400 -10800 1 AMST} + {-89586000 -14400 0 AMT} + {-68414400 -10800 1 AMST} + {-57963600 -14400 0 AMT} + {499752000 -10800 1 AMST} + {511239600 -14400 0 AMT} + {530596800 -10800 1 AMST} + {540270000 -14400 0 AMT} + {562132800 -10800 1 AMST} + {571201200 -14400 0 AMT} + {590036400 -14400 0 AMT} + {1214280000 -10800 0 BRT} +} diff --git a/library/tzdata/America/Santiago b/library/tzdata/America/Santiago index 2d54d00..9f1d358 100644 --- a/library/tzdata/America/Santiago +++ b/library/tzdata/America/Santiago @@ -1,291 +1,291 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Santiago) { - {-9223372036854775808 -16966 0 LMT} - {-2524504634 -16966 0 SMT} - {-1893439034 -18000 0 CLT} - {-1688410800 -16966 0 SMT} - {-1619983034 -14400 0 CLT} - {-1593806400 -16966 0 SMT} - {-1335986234 -18000 0 CLT} - {-1335985200 -14400 1 CLST} - {-1317585600 -18000 0 CLT} - {-1304362800 -14400 1 CLST} - {-1286049600 -18000 0 CLT} - {-1272826800 -14400 1 CLST} - {-1254513600 -18000 0 CLT} - {-1241290800 -14400 1 CLST} - {-1222977600 -18000 0 CLT} - {-1209754800 -14400 1 CLST} - {-1191355200 -18000 0 CLT} - {-1178132400 -14400 1 CLST} - {-870552000 -18000 0 CLT} - {-865278000 -14400 1 CLST} - {-740520000 -14400 1 CLST} - {-736376400 -18000 0 CLT} - {-718056000 -18000 0 CLT} - {-713646000 -14400 0 CLT} - {-36619200 -10800 1 CLST} - {-23922000 -14400 0 CLT} - {-3355200 -10800 1 CLST} - {7527600 -14400 0 CLT} - {24465600 -10800 1 CLST} - {37767600 -14400 0 CLT} - {55915200 -10800 1 CLST} - {69217200 -14400 0 CLT} - {87969600 -10800 1 CLST} - {100666800 -14400 0 CLT} - {118209600 -10800 1 CLST} - {132116400 -14400 0 CLT} - {150868800 -10800 1 CLST} - {163566000 -14400 0 CLT} - {182318400 -10800 1 CLST} - {195620400 -14400 0 CLT} - {213768000 -10800 1 CLST} - {227070000 -14400 0 CLT} - {245217600 -10800 1 CLST} - {258519600 -14400 0 CLT} - {277272000 -10800 1 CLST} - {289969200 -14400 0 CLT} - {308721600 -10800 1 CLST} - {321418800 -14400 0 CLT} - {340171200 -10800 1 CLST} - {353473200 -14400 0 CLT} - {371620800 -10800 1 CLST} - {384922800 -14400 0 CLT} - {403070400 -10800 1 CLST} - {416372400 -14400 0 CLT} - {434520000 -10800 1 CLST} - {447822000 -14400 0 CLT} - {466574400 -10800 1 CLST} - {479271600 -14400 0 CLT} - {498024000 -10800 1 CLST} - {510721200 -14400 0 CLT} - {529473600 -10800 1 CLST} - {545194800 -14400 0 CLT} - {560923200 -10800 1 CLST} - {574225200 -14400 0 CLT} - {591768000 -10800 1 CLST} - {605674800 -14400 0 CLT} - {624427200 -10800 1 CLST} - {637729200 -14400 0 CLT} - {653457600 -10800 1 CLST} - {668574000 -14400 0 CLT} - {687326400 -10800 1 CLST} - {700628400 -14400 0 CLT} - {718776000 -10800 1 CLST} - {732078000 -14400 0 CLT} - {750225600 -10800 1 CLST} - {763527600 -14400 0 CLT} - {781675200 -10800 1 CLST} - {794977200 -14400 0 CLT} - {813729600 -10800 1 CLST} - {826426800 -14400 0 CLT} - {845179200 -10800 1 CLST} - {859690800 -14400 0 CLT} - {876628800 -10800 1 CLST} - {889930800 -14400 0 CLT} - {906868800 -10800 1 CLST} - {923194800 -14400 0 CLT} - {939528000 -10800 1 CLST} - {952830000 -14400 0 CLT} - {971582400 -10800 1 CLST} - {984279600 -14400 0 CLT} - {1003032000 -10800 1 CLST} - {1015729200 -14400 0 CLT} - {1034481600 -10800 1 CLST} - {1047178800 -14400 0 CLT} - {1065931200 -10800 1 CLST} - {1079233200 -14400 0 CLT} - {1097380800 -10800 1 CLST} - {1110682800 -14400 0 CLT} - {1128830400 -10800 1 CLST} - {1142132400 -14400 0 CLT} - {1160884800 -10800 1 CLST} - {1173582000 -14400 0 CLT} - {1192334400 -10800 1 CLST} - {1206846000 -14400 0 CLT} - {1223784000 -10800 1 CLST} - {1237086000 -14400 0 CLT} - {1255233600 -10800 1 CLST} - {1268535600 -14400 0 CLT} - {1286683200 -10800 1 CLST} - {1299985200 -14400 0 CLT} - {1318132800 -10800 1 CLST} - {1331434800 -14400 0 CLT} - {1350187200 -10800 1 CLST} - {1362884400 -14400 0 CLT} - {1381636800 -10800 1 CLST} - {1394334000 -14400 0 CLT} - {1413086400 -10800 1 CLST} - {1426388400 -14400 0 CLT} - {1444536000 -10800 1 CLST} - {1457838000 -14400 0 CLT} - {1475985600 -10800 1 CLST} - {1489287600 -14400 0 CLT} - {1508040000 -10800 1 CLST} - {1520737200 -14400 0 CLT} - {1539489600 -10800 1 CLST} - {1552186800 -14400 0 CLT} - {1570939200 -10800 1 CLST} - {1584241200 -14400 0 CLT} - {1602388800 -10800 1 CLST} - {1615690800 -14400 0 CLT} - {1633838400 -10800 1 CLST} - {1647140400 -14400 0 CLT} - {1665288000 -10800 1 CLST} - {1678590000 -14400 0 CLT} - {1697342400 -10800 1 CLST} - {1710039600 -14400 0 CLT} - {1728792000 -10800 1 CLST} - {1741489200 -14400 0 CLT} - {1760241600 -10800 1 CLST} - {1773543600 -14400 0 CLT} - {1791691200 -10800 1 CLST} - {1804993200 -14400 0 CLT} - {1823140800 -10800 1 CLST} - {1836442800 -14400 0 CLT} - {1855195200 -10800 1 CLST} - {1867892400 -14400 0 CLT} - {1886644800 -10800 1 CLST} - {1899342000 -14400 0 CLT} - {1918094400 -10800 1 CLST} - {1930791600 -14400 0 CLT} - {1949544000 -10800 1 CLST} - {1962846000 -14400 0 CLT} - {1980993600 -10800 1 CLST} - {1994295600 -14400 0 CLT} - {2012443200 -10800 1 CLST} - {2025745200 -14400 0 CLT} - {2044497600 -10800 1 CLST} - {2057194800 -14400 0 CLT} - {2075947200 -10800 1 CLST} - {2088644400 -14400 0 CLT} - {2107396800 -10800 1 CLST} - {2120698800 -14400 0 CLT} - {2138846400 -10800 1 CLST} - {2152148400 -14400 0 CLT} - {2170296000 -10800 1 CLST} - {2183598000 -14400 0 CLT} - {2201745600 -10800 1 CLST} - {2215047600 -14400 0 CLT} - {2233800000 -10800 1 CLST} - {2246497200 -14400 0 CLT} - {2265249600 -10800 1 CLST} - {2277946800 -14400 0 CLT} - {2296699200 -10800 1 CLST} - {2310001200 -14400 0 CLT} - {2328148800 -10800 1 CLST} - {2341450800 -14400 0 CLT} - {2359598400 -10800 1 CLST} - {2372900400 -14400 0 CLT} - {2391652800 -10800 1 CLST} - {2404350000 -14400 0 CLT} - {2423102400 -10800 1 CLST} - {2435799600 -14400 0 CLT} - {2454552000 -10800 1 CLST} - {2467854000 -14400 0 CLT} - {2486001600 -10800 1 CLST} - {2499303600 -14400 0 CLT} - {2517451200 -10800 1 CLST} - {2530753200 -14400 0 CLT} - {2548900800 -10800 1 CLST} - {2562202800 -14400 0 CLT} - {2580955200 -10800 1 CLST} - {2593652400 -14400 0 CLT} - {2612404800 -10800 1 CLST} - {2625102000 -14400 0 CLT} - {2643854400 -10800 1 CLST} - {2657156400 -14400 0 CLT} - {2675304000 -10800 1 CLST} - {2688606000 -14400 0 CLT} - {2706753600 -10800 1 CLST} - {2720055600 -14400 0 CLT} - {2738808000 -10800 1 CLST} - {2751505200 -14400 0 CLT} - {2770257600 -10800 1 CLST} - {2782954800 -14400 0 CLT} - {2801707200 -10800 1 CLST} - {2814404400 -14400 0 CLT} - {2833156800 -10800 1 CLST} - {2846458800 -14400 0 CLT} - {2864606400 -10800 1 CLST} - {2877908400 -14400 0 CLT} - {2896056000 -10800 1 CLST} - {2909358000 -14400 0 CLT} - {2928110400 -10800 1 CLST} - {2940807600 -14400 0 CLT} - {2959560000 -10800 1 CLST} - {2972257200 -14400 0 CLT} - {2991009600 -10800 1 CLST} - {3004311600 -14400 0 CLT} - {3022459200 -10800 1 CLST} - {3035761200 -14400 0 CLT} - {3053908800 -10800 1 CLST} - {3067210800 -14400 0 CLT} - {3085358400 -10800 1 CLST} - {3098660400 -14400 0 CLT} - {3117412800 -10800 1 CLST} - {3130110000 -14400 0 CLT} - {3148862400 -10800 1 CLST} - {3161559600 -14400 0 CLT} - {3180312000 -10800 1 CLST} - {3193614000 -14400 0 CLT} - {3211761600 -10800 1 CLST} - {3225063600 -14400 0 CLT} - {3243211200 -10800 1 CLST} - {3256513200 -14400 0 CLT} - {3275265600 -10800 1 CLST} - {3287962800 -14400 0 CLT} - {3306715200 -10800 1 CLST} - {3319412400 -14400 0 CLT} - {3338164800 -10800 1 CLST} - {3351466800 -14400 0 CLT} - {3369614400 -10800 1 CLST} - {3382916400 -14400 0 CLT} - {3401064000 -10800 1 CLST} - {3414366000 -14400 0 CLT} - {3432513600 -10800 1 CLST} - {3445815600 -14400 0 CLT} - {3464568000 -10800 1 CLST} - {3477265200 -14400 0 CLT} - {3496017600 -10800 1 CLST} - {3508714800 -14400 0 CLT} - {3527467200 -10800 1 CLST} - {3540769200 -14400 0 CLT} - {3558916800 -10800 1 CLST} - {3572218800 -14400 0 CLT} - {3590366400 -10800 1 CLST} - {3603668400 -14400 0 CLT} - {3622420800 -10800 1 CLST} - {3635118000 -14400 0 CLT} - {3653870400 -10800 1 CLST} - {3666567600 -14400 0 CLT} - {3685320000 -10800 1 CLST} - {3698017200 -14400 0 CLT} - {3716769600 -10800 1 CLST} - {3730071600 -14400 0 CLT} - {3748219200 -10800 1 CLST} - {3761521200 -14400 0 CLT} - {3779668800 -10800 1 CLST} - {3792970800 -14400 0 CLT} - {3811723200 -10800 1 CLST} - {3824420400 -14400 0 CLT} - {3843172800 -10800 1 CLST} - {3855870000 -14400 0 CLT} - {3874622400 -10800 1 CLST} - {3887924400 -14400 0 CLT} - {3906072000 -10800 1 CLST} - {3919374000 -14400 0 CLT} - {3937521600 -10800 1 CLST} - {3950823600 -14400 0 CLT} - {3968971200 -10800 1 CLST} - {3982273200 -14400 0 CLT} - {4001025600 -10800 1 CLST} - {4013722800 -14400 0 CLT} - {4032475200 -10800 1 CLST} - {4045172400 -14400 0 CLT} - {4063924800 -10800 1 CLST} - {4077226800 -14400 0 CLT} - {4095374400 -10800 1 CLST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Santiago) { + {-9223372036854775808 -16966 0 LMT} + {-2524504634 -16966 0 SMT} + {-1893439034 -18000 0 CLT} + {-1688410800 -16966 0 SMT} + {-1619983034 -14400 0 CLT} + {-1593806400 -16966 0 SMT} + {-1335986234 -18000 0 CLT} + {-1335985200 -14400 1 CLST} + {-1317585600 -18000 0 CLT} + {-1304362800 -14400 1 CLST} + {-1286049600 -18000 0 CLT} + {-1272826800 -14400 1 CLST} + {-1254513600 -18000 0 CLT} + {-1241290800 -14400 1 CLST} + {-1222977600 -18000 0 CLT} + {-1209754800 -14400 1 CLST} + {-1191355200 -18000 0 CLT} + {-1178132400 -14400 1 CLST} + {-870552000 -18000 0 CLT} + {-865278000 -14400 1 CLST} + {-740520000 -14400 1 CLST} + {-736376400 -18000 0 CLT} + {-718056000 -18000 0 CLT} + {-713646000 -14400 0 CLT} + {-36619200 -10800 1 CLST} + {-23922000 -14400 0 CLT} + {-3355200 -10800 1 CLST} + {7527600 -14400 0 CLT} + {24465600 -10800 1 CLST} + {37767600 -14400 0 CLT} + {55915200 -10800 1 CLST} + {69217200 -14400 0 CLT} + {87969600 -10800 1 CLST} + {100666800 -14400 0 CLT} + {118209600 -10800 1 CLST} + {132116400 -14400 0 CLT} + {150868800 -10800 1 CLST} + {163566000 -14400 0 CLT} + {182318400 -10800 1 CLST} + {195620400 -14400 0 CLT} + {213768000 -10800 1 CLST} + {227070000 -14400 0 CLT} + {245217600 -10800 1 CLST} + {258519600 -14400 0 CLT} + {277272000 -10800 1 CLST} + {289969200 -14400 0 CLT} + {308721600 -10800 1 CLST} + {321418800 -14400 0 CLT} + {340171200 -10800 1 CLST} + {353473200 -14400 0 CLT} + {371620800 -10800 1 CLST} + {384922800 -14400 0 CLT} + {403070400 -10800 1 CLST} + {416372400 -14400 0 CLT} + {434520000 -10800 1 CLST} + {447822000 -14400 0 CLT} + {466574400 -10800 1 CLST} + {479271600 -14400 0 CLT} + {498024000 -10800 1 CLST} + {510721200 -14400 0 CLT} + {529473600 -10800 1 CLST} + {545194800 -14400 0 CLT} + {560923200 -10800 1 CLST} + {574225200 -14400 0 CLT} + {591768000 -10800 1 CLST} + {605674800 -14400 0 CLT} + {624427200 -10800 1 CLST} + {637729200 -14400 0 CLT} + {653457600 -10800 1 CLST} + {668574000 -14400 0 CLT} + {687326400 -10800 1 CLST} + {700628400 -14400 0 CLT} + {718776000 -10800 1 CLST} + {732078000 -14400 0 CLT} + {750225600 -10800 1 CLST} + {763527600 -14400 0 CLT} + {781675200 -10800 1 CLST} + {794977200 -14400 0 CLT} + {813729600 -10800 1 CLST} + {826426800 -14400 0 CLT} + {845179200 -10800 1 CLST} + {859690800 -14400 0 CLT} + {876628800 -10800 1 CLST} + {889930800 -14400 0 CLT} + {906868800 -10800 1 CLST} + {923194800 -14400 0 CLT} + {939528000 -10800 1 CLST} + {952830000 -14400 0 CLT} + {971582400 -10800 1 CLST} + {984279600 -14400 0 CLT} + {1003032000 -10800 1 CLST} + {1015729200 -14400 0 CLT} + {1034481600 -10800 1 CLST} + {1047178800 -14400 0 CLT} + {1065931200 -10800 1 CLST} + {1079233200 -14400 0 CLT} + {1097380800 -10800 1 CLST} + {1110682800 -14400 0 CLT} + {1128830400 -10800 1 CLST} + {1142132400 -14400 0 CLT} + {1160884800 -10800 1 CLST} + {1173582000 -14400 0 CLT} + {1192334400 -10800 1 CLST} + {1206846000 -14400 0 CLT} + {1223784000 -10800 1 CLST} + {1237086000 -14400 0 CLT} + {1255233600 -10800 1 CLST} + {1268535600 -14400 0 CLT} + {1286683200 -10800 1 CLST} + {1299985200 -14400 0 CLT} + {1318132800 -10800 1 CLST} + {1331434800 -14400 0 CLT} + {1350187200 -10800 1 CLST} + {1362884400 -14400 0 CLT} + {1381636800 -10800 1 CLST} + {1394334000 -14400 0 CLT} + {1413086400 -10800 1 CLST} + {1426388400 -14400 0 CLT} + {1444536000 -10800 1 CLST} + {1457838000 -14400 0 CLT} + {1475985600 -10800 1 CLST} + {1489287600 -14400 0 CLT} + {1508040000 -10800 1 CLST} + {1520737200 -14400 0 CLT} + {1539489600 -10800 1 CLST} + {1552186800 -14400 0 CLT} + {1570939200 -10800 1 CLST} + {1584241200 -14400 0 CLT} + {1602388800 -10800 1 CLST} + {1615690800 -14400 0 CLT} + {1633838400 -10800 1 CLST} + {1647140400 -14400 0 CLT} + {1665288000 -10800 1 CLST} + {1678590000 -14400 0 CLT} + {1697342400 -10800 1 CLST} + {1710039600 -14400 0 CLT} + {1728792000 -10800 1 CLST} + {1741489200 -14400 0 CLT} + {1760241600 -10800 1 CLST} + {1773543600 -14400 0 CLT} + {1791691200 -10800 1 CLST} + {1804993200 -14400 0 CLT} + {1823140800 -10800 1 CLST} + {1836442800 -14400 0 CLT} + {1855195200 -10800 1 CLST} + {1867892400 -14400 0 CLT} + {1886644800 -10800 1 CLST} + {1899342000 -14400 0 CLT} + {1918094400 -10800 1 CLST} + {1930791600 -14400 0 CLT} + {1949544000 -10800 1 CLST} + {1962846000 -14400 0 CLT} + {1980993600 -10800 1 CLST} + {1994295600 -14400 0 CLT} + {2012443200 -10800 1 CLST} + {2025745200 -14400 0 CLT} + {2044497600 -10800 1 CLST} + {2057194800 -14400 0 CLT} + {2075947200 -10800 1 CLST} + {2088644400 -14400 0 CLT} + {2107396800 -10800 1 CLST} + {2120698800 -14400 0 CLT} + {2138846400 -10800 1 CLST} + {2152148400 -14400 0 CLT} + {2170296000 -10800 1 CLST} + {2183598000 -14400 0 CLT} + {2201745600 -10800 1 CLST} + {2215047600 -14400 0 CLT} + {2233800000 -10800 1 CLST} + {2246497200 -14400 0 CLT} + {2265249600 -10800 1 CLST} + {2277946800 -14400 0 CLT} + {2296699200 -10800 1 CLST} + {2310001200 -14400 0 CLT} + {2328148800 -10800 1 CLST} + {2341450800 -14400 0 CLT} + {2359598400 -10800 1 CLST} + {2372900400 -14400 0 CLT} + {2391652800 -10800 1 CLST} + {2404350000 -14400 0 CLT} + {2423102400 -10800 1 CLST} + {2435799600 -14400 0 CLT} + {2454552000 -10800 1 CLST} + {2467854000 -14400 0 CLT} + {2486001600 -10800 1 CLST} + {2499303600 -14400 0 CLT} + {2517451200 -10800 1 CLST} + {2530753200 -14400 0 CLT} + {2548900800 -10800 1 CLST} + {2562202800 -14400 0 CLT} + {2580955200 -10800 1 CLST} + {2593652400 -14400 0 CLT} + {2612404800 -10800 1 CLST} + {2625102000 -14400 0 CLT} + {2643854400 -10800 1 CLST} + {2657156400 -14400 0 CLT} + {2675304000 -10800 1 CLST} + {2688606000 -14400 0 CLT} + {2706753600 -10800 1 CLST} + {2720055600 -14400 0 CLT} + {2738808000 -10800 1 CLST} + {2751505200 -14400 0 CLT} + {2770257600 -10800 1 CLST} + {2782954800 -14400 0 CLT} + {2801707200 -10800 1 CLST} + {2814404400 -14400 0 CLT} + {2833156800 -10800 1 CLST} + {2846458800 -14400 0 CLT} + {2864606400 -10800 1 CLST} + {2877908400 -14400 0 CLT} + {2896056000 -10800 1 CLST} + {2909358000 -14400 0 CLT} + {2928110400 -10800 1 CLST} + {2940807600 -14400 0 CLT} + {2959560000 -10800 1 CLST} + {2972257200 -14400 0 CLT} + {2991009600 -10800 1 CLST} + {3004311600 -14400 0 CLT} + {3022459200 -10800 1 CLST} + {3035761200 -14400 0 CLT} + {3053908800 -10800 1 CLST} + {3067210800 -14400 0 CLT} + {3085358400 -10800 1 CLST} + {3098660400 -14400 0 CLT} + {3117412800 -10800 1 CLST} + {3130110000 -14400 0 CLT} + {3148862400 -10800 1 CLST} + {3161559600 -14400 0 CLT} + {3180312000 -10800 1 CLST} + {3193614000 -14400 0 CLT} + {3211761600 -10800 1 CLST} + {3225063600 -14400 0 CLT} + {3243211200 -10800 1 CLST} + {3256513200 -14400 0 CLT} + {3275265600 -10800 1 CLST} + {3287962800 -14400 0 CLT} + {3306715200 -10800 1 CLST} + {3319412400 -14400 0 CLT} + {3338164800 -10800 1 CLST} + {3351466800 -14400 0 CLT} + {3369614400 -10800 1 CLST} + {3382916400 -14400 0 CLT} + {3401064000 -10800 1 CLST} + {3414366000 -14400 0 CLT} + {3432513600 -10800 1 CLST} + {3445815600 -14400 0 CLT} + {3464568000 -10800 1 CLST} + {3477265200 -14400 0 CLT} + {3496017600 -10800 1 CLST} + {3508714800 -14400 0 CLT} + {3527467200 -10800 1 CLST} + {3540769200 -14400 0 CLT} + {3558916800 -10800 1 CLST} + {3572218800 -14400 0 CLT} + {3590366400 -10800 1 CLST} + {3603668400 -14400 0 CLT} + {3622420800 -10800 1 CLST} + {3635118000 -14400 0 CLT} + {3653870400 -10800 1 CLST} + {3666567600 -14400 0 CLT} + {3685320000 -10800 1 CLST} + {3698017200 -14400 0 CLT} + {3716769600 -10800 1 CLST} + {3730071600 -14400 0 CLT} + {3748219200 -10800 1 CLST} + {3761521200 -14400 0 CLT} + {3779668800 -10800 1 CLST} + {3792970800 -14400 0 CLT} + {3811723200 -10800 1 CLST} + {3824420400 -14400 0 CLT} + {3843172800 -10800 1 CLST} + {3855870000 -14400 0 CLT} + {3874622400 -10800 1 CLST} + {3887924400 -14400 0 CLT} + {3906072000 -10800 1 CLST} + {3919374000 -14400 0 CLT} + {3937521600 -10800 1 CLST} + {3950823600 -14400 0 CLT} + {3968971200 -10800 1 CLST} + {3982273200 -14400 0 CLT} + {4001025600 -10800 1 CLST} + {4013722800 -14400 0 CLT} + {4032475200 -10800 1 CLST} + {4045172400 -14400 0 CLT} + {4063924800 -10800 1 CLST} + {4077226800 -14400 0 CLT} + {4095374400 -10800 1 CLST} +} diff --git a/library/tzdata/America/Santo_Domingo b/library/tzdata/America/Santo_Domingo index 4882085..7706918 100644 --- a/library/tzdata/America/Santo_Domingo +++ b/library/tzdata/America/Santo_Domingo @@ -1,21 +1,21 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Santo_Domingo) { - {-9223372036854775808 -16776 0 LMT} - {-2524504824 -16800 0 SDMT} - {-1159773600 -18000 0 EST} - {-100119600 -14400 1 EDT} - {-89668800 -18000 0 EST} - {-5770800 -16200 1 EHDT} - {4422600 -18000 0 EST} - {25678800 -16200 1 EHDT} - {33193800 -18000 0 EST} - {57733200 -16200 1 EHDT} - {64816200 -18000 0 EST} - {89182800 -16200 1 EHDT} - {96438600 -18000 0 EST} - {120632400 -16200 1 EHDT} - {127974600 -18000 0 EST} - {152082000 -14400 0 AST} - {975823200 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Santo_Domingo) { + {-9223372036854775808 -16776 0 LMT} + {-2524504824 -16800 0 SDMT} + {-1159773600 -18000 0 EST} + {-100119600 -14400 1 EDT} + {-89668800 -18000 0 EST} + {-5770800 -16200 1 EHDT} + {4422600 -18000 0 EST} + {25678800 -16200 1 EHDT} + {33193800 -18000 0 EST} + {57733200 -16200 1 EHDT} + {64816200 -18000 0 EST} + {89182800 -16200 1 EHDT} + {96438600 -18000 0 EST} + {120632400 -16200 1 EHDT} + {127974600 -18000 0 EST} + {152082000 -14400 0 AST} + {975823200 -14400 0 AST} +} diff --git a/library/tzdata/America/Sao_Paulo b/library/tzdata/America/Sao_Paulo index c2f11d1..8d70063 100644 --- a/library/tzdata/America/Sao_Paulo +++ b/library/tzdata/America/Sao_Paulo @@ -1,258 +1,258 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Sao_Paulo) { - {-9223372036854775808 -11188 0 LMT} - {-1767214412 -10800 0 BRT} - {-1206957600 -7200 1 BRST} - {-1191362400 -10800 0 BRT} - {-1175374800 -7200 1 BRST} - {-1159826400 -10800 0 BRT} - {-633819600 -7200 1 BRST} - {-622069200 -10800 0 BRT} - {-602283600 -7200 1 BRST} - {-591832800 -10800 0 BRT} - {-570747600 -7200 1 BRST} - {-560210400 -10800 0 BRT} - {-539125200 -7200 1 BRST} - {-531352800 -10800 0 BRT} - {-195429600 -7200 1 BRST} - {-189381600 -7200 0 BRT} - {-184197600 -10800 0 BRT} - {-155163600 -7200 1 BRST} - {-150069600 -10800 0 BRT} - {-128898000 -7200 1 BRST} - {-121125600 -10800 0 BRT} - {-99954000 -7200 1 BRST} - {-89589600 -10800 0 BRT} - {-68418000 -7200 1 BRST} - {-57967200 -10800 0 BRT} - {499748400 -7200 1 BRST} - {511236000 -10800 0 BRT} - {530593200 -7200 1 BRST} - {540266400 -10800 0 BRT} - {562129200 -7200 1 BRST} - {571197600 -10800 0 BRT} - {592974000 -7200 1 BRST} - {602042400 -10800 0 BRT} - {624423600 -7200 1 BRST} - {634701600 -10800 0 BRT} - {656478000 -7200 1 BRST} - {666756000 -10800 0 BRT} - {687927600 -7200 1 BRST} - {697600800 -10800 0 BRT} - {719982000 -7200 1 BRST} - {728445600 -10800 0 BRT} - {750826800 -7200 1 BRST} - {761709600 -10800 0 BRT} - {782276400 -7200 1 BRST} - {793159200 -10800 0 BRT} - {813726000 -7200 1 BRST} - {824004000 -10800 0 BRT} - {844570800 -7200 1 BRST} - {856058400 -10800 0 BRT} - {876106800 -7200 1 BRST} - {888717600 -10800 0 BRT} - {908074800 -7200 1 BRST} - {919562400 -10800 0 BRT} - {938919600 -7200 1 BRST} - {951616800 -10800 0 BRT} - {970974000 -7200 1 BRST} - {982461600 -10800 0 BRT} - {1003028400 -7200 1 BRST} - {1013911200 -10800 0 BRT} - {1036292400 -7200 1 BRST} - {1045360800 -10800 0 BRT} - {1066532400 -7200 1 BRST} - {1076810400 -10800 0 BRT} - {1099364400 -7200 1 BRST} - {1108864800 -10800 0 BRT} - {1129431600 -7200 1 BRST} - {1140314400 -10800 0 BRT} - {1162695600 -7200 1 BRST} - {1172368800 -10800 0 BRT} - {1192330800 -7200 1 BRST} - {1203213600 -10800 0 BRT} - {1224385200 -7200 1 BRST} - {1234663200 -10800 0 BRT} - {1255834800 -7200 1 BRST} - {1266717600 -10800 0 BRT} - {1287284400 -7200 1 BRST} - {1298167200 -10800 0 BRT} - {1318734000 -7200 1 BRST} - {1330221600 -10800 0 BRT} - {1350788400 -7200 1 BRST} - {1361066400 -10800 0 BRT} - {1382238000 -7200 1 BRST} - {1392516000 -10800 0 BRT} - {1413687600 -7200 1 BRST} - {1424570400 -10800 0 BRT} - {1445137200 -7200 1 BRST} - {1456020000 -10800 0 BRT} - {1476586800 -7200 1 BRST} - {1487469600 -10800 0 BRT} - {1508036400 -7200 1 BRST} - {1518919200 -10800 0 BRT} - {1540090800 -7200 1 BRST} - {1550368800 -10800 0 BRT} - {1571540400 -7200 1 BRST} - {1581818400 -10800 0 BRT} - {1602990000 -7200 1 BRST} - {1613872800 -10800 0 BRT} - {1634439600 -7200 1 BRST} - {1645322400 -10800 0 BRT} - {1665889200 -7200 1 BRST} - {1677376800 -10800 0 BRT} - {1697338800 -7200 1 BRST} - {1708221600 -10800 0 BRT} - {1729393200 -7200 1 BRST} - {1739671200 -10800 0 BRT} - {1760842800 -7200 1 BRST} - {1771725600 -10800 0 BRT} - {1792292400 -7200 1 BRST} - {1803175200 -10800 0 BRT} - {1823742000 -7200 1 BRST} - {1834624800 -10800 0 BRT} - {1855191600 -7200 1 BRST} - {1866074400 -10800 0 BRT} - {1887246000 -7200 1 BRST} - {1897524000 -10800 0 BRT} - {1918695600 -7200 1 BRST} - {1928973600 -10800 0 BRT} - {1950145200 -7200 1 BRST} - {1960423200 -10800 0 BRT} - {1981594800 -7200 1 BRST} - {1992477600 -10800 0 BRT} - {2013044400 -7200 1 BRST} - {2024532000 -10800 0 BRT} - {2044494000 -7200 1 BRST} - {2055376800 -10800 0 BRT} - {2076548400 -7200 1 BRST} - {2086826400 -10800 0 BRT} - {2107998000 -7200 1 BRST} - {2118880800 -10800 0 BRT} - {2139447600 -7200 1 BRST} - {2150330400 -10800 0 BRT} - {2170897200 -7200 1 BRST} - {2181780000 -10800 0 BRT} - {2202346800 -7200 1 BRST} - {2213229600 -10800 0 BRT} - {2234401200 -7200 1 BRST} - {2244679200 -10800 0 BRT} - {2265850800 -7200 1 BRST} - {2276128800 -10800 0 BRT} - {2297300400 -7200 1 BRST} - {2307578400 -10800 0 BRT} - {2328750000 -7200 1 BRST} - {2339632800 -10800 0 BRT} - {2360199600 -7200 1 BRST} - {2371082400 -10800 0 BRT} - {2391649200 -7200 1 BRST} - {2402532000 -10800 0 BRT} - {2423703600 -7200 1 BRST} - {2433981600 -10800 0 BRT} - {2455153200 -7200 1 BRST} - {2465431200 -10800 0 BRT} - {2486602800 -7200 1 BRST} - {2497485600 -10800 0 BRT} - {2518052400 -7200 1 BRST} - {2528935200 -10800 0 BRT} - {2549502000 -7200 1 BRST} - {2560384800 -10800 0 BRT} - {2580951600 -7200 1 BRST} - {2591834400 -10800 0 BRT} - {2613006000 -7200 1 BRST} - {2623284000 -10800 0 BRT} - {2644455600 -7200 1 BRST} - {2654733600 -10800 0 BRT} - {2675905200 -7200 1 BRST} - {2686788000 -10800 0 BRT} - {2707354800 -7200 1 BRST} - {2718237600 -10800 0 BRT} - {2738804400 -7200 1 BRST} - {2749687200 -10800 0 BRT} - {2770858800 -7200 1 BRST} - {2781136800 -10800 0 BRT} - {2802308400 -7200 1 BRST} - {2812586400 -10800 0 BRT} - {2833758000 -7200 1 BRST} - {2844036000 -10800 0 BRT} - {2865207600 -7200 1 BRST} - {2876090400 -10800 0 BRT} - {2896657200 -7200 1 BRST} - {2907540000 -10800 0 BRT} - {2928106800 -7200 1 BRST} - {2938989600 -10800 0 BRT} - {2960161200 -7200 1 BRST} - {2970439200 -10800 0 BRT} - {2991610800 -7200 1 BRST} - {3001888800 -10800 0 BRT} - {3023060400 -7200 1 BRST} - {3033943200 -10800 0 BRT} - {3054510000 -7200 1 BRST} - {3065392800 -10800 0 BRT} - {3085959600 -7200 1 BRST} - {3096842400 -10800 0 BRT} - {3118014000 -7200 1 BRST} - {3128292000 -10800 0 BRT} - {3149463600 -7200 1 BRST} - {3159741600 -10800 0 BRT} - {3180913200 -7200 1 BRST} - {3191191200 -10800 0 BRT} - {3212362800 -7200 1 BRST} - {3223245600 -10800 0 BRT} - {3243812400 -7200 1 BRST} - {3254695200 -10800 0 BRT} - {3275262000 -7200 1 BRST} - {3286144800 -10800 0 BRT} - {3307316400 -7200 1 BRST} - {3317594400 -10800 0 BRT} - {3338766000 -7200 1 BRST} - {3349044000 -10800 0 BRT} - {3370215600 -7200 1 BRST} - {3381098400 -10800 0 BRT} - {3401665200 -7200 1 BRST} - {3412548000 -10800 0 BRT} - {3433114800 -7200 1 BRST} - {3443997600 -10800 0 BRT} - {3464564400 -7200 1 BRST} - {3475447200 -10800 0 BRT} - {3496618800 -7200 1 BRST} - {3506896800 -10800 0 BRT} - {3528068400 -7200 1 BRST} - {3538346400 -10800 0 BRT} - {3559518000 -7200 1 BRST} - {3570400800 -10800 0 BRT} - {3590967600 -7200 1 BRST} - {3601850400 -10800 0 BRT} - {3622417200 -7200 1 BRST} - {3633300000 -10800 0 BRT} - {3654471600 -7200 1 BRST} - {3664749600 -10800 0 BRT} - {3685921200 -7200 1 BRST} - {3696199200 -10800 0 BRT} - {3717370800 -7200 1 BRST} - {3727648800 -10800 0 BRT} - {3748820400 -7200 1 BRST} - {3759703200 -10800 0 BRT} - {3780270000 -7200 1 BRST} - {3791152800 -10800 0 BRT} - {3811719600 -7200 1 BRST} - {3822602400 -10800 0 BRT} - {3843774000 -7200 1 BRST} - {3854052000 -10800 0 BRT} - {3875223600 -7200 1 BRST} - {3885501600 -10800 0 BRT} - {3906673200 -7200 1 BRST} - {3917556000 -10800 0 BRT} - {3938122800 -7200 1 BRST} - {3949005600 -10800 0 BRT} - {3969572400 -7200 1 BRST} - {3980455200 -10800 0 BRT} - {4001626800 -7200 1 BRST} - {4011904800 -10800 0 BRT} - {4033076400 -7200 1 BRST} - {4043354400 -10800 0 BRT} - {4064526000 -7200 1 BRST} - {4074804000 -10800 0 BRT} - {4095975600 -7200 1 BRST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Sao_Paulo) { + {-9223372036854775808 -11188 0 LMT} + {-1767214412 -10800 0 BRT} + {-1206957600 -7200 1 BRST} + {-1191362400 -10800 0 BRT} + {-1175374800 -7200 1 BRST} + {-1159826400 -10800 0 BRT} + {-633819600 -7200 1 BRST} + {-622069200 -10800 0 BRT} + {-602283600 -7200 1 BRST} + {-591832800 -10800 0 BRT} + {-570747600 -7200 1 BRST} + {-560210400 -10800 0 BRT} + {-539125200 -7200 1 BRST} + {-531352800 -10800 0 BRT} + {-195429600 -7200 1 BRST} + {-189381600 -7200 0 BRT} + {-184197600 -10800 0 BRT} + {-155163600 -7200 1 BRST} + {-150069600 -10800 0 BRT} + {-128898000 -7200 1 BRST} + {-121125600 -10800 0 BRT} + {-99954000 -7200 1 BRST} + {-89589600 -10800 0 BRT} + {-68418000 -7200 1 BRST} + {-57967200 -10800 0 BRT} + {499748400 -7200 1 BRST} + {511236000 -10800 0 BRT} + {530593200 -7200 1 BRST} + {540266400 -10800 0 BRT} + {562129200 -7200 1 BRST} + {571197600 -10800 0 BRT} + {592974000 -7200 1 BRST} + {602042400 -10800 0 BRT} + {624423600 -7200 1 BRST} + {634701600 -10800 0 BRT} + {656478000 -7200 1 BRST} + {666756000 -10800 0 BRT} + {687927600 -7200 1 BRST} + {697600800 -10800 0 BRT} + {719982000 -7200 1 BRST} + {728445600 -10800 0 BRT} + {750826800 -7200 1 BRST} + {761709600 -10800 0 BRT} + {782276400 -7200 1 BRST} + {793159200 -10800 0 BRT} + {813726000 -7200 1 BRST} + {824004000 -10800 0 BRT} + {844570800 -7200 1 BRST} + {856058400 -10800 0 BRT} + {876106800 -7200 1 BRST} + {888717600 -10800 0 BRT} + {908074800 -7200 1 BRST} + {919562400 -10800 0 BRT} + {938919600 -7200 1 BRST} + {951616800 -10800 0 BRT} + {970974000 -7200 1 BRST} + {982461600 -10800 0 BRT} + {1003028400 -7200 1 BRST} + {1013911200 -10800 0 BRT} + {1036292400 -7200 1 BRST} + {1045360800 -10800 0 BRT} + {1066532400 -7200 1 BRST} + {1076810400 -10800 0 BRT} + {1099364400 -7200 1 BRST} + {1108864800 -10800 0 BRT} + {1129431600 -7200 1 BRST} + {1140314400 -10800 0 BRT} + {1162695600 -7200 1 BRST} + {1172368800 -10800 0 BRT} + {1192330800 -7200 1 BRST} + {1203213600 -10800 0 BRT} + {1224385200 -7200 1 BRST} + {1234663200 -10800 0 BRT} + {1255834800 -7200 1 BRST} + {1266717600 -10800 0 BRT} + {1287284400 -7200 1 BRST} + {1298167200 -10800 0 BRT} + {1318734000 -7200 1 BRST} + {1330221600 -10800 0 BRT} + {1350788400 -7200 1 BRST} + {1361066400 -10800 0 BRT} + {1382238000 -7200 1 BRST} + {1392516000 -10800 0 BRT} + {1413687600 -7200 1 BRST} + {1424570400 -10800 0 BRT} + {1445137200 -7200 1 BRST} + {1456020000 -10800 0 BRT} + {1476586800 -7200 1 BRST} + {1487469600 -10800 0 BRT} + {1508036400 -7200 1 BRST} + {1518919200 -10800 0 BRT} + {1540090800 -7200 1 BRST} + {1550368800 -10800 0 BRT} + {1571540400 -7200 1 BRST} + {1581818400 -10800 0 BRT} + {1602990000 -7200 1 BRST} + {1613872800 -10800 0 BRT} + {1634439600 -7200 1 BRST} + {1645322400 -10800 0 BRT} + {1665889200 -7200 1 BRST} + {1677376800 -10800 0 BRT} + {1697338800 -7200 1 BRST} + {1708221600 -10800 0 BRT} + {1729393200 -7200 1 BRST} + {1739671200 -10800 0 BRT} + {1760842800 -7200 1 BRST} + {1771725600 -10800 0 BRT} + {1792292400 -7200 1 BRST} + {1803175200 -10800 0 BRT} + {1823742000 -7200 1 BRST} + {1834624800 -10800 0 BRT} + {1855191600 -7200 1 BRST} + {1866074400 -10800 0 BRT} + {1887246000 -7200 1 BRST} + {1897524000 -10800 0 BRT} + {1918695600 -7200 1 BRST} + {1928973600 -10800 0 BRT} + {1950145200 -7200 1 BRST} + {1960423200 -10800 0 BRT} + {1981594800 -7200 1 BRST} + {1992477600 -10800 0 BRT} + {2013044400 -7200 1 BRST} + {2024532000 -10800 0 BRT} + {2044494000 -7200 1 BRST} + {2055376800 -10800 0 BRT} + {2076548400 -7200 1 BRST} + {2086826400 -10800 0 BRT} + {2107998000 -7200 1 BRST} + {2118880800 -10800 0 BRT} + {2139447600 -7200 1 BRST} + {2150330400 -10800 0 BRT} + {2170897200 -7200 1 BRST} + {2181780000 -10800 0 BRT} + {2202346800 -7200 1 BRST} + {2213229600 -10800 0 BRT} + {2234401200 -7200 1 BRST} + {2244679200 -10800 0 BRT} + {2265850800 -7200 1 BRST} + {2276128800 -10800 0 BRT} + {2297300400 -7200 1 BRST} + {2307578400 -10800 0 BRT} + {2328750000 -7200 1 BRST} + {2339632800 -10800 0 BRT} + {2360199600 -7200 1 BRST} + {2371082400 -10800 0 BRT} + {2391649200 -7200 1 BRST} + {2402532000 -10800 0 BRT} + {2423703600 -7200 1 BRST} + {2433981600 -10800 0 BRT} + {2455153200 -7200 1 BRST} + {2465431200 -10800 0 BRT} + {2486602800 -7200 1 BRST} + {2497485600 -10800 0 BRT} + {2518052400 -7200 1 BRST} + {2528935200 -10800 0 BRT} + {2549502000 -7200 1 BRST} + {2560384800 -10800 0 BRT} + {2580951600 -7200 1 BRST} + {2591834400 -10800 0 BRT} + {2613006000 -7200 1 BRST} + {2623284000 -10800 0 BRT} + {2644455600 -7200 1 BRST} + {2654733600 -10800 0 BRT} + {2675905200 -7200 1 BRST} + {2686788000 -10800 0 BRT} + {2707354800 -7200 1 BRST} + {2718237600 -10800 0 BRT} + {2738804400 -7200 1 BRST} + {2749687200 -10800 0 BRT} + {2770858800 -7200 1 BRST} + {2781136800 -10800 0 BRT} + {2802308400 -7200 1 BRST} + {2812586400 -10800 0 BRT} + {2833758000 -7200 1 BRST} + {2844036000 -10800 0 BRT} + {2865207600 -7200 1 BRST} + {2876090400 -10800 0 BRT} + {2896657200 -7200 1 BRST} + {2907540000 -10800 0 BRT} + {2928106800 -7200 1 BRST} + {2938989600 -10800 0 BRT} + {2960161200 -7200 1 BRST} + {2970439200 -10800 0 BRT} + {2991610800 -7200 1 BRST} + {3001888800 -10800 0 BRT} + {3023060400 -7200 1 BRST} + {3033943200 -10800 0 BRT} + {3054510000 -7200 1 BRST} + {3065392800 -10800 0 BRT} + {3085959600 -7200 1 BRST} + {3096842400 -10800 0 BRT} + {3118014000 -7200 1 BRST} + {3128292000 -10800 0 BRT} + {3149463600 -7200 1 BRST} + {3159741600 -10800 0 BRT} + {3180913200 -7200 1 BRST} + {3191191200 -10800 0 BRT} + {3212362800 -7200 1 BRST} + {3223245600 -10800 0 BRT} + {3243812400 -7200 1 BRST} + {3254695200 -10800 0 BRT} + {3275262000 -7200 1 BRST} + {3286144800 -10800 0 BRT} + {3307316400 -7200 1 BRST} + {3317594400 -10800 0 BRT} + {3338766000 -7200 1 BRST} + {3349044000 -10800 0 BRT} + {3370215600 -7200 1 BRST} + {3381098400 -10800 0 BRT} + {3401665200 -7200 1 BRST} + {3412548000 -10800 0 BRT} + {3433114800 -7200 1 BRST} + {3443997600 -10800 0 BRT} + {3464564400 -7200 1 BRST} + {3475447200 -10800 0 BRT} + {3496618800 -7200 1 BRST} + {3506896800 -10800 0 BRT} + {3528068400 -7200 1 BRST} + {3538346400 -10800 0 BRT} + {3559518000 -7200 1 BRST} + {3570400800 -10800 0 BRT} + {3590967600 -7200 1 BRST} + {3601850400 -10800 0 BRT} + {3622417200 -7200 1 BRST} + {3633300000 -10800 0 BRT} + {3654471600 -7200 1 BRST} + {3664749600 -10800 0 BRT} + {3685921200 -7200 1 BRST} + {3696199200 -10800 0 BRT} + {3717370800 -7200 1 BRST} + {3727648800 -10800 0 BRT} + {3748820400 -7200 1 BRST} + {3759703200 -10800 0 BRT} + {3780270000 -7200 1 BRST} + {3791152800 -10800 0 BRT} + {3811719600 -7200 1 BRST} + {3822602400 -10800 0 BRT} + {3843774000 -7200 1 BRST} + {3854052000 -10800 0 BRT} + {3875223600 -7200 1 BRST} + {3885501600 -10800 0 BRT} + {3906673200 -7200 1 BRST} + {3917556000 -10800 0 BRT} + {3938122800 -7200 1 BRST} + {3949005600 -10800 0 BRT} + {3969572400 -7200 1 BRST} + {3980455200 -10800 0 BRT} + {4001626800 -7200 1 BRST} + {4011904800 -10800 0 BRT} + {4033076400 -7200 1 BRST} + {4043354400 -10800 0 BRT} + {4064526000 -7200 1 BRST} + {4074804000 -10800 0 BRT} + {4095975600 -7200 1 BRST} +} diff --git a/library/tzdata/America/Scoresbysund b/library/tzdata/America/Scoresbysund index 2ed5dcd..74a332c 100644 --- a/library/tzdata/America/Scoresbysund +++ b/library/tzdata/America/Scoresbysund @@ -1,246 +1,246 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Scoresbysund) { - {-9223372036854775808 -5272 0 LMT} - {-1686090728 -7200 0 CGT} - {323841600 -3600 0 CGST} - {338961600 -7200 0 CGT} - {354679200 0 0 EGST} - {370400400 -3600 0 EGT} - {386125200 0 1 EGST} - {401850000 -3600 0 EGT} - {417574800 0 1 EGST} - {433299600 -3600 0 EGT} - {449024400 0 1 EGST} - {465354000 -3600 0 EGT} - {481078800 0 1 EGST} - {496803600 -3600 0 EGT} - {512528400 0 1 EGST} - {528253200 -3600 0 EGT} - {543978000 0 1 EGST} - {559702800 -3600 0 EGT} - {575427600 0 1 EGST} - {591152400 -3600 0 EGT} - {606877200 0 1 EGST} - {622602000 -3600 0 EGT} - {638326800 0 1 EGST} - {654656400 -3600 0 EGT} - {670381200 0 1 EGST} - {686106000 -3600 0 EGT} - {701830800 0 1 EGST} - {717555600 -3600 0 EGT} - {733280400 0 1 EGST} - {749005200 -3600 0 EGT} - {764730000 0 1 EGST} - {780454800 -3600 0 EGT} - {796179600 0 1 EGST} - {811904400 -3600 0 EGT} - {828234000 0 1 EGST} - {846378000 -3600 0 EGT} - {859683600 0 1 EGST} - {877827600 -3600 0 EGT} - {891133200 0 1 EGST} - {909277200 -3600 0 EGT} - {922582800 0 1 EGST} - {941331600 -3600 0 EGT} - {954032400 0 1 EGST} - {972781200 -3600 0 EGT} - {985482000 0 1 EGST} - {1004230800 -3600 0 EGT} - {1017536400 0 1 EGST} - {1035680400 -3600 0 EGT} - {1048986000 0 1 EGST} - {1067130000 -3600 0 EGT} - {1080435600 0 1 EGST} - {1099184400 -3600 0 EGT} - {1111885200 0 1 EGST} - {1130634000 -3600 0 EGT} - {1143334800 0 1 EGST} - {1162083600 -3600 0 EGT} - {1174784400 0 1 EGST} - {1193533200 -3600 0 EGT} - {1206838800 0 1 EGST} - {1224982800 -3600 0 EGT} - {1238288400 0 1 EGST} - {1256432400 -3600 0 EGT} - {1269738000 0 1 EGST} - {1288486800 -3600 0 EGT} - {1301187600 0 1 EGST} - {1319936400 -3600 0 EGT} - {1332637200 0 1 EGST} - {1351386000 -3600 0 EGT} - {1364691600 0 1 EGST} - {1382835600 -3600 0 EGT} - {1396141200 0 1 EGST} - {1414285200 -3600 0 EGT} - {1427590800 0 1 EGST} - {1445734800 -3600 0 EGT} - {1459040400 0 1 EGST} - {1477789200 -3600 0 EGT} - {1490490000 0 1 EGST} - {1509238800 -3600 0 EGT} - {1521939600 0 1 EGST} - {1540688400 -3600 0 EGT} - {1553994000 0 1 EGST} - {1572138000 -3600 0 EGT} - {1585443600 0 1 EGST} - {1603587600 -3600 0 EGT} - {1616893200 0 1 EGST} - {1635642000 -3600 0 EGT} - {1648342800 0 1 EGST} - {1667091600 -3600 0 EGT} - {1679792400 0 1 EGST} - {1698541200 -3600 0 EGT} - {1711846800 0 1 EGST} - {1729990800 -3600 0 EGT} - {1743296400 0 1 EGST} - {1761440400 -3600 0 EGT} - {1774746000 0 1 EGST} - {1792890000 -3600 0 EGT} - {1806195600 0 1 EGST} - {1824944400 -3600 0 EGT} - {1837645200 0 1 EGST} - {1856394000 -3600 0 EGT} - {1869094800 0 1 EGST} - {1887843600 -3600 0 EGT} - {1901149200 0 1 EGST} - {1919293200 -3600 0 EGT} - {1932598800 0 1 EGST} - {1950742800 -3600 0 EGT} - {1964048400 0 1 EGST} - {1982797200 -3600 0 EGT} - {1995498000 0 1 EGST} - {2014246800 -3600 0 EGT} - {2026947600 0 1 EGST} - {2045696400 -3600 0 EGT} - {2058397200 0 1 EGST} - {2077146000 -3600 0 EGT} - {2090451600 0 1 EGST} - {2108595600 -3600 0 EGT} - {2121901200 0 1 EGST} - {2140045200 -3600 0 EGT} - {2153350800 0 1 EGST} - {2172099600 -3600 0 EGT} - {2184800400 0 1 EGST} - {2203549200 -3600 0 EGT} - {2216250000 0 1 EGST} - {2234998800 -3600 0 EGT} - {2248304400 0 1 EGST} - {2266448400 -3600 0 EGT} - {2279754000 0 1 EGST} - {2297898000 -3600 0 EGT} - {2311203600 0 1 EGST} - {2329347600 -3600 0 EGT} - {2342653200 0 1 EGST} - {2361402000 -3600 0 EGT} - {2374102800 0 1 EGST} - {2392851600 -3600 0 EGT} - {2405552400 0 1 EGST} - {2424301200 -3600 0 EGT} - {2437606800 0 1 EGST} - {2455750800 -3600 0 EGT} - {2469056400 0 1 EGST} - {2487200400 -3600 0 EGT} - {2500506000 0 1 EGST} - {2519254800 -3600 0 EGT} - {2531955600 0 1 EGST} - {2550704400 -3600 0 EGT} - {2563405200 0 1 EGST} - {2582154000 -3600 0 EGT} - {2595459600 0 1 EGST} - {2613603600 -3600 0 EGT} - {2626909200 0 1 EGST} - {2645053200 -3600 0 EGT} - {2658358800 0 1 EGST} - {2676502800 -3600 0 EGT} - {2689808400 0 1 EGST} - {2708557200 -3600 0 EGT} - {2721258000 0 1 EGST} - {2740006800 -3600 0 EGT} - {2752707600 0 1 EGST} - {2771456400 -3600 0 EGT} - {2784762000 0 1 EGST} - {2802906000 -3600 0 EGT} - {2816211600 0 1 EGST} - {2834355600 -3600 0 EGT} - {2847661200 0 1 EGST} - {2866410000 -3600 0 EGT} - {2879110800 0 1 EGST} - {2897859600 -3600 0 EGT} - {2910560400 0 1 EGST} - {2929309200 -3600 0 EGT} - {2942010000 0 1 EGST} - {2960758800 -3600 0 EGT} - {2974064400 0 1 EGST} - {2992208400 -3600 0 EGT} - {3005514000 0 1 EGST} - {3023658000 -3600 0 EGT} - {3036963600 0 1 EGST} - {3055712400 -3600 0 EGT} - {3068413200 0 1 EGST} - {3087162000 -3600 0 EGT} - {3099862800 0 1 EGST} - {3118611600 -3600 0 EGT} - {3131917200 0 1 EGST} - {3150061200 -3600 0 EGT} - {3163366800 0 1 EGST} - {3181510800 -3600 0 EGT} - {3194816400 0 1 EGST} - {3212960400 -3600 0 EGT} - {3226266000 0 1 EGST} - {3245014800 -3600 0 EGT} - {3257715600 0 1 EGST} - {3276464400 -3600 0 EGT} - {3289165200 0 1 EGST} - {3307914000 -3600 0 EGT} - {3321219600 0 1 EGST} - {3339363600 -3600 0 EGT} - {3352669200 0 1 EGST} - {3370813200 -3600 0 EGT} - {3384118800 0 1 EGST} - {3402867600 -3600 0 EGT} - {3415568400 0 1 EGST} - {3434317200 -3600 0 EGT} - {3447018000 0 1 EGST} - {3465766800 -3600 0 EGT} - {3479072400 0 1 EGST} - {3497216400 -3600 0 EGT} - {3510522000 0 1 EGST} - {3528666000 -3600 0 EGT} - {3541971600 0 1 EGST} - {3560115600 -3600 0 EGT} - {3573421200 0 1 EGST} - {3592170000 -3600 0 EGT} - {3604870800 0 1 EGST} - {3623619600 -3600 0 EGT} - {3636320400 0 1 EGST} - {3655069200 -3600 0 EGT} - {3668374800 0 1 EGST} - {3686518800 -3600 0 EGT} - {3699824400 0 1 EGST} - {3717968400 -3600 0 EGT} - {3731274000 0 1 EGST} - {3750022800 -3600 0 EGT} - {3762723600 0 1 EGST} - {3781472400 -3600 0 EGT} - {3794173200 0 1 EGST} - {3812922000 -3600 0 EGT} - {3825622800 0 1 EGST} - {3844371600 -3600 0 EGT} - {3857677200 0 1 EGST} - {3875821200 -3600 0 EGT} - {3889126800 0 1 EGST} - {3907270800 -3600 0 EGT} - {3920576400 0 1 EGST} - {3939325200 -3600 0 EGT} - {3952026000 0 1 EGST} - {3970774800 -3600 0 EGT} - {3983475600 0 1 EGST} - {4002224400 -3600 0 EGT} - {4015530000 0 1 EGST} - {4033674000 -3600 0 EGT} - {4046979600 0 1 EGST} - {4065123600 -3600 0 EGT} - {4078429200 0 1 EGST} - {4096573200 -3600 0 EGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Scoresbysund) { + {-9223372036854775808 -5272 0 LMT} + {-1686090728 -7200 0 CGT} + {323841600 -3600 0 CGST} + {338961600 -7200 0 CGT} + {354679200 0 0 EGST} + {370400400 -3600 0 EGT} + {386125200 0 1 EGST} + {401850000 -3600 0 EGT} + {417574800 0 1 EGST} + {433299600 -3600 0 EGT} + {449024400 0 1 EGST} + {465354000 -3600 0 EGT} + {481078800 0 1 EGST} + {496803600 -3600 0 EGT} + {512528400 0 1 EGST} + {528253200 -3600 0 EGT} + {543978000 0 1 EGST} + {559702800 -3600 0 EGT} + {575427600 0 1 EGST} + {591152400 -3600 0 EGT} + {606877200 0 1 EGST} + {622602000 -3600 0 EGT} + {638326800 0 1 EGST} + {654656400 -3600 0 EGT} + {670381200 0 1 EGST} + {686106000 -3600 0 EGT} + {701830800 0 1 EGST} + {717555600 -3600 0 EGT} + {733280400 0 1 EGST} + {749005200 -3600 0 EGT} + {764730000 0 1 EGST} + {780454800 -3600 0 EGT} + {796179600 0 1 EGST} + {811904400 -3600 0 EGT} + {828234000 0 1 EGST} + {846378000 -3600 0 EGT} + {859683600 0 1 EGST} + {877827600 -3600 0 EGT} + {891133200 0 1 EGST} + {909277200 -3600 0 EGT} + {922582800 0 1 EGST} + {941331600 -3600 0 EGT} + {954032400 0 1 EGST} + {972781200 -3600 0 EGT} + {985482000 0 1 EGST} + {1004230800 -3600 0 EGT} + {1017536400 0 1 EGST} + {1035680400 -3600 0 EGT} + {1048986000 0 1 EGST} + {1067130000 -3600 0 EGT} + {1080435600 0 1 EGST} + {1099184400 -3600 0 EGT} + {1111885200 0 1 EGST} + {1130634000 -3600 0 EGT} + {1143334800 0 1 EGST} + {1162083600 -3600 0 EGT} + {1174784400 0 1 EGST} + {1193533200 -3600 0 EGT} + {1206838800 0 1 EGST} + {1224982800 -3600 0 EGT} + {1238288400 0 1 EGST} + {1256432400 -3600 0 EGT} + {1269738000 0 1 EGST} + {1288486800 -3600 0 EGT} + {1301187600 0 1 EGST} + {1319936400 -3600 0 EGT} + {1332637200 0 1 EGST} + {1351386000 -3600 0 EGT} + {1364691600 0 1 EGST} + {1382835600 -3600 0 EGT} + {1396141200 0 1 EGST} + {1414285200 -3600 0 EGT} + {1427590800 0 1 EGST} + {1445734800 -3600 0 EGT} + {1459040400 0 1 EGST} + {1477789200 -3600 0 EGT} + {1490490000 0 1 EGST} + {1509238800 -3600 0 EGT} + {1521939600 0 1 EGST} + {1540688400 -3600 0 EGT} + {1553994000 0 1 EGST} + {1572138000 -3600 0 EGT} + {1585443600 0 1 EGST} + {1603587600 -3600 0 EGT} + {1616893200 0 1 EGST} + {1635642000 -3600 0 EGT} + {1648342800 0 1 EGST} + {1667091600 -3600 0 EGT} + {1679792400 0 1 EGST} + {1698541200 -3600 0 EGT} + {1711846800 0 1 EGST} + {1729990800 -3600 0 EGT} + {1743296400 0 1 EGST} + {1761440400 -3600 0 EGT} + {1774746000 0 1 EGST} + {1792890000 -3600 0 EGT} + {1806195600 0 1 EGST} + {1824944400 -3600 0 EGT} + {1837645200 0 1 EGST} + {1856394000 -3600 0 EGT} + {1869094800 0 1 EGST} + {1887843600 -3600 0 EGT} + {1901149200 0 1 EGST} + {1919293200 -3600 0 EGT} + {1932598800 0 1 EGST} + {1950742800 -3600 0 EGT} + {1964048400 0 1 EGST} + {1982797200 -3600 0 EGT} + {1995498000 0 1 EGST} + {2014246800 -3600 0 EGT} + {2026947600 0 1 EGST} + {2045696400 -3600 0 EGT} + {2058397200 0 1 EGST} + {2077146000 -3600 0 EGT} + {2090451600 0 1 EGST} + {2108595600 -3600 0 EGT} + {2121901200 0 1 EGST} + {2140045200 -3600 0 EGT} + {2153350800 0 1 EGST} + {2172099600 -3600 0 EGT} + {2184800400 0 1 EGST} + {2203549200 -3600 0 EGT} + {2216250000 0 1 EGST} + {2234998800 -3600 0 EGT} + {2248304400 0 1 EGST} + {2266448400 -3600 0 EGT} + {2279754000 0 1 EGST} + {2297898000 -3600 0 EGT} + {2311203600 0 1 EGST} + {2329347600 -3600 0 EGT} + {2342653200 0 1 EGST} + {2361402000 -3600 0 EGT} + {2374102800 0 1 EGST} + {2392851600 -3600 0 EGT} + {2405552400 0 1 EGST} + {2424301200 -3600 0 EGT} + {2437606800 0 1 EGST} + {2455750800 -3600 0 EGT} + {2469056400 0 1 EGST} + {2487200400 -3600 0 EGT} + {2500506000 0 1 EGST} + {2519254800 -3600 0 EGT} + {2531955600 0 1 EGST} + {2550704400 -3600 0 EGT} + {2563405200 0 1 EGST} + {2582154000 -3600 0 EGT} + {2595459600 0 1 EGST} + {2613603600 -3600 0 EGT} + {2626909200 0 1 EGST} + {2645053200 -3600 0 EGT} + {2658358800 0 1 EGST} + {2676502800 -3600 0 EGT} + {2689808400 0 1 EGST} + {2708557200 -3600 0 EGT} + {2721258000 0 1 EGST} + {2740006800 -3600 0 EGT} + {2752707600 0 1 EGST} + {2771456400 -3600 0 EGT} + {2784762000 0 1 EGST} + {2802906000 -3600 0 EGT} + {2816211600 0 1 EGST} + {2834355600 -3600 0 EGT} + {2847661200 0 1 EGST} + {2866410000 -3600 0 EGT} + {2879110800 0 1 EGST} + {2897859600 -3600 0 EGT} + {2910560400 0 1 EGST} + {2929309200 -3600 0 EGT} + {2942010000 0 1 EGST} + {2960758800 -3600 0 EGT} + {2974064400 0 1 EGST} + {2992208400 -3600 0 EGT} + {3005514000 0 1 EGST} + {3023658000 -3600 0 EGT} + {3036963600 0 1 EGST} + {3055712400 -3600 0 EGT} + {3068413200 0 1 EGST} + {3087162000 -3600 0 EGT} + {3099862800 0 1 EGST} + {3118611600 -3600 0 EGT} + {3131917200 0 1 EGST} + {3150061200 -3600 0 EGT} + {3163366800 0 1 EGST} + {3181510800 -3600 0 EGT} + {3194816400 0 1 EGST} + {3212960400 -3600 0 EGT} + {3226266000 0 1 EGST} + {3245014800 -3600 0 EGT} + {3257715600 0 1 EGST} + {3276464400 -3600 0 EGT} + {3289165200 0 1 EGST} + {3307914000 -3600 0 EGT} + {3321219600 0 1 EGST} + {3339363600 -3600 0 EGT} + {3352669200 0 1 EGST} + {3370813200 -3600 0 EGT} + {3384118800 0 1 EGST} + {3402867600 -3600 0 EGT} + {3415568400 0 1 EGST} + {3434317200 -3600 0 EGT} + {3447018000 0 1 EGST} + {3465766800 -3600 0 EGT} + {3479072400 0 1 EGST} + {3497216400 -3600 0 EGT} + {3510522000 0 1 EGST} + {3528666000 -3600 0 EGT} + {3541971600 0 1 EGST} + {3560115600 -3600 0 EGT} + {3573421200 0 1 EGST} + {3592170000 -3600 0 EGT} + {3604870800 0 1 EGST} + {3623619600 -3600 0 EGT} + {3636320400 0 1 EGST} + {3655069200 -3600 0 EGT} + {3668374800 0 1 EGST} + {3686518800 -3600 0 EGT} + {3699824400 0 1 EGST} + {3717968400 -3600 0 EGT} + {3731274000 0 1 EGST} + {3750022800 -3600 0 EGT} + {3762723600 0 1 EGST} + {3781472400 -3600 0 EGT} + {3794173200 0 1 EGST} + {3812922000 -3600 0 EGT} + {3825622800 0 1 EGST} + {3844371600 -3600 0 EGT} + {3857677200 0 1 EGST} + {3875821200 -3600 0 EGT} + {3889126800 0 1 EGST} + {3907270800 -3600 0 EGT} + {3920576400 0 1 EGST} + {3939325200 -3600 0 EGT} + {3952026000 0 1 EGST} + {3970774800 -3600 0 EGT} + {3983475600 0 1 EGST} + {4002224400 -3600 0 EGT} + {4015530000 0 1 EGST} + {4033674000 -3600 0 EGT} + {4046979600 0 1 EGST} + {4065123600 -3600 0 EGT} + {4078429200 0 1 EGST} + {4096573200 -3600 0 EGT} +} diff --git a/library/tzdata/America/Shiprock b/library/tzdata/America/Shiprock index 9ff1747..995d25d 100644 --- a/library/tzdata/America/Shiprock +++ b/library/tzdata/America/Shiprock @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Denver)]} { - LoadTimeZoneFile America/Denver -} -set TZData(:America/Shiprock) $TZData(:America/Denver) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Denver)]} { + LoadTimeZoneFile America/Denver +} +set TZData(:America/Shiprock) $TZData(:America/Denver) diff --git a/library/tzdata/America/St_Barthelemy b/library/tzdata/America/St_Barthelemy index c1f0176..25c114a 100644 --- a/library/tzdata/America/St_Barthelemy +++ b/library/tzdata/America/St_Barthelemy @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Guadeloupe)]} { - LoadTimeZoneFile America/Guadeloupe -} -set TZData(:America/St_Barthelemy) $TZData(:America/Guadeloupe) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Guadeloupe)]} { + LoadTimeZoneFile America/Guadeloupe +} +set TZData(:America/St_Barthelemy) $TZData(:America/Guadeloupe) diff --git a/library/tzdata/America/St_Johns b/library/tzdata/America/St_Johns index 01fc5aa..59f92bb 100644 --- a/library/tzdata/America/St_Johns +++ b/library/tzdata/America/St_Johns @@ -1,371 +1,371 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Johns) { - {-9223372036854775808 -12652 0 LMT} - {-2713897748 -12652 0 NST} - {-1664130548 -9052 1 NDT} - {-1650137348 -12652 0 NST} - {-1640982548 -12652 0 NST} - {-1632076148 -9052 1 NDT} - {-1614799748 -12652 0 NST} - {-1609446548 -12652 0 NST} - {-1598650148 -9052 1 NDT} - {-1590100148 -12652 0 NST} - {-1567286948 -9052 1 NDT} - {-1551565748 -12652 0 NST} - {-1535837348 -9052 1 NDT} - {-1520116148 -12652 0 NST} - {-1503782948 -9052 1 NDT} - {-1488666548 -12652 0 NST} - {-1472333348 -9052 1 NDT} - {-1457216948 -12652 0 NST} - {-1440883748 -9052 1 NDT} - {-1425767348 -12652 0 NST} - {-1409434148 -9052 1 NDT} - {-1394317748 -12652 0 NST} - {-1377984548 -9052 1 NDT} - {-1362263348 -12652 0 NST} - {-1346534948 -9052 1 NDT} - {-1330813748 -12652 0 NST} - {-1314480548 -9052 1 NDT} - {-1299364148 -12652 0 NST} - {-1283030948 -9052 1 NDT} - {-1267914548 -12652 0 NST} - {-1251581348 -9052 1 NDT} - {-1236464948 -12652 0 NST} - {-1220131748 -9052 1 NDT} - {-1205015348 -12652 0 NST} - {-1188682148 -9052 1 NDT} - {-1172960948 -12652 0 NST} - {-1156627748 -9052 1 NDT} - {-1141511348 -12652 0 NST} - {-1125178148 -9052 1 NDT} - {-1110061748 -12652 0 NST} - {-1096921748 -12600 0 NST} - {-1093728600 -9000 1 NDT} - {-1078612200 -12600 0 NST} - {-1061670600 -9000 1 NDT} - {-1048973400 -12600 0 NST} - {-1030221000 -9000 1 NDT} - {-1017523800 -12600 0 NST} - {-998771400 -9000 1 NDT} - {-986074200 -12600 0 NST} - {-966717000 -9000 1 NDT} - {-954624600 -12600 0 NST} - {-935267400 -9000 1 NDT} - {-922570200 -12600 0 NST} - {-903817800 -9000 1 NDT} - {-891120600 -12600 0 NST} - {-872368200 -9000 0 NWT} - {-769395600 -9000 1 NPT} - {-765401400 -12600 0 NST} - {-757369800 -12600 0 NST} - {-746044200 -9000 1 NDT} - {-733347000 -12600 0 NST} - {-714594600 -9000 1 NDT} - {-701897400 -12600 0 NST} - {-683145000 -9000 1 NDT} - {-670447800 -12600 0 NST} - {-651695400 -9000 1 NDT} - {-638998200 -12600 0 NST} - {-619641000 -9000 1 NDT} - {-606943800 -12600 0 NST} - {-589401000 -9000 1 NDT} - {-576099000 -12600 0 NST} - {-557951400 -9000 1 NDT} - {-544649400 -12600 0 NST} - {-526501800 -9000 1 NDT} - {-513199800 -12600 0 NST} - {-495052200 -9000 1 NDT} - {-481750200 -12600 0 NST} - {-463602600 -9000 1 NDT} - {-450300600 -12600 0 NST} - {-431548200 -9000 1 NDT} - {-418246200 -12600 0 NST} - {-400098600 -9000 1 NDT} - {-386796600 -12600 0 NST} - {-368649000 -9000 1 NDT} - {-355347000 -12600 0 NST} - {-337199400 -9000 1 NDT} - {-323897400 -12600 0 NST} - {-305749800 -9000 1 NDT} - {-289423800 -12600 0 NST} - {-273695400 -9000 1 NDT} - {-257974200 -12600 0 NST} - {-242245800 -9000 1 NDT} - {-226524600 -12600 0 NST} - {-210796200 -9000 1 NDT} - {-195075000 -12600 0 NST} - {-179346600 -9000 1 NDT} - {-163625400 -12600 0 NST} - {-147897000 -9000 1 NDT} - {-131571000 -12600 0 NST} - {-116447400 -9000 1 NDT} - {-100121400 -12600 0 NST} - {-84393000 -9000 1 NDT} - {-68671800 -12600 0 NST} - {-52943400 -9000 1 NDT} - {-37222200 -12600 0 NST} - {-21493800 -9000 1 NDT} - {-5772600 -12600 0 NST} - {9955800 -9000 1 NDT} - {25677000 -12600 0 NST} - {41405400 -9000 1 NDT} - {57731400 -12600 0 NST} - {73459800 -9000 1 NDT} - {89181000 -12600 0 NST} - {104909400 -9000 1 NDT} - {120630600 -12600 0 NST} - {136359000 -9000 1 NDT} - {152080200 -12600 0 NST} - {167808600 -9000 1 NDT} - {183529800 -12600 0 NST} - {199258200 -9000 1 NDT} - {215584200 -12600 0 NST} - {230707800 -9000 1 NDT} - {247033800 -12600 0 NST} - {262762200 -9000 1 NDT} - {278483400 -12600 0 NST} - {294211800 -9000 1 NDT} - {309933000 -12600 0 NST} - {325661400 -9000 1 NDT} - {341382600 -12600 0 NST} - {357111000 -9000 1 NDT} - {372832200 -12600 0 NST} - {388560600 -9000 1 NDT} - {404886600 -12600 0 NST} - {420010200 -9000 1 NDT} - {436336200 -12600 0 NST} - {452064600 -9000 1 NDT} - {467785800 -12600 0 NST} - {483514200 -9000 1 NDT} - {499235400 -12600 0 NST} - {514963800 -9000 1 NDT} - {530685000 -12600 0 NST} - {544591860 -9000 1 NDT} - {562127460 -12600 0 NST} - {576041460 -5400 1 NDDT} - {594178260 -12600 0 NST} - {607491060 -9000 1 NDT} - {625631460 -12600 0 NST} - {638940660 -9000 1 NDT} - {657081060 -12600 0 NST} - {670995060 -9000 1 NDT} - {688530660 -12600 0 NST} - {702444660 -9000 1 NDT} - {719980260 -12600 0 NST} - {733894260 -9000 1 NDT} - {752034660 -12600 0 NST} - {765343860 -9000 1 NDT} - {783484260 -12600 0 NST} - {796793460 -9000 1 NDT} - {814933860 -12600 0 NST} - {828847860 -9000 1 NDT} - {846383460 -12600 0 NST} - {860297460 -9000 1 NDT} - {877833060 -12600 0 NST} - {891747060 -9000 1 NDT} - {909282660 -12600 0 NST} - {923196660 -9000 1 NDT} - {941337060 -12600 0 NST} - {954646260 -9000 1 NDT} - {972786660 -12600 0 NST} - {986095860 -9000 1 NDT} - {1004236260 -12600 0 NST} - {1018150260 -9000 1 NDT} - {1035685860 -12600 0 NST} - {1049599860 -9000 1 NDT} - {1067135460 -12600 0 NST} - {1081049460 -9000 1 NDT} - {1099189860 -12600 0 NST} - {1112499060 -9000 1 NDT} - {1130639460 -12600 0 NST} - {1143948660 -9000 1 NDT} - {1162089060 -12600 0 NST} - {1173583860 -9000 1 NDT} - {1194143460 -12600 0 NST} - {1205033460 -9000 1 NDT} - {1225593060 -12600 0 NST} - {1236483060 -9000 1 NDT} - {1257042660 -12600 0 NST} - {1268537460 -9000 1 NDT} - {1289097060 -12600 0 NST} - {1299987060 -9000 1 NDT} - {1320546660 -12600 0 NST} - {1331436660 -9000 1 NDT} - {1351996260 -12600 0 NST} - {1362886260 -9000 1 NDT} - {1383445860 -12600 0 NST} - {1394335860 -9000 1 NDT} - {1414895460 -12600 0 NST} - {1425785460 -9000 1 NDT} - {1446345060 -12600 0 NST} - {1457839860 -9000 1 NDT} - {1478399460 -12600 0 NST} - {1489289460 -9000 1 NDT} - {1509849060 -12600 0 NST} - {1520739060 -9000 1 NDT} - {1541298660 -12600 0 NST} - {1552188660 -9000 1 NDT} - {1572748260 -12600 0 NST} - {1583638260 -9000 1 NDT} - {1604197860 -12600 0 NST} - {1615692660 -9000 1 NDT} - {1636252260 -12600 0 NST} - {1647142260 -9000 1 NDT} - {1667701860 -12600 0 NST} - {1678591860 -9000 1 NDT} - {1699151460 -12600 0 NST} - {1710041460 -9000 1 NDT} - {1730601060 -12600 0 NST} - {1741491060 -9000 1 NDT} - {1762050660 -12600 0 NST} - {1772940660 -9000 1 NDT} - {1793500260 -12600 0 NST} - {1804995060 -9000 1 NDT} - {1825554660 -12600 0 NST} - {1836444660 -9000 1 NDT} - {1857004260 -12600 0 NST} - {1867894260 -9000 1 NDT} - {1888453860 -12600 0 NST} - {1899343860 -9000 1 NDT} - {1919903460 -12600 0 NST} - {1930793460 -9000 1 NDT} - {1951353060 -12600 0 NST} - {1962847860 -9000 1 NDT} - {1983407460 -12600 0 NST} - {1994297460 -9000 1 NDT} - {2014857060 -12600 0 NST} - {2025747060 -9000 1 NDT} - {2046306660 -12600 0 NST} - {2057196660 -9000 1 NDT} - {2077756260 -12600 0 NST} - {2088646260 -9000 1 NDT} - {2109205860 -12600 0 NST} - {2120095860 -9000 1 NDT} - {2140655460 -12600 0 NST} - {2152150260 -9000 1 NDT} - {2172709860 -12600 0 NST} - {2183599860 -9000 1 NDT} - {2204159460 -12600 0 NST} - {2215049460 -9000 1 NDT} - {2235609060 -12600 0 NST} - {2246499060 -9000 1 NDT} - {2267058660 -12600 0 NST} - {2277948660 -9000 1 NDT} - {2298508260 -12600 0 NST} - {2309398260 -9000 1 NDT} - {2329957860 -12600 0 NST} - {2341452660 -9000 1 NDT} - {2362012260 -12600 0 NST} - {2372902260 -9000 1 NDT} - {2393461860 -12600 0 NST} - {2404351860 -9000 1 NDT} - {2424911460 -12600 0 NST} - {2435801460 -9000 1 NDT} - {2456361060 -12600 0 NST} - {2467251060 -9000 1 NDT} - {2487810660 -12600 0 NST} - {2499305460 -9000 1 NDT} - {2519865060 -12600 0 NST} - {2530755060 -9000 1 NDT} - {2551314660 -12600 0 NST} - {2562204660 -9000 1 NDT} - {2582764260 -12600 0 NST} - {2593654260 -9000 1 NDT} - {2614213860 -12600 0 NST} - {2625103860 -9000 1 NDT} - {2645663460 -12600 0 NST} - {2656553460 -9000 1 NDT} - {2677113060 -12600 0 NST} - {2688607860 -9000 1 NDT} - {2709167460 -12600 0 NST} - {2720057460 -9000 1 NDT} - {2740617060 -12600 0 NST} - {2751507060 -9000 1 NDT} - {2772066660 -12600 0 NST} - {2782956660 -9000 1 NDT} - {2803516260 -12600 0 NST} - {2814406260 -9000 1 NDT} - {2834965860 -12600 0 NST} - {2846460660 -9000 1 NDT} - {2867020260 -12600 0 NST} - {2877910260 -9000 1 NDT} - {2898469860 -12600 0 NST} - {2909359860 -9000 1 NDT} - {2929919460 -12600 0 NST} - {2940809460 -9000 1 NDT} - {2961369060 -12600 0 NST} - {2972259060 -9000 1 NDT} - {2992818660 -12600 0 NST} - {3003708660 -9000 1 NDT} - {3024268260 -12600 0 NST} - {3035763060 -9000 1 NDT} - {3056322660 -12600 0 NST} - {3067212660 -9000 1 NDT} - {3087772260 -12600 0 NST} - {3098662260 -9000 1 NDT} - {3119221860 -12600 0 NST} - {3130111860 -9000 1 NDT} - {3150671460 -12600 0 NST} - {3161561460 -9000 1 NDT} - {3182121060 -12600 0 NST} - {3193011060 -9000 1 NDT} - {3213570660 -12600 0 NST} - {3225065460 -9000 1 NDT} - {3245625060 -12600 0 NST} - {3256515060 -9000 1 NDT} - {3277074660 -12600 0 NST} - {3287964660 -9000 1 NDT} - {3308524260 -12600 0 NST} - {3319414260 -9000 1 NDT} - {3339973860 -12600 0 NST} - {3350863860 -9000 1 NDT} - {3371423460 -12600 0 NST} - {3382918260 -9000 1 NDT} - {3403477860 -12600 0 NST} - {3414367860 -9000 1 NDT} - {3434927460 -12600 0 NST} - {3445817460 -9000 1 NDT} - {3466377060 -12600 0 NST} - {3477267060 -9000 1 NDT} - {3497826660 -12600 0 NST} - {3508716660 -9000 1 NDT} - {3529276260 -12600 0 NST} - {3540166260 -9000 1 NDT} - {3560725860 -12600 0 NST} - {3572220660 -9000 1 NDT} - {3592780260 -12600 0 NST} - {3603670260 -9000 1 NDT} - {3624229860 -12600 0 NST} - {3635119860 -9000 1 NDT} - {3655679460 -12600 0 NST} - {3666569460 -9000 1 NDT} - {3687129060 -12600 0 NST} - {3698019060 -9000 1 NDT} - {3718578660 -12600 0 NST} - {3730073460 -9000 1 NDT} - {3750633060 -12600 0 NST} - {3761523060 -9000 1 NDT} - {3782082660 -12600 0 NST} - {3792972660 -9000 1 NDT} - {3813532260 -12600 0 NST} - {3824422260 -9000 1 NDT} - {3844981860 -12600 0 NST} - {3855871860 -9000 1 NDT} - {3876431460 -12600 0 NST} - {3887321460 -9000 1 NDT} - {3907881060 -12600 0 NST} - {3919375860 -9000 1 NDT} - {3939935460 -12600 0 NST} - {3950825460 -9000 1 NDT} - {3971385060 -12600 0 NST} - {3982275060 -9000 1 NDT} - {4002834660 -12600 0 NST} - {4013724660 -9000 1 NDT} - {4034284260 -12600 0 NST} - {4045174260 -9000 1 NDT} - {4065733860 -12600 0 NST} - {4076623860 -9000 1 NDT} - {4097183460 -12600 0 NST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Johns) { + {-9223372036854775808 -12652 0 LMT} + {-2713897748 -12652 0 NST} + {-1664130548 -9052 1 NDT} + {-1650137348 -12652 0 NST} + {-1640982548 -12652 0 NST} + {-1632076148 -9052 1 NDT} + {-1614799748 -12652 0 NST} + {-1609446548 -12652 0 NST} + {-1598650148 -9052 1 NDT} + {-1590100148 -12652 0 NST} + {-1567286948 -9052 1 NDT} + {-1551565748 -12652 0 NST} + {-1535837348 -9052 1 NDT} + {-1520116148 -12652 0 NST} + {-1503782948 -9052 1 NDT} + {-1488666548 -12652 0 NST} + {-1472333348 -9052 1 NDT} + {-1457216948 -12652 0 NST} + {-1440883748 -9052 1 NDT} + {-1425767348 -12652 0 NST} + {-1409434148 -9052 1 NDT} + {-1394317748 -12652 0 NST} + {-1377984548 -9052 1 NDT} + {-1362263348 -12652 0 NST} + {-1346534948 -9052 1 NDT} + {-1330813748 -12652 0 NST} + {-1314480548 -9052 1 NDT} + {-1299364148 -12652 0 NST} + {-1283030948 -9052 1 NDT} + {-1267914548 -12652 0 NST} + {-1251581348 -9052 1 NDT} + {-1236464948 -12652 0 NST} + {-1220131748 -9052 1 NDT} + {-1205015348 -12652 0 NST} + {-1188682148 -9052 1 NDT} + {-1172960948 -12652 0 NST} + {-1156627748 -9052 1 NDT} + {-1141511348 -12652 0 NST} + {-1125178148 -9052 1 NDT} + {-1110061748 -12652 0 NST} + {-1096921748 -12600 0 NST} + {-1093728600 -9000 1 NDT} + {-1078612200 -12600 0 NST} + {-1061670600 -9000 1 NDT} + {-1048973400 -12600 0 NST} + {-1030221000 -9000 1 NDT} + {-1017523800 -12600 0 NST} + {-998771400 -9000 1 NDT} + {-986074200 -12600 0 NST} + {-966717000 -9000 1 NDT} + {-954624600 -12600 0 NST} + {-935267400 -9000 1 NDT} + {-922570200 -12600 0 NST} + {-903817800 -9000 1 NDT} + {-891120600 -12600 0 NST} + {-872368200 -9000 0 NWT} + {-769395600 -9000 1 NPT} + {-765401400 -12600 0 NST} + {-757369800 -12600 0 NST} + {-746044200 -9000 1 NDT} + {-733347000 -12600 0 NST} + {-714594600 -9000 1 NDT} + {-701897400 -12600 0 NST} + {-683145000 -9000 1 NDT} + {-670447800 -12600 0 NST} + {-651695400 -9000 1 NDT} + {-638998200 -12600 0 NST} + {-619641000 -9000 1 NDT} + {-606943800 -12600 0 NST} + {-589401000 -9000 1 NDT} + {-576099000 -12600 0 NST} + {-557951400 -9000 1 NDT} + {-544649400 -12600 0 NST} + {-526501800 -9000 1 NDT} + {-513199800 -12600 0 NST} + {-495052200 -9000 1 NDT} + {-481750200 -12600 0 NST} + {-463602600 -9000 1 NDT} + {-450300600 -12600 0 NST} + {-431548200 -9000 1 NDT} + {-418246200 -12600 0 NST} + {-400098600 -9000 1 NDT} + {-386796600 -12600 0 NST} + {-368649000 -9000 1 NDT} + {-355347000 -12600 0 NST} + {-337199400 -9000 1 NDT} + {-323897400 -12600 0 NST} + {-305749800 -9000 1 NDT} + {-289423800 -12600 0 NST} + {-273695400 -9000 1 NDT} + {-257974200 -12600 0 NST} + {-242245800 -9000 1 NDT} + {-226524600 -12600 0 NST} + {-210796200 -9000 1 NDT} + {-195075000 -12600 0 NST} + {-179346600 -9000 1 NDT} + {-163625400 -12600 0 NST} + {-147897000 -9000 1 NDT} + {-131571000 -12600 0 NST} + {-116447400 -9000 1 NDT} + {-100121400 -12600 0 NST} + {-84393000 -9000 1 NDT} + {-68671800 -12600 0 NST} + {-52943400 -9000 1 NDT} + {-37222200 -12600 0 NST} + {-21493800 -9000 1 NDT} + {-5772600 -12600 0 NST} + {9955800 -9000 1 NDT} + {25677000 -12600 0 NST} + {41405400 -9000 1 NDT} + {57731400 -12600 0 NST} + {73459800 -9000 1 NDT} + {89181000 -12600 0 NST} + {104909400 -9000 1 NDT} + {120630600 -12600 0 NST} + {136359000 -9000 1 NDT} + {152080200 -12600 0 NST} + {167808600 -9000 1 NDT} + {183529800 -12600 0 NST} + {199258200 -9000 1 NDT} + {215584200 -12600 0 NST} + {230707800 -9000 1 NDT} + {247033800 -12600 0 NST} + {262762200 -9000 1 NDT} + {278483400 -12600 0 NST} + {294211800 -9000 1 NDT} + {309933000 -12600 0 NST} + {325661400 -9000 1 NDT} + {341382600 -12600 0 NST} + {357111000 -9000 1 NDT} + {372832200 -12600 0 NST} + {388560600 -9000 1 NDT} + {404886600 -12600 0 NST} + {420010200 -9000 1 NDT} + {436336200 -12600 0 NST} + {452064600 -9000 1 NDT} + {467785800 -12600 0 NST} + {483514200 -9000 1 NDT} + {499235400 -12600 0 NST} + {514963800 -9000 1 NDT} + {530685000 -12600 0 NST} + {544591860 -9000 1 NDT} + {562127460 -12600 0 NST} + {576041460 -5400 1 NDDT} + {594178260 -12600 0 NST} + {607491060 -9000 1 NDT} + {625631460 -12600 0 NST} + {638940660 -9000 1 NDT} + {657081060 -12600 0 NST} + {670995060 -9000 1 NDT} + {688530660 -12600 0 NST} + {702444660 -9000 1 NDT} + {719980260 -12600 0 NST} + {733894260 -9000 1 NDT} + {752034660 -12600 0 NST} + {765343860 -9000 1 NDT} + {783484260 -12600 0 NST} + {796793460 -9000 1 NDT} + {814933860 -12600 0 NST} + {828847860 -9000 1 NDT} + {846383460 -12600 0 NST} + {860297460 -9000 1 NDT} + {877833060 -12600 0 NST} + {891747060 -9000 1 NDT} + {909282660 -12600 0 NST} + {923196660 -9000 1 NDT} + {941337060 -12600 0 NST} + {954646260 -9000 1 NDT} + {972786660 -12600 0 NST} + {986095860 -9000 1 NDT} + {1004236260 -12600 0 NST} + {1018150260 -9000 1 NDT} + {1035685860 -12600 0 NST} + {1049599860 -9000 1 NDT} + {1067135460 -12600 0 NST} + {1081049460 -9000 1 NDT} + {1099189860 -12600 0 NST} + {1112499060 -9000 1 NDT} + {1130639460 -12600 0 NST} + {1143948660 -9000 1 NDT} + {1162089060 -12600 0 NST} + {1173583860 -9000 1 NDT} + {1194143460 -12600 0 NST} + {1205033460 -9000 1 NDT} + {1225593060 -12600 0 NST} + {1236483060 -9000 1 NDT} + {1257042660 -12600 0 NST} + {1268537460 -9000 1 NDT} + {1289097060 -12600 0 NST} + {1299987060 -9000 1 NDT} + {1320546660 -12600 0 NST} + {1331436660 -9000 1 NDT} + {1351996260 -12600 0 NST} + {1362886260 -9000 1 NDT} + {1383445860 -12600 0 NST} + {1394335860 -9000 1 NDT} + {1414895460 -12600 0 NST} + {1425785460 -9000 1 NDT} + {1446345060 -12600 0 NST} + {1457839860 -9000 1 NDT} + {1478399460 -12600 0 NST} + {1489289460 -9000 1 NDT} + {1509849060 -12600 0 NST} + {1520739060 -9000 1 NDT} + {1541298660 -12600 0 NST} + {1552188660 -9000 1 NDT} + {1572748260 -12600 0 NST} + {1583638260 -9000 1 NDT} + {1604197860 -12600 0 NST} + {1615692660 -9000 1 NDT} + {1636252260 -12600 0 NST} + {1647142260 -9000 1 NDT} + {1667701860 -12600 0 NST} + {1678591860 -9000 1 NDT} + {1699151460 -12600 0 NST} + {1710041460 -9000 1 NDT} + {1730601060 -12600 0 NST} + {1741491060 -9000 1 NDT} + {1762050660 -12600 0 NST} + {1772940660 -9000 1 NDT} + {1793500260 -12600 0 NST} + {1804995060 -9000 1 NDT} + {1825554660 -12600 0 NST} + {1836444660 -9000 1 NDT} + {1857004260 -12600 0 NST} + {1867894260 -9000 1 NDT} + {1888453860 -12600 0 NST} + {1899343860 -9000 1 NDT} + {1919903460 -12600 0 NST} + {1930793460 -9000 1 NDT} + {1951353060 -12600 0 NST} + {1962847860 -9000 1 NDT} + {1983407460 -12600 0 NST} + {1994297460 -9000 1 NDT} + {2014857060 -12600 0 NST} + {2025747060 -9000 1 NDT} + {2046306660 -12600 0 NST} + {2057196660 -9000 1 NDT} + {2077756260 -12600 0 NST} + {2088646260 -9000 1 NDT} + {2109205860 -12600 0 NST} + {2120095860 -9000 1 NDT} + {2140655460 -12600 0 NST} + {2152150260 -9000 1 NDT} + {2172709860 -12600 0 NST} + {2183599860 -9000 1 NDT} + {2204159460 -12600 0 NST} + {2215049460 -9000 1 NDT} + {2235609060 -12600 0 NST} + {2246499060 -9000 1 NDT} + {2267058660 -12600 0 NST} + {2277948660 -9000 1 NDT} + {2298508260 -12600 0 NST} + {2309398260 -9000 1 NDT} + {2329957860 -12600 0 NST} + {2341452660 -9000 1 NDT} + {2362012260 -12600 0 NST} + {2372902260 -9000 1 NDT} + {2393461860 -12600 0 NST} + {2404351860 -9000 1 NDT} + {2424911460 -12600 0 NST} + {2435801460 -9000 1 NDT} + {2456361060 -12600 0 NST} + {2467251060 -9000 1 NDT} + {2487810660 -12600 0 NST} + {2499305460 -9000 1 NDT} + {2519865060 -12600 0 NST} + {2530755060 -9000 1 NDT} + {2551314660 -12600 0 NST} + {2562204660 -9000 1 NDT} + {2582764260 -12600 0 NST} + {2593654260 -9000 1 NDT} + {2614213860 -12600 0 NST} + {2625103860 -9000 1 NDT} + {2645663460 -12600 0 NST} + {2656553460 -9000 1 NDT} + {2677113060 -12600 0 NST} + {2688607860 -9000 1 NDT} + {2709167460 -12600 0 NST} + {2720057460 -9000 1 NDT} + {2740617060 -12600 0 NST} + {2751507060 -9000 1 NDT} + {2772066660 -12600 0 NST} + {2782956660 -9000 1 NDT} + {2803516260 -12600 0 NST} + {2814406260 -9000 1 NDT} + {2834965860 -12600 0 NST} + {2846460660 -9000 1 NDT} + {2867020260 -12600 0 NST} + {2877910260 -9000 1 NDT} + {2898469860 -12600 0 NST} + {2909359860 -9000 1 NDT} + {2929919460 -12600 0 NST} + {2940809460 -9000 1 NDT} + {2961369060 -12600 0 NST} + {2972259060 -9000 1 NDT} + {2992818660 -12600 0 NST} + {3003708660 -9000 1 NDT} + {3024268260 -12600 0 NST} + {3035763060 -9000 1 NDT} + {3056322660 -12600 0 NST} + {3067212660 -9000 1 NDT} + {3087772260 -12600 0 NST} + {3098662260 -9000 1 NDT} + {3119221860 -12600 0 NST} + {3130111860 -9000 1 NDT} + {3150671460 -12600 0 NST} + {3161561460 -9000 1 NDT} + {3182121060 -12600 0 NST} + {3193011060 -9000 1 NDT} + {3213570660 -12600 0 NST} + {3225065460 -9000 1 NDT} + {3245625060 -12600 0 NST} + {3256515060 -9000 1 NDT} + {3277074660 -12600 0 NST} + {3287964660 -9000 1 NDT} + {3308524260 -12600 0 NST} + {3319414260 -9000 1 NDT} + {3339973860 -12600 0 NST} + {3350863860 -9000 1 NDT} + {3371423460 -12600 0 NST} + {3382918260 -9000 1 NDT} + {3403477860 -12600 0 NST} + {3414367860 -9000 1 NDT} + {3434927460 -12600 0 NST} + {3445817460 -9000 1 NDT} + {3466377060 -12600 0 NST} + {3477267060 -9000 1 NDT} + {3497826660 -12600 0 NST} + {3508716660 -9000 1 NDT} + {3529276260 -12600 0 NST} + {3540166260 -9000 1 NDT} + {3560725860 -12600 0 NST} + {3572220660 -9000 1 NDT} + {3592780260 -12600 0 NST} + {3603670260 -9000 1 NDT} + {3624229860 -12600 0 NST} + {3635119860 -9000 1 NDT} + {3655679460 -12600 0 NST} + {3666569460 -9000 1 NDT} + {3687129060 -12600 0 NST} + {3698019060 -9000 1 NDT} + {3718578660 -12600 0 NST} + {3730073460 -9000 1 NDT} + {3750633060 -12600 0 NST} + {3761523060 -9000 1 NDT} + {3782082660 -12600 0 NST} + {3792972660 -9000 1 NDT} + {3813532260 -12600 0 NST} + {3824422260 -9000 1 NDT} + {3844981860 -12600 0 NST} + {3855871860 -9000 1 NDT} + {3876431460 -12600 0 NST} + {3887321460 -9000 1 NDT} + {3907881060 -12600 0 NST} + {3919375860 -9000 1 NDT} + {3939935460 -12600 0 NST} + {3950825460 -9000 1 NDT} + {3971385060 -12600 0 NST} + {3982275060 -9000 1 NDT} + {4002834660 -12600 0 NST} + {4013724660 -9000 1 NDT} + {4034284260 -12600 0 NST} + {4045174260 -9000 1 NDT} + {4065733860 -12600 0 NST} + {4076623860 -9000 1 NDT} + {4097183460 -12600 0 NST} +} diff --git a/library/tzdata/America/St_Kitts b/library/tzdata/America/St_Kitts index 8065f6b..bfd803b 100644 --- a/library/tzdata/America/St_Kitts +++ b/library/tzdata/America/St_Kitts @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Kitts) { - {-9223372036854775808 -15052 0 LMT} - {-1825098548 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Kitts) { + {-9223372036854775808 -15052 0 LMT} + {-1825098548 -14400 0 AST} +} diff --git a/library/tzdata/America/St_Lucia b/library/tzdata/America/St_Lucia index bfc3125..c2767dd 100644 --- a/library/tzdata/America/St_Lucia +++ b/library/tzdata/America/St_Lucia @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Lucia) { - {-9223372036854775808 -14640 0 LMT} - {-2524506960 -14640 0 CMT} - {-1830369360 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Lucia) { + {-9223372036854775808 -14640 0 LMT} + {-2524506960 -14640 0 CMT} + {-1830369360 -14400 0 AST} +} diff --git a/library/tzdata/America/St_Thomas b/library/tzdata/America/St_Thomas index 423f1fa..bf93595 100644 --- a/library/tzdata/America/St_Thomas +++ b/library/tzdata/America/St_Thomas @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Thomas) { - {-9223372036854775808 -15584 0 LMT} - {-1846266016 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Thomas) { + {-9223372036854775808 -15584 0 LMT} + {-1846266016 -14400 0 AST} +} diff --git a/library/tzdata/America/St_Vincent b/library/tzdata/America/St_Vincent index 8ddb4d8..3a884c7 100644 --- a/library/tzdata/America/St_Vincent +++ b/library/tzdata/America/St_Vincent @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/St_Vincent) { - {-9223372036854775808 -14696 0 LMT} - {-2524506904 -14696 0 KMT} - {-1830369304 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/St_Vincent) { + {-9223372036854775808 -14696 0 LMT} + {-2524506904 -14696 0 KMT} + {-1830369304 -14400 0 AST} +} diff --git a/library/tzdata/America/Swift_Current b/library/tzdata/America/Swift_Current index 2012add..dc4aa37 100644 --- a/library/tzdata/America/Swift_Current +++ b/library/tzdata/America/Swift_Current @@ -1,29 +1,29 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Swift_Current) { - {-9223372036854775808 -25880 0 LMT} - {-2030201320 -25200 0 MST} - {-1632063600 -21600 1 MDT} - {-1614787200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-747241200 -21600 0 MDT} - {-732729600 -25200 0 MST} - {-715791600 -21600 1 MDT} - {-702489600 -25200 0 MST} - {-684342000 -21600 1 MDT} - {-671040000 -25200 0 MST} - {-652892400 -21600 1 MDT} - {-639590400 -25200 0 MST} - {-631126800 -25200 0 MST} - {-400086000 -21600 1 MDT} - {-384364800 -25200 0 MST} - {-337186800 -21600 1 MDT} - {-321465600 -25200 0 MST} - {-305737200 -21600 1 MDT} - {-292435200 -25200 0 MST} - {-273682800 -21600 1 MDT} - {-260985600 -25200 0 MST} - {73472400 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Swift_Current) { + {-9223372036854775808 -25880 0 LMT} + {-2030201320 -25200 0 MST} + {-1632063600 -21600 1 MDT} + {-1614787200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-747241200 -21600 0 MDT} + {-732729600 -25200 0 MST} + {-715791600 -21600 1 MDT} + {-702489600 -25200 0 MST} + {-684342000 -21600 1 MDT} + {-671040000 -25200 0 MST} + {-652892400 -21600 1 MDT} + {-639590400 -25200 0 MST} + {-631126800 -25200 0 MST} + {-400086000 -21600 1 MDT} + {-384364800 -25200 0 MST} + {-337186800 -21600 1 MDT} + {-321465600 -25200 0 MST} + {-305737200 -21600 1 MDT} + {-292435200 -25200 0 MST} + {-273682800 -21600 1 MDT} + {-260985600 -25200 0 MST} + {73472400 -21600 0 CST} +} diff --git a/library/tzdata/America/Tegucigalpa b/library/tzdata/America/Tegucigalpa index 4438247..050661e 100644 --- a/library/tzdata/America/Tegucigalpa +++ b/library/tzdata/America/Tegucigalpa @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Tegucigalpa) { - {-9223372036854775808 -20932 0 LMT} - {-1538503868 -21600 0 CST} - {547020000 -18000 1 CDT} - {559717200 -21600 0 CST} - {578469600 -18000 1 CDT} - {591166800 -21600 0 CST} - {1146981600 -18000 1 CDT} - {1154926800 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Tegucigalpa) { + {-9223372036854775808 -20932 0 LMT} + {-1538503868 -21600 0 CST} + {547020000 -18000 1 CDT} + {559717200 -21600 0 CST} + {578469600 -18000 1 CDT} + {591166800 -21600 0 CST} + {1146981600 -18000 1 CDT} + {1154926800 -21600 0 CST} +} diff --git a/library/tzdata/America/Thule b/library/tzdata/America/Thule index d4b9b15..0aaf9a1 100644 --- a/library/tzdata/America/Thule +++ b/library/tzdata/America/Thule @@ -1,224 +1,224 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Thule) { - {-9223372036854775808 -16508 0 LMT} - {-1686079492 -14400 0 AST} - {670399200 -10800 1 ADT} - {686120400 -14400 0 AST} - {701848800 -10800 1 ADT} - {717570000 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -10800 1 ADT} - {814942800 -14400 0 AST} - {828856800 -10800 1 ADT} - {846392400 -14400 0 AST} - {860306400 -10800 1 ADT} - {877842000 -14400 0 AST} - {891756000 -10800 1 ADT} - {909291600 -14400 0 AST} - {923205600 -10800 1 ADT} - {941346000 -14400 0 AST} - {954655200 -10800 1 ADT} - {972795600 -14400 0 AST} - {986104800 -10800 1 ADT} - {1004245200 -14400 0 AST} - {1018159200 -10800 1 ADT} - {1035694800 -14400 0 AST} - {1049608800 -10800 1 ADT} - {1067144400 -14400 0 AST} - {1081058400 -10800 1 ADT} - {1099198800 -14400 0 AST} - {1112508000 -10800 1 ADT} - {1130648400 -14400 0 AST} - {1143957600 -10800 1 ADT} - {1162098000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Thule) { + {-9223372036854775808 -16508 0 LMT} + {-1686079492 -14400 0 AST} + {670399200 -10800 1 ADT} + {686120400 -14400 0 AST} + {701848800 -10800 1 ADT} + {717570000 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -10800 1 ADT} + {814942800 -14400 0 AST} + {828856800 -10800 1 ADT} + {846392400 -14400 0 AST} + {860306400 -10800 1 ADT} + {877842000 -14400 0 AST} + {891756000 -10800 1 ADT} + {909291600 -14400 0 AST} + {923205600 -10800 1 ADT} + {941346000 -14400 0 AST} + {954655200 -10800 1 ADT} + {972795600 -14400 0 AST} + {986104800 -10800 1 ADT} + {1004245200 -14400 0 AST} + {1018159200 -10800 1 ADT} + {1035694800 -14400 0 AST} + {1049608800 -10800 1 ADT} + {1067144400 -14400 0 AST} + {1081058400 -10800 1 ADT} + {1099198800 -14400 0 AST} + {1112508000 -10800 1 ADT} + {1130648400 -14400 0 AST} + {1143957600 -10800 1 ADT} + {1162098000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/America/Thunder_Bay b/library/tzdata/America/Thunder_Bay index 812e243..8a454be 100644 --- a/library/tzdata/America/Thunder_Bay +++ b/library/tzdata/America/Thunder_Bay @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Thunder_Bay) { - {-9223372036854775808 -21420 0 LMT} - {-2366733780 -21600 0 CST} - {-1893434400 -18000 0 EST} - {-883594800 -18000 0 EST} - {-880218000 -14400 1 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {18000 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {94712400 -18000 0 EST} - {126248400 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Thunder_Bay) { + {-9223372036854775808 -21420 0 LMT} + {-2366733780 -21600 0 CST} + {-1893434400 -18000 0 EST} + {-883594800 -18000 0 EST} + {-880218000 -14400 1 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {18000 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {94712400 -18000 0 EST} + {126248400 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Tijuana b/library/tzdata/America/Tijuana index 9244c2e..c191c3c 100644 --- a/library/tzdata/America/Tijuana +++ b/library/tzdata/America/Tijuana @@ -1,284 +1,284 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Tijuana) { - {-9223372036854775808 -28084 0 LMT} - {-1514736000 -25200 0 MST} - {-1451667600 -28800 0 PST} - {-1343062800 -25200 0 MST} - {-1234803600 -28800 0 PST} - {-1222963200 -25200 1 PDT} - {-1207242000 -28800 0 PST} - {-873820800 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-761677200 -28800 0 PST} - {-686073600 -25200 1 PDT} - {-661539600 -28800 0 PST} - {-504892800 -28800 0 PST} - {-495036000 -25200 1 PDT} - {-481734000 -28800 0 PST} - {-463586400 -25200 1 PDT} - {-450284400 -28800 0 PST} - {-431532000 -25200 1 PDT} - {-418230000 -28800 0 PST} - {-400082400 -25200 1 PDT} - {-386780400 -28800 0 PST} - {-368632800 -25200 1 PDT} - {-355330800 -28800 0 PST} - {-337183200 -25200 1 PDT} - {-323881200 -28800 0 PST} - {-305733600 -25200 1 PDT} - {-292431600 -28800 0 PST} - {-283968000 -28800 0 PST} - {189331200 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {820483200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {978336000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1014192000 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1175421600 -25200 1 PDT} - {1193562000 -28800 0 PST} - {1207476000 -25200 1 PDT} - {1225011600 -28800 0 PST} - {1238925600 -25200 1 PDT} - {1256461200 -28800 0 PST} - {1270375200 -25200 1 PDT} - {1288515600 -28800 0 PST} - {1301824800 -25200 1 PDT} - {1319965200 -28800 0 PST} - {1333274400 -25200 1 PDT} - {1351414800 -28800 0 PST} - {1365328800 -25200 1 PDT} - {1382864400 -28800 0 PST} - {1396778400 -25200 1 PDT} - {1414314000 -28800 0 PST} - {1428228000 -25200 1 PDT} - {1445763600 -28800 0 PST} - {1459677600 -25200 1 PDT} - {1477818000 -28800 0 PST} - {1491127200 -25200 1 PDT} - {1509267600 -28800 0 PST} - {1522576800 -25200 1 PDT} - {1540717200 -28800 0 PST} - {1554631200 -25200 1 PDT} - {1572166800 -28800 0 PST} - {1586080800 -25200 1 PDT} - {1603616400 -28800 0 PST} - {1617530400 -25200 1 PDT} - {1635670800 -28800 0 PST} - {1648980000 -25200 1 PDT} - {1667120400 -28800 0 PST} - {1680429600 -25200 1 PDT} - {1698570000 -28800 0 PST} - {1712484000 -25200 1 PDT} - {1730019600 -28800 0 PST} - {1743933600 -25200 1 PDT} - {1761469200 -28800 0 PST} - {1775383200 -25200 1 PDT} - {1792918800 -28800 0 PST} - {1806832800 -25200 1 PDT} - {1824973200 -28800 0 PST} - {1838282400 -25200 1 PDT} - {1856422800 -28800 0 PST} - {1869732000 -25200 1 PDT} - {1887872400 -28800 0 PST} - {1901786400 -25200 1 PDT} - {1919322000 -28800 0 PST} - {1933236000 -25200 1 PDT} - {1950771600 -28800 0 PST} - {1964685600 -25200 1 PDT} - {1982826000 -28800 0 PST} - {1996135200 -25200 1 PDT} - {2014275600 -28800 0 PST} - {2027584800 -25200 1 PDT} - {2045725200 -28800 0 PST} - {2059034400 -25200 1 PDT} - {2077174800 -28800 0 PST} - {2091088800 -25200 1 PDT} - {2108624400 -28800 0 PST} - {2122538400 -25200 1 PDT} - {2140074000 -28800 0 PST} - {2153988000 -25200 1 PDT} - {2172128400 -28800 0 PST} - {2185437600 -25200 1 PDT} - {2203578000 -28800 0 PST} - {2216887200 -25200 1 PDT} - {2235027600 -28800 0 PST} - {2248941600 -25200 1 PDT} - {2266477200 -28800 0 PST} - {2280391200 -25200 1 PDT} - {2297926800 -28800 0 PST} - {2311840800 -25200 1 PDT} - {2329376400 -28800 0 PST} - {2343290400 -25200 1 PDT} - {2361430800 -28800 0 PST} - {2374740000 -25200 1 PDT} - {2392880400 -28800 0 PST} - {2406189600 -25200 1 PDT} - {2424330000 -28800 0 PST} - {2438244000 -25200 1 PDT} - {2455779600 -28800 0 PST} - {2469693600 -25200 1 PDT} - {2487229200 -28800 0 PST} - {2501143200 -25200 1 PDT} - {2519283600 -28800 0 PST} - {2532592800 -25200 1 PDT} - {2550733200 -28800 0 PST} - {2564042400 -25200 1 PDT} - {2582182800 -28800 0 PST} - {2596096800 -25200 1 PDT} - {2613632400 -28800 0 PST} - {2627546400 -25200 1 PDT} - {2645082000 -28800 0 PST} - {2658996000 -25200 1 PDT} - {2676531600 -28800 0 PST} - {2690445600 -25200 1 PDT} - {2708586000 -28800 0 PST} - {2721895200 -25200 1 PDT} - {2740035600 -28800 0 PST} - {2753344800 -25200 1 PDT} - {2771485200 -28800 0 PST} - {2785399200 -25200 1 PDT} - {2802934800 -28800 0 PST} - {2816848800 -25200 1 PDT} - {2834384400 -28800 0 PST} - {2848298400 -25200 1 PDT} - {2866438800 -28800 0 PST} - {2879748000 -25200 1 PDT} - {2897888400 -28800 0 PST} - {2911197600 -25200 1 PDT} - {2929338000 -28800 0 PST} - {2942647200 -25200 1 PDT} - {2960787600 -28800 0 PST} - {2974701600 -25200 1 PDT} - {2992237200 -28800 0 PST} - {3006151200 -25200 1 PDT} - {3023686800 -28800 0 PST} - {3037600800 -25200 1 PDT} - {3055741200 -28800 0 PST} - {3069050400 -25200 1 PDT} - {3087190800 -28800 0 PST} - {3100500000 -25200 1 PDT} - {3118640400 -28800 0 PST} - {3132554400 -25200 1 PDT} - {3150090000 -28800 0 PST} - {3164004000 -25200 1 PDT} - {3181539600 -28800 0 PST} - {3195453600 -25200 1 PDT} - {3212989200 -28800 0 PST} - {3226903200 -25200 1 PDT} - {3245043600 -28800 0 PST} - {3258352800 -25200 1 PDT} - {3276493200 -28800 0 PST} - {3289802400 -25200 1 PDT} - {3307942800 -28800 0 PST} - {3321856800 -25200 1 PDT} - {3339392400 -28800 0 PST} - {3353306400 -25200 1 PDT} - {3370842000 -28800 0 PST} - {3384756000 -25200 1 PDT} - {3402896400 -28800 0 PST} - {3416205600 -25200 1 PDT} - {3434346000 -28800 0 PST} - {3447655200 -25200 1 PDT} - {3465795600 -28800 0 PST} - {3479709600 -25200 1 PDT} - {3497245200 -28800 0 PST} - {3511159200 -25200 1 PDT} - {3528694800 -28800 0 PST} - {3542608800 -25200 1 PDT} - {3560144400 -28800 0 PST} - {3574058400 -25200 1 PDT} - {3592198800 -28800 0 PST} - {3605508000 -25200 1 PDT} - {3623648400 -28800 0 PST} - {3636957600 -25200 1 PDT} - {3655098000 -28800 0 PST} - {3669012000 -25200 1 PDT} - {3686547600 -28800 0 PST} - {3700461600 -25200 1 PDT} - {3717997200 -28800 0 PST} - {3731911200 -25200 1 PDT} - {3750051600 -28800 0 PST} - {3763360800 -25200 1 PDT} - {3781501200 -28800 0 PST} - {3794810400 -25200 1 PDT} - {3812950800 -28800 0 PST} - {3826260000 -25200 1 PDT} - {3844400400 -28800 0 PST} - {3858314400 -25200 1 PDT} - {3875850000 -28800 0 PST} - {3889764000 -25200 1 PDT} - {3907299600 -28800 0 PST} - {3921213600 -25200 1 PDT} - {3939354000 -28800 0 PST} - {3952663200 -25200 1 PDT} - {3970803600 -28800 0 PST} - {3984112800 -25200 1 PDT} - {4002253200 -28800 0 PST} - {4016167200 -25200 1 PDT} - {4033702800 -28800 0 PST} - {4047616800 -25200 1 PDT} - {4065152400 -28800 0 PST} - {4079066400 -25200 1 PDT} - {4096602000 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Tijuana) { + {-9223372036854775808 -28084 0 LMT} + {-1514736000 -25200 0 MST} + {-1451667600 -28800 0 PST} + {-1343062800 -25200 0 MST} + {-1234803600 -28800 0 PST} + {-1222963200 -25200 1 PDT} + {-1207242000 -28800 0 PST} + {-873820800 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-761677200 -28800 0 PST} + {-686073600 -25200 1 PDT} + {-661539600 -28800 0 PST} + {-504892800 -28800 0 PST} + {-495036000 -25200 1 PDT} + {-481734000 -28800 0 PST} + {-463586400 -25200 1 PDT} + {-450284400 -28800 0 PST} + {-431532000 -25200 1 PDT} + {-418230000 -28800 0 PST} + {-400082400 -25200 1 PDT} + {-386780400 -28800 0 PST} + {-368632800 -25200 1 PDT} + {-355330800 -28800 0 PST} + {-337183200 -25200 1 PDT} + {-323881200 -28800 0 PST} + {-305733600 -25200 1 PDT} + {-292431600 -28800 0 PST} + {-283968000 -28800 0 PST} + {189331200 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {820483200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {978336000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1014192000 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1175421600 -25200 1 PDT} + {1193562000 -28800 0 PST} + {1207476000 -25200 1 PDT} + {1225011600 -28800 0 PST} + {1238925600 -25200 1 PDT} + {1256461200 -28800 0 PST} + {1270375200 -25200 1 PDT} + {1288515600 -28800 0 PST} + {1301824800 -25200 1 PDT} + {1319965200 -28800 0 PST} + {1333274400 -25200 1 PDT} + {1351414800 -28800 0 PST} + {1365328800 -25200 1 PDT} + {1382864400 -28800 0 PST} + {1396778400 -25200 1 PDT} + {1414314000 -28800 0 PST} + {1428228000 -25200 1 PDT} + {1445763600 -28800 0 PST} + {1459677600 -25200 1 PDT} + {1477818000 -28800 0 PST} + {1491127200 -25200 1 PDT} + {1509267600 -28800 0 PST} + {1522576800 -25200 1 PDT} + {1540717200 -28800 0 PST} + {1554631200 -25200 1 PDT} + {1572166800 -28800 0 PST} + {1586080800 -25200 1 PDT} + {1603616400 -28800 0 PST} + {1617530400 -25200 1 PDT} + {1635670800 -28800 0 PST} + {1648980000 -25200 1 PDT} + {1667120400 -28800 0 PST} + {1680429600 -25200 1 PDT} + {1698570000 -28800 0 PST} + {1712484000 -25200 1 PDT} + {1730019600 -28800 0 PST} + {1743933600 -25200 1 PDT} + {1761469200 -28800 0 PST} + {1775383200 -25200 1 PDT} + {1792918800 -28800 0 PST} + {1806832800 -25200 1 PDT} + {1824973200 -28800 0 PST} + {1838282400 -25200 1 PDT} + {1856422800 -28800 0 PST} + {1869732000 -25200 1 PDT} + {1887872400 -28800 0 PST} + {1901786400 -25200 1 PDT} + {1919322000 -28800 0 PST} + {1933236000 -25200 1 PDT} + {1950771600 -28800 0 PST} + {1964685600 -25200 1 PDT} + {1982826000 -28800 0 PST} + {1996135200 -25200 1 PDT} + {2014275600 -28800 0 PST} + {2027584800 -25200 1 PDT} + {2045725200 -28800 0 PST} + {2059034400 -25200 1 PDT} + {2077174800 -28800 0 PST} + {2091088800 -25200 1 PDT} + {2108624400 -28800 0 PST} + {2122538400 -25200 1 PDT} + {2140074000 -28800 0 PST} + {2153988000 -25200 1 PDT} + {2172128400 -28800 0 PST} + {2185437600 -25200 1 PDT} + {2203578000 -28800 0 PST} + {2216887200 -25200 1 PDT} + {2235027600 -28800 0 PST} + {2248941600 -25200 1 PDT} + {2266477200 -28800 0 PST} + {2280391200 -25200 1 PDT} + {2297926800 -28800 0 PST} + {2311840800 -25200 1 PDT} + {2329376400 -28800 0 PST} + {2343290400 -25200 1 PDT} + {2361430800 -28800 0 PST} + {2374740000 -25200 1 PDT} + {2392880400 -28800 0 PST} + {2406189600 -25200 1 PDT} + {2424330000 -28800 0 PST} + {2438244000 -25200 1 PDT} + {2455779600 -28800 0 PST} + {2469693600 -25200 1 PDT} + {2487229200 -28800 0 PST} + {2501143200 -25200 1 PDT} + {2519283600 -28800 0 PST} + {2532592800 -25200 1 PDT} + {2550733200 -28800 0 PST} + {2564042400 -25200 1 PDT} + {2582182800 -28800 0 PST} + {2596096800 -25200 1 PDT} + {2613632400 -28800 0 PST} + {2627546400 -25200 1 PDT} + {2645082000 -28800 0 PST} + {2658996000 -25200 1 PDT} + {2676531600 -28800 0 PST} + {2690445600 -25200 1 PDT} + {2708586000 -28800 0 PST} + {2721895200 -25200 1 PDT} + {2740035600 -28800 0 PST} + {2753344800 -25200 1 PDT} + {2771485200 -28800 0 PST} + {2785399200 -25200 1 PDT} + {2802934800 -28800 0 PST} + {2816848800 -25200 1 PDT} + {2834384400 -28800 0 PST} + {2848298400 -25200 1 PDT} + {2866438800 -28800 0 PST} + {2879748000 -25200 1 PDT} + {2897888400 -28800 0 PST} + {2911197600 -25200 1 PDT} + {2929338000 -28800 0 PST} + {2942647200 -25200 1 PDT} + {2960787600 -28800 0 PST} + {2974701600 -25200 1 PDT} + {2992237200 -28800 0 PST} + {3006151200 -25200 1 PDT} + {3023686800 -28800 0 PST} + {3037600800 -25200 1 PDT} + {3055741200 -28800 0 PST} + {3069050400 -25200 1 PDT} + {3087190800 -28800 0 PST} + {3100500000 -25200 1 PDT} + {3118640400 -28800 0 PST} + {3132554400 -25200 1 PDT} + {3150090000 -28800 0 PST} + {3164004000 -25200 1 PDT} + {3181539600 -28800 0 PST} + {3195453600 -25200 1 PDT} + {3212989200 -28800 0 PST} + {3226903200 -25200 1 PDT} + {3245043600 -28800 0 PST} + {3258352800 -25200 1 PDT} + {3276493200 -28800 0 PST} + {3289802400 -25200 1 PDT} + {3307942800 -28800 0 PST} + {3321856800 -25200 1 PDT} + {3339392400 -28800 0 PST} + {3353306400 -25200 1 PDT} + {3370842000 -28800 0 PST} + {3384756000 -25200 1 PDT} + {3402896400 -28800 0 PST} + {3416205600 -25200 1 PDT} + {3434346000 -28800 0 PST} + {3447655200 -25200 1 PDT} + {3465795600 -28800 0 PST} + {3479709600 -25200 1 PDT} + {3497245200 -28800 0 PST} + {3511159200 -25200 1 PDT} + {3528694800 -28800 0 PST} + {3542608800 -25200 1 PDT} + {3560144400 -28800 0 PST} + {3574058400 -25200 1 PDT} + {3592198800 -28800 0 PST} + {3605508000 -25200 1 PDT} + {3623648400 -28800 0 PST} + {3636957600 -25200 1 PDT} + {3655098000 -28800 0 PST} + {3669012000 -25200 1 PDT} + {3686547600 -28800 0 PST} + {3700461600 -25200 1 PDT} + {3717997200 -28800 0 PST} + {3731911200 -25200 1 PDT} + {3750051600 -28800 0 PST} + {3763360800 -25200 1 PDT} + {3781501200 -28800 0 PST} + {3794810400 -25200 1 PDT} + {3812950800 -28800 0 PST} + {3826260000 -25200 1 PDT} + {3844400400 -28800 0 PST} + {3858314400 -25200 1 PDT} + {3875850000 -28800 0 PST} + {3889764000 -25200 1 PDT} + {3907299600 -28800 0 PST} + {3921213600 -25200 1 PDT} + {3939354000 -28800 0 PST} + {3952663200 -25200 1 PDT} + {3970803600 -28800 0 PST} + {3984112800 -25200 1 PDT} + {4002253200 -28800 0 PST} + {4016167200 -25200 1 PDT} + {4033702800 -28800 0 PST} + {4047616800 -25200 1 PDT} + {4065152400 -28800 0 PST} + {4079066400 -25200 1 PDT} + {4096602000 -28800 0 PST} +} diff --git a/library/tzdata/America/Toronto b/library/tzdata/America/Toronto index 9243269..e4fc91a 100644 --- a/library/tzdata/America/Toronto +++ b/library/tzdata/America/Toronto @@ -1,365 +1,365 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Toronto) { - {-9223372036854775808 -19052 0 LMT} - {-2366736148 -18000 0 EST} - {-1632070800 -14400 1 EDT} - {-1614794400 -18000 0 EST} - {-1609441200 -18000 0 EST} - {-1601753400 -14400 1 EDT} - {-1583697600 -18000 0 EST} - {-1567357200 -14400 1 EDT} - {-1554667200 -18000 0 EST} - {-1534698000 -14400 1 EDT} - {-1524074400 -18000 0 EST} - {-1503248400 -14400 1 EDT} - {-1492365600 -18000 0 EST} - {-1471798800 -14400 1 EDT} - {-1460916000 -18000 0 EST} - {-1440954000 -14400 1 EDT} - {-1428861600 -18000 0 EST} - {-1409504400 -14400 1 EDT} - {-1397412000 -18000 0 EST} - {-1378054800 -14400 1 EDT} - {-1365962400 -18000 0 EST} - {-1346605200 -14400 1 EDT} - {-1333908000 -18000 0 EST} - {-1315155600 -14400 1 EDT} - {-1301853600 -18000 0 EST} - {-1283706000 -14400 1 EDT} - {-1270404000 -18000 0 EST} - {-1252256400 -14400 1 EDT} - {-1238954400 -18000 0 EST} - {-1220806800 -14400 1 EDT} - {-1207504800 -18000 0 EST} - {-1188752400 -14400 1 EDT} - {-1176055200 -18000 0 EST} - {-1157302800 -14400 1 EDT} - {-1144000800 -18000 0 EST} - {-1125853200 -14400 1 EDT} - {-1112551200 -18000 0 EST} - {-1094403600 -14400 1 EDT} - {-1081101600 -18000 0 EST} - {-1062954000 -14400 1 EDT} - {-1049652000 -18000 0 EST} - {-1031504400 -14400 1 EDT} - {-1018202400 -18000 0 EST} - {-1000054800 -14400 1 EDT} - {-986752800 -18000 0 EST} - {-968000400 -14400 1 EDT} - {-955303200 -18000 0 EST} - {-936550800 -14400 1 EDT} - {-880218000 -14400 0 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-757364400 -18000 0 EST} - {-747248400 -14400 1 EDT} - {-733946400 -18000 0 EST} - {-715806000 -14400 1 EDT} - {-702504000 -18000 0 EST} - {-684356400 -14400 1 EDT} - {-671054400 -18000 0 EST} - {-652906800 -14400 1 EDT} - {-634161600 -18000 0 EST} - {-620845200 -14400 1 EDT} - {-602704800 -18000 0 EST} - {-589395600 -14400 1 EDT} - {-576093600 -18000 0 EST} - {-557946000 -14400 1 EDT} - {-544644000 -18000 0 EST} - {-526496400 -14400 1 EDT} - {-513194400 -18000 0 EST} - {-495046800 -14400 1 EDT} - {-481744800 -18000 0 EST} - {-463597200 -14400 1 EDT} - {-450295200 -18000 0 EST} - {-431542800 -14400 1 EDT} - {-418240800 -18000 0 EST} - {-400093200 -14400 1 EDT} - {-384372000 -18000 0 EST} - {-368643600 -14400 1 EDT} - {-352922400 -18000 0 EST} - {-337194000 -14400 1 EDT} - {-321472800 -18000 0 EST} - {-305744400 -14400 1 EDT} - {-289418400 -18000 0 EST} - {-273690000 -14400 1 EDT} - {-257968800 -18000 0 EST} - {-242240400 -14400 1 EDT} - {-226519200 -18000 0 EST} - {-210790800 -14400 1 EDT} - {-195069600 -18000 0 EST} - {-179341200 -14400 1 EDT} - {-163620000 -18000 0 EST} - {-147891600 -14400 1 EDT} - {-131565600 -18000 0 EST} - {-116442000 -14400 1 EDT} - {-100116000 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126248400 -18000 0 EST} - {136364400 -14400 1 EDT} - {152085600 -18000 0 EST} - {167814000 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Toronto) { + {-9223372036854775808 -19052 0 LMT} + {-2366736148 -18000 0 EST} + {-1632070800 -14400 1 EDT} + {-1614794400 -18000 0 EST} + {-1609441200 -18000 0 EST} + {-1601753400 -14400 1 EDT} + {-1583697600 -18000 0 EST} + {-1567357200 -14400 1 EDT} + {-1554667200 -18000 0 EST} + {-1534698000 -14400 1 EDT} + {-1524074400 -18000 0 EST} + {-1503248400 -14400 1 EDT} + {-1492365600 -18000 0 EST} + {-1471798800 -14400 1 EDT} + {-1460916000 -18000 0 EST} + {-1440954000 -14400 1 EDT} + {-1428861600 -18000 0 EST} + {-1409504400 -14400 1 EDT} + {-1397412000 -18000 0 EST} + {-1378054800 -14400 1 EDT} + {-1365962400 -18000 0 EST} + {-1346605200 -14400 1 EDT} + {-1333908000 -18000 0 EST} + {-1315155600 -14400 1 EDT} + {-1301853600 -18000 0 EST} + {-1283706000 -14400 1 EDT} + {-1270404000 -18000 0 EST} + {-1252256400 -14400 1 EDT} + {-1238954400 -18000 0 EST} + {-1220806800 -14400 1 EDT} + {-1207504800 -18000 0 EST} + {-1188752400 -14400 1 EDT} + {-1176055200 -18000 0 EST} + {-1157302800 -14400 1 EDT} + {-1144000800 -18000 0 EST} + {-1125853200 -14400 1 EDT} + {-1112551200 -18000 0 EST} + {-1094403600 -14400 1 EDT} + {-1081101600 -18000 0 EST} + {-1062954000 -14400 1 EDT} + {-1049652000 -18000 0 EST} + {-1031504400 -14400 1 EDT} + {-1018202400 -18000 0 EST} + {-1000054800 -14400 1 EDT} + {-986752800 -18000 0 EST} + {-968000400 -14400 1 EDT} + {-955303200 -18000 0 EST} + {-936550800 -14400 1 EDT} + {-880218000 -14400 0 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-757364400 -18000 0 EST} + {-747248400 -14400 1 EDT} + {-733946400 -18000 0 EST} + {-715806000 -14400 1 EDT} + {-702504000 -18000 0 EST} + {-684356400 -14400 1 EDT} + {-671054400 -18000 0 EST} + {-652906800 -14400 1 EDT} + {-634161600 -18000 0 EST} + {-620845200 -14400 1 EDT} + {-602704800 -18000 0 EST} + {-589395600 -14400 1 EDT} + {-576093600 -18000 0 EST} + {-557946000 -14400 1 EDT} + {-544644000 -18000 0 EST} + {-526496400 -14400 1 EDT} + {-513194400 -18000 0 EST} + {-495046800 -14400 1 EDT} + {-481744800 -18000 0 EST} + {-463597200 -14400 1 EDT} + {-450295200 -18000 0 EST} + {-431542800 -14400 1 EDT} + {-418240800 -18000 0 EST} + {-400093200 -14400 1 EDT} + {-384372000 -18000 0 EST} + {-368643600 -14400 1 EDT} + {-352922400 -18000 0 EST} + {-337194000 -14400 1 EDT} + {-321472800 -18000 0 EST} + {-305744400 -14400 1 EDT} + {-289418400 -18000 0 EST} + {-273690000 -14400 1 EDT} + {-257968800 -18000 0 EST} + {-242240400 -14400 1 EDT} + {-226519200 -18000 0 EST} + {-210790800 -14400 1 EDT} + {-195069600 -18000 0 EST} + {-179341200 -14400 1 EDT} + {-163620000 -18000 0 EST} + {-147891600 -14400 1 EDT} + {-131565600 -18000 0 EST} + {-116442000 -14400 1 EDT} + {-100116000 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126248400 -18000 0 EST} + {136364400 -14400 1 EDT} + {152085600 -18000 0 EST} + {167814000 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/America/Tortola b/library/tzdata/America/Tortola index d421392..bf7f1fc 100644 --- a/library/tzdata/America/Tortola +++ b/library/tzdata/America/Tortola @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Tortola) { - {-9223372036854775808 -15508 0 LMT} - {-1846266092 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Tortola) { + {-9223372036854775808 -15508 0 LMT} + {-1846266092 -14400 0 AST} +} diff --git a/library/tzdata/America/Vancouver b/library/tzdata/America/Vancouver index 73ccb1f..b2e0415 100644 --- a/library/tzdata/America/Vancouver +++ b/library/tzdata/America/Vancouver @@ -1,320 +1,320 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Vancouver) { - {-9223372036854775808 -29548 0 LMT} - {-2713880852 -28800 0 PST} - {-1632060000 -25200 1 PDT} - {-1614783600 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-747237600 -25200 1 PDT} - {-732726000 -28800 0 PST} - {-715788000 -25200 1 PDT} - {-702486000 -28800 0 PST} - {-684338400 -25200 1 PDT} - {-671036400 -28800 0 PST} - {-652888800 -25200 1 PDT} - {-639586800 -28800 0 PST} - {-620834400 -25200 1 PDT} - {-608137200 -28800 0 PST} - {-589384800 -25200 1 PDT} - {-576082800 -28800 0 PST} - {-557935200 -25200 1 PDT} - {-544633200 -28800 0 PST} - {-526485600 -25200 1 PDT} - {-513183600 -28800 0 PST} - {-495036000 -25200 1 PDT} - {-481734000 -28800 0 PST} - {-463586400 -25200 1 PDT} - {-450284400 -28800 0 PST} - {-431532000 -25200 1 PDT} - {-418230000 -28800 0 PST} - {-400082400 -25200 1 PDT} - {-386780400 -28800 0 PST} - {-368632800 -25200 1 PDT} - {-355330800 -28800 0 PST} - {-337183200 -25200 1 PDT} - {-323881200 -28800 0 PST} - {-305733600 -25200 1 PDT} - {-292431600 -28800 0 PST} - {-273679200 -25200 1 PDT} - {-260982000 -28800 0 PST} - {-242229600 -25200 1 PDT} - {-226508400 -28800 0 PST} - {-210780000 -25200 1 PDT} - {-195058800 -28800 0 PST} - {-179330400 -25200 1 PDT} - {-163609200 -28800 0 PST} - {-147880800 -25200 1 PDT} - {-131554800 -28800 0 PST} - {-116431200 -25200 1 PDT} - {-100105200 -28800 0 PST} - {-84376800 -25200 1 PDT} - {-68655600 -28800 0 PST} - {-52927200 -25200 1 PDT} - {-37206000 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {89197200 -28800 0 PST} - {104925600 -25200 1 PDT} - {120646800 -28800 0 PST} - {136375200 -25200 1 PDT} - {152096400 -28800 0 PST} - {167824800 -25200 1 PDT} - {183546000 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {536486400 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Vancouver) { + {-9223372036854775808 -29548 0 LMT} + {-2713880852 -28800 0 PST} + {-1632060000 -25200 1 PDT} + {-1614783600 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-747237600 -25200 1 PDT} + {-732726000 -28800 0 PST} + {-715788000 -25200 1 PDT} + {-702486000 -28800 0 PST} + {-684338400 -25200 1 PDT} + {-671036400 -28800 0 PST} + {-652888800 -25200 1 PDT} + {-639586800 -28800 0 PST} + {-620834400 -25200 1 PDT} + {-608137200 -28800 0 PST} + {-589384800 -25200 1 PDT} + {-576082800 -28800 0 PST} + {-557935200 -25200 1 PDT} + {-544633200 -28800 0 PST} + {-526485600 -25200 1 PDT} + {-513183600 -28800 0 PST} + {-495036000 -25200 1 PDT} + {-481734000 -28800 0 PST} + {-463586400 -25200 1 PDT} + {-450284400 -28800 0 PST} + {-431532000 -25200 1 PDT} + {-418230000 -28800 0 PST} + {-400082400 -25200 1 PDT} + {-386780400 -28800 0 PST} + {-368632800 -25200 1 PDT} + {-355330800 -28800 0 PST} + {-337183200 -25200 1 PDT} + {-323881200 -28800 0 PST} + {-305733600 -25200 1 PDT} + {-292431600 -28800 0 PST} + {-273679200 -25200 1 PDT} + {-260982000 -28800 0 PST} + {-242229600 -25200 1 PDT} + {-226508400 -28800 0 PST} + {-210780000 -25200 1 PDT} + {-195058800 -28800 0 PST} + {-179330400 -25200 1 PDT} + {-163609200 -28800 0 PST} + {-147880800 -25200 1 PDT} + {-131554800 -28800 0 PST} + {-116431200 -25200 1 PDT} + {-100105200 -28800 0 PST} + {-84376800 -25200 1 PDT} + {-68655600 -28800 0 PST} + {-52927200 -25200 1 PDT} + {-37206000 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {136375200 -25200 1 PDT} + {152096400 -28800 0 PST} + {167824800 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {536486400 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/America/Virgin b/library/tzdata/America/Virgin index f55eda2..390d7c2 100644 --- a/library/tzdata/America/Virgin +++ b/library/tzdata/America/Virgin @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/St_Thomas)]} { - LoadTimeZoneFile America/St_Thomas -} -set TZData(:America/Virgin) $TZData(:America/St_Thomas) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/St_Thomas)]} { + LoadTimeZoneFile America/St_Thomas +} +set TZData(:America/Virgin) $TZData(:America/St_Thomas) diff --git a/library/tzdata/America/Whitehorse b/library/tzdata/America/Whitehorse index 1137440..1d61093 100644 --- a/library/tzdata/America/Whitehorse +++ b/library/tzdata/America/Whitehorse @@ -1,256 +1,256 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Whitehorse) { - {-9223372036854775808 -32412 0 LMT} - {-2188997988 -32400 0 YST} - {-1632056400 -28800 1 YDT} - {-1615125600 -32400 0 YST} - {-1596978000 -28800 1 YDT} - {-1583164800 -32400 0 YST} - {-880203600 -28800 1 YWT} - {-769395600 -28800 1 YPT} - {-765381600 -32400 0 YST} - {-147884400 -25200 1 YDDT} - {-131554800 -32400 0 YST} - {315561600 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Whitehorse) { + {-9223372036854775808 -32412 0 LMT} + {-2188997988 -32400 0 YST} + {-1632056400 -28800 1 YDT} + {-1615125600 -32400 0 YST} + {-1596978000 -28800 1 YDT} + {-1583164800 -32400 0 YST} + {-880203600 -28800 1 YWT} + {-769395600 -28800 1 YPT} + {-765381600 -32400 0 YST} + {-147884400 -25200 1 YDDT} + {-131554800 -32400 0 YST} + {315561600 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/America/Winnipeg b/library/tzdata/America/Winnipeg index 5ad59aa..7e6208a 100644 --- a/library/tzdata/America/Winnipeg +++ b/library/tzdata/America/Winnipeg @@ -1,316 +1,316 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Winnipeg) { - {-9223372036854775808 -23316 0 LMT} - {-2602258284 -21600 0 CST} - {-1694368800 -18000 1 CDT} - {-1681671600 -21600 0 CST} - {-1632067200 -18000 1 CDT} - {-1614790800 -21600 0 CST} - {-1029686400 -18000 1 CDT} - {-1018198800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-746035200 -18000 1 CDT} - {-732733200 -21600 0 CST} - {-715795200 -18000 1 CDT} - {-702493200 -21600 0 CST} - {-684345600 -18000 1 CDT} - {-671043600 -21600 0 CST} - {-652896000 -18000 1 CDT} - {-639594000 -21600 0 CST} - {-620755200 -18000 1 CDT} - {-607626000 -21600 0 CST} - {-589392000 -18000 1 CDT} - {-576090000 -21600 0 CST} - {-557942400 -18000 1 CDT} - {-544640400 -21600 0 CST} - {-526492800 -18000 1 CDT} - {-513190800 -21600 0 CST} - {-495043200 -18000 1 CDT} - {-481741200 -21600 0 CST} - {-463593600 -18000 1 CDT} - {-450291600 -21600 0 CST} - {-431539200 -18000 1 CDT} - {-418237200 -21600 0 CST} - {-400089600 -18000 1 CDT} - {-386787600 -21600 0 CST} - {-368640000 -18000 1 CDT} - {-355338000 -21600 0 CST} - {-337190400 -18000 1 CDT} - {-321469200 -21600 0 CST} - {-305740800 -18000 1 CDT} - {-292438800 -21600 0 CST} - {-210787200 -18000 1 CDT} - {-198090000 -21600 0 CST} - {-116438400 -18000 1 CDT} - {-100108800 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68659200 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37209600 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5760000 -21600 0 CST} - {9964800 -18000 1 CDT} - {25689600 -21600 0 CST} - {41414400 -18000 1 CDT} - {57744000 -21600 0 CST} - {73468800 -18000 1 CDT} - {89193600 -21600 0 CST} - {104918400 -18000 1 CDT} - {120643200 -21600 0 CST} - {136368000 -18000 1 CDT} - {152092800 -21600 0 CST} - {167817600 -18000 1 CDT} - {183542400 -21600 0 CST} - {199267200 -18000 1 CDT} - {215596800 -21600 0 CST} - {230716800 -18000 1 CDT} - {247046400 -21600 0 CST} - {262771200 -18000 1 CDT} - {278496000 -21600 0 CST} - {294220800 -18000 1 CDT} - {309945600 -21600 0 CST} - {325670400 -18000 1 CDT} - {341395200 -21600 0 CST} - {357120000 -18000 1 CDT} - {372844800 -21600 0 CST} - {388569600 -18000 1 CDT} - {404899200 -21600 0 CST} - {420019200 -18000 1 CDT} - {436348800 -21600 0 CST} - {452073600 -18000 1 CDT} - {467798400 -21600 0 CST} - {483523200 -18000 1 CDT} - {499248000 -21600 0 CST} - {514972800 -18000 1 CDT} - {530697600 -21600 0 CST} - {544608000 -18000 1 CDT} - {562147200 -21600 0 CST} - {576057600 -18000 1 CDT} - {594201600 -21600 0 CST} - {607507200 -18000 1 CDT} - {625651200 -21600 0 CST} - {638956800 -18000 1 CDT} - {657100800 -21600 0 CST} - {671011200 -18000 1 CDT} - {688550400 -21600 0 CST} - {702460800 -18000 1 CDT} - {720000000 -21600 0 CST} - {733910400 -18000 1 CDT} - {752054400 -21600 0 CST} - {765360000 -18000 1 CDT} - {783504000 -21600 0 CST} - {796809600 -18000 1 CDT} - {814953600 -21600 0 CST} - {828864000 -18000 1 CDT} - {846403200 -21600 0 CST} - {860313600 -18000 1 CDT} - {877852800 -21600 0 CST} - {891763200 -18000 1 CDT} - {909302400 -21600 0 CST} - {923212800 -18000 1 CDT} - {941356800 -21600 0 CST} - {954662400 -18000 1 CDT} - {972806400 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004256000 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035705600 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067155200 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099209600 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130659200 -21600 0 CST} - {1136095200 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Winnipeg) { + {-9223372036854775808 -23316 0 LMT} + {-2602258284 -21600 0 CST} + {-1694368800 -18000 1 CDT} + {-1681671600 -21600 0 CST} + {-1632067200 -18000 1 CDT} + {-1614790800 -21600 0 CST} + {-1029686400 -18000 1 CDT} + {-1018198800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-746035200 -18000 1 CDT} + {-732733200 -21600 0 CST} + {-715795200 -18000 1 CDT} + {-702493200 -21600 0 CST} + {-684345600 -18000 1 CDT} + {-671043600 -21600 0 CST} + {-652896000 -18000 1 CDT} + {-639594000 -21600 0 CST} + {-620755200 -18000 1 CDT} + {-607626000 -21600 0 CST} + {-589392000 -18000 1 CDT} + {-576090000 -21600 0 CST} + {-557942400 -18000 1 CDT} + {-544640400 -21600 0 CST} + {-526492800 -18000 1 CDT} + {-513190800 -21600 0 CST} + {-495043200 -18000 1 CDT} + {-481741200 -21600 0 CST} + {-463593600 -18000 1 CDT} + {-450291600 -21600 0 CST} + {-431539200 -18000 1 CDT} + {-418237200 -21600 0 CST} + {-400089600 -18000 1 CDT} + {-386787600 -21600 0 CST} + {-368640000 -18000 1 CDT} + {-355338000 -21600 0 CST} + {-337190400 -18000 1 CDT} + {-321469200 -21600 0 CST} + {-305740800 -18000 1 CDT} + {-292438800 -21600 0 CST} + {-210787200 -18000 1 CDT} + {-198090000 -21600 0 CST} + {-116438400 -18000 1 CDT} + {-100108800 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68659200 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37209600 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5760000 -21600 0 CST} + {9964800 -18000 1 CDT} + {25689600 -21600 0 CST} + {41414400 -18000 1 CDT} + {57744000 -21600 0 CST} + {73468800 -18000 1 CDT} + {89193600 -21600 0 CST} + {104918400 -18000 1 CDT} + {120643200 -21600 0 CST} + {136368000 -18000 1 CDT} + {152092800 -21600 0 CST} + {167817600 -18000 1 CDT} + {183542400 -21600 0 CST} + {199267200 -18000 1 CDT} + {215596800 -21600 0 CST} + {230716800 -18000 1 CDT} + {247046400 -21600 0 CST} + {262771200 -18000 1 CDT} + {278496000 -21600 0 CST} + {294220800 -18000 1 CDT} + {309945600 -21600 0 CST} + {325670400 -18000 1 CDT} + {341395200 -21600 0 CST} + {357120000 -18000 1 CDT} + {372844800 -21600 0 CST} + {388569600 -18000 1 CDT} + {404899200 -21600 0 CST} + {420019200 -18000 1 CDT} + {436348800 -21600 0 CST} + {452073600 -18000 1 CDT} + {467798400 -21600 0 CST} + {483523200 -18000 1 CDT} + {499248000 -21600 0 CST} + {514972800 -18000 1 CDT} + {530697600 -21600 0 CST} + {544608000 -18000 1 CDT} + {562147200 -21600 0 CST} + {576057600 -18000 1 CDT} + {594201600 -21600 0 CST} + {607507200 -18000 1 CDT} + {625651200 -21600 0 CST} + {638956800 -18000 1 CDT} + {657100800 -21600 0 CST} + {671011200 -18000 1 CDT} + {688550400 -21600 0 CST} + {702460800 -18000 1 CDT} + {720000000 -21600 0 CST} + {733910400 -18000 1 CDT} + {752054400 -21600 0 CST} + {765360000 -18000 1 CDT} + {783504000 -21600 0 CST} + {796809600 -18000 1 CDT} + {814953600 -21600 0 CST} + {828864000 -18000 1 CDT} + {846403200 -21600 0 CST} + {860313600 -18000 1 CDT} + {877852800 -21600 0 CST} + {891763200 -18000 1 CDT} + {909302400 -21600 0 CST} + {923212800 -18000 1 CDT} + {941356800 -21600 0 CST} + {954662400 -18000 1 CDT} + {972806400 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004256000 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035705600 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067155200 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099209600 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130659200 -21600 0 CST} + {1136095200 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Yakutat b/library/tzdata/America/Yakutat index be4e2d5..a0420c5 100644 --- a/library/tzdata/America/Yakutat +++ b/library/tzdata/America/Yakutat @@ -1,276 +1,276 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Yakutat) { - {-9223372036854775808 52865 0 LMT} - {-3225364865 -33535 0 LMT} - {-2188953665 -32400 0 YST} - {-883580400 -32400 0 YST} - {-880203600 -28800 1 YWT} - {-769395600 -28800 1 YPT} - {-765381600 -32400 0 YST} - {-757350000 -32400 0 YST} - {-31503600 -32400 0 YST} - {-21474000 -28800 1 YDT} - {-5752800 -32400 0 YST} - {9975600 -28800 1 YDT} - {25696800 -32400 0 YST} - {41425200 -28800 1 YDT} - {57751200 -32400 0 YST} - {73479600 -28800 1 YDT} - {89200800 -32400 0 YST} - {104929200 -28800 1 YDT} - {120650400 -32400 0 YST} - {126702000 -28800 1 YDT} - {152100000 -32400 0 YST} - {162385200 -28800 1 YDT} - {183549600 -32400 0 YST} - {199278000 -28800 1 YDT} - {215604000 -32400 0 YST} - {230727600 -28800 1 YDT} - {247053600 -32400 0 YST} - {262782000 -28800 1 YDT} - {278503200 -32400 0 YST} - {294231600 -28800 1 YDT} - {309952800 -32400 0 YST} - {325681200 -28800 1 YDT} - {341402400 -32400 0 YST} - {357130800 -28800 1 YDT} - {372852000 -32400 0 YST} - {388580400 -28800 1 YDT} - {404906400 -32400 0 YST} - {420030000 -28800 1 YDT} - {436356000 -32400 0 YST} - {439030800 -32400 0 AKST} - {452084400 -28800 1 AKDT} - {467805600 -32400 0 AKST} - {483534000 -28800 1 AKDT} - {499255200 -32400 0 AKST} - {514983600 -28800 1 AKDT} - {530704800 -32400 0 AKST} - {544618800 -28800 1 AKDT} - {562154400 -32400 0 AKST} - {576068400 -28800 1 AKDT} - {594208800 -32400 0 AKST} - {607518000 -28800 1 AKDT} - {625658400 -32400 0 AKST} - {638967600 -28800 1 AKDT} - {657108000 -32400 0 AKST} - {671022000 -28800 1 AKDT} - {688557600 -32400 0 AKST} - {702471600 -28800 1 AKDT} - {720007200 -32400 0 AKST} - {733921200 -28800 1 AKDT} - {752061600 -32400 0 AKST} - {765370800 -28800 1 AKDT} - {783511200 -32400 0 AKST} - {796820400 -28800 1 AKDT} - {814960800 -32400 0 AKST} - {828874800 -28800 1 AKDT} - {846410400 -32400 0 AKST} - {860324400 -28800 1 AKDT} - {877860000 -32400 0 AKST} - {891774000 -28800 1 AKDT} - {909309600 -32400 0 AKST} - {923223600 -28800 1 AKDT} - {941364000 -32400 0 AKST} - {954673200 -28800 1 AKDT} - {972813600 -32400 0 AKST} - {986122800 -28800 1 AKDT} - {1004263200 -32400 0 AKST} - {1018177200 -28800 1 AKDT} - {1035712800 -32400 0 AKST} - {1049626800 -28800 1 AKDT} - {1067162400 -32400 0 AKST} - {1081076400 -28800 1 AKDT} - {1099216800 -32400 0 AKST} - {1112526000 -28800 1 AKDT} - {1130666400 -32400 0 AKST} - {1143975600 -28800 1 AKDT} - {1162116000 -32400 0 AKST} - {1173610800 -28800 1 AKDT} - {1194170400 -32400 0 AKST} - {1205060400 -28800 1 AKDT} - {1225620000 -32400 0 AKST} - {1236510000 -28800 1 AKDT} - {1257069600 -32400 0 AKST} - {1268564400 -28800 1 AKDT} - {1289124000 -32400 0 AKST} - {1300014000 -28800 1 AKDT} - {1320573600 -32400 0 AKST} - {1331463600 -28800 1 AKDT} - {1352023200 -32400 0 AKST} - {1362913200 -28800 1 AKDT} - {1383472800 -32400 0 AKST} - {1394362800 -28800 1 AKDT} - {1414922400 -32400 0 AKST} - {1425812400 -28800 1 AKDT} - {1446372000 -32400 0 AKST} - {1457866800 -28800 1 AKDT} - {1478426400 -32400 0 AKST} - {1489316400 -28800 1 AKDT} - {1509876000 -32400 0 AKST} - {1520766000 -28800 1 AKDT} - {1541325600 -32400 0 AKST} - {1552215600 -28800 1 AKDT} - {1572775200 -32400 0 AKST} - {1583665200 -28800 1 AKDT} - {1604224800 -32400 0 AKST} - {1615719600 -28800 1 AKDT} - {1636279200 -32400 0 AKST} - {1647169200 -28800 1 AKDT} - {1667728800 -32400 0 AKST} - {1678618800 -28800 1 AKDT} - {1699178400 -32400 0 AKST} - {1710068400 -28800 1 AKDT} - {1730628000 -32400 0 AKST} - {1741518000 -28800 1 AKDT} - {1762077600 -32400 0 AKST} - {1772967600 -28800 1 AKDT} - {1793527200 -32400 0 AKST} - {1805022000 -28800 1 AKDT} - {1825581600 -32400 0 AKST} - {1836471600 -28800 1 AKDT} - {1857031200 -32400 0 AKST} - {1867921200 -28800 1 AKDT} - {1888480800 -32400 0 AKST} - {1899370800 -28800 1 AKDT} - {1919930400 -32400 0 AKST} - {1930820400 -28800 1 AKDT} - {1951380000 -32400 0 AKST} - {1962874800 -28800 1 AKDT} - {1983434400 -32400 0 AKST} - {1994324400 -28800 1 AKDT} - {2014884000 -32400 0 AKST} - {2025774000 -28800 1 AKDT} - {2046333600 -32400 0 AKST} - {2057223600 -28800 1 AKDT} - {2077783200 -32400 0 AKST} - {2088673200 -28800 1 AKDT} - {2109232800 -32400 0 AKST} - {2120122800 -28800 1 AKDT} - {2140682400 -32400 0 AKST} - {2152177200 -28800 1 AKDT} - {2172736800 -32400 0 AKST} - {2183626800 -28800 1 AKDT} - {2204186400 -32400 0 AKST} - {2215076400 -28800 1 AKDT} - {2235636000 -32400 0 AKST} - {2246526000 -28800 1 AKDT} - {2267085600 -32400 0 AKST} - {2277975600 -28800 1 AKDT} - {2298535200 -32400 0 AKST} - {2309425200 -28800 1 AKDT} - {2329984800 -32400 0 AKST} - {2341479600 -28800 1 AKDT} - {2362039200 -32400 0 AKST} - {2372929200 -28800 1 AKDT} - {2393488800 -32400 0 AKST} - {2404378800 -28800 1 AKDT} - {2424938400 -32400 0 AKST} - {2435828400 -28800 1 AKDT} - {2456388000 -32400 0 AKST} - {2467278000 -28800 1 AKDT} - {2487837600 -32400 0 AKST} - {2499332400 -28800 1 AKDT} - {2519892000 -32400 0 AKST} - {2530782000 -28800 1 AKDT} - {2551341600 -32400 0 AKST} - {2562231600 -28800 1 AKDT} - {2582791200 -32400 0 AKST} - {2593681200 -28800 1 AKDT} - {2614240800 -32400 0 AKST} - {2625130800 -28800 1 AKDT} - {2645690400 -32400 0 AKST} - {2656580400 -28800 1 AKDT} - {2677140000 -32400 0 AKST} - {2688634800 -28800 1 AKDT} - {2709194400 -32400 0 AKST} - {2720084400 -28800 1 AKDT} - {2740644000 -32400 0 AKST} - {2751534000 -28800 1 AKDT} - {2772093600 -32400 0 AKST} - {2782983600 -28800 1 AKDT} - {2803543200 -32400 0 AKST} - {2814433200 -28800 1 AKDT} - {2834992800 -32400 0 AKST} - {2846487600 -28800 1 AKDT} - {2867047200 -32400 0 AKST} - {2877937200 -28800 1 AKDT} - {2898496800 -32400 0 AKST} - {2909386800 -28800 1 AKDT} - {2929946400 -32400 0 AKST} - {2940836400 -28800 1 AKDT} - {2961396000 -32400 0 AKST} - {2972286000 -28800 1 AKDT} - {2992845600 -32400 0 AKST} - {3003735600 -28800 1 AKDT} - {3024295200 -32400 0 AKST} - {3035790000 -28800 1 AKDT} - {3056349600 -32400 0 AKST} - {3067239600 -28800 1 AKDT} - {3087799200 -32400 0 AKST} - {3098689200 -28800 1 AKDT} - {3119248800 -32400 0 AKST} - {3130138800 -28800 1 AKDT} - {3150698400 -32400 0 AKST} - {3161588400 -28800 1 AKDT} - {3182148000 -32400 0 AKST} - {3193038000 -28800 1 AKDT} - {3213597600 -32400 0 AKST} - {3225092400 -28800 1 AKDT} - {3245652000 -32400 0 AKST} - {3256542000 -28800 1 AKDT} - {3277101600 -32400 0 AKST} - {3287991600 -28800 1 AKDT} - {3308551200 -32400 0 AKST} - {3319441200 -28800 1 AKDT} - {3340000800 -32400 0 AKST} - {3350890800 -28800 1 AKDT} - {3371450400 -32400 0 AKST} - {3382945200 -28800 1 AKDT} - {3403504800 -32400 0 AKST} - {3414394800 -28800 1 AKDT} - {3434954400 -32400 0 AKST} - {3445844400 -28800 1 AKDT} - {3466404000 -32400 0 AKST} - {3477294000 -28800 1 AKDT} - {3497853600 -32400 0 AKST} - {3508743600 -28800 1 AKDT} - {3529303200 -32400 0 AKST} - {3540193200 -28800 1 AKDT} - {3560752800 -32400 0 AKST} - {3572247600 -28800 1 AKDT} - {3592807200 -32400 0 AKST} - {3603697200 -28800 1 AKDT} - {3624256800 -32400 0 AKST} - {3635146800 -28800 1 AKDT} - {3655706400 -32400 0 AKST} - {3666596400 -28800 1 AKDT} - {3687156000 -32400 0 AKST} - {3698046000 -28800 1 AKDT} - {3718605600 -32400 0 AKST} - {3730100400 -28800 1 AKDT} - {3750660000 -32400 0 AKST} - {3761550000 -28800 1 AKDT} - {3782109600 -32400 0 AKST} - {3792999600 -28800 1 AKDT} - {3813559200 -32400 0 AKST} - {3824449200 -28800 1 AKDT} - {3845008800 -32400 0 AKST} - {3855898800 -28800 1 AKDT} - {3876458400 -32400 0 AKST} - {3887348400 -28800 1 AKDT} - {3907908000 -32400 0 AKST} - {3919402800 -28800 1 AKDT} - {3939962400 -32400 0 AKST} - {3950852400 -28800 1 AKDT} - {3971412000 -32400 0 AKST} - {3982302000 -28800 1 AKDT} - {4002861600 -32400 0 AKST} - {4013751600 -28800 1 AKDT} - {4034311200 -32400 0 AKST} - {4045201200 -28800 1 AKDT} - {4065760800 -32400 0 AKST} - {4076650800 -28800 1 AKDT} - {4097210400 -32400 0 AKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Yakutat) { + {-9223372036854775808 52865 0 LMT} + {-3225364865 -33535 0 LMT} + {-2188953665 -32400 0 YST} + {-883580400 -32400 0 YST} + {-880203600 -28800 1 YWT} + {-769395600 -28800 1 YPT} + {-765381600 -32400 0 YST} + {-757350000 -32400 0 YST} + {-31503600 -32400 0 YST} + {-21474000 -28800 1 YDT} + {-5752800 -32400 0 YST} + {9975600 -28800 1 YDT} + {25696800 -32400 0 YST} + {41425200 -28800 1 YDT} + {57751200 -32400 0 YST} + {73479600 -28800 1 YDT} + {89200800 -32400 0 YST} + {104929200 -28800 1 YDT} + {120650400 -32400 0 YST} + {126702000 -28800 1 YDT} + {152100000 -32400 0 YST} + {162385200 -28800 1 YDT} + {183549600 -32400 0 YST} + {199278000 -28800 1 YDT} + {215604000 -32400 0 YST} + {230727600 -28800 1 YDT} + {247053600 -32400 0 YST} + {262782000 -28800 1 YDT} + {278503200 -32400 0 YST} + {294231600 -28800 1 YDT} + {309952800 -32400 0 YST} + {325681200 -28800 1 YDT} + {341402400 -32400 0 YST} + {357130800 -28800 1 YDT} + {372852000 -32400 0 YST} + {388580400 -28800 1 YDT} + {404906400 -32400 0 YST} + {420030000 -28800 1 YDT} + {436356000 -32400 0 YST} + {439030800 -32400 0 AKST} + {452084400 -28800 1 AKDT} + {467805600 -32400 0 AKST} + {483534000 -28800 1 AKDT} + {499255200 -32400 0 AKST} + {514983600 -28800 1 AKDT} + {530704800 -32400 0 AKST} + {544618800 -28800 1 AKDT} + {562154400 -32400 0 AKST} + {576068400 -28800 1 AKDT} + {594208800 -32400 0 AKST} + {607518000 -28800 1 AKDT} + {625658400 -32400 0 AKST} + {638967600 -28800 1 AKDT} + {657108000 -32400 0 AKST} + {671022000 -28800 1 AKDT} + {688557600 -32400 0 AKST} + {702471600 -28800 1 AKDT} + {720007200 -32400 0 AKST} + {733921200 -28800 1 AKDT} + {752061600 -32400 0 AKST} + {765370800 -28800 1 AKDT} + {783511200 -32400 0 AKST} + {796820400 -28800 1 AKDT} + {814960800 -32400 0 AKST} + {828874800 -28800 1 AKDT} + {846410400 -32400 0 AKST} + {860324400 -28800 1 AKDT} + {877860000 -32400 0 AKST} + {891774000 -28800 1 AKDT} + {909309600 -32400 0 AKST} + {923223600 -28800 1 AKDT} + {941364000 -32400 0 AKST} + {954673200 -28800 1 AKDT} + {972813600 -32400 0 AKST} + {986122800 -28800 1 AKDT} + {1004263200 -32400 0 AKST} + {1018177200 -28800 1 AKDT} + {1035712800 -32400 0 AKST} + {1049626800 -28800 1 AKDT} + {1067162400 -32400 0 AKST} + {1081076400 -28800 1 AKDT} + {1099216800 -32400 0 AKST} + {1112526000 -28800 1 AKDT} + {1130666400 -32400 0 AKST} + {1143975600 -28800 1 AKDT} + {1162116000 -32400 0 AKST} + {1173610800 -28800 1 AKDT} + {1194170400 -32400 0 AKST} + {1205060400 -28800 1 AKDT} + {1225620000 -32400 0 AKST} + {1236510000 -28800 1 AKDT} + {1257069600 -32400 0 AKST} + {1268564400 -28800 1 AKDT} + {1289124000 -32400 0 AKST} + {1300014000 -28800 1 AKDT} + {1320573600 -32400 0 AKST} + {1331463600 -28800 1 AKDT} + {1352023200 -32400 0 AKST} + {1362913200 -28800 1 AKDT} + {1383472800 -32400 0 AKST} + {1394362800 -28800 1 AKDT} + {1414922400 -32400 0 AKST} + {1425812400 -28800 1 AKDT} + {1446372000 -32400 0 AKST} + {1457866800 -28800 1 AKDT} + {1478426400 -32400 0 AKST} + {1489316400 -28800 1 AKDT} + {1509876000 -32400 0 AKST} + {1520766000 -28800 1 AKDT} + {1541325600 -32400 0 AKST} + {1552215600 -28800 1 AKDT} + {1572775200 -32400 0 AKST} + {1583665200 -28800 1 AKDT} + {1604224800 -32400 0 AKST} + {1615719600 -28800 1 AKDT} + {1636279200 -32400 0 AKST} + {1647169200 -28800 1 AKDT} + {1667728800 -32400 0 AKST} + {1678618800 -28800 1 AKDT} + {1699178400 -32400 0 AKST} + {1710068400 -28800 1 AKDT} + {1730628000 -32400 0 AKST} + {1741518000 -28800 1 AKDT} + {1762077600 -32400 0 AKST} + {1772967600 -28800 1 AKDT} + {1793527200 -32400 0 AKST} + {1805022000 -28800 1 AKDT} + {1825581600 -32400 0 AKST} + {1836471600 -28800 1 AKDT} + {1857031200 -32400 0 AKST} + {1867921200 -28800 1 AKDT} + {1888480800 -32400 0 AKST} + {1899370800 -28800 1 AKDT} + {1919930400 -32400 0 AKST} + {1930820400 -28800 1 AKDT} + {1951380000 -32400 0 AKST} + {1962874800 -28800 1 AKDT} + {1983434400 -32400 0 AKST} + {1994324400 -28800 1 AKDT} + {2014884000 -32400 0 AKST} + {2025774000 -28800 1 AKDT} + {2046333600 -32400 0 AKST} + {2057223600 -28800 1 AKDT} + {2077783200 -32400 0 AKST} + {2088673200 -28800 1 AKDT} + {2109232800 -32400 0 AKST} + {2120122800 -28800 1 AKDT} + {2140682400 -32400 0 AKST} + {2152177200 -28800 1 AKDT} + {2172736800 -32400 0 AKST} + {2183626800 -28800 1 AKDT} + {2204186400 -32400 0 AKST} + {2215076400 -28800 1 AKDT} + {2235636000 -32400 0 AKST} + {2246526000 -28800 1 AKDT} + {2267085600 -32400 0 AKST} + {2277975600 -28800 1 AKDT} + {2298535200 -32400 0 AKST} + {2309425200 -28800 1 AKDT} + {2329984800 -32400 0 AKST} + {2341479600 -28800 1 AKDT} + {2362039200 -32400 0 AKST} + {2372929200 -28800 1 AKDT} + {2393488800 -32400 0 AKST} + {2404378800 -28800 1 AKDT} + {2424938400 -32400 0 AKST} + {2435828400 -28800 1 AKDT} + {2456388000 -32400 0 AKST} + {2467278000 -28800 1 AKDT} + {2487837600 -32400 0 AKST} + {2499332400 -28800 1 AKDT} + {2519892000 -32400 0 AKST} + {2530782000 -28800 1 AKDT} + {2551341600 -32400 0 AKST} + {2562231600 -28800 1 AKDT} + {2582791200 -32400 0 AKST} + {2593681200 -28800 1 AKDT} + {2614240800 -32400 0 AKST} + {2625130800 -28800 1 AKDT} + {2645690400 -32400 0 AKST} + {2656580400 -28800 1 AKDT} + {2677140000 -32400 0 AKST} + {2688634800 -28800 1 AKDT} + {2709194400 -32400 0 AKST} + {2720084400 -28800 1 AKDT} + {2740644000 -32400 0 AKST} + {2751534000 -28800 1 AKDT} + {2772093600 -32400 0 AKST} + {2782983600 -28800 1 AKDT} + {2803543200 -32400 0 AKST} + {2814433200 -28800 1 AKDT} + {2834992800 -32400 0 AKST} + {2846487600 -28800 1 AKDT} + {2867047200 -32400 0 AKST} + {2877937200 -28800 1 AKDT} + {2898496800 -32400 0 AKST} + {2909386800 -28800 1 AKDT} + {2929946400 -32400 0 AKST} + {2940836400 -28800 1 AKDT} + {2961396000 -32400 0 AKST} + {2972286000 -28800 1 AKDT} + {2992845600 -32400 0 AKST} + {3003735600 -28800 1 AKDT} + {3024295200 -32400 0 AKST} + {3035790000 -28800 1 AKDT} + {3056349600 -32400 0 AKST} + {3067239600 -28800 1 AKDT} + {3087799200 -32400 0 AKST} + {3098689200 -28800 1 AKDT} + {3119248800 -32400 0 AKST} + {3130138800 -28800 1 AKDT} + {3150698400 -32400 0 AKST} + {3161588400 -28800 1 AKDT} + {3182148000 -32400 0 AKST} + {3193038000 -28800 1 AKDT} + {3213597600 -32400 0 AKST} + {3225092400 -28800 1 AKDT} + {3245652000 -32400 0 AKST} + {3256542000 -28800 1 AKDT} + {3277101600 -32400 0 AKST} + {3287991600 -28800 1 AKDT} + {3308551200 -32400 0 AKST} + {3319441200 -28800 1 AKDT} + {3340000800 -32400 0 AKST} + {3350890800 -28800 1 AKDT} + {3371450400 -32400 0 AKST} + {3382945200 -28800 1 AKDT} + {3403504800 -32400 0 AKST} + {3414394800 -28800 1 AKDT} + {3434954400 -32400 0 AKST} + {3445844400 -28800 1 AKDT} + {3466404000 -32400 0 AKST} + {3477294000 -28800 1 AKDT} + {3497853600 -32400 0 AKST} + {3508743600 -28800 1 AKDT} + {3529303200 -32400 0 AKST} + {3540193200 -28800 1 AKDT} + {3560752800 -32400 0 AKST} + {3572247600 -28800 1 AKDT} + {3592807200 -32400 0 AKST} + {3603697200 -28800 1 AKDT} + {3624256800 -32400 0 AKST} + {3635146800 -28800 1 AKDT} + {3655706400 -32400 0 AKST} + {3666596400 -28800 1 AKDT} + {3687156000 -32400 0 AKST} + {3698046000 -28800 1 AKDT} + {3718605600 -32400 0 AKST} + {3730100400 -28800 1 AKDT} + {3750660000 -32400 0 AKST} + {3761550000 -28800 1 AKDT} + {3782109600 -32400 0 AKST} + {3792999600 -28800 1 AKDT} + {3813559200 -32400 0 AKST} + {3824449200 -28800 1 AKDT} + {3845008800 -32400 0 AKST} + {3855898800 -28800 1 AKDT} + {3876458400 -32400 0 AKST} + {3887348400 -28800 1 AKDT} + {3907908000 -32400 0 AKST} + {3919402800 -28800 1 AKDT} + {3939962400 -32400 0 AKST} + {3950852400 -28800 1 AKDT} + {3971412000 -32400 0 AKST} + {3982302000 -28800 1 AKDT} + {4002861600 -32400 0 AKST} + {4013751600 -28800 1 AKDT} + {4034311200 -32400 0 AKST} + {4045201200 -28800 1 AKDT} + {4065760800 -32400 0 AKST} + {4076650800 -28800 1 AKDT} + {4097210400 -32400 0 AKST} +} diff --git a/library/tzdata/America/Yellowknife b/library/tzdata/America/Yellowknife index a77632a..44ca658 100644 --- a/library/tzdata/America/Yellowknife +++ b/library/tzdata/America/Yellowknife @@ -1,252 +1,252 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:America/Yellowknife) { - {-9223372036854775808 0 0 zzz} - {-1104537600 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-147891600 -18000 1 MDDT} - {-131562000 -25200 0 MST} - {315558000 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Yellowknife) { + {-9223372036854775808 0 0 zzz} + {-1104537600 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-147891600 -18000 1 MDDT} + {-131562000 -25200 0 MST} + {315558000 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/Antarctica/Casey b/library/tzdata/Antarctica/Casey index 0c046f3..6d383f3 100644 --- a/library/tzdata/Antarctica/Casey +++ b/library/tzdata/Antarctica/Casey @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Casey) { - {-9223372036854775808 0 0 zzz} - {-31536000 28800 0 WST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Casey) { + {-9223372036854775808 0 0 zzz} + {-31536000 28800 0 WST} +} diff --git a/library/tzdata/Antarctica/Davis b/library/tzdata/Antarctica/Davis index 05eda36..f4b7282 100644 --- a/library/tzdata/Antarctica/Davis +++ b/library/tzdata/Antarctica/Davis @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Davis) { - {-9223372036854775808 0 0 zzz} - {-409190400 25200 0 DAVT} - {-163062000 0 0 zzz} - {-28857600 25200 0 DAVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Davis) { + {-9223372036854775808 0 0 zzz} + {-409190400 25200 0 DAVT} + {-163062000 0 0 zzz} + {-28857600 25200 0 DAVT} +} diff --git a/library/tzdata/Antarctica/DumontDUrville b/library/tzdata/Antarctica/DumontDUrville index ad3f35b..41dc1e3 100644 --- a/library/tzdata/Antarctica/DumontDUrville +++ b/library/tzdata/Antarctica/DumontDUrville @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/DumontDUrville) { - {-9223372036854775808 0 0 zzz} - {-725846400 36000 0 PMT} - {-566992800 0 0 zzz} - {-415497600 36000 0 DDUT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/DumontDUrville) { + {-9223372036854775808 0 0 zzz} + {-725846400 36000 0 PMT} + {-566992800 0 0 zzz} + {-415497600 36000 0 DDUT} +} diff --git a/library/tzdata/Antarctica/Mawson b/library/tzdata/Antarctica/Mawson index 28bef79..1f0c3fe 100644 --- a/library/tzdata/Antarctica/Mawson +++ b/library/tzdata/Antarctica/Mawson @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Mawson) { - {-9223372036854775808 0 0 zzz} - {-501206400 21600 0 MAWT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Mawson) { + {-9223372036854775808 0 0 zzz} + {-501206400 21600 0 MAWT} +} diff --git a/library/tzdata/Antarctica/McMurdo b/library/tzdata/Antarctica/McMurdo index 436e8a4..670f7eb 100644 --- a/library/tzdata/Antarctica/McMurdo +++ b/library/tzdata/Antarctica/McMurdo @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/McMurdo) { - {-9223372036854775808 0 0 zzz} - {-441849600 43200 0 NZST} - {152632800 46800 1 NZDT} - {162309600 43200 0 NZST} - {183477600 46800 1 NZDT} - {194968800 43200 0 NZST} - {215532000 46800 1 NZDT} - {226418400 43200 0 NZST} - {246981600 46800 1 NZDT} - {257868000 43200 0 NZST} - {278431200 46800 1 NZDT} - {289317600 43200 0 NZST} - {309880800 46800 1 NZDT} - {320767200 43200 0 NZST} - {341330400 46800 1 NZDT} - {352216800 43200 0 NZST} - {372780000 46800 1 NZDT} - {384271200 43200 0 NZST} - {404834400 46800 1 NZDT} - {415720800 43200 0 NZST} - {436284000 46800 1 NZDT} - {447170400 43200 0 NZST} - {467733600 46800 1 NZDT} - {478620000 43200 0 NZST} - {499183200 46800 1 NZDT} - {510069600 43200 0 NZST} - {530632800 46800 1 NZDT} - {541519200 43200 0 NZST} - {562082400 46800 1 NZDT} - {573573600 43200 0 NZST} - {594136800 46800 1 NZDT} - {605023200 43200 0 NZST} - {623772000 46800 1 NZDT} - {637682400 43200 0 NZST} - {655221600 46800 1 NZDT} - {669132000 43200 0 NZST} - {686671200 46800 1 NZDT} - {700581600 43200 0 NZST} - {718120800 46800 1 NZDT} - {732636000 43200 0 NZST} - {749570400 46800 1 NZDT} - {764085600 43200 0 NZST} - {781020000 46800 1 NZDT} - {795535200 43200 0 NZST} - {812469600 46800 1 NZDT} - {826984800 43200 0 NZST} - {844524000 46800 1 NZDT} - {858434400 43200 0 NZST} - {875973600 46800 1 NZDT} - {889884000 43200 0 NZST} - {907423200 46800 1 NZDT} - {921938400 43200 0 NZST} - {938872800 46800 1 NZDT} - {953388000 43200 0 NZST} - {970322400 46800 1 NZDT} - {984837600 43200 0 NZST} - {1002376800 46800 1 NZDT} - {1016287200 43200 0 NZST} - {1033826400 46800 1 NZDT} - {1047736800 43200 0 NZST} - {1065276000 46800 1 NZDT} - {1079791200 43200 0 NZST} - {1096725600 46800 1 NZDT} - {1111240800 43200 0 NZST} - {1128175200 46800 1 NZDT} - {1142690400 43200 0 NZST} - {1159624800 46800 1 NZDT} - {1174140000 43200 0 NZST} - {1191074400 46800 1 NZDT} - {1207404000 43200 0 NZST} - {1222524000 46800 1 NZDT} - {1238853600 43200 0 NZST} - {1253973600 46800 1 NZDT} - {1270303200 43200 0 NZST} - {1285423200 46800 1 NZDT} - {1301752800 43200 0 NZST} - {1316872800 46800 1 NZDT} - {1333202400 43200 0 NZST} - {1348927200 46800 1 NZDT} - {1365256800 43200 0 NZST} - {1380376800 46800 1 NZDT} - {1396706400 43200 0 NZST} - {1411826400 46800 1 NZDT} - {1428156000 43200 0 NZST} - {1443276000 46800 1 NZDT} - {1459605600 43200 0 NZST} - {1474725600 46800 1 NZDT} - {1491055200 43200 0 NZST} - {1506175200 46800 1 NZDT} - {1522504800 43200 0 NZST} - {1538229600 46800 1 NZDT} - {1554559200 43200 0 NZST} - {1569679200 46800 1 NZDT} - {1586008800 43200 0 NZST} - {1601128800 46800 1 NZDT} - {1617458400 43200 0 NZST} - {1632578400 46800 1 NZDT} - {1648908000 43200 0 NZST} - {1664028000 46800 1 NZDT} - {1680357600 43200 0 NZST} - {1695477600 46800 1 NZDT} - {1712412000 43200 0 NZST} - {1727532000 46800 1 NZDT} - {1743861600 43200 0 NZST} - {1758981600 46800 1 NZDT} - {1775311200 43200 0 NZST} - {1790431200 46800 1 NZDT} - {1806760800 43200 0 NZST} - {1821880800 46800 1 NZDT} - {1838210400 43200 0 NZST} - {1853330400 46800 1 NZDT} - {1869660000 43200 0 NZST} - {1885384800 46800 1 NZDT} - {1901714400 43200 0 NZST} - {1916834400 46800 1 NZDT} - {1933164000 43200 0 NZST} - {1948284000 46800 1 NZDT} - {1964613600 43200 0 NZST} - {1979733600 46800 1 NZDT} - {1996063200 43200 0 NZST} - {2011183200 46800 1 NZDT} - {2027512800 43200 0 NZST} - {2042632800 46800 1 NZDT} - {2058962400 43200 0 NZST} - {2074687200 46800 1 NZDT} - {2091016800 43200 0 NZST} - {2106136800 46800 1 NZDT} - {2122466400 43200 0 NZST} - {2137586400 46800 1 NZDT} - {2153916000 43200 0 NZST} - {2169036000 46800 1 NZDT} - {2185365600 43200 0 NZST} - {2200485600 46800 1 NZDT} - {2216815200 43200 0 NZST} - {2232540000 46800 1 NZDT} - {2248869600 43200 0 NZST} - {2263989600 46800 1 NZDT} - {2280319200 43200 0 NZST} - {2295439200 46800 1 NZDT} - {2311768800 43200 0 NZST} - {2326888800 46800 1 NZDT} - {2343218400 43200 0 NZST} - {2358338400 46800 1 NZDT} - {2374668000 43200 0 NZST} - {2389788000 46800 1 NZDT} - {2406117600 43200 0 NZST} - {2421842400 46800 1 NZDT} - {2438172000 43200 0 NZST} - {2453292000 46800 1 NZDT} - {2469621600 43200 0 NZST} - {2484741600 46800 1 NZDT} - {2501071200 43200 0 NZST} - {2516191200 46800 1 NZDT} - {2532520800 43200 0 NZST} - {2547640800 46800 1 NZDT} - {2563970400 43200 0 NZST} - {2579090400 46800 1 NZDT} - {2596024800 43200 0 NZST} - {2611144800 46800 1 NZDT} - {2627474400 43200 0 NZST} - {2642594400 46800 1 NZDT} - {2658924000 43200 0 NZST} - {2674044000 46800 1 NZDT} - {2690373600 43200 0 NZST} - {2705493600 46800 1 NZDT} - {2721823200 43200 0 NZST} - {2736943200 46800 1 NZDT} - {2753272800 43200 0 NZST} - {2768997600 46800 1 NZDT} - {2785327200 43200 0 NZST} - {2800447200 46800 1 NZDT} - {2816776800 43200 0 NZST} - {2831896800 46800 1 NZDT} - {2848226400 43200 0 NZST} - {2863346400 46800 1 NZDT} - {2879676000 43200 0 NZST} - {2894796000 46800 1 NZDT} - {2911125600 43200 0 NZST} - {2926245600 46800 1 NZDT} - {2942575200 43200 0 NZST} - {2958300000 46800 1 NZDT} - {2974629600 43200 0 NZST} - {2989749600 46800 1 NZDT} - {3006079200 43200 0 NZST} - {3021199200 46800 1 NZDT} - {3037528800 43200 0 NZST} - {3052648800 46800 1 NZDT} - {3068978400 43200 0 NZST} - {3084098400 46800 1 NZDT} - {3100428000 43200 0 NZST} - {3116152800 46800 1 NZDT} - {3132482400 43200 0 NZST} - {3147602400 46800 1 NZDT} - {3163932000 43200 0 NZST} - {3179052000 46800 1 NZDT} - {3195381600 43200 0 NZST} - {3210501600 46800 1 NZDT} - {3226831200 43200 0 NZST} - {3241951200 46800 1 NZDT} - {3258280800 43200 0 NZST} - {3273400800 46800 1 NZDT} - {3289730400 43200 0 NZST} - {3305455200 46800 1 NZDT} - {3321784800 43200 0 NZST} - {3336904800 46800 1 NZDT} - {3353234400 43200 0 NZST} - {3368354400 46800 1 NZDT} - {3384684000 43200 0 NZST} - {3399804000 46800 1 NZDT} - {3416133600 43200 0 NZST} - {3431253600 46800 1 NZDT} - {3447583200 43200 0 NZST} - {3462703200 46800 1 NZDT} - {3479637600 43200 0 NZST} - {3494757600 46800 1 NZDT} - {3511087200 43200 0 NZST} - {3526207200 46800 1 NZDT} - {3542536800 43200 0 NZST} - {3557656800 46800 1 NZDT} - {3573986400 43200 0 NZST} - {3589106400 46800 1 NZDT} - {3605436000 43200 0 NZST} - {3620556000 46800 1 NZDT} - {3636885600 43200 0 NZST} - {3652610400 46800 1 NZDT} - {3668940000 43200 0 NZST} - {3684060000 46800 1 NZDT} - {3700389600 43200 0 NZST} - {3715509600 46800 1 NZDT} - {3731839200 43200 0 NZST} - {3746959200 46800 1 NZDT} - {3763288800 43200 0 NZST} - {3778408800 46800 1 NZDT} - {3794738400 43200 0 NZST} - {3809858400 46800 1 NZDT} - {3826188000 43200 0 NZST} - {3841912800 46800 1 NZDT} - {3858242400 43200 0 NZST} - {3873362400 46800 1 NZDT} - {3889692000 43200 0 NZST} - {3904812000 46800 1 NZDT} - {3921141600 43200 0 NZST} - {3936261600 46800 1 NZDT} - {3952591200 43200 0 NZST} - {3967711200 46800 1 NZDT} - {3984040800 43200 0 NZST} - {3999765600 46800 1 NZDT} - {4016095200 43200 0 NZST} - {4031215200 46800 1 NZDT} - {4047544800 43200 0 NZST} - {4062664800 46800 1 NZDT} - {4078994400 43200 0 NZST} - {4094114400 46800 1 NZDT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/McMurdo) { + {-9223372036854775808 0 0 zzz} + {-441849600 43200 0 NZST} + {152632800 46800 1 NZDT} + {162309600 43200 0 NZST} + {183477600 46800 1 NZDT} + {194968800 43200 0 NZST} + {215532000 46800 1 NZDT} + {226418400 43200 0 NZST} + {246981600 46800 1 NZDT} + {257868000 43200 0 NZST} + {278431200 46800 1 NZDT} + {289317600 43200 0 NZST} + {309880800 46800 1 NZDT} + {320767200 43200 0 NZST} + {341330400 46800 1 NZDT} + {352216800 43200 0 NZST} + {372780000 46800 1 NZDT} + {384271200 43200 0 NZST} + {404834400 46800 1 NZDT} + {415720800 43200 0 NZST} + {436284000 46800 1 NZDT} + {447170400 43200 0 NZST} + {467733600 46800 1 NZDT} + {478620000 43200 0 NZST} + {499183200 46800 1 NZDT} + {510069600 43200 0 NZST} + {530632800 46800 1 NZDT} + {541519200 43200 0 NZST} + {562082400 46800 1 NZDT} + {573573600 43200 0 NZST} + {594136800 46800 1 NZDT} + {605023200 43200 0 NZST} + {623772000 46800 1 NZDT} + {637682400 43200 0 NZST} + {655221600 46800 1 NZDT} + {669132000 43200 0 NZST} + {686671200 46800 1 NZDT} + {700581600 43200 0 NZST} + {718120800 46800 1 NZDT} + {732636000 43200 0 NZST} + {749570400 46800 1 NZDT} + {764085600 43200 0 NZST} + {781020000 46800 1 NZDT} + {795535200 43200 0 NZST} + {812469600 46800 1 NZDT} + {826984800 43200 0 NZST} + {844524000 46800 1 NZDT} + {858434400 43200 0 NZST} + {875973600 46800 1 NZDT} + {889884000 43200 0 NZST} + {907423200 46800 1 NZDT} + {921938400 43200 0 NZST} + {938872800 46800 1 NZDT} + {953388000 43200 0 NZST} + {970322400 46800 1 NZDT} + {984837600 43200 0 NZST} + {1002376800 46800 1 NZDT} + {1016287200 43200 0 NZST} + {1033826400 46800 1 NZDT} + {1047736800 43200 0 NZST} + {1065276000 46800 1 NZDT} + {1079791200 43200 0 NZST} + {1096725600 46800 1 NZDT} + {1111240800 43200 0 NZST} + {1128175200 46800 1 NZDT} + {1142690400 43200 0 NZST} + {1159624800 46800 1 NZDT} + {1174140000 43200 0 NZST} + {1191074400 46800 1 NZDT} + {1207404000 43200 0 NZST} + {1222524000 46800 1 NZDT} + {1238853600 43200 0 NZST} + {1253973600 46800 1 NZDT} + {1270303200 43200 0 NZST} + {1285423200 46800 1 NZDT} + {1301752800 43200 0 NZST} + {1316872800 46800 1 NZDT} + {1333202400 43200 0 NZST} + {1348927200 46800 1 NZDT} + {1365256800 43200 0 NZST} + {1380376800 46800 1 NZDT} + {1396706400 43200 0 NZST} + {1411826400 46800 1 NZDT} + {1428156000 43200 0 NZST} + {1443276000 46800 1 NZDT} + {1459605600 43200 0 NZST} + {1474725600 46800 1 NZDT} + {1491055200 43200 0 NZST} + {1506175200 46800 1 NZDT} + {1522504800 43200 0 NZST} + {1538229600 46800 1 NZDT} + {1554559200 43200 0 NZST} + {1569679200 46800 1 NZDT} + {1586008800 43200 0 NZST} + {1601128800 46800 1 NZDT} + {1617458400 43200 0 NZST} + {1632578400 46800 1 NZDT} + {1648908000 43200 0 NZST} + {1664028000 46800 1 NZDT} + {1680357600 43200 0 NZST} + {1695477600 46800 1 NZDT} + {1712412000 43200 0 NZST} + {1727532000 46800 1 NZDT} + {1743861600 43200 0 NZST} + {1758981600 46800 1 NZDT} + {1775311200 43200 0 NZST} + {1790431200 46800 1 NZDT} + {1806760800 43200 0 NZST} + {1821880800 46800 1 NZDT} + {1838210400 43200 0 NZST} + {1853330400 46800 1 NZDT} + {1869660000 43200 0 NZST} + {1885384800 46800 1 NZDT} + {1901714400 43200 0 NZST} + {1916834400 46800 1 NZDT} + {1933164000 43200 0 NZST} + {1948284000 46800 1 NZDT} + {1964613600 43200 0 NZST} + {1979733600 46800 1 NZDT} + {1996063200 43200 0 NZST} + {2011183200 46800 1 NZDT} + {2027512800 43200 0 NZST} + {2042632800 46800 1 NZDT} + {2058962400 43200 0 NZST} + {2074687200 46800 1 NZDT} + {2091016800 43200 0 NZST} + {2106136800 46800 1 NZDT} + {2122466400 43200 0 NZST} + {2137586400 46800 1 NZDT} + {2153916000 43200 0 NZST} + {2169036000 46800 1 NZDT} + {2185365600 43200 0 NZST} + {2200485600 46800 1 NZDT} + {2216815200 43200 0 NZST} + {2232540000 46800 1 NZDT} + {2248869600 43200 0 NZST} + {2263989600 46800 1 NZDT} + {2280319200 43200 0 NZST} + {2295439200 46800 1 NZDT} + {2311768800 43200 0 NZST} + {2326888800 46800 1 NZDT} + {2343218400 43200 0 NZST} + {2358338400 46800 1 NZDT} + {2374668000 43200 0 NZST} + {2389788000 46800 1 NZDT} + {2406117600 43200 0 NZST} + {2421842400 46800 1 NZDT} + {2438172000 43200 0 NZST} + {2453292000 46800 1 NZDT} + {2469621600 43200 0 NZST} + {2484741600 46800 1 NZDT} + {2501071200 43200 0 NZST} + {2516191200 46800 1 NZDT} + {2532520800 43200 0 NZST} + {2547640800 46800 1 NZDT} + {2563970400 43200 0 NZST} + {2579090400 46800 1 NZDT} + {2596024800 43200 0 NZST} + {2611144800 46800 1 NZDT} + {2627474400 43200 0 NZST} + {2642594400 46800 1 NZDT} + {2658924000 43200 0 NZST} + {2674044000 46800 1 NZDT} + {2690373600 43200 0 NZST} + {2705493600 46800 1 NZDT} + {2721823200 43200 0 NZST} + {2736943200 46800 1 NZDT} + {2753272800 43200 0 NZST} + {2768997600 46800 1 NZDT} + {2785327200 43200 0 NZST} + {2800447200 46800 1 NZDT} + {2816776800 43200 0 NZST} + {2831896800 46800 1 NZDT} + {2848226400 43200 0 NZST} + {2863346400 46800 1 NZDT} + {2879676000 43200 0 NZST} + {2894796000 46800 1 NZDT} + {2911125600 43200 0 NZST} + {2926245600 46800 1 NZDT} + {2942575200 43200 0 NZST} + {2958300000 46800 1 NZDT} + {2974629600 43200 0 NZST} + {2989749600 46800 1 NZDT} + {3006079200 43200 0 NZST} + {3021199200 46800 1 NZDT} + {3037528800 43200 0 NZST} + {3052648800 46800 1 NZDT} + {3068978400 43200 0 NZST} + {3084098400 46800 1 NZDT} + {3100428000 43200 0 NZST} + {3116152800 46800 1 NZDT} + {3132482400 43200 0 NZST} + {3147602400 46800 1 NZDT} + {3163932000 43200 0 NZST} + {3179052000 46800 1 NZDT} + {3195381600 43200 0 NZST} + {3210501600 46800 1 NZDT} + {3226831200 43200 0 NZST} + {3241951200 46800 1 NZDT} + {3258280800 43200 0 NZST} + {3273400800 46800 1 NZDT} + {3289730400 43200 0 NZST} + {3305455200 46800 1 NZDT} + {3321784800 43200 0 NZST} + {3336904800 46800 1 NZDT} + {3353234400 43200 0 NZST} + {3368354400 46800 1 NZDT} + {3384684000 43200 0 NZST} + {3399804000 46800 1 NZDT} + {3416133600 43200 0 NZST} + {3431253600 46800 1 NZDT} + {3447583200 43200 0 NZST} + {3462703200 46800 1 NZDT} + {3479637600 43200 0 NZST} + {3494757600 46800 1 NZDT} + {3511087200 43200 0 NZST} + {3526207200 46800 1 NZDT} + {3542536800 43200 0 NZST} + {3557656800 46800 1 NZDT} + {3573986400 43200 0 NZST} + {3589106400 46800 1 NZDT} + {3605436000 43200 0 NZST} + {3620556000 46800 1 NZDT} + {3636885600 43200 0 NZST} + {3652610400 46800 1 NZDT} + {3668940000 43200 0 NZST} + {3684060000 46800 1 NZDT} + {3700389600 43200 0 NZST} + {3715509600 46800 1 NZDT} + {3731839200 43200 0 NZST} + {3746959200 46800 1 NZDT} + {3763288800 43200 0 NZST} + {3778408800 46800 1 NZDT} + {3794738400 43200 0 NZST} + {3809858400 46800 1 NZDT} + {3826188000 43200 0 NZST} + {3841912800 46800 1 NZDT} + {3858242400 43200 0 NZST} + {3873362400 46800 1 NZDT} + {3889692000 43200 0 NZST} + {3904812000 46800 1 NZDT} + {3921141600 43200 0 NZST} + {3936261600 46800 1 NZDT} + {3952591200 43200 0 NZST} + {3967711200 46800 1 NZDT} + {3984040800 43200 0 NZST} + {3999765600 46800 1 NZDT} + {4016095200 43200 0 NZST} + {4031215200 46800 1 NZDT} + {4047544800 43200 0 NZST} + {4062664800 46800 1 NZDT} + {4078994400 43200 0 NZST} + {4094114400 46800 1 NZDT} +} diff --git a/library/tzdata/Antarctica/Palmer b/library/tzdata/Antarctica/Palmer index 7cb3d22..1e24754 100644 --- a/library/tzdata/Antarctica/Palmer +++ b/library/tzdata/Antarctica/Palmer @@ -1,254 +1,254 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Palmer) { - {-9223372036854775808 0 0 zzz} - {-157766400 -14400 0 ART} - {-152654400 -14400 0 ART} - {-132955200 -10800 1 ARST} - {-121122000 -14400 0 ART} - {-101419200 -10800 1 ARST} - {-86821200 -14400 0 ART} - {-71092800 -10800 1 ARST} - {-54766800 -14400 0 ART} - {-39038400 -10800 1 ARST} - {-23317200 -14400 0 ART} - {-7588800 -10800 0 ART} - {128142000 -7200 1 ARST} - {136605600 -10800 0 ART} - {389070000 -14400 0 CLT} - {403070400 -10800 1 CLST} - {416372400 -14400 0 CLT} - {434520000 -10800 1 CLST} - {447822000 -14400 0 CLT} - {466574400 -10800 1 CLST} - {479271600 -14400 0 CLT} - {498024000 -10800 1 CLST} - {510721200 -14400 0 CLT} - {529473600 -10800 1 CLST} - {545194800 -14400 0 CLT} - {560923200 -10800 1 CLST} - {574225200 -14400 0 CLT} - {591768000 -10800 1 CLST} - {605674800 -14400 0 CLT} - {624427200 -10800 1 CLST} - {637729200 -14400 0 CLT} - {653457600 -10800 1 CLST} - {668574000 -14400 0 CLT} - {687326400 -10800 1 CLST} - {700628400 -14400 0 CLT} - {718776000 -10800 1 CLST} - {732078000 -14400 0 CLT} - {750225600 -10800 1 CLST} - {763527600 -14400 0 CLT} - {781675200 -10800 1 CLST} - {794977200 -14400 0 CLT} - {813729600 -10800 1 CLST} - {826426800 -14400 0 CLT} - {845179200 -10800 1 CLST} - {859690800 -14400 0 CLT} - {876628800 -10800 1 CLST} - {889930800 -14400 0 CLT} - {906868800 -10800 1 CLST} - {923194800 -14400 0 CLT} - {939528000 -10800 1 CLST} - {952830000 -14400 0 CLT} - {971582400 -10800 1 CLST} - {984279600 -14400 0 CLT} - {1003032000 -10800 1 CLST} - {1015729200 -14400 0 CLT} - {1034481600 -10800 1 CLST} - {1047178800 -14400 0 CLT} - {1065931200 -10800 1 CLST} - {1079233200 -14400 0 CLT} - {1097380800 -10800 1 CLST} - {1110682800 -14400 0 CLT} - {1128830400 -10800 1 CLST} - {1142132400 -14400 0 CLT} - {1160884800 -10800 1 CLST} - {1173582000 -14400 0 CLT} - {1192334400 -10800 1 CLST} - {1205031600 -14400 0 CLT} - {1223784000 -10800 1 CLST} - {1237086000 -14400 0 CLT} - {1255233600 -10800 1 CLST} - {1268535600 -14400 0 CLT} - {1286683200 -10800 1 CLST} - {1299985200 -14400 0 CLT} - {1318132800 -10800 1 CLST} - {1331434800 -14400 0 CLT} - {1350187200 -10800 1 CLST} - {1362884400 -14400 0 CLT} - {1381636800 -10800 1 CLST} - {1394334000 -14400 0 CLT} - {1413086400 -10800 1 CLST} - {1426388400 -14400 0 CLT} - {1444536000 -10800 1 CLST} - {1457838000 -14400 0 CLT} - {1475985600 -10800 1 CLST} - {1489287600 -14400 0 CLT} - {1508040000 -10800 1 CLST} - {1520737200 -14400 0 CLT} - {1539489600 -10800 1 CLST} - {1552186800 -14400 0 CLT} - {1570939200 -10800 1 CLST} - {1584241200 -14400 0 CLT} - {1602388800 -10800 1 CLST} - {1615690800 -14400 0 CLT} - {1633838400 -10800 1 CLST} - {1647140400 -14400 0 CLT} - {1665288000 -10800 1 CLST} - {1678590000 -14400 0 CLT} - {1697342400 -10800 1 CLST} - {1710039600 -14400 0 CLT} - {1728792000 -10800 1 CLST} - {1741489200 -14400 0 CLT} - {1760241600 -10800 1 CLST} - {1773543600 -14400 0 CLT} - {1791691200 -10800 1 CLST} - {1804993200 -14400 0 CLT} - {1823140800 -10800 1 CLST} - {1836442800 -14400 0 CLT} - {1855195200 -10800 1 CLST} - {1867892400 -14400 0 CLT} - {1886644800 -10800 1 CLST} - {1899342000 -14400 0 CLT} - {1918094400 -10800 1 CLST} - {1930791600 -14400 0 CLT} - {1949544000 -10800 1 CLST} - {1962846000 -14400 0 CLT} - {1980993600 -10800 1 CLST} - {1994295600 -14400 0 CLT} - {2012443200 -10800 1 CLST} - {2025745200 -14400 0 CLT} - {2044497600 -10800 1 CLST} - {2057194800 -14400 0 CLT} - {2075947200 -10800 1 CLST} - {2088644400 -14400 0 CLT} - {2107396800 -10800 1 CLST} - {2120698800 -14400 0 CLT} - {2138846400 -10800 1 CLST} - {2152148400 -14400 0 CLT} - {2170296000 -10800 1 CLST} - {2183598000 -14400 0 CLT} - {2201745600 -10800 1 CLST} - {2215047600 -14400 0 CLT} - {2233800000 -10800 1 CLST} - {2246497200 -14400 0 CLT} - {2265249600 -10800 1 CLST} - {2277946800 -14400 0 CLT} - {2296699200 -10800 1 CLST} - {2310001200 -14400 0 CLT} - {2328148800 -10800 1 CLST} - {2341450800 -14400 0 CLT} - {2359598400 -10800 1 CLST} - {2372900400 -14400 0 CLT} - {2391652800 -10800 1 CLST} - {2404350000 -14400 0 CLT} - {2423102400 -10800 1 CLST} - {2435799600 -14400 0 CLT} - {2454552000 -10800 1 CLST} - {2467854000 -14400 0 CLT} - {2486001600 -10800 1 CLST} - {2499303600 -14400 0 CLT} - {2517451200 -10800 1 CLST} - {2530753200 -14400 0 CLT} - {2548900800 -10800 1 CLST} - {2562202800 -14400 0 CLT} - {2580955200 -10800 1 CLST} - {2593652400 -14400 0 CLT} - {2612404800 -10800 1 CLST} - {2625102000 -14400 0 CLT} - {2643854400 -10800 1 CLST} - {2657156400 -14400 0 CLT} - {2675304000 -10800 1 CLST} - {2688606000 -14400 0 CLT} - {2706753600 -10800 1 CLST} - {2720055600 -14400 0 CLT} - {2738808000 -10800 1 CLST} - {2751505200 -14400 0 CLT} - {2770257600 -10800 1 CLST} - {2782954800 -14400 0 CLT} - {2801707200 -10800 1 CLST} - {2814404400 -14400 0 CLT} - {2833156800 -10800 1 CLST} - {2846458800 -14400 0 CLT} - {2864606400 -10800 1 CLST} - {2877908400 -14400 0 CLT} - {2896056000 -10800 1 CLST} - {2909358000 -14400 0 CLT} - {2928110400 -10800 1 CLST} - {2940807600 -14400 0 CLT} - {2959560000 -10800 1 CLST} - {2972257200 -14400 0 CLT} - {2991009600 -10800 1 CLST} - {3004311600 -14400 0 CLT} - {3022459200 -10800 1 CLST} - {3035761200 -14400 0 CLT} - {3053908800 -10800 1 CLST} - {3067210800 -14400 0 CLT} - {3085358400 -10800 1 CLST} - {3098660400 -14400 0 CLT} - {3117412800 -10800 1 CLST} - {3130110000 -14400 0 CLT} - {3148862400 -10800 1 CLST} - {3161559600 -14400 0 CLT} - {3180312000 -10800 1 CLST} - {3193614000 -14400 0 CLT} - {3211761600 -10800 1 CLST} - {3225063600 -14400 0 CLT} - {3243211200 -10800 1 CLST} - {3256513200 -14400 0 CLT} - {3275265600 -10800 1 CLST} - {3287962800 -14400 0 CLT} - {3306715200 -10800 1 CLST} - {3319412400 -14400 0 CLT} - {3338164800 -10800 1 CLST} - {3351466800 -14400 0 CLT} - {3369614400 -10800 1 CLST} - {3382916400 -14400 0 CLT} - {3401064000 -10800 1 CLST} - {3414366000 -14400 0 CLT} - {3432513600 -10800 1 CLST} - {3445815600 -14400 0 CLT} - {3464568000 -10800 1 CLST} - {3477265200 -14400 0 CLT} - {3496017600 -10800 1 CLST} - {3508714800 -14400 0 CLT} - {3527467200 -10800 1 CLST} - {3540769200 -14400 0 CLT} - {3558916800 -10800 1 CLST} - {3572218800 -14400 0 CLT} - {3590366400 -10800 1 CLST} - {3603668400 -14400 0 CLT} - {3622420800 -10800 1 CLST} - {3635118000 -14400 0 CLT} - {3653870400 -10800 1 CLST} - {3666567600 -14400 0 CLT} - {3685320000 -10800 1 CLST} - {3698017200 -14400 0 CLT} - {3716769600 -10800 1 CLST} - {3730071600 -14400 0 CLT} - {3748219200 -10800 1 CLST} - {3761521200 -14400 0 CLT} - {3779668800 -10800 1 CLST} - {3792970800 -14400 0 CLT} - {3811723200 -10800 1 CLST} - {3824420400 -14400 0 CLT} - {3843172800 -10800 1 CLST} - {3855870000 -14400 0 CLT} - {3874622400 -10800 1 CLST} - {3887924400 -14400 0 CLT} - {3906072000 -10800 1 CLST} - {3919374000 -14400 0 CLT} - {3937521600 -10800 1 CLST} - {3950823600 -14400 0 CLT} - {3968971200 -10800 1 CLST} - {3982273200 -14400 0 CLT} - {4001025600 -10800 1 CLST} - {4013722800 -14400 0 CLT} - {4032475200 -10800 1 CLST} - {4045172400 -14400 0 CLT} - {4063924800 -10800 1 CLST} - {4077226800 -14400 0 CLT} - {4095374400 -10800 1 CLST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Palmer) { + {-9223372036854775808 0 0 zzz} + {-157766400 -14400 0 ART} + {-152654400 -14400 0 ART} + {-132955200 -10800 1 ARST} + {-121122000 -14400 0 ART} + {-101419200 -10800 1 ARST} + {-86821200 -14400 0 ART} + {-71092800 -10800 1 ARST} + {-54766800 -14400 0 ART} + {-39038400 -10800 1 ARST} + {-23317200 -14400 0 ART} + {-7588800 -10800 0 ART} + {128142000 -7200 1 ARST} + {136605600 -10800 0 ART} + {389070000 -14400 0 CLT} + {403070400 -10800 1 CLST} + {416372400 -14400 0 CLT} + {434520000 -10800 1 CLST} + {447822000 -14400 0 CLT} + {466574400 -10800 1 CLST} + {479271600 -14400 0 CLT} + {498024000 -10800 1 CLST} + {510721200 -14400 0 CLT} + {529473600 -10800 1 CLST} + {545194800 -14400 0 CLT} + {560923200 -10800 1 CLST} + {574225200 -14400 0 CLT} + {591768000 -10800 1 CLST} + {605674800 -14400 0 CLT} + {624427200 -10800 1 CLST} + {637729200 -14400 0 CLT} + {653457600 -10800 1 CLST} + {668574000 -14400 0 CLT} + {687326400 -10800 1 CLST} + {700628400 -14400 0 CLT} + {718776000 -10800 1 CLST} + {732078000 -14400 0 CLT} + {750225600 -10800 1 CLST} + {763527600 -14400 0 CLT} + {781675200 -10800 1 CLST} + {794977200 -14400 0 CLT} + {813729600 -10800 1 CLST} + {826426800 -14400 0 CLT} + {845179200 -10800 1 CLST} + {859690800 -14400 0 CLT} + {876628800 -10800 1 CLST} + {889930800 -14400 0 CLT} + {906868800 -10800 1 CLST} + {923194800 -14400 0 CLT} + {939528000 -10800 1 CLST} + {952830000 -14400 0 CLT} + {971582400 -10800 1 CLST} + {984279600 -14400 0 CLT} + {1003032000 -10800 1 CLST} + {1015729200 -14400 0 CLT} + {1034481600 -10800 1 CLST} + {1047178800 -14400 0 CLT} + {1065931200 -10800 1 CLST} + {1079233200 -14400 0 CLT} + {1097380800 -10800 1 CLST} + {1110682800 -14400 0 CLT} + {1128830400 -10800 1 CLST} + {1142132400 -14400 0 CLT} + {1160884800 -10800 1 CLST} + {1173582000 -14400 0 CLT} + {1192334400 -10800 1 CLST} + {1205031600 -14400 0 CLT} + {1223784000 -10800 1 CLST} + {1237086000 -14400 0 CLT} + {1255233600 -10800 1 CLST} + {1268535600 -14400 0 CLT} + {1286683200 -10800 1 CLST} + {1299985200 -14400 0 CLT} + {1318132800 -10800 1 CLST} + {1331434800 -14400 0 CLT} + {1350187200 -10800 1 CLST} + {1362884400 -14400 0 CLT} + {1381636800 -10800 1 CLST} + {1394334000 -14400 0 CLT} + {1413086400 -10800 1 CLST} + {1426388400 -14400 0 CLT} + {1444536000 -10800 1 CLST} + {1457838000 -14400 0 CLT} + {1475985600 -10800 1 CLST} + {1489287600 -14400 0 CLT} + {1508040000 -10800 1 CLST} + {1520737200 -14400 0 CLT} + {1539489600 -10800 1 CLST} + {1552186800 -14400 0 CLT} + {1570939200 -10800 1 CLST} + {1584241200 -14400 0 CLT} + {1602388800 -10800 1 CLST} + {1615690800 -14400 0 CLT} + {1633838400 -10800 1 CLST} + {1647140400 -14400 0 CLT} + {1665288000 -10800 1 CLST} + {1678590000 -14400 0 CLT} + {1697342400 -10800 1 CLST} + {1710039600 -14400 0 CLT} + {1728792000 -10800 1 CLST} + {1741489200 -14400 0 CLT} + {1760241600 -10800 1 CLST} + {1773543600 -14400 0 CLT} + {1791691200 -10800 1 CLST} + {1804993200 -14400 0 CLT} + {1823140800 -10800 1 CLST} + {1836442800 -14400 0 CLT} + {1855195200 -10800 1 CLST} + {1867892400 -14400 0 CLT} + {1886644800 -10800 1 CLST} + {1899342000 -14400 0 CLT} + {1918094400 -10800 1 CLST} + {1930791600 -14400 0 CLT} + {1949544000 -10800 1 CLST} + {1962846000 -14400 0 CLT} + {1980993600 -10800 1 CLST} + {1994295600 -14400 0 CLT} + {2012443200 -10800 1 CLST} + {2025745200 -14400 0 CLT} + {2044497600 -10800 1 CLST} + {2057194800 -14400 0 CLT} + {2075947200 -10800 1 CLST} + {2088644400 -14400 0 CLT} + {2107396800 -10800 1 CLST} + {2120698800 -14400 0 CLT} + {2138846400 -10800 1 CLST} + {2152148400 -14400 0 CLT} + {2170296000 -10800 1 CLST} + {2183598000 -14400 0 CLT} + {2201745600 -10800 1 CLST} + {2215047600 -14400 0 CLT} + {2233800000 -10800 1 CLST} + {2246497200 -14400 0 CLT} + {2265249600 -10800 1 CLST} + {2277946800 -14400 0 CLT} + {2296699200 -10800 1 CLST} + {2310001200 -14400 0 CLT} + {2328148800 -10800 1 CLST} + {2341450800 -14400 0 CLT} + {2359598400 -10800 1 CLST} + {2372900400 -14400 0 CLT} + {2391652800 -10800 1 CLST} + {2404350000 -14400 0 CLT} + {2423102400 -10800 1 CLST} + {2435799600 -14400 0 CLT} + {2454552000 -10800 1 CLST} + {2467854000 -14400 0 CLT} + {2486001600 -10800 1 CLST} + {2499303600 -14400 0 CLT} + {2517451200 -10800 1 CLST} + {2530753200 -14400 0 CLT} + {2548900800 -10800 1 CLST} + {2562202800 -14400 0 CLT} + {2580955200 -10800 1 CLST} + {2593652400 -14400 0 CLT} + {2612404800 -10800 1 CLST} + {2625102000 -14400 0 CLT} + {2643854400 -10800 1 CLST} + {2657156400 -14400 0 CLT} + {2675304000 -10800 1 CLST} + {2688606000 -14400 0 CLT} + {2706753600 -10800 1 CLST} + {2720055600 -14400 0 CLT} + {2738808000 -10800 1 CLST} + {2751505200 -14400 0 CLT} + {2770257600 -10800 1 CLST} + {2782954800 -14400 0 CLT} + {2801707200 -10800 1 CLST} + {2814404400 -14400 0 CLT} + {2833156800 -10800 1 CLST} + {2846458800 -14400 0 CLT} + {2864606400 -10800 1 CLST} + {2877908400 -14400 0 CLT} + {2896056000 -10800 1 CLST} + {2909358000 -14400 0 CLT} + {2928110400 -10800 1 CLST} + {2940807600 -14400 0 CLT} + {2959560000 -10800 1 CLST} + {2972257200 -14400 0 CLT} + {2991009600 -10800 1 CLST} + {3004311600 -14400 0 CLT} + {3022459200 -10800 1 CLST} + {3035761200 -14400 0 CLT} + {3053908800 -10800 1 CLST} + {3067210800 -14400 0 CLT} + {3085358400 -10800 1 CLST} + {3098660400 -14400 0 CLT} + {3117412800 -10800 1 CLST} + {3130110000 -14400 0 CLT} + {3148862400 -10800 1 CLST} + {3161559600 -14400 0 CLT} + {3180312000 -10800 1 CLST} + {3193614000 -14400 0 CLT} + {3211761600 -10800 1 CLST} + {3225063600 -14400 0 CLT} + {3243211200 -10800 1 CLST} + {3256513200 -14400 0 CLT} + {3275265600 -10800 1 CLST} + {3287962800 -14400 0 CLT} + {3306715200 -10800 1 CLST} + {3319412400 -14400 0 CLT} + {3338164800 -10800 1 CLST} + {3351466800 -14400 0 CLT} + {3369614400 -10800 1 CLST} + {3382916400 -14400 0 CLT} + {3401064000 -10800 1 CLST} + {3414366000 -14400 0 CLT} + {3432513600 -10800 1 CLST} + {3445815600 -14400 0 CLT} + {3464568000 -10800 1 CLST} + {3477265200 -14400 0 CLT} + {3496017600 -10800 1 CLST} + {3508714800 -14400 0 CLT} + {3527467200 -10800 1 CLST} + {3540769200 -14400 0 CLT} + {3558916800 -10800 1 CLST} + {3572218800 -14400 0 CLT} + {3590366400 -10800 1 CLST} + {3603668400 -14400 0 CLT} + {3622420800 -10800 1 CLST} + {3635118000 -14400 0 CLT} + {3653870400 -10800 1 CLST} + {3666567600 -14400 0 CLT} + {3685320000 -10800 1 CLST} + {3698017200 -14400 0 CLT} + {3716769600 -10800 1 CLST} + {3730071600 -14400 0 CLT} + {3748219200 -10800 1 CLST} + {3761521200 -14400 0 CLT} + {3779668800 -10800 1 CLST} + {3792970800 -14400 0 CLT} + {3811723200 -10800 1 CLST} + {3824420400 -14400 0 CLT} + {3843172800 -10800 1 CLST} + {3855870000 -14400 0 CLT} + {3874622400 -10800 1 CLST} + {3887924400 -14400 0 CLT} + {3906072000 -10800 1 CLST} + {3919374000 -14400 0 CLT} + {3937521600 -10800 1 CLST} + {3950823600 -14400 0 CLT} + {3968971200 -10800 1 CLST} + {3982273200 -14400 0 CLT} + {4001025600 -10800 1 CLST} + {4013722800 -14400 0 CLT} + {4032475200 -10800 1 CLST} + {4045172400 -14400 0 CLT} + {4063924800 -10800 1 CLST} + {4077226800 -14400 0 CLT} + {4095374400 -10800 1 CLST} +} diff --git a/library/tzdata/Antarctica/Rothera b/library/tzdata/Antarctica/Rothera index 4f60fac..24d7f3e 100644 --- a/library/tzdata/Antarctica/Rothera +++ b/library/tzdata/Antarctica/Rothera @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Rothera) { - {-9223372036854775808 0 0 zzz} - {218246400 -10800 0 ROTT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Rothera) { + {-9223372036854775808 0 0 zzz} + {218246400 -10800 0 ROTT} +} diff --git a/library/tzdata/Antarctica/South_Pole b/library/tzdata/Antarctica/South_Pole index 4b2cbfb..34d0db1 100644 --- a/library/tzdata/Antarctica/South_Pole +++ b/library/tzdata/Antarctica/South_Pole @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Antarctica/McMurdo)]} { - LoadTimeZoneFile Antarctica/McMurdo -} -set TZData(:Antarctica/South_Pole) $TZData(:Antarctica/McMurdo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Antarctica/McMurdo)]} { + LoadTimeZoneFile Antarctica/McMurdo +} +set TZData(:Antarctica/South_Pole) $TZData(:Antarctica/McMurdo) diff --git a/library/tzdata/Antarctica/Syowa b/library/tzdata/Antarctica/Syowa index e649e47..4d046b5 100644 --- a/library/tzdata/Antarctica/Syowa +++ b/library/tzdata/Antarctica/Syowa @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Syowa) { - {-9223372036854775808 0 0 zzz} - {-407808000 10800 0 SYOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Syowa) { + {-9223372036854775808 0 0 zzz} + {-407808000 10800 0 SYOT} +} diff --git a/library/tzdata/Antarctica/Vostok b/library/tzdata/Antarctica/Vostok index 36297a9..f846f65 100644 --- a/library/tzdata/Antarctica/Vostok +++ b/library/tzdata/Antarctica/Vostok @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Antarctica/Vostok) { - {-9223372036854775808 0 0 zzz} - {-380073600 21600 0 VOST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Vostok) { + {-9223372036854775808 0 0 zzz} + {-380073600 21600 0 VOST} +} diff --git a/library/tzdata/Arctic/Longyearbyen b/library/tzdata/Arctic/Longyearbyen index e628b96..51f83dc 100644 --- a/library/tzdata/Arctic/Longyearbyen +++ b/library/tzdata/Arctic/Longyearbyen @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Oslo)]} { - LoadTimeZoneFile Europe/Oslo -} -set TZData(:Arctic/Longyearbyen) $TZData(:Europe/Oslo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Oslo)]} { + LoadTimeZoneFile Europe/Oslo +} +set TZData(:Arctic/Longyearbyen) $TZData(:Europe/Oslo) diff --git a/library/tzdata/Asia/Aden b/library/tzdata/Asia/Aden index 333ea02..e939235 100644 --- a/library/tzdata/Asia/Aden +++ b/library/tzdata/Asia/Aden @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Aden) { - {-9223372036854775808 10848 0 LMT} - {-631162848 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Aden) { + {-9223372036854775808 10848 0 LMT} + {-631162848 10800 0 AST} +} diff --git a/library/tzdata/Asia/Almaty b/library/tzdata/Asia/Almaty index ab9b5d0..68dee29 100644 --- a/library/tzdata/Asia/Almaty +++ b/library/tzdata/Asia/Almaty @@ -1,56 +1,56 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Almaty) { - {-9223372036854775808 18468 0 LMT} - {-1441170468 18000 0 ALMT} - {-1247547600 21600 0 ALMT} - {354909600 25200 1 ALMST} - {370717200 21600 0 ALMT} - {386445600 25200 1 ALMST} - {402253200 21600 0 ALMT} - {417981600 25200 1 ALMST} - {433789200 21600 0 ALMT} - {449604000 25200 1 ALMST} - {465336000 21600 0 ALMT} - {481060800 25200 1 ALMST} - {496785600 21600 0 ALMT} - {512510400 25200 1 ALMST} - {528235200 21600 0 ALMT} - {543960000 25200 1 ALMST} - {559684800 21600 0 ALMT} - {575409600 25200 1 ALMST} - {591134400 21600 0 ALMT} - {606859200 25200 1 ALMST} - {622584000 21600 0 ALMT} - {638308800 25200 1 ALMST} - {654638400 21600 0 ALMT} - {662666400 21600 0 ALMT} - {694202400 21600 0 ALMT} - {701802000 25200 1 ALMST} - {717523200 21600 0 ALMT} - {733262400 25200 1 ALMST} - {748987200 21600 0 ALMT} - {764712000 25200 1 ALMST} - {780436800 21600 0 ALMT} - {796161600 25200 1 ALMST} - {811886400 21600 0 ALMT} - {828216000 25200 1 ALMST} - {846360000 21600 0 ALMT} - {859665600 25200 1 ALMST} - {877809600 21600 0 ALMT} - {891115200 25200 1 ALMST} - {909259200 21600 0 ALMT} - {922564800 25200 1 ALMST} - {941313600 21600 0 ALMT} - {954014400 25200 1 ALMST} - {972763200 21600 0 ALMT} - {985464000 25200 1 ALMST} - {1004212800 21600 0 ALMT} - {1017518400 25200 1 ALMST} - {1035662400 21600 0 ALMT} - {1048968000 25200 1 ALMST} - {1067112000 21600 0 ALMT} - {1080417600 25200 1 ALMST} - {1099166400 21600 0 ALMT} - {1110823200 21600 0 ALMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Almaty) { + {-9223372036854775808 18468 0 LMT} + {-1441170468 18000 0 ALMT} + {-1247547600 21600 0 ALMT} + {354909600 25200 1 ALMST} + {370717200 21600 0 ALMT} + {386445600 25200 1 ALMST} + {402253200 21600 0 ALMT} + {417981600 25200 1 ALMST} + {433789200 21600 0 ALMT} + {449604000 25200 1 ALMST} + {465336000 21600 0 ALMT} + {481060800 25200 1 ALMST} + {496785600 21600 0 ALMT} + {512510400 25200 1 ALMST} + {528235200 21600 0 ALMT} + {543960000 25200 1 ALMST} + {559684800 21600 0 ALMT} + {575409600 25200 1 ALMST} + {591134400 21600 0 ALMT} + {606859200 25200 1 ALMST} + {622584000 21600 0 ALMT} + {638308800 25200 1 ALMST} + {654638400 21600 0 ALMT} + {662666400 21600 0 ALMT} + {694202400 21600 0 ALMT} + {701802000 25200 1 ALMST} + {717523200 21600 0 ALMT} + {733262400 25200 1 ALMST} + {748987200 21600 0 ALMT} + {764712000 25200 1 ALMST} + {780436800 21600 0 ALMT} + {796161600 25200 1 ALMST} + {811886400 21600 0 ALMT} + {828216000 25200 1 ALMST} + {846360000 21600 0 ALMT} + {859665600 25200 1 ALMST} + {877809600 21600 0 ALMT} + {891115200 25200 1 ALMST} + {909259200 21600 0 ALMT} + {922564800 25200 1 ALMST} + {941313600 21600 0 ALMT} + {954014400 25200 1 ALMST} + {972763200 21600 0 ALMT} + {985464000 25200 1 ALMST} + {1004212800 21600 0 ALMT} + {1017518400 25200 1 ALMST} + {1035662400 21600 0 ALMT} + {1048968000 25200 1 ALMST} + {1067112000 21600 0 ALMT} + {1080417600 25200 1 ALMST} + {1099166400 21600 0 ALMT} + {1110823200 21600 0 ALMT} +} diff --git a/library/tzdata/Asia/Amman b/library/tzdata/Asia/Amman index 8baec6e..0c6ffcb 100644 --- a/library/tzdata/Asia/Amman +++ b/library/tzdata/Asia/Amman @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Amman) { - {-9223372036854775808 8624 0 LMT} - {-1230776624 7200 0 EET} - {108165600 10800 1 EEST} - {118270800 7200 0 EET} - {136591200 10800 1 EEST} - {149806800 7200 0 EET} - {168127200 10800 1 EEST} - {181342800 7200 0 EET} - {199749600 10800 1 EEST} - {215643600 7200 0 EET} - {231285600 10800 1 EEST} - {244501200 7200 0 EET} - {262735200 10800 1 EEST} - {275950800 7200 0 EET} - {481154400 10800 1 EEST} - {496962000 7200 0 EET} - {512949600 10800 1 EEST} - {528670800 7200 0 EET} - {544399200 10800 1 EEST} - {560120400 7200 0 EET} - {575848800 10800 1 EEST} - {592174800 7200 0 EET} - {610581600 10800 1 EEST} - {623624400 7200 0 EET} - {641167200 10800 1 EEST} - {655074000 7200 0 EET} - {671839200 10800 1 EEST} - {685918800 7200 0 EET} - {702856800 10800 1 EEST} - {717973200 7200 0 EET} - {733701600 10800 1 EEST} - {749422800 7200 0 EET} - {765151200 10800 1 EEST} - {779662800 7200 0 EET} - {797205600 10800 1 EEST} - {811116000 7200 0 EET} - {828655200 10800 1 EEST} - {843170400 7200 0 EET} - {860104800 10800 1 EEST} - {874620000 7200 0 EET} - {891554400 10800 1 EEST} - {906069600 7200 0 EET} - {930780000 10800 1 EEST} - {938124000 7200 0 EET} - {954367200 10800 1 EEST} - {970178400 7200 0 EET} - {985816800 10800 1 EEST} - {1001628000 7200 0 EET} - {1017352800 10800 1 EEST} - {1033077600 7200 0 EET} - {1048802400 10800 1 EEST} - {1066946400 7200 0 EET} - {1080252000 10800 1 EEST} - {1097791200 7200 0 EET} - {1111701600 10800 1 EEST} - {1128031200 7200 0 EET} - {1143756000 10800 1 EEST} - {1161900000 7200 0 EET} - {1175205600 10800 1 EEST} - {1193349600 7200 0 EET} - {1206655200 10800 1 EEST} - {1225404000 7200 0 EET} - {1238104800 10800 1 EEST} - {1256853600 7200 0 EET} - {1269554400 10800 1 EEST} - {1288303200 7200 0 EET} - {1301004000 10800 1 EEST} - {1319752800 7200 0 EET} - {1333058400 10800 1 EEST} - {1351202400 7200 0 EET} - {1364508000 10800 1 EEST} - {1382652000 7200 0 EET} - {1395957600 10800 1 EEST} - {1414706400 7200 0 EET} - {1427407200 10800 1 EEST} - {1446156000 7200 0 EET} - {1458856800 10800 1 EEST} - {1477605600 7200 0 EET} - {1490911200 10800 1 EEST} - {1509055200 7200 0 EET} - {1522360800 10800 1 EEST} - {1540504800 7200 0 EET} - {1553810400 10800 1 EEST} - {1571954400 7200 0 EET} - {1585260000 10800 1 EEST} - {1604008800 7200 0 EET} - {1616709600 10800 1 EEST} - {1635458400 7200 0 EET} - {1648159200 10800 1 EEST} - {1666908000 7200 0 EET} - {1680213600 10800 1 EEST} - {1698357600 7200 0 EET} - {1711663200 10800 1 EEST} - {1729807200 7200 0 EET} - {1743112800 10800 1 EEST} - {1761861600 7200 0 EET} - {1774562400 10800 1 EEST} - {1793311200 7200 0 EET} - {1806012000 10800 1 EEST} - {1824760800 7200 0 EET} - {1838066400 10800 1 EEST} - {1856210400 7200 0 EET} - {1869516000 10800 1 EEST} - {1887660000 7200 0 EET} - {1900965600 10800 1 EEST} - {1919109600 7200 0 EET} - {1932415200 10800 1 EEST} - {1951164000 7200 0 EET} - {1963864800 10800 1 EEST} - {1982613600 7200 0 EET} - {1995314400 10800 1 EEST} - {2014063200 7200 0 EET} - {2027368800 10800 1 EEST} - {2045512800 7200 0 EET} - {2058818400 10800 1 EEST} - {2076962400 7200 0 EET} - {2090268000 10800 1 EEST} - {2109016800 7200 0 EET} - {2121717600 10800 1 EEST} - {2140466400 7200 0 EET} - {2153167200 10800 1 EEST} - {2171916000 7200 0 EET} - {2184616800 10800 1 EEST} - {2203365600 7200 0 EET} - {2216671200 10800 1 EEST} - {2234815200 7200 0 EET} - {2248120800 10800 1 EEST} - {2266264800 7200 0 EET} - {2279570400 10800 1 EEST} - {2298319200 7200 0 EET} - {2311020000 10800 1 EEST} - {2329768800 7200 0 EET} - {2342469600 10800 1 EEST} - {2361218400 7200 0 EET} - {2374524000 10800 1 EEST} - {2392668000 7200 0 EET} - {2405973600 10800 1 EEST} - {2424117600 7200 0 EET} - {2437423200 10800 1 EEST} - {2455567200 7200 0 EET} - {2468872800 10800 1 EEST} - {2487621600 7200 0 EET} - {2500322400 10800 1 EEST} - {2519071200 7200 0 EET} - {2531772000 10800 1 EEST} - {2550520800 7200 0 EET} - {2563826400 10800 1 EEST} - {2581970400 7200 0 EET} - {2595276000 10800 1 EEST} - {2613420000 7200 0 EET} - {2626725600 10800 1 EEST} - {2645474400 7200 0 EET} - {2658175200 10800 1 EEST} - {2676924000 7200 0 EET} - {2689624800 10800 1 EEST} - {2708373600 7200 0 EET} - {2721679200 10800 1 EEST} - {2739823200 7200 0 EET} - {2753128800 10800 1 EEST} - {2771272800 7200 0 EET} - {2784578400 10800 1 EEST} - {2802722400 7200 0 EET} - {2816028000 10800 1 EEST} - {2834776800 7200 0 EET} - {2847477600 10800 1 EEST} - {2866226400 7200 0 EET} - {2878927200 10800 1 EEST} - {2897676000 7200 0 EET} - {2910981600 10800 1 EEST} - {2929125600 7200 0 EET} - {2942431200 10800 1 EEST} - {2960575200 7200 0 EET} - {2973880800 10800 1 EEST} - {2992629600 7200 0 EET} - {3005330400 10800 1 EEST} - {3024079200 7200 0 EET} - {3036780000 10800 1 EEST} - {3055528800 7200 0 EET} - {3068229600 10800 1 EEST} - {3086978400 7200 0 EET} - {3100284000 10800 1 EEST} - {3118428000 7200 0 EET} - {3131733600 10800 1 EEST} - {3149877600 7200 0 EET} - {3163183200 10800 1 EEST} - {3181932000 7200 0 EET} - {3194632800 10800 1 EEST} - {3213381600 7200 0 EET} - {3226082400 10800 1 EEST} - {3244831200 7200 0 EET} - {3258136800 10800 1 EEST} - {3276280800 7200 0 EET} - {3289586400 10800 1 EEST} - {3307730400 7200 0 EET} - {3321036000 10800 1 EEST} - {3339180000 7200 0 EET} - {3352485600 10800 1 EEST} - {3371234400 7200 0 EET} - {3383935200 10800 1 EEST} - {3402684000 7200 0 EET} - {3415384800 10800 1 EEST} - {3434133600 7200 0 EET} - {3447439200 10800 1 EEST} - {3465583200 7200 0 EET} - {3478888800 10800 1 EEST} - {3497032800 7200 0 EET} - {3510338400 10800 1 EEST} - {3529087200 7200 0 EET} - {3541788000 10800 1 EEST} - {3560536800 7200 0 EET} - {3573237600 10800 1 EEST} - {3591986400 7200 0 EET} - {3605292000 10800 1 EEST} - {3623436000 7200 0 EET} - {3636741600 10800 1 EEST} - {3654885600 7200 0 EET} - {3668191200 10800 1 EEST} - {3686335200 7200 0 EET} - {3699640800 10800 1 EEST} - {3718389600 7200 0 EET} - {3731090400 10800 1 EEST} - {3749839200 7200 0 EET} - {3762540000 10800 1 EEST} - {3781288800 7200 0 EET} - {3794594400 10800 1 EEST} - {3812738400 7200 0 EET} - {3826044000 10800 1 EEST} - {3844188000 7200 0 EET} - {3857493600 10800 1 EEST} - {3876242400 7200 0 EET} - {3888943200 10800 1 EEST} - {3907692000 7200 0 EET} - {3920392800 10800 1 EEST} - {3939141600 7200 0 EET} - {3951842400 10800 1 EEST} - {3970591200 7200 0 EET} - {3983896800 10800 1 EEST} - {4002040800 7200 0 EET} - {4015346400 10800 1 EEST} - {4033490400 7200 0 EET} - {4046796000 10800 1 EEST} - {4065544800 7200 0 EET} - {4078245600 10800 1 EEST} - {4096994400 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Amman) { + {-9223372036854775808 8624 0 LMT} + {-1230776624 7200 0 EET} + {108165600 10800 1 EEST} + {118270800 7200 0 EET} + {136591200 10800 1 EEST} + {149806800 7200 0 EET} + {168127200 10800 1 EEST} + {181342800 7200 0 EET} + {199749600 10800 1 EEST} + {215643600 7200 0 EET} + {231285600 10800 1 EEST} + {244501200 7200 0 EET} + {262735200 10800 1 EEST} + {275950800 7200 0 EET} + {481154400 10800 1 EEST} + {496962000 7200 0 EET} + {512949600 10800 1 EEST} + {528670800 7200 0 EET} + {544399200 10800 1 EEST} + {560120400 7200 0 EET} + {575848800 10800 1 EEST} + {592174800 7200 0 EET} + {610581600 10800 1 EEST} + {623624400 7200 0 EET} + {641167200 10800 1 EEST} + {655074000 7200 0 EET} + {671839200 10800 1 EEST} + {685918800 7200 0 EET} + {702856800 10800 1 EEST} + {717973200 7200 0 EET} + {733701600 10800 1 EEST} + {749422800 7200 0 EET} + {765151200 10800 1 EEST} + {779662800 7200 0 EET} + {797205600 10800 1 EEST} + {811116000 7200 0 EET} + {828655200 10800 1 EEST} + {843170400 7200 0 EET} + {860104800 10800 1 EEST} + {874620000 7200 0 EET} + {891554400 10800 1 EEST} + {906069600 7200 0 EET} + {930780000 10800 1 EEST} + {938124000 7200 0 EET} + {954367200 10800 1 EEST} + {970178400 7200 0 EET} + {985816800 10800 1 EEST} + {1001628000 7200 0 EET} + {1017352800 10800 1 EEST} + {1033077600 7200 0 EET} + {1048802400 10800 1 EEST} + {1066946400 7200 0 EET} + {1080252000 10800 1 EEST} + {1097791200 7200 0 EET} + {1111701600 10800 1 EEST} + {1128031200 7200 0 EET} + {1143756000 10800 1 EEST} + {1161900000 7200 0 EET} + {1175205600 10800 1 EEST} + {1193349600 7200 0 EET} + {1206655200 10800 1 EEST} + {1225404000 7200 0 EET} + {1238104800 10800 1 EEST} + {1256853600 7200 0 EET} + {1269554400 10800 1 EEST} + {1288303200 7200 0 EET} + {1301004000 10800 1 EEST} + {1319752800 7200 0 EET} + {1333058400 10800 1 EEST} + {1351202400 7200 0 EET} + {1364508000 10800 1 EEST} + {1382652000 7200 0 EET} + {1395957600 10800 1 EEST} + {1414706400 7200 0 EET} + {1427407200 10800 1 EEST} + {1446156000 7200 0 EET} + {1458856800 10800 1 EEST} + {1477605600 7200 0 EET} + {1490911200 10800 1 EEST} + {1509055200 7200 0 EET} + {1522360800 10800 1 EEST} + {1540504800 7200 0 EET} + {1553810400 10800 1 EEST} + {1571954400 7200 0 EET} + {1585260000 10800 1 EEST} + {1604008800 7200 0 EET} + {1616709600 10800 1 EEST} + {1635458400 7200 0 EET} + {1648159200 10800 1 EEST} + {1666908000 7200 0 EET} + {1680213600 10800 1 EEST} + {1698357600 7200 0 EET} + {1711663200 10800 1 EEST} + {1729807200 7200 0 EET} + {1743112800 10800 1 EEST} + {1761861600 7200 0 EET} + {1774562400 10800 1 EEST} + {1793311200 7200 0 EET} + {1806012000 10800 1 EEST} + {1824760800 7200 0 EET} + {1838066400 10800 1 EEST} + {1856210400 7200 0 EET} + {1869516000 10800 1 EEST} + {1887660000 7200 0 EET} + {1900965600 10800 1 EEST} + {1919109600 7200 0 EET} + {1932415200 10800 1 EEST} + {1951164000 7200 0 EET} + {1963864800 10800 1 EEST} + {1982613600 7200 0 EET} + {1995314400 10800 1 EEST} + {2014063200 7200 0 EET} + {2027368800 10800 1 EEST} + {2045512800 7200 0 EET} + {2058818400 10800 1 EEST} + {2076962400 7200 0 EET} + {2090268000 10800 1 EEST} + {2109016800 7200 0 EET} + {2121717600 10800 1 EEST} + {2140466400 7200 0 EET} + {2153167200 10800 1 EEST} + {2171916000 7200 0 EET} + {2184616800 10800 1 EEST} + {2203365600 7200 0 EET} + {2216671200 10800 1 EEST} + {2234815200 7200 0 EET} + {2248120800 10800 1 EEST} + {2266264800 7200 0 EET} + {2279570400 10800 1 EEST} + {2298319200 7200 0 EET} + {2311020000 10800 1 EEST} + {2329768800 7200 0 EET} + {2342469600 10800 1 EEST} + {2361218400 7200 0 EET} + {2374524000 10800 1 EEST} + {2392668000 7200 0 EET} + {2405973600 10800 1 EEST} + {2424117600 7200 0 EET} + {2437423200 10800 1 EEST} + {2455567200 7200 0 EET} + {2468872800 10800 1 EEST} + {2487621600 7200 0 EET} + {2500322400 10800 1 EEST} + {2519071200 7200 0 EET} + {2531772000 10800 1 EEST} + {2550520800 7200 0 EET} + {2563826400 10800 1 EEST} + {2581970400 7200 0 EET} + {2595276000 10800 1 EEST} + {2613420000 7200 0 EET} + {2626725600 10800 1 EEST} + {2645474400 7200 0 EET} + {2658175200 10800 1 EEST} + {2676924000 7200 0 EET} + {2689624800 10800 1 EEST} + {2708373600 7200 0 EET} + {2721679200 10800 1 EEST} + {2739823200 7200 0 EET} + {2753128800 10800 1 EEST} + {2771272800 7200 0 EET} + {2784578400 10800 1 EEST} + {2802722400 7200 0 EET} + {2816028000 10800 1 EEST} + {2834776800 7200 0 EET} + {2847477600 10800 1 EEST} + {2866226400 7200 0 EET} + {2878927200 10800 1 EEST} + {2897676000 7200 0 EET} + {2910981600 10800 1 EEST} + {2929125600 7200 0 EET} + {2942431200 10800 1 EEST} + {2960575200 7200 0 EET} + {2973880800 10800 1 EEST} + {2992629600 7200 0 EET} + {3005330400 10800 1 EEST} + {3024079200 7200 0 EET} + {3036780000 10800 1 EEST} + {3055528800 7200 0 EET} + {3068229600 10800 1 EEST} + {3086978400 7200 0 EET} + {3100284000 10800 1 EEST} + {3118428000 7200 0 EET} + {3131733600 10800 1 EEST} + {3149877600 7200 0 EET} + {3163183200 10800 1 EEST} + {3181932000 7200 0 EET} + {3194632800 10800 1 EEST} + {3213381600 7200 0 EET} + {3226082400 10800 1 EEST} + {3244831200 7200 0 EET} + {3258136800 10800 1 EEST} + {3276280800 7200 0 EET} + {3289586400 10800 1 EEST} + {3307730400 7200 0 EET} + {3321036000 10800 1 EEST} + {3339180000 7200 0 EET} + {3352485600 10800 1 EEST} + {3371234400 7200 0 EET} + {3383935200 10800 1 EEST} + {3402684000 7200 0 EET} + {3415384800 10800 1 EEST} + {3434133600 7200 0 EET} + {3447439200 10800 1 EEST} + {3465583200 7200 0 EET} + {3478888800 10800 1 EEST} + {3497032800 7200 0 EET} + {3510338400 10800 1 EEST} + {3529087200 7200 0 EET} + {3541788000 10800 1 EEST} + {3560536800 7200 0 EET} + {3573237600 10800 1 EEST} + {3591986400 7200 0 EET} + {3605292000 10800 1 EEST} + {3623436000 7200 0 EET} + {3636741600 10800 1 EEST} + {3654885600 7200 0 EET} + {3668191200 10800 1 EEST} + {3686335200 7200 0 EET} + {3699640800 10800 1 EEST} + {3718389600 7200 0 EET} + {3731090400 10800 1 EEST} + {3749839200 7200 0 EET} + {3762540000 10800 1 EEST} + {3781288800 7200 0 EET} + {3794594400 10800 1 EEST} + {3812738400 7200 0 EET} + {3826044000 10800 1 EEST} + {3844188000 7200 0 EET} + {3857493600 10800 1 EEST} + {3876242400 7200 0 EET} + {3888943200 10800 1 EEST} + {3907692000 7200 0 EET} + {3920392800 10800 1 EEST} + {3939141600 7200 0 EET} + {3951842400 10800 1 EEST} + {3970591200 7200 0 EET} + {3983896800 10800 1 EEST} + {4002040800 7200 0 EET} + {4015346400 10800 1 EEST} + {4033490400 7200 0 EET} + {4046796000 10800 1 EEST} + {4065544800 7200 0 EET} + {4078245600 10800 1 EEST} + {4096994400 7200 0 EET} +} diff --git a/library/tzdata/Asia/Anadyr b/library/tzdata/Asia/Anadyr index f2b09b6..c0e98a7 100644 --- a/library/tzdata/Asia/Anadyr +++ b/library/tzdata/Asia/Anadyr @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Anadyr) { - {-9223372036854775808 42596 0 LMT} - {-1441194596 43200 0 ANAT} - {-1247572800 46800 0 ANAMMTT} - {354884400 50400 1 ANAST} - {370692000 46800 0 ANAT} - {386420400 43200 0 ANAMMTT} - {386424000 46800 1 ANAST} - {402231600 43200 0 ANAT} - {417960000 46800 1 ANAST} - {433767600 43200 0 ANAT} - {449582400 46800 1 ANAST} - {465314400 43200 0 ANAT} - {481039200 46800 1 ANAST} - {496764000 43200 0 ANAT} - {512488800 46800 1 ANAST} - {528213600 43200 0 ANAT} - {543938400 46800 1 ANAST} - {559663200 43200 0 ANAT} - {575388000 46800 1 ANAST} - {591112800 43200 0 ANAT} - {606837600 46800 1 ANAST} - {622562400 43200 0 ANAT} - {638287200 46800 1 ANAST} - {654616800 43200 0 ANAT} - {670341600 39600 0 ANAMMTT} - {670345200 43200 1 ANAST} - {686070000 39600 0 ANAT} - {695746800 43200 0 ANAMMTT} - {701780400 46800 1 ANAST} - {717501600 43200 0 ANAT} - {733240800 46800 1 ANAST} - {748965600 43200 0 ANAT} - {764690400 46800 1 ANAST} - {780415200 43200 0 ANAT} - {796140000 46800 1 ANAST} - {811864800 43200 0 ANAT} - {828194400 46800 1 ANAST} - {846338400 43200 0 ANAT} - {859644000 46800 1 ANAST} - {877788000 43200 0 ANAT} - {891093600 46800 1 ANAST} - {909237600 43200 0 ANAT} - {922543200 46800 1 ANAST} - {941292000 43200 0 ANAT} - {953992800 46800 1 ANAST} - {972741600 43200 0 ANAT} - {985442400 46800 1 ANAST} - {1004191200 43200 0 ANAT} - {1017496800 46800 1 ANAST} - {1035640800 43200 0 ANAT} - {1048946400 46800 1 ANAST} - {1067090400 43200 0 ANAT} - {1080396000 46800 1 ANAST} - {1099144800 43200 0 ANAT} - {1111845600 46800 1 ANAST} - {1130594400 43200 0 ANAT} - {1143295200 46800 1 ANAST} - {1162044000 43200 0 ANAT} - {1174744800 46800 1 ANAST} - {1193493600 43200 0 ANAT} - {1206799200 46800 1 ANAST} - {1224943200 43200 0 ANAT} - {1238248800 46800 1 ANAST} - {1256392800 43200 0 ANAT} - {1269698400 46800 1 ANAST} - {1288447200 43200 0 ANAT} - {1301148000 46800 1 ANAST} - {1319896800 43200 0 ANAT} - {1332597600 46800 1 ANAST} - {1351346400 43200 0 ANAT} - {1364652000 46800 1 ANAST} - {1382796000 43200 0 ANAT} - {1396101600 46800 1 ANAST} - {1414245600 43200 0 ANAT} - {1427551200 46800 1 ANAST} - {1445695200 43200 0 ANAT} - {1459000800 46800 1 ANAST} - {1477749600 43200 0 ANAT} - {1490450400 46800 1 ANAST} - {1509199200 43200 0 ANAT} - {1521900000 46800 1 ANAST} - {1540648800 43200 0 ANAT} - {1553954400 46800 1 ANAST} - {1572098400 43200 0 ANAT} - {1585404000 46800 1 ANAST} - {1603548000 43200 0 ANAT} - {1616853600 46800 1 ANAST} - {1635602400 43200 0 ANAT} - {1648303200 46800 1 ANAST} - {1667052000 43200 0 ANAT} - {1679752800 46800 1 ANAST} - {1698501600 43200 0 ANAT} - {1711807200 46800 1 ANAST} - {1729951200 43200 0 ANAT} - {1743256800 46800 1 ANAST} - {1761400800 43200 0 ANAT} - {1774706400 46800 1 ANAST} - {1792850400 43200 0 ANAT} - {1806156000 46800 1 ANAST} - {1824904800 43200 0 ANAT} - {1837605600 46800 1 ANAST} - {1856354400 43200 0 ANAT} - {1869055200 46800 1 ANAST} - {1887804000 43200 0 ANAT} - {1901109600 46800 1 ANAST} - {1919253600 43200 0 ANAT} - {1932559200 46800 1 ANAST} - {1950703200 43200 0 ANAT} - {1964008800 46800 1 ANAST} - {1982757600 43200 0 ANAT} - {1995458400 46800 1 ANAST} - {2014207200 43200 0 ANAT} - {2026908000 46800 1 ANAST} - {2045656800 43200 0 ANAT} - {2058357600 46800 1 ANAST} - {2077106400 43200 0 ANAT} - {2090412000 46800 1 ANAST} - {2108556000 43200 0 ANAT} - {2121861600 46800 1 ANAST} - {2140005600 43200 0 ANAT} - {2153311200 46800 1 ANAST} - {2172060000 43200 0 ANAT} - {2184760800 46800 1 ANAST} - {2203509600 43200 0 ANAT} - {2216210400 46800 1 ANAST} - {2234959200 43200 0 ANAT} - {2248264800 46800 1 ANAST} - {2266408800 43200 0 ANAT} - {2279714400 46800 1 ANAST} - {2297858400 43200 0 ANAT} - {2311164000 46800 1 ANAST} - {2329308000 43200 0 ANAT} - {2342613600 46800 1 ANAST} - {2361362400 43200 0 ANAT} - {2374063200 46800 1 ANAST} - {2392812000 43200 0 ANAT} - {2405512800 46800 1 ANAST} - {2424261600 43200 0 ANAT} - {2437567200 46800 1 ANAST} - {2455711200 43200 0 ANAT} - {2469016800 46800 1 ANAST} - {2487160800 43200 0 ANAT} - {2500466400 46800 1 ANAST} - {2519215200 43200 0 ANAT} - {2531916000 46800 1 ANAST} - {2550664800 43200 0 ANAT} - {2563365600 46800 1 ANAST} - {2582114400 43200 0 ANAT} - {2595420000 46800 1 ANAST} - {2613564000 43200 0 ANAT} - {2626869600 46800 1 ANAST} - {2645013600 43200 0 ANAT} - {2658319200 46800 1 ANAST} - {2676463200 43200 0 ANAT} - {2689768800 46800 1 ANAST} - {2708517600 43200 0 ANAT} - {2721218400 46800 1 ANAST} - {2739967200 43200 0 ANAT} - {2752668000 46800 1 ANAST} - {2771416800 43200 0 ANAT} - {2784722400 46800 1 ANAST} - {2802866400 43200 0 ANAT} - {2816172000 46800 1 ANAST} - {2834316000 43200 0 ANAT} - {2847621600 46800 1 ANAST} - {2866370400 43200 0 ANAT} - {2879071200 46800 1 ANAST} - {2897820000 43200 0 ANAT} - {2910520800 46800 1 ANAST} - {2929269600 43200 0 ANAT} - {2941970400 46800 1 ANAST} - {2960719200 43200 0 ANAT} - {2974024800 46800 1 ANAST} - {2992168800 43200 0 ANAT} - {3005474400 46800 1 ANAST} - {3023618400 43200 0 ANAT} - {3036924000 46800 1 ANAST} - {3055672800 43200 0 ANAT} - {3068373600 46800 1 ANAST} - {3087122400 43200 0 ANAT} - {3099823200 46800 1 ANAST} - {3118572000 43200 0 ANAT} - {3131877600 46800 1 ANAST} - {3150021600 43200 0 ANAT} - {3163327200 46800 1 ANAST} - {3181471200 43200 0 ANAT} - {3194776800 46800 1 ANAST} - {3212920800 43200 0 ANAT} - {3226226400 46800 1 ANAST} - {3244975200 43200 0 ANAT} - {3257676000 46800 1 ANAST} - {3276424800 43200 0 ANAT} - {3289125600 46800 1 ANAST} - {3307874400 43200 0 ANAT} - {3321180000 46800 1 ANAST} - {3339324000 43200 0 ANAT} - {3352629600 46800 1 ANAST} - {3370773600 43200 0 ANAT} - {3384079200 46800 1 ANAST} - {3402828000 43200 0 ANAT} - {3415528800 46800 1 ANAST} - {3434277600 43200 0 ANAT} - {3446978400 46800 1 ANAST} - {3465727200 43200 0 ANAT} - {3479032800 46800 1 ANAST} - {3497176800 43200 0 ANAT} - {3510482400 46800 1 ANAST} - {3528626400 43200 0 ANAT} - {3541932000 46800 1 ANAST} - {3560076000 43200 0 ANAT} - {3573381600 46800 1 ANAST} - {3592130400 43200 0 ANAT} - {3604831200 46800 1 ANAST} - {3623580000 43200 0 ANAT} - {3636280800 46800 1 ANAST} - {3655029600 43200 0 ANAT} - {3668335200 46800 1 ANAST} - {3686479200 43200 0 ANAT} - {3699784800 46800 1 ANAST} - {3717928800 43200 0 ANAT} - {3731234400 46800 1 ANAST} - {3749983200 43200 0 ANAT} - {3762684000 46800 1 ANAST} - {3781432800 43200 0 ANAT} - {3794133600 46800 1 ANAST} - {3812882400 43200 0 ANAT} - {3825583200 46800 1 ANAST} - {3844332000 43200 0 ANAT} - {3857637600 46800 1 ANAST} - {3875781600 43200 0 ANAT} - {3889087200 46800 1 ANAST} - {3907231200 43200 0 ANAT} - {3920536800 46800 1 ANAST} - {3939285600 43200 0 ANAT} - {3951986400 46800 1 ANAST} - {3970735200 43200 0 ANAT} - {3983436000 46800 1 ANAST} - {4002184800 43200 0 ANAT} - {4015490400 46800 1 ANAST} - {4033634400 43200 0 ANAT} - {4046940000 46800 1 ANAST} - {4065084000 43200 0 ANAT} - {4078389600 46800 1 ANAST} - {4096533600 43200 0 ANAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Anadyr) { + {-9223372036854775808 42596 0 LMT} + {-1441194596 43200 0 ANAT} + {-1247572800 46800 0 ANAMMTT} + {354884400 50400 1 ANAST} + {370692000 46800 0 ANAT} + {386420400 43200 0 ANAMMTT} + {386424000 46800 1 ANAST} + {402231600 43200 0 ANAT} + {417960000 46800 1 ANAST} + {433767600 43200 0 ANAT} + {449582400 46800 1 ANAST} + {465314400 43200 0 ANAT} + {481039200 46800 1 ANAST} + {496764000 43200 0 ANAT} + {512488800 46800 1 ANAST} + {528213600 43200 0 ANAT} + {543938400 46800 1 ANAST} + {559663200 43200 0 ANAT} + {575388000 46800 1 ANAST} + {591112800 43200 0 ANAT} + {606837600 46800 1 ANAST} + {622562400 43200 0 ANAT} + {638287200 46800 1 ANAST} + {654616800 43200 0 ANAT} + {670341600 39600 0 ANAMMTT} + {670345200 43200 1 ANAST} + {686070000 39600 0 ANAT} + {695746800 43200 0 ANAMMTT} + {701780400 46800 1 ANAST} + {717501600 43200 0 ANAT} + {733240800 46800 1 ANAST} + {748965600 43200 0 ANAT} + {764690400 46800 1 ANAST} + {780415200 43200 0 ANAT} + {796140000 46800 1 ANAST} + {811864800 43200 0 ANAT} + {828194400 46800 1 ANAST} + {846338400 43200 0 ANAT} + {859644000 46800 1 ANAST} + {877788000 43200 0 ANAT} + {891093600 46800 1 ANAST} + {909237600 43200 0 ANAT} + {922543200 46800 1 ANAST} + {941292000 43200 0 ANAT} + {953992800 46800 1 ANAST} + {972741600 43200 0 ANAT} + {985442400 46800 1 ANAST} + {1004191200 43200 0 ANAT} + {1017496800 46800 1 ANAST} + {1035640800 43200 0 ANAT} + {1048946400 46800 1 ANAST} + {1067090400 43200 0 ANAT} + {1080396000 46800 1 ANAST} + {1099144800 43200 0 ANAT} + {1111845600 46800 1 ANAST} + {1130594400 43200 0 ANAT} + {1143295200 46800 1 ANAST} + {1162044000 43200 0 ANAT} + {1174744800 46800 1 ANAST} + {1193493600 43200 0 ANAT} + {1206799200 46800 1 ANAST} + {1224943200 43200 0 ANAT} + {1238248800 46800 1 ANAST} + {1256392800 43200 0 ANAT} + {1269698400 46800 1 ANAST} + {1288447200 43200 0 ANAT} + {1301148000 46800 1 ANAST} + {1319896800 43200 0 ANAT} + {1332597600 46800 1 ANAST} + {1351346400 43200 0 ANAT} + {1364652000 46800 1 ANAST} + {1382796000 43200 0 ANAT} + {1396101600 46800 1 ANAST} + {1414245600 43200 0 ANAT} + {1427551200 46800 1 ANAST} + {1445695200 43200 0 ANAT} + {1459000800 46800 1 ANAST} + {1477749600 43200 0 ANAT} + {1490450400 46800 1 ANAST} + {1509199200 43200 0 ANAT} + {1521900000 46800 1 ANAST} + {1540648800 43200 0 ANAT} + {1553954400 46800 1 ANAST} + {1572098400 43200 0 ANAT} + {1585404000 46800 1 ANAST} + {1603548000 43200 0 ANAT} + {1616853600 46800 1 ANAST} + {1635602400 43200 0 ANAT} + {1648303200 46800 1 ANAST} + {1667052000 43200 0 ANAT} + {1679752800 46800 1 ANAST} + {1698501600 43200 0 ANAT} + {1711807200 46800 1 ANAST} + {1729951200 43200 0 ANAT} + {1743256800 46800 1 ANAST} + {1761400800 43200 0 ANAT} + {1774706400 46800 1 ANAST} + {1792850400 43200 0 ANAT} + {1806156000 46800 1 ANAST} + {1824904800 43200 0 ANAT} + {1837605600 46800 1 ANAST} + {1856354400 43200 0 ANAT} + {1869055200 46800 1 ANAST} + {1887804000 43200 0 ANAT} + {1901109600 46800 1 ANAST} + {1919253600 43200 0 ANAT} + {1932559200 46800 1 ANAST} + {1950703200 43200 0 ANAT} + {1964008800 46800 1 ANAST} + {1982757600 43200 0 ANAT} + {1995458400 46800 1 ANAST} + {2014207200 43200 0 ANAT} + {2026908000 46800 1 ANAST} + {2045656800 43200 0 ANAT} + {2058357600 46800 1 ANAST} + {2077106400 43200 0 ANAT} + {2090412000 46800 1 ANAST} + {2108556000 43200 0 ANAT} + {2121861600 46800 1 ANAST} + {2140005600 43200 0 ANAT} + {2153311200 46800 1 ANAST} + {2172060000 43200 0 ANAT} + {2184760800 46800 1 ANAST} + {2203509600 43200 0 ANAT} + {2216210400 46800 1 ANAST} + {2234959200 43200 0 ANAT} + {2248264800 46800 1 ANAST} + {2266408800 43200 0 ANAT} + {2279714400 46800 1 ANAST} + {2297858400 43200 0 ANAT} + {2311164000 46800 1 ANAST} + {2329308000 43200 0 ANAT} + {2342613600 46800 1 ANAST} + {2361362400 43200 0 ANAT} + {2374063200 46800 1 ANAST} + {2392812000 43200 0 ANAT} + {2405512800 46800 1 ANAST} + {2424261600 43200 0 ANAT} + {2437567200 46800 1 ANAST} + {2455711200 43200 0 ANAT} + {2469016800 46800 1 ANAST} + {2487160800 43200 0 ANAT} + {2500466400 46800 1 ANAST} + {2519215200 43200 0 ANAT} + {2531916000 46800 1 ANAST} + {2550664800 43200 0 ANAT} + {2563365600 46800 1 ANAST} + {2582114400 43200 0 ANAT} + {2595420000 46800 1 ANAST} + {2613564000 43200 0 ANAT} + {2626869600 46800 1 ANAST} + {2645013600 43200 0 ANAT} + {2658319200 46800 1 ANAST} + {2676463200 43200 0 ANAT} + {2689768800 46800 1 ANAST} + {2708517600 43200 0 ANAT} + {2721218400 46800 1 ANAST} + {2739967200 43200 0 ANAT} + {2752668000 46800 1 ANAST} + {2771416800 43200 0 ANAT} + {2784722400 46800 1 ANAST} + {2802866400 43200 0 ANAT} + {2816172000 46800 1 ANAST} + {2834316000 43200 0 ANAT} + {2847621600 46800 1 ANAST} + {2866370400 43200 0 ANAT} + {2879071200 46800 1 ANAST} + {2897820000 43200 0 ANAT} + {2910520800 46800 1 ANAST} + {2929269600 43200 0 ANAT} + {2941970400 46800 1 ANAST} + {2960719200 43200 0 ANAT} + {2974024800 46800 1 ANAST} + {2992168800 43200 0 ANAT} + {3005474400 46800 1 ANAST} + {3023618400 43200 0 ANAT} + {3036924000 46800 1 ANAST} + {3055672800 43200 0 ANAT} + {3068373600 46800 1 ANAST} + {3087122400 43200 0 ANAT} + {3099823200 46800 1 ANAST} + {3118572000 43200 0 ANAT} + {3131877600 46800 1 ANAST} + {3150021600 43200 0 ANAT} + {3163327200 46800 1 ANAST} + {3181471200 43200 0 ANAT} + {3194776800 46800 1 ANAST} + {3212920800 43200 0 ANAT} + {3226226400 46800 1 ANAST} + {3244975200 43200 0 ANAT} + {3257676000 46800 1 ANAST} + {3276424800 43200 0 ANAT} + {3289125600 46800 1 ANAST} + {3307874400 43200 0 ANAT} + {3321180000 46800 1 ANAST} + {3339324000 43200 0 ANAT} + {3352629600 46800 1 ANAST} + {3370773600 43200 0 ANAT} + {3384079200 46800 1 ANAST} + {3402828000 43200 0 ANAT} + {3415528800 46800 1 ANAST} + {3434277600 43200 0 ANAT} + {3446978400 46800 1 ANAST} + {3465727200 43200 0 ANAT} + {3479032800 46800 1 ANAST} + {3497176800 43200 0 ANAT} + {3510482400 46800 1 ANAST} + {3528626400 43200 0 ANAT} + {3541932000 46800 1 ANAST} + {3560076000 43200 0 ANAT} + {3573381600 46800 1 ANAST} + {3592130400 43200 0 ANAT} + {3604831200 46800 1 ANAST} + {3623580000 43200 0 ANAT} + {3636280800 46800 1 ANAST} + {3655029600 43200 0 ANAT} + {3668335200 46800 1 ANAST} + {3686479200 43200 0 ANAT} + {3699784800 46800 1 ANAST} + {3717928800 43200 0 ANAT} + {3731234400 46800 1 ANAST} + {3749983200 43200 0 ANAT} + {3762684000 46800 1 ANAST} + {3781432800 43200 0 ANAT} + {3794133600 46800 1 ANAST} + {3812882400 43200 0 ANAT} + {3825583200 46800 1 ANAST} + {3844332000 43200 0 ANAT} + {3857637600 46800 1 ANAST} + {3875781600 43200 0 ANAT} + {3889087200 46800 1 ANAST} + {3907231200 43200 0 ANAT} + {3920536800 46800 1 ANAST} + {3939285600 43200 0 ANAT} + {3951986400 46800 1 ANAST} + {3970735200 43200 0 ANAT} + {3983436000 46800 1 ANAST} + {4002184800 43200 0 ANAT} + {4015490400 46800 1 ANAST} + {4033634400 43200 0 ANAT} + {4046940000 46800 1 ANAST} + {4065084000 43200 0 ANAT} + {4078389600 46800 1 ANAST} + {4096533600 43200 0 ANAT} +} diff --git a/library/tzdata/Asia/Aqtau b/library/tzdata/Asia/Aqtau index 9c73d23..11e89a2 100644 --- a/library/tzdata/Asia/Aqtau +++ b/library/tzdata/Asia/Aqtau @@ -1,58 +1,58 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Aqtau) { - {-9223372036854775808 12064 0 LMT} - {-1441164064 14400 0 FORT} - {-1247544000 18000 0 FORT} - {-220942800 18000 0 SHET} - {370724400 21600 0 SHET} - {386445600 18000 0 SHET} - {386449200 21600 1 SHEST} - {402256800 18000 0 SHET} - {417985200 21600 1 SHEST} - {433792800 18000 0 SHET} - {449607600 21600 1 SHEST} - {465339600 18000 0 SHET} - {481064400 21600 1 SHEST} - {496789200 18000 0 SHET} - {512514000 21600 1 SHEST} - {528238800 18000 0 SHET} - {543963600 21600 1 SHEST} - {559688400 18000 0 SHET} - {575413200 21600 1 SHEST} - {591138000 18000 0 SHET} - {606862800 21600 1 SHEST} - {622587600 18000 0 SHET} - {638312400 21600 1 SHEST} - {654642000 18000 0 SHET} - {662670000 18000 0 SHET} - {692823600 18000 0 AQTT} - {701805600 21600 1 AQTST} - {717526800 18000 0 AQTT} - {733266000 21600 1 AQTST} - {748990800 18000 0 AQTT} - {764715600 21600 1 AQTST} - {780440400 18000 0 AQTT} - {796165200 14400 0 AQTT} - {796168800 18000 1 AQTST} - {811893600 14400 0 AQTT} - {828223200 18000 1 AQTST} - {846367200 14400 0 AQTT} - {859672800 18000 1 AQTST} - {877816800 14400 0 AQTT} - {891122400 18000 1 AQTST} - {909266400 14400 0 AQTT} - {922572000 18000 1 AQTST} - {941320800 14400 0 AQTT} - {954021600 18000 1 AQTST} - {972770400 14400 0 AQTT} - {985471200 18000 1 AQTST} - {1004220000 14400 0 AQTT} - {1017525600 18000 1 AQTST} - {1035669600 14400 0 AQTT} - {1048975200 18000 1 AQTST} - {1067119200 14400 0 AQTT} - {1080424800 18000 1 AQTST} - {1099173600 14400 0 AQTT} - {1110830400 18000 0 AQTT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Aqtau) { + {-9223372036854775808 12064 0 LMT} + {-1441164064 14400 0 FORT} + {-1247544000 18000 0 FORT} + {-220942800 18000 0 SHET} + {370724400 21600 0 SHET} + {386445600 18000 0 SHET} + {386449200 21600 1 SHEST} + {402256800 18000 0 SHET} + {417985200 21600 1 SHEST} + {433792800 18000 0 SHET} + {449607600 21600 1 SHEST} + {465339600 18000 0 SHET} + {481064400 21600 1 SHEST} + {496789200 18000 0 SHET} + {512514000 21600 1 SHEST} + {528238800 18000 0 SHET} + {543963600 21600 1 SHEST} + {559688400 18000 0 SHET} + {575413200 21600 1 SHEST} + {591138000 18000 0 SHET} + {606862800 21600 1 SHEST} + {622587600 18000 0 SHET} + {638312400 21600 1 SHEST} + {654642000 18000 0 SHET} + {662670000 18000 0 SHET} + {692823600 18000 0 AQTT} + {701805600 21600 1 AQTST} + {717526800 18000 0 AQTT} + {733266000 21600 1 AQTST} + {748990800 18000 0 AQTT} + {764715600 21600 1 AQTST} + {780440400 18000 0 AQTT} + {796165200 14400 0 AQTT} + {796168800 18000 1 AQTST} + {811893600 14400 0 AQTT} + {828223200 18000 1 AQTST} + {846367200 14400 0 AQTT} + {859672800 18000 1 AQTST} + {877816800 14400 0 AQTT} + {891122400 18000 1 AQTST} + {909266400 14400 0 AQTT} + {922572000 18000 1 AQTST} + {941320800 14400 0 AQTT} + {954021600 18000 1 AQTST} + {972770400 14400 0 AQTT} + {985471200 18000 1 AQTST} + {1004220000 14400 0 AQTT} + {1017525600 18000 1 AQTST} + {1035669600 14400 0 AQTT} + {1048975200 18000 1 AQTST} + {1067119200 14400 0 AQTT} + {1080424800 18000 1 AQTST} + {1099173600 14400 0 AQTT} + {1110830400 18000 0 AQTT} +} diff --git a/library/tzdata/Asia/Aqtobe b/library/tzdata/Asia/Aqtobe index b0bcbe0..c857491 100644 --- a/library/tzdata/Asia/Aqtobe +++ b/library/tzdata/Asia/Aqtobe @@ -1,57 +1,57 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Aqtobe) { - {-9223372036854775808 13720 0 LMT} - {-1441165720 14400 0 AKTT} - {-1247544000 18000 0 AKTT} - {354913200 21600 1 AKTST} - {370720800 21600 0 AKTT} - {386445600 18000 0 AKTT} - {386449200 21600 1 AKTST} - {402256800 18000 0 AKTT} - {417985200 21600 1 AKTST} - {433792800 18000 0 AKTT} - {449607600 21600 1 AKTST} - {465339600 18000 0 AKTT} - {481064400 21600 1 AKTST} - {496789200 18000 0 AKTT} - {512514000 21600 1 AKTST} - {528238800 18000 0 AKTT} - {543963600 21600 1 AKTST} - {559688400 18000 0 AKTT} - {575413200 21600 1 AKTST} - {591138000 18000 0 AKTT} - {606862800 21600 1 AKTST} - {622587600 18000 0 AKTT} - {638312400 21600 1 AKTST} - {654642000 18000 0 AKTT} - {662670000 18000 0 AKTT} - {692823600 18000 0 AQTT} - {701805600 21600 1 AQTST} - {717526800 18000 0 AQTT} - {733266000 21600 1 AQTST} - {748990800 18000 0 AQTT} - {764715600 21600 1 AQTST} - {780440400 18000 0 AQTT} - {796165200 21600 1 AQTST} - {811890000 18000 0 AQTT} - {828219600 21600 1 AQTST} - {846363600 18000 0 AQTT} - {859669200 21600 1 AQTST} - {877813200 18000 0 AQTT} - {891118800 21600 1 AQTST} - {909262800 18000 0 AQTT} - {922568400 21600 1 AQTST} - {941317200 18000 0 AQTT} - {954018000 21600 1 AQTST} - {972766800 18000 0 AQTT} - {985467600 21600 1 AQTST} - {1004216400 18000 0 AQTT} - {1017522000 21600 1 AQTST} - {1035666000 18000 0 AQTT} - {1048971600 21600 1 AQTST} - {1067115600 18000 0 AQTT} - {1080421200 21600 1 AQTST} - {1099170000 18000 0 AQTT} - {1110826800 18000 0 AQTT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Aqtobe) { + {-9223372036854775808 13720 0 LMT} + {-1441165720 14400 0 AKTT} + {-1247544000 18000 0 AKTT} + {354913200 21600 1 AKTST} + {370720800 21600 0 AKTT} + {386445600 18000 0 AKTT} + {386449200 21600 1 AKTST} + {402256800 18000 0 AKTT} + {417985200 21600 1 AKTST} + {433792800 18000 0 AKTT} + {449607600 21600 1 AKTST} + {465339600 18000 0 AKTT} + {481064400 21600 1 AKTST} + {496789200 18000 0 AKTT} + {512514000 21600 1 AKTST} + {528238800 18000 0 AKTT} + {543963600 21600 1 AKTST} + {559688400 18000 0 AKTT} + {575413200 21600 1 AKTST} + {591138000 18000 0 AKTT} + {606862800 21600 1 AKTST} + {622587600 18000 0 AKTT} + {638312400 21600 1 AKTST} + {654642000 18000 0 AKTT} + {662670000 18000 0 AKTT} + {692823600 18000 0 AQTT} + {701805600 21600 1 AQTST} + {717526800 18000 0 AQTT} + {733266000 21600 1 AQTST} + {748990800 18000 0 AQTT} + {764715600 21600 1 AQTST} + {780440400 18000 0 AQTT} + {796165200 21600 1 AQTST} + {811890000 18000 0 AQTT} + {828219600 21600 1 AQTST} + {846363600 18000 0 AQTT} + {859669200 21600 1 AQTST} + {877813200 18000 0 AQTT} + {891118800 21600 1 AQTST} + {909262800 18000 0 AQTT} + {922568400 21600 1 AQTST} + {941317200 18000 0 AQTT} + {954018000 21600 1 AQTST} + {972766800 18000 0 AQTT} + {985467600 21600 1 AQTST} + {1004216400 18000 0 AQTT} + {1017522000 21600 1 AQTST} + {1035666000 18000 0 AQTT} + {1048971600 21600 1 AQTST} + {1067115600 18000 0 AQTT} + {1080421200 21600 1 AQTST} + {1099170000 18000 0 AQTT} + {1110826800 18000 0 AQTT} +} diff --git a/library/tzdata/Asia/Ashgabat b/library/tzdata/Asia/Ashgabat index 794bc9f..64bdb3a 100644 --- a/library/tzdata/Asia/Ashgabat +++ b/library/tzdata/Asia/Ashgabat @@ -1,31 +1,31 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Ashgabat) { - {-9223372036854775808 14012 0 LMT} - {-1441166012 14400 0 ASHT} - {-1247544000 18000 0 ASHT} - {354913200 21600 1 ASHST} - {370720800 18000 0 ASHT} - {386449200 21600 1 ASHST} - {402256800 18000 0 ASHT} - {417985200 21600 1 ASHST} - {433792800 18000 0 ASHT} - {449607600 21600 1 ASHST} - {465339600 18000 0 ASHT} - {481064400 21600 1 ASHST} - {496789200 18000 0 ASHT} - {512514000 21600 1 ASHST} - {528238800 18000 0 ASHT} - {543963600 21600 1 ASHST} - {559688400 18000 0 ASHT} - {575413200 21600 1 ASHST} - {591138000 18000 0 ASHT} - {606862800 21600 1 ASHST} - {622587600 18000 0 ASHT} - {638312400 21600 1 ASHST} - {654642000 18000 0 ASHT} - {670366800 14400 0 ASHT} - {670370400 18000 1 ASHST} - {686095200 14400 0 ASHT} - {695772000 18000 0 TMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Ashgabat) { + {-9223372036854775808 14012 0 LMT} + {-1441166012 14400 0 ASHT} + {-1247544000 18000 0 ASHT} + {354913200 21600 1 ASHST} + {370720800 18000 0 ASHT} + {386449200 21600 1 ASHST} + {402256800 18000 0 ASHT} + {417985200 21600 1 ASHST} + {433792800 18000 0 ASHT} + {449607600 21600 1 ASHST} + {465339600 18000 0 ASHT} + {481064400 21600 1 ASHST} + {496789200 18000 0 ASHT} + {512514000 21600 1 ASHST} + {528238800 18000 0 ASHT} + {543963600 21600 1 ASHST} + {559688400 18000 0 ASHT} + {575413200 21600 1 ASHST} + {591138000 18000 0 ASHT} + {606862800 21600 1 ASHST} + {622587600 18000 0 ASHT} + {638312400 21600 1 ASHST} + {654642000 18000 0 ASHT} + {670366800 14400 0 ASHT} + {670370400 18000 1 ASHST} + {686095200 14400 0 ASHT} + {695772000 18000 0 TMT} +} diff --git a/library/tzdata/Asia/Ashkhabad b/library/tzdata/Asia/Ashkhabad index ebc99ad..3000c94 100644 --- a/library/tzdata/Asia/Ashkhabad +++ b/library/tzdata/Asia/Ashkhabad @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Ashgabat)]} { - LoadTimeZoneFile Asia/Ashgabat -} -set TZData(:Asia/Ashkhabad) $TZData(:Asia/Ashgabat) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Ashgabat)]} { + LoadTimeZoneFile Asia/Ashgabat +} +set TZData(:Asia/Ashkhabad) $TZData(:Asia/Ashgabat) diff --git a/library/tzdata/Asia/Baghdad b/library/tzdata/Asia/Baghdad index e92d60c..c1058cb 100644 --- a/library/tzdata/Asia/Baghdad +++ b/library/tzdata/Asia/Baghdad @@ -1,59 +1,59 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Baghdad) { - {-9223372036854775808 10660 0 LMT} - {-2524532260 10656 0 BMT} - {-1641005856 10800 0 AST} - {389048400 14400 0 ADT} - {402264000 10800 0 AST} - {417906000 14400 1 ADT} - {433800000 10800 0 AST} - {449614800 14400 1 ADT} - {465422400 10800 0 AST} - {481150800 14400 1 ADT} - {496792800 10800 0 AST} - {512517600 14400 1 ADT} - {528242400 10800 0 AST} - {543967200 14400 1 ADT} - {559692000 10800 0 AST} - {575416800 14400 1 ADT} - {591141600 10800 0 AST} - {606866400 14400 1 ADT} - {622591200 10800 0 AST} - {638316000 14400 1 ADT} - {654645600 10800 0 AST} - {670464000 14400 1 ADT} - {686275200 10800 0 AST} - {702086400 14400 1 ADT} - {717897600 10800 0 AST} - {733622400 14400 1 ADT} - {749433600 10800 0 AST} - {765158400 14400 1 ADT} - {780969600 10800 0 AST} - {796694400 14400 1 ADT} - {812505600 10800 0 AST} - {828316800 14400 1 ADT} - {844128000 10800 0 AST} - {859852800 14400 1 ADT} - {875664000 10800 0 AST} - {891388800 14400 1 ADT} - {907200000 10800 0 AST} - {922924800 14400 1 ADT} - {938736000 10800 0 AST} - {954547200 14400 1 ADT} - {970358400 10800 0 AST} - {986083200 14400 1 ADT} - {1001894400 10800 0 AST} - {1017619200 14400 1 ADT} - {1033430400 10800 0 AST} - {1049155200 14400 1 ADT} - {1064966400 10800 0 AST} - {1080777600 14400 1 ADT} - {1096588800 10800 0 AST} - {1112313600 14400 1 ADT} - {1128124800 10800 0 AST} - {1143849600 14400 1 ADT} - {1159660800 10800 0 AST} - {1175385600 14400 1 ADT} - {1191196800 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Baghdad) { + {-9223372036854775808 10660 0 LMT} + {-2524532260 10656 0 BMT} + {-1641005856 10800 0 AST} + {389048400 14400 0 ADT} + {402264000 10800 0 AST} + {417906000 14400 1 ADT} + {433800000 10800 0 AST} + {449614800 14400 1 ADT} + {465422400 10800 0 AST} + {481150800 14400 1 ADT} + {496792800 10800 0 AST} + {512517600 14400 1 ADT} + {528242400 10800 0 AST} + {543967200 14400 1 ADT} + {559692000 10800 0 AST} + {575416800 14400 1 ADT} + {591141600 10800 0 AST} + {606866400 14400 1 ADT} + {622591200 10800 0 AST} + {638316000 14400 1 ADT} + {654645600 10800 0 AST} + {670464000 14400 1 ADT} + {686275200 10800 0 AST} + {702086400 14400 1 ADT} + {717897600 10800 0 AST} + {733622400 14400 1 ADT} + {749433600 10800 0 AST} + {765158400 14400 1 ADT} + {780969600 10800 0 AST} + {796694400 14400 1 ADT} + {812505600 10800 0 AST} + {828316800 14400 1 ADT} + {844128000 10800 0 AST} + {859852800 14400 1 ADT} + {875664000 10800 0 AST} + {891388800 14400 1 ADT} + {907200000 10800 0 AST} + {922924800 14400 1 ADT} + {938736000 10800 0 AST} + {954547200 14400 1 ADT} + {970358400 10800 0 AST} + {986083200 14400 1 ADT} + {1001894400 10800 0 AST} + {1017619200 14400 1 ADT} + {1033430400 10800 0 AST} + {1049155200 14400 1 ADT} + {1064966400 10800 0 AST} + {1080777600 14400 1 ADT} + {1096588800 10800 0 AST} + {1112313600 14400 1 ADT} + {1128124800 10800 0 AST} + {1143849600 14400 1 ADT} + {1159660800 10800 0 AST} + {1175385600 14400 1 ADT} + {1191196800 10800 0 AST} +} diff --git a/library/tzdata/Asia/Bahrain b/library/tzdata/Asia/Bahrain index 35fa8eb..d4b7d2c 100644 --- a/library/tzdata/Asia/Bahrain +++ b/library/tzdata/Asia/Bahrain @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Bahrain) { - {-9223372036854775808 12140 0 LMT} - {-1577935340 14400 0 GST} - {76190400 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Bahrain) { + {-9223372036854775808 12140 0 LMT} + {-1577935340 14400 0 GST} + {76190400 10800 0 AST} +} diff --git a/library/tzdata/Asia/Baku b/library/tzdata/Asia/Baku index b9704ea..e50071b 100644 --- a/library/tzdata/Asia/Baku +++ b/library/tzdata/Asia/Baku @@ -1,242 +1,242 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Baku) { - {-9223372036854775808 11964 0 LMT} - {-1441163964 10800 0 BAKT} - {-405140400 14400 0 BAKT} - {354916800 18000 1 BAKST} - {370724400 14400 0 BAKT} - {386452800 18000 1 BAKST} - {402260400 14400 0 BAKT} - {417988800 18000 1 BAKST} - {433796400 14400 0 BAKT} - {449611200 18000 1 BAKST} - {465343200 14400 0 BAKT} - {481068000 18000 1 BAKST} - {496792800 14400 0 BAKT} - {512517600 18000 1 BAKST} - {528242400 14400 0 BAKT} - {543967200 18000 1 BAKST} - {559692000 14400 0 BAKT} - {575416800 18000 1 BAKST} - {591141600 14400 0 BAKT} - {606866400 18000 1 BAKST} - {622591200 14400 0 BAKT} - {638316000 18000 1 BAKST} - {654645600 14400 0 BAKT} - {670370400 14400 1 BAKST} - {683496000 14400 0 AZST} - {686098800 10800 0 AZT} - {701812800 14400 1 AZST} - {717537600 14400 0 AZT} - {820440000 14400 0 AZT} - {828234000 18000 1 AZST} - {846378000 14400 0 AZT} - {852062400 14400 0 AZT} - {859680000 18000 1 AZST} - {877824000 14400 0 AZT} - {891129600 18000 1 AZST} - {909273600 14400 0 AZT} - {922579200 18000 1 AZST} - {941328000 14400 0 AZT} - {954028800 18000 1 AZST} - {972777600 14400 0 AZT} - {985478400 18000 1 AZST} - {1004227200 14400 0 AZT} - {1017532800 18000 1 AZST} - {1035676800 14400 0 AZT} - {1048982400 18000 1 AZST} - {1067126400 14400 0 AZT} - {1080432000 18000 1 AZST} - {1099180800 14400 0 AZT} - {1111881600 18000 1 AZST} - {1130630400 14400 0 AZT} - {1143331200 18000 1 AZST} - {1162080000 14400 0 AZT} - {1174780800 18000 1 AZST} - {1193529600 14400 0 AZT} - {1206835200 18000 1 AZST} - {1224979200 14400 0 AZT} - {1238284800 18000 1 AZST} - {1256428800 14400 0 AZT} - {1269734400 18000 1 AZST} - {1288483200 14400 0 AZT} - {1301184000 18000 1 AZST} - {1319932800 14400 0 AZT} - {1332633600 18000 1 AZST} - {1351382400 14400 0 AZT} - {1364688000 18000 1 AZST} - {1382832000 14400 0 AZT} - {1396137600 18000 1 AZST} - {1414281600 14400 0 AZT} - {1427587200 18000 1 AZST} - {1445731200 14400 0 AZT} - {1459036800 18000 1 AZST} - {1477785600 14400 0 AZT} - {1490486400 18000 1 AZST} - {1509235200 14400 0 AZT} - {1521936000 18000 1 AZST} - {1540684800 14400 0 AZT} - {1553990400 18000 1 AZST} - {1572134400 14400 0 AZT} - {1585440000 18000 1 AZST} - {1603584000 14400 0 AZT} - {1616889600 18000 1 AZST} - {1635638400 14400 0 AZT} - {1648339200 18000 1 AZST} - {1667088000 14400 0 AZT} - {1679788800 18000 1 AZST} - {1698537600 14400 0 AZT} - {1711843200 18000 1 AZST} - {1729987200 14400 0 AZT} - {1743292800 18000 1 AZST} - {1761436800 14400 0 AZT} - {1774742400 18000 1 AZST} - {1792886400 14400 0 AZT} - {1806192000 18000 1 AZST} - {1824940800 14400 0 AZT} - {1837641600 18000 1 AZST} - {1856390400 14400 0 AZT} - {1869091200 18000 1 AZST} - {1887840000 14400 0 AZT} - {1901145600 18000 1 AZST} - {1919289600 14400 0 AZT} - {1932595200 18000 1 AZST} - {1950739200 14400 0 AZT} - {1964044800 18000 1 AZST} - {1982793600 14400 0 AZT} - {1995494400 18000 1 AZST} - {2014243200 14400 0 AZT} - {2026944000 18000 1 AZST} - {2045692800 14400 0 AZT} - {2058393600 18000 1 AZST} - {2077142400 14400 0 AZT} - {2090448000 18000 1 AZST} - {2108592000 14400 0 AZT} - {2121897600 18000 1 AZST} - {2140041600 14400 0 AZT} - {2153347200 18000 1 AZST} - {2172096000 14400 0 AZT} - {2184796800 18000 1 AZST} - {2203545600 14400 0 AZT} - {2216246400 18000 1 AZST} - {2234995200 14400 0 AZT} - {2248300800 18000 1 AZST} - {2266444800 14400 0 AZT} - {2279750400 18000 1 AZST} - {2297894400 14400 0 AZT} - {2311200000 18000 1 AZST} - {2329344000 14400 0 AZT} - {2342649600 18000 1 AZST} - {2361398400 14400 0 AZT} - {2374099200 18000 1 AZST} - {2392848000 14400 0 AZT} - {2405548800 18000 1 AZST} - {2424297600 14400 0 AZT} - {2437603200 18000 1 AZST} - {2455747200 14400 0 AZT} - {2469052800 18000 1 AZST} - {2487196800 14400 0 AZT} - {2500502400 18000 1 AZST} - {2519251200 14400 0 AZT} - {2531952000 18000 1 AZST} - {2550700800 14400 0 AZT} - {2563401600 18000 1 AZST} - {2582150400 14400 0 AZT} - {2595456000 18000 1 AZST} - {2613600000 14400 0 AZT} - {2626905600 18000 1 AZST} - {2645049600 14400 0 AZT} - {2658355200 18000 1 AZST} - {2676499200 14400 0 AZT} - {2689804800 18000 1 AZST} - {2708553600 14400 0 AZT} - {2721254400 18000 1 AZST} - {2740003200 14400 0 AZT} - {2752704000 18000 1 AZST} - {2771452800 14400 0 AZT} - {2784758400 18000 1 AZST} - {2802902400 14400 0 AZT} - {2816208000 18000 1 AZST} - {2834352000 14400 0 AZT} - {2847657600 18000 1 AZST} - {2866406400 14400 0 AZT} - {2879107200 18000 1 AZST} - {2897856000 14400 0 AZT} - {2910556800 18000 1 AZST} - {2929305600 14400 0 AZT} - {2942006400 18000 1 AZST} - {2960755200 14400 0 AZT} - {2974060800 18000 1 AZST} - {2992204800 14400 0 AZT} - {3005510400 18000 1 AZST} - {3023654400 14400 0 AZT} - {3036960000 18000 1 AZST} - {3055708800 14400 0 AZT} - {3068409600 18000 1 AZST} - {3087158400 14400 0 AZT} - {3099859200 18000 1 AZST} - {3118608000 14400 0 AZT} - {3131913600 18000 1 AZST} - {3150057600 14400 0 AZT} - {3163363200 18000 1 AZST} - {3181507200 14400 0 AZT} - {3194812800 18000 1 AZST} - {3212956800 14400 0 AZT} - {3226262400 18000 1 AZST} - {3245011200 14400 0 AZT} - {3257712000 18000 1 AZST} - {3276460800 14400 0 AZT} - {3289161600 18000 1 AZST} - {3307910400 14400 0 AZT} - {3321216000 18000 1 AZST} - {3339360000 14400 0 AZT} - {3352665600 18000 1 AZST} - {3370809600 14400 0 AZT} - {3384115200 18000 1 AZST} - {3402864000 14400 0 AZT} - {3415564800 18000 1 AZST} - {3434313600 14400 0 AZT} - {3447014400 18000 1 AZST} - {3465763200 14400 0 AZT} - {3479068800 18000 1 AZST} - {3497212800 14400 0 AZT} - {3510518400 18000 1 AZST} - {3528662400 14400 0 AZT} - {3541968000 18000 1 AZST} - {3560112000 14400 0 AZT} - {3573417600 18000 1 AZST} - {3592166400 14400 0 AZT} - {3604867200 18000 1 AZST} - {3623616000 14400 0 AZT} - {3636316800 18000 1 AZST} - {3655065600 14400 0 AZT} - {3668371200 18000 1 AZST} - {3686515200 14400 0 AZT} - {3699820800 18000 1 AZST} - {3717964800 14400 0 AZT} - {3731270400 18000 1 AZST} - {3750019200 14400 0 AZT} - {3762720000 18000 1 AZST} - {3781468800 14400 0 AZT} - {3794169600 18000 1 AZST} - {3812918400 14400 0 AZT} - {3825619200 18000 1 AZST} - {3844368000 14400 0 AZT} - {3857673600 18000 1 AZST} - {3875817600 14400 0 AZT} - {3889123200 18000 1 AZST} - {3907267200 14400 0 AZT} - {3920572800 18000 1 AZST} - {3939321600 14400 0 AZT} - {3952022400 18000 1 AZST} - {3970771200 14400 0 AZT} - {3983472000 18000 1 AZST} - {4002220800 14400 0 AZT} - {4015526400 18000 1 AZST} - {4033670400 14400 0 AZT} - {4046976000 18000 1 AZST} - {4065120000 14400 0 AZT} - {4078425600 18000 1 AZST} - {4096569600 14400 0 AZT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Baku) { + {-9223372036854775808 11964 0 LMT} + {-1441163964 10800 0 BAKT} + {-405140400 14400 0 BAKT} + {354916800 18000 1 BAKST} + {370724400 14400 0 BAKT} + {386452800 18000 1 BAKST} + {402260400 14400 0 BAKT} + {417988800 18000 1 BAKST} + {433796400 14400 0 BAKT} + {449611200 18000 1 BAKST} + {465343200 14400 0 BAKT} + {481068000 18000 1 BAKST} + {496792800 14400 0 BAKT} + {512517600 18000 1 BAKST} + {528242400 14400 0 BAKT} + {543967200 18000 1 BAKST} + {559692000 14400 0 BAKT} + {575416800 18000 1 BAKST} + {591141600 14400 0 BAKT} + {606866400 18000 1 BAKST} + {622591200 14400 0 BAKT} + {638316000 18000 1 BAKST} + {654645600 14400 0 BAKT} + {670370400 14400 1 BAKST} + {683496000 14400 0 AZST} + {686098800 10800 0 AZT} + {701812800 14400 1 AZST} + {717537600 14400 0 AZT} + {820440000 14400 0 AZT} + {828234000 18000 1 AZST} + {846378000 14400 0 AZT} + {852062400 14400 0 AZT} + {859680000 18000 1 AZST} + {877824000 14400 0 AZT} + {891129600 18000 1 AZST} + {909273600 14400 0 AZT} + {922579200 18000 1 AZST} + {941328000 14400 0 AZT} + {954028800 18000 1 AZST} + {972777600 14400 0 AZT} + {985478400 18000 1 AZST} + {1004227200 14400 0 AZT} + {1017532800 18000 1 AZST} + {1035676800 14400 0 AZT} + {1048982400 18000 1 AZST} + {1067126400 14400 0 AZT} + {1080432000 18000 1 AZST} + {1099180800 14400 0 AZT} + {1111881600 18000 1 AZST} + {1130630400 14400 0 AZT} + {1143331200 18000 1 AZST} + {1162080000 14400 0 AZT} + {1174780800 18000 1 AZST} + {1193529600 14400 0 AZT} + {1206835200 18000 1 AZST} + {1224979200 14400 0 AZT} + {1238284800 18000 1 AZST} + {1256428800 14400 0 AZT} + {1269734400 18000 1 AZST} + {1288483200 14400 0 AZT} + {1301184000 18000 1 AZST} + {1319932800 14400 0 AZT} + {1332633600 18000 1 AZST} + {1351382400 14400 0 AZT} + {1364688000 18000 1 AZST} + {1382832000 14400 0 AZT} + {1396137600 18000 1 AZST} + {1414281600 14400 0 AZT} + {1427587200 18000 1 AZST} + {1445731200 14400 0 AZT} + {1459036800 18000 1 AZST} + {1477785600 14400 0 AZT} + {1490486400 18000 1 AZST} + {1509235200 14400 0 AZT} + {1521936000 18000 1 AZST} + {1540684800 14400 0 AZT} + {1553990400 18000 1 AZST} + {1572134400 14400 0 AZT} + {1585440000 18000 1 AZST} + {1603584000 14400 0 AZT} + {1616889600 18000 1 AZST} + {1635638400 14400 0 AZT} + {1648339200 18000 1 AZST} + {1667088000 14400 0 AZT} + {1679788800 18000 1 AZST} + {1698537600 14400 0 AZT} + {1711843200 18000 1 AZST} + {1729987200 14400 0 AZT} + {1743292800 18000 1 AZST} + {1761436800 14400 0 AZT} + {1774742400 18000 1 AZST} + {1792886400 14400 0 AZT} + {1806192000 18000 1 AZST} + {1824940800 14400 0 AZT} + {1837641600 18000 1 AZST} + {1856390400 14400 0 AZT} + {1869091200 18000 1 AZST} + {1887840000 14400 0 AZT} + {1901145600 18000 1 AZST} + {1919289600 14400 0 AZT} + {1932595200 18000 1 AZST} + {1950739200 14400 0 AZT} + {1964044800 18000 1 AZST} + {1982793600 14400 0 AZT} + {1995494400 18000 1 AZST} + {2014243200 14400 0 AZT} + {2026944000 18000 1 AZST} + {2045692800 14400 0 AZT} + {2058393600 18000 1 AZST} + {2077142400 14400 0 AZT} + {2090448000 18000 1 AZST} + {2108592000 14400 0 AZT} + {2121897600 18000 1 AZST} + {2140041600 14400 0 AZT} + {2153347200 18000 1 AZST} + {2172096000 14400 0 AZT} + {2184796800 18000 1 AZST} + {2203545600 14400 0 AZT} + {2216246400 18000 1 AZST} + {2234995200 14400 0 AZT} + {2248300800 18000 1 AZST} + {2266444800 14400 0 AZT} + {2279750400 18000 1 AZST} + {2297894400 14400 0 AZT} + {2311200000 18000 1 AZST} + {2329344000 14400 0 AZT} + {2342649600 18000 1 AZST} + {2361398400 14400 0 AZT} + {2374099200 18000 1 AZST} + {2392848000 14400 0 AZT} + {2405548800 18000 1 AZST} + {2424297600 14400 0 AZT} + {2437603200 18000 1 AZST} + {2455747200 14400 0 AZT} + {2469052800 18000 1 AZST} + {2487196800 14400 0 AZT} + {2500502400 18000 1 AZST} + {2519251200 14400 0 AZT} + {2531952000 18000 1 AZST} + {2550700800 14400 0 AZT} + {2563401600 18000 1 AZST} + {2582150400 14400 0 AZT} + {2595456000 18000 1 AZST} + {2613600000 14400 0 AZT} + {2626905600 18000 1 AZST} + {2645049600 14400 0 AZT} + {2658355200 18000 1 AZST} + {2676499200 14400 0 AZT} + {2689804800 18000 1 AZST} + {2708553600 14400 0 AZT} + {2721254400 18000 1 AZST} + {2740003200 14400 0 AZT} + {2752704000 18000 1 AZST} + {2771452800 14400 0 AZT} + {2784758400 18000 1 AZST} + {2802902400 14400 0 AZT} + {2816208000 18000 1 AZST} + {2834352000 14400 0 AZT} + {2847657600 18000 1 AZST} + {2866406400 14400 0 AZT} + {2879107200 18000 1 AZST} + {2897856000 14400 0 AZT} + {2910556800 18000 1 AZST} + {2929305600 14400 0 AZT} + {2942006400 18000 1 AZST} + {2960755200 14400 0 AZT} + {2974060800 18000 1 AZST} + {2992204800 14400 0 AZT} + {3005510400 18000 1 AZST} + {3023654400 14400 0 AZT} + {3036960000 18000 1 AZST} + {3055708800 14400 0 AZT} + {3068409600 18000 1 AZST} + {3087158400 14400 0 AZT} + {3099859200 18000 1 AZST} + {3118608000 14400 0 AZT} + {3131913600 18000 1 AZST} + {3150057600 14400 0 AZT} + {3163363200 18000 1 AZST} + {3181507200 14400 0 AZT} + {3194812800 18000 1 AZST} + {3212956800 14400 0 AZT} + {3226262400 18000 1 AZST} + {3245011200 14400 0 AZT} + {3257712000 18000 1 AZST} + {3276460800 14400 0 AZT} + {3289161600 18000 1 AZST} + {3307910400 14400 0 AZT} + {3321216000 18000 1 AZST} + {3339360000 14400 0 AZT} + {3352665600 18000 1 AZST} + {3370809600 14400 0 AZT} + {3384115200 18000 1 AZST} + {3402864000 14400 0 AZT} + {3415564800 18000 1 AZST} + {3434313600 14400 0 AZT} + {3447014400 18000 1 AZST} + {3465763200 14400 0 AZT} + {3479068800 18000 1 AZST} + {3497212800 14400 0 AZT} + {3510518400 18000 1 AZST} + {3528662400 14400 0 AZT} + {3541968000 18000 1 AZST} + {3560112000 14400 0 AZT} + {3573417600 18000 1 AZST} + {3592166400 14400 0 AZT} + {3604867200 18000 1 AZST} + {3623616000 14400 0 AZT} + {3636316800 18000 1 AZST} + {3655065600 14400 0 AZT} + {3668371200 18000 1 AZST} + {3686515200 14400 0 AZT} + {3699820800 18000 1 AZST} + {3717964800 14400 0 AZT} + {3731270400 18000 1 AZST} + {3750019200 14400 0 AZT} + {3762720000 18000 1 AZST} + {3781468800 14400 0 AZT} + {3794169600 18000 1 AZST} + {3812918400 14400 0 AZT} + {3825619200 18000 1 AZST} + {3844368000 14400 0 AZT} + {3857673600 18000 1 AZST} + {3875817600 14400 0 AZT} + {3889123200 18000 1 AZST} + {3907267200 14400 0 AZT} + {3920572800 18000 1 AZST} + {3939321600 14400 0 AZT} + {3952022400 18000 1 AZST} + {3970771200 14400 0 AZT} + {3983472000 18000 1 AZST} + {4002220800 14400 0 AZT} + {4015526400 18000 1 AZST} + {4033670400 14400 0 AZT} + {4046976000 18000 1 AZST} + {4065120000 14400 0 AZT} + {4078425600 18000 1 AZST} + {4096569600 14400 0 AZT} +} diff --git a/library/tzdata/Asia/Bangkok b/library/tzdata/Asia/Bangkok index 2c405cc..6df7680 100644 --- a/library/tzdata/Asia/Bangkok +++ b/library/tzdata/Asia/Bangkok @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Bangkok) { - {-9223372036854775808 24124 0 LMT} - {-2840164924 24124 0 BMT} - {-1570084924 25200 0 ICT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Bangkok) { + {-9223372036854775808 24124 0 LMT} + {-2840164924 24124 0 BMT} + {-1570084924 25200 0 ICT} +} diff --git a/library/tzdata/Asia/Beirut b/library/tzdata/Asia/Beirut index 8b70bb9..ac0a64e 100644 --- a/library/tzdata/Asia/Beirut +++ b/library/tzdata/Asia/Beirut @@ -1,270 +1,270 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Beirut) { - {-9223372036854775808 8520 0 LMT} - {-2840149320 7200 0 EET} - {-1570413600 10800 1 EEST} - {-1552186800 7200 0 EET} - {-1538359200 10800 1 EEST} - {-1522551600 7200 0 EET} - {-1507514400 10800 1 EEST} - {-1490583600 7200 0 EET} - {-1473645600 10800 1 EEST} - {-1460948400 7200 0 EET} - {-399866400 10800 1 EEST} - {-386650800 7200 0 EET} - {-368330400 10800 1 EEST} - {-355114800 7200 0 EET} - {-336794400 10800 1 EEST} - {-323578800 7200 0 EET} - {-305172000 10800 1 EEST} - {-291956400 7200 0 EET} - {-273636000 10800 1 EEST} - {-260420400 7200 0 EET} - {78012000 10800 1 EEST} - {86734800 7200 0 EET} - {105055200 10800 1 EEST} - {118270800 7200 0 EET} - {136591200 10800 1 EEST} - {149806800 7200 0 EET} - {168127200 10800 1 EEST} - {181342800 7200 0 EET} - {199749600 10800 1 EEST} - {212965200 7200 0 EET} - {231285600 10800 1 EEST} - {244501200 7200 0 EET} - {262735200 10800 1 EEST} - {275950800 7200 0 EET} - {452210400 10800 1 EEST} - {466722000 7200 0 EET} - {483746400 10800 1 EEST} - {498258000 7200 0 EET} - {515282400 10800 1 EEST} - {529794000 7200 0 EET} - {546818400 10800 1 EEST} - {561330000 7200 0 EET} - {581119200 10800 1 EEST} - {592952400 7200 0 EET} - {610754400 10800 1 EEST} - {624488400 7200 0 EET} - {641512800 10800 1 EEST} - {656024400 7200 0 EET} - {673048800 10800 1 EEST} - {687560400 7200 0 EET} - {704671200 10800 1 EEST} - {718146000 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {843944400 7200 0 EET} - {859672800 10800 1 EEST} - {875394000 7200 0 EET} - {891122400 10800 1 EEST} - {906843600 7200 0 EET} - {922572000 10800 1 EEST} - {941317200 7200 0 EET} - {954021600 10800 1 EEST} - {972766800 7200 0 EET} - {985471200 10800 1 EEST} - {1004216400 7200 0 EET} - {1017525600 10800 1 EEST} - {1035666000 7200 0 EET} - {1048975200 10800 1 EEST} - {1067115600 7200 0 EET} - {1080424800 10800 1 EEST} - {1099170000 7200 0 EET} - {1111874400 10800 1 EEST} - {1130619600 7200 0 EET} - {1143324000 10800 1 EEST} - {1162069200 7200 0 EET} - {1174773600 10800 1 EEST} - {1193518800 7200 0 EET} - {1206828000 10800 1 EEST} - {1224968400 7200 0 EET} - {1238277600 10800 1 EEST} - {1256418000 7200 0 EET} - {1269727200 10800 1 EEST} - {1288472400 7200 0 EET} - {1301176800 10800 1 EEST} - {1319922000 7200 0 EET} - {1332626400 10800 1 EEST} - {1351371600 7200 0 EET} - {1364680800 10800 1 EEST} - {1382821200 7200 0 EET} - {1396130400 10800 1 EEST} - {1414270800 7200 0 EET} - {1427580000 10800 1 EEST} - {1445720400 7200 0 EET} - {1459029600 10800 1 EEST} - {1477774800 7200 0 EET} - {1490479200 10800 1 EEST} - {1509224400 7200 0 EET} - {1521928800 10800 1 EEST} - {1540674000 7200 0 EET} - {1553983200 10800 1 EEST} - {1572123600 7200 0 EET} - {1585432800 10800 1 EEST} - {1603573200 7200 0 EET} - {1616882400 10800 1 EEST} - {1635627600 7200 0 EET} - {1648332000 10800 1 EEST} - {1667077200 7200 0 EET} - {1679781600 10800 1 EEST} - {1698526800 7200 0 EET} - {1711836000 10800 1 EEST} - {1729976400 7200 0 EET} - {1743285600 10800 1 EEST} - {1761426000 7200 0 EET} - {1774735200 10800 1 EEST} - {1792875600 7200 0 EET} - {1806184800 10800 1 EEST} - {1824930000 7200 0 EET} - {1837634400 10800 1 EEST} - {1856379600 7200 0 EET} - {1869084000 10800 1 EEST} - {1887829200 7200 0 EET} - {1901138400 10800 1 EEST} - {1919278800 7200 0 EET} - {1932588000 10800 1 EEST} - {1950728400 7200 0 EET} - {1964037600 10800 1 EEST} - {1982782800 7200 0 EET} - {1995487200 10800 1 EEST} - {2014232400 7200 0 EET} - {2026936800 10800 1 EEST} - {2045682000 7200 0 EET} - {2058386400 10800 1 EEST} - {2077131600 7200 0 EET} - {2090440800 10800 1 EEST} - {2108581200 7200 0 EET} - {2121890400 10800 1 EEST} - {2140030800 7200 0 EET} - {2153340000 10800 1 EEST} - {2172085200 7200 0 EET} - {2184789600 10800 1 EEST} - {2203534800 7200 0 EET} - {2216239200 10800 1 EEST} - {2234984400 7200 0 EET} - {2248293600 10800 1 EEST} - {2266434000 7200 0 EET} - {2279743200 10800 1 EEST} - {2297883600 7200 0 EET} - {2311192800 10800 1 EEST} - {2329333200 7200 0 EET} - {2342642400 10800 1 EEST} - {2361387600 7200 0 EET} - {2374092000 10800 1 EEST} - {2392837200 7200 0 EET} - {2405541600 10800 1 EEST} - {2424286800 7200 0 EET} - {2437596000 10800 1 EEST} - {2455736400 7200 0 EET} - {2469045600 10800 1 EEST} - {2487186000 7200 0 EET} - {2500495200 10800 1 EEST} - {2519240400 7200 0 EET} - {2531944800 10800 1 EEST} - {2550690000 7200 0 EET} - {2563394400 10800 1 EEST} - {2582139600 7200 0 EET} - {2595448800 10800 1 EEST} - {2613589200 7200 0 EET} - {2626898400 10800 1 EEST} - {2645038800 7200 0 EET} - {2658348000 10800 1 EEST} - {2676488400 7200 0 EET} - {2689797600 10800 1 EEST} - {2708542800 7200 0 EET} - {2721247200 10800 1 EEST} - {2739992400 7200 0 EET} - {2752696800 10800 1 EEST} - {2771442000 7200 0 EET} - {2784751200 10800 1 EEST} - {2802891600 7200 0 EET} - {2816200800 10800 1 EEST} - {2834341200 7200 0 EET} - {2847650400 10800 1 EEST} - {2866395600 7200 0 EET} - {2879100000 10800 1 EEST} - {2897845200 7200 0 EET} - {2910549600 10800 1 EEST} - {2929294800 7200 0 EET} - {2941999200 10800 1 EEST} - {2960744400 7200 0 EET} - {2974053600 10800 1 EEST} - {2992194000 7200 0 EET} - {3005503200 10800 1 EEST} - {3023643600 7200 0 EET} - {3036952800 10800 1 EEST} - {3055698000 7200 0 EET} - {3068402400 10800 1 EEST} - {3087147600 7200 0 EET} - {3099852000 10800 1 EEST} - {3118597200 7200 0 EET} - {3131906400 10800 1 EEST} - {3150046800 7200 0 EET} - {3163356000 10800 1 EEST} - {3181496400 7200 0 EET} - {3194805600 10800 1 EEST} - {3212946000 7200 0 EET} - {3226255200 10800 1 EEST} - {3245000400 7200 0 EET} - {3257704800 10800 1 EEST} - {3276450000 7200 0 EET} - {3289154400 10800 1 EEST} - {3307899600 7200 0 EET} - {3321208800 10800 1 EEST} - {3339349200 7200 0 EET} - {3352658400 10800 1 EEST} - {3370798800 7200 0 EET} - {3384108000 10800 1 EEST} - {3402853200 7200 0 EET} - {3415557600 10800 1 EEST} - {3434302800 7200 0 EET} - {3447007200 10800 1 EEST} - {3465752400 7200 0 EET} - {3479061600 10800 1 EEST} - {3497202000 7200 0 EET} - {3510511200 10800 1 EEST} - {3528651600 7200 0 EET} - {3541960800 10800 1 EEST} - {3560101200 7200 0 EET} - {3573410400 10800 1 EEST} - {3592155600 7200 0 EET} - {3604860000 10800 1 EEST} - {3623605200 7200 0 EET} - {3636309600 10800 1 EEST} - {3655054800 7200 0 EET} - {3668364000 10800 1 EEST} - {3686504400 7200 0 EET} - {3699813600 10800 1 EEST} - {3717954000 7200 0 EET} - {3731263200 10800 1 EEST} - {3750008400 7200 0 EET} - {3762712800 10800 1 EEST} - {3781458000 7200 0 EET} - {3794162400 10800 1 EEST} - {3812907600 7200 0 EET} - {3825612000 10800 1 EEST} - {3844357200 7200 0 EET} - {3857666400 10800 1 EEST} - {3875806800 7200 0 EET} - {3889116000 10800 1 EEST} - {3907256400 7200 0 EET} - {3920565600 10800 1 EEST} - {3939310800 7200 0 EET} - {3952015200 10800 1 EEST} - {3970760400 7200 0 EET} - {3983464800 10800 1 EEST} - {4002210000 7200 0 EET} - {4015519200 10800 1 EEST} - {4033659600 7200 0 EET} - {4046968800 10800 1 EEST} - {4065109200 7200 0 EET} - {4078418400 10800 1 EEST} - {4096558800 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Beirut) { + {-9223372036854775808 8520 0 LMT} + {-2840149320 7200 0 EET} + {-1570413600 10800 1 EEST} + {-1552186800 7200 0 EET} + {-1538359200 10800 1 EEST} + {-1522551600 7200 0 EET} + {-1507514400 10800 1 EEST} + {-1490583600 7200 0 EET} + {-1473645600 10800 1 EEST} + {-1460948400 7200 0 EET} + {-399866400 10800 1 EEST} + {-386650800 7200 0 EET} + {-368330400 10800 1 EEST} + {-355114800 7200 0 EET} + {-336794400 10800 1 EEST} + {-323578800 7200 0 EET} + {-305172000 10800 1 EEST} + {-291956400 7200 0 EET} + {-273636000 10800 1 EEST} + {-260420400 7200 0 EET} + {78012000 10800 1 EEST} + {86734800 7200 0 EET} + {105055200 10800 1 EEST} + {118270800 7200 0 EET} + {136591200 10800 1 EEST} + {149806800 7200 0 EET} + {168127200 10800 1 EEST} + {181342800 7200 0 EET} + {199749600 10800 1 EEST} + {212965200 7200 0 EET} + {231285600 10800 1 EEST} + {244501200 7200 0 EET} + {262735200 10800 1 EEST} + {275950800 7200 0 EET} + {452210400 10800 1 EEST} + {466722000 7200 0 EET} + {483746400 10800 1 EEST} + {498258000 7200 0 EET} + {515282400 10800 1 EEST} + {529794000 7200 0 EET} + {546818400 10800 1 EEST} + {561330000 7200 0 EET} + {581119200 10800 1 EEST} + {592952400 7200 0 EET} + {610754400 10800 1 EEST} + {624488400 7200 0 EET} + {641512800 10800 1 EEST} + {656024400 7200 0 EET} + {673048800 10800 1 EEST} + {687560400 7200 0 EET} + {704671200 10800 1 EEST} + {718146000 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {843944400 7200 0 EET} + {859672800 10800 1 EEST} + {875394000 7200 0 EET} + {891122400 10800 1 EEST} + {906843600 7200 0 EET} + {922572000 10800 1 EEST} + {941317200 7200 0 EET} + {954021600 10800 1 EEST} + {972766800 7200 0 EET} + {985471200 10800 1 EEST} + {1004216400 7200 0 EET} + {1017525600 10800 1 EEST} + {1035666000 7200 0 EET} + {1048975200 10800 1 EEST} + {1067115600 7200 0 EET} + {1080424800 10800 1 EEST} + {1099170000 7200 0 EET} + {1111874400 10800 1 EEST} + {1130619600 7200 0 EET} + {1143324000 10800 1 EEST} + {1162069200 7200 0 EET} + {1174773600 10800 1 EEST} + {1193518800 7200 0 EET} + {1206828000 10800 1 EEST} + {1224968400 7200 0 EET} + {1238277600 10800 1 EEST} + {1256418000 7200 0 EET} + {1269727200 10800 1 EEST} + {1288472400 7200 0 EET} + {1301176800 10800 1 EEST} + {1319922000 7200 0 EET} + {1332626400 10800 1 EEST} + {1351371600 7200 0 EET} + {1364680800 10800 1 EEST} + {1382821200 7200 0 EET} + {1396130400 10800 1 EEST} + {1414270800 7200 0 EET} + {1427580000 10800 1 EEST} + {1445720400 7200 0 EET} + {1459029600 10800 1 EEST} + {1477774800 7200 0 EET} + {1490479200 10800 1 EEST} + {1509224400 7200 0 EET} + {1521928800 10800 1 EEST} + {1540674000 7200 0 EET} + {1553983200 10800 1 EEST} + {1572123600 7200 0 EET} + {1585432800 10800 1 EEST} + {1603573200 7200 0 EET} + {1616882400 10800 1 EEST} + {1635627600 7200 0 EET} + {1648332000 10800 1 EEST} + {1667077200 7200 0 EET} + {1679781600 10800 1 EEST} + {1698526800 7200 0 EET} + {1711836000 10800 1 EEST} + {1729976400 7200 0 EET} + {1743285600 10800 1 EEST} + {1761426000 7200 0 EET} + {1774735200 10800 1 EEST} + {1792875600 7200 0 EET} + {1806184800 10800 1 EEST} + {1824930000 7200 0 EET} + {1837634400 10800 1 EEST} + {1856379600 7200 0 EET} + {1869084000 10800 1 EEST} + {1887829200 7200 0 EET} + {1901138400 10800 1 EEST} + {1919278800 7200 0 EET} + {1932588000 10800 1 EEST} + {1950728400 7200 0 EET} + {1964037600 10800 1 EEST} + {1982782800 7200 0 EET} + {1995487200 10800 1 EEST} + {2014232400 7200 0 EET} + {2026936800 10800 1 EEST} + {2045682000 7200 0 EET} + {2058386400 10800 1 EEST} + {2077131600 7200 0 EET} + {2090440800 10800 1 EEST} + {2108581200 7200 0 EET} + {2121890400 10800 1 EEST} + {2140030800 7200 0 EET} + {2153340000 10800 1 EEST} + {2172085200 7200 0 EET} + {2184789600 10800 1 EEST} + {2203534800 7200 0 EET} + {2216239200 10800 1 EEST} + {2234984400 7200 0 EET} + {2248293600 10800 1 EEST} + {2266434000 7200 0 EET} + {2279743200 10800 1 EEST} + {2297883600 7200 0 EET} + {2311192800 10800 1 EEST} + {2329333200 7200 0 EET} + {2342642400 10800 1 EEST} + {2361387600 7200 0 EET} + {2374092000 10800 1 EEST} + {2392837200 7200 0 EET} + {2405541600 10800 1 EEST} + {2424286800 7200 0 EET} + {2437596000 10800 1 EEST} + {2455736400 7200 0 EET} + {2469045600 10800 1 EEST} + {2487186000 7200 0 EET} + {2500495200 10800 1 EEST} + {2519240400 7200 0 EET} + {2531944800 10800 1 EEST} + {2550690000 7200 0 EET} + {2563394400 10800 1 EEST} + {2582139600 7200 0 EET} + {2595448800 10800 1 EEST} + {2613589200 7200 0 EET} + {2626898400 10800 1 EEST} + {2645038800 7200 0 EET} + {2658348000 10800 1 EEST} + {2676488400 7200 0 EET} + {2689797600 10800 1 EEST} + {2708542800 7200 0 EET} + {2721247200 10800 1 EEST} + {2739992400 7200 0 EET} + {2752696800 10800 1 EEST} + {2771442000 7200 0 EET} + {2784751200 10800 1 EEST} + {2802891600 7200 0 EET} + {2816200800 10800 1 EEST} + {2834341200 7200 0 EET} + {2847650400 10800 1 EEST} + {2866395600 7200 0 EET} + {2879100000 10800 1 EEST} + {2897845200 7200 0 EET} + {2910549600 10800 1 EEST} + {2929294800 7200 0 EET} + {2941999200 10800 1 EEST} + {2960744400 7200 0 EET} + {2974053600 10800 1 EEST} + {2992194000 7200 0 EET} + {3005503200 10800 1 EEST} + {3023643600 7200 0 EET} + {3036952800 10800 1 EEST} + {3055698000 7200 0 EET} + {3068402400 10800 1 EEST} + {3087147600 7200 0 EET} + {3099852000 10800 1 EEST} + {3118597200 7200 0 EET} + {3131906400 10800 1 EEST} + {3150046800 7200 0 EET} + {3163356000 10800 1 EEST} + {3181496400 7200 0 EET} + {3194805600 10800 1 EEST} + {3212946000 7200 0 EET} + {3226255200 10800 1 EEST} + {3245000400 7200 0 EET} + {3257704800 10800 1 EEST} + {3276450000 7200 0 EET} + {3289154400 10800 1 EEST} + {3307899600 7200 0 EET} + {3321208800 10800 1 EEST} + {3339349200 7200 0 EET} + {3352658400 10800 1 EEST} + {3370798800 7200 0 EET} + {3384108000 10800 1 EEST} + {3402853200 7200 0 EET} + {3415557600 10800 1 EEST} + {3434302800 7200 0 EET} + {3447007200 10800 1 EEST} + {3465752400 7200 0 EET} + {3479061600 10800 1 EEST} + {3497202000 7200 0 EET} + {3510511200 10800 1 EEST} + {3528651600 7200 0 EET} + {3541960800 10800 1 EEST} + {3560101200 7200 0 EET} + {3573410400 10800 1 EEST} + {3592155600 7200 0 EET} + {3604860000 10800 1 EEST} + {3623605200 7200 0 EET} + {3636309600 10800 1 EEST} + {3655054800 7200 0 EET} + {3668364000 10800 1 EEST} + {3686504400 7200 0 EET} + {3699813600 10800 1 EEST} + {3717954000 7200 0 EET} + {3731263200 10800 1 EEST} + {3750008400 7200 0 EET} + {3762712800 10800 1 EEST} + {3781458000 7200 0 EET} + {3794162400 10800 1 EEST} + {3812907600 7200 0 EET} + {3825612000 10800 1 EEST} + {3844357200 7200 0 EET} + {3857666400 10800 1 EEST} + {3875806800 7200 0 EET} + {3889116000 10800 1 EEST} + {3907256400 7200 0 EET} + {3920565600 10800 1 EEST} + {3939310800 7200 0 EET} + {3952015200 10800 1 EEST} + {3970760400 7200 0 EET} + {3983464800 10800 1 EEST} + {4002210000 7200 0 EET} + {4015519200 10800 1 EEST} + {4033659600 7200 0 EET} + {4046968800 10800 1 EEST} + {4065109200 7200 0 EET} + {4078418400 10800 1 EEST} + {4096558800 7200 0 EET} +} diff --git a/library/tzdata/Asia/Bishkek b/library/tzdata/Asia/Bishkek index 8f9f8b7..6ba3896 100644 --- a/library/tzdata/Asia/Bishkek +++ b/library/tzdata/Asia/Bishkek @@ -1,57 +1,57 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Bishkek) { - {-9223372036854775808 17904 0 LMT} - {-1441169904 18000 0 FRUT} - {-1247547600 21600 0 FRUT} - {354909600 25200 1 FRUST} - {370717200 21600 0 FRUT} - {386445600 25200 1 FRUST} - {402253200 21600 0 FRUT} - {417981600 25200 1 FRUST} - {433789200 21600 0 FRUT} - {449604000 25200 1 FRUST} - {465336000 21600 0 FRUT} - {481060800 25200 1 FRUST} - {496785600 21600 0 FRUT} - {512510400 25200 1 FRUST} - {528235200 21600 0 FRUT} - {543960000 25200 1 FRUST} - {559684800 21600 0 FRUT} - {575409600 25200 1 FRUST} - {591134400 21600 0 FRUT} - {606859200 25200 1 FRUST} - {622584000 21600 0 FRUT} - {638308800 25200 1 FRUST} - {654638400 21600 0 FRUT} - {670363200 21600 1 FRUST} - {683582400 21600 0 KGT} - {703018800 21600 1 KGST} - {717530400 18000 0 KGT} - {734468400 21600 1 KGST} - {748980000 18000 0 KGT} - {765918000 21600 1 KGST} - {780429600 18000 0 KGT} - {797367600 21600 1 KGST} - {811879200 18000 0 KGT} - {828817200 21600 1 KGST} - {843933600 18000 0 KGT} - {859671000 21600 1 KGST} - {877811400 18000 0 KGT} - {891120600 21600 1 KGST} - {909261000 18000 0 KGT} - {922570200 21600 1 KGST} - {941315400 18000 0 KGT} - {954019800 21600 1 KGST} - {972765000 18000 0 KGT} - {985469400 21600 1 KGST} - {1004214600 18000 0 KGT} - {1017523800 21600 1 KGST} - {1035664200 18000 0 KGT} - {1048973400 21600 1 KGST} - {1067113800 18000 0 KGT} - {1080423000 21600 1 KGST} - {1099168200 18000 0 KGT} - {1111872600 21600 1 KGST} - {1123783200 21600 0 KGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Bishkek) { + {-9223372036854775808 17904 0 LMT} + {-1441169904 18000 0 FRUT} + {-1247547600 21600 0 FRUT} + {354909600 25200 1 FRUST} + {370717200 21600 0 FRUT} + {386445600 25200 1 FRUST} + {402253200 21600 0 FRUT} + {417981600 25200 1 FRUST} + {433789200 21600 0 FRUT} + {449604000 25200 1 FRUST} + {465336000 21600 0 FRUT} + {481060800 25200 1 FRUST} + {496785600 21600 0 FRUT} + {512510400 25200 1 FRUST} + {528235200 21600 0 FRUT} + {543960000 25200 1 FRUST} + {559684800 21600 0 FRUT} + {575409600 25200 1 FRUST} + {591134400 21600 0 FRUT} + {606859200 25200 1 FRUST} + {622584000 21600 0 FRUT} + {638308800 25200 1 FRUST} + {654638400 21600 0 FRUT} + {670363200 21600 1 FRUST} + {683582400 21600 0 KGT} + {703018800 21600 1 KGST} + {717530400 18000 0 KGT} + {734468400 21600 1 KGST} + {748980000 18000 0 KGT} + {765918000 21600 1 KGST} + {780429600 18000 0 KGT} + {797367600 21600 1 KGST} + {811879200 18000 0 KGT} + {828817200 21600 1 KGST} + {843933600 18000 0 KGT} + {859671000 21600 1 KGST} + {877811400 18000 0 KGT} + {891120600 21600 1 KGST} + {909261000 18000 0 KGT} + {922570200 21600 1 KGST} + {941315400 18000 0 KGT} + {954019800 21600 1 KGST} + {972765000 18000 0 KGT} + {985469400 21600 1 KGST} + {1004214600 18000 0 KGT} + {1017523800 21600 1 KGST} + {1035664200 18000 0 KGT} + {1048973400 21600 1 KGST} + {1067113800 18000 0 KGT} + {1080423000 21600 1 KGST} + {1099168200 18000 0 KGT} + {1111872600 21600 1 KGST} + {1123783200 21600 0 KGT} +} diff --git a/library/tzdata/Asia/Brunei b/library/tzdata/Asia/Brunei index 88fff9b..63d380b 100644 --- a/library/tzdata/Asia/Brunei +++ b/library/tzdata/Asia/Brunei @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Brunei) { - {-9223372036854775808 27580 0 LMT} - {-1383464380 27000 0 BNT} - {-1167636600 28800 0 BNT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Brunei) { + {-9223372036854775808 27580 0 LMT} + {-1383464380 27000 0 BNT} + {-1167636600 28800 0 BNT} +} diff --git a/library/tzdata/Asia/Calcutta b/library/tzdata/Asia/Calcutta index 4ab0ab7..7243ef8 100644 --- a/library/tzdata/Asia/Calcutta +++ b/library/tzdata/Asia/Calcutta @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Kolkata)]} { - LoadTimeZoneFile Asia/Kolkata -} -set TZData(:Asia/Calcutta) $TZData(:Asia/Kolkata) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Kolkata)]} { + LoadTimeZoneFile Asia/Kolkata +} +set TZData(:Asia/Calcutta) $TZData(:Asia/Kolkata) diff --git a/library/tzdata/Asia/Choibalsan b/library/tzdata/Asia/Choibalsan index 1725ed6..3d42617 100644 --- a/library/tzdata/Asia/Choibalsan +++ b/library/tzdata/Asia/Choibalsan @@ -1,51 +1,51 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Choibalsan) { - {-9223372036854775808 27480 0 LMT} - {-2032933080 25200 0 ULAT} - {252435600 28800 0 ULAT} - {417974400 36000 0 CHOST} - {433778400 32400 0 CHOT} - {449593200 36000 1 CHOST} - {465314400 32400 0 CHOT} - {481042800 36000 1 CHOST} - {496764000 32400 0 CHOT} - {512492400 36000 1 CHOST} - {528213600 32400 0 CHOT} - {543942000 36000 1 CHOST} - {559663200 32400 0 CHOT} - {575391600 36000 1 CHOST} - {591112800 32400 0 CHOT} - {606841200 36000 1 CHOST} - {622562400 32400 0 CHOT} - {638290800 36000 1 CHOST} - {654616800 32400 0 CHOT} - {670345200 36000 1 CHOST} - {686066400 32400 0 CHOT} - {701794800 36000 1 CHOST} - {717516000 32400 0 CHOT} - {733244400 36000 1 CHOST} - {748965600 32400 0 CHOT} - {764694000 36000 1 CHOST} - {780415200 32400 0 CHOT} - {796143600 36000 1 CHOST} - {811864800 32400 0 CHOT} - {828198000 36000 1 CHOST} - {843919200 32400 0 CHOT} - {859647600 36000 1 CHOST} - {875368800 32400 0 CHOT} - {891097200 36000 1 CHOST} - {906818400 32400 0 CHOT} - {988390800 36000 1 CHOST} - {1001692800 32400 0 CHOT} - {1017421200 36000 1 CHOST} - {1033142400 32400 0 CHOT} - {1048870800 36000 1 CHOST} - {1064592000 32400 0 CHOT} - {1080320400 36000 1 CHOST} - {1096041600 32400 0 CHOT} - {1111770000 36000 1 CHOST} - {1127491200 32400 0 CHOT} - {1143219600 36000 1 CHOST} - {1159545600 32400 0 CHOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Choibalsan) { + {-9223372036854775808 27480 0 LMT} + {-2032933080 25200 0 ULAT} + {252435600 28800 0 ULAT} + {417974400 36000 0 CHOST} + {433778400 32400 0 CHOT} + {449593200 36000 1 CHOST} + {465314400 32400 0 CHOT} + {481042800 36000 1 CHOST} + {496764000 32400 0 CHOT} + {512492400 36000 1 CHOST} + {528213600 32400 0 CHOT} + {543942000 36000 1 CHOST} + {559663200 32400 0 CHOT} + {575391600 36000 1 CHOST} + {591112800 32400 0 CHOT} + {606841200 36000 1 CHOST} + {622562400 32400 0 CHOT} + {638290800 36000 1 CHOST} + {654616800 32400 0 CHOT} + {670345200 36000 1 CHOST} + {686066400 32400 0 CHOT} + {701794800 36000 1 CHOST} + {717516000 32400 0 CHOT} + {733244400 36000 1 CHOST} + {748965600 32400 0 CHOT} + {764694000 36000 1 CHOST} + {780415200 32400 0 CHOT} + {796143600 36000 1 CHOST} + {811864800 32400 0 CHOT} + {828198000 36000 1 CHOST} + {843919200 32400 0 CHOT} + {859647600 36000 1 CHOST} + {875368800 32400 0 CHOT} + {891097200 36000 1 CHOST} + {906818400 32400 0 CHOT} + {988390800 36000 1 CHOST} + {1001692800 32400 0 CHOT} + {1017421200 36000 1 CHOST} + {1033142400 32400 0 CHOT} + {1048870800 36000 1 CHOST} + {1064592000 32400 0 CHOT} + {1080320400 36000 1 CHOST} + {1096041600 32400 0 CHOT} + {1111770000 36000 1 CHOST} + {1127491200 32400 0 CHOT} + {1143219600 36000 1 CHOST} + {1159545600 32400 0 CHOT} +} diff --git a/library/tzdata/Asia/Chongqing b/library/tzdata/Asia/Chongqing index bf373df..eff3536 100644 --- a/library/tzdata/Asia/Chongqing +++ b/library/tzdata/Asia/Chongqing @@ -1,19 +1,19 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Chongqing) { - {-9223372036854775808 25580 0 LMT} - {-1325487980 25200 0 LONT} - {325962000 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Chongqing) { + {-9223372036854775808 25580 0 LMT} + {-1325487980 25200 0 LONT} + {325962000 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Chungking b/library/tzdata/Asia/Chungking index 11a68e0..f10d8a1 100644 --- a/library/tzdata/Asia/Chungking +++ b/library/tzdata/Asia/Chungking @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Chongqing)]} { - LoadTimeZoneFile Asia/Chongqing -} -set TZData(:Asia/Chungking) $TZData(:Asia/Chongqing) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Chongqing)]} { + LoadTimeZoneFile Asia/Chongqing +} +set TZData(:Asia/Chungking) $TZData(:Asia/Chongqing) diff --git a/library/tzdata/Asia/Colombo b/library/tzdata/Asia/Colombo index 6f188cd..ca7bffc 100644 --- a/library/tzdata/Asia/Colombo +++ b/library/tzdata/Asia/Colombo @@ -1,13 +1,13 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Colombo) { - {-9223372036854775808 19164 0 LMT} - {-2840159964 19172 0 MMT} - {-2019705572 19800 0 IST} - {-883287000 21600 1 IHST} - {-862639200 23400 1 IST} - {-764051400 19800 0 IST} - {832962600 23400 0 LKT} - {846266400 21600 0 LKT} - {1145039400 19800 0 IST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Colombo) { + {-9223372036854775808 19164 0 LMT} + {-2840159964 19172 0 MMT} + {-2019705572 19800 0 IST} + {-883287000 21600 1 IHST} + {-862639200 23400 1 IST} + {-764051400 19800 0 IST} + {832962600 23400 0 LKT} + {846266400 21600 0 LKT} + {1145039400 19800 0 IST} +} diff --git a/library/tzdata/Asia/Dacca b/library/tzdata/Asia/Dacca index 40f6386..b91d7fa 100644 --- a/library/tzdata/Asia/Dacca +++ b/library/tzdata/Asia/Dacca @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Dhaka)]} { - LoadTimeZoneFile Asia/Dhaka -} -set TZData(:Asia/Dacca) $TZData(:Asia/Dhaka) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Dhaka)]} { + LoadTimeZoneFile Asia/Dhaka +} +set TZData(:Asia/Dacca) $TZData(:Asia/Dhaka) diff --git a/library/tzdata/Asia/Damascus b/library/tzdata/Asia/Damascus index 61b7ee7..d57aeea 100644 --- a/library/tzdata/Asia/Damascus +++ b/library/tzdata/Asia/Damascus @@ -1,280 +1,280 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Damascus) { - {-9223372036854775808 8712 0 LMT} - {-1577931912 7200 0 EET} - {-1568592000 10800 1 EEST} - {-1554080400 7200 0 EET} - {-1537142400 10800 1 EEST} - {-1522630800 7200 0 EET} - {-1505692800 10800 1 EEST} - {-1491181200 7200 0 EET} - {-1474243200 10800 1 EEST} - {-1459126800 7200 0 EET} - {-242265600 10800 1 EEST} - {-228877200 7200 0 EET} - {-210556800 10800 1 EEST} - {-197427600 7200 0 EET} - {-178934400 10800 1 EEST} - {-165718800 7200 0 EET} - {-147398400 10800 1 EEST} - {-134269200 7200 0 EET} - {-116467200 10800 1 EEST} - {-102646800 7200 0 EET} - {-84326400 10800 1 EEST} - {-71110800 7200 0 EET} - {-52704000 10800 1 EEST} - {-39488400 7200 0 EET} - {-21168000 10800 1 EEST} - {-7952400 7200 0 EET} - {10368000 10800 1 EEST} - {23583600 7200 0 EET} - {41904000 10800 1 EEST} - {55119600 7200 0 EET} - {73526400 10800 1 EEST} - {86742000 7200 0 EET} - {105062400 10800 1 EEST} - {118278000 7200 0 EET} - {136598400 10800 1 EEST} - {149814000 7200 0 EET} - {168134400 10800 1 EEST} - {181350000 7200 0 EET} - {199756800 10800 1 EEST} - {212972400 7200 0 EET} - {231292800 10800 1 EEST} - {241916400 7200 0 EET} - {262828800 10800 1 EEST} - {273452400 7200 0 EET} - {418694400 10800 1 EEST} - {433810800 7200 0 EET} - {450316800 10800 1 EEST} - {465433200 7200 0 EET} - {508896000 10800 1 EEST} - {529196400 7200 0 EET} - {541555200 10800 1 EEST} - {562633200 7200 0 EET} - {574387200 10800 1 EEST} - {594255600 7200 0 EET} - {607305600 10800 1 EEST} - {623199600 7200 0 EET} - {638928000 10800 1 EEST} - {654649200 7200 0 EET} - {670456800 10800 1 EEST} - {686264400 7200 0 EET} - {702684000 10800 1 EEST} - {717886800 7200 0 EET} - {733096800 10800 1 EEST} - {748904400 7200 0 EET} - {765151200 10800 1 EEST} - {780958800 7200 0 EET} - {796687200 10800 1 EEST} - {812494800 7200 0 EET} - {828309600 10800 1 EEST} - {844117200 7200 0 EET} - {859759200 10800 1 EEST} - {875653200 7200 0 EET} - {891208800 10800 1 EEST} - {907189200 7200 0 EET} - {922917600 10800 1 EEST} - {938725200 7200 0 EET} - {954540000 10800 1 EEST} - {970347600 7200 0 EET} - {986076000 10800 1 EEST} - {1001883600 7200 0 EET} - {1017612000 10800 1 EEST} - {1033419600 7200 0 EET} - {1049148000 10800 1 EEST} - {1064955600 7200 0 EET} - {1080770400 10800 1 EEST} - {1096578000 7200 0 EET} - {1112306400 10800 1 EEST} - {1128114000 7200 0 EET} - {1143842400 10800 1 EEST} - {1158872400 7200 0 EET} - {1175205600 10800 1 EEST} - {1193950800 7200 0 EET} - {1207260000 10800 1 EEST} - {1225486800 7200 0 EET} - {1238104800 10800 1 EEST} - {1257022800 7200 0 EET} - {1269554400 10800 1 EEST} - {1288558800 7200 0 EET} - {1301004000 10800 1 EEST} - {1320094800 7200 0 EET} - {1333058400 10800 1 EEST} - {1351717200 7200 0 EET} - {1364508000 10800 1 EEST} - {1383253200 7200 0 EET} - {1395957600 10800 1 EEST} - {1414789200 7200 0 EET} - {1427407200 10800 1 EEST} - {1446325200 7200 0 EET} - {1458856800 10800 1 EEST} - {1477947600 7200 0 EET} - {1490911200 10800 1 EEST} - {1509483600 7200 0 EET} - {1522360800 10800 1 EEST} - {1541019600 7200 0 EET} - {1553810400 10800 1 EEST} - {1572555600 7200 0 EET} - {1585260000 10800 1 EEST} - {1604178000 7200 0 EET} - {1616709600 10800 1 EEST} - {1635714000 7200 0 EET} - {1648159200 10800 1 EEST} - {1667250000 7200 0 EET} - {1680213600 10800 1 EEST} - {1698786000 7200 0 EET} - {1711663200 10800 1 EEST} - {1730408400 7200 0 EET} - {1743112800 10800 1 EEST} - {1761944400 7200 0 EET} - {1774562400 10800 1 EEST} - {1793480400 7200 0 EET} - {1806012000 10800 1 EEST} - {1825016400 7200 0 EET} - {1838066400 10800 1 EEST} - {1856638800 7200 0 EET} - {1869516000 10800 1 EEST} - {1888174800 7200 0 EET} - {1900965600 10800 1 EEST} - {1919710800 7200 0 EET} - {1932415200 10800 1 EEST} - {1951246800 7200 0 EET} - {1963864800 10800 1 EEST} - {1982869200 7200 0 EET} - {1995314400 10800 1 EEST} - {2014405200 7200 0 EET} - {2027368800 10800 1 EEST} - {2045941200 7200 0 EET} - {2058818400 10800 1 EEST} - {2077477200 7200 0 EET} - {2090268000 10800 1 EEST} - {2109099600 7200 0 EET} - {2121717600 10800 1 EEST} - {2140635600 7200 0 EET} - {2153167200 10800 1 EEST} - {2172171600 7200 0 EET} - {2184616800 10800 1 EEST} - {2203707600 7200 0 EET} - {2216671200 10800 1 EEST} - {2235330000 7200 0 EET} - {2248120800 10800 1 EEST} - {2266866000 7200 0 EET} - {2279570400 10800 1 EEST} - {2298402000 7200 0 EET} - {2311020000 10800 1 EEST} - {2329938000 7200 0 EET} - {2342469600 10800 1 EEST} - {2361560400 7200 0 EET} - {2374524000 10800 1 EEST} - {2393096400 7200 0 EET} - {2405973600 10800 1 EEST} - {2424632400 7200 0 EET} - {2437423200 10800 1 EEST} - {2456168400 7200 0 EET} - {2468872800 10800 1 EEST} - {2487790800 7200 0 EET} - {2500322400 10800 1 EEST} - {2519326800 7200 0 EET} - {2531772000 10800 1 EEST} - {2550862800 7200 0 EET} - {2563826400 10800 1 EEST} - {2582398800 7200 0 EET} - {2595276000 10800 1 EEST} - {2614021200 7200 0 EET} - {2626725600 10800 1 EEST} - {2645557200 7200 0 EET} - {2658175200 10800 1 EEST} - {2677093200 7200 0 EET} - {2689624800 10800 1 EEST} - {2708629200 7200 0 EET} - {2721679200 10800 1 EEST} - {2740251600 7200 0 EET} - {2753128800 10800 1 EEST} - {2771787600 7200 0 EET} - {2784578400 10800 1 EEST} - {2803323600 7200 0 EET} - {2816028000 10800 1 EEST} - {2834859600 7200 0 EET} - {2847477600 10800 1 EEST} - {2866482000 7200 0 EET} - {2878927200 10800 1 EEST} - {2898018000 7200 0 EET} - {2910981600 10800 1 EEST} - {2929554000 7200 0 EET} - {2942431200 10800 1 EEST} - {2961090000 7200 0 EET} - {2973880800 10800 1 EEST} - {2992712400 7200 0 EET} - {3005330400 10800 1 EEST} - {3024248400 7200 0 EET} - {3036780000 10800 1 EEST} - {3055784400 7200 0 EET} - {3068229600 10800 1 EEST} - {3087320400 7200 0 EET} - {3100284000 10800 1 EEST} - {3118942800 7200 0 EET} - {3131733600 10800 1 EEST} - {3150478800 7200 0 EET} - {3163183200 10800 1 EEST} - {3182014800 7200 0 EET} - {3194632800 10800 1 EEST} - {3213550800 7200 0 EET} - {3226082400 10800 1 EEST} - {3245173200 7200 0 EET} - {3258136800 10800 1 EEST} - {3276709200 7200 0 EET} - {3289586400 10800 1 EEST} - {3308245200 7200 0 EET} - {3321036000 10800 1 EEST} - {3339781200 7200 0 EET} - {3352485600 10800 1 EEST} - {3371403600 7200 0 EET} - {3383935200 10800 1 EEST} - {3402939600 7200 0 EET} - {3415384800 10800 1 EEST} - {3434475600 7200 0 EET} - {3447439200 10800 1 EEST} - {3466011600 7200 0 EET} - {3478888800 10800 1 EEST} - {3497634000 7200 0 EET} - {3510338400 10800 1 EEST} - {3529170000 7200 0 EET} - {3541788000 10800 1 EEST} - {3560706000 7200 0 EET} - {3573237600 10800 1 EEST} - {3592242000 7200 0 EET} - {3605292000 10800 1 EEST} - {3623864400 7200 0 EET} - {3636741600 10800 1 EEST} - {3655400400 7200 0 EET} - {3668191200 10800 1 EEST} - {3686936400 7200 0 EET} - {3699640800 10800 1 EEST} - {3718472400 7200 0 EET} - {3731090400 10800 1 EEST} - {3750094800 7200 0 EET} - {3762540000 10800 1 EEST} - {3781630800 7200 0 EET} - {3794594400 10800 1 EEST} - {3813166800 7200 0 EET} - {3826044000 10800 1 EEST} - {3844702800 7200 0 EET} - {3857493600 10800 1 EEST} - {3876325200 7200 0 EET} - {3888943200 10800 1 EEST} - {3907861200 7200 0 EET} - {3920392800 10800 1 EEST} - {3939397200 7200 0 EET} - {3951842400 10800 1 EEST} - {3970933200 7200 0 EET} - {3983896800 10800 1 EEST} - {4002555600 7200 0 EET} - {4015346400 10800 1 EEST} - {4034091600 7200 0 EET} - {4046796000 10800 1 EEST} - {4065627600 7200 0 EET} - {4078245600 10800 1 EEST} - {4097163600 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Damascus) { + {-9223372036854775808 8712 0 LMT} + {-1577931912 7200 0 EET} + {-1568592000 10800 1 EEST} + {-1554080400 7200 0 EET} + {-1537142400 10800 1 EEST} + {-1522630800 7200 0 EET} + {-1505692800 10800 1 EEST} + {-1491181200 7200 0 EET} + {-1474243200 10800 1 EEST} + {-1459126800 7200 0 EET} + {-242265600 10800 1 EEST} + {-228877200 7200 0 EET} + {-210556800 10800 1 EEST} + {-197427600 7200 0 EET} + {-178934400 10800 1 EEST} + {-165718800 7200 0 EET} + {-147398400 10800 1 EEST} + {-134269200 7200 0 EET} + {-116467200 10800 1 EEST} + {-102646800 7200 0 EET} + {-84326400 10800 1 EEST} + {-71110800 7200 0 EET} + {-52704000 10800 1 EEST} + {-39488400 7200 0 EET} + {-21168000 10800 1 EEST} + {-7952400 7200 0 EET} + {10368000 10800 1 EEST} + {23583600 7200 0 EET} + {41904000 10800 1 EEST} + {55119600 7200 0 EET} + {73526400 10800 1 EEST} + {86742000 7200 0 EET} + {105062400 10800 1 EEST} + {118278000 7200 0 EET} + {136598400 10800 1 EEST} + {149814000 7200 0 EET} + {168134400 10800 1 EEST} + {181350000 7200 0 EET} + {199756800 10800 1 EEST} + {212972400 7200 0 EET} + {231292800 10800 1 EEST} + {241916400 7200 0 EET} + {262828800 10800 1 EEST} + {273452400 7200 0 EET} + {418694400 10800 1 EEST} + {433810800 7200 0 EET} + {450316800 10800 1 EEST} + {465433200 7200 0 EET} + {508896000 10800 1 EEST} + {529196400 7200 0 EET} + {541555200 10800 1 EEST} + {562633200 7200 0 EET} + {574387200 10800 1 EEST} + {594255600 7200 0 EET} + {607305600 10800 1 EEST} + {623199600 7200 0 EET} + {638928000 10800 1 EEST} + {654649200 7200 0 EET} + {670456800 10800 1 EEST} + {686264400 7200 0 EET} + {702684000 10800 1 EEST} + {717886800 7200 0 EET} + {733096800 10800 1 EEST} + {748904400 7200 0 EET} + {765151200 10800 1 EEST} + {780958800 7200 0 EET} + {796687200 10800 1 EEST} + {812494800 7200 0 EET} + {828309600 10800 1 EEST} + {844117200 7200 0 EET} + {859759200 10800 1 EEST} + {875653200 7200 0 EET} + {891208800 10800 1 EEST} + {907189200 7200 0 EET} + {922917600 10800 1 EEST} + {938725200 7200 0 EET} + {954540000 10800 1 EEST} + {970347600 7200 0 EET} + {986076000 10800 1 EEST} + {1001883600 7200 0 EET} + {1017612000 10800 1 EEST} + {1033419600 7200 0 EET} + {1049148000 10800 1 EEST} + {1064955600 7200 0 EET} + {1080770400 10800 1 EEST} + {1096578000 7200 0 EET} + {1112306400 10800 1 EEST} + {1128114000 7200 0 EET} + {1143842400 10800 1 EEST} + {1158872400 7200 0 EET} + {1175205600 10800 1 EEST} + {1193950800 7200 0 EET} + {1207260000 10800 1 EEST} + {1225486800 7200 0 EET} + {1238104800 10800 1 EEST} + {1257022800 7200 0 EET} + {1269554400 10800 1 EEST} + {1288558800 7200 0 EET} + {1301004000 10800 1 EEST} + {1320094800 7200 0 EET} + {1333058400 10800 1 EEST} + {1351717200 7200 0 EET} + {1364508000 10800 1 EEST} + {1383253200 7200 0 EET} + {1395957600 10800 1 EEST} + {1414789200 7200 0 EET} + {1427407200 10800 1 EEST} + {1446325200 7200 0 EET} + {1458856800 10800 1 EEST} + {1477947600 7200 0 EET} + {1490911200 10800 1 EEST} + {1509483600 7200 0 EET} + {1522360800 10800 1 EEST} + {1541019600 7200 0 EET} + {1553810400 10800 1 EEST} + {1572555600 7200 0 EET} + {1585260000 10800 1 EEST} + {1604178000 7200 0 EET} + {1616709600 10800 1 EEST} + {1635714000 7200 0 EET} + {1648159200 10800 1 EEST} + {1667250000 7200 0 EET} + {1680213600 10800 1 EEST} + {1698786000 7200 0 EET} + {1711663200 10800 1 EEST} + {1730408400 7200 0 EET} + {1743112800 10800 1 EEST} + {1761944400 7200 0 EET} + {1774562400 10800 1 EEST} + {1793480400 7200 0 EET} + {1806012000 10800 1 EEST} + {1825016400 7200 0 EET} + {1838066400 10800 1 EEST} + {1856638800 7200 0 EET} + {1869516000 10800 1 EEST} + {1888174800 7200 0 EET} + {1900965600 10800 1 EEST} + {1919710800 7200 0 EET} + {1932415200 10800 1 EEST} + {1951246800 7200 0 EET} + {1963864800 10800 1 EEST} + {1982869200 7200 0 EET} + {1995314400 10800 1 EEST} + {2014405200 7200 0 EET} + {2027368800 10800 1 EEST} + {2045941200 7200 0 EET} + {2058818400 10800 1 EEST} + {2077477200 7200 0 EET} + {2090268000 10800 1 EEST} + {2109099600 7200 0 EET} + {2121717600 10800 1 EEST} + {2140635600 7200 0 EET} + {2153167200 10800 1 EEST} + {2172171600 7200 0 EET} + {2184616800 10800 1 EEST} + {2203707600 7200 0 EET} + {2216671200 10800 1 EEST} + {2235330000 7200 0 EET} + {2248120800 10800 1 EEST} + {2266866000 7200 0 EET} + {2279570400 10800 1 EEST} + {2298402000 7200 0 EET} + {2311020000 10800 1 EEST} + {2329938000 7200 0 EET} + {2342469600 10800 1 EEST} + {2361560400 7200 0 EET} + {2374524000 10800 1 EEST} + {2393096400 7200 0 EET} + {2405973600 10800 1 EEST} + {2424632400 7200 0 EET} + {2437423200 10800 1 EEST} + {2456168400 7200 0 EET} + {2468872800 10800 1 EEST} + {2487790800 7200 0 EET} + {2500322400 10800 1 EEST} + {2519326800 7200 0 EET} + {2531772000 10800 1 EEST} + {2550862800 7200 0 EET} + {2563826400 10800 1 EEST} + {2582398800 7200 0 EET} + {2595276000 10800 1 EEST} + {2614021200 7200 0 EET} + {2626725600 10800 1 EEST} + {2645557200 7200 0 EET} + {2658175200 10800 1 EEST} + {2677093200 7200 0 EET} + {2689624800 10800 1 EEST} + {2708629200 7200 0 EET} + {2721679200 10800 1 EEST} + {2740251600 7200 0 EET} + {2753128800 10800 1 EEST} + {2771787600 7200 0 EET} + {2784578400 10800 1 EEST} + {2803323600 7200 0 EET} + {2816028000 10800 1 EEST} + {2834859600 7200 0 EET} + {2847477600 10800 1 EEST} + {2866482000 7200 0 EET} + {2878927200 10800 1 EEST} + {2898018000 7200 0 EET} + {2910981600 10800 1 EEST} + {2929554000 7200 0 EET} + {2942431200 10800 1 EEST} + {2961090000 7200 0 EET} + {2973880800 10800 1 EEST} + {2992712400 7200 0 EET} + {3005330400 10800 1 EEST} + {3024248400 7200 0 EET} + {3036780000 10800 1 EEST} + {3055784400 7200 0 EET} + {3068229600 10800 1 EEST} + {3087320400 7200 0 EET} + {3100284000 10800 1 EEST} + {3118942800 7200 0 EET} + {3131733600 10800 1 EEST} + {3150478800 7200 0 EET} + {3163183200 10800 1 EEST} + {3182014800 7200 0 EET} + {3194632800 10800 1 EEST} + {3213550800 7200 0 EET} + {3226082400 10800 1 EEST} + {3245173200 7200 0 EET} + {3258136800 10800 1 EEST} + {3276709200 7200 0 EET} + {3289586400 10800 1 EEST} + {3308245200 7200 0 EET} + {3321036000 10800 1 EEST} + {3339781200 7200 0 EET} + {3352485600 10800 1 EEST} + {3371403600 7200 0 EET} + {3383935200 10800 1 EEST} + {3402939600 7200 0 EET} + {3415384800 10800 1 EEST} + {3434475600 7200 0 EET} + {3447439200 10800 1 EEST} + {3466011600 7200 0 EET} + {3478888800 10800 1 EEST} + {3497634000 7200 0 EET} + {3510338400 10800 1 EEST} + {3529170000 7200 0 EET} + {3541788000 10800 1 EEST} + {3560706000 7200 0 EET} + {3573237600 10800 1 EEST} + {3592242000 7200 0 EET} + {3605292000 10800 1 EEST} + {3623864400 7200 0 EET} + {3636741600 10800 1 EEST} + {3655400400 7200 0 EET} + {3668191200 10800 1 EEST} + {3686936400 7200 0 EET} + {3699640800 10800 1 EEST} + {3718472400 7200 0 EET} + {3731090400 10800 1 EEST} + {3750094800 7200 0 EET} + {3762540000 10800 1 EEST} + {3781630800 7200 0 EET} + {3794594400 10800 1 EEST} + {3813166800 7200 0 EET} + {3826044000 10800 1 EEST} + {3844702800 7200 0 EET} + {3857493600 10800 1 EEST} + {3876325200 7200 0 EET} + {3888943200 10800 1 EEST} + {3907861200 7200 0 EET} + {3920392800 10800 1 EEST} + {3939397200 7200 0 EET} + {3951842400 10800 1 EEST} + {3970933200 7200 0 EET} + {3983896800 10800 1 EEST} + {4002555600 7200 0 EET} + {4015346400 10800 1 EEST} + {4034091600 7200 0 EET} + {4046796000 10800 1 EEST} + {4065627600 7200 0 EET} + {4078245600 10800 1 EEST} + {4097163600 7200 0 EET} +} diff --git a/library/tzdata/Asia/Dhaka b/library/tzdata/Asia/Dhaka index 3ab1955..8eac24f 100644 --- a/library/tzdata/Asia/Dhaka +++ b/library/tzdata/Asia/Dhaka @@ -1,11 +1,11 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Dhaka) { - {-9223372036854775808 21700 0 LMT} - {-2524543300 21200 0 HMT} - {-891582800 23400 0 BURT} - {-872058600 19800 0 IST} - {-862637400 23400 0 BURT} - {-576138600 21600 0 DACT} - {38772000 21600 0 BDT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Dhaka) { + {-9223372036854775808 21700 0 LMT} + {-2524543300 21200 0 HMT} + {-891582800 23400 0 BURT} + {-872058600 19800 0 IST} + {-862637400 23400 0 BURT} + {-576138600 21600 0 DACT} + {38772000 21600 0 BDT} +} diff --git a/library/tzdata/Asia/Dili b/library/tzdata/Asia/Dili index 72adfef..36910fd 100644 --- a/library/tzdata/Asia/Dili +++ b/library/tzdata/Asia/Dili @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Dili) { - {-9223372036854775808 30140 0 LMT} - {-1830414140 28800 0 TLT} - {-879152400 32400 0 JST} - {-766054800 32400 0 TLT} - {199897200 28800 0 CIT} - {969120000 32400 0 TLT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Dili) { + {-9223372036854775808 30140 0 LMT} + {-1830414140 28800 0 TLT} + {-879152400 32400 0 JST} + {-766054800 32400 0 TLT} + {199897200 28800 0 CIT} + {969120000 32400 0 TLT} +} diff --git a/library/tzdata/Asia/Dubai b/library/tzdata/Asia/Dubai index 99cfe2e..b8730e5 100644 --- a/library/tzdata/Asia/Dubai +++ b/library/tzdata/Asia/Dubai @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Dubai) { - {-9223372036854775808 13272 0 LMT} - {-1577936472 14400 0 GST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Dubai) { + {-9223372036854775808 13272 0 LMT} + {-1577936472 14400 0 GST} +} diff --git a/library/tzdata/Asia/Dushanbe b/library/tzdata/Asia/Dushanbe index 2eb2739..59f8cb6 100644 --- a/library/tzdata/Asia/Dushanbe +++ b/library/tzdata/Asia/Dushanbe @@ -1,29 +1,29 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Dushanbe) { - {-9223372036854775808 16512 0 LMT} - {-1441168512 18000 0 DUST} - {-1247547600 21600 0 DUST} - {354909600 25200 1 DUSST} - {370717200 21600 0 DUST} - {386445600 25200 1 DUSST} - {402253200 21600 0 DUST} - {417981600 25200 1 DUSST} - {433789200 21600 0 DUST} - {449604000 25200 1 DUSST} - {465336000 21600 0 DUST} - {481060800 25200 1 DUSST} - {496785600 21600 0 DUST} - {512510400 25200 1 DUSST} - {528235200 21600 0 DUST} - {543960000 25200 1 DUSST} - {559684800 21600 0 DUST} - {575409600 25200 1 DUSST} - {591134400 21600 0 DUST} - {606859200 25200 1 DUSST} - {622584000 21600 0 DUST} - {638308800 25200 1 DUSST} - {654638400 21600 0 DUST} - {670363200 21600 1 DUSST} - {684363600 18000 0 TJT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Dushanbe) { + {-9223372036854775808 16512 0 LMT} + {-1441168512 18000 0 DUST} + {-1247547600 21600 0 DUST} + {354909600 25200 1 DUSST} + {370717200 21600 0 DUST} + {386445600 25200 1 DUSST} + {402253200 21600 0 DUST} + {417981600 25200 1 DUSST} + {433789200 21600 0 DUST} + {449604000 25200 1 DUSST} + {465336000 21600 0 DUST} + {481060800 25200 1 DUSST} + {496785600 21600 0 DUST} + {512510400 25200 1 DUSST} + {528235200 21600 0 DUST} + {543960000 25200 1 DUSST} + {559684800 21600 0 DUST} + {575409600 25200 1 DUSST} + {591134400 21600 0 DUST} + {606859200 25200 1 DUSST} + {622584000 21600 0 DUST} + {638308800 25200 1 DUSST} + {654638400 21600 0 DUST} + {670363200 21600 1 DUSST} + {684363600 18000 0 TJT} +} diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza index 7046f78..e0c8eb0 100644 --- a/library/tzdata/Asia/Gaza +++ b/library/tzdata/Asia/Gaza @@ -1,275 +1,275 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Gaza) { - {-9223372036854775808 8272 0 LMT} - {-2185409872 7200 0 EET} - {-933645600 10800 1 EET} - {-857358000 7200 0 EET} - {-844300800 10800 1 EET} - {-825822000 7200 0 EET} - {-812685600 10800 1 EET} - {-794199600 7200 0 EET} - {-779853600 10800 1 EET} - {-762656400 7200 0 EET} - {-748310400 10800 1 EET} - {-731127600 7200 0 EET} - {-682653600 7200 0 EET} - {-399088800 10800 1 EEST} - {-386650800 7200 0 EET} - {-368330400 10800 1 EEST} - {-355114800 7200 0 EET} - {-336790800 10800 1 EEST} - {-323654400 7200 0 EET} - {-305168400 10800 1 EEST} - {-292032000 7200 0 EET} - {-273632400 10800 1 EEST} - {-260496000 7200 0 EET} - {-242096400 10800 1 EEST} - {-228960000 7200 0 EET} - {-210560400 10800 1 EEST} - {-197424000 7200 0 EET} - {-178938000 10800 1 EEST} - {-165801600 7200 0 EET} - {-147402000 10800 1 EEST} - {-134265600 7200 0 EET} - {-115866000 10800 1 EEST} - {-102643200 7200 0 EET} - {-84330000 10800 1 EEST} - {-81313200 10800 0 IST} - {142376400 10800 1 IDT} - {150843600 7200 0 IST} - {167176800 10800 1 IDT} - {178664400 7200 0 IST} - {482277600 10800 1 IDT} - {495579600 7200 0 IST} - {516751200 10800 1 IDT} - {526424400 7200 0 IST} - {545436000 10800 1 IDT} - {558478800 7200 0 IST} - {576540000 10800 1 IDT} - {589237200 7200 0 IST} - {609890400 10800 1 IDT} - {620773200 7200 0 IST} - {638316000 10800 1 IDT} - {651618000 7200 0 IST} - {669765600 10800 1 IDT} - {683672400 7200 0 IST} - {701820000 10800 1 IDT} - {715726800 7200 0 IST} - {733701600 10800 1 IDT} - {747176400 7200 0 IST} - {765151200 10800 1 IDT} - {778021200 7200 0 IST} - {796600800 10800 1 IDT} - {810075600 7200 0 IST} - {820447200 7200 0 EET} - {828655200 10800 1 EEST} - {843170400 7200 0 EET} - {860104800 10800 1 EEST} - {874620000 7200 0 EET} - {891554400 10800 1 EEST} - {906069600 7200 0 EET} - {915141600 7200 0 EET} - {924213600 10800 1 EEST} - {939934800 7200 0 EET} - {956268000 10800 1 EEST} - {971989200 7200 0 EET} - {987717600 10800 1 EEST} - {1003438800 7200 0 EET} - {1019167200 10800 1 EEST} - {1034888400 7200 0 EET} - {1050616800 10800 1 EEST} - {1066338000 7200 0 EET} - {1082066400 10800 1 EEST} - {1096581600 7200 0 EET} - {1113516000 10800 1 EEST} - {1128380400 7200 0 EET} - {1143842400 10800 1 EEST} - {1158872400 7200 0 EET} - {1175378400 10800 1 EEST} - {1189638000 7200 0 EET} - {1207000800 10800 1 EEST} - {1219964400 7200 0 EET} - {1238104800 10800 1 EEST} - {1254092400 7200 0 EET} - {1269554400 10800 1 EEST} - {1285542000 7200 0 EET} - {1301004000 10800 1 EEST} - {1316991600 7200 0 EET} - {1333058400 10800 1 EEST} - {1348441200 7200 0 EET} - {1364508000 10800 1 EEST} - {1380495600 7200 0 EET} - {1395957600 10800 1 EEST} - {1411945200 7200 0 EET} - {1427407200 10800 1 EEST} - {1443394800 7200 0 EET} - {1458856800 10800 1 EEST} - {1474844400 7200 0 EET} - {1490911200 10800 1 EEST} - {1506294000 7200 0 EET} - {1522360800 10800 1 EEST} - {1537743600 7200 0 EET} - {1553810400 10800 1 EEST} - {1569798000 7200 0 EET} - {1585260000 10800 1 EEST} - {1601247600 7200 0 EET} - {1616709600 10800 1 EEST} - {1632697200 7200 0 EET} - {1648159200 10800 1 EEST} - {1664146800 7200 0 EET} - {1680213600 10800 1 EEST} - {1695596400 7200 0 EET} - {1711663200 10800 1 EEST} - {1727650800 7200 0 EET} - {1743112800 10800 1 EEST} - {1759100400 7200 0 EET} - {1774562400 10800 1 EEST} - {1790550000 7200 0 EET} - {1806012000 10800 1 EEST} - {1821999600 7200 0 EET} - {1838066400 10800 1 EEST} - {1853449200 7200 0 EET} - {1869516000 10800 1 EEST} - {1884898800 7200 0 EET} - {1900965600 10800 1 EEST} - {1916953200 7200 0 EET} - {1932415200 10800 1 EEST} - {1948402800 7200 0 EET} - {1963864800 10800 1 EEST} - {1979852400 7200 0 EET} - {1995314400 10800 1 EEST} - {2011302000 7200 0 EET} - {2027368800 10800 1 EEST} - {2042751600 7200 0 EET} - {2058818400 10800 1 EEST} - {2074201200 7200 0 EET} - {2090268000 10800 1 EEST} - {2106255600 7200 0 EET} - {2121717600 10800 1 EEST} - {2137705200 7200 0 EET} - {2153167200 10800 1 EEST} - {2169154800 7200 0 EET} - {2184616800 10800 1 EEST} - {2200604400 7200 0 EET} - {2216671200 10800 1 EEST} - {2232054000 7200 0 EET} - {2248120800 10800 1 EEST} - {2264108400 7200 0 EET} - {2279570400 10800 1 EEST} - {2295558000 7200 0 EET} - {2311020000 10800 1 EEST} - {2327007600 7200 0 EET} - {2342469600 10800 1 EEST} - {2358457200 7200 0 EET} - {2374524000 10800 1 EEST} - {2389906800 7200 0 EET} - {2405973600 10800 1 EEST} - {2421356400 7200 0 EET} - {2437423200 10800 1 EEST} - {2453410800 7200 0 EET} - {2468872800 10800 1 EEST} - {2484860400 7200 0 EET} - {2500322400 10800 1 EEST} - {2516310000 7200 0 EET} - {2531772000 10800 1 EEST} - {2547759600 7200 0 EET} - {2563826400 10800 1 EEST} - {2579209200 7200 0 EET} - {2595276000 10800 1 EEST} - {2611263600 7200 0 EET} - {2626725600 10800 1 EEST} - {2642713200 7200 0 EET} - {2658175200 10800 1 EEST} - {2674162800 7200 0 EET} - {2689624800 10800 1 EEST} - {2705612400 7200 0 EET} - {2721679200 10800 1 EEST} - {2737062000 7200 0 EET} - {2753128800 10800 1 EEST} - {2768511600 7200 0 EET} - {2784578400 10800 1 EEST} - {2800566000 7200 0 EET} - {2816028000 10800 1 EEST} - {2832015600 7200 0 EET} - {2847477600 10800 1 EEST} - {2863465200 7200 0 EET} - {2878927200 10800 1 EEST} - {2894914800 7200 0 EET} - {2910981600 10800 1 EEST} - {2926364400 7200 0 EET} - {2942431200 10800 1 EEST} - {2957814000 7200 0 EET} - {2973880800 10800 1 EEST} - {2989868400 7200 0 EET} - {3005330400 10800 1 EEST} - {3021318000 7200 0 EET} - {3036780000 10800 1 EEST} - {3052767600 7200 0 EET} - {3068229600 10800 1 EEST} - {3084217200 7200 0 EET} - {3100284000 10800 1 EEST} - {3115666800 7200 0 EET} - {3131733600 10800 1 EEST} - {3147721200 7200 0 EET} - {3163183200 10800 1 EEST} - {3179170800 7200 0 EET} - {3194632800 10800 1 EEST} - {3210620400 7200 0 EET} - {3226082400 10800 1 EEST} - {3242070000 7200 0 EET} - {3258136800 10800 1 EEST} - {3273519600 7200 0 EET} - {3289586400 10800 1 EEST} - {3304969200 7200 0 EET} - {3321036000 10800 1 EEST} - {3337023600 7200 0 EET} - {3352485600 10800 1 EEST} - {3368473200 7200 0 EET} - {3383935200 10800 1 EEST} - {3399922800 7200 0 EET} - {3415384800 10800 1 EEST} - {3431372400 7200 0 EET} - {3447439200 10800 1 EEST} - {3462822000 7200 0 EET} - {3478888800 10800 1 EEST} - {3494876400 7200 0 EET} - {3510338400 10800 1 EEST} - {3526326000 7200 0 EET} - {3541788000 10800 1 EEST} - {3557775600 7200 0 EET} - {3573237600 10800 1 EEST} - {3589225200 7200 0 EET} - {3605292000 10800 1 EEST} - {3620674800 7200 0 EET} - {3636741600 10800 1 EEST} - {3652124400 7200 0 EET} - {3668191200 10800 1 EEST} - {3684178800 7200 0 EET} - {3699640800 10800 1 EEST} - {3715628400 7200 0 EET} - {3731090400 10800 1 EEST} - {3747078000 7200 0 EET} - {3762540000 10800 1 EEST} - {3778527600 7200 0 EET} - {3794594400 10800 1 EEST} - {3809977200 7200 0 EET} - {3826044000 10800 1 EEST} - {3841426800 7200 0 EET} - {3857493600 10800 1 EEST} - {3873481200 7200 0 EET} - {3888943200 10800 1 EEST} - {3904930800 7200 0 EET} - {3920392800 10800 1 EEST} - {3936380400 7200 0 EET} - {3951842400 10800 1 EEST} - {3967830000 7200 0 EET} - {3983896800 10800 1 EEST} - {3999279600 7200 0 EET} - {4015346400 10800 1 EEST} - {4031334000 7200 0 EET} - {4046796000 10800 1 EEST} - {4062783600 7200 0 EET} - {4078245600 10800 1 EEST} - {4094233200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Gaza) { + {-9223372036854775808 8272 0 LMT} + {-2185409872 7200 0 EET} + {-933645600 10800 1 EET} + {-857358000 7200 0 EET} + {-844300800 10800 1 EET} + {-825822000 7200 0 EET} + {-812685600 10800 1 EET} + {-794199600 7200 0 EET} + {-779853600 10800 1 EET} + {-762656400 7200 0 EET} + {-748310400 10800 1 EET} + {-731127600 7200 0 EET} + {-682653600 7200 0 EET} + {-399088800 10800 1 EEST} + {-386650800 7200 0 EET} + {-368330400 10800 1 EEST} + {-355114800 7200 0 EET} + {-336790800 10800 1 EEST} + {-323654400 7200 0 EET} + {-305168400 10800 1 EEST} + {-292032000 7200 0 EET} + {-273632400 10800 1 EEST} + {-260496000 7200 0 EET} + {-242096400 10800 1 EEST} + {-228960000 7200 0 EET} + {-210560400 10800 1 EEST} + {-197424000 7200 0 EET} + {-178938000 10800 1 EEST} + {-165801600 7200 0 EET} + {-147402000 10800 1 EEST} + {-134265600 7200 0 EET} + {-115866000 10800 1 EEST} + {-102643200 7200 0 EET} + {-84330000 10800 1 EEST} + {-81313200 10800 0 IST} + {142376400 10800 1 IDT} + {150843600 7200 0 IST} + {167176800 10800 1 IDT} + {178664400 7200 0 IST} + {482277600 10800 1 IDT} + {495579600 7200 0 IST} + {516751200 10800 1 IDT} + {526424400 7200 0 IST} + {545436000 10800 1 IDT} + {558478800 7200 0 IST} + {576540000 10800 1 IDT} + {589237200 7200 0 IST} + {609890400 10800 1 IDT} + {620773200 7200 0 IST} + {638316000 10800 1 IDT} + {651618000 7200 0 IST} + {669765600 10800 1 IDT} + {683672400 7200 0 IST} + {701820000 10800 1 IDT} + {715726800 7200 0 IST} + {733701600 10800 1 IDT} + {747176400 7200 0 IST} + {765151200 10800 1 IDT} + {778021200 7200 0 IST} + {796600800 10800 1 IDT} + {810075600 7200 0 IST} + {820447200 7200 0 EET} + {828655200 10800 1 EEST} + {843170400 7200 0 EET} + {860104800 10800 1 EEST} + {874620000 7200 0 EET} + {891554400 10800 1 EEST} + {906069600 7200 0 EET} + {915141600 7200 0 EET} + {924213600 10800 1 EEST} + {939934800 7200 0 EET} + {956268000 10800 1 EEST} + {971989200 7200 0 EET} + {987717600 10800 1 EEST} + {1003438800 7200 0 EET} + {1019167200 10800 1 EEST} + {1034888400 7200 0 EET} + {1050616800 10800 1 EEST} + {1066338000 7200 0 EET} + {1082066400 10800 1 EEST} + {1096581600 7200 0 EET} + {1113516000 10800 1 EEST} + {1128380400 7200 0 EET} + {1143842400 10800 1 EEST} + {1158872400 7200 0 EET} + {1175378400 10800 1 EEST} + {1189638000 7200 0 EET} + {1207000800 10800 1 EEST} + {1219964400 7200 0 EET} + {1238104800 10800 1 EEST} + {1254092400 7200 0 EET} + {1269554400 10800 1 EEST} + {1285542000 7200 0 EET} + {1301004000 10800 1 EEST} + {1316991600 7200 0 EET} + {1333058400 10800 1 EEST} + {1348441200 7200 0 EET} + {1364508000 10800 1 EEST} + {1380495600 7200 0 EET} + {1395957600 10800 1 EEST} + {1411945200 7200 0 EET} + {1427407200 10800 1 EEST} + {1443394800 7200 0 EET} + {1458856800 10800 1 EEST} + {1474844400 7200 0 EET} + {1490911200 10800 1 EEST} + {1506294000 7200 0 EET} + {1522360800 10800 1 EEST} + {1537743600 7200 0 EET} + {1553810400 10800 1 EEST} + {1569798000 7200 0 EET} + {1585260000 10800 1 EEST} + {1601247600 7200 0 EET} + {1616709600 10800 1 EEST} + {1632697200 7200 0 EET} + {1648159200 10800 1 EEST} + {1664146800 7200 0 EET} + {1680213600 10800 1 EEST} + {1695596400 7200 0 EET} + {1711663200 10800 1 EEST} + {1727650800 7200 0 EET} + {1743112800 10800 1 EEST} + {1759100400 7200 0 EET} + {1774562400 10800 1 EEST} + {1790550000 7200 0 EET} + {1806012000 10800 1 EEST} + {1821999600 7200 0 EET} + {1838066400 10800 1 EEST} + {1853449200 7200 0 EET} + {1869516000 10800 1 EEST} + {1884898800 7200 0 EET} + {1900965600 10800 1 EEST} + {1916953200 7200 0 EET} + {1932415200 10800 1 EEST} + {1948402800 7200 0 EET} + {1963864800 10800 1 EEST} + {1979852400 7200 0 EET} + {1995314400 10800 1 EEST} + {2011302000 7200 0 EET} + {2027368800 10800 1 EEST} + {2042751600 7200 0 EET} + {2058818400 10800 1 EEST} + {2074201200 7200 0 EET} + {2090268000 10800 1 EEST} + {2106255600 7200 0 EET} + {2121717600 10800 1 EEST} + {2137705200 7200 0 EET} + {2153167200 10800 1 EEST} + {2169154800 7200 0 EET} + {2184616800 10800 1 EEST} + {2200604400 7200 0 EET} + {2216671200 10800 1 EEST} + {2232054000 7200 0 EET} + {2248120800 10800 1 EEST} + {2264108400 7200 0 EET} + {2279570400 10800 1 EEST} + {2295558000 7200 0 EET} + {2311020000 10800 1 EEST} + {2327007600 7200 0 EET} + {2342469600 10800 1 EEST} + {2358457200 7200 0 EET} + {2374524000 10800 1 EEST} + {2389906800 7200 0 EET} + {2405973600 10800 1 EEST} + {2421356400 7200 0 EET} + {2437423200 10800 1 EEST} + {2453410800 7200 0 EET} + {2468872800 10800 1 EEST} + {2484860400 7200 0 EET} + {2500322400 10800 1 EEST} + {2516310000 7200 0 EET} + {2531772000 10800 1 EEST} + {2547759600 7200 0 EET} + {2563826400 10800 1 EEST} + {2579209200 7200 0 EET} + {2595276000 10800 1 EEST} + {2611263600 7200 0 EET} + {2626725600 10800 1 EEST} + {2642713200 7200 0 EET} + {2658175200 10800 1 EEST} + {2674162800 7200 0 EET} + {2689624800 10800 1 EEST} + {2705612400 7200 0 EET} + {2721679200 10800 1 EEST} + {2737062000 7200 0 EET} + {2753128800 10800 1 EEST} + {2768511600 7200 0 EET} + {2784578400 10800 1 EEST} + {2800566000 7200 0 EET} + {2816028000 10800 1 EEST} + {2832015600 7200 0 EET} + {2847477600 10800 1 EEST} + {2863465200 7200 0 EET} + {2878927200 10800 1 EEST} + {2894914800 7200 0 EET} + {2910981600 10800 1 EEST} + {2926364400 7200 0 EET} + {2942431200 10800 1 EEST} + {2957814000 7200 0 EET} + {2973880800 10800 1 EEST} + {2989868400 7200 0 EET} + {3005330400 10800 1 EEST} + {3021318000 7200 0 EET} + {3036780000 10800 1 EEST} + {3052767600 7200 0 EET} + {3068229600 10800 1 EEST} + {3084217200 7200 0 EET} + {3100284000 10800 1 EEST} + {3115666800 7200 0 EET} + {3131733600 10800 1 EEST} + {3147721200 7200 0 EET} + {3163183200 10800 1 EEST} + {3179170800 7200 0 EET} + {3194632800 10800 1 EEST} + {3210620400 7200 0 EET} + {3226082400 10800 1 EEST} + {3242070000 7200 0 EET} + {3258136800 10800 1 EEST} + {3273519600 7200 0 EET} + {3289586400 10800 1 EEST} + {3304969200 7200 0 EET} + {3321036000 10800 1 EEST} + {3337023600 7200 0 EET} + {3352485600 10800 1 EEST} + {3368473200 7200 0 EET} + {3383935200 10800 1 EEST} + {3399922800 7200 0 EET} + {3415384800 10800 1 EEST} + {3431372400 7200 0 EET} + {3447439200 10800 1 EEST} + {3462822000 7200 0 EET} + {3478888800 10800 1 EEST} + {3494876400 7200 0 EET} + {3510338400 10800 1 EEST} + {3526326000 7200 0 EET} + {3541788000 10800 1 EEST} + {3557775600 7200 0 EET} + {3573237600 10800 1 EEST} + {3589225200 7200 0 EET} + {3605292000 10800 1 EEST} + {3620674800 7200 0 EET} + {3636741600 10800 1 EEST} + {3652124400 7200 0 EET} + {3668191200 10800 1 EEST} + {3684178800 7200 0 EET} + {3699640800 10800 1 EEST} + {3715628400 7200 0 EET} + {3731090400 10800 1 EEST} + {3747078000 7200 0 EET} + {3762540000 10800 1 EEST} + {3778527600 7200 0 EET} + {3794594400 10800 1 EEST} + {3809977200 7200 0 EET} + {3826044000 10800 1 EEST} + {3841426800 7200 0 EET} + {3857493600 10800 1 EEST} + {3873481200 7200 0 EET} + {3888943200 10800 1 EEST} + {3904930800 7200 0 EET} + {3920392800 10800 1 EEST} + {3936380400 7200 0 EET} + {3951842400 10800 1 EEST} + {3967830000 7200 0 EET} + {3983896800 10800 1 EEST} + {3999279600 7200 0 EET} + {4015346400 10800 1 EEST} + {4031334000 7200 0 EET} + {4046796000 10800 1 EEST} + {4062783600 7200 0 EET} + {4078245600 10800 1 EEST} + {4094233200 7200 0 EET} +} diff --git a/library/tzdata/Asia/Harbin b/library/tzdata/Asia/Harbin index 2e5fcf6..0eb0c12 100644 --- a/library/tzdata/Asia/Harbin +++ b/library/tzdata/Asia/Harbin @@ -1,22 +1,22 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Harbin) { - {-9223372036854775808 30404 0 LMT} - {-1325492804 30600 0 CHAT} - {-1194078600 28800 0 CST} - {-946800000 32400 0 CHAT} - {-115894800 30600 0 CHAT} - {325956600 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Harbin) { + {-9223372036854775808 30404 0 LMT} + {-1325492804 30600 0 CHAT} + {-1194078600 28800 0 CST} + {-946800000 32400 0 CHAT} + {-115894800 30600 0 CHAT} + {325956600 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Ho_Chi_Minh b/library/tzdata/Asia/Ho_Chi_Minh index 2eaca7e..777c8db 100644 --- a/library/tzdata/Asia/Ho_Chi_Minh +++ b/library/tzdata/Asia/Ho_Chi_Minh @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Ho_Chi_Minh) { - {-9223372036854775808 25600 0 LMT} - {-2005974400 25580 0 SMT} - {-1855983920 25200 0 ICT} - {-1819954800 28800 0 ICT} - {-1220428800 25200 0 ICT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Ho_Chi_Minh) { + {-9223372036854775808 25600 0 LMT} + {-2005974400 25580 0 SMT} + {-1855983920 25200 0 ICT} + {-1819954800 28800 0 ICT} + {-1220428800 25200 0 ICT} +} diff --git a/library/tzdata/Asia/Hong_Kong b/library/tzdata/Asia/Hong_Kong index aa2089f..88d8091 100644 --- a/library/tzdata/Asia/Hong_Kong +++ b/library/tzdata/Asia/Hong_Kong @@ -1,74 +1,74 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Hong_Kong) { - {-9223372036854775808 27396 0 LMT} - {-2056692996 28800 0 HKT} - {-747981000 32400 1 HKST} - {-728544600 28800 0 HKT} - {-717049800 32400 1 HKST} - {-694503000 28800 0 HKT} - {-683785800 32400 1 HKST} - {-668064600 28800 0 HKT} - {-654755400 32400 1 HKST} - {-636615000 28800 0 HKT} - {-623305800 32400 1 HKST} - {-605165400 28800 0 HKT} - {-591856200 32400 1 HKST} - {-573715800 28800 0 HKT} - {-559801800 32400 1 HKST} - {-542266200 28800 0 HKT} - {-528352200 32400 1 HKST} - {-510211800 28800 0 HKT} - {-498112200 32400 1 HKST} - {-478762200 28800 0 HKT} - {-466662600 32400 1 HKST} - {-446707800 28800 0 HKT} - {-435213000 32400 1 HKST} - {-415258200 28800 0 HKT} - {-403158600 32400 1 HKST} - {-383808600 28800 0 HKT} - {-371709000 32400 1 HKST} - {-352359000 28800 0 HKT} - {-340259400 32400 1 HKST} - {-320909400 28800 0 HKT} - {-308809800 32400 1 HKST} - {-288855000 28800 0 HKT} - {-277360200 32400 1 HKST} - {-257405400 28800 0 HKT} - {-245910600 32400 1 HKST} - {-225955800 28800 0 HKT} - {-213856200 32400 1 HKST} - {-194506200 28800 0 HKT} - {-182406600 32400 1 HKST} - {-163056600 28800 0 HKT} - {-148537800 32400 1 HKST} - {-132816600 28800 0 HKT} - {-117088200 32400 1 HKST} - {-101367000 28800 0 HKT} - {-85638600 32400 1 HKST} - {-69312600 28800 0 HKT} - {-53584200 32400 1 HKST} - {-37863000 28800 0 HKT} - {-22134600 32400 1 HKST} - {-6413400 28800 0 HKT} - {9315000 32400 1 HKST} - {25036200 28800 0 HKT} - {40764600 32400 1 HKST} - {56485800 28800 0 HKT} - {72214200 32400 1 HKST} - {88540200 28800 0 HKT} - {104268600 32400 1 HKST} - {119989800 28800 0 HKT} - {135718200 32400 1 HKST} - {151439400 28800 0 HKT} - {167167800 32400 1 HKST} - {182889000 28800 0 HKT} - {198617400 32400 1 HKST} - {214338600 28800 0 HKT} - {230067000 32400 1 HKST} - {245788200 28800 0 HKT} - {295385400 32400 1 HKST} - {309292200 28800 0 HKT} - {326835000 32400 1 HKST} - {340741800 28800 0 HKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Hong_Kong) { + {-9223372036854775808 27396 0 LMT} + {-2056692996 28800 0 HKT} + {-747981000 32400 1 HKST} + {-728544600 28800 0 HKT} + {-717049800 32400 1 HKST} + {-694503000 28800 0 HKT} + {-683785800 32400 1 HKST} + {-668064600 28800 0 HKT} + {-654755400 32400 1 HKST} + {-636615000 28800 0 HKT} + {-623305800 32400 1 HKST} + {-605165400 28800 0 HKT} + {-591856200 32400 1 HKST} + {-573715800 28800 0 HKT} + {-559801800 32400 1 HKST} + {-542266200 28800 0 HKT} + {-528352200 32400 1 HKST} + {-510211800 28800 0 HKT} + {-498112200 32400 1 HKST} + {-478762200 28800 0 HKT} + {-466662600 32400 1 HKST} + {-446707800 28800 0 HKT} + {-435213000 32400 1 HKST} + {-415258200 28800 0 HKT} + {-403158600 32400 1 HKST} + {-383808600 28800 0 HKT} + {-371709000 32400 1 HKST} + {-352359000 28800 0 HKT} + {-340259400 32400 1 HKST} + {-320909400 28800 0 HKT} + {-308809800 32400 1 HKST} + {-288855000 28800 0 HKT} + {-277360200 32400 1 HKST} + {-257405400 28800 0 HKT} + {-245910600 32400 1 HKST} + {-225955800 28800 0 HKT} + {-213856200 32400 1 HKST} + {-194506200 28800 0 HKT} + {-182406600 32400 1 HKST} + {-163056600 28800 0 HKT} + {-148537800 32400 1 HKST} + {-132816600 28800 0 HKT} + {-117088200 32400 1 HKST} + {-101367000 28800 0 HKT} + {-85638600 32400 1 HKST} + {-69312600 28800 0 HKT} + {-53584200 32400 1 HKST} + {-37863000 28800 0 HKT} + {-22134600 32400 1 HKST} + {-6413400 28800 0 HKT} + {9315000 32400 1 HKST} + {25036200 28800 0 HKT} + {40764600 32400 1 HKST} + {56485800 28800 0 HKT} + {72214200 32400 1 HKST} + {88540200 28800 0 HKT} + {104268600 32400 1 HKST} + {119989800 28800 0 HKT} + {135718200 32400 1 HKST} + {151439400 28800 0 HKT} + {167167800 32400 1 HKST} + {182889000 28800 0 HKT} + {198617400 32400 1 HKST} + {214338600 28800 0 HKT} + {230067000 32400 1 HKST} + {245788200 28800 0 HKT} + {295385400 32400 1 HKST} + {309292200 28800 0 HKT} + {326835000 32400 1 HKST} + {340741800 28800 0 HKT} +} diff --git a/library/tzdata/Asia/Hovd b/library/tzdata/Asia/Hovd index a779080..2a87dab 100644 --- a/library/tzdata/Asia/Hovd +++ b/library/tzdata/Asia/Hovd @@ -1,51 +1,51 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Hovd) { - {-9223372036854775808 21996 0 LMT} - {-2032927596 21600 0 HOVT} - {252439200 25200 0 HOVT} - {417978000 28800 1 HOVST} - {433785600 25200 0 HOVT} - {449600400 28800 1 HOVST} - {465321600 25200 0 HOVT} - {481050000 28800 1 HOVST} - {496771200 25200 0 HOVT} - {512499600 28800 1 HOVST} - {528220800 25200 0 HOVT} - {543949200 28800 1 HOVST} - {559670400 25200 0 HOVT} - {575398800 28800 1 HOVST} - {591120000 25200 0 HOVT} - {606848400 28800 1 HOVST} - {622569600 25200 0 HOVT} - {638298000 28800 1 HOVST} - {654624000 25200 0 HOVT} - {670352400 28800 1 HOVST} - {686073600 25200 0 HOVT} - {701802000 28800 1 HOVST} - {717523200 25200 0 HOVT} - {733251600 28800 1 HOVST} - {748972800 25200 0 HOVT} - {764701200 28800 1 HOVST} - {780422400 25200 0 HOVT} - {796150800 28800 1 HOVST} - {811872000 25200 0 HOVT} - {828205200 28800 1 HOVST} - {843926400 25200 0 HOVT} - {859654800 28800 1 HOVST} - {875376000 25200 0 HOVT} - {891104400 28800 1 HOVST} - {906825600 25200 0 HOVT} - {988398000 28800 1 HOVST} - {1001700000 25200 0 HOVT} - {1017428400 28800 1 HOVST} - {1033149600 25200 0 HOVT} - {1048878000 28800 1 HOVST} - {1064599200 25200 0 HOVT} - {1080327600 28800 1 HOVST} - {1096048800 25200 0 HOVT} - {1111777200 28800 1 HOVST} - {1127498400 25200 0 HOVT} - {1143226800 28800 1 HOVST} - {1159552800 25200 0 HOVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Hovd) { + {-9223372036854775808 21996 0 LMT} + {-2032927596 21600 0 HOVT} + {252439200 25200 0 HOVT} + {417978000 28800 1 HOVST} + {433785600 25200 0 HOVT} + {449600400 28800 1 HOVST} + {465321600 25200 0 HOVT} + {481050000 28800 1 HOVST} + {496771200 25200 0 HOVT} + {512499600 28800 1 HOVST} + {528220800 25200 0 HOVT} + {543949200 28800 1 HOVST} + {559670400 25200 0 HOVT} + {575398800 28800 1 HOVST} + {591120000 25200 0 HOVT} + {606848400 28800 1 HOVST} + {622569600 25200 0 HOVT} + {638298000 28800 1 HOVST} + {654624000 25200 0 HOVT} + {670352400 28800 1 HOVST} + {686073600 25200 0 HOVT} + {701802000 28800 1 HOVST} + {717523200 25200 0 HOVT} + {733251600 28800 1 HOVST} + {748972800 25200 0 HOVT} + {764701200 28800 1 HOVST} + {780422400 25200 0 HOVT} + {796150800 28800 1 HOVST} + {811872000 25200 0 HOVT} + {828205200 28800 1 HOVST} + {843926400 25200 0 HOVT} + {859654800 28800 1 HOVST} + {875376000 25200 0 HOVT} + {891104400 28800 1 HOVST} + {906825600 25200 0 HOVT} + {988398000 28800 1 HOVST} + {1001700000 25200 0 HOVT} + {1017428400 28800 1 HOVST} + {1033149600 25200 0 HOVT} + {1048878000 28800 1 HOVST} + {1064599200 25200 0 HOVT} + {1080327600 28800 1 HOVST} + {1096048800 25200 0 HOVT} + {1111777200 28800 1 HOVST} + {1127498400 25200 0 HOVT} + {1143226800 28800 1 HOVST} + {1159552800 25200 0 HOVT} +} diff --git a/library/tzdata/Asia/Irkutsk b/library/tzdata/Asia/Irkutsk index 80ad7b9..771ebc9 100644 --- a/library/tzdata/Asia/Irkutsk +++ b/library/tzdata/Asia/Irkutsk @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Irkutsk) { - {-9223372036854775808 25040 0 LMT} - {-2840165840 25040 0 IMT} - {-1575874640 25200 0 IRKT} - {-1247554800 28800 0 IRKMMTT} - {354902400 32400 1 IRKST} - {370710000 28800 0 IRKT} - {386438400 32400 1 IRKST} - {402246000 28800 0 IRKT} - {417974400 32400 1 IRKST} - {433782000 28800 0 IRKT} - {449596800 32400 1 IRKST} - {465328800 28800 0 IRKT} - {481053600 32400 1 IRKST} - {496778400 28800 0 IRKT} - {512503200 32400 1 IRKST} - {528228000 28800 0 IRKT} - {543952800 32400 1 IRKST} - {559677600 28800 0 IRKT} - {575402400 32400 1 IRKST} - {591127200 28800 0 IRKT} - {606852000 32400 1 IRKST} - {622576800 28800 0 IRKT} - {638301600 32400 1 IRKST} - {654631200 28800 0 IRKT} - {670356000 25200 0 IRKMMTT} - {670359600 28800 1 IRKST} - {686084400 25200 0 IRKT} - {695761200 28800 0 IRKMMTT} - {701794800 32400 1 IRKST} - {717516000 28800 0 IRKT} - {733255200 32400 1 IRKST} - {748980000 28800 0 IRKT} - {764704800 32400 1 IRKST} - {780429600 28800 0 IRKT} - {796154400 32400 1 IRKST} - {811879200 28800 0 IRKT} - {828208800 32400 1 IRKST} - {846352800 28800 0 IRKT} - {859658400 32400 1 IRKST} - {877802400 28800 0 IRKT} - {891108000 32400 1 IRKST} - {909252000 28800 0 IRKT} - {922557600 32400 1 IRKST} - {941306400 28800 0 IRKT} - {954007200 32400 1 IRKST} - {972756000 28800 0 IRKT} - {985456800 32400 1 IRKST} - {1004205600 28800 0 IRKT} - {1017511200 32400 1 IRKST} - {1035655200 28800 0 IRKT} - {1048960800 32400 1 IRKST} - {1067104800 28800 0 IRKT} - {1080410400 32400 1 IRKST} - {1099159200 28800 0 IRKT} - {1111860000 32400 1 IRKST} - {1130608800 28800 0 IRKT} - {1143309600 32400 1 IRKST} - {1162058400 28800 0 IRKT} - {1174759200 32400 1 IRKST} - {1193508000 28800 0 IRKT} - {1206813600 32400 1 IRKST} - {1224957600 28800 0 IRKT} - {1238263200 32400 1 IRKST} - {1256407200 28800 0 IRKT} - {1269712800 32400 1 IRKST} - {1288461600 28800 0 IRKT} - {1301162400 32400 1 IRKST} - {1319911200 28800 0 IRKT} - {1332612000 32400 1 IRKST} - {1351360800 28800 0 IRKT} - {1364666400 32400 1 IRKST} - {1382810400 28800 0 IRKT} - {1396116000 32400 1 IRKST} - {1414260000 28800 0 IRKT} - {1427565600 32400 1 IRKST} - {1445709600 28800 0 IRKT} - {1459015200 32400 1 IRKST} - {1477764000 28800 0 IRKT} - {1490464800 32400 1 IRKST} - {1509213600 28800 0 IRKT} - {1521914400 32400 1 IRKST} - {1540663200 28800 0 IRKT} - {1553968800 32400 1 IRKST} - {1572112800 28800 0 IRKT} - {1585418400 32400 1 IRKST} - {1603562400 28800 0 IRKT} - {1616868000 32400 1 IRKST} - {1635616800 28800 0 IRKT} - {1648317600 32400 1 IRKST} - {1667066400 28800 0 IRKT} - {1679767200 32400 1 IRKST} - {1698516000 28800 0 IRKT} - {1711821600 32400 1 IRKST} - {1729965600 28800 0 IRKT} - {1743271200 32400 1 IRKST} - {1761415200 28800 0 IRKT} - {1774720800 32400 1 IRKST} - {1792864800 28800 0 IRKT} - {1806170400 32400 1 IRKST} - {1824919200 28800 0 IRKT} - {1837620000 32400 1 IRKST} - {1856368800 28800 0 IRKT} - {1869069600 32400 1 IRKST} - {1887818400 28800 0 IRKT} - {1901124000 32400 1 IRKST} - {1919268000 28800 0 IRKT} - {1932573600 32400 1 IRKST} - {1950717600 28800 0 IRKT} - {1964023200 32400 1 IRKST} - {1982772000 28800 0 IRKT} - {1995472800 32400 1 IRKST} - {2014221600 28800 0 IRKT} - {2026922400 32400 1 IRKST} - {2045671200 28800 0 IRKT} - {2058372000 32400 1 IRKST} - {2077120800 28800 0 IRKT} - {2090426400 32400 1 IRKST} - {2108570400 28800 0 IRKT} - {2121876000 32400 1 IRKST} - {2140020000 28800 0 IRKT} - {2153325600 32400 1 IRKST} - {2172074400 28800 0 IRKT} - {2184775200 32400 1 IRKST} - {2203524000 28800 0 IRKT} - {2216224800 32400 1 IRKST} - {2234973600 28800 0 IRKT} - {2248279200 32400 1 IRKST} - {2266423200 28800 0 IRKT} - {2279728800 32400 1 IRKST} - {2297872800 28800 0 IRKT} - {2311178400 32400 1 IRKST} - {2329322400 28800 0 IRKT} - {2342628000 32400 1 IRKST} - {2361376800 28800 0 IRKT} - {2374077600 32400 1 IRKST} - {2392826400 28800 0 IRKT} - {2405527200 32400 1 IRKST} - {2424276000 28800 0 IRKT} - {2437581600 32400 1 IRKST} - {2455725600 28800 0 IRKT} - {2469031200 32400 1 IRKST} - {2487175200 28800 0 IRKT} - {2500480800 32400 1 IRKST} - {2519229600 28800 0 IRKT} - {2531930400 32400 1 IRKST} - {2550679200 28800 0 IRKT} - {2563380000 32400 1 IRKST} - {2582128800 28800 0 IRKT} - {2595434400 32400 1 IRKST} - {2613578400 28800 0 IRKT} - {2626884000 32400 1 IRKST} - {2645028000 28800 0 IRKT} - {2658333600 32400 1 IRKST} - {2676477600 28800 0 IRKT} - {2689783200 32400 1 IRKST} - {2708532000 28800 0 IRKT} - {2721232800 32400 1 IRKST} - {2739981600 28800 0 IRKT} - {2752682400 32400 1 IRKST} - {2771431200 28800 0 IRKT} - {2784736800 32400 1 IRKST} - {2802880800 28800 0 IRKT} - {2816186400 32400 1 IRKST} - {2834330400 28800 0 IRKT} - {2847636000 32400 1 IRKST} - {2866384800 28800 0 IRKT} - {2879085600 32400 1 IRKST} - {2897834400 28800 0 IRKT} - {2910535200 32400 1 IRKST} - {2929284000 28800 0 IRKT} - {2941984800 32400 1 IRKST} - {2960733600 28800 0 IRKT} - {2974039200 32400 1 IRKST} - {2992183200 28800 0 IRKT} - {3005488800 32400 1 IRKST} - {3023632800 28800 0 IRKT} - {3036938400 32400 1 IRKST} - {3055687200 28800 0 IRKT} - {3068388000 32400 1 IRKST} - {3087136800 28800 0 IRKT} - {3099837600 32400 1 IRKST} - {3118586400 28800 0 IRKT} - {3131892000 32400 1 IRKST} - {3150036000 28800 0 IRKT} - {3163341600 32400 1 IRKST} - {3181485600 28800 0 IRKT} - {3194791200 32400 1 IRKST} - {3212935200 28800 0 IRKT} - {3226240800 32400 1 IRKST} - {3244989600 28800 0 IRKT} - {3257690400 32400 1 IRKST} - {3276439200 28800 0 IRKT} - {3289140000 32400 1 IRKST} - {3307888800 28800 0 IRKT} - {3321194400 32400 1 IRKST} - {3339338400 28800 0 IRKT} - {3352644000 32400 1 IRKST} - {3370788000 28800 0 IRKT} - {3384093600 32400 1 IRKST} - {3402842400 28800 0 IRKT} - {3415543200 32400 1 IRKST} - {3434292000 28800 0 IRKT} - {3446992800 32400 1 IRKST} - {3465741600 28800 0 IRKT} - {3479047200 32400 1 IRKST} - {3497191200 28800 0 IRKT} - {3510496800 32400 1 IRKST} - {3528640800 28800 0 IRKT} - {3541946400 32400 1 IRKST} - {3560090400 28800 0 IRKT} - {3573396000 32400 1 IRKST} - {3592144800 28800 0 IRKT} - {3604845600 32400 1 IRKST} - {3623594400 28800 0 IRKT} - {3636295200 32400 1 IRKST} - {3655044000 28800 0 IRKT} - {3668349600 32400 1 IRKST} - {3686493600 28800 0 IRKT} - {3699799200 32400 1 IRKST} - {3717943200 28800 0 IRKT} - {3731248800 32400 1 IRKST} - {3749997600 28800 0 IRKT} - {3762698400 32400 1 IRKST} - {3781447200 28800 0 IRKT} - {3794148000 32400 1 IRKST} - {3812896800 28800 0 IRKT} - {3825597600 32400 1 IRKST} - {3844346400 28800 0 IRKT} - {3857652000 32400 1 IRKST} - {3875796000 28800 0 IRKT} - {3889101600 32400 1 IRKST} - {3907245600 28800 0 IRKT} - {3920551200 32400 1 IRKST} - {3939300000 28800 0 IRKT} - {3952000800 32400 1 IRKST} - {3970749600 28800 0 IRKT} - {3983450400 32400 1 IRKST} - {4002199200 28800 0 IRKT} - {4015504800 32400 1 IRKST} - {4033648800 28800 0 IRKT} - {4046954400 32400 1 IRKST} - {4065098400 28800 0 IRKT} - {4078404000 32400 1 IRKST} - {4096548000 28800 0 IRKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Irkutsk) { + {-9223372036854775808 25040 0 LMT} + {-2840165840 25040 0 IMT} + {-1575874640 25200 0 IRKT} + {-1247554800 28800 0 IRKMMTT} + {354902400 32400 1 IRKST} + {370710000 28800 0 IRKT} + {386438400 32400 1 IRKST} + {402246000 28800 0 IRKT} + {417974400 32400 1 IRKST} + {433782000 28800 0 IRKT} + {449596800 32400 1 IRKST} + {465328800 28800 0 IRKT} + {481053600 32400 1 IRKST} + {496778400 28800 0 IRKT} + {512503200 32400 1 IRKST} + {528228000 28800 0 IRKT} + {543952800 32400 1 IRKST} + {559677600 28800 0 IRKT} + {575402400 32400 1 IRKST} + {591127200 28800 0 IRKT} + {606852000 32400 1 IRKST} + {622576800 28800 0 IRKT} + {638301600 32400 1 IRKST} + {654631200 28800 0 IRKT} + {670356000 25200 0 IRKMMTT} + {670359600 28800 1 IRKST} + {686084400 25200 0 IRKT} + {695761200 28800 0 IRKMMTT} + {701794800 32400 1 IRKST} + {717516000 28800 0 IRKT} + {733255200 32400 1 IRKST} + {748980000 28800 0 IRKT} + {764704800 32400 1 IRKST} + {780429600 28800 0 IRKT} + {796154400 32400 1 IRKST} + {811879200 28800 0 IRKT} + {828208800 32400 1 IRKST} + {846352800 28800 0 IRKT} + {859658400 32400 1 IRKST} + {877802400 28800 0 IRKT} + {891108000 32400 1 IRKST} + {909252000 28800 0 IRKT} + {922557600 32400 1 IRKST} + {941306400 28800 0 IRKT} + {954007200 32400 1 IRKST} + {972756000 28800 0 IRKT} + {985456800 32400 1 IRKST} + {1004205600 28800 0 IRKT} + {1017511200 32400 1 IRKST} + {1035655200 28800 0 IRKT} + {1048960800 32400 1 IRKST} + {1067104800 28800 0 IRKT} + {1080410400 32400 1 IRKST} + {1099159200 28800 0 IRKT} + {1111860000 32400 1 IRKST} + {1130608800 28800 0 IRKT} + {1143309600 32400 1 IRKST} + {1162058400 28800 0 IRKT} + {1174759200 32400 1 IRKST} + {1193508000 28800 0 IRKT} + {1206813600 32400 1 IRKST} + {1224957600 28800 0 IRKT} + {1238263200 32400 1 IRKST} + {1256407200 28800 0 IRKT} + {1269712800 32400 1 IRKST} + {1288461600 28800 0 IRKT} + {1301162400 32400 1 IRKST} + {1319911200 28800 0 IRKT} + {1332612000 32400 1 IRKST} + {1351360800 28800 0 IRKT} + {1364666400 32400 1 IRKST} + {1382810400 28800 0 IRKT} + {1396116000 32400 1 IRKST} + {1414260000 28800 0 IRKT} + {1427565600 32400 1 IRKST} + {1445709600 28800 0 IRKT} + {1459015200 32400 1 IRKST} + {1477764000 28800 0 IRKT} + {1490464800 32400 1 IRKST} + {1509213600 28800 0 IRKT} + {1521914400 32400 1 IRKST} + {1540663200 28800 0 IRKT} + {1553968800 32400 1 IRKST} + {1572112800 28800 0 IRKT} + {1585418400 32400 1 IRKST} + {1603562400 28800 0 IRKT} + {1616868000 32400 1 IRKST} + {1635616800 28800 0 IRKT} + {1648317600 32400 1 IRKST} + {1667066400 28800 0 IRKT} + {1679767200 32400 1 IRKST} + {1698516000 28800 0 IRKT} + {1711821600 32400 1 IRKST} + {1729965600 28800 0 IRKT} + {1743271200 32400 1 IRKST} + {1761415200 28800 0 IRKT} + {1774720800 32400 1 IRKST} + {1792864800 28800 0 IRKT} + {1806170400 32400 1 IRKST} + {1824919200 28800 0 IRKT} + {1837620000 32400 1 IRKST} + {1856368800 28800 0 IRKT} + {1869069600 32400 1 IRKST} + {1887818400 28800 0 IRKT} + {1901124000 32400 1 IRKST} + {1919268000 28800 0 IRKT} + {1932573600 32400 1 IRKST} + {1950717600 28800 0 IRKT} + {1964023200 32400 1 IRKST} + {1982772000 28800 0 IRKT} + {1995472800 32400 1 IRKST} + {2014221600 28800 0 IRKT} + {2026922400 32400 1 IRKST} + {2045671200 28800 0 IRKT} + {2058372000 32400 1 IRKST} + {2077120800 28800 0 IRKT} + {2090426400 32400 1 IRKST} + {2108570400 28800 0 IRKT} + {2121876000 32400 1 IRKST} + {2140020000 28800 0 IRKT} + {2153325600 32400 1 IRKST} + {2172074400 28800 0 IRKT} + {2184775200 32400 1 IRKST} + {2203524000 28800 0 IRKT} + {2216224800 32400 1 IRKST} + {2234973600 28800 0 IRKT} + {2248279200 32400 1 IRKST} + {2266423200 28800 0 IRKT} + {2279728800 32400 1 IRKST} + {2297872800 28800 0 IRKT} + {2311178400 32400 1 IRKST} + {2329322400 28800 0 IRKT} + {2342628000 32400 1 IRKST} + {2361376800 28800 0 IRKT} + {2374077600 32400 1 IRKST} + {2392826400 28800 0 IRKT} + {2405527200 32400 1 IRKST} + {2424276000 28800 0 IRKT} + {2437581600 32400 1 IRKST} + {2455725600 28800 0 IRKT} + {2469031200 32400 1 IRKST} + {2487175200 28800 0 IRKT} + {2500480800 32400 1 IRKST} + {2519229600 28800 0 IRKT} + {2531930400 32400 1 IRKST} + {2550679200 28800 0 IRKT} + {2563380000 32400 1 IRKST} + {2582128800 28800 0 IRKT} + {2595434400 32400 1 IRKST} + {2613578400 28800 0 IRKT} + {2626884000 32400 1 IRKST} + {2645028000 28800 0 IRKT} + {2658333600 32400 1 IRKST} + {2676477600 28800 0 IRKT} + {2689783200 32400 1 IRKST} + {2708532000 28800 0 IRKT} + {2721232800 32400 1 IRKST} + {2739981600 28800 0 IRKT} + {2752682400 32400 1 IRKST} + {2771431200 28800 0 IRKT} + {2784736800 32400 1 IRKST} + {2802880800 28800 0 IRKT} + {2816186400 32400 1 IRKST} + {2834330400 28800 0 IRKT} + {2847636000 32400 1 IRKST} + {2866384800 28800 0 IRKT} + {2879085600 32400 1 IRKST} + {2897834400 28800 0 IRKT} + {2910535200 32400 1 IRKST} + {2929284000 28800 0 IRKT} + {2941984800 32400 1 IRKST} + {2960733600 28800 0 IRKT} + {2974039200 32400 1 IRKST} + {2992183200 28800 0 IRKT} + {3005488800 32400 1 IRKST} + {3023632800 28800 0 IRKT} + {3036938400 32400 1 IRKST} + {3055687200 28800 0 IRKT} + {3068388000 32400 1 IRKST} + {3087136800 28800 0 IRKT} + {3099837600 32400 1 IRKST} + {3118586400 28800 0 IRKT} + {3131892000 32400 1 IRKST} + {3150036000 28800 0 IRKT} + {3163341600 32400 1 IRKST} + {3181485600 28800 0 IRKT} + {3194791200 32400 1 IRKST} + {3212935200 28800 0 IRKT} + {3226240800 32400 1 IRKST} + {3244989600 28800 0 IRKT} + {3257690400 32400 1 IRKST} + {3276439200 28800 0 IRKT} + {3289140000 32400 1 IRKST} + {3307888800 28800 0 IRKT} + {3321194400 32400 1 IRKST} + {3339338400 28800 0 IRKT} + {3352644000 32400 1 IRKST} + {3370788000 28800 0 IRKT} + {3384093600 32400 1 IRKST} + {3402842400 28800 0 IRKT} + {3415543200 32400 1 IRKST} + {3434292000 28800 0 IRKT} + {3446992800 32400 1 IRKST} + {3465741600 28800 0 IRKT} + {3479047200 32400 1 IRKST} + {3497191200 28800 0 IRKT} + {3510496800 32400 1 IRKST} + {3528640800 28800 0 IRKT} + {3541946400 32400 1 IRKST} + {3560090400 28800 0 IRKT} + {3573396000 32400 1 IRKST} + {3592144800 28800 0 IRKT} + {3604845600 32400 1 IRKST} + {3623594400 28800 0 IRKT} + {3636295200 32400 1 IRKST} + {3655044000 28800 0 IRKT} + {3668349600 32400 1 IRKST} + {3686493600 28800 0 IRKT} + {3699799200 32400 1 IRKST} + {3717943200 28800 0 IRKT} + {3731248800 32400 1 IRKST} + {3749997600 28800 0 IRKT} + {3762698400 32400 1 IRKST} + {3781447200 28800 0 IRKT} + {3794148000 32400 1 IRKST} + {3812896800 28800 0 IRKT} + {3825597600 32400 1 IRKST} + {3844346400 28800 0 IRKT} + {3857652000 32400 1 IRKST} + {3875796000 28800 0 IRKT} + {3889101600 32400 1 IRKST} + {3907245600 28800 0 IRKT} + {3920551200 32400 1 IRKST} + {3939300000 28800 0 IRKT} + {3952000800 32400 1 IRKST} + {3970749600 28800 0 IRKT} + {3983450400 32400 1 IRKST} + {4002199200 28800 0 IRKT} + {4015504800 32400 1 IRKST} + {4033648800 28800 0 IRKT} + {4046954400 32400 1 IRKST} + {4065098400 28800 0 IRKT} + {4078404000 32400 1 IRKST} + {4096548000 28800 0 IRKT} +} diff --git a/library/tzdata/Asia/Istanbul b/library/tzdata/Asia/Istanbul index 2547496..85b3fc2 100644 --- a/library/tzdata/Asia/Istanbul +++ b/library/tzdata/Asia/Istanbul @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Istanbul)]} { - LoadTimeZoneFile Europe/Istanbul -} -set TZData(:Asia/Istanbul) $TZData(:Europe/Istanbul) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Istanbul)]} { + LoadTimeZoneFile Europe/Istanbul +} +set TZData(:Asia/Istanbul) $TZData(:Europe/Istanbul) diff --git a/library/tzdata/Asia/Jakarta b/library/tzdata/Asia/Jakarta index 59bb57a..27033e8 100644 --- a/library/tzdata/Asia/Jakarta +++ b/library/tzdata/Asia/Jakarta @@ -1,13 +1,13 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Jakarta) { - {-9223372036854775808 25632 0 LMT} - {-3231299232 25632 0 JMT} - {-1451719200 26400 0 JAVT} - {-1172906400 27000 0 WIT} - {-876641400 32400 0 JST} - {-766054800 27000 0 WIT} - {-683883000 28800 0 WIT} - {-620812800 27000 0 WIT} - {-189415800 25200 0 WIT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Jakarta) { + {-9223372036854775808 25632 0 LMT} + {-3231299232 25632 0 JMT} + {-1451719200 26400 0 JAVT} + {-1172906400 27000 0 WIT} + {-876641400 32400 0 JST} + {-766054800 27000 0 WIT} + {-683883000 28800 0 WIT} + {-620812800 27000 0 WIT} + {-189415800 25200 0 WIT} +} diff --git a/library/tzdata/Asia/Jayapura b/library/tzdata/Asia/Jayapura index efe1ce2..893da8b 100644 --- a/library/tzdata/Asia/Jayapura +++ b/library/tzdata/Asia/Jayapura @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Jayapura) { - {-9223372036854775808 33768 0 LMT} - {-1172913768 32400 0 EIT} - {-799491600 34200 0 CST} - {-189423000 32400 0 EIT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Jayapura) { + {-9223372036854775808 33768 0 LMT} + {-1172913768 32400 0 EIT} + {-799491600 34200 0 CST} + {-189423000 32400 0 EIT} +} diff --git a/library/tzdata/Asia/Jerusalem b/library/tzdata/Asia/Jerusalem index 563b238..48e213d 100644 --- a/library/tzdata/Asia/Jerusalem +++ b/library/tzdata/Asia/Jerusalem @@ -1,148 +1,148 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Jerusalem) { - {-9223372036854775808 8456 0 LMT} - {-2840149256 8440 0 JMT} - {-1641003640 7200 0 IST} - {-933645600 10800 1 IDT} - {-857358000 7200 0 IST} - {-844300800 10800 1 IDT} - {-825822000 7200 0 IST} - {-812685600 10800 1 IDT} - {-794199600 7200 0 IST} - {-779853600 10800 1 IDT} - {-762656400 7200 0 IST} - {-748310400 10800 1 IDT} - {-731127600 7200 0 IST} - {-681962400 14400 1 IDDT} - {-673243200 10800 1 IDT} - {-667962000 7200 0 IST} - {-652327200 10800 1 IDT} - {-636426000 7200 0 IST} - {-622087200 10800 1 IDT} - {-608947200 7200 0 IST} - {-591847200 10800 1 IDT} - {-572486400 7200 0 IST} - {-558576000 10800 1 IDT} - {-542851200 7200 0 IST} - {-527731200 10800 1 IDT} - {-514425600 7200 0 IST} - {-490845600 10800 1 IDT} - {-482986800 7200 0 IST} - {-459475200 10800 1 IDT} - {-451537200 7200 0 IST} - {-428551200 10800 1 IDT} - {-418262400 7200 0 IST} - {-400032000 10800 1 IDT} - {-387428400 7200 0 IST} - {142380000 10800 1 IDT} - {150843600 7200 0 IST} - {167176800 10800 1 IDT} - {178664400 7200 0 IST} - {482277600 10800 1 IDT} - {495579600 7200 0 IST} - {516751200 10800 1 IDT} - {526424400 7200 0 IST} - {545436000 10800 1 IDT} - {558478800 7200 0 IST} - {576540000 10800 1 IDT} - {589237200 7200 0 IST} - {609890400 10800 1 IDT} - {620773200 7200 0 IST} - {638316000 10800 1 IDT} - {651618000 7200 0 IST} - {669765600 10800 1 IDT} - {683672400 7200 0 IST} - {701820000 10800 1 IDT} - {715726800 7200 0 IST} - {733701600 10800 1 IDT} - {747176400 7200 0 IST} - {765151200 10800 1 IDT} - {778021200 7200 0 IST} - {796600800 10800 1 IDT} - {810075600 7200 0 IST} - {826840800 10800 1 IDT} - {842821200 7200 0 IST} - {858895200 10800 1 IDT} - {874184400 7200 0 IST} - {890344800 10800 1 IDT} - {905029200 7200 0 IST} - {923011200 10800 1 IDT} - {936313200 7200 0 IST} - {955670400 10800 1 IDT} - {970783200 7200 0 IST} - {986770800 10800 1 IDT} - {1001282400 7200 0 IST} - {1017356400 10800 1 IDT} - {1033941600 7200 0 IST} - {1048806000 10800 1 IDT} - {1065132000 7200 0 IST} - {1081292400 10800 1 IDT} - {1095804000 7200 0 IST} - {1112313600 10800 1 IDT} - {1128812400 7200 0 IST} - {1143763200 10800 1 IDT} - {1159657200 7200 0 IST} - {1175212800 10800 1 IDT} - {1189897200 7200 0 IST} - {1206662400 10800 1 IDT} - {1223161200 7200 0 IST} - {1238112000 10800 1 IDT} - {1254006000 7200 0 IST} - {1269561600 10800 1 IDT} - {1284246000 7200 0 IST} - {1301616000 10800 1 IDT} - {1317510000 7200 0 IST} - {1333065600 10800 1 IDT} - {1348354800 7200 0 IST} - {1364515200 10800 1 IDT} - {1378594800 7200 0 IST} - {1395964800 10800 1 IDT} - {1411858800 7200 0 IST} - {1427414400 10800 1 IDT} - {1442703600 7200 0 IST} - {1459468800 10800 1 IDT} - {1475967600 7200 0 IST} - {1490918400 10800 1 IDT} - {1506207600 7200 0 IST} - {1522368000 10800 1 IDT} - {1537052400 7200 0 IST} - {1553817600 10800 1 IDT} - {1570316400 7200 0 IST} - {1585267200 10800 1 IDT} - {1601161200 7200 0 IST} - {1616716800 10800 1 IDT} - {1631401200 7200 0 IST} - {1648771200 10800 1 IDT} - {1664665200 7200 0 IST} - {1680220800 10800 1 IDT} - {1695510000 7200 0 IST} - {1711670400 10800 1 IDT} - {1728169200 7200 0 IST} - {1743120000 10800 1 IDT} - {1759014000 7200 0 IST} - {1774569600 10800 1 IDT} - {1789858800 7200 0 IST} - {1806019200 10800 1 IDT} - {1823122800 7200 0 IST} - {1838073600 10800 1 IDT} - {1853362800 7200 0 IST} - {1869523200 10800 1 IDT} - {1884207600 7200 0 IST} - {1900972800 10800 1 IDT} - {1917471600 7200 0 IST} - {1932422400 10800 1 IDT} - {1947711600 7200 0 IST} - {1963872000 10800 1 IDT} - {1978556400 7200 0 IST} - {1995926400 10800 1 IDT} - {2011820400 7200 0 IST} - {2027376000 10800 1 IDT} - {2042060400 7200 0 IST} - {2058825600 10800 1 IDT} - {2075324400 7200 0 IST} - {2090275200 10800 1 IDT} - {2106169200 7200 0 IST} - {2121724800 10800 1 IDT} - {2136409200 7200 0 IST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Jerusalem) { + {-9223372036854775808 8456 0 LMT} + {-2840149256 8440 0 JMT} + {-1641003640 7200 0 IST} + {-933645600 10800 1 IDT} + {-857358000 7200 0 IST} + {-844300800 10800 1 IDT} + {-825822000 7200 0 IST} + {-812685600 10800 1 IDT} + {-794199600 7200 0 IST} + {-779853600 10800 1 IDT} + {-762656400 7200 0 IST} + {-748310400 10800 1 IDT} + {-731127600 7200 0 IST} + {-681962400 14400 1 IDDT} + {-673243200 10800 1 IDT} + {-667962000 7200 0 IST} + {-652327200 10800 1 IDT} + {-636426000 7200 0 IST} + {-622087200 10800 1 IDT} + {-608947200 7200 0 IST} + {-591847200 10800 1 IDT} + {-572486400 7200 0 IST} + {-558576000 10800 1 IDT} + {-542851200 7200 0 IST} + {-527731200 10800 1 IDT} + {-514425600 7200 0 IST} + {-490845600 10800 1 IDT} + {-482986800 7200 0 IST} + {-459475200 10800 1 IDT} + {-451537200 7200 0 IST} + {-428551200 10800 1 IDT} + {-418262400 7200 0 IST} + {-400032000 10800 1 IDT} + {-387428400 7200 0 IST} + {142380000 10800 1 IDT} + {150843600 7200 0 IST} + {167176800 10800 1 IDT} + {178664400 7200 0 IST} + {482277600 10800 1 IDT} + {495579600 7200 0 IST} + {516751200 10800 1 IDT} + {526424400 7200 0 IST} + {545436000 10800 1 IDT} + {558478800 7200 0 IST} + {576540000 10800 1 IDT} + {589237200 7200 0 IST} + {609890400 10800 1 IDT} + {620773200 7200 0 IST} + {638316000 10800 1 IDT} + {651618000 7200 0 IST} + {669765600 10800 1 IDT} + {683672400 7200 0 IST} + {701820000 10800 1 IDT} + {715726800 7200 0 IST} + {733701600 10800 1 IDT} + {747176400 7200 0 IST} + {765151200 10800 1 IDT} + {778021200 7200 0 IST} + {796600800 10800 1 IDT} + {810075600 7200 0 IST} + {826840800 10800 1 IDT} + {842821200 7200 0 IST} + {858895200 10800 1 IDT} + {874184400 7200 0 IST} + {890344800 10800 1 IDT} + {905029200 7200 0 IST} + {923011200 10800 1 IDT} + {936313200 7200 0 IST} + {955670400 10800 1 IDT} + {970783200 7200 0 IST} + {986770800 10800 1 IDT} + {1001282400 7200 0 IST} + {1017356400 10800 1 IDT} + {1033941600 7200 0 IST} + {1048806000 10800 1 IDT} + {1065132000 7200 0 IST} + {1081292400 10800 1 IDT} + {1095804000 7200 0 IST} + {1112313600 10800 1 IDT} + {1128812400 7200 0 IST} + {1143763200 10800 1 IDT} + {1159657200 7200 0 IST} + {1175212800 10800 1 IDT} + {1189897200 7200 0 IST} + {1206662400 10800 1 IDT} + {1223161200 7200 0 IST} + {1238112000 10800 1 IDT} + {1254006000 7200 0 IST} + {1269561600 10800 1 IDT} + {1284246000 7200 0 IST} + {1301616000 10800 1 IDT} + {1317510000 7200 0 IST} + {1333065600 10800 1 IDT} + {1348354800 7200 0 IST} + {1364515200 10800 1 IDT} + {1378594800 7200 0 IST} + {1395964800 10800 1 IDT} + {1411858800 7200 0 IST} + {1427414400 10800 1 IDT} + {1442703600 7200 0 IST} + {1459468800 10800 1 IDT} + {1475967600 7200 0 IST} + {1490918400 10800 1 IDT} + {1506207600 7200 0 IST} + {1522368000 10800 1 IDT} + {1537052400 7200 0 IST} + {1553817600 10800 1 IDT} + {1570316400 7200 0 IST} + {1585267200 10800 1 IDT} + {1601161200 7200 0 IST} + {1616716800 10800 1 IDT} + {1631401200 7200 0 IST} + {1648771200 10800 1 IDT} + {1664665200 7200 0 IST} + {1680220800 10800 1 IDT} + {1695510000 7200 0 IST} + {1711670400 10800 1 IDT} + {1728169200 7200 0 IST} + {1743120000 10800 1 IDT} + {1759014000 7200 0 IST} + {1774569600 10800 1 IDT} + {1789858800 7200 0 IST} + {1806019200 10800 1 IDT} + {1823122800 7200 0 IST} + {1838073600 10800 1 IDT} + {1853362800 7200 0 IST} + {1869523200 10800 1 IDT} + {1884207600 7200 0 IST} + {1900972800 10800 1 IDT} + {1917471600 7200 0 IST} + {1932422400 10800 1 IDT} + {1947711600 7200 0 IST} + {1963872000 10800 1 IDT} + {1978556400 7200 0 IST} + {1995926400 10800 1 IDT} + {2011820400 7200 0 IST} + {2027376000 10800 1 IDT} + {2042060400 7200 0 IST} + {2058825600 10800 1 IDT} + {2075324400 7200 0 IST} + {2090275200 10800 1 IDT} + {2106169200 7200 0 IST} + {2121724800 10800 1 IDT} + {2136409200 7200 0 IST} +} diff --git a/library/tzdata/Asia/Kabul b/library/tzdata/Asia/Kabul index 336d901..33d7282 100644 --- a/library/tzdata/Asia/Kabul +++ b/library/tzdata/Asia/Kabul @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kabul) { - {-9223372036854775808 16608 0 LMT} - {-2524538208 14400 0 AFT} - {-788932800 16200 0 AFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kabul) { + {-9223372036854775808 16608 0 LMT} + {-2524538208 14400 0 AFT} + {-788932800 16200 0 AFT} +} diff --git a/library/tzdata/Asia/Kamchatka b/library/tzdata/Asia/Kamchatka index 3fff12b..a390701 100644 --- a/library/tzdata/Asia/Kamchatka +++ b/library/tzdata/Asia/Kamchatka @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kamchatka) { - {-9223372036854775808 38076 0 LMT} - {-1487759676 39600 0 PETT} - {-1247569200 43200 0 PETMMTT} - {354888000 46800 1 PETST} - {370695600 43200 0 PETT} - {386424000 46800 1 PETST} - {402231600 43200 0 PETT} - {417960000 46800 1 PETST} - {433767600 43200 0 PETT} - {449582400 46800 1 PETST} - {465314400 43200 0 PETT} - {481039200 46800 1 PETST} - {496764000 43200 0 PETT} - {512488800 46800 1 PETST} - {528213600 43200 0 PETT} - {543938400 46800 1 PETST} - {559663200 43200 0 PETT} - {575388000 46800 1 PETST} - {591112800 43200 0 PETT} - {606837600 46800 1 PETST} - {622562400 43200 0 PETT} - {638287200 46800 1 PETST} - {654616800 43200 0 PETT} - {670341600 39600 0 PETMMTT} - {670345200 43200 1 PETST} - {686070000 39600 0 PETT} - {695746800 43200 0 PETMMTT} - {701780400 46800 1 PETST} - {717501600 43200 0 PETT} - {733240800 46800 1 PETST} - {748965600 43200 0 PETT} - {764690400 46800 1 PETST} - {780415200 43200 0 PETT} - {796140000 46800 1 PETST} - {811864800 43200 0 PETT} - {828194400 46800 1 PETST} - {846338400 43200 0 PETT} - {859644000 46800 1 PETST} - {877788000 43200 0 PETT} - {891093600 46800 1 PETST} - {909237600 43200 0 PETT} - {922543200 46800 1 PETST} - {941292000 43200 0 PETT} - {953992800 46800 1 PETST} - {972741600 43200 0 PETT} - {985442400 46800 1 PETST} - {1004191200 43200 0 PETT} - {1017496800 46800 1 PETST} - {1035640800 43200 0 PETT} - {1048946400 46800 1 PETST} - {1067090400 43200 0 PETT} - {1080396000 46800 1 PETST} - {1099144800 43200 0 PETT} - {1111845600 46800 1 PETST} - {1130594400 43200 0 PETT} - {1143295200 46800 1 PETST} - {1162044000 43200 0 PETT} - {1174744800 46800 1 PETST} - {1193493600 43200 0 PETT} - {1206799200 46800 1 PETST} - {1224943200 43200 0 PETT} - {1238248800 46800 1 PETST} - {1256392800 43200 0 PETT} - {1269698400 46800 1 PETST} - {1288447200 43200 0 PETT} - {1301148000 46800 1 PETST} - {1319896800 43200 0 PETT} - {1332597600 46800 1 PETST} - {1351346400 43200 0 PETT} - {1364652000 46800 1 PETST} - {1382796000 43200 0 PETT} - {1396101600 46800 1 PETST} - {1414245600 43200 0 PETT} - {1427551200 46800 1 PETST} - {1445695200 43200 0 PETT} - {1459000800 46800 1 PETST} - {1477749600 43200 0 PETT} - {1490450400 46800 1 PETST} - {1509199200 43200 0 PETT} - {1521900000 46800 1 PETST} - {1540648800 43200 0 PETT} - {1553954400 46800 1 PETST} - {1572098400 43200 0 PETT} - {1585404000 46800 1 PETST} - {1603548000 43200 0 PETT} - {1616853600 46800 1 PETST} - {1635602400 43200 0 PETT} - {1648303200 46800 1 PETST} - {1667052000 43200 0 PETT} - {1679752800 46800 1 PETST} - {1698501600 43200 0 PETT} - {1711807200 46800 1 PETST} - {1729951200 43200 0 PETT} - {1743256800 46800 1 PETST} - {1761400800 43200 0 PETT} - {1774706400 46800 1 PETST} - {1792850400 43200 0 PETT} - {1806156000 46800 1 PETST} - {1824904800 43200 0 PETT} - {1837605600 46800 1 PETST} - {1856354400 43200 0 PETT} - {1869055200 46800 1 PETST} - {1887804000 43200 0 PETT} - {1901109600 46800 1 PETST} - {1919253600 43200 0 PETT} - {1932559200 46800 1 PETST} - {1950703200 43200 0 PETT} - {1964008800 46800 1 PETST} - {1982757600 43200 0 PETT} - {1995458400 46800 1 PETST} - {2014207200 43200 0 PETT} - {2026908000 46800 1 PETST} - {2045656800 43200 0 PETT} - {2058357600 46800 1 PETST} - {2077106400 43200 0 PETT} - {2090412000 46800 1 PETST} - {2108556000 43200 0 PETT} - {2121861600 46800 1 PETST} - {2140005600 43200 0 PETT} - {2153311200 46800 1 PETST} - {2172060000 43200 0 PETT} - {2184760800 46800 1 PETST} - {2203509600 43200 0 PETT} - {2216210400 46800 1 PETST} - {2234959200 43200 0 PETT} - {2248264800 46800 1 PETST} - {2266408800 43200 0 PETT} - {2279714400 46800 1 PETST} - {2297858400 43200 0 PETT} - {2311164000 46800 1 PETST} - {2329308000 43200 0 PETT} - {2342613600 46800 1 PETST} - {2361362400 43200 0 PETT} - {2374063200 46800 1 PETST} - {2392812000 43200 0 PETT} - {2405512800 46800 1 PETST} - {2424261600 43200 0 PETT} - {2437567200 46800 1 PETST} - {2455711200 43200 0 PETT} - {2469016800 46800 1 PETST} - {2487160800 43200 0 PETT} - {2500466400 46800 1 PETST} - {2519215200 43200 0 PETT} - {2531916000 46800 1 PETST} - {2550664800 43200 0 PETT} - {2563365600 46800 1 PETST} - {2582114400 43200 0 PETT} - {2595420000 46800 1 PETST} - {2613564000 43200 0 PETT} - {2626869600 46800 1 PETST} - {2645013600 43200 0 PETT} - {2658319200 46800 1 PETST} - {2676463200 43200 0 PETT} - {2689768800 46800 1 PETST} - {2708517600 43200 0 PETT} - {2721218400 46800 1 PETST} - {2739967200 43200 0 PETT} - {2752668000 46800 1 PETST} - {2771416800 43200 0 PETT} - {2784722400 46800 1 PETST} - {2802866400 43200 0 PETT} - {2816172000 46800 1 PETST} - {2834316000 43200 0 PETT} - {2847621600 46800 1 PETST} - {2866370400 43200 0 PETT} - {2879071200 46800 1 PETST} - {2897820000 43200 0 PETT} - {2910520800 46800 1 PETST} - {2929269600 43200 0 PETT} - {2941970400 46800 1 PETST} - {2960719200 43200 0 PETT} - {2974024800 46800 1 PETST} - {2992168800 43200 0 PETT} - {3005474400 46800 1 PETST} - {3023618400 43200 0 PETT} - {3036924000 46800 1 PETST} - {3055672800 43200 0 PETT} - {3068373600 46800 1 PETST} - {3087122400 43200 0 PETT} - {3099823200 46800 1 PETST} - {3118572000 43200 0 PETT} - {3131877600 46800 1 PETST} - {3150021600 43200 0 PETT} - {3163327200 46800 1 PETST} - {3181471200 43200 0 PETT} - {3194776800 46800 1 PETST} - {3212920800 43200 0 PETT} - {3226226400 46800 1 PETST} - {3244975200 43200 0 PETT} - {3257676000 46800 1 PETST} - {3276424800 43200 0 PETT} - {3289125600 46800 1 PETST} - {3307874400 43200 0 PETT} - {3321180000 46800 1 PETST} - {3339324000 43200 0 PETT} - {3352629600 46800 1 PETST} - {3370773600 43200 0 PETT} - {3384079200 46800 1 PETST} - {3402828000 43200 0 PETT} - {3415528800 46800 1 PETST} - {3434277600 43200 0 PETT} - {3446978400 46800 1 PETST} - {3465727200 43200 0 PETT} - {3479032800 46800 1 PETST} - {3497176800 43200 0 PETT} - {3510482400 46800 1 PETST} - {3528626400 43200 0 PETT} - {3541932000 46800 1 PETST} - {3560076000 43200 0 PETT} - {3573381600 46800 1 PETST} - {3592130400 43200 0 PETT} - {3604831200 46800 1 PETST} - {3623580000 43200 0 PETT} - {3636280800 46800 1 PETST} - {3655029600 43200 0 PETT} - {3668335200 46800 1 PETST} - {3686479200 43200 0 PETT} - {3699784800 46800 1 PETST} - {3717928800 43200 0 PETT} - {3731234400 46800 1 PETST} - {3749983200 43200 0 PETT} - {3762684000 46800 1 PETST} - {3781432800 43200 0 PETT} - {3794133600 46800 1 PETST} - {3812882400 43200 0 PETT} - {3825583200 46800 1 PETST} - {3844332000 43200 0 PETT} - {3857637600 46800 1 PETST} - {3875781600 43200 0 PETT} - {3889087200 46800 1 PETST} - {3907231200 43200 0 PETT} - {3920536800 46800 1 PETST} - {3939285600 43200 0 PETT} - {3951986400 46800 1 PETST} - {3970735200 43200 0 PETT} - {3983436000 46800 1 PETST} - {4002184800 43200 0 PETT} - {4015490400 46800 1 PETST} - {4033634400 43200 0 PETT} - {4046940000 46800 1 PETST} - {4065084000 43200 0 PETT} - {4078389600 46800 1 PETST} - {4096533600 43200 0 PETT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kamchatka) { + {-9223372036854775808 38076 0 LMT} + {-1487759676 39600 0 PETT} + {-1247569200 43200 0 PETMMTT} + {354888000 46800 1 PETST} + {370695600 43200 0 PETT} + {386424000 46800 1 PETST} + {402231600 43200 0 PETT} + {417960000 46800 1 PETST} + {433767600 43200 0 PETT} + {449582400 46800 1 PETST} + {465314400 43200 0 PETT} + {481039200 46800 1 PETST} + {496764000 43200 0 PETT} + {512488800 46800 1 PETST} + {528213600 43200 0 PETT} + {543938400 46800 1 PETST} + {559663200 43200 0 PETT} + {575388000 46800 1 PETST} + {591112800 43200 0 PETT} + {606837600 46800 1 PETST} + {622562400 43200 0 PETT} + {638287200 46800 1 PETST} + {654616800 43200 0 PETT} + {670341600 39600 0 PETMMTT} + {670345200 43200 1 PETST} + {686070000 39600 0 PETT} + {695746800 43200 0 PETMMTT} + {701780400 46800 1 PETST} + {717501600 43200 0 PETT} + {733240800 46800 1 PETST} + {748965600 43200 0 PETT} + {764690400 46800 1 PETST} + {780415200 43200 0 PETT} + {796140000 46800 1 PETST} + {811864800 43200 0 PETT} + {828194400 46800 1 PETST} + {846338400 43200 0 PETT} + {859644000 46800 1 PETST} + {877788000 43200 0 PETT} + {891093600 46800 1 PETST} + {909237600 43200 0 PETT} + {922543200 46800 1 PETST} + {941292000 43200 0 PETT} + {953992800 46800 1 PETST} + {972741600 43200 0 PETT} + {985442400 46800 1 PETST} + {1004191200 43200 0 PETT} + {1017496800 46800 1 PETST} + {1035640800 43200 0 PETT} + {1048946400 46800 1 PETST} + {1067090400 43200 0 PETT} + {1080396000 46800 1 PETST} + {1099144800 43200 0 PETT} + {1111845600 46800 1 PETST} + {1130594400 43200 0 PETT} + {1143295200 46800 1 PETST} + {1162044000 43200 0 PETT} + {1174744800 46800 1 PETST} + {1193493600 43200 0 PETT} + {1206799200 46800 1 PETST} + {1224943200 43200 0 PETT} + {1238248800 46800 1 PETST} + {1256392800 43200 0 PETT} + {1269698400 46800 1 PETST} + {1288447200 43200 0 PETT} + {1301148000 46800 1 PETST} + {1319896800 43200 0 PETT} + {1332597600 46800 1 PETST} + {1351346400 43200 0 PETT} + {1364652000 46800 1 PETST} + {1382796000 43200 0 PETT} + {1396101600 46800 1 PETST} + {1414245600 43200 0 PETT} + {1427551200 46800 1 PETST} + {1445695200 43200 0 PETT} + {1459000800 46800 1 PETST} + {1477749600 43200 0 PETT} + {1490450400 46800 1 PETST} + {1509199200 43200 0 PETT} + {1521900000 46800 1 PETST} + {1540648800 43200 0 PETT} + {1553954400 46800 1 PETST} + {1572098400 43200 0 PETT} + {1585404000 46800 1 PETST} + {1603548000 43200 0 PETT} + {1616853600 46800 1 PETST} + {1635602400 43200 0 PETT} + {1648303200 46800 1 PETST} + {1667052000 43200 0 PETT} + {1679752800 46800 1 PETST} + {1698501600 43200 0 PETT} + {1711807200 46800 1 PETST} + {1729951200 43200 0 PETT} + {1743256800 46800 1 PETST} + {1761400800 43200 0 PETT} + {1774706400 46800 1 PETST} + {1792850400 43200 0 PETT} + {1806156000 46800 1 PETST} + {1824904800 43200 0 PETT} + {1837605600 46800 1 PETST} + {1856354400 43200 0 PETT} + {1869055200 46800 1 PETST} + {1887804000 43200 0 PETT} + {1901109600 46800 1 PETST} + {1919253600 43200 0 PETT} + {1932559200 46800 1 PETST} + {1950703200 43200 0 PETT} + {1964008800 46800 1 PETST} + {1982757600 43200 0 PETT} + {1995458400 46800 1 PETST} + {2014207200 43200 0 PETT} + {2026908000 46800 1 PETST} + {2045656800 43200 0 PETT} + {2058357600 46800 1 PETST} + {2077106400 43200 0 PETT} + {2090412000 46800 1 PETST} + {2108556000 43200 0 PETT} + {2121861600 46800 1 PETST} + {2140005600 43200 0 PETT} + {2153311200 46800 1 PETST} + {2172060000 43200 0 PETT} + {2184760800 46800 1 PETST} + {2203509600 43200 0 PETT} + {2216210400 46800 1 PETST} + {2234959200 43200 0 PETT} + {2248264800 46800 1 PETST} + {2266408800 43200 0 PETT} + {2279714400 46800 1 PETST} + {2297858400 43200 0 PETT} + {2311164000 46800 1 PETST} + {2329308000 43200 0 PETT} + {2342613600 46800 1 PETST} + {2361362400 43200 0 PETT} + {2374063200 46800 1 PETST} + {2392812000 43200 0 PETT} + {2405512800 46800 1 PETST} + {2424261600 43200 0 PETT} + {2437567200 46800 1 PETST} + {2455711200 43200 0 PETT} + {2469016800 46800 1 PETST} + {2487160800 43200 0 PETT} + {2500466400 46800 1 PETST} + {2519215200 43200 0 PETT} + {2531916000 46800 1 PETST} + {2550664800 43200 0 PETT} + {2563365600 46800 1 PETST} + {2582114400 43200 0 PETT} + {2595420000 46800 1 PETST} + {2613564000 43200 0 PETT} + {2626869600 46800 1 PETST} + {2645013600 43200 0 PETT} + {2658319200 46800 1 PETST} + {2676463200 43200 0 PETT} + {2689768800 46800 1 PETST} + {2708517600 43200 0 PETT} + {2721218400 46800 1 PETST} + {2739967200 43200 0 PETT} + {2752668000 46800 1 PETST} + {2771416800 43200 0 PETT} + {2784722400 46800 1 PETST} + {2802866400 43200 0 PETT} + {2816172000 46800 1 PETST} + {2834316000 43200 0 PETT} + {2847621600 46800 1 PETST} + {2866370400 43200 0 PETT} + {2879071200 46800 1 PETST} + {2897820000 43200 0 PETT} + {2910520800 46800 1 PETST} + {2929269600 43200 0 PETT} + {2941970400 46800 1 PETST} + {2960719200 43200 0 PETT} + {2974024800 46800 1 PETST} + {2992168800 43200 0 PETT} + {3005474400 46800 1 PETST} + {3023618400 43200 0 PETT} + {3036924000 46800 1 PETST} + {3055672800 43200 0 PETT} + {3068373600 46800 1 PETST} + {3087122400 43200 0 PETT} + {3099823200 46800 1 PETST} + {3118572000 43200 0 PETT} + {3131877600 46800 1 PETST} + {3150021600 43200 0 PETT} + {3163327200 46800 1 PETST} + {3181471200 43200 0 PETT} + {3194776800 46800 1 PETST} + {3212920800 43200 0 PETT} + {3226226400 46800 1 PETST} + {3244975200 43200 0 PETT} + {3257676000 46800 1 PETST} + {3276424800 43200 0 PETT} + {3289125600 46800 1 PETST} + {3307874400 43200 0 PETT} + {3321180000 46800 1 PETST} + {3339324000 43200 0 PETT} + {3352629600 46800 1 PETST} + {3370773600 43200 0 PETT} + {3384079200 46800 1 PETST} + {3402828000 43200 0 PETT} + {3415528800 46800 1 PETST} + {3434277600 43200 0 PETT} + {3446978400 46800 1 PETST} + {3465727200 43200 0 PETT} + {3479032800 46800 1 PETST} + {3497176800 43200 0 PETT} + {3510482400 46800 1 PETST} + {3528626400 43200 0 PETT} + {3541932000 46800 1 PETST} + {3560076000 43200 0 PETT} + {3573381600 46800 1 PETST} + {3592130400 43200 0 PETT} + {3604831200 46800 1 PETST} + {3623580000 43200 0 PETT} + {3636280800 46800 1 PETST} + {3655029600 43200 0 PETT} + {3668335200 46800 1 PETST} + {3686479200 43200 0 PETT} + {3699784800 46800 1 PETST} + {3717928800 43200 0 PETT} + {3731234400 46800 1 PETST} + {3749983200 43200 0 PETT} + {3762684000 46800 1 PETST} + {3781432800 43200 0 PETT} + {3794133600 46800 1 PETST} + {3812882400 43200 0 PETT} + {3825583200 46800 1 PETST} + {3844332000 43200 0 PETT} + {3857637600 46800 1 PETST} + {3875781600 43200 0 PETT} + {3889087200 46800 1 PETST} + {3907231200 43200 0 PETT} + {3920536800 46800 1 PETST} + {3939285600 43200 0 PETT} + {3951986400 46800 1 PETST} + {3970735200 43200 0 PETT} + {3983436000 46800 1 PETST} + {4002184800 43200 0 PETT} + {4015490400 46800 1 PETST} + {4033634400 43200 0 PETT} + {4046940000 46800 1 PETST} + {4065084000 43200 0 PETT} + {4078389600 46800 1 PETST} + {4096533600 43200 0 PETT} +} diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 3022de8..9db002c 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -1,14 +1,14 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Karachi) { - {-9223372036854775808 16092 0 LMT} - {-1988166492 19800 0 IST} - {-862637400 23400 1 IST} - {-764145000 19800 0 IST} - {-576135000 18000 0 KART} - {38775600 18000 0 PKT} - {1018119660 21600 1 PKST} - {1033840860 18000 0 PKT} - {1212260400 21600 1 PKST} - {1225476000 18000 0 PKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Karachi) { + {-9223372036854775808 16092 0 LMT} + {-1988166492 19800 0 IST} + {-862637400 23400 1 IST} + {-764145000 19800 0 IST} + {-576135000 18000 0 KART} + {38775600 18000 0 PKT} + {1018119660 21600 1 PKST} + {1033840860 18000 0 PKT} + {1212260400 21600 1 PKST} + {1225476000 18000 0 PKT} +} diff --git a/library/tzdata/Asia/Kashgar b/library/tzdata/Asia/Kashgar index 7988656..2f64f42 100644 --- a/library/tzdata/Asia/Kashgar +++ b/library/tzdata/Asia/Kashgar @@ -1,20 +1,20 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kashgar) { - {-9223372036854775808 18236 0 LMT} - {-1325480636 19800 0 KAST} - {-946791000 18000 0 KAST} - {325969200 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kashgar) { + {-9223372036854775808 18236 0 LMT} + {-1325480636 19800 0 KAST} + {-946791000 18000 0 KAST} + {325969200 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Kathmandu b/library/tzdata/Asia/Kathmandu index 5b99813..dbec1f0 100644 --- a/library/tzdata/Asia/Kathmandu +++ b/library/tzdata/Asia/Kathmandu @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kathmandu) { - {-9223372036854775808 20476 0 LMT} - {-1577943676 19800 0 IST} - {504901800 20700 0 NPT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kathmandu) { + {-9223372036854775808 20476 0 LMT} + {-1577943676 19800 0 IST} + {504901800 20700 0 NPT} +} diff --git a/library/tzdata/Asia/Katmandu b/library/tzdata/Asia/Katmandu index 2312210..2d6d060 100644 --- a/library/tzdata/Asia/Katmandu +++ b/library/tzdata/Asia/Katmandu @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Kathmandu)]} { - LoadTimeZoneFile Asia/Kathmandu -} -set TZData(:Asia/Katmandu) $TZData(:Asia/Kathmandu) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Kathmandu)]} { + LoadTimeZoneFile Asia/Kathmandu +} +set TZData(:Asia/Katmandu) $TZData(:Asia/Kathmandu) diff --git a/library/tzdata/Asia/Kolkata b/library/tzdata/Asia/Kolkata index f5028e8..a87bf31 100644 --- a/library/tzdata/Asia/Kolkata +++ b/library/tzdata/Asia/Kolkata @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kolkata) { - {-9223372036854775808 21208 0 LMT} - {-2840162008 21200 0 HMT} - {-891582800 23400 0 BURT} - {-872058600 19800 0 IST} - {-862637400 23400 1 IST} - {-764145000 19800 0 IST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kolkata) { + {-9223372036854775808 21208 0 LMT} + {-2840162008 21200 0 HMT} + {-891582800 23400 0 BURT} + {-872058600 19800 0 IST} + {-862637400 23400 1 IST} + {-764145000 19800 0 IST} +} diff --git a/library/tzdata/Asia/Krasnoyarsk b/library/tzdata/Asia/Krasnoyarsk index 9abc439..24046fe 100644 --- a/library/tzdata/Asia/Krasnoyarsk +++ b/library/tzdata/Asia/Krasnoyarsk @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Krasnoyarsk) { - {-9223372036854775808 22280 0 LMT} - {-1577513480 21600 0 KRAT} - {-1247551200 25200 0 KRAMMTT} - {354906000 28800 1 KRAST} - {370713600 25200 0 KRAT} - {386442000 28800 1 KRAST} - {402249600 25200 0 KRAT} - {417978000 28800 1 KRAST} - {433785600 25200 0 KRAT} - {449600400 28800 1 KRAST} - {465332400 25200 0 KRAT} - {481057200 28800 1 KRAST} - {496782000 25200 0 KRAT} - {512506800 28800 1 KRAST} - {528231600 25200 0 KRAT} - {543956400 28800 1 KRAST} - {559681200 25200 0 KRAT} - {575406000 28800 1 KRAST} - {591130800 25200 0 KRAT} - {606855600 28800 1 KRAST} - {622580400 25200 0 KRAT} - {638305200 28800 1 KRAST} - {654634800 25200 0 KRAT} - {670359600 21600 0 KRAMMTT} - {670363200 25200 1 KRAST} - {686088000 21600 0 KRAT} - {695764800 25200 0 KRAMMTT} - {701798400 28800 1 KRAST} - {717519600 25200 0 KRAT} - {733258800 28800 1 KRAST} - {748983600 25200 0 KRAT} - {764708400 28800 1 KRAST} - {780433200 25200 0 KRAT} - {796158000 28800 1 KRAST} - {811882800 25200 0 KRAT} - {828212400 28800 1 KRAST} - {846356400 25200 0 KRAT} - {859662000 28800 1 KRAST} - {877806000 25200 0 KRAT} - {891111600 28800 1 KRAST} - {909255600 25200 0 KRAT} - {922561200 28800 1 KRAST} - {941310000 25200 0 KRAT} - {954010800 28800 1 KRAST} - {972759600 25200 0 KRAT} - {985460400 28800 1 KRAST} - {1004209200 25200 0 KRAT} - {1017514800 28800 1 KRAST} - {1035658800 25200 0 KRAT} - {1048964400 28800 1 KRAST} - {1067108400 25200 0 KRAT} - {1080414000 28800 1 KRAST} - {1099162800 25200 0 KRAT} - {1111863600 28800 1 KRAST} - {1130612400 25200 0 KRAT} - {1143313200 28800 1 KRAST} - {1162062000 25200 0 KRAT} - {1174762800 28800 1 KRAST} - {1193511600 25200 0 KRAT} - {1206817200 28800 1 KRAST} - {1224961200 25200 0 KRAT} - {1238266800 28800 1 KRAST} - {1256410800 25200 0 KRAT} - {1269716400 28800 1 KRAST} - {1288465200 25200 0 KRAT} - {1301166000 28800 1 KRAST} - {1319914800 25200 0 KRAT} - {1332615600 28800 1 KRAST} - {1351364400 25200 0 KRAT} - {1364670000 28800 1 KRAST} - {1382814000 25200 0 KRAT} - {1396119600 28800 1 KRAST} - {1414263600 25200 0 KRAT} - {1427569200 28800 1 KRAST} - {1445713200 25200 0 KRAT} - {1459018800 28800 1 KRAST} - {1477767600 25200 0 KRAT} - {1490468400 28800 1 KRAST} - {1509217200 25200 0 KRAT} - {1521918000 28800 1 KRAST} - {1540666800 25200 0 KRAT} - {1553972400 28800 1 KRAST} - {1572116400 25200 0 KRAT} - {1585422000 28800 1 KRAST} - {1603566000 25200 0 KRAT} - {1616871600 28800 1 KRAST} - {1635620400 25200 0 KRAT} - {1648321200 28800 1 KRAST} - {1667070000 25200 0 KRAT} - {1679770800 28800 1 KRAST} - {1698519600 25200 0 KRAT} - {1711825200 28800 1 KRAST} - {1729969200 25200 0 KRAT} - {1743274800 28800 1 KRAST} - {1761418800 25200 0 KRAT} - {1774724400 28800 1 KRAST} - {1792868400 25200 0 KRAT} - {1806174000 28800 1 KRAST} - {1824922800 25200 0 KRAT} - {1837623600 28800 1 KRAST} - {1856372400 25200 0 KRAT} - {1869073200 28800 1 KRAST} - {1887822000 25200 0 KRAT} - {1901127600 28800 1 KRAST} - {1919271600 25200 0 KRAT} - {1932577200 28800 1 KRAST} - {1950721200 25200 0 KRAT} - {1964026800 28800 1 KRAST} - {1982775600 25200 0 KRAT} - {1995476400 28800 1 KRAST} - {2014225200 25200 0 KRAT} - {2026926000 28800 1 KRAST} - {2045674800 25200 0 KRAT} - {2058375600 28800 1 KRAST} - {2077124400 25200 0 KRAT} - {2090430000 28800 1 KRAST} - {2108574000 25200 0 KRAT} - {2121879600 28800 1 KRAST} - {2140023600 25200 0 KRAT} - {2153329200 28800 1 KRAST} - {2172078000 25200 0 KRAT} - {2184778800 28800 1 KRAST} - {2203527600 25200 0 KRAT} - {2216228400 28800 1 KRAST} - {2234977200 25200 0 KRAT} - {2248282800 28800 1 KRAST} - {2266426800 25200 0 KRAT} - {2279732400 28800 1 KRAST} - {2297876400 25200 0 KRAT} - {2311182000 28800 1 KRAST} - {2329326000 25200 0 KRAT} - {2342631600 28800 1 KRAST} - {2361380400 25200 0 KRAT} - {2374081200 28800 1 KRAST} - {2392830000 25200 0 KRAT} - {2405530800 28800 1 KRAST} - {2424279600 25200 0 KRAT} - {2437585200 28800 1 KRAST} - {2455729200 25200 0 KRAT} - {2469034800 28800 1 KRAST} - {2487178800 25200 0 KRAT} - {2500484400 28800 1 KRAST} - {2519233200 25200 0 KRAT} - {2531934000 28800 1 KRAST} - {2550682800 25200 0 KRAT} - {2563383600 28800 1 KRAST} - {2582132400 25200 0 KRAT} - {2595438000 28800 1 KRAST} - {2613582000 25200 0 KRAT} - {2626887600 28800 1 KRAST} - {2645031600 25200 0 KRAT} - {2658337200 28800 1 KRAST} - {2676481200 25200 0 KRAT} - {2689786800 28800 1 KRAST} - {2708535600 25200 0 KRAT} - {2721236400 28800 1 KRAST} - {2739985200 25200 0 KRAT} - {2752686000 28800 1 KRAST} - {2771434800 25200 0 KRAT} - {2784740400 28800 1 KRAST} - {2802884400 25200 0 KRAT} - {2816190000 28800 1 KRAST} - {2834334000 25200 0 KRAT} - {2847639600 28800 1 KRAST} - {2866388400 25200 0 KRAT} - {2879089200 28800 1 KRAST} - {2897838000 25200 0 KRAT} - {2910538800 28800 1 KRAST} - {2929287600 25200 0 KRAT} - {2941988400 28800 1 KRAST} - {2960737200 25200 0 KRAT} - {2974042800 28800 1 KRAST} - {2992186800 25200 0 KRAT} - {3005492400 28800 1 KRAST} - {3023636400 25200 0 KRAT} - {3036942000 28800 1 KRAST} - {3055690800 25200 0 KRAT} - {3068391600 28800 1 KRAST} - {3087140400 25200 0 KRAT} - {3099841200 28800 1 KRAST} - {3118590000 25200 0 KRAT} - {3131895600 28800 1 KRAST} - {3150039600 25200 0 KRAT} - {3163345200 28800 1 KRAST} - {3181489200 25200 0 KRAT} - {3194794800 28800 1 KRAST} - {3212938800 25200 0 KRAT} - {3226244400 28800 1 KRAST} - {3244993200 25200 0 KRAT} - {3257694000 28800 1 KRAST} - {3276442800 25200 0 KRAT} - {3289143600 28800 1 KRAST} - {3307892400 25200 0 KRAT} - {3321198000 28800 1 KRAST} - {3339342000 25200 0 KRAT} - {3352647600 28800 1 KRAST} - {3370791600 25200 0 KRAT} - {3384097200 28800 1 KRAST} - {3402846000 25200 0 KRAT} - {3415546800 28800 1 KRAST} - {3434295600 25200 0 KRAT} - {3446996400 28800 1 KRAST} - {3465745200 25200 0 KRAT} - {3479050800 28800 1 KRAST} - {3497194800 25200 0 KRAT} - {3510500400 28800 1 KRAST} - {3528644400 25200 0 KRAT} - {3541950000 28800 1 KRAST} - {3560094000 25200 0 KRAT} - {3573399600 28800 1 KRAST} - {3592148400 25200 0 KRAT} - {3604849200 28800 1 KRAST} - {3623598000 25200 0 KRAT} - {3636298800 28800 1 KRAST} - {3655047600 25200 0 KRAT} - {3668353200 28800 1 KRAST} - {3686497200 25200 0 KRAT} - {3699802800 28800 1 KRAST} - {3717946800 25200 0 KRAT} - {3731252400 28800 1 KRAST} - {3750001200 25200 0 KRAT} - {3762702000 28800 1 KRAST} - {3781450800 25200 0 KRAT} - {3794151600 28800 1 KRAST} - {3812900400 25200 0 KRAT} - {3825601200 28800 1 KRAST} - {3844350000 25200 0 KRAT} - {3857655600 28800 1 KRAST} - {3875799600 25200 0 KRAT} - {3889105200 28800 1 KRAST} - {3907249200 25200 0 KRAT} - {3920554800 28800 1 KRAST} - {3939303600 25200 0 KRAT} - {3952004400 28800 1 KRAST} - {3970753200 25200 0 KRAT} - {3983454000 28800 1 KRAST} - {4002202800 25200 0 KRAT} - {4015508400 28800 1 KRAST} - {4033652400 25200 0 KRAT} - {4046958000 28800 1 KRAST} - {4065102000 25200 0 KRAT} - {4078407600 28800 1 KRAST} - {4096551600 25200 0 KRAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Krasnoyarsk) { + {-9223372036854775808 22280 0 LMT} + {-1577513480 21600 0 KRAT} + {-1247551200 25200 0 KRAMMTT} + {354906000 28800 1 KRAST} + {370713600 25200 0 KRAT} + {386442000 28800 1 KRAST} + {402249600 25200 0 KRAT} + {417978000 28800 1 KRAST} + {433785600 25200 0 KRAT} + {449600400 28800 1 KRAST} + {465332400 25200 0 KRAT} + {481057200 28800 1 KRAST} + {496782000 25200 0 KRAT} + {512506800 28800 1 KRAST} + {528231600 25200 0 KRAT} + {543956400 28800 1 KRAST} + {559681200 25200 0 KRAT} + {575406000 28800 1 KRAST} + {591130800 25200 0 KRAT} + {606855600 28800 1 KRAST} + {622580400 25200 0 KRAT} + {638305200 28800 1 KRAST} + {654634800 25200 0 KRAT} + {670359600 21600 0 KRAMMTT} + {670363200 25200 1 KRAST} + {686088000 21600 0 KRAT} + {695764800 25200 0 KRAMMTT} + {701798400 28800 1 KRAST} + {717519600 25200 0 KRAT} + {733258800 28800 1 KRAST} + {748983600 25200 0 KRAT} + {764708400 28800 1 KRAST} + {780433200 25200 0 KRAT} + {796158000 28800 1 KRAST} + {811882800 25200 0 KRAT} + {828212400 28800 1 KRAST} + {846356400 25200 0 KRAT} + {859662000 28800 1 KRAST} + {877806000 25200 0 KRAT} + {891111600 28800 1 KRAST} + {909255600 25200 0 KRAT} + {922561200 28800 1 KRAST} + {941310000 25200 0 KRAT} + {954010800 28800 1 KRAST} + {972759600 25200 0 KRAT} + {985460400 28800 1 KRAST} + {1004209200 25200 0 KRAT} + {1017514800 28800 1 KRAST} + {1035658800 25200 0 KRAT} + {1048964400 28800 1 KRAST} + {1067108400 25200 0 KRAT} + {1080414000 28800 1 KRAST} + {1099162800 25200 0 KRAT} + {1111863600 28800 1 KRAST} + {1130612400 25200 0 KRAT} + {1143313200 28800 1 KRAST} + {1162062000 25200 0 KRAT} + {1174762800 28800 1 KRAST} + {1193511600 25200 0 KRAT} + {1206817200 28800 1 KRAST} + {1224961200 25200 0 KRAT} + {1238266800 28800 1 KRAST} + {1256410800 25200 0 KRAT} + {1269716400 28800 1 KRAST} + {1288465200 25200 0 KRAT} + {1301166000 28800 1 KRAST} + {1319914800 25200 0 KRAT} + {1332615600 28800 1 KRAST} + {1351364400 25200 0 KRAT} + {1364670000 28800 1 KRAST} + {1382814000 25200 0 KRAT} + {1396119600 28800 1 KRAST} + {1414263600 25200 0 KRAT} + {1427569200 28800 1 KRAST} + {1445713200 25200 0 KRAT} + {1459018800 28800 1 KRAST} + {1477767600 25200 0 KRAT} + {1490468400 28800 1 KRAST} + {1509217200 25200 0 KRAT} + {1521918000 28800 1 KRAST} + {1540666800 25200 0 KRAT} + {1553972400 28800 1 KRAST} + {1572116400 25200 0 KRAT} + {1585422000 28800 1 KRAST} + {1603566000 25200 0 KRAT} + {1616871600 28800 1 KRAST} + {1635620400 25200 0 KRAT} + {1648321200 28800 1 KRAST} + {1667070000 25200 0 KRAT} + {1679770800 28800 1 KRAST} + {1698519600 25200 0 KRAT} + {1711825200 28800 1 KRAST} + {1729969200 25200 0 KRAT} + {1743274800 28800 1 KRAST} + {1761418800 25200 0 KRAT} + {1774724400 28800 1 KRAST} + {1792868400 25200 0 KRAT} + {1806174000 28800 1 KRAST} + {1824922800 25200 0 KRAT} + {1837623600 28800 1 KRAST} + {1856372400 25200 0 KRAT} + {1869073200 28800 1 KRAST} + {1887822000 25200 0 KRAT} + {1901127600 28800 1 KRAST} + {1919271600 25200 0 KRAT} + {1932577200 28800 1 KRAST} + {1950721200 25200 0 KRAT} + {1964026800 28800 1 KRAST} + {1982775600 25200 0 KRAT} + {1995476400 28800 1 KRAST} + {2014225200 25200 0 KRAT} + {2026926000 28800 1 KRAST} + {2045674800 25200 0 KRAT} + {2058375600 28800 1 KRAST} + {2077124400 25200 0 KRAT} + {2090430000 28800 1 KRAST} + {2108574000 25200 0 KRAT} + {2121879600 28800 1 KRAST} + {2140023600 25200 0 KRAT} + {2153329200 28800 1 KRAST} + {2172078000 25200 0 KRAT} + {2184778800 28800 1 KRAST} + {2203527600 25200 0 KRAT} + {2216228400 28800 1 KRAST} + {2234977200 25200 0 KRAT} + {2248282800 28800 1 KRAST} + {2266426800 25200 0 KRAT} + {2279732400 28800 1 KRAST} + {2297876400 25200 0 KRAT} + {2311182000 28800 1 KRAST} + {2329326000 25200 0 KRAT} + {2342631600 28800 1 KRAST} + {2361380400 25200 0 KRAT} + {2374081200 28800 1 KRAST} + {2392830000 25200 0 KRAT} + {2405530800 28800 1 KRAST} + {2424279600 25200 0 KRAT} + {2437585200 28800 1 KRAST} + {2455729200 25200 0 KRAT} + {2469034800 28800 1 KRAST} + {2487178800 25200 0 KRAT} + {2500484400 28800 1 KRAST} + {2519233200 25200 0 KRAT} + {2531934000 28800 1 KRAST} + {2550682800 25200 0 KRAT} + {2563383600 28800 1 KRAST} + {2582132400 25200 0 KRAT} + {2595438000 28800 1 KRAST} + {2613582000 25200 0 KRAT} + {2626887600 28800 1 KRAST} + {2645031600 25200 0 KRAT} + {2658337200 28800 1 KRAST} + {2676481200 25200 0 KRAT} + {2689786800 28800 1 KRAST} + {2708535600 25200 0 KRAT} + {2721236400 28800 1 KRAST} + {2739985200 25200 0 KRAT} + {2752686000 28800 1 KRAST} + {2771434800 25200 0 KRAT} + {2784740400 28800 1 KRAST} + {2802884400 25200 0 KRAT} + {2816190000 28800 1 KRAST} + {2834334000 25200 0 KRAT} + {2847639600 28800 1 KRAST} + {2866388400 25200 0 KRAT} + {2879089200 28800 1 KRAST} + {2897838000 25200 0 KRAT} + {2910538800 28800 1 KRAST} + {2929287600 25200 0 KRAT} + {2941988400 28800 1 KRAST} + {2960737200 25200 0 KRAT} + {2974042800 28800 1 KRAST} + {2992186800 25200 0 KRAT} + {3005492400 28800 1 KRAST} + {3023636400 25200 0 KRAT} + {3036942000 28800 1 KRAST} + {3055690800 25200 0 KRAT} + {3068391600 28800 1 KRAST} + {3087140400 25200 0 KRAT} + {3099841200 28800 1 KRAST} + {3118590000 25200 0 KRAT} + {3131895600 28800 1 KRAST} + {3150039600 25200 0 KRAT} + {3163345200 28800 1 KRAST} + {3181489200 25200 0 KRAT} + {3194794800 28800 1 KRAST} + {3212938800 25200 0 KRAT} + {3226244400 28800 1 KRAST} + {3244993200 25200 0 KRAT} + {3257694000 28800 1 KRAST} + {3276442800 25200 0 KRAT} + {3289143600 28800 1 KRAST} + {3307892400 25200 0 KRAT} + {3321198000 28800 1 KRAST} + {3339342000 25200 0 KRAT} + {3352647600 28800 1 KRAST} + {3370791600 25200 0 KRAT} + {3384097200 28800 1 KRAST} + {3402846000 25200 0 KRAT} + {3415546800 28800 1 KRAST} + {3434295600 25200 0 KRAT} + {3446996400 28800 1 KRAST} + {3465745200 25200 0 KRAT} + {3479050800 28800 1 KRAST} + {3497194800 25200 0 KRAT} + {3510500400 28800 1 KRAST} + {3528644400 25200 0 KRAT} + {3541950000 28800 1 KRAST} + {3560094000 25200 0 KRAT} + {3573399600 28800 1 KRAST} + {3592148400 25200 0 KRAT} + {3604849200 28800 1 KRAST} + {3623598000 25200 0 KRAT} + {3636298800 28800 1 KRAST} + {3655047600 25200 0 KRAT} + {3668353200 28800 1 KRAST} + {3686497200 25200 0 KRAT} + {3699802800 28800 1 KRAST} + {3717946800 25200 0 KRAT} + {3731252400 28800 1 KRAST} + {3750001200 25200 0 KRAT} + {3762702000 28800 1 KRAST} + {3781450800 25200 0 KRAT} + {3794151600 28800 1 KRAST} + {3812900400 25200 0 KRAT} + {3825601200 28800 1 KRAST} + {3844350000 25200 0 KRAT} + {3857655600 28800 1 KRAST} + {3875799600 25200 0 KRAT} + {3889105200 28800 1 KRAST} + {3907249200 25200 0 KRAT} + {3920554800 28800 1 KRAST} + {3939303600 25200 0 KRAT} + {3952004400 28800 1 KRAST} + {3970753200 25200 0 KRAT} + {3983454000 28800 1 KRAST} + {4002202800 25200 0 KRAT} + {4015508400 28800 1 KRAST} + {4033652400 25200 0 KRAT} + {4046958000 28800 1 KRAST} + {4065102000 25200 0 KRAT} + {4078407600 28800 1 KRAST} + {4096551600 25200 0 KRAT} +} diff --git a/library/tzdata/Asia/Kuala_Lumpur b/library/tzdata/Asia/Kuala_Lumpur index a1f44d8..7a54bd6 100644 --- a/library/tzdata/Asia/Kuala_Lumpur +++ b/library/tzdata/Asia/Kuala_Lumpur @@ -1,13 +1,13 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kuala_Lumpur) { - {-9223372036854775808 24406 0 LMT} - {-2177477206 24925 0 SMT} - {-2038200925 25200 0 MALT} - {-1167634800 26400 1 MALST} - {-1073028000 26400 0 MALT} - {-894180000 27000 0 MALT} - {-879665400 32400 0 JST} - {-767005200 27000 0 MALT} - {378664200 28800 0 MYT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kuala_Lumpur) { + {-9223372036854775808 24406 0 LMT} + {-2177477206 24925 0 SMT} + {-2038200925 25200 0 MALT} + {-1167634800 26400 1 MALST} + {-1073028000 26400 0 MALT} + {-894180000 27000 0 MALT} + {-879665400 32400 0 JST} + {-767005200 27000 0 MALT} + {378664200 28800 0 MYT} +} diff --git a/library/tzdata/Asia/Kuching b/library/tzdata/Asia/Kuching index 830726c..0f9110c 100644 --- a/library/tzdata/Asia/Kuching +++ b/library/tzdata/Asia/Kuching @@ -1,24 +1,24 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kuching) { - {-9223372036854775808 26480 0 LMT} - {-1383463280 27000 0 BORT} - {-1167636600 28800 0 BORT} - {-1082448000 30000 1 BORTST} - {-1074586800 28800 0 BORT} - {-1050825600 30000 1 BORTST} - {-1042964400 28800 0 BORT} - {-1019289600 30000 1 BORTST} - {-1011428400 28800 0 BORT} - {-987753600 30000 1 BORTST} - {-979892400 28800 0 BORT} - {-956217600 30000 1 BORTST} - {-948356400 28800 0 BORT} - {-924595200 30000 1 BORTST} - {-916734000 28800 0 BORT} - {-893059200 30000 1 BORTST} - {-885198000 28800 0 BORT} - {-879667200 32400 0 JST} - {-767005200 28800 0 BORT} - {378662400 28800 0 MYT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kuching) { + {-9223372036854775808 26480 0 LMT} + {-1383463280 27000 0 BORT} + {-1167636600 28800 0 BORT} + {-1082448000 30000 1 BORTST} + {-1074586800 28800 0 BORT} + {-1050825600 30000 1 BORTST} + {-1042964400 28800 0 BORT} + {-1019289600 30000 1 BORTST} + {-1011428400 28800 0 BORT} + {-987753600 30000 1 BORTST} + {-979892400 28800 0 BORT} + {-956217600 30000 1 BORTST} + {-948356400 28800 0 BORT} + {-924595200 30000 1 BORTST} + {-916734000 28800 0 BORT} + {-893059200 30000 1 BORTST} + {-885198000 28800 0 BORT} + {-879667200 32400 0 JST} + {-767005200 28800 0 BORT} + {378662400 28800 0 MYT} +} diff --git a/library/tzdata/Asia/Kuwait b/library/tzdata/Asia/Kuwait index 1cc34ce..15d26db 100644 --- a/library/tzdata/Asia/Kuwait +++ b/library/tzdata/Asia/Kuwait @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Kuwait) { - {-9223372036854775808 11516 0 LMT} - {-631163516 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kuwait) { + {-9223372036854775808 11516 0 LMT} + {-631163516 10800 0 AST} +} diff --git a/library/tzdata/Asia/Macao b/library/tzdata/Asia/Macao index e097dd3..6e972ff 100644 --- a/library/tzdata/Asia/Macao +++ b/library/tzdata/Asia/Macao @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Macau)]} { - LoadTimeZoneFile Asia/Macau -} -set TZData(:Asia/Macao) $TZData(:Asia/Macau) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Macau)]} { + LoadTimeZoneFile Asia/Macau +} +set TZData(:Asia/Macao) $TZData(:Asia/Macau) diff --git a/library/tzdata/Asia/Macau b/library/tzdata/Asia/Macau index 01229e3..9d4abfe 100644 --- a/library/tzdata/Asia/Macau +++ b/library/tzdata/Asia/Macau @@ -1,46 +1,46 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Macau) { - {-9223372036854775808 27260 0 LMT} - {-1830411260 28800 0 MOT} - {-277360200 32400 1 MOST} - {-257405400 28800 0 MOT} - {-245910600 32400 1 MOST} - {-225955800 28800 0 MOT} - {-214473600 32400 1 MOST} - {-194506200 28800 0 MOT} - {-182406600 32400 1 MOST} - {-163056600 28800 0 MOT} - {-150969600 32400 1 MOST} - {-131619600 28800 0 MOT} - {-117088200 32400 1 MOST} - {-101367000 28800 0 MOT} - {-85638600 32400 1 MOST} - {-69312600 28800 0 MOT} - {-53584200 32400 1 MOST} - {-37863000 28800 0 MOT} - {-22134600 32400 1 MOST} - {-6413400 28800 0 MOT} - {9315000 32400 1 MOST} - {25036200 28800 0 MOT} - {40764600 32400 1 MOST} - {56485800 28800 0 MOT} - {72201600 32400 1 MOST} - {87922800 28800 0 MOT} - {103651200 32400 1 MOST} - {119977200 28800 0 MOT} - {135705600 32400 1 MOST} - {151439400 28800 0 MOT} - {167167800 32400 1 MOST} - {182889000 28800 0 MOT} - {198617400 32400 1 MOST} - {214338600 28800 0 MOT} - {230067000 32400 1 MOST} - {245788200 28800 0 MOT} - {261504000 32400 1 MOST} - {277225200 28800 0 MOT} - {292953600 32400 1 MOST} - {309279600 28800 0 MOT} - {325008000 32400 1 MOST} - {340729200 28800 0 MOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Macau) { + {-9223372036854775808 27260 0 LMT} + {-1830411260 28800 0 MOT} + {-277360200 32400 1 MOST} + {-257405400 28800 0 MOT} + {-245910600 32400 1 MOST} + {-225955800 28800 0 MOT} + {-214473600 32400 1 MOST} + {-194506200 28800 0 MOT} + {-182406600 32400 1 MOST} + {-163056600 28800 0 MOT} + {-150969600 32400 1 MOST} + {-131619600 28800 0 MOT} + {-117088200 32400 1 MOST} + {-101367000 28800 0 MOT} + {-85638600 32400 1 MOST} + {-69312600 28800 0 MOT} + {-53584200 32400 1 MOST} + {-37863000 28800 0 MOT} + {-22134600 32400 1 MOST} + {-6413400 28800 0 MOT} + {9315000 32400 1 MOST} + {25036200 28800 0 MOT} + {40764600 32400 1 MOST} + {56485800 28800 0 MOT} + {72201600 32400 1 MOST} + {87922800 28800 0 MOT} + {103651200 32400 1 MOST} + {119977200 28800 0 MOT} + {135705600 32400 1 MOST} + {151439400 28800 0 MOT} + {167167800 32400 1 MOST} + {182889000 28800 0 MOT} + {198617400 32400 1 MOST} + {214338600 28800 0 MOT} + {230067000 32400 1 MOST} + {245788200 28800 0 MOT} + {261504000 32400 1 MOST} + {277225200 28800 0 MOT} + {292953600 32400 1 MOST} + {309279600 28800 0 MOT} + {325008000 32400 1 MOST} + {340729200 28800 0 MOT} +} diff --git a/library/tzdata/Asia/Magadan b/library/tzdata/Asia/Magadan index 31fc205..28e1f2f 100644 --- a/library/tzdata/Asia/Magadan +++ b/library/tzdata/Asia/Magadan @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Magadan) { - {-9223372036854775808 36192 0 LMT} - {-1441188192 36000 0 MAGT} - {-1247565600 39600 0 MAGMMTT} - {354891600 43200 1 MAGST} - {370699200 39600 0 MAGT} - {386427600 43200 1 MAGST} - {402235200 39600 0 MAGT} - {417963600 43200 1 MAGST} - {433771200 39600 0 MAGT} - {449586000 43200 1 MAGST} - {465318000 39600 0 MAGT} - {481042800 43200 1 MAGST} - {496767600 39600 0 MAGT} - {512492400 43200 1 MAGST} - {528217200 39600 0 MAGT} - {543942000 43200 1 MAGST} - {559666800 39600 0 MAGT} - {575391600 43200 1 MAGST} - {591116400 39600 0 MAGT} - {606841200 43200 1 MAGST} - {622566000 39600 0 MAGT} - {638290800 43200 1 MAGST} - {654620400 39600 0 MAGT} - {670345200 36000 0 MAGMMTT} - {670348800 39600 1 MAGST} - {686073600 36000 0 MAGT} - {695750400 39600 0 MAGMMTT} - {701784000 43200 1 MAGST} - {717505200 39600 0 MAGT} - {733244400 43200 1 MAGST} - {748969200 39600 0 MAGT} - {764694000 43200 1 MAGST} - {780418800 39600 0 MAGT} - {796143600 43200 1 MAGST} - {811868400 39600 0 MAGT} - {828198000 43200 1 MAGST} - {846342000 39600 0 MAGT} - {859647600 43200 1 MAGST} - {877791600 39600 0 MAGT} - {891097200 43200 1 MAGST} - {909241200 39600 0 MAGT} - {922546800 43200 1 MAGST} - {941295600 39600 0 MAGT} - {953996400 43200 1 MAGST} - {972745200 39600 0 MAGT} - {985446000 43200 1 MAGST} - {1004194800 39600 0 MAGT} - {1017500400 43200 1 MAGST} - {1035644400 39600 0 MAGT} - {1048950000 43200 1 MAGST} - {1067094000 39600 0 MAGT} - {1080399600 43200 1 MAGST} - {1099148400 39600 0 MAGT} - {1111849200 43200 1 MAGST} - {1130598000 39600 0 MAGT} - {1143298800 43200 1 MAGST} - {1162047600 39600 0 MAGT} - {1174748400 43200 1 MAGST} - {1193497200 39600 0 MAGT} - {1206802800 43200 1 MAGST} - {1224946800 39600 0 MAGT} - {1238252400 43200 1 MAGST} - {1256396400 39600 0 MAGT} - {1269702000 43200 1 MAGST} - {1288450800 39600 0 MAGT} - {1301151600 43200 1 MAGST} - {1319900400 39600 0 MAGT} - {1332601200 43200 1 MAGST} - {1351350000 39600 0 MAGT} - {1364655600 43200 1 MAGST} - {1382799600 39600 0 MAGT} - {1396105200 43200 1 MAGST} - {1414249200 39600 0 MAGT} - {1427554800 43200 1 MAGST} - {1445698800 39600 0 MAGT} - {1459004400 43200 1 MAGST} - {1477753200 39600 0 MAGT} - {1490454000 43200 1 MAGST} - {1509202800 39600 0 MAGT} - {1521903600 43200 1 MAGST} - {1540652400 39600 0 MAGT} - {1553958000 43200 1 MAGST} - {1572102000 39600 0 MAGT} - {1585407600 43200 1 MAGST} - {1603551600 39600 0 MAGT} - {1616857200 43200 1 MAGST} - {1635606000 39600 0 MAGT} - {1648306800 43200 1 MAGST} - {1667055600 39600 0 MAGT} - {1679756400 43200 1 MAGST} - {1698505200 39600 0 MAGT} - {1711810800 43200 1 MAGST} - {1729954800 39600 0 MAGT} - {1743260400 43200 1 MAGST} - {1761404400 39600 0 MAGT} - {1774710000 43200 1 MAGST} - {1792854000 39600 0 MAGT} - {1806159600 43200 1 MAGST} - {1824908400 39600 0 MAGT} - {1837609200 43200 1 MAGST} - {1856358000 39600 0 MAGT} - {1869058800 43200 1 MAGST} - {1887807600 39600 0 MAGT} - {1901113200 43200 1 MAGST} - {1919257200 39600 0 MAGT} - {1932562800 43200 1 MAGST} - {1950706800 39600 0 MAGT} - {1964012400 43200 1 MAGST} - {1982761200 39600 0 MAGT} - {1995462000 43200 1 MAGST} - {2014210800 39600 0 MAGT} - {2026911600 43200 1 MAGST} - {2045660400 39600 0 MAGT} - {2058361200 43200 1 MAGST} - {2077110000 39600 0 MAGT} - {2090415600 43200 1 MAGST} - {2108559600 39600 0 MAGT} - {2121865200 43200 1 MAGST} - {2140009200 39600 0 MAGT} - {2153314800 43200 1 MAGST} - {2172063600 39600 0 MAGT} - {2184764400 43200 1 MAGST} - {2203513200 39600 0 MAGT} - {2216214000 43200 1 MAGST} - {2234962800 39600 0 MAGT} - {2248268400 43200 1 MAGST} - {2266412400 39600 0 MAGT} - {2279718000 43200 1 MAGST} - {2297862000 39600 0 MAGT} - {2311167600 43200 1 MAGST} - {2329311600 39600 0 MAGT} - {2342617200 43200 1 MAGST} - {2361366000 39600 0 MAGT} - {2374066800 43200 1 MAGST} - {2392815600 39600 0 MAGT} - {2405516400 43200 1 MAGST} - {2424265200 39600 0 MAGT} - {2437570800 43200 1 MAGST} - {2455714800 39600 0 MAGT} - {2469020400 43200 1 MAGST} - {2487164400 39600 0 MAGT} - {2500470000 43200 1 MAGST} - {2519218800 39600 0 MAGT} - {2531919600 43200 1 MAGST} - {2550668400 39600 0 MAGT} - {2563369200 43200 1 MAGST} - {2582118000 39600 0 MAGT} - {2595423600 43200 1 MAGST} - {2613567600 39600 0 MAGT} - {2626873200 43200 1 MAGST} - {2645017200 39600 0 MAGT} - {2658322800 43200 1 MAGST} - {2676466800 39600 0 MAGT} - {2689772400 43200 1 MAGST} - {2708521200 39600 0 MAGT} - {2721222000 43200 1 MAGST} - {2739970800 39600 0 MAGT} - {2752671600 43200 1 MAGST} - {2771420400 39600 0 MAGT} - {2784726000 43200 1 MAGST} - {2802870000 39600 0 MAGT} - {2816175600 43200 1 MAGST} - {2834319600 39600 0 MAGT} - {2847625200 43200 1 MAGST} - {2866374000 39600 0 MAGT} - {2879074800 43200 1 MAGST} - {2897823600 39600 0 MAGT} - {2910524400 43200 1 MAGST} - {2929273200 39600 0 MAGT} - {2941974000 43200 1 MAGST} - {2960722800 39600 0 MAGT} - {2974028400 43200 1 MAGST} - {2992172400 39600 0 MAGT} - {3005478000 43200 1 MAGST} - {3023622000 39600 0 MAGT} - {3036927600 43200 1 MAGST} - {3055676400 39600 0 MAGT} - {3068377200 43200 1 MAGST} - {3087126000 39600 0 MAGT} - {3099826800 43200 1 MAGST} - {3118575600 39600 0 MAGT} - {3131881200 43200 1 MAGST} - {3150025200 39600 0 MAGT} - {3163330800 43200 1 MAGST} - {3181474800 39600 0 MAGT} - {3194780400 43200 1 MAGST} - {3212924400 39600 0 MAGT} - {3226230000 43200 1 MAGST} - {3244978800 39600 0 MAGT} - {3257679600 43200 1 MAGST} - {3276428400 39600 0 MAGT} - {3289129200 43200 1 MAGST} - {3307878000 39600 0 MAGT} - {3321183600 43200 1 MAGST} - {3339327600 39600 0 MAGT} - {3352633200 43200 1 MAGST} - {3370777200 39600 0 MAGT} - {3384082800 43200 1 MAGST} - {3402831600 39600 0 MAGT} - {3415532400 43200 1 MAGST} - {3434281200 39600 0 MAGT} - {3446982000 43200 1 MAGST} - {3465730800 39600 0 MAGT} - {3479036400 43200 1 MAGST} - {3497180400 39600 0 MAGT} - {3510486000 43200 1 MAGST} - {3528630000 39600 0 MAGT} - {3541935600 43200 1 MAGST} - {3560079600 39600 0 MAGT} - {3573385200 43200 1 MAGST} - {3592134000 39600 0 MAGT} - {3604834800 43200 1 MAGST} - {3623583600 39600 0 MAGT} - {3636284400 43200 1 MAGST} - {3655033200 39600 0 MAGT} - {3668338800 43200 1 MAGST} - {3686482800 39600 0 MAGT} - {3699788400 43200 1 MAGST} - {3717932400 39600 0 MAGT} - {3731238000 43200 1 MAGST} - {3749986800 39600 0 MAGT} - {3762687600 43200 1 MAGST} - {3781436400 39600 0 MAGT} - {3794137200 43200 1 MAGST} - {3812886000 39600 0 MAGT} - {3825586800 43200 1 MAGST} - {3844335600 39600 0 MAGT} - {3857641200 43200 1 MAGST} - {3875785200 39600 0 MAGT} - {3889090800 43200 1 MAGST} - {3907234800 39600 0 MAGT} - {3920540400 43200 1 MAGST} - {3939289200 39600 0 MAGT} - {3951990000 43200 1 MAGST} - {3970738800 39600 0 MAGT} - {3983439600 43200 1 MAGST} - {4002188400 39600 0 MAGT} - {4015494000 43200 1 MAGST} - {4033638000 39600 0 MAGT} - {4046943600 43200 1 MAGST} - {4065087600 39600 0 MAGT} - {4078393200 43200 1 MAGST} - {4096537200 39600 0 MAGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Magadan) { + {-9223372036854775808 36192 0 LMT} + {-1441188192 36000 0 MAGT} + {-1247565600 39600 0 MAGMMTT} + {354891600 43200 1 MAGST} + {370699200 39600 0 MAGT} + {386427600 43200 1 MAGST} + {402235200 39600 0 MAGT} + {417963600 43200 1 MAGST} + {433771200 39600 0 MAGT} + {449586000 43200 1 MAGST} + {465318000 39600 0 MAGT} + {481042800 43200 1 MAGST} + {496767600 39600 0 MAGT} + {512492400 43200 1 MAGST} + {528217200 39600 0 MAGT} + {543942000 43200 1 MAGST} + {559666800 39600 0 MAGT} + {575391600 43200 1 MAGST} + {591116400 39600 0 MAGT} + {606841200 43200 1 MAGST} + {622566000 39600 0 MAGT} + {638290800 43200 1 MAGST} + {654620400 39600 0 MAGT} + {670345200 36000 0 MAGMMTT} + {670348800 39600 1 MAGST} + {686073600 36000 0 MAGT} + {695750400 39600 0 MAGMMTT} + {701784000 43200 1 MAGST} + {717505200 39600 0 MAGT} + {733244400 43200 1 MAGST} + {748969200 39600 0 MAGT} + {764694000 43200 1 MAGST} + {780418800 39600 0 MAGT} + {796143600 43200 1 MAGST} + {811868400 39600 0 MAGT} + {828198000 43200 1 MAGST} + {846342000 39600 0 MAGT} + {859647600 43200 1 MAGST} + {877791600 39600 0 MAGT} + {891097200 43200 1 MAGST} + {909241200 39600 0 MAGT} + {922546800 43200 1 MAGST} + {941295600 39600 0 MAGT} + {953996400 43200 1 MAGST} + {972745200 39600 0 MAGT} + {985446000 43200 1 MAGST} + {1004194800 39600 0 MAGT} + {1017500400 43200 1 MAGST} + {1035644400 39600 0 MAGT} + {1048950000 43200 1 MAGST} + {1067094000 39600 0 MAGT} + {1080399600 43200 1 MAGST} + {1099148400 39600 0 MAGT} + {1111849200 43200 1 MAGST} + {1130598000 39600 0 MAGT} + {1143298800 43200 1 MAGST} + {1162047600 39600 0 MAGT} + {1174748400 43200 1 MAGST} + {1193497200 39600 0 MAGT} + {1206802800 43200 1 MAGST} + {1224946800 39600 0 MAGT} + {1238252400 43200 1 MAGST} + {1256396400 39600 0 MAGT} + {1269702000 43200 1 MAGST} + {1288450800 39600 0 MAGT} + {1301151600 43200 1 MAGST} + {1319900400 39600 0 MAGT} + {1332601200 43200 1 MAGST} + {1351350000 39600 0 MAGT} + {1364655600 43200 1 MAGST} + {1382799600 39600 0 MAGT} + {1396105200 43200 1 MAGST} + {1414249200 39600 0 MAGT} + {1427554800 43200 1 MAGST} + {1445698800 39600 0 MAGT} + {1459004400 43200 1 MAGST} + {1477753200 39600 0 MAGT} + {1490454000 43200 1 MAGST} + {1509202800 39600 0 MAGT} + {1521903600 43200 1 MAGST} + {1540652400 39600 0 MAGT} + {1553958000 43200 1 MAGST} + {1572102000 39600 0 MAGT} + {1585407600 43200 1 MAGST} + {1603551600 39600 0 MAGT} + {1616857200 43200 1 MAGST} + {1635606000 39600 0 MAGT} + {1648306800 43200 1 MAGST} + {1667055600 39600 0 MAGT} + {1679756400 43200 1 MAGST} + {1698505200 39600 0 MAGT} + {1711810800 43200 1 MAGST} + {1729954800 39600 0 MAGT} + {1743260400 43200 1 MAGST} + {1761404400 39600 0 MAGT} + {1774710000 43200 1 MAGST} + {1792854000 39600 0 MAGT} + {1806159600 43200 1 MAGST} + {1824908400 39600 0 MAGT} + {1837609200 43200 1 MAGST} + {1856358000 39600 0 MAGT} + {1869058800 43200 1 MAGST} + {1887807600 39600 0 MAGT} + {1901113200 43200 1 MAGST} + {1919257200 39600 0 MAGT} + {1932562800 43200 1 MAGST} + {1950706800 39600 0 MAGT} + {1964012400 43200 1 MAGST} + {1982761200 39600 0 MAGT} + {1995462000 43200 1 MAGST} + {2014210800 39600 0 MAGT} + {2026911600 43200 1 MAGST} + {2045660400 39600 0 MAGT} + {2058361200 43200 1 MAGST} + {2077110000 39600 0 MAGT} + {2090415600 43200 1 MAGST} + {2108559600 39600 0 MAGT} + {2121865200 43200 1 MAGST} + {2140009200 39600 0 MAGT} + {2153314800 43200 1 MAGST} + {2172063600 39600 0 MAGT} + {2184764400 43200 1 MAGST} + {2203513200 39600 0 MAGT} + {2216214000 43200 1 MAGST} + {2234962800 39600 0 MAGT} + {2248268400 43200 1 MAGST} + {2266412400 39600 0 MAGT} + {2279718000 43200 1 MAGST} + {2297862000 39600 0 MAGT} + {2311167600 43200 1 MAGST} + {2329311600 39600 0 MAGT} + {2342617200 43200 1 MAGST} + {2361366000 39600 0 MAGT} + {2374066800 43200 1 MAGST} + {2392815600 39600 0 MAGT} + {2405516400 43200 1 MAGST} + {2424265200 39600 0 MAGT} + {2437570800 43200 1 MAGST} + {2455714800 39600 0 MAGT} + {2469020400 43200 1 MAGST} + {2487164400 39600 0 MAGT} + {2500470000 43200 1 MAGST} + {2519218800 39600 0 MAGT} + {2531919600 43200 1 MAGST} + {2550668400 39600 0 MAGT} + {2563369200 43200 1 MAGST} + {2582118000 39600 0 MAGT} + {2595423600 43200 1 MAGST} + {2613567600 39600 0 MAGT} + {2626873200 43200 1 MAGST} + {2645017200 39600 0 MAGT} + {2658322800 43200 1 MAGST} + {2676466800 39600 0 MAGT} + {2689772400 43200 1 MAGST} + {2708521200 39600 0 MAGT} + {2721222000 43200 1 MAGST} + {2739970800 39600 0 MAGT} + {2752671600 43200 1 MAGST} + {2771420400 39600 0 MAGT} + {2784726000 43200 1 MAGST} + {2802870000 39600 0 MAGT} + {2816175600 43200 1 MAGST} + {2834319600 39600 0 MAGT} + {2847625200 43200 1 MAGST} + {2866374000 39600 0 MAGT} + {2879074800 43200 1 MAGST} + {2897823600 39600 0 MAGT} + {2910524400 43200 1 MAGST} + {2929273200 39600 0 MAGT} + {2941974000 43200 1 MAGST} + {2960722800 39600 0 MAGT} + {2974028400 43200 1 MAGST} + {2992172400 39600 0 MAGT} + {3005478000 43200 1 MAGST} + {3023622000 39600 0 MAGT} + {3036927600 43200 1 MAGST} + {3055676400 39600 0 MAGT} + {3068377200 43200 1 MAGST} + {3087126000 39600 0 MAGT} + {3099826800 43200 1 MAGST} + {3118575600 39600 0 MAGT} + {3131881200 43200 1 MAGST} + {3150025200 39600 0 MAGT} + {3163330800 43200 1 MAGST} + {3181474800 39600 0 MAGT} + {3194780400 43200 1 MAGST} + {3212924400 39600 0 MAGT} + {3226230000 43200 1 MAGST} + {3244978800 39600 0 MAGT} + {3257679600 43200 1 MAGST} + {3276428400 39600 0 MAGT} + {3289129200 43200 1 MAGST} + {3307878000 39600 0 MAGT} + {3321183600 43200 1 MAGST} + {3339327600 39600 0 MAGT} + {3352633200 43200 1 MAGST} + {3370777200 39600 0 MAGT} + {3384082800 43200 1 MAGST} + {3402831600 39600 0 MAGT} + {3415532400 43200 1 MAGST} + {3434281200 39600 0 MAGT} + {3446982000 43200 1 MAGST} + {3465730800 39600 0 MAGT} + {3479036400 43200 1 MAGST} + {3497180400 39600 0 MAGT} + {3510486000 43200 1 MAGST} + {3528630000 39600 0 MAGT} + {3541935600 43200 1 MAGST} + {3560079600 39600 0 MAGT} + {3573385200 43200 1 MAGST} + {3592134000 39600 0 MAGT} + {3604834800 43200 1 MAGST} + {3623583600 39600 0 MAGT} + {3636284400 43200 1 MAGST} + {3655033200 39600 0 MAGT} + {3668338800 43200 1 MAGST} + {3686482800 39600 0 MAGT} + {3699788400 43200 1 MAGST} + {3717932400 39600 0 MAGT} + {3731238000 43200 1 MAGST} + {3749986800 39600 0 MAGT} + {3762687600 43200 1 MAGST} + {3781436400 39600 0 MAGT} + {3794137200 43200 1 MAGST} + {3812886000 39600 0 MAGT} + {3825586800 43200 1 MAGST} + {3844335600 39600 0 MAGT} + {3857641200 43200 1 MAGST} + {3875785200 39600 0 MAGT} + {3889090800 43200 1 MAGST} + {3907234800 39600 0 MAGT} + {3920540400 43200 1 MAGST} + {3939289200 39600 0 MAGT} + {3951990000 43200 1 MAGST} + {3970738800 39600 0 MAGT} + {3983439600 43200 1 MAGST} + {4002188400 39600 0 MAGT} + {4015494000 43200 1 MAGST} + {4033638000 39600 0 MAGT} + {4046943600 43200 1 MAGST} + {4065087600 39600 0 MAGT} + {4078393200 43200 1 MAGST} + {4096537200 39600 0 MAGT} +} diff --git a/library/tzdata/Asia/Makassar b/library/tzdata/Asia/Makassar index 9887d0e..aa604b4 100644 --- a/library/tzdata/Asia/Makassar +++ b/library/tzdata/Asia/Makassar @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Makassar) { - {-9223372036854775808 28656 0 LMT} - {-1577951856 28656 0 MMT} - {-1172908656 28800 0 CIT} - {-880272000 32400 0 JST} - {-766054800 28800 0 CIT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Makassar) { + {-9223372036854775808 28656 0 LMT} + {-1577951856 28656 0 MMT} + {-1172908656 28800 0 CIT} + {-880272000 32400 0 JST} + {-766054800 28800 0 CIT} +} diff --git a/library/tzdata/Asia/Manila b/library/tzdata/Asia/Manila index ab9b8d4..9cc25e8 100644 --- a/library/tzdata/Asia/Manila +++ b/library/tzdata/Asia/Manila @@ -1,15 +1,15 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Manila) { - {-9223372036854775808 -57360 0 LMT} - {-3944621040 29040 0 LMT} - {-2229321840 28800 0 PHT} - {-1046678400 32400 1 PHST} - {-1038733200 28800 0 PHT} - {-873273600 32400 0 JST} - {-794221200 28800 0 PHT} - {-496224000 32400 1 PHST} - {-489315600 28800 0 PHT} - {259344000 32400 1 PHST} - {275151600 28800 0 PHT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Manila) { + {-9223372036854775808 -57360 0 LMT} + {-3944621040 29040 0 LMT} + {-2229321840 28800 0 PHT} + {-1046678400 32400 1 PHST} + {-1038733200 28800 0 PHT} + {-873273600 32400 0 JST} + {-794221200 28800 0 PHT} + {-496224000 32400 1 PHST} + {-489315600 28800 0 PHT} + {259344000 32400 1 PHST} + {275151600 28800 0 PHT} +} diff --git a/library/tzdata/Asia/Muscat b/library/tzdata/Asia/Muscat index 13abf7a..21b5873 100644 --- a/library/tzdata/Asia/Muscat +++ b/library/tzdata/Asia/Muscat @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Muscat) { - {-9223372036854775808 14060 0 LMT} - {-1577937260 14400 0 GST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Muscat) { + {-9223372036854775808 14060 0 LMT} + {-1577937260 14400 0 GST} +} diff --git a/library/tzdata/Asia/Nicosia b/library/tzdata/Asia/Nicosia index 89279d4..73a7b4c 100644 --- a/library/tzdata/Asia/Nicosia +++ b/library/tzdata/Asia/Nicosia @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Nicosia) { - {-9223372036854775808 8008 0 LMT} - {-1518920008 7200 0 EET} - {166572000 10800 1 EEST} - {182293200 7200 0 EET} - {200959200 10800 1 EEST} - {213829200 7200 0 EET} - {228866400 10800 1 EEST} - {243982800 7200 0 EET} - {260316000 10800 1 EEST} - {276123600 7200 0 EET} - {291765600 10800 1 EEST} - {307486800 7200 0 EET} - {323820000 10800 1 EEST} - {338936400 7200 0 EET} - {354664800 10800 1 EEST} - {370386000 7200 0 EET} - {386114400 10800 1 EEST} - {401835600 7200 0 EET} - {417564000 10800 1 EEST} - {433285200 7200 0 EET} - {449013600 10800 1 EEST} - {465339600 7200 0 EET} - {481068000 10800 1 EEST} - {496789200 7200 0 EET} - {512517600 10800 1 EEST} - {528238800 7200 0 EET} - {543967200 10800 1 EEST} - {559688400 7200 0 EET} - {575416800 10800 1 EEST} - {591138000 7200 0 EET} - {606866400 10800 1 EEST} - {622587600 7200 0 EET} - {638316000 10800 1 EEST} - {654642000 7200 0 EET} - {670370400 10800 1 EEST} - {686091600 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {843944400 7200 0 EET} - {859672800 10800 1 EEST} - {875394000 7200 0 EET} - {891122400 10800 1 EEST} - {904597200 10800 0 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Nicosia) { + {-9223372036854775808 8008 0 LMT} + {-1518920008 7200 0 EET} + {166572000 10800 1 EEST} + {182293200 7200 0 EET} + {200959200 10800 1 EEST} + {213829200 7200 0 EET} + {228866400 10800 1 EEST} + {243982800 7200 0 EET} + {260316000 10800 1 EEST} + {276123600 7200 0 EET} + {291765600 10800 1 EEST} + {307486800 7200 0 EET} + {323820000 10800 1 EEST} + {338936400 7200 0 EET} + {354664800 10800 1 EEST} + {370386000 7200 0 EET} + {386114400 10800 1 EEST} + {401835600 7200 0 EET} + {417564000 10800 1 EEST} + {433285200 7200 0 EET} + {449013600 10800 1 EEST} + {465339600 7200 0 EET} + {481068000 10800 1 EEST} + {496789200 7200 0 EET} + {512517600 10800 1 EEST} + {528238800 7200 0 EET} + {543967200 10800 1 EEST} + {559688400 7200 0 EET} + {575416800 10800 1 EEST} + {591138000 7200 0 EET} + {606866400 10800 1 EEST} + {622587600 7200 0 EET} + {638316000 10800 1 EEST} + {654642000 7200 0 EET} + {670370400 10800 1 EEST} + {686091600 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {843944400 7200 0 EET} + {859672800 10800 1 EEST} + {875394000 7200 0 EET} + {891122400 10800 1 EEST} + {904597200 10800 0 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Asia/Novosibirsk b/library/tzdata/Asia/Novosibirsk index d04207c..0b35658 100644 --- a/library/tzdata/Asia/Novosibirsk +++ b/library/tzdata/Asia/Novosibirsk @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Novosibirsk) { - {-9223372036854775808 19900 0 LMT} - {-1579476700 21600 0 NOVT} - {-1247551200 25200 0 NOVMMTT} - {354906000 28800 1 NOVST} - {370713600 25200 0 NOVT} - {386442000 28800 1 NOVST} - {402249600 25200 0 NOVT} - {417978000 28800 1 NOVST} - {433785600 25200 0 NOVT} - {449600400 28800 1 NOVST} - {465332400 25200 0 NOVT} - {481057200 28800 1 NOVST} - {496782000 25200 0 NOVT} - {512506800 28800 1 NOVST} - {528231600 25200 0 NOVT} - {543956400 28800 1 NOVST} - {559681200 25200 0 NOVT} - {575406000 28800 1 NOVST} - {591130800 25200 0 NOVT} - {606855600 28800 1 NOVST} - {622580400 25200 0 NOVT} - {638305200 28800 1 NOVST} - {654634800 25200 0 NOVT} - {670359600 21600 0 NOVMMTT} - {670363200 25200 1 NOVST} - {686088000 21600 0 NOVT} - {695764800 25200 0 NOVMMTT} - {701798400 28800 1 NOVST} - {717519600 25200 0 NOVT} - {733258800 28800 1 NOVST} - {738090000 25200 0 NOVST} - {748987200 21600 0 NOVT} - {764712000 25200 1 NOVST} - {780436800 21600 0 NOVT} - {796161600 25200 1 NOVST} - {811886400 21600 0 NOVT} - {828216000 25200 1 NOVST} - {846360000 21600 0 NOVT} - {859665600 25200 1 NOVST} - {877809600 21600 0 NOVT} - {891115200 25200 1 NOVST} - {909259200 21600 0 NOVT} - {922564800 25200 1 NOVST} - {941313600 21600 0 NOVT} - {954014400 25200 1 NOVST} - {972763200 21600 0 NOVT} - {985464000 25200 1 NOVST} - {1004212800 21600 0 NOVT} - {1017518400 25200 1 NOVST} - {1035662400 21600 0 NOVT} - {1048968000 25200 1 NOVST} - {1067112000 21600 0 NOVT} - {1080417600 25200 1 NOVST} - {1099166400 21600 0 NOVT} - {1111867200 25200 1 NOVST} - {1130616000 21600 0 NOVT} - {1143316800 25200 1 NOVST} - {1162065600 21600 0 NOVT} - {1174766400 25200 1 NOVST} - {1193515200 21600 0 NOVT} - {1206820800 25200 1 NOVST} - {1224964800 21600 0 NOVT} - {1238270400 25200 1 NOVST} - {1256414400 21600 0 NOVT} - {1269720000 25200 1 NOVST} - {1288468800 21600 0 NOVT} - {1301169600 25200 1 NOVST} - {1319918400 21600 0 NOVT} - {1332619200 25200 1 NOVST} - {1351368000 21600 0 NOVT} - {1364673600 25200 1 NOVST} - {1382817600 21600 0 NOVT} - {1396123200 25200 1 NOVST} - {1414267200 21600 0 NOVT} - {1427572800 25200 1 NOVST} - {1445716800 21600 0 NOVT} - {1459022400 25200 1 NOVST} - {1477771200 21600 0 NOVT} - {1490472000 25200 1 NOVST} - {1509220800 21600 0 NOVT} - {1521921600 25200 1 NOVST} - {1540670400 21600 0 NOVT} - {1553976000 25200 1 NOVST} - {1572120000 21600 0 NOVT} - {1585425600 25200 1 NOVST} - {1603569600 21600 0 NOVT} - {1616875200 25200 1 NOVST} - {1635624000 21600 0 NOVT} - {1648324800 25200 1 NOVST} - {1667073600 21600 0 NOVT} - {1679774400 25200 1 NOVST} - {1698523200 21600 0 NOVT} - {1711828800 25200 1 NOVST} - {1729972800 21600 0 NOVT} - {1743278400 25200 1 NOVST} - {1761422400 21600 0 NOVT} - {1774728000 25200 1 NOVST} - {1792872000 21600 0 NOVT} - {1806177600 25200 1 NOVST} - {1824926400 21600 0 NOVT} - {1837627200 25200 1 NOVST} - {1856376000 21600 0 NOVT} - {1869076800 25200 1 NOVST} - {1887825600 21600 0 NOVT} - {1901131200 25200 1 NOVST} - {1919275200 21600 0 NOVT} - {1932580800 25200 1 NOVST} - {1950724800 21600 0 NOVT} - {1964030400 25200 1 NOVST} - {1982779200 21600 0 NOVT} - {1995480000 25200 1 NOVST} - {2014228800 21600 0 NOVT} - {2026929600 25200 1 NOVST} - {2045678400 21600 0 NOVT} - {2058379200 25200 1 NOVST} - {2077128000 21600 0 NOVT} - {2090433600 25200 1 NOVST} - {2108577600 21600 0 NOVT} - {2121883200 25200 1 NOVST} - {2140027200 21600 0 NOVT} - {2153332800 25200 1 NOVST} - {2172081600 21600 0 NOVT} - {2184782400 25200 1 NOVST} - {2203531200 21600 0 NOVT} - {2216232000 25200 1 NOVST} - {2234980800 21600 0 NOVT} - {2248286400 25200 1 NOVST} - {2266430400 21600 0 NOVT} - {2279736000 25200 1 NOVST} - {2297880000 21600 0 NOVT} - {2311185600 25200 1 NOVST} - {2329329600 21600 0 NOVT} - {2342635200 25200 1 NOVST} - {2361384000 21600 0 NOVT} - {2374084800 25200 1 NOVST} - {2392833600 21600 0 NOVT} - {2405534400 25200 1 NOVST} - {2424283200 21600 0 NOVT} - {2437588800 25200 1 NOVST} - {2455732800 21600 0 NOVT} - {2469038400 25200 1 NOVST} - {2487182400 21600 0 NOVT} - {2500488000 25200 1 NOVST} - {2519236800 21600 0 NOVT} - {2531937600 25200 1 NOVST} - {2550686400 21600 0 NOVT} - {2563387200 25200 1 NOVST} - {2582136000 21600 0 NOVT} - {2595441600 25200 1 NOVST} - {2613585600 21600 0 NOVT} - {2626891200 25200 1 NOVST} - {2645035200 21600 0 NOVT} - {2658340800 25200 1 NOVST} - {2676484800 21600 0 NOVT} - {2689790400 25200 1 NOVST} - {2708539200 21600 0 NOVT} - {2721240000 25200 1 NOVST} - {2739988800 21600 0 NOVT} - {2752689600 25200 1 NOVST} - {2771438400 21600 0 NOVT} - {2784744000 25200 1 NOVST} - {2802888000 21600 0 NOVT} - {2816193600 25200 1 NOVST} - {2834337600 21600 0 NOVT} - {2847643200 25200 1 NOVST} - {2866392000 21600 0 NOVT} - {2879092800 25200 1 NOVST} - {2897841600 21600 0 NOVT} - {2910542400 25200 1 NOVST} - {2929291200 21600 0 NOVT} - {2941992000 25200 1 NOVST} - {2960740800 21600 0 NOVT} - {2974046400 25200 1 NOVST} - {2992190400 21600 0 NOVT} - {3005496000 25200 1 NOVST} - {3023640000 21600 0 NOVT} - {3036945600 25200 1 NOVST} - {3055694400 21600 0 NOVT} - {3068395200 25200 1 NOVST} - {3087144000 21600 0 NOVT} - {3099844800 25200 1 NOVST} - {3118593600 21600 0 NOVT} - {3131899200 25200 1 NOVST} - {3150043200 21600 0 NOVT} - {3163348800 25200 1 NOVST} - {3181492800 21600 0 NOVT} - {3194798400 25200 1 NOVST} - {3212942400 21600 0 NOVT} - {3226248000 25200 1 NOVST} - {3244996800 21600 0 NOVT} - {3257697600 25200 1 NOVST} - {3276446400 21600 0 NOVT} - {3289147200 25200 1 NOVST} - {3307896000 21600 0 NOVT} - {3321201600 25200 1 NOVST} - {3339345600 21600 0 NOVT} - {3352651200 25200 1 NOVST} - {3370795200 21600 0 NOVT} - {3384100800 25200 1 NOVST} - {3402849600 21600 0 NOVT} - {3415550400 25200 1 NOVST} - {3434299200 21600 0 NOVT} - {3447000000 25200 1 NOVST} - {3465748800 21600 0 NOVT} - {3479054400 25200 1 NOVST} - {3497198400 21600 0 NOVT} - {3510504000 25200 1 NOVST} - {3528648000 21600 0 NOVT} - {3541953600 25200 1 NOVST} - {3560097600 21600 0 NOVT} - {3573403200 25200 1 NOVST} - {3592152000 21600 0 NOVT} - {3604852800 25200 1 NOVST} - {3623601600 21600 0 NOVT} - {3636302400 25200 1 NOVST} - {3655051200 21600 0 NOVT} - {3668356800 25200 1 NOVST} - {3686500800 21600 0 NOVT} - {3699806400 25200 1 NOVST} - {3717950400 21600 0 NOVT} - {3731256000 25200 1 NOVST} - {3750004800 21600 0 NOVT} - {3762705600 25200 1 NOVST} - {3781454400 21600 0 NOVT} - {3794155200 25200 1 NOVST} - {3812904000 21600 0 NOVT} - {3825604800 25200 1 NOVST} - {3844353600 21600 0 NOVT} - {3857659200 25200 1 NOVST} - {3875803200 21600 0 NOVT} - {3889108800 25200 1 NOVST} - {3907252800 21600 0 NOVT} - {3920558400 25200 1 NOVST} - {3939307200 21600 0 NOVT} - {3952008000 25200 1 NOVST} - {3970756800 21600 0 NOVT} - {3983457600 25200 1 NOVST} - {4002206400 21600 0 NOVT} - {4015512000 25200 1 NOVST} - {4033656000 21600 0 NOVT} - {4046961600 25200 1 NOVST} - {4065105600 21600 0 NOVT} - {4078411200 25200 1 NOVST} - {4096555200 21600 0 NOVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Novosibirsk) { + {-9223372036854775808 19900 0 LMT} + {-1579476700 21600 0 NOVT} + {-1247551200 25200 0 NOVMMTT} + {354906000 28800 1 NOVST} + {370713600 25200 0 NOVT} + {386442000 28800 1 NOVST} + {402249600 25200 0 NOVT} + {417978000 28800 1 NOVST} + {433785600 25200 0 NOVT} + {449600400 28800 1 NOVST} + {465332400 25200 0 NOVT} + {481057200 28800 1 NOVST} + {496782000 25200 0 NOVT} + {512506800 28800 1 NOVST} + {528231600 25200 0 NOVT} + {543956400 28800 1 NOVST} + {559681200 25200 0 NOVT} + {575406000 28800 1 NOVST} + {591130800 25200 0 NOVT} + {606855600 28800 1 NOVST} + {622580400 25200 0 NOVT} + {638305200 28800 1 NOVST} + {654634800 25200 0 NOVT} + {670359600 21600 0 NOVMMTT} + {670363200 25200 1 NOVST} + {686088000 21600 0 NOVT} + {695764800 25200 0 NOVMMTT} + {701798400 28800 1 NOVST} + {717519600 25200 0 NOVT} + {733258800 28800 1 NOVST} + {738090000 25200 0 NOVST} + {748987200 21600 0 NOVT} + {764712000 25200 1 NOVST} + {780436800 21600 0 NOVT} + {796161600 25200 1 NOVST} + {811886400 21600 0 NOVT} + {828216000 25200 1 NOVST} + {846360000 21600 0 NOVT} + {859665600 25200 1 NOVST} + {877809600 21600 0 NOVT} + {891115200 25200 1 NOVST} + {909259200 21600 0 NOVT} + {922564800 25200 1 NOVST} + {941313600 21600 0 NOVT} + {954014400 25200 1 NOVST} + {972763200 21600 0 NOVT} + {985464000 25200 1 NOVST} + {1004212800 21600 0 NOVT} + {1017518400 25200 1 NOVST} + {1035662400 21600 0 NOVT} + {1048968000 25200 1 NOVST} + {1067112000 21600 0 NOVT} + {1080417600 25200 1 NOVST} + {1099166400 21600 0 NOVT} + {1111867200 25200 1 NOVST} + {1130616000 21600 0 NOVT} + {1143316800 25200 1 NOVST} + {1162065600 21600 0 NOVT} + {1174766400 25200 1 NOVST} + {1193515200 21600 0 NOVT} + {1206820800 25200 1 NOVST} + {1224964800 21600 0 NOVT} + {1238270400 25200 1 NOVST} + {1256414400 21600 0 NOVT} + {1269720000 25200 1 NOVST} + {1288468800 21600 0 NOVT} + {1301169600 25200 1 NOVST} + {1319918400 21600 0 NOVT} + {1332619200 25200 1 NOVST} + {1351368000 21600 0 NOVT} + {1364673600 25200 1 NOVST} + {1382817600 21600 0 NOVT} + {1396123200 25200 1 NOVST} + {1414267200 21600 0 NOVT} + {1427572800 25200 1 NOVST} + {1445716800 21600 0 NOVT} + {1459022400 25200 1 NOVST} + {1477771200 21600 0 NOVT} + {1490472000 25200 1 NOVST} + {1509220800 21600 0 NOVT} + {1521921600 25200 1 NOVST} + {1540670400 21600 0 NOVT} + {1553976000 25200 1 NOVST} + {1572120000 21600 0 NOVT} + {1585425600 25200 1 NOVST} + {1603569600 21600 0 NOVT} + {1616875200 25200 1 NOVST} + {1635624000 21600 0 NOVT} + {1648324800 25200 1 NOVST} + {1667073600 21600 0 NOVT} + {1679774400 25200 1 NOVST} + {1698523200 21600 0 NOVT} + {1711828800 25200 1 NOVST} + {1729972800 21600 0 NOVT} + {1743278400 25200 1 NOVST} + {1761422400 21600 0 NOVT} + {1774728000 25200 1 NOVST} + {1792872000 21600 0 NOVT} + {1806177600 25200 1 NOVST} + {1824926400 21600 0 NOVT} + {1837627200 25200 1 NOVST} + {1856376000 21600 0 NOVT} + {1869076800 25200 1 NOVST} + {1887825600 21600 0 NOVT} + {1901131200 25200 1 NOVST} + {1919275200 21600 0 NOVT} + {1932580800 25200 1 NOVST} + {1950724800 21600 0 NOVT} + {1964030400 25200 1 NOVST} + {1982779200 21600 0 NOVT} + {1995480000 25200 1 NOVST} + {2014228800 21600 0 NOVT} + {2026929600 25200 1 NOVST} + {2045678400 21600 0 NOVT} + {2058379200 25200 1 NOVST} + {2077128000 21600 0 NOVT} + {2090433600 25200 1 NOVST} + {2108577600 21600 0 NOVT} + {2121883200 25200 1 NOVST} + {2140027200 21600 0 NOVT} + {2153332800 25200 1 NOVST} + {2172081600 21600 0 NOVT} + {2184782400 25200 1 NOVST} + {2203531200 21600 0 NOVT} + {2216232000 25200 1 NOVST} + {2234980800 21600 0 NOVT} + {2248286400 25200 1 NOVST} + {2266430400 21600 0 NOVT} + {2279736000 25200 1 NOVST} + {2297880000 21600 0 NOVT} + {2311185600 25200 1 NOVST} + {2329329600 21600 0 NOVT} + {2342635200 25200 1 NOVST} + {2361384000 21600 0 NOVT} + {2374084800 25200 1 NOVST} + {2392833600 21600 0 NOVT} + {2405534400 25200 1 NOVST} + {2424283200 21600 0 NOVT} + {2437588800 25200 1 NOVST} + {2455732800 21600 0 NOVT} + {2469038400 25200 1 NOVST} + {2487182400 21600 0 NOVT} + {2500488000 25200 1 NOVST} + {2519236800 21600 0 NOVT} + {2531937600 25200 1 NOVST} + {2550686400 21600 0 NOVT} + {2563387200 25200 1 NOVST} + {2582136000 21600 0 NOVT} + {2595441600 25200 1 NOVST} + {2613585600 21600 0 NOVT} + {2626891200 25200 1 NOVST} + {2645035200 21600 0 NOVT} + {2658340800 25200 1 NOVST} + {2676484800 21600 0 NOVT} + {2689790400 25200 1 NOVST} + {2708539200 21600 0 NOVT} + {2721240000 25200 1 NOVST} + {2739988800 21600 0 NOVT} + {2752689600 25200 1 NOVST} + {2771438400 21600 0 NOVT} + {2784744000 25200 1 NOVST} + {2802888000 21600 0 NOVT} + {2816193600 25200 1 NOVST} + {2834337600 21600 0 NOVT} + {2847643200 25200 1 NOVST} + {2866392000 21600 0 NOVT} + {2879092800 25200 1 NOVST} + {2897841600 21600 0 NOVT} + {2910542400 25200 1 NOVST} + {2929291200 21600 0 NOVT} + {2941992000 25200 1 NOVST} + {2960740800 21600 0 NOVT} + {2974046400 25200 1 NOVST} + {2992190400 21600 0 NOVT} + {3005496000 25200 1 NOVST} + {3023640000 21600 0 NOVT} + {3036945600 25200 1 NOVST} + {3055694400 21600 0 NOVT} + {3068395200 25200 1 NOVST} + {3087144000 21600 0 NOVT} + {3099844800 25200 1 NOVST} + {3118593600 21600 0 NOVT} + {3131899200 25200 1 NOVST} + {3150043200 21600 0 NOVT} + {3163348800 25200 1 NOVST} + {3181492800 21600 0 NOVT} + {3194798400 25200 1 NOVST} + {3212942400 21600 0 NOVT} + {3226248000 25200 1 NOVST} + {3244996800 21600 0 NOVT} + {3257697600 25200 1 NOVST} + {3276446400 21600 0 NOVT} + {3289147200 25200 1 NOVST} + {3307896000 21600 0 NOVT} + {3321201600 25200 1 NOVST} + {3339345600 21600 0 NOVT} + {3352651200 25200 1 NOVST} + {3370795200 21600 0 NOVT} + {3384100800 25200 1 NOVST} + {3402849600 21600 0 NOVT} + {3415550400 25200 1 NOVST} + {3434299200 21600 0 NOVT} + {3447000000 25200 1 NOVST} + {3465748800 21600 0 NOVT} + {3479054400 25200 1 NOVST} + {3497198400 21600 0 NOVT} + {3510504000 25200 1 NOVST} + {3528648000 21600 0 NOVT} + {3541953600 25200 1 NOVST} + {3560097600 21600 0 NOVT} + {3573403200 25200 1 NOVST} + {3592152000 21600 0 NOVT} + {3604852800 25200 1 NOVST} + {3623601600 21600 0 NOVT} + {3636302400 25200 1 NOVST} + {3655051200 21600 0 NOVT} + {3668356800 25200 1 NOVST} + {3686500800 21600 0 NOVT} + {3699806400 25200 1 NOVST} + {3717950400 21600 0 NOVT} + {3731256000 25200 1 NOVST} + {3750004800 21600 0 NOVT} + {3762705600 25200 1 NOVST} + {3781454400 21600 0 NOVT} + {3794155200 25200 1 NOVST} + {3812904000 21600 0 NOVT} + {3825604800 25200 1 NOVST} + {3844353600 21600 0 NOVT} + {3857659200 25200 1 NOVST} + {3875803200 21600 0 NOVT} + {3889108800 25200 1 NOVST} + {3907252800 21600 0 NOVT} + {3920558400 25200 1 NOVST} + {3939307200 21600 0 NOVT} + {3952008000 25200 1 NOVST} + {3970756800 21600 0 NOVT} + {3983457600 25200 1 NOVST} + {4002206400 21600 0 NOVT} + {4015512000 25200 1 NOVST} + {4033656000 21600 0 NOVT} + {4046961600 25200 1 NOVST} + {4065105600 21600 0 NOVT} + {4078411200 25200 1 NOVST} + {4096555200 21600 0 NOVT} +} diff --git a/library/tzdata/Asia/Omsk b/library/tzdata/Asia/Omsk index 8502050..21db9c9 100644 --- a/library/tzdata/Asia/Omsk +++ b/library/tzdata/Asia/Omsk @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Omsk) { - {-9223372036854775808 17616 0 LMT} - {-1582088016 18000 0 OMST} - {-1247547600 21600 0 OMSMMTT} - {354909600 25200 1 OMSST} - {370717200 21600 0 OMST} - {386445600 25200 1 OMSST} - {402253200 21600 0 OMST} - {417981600 25200 1 OMSST} - {433789200 21600 0 OMST} - {449604000 25200 1 OMSST} - {465336000 21600 0 OMST} - {481060800 25200 1 OMSST} - {496785600 21600 0 OMST} - {512510400 25200 1 OMSST} - {528235200 21600 0 OMST} - {543960000 25200 1 OMSST} - {559684800 21600 0 OMST} - {575409600 25200 1 OMSST} - {591134400 21600 0 OMST} - {606859200 25200 1 OMSST} - {622584000 21600 0 OMST} - {638308800 25200 1 OMSST} - {654638400 21600 0 OMST} - {670363200 18000 0 OMSMMTT} - {670366800 21600 1 OMSST} - {686091600 18000 0 OMST} - {695768400 21600 0 OMSMMTT} - {701802000 25200 1 OMSST} - {717523200 21600 0 OMST} - {733262400 25200 1 OMSST} - {748987200 21600 0 OMST} - {764712000 25200 1 OMSST} - {780436800 21600 0 OMST} - {796161600 25200 1 OMSST} - {811886400 21600 0 OMST} - {828216000 25200 1 OMSST} - {846360000 21600 0 OMST} - {859665600 25200 1 OMSST} - {877809600 21600 0 OMST} - {891115200 25200 1 OMSST} - {909259200 21600 0 OMST} - {922564800 25200 1 OMSST} - {941313600 21600 0 OMST} - {954014400 25200 1 OMSST} - {972763200 21600 0 OMST} - {985464000 25200 1 OMSST} - {1004212800 21600 0 OMST} - {1017518400 25200 1 OMSST} - {1035662400 21600 0 OMST} - {1048968000 25200 1 OMSST} - {1067112000 21600 0 OMST} - {1080417600 25200 1 OMSST} - {1099166400 21600 0 OMST} - {1111867200 25200 1 OMSST} - {1130616000 21600 0 OMST} - {1143316800 25200 1 OMSST} - {1162065600 21600 0 OMST} - {1174766400 25200 1 OMSST} - {1193515200 21600 0 OMST} - {1206820800 25200 1 OMSST} - {1224964800 21600 0 OMST} - {1238270400 25200 1 OMSST} - {1256414400 21600 0 OMST} - {1269720000 25200 1 OMSST} - {1288468800 21600 0 OMST} - {1301169600 25200 1 OMSST} - {1319918400 21600 0 OMST} - {1332619200 25200 1 OMSST} - {1351368000 21600 0 OMST} - {1364673600 25200 1 OMSST} - {1382817600 21600 0 OMST} - {1396123200 25200 1 OMSST} - {1414267200 21600 0 OMST} - {1427572800 25200 1 OMSST} - {1445716800 21600 0 OMST} - {1459022400 25200 1 OMSST} - {1477771200 21600 0 OMST} - {1490472000 25200 1 OMSST} - {1509220800 21600 0 OMST} - {1521921600 25200 1 OMSST} - {1540670400 21600 0 OMST} - {1553976000 25200 1 OMSST} - {1572120000 21600 0 OMST} - {1585425600 25200 1 OMSST} - {1603569600 21600 0 OMST} - {1616875200 25200 1 OMSST} - {1635624000 21600 0 OMST} - {1648324800 25200 1 OMSST} - {1667073600 21600 0 OMST} - {1679774400 25200 1 OMSST} - {1698523200 21600 0 OMST} - {1711828800 25200 1 OMSST} - {1729972800 21600 0 OMST} - {1743278400 25200 1 OMSST} - {1761422400 21600 0 OMST} - {1774728000 25200 1 OMSST} - {1792872000 21600 0 OMST} - {1806177600 25200 1 OMSST} - {1824926400 21600 0 OMST} - {1837627200 25200 1 OMSST} - {1856376000 21600 0 OMST} - {1869076800 25200 1 OMSST} - {1887825600 21600 0 OMST} - {1901131200 25200 1 OMSST} - {1919275200 21600 0 OMST} - {1932580800 25200 1 OMSST} - {1950724800 21600 0 OMST} - {1964030400 25200 1 OMSST} - {1982779200 21600 0 OMST} - {1995480000 25200 1 OMSST} - {2014228800 21600 0 OMST} - {2026929600 25200 1 OMSST} - {2045678400 21600 0 OMST} - {2058379200 25200 1 OMSST} - {2077128000 21600 0 OMST} - {2090433600 25200 1 OMSST} - {2108577600 21600 0 OMST} - {2121883200 25200 1 OMSST} - {2140027200 21600 0 OMST} - {2153332800 25200 1 OMSST} - {2172081600 21600 0 OMST} - {2184782400 25200 1 OMSST} - {2203531200 21600 0 OMST} - {2216232000 25200 1 OMSST} - {2234980800 21600 0 OMST} - {2248286400 25200 1 OMSST} - {2266430400 21600 0 OMST} - {2279736000 25200 1 OMSST} - {2297880000 21600 0 OMST} - {2311185600 25200 1 OMSST} - {2329329600 21600 0 OMST} - {2342635200 25200 1 OMSST} - {2361384000 21600 0 OMST} - {2374084800 25200 1 OMSST} - {2392833600 21600 0 OMST} - {2405534400 25200 1 OMSST} - {2424283200 21600 0 OMST} - {2437588800 25200 1 OMSST} - {2455732800 21600 0 OMST} - {2469038400 25200 1 OMSST} - {2487182400 21600 0 OMST} - {2500488000 25200 1 OMSST} - {2519236800 21600 0 OMST} - {2531937600 25200 1 OMSST} - {2550686400 21600 0 OMST} - {2563387200 25200 1 OMSST} - {2582136000 21600 0 OMST} - {2595441600 25200 1 OMSST} - {2613585600 21600 0 OMST} - {2626891200 25200 1 OMSST} - {2645035200 21600 0 OMST} - {2658340800 25200 1 OMSST} - {2676484800 21600 0 OMST} - {2689790400 25200 1 OMSST} - {2708539200 21600 0 OMST} - {2721240000 25200 1 OMSST} - {2739988800 21600 0 OMST} - {2752689600 25200 1 OMSST} - {2771438400 21600 0 OMST} - {2784744000 25200 1 OMSST} - {2802888000 21600 0 OMST} - {2816193600 25200 1 OMSST} - {2834337600 21600 0 OMST} - {2847643200 25200 1 OMSST} - {2866392000 21600 0 OMST} - {2879092800 25200 1 OMSST} - {2897841600 21600 0 OMST} - {2910542400 25200 1 OMSST} - {2929291200 21600 0 OMST} - {2941992000 25200 1 OMSST} - {2960740800 21600 0 OMST} - {2974046400 25200 1 OMSST} - {2992190400 21600 0 OMST} - {3005496000 25200 1 OMSST} - {3023640000 21600 0 OMST} - {3036945600 25200 1 OMSST} - {3055694400 21600 0 OMST} - {3068395200 25200 1 OMSST} - {3087144000 21600 0 OMST} - {3099844800 25200 1 OMSST} - {3118593600 21600 0 OMST} - {3131899200 25200 1 OMSST} - {3150043200 21600 0 OMST} - {3163348800 25200 1 OMSST} - {3181492800 21600 0 OMST} - {3194798400 25200 1 OMSST} - {3212942400 21600 0 OMST} - {3226248000 25200 1 OMSST} - {3244996800 21600 0 OMST} - {3257697600 25200 1 OMSST} - {3276446400 21600 0 OMST} - {3289147200 25200 1 OMSST} - {3307896000 21600 0 OMST} - {3321201600 25200 1 OMSST} - {3339345600 21600 0 OMST} - {3352651200 25200 1 OMSST} - {3370795200 21600 0 OMST} - {3384100800 25200 1 OMSST} - {3402849600 21600 0 OMST} - {3415550400 25200 1 OMSST} - {3434299200 21600 0 OMST} - {3447000000 25200 1 OMSST} - {3465748800 21600 0 OMST} - {3479054400 25200 1 OMSST} - {3497198400 21600 0 OMST} - {3510504000 25200 1 OMSST} - {3528648000 21600 0 OMST} - {3541953600 25200 1 OMSST} - {3560097600 21600 0 OMST} - {3573403200 25200 1 OMSST} - {3592152000 21600 0 OMST} - {3604852800 25200 1 OMSST} - {3623601600 21600 0 OMST} - {3636302400 25200 1 OMSST} - {3655051200 21600 0 OMST} - {3668356800 25200 1 OMSST} - {3686500800 21600 0 OMST} - {3699806400 25200 1 OMSST} - {3717950400 21600 0 OMST} - {3731256000 25200 1 OMSST} - {3750004800 21600 0 OMST} - {3762705600 25200 1 OMSST} - {3781454400 21600 0 OMST} - {3794155200 25200 1 OMSST} - {3812904000 21600 0 OMST} - {3825604800 25200 1 OMSST} - {3844353600 21600 0 OMST} - {3857659200 25200 1 OMSST} - {3875803200 21600 0 OMST} - {3889108800 25200 1 OMSST} - {3907252800 21600 0 OMST} - {3920558400 25200 1 OMSST} - {3939307200 21600 0 OMST} - {3952008000 25200 1 OMSST} - {3970756800 21600 0 OMST} - {3983457600 25200 1 OMSST} - {4002206400 21600 0 OMST} - {4015512000 25200 1 OMSST} - {4033656000 21600 0 OMST} - {4046961600 25200 1 OMSST} - {4065105600 21600 0 OMST} - {4078411200 25200 1 OMSST} - {4096555200 21600 0 OMST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Omsk) { + {-9223372036854775808 17616 0 LMT} + {-1582088016 18000 0 OMST} + {-1247547600 21600 0 OMSMMTT} + {354909600 25200 1 OMSST} + {370717200 21600 0 OMST} + {386445600 25200 1 OMSST} + {402253200 21600 0 OMST} + {417981600 25200 1 OMSST} + {433789200 21600 0 OMST} + {449604000 25200 1 OMSST} + {465336000 21600 0 OMST} + {481060800 25200 1 OMSST} + {496785600 21600 0 OMST} + {512510400 25200 1 OMSST} + {528235200 21600 0 OMST} + {543960000 25200 1 OMSST} + {559684800 21600 0 OMST} + {575409600 25200 1 OMSST} + {591134400 21600 0 OMST} + {606859200 25200 1 OMSST} + {622584000 21600 0 OMST} + {638308800 25200 1 OMSST} + {654638400 21600 0 OMST} + {670363200 18000 0 OMSMMTT} + {670366800 21600 1 OMSST} + {686091600 18000 0 OMST} + {695768400 21600 0 OMSMMTT} + {701802000 25200 1 OMSST} + {717523200 21600 0 OMST} + {733262400 25200 1 OMSST} + {748987200 21600 0 OMST} + {764712000 25200 1 OMSST} + {780436800 21600 0 OMST} + {796161600 25200 1 OMSST} + {811886400 21600 0 OMST} + {828216000 25200 1 OMSST} + {846360000 21600 0 OMST} + {859665600 25200 1 OMSST} + {877809600 21600 0 OMST} + {891115200 25200 1 OMSST} + {909259200 21600 0 OMST} + {922564800 25200 1 OMSST} + {941313600 21600 0 OMST} + {954014400 25200 1 OMSST} + {972763200 21600 0 OMST} + {985464000 25200 1 OMSST} + {1004212800 21600 0 OMST} + {1017518400 25200 1 OMSST} + {1035662400 21600 0 OMST} + {1048968000 25200 1 OMSST} + {1067112000 21600 0 OMST} + {1080417600 25200 1 OMSST} + {1099166400 21600 0 OMST} + {1111867200 25200 1 OMSST} + {1130616000 21600 0 OMST} + {1143316800 25200 1 OMSST} + {1162065600 21600 0 OMST} + {1174766400 25200 1 OMSST} + {1193515200 21600 0 OMST} + {1206820800 25200 1 OMSST} + {1224964800 21600 0 OMST} + {1238270400 25200 1 OMSST} + {1256414400 21600 0 OMST} + {1269720000 25200 1 OMSST} + {1288468800 21600 0 OMST} + {1301169600 25200 1 OMSST} + {1319918400 21600 0 OMST} + {1332619200 25200 1 OMSST} + {1351368000 21600 0 OMST} + {1364673600 25200 1 OMSST} + {1382817600 21600 0 OMST} + {1396123200 25200 1 OMSST} + {1414267200 21600 0 OMST} + {1427572800 25200 1 OMSST} + {1445716800 21600 0 OMST} + {1459022400 25200 1 OMSST} + {1477771200 21600 0 OMST} + {1490472000 25200 1 OMSST} + {1509220800 21600 0 OMST} + {1521921600 25200 1 OMSST} + {1540670400 21600 0 OMST} + {1553976000 25200 1 OMSST} + {1572120000 21600 0 OMST} + {1585425600 25200 1 OMSST} + {1603569600 21600 0 OMST} + {1616875200 25200 1 OMSST} + {1635624000 21600 0 OMST} + {1648324800 25200 1 OMSST} + {1667073600 21600 0 OMST} + {1679774400 25200 1 OMSST} + {1698523200 21600 0 OMST} + {1711828800 25200 1 OMSST} + {1729972800 21600 0 OMST} + {1743278400 25200 1 OMSST} + {1761422400 21600 0 OMST} + {1774728000 25200 1 OMSST} + {1792872000 21600 0 OMST} + {1806177600 25200 1 OMSST} + {1824926400 21600 0 OMST} + {1837627200 25200 1 OMSST} + {1856376000 21600 0 OMST} + {1869076800 25200 1 OMSST} + {1887825600 21600 0 OMST} + {1901131200 25200 1 OMSST} + {1919275200 21600 0 OMST} + {1932580800 25200 1 OMSST} + {1950724800 21600 0 OMST} + {1964030400 25200 1 OMSST} + {1982779200 21600 0 OMST} + {1995480000 25200 1 OMSST} + {2014228800 21600 0 OMST} + {2026929600 25200 1 OMSST} + {2045678400 21600 0 OMST} + {2058379200 25200 1 OMSST} + {2077128000 21600 0 OMST} + {2090433600 25200 1 OMSST} + {2108577600 21600 0 OMST} + {2121883200 25200 1 OMSST} + {2140027200 21600 0 OMST} + {2153332800 25200 1 OMSST} + {2172081600 21600 0 OMST} + {2184782400 25200 1 OMSST} + {2203531200 21600 0 OMST} + {2216232000 25200 1 OMSST} + {2234980800 21600 0 OMST} + {2248286400 25200 1 OMSST} + {2266430400 21600 0 OMST} + {2279736000 25200 1 OMSST} + {2297880000 21600 0 OMST} + {2311185600 25200 1 OMSST} + {2329329600 21600 0 OMST} + {2342635200 25200 1 OMSST} + {2361384000 21600 0 OMST} + {2374084800 25200 1 OMSST} + {2392833600 21600 0 OMST} + {2405534400 25200 1 OMSST} + {2424283200 21600 0 OMST} + {2437588800 25200 1 OMSST} + {2455732800 21600 0 OMST} + {2469038400 25200 1 OMSST} + {2487182400 21600 0 OMST} + {2500488000 25200 1 OMSST} + {2519236800 21600 0 OMST} + {2531937600 25200 1 OMSST} + {2550686400 21600 0 OMST} + {2563387200 25200 1 OMSST} + {2582136000 21600 0 OMST} + {2595441600 25200 1 OMSST} + {2613585600 21600 0 OMST} + {2626891200 25200 1 OMSST} + {2645035200 21600 0 OMST} + {2658340800 25200 1 OMSST} + {2676484800 21600 0 OMST} + {2689790400 25200 1 OMSST} + {2708539200 21600 0 OMST} + {2721240000 25200 1 OMSST} + {2739988800 21600 0 OMST} + {2752689600 25200 1 OMSST} + {2771438400 21600 0 OMST} + {2784744000 25200 1 OMSST} + {2802888000 21600 0 OMST} + {2816193600 25200 1 OMSST} + {2834337600 21600 0 OMST} + {2847643200 25200 1 OMSST} + {2866392000 21600 0 OMST} + {2879092800 25200 1 OMSST} + {2897841600 21600 0 OMST} + {2910542400 25200 1 OMSST} + {2929291200 21600 0 OMST} + {2941992000 25200 1 OMSST} + {2960740800 21600 0 OMST} + {2974046400 25200 1 OMSST} + {2992190400 21600 0 OMST} + {3005496000 25200 1 OMSST} + {3023640000 21600 0 OMST} + {3036945600 25200 1 OMSST} + {3055694400 21600 0 OMST} + {3068395200 25200 1 OMSST} + {3087144000 21600 0 OMST} + {3099844800 25200 1 OMSST} + {3118593600 21600 0 OMST} + {3131899200 25200 1 OMSST} + {3150043200 21600 0 OMST} + {3163348800 25200 1 OMSST} + {3181492800 21600 0 OMST} + {3194798400 25200 1 OMSST} + {3212942400 21600 0 OMST} + {3226248000 25200 1 OMSST} + {3244996800 21600 0 OMST} + {3257697600 25200 1 OMSST} + {3276446400 21600 0 OMST} + {3289147200 25200 1 OMSST} + {3307896000 21600 0 OMST} + {3321201600 25200 1 OMSST} + {3339345600 21600 0 OMST} + {3352651200 25200 1 OMSST} + {3370795200 21600 0 OMST} + {3384100800 25200 1 OMSST} + {3402849600 21600 0 OMST} + {3415550400 25200 1 OMSST} + {3434299200 21600 0 OMST} + {3447000000 25200 1 OMSST} + {3465748800 21600 0 OMST} + {3479054400 25200 1 OMSST} + {3497198400 21600 0 OMST} + {3510504000 25200 1 OMSST} + {3528648000 21600 0 OMST} + {3541953600 25200 1 OMSST} + {3560097600 21600 0 OMST} + {3573403200 25200 1 OMSST} + {3592152000 21600 0 OMST} + {3604852800 25200 1 OMSST} + {3623601600 21600 0 OMST} + {3636302400 25200 1 OMSST} + {3655051200 21600 0 OMST} + {3668356800 25200 1 OMSST} + {3686500800 21600 0 OMST} + {3699806400 25200 1 OMSST} + {3717950400 21600 0 OMST} + {3731256000 25200 1 OMSST} + {3750004800 21600 0 OMST} + {3762705600 25200 1 OMSST} + {3781454400 21600 0 OMST} + {3794155200 25200 1 OMSST} + {3812904000 21600 0 OMST} + {3825604800 25200 1 OMSST} + {3844353600 21600 0 OMST} + {3857659200 25200 1 OMSST} + {3875803200 21600 0 OMST} + {3889108800 25200 1 OMSST} + {3907252800 21600 0 OMST} + {3920558400 25200 1 OMSST} + {3939307200 21600 0 OMST} + {3952008000 25200 1 OMSST} + {3970756800 21600 0 OMST} + {3983457600 25200 1 OMSST} + {4002206400 21600 0 OMST} + {4015512000 25200 1 OMSST} + {4033656000 21600 0 OMST} + {4046961600 25200 1 OMSST} + {4065105600 21600 0 OMST} + {4078411200 25200 1 OMSST} + {4096555200 21600 0 OMST} +} diff --git a/library/tzdata/Asia/Oral b/library/tzdata/Asia/Oral index b529a7f..88b9a29 100644 --- a/library/tzdata/Asia/Oral +++ b/library/tzdata/Asia/Oral @@ -1,58 +1,58 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Oral) { - {-9223372036854775808 12324 0 LMT} - {-1441164324 14400 0 URAT} - {-1247544000 18000 0 URAT} - {354913200 21600 1 URAST} - {370720800 21600 0 URAT} - {386445600 18000 0 URAT} - {386449200 21600 1 URAST} - {402256800 18000 0 URAT} - {417985200 21600 1 URAST} - {433792800 18000 0 URAT} - {449607600 21600 1 URAST} - {465339600 18000 0 URAT} - {481064400 21600 1 URAST} - {496789200 18000 0 URAT} - {512514000 21600 1 URAST} - {528238800 18000 0 URAT} - {543963600 21600 1 URAST} - {559688400 18000 0 URAT} - {575413200 21600 1 URAST} - {591138000 18000 0 URAT} - {606862800 14400 0 URAT} - {606866400 18000 1 URAST} - {622591200 14400 0 URAT} - {638316000 18000 1 URAST} - {654645600 14400 0 URAT} - {662673600 14400 0 URAT} - {692827200 14400 0 ORAT} - {701809200 18000 1 ORAST} - {717530400 14400 0 ORAT} - {733269600 18000 1 ORAST} - {748994400 14400 0 ORAT} - {764719200 18000 1 ORAST} - {780444000 14400 0 ORAT} - {796168800 18000 1 ORAST} - {811893600 14400 0 ORAT} - {828223200 18000 1 ORAST} - {846367200 14400 0 ORAT} - {859672800 18000 1 ORAST} - {877816800 14400 0 ORAT} - {891122400 18000 1 ORAST} - {909266400 14400 0 ORAT} - {922572000 18000 1 ORAST} - {941320800 14400 0 ORAT} - {954021600 18000 1 ORAST} - {972770400 14400 0 ORAT} - {985471200 18000 1 ORAST} - {1004220000 14400 0 ORAT} - {1017525600 18000 1 ORAST} - {1035669600 14400 0 ORAT} - {1048975200 18000 1 ORAST} - {1067119200 14400 0 ORAT} - {1080424800 18000 1 ORAST} - {1099173600 14400 0 ORAT} - {1110830400 18000 0 ORAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Oral) { + {-9223372036854775808 12324 0 LMT} + {-1441164324 14400 0 URAT} + {-1247544000 18000 0 URAT} + {354913200 21600 1 URAST} + {370720800 21600 0 URAT} + {386445600 18000 0 URAT} + {386449200 21600 1 URAST} + {402256800 18000 0 URAT} + {417985200 21600 1 URAST} + {433792800 18000 0 URAT} + {449607600 21600 1 URAST} + {465339600 18000 0 URAT} + {481064400 21600 1 URAST} + {496789200 18000 0 URAT} + {512514000 21600 1 URAST} + {528238800 18000 0 URAT} + {543963600 21600 1 URAST} + {559688400 18000 0 URAT} + {575413200 21600 1 URAST} + {591138000 18000 0 URAT} + {606862800 14400 0 URAT} + {606866400 18000 1 URAST} + {622591200 14400 0 URAT} + {638316000 18000 1 URAST} + {654645600 14400 0 URAT} + {662673600 14400 0 URAT} + {692827200 14400 0 ORAT} + {701809200 18000 1 ORAST} + {717530400 14400 0 ORAT} + {733269600 18000 1 ORAST} + {748994400 14400 0 ORAT} + {764719200 18000 1 ORAST} + {780444000 14400 0 ORAT} + {796168800 18000 1 ORAST} + {811893600 14400 0 ORAT} + {828223200 18000 1 ORAST} + {846367200 14400 0 ORAT} + {859672800 18000 1 ORAST} + {877816800 14400 0 ORAT} + {891122400 18000 1 ORAST} + {909266400 14400 0 ORAT} + {922572000 18000 1 ORAST} + {941320800 14400 0 ORAT} + {954021600 18000 1 ORAST} + {972770400 14400 0 ORAT} + {985471200 18000 1 ORAST} + {1004220000 14400 0 ORAT} + {1017525600 18000 1 ORAST} + {1035669600 14400 0 ORAT} + {1048975200 18000 1 ORAST} + {1067119200 14400 0 ORAT} + {1080424800 18000 1 ORAST} + {1099173600 14400 0 ORAT} + {1110830400 18000 0 ORAT} +} diff --git a/library/tzdata/Asia/Phnom_Penh b/library/tzdata/Asia/Phnom_Penh index 825edc7..4f28420 100644 --- a/library/tzdata/Asia/Phnom_Penh +++ b/library/tzdata/Asia/Phnom_Penh @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Phnom_Penh) { - {-9223372036854775808 25180 0 LMT} - {-2005973980 25580 0 SMT} - {-1855983920 25200 0 ICT} - {-1819954800 28800 0 ICT} - {-1220428800 25200 0 ICT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Phnom_Penh) { + {-9223372036854775808 25180 0 LMT} + {-2005973980 25580 0 SMT} + {-1855983920 25200 0 ICT} + {-1819954800 28800 0 ICT} + {-1220428800 25200 0 ICT} +} diff --git a/library/tzdata/Asia/Pontianak b/library/tzdata/Asia/Pontianak index 805655b..f3567dd 100644 --- a/library/tzdata/Asia/Pontianak +++ b/library/tzdata/Asia/Pontianak @@ -1,13 +1,13 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Pontianak) { - {-9223372036854775808 26240 0 LMT} - {-1946186240 26240 0 PMT} - {-1172906240 27000 0 WIT} - {-881220600 32400 0 JST} - {-766054800 27000 0 WIT} - {-683883000 28800 0 WIT} - {-620812800 27000 0 WIT} - {-189415800 28800 0 CIT} - {567964800 25200 0 WIT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Pontianak) { + {-9223372036854775808 26240 0 LMT} + {-1946186240 26240 0 PMT} + {-1172906240 27000 0 WIT} + {-881220600 32400 0 JST} + {-766054800 27000 0 WIT} + {-683883000 28800 0 WIT} + {-620812800 27000 0 WIT} + {-189415800 28800 0 CIT} + {567964800 25200 0 WIT} +} diff --git a/library/tzdata/Asia/Pyongyang b/library/tzdata/Asia/Pyongyang index 9febcbf..21c9a68 100644 --- a/library/tzdata/Asia/Pyongyang +++ b/library/tzdata/Asia/Pyongyang @@ -1,11 +1,11 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Pyongyang) { - {-9223372036854775808 30180 0 LMT} - {-2524551780 30600 0 KST} - {-2053931400 32400 0 KST} - {-1325494800 30600 0 KST} - {-1199262600 32400 0 KST} - {-498128400 28800 0 KST} - {-264931200 32400 0 KST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Pyongyang) { + {-9223372036854775808 30180 0 LMT} + {-2524551780 30600 0 KST} + {-2053931400 32400 0 KST} + {-1325494800 30600 0 KST} + {-1199262600 32400 0 KST} + {-498128400 28800 0 KST} + {-264931200 32400 0 KST} +} diff --git a/library/tzdata/Asia/Qatar b/library/tzdata/Asia/Qatar index 06698f6..bfb4eb4 100644 --- a/library/tzdata/Asia/Qatar +++ b/library/tzdata/Asia/Qatar @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Qatar) { - {-9223372036854775808 12368 0 LMT} - {-1577935568 14400 0 GST} - {76190400 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Qatar) { + {-9223372036854775808 12368 0 LMT} + {-1577935568 14400 0 GST} + {76190400 10800 0 AST} +} diff --git a/library/tzdata/Asia/Qyzylorda b/library/tzdata/Asia/Qyzylorda index cdc3219..16da574 100644 --- a/library/tzdata/Asia/Qyzylorda +++ b/library/tzdata/Asia/Qyzylorda @@ -1,58 +1,58 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Qyzylorda) { - {-9223372036854775808 15712 0 LMT} - {-1441167712 14400 0 KIZT} - {-1247544000 18000 0 KIZT} - {354913200 21600 1 KIZST} - {370720800 21600 0 KIZT} - {386445600 18000 0 KIZT} - {386449200 21600 1 KIZST} - {402256800 18000 0 KIZT} - {417985200 21600 1 KIZST} - {433792800 18000 0 KIZT} - {449607600 21600 1 KIZST} - {465339600 18000 0 KIZT} - {481064400 21600 1 KIZST} - {496789200 18000 0 KIZT} - {512514000 21600 1 KIZST} - {528238800 18000 0 KIZT} - {543963600 21600 1 KIZST} - {559688400 18000 0 KIZT} - {575413200 21600 1 KIZST} - {591138000 18000 0 KIZT} - {606862800 21600 1 KIZST} - {622587600 18000 0 KIZT} - {638312400 21600 1 KIZST} - {654642000 18000 0 KIZT} - {662670000 18000 0 KIZT} - {692823600 18000 0 QYZT} - {695768400 21600 0 QYZT} - {701802000 25200 1 QYZST} - {717523200 21600 0 QYZT} - {733262400 25200 1 QYZST} - {748987200 21600 0 QYZT} - {764712000 25200 1 QYZST} - {780436800 21600 0 QYZT} - {796161600 25200 1 QYZST} - {811886400 21600 0 QYZT} - {828216000 25200 1 QYZST} - {846360000 21600 0 QYZT} - {859665600 25200 1 QYZST} - {877809600 21600 0 QYZT} - {891115200 25200 1 QYZST} - {909259200 21600 0 QYZT} - {922564800 25200 1 QYZST} - {941313600 21600 0 QYZT} - {954014400 25200 1 QYZST} - {972763200 21600 0 QYZT} - {985464000 25200 1 QYZST} - {1004212800 21600 0 QYZT} - {1017518400 25200 1 QYZST} - {1035662400 21600 0 QYZT} - {1048968000 25200 1 QYZST} - {1067112000 21600 0 QYZT} - {1080417600 25200 1 QYZST} - {1099166400 21600 0 QYZT} - {1110823200 21600 0 QYZT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Qyzylorda) { + {-9223372036854775808 15712 0 LMT} + {-1441167712 14400 0 KIZT} + {-1247544000 18000 0 KIZT} + {354913200 21600 1 KIZST} + {370720800 21600 0 KIZT} + {386445600 18000 0 KIZT} + {386449200 21600 1 KIZST} + {402256800 18000 0 KIZT} + {417985200 21600 1 KIZST} + {433792800 18000 0 KIZT} + {449607600 21600 1 KIZST} + {465339600 18000 0 KIZT} + {481064400 21600 1 KIZST} + {496789200 18000 0 KIZT} + {512514000 21600 1 KIZST} + {528238800 18000 0 KIZT} + {543963600 21600 1 KIZST} + {559688400 18000 0 KIZT} + {575413200 21600 1 KIZST} + {591138000 18000 0 KIZT} + {606862800 21600 1 KIZST} + {622587600 18000 0 KIZT} + {638312400 21600 1 KIZST} + {654642000 18000 0 KIZT} + {662670000 18000 0 KIZT} + {692823600 18000 0 QYZT} + {695768400 21600 0 QYZT} + {701802000 25200 1 QYZST} + {717523200 21600 0 QYZT} + {733262400 25200 1 QYZST} + {748987200 21600 0 QYZT} + {764712000 25200 1 QYZST} + {780436800 21600 0 QYZT} + {796161600 25200 1 QYZST} + {811886400 21600 0 QYZT} + {828216000 25200 1 QYZST} + {846360000 21600 0 QYZT} + {859665600 25200 1 QYZST} + {877809600 21600 0 QYZT} + {891115200 25200 1 QYZST} + {909259200 21600 0 QYZT} + {922564800 25200 1 QYZST} + {941313600 21600 0 QYZT} + {954014400 25200 1 QYZST} + {972763200 21600 0 QYZT} + {985464000 25200 1 QYZST} + {1004212800 21600 0 QYZT} + {1017518400 25200 1 QYZST} + {1035662400 21600 0 QYZT} + {1048968000 25200 1 QYZST} + {1067112000 21600 0 QYZT} + {1080417600 25200 1 QYZST} + {1099166400 21600 0 QYZT} + {1110823200 21600 0 QYZT} +} diff --git a/library/tzdata/Asia/Rangoon b/library/tzdata/Asia/Rangoon index 417a3af..2b8c4fa 100644 --- a/library/tzdata/Asia/Rangoon +++ b/library/tzdata/Asia/Rangoon @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Rangoon) { - {-9223372036854775808 23080 0 LMT} - {-2840163880 23076 0 RMT} - {-1577946276 23400 0 BURT} - {-873268200 32400 0 JST} - {-778410000 23400 0 MMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Rangoon) { + {-9223372036854775808 23080 0 LMT} + {-2840163880 23076 0 RMT} + {-1577946276 23400 0 BURT} + {-873268200 32400 0 JST} + {-778410000 23400 0 MMT} +} diff --git a/library/tzdata/Asia/Riyadh b/library/tzdata/Asia/Riyadh index 0690ac2..0ef28a9 100644 --- a/library/tzdata/Asia/Riyadh +++ b/library/tzdata/Asia/Riyadh @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Riyadh) { - {-9223372036854775808 11212 0 LMT} - {-631163212 10800 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Riyadh) { + {-9223372036854775808 11212 0 LMT} + {-631163212 10800 0 AST} +} diff --git a/library/tzdata/Asia/Saigon b/library/tzdata/Asia/Saigon index 2f195a2..1e42eed 100644 --- a/library/tzdata/Asia/Saigon +++ b/library/tzdata/Asia/Saigon @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Ho_Chi_Minh)]} { - LoadTimeZoneFile Asia/Ho_Chi_Minh -} -set TZData(:Asia/Saigon) $TZData(:Asia/Ho_Chi_Minh) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Ho_Chi_Minh)]} { + LoadTimeZoneFile Asia/Ho_Chi_Minh +} +set TZData(:Asia/Saigon) $TZData(:Asia/Ho_Chi_Minh) diff --git a/library/tzdata/Asia/Sakhalin b/library/tzdata/Asia/Sakhalin index 51c8803..31395ab 100644 --- a/library/tzdata/Asia/Sakhalin +++ b/library/tzdata/Asia/Sakhalin @@ -1,249 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Sakhalin) { - {-9223372036854775808 34248 0 LMT} - {-2031039048 32400 0 CJT} - {-1009875600 32400 0 JST} - {-768560400 39600 0 SAKMMTT} - {354891600 43200 1 SAKST} - {370699200 39600 0 SAKT} - {386427600 43200 1 SAKST} - {402235200 39600 0 SAKT} - {417963600 43200 1 SAKST} - {433771200 39600 0 SAKT} - {449586000 43200 1 SAKST} - {465318000 39600 0 SAKT} - {481042800 43200 1 SAKST} - {496767600 39600 0 SAKT} - {512492400 43200 1 SAKST} - {528217200 39600 0 SAKT} - {543942000 43200 1 SAKST} - {559666800 39600 0 SAKT} - {575391600 43200 1 SAKST} - {591116400 39600 0 SAKT} - {606841200 43200 1 SAKST} - {622566000 39600 0 SAKT} - {638290800 43200 1 SAKST} - {654620400 39600 0 SAKT} - {670345200 36000 0 SAKMMTT} - {670348800 39600 1 SAKST} - {686073600 36000 0 SAKT} - {695750400 39600 0 SAKMMTT} - {701784000 43200 1 SAKST} - {717505200 39600 0 SAKT} - {733244400 43200 1 SAKST} - {748969200 39600 0 SAKT} - {764694000 43200 1 SAKST} - {780418800 39600 0 SAKT} - {796143600 43200 1 SAKST} - {811868400 39600 0 SAKT} - {828198000 43200 1 SAKST} - {846342000 39600 0 SAKT} - {859647600 36000 0 SAKMMTT} - {859651200 39600 1 SAKST} - {877795200 36000 0 SAKT} - {891100800 39600 1 SAKST} - {909244800 36000 0 SAKT} - {922550400 39600 1 SAKST} - {941299200 36000 0 SAKT} - {954000000 39600 1 SAKST} - {972748800 36000 0 SAKT} - {985449600 39600 1 SAKST} - {1004198400 36000 0 SAKT} - {1017504000 39600 1 SAKST} - {1035648000 36000 0 SAKT} - {1048953600 39600 1 SAKST} - {1067097600 36000 0 SAKT} - {1080403200 39600 1 SAKST} - {1099152000 36000 0 SAKT} - {1111852800 39600 1 SAKST} - {1130601600 36000 0 SAKT} - {1143302400 39600 1 SAKST} - {1162051200 36000 0 SAKT} - {1174752000 39600 1 SAKST} - {1193500800 36000 0 SAKT} - {1206806400 39600 1 SAKST} - {1224950400 36000 0 SAKT} - {1238256000 39600 1 SAKST} - {1256400000 36000 0 SAKT} - {1269705600 39600 1 SAKST} - {1288454400 36000 0 SAKT} - {1301155200 39600 1 SAKST} - {1319904000 36000 0 SAKT} - {1332604800 39600 1 SAKST} - {1351353600 36000 0 SAKT} - {1364659200 39600 1 SAKST} - {1382803200 36000 0 SAKT} - {1396108800 39600 1 SAKST} - {1414252800 36000 0 SAKT} - {1427558400 39600 1 SAKST} - {1445702400 36000 0 SAKT} - {1459008000 39600 1 SAKST} - {1477756800 36000 0 SAKT} - {1490457600 39600 1 SAKST} - {1509206400 36000 0 SAKT} - {1521907200 39600 1 SAKST} - {1540656000 36000 0 SAKT} - {1553961600 39600 1 SAKST} - {1572105600 36000 0 SAKT} - {1585411200 39600 1 SAKST} - {1603555200 36000 0 SAKT} - {1616860800 39600 1 SAKST} - {1635609600 36000 0 SAKT} - {1648310400 39600 1 SAKST} - {1667059200 36000 0 SAKT} - {1679760000 39600 1 SAKST} - {1698508800 36000 0 SAKT} - {1711814400 39600 1 SAKST} - {1729958400 36000 0 SAKT} - {1743264000 39600 1 SAKST} - {1761408000 36000 0 SAKT} - {1774713600 39600 1 SAKST} - {1792857600 36000 0 SAKT} - {1806163200 39600 1 SAKST} - {1824912000 36000 0 SAKT} - {1837612800 39600 1 SAKST} - {1856361600 36000 0 SAKT} - {1869062400 39600 1 SAKST} - {1887811200 36000 0 SAKT} - {1901116800 39600 1 SAKST} - {1919260800 36000 0 SAKT} - {1932566400 39600 1 SAKST} - {1950710400 36000 0 SAKT} - {1964016000 39600 1 SAKST} - {1982764800 36000 0 SAKT} - {1995465600 39600 1 SAKST} - {2014214400 36000 0 SAKT} - {2026915200 39600 1 SAKST} - {2045664000 36000 0 SAKT} - {2058364800 39600 1 SAKST} - {2077113600 36000 0 SAKT} - {2090419200 39600 1 SAKST} - {2108563200 36000 0 SAKT} - {2121868800 39600 1 SAKST} - {2140012800 36000 0 SAKT} - {2153318400 39600 1 SAKST} - {2172067200 36000 0 SAKT} - {2184768000 39600 1 SAKST} - {2203516800 36000 0 SAKT} - {2216217600 39600 1 SAKST} - {2234966400 36000 0 SAKT} - {2248272000 39600 1 SAKST} - {2266416000 36000 0 SAKT} - {2279721600 39600 1 SAKST} - {2297865600 36000 0 SAKT} - {2311171200 39600 1 SAKST} - {2329315200 36000 0 SAKT} - {2342620800 39600 1 SAKST} - {2361369600 36000 0 SAKT} - {2374070400 39600 1 SAKST} - {2392819200 36000 0 SAKT} - {2405520000 39600 1 SAKST} - {2424268800 36000 0 SAKT} - {2437574400 39600 1 SAKST} - {2455718400 36000 0 SAKT} - {2469024000 39600 1 SAKST} - {2487168000 36000 0 SAKT} - {2500473600 39600 1 SAKST} - {2519222400 36000 0 SAKT} - {2531923200 39600 1 SAKST} - {2550672000 36000 0 SAKT} - {2563372800 39600 1 SAKST} - {2582121600 36000 0 SAKT} - {2595427200 39600 1 SAKST} - {2613571200 36000 0 SAKT} - {2626876800 39600 1 SAKST} - {2645020800 36000 0 SAKT} - {2658326400 39600 1 SAKST} - {2676470400 36000 0 SAKT} - {2689776000 39600 1 SAKST} - {2708524800 36000 0 SAKT} - {2721225600 39600 1 SAKST} - {2739974400 36000 0 SAKT} - {2752675200 39600 1 SAKST} - {2771424000 36000 0 SAKT} - {2784729600 39600 1 SAKST} - {2802873600 36000 0 SAKT} - {2816179200 39600 1 SAKST} - {2834323200 36000 0 SAKT} - {2847628800 39600 1 SAKST} - {2866377600 36000 0 SAKT} - {2879078400 39600 1 SAKST} - {2897827200 36000 0 SAKT} - {2910528000 39600 1 SAKST} - {2929276800 36000 0 SAKT} - {2941977600 39600 1 SAKST} - {2960726400 36000 0 SAKT} - {2974032000 39600 1 SAKST} - {2992176000 36000 0 SAKT} - {3005481600 39600 1 SAKST} - {3023625600 36000 0 SAKT} - {3036931200 39600 1 SAKST} - {3055680000 36000 0 SAKT} - {3068380800 39600 1 SAKST} - {3087129600 36000 0 SAKT} - {3099830400 39600 1 SAKST} - {3118579200 36000 0 SAKT} - {3131884800 39600 1 SAKST} - {3150028800 36000 0 SAKT} - {3163334400 39600 1 SAKST} - {3181478400 36000 0 SAKT} - {3194784000 39600 1 SAKST} - {3212928000 36000 0 SAKT} - {3226233600 39600 1 SAKST} - {3244982400 36000 0 SAKT} - {3257683200 39600 1 SAKST} - {3276432000 36000 0 SAKT} - {3289132800 39600 1 SAKST} - {3307881600 36000 0 SAKT} - {3321187200 39600 1 SAKST} - {3339331200 36000 0 SAKT} - {3352636800 39600 1 SAKST} - {3370780800 36000 0 SAKT} - {3384086400 39600 1 SAKST} - {3402835200 36000 0 SAKT} - {3415536000 39600 1 SAKST} - {3434284800 36000 0 SAKT} - {3446985600 39600 1 SAKST} - {3465734400 36000 0 SAKT} - {3479040000 39600 1 SAKST} - {3497184000 36000 0 SAKT} - {3510489600 39600 1 SAKST} - {3528633600 36000 0 SAKT} - {3541939200 39600 1 SAKST} - {3560083200 36000 0 SAKT} - {3573388800 39600 1 SAKST} - {3592137600 36000 0 SAKT} - {3604838400 39600 1 SAKST} - {3623587200 36000 0 SAKT} - {3636288000 39600 1 SAKST} - {3655036800 36000 0 SAKT} - {3668342400 39600 1 SAKST} - {3686486400 36000 0 SAKT} - {3699792000 39600 1 SAKST} - {3717936000 36000 0 SAKT} - {3731241600 39600 1 SAKST} - {3749990400 36000 0 SAKT} - {3762691200 39600 1 SAKST} - {3781440000 36000 0 SAKT} - {3794140800 39600 1 SAKST} - {3812889600 36000 0 SAKT} - {3825590400 39600 1 SAKST} - {3844339200 36000 0 SAKT} - {3857644800 39600 1 SAKST} - {3875788800 36000 0 SAKT} - {3889094400 39600 1 SAKST} - {3907238400 36000 0 SAKT} - {3920544000 39600 1 SAKST} - {3939292800 36000 0 SAKT} - {3951993600 39600 1 SAKST} - {3970742400 36000 0 SAKT} - {3983443200 39600 1 SAKST} - {4002192000 36000 0 SAKT} - {4015497600 39600 1 SAKST} - {4033641600 36000 0 SAKT} - {4046947200 39600 1 SAKST} - {4065091200 36000 0 SAKT} - {4078396800 39600 1 SAKST} - {4096540800 36000 0 SAKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Sakhalin) { + {-9223372036854775808 34248 0 LMT} + {-2031039048 32400 0 CJT} + {-1009875600 32400 0 JST} + {-768560400 39600 0 SAKMMTT} + {354891600 43200 1 SAKST} + {370699200 39600 0 SAKT} + {386427600 43200 1 SAKST} + {402235200 39600 0 SAKT} + {417963600 43200 1 SAKST} + {433771200 39600 0 SAKT} + {449586000 43200 1 SAKST} + {465318000 39600 0 SAKT} + {481042800 43200 1 SAKST} + {496767600 39600 0 SAKT} + {512492400 43200 1 SAKST} + {528217200 39600 0 SAKT} + {543942000 43200 1 SAKST} + {559666800 39600 0 SAKT} + {575391600 43200 1 SAKST} + {591116400 39600 0 SAKT} + {606841200 43200 1 SAKST} + {622566000 39600 0 SAKT} + {638290800 43200 1 SAKST} + {654620400 39600 0 SAKT} + {670345200 36000 0 SAKMMTT} + {670348800 39600 1 SAKST} + {686073600 36000 0 SAKT} + {695750400 39600 0 SAKMMTT} + {701784000 43200 1 SAKST} + {717505200 39600 0 SAKT} + {733244400 43200 1 SAKST} + {748969200 39600 0 SAKT} + {764694000 43200 1 SAKST} + {780418800 39600 0 SAKT} + {796143600 43200 1 SAKST} + {811868400 39600 0 SAKT} + {828198000 43200 1 SAKST} + {846342000 39600 0 SAKT} + {859647600 36000 0 SAKMMTT} + {859651200 39600 1 SAKST} + {877795200 36000 0 SAKT} + {891100800 39600 1 SAKST} + {909244800 36000 0 SAKT} + {922550400 39600 1 SAKST} + {941299200 36000 0 SAKT} + {954000000 39600 1 SAKST} + {972748800 36000 0 SAKT} + {985449600 39600 1 SAKST} + {1004198400 36000 0 SAKT} + {1017504000 39600 1 SAKST} + {1035648000 36000 0 SAKT} + {1048953600 39600 1 SAKST} + {1067097600 36000 0 SAKT} + {1080403200 39600 1 SAKST} + {1099152000 36000 0 SAKT} + {1111852800 39600 1 SAKST} + {1130601600 36000 0 SAKT} + {1143302400 39600 1 SAKST} + {1162051200 36000 0 SAKT} + {1174752000 39600 1 SAKST} + {1193500800 36000 0 SAKT} + {1206806400 39600 1 SAKST} + {1224950400 36000 0 SAKT} + {1238256000 39600 1 SAKST} + {1256400000 36000 0 SAKT} + {1269705600 39600 1 SAKST} + {1288454400 36000 0 SAKT} + {1301155200 39600 1 SAKST} + {1319904000 36000 0 SAKT} + {1332604800 39600 1 SAKST} + {1351353600 36000 0 SAKT} + {1364659200 39600 1 SAKST} + {1382803200 36000 0 SAKT} + {1396108800 39600 1 SAKST} + {1414252800 36000 0 SAKT} + {1427558400 39600 1 SAKST} + {1445702400 36000 0 SAKT} + {1459008000 39600 1 SAKST} + {1477756800 36000 0 SAKT} + {1490457600 39600 1 SAKST} + {1509206400 36000 0 SAKT} + {1521907200 39600 1 SAKST} + {1540656000 36000 0 SAKT} + {1553961600 39600 1 SAKST} + {1572105600 36000 0 SAKT} + {1585411200 39600 1 SAKST} + {1603555200 36000 0 SAKT} + {1616860800 39600 1 SAKST} + {1635609600 36000 0 SAKT} + {1648310400 39600 1 SAKST} + {1667059200 36000 0 SAKT} + {1679760000 39600 1 SAKST} + {1698508800 36000 0 SAKT} + {1711814400 39600 1 SAKST} + {1729958400 36000 0 SAKT} + {1743264000 39600 1 SAKST} + {1761408000 36000 0 SAKT} + {1774713600 39600 1 SAKST} + {1792857600 36000 0 SAKT} + {1806163200 39600 1 SAKST} + {1824912000 36000 0 SAKT} + {1837612800 39600 1 SAKST} + {1856361600 36000 0 SAKT} + {1869062400 39600 1 SAKST} + {1887811200 36000 0 SAKT} + {1901116800 39600 1 SAKST} + {1919260800 36000 0 SAKT} + {1932566400 39600 1 SAKST} + {1950710400 36000 0 SAKT} + {1964016000 39600 1 SAKST} + {1982764800 36000 0 SAKT} + {1995465600 39600 1 SAKST} + {2014214400 36000 0 SAKT} + {2026915200 39600 1 SAKST} + {2045664000 36000 0 SAKT} + {2058364800 39600 1 SAKST} + {2077113600 36000 0 SAKT} + {2090419200 39600 1 SAKST} + {2108563200 36000 0 SAKT} + {2121868800 39600 1 SAKST} + {2140012800 36000 0 SAKT} + {2153318400 39600 1 SAKST} + {2172067200 36000 0 SAKT} + {2184768000 39600 1 SAKST} + {2203516800 36000 0 SAKT} + {2216217600 39600 1 SAKST} + {2234966400 36000 0 SAKT} + {2248272000 39600 1 SAKST} + {2266416000 36000 0 SAKT} + {2279721600 39600 1 SAKST} + {2297865600 36000 0 SAKT} + {2311171200 39600 1 SAKST} + {2329315200 36000 0 SAKT} + {2342620800 39600 1 SAKST} + {2361369600 36000 0 SAKT} + {2374070400 39600 1 SAKST} + {2392819200 36000 0 SAKT} + {2405520000 39600 1 SAKST} + {2424268800 36000 0 SAKT} + {2437574400 39600 1 SAKST} + {2455718400 36000 0 SAKT} + {2469024000 39600 1 SAKST} + {2487168000 36000 0 SAKT} + {2500473600 39600 1 SAKST} + {2519222400 36000 0 SAKT} + {2531923200 39600 1 SAKST} + {2550672000 36000 0 SAKT} + {2563372800 39600 1 SAKST} + {2582121600 36000 0 SAKT} + {2595427200 39600 1 SAKST} + {2613571200 36000 0 SAKT} + {2626876800 39600 1 SAKST} + {2645020800 36000 0 SAKT} + {2658326400 39600 1 SAKST} + {2676470400 36000 0 SAKT} + {2689776000 39600 1 SAKST} + {2708524800 36000 0 SAKT} + {2721225600 39600 1 SAKST} + {2739974400 36000 0 SAKT} + {2752675200 39600 1 SAKST} + {2771424000 36000 0 SAKT} + {2784729600 39600 1 SAKST} + {2802873600 36000 0 SAKT} + {2816179200 39600 1 SAKST} + {2834323200 36000 0 SAKT} + {2847628800 39600 1 SAKST} + {2866377600 36000 0 SAKT} + {2879078400 39600 1 SAKST} + {2897827200 36000 0 SAKT} + {2910528000 39600 1 SAKST} + {2929276800 36000 0 SAKT} + {2941977600 39600 1 SAKST} + {2960726400 36000 0 SAKT} + {2974032000 39600 1 SAKST} + {2992176000 36000 0 SAKT} + {3005481600 39600 1 SAKST} + {3023625600 36000 0 SAKT} + {3036931200 39600 1 SAKST} + {3055680000 36000 0 SAKT} + {3068380800 39600 1 SAKST} + {3087129600 36000 0 SAKT} + {3099830400 39600 1 SAKST} + {3118579200 36000 0 SAKT} + {3131884800 39600 1 SAKST} + {3150028800 36000 0 SAKT} + {3163334400 39600 1 SAKST} + {3181478400 36000 0 SAKT} + {3194784000 39600 1 SAKST} + {3212928000 36000 0 SAKT} + {3226233600 39600 1 SAKST} + {3244982400 36000 0 SAKT} + {3257683200 39600 1 SAKST} + {3276432000 36000 0 SAKT} + {3289132800 39600 1 SAKST} + {3307881600 36000 0 SAKT} + {3321187200 39600 1 SAKST} + {3339331200 36000 0 SAKT} + {3352636800 39600 1 SAKST} + {3370780800 36000 0 SAKT} + {3384086400 39600 1 SAKST} + {3402835200 36000 0 SAKT} + {3415536000 39600 1 SAKST} + {3434284800 36000 0 SAKT} + {3446985600 39600 1 SAKST} + {3465734400 36000 0 SAKT} + {3479040000 39600 1 SAKST} + {3497184000 36000 0 SAKT} + {3510489600 39600 1 SAKST} + {3528633600 36000 0 SAKT} + {3541939200 39600 1 SAKST} + {3560083200 36000 0 SAKT} + {3573388800 39600 1 SAKST} + {3592137600 36000 0 SAKT} + {3604838400 39600 1 SAKST} + {3623587200 36000 0 SAKT} + {3636288000 39600 1 SAKST} + {3655036800 36000 0 SAKT} + {3668342400 39600 1 SAKST} + {3686486400 36000 0 SAKT} + {3699792000 39600 1 SAKST} + {3717936000 36000 0 SAKT} + {3731241600 39600 1 SAKST} + {3749990400 36000 0 SAKT} + {3762691200 39600 1 SAKST} + {3781440000 36000 0 SAKT} + {3794140800 39600 1 SAKST} + {3812889600 36000 0 SAKT} + {3825590400 39600 1 SAKST} + {3844339200 36000 0 SAKT} + {3857644800 39600 1 SAKST} + {3875788800 36000 0 SAKT} + {3889094400 39600 1 SAKST} + {3907238400 36000 0 SAKT} + {3920544000 39600 1 SAKST} + {3939292800 36000 0 SAKT} + {3951993600 39600 1 SAKST} + {3970742400 36000 0 SAKT} + {3983443200 39600 1 SAKST} + {4002192000 36000 0 SAKT} + {4015497600 39600 1 SAKST} + {4033641600 36000 0 SAKT} + {4046947200 39600 1 SAKST} + {4065091200 36000 0 SAKT} + {4078396800 39600 1 SAKST} + {4096540800 36000 0 SAKT} +} diff --git a/library/tzdata/Asia/Samarkand b/library/tzdata/Asia/Samarkand index 43f50e7..6a1be11 100644 --- a/library/tzdata/Asia/Samarkand +++ b/library/tzdata/Asia/Samarkand @@ -1,32 +1,32 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Samarkand) { - {-9223372036854775808 16032 0 LMT} - {-1441168032 14400 0 SAMT} - {-1247544000 18000 0 SAMT} - {354913200 21600 1 SAMST} - {370720800 21600 0 TAST} - {386445600 18000 0 SAMT} - {386449200 21600 1 SAMST} - {402256800 18000 0 SAMT} - {417985200 21600 1 SAMST} - {433792800 18000 0 SAMT} - {449607600 21600 1 SAMST} - {465339600 18000 0 SAMT} - {481064400 21600 1 SAMST} - {496789200 18000 0 SAMT} - {512514000 21600 1 SAMST} - {528238800 18000 0 SAMT} - {543963600 21600 1 SAMST} - {559688400 18000 0 SAMT} - {575413200 21600 1 SAMST} - {591138000 18000 0 SAMT} - {606862800 21600 1 SAMST} - {622587600 18000 0 SAMT} - {638312400 21600 1 SAMST} - {654642000 18000 0 SAMT} - {670366800 21600 1 SAMST} - {683665200 21600 0 UZST} - {686091600 18000 0 UZT} - {694206000 18000 0 UZT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Samarkand) { + {-9223372036854775808 16032 0 LMT} + {-1441168032 14400 0 SAMT} + {-1247544000 18000 0 SAMT} + {354913200 21600 1 SAMST} + {370720800 21600 0 TAST} + {386445600 18000 0 SAMT} + {386449200 21600 1 SAMST} + {402256800 18000 0 SAMT} + {417985200 21600 1 SAMST} + {433792800 18000 0 SAMT} + {449607600 21600 1 SAMST} + {465339600 18000 0 SAMT} + {481064400 21600 1 SAMST} + {496789200 18000 0 SAMT} + {512514000 21600 1 SAMST} + {528238800 18000 0 SAMT} + {543963600 21600 1 SAMST} + {559688400 18000 0 SAMT} + {575413200 21600 1 SAMST} + {591138000 18000 0 SAMT} + {606862800 21600 1 SAMST} + {622587600 18000 0 SAMT} + {638312400 21600 1 SAMST} + {654642000 18000 0 SAMT} + {670366800 21600 1 SAMST} + {683665200 21600 0 UZST} + {686091600 18000 0 UZT} + {694206000 18000 0 UZT} +} diff --git a/library/tzdata/Asia/Seoul b/library/tzdata/Asia/Seoul index 9449555..9c83e30 100644 --- a/library/tzdata/Asia/Seoul +++ b/library/tzdata/Asia/Seoul @@ -1,18 +1,18 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Seoul) { - {-9223372036854775808 30472 0 LMT} - {-2524552072 30600 0 KST} - {-2053931400 32400 0 KST} - {-1325494800 30600 0 KST} - {-1199262600 32400 0 KST} - {-498128400 28800 0 KST} - {-303984000 32400 1 KDT} - {-293533200 28800 0 KST} - {-264931200 30600 0 KST} - {-39515400 32400 0 KST} - {547570800 36000 1 KDT} - {560872800 32400 0 KST} - {579020400 36000 1 KDT} - {592322400 32400 0 KST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Seoul) { + {-9223372036854775808 30472 0 LMT} + {-2524552072 30600 0 KST} + {-2053931400 32400 0 KST} + {-1325494800 30600 0 KST} + {-1199262600 32400 0 KST} + {-498128400 28800 0 KST} + {-303984000 32400 1 KDT} + {-293533200 28800 0 KST} + {-264931200 30600 0 KST} + {-39515400 32400 0 KST} + {547570800 36000 1 KDT} + {560872800 32400 0 KST} + {579020400 36000 1 KDT} + {592322400 32400 0 KST} +} diff --git a/library/tzdata/Asia/Shanghai b/library/tzdata/Asia/Shanghai index c4e7880..aa7dc58 100644 --- a/library/tzdata/Asia/Shanghai +++ b/library/tzdata/Asia/Shanghai @@ -1,23 +1,23 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Shanghai) { - {-9223372036854775808 29152 0 LMT} - {-1325491552 28800 0 CST} - {-933494400 32400 1 CDT} - {-923130000 28800 0 CST} - {-908784000 32400 1 CDT} - {-891594000 28800 0 CST} - {-662716800 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Shanghai) { + {-9223372036854775808 29152 0 LMT} + {-1325491552 28800 0 CST} + {-933494400 32400 1 CDT} + {-923130000 28800 0 CST} + {-908784000 32400 1 CDT} + {-891594000 28800 0 CST} + {-662716800 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Singapore b/library/tzdata/Asia/Singapore index dafb3bf..e2f226e 100644 --- a/library/tzdata/Asia/Singapore +++ b/library/tzdata/Asia/Singapore @@ -1,14 +1,14 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Singapore) { - {-9223372036854775808 24925 0 LMT} - {-2177477725 24925 0 SMT} - {-2038200925 25200 0 MALT} - {-1167634800 26400 1 MALST} - {-1073028000 26400 0 MALT} - {-894180000 27000 0 MALT} - {-879665400 32400 0 JST} - {-767005200 27000 0 MALT} - {-138785400 27000 0 SGT} - {378664200 28800 0 SGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Singapore) { + {-9223372036854775808 24925 0 LMT} + {-2177477725 24925 0 SMT} + {-2038200925 25200 0 MALT} + {-1167634800 26400 1 MALST} + {-1073028000 26400 0 MALT} + {-894180000 27000 0 MALT} + {-879665400 32400 0 JST} + {-767005200 27000 0 MALT} + {-138785400 27000 0 SGT} + {378664200 28800 0 SGT} +} diff --git a/library/tzdata/Asia/Taipei b/library/tzdata/Asia/Taipei index df934b3..6366b34 100644 --- a/library/tzdata/Asia/Taipei +++ b/library/tzdata/Asia/Taipei @@ -1,46 +1,46 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Taipei) { - {-9223372036854775808 29160 0 LMT} - {-2335248360 28800 0 CST} - {-778579200 32400 1 CDT} - {-765363600 28800 0 CST} - {-747043200 32400 1 CDT} - {-733827600 28800 0 CST} - {-715507200 32400 1 CDT} - {-702291600 28800 0 CST} - {-683884800 32400 1 CDT} - {-670669200 28800 0 CST} - {-652348800 32400 1 CDT} - {-639133200 28800 0 CST} - {-620812800 32400 1 CDT} - {-607597200 28800 0 CST} - {-589276800 32400 1 CDT} - {-576061200 28800 0 CST} - {-562924800 32400 1 CDT} - {-541760400 28800 0 CST} - {-528710400 32400 1 CDT} - {-510224400 28800 0 CST} - {-497174400 32400 1 CDT} - {-478688400 28800 0 CST} - {-465638400 32400 1 CDT} - {-449830800 28800 0 CST} - {-434016000 32400 1 CDT} - {-418208400 28800 0 CST} - {-402480000 32400 1 CDT} - {-386672400 28800 0 CST} - {-370944000 32400 1 CDT} - {-355136400 28800 0 CST} - {-339408000 32400 1 CDT} - {-323600400 28800 0 CST} - {-302515200 32400 1 CDT} - {-291978000 28800 0 CST} - {-270979200 32400 1 CDT} - {-260442000 28800 0 CST} - {133977600 32400 1 CDT} - {149785200 28800 0 CST} - {165513600 32400 1 CDT} - {181321200 28800 0 CST} - {331142400 32400 1 CDT} - {339087600 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Taipei) { + {-9223372036854775808 29160 0 LMT} + {-2335248360 28800 0 CST} + {-778579200 32400 1 CDT} + {-765363600 28800 0 CST} + {-747043200 32400 1 CDT} + {-733827600 28800 0 CST} + {-715507200 32400 1 CDT} + {-702291600 28800 0 CST} + {-683884800 32400 1 CDT} + {-670669200 28800 0 CST} + {-652348800 32400 1 CDT} + {-639133200 28800 0 CST} + {-620812800 32400 1 CDT} + {-607597200 28800 0 CST} + {-589276800 32400 1 CDT} + {-576061200 28800 0 CST} + {-562924800 32400 1 CDT} + {-541760400 28800 0 CST} + {-528710400 32400 1 CDT} + {-510224400 28800 0 CST} + {-497174400 32400 1 CDT} + {-478688400 28800 0 CST} + {-465638400 32400 1 CDT} + {-449830800 28800 0 CST} + {-434016000 32400 1 CDT} + {-418208400 28800 0 CST} + {-402480000 32400 1 CDT} + {-386672400 28800 0 CST} + {-370944000 32400 1 CDT} + {-355136400 28800 0 CST} + {-339408000 32400 1 CDT} + {-323600400 28800 0 CST} + {-302515200 32400 1 CDT} + {-291978000 28800 0 CST} + {-270979200 32400 1 CDT} + {-260442000 28800 0 CST} + {133977600 32400 1 CDT} + {149785200 28800 0 CST} + {165513600 32400 1 CDT} + {181321200 28800 0 CST} + {331142400 32400 1 CDT} + {339087600 28800 0 CST} +} diff --git a/library/tzdata/Asia/Tashkent b/library/tzdata/Asia/Tashkent index c0f5120..fcee755 100644 --- a/library/tzdata/Asia/Tashkent +++ b/library/tzdata/Asia/Tashkent @@ -1,32 +1,32 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Tashkent) { - {-9223372036854775808 16632 0 LMT} - {-1441168632 18000 0 TAST} - {-1247547600 21600 0 TAST} - {354909600 25200 1 TASST} - {370717200 21600 0 TAST} - {386445600 25200 1 TASST} - {402253200 21600 0 TAST} - {417981600 25200 1 TASST} - {433789200 21600 0 TAST} - {449604000 25200 1 TASST} - {465336000 21600 0 TAST} - {481060800 25200 1 TASST} - {496785600 21600 0 TAST} - {512510400 25200 1 TASST} - {528235200 21600 0 TAST} - {543960000 25200 1 TASST} - {559684800 21600 0 TAST} - {575409600 25200 1 TASST} - {591134400 21600 0 TAST} - {606859200 25200 1 TASST} - {622584000 21600 0 TAST} - {638308800 25200 1 TASST} - {654638400 21600 0 TAST} - {670363200 18000 0 TAST} - {670366800 21600 1 TASST} - {683665200 21600 0 UZST} - {686091600 18000 0 UZT} - {694206000 18000 0 UZT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Tashkent) { + {-9223372036854775808 16632 0 LMT} + {-1441168632 18000 0 TAST} + {-1247547600 21600 0 TAST} + {354909600 25200 1 TASST} + {370717200 21600 0 TAST} + {386445600 25200 1 TASST} + {402253200 21600 0 TAST} + {417981600 25200 1 TASST} + {433789200 21600 0 TAST} + {449604000 25200 1 TASST} + {465336000 21600 0 TAST} + {481060800 25200 1 TASST} + {496785600 21600 0 TAST} + {512510400 25200 1 TASST} + {528235200 21600 0 TAST} + {543960000 25200 1 TASST} + {559684800 21600 0 TAST} + {575409600 25200 1 TASST} + {591134400 21600 0 TAST} + {606859200 25200 1 TASST} + {622584000 21600 0 TAST} + {638308800 25200 1 TASST} + {654638400 21600 0 TAST} + {670363200 18000 0 TAST} + {670366800 21600 1 TASST} + {683665200 21600 0 UZST} + {686091600 18000 0 UZT} + {694206000 18000 0 UZT} +} diff --git a/library/tzdata/Asia/Tbilisi b/library/tzdata/Asia/Tbilisi index 3082f74..a716917 100644 --- a/library/tzdata/Asia/Tbilisi +++ b/library/tzdata/Asia/Tbilisi @@ -1,60 +1,60 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Tbilisi) { - {-9223372036854775808 10756 0 LMT} - {-2840151556 10756 0 TBMT} - {-1441162756 10800 0 TBIT} - {-405140400 14400 0 TBIT} - {354916800 18000 1 TBIST} - {370724400 14400 0 TBIT} - {386452800 18000 1 TBIST} - {402260400 14400 0 TBIT} - {417988800 18000 1 TBIST} - {433796400 14400 0 TBIT} - {449611200 18000 1 TBIST} - {465343200 14400 0 TBIT} - {481068000 18000 1 TBIST} - {496792800 14400 0 TBIT} - {512517600 18000 1 TBIST} - {528242400 14400 0 TBIT} - {543967200 18000 1 TBIST} - {559692000 14400 0 TBIT} - {575416800 18000 1 TBIST} - {591141600 14400 0 TBIT} - {606866400 18000 1 TBIST} - {622591200 14400 0 TBIT} - {638316000 18000 1 TBIST} - {654645600 14400 0 TBIT} - {670370400 14400 1 TBIST} - {671140800 14400 0 GEST} - {686098800 10800 0 GET} - {694213200 10800 0 GET} - {701816400 14400 1 GEST} - {717537600 10800 0 GET} - {733266000 14400 1 GEST} - {748987200 10800 0 GET} - {764715600 14400 1 GEST} - {780440400 14400 0 GET} - {796161600 18000 1 GEST} - {811882800 14400 0 GET} - {828216000 18000 1 GEST} - {846360000 18000 1 GEST} - {859662000 18000 0 GEST} - {877806000 14400 0 GET} - {891115200 18000 1 GEST} - {909255600 14400 0 GET} - {922564800 18000 1 GEST} - {941310000 14400 0 GET} - {954014400 18000 1 GEST} - {972759600 14400 0 GET} - {985464000 18000 1 GEST} - {1004209200 14400 0 GET} - {1017518400 18000 1 GEST} - {1035658800 14400 0 GET} - {1048968000 18000 1 GEST} - {1067108400 14400 0 GET} - {1080417600 18000 1 GEST} - {1088280000 14400 0 GEST} - {1099177200 10800 0 GET} - {1111878000 14400 0 GET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Tbilisi) { + {-9223372036854775808 10756 0 LMT} + {-2840151556 10756 0 TBMT} + {-1441162756 10800 0 TBIT} + {-405140400 14400 0 TBIT} + {354916800 18000 1 TBIST} + {370724400 14400 0 TBIT} + {386452800 18000 1 TBIST} + {402260400 14400 0 TBIT} + {417988800 18000 1 TBIST} + {433796400 14400 0 TBIT} + {449611200 18000 1 TBIST} + {465343200 14400 0 TBIT} + {481068000 18000 1 TBIST} + {496792800 14400 0 TBIT} + {512517600 18000 1 TBIST} + {528242400 14400 0 TBIT} + {543967200 18000 1 TBIST} + {559692000 14400 0 TBIT} + {575416800 18000 1 TBIST} + {591141600 14400 0 TBIT} + {606866400 18000 1 TBIST} + {622591200 14400 0 TBIT} + {638316000 18000 1 TBIST} + {654645600 14400 0 TBIT} + {670370400 14400 1 TBIST} + {671140800 14400 0 GEST} + {686098800 10800 0 GET} + {694213200 10800 0 GET} + {701816400 14400 1 GEST} + {717537600 10800 0 GET} + {733266000 14400 1 GEST} + {748987200 10800 0 GET} + {764715600 14400 1 GEST} + {780440400 14400 0 GET} + {796161600 18000 1 GEST} + {811882800 14400 0 GET} + {828216000 18000 1 GEST} + {846360000 18000 1 GEST} + {859662000 18000 0 GEST} + {877806000 14400 0 GET} + {891115200 18000 1 GEST} + {909255600 14400 0 GET} + {922564800 18000 1 GEST} + {941310000 14400 0 GET} + {954014400 18000 1 GEST} + {972759600 14400 0 GET} + {985464000 18000 1 GEST} + {1004209200 14400 0 GET} + {1017518400 18000 1 GEST} + {1035658800 14400 0 GET} + {1048968000 18000 1 GEST} + {1067108400 14400 0 GET} + {1080417600 18000 1 GEST} + {1088280000 14400 0 GEST} + {1099177200 10800 0 GET} + {1111878000 14400 0 GET} +} diff --git a/library/tzdata/Asia/Tehran b/library/tzdata/Asia/Tehran index 9a47f7e..7dca0ae 100644 --- a/library/tzdata/Asia/Tehran +++ b/library/tzdata/Asia/Tehran @@ -1,105 +1,105 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Tehran) { - {-9223372036854775808 12344 0 LMT} - {-1704165944 12344 0 TMT} - {-757394744 12600 0 IRST} - {247177800 14400 0 IRST} - {259272000 18000 1 IRDT} - {277758000 14400 0 IRST} - {283982400 12600 0 IRST} - {290809800 16200 1 IRDT} - {306531000 12600 0 IRST} - {322432200 16200 1 IRDT} - {338499000 12600 0 IRST} - {673216200 16200 1 IRDT} - {685481400 12600 0 IRST} - {701209800 16200 1 IRDT} - {717103800 12600 0 IRST} - {732745800 16200 1 IRDT} - {748639800 12600 0 IRST} - {764281800 16200 1 IRDT} - {780175800 12600 0 IRST} - {795817800 16200 1 IRDT} - {811711800 12600 0 IRST} - {827353800 16200 1 IRDT} - {843247800 12600 0 IRST} - {858976200 16200 1 IRDT} - {874870200 12600 0 IRST} - {890512200 16200 1 IRDT} - {906406200 12600 0 IRST} - {922048200 16200 1 IRDT} - {937942200 12600 0 IRST} - {953584200 16200 1 IRDT} - {969478200 12600 0 IRST} - {985206600 16200 1 IRDT} - {1001100600 12600 0 IRST} - {1016742600 16200 1 IRDT} - {1032636600 12600 0 IRST} - {1048278600 16200 1 IRDT} - {1064172600 12600 0 IRST} - {1079814600 16200 1 IRDT} - {1095708600 12600 0 IRST} - {1111437000 16200 1 IRDT} - {1127331000 12600 0 IRST} - {1206045000 16200 1 IRDT} - {1221939000 12600 0 IRST} - {1237667400 16200 1 IRDT} - {1253561400 12600 0 IRST} - {1269203400 16200 1 IRDT} - {1285097400 12600 0 IRST} - {1300739400 16200 1 IRDT} - {1316633400 12600 0 IRST} - {1332275400 16200 1 IRDT} - {1348169400 12600 0 IRST} - {1363897800 16200 1 IRDT} - {1379791800 12600 0 IRST} - {1395433800 16200 1 IRDT} - {1411327800 12600 0 IRST} - {1426969800 16200 1 IRDT} - {1442863800 12600 0 IRST} - {1458505800 16200 1 IRDT} - {1474399800 12600 0 IRST} - {1490128200 16200 1 IRDT} - {1506022200 12600 0 IRST} - {1521664200 16200 1 IRDT} - {1537558200 12600 0 IRST} - {1553200200 16200 1 IRDT} - {1569094200 12600 0 IRST} - {1584736200 16200 1 IRDT} - {1600630200 12600 0 IRST} - {1616358600 16200 1 IRDT} - {1632252600 12600 0 IRST} - {1647894600 16200 1 IRDT} - {1663788600 12600 0 IRST} - {1679430600 16200 1 IRDT} - {1695324600 12600 0 IRST} - {1710966600 16200 1 IRDT} - {1726860600 12600 0 IRST} - {1742589000 16200 1 IRDT} - {1758483000 12600 0 IRST} - {1774125000 16200 1 IRDT} - {1790019000 12600 0 IRST} - {1805661000 16200 1 IRDT} - {1821555000 12600 0 IRST} - {1837197000 16200 1 IRDT} - {1853091000 12600 0 IRST} - {1868733000 16200 1 IRDT} - {1884627000 12600 0 IRST} - {1900355400 16200 1 IRDT} - {1916249400 12600 0 IRST} - {1931891400 16200 1 IRDT} - {1947785400 12600 0 IRST} - {1963427400 16200 1 IRDT} - {1979321400 12600 0 IRST} - {1994963400 16200 1 IRDT} - {2010857400 12600 0 IRST} - {2026585800 16200 1 IRDT} - {2042479800 12600 0 IRST} - {2058121800 16200 1 IRDT} - {2074015800 12600 0 IRST} - {2089657800 16200 1 IRDT} - {2105551800 12600 0 IRST} - {2121193800 16200 1 IRDT} - {2137087800 12600 0 IRST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Tehran) { + {-9223372036854775808 12344 0 LMT} + {-1704165944 12344 0 TMT} + {-757394744 12600 0 IRST} + {247177800 14400 0 IRST} + {259272000 18000 1 IRDT} + {277758000 14400 0 IRST} + {283982400 12600 0 IRST} + {290809800 16200 1 IRDT} + {306531000 12600 0 IRST} + {322432200 16200 1 IRDT} + {338499000 12600 0 IRST} + {673216200 16200 1 IRDT} + {685481400 12600 0 IRST} + {701209800 16200 1 IRDT} + {717103800 12600 0 IRST} + {732745800 16200 1 IRDT} + {748639800 12600 0 IRST} + {764281800 16200 1 IRDT} + {780175800 12600 0 IRST} + {795817800 16200 1 IRDT} + {811711800 12600 0 IRST} + {827353800 16200 1 IRDT} + {843247800 12600 0 IRST} + {858976200 16200 1 IRDT} + {874870200 12600 0 IRST} + {890512200 16200 1 IRDT} + {906406200 12600 0 IRST} + {922048200 16200 1 IRDT} + {937942200 12600 0 IRST} + {953584200 16200 1 IRDT} + {969478200 12600 0 IRST} + {985206600 16200 1 IRDT} + {1001100600 12600 0 IRST} + {1016742600 16200 1 IRDT} + {1032636600 12600 0 IRST} + {1048278600 16200 1 IRDT} + {1064172600 12600 0 IRST} + {1079814600 16200 1 IRDT} + {1095708600 12600 0 IRST} + {1111437000 16200 1 IRDT} + {1127331000 12600 0 IRST} + {1206045000 16200 1 IRDT} + {1221939000 12600 0 IRST} + {1237667400 16200 1 IRDT} + {1253561400 12600 0 IRST} + {1269203400 16200 1 IRDT} + {1285097400 12600 0 IRST} + {1300739400 16200 1 IRDT} + {1316633400 12600 0 IRST} + {1332275400 16200 1 IRDT} + {1348169400 12600 0 IRST} + {1363897800 16200 1 IRDT} + {1379791800 12600 0 IRST} + {1395433800 16200 1 IRDT} + {1411327800 12600 0 IRST} + {1426969800 16200 1 IRDT} + {1442863800 12600 0 IRST} + {1458505800 16200 1 IRDT} + {1474399800 12600 0 IRST} + {1490128200 16200 1 IRDT} + {1506022200 12600 0 IRST} + {1521664200 16200 1 IRDT} + {1537558200 12600 0 IRST} + {1553200200 16200 1 IRDT} + {1569094200 12600 0 IRST} + {1584736200 16200 1 IRDT} + {1600630200 12600 0 IRST} + {1616358600 16200 1 IRDT} + {1632252600 12600 0 IRST} + {1647894600 16200 1 IRDT} + {1663788600 12600 0 IRST} + {1679430600 16200 1 IRDT} + {1695324600 12600 0 IRST} + {1710966600 16200 1 IRDT} + {1726860600 12600 0 IRST} + {1742589000 16200 1 IRDT} + {1758483000 12600 0 IRST} + {1774125000 16200 1 IRDT} + {1790019000 12600 0 IRST} + {1805661000 16200 1 IRDT} + {1821555000 12600 0 IRST} + {1837197000 16200 1 IRDT} + {1853091000 12600 0 IRST} + {1868733000 16200 1 IRDT} + {1884627000 12600 0 IRST} + {1900355400 16200 1 IRDT} + {1916249400 12600 0 IRST} + {1931891400 16200 1 IRDT} + {1947785400 12600 0 IRST} + {1963427400 16200 1 IRDT} + {1979321400 12600 0 IRST} + {1994963400 16200 1 IRDT} + {2010857400 12600 0 IRST} + {2026585800 16200 1 IRDT} + {2042479800 12600 0 IRST} + {2058121800 16200 1 IRDT} + {2074015800 12600 0 IRST} + {2089657800 16200 1 IRDT} + {2105551800 12600 0 IRST} + {2121193800 16200 1 IRDT} + {2137087800 12600 0 IRST} +} diff --git a/library/tzdata/Asia/Tel_Aviv b/library/tzdata/Asia/Tel_Aviv index 1fdf48b..3e7278d 100644 --- a/library/tzdata/Asia/Tel_Aviv +++ b/library/tzdata/Asia/Tel_Aviv @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Jerusalem)]} { - LoadTimeZoneFile Asia/Jerusalem -} -set TZData(:Asia/Tel_Aviv) $TZData(:Asia/Jerusalem) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Jerusalem)]} { + LoadTimeZoneFile Asia/Jerusalem +} +set TZData(:Asia/Tel_Aviv) $TZData(:Asia/Jerusalem) diff --git a/library/tzdata/Asia/Thimbu b/library/tzdata/Asia/Thimbu index d46d63f..94b0846 100644 --- a/library/tzdata/Asia/Thimbu +++ b/library/tzdata/Asia/Thimbu @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Thimphu)]} { - LoadTimeZoneFile Asia/Thimphu -} -set TZData(:Asia/Thimbu) $TZData(:Asia/Thimphu) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Thimphu)]} { + LoadTimeZoneFile Asia/Thimphu +} +set TZData(:Asia/Thimbu) $TZData(:Asia/Thimphu) diff --git a/library/tzdata/Asia/Thimphu b/library/tzdata/Asia/Thimphu index bf517dc..8c981de 100644 --- a/library/tzdata/Asia/Thimphu +++ b/library/tzdata/Asia/Thimphu @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Thimphu) { - {-9223372036854775808 21516 0 LMT} - {-706341516 19800 0 IST} - {560025000 21600 0 BTT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Thimphu) { + {-9223372036854775808 21516 0 LMT} + {-706341516 19800 0 IST} + {560025000 21600 0 BTT} +} diff --git a/library/tzdata/Asia/Tokyo b/library/tzdata/Asia/Tokyo index e761d34..8d1ce11 100644 --- a/library/tzdata/Asia/Tokyo +++ b/library/tzdata/Asia/Tokyo @@ -1,16 +1,16 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Tokyo) { - {-9223372036854775808 33539 0 LMT} - {-2587712400 32400 0 JST} - {-2335251600 32400 0 CJT} - {-1009875600 32400 0 JST} - {-683794800 36000 1 JDT} - {-672393600 32400 0 JST} - {-654764400 36000 1 JDT} - {-640944000 32400 0 JST} - {-620290800 36000 1 JDT} - {-609494400 32400 0 JST} - {-588841200 36000 1 JDT} - {-578044800 32400 0 JST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Tokyo) { + {-9223372036854775808 33539 0 LMT} + {-2587712400 32400 0 JST} + {-2335251600 32400 0 CJT} + {-1009875600 32400 0 JST} + {-683794800 36000 1 JDT} + {-672393600 32400 0 JST} + {-654764400 36000 1 JDT} + {-640944000 32400 0 JST} + {-620290800 36000 1 JDT} + {-609494400 32400 0 JST} + {-588841200 36000 1 JDT} + {-578044800 32400 0 JST} +} diff --git a/library/tzdata/Asia/Ujung_Pandang b/library/tzdata/Asia/Ujung_Pandang index 82995ea..abe142e 100644 --- a/library/tzdata/Asia/Ujung_Pandang +++ b/library/tzdata/Asia/Ujung_Pandang @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Makassar)]} { - LoadTimeZoneFile Asia/Makassar -} -set TZData(:Asia/Ujung_Pandang) $TZData(:Asia/Makassar) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Makassar)]} { + LoadTimeZoneFile Asia/Makassar +} +set TZData(:Asia/Ujung_Pandang) $TZData(:Asia/Makassar) diff --git a/library/tzdata/Asia/Ulaanbaatar b/library/tzdata/Asia/Ulaanbaatar index 78e49d3..fef76ec 100644 --- a/library/tzdata/Asia/Ulaanbaatar +++ b/library/tzdata/Asia/Ulaanbaatar @@ -1,51 +1,51 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Ulaanbaatar) { - {-9223372036854775808 25652 0 LMT} - {-2032931252 25200 0 ULAT} - {252435600 28800 0 ULAT} - {417974400 32400 1 ULAST} - {433782000 28800 0 ULAT} - {449596800 32400 1 ULAST} - {465318000 28800 0 ULAT} - {481046400 32400 1 ULAST} - {496767600 28800 0 ULAT} - {512496000 32400 1 ULAST} - {528217200 28800 0 ULAT} - {543945600 32400 1 ULAST} - {559666800 28800 0 ULAT} - {575395200 32400 1 ULAST} - {591116400 28800 0 ULAT} - {606844800 32400 1 ULAST} - {622566000 28800 0 ULAT} - {638294400 32400 1 ULAST} - {654620400 28800 0 ULAT} - {670348800 32400 1 ULAST} - {686070000 28800 0 ULAT} - {701798400 32400 1 ULAST} - {717519600 28800 0 ULAT} - {733248000 32400 1 ULAST} - {748969200 28800 0 ULAT} - {764697600 32400 1 ULAST} - {780418800 28800 0 ULAT} - {796147200 32400 1 ULAST} - {811868400 28800 0 ULAT} - {828201600 32400 1 ULAST} - {843922800 28800 0 ULAT} - {859651200 32400 1 ULAST} - {875372400 28800 0 ULAT} - {891100800 32400 1 ULAST} - {906822000 28800 0 ULAT} - {988394400 32400 1 ULAST} - {1001696400 28800 0 ULAT} - {1017424800 32400 1 ULAST} - {1033146000 28800 0 ULAT} - {1048874400 32400 1 ULAST} - {1064595600 28800 0 ULAT} - {1080324000 32400 1 ULAST} - {1096045200 28800 0 ULAT} - {1111773600 32400 1 ULAST} - {1127494800 28800 0 ULAT} - {1143223200 32400 1 ULAST} - {1159549200 28800 0 ULAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Ulaanbaatar) { + {-9223372036854775808 25652 0 LMT} + {-2032931252 25200 0 ULAT} + {252435600 28800 0 ULAT} + {417974400 32400 1 ULAST} + {433782000 28800 0 ULAT} + {449596800 32400 1 ULAST} + {465318000 28800 0 ULAT} + {481046400 32400 1 ULAST} + {496767600 28800 0 ULAT} + {512496000 32400 1 ULAST} + {528217200 28800 0 ULAT} + {543945600 32400 1 ULAST} + {559666800 28800 0 ULAT} + {575395200 32400 1 ULAST} + {591116400 28800 0 ULAT} + {606844800 32400 1 ULAST} + {622566000 28800 0 ULAT} + {638294400 32400 1 ULAST} + {654620400 28800 0 ULAT} + {670348800 32400 1 ULAST} + {686070000 28800 0 ULAT} + {701798400 32400 1 ULAST} + {717519600 28800 0 ULAT} + {733248000 32400 1 ULAST} + {748969200 28800 0 ULAT} + {764697600 32400 1 ULAST} + {780418800 28800 0 ULAT} + {796147200 32400 1 ULAST} + {811868400 28800 0 ULAT} + {828201600 32400 1 ULAST} + {843922800 28800 0 ULAT} + {859651200 32400 1 ULAST} + {875372400 28800 0 ULAT} + {891100800 32400 1 ULAST} + {906822000 28800 0 ULAT} + {988394400 32400 1 ULAST} + {1001696400 28800 0 ULAT} + {1017424800 32400 1 ULAST} + {1033146000 28800 0 ULAT} + {1048874400 32400 1 ULAST} + {1064595600 28800 0 ULAT} + {1080324000 32400 1 ULAST} + {1096045200 28800 0 ULAT} + {1111773600 32400 1 ULAST} + {1127494800 28800 0 ULAT} + {1143223200 32400 1 ULAST} + {1159549200 28800 0 ULAT} +} diff --git a/library/tzdata/Asia/Ulan_Bator b/library/tzdata/Asia/Ulan_Bator index dab5187..3215ee7 100644 --- a/library/tzdata/Asia/Ulan_Bator +++ b/library/tzdata/Asia/Ulan_Bator @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Ulaanbaatar)]} { - LoadTimeZoneFile Asia/Ulaanbaatar -} -set TZData(:Asia/Ulan_Bator) $TZData(:Asia/Ulaanbaatar) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Ulaanbaatar)]} { + LoadTimeZoneFile Asia/Ulaanbaatar +} +set TZData(:Asia/Ulan_Bator) $TZData(:Asia/Ulaanbaatar) diff --git a/library/tzdata/Asia/Urumqi b/library/tzdata/Asia/Urumqi index 0e1af1e..93fc909 100644 --- a/library/tzdata/Asia/Urumqi +++ b/library/tzdata/Asia/Urumqi @@ -1,19 +1,19 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Urumqi) { - {-9223372036854775808 21020 0 LMT} - {-1325483420 21600 0 URUT} - {325965600 28800 0 CST} - {515520000 32400 1 CDT} - {527007600 28800 0 CST} - {545155200 32400 1 CDT} - {558457200 28800 0 CST} - {576604800 32400 1 CDT} - {589906800 28800 0 CST} - {608659200 32400 1 CDT} - {621961200 28800 0 CST} - {640108800 32400 1 CDT} - {653410800 28800 0 CST} - {671558400 32400 1 CDT} - {684860400 28800 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Urumqi) { + {-9223372036854775808 21020 0 LMT} + {-1325483420 21600 0 URUT} + {325965600 28800 0 CST} + {515520000 32400 1 CDT} + {527007600 28800 0 CST} + {545155200 32400 1 CDT} + {558457200 28800 0 CST} + {576604800 32400 1 CDT} + {589906800 28800 0 CST} + {608659200 32400 1 CDT} + {621961200 28800 0 CST} + {640108800 32400 1 CDT} + {653410800 28800 0 CST} + {671558400 32400 1 CDT} + {684860400 28800 0 CST} +} diff --git a/library/tzdata/Asia/Vientiane b/library/tzdata/Asia/Vientiane index c98b69d..18ade4d 100644 --- a/library/tzdata/Asia/Vientiane +++ b/library/tzdata/Asia/Vientiane @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Vientiane) { - {-9223372036854775808 24624 0 LMT} - {-2005973424 25580 0 SMT} - {-1855983920 25200 0 ICT} - {-1819954800 28800 0 ICT} - {-1220428800 25200 0 ICT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Vientiane) { + {-9223372036854775808 24624 0 LMT} + {-2005973424 25580 0 SMT} + {-1855983920 25200 0 ICT} + {-1819954800 28800 0 ICT} + {-1220428800 25200 0 ICT} +} diff --git a/library/tzdata/Asia/Vladivostok b/library/tzdata/Asia/Vladivostok index 6c6148d..29e8f62 100644 --- a/library/tzdata/Asia/Vladivostok +++ b/library/tzdata/Asia/Vladivostok @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Vladivostok) { - {-9223372036854775808 31664 0 LMT} - {-1487321264 32400 0 VLAT} - {-1247562000 36000 0 VLAMMTT} - {354895200 39600 1 VLAST} - {370702800 36000 0 VLAT} - {386431200 39600 1 VLAST} - {402238800 36000 0 VLAT} - {417967200 39600 1 VLAST} - {433774800 36000 0 VLAT} - {449589600 39600 1 VLAST} - {465321600 36000 0 VLAT} - {481046400 39600 1 VLAST} - {496771200 36000 0 VLAT} - {512496000 39600 1 VLAST} - {528220800 36000 0 VLAT} - {543945600 39600 1 VLAST} - {559670400 36000 0 VLAT} - {575395200 39600 1 VLAST} - {591120000 36000 0 VLAT} - {606844800 39600 1 VLAST} - {622569600 36000 0 VLAT} - {638294400 39600 1 VLAST} - {654624000 36000 0 VLAT} - {670348800 32400 0 VLAMMTST} - {670352400 36000 1 VLASST} - {686077200 32400 0 VLAST} - {695754000 36000 0 VLAMMTT} - {701787600 39600 1 VLAST} - {717508800 36000 0 VLAT} - {733248000 39600 1 VLAST} - {748972800 36000 0 VLAT} - {764697600 39600 1 VLAST} - {780422400 36000 0 VLAT} - {796147200 39600 1 VLAST} - {811872000 36000 0 VLAT} - {828201600 39600 1 VLAST} - {846345600 36000 0 VLAT} - {859651200 39600 1 VLAST} - {877795200 36000 0 VLAT} - {891100800 39600 1 VLAST} - {909244800 36000 0 VLAT} - {922550400 39600 1 VLAST} - {941299200 36000 0 VLAT} - {954000000 39600 1 VLAST} - {972748800 36000 0 VLAT} - {985449600 39600 1 VLAST} - {1004198400 36000 0 VLAT} - {1017504000 39600 1 VLAST} - {1035648000 36000 0 VLAT} - {1048953600 39600 1 VLAST} - {1067097600 36000 0 VLAT} - {1080403200 39600 1 VLAST} - {1099152000 36000 0 VLAT} - {1111852800 39600 1 VLAST} - {1130601600 36000 0 VLAT} - {1143302400 39600 1 VLAST} - {1162051200 36000 0 VLAT} - {1174752000 39600 1 VLAST} - {1193500800 36000 0 VLAT} - {1206806400 39600 1 VLAST} - {1224950400 36000 0 VLAT} - {1238256000 39600 1 VLAST} - {1256400000 36000 0 VLAT} - {1269705600 39600 1 VLAST} - {1288454400 36000 0 VLAT} - {1301155200 39600 1 VLAST} - {1319904000 36000 0 VLAT} - {1332604800 39600 1 VLAST} - {1351353600 36000 0 VLAT} - {1364659200 39600 1 VLAST} - {1382803200 36000 0 VLAT} - {1396108800 39600 1 VLAST} - {1414252800 36000 0 VLAT} - {1427558400 39600 1 VLAST} - {1445702400 36000 0 VLAT} - {1459008000 39600 1 VLAST} - {1477756800 36000 0 VLAT} - {1490457600 39600 1 VLAST} - {1509206400 36000 0 VLAT} - {1521907200 39600 1 VLAST} - {1540656000 36000 0 VLAT} - {1553961600 39600 1 VLAST} - {1572105600 36000 0 VLAT} - {1585411200 39600 1 VLAST} - {1603555200 36000 0 VLAT} - {1616860800 39600 1 VLAST} - {1635609600 36000 0 VLAT} - {1648310400 39600 1 VLAST} - {1667059200 36000 0 VLAT} - {1679760000 39600 1 VLAST} - {1698508800 36000 0 VLAT} - {1711814400 39600 1 VLAST} - {1729958400 36000 0 VLAT} - {1743264000 39600 1 VLAST} - {1761408000 36000 0 VLAT} - {1774713600 39600 1 VLAST} - {1792857600 36000 0 VLAT} - {1806163200 39600 1 VLAST} - {1824912000 36000 0 VLAT} - {1837612800 39600 1 VLAST} - {1856361600 36000 0 VLAT} - {1869062400 39600 1 VLAST} - {1887811200 36000 0 VLAT} - {1901116800 39600 1 VLAST} - {1919260800 36000 0 VLAT} - {1932566400 39600 1 VLAST} - {1950710400 36000 0 VLAT} - {1964016000 39600 1 VLAST} - {1982764800 36000 0 VLAT} - {1995465600 39600 1 VLAST} - {2014214400 36000 0 VLAT} - {2026915200 39600 1 VLAST} - {2045664000 36000 0 VLAT} - {2058364800 39600 1 VLAST} - {2077113600 36000 0 VLAT} - {2090419200 39600 1 VLAST} - {2108563200 36000 0 VLAT} - {2121868800 39600 1 VLAST} - {2140012800 36000 0 VLAT} - {2153318400 39600 1 VLAST} - {2172067200 36000 0 VLAT} - {2184768000 39600 1 VLAST} - {2203516800 36000 0 VLAT} - {2216217600 39600 1 VLAST} - {2234966400 36000 0 VLAT} - {2248272000 39600 1 VLAST} - {2266416000 36000 0 VLAT} - {2279721600 39600 1 VLAST} - {2297865600 36000 0 VLAT} - {2311171200 39600 1 VLAST} - {2329315200 36000 0 VLAT} - {2342620800 39600 1 VLAST} - {2361369600 36000 0 VLAT} - {2374070400 39600 1 VLAST} - {2392819200 36000 0 VLAT} - {2405520000 39600 1 VLAST} - {2424268800 36000 0 VLAT} - {2437574400 39600 1 VLAST} - {2455718400 36000 0 VLAT} - {2469024000 39600 1 VLAST} - {2487168000 36000 0 VLAT} - {2500473600 39600 1 VLAST} - {2519222400 36000 0 VLAT} - {2531923200 39600 1 VLAST} - {2550672000 36000 0 VLAT} - {2563372800 39600 1 VLAST} - {2582121600 36000 0 VLAT} - {2595427200 39600 1 VLAST} - {2613571200 36000 0 VLAT} - {2626876800 39600 1 VLAST} - {2645020800 36000 0 VLAT} - {2658326400 39600 1 VLAST} - {2676470400 36000 0 VLAT} - {2689776000 39600 1 VLAST} - {2708524800 36000 0 VLAT} - {2721225600 39600 1 VLAST} - {2739974400 36000 0 VLAT} - {2752675200 39600 1 VLAST} - {2771424000 36000 0 VLAT} - {2784729600 39600 1 VLAST} - {2802873600 36000 0 VLAT} - {2816179200 39600 1 VLAST} - {2834323200 36000 0 VLAT} - {2847628800 39600 1 VLAST} - {2866377600 36000 0 VLAT} - {2879078400 39600 1 VLAST} - {2897827200 36000 0 VLAT} - {2910528000 39600 1 VLAST} - {2929276800 36000 0 VLAT} - {2941977600 39600 1 VLAST} - {2960726400 36000 0 VLAT} - {2974032000 39600 1 VLAST} - {2992176000 36000 0 VLAT} - {3005481600 39600 1 VLAST} - {3023625600 36000 0 VLAT} - {3036931200 39600 1 VLAST} - {3055680000 36000 0 VLAT} - {3068380800 39600 1 VLAST} - {3087129600 36000 0 VLAT} - {3099830400 39600 1 VLAST} - {3118579200 36000 0 VLAT} - {3131884800 39600 1 VLAST} - {3150028800 36000 0 VLAT} - {3163334400 39600 1 VLAST} - {3181478400 36000 0 VLAT} - {3194784000 39600 1 VLAST} - {3212928000 36000 0 VLAT} - {3226233600 39600 1 VLAST} - {3244982400 36000 0 VLAT} - {3257683200 39600 1 VLAST} - {3276432000 36000 0 VLAT} - {3289132800 39600 1 VLAST} - {3307881600 36000 0 VLAT} - {3321187200 39600 1 VLAST} - {3339331200 36000 0 VLAT} - {3352636800 39600 1 VLAST} - {3370780800 36000 0 VLAT} - {3384086400 39600 1 VLAST} - {3402835200 36000 0 VLAT} - {3415536000 39600 1 VLAST} - {3434284800 36000 0 VLAT} - {3446985600 39600 1 VLAST} - {3465734400 36000 0 VLAT} - {3479040000 39600 1 VLAST} - {3497184000 36000 0 VLAT} - {3510489600 39600 1 VLAST} - {3528633600 36000 0 VLAT} - {3541939200 39600 1 VLAST} - {3560083200 36000 0 VLAT} - {3573388800 39600 1 VLAST} - {3592137600 36000 0 VLAT} - {3604838400 39600 1 VLAST} - {3623587200 36000 0 VLAT} - {3636288000 39600 1 VLAST} - {3655036800 36000 0 VLAT} - {3668342400 39600 1 VLAST} - {3686486400 36000 0 VLAT} - {3699792000 39600 1 VLAST} - {3717936000 36000 0 VLAT} - {3731241600 39600 1 VLAST} - {3749990400 36000 0 VLAT} - {3762691200 39600 1 VLAST} - {3781440000 36000 0 VLAT} - {3794140800 39600 1 VLAST} - {3812889600 36000 0 VLAT} - {3825590400 39600 1 VLAST} - {3844339200 36000 0 VLAT} - {3857644800 39600 1 VLAST} - {3875788800 36000 0 VLAT} - {3889094400 39600 1 VLAST} - {3907238400 36000 0 VLAT} - {3920544000 39600 1 VLAST} - {3939292800 36000 0 VLAT} - {3951993600 39600 1 VLAST} - {3970742400 36000 0 VLAT} - {3983443200 39600 1 VLAST} - {4002192000 36000 0 VLAT} - {4015497600 39600 1 VLAST} - {4033641600 36000 0 VLAT} - {4046947200 39600 1 VLAST} - {4065091200 36000 0 VLAT} - {4078396800 39600 1 VLAST} - {4096540800 36000 0 VLAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Vladivostok) { + {-9223372036854775808 31664 0 LMT} + {-1487321264 32400 0 VLAT} + {-1247562000 36000 0 VLAMMTT} + {354895200 39600 1 VLAST} + {370702800 36000 0 VLAT} + {386431200 39600 1 VLAST} + {402238800 36000 0 VLAT} + {417967200 39600 1 VLAST} + {433774800 36000 0 VLAT} + {449589600 39600 1 VLAST} + {465321600 36000 0 VLAT} + {481046400 39600 1 VLAST} + {496771200 36000 0 VLAT} + {512496000 39600 1 VLAST} + {528220800 36000 0 VLAT} + {543945600 39600 1 VLAST} + {559670400 36000 0 VLAT} + {575395200 39600 1 VLAST} + {591120000 36000 0 VLAT} + {606844800 39600 1 VLAST} + {622569600 36000 0 VLAT} + {638294400 39600 1 VLAST} + {654624000 36000 0 VLAT} + {670348800 32400 0 VLAMMTST} + {670352400 36000 1 VLASST} + {686077200 32400 0 VLAST} + {695754000 36000 0 VLAMMTT} + {701787600 39600 1 VLAST} + {717508800 36000 0 VLAT} + {733248000 39600 1 VLAST} + {748972800 36000 0 VLAT} + {764697600 39600 1 VLAST} + {780422400 36000 0 VLAT} + {796147200 39600 1 VLAST} + {811872000 36000 0 VLAT} + {828201600 39600 1 VLAST} + {846345600 36000 0 VLAT} + {859651200 39600 1 VLAST} + {877795200 36000 0 VLAT} + {891100800 39600 1 VLAST} + {909244800 36000 0 VLAT} + {922550400 39600 1 VLAST} + {941299200 36000 0 VLAT} + {954000000 39600 1 VLAST} + {972748800 36000 0 VLAT} + {985449600 39600 1 VLAST} + {1004198400 36000 0 VLAT} + {1017504000 39600 1 VLAST} + {1035648000 36000 0 VLAT} + {1048953600 39600 1 VLAST} + {1067097600 36000 0 VLAT} + {1080403200 39600 1 VLAST} + {1099152000 36000 0 VLAT} + {1111852800 39600 1 VLAST} + {1130601600 36000 0 VLAT} + {1143302400 39600 1 VLAST} + {1162051200 36000 0 VLAT} + {1174752000 39600 1 VLAST} + {1193500800 36000 0 VLAT} + {1206806400 39600 1 VLAST} + {1224950400 36000 0 VLAT} + {1238256000 39600 1 VLAST} + {1256400000 36000 0 VLAT} + {1269705600 39600 1 VLAST} + {1288454400 36000 0 VLAT} + {1301155200 39600 1 VLAST} + {1319904000 36000 0 VLAT} + {1332604800 39600 1 VLAST} + {1351353600 36000 0 VLAT} + {1364659200 39600 1 VLAST} + {1382803200 36000 0 VLAT} + {1396108800 39600 1 VLAST} + {1414252800 36000 0 VLAT} + {1427558400 39600 1 VLAST} + {1445702400 36000 0 VLAT} + {1459008000 39600 1 VLAST} + {1477756800 36000 0 VLAT} + {1490457600 39600 1 VLAST} + {1509206400 36000 0 VLAT} + {1521907200 39600 1 VLAST} + {1540656000 36000 0 VLAT} + {1553961600 39600 1 VLAST} + {1572105600 36000 0 VLAT} + {1585411200 39600 1 VLAST} + {1603555200 36000 0 VLAT} + {1616860800 39600 1 VLAST} + {1635609600 36000 0 VLAT} + {1648310400 39600 1 VLAST} + {1667059200 36000 0 VLAT} + {1679760000 39600 1 VLAST} + {1698508800 36000 0 VLAT} + {1711814400 39600 1 VLAST} + {1729958400 36000 0 VLAT} + {1743264000 39600 1 VLAST} + {1761408000 36000 0 VLAT} + {1774713600 39600 1 VLAST} + {1792857600 36000 0 VLAT} + {1806163200 39600 1 VLAST} + {1824912000 36000 0 VLAT} + {1837612800 39600 1 VLAST} + {1856361600 36000 0 VLAT} + {1869062400 39600 1 VLAST} + {1887811200 36000 0 VLAT} + {1901116800 39600 1 VLAST} + {1919260800 36000 0 VLAT} + {1932566400 39600 1 VLAST} + {1950710400 36000 0 VLAT} + {1964016000 39600 1 VLAST} + {1982764800 36000 0 VLAT} + {1995465600 39600 1 VLAST} + {2014214400 36000 0 VLAT} + {2026915200 39600 1 VLAST} + {2045664000 36000 0 VLAT} + {2058364800 39600 1 VLAST} + {2077113600 36000 0 VLAT} + {2090419200 39600 1 VLAST} + {2108563200 36000 0 VLAT} + {2121868800 39600 1 VLAST} + {2140012800 36000 0 VLAT} + {2153318400 39600 1 VLAST} + {2172067200 36000 0 VLAT} + {2184768000 39600 1 VLAST} + {2203516800 36000 0 VLAT} + {2216217600 39600 1 VLAST} + {2234966400 36000 0 VLAT} + {2248272000 39600 1 VLAST} + {2266416000 36000 0 VLAT} + {2279721600 39600 1 VLAST} + {2297865600 36000 0 VLAT} + {2311171200 39600 1 VLAST} + {2329315200 36000 0 VLAT} + {2342620800 39600 1 VLAST} + {2361369600 36000 0 VLAT} + {2374070400 39600 1 VLAST} + {2392819200 36000 0 VLAT} + {2405520000 39600 1 VLAST} + {2424268800 36000 0 VLAT} + {2437574400 39600 1 VLAST} + {2455718400 36000 0 VLAT} + {2469024000 39600 1 VLAST} + {2487168000 36000 0 VLAT} + {2500473600 39600 1 VLAST} + {2519222400 36000 0 VLAT} + {2531923200 39600 1 VLAST} + {2550672000 36000 0 VLAT} + {2563372800 39600 1 VLAST} + {2582121600 36000 0 VLAT} + {2595427200 39600 1 VLAST} + {2613571200 36000 0 VLAT} + {2626876800 39600 1 VLAST} + {2645020800 36000 0 VLAT} + {2658326400 39600 1 VLAST} + {2676470400 36000 0 VLAT} + {2689776000 39600 1 VLAST} + {2708524800 36000 0 VLAT} + {2721225600 39600 1 VLAST} + {2739974400 36000 0 VLAT} + {2752675200 39600 1 VLAST} + {2771424000 36000 0 VLAT} + {2784729600 39600 1 VLAST} + {2802873600 36000 0 VLAT} + {2816179200 39600 1 VLAST} + {2834323200 36000 0 VLAT} + {2847628800 39600 1 VLAST} + {2866377600 36000 0 VLAT} + {2879078400 39600 1 VLAST} + {2897827200 36000 0 VLAT} + {2910528000 39600 1 VLAST} + {2929276800 36000 0 VLAT} + {2941977600 39600 1 VLAST} + {2960726400 36000 0 VLAT} + {2974032000 39600 1 VLAST} + {2992176000 36000 0 VLAT} + {3005481600 39600 1 VLAST} + {3023625600 36000 0 VLAT} + {3036931200 39600 1 VLAST} + {3055680000 36000 0 VLAT} + {3068380800 39600 1 VLAST} + {3087129600 36000 0 VLAT} + {3099830400 39600 1 VLAST} + {3118579200 36000 0 VLAT} + {3131884800 39600 1 VLAST} + {3150028800 36000 0 VLAT} + {3163334400 39600 1 VLAST} + {3181478400 36000 0 VLAT} + {3194784000 39600 1 VLAST} + {3212928000 36000 0 VLAT} + {3226233600 39600 1 VLAST} + {3244982400 36000 0 VLAT} + {3257683200 39600 1 VLAST} + {3276432000 36000 0 VLAT} + {3289132800 39600 1 VLAST} + {3307881600 36000 0 VLAT} + {3321187200 39600 1 VLAST} + {3339331200 36000 0 VLAT} + {3352636800 39600 1 VLAST} + {3370780800 36000 0 VLAT} + {3384086400 39600 1 VLAST} + {3402835200 36000 0 VLAT} + {3415536000 39600 1 VLAST} + {3434284800 36000 0 VLAT} + {3446985600 39600 1 VLAST} + {3465734400 36000 0 VLAT} + {3479040000 39600 1 VLAST} + {3497184000 36000 0 VLAT} + {3510489600 39600 1 VLAST} + {3528633600 36000 0 VLAT} + {3541939200 39600 1 VLAST} + {3560083200 36000 0 VLAT} + {3573388800 39600 1 VLAST} + {3592137600 36000 0 VLAT} + {3604838400 39600 1 VLAST} + {3623587200 36000 0 VLAT} + {3636288000 39600 1 VLAST} + {3655036800 36000 0 VLAT} + {3668342400 39600 1 VLAST} + {3686486400 36000 0 VLAT} + {3699792000 39600 1 VLAST} + {3717936000 36000 0 VLAT} + {3731241600 39600 1 VLAST} + {3749990400 36000 0 VLAT} + {3762691200 39600 1 VLAST} + {3781440000 36000 0 VLAT} + {3794140800 39600 1 VLAST} + {3812889600 36000 0 VLAT} + {3825590400 39600 1 VLAST} + {3844339200 36000 0 VLAT} + {3857644800 39600 1 VLAST} + {3875788800 36000 0 VLAT} + {3889094400 39600 1 VLAST} + {3907238400 36000 0 VLAT} + {3920544000 39600 1 VLAST} + {3939292800 36000 0 VLAT} + {3951993600 39600 1 VLAST} + {3970742400 36000 0 VLAT} + {3983443200 39600 1 VLAST} + {4002192000 36000 0 VLAT} + {4015497600 39600 1 VLAST} + {4033641600 36000 0 VLAT} + {4046947200 39600 1 VLAST} + {4065091200 36000 0 VLAT} + {4078396800 39600 1 VLAST} + {4096540800 36000 0 VLAT} +} diff --git a/library/tzdata/Asia/Yakutsk b/library/tzdata/Asia/Yakutsk index 5dfd344..acf5d7d 100644 --- a/library/tzdata/Asia/Yakutsk +++ b/library/tzdata/Asia/Yakutsk @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Yakutsk) { - {-9223372036854775808 31120 0 LMT} - {-1579423120 28800 0 YAKT} - {-1247558400 32400 0 YAKMMTT} - {354898800 36000 1 YAKST} - {370706400 32400 0 YAKT} - {386434800 36000 1 YAKST} - {402242400 32400 0 YAKT} - {417970800 36000 1 YAKST} - {433778400 32400 0 YAKT} - {449593200 36000 1 YAKST} - {465325200 32400 0 YAKT} - {481050000 36000 1 YAKST} - {496774800 32400 0 YAKT} - {512499600 36000 1 YAKST} - {528224400 32400 0 YAKT} - {543949200 36000 1 YAKST} - {559674000 32400 0 YAKT} - {575398800 36000 1 YAKST} - {591123600 32400 0 YAKT} - {606848400 36000 1 YAKST} - {622573200 32400 0 YAKT} - {638298000 36000 1 YAKST} - {654627600 32400 0 YAKT} - {670352400 28800 0 YAKMMTT} - {670356000 32400 1 YAKST} - {686080800 28800 0 YAKT} - {695757600 32400 0 YAKMMTT} - {701791200 36000 1 YAKST} - {717512400 32400 0 YAKT} - {733251600 36000 1 YAKST} - {748976400 32400 0 YAKT} - {764701200 36000 1 YAKST} - {780426000 32400 0 YAKT} - {796150800 36000 1 YAKST} - {811875600 32400 0 YAKT} - {828205200 36000 1 YAKST} - {846349200 32400 0 YAKT} - {859654800 36000 1 YAKST} - {877798800 32400 0 YAKT} - {891104400 36000 1 YAKST} - {909248400 32400 0 YAKT} - {922554000 36000 1 YAKST} - {941302800 32400 0 YAKT} - {954003600 36000 1 YAKST} - {972752400 32400 0 YAKT} - {985453200 36000 1 YAKST} - {1004202000 32400 0 YAKT} - {1017507600 36000 1 YAKST} - {1035651600 32400 0 YAKT} - {1048957200 36000 1 YAKST} - {1067101200 32400 0 YAKT} - {1080406800 36000 1 YAKST} - {1099155600 32400 0 YAKT} - {1111856400 36000 1 YAKST} - {1130605200 32400 0 YAKT} - {1143306000 36000 1 YAKST} - {1162054800 32400 0 YAKT} - {1174755600 36000 1 YAKST} - {1193504400 32400 0 YAKT} - {1206810000 36000 1 YAKST} - {1224954000 32400 0 YAKT} - {1238259600 36000 1 YAKST} - {1256403600 32400 0 YAKT} - {1269709200 36000 1 YAKST} - {1288458000 32400 0 YAKT} - {1301158800 36000 1 YAKST} - {1319907600 32400 0 YAKT} - {1332608400 36000 1 YAKST} - {1351357200 32400 0 YAKT} - {1364662800 36000 1 YAKST} - {1382806800 32400 0 YAKT} - {1396112400 36000 1 YAKST} - {1414256400 32400 0 YAKT} - {1427562000 36000 1 YAKST} - {1445706000 32400 0 YAKT} - {1459011600 36000 1 YAKST} - {1477760400 32400 0 YAKT} - {1490461200 36000 1 YAKST} - {1509210000 32400 0 YAKT} - {1521910800 36000 1 YAKST} - {1540659600 32400 0 YAKT} - {1553965200 36000 1 YAKST} - {1572109200 32400 0 YAKT} - {1585414800 36000 1 YAKST} - {1603558800 32400 0 YAKT} - {1616864400 36000 1 YAKST} - {1635613200 32400 0 YAKT} - {1648314000 36000 1 YAKST} - {1667062800 32400 0 YAKT} - {1679763600 36000 1 YAKST} - {1698512400 32400 0 YAKT} - {1711818000 36000 1 YAKST} - {1729962000 32400 0 YAKT} - {1743267600 36000 1 YAKST} - {1761411600 32400 0 YAKT} - {1774717200 36000 1 YAKST} - {1792861200 32400 0 YAKT} - {1806166800 36000 1 YAKST} - {1824915600 32400 0 YAKT} - {1837616400 36000 1 YAKST} - {1856365200 32400 0 YAKT} - {1869066000 36000 1 YAKST} - {1887814800 32400 0 YAKT} - {1901120400 36000 1 YAKST} - {1919264400 32400 0 YAKT} - {1932570000 36000 1 YAKST} - {1950714000 32400 0 YAKT} - {1964019600 36000 1 YAKST} - {1982768400 32400 0 YAKT} - {1995469200 36000 1 YAKST} - {2014218000 32400 0 YAKT} - {2026918800 36000 1 YAKST} - {2045667600 32400 0 YAKT} - {2058368400 36000 1 YAKST} - {2077117200 32400 0 YAKT} - {2090422800 36000 1 YAKST} - {2108566800 32400 0 YAKT} - {2121872400 36000 1 YAKST} - {2140016400 32400 0 YAKT} - {2153322000 36000 1 YAKST} - {2172070800 32400 0 YAKT} - {2184771600 36000 1 YAKST} - {2203520400 32400 0 YAKT} - {2216221200 36000 1 YAKST} - {2234970000 32400 0 YAKT} - {2248275600 36000 1 YAKST} - {2266419600 32400 0 YAKT} - {2279725200 36000 1 YAKST} - {2297869200 32400 0 YAKT} - {2311174800 36000 1 YAKST} - {2329318800 32400 0 YAKT} - {2342624400 36000 1 YAKST} - {2361373200 32400 0 YAKT} - {2374074000 36000 1 YAKST} - {2392822800 32400 0 YAKT} - {2405523600 36000 1 YAKST} - {2424272400 32400 0 YAKT} - {2437578000 36000 1 YAKST} - {2455722000 32400 0 YAKT} - {2469027600 36000 1 YAKST} - {2487171600 32400 0 YAKT} - {2500477200 36000 1 YAKST} - {2519226000 32400 0 YAKT} - {2531926800 36000 1 YAKST} - {2550675600 32400 0 YAKT} - {2563376400 36000 1 YAKST} - {2582125200 32400 0 YAKT} - {2595430800 36000 1 YAKST} - {2613574800 32400 0 YAKT} - {2626880400 36000 1 YAKST} - {2645024400 32400 0 YAKT} - {2658330000 36000 1 YAKST} - {2676474000 32400 0 YAKT} - {2689779600 36000 1 YAKST} - {2708528400 32400 0 YAKT} - {2721229200 36000 1 YAKST} - {2739978000 32400 0 YAKT} - {2752678800 36000 1 YAKST} - {2771427600 32400 0 YAKT} - {2784733200 36000 1 YAKST} - {2802877200 32400 0 YAKT} - {2816182800 36000 1 YAKST} - {2834326800 32400 0 YAKT} - {2847632400 36000 1 YAKST} - {2866381200 32400 0 YAKT} - {2879082000 36000 1 YAKST} - {2897830800 32400 0 YAKT} - {2910531600 36000 1 YAKST} - {2929280400 32400 0 YAKT} - {2941981200 36000 1 YAKST} - {2960730000 32400 0 YAKT} - {2974035600 36000 1 YAKST} - {2992179600 32400 0 YAKT} - {3005485200 36000 1 YAKST} - {3023629200 32400 0 YAKT} - {3036934800 36000 1 YAKST} - {3055683600 32400 0 YAKT} - {3068384400 36000 1 YAKST} - {3087133200 32400 0 YAKT} - {3099834000 36000 1 YAKST} - {3118582800 32400 0 YAKT} - {3131888400 36000 1 YAKST} - {3150032400 32400 0 YAKT} - {3163338000 36000 1 YAKST} - {3181482000 32400 0 YAKT} - {3194787600 36000 1 YAKST} - {3212931600 32400 0 YAKT} - {3226237200 36000 1 YAKST} - {3244986000 32400 0 YAKT} - {3257686800 36000 1 YAKST} - {3276435600 32400 0 YAKT} - {3289136400 36000 1 YAKST} - {3307885200 32400 0 YAKT} - {3321190800 36000 1 YAKST} - {3339334800 32400 0 YAKT} - {3352640400 36000 1 YAKST} - {3370784400 32400 0 YAKT} - {3384090000 36000 1 YAKST} - {3402838800 32400 0 YAKT} - {3415539600 36000 1 YAKST} - {3434288400 32400 0 YAKT} - {3446989200 36000 1 YAKST} - {3465738000 32400 0 YAKT} - {3479043600 36000 1 YAKST} - {3497187600 32400 0 YAKT} - {3510493200 36000 1 YAKST} - {3528637200 32400 0 YAKT} - {3541942800 36000 1 YAKST} - {3560086800 32400 0 YAKT} - {3573392400 36000 1 YAKST} - {3592141200 32400 0 YAKT} - {3604842000 36000 1 YAKST} - {3623590800 32400 0 YAKT} - {3636291600 36000 1 YAKST} - {3655040400 32400 0 YAKT} - {3668346000 36000 1 YAKST} - {3686490000 32400 0 YAKT} - {3699795600 36000 1 YAKST} - {3717939600 32400 0 YAKT} - {3731245200 36000 1 YAKST} - {3749994000 32400 0 YAKT} - {3762694800 36000 1 YAKST} - {3781443600 32400 0 YAKT} - {3794144400 36000 1 YAKST} - {3812893200 32400 0 YAKT} - {3825594000 36000 1 YAKST} - {3844342800 32400 0 YAKT} - {3857648400 36000 1 YAKST} - {3875792400 32400 0 YAKT} - {3889098000 36000 1 YAKST} - {3907242000 32400 0 YAKT} - {3920547600 36000 1 YAKST} - {3939296400 32400 0 YAKT} - {3951997200 36000 1 YAKST} - {3970746000 32400 0 YAKT} - {3983446800 36000 1 YAKST} - {4002195600 32400 0 YAKT} - {4015501200 36000 1 YAKST} - {4033645200 32400 0 YAKT} - {4046950800 36000 1 YAKST} - {4065094800 32400 0 YAKT} - {4078400400 36000 1 YAKST} - {4096544400 32400 0 YAKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Yakutsk) { + {-9223372036854775808 31120 0 LMT} + {-1579423120 28800 0 YAKT} + {-1247558400 32400 0 YAKMMTT} + {354898800 36000 1 YAKST} + {370706400 32400 0 YAKT} + {386434800 36000 1 YAKST} + {402242400 32400 0 YAKT} + {417970800 36000 1 YAKST} + {433778400 32400 0 YAKT} + {449593200 36000 1 YAKST} + {465325200 32400 0 YAKT} + {481050000 36000 1 YAKST} + {496774800 32400 0 YAKT} + {512499600 36000 1 YAKST} + {528224400 32400 0 YAKT} + {543949200 36000 1 YAKST} + {559674000 32400 0 YAKT} + {575398800 36000 1 YAKST} + {591123600 32400 0 YAKT} + {606848400 36000 1 YAKST} + {622573200 32400 0 YAKT} + {638298000 36000 1 YAKST} + {654627600 32400 0 YAKT} + {670352400 28800 0 YAKMMTT} + {670356000 32400 1 YAKST} + {686080800 28800 0 YAKT} + {695757600 32400 0 YAKMMTT} + {701791200 36000 1 YAKST} + {717512400 32400 0 YAKT} + {733251600 36000 1 YAKST} + {748976400 32400 0 YAKT} + {764701200 36000 1 YAKST} + {780426000 32400 0 YAKT} + {796150800 36000 1 YAKST} + {811875600 32400 0 YAKT} + {828205200 36000 1 YAKST} + {846349200 32400 0 YAKT} + {859654800 36000 1 YAKST} + {877798800 32400 0 YAKT} + {891104400 36000 1 YAKST} + {909248400 32400 0 YAKT} + {922554000 36000 1 YAKST} + {941302800 32400 0 YAKT} + {954003600 36000 1 YAKST} + {972752400 32400 0 YAKT} + {985453200 36000 1 YAKST} + {1004202000 32400 0 YAKT} + {1017507600 36000 1 YAKST} + {1035651600 32400 0 YAKT} + {1048957200 36000 1 YAKST} + {1067101200 32400 0 YAKT} + {1080406800 36000 1 YAKST} + {1099155600 32400 0 YAKT} + {1111856400 36000 1 YAKST} + {1130605200 32400 0 YAKT} + {1143306000 36000 1 YAKST} + {1162054800 32400 0 YAKT} + {1174755600 36000 1 YAKST} + {1193504400 32400 0 YAKT} + {1206810000 36000 1 YAKST} + {1224954000 32400 0 YAKT} + {1238259600 36000 1 YAKST} + {1256403600 32400 0 YAKT} + {1269709200 36000 1 YAKST} + {1288458000 32400 0 YAKT} + {1301158800 36000 1 YAKST} + {1319907600 32400 0 YAKT} + {1332608400 36000 1 YAKST} + {1351357200 32400 0 YAKT} + {1364662800 36000 1 YAKST} + {1382806800 32400 0 YAKT} + {1396112400 36000 1 YAKST} + {1414256400 32400 0 YAKT} + {1427562000 36000 1 YAKST} + {1445706000 32400 0 YAKT} + {1459011600 36000 1 YAKST} + {1477760400 32400 0 YAKT} + {1490461200 36000 1 YAKST} + {1509210000 32400 0 YAKT} + {1521910800 36000 1 YAKST} + {1540659600 32400 0 YAKT} + {1553965200 36000 1 YAKST} + {1572109200 32400 0 YAKT} + {1585414800 36000 1 YAKST} + {1603558800 32400 0 YAKT} + {1616864400 36000 1 YAKST} + {1635613200 32400 0 YAKT} + {1648314000 36000 1 YAKST} + {1667062800 32400 0 YAKT} + {1679763600 36000 1 YAKST} + {1698512400 32400 0 YAKT} + {1711818000 36000 1 YAKST} + {1729962000 32400 0 YAKT} + {1743267600 36000 1 YAKST} + {1761411600 32400 0 YAKT} + {1774717200 36000 1 YAKST} + {1792861200 32400 0 YAKT} + {1806166800 36000 1 YAKST} + {1824915600 32400 0 YAKT} + {1837616400 36000 1 YAKST} + {1856365200 32400 0 YAKT} + {1869066000 36000 1 YAKST} + {1887814800 32400 0 YAKT} + {1901120400 36000 1 YAKST} + {1919264400 32400 0 YAKT} + {1932570000 36000 1 YAKST} + {1950714000 32400 0 YAKT} + {1964019600 36000 1 YAKST} + {1982768400 32400 0 YAKT} + {1995469200 36000 1 YAKST} + {2014218000 32400 0 YAKT} + {2026918800 36000 1 YAKST} + {2045667600 32400 0 YAKT} + {2058368400 36000 1 YAKST} + {2077117200 32400 0 YAKT} + {2090422800 36000 1 YAKST} + {2108566800 32400 0 YAKT} + {2121872400 36000 1 YAKST} + {2140016400 32400 0 YAKT} + {2153322000 36000 1 YAKST} + {2172070800 32400 0 YAKT} + {2184771600 36000 1 YAKST} + {2203520400 32400 0 YAKT} + {2216221200 36000 1 YAKST} + {2234970000 32400 0 YAKT} + {2248275600 36000 1 YAKST} + {2266419600 32400 0 YAKT} + {2279725200 36000 1 YAKST} + {2297869200 32400 0 YAKT} + {2311174800 36000 1 YAKST} + {2329318800 32400 0 YAKT} + {2342624400 36000 1 YAKST} + {2361373200 32400 0 YAKT} + {2374074000 36000 1 YAKST} + {2392822800 32400 0 YAKT} + {2405523600 36000 1 YAKST} + {2424272400 32400 0 YAKT} + {2437578000 36000 1 YAKST} + {2455722000 32400 0 YAKT} + {2469027600 36000 1 YAKST} + {2487171600 32400 0 YAKT} + {2500477200 36000 1 YAKST} + {2519226000 32400 0 YAKT} + {2531926800 36000 1 YAKST} + {2550675600 32400 0 YAKT} + {2563376400 36000 1 YAKST} + {2582125200 32400 0 YAKT} + {2595430800 36000 1 YAKST} + {2613574800 32400 0 YAKT} + {2626880400 36000 1 YAKST} + {2645024400 32400 0 YAKT} + {2658330000 36000 1 YAKST} + {2676474000 32400 0 YAKT} + {2689779600 36000 1 YAKST} + {2708528400 32400 0 YAKT} + {2721229200 36000 1 YAKST} + {2739978000 32400 0 YAKT} + {2752678800 36000 1 YAKST} + {2771427600 32400 0 YAKT} + {2784733200 36000 1 YAKST} + {2802877200 32400 0 YAKT} + {2816182800 36000 1 YAKST} + {2834326800 32400 0 YAKT} + {2847632400 36000 1 YAKST} + {2866381200 32400 0 YAKT} + {2879082000 36000 1 YAKST} + {2897830800 32400 0 YAKT} + {2910531600 36000 1 YAKST} + {2929280400 32400 0 YAKT} + {2941981200 36000 1 YAKST} + {2960730000 32400 0 YAKT} + {2974035600 36000 1 YAKST} + {2992179600 32400 0 YAKT} + {3005485200 36000 1 YAKST} + {3023629200 32400 0 YAKT} + {3036934800 36000 1 YAKST} + {3055683600 32400 0 YAKT} + {3068384400 36000 1 YAKST} + {3087133200 32400 0 YAKT} + {3099834000 36000 1 YAKST} + {3118582800 32400 0 YAKT} + {3131888400 36000 1 YAKST} + {3150032400 32400 0 YAKT} + {3163338000 36000 1 YAKST} + {3181482000 32400 0 YAKT} + {3194787600 36000 1 YAKST} + {3212931600 32400 0 YAKT} + {3226237200 36000 1 YAKST} + {3244986000 32400 0 YAKT} + {3257686800 36000 1 YAKST} + {3276435600 32400 0 YAKT} + {3289136400 36000 1 YAKST} + {3307885200 32400 0 YAKT} + {3321190800 36000 1 YAKST} + {3339334800 32400 0 YAKT} + {3352640400 36000 1 YAKST} + {3370784400 32400 0 YAKT} + {3384090000 36000 1 YAKST} + {3402838800 32400 0 YAKT} + {3415539600 36000 1 YAKST} + {3434288400 32400 0 YAKT} + {3446989200 36000 1 YAKST} + {3465738000 32400 0 YAKT} + {3479043600 36000 1 YAKST} + {3497187600 32400 0 YAKT} + {3510493200 36000 1 YAKST} + {3528637200 32400 0 YAKT} + {3541942800 36000 1 YAKST} + {3560086800 32400 0 YAKT} + {3573392400 36000 1 YAKST} + {3592141200 32400 0 YAKT} + {3604842000 36000 1 YAKST} + {3623590800 32400 0 YAKT} + {3636291600 36000 1 YAKST} + {3655040400 32400 0 YAKT} + {3668346000 36000 1 YAKST} + {3686490000 32400 0 YAKT} + {3699795600 36000 1 YAKST} + {3717939600 32400 0 YAKT} + {3731245200 36000 1 YAKST} + {3749994000 32400 0 YAKT} + {3762694800 36000 1 YAKST} + {3781443600 32400 0 YAKT} + {3794144400 36000 1 YAKST} + {3812893200 32400 0 YAKT} + {3825594000 36000 1 YAKST} + {3844342800 32400 0 YAKT} + {3857648400 36000 1 YAKST} + {3875792400 32400 0 YAKT} + {3889098000 36000 1 YAKST} + {3907242000 32400 0 YAKT} + {3920547600 36000 1 YAKST} + {3939296400 32400 0 YAKT} + {3951997200 36000 1 YAKST} + {3970746000 32400 0 YAKT} + {3983446800 36000 1 YAKST} + {4002195600 32400 0 YAKT} + {4015501200 36000 1 YAKST} + {4033645200 32400 0 YAKT} + {4046950800 36000 1 YAKST} + {4065094800 32400 0 YAKT} + {4078400400 36000 1 YAKST} + {4096544400 32400 0 YAKT} +} diff --git a/library/tzdata/Asia/Yekaterinburg b/library/tzdata/Asia/Yekaterinburg index 142ed0d..980f903 100644 --- a/library/tzdata/Asia/Yekaterinburg +++ b/library/tzdata/Asia/Yekaterinburg @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Yekaterinburg) { - {-9223372036854775808 14544 0 LMT} - {-1592611344 14400 0 SVET} - {-1247544000 18000 0 SVEMMTT} - {354913200 21600 1 SVEST} - {370720800 18000 0 SVET} - {386449200 21600 1 SVEST} - {402256800 18000 0 SVET} - {417985200 21600 1 SVEST} - {433792800 18000 0 SVET} - {449607600 21600 1 SVEST} - {465339600 18000 0 SVET} - {481064400 21600 1 SVEST} - {496789200 18000 0 SVET} - {512514000 21600 1 SVEST} - {528238800 18000 0 SVET} - {543963600 21600 1 SVEST} - {559688400 18000 0 SVET} - {575413200 21600 1 SVEST} - {591138000 18000 0 SVET} - {606862800 21600 1 SVEST} - {622587600 18000 0 SVET} - {638312400 21600 1 SVEST} - {654642000 18000 0 SVET} - {670366800 14400 0 SVEMMTT} - {670370400 18000 1 SVEST} - {686095200 14400 0 SVET} - {695772000 18000 0 YEKMMTT} - {701805600 21600 1 YEKST} - {717526800 18000 0 YEKT} - {733266000 21600 1 YEKST} - {748990800 18000 0 YEKT} - {764715600 21600 1 YEKST} - {780440400 18000 0 YEKT} - {796165200 21600 1 YEKST} - {811890000 18000 0 YEKT} - {828219600 21600 1 YEKST} - {846363600 18000 0 YEKT} - {859669200 21600 1 YEKST} - {877813200 18000 0 YEKT} - {891118800 21600 1 YEKST} - {909262800 18000 0 YEKT} - {922568400 21600 1 YEKST} - {941317200 18000 0 YEKT} - {954018000 21600 1 YEKST} - {972766800 18000 0 YEKT} - {985467600 21600 1 YEKST} - {1004216400 18000 0 YEKT} - {1017522000 21600 1 YEKST} - {1035666000 18000 0 YEKT} - {1048971600 21600 1 YEKST} - {1067115600 18000 0 YEKT} - {1080421200 21600 1 YEKST} - {1099170000 18000 0 YEKT} - {1111870800 21600 1 YEKST} - {1130619600 18000 0 YEKT} - {1143320400 21600 1 YEKST} - {1162069200 18000 0 YEKT} - {1174770000 21600 1 YEKST} - {1193518800 18000 0 YEKT} - {1206824400 21600 1 YEKST} - {1224968400 18000 0 YEKT} - {1238274000 21600 1 YEKST} - {1256418000 18000 0 YEKT} - {1269723600 21600 1 YEKST} - {1288472400 18000 0 YEKT} - {1301173200 21600 1 YEKST} - {1319922000 18000 0 YEKT} - {1332622800 21600 1 YEKST} - {1351371600 18000 0 YEKT} - {1364677200 21600 1 YEKST} - {1382821200 18000 0 YEKT} - {1396126800 21600 1 YEKST} - {1414270800 18000 0 YEKT} - {1427576400 21600 1 YEKST} - {1445720400 18000 0 YEKT} - {1459026000 21600 1 YEKST} - {1477774800 18000 0 YEKT} - {1490475600 21600 1 YEKST} - {1509224400 18000 0 YEKT} - {1521925200 21600 1 YEKST} - {1540674000 18000 0 YEKT} - {1553979600 21600 1 YEKST} - {1572123600 18000 0 YEKT} - {1585429200 21600 1 YEKST} - {1603573200 18000 0 YEKT} - {1616878800 21600 1 YEKST} - {1635627600 18000 0 YEKT} - {1648328400 21600 1 YEKST} - {1667077200 18000 0 YEKT} - {1679778000 21600 1 YEKST} - {1698526800 18000 0 YEKT} - {1711832400 21600 1 YEKST} - {1729976400 18000 0 YEKT} - {1743282000 21600 1 YEKST} - {1761426000 18000 0 YEKT} - {1774731600 21600 1 YEKST} - {1792875600 18000 0 YEKT} - {1806181200 21600 1 YEKST} - {1824930000 18000 0 YEKT} - {1837630800 21600 1 YEKST} - {1856379600 18000 0 YEKT} - {1869080400 21600 1 YEKST} - {1887829200 18000 0 YEKT} - {1901134800 21600 1 YEKST} - {1919278800 18000 0 YEKT} - {1932584400 21600 1 YEKST} - {1950728400 18000 0 YEKT} - {1964034000 21600 1 YEKST} - {1982782800 18000 0 YEKT} - {1995483600 21600 1 YEKST} - {2014232400 18000 0 YEKT} - {2026933200 21600 1 YEKST} - {2045682000 18000 0 YEKT} - {2058382800 21600 1 YEKST} - {2077131600 18000 0 YEKT} - {2090437200 21600 1 YEKST} - {2108581200 18000 0 YEKT} - {2121886800 21600 1 YEKST} - {2140030800 18000 0 YEKT} - {2153336400 21600 1 YEKST} - {2172085200 18000 0 YEKT} - {2184786000 21600 1 YEKST} - {2203534800 18000 0 YEKT} - {2216235600 21600 1 YEKST} - {2234984400 18000 0 YEKT} - {2248290000 21600 1 YEKST} - {2266434000 18000 0 YEKT} - {2279739600 21600 1 YEKST} - {2297883600 18000 0 YEKT} - {2311189200 21600 1 YEKST} - {2329333200 18000 0 YEKT} - {2342638800 21600 1 YEKST} - {2361387600 18000 0 YEKT} - {2374088400 21600 1 YEKST} - {2392837200 18000 0 YEKT} - {2405538000 21600 1 YEKST} - {2424286800 18000 0 YEKT} - {2437592400 21600 1 YEKST} - {2455736400 18000 0 YEKT} - {2469042000 21600 1 YEKST} - {2487186000 18000 0 YEKT} - {2500491600 21600 1 YEKST} - {2519240400 18000 0 YEKT} - {2531941200 21600 1 YEKST} - {2550690000 18000 0 YEKT} - {2563390800 21600 1 YEKST} - {2582139600 18000 0 YEKT} - {2595445200 21600 1 YEKST} - {2613589200 18000 0 YEKT} - {2626894800 21600 1 YEKST} - {2645038800 18000 0 YEKT} - {2658344400 21600 1 YEKST} - {2676488400 18000 0 YEKT} - {2689794000 21600 1 YEKST} - {2708542800 18000 0 YEKT} - {2721243600 21600 1 YEKST} - {2739992400 18000 0 YEKT} - {2752693200 21600 1 YEKST} - {2771442000 18000 0 YEKT} - {2784747600 21600 1 YEKST} - {2802891600 18000 0 YEKT} - {2816197200 21600 1 YEKST} - {2834341200 18000 0 YEKT} - {2847646800 21600 1 YEKST} - {2866395600 18000 0 YEKT} - {2879096400 21600 1 YEKST} - {2897845200 18000 0 YEKT} - {2910546000 21600 1 YEKST} - {2929294800 18000 0 YEKT} - {2941995600 21600 1 YEKST} - {2960744400 18000 0 YEKT} - {2974050000 21600 1 YEKST} - {2992194000 18000 0 YEKT} - {3005499600 21600 1 YEKST} - {3023643600 18000 0 YEKT} - {3036949200 21600 1 YEKST} - {3055698000 18000 0 YEKT} - {3068398800 21600 1 YEKST} - {3087147600 18000 0 YEKT} - {3099848400 21600 1 YEKST} - {3118597200 18000 0 YEKT} - {3131902800 21600 1 YEKST} - {3150046800 18000 0 YEKT} - {3163352400 21600 1 YEKST} - {3181496400 18000 0 YEKT} - {3194802000 21600 1 YEKST} - {3212946000 18000 0 YEKT} - {3226251600 21600 1 YEKST} - {3245000400 18000 0 YEKT} - {3257701200 21600 1 YEKST} - {3276450000 18000 0 YEKT} - {3289150800 21600 1 YEKST} - {3307899600 18000 0 YEKT} - {3321205200 21600 1 YEKST} - {3339349200 18000 0 YEKT} - {3352654800 21600 1 YEKST} - {3370798800 18000 0 YEKT} - {3384104400 21600 1 YEKST} - {3402853200 18000 0 YEKT} - {3415554000 21600 1 YEKST} - {3434302800 18000 0 YEKT} - {3447003600 21600 1 YEKST} - {3465752400 18000 0 YEKT} - {3479058000 21600 1 YEKST} - {3497202000 18000 0 YEKT} - {3510507600 21600 1 YEKST} - {3528651600 18000 0 YEKT} - {3541957200 21600 1 YEKST} - {3560101200 18000 0 YEKT} - {3573406800 21600 1 YEKST} - {3592155600 18000 0 YEKT} - {3604856400 21600 1 YEKST} - {3623605200 18000 0 YEKT} - {3636306000 21600 1 YEKST} - {3655054800 18000 0 YEKT} - {3668360400 21600 1 YEKST} - {3686504400 18000 0 YEKT} - {3699810000 21600 1 YEKST} - {3717954000 18000 0 YEKT} - {3731259600 21600 1 YEKST} - {3750008400 18000 0 YEKT} - {3762709200 21600 1 YEKST} - {3781458000 18000 0 YEKT} - {3794158800 21600 1 YEKST} - {3812907600 18000 0 YEKT} - {3825608400 21600 1 YEKST} - {3844357200 18000 0 YEKT} - {3857662800 21600 1 YEKST} - {3875806800 18000 0 YEKT} - {3889112400 21600 1 YEKST} - {3907256400 18000 0 YEKT} - {3920562000 21600 1 YEKST} - {3939310800 18000 0 YEKT} - {3952011600 21600 1 YEKST} - {3970760400 18000 0 YEKT} - {3983461200 21600 1 YEKST} - {4002210000 18000 0 YEKT} - {4015515600 21600 1 YEKST} - {4033659600 18000 0 YEKT} - {4046965200 21600 1 YEKST} - {4065109200 18000 0 YEKT} - {4078414800 21600 1 YEKST} - {4096558800 18000 0 YEKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Yekaterinburg) { + {-9223372036854775808 14544 0 LMT} + {-1592611344 14400 0 SVET} + {-1247544000 18000 0 SVEMMTT} + {354913200 21600 1 SVEST} + {370720800 18000 0 SVET} + {386449200 21600 1 SVEST} + {402256800 18000 0 SVET} + {417985200 21600 1 SVEST} + {433792800 18000 0 SVET} + {449607600 21600 1 SVEST} + {465339600 18000 0 SVET} + {481064400 21600 1 SVEST} + {496789200 18000 0 SVET} + {512514000 21600 1 SVEST} + {528238800 18000 0 SVET} + {543963600 21600 1 SVEST} + {559688400 18000 0 SVET} + {575413200 21600 1 SVEST} + {591138000 18000 0 SVET} + {606862800 21600 1 SVEST} + {622587600 18000 0 SVET} + {638312400 21600 1 SVEST} + {654642000 18000 0 SVET} + {670366800 14400 0 SVEMMTT} + {670370400 18000 1 SVEST} + {686095200 14400 0 SVET} + {695772000 18000 0 YEKMMTT} + {701805600 21600 1 YEKST} + {717526800 18000 0 YEKT} + {733266000 21600 1 YEKST} + {748990800 18000 0 YEKT} + {764715600 21600 1 YEKST} + {780440400 18000 0 YEKT} + {796165200 21600 1 YEKST} + {811890000 18000 0 YEKT} + {828219600 21600 1 YEKST} + {846363600 18000 0 YEKT} + {859669200 21600 1 YEKST} + {877813200 18000 0 YEKT} + {891118800 21600 1 YEKST} + {909262800 18000 0 YEKT} + {922568400 21600 1 YEKST} + {941317200 18000 0 YEKT} + {954018000 21600 1 YEKST} + {972766800 18000 0 YEKT} + {985467600 21600 1 YEKST} + {1004216400 18000 0 YEKT} + {1017522000 21600 1 YEKST} + {1035666000 18000 0 YEKT} + {1048971600 21600 1 YEKST} + {1067115600 18000 0 YEKT} + {1080421200 21600 1 YEKST} + {1099170000 18000 0 YEKT} + {1111870800 21600 1 YEKST} + {1130619600 18000 0 YEKT} + {1143320400 21600 1 YEKST} + {1162069200 18000 0 YEKT} + {1174770000 21600 1 YEKST} + {1193518800 18000 0 YEKT} + {1206824400 21600 1 YEKST} + {1224968400 18000 0 YEKT} + {1238274000 21600 1 YEKST} + {1256418000 18000 0 YEKT} + {1269723600 21600 1 YEKST} + {1288472400 18000 0 YEKT} + {1301173200 21600 1 YEKST} + {1319922000 18000 0 YEKT} + {1332622800 21600 1 YEKST} + {1351371600 18000 0 YEKT} + {1364677200 21600 1 YEKST} + {1382821200 18000 0 YEKT} + {1396126800 21600 1 YEKST} + {1414270800 18000 0 YEKT} + {1427576400 21600 1 YEKST} + {1445720400 18000 0 YEKT} + {1459026000 21600 1 YEKST} + {1477774800 18000 0 YEKT} + {1490475600 21600 1 YEKST} + {1509224400 18000 0 YEKT} + {1521925200 21600 1 YEKST} + {1540674000 18000 0 YEKT} + {1553979600 21600 1 YEKST} + {1572123600 18000 0 YEKT} + {1585429200 21600 1 YEKST} + {1603573200 18000 0 YEKT} + {1616878800 21600 1 YEKST} + {1635627600 18000 0 YEKT} + {1648328400 21600 1 YEKST} + {1667077200 18000 0 YEKT} + {1679778000 21600 1 YEKST} + {1698526800 18000 0 YEKT} + {1711832400 21600 1 YEKST} + {1729976400 18000 0 YEKT} + {1743282000 21600 1 YEKST} + {1761426000 18000 0 YEKT} + {1774731600 21600 1 YEKST} + {1792875600 18000 0 YEKT} + {1806181200 21600 1 YEKST} + {1824930000 18000 0 YEKT} + {1837630800 21600 1 YEKST} + {1856379600 18000 0 YEKT} + {1869080400 21600 1 YEKST} + {1887829200 18000 0 YEKT} + {1901134800 21600 1 YEKST} + {1919278800 18000 0 YEKT} + {1932584400 21600 1 YEKST} + {1950728400 18000 0 YEKT} + {1964034000 21600 1 YEKST} + {1982782800 18000 0 YEKT} + {1995483600 21600 1 YEKST} + {2014232400 18000 0 YEKT} + {2026933200 21600 1 YEKST} + {2045682000 18000 0 YEKT} + {2058382800 21600 1 YEKST} + {2077131600 18000 0 YEKT} + {2090437200 21600 1 YEKST} + {2108581200 18000 0 YEKT} + {2121886800 21600 1 YEKST} + {2140030800 18000 0 YEKT} + {2153336400 21600 1 YEKST} + {2172085200 18000 0 YEKT} + {2184786000 21600 1 YEKST} + {2203534800 18000 0 YEKT} + {2216235600 21600 1 YEKST} + {2234984400 18000 0 YEKT} + {2248290000 21600 1 YEKST} + {2266434000 18000 0 YEKT} + {2279739600 21600 1 YEKST} + {2297883600 18000 0 YEKT} + {2311189200 21600 1 YEKST} + {2329333200 18000 0 YEKT} + {2342638800 21600 1 YEKST} + {2361387600 18000 0 YEKT} + {2374088400 21600 1 YEKST} + {2392837200 18000 0 YEKT} + {2405538000 21600 1 YEKST} + {2424286800 18000 0 YEKT} + {2437592400 21600 1 YEKST} + {2455736400 18000 0 YEKT} + {2469042000 21600 1 YEKST} + {2487186000 18000 0 YEKT} + {2500491600 21600 1 YEKST} + {2519240400 18000 0 YEKT} + {2531941200 21600 1 YEKST} + {2550690000 18000 0 YEKT} + {2563390800 21600 1 YEKST} + {2582139600 18000 0 YEKT} + {2595445200 21600 1 YEKST} + {2613589200 18000 0 YEKT} + {2626894800 21600 1 YEKST} + {2645038800 18000 0 YEKT} + {2658344400 21600 1 YEKST} + {2676488400 18000 0 YEKT} + {2689794000 21600 1 YEKST} + {2708542800 18000 0 YEKT} + {2721243600 21600 1 YEKST} + {2739992400 18000 0 YEKT} + {2752693200 21600 1 YEKST} + {2771442000 18000 0 YEKT} + {2784747600 21600 1 YEKST} + {2802891600 18000 0 YEKT} + {2816197200 21600 1 YEKST} + {2834341200 18000 0 YEKT} + {2847646800 21600 1 YEKST} + {2866395600 18000 0 YEKT} + {2879096400 21600 1 YEKST} + {2897845200 18000 0 YEKT} + {2910546000 21600 1 YEKST} + {2929294800 18000 0 YEKT} + {2941995600 21600 1 YEKST} + {2960744400 18000 0 YEKT} + {2974050000 21600 1 YEKST} + {2992194000 18000 0 YEKT} + {3005499600 21600 1 YEKST} + {3023643600 18000 0 YEKT} + {3036949200 21600 1 YEKST} + {3055698000 18000 0 YEKT} + {3068398800 21600 1 YEKST} + {3087147600 18000 0 YEKT} + {3099848400 21600 1 YEKST} + {3118597200 18000 0 YEKT} + {3131902800 21600 1 YEKST} + {3150046800 18000 0 YEKT} + {3163352400 21600 1 YEKST} + {3181496400 18000 0 YEKT} + {3194802000 21600 1 YEKST} + {3212946000 18000 0 YEKT} + {3226251600 21600 1 YEKST} + {3245000400 18000 0 YEKT} + {3257701200 21600 1 YEKST} + {3276450000 18000 0 YEKT} + {3289150800 21600 1 YEKST} + {3307899600 18000 0 YEKT} + {3321205200 21600 1 YEKST} + {3339349200 18000 0 YEKT} + {3352654800 21600 1 YEKST} + {3370798800 18000 0 YEKT} + {3384104400 21600 1 YEKST} + {3402853200 18000 0 YEKT} + {3415554000 21600 1 YEKST} + {3434302800 18000 0 YEKT} + {3447003600 21600 1 YEKST} + {3465752400 18000 0 YEKT} + {3479058000 21600 1 YEKST} + {3497202000 18000 0 YEKT} + {3510507600 21600 1 YEKST} + {3528651600 18000 0 YEKT} + {3541957200 21600 1 YEKST} + {3560101200 18000 0 YEKT} + {3573406800 21600 1 YEKST} + {3592155600 18000 0 YEKT} + {3604856400 21600 1 YEKST} + {3623605200 18000 0 YEKT} + {3636306000 21600 1 YEKST} + {3655054800 18000 0 YEKT} + {3668360400 21600 1 YEKST} + {3686504400 18000 0 YEKT} + {3699810000 21600 1 YEKST} + {3717954000 18000 0 YEKT} + {3731259600 21600 1 YEKST} + {3750008400 18000 0 YEKT} + {3762709200 21600 1 YEKST} + {3781458000 18000 0 YEKT} + {3794158800 21600 1 YEKST} + {3812907600 18000 0 YEKT} + {3825608400 21600 1 YEKST} + {3844357200 18000 0 YEKT} + {3857662800 21600 1 YEKST} + {3875806800 18000 0 YEKT} + {3889112400 21600 1 YEKST} + {3907256400 18000 0 YEKT} + {3920562000 21600 1 YEKST} + {3939310800 18000 0 YEKT} + {3952011600 21600 1 YEKST} + {3970760400 18000 0 YEKT} + {3983461200 21600 1 YEKST} + {4002210000 18000 0 YEKT} + {4015515600 21600 1 YEKST} + {4033659600 18000 0 YEKT} + {4046965200 21600 1 YEKST} + {4065109200 18000 0 YEKT} + {4078414800 21600 1 YEKST} + {4096558800 18000 0 YEKT} +} diff --git a/library/tzdata/Asia/Yerevan b/library/tzdata/Asia/Yerevan index 708f712..cd70b4f 100644 --- a/library/tzdata/Asia/Yerevan +++ b/library/tzdata/Asia/Yerevan @@ -1,245 +1,245 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Yerevan) { - {-9223372036854775808 10680 0 LMT} - {-1441162680 10800 0 YERT} - {-405140400 14400 0 YERT} - {354916800 18000 1 YERST} - {370724400 14400 0 YERT} - {386452800 18000 1 YERST} - {402260400 14400 0 YERT} - {417988800 18000 1 YERST} - {433796400 14400 0 YERT} - {449611200 18000 1 YERST} - {465343200 14400 0 YERT} - {481068000 18000 1 YERST} - {496792800 14400 0 YERT} - {512517600 18000 1 YERST} - {528242400 14400 0 YERT} - {543967200 18000 1 YERST} - {559692000 14400 0 YERT} - {575416800 18000 1 YERST} - {591141600 14400 0 YERT} - {606866400 18000 1 YERST} - {622591200 14400 0 YERT} - {638316000 18000 1 YERST} - {654645600 14400 0 YERT} - {670370400 14400 1 YERST} - {685569600 14400 0 AMST} - {686098800 10800 0 AMT} - {701812800 14400 1 AMST} - {717534000 10800 0 AMT} - {733273200 14400 1 AMST} - {748998000 10800 0 AMT} - {764722800 14400 1 AMST} - {780447600 10800 0 AMT} - {796172400 14400 1 AMST} - {811897200 14400 0 AMT} - {852062400 14400 0 AMT} - {859672800 18000 1 AMST} - {877816800 14400 0 AMT} - {891122400 18000 1 AMST} - {909266400 14400 0 AMT} - {922572000 18000 1 AMST} - {941320800 14400 0 AMT} - {954021600 18000 1 AMST} - {972770400 14400 0 AMT} - {985471200 18000 1 AMST} - {1004220000 14400 0 AMT} - {1017525600 18000 1 AMST} - {1035669600 14400 0 AMT} - {1048975200 18000 1 AMST} - {1067119200 14400 0 AMT} - {1080424800 18000 1 AMST} - {1099173600 14400 0 AMT} - {1111874400 18000 1 AMST} - {1130623200 14400 0 AMT} - {1143324000 18000 1 AMST} - {1162072800 14400 0 AMT} - {1174773600 18000 1 AMST} - {1193522400 14400 0 AMT} - {1206828000 18000 1 AMST} - {1224972000 14400 0 AMT} - {1238277600 18000 1 AMST} - {1256421600 14400 0 AMT} - {1269727200 18000 1 AMST} - {1288476000 14400 0 AMT} - {1301176800 18000 1 AMST} - {1319925600 14400 0 AMT} - {1332626400 18000 1 AMST} - {1351375200 14400 0 AMT} - {1364680800 18000 1 AMST} - {1382824800 14400 0 AMT} - {1396130400 18000 1 AMST} - {1414274400 14400 0 AMT} - {1427580000 18000 1 AMST} - {1445724000 14400 0 AMT} - {1459029600 18000 1 AMST} - {1477778400 14400 0 AMT} - {1490479200 18000 1 AMST} - {1509228000 14400 0 AMT} - {1521928800 18000 1 AMST} - {1540677600 14400 0 AMT} - {1553983200 18000 1 AMST} - {1572127200 14400 0 AMT} - {1585432800 18000 1 AMST} - {1603576800 14400 0 AMT} - {1616882400 18000 1 AMST} - {1635631200 14400 0 AMT} - {1648332000 18000 1 AMST} - {1667080800 14400 0 AMT} - {1679781600 18000 1 AMST} - {1698530400 14400 0 AMT} - {1711836000 18000 1 AMST} - {1729980000 14400 0 AMT} - {1743285600 18000 1 AMST} - {1761429600 14400 0 AMT} - {1774735200 18000 1 AMST} - {1792879200 14400 0 AMT} - {1806184800 18000 1 AMST} - {1824933600 14400 0 AMT} - {1837634400 18000 1 AMST} - {1856383200 14400 0 AMT} - {1869084000 18000 1 AMST} - {1887832800 14400 0 AMT} - {1901138400 18000 1 AMST} - {1919282400 14400 0 AMT} - {1932588000 18000 1 AMST} - {1950732000 14400 0 AMT} - {1964037600 18000 1 AMST} - {1982786400 14400 0 AMT} - {1995487200 18000 1 AMST} - {2014236000 14400 0 AMT} - {2026936800 18000 1 AMST} - {2045685600 14400 0 AMT} - {2058386400 18000 1 AMST} - {2077135200 14400 0 AMT} - {2090440800 18000 1 AMST} - {2108584800 14400 0 AMT} - {2121890400 18000 1 AMST} - {2140034400 14400 0 AMT} - {2153340000 18000 1 AMST} - {2172088800 14400 0 AMT} - {2184789600 18000 1 AMST} - {2203538400 14400 0 AMT} - {2216239200 18000 1 AMST} - {2234988000 14400 0 AMT} - {2248293600 18000 1 AMST} - {2266437600 14400 0 AMT} - {2279743200 18000 1 AMST} - {2297887200 14400 0 AMT} - {2311192800 18000 1 AMST} - {2329336800 14400 0 AMT} - {2342642400 18000 1 AMST} - {2361391200 14400 0 AMT} - {2374092000 18000 1 AMST} - {2392840800 14400 0 AMT} - {2405541600 18000 1 AMST} - {2424290400 14400 0 AMT} - {2437596000 18000 1 AMST} - {2455740000 14400 0 AMT} - {2469045600 18000 1 AMST} - {2487189600 14400 0 AMT} - {2500495200 18000 1 AMST} - {2519244000 14400 0 AMT} - {2531944800 18000 1 AMST} - {2550693600 14400 0 AMT} - {2563394400 18000 1 AMST} - {2582143200 14400 0 AMT} - {2595448800 18000 1 AMST} - {2613592800 14400 0 AMT} - {2626898400 18000 1 AMST} - {2645042400 14400 0 AMT} - {2658348000 18000 1 AMST} - {2676492000 14400 0 AMT} - {2689797600 18000 1 AMST} - {2708546400 14400 0 AMT} - {2721247200 18000 1 AMST} - {2739996000 14400 0 AMT} - {2752696800 18000 1 AMST} - {2771445600 14400 0 AMT} - {2784751200 18000 1 AMST} - {2802895200 14400 0 AMT} - {2816200800 18000 1 AMST} - {2834344800 14400 0 AMT} - {2847650400 18000 1 AMST} - {2866399200 14400 0 AMT} - {2879100000 18000 1 AMST} - {2897848800 14400 0 AMT} - {2910549600 18000 1 AMST} - {2929298400 14400 0 AMT} - {2941999200 18000 1 AMST} - {2960748000 14400 0 AMT} - {2974053600 18000 1 AMST} - {2992197600 14400 0 AMT} - {3005503200 18000 1 AMST} - {3023647200 14400 0 AMT} - {3036952800 18000 1 AMST} - {3055701600 14400 0 AMT} - {3068402400 18000 1 AMST} - {3087151200 14400 0 AMT} - {3099852000 18000 1 AMST} - {3118600800 14400 0 AMT} - {3131906400 18000 1 AMST} - {3150050400 14400 0 AMT} - {3163356000 18000 1 AMST} - {3181500000 14400 0 AMT} - {3194805600 18000 1 AMST} - {3212949600 14400 0 AMT} - {3226255200 18000 1 AMST} - {3245004000 14400 0 AMT} - {3257704800 18000 1 AMST} - {3276453600 14400 0 AMT} - {3289154400 18000 1 AMST} - {3307903200 14400 0 AMT} - {3321208800 18000 1 AMST} - {3339352800 14400 0 AMT} - {3352658400 18000 1 AMST} - {3370802400 14400 0 AMT} - {3384108000 18000 1 AMST} - {3402856800 14400 0 AMT} - {3415557600 18000 1 AMST} - {3434306400 14400 0 AMT} - {3447007200 18000 1 AMST} - {3465756000 14400 0 AMT} - {3479061600 18000 1 AMST} - {3497205600 14400 0 AMT} - {3510511200 18000 1 AMST} - {3528655200 14400 0 AMT} - {3541960800 18000 1 AMST} - {3560104800 14400 0 AMT} - {3573410400 18000 1 AMST} - {3592159200 14400 0 AMT} - {3604860000 18000 1 AMST} - {3623608800 14400 0 AMT} - {3636309600 18000 1 AMST} - {3655058400 14400 0 AMT} - {3668364000 18000 1 AMST} - {3686508000 14400 0 AMT} - {3699813600 18000 1 AMST} - {3717957600 14400 0 AMT} - {3731263200 18000 1 AMST} - {3750012000 14400 0 AMT} - {3762712800 18000 1 AMST} - {3781461600 14400 0 AMT} - {3794162400 18000 1 AMST} - {3812911200 14400 0 AMT} - {3825612000 18000 1 AMST} - {3844360800 14400 0 AMT} - {3857666400 18000 1 AMST} - {3875810400 14400 0 AMT} - {3889116000 18000 1 AMST} - {3907260000 14400 0 AMT} - {3920565600 18000 1 AMST} - {3939314400 14400 0 AMT} - {3952015200 18000 1 AMST} - {3970764000 14400 0 AMT} - {3983464800 18000 1 AMST} - {4002213600 14400 0 AMT} - {4015519200 18000 1 AMST} - {4033663200 14400 0 AMT} - {4046968800 18000 1 AMST} - {4065112800 14400 0 AMT} - {4078418400 18000 1 AMST} - {4096562400 14400 0 AMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Yerevan) { + {-9223372036854775808 10680 0 LMT} + {-1441162680 10800 0 YERT} + {-405140400 14400 0 YERT} + {354916800 18000 1 YERST} + {370724400 14400 0 YERT} + {386452800 18000 1 YERST} + {402260400 14400 0 YERT} + {417988800 18000 1 YERST} + {433796400 14400 0 YERT} + {449611200 18000 1 YERST} + {465343200 14400 0 YERT} + {481068000 18000 1 YERST} + {496792800 14400 0 YERT} + {512517600 18000 1 YERST} + {528242400 14400 0 YERT} + {543967200 18000 1 YERST} + {559692000 14400 0 YERT} + {575416800 18000 1 YERST} + {591141600 14400 0 YERT} + {606866400 18000 1 YERST} + {622591200 14400 0 YERT} + {638316000 18000 1 YERST} + {654645600 14400 0 YERT} + {670370400 14400 1 YERST} + {685569600 14400 0 AMST} + {686098800 10800 0 AMT} + {701812800 14400 1 AMST} + {717534000 10800 0 AMT} + {733273200 14400 1 AMST} + {748998000 10800 0 AMT} + {764722800 14400 1 AMST} + {780447600 10800 0 AMT} + {796172400 14400 1 AMST} + {811897200 14400 0 AMT} + {852062400 14400 0 AMT} + {859672800 18000 1 AMST} + {877816800 14400 0 AMT} + {891122400 18000 1 AMST} + {909266400 14400 0 AMT} + {922572000 18000 1 AMST} + {941320800 14400 0 AMT} + {954021600 18000 1 AMST} + {972770400 14400 0 AMT} + {985471200 18000 1 AMST} + {1004220000 14400 0 AMT} + {1017525600 18000 1 AMST} + {1035669600 14400 0 AMT} + {1048975200 18000 1 AMST} + {1067119200 14400 0 AMT} + {1080424800 18000 1 AMST} + {1099173600 14400 0 AMT} + {1111874400 18000 1 AMST} + {1130623200 14400 0 AMT} + {1143324000 18000 1 AMST} + {1162072800 14400 0 AMT} + {1174773600 18000 1 AMST} + {1193522400 14400 0 AMT} + {1206828000 18000 1 AMST} + {1224972000 14400 0 AMT} + {1238277600 18000 1 AMST} + {1256421600 14400 0 AMT} + {1269727200 18000 1 AMST} + {1288476000 14400 0 AMT} + {1301176800 18000 1 AMST} + {1319925600 14400 0 AMT} + {1332626400 18000 1 AMST} + {1351375200 14400 0 AMT} + {1364680800 18000 1 AMST} + {1382824800 14400 0 AMT} + {1396130400 18000 1 AMST} + {1414274400 14400 0 AMT} + {1427580000 18000 1 AMST} + {1445724000 14400 0 AMT} + {1459029600 18000 1 AMST} + {1477778400 14400 0 AMT} + {1490479200 18000 1 AMST} + {1509228000 14400 0 AMT} + {1521928800 18000 1 AMST} + {1540677600 14400 0 AMT} + {1553983200 18000 1 AMST} + {1572127200 14400 0 AMT} + {1585432800 18000 1 AMST} + {1603576800 14400 0 AMT} + {1616882400 18000 1 AMST} + {1635631200 14400 0 AMT} + {1648332000 18000 1 AMST} + {1667080800 14400 0 AMT} + {1679781600 18000 1 AMST} + {1698530400 14400 0 AMT} + {1711836000 18000 1 AMST} + {1729980000 14400 0 AMT} + {1743285600 18000 1 AMST} + {1761429600 14400 0 AMT} + {1774735200 18000 1 AMST} + {1792879200 14400 0 AMT} + {1806184800 18000 1 AMST} + {1824933600 14400 0 AMT} + {1837634400 18000 1 AMST} + {1856383200 14400 0 AMT} + {1869084000 18000 1 AMST} + {1887832800 14400 0 AMT} + {1901138400 18000 1 AMST} + {1919282400 14400 0 AMT} + {1932588000 18000 1 AMST} + {1950732000 14400 0 AMT} + {1964037600 18000 1 AMST} + {1982786400 14400 0 AMT} + {1995487200 18000 1 AMST} + {2014236000 14400 0 AMT} + {2026936800 18000 1 AMST} + {2045685600 14400 0 AMT} + {2058386400 18000 1 AMST} + {2077135200 14400 0 AMT} + {2090440800 18000 1 AMST} + {2108584800 14400 0 AMT} + {2121890400 18000 1 AMST} + {2140034400 14400 0 AMT} + {2153340000 18000 1 AMST} + {2172088800 14400 0 AMT} + {2184789600 18000 1 AMST} + {2203538400 14400 0 AMT} + {2216239200 18000 1 AMST} + {2234988000 14400 0 AMT} + {2248293600 18000 1 AMST} + {2266437600 14400 0 AMT} + {2279743200 18000 1 AMST} + {2297887200 14400 0 AMT} + {2311192800 18000 1 AMST} + {2329336800 14400 0 AMT} + {2342642400 18000 1 AMST} + {2361391200 14400 0 AMT} + {2374092000 18000 1 AMST} + {2392840800 14400 0 AMT} + {2405541600 18000 1 AMST} + {2424290400 14400 0 AMT} + {2437596000 18000 1 AMST} + {2455740000 14400 0 AMT} + {2469045600 18000 1 AMST} + {2487189600 14400 0 AMT} + {2500495200 18000 1 AMST} + {2519244000 14400 0 AMT} + {2531944800 18000 1 AMST} + {2550693600 14400 0 AMT} + {2563394400 18000 1 AMST} + {2582143200 14400 0 AMT} + {2595448800 18000 1 AMST} + {2613592800 14400 0 AMT} + {2626898400 18000 1 AMST} + {2645042400 14400 0 AMT} + {2658348000 18000 1 AMST} + {2676492000 14400 0 AMT} + {2689797600 18000 1 AMST} + {2708546400 14400 0 AMT} + {2721247200 18000 1 AMST} + {2739996000 14400 0 AMT} + {2752696800 18000 1 AMST} + {2771445600 14400 0 AMT} + {2784751200 18000 1 AMST} + {2802895200 14400 0 AMT} + {2816200800 18000 1 AMST} + {2834344800 14400 0 AMT} + {2847650400 18000 1 AMST} + {2866399200 14400 0 AMT} + {2879100000 18000 1 AMST} + {2897848800 14400 0 AMT} + {2910549600 18000 1 AMST} + {2929298400 14400 0 AMT} + {2941999200 18000 1 AMST} + {2960748000 14400 0 AMT} + {2974053600 18000 1 AMST} + {2992197600 14400 0 AMT} + {3005503200 18000 1 AMST} + {3023647200 14400 0 AMT} + {3036952800 18000 1 AMST} + {3055701600 14400 0 AMT} + {3068402400 18000 1 AMST} + {3087151200 14400 0 AMT} + {3099852000 18000 1 AMST} + {3118600800 14400 0 AMT} + {3131906400 18000 1 AMST} + {3150050400 14400 0 AMT} + {3163356000 18000 1 AMST} + {3181500000 14400 0 AMT} + {3194805600 18000 1 AMST} + {3212949600 14400 0 AMT} + {3226255200 18000 1 AMST} + {3245004000 14400 0 AMT} + {3257704800 18000 1 AMST} + {3276453600 14400 0 AMT} + {3289154400 18000 1 AMST} + {3307903200 14400 0 AMT} + {3321208800 18000 1 AMST} + {3339352800 14400 0 AMT} + {3352658400 18000 1 AMST} + {3370802400 14400 0 AMT} + {3384108000 18000 1 AMST} + {3402856800 14400 0 AMT} + {3415557600 18000 1 AMST} + {3434306400 14400 0 AMT} + {3447007200 18000 1 AMST} + {3465756000 14400 0 AMT} + {3479061600 18000 1 AMST} + {3497205600 14400 0 AMT} + {3510511200 18000 1 AMST} + {3528655200 14400 0 AMT} + {3541960800 18000 1 AMST} + {3560104800 14400 0 AMT} + {3573410400 18000 1 AMST} + {3592159200 14400 0 AMT} + {3604860000 18000 1 AMST} + {3623608800 14400 0 AMT} + {3636309600 18000 1 AMST} + {3655058400 14400 0 AMT} + {3668364000 18000 1 AMST} + {3686508000 14400 0 AMT} + {3699813600 18000 1 AMST} + {3717957600 14400 0 AMT} + {3731263200 18000 1 AMST} + {3750012000 14400 0 AMT} + {3762712800 18000 1 AMST} + {3781461600 14400 0 AMT} + {3794162400 18000 1 AMST} + {3812911200 14400 0 AMT} + {3825612000 18000 1 AMST} + {3844360800 14400 0 AMT} + {3857666400 18000 1 AMST} + {3875810400 14400 0 AMT} + {3889116000 18000 1 AMST} + {3907260000 14400 0 AMT} + {3920565600 18000 1 AMST} + {3939314400 14400 0 AMT} + {3952015200 18000 1 AMST} + {3970764000 14400 0 AMT} + {3983464800 18000 1 AMST} + {4002213600 14400 0 AMT} + {4015519200 18000 1 AMST} + {4033663200 14400 0 AMT} + {4046968800 18000 1 AMST} + {4065112800 14400 0 AMT} + {4078418400 18000 1 AMST} + {4096562400 14400 0 AMT} +} diff --git a/library/tzdata/Atlantic/Azores b/library/tzdata/Atlantic/Azores index d9f832c..c476191 100644 --- a/library/tzdata/Atlantic/Azores +++ b/library/tzdata/Atlantic/Azores @@ -1,349 +1,349 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Azores) { - {-9223372036854775808 -6160 0 LMT} - {-2713904240 -6872 0 HMT} - {-1849557928 -7200 0 AZOT} - {-1689548400 -3600 1 AZOST} - {-1677794400 -7200 0 AZOT} - {-1667430000 -3600 1 AZOST} - {-1647730800 -7200 0 AZOT} - {-1635807600 -3600 1 AZOST} - {-1616194800 -7200 0 AZOT} - {-1604358000 -3600 1 AZOST} - {-1584658800 -7200 0 AZOT} - {-1572735600 -3600 1 AZOST} - {-1553036400 -7200 0 AZOT} - {-1541199600 -3600 1 AZOST} - {-1521500400 -7200 0 AZOT} - {-1442444400 -3600 1 AZOST} - {-1426806000 -7200 0 AZOT} - {-1379286000 -3600 1 AZOST} - {-1364770800 -7200 0 AZOT} - {-1348441200 -3600 1 AZOST} - {-1333321200 -7200 0 AZOT} - {-1316386800 -3600 1 AZOST} - {-1301266800 -7200 0 AZOT} - {-1284332400 -3600 1 AZOST} - {-1269817200 -7200 0 AZOT} - {-1221433200 -3600 1 AZOST} - {-1206918000 -7200 0 AZOT} - {-1191193200 -3600 1 AZOST} - {-1175468400 -7200 0 AZOT} - {-1127689200 -3600 1 AZOST} - {-1111964400 -7200 0 AZOT} - {-1096844400 -3600 1 AZOST} - {-1080514800 -7200 0 AZOT} - {-1063580400 -3600 1 AZOST} - {-1049065200 -7200 0 AZOT} - {-1033340400 -3600 1 AZOST} - {-1017615600 -7200 0 AZOT} - {-1002495600 -3600 1 AZOST} - {-986166000 -7200 0 AZOT} - {-969231600 -3600 1 AZOST} - {-950482800 -7200 0 AZOT} - {-942015600 -3600 1 AZOST} - {-922662000 -7200 0 AZOT} - {-906937200 -3600 1 AZOST} - {-891126000 -7200 0 AZOT} - {-877302000 -3600 1 AZOST} - {-873676800 0 1 AZOMT} - {-864000000 -3600 1 AZOST} - {-857948400 -7200 0 AZOT} - {-845852400 -3600 1 AZOST} - {-842832000 0 1 AZOMT} - {-831340800 -3600 1 AZOST} - {-825894000 -7200 0 AZOT} - {-814402800 -3600 1 AZOST} - {-810777600 0 1 AZOMT} - {-799891200 -3600 1 AZOST} - {-794444400 -7200 0 AZOT} - {-782953200 -3600 1 AZOST} - {-779328000 0 1 AZOMT} - {-768441600 -3600 1 AZOST} - {-762994800 -7200 0 AZOT} - {-749084400 -3600 1 AZOST} - {-733359600 -7200 0 AZOT} - {-717624000 -3600 1 AZOST} - {-701899200 -7200 0 AZOT} - {-686174400 -3600 1 AZOST} - {-670449600 -7200 0 AZOT} - {-654724800 -3600 1 AZOST} - {-639000000 -7200 0 AZOT} - {-591825600 -3600 1 AZOST} - {-575496000 -7200 0 AZOT} - {-559771200 -3600 1 AZOST} - {-544046400 -7200 0 AZOT} - {-528321600 -3600 1 AZOST} - {-512596800 -7200 0 AZOT} - {-496872000 -3600 1 AZOST} - {-481147200 -7200 0 AZOT} - {-465422400 -3600 1 AZOST} - {-449697600 -7200 0 AZOT} - {-433972800 -3600 1 AZOST} - {-417643200 -7200 0 AZOT} - {-401918400 -3600 1 AZOST} - {-386193600 -7200 0 AZOT} - {-370468800 -3600 1 AZOST} - {-354744000 -7200 0 AZOT} - {-339019200 -3600 1 AZOST} - {-323294400 -7200 0 AZOT} - {-307569600 -3600 1 AZOST} - {-291844800 -7200 0 AZOT} - {-276120000 -3600 1 AZOST} - {-260395200 -7200 0 AZOT} - {-244670400 -3600 1 AZOST} - {-228340800 -7200 0 AZOT} - {-212616000 -3600 1 AZOST} - {-196891200 -7200 0 AZOT} - {-181166400 -3600 1 AZOST} - {-165441600 -7200 0 AZOT} - {-149716800 -3600 1 AZOST} - {-133992000 -7200 0 AZOT} - {-118267200 -3600 0 AZOT} - {228272400 0 1 AZOST} - {243997200 -3600 0 AZOT} - {260326800 0 1 AZOST} - {276051600 -3600 0 AZOT} - {291776400 0 1 AZOST} - {307504800 -3600 0 AZOT} - {323226000 0 1 AZOST} - {338954400 -3600 0 AZOT} - {354679200 0 1 AZOST} - {370404000 -3600 0 AZOT} - {386128800 0 1 AZOST} - {401853600 -3600 0 AZOT} - {417582000 0 1 AZOST} - {433303200 -3600 0 AZOT} - {449028000 0 1 AZOST} - {465357600 -3600 0 AZOT} - {481082400 0 1 AZOST} - {496807200 -3600 0 AZOT} - {512532000 0 1 AZOST} - {528256800 -3600 0 AZOT} - {543981600 0 1 AZOST} - {559706400 -3600 0 AZOT} - {575431200 0 1 AZOST} - {591156000 -3600 0 AZOT} - {606880800 0 1 AZOST} - {622605600 -3600 0 AZOT} - {638330400 0 1 AZOST} - {654660000 -3600 0 AZOT} - {670384800 0 1 AZOST} - {686109600 -3600 0 AZOT} - {701834400 0 1 AZOST} - {733280400 0 0 AZOST} - {749005200 -3600 0 AZOT} - {764730000 0 1 AZOST} - {780454800 -3600 0 AZOT} - {796179600 0 1 AZOST} - {811904400 -3600 0 AZOT} - {828234000 0 1 AZOST} - {846378000 -3600 0 AZOT} - {859683600 0 1 AZOST} - {877827600 -3600 0 AZOT} - {891133200 0 1 AZOST} - {909277200 -3600 0 AZOT} - {922582800 0 1 AZOST} - {941331600 -3600 0 AZOT} - {954032400 0 1 AZOST} - {972781200 -3600 0 AZOT} - {985482000 0 1 AZOST} - {1004230800 -3600 0 AZOT} - {1017536400 0 1 AZOST} - {1035680400 -3600 0 AZOT} - {1048986000 0 1 AZOST} - {1067130000 -3600 0 AZOT} - {1080435600 0 1 AZOST} - {1099184400 -3600 0 AZOT} - {1111885200 0 1 AZOST} - {1130634000 -3600 0 AZOT} - {1143334800 0 1 AZOST} - {1162083600 -3600 0 AZOT} - {1174784400 0 1 AZOST} - {1193533200 -3600 0 AZOT} - {1206838800 0 1 AZOST} - {1224982800 -3600 0 AZOT} - {1238288400 0 1 AZOST} - {1256432400 -3600 0 AZOT} - {1269738000 0 1 AZOST} - {1288486800 -3600 0 AZOT} - {1301187600 0 1 AZOST} - {1319936400 -3600 0 AZOT} - {1332637200 0 1 AZOST} - {1351386000 -3600 0 AZOT} - {1364691600 0 1 AZOST} - {1382835600 -3600 0 AZOT} - {1396141200 0 1 AZOST} - {1414285200 -3600 0 AZOT} - {1427590800 0 1 AZOST} - {1445734800 -3600 0 AZOT} - {1459040400 0 1 AZOST} - {1477789200 -3600 0 AZOT} - {1490490000 0 1 AZOST} - {1509238800 -3600 0 AZOT} - {1521939600 0 1 AZOST} - {1540688400 -3600 0 AZOT} - {1553994000 0 1 AZOST} - {1572138000 -3600 0 AZOT} - {1585443600 0 1 AZOST} - {1603587600 -3600 0 AZOT} - {1616893200 0 1 AZOST} - {1635642000 -3600 0 AZOT} - {1648342800 0 1 AZOST} - {1667091600 -3600 0 AZOT} - {1679792400 0 1 AZOST} - {1698541200 -3600 0 AZOT} - {1711846800 0 1 AZOST} - {1729990800 -3600 0 AZOT} - {1743296400 0 1 AZOST} - {1761440400 -3600 0 AZOT} - {1774746000 0 1 AZOST} - {1792890000 -3600 0 AZOT} - {1806195600 0 1 AZOST} - {1824944400 -3600 0 AZOT} - {1837645200 0 1 AZOST} - {1856394000 -3600 0 AZOT} - {1869094800 0 1 AZOST} - {1887843600 -3600 0 AZOT} - {1901149200 0 1 AZOST} - {1919293200 -3600 0 AZOT} - {1932598800 0 1 AZOST} - {1950742800 -3600 0 AZOT} - {1964048400 0 1 AZOST} - {1982797200 -3600 0 AZOT} - {1995498000 0 1 AZOST} - {2014246800 -3600 0 AZOT} - {2026947600 0 1 AZOST} - {2045696400 -3600 0 AZOT} - {2058397200 0 1 AZOST} - {2077146000 -3600 0 AZOT} - {2090451600 0 1 AZOST} - {2108595600 -3600 0 AZOT} - {2121901200 0 1 AZOST} - {2140045200 -3600 0 AZOT} - {2153350800 0 1 AZOST} - {2172099600 -3600 0 AZOT} - {2184800400 0 1 AZOST} - {2203549200 -3600 0 AZOT} - {2216250000 0 1 AZOST} - {2234998800 -3600 0 AZOT} - {2248304400 0 1 AZOST} - {2266448400 -3600 0 AZOT} - {2279754000 0 1 AZOST} - {2297898000 -3600 0 AZOT} - {2311203600 0 1 AZOST} - {2329347600 -3600 0 AZOT} - {2342653200 0 1 AZOST} - {2361402000 -3600 0 AZOT} - {2374102800 0 1 AZOST} - {2392851600 -3600 0 AZOT} - {2405552400 0 1 AZOST} - {2424301200 -3600 0 AZOT} - {2437606800 0 1 AZOST} - {2455750800 -3600 0 AZOT} - {2469056400 0 1 AZOST} - {2487200400 -3600 0 AZOT} - {2500506000 0 1 AZOST} - {2519254800 -3600 0 AZOT} - {2531955600 0 1 AZOST} - {2550704400 -3600 0 AZOT} - {2563405200 0 1 AZOST} - {2582154000 -3600 0 AZOT} - {2595459600 0 1 AZOST} - {2613603600 -3600 0 AZOT} - {2626909200 0 1 AZOST} - {2645053200 -3600 0 AZOT} - {2658358800 0 1 AZOST} - {2676502800 -3600 0 AZOT} - {2689808400 0 1 AZOST} - {2708557200 -3600 0 AZOT} - {2721258000 0 1 AZOST} - {2740006800 -3600 0 AZOT} - {2752707600 0 1 AZOST} - {2771456400 -3600 0 AZOT} - {2784762000 0 1 AZOST} - {2802906000 -3600 0 AZOT} - {2816211600 0 1 AZOST} - {2834355600 -3600 0 AZOT} - {2847661200 0 1 AZOST} - {2866410000 -3600 0 AZOT} - {2879110800 0 1 AZOST} - {2897859600 -3600 0 AZOT} - {2910560400 0 1 AZOST} - {2929309200 -3600 0 AZOT} - {2942010000 0 1 AZOST} - {2960758800 -3600 0 AZOT} - {2974064400 0 1 AZOST} - {2992208400 -3600 0 AZOT} - {3005514000 0 1 AZOST} - {3023658000 -3600 0 AZOT} - {3036963600 0 1 AZOST} - {3055712400 -3600 0 AZOT} - {3068413200 0 1 AZOST} - {3087162000 -3600 0 AZOT} - {3099862800 0 1 AZOST} - {3118611600 -3600 0 AZOT} - {3131917200 0 1 AZOST} - {3150061200 -3600 0 AZOT} - {3163366800 0 1 AZOST} - {3181510800 -3600 0 AZOT} - {3194816400 0 1 AZOST} - {3212960400 -3600 0 AZOT} - {3226266000 0 1 AZOST} - {3245014800 -3600 0 AZOT} - {3257715600 0 1 AZOST} - {3276464400 -3600 0 AZOT} - {3289165200 0 1 AZOST} - {3307914000 -3600 0 AZOT} - {3321219600 0 1 AZOST} - {3339363600 -3600 0 AZOT} - {3352669200 0 1 AZOST} - {3370813200 -3600 0 AZOT} - {3384118800 0 1 AZOST} - {3402867600 -3600 0 AZOT} - {3415568400 0 1 AZOST} - {3434317200 -3600 0 AZOT} - {3447018000 0 1 AZOST} - {3465766800 -3600 0 AZOT} - {3479072400 0 1 AZOST} - {3497216400 -3600 0 AZOT} - {3510522000 0 1 AZOST} - {3528666000 -3600 0 AZOT} - {3541971600 0 1 AZOST} - {3560115600 -3600 0 AZOT} - {3573421200 0 1 AZOST} - {3592170000 -3600 0 AZOT} - {3604870800 0 1 AZOST} - {3623619600 -3600 0 AZOT} - {3636320400 0 1 AZOST} - {3655069200 -3600 0 AZOT} - {3668374800 0 1 AZOST} - {3686518800 -3600 0 AZOT} - {3699824400 0 1 AZOST} - {3717968400 -3600 0 AZOT} - {3731274000 0 1 AZOST} - {3750022800 -3600 0 AZOT} - {3762723600 0 1 AZOST} - {3781472400 -3600 0 AZOT} - {3794173200 0 1 AZOST} - {3812922000 -3600 0 AZOT} - {3825622800 0 1 AZOST} - {3844371600 -3600 0 AZOT} - {3857677200 0 1 AZOST} - {3875821200 -3600 0 AZOT} - {3889126800 0 1 AZOST} - {3907270800 -3600 0 AZOT} - {3920576400 0 1 AZOST} - {3939325200 -3600 0 AZOT} - {3952026000 0 1 AZOST} - {3970774800 -3600 0 AZOT} - {3983475600 0 1 AZOST} - {4002224400 -3600 0 AZOT} - {4015530000 0 1 AZOST} - {4033674000 -3600 0 AZOT} - {4046979600 0 1 AZOST} - {4065123600 -3600 0 AZOT} - {4078429200 0 1 AZOST} - {4096573200 -3600 0 AZOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Azores) { + {-9223372036854775808 -6160 0 LMT} + {-2713904240 -6872 0 HMT} + {-1849557928 -7200 0 AZOT} + {-1689548400 -3600 1 AZOST} + {-1677794400 -7200 0 AZOT} + {-1667430000 -3600 1 AZOST} + {-1647730800 -7200 0 AZOT} + {-1635807600 -3600 1 AZOST} + {-1616194800 -7200 0 AZOT} + {-1604358000 -3600 1 AZOST} + {-1584658800 -7200 0 AZOT} + {-1572735600 -3600 1 AZOST} + {-1553036400 -7200 0 AZOT} + {-1541199600 -3600 1 AZOST} + {-1521500400 -7200 0 AZOT} + {-1442444400 -3600 1 AZOST} + {-1426806000 -7200 0 AZOT} + {-1379286000 -3600 1 AZOST} + {-1364770800 -7200 0 AZOT} + {-1348441200 -3600 1 AZOST} + {-1333321200 -7200 0 AZOT} + {-1316386800 -3600 1 AZOST} + {-1301266800 -7200 0 AZOT} + {-1284332400 -3600 1 AZOST} + {-1269817200 -7200 0 AZOT} + {-1221433200 -3600 1 AZOST} + {-1206918000 -7200 0 AZOT} + {-1191193200 -3600 1 AZOST} + {-1175468400 -7200 0 AZOT} + {-1127689200 -3600 1 AZOST} + {-1111964400 -7200 0 AZOT} + {-1096844400 -3600 1 AZOST} + {-1080514800 -7200 0 AZOT} + {-1063580400 -3600 1 AZOST} + {-1049065200 -7200 0 AZOT} + {-1033340400 -3600 1 AZOST} + {-1017615600 -7200 0 AZOT} + {-1002495600 -3600 1 AZOST} + {-986166000 -7200 0 AZOT} + {-969231600 -3600 1 AZOST} + {-950482800 -7200 0 AZOT} + {-942015600 -3600 1 AZOST} + {-922662000 -7200 0 AZOT} + {-906937200 -3600 1 AZOST} + {-891126000 -7200 0 AZOT} + {-877302000 -3600 1 AZOST} + {-873676800 0 1 AZOMT} + {-864000000 -3600 1 AZOST} + {-857948400 -7200 0 AZOT} + {-845852400 -3600 1 AZOST} + {-842832000 0 1 AZOMT} + {-831340800 -3600 1 AZOST} + {-825894000 -7200 0 AZOT} + {-814402800 -3600 1 AZOST} + {-810777600 0 1 AZOMT} + {-799891200 -3600 1 AZOST} + {-794444400 -7200 0 AZOT} + {-782953200 -3600 1 AZOST} + {-779328000 0 1 AZOMT} + {-768441600 -3600 1 AZOST} + {-762994800 -7200 0 AZOT} + {-749084400 -3600 1 AZOST} + {-733359600 -7200 0 AZOT} + {-717624000 -3600 1 AZOST} + {-701899200 -7200 0 AZOT} + {-686174400 -3600 1 AZOST} + {-670449600 -7200 0 AZOT} + {-654724800 -3600 1 AZOST} + {-639000000 -7200 0 AZOT} + {-591825600 -3600 1 AZOST} + {-575496000 -7200 0 AZOT} + {-559771200 -3600 1 AZOST} + {-544046400 -7200 0 AZOT} + {-528321600 -3600 1 AZOST} + {-512596800 -7200 0 AZOT} + {-496872000 -3600 1 AZOST} + {-481147200 -7200 0 AZOT} + {-465422400 -3600 1 AZOST} + {-449697600 -7200 0 AZOT} + {-433972800 -3600 1 AZOST} + {-417643200 -7200 0 AZOT} + {-401918400 -3600 1 AZOST} + {-386193600 -7200 0 AZOT} + {-370468800 -3600 1 AZOST} + {-354744000 -7200 0 AZOT} + {-339019200 -3600 1 AZOST} + {-323294400 -7200 0 AZOT} + {-307569600 -3600 1 AZOST} + {-291844800 -7200 0 AZOT} + {-276120000 -3600 1 AZOST} + {-260395200 -7200 0 AZOT} + {-244670400 -3600 1 AZOST} + {-228340800 -7200 0 AZOT} + {-212616000 -3600 1 AZOST} + {-196891200 -7200 0 AZOT} + {-181166400 -3600 1 AZOST} + {-165441600 -7200 0 AZOT} + {-149716800 -3600 1 AZOST} + {-133992000 -7200 0 AZOT} + {-118267200 -3600 0 AZOT} + {228272400 0 1 AZOST} + {243997200 -3600 0 AZOT} + {260326800 0 1 AZOST} + {276051600 -3600 0 AZOT} + {291776400 0 1 AZOST} + {307504800 -3600 0 AZOT} + {323226000 0 1 AZOST} + {338954400 -3600 0 AZOT} + {354679200 0 1 AZOST} + {370404000 -3600 0 AZOT} + {386128800 0 1 AZOST} + {401853600 -3600 0 AZOT} + {417582000 0 1 AZOST} + {433303200 -3600 0 AZOT} + {449028000 0 1 AZOST} + {465357600 -3600 0 AZOT} + {481082400 0 1 AZOST} + {496807200 -3600 0 AZOT} + {512532000 0 1 AZOST} + {528256800 -3600 0 AZOT} + {543981600 0 1 AZOST} + {559706400 -3600 0 AZOT} + {575431200 0 1 AZOST} + {591156000 -3600 0 AZOT} + {606880800 0 1 AZOST} + {622605600 -3600 0 AZOT} + {638330400 0 1 AZOST} + {654660000 -3600 0 AZOT} + {670384800 0 1 AZOST} + {686109600 -3600 0 AZOT} + {701834400 0 1 AZOST} + {733280400 0 0 AZOST} + {749005200 -3600 0 AZOT} + {764730000 0 1 AZOST} + {780454800 -3600 0 AZOT} + {796179600 0 1 AZOST} + {811904400 -3600 0 AZOT} + {828234000 0 1 AZOST} + {846378000 -3600 0 AZOT} + {859683600 0 1 AZOST} + {877827600 -3600 0 AZOT} + {891133200 0 1 AZOST} + {909277200 -3600 0 AZOT} + {922582800 0 1 AZOST} + {941331600 -3600 0 AZOT} + {954032400 0 1 AZOST} + {972781200 -3600 0 AZOT} + {985482000 0 1 AZOST} + {1004230800 -3600 0 AZOT} + {1017536400 0 1 AZOST} + {1035680400 -3600 0 AZOT} + {1048986000 0 1 AZOST} + {1067130000 -3600 0 AZOT} + {1080435600 0 1 AZOST} + {1099184400 -3600 0 AZOT} + {1111885200 0 1 AZOST} + {1130634000 -3600 0 AZOT} + {1143334800 0 1 AZOST} + {1162083600 -3600 0 AZOT} + {1174784400 0 1 AZOST} + {1193533200 -3600 0 AZOT} + {1206838800 0 1 AZOST} + {1224982800 -3600 0 AZOT} + {1238288400 0 1 AZOST} + {1256432400 -3600 0 AZOT} + {1269738000 0 1 AZOST} + {1288486800 -3600 0 AZOT} + {1301187600 0 1 AZOST} + {1319936400 -3600 0 AZOT} + {1332637200 0 1 AZOST} + {1351386000 -3600 0 AZOT} + {1364691600 0 1 AZOST} + {1382835600 -3600 0 AZOT} + {1396141200 0 1 AZOST} + {1414285200 -3600 0 AZOT} + {1427590800 0 1 AZOST} + {1445734800 -3600 0 AZOT} + {1459040400 0 1 AZOST} + {1477789200 -3600 0 AZOT} + {1490490000 0 1 AZOST} + {1509238800 -3600 0 AZOT} + {1521939600 0 1 AZOST} + {1540688400 -3600 0 AZOT} + {1553994000 0 1 AZOST} + {1572138000 -3600 0 AZOT} + {1585443600 0 1 AZOST} + {1603587600 -3600 0 AZOT} + {1616893200 0 1 AZOST} + {1635642000 -3600 0 AZOT} + {1648342800 0 1 AZOST} + {1667091600 -3600 0 AZOT} + {1679792400 0 1 AZOST} + {1698541200 -3600 0 AZOT} + {1711846800 0 1 AZOST} + {1729990800 -3600 0 AZOT} + {1743296400 0 1 AZOST} + {1761440400 -3600 0 AZOT} + {1774746000 0 1 AZOST} + {1792890000 -3600 0 AZOT} + {1806195600 0 1 AZOST} + {1824944400 -3600 0 AZOT} + {1837645200 0 1 AZOST} + {1856394000 -3600 0 AZOT} + {1869094800 0 1 AZOST} + {1887843600 -3600 0 AZOT} + {1901149200 0 1 AZOST} + {1919293200 -3600 0 AZOT} + {1932598800 0 1 AZOST} + {1950742800 -3600 0 AZOT} + {1964048400 0 1 AZOST} + {1982797200 -3600 0 AZOT} + {1995498000 0 1 AZOST} + {2014246800 -3600 0 AZOT} + {2026947600 0 1 AZOST} + {2045696400 -3600 0 AZOT} + {2058397200 0 1 AZOST} + {2077146000 -3600 0 AZOT} + {2090451600 0 1 AZOST} + {2108595600 -3600 0 AZOT} + {2121901200 0 1 AZOST} + {2140045200 -3600 0 AZOT} + {2153350800 0 1 AZOST} + {2172099600 -3600 0 AZOT} + {2184800400 0 1 AZOST} + {2203549200 -3600 0 AZOT} + {2216250000 0 1 AZOST} + {2234998800 -3600 0 AZOT} + {2248304400 0 1 AZOST} + {2266448400 -3600 0 AZOT} + {2279754000 0 1 AZOST} + {2297898000 -3600 0 AZOT} + {2311203600 0 1 AZOST} + {2329347600 -3600 0 AZOT} + {2342653200 0 1 AZOST} + {2361402000 -3600 0 AZOT} + {2374102800 0 1 AZOST} + {2392851600 -3600 0 AZOT} + {2405552400 0 1 AZOST} + {2424301200 -3600 0 AZOT} + {2437606800 0 1 AZOST} + {2455750800 -3600 0 AZOT} + {2469056400 0 1 AZOST} + {2487200400 -3600 0 AZOT} + {2500506000 0 1 AZOST} + {2519254800 -3600 0 AZOT} + {2531955600 0 1 AZOST} + {2550704400 -3600 0 AZOT} + {2563405200 0 1 AZOST} + {2582154000 -3600 0 AZOT} + {2595459600 0 1 AZOST} + {2613603600 -3600 0 AZOT} + {2626909200 0 1 AZOST} + {2645053200 -3600 0 AZOT} + {2658358800 0 1 AZOST} + {2676502800 -3600 0 AZOT} + {2689808400 0 1 AZOST} + {2708557200 -3600 0 AZOT} + {2721258000 0 1 AZOST} + {2740006800 -3600 0 AZOT} + {2752707600 0 1 AZOST} + {2771456400 -3600 0 AZOT} + {2784762000 0 1 AZOST} + {2802906000 -3600 0 AZOT} + {2816211600 0 1 AZOST} + {2834355600 -3600 0 AZOT} + {2847661200 0 1 AZOST} + {2866410000 -3600 0 AZOT} + {2879110800 0 1 AZOST} + {2897859600 -3600 0 AZOT} + {2910560400 0 1 AZOST} + {2929309200 -3600 0 AZOT} + {2942010000 0 1 AZOST} + {2960758800 -3600 0 AZOT} + {2974064400 0 1 AZOST} + {2992208400 -3600 0 AZOT} + {3005514000 0 1 AZOST} + {3023658000 -3600 0 AZOT} + {3036963600 0 1 AZOST} + {3055712400 -3600 0 AZOT} + {3068413200 0 1 AZOST} + {3087162000 -3600 0 AZOT} + {3099862800 0 1 AZOST} + {3118611600 -3600 0 AZOT} + {3131917200 0 1 AZOST} + {3150061200 -3600 0 AZOT} + {3163366800 0 1 AZOST} + {3181510800 -3600 0 AZOT} + {3194816400 0 1 AZOST} + {3212960400 -3600 0 AZOT} + {3226266000 0 1 AZOST} + {3245014800 -3600 0 AZOT} + {3257715600 0 1 AZOST} + {3276464400 -3600 0 AZOT} + {3289165200 0 1 AZOST} + {3307914000 -3600 0 AZOT} + {3321219600 0 1 AZOST} + {3339363600 -3600 0 AZOT} + {3352669200 0 1 AZOST} + {3370813200 -3600 0 AZOT} + {3384118800 0 1 AZOST} + {3402867600 -3600 0 AZOT} + {3415568400 0 1 AZOST} + {3434317200 -3600 0 AZOT} + {3447018000 0 1 AZOST} + {3465766800 -3600 0 AZOT} + {3479072400 0 1 AZOST} + {3497216400 -3600 0 AZOT} + {3510522000 0 1 AZOST} + {3528666000 -3600 0 AZOT} + {3541971600 0 1 AZOST} + {3560115600 -3600 0 AZOT} + {3573421200 0 1 AZOST} + {3592170000 -3600 0 AZOT} + {3604870800 0 1 AZOST} + {3623619600 -3600 0 AZOT} + {3636320400 0 1 AZOST} + {3655069200 -3600 0 AZOT} + {3668374800 0 1 AZOST} + {3686518800 -3600 0 AZOT} + {3699824400 0 1 AZOST} + {3717968400 -3600 0 AZOT} + {3731274000 0 1 AZOST} + {3750022800 -3600 0 AZOT} + {3762723600 0 1 AZOST} + {3781472400 -3600 0 AZOT} + {3794173200 0 1 AZOST} + {3812922000 -3600 0 AZOT} + {3825622800 0 1 AZOST} + {3844371600 -3600 0 AZOT} + {3857677200 0 1 AZOST} + {3875821200 -3600 0 AZOT} + {3889126800 0 1 AZOST} + {3907270800 -3600 0 AZOT} + {3920576400 0 1 AZOST} + {3939325200 -3600 0 AZOT} + {3952026000 0 1 AZOST} + {3970774800 -3600 0 AZOT} + {3983475600 0 1 AZOST} + {4002224400 -3600 0 AZOT} + {4015530000 0 1 AZOST} + {4033674000 -3600 0 AZOT} + {4046979600 0 1 AZOST} + {4065123600 -3600 0 AZOT} + {4078429200 0 1 AZOST} + {4096573200 -3600 0 AZOT} +} diff --git a/library/tzdata/Atlantic/Bermuda b/library/tzdata/Atlantic/Bermuda index b3f6378..e8b165a 100644 --- a/library/tzdata/Atlantic/Bermuda +++ b/library/tzdata/Atlantic/Bermuda @@ -1,259 +1,259 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Bermuda) { - {-9223372036854775808 -15544 0 LMT} - {-1262281256 -14400 0 AST} - {136360800 -10800 0 ADT} - {152082000 -14400 0 AST} - {167810400 -10800 1 ADT} - {183531600 -14400 0 AST} - {189316800 -14400 0 AST} - {199260000 -10800 1 ADT} - {215586000 -14400 0 AST} - {230709600 -10800 1 ADT} - {247035600 -14400 0 AST} - {262764000 -10800 1 ADT} - {278485200 -14400 0 AST} - {294213600 -10800 1 ADT} - {309934800 -14400 0 AST} - {325663200 -10800 1 ADT} - {341384400 -14400 0 AST} - {357112800 -10800 1 ADT} - {372834000 -14400 0 AST} - {388562400 -10800 1 ADT} - {404888400 -14400 0 AST} - {420012000 -10800 1 ADT} - {436338000 -14400 0 AST} - {452066400 -10800 1 ADT} - {467787600 -14400 0 AST} - {483516000 -10800 1 ADT} - {499237200 -14400 0 AST} - {514965600 -10800 1 ADT} - {530686800 -14400 0 AST} - {544600800 -10800 1 ADT} - {562136400 -14400 0 AST} - {576050400 -10800 1 ADT} - {594190800 -14400 0 AST} - {607500000 -10800 1 ADT} - {625640400 -14400 0 AST} - {638949600 -10800 1 ADT} - {657090000 -14400 0 AST} - {671004000 -10800 1 ADT} - {688539600 -14400 0 AST} - {702453600 -10800 1 ADT} - {719989200 -14400 0 AST} - {733903200 -10800 1 ADT} - {752043600 -14400 0 AST} - {765352800 -10800 1 ADT} - {783493200 -14400 0 AST} - {796802400 -10800 1 ADT} - {814942800 -14400 0 AST} - {828856800 -10800 1 ADT} - {846392400 -14400 0 AST} - {860306400 -10800 1 ADT} - {877842000 -14400 0 AST} - {891756000 -10800 1 ADT} - {909291600 -14400 0 AST} - {923205600 -10800 1 ADT} - {941346000 -14400 0 AST} - {954655200 -10800 1 ADT} - {972795600 -14400 0 AST} - {986104800 -10800 1 ADT} - {1004245200 -14400 0 AST} - {1018159200 -10800 1 ADT} - {1035694800 -14400 0 AST} - {1049608800 -10800 1 ADT} - {1067144400 -14400 0 AST} - {1081058400 -10800 1 ADT} - {1099198800 -14400 0 AST} - {1112508000 -10800 1 ADT} - {1130648400 -14400 0 AST} - {1143957600 -10800 1 ADT} - {1162098000 -14400 0 AST} - {1173592800 -10800 1 ADT} - {1194152400 -14400 0 AST} - {1205042400 -10800 1 ADT} - {1225602000 -14400 0 AST} - {1236492000 -10800 1 ADT} - {1257051600 -14400 0 AST} - {1268546400 -10800 1 ADT} - {1289106000 -14400 0 AST} - {1299996000 -10800 1 ADT} - {1320555600 -14400 0 AST} - {1331445600 -10800 1 ADT} - {1352005200 -14400 0 AST} - {1362895200 -10800 1 ADT} - {1383454800 -14400 0 AST} - {1394344800 -10800 1 ADT} - {1414904400 -14400 0 AST} - {1425794400 -10800 1 ADT} - {1446354000 -14400 0 AST} - {1457848800 -10800 1 ADT} - {1478408400 -14400 0 AST} - {1489298400 -10800 1 ADT} - {1509858000 -14400 0 AST} - {1520748000 -10800 1 ADT} - {1541307600 -14400 0 AST} - {1552197600 -10800 1 ADT} - {1572757200 -14400 0 AST} - {1583647200 -10800 1 ADT} - {1604206800 -14400 0 AST} - {1615701600 -10800 1 ADT} - {1636261200 -14400 0 AST} - {1647151200 -10800 1 ADT} - {1667710800 -14400 0 AST} - {1678600800 -10800 1 ADT} - {1699160400 -14400 0 AST} - {1710050400 -10800 1 ADT} - {1730610000 -14400 0 AST} - {1741500000 -10800 1 ADT} - {1762059600 -14400 0 AST} - {1772949600 -10800 1 ADT} - {1793509200 -14400 0 AST} - {1805004000 -10800 1 ADT} - {1825563600 -14400 0 AST} - {1836453600 -10800 1 ADT} - {1857013200 -14400 0 AST} - {1867903200 -10800 1 ADT} - {1888462800 -14400 0 AST} - {1899352800 -10800 1 ADT} - {1919912400 -14400 0 AST} - {1930802400 -10800 1 ADT} - {1951362000 -14400 0 AST} - {1962856800 -10800 1 ADT} - {1983416400 -14400 0 AST} - {1994306400 -10800 1 ADT} - {2014866000 -14400 0 AST} - {2025756000 -10800 1 ADT} - {2046315600 -14400 0 AST} - {2057205600 -10800 1 ADT} - {2077765200 -14400 0 AST} - {2088655200 -10800 1 ADT} - {2109214800 -14400 0 AST} - {2120104800 -10800 1 ADT} - {2140664400 -14400 0 AST} - {2152159200 -10800 1 ADT} - {2172718800 -14400 0 AST} - {2183608800 -10800 1 ADT} - {2204168400 -14400 0 AST} - {2215058400 -10800 1 ADT} - {2235618000 -14400 0 AST} - {2246508000 -10800 1 ADT} - {2267067600 -14400 0 AST} - {2277957600 -10800 1 ADT} - {2298517200 -14400 0 AST} - {2309407200 -10800 1 ADT} - {2329966800 -14400 0 AST} - {2341461600 -10800 1 ADT} - {2362021200 -14400 0 AST} - {2372911200 -10800 1 ADT} - {2393470800 -14400 0 AST} - {2404360800 -10800 1 ADT} - {2424920400 -14400 0 AST} - {2435810400 -10800 1 ADT} - {2456370000 -14400 0 AST} - {2467260000 -10800 1 ADT} - {2487819600 -14400 0 AST} - {2499314400 -10800 1 ADT} - {2519874000 -14400 0 AST} - {2530764000 -10800 1 ADT} - {2551323600 -14400 0 AST} - {2562213600 -10800 1 ADT} - {2582773200 -14400 0 AST} - {2593663200 -10800 1 ADT} - {2614222800 -14400 0 AST} - {2625112800 -10800 1 ADT} - {2645672400 -14400 0 AST} - {2656562400 -10800 1 ADT} - {2677122000 -14400 0 AST} - {2688616800 -10800 1 ADT} - {2709176400 -14400 0 AST} - {2720066400 -10800 1 ADT} - {2740626000 -14400 0 AST} - {2751516000 -10800 1 ADT} - {2772075600 -14400 0 AST} - {2782965600 -10800 1 ADT} - {2803525200 -14400 0 AST} - {2814415200 -10800 1 ADT} - {2834974800 -14400 0 AST} - {2846469600 -10800 1 ADT} - {2867029200 -14400 0 AST} - {2877919200 -10800 1 ADT} - {2898478800 -14400 0 AST} - {2909368800 -10800 1 ADT} - {2929928400 -14400 0 AST} - {2940818400 -10800 1 ADT} - {2961378000 -14400 0 AST} - {2972268000 -10800 1 ADT} - {2992827600 -14400 0 AST} - {3003717600 -10800 1 ADT} - {3024277200 -14400 0 AST} - {3035772000 -10800 1 ADT} - {3056331600 -14400 0 AST} - {3067221600 -10800 1 ADT} - {3087781200 -14400 0 AST} - {3098671200 -10800 1 ADT} - {3119230800 -14400 0 AST} - {3130120800 -10800 1 ADT} - {3150680400 -14400 0 AST} - {3161570400 -10800 1 ADT} - {3182130000 -14400 0 AST} - {3193020000 -10800 1 ADT} - {3213579600 -14400 0 AST} - {3225074400 -10800 1 ADT} - {3245634000 -14400 0 AST} - {3256524000 -10800 1 ADT} - {3277083600 -14400 0 AST} - {3287973600 -10800 1 ADT} - {3308533200 -14400 0 AST} - {3319423200 -10800 1 ADT} - {3339982800 -14400 0 AST} - {3350872800 -10800 1 ADT} - {3371432400 -14400 0 AST} - {3382927200 -10800 1 ADT} - {3403486800 -14400 0 AST} - {3414376800 -10800 1 ADT} - {3434936400 -14400 0 AST} - {3445826400 -10800 1 ADT} - {3466386000 -14400 0 AST} - {3477276000 -10800 1 ADT} - {3497835600 -14400 0 AST} - {3508725600 -10800 1 ADT} - {3529285200 -14400 0 AST} - {3540175200 -10800 1 ADT} - {3560734800 -14400 0 AST} - {3572229600 -10800 1 ADT} - {3592789200 -14400 0 AST} - {3603679200 -10800 1 ADT} - {3624238800 -14400 0 AST} - {3635128800 -10800 1 ADT} - {3655688400 -14400 0 AST} - {3666578400 -10800 1 ADT} - {3687138000 -14400 0 AST} - {3698028000 -10800 1 ADT} - {3718587600 -14400 0 AST} - {3730082400 -10800 1 ADT} - {3750642000 -14400 0 AST} - {3761532000 -10800 1 ADT} - {3782091600 -14400 0 AST} - {3792981600 -10800 1 ADT} - {3813541200 -14400 0 AST} - {3824431200 -10800 1 ADT} - {3844990800 -14400 0 AST} - {3855880800 -10800 1 ADT} - {3876440400 -14400 0 AST} - {3887330400 -10800 1 ADT} - {3907890000 -14400 0 AST} - {3919384800 -10800 1 ADT} - {3939944400 -14400 0 AST} - {3950834400 -10800 1 ADT} - {3971394000 -14400 0 AST} - {3982284000 -10800 1 ADT} - {4002843600 -14400 0 AST} - {4013733600 -10800 1 ADT} - {4034293200 -14400 0 AST} - {4045183200 -10800 1 ADT} - {4065742800 -14400 0 AST} - {4076632800 -10800 1 ADT} - {4097192400 -14400 0 AST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Bermuda) { + {-9223372036854775808 -15544 0 LMT} + {-1262281256 -14400 0 AST} + {136360800 -10800 0 ADT} + {152082000 -14400 0 AST} + {167810400 -10800 1 ADT} + {183531600 -14400 0 AST} + {189316800 -14400 0 AST} + {199260000 -10800 1 ADT} + {215586000 -14400 0 AST} + {230709600 -10800 1 ADT} + {247035600 -14400 0 AST} + {262764000 -10800 1 ADT} + {278485200 -14400 0 AST} + {294213600 -10800 1 ADT} + {309934800 -14400 0 AST} + {325663200 -10800 1 ADT} + {341384400 -14400 0 AST} + {357112800 -10800 1 ADT} + {372834000 -14400 0 AST} + {388562400 -10800 1 ADT} + {404888400 -14400 0 AST} + {420012000 -10800 1 ADT} + {436338000 -14400 0 AST} + {452066400 -10800 1 ADT} + {467787600 -14400 0 AST} + {483516000 -10800 1 ADT} + {499237200 -14400 0 AST} + {514965600 -10800 1 ADT} + {530686800 -14400 0 AST} + {544600800 -10800 1 ADT} + {562136400 -14400 0 AST} + {576050400 -10800 1 ADT} + {594190800 -14400 0 AST} + {607500000 -10800 1 ADT} + {625640400 -14400 0 AST} + {638949600 -10800 1 ADT} + {657090000 -14400 0 AST} + {671004000 -10800 1 ADT} + {688539600 -14400 0 AST} + {702453600 -10800 1 ADT} + {719989200 -14400 0 AST} + {733903200 -10800 1 ADT} + {752043600 -14400 0 AST} + {765352800 -10800 1 ADT} + {783493200 -14400 0 AST} + {796802400 -10800 1 ADT} + {814942800 -14400 0 AST} + {828856800 -10800 1 ADT} + {846392400 -14400 0 AST} + {860306400 -10800 1 ADT} + {877842000 -14400 0 AST} + {891756000 -10800 1 ADT} + {909291600 -14400 0 AST} + {923205600 -10800 1 ADT} + {941346000 -14400 0 AST} + {954655200 -10800 1 ADT} + {972795600 -14400 0 AST} + {986104800 -10800 1 ADT} + {1004245200 -14400 0 AST} + {1018159200 -10800 1 ADT} + {1035694800 -14400 0 AST} + {1049608800 -10800 1 ADT} + {1067144400 -14400 0 AST} + {1081058400 -10800 1 ADT} + {1099198800 -14400 0 AST} + {1112508000 -10800 1 ADT} + {1130648400 -14400 0 AST} + {1143957600 -10800 1 ADT} + {1162098000 -14400 0 AST} + {1173592800 -10800 1 ADT} + {1194152400 -14400 0 AST} + {1205042400 -10800 1 ADT} + {1225602000 -14400 0 AST} + {1236492000 -10800 1 ADT} + {1257051600 -14400 0 AST} + {1268546400 -10800 1 ADT} + {1289106000 -14400 0 AST} + {1299996000 -10800 1 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} +} diff --git a/library/tzdata/Atlantic/Canary b/library/tzdata/Atlantic/Canary index 155c0c7..4b802c7 100644 --- a/library/tzdata/Atlantic/Canary +++ b/library/tzdata/Atlantic/Canary @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Canary) { - {-9223372036854775808 -3696 0 LMT} - {-1509663504 -3600 0 CANT} - {-733874400 0 0 WET} - {323827200 3600 1 WEST} - {338947200 3600 0 WEST} - {338950800 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417574800 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 0 0 WET} - {733280400 3600 1 WEST} - {749005200 0 0 WET} - {764730000 3600 1 WEST} - {780454800 0 0 WET} - {796179600 3600 1 WEST} - {811904400 0 0 WET} - {828234000 3600 1 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Canary) { + {-9223372036854775808 -3696 0 LMT} + {-1509663504 -3600 0 CANT} + {-733874400 0 0 WET} + {323827200 3600 1 WEST} + {338947200 3600 0 WEST} + {338950800 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417574800 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 0 0 WET} + {733280400 3600 1 WEST} + {749005200 0 0 WET} + {764730000 3600 1 WEST} + {780454800 0 0 WET} + {796179600 3600 1 WEST} + {811904400 0 0 WET} + {828234000 3600 1 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Atlantic/Cape_Verde b/library/tzdata/Atlantic/Cape_Verde index 6fbb644..f0bb79f 100644 --- a/library/tzdata/Atlantic/Cape_Verde +++ b/library/tzdata/Atlantic/Cape_Verde @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Cape_Verde) { - {-9223372036854775808 -5644 0 LMT} - {-1988144756 -7200 0 CVT} - {-862610400 -3600 1 CVST} - {-764118000 -7200 0 CVT} - {186120000 -3600 0 CVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Cape_Verde) { + {-9223372036854775808 -5644 0 LMT} + {-1988144756 -7200 0 CVT} + {-862610400 -3600 1 CVST} + {-764118000 -7200 0 CVT} + {186120000 -3600 0 CVT} +} diff --git a/library/tzdata/Atlantic/Faeroe b/library/tzdata/Atlantic/Faeroe index a60b15a..4cafc34 100644 --- a/library/tzdata/Atlantic/Faeroe +++ b/library/tzdata/Atlantic/Faeroe @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Atlantic/Faroe)]} { - LoadTimeZoneFile Atlantic/Faroe -} -set TZData(:Atlantic/Faeroe) $TZData(:Atlantic/Faroe) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Atlantic/Faroe)]} { + LoadTimeZoneFile Atlantic/Faroe +} +set TZData(:Atlantic/Faeroe) $TZData(:Atlantic/Faroe) diff --git a/library/tzdata/Atlantic/Faroe b/library/tzdata/Atlantic/Faroe index 95ede24..d2c314a 100755 --- a/library/tzdata/Atlantic/Faroe +++ b/library/tzdata/Atlantic/Faroe @@ -1,245 +1,245 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Faroe) { - {-9223372036854775808 -1624 0 LMT} - {-1955748776 0 0 WET} - {347155200 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417574800 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 0 0 WET} - {733280400 3600 1 WEST} - {749005200 0 0 WET} - {764730000 3600 1 WEST} - {780454800 0 0 WET} - {796179600 3600 1 WEST} - {811904400 0 0 WET} - {828234000 3600 1 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Faroe) { + {-9223372036854775808 -1624 0 LMT} + {-1955748776 0 0 WET} + {347155200 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417574800 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 0 0 WET} + {733280400 3600 1 WEST} + {749005200 0 0 WET} + {764730000 3600 1 WEST} + {780454800 0 0 WET} + {796179600 3600 1 WEST} + {811904400 0 0 WET} + {828234000 3600 1 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Atlantic/Jan_Mayen b/library/tzdata/Atlantic/Jan_Mayen index 8ec5ea7..e592187 100644 --- a/library/tzdata/Atlantic/Jan_Mayen +++ b/library/tzdata/Atlantic/Jan_Mayen @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Oslo)]} { - LoadTimeZoneFile Europe/Oslo -} -set TZData(:Atlantic/Jan_Mayen) $TZData(:Europe/Oslo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Oslo)]} { + LoadTimeZoneFile Europe/Oslo +} +set TZData(:Atlantic/Jan_Mayen) $TZData(:Europe/Oslo) diff --git a/library/tzdata/Atlantic/Madeira b/library/tzdata/Atlantic/Madeira index 2e31681..4960eeb 100644 --- a/library/tzdata/Atlantic/Madeira +++ b/library/tzdata/Atlantic/Madeira @@ -1,350 +1,350 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Madeira) { - {-9223372036854775808 -4056 0 LMT} - {-2713906344 -4056 0 FMT} - {-1849560744 -3600 0 MADT} - {-1689552000 0 1 MADST} - {-1677798000 -3600 0 MADT} - {-1667433600 0 1 MADST} - {-1647734400 -3600 0 MADT} - {-1635811200 0 1 MADST} - {-1616198400 -3600 0 MADT} - {-1604361600 0 1 MADST} - {-1584662400 -3600 0 MADT} - {-1572739200 0 1 MADST} - {-1553040000 -3600 0 MADT} - {-1541203200 0 1 MADST} - {-1521504000 -3600 0 MADT} - {-1442448000 0 1 MADST} - {-1426809600 -3600 0 MADT} - {-1379289600 0 1 MADST} - {-1364774400 -3600 0 MADT} - {-1348444800 0 1 MADST} - {-1333324800 -3600 0 MADT} - {-1316390400 0 1 MADST} - {-1301270400 -3600 0 MADT} - {-1284336000 0 1 MADST} - {-1269820800 -3600 0 MADT} - {-1221436800 0 1 MADST} - {-1206921600 -3600 0 MADT} - {-1191196800 0 1 MADST} - {-1175472000 -3600 0 MADT} - {-1127692800 0 1 MADST} - {-1111968000 -3600 0 MADT} - {-1096848000 0 1 MADST} - {-1080518400 -3600 0 MADT} - {-1063584000 0 1 MADST} - {-1049068800 -3600 0 MADT} - {-1033344000 0 1 MADST} - {-1017619200 -3600 0 MADT} - {-1002499200 0 1 MADST} - {-986169600 -3600 0 MADT} - {-969235200 0 1 MADST} - {-950486400 -3600 0 MADT} - {-942019200 0 1 MADST} - {-922665600 -3600 0 MADT} - {-906940800 0 1 MADST} - {-891129600 -3600 0 MADT} - {-877305600 0 1 MADST} - {-873680400 3600 1 MADMT} - {-864003600 0 1 MADST} - {-857952000 -3600 0 MADT} - {-845856000 0 1 MADST} - {-842835600 3600 1 MADMT} - {-831344400 0 1 MADST} - {-825897600 -3600 0 MADT} - {-814406400 0 1 MADST} - {-810781200 3600 1 MADMT} - {-799894800 0 1 MADST} - {-794448000 -3600 0 MADT} - {-782956800 0 1 MADST} - {-779331600 3600 1 MADMT} - {-768445200 0 1 MADST} - {-762998400 -3600 0 MADT} - {-749088000 0 1 MADST} - {-733363200 -3600 0 MADT} - {-717627600 0 1 MADST} - {-701902800 -3600 0 MADT} - {-686178000 0 1 MADST} - {-670453200 -3600 0 MADT} - {-654728400 0 1 MADST} - {-639003600 -3600 0 MADT} - {-591829200 0 1 MADST} - {-575499600 -3600 0 MADT} - {-559774800 0 1 MADST} - {-544050000 -3600 0 MADT} - {-528325200 0 1 MADST} - {-512600400 -3600 0 MADT} - {-496875600 0 1 MADST} - {-481150800 -3600 0 MADT} - {-465426000 0 1 MADST} - {-449701200 -3600 0 MADT} - {-433976400 0 1 MADST} - {-417646800 -3600 0 MADT} - {-401922000 0 1 MADST} - {-386197200 -3600 0 MADT} - {-370472400 0 1 MADST} - {-354747600 -3600 0 MADT} - {-339022800 0 1 MADST} - {-323298000 -3600 0 MADT} - {-307573200 0 1 MADST} - {-291848400 -3600 0 MADT} - {-276123600 0 1 MADST} - {-260398800 -3600 0 MADT} - {-244674000 0 1 MADST} - {-228344400 -3600 0 MADT} - {-212619600 0 1 MADST} - {-196894800 -3600 0 MADT} - {-181170000 0 1 MADST} - {-165445200 -3600 0 MADT} - {-149720400 0 1 MADST} - {-133995600 -3600 0 MADT} - {-118270800 0 0 WET} - {228268800 3600 1 WEST} - {243993600 0 0 WET} - {260323200 3600 1 WEST} - {276048000 0 0 WET} - {291772800 3600 1 WEST} - {307501200 0 0 WET} - {323222400 3600 1 WEST} - {338950800 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417578400 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 0 0 WET} - {733280400 3600 1 WEST} - {749005200 0 0 WET} - {764730000 3600 1 WEST} - {780454800 0 0 WET} - {796179600 3600 1 WEST} - {811904400 0 0 WET} - {828234000 3600 1 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Madeira) { + {-9223372036854775808 -4056 0 LMT} + {-2713906344 -4056 0 FMT} + {-1849560744 -3600 0 MADT} + {-1689552000 0 1 MADST} + {-1677798000 -3600 0 MADT} + {-1667433600 0 1 MADST} + {-1647734400 -3600 0 MADT} + {-1635811200 0 1 MADST} + {-1616198400 -3600 0 MADT} + {-1604361600 0 1 MADST} + {-1584662400 -3600 0 MADT} + {-1572739200 0 1 MADST} + {-1553040000 -3600 0 MADT} + {-1541203200 0 1 MADST} + {-1521504000 -3600 0 MADT} + {-1442448000 0 1 MADST} + {-1426809600 -3600 0 MADT} + {-1379289600 0 1 MADST} + {-1364774400 -3600 0 MADT} + {-1348444800 0 1 MADST} + {-1333324800 -3600 0 MADT} + {-1316390400 0 1 MADST} + {-1301270400 -3600 0 MADT} + {-1284336000 0 1 MADST} + {-1269820800 -3600 0 MADT} + {-1221436800 0 1 MADST} + {-1206921600 -3600 0 MADT} + {-1191196800 0 1 MADST} + {-1175472000 -3600 0 MADT} + {-1127692800 0 1 MADST} + {-1111968000 -3600 0 MADT} + {-1096848000 0 1 MADST} + {-1080518400 -3600 0 MADT} + {-1063584000 0 1 MADST} + {-1049068800 -3600 0 MADT} + {-1033344000 0 1 MADST} + {-1017619200 -3600 0 MADT} + {-1002499200 0 1 MADST} + {-986169600 -3600 0 MADT} + {-969235200 0 1 MADST} + {-950486400 -3600 0 MADT} + {-942019200 0 1 MADST} + {-922665600 -3600 0 MADT} + {-906940800 0 1 MADST} + {-891129600 -3600 0 MADT} + {-877305600 0 1 MADST} + {-873680400 3600 1 MADMT} + {-864003600 0 1 MADST} + {-857952000 -3600 0 MADT} + {-845856000 0 1 MADST} + {-842835600 3600 1 MADMT} + {-831344400 0 1 MADST} + {-825897600 -3600 0 MADT} + {-814406400 0 1 MADST} + {-810781200 3600 1 MADMT} + {-799894800 0 1 MADST} + {-794448000 -3600 0 MADT} + {-782956800 0 1 MADST} + {-779331600 3600 1 MADMT} + {-768445200 0 1 MADST} + {-762998400 -3600 0 MADT} + {-749088000 0 1 MADST} + {-733363200 -3600 0 MADT} + {-717627600 0 1 MADST} + {-701902800 -3600 0 MADT} + {-686178000 0 1 MADST} + {-670453200 -3600 0 MADT} + {-654728400 0 1 MADST} + {-639003600 -3600 0 MADT} + {-591829200 0 1 MADST} + {-575499600 -3600 0 MADT} + {-559774800 0 1 MADST} + {-544050000 -3600 0 MADT} + {-528325200 0 1 MADST} + {-512600400 -3600 0 MADT} + {-496875600 0 1 MADST} + {-481150800 -3600 0 MADT} + {-465426000 0 1 MADST} + {-449701200 -3600 0 MADT} + {-433976400 0 1 MADST} + {-417646800 -3600 0 MADT} + {-401922000 0 1 MADST} + {-386197200 -3600 0 MADT} + {-370472400 0 1 MADST} + {-354747600 -3600 0 MADT} + {-339022800 0 1 MADST} + {-323298000 -3600 0 MADT} + {-307573200 0 1 MADST} + {-291848400 -3600 0 MADT} + {-276123600 0 1 MADST} + {-260398800 -3600 0 MADT} + {-244674000 0 1 MADST} + {-228344400 -3600 0 MADT} + {-212619600 0 1 MADST} + {-196894800 -3600 0 MADT} + {-181170000 0 1 MADST} + {-165445200 -3600 0 MADT} + {-149720400 0 1 MADST} + {-133995600 -3600 0 MADT} + {-118270800 0 0 WET} + {228268800 3600 1 WEST} + {243993600 0 0 WET} + {260323200 3600 1 WEST} + {276048000 0 0 WET} + {291772800 3600 1 WEST} + {307501200 0 0 WET} + {323222400 3600 1 WEST} + {338950800 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417578400 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 0 0 WET} + {733280400 3600 1 WEST} + {749005200 0 0 WET} + {764730000 3600 1 WEST} + {780454800 0 0 WET} + {796179600 3600 1 WEST} + {811904400 0 0 WET} + {828234000 3600 1 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Atlantic/Reykjavik b/library/tzdata/Atlantic/Reykjavik index c36b1aa..f0248ad 100644 --- a/library/tzdata/Atlantic/Reykjavik +++ b/library/tzdata/Atlantic/Reykjavik @@ -1,70 +1,70 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Reykjavik) { - {-9223372036854775808 -5244 0 LMT} - {-4197047556 -5268 0 RMT} - {-1956609132 -3600 0 IST} - {-1668211200 0 1 ISST} - {-1647212400 -3600 0 IST} - {-1636675200 0 1 ISST} - {-1613430000 -3600 0 IST} - {-968025600 0 1 ISST} - {-949615200 -3600 0 IST} - {-942008400 0 1 ISST} - {-920239200 -3600 0 IST} - {-909957600 0 1 ISST} - {-888789600 -3600 0 IST} - {-877903200 0 1 ISST} - {-857944800 -3600 0 IST} - {-846453600 0 1 ISST} - {-826495200 -3600 0 IST} - {-815004000 0 1 ISST} - {-795045600 -3600 0 IST} - {-783554400 0 1 ISST} - {-762991200 -3600 0 IST} - {-752104800 0 1 ISST} - {-731541600 -3600 0 IST} - {-717631200 0 1 ISST} - {-700092000 -3600 0 IST} - {-686181600 0 1 ISST} - {-668642400 -3600 0 IST} - {-654732000 0 1 ISST} - {-636588000 -3600 0 IST} - {-623282400 0 1 ISST} - {-605743200 -3600 0 IST} - {-591832800 0 1 ISST} - {-573688800 -3600 0 IST} - {-559778400 0 1 ISST} - {-542239200 -3600 0 IST} - {-528328800 0 1 ISST} - {-510789600 -3600 0 IST} - {-496879200 0 1 ISST} - {-479340000 -3600 0 IST} - {-465429600 0 1 ISST} - {-447890400 -3600 0 IST} - {-433980000 0 1 ISST} - {-415836000 -3600 0 IST} - {-401925600 0 1 ISST} - {-384386400 -3600 0 IST} - {-370476000 0 1 ISST} - {-352936800 -3600 0 IST} - {-339026400 0 1 ISST} - {-321487200 -3600 0 IST} - {-307576800 0 1 ISST} - {-290037600 -3600 0 IST} - {-276127200 0 1 ISST} - {-258588000 -3600 0 IST} - {-244677600 0 1 ISST} - {-226533600 -3600 0 IST} - {-212623200 0 1 ISST} - {-195084000 -3600 0 IST} - {-181173600 0 1 ISST} - {-163634400 -3600 0 IST} - {-149724000 0 1 ISST} - {-132184800 -3600 0 IST} - {-118274400 0 1 ISST} - {-100735200 -3600 0 IST} - {-86824800 0 1 ISST} - {-68680800 -3600 0 IST} - {-54770400 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Reykjavik) { + {-9223372036854775808 -5244 0 LMT} + {-4197047556 -5268 0 RMT} + {-1956609132 -3600 0 IST} + {-1668211200 0 1 ISST} + {-1647212400 -3600 0 IST} + {-1636675200 0 1 ISST} + {-1613430000 -3600 0 IST} + {-968025600 0 1 ISST} + {-949615200 -3600 0 IST} + {-942008400 0 1 ISST} + {-920239200 -3600 0 IST} + {-909957600 0 1 ISST} + {-888789600 -3600 0 IST} + {-877903200 0 1 ISST} + {-857944800 -3600 0 IST} + {-846453600 0 1 ISST} + {-826495200 -3600 0 IST} + {-815004000 0 1 ISST} + {-795045600 -3600 0 IST} + {-783554400 0 1 ISST} + {-762991200 -3600 0 IST} + {-752104800 0 1 ISST} + {-731541600 -3600 0 IST} + {-717631200 0 1 ISST} + {-700092000 -3600 0 IST} + {-686181600 0 1 ISST} + {-668642400 -3600 0 IST} + {-654732000 0 1 ISST} + {-636588000 -3600 0 IST} + {-623282400 0 1 ISST} + {-605743200 -3600 0 IST} + {-591832800 0 1 ISST} + {-573688800 -3600 0 IST} + {-559778400 0 1 ISST} + {-542239200 -3600 0 IST} + {-528328800 0 1 ISST} + {-510789600 -3600 0 IST} + {-496879200 0 1 ISST} + {-479340000 -3600 0 IST} + {-465429600 0 1 ISST} + {-447890400 -3600 0 IST} + {-433980000 0 1 ISST} + {-415836000 -3600 0 IST} + {-401925600 0 1 ISST} + {-384386400 -3600 0 IST} + {-370476000 0 1 ISST} + {-352936800 -3600 0 IST} + {-339026400 0 1 ISST} + {-321487200 -3600 0 IST} + {-307576800 0 1 ISST} + {-290037600 -3600 0 IST} + {-276127200 0 1 ISST} + {-258588000 -3600 0 IST} + {-244677600 0 1 ISST} + {-226533600 -3600 0 IST} + {-212623200 0 1 ISST} + {-195084000 -3600 0 IST} + {-181173600 0 1 ISST} + {-163634400 -3600 0 IST} + {-149724000 0 1 ISST} + {-132184800 -3600 0 IST} + {-118274400 0 1 ISST} + {-100735200 -3600 0 IST} + {-86824800 0 1 ISST} + {-68680800 -3600 0 IST} + {-54770400 0 0 GMT} +} diff --git a/library/tzdata/Atlantic/South_Georgia b/library/tzdata/Atlantic/South_Georgia index 88a6b8b..cbfc826 100644 --- a/library/tzdata/Atlantic/South_Georgia +++ b/library/tzdata/Atlantic/South_Georgia @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/South_Georgia) { - {-9223372036854775808 -8768 0 LMT} - {-2524512832 -7200 0 GST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/South_Georgia) { + {-9223372036854775808 -8768 0 LMT} + {-2524512832 -7200 0 GST} +} diff --git a/library/tzdata/Atlantic/St_Helena b/library/tzdata/Atlantic/St_Helena index e78e7a5..6d0c00d 100644 --- a/library/tzdata/Atlantic/St_Helena +++ b/library/tzdata/Atlantic/St_Helena @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/St_Helena) { - {-9223372036854775808 -1368 0 LMT} - {-2524520232 -1368 0 JMT} - {-599614632 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/St_Helena) { + {-9223372036854775808 -1368 0 LMT} + {-2524520232 -1368 0 JMT} + {-599614632 0 0 GMT} +} diff --git a/library/tzdata/Atlantic/Stanley b/library/tzdata/Atlantic/Stanley index 8112146..70dc402 100644 --- a/library/tzdata/Atlantic/Stanley +++ b/library/tzdata/Atlantic/Stanley @@ -1,253 +1,253 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Atlantic/Stanley) { - {-9223372036854775808 -13884 0 LMT} - {-2524507716 -13884 0 SMT} - {-1824235716 -14400 0 FKT} - {-1018209600 -10800 1 FKST} - {-1003093200 -14400 0 FKT} - {-986760000 -10800 1 FKST} - {-971643600 -14400 0 FKT} - {-954705600 -10800 1 FKST} - {-939589200 -14400 0 FKT} - {-923256000 -10800 1 FKST} - {-908139600 -14400 0 FKT} - {-891806400 -10800 1 FKST} - {-876690000 -14400 0 FKT} - {-860356800 -10800 1 FKST} - {420606000 -7200 0 FKT} - {433303200 -7200 1 FKST} - {452052000 -10800 0 FKT} - {464151600 -7200 1 FKST} - {483501600 -10800 0 FKT} - {495597600 -14400 0 FKT} - {495604800 -10800 1 FKST} - {514350000 -14400 0 FKT} - {527054400 -10800 1 FKST} - {545799600 -14400 0 FKT} - {558504000 -10800 1 FKST} - {577249200 -14400 0 FKT} - {589953600 -10800 1 FKST} - {608698800 -14400 0 FKT} - {621403200 -10800 1 FKST} - {640753200 -14400 0 FKT} - {652852800 -10800 1 FKST} - {672202800 -14400 0 FKT} - {684907200 -10800 1 FKST} - {703652400 -14400 0 FKT} - {716356800 -10800 1 FKST} - {735102000 -14400 0 FKT} - {747806400 -10800 1 FKST} - {766551600 -14400 0 FKT} - {779256000 -10800 1 FKST} - {798001200 -14400 0 FKT} - {810705600 -10800 1 FKST} - {830055600 -14400 0 FKT} - {842760000 -10800 1 FKST} - {861505200 -14400 0 FKT} - {874209600 -10800 1 FKST} - {892954800 -14400 0 FKT} - {905659200 -10800 1 FKST} - {924404400 -14400 0 FKT} - {937108800 -10800 1 FKST} - {955854000 -14400 0 FKT} - {968558400 -10800 1 FKST} - {987310800 -14400 0 FKT} - {999410400 -10800 1 FKST} - {1019365200 -14400 0 FKT} - {1030860000 -10800 1 FKST} - {1050814800 -14400 0 FKT} - {1062914400 -10800 1 FKST} - {1082264400 -14400 0 FKT} - {1094364000 -10800 1 FKST} - {1113714000 -14400 0 FKT} - {1125813600 -10800 1 FKST} - {1145163600 -14400 0 FKT} - {1157263200 -10800 1 FKST} - {1176613200 -14400 0 FKT} - {1188712800 -10800 1 FKST} - {1208667600 -14400 0 FKT} - {1220767200 -10800 1 FKST} - {1240117200 -14400 0 FKT} - {1252216800 -10800 1 FKST} - {1271566800 -14400 0 FKT} - {1283666400 -10800 1 FKST} - {1303016400 -14400 0 FKT} - {1315116000 -10800 1 FKST} - {1334466000 -14400 0 FKT} - {1346565600 -10800 1 FKST} - {1366520400 -14400 0 FKT} - {1378015200 -10800 1 FKST} - {1397970000 -14400 0 FKT} - {1410069600 -10800 1 FKST} - {1429419600 -14400 0 FKT} - {1441519200 -10800 1 FKST} - {1460869200 -14400 0 FKT} - {1472968800 -10800 1 FKST} - {1492318800 -14400 0 FKT} - {1504418400 -10800 1 FKST} - {1523768400 -14400 0 FKT} - {1535868000 -10800 1 FKST} - {1555822800 -14400 0 FKT} - {1567317600 -10800 1 FKST} - {1587272400 -14400 0 FKT} - {1599372000 -10800 1 FKST} - {1618722000 -14400 0 FKT} - {1630821600 -10800 1 FKST} - {1650171600 -14400 0 FKT} - {1662271200 -10800 1 FKST} - {1681621200 -14400 0 FKT} - {1693720800 -10800 1 FKST} - {1713675600 -14400 0 FKT} - {1725170400 -10800 1 FKST} - {1745125200 -14400 0 FKT} - {1757224800 -10800 1 FKST} - {1776574800 -14400 0 FKT} - {1788674400 -10800 1 FKST} - {1808024400 -14400 0 FKT} - {1820124000 -10800 1 FKST} - {1839474000 -14400 0 FKT} - {1851573600 -10800 1 FKST} - {1870923600 -14400 0 FKT} - {1883023200 -10800 1 FKST} - {1902978000 -14400 0 FKT} - {1914472800 -10800 1 FKST} - {1934427600 -14400 0 FKT} - {1946527200 -10800 1 FKST} - {1965877200 -14400 0 FKT} - {1977976800 -10800 1 FKST} - {1997326800 -14400 0 FKT} - {2009426400 -10800 1 FKST} - {2028776400 -14400 0 FKT} - {2040876000 -10800 1 FKST} - {2060226000 -14400 0 FKT} - {2072325600 -10800 1 FKST} - {2092280400 -14400 0 FKT} - {2104380000 -10800 1 FKST} - {2123730000 -14400 0 FKT} - {2135829600 -10800 1 FKST} - {2155179600 -14400 0 FKT} - {2167279200 -10800 1 FKST} - {2186629200 -14400 0 FKT} - {2198728800 -10800 1 FKST} - {2218078800 -14400 0 FKT} - {2230178400 -10800 1 FKST} - {2250133200 -14400 0 FKT} - {2261628000 -10800 1 FKST} - {2281582800 -14400 0 FKT} - {2293682400 -10800 1 FKST} - {2313032400 -14400 0 FKT} - {2325132000 -10800 1 FKST} - {2344482000 -14400 0 FKT} - {2356581600 -10800 1 FKST} - {2375931600 -14400 0 FKT} - {2388031200 -10800 1 FKST} - {2407381200 -14400 0 FKT} - {2419480800 -10800 1 FKST} - {2439435600 -14400 0 FKT} - {2450930400 -10800 1 FKST} - {2470885200 -14400 0 FKT} - {2482984800 -10800 1 FKST} - {2502334800 -14400 0 FKT} - {2514434400 -10800 1 FKST} - {2533784400 -14400 0 FKT} - {2545884000 -10800 1 FKST} - {2565234000 -14400 0 FKT} - {2577333600 -10800 1 FKST} - {2597288400 -14400 0 FKT} - {2608783200 -10800 1 FKST} - {2628738000 -14400 0 FKT} - {2640837600 -10800 1 FKST} - {2660187600 -14400 0 FKT} - {2672287200 -10800 1 FKST} - {2691637200 -14400 0 FKT} - {2703736800 -10800 1 FKST} - {2723086800 -14400 0 FKT} - {2735186400 -10800 1 FKST} - {2754536400 -14400 0 FKT} - {2766636000 -10800 1 FKST} - {2786590800 -14400 0 FKT} - {2798085600 -10800 1 FKST} - {2818040400 -14400 0 FKT} - {2830140000 -10800 1 FKST} - {2849490000 -14400 0 FKT} - {2861589600 -10800 1 FKST} - {2880939600 -14400 0 FKT} - {2893039200 -10800 1 FKST} - {2912389200 -14400 0 FKT} - {2924488800 -10800 1 FKST} - {2943838800 -14400 0 FKT} - {2955938400 -10800 1 FKST} - {2975893200 -14400 0 FKT} - {2987992800 -10800 1 FKST} - {3007342800 -14400 0 FKT} - {3019442400 -10800 1 FKST} - {3038792400 -14400 0 FKT} - {3050892000 -10800 1 FKST} - {3070242000 -14400 0 FKT} - {3082341600 -10800 1 FKST} - {3101691600 -14400 0 FKT} - {3113791200 -10800 1 FKST} - {3133746000 -14400 0 FKT} - {3145240800 -10800 1 FKST} - {3165195600 -14400 0 FKT} - {3177295200 -10800 1 FKST} - {3196645200 -14400 0 FKT} - {3208744800 -10800 1 FKST} - {3228094800 -14400 0 FKT} - {3240194400 -10800 1 FKST} - {3259544400 -14400 0 FKT} - {3271644000 -10800 1 FKST} - {3290994000 -14400 0 FKT} - {3303093600 -10800 1 FKST} - {3323048400 -14400 0 FKT} - {3334543200 -10800 1 FKST} - {3354498000 -14400 0 FKT} - {3366597600 -10800 1 FKST} - {3385947600 -14400 0 FKT} - {3398047200 -10800 1 FKST} - {3417397200 -14400 0 FKT} - {3429496800 -10800 1 FKST} - {3448846800 -14400 0 FKT} - {3460946400 -10800 1 FKST} - {3480901200 -14400 0 FKT} - {3492396000 -10800 1 FKST} - {3512350800 -14400 0 FKT} - {3524450400 -10800 1 FKST} - {3543800400 -14400 0 FKT} - {3555900000 -10800 1 FKST} - {3575250000 -14400 0 FKT} - {3587349600 -10800 1 FKST} - {3606699600 -14400 0 FKT} - {3618799200 -10800 1 FKST} - {3638149200 -14400 0 FKT} - {3650248800 -10800 1 FKST} - {3670203600 -14400 0 FKT} - {3681698400 -10800 1 FKST} - {3701653200 -14400 0 FKT} - {3713752800 -10800 1 FKST} - {3733102800 -14400 0 FKT} - {3745202400 -10800 1 FKST} - {3764552400 -14400 0 FKT} - {3776652000 -10800 1 FKST} - {3796002000 -14400 0 FKT} - {3808101600 -10800 1 FKST} - {3827451600 -14400 0 FKT} - {3839551200 -10800 1 FKST} - {3859506000 -14400 0 FKT} - {3871605600 -10800 1 FKST} - {3890955600 -14400 0 FKT} - {3903055200 -10800 1 FKST} - {3922405200 -14400 0 FKT} - {3934504800 -10800 1 FKST} - {3953854800 -14400 0 FKT} - {3965954400 -10800 1 FKST} - {3985304400 -14400 0 FKT} - {3997404000 -10800 1 FKST} - {4017358800 -14400 0 FKT} - {4028853600 -10800 1 FKST} - {4048808400 -14400 0 FKT} - {4060908000 -10800 1 FKST} - {4080258000 -14400 0 FKT} - {4092357600 -10800 1 FKST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Atlantic/Stanley) { + {-9223372036854775808 -13884 0 LMT} + {-2524507716 -13884 0 SMT} + {-1824235716 -14400 0 FKT} + {-1018209600 -10800 1 FKST} + {-1003093200 -14400 0 FKT} + {-986760000 -10800 1 FKST} + {-971643600 -14400 0 FKT} + {-954705600 -10800 1 FKST} + {-939589200 -14400 0 FKT} + {-923256000 -10800 1 FKST} + {-908139600 -14400 0 FKT} + {-891806400 -10800 1 FKST} + {-876690000 -14400 0 FKT} + {-860356800 -10800 1 FKST} + {420606000 -7200 0 FKT} + {433303200 -7200 1 FKST} + {452052000 -10800 0 FKT} + {464151600 -7200 1 FKST} + {483501600 -10800 0 FKT} + {495597600 -14400 0 FKT} + {495604800 -10800 1 FKST} + {514350000 -14400 0 FKT} + {527054400 -10800 1 FKST} + {545799600 -14400 0 FKT} + {558504000 -10800 1 FKST} + {577249200 -14400 0 FKT} + {589953600 -10800 1 FKST} + {608698800 -14400 0 FKT} + {621403200 -10800 1 FKST} + {640753200 -14400 0 FKT} + {652852800 -10800 1 FKST} + {672202800 -14400 0 FKT} + {684907200 -10800 1 FKST} + {703652400 -14400 0 FKT} + {716356800 -10800 1 FKST} + {735102000 -14400 0 FKT} + {747806400 -10800 1 FKST} + {766551600 -14400 0 FKT} + {779256000 -10800 1 FKST} + {798001200 -14400 0 FKT} + {810705600 -10800 1 FKST} + {830055600 -14400 0 FKT} + {842760000 -10800 1 FKST} + {861505200 -14400 0 FKT} + {874209600 -10800 1 FKST} + {892954800 -14400 0 FKT} + {905659200 -10800 1 FKST} + {924404400 -14400 0 FKT} + {937108800 -10800 1 FKST} + {955854000 -14400 0 FKT} + {968558400 -10800 1 FKST} + {987310800 -14400 0 FKT} + {999410400 -10800 1 FKST} + {1019365200 -14400 0 FKT} + {1030860000 -10800 1 FKST} + {1050814800 -14400 0 FKT} + {1062914400 -10800 1 FKST} + {1082264400 -14400 0 FKT} + {1094364000 -10800 1 FKST} + {1113714000 -14400 0 FKT} + {1125813600 -10800 1 FKST} + {1145163600 -14400 0 FKT} + {1157263200 -10800 1 FKST} + {1176613200 -14400 0 FKT} + {1188712800 -10800 1 FKST} + {1208667600 -14400 0 FKT} + {1220767200 -10800 1 FKST} + {1240117200 -14400 0 FKT} + {1252216800 -10800 1 FKST} + {1271566800 -14400 0 FKT} + {1283666400 -10800 1 FKST} + {1303016400 -14400 0 FKT} + {1315116000 -10800 1 FKST} + {1334466000 -14400 0 FKT} + {1346565600 -10800 1 FKST} + {1366520400 -14400 0 FKT} + {1378015200 -10800 1 FKST} + {1397970000 -14400 0 FKT} + {1410069600 -10800 1 FKST} + {1429419600 -14400 0 FKT} + {1441519200 -10800 1 FKST} + {1460869200 -14400 0 FKT} + {1472968800 -10800 1 FKST} + {1492318800 -14400 0 FKT} + {1504418400 -10800 1 FKST} + {1523768400 -14400 0 FKT} + {1535868000 -10800 1 FKST} + {1555822800 -14400 0 FKT} + {1567317600 -10800 1 FKST} + {1587272400 -14400 0 FKT} + {1599372000 -10800 1 FKST} + {1618722000 -14400 0 FKT} + {1630821600 -10800 1 FKST} + {1650171600 -14400 0 FKT} + {1662271200 -10800 1 FKST} + {1681621200 -14400 0 FKT} + {1693720800 -10800 1 FKST} + {1713675600 -14400 0 FKT} + {1725170400 -10800 1 FKST} + {1745125200 -14400 0 FKT} + {1757224800 -10800 1 FKST} + {1776574800 -14400 0 FKT} + {1788674400 -10800 1 FKST} + {1808024400 -14400 0 FKT} + {1820124000 -10800 1 FKST} + {1839474000 -14400 0 FKT} + {1851573600 -10800 1 FKST} + {1870923600 -14400 0 FKT} + {1883023200 -10800 1 FKST} + {1902978000 -14400 0 FKT} + {1914472800 -10800 1 FKST} + {1934427600 -14400 0 FKT} + {1946527200 -10800 1 FKST} + {1965877200 -14400 0 FKT} + {1977976800 -10800 1 FKST} + {1997326800 -14400 0 FKT} + {2009426400 -10800 1 FKST} + {2028776400 -14400 0 FKT} + {2040876000 -10800 1 FKST} + {2060226000 -14400 0 FKT} + {2072325600 -10800 1 FKST} + {2092280400 -14400 0 FKT} + {2104380000 -10800 1 FKST} + {2123730000 -14400 0 FKT} + {2135829600 -10800 1 FKST} + {2155179600 -14400 0 FKT} + {2167279200 -10800 1 FKST} + {2186629200 -14400 0 FKT} + {2198728800 -10800 1 FKST} + {2218078800 -14400 0 FKT} + {2230178400 -10800 1 FKST} + {2250133200 -14400 0 FKT} + {2261628000 -10800 1 FKST} + {2281582800 -14400 0 FKT} + {2293682400 -10800 1 FKST} + {2313032400 -14400 0 FKT} + {2325132000 -10800 1 FKST} + {2344482000 -14400 0 FKT} + {2356581600 -10800 1 FKST} + {2375931600 -14400 0 FKT} + {2388031200 -10800 1 FKST} + {2407381200 -14400 0 FKT} + {2419480800 -10800 1 FKST} + {2439435600 -14400 0 FKT} + {2450930400 -10800 1 FKST} + {2470885200 -14400 0 FKT} + {2482984800 -10800 1 FKST} + {2502334800 -14400 0 FKT} + {2514434400 -10800 1 FKST} + {2533784400 -14400 0 FKT} + {2545884000 -10800 1 FKST} + {2565234000 -14400 0 FKT} + {2577333600 -10800 1 FKST} + {2597288400 -14400 0 FKT} + {2608783200 -10800 1 FKST} + {2628738000 -14400 0 FKT} + {2640837600 -10800 1 FKST} + {2660187600 -14400 0 FKT} + {2672287200 -10800 1 FKST} + {2691637200 -14400 0 FKT} + {2703736800 -10800 1 FKST} + {2723086800 -14400 0 FKT} + {2735186400 -10800 1 FKST} + {2754536400 -14400 0 FKT} + {2766636000 -10800 1 FKST} + {2786590800 -14400 0 FKT} + {2798085600 -10800 1 FKST} + {2818040400 -14400 0 FKT} + {2830140000 -10800 1 FKST} + {2849490000 -14400 0 FKT} + {2861589600 -10800 1 FKST} + {2880939600 -14400 0 FKT} + {2893039200 -10800 1 FKST} + {2912389200 -14400 0 FKT} + {2924488800 -10800 1 FKST} + {2943838800 -14400 0 FKT} + {2955938400 -10800 1 FKST} + {2975893200 -14400 0 FKT} + {2987992800 -10800 1 FKST} + {3007342800 -14400 0 FKT} + {3019442400 -10800 1 FKST} + {3038792400 -14400 0 FKT} + {3050892000 -10800 1 FKST} + {3070242000 -14400 0 FKT} + {3082341600 -10800 1 FKST} + {3101691600 -14400 0 FKT} + {3113791200 -10800 1 FKST} + {3133746000 -14400 0 FKT} + {3145240800 -10800 1 FKST} + {3165195600 -14400 0 FKT} + {3177295200 -10800 1 FKST} + {3196645200 -14400 0 FKT} + {3208744800 -10800 1 FKST} + {3228094800 -14400 0 FKT} + {3240194400 -10800 1 FKST} + {3259544400 -14400 0 FKT} + {3271644000 -10800 1 FKST} + {3290994000 -14400 0 FKT} + {3303093600 -10800 1 FKST} + {3323048400 -14400 0 FKT} + {3334543200 -10800 1 FKST} + {3354498000 -14400 0 FKT} + {3366597600 -10800 1 FKST} + {3385947600 -14400 0 FKT} + {3398047200 -10800 1 FKST} + {3417397200 -14400 0 FKT} + {3429496800 -10800 1 FKST} + {3448846800 -14400 0 FKT} + {3460946400 -10800 1 FKST} + {3480901200 -14400 0 FKT} + {3492396000 -10800 1 FKST} + {3512350800 -14400 0 FKT} + {3524450400 -10800 1 FKST} + {3543800400 -14400 0 FKT} + {3555900000 -10800 1 FKST} + {3575250000 -14400 0 FKT} + {3587349600 -10800 1 FKST} + {3606699600 -14400 0 FKT} + {3618799200 -10800 1 FKST} + {3638149200 -14400 0 FKT} + {3650248800 -10800 1 FKST} + {3670203600 -14400 0 FKT} + {3681698400 -10800 1 FKST} + {3701653200 -14400 0 FKT} + {3713752800 -10800 1 FKST} + {3733102800 -14400 0 FKT} + {3745202400 -10800 1 FKST} + {3764552400 -14400 0 FKT} + {3776652000 -10800 1 FKST} + {3796002000 -14400 0 FKT} + {3808101600 -10800 1 FKST} + {3827451600 -14400 0 FKT} + {3839551200 -10800 1 FKST} + {3859506000 -14400 0 FKT} + {3871605600 -10800 1 FKST} + {3890955600 -14400 0 FKT} + {3903055200 -10800 1 FKST} + {3922405200 -14400 0 FKT} + {3934504800 -10800 1 FKST} + {3953854800 -14400 0 FKT} + {3965954400 -10800 1 FKST} + {3985304400 -14400 0 FKT} + {3997404000 -10800 1 FKST} + {4017358800 -14400 0 FKT} + {4028853600 -10800 1 FKST} + {4048808400 -14400 0 FKT} + {4060908000 -10800 1 FKST} + {4080258000 -14400 0 FKT} + {4092357600 -10800 1 FKST} +} diff --git a/library/tzdata/Australia/ACT b/library/tzdata/Australia/ACT index ab9005b..f7da281 100644 --- a/library/tzdata/Australia/ACT +++ b/library/tzdata/Australia/ACT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Sydney)]} { - LoadTimeZoneFile Australia/Sydney -} -set TZData(:Australia/ACT) $TZData(:Australia/Sydney) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Sydney)]} { + LoadTimeZoneFile Australia/Sydney +} +set TZData(:Australia/ACT) $TZData(:Australia/Sydney) diff --git a/library/tzdata/Australia/Adelaide b/library/tzdata/Australia/Adelaide index f04b59b..9abe192 100644 --- a/library/tzdata/Australia/Adelaide +++ b/library/tzdata/Australia/Adelaide @@ -1,273 +1,273 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Adelaide) { - {-9223372036854775808 33260 0 LMT} - {-2364110060 32400 0 CST} - {-2230189200 34200 0 CST} - {-1672565340 37800 1 CST} - {-1665390600 34200 0 CST} - {-883639800 37800 1 CST} - {-876126600 34200 0 CST} - {-860398200 37800 1 CST} - {-844677000 34200 0 CST} - {-828343800 37800 1 CST} - {-813227400 34200 0 CST} - {31501800 34200 0 CST} - {57688200 37800 1 CST} - {67969800 34200 0 CST} - {89137800 37800 1 CST} - {100024200 34200 0 CST} - {120587400 37800 1 CST} - {131473800 34200 0 CST} - {152037000 37800 1 CST} - {162923400 34200 0 CST} - {183486600 37800 1 CST} - {194977800 34200 0 CST} - {215541000 37800 1 CST} - {226427400 34200 0 CST} - {246990600 37800 1 CST} - {257877000 34200 0 CST} - {278440200 37800 1 CST} - {289326600 34200 0 CST} - {309889800 37800 1 CST} - {320776200 34200 0 CST} - {341339400 37800 1 CST} - {352225800 34200 0 CST} - {372789000 37800 1 CST} - {384280200 34200 0 CST} - {404843400 37800 1 CST} - {415729800 34200 0 CST} - {436293000 37800 1 CST} - {447179400 34200 0 CST} - {467742600 37800 1 CST} - {478629000 34200 0 CST} - {499192200 37800 1 CST} - {511288200 34200 0 CST} - {530037000 37800 1 CST} - {542737800 34200 0 CST} - {562091400 37800 1 CST} - {574792200 34200 0 CST} - {594145800 37800 1 CST} - {606241800 34200 0 CST} - {625595400 37800 1 CST} - {637691400 34200 0 CST} - {657045000 37800 1 CST} - {667931400 34200 0 CST} - {688494600 37800 1 CST} - {701195400 34200 0 CST} - {719944200 37800 1 CST} - {731435400 34200 0 CST} - {751998600 37800 1 CST} - {764094600 34200 0 CST} - {783448200 37800 1 CST} - {796149000 34200 0 CST} - {814897800 37800 1 CST} - {828203400 34200 0 CST} - {846347400 37800 1 CST} - {859653000 34200 0 CST} - {877797000 37800 1 CST} - {891102600 34200 0 CST} - {909246600 37800 1 CST} - {922552200 34200 0 CST} - {941301000 37800 1 CST} - {954001800 34200 0 CST} - {972750600 37800 1 CST} - {985451400 34200 0 CST} - {1004200200 37800 1 CST} - {1017505800 34200 0 CST} - {1035649800 37800 1 CST} - {1048955400 34200 0 CST} - {1067099400 37800 1 CST} - {1080405000 34200 0 CST} - {1099153800 37800 1 CST} - {1111854600 34200 0 CST} - {1130603400 37800 1 CST} - {1143909000 34200 0 CST} - {1162053000 37800 1 CST} - {1174753800 34200 0 CST} - {1193502600 37800 1 CST} - {1207413000 34200 0 CST} - {1223137800 37800 1 CST} - {1238862600 34200 0 CST} - {1254587400 37800 1 CST} - {1270312200 34200 0 CST} - {1286037000 37800 1 CST} - {1301761800 34200 0 CST} - {1317486600 37800 1 CST} - {1333211400 34200 0 CST} - {1349541000 37800 1 CST} - {1365265800 34200 0 CST} - {1380990600 37800 1 CST} - {1396715400 34200 0 CST} - {1412440200 37800 1 CST} - {1428165000 34200 0 CST} - {1443889800 37800 1 CST} - {1459614600 34200 0 CST} - {1475339400 37800 1 CST} - {1491064200 34200 0 CST} - {1506789000 37800 1 CST} - {1522513800 34200 0 CST} - {1538843400 37800 1 CST} - {1554568200 34200 0 CST} - {1570293000 37800 1 CST} - {1586017800 34200 0 CST} - {1601742600 37800 1 CST} - {1617467400 34200 0 CST} - {1633192200 37800 1 CST} - {1648917000 34200 0 CST} - {1664641800 37800 1 CST} - {1680366600 34200 0 CST} - {1696091400 37800 1 CST} - {1712421000 34200 0 CST} - {1728145800 37800 1 CST} - {1743870600 34200 0 CST} - {1759595400 37800 1 CST} - {1775320200 34200 0 CST} - {1791045000 37800 1 CST} - {1806769800 34200 0 CST} - {1822494600 37800 1 CST} - {1838219400 34200 0 CST} - {1853944200 37800 1 CST} - {1869669000 34200 0 CST} - {1885998600 37800 1 CST} - {1901723400 34200 0 CST} - {1917448200 37800 1 CST} - {1933173000 34200 0 CST} - {1948897800 37800 1 CST} - {1964622600 34200 0 CST} - {1980347400 37800 1 CST} - {1996072200 34200 0 CST} - {2011797000 37800 1 CST} - {2027521800 34200 0 CST} - {2043246600 37800 1 CST} - {2058971400 34200 0 CST} - {2075301000 37800 1 CST} - {2091025800 34200 0 CST} - {2106750600 37800 1 CST} - {2122475400 34200 0 CST} - {2138200200 37800 1 CST} - {2153925000 34200 0 CST} - {2169649800 37800 1 CST} - {2185374600 34200 0 CST} - {2201099400 37800 1 CST} - {2216824200 34200 0 CST} - {2233153800 37800 1 CST} - {2248878600 34200 0 CST} - {2264603400 37800 1 CST} - {2280328200 34200 0 CST} - {2296053000 37800 1 CST} - {2311777800 34200 0 CST} - {2327502600 37800 1 CST} - {2343227400 34200 0 CST} - {2358952200 37800 1 CST} - {2374677000 34200 0 CST} - {2390401800 37800 1 CST} - {2406126600 34200 0 CST} - {2422456200 37800 1 CST} - {2438181000 34200 0 CST} - {2453905800 37800 1 CST} - {2469630600 34200 0 CST} - {2485355400 37800 1 CST} - {2501080200 34200 0 CST} - {2516805000 37800 1 CST} - {2532529800 34200 0 CST} - {2548254600 37800 1 CST} - {2563979400 34200 0 CST} - {2579704200 37800 1 CST} - {2596033800 34200 0 CST} - {2611758600 37800 1 CST} - {2627483400 34200 0 CST} - {2643208200 37800 1 CST} - {2658933000 34200 0 CST} - {2674657800 37800 1 CST} - {2690382600 34200 0 CST} - {2706107400 37800 1 CST} - {2721832200 34200 0 CST} - {2737557000 37800 1 CST} - {2753281800 34200 0 CST} - {2769611400 37800 1 CST} - {2785336200 34200 0 CST} - {2801061000 37800 1 CST} - {2816785800 34200 0 CST} - {2832510600 37800 1 CST} - {2848235400 34200 0 CST} - {2863960200 37800 1 CST} - {2879685000 34200 0 CST} - {2895409800 37800 1 CST} - {2911134600 34200 0 CST} - {2926859400 37800 1 CST} - {2942584200 34200 0 CST} - {2958913800 37800 1 CST} - {2974638600 34200 0 CST} - {2990363400 37800 1 CST} - {3006088200 34200 0 CST} - {3021813000 37800 1 CST} - {3037537800 34200 0 CST} - {3053262600 37800 1 CST} - {3068987400 34200 0 CST} - {3084712200 37800 1 CST} - {3100437000 34200 0 CST} - {3116766600 37800 1 CST} - {3132491400 34200 0 CST} - {3148216200 37800 1 CST} - {3163941000 34200 0 CST} - {3179665800 37800 1 CST} - {3195390600 34200 0 CST} - {3211115400 37800 1 CST} - {3226840200 34200 0 CST} - {3242565000 37800 1 CST} - {3258289800 34200 0 CST} - {3274014600 37800 1 CST} - {3289739400 34200 0 CST} - {3306069000 37800 1 CST} - {3321793800 34200 0 CST} - {3337518600 37800 1 CST} - {3353243400 34200 0 CST} - {3368968200 37800 1 CST} - {3384693000 34200 0 CST} - {3400417800 37800 1 CST} - {3416142600 34200 0 CST} - {3431867400 37800 1 CST} - {3447592200 34200 0 CST} - {3463317000 37800 1 CST} - {3479646600 34200 0 CST} - {3495371400 37800 1 CST} - {3511096200 34200 0 CST} - {3526821000 37800 1 CST} - {3542545800 34200 0 CST} - {3558270600 37800 1 CST} - {3573995400 34200 0 CST} - {3589720200 37800 1 CST} - {3605445000 34200 0 CST} - {3621169800 37800 1 CST} - {3636894600 34200 0 CST} - {3653224200 37800 1 CST} - {3668949000 34200 0 CST} - {3684673800 37800 1 CST} - {3700398600 34200 0 CST} - {3716123400 37800 1 CST} - {3731848200 34200 0 CST} - {3747573000 37800 1 CST} - {3763297800 34200 0 CST} - {3779022600 37800 1 CST} - {3794747400 34200 0 CST} - {3810472200 37800 1 CST} - {3826197000 34200 0 CST} - {3842526600 37800 1 CST} - {3858251400 34200 0 CST} - {3873976200 37800 1 CST} - {3889701000 34200 0 CST} - {3905425800 37800 1 CST} - {3921150600 34200 0 CST} - {3936875400 37800 1 CST} - {3952600200 34200 0 CST} - {3968325000 37800 1 CST} - {3984049800 34200 0 CST} - {4000379400 37800 1 CST} - {4016104200 34200 0 CST} - {4031829000 37800 1 CST} - {4047553800 34200 0 CST} - {4063278600 37800 1 CST} - {4079003400 34200 0 CST} - {4094728200 37800 1 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Adelaide) { + {-9223372036854775808 33260 0 LMT} + {-2364110060 32400 0 CST} + {-2230189200 34200 0 CST} + {-1672565340 37800 1 CST} + {-1665390600 34200 0 CST} + {-883639800 37800 1 CST} + {-876126600 34200 0 CST} + {-860398200 37800 1 CST} + {-844677000 34200 0 CST} + {-828343800 37800 1 CST} + {-813227400 34200 0 CST} + {31501800 34200 0 CST} + {57688200 37800 1 CST} + {67969800 34200 0 CST} + {89137800 37800 1 CST} + {100024200 34200 0 CST} + {120587400 37800 1 CST} + {131473800 34200 0 CST} + {152037000 37800 1 CST} + {162923400 34200 0 CST} + {183486600 37800 1 CST} + {194977800 34200 0 CST} + {215541000 37800 1 CST} + {226427400 34200 0 CST} + {246990600 37800 1 CST} + {257877000 34200 0 CST} + {278440200 37800 1 CST} + {289326600 34200 0 CST} + {309889800 37800 1 CST} + {320776200 34200 0 CST} + {341339400 37800 1 CST} + {352225800 34200 0 CST} + {372789000 37800 1 CST} + {384280200 34200 0 CST} + {404843400 37800 1 CST} + {415729800 34200 0 CST} + {436293000 37800 1 CST} + {447179400 34200 0 CST} + {467742600 37800 1 CST} + {478629000 34200 0 CST} + {499192200 37800 1 CST} + {511288200 34200 0 CST} + {530037000 37800 1 CST} + {542737800 34200 0 CST} + {562091400 37800 1 CST} + {574792200 34200 0 CST} + {594145800 37800 1 CST} + {606241800 34200 0 CST} + {625595400 37800 1 CST} + {637691400 34200 0 CST} + {657045000 37800 1 CST} + {667931400 34200 0 CST} + {688494600 37800 1 CST} + {701195400 34200 0 CST} + {719944200 37800 1 CST} + {731435400 34200 0 CST} + {751998600 37800 1 CST} + {764094600 34200 0 CST} + {783448200 37800 1 CST} + {796149000 34200 0 CST} + {814897800 37800 1 CST} + {828203400 34200 0 CST} + {846347400 37800 1 CST} + {859653000 34200 0 CST} + {877797000 37800 1 CST} + {891102600 34200 0 CST} + {909246600 37800 1 CST} + {922552200 34200 0 CST} + {941301000 37800 1 CST} + {954001800 34200 0 CST} + {972750600 37800 1 CST} + {985451400 34200 0 CST} + {1004200200 37800 1 CST} + {1017505800 34200 0 CST} + {1035649800 37800 1 CST} + {1048955400 34200 0 CST} + {1067099400 37800 1 CST} + {1080405000 34200 0 CST} + {1099153800 37800 1 CST} + {1111854600 34200 0 CST} + {1130603400 37800 1 CST} + {1143909000 34200 0 CST} + {1162053000 37800 1 CST} + {1174753800 34200 0 CST} + {1193502600 37800 1 CST} + {1207413000 34200 0 CST} + {1223137800 37800 1 CST} + {1238862600 34200 0 CST} + {1254587400 37800 1 CST} + {1270312200 34200 0 CST} + {1286037000 37800 1 CST} + {1301761800 34200 0 CST} + {1317486600 37800 1 CST} + {1333211400 34200 0 CST} + {1349541000 37800 1 CST} + {1365265800 34200 0 CST} + {1380990600 37800 1 CST} + {1396715400 34200 0 CST} + {1412440200 37800 1 CST} + {1428165000 34200 0 CST} + {1443889800 37800 1 CST} + {1459614600 34200 0 CST} + {1475339400 37800 1 CST} + {1491064200 34200 0 CST} + {1506789000 37800 1 CST} + {1522513800 34200 0 CST} + {1538843400 37800 1 CST} + {1554568200 34200 0 CST} + {1570293000 37800 1 CST} + {1586017800 34200 0 CST} + {1601742600 37800 1 CST} + {1617467400 34200 0 CST} + {1633192200 37800 1 CST} + {1648917000 34200 0 CST} + {1664641800 37800 1 CST} + {1680366600 34200 0 CST} + {1696091400 37800 1 CST} + {1712421000 34200 0 CST} + {1728145800 37800 1 CST} + {1743870600 34200 0 CST} + {1759595400 37800 1 CST} + {1775320200 34200 0 CST} + {1791045000 37800 1 CST} + {1806769800 34200 0 CST} + {1822494600 37800 1 CST} + {1838219400 34200 0 CST} + {1853944200 37800 1 CST} + {1869669000 34200 0 CST} + {1885998600 37800 1 CST} + {1901723400 34200 0 CST} + {1917448200 37800 1 CST} + {1933173000 34200 0 CST} + {1948897800 37800 1 CST} + {1964622600 34200 0 CST} + {1980347400 37800 1 CST} + {1996072200 34200 0 CST} + {2011797000 37800 1 CST} + {2027521800 34200 0 CST} + {2043246600 37800 1 CST} + {2058971400 34200 0 CST} + {2075301000 37800 1 CST} + {2091025800 34200 0 CST} + {2106750600 37800 1 CST} + {2122475400 34200 0 CST} + {2138200200 37800 1 CST} + {2153925000 34200 0 CST} + {2169649800 37800 1 CST} + {2185374600 34200 0 CST} + {2201099400 37800 1 CST} + {2216824200 34200 0 CST} + {2233153800 37800 1 CST} + {2248878600 34200 0 CST} + {2264603400 37800 1 CST} + {2280328200 34200 0 CST} + {2296053000 37800 1 CST} + {2311777800 34200 0 CST} + {2327502600 37800 1 CST} + {2343227400 34200 0 CST} + {2358952200 37800 1 CST} + {2374677000 34200 0 CST} + {2390401800 37800 1 CST} + {2406126600 34200 0 CST} + {2422456200 37800 1 CST} + {2438181000 34200 0 CST} + {2453905800 37800 1 CST} + {2469630600 34200 0 CST} + {2485355400 37800 1 CST} + {2501080200 34200 0 CST} + {2516805000 37800 1 CST} + {2532529800 34200 0 CST} + {2548254600 37800 1 CST} + {2563979400 34200 0 CST} + {2579704200 37800 1 CST} + {2596033800 34200 0 CST} + {2611758600 37800 1 CST} + {2627483400 34200 0 CST} + {2643208200 37800 1 CST} + {2658933000 34200 0 CST} + {2674657800 37800 1 CST} + {2690382600 34200 0 CST} + {2706107400 37800 1 CST} + {2721832200 34200 0 CST} + {2737557000 37800 1 CST} + {2753281800 34200 0 CST} + {2769611400 37800 1 CST} + {2785336200 34200 0 CST} + {2801061000 37800 1 CST} + {2816785800 34200 0 CST} + {2832510600 37800 1 CST} + {2848235400 34200 0 CST} + {2863960200 37800 1 CST} + {2879685000 34200 0 CST} + {2895409800 37800 1 CST} + {2911134600 34200 0 CST} + {2926859400 37800 1 CST} + {2942584200 34200 0 CST} + {2958913800 37800 1 CST} + {2974638600 34200 0 CST} + {2990363400 37800 1 CST} + {3006088200 34200 0 CST} + {3021813000 37800 1 CST} + {3037537800 34200 0 CST} + {3053262600 37800 1 CST} + {3068987400 34200 0 CST} + {3084712200 37800 1 CST} + {3100437000 34200 0 CST} + {3116766600 37800 1 CST} + {3132491400 34200 0 CST} + {3148216200 37800 1 CST} + {3163941000 34200 0 CST} + {3179665800 37800 1 CST} + {3195390600 34200 0 CST} + {3211115400 37800 1 CST} + {3226840200 34200 0 CST} + {3242565000 37800 1 CST} + {3258289800 34200 0 CST} + {3274014600 37800 1 CST} + {3289739400 34200 0 CST} + {3306069000 37800 1 CST} + {3321793800 34200 0 CST} + {3337518600 37800 1 CST} + {3353243400 34200 0 CST} + {3368968200 37800 1 CST} + {3384693000 34200 0 CST} + {3400417800 37800 1 CST} + {3416142600 34200 0 CST} + {3431867400 37800 1 CST} + {3447592200 34200 0 CST} + {3463317000 37800 1 CST} + {3479646600 34200 0 CST} + {3495371400 37800 1 CST} + {3511096200 34200 0 CST} + {3526821000 37800 1 CST} + {3542545800 34200 0 CST} + {3558270600 37800 1 CST} + {3573995400 34200 0 CST} + {3589720200 37800 1 CST} + {3605445000 34200 0 CST} + {3621169800 37800 1 CST} + {3636894600 34200 0 CST} + {3653224200 37800 1 CST} + {3668949000 34200 0 CST} + {3684673800 37800 1 CST} + {3700398600 34200 0 CST} + {3716123400 37800 1 CST} + {3731848200 34200 0 CST} + {3747573000 37800 1 CST} + {3763297800 34200 0 CST} + {3779022600 37800 1 CST} + {3794747400 34200 0 CST} + {3810472200 37800 1 CST} + {3826197000 34200 0 CST} + {3842526600 37800 1 CST} + {3858251400 34200 0 CST} + {3873976200 37800 1 CST} + {3889701000 34200 0 CST} + {3905425800 37800 1 CST} + {3921150600 34200 0 CST} + {3936875400 37800 1 CST} + {3952600200 34200 0 CST} + {3968325000 37800 1 CST} + {3984049800 34200 0 CST} + {4000379400 37800 1 CST} + {4016104200 34200 0 CST} + {4031829000 37800 1 CST} + {4047553800 34200 0 CST} + {4063278600 37800 1 CST} + {4079003400 34200 0 CST} + {4094728200 37800 1 CST} +} diff --git a/library/tzdata/Australia/Brisbane b/library/tzdata/Australia/Brisbane index dd0a57f..fe6d154 100644 --- a/library/tzdata/Australia/Brisbane +++ b/library/tzdata/Australia/Brisbane @@ -1,23 +1,23 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Brisbane) { - {-9223372036854775808 36728 0 LMT} - {-2366791928 36000 0 EST} - {-1672567140 39600 1 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {31500000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {625593600 39600 1 EST} - {636480000 36000 0 EST} - {657043200 39600 1 EST} - {667929600 36000 0 EST} - {688492800 39600 1 EST} - {699379200 36000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Brisbane) { + {-9223372036854775808 36728 0 LMT} + {-2366791928 36000 0 EST} + {-1672567140 39600 1 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {31500000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {625593600 39600 1 EST} + {636480000 36000 0 EST} + {657043200 39600 1 EST} + {667929600 36000 0 EST} + {688492800 39600 1 EST} + {699379200 36000 0 EST} +} diff --git a/library/tzdata/Australia/Broken_Hill b/library/tzdata/Australia/Broken_Hill index 013859b..35cbb7e 100644 --- a/library/tzdata/Australia/Broken_Hill +++ b/library/tzdata/Australia/Broken_Hill @@ -1,275 +1,275 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Broken_Hill) { - {-9223372036854775808 33948 0 LMT} - {-2364110748 36000 0 EST} - {-2314951200 32400 0 CST} - {-2230189200 34200 0 CST} - {-1672565340 37800 1 CST} - {-1665390600 34200 0 CST} - {-883639800 37800 1 CST} - {-876126600 34200 0 CST} - {-860398200 37800 1 CST} - {-844677000 34200 0 CST} - {-828343800 37800 1 CST} - {-813227400 34200 0 CST} - {31501800 34200 0 CST} - {57688200 37800 1 CST} - {67969800 34200 0 CST} - {89137800 37800 1 CST} - {100024200 34200 0 CST} - {120587400 37800 1 CST} - {131473800 34200 0 CST} - {152037000 37800 1 CST} - {162923400 34200 0 CST} - {183486600 37800 1 CST} - {194977800 34200 0 CST} - {215541000 37800 1 CST} - {226427400 34200 0 CST} - {246990600 37800 1 CST} - {257877000 34200 0 CST} - {278440200 37800 1 CST} - {289326600 34200 0 CST} - {309889800 37800 1 CST} - {320776200 34200 0 CST} - {341339400 37800 1 CST} - {352225800 34200 0 CST} - {372789000 37800 1 CST} - {386699400 34200 0 CST} - {404843400 37800 1 CST} - {415729800 34200 0 CST} - {436293000 37800 1 CST} - {447179400 34200 0 CST} - {467742600 37800 1 CST} - {478629000 34200 0 CST} - {499192200 37800 1 CST} - {511288200 34200 0 CST} - {530037000 37800 1 CST} - {542737800 34200 0 CST} - {562091400 37800 1 CST} - {574792200 34200 0 CST} - {594145800 37800 1 CST} - {606241800 34200 0 CST} - {625595400 37800 1 CST} - {636481800 34200 0 CST} - {657045000 37800 1 CST} - {667931400 34200 0 CST} - {688494600 37800 1 CST} - {699381000 34200 0 CST} - {719944200 37800 1 CST} - {731435400 34200 0 CST} - {751998600 37800 1 CST} - {762885000 34200 0 CST} - {783448200 37800 1 CST} - {794334600 34200 0 CST} - {814897800 37800 1 CST} - {828203400 34200 0 CST} - {846347400 37800 1 CST} - {859653000 34200 0 CST} - {877797000 37800 1 CST} - {891102600 34200 0 CST} - {909246600 37800 1 CST} - {922552200 34200 0 CST} - {941301000 37800 1 CST} - {946647000 37800 0 CST} - {954001800 34200 0 CST} - {972750600 37800 1 CST} - {985451400 34200 0 CST} - {1004200200 37800 1 CST} - {1017505800 34200 0 CST} - {1035649800 37800 1 CST} - {1048955400 34200 0 CST} - {1067099400 37800 1 CST} - {1080405000 34200 0 CST} - {1099153800 37800 1 CST} - {1111854600 34200 0 CST} - {1130603400 37800 1 CST} - {1143909000 34200 0 CST} - {1162053000 37800 1 CST} - {1174753800 34200 0 CST} - {1193502600 37800 1 CST} - {1207413000 34200 0 CST} - {1223137800 37800 1 CST} - {1238862600 34200 0 CST} - {1254587400 37800 1 CST} - {1270312200 34200 0 CST} - {1286037000 37800 1 CST} - {1301761800 34200 0 CST} - {1317486600 37800 1 CST} - {1333211400 34200 0 CST} - {1349541000 37800 1 CST} - {1365265800 34200 0 CST} - {1380990600 37800 1 CST} - {1396715400 34200 0 CST} - {1412440200 37800 1 CST} - {1428165000 34200 0 CST} - {1443889800 37800 1 CST} - {1459614600 34200 0 CST} - {1475339400 37800 1 CST} - {1491064200 34200 0 CST} - {1506789000 37800 1 CST} - {1522513800 34200 0 CST} - {1538843400 37800 1 CST} - {1554568200 34200 0 CST} - {1570293000 37800 1 CST} - {1586017800 34200 0 CST} - {1601742600 37800 1 CST} - {1617467400 34200 0 CST} - {1633192200 37800 1 CST} - {1648917000 34200 0 CST} - {1664641800 37800 1 CST} - {1680366600 34200 0 CST} - {1696091400 37800 1 CST} - {1712421000 34200 0 CST} - {1728145800 37800 1 CST} - {1743870600 34200 0 CST} - {1759595400 37800 1 CST} - {1775320200 34200 0 CST} - {1791045000 37800 1 CST} - {1806769800 34200 0 CST} - {1822494600 37800 1 CST} - {1838219400 34200 0 CST} - {1853944200 37800 1 CST} - {1869669000 34200 0 CST} - {1885998600 37800 1 CST} - {1901723400 34200 0 CST} - {1917448200 37800 1 CST} - {1933173000 34200 0 CST} - {1948897800 37800 1 CST} - {1964622600 34200 0 CST} - {1980347400 37800 1 CST} - {1996072200 34200 0 CST} - {2011797000 37800 1 CST} - {2027521800 34200 0 CST} - {2043246600 37800 1 CST} - {2058971400 34200 0 CST} - {2075301000 37800 1 CST} - {2091025800 34200 0 CST} - {2106750600 37800 1 CST} - {2122475400 34200 0 CST} - {2138200200 37800 1 CST} - {2153925000 34200 0 CST} - {2169649800 37800 1 CST} - {2185374600 34200 0 CST} - {2201099400 37800 1 CST} - {2216824200 34200 0 CST} - {2233153800 37800 1 CST} - {2248878600 34200 0 CST} - {2264603400 37800 1 CST} - {2280328200 34200 0 CST} - {2296053000 37800 1 CST} - {2311777800 34200 0 CST} - {2327502600 37800 1 CST} - {2343227400 34200 0 CST} - {2358952200 37800 1 CST} - {2374677000 34200 0 CST} - {2390401800 37800 1 CST} - {2406126600 34200 0 CST} - {2422456200 37800 1 CST} - {2438181000 34200 0 CST} - {2453905800 37800 1 CST} - {2469630600 34200 0 CST} - {2485355400 37800 1 CST} - {2501080200 34200 0 CST} - {2516805000 37800 1 CST} - {2532529800 34200 0 CST} - {2548254600 37800 1 CST} - {2563979400 34200 0 CST} - {2579704200 37800 1 CST} - {2596033800 34200 0 CST} - {2611758600 37800 1 CST} - {2627483400 34200 0 CST} - {2643208200 37800 1 CST} - {2658933000 34200 0 CST} - {2674657800 37800 1 CST} - {2690382600 34200 0 CST} - {2706107400 37800 1 CST} - {2721832200 34200 0 CST} - {2737557000 37800 1 CST} - {2753281800 34200 0 CST} - {2769611400 37800 1 CST} - {2785336200 34200 0 CST} - {2801061000 37800 1 CST} - {2816785800 34200 0 CST} - {2832510600 37800 1 CST} - {2848235400 34200 0 CST} - {2863960200 37800 1 CST} - {2879685000 34200 0 CST} - {2895409800 37800 1 CST} - {2911134600 34200 0 CST} - {2926859400 37800 1 CST} - {2942584200 34200 0 CST} - {2958913800 37800 1 CST} - {2974638600 34200 0 CST} - {2990363400 37800 1 CST} - {3006088200 34200 0 CST} - {3021813000 37800 1 CST} - {3037537800 34200 0 CST} - {3053262600 37800 1 CST} - {3068987400 34200 0 CST} - {3084712200 37800 1 CST} - {3100437000 34200 0 CST} - {3116766600 37800 1 CST} - {3132491400 34200 0 CST} - {3148216200 37800 1 CST} - {3163941000 34200 0 CST} - {3179665800 37800 1 CST} - {3195390600 34200 0 CST} - {3211115400 37800 1 CST} - {3226840200 34200 0 CST} - {3242565000 37800 1 CST} - {3258289800 34200 0 CST} - {3274014600 37800 1 CST} - {3289739400 34200 0 CST} - {3306069000 37800 1 CST} - {3321793800 34200 0 CST} - {3337518600 37800 1 CST} - {3353243400 34200 0 CST} - {3368968200 37800 1 CST} - {3384693000 34200 0 CST} - {3400417800 37800 1 CST} - {3416142600 34200 0 CST} - {3431867400 37800 1 CST} - {3447592200 34200 0 CST} - {3463317000 37800 1 CST} - {3479646600 34200 0 CST} - {3495371400 37800 1 CST} - {3511096200 34200 0 CST} - {3526821000 37800 1 CST} - {3542545800 34200 0 CST} - {3558270600 37800 1 CST} - {3573995400 34200 0 CST} - {3589720200 37800 1 CST} - {3605445000 34200 0 CST} - {3621169800 37800 1 CST} - {3636894600 34200 0 CST} - {3653224200 37800 1 CST} - {3668949000 34200 0 CST} - {3684673800 37800 1 CST} - {3700398600 34200 0 CST} - {3716123400 37800 1 CST} - {3731848200 34200 0 CST} - {3747573000 37800 1 CST} - {3763297800 34200 0 CST} - {3779022600 37800 1 CST} - {3794747400 34200 0 CST} - {3810472200 37800 1 CST} - {3826197000 34200 0 CST} - {3842526600 37800 1 CST} - {3858251400 34200 0 CST} - {3873976200 37800 1 CST} - {3889701000 34200 0 CST} - {3905425800 37800 1 CST} - {3921150600 34200 0 CST} - {3936875400 37800 1 CST} - {3952600200 34200 0 CST} - {3968325000 37800 1 CST} - {3984049800 34200 0 CST} - {4000379400 37800 1 CST} - {4016104200 34200 0 CST} - {4031829000 37800 1 CST} - {4047553800 34200 0 CST} - {4063278600 37800 1 CST} - {4079003400 34200 0 CST} - {4094728200 37800 1 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Broken_Hill) { + {-9223372036854775808 33948 0 LMT} + {-2364110748 36000 0 EST} + {-2314951200 32400 0 CST} + {-2230189200 34200 0 CST} + {-1672565340 37800 1 CST} + {-1665390600 34200 0 CST} + {-883639800 37800 1 CST} + {-876126600 34200 0 CST} + {-860398200 37800 1 CST} + {-844677000 34200 0 CST} + {-828343800 37800 1 CST} + {-813227400 34200 0 CST} + {31501800 34200 0 CST} + {57688200 37800 1 CST} + {67969800 34200 0 CST} + {89137800 37800 1 CST} + {100024200 34200 0 CST} + {120587400 37800 1 CST} + {131473800 34200 0 CST} + {152037000 37800 1 CST} + {162923400 34200 0 CST} + {183486600 37800 1 CST} + {194977800 34200 0 CST} + {215541000 37800 1 CST} + {226427400 34200 0 CST} + {246990600 37800 1 CST} + {257877000 34200 0 CST} + {278440200 37800 1 CST} + {289326600 34200 0 CST} + {309889800 37800 1 CST} + {320776200 34200 0 CST} + {341339400 37800 1 CST} + {352225800 34200 0 CST} + {372789000 37800 1 CST} + {386699400 34200 0 CST} + {404843400 37800 1 CST} + {415729800 34200 0 CST} + {436293000 37800 1 CST} + {447179400 34200 0 CST} + {467742600 37800 1 CST} + {478629000 34200 0 CST} + {499192200 37800 1 CST} + {511288200 34200 0 CST} + {530037000 37800 1 CST} + {542737800 34200 0 CST} + {562091400 37800 1 CST} + {574792200 34200 0 CST} + {594145800 37800 1 CST} + {606241800 34200 0 CST} + {625595400 37800 1 CST} + {636481800 34200 0 CST} + {657045000 37800 1 CST} + {667931400 34200 0 CST} + {688494600 37800 1 CST} + {699381000 34200 0 CST} + {719944200 37800 1 CST} + {731435400 34200 0 CST} + {751998600 37800 1 CST} + {762885000 34200 0 CST} + {783448200 37800 1 CST} + {794334600 34200 0 CST} + {814897800 37800 1 CST} + {828203400 34200 0 CST} + {846347400 37800 1 CST} + {859653000 34200 0 CST} + {877797000 37800 1 CST} + {891102600 34200 0 CST} + {909246600 37800 1 CST} + {922552200 34200 0 CST} + {941301000 37800 1 CST} + {946647000 37800 0 CST} + {954001800 34200 0 CST} + {972750600 37800 1 CST} + {985451400 34200 0 CST} + {1004200200 37800 1 CST} + {1017505800 34200 0 CST} + {1035649800 37800 1 CST} + {1048955400 34200 0 CST} + {1067099400 37800 1 CST} + {1080405000 34200 0 CST} + {1099153800 37800 1 CST} + {1111854600 34200 0 CST} + {1130603400 37800 1 CST} + {1143909000 34200 0 CST} + {1162053000 37800 1 CST} + {1174753800 34200 0 CST} + {1193502600 37800 1 CST} + {1207413000 34200 0 CST} + {1223137800 37800 1 CST} + {1238862600 34200 0 CST} + {1254587400 37800 1 CST} + {1270312200 34200 0 CST} + {1286037000 37800 1 CST} + {1301761800 34200 0 CST} + {1317486600 37800 1 CST} + {1333211400 34200 0 CST} + {1349541000 37800 1 CST} + {1365265800 34200 0 CST} + {1380990600 37800 1 CST} + {1396715400 34200 0 CST} + {1412440200 37800 1 CST} + {1428165000 34200 0 CST} + {1443889800 37800 1 CST} + {1459614600 34200 0 CST} + {1475339400 37800 1 CST} + {1491064200 34200 0 CST} + {1506789000 37800 1 CST} + {1522513800 34200 0 CST} + {1538843400 37800 1 CST} + {1554568200 34200 0 CST} + {1570293000 37800 1 CST} + {1586017800 34200 0 CST} + {1601742600 37800 1 CST} + {1617467400 34200 0 CST} + {1633192200 37800 1 CST} + {1648917000 34200 0 CST} + {1664641800 37800 1 CST} + {1680366600 34200 0 CST} + {1696091400 37800 1 CST} + {1712421000 34200 0 CST} + {1728145800 37800 1 CST} + {1743870600 34200 0 CST} + {1759595400 37800 1 CST} + {1775320200 34200 0 CST} + {1791045000 37800 1 CST} + {1806769800 34200 0 CST} + {1822494600 37800 1 CST} + {1838219400 34200 0 CST} + {1853944200 37800 1 CST} + {1869669000 34200 0 CST} + {1885998600 37800 1 CST} + {1901723400 34200 0 CST} + {1917448200 37800 1 CST} + {1933173000 34200 0 CST} + {1948897800 37800 1 CST} + {1964622600 34200 0 CST} + {1980347400 37800 1 CST} + {1996072200 34200 0 CST} + {2011797000 37800 1 CST} + {2027521800 34200 0 CST} + {2043246600 37800 1 CST} + {2058971400 34200 0 CST} + {2075301000 37800 1 CST} + {2091025800 34200 0 CST} + {2106750600 37800 1 CST} + {2122475400 34200 0 CST} + {2138200200 37800 1 CST} + {2153925000 34200 0 CST} + {2169649800 37800 1 CST} + {2185374600 34200 0 CST} + {2201099400 37800 1 CST} + {2216824200 34200 0 CST} + {2233153800 37800 1 CST} + {2248878600 34200 0 CST} + {2264603400 37800 1 CST} + {2280328200 34200 0 CST} + {2296053000 37800 1 CST} + {2311777800 34200 0 CST} + {2327502600 37800 1 CST} + {2343227400 34200 0 CST} + {2358952200 37800 1 CST} + {2374677000 34200 0 CST} + {2390401800 37800 1 CST} + {2406126600 34200 0 CST} + {2422456200 37800 1 CST} + {2438181000 34200 0 CST} + {2453905800 37800 1 CST} + {2469630600 34200 0 CST} + {2485355400 37800 1 CST} + {2501080200 34200 0 CST} + {2516805000 37800 1 CST} + {2532529800 34200 0 CST} + {2548254600 37800 1 CST} + {2563979400 34200 0 CST} + {2579704200 37800 1 CST} + {2596033800 34200 0 CST} + {2611758600 37800 1 CST} + {2627483400 34200 0 CST} + {2643208200 37800 1 CST} + {2658933000 34200 0 CST} + {2674657800 37800 1 CST} + {2690382600 34200 0 CST} + {2706107400 37800 1 CST} + {2721832200 34200 0 CST} + {2737557000 37800 1 CST} + {2753281800 34200 0 CST} + {2769611400 37800 1 CST} + {2785336200 34200 0 CST} + {2801061000 37800 1 CST} + {2816785800 34200 0 CST} + {2832510600 37800 1 CST} + {2848235400 34200 0 CST} + {2863960200 37800 1 CST} + {2879685000 34200 0 CST} + {2895409800 37800 1 CST} + {2911134600 34200 0 CST} + {2926859400 37800 1 CST} + {2942584200 34200 0 CST} + {2958913800 37800 1 CST} + {2974638600 34200 0 CST} + {2990363400 37800 1 CST} + {3006088200 34200 0 CST} + {3021813000 37800 1 CST} + {3037537800 34200 0 CST} + {3053262600 37800 1 CST} + {3068987400 34200 0 CST} + {3084712200 37800 1 CST} + {3100437000 34200 0 CST} + {3116766600 37800 1 CST} + {3132491400 34200 0 CST} + {3148216200 37800 1 CST} + {3163941000 34200 0 CST} + {3179665800 37800 1 CST} + {3195390600 34200 0 CST} + {3211115400 37800 1 CST} + {3226840200 34200 0 CST} + {3242565000 37800 1 CST} + {3258289800 34200 0 CST} + {3274014600 37800 1 CST} + {3289739400 34200 0 CST} + {3306069000 37800 1 CST} + {3321793800 34200 0 CST} + {3337518600 37800 1 CST} + {3353243400 34200 0 CST} + {3368968200 37800 1 CST} + {3384693000 34200 0 CST} + {3400417800 37800 1 CST} + {3416142600 34200 0 CST} + {3431867400 37800 1 CST} + {3447592200 34200 0 CST} + {3463317000 37800 1 CST} + {3479646600 34200 0 CST} + {3495371400 37800 1 CST} + {3511096200 34200 0 CST} + {3526821000 37800 1 CST} + {3542545800 34200 0 CST} + {3558270600 37800 1 CST} + {3573995400 34200 0 CST} + {3589720200 37800 1 CST} + {3605445000 34200 0 CST} + {3621169800 37800 1 CST} + {3636894600 34200 0 CST} + {3653224200 37800 1 CST} + {3668949000 34200 0 CST} + {3684673800 37800 1 CST} + {3700398600 34200 0 CST} + {3716123400 37800 1 CST} + {3731848200 34200 0 CST} + {3747573000 37800 1 CST} + {3763297800 34200 0 CST} + {3779022600 37800 1 CST} + {3794747400 34200 0 CST} + {3810472200 37800 1 CST} + {3826197000 34200 0 CST} + {3842526600 37800 1 CST} + {3858251400 34200 0 CST} + {3873976200 37800 1 CST} + {3889701000 34200 0 CST} + {3905425800 37800 1 CST} + {3921150600 34200 0 CST} + {3936875400 37800 1 CST} + {3952600200 34200 0 CST} + {3968325000 37800 1 CST} + {3984049800 34200 0 CST} + {4000379400 37800 1 CST} + {4016104200 34200 0 CST} + {4031829000 37800 1 CST} + {4047553800 34200 0 CST} + {4063278600 37800 1 CST} + {4079003400 34200 0 CST} + {4094728200 37800 1 CST} +} diff --git a/library/tzdata/Australia/Canberra b/library/tzdata/Australia/Canberra index b0fb475..0b7b9ca 100644 --- a/library/tzdata/Australia/Canberra +++ b/library/tzdata/Australia/Canberra @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Sydney)]} { - LoadTimeZoneFile Australia/Sydney -} -set TZData(:Australia/Canberra) $TZData(:Australia/Sydney) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Sydney)]} { + LoadTimeZoneFile Australia/Sydney +} +set TZData(:Australia/Canberra) $TZData(:Australia/Sydney) diff --git a/library/tzdata/Australia/Currie b/library/tzdata/Australia/Currie index c949bc4..ae6d1f0 100644 --- a/library/tzdata/Australia/Currie +++ b/library/tzdata/Australia/Currie @@ -1,273 +1,273 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Currie) { - {-9223372036854775808 34528 0 LMT} - {-2345794528 36000 0 EST} - {-1680508800 39600 1 EST} - {-1669892400 39600 0 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {47138400 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {89136000 39600 1 EST} - {100022400 36000 0 EST} - {120585600 39600 1 EST} - {131472000 36000 0 EST} - {152035200 39600 1 EST} - {162921600 36000 0 EST} - {183484800 39600 1 EST} - {194976000 36000 0 EST} - {215539200 39600 1 EST} - {226425600 36000 0 EST} - {246988800 39600 1 EST} - {257875200 36000 0 EST} - {278438400 39600 1 EST} - {289324800 36000 0 EST} - {309888000 39600 1 EST} - {320774400 36000 0 EST} - {341337600 39600 1 EST} - {352224000 36000 0 EST} - {372787200 39600 1 EST} - {386092800 36000 0 EST} - {404841600 39600 1 EST} - {417542400 36000 0 EST} - {436291200 39600 1 EST} - {447177600 36000 0 EST} - {467740800 39600 1 EST} - {478627200 36000 0 EST} - {499190400 39600 1 EST} - {510076800 36000 0 EST} - {530035200 39600 1 EST} - {542736000 36000 0 EST} - {562089600 39600 1 EST} - {574790400 36000 0 EST} - {594144000 39600 1 EST} - {606240000 36000 0 EST} - {625593600 39600 1 EST} - {637689600 36000 0 EST} - {657043200 39600 1 EST} - {670348800 36000 0 EST} - {686678400 39600 1 EST} - {701798400 36000 0 EST} - {718128000 39600 1 EST} - {733248000 36000 0 EST} - {749577600 39600 1 EST} - {764697600 36000 0 EST} - {781027200 39600 1 EST} - {796147200 36000 0 EST} - {812476800 39600 1 EST} - {828201600 36000 0 EST} - {844531200 39600 1 EST} - {859651200 36000 0 EST} - {875980800 39600 1 EST} - {891100800 36000 0 EST} - {907430400 39600 1 EST} - {922550400 36000 0 EST} - {938880000 39600 1 EST} - {954000000 36000 0 EST} - {967305600 39600 1 EST} - {985449600 36000 0 EST} - {1002384000 39600 1 EST} - {1017504000 36000 0 EST} - {1033833600 39600 1 EST} - {1048953600 36000 0 EST} - {1065283200 39600 1 EST} - {1080403200 36000 0 EST} - {1096732800 39600 1 EST} - {1111852800 36000 0 EST} - {1128182400 39600 1 EST} - {1143907200 36000 0 EST} - {1159632000 39600 1 EST} - {1174752000 36000 0 EST} - {1191686400 39600 1 EST} - {1207411200 36000 0 EST} - {1223136000 39600 1 EST} - {1238860800 36000 0 EST} - {1254585600 39600 1 EST} - {1270310400 36000 0 EST} - {1286035200 39600 1 EST} - {1301760000 36000 0 EST} - {1317484800 39600 1 EST} - {1333209600 36000 0 EST} - {1349539200 39600 1 EST} - {1365264000 36000 0 EST} - {1380988800 39600 1 EST} - {1396713600 36000 0 EST} - {1412438400 39600 1 EST} - {1428163200 36000 0 EST} - {1443888000 39600 1 EST} - {1459612800 36000 0 EST} - {1475337600 39600 1 EST} - {1491062400 36000 0 EST} - {1506787200 39600 1 EST} - {1522512000 36000 0 EST} - {1538841600 39600 1 EST} - {1554566400 36000 0 EST} - {1570291200 39600 1 EST} - {1586016000 36000 0 EST} - {1601740800 39600 1 EST} - {1617465600 36000 0 EST} - {1633190400 39600 1 EST} - {1648915200 36000 0 EST} - {1664640000 39600 1 EST} - {1680364800 36000 0 EST} - {1696089600 39600 1 EST} - {1712419200 36000 0 EST} - {1728144000 39600 1 EST} - {1743868800 36000 0 EST} - {1759593600 39600 1 EST} - {1775318400 36000 0 EST} - {1791043200 39600 1 EST} - {1806768000 36000 0 EST} - {1822492800 39600 1 EST} - {1838217600 36000 0 EST} - {1853942400 39600 1 EST} - {1869667200 36000 0 EST} - {1885996800 39600 1 EST} - {1901721600 36000 0 EST} - {1917446400 39600 1 EST} - {1933171200 36000 0 EST} - {1948896000 39600 1 EST} - {1964620800 36000 0 EST} - {1980345600 39600 1 EST} - {1996070400 36000 0 EST} - {2011795200 39600 1 EST} - {2027520000 36000 0 EST} - {2043244800 39600 1 EST} - {2058969600 36000 0 EST} - {2075299200 39600 1 EST} - {2091024000 36000 0 EST} - {2106748800 39600 1 EST} - {2122473600 36000 0 EST} - {2138198400 39600 1 EST} - {2153923200 36000 0 EST} - {2169648000 39600 1 EST} - {2185372800 36000 0 EST} - {2201097600 39600 1 EST} - {2216822400 36000 0 EST} - {2233152000 39600 1 EST} - {2248876800 36000 0 EST} - {2264601600 39600 1 EST} - {2280326400 36000 0 EST} - {2296051200 39600 1 EST} - {2311776000 36000 0 EST} - {2327500800 39600 1 EST} - {2343225600 36000 0 EST} - {2358950400 39600 1 EST} - {2374675200 36000 0 EST} - {2390400000 39600 1 EST} - {2406124800 36000 0 EST} - {2422454400 39600 1 EST} - {2438179200 36000 0 EST} - {2453904000 39600 1 EST} - {2469628800 36000 0 EST} - {2485353600 39600 1 EST} - {2501078400 36000 0 EST} - {2516803200 39600 1 EST} - {2532528000 36000 0 EST} - {2548252800 39600 1 EST} - {2563977600 36000 0 EST} - {2579702400 39600 1 EST} - {2596032000 36000 0 EST} - {2611756800 39600 1 EST} - {2627481600 36000 0 EST} - {2643206400 39600 1 EST} - {2658931200 36000 0 EST} - {2674656000 39600 1 EST} - {2690380800 36000 0 EST} - {2706105600 39600 1 EST} - {2721830400 36000 0 EST} - {2737555200 39600 1 EST} - {2753280000 36000 0 EST} - {2769609600 39600 1 EST} - {2785334400 36000 0 EST} - {2801059200 39600 1 EST} - {2816784000 36000 0 EST} - {2832508800 39600 1 EST} - {2848233600 36000 0 EST} - {2863958400 39600 1 EST} - {2879683200 36000 0 EST} - {2895408000 39600 1 EST} - {2911132800 36000 0 EST} - {2926857600 39600 1 EST} - {2942582400 36000 0 EST} - {2958912000 39600 1 EST} - {2974636800 36000 0 EST} - {2990361600 39600 1 EST} - {3006086400 36000 0 EST} - {3021811200 39600 1 EST} - {3037536000 36000 0 EST} - {3053260800 39600 1 EST} - {3068985600 36000 0 EST} - {3084710400 39600 1 EST} - {3100435200 36000 0 EST} - {3116764800 39600 1 EST} - {3132489600 36000 0 EST} - {3148214400 39600 1 EST} - {3163939200 36000 0 EST} - {3179664000 39600 1 EST} - {3195388800 36000 0 EST} - {3211113600 39600 1 EST} - {3226838400 36000 0 EST} - {3242563200 39600 1 EST} - {3258288000 36000 0 EST} - {3274012800 39600 1 EST} - {3289737600 36000 0 EST} - {3306067200 39600 1 EST} - {3321792000 36000 0 EST} - {3337516800 39600 1 EST} - {3353241600 36000 0 EST} - {3368966400 39600 1 EST} - {3384691200 36000 0 EST} - {3400416000 39600 1 EST} - {3416140800 36000 0 EST} - {3431865600 39600 1 EST} - {3447590400 36000 0 EST} - {3463315200 39600 1 EST} - {3479644800 36000 0 EST} - {3495369600 39600 1 EST} - {3511094400 36000 0 EST} - {3526819200 39600 1 EST} - {3542544000 36000 0 EST} - {3558268800 39600 1 EST} - {3573993600 36000 0 EST} - {3589718400 39600 1 EST} - {3605443200 36000 0 EST} - {3621168000 39600 1 EST} - {3636892800 36000 0 EST} - {3653222400 39600 1 EST} - {3668947200 36000 0 EST} - {3684672000 39600 1 EST} - {3700396800 36000 0 EST} - {3716121600 39600 1 EST} - {3731846400 36000 0 EST} - {3747571200 39600 1 EST} - {3763296000 36000 0 EST} - {3779020800 39600 1 EST} - {3794745600 36000 0 EST} - {3810470400 39600 1 EST} - {3826195200 36000 0 EST} - {3842524800 39600 1 EST} - {3858249600 36000 0 EST} - {3873974400 39600 1 EST} - {3889699200 36000 0 EST} - {3905424000 39600 1 EST} - {3921148800 36000 0 EST} - {3936873600 39600 1 EST} - {3952598400 36000 0 EST} - {3968323200 39600 1 EST} - {3984048000 36000 0 EST} - {4000377600 39600 1 EST} - {4016102400 36000 0 EST} - {4031827200 39600 1 EST} - {4047552000 36000 0 EST} - {4063276800 39600 1 EST} - {4079001600 36000 0 EST} - {4094726400 39600 1 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Currie) { + {-9223372036854775808 34528 0 LMT} + {-2345794528 36000 0 EST} + {-1680508800 39600 1 EST} + {-1669892400 39600 0 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {47138400 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {89136000 39600 1 EST} + {100022400 36000 0 EST} + {120585600 39600 1 EST} + {131472000 36000 0 EST} + {152035200 39600 1 EST} + {162921600 36000 0 EST} + {183484800 39600 1 EST} + {194976000 36000 0 EST} + {215539200 39600 1 EST} + {226425600 36000 0 EST} + {246988800 39600 1 EST} + {257875200 36000 0 EST} + {278438400 39600 1 EST} + {289324800 36000 0 EST} + {309888000 39600 1 EST} + {320774400 36000 0 EST} + {341337600 39600 1 EST} + {352224000 36000 0 EST} + {372787200 39600 1 EST} + {386092800 36000 0 EST} + {404841600 39600 1 EST} + {417542400 36000 0 EST} + {436291200 39600 1 EST} + {447177600 36000 0 EST} + {467740800 39600 1 EST} + {478627200 36000 0 EST} + {499190400 39600 1 EST} + {510076800 36000 0 EST} + {530035200 39600 1 EST} + {542736000 36000 0 EST} + {562089600 39600 1 EST} + {574790400 36000 0 EST} + {594144000 39600 1 EST} + {606240000 36000 0 EST} + {625593600 39600 1 EST} + {637689600 36000 0 EST} + {657043200 39600 1 EST} + {670348800 36000 0 EST} + {686678400 39600 1 EST} + {701798400 36000 0 EST} + {718128000 39600 1 EST} + {733248000 36000 0 EST} + {749577600 39600 1 EST} + {764697600 36000 0 EST} + {781027200 39600 1 EST} + {796147200 36000 0 EST} + {812476800 39600 1 EST} + {828201600 36000 0 EST} + {844531200 39600 1 EST} + {859651200 36000 0 EST} + {875980800 39600 1 EST} + {891100800 36000 0 EST} + {907430400 39600 1 EST} + {922550400 36000 0 EST} + {938880000 39600 1 EST} + {954000000 36000 0 EST} + {967305600 39600 1 EST} + {985449600 36000 0 EST} + {1002384000 39600 1 EST} + {1017504000 36000 0 EST} + {1033833600 39600 1 EST} + {1048953600 36000 0 EST} + {1065283200 39600 1 EST} + {1080403200 36000 0 EST} + {1096732800 39600 1 EST} + {1111852800 36000 0 EST} + {1128182400 39600 1 EST} + {1143907200 36000 0 EST} + {1159632000 39600 1 EST} + {1174752000 36000 0 EST} + {1191686400 39600 1 EST} + {1207411200 36000 0 EST} + {1223136000 39600 1 EST} + {1238860800 36000 0 EST} + {1254585600 39600 1 EST} + {1270310400 36000 0 EST} + {1286035200 39600 1 EST} + {1301760000 36000 0 EST} + {1317484800 39600 1 EST} + {1333209600 36000 0 EST} + {1349539200 39600 1 EST} + {1365264000 36000 0 EST} + {1380988800 39600 1 EST} + {1396713600 36000 0 EST} + {1412438400 39600 1 EST} + {1428163200 36000 0 EST} + {1443888000 39600 1 EST} + {1459612800 36000 0 EST} + {1475337600 39600 1 EST} + {1491062400 36000 0 EST} + {1506787200 39600 1 EST} + {1522512000 36000 0 EST} + {1538841600 39600 1 EST} + {1554566400 36000 0 EST} + {1570291200 39600 1 EST} + {1586016000 36000 0 EST} + {1601740800 39600 1 EST} + {1617465600 36000 0 EST} + {1633190400 39600 1 EST} + {1648915200 36000 0 EST} + {1664640000 39600 1 EST} + {1680364800 36000 0 EST} + {1696089600 39600 1 EST} + {1712419200 36000 0 EST} + {1728144000 39600 1 EST} + {1743868800 36000 0 EST} + {1759593600 39600 1 EST} + {1775318400 36000 0 EST} + {1791043200 39600 1 EST} + {1806768000 36000 0 EST} + {1822492800 39600 1 EST} + {1838217600 36000 0 EST} + {1853942400 39600 1 EST} + {1869667200 36000 0 EST} + {1885996800 39600 1 EST} + {1901721600 36000 0 EST} + {1917446400 39600 1 EST} + {1933171200 36000 0 EST} + {1948896000 39600 1 EST} + {1964620800 36000 0 EST} + {1980345600 39600 1 EST} + {1996070400 36000 0 EST} + {2011795200 39600 1 EST} + {2027520000 36000 0 EST} + {2043244800 39600 1 EST} + {2058969600 36000 0 EST} + {2075299200 39600 1 EST} + {2091024000 36000 0 EST} + {2106748800 39600 1 EST} + {2122473600 36000 0 EST} + {2138198400 39600 1 EST} + {2153923200 36000 0 EST} + {2169648000 39600 1 EST} + {2185372800 36000 0 EST} + {2201097600 39600 1 EST} + {2216822400 36000 0 EST} + {2233152000 39600 1 EST} + {2248876800 36000 0 EST} + {2264601600 39600 1 EST} + {2280326400 36000 0 EST} + {2296051200 39600 1 EST} + {2311776000 36000 0 EST} + {2327500800 39600 1 EST} + {2343225600 36000 0 EST} + {2358950400 39600 1 EST} + {2374675200 36000 0 EST} + {2390400000 39600 1 EST} + {2406124800 36000 0 EST} + {2422454400 39600 1 EST} + {2438179200 36000 0 EST} + {2453904000 39600 1 EST} + {2469628800 36000 0 EST} + {2485353600 39600 1 EST} + {2501078400 36000 0 EST} + {2516803200 39600 1 EST} + {2532528000 36000 0 EST} + {2548252800 39600 1 EST} + {2563977600 36000 0 EST} + {2579702400 39600 1 EST} + {2596032000 36000 0 EST} + {2611756800 39600 1 EST} + {2627481600 36000 0 EST} + {2643206400 39600 1 EST} + {2658931200 36000 0 EST} + {2674656000 39600 1 EST} + {2690380800 36000 0 EST} + {2706105600 39600 1 EST} + {2721830400 36000 0 EST} + {2737555200 39600 1 EST} + {2753280000 36000 0 EST} + {2769609600 39600 1 EST} + {2785334400 36000 0 EST} + {2801059200 39600 1 EST} + {2816784000 36000 0 EST} + {2832508800 39600 1 EST} + {2848233600 36000 0 EST} + {2863958400 39600 1 EST} + {2879683200 36000 0 EST} + {2895408000 39600 1 EST} + {2911132800 36000 0 EST} + {2926857600 39600 1 EST} + {2942582400 36000 0 EST} + {2958912000 39600 1 EST} + {2974636800 36000 0 EST} + {2990361600 39600 1 EST} + {3006086400 36000 0 EST} + {3021811200 39600 1 EST} + {3037536000 36000 0 EST} + {3053260800 39600 1 EST} + {3068985600 36000 0 EST} + {3084710400 39600 1 EST} + {3100435200 36000 0 EST} + {3116764800 39600 1 EST} + {3132489600 36000 0 EST} + {3148214400 39600 1 EST} + {3163939200 36000 0 EST} + {3179664000 39600 1 EST} + {3195388800 36000 0 EST} + {3211113600 39600 1 EST} + {3226838400 36000 0 EST} + {3242563200 39600 1 EST} + {3258288000 36000 0 EST} + {3274012800 39600 1 EST} + {3289737600 36000 0 EST} + {3306067200 39600 1 EST} + {3321792000 36000 0 EST} + {3337516800 39600 1 EST} + {3353241600 36000 0 EST} + {3368966400 39600 1 EST} + {3384691200 36000 0 EST} + {3400416000 39600 1 EST} + {3416140800 36000 0 EST} + {3431865600 39600 1 EST} + {3447590400 36000 0 EST} + {3463315200 39600 1 EST} + {3479644800 36000 0 EST} + {3495369600 39600 1 EST} + {3511094400 36000 0 EST} + {3526819200 39600 1 EST} + {3542544000 36000 0 EST} + {3558268800 39600 1 EST} + {3573993600 36000 0 EST} + {3589718400 39600 1 EST} + {3605443200 36000 0 EST} + {3621168000 39600 1 EST} + {3636892800 36000 0 EST} + {3653222400 39600 1 EST} + {3668947200 36000 0 EST} + {3684672000 39600 1 EST} + {3700396800 36000 0 EST} + {3716121600 39600 1 EST} + {3731846400 36000 0 EST} + {3747571200 39600 1 EST} + {3763296000 36000 0 EST} + {3779020800 39600 1 EST} + {3794745600 36000 0 EST} + {3810470400 39600 1 EST} + {3826195200 36000 0 EST} + {3842524800 39600 1 EST} + {3858249600 36000 0 EST} + {3873974400 39600 1 EST} + {3889699200 36000 0 EST} + {3905424000 39600 1 EST} + {3921148800 36000 0 EST} + {3936873600 39600 1 EST} + {3952598400 36000 0 EST} + {3968323200 39600 1 EST} + {3984048000 36000 0 EST} + {4000377600 39600 1 EST} + {4016102400 36000 0 EST} + {4031827200 39600 1 EST} + {4047552000 36000 0 EST} + {4063276800 39600 1 EST} + {4079001600 36000 0 EST} + {4094726400 39600 1 EST} +} diff --git a/library/tzdata/Australia/Darwin b/library/tzdata/Australia/Darwin index b5b4bce..9be372d 100644 --- a/library/tzdata/Australia/Darwin +++ b/library/tzdata/Australia/Darwin @@ -1,15 +1,15 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Darwin) { - {-9223372036854775808 31400 0 LMT} - {-2364108200 32400 0 CST} - {-2230189200 34200 0 CST} - {-1672565340 37800 1 CST} - {-1665390600 34200 0 CST} - {-883639800 37800 1 CST} - {-876126600 34200 0 CST} - {-860398200 37800 1 CST} - {-844677000 34200 0 CST} - {-828343800 37800 1 CST} - {-813227400 34200 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Darwin) { + {-9223372036854775808 31400 0 LMT} + {-2364108200 32400 0 CST} + {-2230189200 34200 0 CST} + {-1672565340 37800 1 CST} + {-1665390600 34200 0 CST} + {-883639800 37800 1 CST} + {-876126600 34200 0 CST} + {-860398200 37800 1 CST} + {-844677000 34200 0 CST} + {-828343800 37800 1 CST} + {-813227400 34200 0 CST} +} diff --git a/library/tzdata/Australia/Eucla b/library/tzdata/Australia/Eucla index ec2f760..0f8ed4d 100755 --- a/library/tzdata/Australia/Eucla +++ b/library/tzdata/Australia/Eucla @@ -1,25 +1,25 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Eucla) { - {-9223372036854775808 30928 0 LMT} - {-2337928528 31500 0 CWST} - {-1672562640 35100 1 CWST} - {-1665387900 31500 0 CWST} - {-883637100 35100 1 CWST} - {-876123900 31500 0 CWST} - {-860395500 35100 1 CWST} - {-844674300 31500 0 CWST} - {-836473500 35100 0 CWST} - {152039700 35100 1 CWST} - {162926100 31500 0 CWST} - {436295700 35100 1 CWST} - {447182100 31500 0 CWST} - {690311700 35100 1 CWST} - {699383700 31500 0 CWST} - {1165079700 35100 1 CWST} - {1174756500 31500 0 CWST} - {1193505300 35100 1 CWST} - {1206810900 31500 0 CWST} - {1224954900 35100 1 CWST} - {1238260500 31500 0 CWST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Eucla) { + {-9223372036854775808 30928 0 LMT} + {-2337928528 31500 0 CWST} + {-1672562640 35100 1 CWST} + {-1665387900 31500 0 CWST} + {-883637100 35100 1 CWST} + {-876123900 31500 0 CWST} + {-860395500 35100 1 CWST} + {-844674300 31500 0 CWST} + {-836473500 35100 0 CWST} + {152039700 35100 1 CWST} + {162926100 31500 0 CWST} + {436295700 35100 1 CWST} + {447182100 31500 0 CWST} + {690311700 35100 1 CWST} + {699383700 31500 0 CWST} + {1165079700 35100 1 CWST} + {1174756500 31500 0 CWST} + {1193505300 35100 1 CWST} + {1206810900 31500 0 CWST} + {1224954900 35100 1 CWST} + {1238260500 31500 0 CWST} +} diff --git a/library/tzdata/Australia/Hobart b/library/tzdata/Australia/Hobart index 220be55..8f27110 100644 --- a/library/tzdata/Australia/Hobart +++ b/library/tzdata/Australia/Hobart @@ -1,281 +1,281 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Hobart) { - {-9223372036854775808 35356 0 LMT} - {-2345795356 36000 0 EST} - {-1680508800 39600 1 EST} - {-1669892400 39600 0 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {-94730400 36000 0 EST} - {-71136000 39600 1 EST} - {-55411200 36000 0 EST} - {-37267200 39600 1 EST} - {-25776000 36000 0 EST} - {-5817600 39600 1 EST} - {5673600 36000 0 EST} - {25632000 39600 1 EST} - {37728000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {89136000 39600 1 EST} - {100022400 36000 0 EST} - {120585600 39600 1 EST} - {131472000 36000 0 EST} - {152035200 39600 1 EST} - {162921600 36000 0 EST} - {183484800 39600 1 EST} - {194976000 36000 0 EST} - {215539200 39600 1 EST} - {226425600 36000 0 EST} - {246988800 39600 1 EST} - {257875200 36000 0 EST} - {278438400 39600 1 EST} - {289324800 36000 0 EST} - {309888000 39600 1 EST} - {320774400 36000 0 EST} - {341337600 39600 1 EST} - {352224000 36000 0 EST} - {372787200 39600 1 EST} - {386092800 36000 0 EST} - {404841600 39600 1 EST} - {417542400 36000 0 EST} - {436291200 39600 1 EST} - {447177600 36000 0 EST} - {467740800 39600 1 EST} - {478627200 36000 0 EST} - {499190400 39600 1 EST} - {510076800 36000 0 EST} - {530035200 39600 1 EST} - {542736000 36000 0 EST} - {562089600 39600 1 EST} - {574790400 36000 0 EST} - {594144000 39600 1 EST} - {606240000 36000 0 EST} - {625593600 39600 1 EST} - {637689600 36000 0 EST} - {657043200 39600 1 EST} - {670348800 36000 0 EST} - {686678400 39600 1 EST} - {701798400 36000 0 EST} - {718128000 39600 1 EST} - {733248000 36000 0 EST} - {749577600 39600 1 EST} - {764697600 36000 0 EST} - {781027200 39600 1 EST} - {796147200 36000 0 EST} - {812476800 39600 1 EST} - {828201600 36000 0 EST} - {844531200 39600 1 EST} - {859651200 36000 0 EST} - {875980800 39600 1 EST} - {891100800 36000 0 EST} - {907430400 39600 1 EST} - {922550400 36000 0 EST} - {938880000 39600 1 EST} - {954000000 36000 0 EST} - {967305600 39600 1 EST} - {985449600 36000 0 EST} - {1002384000 39600 1 EST} - {1017504000 36000 0 EST} - {1033833600 39600 1 EST} - {1048953600 36000 0 EST} - {1065283200 39600 1 EST} - {1080403200 36000 0 EST} - {1096732800 39600 1 EST} - {1111852800 36000 0 EST} - {1128182400 39600 1 EST} - {1143907200 36000 0 EST} - {1159632000 39600 1 EST} - {1174752000 36000 0 EST} - {1191686400 39600 1 EST} - {1207411200 36000 0 EST} - {1223136000 39600 1 EST} - {1238860800 36000 0 EST} - {1254585600 39600 1 EST} - {1270310400 36000 0 EST} - {1286035200 39600 1 EST} - {1301760000 36000 0 EST} - {1317484800 39600 1 EST} - {1333209600 36000 0 EST} - {1349539200 39600 1 EST} - {1365264000 36000 0 EST} - {1380988800 39600 1 EST} - {1396713600 36000 0 EST} - {1412438400 39600 1 EST} - {1428163200 36000 0 EST} - {1443888000 39600 1 EST} - {1459612800 36000 0 EST} - {1475337600 39600 1 EST} - {1491062400 36000 0 EST} - {1506787200 39600 1 EST} - {1522512000 36000 0 EST} - {1538841600 39600 1 EST} - {1554566400 36000 0 EST} - {1570291200 39600 1 EST} - {1586016000 36000 0 EST} - {1601740800 39600 1 EST} - {1617465600 36000 0 EST} - {1633190400 39600 1 EST} - {1648915200 36000 0 EST} - {1664640000 39600 1 EST} - {1680364800 36000 0 EST} - {1696089600 39600 1 EST} - {1712419200 36000 0 EST} - {1728144000 39600 1 EST} - {1743868800 36000 0 EST} - {1759593600 39600 1 EST} - {1775318400 36000 0 EST} - {1791043200 39600 1 EST} - {1806768000 36000 0 EST} - {1822492800 39600 1 EST} - {1838217600 36000 0 EST} - {1853942400 39600 1 EST} - {1869667200 36000 0 EST} - {1885996800 39600 1 EST} - {1901721600 36000 0 EST} - {1917446400 39600 1 EST} - {1933171200 36000 0 EST} - {1948896000 39600 1 EST} - {1964620800 36000 0 EST} - {1980345600 39600 1 EST} - {1996070400 36000 0 EST} - {2011795200 39600 1 EST} - {2027520000 36000 0 EST} - {2043244800 39600 1 EST} - {2058969600 36000 0 EST} - {2075299200 39600 1 EST} - {2091024000 36000 0 EST} - {2106748800 39600 1 EST} - {2122473600 36000 0 EST} - {2138198400 39600 1 EST} - {2153923200 36000 0 EST} - {2169648000 39600 1 EST} - {2185372800 36000 0 EST} - {2201097600 39600 1 EST} - {2216822400 36000 0 EST} - {2233152000 39600 1 EST} - {2248876800 36000 0 EST} - {2264601600 39600 1 EST} - {2280326400 36000 0 EST} - {2296051200 39600 1 EST} - {2311776000 36000 0 EST} - {2327500800 39600 1 EST} - {2343225600 36000 0 EST} - {2358950400 39600 1 EST} - {2374675200 36000 0 EST} - {2390400000 39600 1 EST} - {2406124800 36000 0 EST} - {2422454400 39600 1 EST} - {2438179200 36000 0 EST} - {2453904000 39600 1 EST} - {2469628800 36000 0 EST} - {2485353600 39600 1 EST} - {2501078400 36000 0 EST} - {2516803200 39600 1 EST} - {2532528000 36000 0 EST} - {2548252800 39600 1 EST} - {2563977600 36000 0 EST} - {2579702400 39600 1 EST} - {2596032000 36000 0 EST} - {2611756800 39600 1 EST} - {2627481600 36000 0 EST} - {2643206400 39600 1 EST} - {2658931200 36000 0 EST} - {2674656000 39600 1 EST} - {2690380800 36000 0 EST} - {2706105600 39600 1 EST} - {2721830400 36000 0 EST} - {2737555200 39600 1 EST} - {2753280000 36000 0 EST} - {2769609600 39600 1 EST} - {2785334400 36000 0 EST} - {2801059200 39600 1 EST} - {2816784000 36000 0 EST} - {2832508800 39600 1 EST} - {2848233600 36000 0 EST} - {2863958400 39600 1 EST} - {2879683200 36000 0 EST} - {2895408000 39600 1 EST} - {2911132800 36000 0 EST} - {2926857600 39600 1 EST} - {2942582400 36000 0 EST} - {2958912000 39600 1 EST} - {2974636800 36000 0 EST} - {2990361600 39600 1 EST} - {3006086400 36000 0 EST} - {3021811200 39600 1 EST} - {3037536000 36000 0 EST} - {3053260800 39600 1 EST} - {3068985600 36000 0 EST} - {3084710400 39600 1 EST} - {3100435200 36000 0 EST} - {3116764800 39600 1 EST} - {3132489600 36000 0 EST} - {3148214400 39600 1 EST} - {3163939200 36000 0 EST} - {3179664000 39600 1 EST} - {3195388800 36000 0 EST} - {3211113600 39600 1 EST} - {3226838400 36000 0 EST} - {3242563200 39600 1 EST} - {3258288000 36000 0 EST} - {3274012800 39600 1 EST} - {3289737600 36000 0 EST} - {3306067200 39600 1 EST} - {3321792000 36000 0 EST} - {3337516800 39600 1 EST} - {3353241600 36000 0 EST} - {3368966400 39600 1 EST} - {3384691200 36000 0 EST} - {3400416000 39600 1 EST} - {3416140800 36000 0 EST} - {3431865600 39600 1 EST} - {3447590400 36000 0 EST} - {3463315200 39600 1 EST} - {3479644800 36000 0 EST} - {3495369600 39600 1 EST} - {3511094400 36000 0 EST} - {3526819200 39600 1 EST} - {3542544000 36000 0 EST} - {3558268800 39600 1 EST} - {3573993600 36000 0 EST} - {3589718400 39600 1 EST} - {3605443200 36000 0 EST} - {3621168000 39600 1 EST} - {3636892800 36000 0 EST} - {3653222400 39600 1 EST} - {3668947200 36000 0 EST} - {3684672000 39600 1 EST} - {3700396800 36000 0 EST} - {3716121600 39600 1 EST} - {3731846400 36000 0 EST} - {3747571200 39600 1 EST} - {3763296000 36000 0 EST} - {3779020800 39600 1 EST} - {3794745600 36000 0 EST} - {3810470400 39600 1 EST} - {3826195200 36000 0 EST} - {3842524800 39600 1 EST} - {3858249600 36000 0 EST} - {3873974400 39600 1 EST} - {3889699200 36000 0 EST} - {3905424000 39600 1 EST} - {3921148800 36000 0 EST} - {3936873600 39600 1 EST} - {3952598400 36000 0 EST} - {3968323200 39600 1 EST} - {3984048000 36000 0 EST} - {4000377600 39600 1 EST} - {4016102400 36000 0 EST} - {4031827200 39600 1 EST} - {4047552000 36000 0 EST} - {4063276800 39600 1 EST} - {4079001600 36000 0 EST} - {4094726400 39600 1 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Hobart) { + {-9223372036854775808 35356 0 LMT} + {-2345795356 36000 0 EST} + {-1680508800 39600 1 EST} + {-1669892400 39600 0 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {-94730400 36000 0 EST} + {-71136000 39600 1 EST} + {-55411200 36000 0 EST} + {-37267200 39600 1 EST} + {-25776000 36000 0 EST} + {-5817600 39600 1 EST} + {5673600 36000 0 EST} + {25632000 39600 1 EST} + {37728000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {89136000 39600 1 EST} + {100022400 36000 0 EST} + {120585600 39600 1 EST} + {131472000 36000 0 EST} + {152035200 39600 1 EST} + {162921600 36000 0 EST} + {183484800 39600 1 EST} + {194976000 36000 0 EST} + {215539200 39600 1 EST} + {226425600 36000 0 EST} + {246988800 39600 1 EST} + {257875200 36000 0 EST} + {278438400 39600 1 EST} + {289324800 36000 0 EST} + {309888000 39600 1 EST} + {320774400 36000 0 EST} + {341337600 39600 1 EST} + {352224000 36000 0 EST} + {372787200 39600 1 EST} + {386092800 36000 0 EST} + {404841600 39600 1 EST} + {417542400 36000 0 EST} + {436291200 39600 1 EST} + {447177600 36000 0 EST} + {467740800 39600 1 EST} + {478627200 36000 0 EST} + {499190400 39600 1 EST} + {510076800 36000 0 EST} + {530035200 39600 1 EST} + {542736000 36000 0 EST} + {562089600 39600 1 EST} + {574790400 36000 0 EST} + {594144000 39600 1 EST} + {606240000 36000 0 EST} + {625593600 39600 1 EST} + {637689600 36000 0 EST} + {657043200 39600 1 EST} + {670348800 36000 0 EST} + {686678400 39600 1 EST} + {701798400 36000 0 EST} + {718128000 39600 1 EST} + {733248000 36000 0 EST} + {749577600 39600 1 EST} + {764697600 36000 0 EST} + {781027200 39600 1 EST} + {796147200 36000 0 EST} + {812476800 39600 1 EST} + {828201600 36000 0 EST} + {844531200 39600 1 EST} + {859651200 36000 0 EST} + {875980800 39600 1 EST} + {891100800 36000 0 EST} + {907430400 39600 1 EST} + {922550400 36000 0 EST} + {938880000 39600 1 EST} + {954000000 36000 0 EST} + {967305600 39600 1 EST} + {985449600 36000 0 EST} + {1002384000 39600 1 EST} + {1017504000 36000 0 EST} + {1033833600 39600 1 EST} + {1048953600 36000 0 EST} + {1065283200 39600 1 EST} + {1080403200 36000 0 EST} + {1096732800 39600 1 EST} + {1111852800 36000 0 EST} + {1128182400 39600 1 EST} + {1143907200 36000 0 EST} + {1159632000 39600 1 EST} + {1174752000 36000 0 EST} + {1191686400 39600 1 EST} + {1207411200 36000 0 EST} + {1223136000 39600 1 EST} + {1238860800 36000 0 EST} + {1254585600 39600 1 EST} + {1270310400 36000 0 EST} + {1286035200 39600 1 EST} + {1301760000 36000 0 EST} + {1317484800 39600 1 EST} + {1333209600 36000 0 EST} + {1349539200 39600 1 EST} + {1365264000 36000 0 EST} + {1380988800 39600 1 EST} + {1396713600 36000 0 EST} + {1412438400 39600 1 EST} + {1428163200 36000 0 EST} + {1443888000 39600 1 EST} + {1459612800 36000 0 EST} + {1475337600 39600 1 EST} + {1491062400 36000 0 EST} + {1506787200 39600 1 EST} + {1522512000 36000 0 EST} + {1538841600 39600 1 EST} + {1554566400 36000 0 EST} + {1570291200 39600 1 EST} + {1586016000 36000 0 EST} + {1601740800 39600 1 EST} + {1617465600 36000 0 EST} + {1633190400 39600 1 EST} + {1648915200 36000 0 EST} + {1664640000 39600 1 EST} + {1680364800 36000 0 EST} + {1696089600 39600 1 EST} + {1712419200 36000 0 EST} + {1728144000 39600 1 EST} + {1743868800 36000 0 EST} + {1759593600 39600 1 EST} + {1775318400 36000 0 EST} + {1791043200 39600 1 EST} + {1806768000 36000 0 EST} + {1822492800 39600 1 EST} + {1838217600 36000 0 EST} + {1853942400 39600 1 EST} + {1869667200 36000 0 EST} + {1885996800 39600 1 EST} + {1901721600 36000 0 EST} + {1917446400 39600 1 EST} + {1933171200 36000 0 EST} + {1948896000 39600 1 EST} + {1964620800 36000 0 EST} + {1980345600 39600 1 EST} + {1996070400 36000 0 EST} + {2011795200 39600 1 EST} + {2027520000 36000 0 EST} + {2043244800 39600 1 EST} + {2058969600 36000 0 EST} + {2075299200 39600 1 EST} + {2091024000 36000 0 EST} + {2106748800 39600 1 EST} + {2122473600 36000 0 EST} + {2138198400 39600 1 EST} + {2153923200 36000 0 EST} + {2169648000 39600 1 EST} + {2185372800 36000 0 EST} + {2201097600 39600 1 EST} + {2216822400 36000 0 EST} + {2233152000 39600 1 EST} + {2248876800 36000 0 EST} + {2264601600 39600 1 EST} + {2280326400 36000 0 EST} + {2296051200 39600 1 EST} + {2311776000 36000 0 EST} + {2327500800 39600 1 EST} + {2343225600 36000 0 EST} + {2358950400 39600 1 EST} + {2374675200 36000 0 EST} + {2390400000 39600 1 EST} + {2406124800 36000 0 EST} + {2422454400 39600 1 EST} + {2438179200 36000 0 EST} + {2453904000 39600 1 EST} + {2469628800 36000 0 EST} + {2485353600 39600 1 EST} + {2501078400 36000 0 EST} + {2516803200 39600 1 EST} + {2532528000 36000 0 EST} + {2548252800 39600 1 EST} + {2563977600 36000 0 EST} + {2579702400 39600 1 EST} + {2596032000 36000 0 EST} + {2611756800 39600 1 EST} + {2627481600 36000 0 EST} + {2643206400 39600 1 EST} + {2658931200 36000 0 EST} + {2674656000 39600 1 EST} + {2690380800 36000 0 EST} + {2706105600 39600 1 EST} + {2721830400 36000 0 EST} + {2737555200 39600 1 EST} + {2753280000 36000 0 EST} + {2769609600 39600 1 EST} + {2785334400 36000 0 EST} + {2801059200 39600 1 EST} + {2816784000 36000 0 EST} + {2832508800 39600 1 EST} + {2848233600 36000 0 EST} + {2863958400 39600 1 EST} + {2879683200 36000 0 EST} + {2895408000 39600 1 EST} + {2911132800 36000 0 EST} + {2926857600 39600 1 EST} + {2942582400 36000 0 EST} + {2958912000 39600 1 EST} + {2974636800 36000 0 EST} + {2990361600 39600 1 EST} + {3006086400 36000 0 EST} + {3021811200 39600 1 EST} + {3037536000 36000 0 EST} + {3053260800 39600 1 EST} + {3068985600 36000 0 EST} + {3084710400 39600 1 EST} + {3100435200 36000 0 EST} + {3116764800 39600 1 EST} + {3132489600 36000 0 EST} + {3148214400 39600 1 EST} + {3163939200 36000 0 EST} + {3179664000 39600 1 EST} + {3195388800 36000 0 EST} + {3211113600 39600 1 EST} + {3226838400 36000 0 EST} + {3242563200 39600 1 EST} + {3258288000 36000 0 EST} + {3274012800 39600 1 EST} + {3289737600 36000 0 EST} + {3306067200 39600 1 EST} + {3321792000 36000 0 EST} + {3337516800 39600 1 EST} + {3353241600 36000 0 EST} + {3368966400 39600 1 EST} + {3384691200 36000 0 EST} + {3400416000 39600 1 EST} + {3416140800 36000 0 EST} + {3431865600 39600 1 EST} + {3447590400 36000 0 EST} + {3463315200 39600 1 EST} + {3479644800 36000 0 EST} + {3495369600 39600 1 EST} + {3511094400 36000 0 EST} + {3526819200 39600 1 EST} + {3542544000 36000 0 EST} + {3558268800 39600 1 EST} + {3573993600 36000 0 EST} + {3589718400 39600 1 EST} + {3605443200 36000 0 EST} + {3621168000 39600 1 EST} + {3636892800 36000 0 EST} + {3653222400 39600 1 EST} + {3668947200 36000 0 EST} + {3684672000 39600 1 EST} + {3700396800 36000 0 EST} + {3716121600 39600 1 EST} + {3731846400 36000 0 EST} + {3747571200 39600 1 EST} + {3763296000 36000 0 EST} + {3779020800 39600 1 EST} + {3794745600 36000 0 EST} + {3810470400 39600 1 EST} + {3826195200 36000 0 EST} + {3842524800 39600 1 EST} + {3858249600 36000 0 EST} + {3873974400 39600 1 EST} + {3889699200 36000 0 EST} + {3905424000 39600 1 EST} + {3921148800 36000 0 EST} + {3936873600 39600 1 EST} + {3952598400 36000 0 EST} + {3968323200 39600 1 EST} + {3984048000 36000 0 EST} + {4000377600 39600 1 EST} + {4016102400 36000 0 EST} + {4031827200 39600 1 EST} + {4047552000 36000 0 EST} + {4063276800 39600 1 EST} + {4079001600 36000 0 EST} + {4094726400 39600 1 EST} +} diff --git a/library/tzdata/Australia/LHI b/library/tzdata/Australia/LHI index 889f85a..ddc79ce 100644 --- a/library/tzdata/Australia/LHI +++ b/library/tzdata/Australia/LHI @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Lord_Howe)]} { - LoadTimeZoneFile Australia/Lord_Howe -} -set TZData(:Australia/LHI) $TZData(:Australia/Lord_Howe) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Lord_Howe)]} { + LoadTimeZoneFile Australia/Lord_Howe +} +set TZData(:Australia/LHI) $TZData(:Australia/Lord_Howe) diff --git a/library/tzdata/Australia/Lindeman b/library/tzdata/Australia/Lindeman index 77bce8f..de11c35 100644 --- a/library/tzdata/Australia/Lindeman +++ b/library/tzdata/Australia/Lindeman @@ -1,28 +1,28 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Lindeman) { - {-9223372036854775808 35756 0 LMT} - {-2366790956 36000 0 EST} - {-1672567140 39600 1 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {31500000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {625593600 39600 1 EST} - {636480000 36000 0 EST} - {657043200 39600 1 EST} - {667929600 36000 0 EST} - {688492800 39600 1 EST} - {699379200 36000 0 EST} - {709912800 36000 0 EST} - {719942400 39600 1 EST} - {731433600 36000 0 EST} - {751996800 39600 1 EST} - {762883200 36000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Lindeman) { + {-9223372036854775808 35756 0 LMT} + {-2366790956 36000 0 EST} + {-1672567140 39600 1 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {31500000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {625593600 39600 1 EST} + {636480000 36000 0 EST} + {657043200 39600 1 EST} + {667929600 36000 0 EST} + {688492800 39600 1 EST} + {699379200 36000 0 EST} + {709912800 36000 0 EST} + {719942400 39600 1 EST} + {731433600 36000 0 EST} + {751996800 39600 1 EST} + {762883200 36000 0 EST} +} diff --git a/library/tzdata/Australia/Lord_Howe b/library/tzdata/Australia/Lord_Howe index 19733e1..da094e5 100644 --- a/library/tzdata/Australia/Lord_Howe +++ b/library/tzdata/Australia/Lord_Howe @@ -1,244 +1,244 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Lord_Howe) { - {-9223372036854775808 38180 0 LMT} - {-2364114980 36000 0 EST} - {352216800 37800 0 LHST} - {372785400 41400 1 LHST} - {384273000 37800 0 LHST} - {404839800 41400 1 LHST} - {415722600 37800 0 LHST} - {436289400 41400 1 LHST} - {447172200 37800 0 LHST} - {467739000 41400 1 LHST} - {478621800 37800 0 LHST} - {499188600 39600 1 LHST} - {511282800 37800 0 LHST} - {530033400 39600 1 LHST} - {542732400 37800 0 LHST} - {562087800 39600 1 LHST} - {574786800 37800 0 LHST} - {594142200 39600 1 LHST} - {606236400 37800 0 LHST} - {625591800 39600 1 LHST} - {636476400 37800 0 LHST} - {657041400 39600 1 LHST} - {667926000 37800 0 LHST} - {688491000 39600 1 LHST} - {699375600 37800 0 LHST} - {719940600 39600 1 LHST} - {731430000 37800 0 LHST} - {751995000 39600 1 LHST} - {762879600 37800 0 LHST} - {783444600 39600 1 LHST} - {794329200 37800 0 LHST} - {814894200 39600 1 LHST} - {828198000 37800 0 LHST} - {846343800 39600 1 LHST} - {859647600 37800 0 LHST} - {877793400 39600 1 LHST} - {891097200 37800 0 LHST} - {909243000 39600 1 LHST} - {922546800 37800 0 LHST} - {941297400 39600 1 LHST} - {953996400 37800 0 LHST} - {967303800 39600 1 LHST} - {985446000 37800 0 LHST} - {1004196600 39600 1 LHST} - {1017500400 37800 0 LHST} - {1035646200 39600 1 LHST} - {1048950000 37800 0 LHST} - {1067095800 39600 1 LHST} - {1080399600 37800 0 LHST} - {1099150200 39600 1 LHST} - {1111849200 37800 0 LHST} - {1130599800 39600 1 LHST} - {1143903600 37800 0 LHST} - {1162049400 39600 1 LHST} - {1174748400 37800 0 LHST} - {1193499000 39600 1 LHST} - {1207407600 37800 0 LHST} - {1223134200 39600 1 LHST} - {1238857200 37800 0 LHST} - {1254583800 39600 1 LHST} - {1270306800 37800 0 LHST} - {1286033400 39600 1 LHST} - {1301756400 37800 0 LHST} - {1317483000 39600 1 LHST} - {1333206000 37800 0 LHST} - {1349537400 39600 1 LHST} - {1365260400 37800 0 LHST} - {1380987000 39600 1 LHST} - {1396710000 37800 0 LHST} - {1412436600 39600 1 LHST} - {1428159600 37800 0 LHST} - {1443886200 39600 1 LHST} - {1459609200 37800 0 LHST} - {1475335800 39600 1 LHST} - {1491058800 37800 0 LHST} - {1506785400 39600 1 LHST} - {1522508400 37800 0 LHST} - {1538839800 39600 1 LHST} - {1554562800 37800 0 LHST} - {1570289400 39600 1 LHST} - {1586012400 37800 0 LHST} - {1601739000 39600 1 LHST} - {1617462000 37800 0 LHST} - {1633188600 39600 1 LHST} - {1648911600 37800 0 LHST} - {1664638200 39600 1 LHST} - {1680361200 37800 0 LHST} - {1696087800 39600 1 LHST} - {1712415600 37800 0 LHST} - {1728142200 39600 1 LHST} - {1743865200 37800 0 LHST} - {1759591800 39600 1 LHST} - {1775314800 37800 0 LHST} - {1791041400 39600 1 LHST} - {1806764400 37800 0 LHST} - {1822491000 39600 1 LHST} - {1838214000 37800 0 LHST} - {1853940600 39600 1 LHST} - {1869663600 37800 0 LHST} - {1885995000 39600 1 LHST} - {1901718000 37800 0 LHST} - {1917444600 39600 1 LHST} - {1933167600 37800 0 LHST} - {1948894200 39600 1 LHST} - {1964617200 37800 0 LHST} - {1980343800 39600 1 LHST} - {1996066800 37800 0 LHST} - {2011793400 39600 1 LHST} - {2027516400 37800 0 LHST} - {2043243000 39600 1 LHST} - {2058966000 37800 0 LHST} - {2075297400 39600 1 LHST} - {2091020400 37800 0 LHST} - {2106747000 39600 1 LHST} - {2122470000 37800 0 LHST} - {2138196600 39600 1 LHST} - {2153919600 37800 0 LHST} - {2169646200 39600 1 LHST} - {2185369200 37800 0 LHST} - {2201095800 39600 1 LHST} - {2216818800 37800 0 LHST} - {2233150200 39600 1 LHST} - {2248873200 37800 0 LHST} - {2264599800 39600 1 LHST} - {2280322800 37800 0 LHST} - {2296049400 39600 1 LHST} - {2311772400 37800 0 LHST} - {2327499000 39600 1 LHST} - {2343222000 37800 0 LHST} - {2358948600 39600 1 LHST} - {2374671600 37800 0 LHST} - {2390398200 39600 1 LHST} - {2406121200 37800 0 LHST} - {2422452600 39600 1 LHST} - {2438175600 37800 0 LHST} - {2453902200 39600 1 LHST} - {2469625200 37800 0 LHST} - {2485351800 39600 1 LHST} - {2501074800 37800 0 LHST} - {2516801400 39600 1 LHST} - {2532524400 37800 0 LHST} - {2548251000 39600 1 LHST} - {2563974000 37800 0 LHST} - {2579700600 39600 1 LHST} - {2596028400 37800 0 LHST} - {2611755000 39600 1 LHST} - {2627478000 37800 0 LHST} - {2643204600 39600 1 LHST} - {2658927600 37800 0 LHST} - {2674654200 39600 1 LHST} - {2690377200 37800 0 LHST} - {2706103800 39600 1 LHST} - {2721826800 37800 0 LHST} - {2737553400 39600 1 LHST} - {2753276400 37800 0 LHST} - {2769607800 39600 1 LHST} - {2785330800 37800 0 LHST} - {2801057400 39600 1 LHST} - {2816780400 37800 0 LHST} - {2832507000 39600 1 LHST} - {2848230000 37800 0 LHST} - {2863956600 39600 1 LHST} - {2879679600 37800 0 LHST} - {2895406200 39600 1 LHST} - {2911129200 37800 0 LHST} - {2926855800 39600 1 LHST} - {2942578800 37800 0 LHST} - {2958910200 39600 1 LHST} - {2974633200 37800 0 LHST} - {2990359800 39600 1 LHST} - {3006082800 37800 0 LHST} - {3021809400 39600 1 LHST} - {3037532400 37800 0 LHST} - {3053259000 39600 1 LHST} - {3068982000 37800 0 LHST} - {3084708600 39600 1 LHST} - {3100431600 37800 0 LHST} - {3116763000 39600 1 LHST} - {3132486000 37800 0 LHST} - {3148212600 39600 1 LHST} - {3163935600 37800 0 LHST} - {3179662200 39600 1 LHST} - {3195385200 37800 0 LHST} - {3211111800 39600 1 LHST} - {3226834800 37800 0 LHST} - {3242561400 39600 1 LHST} - {3258284400 37800 0 LHST} - {3274011000 39600 1 LHST} - {3289734000 37800 0 LHST} - {3306065400 39600 1 LHST} - {3321788400 37800 0 LHST} - {3337515000 39600 1 LHST} - {3353238000 37800 0 LHST} - {3368964600 39600 1 LHST} - {3384687600 37800 0 LHST} - {3400414200 39600 1 LHST} - {3416137200 37800 0 LHST} - {3431863800 39600 1 LHST} - {3447586800 37800 0 LHST} - {3463313400 39600 1 LHST} - {3479641200 37800 0 LHST} - {3495367800 39600 1 LHST} - {3511090800 37800 0 LHST} - {3526817400 39600 1 LHST} - {3542540400 37800 0 LHST} - {3558267000 39600 1 LHST} - {3573990000 37800 0 LHST} - {3589716600 39600 1 LHST} - {3605439600 37800 0 LHST} - {3621166200 39600 1 LHST} - {3636889200 37800 0 LHST} - {3653220600 39600 1 LHST} - {3668943600 37800 0 LHST} - {3684670200 39600 1 LHST} - {3700393200 37800 0 LHST} - {3716119800 39600 1 LHST} - {3731842800 37800 0 LHST} - {3747569400 39600 1 LHST} - {3763292400 37800 0 LHST} - {3779019000 39600 1 LHST} - {3794742000 37800 0 LHST} - {3810468600 39600 1 LHST} - {3826191600 37800 0 LHST} - {3842523000 39600 1 LHST} - {3858246000 37800 0 LHST} - {3873972600 39600 1 LHST} - {3889695600 37800 0 LHST} - {3905422200 39600 1 LHST} - {3921145200 37800 0 LHST} - {3936871800 39600 1 LHST} - {3952594800 37800 0 LHST} - {3968321400 39600 1 LHST} - {3984044400 37800 0 LHST} - {4000375800 39600 1 LHST} - {4016098800 37800 0 LHST} - {4031825400 39600 1 LHST} - {4047548400 37800 0 LHST} - {4063275000 39600 1 LHST} - {4078998000 37800 0 LHST} - {4094724600 39600 1 LHST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Lord_Howe) { + {-9223372036854775808 38180 0 LMT} + {-2364114980 36000 0 EST} + {352216800 37800 0 LHST} + {372785400 41400 1 LHST} + {384273000 37800 0 LHST} + {404839800 41400 1 LHST} + {415722600 37800 0 LHST} + {436289400 41400 1 LHST} + {447172200 37800 0 LHST} + {467739000 41400 1 LHST} + {478621800 37800 0 LHST} + {499188600 39600 1 LHST} + {511282800 37800 0 LHST} + {530033400 39600 1 LHST} + {542732400 37800 0 LHST} + {562087800 39600 1 LHST} + {574786800 37800 0 LHST} + {594142200 39600 1 LHST} + {606236400 37800 0 LHST} + {625591800 39600 1 LHST} + {636476400 37800 0 LHST} + {657041400 39600 1 LHST} + {667926000 37800 0 LHST} + {688491000 39600 1 LHST} + {699375600 37800 0 LHST} + {719940600 39600 1 LHST} + {731430000 37800 0 LHST} + {751995000 39600 1 LHST} + {762879600 37800 0 LHST} + {783444600 39600 1 LHST} + {794329200 37800 0 LHST} + {814894200 39600 1 LHST} + {828198000 37800 0 LHST} + {846343800 39600 1 LHST} + {859647600 37800 0 LHST} + {877793400 39600 1 LHST} + {891097200 37800 0 LHST} + {909243000 39600 1 LHST} + {922546800 37800 0 LHST} + {941297400 39600 1 LHST} + {953996400 37800 0 LHST} + {967303800 39600 1 LHST} + {985446000 37800 0 LHST} + {1004196600 39600 1 LHST} + {1017500400 37800 0 LHST} + {1035646200 39600 1 LHST} + {1048950000 37800 0 LHST} + {1067095800 39600 1 LHST} + {1080399600 37800 0 LHST} + {1099150200 39600 1 LHST} + {1111849200 37800 0 LHST} + {1130599800 39600 1 LHST} + {1143903600 37800 0 LHST} + {1162049400 39600 1 LHST} + {1174748400 37800 0 LHST} + {1193499000 39600 1 LHST} + {1207407600 37800 0 LHST} + {1223134200 39600 1 LHST} + {1238857200 37800 0 LHST} + {1254583800 39600 1 LHST} + {1270306800 37800 0 LHST} + {1286033400 39600 1 LHST} + {1301756400 37800 0 LHST} + {1317483000 39600 1 LHST} + {1333206000 37800 0 LHST} + {1349537400 39600 1 LHST} + {1365260400 37800 0 LHST} + {1380987000 39600 1 LHST} + {1396710000 37800 0 LHST} + {1412436600 39600 1 LHST} + {1428159600 37800 0 LHST} + {1443886200 39600 1 LHST} + {1459609200 37800 0 LHST} + {1475335800 39600 1 LHST} + {1491058800 37800 0 LHST} + {1506785400 39600 1 LHST} + {1522508400 37800 0 LHST} + {1538839800 39600 1 LHST} + {1554562800 37800 0 LHST} + {1570289400 39600 1 LHST} + {1586012400 37800 0 LHST} + {1601739000 39600 1 LHST} + {1617462000 37800 0 LHST} + {1633188600 39600 1 LHST} + {1648911600 37800 0 LHST} + {1664638200 39600 1 LHST} + {1680361200 37800 0 LHST} + {1696087800 39600 1 LHST} + {1712415600 37800 0 LHST} + {1728142200 39600 1 LHST} + {1743865200 37800 0 LHST} + {1759591800 39600 1 LHST} + {1775314800 37800 0 LHST} + {1791041400 39600 1 LHST} + {1806764400 37800 0 LHST} + {1822491000 39600 1 LHST} + {1838214000 37800 0 LHST} + {1853940600 39600 1 LHST} + {1869663600 37800 0 LHST} + {1885995000 39600 1 LHST} + {1901718000 37800 0 LHST} + {1917444600 39600 1 LHST} + {1933167600 37800 0 LHST} + {1948894200 39600 1 LHST} + {1964617200 37800 0 LHST} + {1980343800 39600 1 LHST} + {1996066800 37800 0 LHST} + {2011793400 39600 1 LHST} + {2027516400 37800 0 LHST} + {2043243000 39600 1 LHST} + {2058966000 37800 0 LHST} + {2075297400 39600 1 LHST} + {2091020400 37800 0 LHST} + {2106747000 39600 1 LHST} + {2122470000 37800 0 LHST} + {2138196600 39600 1 LHST} + {2153919600 37800 0 LHST} + {2169646200 39600 1 LHST} + {2185369200 37800 0 LHST} + {2201095800 39600 1 LHST} + {2216818800 37800 0 LHST} + {2233150200 39600 1 LHST} + {2248873200 37800 0 LHST} + {2264599800 39600 1 LHST} + {2280322800 37800 0 LHST} + {2296049400 39600 1 LHST} + {2311772400 37800 0 LHST} + {2327499000 39600 1 LHST} + {2343222000 37800 0 LHST} + {2358948600 39600 1 LHST} + {2374671600 37800 0 LHST} + {2390398200 39600 1 LHST} + {2406121200 37800 0 LHST} + {2422452600 39600 1 LHST} + {2438175600 37800 0 LHST} + {2453902200 39600 1 LHST} + {2469625200 37800 0 LHST} + {2485351800 39600 1 LHST} + {2501074800 37800 0 LHST} + {2516801400 39600 1 LHST} + {2532524400 37800 0 LHST} + {2548251000 39600 1 LHST} + {2563974000 37800 0 LHST} + {2579700600 39600 1 LHST} + {2596028400 37800 0 LHST} + {2611755000 39600 1 LHST} + {2627478000 37800 0 LHST} + {2643204600 39600 1 LHST} + {2658927600 37800 0 LHST} + {2674654200 39600 1 LHST} + {2690377200 37800 0 LHST} + {2706103800 39600 1 LHST} + {2721826800 37800 0 LHST} + {2737553400 39600 1 LHST} + {2753276400 37800 0 LHST} + {2769607800 39600 1 LHST} + {2785330800 37800 0 LHST} + {2801057400 39600 1 LHST} + {2816780400 37800 0 LHST} + {2832507000 39600 1 LHST} + {2848230000 37800 0 LHST} + {2863956600 39600 1 LHST} + {2879679600 37800 0 LHST} + {2895406200 39600 1 LHST} + {2911129200 37800 0 LHST} + {2926855800 39600 1 LHST} + {2942578800 37800 0 LHST} + {2958910200 39600 1 LHST} + {2974633200 37800 0 LHST} + {2990359800 39600 1 LHST} + {3006082800 37800 0 LHST} + {3021809400 39600 1 LHST} + {3037532400 37800 0 LHST} + {3053259000 39600 1 LHST} + {3068982000 37800 0 LHST} + {3084708600 39600 1 LHST} + {3100431600 37800 0 LHST} + {3116763000 39600 1 LHST} + {3132486000 37800 0 LHST} + {3148212600 39600 1 LHST} + {3163935600 37800 0 LHST} + {3179662200 39600 1 LHST} + {3195385200 37800 0 LHST} + {3211111800 39600 1 LHST} + {3226834800 37800 0 LHST} + {3242561400 39600 1 LHST} + {3258284400 37800 0 LHST} + {3274011000 39600 1 LHST} + {3289734000 37800 0 LHST} + {3306065400 39600 1 LHST} + {3321788400 37800 0 LHST} + {3337515000 39600 1 LHST} + {3353238000 37800 0 LHST} + {3368964600 39600 1 LHST} + {3384687600 37800 0 LHST} + {3400414200 39600 1 LHST} + {3416137200 37800 0 LHST} + {3431863800 39600 1 LHST} + {3447586800 37800 0 LHST} + {3463313400 39600 1 LHST} + {3479641200 37800 0 LHST} + {3495367800 39600 1 LHST} + {3511090800 37800 0 LHST} + {3526817400 39600 1 LHST} + {3542540400 37800 0 LHST} + {3558267000 39600 1 LHST} + {3573990000 37800 0 LHST} + {3589716600 39600 1 LHST} + {3605439600 37800 0 LHST} + {3621166200 39600 1 LHST} + {3636889200 37800 0 LHST} + {3653220600 39600 1 LHST} + {3668943600 37800 0 LHST} + {3684670200 39600 1 LHST} + {3700393200 37800 0 LHST} + {3716119800 39600 1 LHST} + {3731842800 37800 0 LHST} + {3747569400 39600 1 LHST} + {3763292400 37800 0 LHST} + {3779019000 39600 1 LHST} + {3794742000 37800 0 LHST} + {3810468600 39600 1 LHST} + {3826191600 37800 0 LHST} + {3842523000 39600 1 LHST} + {3858246000 37800 0 LHST} + {3873972600 39600 1 LHST} + {3889695600 37800 0 LHST} + {3905422200 39600 1 LHST} + {3921145200 37800 0 LHST} + {3936871800 39600 1 LHST} + {3952594800 37800 0 LHST} + {3968321400 39600 1 LHST} + {3984044400 37800 0 LHST} + {4000375800 39600 1 LHST} + {4016098800 37800 0 LHST} + {4031825400 39600 1 LHST} + {4047548400 37800 0 LHST} + {4063275000 39600 1 LHST} + {4078998000 37800 0 LHST} + {4094724600 39600 1 LHST} +} diff --git a/library/tzdata/Australia/Melbourne b/library/tzdata/Australia/Melbourne index 5fe9a7a..907b8b9 100644 --- a/library/tzdata/Australia/Melbourne +++ b/library/tzdata/Australia/Melbourne @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Melbourne) { - {-9223372036854775808 34792 0 LMT} - {-2364111592 36000 0 EST} - {-1672567140 39600 1 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {31500000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {89136000 39600 1 EST} - {100022400 36000 0 EST} - {120585600 39600 1 EST} - {131472000 36000 0 EST} - {152035200 39600 1 EST} - {162921600 36000 0 EST} - {183484800 39600 1 EST} - {194976000 36000 0 EST} - {215539200 39600 1 EST} - {226425600 36000 0 EST} - {246988800 39600 1 EST} - {257875200 36000 0 EST} - {278438400 39600 1 EST} - {289324800 36000 0 EST} - {309888000 39600 1 EST} - {320774400 36000 0 EST} - {341337600 39600 1 EST} - {352224000 36000 0 EST} - {372787200 39600 1 EST} - {384278400 36000 0 EST} - {404841600 39600 1 EST} - {415728000 36000 0 EST} - {436291200 39600 1 EST} - {447177600 36000 0 EST} - {467740800 39600 1 EST} - {478627200 36000 0 EST} - {499190400 39600 1 EST} - {511286400 36000 0 EST} - {530035200 39600 1 EST} - {542736000 36000 0 EST} - {561484800 39600 1 EST} - {574790400 36000 0 EST} - {594144000 39600 1 EST} - {606240000 36000 0 EST} - {625593600 39600 1 EST} - {637689600 36000 0 EST} - {657043200 39600 1 EST} - {667929600 36000 0 EST} - {688492800 39600 1 EST} - {699379200 36000 0 EST} - {719942400 39600 1 EST} - {731433600 36000 0 EST} - {751996800 39600 1 EST} - {762883200 36000 0 EST} - {783446400 39600 1 EST} - {796147200 36000 0 EST} - {814896000 39600 1 EST} - {828201600 36000 0 EST} - {846345600 39600 1 EST} - {859651200 36000 0 EST} - {877795200 39600 1 EST} - {891100800 36000 0 EST} - {909244800 39600 1 EST} - {922550400 36000 0 EST} - {941299200 39600 1 EST} - {954000000 36000 0 EST} - {967305600 39600 1 EST} - {985449600 36000 0 EST} - {1004198400 39600 1 EST} - {1017504000 36000 0 EST} - {1035648000 39600 1 EST} - {1048953600 36000 0 EST} - {1067097600 39600 1 EST} - {1080403200 36000 0 EST} - {1099152000 39600 1 EST} - {1111852800 36000 0 EST} - {1130601600 39600 1 EST} - {1143907200 36000 0 EST} - {1162051200 39600 1 EST} - {1174752000 36000 0 EST} - {1193500800 39600 1 EST} - {1207411200 36000 0 EST} - {1223136000 39600 1 EST} - {1238860800 36000 0 EST} - {1254585600 39600 1 EST} - {1270310400 36000 0 EST} - {1286035200 39600 1 EST} - {1301760000 36000 0 EST} - {1317484800 39600 1 EST} - {1333209600 36000 0 EST} - {1349539200 39600 1 EST} - {1365264000 36000 0 EST} - {1380988800 39600 1 EST} - {1396713600 36000 0 EST} - {1412438400 39600 1 EST} - {1428163200 36000 0 EST} - {1443888000 39600 1 EST} - {1459612800 36000 0 EST} - {1475337600 39600 1 EST} - {1491062400 36000 0 EST} - {1506787200 39600 1 EST} - {1522512000 36000 0 EST} - {1538841600 39600 1 EST} - {1554566400 36000 0 EST} - {1570291200 39600 1 EST} - {1586016000 36000 0 EST} - {1601740800 39600 1 EST} - {1617465600 36000 0 EST} - {1633190400 39600 1 EST} - {1648915200 36000 0 EST} - {1664640000 39600 1 EST} - {1680364800 36000 0 EST} - {1696089600 39600 1 EST} - {1712419200 36000 0 EST} - {1728144000 39600 1 EST} - {1743868800 36000 0 EST} - {1759593600 39600 1 EST} - {1775318400 36000 0 EST} - {1791043200 39600 1 EST} - {1806768000 36000 0 EST} - {1822492800 39600 1 EST} - {1838217600 36000 0 EST} - {1853942400 39600 1 EST} - {1869667200 36000 0 EST} - {1885996800 39600 1 EST} - {1901721600 36000 0 EST} - {1917446400 39600 1 EST} - {1933171200 36000 0 EST} - {1948896000 39600 1 EST} - {1964620800 36000 0 EST} - {1980345600 39600 1 EST} - {1996070400 36000 0 EST} - {2011795200 39600 1 EST} - {2027520000 36000 0 EST} - {2043244800 39600 1 EST} - {2058969600 36000 0 EST} - {2075299200 39600 1 EST} - {2091024000 36000 0 EST} - {2106748800 39600 1 EST} - {2122473600 36000 0 EST} - {2138198400 39600 1 EST} - {2153923200 36000 0 EST} - {2169648000 39600 1 EST} - {2185372800 36000 0 EST} - {2201097600 39600 1 EST} - {2216822400 36000 0 EST} - {2233152000 39600 1 EST} - {2248876800 36000 0 EST} - {2264601600 39600 1 EST} - {2280326400 36000 0 EST} - {2296051200 39600 1 EST} - {2311776000 36000 0 EST} - {2327500800 39600 1 EST} - {2343225600 36000 0 EST} - {2358950400 39600 1 EST} - {2374675200 36000 0 EST} - {2390400000 39600 1 EST} - {2406124800 36000 0 EST} - {2422454400 39600 1 EST} - {2438179200 36000 0 EST} - {2453904000 39600 1 EST} - {2469628800 36000 0 EST} - {2485353600 39600 1 EST} - {2501078400 36000 0 EST} - {2516803200 39600 1 EST} - {2532528000 36000 0 EST} - {2548252800 39600 1 EST} - {2563977600 36000 0 EST} - {2579702400 39600 1 EST} - {2596032000 36000 0 EST} - {2611756800 39600 1 EST} - {2627481600 36000 0 EST} - {2643206400 39600 1 EST} - {2658931200 36000 0 EST} - {2674656000 39600 1 EST} - {2690380800 36000 0 EST} - {2706105600 39600 1 EST} - {2721830400 36000 0 EST} - {2737555200 39600 1 EST} - {2753280000 36000 0 EST} - {2769609600 39600 1 EST} - {2785334400 36000 0 EST} - {2801059200 39600 1 EST} - {2816784000 36000 0 EST} - {2832508800 39600 1 EST} - {2848233600 36000 0 EST} - {2863958400 39600 1 EST} - {2879683200 36000 0 EST} - {2895408000 39600 1 EST} - {2911132800 36000 0 EST} - {2926857600 39600 1 EST} - {2942582400 36000 0 EST} - {2958912000 39600 1 EST} - {2974636800 36000 0 EST} - {2990361600 39600 1 EST} - {3006086400 36000 0 EST} - {3021811200 39600 1 EST} - {3037536000 36000 0 EST} - {3053260800 39600 1 EST} - {3068985600 36000 0 EST} - {3084710400 39600 1 EST} - {3100435200 36000 0 EST} - {3116764800 39600 1 EST} - {3132489600 36000 0 EST} - {3148214400 39600 1 EST} - {3163939200 36000 0 EST} - {3179664000 39600 1 EST} - {3195388800 36000 0 EST} - {3211113600 39600 1 EST} - {3226838400 36000 0 EST} - {3242563200 39600 1 EST} - {3258288000 36000 0 EST} - {3274012800 39600 1 EST} - {3289737600 36000 0 EST} - {3306067200 39600 1 EST} - {3321792000 36000 0 EST} - {3337516800 39600 1 EST} - {3353241600 36000 0 EST} - {3368966400 39600 1 EST} - {3384691200 36000 0 EST} - {3400416000 39600 1 EST} - {3416140800 36000 0 EST} - {3431865600 39600 1 EST} - {3447590400 36000 0 EST} - {3463315200 39600 1 EST} - {3479644800 36000 0 EST} - {3495369600 39600 1 EST} - {3511094400 36000 0 EST} - {3526819200 39600 1 EST} - {3542544000 36000 0 EST} - {3558268800 39600 1 EST} - {3573993600 36000 0 EST} - {3589718400 39600 1 EST} - {3605443200 36000 0 EST} - {3621168000 39600 1 EST} - {3636892800 36000 0 EST} - {3653222400 39600 1 EST} - {3668947200 36000 0 EST} - {3684672000 39600 1 EST} - {3700396800 36000 0 EST} - {3716121600 39600 1 EST} - {3731846400 36000 0 EST} - {3747571200 39600 1 EST} - {3763296000 36000 0 EST} - {3779020800 39600 1 EST} - {3794745600 36000 0 EST} - {3810470400 39600 1 EST} - {3826195200 36000 0 EST} - {3842524800 39600 1 EST} - {3858249600 36000 0 EST} - {3873974400 39600 1 EST} - {3889699200 36000 0 EST} - {3905424000 39600 1 EST} - {3921148800 36000 0 EST} - {3936873600 39600 1 EST} - {3952598400 36000 0 EST} - {3968323200 39600 1 EST} - {3984048000 36000 0 EST} - {4000377600 39600 1 EST} - {4016102400 36000 0 EST} - {4031827200 39600 1 EST} - {4047552000 36000 0 EST} - {4063276800 39600 1 EST} - {4079001600 36000 0 EST} - {4094726400 39600 1 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Melbourne) { + {-9223372036854775808 34792 0 LMT} + {-2364111592 36000 0 EST} + {-1672567140 39600 1 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {31500000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {89136000 39600 1 EST} + {100022400 36000 0 EST} + {120585600 39600 1 EST} + {131472000 36000 0 EST} + {152035200 39600 1 EST} + {162921600 36000 0 EST} + {183484800 39600 1 EST} + {194976000 36000 0 EST} + {215539200 39600 1 EST} + {226425600 36000 0 EST} + {246988800 39600 1 EST} + {257875200 36000 0 EST} + {278438400 39600 1 EST} + {289324800 36000 0 EST} + {309888000 39600 1 EST} + {320774400 36000 0 EST} + {341337600 39600 1 EST} + {352224000 36000 0 EST} + {372787200 39600 1 EST} + {384278400 36000 0 EST} + {404841600 39600 1 EST} + {415728000 36000 0 EST} + {436291200 39600 1 EST} + {447177600 36000 0 EST} + {467740800 39600 1 EST} + {478627200 36000 0 EST} + {499190400 39600 1 EST} + {511286400 36000 0 EST} + {530035200 39600 1 EST} + {542736000 36000 0 EST} + {561484800 39600 1 EST} + {574790400 36000 0 EST} + {594144000 39600 1 EST} + {606240000 36000 0 EST} + {625593600 39600 1 EST} + {637689600 36000 0 EST} + {657043200 39600 1 EST} + {667929600 36000 0 EST} + {688492800 39600 1 EST} + {699379200 36000 0 EST} + {719942400 39600 1 EST} + {731433600 36000 0 EST} + {751996800 39600 1 EST} + {762883200 36000 0 EST} + {783446400 39600 1 EST} + {796147200 36000 0 EST} + {814896000 39600 1 EST} + {828201600 36000 0 EST} + {846345600 39600 1 EST} + {859651200 36000 0 EST} + {877795200 39600 1 EST} + {891100800 36000 0 EST} + {909244800 39600 1 EST} + {922550400 36000 0 EST} + {941299200 39600 1 EST} + {954000000 36000 0 EST} + {967305600 39600 1 EST} + {985449600 36000 0 EST} + {1004198400 39600 1 EST} + {1017504000 36000 0 EST} + {1035648000 39600 1 EST} + {1048953600 36000 0 EST} + {1067097600 39600 1 EST} + {1080403200 36000 0 EST} + {1099152000 39600 1 EST} + {1111852800 36000 0 EST} + {1130601600 39600 1 EST} + {1143907200 36000 0 EST} + {1162051200 39600 1 EST} + {1174752000 36000 0 EST} + {1193500800 39600 1 EST} + {1207411200 36000 0 EST} + {1223136000 39600 1 EST} + {1238860800 36000 0 EST} + {1254585600 39600 1 EST} + {1270310400 36000 0 EST} + {1286035200 39600 1 EST} + {1301760000 36000 0 EST} + {1317484800 39600 1 EST} + {1333209600 36000 0 EST} + {1349539200 39600 1 EST} + {1365264000 36000 0 EST} + {1380988800 39600 1 EST} + {1396713600 36000 0 EST} + {1412438400 39600 1 EST} + {1428163200 36000 0 EST} + {1443888000 39600 1 EST} + {1459612800 36000 0 EST} + {1475337600 39600 1 EST} + {1491062400 36000 0 EST} + {1506787200 39600 1 EST} + {1522512000 36000 0 EST} + {1538841600 39600 1 EST} + {1554566400 36000 0 EST} + {1570291200 39600 1 EST} + {1586016000 36000 0 EST} + {1601740800 39600 1 EST} + {1617465600 36000 0 EST} + {1633190400 39600 1 EST} + {1648915200 36000 0 EST} + {1664640000 39600 1 EST} + {1680364800 36000 0 EST} + {1696089600 39600 1 EST} + {1712419200 36000 0 EST} + {1728144000 39600 1 EST} + {1743868800 36000 0 EST} + {1759593600 39600 1 EST} + {1775318400 36000 0 EST} + {1791043200 39600 1 EST} + {1806768000 36000 0 EST} + {1822492800 39600 1 EST} + {1838217600 36000 0 EST} + {1853942400 39600 1 EST} + {1869667200 36000 0 EST} + {1885996800 39600 1 EST} + {1901721600 36000 0 EST} + {1917446400 39600 1 EST} + {1933171200 36000 0 EST} + {1948896000 39600 1 EST} + {1964620800 36000 0 EST} + {1980345600 39600 1 EST} + {1996070400 36000 0 EST} + {2011795200 39600 1 EST} + {2027520000 36000 0 EST} + {2043244800 39600 1 EST} + {2058969600 36000 0 EST} + {2075299200 39600 1 EST} + {2091024000 36000 0 EST} + {2106748800 39600 1 EST} + {2122473600 36000 0 EST} + {2138198400 39600 1 EST} + {2153923200 36000 0 EST} + {2169648000 39600 1 EST} + {2185372800 36000 0 EST} + {2201097600 39600 1 EST} + {2216822400 36000 0 EST} + {2233152000 39600 1 EST} + {2248876800 36000 0 EST} + {2264601600 39600 1 EST} + {2280326400 36000 0 EST} + {2296051200 39600 1 EST} + {2311776000 36000 0 EST} + {2327500800 39600 1 EST} + {2343225600 36000 0 EST} + {2358950400 39600 1 EST} + {2374675200 36000 0 EST} + {2390400000 39600 1 EST} + {2406124800 36000 0 EST} + {2422454400 39600 1 EST} + {2438179200 36000 0 EST} + {2453904000 39600 1 EST} + {2469628800 36000 0 EST} + {2485353600 39600 1 EST} + {2501078400 36000 0 EST} + {2516803200 39600 1 EST} + {2532528000 36000 0 EST} + {2548252800 39600 1 EST} + {2563977600 36000 0 EST} + {2579702400 39600 1 EST} + {2596032000 36000 0 EST} + {2611756800 39600 1 EST} + {2627481600 36000 0 EST} + {2643206400 39600 1 EST} + {2658931200 36000 0 EST} + {2674656000 39600 1 EST} + {2690380800 36000 0 EST} + {2706105600 39600 1 EST} + {2721830400 36000 0 EST} + {2737555200 39600 1 EST} + {2753280000 36000 0 EST} + {2769609600 39600 1 EST} + {2785334400 36000 0 EST} + {2801059200 39600 1 EST} + {2816784000 36000 0 EST} + {2832508800 39600 1 EST} + {2848233600 36000 0 EST} + {2863958400 39600 1 EST} + {2879683200 36000 0 EST} + {2895408000 39600 1 EST} + {2911132800 36000 0 EST} + {2926857600 39600 1 EST} + {2942582400 36000 0 EST} + {2958912000 39600 1 EST} + {2974636800 36000 0 EST} + {2990361600 39600 1 EST} + {3006086400 36000 0 EST} + {3021811200 39600 1 EST} + {3037536000 36000 0 EST} + {3053260800 39600 1 EST} + {3068985600 36000 0 EST} + {3084710400 39600 1 EST} + {3100435200 36000 0 EST} + {3116764800 39600 1 EST} + {3132489600 36000 0 EST} + {3148214400 39600 1 EST} + {3163939200 36000 0 EST} + {3179664000 39600 1 EST} + {3195388800 36000 0 EST} + {3211113600 39600 1 EST} + {3226838400 36000 0 EST} + {3242563200 39600 1 EST} + {3258288000 36000 0 EST} + {3274012800 39600 1 EST} + {3289737600 36000 0 EST} + {3306067200 39600 1 EST} + {3321792000 36000 0 EST} + {3337516800 39600 1 EST} + {3353241600 36000 0 EST} + {3368966400 39600 1 EST} + {3384691200 36000 0 EST} + {3400416000 39600 1 EST} + {3416140800 36000 0 EST} + {3431865600 39600 1 EST} + {3447590400 36000 0 EST} + {3463315200 39600 1 EST} + {3479644800 36000 0 EST} + {3495369600 39600 1 EST} + {3511094400 36000 0 EST} + {3526819200 39600 1 EST} + {3542544000 36000 0 EST} + {3558268800 39600 1 EST} + {3573993600 36000 0 EST} + {3589718400 39600 1 EST} + {3605443200 36000 0 EST} + {3621168000 39600 1 EST} + {3636892800 36000 0 EST} + {3653222400 39600 1 EST} + {3668947200 36000 0 EST} + {3684672000 39600 1 EST} + {3700396800 36000 0 EST} + {3716121600 39600 1 EST} + {3731846400 36000 0 EST} + {3747571200 39600 1 EST} + {3763296000 36000 0 EST} + {3779020800 39600 1 EST} + {3794745600 36000 0 EST} + {3810470400 39600 1 EST} + {3826195200 36000 0 EST} + {3842524800 39600 1 EST} + {3858249600 36000 0 EST} + {3873974400 39600 1 EST} + {3889699200 36000 0 EST} + {3905424000 39600 1 EST} + {3921148800 36000 0 EST} + {3936873600 39600 1 EST} + {3952598400 36000 0 EST} + {3968323200 39600 1 EST} + {3984048000 36000 0 EST} + {4000377600 39600 1 EST} + {4016102400 36000 0 EST} + {4031827200 39600 1 EST} + {4047552000 36000 0 EST} + {4063276800 39600 1 EST} + {4079001600 36000 0 EST} + {4094726400 39600 1 EST} +} diff --git a/library/tzdata/Australia/NSW b/library/tzdata/Australia/NSW index 46758f8..905bdfe 100644 --- a/library/tzdata/Australia/NSW +++ b/library/tzdata/Australia/NSW @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Sydney)]} { - LoadTimeZoneFile Australia/Sydney -} -set TZData(:Australia/NSW) $TZData(:Australia/Sydney) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Sydney)]} { + LoadTimeZoneFile Australia/Sydney +} +set TZData(:Australia/NSW) $TZData(:Australia/Sydney) diff --git a/library/tzdata/Australia/North b/library/tzdata/Australia/North index a6a0b0d..950c88c 100644 --- a/library/tzdata/Australia/North +++ b/library/tzdata/Australia/North @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Darwin)]} { - LoadTimeZoneFile Australia/Darwin -} -set TZData(:Australia/North) $TZData(:Australia/Darwin) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Darwin)]} { + LoadTimeZoneFile Australia/Darwin +} +set TZData(:Australia/North) $TZData(:Australia/Darwin) diff --git a/library/tzdata/Australia/Perth b/library/tzdata/Australia/Perth index 80c6981..5d8f116 100644 --- a/library/tzdata/Australia/Perth +++ b/library/tzdata/Australia/Perth @@ -1,25 +1,25 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Perth) { - {-9223372036854775808 27804 0 LMT} - {-2337925404 28800 0 WST} - {-1672559940 32400 1 WST} - {-1665385200 28800 0 WST} - {-883634400 32400 1 WST} - {-876121200 28800 0 WST} - {-860392800 32400 1 WST} - {-844671600 28800 0 WST} - {-836470800 32400 0 WST} - {152042400 32400 1 WST} - {162928800 28800 0 WST} - {436298400 32400 1 WST} - {447184800 28800 0 WST} - {690314400 32400 1 WST} - {699386400 28800 0 WST} - {1165082400 32400 1 WST} - {1174759200 28800 0 WST} - {1193508000 32400 1 WST} - {1206813600 28800 0 WST} - {1224957600 32400 1 WST} - {1238263200 28800 0 WST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Perth) { + {-9223372036854775808 27804 0 LMT} + {-2337925404 28800 0 WST} + {-1672559940 32400 1 WST} + {-1665385200 28800 0 WST} + {-883634400 32400 1 WST} + {-876121200 28800 0 WST} + {-860392800 32400 1 WST} + {-844671600 28800 0 WST} + {-836470800 32400 0 WST} + {152042400 32400 1 WST} + {162928800 28800 0 WST} + {436298400 32400 1 WST} + {447184800 28800 0 WST} + {690314400 32400 1 WST} + {699386400 28800 0 WST} + {1165082400 32400 1 WST} + {1174759200 28800 0 WST} + {1193508000 32400 1 WST} + {1206813600 28800 0 WST} + {1224957600 32400 1 WST} + {1238263200 28800 0 WST} +} diff --git a/library/tzdata/Australia/Queensland b/library/tzdata/Australia/Queensland index 333cf7f..6246e92 100644 --- a/library/tzdata/Australia/Queensland +++ b/library/tzdata/Australia/Queensland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Brisbane)]} { - LoadTimeZoneFile Australia/Brisbane -} -set TZData(:Australia/Queensland) $TZData(:Australia/Brisbane) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Brisbane)]} { + LoadTimeZoneFile Australia/Brisbane +} +set TZData(:Australia/Queensland) $TZData(:Australia/Brisbane) diff --git a/library/tzdata/Australia/South b/library/tzdata/Australia/South index 26b23c4..9c7dd95 100644 --- a/library/tzdata/Australia/South +++ b/library/tzdata/Australia/South @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Adelaide)]} { - LoadTimeZoneFile Australia/Adelaide -} -set TZData(:Australia/South) $TZData(:Australia/Adelaide) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Adelaide)]} { + LoadTimeZoneFile Australia/Adelaide +} +set TZData(:Australia/South) $TZData(:Australia/Adelaide) diff --git a/library/tzdata/Australia/Sydney b/library/tzdata/Australia/Sydney index 7fa36db..84b1d14 100644 --- a/library/tzdata/Australia/Sydney +++ b/library/tzdata/Australia/Sydney @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Australia/Sydney) { - {-9223372036854775808 36292 0 LMT} - {-2364113092 36000 0 EST} - {-1672567140 39600 1 EST} - {-1665392400 36000 0 EST} - {-883641600 39600 1 EST} - {-876128400 36000 0 EST} - {-860400000 39600 1 EST} - {-844678800 36000 0 EST} - {-828345600 39600 1 EST} - {-813229200 36000 0 EST} - {31500000 36000 0 EST} - {57686400 39600 1 EST} - {67968000 36000 0 EST} - {89136000 39600 1 EST} - {100022400 36000 0 EST} - {120585600 39600 1 EST} - {131472000 36000 0 EST} - {152035200 39600 1 EST} - {162921600 36000 0 EST} - {183484800 39600 1 EST} - {194976000 36000 0 EST} - {215539200 39600 1 EST} - {226425600 36000 0 EST} - {246988800 39600 1 EST} - {257875200 36000 0 EST} - {278438400 39600 1 EST} - {289324800 36000 0 EST} - {309888000 39600 1 EST} - {320774400 36000 0 EST} - {341337600 39600 1 EST} - {352224000 36000 0 EST} - {372787200 39600 1 EST} - {386697600 36000 0 EST} - {404841600 39600 1 EST} - {415728000 36000 0 EST} - {436291200 39600 1 EST} - {447177600 36000 0 EST} - {467740800 39600 1 EST} - {478627200 36000 0 EST} - {499190400 39600 1 EST} - {511286400 36000 0 EST} - {530035200 39600 1 EST} - {542736000 36000 0 EST} - {562089600 39600 1 EST} - {574790400 36000 0 EST} - {594144000 39600 1 EST} - {606240000 36000 0 EST} - {625593600 39600 1 EST} - {636480000 36000 0 EST} - {657043200 39600 1 EST} - {667929600 36000 0 EST} - {688492800 39600 1 EST} - {699379200 36000 0 EST} - {719942400 39600 1 EST} - {731433600 36000 0 EST} - {751996800 39600 1 EST} - {762883200 36000 0 EST} - {783446400 39600 1 EST} - {794332800 36000 0 EST} - {814896000 39600 1 EST} - {828201600 36000 0 EST} - {846345600 39600 1 EST} - {859651200 36000 0 EST} - {877795200 39600 1 EST} - {891100800 36000 0 EST} - {909244800 39600 1 EST} - {922550400 36000 0 EST} - {941299200 39600 1 EST} - {954000000 36000 0 EST} - {967305600 39600 1 EST} - {985449600 36000 0 EST} - {1004198400 39600 1 EST} - {1017504000 36000 0 EST} - {1035648000 39600 1 EST} - {1048953600 36000 0 EST} - {1067097600 39600 1 EST} - {1080403200 36000 0 EST} - {1099152000 39600 1 EST} - {1111852800 36000 0 EST} - {1130601600 39600 1 EST} - {1143907200 36000 0 EST} - {1162051200 39600 1 EST} - {1174752000 36000 0 EST} - {1193500800 39600 1 EST} - {1207411200 36000 0 EST} - {1223136000 39600 1 EST} - {1238860800 36000 0 EST} - {1254585600 39600 1 EST} - {1270310400 36000 0 EST} - {1286035200 39600 1 EST} - {1301760000 36000 0 EST} - {1317484800 39600 1 EST} - {1333209600 36000 0 EST} - {1349539200 39600 1 EST} - {1365264000 36000 0 EST} - {1380988800 39600 1 EST} - {1396713600 36000 0 EST} - {1412438400 39600 1 EST} - {1428163200 36000 0 EST} - {1443888000 39600 1 EST} - {1459612800 36000 0 EST} - {1475337600 39600 1 EST} - {1491062400 36000 0 EST} - {1506787200 39600 1 EST} - {1522512000 36000 0 EST} - {1538841600 39600 1 EST} - {1554566400 36000 0 EST} - {1570291200 39600 1 EST} - {1586016000 36000 0 EST} - {1601740800 39600 1 EST} - {1617465600 36000 0 EST} - {1633190400 39600 1 EST} - {1648915200 36000 0 EST} - {1664640000 39600 1 EST} - {1680364800 36000 0 EST} - {1696089600 39600 1 EST} - {1712419200 36000 0 EST} - {1728144000 39600 1 EST} - {1743868800 36000 0 EST} - {1759593600 39600 1 EST} - {1775318400 36000 0 EST} - {1791043200 39600 1 EST} - {1806768000 36000 0 EST} - {1822492800 39600 1 EST} - {1838217600 36000 0 EST} - {1853942400 39600 1 EST} - {1869667200 36000 0 EST} - {1885996800 39600 1 EST} - {1901721600 36000 0 EST} - {1917446400 39600 1 EST} - {1933171200 36000 0 EST} - {1948896000 39600 1 EST} - {1964620800 36000 0 EST} - {1980345600 39600 1 EST} - {1996070400 36000 0 EST} - {2011795200 39600 1 EST} - {2027520000 36000 0 EST} - {2043244800 39600 1 EST} - {2058969600 36000 0 EST} - {2075299200 39600 1 EST} - {2091024000 36000 0 EST} - {2106748800 39600 1 EST} - {2122473600 36000 0 EST} - {2138198400 39600 1 EST} - {2153923200 36000 0 EST} - {2169648000 39600 1 EST} - {2185372800 36000 0 EST} - {2201097600 39600 1 EST} - {2216822400 36000 0 EST} - {2233152000 39600 1 EST} - {2248876800 36000 0 EST} - {2264601600 39600 1 EST} - {2280326400 36000 0 EST} - {2296051200 39600 1 EST} - {2311776000 36000 0 EST} - {2327500800 39600 1 EST} - {2343225600 36000 0 EST} - {2358950400 39600 1 EST} - {2374675200 36000 0 EST} - {2390400000 39600 1 EST} - {2406124800 36000 0 EST} - {2422454400 39600 1 EST} - {2438179200 36000 0 EST} - {2453904000 39600 1 EST} - {2469628800 36000 0 EST} - {2485353600 39600 1 EST} - {2501078400 36000 0 EST} - {2516803200 39600 1 EST} - {2532528000 36000 0 EST} - {2548252800 39600 1 EST} - {2563977600 36000 0 EST} - {2579702400 39600 1 EST} - {2596032000 36000 0 EST} - {2611756800 39600 1 EST} - {2627481600 36000 0 EST} - {2643206400 39600 1 EST} - {2658931200 36000 0 EST} - {2674656000 39600 1 EST} - {2690380800 36000 0 EST} - {2706105600 39600 1 EST} - {2721830400 36000 0 EST} - {2737555200 39600 1 EST} - {2753280000 36000 0 EST} - {2769609600 39600 1 EST} - {2785334400 36000 0 EST} - {2801059200 39600 1 EST} - {2816784000 36000 0 EST} - {2832508800 39600 1 EST} - {2848233600 36000 0 EST} - {2863958400 39600 1 EST} - {2879683200 36000 0 EST} - {2895408000 39600 1 EST} - {2911132800 36000 0 EST} - {2926857600 39600 1 EST} - {2942582400 36000 0 EST} - {2958912000 39600 1 EST} - {2974636800 36000 0 EST} - {2990361600 39600 1 EST} - {3006086400 36000 0 EST} - {3021811200 39600 1 EST} - {3037536000 36000 0 EST} - {3053260800 39600 1 EST} - {3068985600 36000 0 EST} - {3084710400 39600 1 EST} - {3100435200 36000 0 EST} - {3116764800 39600 1 EST} - {3132489600 36000 0 EST} - {3148214400 39600 1 EST} - {3163939200 36000 0 EST} - {3179664000 39600 1 EST} - {3195388800 36000 0 EST} - {3211113600 39600 1 EST} - {3226838400 36000 0 EST} - {3242563200 39600 1 EST} - {3258288000 36000 0 EST} - {3274012800 39600 1 EST} - {3289737600 36000 0 EST} - {3306067200 39600 1 EST} - {3321792000 36000 0 EST} - {3337516800 39600 1 EST} - {3353241600 36000 0 EST} - {3368966400 39600 1 EST} - {3384691200 36000 0 EST} - {3400416000 39600 1 EST} - {3416140800 36000 0 EST} - {3431865600 39600 1 EST} - {3447590400 36000 0 EST} - {3463315200 39600 1 EST} - {3479644800 36000 0 EST} - {3495369600 39600 1 EST} - {3511094400 36000 0 EST} - {3526819200 39600 1 EST} - {3542544000 36000 0 EST} - {3558268800 39600 1 EST} - {3573993600 36000 0 EST} - {3589718400 39600 1 EST} - {3605443200 36000 0 EST} - {3621168000 39600 1 EST} - {3636892800 36000 0 EST} - {3653222400 39600 1 EST} - {3668947200 36000 0 EST} - {3684672000 39600 1 EST} - {3700396800 36000 0 EST} - {3716121600 39600 1 EST} - {3731846400 36000 0 EST} - {3747571200 39600 1 EST} - {3763296000 36000 0 EST} - {3779020800 39600 1 EST} - {3794745600 36000 0 EST} - {3810470400 39600 1 EST} - {3826195200 36000 0 EST} - {3842524800 39600 1 EST} - {3858249600 36000 0 EST} - {3873974400 39600 1 EST} - {3889699200 36000 0 EST} - {3905424000 39600 1 EST} - {3921148800 36000 0 EST} - {3936873600 39600 1 EST} - {3952598400 36000 0 EST} - {3968323200 39600 1 EST} - {3984048000 36000 0 EST} - {4000377600 39600 1 EST} - {4016102400 36000 0 EST} - {4031827200 39600 1 EST} - {4047552000 36000 0 EST} - {4063276800 39600 1 EST} - {4079001600 36000 0 EST} - {4094726400 39600 1 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Australia/Sydney) { + {-9223372036854775808 36292 0 LMT} + {-2364113092 36000 0 EST} + {-1672567140 39600 1 EST} + {-1665392400 36000 0 EST} + {-883641600 39600 1 EST} + {-876128400 36000 0 EST} + {-860400000 39600 1 EST} + {-844678800 36000 0 EST} + {-828345600 39600 1 EST} + {-813229200 36000 0 EST} + {31500000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {89136000 39600 1 EST} + {100022400 36000 0 EST} + {120585600 39600 1 EST} + {131472000 36000 0 EST} + {152035200 39600 1 EST} + {162921600 36000 0 EST} + {183484800 39600 1 EST} + {194976000 36000 0 EST} + {215539200 39600 1 EST} + {226425600 36000 0 EST} + {246988800 39600 1 EST} + {257875200 36000 0 EST} + {278438400 39600 1 EST} + {289324800 36000 0 EST} + {309888000 39600 1 EST} + {320774400 36000 0 EST} + {341337600 39600 1 EST} + {352224000 36000 0 EST} + {372787200 39600 1 EST} + {386697600 36000 0 EST} + {404841600 39600 1 EST} + {415728000 36000 0 EST} + {436291200 39600 1 EST} + {447177600 36000 0 EST} + {467740800 39600 1 EST} + {478627200 36000 0 EST} + {499190400 39600 1 EST} + {511286400 36000 0 EST} + {530035200 39600 1 EST} + {542736000 36000 0 EST} + {562089600 39600 1 EST} + {574790400 36000 0 EST} + {594144000 39600 1 EST} + {606240000 36000 0 EST} + {625593600 39600 1 EST} + {636480000 36000 0 EST} + {657043200 39600 1 EST} + {667929600 36000 0 EST} + {688492800 39600 1 EST} + {699379200 36000 0 EST} + {719942400 39600 1 EST} + {731433600 36000 0 EST} + {751996800 39600 1 EST} + {762883200 36000 0 EST} + {783446400 39600 1 EST} + {794332800 36000 0 EST} + {814896000 39600 1 EST} + {828201600 36000 0 EST} + {846345600 39600 1 EST} + {859651200 36000 0 EST} + {877795200 39600 1 EST} + {891100800 36000 0 EST} + {909244800 39600 1 EST} + {922550400 36000 0 EST} + {941299200 39600 1 EST} + {954000000 36000 0 EST} + {967305600 39600 1 EST} + {985449600 36000 0 EST} + {1004198400 39600 1 EST} + {1017504000 36000 0 EST} + {1035648000 39600 1 EST} + {1048953600 36000 0 EST} + {1067097600 39600 1 EST} + {1080403200 36000 0 EST} + {1099152000 39600 1 EST} + {1111852800 36000 0 EST} + {1130601600 39600 1 EST} + {1143907200 36000 0 EST} + {1162051200 39600 1 EST} + {1174752000 36000 0 EST} + {1193500800 39600 1 EST} + {1207411200 36000 0 EST} + {1223136000 39600 1 EST} + {1238860800 36000 0 EST} + {1254585600 39600 1 EST} + {1270310400 36000 0 EST} + {1286035200 39600 1 EST} + {1301760000 36000 0 EST} + {1317484800 39600 1 EST} + {1333209600 36000 0 EST} + {1349539200 39600 1 EST} + {1365264000 36000 0 EST} + {1380988800 39600 1 EST} + {1396713600 36000 0 EST} + {1412438400 39600 1 EST} + {1428163200 36000 0 EST} + {1443888000 39600 1 EST} + {1459612800 36000 0 EST} + {1475337600 39600 1 EST} + {1491062400 36000 0 EST} + {1506787200 39600 1 EST} + {1522512000 36000 0 EST} + {1538841600 39600 1 EST} + {1554566400 36000 0 EST} + {1570291200 39600 1 EST} + {1586016000 36000 0 EST} + {1601740800 39600 1 EST} + {1617465600 36000 0 EST} + {1633190400 39600 1 EST} + {1648915200 36000 0 EST} + {1664640000 39600 1 EST} + {1680364800 36000 0 EST} + {1696089600 39600 1 EST} + {1712419200 36000 0 EST} + {1728144000 39600 1 EST} + {1743868800 36000 0 EST} + {1759593600 39600 1 EST} + {1775318400 36000 0 EST} + {1791043200 39600 1 EST} + {1806768000 36000 0 EST} + {1822492800 39600 1 EST} + {1838217600 36000 0 EST} + {1853942400 39600 1 EST} + {1869667200 36000 0 EST} + {1885996800 39600 1 EST} + {1901721600 36000 0 EST} + {1917446400 39600 1 EST} + {1933171200 36000 0 EST} + {1948896000 39600 1 EST} + {1964620800 36000 0 EST} + {1980345600 39600 1 EST} + {1996070400 36000 0 EST} + {2011795200 39600 1 EST} + {2027520000 36000 0 EST} + {2043244800 39600 1 EST} + {2058969600 36000 0 EST} + {2075299200 39600 1 EST} + {2091024000 36000 0 EST} + {2106748800 39600 1 EST} + {2122473600 36000 0 EST} + {2138198400 39600 1 EST} + {2153923200 36000 0 EST} + {2169648000 39600 1 EST} + {2185372800 36000 0 EST} + {2201097600 39600 1 EST} + {2216822400 36000 0 EST} + {2233152000 39600 1 EST} + {2248876800 36000 0 EST} + {2264601600 39600 1 EST} + {2280326400 36000 0 EST} + {2296051200 39600 1 EST} + {2311776000 36000 0 EST} + {2327500800 39600 1 EST} + {2343225600 36000 0 EST} + {2358950400 39600 1 EST} + {2374675200 36000 0 EST} + {2390400000 39600 1 EST} + {2406124800 36000 0 EST} + {2422454400 39600 1 EST} + {2438179200 36000 0 EST} + {2453904000 39600 1 EST} + {2469628800 36000 0 EST} + {2485353600 39600 1 EST} + {2501078400 36000 0 EST} + {2516803200 39600 1 EST} + {2532528000 36000 0 EST} + {2548252800 39600 1 EST} + {2563977600 36000 0 EST} + {2579702400 39600 1 EST} + {2596032000 36000 0 EST} + {2611756800 39600 1 EST} + {2627481600 36000 0 EST} + {2643206400 39600 1 EST} + {2658931200 36000 0 EST} + {2674656000 39600 1 EST} + {2690380800 36000 0 EST} + {2706105600 39600 1 EST} + {2721830400 36000 0 EST} + {2737555200 39600 1 EST} + {2753280000 36000 0 EST} + {2769609600 39600 1 EST} + {2785334400 36000 0 EST} + {2801059200 39600 1 EST} + {2816784000 36000 0 EST} + {2832508800 39600 1 EST} + {2848233600 36000 0 EST} + {2863958400 39600 1 EST} + {2879683200 36000 0 EST} + {2895408000 39600 1 EST} + {2911132800 36000 0 EST} + {2926857600 39600 1 EST} + {2942582400 36000 0 EST} + {2958912000 39600 1 EST} + {2974636800 36000 0 EST} + {2990361600 39600 1 EST} + {3006086400 36000 0 EST} + {3021811200 39600 1 EST} + {3037536000 36000 0 EST} + {3053260800 39600 1 EST} + {3068985600 36000 0 EST} + {3084710400 39600 1 EST} + {3100435200 36000 0 EST} + {3116764800 39600 1 EST} + {3132489600 36000 0 EST} + {3148214400 39600 1 EST} + {3163939200 36000 0 EST} + {3179664000 39600 1 EST} + {3195388800 36000 0 EST} + {3211113600 39600 1 EST} + {3226838400 36000 0 EST} + {3242563200 39600 1 EST} + {3258288000 36000 0 EST} + {3274012800 39600 1 EST} + {3289737600 36000 0 EST} + {3306067200 39600 1 EST} + {3321792000 36000 0 EST} + {3337516800 39600 1 EST} + {3353241600 36000 0 EST} + {3368966400 39600 1 EST} + {3384691200 36000 0 EST} + {3400416000 39600 1 EST} + {3416140800 36000 0 EST} + {3431865600 39600 1 EST} + {3447590400 36000 0 EST} + {3463315200 39600 1 EST} + {3479644800 36000 0 EST} + {3495369600 39600 1 EST} + {3511094400 36000 0 EST} + {3526819200 39600 1 EST} + {3542544000 36000 0 EST} + {3558268800 39600 1 EST} + {3573993600 36000 0 EST} + {3589718400 39600 1 EST} + {3605443200 36000 0 EST} + {3621168000 39600 1 EST} + {3636892800 36000 0 EST} + {3653222400 39600 1 EST} + {3668947200 36000 0 EST} + {3684672000 39600 1 EST} + {3700396800 36000 0 EST} + {3716121600 39600 1 EST} + {3731846400 36000 0 EST} + {3747571200 39600 1 EST} + {3763296000 36000 0 EST} + {3779020800 39600 1 EST} + {3794745600 36000 0 EST} + {3810470400 39600 1 EST} + {3826195200 36000 0 EST} + {3842524800 39600 1 EST} + {3858249600 36000 0 EST} + {3873974400 39600 1 EST} + {3889699200 36000 0 EST} + {3905424000 39600 1 EST} + {3921148800 36000 0 EST} + {3936873600 39600 1 EST} + {3952598400 36000 0 EST} + {3968323200 39600 1 EST} + {3984048000 36000 0 EST} + {4000377600 39600 1 EST} + {4016102400 36000 0 EST} + {4031827200 39600 1 EST} + {4047552000 36000 0 EST} + {4063276800 39600 1 EST} + {4079001600 36000 0 EST} + {4094726400 39600 1 EST} +} diff --git a/library/tzdata/Australia/Tasmania b/library/tzdata/Australia/Tasmania index 757f9ce..1849bde 100644 --- a/library/tzdata/Australia/Tasmania +++ b/library/tzdata/Australia/Tasmania @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Hobart)]} { - LoadTimeZoneFile Australia/Hobart -} -set TZData(:Australia/Tasmania) $TZData(:Australia/Hobart) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Hobart)]} { + LoadTimeZoneFile Australia/Hobart +} +set TZData(:Australia/Tasmania) $TZData(:Australia/Hobart) diff --git a/library/tzdata/Australia/Victoria b/library/tzdata/Australia/Victoria index ddab7c1..037bfeb 100644 --- a/library/tzdata/Australia/Victoria +++ b/library/tzdata/Australia/Victoria @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Melbourne)]} { - LoadTimeZoneFile Australia/Melbourne -} -set TZData(:Australia/Victoria) $TZData(:Australia/Melbourne) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Melbourne)]} { + LoadTimeZoneFile Australia/Melbourne +} +set TZData(:Australia/Victoria) $TZData(:Australia/Melbourne) diff --git a/library/tzdata/Australia/West b/library/tzdata/Australia/West index 52ec575..4689f7e 100644 --- a/library/tzdata/Australia/West +++ b/library/tzdata/Australia/West @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Perth)]} { - LoadTimeZoneFile Australia/Perth -} -set TZData(:Australia/West) $TZData(:Australia/Perth) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Perth)]} { + LoadTimeZoneFile Australia/Perth +} +set TZData(:Australia/West) $TZData(:Australia/Perth) diff --git a/library/tzdata/Australia/Yancowinna b/library/tzdata/Australia/Yancowinna index 032b862..b7d668d 100644 --- a/library/tzdata/Australia/Yancowinna +++ b/library/tzdata/Australia/Yancowinna @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Australia/Broken_Hill)]} { - LoadTimeZoneFile Australia/Broken_Hill -} -set TZData(:Australia/Yancowinna) $TZData(:Australia/Broken_Hill) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Australia/Broken_Hill)]} { + LoadTimeZoneFile Australia/Broken_Hill +} +set TZData(:Australia/Yancowinna) $TZData(:Australia/Broken_Hill) diff --git a/library/tzdata/Brazil/Acre b/library/tzdata/Brazil/Acre index dc21ad2..abb0b98 100644 --- a/library/tzdata/Brazil/Acre +++ b/library/tzdata/Brazil/Acre @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Rio_Branco)]} { - LoadTimeZoneFile America/Rio_Branco -} -set TZData(:Brazil/Acre) $TZData(:America/Rio_Branco) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Rio_Branco)]} { + LoadTimeZoneFile America/Rio_Branco +} +set TZData(:Brazil/Acre) $TZData(:America/Rio_Branco) diff --git a/library/tzdata/Brazil/DeNoronha b/library/tzdata/Brazil/DeNoronha index 0f038fa..53accb4 100644 --- a/library/tzdata/Brazil/DeNoronha +++ b/library/tzdata/Brazil/DeNoronha @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Noronha)]} { - LoadTimeZoneFile America/Noronha -} -set TZData(:Brazil/DeNoronha) $TZData(:America/Noronha) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Noronha)]} { + LoadTimeZoneFile America/Noronha +} +set TZData(:Brazil/DeNoronha) $TZData(:America/Noronha) diff --git a/library/tzdata/Brazil/East b/library/tzdata/Brazil/East index ca46381..f684633 100644 --- a/library/tzdata/Brazil/East +++ b/library/tzdata/Brazil/East @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Sao_Paulo)]} { - LoadTimeZoneFile America/Sao_Paulo -} -set TZData(:Brazil/East) $TZData(:America/Sao_Paulo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Sao_Paulo)]} { + LoadTimeZoneFile America/Sao_Paulo +} +set TZData(:Brazil/East) $TZData(:America/Sao_Paulo) diff --git a/library/tzdata/Brazil/West b/library/tzdata/Brazil/West index 77231d5..67676d9 100644 --- a/library/tzdata/Brazil/West +++ b/library/tzdata/Brazil/West @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Manaus)]} { - LoadTimeZoneFile America/Manaus -} -set TZData(:Brazil/West) $TZData(:America/Manaus) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Manaus)]} { + LoadTimeZoneFile America/Manaus +} +set TZData(:Brazil/West) $TZData(:America/Manaus) diff --git a/library/tzdata/CET b/library/tzdata/CET index 68ab621..b08750a 100644 --- a/library/tzdata/CET +++ b/library/tzdata/CET @@ -1,265 +1,265 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:CET) { - {-9223372036854775808 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 1 CEST} - {-766623600 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:CET) { + {-9223372036854775808 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 1 CEST} + {-766623600 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/CST6CDT b/library/tzdata/CST6CDT index 379866d..11e45f0 100644 --- a/library/tzdata/CST6CDT +++ b/library/tzdata/CST6CDT @@ -1,278 +1,278 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:CST6CDT) { - {-9223372036854775808 -21600 0 CST} - {-1633276800 -18000 1 CDT} - {-1615136400 -21600 0 CST} - {-1601827200 -18000 1 CDT} - {-1583686800 -21600 0 CST} - {-880214400 -18000 1 CWT} - {-769395600 -18000 1 CPT} - {-765392400 -21600 0 CST} - {-84384000 -18000 1 CDT} - {-68662800 -21600 0 CST} - {-52934400 -18000 1 CDT} - {-37213200 -21600 0 CST} - {-21484800 -18000 1 CDT} - {-5763600 -21600 0 CST} - {9964800 -18000 1 CDT} - {25686000 -21600 0 CST} - {41414400 -18000 1 CDT} - {57740400 -21600 0 CST} - {73468800 -18000 1 CDT} - {89190000 -21600 0 CST} - {104918400 -18000 1 CDT} - {120639600 -21600 0 CST} - {126691200 -18000 1 CDT} - {152089200 -21600 0 CST} - {162374400 -18000 1 CDT} - {183538800 -21600 0 CST} - {199267200 -18000 1 CDT} - {215593200 -21600 0 CST} - {230716800 -18000 1 CDT} - {247042800 -21600 0 CST} - {262771200 -18000 1 CDT} - {278492400 -21600 0 CST} - {294220800 -18000 1 CDT} - {309942000 -21600 0 CST} - {325670400 -18000 1 CDT} - {341391600 -21600 0 CST} - {357120000 -18000 1 CDT} - {372841200 -21600 0 CST} - {388569600 -18000 1 CDT} - {404895600 -21600 0 CST} - {420019200 -18000 1 CDT} - {436345200 -21600 0 CST} - {452073600 -18000 1 CDT} - {467794800 -21600 0 CST} - {483523200 -18000 1 CDT} - {499244400 -21600 0 CST} - {514972800 -18000 1 CDT} - {530694000 -21600 0 CST} - {544608000 -18000 1 CDT} - {562143600 -21600 0 CST} - {576057600 -18000 1 CDT} - {594198000 -21600 0 CST} - {607507200 -18000 1 CDT} - {625647600 -21600 0 CST} - {638956800 -18000 1 CDT} - {657097200 -21600 0 CST} - {671011200 -18000 1 CDT} - {688546800 -21600 0 CST} - {702460800 -18000 1 CDT} - {719996400 -21600 0 CST} - {733910400 -18000 1 CDT} - {752050800 -21600 0 CST} - {765360000 -18000 1 CDT} - {783500400 -21600 0 CST} - {796809600 -18000 1 CDT} - {814950000 -21600 0 CST} - {828864000 -18000 1 CDT} - {846399600 -21600 0 CST} - {860313600 -18000 1 CDT} - {877849200 -21600 0 CST} - {891763200 -18000 1 CDT} - {909298800 -21600 0 CST} - {923212800 -18000 1 CDT} - {941353200 -21600 0 CST} - {954662400 -18000 1 CDT} - {972802800 -21600 0 CST} - {986112000 -18000 1 CDT} - {1004252400 -21600 0 CST} - {1018166400 -18000 1 CDT} - {1035702000 -21600 0 CST} - {1049616000 -18000 1 CDT} - {1067151600 -21600 0 CST} - {1081065600 -18000 1 CDT} - {1099206000 -21600 0 CST} - {1112515200 -18000 1 CDT} - {1130655600 -21600 0 CST} - {1143964800 -18000 1 CDT} - {1162105200 -21600 0 CST} - {1173600000 -18000 1 CDT} - {1194159600 -21600 0 CST} - {1205049600 -18000 1 CDT} - {1225609200 -21600 0 CST} - {1236499200 -18000 1 CDT} - {1257058800 -21600 0 CST} - {1268553600 -18000 1 CDT} - {1289113200 -21600 0 CST} - {1300003200 -18000 1 CDT} - {1320562800 -21600 0 CST} - {1331452800 -18000 1 CDT} - {1352012400 -21600 0 CST} - {1362902400 -18000 1 CDT} - {1383462000 -21600 0 CST} - {1394352000 -18000 1 CDT} - {1414911600 -21600 0 CST} - {1425801600 -18000 1 CDT} - {1446361200 -21600 0 CST} - {1457856000 -18000 1 CDT} - {1478415600 -21600 0 CST} - {1489305600 -18000 1 CDT} - {1509865200 -21600 0 CST} - {1520755200 -18000 1 CDT} - {1541314800 -21600 0 CST} - {1552204800 -18000 1 CDT} - {1572764400 -21600 0 CST} - {1583654400 -18000 1 CDT} - {1604214000 -21600 0 CST} - {1615708800 -18000 1 CDT} - {1636268400 -21600 0 CST} - {1647158400 -18000 1 CDT} - {1667718000 -21600 0 CST} - {1678608000 -18000 1 CDT} - {1699167600 -21600 0 CST} - {1710057600 -18000 1 CDT} - {1730617200 -21600 0 CST} - {1741507200 -18000 1 CDT} - {1762066800 -21600 0 CST} - {1772956800 -18000 1 CDT} - {1793516400 -21600 0 CST} - {1805011200 -18000 1 CDT} - {1825570800 -21600 0 CST} - {1836460800 -18000 1 CDT} - {1857020400 -21600 0 CST} - {1867910400 -18000 1 CDT} - {1888470000 -21600 0 CST} - {1899360000 -18000 1 CDT} - {1919919600 -21600 0 CST} - {1930809600 -18000 1 CDT} - {1951369200 -21600 0 CST} - {1962864000 -18000 1 CDT} - {1983423600 -21600 0 CST} - {1994313600 -18000 1 CDT} - {2014873200 -21600 0 CST} - {2025763200 -18000 1 CDT} - {2046322800 -21600 0 CST} - {2057212800 -18000 1 CDT} - {2077772400 -21600 0 CST} - {2088662400 -18000 1 CDT} - {2109222000 -21600 0 CST} - {2120112000 -18000 1 CDT} - {2140671600 -21600 0 CST} - {2152166400 -18000 1 CDT} - {2172726000 -21600 0 CST} - {2183616000 -18000 1 CDT} - {2204175600 -21600 0 CST} - {2215065600 -18000 1 CDT} - {2235625200 -21600 0 CST} - {2246515200 -18000 1 CDT} - {2267074800 -21600 0 CST} - {2277964800 -18000 1 CDT} - {2298524400 -21600 0 CST} - {2309414400 -18000 1 CDT} - {2329974000 -21600 0 CST} - {2341468800 -18000 1 CDT} - {2362028400 -21600 0 CST} - {2372918400 -18000 1 CDT} - {2393478000 -21600 0 CST} - {2404368000 -18000 1 CDT} - {2424927600 -21600 0 CST} - {2435817600 -18000 1 CDT} - {2456377200 -21600 0 CST} - {2467267200 -18000 1 CDT} - {2487826800 -21600 0 CST} - {2499321600 -18000 1 CDT} - {2519881200 -21600 0 CST} - {2530771200 -18000 1 CDT} - {2551330800 -21600 0 CST} - {2562220800 -18000 1 CDT} - {2582780400 -21600 0 CST} - {2593670400 -18000 1 CDT} - {2614230000 -21600 0 CST} - {2625120000 -18000 1 CDT} - {2645679600 -21600 0 CST} - {2656569600 -18000 1 CDT} - {2677129200 -21600 0 CST} - {2688624000 -18000 1 CDT} - {2709183600 -21600 0 CST} - {2720073600 -18000 1 CDT} - {2740633200 -21600 0 CST} - {2751523200 -18000 1 CDT} - {2772082800 -21600 0 CST} - {2782972800 -18000 1 CDT} - {2803532400 -21600 0 CST} - {2814422400 -18000 1 CDT} - {2834982000 -21600 0 CST} - {2846476800 -18000 1 CDT} - {2867036400 -21600 0 CST} - {2877926400 -18000 1 CDT} - {2898486000 -21600 0 CST} - {2909376000 -18000 1 CDT} - {2929935600 -21600 0 CST} - {2940825600 -18000 1 CDT} - {2961385200 -21600 0 CST} - {2972275200 -18000 1 CDT} - {2992834800 -21600 0 CST} - {3003724800 -18000 1 CDT} - {3024284400 -21600 0 CST} - {3035779200 -18000 1 CDT} - {3056338800 -21600 0 CST} - {3067228800 -18000 1 CDT} - {3087788400 -21600 0 CST} - {3098678400 -18000 1 CDT} - {3119238000 -21600 0 CST} - {3130128000 -18000 1 CDT} - {3150687600 -21600 0 CST} - {3161577600 -18000 1 CDT} - {3182137200 -21600 0 CST} - {3193027200 -18000 1 CDT} - {3213586800 -21600 0 CST} - {3225081600 -18000 1 CDT} - {3245641200 -21600 0 CST} - {3256531200 -18000 1 CDT} - {3277090800 -21600 0 CST} - {3287980800 -18000 1 CDT} - {3308540400 -21600 0 CST} - {3319430400 -18000 1 CDT} - {3339990000 -21600 0 CST} - {3350880000 -18000 1 CDT} - {3371439600 -21600 0 CST} - {3382934400 -18000 1 CDT} - {3403494000 -21600 0 CST} - {3414384000 -18000 1 CDT} - {3434943600 -21600 0 CST} - {3445833600 -18000 1 CDT} - {3466393200 -21600 0 CST} - {3477283200 -18000 1 CDT} - {3497842800 -21600 0 CST} - {3508732800 -18000 1 CDT} - {3529292400 -21600 0 CST} - {3540182400 -18000 1 CDT} - {3560742000 -21600 0 CST} - {3572236800 -18000 1 CDT} - {3592796400 -21600 0 CST} - {3603686400 -18000 1 CDT} - {3624246000 -21600 0 CST} - {3635136000 -18000 1 CDT} - {3655695600 -21600 0 CST} - {3666585600 -18000 1 CDT} - {3687145200 -21600 0 CST} - {3698035200 -18000 1 CDT} - {3718594800 -21600 0 CST} - {3730089600 -18000 1 CDT} - {3750649200 -21600 0 CST} - {3761539200 -18000 1 CDT} - {3782098800 -21600 0 CST} - {3792988800 -18000 1 CDT} - {3813548400 -21600 0 CST} - {3824438400 -18000 1 CDT} - {3844998000 -21600 0 CST} - {3855888000 -18000 1 CDT} - {3876447600 -21600 0 CST} - {3887337600 -18000 1 CDT} - {3907897200 -21600 0 CST} - {3919392000 -18000 1 CDT} - {3939951600 -21600 0 CST} - {3950841600 -18000 1 CDT} - {3971401200 -21600 0 CST} - {3982291200 -18000 1 CDT} - {4002850800 -21600 0 CST} - {4013740800 -18000 1 CDT} - {4034300400 -21600 0 CST} - {4045190400 -18000 1 CDT} - {4065750000 -21600 0 CST} - {4076640000 -18000 1 CDT} - {4097199600 -21600 0 CST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:CST6CDT) { + {-9223372036854775808 -21600 0 CST} + {-1633276800 -18000 1 CDT} + {-1615136400 -21600 0 CST} + {-1601827200 -18000 1 CDT} + {-1583686800 -21600 0 CST} + {-880214400 -18000 1 CWT} + {-769395600 -18000 1 CPT} + {-765392400 -21600 0 CST} + {-84384000 -18000 1 CDT} + {-68662800 -21600 0 CST} + {-52934400 -18000 1 CDT} + {-37213200 -21600 0 CST} + {-21484800 -18000 1 CDT} + {-5763600 -21600 0 CST} + {9964800 -18000 1 CDT} + {25686000 -21600 0 CST} + {41414400 -18000 1 CDT} + {57740400 -21600 0 CST} + {73468800 -18000 1 CDT} + {89190000 -21600 0 CST} + {104918400 -18000 1 CDT} + {120639600 -21600 0 CST} + {126691200 -18000 1 CDT} + {152089200 -21600 0 CST} + {162374400 -18000 1 CDT} + {183538800 -21600 0 CST} + {199267200 -18000 1 CDT} + {215593200 -21600 0 CST} + {230716800 -18000 1 CDT} + {247042800 -21600 0 CST} + {262771200 -18000 1 CDT} + {278492400 -21600 0 CST} + {294220800 -18000 1 CDT} + {309942000 -21600 0 CST} + {325670400 -18000 1 CDT} + {341391600 -21600 0 CST} + {357120000 -18000 1 CDT} + {372841200 -21600 0 CST} + {388569600 -18000 1 CDT} + {404895600 -21600 0 CST} + {420019200 -18000 1 CDT} + {436345200 -21600 0 CST} + {452073600 -18000 1 CDT} + {467794800 -21600 0 CST} + {483523200 -18000 1 CDT} + {499244400 -21600 0 CST} + {514972800 -18000 1 CDT} + {530694000 -21600 0 CST} + {544608000 -18000 1 CDT} + {562143600 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {607507200 -18000 1 CDT} + {625647600 -21600 0 CST} + {638956800 -18000 1 CDT} + {657097200 -21600 0 CST} + {671011200 -18000 1 CDT} + {688546800 -21600 0 CST} + {702460800 -18000 1 CDT} + {719996400 -21600 0 CST} + {733910400 -18000 1 CDT} + {752050800 -21600 0 CST} + {765360000 -18000 1 CDT} + {783500400 -21600 0 CST} + {796809600 -18000 1 CDT} + {814950000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {986112000 -18000 1 CDT} + {1004252400 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1173600000 -18000 1 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/Canada/Atlantic b/library/tzdata/Canada/Atlantic index adf7856..d1478d9 100644 --- a/library/tzdata/Canada/Atlantic +++ b/library/tzdata/Canada/Atlantic @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Halifax)]} { - LoadTimeZoneFile America/Halifax -} -set TZData(:Canada/Atlantic) $TZData(:America/Halifax) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Halifax)]} { + LoadTimeZoneFile America/Halifax +} +set TZData(:Canada/Atlantic) $TZData(:America/Halifax) diff --git a/library/tzdata/Canada/Central b/library/tzdata/Canada/Central index a050d74..b04bef9 100644 --- a/library/tzdata/Canada/Central +++ b/library/tzdata/Canada/Central @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Winnipeg)]} { - LoadTimeZoneFile America/Winnipeg -} -set TZData(:Canada/Central) $TZData(:America/Winnipeg) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Winnipeg)]} { + LoadTimeZoneFile America/Winnipeg +} +set TZData(:Canada/Central) $TZData(:America/Winnipeg) diff --git a/library/tzdata/Canada/East-Saskatchewan b/library/tzdata/Canada/East-Saskatchewan index 4139d33..f7e500c 100644 --- a/library/tzdata/Canada/East-Saskatchewan +++ b/library/tzdata/Canada/East-Saskatchewan @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Regina)]} { - LoadTimeZoneFile America/Regina -} -set TZData(:Canada/East-Saskatchewan) $TZData(:America/Regina) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Regina)]} { + LoadTimeZoneFile America/Regina +} +set TZData(:Canada/East-Saskatchewan) $TZData(:America/Regina) diff --git a/library/tzdata/Canada/Eastern b/library/tzdata/Canada/Eastern index 3b99d63..74528eb 100644 --- a/library/tzdata/Canada/Eastern +++ b/library/tzdata/Canada/Eastern @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Toronto)]} { - LoadTimeZoneFile America/Toronto -} -set TZData(:Canada/Eastern) $TZData(:America/Toronto) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Toronto)]} { + LoadTimeZoneFile America/Toronto +} +set TZData(:Canada/Eastern) $TZData(:America/Toronto) diff --git a/library/tzdata/Canada/Mountain b/library/tzdata/Canada/Mountain index 5342803..8c6458d 100644 --- a/library/tzdata/Canada/Mountain +++ b/library/tzdata/Canada/Mountain @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Edmonton)]} { - LoadTimeZoneFile America/Edmonton -} -set TZData(:Canada/Mountain) $TZData(:America/Edmonton) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Edmonton)]} { + LoadTimeZoneFile America/Edmonton +} +set TZData(:Canada/Mountain) $TZData(:America/Edmonton) diff --git a/library/tzdata/Canada/Newfoundland b/library/tzdata/Canada/Newfoundland index ca1ab26..6904cde 100644 --- a/library/tzdata/Canada/Newfoundland +++ b/library/tzdata/Canada/Newfoundland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/St_Johns)]} { - LoadTimeZoneFile America/St_Johns -} -set TZData(:Canada/Newfoundland) $TZData(:America/St_Johns) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/St_Johns)]} { + LoadTimeZoneFile America/St_Johns +} +set TZData(:Canada/Newfoundland) $TZData(:America/St_Johns) diff --git a/library/tzdata/Canada/Pacific b/library/tzdata/Canada/Pacific index 49ba7da..4d70342 100644 --- a/library/tzdata/Canada/Pacific +++ b/library/tzdata/Canada/Pacific @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Vancouver)]} { - LoadTimeZoneFile America/Vancouver -} -set TZData(:Canada/Pacific) $TZData(:America/Vancouver) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Vancouver)]} { + LoadTimeZoneFile America/Vancouver +} +set TZData(:Canada/Pacific) $TZData(:America/Vancouver) diff --git a/library/tzdata/Canada/Saskatchewan b/library/tzdata/Canada/Saskatchewan index 4c19827..cd56446 100644 --- a/library/tzdata/Canada/Saskatchewan +++ b/library/tzdata/Canada/Saskatchewan @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Regina)]} { - LoadTimeZoneFile America/Regina -} -set TZData(:Canada/Saskatchewan) $TZData(:America/Regina) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Regina)]} { + LoadTimeZoneFile America/Regina +} +set TZData(:Canada/Saskatchewan) $TZData(:America/Regina) diff --git a/library/tzdata/Canada/Yukon b/library/tzdata/Canada/Yukon index 34e5846..04b8368 100644 --- a/library/tzdata/Canada/Yukon +++ b/library/tzdata/Canada/Yukon @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Whitehorse)]} { - LoadTimeZoneFile America/Whitehorse -} -set TZData(:Canada/Yukon) $TZData(:America/Whitehorse) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Whitehorse)]} { + LoadTimeZoneFile America/Whitehorse +} +set TZData(:Canada/Yukon) $TZData(:America/Whitehorse) diff --git a/library/tzdata/Chile/Continental b/library/tzdata/Chile/Continental index 2844b93..0f858a3 100644 --- a/library/tzdata/Chile/Continental +++ b/library/tzdata/Chile/Continental @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Santiago)]} { - LoadTimeZoneFile America/Santiago -} -set TZData(:Chile/Continental) $TZData(:America/Santiago) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Santiago)]} { + LoadTimeZoneFile America/Santiago +} +set TZData(:Chile/Continental) $TZData(:America/Santiago) diff --git a/library/tzdata/Chile/EasterIsland b/library/tzdata/Chile/EasterIsland index 9b91321..4edc034 100644 --- a/library/tzdata/Chile/EasterIsland +++ b/library/tzdata/Chile/EasterIsland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Easter)]} { - LoadTimeZoneFile Pacific/Easter -} -set TZData(:Chile/EasterIsland) $TZData(:Pacific/Easter) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Easter)]} { + LoadTimeZoneFile Pacific/Easter +} +set TZData(:Chile/EasterIsland) $TZData(:Pacific/Easter) diff --git a/library/tzdata/Cuba b/library/tzdata/Cuba index a0eb0e6..17f7b45 100644 --- a/library/tzdata/Cuba +++ b/library/tzdata/Cuba @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Havana)]} { - LoadTimeZoneFile America/Havana -} -set TZData(:Cuba) $TZData(:America/Havana) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Havana)]} { + LoadTimeZoneFile America/Havana +} +set TZData(:Cuba) $TZData(:America/Havana) diff --git a/library/tzdata/EET b/library/tzdata/EET index 1c62ae5..e7c102a 100644 --- a/library/tzdata/EET +++ b/library/tzdata/EET @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:EET) { - {-9223372036854775808 7200 0 EET} - {228877200 10800 1 EEST} - {243997200 7200 0 EET} - {260326800 10800 1 EEST} - {276051600 7200 0 EET} - {291776400 10800 1 EEST} - {307501200 7200 0 EET} - {323830800 10800 1 EEST} - {338950800 7200 0 EET} - {354675600 10800 1 EEST} - {370400400 7200 0 EET} - {386125200 10800 1 EEST} - {401850000 7200 0 EET} - {417574800 10800 1 EEST} - {433299600 7200 0 EET} - {449024400 10800 1 EEST} - {465354000 7200 0 EET} - {481078800 10800 1 EEST} - {496803600 7200 0 EET} - {512528400 10800 1 EEST} - {528253200 7200 0 EET} - {543978000 10800 1 EEST} - {559702800 7200 0 EET} - {575427600 10800 1 EEST} - {591152400 7200 0 EET} - {606877200 10800 1 EEST} - {622602000 7200 0 EET} - {638326800 10800 1 EEST} - {654656400 7200 0 EET} - {670381200 10800 1 EEST} - {686106000 7200 0 EET} - {701830800 10800 1 EEST} - {717555600 7200 0 EET} - {733280400 10800 1 EEST} - {749005200 7200 0 EET} - {764730000 10800 1 EEST} - {780454800 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:EET) { + {-9223372036854775808 7200 0 EET} + {228877200 10800 1 EEST} + {243997200 7200 0 EET} + {260326800 10800 1 EEST} + {276051600 7200 0 EET} + {291776400 10800 1 EEST} + {307501200 7200 0 EET} + {323830800 10800 1 EEST} + {338950800 7200 0 EET} + {354675600 10800 1 EEST} + {370400400 7200 0 EET} + {386125200 10800 1 EEST} + {401850000 7200 0 EET} + {417574800 10800 1 EEST} + {433299600 7200 0 EET} + {449024400 10800 1 EEST} + {465354000 7200 0 EET} + {481078800 10800 1 EEST} + {496803600 7200 0 EET} + {512528400 10800 1 EEST} + {528253200 7200 0 EET} + {543978000 10800 1 EEST} + {559702800 7200 0 EET} + {575427600 10800 1 EEST} + {591152400 7200 0 EET} + {606877200 10800 1 EEST} + {622602000 7200 0 EET} + {638326800 10800 1 EEST} + {654656400 7200 0 EET} + {670381200 10800 1 EEST} + {686106000 7200 0 EET} + {701830800 10800 1 EEST} + {717555600 7200 0 EET} + {733280400 10800 1 EEST} + {749005200 7200 0 EET} + {764730000 10800 1 EEST} + {780454800 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/EST b/library/tzdata/EST index 224e15f..72c5b17 100644 --- a/library/tzdata/EST +++ b/library/tzdata/EST @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:EST) { - {-9223372036854775808 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:EST) { + {-9223372036854775808 -18000 0 EST} +} diff --git a/library/tzdata/EST5EDT b/library/tzdata/EST5EDT index a25adb1..968833e 100644 --- a/library/tzdata/EST5EDT +++ b/library/tzdata/EST5EDT @@ -1,278 +1,278 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:EST5EDT) { - {-9223372036854775808 -18000 0 EST} - {-1633280400 -14400 1 EDT} - {-1615140000 -18000 0 EST} - {-1601830800 -14400 1 EDT} - {-1583690400 -18000 0 EST} - {-880218000 -14400 1 EWT} - {-769395600 -14400 1 EPT} - {-765396000 -18000 0 EST} - {-84387600 -14400 1 EDT} - {-68666400 -18000 0 EST} - {-52938000 -14400 1 EDT} - {-37216800 -18000 0 EST} - {-21488400 -14400 1 EDT} - {-5767200 -18000 0 EST} - {9961200 -14400 1 EDT} - {25682400 -18000 0 EST} - {41410800 -14400 1 EDT} - {57736800 -18000 0 EST} - {73465200 -14400 1 EDT} - {89186400 -18000 0 EST} - {104914800 -14400 1 EDT} - {120636000 -18000 0 EST} - {126687600 -14400 1 EDT} - {152085600 -18000 0 EST} - {162370800 -14400 1 EDT} - {183535200 -18000 0 EST} - {199263600 -14400 1 EDT} - {215589600 -18000 0 EST} - {230713200 -14400 1 EDT} - {247039200 -18000 0 EST} - {262767600 -14400 1 EDT} - {278488800 -18000 0 EST} - {294217200 -14400 1 EDT} - {309938400 -18000 0 EST} - {325666800 -14400 1 EDT} - {341388000 -18000 0 EST} - {357116400 -14400 1 EDT} - {372837600 -18000 0 EST} - {388566000 -14400 1 EDT} - {404892000 -18000 0 EST} - {420015600 -14400 1 EDT} - {436341600 -18000 0 EST} - {452070000 -14400 1 EDT} - {467791200 -18000 0 EST} - {483519600 -14400 1 EDT} - {499240800 -18000 0 EST} - {514969200 -14400 1 EDT} - {530690400 -18000 0 EST} - {544604400 -14400 1 EDT} - {562140000 -18000 0 EST} - {576054000 -14400 1 EDT} - {594194400 -18000 0 EST} - {607503600 -14400 1 EDT} - {625644000 -18000 0 EST} - {638953200 -14400 1 EDT} - {657093600 -18000 0 EST} - {671007600 -14400 1 EDT} - {688543200 -18000 0 EST} - {702457200 -14400 1 EDT} - {719992800 -18000 0 EST} - {733906800 -14400 1 EDT} - {752047200 -18000 0 EST} - {765356400 -14400 1 EDT} - {783496800 -18000 0 EST} - {796806000 -14400 1 EDT} - {814946400 -18000 0 EST} - {828860400 -14400 1 EDT} - {846396000 -18000 0 EST} - {860310000 -14400 1 EDT} - {877845600 -18000 0 EST} - {891759600 -14400 1 EDT} - {909295200 -18000 0 EST} - {923209200 -14400 1 EDT} - {941349600 -18000 0 EST} - {954658800 -14400 1 EDT} - {972799200 -18000 0 EST} - {986108400 -14400 1 EDT} - {1004248800 -18000 0 EST} - {1018162800 -14400 1 EDT} - {1035698400 -18000 0 EST} - {1049612400 -14400 1 EDT} - {1067148000 -18000 0 EST} - {1081062000 -14400 1 EDT} - {1099202400 -18000 0 EST} - {1112511600 -14400 1 EDT} - {1130652000 -18000 0 EST} - {1143961200 -14400 1 EDT} - {1162101600 -18000 0 EST} - {1173596400 -14400 1 EDT} - {1194156000 -18000 0 EST} - {1205046000 -14400 1 EDT} - {1225605600 -18000 0 EST} - {1236495600 -14400 1 EDT} - {1257055200 -18000 0 EST} - {1268550000 -14400 1 EDT} - {1289109600 -18000 0 EST} - {1299999600 -14400 1 EDT} - {1320559200 -18000 0 EST} - {1331449200 -14400 1 EDT} - {1352008800 -18000 0 EST} - {1362898800 -14400 1 EDT} - {1383458400 -18000 0 EST} - {1394348400 -14400 1 EDT} - {1414908000 -18000 0 EST} - {1425798000 -14400 1 EDT} - {1446357600 -18000 0 EST} - {1457852400 -14400 1 EDT} - {1478412000 -18000 0 EST} - {1489302000 -14400 1 EDT} - {1509861600 -18000 0 EST} - {1520751600 -14400 1 EDT} - {1541311200 -18000 0 EST} - {1552201200 -14400 1 EDT} - {1572760800 -18000 0 EST} - {1583650800 -14400 1 EDT} - {1604210400 -18000 0 EST} - {1615705200 -14400 1 EDT} - {1636264800 -18000 0 EST} - {1647154800 -14400 1 EDT} - {1667714400 -18000 0 EST} - {1678604400 -14400 1 EDT} - {1699164000 -18000 0 EST} - {1710054000 -14400 1 EDT} - {1730613600 -18000 0 EST} - {1741503600 -14400 1 EDT} - {1762063200 -18000 0 EST} - {1772953200 -14400 1 EDT} - {1793512800 -18000 0 EST} - {1805007600 -14400 1 EDT} - {1825567200 -18000 0 EST} - {1836457200 -14400 1 EDT} - {1857016800 -18000 0 EST} - {1867906800 -14400 1 EDT} - {1888466400 -18000 0 EST} - {1899356400 -14400 1 EDT} - {1919916000 -18000 0 EST} - {1930806000 -14400 1 EDT} - {1951365600 -18000 0 EST} - {1962860400 -14400 1 EDT} - {1983420000 -18000 0 EST} - {1994310000 -14400 1 EDT} - {2014869600 -18000 0 EST} - {2025759600 -14400 1 EDT} - {2046319200 -18000 0 EST} - {2057209200 -14400 1 EDT} - {2077768800 -18000 0 EST} - {2088658800 -14400 1 EDT} - {2109218400 -18000 0 EST} - {2120108400 -14400 1 EDT} - {2140668000 -18000 0 EST} - {2152162800 -14400 1 EDT} - {2172722400 -18000 0 EST} - {2183612400 -14400 1 EDT} - {2204172000 -18000 0 EST} - {2215062000 -14400 1 EDT} - {2235621600 -18000 0 EST} - {2246511600 -14400 1 EDT} - {2267071200 -18000 0 EST} - {2277961200 -14400 1 EDT} - {2298520800 -18000 0 EST} - {2309410800 -14400 1 EDT} - {2329970400 -18000 0 EST} - {2341465200 -14400 1 EDT} - {2362024800 -18000 0 EST} - {2372914800 -14400 1 EDT} - {2393474400 -18000 0 EST} - {2404364400 -14400 1 EDT} - {2424924000 -18000 0 EST} - {2435814000 -14400 1 EDT} - {2456373600 -18000 0 EST} - {2467263600 -14400 1 EDT} - {2487823200 -18000 0 EST} - {2499318000 -14400 1 EDT} - {2519877600 -18000 0 EST} - {2530767600 -14400 1 EDT} - {2551327200 -18000 0 EST} - {2562217200 -14400 1 EDT} - {2582776800 -18000 0 EST} - {2593666800 -14400 1 EDT} - {2614226400 -18000 0 EST} - {2625116400 -14400 1 EDT} - {2645676000 -18000 0 EST} - {2656566000 -14400 1 EDT} - {2677125600 -18000 0 EST} - {2688620400 -14400 1 EDT} - {2709180000 -18000 0 EST} - {2720070000 -14400 1 EDT} - {2740629600 -18000 0 EST} - {2751519600 -14400 1 EDT} - {2772079200 -18000 0 EST} - {2782969200 -14400 1 EDT} - {2803528800 -18000 0 EST} - {2814418800 -14400 1 EDT} - {2834978400 -18000 0 EST} - {2846473200 -14400 1 EDT} - {2867032800 -18000 0 EST} - {2877922800 -14400 1 EDT} - {2898482400 -18000 0 EST} - {2909372400 -14400 1 EDT} - {2929932000 -18000 0 EST} - {2940822000 -14400 1 EDT} - {2961381600 -18000 0 EST} - {2972271600 -14400 1 EDT} - {2992831200 -18000 0 EST} - {3003721200 -14400 1 EDT} - {3024280800 -18000 0 EST} - {3035775600 -14400 1 EDT} - {3056335200 -18000 0 EST} - {3067225200 -14400 1 EDT} - {3087784800 -18000 0 EST} - {3098674800 -14400 1 EDT} - {3119234400 -18000 0 EST} - {3130124400 -14400 1 EDT} - {3150684000 -18000 0 EST} - {3161574000 -14400 1 EDT} - {3182133600 -18000 0 EST} - {3193023600 -14400 1 EDT} - {3213583200 -18000 0 EST} - {3225078000 -14400 1 EDT} - {3245637600 -18000 0 EST} - {3256527600 -14400 1 EDT} - {3277087200 -18000 0 EST} - {3287977200 -14400 1 EDT} - {3308536800 -18000 0 EST} - {3319426800 -14400 1 EDT} - {3339986400 -18000 0 EST} - {3350876400 -14400 1 EDT} - {3371436000 -18000 0 EST} - {3382930800 -14400 1 EDT} - {3403490400 -18000 0 EST} - {3414380400 -14400 1 EDT} - {3434940000 -18000 0 EST} - {3445830000 -14400 1 EDT} - {3466389600 -18000 0 EST} - {3477279600 -14400 1 EDT} - {3497839200 -18000 0 EST} - {3508729200 -14400 1 EDT} - {3529288800 -18000 0 EST} - {3540178800 -14400 1 EDT} - {3560738400 -18000 0 EST} - {3572233200 -14400 1 EDT} - {3592792800 -18000 0 EST} - {3603682800 -14400 1 EDT} - {3624242400 -18000 0 EST} - {3635132400 -14400 1 EDT} - {3655692000 -18000 0 EST} - {3666582000 -14400 1 EDT} - {3687141600 -18000 0 EST} - {3698031600 -14400 1 EDT} - {3718591200 -18000 0 EST} - {3730086000 -14400 1 EDT} - {3750645600 -18000 0 EST} - {3761535600 -14400 1 EDT} - {3782095200 -18000 0 EST} - {3792985200 -14400 1 EDT} - {3813544800 -18000 0 EST} - {3824434800 -14400 1 EDT} - {3844994400 -18000 0 EST} - {3855884400 -14400 1 EDT} - {3876444000 -18000 0 EST} - {3887334000 -14400 1 EDT} - {3907893600 -18000 0 EST} - {3919388400 -14400 1 EDT} - {3939948000 -18000 0 EST} - {3950838000 -14400 1 EDT} - {3971397600 -18000 0 EST} - {3982287600 -14400 1 EDT} - {4002847200 -18000 0 EST} - {4013737200 -14400 1 EDT} - {4034296800 -18000 0 EST} - {4045186800 -14400 1 EDT} - {4065746400 -18000 0 EST} - {4076636400 -14400 1 EDT} - {4097196000 -18000 0 EST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:EST5EDT) { + {-9223372036854775808 -18000 0 EST} + {-1633280400 -14400 1 EDT} + {-1615140000 -18000 0 EST} + {-1601830800 -14400 1 EDT} + {-1583690400 -18000 0 EST} + {-880218000 -14400 1 EWT} + {-769395600 -14400 1 EPT} + {-765396000 -18000 0 EST} + {-84387600 -14400 1 EDT} + {-68666400 -18000 0 EST} + {-52938000 -14400 1 EDT} + {-37216800 -18000 0 EST} + {-21488400 -14400 1 EDT} + {-5767200 -18000 0 EST} + {9961200 -14400 1 EDT} + {25682400 -18000 0 EST} + {41410800 -14400 1 EDT} + {57736800 -18000 0 EST} + {73465200 -14400 1 EDT} + {89186400 -18000 0 EST} + {104914800 -14400 1 EDT} + {120636000 -18000 0 EST} + {126687600 -14400 1 EDT} + {152085600 -18000 0 EST} + {162370800 -14400 1 EDT} + {183535200 -18000 0 EST} + {199263600 -14400 1 EDT} + {215589600 -18000 0 EST} + {230713200 -14400 1 EDT} + {247039200 -18000 0 EST} + {262767600 -14400 1 EDT} + {278488800 -18000 0 EST} + {294217200 -14400 1 EDT} + {309938400 -18000 0 EST} + {325666800 -14400 1 EDT} + {341388000 -18000 0 EST} + {357116400 -14400 1 EDT} + {372837600 -18000 0 EST} + {388566000 -14400 1 EDT} + {404892000 -18000 0 EST} + {420015600 -14400 1 EDT} + {436341600 -18000 0 EST} + {452070000 -14400 1 EDT} + {467791200 -18000 0 EST} + {483519600 -14400 1 EDT} + {499240800 -18000 0 EST} + {514969200 -14400 1 EDT} + {530690400 -18000 0 EST} + {544604400 -14400 1 EDT} + {562140000 -18000 0 EST} + {576054000 -14400 1 EDT} + {594194400 -18000 0 EST} + {607503600 -14400 1 EDT} + {625644000 -18000 0 EST} + {638953200 -14400 1 EDT} + {657093600 -18000 0 EST} + {671007600 -14400 1 EDT} + {688543200 -18000 0 EST} + {702457200 -14400 1 EDT} + {719992800 -18000 0 EST} + {733906800 -14400 1 EDT} + {752047200 -18000 0 EST} + {765356400 -14400 1 EDT} + {783496800 -18000 0 EST} + {796806000 -14400 1 EDT} + {814946400 -18000 0 EST} + {828860400 -14400 1 EDT} + {846396000 -18000 0 EST} + {860310000 -14400 1 EDT} + {877845600 -18000 0 EST} + {891759600 -14400 1 EDT} + {909295200 -18000 0 EST} + {923209200 -14400 1 EDT} + {941349600 -18000 0 EST} + {954658800 -14400 1 EDT} + {972799200 -18000 0 EST} + {986108400 -14400 1 EDT} + {1004248800 -18000 0 EST} + {1018162800 -14400 1 EDT} + {1035698400 -18000 0 EST} + {1049612400 -14400 1 EDT} + {1067148000 -18000 0 EST} + {1081062000 -14400 1 EDT} + {1099202400 -18000 0 EST} + {1112511600 -14400 1 EDT} + {1130652000 -18000 0 EST} + {1143961200 -14400 1 EDT} + {1162101600 -18000 0 EST} + {1173596400 -14400 1 EDT} + {1194156000 -18000 0 EST} + {1205046000 -14400 1 EDT} + {1225605600 -18000 0 EST} + {1236495600 -14400 1 EDT} + {1257055200 -18000 0 EST} + {1268550000 -14400 1 EDT} + {1289109600 -18000 0 EST} + {1299999600 -14400 1 EDT} + {1320559200 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} +} diff --git a/library/tzdata/Egypt b/library/tzdata/Egypt index 52707f2..63341bc 100644 --- a/library/tzdata/Egypt +++ b/library/tzdata/Egypt @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Africa/Cairo)]} { - LoadTimeZoneFile Africa/Cairo -} -set TZData(:Egypt) $TZData(:Africa/Cairo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Africa/Cairo)]} { + LoadTimeZoneFile Africa/Cairo +} +set TZData(:Egypt) $TZData(:Africa/Cairo) diff --git a/library/tzdata/Eire b/library/tzdata/Eire index cb3357e..c86c91c 100644 --- a/library/tzdata/Eire +++ b/library/tzdata/Eire @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Dublin)]} { - LoadTimeZoneFile Europe/Dublin -} -set TZData(:Eire) $TZData(:Europe/Dublin) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Dublin)]} { + LoadTimeZoneFile Europe/Dublin +} +set TZData(:Eire) $TZData(:Europe/Dublin) diff --git a/library/tzdata/Etc/GMT b/library/tzdata/Etc/GMT index 9c7fde0..7454fd5 100644 --- a/library/tzdata/Etc/GMT +++ b/library/tzdata/Etc/GMT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT) { - {-9223372036854775808 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT) { + {-9223372036854775808 0 0 GMT} +} diff --git a/library/tzdata/Etc/GMT+0 b/library/tzdata/Etc/GMT+0 index b60be1f..017dee1 100644 --- a/library/tzdata/Etc/GMT+0 +++ b/library/tzdata/Etc/GMT+0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Etc/GMT+0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Etc/GMT+0) $TZData(:Etc/GMT) diff --git a/library/tzdata/Etc/GMT+1 b/library/tzdata/Etc/GMT+1 index 109c036..12f97ba 100644 --- a/library/tzdata/Etc/GMT+1 +++ b/library/tzdata/Etc/GMT+1 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+1) { - {-9223372036854775808 -3600 0 GMT+1} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+1) { + {-9223372036854775808 -3600 0 GMT+1} +} diff --git a/library/tzdata/Etc/GMT+10 b/library/tzdata/Etc/GMT+10 index 44d896c..6ea50bb 100644 --- a/library/tzdata/Etc/GMT+10 +++ b/library/tzdata/Etc/GMT+10 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+10) { - {-9223372036854775808 -36000 0 GMT+10} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+10) { + {-9223372036854775808 -36000 0 GMT+10} +} diff --git a/library/tzdata/Etc/GMT+11 b/library/tzdata/Etc/GMT+11 index 208f4ca..c91b169 100644 --- a/library/tzdata/Etc/GMT+11 +++ b/library/tzdata/Etc/GMT+11 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+11) { - {-9223372036854775808 -39600 0 GMT+11} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+11) { + {-9223372036854775808 -39600 0 GMT+11} +} diff --git a/library/tzdata/Etc/GMT+12 b/library/tzdata/Etc/GMT+12 index 732de37..29a4cee 100644 --- a/library/tzdata/Etc/GMT+12 +++ b/library/tzdata/Etc/GMT+12 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+12) { - {-9223372036854775808 -43200 0 GMT+12} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+12) { + {-9223372036854775808 -43200 0 GMT+12} +} diff --git a/library/tzdata/Etc/GMT+2 b/library/tzdata/Etc/GMT+2 index b408335..8c6b526 100644 --- a/library/tzdata/Etc/GMT+2 +++ b/library/tzdata/Etc/GMT+2 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+2) { - {-9223372036854775808 -7200 0 GMT+2} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+2) { + {-9223372036854775808 -7200 0 GMT+2} +} diff --git a/library/tzdata/Etc/GMT+3 b/library/tzdata/Etc/GMT+3 index ef4ae20..862571d 100644 --- a/library/tzdata/Etc/GMT+3 +++ b/library/tzdata/Etc/GMT+3 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+3) { - {-9223372036854775808 -10800 0 GMT+3} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+3) { + {-9223372036854775808 -10800 0 GMT+3} +} diff --git a/library/tzdata/Etc/GMT+4 b/library/tzdata/Etc/GMT+4 index 161c789..a933bbc 100644 --- a/library/tzdata/Etc/GMT+4 +++ b/library/tzdata/Etc/GMT+4 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+4) { - {-9223372036854775808 -14400 0 GMT+4} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+4) { + {-9223372036854775808 -14400 0 GMT+4} +} diff --git a/library/tzdata/Etc/GMT+5 b/library/tzdata/Etc/GMT+5 index f1879c8..80cc25c 100644 --- a/library/tzdata/Etc/GMT+5 +++ b/library/tzdata/Etc/GMT+5 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+5) { - {-9223372036854775808 -18000 0 GMT+5} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+5) { + {-9223372036854775808 -18000 0 GMT+5} +} diff --git a/library/tzdata/Etc/GMT+6 b/library/tzdata/Etc/GMT+6 index b8b8382..bc57bd6 100644 --- a/library/tzdata/Etc/GMT+6 +++ b/library/tzdata/Etc/GMT+6 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+6) { - {-9223372036854775808 -21600 0 GMT+6} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+6) { + {-9223372036854775808 -21600 0 GMT+6} +} diff --git a/library/tzdata/Etc/GMT+7 b/library/tzdata/Etc/GMT+7 index 2ab56f9..d419eb9 100644 --- a/library/tzdata/Etc/GMT+7 +++ b/library/tzdata/Etc/GMT+7 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+7) { - {-9223372036854775808 -25200 0 GMT+7} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+7) { + {-9223372036854775808 -25200 0 GMT+7} +} diff --git a/library/tzdata/Etc/GMT+8 b/library/tzdata/Etc/GMT+8 index 08c5bdf..705ad40 100644 --- a/library/tzdata/Etc/GMT+8 +++ b/library/tzdata/Etc/GMT+8 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+8) { - {-9223372036854775808 -28800 0 GMT+8} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+8) { + {-9223372036854775808 -28800 0 GMT+8} +} diff --git a/library/tzdata/Etc/GMT+9 b/library/tzdata/Etc/GMT+9 index 977d4b2..4086639 100644 --- a/library/tzdata/Etc/GMT+9 +++ b/library/tzdata/Etc/GMT+9 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT+9) { - {-9223372036854775808 -32400 0 GMT+9} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT+9) { + {-9223372036854775808 -32400 0 GMT+9} +} diff --git a/library/tzdata/Etc/GMT-0 b/library/tzdata/Etc/GMT-0 index 9d34107..d8913d5 100644 --- a/library/tzdata/Etc/GMT-0 +++ b/library/tzdata/Etc/GMT-0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Etc/GMT-0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Etc/GMT-0) $TZData(:Etc/GMT) diff --git a/library/tzdata/Etc/GMT-1 b/library/tzdata/Etc/GMT-1 index 77cae3a..a44dd1f 100644 --- a/library/tzdata/Etc/GMT-1 +++ b/library/tzdata/Etc/GMT-1 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-1) { - {-9223372036854775808 3600 0 GMT-1} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-1) { + {-9223372036854775808 3600 0 GMT-1} +} diff --git a/library/tzdata/Etc/GMT-10 b/library/tzdata/Etc/GMT-10 index 69ea253..1c50d01 100644 --- a/library/tzdata/Etc/GMT-10 +++ b/library/tzdata/Etc/GMT-10 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-10) { - {-9223372036854775808 36000 0 GMT-10} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-10) { + {-9223372036854775808 36000 0 GMT-10} +} diff --git a/library/tzdata/Etc/GMT-11 b/library/tzdata/Etc/GMT-11 index 554fa68..d07710f 100644 --- a/library/tzdata/Etc/GMT-11 +++ b/library/tzdata/Etc/GMT-11 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-11) { - {-9223372036854775808 39600 0 GMT-11} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-11) { + {-9223372036854775808 39600 0 GMT-11} +} diff --git a/library/tzdata/Etc/GMT-12 b/library/tzdata/Etc/GMT-12 index 25b31ce..a23b98d 100644 --- a/library/tzdata/Etc/GMT-12 +++ b/library/tzdata/Etc/GMT-12 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-12) { - {-9223372036854775808 43200 0 GMT-12} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-12) { + {-9223372036854775808 43200 0 GMT-12} +} diff --git a/library/tzdata/Etc/GMT-13 b/library/tzdata/Etc/GMT-13 index b049979..1a6700a 100644 --- a/library/tzdata/Etc/GMT-13 +++ b/library/tzdata/Etc/GMT-13 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-13) { - {-9223372036854775808 46800 0 GMT-13} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-13) { + {-9223372036854775808 46800 0 GMT-13} +} diff --git a/library/tzdata/Etc/GMT-14 b/library/tzdata/Etc/GMT-14 index 488df67..3707e21 100644 --- a/library/tzdata/Etc/GMT-14 +++ b/library/tzdata/Etc/GMT-14 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-14) { - {-9223372036854775808 50400 0 GMT-14} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-14) { + {-9223372036854775808 50400 0 GMT-14} +} diff --git a/library/tzdata/Etc/GMT-2 b/library/tzdata/Etc/GMT-2 index 2d716b1..f9dea16 100644 --- a/library/tzdata/Etc/GMT-2 +++ b/library/tzdata/Etc/GMT-2 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-2) { - {-9223372036854775808 7200 0 GMT-2} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-2) { + {-9223372036854775808 7200 0 GMT-2} +} diff --git a/library/tzdata/Etc/GMT-3 b/library/tzdata/Etc/GMT-3 index 344d48e..99145b8 100644 --- a/library/tzdata/Etc/GMT-3 +++ b/library/tzdata/Etc/GMT-3 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-3) { - {-9223372036854775808 10800 0 GMT-3} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-3) { + {-9223372036854775808 10800 0 GMT-3} +} diff --git a/library/tzdata/Etc/GMT-4 b/library/tzdata/Etc/GMT-4 index 6f5a134..27b4fec 100644 --- a/library/tzdata/Etc/GMT-4 +++ b/library/tzdata/Etc/GMT-4 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-4) { - {-9223372036854775808 14400 0 GMT-4} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-4) { + {-9223372036854775808 14400 0 GMT-4} +} diff --git a/library/tzdata/Etc/GMT-5 b/library/tzdata/Etc/GMT-5 index ca03b45..dbe3df7 100644 --- a/library/tzdata/Etc/GMT-5 +++ b/library/tzdata/Etc/GMT-5 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-5) { - {-9223372036854775808 18000 0 GMT-5} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-5) { + {-9223372036854775808 18000 0 GMT-5} +} diff --git a/library/tzdata/Etc/GMT-6 b/library/tzdata/Etc/GMT-6 index 69c724f..414dbfa 100644 --- a/library/tzdata/Etc/GMT-6 +++ b/library/tzdata/Etc/GMT-6 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-6) { - {-9223372036854775808 21600 0 GMT-6} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-6) { + {-9223372036854775808 21600 0 GMT-6} +} diff --git a/library/tzdata/Etc/GMT-7 b/library/tzdata/Etc/GMT-7 index c39fd98..2bd59db 100644 --- a/library/tzdata/Etc/GMT-7 +++ b/library/tzdata/Etc/GMT-7 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-7) { - {-9223372036854775808 25200 0 GMT-7} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-7) { + {-9223372036854775808 25200 0 GMT-7} +} diff --git a/library/tzdata/Etc/GMT-8 b/library/tzdata/Etc/GMT-8 index ec85c12..7303721 100644 --- a/library/tzdata/Etc/GMT-8 +++ b/library/tzdata/Etc/GMT-8 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-8) { - {-9223372036854775808 28800 0 GMT-8} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-8) { + {-9223372036854775808 28800 0 GMT-8} +} diff --git a/library/tzdata/Etc/GMT-9 b/library/tzdata/Etc/GMT-9 index 87e3b91..46e6878 100644 --- a/library/tzdata/Etc/GMT-9 +++ b/library/tzdata/Etc/GMT-9 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/GMT-9) { - {-9223372036854775808 32400 0 GMT-9} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/GMT-9) { + {-9223372036854775808 32400 0 GMT-9} +} diff --git a/library/tzdata/Etc/GMT0 b/library/tzdata/Etc/GMT0 index 91087c2..dba1fe9 100644 --- a/library/tzdata/Etc/GMT0 +++ b/library/tzdata/Etc/GMT0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Etc/GMT0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Etc/GMT0) $TZData(:Etc/GMT) diff --git a/library/tzdata/Etc/Greenwich b/library/tzdata/Etc/Greenwich index 38f8753..53acea0 100644 --- a/library/tzdata/Etc/Greenwich +++ b/library/tzdata/Etc/Greenwich @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Etc/Greenwich) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Etc/Greenwich) $TZData(:Etc/GMT) diff --git a/library/tzdata/Etc/UCT b/library/tzdata/Etc/UCT index 48cb188..f7d795e 100644 --- a/library/tzdata/Etc/UCT +++ b/library/tzdata/Etc/UCT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/UCT) { - {-9223372036854775808 0 0 UCT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/UCT) { + {-9223372036854775808 0 0 UCT} +} diff --git a/library/tzdata/Etc/UTC b/library/tzdata/Etc/UTC index eb41277..db5954b 100644 --- a/library/tzdata/Etc/UTC +++ b/library/tzdata/Etc/UTC @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/UTC) { - {-9223372036854775808 0 0 UTC} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Etc/UTC) { + {-9223372036854775808 0 0 UTC} +} diff --git a/library/tzdata/Etc/Universal b/library/tzdata/Etc/Universal index 0d1c335..a3b7547 100644 --- a/library/tzdata/Etc/Universal +++ b/library/tzdata/Etc/Universal @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:Etc/Universal) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:Etc/Universal) $TZData(:Etc/UTC) diff --git a/library/tzdata/Etc/Zulu b/library/tzdata/Etc/Zulu index 6a0a8fd..f643db9 100644 --- a/library/tzdata/Etc/Zulu +++ b/library/tzdata/Etc/Zulu @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:Etc/Zulu) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:Etc/Zulu) $TZData(:Etc/UTC) diff --git a/library/tzdata/Europe/Amsterdam b/library/tzdata/Europe/Amsterdam index 82a9b04..bd89127 100644 --- a/library/tzdata/Europe/Amsterdam +++ b/library/tzdata/Europe/Amsterdam @@ -1,310 +1,310 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Amsterdam) { - {-9223372036854775808 1172 0 LMT} - {-4260212372 1172 0 AMT} - {-1693700372 4772 1 NST} - {-1680484772 1172 0 AMT} - {-1663453172 4772 1 NST} - {-1650147572 1172 0 AMT} - {-1633213172 4772 1 NST} - {-1617488372 1172 0 AMT} - {-1601158772 4772 1 NST} - {-1586038772 1172 0 AMT} - {-1569709172 4772 1 NST} - {-1554589172 1172 0 AMT} - {-1538259572 4772 1 NST} - {-1523139572 1172 0 AMT} - {-1507501172 4772 1 NST} - {-1490566772 1172 0 AMT} - {-1470176372 4772 1 NST} - {-1459117172 1172 0 AMT} - {-1443997172 4772 1 NST} - {-1427667572 1172 0 AMT} - {-1406672372 4772 1 NST} - {-1396217972 1172 0 AMT} - {-1376950772 4772 1 NST} - {-1364768372 1172 0 AMT} - {-1345414772 4772 1 NST} - {-1333318772 1172 0 AMT} - {-1313792372 4772 1 NST} - {-1301264372 1172 0 AMT} - {-1282256372 4772 1 NST} - {-1269814772 1172 0 AMT} - {-1250720372 4772 1 NST} - {-1238365172 1172 0 AMT} - {-1219184372 4772 1 NST} - {-1206915572 1172 0 AMT} - {-1186957172 4772 1 NST} - {-1175465972 1172 0 AMT} - {-1156025972 4772 1 NST} - {-1143411572 1172 0 AMT} - {-1124489972 4772 1 NST} - {-1111961972 1172 0 AMT} - {-1092953972 4772 1 NST} - {-1080512372 1172 0 AMT} - {-1061331572 4772 1 NST} - {-1049062772 1172 0 AMT} - {-1029190772 4772 1 NST} - {-1025741972 4800 0 NEST} - {-1017613200 1200 0 NET} - {-998259600 4800 1 NEST} - {-986163600 1200 0 NET} - {-966723600 4800 1 NEST} - {-954109200 1200 0 NET} - {-935022000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 0 CEST} - {-766623600 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Amsterdam) { + {-9223372036854775808 1172 0 LMT} + {-4260212372 1172 0 AMT} + {-1693700372 4772 1 NST} + {-1680484772 1172 0 AMT} + {-1663453172 4772 1 NST} + {-1650147572 1172 0 AMT} + {-1633213172 4772 1 NST} + {-1617488372 1172 0 AMT} + {-1601158772 4772 1 NST} + {-1586038772 1172 0 AMT} + {-1569709172 4772 1 NST} + {-1554589172 1172 0 AMT} + {-1538259572 4772 1 NST} + {-1523139572 1172 0 AMT} + {-1507501172 4772 1 NST} + {-1490566772 1172 0 AMT} + {-1470176372 4772 1 NST} + {-1459117172 1172 0 AMT} + {-1443997172 4772 1 NST} + {-1427667572 1172 0 AMT} + {-1406672372 4772 1 NST} + {-1396217972 1172 0 AMT} + {-1376950772 4772 1 NST} + {-1364768372 1172 0 AMT} + {-1345414772 4772 1 NST} + {-1333318772 1172 0 AMT} + {-1313792372 4772 1 NST} + {-1301264372 1172 0 AMT} + {-1282256372 4772 1 NST} + {-1269814772 1172 0 AMT} + {-1250720372 4772 1 NST} + {-1238365172 1172 0 AMT} + {-1219184372 4772 1 NST} + {-1206915572 1172 0 AMT} + {-1186957172 4772 1 NST} + {-1175465972 1172 0 AMT} + {-1156025972 4772 1 NST} + {-1143411572 1172 0 AMT} + {-1124489972 4772 1 NST} + {-1111961972 1172 0 AMT} + {-1092953972 4772 1 NST} + {-1080512372 1172 0 AMT} + {-1061331572 4772 1 NST} + {-1049062772 1172 0 AMT} + {-1029190772 4772 1 NST} + {-1025741972 4800 0 NEST} + {-1017613200 1200 0 NET} + {-998259600 4800 1 NEST} + {-986163600 1200 0 NET} + {-966723600 4800 1 NEST} + {-954109200 1200 0 NET} + {-935022000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 0 CEST} + {-766623600 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Andorra b/library/tzdata/Europe/Andorra index abb33b7..89233fe 100644 --- a/library/tzdata/Europe/Andorra +++ b/library/tzdata/Europe/Andorra @@ -1,237 +1,237 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Andorra) { - {-9223372036854775808 364 0 LMT} - {-2177453164 0 0 WET} - {-733881600 3600 0 CET} - {481078800 7200 0 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Andorra) { + {-9223372036854775808 364 0 LMT} + {-2177453164 0 0 WET} + {-733881600 3600 0 CET} + {481078800 7200 0 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Athens b/library/tzdata/Europe/Athens index 512030d..f8df408 100644 --- a/library/tzdata/Europe/Athens +++ b/library/tzdata/Europe/Athens @@ -1,268 +1,268 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Athens) { - {-9223372036854775808 5692 0 LMT} - {-2344642492 5692 0 AMT} - {-1686101632 7200 0 EET} - {-1182996000 10800 1 EEST} - {-1178161200 7200 0 EET} - {-906861600 10800 1 EEST} - {-904878000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844477200 7200 1 CEST} - {-828237600 3600 0 CET} - {-812422800 7200 0 EET} - {-552362400 10800 1 EEST} - {-541652400 7200 0 EET} - {166485600 10800 1 EEST} - {186184800 7200 0 EET} - {198028800 10800 1 EEST} - {213753600 7200 0 EET} - {228873600 10800 1 EEST} - {244080000 7200 0 EET} - {260323200 10800 1 EEST} - {275446800 7200 0 EET} - {291798000 10800 1 EEST} - {307407600 7200 0 EET} - {323388000 10800 1 EEST} - {338936400 7200 0 EET} - {347148000 7200 0 EET} - {354675600 10800 1 EEST} - {370400400 7200 0 EET} - {386125200 10800 1 EEST} - {401850000 7200 0 EET} - {417574800 10800 1 EEST} - {433299600 7200 0 EET} - {449024400 10800 1 EEST} - {465354000 7200 0 EET} - {481078800 10800 1 EEST} - {496803600 7200 0 EET} - {512528400 10800 1 EEST} - {528253200 7200 0 EET} - {543978000 10800 1 EEST} - {559702800 7200 0 EET} - {575427600 10800 1 EEST} - {591152400 7200 0 EET} - {606877200 10800 1 EEST} - {622602000 7200 0 EET} - {638326800 10800 1 EEST} - {654656400 7200 0 EET} - {670381200 10800 1 EEST} - {686106000 7200 0 EET} - {701830800 10800 1 EEST} - {717555600 7200 0 EET} - {733280400 10800 1 EEST} - {749005200 7200 0 EET} - {764730000 10800 1 EEST} - {780454800 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Athens) { + {-9223372036854775808 5692 0 LMT} + {-2344642492 5692 0 AMT} + {-1686101632 7200 0 EET} + {-1182996000 10800 1 EEST} + {-1178161200 7200 0 EET} + {-906861600 10800 1 EEST} + {-904878000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844477200 7200 1 CEST} + {-828237600 3600 0 CET} + {-812422800 7200 0 EET} + {-552362400 10800 1 EEST} + {-541652400 7200 0 EET} + {166485600 10800 1 EEST} + {186184800 7200 0 EET} + {198028800 10800 1 EEST} + {213753600 7200 0 EET} + {228873600 10800 1 EEST} + {244080000 7200 0 EET} + {260323200 10800 1 EEST} + {275446800 7200 0 EET} + {291798000 10800 1 EEST} + {307407600 7200 0 EET} + {323388000 10800 1 EEST} + {338936400 7200 0 EET} + {347148000 7200 0 EET} + {354675600 10800 1 EEST} + {370400400 7200 0 EET} + {386125200 10800 1 EEST} + {401850000 7200 0 EET} + {417574800 10800 1 EEST} + {433299600 7200 0 EET} + {449024400 10800 1 EEST} + {465354000 7200 0 EET} + {481078800 10800 1 EEST} + {496803600 7200 0 EET} + {512528400 10800 1 EEST} + {528253200 7200 0 EET} + {543978000 10800 1 EEST} + {559702800 7200 0 EET} + {575427600 10800 1 EEST} + {591152400 7200 0 EET} + {606877200 10800 1 EEST} + {622602000 7200 0 EET} + {638326800 10800 1 EEST} + {654656400 7200 0 EET} + {670381200 10800 1 EEST} + {686106000 7200 0 EET} + {701830800 10800 1 EEST} + {717555600 7200 0 EET} + {733280400 10800 1 EEST} + {749005200 7200 0 EET} + {764730000 10800 1 EEST} + {780454800 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Belfast b/library/tzdata/Europe/Belfast index 4ea63be..51cd3ce 100644 --- a/library/tzdata/Europe/Belfast +++ b/library/tzdata/Europe/Belfast @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:Europe/Belfast) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:Europe/Belfast) $TZData(:Europe/London) diff --git a/library/tzdata/Europe/Belgrade b/library/tzdata/Europe/Belgrade index b7e326d..b11f7b3 100644 --- a/library/tzdata/Europe/Belgrade +++ b/library/tzdata/Europe/Belgrade @@ -1,250 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Belgrade) { - {-9223372036854775808 4920 0 LMT} - {-2713915320 3600 0 CET} - {-905824800 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-788922000 3600 0 CET} - {-777942000 7200 1 CEST} - {-766623600 3600 0 CET} - {407199600 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Belgrade) { + {-9223372036854775808 4920 0 LMT} + {-2713915320 3600 0 CET} + {-905824800 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-788922000 3600 0 CET} + {-777942000 7200 1 CEST} + {-766623600 3600 0 CET} + {407199600 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Berlin b/library/tzdata/Europe/Berlin index 90ca6ce..5469cf6 100644 --- a/library/tzdata/Europe/Berlin +++ b/library/tzdata/Europe/Berlin @@ -1,274 +1,274 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Berlin) { - {-9223372036854775808 3208 0 LMT} - {-2422054408 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 1 CEST} - {-776559600 10800 0 CEMT} - {-765936000 7200 1 CEST} - {-761180400 3600 0 CET} - {-757386000 3600 0 CET} - {-748479600 7200 1 CEST} - {-733273200 3600 0 CET} - {-717631200 7200 1 CEST} - {-714610800 10800 1 CEMT} - {-710380800 7200 1 CEST} - {-701910000 3600 0 CET} - {-684975600 7200 1 CEST} - {-670460400 3600 0 CET} - {-654130800 7200 1 CEST} - {-639010800 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Berlin) { + {-9223372036854775808 3208 0 LMT} + {-2422054408 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 1 CEST} + {-776559600 10800 0 CEMT} + {-765936000 7200 1 CEST} + {-761180400 3600 0 CET} + {-757386000 3600 0 CET} + {-748479600 7200 1 CEST} + {-733273200 3600 0 CET} + {-717631200 7200 1 CEST} + {-714610800 10800 1 CEMT} + {-710380800 7200 1 CEST} + {-701910000 3600 0 CET} + {-684975600 7200 1 CEST} + {-670460400 3600 0 CET} + {-654130800 7200 1 CEST} + {-639010800 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Bratislava b/library/tzdata/Europe/Bratislava index 1fa501c..d65ea5a 100644 --- a/library/tzdata/Europe/Bratislava +++ b/library/tzdata/Europe/Bratislava @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Prague)]} { - LoadTimeZoneFile Europe/Prague -} -set TZData(:Europe/Bratislava) $TZData(:Europe/Prague) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Prague)]} { + LoadTimeZoneFile Europe/Prague +} +set TZData(:Europe/Bratislava) $TZData(:Europe/Prague) diff --git a/library/tzdata/Europe/Brussels b/library/tzdata/Europe/Brussels index 5060e6d..3cb9b14 100644 --- a/library/tzdata/Europe/Brussels +++ b/library/tzdata/Europe/Brussels @@ -1,316 +1,316 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Brussels) { - {-9223372036854775808 1050 0 LMT} - {-2840141850 1050 0 BMT} - {-2450953050 0 0 WET} - {-1740355200 3600 0 CET} - {-1693702800 7200 0 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-1613826000 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585530000 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552266000 0 0 WET} - {-1539997200 3600 1 WEST} - {-1520557200 0 0 WET} - {-1507510800 3600 1 WEST} - {-1490576400 0 0 WET} - {-1473642000 3600 1 WEST} - {-1459126800 0 0 WET} - {-1444006800 3600 1 WEST} - {-1427677200 0 0 WET} - {-1411952400 3600 1 WEST} - {-1396227600 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301263200 0 0 WET} - {-1284328800 3600 1 WEST} - {-1269813600 0 0 WET} - {-1253484000 3600 1 WEST} - {-1238364000 0 0 WET} - {-1221429600 3600 1 WEST} - {-1206914400 0 0 WET} - {-1191189600 3600 1 WEST} - {-1175464800 0 0 WET} - {-1160344800 3600 1 WEST} - {-1143410400 0 0 WET} - {-1127685600 3600 1 WEST} - {-1111960800 0 0 WET} - {-1096840800 3600 1 WEST} - {-1080511200 0 0 WET} - {-1063576800 3600 1 WEST} - {-1049061600 0 0 WET} - {-1033336800 3600 1 WEST} - {-1017612000 0 0 WET} - {-1002492000 3600 1 WEST} - {-986162400 0 0 WET} - {-969228000 3600 1 WEST} - {-950479200 0 0 WET} - {-942012000 3600 1 WEST} - {-934668000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-799290000 3600 0 CET} - {-798073200 3600 0 CET} - {-781052400 7200 1 CEST} - {-766623600 3600 0 CET} - {-745455600 7200 1 CEST} - {-733273200 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Brussels) { + {-9223372036854775808 1050 0 LMT} + {-2840141850 1050 0 BMT} + {-2450953050 0 0 WET} + {-1740355200 3600 0 CET} + {-1693702800 7200 0 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-1613826000 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585530000 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552266000 0 0 WET} + {-1539997200 3600 1 WEST} + {-1520557200 0 0 WET} + {-1507510800 3600 1 WEST} + {-1490576400 0 0 WET} + {-1473642000 3600 1 WEST} + {-1459126800 0 0 WET} + {-1444006800 3600 1 WEST} + {-1427677200 0 0 WET} + {-1411952400 3600 1 WEST} + {-1396227600 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301263200 0 0 WET} + {-1284328800 3600 1 WEST} + {-1269813600 0 0 WET} + {-1253484000 3600 1 WEST} + {-1238364000 0 0 WET} + {-1221429600 3600 1 WEST} + {-1206914400 0 0 WET} + {-1191189600 3600 1 WEST} + {-1175464800 0 0 WET} + {-1160344800 3600 1 WEST} + {-1143410400 0 0 WET} + {-1127685600 3600 1 WEST} + {-1111960800 0 0 WET} + {-1096840800 3600 1 WEST} + {-1080511200 0 0 WET} + {-1063576800 3600 1 WEST} + {-1049061600 0 0 WET} + {-1033336800 3600 1 WEST} + {-1017612000 0 0 WET} + {-1002492000 3600 1 WEST} + {-986162400 0 0 WET} + {-969228000 3600 1 WEST} + {-950479200 0 0 WET} + {-942012000 3600 1 WEST} + {-934668000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-799290000 3600 0 CET} + {-798073200 3600 0 CET} + {-781052400 7200 1 CEST} + {-766623600 3600 0 CET} + {-745455600 7200 1 CEST} + {-733273200 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Bucharest b/library/tzdata/Europe/Bucharest index 85ce7ec..7b3bed4 100644 --- a/library/tzdata/Europe/Bucharest +++ b/library/tzdata/Europe/Bucharest @@ -1,268 +1,268 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Bucharest) { - {-9223372036854775808 6264 0 LMT} - {-2469404664 6264 0 BMT} - {-1213148664 7200 0 EET} - {-1187056800 10800 1 EEST} - {-1175479200 7200 0 EET} - {-1159754400 10800 1 EEST} - {-1144029600 7200 0 EET} - {-1127700000 10800 1 EEST} - {-1111975200 7200 0 EET} - {-1096250400 10800 1 EEST} - {-1080525600 7200 0 EET} - {-1064800800 10800 1 EEST} - {-1049076000 7200 0 EET} - {-1033351200 10800 1 EEST} - {-1017626400 7200 0 EET} - {-1001901600 10800 1 EEST} - {-986176800 7200 0 EET} - {-970452000 10800 1 EEST} - {-954727200 7200 0 EET} - {296604000 10800 1 EEST} - {307486800 7200 0 EET} - {323816400 10800 1 EEST} - {338940000 7200 0 EET} - {354672000 10800 0 EEST} - {370396800 7200 0 EET} - {386121600 10800 1 EEST} - {401846400 7200 0 EET} - {417571200 10800 1 EEST} - {433296000 7200 0 EET} - {449020800 10800 1 EEST} - {465350400 7200 0 EET} - {481075200 10800 1 EEST} - {496800000 7200 0 EET} - {512524800 10800 1 EEST} - {528249600 7200 0 EET} - {543974400 10800 1 EEST} - {559699200 7200 0 EET} - {575424000 10800 1 EEST} - {591148800 7200 0 EET} - {606873600 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {662680800 7200 0 EET} - {670370400 10800 1 EEST} - {686095200 7200 0 EET} - {701820000 10800 1 EEST} - {717544800 7200 0 EET} - {733269600 10800 1 EEST} - {748994400 7200 0 EET} - {757375200 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {846363600 7200 0 EET} - {852069600 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Bucharest) { + {-9223372036854775808 6264 0 LMT} + {-2469404664 6264 0 BMT} + {-1213148664 7200 0 EET} + {-1187056800 10800 1 EEST} + {-1175479200 7200 0 EET} + {-1159754400 10800 1 EEST} + {-1144029600 7200 0 EET} + {-1127700000 10800 1 EEST} + {-1111975200 7200 0 EET} + {-1096250400 10800 1 EEST} + {-1080525600 7200 0 EET} + {-1064800800 10800 1 EEST} + {-1049076000 7200 0 EET} + {-1033351200 10800 1 EEST} + {-1017626400 7200 0 EET} + {-1001901600 10800 1 EEST} + {-986176800 7200 0 EET} + {-970452000 10800 1 EEST} + {-954727200 7200 0 EET} + {296604000 10800 1 EEST} + {307486800 7200 0 EET} + {323816400 10800 1 EEST} + {338940000 7200 0 EET} + {354672000 10800 0 EEST} + {370396800 7200 0 EET} + {386121600 10800 1 EEST} + {401846400 7200 0 EET} + {417571200 10800 1 EEST} + {433296000 7200 0 EET} + {449020800 10800 1 EEST} + {465350400 7200 0 EET} + {481075200 10800 1 EEST} + {496800000 7200 0 EET} + {512524800 10800 1 EEST} + {528249600 7200 0 EET} + {543974400 10800 1 EEST} + {559699200 7200 0 EET} + {575424000 10800 1 EEST} + {591148800 7200 0 EET} + {606873600 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {662680800 7200 0 EET} + {670370400 10800 1 EEST} + {686095200 7200 0 EET} + {701820000 10800 1 EEST} + {717544800 7200 0 EET} + {733269600 10800 1 EEST} + {748994400 7200 0 EET} + {757375200 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {846363600 7200 0 EET} + {852069600 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Budapest b/library/tzdata/Europe/Budapest index faf1bdf..fd41acc 100644 --- a/library/tzdata/Europe/Budapest +++ b/library/tzdata/Europe/Budapest @@ -1,284 +1,284 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Budapest) { - {-9223372036854775808 4580 0 LMT} - {-2500938980 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1640998800 3600 0 CET} - {-1633212000 7200 1 CEST} - {-1617577200 3600 0 CET} - {-1600466400 7200 1 CEST} - {-1587250800 3600 0 CET} - {-1569708000 7200 1 CEST} - {-1554332400 3600 0 CET} - {-906937200 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-788922000 3600 0 CET} - {-778471200 7200 1 CEST} - {-762487200 3600 0 CET} - {-749689200 7200 1 CEST} - {-733359600 3600 0 CET} - {-717634800 7200 1 CEST} - {-701910000 3600 0 CET} - {-686185200 7200 1 CEST} - {-670460400 3600 0 CET} - {-654130800 7200 1 CEST} - {-639010800 3600 0 CET} - {-621990000 7200 1 CEST} - {-605660400 3600 0 CET} - {-492656400 7200 1 CEST} - {-481168800 3600 0 CET} - {-461120400 7200 1 CEST} - {-449632800 3600 0 CET} - {-428547600 7200 1 CEST} - {-418269600 3600 0 CET} - {-397094400 7200 1 CEST} - {-386809200 3600 0 CET} - {323827200 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Budapest) { + {-9223372036854775808 4580 0 LMT} + {-2500938980 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1640998800 3600 0 CET} + {-1633212000 7200 1 CEST} + {-1617577200 3600 0 CET} + {-1600466400 7200 1 CEST} + {-1587250800 3600 0 CET} + {-1569708000 7200 1 CEST} + {-1554332400 3600 0 CET} + {-906937200 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-788922000 3600 0 CET} + {-778471200 7200 1 CEST} + {-762487200 3600 0 CET} + {-749689200 7200 1 CEST} + {-733359600 3600 0 CET} + {-717634800 7200 1 CEST} + {-701910000 3600 0 CET} + {-686185200 7200 1 CEST} + {-670460400 3600 0 CET} + {-654130800 7200 1 CEST} + {-639010800 3600 0 CET} + {-621990000 7200 1 CEST} + {-605660400 3600 0 CET} + {-492656400 7200 1 CEST} + {-481168800 3600 0 CET} + {-461120400 7200 1 CEST} + {-449632800 3600 0 CET} + {-428547600 7200 1 CEST} + {-418269600 3600 0 CET} + {-397094400 7200 1 CEST} + {-386809200 3600 0 CET} + {323827200 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Chisinau b/library/tzdata/Europe/Chisinau index dfbb281..4ef466b 100644 --- a/library/tzdata/Europe/Chisinau +++ b/library/tzdata/Europe/Chisinau @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Chisinau) { - {-9223372036854775808 6920 0 LMT} - {-2840147720 6900 0 CMT} - {-1637114100 6264 0 BMT} - {-1213148664 7200 0 EET} - {-1187056800 10800 1 EEST} - {-1175479200 7200 0 EET} - {-1159754400 10800 1 EEST} - {-1144029600 7200 0 EET} - {-1127700000 10800 1 EEST} - {-1111975200 7200 0 EET} - {-1096250400 10800 1 EEST} - {-1080525600 7200 0 EET} - {-1064800800 10800 1 EEST} - {-1049076000 7200 0 EET} - {-1033351200 10800 1 EEST} - {-1017626400 7200 0 EET} - {-1001901600 10800 1 EEST} - {-986176800 7200 0 EET} - {-970452000 10800 1 EEST} - {-954727200 7200 0 EET} - {-927165600 10800 1 EEST} - {-898138800 7200 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-800154000 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {641941200 7200 0 EET} - {662680800 7200 0 EEMMTT} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {694216800 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {846363600 7200 0 EET} - {852069600 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Chisinau) { + {-9223372036854775808 6920 0 LMT} + {-2840147720 6900 0 CMT} + {-1637114100 6264 0 BMT} + {-1213148664 7200 0 EET} + {-1187056800 10800 1 EEST} + {-1175479200 7200 0 EET} + {-1159754400 10800 1 EEST} + {-1144029600 7200 0 EET} + {-1127700000 10800 1 EEST} + {-1111975200 7200 0 EET} + {-1096250400 10800 1 EEST} + {-1080525600 7200 0 EET} + {-1064800800 10800 1 EEST} + {-1049076000 7200 0 EET} + {-1033351200 10800 1 EEST} + {-1017626400 7200 0 EET} + {-1001901600 10800 1 EEST} + {-986176800 7200 0 EET} + {-970452000 10800 1 EEST} + {-954727200 7200 0 EET} + {-927165600 10800 1 EEST} + {-898138800 7200 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-800154000 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {641941200 7200 0 EET} + {662680800 7200 0 EEMMTT} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {694216800 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {846363600 7200 0 EET} + {852069600 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Copenhagen b/library/tzdata/Europe/Copenhagen index 409cacd..c747e58 100644 --- a/library/tzdata/Europe/Copenhagen +++ b/library/tzdata/Europe/Copenhagen @@ -1,264 +1,264 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Copenhagen) { - {-9223372036854775808 3020 0 LMT} - {-2524524620 3020 0 CMT} - {-2398294220 3600 0 CET} - {-1692496800 7200 1 CEST} - {-1680490800 3600 0 CET} - {-935110800 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 0 CEST} - {-769388400 3600 0 CET} - {-747010800 7200 1 CEST} - {-736383600 3600 0 CET} - {-715215600 7200 1 CEST} - {-706748400 3600 0 CET} - {-683161200 7200 1 CEST} - {-675298800 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Copenhagen) { + {-9223372036854775808 3020 0 LMT} + {-2524524620 3020 0 CMT} + {-2398294220 3600 0 CET} + {-1692496800 7200 1 CEST} + {-1680490800 3600 0 CET} + {-935110800 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 0 CEST} + {-769388400 3600 0 CET} + {-747010800 7200 1 CEST} + {-736383600 3600 0 CET} + {-715215600 7200 1 CEST} + {-706748400 3600 0 CET} + {-683161200 7200 1 CEST} + {-675298800 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Dublin b/library/tzdata/Europe/Dublin index 9d30a9f..4b43bc0 100644 --- a/library/tzdata/Europe/Dublin +++ b/library/tzdata/Europe/Dublin @@ -1,359 +1,359 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Dublin) { - {-9223372036854775808 -1500 0 LMT} - {-2821649700 -1521 0 DMT} - {-1691962479 2079 1 IST} - {-1680471279 0 0 GMT} - {-1664143200 3600 1 BST} - {-1650146400 0 0 GMT} - {-1633903200 3600 1 BST} - {-1617487200 0 0 GMT} - {-1601848800 3600 1 BST} - {-1586037600 0 0 GMT} - {-1570399200 3600 1 BST} - {-1552168800 0 0 GMT} - {-1538344800 3600 1 BST} - {-1522533600 0 0 GMT} - {-1517011200 0 0 IST} - {-1507500000 3600 1 IST} - {-1490565600 0 0 IST} - {-1473631200 3600 1 IST} - {-1460930400 0 0 IST} - {-1442786400 3600 1 IST} - {-1428876000 0 0 IST} - {-1410732000 3600 1 IST} - {-1396216800 0 0 IST} - {-1379282400 3600 1 IST} - {-1364767200 0 0 IST} - {-1348437600 3600 1 IST} - {-1333317600 0 0 IST} - {-1315778400 3600 1 IST} - {-1301263200 0 0 IST} - {-1284328800 3600 1 IST} - {-1269813600 0 0 IST} - {-1253484000 3600 1 IST} - {-1238364000 0 0 IST} - {-1221429600 3600 1 IST} - {-1206914400 0 0 IST} - {-1189980000 3600 1 IST} - {-1175464800 0 0 IST} - {-1159135200 3600 1 IST} - {-1143410400 0 0 IST} - {-1126476000 3600 1 IST} - {-1111960800 0 0 IST} - {-1095631200 3600 1 IST} - {-1080511200 0 0 IST} - {-1063576800 3600 1 IST} - {-1049061600 0 0 IST} - {-1032127200 3600 1 IST} - {-1017612000 0 0 IST} - {-1001282400 3600 1 IST} - {-986162400 0 0 IST} - {-969228000 3600 1 IST} - {-950479200 0 0 IST} - {-942015600 3600 1 IST} - {-733359600 0 0 GMT} - {-719445600 3600 1 IST} - {-699490800 0 0 GMT} - {-684972000 3600 0 IST} - {-668037600 0 0 IST} - {-654732000 3600 1 IST} - {-636588000 0 0 IST} - {-622072800 3600 1 IST} - {-605743200 0 0 IST} - {-590623200 3600 1 IST} - {-574293600 0 0 IST} - {-558568800 3600 1 IST} - {-542239200 0 0 IST} - {-527119200 3600 1 IST} - {-512604000 0 0 IST} - {-496274400 3600 1 IST} - {-481154400 0 0 IST} - {-464220000 3600 1 IST} - {-449704800 0 0 IST} - {-432165600 3600 1 IST} - {-417650400 0 0 IST} - {-401320800 3600 1 IST} - {-386200800 0 0 IST} - {-369266400 3600 1 IST} - {-354751200 0 0 IST} - {-337816800 3600 1 IST} - {-323301600 0 0 IST} - {-306972000 3600 1 IST} - {-291852000 0 0 IST} - {-276732000 3600 1 IST} - {-257983200 0 0 IST} - {-245282400 3600 1 IST} - {-226533600 0 0 IST} - {-213228000 3600 1 IST} - {-195084000 0 0 IST} - {-182383200 3600 1 IST} - {-163634400 0 0 IST} - {-150933600 3600 1 IST} - {-132184800 0 0 IST} - {-119484000 3600 1 IST} - {-100735200 0 0 IST} - {-88034400 3600 1 IST} - {-68680800 0 0 IST} - {-59004000 3600 1 IST} - {-37238400 3600 0 IST} - {57722400 0 0 IST} - {69818400 3600 1 IST} - {89172000 0 0 IST} - {101268000 3600 1 IST} - {120621600 0 0 IST} - {132717600 3600 1 IST} - {152071200 0 0 IST} - {164167200 3600 1 IST} - {183520800 0 0 IST} - {196221600 3600 1 IST} - {214970400 0 0 IST} - {227671200 3600 1 IST} - {246420000 0 0 IST} - {259120800 3600 1 IST} - {278474400 0 0 IST} - {290570400 3600 1 IST} - {309924000 0 0 IST} - {322020000 3600 1 IST} - {341373600 0 0 IST} - {354675600 3600 1 IST} - {372819600 0 0 IST} - {386125200 3600 1 IST} - {404269200 0 0 IST} - {417574800 3600 1 IST} - {435718800 0 0 IST} - {449024400 3600 1 IST} - {467773200 0 0 IST} - {481078800 3600 1 IST} - {499222800 0 0 IST} - {512528400 3600 1 IST} - {530672400 0 0 IST} - {543978000 3600 1 IST} - {562122000 0 0 IST} - {575427600 3600 1 IST} - {593571600 0 0 IST} - {606877200 3600 1 IST} - {625626000 0 0 IST} - {638326800 3600 1 IST} - {657075600 0 0 IST} - {670381200 3600 1 IST} - {688525200 0 0 IST} - {701830800 3600 1 IST} - {719974800 0 0 IST} - {733280400 3600 1 IST} - {751424400 0 0 IST} - {764730000 3600 1 IST} - {782874000 0 0 IST} - {796179600 3600 1 IST} - {814323600 0 0 IST} - {820454400 0 0 GMT} - {828234000 3600 1 IST} - {846378000 0 0 GMT} - {859683600 3600 1 IST} - {877827600 0 0 GMT} - {891133200 3600 1 IST} - {909277200 0 0 GMT} - {922582800 3600 1 IST} - {941331600 0 0 GMT} - {954032400 3600 1 IST} - {972781200 0 0 GMT} - {985482000 3600 1 IST} - {1004230800 0 0 GMT} - {1017536400 3600 1 IST} - {1035680400 0 0 GMT} - {1048986000 3600 1 IST} - {1067130000 0 0 GMT} - {1080435600 3600 1 IST} - {1099184400 0 0 GMT} - {1111885200 3600 1 IST} - {1130634000 0 0 GMT} - {1143334800 3600 1 IST} - {1162083600 0 0 GMT} - {1174784400 3600 1 IST} - {1193533200 0 0 GMT} - {1206838800 3600 1 IST} - {1224982800 0 0 GMT} - {1238288400 3600 1 IST} - {1256432400 0 0 GMT} - {1269738000 3600 1 IST} - {1288486800 0 0 GMT} - {1301187600 3600 1 IST} - {1319936400 0 0 GMT} - {1332637200 3600 1 IST} - {1351386000 0 0 GMT} - {1364691600 3600 1 IST} - {1382835600 0 0 GMT} - {1396141200 3600 1 IST} - {1414285200 0 0 GMT} - {1427590800 3600 1 IST} - {1445734800 0 0 GMT} - {1459040400 3600 1 IST} - {1477789200 0 0 GMT} - {1490490000 3600 1 IST} - {1509238800 0 0 GMT} - {1521939600 3600 1 IST} - {1540688400 0 0 GMT} - {1553994000 3600 1 IST} - {1572138000 0 0 GMT} - {1585443600 3600 1 IST} - {1603587600 0 0 GMT} - {1616893200 3600 1 IST} - {1635642000 0 0 GMT} - {1648342800 3600 1 IST} - {1667091600 0 0 GMT} - {1679792400 3600 1 IST} - {1698541200 0 0 GMT} - {1711846800 3600 1 IST} - {1729990800 0 0 GMT} - {1743296400 3600 1 IST} - {1761440400 0 0 GMT} - {1774746000 3600 1 IST} - {1792890000 0 0 GMT} - {1806195600 3600 1 IST} - {1824944400 0 0 GMT} - {1837645200 3600 1 IST} - {1856394000 0 0 GMT} - {1869094800 3600 1 IST} - {1887843600 0 0 GMT} - {1901149200 3600 1 IST} - {1919293200 0 0 GMT} - {1932598800 3600 1 IST} - {1950742800 0 0 GMT} - {1964048400 3600 1 IST} - {1982797200 0 0 GMT} - {1995498000 3600 1 IST} - {2014246800 0 0 GMT} - {2026947600 3600 1 IST} - {2045696400 0 0 GMT} - {2058397200 3600 1 IST} - {2077146000 0 0 GMT} - {2090451600 3600 1 IST} - {2108595600 0 0 GMT} - {2121901200 3600 1 IST} - {2140045200 0 0 GMT} - {2153350800 3600 1 IST} - {2172099600 0 0 GMT} - {2184800400 3600 1 IST} - {2203549200 0 0 GMT} - {2216250000 3600 1 IST} - {2234998800 0 0 GMT} - {2248304400 3600 1 IST} - {2266448400 0 0 GMT} - {2279754000 3600 1 IST} - {2297898000 0 0 GMT} - {2311203600 3600 1 IST} - {2329347600 0 0 GMT} - {2342653200 3600 1 IST} - {2361402000 0 0 GMT} - {2374102800 3600 1 IST} - {2392851600 0 0 GMT} - {2405552400 3600 1 IST} - {2424301200 0 0 GMT} - {2437606800 3600 1 IST} - {2455750800 0 0 GMT} - {2469056400 3600 1 IST} - {2487200400 0 0 GMT} - {2500506000 3600 1 IST} - {2519254800 0 0 GMT} - {2531955600 3600 1 IST} - {2550704400 0 0 GMT} - {2563405200 3600 1 IST} - {2582154000 0 0 GMT} - {2595459600 3600 1 IST} - {2613603600 0 0 GMT} - {2626909200 3600 1 IST} - {2645053200 0 0 GMT} - {2658358800 3600 1 IST} - {2676502800 0 0 GMT} - {2689808400 3600 1 IST} - {2708557200 0 0 GMT} - {2721258000 3600 1 IST} - {2740006800 0 0 GMT} - {2752707600 3600 1 IST} - {2771456400 0 0 GMT} - {2784762000 3600 1 IST} - {2802906000 0 0 GMT} - {2816211600 3600 1 IST} - {2834355600 0 0 GMT} - {2847661200 3600 1 IST} - {2866410000 0 0 GMT} - {2879110800 3600 1 IST} - {2897859600 0 0 GMT} - {2910560400 3600 1 IST} - {2929309200 0 0 GMT} - {2942010000 3600 1 IST} - {2960758800 0 0 GMT} - {2974064400 3600 1 IST} - {2992208400 0 0 GMT} - {3005514000 3600 1 IST} - {3023658000 0 0 GMT} - {3036963600 3600 1 IST} - {3055712400 0 0 GMT} - {3068413200 3600 1 IST} - {3087162000 0 0 GMT} - {3099862800 3600 1 IST} - {3118611600 0 0 GMT} - {3131917200 3600 1 IST} - {3150061200 0 0 GMT} - {3163366800 3600 1 IST} - {3181510800 0 0 GMT} - {3194816400 3600 1 IST} - {3212960400 0 0 GMT} - {3226266000 3600 1 IST} - {3245014800 0 0 GMT} - {3257715600 3600 1 IST} - {3276464400 0 0 GMT} - {3289165200 3600 1 IST} - {3307914000 0 0 GMT} - {3321219600 3600 1 IST} - {3339363600 0 0 GMT} - {3352669200 3600 1 IST} - {3370813200 0 0 GMT} - {3384118800 3600 1 IST} - {3402867600 0 0 GMT} - {3415568400 3600 1 IST} - {3434317200 0 0 GMT} - {3447018000 3600 1 IST} - {3465766800 0 0 GMT} - {3479072400 3600 1 IST} - {3497216400 0 0 GMT} - {3510522000 3600 1 IST} - {3528666000 0 0 GMT} - {3541971600 3600 1 IST} - {3560115600 0 0 GMT} - {3573421200 3600 1 IST} - {3592170000 0 0 GMT} - {3604870800 3600 1 IST} - {3623619600 0 0 GMT} - {3636320400 3600 1 IST} - {3655069200 0 0 GMT} - {3668374800 3600 1 IST} - {3686518800 0 0 GMT} - {3699824400 3600 1 IST} - {3717968400 0 0 GMT} - {3731274000 3600 1 IST} - {3750022800 0 0 GMT} - {3762723600 3600 1 IST} - {3781472400 0 0 GMT} - {3794173200 3600 1 IST} - {3812922000 0 0 GMT} - {3825622800 3600 1 IST} - {3844371600 0 0 GMT} - {3857677200 3600 1 IST} - {3875821200 0 0 GMT} - {3889126800 3600 1 IST} - {3907270800 0 0 GMT} - {3920576400 3600 1 IST} - {3939325200 0 0 GMT} - {3952026000 3600 1 IST} - {3970774800 0 0 GMT} - {3983475600 3600 1 IST} - {4002224400 0 0 GMT} - {4015530000 3600 1 IST} - {4033674000 0 0 GMT} - {4046979600 3600 1 IST} - {4065123600 0 0 GMT} - {4078429200 3600 1 IST} - {4096573200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Dublin) { + {-9223372036854775808 -1500 0 LMT} + {-2821649700 -1521 0 DMT} + {-1691962479 2079 1 IST} + {-1680471279 0 0 GMT} + {-1664143200 3600 1 BST} + {-1650146400 0 0 GMT} + {-1633903200 3600 1 BST} + {-1617487200 0 0 GMT} + {-1601848800 3600 1 BST} + {-1586037600 0 0 GMT} + {-1570399200 3600 1 BST} + {-1552168800 0 0 GMT} + {-1538344800 3600 1 BST} + {-1522533600 0 0 GMT} + {-1517011200 0 0 IST} + {-1507500000 3600 1 IST} + {-1490565600 0 0 IST} + {-1473631200 3600 1 IST} + {-1460930400 0 0 IST} + {-1442786400 3600 1 IST} + {-1428876000 0 0 IST} + {-1410732000 3600 1 IST} + {-1396216800 0 0 IST} + {-1379282400 3600 1 IST} + {-1364767200 0 0 IST} + {-1348437600 3600 1 IST} + {-1333317600 0 0 IST} + {-1315778400 3600 1 IST} + {-1301263200 0 0 IST} + {-1284328800 3600 1 IST} + {-1269813600 0 0 IST} + {-1253484000 3600 1 IST} + {-1238364000 0 0 IST} + {-1221429600 3600 1 IST} + {-1206914400 0 0 IST} + {-1189980000 3600 1 IST} + {-1175464800 0 0 IST} + {-1159135200 3600 1 IST} + {-1143410400 0 0 IST} + {-1126476000 3600 1 IST} + {-1111960800 0 0 IST} + {-1095631200 3600 1 IST} + {-1080511200 0 0 IST} + {-1063576800 3600 1 IST} + {-1049061600 0 0 IST} + {-1032127200 3600 1 IST} + {-1017612000 0 0 IST} + {-1001282400 3600 1 IST} + {-986162400 0 0 IST} + {-969228000 3600 1 IST} + {-950479200 0 0 IST} + {-942015600 3600 1 IST} + {-733359600 0 0 GMT} + {-719445600 3600 1 IST} + {-699490800 0 0 GMT} + {-684972000 3600 0 IST} + {-668037600 0 0 IST} + {-654732000 3600 1 IST} + {-636588000 0 0 IST} + {-622072800 3600 1 IST} + {-605743200 0 0 IST} + {-590623200 3600 1 IST} + {-574293600 0 0 IST} + {-558568800 3600 1 IST} + {-542239200 0 0 IST} + {-527119200 3600 1 IST} + {-512604000 0 0 IST} + {-496274400 3600 1 IST} + {-481154400 0 0 IST} + {-464220000 3600 1 IST} + {-449704800 0 0 IST} + {-432165600 3600 1 IST} + {-417650400 0 0 IST} + {-401320800 3600 1 IST} + {-386200800 0 0 IST} + {-369266400 3600 1 IST} + {-354751200 0 0 IST} + {-337816800 3600 1 IST} + {-323301600 0 0 IST} + {-306972000 3600 1 IST} + {-291852000 0 0 IST} + {-276732000 3600 1 IST} + {-257983200 0 0 IST} + {-245282400 3600 1 IST} + {-226533600 0 0 IST} + {-213228000 3600 1 IST} + {-195084000 0 0 IST} + {-182383200 3600 1 IST} + {-163634400 0 0 IST} + {-150933600 3600 1 IST} + {-132184800 0 0 IST} + {-119484000 3600 1 IST} + {-100735200 0 0 IST} + {-88034400 3600 1 IST} + {-68680800 0 0 IST} + {-59004000 3600 1 IST} + {-37238400 3600 0 IST} + {57722400 0 0 IST} + {69818400 3600 1 IST} + {89172000 0 0 IST} + {101268000 3600 1 IST} + {120621600 0 0 IST} + {132717600 3600 1 IST} + {152071200 0 0 IST} + {164167200 3600 1 IST} + {183520800 0 0 IST} + {196221600 3600 1 IST} + {214970400 0 0 IST} + {227671200 3600 1 IST} + {246420000 0 0 IST} + {259120800 3600 1 IST} + {278474400 0 0 IST} + {290570400 3600 1 IST} + {309924000 0 0 IST} + {322020000 3600 1 IST} + {341373600 0 0 IST} + {354675600 3600 1 IST} + {372819600 0 0 IST} + {386125200 3600 1 IST} + {404269200 0 0 IST} + {417574800 3600 1 IST} + {435718800 0 0 IST} + {449024400 3600 1 IST} + {467773200 0 0 IST} + {481078800 3600 1 IST} + {499222800 0 0 IST} + {512528400 3600 1 IST} + {530672400 0 0 IST} + {543978000 3600 1 IST} + {562122000 0 0 IST} + {575427600 3600 1 IST} + {593571600 0 0 IST} + {606877200 3600 1 IST} + {625626000 0 0 IST} + {638326800 3600 1 IST} + {657075600 0 0 IST} + {670381200 3600 1 IST} + {688525200 0 0 IST} + {701830800 3600 1 IST} + {719974800 0 0 IST} + {733280400 3600 1 IST} + {751424400 0 0 IST} + {764730000 3600 1 IST} + {782874000 0 0 IST} + {796179600 3600 1 IST} + {814323600 0 0 IST} + {820454400 0 0 GMT} + {828234000 3600 1 IST} + {846378000 0 0 GMT} + {859683600 3600 1 IST} + {877827600 0 0 GMT} + {891133200 3600 1 IST} + {909277200 0 0 GMT} + {922582800 3600 1 IST} + {941331600 0 0 GMT} + {954032400 3600 1 IST} + {972781200 0 0 GMT} + {985482000 3600 1 IST} + {1004230800 0 0 GMT} + {1017536400 3600 1 IST} + {1035680400 0 0 GMT} + {1048986000 3600 1 IST} + {1067130000 0 0 GMT} + {1080435600 3600 1 IST} + {1099184400 0 0 GMT} + {1111885200 3600 1 IST} + {1130634000 0 0 GMT} + {1143334800 3600 1 IST} + {1162083600 0 0 GMT} + {1174784400 3600 1 IST} + {1193533200 0 0 GMT} + {1206838800 3600 1 IST} + {1224982800 0 0 GMT} + {1238288400 3600 1 IST} + {1256432400 0 0 GMT} + {1269738000 3600 1 IST} + {1288486800 0 0 GMT} + {1301187600 3600 1 IST} + {1319936400 0 0 GMT} + {1332637200 3600 1 IST} + {1351386000 0 0 GMT} + {1364691600 3600 1 IST} + {1382835600 0 0 GMT} + {1396141200 3600 1 IST} + {1414285200 0 0 GMT} + {1427590800 3600 1 IST} + {1445734800 0 0 GMT} + {1459040400 3600 1 IST} + {1477789200 0 0 GMT} + {1490490000 3600 1 IST} + {1509238800 0 0 GMT} + {1521939600 3600 1 IST} + {1540688400 0 0 GMT} + {1553994000 3600 1 IST} + {1572138000 0 0 GMT} + {1585443600 3600 1 IST} + {1603587600 0 0 GMT} + {1616893200 3600 1 IST} + {1635642000 0 0 GMT} + {1648342800 3600 1 IST} + {1667091600 0 0 GMT} + {1679792400 3600 1 IST} + {1698541200 0 0 GMT} + {1711846800 3600 1 IST} + {1729990800 0 0 GMT} + {1743296400 3600 1 IST} + {1761440400 0 0 GMT} + {1774746000 3600 1 IST} + {1792890000 0 0 GMT} + {1806195600 3600 1 IST} + {1824944400 0 0 GMT} + {1837645200 3600 1 IST} + {1856394000 0 0 GMT} + {1869094800 3600 1 IST} + {1887843600 0 0 GMT} + {1901149200 3600 1 IST} + {1919293200 0 0 GMT} + {1932598800 3600 1 IST} + {1950742800 0 0 GMT} + {1964048400 3600 1 IST} + {1982797200 0 0 GMT} + {1995498000 3600 1 IST} + {2014246800 0 0 GMT} + {2026947600 3600 1 IST} + {2045696400 0 0 GMT} + {2058397200 3600 1 IST} + {2077146000 0 0 GMT} + {2090451600 3600 1 IST} + {2108595600 0 0 GMT} + {2121901200 3600 1 IST} + {2140045200 0 0 GMT} + {2153350800 3600 1 IST} + {2172099600 0 0 GMT} + {2184800400 3600 1 IST} + {2203549200 0 0 GMT} + {2216250000 3600 1 IST} + {2234998800 0 0 GMT} + {2248304400 3600 1 IST} + {2266448400 0 0 GMT} + {2279754000 3600 1 IST} + {2297898000 0 0 GMT} + {2311203600 3600 1 IST} + {2329347600 0 0 GMT} + {2342653200 3600 1 IST} + {2361402000 0 0 GMT} + {2374102800 3600 1 IST} + {2392851600 0 0 GMT} + {2405552400 3600 1 IST} + {2424301200 0 0 GMT} + {2437606800 3600 1 IST} + {2455750800 0 0 GMT} + {2469056400 3600 1 IST} + {2487200400 0 0 GMT} + {2500506000 3600 1 IST} + {2519254800 0 0 GMT} + {2531955600 3600 1 IST} + {2550704400 0 0 GMT} + {2563405200 3600 1 IST} + {2582154000 0 0 GMT} + {2595459600 3600 1 IST} + {2613603600 0 0 GMT} + {2626909200 3600 1 IST} + {2645053200 0 0 GMT} + {2658358800 3600 1 IST} + {2676502800 0 0 GMT} + {2689808400 3600 1 IST} + {2708557200 0 0 GMT} + {2721258000 3600 1 IST} + {2740006800 0 0 GMT} + {2752707600 3600 1 IST} + {2771456400 0 0 GMT} + {2784762000 3600 1 IST} + {2802906000 0 0 GMT} + {2816211600 3600 1 IST} + {2834355600 0 0 GMT} + {2847661200 3600 1 IST} + {2866410000 0 0 GMT} + {2879110800 3600 1 IST} + {2897859600 0 0 GMT} + {2910560400 3600 1 IST} + {2929309200 0 0 GMT} + {2942010000 3600 1 IST} + {2960758800 0 0 GMT} + {2974064400 3600 1 IST} + {2992208400 0 0 GMT} + {3005514000 3600 1 IST} + {3023658000 0 0 GMT} + {3036963600 3600 1 IST} + {3055712400 0 0 GMT} + {3068413200 3600 1 IST} + {3087162000 0 0 GMT} + {3099862800 3600 1 IST} + {3118611600 0 0 GMT} + {3131917200 3600 1 IST} + {3150061200 0 0 GMT} + {3163366800 3600 1 IST} + {3181510800 0 0 GMT} + {3194816400 3600 1 IST} + {3212960400 0 0 GMT} + {3226266000 3600 1 IST} + {3245014800 0 0 GMT} + {3257715600 3600 1 IST} + {3276464400 0 0 GMT} + {3289165200 3600 1 IST} + {3307914000 0 0 GMT} + {3321219600 3600 1 IST} + {3339363600 0 0 GMT} + {3352669200 3600 1 IST} + {3370813200 0 0 GMT} + {3384118800 3600 1 IST} + {3402867600 0 0 GMT} + {3415568400 3600 1 IST} + {3434317200 0 0 GMT} + {3447018000 3600 1 IST} + {3465766800 0 0 GMT} + {3479072400 3600 1 IST} + {3497216400 0 0 GMT} + {3510522000 3600 1 IST} + {3528666000 0 0 GMT} + {3541971600 3600 1 IST} + {3560115600 0 0 GMT} + {3573421200 3600 1 IST} + {3592170000 0 0 GMT} + {3604870800 3600 1 IST} + {3623619600 0 0 GMT} + {3636320400 3600 1 IST} + {3655069200 0 0 GMT} + {3668374800 3600 1 IST} + {3686518800 0 0 GMT} + {3699824400 3600 1 IST} + {3717968400 0 0 GMT} + {3731274000 3600 1 IST} + {3750022800 0 0 GMT} + {3762723600 3600 1 IST} + {3781472400 0 0 GMT} + {3794173200 3600 1 IST} + {3812922000 0 0 GMT} + {3825622800 3600 1 IST} + {3844371600 0 0 GMT} + {3857677200 3600 1 IST} + {3875821200 0 0 GMT} + {3889126800 3600 1 IST} + {3907270800 0 0 GMT} + {3920576400 3600 1 IST} + {3939325200 0 0 GMT} + {3952026000 3600 1 IST} + {3970774800 0 0 GMT} + {3983475600 3600 1 IST} + {4002224400 0 0 GMT} + {4015530000 3600 1 IST} + {4033674000 0 0 GMT} + {4046979600 3600 1 IST} + {4065123600 0 0 GMT} + {4078429200 3600 1 IST} + {4096573200 0 0 GMT} +} diff --git a/library/tzdata/Europe/Gibraltar b/library/tzdata/Europe/Gibraltar index 1f597b0..de29c03 100644 --- a/library/tzdata/Europe/Gibraltar +++ b/library/tzdata/Europe/Gibraltar @@ -1,328 +1,328 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Gibraltar) { - {-9223372036854775808 -1284 0 LMT} - {-2821649916 0 0 GMT} - {-1691964000 3600 1 BST} - {-1680472800 0 0 GMT} - {-1664143200 3600 1 BST} - {-1650146400 0 0 GMT} - {-1633903200 3600 1 BST} - {-1617487200 0 0 GMT} - {-1601848800 3600 1 BST} - {-1586037600 0 0 GMT} - {-1570399200 3600 1 BST} - {-1552168800 0 0 GMT} - {-1538344800 3600 1 BST} - {-1522533600 0 0 GMT} - {-1507500000 3600 1 BST} - {-1490565600 0 0 GMT} - {-1473631200 3600 1 BST} - {-1460930400 0 0 GMT} - {-1442786400 3600 1 BST} - {-1428876000 0 0 GMT} - {-1410732000 3600 1 BST} - {-1396216800 0 0 GMT} - {-1379282400 3600 1 BST} - {-1364767200 0 0 GMT} - {-1348437600 3600 1 BST} - {-1333317600 0 0 GMT} - {-1315778400 3600 1 BST} - {-1301263200 0 0 GMT} - {-1284328800 3600 1 BST} - {-1269813600 0 0 GMT} - {-1253484000 3600 1 BST} - {-1238364000 0 0 GMT} - {-1221429600 3600 1 BST} - {-1206914400 0 0 GMT} - {-1189980000 3600 1 BST} - {-1175464800 0 0 GMT} - {-1159135200 3600 1 BST} - {-1143410400 0 0 GMT} - {-1126476000 3600 1 BST} - {-1111960800 0 0 GMT} - {-1095631200 3600 1 BST} - {-1080511200 0 0 GMT} - {-1063576800 3600 1 BST} - {-1049061600 0 0 GMT} - {-1032127200 3600 1 BST} - {-1017612000 0 0 GMT} - {-1001282400 3600 1 BST} - {-986162400 0 0 GMT} - {-969228000 3600 1 BST} - {-950479200 0 0 GMT} - {-942012000 3600 1 BST} - {-904518000 7200 1 BDST} - {-896050800 3600 1 BST} - {-875487600 7200 1 BDST} - {-864601200 3600 1 BST} - {-844038000 7200 1 BDST} - {-832546800 3600 1 BST} - {-812588400 7200 1 BDST} - {-798073200 3600 1 BST} - {-781052400 7200 1 BDST} - {-772066800 3600 1 BST} - {-764805600 0 0 GMT} - {-748476000 3600 1 BST} - {-733356000 0 0 GMT} - {-719445600 3600 1 BST} - {-717030000 7200 1 BDST} - {-706748400 3600 1 BST} - {-699487200 0 0 GMT} - {-687996000 3600 1 BST} - {-668037600 0 0 GMT} - {-654732000 3600 1 BST} - {-636588000 0 0 GMT} - {-622072800 3600 1 BST} - {-605743200 0 0 GMT} - {-590623200 3600 1 BST} - {-574293600 0 0 GMT} - {-558568800 3600 1 BST} - {-542239200 0 0 GMT} - {-527119200 3600 1 BST} - {-512604000 0 0 GMT} - {-496274400 3600 1 BST} - {-481154400 0 0 GMT} - {-464220000 3600 1 BST} - {-449704800 0 0 GMT} - {-432165600 3600 1 BST} - {-417650400 0 0 GMT} - {-401320800 3600 0 CET} - {378687600 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Gibraltar) { + {-9223372036854775808 -1284 0 LMT} + {-2821649916 0 0 GMT} + {-1691964000 3600 1 BST} + {-1680472800 0 0 GMT} + {-1664143200 3600 1 BST} + {-1650146400 0 0 GMT} + {-1633903200 3600 1 BST} + {-1617487200 0 0 GMT} + {-1601848800 3600 1 BST} + {-1586037600 0 0 GMT} + {-1570399200 3600 1 BST} + {-1552168800 0 0 GMT} + {-1538344800 3600 1 BST} + {-1522533600 0 0 GMT} + {-1507500000 3600 1 BST} + {-1490565600 0 0 GMT} + {-1473631200 3600 1 BST} + {-1460930400 0 0 GMT} + {-1442786400 3600 1 BST} + {-1428876000 0 0 GMT} + {-1410732000 3600 1 BST} + {-1396216800 0 0 GMT} + {-1379282400 3600 1 BST} + {-1364767200 0 0 GMT} + {-1348437600 3600 1 BST} + {-1333317600 0 0 GMT} + {-1315778400 3600 1 BST} + {-1301263200 0 0 GMT} + {-1284328800 3600 1 BST} + {-1269813600 0 0 GMT} + {-1253484000 3600 1 BST} + {-1238364000 0 0 GMT} + {-1221429600 3600 1 BST} + {-1206914400 0 0 GMT} + {-1189980000 3600 1 BST} + {-1175464800 0 0 GMT} + {-1159135200 3600 1 BST} + {-1143410400 0 0 GMT} + {-1126476000 3600 1 BST} + {-1111960800 0 0 GMT} + {-1095631200 3600 1 BST} + {-1080511200 0 0 GMT} + {-1063576800 3600 1 BST} + {-1049061600 0 0 GMT} + {-1032127200 3600 1 BST} + {-1017612000 0 0 GMT} + {-1001282400 3600 1 BST} + {-986162400 0 0 GMT} + {-969228000 3600 1 BST} + {-950479200 0 0 GMT} + {-942012000 3600 1 BST} + {-904518000 7200 1 BDST} + {-896050800 3600 1 BST} + {-875487600 7200 1 BDST} + {-864601200 3600 1 BST} + {-844038000 7200 1 BDST} + {-832546800 3600 1 BST} + {-812588400 7200 1 BDST} + {-798073200 3600 1 BST} + {-781052400 7200 1 BDST} + {-772066800 3600 1 BST} + {-764805600 0 0 GMT} + {-748476000 3600 1 BST} + {-733356000 0 0 GMT} + {-719445600 3600 1 BST} + {-717030000 7200 1 BDST} + {-706748400 3600 1 BST} + {-699487200 0 0 GMT} + {-687996000 3600 1 BST} + {-668037600 0 0 GMT} + {-654732000 3600 1 BST} + {-636588000 0 0 GMT} + {-622072800 3600 1 BST} + {-605743200 0 0 GMT} + {-590623200 3600 1 BST} + {-574293600 0 0 GMT} + {-558568800 3600 1 BST} + {-542239200 0 0 GMT} + {-527119200 3600 1 BST} + {-512604000 0 0 GMT} + {-496274400 3600 1 BST} + {-481154400 0 0 GMT} + {-464220000 3600 1 BST} + {-449704800 0 0 GMT} + {-432165600 3600 1 BST} + {-417650400 0 0 GMT} + {-401320800 3600 0 CET} + {378687600 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Guernsey b/library/tzdata/Europe/Guernsey index 3e02d68..4372c64 100755 --- a/library/tzdata/Europe/Guernsey +++ b/library/tzdata/Europe/Guernsey @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:Europe/Guernsey) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:Europe/Guernsey) $TZData(:Europe/London) diff --git a/library/tzdata/Europe/Helsinki b/library/tzdata/Europe/Helsinki index 90fe276..04bd991 100644 --- a/library/tzdata/Europe/Helsinki +++ b/library/tzdata/Europe/Helsinki @@ -1,248 +1,248 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Helsinki) { - {-9223372036854775808 5992 0 LMT} - {-2890258792 5992 0 HMT} - {-1535938792 7200 0 EET} - {-875671200 10800 1 EEST} - {-859863600 7200 0 EET} - {354672000 7200 0 EET} - {354675600 10800 1 EEST} - {370400400 7200 0 EET} - {386125200 10800 1 EEST} - {401850000 7200 0 EET} - {417574800 10800 1 EEST} - {433299600 7200 0 EET} - {449024400 10800 1 EEST} - {465354000 7200 0 EET} - {481078800 10800 1 EEST} - {496803600 7200 0 EET} - {512528400 10800 1 EEST} - {528253200 7200 0 EET} - {543978000 10800 1 EEST} - {559702800 7200 0 EET} - {575427600 10800 1 EEST} - {591152400 7200 0 EET} - {606877200 10800 1 EEST} - {622602000 7200 0 EET} - {638326800 10800 1 EEST} - {654656400 7200 0 EET} - {670381200 10800 1 EEST} - {686106000 7200 0 EET} - {701830800 10800 1 EEST} - {717555600 7200 0 EET} - {733280400 10800 1 EEST} - {749005200 7200 0 EET} - {764730000 10800 1 EEST} - {780454800 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Helsinki) { + {-9223372036854775808 5992 0 LMT} + {-2890258792 5992 0 HMT} + {-1535938792 7200 0 EET} + {-875671200 10800 1 EEST} + {-859863600 7200 0 EET} + {354672000 7200 0 EET} + {354675600 10800 1 EEST} + {370400400 7200 0 EET} + {386125200 10800 1 EEST} + {401850000 7200 0 EET} + {417574800 10800 1 EEST} + {433299600 7200 0 EET} + {449024400 10800 1 EEST} + {465354000 7200 0 EET} + {481078800 10800 1 EEST} + {496803600 7200 0 EET} + {512528400 10800 1 EEST} + {528253200 7200 0 EET} + {543978000 10800 1 EEST} + {559702800 7200 0 EET} + {575427600 10800 1 EEST} + {591152400 7200 0 EET} + {606877200 10800 1 EEST} + {622602000 7200 0 EET} + {638326800 10800 1 EEST} + {654656400 7200 0 EET} + {670381200 10800 1 EEST} + {686106000 7200 0 EET} + {701830800 10800 1 EEST} + {717555600 7200 0 EET} + {733280400 10800 1 EEST} + {749005200 7200 0 EET} + {764730000 10800 1 EEST} + {780454800 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Isle_of_Man b/library/tzdata/Europe/Isle_of_Man index c64ef04..870ac45 100755 --- a/library/tzdata/Europe/Isle_of_Man +++ b/library/tzdata/Europe/Isle_of_Man @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:Europe/Isle_of_Man) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:Europe/Isle_of_Man) $TZData(:Europe/London) diff --git a/library/tzdata/Europe/Istanbul b/library/tzdata/Europe/Istanbul index 054308a..06b2f88 100644 --- a/library/tzdata/Europe/Istanbul +++ b/library/tzdata/Europe/Istanbul @@ -1,303 +1,303 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Istanbul) { - {-9223372036854775808 6952 0 LMT} - {-2840147752 7016 0 IMT} - {-1869875816 7200 0 EET} - {-1693706400 10800 1 EEST} - {-1680490800 7200 0 EET} - {-1570413600 10800 1 EEST} - {-1552186800 7200 0 EET} - {-1538359200 10800 1 EEST} - {-1522551600 7200 0 EET} - {-1507514400 10800 1 EEST} - {-1490583600 7200 0 EET} - {-1440208800 10800 1 EEST} - {-1428030000 7200 0 EET} - {-1409709600 10800 1 EEST} - {-1396494000 7200 0 EET} - {-931140000 10800 1 EEST} - {-922762800 7200 0 EET} - {-917834400 10800 1 EEST} - {-892436400 7200 0 EET} - {-875844000 10800 1 EEST} - {-857358000 7200 0 EET} - {-781063200 10800 1 EEST} - {-764737200 7200 0 EET} - {-744343200 10800 1 EEST} - {-733806000 7200 0 EET} - {-716436000 10800 1 EEST} - {-701924400 7200 0 EET} - {-684986400 10800 1 EEST} - {-670474800 7200 0 EET} - {-654141600 10800 1 EEST} - {-639025200 7200 0 EET} - {-621828000 10800 1 EEST} - {-606970800 7200 0 EET} - {-590032800 10800 1 EEST} - {-575434800 7200 0 EET} - {-235620000 10800 1 EEST} - {-228279600 7200 0 EET} - {-177732000 10800 1 EEST} - {-165726000 7200 0 EET} - {10533600 10800 1 EEST} - {23835600 7200 0 EET} - {41983200 10800 1 EEST} - {55285200 7200 0 EET} - {74037600 10800 1 EEST} - {87339600 7200 0 EET} - {107910000 10800 1 EEST} - {121219200 7200 0 EET} - {133920000 10800 1 EEST} - {152676000 7200 0 EET} - {165362400 10800 1 EEST} - {183502800 7200 0 EET} - {202428000 10800 1 EEST} - {215557200 7200 0 EET} - {228866400 10800 1 EEST} - {245797200 7200 0 EET} - {260316000 10800 1 EEST} - {277246800 14400 0 TRST} - {291769200 14400 1 TRST} - {308779200 10800 0 TRT} - {323827200 14400 1 TRST} - {340228800 10800 0 TRT} - {354672000 14400 1 TRST} - {371678400 10800 0 TRT} - {386121600 14400 1 TRST} - {403128000 10800 0 TRT} - {428446800 14400 1 TRST} - {433886400 10800 0 TRT} - {482792400 7200 0 EET} - {482796000 10800 1 EEST} - {496702800 7200 0 EET} - {512524800 10800 1 EEST} - {528249600 7200 0 EET} - {543974400 10800 1 EEST} - {559699200 7200 0 EET} - {575424000 10800 1 EEST} - {591148800 7200 0 EET} - {606873600 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {670374000 10800 1 EEST} - {686098800 7200 0 EET} - {701823600 10800 1 EEST} - {717548400 7200 0 EET} - {733273200 10800 1 EEST} - {748998000 7200 0 EET} - {764722800 10800 1 EEST} - {780447600 7200 0 EET} - {796172400 10800 1 EEST} - {811897200 7200 0 EET} - {828226800 10800 1 EEST} - {846370800 7200 0 EET} - {859676400 10800 1 EEST} - {877820400 7200 0 EET} - {891126000 10800 1 EEST} - {909270000 7200 0 EET} - {922575600 10800 1 EEST} - {941324400 7200 0 EET} - {954025200 10800 1 EEST} - {972774000 7200 0 EET} - {985474800 10800 1 EEST} - {1004223600 7200 0 EET} - {1017529200 10800 1 EEST} - {1035673200 7200 0 EET} - {1048978800 10800 1 EEST} - {1067122800 7200 0 EET} - {1080428400 10800 1 EEST} - {1099177200 7200 0 EET} - {1111878000 10800 1 EEST} - {1130626800 7200 0 EET} - {1143327600 10800 1 EEST} - {1162076400 7200 0 EET} - {1167602400 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Istanbul) { + {-9223372036854775808 6952 0 LMT} + {-2840147752 7016 0 IMT} + {-1869875816 7200 0 EET} + {-1693706400 10800 1 EEST} + {-1680490800 7200 0 EET} + {-1570413600 10800 1 EEST} + {-1552186800 7200 0 EET} + {-1538359200 10800 1 EEST} + {-1522551600 7200 0 EET} + {-1507514400 10800 1 EEST} + {-1490583600 7200 0 EET} + {-1440208800 10800 1 EEST} + {-1428030000 7200 0 EET} + {-1409709600 10800 1 EEST} + {-1396494000 7200 0 EET} + {-931140000 10800 1 EEST} + {-922762800 7200 0 EET} + {-917834400 10800 1 EEST} + {-892436400 7200 0 EET} + {-875844000 10800 1 EEST} + {-857358000 7200 0 EET} + {-781063200 10800 1 EEST} + {-764737200 7200 0 EET} + {-744343200 10800 1 EEST} + {-733806000 7200 0 EET} + {-716436000 10800 1 EEST} + {-701924400 7200 0 EET} + {-684986400 10800 1 EEST} + {-670474800 7200 0 EET} + {-654141600 10800 1 EEST} + {-639025200 7200 0 EET} + {-621828000 10800 1 EEST} + {-606970800 7200 0 EET} + {-590032800 10800 1 EEST} + {-575434800 7200 0 EET} + {-235620000 10800 1 EEST} + {-228279600 7200 0 EET} + {-177732000 10800 1 EEST} + {-165726000 7200 0 EET} + {10533600 10800 1 EEST} + {23835600 7200 0 EET} + {41983200 10800 1 EEST} + {55285200 7200 0 EET} + {74037600 10800 1 EEST} + {87339600 7200 0 EET} + {107910000 10800 1 EEST} + {121219200 7200 0 EET} + {133920000 10800 1 EEST} + {152676000 7200 0 EET} + {165362400 10800 1 EEST} + {183502800 7200 0 EET} + {202428000 10800 1 EEST} + {215557200 7200 0 EET} + {228866400 10800 1 EEST} + {245797200 7200 0 EET} + {260316000 10800 1 EEST} + {277246800 14400 0 TRST} + {291769200 14400 1 TRST} + {308779200 10800 0 TRT} + {323827200 14400 1 TRST} + {340228800 10800 0 TRT} + {354672000 14400 1 TRST} + {371678400 10800 0 TRT} + {386121600 14400 1 TRST} + {403128000 10800 0 TRT} + {428446800 14400 1 TRST} + {433886400 10800 0 TRT} + {482792400 7200 0 EET} + {482796000 10800 1 EEST} + {496702800 7200 0 EET} + {512524800 10800 1 EEST} + {528249600 7200 0 EET} + {543974400 10800 1 EEST} + {559699200 7200 0 EET} + {575424000 10800 1 EEST} + {591148800 7200 0 EET} + {606873600 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {670374000 10800 1 EEST} + {686098800 7200 0 EET} + {701823600 10800 1 EEST} + {717548400 7200 0 EET} + {733273200 10800 1 EEST} + {748998000 7200 0 EET} + {764722800 10800 1 EEST} + {780447600 7200 0 EET} + {796172400 10800 1 EEST} + {811897200 7200 0 EET} + {828226800 10800 1 EEST} + {846370800 7200 0 EET} + {859676400 10800 1 EEST} + {877820400 7200 0 EET} + {891126000 10800 1 EEST} + {909270000 7200 0 EET} + {922575600 10800 1 EEST} + {941324400 7200 0 EET} + {954025200 10800 1 EEST} + {972774000 7200 0 EET} + {985474800 10800 1 EEST} + {1004223600 7200 0 EET} + {1017529200 10800 1 EEST} + {1035673200 7200 0 EET} + {1048978800 10800 1 EEST} + {1067122800 7200 0 EET} + {1080428400 10800 1 EEST} + {1099177200 7200 0 EET} + {1111878000 10800 1 EEST} + {1130626800 7200 0 EET} + {1143327600 10800 1 EEST} + {1162076400 7200 0 EET} + {1167602400 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Jersey b/library/tzdata/Europe/Jersey index eb92e8a..e4da512 100755 --- a/library/tzdata/Europe/Jersey +++ b/library/tzdata/Europe/Jersey @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:Europe/Jersey) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:Europe/Jersey) $TZData(:Europe/London) diff --git a/library/tzdata/Europe/Kaliningrad b/library/tzdata/Europe/Kaliningrad index 8a106e4..94ebb12 100644 --- a/library/tzdata/Europe/Kaliningrad +++ b/library/tzdata/Europe/Kaliningrad @@ -1,261 +1,261 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Kaliningrad) { - {-9223372036854775808 4920 0 LMT} - {-2422056120 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-788922000 7200 0 CET} - {-778730400 10800 1 CEST} - {-762663600 7200 0 CET} - {-757389600 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {638319600 14400 1 MSD} - {654649200 10800 0 MSK} - {670374000 7200 0 EEMMTT} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {701816400 10800 1 EEST} - {717537600 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {846374400 7200 0 EET} - {859680000 10800 1 EEST} - {877824000 7200 0 EET} - {891129600 10800 1 EEST} - {909273600 7200 0 EET} - {922579200 10800 1 EEST} - {941328000 7200 0 EET} - {954028800 10800 1 EEST} - {972777600 7200 0 EET} - {985478400 10800 1 EEST} - {1004227200 7200 0 EET} - {1017532800 10800 1 EEST} - {1035676800 7200 0 EET} - {1048982400 10800 1 EEST} - {1067126400 7200 0 EET} - {1080432000 10800 1 EEST} - {1099180800 7200 0 EET} - {1111881600 10800 1 EEST} - {1130630400 7200 0 EET} - {1143331200 10800 1 EEST} - {1162080000 7200 0 EET} - {1174780800 10800 1 EEST} - {1193529600 7200 0 EET} - {1206835200 10800 1 EEST} - {1224979200 7200 0 EET} - {1238284800 10800 1 EEST} - {1256428800 7200 0 EET} - {1269734400 10800 1 EEST} - {1288483200 7200 0 EET} - {1301184000 10800 1 EEST} - {1319932800 7200 0 EET} - {1332633600 10800 1 EEST} - {1351382400 7200 0 EET} - {1364688000 10800 1 EEST} - {1382832000 7200 0 EET} - {1396137600 10800 1 EEST} - {1414281600 7200 0 EET} - {1427587200 10800 1 EEST} - {1445731200 7200 0 EET} - {1459036800 10800 1 EEST} - {1477785600 7200 0 EET} - {1490486400 10800 1 EEST} - {1509235200 7200 0 EET} - {1521936000 10800 1 EEST} - {1540684800 7200 0 EET} - {1553990400 10800 1 EEST} - {1572134400 7200 0 EET} - {1585440000 10800 1 EEST} - {1603584000 7200 0 EET} - {1616889600 10800 1 EEST} - {1635638400 7200 0 EET} - {1648339200 10800 1 EEST} - {1667088000 7200 0 EET} - {1679788800 10800 1 EEST} - {1698537600 7200 0 EET} - {1711843200 10800 1 EEST} - {1729987200 7200 0 EET} - {1743292800 10800 1 EEST} - {1761436800 7200 0 EET} - {1774742400 10800 1 EEST} - {1792886400 7200 0 EET} - {1806192000 10800 1 EEST} - {1824940800 7200 0 EET} - {1837641600 10800 1 EEST} - {1856390400 7200 0 EET} - {1869091200 10800 1 EEST} - {1887840000 7200 0 EET} - {1901145600 10800 1 EEST} - {1919289600 7200 0 EET} - {1932595200 10800 1 EEST} - {1950739200 7200 0 EET} - {1964044800 10800 1 EEST} - {1982793600 7200 0 EET} - {1995494400 10800 1 EEST} - {2014243200 7200 0 EET} - {2026944000 10800 1 EEST} - {2045692800 7200 0 EET} - {2058393600 10800 1 EEST} - {2077142400 7200 0 EET} - {2090448000 10800 1 EEST} - {2108592000 7200 0 EET} - {2121897600 10800 1 EEST} - {2140041600 7200 0 EET} - {2153347200 10800 1 EEST} - {2172096000 7200 0 EET} - {2184796800 10800 1 EEST} - {2203545600 7200 0 EET} - {2216246400 10800 1 EEST} - {2234995200 7200 0 EET} - {2248300800 10800 1 EEST} - {2266444800 7200 0 EET} - {2279750400 10800 1 EEST} - {2297894400 7200 0 EET} - {2311200000 10800 1 EEST} - {2329344000 7200 0 EET} - {2342649600 10800 1 EEST} - {2361398400 7200 0 EET} - {2374099200 10800 1 EEST} - {2392848000 7200 0 EET} - {2405548800 10800 1 EEST} - {2424297600 7200 0 EET} - {2437603200 10800 1 EEST} - {2455747200 7200 0 EET} - {2469052800 10800 1 EEST} - {2487196800 7200 0 EET} - {2500502400 10800 1 EEST} - {2519251200 7200 0 EET} - {2531952000 10800 1 EEST} - {2550700800 7200 0 EET} - {2563401600 10800 1 EEST} - {2582150400 7200 0 EET} - {2595456000 10800 1 EEST} - {2613600000 7200 0 EET} - {2626905600 10800 1 EEST} - {2645049600 7200 0 EET} - {2658355200 10800 1 EEST} - {2676499200 7200 0 EET} - {2689804800 10800 1 EEST} - {2708553600 7200 0 EET} - {2721254400 10800 1 EEST} - {2740003200 7200 0 EET} - {2752704000 10800 1 EEST} - {2771452800 7200 0 EET} - {2784758400 10800 1 EEST} - {2802902400 7200 0 EET} - {2816208000 10800 1 EEST} - {2834352000 7200 0 EET} - {2847657600 10800 1 EEST} - {2866406400 7200 0 EET} - {2879107200 10800 1 EEST} - {2897856000 7200 0 EET} - {2910556800 10800 1 EEST} - {2929305600 7200 0 EET} - {2942006400 10800 1 EEST} - {2960755200 7200 0 EET} - {2974060800 10800 1 EEST} - {2992204800 7200 0 EET} - {3005510400 10800 1 EEST} - {3023654400 7200 0 EET} - {3036960000 10800 1 EEST} - {3055708800 7200 0 EET} - {3068409600 10800 1 EEST} - {3087158400 7200 0 EET} - {3099859200 10800 1 EEST} - {3118608000 7200 0 EET} - {3131913600 10800 1 EEST} - {3150057600 7200 0 EET} - {3163363200 10800 1 EEST} - {3181507200 7200 0 EET} - {3194812800 10800 1 EEST} - {3212956800 7200 0 EET} - {3226262400 10800 1 EEST} - {3245011200 7200 0 EET} - {3257712000 10800 1 EEST} - {3276460800 7200 0 EET} - {3289161600 10800 1 EEST} - {3307910400 7200 0 EET} - {3321216000 10800 1 EEST} - {3339360000 7200 0 EET} - {3352665600 10800 1 EEST} - {3370809600 7200 0 EET} - {3384115200 10800 1 EEST} - {3402864000 7200 0 EET} - {3415564800 10800 1 EEST} - {3434313600 7200 0 EET} - {3447014400 10800 1 EEST} - {3465763200 7200 0 EET} - {3479068800 10800 1 EEST} - {3497212800 7200 0 EET} - {3510518400 10800 1 EEST} - {3528662400 7200 0 EET} - {3541968000 10800 1 EEST} - {3560112000 7200 0 EET} - {3573417600 10800 1 EEST} - {3592166400 7200 0 EET} - {3604867200 10800 1 EEST} - {3623616000 7200 0 EET} - {3636316800 10800 1 EEST} - {3655065600 7200 0 EET} - {3668371200 10800 1 EEST} - {3686515200 7200 0 EET} - {3699820800 10800 1 EEST} - {3717964800 7200 0 EET} - {3731270400 10800 1 EEST} - {3750019200 7200 0 EET} - {3762720000 10800 1 EEST} - {3781468800 7200 0 EET} - {3794169600 10800 1 EEST} - {3812918400 7200 0 EET} - {3825619200 10800 1 EEST} - {3844368000 7200 0 EET} - {3857673600 10800 1 EEST} - {3875817600 7200 0 EET} - {3889123200 10800 1 EEST} - {3907267200 7200 0 EET} - {3920572800 10800 1 EEST} - {3939321600 7200 0 EET} - {3952022400 10800 1 EEST} - {3970771200 7200 0 EET} - {3983472000 10800 1 EEST} - {4002220800 7200 0 EET} - {4015526400 10800 1 EEST} - {4033670400 7200 0 EET} - {4046976000 10800 1 EEST} - {4065120000 7200 0 EET} - {4078425600 10800 1 EEST} - {4096569600 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Kaliningrad) { + {-9223372036854775808 4920 0 LMT} + {-2422056120 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-788922000 7200 0 CET} + {-778730400 10800 1 CEST} + {-762663600 7200 0 CET} + {-757389600 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 7200 0 EEMMTT} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {701816400 10800 1 EEST} + {717537600 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {846374400 7200 0 EET} + {859680000 10800 1 EEST} + {877824000 7200 0 EET} + {891129600 10800 1 EEST} + {909273600 7200 0 EET} + {922579200 10800 1 EEST} + {941328000 7200 0 EET} + {954028800 10800 1 EEST} + {972777600 7200 0 EET} + {985478400 10800 1 EEST} + {1004227200 7200 0 EET} + {1017532800 10800 1 EEST} + {1035676800 7200 0 EET} + {1048982400 10800 1 EEST} + {1067126400 7200 0 EET} + {1080432000 10800 1 EEST} + {1099180800 7200 0 EET} + {1111881600 10800 1 EEST} + {1130630400 7200 0 EET} + {1143331200 10800 1 EEST} + {1162080000 7200 0 EET} + {1174780800 10800 1 EEST} + {1193529600 7200 0 EET} + {1206835200 10800 1 EEST} + {1224979200 7200 0 EET} + {1238284800 10800 1 EEST} + {1256428800 7200 0 EET} + {1269734400 10800 1 EEST} + {1288483200 7200 0 EET} + {1301184000 10800 1 EEST} + {1319932800 7200 0 EET} + {1332633600 10800 1 EEST} + {1351382400 7200 0 EET} + {1364688000 10800 1 EEST} + {1382832000 7200 0 EET} + {1396137600 10800 1 EEST} + {1414281600 7200 0 EET} + {1427587200 10800 1 EEST} + {1445731200 7200 0 EET} + {1459036800 10800 1 EEST} + {1477785600 7200 0 EET} + {1490486400 10800 1 EEST} + {1509235200 7200 0 EET} + {1521936000 10800 1 EEST} + {1540684800 7200 0 EET} + {1553990400 10800 1 EEST} + {1572134400 7200 0 EET} + {1585440000 10800 1 EEST} + {1603584000 7200 0 EET} + {1616889600 10800 1 EEST} + {1635638400 7200 0 EET} + {1648339200 10800 1 EEST} + {1667088000 7200 0 EET} + {1679788800 10800 1 EEST} + {1698537600 7200 0 EET} + {1711843200 10800 1 EEST} + {1729987200 7200 0 EET} + {1743292800 10800 1 EEST} + {1761436800 7200 0 EET} + {1774742400 10800 1 EEST} + {1792886400 7200 0 EET} + {1806192000 10800 1 EEST} + {1824940800 7200 0 EET} + {1837641600 10800 1 EEST} + {1856390400 7200 0 EET} + {1869091200 10800 1 EEST} + {1887840000 7200 0 EET} + {1901145600 10800 1 EEST} + {1919289600 7200 0 EET} + {1932595200 10800 1 EEST} + {1950739200 7200 0 EET} + {1964044800 10800 1 EEST} + {1982793600 7200 0 EET} + {1995494400 10800 1 EEST} + {2014243200 7200 0 EET} + {2026944000 10800 1 EEST} + {2045692800 7200 0 EET} + {2058393600 10800 1 EEST} + {2077142400 7200 0 EET} + {2090448000 10800 1 EEST} + {2108592000 7200 0 EET} + {2121897600 10800 1 EEST} + {2140041600 7200 0 EET} + {2153347200 10800 1 EEST} + {2172096000 7200 0 EET} + {2184796800 10800 1 EEST} + {2203545600 7200 0 EET} + {2216246400 10800 1 EEST} + {2234995200 7200 0 EET} + {2248300800 10800 1 EEST} + {2266444800 7200 0 EET} + {2279750400 10800 1 EEST} + {2297894400 7200 0 EET} + {2311200000 10800 1 EEST} + {2329344000 7200 0 EET} + {2342649600 10800 1 EEST} + {2361398400 7200 0 EET} + {2374099200 10800 1 EEST} + {2392848000 7200 0 EET} + {2405548800 10800 1 EEST} + {2424297600 7200 0 EET} + {2437603200 10800 1 EEST} + {2455747200 7200 0 EET} + {2469052800 10800 1 EEST} + {2487196800 7200 0 EET} + {2500502400 10800 1 EEST} + {2519251200 7200 0 EET} + {2531952000 10800 1 EEST} + {2550700800 7200 0 EET} + {2563401600 10800 1 EEST} + {2582150400 7200 0 EET} + {2595456000 10800 1 EEST} + {2613600000 7200 0 EET} + {2626905600 10800 1 EEST} + {2645049600 7200 0 EET} + {2658355200 10800 1 EEST} + {2676499200 7200 0 EET} + {2689804800 10800 1 EEST} + {2708553600 7200 0 EET} + {2721254400 10800 1 EEST} + {2740003200 7200 0 EET} + {2752704000 10800 1 EEST} + {2771452800 7200 0 EET} + {2784758400 10800 1 EEST} + {2802902400 7200 0 EET} + {2816208000 10800 1 EEST} + {2834352000 7200 0 EET} + {2847657600 10800 1 EEST} + {2866406400 7200 0 EET} + {2879107200 10800 1 EEST} + {2897856000 7200 0 EET} + {2910556800 10800 1 EEST} + {2929305600 7200 0 EET} + {2942006400 10800 1 EEST} + {2960755200 7200 0 EET} + {2974060800 10800 1 EEST} + {2992204800 7200 0 EET} + {3005510400 10800 1 EEST} + {3023654400 7200 0 EET} + {3036960000 10800 1 EEST} + {3055708800 7200 0 EET} + {3068409600 10800 1 EEST} + {3087158400 7200 0 EET} + {3099859200 10800 1 EEST} + {3118608000 7200 0 EET} + {3131913600 10800 1 EEST} + {3150057600 7200 0 EET} + {3163363200 10800 1 EEST} + {3181507200 7200 0 EET} + {3194812800 10800 1 EEST} + {3212956800 7200 0 EET} + {3226262400 10800 1 EEST} + {3245011200 7200 0 EET} + {3257712000 10800 1 EEST} + {3276460800 7200 0 EET} + {3289161600 10800 1 EEST} + {3307910400 7200 0 EET} + {3321216000 10800 1 EEST} + {3339360000 7200 0 EET} + {3352665600 10800 1 EEST} + {3370809600 7200 0 EET} + {3384115200 10800 1 EEST} + {3402864000 7200 0 EET} + {3415564800 10800 1 EEST} + {3434313600 7200 0 EET} + {3447014400 10800 1 EEST} + {3465763200 7200 0 EET} + {3479068800 10800 1 EEST} + {3497212800 7200 0 EET} + {3510518400 10800 1 EEST} + {3528662400 7200 0 EET} + {3541968000 10800 1 EEST} + {3560112000 7200 0 EET} + {3573417600 10800 1 EEST} + {3592166400 7200 0 EET} + {3604867200 10800 1 EEST} + {3623616000 7200 0 EET} + {3636316800 10800 1 EEST} + {3655065600 7200 0 EET} + {3668371200 10800 1 EEST} + {3686515200 7200 0 EET} + {3699820800 10800 1 EEST} + {3717964800 7200 0 EET} + {3731270400 10800 1 EEST} + {3750019200 7200 0 EET} + {3762720000 10800 1 EEST} + {3781468800 7200 0 EET} + {3794169600 10800 1 EEST} + {3812918400 7200 0 EET} + {3825619200 10800 1 EEST} + {3844368000 7200 0 EET} + {3857673600 10800 1 EEST} + {3875817600 7200 0 EET} + {3889123200 10800 1 EEST} + {3907267200 7200 0 EET} + {3920572800 10800 1 EEST} + {3939321600 7200 0 EET} + {3952022400 10800 1 EEST} + {3970771200 7200 0 EET} + {3983472000 10800 1 EEST} + {4002220800 7200 0 EET} + {4015526400 10800 1 EEST} + {4033670400 7200 0 EET} + {4046976000 10800 1 EEST} + {4065120000 7200 0 EET} + {4078425600 10800 1 EEST} + {4096569600 7200 0 EET} +} diff --git a/library/tzdata/Europe/Kiev b/library/tzdata/Europe/Kiev index fdb86e7..0206be7 100644 --- a/library/tzdata/Europe/Kiev +++ b/library/tzdata/Europe/Kiev @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Kiev) { - {-9223372036854775808 7324 0 LMT} - {-2840148124 7324 0 KMT} - {-1441159324 7200 0 EET} - {-1247536800 10800 0 MSK} - {-892522800 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-825382800 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {646786800 7200 0 EET} - {694216800 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {788911200 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Kiev) { + {-9223372036854775808 7324 0 LMT} + {-2840148124 7324 0 KMT} + {-1441159324 7200 0 EET} + {-1247536800 10800 0 MSK} + {-892522800 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-825382800 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {646786800 7200 0 EET} + {694216800 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {788911200 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Lisbon b/library/tzdata/Europe/Lisbon index 20e270e..79c688a 100644 --- a/library/tzdata/Europe/Lisbon +++ b/library/tzdata/Europe/Lisbon @@ -1,351 +1,351 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Lisbon) { - {-9223372036854775808 -2192 0 LMT} - {-2713908208 -2192 0 LMT} - {-1830381808 0 0 WET} - {-1689555600 3600 1 WEST} - {-1677801600 0 0 WET} - {-1667437200 3600 1 WEST} - {-1647738000 0 0 WET} - {-1635814800 3600 1 WEST} - {-1616202000 0 0 WET} - {-1604365200 3600 1 WEST} - {-1584666000 0 0 WET} - {-1572742800 3600 1 WEST} - {-1553043600 0 0 WET} - {-1541206800 3600 1 WEST} - {-1521507600 0 0 WET} - {-1442451600 3600 1 WEST} - {-1426813200 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269824400 0 0 WET} - {-1221440400 3600 1 WEST} - {-1206925200 0 0 WET} - {-1191200400 3600 1 WEST} - {-1175475600 0 0 WET} - {-1127696400 3600 1 WEST} - {-1111971600 0 0 WET} - {-1096851600 3600 1 WEST} - {-1080522000 0 0 WET} - {-1063587600 3600 1 WEST} - {-1049072400 0 0 WET} - {-1033347600 3600 1 WEST} - {-1017622800 0 0 WET} - {-1002502800 3600 1 WEST} - {-986173200 0 0 WET} - {-969238800 3600 1 WEST} - {-950490000 0 0 WET} - {-942022800 3600 1 WEST} - {-922669200 0 0 WET} - {-906944400 3600 1 WEST} - {-891133200 0 0 WET} - {-877309200 3600 1 WEST} - {-873684000 7200 1 WEMT} - {-864007200 3600 1 WEST} - {-857955600 0 0 WET} - {-845859600 3600 1 WEST} - {-842839200 7200 1 WEMT} - {-831348000 3600 1 WEST} - {-825901200 0 0 WET} - {-814410000 3600 1 WEST} - {-810784800 7200 1 WEMT} - {-799898400 3600 1 WEST} - {-794451600 0 0 WET} - {-782960400 3600 1 WEST} - {-779335200 7200 1 WEMT} - {-768448800 3600 1 WEST} - {-763002000 0 0 WET} - {-749091600 3600 1 WEST} - {-733366800 0 0 WET} - {-717631200 3600 1 WEST} - {-701906400 0 0 WET} - {-686181600 3600 1 WEST} - {-670456800 0 0 WET} - {-654732000 3600 1 WEST} - {-639007200 0 0 WET} - {-591832800 3600 1 WEST} - {-575503200 0 0 WET} - {-559778400 3600 1 WEST} - {-544053600 0 0 WET} - {-528328800 3600 1 WEST} - {-512604000 0 0 WET} - {-496879200 3600 1 WEST} - {-481154400 0 0 WET} - {-465429600 3600 1 WEST} - {-449704800 0 0 WET} - {-433980000 3600 1 WEST} - {-417650400 0 0 WET} - {-401925600 3600 1 WEST} - {-386200800 0 0 WET} - {-370476000 3600 1 WEST} - {-354751200 0 0 WET} - {-339026400 3600 1 WEST} - {-323301600 0 0 WET} - {-307576800 3600 1 WEST} - {-291852000 0 0 WET} - {-276127200 3600 1 WEST} - {-260402400 0 0 WET} - {-244677600 3600 1 WEST} - {-228348000 0 0 WET} - {-212623200 3600 1 WEST} - {-196898400 0 0 WET} - {-181173600 3600 1 WEST} - {-165448800 0 0 WET} - {-149724000 3600 1 WEST} - {-133999200 0 0 WET} - {-118274400 3600 0 CET} - {212544000 0 0 WET} - {228268800 3600 1 WEST} - {243993600 0 0 WET} - {260323200 3600 1 WEST} - {276048000 0 0 WET} - {291772800 3600 1 WEST} - {307501200 0 0 WET} - {323222400 3600 1 WEST} - {338950800 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417578400 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 3600 0 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Lisbon) { + {-9223372036854775808 -2192 0 LMT} + {-2713908208 -2192 0 LMT} + {-1830381808 0 0 WET} + {-1689555600 3600 1 WEST} + {-1677801600 0 0 WET} + {-1667437200 3600 1 WEST} + {-1647738000 0 0 WET} + {-1635814800 3600 1 WEST} + {-1616202000 0 0 WET} + {-1604365200 3600 1 WEST} + {-1584666000 0 0 WET} + {-1572742800 3600 1 WEST} + {-1553043600 0 0 WET} + {-1541206800 3600 1 WEST} + {-1521507600 0 0 WET} + {-1442451600 3600 1 WEST} + {-1426813200 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269824400 0 0 WET} + {-1221440400 3600 1 WEST} + {-1206925200 0 0 WET} + {-1191200400 3600 1 WEST} + {-1175475600 0 0 WET} + {-1127696400 3600 1 WEST} + {-1111971600 0 0 WET} + {-1096851600 3600 1 WEST} + {-1080522000 0 0 WET} + {-1063587600 3600 1 WEST} + {-1049072400 0 0 WET} + {-1033347600 3600 1 WEST} + {-1017622800 0 0 WET} + {-1002502800 3600 1 WEST} + {-986173200 0 0 WET} + {-969238800 3600 1 WEST} + {-950490000 0 0 WET} + {-942022800 3600 1 WEST} + {-922669200 0 0 WET} + {-906944400 3600 1 WEST} + {-891133200 0 0 WET} + {-877309200 3600 1 WEST} + {-873684000 7200 1 WEMT} + {-864007200 3600 1 WEST} + {-857955600 0 0 WET} + {-845859600 3600 1 WEST} + {-842839200 7200 1 WEMT} + {-831348000 3600 1 WEST} + {-825901200 0 0 WET} + {-814410000 3600 1 WEST} + {-810784800 7200 1 WEMT} + {-799898400 3600 1 WEST} + {-794451600 0 0 WET} + {-782960400 3600 1 WEST} + {-779335200 7200 1 WEMT} + {-768448800 3600 1 WEST} + {-763002000 0 0 WET} + {-749091600 3600 1 WEST} + {-733366800 0 0 WET} + {-717631200 3600 1 WEST} + {-701906400 0 0 WET} + {-686181600 3600 1 WEST} + {-670456800 0 0 WET} + {-654732000 3600 1 WEST} + {-639007200 0 0 WET} + {-591832800 3600 1 WEST} + {-575503200 0 0 WET} + {-559778400 3600 1 WEST} + {-544053600 0 0 WET} + {-528328800 3600 1 WEST} + {-512604000 0 0 WET} + {-496879200 3600 1 WEST} + {-481154400 0 0 WET} + {-465429600 3600 1 WEST} + {-449704800 0 0 WET} + {-433980000 3600 1 WEST} + {-417650400 0 0 WET} + {-401925600 3600 1 WEST} + {-386200800 0 0 WET} + {-370476000 3600 1 WEST} + {-354751200 0 0 WET} + {-339026400 3600 1 WEST} + {-323301600 0 0 WET} + {-307576800 3600 1 WEST} + {-291852000 0 0 WET} + {-276127200 3600 1 WEST} + {-260402400 0 0 WET} + {-244677600 3600 1 WEST} + {-228348000 0 0 WET} + {-212623200 3600 1 WEST} + {-196898400 0 0 WET} + {-181173600 3600 1 WEST} + {-165448800 0 0 WET} + {-149724000 3600 1 WEST} + {-133999200 0 0 WET} + {-118274400 3600 0 CET} + {212544000 0 0 WET} + {228268800 3600 1 WEST} + {243993600 0 0 WET} + {260323200 3600 1 WEST} + {276048000 0 0 WET} + {291772800 3600 1 WEST} + {307501200 0 0 WET} + {323222400 3600 1 WEST} + {338950800 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417578400 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 3600 0 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Europe/Ljubljana b/library/tzdata/Europe/Ljubljana index bd46db1..42c7df4 100644 --- a/library/tzdata/Europe/Ljubljana +++ b/library/tzdata/Europe/Ljubljana @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Ljubljana) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Ljubljana) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/London b/library/tzdata/Europe/London index 0bca507..2014e00 100644 --- a/library/tzdata/Europe/London +++ b/library/tzdata/Europe/London @@ -1,372 +1,372 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/London) { - {-9223372036854775808 -75 0 LMT} - {-3852662325 0 0 GMT} - {-1691964000 3600 1 BST} - {-1680472800 0 0 GMT} - {-1664143200 3600 1 BST} - {-1650146400 0 0 GMT} - {-1633903200 3600 1 BST} - {-1617487200 0 0 GMT} - {-1601848800 3600 1 BST} - {-1586037600 0 0 GMT} - {-1570399200 3600 1 BST} - {-1552168800 0 0 GMT} - {-1538344800 3600 1 BST} - {-1522533600 0 0 GMT} - {-1507500000 3600 1 BST} - {-1490565600 0 0 GMT} - {-1473631200 3600 1 BST} - {-1460930400 0 0 GMT} - {-1442786400 3600 1 BST} - {-1428876000 0 0 GMT} - {-1410732000 3600 1 BST} - {-1396216800 0 0 GMT} - {-1379282400 3600 1 BST} - {-1364767200 0 0 GMT} - {-1348437600 3600 1 BST} - {-1333317600 0 0 GMT} - {-1315778400 3600 1 BST} - {-1301263200 0 0 GMT} - {-1284328800 3600 1 BST} - {-1269813600 0 0 GMT} - {-1253484000 3600 1 BST} - {-1238364000 0 0 GMT} - {-1221429600 3600 1 BST} - {-1206914400 0 0 GMT} - {-1189980000 3600 1 BST} - {-1175464800 0 0 GMT} - {-1159135200 3600 1 BST} - {-1143410400 0 0 GMT} - {-1126476000 3600 1 BST} - {-1111960800 0 0 GMT} - {-1095631200 3600 1 BST} - {-1080511200 0 0 GMT} - {-1063576800 3600 1 BST} - {-1049061600 0 0 GMT} - {-1032127200 3600 1 BST} - {-1017612000 0 0 GMT} - {-1001282400 3600 1 BST} - {-986162400 0 0 GMT} - {-969228000 3600 1 BST} - {-950479200 0 0 GMT} - {-942012000 3600 1 BST} - {-904518000 7200 1 BDST} - {-896050800 3600 1 BST} - {-875487600 7200 1 BDST} - {-864601200 3600 1 BST} - {-844038000 7200 1 BDST} - {-832546800 3600 1 BST} - {-812588400 7200 1 BDST} - {-798073200 3600 1 BST} - {-781052400 7200 1 BDST} - {-772066800 3600 1 BST} - {-764805600 0 0 GMT} - {-748476000 3600 1 BST} - {-733356000 0 0 GMT} - {-719445600 3600 1 BST} - {-717030000 7200 1 BDST} - {-706748400 3600 1 BST} - {-699487200 0 0 GMT} - {-687996000 3600 1 BST} - {-668037600 0 0 GMT} - {-654732000 3600 1 BST} - {-636588000 0 0 GMT} - {-622072800 3600 1 BST} - {-605743200 0 0 GMT} - {-590623200 3600 1 BST} - {-574293600 0 0 GMT} - {-558568800 3600 1 BST} - {-542239200 0 0 GMT} - {-527119200 3600 1 BST} - {-512604000 0 0 GMT} - {-496274400 3600 1 BST} - {-481154400 0 0 GMT} - {-464220000 3600 1 BST} - {-449704800 0 0 GMT} - {-432165600 3600 1 BST} - {-417650400 0 0 GMT} - {-401320800 3600 1 BST} - {-386200800 0 0 GMT} - {-369266400 3600 1 BST} - {-354751200 0 0 GMT} - {-337816800 3600 1 BST} - {-323301600 0 0 GMT} - {-306972000 3600 1 BST} - {-291852000 0 0 GMT} - {-276732000 3600 1 BST} - {-257983200 0 0 GMT} - {-245282400 3600 1 BST} - {-226533600 0 0 GMT} - {-213228000 3600 1 BST} - {-195084000 0 0 GMT} - {-182383200 3600 1 BST} - {-163634400 0 0 GMT} - {-150933600 3600 1 BST} - {-132184800 0 0 GMT} - {-119484000 3600 1 BST} - {-100735200 0 0 GMT} - {-88034400 3600 1 BST} - {-68680800 0 0 GMT} - {-59004000 3600 1 BST} - {-37238400 3600 0 BST} - {57722400 0 0 GMT} - {69818400 3600 1 BST} - {89172000 0 0 GMT} - {101268000 3600 1 BST} - {120621600 0 0 GMT} - {132717600 3600 1 BST} - {152071200 0 0 GMT} - {164167200 3600 1 BST} - {183520800 0 0 GMT} - {196221600 3600 1 BST} - {214970400 0 0 GMT} - {227671200 3600 1 BST} - {246420000 0 0 GMT} - {259120800 3600 1 BST} - {278474400 0 0 GMT} - {290570400 3600 1 BST} - {309924000 0 0 GMT} - {322020000 3600 1 BST} - {341373600 0 0 GMT} - {354675600 3600 1 BST} - {372819600 0 0 GMT} - {386125200 3600 1 BST} - {404269200 0 0 GMT} - {417574800 3600 1 BST} - {435718800 0 0 GMT} - {449024400 3600 1 BST} - {467773200 0 0 GMT} - {481078800 3600 1 BST} - {499222800 0 0 GMT} - {512528400 3600 1 BST} - {530672400 0 0 GMT} - {543978000 3600 1 BST} - {562122000 0 0 GMT} - {575427600 3600 1 BST} - {593571600 0 0 GMT} - {606877200 3600 1 BST} - {625626000 0 0 GMT} - {638326800 3600 1 BST} - {657075600 0 0 GMT} - {670381200 3600 1 BST} - {688525200 0 0 GMT} - {701830800 3600 1 BST} - {719974800 0 0 GMT} - {733280400 3600 1 BST} - {751424400 0 0 GMT} - {764730000 3600 1 BST} - {782874000 0 0 GMT} - {796179600 3600 1 BST} - {814323600 0 0 GMT} - {820454400 0 0 GMT} - {828234000 3600 1 BST} - {846378000 0 0 GMT} - {859683600 3600 1 BST} - {877827600 0 0 GMT} - {891133200 3600 1 BST} - {909277200 0 0 GMT} - {922582800 3600 1 BST} - {941331600 0 0 GMT} - {954032400 3600 1 BST} - {972781200 0 0 GMT} - {985482000 3600 1 BST} - {1004230800 0 0 GMT} - {1017536400 3600 1 BST} - {1035680400 0 0 GMT} - {1048986000 3600 1 BST} - {1067130000 0 0 GMT} - {1080435600 3600 1 BST} - {1099184400 0 0 GMT} - {1111885200 3600 1 BST} - {1130634000 0 0 GMT} - {1143334800 3600 1 BST} - {1162083600 0 0 GMT} - {1174784400 3600 1 BST} - {1193533200 0 0 GMT} - {1206838800 3600 1 BST} - {1224982800 0 0 GMT} - {1238288400 3600 1 BST} - {1256432400 0 0 GMT} - {1269738000 3600 1 BST} - {1288486800 0 0 GMT} - {1301187600 3600 1 BST} - {1319936400 0 0 GMT} - {1332637200 3600 1 BST} - {1351386000 0 0 GMT} - {1364691600 3600 1 BST} - {1382835600 0 0 GMT} - {1396141200 3600 1 BST} - {1414285200 0 0 GMT} - {1427590800 3600 1 BST} - {1445734800 0 0 GMT} - {1459040400 3600 1 BST} - {1477789200 0 0 GMT} - {1490490000 3600 1 BST} - {1509238800 0 0 GMT} - {1521939600 3600 1 BST} - {1540688400 0 0 GMT} - {1553994000 3600 1 BST} - {1572138000 0 0 GMT} - {1585443600 3600 1 BST} - {1603587600 0 0 GMT} - {1616893200 3600 1 BST} - {1635642000 0 0 GMT} - {1648342800 3600 1 BST} - {1667091600 0 0 GMT} - {1679792400 3600 1 BST} - {1698541200 0 0 GMT} - {1711846800 3600 1 BST} - {1729990800 0 0 GMT} - {1743296400 3600 1 BST} - {1761440400 0 0 GMT} - {1774746000 3600 1 BST} - {1792890000 0 0 GMT} - {1806195600 3600 1 BST} - {1824944400 0 0 GMT} - {1837645200 3600 1 BST} - {1856394000 0 0 GMT} - {1869094800 3600 1 BST} - {1887843600 0 0 GMT} - {1901149200 3600 1 BST} - {1919293200 0 0 GMT} - {1932598800 3600 1 BST} - {1950742800 0 0 GMT} - {1964048400 3600 1 BST} - {1982797200 0 0 GMT} - {1995498000 3600 1 BST} - {2014246800 0 0 GMT} - {2026947600 3600 1 BST} - {2045696400 0 0 GMT} - {2058397200 3600 1 BST} - {2077146000 0 0 GMT} - {2090451600 3600 1 BST} - {2108595600 0 0 GMT} - {2121901200 3600 1 BST} - {2140045200 0 0 GMT} - {2153350800 3600 1 BST} - {2172099600 0 0 GMT} - {2184800400 3600 1 BST} - {2203549200 0 0 GMT} - {2216250000 3600 1 BST} - {2234998800 0 0 GMT} - {2248304400 3600 1 BST} - {2266448400 0 0 GMT} - {2279754000 3600 1 BST} - {2297898000 0 0 GMT} - {2311203600 3600 1 BST} - {2329347600 0 0 GMT} - {2342653200 3600 1 BST} - {2361402000 0 0 GMT} - {2374102800 3600 1 BST} - {2392851600 0 0 GMT} - {2405552400 3600 1 BST} - {2424301200 0 0 GMT} - {2437606800 3600 1 BST} - {2455750800 0 0 GMT} - {2469056400 3600 1 BST} - {2487200400 0 0 GMT} - {2500506000 3600 1 BST} - {2519254800 0 0 GMT} - {2531955600 3600 1 BST} - {2550704400 0 0 GMT} - {2563405200 3600 1 BST} - {2582154000 0 0 GMT} - {2595459600 3600 1 BST} - {2613603600 0 0 GMT} - {2626909200 3600 1 BST} - {2645053200 0 0 GMT} - {2658358800 3600 1 BST} - {2676502800 0 0 GMT} - {2689808400 3600 1 BST} - {2708557200 0 0 GMT} - {2721258000 3600 1 BST} - {2740006800 0 0 GMT} - {2752707600 3600 1 BST} - {2771456400 0 0 GMT} - {2784762000 3600 1 BST} - {2802906000 0 0 GMT} - {2816211600 3600 1 BST} - {2834355600 0 0 GMT} - {2847661200 3600 1 BST} - {2866410000 0 0 GMT} - {2879110800 3600 1 BST} - {2897859600 0 0 GMT} - {2910560400 3600 1 BST} - {2929309200 0 0 GMT} - {2942010000 3600 1 BST} - {2960758800 0 0 GMT} - {2974064400 3600 1 BST} - {2992208400 0 0 GMT} - {3005514000 3600 1 BST} - {3023658000 0 0 GMT} - {3036963600 3600 1 BST} - {3055712400 0 0 GMT} - {3068413200 3600 1 BST} - {3087162000 0 0 GMT} - {3099862800 3600 1 BST} - {3118611600 0 0 GMT} - {3131917200 3600 1 BST} - {3150061200 0 0 GMT} - {3163366800 3600 1 BST} - {3181510800 0 0 GMT} - {3194816400 3600 1 BST} - {3212960400 0 0 GMT} - {3226266000 3600 1 BST} - {3245014800 0 0 GMT} - {3257715600 3600 1 BST} - {3276464400 0 0 GMT} - {3289165200 3600 1 BST} - {3307914000 0 0 GMT} - {3321219600 3600 1 BST} - {3339363600 0 0 GMT} - {3352669200 3600 1 BST} - {3370813200 0 0 GMT} - {3384118800 3600 1 BST} - {3402867600 0 0 GMT} - {3415568400 3600 1 BST} - {3434317200 0 0 GMT} - {3447018000 3600 1 BST} - {3465766800 0 0 GMT} - {3479072400 3600 1 BST} - {3497216400 0 0 GMT} - {3510522000 3600 1 BST} - {3528666000 0 0 GMT} - {3541971600 3600 1 BST} - {3560115600 0 0 GMT} - {3573421200 3600 1 BST} - {3592170000 0 0 GMT} - {3604870800 3600 1 BST} - {3623619600 0 0 GMT} - {3636320400 3600 1 BST} - {3655069200 0 0 GMT} - {3668374800 3600 1 BST} - {3686518800 0 0 GMT} - {3699824400 3600 1 BST} - {3717968400 0 0 GMT} - {3731274000 3600 1 BST} - {3750022800 0 0 GMT} - {3762723600 3600 1 BST} - {3781472400 0 0 GMT} - {3794173200 3600 1 BST} - {3812922000 0 0 GMT} - {3825622800 3600 1 BST} - {3844371600 0 0 GMT} - {3857677200 3600 1 BST} - {3875821200 0 0 GMT} - {3889126800 3600 1 BST} - {3907270800 0 0 GMT} - {3920576400 3600 1 BST} - {3939325200 0 0 GMT} - {3952026000 3600 1 BST} - {3970774800 0 0 GMT} - {3983475600 3600 1 BST} - {4002224400 0 0 GMT} - {4015530000 3600 1 BST} - {4033674000 0 0 GMT} - {4046979600 3600 1 BST} - {4065123600 0 0 GMT} - {4078429200 3600 1 BST} - {4096573200 0 0 GMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/London) { + {-9223372036854775808 -75 0 LMT} + {-3852662325 0 0 GMT} + {-1691964000 3600 1 BST} + {-1680472800 0 0 GMT} + {-1664143200 3600 1 BST} + {-1650146400 0 0 GMT} + {-1633903200 3600 1 BST} + {-1617487200 0 0 GMT} + {-1601848800 3600 1 BST} + {-1586037600 0 0 GMT} + {-1570399200 3600 1 BST} + {-1552168800 0 0 GMT} + {-1538344800 3600 1 BST} + {-1522533600 0 0 GMT} + {-1507500000 3600 1 BST} + {-1490565600 0 0 GMT} + {-1473631200 3600 1 BST} + {-1460930400 0 0 GMT} + {-1442786400 3600 1 BST} + {-1428876000 0 0 GMT} + {-1410732000 3600 1 BST} + {-1396216800 0 0 GMT} + {-1379282400 3600 1 BST} + {-1364767200 0 0 GMT} + {-1348437600 3600 1 BST} + {-1333317600 0 0 GMT} + {-1315778400 3600 1 BST} + {-1301263200 0 0 GMT} + {-1284328800 3600 1 BST} + {-1269813600 0 0 GMT} + {-1253484000 3600 1 BST} + {-1238364000 0 0 GMT} + {-1221429600 3600 1 BST} + {-1206914400 0 0 GMT} + {-1189980000 3600 1 BST} + {-1175464800 0 0 GMT} + {-1159135200 3600 1 BST} + {-1143410400 0 0 GMT} + {-1126476000 3600 1 BST} + {-1111960800 0 0 GMT} + {-1095631200 3600 1 BST} + {-1080511200 0 0 GMT} + {-1063576800 3600 1 BST} + {-1049061600 0 0 GMT} + {-1032127200 3600 1 BST} + {-1017612000 0 0 GMT} + {-1001282400 3600 1 BST} + {-986162400 0 0 GMT} + {-969228000 3600 1 BST} + {-950479200 0 0 GMT} + {-942012000 3600 1 BST} + {-904518000 7200 1 BDST} + {-896050800 3600 1 BST} + {-875487600 7200 1 BDST} + {-864601200 3600 1 BST} + {-844038000 7200 1 BDST} + {-832546800 3600 1 BST} + {-812588400 7200 1 BDST} + {-798073200 3600 1 BST} + {-781052400 7200 1 BDST} + {-772066800 3600 1 BST} + {-764805600 0 0 GMT} + {-748476000 3600 1 BST} + {-733356000 0 0 GMT} + {-719445600 3600 1 BST} + {-717030000 7200 1 BDST} + {-706748400 3600 1 BST} + {-699487200 0 0 GMT} + {-687996000 3600 1 BST} + {-668037600 0 0 GMT} + {-654732000 3600 1 BST} + {-636588000 0 0 GMT} + {-622072800 3600 1 BST} + {-605743200 0 0 GMT} + {-590623200 3600 1 BST} + {-574293600 0 0 GMT} + {-558568800 3600 1 BST} + {-542239200 0 0 GMT} + {-527119200 3600 1 BST} + {-512604000 0 0 GMT} + {-496274400 3600 1 BST} + {-481154400 0 0 GMT} + {-464220000 3600 1 BST} + {-449704800 0 0 GMT} + {-432165600 3600 1 BST} + {-417650400 0 0 GMT} + {-401320800 3600 1 BST} + {-386200800 0 0 GMT} + {-369266400 3600 1 BST} + {-354751200 0 0 GMT} + {-337816800 3600 1 BST} + {-323301600 0 0 GMT} + {-306972000 3600 1 BST} + {-291852000 0 0 GMT} + {-276732000 3600 1 BST} + {-257983200 0 0 GMT} + {-245282400 3600 1 BST} + {-226533600 0 0 GMT} + {-213228000 3600 1 BST} + {-195084000 0 0 GMT} + {-182383200 3600 1 BST} + {-163634400 0 0 GMT} + {-150933600 3600 1 BST} + {-132184800 0 0 GMT} + {-119484000 3600 1 BST} + {-100735200 0 0 GMT} + {-88034400 3600 1 BST} + {-68680800 0 0 GMT} + {-59004000 3600 1 BST} + {-37238400 3600 0 BST} + {57722400 0 0 GMT} + {69818400 3600 1 BST} + {89172000 0 0 GMT} + {101268000 3600 1 BST} + {120621600 0 0 GMT} + {132717600 3600 1 BST} + {152071200 0 0 GMT} + {164167200 3600 1 BST} + {183520800 0 0 GMT} + {196221600 3600 1 BST} + {214970400 0 0 GMT} + {227671200 3600 1 BST} + {246420000 0 0 GMT} + {259120800 3600 1 BST} + {278474400 0 0 GMT} + {290570400 3600 1 BST} + {309924000 0 0 GMT} + {322020000 3600 1 BST} + {341373600 0 0 GMT} + {354675600 3600 1 BST} + {372819600 0 0 GMT} + {386125200 3600 1 BST} + {404269200 0 0 GMT} + {417574800 3600 1 BST} + {435718800 0 0 GMT} + {449024400 3600 1 BST} + {467773200 0 0 GMT} + {481078800 3600 1 BST} + {499222800 0 0 GMT} + {512528400 3600 1 BST} + {530672400 0 0 GMT} + {543978000 3600 1 BST} + {562122000 0 0 GMT} + {575427600 3600 1 BST} + {593571600 0 0 GMT} + {606877200 3600 1 BST} + {625626000 0 0 GMT} + {638326800 3600 1 BST} + {657075600 0 0 GMT} + {670381200 3600 1 BST} + {688525200 0 0 GMT} + {701830800 3600 1 BST} + {719974800 0 0 GMT} + {733280400 3600 1 BST} + {751424400 0 0 GMT} + {764730000 3600 1 BST} + {782874000 0 0 GMT} + {796179600 3600 1 BST} + {814323600 0 0 GMT} + {820454400 0 0 GMT} + {828234000 3600 1 BST} + {846378000 0 0 GMT} + {859683600 3600 1 BST} + {877827600 0 0 GMT} + {891133200 3600 1 BST} + {909277200 0 0 GMT} + {922582800 3600 1 BST} + {941331600 0 0 GMT} + {954032400 3600 1 BST} + {972781200 0 0 GMT} + {985482000 3600 1 BST} + {1004230800 0 0 GMT} + {1017536400 3600 1 BST} + {1035680400 0 0 GMT} + {1048986000 3600 1 BST} + {1067130000 0 0 GMT} + {1080435600 3600 1 BST} + {1099184400 0 0 GMT} + {1111885200 3600 1 BST} + {1130634000 0 0 GMT} + {1143334800 3600 1 BST} + {1162083600 0 0 GMT} + {1174784400 3600 1 BST} + {1193533200 0 0 GMT} + {1206838800 3600 1 BST} + {1224982800 0 0 GMT} + {1238288400 3600 1 BST} + {1256432400 0 0 GMT} + {1269738000 3600 1 BST} + {1288486800 0 0 GMT} + {1301187600 3600 1 BST} + {1319936400 0 0 GMT} + {1332637200 3600 1 BST} + {1351386000 0 0 GMT} + {1364691600 3600 1 BST} + {1382835600 0 0 GMT} + {1396141200 3600 1 BST} + {1414285200 0 0 GMT} + {1427590800 3600 1 BST} + {1445734800 0 0 GMT} + {1459040400 3600 1 BST} + {1477789200 0 0 GMT} + {1490490000 3600 1 BST} + {1509238800 0 0 GMT} + {1521939600 3600 1 BST} + {1540688400 0 0 GMT} + {1553994000 3600 1 BST} + {1572138000 0 0 GMT} + {1585443600 3600 1 BST} + {1603587600 0 0 GMT} + {1616893200 3600 1 BST} + {1635642000 0 0 GMT} + {1648342800 3600 1 BST} + {1667091600 0 0 GMT} + {1679792400 3600 1 BST} + {1698541200 0 0 GMT} + {1711846800 3600 1 BST} + {1729990800 0 0 GMT} + {1743296400 3600 1 BST} + {1761440400 0 0 GMT} + {1774746000 3600 1 BST} + {1792890000 0 0 GMT} + {1806195600 3600 1 BST} + {1824944400 0 0 GMT} + {1837645200 3600 1 BST} + {1856394000 0 0 GMT} + {1869094800 3600 1 BST} + {1887843600 0 0 GMT} + {1901149200 3600 1 BST} + {1919293200 0 0 GMT} + {1932598800 3600 1 BST} + {1950742800 0 0 GMT} + {1964048400 3600 1 BST} + {1982797200 0 0 GMT} + {1995498000 3600 1 BST} + {2014246800 0 0 GMT} + {2026947600 3600 1 BST} + {2045696400 0 0 GMT} + {2058397200 3600 1 BST} + {2077146000 0 0 GMT} + {2090451600 3600 1 BST} + {2108595600 0 0 GMT} + {2121901200 3600 1 BST} + {2140045200 0 0 GMT} + {2153350800 3600 1 BST} + {2172099600 0 0 GMT} + {2184800400 3600 1 BST} + {2203549200 0 0 GMT} + {2216250000 3600 1 BST} + {2234998800 0 0 GMT} + {2248304400 3600 1 BST} + {2266448400 0 0 GMT} + {2279754000 3600 1 BST} + {2297898000 0 0 GMT} + {2311203600 3600 1 BST} + {2329347600 0 0 GMT} + {2342653200 3600 1 BST} + {2361402000 0 0 GMT} + {2374102800 3600 1 BST} + {2392851600 0 0 GMT} + {2405552400 3600 1 BST} + {2424301200 0 0 GMT} + {2437606800 3600 1 BST} + {2455750800 0 0 GMT} + {2469056400 3600 1 BST} + {2487200400 0 0 GMT} + {2500506000 3600 1 BST} + {2519254800 0 0 GMT} + {2531955600 3600 1 BST} + {2550704400 0 0 GMT} + {2563405200 3600 1 BST} + {2582154000 0 0 GMT} + {2595459600 3600 1 BST} + {2613603600 0 0 GMT} + {2626909200 3600 1 BST} + {2645053200 0 0 GMT} + {2658358800 3600 1 BST} + {2676502800 0 0 GMT} + {2689808400 3600 1 BST} + {2708557200 0 0 GMT} + {2721258000 3600 1 BST} + {2740006800 0 0 GMT} + {2752707600 3600 1 BST} + {2771456400 0 0 GMT} + {2784762000 3600 1 BST} + {2802906000 0 0 GMT} + {2816211600 3600 1 BST} + {2834355600 0 0 GMT} + {2847661200 3600 1 BST} + {2866410000 0 0 GMT} + {2879110800 3600 1 BST} + {2897859600 0 0 GMT} + {2910560400 3600 1 BST} + {2929309200 0 0 GMT} + {2942010000 3600 1 BST} + {2960758800 0 0 GMT} + {2974064400 3600 1 BST} + {2992208400 0 0 GMT} + {3005514000 3600 1 BST} + {3023658000 0 0 GMT} + {3036963600 3600 1 BST} + {3055712400 0 0 GMT} + {3068413200 3600 1 BST} + {3087162000 0 0 GMT} + {3099862800 3600 1 BST} + {3118611600 0 0 GMT} + {3131917200 3600 1 BST} + {3150061200 0 0 GMT} + {3163366800 3600 1 BST} + {3181510800 0 0 GMT} + {3194816400 3600 1 BST} + {3212960400 0 0 GMT} + {3226266000 3600 1 BST} + {3245014800 0 0 GMT} + {3257715600 3600 1 BST} + {3276464400 0 0 GMT} + {3289165200 3600 1 BST} + {3307914000 0 0 GMT} + {3321219600 3600 1 BST} + {3339363600 0 0 GMT} + {3352669200 3600 1 BST} + {3370813200 0 0 GMT} + {3384118800 3600 1 BST} + {3402867600 0 0 GMT} + {3415568400 3600 1 BST} + {3434317200 0 0 GMT} + {3447018000 3600 1 BST} + {3465766800 0 0 GMT} + {3479072400 3600 1 BST} + {3497216400 0 0 GMT} + {3510522000 3600 1 BST} + {3528666000 0 0 GMT} + {3541971600 3600 1 BST} + {3560115600 0 0 GMT} + {3573421200 3600 1 BST} + {3592170000 0 0 GMT} + {3604870800 3600 1 BST} + {3623619600 0 0 GMT} + {3636320400 3600 1 BST} + {3655069200 0 0 GMT} + {3668374800 3600 1 BST} + {3686518800 0 0 GMT} + {3699824400 3600 1 BST} + {3717968400 0 0 GMT} + {3731274000 3600 1 BST} + {3750022800 0 0 GMT} + {3762723600 3600 1 BST} + {3781472400 0 0 GMT} + {3794173200 3600 1 BST} + {3812922000 0 0 GMT} + {3825622800 3600 1 BST} + {3844371600 0 0 GMT} + {3857677200 3600 1 BST} + {3875821200 0 0 GMT} + {3889126800 3600 1 BST} + {3907270800 0 0 GMT} + {3920576400 3600 1 BST} + {3939325200 0 0 GMT} + {3952026000 3600 1 BST} + {3970774800 0 0 GMT} + {3983475600 3600 1 BST} + {4002224400 0 0 GMT} + {4015530000 3600 1 BST} + {4033674000 0 0 GMT} + {4046979600 3600 1 BST} + {4065123600 0 0 GMT} + {4078429200 3600 1 BST} + {4096573200 0 0 GMT} +} diff --git a/library/tzdata/Europe/Luxembourg b/library/tzdata/Europe/Luxembourg index 475213f..2a88c4b 100644 --- a/library/tzdata/Europe/Luxembourg +++ b/library/tzdata/Europe/Luxembourg @@ -1,313 +1,313 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Luxembourg) { - {-9223372036854775808 1476 0 LMT} - {-2069713476 3600 0 CET} - {-1692496800 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1662343200 7200 1 CEST} - {-1650157200 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-1612659600 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585519200 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552258800 0 0 WET} - {-1539997200 3600 1 WEST} - {-1520550000 0 0 WET} - {-1507510800 3600 1 WEST} - {-1490572800 0 0 WET} - {-1473642000 3600 1 WEST} - {-1459119600 0 0 WET} - {-1444006800 3600 1 WEST} - {-1427673600 0 0 WET} - {-1411866000 3600 1 WEST} - {-1396224000 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364774400 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333324800 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301270400 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269813600 0 0 WET} - {-1253484000 3600 1 WEST} - {-1238364000 0 0 WET} - {-1221429600 3600 1 WEST} - {-1206914400 0 0 WET} - {-1191189600 3600 1 WEST} - {-1175464800 0 0 WET} - {-1160344800 3600 1 WEST} - {-1143410400 0 0 WET} - {-1127685600 3600 1 WEST} - {-1111960800 0 0 WET} - {-1096840800 3600 1 WEST} - {-1080511200 0 0 WET} - {-1063576800 3600 1 WEST} - {-1049061600 0 0 WET} - {-1033336800 3600 1 WEST} - {-1017612000 0 0 WET} - {-1002492000 3600 1 WEST} - {-986162400 0 0 WET} - {-969228000 3600 1 WEST} - {-950479200 0 0 WET} - {-942012000 3600 1 WEST} - {-935186400 7200 0 WEST} - {-857257200 3600 0 WET} - {-844556400 7200 1 WEST} - {-828226800 3600 0 WET} - {-812502000 7200 1 WEST} - {-797983200 3600 0 CET} - {-781052400 7200 1 CEST} - {-766623600 3600 0 CET} - {-745455600 7200 1 CEST} - {-733273200 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Luxembourg) { + {-9223372036854775808 1476 0 LMT} + {-2069713476 3600 0 CET} + {-1692496800 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1662343200 7200 1 CEST} + {-1650157200 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-1612659600 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585519200 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552258800 0 0 WET} + {-1539997200 3600 1 WEST} + {-1520550000 0 0 WET} + {-1507510800 3600 1 WEST} + {-1490572800 0 0 WET} + {-1473642000 3600 1 WEST} + {-1459119600 0 0 WET} + {-1444006800 3600 1 WEST} + {-1427673600 0 0 WET} + {-1411866000 3600 1 WEST} + {-1396224000 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364774400 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333324800 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301270400 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269813600 0 0 WET} + {-1253484000 3600 1 WEST} + {-1238364000 0 0 WET} + {-1221429600 3600 1 WEST} + {-1206914400 0 0 WET} + {-1191189600 3600 1 WEST} + {-1175464800 0 0 WET} + {-1160344800 3600 1 WEST} + {-1143410400 0 0 WET} + {-1127685600 3600 1 WEST} + {-1111960800 0 0 WET} + {-1096840800 3600 1 WEST} + {-1080511200 0 0 WET} + {-1063576800 3600 1 WEST} + {-1049061600 0 0 WET} + {-1033336800 3600 1 WEST} + {-1017612000 0 0 WET} + {-1002492000 3600 1 WEST} + {-986162400 0 0 WET} + {-969228000 3600 1 WEST} + {-950479200 0 0 WET} + {-942012000 3600 1 WEST} + {-935186400 7200 0 WEST} + {-857257200 3600 0 WET} + {-844556400 7200 1 WEST} + {-828226800 3600 0 WET} + {-812502000 7200 1 WEST} + {-797983200 3600 0 CET} + {-781052400 7200 1 CEST} + {-766623600 3600 0 CET} + {-745455600 7200 1 CEST} + {-733273200 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Madrid b/library/tzdata/Europe/Madrid index ff126aa..50de14f 100644 --- a/library/tzdata/Europe/Madrid +++ b/library/tzdata/Europe/Madrid @@ -1,294 +1,294 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Madrid) { - {-9223372036854775808 -884 0 LMT} - {-2177451916 0 0 WET} - {-1661734800 3600 1 WEST} - {-1648429200 0 0 WET} - {-1631926800 3600 1 WEST} - {-1616893200 0 0 WET} - {-1601254800 3600 1 WEST} - {-1585357200 0 0 WET} - {-1442451600 3600 1 WEST} - {-1427677200 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269824400 0 0 WET} - {-1029114000 3600 1 WEST} - {-1017622800 0 0 WET} - {-1002848400 3600 1 WEST} - {-986173200 0 0 WET} - {-969238800 3600 1 WEST} - {-954118800 0 0 WET} - {-940208400 3600 1 WEST} - {-873079200 7200 1 WEMT} - {-862538400 3600 1 WEST} - {-842839200 7200 1 WEMT} - {-828237600 3600 1 WEST} - {-811389600 7200 1 WEMT} - {-796010400 3600 1 WEST} - {-779940000 7200 1 WEMT} - {-765421200 3600 1 WEST} - {-748490400 7200 1 WEMT} - {-733881600 3600 0 CET} - {-652327200 7200 1 CEST} - {-639190800 3600 0 CET} - {135122400 7200 1 CEST} - {150246000 3600 0 CET} - {167176800 7200 1 CEST} - {181695600 3600 0 CET} - {196812000 7200 1 CEST} - {212540400 3600 0 CET} - {228866400 7200 1 CEST} - {243990000 3600 0 CET} - {260402400 7200 1 CEST} - {276044400 3600 0 CET} - {283993200 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Madrid) { + {-9223372036854775808 -884 0 LMT} + {-2177451916 0 0 WET} + {-1661734800 3600 1 WEST} + {-1648429200 0 0 WET} + {-1631926800 3600 1 WEST} + {-1616893200 0 0 WET} + {-1601254800 3600 1 WEST} + {-1585357200 0 0 WET} + {-1442451600 3600 1 WEST} + {-1427677200 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269824400 0 0 WET} + {-1029114000 3600 1 WEST} + {-1017622800 0 0 WET} + {-1002848400 3600 1 WEST} + {-986173200 0 0 WET} + {-969238800 3600 1 WEST} + {-954118800 0 0 WET} + {-940208400 3600 1 WEST} + {-873079200 7200 1 WEMT} + {-862538400 3600 1 WEST} + {-842839200 7200 1 WEMT} + {-828237600 3600 1 WEST} + {-811389600 7200 1 WEMT} + {-796010400 3600 1 WEST} + {-779940000 7200 1 WEMT} + {-765421200 3600 1 WEST} + {-748490400 7200 1 WEMT} + {-733881600 3600 0 CET} + {-652327200 7200 1 CEST} + {-639190800 3600 0 CET} + {135122400 7200 1 CEST} + {150246000 3600 0 CET} + {167176800 7200 1 CEST} + {181695600 3600 0 CET} + {196812000 7200 1 CEST} + {212540400 3600 0 CET} + {228866400 7200 1 CEST} + {243990000 3600 0 CET} + {260402400 7200 1 CEST} + {276044400 3600 0 CET} + {283993200 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Malta b/library/tzdata/Europe/Malta index 1392c4e..b84f68e 100644 --- a/library/tzdata/Europe/Malta +++ b/library/tzdata/Europe/Malta @@ -1,299 +1,299 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Malta) { - {-9223372036854775808 3484 0 LMT} - {-2403478684 3600 0 CET} - {-1690851600 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1664758800 7200 1 CEST} - {-1649034000 3600 0 CET} - {-1635123600 7200 1 CEST} - {-1616979600 3600 0 CET} - {-1604278800 7200 1 CEST} - {-1585530000 3600 0 CET} - {-1571014800 7200 1 CEST} - {-1555290000 3600 0 CET} - {-932432400 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 0 CEST} - {-766717200 3600 0 CET} - {-750898800 7200 1 CEST} - {-733359600 3600 0 CET} - {-719456400 7200 1 CEST} - {-701917200 3600 0 CET} - {-689209200 7200 1 CEST} - {-670460400 3600 0 CET} - {-114051600 7200 1 CEST} - {-103168800 3600 0 CET} - {-81997200 7200 1 CEST} - {-71719200 3600 0 CET} - {-50547600 7200 1 CEST} - {-40269600 3600 0 CET} - {-18493200 7200 1 CEST} - {-8215200 3600 0 CET} - {12956400 7200 1 CEST} - {23234400 3600 0 CET} - {43801200 7200 1 CEST} - {54687600 3600 0 CET} - {75855600 7200 1 CEST} - {86738400 3600 0 CET} - {102380400 7200 0 CEST} - {118105200 3600 0 CET} - {135730800 7200 1 CEST} - {148518000 3600 0 CET} - {167187600 7200 1 CEST} - {180489600 3600 0 CET} - {198637200 7200 1 CEST} - {211939200 3600 0 CET} - {230086800 7200 1 CEST} - {243388800 3600 0 CET} - {261536400 7200 1 CEST} - {274838400 3600 0 CET} - {292986000 7200 1 CEST} - {306288000 3600 0 CET} - {323312400 7200 1 CEST} - {338342400 3600 0 CET} - {347151600 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Malta) { + {-9223372036854775808 3484 0 LMT} + {-2403478684 3600 0 CET} + {-1690851600 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1664758800 7200 1 CEST} + {-1649034000 3600 0 CET} + {-1635123600 7200 1 CEST} + {-1616979600 3600 0 CET} + {-1604278800 7200 1 CEST} + {-1585530000 3600 0 CET} + {-1571014800 7200 1 CEST} + {-1555290000 3600 0 CET} + {-932432400 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 0 CEST} + {-766717200 3600 0 CET} + {-750898800 7200 1 CEST} + {-733359600 3600 0 CET} + {-719456400 7200 1 CEST} + {-701917200 3600 0 CET} + {-689209200 7200 1 CEST} + {-670460400 3600 0 CET} + {-114051600 7200 1 CEST} + {-103168800 3600 0 CET} + {-81997200 7200 1 CEST} + {-71719200 3600 0 CET} + {-50547600 7200 1 CEST} + {-40269600 3600 0 CET} + {-18493200 7200 1 CEST} + {-8215200 3600 0 CET} + {12956400 7200 1 CEST} + {23234400 3600 0 CET} + {43801200 7200 1 CEST} + {54687600 3600 0 CET} + {75855600 7200 1 CEST} + {86738400 3600 0 CET} + {102380400 7200 0 CEST} + {118105200 3600 0 CET} + {135730800 7200 1 CEST} + {148518000 3600 0 CET} + {167187600 7200 1 CEST} + {180489600 3600 0 CET} + {198637200 7200 1 CEST} + {211939200 3600 0 CET} + {230086800 7200 1 CEST} + {243388800 3600 0 CET} + {261536400 7200 1 CEST} + {274838400 3600 0 CET} + {292986000 7200 1 CEST} + {306288000 3600 0 CET} + {323312400 7200 1 CEST} + {338342400 3600 0 CET} + {347151600 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Mariehamn b/library/tzdata/Europe/Mariehamn index 6856579..26d9177 100644 --- a/library/tzdata/Europe/Mariehamn +++ b/library/tzdata/Europe/Mariehamn @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Helsinki)]} { - LoadTimeZoneFile Europe/Helsinki -} -set TZData(:Europe/Mariehamn) $TZData(:Europe/Helsinki) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Helsinki)]} { + LoadTimeZoneFile Europe/Helsinki +} +set TZData(:Europe/Mariehamn) $TZData(:Europe/Helsinki) diff --git a/library/tzdata/Europe/Minsk b/library/tzdata/Europe/Minsk index 21ecf17..d7d9434 100644 --- a/library/tzdata/Europe/Minsk +++ b/library/tzdata/Europe/Minsk @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Minsk) { - {-9223372036854775808 6616 0 LMT} - {-2840147416 6600 0 MMT} - {-1441158600 7200 0 EET} - {-1247536800 10800 0 MSK} - {-899780400 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-804646800 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {670374000 10800 1 EEST} - {686102400 7200 0 EET} - {701820000 10800 1 EEST} - {717544800 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {846374400 7200 0 EET} - {859680000 10800 1 EEST} - {877824000 7200 0 EET} - {891129600 10800 1 EEST} - {909273600 7200 0 EET} - {922579200 10800 1 EEST} - {941328000 7200 0 EET} - {954028800 10800 1 EEST} - {972777600 7200 0 EET} - {985478400 10800 1 EEST} - {1004227200 7200 0 EET} - {1017532800 10800 1 EEST} - {1035676800 7200 0 EET} - {1048982400 10800 1 EEST} - {1067126400 7200 0 EET} - {1080432000 10800 1 EEST} - {1099180800 7200 0 EET} - {1111881600 10800 1 EEST} - {1130630400 7200 0 EET} - {1143331200 10800 1 EEST} - {1162080000 7200 0 EET} - {1174780800 10800 1 EEST} - {1193529600 7200 0 EET} - {1206835200 10800 1 EEST} - {1224979200 7200 0 EET} - {1238284800 10800 1 EEST} - {1256428800 7200 0 EET} - {1269734400 10800 1 EEST} - {1288483200 7200 0 EET} - {1301184000 10800 1 EEST} - {1319932800 7200 0 EET} - {1332633600 10800 1 EEST} - {1351382400 7200 0 EET} - {1364688000 10800 1 EEST} - {1382832000 7200 0 EET} - {1396137600 10800 1 EEST} - {1414281600 7200 0 EET} - {1427587200 10800 1 EEST} - {1445731200 7200 0 EET} - {1459036800 10800 1 EEST} - {1477785600 7200 0 EET} - {1490486400 10800 1 EEST} - {1509235200 7200 0 EET} - {1521936000 10800 1 EEST} - {1540684800 7200 0 EET} - {1553990400 10800 1 EEST} - {1572134400 7200 0 EET} - {1585440000 10800 1 EEST} - {1603584000 7200 0 EET} - {1616889600 10800 1 EEST} - {1635638400 7200 0 EET} - {1648339200 10800 1 EEST} - {1667088000 7200 0 EET} - {1679788800 10800 1 EEST} - {1698537600 7200 0 EET} - {1711843200 10800 1 EEST} - {1729987200 7200 0 EET} - {1743292800 10800 1 EEST} - {1761436800 7200 0 EET} - {1774742400 10800 1 EEST} - {1792886400 7200 0 EET} - {1806192000 10800 1 EEST} - {1824940800 7200 0 EET} - {1837641600 10800 1 EEST} - {1856390400 7200 0 EET} - {1869091200 10800 1 EEST} - {1887840000 7200 0 EET} - {1901145600 10800 1 EEST} - {1919289600 7200 0 EET} - {1932595200 10800 1 EEST} - {1950739200 7200 0 EET} - {1964044800 10800 1 EEST} - {1982793600 7200 0 EET} - {1995494400 10800 1 EEST} - {2014243200 7200 0 EET} - {2026944000 10800 1 EEST} - {2045692800 7200 0 EET} - {2058393600 10800 1 EEST} - {2077142400 7200 0 EET} - {2090448000 10800 1 EEST} - {2108592000 7200 0 EET} - {2121897600 10800 1 EEST} - {2140041600 7200 0 EET} - {2153347200 10800 1 EEST} - {2172096000 7200 0 EET} - {2184796800 10800 1 EEST} - {2203545600 7200 0 EET} - {2216246400 10800 1 EEST} - {2234995200 7200 0 EET} - {2248300800 10800 1 EEST} - {2266444800 7200 0 EET} - {2279750400 10800 1 EEST} - {2297894400 7200 0 EET} - {2311200000 10800 1 EEST} - {2329344000 7200 0 EET} - {2342649600 10800 1 EEST} - {2361398400 7200 0 EET} - {2374099200 10800 1 EEST} - {2392848000 7200 0 EET} - {2405548800 10800 1 EEST} - {2424297600 7200 0 EET} - {2437603200 10800 1 EEST} - {2455747200 7200 0 EET} - {2469052800 10800 1 EEST} - {2487196800 7200 0 EET} - {2500502400 10800 1 EEST} - {2519251200 7200 0 EET} - {2531952000 10800 1 EEST} - {2550700800 7200 0 EET} - {2563401600 10800 1 EEST} - {2582150400 7200 0 EET} - {2595456000 10800 1 EEST} - {2613600000 7200 0 EET} - {2626905600 10800 1 EEST} - {2645049600 7200 0 EET} - {2658355200 10800 1 EEST} - {2676499200 7200 0 EET} - {2689804800 10800 1 EEST} - {2708553600 7200 0 EET} - {2721254400 10800 1 EEST} - {2740003200 7200 0 EET} - {2752704000 10800 1 EEST} - {2771452800 7200 0 EET} - {2784758400 10800 1 EEST} - {2802902400 7200 0 EET} - {2816208000 10800 1 EEST} - {2834352000 7200 0 EET} - {2847657600 10800 1 EEST} - {2866406400 7200 0 EET} - {2879107200 10800 1 EEST} - {2897856000 7200 0 EET} - {2910556800 10800 1 EEST} - {2929305600 7200 0 EET} - {2942006400 10800 1 EEST} - {2960755200 7200 0 EET} - {2974060800 10800 1 EEST} - {2992204800 7200 0 EET} - {3005510400 10800 1 EEST} - {3023654400 7200 0 EET} - {3036960000 10800 1 EEST} - {3055708800 7200 0 EET} - {3068409600 10800 1 EEST} - {3087158400 7200 0 EET} - {3099859200 10800 1 EEST} - {3118608000 7200 0 EET} - {3131913600 10800 1 EEST} - {3150057600 7200 0 EET} - {3163363200 10800 1 EEST} - {3181507200 7200 0 EET} - {3194812800 10800 1 EEST} - {3212956800 7200 0 EET} - {3226262400 10800 1 EEST} - {3245011200 7200 0 EET} - {3257712000 10800 1 EEST} - {3276460800 7200 0 EET} - {3289161600 10800 1 EEST} - {3307910400 7200 0 EET} - {3321216000 10800 1 EEST} - {3339360000 7200 0 EET} - {3352665600 10800 1 EEST} - {3370809600 7200 0 EET} - {3384115200 10800 1 EEST} - {3402864000 7200 0 EET} - {3415564800 10800 1 EEST} - {3434313600 7200 0 EET} - {3447014400 10800 1 EEST} - {3465763200 7200 0 EET} - {3479068800 10800 1 EEST} - {3497212800 7200 0 EET} - {3510518400 10800 1 EEST} - {3528662400 7200 0 EET} - {3541968000 10800 1 EEST} - {3560112000 7200 0 EET} - {3573417600 10800 1 EEST} - {3592166400 7200 0 EET} - {3604867200 10800 1 EEST} - {3623616000 7200 0 EET} - {3636316800 10800 1 EEST} - {3655065600 7200 0 EET} - {3668371200 10800 1 EEST} - {3686515200 7200 0 EET} - {3699820800 10800 1 EEST} - {3717964800 7200 0 EET} - {3731270400 10800 1 EEST} - {3750019200 7200 0 EET} - {3762720000 10800 1 EEST} - {3781468800 7200 0 EET} - {3794169600 10800 1 EEST} - {3812918400 7200 0 EET} - {3825619200 10800 1 EEST} - {3844368000 7200 0 EET} - {3857673600 10800 1 EEST} - {3875817600 7200 0 EET} - {3889123200 10800 1 EEST} - {3907267200 7200 0 EET} - {3920572800 10800 1 EEST} - {3939321600 7200 0 EET} - {3952022400 10800 1 EEST} - {3970771200 7200 0 EET} - {3983472000 10800 1 EEST} - {4002220800 7200 0 EET} - {4015526400 10800 1 EEST} - {4033670400 7200 0 EET} - {4046976000 10800 1 EEST} - {4065120000 7200 0 EET} - {4078425600 10800 1 EEST} - {4096569600 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Minsk) { + {-9223372036854775808 6616 0 LMT} + {-2840147416 6600 0 MMT} + {-1441158600 7200 0 EET} + {-1247536800 10800 0 MSK} + {-899780400 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-804646800 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {670374000 10800 1 EEST} + {686102400 7200 0 EET} + {701820000 10800 1 EEST} + {717544800 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {846374400 7200 0 EET} + {859680000 10800 1 EEST} + {877824000 7200 0 EET} + {891129600 10800 1 EEST} + {909273600 7200 0 EET} + {922579200 10800 1 EEST} + {941328000 7200 0 EET} + {954028800 10800 1 EEST} + {972777600 7200 0 EET} + {985478400 10800 1 EEST} + {1004227200 7200 0 EET} + {1017532800 10800 1 EEST} + {1035676800 7200 0 EET} + {1048982400 10800 1 EEST} + {1067126400 7200 0 EET} + {1080432000 10800 1 EEST} + {1099180800 7200 0 EET} + {1111881600 10800 1 EEST} + {1130630400 7200 0 EET} + {1143331200 10800 1 EEST} + {1162080000 7200 0 EET} + {1174780800 10800 1 EEST} + {1193529600 7200 0 EET} + {1206835200 10800 1 EEST} + {1224979200 7200 0 EET} + {1238284800 10800 1 EEST} + {1256428800 7200 0 EET} + {1269734400 10800 1 EEST} + {1288483200 7200 0 EET} + {1301184000 10800 1 EEST} + {1319932800 7200 0 EET} + {1332633600 10800 1 EEST} + {1351382400 7200 0 EET} + {1364688000 10800 1 EEST} + {1382832000 7200 0 EET} + {1396137600 10800 1 EEST} + {1414281600 7200 0 EET} + {1427587200 10800 1 EEST} + {1445731200 7200 0 EET} + {1459036800 10800 1 EEST} + {1477785600 7200 0 EET} + {1490486400 10800 1 EEST} + {1509235200 7200 0 EET} + {1521936000 10800 1 EEST} + {1540684800 7200 0 EET} + {1553990400 10800 1 EEST} + {1572134400 7200 0 EET} + {1585440000 10800 1 EEST} + {1603584000 7200 0 EET} + {1616889600 10800 1 EEST} + {1635638400 7200 0 EET} + {1648339200 10800 1 EEST} + {1667088000 7200 0 EET} + {1679788800 10800 1 EEST} + {1698537600 7200 0 EET} + {1711843200 10800 1 EEST} + {1729987200 7200 0 EET} + {1743292800 10800 1 EEST} + {1761436800 7200 0 EET} + {1774742400 10800 1 EEST} + {1792886400 7200 0 EET} + {1806192000 10800 1 EEST} + {1824940800 7200 0 EET} + {1837641600 10800 1 EEST} + {1856390400 7200 0 EET} + {1869091200 10800 1 EEST} + {1887840000 7200 0 EET} + {1901145600 10800 1 EEST} + {1919289600 7200 0 EET} + {1932595200 10800 1 EEST} + {1950739200 7200 0 EET} + {1964044800 10800 1 EEST} + {1982793600 7200 0 EET} + {1995494400 10800 1 EEST} + {2014243200 7200 0 EET} + {2026944000 10800 1 EEST} + {2045692800 7200 0 EET} + {2058393600 10800 1 EEST} + {2077142400 7200 0 EET} + {2090448000 10800 1 EEST} + {2108592000 7200 0 EET} + {2121897600 10800 1 EEST} + {2140041600 7200 0 EET} + {2153347200 10800 1 EEST} + {2172096000 7200 0 EET} + {2184796800 10800 1 EEST} + {2203545600 7200 0 EET} + {2216246400 10800 1 EEST} + {2234995200 7200 0 EET} + {2248300800 10800 1 EEST} + {2266444800 7200 0 EET} + {2279750400 10800 1 EEST} + {2297894400 7200 0 EET} + {2311200000 10800 1 EEST} + {2329344000 7200 0 EET} + {2342649600 10800 1 EEST} + {2361398400 7200 0 EET} + {2374099200 10800 1 EEST} + {2392848000 7200 0 EET} + {2405548800 10800 1 EEST} + {2424297600 7200 0 EET} + {2437603200 10800 1 EEST} + {2455747200 7200 0 EET} + {2469052800 10800 1 EEST} + {2487196800 7200 0 EET} + {2500502400 10800 1 EEST} + {2519251200 7200 0 EET} + {2531952000 10800 1 EEST} + {2550700800 7200 0 EET} + {2563401600 10800 1 EEST} + {2582150400 7200 0 EET} + {2595456000 10800 1 EEST} + {2613600000 7200 0 EET} + {2626905600 10800 1 EEST} + {2645049600 7200 0 EET} + {2658355200 10800 1 EEST} + {2676499200 7200 0 EET} + {2689804800 10800 1 EEST} + {2708553600 7200 0 EET} + {2721254400 10800 1 EEST} + {2740003200 7200 0 EET} + {2752704000 10800 1 EEST} + {2771452800 7200 0 EET} + {2784758400 10800 1 EEST} + {2802902400 7200 0 EET} + {2816208000 10800 1 EEST} + {2834352000 7200 0 EET} + {2847657600 10800 1 EEST} + {2866406400 7200 0 EET} + {2879107200 10800 1 EEST} + {2897856000 7200 0 EET} + {2910556800 10800 1 EEST} + {2929305600 7200 0 EET} + {2942006400 10800 1 EEST} + {2960755200 7200 0 EET} + {2974060800 10800 1 EEST} + {2992204800 7200 0 EET} + {3005510400 10800 1 EEST} + {3023654400 7200 0 EET} + {3036960000 10800 1 EEST} + {3055708800 7200 0 EET} + {3068409600 10800 1 EEST} + {3087158400 7200 0 EET} + {3099859200 10800 1 EEST} + {3118608000 7200 0 EET} + {3131913600 10800 1 EEST} + {3150057600 7200 0 EET} + {3163363200 10800 1 EEST} + {3181507200 7200 0 EET} + {3194812800 10800 1 EEST} + {3212956800 7200 0 EET} + {3226262400 10800 1 EEST} + {3245011200 7200 0 EET} + {3257712000 10800 1 EEST} + {3276460800 7200 0 EET} + {3289161600 10800 1 EEST} + {3307910400 7200 0 EET} + {3321216000 10800 1 EEST} + {3339360000 7200 0 EET} + {3352665600 10800 1 EEST} + {3370809600 7200 0 EET} + {3384115200 10800 1 EEST} + {3402864000 7200 0 EET} + {3415564800 10800 1 EEST} + {3434313600 7200 0 EET} + {3447014400 10800 1 EEST} + {3465763200 7200 0 EET} + {3479068800 10800 1 EEST} + {3497212800 7200 0 EET} + {3510518400 10800 1 EEST} + {3528662400 7200 0 EET} + {3541968000 10800 1 EEST} + {3560112000 7200 0 EET} + {3573417600 10800 1 EEST} + {3592166400 7200 0 EET} + {3604867200 10800 1 EEST} + {3623616000 7200 0 EET} + {3636316800 10800 1 EEST} + {3655065600 7200 0 EET} + {3668371200 10800 1 EEST} + {3686515200 7200 0 EET} + {3699820800 10800 1 EEST} + {3717964800 7200 0 EET} + {3731270400 10800 1 EEST} + {3750019200 7200 0 EET} + {3762720000 10800 1 EEST} + {3781468800 7200 0 EET} + {3794169600 10800 1 EEST} + {3812918400 7200 0 EET} + {3825619200 10800 1 EEST} + {3844368000 7200 0 EET} + {3857673600 10800 1 EEST} + {3875817600 7200 0 EET} + {3889123200 10800 1 EEST} + {3907267200 7200 0 EET} + {3920572800 10800 1 EEST} + {3939321600 7200 0 EET} + {3952022400 10800 1 EEST} + {3970771200 7200 0 EET} + {3983472000 10800 1 EEST} + {4002220800 7200 0 EET} + {4015526400 10800 1 EEST} + {4033670400 7200 0 EET} + {4046976000 10800 1 EEST} + {4065120000 7200 0 EET} + {4078425600 10800 1 EEST} + {4096569600 7200 0 EET} +} diff --git a/library/tzdata/Europe/Monaco b/library/tzdata/Europe/Monaco index 99a8b48..f887b0b 100644 --- a/library/tzdata/Europe/Monaco +++ b/library/tzdata/Europe/Monaco @@ -1,315 +1,315 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Monaco) { - {-9223372036854775808 1772 0 LMT} - {-2486680172 561 0 PMT} - {-1855958961 0 0 WET} - {-1689814800 3600 1 WEST} - {-1680397200 0 0 WET} - {-1665363600 3600 1 WEST} - {-1648342800 0 0 WET} - {-1635123600 3600 1 WEST} - {-1616893200 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585443600 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552266000 0 0 WET} - {-1539997200 3600 1 WEST} - {-1520557200 0 0 WET} - {-1507510800 3600 1 WEST} - {-1490576400 0 0 WET} - {-1470618000 3600 1 WEST} - {-1459126800 0 0 WET} - {-1444006800 3600 1 WEST} - {-1427677200 0 0 WET} - {-1411952400 3600 1 WEST} - {-1396227600 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269824400 0 0 WET} - {-1253494800 3600 1 WEST} - {-1238374800 0 0 WET} - {-1221440400 3600 1 WEST} - {-1206925200 0 0 WET} - {-1191200400 3600 1 WEST} - {-1175475600 0 0 WET} - {-1160355600 3600 1 WEST} - {-1143421200 0 0 WET} - {-1127696400 3600 1 WEST} - {-1111971600 0 0 WET} - {-1096851600 3600 1 WEST} - {-1080522000 0 0 WET} - {-1063587600 3600 1 WEST} - {-1049072400 0 0 WET} - {-1033347600 3600 1 WEST} - {-1017622800 0 0 WET} - {-1002502800 3600 1 WEST} - {-986173200 0 0 WET} - {-969238800 3600 1 WEST} - {-950490000 0 0 WET} - {-942012000 3600 1 WEST} - {-904438800 7200 1 WEMT} - {-891136800 3600 1 WEST} - {-877827600 7200 1 WEMT} - {-857257200 3600 1 WEST} - {-844556400 7200 1 WEMT} - {-828226800 3600 1 WEST} - {-812502000 7200 1 WEMT} - {-796266000 3600 1 WEST} - {-781052400 7200 1 WEMT} - {-766616400 3600 0 CET} - {196819200 7200 1 CEST} - {212540400 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Monaco) { + {-9223372036854775808 1772 0 LMT} + {-2486680172 561 0 PMT} + {-1855958961 0 0 WET} + {-1689814800 3600 1 WEST} + {-1680397200 0 0 WET} + {-1665363600 3600 1 WEST} + {-1648342800 0 0 WET} + {-1635123600 3600 1 WEST} + {-1616893200 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585443600 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552266000 0 0 WET} + {-1539997200 3600 1 WEST} + {-1520557200 0 0 WET} + {-1507510800 3600 1 WEST} + {-1490576400 0 0 WET} + {-1470618000 3600 1 WEST} + {-1459126800 0 0 WET} + {-1444006800 3600 1 WEST} + {-1427677200 0 0 WET} + {-1411952400 3600 1 WEST} + {-1396227600 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269824400 0 0 WET} + {-1253494800 3600 1 WEST} + {-1238374800 0 0 WET} + {-1221440400 3600 1 WEST} + {-1206925200 0 0 WET} + {-1191200400 3600 1 WEST} + {-1175475600 0 0 WET} + {-1160355600 3600 1 WEST} + {-1143421200 0 0 WET} + {-1127696400 3600 1 WEST} + {-1111971600 0 0 WET} + {-1096851600 3600 1 WEST} + {-1080522000 0 0 WET} + {-1063587600 3600 1 WEST} + {-1049072400 0 0 WET} + {-1033347600 3600 1 WEST} + {-1017622800 0 0 WET} + {-1002502800 3600 1 WEST} + {-986173200 0 0 WET} + {-969238800 3600 1 WEST} + {-950490000 0 0 WET} + {-942012000 3600 1 WEST} + {-904438800 7200 1 WEMT} + {-891136800 3600 1 WEST} + {-877827600 7200 1 WEMT} + {-857257200 3600 1 WEST} + {-844556400 7200 1 WEMT} + {-828226800 3600 1 WEST} + {-812502000 7200 1 WEMT} + {-796266000 3600 1 WEST} + {-781052400 7200 1 WEMT} + {-766616400 3600 0 CET} + {196819200 7200 1 CEST} + {212540400 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Moscow b/library/tzdata/Europe/Moscow index 1e1bb24..9acbd2c 100644 --- a/library/tzdata/Europe/Moscow +++ b/library/tzdata/Europe/Moscow @@ -1,260 +1,260 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Moscow) { - {-9223372036854775808 9020 0 LMT} - {-2840149820 9000 0 MMT} - {-1688265000 9048 0 MMT} - {-1656819048 12648 1 MST} - {-1641353448 9048 0 MMT} - {-1627965048 16248 1 MDST} - {-1618716648 12648 1 MST} - {-1596429048 16248 1 MDST} - {-1593822648 14400 0 MSD} - {-1589860800 10800 0 MSK} - {-1542427200 14400 1 MSD} - {-1539493200 18000 1 MSD} - {-1525323600 14400 1 MSD} - {-1522728000 10800 0 MSK} - {-1491188400 7200 0 EET} - {-1247536800 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {638319600 14400 1 MSD} - {654649200 10800 0 MSK} - {670374000 7200 0 EEMMTT} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {695779200 10800 0 MSD} - {701812800 14400 1 MSD} - {717534000 10800 0 MSK} - {733273200 14400 1 MSD} - {748998000 10800 0 MSK} - {764722800 14400 1 MSD} - {780447600 10800 0 MSK} - {796172400 14400 1 MSD} - {811897200 10800 0 MSK} - {828226800 14400 1 MSD} - {846370800 10800 0 MSK} - {859676400 14400 1 MSD} - {877820400 10800 0 MSK} - {891126000 14400 1 MSD} - {909270000 10800 0 MSK} - {922575600 14400 1 MSD} - {941324400 10800 0 MSK} - {954025200 14400 1 MSD} - {972774000 10800 0 MSK} - {985474800 14400 1 MSD} - {1004223600 10800 0 MSK} - {1017529200 14400 1 MSD} - {1035673200 10800 0 MSK} - {1048978800 14400 1 MSD} - {1067122800 10800 0 MSK} - {1080428400 14400 1 MSD} - {1099177200 10800 0 MSK} - {1111878000 14400 1 MSD} - {1130626800 10800 0 MSK} - {1143327600 14400 1 MSD} - {1162076400 10800 0 MSK} - {1174777200 14400 1 MSD} - {1193526000 10800 0 MSK} - {1206831600 14400 1 MSD} - {1224975600 10800 0 MSK} - {1238281200 14400 1 MSD} - {1256425200 10800 0 MSK} - {1269730800 14400 1 MSD} - {1288479600 10800 0 MSK} - {1301180400 14400 1 MSD} - {1319929200 10800 0 MSK} - {1332630000 14400 1 MSD} - {1351378800 10800 0 MSK} - {1364684400 14400 1 MSD} - {1382828400 10800 0 MSK} - {1396134000 14400 1 MSD} - {1414278000 10800 0 MSK} - {1427583600 14400 1 MSD} - {1445727600 10800 0 MSK} - {1459033200 14400 1 MSD} - {1477782000 10800 0 MSK} - {1490482800 14400 1 MSD} - {1509231600 10800 0 MSK} - {1521932400 14400 1 MSD} - {1540681200 10800 0 MSK} - {1553986800 14400 1 MSD} - {1572130800 10800 0 MSK} - {1585436400 14400 1 MSD} - {1603580400 10800 0 MSK} - {1616886000 14400 1 MSD} - {1635634800 10800 0 MSK} - {1648335600 14400 1 MSD} - {1667084400 10800 0 MSK} - {1679785200 14400 1 MSD} - {1698534000 10800 0 MSK} - {1711839600 14400 1 MSD} - {1729983600 10800 0 MSK} - {1743289200 14400 1 MSD} - {1761433200 10800 0 MSK} - {1774738800 14400 1 MSD} - {1792882800 10800 0 MSK} - {1806188400 14400 1 MSD} - {1824937200 10800 0 MSK} - {1837638000 14400 1 MSD} - {1856386800 10800 0 MSK} - {1869087600 14400 1 MSD} - {1887836400 10800 0 MSK} - {1901142000 14400 1 MSD} - {1919286000 10800 0 MSK} - {1932591600 14400 1 MSD} - {1950735600 10800 0 MSK} - {1964041200 14400 1 MSD} - {1982790000 10800 0 MSK} - {1995490800 14400 1 MSD} - {2014239600 10800 0 MSK} - {2026940400 14400 1 MSD} - {2045689200 10800 0 MSK} - {2058390000 14400 1 MSD} - {2077138800 10800 0 MSK} - {2090444400 14400 1 MSD} - {2108588400 10800 0 MSK} - {2121894000 14400 1 MSD} - {2140038000 10800 0 MSK} - {2153343600 14400 1 MSD} - {2172092400 10800 0 MSK} - {2184793200 14400 1 MSD} - {2203542000 10800 0 MSK} - {2216242800 14400 1 MSD} - {2234991600 10800 0 MSK} - {2248297200 14400 1 MSD} - {2266441200 10800 0 MSK} - {2279746800 14400 1 MSD} - {2297890800 10800 0 MSK} - {2311196400 14400 1 MSD} - {2329340400 10800 0 MSK} - {2342646000 14400 1 MSD} - {2361394800 10800 0 MSK} - {2374095600 14400 1 MSD} - {2392844400 10800 0 MSK} - {2405545200 14400 1 MSD} - {2424294000 10800 0 MSK} - {2437599600 14400 1 MSD} - {2455743600 10800 0 MSK} - {2469049200 14400 1 MSD} - {2487193200 10800 0 MSK} - {2500498800 14400 1 MSD} - {2519247600 10800 0 MSK} - {2531948400 14400 1 MSD} - {2550697200 10800 0 MSK} - {2563398000 14400 1 MSD} - {2582146800 10800 0 MSK} - {2595452400 14400 1 MSD} - {2613596400 10800 0 MSK} - {2626902000 14400 1 MSD} - {2645046000 10800 0 MSK} - {2658351600 14400 1 MSD} - {2676495600 10800 0 MSK} - {2689801200 14400 1 MSD} - {2708550000 10800 0 MSK} - {2721250800 14400 1 MSD} - {2739999600 10800 0 MSK} - {2752700400 14400 1 MSD} - {2771449200 10800 0 MSK} - {2784754800 14400 1 MSD} - {2802898800 10800 0 MSK} - {2816204400 14400 1 MSD} - {2834348400 10800 0 MSK} - {2847654000 14400 1 MSD} - {2866402800 10800 0 MSK} - {2879103600 14400 1 MSD} - {2897852400 10800 0 MSK} - {2910553200 14400 1 MSD} - {2929302000 10800 0 MSK} - {2942002800 14400 1 MSD} - {2960751600 10800 0 MSK} - {2974057200 14400 1 MSD} - {2992201200 10800 0 MSK} - {3005506800 14400 1 MSD} - {3023650800 10800 0 MSK} - {3036956400 14400 1 MSD} - {3055705200 10800 0 MSK} - {3068406000 14400 1 MSD} - {3087154800 10800 0 MSK} - {3099855600 14400 1 MSD} - {3118604400 10800 0 MSK} - {3131910000 14400 1 MSD} - {3150054000 10800 0 MSK} - {3163359600 14400 1 MSD} - {3181503600 10800 0 MSK} - {3194809200 14400 1 MSD} - {3212953200 10800 0 MSK} - {3226258800 14400 1 MSD} - {3245007600 10800 0 MSK} - {3257708400 14400 1 MSD} - {3276457200 10800 0 MSK} - {3289158000 14400 1 MSD} - {3307906800 10800 0 MSK} - {3321212400 14400 1 MSD} - {3339356400 10800 0 MSK} - {3352662000 14400 1 MSD} - {3370806000 10800 0 MSK} - {3384111600 14400 1 MSD} - {3402860400 10800 0 MSK} - {3415561200 14400 1 MSD} - {3434310000 10800 0 MSK} - {3447010800 14400 1 MSD} - {3465759600 10800 0 MSK} - {3479065200 14400 1 MSD} - {3497209200 10800 0 MSK} - {3510514800 14400 1 MSD} - {3528658800 10800 0 MSK} - {3541964400 14400 1 MSD} - {3560108400 10800 0 MSK} - {3573414000 14400 1 MSD} - {3592162800 10800 0 MSK} - {3604863600 14400 1 MSD} - {3623612400 10800 0 MSK} - {3636313200 14400 1 MSD} - {3655062000 10800 0 MSK} - {3668367600 14400 1 MSD} - {3686511600 10800 0 MSK} - {3699817200 14400 1 MSD} - {3717961200 10800 0 MSK} - {3731266800 14400 1 MSD} - {3750015600 10800 0 MSK} - {3762716400 14400 1 MSD} - {3781465200 10800 0 MSK} - {3794166000 14400 1 MSD} - {3812914800 10800 0 MSK} - {3825615600 14400 1 MSD} - {3844364400 10800 0 MSK} - {3857670000 14400 1 MSD} - {3875814000 10800 0 MSK} - {3889119600 14400 1 MSD} - {3907263600 10800 0 MSK} - {3920569200 14400 1 MSD} - {3939318000 10800 0 MSK} - {3952018800 14400 1 MSD} - {3970767600 10800 0 MSK} - {3983468400 14400 1 MSD} - {4002217200 10800 0 MSK} - {4015522800 14400 1 MSD} - {4033666800 10800 0 MSK} - {4046972400 14400 1 MSD} - {4065116400 10800 0 MSK} - {4078422000 14400 1 MSD} - {4096566000 10800 0 MSK} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Moscow) { + {-9223372036854775808 9020 0 LMT} + {-2840149820 9000 0 MMT} + {-1688265000 9048 0 MMT} + {-1656819048 12648 1 MST} + {-1641353448 9048 0 MMT} + {-1627965048 16248 1 MDST} + {-1618716648 12648 1 MST} + {-1596429048 16248 1 MDST} + {-1593822648 14400 0 MSD} + {-1589860800 10800 0 MSK} + {-1542427200 14400 1 MSD} + {-1539493200 18000 1 MSD} + {-1525323600 14400 1 MSD} + {-1522728000 10800 0 MSK} + {-1491188400 7200 0 EET} + {-1247536800 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 7200 0 EEMMTT} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {695779200 10800 0 MSD} + {701812800 14400 1 MSD} + {717534000 10800 0 MSK} + {733273200 14400 1 MSD} + {748998000 10800 0 MSK} + {764722800 14400 1 MSD} + {780447600 10800 0 MSK} + {796172400 14400 1 MSD} + {811897200 10800 0 MSK} + {828226800 14400 1 MSD} + {846370800 10800 0 MSK} + {859676400 14400 1 MSD} + {877820400 10800 0 MSK} + {891126000 14400 1 MSD} + {909270000 10800 0 MSK} + {922575600 14400 1 MSD} + {941324400 10800 0 MSK} + {954025200 14400 1 MSD} + {972774000 10800 0 MSK} + {985474800 14400 1 MSD} + {1004223600 10800 0 MSK} + {1017529200 14400 1 MSD} + {1035673200 10800 0 MSK} + {1048978800 14400 1 MSD} + {1067122800 10800 0 MSK} + {1080428400 14400 1 MSD} + {1099177200 10800 0 MSK} + {1111878000 14400 1 MSD} + {1130626800 10800 0 MSK} + {1143327600 14400 1 MSD} + {1162076400 10800 0 MSK} + {1174777200 14400 1 MSD} + {1193526000 10800 0 MSK} + {1206831600 14400 1 MSD} + {1224975600 10800 0 MSK} + {1238281200 14400 1 MSD} + {1256425200 10800 0 MSK} + {1269730800 14400 1 MSD} + {1288479600 10800 0 MSK} + {1301180400 14400 1 MSD} + {1319929200 10800 0 MSK} + {1332630000 14400 1 MSD} + {1351378800 10800 0 MSK} + {1364684400 14400 1 MSD} + {1382828400 10800 0 MSK} + {1396134000 14400 1 MSD} + {1414278000 10800 0 MSK} + {1427583600 14400 1 MSD} + {1445727600 10800 0 MSK} + {1459033200 14400 1 MSD} + {1477782000 10800 0 MSK} + {1490482800 14400 1 MSD} + {1509231600 10800 0 MSK} + {1521932400 14400 1 MSD} + {1540681200 10800 0 MSK} + {1553986800 14400 1 MSD} + {1572130800 10800 0 MSK} + {1585436400 14400 1 MSD} + {1603580400 10800 0 MSK} + {1616886000 14400 1 MSD} + {1635634800 10800 0 MSK} + {1648335600 14400 1 MSD} + {1667084400 10800 0 MSK} + {1679785200 14400 1 MSD} + {1698534000 10800 0 MSK} + {1711839600 14400 1 MSD} + {1729983600 10800 0 MSK} + {1743289200 14400 1 MSD} + {1761433200 10800 0 MSK} + {1774738800 14400 1 MSD} + {1792882800 10800 0 MSK} + {1806188400 14400 1 MSD} + {1824937200 10800 0 MSK} + {1837638000 14400 1 MSD} + {1856386800 10800 0 MSK} + {1869087600 14400 1 MSD} + {1887836400 10800 0 MSK} + {1901142000 14400 1 MSD} + {1919286000 10800 0 MSK} + {1932591600 14400 1 MSD} + {1950735600 10800 0 MSK} + {1964041200 14400 1 MSD} + {1982790000 10800 0 MSK} + {1995490800 14400 1 MSD} + {2014239600 10800 0 MSK} + {2026940400 14400 1 MSD} + {2045689200 10800 0 MSK} + {2058390000 14400 1 MSD} + {2077138800 10800 0 MSK} + {2090444400 14400 1 MSD} + {2108588400 10800 0 MSK} + {2121894000 14400 1 MSD} + {2140038000 10800 0 MSK} + {2153343600 14400 1 MSD} + {2172092400 10800 0 MSK} + {2184793200 14400 1 MSD} + {2203542000 10800 0 MSK} + {2216242800 14400 1 MSD} + {2234991600 10800 0 MSK} + {2248297200 14400 1 MSD} + {2266441200 10800 0 MSK} + {2279746800 14400 1 MSD} + {2297890800 10800 0 MSK} + {2311196400 14400 1 MSD} + {2329340400 10800 0 MSK} + {2342646000 14400 1 MSD} + {2361394800 10800 0 MSK} + {2374095600 14400 1 MSD} + {2392844400 10800 0 MSK} + {2405545200 14400 1 MSD} + {2424294000 10800 0 MSK} + {2437599600 14400 1 MSD} + {2455743600 10800 0 MSK} + {2469049200 14400 1 MSD} + {2487193200 10800 0 MSK} + {2500498800 14400 1 MSD} + {2519247600 10800 0 MSK} + {2531948400 14400 1 MSD} + {2550697200 10800 0 MSK} + {2563398000 14400 1 MSD} + {2582146800 10800 0 MSK} + {2595452400 14400 1 MSD} + {2613596400 10800 0 MSK} + {2626902000 14400 1 MSD} + {2645046000 10800 0 MSK} + {2658351600 14400 1 MSD} + {2676495600 10800 0 MSK} + {2689801200 14400 1 MSD} + {2708550000 10800 0 MSK} + {2721250800 14400 1 MSD} + {2739999600 10800 0 MSK} + {2752700400 14400 1 MSD} + {2771449200 10800 0 MSK} + {2784754800 14400 1 MSD} + {2802898800 10800 0 MSK} + {2816204400 14400 1 MSD} + {2834348400 10800 0 MSK} + {2847654000 14400 1 MSD} + {2866402800 10800 0 MSK} + {2879103600 14400 1 MSD} + {2897852400 10800 0 MSK} + {2910553200 14400 1 MSD} + {2929302000 10800 0 MSK} + {2942002800 14400 1 MSD} + {2960751600 10800 0 MSK} + {2974057200 14400 1 MSD} + {2992201200 10800 0 MSK} + {3005506800 14400 1 MSD} + {3023650800 10800 0 MSK} + {3036956400 14400 1 MSD} + {3055705200 10800 0 MSK} + {3068406000 14400 1 MSD} + {3087154800 10800 0 MSK} + {3099855600 14400 1 MSD} + {3118604400 10800 0 MSK} + {3131910000 14400 1 MSD} + {3150054000 10800 0 MSK} + {3163359600 14400 1 MSD} + {3181503600 10800 0 MSK} + {3194809200 14400 1 MSD} + {3212953200 10800 0 MSK} + {3226258800 14400 1 MSD} + {3245007600 10800 0 MSK} + {3257708400 14400 1 MSD} + {3276457200 10800 0 MSK} + {3289158000 14400 1 MSD} + {3307906800 10800 0 MSK} + {3321212400 14400 1 MSD} + {3339356400 10800 0 MSK} + {3352662000 14400 1 MSD} + {3370806000 10800 0 MSK} + {3384111600 14400 1 MSD} + {3402860400 10800 0 MSK} + {3415561200 14400 1 MSD} + {3434310000 10800 0 MSK} + {3447010800 14400 1 MSD} + {3465759600 10800 0 MSK} + {3479065200 14400 1 MSD} + {3497209200 10800 0 MSK} + {3510514800 14400 1 MSD} + {3528658800 10800 0 MSK} + {3541964400 14400 1 MSD} + {3560108400 10800 0 MSK} + {3573414000 14400 1 MSD} + {3592162800 10800 0 MSK} + {3604863600 14400 1 MSD} + {3623612400 10800 0 MSK} + {3636313200 14400 1 MSD} + {3655062000 10800 0 MSK} + {3668367600 14400 1 MSD} + {3686511600 10800 0 MSK} + {3699817200 14400 1 MSD} + {3717961200 10800 0 MSK} + {3731266800 14400 1 MSD} + {3750015600 10800 0 MSK} + {3762716400 14400 1 MSD} + {3781465200 10800 0 MSK} + {3794166000 14400 1 MSD} + {3812914800 10800 0 MSK} + {3825615600 14400 1 MSD} + {3844364400 10800 0 MSK} + {3857670000 14400 1 MSD} + {3875814000 10800 0 MSK} + {3889119600 14400 1 MSD} + {3907263600 10800 0 MSK} + {3920569200 14400 1 MSD} + {3939318000 10800 0 MSK} + {3952018800 14400 1 MSD} + {3970767600 10800 0 MSK} + {3983468400 14400 1 MSD} + {4002217200 10800 0 MSK} + {4015522800 14400 1 MSD} + {4033666800 10800 0 MSK} + {4046972400 14400 1 MSD} + {4065116400 10800 0 MSK} + {4078422000 14400 1 MSD} + {4096566000 10800 0 MSK} +} diff --git a/library/tzdata/Europe/Nicosia b/library/tzdata/Europe/Nicosia index 3429a63..2d58355 100644 --- a/library/tzdata/Europe/Nicosia +++ b/library/tzdata/Europe/Nicosia @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Nicosia)]} { - LoadTimeZoneFile Asia/Nicosia -} -set TZData(:Europe/Nicosia) $TZData(:Asia/Nicosia) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Nicosia)]} { + LoadTimeZoneFile Asia/Nicosia +} +set TZData(:Europe/Nicosia) $TZData(:Asia/Nicosia) diff --git a/library/tzdata/Europe/Oslo b/library/tzdata/Europe/Oslo index 25bbace..6787c1e 100644 --- a/library/tzdata/Europe/Oslo +++ b/library/tzdata/Europe/Oslo @@ -1,271 +1,271 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Oslo) { - {-9223372036854775808 2580 0 LMT} - {-2366757780 3600 0 CET} - {-1691884800 7200 1 CEST} - {-1680573600 3600 0 CET} - {-927511200 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 0 CEST} - {-765327600 3600 0 CET} - {-340844400 7200 1 CEST} - {-324514800 3600 0 CET} - {-308790000 7200 1 CEST} - {-293065200 3600 0 CET} - {-277340400 7200 1 CEST} - {-261615600 3600 0 CET} - {-245890800 7200 1 CEST} - {-230166000 3600 0 CET} - {-214441200 7200 1 CEST} - {-198716400 3600 0 CET} - {-182991600 7200 1 CEST} - {-166662000 3600 0 CET} - {-147913200 7200 1 CEST} - {-135212400 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Oslo) { + {-9223372036854775808 2580 0 LMT} + {-2366757780 3600 0 CET} + {-1691884800 7200 1 CEST} + {-1680573600 3600 0 CET} + {-927511200 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 0 CEST} + {-765327600 3600 0 CET} + {-340844400 7200 1 CEST} + {-324514800 3600 0 CET} + {-308790000 7200 1 CEST} + {-293065200 3600 0 CET} + {-277340400 7200 1 CEST} + {-261615600 3600 0 CET} + {-245890800 7200 1 CEST} + {-230166000 3600 0 CET} + {-214441200 7200 1 CEST} + {-198716400 3600 0 CET} + {-182991600 7200 1 CEST} + {-166662000 3600 0 CET} + {-147913200 7200 1 CEST} + {-135212400 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Paris b/library/tzdata/Europe/Paris index 548671d..4b22a09 100644 --- a/library/tzdata/Europe/Paris +++ b/library/tzdata/Europe/Paris @@ -1,314 +1,314 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Paris) { - {-9223372036854775808 561 0 LMT} - {-2486678901 561 0 PMT} - {-1855958901 0 0 WET} - {-1689814800 3600 1 WEST} - {-1680397200 0 0 WET} - {-1665363600 3600 1 WEST} - {-1648342800 0 0 WET} - {-1635123600 3600 1 WEST} - {-1616893200 0 0 WET} - {-1604278800 3600 1 WEST} - {-1585443600 0 0 WET} - {-1574038800 3600 1 WEST} - {-1552266000 0 0 WET} - {-1539997200 3600 1 WEST} - {-1520557200 0 0 WET} - {-1507510800 3600 1 WEST} - {-1490576400 0 0 WET} - {-1470618000 3600 1 WEST} - {-1459126800 0 0 WET} - {-1444006800 3600 1 WEST} - {-1427677200 0 0 WET} - {-1411952400 3600 1 WEST} - {-1396227600 0 0 WET} - {-1379293200 3600 1 WEST} - {-1364778000 0 0 WET} - {-1348448400 3600 1 WEST} - {-1333328400 0 0 WET} - {-1316394000 3600 1 WEST} - {-1301274000 0 0 WET} - {-1284339600 3600 1 WEST} - {-1269824400 0 0 WET} - {-1253494800 3600 1 WEST} - {-1238374800 0 0 WET} - {-1221440400 3600 1 WEST} - {-1206925200 0 0 WET} - {-1191200400 3600 1 WEST} - {-1175475600 0 0 WET} - {-1160355600 3600 1 WEST} - {-1143421200 0 0 WET} - {-1127696400 3600 1 WEST} - {-1111971600 0 0 WET} - {-1096851600 3600 1 WEST} - {-1080522000 0 0 WET} - {-1063587600 3600 1 WEST} - {-1049072400 0 0 WET} - {-1033347600 3600 1 WEST} - {-1017622800 0 0 WET} - {-1002502800 3600 1 WEST} - {-986173200 0 0 WET} - {-969238800 3600 1 WEST} - {-950490000 0 0 WET} - {-942012000 3600 1 WEST} - {-932436000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-800067600 7200 0 WEMT} - {-796266000 3600 1 WEST} - {-781052400 7200 1 WEMT} - {-766616400 3600 0 CET} - {196819200 7200 1 CEST} - {212540400 3600 0 CET} - {220921200 3600 0 CET} - {228877200 7200 1 CEST} - {243997200 3600 0 CET} - {260326800 7200 1 CEST} - {276051600 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Paris) { + {-9223372036854775808 561 0 LMT} + {-2486678901 561 0 PMT} + {-1855958901 0 0 WET} + {-1689814800 3600 1 WEST} + {-1680397200 0 0 WET} + {-1665363600 3600 1 WEST} + {-1648342800 0 0 WET} + {-1635123600 3600 1 WEST} + {-1616893200 0 0 WET} + {-1604278800 3600 1 WEST} + {-1585443600 0 0 WET} + {-1574038800 3600 1 WEST} + {-1552266000 0 0 WET} + {-1539997200 3600 1 WEST} + {-1520557200 0 0 WET} + {-1507510800 3600 1 WEST} + {-1490576400 0 0 WET} + {-1470618000 3600 1 WEST} + {-1459126800 0 0 WET} + {-1444006800 3600 1 WEST} + {-1427677200 0 0 WET} + {-1411952400 3600 1 WEST} + {-1396227600 0 0 WET} + {-1379293200 3600 1 WEST} + {-1364778000 0 0 WET} + {-1348448400 3600 1 WEST} + {-1333328400 0 0 WET} + {-1316394000 3600 1 WEST} + {-1301274000 0 0 WET} + {-1284339600 3600 1 WEST} + {-1269824400 0 0 WET} + {-1253494800 3600 1 WEST} + {-1238374800 0 0 WET} + {-1221440400 3600 1 WEST} + {-1206925200 0 0 WET} + {-1191200400 3600 1 WEST} + {-1175475600 0 0 WET} + {-1160355600 3600 1 WEST} + {-1143421200 0 0 WET} + {-1127696400 3600 1 WEST} + {-1111971600 0 0 WET} + {-1096851600 3600 1 WEST} + {-1080522000 0 0 WET} + {-1063587600 3600 1 WEST} + {-1049072400 0 0 WET} + {-1033347600 3600 1 WEST} + {-1017622800 0 0 WET} + {-1002502800 3600 1 WEST} + {-986173200 0 0 WET} + {-969238800 3600 1 WEST} + {-950490000 0 0 WET} + {-942012000 3600 1 WEST} + {-932436000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-800067600 7200 0 WEMT} + {-796266000 3600 1 WEST} + {-781052400 7200 1 WEMT} + {-766616400 3600 0 CET} + {196819200 7200 1 CEST} + {212540400 3600 0 CET} + {220921200 3600 0 CET} + {228877200 7200 1 CEST} + {243997200 3600 0 CET} + {260326800 7200 1 CEST} + {276051600 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Podgorica b/library/tzdata/Europe/Podgorica index 9c8429a..f4f9066 100755 --- a/library/tzdata/Europe/Podgorica +++ b/library/tzdata/Europe/Podgorica @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Podgorica) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Podgorica) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/Prague b/library/tzdata/Europe/Prague index 802c02b..222b1ae 100644 --- a/library/tzdata/Europe/Prague +++ b/library/tzdata/Europe/Prague @@ -1,272 +1,272 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Prague) { - {-9223372036854775808 3464 0 LMT} - {-3786829064 3464 0 PMT} - {-2469401864 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-798073200 3600 0 CET} - {-780534000 7200 1 CEST} - {-761180400 3600 0 CET} - {-746578800 7200 1 CEST} - {-733359600 3600 0 CET} - {-716425200 7200 1 CEST} - {-701910000 3600 0 CET} - {-684975600 7200 1 CEST} - {-670460400 3600 0 CET} - {-654217200 7200 1 CEST} - {-639010800 3600 0 CET} - {283993200 3600 0 CET} - {291776400 7200 1 CEST} - {307501200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Prague) { + {-9223372036854775808 3464 0 LMT} + {-3786829064 3464 0 PMT} + {-2469401864 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-798073200 3600 0 CET} + {-780534000 7200 1 CEST} + {-761180400 3600 0 CET} + {-746578800 7200 1 CEST} + {-733359600 3600 0 CET} + {-716425200 7200 1 CEST} + {-701910000 3600 0 CET} + {-684975600 7200 1 CEST} + {-670460400 3600 0 CET} + {-654217200 7200 1 CEST} + {-639010800 3600 0 CET} + {283993200 3600 0 CET} + {291776400 7200 1 CEST} + {307501200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Riga b/library/tzdata/Europe/Riga index 0597166..9fad0f8 100644 --- a/library/tzdata/Europe/Riga +++ b/library/tzdata/Europe/Riga @@ -1,258 +1,258 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Riga) { - {-9223372036854775808 5784 0 LMT} - {-2840146584 5784 0 RMT} - {-1632008184 9384 1 LST} - {-1618702584 5784 0 RMT} - {-1601681784 9384 1 LST} - {-1597275384 5784 0 RMT} - {-1377308184 7200 0 EET} - {-928029600 10800 0 MSK} - {-899521200 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-795834000 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {701827200 10800 1 EEST} - {717552000 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {843955200 7200 0 EET} - {853797600 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {951775200 7200 0 EET} - {978386400 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Riga) { + {-9223372036854775808 5784 0 LMT} + {-2840146584 5784 0 RMT} + {-1632008184 9384 1 LST} + {-1618702584 5784 0 RMT} + {-1601681784 9384 1 LST} + {-1597275384 5784 0 RMT} + {-1377308184 7200 0 EET} + {-928029600 10800 0 MSK} + {-899521200 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-795834000 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {701827200 10800 1 EEST} + {717552000 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {843955200 7200 0 EET} + {853797600 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {951775200 7200 0 EET} + {978386400 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Rome b/library/tzdata/Europe/Rome index d5a463b..64948b8 100644 --- a/library/tzdata/Europe/Rome +++ b/library/tzdata/Europe/Rome @@ -1,301 +1,301 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Rome) { - {-9223372036854775808 2996 0 LMT} - {-3259097396 2996 0 RMT} - {-2403564596 3600 0 CET} - {-1690851600 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1664758800 7200 1 CEST} - {-1649034000 3600 0 CET} - {-1635123600 7200 1 CEST} - {-1616979600 3600 0 CET} - {-1604278800 7200 1 CEST} - {-1585530000 3600 0 CET} - {-1571014800 7200 1 CEST} - {-1555290000 3600 0 CET} - {-932432400 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-804819600 3600 0 CET} - {-798080400 3600 0 CET} - {-781052400 7200 1 CEST} - {-766717200 3600 0 CET} - {-750898800 7200 1 CEST} - {-733359600 3600 0 CET} - {-719456400 7200 1 CEST} - {-701917200 3600 0 CET} - {-689209200 7200 1 CEST} - {-670460400 3600 0 CET} - {-114051600 7200 1 CEST} - {-103168800 3600 0 CET} - {-81997200 7200 1 CEST} - {-71719200 3600 0 CET} - {-50547600 7200 1 CEST} - {-40269600 3600 0 CET} - {-18493200 7200 1 CEST} - {-8215200 3600 0 CET} - {12956400 7200 1 CEST} - {23234400 3600 0 CET} - {43801200 7200 1 CEST} - {54687600 3600 0 CET} - {75855600 7200 1 CEST} - {86738400 3600 0 CET} - {107910000 7200 1 CEST} - {118188000 3600 0 CET} - {138754800 7200 1 CEST} - {149637600 3600 0 CET} - {170809200 7200 1 CEST} - {181090800 3600 0 CET} - {202258800 7200 1 CEST} - {212540400 3600 0 CET} - {233103600 7200 1 CEST} - {243990000 3600 0 CET} - {265158000 7200 1 CEST} - {276044400 3600 0 CET} - {296607600 7200 1 CEST} - {307494000 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Rome) { + {-9223372036854775808 2996 0 LMT} + {-3259097396 2996 0 RMT} + {-2403564596 3600 0 CET} + {-1690851600 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1664758800 7200 1 CEST} + {-1649034000 3600 0 CET} + {-1635123600 7200 1 CEST} + {-1616979600 3600 0 CET} + {-1604278800 7200 1 CEST} + {-1585530000 3600 0 CET} + {-1571014800 7200 1 CEST} + {-1555290000 3600 0 CET} + {-932432400 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-804819600 3600 0 CET} + {-798080400 3600 0 CET} + {-781052400 7200 1 CEST} + {-766717200 3600 0 CET} + {-750898800 7200 1 CEST} + {-733359600 3600 0 CET} + {-719456400 7200 1 CEST} + {-701917200 3600 0 CET} + {-689209200 7200 1 CEST} + {-670460400 3600 0 CET} + {-114051600 7200 1 CEST} + {-103168800 3600 0 CET} + {-81997200 7200 1 CEST} + {-71719200 3600 0 CET} + {-50547600 7200 1 CEST} + {-40269600 3600 0 CET} + {-18493200 7200 1 CEST} + {-8215200 3600 0 CET} + {12956400 7200 1 CEST} + {23234400 3600 0 CET} + {43801200 7200 1 CEST} + {54687600 3600 0 CET} + {75855600 7200 1 CEST} + {86738400 3600 0 CET} + {107910000 7200 1 CEST} + {118188000 3600 0 CET} + {138754800 7200 1 CEST} + {149637600 3600 0 CET} + {170809200 7200 1 CEST} + {181090800 3600 0 CET} + {202258800 7200 1 CEST} + {212540400 3600 0 CET} + {233103600 7200 1 CEST} + {243990000 3600 0 CET} + {265158000 7200 1 CEST} + {276044400 3600 0 CET} + {296607600 7200 1 CEST} + {307494000 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Samara b/library/tzdata/Europe/Samara index 61e2997..47e57e4 100644 --- a/library/tzdata/Europe/Samara +++ b/library/tzdata/Europe/Samara @@ -1,249 +1,249 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Samara) { - {-9223372036854775808 12036 0 LMT} - {-1593825636 10800 0 SAMT} - {-1247540400 14400 0 SAMT} - {-1102305600 14400 0 KUYMMTT} - {354916800 18000 1 KUYST} - {370724400 14400 0 KUYT} - {386452800 18000 1 KUYST} - {402260400 14400 0 KUYT} - {417988800 18000 1 KUYST} - {433796400 14400 0 KUYT} - {449611200 18000 1 KUYST} - {465343200 14400 0 KUYT} - {481068000 18000 1 KUYST} - {496792800 14400 0 KUYT} - {512517600 18000 1 KUYST} - {528242400 14400 0 KUYT} - {543967200 18000 1 KUYST} - {559692000 14400 0 KUYT} - {575416800 18000 1 KUYST} - {591141600 14400 0 KUYT} - {606866400 10800 0 KUYMMTT} - {606870000 14400 1 KUYST} - {622594800 10800 0 KUYT} - {638319600 14400 1 KUYST} - {654649200 10800 0 KUYT} - {670374000 7200 0 KUYMMTT} - {670377600 10800 1 KUYST} - {686102400 10800 0 KUYT} - {687916800 14400 0 SAMT} - {701809200 18000 1 SAMST} - {717530400 14400 0 SAMT} - {733269600 18000 1 SAMST} - {748994400 14400 0 SAMT} - {764719200 18000 1 SAMST} - {780444000 14400 0 SAMT} - {796168800 18000 1 SAMST} - {811893600 14400 0 SAMT} - {828223200 18000 1 SAMST} - {846367200 14400 0 SAMT} - {859672800 18000 1 SAMST} - {877816800 14400 0 SAMT} - {891122400 18000 1 SAMST} - {909266400 14400 0 SAMT} - {922572000 18000 1 SAMST} - {941320800 14400 0 SAMT} - {954021600 18000 1 SAMST} - {972770400 14400 0 SAMT} - {985471200 18000 1 SAMST} - {1004220000 14400 0 SAMT} - {1017525600 18000 1 SAMST} - {1035669600 14400 0 SAMT} - {1048975200 18000 1 SAMST} - {1067119200 14400 0 SAMT} - {1080424800 18000 1 SAMST} - {1099173600 14400 0 SAMT} - {1111874400 18000 1 SAMST} - {1130623200 14400 0 SAMT} - {1143324000 18000 1 SAMST} - {1162072800 14400 0 SAMT} - {1174773600 18000 1 SAMST} - {1193522400 14400 0 SAMT} - {1206828000 18000 1 SAMST} - {1224972000 14400 0 SAMT} - {1238277600 18000 1 SAMST} - {1256421600 14400 0 SAMT} - {1269727200 18000 1 SAMST} - {1288476000 14400 0 SAMT} - {1301176800 18000 1 SAMST} - {1319925600 14400 0 SAMT} - {1332626400 18000 1 SAMST} - {1351375200 14400 0 SAMT} - {1364680800 18000 1 SAMST} - {1382824800 14400 0 SAMT} - {1396130400 18000 1 SAMST} - {1414274400 14400 0 SAMT} - {1427580000 18000 1 SAMST} - {1445724000 14400 0 SAMT} - {1459029600 18000 1 SAMST} - {1477778400 14400 0 SAMT} - {1490479200 18000 1 SAMST} - {1509228000 14400 0 SAMT} - {1521928800 18000 1 SAMST} - {1540677600 14400 0 SAMT} - {1553983200 18000 1 SAMST} - {1572127200 14400 0 SAMT} - {1585432800 18000 1 SAMST} - {1603576800 14400 0 SAMT} - {1616882400 18000 1 SAMST} - {1635631200 14400 0 SAMT} - {1648332000 18000 1 SAMST} - {1667080800 14400 0 SAMT} - {1679781600 18000 1 SAMST} - {1698530400 14400 0 SAMT} - {1711836000 18000 1 SAMST} - {1729980000 14400 0 SAMT} - {1743285600 18000 1 SAMST} - {1761429600 14400 0 SAMT} - {1774735200 18000 1 SAMST} - {1792879200 14400 0 SAMT} - {1806184800 18000 1 SAMST} - {1824933600 14400 0 SAMT} - {1837634400 18000 1 SAMST} - {1856383200 14400 0 SAMT} - {1869084000 18000 1 SAMST} - {1887832800 14400 0 SAMT} - {1901138400 18000 1 SAMST} - {1919282400 14400 0 SAMT} - {1932588000 18000 1 SAMST} - {1950732000 14400 0 SAMT} - {1964037600 18000 1 SAMST} - {1982786400 14400 0 SAMT} - {1995487200 18000 1 SAMST} - {2014236000 14400 0 SAMT} - {2026936800 18000 1 SAMST} - {2045685600 14400 0 SAMT} - {2058386400 18000 1 SAMST} - {2077135200 14400 0 SAMT} - {2090440800 18000 1 SAMST} - {2108584800 14400 0 SAMT} - {2121890400 18000 1 SAMST} - {2140034400 14400 0 SAMT} - {2153340000 18000 1 SAMST} - {2172088800 14400 0 SAMT} - {2184789600 18000 1 SAMST} - {2203538400 14400 0 SAMT} - {2216239200 18000 1 SAMST} - {2234988000 14400 0 SAMT} - {2248293600 18000 1 SAMST} - {2266437600 14400 0 SAMT} - {2279743200 18000 1 SAMST} - {2297887200 14400 0 SAMT} - {2311192800 18000 1 SAMST} - {2329336800 14400 0 SAMT} - {2342642400 18000 1 SAMST} - {2361391200 14400 0 SAMT} - {2374092000 18000 1 SAMST} - {2392840800 14400 0 SAMT} - {2405541600 18000 1 SAMST} - {2424290400 14400 0 SAMT} - {2437596000 18000 1 SAMST} - {2455740000 14400 0 SAMT} - {2469045600 18000 1 SAMST} - {2487189600 14400 0 SAMT} - {2500495200 18000 1 SAMST} - {2519244000 14400 0 SAMT} - {2531944800 18000 1 SAMST} - {2550693600 14400 0 SAMT} - {2563394400 18000 1 SAMST} - {2582143200 14400 0 SAMT} - {2595448800 18000 1 SAMST} - {2613592800 14400 0 SAMT} - {2626898400 18000 1 SAMST} - {2645042400 14400 0 SAMT} - {2658348000 18000 1 SAMST} - {2676492000 14400 0 SAMT} - {2689797600 18000 1 SAMST} - {2708546400 14400 0 SAMT} - {2721247200 18000 1 SAMST} - {2739996000 14400 0 SAMT} - {2752696800 18000 1 SAMST} - {2771445600 14400 0 SAMT} - {2784751200 18000 1 SAMST} - {2802895200 14400 0 SAMT} - {2816200800 18000 1 SAMST} - {2834344800 14400 0 SAMT} - {2847650400 18000 1 SAMST} - {2866399200 14400 0 SAMT} - {2879100000 18000 1 SAMST} - {2897848800 14400 0 SAMT} - {2910549600 18000 1 SAMST} - {2929298400 14400 0 SAMT} - {2941999200 18000 1 SAMST} - {2960748000 14400 0 SAMT} - {2974053600 18000 1 SAMST} - {2992197600 14400 0 SAMT} - {3005503200 18000 1 SAMST} - {3023647200 14400 0 SAMT} - {3036952800 18000 1 SAMST} - {3055701600 14400 0 SAMT} - {3068402400 18000 1 SAMST} - {3087151200 14400 0 SAMT} - {3099852000 18000 1 SAMST} - {3118600800 14400 0 SAMT} - {3131906400 18000 1 SAMST} - {3150050400 14400 0 SAMT} - {3163356000 18000 1 SAMST} - {3181500000 14400 0 SAMT} - {3194805600 18000 1 SAMST} - {3212949600 14400 0 SAMT} - {3226255200 18000 1 SAMST} - {3245004000 14400 0 SAMT} - {3257704800 18000 1 SAMST} - {3276453600 14400 0 SAMT} - {3289154400 18000 1 SAMST} - {3307903200 14400 0 SAMT} - {3321208800 18000 1 SAMST} - {3339352800 14400 0 SAMT} - {3352658400 18000 1 SAMST} - {3370802400 14400 0 SAMT} - {3384108000 18000 1 SAMST} - {3402856800 14400 0 SAMT} - {3415557600 18000 1 SAMST} - {3434306400 14400 0 SAMT} - {3447007200 18000 1 SAMST} - {3465756000 14400 0 SAMT} - {3479061600 18000 1 SAMST} - {3497205600 14400 0 SAMT} - {3510511200 18000 1 SAMST} - {3528655200 14400 0 SAMT} - {3541960800 18000 1 SAMST} - {3560104800 14400 0 SAMT} - {3573410400 18000 1 SAMST} - {3592159200 14400 0 SAMT} - {3604860000 18000 1 SAMST} - {3623608800 14400 0 SAMT} - {3636309600 18000 1 SAMST} - {3655058400 14400 0 SAMT} - {3668364000 18000 1 SAMST} - {3686508000 14400 0 SAMT} - {3699813600 18000 1 SAMST} - {3717957600 14400 0 SAMT} - {3731263200 18000 1 SAMST} - {3750012000 14400 0 SAMT} - {3762712800 18000 1 SAMST} - {3781461600 14400 0 SAMT} - {3794162400 18000 1 SAMST} - {3812911200 14400 0 SAMT} - {3825612000 18000 1 SAMST} - {3844360800 14400 0 SAMT} - {3857666400 18000 1 SAMST} - {3875810400 14400 0 SAMT} - {3889116000 18000 1 SAMST} - {3907260000 14400 0 SAMT} - {3920565600 18000 1 SAMST} - {3939314400 14400 0 SAMT} - {3952015200 18000 1 SAMST} - {3970764000 14400 0 SAMT} - {3983464800 18000 1 SAMST} - {4002213600 14400 0 SAMT} - {4015519200 18000 1 SAMST} - {4033663200 14400 0 SAMT} - {4046968800 18000 1 SAMST} - {4065112800 14400 0 SAMT} - {4078418400 18000 1 SAMST} - {4096562400 14400 0 SAMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Samara) { + {-9223372036854775808 12036 0 LMT} + {-1593825636 10800 0 SAMT} + {-1247540400 14400 0 SAMT} + {-1102305600 14400 0 KUYMMTT} + {354916800 18000 1 KUYST} + {370724400 14400 0 KUYT} + {386452800 18000 1 KUYST} + {402260400 14400 0 KUYT} + {417988800 18000 1 KUYST} + {433796400 14400 0 KUYT} + {449611200 18000 1 KUYST} + {465343200 14400 0 KUYT} + {481068000 18000 1 KUYST} + {496792800 14400 0 KUYT} + {512517600 18000 1 KUYST} + {528242400 14400 0 KUYT} + {543967200 18000 1 KUYST} + {559692000 14400 0 KUYT} + {575416800 18000 1 KUYST} + {591141600 14400 0 KUYT} + {606866400 10800 0 KUYMMTT} + {606870000 14400 1 KUYST} + {622594800 10800 0 KUYT} + {638319600 14400 1 KUYST} + {654649200 10800 0 KUYT} + {670374000 7200 0 KUYMMTT} + {670377600 10800 1 KUYST} + {686102400 10800 0 KUYT} + {687916800 14400 0 SAMT} + {701809200 18000 1 SAMST} + {717530400 14400 0 SAMT} + {733269600 18000 1 SAMST} + {748994400 14400 0 SAMT} + {764719200 18000 1 SAMST} + {780444000 14400 0 SAMT} + {796168800 18000 1 SAMST} + {811893600 14400 0 SAMT} + {828223200 18000 1 SAMST} + {846367200 14400 0 SAMT} + {859672800 18000 1 SAMST} + {877816800 14400 0 SAMT} + {891122400 18000 1 SAMST} + {909266400 14400 0 SAMT} + {922572000 18000 1 SAMST} + {941320800 14400 0 SAMT} + {954021600 18000 1 SAMST} + {972770400 14400 0 SAMT} + {985471200 18000 1 SAMST} + {1004220000 14400 0 SAMT} + {1017525600 18000 1 SAMST} + {1035669600 14400 0 SAMT} + {1048975200 18000 1 SAMST} + {1067119200 14400 0 SAMT} + {1080424800 18000 1 SAMST} + {1099173600 14400 0 SAMT} + {1111874400 18000 1 SAMST} + {1130623200 14400 0 SAMT} + {1143324000 18000 1 SAMST} + {1162072800 14400 0 SAMT} + {1174773600 18000 1 SAMST} + {1193522400 14400 0 SAMT} + {1206828000 18000 1 SAMST} + {1224972000 14400 0 SAMT} + {1238277600 18000 1 SAMST} + {1256421600 14400 0 SAMT} + {1269727200 18000 1 SAMST} + {1288476000 14400 0 SAMT} + {1301176800 18000 1 SAMST} + {1319925600 14400 0 SAMT} + {1332626400 18000 1 SAMST} + {1351375200 14400 0 SAMT} + {1364680800 18000 1 SAMST} + {1382824800 14400 0 SAMT} + {1396130400 18000 1 SAMST} + {1414274400 14400 0 SAMT} + {1427580000 18000 1 SAMST} + {1445724000 14400 0 SAMT} + {1459029600 18000 1 SAMST} + {1477778400 14400 0 SAMT} + {1490479200 18000 1 SAMST} + {1509228000 14400 0 SAMT} + {1521928800 18000 1 SAMST} + {1540677600 14400 0 SAMT} + {1553983200 18000 1 SAMST} + {1572127200 14400 0 SAMT} + {1585432800 18000 1 SAMST} + {1603576800 14400 0 SAMT} + {1616882400 18000 1 SAMST} + {1635631200 14400 0 SAMT} + {1648332000 18000 1 SAMST} + {1667080800 14400 0 SAMT} + {1679781600 18000 1 SAMST} + {1698530400 14400 0 SAMT} + {1711836000 18000 1 SAMST} + {1729980000 14400 0 SAMT} + {1743285600 18000 1 SAMST} + {1761429600 14400 0 SAMT} + {1774735200 18000 1 SAMST} + {1792879200 14400 0 SAMT} + {1806184800 18000 1 SAMST} + {1824933600 14400 0 SAMT} + {1837634400 18000 1 SAMST} + {1856383200 14400 0 SAMT} + {1869084000 18000 1 SAMST} + {1887832800 14400 0 SAMT} + {1901138400 18000 1 SAMST} + {1919282400 14400 0 SAMT} + {1932588000 18000 1 SAMST} + {1950732000 14400 0 SAMT} + {1964037600 18000 1 SAMST} + {1982786400 14400 0 SAMT} + {1995487200 18000 1 SAMST} + {2014236000 14400 0 SAMT} + {2026936800 18000 1 SAMST} + {2045685600 14400 0 SAMT} + {2058386400 18000 1 SAMST} + {2077135200 14400 0 SAMT} + {2090440800 18000 1 SAMST} + {2108584800 14400 0 SAMT} + {2121890400 18000 1 SAMST} + {2140034400 14400 0 SAMT} + {2153340000 18000 1 SAMST} + {2172088800 14400 0 SAMT} + {2184789600 18000 1 SAMST} + {2203538400 14400 0 SAMT} + {2216239200 18000 1 SAMST} + {2234988000 14400 0 SAMT} + {2248293600 18000 1 SAMST} + {2266437600 14400 0 SAMT} + {2279743200 18000 1 SAMST} + {2297887200 14400 0 SAMT} + {2311192800 18000 1 SAMST} + {2329336800 14400 0 SAMT} + {2342642400 18000 1 SAMST} + {2361391200 14400 0 SAMT} + {2374092000 18000 1 SAMST} + {2392840800 14400 0 SAMT} + {2405541600 18000 1 SAMST} + {2424290400 14400 0 SAMT} + {2437596000 18000 1 SAMST} + {2455740000 14400 0 SAMT} + {2469045600 18000 1 SAMST} + {2487189600 14400 0 SAMT} + {2500495200 18000 1 SAMST} + {2519244000 14400 0 SAMT} + {2531944800 18000 1 SAMST} + {2550693600 14400 0 SAMT} + {2563394400 18000 1 SAMST} + {2582143200 14400 0 SAMT} + {2595448800 18000 1 SAMST} + {2613592800 14400 0 SAMT} + {2626898400 18000 1 SAMST} + {2645042400 14400 0 SAMT} + {2658348000 18000 1 SAMST} + {2676492000 14400 0 SAMT} + {2689797600 18000 1 SAMST} + {2708546400 14400 0 SAMT} + {2721247200 18000 1 SAMST} + {2739996000 14400 0 SAMT} + {2752696800 18000 1 SAMST} + {2771445600 14400 0 SAMT} + {2784751200 18000 1 SAMST} + {2802895200 14400 0 SAMT} + {2816200800 18000 1 SAMST} + {2834344800 14400 0 SAMT} + {2847650400 18000 1 SAMST} + {2866399200 14400 0 SAMT} + {2879100000 18000 1 SAMST} + {2897848800 14400 0 SAMT} + {2910549600 18000 1 SAMST} + {2929298400 14400 0 SAMT} + {2941999200 18000 1 SAMST} + {2960748000 14400 0 SAMT} + {2974053600 18000 1 SAMST} + {2992197600 14400 0 SAMT} + {3005503200 18000 1 SAMST} + {3023647200 14400 0 SAMT} + {3036952800 18000 1 SAMST} + {3055701600 14400 0 SAMT} + {3068402400 18000 1 SAMST} + {3087151200 14400 0 SAMT} + {3099852000 18000 1 SAMST} + {3118600800 14400 0 SAMT} + {3131906400 18000 1 SAMST} + {3150050400 14400 0 SAMT} + {3163356000 18000 1 SAMST} + {3181500000 14400 0 SAMT} + {3194805600 18000 1 SAMST} + {3212949600 14400 0 SAMT} + {3226255200 18000 1 SAMST} + {3245004000 14400 0 SAMT} + {3257704800 18000 1 SAMST} + {3276453600 14400 0 SAMT} + {3289154400 18000 1 SAMST} + {3307903200 14400 0 SAMT} + {3321208800 18000 1 SAMST} + {3339352800 14400 0 SAMT} + {3352658400 18000 1 SAMST} + {3370802400 14400 0 SAMT} + {3384108000 18000 1 SAMST} + {3402856800 14400 0 SAMT} + {3415557600 18000 1 SAMST} + {3434306400 14400 0 SAMT} + {3447007200 18000 1 SAMST} + {3465756000 14400 0 SAMT} + {3479061600 18000 1 SAMST} + {3497205600 14400 0 SAMT} + {3510511200 18000 1 SAMST} + {3528655200 14400 0 SAMT} + {3541960800 18000 1 SAMST} + {3560104800 14400 0 SAMT} + {3573410400 18000 1 SAMST} + {3592159200 14400 0 SAMT} + {3604860000 18000 1 SAMST} + {3623608800 14400 0 SAMT} + {3636309600 18000 1 SAMST} + {3655058400 14400 0 SAMT} + {3668364000 18000 1 SAMST} + {3686508000 14400 0 SAMT} + {3699813600 18000 1 SAMST} + {3717957600 14400 0 SAMT} + {3731263200 18000 1 SAMST} + {3750012000 14400 0 SAMT} + {3762712800 18000 1 SAMST} + {3781461600 14400 0 SAMT} + {3794162400 18000 1 SAMST} + {3812911200 14400 0 SAMT} + {3825612000 18000 1 SAMST} + {3844360800 14400 0 SAMT} + {3857666400 18000 1 SAMST} + {3875810400 14400 0 SAMT} + {3889116000 18000 1 SAMST} + {3907260000 14400 0 SAMT} + {3920565600 18000 1 SAMST} + {3939314400 14400 0 SAMT} + {3952015200 18000 1 SAMST} + {3970764000 14400 0 SAMT} + {3983464800 18000 1 SAMST} + {4002213600 14400 0 SAMT} + {4015519200 18000 1 SAMST} + {4033663200 14400 0 SAMT} + {4046968800 18000 1 SAMST} + {4065112800 14400 0 SAMT} + {4078418400 18000 1 SAMST} + {4096562400 14400 0 SAMT} +} diff --git a/library/tzdata/Europe/San_Marino b/library/tzdata/Europe/San_Marino index 5704f6f..927ad29 100644 --- a/library/tzdata/Europe/San_Marino +++ b/library/tzdata/Europe/San_Marino @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Rome)]} { - LoadTimeZoneFile Europe/Rome -} -set TZData(:Europe/San_Marino) $TZData(:Europe/Rome) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Rome)]} { + LoadTimeZoneFile Europe/Rome +} +set TZData(:Europe/San_Marino) $TZData(:Europe/Rome) diff --git a/library/tzdata/Europe/Sarajevo b/library/tzdata/Europe/Sarajevo index 32d1240..1b14286 100644 --- a/library/tzdata/Europe/Sarajevo +++ b/library/tzdata/Europe/Sarajevo @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Sarajevo) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Sarajevo) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/Simferopol b/library/tzdata/Europe/Simferopol index a0f703d..9836560 100644 --- a/library/tzdata/Europe/Simferopol +++ b/library/tzdata/Europe/Simferopol @@ -1,253 +1,253 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Simferopol) { - {-9223372036854775808 8184 0 LMT} - {-2840148984 8160 0 SMT} - {-1441160160 7200 0 EET} - {-1247536800 10800 0 MSK} - {-888894000 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-811645200 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {646786800 7200 0 EET} - {694216800 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {767743200 14400 0 MSD} - {780436800 10800 0 MSK} - {796165200 14400 1 MSD} - {811886400 10800 0 MSK} - {828219600 14400 1 MSD} - {828230400 14400 1 MSD} - {852066000 10800 0 MSK} - {859683600 10800 0 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Simferopol) { + {-9223372036854775808 8184 0 LMT} + {-2840148984 8160 0 SMT} + {-1441160160 7200 0 EET} + {-1247536800 10800 0 MSK} + {-888894000 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-811645200 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {646786800 7200 0 EET} + {694216800 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {767743200 14400 0 MSD} + {780436800 10800 0 MSK} + {796165200 14400 1 MSD} + {811886400 10800 0 MSK} + {828219600 14400 1 MSD} + {828230400 14400 1 MSD} + {852066000 10800 0 MSK} + {859683600 10800 0 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Skopje b/library/tzdata/Europe/Skopje index 8091fca..07eedbe 100644 --- a/library/tzdata/Europe/Skopje +++ b/library/tzdata/Europe/Skopje @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Skopje) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Skopje) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/Sofia b/library/tzdata/Europe/Sofia index 6653075..8fd55f6 100644 --- a/library/tzdata/Europe/Sofia +++ b/library/tzdata/Europe/Sofia @@ -1,259 +1,259 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Sofia) { - {-9223372036854775808 5596 0 LMT} - {-2840146396 7016 0 IMT} - {-2369527016 7200 0 EET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-788922000 3600 0 CET} - {-781048800 7200 0 EET} - {291762000 10800 0 EEST} - {307576800 7200 0 EET} - {323816400 10800 1 EEST} - {339026400 7200 0 EET} - {355266000 10800 1 EEST} - {370393200 7200 0 EET} - {386715600 10800 1 EEST} - {401842800 10800 0 EEST} - {401846400 7200 0 EET} - {417571200 10800 1 EEST} - {433296000 7200 0 EET} - {449020800 10800 1 EEST} - {465350400 7200 0 EET} - {481075200 10800 1 EEST} - {496800000 7200 0 EET} - {512524800 10800 1 EEST} - {528249600 7200 0 EET} - {543974400 10800 1 EEST} - {559699200 7200 0 EET} - {575424000 10800 1 EEST} - {591148800 7200 0 EET} - {606873600 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {662680800 7200 0 EET} - {670370400 10800 1 EEST} - {686091600 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {846363600 7200 0 EET} - {852069600 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Sofia) { + {-9223372036854775808 5596 0 LMT} + {-2840146396 7016 0 IMT} + {-2369527016 7200 0 EET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-788922000 3600 0 CET} + {-781048800 7200 0 EET} + {291762000 10800 0 EEST} + {307576800 7200 0 EET} + {323816400 10800 1 EEST} + {339026400 7200 0 EET} + {355266000 10800 1 EEST} + {370393200 7200 0 EET} + {386715600 10800 1 EEST} + {401842800 10800 0 EEST} + {401846400 7200 0 EET} + {417571200 10800 1 EEST} + {433296000 7200 0 EET} + {449020800 10800 1 EEST} + {465350400 7200 0 EET} + {481075200 10800 1 EEST} + {496800000 7200 0 EET} + {512524800 10800 1 EEST} + {528249600 7200 0 EET} + {543974400 10800 1 EEST} + {559699200 7200 0 EET} + {575424000 10800 1 EEST} + {591148800 7200 0 EET} + {606873600 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {662680800 7200 0 EET} + {670370400 10800 1 EEST} + {686091600 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {796168800 10800 1 EEST} + {811890000 7200 0 EET} + {828223200 10800 1 EEST} + {846363600 7200 0 EET} + {852069600 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Stockholm b/library/tzdata/Europe/Stockholm index 1456313..b74d327 100644 --- a/library/tzdata/Europe/Stockholm +++ b/library/tzdata/Europe/Stockholm @@ -1,250 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Stockholm) { - {-9223372036854775808 4332 0 LMT} - {-2871681132 3614 0 SET} - {-2208992414 3600 0 CET} - {-1692496800 7200 1 CEST} - {-1680483600 3600 0 CET} - {315529200 3600 0 CET} - {323830800 7200 1 CEST} - {338950800 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Stockholm) { + {-9223372036854775808 4332 0 LMT} + {-2871681132 3614 0 SET} + {-2208992414 3600 0 CET} + {-1692496800 7200 1 CEST} + {-1680483600 3600 0 CET} + {315529200 3600 0 CET} + {323830800 7200 1 CEST} + {338950800 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Tallinn b/library/tzdata/Europe/Tallinn index 03eda88..17f14e6 100644 --- a/library/tzdata/Europe/Tallinn +++ b/library/tzdata/Europe/Tallinn @@ -1,255 +1,255 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Tallinn) { - {-9223372036854775808 5940 0 LMT} - {-2840146740 5940 0 TMT} - {-1638322740 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-1593824400 5940 0 TMT} - {-1535938740 7200 0 EET} - {-927943200 10800 0 MSK} - {-892954800 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-797648400 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {670377600 10800 1 EEST} - {686102400 7200 0 EET} - {701827200 10800 1 EEST} - {717552000 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {846374400 7200 0 EET} - {859680000 10800 1 EEST} - {877824000 7200 0 EET} - {891129600 10800 1 EEST} - {906415200 10800 0 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {941407200 7200 0 EET} - {1014242400 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Tallinn) { + {-9223372036854775808 5940 0 LMT} + {-2840146740 5940 0 TMT} + {-1638322740 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-1593824400 5940 0 TMT} + {-1535938740 7200 0 EET} + {-927943200 10800 0 MSK} + {-892954800 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-797648400 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} + {670377600 10800 1 EEST} + {686102400 7200 0 EET} + {701827200 10800 1 EEST} + {717552000 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {846374400 7200 0 EET} + {859680000 10800 1 EEST} + {877824000 7200 0 EET} + {891129600 10800 1 EEST} + {906415200 10800 0 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {941407200 7200 0 EET} + {1014242400 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Tirane b/library/tzdata/Europe/Tirane index b0c17b9..14ace2e 100644 --- a/library/tzdata/Europe/Tirane +++ b/library/tzdata/Europe/Tirane @@ -1,263 +1,263 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Tirane) { - {-9223372036854775808 4760 0 LMT} - {-1767230360 3600 0 CET} - {-932346000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-843519600 3600 0 CET} - {136854000 7200 1 CEST} - {149896800 3600 0 CET} - {168130800 7200 1 CEST} - {181432800 3600 0 CET} - {199839600 7200 1 CEST} - {213141600 3600 0 CET} - {231894000 7200 1 CEST} - {244591200 3600 0 CET} - {263257200 7200 1 CEST} - {276040800 3600 0 CET} - {294706800 7200 1 CEST} - {307490400 3600 0 CET} - {326156400 7200 1 CEST} - {339458400 3600 0 CET} - {357087600 7200 1 CEST} - {370389600 3600 0 CET} - {389142000 7200 1 CEST} - {402444000 3600 0 CET} - {419468400 7200 1 CEST} - {433807200 3600 0 CET} - {449622000 7200 1 CEST} - {457480800 7200 0 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Tirane) { + {-9223372036854775808 4760 0 LMT} + {-1767230360 3600 0 CET} + {-932346000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-843519600 3600 0 CET} + {136854000 7200 1 CEST} + {149896800 3600 0 CET} + {168130800 7200 1 CEST} + {181432800 3600 0 CET} + {199839600 7200 1 CEST} + {213141600 3600 0 CET} + {231894000 7200 1 CEST} + {244591200 3600 0 CET} + {263257200 7200 1 CEST} + {276040800 3600 0 CET} + {294706800 7200 1 CEST} + {307490400 3600 0 CET} + {326156400 7200 1 CEST} + {339458400 3600 0 CET} + {357087600 7200 1 CEST} + {370389600 3600 0 CET} + {389142000 7200 1 CEST} + {402444000 3600 0 CET} + {419468400 7200 1 CEST} + {433807200 3600 0 CET} + {449622000 7200 1 CEST} + {457480800 7200 0 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Tiraspol b/library/tzdata/Europe/Tiraspol index 703a733..ea8f671 100644 --- a/library/tzdata/Europe/Tiraspol +++ b/library/tzdata/Europe/Tiraspol @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Chisinau)]} { - LoadTimeZoneFile Europe/Chisinau -} -set TZData(:Europe/Tiraspol) $TZData(:Europe/Chisinau) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Chisinau)]} { + LoadTimeZoneFile Europe/Chisinau +} +set TZData(:Europe/Tiraspol) $TZData(:Europe/Chisinau) diff --git a/library/tzdata/Europe/Uzhgorod b/library/tzdata/Europe/Uzhgorod index 8e2f658..f6e580b 100644 --- a/library/tzdata/Europe/Uzhgorod +++ b/library/tzdata/Europe/Uzhgorod @@ -1,254 +1,254 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Uzhgorod) { - {-9223372036854775808 5352 0 LMT} - {-2500939752 3600 0 CET} - {-946774800 3600 0 CET} - {-938905200 7200 1 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796870800 7200 1 CEST} - {-794714400 3600 0 CET} - {-773456400 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {631141200 10800 0 MSK} - {646786800 3600 0 CET} - {670384800 7200 0 EET} - {694216800 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {788911200 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Uzhgorod) { + {-9223372036854775808 5352 0 LMT} + {-2500939752 3600 0 CET} + {-946774800 3600 0 CET} + {-938905200 7200 1 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796870800 7200 1 CEST} + {-794714400 3600 0 CET} + {-773456400 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {631141200 10800 0 MSK} + {646786800 3600 0 CET} + {670384800 7200 0 EET} + {694216800 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {788911200 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Vaduz b/library/tzdata/Europe/Vaduz index e4f18c8..3118331 100644 --- a/library/tzdata/Europe/Vaduz +++ b/library/tzdata/Europe/Vaduz @@ -1,245 +1,245 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Vaduz) { - {-9223372036854775808 2284 0 LMT} - {-2385247084 3600 0 CET} - {347151600 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Vaduz) { + {-9223372036854775808 2284 0 LMT} + {-2385247084 3600 0 CET} + {347151600 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Vatican b/library/tzdata/Europe/Vatican index b1f3821..fe50765 100644 --- a/library/tzdata/Europe/Vatican +++ b/library/tzdata/Europe/Vatican @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Rome)]} { - LoadTimeZoneFile Europe/Rome -} -set TZData(:Europe/Vatican) $TZData(:Europe/Rome) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Rome)]} { + LoadTimeZoneFile Europe/Rome +} +set TZData(:Europe/Vatican) $TZData(:Europe/Rome) diff --git a/library/tzdata/Europe/Vienna b/library/tzdata/Europe/Vienna index 63bbafb..41d744d 100644 --- a/library/tzdata/Europe/Vienna +++ b/library/tzdata/Europe/Vienna @@ -1,271 +1,271 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Vienna) { - {-9223372036854775808 3920 0 LMT} - {-2422055120 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618700400 3600 0 CET} - {-1577926800 3600 0 CET} - {-1569711600 7200 1 CEST} - {-1555801200 3600 0 CET} - {-938905200 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796777200 3600 0 CET} - {-781052400 7200 1 CEST} - {-780188400 3600 0 CET} - {-757386000 3600 0 CET} - {-748479600 7200 1 CEST} - {-733359600 3600 0 CET} - {-717634800 7200 1 CEST} - {-701910000 3600 0 CET} - {-684975600 7200 1 CEST} - {-670460400 3600 0 CET} - {323823600 7200 1 CEST} - {338940000 3600 0 CET} - {347151600 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Vienna) { + {-9223372036854775808 3920 0 LMT} + {-2422055120 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618700400 3600 0 CET} + {-1577926800 3600 0 CET} + {-1569711600 7200 1 CEST} + {-1555801200 3600 0 CET} + {-938905200 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 1 CEST} + {-780188400 3600 0 CET} + {-757386000 3600 0 CET} + {-748479600 7200 1 CEST} + {-733359600 3600 0 CET} + {-717634800 7200 1 CEST} + {-701910000 3600 0 CET} + {-684975600 7200 1 CEST} + {-670460400 3600 0 CET} + {323823600 7200 1 CEST} + {338940000 3600 0 CET} + {347151600 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Vilnius b/library/tzdata/Europe/Vilnius index 05e2865..62d5d87 100644 --- a/library/tzdata/Europe/Vilnius +++ b/library/tzdata/Europe/Vilnius @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Vilnius) { - {-9223372036854775808 6076 0 LMT} - {-2840146876 5040 0 WMT} - {-1672536240 5736 0 KMT} - {-1585100136 3600 0 CET} - {-1561251600 7200 0 EET} - {-1553565600 3600 0 CET} - {-928198800 10800 0 MSK} - {-900126000 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-802141200 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {638319600 14400 1 MSD} - {654649200 10800 0 MSK} - {670374000 10800 1 EEST} - {686102400 7200 0 EET} - {701827200 10800 1 EEST} - {717552000 7200 0 EET} - {733276800 10800 1 EEST} - {749001600 7200 0 EET} - {764726400 10800 1 EEST} - {780451200 7200 0 EET} - {796176000 10800 1 EEST} - {811900800 7200 0 EET} - {828230400 10800 1 EEST} - {846374400 7200 0 EET} - {859680000 10800 1 EEST} - {877824000 7200 0 EET} - {883605600 7200 0 EET} - {891133200 7200 0 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 7200 0 EET} - {1041372000 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Vilnius) { + {-9223372036854775808 6076 0 LMT} + {-2840146876 5040 0 WMT} + {-1672536240 5736 0 KMT} + {-1585100136 3600 0 CET} + {-1561251600 7200 0 EET} + {-1553565600 3600 0 CET} + {-928198800 10800 0 MSK} + {-900126000 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-802141200 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 10800 1 EEST} + {686102400 7200 0 EET} + {701827200 10800 1 EEST} + {717552000 7200 0 EET} + {733276800 10800 1 EEST} + {749001600 7200 0 EET} + {764726400 10800 1 EEST} + {780451200 7200 0 EET} + {796176000 10800 1 EEST} + {811900800 7200 0 EET} + {828230400 10800 1 EEST} + {846374400 7200 0 EET} + {859680000 10800 1 EEST} + {877824000 7200 0 EET} + {883605600 7200 0 EET} + {891133200 7200 0 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 7200 0 EET} + {1041372000 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Volgograd b/library/tzdata/Europe/Volgograd index 334e05b..49cf1e5 100755 --- a/library/tzdata/Europe/Volgograd +++ b/library/tzdata/Europe/Volgograd @@ -1,247 +1,247 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Volgograd) { - {-9223372036854775808 10660 0 LMT} - {-1577761060 10800 0 TSAT} - {-1411873200 10800 0 STAT} - {-1247540400 14400 0 STAT} - {-256881600 14400 0 VOLMMTT} - {354916800 18000 1 VOLST} - {370724400 14400 0 VOLT} - {386452800 18000 1 VOLST} - {402260400 14400 0 VOLT} - {417988800 18000 1 VOLST} - {433796400 14400 0 VOLT} - {449611200 18000 1 VOLST} - {465343200 14400 0 VOLT} - {481068000 18000 1 VOLST} - {496792800 14400 0 VOLT} - {512517600 18000 1 VOLST} - {528242400 14400 0 VOLT} - {543967200 18000 1 VOLST} - {559692000 14400 0 VOLT} - {575416800 18000 1 VOLST} - {591141600 14400 0 VOLT} - {606866400 10800 0 VOLMMTT} - {606870000 14400 1 VOLST} - {622594800 10800 0 VOLT} - {638319600 14400 1 VOLST} - {654649200 10800 0 VOLT} - {670374000 14400 0 VOLT} - {701820000 14400 0 VOLST} - {717534000 10800 0 VOLT} - {733273200 14400 1 VOLST} - {748998000 10800 0 VOLT} - {764722800 14400 1 VOLST} - {780447600 10800 0 VOLT} - {796172400 14400 1 VOLST} - {811897200 10800 0 VOLT} - {828226800 14400 1 VOLST} - {846370800 10800 0 VOLT} - {859676400 14400 1 VOLST} - {877820400 10800 0 VOLT} - {891126000 14400 1 VOLST} - {909270000 10800 0 VOLT} - {922575600 14400 1 VOLST} - {941324400 10800 0 VOLT} - {954025200 14400 1 VOLST} - {972774000 10800 0 VOLT} - {985474800 14400 1 VOLST} - {1004223600 10800 0 VOLT} - {1017529200 14400 1 VOLST} - {1035673200 10800 0 VOLT} - {1048978800 14400 1 VOLST} - {1067122800 10800 0 VOLT} - {1080428400 14400 1 VOLST} - {1099177200 10800 0 VOLT} - {1111878000 14400 1 VOLST} - {1130626800 10800 0 VOLT} - {1143327600 14400 1 VOLST} - {1162076400 10800 0 VOLT} - {1174777200 14400 1 VOLST} - {1193526000 10800 0 VOLT} - {1206831600 14400 1 VOLST} - {1224975600 10800 0 VOLT} - {1238281200 14400 1 VOLST} - {1256425200 10800 0 VOLT} - {1269730800 14400 1 VOLST} - {1288479600 10800 0 VOLT} - {1301180400 14400 1 VOLST} - {1319929200 10800 0 VOLT} - {1332630000 14400 1 VOLST} - {1351378800 10800 0 VOLT} - {1364684400 14400 1 VOLST} - {1382828400 10800 0 VOLT} - {1396134000 14400 1 VOLST} - {1414278000 10800 0 VOLT} - {1427583600 14400 1 VOLST} - {1445727600 10800 0 VOLT} - {1459033200 14400 1 VOLST} - {1477782000 10800 0 VOLT} - {1490482800 14400 1 VOLST} - {1509231600 10800 0 VOLT} - {1521932400 14400 1 VOLST} - {1540681200 10800 0 VOLT} - {1553986800 14400 1 VOLST} - {1572130800 10800 0 VOLT} - {1585436400 14400 1 VOLST} - {1603580400 10800 0 VOLT} - {1616886000 14400 1 VOLST} - {1635634800 10800 0 VOLT} - {1648335600 14400 1 VOLST} - {1667084400 10800 0 VOLT} - {1679785200 14400 1 VOLST} - {1698534000 10800 0 VOLT} - {1711839600 14400 1 VOLST} - {1729983600 10800 0 VOLT} - {1743289200 14400 1 VOLST} - {1761433200 10800 0 VOLT} - {1774738800 14400 1 VOLST} - {1792882800 10800 0 VOLT} - {1806188400 14400 1 VOLST} - {1824937200 10800 0 VOLT} - {1837638000 14400 1 VOLST} - {1856386800 10800 0 VOLT} - {1869087600 14400 1 VOLST} - {1887836400 10800 0 VOLT} - {1901142000 14400 1 VOLST} - {1919286000 10800 0 VOLT} - {1932591600 14400 1 VOLST} - {1950735600 10800 0 VOLT} - {1964041200 14400 1 VOLST} - {1982790000 10800 0 VOLT} - {1995490800 14400 1 VOLST} - {2014239600 10800 0 VOLT} - {2026940400 14400 1 VOLST} - {2045689200 10800 0 VOLT} - {2058390000 14400 1 VOLST} - {2077138800 10800 0 VOLT} - {2090444400 14400 1 VOLST} - {2108588400 10800 0 VOLT} - {2121894000 14400 1 VOLST} - {2140038000 10800 0 VOLT} - {2153343600 14400 1 VOLST} - {2172092400 10800 0 VOLT} - {2184793200 14400 1 VOLST} - {2203542000 10800 0 VOLT} - {2216242800 14400 1 VOLST} - {2234991600 10800 0 VOLT} - {2248297200 14400 1 VOLST} - {2266441200 10800 0 VOLT} - {2279746800 14400 1 VOLST} - {2297890800 10800 0 VOLT} - {2311196400 14400 1 VOLST} - {2329340400 10800 0 VOLT} - {2342646000 14400 1 VOLST} - {2361394800 10800 0 VOLT} - {2374095600 14400 1 VOLST} - {2392844400 10800 0 VOLT} - {2405545200 14400 1 VOLST} - {2424294000 10800 0 VOLT} - {2437599600 14400 1 VOLST} - {2455743600 10800 0 VOLT} - {2469049200 14400 1 VOLST} - {2487193200 10800 0 VOLT} - {2500498800 14400 1 VOLST} - {2519247600 10800 0 VOLT} - {2531948400 14400 1 VOLST} - {2550697200 10800 0 VOLT} - {2563398000 14400 1 VOLST} - {2582146800 10800 0 VOLT} - {2595452400 14400 1 VOLST} - {2613596400 10800 0 VOLT} - {2626902000 14400 1 VOLST} - {2645046000 10800 0 VOLT} - {2658351600 14400 1 VOLST} - {2676495600 10800 0 VOLT} - {2689801200 14400 1 VOLST} - {2708550000 10800 0 VOLT} - {2721250800 14400 1 VOLST} - {2739999600 10800 0 VOLT} - {2752700400 14400 1 VOLST} - {2771449200 10800 0 VOLT} - {2784754800 14400 1 VOLST} - {2802898800 10800 0 VOLT} - {2816204400 14400 1 VOLST} - {2834348400 10800 0 VOLT} - {2847654000 14400 1 VOLST} - {2866402800 10800 0 VOLT} - {2879103600 14400 1 VOLST} - {2897852400 10800 0 VOLT} - {2910553200 14400 1 VOLST} - {2929302000 10800 0 VOLT} - {2942002800 14400 1 VOLST} - {2960751600 10800 0 VOLT} - {2974057200 14400 1 VOLST} - {2992201200 10800 0 VOLT} - {3005506800 14400 1 VOLST} - {3023650800 10800 0 VOLT} - {3036956400 14400 1 VOLST} - {3055705200 10800 0 VOLT} - {3068406000 14400 1 VOLST} - {3087154800 10800 0 VOLT} - {3099855600 14400 1 VOLST} - {3118604400 10800 0 VOLT} - {3131910000 14400 1 VOLST} - {3150054000 10800 0 VOLT} - {3163359600 14400 1 VOLST} - {3181503600 10800 0 VOLT} - {3194809200 14400 1 VOLST} - {3212953200 10800 0 VOLT} - {3226258800 14400 1 VOLST} - {3245007600 10800 0 VOLT} - {3257708400 14400 1 VOLST} - {3276457200 10800 0 VOLT} - {3289158000 14400 1 VOLST} - {3307906800 10800 0 VOLT} - {3321212400 14400 1 VOLST} - {3339356400 10800 0 VOLT} - {3352662000 14400 1 VOLST} - {3370806000 10800 0 VOLT} - {3384111600 14400 1 VOLST} - {3402860400 10800 0 VOLT} - {3415561200 14400 1 VOLST} - {3434310000 10800 0 VOLT} - {3447010800 14400 1 VOLST} - {3465759600 10800 0 VOLT} - {3479065200 14400 1 VOLST} - {3497209200 10800 0 VOLT} - {3510514800 14400 1 VOLST} - {3528658800 10800 0 VOLT} - {3541964400 14400 1 VOLST} - {3560108400 10800 0 VOLT} - {3573414000 14400 1 VOLST} - {3592162800 10800 0 VOLT} - {3604863600 14400 1 VOLST} - {3623612400 10800 0 VOLT} - {3636313200 14400 1 VOLST} - {3655062000 10800 0 VOLT} - {3668367600 14400 1 VOLST} - {3686511600 10800 0 VOLT} - {3699817200 14400 1 VOLST} - {3717961200 10800 0 VOLT} - {3731266800 14400 1 VOLST} - {3750015600 10800 0 VOLT} - {3762716400 14400 1 VOLST} - {3781465200 10800 0 VOLT} - {3794166000 14400 1 VOLST} - {3812914800 10800 0 VOLT} - {3825615600 14400 1 VOLST} - {3844364400 10800 0 VOLT} - {3857670000 14400 1 VOLST} - {3875814000 10800 0 VOLT} - {3889119600 14400 1 VOLST} - {3907263600 10800 0 VOLT} - {3920569200 14400 1 VOLST} - {3939318000 10800 0 VOLT} - {3952018800 14400 1 VOLST} - {3970767600 10800 0 VOLT} - {3983468400 14400 1 VOLST} - {4002217200 10800 0 VOLT} - {4015522800 14400 1 VOLST} - {4033666800 10800 0 VOLT} - {4046972400 14400 1 VOLST} - {4065116400 10800 0 VOLT} - {4078422000 14400 1 VOLST} - {4096566000 10800 0 VOLT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Volgograd) { + {-9223372036854775808 10660 0 LMT} + {-1577761060 10800 0 TSAT} + {-1411873200 10800 0 STAT} + {-1247540400 14400 0 STAT} + {-256881600 14400 0 VOLMMTT} + {354916800 18000 1 VOLST} + {370724400 14400 0 VOLT} + {386452800 18000 1 VOLST} + {402260400 14400 0 VOLT} + {417988800 18000 1 VOLST} + {433796400 14400 0 VOLT} + {449611200 18000 1 VOLST} + {465343200 14400 0 VOLT} + {481068000 18000 1 VOLST} + {496792800 14400 0 VOLT} + {512517600 18000 1 VOLST} + {528242400 14400 0 VOLT} + {543967200 18000 1 VOLST} + {559692000 14400 0 VOLT} + {575416800 18000 1 VOLST} + {591141600 14400 0 VOLT} + {606866400 10800 0 VOLMMTT} + {606870000 14400 1 VOLST} + {622594800 10800 0 VOLT} + {638319600 14400 1 VOLST} + {654649200 10800 0 VOLT} + {670374000 14400 0 VOLT} + {701820000 14400 0 VOLST} + {717534000 10800 0 VOLT} + {733273200 14400 1 VOLST} + {748998000 10800 0 VOLT} + {764722800 14400 1 VOLST} + {780447600 10800 0 VOLT} + {796172400 14400 1 VOLST} + {811897200 10800 0 VOLT} + {828226800 14400 1 VOLST} + {846370800 10800 0 VOLT} + {859676400 14400 1 VOLST} + {877820400 10800 0 VOLT} + {891126000 14400 1 VOLST} + {909270000 10800 0 VOLT} + {922575600 14400 1 VOLST} + {941324400 10800 0 VOLT} + {954025200 14400 1 VOLST} + {972774000 10800 0 VOLT} + {985474800 14400 1 VOLST} + {1004223600 10800 0 VOLT} + {1017529200 14400 1 VOLST} + {1035673200 10800 0 VOLT} + {1048978800 14400 1 VOLST} + {1067122800 10800 0 VOLT} + {1080428400 14400 1 VOLST} + {1099177200 10800 0 VOLT} + {1111878000 14400 1 VOLST} + {1130626800 10800 0 VOLT} + {1143327600 14400 1 VOLST} + {1162076400 10800 0 VOLT} + {1174777200 14400 1 VOLST} + {1193526000 10800 0 VOLT} + {1206831600 14400 1 VOLST} + {1224975600 10800 0 VOLT} + {1238281200 14400 1 VOLST} + {1256425200 10800 0 VOLT} + {1269730800 14400 1 VOLST} + {1288479600 10800 0 VOLT} + {1301180400 14400 1 VOLST} + {1319929200 10800 0 VOLT} + {1332630000 14400 1 VOLST} + {1351378800 10800 0 VOLT} + {1364684400 14400 1 VOLST} + {1382828400 10800 0 VOLT} + {1396134000 14400 1 VOLST} + {1414278000 10800 0 VOLT} + {1427583600 14400 1 VOLST} + {1445727600 10800 0 VOLT} + {1459033200 14400 1 VOLST} + {1477782000 10800 0 VOLT} + {1490482800 14400 1 VOLST} + {1509231600 10800 0 VOLT} + {1521932400 14400 1 VOLST} + {1540681200 10800 0 VOLT} + {1553986800 14400 1 VOLST} + {1572130800 10800 0 VOLT} + {1585436400 14400 1 VOLST} + {1603580400 10800 0 VOLT} + {1616886000 14400 1 VOLST} + {1635634800 10800 0 VOLT} + {1648335600 14400 1 VOLST} + {1667084400 10800 0 VOLT} + {1679785200 14400 1 VOLST} + {1698534000 10800 0 VOLT} + {1711839600 14400 1 VOLST} + {1729983600 10800 0 VOLT} + {1743289200 14400 1 VOLST} + {1761433200 10800 0 VOLT} + {1774738800 14400 1 VOLST} + {1792882800 10800 0 VOLT} + {1806188400 14400 1 VOLST} + {1824937200 10800 0 VOLT} + {1837638000 14400 1 VOLST} + {1856386800 10800 0 VOLT} + {1869087600 14400 1 VOLST} + {1887836400 10800 0 VOLT} + {1901142000 14400 1 VOLST} + {1919286000 10800 0 VOLT} + {1932591600 14400 1 VOLST} + {1950735600 10800 0 VOLT} + {1964041200 14400 1 VOLST} + {1982790000 10800 0 VOLT} + {1995490800 14400 1 VOLST} + {2014239600 10800 0 VOLT} + {2026940400 14400 1 VOLST} + {2045689200 10800 0 VOLT} + {2058390000 14400 1 VOLST} + {2077138800 10800 0 VOLT} + {2090444400 14400 1 VOLST} + {2108588400 10800 0 VOLT} + {2121894000 14400 1 VOLST} + {2140038000 10800 0 VOLT} + {2153343600 14400 1 VOLST} + {2172092400 10800 0 VOLT} + {2184793200 14400 1 VOLST} + {2203542000 10800 0 VOLT} + {2216242800 14400 1 VOLST} + {2234991600 10800 0 VOLT} + {2248297200 14400 1 VOLST} + {2266441200 10800 0 VOLT} + {2279746800 14400 1 VOLST} + {2297890800 10800 0 VOLT} + {2311196400 14400 1 VOLST} + {2329340400 10800 0 VOLT} + {2342646000 14400 1 VOLST} + {2361394800 10800 0 VOLT} + {2374095600 14400 1 VOLST} + {2392844400 10800 0 VOLT} + {2405545200 14400 1 VOLST} + {2424294000 10800 0 VOLT} + {2437599600 14400 1 VOLST} + {2455743600 10800 0 VOLT} + {2469049200 14400 1 VOLST} + {2487193200 10800 0 VOLT} + {2500498800 14400 1 VOLST} + {2519247600 10800 0 VOLT} + {2531948400 14400 1 VOLST} + {2550697200 10800 0 VOLT} + {2563398000 14400 1 VOLST} + {2582146800 10800 0 VOLT} + {2595452400 14400 1 VOLST} + {2613596400 10800 0 VOLT} + {2626902000 14400 1 VOLST} + {2645046000 10800 0 VOLT} + {2658351600 14400 1 VOLST} + {2676495600 10800 0 VOLT} + {2689801200 14400 1 VOLST} + {2708550000 10800 0 VOLT} + {2721250800 14400 1 VOLST} + {2739999600 10800 0 VOLT} + {2752700400 14400 1 VOLST} + {2771449200 10800 0 VOLT} + {2784754800 14400 1 VOLST} + {2802898800 10800 0 VOLT} + {2816204400 14400 1 VOLST} + {2834348400 10800 0 VOLT} + {2847654000 14400 1 VOLST} + {2866402800 10800 0 VOLT} + {2879103600 14400 1 VOLST} + {2897852400 10800 0 VOLT} + {2910553200 14400 1 VOLST} + {2929302000 10800 0 VOLT} + {2942002800 14400 1 VOLST} + {2960751600 10800 0 VOLT} + {2974057200 14400 1 VOLST} + {2992201200 10800 0 VOLT} + {3005506800 14400 1 VOLST} + {3023650800 10800 0 VOLT} + {3036956400 14400 1 VOLST} + {3055705200 10800 0 VOLT} + {3068406000 14400 1 VOLST} + {3087154800 10800 0 VOLT} + {3099855600 14400 1 VOLST} + {3118604400 10800 0 VOLT} + {3131910000 14400 1 VOLST} + {3150054000 10800 0 VOLT} + {3163359600 14400 1 VOLST} + {3181503600 10800 0 VOLT} + {3194809200 14400 1 VOLST} + {3212953200 10800 0 VOLT} + {3226258800 14400 1 VOLST} + {3245007600 10800 0 VOLT} + {3257708400 14400 1 VOLST} + {3276457200 10800 0 VOLT} + {3289158000 14400 1 VOLST} + {3307906800 10800 0 VOLT} + {3321212400 14400 1 VOLST} + {3339356400 10800 0 VOLT} + {3352662000 14400 1 VOLST} + {3370806000 10800 0 VOLT} + {3384111600 14400 1 VOLST} + {3402860400 10800 0 VOLT} + {3415561200 14400 1 VOLST} + {3434310000 10800 0 VOLT} + {3447010800 14400 1 VOLST} + {3465759600 10800 0 VOLT} + {3479065200 14400 1 VOLST} + {3497209200 10800 0 VOLT} + {3510514800 14400 1 VOLST} + {3528658800 10800 0 VOLT} + {3541964400 14400 1 VOLST} + {3560108400 10800 0 VOLT} + {3573414000 14400 1 VOLST} + {3592162800 10800 0 VOLT} + {3604863600 14400 1 VOLST} + {3623612400 10800 0 VOLT} + {3636313200 14400 1 VOLST} + {3655062000 10800 0 VOLT} + {3668367600 14400 1 VOLST} + {3686511600 10800 0 VOLT} + {3699817200 14400 1 VOLST} + {3717961200 10800 0 VOLT} + {3731266800 14400 1 VOLST} + {3750015600 10800 0 VOLT} + {3762716400 14400 1 VOLST} + {3781465200 10800 0 VOLT} + {3794166000 14400 1 VOLST} + {3812914800 10800 0 VOLT} + {3825615600 14400 1 VOLST} + {3844364400 10800 0 VOLT} + {3857670000 14400 1 VOLST} + {3875814000 10800 0 VOLT} + {3889119600 14400 1 VOLST} + {3907263600 10800 0 VOLT} + {3920569200 14400 1 VOLST} + {3939318000 10800 0 VOLT} + {3952018800 14400 1 VOLST} + {3970767600 10800 0 VOLT} + {3983468400 14400 1 VOLST} + {4002217200 10800 0 VOLT} + {4015522800 14400 1 VOLST} + {4033666800 10800 0 VOLT} + {4046972400 14400 1 VOLST} + {4065116400 10800 0 VOLT} + {4078422000 14400 1 VOLST} + {4096566000 10800 0 VOLT} +} diff --git a/library/tzdata/Europe/Warsaw b/library/tzdata/Europe/Warsaw index 42d901f..6288a8a 100644 --- a/library/tzdata/Europe/Warsaw +++ b/library/tzdata/Europe/Warsaw @@ -1,296 +1,296 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Warsaw) { - {-9223372036854775808 5040 0 LMT} - {-2840145840 5040 0 WMT} - {-1717032240 3600 0 CET} - {-1693706400 7200 1 CEST} - {-1680483600 3600 0 CET} - {-1663455600 7200 1 CEST} - {-1650150000 3600 0 CET} - {-1632006000 7200 1 CEST} - {-1618696800 7200 0 EET} - {-1600473600 10800 1 EEST} - {-1587168000 7200 0 EET} - {-931734000 7200 0 CEST} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-812502000 7200 1 CEST} - {-796870800 7200 0 CEST} - {-796608000 3600 0 CET} - {-778726800 7200 1 CEST} - {-762660000 3600 0 CET} - {-748486800 7200 1 CEST} - {-733273200 3600 0 CET} - {-715215600 7200 1 CEST} - {-701910000 3600 0 CET} - {-684975600 7200 1 CEST} - {-670460400 3600 0 CET} - {-654130800 7200 1 CEST} - {-639010800 3600 0 CET} - {-397094400 7200 1 CEST} - {-386812800 3600 0 CET} - {-371088000 7200 1 CEST} - {-355363200 3600 0 CET} - {-334195200 7200 1 CEST} - {-323308800 3600 0 CET} - {-307584000 7200 1 CEST} - {-291859200 3600 0 CET} - {-271296000 7200 1 CEST} - {-260409600 3600 0 CET} - {-239846400 7200 1 CEST} - {-228960000 3600 0 CET} - {-208396800 7200 1 CEST} - {-197510400 3600 0 CET} - {-176342400 7200 1 CEST} - {-166060800 3600 0 CET} - {220921200 3600 0 CET} - {228873600 7200 1 CEST} - {243993600 3600 0 CET} - {260323200 7200 1 CEST} - {276048000 3600 0 CET} - {291772800 7200 1 CEST} - {307497600 3600 0 CET} - {323827200 7200 1 CEST} - {338947200 3600 0 CET} - {354672000 7200 1 CEST} - {370396800 3600 0 CET} - {386121600 7200 1 CEST} - {401846400 3600 0 CET} - {417571200 7200 1 CEST} - {433296000 3600 0 CET} - {449020800 7200 1 CEST} - {465350400 3600 0 CET} - {481075200 7200 1 CEST} - {496800000 3600 0 CET} - {512524800 7200 1 CEST} - {528249600 3600 0 CET} - {543974400 7200 1 CEST} - {559699200 3600 0 CET} - {567990000 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Warsaw) { + {-9223372036854775808 5040 0 LMT} + {-2840145840 5040 0 WMT} + {-1717032240 3600 0 CET} + {-1693706400 7200 1 CEST} + {-1680483600 3600 0 CET} + {-1663455600 7200 1 CEST} + {-1650150000 3600 0 CET} + {-1632006000 7200 1 CEST} + {-1618696800 7200 0 EET} + {-1600473600 10800 1 EEST} + {-1587168000 7200 0 EET} + {-931734000 7200 0 CEST} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-812502000 7200 1 CEST} + {-796870800 7200 0 CEST} + {-796608000 3600 0 CET} + {-778726800 7200 1 CEST} + {-762660000 3600 0 CET} + {-748486800 7200 1 CEST} + {-733273200 3600 0 CET} + {-715215600 7200 1 CEST} + {-701910000 3600 0 CET} + {-684975600 7200 1 CEST} + {-670460400 3600 0 CET} + {-654130800 7200 1 CEST} + {-639010800 3600 0 CET} + {-397094400 7200 1 CEST} + {-386812800 3600 0 CET} + {-371088000 7200 1 CEST} + {-355363200 3600 0 CET} + {-334195200 7200 1 CEST} + {-323308800 3600 0 CET} + {-307584000 7200 1 CEST} + {-291859200 3600 0 CET} + {-271296000 7200 1 CEST} + {-260409600 3600 0 CET} + {-239846400 7200 1 CEST} + {-228960000 3600 0 CET} + {-208396800 7200 1 CEST} + {-197510400 3600 0 CET} + {-176342400 7200 1 CEST} + {-166060800 3600 0 CET} + {220921200 3600 0 CET} + {228873600 7200 1 CEST} + {243993600 3600 0 CET} + {260323200 7200 1 CEST} + {276048000 3600 0 CET} + {291772800 7200 1 CEST} + {307497600 3600 0 CET} + {323827200 7200 1 CEST} + {338947200 3600 0 CET} + {354672000 7200 1 CEST} + {370396800 3600 0 CET} + {386121600 7200 1 CEST} + {401846400 3600 0 CET} + {417571200 7200 1 CEST} + {433296000 3600 0 CET} + {449020800 7200 1 CEST} + {465350400 3600 0 CET} + {481075200 7200 1 CEST} + {496800000 3600 0 CET} + {512524800 7200 1 CEST} + {528249600 3600 0 CET} + {543974400 7200 1 CEST} + {559699200 3600 0 CET} + {567990000 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/Europe/Zagreb b/library/tzdata/Europe/Zagreb index 3626797..46319a4 100644 --- a/library/tzdata/Europe/Zagreb +++ b/library/tzdata/Europe/Zagreb @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Belgrade)]} { - LoadTimeZoneFile Europe/Belgrade -} -set TZData(:Europe/Zagreb) $TZData(:Europe/Belgrade) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Belgrade)]} { + LoadTimeZoneFile Europe/Belgrade +} +set TZData(:Europe/Zagreb) $TZData(:Europe/Belgrade) diff --git a/library/tzdata/Europe/Zaporozhye b/library/tzdata/Europe/Zaporozhye index cb275cf..01418cd 100644 --- a/library/tzdata/Europe/Zaporozhye +++ b/library/tzdata/Europe/Zaporozhye @@ -1,252 +1,252 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Zaporozhye) { - {-9223372036854775808 8440 0 LMT} - {-2840149240 8400 0 CUT} - {-1441160400 7200 0 EET} - {-1247536800 10800 0 MSK} - {-894769200 3600 0 CET} - {-857257200 3600 0 CET} - {-844556400 7200 1 CEST} - {-828226800 3600 0 CET} - {-826419600 10800 0 MSD} - {354920400 14400 1 MSD} - {370728000 10800 0 MSK} - {386456400 14400 1 MSD} - {402264000 10800 0 MSK} - {417992400 14400 1 MSD} - {433800000 10800 0 MSK} - {449614800 14400 1 MSD} - {465346800 10800 0 MSK} - {481071600 14400 1 MSD} - {496796400 10800 0 MSK} - {512521200 14400 1 MSD} - {528246000 10800 0 MSK} - {543970800 14400 1 MSD} - {559695600 10800 0 MSK} - {575420400 14400 1 MSD} - {591145200 10800 0 MSK} - {606870000 14400 1 MSD} - {622594800 10800 0 MSK} - {638319600 14400 1 MSD} - {654649200 10800 0 MSK} - {670374000 10800 0 EEST} - {686091600 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {788911200 7200 0 EET} - {796179600 10800 1 EEST} - {811904400 7200 0 EET} - {828234000 10800 1 EEST} - {846378000 7200 0 EET} - {859683600 10800 1 EEST} - {877827600 7200 0 EET} - {891133200 10800 1 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1477789200 7200 0 EET} - {1490490000 10800 1 EEST} - {1509238800 7200 0 EET} - {1521939600 10800 1 EEST} - {1540688400 7200 0 EET} - {1553994000 10800 1 EEST} - {1572138000 7200 0 EET} - {1585443600 10800 1 EEST} - {1603587600 7200 0 EET} - {1616893200 10800 1 EEST} - {1635642000 7200 0 EET} - {1648342800 10800 1 EEST} - {1667091600 7200 0 EET} - {1679792400 10800 1 EEST} - {1698541200 7200 0 EET} - {1711846800 10800 1 EEST} - {1729990800 7200 0 EET} - {1743296400 10800 1 EEST} - {1761440400 7200 0 EET} - {1774746000 10800 1 EEST} - {1792890000 7200 0 EET} - {1806195600 10800 1 EEST} - {1824944400 7200 0 EET} - {1837645200 10800 1 EEST} - {1856394000 7200 0 EET} - {1869094800 10800 1 EEST} - {1887843600 7200 0 EET} - {1901149200 10800 1 EEST} - {1919293200 7200 0 EET} - {1932598800 10800 1 EEST} - {1950742800 7200 0 EET} - {1964048400 10800 1 EEST} - {1982797200 7200 0 EET} - {1995498000 10800 1 EEST} - {2014246800 7200 0 EET} - {2026947600 10800 1 EEST} - {2045696400 7200 0 EET} - {2058397200 10800 1 EEST} - {2077146000 7200 0 EET} - {2090451600 10800 1 EEST} - {2108595600 7200 0 EET} - {2121901200 10800 1 EEST} - {2140045200 7200 0 EET} - {2153350800 10800 1 EEST} - {2172099600 7200 0 EET} - {2184800400 10800 1 EEST} - {2203549200 7200 0 EET} - {2216250000 10800 1 EEST} - {2234998800 7200 0 EET} - {2248304400 10800 1 EEST} - {2266448400 7200 0 EET} - {2279754000 10800 1 EEST} - {2297898000 7200 0 EET} - {2311203600 10800 1 EEST} - {2329347600 7200 0 EET} - {2342653200 10800 1 EEST} - {2361402000 7200 0 EET} - {2374102800 10800 1 EEST} - {2392851600 7200 0 EET} - {2405552400 10800 1 EEST} - {2424301200 7200 0 EET} - {2437606800 10800 1 EEST} - {2455750800 7200 0 EET} - {2469056400 10800 1 EEST} - {2487200400 7200 0 EET} - {2500506000 10800 1 EEST} - {2519254800 7200 0 EET} - {2531955600 10800 1 EEST} - {2550704400 7200 0 EET} - {2563405200 10800 1 EEST} - {2582154000 7200 0 EET} - {2595459600 10800 1 EEST} - {2613603600 7200 0 EET} - {2626909200 10800 1 EEST} - {2645053200 7200 0 EET} - {2658358800 10800 1 EEST} - {2676502800 7200 0 EET} - {2689808400 10800 1 EEST} - {2708557200 7200 0 EET} - {2721258000 10800 1 EEST} - {2740006800 7200 0 EET} - {2752707600 10800 1 EEST} - {2771456400 7200 0 EET} - {2784762000 10800 1 EEST} - {2802906000 7200 0 EET} - {2816211600 10800 1 EEST} - {2834355600 7200 0 EET} - {2847661200 10800 1 EEST} - {2866410000 7200 0 EET} - {2879110800 10800 1 EEST} - {2897859600 7200 0 EET} - {2910560400 10800 1 EEST} - {2929309200 7200 0 EET} - {2942010000 10800 1 EEST} - {2960758800 7200 0 EET} - {2974064400 10800 1 EEST} - {2992208400 7200 0 EET} - {3005514000 10800 1 EEST} - {3023658000 7200 0 EET} - {3036963600 10800 1 EEST} - {3055712400 7200 0 EET} - {3068413200 10800 1 EEST} - {3087162000 7200 0 EET} - {3099862800 10800 1 EEST} - {3118611600 7200 0 EET} - {3131917200 10800 1 EEST} - {3150061200 7200 0 EET} - {3163366800 10800 1 EEST} - {3181510800 7200 0 EET} - {3194816400 10800 1 EEST} - {3212960400 7200 0 EET} - {3226266000 10800 1 EEST} - {3245014800 7200 0 EET} - {3257715600 10800 1 EEST} - {3276464400 7200 0 EET} - {3289165200 10800 1 EEST} - {3307914000 7200 0 EET} - {3321219600 10800 1 EEST} - {3339363600 7200 0 EET} - {3352669200 10800 1 EEST} - {3370813200 7200 0 EET} - {3384118800 10800 1 EEST} - {3402867600 7200 0 EET} - {3415568400 10800 1 EEST} - {3434317200 7200 0 EET} - {3447018000 10800 1 EEST} - {3465766800 7200 0 EET} - {3479072400 10800 1 EEST} - {3497216400 7200 0 EET} - {3510522000 10800 1 EEST} - {3528666000 7200 0 EET} - {3541971600 10800 1 EEST} - {3560115600 7200 0 EET} - {3573421200 10800 1 EEST} - {3592170000 7200 0 EET} - {3604870800 10800 1 EEST} - {3623619600 7200 0 EET} - {3636320400 10800 1 EEST} - {3655069200 7200 0 EET} - {3668374800 10800 1 EEST} - {3686518800 7200 0 EET} - {3699824400 10800 1 EEST} - {3717968400 7200 0 EET} - {3731274000 10800 1 EEST} - {3750022800 7200 0 EET} - {3762723600 10800 1 EEST} - {3781472400 7200 0 EET} - {3794173200 10800 1 EEST} - {3812922000 7200 0 EET} - {3825622800 10800 1 EEST} - {3844371600 7200 0 EET} - {3857677200 10800 1 EEST} - {3875821200 7200 0 EET} - {3889126800 10800 1 EEST} - {3907270800 7200 0 EET} - {3920576400 10800 1 EEST} - {3939325200 7200 0 EET} - {3952026000 10800 1 EEST} - {3970774800 7200 0 EET} - {3983475600 10800 1 EEST} - {4002224400 7200 0 EET} - {4015530000 10800 1 EEST} - {4033674000 7200 0 EET} - {4046979600 10800 1 EEST} - {4065123600 7200 0 EET} - {4078429200 10800 1 EEST} - {4096573200 7200 0 EET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Zaporozhye) { + {-9223372036854775808 8440 0 LMT} + {-2840149240 8400 0 CUT} + {-1441160400 7200 0 EET} + {-1247536800 10800 0 MSK} + {-894769200 3600 0 CET} + {-857257200 3600 0 CET} + {-844556400 7200 1 CEST} + {-828226800 3600 0 CET} + {-826419600 10800 0 MSD} + {354920400 14400 1 MSD} + {370728000 10800 0 MSK} + {386456400 14400 1 MSD} + {402264000 10800 0 MSK} + {417992400 14400 1 MSD} + {433800000 10800 0 MSK} + {449614800 14400 1 MSD} + {465346800 10800 0 MSK} + {481071600 14400 1 MSD} + {496796400 10800 0 MSK} + {512521200 14400 1 MSD} + {528246000 10800 0 MSK} + {543970800 14400 1 MSD} + {559695600 10800 0 MSK} + {575420400 14400 1 MSD} + {591145200 10800 0 MSK} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 10800 0 EEST} + {686091600 7200 0 EET} + {701820000 10800 1 EEST} + {717541200 7200 0 EET} + {733269600 10800 1 EEST} + {748990800 7200 0 EET} + {764719200 10800 1 EEST} + {780440400 7200 0 EET} + {788911200 7200 0 EET} + {796179600 10800 1 EEST} + {811904400 7200 0 EET} + {828234000 10800 1 EEST} + {846378000 7200 0 EET} + {859683600 10800 1 EEST} + {877827600 7200 0 EET} + {891133200 10800 1 EEST} + {909277200 7200 0 EET} + {922582800 10800 1 EEST} + {941331600 7200 0 EET} + {954032400 10800 1 EEST} + {972781200 7200 0 EET} + {985482000 10800 1 EEST} + {1004230800 7200 0 EET} + {1017536400 10800 1 EEST} + {1035680400 7200 0 EET} + {1048986000 10800 1 EEST} + {1067130000 7200 0 EET} + {1080435600 10800 1 EEST} + {1099184400 7200 0 EET} + {1111885200 10800 1 EEST} + {1130634000 7200 0 EET} + {1143334800 10800 1 EEST} + {1162083600 7200 0 EET} + {1174784400 10800 1 EEST} + {1193533200 7200 0 EET} + {1206838800 10800 1 EEST} + {1224982800 7200 0 EET} + {1238288400 10800 1 EEST} + {1256432400 7200 0 EET} + {1269738000 10800 1 EEST} + {1288486800 7200 0 EET} + {1301187600 10800 1 EEST} + {1319936400 7200 0 EET} + {1332637200 10800 1 EEST} + {1351386000 7200 0 EET} + {1364691600 10800 1 EEST} + {1382835600 7200 0 EET} + {1396141200 10800 1 EEST} + {1414285200 7200 0 EET} + {1427590800 10800 1 EEST} + {1445734800 7200 0 EET} + {1459040400 10800 1 EEST} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} +} diff --git a/library/tzdata/Europe/Zurich b/library/tzdata/Europe/Zurich index efd6c41..33831c3 100644 --- a/library/tzdata/Europe/Zurich +++ b/library/tzdata/Europe/Zurich @@ -1,250 +1,250 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Zurich) { - {-9223372036854775808 2048 0 LMT} - {-3827954048 1784 0 BMT} - {-2385246584 3600 0 CET} - {-904435200 7200 1 CEST} - {-891129600 3600 0 CET} - {-872985600 7200 1 CEST} - {-859680000 3600 0 CET} - {347151600 3600 0 CET} - {354675600 7200 1 CEST} - {370400400 3600 0 CET} - {386125200 7200 1 CEST} - {401850000 3600 0 CET} - {417574800 7200 1 CEST} - {433299600 3600 0 CET} - {449024400 7200 1 CEST} - {465354000 3600 0 CET} - {481078800 7200 1 CEST} - {496803600 3600 0 CET} - {512528400 7200 1 CEST} - {528253200 3600 0 CET} - {543978000 7200 1 CEST} - {559702800 3600 0 CET} - {575427600 7200 1 CEST} - {591152400 3600 0 CET} - {606877200 7200 1 CEST} - {622602000 3600 0 CET} - {638326800 7200 1 CEST} - {654656400 3600 0 CET} - {670381200 7200 1 CEST} - {686106000 3600 0 CET} - {701830800 7200 1 CEST} - {717555600 3600 0 CET} - {733280400 7200 1 CEST} - {749005200 3600 0 CET} - {764730000 7200 1 CEST} - {780454800 3600 0 CET} - {796179600 7200 1 CEST} - {811904400 3600 0 CET} - {828234000 7200 1 CEST} - {846378000 3600 0 CET} - {859683600 7200 1 CEST} - {877827600 3600 0 CET} - {891133200 7200 1 CEST} - {909277200 3600 0 CET} - {922582800 7200 1 CEST} - {941331600 3600 0 CET} - {954032400 7200 1 CEST} - {972781200 3600 0 CET} - {985482000 7200 1 CEST} - {1004230800 3600 0 CET} - {1017536400 7200 1 CEST} - {1035680400 3600 0 CET} - {1048986000 7200 1 CEST} - {1067130000 3600 0 CET} - {1080435600 7200 1 CEST} - {1099184400 3600 0 CET} - {1111885200 7200 1 CEST} - {1130634000 3600 0 CET} - {1143334800 7200 1 CEST} - {1162083600 3600 0 CET} - {1174784400 7200 1 CEST} - {1193533200 3600 0 CET} - {1206838800 7200 1 CEST} - {1224982800 3600 0 CET} - {1238288400 7200 1 CEST} - {1256432400 3600 0 CET} - {1269738000 7200 1 CEST} - {1288486800 3600 0 CET} - {1301187600 7200 1 CEST} - {1319936400 3600 0 CET} - {1332637200 7200 1 CEST} - {1351386000 3600 0 CET} - {1364691600 7200 1 CEST} - {1382835600 3600 0 CET} - {1396141200 7200 1 CEST} - {1414285200 3600 0 CET} - {1427590800 7200 1 CEST} - {1445734800 3600 0 CET} - {1459040400 7200 1 CEST} - {1477789200 3600 0 CET} - {1490490000 7200 1 CEST} - {1509238800 3600 0 CET} - {1521939600 7200 1 CEST} - {1540688400 3600 0 CET} - {1553994000 7200 1 CEST} - {1572138000 3600 0 CET} - {1585443600 7200 1 CEST} - {1603587600 3600 0 CET} - {1616893200 7200 1 CEST} - {1635642000 3600 0 CET} - {1648342800 7200 1 CEST} - {1667091600 3600 0 CET} - {1679792400 7200 1 CEST} - {1698541200 3600 0 CET} - {1711846800 7200 1 CEST} - {1729990800 3600 0 CET} - {1743296400 7200 1 CEST} - {1761440400 3600 0 CET} - {1774746000 7200 1 CEST} - {1792890000 3600 0 CET} - {1806195600 7200 1 CEST} - {1824944400 3600 0 CET} - {1837645200 7200 1 CEST} - {1856394000 3600 0 CET} - {1869094800 7200 1 CEST} - {1887843600 3600 0 CET} - {1901149200 7200 1 CEST} - {1919293200 3600 0 CET} - {1932598800 7200 1 CEST} - {1950742800 3600 0 CET} - {1964048400 7200 1 CEST} - {1982797200 3600 0 CET} - {1995498000 7200 1 CEST} - {2014246800 3600 0 CET} - {2026947600 7200 1 CEST} - {2045696400 3600 0 CET} - {2058397200 7200 1 CEST} - {2077146000 3600 0 CET} - {2090451600 7200 1 CEST} - {2108595600 3600 0 CET} - {2121901200 7200 1 CEST} - {2140045200 3600 0 CET} - {2153350800 7200 1 CEST} - {2172099600 3600 0 CET} - {2184800400 7200 1 CEST} - {2203549200 3600 0 CET} - {2216250000 7200 1 CEST} - {2234998800 3600 0 CET} - {2248304400 7200 1 CEST} - {2266448400 3600 0 CET} - {2279754000 7200 1 CEST} - {2297898000 3600 0 CET} - {2311203600 7200 1 CEST} - {2329347600 3600 0 CET} - {2342653200 7200 1 CEST} - {2361402000 3600 0 CET} - {2374102800 7200 1 CEST} - {2392851600 3600 0 CET} - {2405552400 7200 1 CEST} - {2424301200 3600 0 CET} - {2437606800 7200 1 CEST} - {2455750800 3600 0 CET} - {2469056400 7200 1 CEST} - {2487200400 3600 0 CET} - {2500506000 7200 1 CEST} - {2519254800 3600 0 CET} - {2531955600 7200 1 CEST} - {2550704400 3600 0 CET} - {2563405200 7200 1 CEST} - {2582154000 3600 0 CET} - {2595459600 7200 1 CEST} - {2613603600 3600 0 CET} - {2626909200 7200 1 CEST} - {2645053200 3600 0 CET} - {2658358800 7200 1 CEST} - {2676502800 3600 0 CET} - {2689808400 7200 1 CEST} - {2708557200 3600 0 CET} - {2721258000 7200 1 CEST} - {2740006800 3600 0 CET} - {2752707600 7200 1 CEST} - {2771456400 3600 0 CET} - {2784762000 7200 1 CEST} - {2802906000 3600 0 CET} - {2816211600 7200 1 CEST} - {2834355600 3600 0 CET} - {2847661200 7200 1 CEST} - {2866410000 3600 0 CET} - {2879110800 7200 1 CEST} - {2897859600 3600 0 CET} - {2910560400 7200 1 CEST} - {2929309200 3600 0 CET} - {2942010000 7200 1 CEST} - {2960758800 3600 0 CET} - {2974064400 7200 1 CEST} - {2992208400 3600 0 CET} - {3005514000 7200 1 CEST} - {3023658000 3600 0 CET} - {3036963600 7200 1 CEST} - {3055712400 3600 0 CET} - {3068413200 7200 1 CEST} - {3087162000 3600 0 CET} - {3099862800 7200 1 CEST} - {3118611600 3600 0 CET} - {3131917200 7200 1 CEST} - {3150061200 3600 0 CET} - {3163366800 7200 1 CEST} - {3181510800 3600 0 CET} - {3194816400 7200 1 CEST} - {3212960400 3600 0 CET} - {3226266000 7200 1 CEST} - {3245014800 3600 0 CET} - {3257715600 7200 1 CEST} - {3276464400 3600 0 CET} - {3289165200 7200 1 CEST} - {3307914000 3600 0 CET} - {3321219600 7200 1 CEST} - {3339363600 3600 0 CET} - {3352669200 7200 1 CEST} - {3370813200 3600 0 CET} - {3384118800 7200 1 CEST} - {3402867600 3600 0 CET} - {3415568400 7200 1 CEST} - {3434317200 3600 0 CET} - {3447018000 7200 1 CEST} - {3465766800 3600 0 CET} - {3479072400 7200 1 CEST} - {3497216400 3600 0 CET} - {3510522000 7200 1 CEST} - {3528666000 3600 0 CET} - {3541971600 7200 1 CEST} - {3560115600 3600 0 CET} - {3573421200 7200 1 CEST} - {3592170000 3600 0 CET} - {3604870800 7200 1 CEST} - {3623619600 3600 0 CET} - {3636320400 7200 1 CEST} - {3655069200 3600 0 CET} - {3668374800 7200 1 CEST} - {3686518800 3600 0 CET} - {3699824400 7200 1 CEST} - {3717968400 3600 0 CET} - {3731274000 7200 1 CEST} - {3750022800 3600 0 CET} - {3762723600 7200 1 CEST} - {3781472400 3600 0 CET} - {3794173200 7200 1 CEST} - {3812922000 3600 0 CET} - {3825622800 7200 1 CEST} - {3844371600 3600 0 CET} - {3857677200 7200 1 CEST} - {3875821200 3600 0 CET} - {3889126800 7200 1 CEST} - {3907270800 3600 0 CET} - {3920576400 7200 1 CEST} - {3939325200 3600 0 CET} - {3952026000 7200 1 CEST} - {3970774800 3600 0 CET} - {3983475600 7200 1 CEST} - {4002224400 3600 0 CET} - {4015530000 7200 1 CEST} - {4033674000 3600 0 CET} - {4046979600 7200 1 CEST} - {4065123600 3600 0 CET} - {4078429200 7200 1 CEST} - {4096573200 3600 0 CET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Zurich) { + {-9223372036854775808 2048 0 LMT} + {-3827954048 1784 0 BMT} + {-2385246584 3600 0 CET} + {-904435200 7200 1 CEST} + {-891129600 3600 0 CET} + {-872985600 7200 1 CEST} + {-859680000 3600 0 CET} + {347151600 3600 0 CET} + {354675600 7200 1 CEST} + {370400400 3600 0 CET} + {386125200 7200 1 CEST} + {401850000 3600 0 CET} + {417574800 7200 1 CEST} + {433299600 3600 0 CET} + {449024400 7200 1 CEST} + {465354000 3600 0 CET} + {481078800 7200 1 CEST} + {496803600 3600 0 CET} + {512528400 7200 1 CEST} + {528253200 3600 0 CET} + {543978000 7200 1 CEST} + {559702800 3600 0 CET} + {575427600 7200 1 CEST} + {591152400 3600 0 CET} + {606877200 7200 1 CEST} + {622602000 3600 0 CET} + {638326800 7200 1 CEST} + {654656400 3600 0 CET} + {670381200 7200 1 CEST} + {686106000 3600 0 CET} + {701830800 7200 1 CEST} + {717555600 3600 0 CET} + {733280400 7200 1 CEST} + {749005200 3600 0 CET} + {764730000 7200 1 CEST} + {780454800 3600 0 CET} + {796179600 7200 1 CEST} + {811904400 3600 0 CET} + {828234000 7200 1 CEST} + {846378000 3600 0 CET} + {859683600 7200 1 CEST} + {877827600 3600 0 CET} + {891133200 7200 1 CEST} + {909277200 3600 0 CET} + {922582800 7200 1 CEST} + {941331600 3600 0 CET} + {954032400 7200 1 CEST} + {972781200 3600 0 CET} + {985482000 7200 1 CEST} + {1004230800 3600 0 CET} + {1017536400 7200 1 CEST} + {1035680400 3600 0 CET} + {1048986000 7200 1 CEST} + {1067130000 3600 0 CET} + {1080435600 7200 1 CEST} + {1099184400 3600 0 CET} + {1111885200 7200 1 CEST} + {1130634000 3600 0 CET} + {1143334800 7200 1 CEST} + {1162083600 3600 0 CET} + {1174784400 7200 1 CEST} + {1193533200 3600 0 CET} + {1206838800 7200 1 CEST} + {1224982800 3600 0 CET} + {1238288400 7200 1 CEST} + {1256432400 3600 0 CET} + {1269738000 7200 1 CEST} + {1288486800 3600 0 CET} + {1301187600 7200 1 CEST} + {1319936400 3600 0 CET} + {1332637200 7200 1 CEST} + {1351386000 3600 0 CET} + {1364691600 7200 1 CEST} + {1382835600 3600 0 CET} + {1396141200 7200 1 CEST} + {1414285200 3600 0 CET} + {1427590800 7200 1 CEST} + {1445734800 3600 0 CET} + {1459040400 7200 1 CEST} + {1477789200 3600 0 CET} + {1490490000 7200 1 CEST} + {1509238800 3600 0 CET} + {1521939600 7200 1 CEST} + {1540688400 3600 0 CET} + {1553994000 7200 1 CEST} + {1572138000 3600 0 CET} + {1585443600 7200 1 CEST} + {1603587600 3600 0 CET} + {1616893200 7200 1 CEST} + {1635642000 3600 0 CET} + {1648342800 7200 1 CEST} + {1667091600 3600 0 CET} + {1679792400 7200 1 CEST} + {1698541200 3600 0 CET} + {1711846800 7200 1 CEST} + {1729990800 3600 0 CET} + {1743296400 7200 1 CEST} + {1761440400 3600 0 CET} + {1774746000 7200 1 CEST} + {1792890000 3600 0 CET} + {1806195600 7200 1 CEST} + {1824944400 3600 0 CET} + {1837645200 7200 1 CEST} + {1856394000 3600 0 CET} + {1869094800 7200 1 CEST} + {1887843600 3600 0 CET} + {1901149200 7200 1 CEST} + {1919293200 3600 0 CET} + {1932598800 7200 1 CEST} + {1950742800 3600 0 CET} + {1964048400 7200 1 CEST} + {1982797200 3600 0 CET} + {1995498000 7200 1 CEST} + {2014246800 3600 0 CET} + {2026947600 7200 1 CEST} + {2045696400 3600 0 CET} + {2058397200 7200 1 CEST} + {2077146000 3600 0 CET} + {2090451600 7200 1 CEST} + {2108595600 3600 0 CET} + {2121901200 7200 1 CEST} + {2140045200 3600 0 CET} + {2153350800 7200 1 CEST} + {2172099600 3600 0 CET} + {2184800400 7200 1 CEST} + {2203549200 3600 0 CET} + {2216250000 7200 1 CEST} + {2234998800 3600 0 CET} + {2248304400 7200 1 CEST} + {2266448400 3600 0 CET} + {2279754000 7200 1 CEST} + {2297898000 3600 0 CET} + {2311203600 7200 1 CEST} + {2329347600 3600 0 CET} + {2342653200 7200 1 CEST} + {2361402000 3600 0 CET} + {2374102800 7200 1 CEST} + {2392851600 3600 0 CET} + {2405552400 7200 1 CEST} + {2424301200 3600 0 CET} + {2437606800 7200 1 CEST} + {2455750800 3600 0 CET} + {2469056400 7200 1 CEST} + {2487200400 3600 0 CET} + {2500506000 7200 1 CEST} + {2519254800 3600 0 CET} + {2531955600 7200 1 CEST} + {2550704400 3600 0 CET} + {2563405200 7200 1 CEST} + {2582154000 3600 0 CET} + {2595459600 7200 1 CEST} + {2613603600 3600 0 CET} + {2626909200 7200 1 CEST} + {2645053200 3600 0 CET} + {2658358800 7200 1 CEST} + {2676502800 3600 0 CET} + {2689808400 7200 1 CEST} + {2708557200 3600 0 CET} + {2721258000 7200 1 CEST} + {2740006800 3600 0 CET} + {2752707600 7200 1 CEST} + {2771456400 3600 0 CET} + {2784762000 7200 1 CEST} + {2802906000 3600 0 CET} + {2816211600 7200 1 CEST} + {2834355600 3600 0 CET} + {2847661200 7200 1 CEST} + {2866410000 3600 0 CET} + {2879110800 7200 1 CEST} + {2897859600 3600 0 CET} + {2910560400 7200 1 CEST} + {2929309200 3600 0 CET} + {2942010000 7200 1 CEST} + {2960758800 3600 0 CET} + {2974064400 7200 1 CEST} + {2992208400 3600 0 CET} + {3005514000 7200 1 CEST} + {3023658000 3600 0 CET} + {3036963600 7200 1 CEST} + {3055712400 3600 0 CET} + {3068413200 7200 1 CEST} + {3087162000 3600 0 CET} + {3099862800 7200 1 CEST} + {3118611600 3600 0 CET} + {3131917200 7200 1 CEST} + {3150061200 3600 0 CET} + {3163366800 7200 1 CEST} + {3181510800 3600 0 CET} + {3194816400 7200 1 CEST} + {3212960400 3600 0 CET} + {3226266000 7200 1 CEST} + {3245014800 3600 0 CET} + {3257715600 7200 1 CEST} + {3276464400 3600 0 CET} + {3289165200 7200 1 CEST} + {3307914000 3600 0 CET} + {3321219600 7200 1 CEST} + {3339363600 3600 0 CET} + {3352669200 7200 1 CEST} + {3370813200 3600 0 CET} + {3384118800 7200 1 CEST} + {3402867600 3600 0 CET} + {3415568400 7200 1 CEST} + {3434317200 3600 0 CET} + {3447018000 7200 1 CEST} + {3465766800 3600 0 CET} + {3479072400 7200 1 CEST} + {3497216400 3600 0 CET} + {3510522000 7200 1 CEST} + {3528666000 3600 0 CET} + {3541971600 7200 1 CEST} + {3560115600 3600 0 CET} + {3573421200 7200 1 CEST} + {3592170000 3600 0 CET} + {3604870800 7200 1 CEST} + {3623619600 3600 0 CET} + {3636320400 7200 1 CEST} + {3655069200 3600 0 CET} + {3668374800 7200 1 CEST} + {3686518800 3600 0 CET} + {3699824400 7200 1 CEST} + {3717968400 3600 0 CET} + {3731274000 7200 1 CEST} + {3750022800 3600 0 CET} + {3762723600 7200 1 CEST} + {3781472400 3600 0 CET} + {3794173200 7200 1 CEST} + {3812922000 3600 0 CET} + {3825622800 7200 1 CEST} + {3844371600 3600 0 CET} + {3857677200 7200 1 CEST} + {3875821200 3600 0 CET} + {3889126800 7200 1 CEST} + {3907270800 3600 0 CET} + {3920576400 7200 1 CEST} + {3939325200 3600 0 CET} + {3952026000 7200 1 CEST} + {3970774800 3600 0 CET} + {3983475600 7200 1 CEST} + {4002224400 3600 0 CET} + {4015530000 7200 1 CEST} + {4033674000 3600 0 CET} + {4046979600 7200 1 CEST} + {4065123600 3600 0 CET} + {4078429200 7200 1 CEST} + {4096573200 3600 0 CET} +} diff --git a/library/tzdata/GB b/library/tzdata/GB index 96c42ae..72d77ee 100644 --- a/library/tzdata/GB +++ b/library/tzdata/GB @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:GB) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:GB) $TZData(:Europe/London) diff --git a/library/tzdata/GB-Eire b/library/tzdata/GB-Eire index 38f7a95..1622417 100644 --- a/library/tzdata/GB-Eire +++ b/library/tzdata/GB-Eire @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/London)]} { - LoadTimeZoneFile Europe/London -} -set TZData(:GB-Eire) $TZData(:Europe/London) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/London)]} { + LoadTimeZoneFile Europe/London +} +set TZData(:GB-Eire) $TZData(:Europe/London) diff --git a/library/tzdata/GMT b/library/tzdata/GMT index 6f6874a..4258564 100644 --- a/library/tzdata/GMT +++ b/library/tzdata/GMT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:GMT) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:GMT) $TZData(:Etc/GMT) diff --git a/library/tzdata/GMT+0 b/library/tzdata/GMT+0 index 08bdf7c..a1e8126 100644 --- a/library/tzdata/GMT+0 +++ b/library/tzdata/GMT+0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:GMT+0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:GMT+0) $TZData(:Etc/GMT) diff --git a/library/tzdata/GMT-0 b/library/tzdata/GMT-0 index 9240d42..04ccafe 100644 --- a/library/tzdata/GMT-0 +++ b/library/tzdata/GMT-0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:GMT-0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:GMT-0) $TZData(:Etc/GMT) diff --git a/library/tzdata/GMT0 b/library/tzdata/GMT0 index 80f6d32..92e95a3 100644 --- a/library/tzdata/GMT0 +++ b/library/tzdata/GMT0 @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:GMT0) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:GMT0) $TZData(:Etc/GMT) diff --git a/library/tzdata/Greenwich b/library/tzdata/Greenwich index 2d18a88..6115233 100644 --- a/library/tzdata/Greenwich +++ b/library/tzdata/Greenwich @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/GMT)]} { - LoadTimeZoneFile Etc/GMT -} -set TZData(:Greenwich) $TZData(:Etc/GMT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/GMT)]} { + LoadTimeZoneFile Etc/GMT +} +set TZData(:Greenwich) $TZData(:Etc/GMT) diff --git a/library/tzdata/HST b/library/tzdata/HST index 4ac7487..fea7f14 100644 --- a/library/tzdata/HST +++ b/library/tzdata/HST @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:HST) { - {-9223372036854775808 -36000 0 HST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:HST) { + {-9223372036854775808 -36000 0 HST} +} diff --git a/library/tzdata/Hongkong b/library/tzdata/Hongkong index aa3bbbd..f9d4dac 100644 --- a/library/tzdata/Hongkong +++ b/library/tzdata/Hongkong @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Hong_Kong)]} { - LoadTimeZoneFile Asia/Hong_Kong -} -set TZData(:Hongkong) $TZData(:Asia/Hong_Kong) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Hong_Kong)]} { + LoadTimeZoneFile Asia/Hong_Kong +} +set TZData(:Hongkong) $TZData(:Asia/Hong_Kong) diff --git a/library/tzdata/Iceland b/library/tzdata/Iceland index 58ad2cf..eb3f3eb 100644 --- a/library/tzdata/Iceland +++ b/library/tzdata/Iceland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Atlantic/Reykjavik)]} { - LoadTimeZoneFile Atlantic/Reykjavik -} -set TZData(:Iceland) $TZData(:Atlantic/Reykjavik) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Atlantic/Reykjavik)]} { + LoadTimeZoneFile Atlantic/Reykjavik +} +set TZData(:Iceland) $TZData(:Atlantic/Reykjavik) diff --git a/library/tzdata/Indian/Antananarivo b/library/tzdata/Indian/Antananarivo index 99dbc34..217715e 100644 --- a/library/tzdata/Indian/Antananarivo +++ b/library/tzdata/Indian/Antananarivo @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Antananarivo) { - {-9223372036854775808 11404 0 LMT} - {-1846293004 10800 0 EAT} - {-499924800 14400 1 EAST} - {-492062400 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Antananarivo) { + {-9223372036854775808 11404 0 LMT} + {-1846293004 10800 0 EAT} + {-499924800 14400 1 EAST} + {-492062400 10800 0 EAT} +} diff --git a/library/tzdata/Indian/Chagos b/library/tzdata/Indian/Chagos index 222d217..a5cec61 100644 --- a/library/tzdata/Indian/Chagos +++ b/library/tzdata/Indian/Chagos @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Chagos) { - {-9223372036854775808 17380 0 LMT} - {-1988167780 18000 0 IOT} - {820436400 21600 0 IOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Chagos) { + {-9223372036854775808 17380 0 LMT} + {-1988167780 18000 0 IOT} + {820436400 21600 0 IOT} +} diff --git a/library/tzdata/Indian/Christmas b/library/tzdata/Indian/Christmas index 920ffa8..c36e973 100644 --- a/library/tzdata/Indian/Christmas +++ b/library/tzdata/Indian/Christmas @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Christmas) { - {-9223372036854775808 25372 0 LMT} - {-2364102172 25200 0 CXT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Christmas) { + {-9223372036854775808 25372 0 LMT} + {-2364102172 25200 0 CXT} +} diff --git a/library/tzdata/Indian/Cocos b/library/tzdata/Indian/Cocos index 0619eea..a63ae68 100644 --- a/library/tzdata/Indian/Cocos +++ b/library/tzdata/Indian/Cocos @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Cocos) { - {-9223372036854775808 23260 0 LMT} - {-2209012060 23400 0 CCT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Cocos) { + {-9223372036854775808 23260 0 LMT} + {-2209012060 23400 0 CCT} +} diff --git a/library/tzdata/Indian/Comoro b/library/tzdata/Indian/Comoro index bbc5f37..0b3c33a 100644 --- a/library/tzdata/Indian/Comoro +++ b/library/tzdata/Indian/Comoro @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Comoro) { - {-9223372036854775808 10384 0 LMT} - {-1846291984 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Comoro) { + {-9223372036854775808 10384 0 LMT} + {-1846291984 10800 0 EAT} +} diff --git a/library/tzdata/Indian/Kerguelen b/library/tzdata/Indian/Kerguelen index 23d30e2..b41b85a 100644 --- a/library/tzdata/Indian/Kerguelen +++ b/library/tzdata/Indian/Kerguelen @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Kerguelen) { - {-9223372036854775808 0 0 zzz} - {-631152000 18000 0 TFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Kerguelen) { + {-9223372036854775808 0 0 zzz} + {-631152000 18000 0 TFT} +} diff --git a/library/tzdata/Indian/Mahe b/library/tzdata/Indian/Mahe index 7602932..c88a24b 100644 --- a/library/tzdata/Indian/Mahe +++ b/library/tzdata/Indian/Mahe @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Mahe) { - {-9223372036854775808 13308 0 LMT} - {-2006653308 14400 0 SCT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Mahe) { + {-9223372036854775808 13308 0 LMT} + {-2006653308 14400 0 SCT} +} diff --git a/library/tzdata/Indian/Maldives b/library/tzdata/Indian/Maldives index 2bcc8cf..2c2c739 100644 --- a/library/tzdata/Indian/Maldives +++ b/library/tzdata/Indian/Maldives @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Maldives) { - {-9223372036854775808 17640 0 LMT} - {-2840158440 17640 0 MMT} - {-315636840 18000 0 MVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Maldives) { + {-9223372036854775808 17640 0 LMT} + {-2840158440 17640 0 MMT} + {-315636840 18000 0 MVT} +} diff --git a/library/tzdata/Indian/Mauritius b/library/tzdata/Indian/Mauritius index 89c3c10..69fe8fe 100644 --- a/library/tzdata/Indian/Mauritius +++ b/library/tzdata/Indian/Mauritius @@ -1,191 +1,191 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Mauritius) { - {-9223372036854775808 13800 0 LMT} - {-1988164200 14400 0 MUT} - {403041600 18000 1 MUST} - {417034800 14400 0 MUT} - {1224972000 18000 1 MUST} - {1238277600 14400 0 MUT} - {1256421600 18000 1 MUST} - {1269727200 14400 0 MUT} - {1288476000 18000 1 MUST} - {1301176800 14400 0 MUT} - {1319925600 18000 1 MUST} - {1332626400 14400 0 MUT} - {1351375200 18000 1 MUST} - {1364680800 14400 0 MUT} - {1382824800 18000 1 MUST} - {1396130400 14400 0 MUT} - {1414274400 18000 1 MUST} - {1427580000 14400 0 MUT} - {1445724000 18000 1 MUST} - {1459029600 14400 0 MUT} - {1477778400 18000 1 MUST} - {1490479200 14400 0 MUT} - {1509228000 18000 1 MUST} - {1521928800 14400 0 MUT} - {1540677600 18000 1 MUST} - {1553983200 14400 0 MUT} - {1572127200 18000 1 MUST} - {1585432800 14400 0 MUT} - {1603576800 18000 1 MUST} - {1616882400 14400 0 MUT} - {1635631200 18000 1 MUST} - {1648332000 14400 0 MUT} - {1667080800 18000 1 MUST} - {1679781600 14400 0 MUT} - {1698530400 18000 1 MUST} - {1711836000 14400 0 MUT} - {1729980000 18000 1 MUST} - {1743285600 14400 0 MUT} - {1761429600 18000 1 MUST} - {1774735200 14400 0 MUT} - {1792879200 18000 1 MUST} - {1806184800 14400 0 MUT} - {1824933600 18000 1 MUST} - {1837634400 14400 0 MUT} - {1856383200 18000 1 MUST} - {1869084000 14400 0 MUT} - {1887832800 18000 1 MUST} - {1901138400 14400 0 MUT} - {1919282400 18000 1 MUST} - {1932588000 14400 0 MUT} - {1950732000 18000 1 MUST} - {1964037600 14400 0 MUT} - {1982786400 18000 1 MUST} - {1995487200 14400 0 MUT} - {2014236000 18000 1 MUST} - {2026936800 14400 0 MUT} - {2045685600 18000 1 MUST} - {2058386400 14400 0 MUT} - {2077135200 18000 1 MUST} - {2090440800 14400 0 MUT} - {2108584800 18000 1 MUST} - {2121890400 14400 0 MUT} - {2140034400 18000 1 MUST} - {2153340000 14400 0 MUT} - {2172088800 18000 1 MUST} - {2184789600 14400 0 MUT} - {2203538400 18000 1 MUST} - {2216239200 14400 0 MUT} - {2234988000 18000 1 MUST} - {2248293600 14400 0 MUT} - {2266437600 18000 1 MUST} - {2279743200 14400 0 MUT} - {2297887200 18000 1 MUST} - {2311192800 14400 0 MUT} - {2329336800 18000 1 MUST} - {2342642400 14400 0 MUT} - {2361391200 18000 1 MUST} - {2374092000 14400 0 MUT} - {2392840800 18000 1 MUST} - {2405541600 14400 0 MUT} - {2424290400 18000 1 MUST} - {2437596000 14400 0 MUT} - {2455740000 18000 1 MUST} - {2469045600 14400 0 MUT} - {2487189600 18000 1 MUST} - {2500495200 14400 0 MUT} - {2519244000 18000 1 MUST} - {2531944800 14400 0 MUT} - {2550693600 18000 1 MUST} - {2563394400 14400 0 MUT} - {2582143200 18000 1 MUST} - {2595448800 14400 0 MUT} - {2613592800 18000 1 MUST} - {2626898400 14400 0 MUT} - {2645042400 18000 1 MUST} - {2658348000 14400 0 MUT} - {2676492000 18000 1 MUST} - {2689797600 14400 0 MUT} - {2708546400 18000 1 MUST} - {2721247200 14400 0 MUT} - {2739996000 18000 1 MUST} - {2752696800 14400 0 MUT} - {2771445600 18000 1 MUST} - {2784751200 14400 0 MUT} - {2802895200 18000 1 MUST} - {2816200800 14400 0 MUT} - {2834344800 18000 1 MUST} - {2847650400 14400 0 MUT} - {2866399200 18000 1 MUST} - {2879100000 14400 0 MUT} - {2897848800 18000 1 MUST} - {2910549600 14400 0 MUT} - {2929298400 18000 1 MUST} - {2941999200 14400 0 MUT} - {2960748000 18000 1 MUST} - {2974053600 14400 0 MUT} - {2992197600 18000 1 MUST} - {3005503200 14400 0 MUT} - {3023647200 18000 1 MUST} - {3036952800 14400 0 MUT} - {3055701600 18000 1 MUST} - {3068402400 14400 0 MUT} - {3087151200 18000 1 MUST} - {3099852000 14400 0 MUT} - {3118600800 18000 1 MUST} - {3131906400 14400 0 MUT} - {3150050400 18000 1 MUST} - {3163356000 14400 0 MUT} - {3181500000 18000 1 MUST} - {3194805600 14400 0 MUT} - {3212949600 18000 1 MUST} - {3226255200 14400 0 MUT} - {3245004000 18000 1 MUST} - {3257704800 14400 0 MUT} - {3276453600 18000 1 MUST} - {3289154400 14400 0 MUT} - {3307903200 18000 1 MUST} - {3321208800 14400 0 MUT} - {3339352800 18000 1 MUST} - {3352658400 14400 0 MUT} - {3370802400 18000 1 MUST} - {3384108000 14400 0 MUT} - {3402856800 18000 1 MUST} - {3415557600 14400 0 MUT} - {3434306400 18000 1 MUST} - {3447007200 14400 0 MUT} - {3465756000 18000 1 MUST} - {3479061600 14400 0 MUT} - {3497205600 18000 1 MUST} - {3510511200 14400 0 MUT} - {3528655200 18000 1 MUST} - {3541960800 14400 0 MUT} - {3560104800 18000 1 MUST} - {3573410400 14400 0 MUT} - {3592159200 18000 1 MUST} - {3604860000 14400 0 MUT} - {3623608800 18000 1 MUST} - {3636309600 14400 0 MUT} - {3655058400 18000 1 MUST} - {3668364000 14400 0 MUT} - {3686508000 18000 1 MUST} - {3699813600 14400 0 MUT} - {3717957600 18000 1 MUST} - {3731263200 14400 0 MUT} - {3750012000 18000 1 MUST} - {3762712800 14400 0 MUT} - {3781461600 18000 1 MUST} - {3794162400 14400 0 MUT} - {3812911200 18000 1 MUST} - {3825612000 14400 0 MUT} - {3844360800 18000 1 MUST} - {3857666400 14400 0 MUT} - {3875810400 18000 1 MUST} - {3889116000 14400 0 MUT} - {3907260000 18000 1 MUST} - {3920565600 14400 0 MUT} - {3939314400 18000 1 MUST} - {3952015200 14400 0 MUT} - {3970764000 18000 1 MUST} - {3983464800 14400 0 MUT} - {4002213600 18000 1 MUST} - {4015519200 14400 0 MUT} - {4033663200 18000 1 MUST} - {4046968800 14400 0 MUT} - {4065112800 18000 1 MUST} - {4078418400 14400 0 MUT} - {4096562400 18000 1 MUST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Mauritius) { + {-9223372036854775808 13800 0 LMT} + {-1988164200 14400 0 MUT} + {403041600 18000 1 MUST} + {417034800 14400 0 MUT} + {1224972000 18000 1 MUST} + {1238277600 14400 0 MUT} + {1256421600 18000 1 MUST} + {1269727200 14400 0 MUT} + {1288476000 18000 1 MUST} + {1301176800 14400 0 MUT} + {1319925600 18000 1 MUST} + {1332626400 14400 0 MUT} + {1351375200 18000 1 MUST} + {1364680800 14400 0 MUT} + {1382824800 18000 1 MUST} + {1396130400 14400 0 MUT} + {1414274400 18000 1 MUST} + {1427580000 14400 0 MUT} + {1445724000 18000 1 MUST} + {1459029600 14400 0 MUT} + {1477778400 18000 1 MUST} + {1490479200 14400 0 MUT} + {1509228000 18000 1 MUST} + {1521928800 14400 0 MUT} + {1540677600 18000 1 MUST} + {1553983200 14400 0 MUT} + {1572127200 18000 1 MUST} + {1585432800 14400 0 MUT} + {1603576800 18000 1 MUST} + {1616882400 14400 0 MUT} + {1635631200 18000 1 MUST} + {1648332000 14400 0 MUT} + {1667080800 18000 1 MUST} + {1679781600 14400 0 MUT} + {1698530400 18000 1 MUST} + {1711836000 14400 0 MUT} + {1729980000 18000 1 MUST} + {1743285600 14400 0 MUT} + {1761429600 18000 1 MUST} + {1774735200 14400 0 MUT} + {1792879200 18000 1 MUST} + {1806184800 14400 0 MUT} + {1824933600 18000 1 MUST} + {1837634400 14400 0 MUT} + {1856383200 18000 1 MUST} + {1869084000 14400 0 MUT} + {1887832800 18000 1 MUST} + {1901138400 14400 0 MUT} + {1919282400 18000 1 MUST} + {1932588000 14400 0 MUT} + {1950732000 18000 1 MUST} + {1964037600 14400 0 MUT} + {1982786400 18000 1 MUST} + {1995487200 14400 0 MUT} + {2014236000 18000 1 MUST} + {2026936800 14400 0 MUT} + {2045685600 18000 1 MUST} + {2058386400 14400 0 MUT} + {2077135200 18000 1 MUST} + {2090440800 14400 0 MUT} + {2108584800 18000 1 MUST} + {2121890400 14400 0 MUT} + {2140034400 18000 1 MUST} + {2153340000 14400 0 MUT} + {2172088800 18000 1 MUST} + {2184789600 14400 0 MUT} + {2203538400 18000 1 MUST} + {2216239200 14400 0 MUT} + {2234988000 18000 1 MUST} + {2248293600 14400 0 MUT} + {2266437600 18000 1 MUST} + {2279743200 14400 0 MUT} + {2297887200 18000 1 MUST} + {2311192800 14400 0 MUT} + {2329336800 18000 1 MUST} + {2342642400 14400 0 MUT} + {2361391200 18000 1 MUST} + {2374092000 14400 0 MUT} + {2392840800 18000 1 MUST} + {2405541600 14400 0 MUT} + {2424290400 18000 1 MUST} + {2437596000 14400 0 MUT} + {2455740000 18000 1 MUST} + {2469045600 14400 0 MUT} + {2487189600 18000 1 MUST} + {2500495200 14400 0 MUT} + {2519244000 18000 1 MUST} + {2531944800 14400 0 MUT} + {2550693600 18000 1 MUST} + {2563394400 14400 0 MUT} + {2582143200 18000 1 MUST} + {2595448800 14400 0 MUT} + {2613592800 18000 1 MUST} + {2626898400 14400 0 MUT} + {2645042400 18000 1 MUST} + {2658348000 14400 0 MUT} + {2676492000 18000 1 MUST} + {2689797600 14400 0 MUT} + {2708546400 18000 1 MUST} + {2721247200 14400 0 MUT} + {2739996000 18000 1 MUST} + {2752696800 14400 0 MUT} + {2771445600 18000 1 MUST} + {2784751200 14400 0 MUT} + {2802895200 18000 1 MUST} + {2816200800 14400 0 MUT} + {2834344800 18000 1 MUST} + {2847650400 14400 0 MUT} + {2866399200 18000 1 MUST} + {2879100000 14400 0 MUT} + {2897848800 18000 1 MUST} + {2910549600 14400 0 MUT} + {2929298400 18000 1 MUST} + {2941999200 14400 0 MUT} + {2960748000 18000 1 MUST} + {2974053600 14400 0 MUT} + {2992197600 18000 1 MUST} + {3005503200 14400 0 MUT} + {3023647200 18000 1 MUST} + {3036952800 14400 0 MUT} + {3055701600 18000 1 MUST} + {3068402400 14400 0 MUT} + {3087151200 18000 1 MUST} + {3099852000 14400 0 MUT} + {3118600800 18000 1 MUST} + {3131906400 14400 0 MUT} + {3150050400 18000 1 MUST} + {3163356000 14400 0 MUT} + {3181500000 18000 1 MUST} + {3194805600 14400 0 MUT} + {3212949600 18000 1 MUST} + {3226255200 14400 0 MUT} + {3245004000 18000 1 MUST} + {3257704800 14400 0 MUT} + {3276453600 18000 1 MUST} + {3289154400 14400 0 MUT} + {3307903200 18000 1 MUST} + {3321208800 14400 0 MUT} + {3339352800 18000 1 MUST} + {3352658400 14400 0 MUT} + {3370802400 18000 1 MUST} + {3384108000 14400 0 MUT} + {3402856800 18000 1 MUST} + {3415557600 14400 0 MUT} + {3434306400 18000 1 MUST} + {3447007200 14400 0 MUT} + {3465756000 18000 1 MUST} + {3479061600 14400 0 MUT} + {3497205600 18000 1 MUST} + {3510511200 14400 0 MUT} + {3528655200 18000 1 MUST} + {3541960800 14400 0 MUT} + {3560104800 18000 1 MUST} + {3573410400 14400 0 MUT} + {3592159200 18000 1 MUST} + {3604860000 14400 0 MUT} + {3623608800 18000 1 MUST} + {3636309600 14400 0 MUT} + {3655058400 18000 1 MUST} + {3668364000 14400 0 MUT} + {3686508000 18000 1 MUST} + {3699813600 14400 0 MUT} + {3717957600 18000 1 MUST} + {3731263200 14400 0 MUT} + {3750012000 18000 1 MUST} + {3762712800 14400 0 MUT} + {3781461600 18000 1 MUST} + {3794162400 14400 0 MUT} + {3812911200 18000 1 MUST} + {3825612000 14400 0 MUT} + {3844360800 18000 1 MUST} + {3857666400 14400 0 MUT} + {3875810400 18000 1 MUST} + {3889116000 14400 0 MUT} + {3907260000 18000 1 MUST} + {3920565600 14400 0 MUT} + {3939314400 18000 1 MUST} + {3952015200 14400 0 MUT} + {3970764000 18000 1 MUST} + {3983464800 14400 0 MUT} + {4002213600 18000 1 MUST} + {4015519200 14400 0 MUT} + {4033663200 18000 1 MUST} + {4046968800 14400 0 MUT} + {4065112800 18000 1 MUST} + {4078418400 14400 0 MUT} + {4096562400 18000 1 MUST} +} diff --git a/library/tzdata/Indian/Mayotte b/library/tzdata/Indian/Mayotte index e93ddcd..0fe5f56 100644 --- a/library/tzdata/Indian/Mayotte +++ b/library/tzdata/Indian/Mayotte @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Mayotte) { - {-9223372036854775808 10856 0 LMT} - {-1846292456 10800 0 EAT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Mayotte) { + {-9223372036854775808 10856 0 LMT} + {-1846292456 10800 0 EAT} +} diff --git a/library/tzdata/Indian/Reunion b/library/tzdata/Indian/Reunion index c2e90ef..de2dd60 100644 --- a/library/tzdata/Indian/Reunion +++ b/library/tzdata/Indian/Reunion @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Indian/Reunion) { - {-9223372036854775808 13312 0 LMT} - {-1848886912 14400 0 RET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Indian/Reunion) { + {-9223372036854775808 13312 0 LMT} + {-1848886912 14400 0 RET} +} diff --git a/library/tzdata/Iran b/library/tzdata/Iran index 40e9642..e200b4d 100644 --- a/library/tzdata/Iran +++ b/library/tzdata/Iran @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Tehran)]} { - LoadTimeZoneFile Asia/Tehran -} -set TZData(:Iran) $TZData(:Asia/Tehran) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Tehran)]} { + LoadTimeZoneFile Asia/Tehran +} +set TZData(:Iran) $TZData(:Asia/Tehran) diff --git a/library/tzdata/Israel b/library/tzdata/Israel index a3b6cbb..af521f5 100644 --- a/library/tzdata/Israel +++ b/library/tzdata/Israel @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Jerusalem)]} { - LoadTimeZoneFile Asia/Jerusalem -} -set TZData(:Israel) $TZData(:Asia/Jerusalem) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Jerusalem)]} { + LoadTimeZoneFile Asia/Jerusalem +} +set TZData(:Israel) $TZData(:Asia/Jerusalem) diff --git a/library/tzdata/Jamaica b/library/tzdata/Jamaica index 348bb7f..ddb5d45 100644 --- a/library/tzdata/Jamaica +++ b/library/tzdata/Jamaica @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Jamaica)]} { - LoadTimeZoneFile America/Jamaica -} -set TZData(:Jamaica) $TZData(:America/Jamaica) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Jamaica)]} { + LoadTimeZoneFile America/Jamaica +} +set TZData(:Jamaica) $TZData(:America/Jamaica) diff --git a/library/tzdata/Japan b/library/tzdata/Japan index 481d6e4..428a79f 100644 --- a/library/tzdata/Japan +++ b/library/tzdata/Japan @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Tokyo)]} { - LoadTimeZoneFile Asia/Tokyo -} -set TZData(:Japan) $TZData(:Asia/Tokyo) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Tokyo)]} { + LoadTimeZoneFile Asia/Tokyo +} +set TZData(:Japan) $TZData(:Asia/Tokyo) diff --git a/library/tzdata/Kwajalein b/library/tzdata/Kwajalein index 4093cfe..586db6d 100644 --- a/library/tzdata/Kwajalein +++ b/library/tzdata/Kwajalein @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Kwajalein)]} { - LoadTimeZoneFile Pacific/Kwajalein -} -set TZData(:Kwajalein) $TZData(:Pacific/Kwajalein) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Kwajalein)]} { + LoadTimeZoneFile Pacific/Kwajalein +} +set TZData(:Kwajalein) $TZData(:Pacific/Kwajalein) diff --git a/library/tzdata/Libya b/library/tzdata/Libya index 7bef1c1..6cd77e1 100644 --- a/library/tzdata/Libya +++ b/library/tzdata/Libya @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Africa/Tripoli)]} { - LoadTimeZoneFile Africa/Tripoli -} -set TZData(:Libya) $TZData(:Africa/Tripoli) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Africa/Tripoli)]} { + LoadTimeZoneFile Africa/Tripoli +} +set TZData(:Libya) $TZData(:Africa/Tripoli) diff --git a/library/tzdata/MET b/library/tzdata/MET index 38c02cc..8789c97 100644 --- a/library/tzdata/MET +++ b/library/tzdata/MET @@ -1,265 +1,265 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:MET) { - {-9223372036854775808 3600 0 MET} - {-1693706400 7200 1 MEST} - {-1680483600 3600 0 MET} - {-1663455600 7200 1 MEST} - {-1650150000 3600 0 MET} - {-1632006000 7200 1 MEST} - {-1618700400 3600 0 MET} - {-938905200 7200 1 MEST} - {-857257200 3600 0 MET} - {-844556400 7200 1 MEST} - {-828226800 3600 0 MET} - {-812502000 7200 1 MEST} - {-796777200 3600 0 MET} - {-781052400 7200 1 MEST} - {-766623600 3600 0 MET} - {228877200 7200 1 MEST} - {243997200 3600 0 MET} - {260326800 7200 1 MEST} - {276051600 3600 0 MET} - {291776400 7200 1 MEST} - {307501200 3600 0 MET} - {323830800 7200 1 MEST} - {338950800 3600 0 MET} - {354675600 7200 1 MEST} - {370400400 3600 0 MET} - {386125200 7200 1 MEST} - {401850000 3600 0 MET} - {417574800 7200 1 MEST} - {433299600 3600 0 MET} - {449024400 7200 1 MEST} - {465354000 3600 0 MET} - {481078800 7200 1 MEST} - {496803600 3600 0 MET} - {512528400 7200 1 MEST} - {528253200 3600 0 MET} - {543978000 7200 1 MEST} - {559702800 3600 0 MET} - {575427600 7200 1 MEST} - {591152400 3600 0 MET} - {606877200 7200 1 MEST} - {622602000 3600 0 MET} - {638326800 7200 1 MEST} - {654656400 3600 0 MET} - {670381200 7200 1 MEST} - {686106000 3600 0 MET} - {701830800 7200 1 MEST} - {717555600 3600 0 MET} - {733280400 7200 1 MEST} - {749005200 3600 0 MET} - {764730000 7200 1 MEST} - {780454800 3600 0 MET} - {796179600 7200 1 MEST} - {811904400 3600 0 MET} - {828234000 7200 1 MEST} - {846378000 3600 0 MET} - {859683600 7200 1 MEST} - {877827600 3600 0 MET} - {891133200 7200 1 MEST} - {909277200 3600 0 MET} - {922582800 7200 1 MEST} - {941331600 3600 0 MET} - {954032400 7200 1 MEST} - {972781200 3600 0 MET} - {985482000 7200 1 MEST} - {1004230800 3600 0 MET} - {1017536400 7200 1 MEST} - {1035680400 3600 0 MET} - {1048986000 7200 1 MEST} - {1067130000 3600 0 MET} - {1080435600 7200 1 MEST} - {1099184400 3600 0 MET} - {1111885200 7200 1 MEST} - {1130634000 3600 0 MET} - {1143334800 7200 1 MEST} - {1162083600 3600 0 MET} - {1174784400 7200 1 MEST} - {1193533200 3600 0 MET} - {1206838800 7200 1 MEST} - {1224982800 3600 0 MET} - {1238288400 7200 1 MEST} - {1256432400 3600 0 MET} - {1269738000 7200 1 MEST} - {1288486800 3600 0 MET} - {1301187600 7200 1 MEST} - {1319936400 3600 0 MET} - {1332637200 7200 1 MEST} - {1351386000 3600 0 MET} - {1364691600 7200 1 MEST} - {1382835600 3600 0 MET} - {1396141200 7200 1 MEST} - {1414285200 3600 0 MET} - {1427590800 7200 1 MEST} - {1445734800 3600 0 MET} - {1459040400 7200 1 MEST} - {1477789200 3600 0 MET} - {1490490000 7200 1 MEST} - {1509238800 3600 0 MET} - {1521939600 7200 1 MEST} - {1540688400 3600 0 MET} - {1553994000 7200 1 MEST} - {1572138000 3600 0 MET} - {1585443600 7200 1 MEST} - {1603587600 3600 0 MET} - {1616893200 7200 1 MEST} - {1635642000 3600 0 MET} - {1648342800 7200 1 MEST} - {1667091600 3600 0 MET} - {1679792400 7200 1 MEST} - {1698541200 3600 0 MET} - {1711846800 7200 1 MEST} - {1729990800 3600 0 MET} - {1743296400 7200 1 MEST} - {1761440400 3600 0 MET} - {1774746000 7200 1 MEST} - {1792890000 3600 0 MET} - {1806195600 7200 1 MEST} - {1824944400 3600 0 MET} - {1837645200 7200 1 MEST} - {1856394000 3600 0 MET} - {1869094800 7200 1 MEST} - {1887843600 3600 0 MET} - {1901149200 7200 1 MEST} - {1919293200 3600 0 MET} - {1932598800 7200 1 MEST} - {1950742800 3600 0 MET} - {1964048400 7200 1 MEST} - {1982797200 3600 0 MET} - {1995498000 7200 1 MEST} - {2014246800 3600 0 MET} - {2026947600 7200 1 MEST} - {2045696400 3600 0 MET} - {2058397200 7200 1 MEST} - {2077146000 3600 0 MET} - {2090451600 7200 1 MEST} - {2108595600 3600 0 MET} - {2121901200 7200 1 MEST} - {2140045200 3600 0 MET} - {2153350800 7200 1 MEST} - {2172099600 3600 0 MET} - {2184800400 7200 1 MEST} - {2203549200 3600 0 MET} - {2216250000 7200 1 MEST} - {2234998800 3600 0 MET} - {2248304400 7200 1 MEST} - {2266448400 3600 0 MET} - {2279754000 7200 1 MEST} - {2297898000 3600 0 MET} - {2311203600 7200 1 MEST} - {2329347600 3600 0 MET} - {2342653200 7200 1 MEST} - {2361402000 3600 0 MET} - {2374102800 7200 1 MEST} - {2392851600 3600 0 MET} - {2405552400 7200 1 MEST} - {2424301200 3600 0 MET} - {2437606800 7200 1 MEST} - {2455750800 3600 0 MET} - {2469056400 7200 1 MEST} - {2487200400 3600 0 MET} - {2500506000 7200 1 MEST} - {2519254800 3600 0 MET} - {2531955600 7200 1 MEST} - {2550704400 3600 0 MET} - {2563405200 7200 1 MEST} - {2582154000 3600 0 MET} - {2595459600 7200 1 MEST} - {2613603600 3600 0 MET} - {2626909200 7200 1 MEST} - {2645053200 3600 0 MET} - {2658358800 7200 1 MEST} - {2676502800 3600 0 MET} - {2689808400 7200 1 MEST} - {2708557200 3600 0 MET} - {2721258000 7200 1 MEST} - {2740006800 3600 0 MET} - {2752707600 7200 1 MEST} - {2771456400 3600 0 MET} - {2784762000 7200 1 MEST} - {2802906000 3600 0 MET} - {2816211600 7200 1 MEST} - {2834355600 3600 0 MET} - {2847661200 7200 1 MEST} - {2866410000 3600 0 MET} - {2879110800 7200 1 MEST} - {2897859600 3600 0 MET} - {2910560400 7200 1 MEST} - {2929309200 3600 0 MET} - {2942010000 7200 1 MEST} - {2960758800 3600 0 MET} - {2974064400 7200 1 MEST} - {2992208400 3600 0 MET} - {3005514000 7200 1 MEST} - {3023658000 3600 0 MET} - {3036963600 7200 1 MEST} - {3055712400 3600 0 MET} - {3068413200 7200 1 MEST} - {3087162000 3600 0 MET} - {3099862800 7200 1 MEST} - {3118611600 3600 0 MET} - {3131917200 7200 1 MEST} - {3150061200 3600 0 MET} - {3163366800 7200 1 MEST} - {3181510800 3600 0 MET} - {3194816400 7200 1 MEST} - {3212960400 3600 0 MET} - {3226266000 7200 1 MEST} - {3245014800 3600 0 MET} - {3257715600 7200 1 MEST} - {3276464400 3600 0 MET} - {3289165200 7200 1 MEST} - {3307914000 3600 0 MET} - {3321219600 7200 1 MEST} - {3339363600 3600 0 MET} - {3352669200 7200 1 MEST} - {3370813200 3600 0 MET} - {3384118800 7200 1 MEST} - {3402867600 3600 0 MET} - {3415568400 7200 1 MEST} - {3434317200 3600 0 MET} - {3447018000 7200 1 MEST} - {3465766800 3600 0 MET} - {3479072400 7200 1 MEST} - {3497216400 3600 0 MET} - {3510522000 7200 1 MEST} - {3528666000 3600 0 MET} - {3541971600 7200 1 MEST} - {3560115600 3600 0 MET} - {3573421200 7200 1 MEST} - {3592170000 3600 0 MET} - {3604870800 7200 1 MEST} - {3623619600 3600 0 MET} - {3636320400 7200 1 MEST} - {3655069200 3600 0 MET} - {3668374800 7200 1 MEST} - {3686518800 3600 0 MET} - {3699824400 7200 1 MEST} - {3717968400 3600 0 MET} - {3731274000 7200 1 MEST} - {3750022800 3600 0 MET} - {3762723600 7200 1 MEST} - {3781472400 3600 0 MET} - {3794173200 7200 1 MEST} - {3812922000 3600 0 MET} - {3825622800 7200 1 MEST} - {3844371600 3600 0 MET} - {3857677200 7200 1 MEST} - {3875821200 3600 0 MET} - {3889126800 7200 1 MEST} - {3907270800 3600 0 MET} - {3920576400 7200 1 MEST} - {3939325200 3600 0 MET} - {3952026000 7200 1 MEST} - {3970774800 3600 0 MET} - {3983475600 7200 1 MEST} - {4002224400 3600 0 MET} - {4015530000 7200 1 MEST} - {4033674000 3600 0 MET} - {4046979600 7200 1 MEST} - {4065123600 3600 0 MET} - {4078429200 7200 1 MEST} - {4096573200 3600 0 MET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:MET) { + {-9223372036854775808 3600 0 MET} + {-1693706400 7200 1 MEST} + {-1680483600 3600 0 MET} + {-1663455600 7200 1 MEST} + {-1650150000 3600 0 MET} + {-1632006000 7200 1 MEST} + {-1618700400 3600 0 MET} + {-938905200 7200 1 MEST} + {-857257200 3600 0 MET} + {-844556400 7200 1 MEST} + {-828226800 3600 0 MET} + {-812502000 7200 1 MEST} + {-796777200 3600 0 MET} + {-781052400 7200 1 MEST} + {-766623600 3600 0 MET} + {228877200 7200 1 MEST} + {243997200 3600 0 MET} + {260326800 7200 1 MEST} + {276051600 3600 0 MET} + {291776400 7200 1 MEST} + {307501200 3600 0 MET} + {323830800 7200 1 MEST} + {338950800 3600 0 MET} + {354675600 7200 1 MEST} + {370400400 3600 0 MET} + {386125200 7200 1 MEST} + {401850000 3600 0 MET} + {417574800 7200 1 MEST} + {433299600 3600 0 MET} + {449024400 7200 1 MEST} + {465354000 3600 0 MET} + {481078800 7200 1 MEST} + {496803600 3600 0 MET} + {512528400 7200 1 MEST} + {528253200 3600 0 MET} + {543978000 7200 1 MEST} + {559702800 3600 0 MET} + {575427600 7200 1 MEST} + {591152400 3600 0 MET} + {606877200 7200 1 MEST} + {622602000 3600 0 MET} + {638326800 7200 1 MEST} + {654656400 3600 0 MET} + {670381200 7200 1 MEST} + {686106000 3600 0 MET} + {701830800 7200 1 MEST} + {717555600 3600 0 MET} + {733280400 7200 1 MEST} + {749005200 3600 0 MET} + {764730000 7200 1 MEST} + {780454800 3600 0 MET} + {796179600 7200 1 MEST} + {811904400 3600 0 MET} + {828234000 7200 1 MEST} + {846378000 3600 0 MET} + {859683600 7200 1 MEST} + {877827600 3600 0 MET} + {891133200 7200 1 MEST} + {909277200 3600 0 MET} + {922582800 7200 1 MEST} + {941331600 3600 0 MET} + {954032400 7200 1 MEST} + {972781200 3600 0 MET} + {985482000 7200 1 MEST} + {1004230800 3600 0 MET} + {1017536400 7200 1 MEST} + {1035680400 3600 0 MET} + {1048986000 7200 1 MEST} + {1067130000 3600 0 MET} + {1080435600 7200 1 MEST} + {1099184400 3600 0 MET} + {1111885200 7200 1 MEST} + {1130634000 3600 0 MET} + {1143334800 7200 1 MEST} + {1162083600 3600 0 MET} + {1174784400 7200 1 MEST} + {1193533200 3600 0 MET} + {1206838800 7200 1 MEST} + {1224982800 3600 0 MET} + {1238288400 7200 1 MEST} + {1256432400 3600 0 MET} + {1269738000 7200 1 MEST} + {1288486800 3600 0 MET} + {1301187600 7200 1 MEST} + {1319936400 3600 0 MET} + {1332637200 7200 1 MEST} + {1351386000 3600 0 MET} + {1364691600 7200 1 MEST} + {1382835600 3600 0 MET} + {1396141200 7200 1 MEST} + {1414285200 3600 0 MET} + {1427590800 7200 1 MEST} + {1445734800 3600 0 MET} + {1459040400 7200 1 MEST} + {1477789200 3600 0 MET} + {1490490000 7200 1 MEST} + {1509238800 3600 0 MET} + {1521939600 7200 1 MEST} + {1540688400 3600 0 MET} + {1553994000 7200 1 MEST} + {1572138000 3600 0 MET} + {1585443600 7200 1 MEST} + {1603587600 3600 0 MET} + {1616893200 7200 1 MEST} + {1635642000 3600 0 MET} + {1648342800 7200 1 MEST} + {1667091600 3600 0 MET} + {1679792400 7200 1 MEST} + {1698541200 3600 0 MET} + {1711846800 7200 1 MEST} + {1729990800 3600 0 MET} + {1743296400 7200 1 MEST} + {1761440400 3600 0 MET} + {1774746000 7200 1 MEST} + {1792890000 3600 0 MET} + {1806195600 7200 1 MEST} + {1824944400 3600 0 MET} + {1837645200 7200 1 MEST} + {1856394000 3600 0 MET} + {1869094800 7200 1 MEST} + {1887843600 3600 0 MET} + {1901149200 7200 1 MEST} + {1919293200 3600 0 MET} + {1932598800 7200 1 MEST} + {1950742800 3600 0 MET} + {1964048400 7200 1 MEST} + {1982797200 3600 0 MET} + {1995498000 7200 1 MEST} + {2014246800 3600 0 MET} + {2026947600 7200 1 MEST} + {2045696400 3600 0 MET} + {2058397200 7200 1 MEST} + {2077146000 3600 0 MET} + {2090451600 7200 1 MEST} + {2108595600 3600 0 MET} + {2121901200 7200 1 MEST} + {2140045200 3600 0 MET} + {2153350800 7200 1 MEST} + {2172099600 3600 0 MET} + {2184800400 7200 1 MEST} + {2203549200 3600 0 MET} + {2216250000 7200 1 MEST} + {2234998800 3600 0 MET} + {2248304400 7200 1 MEST} + {2266448400 3600 0 MET} + {2279754000 7200 1 MEST} + {2297898000 3600 0 MET} + {2311203600 7200 1 MEST} + {2329347600 3600 0 MET} + {2342653200 7200 1 MEST} + {2361402000 3600 0 MET} + {2374102800 7200 1 MEST} + {2392851600 3600 0 MET} + {2405552400 7200 1 MEST} + {2424301200 3600 0 MET} + {2437606800 7200 1 MEST} + {2455750800 3600 0 MET} + {2469056400 7200 1 MEST} + {2487200400 3600 0 MET} + {2500506000 7200 1 MEST} + {2519254800 3600 0 MET} + {2531955600 7200 1 MEST} + {2550704400 3600 0 MET} + {2563405200 7200 1 MEST} + {2582154000 3600 0 MET} + {2595459600 7200 1 MEST} + {2613603600 3600 0 MET} + {2626909200 7200 1 MEST} + {2645053200 3600 0 MET} + {2658358800 7200 1 MEST} + {2676502800 3600 0 MET} + {2689808400 7200 1 MEST} + {2708557200 3600 0 MET} + {2721258000 7200 1 MEST} + {2740006800 3600 0 MET} + {2752707600 7200 1 MEST} + {2771456400 3600 0 MET} + {2784762000 7200 1 MEST} + {2802906000 3600 0 MET} + {2816211600 7200 1 MEST} + {2834355600 3600 0 MET} + {2847661200 7200 1 MEST} + {2866410000 3600 0 MET} + {2879110800 7200 1 MEST} + {2897859600 3600 0 MET} + {2910560400 7200 1 MEST} + {2929309200 3600 0 MET} + {2942010000 7200 1 MEST} + {2960758800 3600 0 MET} + {2974064400 7200 1 MEST} + {2992208400 3600 0 MET} + {3005514000 7200 1 MEST} + {3023658000 3600 0 MET} + {3036963600 7200 1 MEST} + {3055712400 3600 0 MET} + {3068413200 7200 1 MEST} + {3087162000 3600 0 MET} + {3099862800 7200 1 MEST} + {3118611600 3600 0 MET} + {3131917200 7200 1 MEST} + {3150061200 3600 0 MET} + {3163366800 7200 1 MEST} + {3181510800 3600 0 MET} + {3194816400 7200 1 MEST} + {3212960400 3600 0 MET} + {3226266000 7200 1 MEST} + {3245014800 3600 0 MET} + {3257715600 7200 1 MEST} + {3276464400 3600 0 MET} + {3289165200 7200 1 MEST} + {3307914000 3600 0 MET} + {3321219600 7200 1 MEST} + {3339363600 3600 0 MET} + {3352669200 7200 1 MEST} + {3370813200 3600 0 MET} + {3384118800 7200 1 MEST} + {3402867600 3600 0 MET} + {3415568400 7200 1 MEST} + {3434317200 3600 0 MET} + {3447018000 7200 1 MEST} + {3465766800 3600 0 MET} + {3479072400 7200 1 MEST} + {3497216400 3600 0 MET} + {3510522000 7200 1 MEST} + {3528666000 3600 0 MET} + {3541971600 7200 1 MEST} + {3560115600 3600 0 MET} + {3573421200 7200 1 MEST} + {3592170000 3600 0 MET} + {3604870800 7200 1 MEST} + {3623619600 3600 0 MET} + {3636320400 7200 1 MEST} + {3655069200 3600 0 MET} + {3668374800 7200 1 MEST} + {3686518800 3600 0 MET} + {3699824400 7200 1 MEST} + {3717968400 3600 0 MET} + {3731274000 7200 1 MEST} + {3750022800 3600 0 MET} + {3762723600 7200 1 MEST} + {3781472400 3600 0 MET} + {3794173200 7200 1 MEST} + {3812922000 3600 0 MET} + {3825622800 7200 1 MEST} + {3844371600 3600 0 MET} + {3857677200 7200 1 MEST} + {3875821200 3600 0 MET} + {3889126800 7200 1 MEST} + {3907270800 3600 0 MET} + {3920576400 7200 1 MEST} + {3939325200 3600 0 MET} + {3952026000 7200 1 MEST} + {3970774800 3600 0 MET} + {3983475600 7200 1 MEST} + {4002224400 3600 0 MET} + {4015530000 7200 1 MEST} + {4033674000 3600 0 MET} + {4046979600 7200 1 MEST} + {4065123600 3600 0 MET} + {4078429200 7200 1 MEST} + {4096573200 3600 0 MET} +} diff --git a/library/tzdata/MST b/library/tzdata/MST index cb4eb8b..8c967ab 100644 --- a/library/tzdata/MST +++ b/library/tzdata/MST @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:MST) { - {-9223372036854775808 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:MST) { + {-9223372036854775808 -25200 0 MST} +} diff --git a/library/tzdata/MST7MDT b/library/tzdata/MST7MDT index 45ba6b5..ff52048 100644 --- a/library/tzdata/MST7MDT +++ b/library/tzdata/MST7MDT @@ -1,278 +1,278 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:MST7MDT) { - {-9223372036854775808 -25200 0 MST} - {-1633273200 -21600 1 MDT} - {-1615132800 -25200 0 MST} - {-1601823600 -21600 1 MDT} - {-1583683200 -25200 0 MST} - {-880210800 -21600 1 MWT} - {-769395600 -21600 1 MPT} - {-765388800 -25200 0 MST} - {-84380400 -21600 1 MDT} - {-68659200 -25200 0 MST} - {-52930800 -21600 1 MDT} - {-37209600 -25200 0 MST} - {-21481200 -21600 1 MDT} - {-5760000 -25200 0 MST} - {9968400 -21600 1 MDT} - {25689600 -25200 0 MST} - {41418000 -21600 1 MDT} - {57744000 -25200 0 MST} - {73472400 -21600 1 MDT} - {89193600 -25200 0 MST} - {104922000 -21600 1 MDT} - {120643200 -25200 0 MST} - {126694800 -21600 1 MDT} - {152092800 -25200 0 MST} - {162378000 -21600 1 MDT} - {183542400 -25200 0 MST} - {199270800 -21600 1 MDT} - {215596800 -25200 0 MST} - {230720400 -21600 1 MDT} - {247046400 -25200 0 MST} - {262774800 -21600 1 MDT} - {278496000 -25200 0 MST} - {294224400 -21600 1 MDT} - {309945600 -25200 0 MST} - {325674000 -21600 1 MDT} - {341395200 -25200 0 MST} - {357123600 -21600 1 MDT} - {372844800 -25200 0 MST} - {388573200 -21600 1 MDT} - {404899200 -25200 0 MST} - {420022800 -21600 1 MDT} - {436348800 -25200 0 MST} - {452077200 -21600 1 MDT} - {467798400 -25200 0 MST} - {483526800 -21600 1 MDT} - {499248000 -25200 0 MST} - {514976400 -21600 1 MDT} - {530697600 -25200 0 MST} - {544611600 -21600 1 MDT} - {562147200 -25200 0 MST} - {576061200 -21600 1 MDT} - {594201600 -25200 0 MST} - {607510800 -21600 1 MDT} - {625651200 -25200 0 MST} - {638960400 -21600 1 MDT} - {657100800 -25200 0 MST} - {671014800 -21600 1 MDT} - {688550400 -25200 0 MST} - {702464400 -21600 1 MDT} - {720000000 -25200 0 MST} - {733914000 -21600 1 MDT} - {752054400 -25200 0 MST} - {765363600 -21600 1 MDT} - {783504000 -25200 0 MST} - {796813200 -21600 1 MDT} - {814953600 -25200 0 MST} - {828867600 -21600 1 MDT} - {846403200 -25200 0 MST} - {860317200 -21600 1 MDT} - {877852800 -25200 0 MST} - {891766800 -21600 1 MDT} - {909302400 -25200 0 MST} - {923216400 -21600 1 MDT} - {941356800 -25200 0 MST} - {954666000 -21600 1 MDT} - {972806400 -25200 0 MST} - {986115600 -21600 1 MDT} - {1004256000 -25200 0 MST} - {1018170000 -21600 1 MDT} - {1035705600 -25200 0 MST} - {1049619600 -21600 1 MDT} - {1067155200 -25200 0 MST} - {1081069200 -21600 1 MDT} - {1099209600 -25200 0 MST} - {1112518800 -21600 1 MDT} - {1130659200 -25200 0 MST} - {1143968400 -21600 1 MDT} - {1162108800 -25200 0 MST} - {1173603600 -21600 1 MDT} - {1194163200 -25200 0 MST} - {1205053200 -21600 1 MDT} - {1225612800 -25200 0 MST} - {1236502800 -21600 1 MDT} - {1257062400 -25200 0 MST} - {1268557200 -21600 1 MDT} - {1289116800 -25200 0 MST} - {1300006800 -21600 1 MDT} - {1320566400 -25200 0 MST} - {1331456400 -21600 1 MDT} - {1352016000 -25200 0 MST} - {1362906000 -21600 1 MDT} - {1383465600 -25200 0 MST} - {1394355600 -21600 1 MDT} - {1414915200 -25200 0 MST} - {1425805200 -21600 1 MDT} - {1446364800 -25200 0 MST} - {1457859600 -21600 1 MDT} - {1478419200 -25200 0 MST} - {1489309200 -21600 1 MDT} - {1509868800 -25200 0 MST} - {1520758800 -21600 1 MDT} - {1541318400 -25200 0 MST} - {1552208400 -21600 1 MDT} - {1572768000 -25200 0 MST} - {1583658000 -21600 1 MDT} - {1604217600 -25200 0 MST} - {1615712400 -21600 1 MDT} - {1636272000 -25200 0 MST} - {1647162000 -21600 1 MDT} - {1667721600 -25200 0 MST} - {1678611600 -21600 1 MDT} - {1699171200 -25200 0 MST} - {1710061200 -21600 1 MDT} - {1730620800 -25200 0 MST} - {1741510800 -21600 1 MDT} - {1762070400 -25200 0 MST} - {1772960400 -21600 1 MDT} - {1793520000 -25200 0 MST} - {1805014800 -21600 1 MDT} - {1825574400 -25200 0 MST} - {1836464400 -21600 1 MDT} - {1857024000 -25200 0 MST} - {1867914000 -21600 1 MDT} - {1888473600 -25200 0 MST} - {1899363600 -21600 1 MDT} - {1919923200 -25200 0 MST} - {1930813200 -21600 1 MDT} - {1951372800 -25200 0 MST} - {1962867600 -21600 1 MDT} - {1983427200 -25200 0 MST} - {1994317200 -21600 1 MDT} - {2014876800 -25200 0 MST} - {2025766800 -21600 1 MDT} - {2046326400 -25200 0 MST} - {2057216400 -21600 1 MDT} - {2077776000 -25200 0 MST} - {2088666000 -21600 1 MDT} - {2109225600 -25200 0 MST} - {2120115600 -21600 1 MDT} - {2140675200 -25200 0 MST} - {2152170000 -21600 1 MDT} - {2172729600 -25200 0 MST} - {2183619600 -21600 1 MDT} - {2204179200 -25200 0 MST} - {2215069200 -21600 1 MDT} - {2235628800 -25200 0 MST} - {2246518800 -21600 1 MDT} - {2267078400 -25200 0 MST} - {2277968400 -21600 1 MDT} - {2298528000 -25200 0 MST} - {2309418000 -21600 1 MDT} - {2329977600 -25200 0 MST} - {2341472400 -21600 1 MDT} - {2362032000 -25200 0 MST} - {2372922000 -21600 1 MDT} - {2393481600 -25200 0 MST} - {2404371600 -21600 1 MDT} - {2424931200 -25200 0 MST} - {2435821200 -21600 1 MDT} - {2456380800 -25200 0 MST} - {2467270800 -21600 1 MDT} - {2487830400 -25200 0 MST} - {2499325200 -21600 1 MDT} - {2519884800 -25200 0 MST} - {2530774800 -21600 1 MDT} - {2551334400 -25200 0 MST} - {2562224400 -21600 1 MDT} - {2582784000 -25200 0 MST} - {2593674000 -21600 1 MDT} - {2614233600 -25200 0 MST} - {2625123600 -21600 1 MDT} - {2645683200 -25200 0 MST} - {2656573200 -21600 1 MDT} - {2677132800 -25200 0 MST} - {2688627600 -21600 1 MDT} - {2709187200 -25200 0 MST} - {2720077200 -21600 1 MDT} - {2740636800 -25200 0 MST} - {2751526800 -21600 1 MDT} - {2772086400 -25200 0 MST} - {2782976400 -21600 1 MDT} - {2803536000 -25200 0 MST} - {2814426000 -21600 1 MDT} - {2834985600 -25200 0 MST} - {2846480400 -21600 1 MDT} - {2867040000 -25200 0 MST} - {2877930000 -21600 1 MDT} - {2898489600 -25200 0 MST} - {2909379600 -21600 1 MDT} - {2929939200 -25200 0 MST} - {2940829200 -21600 1 MDT} - {2961388800 -25200 0 MST} - {2972278800 -21600 1 MDT} - {2992838400 -25200 0 MST} - {3003728400 -21600 1 MDT} - {3024288000 -25200 0 MST} - {3035782800 -21600 1 MDT} - {3056342400 -25200 0 MST} - {3067232400 -21600 1 MDT} - {3087792000 -25200 0 MST} - {3098682000 -21600 1 MDT} - {3119241600 -25200 0 MST} - {3130131600 -21600 1 MDT} - {3150691200 -25200 0 MST} - {3161581200 -21600 1 MDT} - {3182140800 -25200 0 MST} - {3193030800 -21600 1 MDT} - {3213590400 -25200 0 MST} - {3225085200 -21600 1 MDT} - {3245644800 -25200 0 MST} - {3256534800 -21600 1 MDT} - {3277094400 -25200 0 MST} - {3287984400 -21600 1 MDT} - {3308544000 -25200 0 MST} - {3319434000 -21600 1 MDT} - {3339993600 -25200 0 MST} - {3350883600 -21600 1 MDT} - {3371443200 -25200 0 MST} - {3382938000 -21600 1 MDT} - {3403497600 -25200 0 MST} - {3414387600 -21600 1 MDT} - {3434947200 -25200 0 MST} - {3445837200 -21600 1 MDT} - {3466396800 -25200 0 MST} - {3477286800 -21600 1 MDT} - {3497846400 -25200 0 MST} - {3508736400 -21600 1 MDT} - {3529296000 -25200 0 MST} - {3540186000 -21600 1 MDT} - {3560745600 -25200 0 MST} - {3572240400 -21600 1 MDT} - {3592800000 -25200 0 MST} - {3603690000 -21600 1 MDT} - {3624249600 -25200 0 MST} - {3635139600 -21600 1 MDT} - {3655699200 -25200 0 MST} - {3666589200 -21600 1 MDT} - {3687148800 -25200 0 MST} - {3698038800 -21600 1 MDT} - {3718598400 -25200 0 MST} - {3730093200 -21600 1 MDT} - {3750652800 -25200 0 MST} - {3761542800 -21600 1 MDT} - {3782102400 -25200 0 MST} - {3792992400 -21600 1 MDT} - {3813552000 -25200 0 MST} - {3824442000 -21600 1 MDT} - {3845001600 -25200 0 MST} - {3855891600 -21600 1 MDT} - {3876451200 -25200 0 MST} - {3887341200 -21600 1 MDT} - {3907900800 -25200 0 MST} - {3919395600 -21600 1 MDT} - {3939955200 -25200 0 MST} - {3950845200 -21600 1 MDT} - {3971404800 -25200 0 MST} - {3982294800 -21600 1 MDT} - {4002854400 -25200 0 MST} - {4013744400 -21600 1 MDT} - {4034304000 -25200 0 MST} - {4045194000 -21600 1 MDT} - {4065753600 -25200 0 MST} - {4076643600 -21600 1 MDT} - {4097203200 -25200 0 MST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:MST7MDT) { + {-9223372036854775808 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126694800 -21600 1 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/Mexico/BajaNorte b/library/tzdata/Mexico/BajaNorte index 39429f4..8f6f459 100644 --- a/library/tzdata/Mexico/BajaNorte +++ b/library/tzdata/Mexico/BajaNorte @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Tijuana)]} { - LoadTimeZoneFile America/Tijuana -} -set TZData(:Mexico/BajaNorte) $TZData(:America/Tijuana) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Tijuana)]} { + LoadTimeZoneFile America/Tijuana +} +set TZData(:Mexico/BajaNorte) $TZData(:America/Tijuana) diff --git a/library/tzdata/Mexico/BajaSur b/library/tzdata/Mexico/BajaSur index 3b708fa..6d335a1 100644 --- a/library/tzdata/Mexico/BajaSur +++ b/library/tzdata/Mexico/BajaSur @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Mazatlan)]} { - LoadTimeZoneFile America/Mazatlan -} -set TZData(:Mexico/BajaSur) $TZData(:America/Mazatlan) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Mazatlan)]} { + LoadTimeZoneFile America/Mazatlan +} +set TZData(:Mexico/BajaSur) $TZData(:America/Mazatlan) diff --git a/library/tzdata/Mexico/General b/library/tzdata/Mexico/General index fa48148..0cac92f 100644 --- a/library/tzdata/Mexico/General +++ b/library/tzdata/Mexico/General @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Mexico_City)]} { - LoadTimeZoneFile America/Mexico_City -} -set TZData(:Mexico/General) $TZData(:America/Mexico_City) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Mexico_City)]} { + LoadTimeZoneFile America/Mexico_City +} +set TZData(:Mexico/General) $TZData(:America/Mexico_City) diff --git a/library/tzdata/NZ b/library/tzdata/NZ index 7cbb4bc..36d22a7 100644 --- a/library/tzdata/NZ +++ b/library/tzdata/NZ @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Auckland)]} { - LoadTimeZoneFile Pacific/Auckland -} -set TZData(:NZ) $TZData(:Pacific/Auckland) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Auckland)]} { + LoadTimeZoneFile Pacific/Auckland +} +set TZData(:NZ) $TZData(:Pacific/Auckland) diff --git a/library/tzdata/NZ-CHAT b/library/tzdata/NZ-CHAT index 12ce757..7f7c918 100644 --- a/library/tzdata/NZ-CHAT +++ b/library/tzdata/NZ-CHAT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Chatham)]} { - LoadTimeZoneFile Pacific/Chatham -} -set TZData(:NZ-CHAT) $TZData(:Pacific/Chatham) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Chatham)]} { + LoadTimeZoneFile Pacific/Chatham +} +set TZData(:NZ-CHAT) $TZData(:Pacific/Chatham) diff --git a/library/tzdata/Navajo b/library/tzdata/Navajo index 81bb466..78cc2e2 100644 --- a/library/tzdata/Navajo +++ b/library/tzdata/Navajo @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Denver)]} { - LoadTimeZoneFile America/Denver -} -set TZData(:Navajo) $TZData(:America/Denver) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Denver)]} { + LoadTimeZoneFile America/Denver +} +set TZData(:Navajo) $TZData(:America/Denver) diff --git a/library/tzdata/PRC b/library/tzdata/PRC index 42c6af4..1d8bb7c 100644 --- a/library/tzdata/PRC +++ b/library/tzdata/PRC @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Shanghai)]} { - LoadTimeZoneFile Asia/Shanghai -} -set TZData(:PRC) $TZData(:Asia/Shanghai) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Shanghai)]} { + LoadTimeZoneFile Asia/Shanghai +} +set TZData(:PRC) $TZData(:Asia/Shanghai) diff --git a/library/tzdata/PST8PDT b/library/tzdata/PST8PDT index 632fbfe..87a94da 100644 --- a/library/tzdata/PST8PDT +++ b/library/tzdata/PST8PDT @@ -1,278 +1,278 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:PST8PDT) { - {-9223372036854775808 -28800 0 PST} - {-1633269600 -25200 1 PDT} - {-1615129200 -28800 0 PST} - {-1601820000 -25200 1 PDT} - {-1583679600 -28800 0 PST} - {-880207200 -25200 1 PWT} - {-769395600 -25200 1 PPT} - {-765385200 -28800 0 PST} - {-84376800 -25200 1 PDT} - {-68655600 -28800 0 PST} - {-52927200 -25200 1 PDT} - {-37206000 -28800 0 PST} - {-21477600 -25200 1 PDT} - {-5756400 -28800 0 PST} - {9972000 -25200 1 PDT} - {25693200 -28800 0 PST} - {41421600 -25200 1 PDT} - {57747600 -28800 0 PST} - {73476000 -25200 1 PDT} - {89197200 -28800 0 PST} - {104925600 -25200 1 PDT} - {120646800 -28800 0 PST} - {126698400 -25200 1 PDT} - {152096400 -28800 0 PST} - {162381600 -25200 1 PDT} - {183546000 -28800 0 PST} - {199274400 -25200 1 PDT} - {215600400 -28800 0 PST} - {230724000 -25200 1 PDT} - {247050000 -28800 0 PST} - {262778400 -25200 1 PDT} - {278499600 -28800 0 PST} - {294228000 -25200 1 PDT} - {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} - {357127200 -25200 1 PDT} - {372848400 -28800 0 PST} - {388576800 -25200 1 PDT} - {404902800 -28800 0 PST} - {420026400 -25200 1 PDT} - {436352400 -28800 0 PST} - {452080800 -25200 1 PDT} - {467802000 -28800 0 PST} - {483530400 -25200 1 PDT} - {499251600 -28800 0 PST} - {514980000 -25200 1 PDT} - {530701200 -28800 0 PST} - {544615200 -25200 1 PDT} - {562150800 -28800 0 PST} - {576064800 -25200 1 PDT} - {594205200 -28800 0 PST} - {607514400 -25200 1 PDT} - {625654800 -28800 0 PST} - {638964000 -25200 1 PDT} - {657104400 -28800 0 PST} - {671018400 -25200 1 PDT} - {688554000 -28800 0 PST} - {702468000 -25200 1 PDT} - {720003600 -28800 0 PST} - {733917600 -25200 1 PDT} - {752058000 -28800 0 PST} - {765367200 -25200 1 PDT} - {783507600 -28800 0 PST} - {796816800 -25200 1 PDT} - {814957200 -28800 0 PST} - {828871200 -25200 1 PDT} - {846406800 -28800 0 PST} - {860320800 -25200 1 PDT} - {877856400 -28800 0 PST} - {891770400 -25200 1 PDT} - {909306000 -28800 0 PST} - {923220000 -25200 1 PDT} - {941360400 -28800 0 PST} - {954669600 -25200 1 PDT} - {972810000 -28800 0 PST} - {986119200 -25200 1 PDT} - {1004259600 -28800 0 PST} - {1018173600 -25200 1 PDT} - {1035709200 -28800 0 PST} - {1049623200 -25200 1 PDT} - {1067158800 -28800 0 PST} - {1081072800 -25200 1 PDT} - {1099213200 -28800 0 PST} - {1112522400 -25200 1 PDT} - {1130662800 -28800 0 PST} - {1143972000 -25200 1 PDT} - {1162112400 -28800 0 PST} - {1173607200 -25200 1 PDT} - {1194166800 -28800 0 PST} - {1205056800 -25200 1 PDT} - {1225616400 -28800 0 PST} - {1236506400 -25200 1 PDT} - {1257066000 -28800 0 PST} - {1268560800 -25200 1 PDT} - {1289120400 -28800 0 PST} - {1300010400 -25200 1 PDT} - {1320570000 -28800 0 PST} - {1331460000 -25200 1 PDT} - {1352019600 -28800 0 PST} - {1362909600 -25200 1 PDT} - {1383469200 -28800 0 PST} - {1394359200 -25200 1 PDT} - {1414918800 -28800 0 PST} - {1425808800 -25200 1 PDT} - {1446368400 -28800 0 PST} - {1457863200 -25200 1 PDT} - {1478422800 -28800 0 PST} - {1489312800 -25200 1 PDT} - {1509872400 -28800 0 PST} - {1520762400 -25200 1 PDT} - {1541322000 -28800 0 PST} - {1552212000 -25200 1 PDT} - {1572771600 -28800 0 PST} - {1583661600 -25200 1 PDT} - {1604221200 -28800 0 PST} - {1615716000 -25200 1 PDT} - {1636275600 -28800 0 PST} - {1647165600 -25200 1 PDT} - {1667725200 -28800 0 PST} - {1678615200 -25200 1 PDT} - {1699174800 -28800 0 PST} - {1710064800 -25200 1 PDT} - {1730624400 -28800 0 PST} - {1741514400 -25200 1 PDT} - {1762074000 -28800 0 PST} - {1772964000 -25200 1 PDT} - {1793523600 -28800 0 PST} - {1805018400 -25200 1 PDT} - {1825578000 -28800 0 PST} - {1836468000 -25200 1 PDT} - {1857027600 -28800 0 PST} - {1867917600 -25200 1 PDT} - {1888477200 -28800 0 PST} - {1899367200 -25200 1 PDT} - {1919926800 -28800 0 PST} - {1930816800 -25200 1 PDT} - {1951376400 -28800 0 PST} - {1962871200 -25200 1 PDT} - {1983430800 -28800 0 PST} - {1994320800 -25200 1 PDT} - {2014880400 -28800 0 PST} - {2025770400 -25200 1 PDT} - {2046330000 -28800 0 PST} - {2057220000 -25200 1 PDT} - {2077779600 -28800 0 PST} - {2088669600 -25200 1 PDT} - {2109229200 -28800 0 PST} - {2120119200 -25200 1 PDT} - {2140678800 -28800 0 PST} - {2152173600 -25200 1 PDT} - {2172733200 -28800 0 PST} - {2183623200 -25200 1 PDT} - {2204182800 -28800 0 PST} - {2215072800 -25200 1 PDT} - {2235632400 -28800 0 PST} - {2246522400 -25200 1 PDT} - {2267082000 -28800 0 PST} - {2277972000 -25200 1 PDT} - {2298531600 -28800 0 PST} - {2309421600 -25200 1 PDT} - {2329981200 -28800 0 PST} - {2341476000 -25200 1 PDT} - {2362035600 -28800 0 PST} - {2372925600 -25200 1 PDT} - {2393485200 -28800 0 PST} - {2404375200 -25200 1 PDT} - {2424934800 -28800 0 PST} - {2435824800 -25200 1 PDT} - {2456384400 -28800 0 PST} - {2467274400 -25200 1 PDT} - {2487834000 -28800 0 PST} - {2499328800 -25200 1 PDT} - {2519888400 -28800 0 PST} - {2530778400 -25200 1 PDT} - {2551338000 -28800 0 PST} - {2562228000 -25200 1 PDT} - {2582787600 -28800 0 PST} - {2593677600 -25200 1 PDT} - {2614237200 -28800 0 PST} - {2625127200 -25200 1 PDT} - {2645686800 -28800 0 PST} - {2656576800 -25200 1 PDT} - {2677136400 -28800 0 PST} - {2688631200 -25200 1 PDT} - {2709190800 -28800 0 PST} - {2720080800 -25200 1 PDT} - {2740640400 -28800 0 PST} - {2751530400 -25200 1 PDT} - {2772090000 -28800 0 PST} - {2782980000 -25200 1 PDT} - {2803539600 -28800 0 PST} - {2814429600 -25200 1 PDT} - {2834989200 -28800 0 PST} - {2846484000 -25200 1 PDT} - {2867043600 -28800 0 PST} - {2877933600 -25200 1 PDT} - {2898493200 -28800 0 PST} - {2909383200 -25200 1 PDT} - {2929942800 -28800 0 PST} - {2940832800 -25200 1 PDT} - {2961392400 -28800 0 PST} - {2972282400 -25200 1 PDT} - {2992842000 -28800 0 PST} - {3003732000 -25200 1 PDT} - {3024291600 -28800 0 PST} - {3035786400 -25200 1 PDT} - {3056346000 -28800 0 PST} - {3067236000 -25200 1 PDT} - {3087795600 -28800 0 PST} - {3098685600 -25200 1 PDT} - {3119245200 -28800 0 PST} - {3130135200 -25200 1 PDT} - {3150694800 -28800 0 PST} - {3161584800 -25200 1 PDT} - {3182144400 -28800 0 PST} - {3193034400 -25200 1 PDT} - {3213594000 -28800 0 PST} - {3225088800 -25200 1 PDT} - {3245648400 -28800 0 PST} - {3256538400 -25200 1 PDT} - {3277098000 -28800 0 PST} - {3287988000 -25200 1 PDT} - {3308547600 -28800 0 PST} - {3319437600 -25200 1 PDT} - {3339997200 -28800 0 PST} - {3350887200 -25200 1 PDT} - {3371446800 -28800 0 PST} - {3382941600 -25200 1 PDT} - {3403501200 -28800 0 PST} - {3414391200 -25200 1 PDT} - {3434950800 -28800 0 PST} - {3445840800 -25200 1 PDT} - {3466400400 -28800 0 PST} - {3477290400 -25200 1 PDT} - {3497850000 -28800 0 PST} - {3508740000 -25200 1 PDT} - {3529299600 -28800 0 PST} - {3540189600 -25200 1 PDT} - {3560749200 -28800 0 PST} - {3572244000 -25200 1 PDT} - {3592803600 -28800 0 PST} - {3603693600 -25200 1 PDT} - {3624253200 -28800 0 PST} - {3635143200 -25200 1 PDT} - {3655702800 -28800 0 PST} - {3666592800 -25200 1 PDT} - {3687152400 -28800 0 PST} - {3698042400 -25200 1 PDT} - {3718602000 -28800 0 PST} - {3730096800 -25200 1 PDT} - {3750656400 -28800 0 PST} - {3761546400 -25200 1 PDT} - {3782106000 -28800 0 PST} - {3792996000 -25200 1 PDT} - {3813555600 -28800 0 PST} - {3824445600 -25200 1 PDT} - {3845005200 -28800 0 PST} - {3855895200 -25200 1 PDT} - {3876454800 -28800 0 PST} - {3887344800 -25200 1 PDT} - {3907904400 -28800 0 PST} - {3919399200 -25200 1 PDT} - {3939958800 -28800 0 PST} - {3950848800 -25200 1 PDT} - {3971408400 -28800 0 PST} - {3982298400 -25200 1 PDT} - {4002858000 -28800 0 PST} - {4013748000 -25200 1 PDT} - {4034307600 -28800 0 PST} - {4045197600 -25200 1 PDT} - {4065757200 -28800 0 PST} - {4076647200 -25200 1 PDT} - {4097206800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:PST8PDT) { + {-9223372036854775808 -28800 0 PST} + {-1633269600 -25200 1 PDT} + {-1615129200 -28800 0 PST} + {-1601820000 -25200 1 PDT} + {-1583679600 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-84376800 -25200 1 PDT} + {-68655600 -28800 0 PST} + {-52927200 -25200 1 PDT} + {-37206000 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {126698400 -25200 1 PDT} + {152096400 -28800 0 PST} + {162381600 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1173607200 -25200 1 PDT} + {1194166800 -28800 0 PST} + {1205056800 -25200 1 PDT} + {1225616400 -28800 0 PST} + {1236506400 -25200 1 PDT} + {1257066000 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} +} diff --git a/library/tzdata/Pacific/Apia b/library/tzdata/Pacific/Apia index ba105b0..5d34ed1 100644 --- a/library/tzdata/Pacific/Apia +++ b/library/tzdata/Pacific/Apia @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Apia) { - {-9223372036854775808 45184 0 LMT} - {-2855737984 -41216 0 LMT} - {-1861878784 -41400 0 SAMT} - {-631110600 -39600 0 WST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Apia) { + {-9223372036854775808 45184 0 LMT} + {-2855737984 -41216 0 LMT} + {-1861878784 -41400 0 SAMT} + {-631110600 -39600 0 WST} +} diff --git a/library/tzdata/Pacific/Auckland b/library/tzdata/Pacific/Auckland index 5e9f195..5f7e238 100644 --- a/library/tzdata/Pacific/Auckland +++ b/library/tzdata/Pacific/Auckland @@ -1,285 +1,285 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Auckland) { - {-9223372036854775808 41944 0 LMT} - {-3192435544 41400 0 NZMT} - {-1330335000 45000 1 NZST} - {-1320057000 41400 0 NZMT} - {-1300699800 43200 1 NZST} - {-1287396000 41400 0 NZMT} - {-1269250200 43200 1 NZST} - {-1255946400 41400 0 NZMT} - {-1237800600 43200 1 NZST} - {-1224496800 41400 0 NZMT} - {-1206351000 43200 1 NZST} - {-1192442400 41400 0 NZMT} - {-1174901400 43200 1 NZST} - {-1160992800 41400 0 NZMT} - {-1143451800 43200 1 NZST} - {-1125914400 41400 0 NZMT} - {-1112607000 43200 1 NZST} - {-1094464800 41400 0 NZMT} - {-1081157400 43200 1 NZST} - {-1063015200 41400 0 NZMT} - {-1049707800 43200 1 NZST} - {-1031565600 41400 0 NZMT} - {-1018258200 43200 1 NZST} - {-1000116000 41400 0 NZMT} - {-986808600 43200 1 NZST} - {-968061600 41400 0 NZMT} - {-955359000 43200 1 NZST} - {-936612000 41400 0 NZMT} - {-923304600 43200 1 NZST} - {-757425600 43200 0 NZST} - {152632800 46800 1 NZDT} - {162309600 43200 0 NZST} - {183477600 46800 1 NZDT} - {194968800 43200 0 NZST} - {215532000 46800 1 NZDT} - {226418400 43200 0 NZST} - {246981600 46800 1 NZDT} - {257868000 43200 0 NZST} - {278431200 46800 1 NZDT} - {289317600 43200 0 NZST} - {309880800 46800 1 NZDT} - {320767200 43200 0 NZST} - {341330400 46800 1 NZDT} - {352216800 43200 0 NZST} - {372780000 46800 1 NZDT} - {384271200 43200 0 NZST} - {404834400 46800 1 NZDT} - {415720800 43200 0 NZST} - {436284000 46800 1 NZDT} - {447170400 43200 0 NZST} - {467733600 46800 1 NZDT} - {478620000 43200 0 NZST} - {499183200 46800 1 NZDT} - {510069600 43200 0 NZST} - {530632800 46800 1 NZDT} - {541519200 43200 0 NZST} - {562082400 46800 1 NZDT} - {573573600 43200 0 NZST} - {594136800 46800 1 NZDT} - {605023200 43200 0 NZST} - {623772000 46800 1 NZDT} - {637682400 43200 0 NZST} - {655221600 46800 1 NZDT} - {669132000 43200 0 NZST} - {686671200 46800 1 NZDT} - {700581600 43200 0 NZST} - {718120800 46800 1 NZDT} - {732636000 43200 0 NZST} - {749570400 46800 1 NZDT} - {764085600 43200 0 NZST} - {781020000 46800 1 NZDT} - {795535200 43200 0 NZST} - {812469600 46800 1 NZDT} - {826984800 43200 0 NZST} - {844524000 46800 1 NZDT} - {858434400 43200 0 NZST} - {875973600 46800 1 NZDT} - {889884000 43200 0 NZST} - {907423200 46800 1 NZDT} - {921938400 43200 0 NZST} - {938872800 46800 1 NZDT} - {953388000 43200 0 NZST} - {970322400 46800 1 NZDT} - {984837600 43200 0 NZST} - {1002376800 46800 1 NZDT} - {1016287200 43200 0 NZST} - {1033826400 46800 1 NZDT} - {1047736800 43200 0 NZST} - {1065276000 46800 1 NZDT} - {1079791200 43200 0 NZST} - {1096725600 46800 1 NZDT} - {1111240800 43200 0 NZST} - {1128175200 46800 1 NZDT} - {1142690400 43200 0 NZST} - {1159624800 46800 1 NZDT} - {1174140000 43200 0 NZST} - {1191074400 46800 1 NZDT} - {1207404000 43200 0 NZST} - {1222524000 46800 1 NZDT} - {1238853600 43200 0 NZST} - {1253973600 46800 1 NZDT} - {1270303200 43200 0 NZST} - {1285423200 46800 1 NZDT} - {1301752800 43200 0 NZST} - {1316872800 46800 1 NZDT} - {1333202400 43200 0 NZST} - {1348927200 46800 1 NZDT} - {1365256800 43200 0 NZST} - {1380376800 46800 1 NZDT} - {1396706400 43200 0 NZST} - {1411826400 46800 1 NZDT} - {1428156000 43200 0 NZST} - {1443276000 46800 1 NZDT} - {1459605600 43200 0 NZST} - {1474725600 46800 1 NZDT} - {1491055200 43200 0 NZST} - {1506175200 46800 1 NZDT} - {1522504800 43200 0 NZST} - {1538229600 46800 1 NZDT} - {1554559200 43200 0 NZST} - {1569679200 46800 1 NZDT} - {1586008800 43200 0 NZST} - {1601128800 46800 1 NZDT} - {1617458400 43200 0 NZST} - {1632578400 46800 1 NZDT} - {1648908000 43200 0 NZST} - {1664028000 46800 1 NZDT} - {1680357600 43200 0 NZST} - {1695477600 46800 1 NZDT} - {1712412000 43200 0 NZST} - {1727532000 46800 1 NZDT} - {1743861600 43200 0 NZST} - {1758981600 46800 1 NZDT} - {1775311200 43200 0 NZST} - {1790431200 46800 1 NZDT} - {1806760800 43200 0 NZST} - {1821880800 46800 1 NZDT} - {1838210400 43200 0 NZST} - {1853330400 46800 1 NZDT} - {1869660000 43200 0 NZST} - {1885384800 46800 1 NZDT} - {1901714400 43200 0 NZST} - {1916834400 46800 1 NZDT} - {1933164000 43200 0 NZST} - {1948284000 46800 1 NZDT} - {1964613600 43200 0 NZST} - {1979733600 46800 1 NZDT} - {1996063200 43200 0 NZST} - {2011183200 46800 1 NZDT} - {2027512800 43200 0 NZST} - {2042632800 46800 1 NZDT} - {2058962400 43200 0 NZST} - {2074687200 46800 1 NZDT} - {2091016800 43200 0 NZST} - {2106136800 46800 1 NZDT} - {2122466400 43200 0 NZST} - {2137586400 46800 1 NZDT} - {2153916000 43200 0 NZST} - {2169036000 46800 1 NZDT} - {2185365600 43200 0 NZST} - {2200485600 46800 1 NZDT} - {2216815200 43200 0 NZST} - {2232540000 46800 1 NZDT} - {2248869600 43200 0 NZST} - {2263989600 46800 1 NZDT} - {2280319200 43200 0 NZST} - {2295439200 46800 1 NZDT} - {2311768800 43200 0 NZST} - {2326888800 46800 1 NZDT} - {2343218400 43200 0 NZST} - {2358338400 46800 1 NZDT} - {2374668000 43200 0 NZST} - {2389788000 46800 1 NZDT} - {2406117600 43200 0 NZST} - {2421842400 46800 1 NZDT} - {2438172000 43200 0 NZST} - {2453292000 46800 1 NZDT} - {2469621600 43200 0 NZST} - {2484741600 46800 1 NZDT} - {2501071200 43200 0 NZST} - {2516191200 46800 1 NZDT} - {2532520800 43200 0 NZST} - {2547640800 46800 1 NZDT} - {2563970400 43200 0 NZST} - {2579090400 46800 1 NZDT} - {2596024800 43200 0 NZST} - {2611144800 46800 1 NZDT} - {2627474400 43200 0 NZST} - {2642594400 46800 1 NZDT} - {2658924000 43200 0 NZST} - {2674044000 46800 1 NZDT} - {2690373600 43200 0 NZST} - {2705493600 46800 1 NZDT} - {2721823200 43200 0 NZST} - {2736943200 46800 1 NZDT} - {2753272800 43200 0 NZST} - {2768997600 46800 1 NZDT} - {2785327200 43200 0 NZST} - {2800447200 46800 1 NZDT} - {2816776800 43200 0 NZST} - {2831896800 46800 1 NZDT} - {2848226400 43200 0 NZST} - {2863346400 46800 1 NZDT} - {2879676000 43200 0 NZST} - {2894796000 46800 1 NZDT} - {2911125600 43200 0 NZST} - {2926245600 46800 1 NZDT} - {2942575200 43200 0 NZST} - {2958300000 46800 1 NZDT} - {2974629600 43200 0 NZST} - {2989749600 46800 1 NZDT} - {3006079200 43200 0 NZST} - {3021199200 46800 1 NZDT} - {3037528800 43200 0 NZST} - {3052648800 46800 1 NZDT} - {3068978400 43200 0 NZST} - {3084098400 46800 1 NZDT} - {3100428000 43200 0 NZST} - {3116152800 46800 1 NZDT} - {3132482400 43200 0 NZST} - {3147602400 46800 1 NZDT} - {3163932000 43200 0 NZST} - {3179052000 46800 1 NZDT} - {3195381600 43200 0 NZST} - {3210501600 46800 1 NZDT} - {3226831200 43200 0 NZST} - {3241951200 46800 1 NZDT} - {3258280800 43200 0 NZST} - {3273400800 46800 1 NZDT} - {3289730400 43200 0 NZST} - {3305455200 46800 1 NZDT} - {3321784800 43200 0 NZST} - {3336904800 46800 1 NZDT} - {3353234400 43200 0 NZST} - {3368354400 46800 1 NZDT} - {3384684000 43200 0 NZST} - {3399804000 46800 1 NZDT} - {3416133600 43200 0 NZST} - {3431253600 46800 1 NZDT} - {3447583200 43200 0 NZST} - {3462703200 46800 1 NZDT} - {3479637600 43200 0 NZST} - {3494757600 46800 1 NZDT} - {3511087200 43200 0 NZST} - {3526207200 46800 1 NZDT} - {3542536800 43200 0 NZST} - {3557656800 46800 1 NZDT} - {3573986400 43200 0 NZST} - {3589106400 46800 1 NZDT} - {3605436000 43200 0 NZST} - {3620556000 46800 1 NZDT} - {3636885600 43200 0 NZST} - {3652610400 46800 1 NZDT} - {3668940000 43200 0 NZST} - {3684060000 46800 1 NZDT} - {3700389600 43200 0 NZST} - {3715509600 46800 1 NZDT} - {3731839200 43200 0 NZST} - {3746959200 46800 1 NZDT} - {3763288800 43200 0 NZST} - {3778408800 46800 1 NZDT} - {3794738400 43200 0 NZST} - {3809858400 46800 1 NZDT} - {3826188000 43200 0 NZST} - {3841912800 46800 1 NZDT} - {3858242400 43200 0 NZST} - {3873362400 46800 1 NZDT} - {3889692000 43200 0 NZST} - {3904812000 46800 1 NZDT} - {3921141600 43200 0 NZST} - {3936261600 46800 1 NZDT} - {3952591200 43200 0 NZST} - {3967711200 46800 1 NZDT} - {3984040800 43200 0 NZST} - {3999765600 46800 1 NZDT} - {4016095200 43200 0 NZST} - {4031215200 46800 1 NZDT} - {4047544800 43200 0 NZST} - {4062664800 46800 1 NZDT} - {4078994400 43200 0 NZST} - {4094114400 46800 1 NZDT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Auckland) { + {-9223372036854775808 41944 0 LMT} + {-3192435544 41400 0 NZMT} + {-1330335000 45000 1 NZST} + {-1320057000 41400 0 NZMT} + {-1300699800 43200 1 NZST} + {-1287396000 41400 0 NZMT} + {-1269250200 43200 1 NZST} + {-1255946400 41400 0 NZMT} + {-1237800600 43200 1 NZST} + {-1224496800 41400 0 NZMT} + {-1206351000 43200 1 NZST} + {-1192442400 41400 0 NZMT} + {-1174901400 43200 1 NZST} + {-1160992800 41400 0 NZMT} + {-1143451800 43200 1 NZST} + {-1125914400 41400 0 NZMT} + {-1112607000 43200 1 NZST} + {-1094464800 41400 0 NZMT} + {-1081157400 43200 1 NZST} + {-1063015200 41400 0 NZMT} + {-1049707800 43200 1 NZST} + {-1031565600 41400 0 NZMT} + {-1018258200 43200 1 NZST} + {-1000116000 41400 0 NZMT} + {-986808600 43200 1 NZST} + {-968061600 41400 0 NZMT} + {-955359000 43200 1 NZST} + {-936612000 41400 0 NZMT} + {-923304600 43200 1 NZST} + {-757425600 43200 0 NZST} + {152632800 46800 1 NZDT} + {162309600 43200 0 NZST} + {183477600 46800 1 NZDT} + {194968800 43200 0 NZST} + {215532000 46800 1 NZDT} + {226418400 43200 0 NZST} + {246981600 46800 1 NZDT} + {257868000 43200 0 NZST} + {278431200 46800 1 NZDT} + {289317600 43200 0 NZST} + {309880800 46800 1 NZDT} + {320767200 43200 0 NZST} + {341330400 46800 1 NZDT} + {352216800 43200 0 NZST} + {372780000 46800 1 NZDT} + {384271200 43200 0 NZST} + {404834400 46800 1 NZDT} + {415720800 43200 0 NZST} + {436284000 46800 1 NZDT} + {447170400 43200 0 NZST} + {467733600 46800 1 NZDT} + {478620000 43200 0 NZST} + {499183200 46800 1 NZDT} + {510069600 43200 0 NZST} + {530632800 46800 1 NZDT} + {541519200 43200 0 NZST} + {562082400 46800 1 NZDT} + {573573600 43200 0 NZST} + {594136800 46800 1 NZDT} + {605023200 43200 0 NZST} + {623772000 46800 1 NZDT} + {637682400 43200 0 NZST} + {655221600 46800 1 NZDT} + {669132000 43200 0 NZST} + {686671200 46800 1 NZDT} + {700581600 43200 0 NZST} + {718120800 46800 1 NZDT} + {732636000 43200 0 NZST} + {749570400 46800 1 NZDT} + {764085600 43200 0 NZST} + {781020000 46800 1 NZDT} + {795535200 43200 0 NZST} + {812469600 46800 1 NZDT} + {826984800 43200 0 NZST} + {844524000 46800 1 NZDT} + {858434400 43200 0 NZST} + {875973600 46800 1 NZDT} + {889884000 43200 0 NZST} + {907423200 46800 1 NZDT} + {921938400 43200 0 NZST} + {938872800 46800 1 NZDT} + {953388000 43200 0 NZST} + {970322400 46800 1 NZDT} + {984837600 43200 0 NZST} + {1002376800 46800 1 NZDT} + {1016287200 43200 0 NZST} + {1033826400 46800 1 NZDT} + {1047736800 43200 0 NZST} + {1065276000 46800 1 NZDT} + {1079791200 43200 0 NZST} + {1096725600 46800 1 NZDT} + {1111240800 43200 0 NZST} + {1128175200 46800 1 NZDT} + {1142690400 43200 0 NZST} + {1159624800 46800 1 NZDT} + {1174140000 43200 0 NZST} + {1191074400 46800 1 NZDT} + {1207404000 43200 0 NZST} + {1222524000 46800 1 NZDT} + {1238853600 43200 0 NZST} + {1253973600 46800 1 NZDT} + {1270303200 43200 0 NZST} + {1285423200 46800 1 NZDT} + {1301752800 43200 0 NZST} + {1316872800 46800 1 NZDT} + {1333202400 43200 0 NZST} + {1348927200 46800 1 NZDT} + {1365256800 43200 0 NZST} + {1380376800 46800 1 NZDT} + {1396706400 43200 0 NZST} + {1411826400 46800 1 NZDT} + {1428156000 43200 0 NZST} + {1443276000 46800 1 NZDT} + {1459605600 43200 0 NZST} + {1474725600 46800 1 NZDT} + {1491055200 43200 0 NZST} + {1506175200 46800 1 NZDT} + {1522504800 43200 0 NZST} + {1538229600 46800 1 NZDT} + {1554559200 43200 0 NZST} + {1569679200 46800 1 NZDT} + {1586008800 43200 0 NZST} + {1601128800 46800 1 NZDT} + {1617458400 43200 0 NZST} + {1632578400 46800 1 NZDT} + {1648908000 43200 0 NZST} + {1664028000 46800 1 NZDT} + {1680357600 43200 0 NZST} + {1695477600 46800 1 NZDT} + {1712412000 43200 0 NZST} + {1727532000 46800 1 NZDT} + {1743861600 43200 0 NZST} + {1758981600 46800 1 NZDT} + {1775311200 43200 0 NZST} + {1790431200 46800 1 NZDT} + {1806760800 43200 0 NZST} + {1821880800 46800 1 NZDT} + {1838210400 43200 0 NZST} + {1853330400 46800 1 NZDT} + {1869660000 43200 0 NZST} + {1885384800 46800 1 NZDT} + {1901714400 43200 0 NZST} + {1916834400 46800 1 NZDT} + {1933164000 43200 0 NZST} + {1948284000 46800 1 NZDT} + {1964613600 43200 0 NZST} + {1979733600 46800 1 NZDT} + {1996063200 43200 0 NZST} + {2011183200 46800 1 NZDT} + {2027512800 43200 0 NZST} + {2042632800 46800 1 NZDT} + {2058962400 43200 0 NZST} + {2074687200 46800 1 NZDT} + {2091016800 43200 0 NZST} + {2106136800 46800 1 NZDT} + {2122466400 43200 0 NZST} + {2137586400 46800 1 NZDT} + {2153916000 43200 0 NZST} + {2169036000 46800 1 NZDT} + {2185365600 43200 0 NZST} + {2200485600 46800 1 NZDT} + {2216815200 43200 0 NZST} + {2232540000 46800 1 NZDT} + {2248869600 43200 0 NZST} + {2263989600 46800 1 NZDT} + {2280319200 43200 0 NZST} + {2295439200 46800 1 NZDT} + {2311768800 43200 0 NZST} + {2326888800 46800 1 NZDT} + {2343218400 43200 0 NZST} + {2358338400 46800 1 NZDT} + {2374668000 43200 0 NZST} + {2389788000 46800 1 NZDT} + {2406117600 43200 0 NZST} + {2421842400 46800 1 NZDT} + {2438172000 43200 0 NZST} + {2453292000 46800 1 NZDT} + {2469621600 43200 0 NZST} + {2484741600 46800 1 NZDT} + {2501071200 43200 0 NZST} + {2516191200 46800 1 NZDT} + {2532520800 43200 0 NZST} + {2547640800 46800 1 NZDT} + {2563970400 43200 0 NZST} + {2579090400 46800 1 NZDT} + {2596024800 43200 0 NZST} + {2611144800 46800 1 NZDT} + {2627474400 43200 0 NZST} + {2642594400 46800 1 NZDT} + {2658924000 43200 0 NZST} + {2674044000 46800 1 NZDT} + {2690373600 43200 0 NZST} + {2705493600 46800 1 NZDT} + {2721823200 43200 0 NZST} + {2736943200 46800 1 NZDT} + {2753272800 43200 0 NZST} + {2768997600 46800 1 NZDT} + {2785327200 43200 0 NZST} + {2800447200 46800 1 NZDT} + {2816776800 43200 0 NZST} + {2831896800 46800 1 NZDT} + {2848226400 43200 0 NZST} + {2863346400 46800 1 NZDT} + {2879676000 43200 0 NZST} + {2894796000 46800 1 NZDT} + {2911125600 43200 0 NZST} + {2926245600 46800 1 NZDT} + {2942575200 43200 0 NZST} + {2958300000 46800 1 NZDT} + {2974629600 43200 0 NZST} + {2989749600 46800 1 NZDT} + {3006079200 43200 0 NZST} + {3021199200 46800 1 NZDT} + {3037528800 43200 0 NZST} + {3052648800 46800 1 NZDT} + {3068978400 43200 0 NZST} + {3084098400 46800 1 NZDT} + {3100428000 43200 0 NZST} + {3116152800 46800 1 NZDT} + {3132482400 43200 0 NZST} + {3147602400 46800 1 NZDT} + {3163932000 43200 0 NZST} + {3179052000 46800 1 NZDT} + {3195381600 43200 0 NZST} + {3210501600 46800 1 NZDT} + {3226831200 43200 0 NZST} + {3241951200 46800 1 NZDT} + {3258280800 43200 0 NZST} + {3273400800 46800 1 NZDT} + {3289730400 43200 0 NZST} + {3305455200 46800 1 NZDT} + {3321784800 43200 0 NZST} + {3336904800 46800 1 NZDT} + {3353234400 43200 0 NZST} + {3368354400 46800 1 NZDT} + {3384684000 43200 0 NZST} + {3399804000 46800 1 NZDT} + {3416133600 43200 0 NZST} + {3431253600 46800 1 NZDT} + {3447583200 43200 0 NZST} + {3462703200 46800 1 NZDT} + {3479637600 43200 0 NZST} + {3494757600 46800 1 NZDT} + {3511087200 43200 0 NZST} + {3526207200 46800 1 NZDT} + {3542536800 43200 0 NZST} + {3557656800 46800 1 NZDT} + {3573986400 43200 0 NZST} + {3589106400 46800 1 NZDT} + {3605436000 43200 0 NZST} + {3620556000 46800 1 NZDT} + {3636885600 43200 0 NZST} + {3652610400 46800 1 NZDT} + {3668940000 43200 0 NZST} + {3684060000 46800 1 NZDT} + {3700389600 43200 0 NZST} + {3715509600 46800 1 NZDT} + {3731839200 43200 0 NZST} + {3746959200 46800 1 NZDT} + {3763288800 43200 0 NZST} + {3778408800 46800 1 NZDT} + {3794738400 43200 0 NZST} + {3809858400 46800 1 NZDT} + {3826188000 43200 0 NZST} + {3841912800 46800 1 NZDT} + {3858242400 43200 0 NZST} + {3873362400 46800 1 NZDT} + {3889692000 43200 0 NZST} + {3904812000 46800 1 NZDT} + {3921141600 43200 0 NZST} + {3936261600 46800 1 NZDT} + {3952591200 43200 0 NZST} + {3967711200 46800 1 NZDT} + {3984040800 43200 0 NZST} + {3999765600 46800 1 NZDT} + {4016095200 43200 0 NZST} + {4031215200 46800 1 NZDT} + {4047544800 43200 0 NZST} + {4062664800 46800 1 NZDT} + {4078994400 43200 0 NZST} + {4094114400 46800 1 NZDT} +} diff --git a/library/tzdata/Pacific/Chatham b/library/tzdata/Pacific/Chatham index c567bae..0ed2260 100644 --- a/library/tzdata/Pacific/Chatham +++ b/library/tzdata/Pacific/Chatham @@ -1,257 +1,257 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Chatham) { - {-9223372036854775808 44028 0 LMT} - {-410271228 45900 0 CHAST} - {152632800 49500 1 CHADT} - {162309600 45900 0 CHAST} - {183477600 49500 1 CHADT} - {194968800 45900 0 CHAST} - {215532000 49500 1 CHADT} - {226418400 45900 0 CHAST} - {246981600 49500 1 CHADT} - {257868000 45900 0 CHAST} - {278431200 49500 1 CHADT} - {289317600 45900 0 CHAST} - {309880800 49500 1 CHADT} - {320767200 45900 0 CHAST} - {341330400 49500 1 CHADT} - {352216800 45900 0 CHAST} - {372780000 49500 1 CHADT} - {384271200 45900 0 CHAST} - {404834400 49500 1 CHADT} - {415720800 45900 0 CHAST} - {436284000 49500 1 CHADT} - {447170400 45900 0 CHAST} - {467733600 49500 1 CHADT} - {478620000 45900 0 CHAST} - {499183200 49500 1 CHADT} - {510069600 45900 0 CHAST} - {530632800 49500 1 CHADT} - {541519200 45900 0 CHAST} - {562082400 49500 1 CHADT} - {573573600 45900 0 CHAST} - {594136800 49500 1 CHADT} - {605023200 45900 0 CHAST} - {623772000 49500 1 CHADT} - {637682400 45900 0 CHAST} - {655221600 49500 1 CHADT} - {669132000 45900 0 CHAST} - {686671200 49500 1 CHADT} - {700581600 45900 0 CHAST} - {718120800 49500 1 CHADT} - {732636000 45900 0 CHAST} - {749570400 49500 1 CHADT} - {764085600 45900 0 CHAST} - {781020000 49500 1 CHADT} - {795535200 45900 0 CHAST} - {812469600 49500 1 CHADT} - {826984800 45900 0 CHAST} - {844524000 49500 1 CHADT} - {858434400 45900 0 CHAST} - {875973600 49500 1 CHADT} - {889884000 45900 0 CHAST} - {907423200 49500 1 CHADT} - {921938400 45900 0 CHAST} - {938872800 49500 1 CHADT} - {953388000 45900 0 CHAST} - {970322400 49500 1 CHADT} - {984837600 45900 0 CHAST} - {1002376800 49500 1 CHADT} - {1016287200 45900 0 CHAST} - {1033826400 49500 1 CHADT} - {1047736800 45900 0 CHAST} - {1065276000 49500 1 CHADT} - {1079791200 45900 0 CHAST} - {1096725600 49500 1 CHADT} - {1111240800 45900 0 CHAST} - {1128175200 49500 1 CHADT} - {1142690400 45900 0 CHAST} - {1159624800 49500 1 CHADT} - {1174140000 45900 0 CHAST} - {1191074400 49500 1 CHADT} - {1207404000 45900 0 CHAST} - {1222524000 49500 1 CHADT} - {1238853600 45900 0 CHAST} - {1253973600 49500 1 CHADT} - {1270303200 45900 0 CHAST} - {1285423200 49500 1 CHADT} - {1301752800 45900 0 CHAST} - {1316872800 49500 1 CHADT} - {1333202400 45900 0 CHAST} - {1348927200 49500 1 CHADT} - {1365256800 45900 0 CHAST} - {1380376800 49500 1 CHADT} - {1396706400 45900 0 CHAST} - {1411826400 49500 1 CHADT} - {1428156000 45900 0 CHAST} - {1443276000 49500 1 CHADT} - {1459605600 45900 0 CHAST} - {1474725600 49500 1 CHADT} - {1491055200 45900 0 CHAST} - {1506175200 49500 1 CHADT} - {1522504800 45900 0 CHAST} - {1538229600 49500 1 CHADT} - {1554559200 45900 0 CHAST} - {1569679200 49500 1 CHADT} - {1586008800 45900 0 CHAST} - {1601128800 49500 1 CHADT} - {1617458400 45900 0 CHAST} - {1632578400 49500 1 CHADT} - {1648908000 45900 0 CHAST} - {1664028000 49500 1 CHADT} - {1680357600 45900 0 CHAST} - {1695477600 49500 1 CHADT} - {1712412000 45900 0 CHAST} - {1727532000 49500 1 CHADT} - {1743861600 45900 0 CHAST} - {1758981600 49500 1 CHADT} - {1775311200 45900 0 CHAST} - {1790431200 49500 1 CHADT} - {1806760800 45900 0 CHAST} - {1821880800 49500 1 CHADT} - {1838210400 45900 0 CHAST} - {1853330400 49500 1 CHADT} - {1869660000 45900 0 CHAST} - {1885384800 49500 1 CHADT} - {1901714400 45900 0 CHAST} - {1916834400 49500 1 CHADT} - {1933164000 45900 0 CHAST} - {1948284000 49500 1 CHADT} - {1964613600 45900 0 CHAST} - {1979733600 49500 1 CHADT} - {1996063200 45900 0 CHAST} - {2011183200 49500 1 CHADT} - {2027512800 45900 0 CHAST} - {2042632800 49500 1 CHADT} - {2058962400 45900 0 CHAST} - {2074687200 49500 1 CHADT} - {2091016800 45900 0 CHAST} - {2106136800 49500 1 CHADT} - {2122466400 45900 0 CHAST} - {2137586400 49500 1 CHADT} - {2153916000 45900 0 CHAST} - {2169036000 49500 1 CHADT} - {2185365600 45900 0 CHAST} - {2200485600 49500 1 CHADT} - {2216815200 45900 0 CHAST} - {2232540000 49500 1 CHADT} - {2248869600 45900 0 CHAST} - {2263989600 49500 1 CHADT} - {2280319200 45900 0 CHAST} - {2295439200 49500 1 CHADT} - {2311768800 45900 0 CHAST} - {2326888800 49500 1 CHADT} - {2343218400 45900 0 CHAST} - {2358338400 49500 1 CHADT} - {2374668000 45900 0 CHAST} - {2389788000 49500 1 CHADT} - {2406117600 45900 0 CHAST} - {2421842400 49500 1 CHADT} - {2438172000 45900 0 CHAST} - {2453292000 49500 1 CHADT} - {2469621600 45900 0 CHAST} - {2484741600 49500 1 CHADT} - {2501071200 45900 0 CHAST} - {2516191200 49500 1 CHADT} - {2532520800 45900 0 CHAST} - {2547640800 49500 1 CHADT} - {2563970400 45900 0 CHAST} - {2579090400 49500 1 CHADT} - {2596024800 45900 0 CHAST} - {2611144800 49500 1 CHADT} - {2627474400 45900 0 CHAST} - {2642594400 49500 1 CHADT} - {2658924000 45900 0 CHAST} - {2674044000 49500 1 CHADT} - {2690373600 45900 0 CHAST} - {2705493600 49500 1 CHADT} - {2721823200 45900 0 CHAST} - {2736943200 49500 1 CHADT} - {2753272800 45900 0 CHAST} - {2768997600 49500 1 CHADT} - {2785327200 45900 0 CHAST} - {2800447200 49500 1 CHADT} - {2816776800 45900 0 CHAST} - {2831896800 49500 1 CHADT} - {2848226400 45900 0 CHAST} - {2863346400 49500 1 CHADT} - {2879676000 45900 0 CHAST} - {2894796000 49500 1 CHADT} - {2911125600 45900 0 CHAST} - {2926245600 49500 1 CHADT} - {2942575200 45900 0 CHAST} - {2958300000 49500 1 CHADT} - {2974629600 45900 0 CHAST} - {2989749600 49500 1 CHADT} - {3006079200 45900 0 CHAST} - {3021199200 49500 1 CHADT} - {3037528800 45900 0 CHAST} - {3052648800 49500 1 CHADT} - {3068978400 45900 0 CHAST} - {3084098400 49500 1 CHADT} - {3100428000 45900 0 CHAST} - {3116152800 49500 1 CHADT} - {3132482400 45900 0 CHAST} - {3147602400 49500 1 CHADT} - {3163932000 45900 0 CHAST} - {3179052000 49500 1 CHADT} - {3195381600 45900 0 CHAST} - {3210501600 49500 1 CHADT} - {3226831200 45900 0 CHAST} - {3241951200 49500 1 CHADT} - {3258280800 45900 0 CHAST} - {3273400800 49500 1 CHADT} - {3289730400 45900 0 CHAST} - {3305455200 49500 1 CHADT} - {3321784800 45900 0 CHAST} - {3336904800 49500 1 CHADT} - {3353234400 45900 0 CHAST} - {3368354400 49500 1 CHADT} - {3384684000 45900 0 CHAST} - {3399804000 49500 1 CHADT} - {3416133600 45900 0 CHAST} - {3431253600 49500 1 CHADT} - {3447583200 45900 0 CHAST} - {3462703200 49500 1 CHADT} - {3479637600 45900 0 CHAST} - {3494757600 49500 1 CHADT} - {3511087200 45900 0 CHAST} - {3526207200 49500 1 CHADT} - {3542536800 45900 0 CHAST} - {3557656800 49500 1 CHADT} - {3573986400 45900 0 CHAST} - {3589106400 49500 1 CHADT} - {3605436000 45900 0 CHAST} - {3620556000 49500 1 CHADT} - {3636885600 45900 0 CHAST} - {3652610400 49500 1 CHADT} - {3668940000 45900 0 CHAST} - {3684060000 49500 1 CHADT} - {3700389600 45900 0 CHAST} - {3715509600 49500 1 CHADT} - {3731839200 45900 0 CHAST} - {3746959200 49500 1 CHADT} - {3763288800 45900 0 CHAST} - {3778408800 49500 1 CHADT} - {3794738400 45900 0 CHAST} - {3809858400 49500 1 CHADT} - {3826188000 45900 0 CHAST} - {3841912800 49500 1 CHADT} - {3858242400 45900 0 CHAST} - {3873362400 49500 1 CHADT} - {3889692000 45900 0 CHAST} - {3904812000 49500 1 CHADT} - {3921141600 45900 0 CHAST} - {3936261600 49500 1 CHADT} - {3952591200 45900 0 CHAST} - {3967711200 49500 1 CHADT} - {3984040800 45900 0 CHAST} - {3999765600 49500 1 CHADT} - {4016095200 45900 0 CHAST} - {4031215200 49500 1 CHADT} - {4047544800 45900 0 CHAST} - {4062664800 49500 1 CHADT} - {4078994400 45900 0 CHAST} - {4094114400 49500 1 CHADT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Chatham) { + {-9223372036854775808 44028 0 LMT} + {-410271228 45900 0 CHAST} + {152632800 49500 1 CHADT} + {162309600 45900 0 CHAST} + {183477600 49500 1 CHADT} + {194968800 45900 0 CHAST} + {215532000 49500 1 CHADT} + {226418400 45900 0 CHAST} + {246981600 49500 1 CHADT} + {257868000 45900 0 CHAST} + {278431200 49500 1 CHADT} + {289317600 45900 0 CHAST} + {309880800 49500 1 CHADT} + {320767200 45900 0 CHAST} + {341330400 49500 1 CHADT} + {352216800 45900 0 CHAST} + {372780000 49500 1 CHADT} + {384271200 45900 0 CHAST} + {404834400 49500 1 CHADT} + {415720800 45900 0 CHAST} + {436284000 49500 1 CHADT} + {447170400 45900 0 CHAST} + {467733600 49500 1 CHADT} + {478620000 45900 0 CHAST} + {499183200 49500 1 CHADT} + {510069600 45900 0 CHAST} + {530632800 49500 1 CHADT} + {541519200 45900 0 CHAST} + {562082400 49500 1 CHADT} + {573573600 45900 0 CHAST} + {594136800 49500 1 CHADT} + {605023200 45900 0 CHAST} + {623772000 49500 1 CHADT} + {637682400 45900 0 CHAST} + {655221600 49500 1 CHADT} + {669132000 45900 0 CHAST} + {686671200 49500 1 CHADT} + {700581600 45900 0 CHAST} + {718120800 49500 1 CHADT} + {732636000 45900 0 CHAST} + {749570400 49500 1 CHADT} + {764085600 45900 0 CHAST} + {781020000 49500 1 CHADT} + {795535200 45900 0 CHAST} + {812469600 49500 1 CHADT} + {826984800 45900 0 CHAST} + {844524000 49500 1 CHADT} + {858434400 45900 0 CHAST} + {875973600 49500 1 CHADT} + {889884000 45900 0 CHAST} + {907423200 49500 1 CHADT} + {921938400 45900 0 CHAST} + {938872800 49500 1 CHADT} + {953388000 45900 0 CHAST} + {970322400 49500 1 CHADT} + {984837600 45900 0 CHAST} + {1002376800 49500 1 CHADT} + {1016287200 45900 0 CHAST} + {1033826400 49500 1 CHADT} + {1047736800 45900 0 CHAST} + {1065276000 49500 1 CHADT} + {1079791200 45900 0 CHAST} + {1096725600 49500 1 CHADT} + {1111240800 45900 0 CHAST} + {1128175200 49500 1 CHADT} + {1142690400 45900 0 CHAST} + {1159624800 49500 1 CHADT} + {1174140000 45900 0 CHAST} + {1191074400 49500 1 CHADT} + {1207404000 45900 0 CHAST} + {1222524000 49500 1 CHADT} + {1238853600 45900 0 CHAST} + {1253973600 49500 1 CHADT} + {1270303200 45900 0 CHAST} + {1285423200 49500 1 CHADT} + {1301752800 45900 0 CHAST} + {1316872800 49500 1 CHADT} + {1333202400 45900 0 CHAST} + {1348927200 49500 1 CHADT} + {1365256800 45900 0 CHAST} + {1380376800 49500 1 CHADT} + {1396706400 45900 0 CHAST} + {1411826400 49500 1 CHADT} + {1428156000 45900 0 CHAST} + {1443276000 49500 1 CHADT} + {1459605600 45900 0 CHAST} + {1474725600 49500 1 CHADT} + {1491055200 45900 0 CHAST} + {1506175200 49500 1 CHADT} + {1522504800 45900 0 CHAST} + {1538229600 49500 1 CHADT} + {1554559200 45900 0 CHAST} + {1569679200 49500 1 CHADT} + {1586008800 45900 0 CHAST} + {1601128800 49500 1 CHADT} + {1617458400 45900 0 CHAST} + {1632578400 49500 1 CHADT} + {1648908000 45900 0 CHAST} + {1664028000 49500 1 CHADT} + {1680357600 45900 0 CHAST} + {1695477600 49500 1 CHADT} + {1712412000 45900 0 CHAST} + {1727532000 49500 1 CHADT} + {1743861600 45900 0 CHAST} + {1758981600 49500 1 CHADT} + {1775311200 45900 0 CHAST} + {1790431200 49500 1 CHADT} + {1806760800 45900 0 CHAST} + {1821880800 49500 1 CHADT} + {1838210400 45900 0 CHAST} + {1853330400 49500 1 CHADT} + {1869660000 45900 0 CHAST} + {1885384800 49500 1 CHADT} + {1901714400 45900 0 CHAST} + {1916834400 49500 1 CHADT} + {1933164000 45900 0 CHAST} + {1948284000 49500 1 CHADT} + {1964613600 45900 0 CHAST} + {1979733600 49500 1 CHADT} + {1996063200 45900 0 CHAST} + {2011183200 49500 1 CHADT} + {2027512800 45900 0 CHAST} + {2042632800 49500 1 CHADT} + {2058962400 45900 0 CHAST} + {2074687200 49500 1 CHADT} + {2091016800 45900 0 CHAST} + {2106136800 49500 1 CHADT} + {2122466400 45900 0 CHAST} + {2137586400 49500 1 CHADT} + {2153916000 45900 0 CHAST} + {2169036000 49500 1 CHADT} + {2185365600 45900 0 CHAST} + {2200485600 49500 1 CHADT} + {2216815200 45900 0 CHAST} + {2232540000 49500 1 CHADT} + {2248869600 45900 0 CHAST} + {2263989600 49500 1 CHADT} + {2280319200 45900 0 CHAST} + {2295439200 49500 1 CHADT} + {2311768800 45900 0 CHAST} + {2326888800 49500 1 CHADT} + {2343218400 45900 0 CHAST} + {2358338400 49500 1 CHADT} + {2374668000 45900 0 CHAST} + {2389788000 49500 1 CHADT} + {2406117600 45900 0 CHAST} + {2421842400 49500 1 CHADT} + {2438172000 45900 0 CHAST} + {2453292000 49500 1 CHADT} + {2469621600 45900 0 CHAST} + {2484741600 49500 1 CHADT} + {2501071200 45900 0 CHAST} + {2516191200 49500 1 CHADT} + {2532520800 45900 0 CHAST} + {2547640800 49500 1 CHADT} + {2563970400 45900 0 CHAST} + {2579090400 49500 1 CHADT} + {2596024800 45900 0 CHAST} + {2611144800 49500 1 CHADT} + {2627474400 45900 0 CHAST} + {2642594400 49500 1 CHADT} + {2658924000 45900 0 CHAST} + {2674044000 49500 1 CHADT} + {2690373600 45900 0 CHAST} + {2705493600 49500 1 CHADT} + {2721823200 45900 0 CHAST} + {2736943200 49500 1 CHADT} + {2753272800 45900 0 CHAST} + {2768997600 49500 1 CHADT} + {2785327200 45900 0 CHAST} + {2800447200 49500 1 CHADT} + {2816776800 45900 0 CHAST} + {2831896800 49500 1 CHADT} + {2848226400 45900 0 CHAST} + {2863346400 49500 1 CHADT} + {2879676000 45900 0 CHAST} + {2894796000 49500 1 CHADT} + {2911125600 45900 0 CHAST} + {2926245600 49500 1 CHADT} + {2942575200 45900 0 CHAST} + {2958300000 49500 1 CHADT} + {2974629600 45900 0 CHAST} + {2989749600 49500 1 CHADT} + {3006079200 45900 0 CHAST} + {3021199200 49500 1 CHADT} + {3037528800 45900 0 CHAST} + {3052648800 49500 1 CHADT} + {3068978400 45900 0 CHAST} + {3084098400 49500 1 CHADT} + {3100428000 45900 0 CHAST} + {3116152800 49500 1 CHADT} + {3132482400 45900 0 CHAST} + {3147602400 49500 1 CHADT} + {3163932000 45900 0 CHAST} + {3179052000 49500 1 CHADT} + {3195381600 45900 0 CHAST} + {3210501600 49500 1 CHADT} + {3226831200 45900 0 CHAST} + {3241951200 49500 1 CHADT} + {3258280800 45900 0 CHAST} + {3273400800 49500 1 CHADT} + {3289730400 45900 0 CHAST} + {3305455200 49500 1 CHADT} + {3321784800 45900 0 CHAST} + {3336904800 49500 1 CHADT} + {3353234400 45900 0 CHAST} + {3368354400 49500 1 CHADT} + {3384684000 45900 0 CHAST} + {3399804000 49500 1 CHADT} + {3416133600 45900 0 CHAST} + {3431253600 49500 1 CHADT} + {3447583200 45900 0 CHAST} + {3462703200 49500 1 CHADT} + {3479637600 45900 0 CHAST} + {3494757600 49500 1 CHADT} + {3511087200 45900 0 CHAST} + {3526207200 49500 1 CHADT} + {3542536800 45900 0 CHAST} + {3557656800 49500 1 CHADT} + {3573986400 45900 0 CHAST} + {3589106400 49500 1 CHADT} + {3605436000 45900 0 CHAST} + {3620556000 49500 1 CHADT} + {3636885600 45900 0 CHAST} + {3652610400 49500 1 CHADT} + {3668940000 45900 0 CHAST} + {3684060000 49500 1 CHADT} + {3700389600 45900 0 CHAST} + {3715509600 49500 1 CHADT} + {3731839200 45900 0 CHAST} + {3746959200 49500 1 CHADT} + {3763288800 45900 0 CHAST} + {3778408800 49500 1 CHADT} + {3794738400 45900 0 CHAST} + {3809858400 49500 1 CHADT} + {3826188000 45900 0 CHAST} + {3841912800 49500 1 CHADT} + {3858242400 45900 0 CHAST} + {3873362400 49500 1 CHADT} + {3889692000 45900 0 CHAST} + {3904812000 49500 1 CHADT} + {3921141600 45900 0 CHAST} + {3936261600 49500 1 CHADT} + {3952591200 45900 0 CHAST} + {3967711200 49500 1 CHADT} + {3984040800 45900 0 CHAST} + {3999765600 49500 1 CHADT} + {4016095200 45900 0 CHAST} + {4031215200 49500 1 CHADT} + {4047544800 45900 0 CHAST} + {4062664800 49500 1 CHADT} + {4078994400 45900 0 CHAST} + {4094114400 49500 1 CHADT} +} diff --git a/library/tzdata/Pacific/Easter b/library/tzdata/Pacific/Easter index 625e37c..ac00f5e 100644 --- a/library/tzdata/Pacific/Easter +++ b/library/tzdata/Pacific/Easter @@ -1,275 +1,275 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Easter) { - {-9223372036854775808 -26264 0 LMT} - {-2524495336 -26248 0 EMT} - {-1178124152 -21600 0 EASST} - {-870552000 -25200 0 EAST} - {-865278000 -21600 1 EASST} - {-740520000 -21600 1 EASST} - {-736376400 -25200 0 EAST} - {-718056000 -25200 0 EAST} - {-36619200 -21600 1 EASST} - {-23922000 -25200 0 EAST} - {-3355200 -21600 1 EASST} - {7527600 -25200 0 EAST} - {24465600 -21600 1 EASST} - {37767600 -25200 0 EAST} - {55915200 -21600 1 EASST} - {69217200 -25200 0 EAST} - {87969600 -21600 1 EASST} - {100666800 -25200 0 EAST} - {118209600 -21600 1 EASST} - {132116400 -25200 0 EAST} - {150868800 -21600 1 EASST} - {163566000 -25200 0 EAST} - {182318400 -21600 1 EASST} - {195620400 -25200 0 EAST} - {213768000 -21600 1 EASST} - {227070000 -25200 0 EAST} - {245217600 -21600 1 EASST} - {258519600 -25200 0 EAST} - {277272000 -21600 1 EASST} - {289969200 -25200 0 EAST} - {308721600 -21600 1 EASST} - {321418800 -25200 0 EAST} - {340171200 -21600 1 EASST} - {353473200 -25200 0 EAST} - {371620800 -21600 1 EASST} - {384922800 -21600 0 EAST} - {403070400 -18000 1 EASST} - {416372400 -21600 0 EAST} - {434520000 -18000 1 EASST} - {447822000 -21600 0 EAST} - {466574400 -18000 1 EASST} - {479271600 -21600 0 EAST} - {498024000 -18000 1 EASST} - {510721200 -21600 0 EAST} - {529473600 -18000 1 EASST} - {545194800 -21600 0 EAST} - {560923200 -18000 1 EASST} - {574225200 -21600 0 EAST} - {591768000 -18000 1 EASST} - {605674800 -21600 0 EAST} - {624427200 -18000 1 EASST} - {637729200 -21600 0 EAST} - {653457600 -18000 1 EASST} - {668574000 -21600 0 EAST} - {687326400 -18000 1 EASST} - {700628400 -21600 0 EAST} - {718776000 -18000 1 EASST} - {732078000 -21600 0 EAST} - {750225600 -18000 1 EASST} - {763527600 -21600 0 EAST} - {781675200 -18000 1 EASST} - {794977200 -21600 0 EAST} - {813729600 -18000 1 EASST} - {826426800 -21600 0 EAST} - {845179200 -18000 1 EASST} - {859690800 -21600 0 EAST} - {876628800 -18000 1 EASST} - {889930800 -21600 0 EAST} - {906868800 -18000 1 EASST} - {923194800 -21600 0 EAST} - {939528000 -18000 1 EASST} - {952830000 -21600 0 EAST} - {971582400 -18000 1 EASST} - {984279600 -21600 0 EAST} - {1003032000 -18000 1 EASST} - {1015729200 -21600 0 EAST} - {1034481600 -18000 1 EASST} - {1047178800 -21600 0 EAST} - {1065931200 -18000 1 EASST} - {1079233200 -21600 0 EAST} - {1097380800 -18000 1 EASST} - {1110682800 -21600 0 EAST} - {1128830400 -18000 1 EASST} - {1142132400 -21600 0 EAST} - {1160884800 -18000 1 EASST} - {1173582000 -21600 0 EAST} - {1192334400 -18000 1 EASST} - {1206846000 -21600 0 EAST} - {1223784000 -18000 1 EASST} - {1237086000 -21600 0 EAST} - {1255233600 -18000 1 EASST} - {1268535600 -21600 0 EAST} - {1286683200 -18000 1 EASST} - {1299985200 -21600 0 EAST} - {1318132800 -18000 1 EASST} - {1331434800 -21600 0 EAST} - {1350187200 -18000 1 EASST} - {1362884400 -21600 0 EAST} - {1381636800 -18000 1 EASST} - {1394334000 -21600 0 EAST} - {1413086400 -18000 1 EASST} - {1426388400 -21600 0 EAST} - {1444536000 -18000 1 EASST} - {1457838000 -21600 0 EAST} - {1475985600 -18000 1 EASST} - {1489287600 -21600 0 EAST} - {1508040000 -18000 1 EASST} - {1520737200 -21600 0 EAST} - {1539489600 -18000 1 EASST} - {1552186800 -21600 0 EAST} - {1570939200 -18000 1 EASST} - {1584241200 -21600 0 EAST} - {1602388800 -18000 1 EASST} - {1615690800 -21600 0 EAST} - {1633838400 -18000 1 EASST} - {1647140400 -21600 0 EAST} - {1665288000 -18000 1 EASST} - {1678590000 -21600 0 EAST} - {1697342400 -18000 1 EASST} - {1710039600 -21600 0 EAST} - {1728792000 -18000 1 EASST} - {1741489200 -21600 0 EAST} - {1760241600 -18000 1 EASST} - {1773543600 -21600 0 EAST} - {1791691200 -18000 1 EASST} - {1804993200 -21600 0 EAST} - {1823140800 -18000 1 EASST} - {1836442800 -21600 0 EAST} - {1855195200 -18000 1 EASST} - {1867892400 -21600 0 EAST} - {1886644800 -18000 1 EASST} - {1899342000 -21600 0 EAST} - {1918094400 -18000 1 EASST} - {1930791600 -21600 0 EAST} - {1949544000 -18000 1 EASST} - {1962846000 -21600 0 EAST} - {1980993600 -18000 1 EASST} - {1994295600 -21600 0 EAST} - {2012443200 -18000 1 EASST} - {2025745200 -21600 0 EAST} - {2044497600 -18000 1 EASST} - {2057194800 -21600 0 EAST} - {2075947200 -18000 1 EASST} - {2088644400 -21600 0 EAST} - {2107396800 -18000 1 EASST} - {2120698800 -21600 0 EAST} - {2138846400 -18000 1 EASST} - {2152148400 -21600 0 EAST} - {2170296000 -18000 1 EASST} - {2183598000 -21600 0 EAST} - {2201745600 -18000 1 EASST} - {2215047600 -21600 0 EAST} - {2233800000 -18000 1 EASST} - {2246497200 -21600 0 EAST} - {2265249600 -18000 1 EASST} - {2277946800 -21600 0 EAST} - {2296699200 -18000 1 EASST} - {2310001200 -21600 0 EAST} - {2328148800 -18000 1 EASST} - {2341450800 -21600 0 EAST} - {2359598400 -18000 1 EASST} - {2372900400 -21600 0 EAST} - {2391652800 -18000 1 EASST} - {2404350000 -21600 0 EAST} - {2423102400 -18000 1 EASST} - {2435799600 -21600 0 EAST} - {2454552000 -18000 1 EASST} - {2467854000 -21600 0 EAST} - {2486001600 -18000 1 EASST} - {2499303600 -21600 0 EAST} - {2517451200 -18000 1 EASST} - {2530753200 -21600 0 EAST} - {2548900800 -18000 1 EASST} - {2562202800 -21600 0 EAST} - {2580955200 -18000 1 EASST} - {2593652400 -21600 0 EAST} - {2612404800 -18000 1 EASST} - {2625102000 -21600 0 EAST} - {2643854400 -18000 1 EASST} - {2657156400 -21600 0 EAST} - {2675304000 -18000 1 EASST} - {2688606000 -21600 0 EAST} - {2706753600 -18000 1 EASST} - {2720055600 -21600 0 EAST} - {2738808000 -18000 1 EASST} - {2751505200 -21600 0 EAST} - {2770257600 -18000 1 EASST} - {2782954800 -21600 0 EAST} - {2801707200 -18000 1 EASST} - {2814404400 -21600 0 EAST} - {2833156800 -18000 1 EASST} - {2846458800 -21600 0 EAST} - {2864606400 -18000 1 EASST} - {2877908400 -21600 0 EAST} - {2896056000 -18000 1 EASST} - {2909358000 -21600 0 EAST} - {2928110400 -18000 1 EASST} - {2940807600 -21600 0 EAST} - {2959560000 -18000 1 EASST} - {2972257200 -21600 0 EAST} - {2991009600 -18000 1 EASST} - {3004311600 -21600 0 EAST} - {3022459200 -18000 1 EASST} - {3035761200 -21600 0 EAST} - {3053908800 -18000 1 EASST} - {3067210800 -21600 0 EAST} - {3085358400 -18000 1 EASST} - {3098660400 -21600 0 EAST} - {3117412800 -18000 1 EASST} - {3130110000 -21600 0 EAST} - {3148862400 -18000 1 EASST} - {3161559600 -21600 0 EAST} - {3180312000 -18000 1 EASST} - {3193614000 -21600 0 EAST} - {3211761600 -18000 1 EASST} - {3225063600 -21600 0 EAST} - {3243211200 -18000 1 EASST} - {3256513200 -21600 0 EAST} - {3275265600 -18000 1 EASST} - {3287962800 -21600 0 EAST} - {3306715200 -18000 1 EASST} - {3319412400 -21600 0 EAST} - {3338164800 -18000 1 EASST} - {3351466800 -21600 0 EAST} - {3369614400 -18000 1 EASST} - {3382916400 -21600 0 EAST} - {3401064000 -18000 1 EASST} - {3414366000 -21600 0 EAST} - {3432513600 -18000 1 EASST} - {3445815600 -21600 0 EAST} - {3464568000 -18000 1 EASST} - {3477265200 -21600 0 EAST} - {3496017600 -18000 1 EASST} - {3508714800 -21600 0 EAST} - {3527467200 -18000 1 EASST} - {3540769200 -21600 0 EAST} - {3558916800 -18000 1 EASST} - {3572218800 -21600 0 EAST} - {3590366400 -18000 1 EASST} - {3603668400 -21600 0 EAST} - {3622420800 -18000 1 EASST} - {3635118000 -21600 0 EAST} - {3653870400 -18000 1 EASST} - {3666567600 -21600 0 EAST} - {3685320000 -18000 1 EASST} - {3698017200 -21600 0 EAST} - {3716769600 -18000 1 EASST} - {3730071600 -21600 0 EAST} - {3748219200 -18000 1 EASST} - {3761521200 -21600 0 EAST} - {3779668800 -18000 1 EASST} - {3792970800 -21600 0 EAST} - {3811723200 -18000 1 EASST} - {3824420400 -21600 0 EAST} - {3843172800 -18000 1 EASST} - {3855870000 -21600 0 EAST} - {3874622400 -18000 1 EASST} - {3887924400 -21600 0 EAST} - {3906072000 -18000 1 EASST} - {3919374000 -21600 0 EAST} - {3937521600 -18000 1 EASST} - {3950823600 -21600 0 EAST} - {3968971200 -18000 1 EASST} - {3982273200 -21600 0 EAST} - {4001025600 -18000 1 EASST} - {4013722800 -21600 0 EAST} - {4032475200 -18000 1 EASST} - {4045172400 -21600 0 EAST} - {4063924800 -18000 1 EASST} - {4077226800 -21600 0 EAST} - {4095374400 -18000 1 EASST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Easter) { + {-9223372036854775808 -26264 0 LMT} + {-2524495336 -26248 0 EMT} + {-1178124152 -21600 0 EASST} + {-870552000 -25200 0 EAST} + {-865278000 -21600 1 EASST} + {-740520000 -21600 1 EASST} + {-736376400 -25200 0 EAST} + {-718056000 -25200 0 EAST} + {-36619200 -21600 1 EASST} + {-23922000 -25200 0 EAST} + {-3355200 -21600 1 EASST} + {7527600 -25200 0 EAST} + {24465600 -21600 1 EASST} + {37767600 -25200 0 EAST} + {55915200 -21600 1 EASST} + {69217200 -25200 0 EAST} + {87969600 -21600 1 EASST} + {100666800 -25200 0 EAST} + {118209600 -21600 1 EASST} + {132116400 -25200 0 EAST} + {150868800 -21600 1 EASST} + {163566000 -25200 0 EAST} + {182318400 -21600 1 EASST} + {195620400 -25200 0 EAST} + {213768000 -21600 1 EASST} + {227070000 -25200 0 EAST} + {245217600 -21600 1 EASST} + {258519600 -25200 0 EAST} + {277272000 -21600 1 EASST} + {289969200 -25200 0 EAST} + {308721600 -21600 1 EASST} + {321418800 -25200 0 EAST} + {340171200 -21600 1 EASST} + {353473200 -25200 0 EAST} + {371620800 -21600 1 EASST} + {384922800 -21600 0 EAST} + {403070400 -18000 1 EASST} + {416372400 -21600 0 EAST} + {434520000 -18000 1 EASST} + {447822000 -21600 0 EAST} + {466574400 -18000 1 EASST} + {479271600 -21600 0 EAST} + {498024000 -18000 1 EASST} + {510721200 -21600 0 EAST} + {529473600 -18000 1 EASST} + {545194800 -21600 0 EAST} + {560923200 -18000 1 EASST} + {574225200 -21600 0 EAST} + {591768000 -18000 1 EASST} + {605674800 -21600 0 EAST} + {624427200 -18000 1 EASST} + {637729200 -21600 0 EAST} + {653457600 -18000 1 EASST} + {668574000 -21600 0 EAST} + {687326400 -18000 1 EASST} + {700628400 -21600 0 EAST} + {718776000 -18000 1 EASST} + {732078000 -21600 0 EAST} + {750225600 -18000 1 EASST} + {763527600 -21600 0 EAST} + {781675200 -18000 1 EASST} + {794977200 -21600 0 EAST} + {813729600 -18000 1 EASST} + {826426800 -21600 0 EAST} + {845179200 -18000 1 EASST} + {859690800 -21600 0 EAST} + {876628800 -18000 1 EASST} + {889930800 -21600 0 EAST} + {906868800 -18000 1 EASST} + {923194800 -21600 0 EAST} + {939528000 -18000 1 EASST} + {952830000 -21600 0 EAST} + {971582400 -18000 1 EASST} + {984279600 -21600 0 EAST} + {1003032000 -18000 1 EASST} + {1015729200 -21600 0 EAST} + {1034481600 -18000 1 EASST} + {1047178800 -21600 0 EAST} + {1065931200 -18000 1 EASST} + {1079233200 -21600 0 EAST} + {1097380800 -18000 1 EASST} + {1110682800 -21600 0 EAST} + {1128830400 -18000 1 EASST} + {1142132400 -21600 0 EAST} + {1160884800 -18000 1 EASST} + {1173582000 -21600 0 EAST} + {1192334400 -18000 1 EASST} + {1206846000 -21600 0 EAST} + {1223784000 -18000 1 EASST} + {1237086000 -21600 0 EAST} + {1255233600 -18000 1 EASST} + {1268535600 -21600 0 EAST} + {1286683200 -18000 1 EASST} + {1299985200 -21600 0 EAST} + {1318132800 -18000 1 EASST} + {1331434800 -21600 0 EAST} + {1350187200 -18000 1 EASST} + {1362884400 -21600 0 EAST} + {1381636800 -18000 1 EASST} + {1394334000 -21600 0 EAST} + {1413086400 -18000 1 EASST} + {1426388400 -21600 0 EAST} + {1444536000 -18000 1 EASST} + {1457838000 -21600 0 EAST} + {1475985600 -18000 1 EASST} + {1489287600 -21600 0 EAST} + {1508040000 -18000 1 EASST} + {1520737200 -21600 0 EAST} + {1539489600 -18000 1 EASST} + {1552186800 -21600 0 EAST} + {1570939200 -18000 1 EASST} + {1584241200 -21600 0 EAST} + {1602388800 -18000 1 EASST} + {1615690800 -21600 0 EAST} + {1633838400 -18000 1 EASST} + {1647140400 -21600 0 EAST} + {1665288000 -18000 1 EASST} + {1678590000 -21600 0 EAST} + {1697342400 -18000 1 EASST} + {1710039600 -21600 0 EAST} + {1728792000 -18000 1 EASST} + {1741489200 -21600 0 EAST} + {1760241600 -18000 1 EASST} + {1773543600 -21600 0 EAST} + {1791691200 -18000 1 EASST} + {1804993200 -21600 0 EAST} + {1823140800 -18000 1 EASST} + {1836442800 -21600 0 EAST} + {1855195200 -18000 1 EASST} + {1867892400 -21600 0 EAST} + {1886644800 -18000 1 EASST} + {1899342000 -21600 0 EAST} + {1918094400 -18000 1 EASST} + {1930791600 -21600 0 EAST} + {1949544000 -18000 1 EASST} + {1962846000 -21600 0 EAST} + {1980993600 -18000 1 EASST} + {1994295600 -21600 0 EAST} + {2012443200 -18000 1 EASST} + {2025745200 -21600 0 EAST} + {2044497600 -18000 1 EASST} + {2057194800 -21600 0 EAST} + {2075947200 -18000 1 EASST} + {2088644400 -21600 0 EAST} + {2107396800 -18000 1 EASST} + {2120698800 -21600 0 EAST} + {2138846400 -18000 1 EASST} + {2152148400 -21600 0 EAST} + {2170296000 -18000 1 EASST} + {2183598000 -21600 0 EAST} + {2201745600 -18000 1 EASST} + {2215047600 -21600 0 EAST} + {2233800000 -18000 1 EASST} + {2246497200 -21600 0 EAST} + {2265249600 -18000 1 EASST} + {2277946800 -21600 0 EAST} + {2296699200 -18000 1 EASST} + {2310001200 -21600 0 EAST} + {2328148800 -18000 1 EASST} + {2341450800 -21600 0 EAST} + {2359598400 -18000 1 EASST} + {2372900400 -21600 0 EAST} + {2391652800 -18000 1 EASST} + {2404350000 -21600 0 EAST} + {2423102400 -18000 1 EASST} + {2435799600 -21600 0 EAST} + {2454552000 -18000 1 EASST} + {2467854000 -21600 0 EAST} + {2486001600 -18000 1 EASST} + {2499303600 -21600 0 EAST} + {2517451200 -18000 1 EASST} + {2530753200 -21600 0 EAST} + {2548900800 -18000 1 EASST} + {2562202800 -21600 0 EAST} + {2580955200 -18000 1 EASST} + {2593652400 -21600 0 EAST} + {2612404800 -18000 1 EASST} + {2625102000 -21600 0 EAST} + {2643854400 -18000 1 EASST} + {2657156400 -21600 0 EAST} + {2675304000 -18000 1 EASST} + {2688606000 -21600 0 EAST} + {2706753600 -18000 1 EASST} + {2720055600 -21600 0 EAST} + {2738808000 -18000 1 EASST} + {2751505200 -21600 0 EAST} + {2770257600 -18000 1 EASST} + {2782954800 -21600 0 EAST} + {2801707200 -18000 1 EASST} + {2814404400 -21600 0 EAST} + {2833156800 -18000 1 EASST} + {2846458800 -21600 0 EAST} + {2864606400 -18000 1 EASST} + {2877908400 -21600 0 EAST} + {2896056000 -18000 1 EASST} + {2909358000 -21600 0 EAST} + {2928110400 -18000 1 EASST} + {2940807600 -21600 0 EAST} + {2959560000 -18000 1 EASST} + {2972257200 -21600 0 EAST} + {2991009600 -18000 1 EASST} + {3004311600 -21600 0 EAST} + {3022459200 -18000 1 EASST} + {3035761200 -21600 0 EAST} + {3053908800 -18000 1 EASST} + {3067210800 -21600 0 EAST} + {3085358400 -18000 1 EASST} + {3098660400 -21600 0 EAST} + {3117412800 -18000 1 EASST} + {3130110000 -21600 0 EAST} + {3148862400 -18000 1 EASST} + {3161559600 -21600 0 EAST} + {3180312000 -18000 1 EASST} + {3193614000 -21600 0 EAST} + {3211761600 -18000 1 EASST} + {3225063600 -21600 0 EAST} + {3243211200 -18000 1 EASST} + {3256513200 -21600 0 EAST} + {3275265600 -18000 1 EASST} + {3287962800 -21600 0 EAST} + {3306715200 -18000 1 EASST} + {3319412400 -21600 0 EAST} + {3338164800 -18000 1 EASST} + {3351466800 -21600 0 EAST} + {3369614400 -18000 1 EASST} + {3382916400 -21600 0 EAST} + {3401064000 -18000 1 EASST} + {3414366000 -21600 0 EAST} + {3432513600 -18000 1 EASST} + {3445815600 -21600 0 EAST} + {3464568000 -18000 1 EASST} + {3477265200 -21600 0 EAST} + {3496017600 -18000 1 EASST} + {3508714800 -21600 0 EAST} + {3527467200 -18000 1 EASST} + {3540769200 -21600 0 EAST} + {3558916800 -18000 1 EASST} + {3572218800 -21600 0 EAST} + {3590366400 -18000 1 EASST} + {3603668400 -21600 0 EAST} + {3622420800 -18000 1 EASST} + {3635118000 -21600 0 EAST} + {3653870400 -18000 1 EASST} + {3666567600 -21600 0 EAST} + {3685320000 -18000 1 EASST} + {3698017200 -21600 0 EAST} + {3716769600 -18000 1 EASST} + {3730071600 -21600 0 EAST} + {3748219200 -18000 1 EASST} + {3761521200 -21600 0 EAST} + {3779668800 -18000 1 EASST} + {3792970800 -21600 0 EAST} + {3811723200 -18000 1 EASST} + {3824420400 -21600 0 EAST} + {3843172800 -18000 1 EASST} + {3855870000 -21600 0 EAST} + {3874622400 -18000 1 EASST} + {3887924400 -21600 0 EAST} + {3906072000 -18000 1 EASST} + {3919374000 -21600 0 EAST} + {3937521600 -18000 1 EASST} + {3950823600 -21600 0 EAST} + {3968971200 -18000 1 EASST} + {3982273200 -21600 0 EAST} + {4001025600 -18000 1 EASST} + {4013722800 -21600 0 EAST} + {4032475200 -18000 1 EASST} + {4045172400 -21600 0 EAST} + {4063924800 -18000 1 EASST} + {4077226800 -21600 0 EAST} + {4095374400 -18000 1 EASST} +} diff --git a/library/tzdata/Pacific/Efate b/library/tzdata/Pacific/Efate index d6df182..18db6de 100644 --- a/library/tzdata/Pacific/Efate +++ b/library/tzdata/Pacific/Efate @@ -1,26 +1,26 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Efate) { - {-9223372036854775808 40396 0 LMT} - {-1829387596 39600 0 VUT} - {433256400 43200 1 VUST} - {448977600 39600 0 VUT} - {467298000 43200 1 VUST} - {480427200 39600 0 VUT} - {496760400 43200 1 VUST} - {511876800 39600 0 VUT} - {528210000 43200 1 VUST} - {543931200 39600 0 VUT} - {559659600 43200 1 VUST} - {575380800 39600 0 VUT} - {591109200 43200 1 VUST} - {606830400 39600 0 VUT} - {622558800 43200 1 VUST} - {638280000 39600 0 VUT} - {654008400 43200 1 VUST} - {669729600 39600 0 VUT} - {686062800 43200 1 VUST} - {696340800 39600 0 VUT} - {719931600 43200 1 VUST} - {727790400 39600 0 VUT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Efate) { + {-9223372036854775808 40396 0 LMT} + {-1829387596 39600 0 VUT} + {433256400 43200 1 VUST} + {448977600 39600 0 VUT} + {467298000 43200 1 VUST} + {480427200 39600 0 VUT} + {496760400 43200 1 VUST} + {511876800 39600 0 VUT} + {528210000 43200 1 VUST} + {543931200 39600 0 VUT} + {559659600 43200 1 VUST} + {575380800 39600 0 VUT} + {591109200 43200 1 VUST} + {606830400 39600 0 VUT} + {622558800 43200 1 VUST} + {638280000 39600 0 VUT} + {654008400 43200 1 VUST} + {669729600 39600 0 VUT} + {686062800 43200 1 VUST} + {696340800 39600 0 VUT} + {719931600 43200 1 VUST} + {727790400 39600 0 VUT} +} diff --git a/library/tzdata/Pacific/Enderbury b/library/tzdata/Pacific/Enderbury index a5f5839..55784c4 100644 --- a/library/tzdata/Pacific/Enderbury +++ b/library/tzdata/Pacific/Enderbury @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Enderbury) { - {-9223372036854775808 -41060 0 LMT} - {-2177411740 -43200 0 PHOT} - {307627200 -39600 0 PHOT} - {788958000 46800 0 PHOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Enderbury) { + {-9223372036854775808 -41060 0 LMT} + {-2177411740 -43200 0 PHOT} + {307627200 -39600 0 PHOT} + {788958000 46800 0 PHOT} +} diff --git a/library/tzdata/Pacific/Fakaofo b/library/tzdata/Pacific/Fakaofo index bb3f93e..7420639 100644 --- a/library/tzdata/Pacific/Fakaofo +++ b/library/tzdata/Pacific/Fakaofo @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Fakaofo) { - {-9223372036854775808 -41096 0 LMT} - {-2177411704 -36000 0 TKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Fakaofo) { + {-9223372036854775808 -41096 0 LMT} + {-2177411704 -36000 0 TKT} +} diff --git a/library/tzdata/Pacific/Fiji b/library/tzdata/Pacific/Fiji index 57eb643..2194d59 100644 --- a/library/tzdata/Pacific/Fiji +++ b/library/tzdata/Pacific/Fiji @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Fiji) { - {-9223372036854775808 42820 0 LMT} - {-1709985220 43200 0 FJT} - {909842400 46800 1 FJST} - {920124000 43200 0 FJT} - {941896800 46800 1 FJST} - {951573600 43200 0 FJT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Fiji) { + {-9223372036854775808 42820 0 LMT} + {-1709985220 43200 0 FJT} + {909842400 46800 1 FJST} + {920124000 43200 0 FJT} + {941896800 46800 1 FJST} + {951573600 43200 0 FJT} +} diff --git a/library/tzdata/Pacific/Funafuti b/library/tzdata/Pacific/Funafuti index b40c989..b94e4fb 100644 --- a/library/tzdata/Pacific/Funafuti +++ b/library/tzdata/Pacific/Funafuti @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Funafuti) { - {-9223372036854775808 43012 0 LMT} - {-2177495812 43200 0 TVT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Funafuti) { + {-9223372036854775808 43012 0 LMT} + {-2177495812 43200 0 TVT} +} diff --git a/library/tzdata/Pacific/Galapagos b/library/tzdata/Pacific/Galapagos index ff79a8d..d8c80e8 100644 --- a/library/tzdata/Pacific/Galapagos +++ b/library/tzdata/Pacific/Galapagos @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Galapagos) { - {-9223372036854775808 -21504 0 LMT} - {-1230746496 -18000 0 ECT} - {504939600 -21600 0 GALT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Galapagos) { + {-9223372036854775808 -21504 0 LMT} + {-1230746496 -18000 0 ECT} + {504939600 -21600 0 GALT} +} diff --git a/library/tzdata/Pacific/Gambier b/library/tzdata/Pacific/Gambier index 4ad611e..d69f99a 100644 --- a/library/tzdata/Pacific/Gambier +++ b/library/tzdata/Pacific/Gambier @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Gambier) { - {-9223372036854775808 -32388 0 LMT} - {-1806678012 -32400 0 GAMT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Gambier) { + {-9223372036854775808 -32388 0 LMT} + {-1806678012 -32400 0 GAMT} +} diff --git a/library/tzdata/Pacific/Guadalcanal b/library/tzdata/Pacific/Guadalcanal index 6ad2bee..09a67dd 100644 --- a/library/tzdata/Pacific/Guadalcanal +++ b/library/tzdata/Pacific/Guadalcanal @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Guadalcanal) { - {-9223372036854775808 38388 0 LMT} - {-1806748788 39600 0 SBT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Guadalcanal) { + {-9223372036854775808 38388 0 LMT} + {-1806748788 39600 0 SBT} +} diff --git a/library/tzdata/Pacific/Guam b/library/tzdata/Pacific/Guam index 91c5a16..79cca80 100644 --- a/library/tzdata/Pacific/Guam +++ b/library/tzdata/Pacific/Guam @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Guam) { - {-9223372036854775808 -51660 0 LMT} - {-3944626740 34740 0 LMT} - {-2177487540 36000 0 GST} - {977493600 36000 0 ChST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Guam) { + {-9223372036854775808 -51660 0 LMT} + {-3944626740 34740 0 LMT} + {-2177487540 36000 0 GST} + {977493600 36000 0 ChST} +} diff --git a/library/tzdata/Pacific/Honolulu b/library/tzdata/Pacific/Honolulu index c928582..f441a02 100644 --- a/library/tzdata/Pacific/Honolulu +++ b/library/tzdata/Pacific/Honolulu @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Honolulu) { - {-9223372036854775808 -37886 0 LMT} - {-2208907714 -37800 0 HST} - {-1157283000 -34200 1 HDT} - {-1155472200 -34200 0 HST} - {-880201800 -34200 1 HWT} - {-769395600 -34200 1 HPT} - {-765376200 -37800 0 HST} - {-712150200 -36000 0 HST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Honolulu) { + {-9223372036854775808 -37886 0 LMT} + {-2208907714 -37800 0 HST} + {-1157283000 -34200 1 HDT} + {-1155472200 -34200 0 HST} + {-880201800 -34200 1 HWT} + {-769395600 -34200 1 HPT} + {-765376200 -37800 0 HST} + {-712150200 -36000 0 HST} +} diff --git a/library/tzdata/Pacific/Johnston b/library/tzdata/Pacific/Johnston index 24033a2..7f9fee4 100644 --- a/library/tzdata/Pacific/Johnston +++ b/library/tzdata/Pacific/Johnston @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Johnston) { - {-9223372036854775808 -36000 0 HST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Johnston) { + {-9223372036854775808 -36000 0 HST} +} diff --git a/library/tzdata/Pacific/Kiritimati b/library/tzdata/Pacific/Kiritimati index 3996e96..06b695b 100644 --- a/library/tzdata/Pacific/Kiritimati +++ b/library/tzdata/Pacific/Kiritimati @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Kiritimati) { - {-9223372036854775808 -37760 0 LMT} - {-2177415040 -38400 0 LINT} - {307622400 -36000 0 LINT} - {788954400 50400 0 LINT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Kiritimati) { + {-9223372036854775808 -37760 0 LMT} + {-2177415040 -38400 0 LINT} + {307622400 -36000 0 LINT} + {788954400 50400 0 LINT} +} diff --git a/library/tzdata/Pacific/Kosrae b/library/tzdata/Pacific/Kosrae index c3d98f7..a16b19d 100644 --- a/library/tzdata/Pacific/Kosrae +++ b/library/tzdata/Pacific/Kosrae @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Kosrae) { - {-9223372036854775808 39116 0 LMT} - {-2177491916 39600 0 KOST} - {-7988400 43200 0 KOST} - {915105600 39600 0 KOST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Kosrae) { + {-9223372036854775808 39116 0 LMT} + {-2177491916 39600 0 KOST} + {-7988400 43200 0 KOST} + {915105600 39600 0 KOST} +} diff --git a/library/tzdata/Pacific/Kwajalein b/library/tzdata/Pacific/Kwajalein index 7b43796..8600b3b 100644 --- a/library/tzdata/Pacific/Kwajalein +++ b/library/tzdata/Pacific/Kwajalein @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Kwajalein) { - {-9223372036854775808 40160 0 LMT} - {-2177492960 39600 0 MHT} - {-7988400 -43200 0 KWAT} - {745848000 43200 0 MHT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Kwajalein) { + {-9223372036854775808 40160 0 LMT} + {-2177492960 39600 0 MHT} + {-7988400 -43200 0 KWAT} + {745848000 43200 0 MHT} +} diff --git a/library/tzdata/Pacific/Majuro b/library/tzdata/Pacific/Majuro index e701b05..468baab 100644 --- a/library/tzdata/Pacific/Majuro +++ b/library/tzdata/Pacific/Majuro @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Majuro) { - {-9223372036854775808 41088 0 LMT} - {-2177493888 39600 0 MHT} - {-7988400 43200 0 MHT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Majuro) { + {-9223372036854775808 41088 0 LMT} + {-2177493888 39600 0 MHT} + {-7988400 43200 0 MHT} +} diff --git a/library/tzdata/Pacific/Marquesas b/library/tzdata/Pacific/Marquesas index 0d6e545..9bb508f 100644 --- a/library/tzdata/Pacific/Marquesas +++ b/library/tzdata/Pacific/Marquesas @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Marquesas) { - {-9223372036854775808 -33480 0 LMT} - {-1806676920 -34200 0 MART} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Marquesas) { + {-9223372036854775808 -33480 0 LMT} + {-1806676920 -34200 0 MART} +} diff --git a/library/tzdata/Pacific/Midway b/library/tzdata/Pacific/Midway index 318ce84..c07b030 100644 --- a/library/tzdata/Pacific/Midway +++ b/library/tzdata/Pacific/Midway @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Midway) { - {-9223372036854775808 -42568 0 LMT} - {-2177410232 -39600 0 NST} - {-428504400 -36000 1 NDT} - {-420645600 -39600 0 NST} - {-86878800 -39600 0 BST} - {439038000 -39600 0 SST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Midway) { + {-9223372036854775808 -42568 0 LMT} + {-2177410232 -39600 0 NST} + {-428504400 -36000 1 NDT} + {-420645600 -39600 0 NST} + {-86878800 -39600 0 BST} + {439038000 -39600 0 SST} +} diff --git a/library/tzdata/Pacific/Nauru b/library/tzdata/Pacific/Nauru index 0926efc..2da1e25 100644 --- a/library/tzdata/Pacific/Nauru +++ b/library/tzdata/Pacific/Nauru @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Nauru) { - {-9223372036854775808 40060 0 LMT} - {-1545131260 41400 0 NRT} - {-877347000 32400 0 JST} - {-800960400 41400 0 NRT} - {294323400 43200 0 NRT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Nauru) { + {-9223372036854775808 40060 0 LMT} + {-1545131260 41400 0 NRT} + {-877347000 32400 0 JST} + {-800960400 41400 0 NRT} + {294323400 43200 0 NRT} +} diff --git a/library/tzdata/Pacific/Niue b/library/tzdata/Pacific/Niue index ad8bffd..cf149fc 100644 --- a/library/tzdata/Pacific/Niue +++ b/library/tzdata/Pacific/Niue @@ -1,8 +1,8 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Niue) { - {-9223372036854775808 -40780 0 LMT} - {-2177412020 -40800 0 NUT} - {-599575200 -41400 0 NUT} - {276089400 -39600 0 NUT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Niue) { + {-9223372036854775808 -40780 0 LMT} + {-2177412020 -40800 0 NUT} + {-599575200 -41400 0 NUT} + {276089400 -39600 0 NUT} +} diff --git a/library/tzdata/Pacific/Norfolk b/library/tzdata/Pacific/Norfolk index a399902..a8fac15 100644 --- a/library/tzdata/Pacific/Norfolk +++ b/library/tzdata/Pacific/Norfolk @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Norfolk) { - {-9223372036854775808 40312 0 LMT} - {-2177493112 40320 0 NMT} - {-599656320 41400 0 NFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Norfolk) { + {-9223372036854775808 40312 0 LMT} + {-2177493112 40320 0 NMT} + {-599656320 41400 0 NFT} +} diff --git a/library/tzdata/Pacific/Noumea b/library/tzdata/Pacific/Noumea index 332eee7..db1eeae 100644 --- a/library/tzdata/Pacific/Noumea +++ b/library/tzdata/Pacific/Noumea @@ -1,12 +1,12 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Noumea) { - {-9223372036854775808 39948 0 LMT} - {-1829387148 39600 0 NCT} - {250002000 43200 1 NCST} - {257342400 39600 0 NCT} - {281451600 43200 1 NCST} - {288878400 39600 0 NCT} - {849366000 43200 1 NCST} - {857228400 39600 0 NCT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Noumea) { + {-9223372036854775808 39948 0 LMT} + {-1829387148 39600 0 NCT} + {250002000 43200 1 NCST} + {257342400 39600 0 NCT} + {281451600 43200 1 NCST} + {288878400 39600 0 NCT} + {849366000 43200 1 NCST} + {857228400 39600 0 NCT} +} diff --git a/library/tzdata/Pacific/Pago_Pago b/library/tzdata/Pacific/Pago_Pago index dc2cd53..830f9ee 100644 --- a/library/tzdata/Pacific/Pago_Pago +++ b/library/tzdata/Pacific/Pago_Pago @@ -1,10 +1,10 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Pago_Pago) { - {-9223372036854775808 45432 0 LMT} - {-2855738232 -40968 0 LMT} - {-1861879032 -41400 0 SAMT} - {-631110600 -39600 0 NST} - {-86878800 -39600 0 BST} - {439038000 -39600 0 SST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Pago_Pago) { + {-9223372036854775808 45432 0 LMT} + {-2855738232 -40968 0 LMT} + {-1861879032 -41400 0 SAMT} + {-631110600 -39600 0 NST} + {-86878800 -39600 0 BST} + {439038000 -39600 0 SST} +} diff --git a/library/tzdata/Pacific/Palau b/library/tzdata/Pacific/Palau index 2b1622f..ee0606d 100644 --- a/library/tzdata/Pacific/Palau +++ b/library/tzdata/Pacific/Palau @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Palau) { - {-9223372036854775808 32276 0 LMT} - {-2177485076 32400 0 PWT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Palau) { + {-9223372036854775808 32276 0 LMT} + {-2177485076 32400 0 PWT} +} diff --git a/library/tzdata/Pacific/Pitcairn b/library/tzdata/Pacific/Pitcairn index 183b07b..d62644e 100644 --- a/library/tzdata/Pacific/Pitcairn +++ b/library/tzdata/Pacific/Pitcairn @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Pitcairn) { - {-9223372036854775808 -31220 0 LMT} - {-2177421580 -30600 0 PNT} - {893665800 -28800 0 PST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Pitcairn) { + {-9223372036854775808 -31220 0 LMT} + {-2177421580 -30600 0 PNT} + {893665800 -28800 0 PST} +} diff --git a/library/tzdata/Pacific/Ponape b/library/tzdata/Pacific/Ponape index 4811b88..092b0a9 100644 --- a/library/tzdata/Pacific/Ponape +++ b/library/tzdata/Pacific/Ponape @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Ponape) { - {-9223372036854775808 37972 0 LMT} - {-2177490772 39600 0 PONT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Ponape) { + {-9223372036854775808 37972 0 LMT} + {-2177490772 39600 0 PONT} +} diff --git a/library/tzdata/Pacific/Port_Moresby b/library/tzdata/Pacific/Port_Moresby index 0f81755..65eb533 100644 --- a/library/tzdata/Pacific/Port_Moresby +++ b/library/tzdata/Pacific/Port_Moresby @@ -1,7 +1,7 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Port_Moresby) { - {-9223372036854775808 35320 0 LMT} - {-2840176120 35312 0 PMMT} - {-2366790512 36000 0 PGT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Port_Moresby) { + {-9223372036854775808 35320 0 LMT} + {-2840176120 35312 0 PMMT} + {-2366790512 36000 0 PGT} +} diff --git a/library/tzdata/Pacific/Rarotonga b/library/tzdata/Pacific/Rarotonga index 4a7688c..a4ecf8d 100644 --- a/library/tzdata/Pacific/Rarotonga +++ b/library/tzdata/Pacific/Rarotonga @@ -1,32 +1,32 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Rarotonga) { - {-9223372036854775808 -38344 0 LMT} - {-2177414456 -37800 0 CKT} - {279714600 -34200 0 CKHST} - {289387800 -36000 0 CKT} - {309952800 -34200 1 CKHST} - {320837400 -36000 0 CKT} - {341402400 -34200 1 CKHST} - {352287000 -36000 0 CKT} - {372852000 -34200 1 CKHST} - {384341400 -36000 0 CKT} - {404906400 -34200 1 CKHST} - {415791000 -36000 0 CKT} - {436356000 -34200 1 CKHST} - {447240600 -36000 0 CKT} - {467805600 -34200 1 CKHST} - {478690200 -36000 0 CKT} - {499255200 -34200 1 CKHST} - {510139800 -36000 0 CKT} - {530704800 -34200 1 CKHST} - {541589400 -36000 0 CKT} - {562154400 -34200 1 CKHST} - {573643800 -36000 0 CKT} - {594208800 -34200 1 CKHST} - {605093400 -36000 0 CKT} - {625658400 -34200 1 CKHST} - {636543000 -36000 0 CKT} - {657108000 -34200 1 CKHST} - {667992600 -36000 0 CKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Rarotonga) { + {-9223372036854775808 -38344 0 LMT} + {-2177414456 -37800 0 CKT} + {279714600 -34200 0 CKHST} + {289387800 -36000 0 CKT} + {309952800 -34200 1 CKHST} + {320837400 -36000 0 CKT} + {341402400 -34200 1 CKHST} + {352287000 -36000 0 CKT} + {372852000 -34200 1 CKHST} + {384341400 -36000 0 CKT} + {404906400 -34200 1 CKHST} + {415791000 -36000 0 CKT} + {436356000 -34200 1 CKHST} + {447240600 -36000 0 CKT} + {467805600 -34200 1 CKHST} + {478690200 -36000 0 CKT} + {499255200 -34200 1 CKHST} + {510139800 -36000 0 CKT} + {530704800 -34200 1 CKHST} + {541589400 -36000 0 CKT} + {562154400 -34200 1 CKHST} + {573643800 -36000 0 CKT} + {594208800 -34200 1 CKHST} + {605093400 -36000 0 CKT} + {625658400 -34200 1 CKHST} + {636543000 -36000 0 CKT} + {657108000 -34200 1 CKHST} + {667992600 -36000 0 CKT} +} diff --git a/library/tzdata/Pacific/Saipan b/library/tzdata/Pacific/Saipan index 45fcfba..b799298 100644 --- a/library/tzdata/Pacific/Saipan +++ b/library/tzdata/Pacific/Saipan @@ -1,9 +1,9 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Saipan) { - {-9223372036854775808 -51420 0 LMT} - {-3944626980 34980 0 LMT} - {-2177487780 32400 0 MPT} - {-7981200 36000 0 MPT} - {977493600 36000 0 ChST} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Saipan) { + {-9223372036854775808 -51420 0 LMT} + {-3944626980 34980 0 LMT} + {-2177487780 32400 0 MPT} + {-7981200 36000 0 MPT} + {977493600 36000 0 ChST} +} diff --git a/library/tzdata/Pacific/Samoa b/library/tzdata/Pacific/Samoa index 8db0891..686eb34 100644 --- a/library/tzdata/Pacific/Samoa +++ b/library/tzdata/Pacific/Samoa @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Pago_Pago)]} { - LoadTimeZoneFile Pacific/Pago_Pago -} -set TZData(:Pacific/Samoa) $TZData(:Pacific/Pago_Pago) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Pago_Pago)]} { + LoadTimeZoneFile Pacific/Pago_Pago +} +set TZData(:Pacific/Samoa) $TZData(:Pacific/Pago_Pago) diff --git a/library/tzdata/Pacific/Tahiti b/library/tzdata/Pacific/Tahiti index 6117f02..f739223 100644 --- a/library/tzdata/Pacific/Tahiti +++ b/library/tzdata/Pacific/Tahiti @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Tahiti) { - {-9223372036854775808 -35896 0 LMT} - {-1806674504 -36000 0 TAHT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Tahiti) { + {-9223372036854775808 -35896 0 LMT} + {-1806674504 -36000 0 TAHT} +} diff --git a/library/tzdata/Pacific/Tarawa b/library/tzdata/Pacific/Tarawa index 2ee564b..2dab5a2 100644 --- a/library/tzdata/Pacific/Tarawa +++ b/library/tzdata/Pacific/Tarawa @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Tarawa) { - {-9223372036854775808 41524 0 LMT} - {-2177494324 43200 0 GILT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Tarawa) { + {-9223372036854775808 41524 0 LMT} + {-2177494324 43200 0 GILT} +} diff --git a/library/tzdata/Pacific/Tongatapu b/library/tzdata/Pacific/Tongatapu index 6f6e4a8..da9f857 100644 --- a/library/tzdata/Pacific/Tongatapu +++ b/library/tzdata/Pacific/Tongatapu @@ -1,14 +1,14 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Tongatapu) { - {-9223372036854775808 44360 0 LMT} - {-2177497160 44400 0 TOT} - {-915193200 46800 0 TOT} - {915102000 46800 0 TOT} - {939214800 50400 1 TOST} - {953384400 46800 0 TOT} - {973342800 50400 1 TOST} - {980596800 46800 0 TOT} - {1004792400 50400 1 TOST} - {1012046400 46800 0 TOT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Tongatapu) { + {-9223372036854775808 44360 0 LMT} + {-2177497160 44400 0 TOT} + {-915193200 46800 0 TOT} + {915102000 46800 0 TOT} + {939214800 50400 1 TOST} + {953384400 46800 0 TOT} + {973342800 50400 1 TOST} + {980596800 46800 0 TOT} + {1004792400 50400 1 TOST} + {1012046400 46800 0 TOT} +} diff --git a/library/tzdata/Pacific/Truk b/library/tzdata/Pacific/Truk index 67808ca..c152198 100644 --- a/library/tzdata/Pacific/Truk +++ b/library/tzdata/Pacific/Truk @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Truk) { - {-9223372036854775808 36428 0 LMT} - {-2177489228 36000 0 TRUT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Truk) { + {-9223372036854775808 36428 0 LMT} + {-2177489228 36000 0 TRUT} +} diff --git a/library/tzdata/Pacific/Wake b/library/tzdata/Pacific/Wake index 8e87682..5afedf5 100644 --- a/library/tzdata/Pacific/Wake +++ b/library/tzdata/Pacific/Wake @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Wake) { - {-9223372036854775808 39988 0 LMT} - {-2177492788 43200 0 WAKT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Wake) { + {-9223372036854775808 39988 0 LMT} + {-2177492788 43200 0 WAKT} +} diff --git a/library/tzdata/Pacific/Wallis b/library/tzdata/Pacific/Wallis index 1f99f2b..7bdd964 100644 --- a/library/tzdata/Pacific/Wallis +++ b/library/tzdata/Pacific/Wallis @@ -1,6 +1,6 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Wallis) { - {-9223372036854775808 44120 0 LMT} - {-2177496920 43200 0 WFT} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Wallis) { + {-9223372036854775808 44120 0 LMT} + {-2177496920 43200 0 WFT} +} diff --git a/library/tzdata/Pacific/Yap b/library/tzdata/Pacific/Yap index fed590a..a97a195 100644 --- a/library/tzdata/Pacific/Yap +++ b/library/tzdata/Pacific/Yap @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Truk)]} { - LoadTimeZoneFile Pacific/Truk -} -set TZData(:Pacific/Yap) $TZData(:Pacific/Truk) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Truk)]} { + LoadTimeZoneFile Pacific/Truk +} +set TZData(:Pacific/Yap) $TZData(:Pacific/Truk) diff --git a/library/tzdata/Poland b/library/tzdata/Poland index 2534324..bd24028 100644 --- a/library/tzdata/Poland +++ b/library/tzdata/Poland @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Warsaw)]} { - LoadTimeZoneFile Europe/Warsaw -} -set TZData(:Poland) $TZData(:Europe/Warsaw) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Warsaw)]} { + LoadTimeZoneFile Europe/Warsaw +} +set TZData(:Poland) $TZData(:Europe/Warsaw) diff --git a/library/tzdata/Portugal b/library/tzdata/Portugal index 908e581..d1ffd9f 100644 --- a/library/tzdata/Portugal +++ b/library/tzdata/Portugal @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Lisbon)]} { - LoadTimeZoneFile Europe/Lisbon -} -set TZData(:Portugal) $TZData(:Europe/Lisbon) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Lisbon)]} { + LoadTimeZoneFile Europe/Lisbon +} +set TZData(:Portugal) $TZData(:Europe/Lisbon) diff --git a/library/tzdata/ROC b/library/tzdata/ROC index 9902ce9..5dd196d 100644 --- a/library/tzdata/ROC +++ b/library/tzdata/ROC @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Taipei)]} { - LoadTimeZoneFile Asia/Taipei -} -set TZData(:ROC) $TZData(:Asia/Taipei) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Taipei)]} { + LoadTimeZoneFile Asia/Taipei +} +set TZData(:ROC) $TZData(:Asia/Taipei) diff --git a/library/tzdata/ROK b/library/tzdata/ROK index e2ad2d8..1162ce4 100644 --- a/library/tzdata/ROK +++ b/library/tzdata/ROK @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Seoul)]} { - LoadTimeZoneFile Asia/Seoul -} -set TZData(:ROK) $TZData(:Asia/Seoul) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Seoul)]} { + LoadTimeZoneFile Asia/Seoul +} +set TZData(:ROK) $TZData(:Asia/Seoul) diff --git a/library/tzdata/Singapore b/library/tzdata/Singapore index 7381f8f..1584b35 100644 --- a/library/tzdata/Singapore +++ b/library/tzdata/Singapore @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Singapore)]} { - LoadTimeZoneFile Asia/Singapore -} -set TZData(:Singapore) $TZData(:Asia/Singapore) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Asia/Singapore)]} { + LoadTimeZoneFile Asia/Singapore +} +set TZData(:Singapore) $TZData(:Asia/Singapore) diff --git a/library/tzdata/Turkey b/library/tzdata/Turkey index 120da0e..e20a7a5 100644 --- a/library/tzdata/Turkey +++ b/library/tzdata/Turkey @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Istanbul)]} { - LoadTimeZoneFile Europe/Istanbul -} -set TZData(:Turkey) $TZData(:Europe/Istanbul) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Istanbul)]} { + LoadTimeZoneFile Europe/Istanbul +} +set TZData(:Turkey) $TZData(:Europe/Istanbul) diff --git a/library/tzdata/UCT b/library/tzdata/UCT index 7e78306..8449328 100644 --- a/library/tzdata/UCT +++ b/library/tzdata/UCT @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UCT)]} { - LoadTimeZoneFile Etc/UCT -} -set TZData(:UCT) $TZData(:Etc/UCT) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UCT)]} { + LoadTimeZoneFile Etc/UCT +} +set TZData(:UCT) $TZData(:Etc/UCT) diff --git a/library/tzdata/US/Alaska b/library/tzdata/US/Alaska index 2afc7d1..69a3899 100644 --- a/library/tzdata/US/Alaska +++ b/library/tzdata/US/Alaska @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Anchorage)]} { - LoadTimeZoneFile America/Anchorage -} -set TZData(:US/Alaska) $TZData(:America/Anchorage) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Anchorage)]} { + LoadTimeZoneFile America/Anchorage +} +set TZData(:US/Alaska) $TZData(:America/Anchorage) diff --git a/library/tzdata/US/Aleutian b/library/tzdata/US/Aleutian index cd7a011..024e70b 100644 --- a/library/tzdata/US/Aleutian +++ b/library/tzdata/US/Aleutian @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Adak)]} { - LoadTimeZoneFile America/Adak -} -set TZData(:US/Aleutian) $TZData(:America/Adak) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Adak)]} { + LoadTimeZoneFile America/Adak +} +set TZData(:US/Aleutian) $TZData(:America/Adak) diff --git a/library/tzdata/US/Arizona b/library/tzdata/US/Arizona index 17d0dd8..8eaa961 100644 --- a/library/tzdata/US/Arizona +++ b/library/tzdata/US/Arizona @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Phoenix)]} { - LoadTimeZoneFile America/Phoenix -} -set TZData(:US/Arizona) $TZData(:America/Phoenix) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Phoenix)]} { + LoadTimeZoneFile America/Phoenix +} +set TZData(:US/Arizona) $TZData(:America/Phoenix) diff --git a/library/tzdata/US/Central b/library/tzdata/US/Central index e13980f..2aab66e 100644 --- a/library/tzdata/US/Central +++ b/library/tzdata/US/Central @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Chicago)]} { - LoadTimeZoneFile America/Chicago -} -set TZData(:US/Central) $TZData(:America/Chicago) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Chicago)]} { + LoadTimeZoneFile America/Chicago +} +set TZData(:US/Central) $TZData(:America/Chicago) diff --git a/library/tzdata/US/East-Indiana b/library/tzdata/US/East-Indiana index 0ee4428..2035a06 100644 --- a/library/tzdata/US/East-Indiana +++ b/library/tzdata/US/East-Indiana @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Indianapolis)]} { - LoadTimeZoneFile America/Indiana/Indianapolis -} -set TZData(:US/East-Indiana) $TZData(:America/Indiana/Indianapolis) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Indianapolis)]} { + LoadTimeZoneFile America/Indiana/Indianapolis +} +set TZData(:US/East-Indiana) $TZData(:America/Indiana/Indianapolis) diff --git a/library/tzdata/US/Eastern b/library/tzdata/US/Eastern index ceee746..3cf2651 100644 --- a/library/tzdata/US/Eastern +++ b/library/tzdata/US/Eastern @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/New_York)]} { - LoadTimeZoneFile America/New_York -} -set TZData(:US/Eastern) $TZData(:America/New_York) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/New_York)]} { + LoadTimeZoneFile America/New_York +} +set TZData(:US/Eastern) $TZData(:America/New_York) diff --git a/library/tzdata/US/Hawaii b/library/tzdata/US/Hawaii index 0ff0b1c..6d1af65 100644 --- a/library/tzdata/US/Hawaii +++ b/library/tzdata/US/Hawaii @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Honolulu)]} { - LoadTimeZoneFile Pacific/Honolulu -} -set TZData(:US/Hawaii) $TZData(:Pacific/Honolulu) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Honolulu)]} { + LoadTimeZoneFile Pacific/Honolulu +} +set TZData(:US/Hawaii) $TZData(:Pacific/Honolulu) diff --git a/library/tzdata/US/Indiana-Starke b/library/tzdata/US/Indiana-Starke index e2cced4..6ffe0e2 100644 --- a/library/tzdata/US/Indiana-Starke +++ b/library/tzdata/US/Indiana-Starke @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Indiana/Knox)]} { - LoadTimeZoneFile America/Indiana/Knox -} -set TZData(:US/Indiana-Starke) $TZData(:America/Indiana/Knox) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Indiana/Knox)]} { + LoadTimeZoneFile America/Indiana/Knox +} +set TZData(:US/Indiana-Starke) $TZData(:America/Indiana/Knox) diff --git a/library/tzdata/US/Michigan b/library/tzdata/US/Michigan index dd307f0..b15035c 100644 --- a/library/tzdata/US/Michigan +++ b/library/tzdata/US/Michigan @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Detroit)]} { - LoadTimeZoneFile America/Detroit -} -set TZData(:US/Michigan) $TZData(:America/Detroit) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Detroit)]} { + LoadTimeZoneFile America/Detroit +} +set TZData(:US/Michigan) $TZData(:America/Detroit) diff --git a/library/tzdata/US/Mountain b/library/tzdata/US/Mountain index c91abd8..b54235f 100644 --- a/library/tzdata/US/Mountain +++ b/library/tzdata/US/Mountain @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Denver)]} { - LoadTimeZoneFile America/Denver -} -set TZData(:US/Mountain) $TZData(:America/Denver) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Denver)]} { + LoadTimeZoneFile America/Denver +} +set TZData(:US/Mountain) $TZData(:America/Denver) diff --git a/library/tzdata/US/Pacific b/library/tzdata/US/Pacific index b53a54a..7232215 100644 --- a/library/tzdata/US/Pacific +++ b/library/tzdata/US/Pacific @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Los_Angeles)]} { - LoadTimeZoneFile America/Los_Angeles -} -set TZData(:US/Pacific) $TZData(:America/Los_Angeles) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Los_Angeles)]} { + LoadTimeZoneFile America/Los_Angeles +} +set TZData(:US/Pacific) $TZData(:America/Los_Angeles) diff --git a/library/tzdata/US/Pacific-New b/library/tzdata/US/Pacific-New index 89fd6fc..2eb30f8 100644 --- a/library/tzdata/US/Pacific-New +++ b/library/tzdata/US/Pacific-New @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Los_Angeles)]} { - LoadTimeZoneFile America/Los_Angeles -} -set TZData(:US/Pacific-New) $TZData(:America/Los_Angeles) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Los_Angeles)]} { + LoadTimeZoneFile America/Los_Angeles +} +set TZData(:US/Pacific-New) $TZData(:America/Los_Angeles) diff --git a/library/tzdata/US/Samoa b/library/tzdata/US/Samoa index 2b491d5..ad86b4f 100644 --- a/library/tzdata/US/Samoa +++ b/library/tzdata/US/Samoa @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Pago_Pago)]} { - LoadTimeZoneFile Pacific/Pago_Pago -} -set TZData(:US/Samoa) $TZData(:Pacific/Pago_Pago) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Pacific/Pago_Pago)]} { + LoadTimeZoneFile Pacific/Pago_Pago +} +set TZData(:US/Samoa) $TZData(:Pacific/Pago_Pago) diff --git a/library/tzdata/UTC b/library/tzdata/UTC index 1307f77..6d04d96 100644 --- a/library/tzdata/UTC +++ b/library/tzdata/UTC @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:UTC) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:UTC) $TZData(:Etc/UTC) diff --git a/library/tzdata/Universal b/library/tzdata/Universal index bddfd71..4a9ed5e 100644 --- a/library/tzdata/Universal +++ b/library/tzdata/Universal @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:Universal) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:Universal) $TZData(:Etc/UTC) diff --git a/library/tzdata/W-SU b/library/tzdata/W-SU index b653e7b..7e1f613 100644 --- a/library/tzdata/W-SU +++ b/library/tzdata/W-SU @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Europe/Moscow)]} { - LoadTimeZoneFile Europe/Moscow -} -set TZData(:W-SU) $TZData(:Europe/Moscow) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Moscow)]} { + LoadTimeZoneFile Europe/Moscow +} +set TZData(:W-SU) $TZData(:Europe/Moscow) diff --git a/library/tzdata/WET b/library/tzdata/WET index c60a5c5..60366a3 100644 --- a/library/tzdata/WET +++ b/library/tzdata/WET @@ -1,251 +1,251 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:WET) { - {-9223372036854775808 0 0 WET} - {228877200 3600 1 WEST} - {243997200 0 0 WET} - {260326800 3600 1 WEST} - {276051600 0 0 WET} - {291776400 3600 1 WEST} - {307501200 0 0 WET} - {323830800 3600 1 WEST} - {338950800 0 0 WET} - {354675600 3600 1 WEST} - {370400400 0 0 WET} - {386125200 3600 1 WEST} - {401850000 0 0 WET} - {417574800 3600 1 WEST} - {433299600 0 0 WET} - {449024400 3600 1 WEST} - {465354000 0 0 WET} - {481078800 3600 1 WEST} - {496803600 0 0 WET} - {512528400 3600 1 WEST} - {528253200 0 0 WET} - {543978000 3600 1 WEST} - {559702800 0 0 WET} - {575427600 3600 1 WEST} - {591152400 0 0 WET} - {606877200 3600 1 WEST} - {622602000 0 0 WET} - {638326800 3600 1 WEST} - {654656400 0 0 WET} - {670381200 3600 1 WEST} - {686106000 0 0 WET} - {701830800 3600 1 WEST} - {717555600 0 0 WET} - {733280400 3600 1 WEST} - {749005200 0 0 WET} - {764730000 3600 1 WEST} - {780454800 0 0 WET} - {796179600 3600 1 WEST} - {811904400 0 0 WET} - {828234000 3600 1 WEST} - {846378000 0 0 WET} - {859683600 3600 1 WEST} - {877827600 0 0 WET} - {891133200 3600 1 WEST} - {909277200 0 0 WET} - {922582800 3600 1 WEST} - {941331600 0 0 WET} - {954032400 3600 1 WEST} - {972781200 0 0 WET} - {985482000 3600 1 WEST} - {1004230800 0 0 WET} - {1017536400 3600 1 WEST} - {1035680400 0 0 WET} - {1048986000 3600 1 WEST} - {1067130000 0 0 WET} - {1080435600 3600 1 WEST} - {1099184400 0 0 WET} - {1111885200 3600 1 WEST} - {1130634000 0 0 WET} - {1143334800 3600 1 WEST} - {1162083600 0 0 WET} - {1174784400 3600 1 WEST} - {1193533200 0 0 WET} - {1206838800 3600 1 WEST} - {1224982800 0 0 WET} - {1238288400 3600 1 WEST} - {1256432400 0 0 WET} - {1269738000 3600 1 WEST} - {1288486800 0 0 WET} - {1301187600 3600 1 WEST} - {1319936400 0 0 WET} - {1332637200 3600 1 WEST} - {1351386000 0 0 WET} - {1364691600 3600 1 WEST} - {1382835600 0 0 WET} - {1396141200 3600 1 WEST} - {1414285200 0 0 WET} - {1427590800 3600 1 WEST} - {1445734800 0 0 WET} - {1459040400 3600 1 WEST} - {1477789200 0 0 WET} - {1490490000 3600 1 WEST} - {1509238800 0 0 WET} - {1521939600 3600 1 WEST} - {1540688400 0 0 WET} - {1553994000 3600 1 WEST} - {1572138000 0 0 WET} - {1585443600 3600 1 WEST} - {1603587600 0 0 WET} - {1616893200 3600 1 WEST} - {1635642000 0 0 WET} - {1648342800 3600 1 WEST} - {1667091600 0 0 WET} - {1679792400 3600 1 WEST} - {1698541200 0 0 WET} - {1711846800 3600 1 WEST} - {1729990800 0 0 WET} - {1743296400 3600 1 WEST} - {1761440400 0 0 WET} - {1774746000 3600 1 WEST} - {1792890000 0 0 WET} - {1806195600 3600 1 WEST} - {1824944400 0 0 WET} - {1837645200 3600 1 WEST} - {1856394000 0 0 WET} - {1869094800 3600 1 WEST} - {1887843600 0 0 WET} - {1901149200 3600 1 WEST} - {1919293200 0 0 WET} - {1932598800 3600 1 WEST} - {1950742800 0 0 WET} - {1964048400 3600 1 WEST} - {1982797200 0 0 WET} - {1995498000 3600 1 WEST} - {2014246800 0 0 WET} - {2026947600 3600 1 WEST} - {2045696400 0 0 WET} - {2058397200 3600 1 WEST} - {2077146000 0 0 WET} - {2090451600 3600 1 WEST} - {2108595600 0 0 WET} - {2121901200 3600 1 WEST} - {2140045200 0 0 WET} - {2153350800 3600 1 WEST} - {2172099600 0 0 WET} - {2184800400 3600 1 WEST} - {2203549200 0 0 WET} - {2216250000 3600 1 WEST} - {2234998800 0 0 WET} - {2248304400 3600 1 WEST} - {2266448400 0 0 WET} - {2279754000 3600 1 WEST} - {2297898000 0 0 WET} - {2311203600 3600 1 WEST} - {2329347600 0 0 WET} - {2342653200 3600 1 WEST} - {2361402000 0 0 WET} - {2374102800 3600 1 WEST} - {2392851600 0 0 WET} - {2405552400 3600 1 WEST} - {2424301200 0 0 WET} - {2437606800 3600 1 WEST} - {2455750800 0 0 WET} - {2469056400 3600 1 WEST} - {2487200400 0 0 WET} - {2500506000 3600 1 WEST} - {2519254800 0 0 WET} - {2531955600 3600 1 WEST} - {2550704400 0 0 WET} - {2563405200 3600 1 WEST} - {2582154000 0 0 WET} - {2595459600 3600 1 WEST} - {2613603600 0 0 WET} - {2626909200 3600 1 WEST} - {2645053200 0 0 WET} - {2658358800 3600 1 WEST} - {2676502800 0 0 WET} - {2689808400 3600 1 WEST} - {2708557200 0 0 WET} - {2721258000 3600 1 WEST} - {2740006800 0 0 WET} - {2752707600 3600 1 WEST} - {2771456400 0 0 WET} - {2784762000 3600 1 WEST} - {2802906000 0 0 WET} - {2816211600 3600 1 WEST} - {2834355600 0 0 WET} - {2847661200 3600 1 WEST} - {2866410000 0 0 WET} - {2879110800 3600 1 WEST} - {2897859600 0 0 WET} - {2910560400 3600 1 WEST} - {2929309200 0 0 WET} - {2942010000 3600 1 WEST} - {2960758800 0 0 WET} - {2974064400 3600 1 WEST} - {2992208400 0 0 WET} - {3005514000 3600 1 WEST} - {3023658000 0 0 WET} - {3036963600 3600 1 WEST} - {3055712400 0 0 WET} - {3068413200 3600 1 WEST} - {3087162000 0 0 WET} - {3099862800 3600 1 WEST} - {3118611600 0 0 WET} - {3131917200 3600 1 WEST} - {3150061200 0 0 WET} - {3163366800 3600 1 WEST} - {3181510800 0 0 WET} - {3194816400 3600 1 WEST} - {3212960400 0 0 WET} - {3226266000 3600 1 WEST} - {3245014800 0 0 WET} - {3257715600 3600 1 WEST} - {3276464400 0 0 WET} - {3289165200 3600 1 WEST} - {3307914000 0 0 WET} - {3321219600 3600 1 WEST} - {3339363600 0 0 WET} - {3352669200 3600 1 WEST} - {3370813200 0 0 WET} - {3384118800 3600 1 WEST} - {3402867600 0 0 WET} - {3415568400 3600 1 WEST} - {3434317200 0 0 WET} - {3447018000 3600 1 WEST} - {3465766800 0 0 WET} - {3479072400 3600 1 WEST} - {3497216400 0 0 WET} - {3510522000 3600 1 WEST} - {3528666000 0 0 WET} - {3541971600 3600 1 WEST} - {3560115600 0 0 WET} - {3573421200 3600 1 WEST} - {3592170000 0 0 WET} - {3604870800 3600 1 WEST} - {3623619600 0 0 WET} - {3636320400 3600 1 WEST} - {3655069200 0 0 WET} - {3668374800 3600 1 WEST} - {3686518800 0 0 WET} - {3699824400 3600 1 WEST} - {3717968400 0 0 WET} - {3731274000 3600 1 WEST} - {3750022800 0 0 WET} - {3762723600 3600 1 WEST} - {3781472400 0 0 WET} - {3794173200 3600 1 WEST} - {3812922000 0 0 WET} - {3825622800 3600 1 WEST} - {3844371600 0 0 WET} - {3857677200 3600 1 WEST} - {3875821200 0 0 WET} - {3889126800 3600 1 WEST} - {3907270800 0 0 WET} - {3920576400 3600 1 WEST} - {3939325200 0 0 WET} - {3952026000 3600 1 WEST} - {3970774800 0 0 WET} - {3983475600 3600 1 WEST} - {4002224400 0 0 WET} - {4015530000 3600 1 WEST} - {4033674000 0 0 WET} - {4046979600 3600 1 WEST} - {4065123600 0 0 WET} - {4078429200 3600 1 WEST} - {4096573200 0 0 WET} -} +# created by tools/tclZIC.tcl - do not edit + +set TZData(:WET) { + {-9223372036854775808 0 0 WET} + {228877200 3600 1 WEST} + {243997200 0 0 WET} + {260326800 3600 1 WEST} + {276051600 0 0 WET} + {291776400 3600 1 WEST} + {307501200 0 0 WET} + {323830800 3600 1 WEST} + {338950800 0 0 WET} + {354675600 3600 1 WEST} + {370400400 0 0 WET} + {386125200 3600 1 WEST} + {401850000 0 0 WET} + {417574800 3600 1 WEST} + {433299600 0 0 WET} + {449024400 3600 1 WEST} + {465354000 0 0 WET} + {481078800 3600 1 WEST} + {496803600 0 0 WET} + {512528400 3600 1 WEST} + {528253200 0 0 WET} + {543978000 3600 1 WEST} + {559702800 0 0 WET} + {575427600 3600 1 WEST} + {591152400 0 0 WET} + {606877200 3600 1 WEST} + {622602000 0 0 WET} + {638326800 3600 1 WEST} + {654656400 0 0 WET} + {670381200 3600 1 WEST} + {686106000 0 0 WET} + {701830800 3600 1 WEST} + {717555600 0 0 WET} + {733280400 3600 1 WEST} + {749005200 0 0 WET} + {764730000 3600 1 WEST} + {780454800 0 0 WET} + {796179600 3600 1 WEST} + {811904400 0 0 WET} + {828234000 3600 1 WEST} + {846378000 0 0 WET} + {859683600 3600 1 WEST} + {877827600 0 0 WET} + {891133200 3600 1 WEST} + {909277200 0 0 WET} + {922582800 3600 1 WEST} + {941331600 0 0 WET} + {954032400 3600 1 WEST} + {972781200 0 0 WET} + {985482000 3600 1 WEST} + {1004230800 0 0 WET} + {1017536400 3600 1 WEST} + {1035680400 0 0 WET} + {1048986000 3600 1 WEST} + {1067130000 0 0 WET} + {1080435600 3600 1 WEST} + {1099184400 0 0 WET} + {1111885200 3600 1 WEST} + {1130634000 0 0 WET} + {1143334800 3600 1 WEST} + {1162083600 0 0 WET} + {1174784400 3600 1 WEST} + {1193533200 0 0 WET} + {1206838800 3600 1 WEST} + {1224982800 0 0 WET} + {1238288400 3600 1 WEST} + {1256432400 0 0 WET} + {1269738000 3600 1 WEST} + {1288486800 0 0 WET} + {1301187600 3600 1 WEST} + {1319936400 0 0 WET} + {1332637200 3600 1 WEST} + {1351386000 0 0 WET} + {1364691600 3600 1 WEST} + {1382835600 0 0 WET} + {1396141200 3600 1 WEST} + {1414285200 0 0 WET} + {1427590800 3600 1 WEST} + {1445734800 0 0 WET} + {1459040400 3600 1 WEST} + {1477789200 0 0 WET} + {1490490000 3600 1 WEST} + {1509238800 0 0 WET} + {1521939600 3600 1 WEST} + {1540688400 0 0 WET} + {1553994000 3600 1 WEST} + {1572138000 0 0 WET} + {1585443600 3600 1 WEST} + {1603587600 0 0 WET} + {1616893200 3600 1 WEST} + {1635642000 0 0 WET} + {1648342800 3600 1 WEST} + {1667091600 0 0 WET} + {1679792400 3600 1 WEST} + {1698541200 0 0 WET} + {1711846800 3600 1 WEST} + {1729990800 0 0 WET} + {1743296400 3600 1 WEST} + {1761440400 0 0 WET} + {1774746000 3600 1 WEST} + {1792890000 0 0 WET} + {1806195600 3600 1 WEST} + {1824944400 0 0 WET} + {1837645200 3600 1 WEST} + {1856394000 0 0 WET} + {1869094800 3600 1 WEST} + {1887843600 0 0 WET} + {1901149200 3600 1 WEST} + {1919293200 0 0 WET} + {1932598800 3600 1 WEST} + {1950742800 0 0 WET} + {1964048400 3600 1 WEST} + {1982797200 0 0 WET} + {1995498000 3600 1 WEST} + {2014246800 0 0 WET} + {2026947600 3600 1 WEST} + {2045696400 0 0 WET} + {2058397200 3600 1 WEST} + {2077146000 0 0 WET} + {2090451600 3600 1 WEST} + {2108595600 0 0 WET} + {2121901200 3600 1 WEST} + {2140045200 0 0 WET} + {2153350800 3600 1 WEST} + {2172099600 0 0 WET} + {2184800400 3600 1 WEST} + {2203549200 0 0 WET} + {2216250000 3600 1 WEST} + {2234998800 0 0 WET} + {2248304400 3600 1 WEST} + {2266448400 0 0 WET} + {2279754000 3600 1 WEST} + {2297898000 0 0 WET} + {2311203600 3600 1 WEST} + {2329347600 0 0 WET} + {2342653200 3600 1 WEST} + {2361402000 0 0 WET} + {2374102800 3600 1 WEST} + {2392851600 0 0 WET} + {2405552400 3600 1 WEST} + {2424301200 0 0 WET} + {2437606800 3600 1 WEST} + {2455750800 0 0 WET} + {2469056400 3600 1 WEST} + {2487200400 0 0 WET} + {2500506000 3600 1 WEST} + {2519254800 0 0 WET} + {2531955600 3600 1 WEST} + {2550704400 0 0 WET} + {2563405200 3600 1 WEST} + {2582154000 0 0 WET} + {2595459600 3600 1 WEST} + {2613603600 0 0 WET} + {2626909200 3600 1 WEST} + {2645053200 0 0 WET} + {2658358800 3600 1 WEST} + {2676502800 0 0 WET} + {2689808400 3600 1 WEST} + {2708557200 0 0 WET} + {2721258000 3600 1 WEST} + {2740006800 0 0 WET} + {2752707600 3600 1 WEST} + {2771456400 0 0 WET} + {2784762000 3600 1 WEST} + {2802906000 0 0 WET} + {2816211600 3600 1 WEST} + {2834355600 0 0 WET} + {2847661200 3600 1 WEST} + {2866410000 0 0 WET} + {2879110800 3600 1 WEST} + {2897859600 0 0 WET} + {2910560400 3600 1 WEST} + {2929309200 0 0 WET} + {2942010000 3600 1 WEST} + {2960758800 0 0 WET} + {2974064400 3600 1 WEST} + {2992208400 0 0 WET} + {3005514000 3600 1 WEST} + {3023658000 0 0 WET} + {3036963600 3600 1 WEST} + {3055712400 0 0 WET} + {3068413200 3600 1 WEST} + {3087162000 0 0 WET} + {3099862800 3600 1 WEST} + {3118611600 0 0 WET} + {3131917200 3600 1 WEST} + {3150061200 0 0 WET} + {3163366800 3600 1 WEST} + {3181510800 0 0 WET} + {3194816400 3600 1 WEST} + {3212960400 0 0 WET} + {3226266000 3600 1 WEST} + {3245014800 0 0 WET} + {3257715600 3600 1 WEST} + {3276464400 0 0 WET} + {3289165200 3600 1 WEST} + {3307914000 0 0 WET} + {3321219600 3600 1 WEST} + {3339363600 0 0 WET} + {3352669200 3600 1 WEST} + {3370813200 0 0 WET} + {3384118800 3600 1 WEST} + {3402867600 0 0 WET} + {3415568400 3600 1 WEST} + {3434317200 0 0 WET} + {3447018000 3600 1 WEST} + {3465766800 0 0 WET} + {3479072400 3600 1 WEST} + {3497216400 0 0 WET} + {3510522000 3600 1 WEST} + {3528666000 0 0 WET} + {3541971600 3600 1 WEST} + {3560115600 0 0 WET} + {3573421200 3600 1 WEST} + {3592170000 0 0 WET} + {3604870800 3600 1 WEST} + {3623619600 0 0 WET} + {3636320400 3600 1 WEST} + {3655069200 0 0 WET} + {3668374800 3600 1 WEST} + {3686518800 0 0 WET} + {3699824400 3600 1 WEST} + {3717968400 0 0 WET} + {3731274000 3600 1 WEST} + {3750022800 0 0 WET} + {3762723600 3600 1 WEST} + {3781472400 0 0 WET} + {3794173200 3600 1 WEST} + {3812922000 0 0 WET} + {3825622800 3600 1 WEST} + {3844371600 0 0 WET} + {3857677200 3600 1 WEST} + {3875821200 0 0 WET} + {3889126800 3600 1 WEST} + {3907270800 0 0 WET} + {3920576400 3600 1 WEST} + {3939325200 0 0 WET} + {3952026000 3600 1 WEST} + {3970774800 0 0 WET} + {3983475600 3600 1 WEST} + {4002224400 0 0 WET} + {4015530000 3600 1 WEST} + {4033674000 0 0 WET} + {4046979600 3600 1 WEST} + {4065123600 0 0 WET} + {4078429200 3600 1 WEST} + {4096573200 0 0 WET} +} diff --git a/library/tzdata/Zulu b/library/tzdata/Zulu index 63d6a7d..e9748e4 100644 --- a/library/tzdata/Zulu +++ b/library/tzdata/Zulu @@ -1,5 +1,5 @@ -# created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UTC)]} { - LoadTimeZoneFile Etc/UTC -} -set TZData(:Zulu) $TZData(:Etc/UTC) +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC +} +set TZData(:Zulu) $TZData(:Etc/UTC) diff --git a/tools/tclZIC.tcl b/tools/tclZIC.tcl index 07ecd5e..d5d8d9d 100755 --- a/tools/tclZIC.tcl +++ b/tools/tclZIC.tcl @@ -29,7 +29,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclZIC.tcl,v 1.9 2006/11/03 00:34:53 hobbs Exp $ +# RCS: @(#) $Id: tclZIC.tcl,v 1.9.4.1 2009/04/09 20:12:10 kennykb Exp $ # #---------------------------------------------------------------------- @@ -1265,6 +1265,7 @@ proc writeZones {outDir} { # Write the data to the information file set f [open $fileName w] + fconfigure $f -translation lf puts $f "\# created by $::argv0 - do not edit" puts $f "" puts $f [list set TZData(:$zoneName) $data] @@ -1317,6 +1318,7 @@ proc writeLinks {outDir} { # Write the file set f [open $fileName w] + fconfigure $f -translation lf puts $f "\# created by $::argv0 - do not edit" puts $f $ifCmd puts $f $setCmd -- cgit v0.12 From 47e1c81009e30a84cb47e15b40dac9ee254136b6 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Apr 2009 13:15:57 +0000 Subject: * tests/httpd: Backport new tests for http 2.7.3. * tests/http.tcl: --- ChangeLog | 5 +++++ tests/http.test | 6 +++--- tests/httpd | 16 ++++++++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index a80f875..9fa2101 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-10 Don Porter + + * tests/httpd: Backport new tests for http 2.7.3. + * tests/http.tcl: + 2008-04-09 Kevin B. Kenny * tools/tclZIC.tcl: Always emit Unix-style line terminators. diff --git a/tests/http.test b/tests/http.test index 94cc95b..b889b04 100644 --- a/tests/http.test +++ b/tests/http.test @@ -12,7 +12,7 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # -# RCS: @(#) $Id: http.test,v 1.48.2.1 2008/12/11 01:20:02 patthoyts Exp $ +# RCS: @(#) $Id: http.test,v 1.48.2.2 2009/04/10 13:15:57 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -335,7 +335,7 @@ test http-4.1 {http::Event} { set token [http::geturl $url -keepalive 0] upvar #0 $token data array set meta $data(meta) - expr ($data(totalsize) == $meta(Content-Length)) + expr {($data(totalsize) == $meta(Content-Length))} } 1 test http-4.2 {http::Event} { set token [http::geturl $url] @@ -369,7 +369,7 @@ test http-4.5 {http::Event} { close $out upvar #0 $token data removeFile $testfile - expr $data(currentsize) == $data(totalsize) + expr {$data(currentsize) == $data(totalsize)} } 1 test http-4.6 {http::Event} { set testfile [makeFile "" testfile] diff --git a/tests/httpd b/tests/httpd index b46a3f0..93ee08a 100644 --- a/tests/httpd +++ b/tests/httpd @@ -72,6 +72,10 @@ proc httpdRead { sock } { # Read the HTTP headers set readCount [gets $sock line] + if {[regexp {^([^:]+):(.*)$} $line -> key val]} { + lappend data(meta) $key [string trim $val] + } + } elseif {$data(state) == "query"} { # Read the query data @@ -195,17 +199,25 @@ proc httpdRespond { sock } { } # Catch errors from premature client closes - + catch { if {$data(proto) == "HEAD"} { puts $sock "HTTP/1.0 200 OK" } else { - puts $sock "HTTP/1.0 200 Data follows" + # Split the response to test for [Bug 26245326] + puts -nonewline $sock "HT" + flush $sock + puts $sock "TP/1.0 200 Data follows" } puts $sock "Date: [clock format [clock seconds] \ -format {%a, %d %b %Y %H:%M:%S %Z}]" puts $sock "Content-Type: $type" puts $sock "Content-Length: [string length $html]" + foreach {key val} $data(meta) { + if {[string match "X-*" $key]} { + puts $sock "$key: $val" + } + } puts $sock "" flush $sock if {$data(proto) != "HEAD"} { -- cgit v0.12 From a99ad7f41b3dbd65623605dfe2a7a1a84d225b6b Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Apr 2009 16:54:51 +0000 Subject: * generic/tcl.h: Bump to 8.5.7 for release. * library/init.tcl: * tools/tcl.wse.in: * unix/configure.in: * unix/tcl.spec: * win/configure.in: * README: * unix/configure: autoconf-2.59 * win/configure: --- ChangeLog | 11 +++++++++++ README | 4 ++-- generic/tcl.h | 6 +++--- library/init.tcl | 4 ++-- tools/tcl.wse.in | 2 +- unix/configure | 2 +- unix/configure.in | 4 ++-- unix/tcl.spec | 4 ++-- win/configure | 2 +- win/configure.in | 4 ++-- 10 files changed, 27 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9fa2101..79ad9e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2009-04-10 Don Porter + * generic/tcl.h: Bump to 8.5.7 for release. + * library/init.tcl: + * tools/tcl.wse.in: + * unix/configure.in: + * unix/tcl.spec: + * win/configure.in: + * README: + + * unix/configure: autoconf-2.59 + * win/configure: + * tests/httpd: Backport new tests for http 2.7.3. * tests/http.tcl: diff --git a/README b/README index 7dc9fd7..c90a8dc 100644 --- a/README +++ b/README @@ -1,11 +1,11 @@ README: Tcl - This is the Tcl 8.5.6 source distribution. + This is the Tcl 8.5.7 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.67.2.5 2008/12/21 20:59:01 dgp Exp $ +RCS: @(#) $Id: README,v 1.67.2.6 2009/04/10 16:54:51 dgp Exp $ Contents -------- diff --git a/generic/tcl.h b/generic/tcl.h index 033ac05..184c0bb 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.8 2008/12/21 20:59:01 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.9 2009/04/10 16:54:51 dgp Exp $ */ #ifndef _TCL @@ -60,10 +60,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 5 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 6 +#define TCL_RELEASE_SERIAL 7 #define TCL_VERSION "8.5" -#define TCL_PATCH_LEVEL "8.5.6" +#define TCL_PATCH_LEVEL "8.5.7" /* * The following definitions set up the proper options for Windows compilers. diff --git a/library/init.tcl b/library/init.tcl index 6b92c58..73485bd 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,7 +3,7 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.11 2008/12/21 20:59:01 dgp Exp $ +# RCS: @(#) $Id: init.tcl,v 1.104.2.12 2009/04/10 16:54:51 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -17,7 +17,7 @@ if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.5.6 +package require -exact Tcl 8.5.7 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: diff --git a/tools/tcl.wse.in b/tools/tcl.wse.in index c87785f..6a54d31 100644 --- a/tools/tcl.wse.in +++ b/tools/tcl.wse.in @@ -12,7 +12,7 @@ item: Global Log Pathname=%MAINDIR%\INSTALL.LOG Message Font=MS Sans Serif Font Size=8 - Disk Label=tcl8.5.6 + Disk Label=tcl8.5.7 Disk Filename=setup Patch Flags=0000000000000001 Patch Threshold=85 diff --git a/unix/configure b/unix/configure index e45d666..b4c961e 100755 --- a/unix/configure +++ b/unix/configure @@ -1335,7 +1335,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".7" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/configure.in b/unix/configure.in index c4e15cc..d59945e 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.10 2008/12/21 20:59:03 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.11 2009/04/10 16:54:53 dgp Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -27,7 +27,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [ TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".7" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ diff --git a/unix/tcl.spec b/unix/tcl.spec index 60904aa..35a74a1 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -1,11 +1,11 @@ -# $Id: tcl.spec,v 1.37.2.7 2008/12/21 20:59:03 dgp Exp $ +# $Id: tcl.spec,v 1.37.2.8 2009/04/10 16:54:53 dgp Exp $ # This file is the basis for a binary Tcl RPM for Linux. %{!?directory:%define directory /usr/local} Name: tcl Summary: Tcl scripting language development environment -Version: 8.5.6 +Version: 8.5.7 Release: 2 License: BSD Group: Development/Languages diff --git a/win/configure b/win/configure index 440c356..7f5f1a6 100755 --- a/win/configure +++ b/win/configure @@ -1309,7 +1309,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".7" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 diff --git a/win/configure.in b/win/configure.in index 33e0ba4..321e808 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,7 +3,7 @@ # generate the file "configure", which is run during Tcl installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.104.2.7 2008/12/21 20:59:03 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.104.2.8 2009/04/10 16:54:53 dgp Exp $ AC_INIT(../generic/tcl.h) AC_PREREQ(2.59) @@ -16,7 +16,7 @@ SHELL=/bin/sh TCL_VERSION=8.5 TCL_MAJOR_VERSION=8 TCL_MINOR_VERSION=5 -TCL_PATCH_LEVEL=".6" +TCL_PATCH_LEVEL=".7" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.3 -- cgit v0.12 From 01c5ac34b88b950eb4465857577102ff071032ca Mon Sep 17 00:00:00 2001 From: das Date: Fri, 10 Apr 2009 16:59:22 +0000 Subject: * macosx/tclMacOSXBundle.c: on Mac OS X 10.4 and later, replace deprecated NSModule API by dlfcn API. --- ChangeLog | 5 +++ macosx/tclMacOSXBundle.c | 87 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 84 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 79ad9e1..d036ef1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,6 +14,11 @@ * tests/httpd: Backport new tests for http 2.7.3. * tests/http.tcl: +2008-04-10 Daniel Steffen + + * macosx/tclMacOSXBundle.c: on Mac OS X 10.4 and later, replace + deprecated NSModule API by dlfcn API. + 2008-04-09 Kevin B. Kenny * tools/tclZIC.tcl: Always emit Unix-style line terminators. diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index f9af0b9..0d12a28 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -48,14 +48,64 @@ * permission to use and distribute the software in accordance with the * terms specified in this license. * - * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.11.4.1 2008/12/07 16:39:32 das Exp $ + * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.11.4.2 2009/04/10 16:59:22 das Exp $ */ #include "tclPort.h" #ifdef HAVE_COREFOUNDATION #include + +#ifndef TCL_DYLD_USE_DLFCN +/* + * Use preferred dlfcn API on 10.4 and later + */ +# if !defined(NO_DLFCN_H) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1040 +# define TCL_DYLD_USE_DLFCN 1 +# else +# define TCL_DYLD_USE_DLFCN 0 +# endif +#endif + +#ifndef TCL_DYLD_USE_NSMODULE +/* + * Use deprecated NSModule API only to support 10.3 and earlier: + */ +# if MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +# define TCL_DYLD_USE_NSMODULE 1 +# else +# define TCL_DYLD_USE_NSMODULE 0 +# endif +#endif + +#if TCL_DYLD_USE_DLFCN +#include +#if defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +/* + * Support for weakly importing dlfcn API. + */ +extern void *dlsym(void *handle, const char *symbol) WEAK_IMPORT_ATTRIBUTE; +extern char *dlerror(void) WEAK_IMPORT_ATTRIBUTE; +#endif +#endif + +#if TCL_DYLD_USE_NSMODULE #include +#endif + +#if TCL_DYLD_USE_DLFCN && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +MODULE_SCOPE long tclMacOSXDarwinRelease; +#endif + +#ifdef TCL_DEBUG_LOAD +#define TclLoadDbgMsg(m, ...) do { \ + fprintf(stderr, "%s:%d: %s(): " m ".\n", \ + strrchr(__FILE__, '/')+1, __LINE__, __func__, ##__VA_ARGS__); \ + } while (0) +#else +#define TclLoadDbgMsg(m, ...) +#endif + #endif /* HAVE_COREFOUNDATION */ /* @@ -192,14 +242,35 @@ Tcl_MacOSXOpenVersionedBundleResources( static short (*openresourcemap)(CFBundleRef) = NULL; if (!initialized) { - NSSymbol nsSymbol = NULL; - if (NSIsSymbolNameDefinedWithHint( - "_CFBundleOpenBundleResourceMap", "CoreFoundation")) { - nsSymbol = NSLookupAndBindSymbolWithHint( - "_CFBundleOpenBundleResourceMap","CoreFoundation"); - if (nsSymbol) { - openresourcemap = NSAddressOfSymbol(nsSymbol); +#if TCL_DYLD_USE_DLFCN +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1040 + if (tclMacOSXDarwinRelease >= 8) +#endif + { + const char *errMsg = nil; + openresourcemap = dlsym(RTLD_NEXT, + "CFBundleOpenBundleResourceMap"); + if (!openresourcemap) { + errMsg = dlerror(); + TclLoadDbgMsg("dlsym() failed: %s", errMsg); + } + } + if (!openresourcemap) +#endif + { +#if TCL_DYLD_USE_NSMODULE + NSSymbol nsSymbol = NULL; + if (NSIsSymbolNameDefinedWithHint( + "_CFBundleOpenBundleResourceMap", + "CoreFoundation")) { + nsSymbol = NSLookupAndBindSymbolWithHint( + "_CFBundleOpenBundleResourceMap", + "CoreFoundation"); + if (nsSymbol) { + openresourcemap = NSAddressOfSymbol(nsSymbol); + } } +#endif } initialized = TRUE; } -- cgit v0.12 From 926550a6b10592e9087ad176ec7db44a63946b62 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Apr 2009 17:40:01 +0000 Subject: * changes: Update for 8.5.7 release. --- ChangeLog | 2 ++ changes | 43 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d036ef1..f80471d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2009-04-10 Don Porter + * changes: Update for 8.5.7 release. + * generic/tcl.h: Bump to 8.5.7 for release. * library/init.tcl: * tools/tcl.wse.in: diff --git a/changes b/changes index ff04826..a7d8556 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.11 2008/12/21 20:13:48 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.12 2009/04/10 17:40:01 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7288,3 +7288,44 @@ among multiple interps (kupries) 2008-12-21 (bug fix)[2114900] updated tclIndex file (cassoff,kenny) --- Released 8.5.6, December 21, 2008 --- See ChangeLog for details --- + +2009-01-03 (bug fix)[2481670] [clock add] error message (talvo) + +2009-01-19 (new feature) CONFIG_INSTALL_DIR - where tclConfig.sh goes (cassoff) + +2009-01-19 (platform support) better tools for BSD ports (cassoff) + +2009-01-21 (bug fix)[2458202] exit crash with [chan create]d channel (kupries) + +2009-01-29 (bug fix)[2519474] Tcl_FindCommand() bug exposed by oo (fellows) + +2009-02-04 (bug fix)[2561746] [string repeat] overflow crash (porter) + +2009-02-17 (platform support) MSVC and _WIN64 (hobbs) + +2009-02-20 (bug fix)[2571597] [file pathtype /a] wrong result (nadkarni,porter) + +2009-03-15 (platform support) translate SIGINO where defined (BSD) (teterin) + +2009-03-18 (bug fix)[2688184] memleak in [file normalize] (mistachkin) + +2009-03-20 (bug fix)[2597185] crash in Tcl_AppendStringToObj (porter) + +2009-03-27 (bug fix)[2710920] [file dirname|tail /foo/] errors (epler,porter) + +2009-03-30 (bug fix)[2603158] Tcl_AppendObjToObj: append to self crash (porter) + +2009-04-07 (bug fix)[2561794,2669109,2494093,2553906] string overflow (porter) + +2009-04-08 (bug fix)[2570363] unsafe [eval]s in tcltest (bron,porter) +=> tcltest 2.3.1 + +2009-04-08 (platform support) more Darwin kernel patterns (steffen) +=> platform 1.0.4 + +2009-04-09 (bug fix)[26245326] [http::geturl] connection failures (golovan) +=> http 2.7.3 + +2008-04-09 tzdata updated to Olson's tzdata2009e (kenny) + +--- Released 8.5.6, April 10, 2008 --- See ChangeLog for details --- -- cgit v0.12 From 851b84588c5868736c40cb8906df442c89b3a3ec Mon Sep 17 00:00:00 2001 From: das Date: Fri, 10 Apr 2009 18:01:35 +0000 Subject: * unix/configure.in (Darwin): use Darwin SUSv3 extensions if available; remove /Network locations from default tcl package search path (NFS mounted locations and thus slow). * unix/configure: autoconf-2.59 * unix/tclConfig.h.in: autoheader-2.59 --- unix/configure | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++-- unix/configure.in | 25 ++++++++++++++--- unix/tclConfig.h.in | 3 +++ 3 files changed, 100 insertions(+), 5 deletions(-) diff --git a/unix/configure b/unix/configure index b4c961e..4f1a3f4 100755 --- a/unix/configure +++ b/unix/configure @@ -17877,6 +17877,79 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi + echo "$as_me:$LINENO: checking if Darwin SUSv3 extensions are available" >&5 +echo $ECHO_N "checking if Darwin SUSv3 extensions are available... $ECHO_C" >&6 +if test "${tcl_cv_cc_darwin_c_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050 + #error __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050 + #endif + #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + #error MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + #endif + #define _DARWIN_C_SOURCE 1 + #include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + tcl_cv_cc_darwin_c_source=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +tcl_cv_cc_darwin_c_source=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$hold_cflags +fi +echo "$as_me:$LINENO: result: $tcl_cv_cc_darwin_c_source" >&5 +echo "${ECHO_T}$tcl_cv_cc_darwin_c_source" >&6 + if test $tcl_cv_cc_darwin_c_source = yes; then + +cat >>confdefs.h <<\_ACEOF +#define _DARWIN_C_SOURCE 1 +_ACEOF + + fi fi # Build .bundle dltest binaries in addition to .dylib DLTEST_LD='${CC} -bundle -Wl,-w ${CFLAGS} ${LDFLAGS}' @@ -18867,9 +18940,9 @@ VERSION=${TCL_VERSION} if test "$FRAMEWORK_BUILD" = "1" ; then test -z "$TCL_PACKAGE_PATH" && \ - TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks" + TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /System/Library/Frameworks" test -z "$TCL_MODULE_PATH" && \ - TCL_MODULE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl" + TCL_MODULE_PATH="~/Library/Tcl /Library/Tcl /System/Library/Tcl" elif test "$prefix/lib" != "$libdir"; then TCL_PACKAGE_PATH="${libdir} ${prefix}/lib ${TCL_PACKAGE_PATH}" else diff --git a/unix/configure.in b/unix/configure.in index d59945e..51f6bb5 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.180.2.11 2009/04/10 16:54:53 dgp Exp $ +# RCS: @(#) $Id: configure.in,v 1.180.2.12 2009/04/10 18:01:35 das Exp $ AC_INIT([tcl],[8.5]) AC_PREREQ(2.59) @@ -542,6 +542,25 @@ if test "`uname -s`" = "Darwin" ; then if test $tcl_cv_cc_weak_import = yes; then AC_DEFINE(HAVE_WEAK_IMPORT, 1, [Is weak import available?]) fi + AC_CACHE_CHECK([if Darwin SUSv3 extensions are available], + tcl_cv_cc_darwin_c_source, [ + hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" + AC_TRY_COMPILE([ + #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050 + #error __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050 + #endif + #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + #error MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + #endif + #define _DARWIN_C_SOURCE 1 + #include + ],,tcl_cv_cc_darwin_c_source=yes, tcl_cv_cc_darwin_c_source=no) + CFLAGS=$hold_cflags]) + if test $tcl_cv_cc_darwin_c_source = yes; then + AC_DEFINE(_DARWIN_C_SOURCE, 1, + [Are Darwin SUSv3 extensions available?]) + fi fi # Build .bundle dltest binaries in addition to .dylib DLTEST_LD='${CC} -bundle -Wl,-w ${CFLAGS} ${LDFLAGS}' @@ -810,9 +829,9 @@ VERSION=${TCL_VERSION} if test "$FRAMEWORK_BUILD" = "1" ; then test -z "$TCL_PACKAGE_PATH" && \ - TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks" + TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /System/Library/Frameworks" test -z "$TCL_MODULE_PATH" && \ - TCL_MODULE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl" + TCL_MODULE_PATH="~/Library/Tcl /Library/Tcl /System/Library/Tcl" elif test "$prefix/lib" != "$libdir"; then TCL_PACKAGE_PATH="${libdir} ${prefix}/lib ${TCL_PACKAGE_PATH}" else diff --git a/unix/tclConfig.h.in b/unix/tclConfig.h.in index 8848a62..31aff62 100644 --- a/unix/tclConfig.h.in +++ b/unix/tclConfig.h.in @@ -443,6 +443,9 @@ first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN +/* Are Darwin SUSv3 extensions available? */ +#undef _DARWIN_C_SOURCE + /* Add the _ISOC99_SOURCE flag when building */ #undef _ISOC99_SOURCE -- cgit v0.12 From 3a59859d7ab015429c899f51da5ab7f456537a72 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 10 Apr 2009 18:02:41 +0000 Subject: * macosx/tclMacOSXNotify.c: revise CoreFoundation notifier to allow * unix/tclUnixChan.c: embedding into applications that * unix/tclUnixEvent.c: already have a CFRunLoop running and want to run the tcl event loop via Tcl_ServiceModeHook(TCL_SERVICE_ALL). * macosx/tclMacOSXNotify.c: add CFRunLoop based Tcl_Sleep() and * unix/tclUnixChan.c: TclUnixWaitForFile() implementations * unix/tclUnixEvent.c: and disable select() based ones in CoreFoundation builds. * unix/tclUnixNotify.c: simplify, sync with tclMacOSXNotify.c. * generic/tclInt.decls: add TclMacOSXNotifierAddRunLoopMode() * generic/tclIntPlatDecls.h: internal API, regen. * generic/tclStubInit.c: --- ChangeLog | 28 +- generic/tclInt.decls | 5 +- generic/tclIntPlatDecls.h | 13 +- generic/tclStubInit.c | 3 +- macosx/tclMacOSXNotify.c | 1676 +++++++++++++++++++++++++++++++-------------- unix/tclUnixChan.c | 5 +- unix/tclUnixEvent.c | 5 +- unix/tclUnixNotfy.c | 50 +- 8 files changed, 1218 insertions(+), 567 deletions(-) diff --git a/ChangeLog b/ChangeLog index f80471d..1144093 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,8 +18,32 @@ 2008-04-10 Daniel Steffen - * macosx/tclMacOSXBundle.c: on Mac OS X 10.4 and later, replace - deprecated NSModule API by dlfcn API. + * macosx/tclMacOSXNotify.c: revise CoreFoundation notifier to allow + * unix/tclUnixChan.c: embedding into applications that + * unix/tclUnixEvent.c: already have a CFRunLoop running and + want to run the tcl event loop via + Tcl_ServiceModeHook(TCL_SERVICE_ALL). + + * macosx/tclMacOSXNotify.c: add CFRunLoop based Tcl_Sleep() and + * unix/tclUnixChan.c: TclUnixWaitForFile() implementations + * unix/tclUnixEvent.c: and disable select() based ones in + CoreFoundation builds. + + * unix/tclUnixNotify.c: simplify, sync with tclMacOSXNotify.c. + + * generic/tclInt.decls: add TclMacOSXNotifierAddRunLoopMode() + * generic/tclIntPlatDecls.h: internal API, regen. + * generic/tclStubInit.c: + + * unix/configure.in (Darwin): use Darwin SUSv3 extensions if + available; remove /Network locations + from default tcl package search path + (NFS mounted locations and thus slow). + * unix/configure: autoconf-2.59 + * unix/tclConfig.h.in: autoheader-2.59 + + * macosx/tclMacOSXBundle.c: on Mac OS X 10.4 and later, replace + deprecated NSModule API by dlfcn API. 2008-04-09 Kevin B. Kenny diff --git a/generic/tclInt.decls b/generic/tclInt.decls index ccc568f..ecd6196 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.121 2008/01/23 17:31:42 dgp Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.121.2.1 2009/04/10 18:02:42 das Exp $ library tcl @@ -1145,3 +1145,6 @@ declare 18 macosx { CONST char *fileName, Tcl_StatBuf *statBufPtr, Tcl_GlobTypeData *types) } +declare 19 macosx { + void TclMacOSXNotifierAddRunLoopMode(CONST void *runLoopMode) +} diff --git a/generic/tclIntPlatDecls.h b/generic/tclIntPlatDecls.h index 38563b1..a89c8f0 100644 --- a/generic/tclIntPlatDecls.h +++ b/generic/tclIntPlatDecls.h @@ -9,7 +9,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.32 2007/12/13 15:23:18 dgp Exp $ + * RCS: @(#) $Id: tclIntPlatDecls.h,v 1.32.2.1 2009/04/10 18:02:42 das Exp $ */ #ifndef _TCLINTPLATDECLS @@ -368,6 +368,12 @@ EXTERN int TclMacOSXMatchType (Tcl_Interp * interp, Tcl_StatBuf * statBufPtr, Tcl_GlobTypeData * types); #endif +#ifndef TclMacOSXNotifierAddRunLoopMode_TCL_DECLARED +#define TclMacOSXNotifierAddRunLoopMode_TCL_DECLARED +/* 19 */ +EXTERN void TclMacOSXNotifierAddRunLoopMode ( + CONST void * runLoopMode); +#endif #endif /* MACOSX */ typedef struct TclIntPlatStubs { @@ -443,6 +449,7 @@ typedef struct TclIntPlatStubs { int (*tclMacOSXSetFileAttribute) (Tcl_Interp * interp, int objIndex, Tcl_Obj * fileName, Tcl_Obj * attributePtr); /* 16 */ int (*tclMacOSXCopyFileAttributes) (CONST char * src, CONST char * dst, CONST Tcl_StatBuf * statBufPtr); /* 17 */ int (*tclMacOSXMatchType) (Tcl_Interp * interp, CONST char * pathName, CONST char * fileName, Tcl_StatBuf * statBufPtr, Tcl_GlobTypeData * types); /* 18 */ + void (*tclMacOSXNotifierAddRunLoopMode) (CONST void * runLoopMode); /* 19 */ #endif /* MACOSX */ } TclIntPlatStubs; @@ -697,6 +704,10 @@ extern TclIntPlatStubs *tclIntPlatStubsPtr; #define TclMacOSXMatchType \ (tclIntPlatStubsPtr->tclMacOSXMatchType) /* 18 */ #endif +#ifndef TclMacOSXNotifierAddRunLoopMode +#define TclMacOSXNotifierAddRunLoopMode \ + (tclIntPlatStubsPtr->tclMacOSXNotifierAddRunLoopMode) /* 19 */ +#endif #endif /* MACOSX */ #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index f663610..18c4f44 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubInit.c,v 1.150 2008/01/23 17:31:42 dgp Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.150.2.1 2009/04/10 18:02:42 das Exp $ */ #include "tclInt.h" @@ -409,6 +409,7 @@ TclIntPlatStubs tclIntPlatStubs = { TclMacOSXSetFileAttribute, /* 16 */ TclMacOSXCopyFileAttributes, /* 17 */ TclMacOSXMatchType, /* 18 */ + TclMacOSXNotifierAddRunLoopMode, /* 19 */ #endif /* MACOSX */ }; diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index 0cd8eac..a45741d 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -7,12 +7,12 @@ * * Copyright (c) 1995-1997 Sun Microsystems, Inc. * Copyright 2001, Apple Computer, Inc. - * Copyright (c) 2005-2008 Daniel A. Steffen + * Copyright (c) 2005-2009 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18 2008/03/11 22:24:17 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18.2.1 2009/04/10 18:02:42 das Exp $ */ #include "tclInt.h" @@ -21,133 +21,12 @@ #include #include +/* #define TCL_MAC_DEBUG_NOTIFIER 1 */ + extern TclStubs tclStubs; extern Tcl_NotifierProcs tclOriginalNotifier; /* - * This structure is used to keep track of the notifier info for a registered - * file. - */ - -typedef struct FileHandler { - int fd; - int mask; /* Mask of desired events: TCL_READABLE, - * etc. */ - int readyMask; /* Mask of events that have been seen since - * the last time file handlers were invoked - * for this file. */ - Tcl_FileProc *proc; /* Function to call, in the style of - * Tcl_CreateFileHandler. */ - ClientData clientData; /* Argument to pass to proc. */ - struct FileHandler *nextPtr;/* Next in list of all files we care about. */ -} FileHandler; - -/* - * The following structure is what is added to the Tcl event queue when file - * handlers are ready to fire. - */ - -typedef struct FileHandlerEvent { - Tcl_Event header; /* Information that is standard for all - * events. */ - int fd; /* File descriptor that is ready. Used to find - * the FileHandler structure for the file - * (can't point directly to the FileHandler - * structure because it could go away while - * the event is queued). */ -} FileHandlerEvent; - -/* - * The following structure contains a set of select() masks to track readable, - * writable, and exceptional conditions. - */ - -typedef struct SelectMasks { - fd_set readable; - fd_set writable; - fd_set exceptional; -} SelectMasks; - -/* - * The following static structure contains the state information for the - * select based implementation of the Tcl notifier. One of these structures is - * created for each thread that is using the notifier. - */ - -typedef struct ThreadSpecificData { - FileHandler *firstFileHandlerPtr; - /* Pointer to head of file handler list. */ - SelectMasks checkMasks; /* This structure is used to build up the - * masks to be used in the next call to - * select. Bits are set in response to calls - * to Tcl_CreateFileHandler. */ - SelectMasks readyMasks; /* This array reflects the readable/writable - * conditions that were found to exist by the - * last call to select. */ - int numFdBits; /* Number of valid bits in checkMasks (one - * more than highest fd for which - * Tcl_WatchFile has been called). */ - int onList; /* True if it is in this list */ - unsigned int pollState; /* pollState is used to implement a polling - * handshake between each thread and the - * notifier thread. Bits defined below. */ - struct ThreadSpecificData *nextPtr, *prevPtr; - /* All threads that are currently waiting on - * an event have their ThreadSpecificData - * structure on a doubly-linked listed formed - * from these pointers. You must hold the - * notifierLock before accessing these - * fields. */ - CFRunLoopSourceRef runLoopSource; - /* Any other thread alerts a notifier that an - * event is ready to be processed by signaling - * this CFRunLoopSource. */ - CFRunLoopRef runLoop; /* This thread's CFRunLoop, needs to be woken - * up whenever the runLoopSource is - * signaled. */ - int eventReady; /* True if an event is ready to be - * processed. */ -} ThreadSpecificData; - -static Tcl_ThreadDataKey dataKey; - -/* - * The following static indicates the number of threads that have initialized - * notifiers. - * - * You must hold the notifierInitLock before accessing this variable. - */ - -static int notifierCount = 0; - -/* - * The following variable points to the head of a doubly-linked list of - * ThreadSpecificData structures for all threads that are currently waiting on - * an event. - * - * You must hold the notifierLock before accessing this list. - */ - -static ThreadSpecificData *waitingListPtr = NULL; - -/* - * The notifier thread spends all its time in select() waiting for a file - * descriptor associated with one of the threads on the waitingListPtr list to - * do something interesting. But if the contents of the waitingListPtr list - * ever changes, we need to wake up and restart the select() system call. You - * can wake up the notifier thread by writing a single byte to the file - * descriptor defined below. This file descriptor is the input-end of a pipe - * and the notifier thread is listening for data on the output-end of the same - * pipe. Hence writing to this file descriptor will cause the select() system - * call to return and wake up the notifier thread. - * - * You must hold the notifierLock lock before writing to the pipe. - */ - -static int triggerPipe = -1; -static int receivePipe = -1; /* Output end of triggerPipe */ - -/* * We use the Darwin-native spinlock API rather than pthread mutexes for * notifier locking: this radically simplifies the implementation and lowers * overhead. Note that these are not pure spinlocks, they employ various @@ -236,77 +115,271 @@ static OSSpinLock notifierLock = SPINLOCK_INIT; #define UNLOCK_NOTIFIER_INIT SpinLockUnlock(¬ifierInitLock) #define LOCK_NOTIFIER SpinLockLock(¬ifierLock) #define UNLOCK_NOTIFIER SpinLockUnlock(¬ifierLock) +#define LOCK_NOTIFIER_TSD SpinLockLock(&tsdPtr->tsdLock) +#define UNLOCK_NOTIFIER_TSD SpinLockUnlock(&tsdPtr->tsdLock) #ifdef TCL_MAC_DEBUG_NOTIFIER +#define TclMacOSXNotifierDbgMsg(m, ...) do { \ + fprintf(notifierLog?notifierLog:stderr, "tclMacOSXNotify.c:%d: " \ + "%s() pid %5d thread %10p: " m "\n", __LINE__, __func__, \ + getpid(), pthread_self(), ##__VA_ARGS__); \ + fflush(notifierLog?notifierLog:stderr); \ + } while (0) + /* * Debug version of SpinLockLock that logs the time spent waiting for the lock */ -#define SpinLockLockDbg(p) if(!SpinLockTry(p)) { \ +#define SpinLockLockDbg(p) if (!SpinLockTry(p)) { \ Tcl_WideInt s = TclpGetWideClicks(), e; \ SpinLockLock(p); e = TclpGetWideClicks(); \ - fprintf(notifierLog, "tclMacOSXNotify.c:" \ - "%4d: thread %10p waited on %s for " \ - "%8llu ns\n", __LINE__, pthread_self(), \ + TclMacOSXNotifierDbgMsg("waited on %s for %8.0f ns", \ #p, TclpWideClicksToNanoseconds(e-s)); \ - fflush(notifierLog); \ } #undef LOCK_NOTIFIER_INIT #define LOCK_NOTIFIER_INIT SpinLockLockDbg(¬ifierInitLock) #undef LOCK_NOTIFIER #define LOCK_NOTIFIER SpinLockLockDbg(¬ifierLock) -static FILE *notifierLog = stderr; +#undef LOCK_NOTIFIER_TSD +#define LOCK_NOTIFIER_TSD SpinLockLockDbg(&tsdPtr->tsdLock) +#include +static FILE *notifierLog = NULL; #ifndef NOTIFIER_LOG #define NOTIFIER_LOG "/tmp/tclMacOSXNotify.log" #endif -#define OPEN_NOTIFIER_LOG if (notifierLog == stderr) { \ +#define OPEN_NOTIFIER_LOG if (!notifierLog) { \ notifierLog = fopen(NOTIFIER_LOG, "a"); \ + /*TclMacOSXNotifierDbgMsg("open log"); \ + asl_set_filter(NULL, \ + ASL_FILTER_MASK_UPTO(ASL_LEVEL_DEBUG)); \ + asl_add_log_file(NULL, \ + fileno(notifierLog));*/ \ } -#define CLOSE_NOTIFIER_LOG if (notifierLog != stderr) { \ +#define CLOSE_NOTIFIER_LOG if (notifierLog) { \ + /*asl_remove_log_file(NULL, \ + fileno(notifierLog)); \ + TclMacOSXNotifierDbgMsg("close log");*/ \ fclose(notifierLog); \ - notifierLog = stderr; \ + notifierLog = NULL; \ } +#define ENABLE_ASL if (notifierLog) { \ + /*tsdPtr->asl = asl_open(NULL, "com.apple.console", ASL_OPT_NO_REMOTE); \ + asl_set_filter(tsdPtr->asl, \ + ASL_FILTER_MASK_UPTO(ASL_LEVEL_DEBUG)); \ + asl_add_log_file(tsdPtr->asl, \ + fileno(notifierLog));*/ \ + } +#define DISABLE_ASL /*if (tsdPtr->asl) { \ + if (notifierLog) { \ + asl_remove_log_file(tsdPtr->asl, \ + fileno(notifierLog)); \ + } \ + asl_close(tsdPtr->asl); \ + }*/ +#define ASLCLIENT /*aslclient asl*/ +#else +#define TclMacOSXNotifierDbgMsg(m, ...) +#define OPEN_NOTIFIER_LOG +#define CLOSE_NOTIFIER_LOG +#define ENABLE_ASL +#define DISABLE_ASL #endif /* TCL_MAC_DEBUG_NOTIFIER */ /* - * The pollState bits - * POLL_WANT is set by each thread before it waits on its condition - * variable. It is checked by the notifier before it does select. - * POLL_DONE is set by the notifier if it goes into select after seeing - * POLL_WANT. The idea is to ensure it tries a select with the - * same bits the initial thread had set. + * This structure is used to keep track of the notifier info for a registered + * file. + */ + +typedef struct FileHandler { + int fd; + int mask; /* Mask of desired events: TCL_READABLE, + * etc. */ + int readyMask; /* Mask of events that have been seen since + * the last time file handlers were invoked + * for this file. */ + Tcl_FileProc *proc; /* Function to call, in the style of + * Tcl_CreateFileHandler. */ + ClientData clientData; /* Argument to pass to proc. */ + struct FileHandler *nextPtr;/* Next in list of all files we care about. */ +} FileHandler; + +/* + * The following structure is what is added to the Tcl event queue when file + * handlers are ready to fire. + */ + +typedef struct FileHandlerEvent { + Tcl_Event header; /* Information that is standard for all + * events. */ + int fd; /* File descriptor that is ready. Used to find + * the FileHandler structure for the file + * (can't point directly to the FileHandler + * structure because it could go away while + * the event is queued). */ +} FileHandlerEvent; + +/* + * The following structure contains a set of select() masks to track readable, + * writable, and exceptional conditions. + */ + +typedef struct SelectMasks { + fd_set readable; + fd_set writable; + fd_set exceptional; +} SelectMasks; + +/* + * The following static structure contains the state information for the + * select based implementation of the Tcl notifier. One of these structures is + * created for each thread that is using the notifier. + */ + +typedef struct ThreadSpecificData { + FileHandler *firstFileHandlerPtr; + /* Pointer to head of file handler list. */ + int polled; /* True if the notifier thread has polled for + * this thread. + */ + int sleeping; /* True if runloop is inside Tcl_Sleep. */ + int runLoopSourcePerformed; /* True after the runLoopSource callack was + * performed. */ + int runLoopRunning; /* True if this thread's Tcl runLoop is running */ + int runLoopNestingLevel; /* Level of nested runLoop invocations */ + /* Must hold the notifierLock before accessing the following fields: */ + /* Start notifierLock section */ + int onList; /* True if this thread is on the waitingList */ + struct ThreadSpecificData *nextPtr, *prevPtr; + /* All threads that are currently waiting on + * an event have their ThreadSpecificData + * structure on a doubly-linked listed formed + * from these pointers. + */ + /* End notifierLock section */ + OSSpinLock tsdLock; /* Must hold this lock before acessing the + * following fields from more than one thread. + */ + /* Start tsdLock section */ + SelectMasks checkMasks; /* This structure is used to build up the + * masks to be used in the next call to + * select. Bits are set in response to calls + * to Tcl_CreateFileHandler. */ + SelectMasks readyMasks; /* This array reflects the readable/writable + * conditions that were found to exist by the + * last call to select. */ + int numFdBits; /* Number of valid bits in checkMasks (one + * more than highest fd for which + * Tcl_WatchFile has been called). */ + int polling; /* True if this thread is polling for events */ + CFRunLoopRef runLoop; /* This thread's CFRunLoop, needs to be woken + * up whenever the runLoopSource is signaled */ + CFRunLoopSourceRef runLoopSource; + /* Any other thread alerts a notifier that an + * event is ready to be processed by signaling + * this CFRunLoopSource. */ + CFRunLoopObserverRef runLoopObserver; + /* Adds/removes this thread from waitingList + * when the CFRunLoop starts/stops. */ + CFRunLoopTimerRef runLoopTimer; + /* Wakes up CFRunLoop after given timeout when + * running embedded. */ + /* End tsdLock section */ + CFTimeInterval waitTime; /* runLoopTimer wait time when running + * embedded. */ +#ifdef TCL_MAC_DEBUG_NOTIFIER + ASLCLIENT; +#endif +} ThreadSpecificData; + +static Tcl_ThreadDataKey dataKey; + +/* + * The following static indicates the number of threads that have initialized + * notifiers. + * + * You must hold the notifierInitLock before accessing this variable. + */ + +static int notifierCount = 0; + +/* + * The following variable points to the head of a doubly-linked list of + * ThreadSpecificData structures for all threads that are currently waiting on + * an event. + * + * You must hold the notifierLock before accessing this list. + */ + +static ThreadSpecificData *waitingListPtr = NULL; + +/* + * The notifier thread spends all its time in select() waiting for a file + * descriptor associated with one of the threads on the waitingListPtr list to + * do something interesting. But if the contents of the waitingListPtr list + * ever changes, we need to wake up and restart the select() system call. You + * can wake up the notifier thread by writing a single byte to the file + * descriptor defined below. This file descriptor is the input-end of a pipe + * and the notifier thread is listening for data on the output-end of the same + * pipe. Hence writing to this file descriptor will cause the select() system + * call to return and wake up the notifier thread. + * + * You must hold the notifierLock lock before writing to the pipe. + */ + +static int triggerPipe = -1; +static int receivePipe = -1; /* Output end of triggerPipe */ + +/* + * The following static indicates if the notifier thread is running. + * + * You must hold the notifierInitLock before accessing this variable. */ -#define POLL_WANT 0x1 -#define POLL_DONE 0x2 +static int notifierThreadRunning; /* * This is the thread ID of the notifier thread that does select. + * Only valid when notifierThreadRunning is non-zero. + * + * You must hold the notifierInitLock before accessing this variable. */ static pthread_t notifierThread; /* - * Custom run loop mode containing only the run loop source for the - * notifier thread. + * Custom runloop mode for running with only the runloop source for the + * notifier thread */ #ifndef TCL_EVENTS_ONLY_RUN_LOOP_MODE -#define TCL_EVENTS_ONLY_RUN_LOOP_MODE "com.tcltk.tclEventsOnlyRunLoopMode" +#define TCL_EVENTS_ONLY_RUN_LOOP_MODE "com.tcltk.tclEventsOnlyRunLoopMode" #endif #ifdef __CONSTANT_CFSTRINGS__ -#define tclEventsOnlyRunLoopMode CFSTR(TCL_EVENTS_ONLY_RUN_LOOP_MODE) +#define tclEventsOnlyRunLoopMode CFSTR(TCL_EVENTS_ONLY_RUN_LOOP_MODE) #else static CFStringRef tclEventsOnlyRunLoopMode = NULL; #endif /* + * CFTimeInterval to wait forever. + */ + +#define CF_TIMEINTERVAL_FOREVER 5.05e8 + +/* * Static routines defined in this file. */ +static void StartNotifierThread(void); static void NotifierThreadProc(ClientData clientData) - __attribute__ ((__noreturn__)); + __attribute__ ((__noreturn__)); static int FileHandlerEventProc(Tcl_Event *evPtr, int flags); +static void TimerWakeUp(CFRunLoopTimerRef timer, void *info); +static void QueueFileEvents(void *info); +static void UpdateWaitingListAndServiceEvents(CFRunLoopObserverRef observer, + CFRunLoopActivity activity, void *info); +static int OnOffWaitingList(ThreadSpecificData *tsdPtr, int onList, + int signalNotifier); #ifdef HAVE_PTHREAD_ATFORK static int atForkInit = 0; @@ -316,8 +389,8 @@ static void AtForkChild(void); #if defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 /* Support for weakly importing pthread_atfork. */ #define WEAK_IMPORT_PTHREAD_ATFORK -extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), - void (*child)(void)) WEAK_IMPORT_ATTRIBUTE; +extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), + void (*child)(void)) WEAK_IMPORT_ATTRIBUTE; #endif /* HAVE_WEAK_IMPORT */ /* * On Darwin 9 and later, it is not possible to call CoreFoundation after @@ -351,14 +424,15 @@ MODULE_SCOPE long tclMacOSXDarwinRelease; ClientData Tcl_InitNotifier(void) { - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + ThreadSpecificData *tsdPtr; - tsdPtr->eventReady = 0; + tsdPtr = TCL_TSD_INIT(&dataKey); #ifdef WEAK_IMPORT_SPINLOCKLOCK /* * Initialize support for weakly imported spinlock API. */ + if (pthread_once(&spinLockLockInitControl, SpinLockLockInit)) { Tcl_Panic("Tcl_InitNotifier: pthread_once failed"); } @@ -378,17 +452,40 @@ Tcl_InitNotifier(void) CFRunLoopRef runLoop = CFRunLoopGetCurrent(); CFRunLoopSourceRef runLoopSource; CFRunLoopSourceContext runLoopSourceContext; + CFRunLoopObserverContext runLoopObserverContext; + CFRunLoopObserverRef runLoopObserver; bzero(&runLoopSourceContext, sizeof(CFRunLoopSourceContext)); runLoopSourceContext.info = tsdPtr; - runLoopSource = CFRunLoopSourceCreate(NULL, 0, &runLoopSourceContext); + runLoopSourceContext.perform = QueueFileEvents; + runLoopSource = CFRunLoopSourceCreate(NULL, LONG_MIN, + &runLoopSourceContext); if (!runLoopSource) { Tcl_Panic("Tcl_InitNotifier: could not create CFRunLoopSource"); } CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopCommonModes); CFRunLoopAddSource(runLoop, runLoopSource, tclEventsOnlyRunLoopMode); - tsdPtr->runLoopSource = runLoopSource; + + bzero(&runLoopObserverContext, sizeof(CFRunLoopObserverContext)); + runLoopObserverContext.info = tsdPtr; + runLoopObserver = CFRunLoopObserverCreate(NULL, + kCFRunLoopEntry|kCFRunLoopExit|kCFRunLoopBeforeWaiting, TRUE, + LONG_MIN, UpdateWaitingListAndServiceEvents, + &runLoopObserverContext); + if (!runLoopObserver) { + Tcl_Panic("Tcl_InitNotifier: could not create " + "CFRunLoopObserver"); + } + CFRunLoopAddObserver(runLoop, runLoopObserver, kCFRunLoopCommonModes); + CFRunLoopAddObserver(runLoop, runLoopObserver, + tclEventsOnlyRunLoopMode); + tsdPtr->runLoop = runLoop; + tsdPtr->runLoopSource = runLoopSource; + tsdPtr->runLoopObserver = runLoopObserver; + tsdPtr->runLoopTimer = NULL; + tsdPtr->waitTime = CF_TIMEINTERVAL_FOREVER; + tsdPtr->tsdLock = SPINLOCK_INIT; } LOCK_NOTIFIER_INIT; @@ -404,6 +501,7 @@ Tcl_InitNotifier(void) #endif !atForkInit) { int result = pthread_atfork(AtForkPrepare, AtForkParent, AtForkChild); + if (result) { Tcl_Panic("Tcl_InitNotifier: pthread_atfork failed"); } @@ -424,12 +522,14 @@ Tcl_InitNotifier(void) status = fcntl(fds[0], F_GETFL); status |= O_NONBLOCK; if (fcntl(fds[0], F_SETFL, status) < 0) { - Tcl_Panic("Tcl_InitNotifier: could not make receive pipe non blocking"); + Tcl_Panic("Tcl_InitNotifier: could not make receive pipe non " + "blocking"); } status = fcntl(fds[1], F_GETFL); status |= O_NONBLOCK; if (fcntl(fds[1], F_SETFL, status) < 0) { - Tcl_Panic("Tcl_InitNotifier: could not make trigger pipe non blocking"); + Tcl_Panic("Tcl_InitNotifier: could not make trigger pipe non " + "blocking"); } receivePipe = fds[0]; @@ -437,15 +537,14 @@ Tcl_InitNotifier(void) /* * Create notifier thread lazily in Tcl_WaitForEvent() to avoid - * interfering with fork() followed immediately by execve() - * (cannot execve() when more than one thread is present). + * interfering with fork() followed immediately by execve() (we cannot + * execve() when more than one thread is present). */ - notifierThread = 0; -#ifdef TCL_MAC_DEBUG_NOTIFIER + notifierThreadRunning = 0; OPEN_NOTIFIER_LOG; -#endif } + ENABLE_ASL; notifierCount++; UNLOCK_NOTIFIER_INIT; @@ -455,17 +554,93 @@ Tcl_InitNotifier(void) /* *---------------------------------------------------------------------- * - * Tcl_FinalizeNotifier -- + * TclMacOSXNotifierAddRunLoopMode -- * - * This function is called to cleanup the notifier state before a thread - * is terminated. + * Add the tcl notifier RunLoop source, observer and timer (if any) + * to the given RunLoop mode. * * Results: * None. * * Side effects: - * May terminate the background notifier thread if this is the last - * notifier instance. + * None. + * + *---------------------------------------------------------------------- + */ + +void +TclMacOSXNotifierAddRunLoopMode( + CONST void *runLoopMode) +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + CFStringRef mode = (CFStringRef) runLoopMode; + + if (tsdPtr->runLoop) { + CFRunLoopAddSource(tsdPtr->runLoop, tsdPtr->runLoopSource, mode); + CFRunLoopAddObserver(tsdPtr->runLoop, tsdPtr->runLoopObserver, mode); + if (tsdPtr->runLoopTimer) { + CFRunLoopAddTimer(tsdPtr->runLoop, tsdPtr->runLoopTimer, mode); + } + } +} + +/* + *---------------------------------------------------------------------- + * + * StartNotifierThread -- + * + * Start notifier thread if necessary. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +StartNotifierThread(void) +{ + LOCK_NOTIFIER_INIT; + if (!notifierCount) { + Tcl_Panic("StartNotifierThread: notifier not initialized"); + } + if (!notifierThreadRunning) { + int result; + pthread_attr_t attr; + + pthread_attr_init(&attr); + pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + pthread_attr_setstacksize(&attr, 60 * 1024); + result = pthread_create(¬ifierThread, &attr, + (void * (*)(void *))NotifierThreadProc, NULL); + pthread_attr_destroy(&attr); + if (result) { + Tcl_Panic("StartNotifierThread: unable to start notifier thread"); + } + notifierThreadRunning = 1; + } + UNLOCK_NOTIFIER_INIT; +} + + +/* + *---------------------------------------------------------------------- + * + * Tcl_FinalizeNotifier -- + * + * This function is called to cleanup the notifier state before a thread + * is terminated. + * + * Results: + * None. + * + * Side effects: + * May terminate the background notifier thread if this is the last + * notifier instance. * *---------------------------------------------------------------------- */ @@ -474,10 +649,13 @@ void Tcl_FinalizeNotifier( ClientData clientData) /* Not used. */ { - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + ThreadSpecificData *tsdPtr; + + tsdPtr = TCL_TSD_INIT(&dataKey); LOCK_NOTIFIER_INIT; notifierCount--; + DISABLE_ASL; /* * If this is the last thread to use the notifier, close the notifier pipe @@ -485,55 +663,60 @@ Tcl_FinalizeNotifier( */ if (notifierCount == 0) { - int result; + if (triggerPipe != -1) { + /* + * Send "q" message to the notifier thread so that it will + * terminate. The notifier will return from its call to select() + * and notice that a "q" message has arrived, it will then close + * its side of the pipe and terminate its thread. Note the we can + * not just close the pipe and check for EOF in the notifier thread + * because if a background child process was created with exec, + * select() would not register the EOF on the pipe until the child + * processes had terminated. [Bug: 4139] [Bug: 1222872] + */ - if (triggerPipe < 0) { - Tcl_Panic("Tcl_FinalizeNotifier: notifier pipe not initialized"); - } + write(triggerPipe, "q", 1); + close(triggerPipe); - /* - * Send "q" message to the notifier thread so that it will terminate. - * The notifier will return from its call to select() and notice that - * a "q" message has arrived, it will then close its side of the pipe - * and terminate its thread. Note the we can not just close the pipe - * and check for EOF in the notifier thread because if a background - * child process was created with exec, select() would not register - * the EOF on the pipe until the child processes had terminated. [Bug: - * 4139] [Bug: 1222872] - */ - - write(triggerPipe, "q", 1); - close(triggerPipe); + if (notifierThreadRunning) { + int result = pthread_join(notifierThread, NULL); - if (notifierThread) { - result = pthread_join(notifierThread, NULL); - if (result) { - Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier thread"); + if (result) { + Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier " + "thread"); + } + notifierThreadRunning = 0; } - notifierThread = 0; - } - close(receivePipe); - triggerPipe = -1; -#ifdef TCL_MAC_DEBUG_NOTIFIER + close(receivePipe); + triggerPipe = -1; + } CLOSE_NOTIFIER_LOG; -#endif } UNLOCK_NOTIFIER_INIT; - LOCK_NOTIFIER; /* for concurrency with Tcl_AlertNotifier */ + LOCK_NOTIFIER_TSD; /* For concurrency with Tcl_AlertNotifier */ if (tsdPtr->runLoop) { tsdPtr->runLoop = NULL; /* - * Remove runLoopSource from all CFRunLoops and release it. + * Remove runLoopSource, runLoopObserver and runLoopTimer from all + * CFRunLoops. */ CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); CFRelease(tsdPtr->runLoopSource); tsdPtr->runLoopSource = NULL; + CFRunLoopObserverInvalidate(tsdPtr->runLoopObserver); + CFRelease(tsdPtr->runLoopObserver); + tsdPtr->runLoopObserver = NULL; + if (tsdPtr->runLoopTimer) { + CFRunLoopTimerInvalidate(tsdPtr->runLoopTimer); + CFRelease(tsdPtr->runLoopTimer); + tsdPtr->runLoopTimer = NULL; + } } - UNLOCK_NOTIFIER; + UNLOCK_NOTIFIER_TSD; } /* @@ -559,15 +742,14 @@ void Tcl_AlertNotifier( ClientData clientData) { - ThreadSpecificData *tsdPtr = (ThreadSpecificData *) clientData; + ThreadSpecificData *tsdPtr = clientData; - LOCK_NOTIFIER; + LOCK_NOTIFIER_TSD; if (tsdPtr->runLoop) { - tsdPtr->eventReady = 1; CFRunLoopSourceSignal(tsdPtr->runLoopSource); CFRunLoopWakeUp(tsdPtr->runLoop); } - UNLOCK_NOTIFIER; + UNLOCK_NOTIFIER_TSD; } /* @@ -575,15 +757,13 @@ Tcl_AlertNotifier( * * Tcl_SetTimer -- * - * This function sets the current notifier timer value. This interface is - * not implemented in this notifier because we are always running inside - * of Tcl_DoOneEvent. + * This function sets the current notifier timer value. * * Results: * None. * * Side effects: - * None. + * Replaces any previous timer. * *---------------------------------------------------------------------- */ @@ -592,15 +772,58 @@ void Tcl_SetTimer( Tcl_Time *timePtr) /* Timeout value, may be NULL. */ { - /* - * The interval timer doesn't do anything in this implementation, because - * the only event loop is via Tcl_DoOneEvent, which passes timeout values - * to Tcl_WaitForEvent. - */ + ThreadSpecificData *tsdPtr; + CFRunLoopTimerRef runLoopTimer; + CFTimeInterval waitTime; if (tclStubs.tcl_SetTimer != tclOriginalNotifier.setTimerProc) { tclStubs.tcl_SetTimer(timePtr); + return; + } + + tsdPtr = TCL_TSD_INIT(&dataKey); + runLoopTimer = tsdPtr->runLoopTimer; + if (!runLoopTimer) { + return; + } + if (timePtr) { + Tcl_Time vTime = *timePtr; + + if (vTime.sec != 0 || vTime.usec != 0) { + tclScaleTimeProcPtr(&vTime, tclTimeClientData); + waitTime = vTime.sec + 1.0e-6 * vTime.usec; + } else { + waitTime = 0; + } + } else { + waitTime = CF_TIMEINTERVAL_FOREVER; } + tsdPtr->waitTime = waitTime; + CFRunLoopTimerSetNextFireDate(runLoopTimer, + CFAbsoluteTimeGetCurrent() + waitTime); +} + +/* + *---------------------------------------------------------------------- + * + * TimerWakeUp -- + * + * CFRunLoopTimer callback. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +TimerWakeUp( + CFRunLoopTimerRef timer, + void *info) +{ } /* @@ -624,6 +847,23 @@ Tcl_ServiceModeHook( int mode) /* Either TCL_SERVICE_ALL, or * TCL_SERVICE_NONE. */ { + ThreadSpecificData *tsdPtr; + + tsdPtr = TCL_TSD_INIT(&dataKey); + + if (mode == TCL_SERVICE_ALL && !tsdPtr->runLoopTimer) { + if (!tsdPtr->runLoop) { + Tcl_Panic("Tcl_ServiceModeHook: Notifier not initialized"); + } + tsdPtr->runLoopTimer = CFRunLoopTimerCreate(NULL, + CFAbsoluteTimeGetCurrent() + CF_TIMEINTERVAL_FOREVER, + CF_TIMEINTERVAL_FOREVER, 0, 0, TimerWakeUp, NULL); + if (tsdPtr->runLoopTimer) { + CFRunLoopAddTimer(tsdPtr->runLoop, tsdPtr->runLoopTimer, + kCFRunLoopCommonModes); + StartNotifierThread(); + } + } } /* @@ -653,7 +893,7 @@ Tcl_CreateFileHandler( * event. */ ClientData clientData) /* Arbitrary data to pass to proc. */ { - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + ThreadSpecificData *tsdPtr; FileHandler *filePtr; if (tclStubs.tcl_CreateFileHandler != @@ -662,6 +902,8 @@ Tcl_CreateFileHandler( return; } + tsdPtr = TCL_TSD_INIT(&dataKey); + for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL; filePtr = filePtr->nextPtr) { if (filePtr->fd == fd) { @@ -669,7 +911,7 @@ Tcl_CreateFileHandler( } } if (filePtr == NULL) { - filePtr = (FileHandler*) ckalloc(sizeof(FileHandler)); + filePtr = (FileHandler *) ckalloc(sizeof(FileHandler)); filePtr->fd = fd; filePtr->readyMask = 0; filePtr->nextPtr = tsdPtr->firstFileHandlerPtr; @@ -683,6 +925,7 @@ Tcl_CreateFileHandler( * Update the check masks for this file. */ + LOCK_NOTIFIER_TSD; if (mask & TCL_READABLE) { FD_SET(fd, &(tsdPtr->checkMasks.readable)); } else { @@ -701,379 +944,730 @@ Tcl_CreateFileHandler( if (tsdPtr->numFdBits <= fd) { tsdPtr->numFdBits = fd+1; } + UNLOCK_NOTIFIER_TSD; +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_DeleteFileHandler -- + * + * Cancel a previously-arranged callback arrangement for a file. + * + * Results: + * None. + * + * Side effects: + * If a callback was previously registered on file, remove it. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_DeleteFileHandler( + int fd) /* Stream id for which to remove callback + * function. */ +{ + FileHandler *filePtr, *prevPtr; + int i, numFdBits; + ThreadSpecificData *tsdPtr; + + if (tclStubs.tcl_DeleteFileHandler != + tclOriginalNotifier.deleteFileHandlerProc) { + tclStubs.tcl_DeleteFileHandler(fd); + return; + } + + tsdPtr = TCL_TSD_INIT(&dataKey); + numFdBits = -1; + + /* + * Find the entry for the given file (and return if there isn't one). + */ + + for (prevPtr = NULL, filePtr = tsdPtr->firstFileHandlerPtr; ; + prevPtr = filePtr, filePtr = filePtr->nextPtr) { + if (filePtr == NULL) { + return; + } + if (filePtr->fd == fd) { + break; + } + } + + /* + * Find current max fd. + */ + + if (fd+1 == tsdPtr->numFdBits) { + numFdBits = 0; + for (i = fd-1; i >= 0; i--) { + if (FD_ISSET(i, &(tsdPtr->checkMasks.readable)) + || FD_ISSET(i, &(tsdPtr->checkMasks.writable)) + || FD_ISSET(i, &(tsdPtr->checkMasks.exceptional))) { + numFdBits = i+1; + break; + } + } + } + + LOCK_NOTIFIER_TSD; + if (numFdBits != -1) { + tsdPtr->numFdBits = numFdBits; + } + + /* + * Update the check masks for this file. + */ + + if (filePtr->mask & TCL_READABLE) { + FD_CLR(fd, &(tsdPtr->checkMasks.readable)); + } + if (filePtr->mask & TCL_WRITABLE) { + FD_CLR(fd, &(tsdPtr->checkMasks.writable)); + } + if (filePtr->mask & TCL_EXCEPTION) { + FD_CLR(fd, &(tsdPtr->checkMasks.exceptional)); + } + UNLOCK_NOTIFIER_TSD; + + /* + * Clean up information in the callback record. + */ + + if (prevPtr == NULL) { + tsdPtr->firstFileHandlerPtr = filePtr->nextPtr; + } else { + prevPtr->nextPtr = filePtr->nextPtr; + } + ckfree((char *) filePtr); +} + +/* + *---------------------------------------------------------------------- + * + * FileHandlerEventProc -- + * + * This function is called by Tcl_ServiceEvent when a file event reaches + * the front of the event queue. This function is responsible for + * actually handling the event by invoking the callback for the file + * handler. + * + * Results: + * Returns 1 if the event was handled, meaning it should be removed from + * the queue. Returns 0 if the event was not handled, meaning it should + * stay on the queue. The only time the event isn't handled is if the + * TCL_FILE_EVENTS flag bit isn't set. + * + * Side effects: + * Whatever the file handler's callback function does. + * + *---------------------------------------------------------------------- + */ + +static int +FileHandlerEventProc( + Tcl_Event *evPtr, /* Event to service. */ + int flags) /* Flags that indicate what events to handle, + * such as TCL_FILE_EVENTS. */ +{ + int mask; + FileHandler *filePtr; + FileHandlerEvent *fileEvPtr = (FileHandlerEvent *) evPtr; + ThreadSpecificData *tsdPtr; + + if (!(flags & TCL_FILE_EVENTS)) { + return 0; + } + + /* + * Search through the file handlers to find the one whose handle matches + * the event. We do this rather than keeping a pointer to the file handler + * directly in the event, so that the handler can be deleted while the + * event is queued without leaving a dangling pointer. + */ + + tsdPtr = TCL_TSD_INIT(&dataKey); + for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL; + filePtr = filePtr->nextPtr) { + if (filePtr->fd != fileEvPtr->fd) { + continue; + } + + /* + * The code is tricky for two reasons: + * 1. The file handler's desired events could have changed since the + * time when the event was queued, so AND the ready mask with the + * desired mask. + * 2. The file could have been closed and re-opened since the time + * when the event was queued. This is why the ready mask is stored + * in the file handler rather than the queued event: it will be + * zeroed when a new file handler is created for the newly opened + * file. + */ + + mask = filePtr->readyMask & filePtr->mask; + filePtr->readyMask = 0; + if (mask != 0) { + LOCK_NOTIFIER_TSD; + if (mask & TCL_READABLE) { + FD_CLR(filePtr->fd, &(tsdPtr->readyMasks.readable)); + } + if (mask & TCL_WRITABLE) { + FD_CLR(filePtr->fd, &(tsdPtr->readyMasks.writable)); + } + if (mask & TCL_EXCEPTION) { + FD_CLR(filePtr->fd, &(tsdPtr->readyMasks.exceptional)); + } + UNLOCK_NOTIFIER_TSD; + filePtr->proc(filePtr->clientData, mask); + } + break; + } + return 1; +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_WaitForEvent -- + * + * This function is called by Tcl_DoOneEvent to wait for new events on + * the message queue. If the block time is 0, then Tcl_WaitForEvent just + * polls without blocking. + * + * Results: + * Returns 0 if a tcl event or timeout ocurred and 1 if a non-tcl + * CFRunLoop source was processed. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +Tcl_WaitForEvent( + Tcl_Time *timePtr) /* Maximum block time, or NULL. */ +{ + int result, polling; + CFTimeInterval waitTime; + CFStringRef runLoopMode; + SInt32 runLoopStatus; + ThreadSpecificData *tsdPtr; + + if (tclStubs.tcl_WaitForEvent != tclOriginalNotifier.waitForEventProc) { + return tclStubs.tcl_WaitForEvent(timePtr); + } + result = -1; + polling = 0; + waitTime = CF_TIMEINTERVAL_FOREVER; + tsdPtr = TCL_TSD_INIT(&dataKey); + + if (!tsdPtr->runLoop) { + Tcl_Panic("Tcl_WaitForEvent: Notifier not initialized"); + } + + if (timePtr) { + Tcl_Time vTime = *timePtr; + + /* + * TIP #233 (Virtualized Time). Is virtual time in effect? And do we + * actually have something to scale? If yes to both then we call the + * handler to do this scaling. + */ + + if (vTime.sec != 0 || vTime.usec != 0) { + tclScaleTimeProcPtr(&vTime, tclTimeClientData); + waitTime = vTime.sec + 1.0e-6 * vTime.usec; + } else { + /* + * Polling: pretend to wait for files and tell the notifier thread + * what we are doing. The notifier thread makes sure it goes + * through select with its select mask in the same state as ours + * currently is. We block until that happens. + */ + + polling = 1; + } + } + + StartNotifierThread(); + + LOCK_NOTIFIER_TSD; + tsdPtr->polling = polling; + UNLOCK_NOTIFIER_TSD; + tsdPtr->runLoopSourcePerformed = 0; + + /* + * If the Tcl run loop is already running (e.g. if Tcl_WaitForEvent was + * called recursively), re-run it in a custom run loop mode containing only + * the source for the notifier thread, otherwise wakeups from other sources + * added to the common run loop modes might get lost. + */ + + if (tsdPtr->runLoopRunning) { + runLoopMode = tclEventsOnlyRunLoopMode; + } else { + runLoopMode = kCFRunLoopDefaultMode; + tsdPtr->runLoopRunning = 1; + } + runLoopStatus = CFRunLoopRunInMode(runLoopMode, waitTime, TRUE); + if (runLoopMode == kCFRunLoopDefaultMode) { + tsdPtr->runLoopRunning = 0; + } + + LOCK_NOTIFIER_TSD; + tsdPtr->polling = 0; + UNLOCK_NOTIFIER_TSD; + switch (runLoopStatus) { + case kCFRunLoopRunFinished: + Tcl_Panic("Tcl_WaitForEvent: CFRunLoop finished"); + break; + case kCFRunLoopRunTimedOut: + QueueFileEvents(tsdPtr); + result = 0; + break; + case kCFRunLoopRunStopped: + case kCFRunLoopRunHandledSource: + result = tsdPtr->runLoopSourcePerformed ? 0 : 1; + break; + } + + return result; +} + +/* + *---------------------------------------------------------------------- + * + * QueueFileEvents -- + * + * CFRunLoopSource callback for queueing file events. + * + * Results: + * None. + * + * Side effects: + * Queues file events that are detected by the select. + * + *---------------------------------------------------------------------- + */ + +static void +QueueFileEvents( + void *info) +{ + SelectMasks readyMasks; + FileHandler *filePtr; + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) info; + + /* + * Queue all detected file events. + */ + + LOCK_NOTIFIER_TSD; + FD_COPY(&(tsdPtr->readyMasks.readable), &readyMasks.readable); + FD_COPY(&(tsdPtr->readyMasks.writable), &readyMasks.writable); + FD_COPY(&(tsdPtr->readyMasks.exceptional), &readyMasks.exceptional); + FD_ZERO(&(tsdPtr->readyMasks.readable)); + FD_ZERO(&(tsdPtr->readyMasks.writable)); + FD_ZERO(&(tsdPtr->readyMasks.exceptional)); + UNLOCK_NOTIFIER_TSD; + tsdPtr->runLoopSourcePerformed = 1; + + for (filePtr = tsdPtr->firstFileHandlerPtr; (filePtr != NULL); + filePtr = filePtr->nextPtr) { + int mask = 0; + + if (FD_ISSET(filePtr->fd, &readyMasks.readable)) { + mask |= TCL_READABLE; + } + if (FD_ISSET(filePtr->fd, &readyMasks.writable)) { + mask |= TCL_WRITABLE; + } + if (FD_ISSET(filePtr->fd, &readyMasks.exceptional)) { + mask |= TCL_EXCEPTION; + } + if (!mask) { + continue; + } + + /* + * Don't bother to queue an event if the mask was previously non-zero + * since an event must still be on the queue. + */ + + if (filePtr->readyMask == 0) { + FileHandlerEvent *fileEvPtr = (FileHandlerEvent *) + ckalloc(sizeof(FileHandlerEvent)); + fileEvPtr->header.proc = FileHandlerEventProc; + fileEvPtr->fd = filePtr->fd; + Tcl_QueueEvent((Tcl_Event *) fileEvPtr, TCL_QUEUE_TAIL); + } + filePtr->readyMask = mask; + } +} + +/* + *---------------------------------------------------------------------- + * + * UpdateWaitingListAndServiceEvents -- + * + * CFRunLoopObserver callback for updating waitingList and + * servicing Tcl events. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +UpdateWaitingListAndServiceEvents( + CFRunLoopObserverRef observer, + CFRunLoopActivity activity, + void *info) +{ + ThreadSpecificData *tsdPtr = (ThreadSpecificData*) info; + + switch (activity) { + case kCFRunLoopEntry: + tsdPtr->runLoopNestingLevel++; + if (tsdPtr->runLoopNestingLevel == 1 && !tsdPtr->sleeping && + (tsdPtr->numFdBits > 0 || tsdPtr->polling)) { + LOCK_NOTIFIER; + OnOffWaitingList(tsdPtr, 1, 1); + UNLOCK_NOTIFIER; + } + break; + case kCFRunLoopExit: + if (tsdPtr->runLoopNestingLevel == 1 && !tsdPtr->sleeping && + (tsdPtr->numFdBits > 0 || tsdPtr->polling)) { + LOCK_NOTIFIER; + OnOffWaitingList(tsdPtr, 0, 1); + UNLOCK_NOTIFIER; + } + tsdPtr->runLoopNestingLevel--; + break; + case kCFRunLoopBeforeWaiting: + if (!tsdPtr->sleeping && tsdPtr->runLoopTimer && + (tsdPtr->runLoopNestingLevel > 1 || !tsdPtr->runLoopRunning)) { + while (Tcl_ServiceAll() && tsdPtr->waitTime == 0) {} + } + break; + } } /* *---------------------------------------------------------------------- * - * Tcl_DeleteFileHandler -- + * OnOffWaitingList -- * - * Cancel a previously-arranged callback arrangement for a file. + * Add/remove the specified thread to/from the global waitingList + * and optionally signal the notifier. + * + * !!! Requires notifierLock to be held !!! * * Results: - * None. + * Boolean indicating whether the waitingList was changed. * * Side effects: - * If a callback was previously registered on file, remove it. + * None. * *---------------------------------------------------------------------- */ -void -Tcl_DeleteFileHandler( - int fd) /* Stream id for which to remove callback - * function. */ +static int +OnOffWaitingList( + ThreadSpecificData *tsdPtr, + int onList, + int signalNotifier) { - FileHandler *filePtr, *prevPtr; - int i; - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - - if (tclStubs.tcl_DeleteFileHandler != - tclOriginalNotifier.deleteFileHandlerProc) { - tclStubs.tcl_DeleteFileHandler(fd); - return; - } - - /* - * Find the entry for the given file (and return if there isn't one). - */ - - for (prevPtr = NULL, filePtr = tsdPtr->firstFileHandlerPtr; ; - prevPtr = filePtr, filePtr = filePtr->nextPtr) { - if (filePtr == NULL) { - return; - } - if (filePtr->fd == fd) { - break; - } - } - - /* - * Update the check masks for this file. - */ - - if (filePtr->mask & TCL_READABLE) { - FD_CLR(fd, &(tsdPtr->checkMasks.readable)); - } - if (filePtr->mask & TCL_WRITABLE) { - FD_CLR(fd, &(tsdPtr->checkMasks.writable)); - } - if (filePtr->mask & TCL_EXCEPTION) { - FD_CLR(fd, &(tsdPtr->checkMasks.exceptional)); + int changeWaitingList; +#ifdef TCL_MAC_DEBUG_NOTIFIER + if(SpinLockTry(¬ifierLock)) { + Tcl_Panic("OnOffWaitingList: notifierLock unlocked"); } - - /* - * Find current max fd. - */ - - if (fd+1 == tsdPtr->numFdBits) { - tsdPtr->numFdBits = 0; - for (i = fd-1; i >= 0; i--) { - if (FD_ISSET(i, &(tsdPtr->checkMasks.readable)) - || FD_ISSET(i, &(tsdPtr->checkMasks.writable)) - || FD_ISSET(i, &(tsdPtr->checkMasks.exceptional))) { - tsdPtr->numFdBits = i+1; - break; +#endif + changeWaitingList = (!onList ^ !tsdPtr->onList); + if (changeWaitingList) { + if (onList) { + tsdPtr->nextPtr = waitingListPtr; + if (waitingListPtr) { + waitingListPtr->prevPtr = tsdPtr; + } + tsdPtr->prevPtr = NULL; + waitingListPtr = tsdPtr; + tsdPtr->onList = 1; + } else { + if (tsdPtr->prevPtr) { + tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; + } else { + waitingListPtr = tsdPtr->nextPtr; + } + if (tsdPtr->nextPtr) { + tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr; } + tsdPtr->nextPtr = tsdPtr->prevPtr = NULL; + tsdPtr->onList = 0; + } + if (signalNotifier) { + write(triggerPipe, "", 1); } } - /* - * Clean up information in the callback record. - */ - - if (prevPtr == NULL) { - tsdPtr->firstFileHandlerPtr = filePtr->nextPtr; - } else { - prevPtr->nextPtr = filePtr->nextPtr; - } - ckfree((char *) filePtr); + return changeWaitingList; } /* *---------------------------------------------------------------------- * - * FileHandlerEventProc -- + * Tcl_Sleep -- * - * This function is called by Tcl_ServiceEvent when a file event reaches - * the front of the event queue. This function is responsible for - * actually handling the event by invoking the callback for the file - * handler. + * Delay execution for the specified number of milliseconds. * * Results: - * Returns 1 if the event was handled, meaning it should be removed from - * the queue. Returns 0 if the event was not handled, meaning it should - * stay on the queue. The only time the event isn't handled is if the - * TCL_FILE_EVENTS flag bit isn't set. + * None. * * Side effects: - * Whatever the file handler's callback function does. + * Time passes. * *---------------------------------------------------------------------- */ -static int -FileHandlerEventProc( - Tcl_Event *evPtr, /* Event to service. */ - int flags) /* Flags that indicate what events to handle, - * such as TCL_FILE_EVENTS. */ +void +Tcl_Sleep( + int ms) /* Number of milliseconds to sleep. */ { - int mask; - FileHandler *filePtr; - FileHandlerEvent *fileEvPtr = (FileHandlerEvent *) evPtr; - ThreadSpecificData *tsdPtr; + Tcl_Time vdelay; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - if (!(flags & TCL_FILE_EVENTS)) { - return 0; + if (ms <= 0) { + return; } /* - * Search through the file handlers to find the one whose handle matches - * the event. We do this rather than keeping a pointer to the file handler - * directly in the event, so that the handler can be deleted while the - * event is queued without leaving a dangling pointer. + * TIP #233: Scale from virtual time to real-time. */ - tsdPtr = TCL_TSD_INIT(&dataKey); - for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL; - filePtr = filePtr->nextPtr) { - if (filePtr->fd != fileEvPtr->fd) { - continue; - } + vdelay.sec = ms / 1000; + vdelay.usec = (ms % 1000) * 1000; + tclScaleTimeProcPtr(&vdelay, tclTimeClientData); - /* - * The code is tricky for two reasons: - * 1. The file handler's desired events could have changed since the - * time when the event was queued, so AND the ready mask with the - * desired mask. - * 2. The file could have been closed and re-opened since the time - * when the event was queued. This is why the ready mask is stored - * in the file handler rather than the queued event: it will be - * zeroed when a new file handler is created for the newly opened - * file. - */ - mask = filePtr->readyMask & filePtr->mask; - filePtr->readyMask = 0; - if (mask != 0) { - (*filePtr->proc)(filePtr->clientData, mask); + if (tsdPtr->runLoop) { + CFTimeInterval waitTime; + CFRunLoopTimerRef runLoopTimer = tsdPtr->runLoopTimer; + CFAbsoluteTime nextTimerFire = 0, waitEnd, now; + SInt32 runLoopStatus; + + waitTime = vdelay.sec + 1.0e-6 * vdelay.usec; + now = CFAbsoluteTimeGetCurrent(); + waitEnd = now + waitTime; + + if (runLoopTimer) { + nextTimerFire = CFRunLoopTimerGetNextFireDate(runLoopTimer); + if (nextTimerFire < waitEnd) { + CFRunLoopTimerSetNextFireDate(runLoopTimer, now + + CF_TIMEINTERVAL_FOREVER); + } else { + runLoopTimer = NULL; + } } - break; + tsdPtr->sleeping = 1; + do { + runLoopStatus = CFRunLoopRunInMode(kCFRunLoopDefaultMode, waitTime, + FALSE); + switch (runLoopStatus) { + case kCFRunLoopRunFinished: + Tcl_Panic("Tcl_Sleep: CFRunLoop finished"); + break; + case kCFRunLoopRunStopped: + TclMacOSXNotifierDbgMsg("CFRunLoop stopped"); + waitTime = waitEnd - CFAbsoluteTimeGetCurrent(); + break; + case kCFRunLoopRunTimedOut: + waitTime = 0; + break; + } + } while (waitTime > 0); + tsdPtr->sleeping = 0; + if (runLoopTimer) { + CFRunLoopTimerSetNextFireDate(runLoopTimer, nextTimerFire); + } + } else { + struct timespec waitTime; + + waitTime.tv_sec = vdelay.sec; + waitTime.tv_nsec = vdelay.usec * 1000; + while (nanosleep(&waitTime, &waitTime)); } - return 1; } /* *---------------------------------------------------------------------- * - * Tcl_WaitForEvent -- + * TclUnixWaitForFile -- * - * This function is called by Tcl_DoOneEvent to wait for new events on - * the message queue. If the block time is 0, then Tcl_WaitForEvent just - * polls without blocking. + * This function waits synchronously for a file to become readable or + * writable, with an optional timeout. * * Results: - * Returns -1 if the select would block forever, otherwise returns 0. + * The return value is an OR'ed combination of TCL_READABLE, + * TCL_WRITABLE, and TCL_EXCEPTION, indicating the conditions that are + * present on file at the time of the return. This function will not + * return until either "timeout" milliseconds have elapsed or at least + * one of the conditions given by mask has occurred for file (a return + * value of 0 means that a timeout occurred). No normal events will be + * serviced during the execution of this function. * * Side effects: - * Queues file events that are detected by the select. + * Time passes. * *---------------------------------------------------------------------- */ int -Tcl_WaitForEvent( - Tcl_Time *timePtr) /* Maximum block time, or NULL. */ +TclUnixWaitForFile( + int fd, /* Handle for file on which to wait. */ + int mask, /* What to wait for: OR'ed combination of + * TCL_READABLE, TCL_WRITABLE, and + * TCL_EXCEPTION. */ + int timeout) /* Maximum amount of time to wait for one of + * the conditions in mask to occur, in + * milliseconds. A value of 0 means don't wait + * at all, and a value of -1 means wait + * forever. */ { - FileHandler *filePtr; - FileHandlerEvent *fileEvPtr; - int mask; - Tcl_Time myTime; - int waitForFiles; - Tcl_Time *myTimePtr; - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - - if (tclStubs.tcl_WaitForEvent != tclOriginalNotifier.waitForEventProc) { - return tclStubs.tcl_WaitForEvent(timePtr); - } + Tcl_Time abortTime = {0, 0}, now; /* silence gcc 4 warning */ + struct timeval blockTime, *timeoutPtr; + int index, numFound, result = 0; + fd_mask bit; + fd_mask readyMasks[3*MASK_SIZE]; + fd_mask *maskp[3]; /* This array reflects the readable/writable + * conditions that were found to exist by the + * last call to select. */ - if (timePtr != NULL) { - /* - * TIP #233 (Virtualized Time). Is virtual time in effect? And do we - * actually have something to scale? If yes to both then we call the - * handler to do this scaling. - */ +#define SET_BITS(var, bits) ((var) |= (bits)) +#define CLEAR_BITS(var, bits) ((var) &= ~(bits)) - myTime.sec = timePtr->sec; - myTime.usec = timePtr->usec; + /* + * If there is a non-zero finite timeout, compute the time when we give + * up. + */ - if (myTime.sec != 0 || myTime.usec != 0) { - (*tclScaleTimeProcPtr) (&myTime, tclTimeClientData); + if (timeout > 0) { + Tcl_GetTime(&now); + abortTime.sec = now.sec + timeout/1000; + abortTime.usec = now.usec + (timeout%1000)*1000; + if (abortTime.usec >= 1000000) { + abortTime.usec -= 1000000; + abortTime.sec += 1; } - - myTimePtr = &myTime; + timeoutPtr = &blockTime; + } else if (timeout == 0) { + timeoutPtr = &blockTime; + blockTime.tv_sec = 0; + blockTime.tv_usec = 0; } else { - myTimePtr = NULL; + timeoutPtr = NULL; } /* - * Start notifier thread if necessary. + * Initialize the ready masks and compute the mask offsets. */ - LOCK_NOTIFIER_INIT; - if (!notifierCount) { - Tcl_Panic("Tcl_WaitForEvent: notifier not initialized"); - } - if (!notifierThread) { - int result; - pthread_attr_t attr; - - pthread_attr_init(&attr); - pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); - pthread_attr_setstacksize(&attr, 60 * 1024); - result = pthread_create(¬ifierThread, &attr, - (void * (*)(void *))NotifierThreadProc, NULL); - pthread_attr_destroy(&attr); - if (result || !notifierThread) { - Tcl_Panic("Tcl_WaitForEvent: unable to start notifier thread"); - } + if (fd >= FD_SETSIZE) { + Tcl_Panic("TclWaitForFile can't handle file id %d", fd); + /* must never get here, or readyMasks overrun will occur below */ } - UNLOCK_NOTIFIER_INIT; + memset(readyMasks, 0, 3*MASK_SIZE*sizeof(fd_mask)); + index = fd / (NBBY*sizeof(fd_mask)); + bit = ((fd_mask)1) << (fd % (NBBY*sizeof(fd_mask))); /* - * Place this thread on the list of interested threads, signal the - * notifier thread, and wait for a response or a timeout. + * Loop in a mini-event loop of our own, waiting for either the file to + * become ready or a timeout to occur. */ - LOCK_NOTIFIER; - if (!tsdPtr->runLoop) { - Tcl_Panic("Tcl_WaitForEvent: CFRunLoop not initialized"); - } - waitForFiles = (tsdPtr->numFdBits > 0); - if (myTimePtr != NULL && myTimePtr->sec == 0 && myTimePtr->usec == 0) { - /* - * Cannot emulate a polling select with a polling condition variable. - * Instead, pretend to wait for files and tell the notifier thread - * what we are doing. The notifier thread makes sure it goes through - * select with its select mask in the same state as ours currently is. - * We block until that happens. - */ - - waitForFiles = 1; - tsdPtr->pollState = POLL_WANT; - myTimePtr = NULL; - } else { - tsdPtr->pollState = 0; - } + while (1) { + if (timeout > 0) { + blockTime.tv_sec = abortTime.sec - now.sec; + blockTime.tv_usec = abortTime.usec - now.usec; + if (blockTime.tv_usec < 0) { + blockTime.tv_sec -= 1; + blockTime.tv_usec += 1000000; + } + if (blockTime.tv_sec < 0) { + blockTime.tv_sec = 0; + blockTime.tv_usec = 0; + } + } - if (waitForFiles) { /* - * Add the ThreadSpecificData structure of this thread to the list of - * ThreadSpecificData structures of all threads that are waiting on - * file events. + * Set the appropriate bit in the ready masks for the fd. */ - tsdPtr->nextPtr = waitingListPtr; - if (waitingListPtr) { - waitingListPtr->prevPtr = tsdPtr; + if (mask & TCL_READABLE) { + readyMasks[index] |= bit; } - tsdPtr->prevPtr = 0; - waitingListPtr = tsdPtr; - tsdPtr->onList = 1; - - write(triggerPipe, "", 1); - } - - FD_ZERO(&(tsdPtr->readyMasks.readable)); - FD_ZERO(&(tsdPtr->readyMasks.writable)); - FD_ZERO(&(tsdPtr->readyMasks.exceptional)); - - if (!tsdPtr->eventReady) { - CFTimeInterval waitTime; - CFStringRef runLoopMode; - - if (myTimePtr == NULL) { - waitTime = 1.0e10; /* Wait forever, as per CFRunLoop.c */ - } else { - waitTime = myTimePtr->sec + 1.0e-6 * myTimePtr->usec; + if (mask & TCL_WRITABLE) { + (readyMasks+MASK_SIZE)[index] |= bit; } - /* - * If the run loop is already running (e.g. if Tcl_WaitForEvent was - * called recursively), re-run it in a custom run loop mode containing - * only the source for the notifier thread, otherwise wakeups from other - * sources added to the common run loop modes might get lost. - */ - if ((runLoopMode = CFRunLoopCopyCurrentMode(tsdPtr->runLoop))) { - CFRelease(runLoopMode); - runLoopMode = tclEventsOnlyRunLoopMode; - } else { - runLoopMode = kCFRunLoopDefaultMode; + if (mask & TCL_EXCEPTION) { + (readyMasks+2*(MASK_SIZE))[index] |= bit; } - UNLOCK_NOTIFIER; - CFRunLoopRunInMode(runLoopMode, waitTime, TRUE); - LOCK_NOTIFIER; - } - tsdPtr->eventReady = 0; - if (waitForFiles && tsdPtr->onList) { /* - * Remove the ThreadSpecificData structure of this thread from the - * waiting list. Alert the notifier thread to recompute its select - * masks - skipping this caused a hang when trying to close a pipe - * which the notifier thread was still doing a select on. + * Wait for the event or a timeout. */ - if (tsdPtr->prevPtr) { - tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; - } else { - waitingListPtr = tsdPtr->nextPtr; - } - if (tsdPtr->nextPtr) { - tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr; - } - tsdPtr->nextPtr = tsdPtr->prevPtr = NULL; - tsdPtr->onList = 0; - write(triggerPipe, "", 1); - } - - /* - * Queue all detected file events before returning. - */ - - for (filePtr = tsdPtr->firstFileHandlerPtr; (filePtr != NULL); - filePtr = filePtr->nextPtr) { + /* + * This is needed to satisfy GCC 3.3's strict aliasing rules. + */ - mask = 0; - if (FD_ISSET(filePtr->fd, &(tsdPtr->readyMasks.readable))) { - mask |= TCL_READABLE; - } - if (FD_ISSET(filePtr->fd, &(tsdPtr->readyMasks.writable))) { - mask |= TCL_WRITABLE; + maskp[0] = &readyMasks[0]; + maskp[1] = &readyMasks[MASK_SIZE]; + maskp[2] = &readyMasks[2*MASK_SIZE]; + numFound = select(fd+1, (SELECT_MASK *) maskp[0], + (SELECT_MASK *) maskp[1], + (SELECT_MASK *) maskp[2], timeoutPtr); + if (numFound == 1) { + if (readyMasks[index] & bit) { + SET_BITS(result, TCL_READABLE); + } + if ((readyMasks+MASK_SIZE)[index] & bit) { + SET_BITS(result, TCL_WRITABLE); + } + if ((readyMasks+2*(MASK_SIZE))[index] & bit) { + SET_BITS(result, TCL_EXCEPTION); + } + result &= mask; + if (result) { + break; + } } - if (FD_ISSET(filePtr->fd, &(tsdPtr->readyMasks.exceptional))) { - mask |= TCL_EXCEPTION; + if (timeout == 0) { + break; } - - if (!mask) { + if (timeout < 0) { continue; } /* - * Don't bother to queue an event if the mask was previously non-zero - * since an event must still be on the queue. + * The select returned early, so we need to recompute the timeout. */ - if (filePtr->readyMask == 0) { - fileEvPtr = (FileHandlerEvent *) ckalloc(sizeof(FileHandlerEvent)); - fileEvPtr->header.proc = FileHandlerEventProc; - fileEvPtr->fd = filePtr->fd; - Tcl_QueueEvent((Tcl_Event *) fileEvPtr, TCL_QUEUE_TAIL); + Tcl_GetTime(&now); + if ((abortTime.sec < now.sec) + || (abortTime.sec==now.sec && abortTime.usec<=now.usec)) { + break; } - filePtr->readyMask = mask; } - UNLOCK_NOTIFIER; - return 0; + return result; } /* @@ -1105,11 +1699,8 @@ NotifierThreadProc( ClientData clientData) /* Not used. */ { ThreadSpecificData *tsdPtr; - fd_set readableMask; - fd_set writableMask; - fd_set exceptionalMask; - int i, numFdBits = 0; - long found; + fd_set readableMask, writableMask, exceptionalMask; + int i, numFdBits = 0, polling; struct timeval poll = {0., 0.}, *timePtr; char buf[2]; @@ -1127,9 +1718,10 @@ NotifierThreadProc( * notifiers. */ - LOCK_NOTIFIER; timePtr = NULL; + LOCK_NOTIFIER; for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { + LOCK_NOTIFIER_TSD; for (i = tsdPtr->numFdBits-1; i >= 0; --i) { if (FD_ISSET(i, &(tsdPtr->checkMasks.readable))) { FD_SET(i, &readableMask); @@ -1144,13 +1736,9 @@ NotifierThreadProc( if (tsdPtr->numFdBits > numFdBits) { numFdBits = tsdPtr->numFdBits; } - if (tsdPtr->pollState & POLL_WANT) { - /* - * Here we make sure we go through select() with the same mask - * bits that were present when the thread tried to poll. - */ - - tsdPtr->pollState |= POLL_DONE; + polling = tsdPtr->polling; + UNLOCK_NOTIFIER_TSD; + if ((tsdPtr->polled = polling)) { timePtr = &poll; } } @@ -1180,48 +1768,53 @@ NotifierThreadProc( LOCK_NOTIFIER; for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { - found = 0; + int found = 0; + SelectMasks readyMasks, checkMasks; + + LOCK_NOTIFIER_TSD; + FD_COPY(&(tsdPtr->checkMasks.readable), &checkMasks.readable); + FD_COPY(&(tsdPtr->checkMasks.writable), &checkMasks.writable); + FD_COPY(&(tsdPtr->checkMasks.exceptional), &checkMasks.exceptional); + UNLOCK_NOTIFIER_TSD; + found = tsdPtr->polled; + FD_ZERO(&readyMasks.readable); + FD_ZERO(&readyMasks.writable); + FD_ZERO(&readyMasks.exceptional); for (i = tsdPtr->numFdBits-1; i >= 0; --i) { - if (FD_ISSET(i, &(tsdPtr->checkMasks.readable)) + if (FD_ISSET(i, &checkMasks.readable) && FD_ISSET(i, &readableMask)) { - FD_SET(i, &(tsdPtr->readyMasks.readable)); + FD_SET(i, &readyMasks.readable); found = 1; } - if (FD_ISSET(i, &(tsdPtr->checkMasks.writable)) + if (FD_ISSET(i, &checkMasks.writable) && FD_ISSET(i, &writableMask)) { - FD_SET(i, &(tsdPtr->readyMasks.writable)); + FD_SET(i, &readyMasks.writable); found = 1; } - if (FD_ISSET(i, &(tsdPtr->checkMasks.exceptional)) + if (FD_ISSET(i, &checkMasks.exceptional) && FD_ISSET(i, &exceptionalMask)) { - FD_SET(i, &(tsdPtr->readyMasks.exceptional)); + FD_SET(i, &readyMasks.exceptional); found = 1; } } - if (found || (tsdPtr->pollState & POLL_DONE)) { - tsdPtr->eventReady = 1; - if (tsdPtr->onList) { - /* - * Remove the ThreadSpecificData structure of this thread - * from the waiting list. This prevents us from - * continuously spining on select until the other threads - * runs and services the file event. - */ - - if (tsdPtr->prevPtr) { - tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; - } else { - waitingListPtr = tsdPtr->nextPtr; - } - if (tsdPtr->nextPtr) { - tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr; - } - tsdPtr->nextPtr = tsdPtr->prevPtr = NULL; - tsdPtr->onList = 0; - tsdPtr->pollState = 0; - } + if (found) { + /* + * Remove the ThreadSpecificData structure of this thread from + * the waiting list. This prevents us from spinning + * continuously on select until the other threads runs and + * services the file event. + */ + + OnOffWaitingList(tsdPtr, 0, 0); + + LOCK_NOTIFIER_TSD; + FD_COPY(&readyMasks.readable, &(tsdPtr->readyMasks.readable)); + FD_COPY(&readyMasks.writable, &(tsdPtr->readyMasks.writable)); + FD_COPY(&readyMasks.exceptional, &(tsdPtr->readyMasks.exceptional)); + UNLOCK_NOTIFIER_TSD; + tsdPtr->polled = 0; if (tsdPtr->runLoop) { CFRunLoopSourceSignal(tsdPtr->runLoopSource); CFRunLoopWakeUp(tsdPtr->runLoop); @@ -1273,8 +1866,11 @@ NotifierThreadProc( static void AtForkPrepare(void) { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + LOCK_NOTIFIER_INIT; LOCK_NOTIFIER; + LOCK_NOTIFIER_TSD; } /* @@ -1296,6 +1892,9 @@ AtForkPrepare(void) static void AtForkParent(void) { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + UNLOCK_NOTIFIER_TSD; UNLOCK_NOTIFIER; UNLOCK_NOTIFIER_INIT; } @@ -1321,18 +1920,25 @@ AtForkChild(void) { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + UNLOCK_NOTIFIER_TSD; UNLOCK_NOTIFIER; UNLOCK_NOTIFIER_INIT; if (tsdPtr->runLoop) { tsdPtr->runLoop = NULL; if (!noCFafterFork) { CFRunLoopSourceInvalidate(tsdPtr->runLoopSource); + CFRelease(tsdPtr->runLoopSource); + if (tsdPtr->runLoopTimer) { + CFRunLoopTimerInvalidate(tsdPtr->runLoopTimer); + CFRelease(tsdPtr->runLoopTimer); + } } - CFRelease(tsdPtr->runLoopSource); tsdPtr->runLoopSource = NULL; + tsdPtr->runLoopTimer = NULL; } if (notifierCount > 0) { - notifierCount = 0; + notifierCount = 1; + notifierThreadRunning = 0; /* * Assume that the return value of Tcl_InitNotifier in the child will @@ -1350,6 +1956,16 @@ AtForkChild(void) } #endif /* HAVE_PTHREAD_ATFORK */ +#else /* HAVE_COREFOUNDATION */ + +void +TclMacOSXNotifierAddRunLoopMode( + CONST void *runLoopMode) +{ + Tcl_Panic("TclMacOSXNotifierAddRunLoopMode: " + "Tcl not built with CoreFoundation support"); +} + #endif /* HAVE_COREFOUNDATION */ /* diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 629f9d0..cb3ba17 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.93 2008/03/03 14:54:43 rmax Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.93.2.1 2009/04/10 18:02:42 das Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -2986,6 +2986,8 @@ Tcl_GetOpenFile( return TCL_ERROR; } +#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier is + * in tclMacOSXNotify.c */ /* *---------------------------------------------------------------------- * @@ -3145,6 +3147,7 @@ TclUnixWaitForFile( } return result; } +#endif /* HAVE_COREFOUNDATION */ /* *---------------------------------------------------------------------- diff --git a/unix/tclUnixEvent.c b/unix/tclUnixEvent.c index 214bf4c..bc6aade 100644 --- a/unix/tclUnixEvent.c +++ b/unix/tclUnixEvent.c @@ -8,10 +8,12 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixEvent.c,v 1.9 2005/11/02 23:26:50 dkf Exp $ + * RCS: @(#) $Id: tclUnixEvent.c,v 1.9.10.1 2009/04/10 18:02:42 das Exp $ */ #include "tclInt.h" +#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier is + * in tclMacOSXNotify.c */ /* *---------------------------------------------------------------------- @@ -85,6 +87,7 @@ Tcl_Sleep( } } +#endif /* HAVE_COREFOUNDATION */ /* * Local Variables: * mode: c diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index a78cabd..916951f 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixNotfy.c,v 1.34 2008/03/11 22:23:50 das Exp $ + * RCS: @(#) $Id: tclUnixNotfy.c,v 1.34.2.1 2009/04/10 18:02:42 das Exp $ */ #include "tclInt.h" @@ -143,7 +143,7 @@ static ThreadSpecificData *waitingListPtr = NULL; * pipe. Hence writing to this file descriptor will cause the select() system * call to return and wake up the notifier thread. * - * You must hold the notifierMutex lock before accessing this list. + * You must hold the notifierMutex lock before writing to the pipe. */ static int triggerPipe = -1; @@ -199,7 +199,7 @@ static int FileHandlerEventProc(Tcl_Event *evPtr, int flags); * Initializes the platform specific notifier state. * * Results: - * Returns a handle to the notifier state for this thread.. + * Returns a handle to the notifier state for this thread. * * Side effects: * None. @@ -543,15 +543,17 @@ Tcl_DeleteFileHandler( */ if (fd+1 == tsdPtr->numFdBits) { - tsdPtr->numFdBits = 0; + int numFdBits = 0; + for (i = fd-1; i >= 0; i--) { if (FD_ISSET(i, &(tsdPtr->checkMasks.readable)) || FD_ISSET(i, &(tsdPtr->checkMasks.writable)) || FD_ISSET(i, &(tsdPtr->checkMasks.exceptional))) { - tsdPtr->numFdBits = i+1; + numFdBits = i+1; break; } } + tsdPtr->numFdBits = numFdBits; } /* @@ -664,10 +666,9 @@ Tcl_WaitForEvent( FileHandler *filePtr; FileHandlerEvent *fileEvPtr; int mask; - Tcl_Time myTime; + Tcl_Time vTime; #ifdef TCL_THREADS int waitForFiles; - Tcl_Time *myTimePtr; #else /* * Impl. notes: timeout & timeoutPtr are used if, and only if threads are @@ -696,22 +697,15 @@ Tcl_WaitForEvent( * handler to do this scaling. */ - myTime.sec = timePtr->sec; - myTime.usec = timePtr->usec; - - if (myTime.sec != 0 || myTime.usec != 0) { - (*tclScaleTimeProcPtr) (&myTime, tclTimeClientData); + if (timePtr->sec != 0 || timePtr->usec != 0) { + vTime = *timePtr; + (*tclScaleTimeProcPtr) (&vTime, tclTimeClientData); + timePtr = &vTime; } - -#ifdef TCL_THREADS - myTimePtr = &myTime; -#else - timeout.tv_sec = myTime.sec; - timeout.tv_usec = myTime.usec; - timeoutPtr = &timeout; -#endif /* TCL_THREADS */ - #ifndef TCL_THREADS + timeout.tv_sec = timePtr->sec; + timeout.tv_usec = timePtr->usec; + timeoutPtr = &timeout; } else if (tsdPtr->numFdBits == 0) { /* * If there are no threads, no timeout, and no fds registered, then @@ -722,11 +716,7 @@ Tcl_WaitForEvent( */ return -1; -#endif /* !TCL_THREADS */ } else { -#ifdef TCL_THREADS - myTimePtr = NULL; -#else timeoutPtr = NULL; #endif /* TCL_THREADS */ } @@ -739,8 +729,7 @@ Tcl_WaitForEvent( Tcl_MutexLock(¬ifierMutex); - waitForFiles = (tsdPtr->numFdBits > 0); - if (myTimePtr != NULL && myTimePtr->sec == 0 && (myTimePtr->usec == 0 + if (timePtr != NULL && timePtr->sec == 0 && (timePtr->usec == 0 #if defined(__APPLE__) && defined(__LP64__) /* * On 64-bit Darwin, pthread_cond_timedwait() appears to have a bug @@ -748,7 +737,7 @@ Tcl_WaitForEvent( * has already been exceeded by the system time; as a workaround, * when given a very brief timeout, just do a poll. [Bug 1457797] */ - || myTimePtr->usec < 10 + || timePtr->usec < 10 #endif )) { /* @@ -761,8 +750,9 @@ Tcl_WaitForEvent( waitForFiles = 1; tsdPtr->pollState = POLL_WANT; - myTimePtr = NULL; + timePtr = NULL; } else { + waitForFiles = (tsdPtr->numFdBits > 0); tsdPtr->pollState = 0; } @@ -789,7 +779,7 @@ Tcl_WaitForEvent( FD_ZERO(&(tsdPtr->readyMasks.exceptional)); if (!tsdPtr->eventReady) { - Tcl_ConditionWait(&tsdPtr->waitCV, ¬ifierMutex, myTimePtr); + Tcl_ConditionWait(&tsdPtr->waitCV, ¬ifierMutex, timePtr); } tsdPtr->eventReady = 0; -- cgit v0.12 From 51f5dcf907c1e99b13539880d97592a9c0574e5c Mon Sep 17 00:00:00 2001 From: das Date: Fri, 10 Apr 2009 18:04:21 +0000 Subject: typo --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1144093..398ee15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19,8 +19,8 @@ 2008-04-10 Daniel Steffen * macosx/tclMacOSXNotify.c: revise CoreFoundation notifier to allow - * unix/tclUnixChan.c: embedding into applications that - * unix/tclUnixEvent.c: already have a CFRunLoop running and + embedding into applications that + already have a CFRunLoop running and want to run the tcl event loop via Tcl_ServiceModeHook(TCL_SERVICE_ALL). -- cgit v0.12 From 9d3cbd2e7e2a1472598d929e821970ea69c77cc4 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 10 Apr 2009 18:10:44 +0000 Subject: * unix/tclLoadDyld.c: use RTLD_GLOBAL instead of RTLD_LOCAL. [Bug 1961211] --- ChangeLog | 3 +++ unix/tclLoadDyld.c | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 398ee15..b279100 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,6 +18,9 @@ 2008-04-10 Daniel Steffen + * unix/tclLoadDyld.c: use RTLD_GLOBAL instead of RTLD_LOCAL. + [Bug 1961211] + * macosx/tclMacOSXNotify.c: revise CoreFoundation notifier to allow embedding into applications that already have a CFRunLoop running and diff --git a/unix/tclLoadDyld.c b/unix/tclLoadDyld.c index dd09749..c37ff1b 100644 --- a/unix/tclLoadDyld.c +++ b/unix/tclLoadDyld.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoadDyld.c,v 1.29 2007/12/13 15:28:42 dgp Exp $ + * RCS: @(#) $Id: tclLoadDyld.c,v 1.29.2.1 2009/04/10 18:10:44 das Exp $ */ #include "tclInt.h" @@ -198,7 +198,7 @@ TclpDlopen( if (tclMacOSXDarwinRelease >= 8) #endif { - dlHandle = dlopen(nativePath, RTLD_NOW | RTLD_LOCAL); + dlHandle = dlopen(nativePath, RTLD_NOW | RTLD_GLOBAL); if (!dlHandle) { /* * Let the OS loader examine the binary search path for whatever @@ -208,7 +208,7 @@ TclpDlopen( fileName = Tcl_GetString(pathPtr); nativeFileName = Tcl_UtfToExternalDString(NULL, fileName, -1, &ds); - dlHandle = dlopen(nativeFileName, RTLD_NOW | RTLD_LOCAL); + dlHandle = dlopen(nativeFileName, RTLD_NOW | RTLD_GLOBAL); } if (dlHandle) { TclLoadDbgMsg("dlopen() successful"); -- cgit v0.12 From 85c2084bc56dd2b7a1e758e8b11cf77f034724b8 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Apr 2009 20:33:49 +0000 Subject: typos --- changes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changes b/changes index a7d8556..1d8cf8b 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.12 2009/04/10 17:40:01 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.13 2009/04/10 20:33:49 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7328,4 +7328,4 @@ among multiple interps (kupries) 2008-04-09 tzdata updated to Olson's tzdata2009e (kenny) ---- Released 8.5.6, April 10, 2008 --- See ChangeLog for details --- +--- Released 8.5.7, April 10, 2009 --- See ChangeLog for details --- -- cgit v0.12 From dd6bcc6bb3edd682d8ecd29b6c8e1ac5cf459d01 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 10 Apr 2009 20:46:21 +0000 Subject: * unix/tclUnixChan.c: TclUnixWaitForFile(): use FD_* macros * macosx/tclMacOSXNotify.c: to manipulate select masks (Cassoff). [Bug 1960647] --- ChangeLog | 4 +++ macosx/tclMacOSXNotify.c | 65 +++++++++++++++++++++++------------------------- unix/tclUnixChan.c | 65 +++++++++++++++++++++++------------------------- 3 files changed, 66 insertions(+), 68 deletions(-) diff --git a/ChangeLog b/ChangeLog index b279100..c3726e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,6 +18,10 @@ 2008-04-10 Daniel Steffen + * unix/tclUnixChan.c: TclUnixWaitForFile(): use FD_* macros + * macosx/tclMacOSXNotify.c: to manipulate select masks (Cassoff). + [Bug 1960647] + * unix/tclLoadDyld.c: use RTLD_GLOBAL instead of RTLD_LOCAL. [Bug 1961211] diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index a45741d..88a4f88 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18.2.1 2009/04/10 18:02:42 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18.2.2 2009/04/10 20:46:21 das Exp $ */ #include "tclInt.h" @@ -1544,16 +1544,25 @@ TclUnixWaitForFile( { Tcl_Time abortTime = {0, 0}, now; /* silence gcc 4 warning */ struct timeval blockTime, *timeoutPtr; - int index, numFound, result = 0; - fd_mask bit; - fd_mask readyMasks[3*MASK_SIZE]; - fd_mask *maskp[3]; /* This array reflects the readable/writable - * conditions that were found to exist by the - * last call to select. */ + int numFound, result = 0; + fd_set readableMask; + fd_set writableMask; + fd_set exceptionalMask; #define SET_BITS(var, bits) ((var) |= (bits)) #define CLEAR_BITS(var, bits) ((var) &= ~(bits)) +#ifndef _DARWIN_C_SOURCE + /* + * Sanity check fd. + */ + + if (fd >= FD_SETSIZE) { + Tcl_Panic("TclUnixWaitForFile can't handle file id %d", fd); + /* must never get here, or select masks overrun will occur below */ + } +#endif + /* * If there is a non-zero finite timeout, compute the time when we give * up. @@ -1577,16 +1586,12 @@ TclUnixWaitForFile( } /* - * Initialize the ready masks and compute the mask offsets. + * Initialize the select masks. */ - if (fd >= FD_SETSIZE) { - Tcl_Panic("TclWaitForFile can't handle file id %d", fd); - /* must never get here, or readyMasks overrun will occur below */ - } - memset(readyMasks, 0, 3*MASK_SIZE*sizeof(fd_mask)); - index = fd / (NBBY*sizeof(fd_mask)); - bit = ((fd_mask)1) << (fd % (NBBY*sizeof(fd_mask))); + FD_ZERO(&readableMask); + FD_ZERO(&writableMask); + FD_ZERO(&exceptionalMask); /* * Loop in a mini-event loop of our own, waiting for either the file to @@ -1608,41 +1613,33 @@ TclUnixWaitForFile( } /* - * Set the appropriate bit in the ready masks for the fd. + * Setup the select masks for the fd. */ - if (mask & TCL_READABLE) { - readyMasks[index] |= bit; + if (mask & TCL_READABLE) { + FD_SET(fd, &readableMask); } - if (mask & TCL_WRITABLE) { - (readyMasks+MASK_SIZE)[index] |= bit; + if (mask & TCL_WRITABLE) { + FD_SET(fd, &writableMask); } if (mask & TCL_EXCEPTION) { - (readyMasks+2*(MASK_SIZE))[index] |= bit; + FD_SET(fd, &exceptionalMask); } /* * Wait for the event or a timeout. */ - /* - * This is needed to satisfy GCC 3.3's strict aliasing rules. - */ - - maskp[0] = &readyMasks[0]; - maskp[1] = &readyMasks[MASK_SIZE]; - maskp[2] = &readyMasks[2*MASK_SIZE]; - numFound = select(fd+1, (SELECT_MASK *) maskp[0], - (SELECT_MASK *) maskp[1], - (SELECT_MASK *) maskp[2], timeoutPtr); + numFound = select(fd + 1, &readableMask, &writableMask, + &exceptionalMask, timeoutPtr); if (numFound == 1) { - if (readyMasks[index] & bit) { + if (FD_ISSET(fd, &readableMask)) { SET_BITS(result, TCL_READABLE); } - if ((readyMasks+MASK_SIZE)[index] & bit) { + if (FD_ISSET(fd, &writableMask)) { SET_BITS(result, TCL_WRITABLE); } - if ((readyMasks+2*(MASK_SIZE))[index] & bit) { + if (FD_ISSET(fd, &exceptionalMask)) { SET_BITS(result, TCL_EXCEPTION); } result &= mask; diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index cb3ba17..a915d5f 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.93.2.1 2009/04/10 18:02:42 das Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.93.2.2 2009/04/10 20:46:21 das Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -3025,12 +3025,21 @@ TclUnixWaitForFile( { Tcl_Time abortTime = {0, 0}, now; /* silence gcc 4 warning */ struct timeval blockTime, *timeoutPtr; - int index, numFound, result = 0; - fd_mask bit; - fd_mask readyMasks[3*MASK_SIZE]; - fd_mask *maskp[3]; /* This array reflects the readable/writable - * conditions that were found to exist by the - * last call to select. */ + int numFound, result = 0; + fd_set readableMask; + fd_set writableMask; + fd_set exceptionalMask; + +#ifndef _DARWIN_C_SOURCE + /* + * Sanity check fd. + */ + + if (fd >= FD_SETSIZE) { + Tcl_Panic("TclUnixWaitForFile can't handle file id %d", fd); + /* must never get here, or select masks overrun will occur below */ + } +#endif /* * If there is a non-zero finite timeout, compute the time when we give @@ -3055,16 +3064,12 @@ TclUnixWaitForFile( } /* - * Initialize the ready masks and compute the mask offsets. + * Initialize the select masks. */ - if (fd >= FD_SETSIZE) { - Tcl_Panic("TclWaitForFile can't handle file id %d", fd); - /* must never get here, or readyMasks overrun will occur below */ - } - memset(readyMasks, 0, 3*MASK_SIZE*sizeof(fd_mask)); - index = fd / (NBBY*sizeof(fd_mask)); - bit = ((fd_mask)1) << (fd % (NBBY*sizeof(fd_mask))); + FD_ZERO(&readableMask); + FD_ZERO(&writableMask); + FD_ZERO(&exceptionalMask); /* * Loop in a mini-event loop of our own, waiting for either the file to @@ -3086,41 +3091,33 @@ TclUnixWaitForFile( } /* - * Set the appropriate bit in the ready masks for the fd. + * Setup the select masks for the fd. */ - if (mask & TCL_READABLE) { - readyMasks[index] |= bit; + if (mask & TCL_READABLE) { + FD_SET(fd, &readableMask); } - if (mask & TCL_WRITABLE) { - (readyMasks+MASK_SIZE)[index] |= bit; + if (mask & TCL_WRITABLE) { + FD_SET(fd, &writableMask); } if (mask & TCL_EXCEPTION) { - (readyMasks+2*(MASK_SIZE))[index] |= bit; + FD_SET(fd, &exceptionalMask); } /* * Wait for the event or a timeout. */ - /* - * This is needed to satisfy GCC 3.3's strict aliasing rules. - */ - - maskp[0] = &readyMasks[0]; - maskp[1] = &readyMasks[MASK_SIZE]; - maskp[2] = &readyMasks[2*MASK_SIZE]; - numFound = select(fd+1, (SELECT_MASK *) maskp[0], - (SELECT_MASK *) maskp[1], - (SELECT_MASK *) maskp[2], timeoutPtr); + numFound = select(fd + 1, &readableMask, &writableMask, + &exceptionalMask, timeoutPtr); if (numFound == 1) { - if (readyMasks[index] & bit) { + if (FD_ISSET(fd, &readableMask)) { SET_BITS(result, TCL_READABLE); } - if ((readyMasks+MASK_SIZE)[index] & bit) { + if (FD_ISSET(fd, &writableMask)) { SET_BITS(result, TCL_WRITABLE); } - if ((readyMasks+2*(MASK_SIZE))[index] & bit) { + if (FD_ISSET(fd, &exceptionalMask)) { SET_BITS(result, TCL_EXCEPTION); } result &= mask; -- cgit v0.12 From 378202fab847a2ea292310e3322a08c2f67c2ca2 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 10 Apr 2009 21:22:46 +0000 Subject: Darwin additions --- changes | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/changes b/changes index 1d8cf8b..5f260bc 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.13 2009/04/10 20:33:49 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.14 2009/04/10 21:22:46 das Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7328,4 +7328,8 @@ among multiple interps (kupries) 2008-04-09 tzdata updated to Olson's tzdata2009e (kenny) +2009-05-10 (new feature) Darwin: embeddable CoreFoundation notifier (steffen) + +2009-04-10 (bug fix)[1961211] Darwin [load] back-compatibility (steffen) + --- Released 8.5.7, April 10, 2009 --- See ChangeLog for details --- -- cgit v0.12 From f98c78b6a077737cbda73f643aa3a9dc87893ad8 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Apr 2009 21:27:17 +0000 Subject: * generic/tclStringObj.c (UpdateStringOfString): Fix bug detected by compiler warning about undefined "dst". --- ChangeLog | 3 +++ generic/tclStringObj.c | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c3726e0..2f1ba45 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,9 @@ * unix/configure: autoconf-2.59 * win/configure: + * generic/tclStringObj.c (UpdateStringOfString): Fix bug detected + by compiler warning about undefined "dst". + * tests/httpd: Backport new tests for http 2.7.3. * tests/http.tcl: diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index b4e5995..1f221f9 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.9 2009/04/07 18:37:23 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.10 2009/04/10 21:27:17 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -2934,12 +2934,12 @@ UpdateStringOfString( Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); } - dst = (char *) ckalloc((unsigned) (size + 1)); - objPtr->bytes = dst; + objPtr->bytes = (char *) ckalloc((unsigned) (size + 1)); objPtr->length = size; stringPtr->allocated = size; copyBytes: + dst = objPtr->bytes; for (i = 0; i < stringPtr->numChars; i++) { dst += Tcl_UniCharToUtf(unicode[i], dst); } -- cgit v0.12 From d598c88ac8004c9959466a54aef8a5b7ac3f14f3 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Apr 2009 21:31:13 +0000 Subject: *** 8.5.7 TAGGED FOR RELEASE *** --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 2f1ba45..c7d7345 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2009-04-10 Don Porter + *** 8.5.7 TAGGED FOR RELEASE *** + * changes: Update for 8.5.7 release. * generic/tcl.h: Bump to 8.5.7 for release. -- cgit v0.12 From e80b4afbd9fd9d7fd1753f7e1d899b7dfdb6e6af Mon Sep 17 00:00:00 2001 From: patthoyts Date: Fri, 10 Apr 2009 22:14:29 +0000 Subject: silence warning preventing symbols build with msvc6 (signed/unsigned comparison) --- generic/tclStringObj.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 1f221f9..dc36242 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.10 2009/04/10 21:27:17 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.11 2009/04/10 22:14:29 patthoyts Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -2922,7 +2922,7 @@ UpdateStringOfString( */ if (stringPtr->numChars <= INT_MAX/TCL_UTF_MAX - && stringPtr->allocated >= stringPtr->numChars * TCL_UTF_MAX) { + && stringPtr->allocated >= stringPtr->numChars * (size_t)TCL_UTF_MAX) { goto copyBytes; } -- cgit v0.12 From 1b76d887da9abc5109666f6406b8f8ab2510fea4 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 10 Apr 2009 22:53:47 +0000 Subject: fix warning --- macosx/tclMacOSXNotify.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index 88a4f88..263e1ff 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18.2.2 2009/04/10 20:46:21 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18.2.3 2009/04/10 22:53:47 das Exp $ */ #include "tclInt.h" @@ -1358,6 +1358,8 @@ UpdateWaitingListAndServiceEvents( while (Tcl_ServiceAll() && tsdPtr->waitTime == 0) {} } break; + default: + break; } } -- cgit v0.12 From 7853aef11c304649e0cf1319c3d20660f9d1ec87 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 11 Apr 2009 00:22:24 +0000 Subject: D'oh --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c7d7345..52efb9a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21,7 +21,7 @@ * tests/httpd: Backport new tests for http 2.7.3. * tests/http.tcl: -2008-04-10 Daniel Steffen +2009-04-10 Daniel Steffen * unix/tclUnixChan.c: TclUnixWaitForFile(): use FD_* macros * macosx/tclMacOSXNotify.c: to manipulate select masks (Cassoff). @@ -57,7 +57,7 @@ * macosx/tclMacOSXBundle.c: on Mac OS X 10.4 and later, replace deprecated NSModule API by dlfcn API. -2008-04-09 Kevin B. Kenny +2009-04-09 Kevin B. Kenny * tools/tclZIC.tcl: Always emit Unix-style line terminators. * library/tzdata: Olson's tzdata2009e. -- cgit v0.12 From ba9b83a702649e39d4ef7adb447439eb6fc2730a Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 13 Apr 2009 16:20:52 +0000 Subject: typos --- changes | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/changes b/changes index 5f260bc..81ffbf5 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.14 2009/04/10 21:22:46 das Exp $ +RCS: @(#) $Id: changes,v 1.136.2.15 2009/04/13 16:20:52 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7326,9 +7326,9 @@ among multiple interps (kupries) 2009-04-09 (bug fix)[26245326] [http::geturl] connection failures (golovan) => http 2.7.3 -2008-04-09 tzdata updated to Olson's tzdata2009e (kenny) +2009-04-09 tzdata updated to Olson's tzdata2009e (kenny) -2009-05-10 (new feature) Darwin: embeddable CoreFoundation notifier (steffen) +2009-04-10 (new feature) Darwin: embeddable CoreFoundation notifier (steffen) 2009-04-10 (bug fix)[1961211] Darwin [load] back-compatibility (steffen) -- cgit v0.12 From e818b8602c90d350d210762c6eb778ef1403f532 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 14 Apr 2009 00:55:34 +0000 Subject: update Apple copyright notice for 2009-04-10 changes --- macosx/Tcl-Info.plist.in | 8 ++++---- macosx/Tclsh-Info.plist.in | 8 ++++---- macosx/tclMacOSXBundle.c | 44 +++----------------------------------------- macosx/tclMacOSXNotify.c | 4 ++-- 4 files changed, 13 insertions(+), 51 deletions(-) diff --git a/macosx/Tcl-Info.plist.in b/macosx/Tcl-Info.plist.in index 0c82343..7177d2d 100644 --- a/macosx/Tcl-Info.plist.in +++ b/macosx/Tcl-Info.plist.in @@ -6,7 +6,7 @@ See the file "license.terms" for information on usage and redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. - RCS: @(#) $Id: Tcl-Info.plist.in,v 1.2 2007/04/23 20:46:13 das Exp $ + RCS: @(#) $Id: Tcl-Info.plist.in,v 1.2.4.1 2009/04/14 00:55:34 das Exp $ --> @@ -16,10 +16,10 @@ @TCL_LIB_FILE@ CFBundleGetInfoString Tcl @TCL_VERSION@@TCL_PATCH_LEVEL@, -Copyright © @TCL_YEAR@ Tcl Core Team, +Copyright © 1987-@TCL_YEAR@ Tcl Core Team, Copyright © 2001-@TCL_YEAR@ Daniel A. Steffen, -Initial MacOS X Port by Jim Ingham & Ian Reid, -Copyright © 2001-2002, Apple Computer, Inc. +Copyright © 2001-2009 Apple Inc., +Copyright © 2001-2002 Jim Ingham & Ian Reid
CFBundleIdentifier com.tcltk.tcllibrary CFBundleInfoDictionaryVersion diff --git a/macosx/Tclsh-Info.plist.in b/macosx/Tclsh-Info.plist.in index bf2333a..4f0ed21 100644 --- a/macosx/Tclsh-Info.plist.in +++ b/macosx/Tclsh-Info.plist.in @@ -6,7 +6,7 @@ See the file "license.terms" for information on usage and redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. - RCS: @(#) $Id: Tclsh-Info.plist.in,v 1.2 2007/12/13 15:26:03 dgp Exp $ + RCS: @(#) $Id: Tclsh-Info.plist.in,v 1.2.2.1 2009/04/14 00:55:34 das Exp $ --> @@ -16,10 +16,10 @@ tclsh@TCL_VERSION@ CFBundleGetInfoString Tcl Shell @TCL_VERSION@@TCL_PATCH_LEVEL@, -Copyright © @TCL_YEAR@ Tcl Core Team, +Copyright © 1987-@TCL_YEAR@ Tcl Core Team, Copyright © 2001-@TCL_YEAR@ Daniel A. Steffen, -Initial MacOS X Port by Jim Ingham & Ian Reid, -Copyright © 2001-2002, Apple Computer, Inc. +Copyright © 2001-2009 Apple Inc., +Copyright © 2001-2002 Jim Ingham & Ian Reid
CFBundleIdentifier com.tcltk.tclsh CFBundleInfoDictionaryVersion diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 0d12a28..776fb6b 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -4,51 +4,13 @@ * This file implements functions that inspect CFBundle structures on * MacOS X. * - * Copyright 2001, Apple Computer, Inc. - * Copyright (c) 2003-2007 Daniel A. Steffen + * Copyright 2001-2009, Apple Inc. + * Copyright (c) 2003-2009 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * The following terms apply to all files originating from Apple - * Computer, Inc. ("Apple") and associated with the software unless - * explicitly disclaimed in individual files. - * - * Apple hereby grants permission to use, copy, modify, distribute, and - * license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that - * this notice is included verbatim in any distributions. No written - * agreement, license, or royalty fee is required for any of the - * authorized uses. Modifications to this software may be copyrighted by - * their authors and need not follow the licensing terms described here, - * provided that the new terms are clearly indicated on the first page of - * each file where they apply. - * - * IN NO EVENT SHALL APPLE, THE AUTHORS OR DISTRIBUTORS OF THE SOFTWARE - * BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS - * DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF APPLE OR THE - * AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. APPLE, - * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND - * NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND - * APPLE,THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE - * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - * GOVERNMENT USE: If you are acquiring this software on behalf of the - * U.S. government, the Government shall have only "Restricted Rights" in - * the software and related documentation as defined in the Federal - * Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are - * acquiring the software on behalf of the Department of Defense, the - * software shall be classified as "Commercial Computer Software" and the - * Government shall have only "Restricted Rights" as defined in Clause - * 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the - * authors grant the U.S. Government and others acting in its behalf - * permission to use and distribute the software in accordance with the - * terms specified in this license. - * - * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.11.4.2 2009/04/10 16:59:22 das Exp $ + * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.11.4.3 2009/04/14 00:55:34 das Exp $ */ #include "tclPort.h" diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index 263e1ff..f56bb9a 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -6,13 +6,13 @@ * This file works together with generic/tclNotify.c. * * Copyright (c) 1995-1997 Sun Microsystems, Inc. - * Copyright 2001, Apple Computer, Inc. + * Copyright 2001-2009, Apple Inc. * Copyright (c) 2005-2009 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18.2.3 2009/04/10 22:53:47 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18.2.4 2009/04/14 00:55:34 das Exp $ */ #include "tclInt.h" -- cgit v0.12 From 4eb0b174fc36990292c361e64c470963fcb0d75b Mon Sep 17 00:00:00 2001 From: stwo Date: Tue, 14 Apr 2009 18:50:22 +0000 Subject: Removed -Wno-implicit-int from CFLAGS_WARNING. --- ChangeLog | 4 ++++ unix/tcl.m4 | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4deb40b..23eb910 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-04-14 Stuart Cassoff + + * unix/tcl.m4: Removed -Wno-implicit-int from CFLAGS_WARNING. + 2009-04-08 Don Porter * library/tcltest/tcltest.tcl: Fixed unsafe [eval]s in the tcltest diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 2231cd7..f104704 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1042,7 +1042,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O if test "$GCC" = "yes" ; then - CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing" + CFLAGS_WARNING="-Wall -fno-strict-aliasing" else CFLAGS_WARNING="" fi -- cgit v0.12 From 131b64e7f82f637f5460f99063549aaa133f8057 Mon Sep 17 00:00:00 2001 From: stwo Date: Tue, 14 Apr 2009 19:25:09 +0000 Subject: Regen unix/configure --- unix/configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/configure b/unix/configure index abc4554..be9e123 100755 --- a/unix/configure +++ b/unix/configure @@ -2576,7 +2576,7 @@ fi CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O if test "$GCC" = "yes" ; then - CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing" + CFLAGS_WARNING="-Wall -fno-strict-aliasing" else CFLAGS_WARNING="" fi -- cgit v0.12 From 89e86ba76744f2761dbf11f63ae1087dd965f2c8 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 14 Apr 2009 20:01:51 +0000 Subject: * library/tzdata/Asia/Karachi: Updated rules for Pakistan Summer Time (Olson's tzdata2009f) --- ChangeLog | 5 +++++ library/tzdata/Asia/Karachi | 2 ++ 2 files changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 52efb9a..aeecee1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-04-14 Kevin B. Kenny + + * library/tzdata/Asia/Karachi: Updated rules for Pakistan Summer + Time (Olson's tzdata2009f) + 2009-04-10 Don Porter *** 8.5.7 TAGGED FOR RELEASE *** diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 9db002c..3faa31e 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -11,4 +11,6 @@ set TZData(:Asia/Karachi) { {1033840860 18000 0 PKT} {1212260400 21600 1 PKST} {1225476000 18000 0 PKT} + {1239735600 21600 1 PKST} + {1257012000 18000 0 PKT} } -- cgit v0.12 From 0af763829f071a99aa805975ad64dc462b42dcd5 Mon Sep 17 00:00:00 2001 From: stwo Date: Tue, 14 Apr 2009 20:43:42 +0000 Subject: Removed -Wno-implicit-int from CFLAGS_WARNING. Regen unix/configure. --- ChangeLog | 4 ++++ unix/configure | 2 +- unix/tcl.m4 | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index aeecee1..4de1d7b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-04-14 Stuart Cassoff + + * unix/tcl.m4: Removed -Wno-implicit-int from CFLAGS_WARNING. + 2008-04-14 Kevin B. Kenny * library/tzdata/Asia/Karachi: Updated rules for Pakistan Summer diff --git a/unix/configure b/unix/configure index 4f1a3f4..230f188 100755 --- a/unix/configure +++ b/unix/configure @@ -6645,7 +6645,7 @@ fi CFLAGS_OPTIMIZE=-O if test "$GCC" = yes; then - CFLAGS_WARNING="-Wall -Wno-implicit-int" + CFLAGS_WARNING="-Wall" else CFLAGS_WARNING="" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index c7f26ca..9d653b1 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1142,7 +1142,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O AS_IF([test "$GCC" = yes], [ - CFLAGS_WARNING="-Wall -Wno-implicit-int" + CFLAGS_WARNING="-Wall" ], [CFLAGS_WARNING=""]) TCL_NEEDS_EXP_FILE=0 TCL_BUILD_EXP_FILE="" -- cgit v0.12 From fcc097bf7b3d1cb9f0c55b44b014eeec2b319846 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 15 Apr 2009 13:42:38 +0000 Subject: * changes: Update for 8.5.7 release. --- ChangeLog | 8 ++++++-- changes | 10 +++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4de1d7b..8f5531a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-04-15 Don Porter + + *** 8.5.7 TAGGED FOR RELEASE *** + + * changes: Update for 8.5.7 release. + 2009-04-14 Stuart Cassoff * unix/tcl.m4: Removed -Wno-implicit-int from CFLAGS_WARNING. @@ -9,8 +15,6 @@ 2009-04-10 Don Porter - *** 8.5.7 TAGGED FOR RELEASE *** - * changes: Update for 8.5.7 release. * generic/tcl.h: Bump to 8.5.7 for release. diff --git a/changes b/changes index 81ffbf5..956d199 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.15 2009/04/13 16:20:52 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.16 2009/04/15 13:42:43 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7305,7 +7305,7 @@ among multiple interps (kupries) 2009-02-20 (bug fix)[2571597] [file pathtype /a] wrong result (nadkarni,porter) -2009-03-15 (platform support) translate SIGINO where defined (BSD) (teterin) +2009-03-15 (platform support) translate SIGINFO where defined (BSD) (teterin) 2009-03-18 (bug fix)[2688184] memleak in [file normalize] (mistachkin) @@ -7326,10 +7326,10 @@ among multiple interps (kupries) 2009-04-09 (bug fix)[26245326] [http::geturl] connection failures (golovan) => http 2.7.3 -2009-04-09 tzdata updated to Olson's tzdata2009e (kenny) - 2009-04-10 (new feature) Darwin: embeddable CoreFoundation notifier (steffen) 2009-04-10 (bug fix)[1961211] Darwin [load] back-compatibility (steffen) ---- Released 8.5.7, April 10, 2009 --- See ChangeLog for details --- +2009-04-14 tzdata updated to Olson's tzdata2009f (kenny) + +--- Released 8.5.7, April 15, 2009 --- See ChangeLog for details --- -- cgit v0.12 From 7ca17ffd2e527a94b2588fa43f774708d0c69191 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 15 Apr 2009 19:07:04 +0000 Subject: * generic/tclStringObj.c: AppendUnicodeToUnicodeRep failed to set stringPtr->allocated to 0, leading to crashes. --- ChangeLog | 3 +++ generic/tclStringObj.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8f5531a..d0d4347 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ *** 8.5.7 TAGGED FOR RELEASE *** + * generic/tclStringObj.c: AppendUnicodeToUnicodeRep failed + to set stringPtr->allocated to 0, leading to crashes. + * changes: Update for 8.5.7 release. 2009-04-14 Stuart Cassoff diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index dc36242..a0992aa 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.11 2009/04/10 22:14:29 patthoyts Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.12 2009/04/15 19:07:04 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -1410,6 +1410,7 @@ AppendUnicodeToUnicodeRep( appendNumChars * sizeof(Tcl_UniChar)); stringPtr->unicode[numChars] = 0; stringPtr->numChars = numChars; + stringPtr->allocated = 0; Tcl_InvalidateStringRep(objPtr); } -- cgit v0.12 From c217dd3622ba6f95f77ca70cc8049c1a7256c58b Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 15 Apr 2009 19:11:07 +0000 Subject: * generic/tclStringObj.c: AppendUnicodeToUnicodeRep failed to set stringPtr->allocated to 0, leading to crashes. --- ChangeLog | 5 +++++ generic/tclStringObj.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 23eb910..23df02f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-15 Don Porter + + * generic/tclStringObj.c: AppendUnicodeToUnicodeRep failed + to set stringPtr->allocated to 0, leading to crashes. + 2009-04-14 Stuart Cassoff * unix/tcl.m4: Removed -Wno-implicit-int from CFLAGS_WARNING. diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 14f3bac..aad8881 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.9 2009/04/07 18:37:42 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.10 2009/04/15 19:11:07 dgp Exp $ */ #include "tclInt.h" @@ -1339,6 +1339,7 @@ AppendUnicodeToUnicodeRep(objPtr, unicode, appendNumChars) appendNumChars * sizeof(Tcl_UniChar)); stringPtr->unicode[numChars] = 0; stringPtr->numChars = numChars; + stringPtr->allocated = 0; Tcl_InvalidateStringRep(objPtr); } -- cgit v0.12 From 552791038722b4588c2f0bc2da2dde3dadc15928 Mon Sep 17 00:00:00 2001 From: das Date: Wed, 15 Apr 2009 19:22:44 +0000 Subject: UpdateStringOfString: matchup with core-8-5-branch changes --- generic/tclStringObj.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index aad8881..e6118c6 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.10 2009/04/15 19:11:07 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.11 2009/04/15 19:22:44 das Exp $ */ #include "tclInt.h" @@ -1934,20 +1934,20 @@ UpdateStringOfString(objPtr) } size = 0; - for (i = 0; i < stringPtr->numChars; i++) { + for (i = 0; i < stringPtr->numChars && size >= 0; i++) { size += Tcl_UniCharToUtf((int) unicode[i], dummy); } if (size < 0) { Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); } - - dst = (char *) ckalloc((unsigned) (size + 1)); - objPtr->bytes = dst; + + objPtr->bytes = (char *) ckalloc((unsigned) (size + 1)); objPtr->length = size; stringPtr->allocated = size; copyBytes: - for (i = 0; i < stringPtr->numChars && size >= 0; i++) { + dst = objPtr->bytes; + for (i = 0; i < stringPtr->numChars; i++) { dst += Tcl_UniCharToUtf(unicode[i], dst); } *dst = '\0'; -- cgit v0.12 From dfec115d39b5adbfc1ab38de1b52a06cb052831a Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 22 Apr 2009 17:21:10 +0000 Subject: * generic/tclStringObj.c (UpdateStringOfString): Added cast to fix signed/unsigned mismatch breaking win32 symbol/debug build. --- ChangeLog | 5 +++++ generic/tclStringObj.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 23df02f..12f4ef3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-22 Andreas Kupries + + * generic/tclStringObj.c (UpdateStringOfString): Added cast to fix + signed/unsigned mismatch breaking win32 symbol/debug build. + 2009-04-15 Don Porter * generic/tclStringObj.c: AppendUnicodeToUnicodeRep failed diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index e6118c6..19f8723 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.11 2009/04/15 19:22:44 das Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.32.2.12 2009/04/22 17:21:10 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1929,7 +1929,7 @@ UpdateStringOfString(objPtr) */ if (stringPtr->numChars <= INT_MAX/TCL_UTF_MAX - && stringPtr->allocated >= stringPtr->numChars * TCL_UTF_MAX) { + && stringPtr->allocated >= (size_t) (stringPtr->numChars * TCL_UTF_MAX)) { goto copyBytes; } -- cgit v0.12 From 136b9d33b58c750ee28000914db424c9dcd84a2f Mon Sep 17 00:00:00 2001 From: stwo Date: Fri, 24 Apr 2009 15:15:11 +0000 Subject: Don't chmod/exec installManPage. [Patch 2769530] --- ChangeLog | 5 +++++ unix/Makefile.in | 11 ++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index d0d4347..0e3d40f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-24 Stuart Cassoff + + * unix/Makefile.in: Don't chmod/exec installManPage. + [Patch 2769530] + 2009-04-15 Don Porter *** 8.5.7 TAGGED FOR RELEASE *** diff --git a/unix/Makefile.in b/unix/Makefile.in index 17561a5..3a4c8ac 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.14 2009/04/09 17:05:41 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.15 2009/04/24 15:15:11 stwo Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -828,9 +828,6 @@ install-msgs: tclsh $(TOP_DIR)/library/msgs "$(SCRIPT_INSTALL_DIR)"/msgs install-doc: doc - @if test ! -x $(UNIX_DIR)/installManPage; then \ - chmod +x $(UNIX_DIR)/installManPage; \ - fi @for i in "$(MAN_INSTALL_DIR)" "$(MAN1_INSTALL_DIR)" "$(MAN3_INSTALL_DIR)" "$(MANN_INSTALL_DIR)" ; \ do \ if [ ! -d "$$i" ] ; then \ @@ -842,17 +839,17 @@ install-doc: doc done; @echo "Installing and cross-linking top-level (.1) docs"; @for i in $(TOP_DIR)/doc/*.1; do \ - $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i "$(MAN1_INSTALL_DIR)"; \ + $(SHELL) $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i "$(MAN1_INSTALL_DIR)"; \ done @echo "Installing and cross-linking C API (.3) docs"; @for i in $(TOP_DIR)/doc/*.3; do \ - $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i "$(MAN3_INSTALL_DIR)"; \ + $(SHELL) $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i "$(MAN3_INSTALL_DIR)"; \ done @echo "Installing and cross-linking command (.n) docs"; @for i in $(TOP_DIR)/doc/*.n; do \ - $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i "$(MANN_INSTALL_DIR)"; \ + $(SHELL) $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i "$(MANN_INSTALL_DIR)"; \ done # Optional target to install private headers -- cgit v0.12 From 5524a7bbef637a5dfd39cf199e79efae784204e8 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 27 Apr 2009 12:35:01 +0000 Subject: Fix examples. [Bug 2780680] --- ChangeLog | 10 ++++++++-- doc/concat.n | 42 +++++++++++++++++++++--------------------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0e3d40f..1e9c9c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,13 @@ +2009-04-27 Donal K. Fellows + + * doc/concat.n (EXAMPLES): [Bug 2780680]: Rewrote so that the spacing + of result messages is correct. (The exact way they were wrong was + different when rendered through groff or as HTML, but it was still + wrong both ways.) + 2009-04-24 Stuart Cassoff - * unix/Makefile.in: Don't chmod/exec installManPage. - [Patch 2769530] + * unix/Makefile.in: [Patch 2769530]: Don't chmod/exec installManPage. 2009-04-15 Don Porter diff --git a/doc/concat.n b/doc/concat.n index c54f662..2ebcb63 100644 --- a/doc/concat.n +++ b/doc/concat.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: concat.n,v 1.11 2007/12/13 15:22:32 dgp Exp $ +'\" RCS: @(#) $Id: concat.n,v 1.11.2.1 2009/04/27 12:35:01 dkf Exp $ '\" .so man.macros .TH concat n 8.3 Tcl "Tcl Built-In Commands" @@ -26,33 +26,33 @@ into a single list. It permits any number of arguments; if no \fIarg\fRs are supplied, the result is an empty string. .SH EXAMPLES -Although \fBconcat\fR will concatenate lists (so the command: +Although \fBconcat\fR will concatenate lists, flattening them in the process +(so giving the following interactive session): +.PP .CS -\fBconcat\fR a b {c d e} {f {g h}} +\fI%\fR \fBconcat\fR a b {c d e} {f {g h}} +\fIa b c d e f {g h}\fR .CE -will return -.QW "\fBa b c d e f {g h}\fR" -as its result), it will also -concatenate things that are not lists, and hence the command: +.PP +it will also concatenate things that are not lists, as can be seen from this +session: +.PP .CS -\fBconcat\fR " a b {c " d " e} f" +\fI%\fR \fBconcat\fR " a b {c " d " e} f" +\fIa b {c d e} f\fR .CE -will return -.QW "\fBa b {c d e} f\fR" -as its result. .PP -Note that the concatenation does not remove spaces from the middle of -its arguments, so the command: +Note also that the concatenation does not remove spaces from the middle of +values, as can be seen here: +.PP .CS -\fBconcat\fR "a b c" { d e f } +\fI%\fR \fBconcat\fR "a b c" { d e f } +\fIa b c d e f\fR .CE -will return -.QW "\fBa b c d e f\fR" -(i.e. with three spaces between -the \fBa\fR, the \fBb\fR and the \fBc\fR). - +.PP +(i.e., there are three spaces between each of the \fBa\fR, the \fBb\fR and the +\fBc\fR). .SH "SEE ALSO" -append(n), eval(n) - +append(n), eval(n), join(n) .SH KEYWORDS concatenate, join, lists -- cgit v0.12 From 67f8b1bc1ba1d7df58f6005534a2f488a100c339 Mon Sep 17 00:00:00 2001 From: ferrieux Date: Mon, 27 Apr 2009 21:25:17 +0000 Subject: Backport fix for [Bug 2446662]: resync Win behavior on RST with that of unix (EOF). --- ChangeLog | 5 +++++ win/tclWinSock.c | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 12f4ef3..6addf27 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-27 Alexandre Ferrieux + + * win/tclWinSock.c: Backport fix for [Bug 2446662]: resync Win + behavior on RST with that of unix (EOF). + 2009-04-22 Andreas Kupries * generic/tclStringObj.c (UpdateStringOfString): Added cast to fix diff --git a/win/tclWinSock.c b/win/tclWinSock.c index eb1ee84..1053d4d 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.8 2007/11/29 00:31:51 hobbs Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.9 2009/04/27 21:25:18 ferrieux Exp $ */ #include "tclWinInt.h" @@ -1769,11 +1769,23 @@ TcpInputProc(instanceData, buf, toRead, errorCodePtr) break; } + error = winSock.WSAGetLastError(); + + /* + * If an RST comes, then ignore the error and report an EOF just like + * on unix. + */ + + if (error == WSAECONNRESET) { + infoPtr->flags |= SOCKET_EOF; + bytesRead = 0; + break; + } + /* * Check for error condition or underflow in non-blocking case. */ - error = winSock.WSAGetLastError(); if ((infoPtr->flags & SOCKET_ASYNC) || (error != WSAEWOULDBLOCK)) { TclWinConvertWSAError(error); *errorCodePtr = Tcl_GetErrno(); -- cgit v0.12 From 18cc34b4b4357e640bce38edb0bb3442058cf563 Mon Sep 17 00:00:00 2001 From: ferrieux Date: Mon, 27 Apr 2009 21:36:33 +0000 Subject: Backport fix for [Bug 2446662]: resync Win behavior on RST with that of unix (EOF). --- ChangeLog | 5 +++++ win/tclWinSock.c | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1e9c9c4..e4ec9ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-27 Alexandre Ferrieux + + * win/tclWinSock.c: Backport fix for [Bug 2446662]: resync Win + behavior on RST with that of unix (EOF). + 2009-04-27 Donal K. Fellows * doc/concat.n (EXAMPLES): [Bug 2780680]: Rewrote so that the spacing diff --git a/win/tclWinSock.c b/win/tclWinSock.c index ff94767..8e2612e 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.62 2008/02/22 11:50:54 patthoyts Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.62.2.1 2009/04/27 21:36:34 ferrieux Exp $ */ #include "tclWinInt.h" @@ -1574,11 +1574,23 @@ TcpInputProc( break; } + error = WSAGetLastError(); + + /* + * If an RST comes, then ignore the error and report an EOF just like + * on unix. + */ + + if (error == WSAECONNRESET) { + infoPtr->flags |= SOCKET_EOF; + bytesRead = 0; + break; + } + /* * Check for error condition or underflow in non-blocking case. */ - error = WSAGetLastError(); if ((infoPtr->flags & SOCKET_ASYNC) || (error != WSAEWOULDBLOCK)) { TclWinConvertWSAError(error); *errorCodePtr = Tcl_GetErrno(); -- cgit v0.12 From 08b861f017795ecc7d98f42a55b4d7f2a2c4b9ca Mon Sep 17 00:00:00 2001 From: ferrieux Date: Mon, 27 Apr 2009 21:45:20 +0000 Subject: Backport fix for [Bug 1028264]: WSACleanup() too early. The fix introduces "late exit handlers" for similar late process-wide cleanups. --- ChangeLog | 6 ++++ generic/tclEvent.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++-- generic/tclInt.h | 6 +++- win/tclWinSock.c | 4 +-- 4 files changed, 115 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index e4ec9ee..71fd071 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-04-27 Alexandre Ferrieux + * generic/tclInt.h: Backport fix for [Bug 1028264]: WSACleanup() too early. + * generic/tclEvent.c: The fix introduces "late exit handlers" + * win/tclWinSock.c: for similar late process-wide cleanups. + +2009-04-27 Alexandre Ferrieux + * win/tclWinSock.c: Backport fix for [Bug 2446662]: resync Win behavior on RST with that of unix (EOF). diff --git a/generic/tclEvent.c b/generic/tclEvent.c index dc9705d..299922f 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.80 2008/03/10 17:54:47 dgp Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.80.2.1 2009/04/27 21:45:20 ferrieux Exp $ */ #include "tclInt.h" @@ -51,7 +51,7 @@ typedef struct ErrAssocData { } ErrAssocData; /* - * For each exit handler created with a call to Tcl_CreateExitHandler there is + * For each exit handler created with a call to Tcl_Create(Late)ExitHandler there is * a structure of the following type: */ @@ -70,6 +70,9 @@ typedef struct ExitHandler { static ExitHandler *firstExitPtr = NULL; /* First in list of all exit handlers for * application. */ +static ExitHandler *firstLateExitPtr = NULL; + /* First in list of all late exit handlers for + * application. */ TCL_DECLARE_MUTEX(exitMutex) /* @@ -633,6 +636,39 @@ Tcl_CreateExitHandler( /* *---------------------------------------------------------------------- * + * TclCreateLateExitHandler -- + * + * Arrange for a given function to be invoked after all pre-thread cleanups + * + * Results: + * None. + * + * Side effects: + * Proc will be invoked with clientData as argument when the application + * exits. + * + *---------------------------------------------------------------------- + */ + +void +TclCreateLateExitHandler( + Tcl_ExitProc *proc, /* Function to invoke. */ + ClientData clientData) /* Arbitrary value to pass to proc. */ +{ + ExitHandler *exitPtr; + + exitPtr = (ExitHandler *) ckalloc(sizeof(ExitHandler)); + exitPtr->proc = proc; + exitPtr->clientData = clientData; + Tcl_MutexLock(&exitMutex); + exitPtr->nextPtr = firstLateExitPtr; + firstLateExitPtr = exitPtr; + Tcl_MutexUnlock(&exitMutex); +} + +/* + *---------------------------------------------------------------------- + * * Tcl_DeleteExitHandler -- * * This function cancels an existing exit handler matching proc and @@ -676,6 +712,49 @@ Tcl_DeleteExitHandler( /* *---------------------------------------------------------------------- * + * TclDeleteLateExitHandler -- + * + * This function cancels an existing late exit handler matching proc and + * clientData, if such a handler exits. + * + * Results: + * None. + * + * Side effects: + * If there is a late exit handler corresponding to proc and clientData then + * it is canceled; if no such handler exists then nothing happens. + * + *---------------------------------------------------------------------- + */ + +void +TclDeleteLateExitHandler( + Tcl_ExitProc *proc, /* Function that was previously registered. */ + ClientData clientData) /* Arbitrary value to pass to proc. */ +{ + ExitHandler *exitPtr, *prevPtr; + + Tcl_MutexLock(&exitMutex); + for (prevPtr = NULL, exitPtr = firstLateExitPtr; exitPtr != NULL; + prevPtr = exitPtr, exitPtr = exitPtr->nextPtr) { + if ((exitPtr->proc == proc) + && (exitPtr->clientData == clientData)) { + if (prevPtr == NULL) { + firstLateExitPtr = exitPtr->nextPtr; + } else { + prevPtr->nextPtr = exitPtr->nextPtr; + } + ckfree((char *) exitPtr); + break; + } + } + Tcl_MutexUnlock(&exitMutex); + return; +} + +/* + *---------------------------------------------------------------------- + * * Tcl_CreateThreadExitHandler -- * * Arrange for a given function to be invoked just before the current @@ -976,6 +1055,27 @@ Tcl_Finalize(void) Tcl_FinalizeThread(); /* + * Now invoke late (process-wide) exit handlers. + */ + + Tcl_MutexLock(&exitMutex); + for (exitPtr = firstLateExitPtr; exitPtr != NULL; exitPtr = firstLateExitPtr) { + /* + * Be careful to remove the handler from the list before invoking its + * callback. This protects us against double-freeing if the callback + * should call Tcl_DeleteLateExitHandler on itself. + */ + + firstLateExitPtr = exitPtr->nextPtr; + Tcl_MutexUnlock(&exitMutex); + exitPtr->proc(exitPtr->clientData); + ckfree((char *) exitPtr); + Tcl_MutexLock(&exitMutex); + } + firstLateExitPtr = NULL; + Tcl_MutexUnlock(&exitMutex); + + /* * Now finalize the Tcl execution environment. Note that this must be done * after the exit handlers, because there are order dependencies. */ diff --git a/generic/tclInt.h b/generic/tclInt.h index aef7a3f..5d7e6ab 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362.2.5 2008/11/14 00:22:39 nijtmans Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.6 2009/04/27 21:45:20 ferrieux Exp $ */ #ifndef _TCLINT @@ -2502,6 +2502,10 @@ MODULE_SCOPE int TclFileMakeDirsCmd(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE int TclFileRenameCmd(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); +MODULE_SCOPE void TclCreateLateExitHandler (Tcl_ExitProc * proc, + ClientData clientData); +MODULE_SCOPE void TclDeleteLateExitHandler (Tcl_ExitProc * proc, + ClientData clientData); MODULE_SCOPE void TclFinalizeAllocSubsystem(void); MODULE_SCOPE void TclFinalizeAsync(void); MODULE_SCOPE void TclFinalizeDoubleConversion(void); diff --git a/win/tclWinSock.c b/win/tclWinSock.c index 8e2612e..b26d697 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.62.2.1 2009/04/27 21:36:34 ferrieux Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.62.2.2 2009/04/27 21:45:20 ferrieux Exp $ */ #include "tclWinInt.h" @@ -231,7 +231,7 @@ InitSockets(void) if (!initialized) { initialized = 1; - Tcl_CreateExitHandler(SocketExitHandler, (ClientData) NULL); + TclCreateLateExitHandler(SocketExitHandler, (ClientData) NULL); /* * Create the async notification window with a new class. We must -- cgit v0.12 From 4ce9fe53dec6acb9baef9825f09cccd3d2984204 Mon Sep 17 00:00:00 2001 From: ferrieux Date: Mon, 27 Apr 2009 22:10:28 +0000 Subject: Backport fix for [Bug 1028264]: WSACleanup() too early. The fix introduces "late exit handlers" for similar late process-wide cleanups. --- ChangeLog | 6 +++ generic/tclEvent.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++++---- generic/tclInt.h | 6 ++- win/tclWinSock.c | 4 +- 4 files changed, 119 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6addf27..1e4ca6a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-04-27 Alexandre Ferrieux + * generic/tclInt.h: Backport fix for [Bug 1028264]: WSACleanup() too early. + * generic/tclEvent.c: The fix introduces "late exit handlers" + * win/tclWinSock.c: for similar late process-wide cleanups. + +2009-04-27 Alexandre Ferrieux + * win/tclWinSock.c: Backport fix for [Bug 2446662]: resync Win behavior on RST with that of unix (EOF). diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 2cdae51..554b8ee 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.28.2.15 2007/03/19 17:06:25 dgp Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.28.2.16 2009/04/27 22:10:28 ferrieux Exp $ */ #include "tclInt.h" @@ -56,8 +56,8 @@ typedef struct ErrAssocData { } ErrAssocData; /* - * For each exit handler created with a call to Tcl_CreateExitHandler - * there is a structure of the following type: + * For each exit handler created with a call to Tcl_Create(Late)ExitHandler there is + * a structure of the following type: */ typedef struct ExitHandler { @@ -76,6 +76,9 @@ typedef struct ExitHandler { static ExitHandler *firstExitPtr = NULL; /* First in list of all exit handlers for * application. */ +static ExitHandler *firstLateExitPtr = NULL; + /* First in list of all late exit handlers for + * application. */ TCL_DECLARE_MUTEX(exitMutex) /* @@ -435,6 +438,39 @@ Tcl_CreateExitHandler(proc, clientData) /* *---------------------------------------------------------------------- * + * TclCreateLateExitHandler -- + * + * Arrange for a given function to be invoked after all pre-thread cleanups + * + * Results: + * None. + * + * Side effects: + * Proc will be invoked with clientData as argument when the application + * exits. + * + *---------------------------------------------------------------------- + */ + +void +TclCreateLateExitHandler( + Tcl_ExitProc *proc, /* Function to invoke. */ + ClientData clientData) /* Arbitrary value to pass to proc. */ +{ + ExitHandler *exitPtr; + + exitPtr = (ExitHandler *) ckalloc(sizeof(ExitHandler)); + exitPtr->proc = proc; + exitPtr->clientData = clientData; + Tcl_MutexLock(&exitMutex); + exitPtr->nextPtr = firstLateExitPtr; + firstLateExitPtr = exitPtr; + Tcl_MutexUnlock(&exitMutex); +} + +/* + *---------------------------------------------------------------------- + * * Tcl_DeleteExitHandler -- * * This procedure cancels an existing exit handler matching proc @@ -479,6 +515,49 @@ Tcl_DeleteExitHandler(proc, clientData) /* *---------------------------------------------------------------------- * + * TclDeleteLateExitHandler -- + * + * This function cancels an existing late exit handler matching proc and + * clientData, if such a handler exits. + * + * Results: + * None. + * + * Side effects: + * If there is a late exit handler corresponding to proc and clientData then + * it is canceled; if no such handler exists then nothing happens. + * + *---------------------------------------------------------------------- + */ + +void +TclDeleteLateExitHandler( + Tcl_ExitProc *proc, /* Function that was previously registered. */ + ClientData clientData) /* Arbitrary value to pass to proc. */ +{ + ExitHandler *exitPtr, *prevPtr; + + Tcl_MutexLock(&exitMutex); + for (prevPtr = NULL, exitPtr = firstLateExitPtr; exitPtr != NULL; + prevPtr = exitPtr, exitPtr = exitPtr->nextPtr) { + if ((exitPtr->proc == proc) + && (exitPtr->clientData == clientData)) { + if (prevPtr == NULL) { + firstLateExitPtr = exitPtr->nextPtr; + } else { + prevPtr->nextPtr = exitPtr->nextPtr; + } + ckfree((char *) exitPtr); + break; + } + } + Tcl_MutexUnlock(&exitMutex); + return; +} + +/* + *---------------------------------------------------------------------- + * * Tcl_CreateThreadExitHandler -- * * Arrange for a given procedure to be invoked just before the @@ -825,14 +904,34 @@ Tcl_Finalize() * Note that there is no thread-local storage after this call. */ - Tcl_FinalizeThread(); + Tcl_FinalizeThread(); + /* + * Now invoke late (process-wide) exit handlers. + */ + + Tcl_MutexLock(&exitMutex); + for (exitPtr = firstLateExitPtr; exitPtr != NULL; exitPtr = firstLateExitPtr) { /* - * Now finalize the Tcl execution environment. Note that this - * must be done after the exit handlers, because there are - * order dependencies. + * Be careful to remove the handler from the list before invoking its + * callback. This protects us against double-freeing if the callback + * should call Tcl_DeleteLateExitHandler on itself. */ + firstLateExitPtr = exitPtr->nextPtr; + Tcl_MutexUnlock(&exitMutex); + exitPtr->proc(exitPtr->clientData); + ckfree((char *) exitPtr); + Tcl_MutexLock(&exitMutex); + } + firstLateExitPtr = NULL; + Tcl_MutexUnlock(&exitMutex); + + /* + * Now finalize the Tcl execution environment. Note that this must be done + * after the exit handlers, because there are order dependencies. + */ + TclFinalizeCompilation(); TclFinalizeExecution(); TclFinalizeEnvironment(); diff --git a/generic/tclInt.h b/generic/tclInt.h index 7de3d01..43870e7 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.32 2008/07/22 21:40:32 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.33 2009/04/27 22:10:28 ferrieux Exp $ */ #ifndef _TCLINT @@ -1893,6 +1893,10 @@ EXTERN int TclFileMakeDirsCmd _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])) ; EXTERN int TclFileRenameCmd _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])) ; +EXTERN void TclCreateLateExitHandler (Tcl_ExitProc * proc, + ClientData clientData); +EXTERN void TclDeleteLateExitHandler (Tcl_ExitProc * proc, + ClientData clientData); EXTERN void TclFinalizeAllocSubsystem _ANSI_ARGS_((void)); EXTERN void TclFinalizeAsync _ANSI_ARGS_((void)); EXTERN void TclFinalizeCompilation _ANSI_ARGS_((void)); diff --git a/win/tclWinSock.c b/win/tclWinSock.c index 1053d4d..329b57f 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.9 2009/04/27 21:25:18 ferrieux Exp $ + * RCS: @(#) $Id: tclWinSock.c,v 1.36.2.10 2009/04/27 22:10:28 ferrieux Exp $ */ #include "tclWinInt.h" @@ -326,7 +326,7 @@ InitSockets() if (!initialized) { initialized = 1; - Tcl_CreateExitHandler(SocketExitHandler, (ClientData) NULL); + TclCreateLateExitHandler(SocketExitHandler, (ClientData) NULL); winSock.hModule = LoadLibraryA("wsock32.dll"); -- cgit v0.12 From 04ea78ea6abac1b67cda877f32c8a79a0496b44b Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 28 Apr 2009 16:42:04 +0000 Subject: * unix/tcl.m4, unix/configure (SC_CONFIG_CFLAGS): harden the check to add _r to CC on AIX with threads. --- ChangeLog | 5 + unix/configure | 711 +++++++++++++++++++++++++++++---------------------------- unix/tcl.m4 | 5 +- 3 files changed, 364 insertions(+), 357 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1e4ca6a..07dc8bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-28 Jeff Hobbs + + * unix/tcl.m4, unix/configure (SC_CONFIG_CFLAGS): harden the check + to add _r to CC on AIX with threads. + 2009-04-27 Alexandre Ferrieux * generic/tclInt.h: Backport fix for [Bug 1028264]: WSACleanup() too early. diff --git a/unix/configure b/unix/configure index be9e123..0efc1f5 100755 --- a/unix/configure +++ b/unix/configure @@ -2624,11 +2624,12 @@ fi if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then # AIX requires the _r compiler when gcc isn't being used case "${CC}" in - *_r) + *_r|*_r\ *) # ok ... ;; *) - CC=${CC}_r + # Make sure only first arg gets _r + CC=`echo "$CC" | sed -e 's/^\([^ ]*\)/\1_r/'` ;; esac echo "$ac_t""Using $CC for compiling with threads" 1>&6 @@ -2701,7 +2702,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2705: checking for gettimeofday in -lbsd" >&5 +echo "configure:2706: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2709,7 +2710,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2763,7 +2764,7 @@ EOF # is always linked to, for compatibility. #----------------------------------------------------------- echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6 -echo "configure:2767: checking for inet_ntoa in -lbind" >&5 +echo "configure:2768: checking for inet_ntoa in -lbind" >&5 ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2771,7 +2772,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2852,7 +2853,7 @@ EOF SHLIB_SUFFIX=".sl" fi echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2856: checking for shl_load in -ldld" >&5 +echo "configure:2857: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2860,7 +2861,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2939,7 +2940,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:2943: checking for shl_load in -ldld" >&5 +echo "configure:2944: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2947,7 +2948,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3082,17 +3083,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3086: checking for dld.h" >&5 +echo "configure:3087: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3096: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3097: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3124,7 +3125,7 @@ fi fi if test $do64bit = yes; then echo $ac_n "checking if compiler accepts -m64 flag""... $ac_c" 1>&6 -echo "configure:3128: checking if compiler accepts -m64 flag" >&5 +echo "configure:3129: checking if compiler accepts -m64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_m64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3132,14 +3133,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -m64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_m64=yes else @@ -3192,17 +3193,17 @@ EOF else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:3196: checking for dld.h" >&5 +echo "configure:3197: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3206: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3207: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3270,17 +3271,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:3274: checking for dlfcn.h" >&5 +echo "configure:3275: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3285: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3307,13 +3308,13 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:3311: checking for ELF" >&5 +echo "configure:3312: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:3396: checking for ELF" >&5 +echo "configure:3397: checking for ELF" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_elf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 case `arch` in ppc) echo $ac_n "checking if compiler accepts -arch ppc64 flag""... $ac_c" 1>&6 -echo "configure:3477: checking if compiler accepts -arch ppc64 flag" >&5 +echo "configure:3478: checking if compiler accepts -arch ppc64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_ppc64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3481,14 +3482,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_ppc64=yes else @@ -3508,7 +3509,7 @@ echo "$ac_t""$tcl_cv_cc_arch_ppc64" 1>&6 fi;; i386) echo $ac_n "checking if compiler accepts -arch x86_64 flag""... $ac_c" 1>&6 -echo "configure:3512: checking if compiler accepts -arch x86_64 flag" >&5 +echo "configure:3513: checking if compiler accepts -arch x86_64 flag" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_arch_x86_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3516,14 +3517,14 @@ else hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch x86_64" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_arch_x86_64=yes else @@ -3552,7 +3553,7 @@ echo "$ac_t""$tcl_cv_cc_arch_x86_64" 1>&6 fi SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}' echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6 -echo "configure:3556: checking if ld accepts -single_module flag" >&5 +echo "configure:3557: checking if ld accepts -single_module flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3560,14 +3561,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_single_module=yes else @@ -3594,7 +3595,7 @@ echo "$ac_t""$tcl_cv_ld_single_module" 1>&6 LDFLAGS="$LDFLAGS -prebind" LDFLAGS="$LDFLAGS -headerpad_max_install_names" echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6 -echo "configure:3598: checking if ld accepts -search_paths_first flag" >&5 +echo "configure:3599: checking if ld accepts -search_paths_first flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3602,14 +3603,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_search_paths_first=yes else @@ -3632,7 +3633,7 @@ echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6 PLAT_OBJS=\$\(MAC\_OSX_OBJS\) PLAT_SRCS=\$\(MAC\_OSX_SRCS\) echo $ac_n "checking whether to use CoreFoundation""... $ac_c" 1>&6 -echo "configure:3636: checking whether to use CoreFoundation" >&5 +echo "configure:3637: checking whether to use CoreFoundation" >&5 # Check whether --enable-corefoundation or --disable-corefoundation was given. if test "${enable_corefoundation+set}" = set; then enableval="$enable_corefoundation" @@ -3644,7 +3645,7 @@ fi echo "$ac_t""$tcl_corefoundation" 1>&6 if test $tcl_corefoundation = yes; then echo $ac_n "checking for CoreFoundation.framework""... $ac_c" 1>&6 -echo "configure:3648: checking for CoreFoundation.framework" >&5 +echo "configure:3649: checking for CoreFoundation.framework" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3658,14 +3659,14 @@ else done; fi LIBS="$LIBS -framework CoreFoundation" cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation=yes else @@ -3692,7 +3693,7 @@ EOF fi if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then echo $ac_n "checking for 64-bit CoreFoundation""... $ac_c" 1>&6 -echo "configure:3696: checking for 64-bit CoreFoundation" >&5 +echo "configure:3697: checking for 64-bit CoreFoundation" >&5 if eval "test \"`echo '$''{'tcl_cv_lib_corefoundation_64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3701,14 +3702,14 @@ else eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"' done cat > conftest.$ac_ext < int main() { CFBundleRef b = CFBundleGetMainBundle(); ; return 0; } EOF -if { (eval echo configure:3712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_lib_corefoundation_64=yes else @@ -4045,7 +4046,7 @@ EOF # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:4049: checking for ld accepts -Bexport flag" >&5 +echo "configure:4050: checking for ld accepts -Bexport flag" >&5 if eval "test \"`echo '$''{'tcl_cv_ld_Bexport'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4053,14 +4054,14 @@ else hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_ld_Bexport=yes else @@ -4110,13 +4111,13 @@ echo "$ac_t""$tcl_cv_ld_Bexport" 1>&6 if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:4114: checking sys/exec.h" >&5 +echo "configure:4115: checking sys/exec.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexec_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4134,7 +4135,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4139: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexec_h=usable else @@ -4154,13 +4155,13 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:4158: checking a.out.h" >&5 +echo "configure:4159: checking a.out.h" >&5 if eval "test \"`echo '$''{'tcl_cv_aout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4178,7 +4179,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4182: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_aout_h=usable else @@ -4198,13 +4199,13 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:4202: checking sys/exec_aout.h" >&5 +echo "configure:4203: checking sys/exec_aout.h" >&5 if eval "test \"`echo '$''{'tcl_cv_sysexecaout_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4222,7 +4223,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4226: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4227: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_sysexecaout_h=usable else @@ -4375,7 +4376,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:4379: checking for build with symbols" >&5 +echo "configure:4380: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -4436,21 +4437,21 @@ TCL_DBGX=${DBGX} echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 -echo "configure:4440: checking for required early compiler flags" >&5 +echo "configure:4441: checking for required early compiler flags" >&5 tcl_flags="" if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=no else @@ -4458,7 +4459,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4466,7 +4467,7 @@ int main() { char *p = (char *)strtoll; char *q = (char *)strtoull; ; return 0; } EOF -if { (eval echo configure:4470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4471: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__isoc99_source=yes else @@ -4493,14 +4494,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4505: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=no else @@ -4508,7 +4509,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4516,7 +4517,7 @@ int main() { struct stat64 buf; int i = stat64("/", &buf); ; return 0; } EOF -if { (eval echo configure:4520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4521: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile64_source=yes else @@ -4543,14 +4544,14 @@ EOF echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4555: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=no else @@ -4558,7 +4559,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -4566,7 +4567,7 @@ int main() { char *p = (char *)open64; ; return 0; } EOF -if { (eval echo configure:4570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_flag__largefile_source64=yes else @@ -4597,7 +4598,7 @@ EOF echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 -echo "configure:4601: checking for 64-bit integer type" >&5 +echo "configure:4602: checking for 64-bit integer type" >&5 if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4605,14 +4606,14 @@ else tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_type_64bit=__int64 else @@ -4626,7 +4627,7 @@ rm -f conftest* # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_64bit=${tcl_type_64bit} else @@ -4660,13 +4661,13 @@ EOF # Now check for auxiliary declarations echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 -echo "configure:4664: checking for struct dirent64" >&5 +echo "configure:4665: checking for struct dirent64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4674,7 +4675,7 @@ int main() { struct dirent64 p; ; return 0; } EOF -if { (eval echo configure:4678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4679: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_dirent64=yes else @@ -4695,13 +4696,13 @@ EOF fi echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 -echo "configure:4699: checking for struct stat64" >&5 +echo "configure:4700: checking for struct stat64" >&5 if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4709,7 +4710,7 @@ struct stat64 p; ; return 0; } EOF -if { (eval echo configure:4713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4714: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_struct_stat64=yes else @@ -4732,12 +4733,12 @@ EOF for ac_func in open64 lseek64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4736: checking for $ac_func" >&5 +echo "configure:4737: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4785,13 +4786,13 @@ fi done echo $ac_n "checking for off64_t""... $ac_c" 1>&6 -echo "configure:4789: checking for off64_t" >&5 +echo "configure:4790: checking for off64_t" >&5 if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -4799,7 +4800,7 @@ off64_t offset; ; return 0; } EOF -if { (eval echo configure:4803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4804: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_off64_t=yes else @@ -4831,14 +4832,14 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4835: checking whether byte ordering is bigendian" >&5 +echo "configure:4836: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4849,11 +4850,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4854: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4864,7 +4865,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4869: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4884,7 +4885,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -4930,12 +4931,12 @@ fi for ac_func in getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4934: checking for $ac_func" >&5 +echo "configure:4935: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4992,12 +4993,12 @@ done for ac_func in opendir strstr strtol strtoll strtoull tmpnam waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4996: checking for $ac_func" >&5 +echo "configure:4997: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5047,12 +5048,12 @@ done echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:5051: checking for strerror" >&5 +echo "configure:5052: checking for strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strerror=yes" else @@ -5099,12 +5100,12 @@ EOF fi echo $ac_n "checking for getwd""... $ac_c" 1>&6 -echo "configure:5103: checking for getwd" >&5 +echo "configure:5104: checking for getwd" >&5 if eval "test \"`echo '$''{'ac_cv_func_getwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getwd=yes" else @@ -5151,12 +5152,12 @@ EOF fi echo $ac_n "checking for wait3""... $ac_c" 1>&6 -echo "configure:5155: checking for wait3" >&5 +echo "configure:5156: checking for wait3" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_wait3=yes" else @@ -5203,12 +5204,12 @@ EOF fi echo $ac_n "checking for uname""... $ac_c" 1>&6 -echo "configure:5207: checking for uname" >&5 +echo "configure:5208: checking for uname" >&5 if eval "test \"`echo '$''{'ac_cv_func_uname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_uname=yes" else @@ -5262,12 +5263,12 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ ac_cv_func_realpath=no fi echo $ac_n "checking for realpath""... $ac_c" 1>&6 -echo "configure:5266: checking for realpath" >&5 +echo "configure:5267: checking for realpath" >&5 if eval "test \"`echo '$''{'ac_cv_func_realpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_realpath=yes" else @@ -5320,12 +5321,12 @@ fi if test "${TCL_THREADS}" = 1; then echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6 -echo "configure:5324: checking for getpwuid_r" >&5 +echo "configure:5325: checking for getpwuid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwuid_r=yes" else @@ -5364,13 +5365,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwuid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwuid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5368: checking for getpwuid_r with 5 args" >&5 +echo "configure:5369: checking for getpwuid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5387,7 +5388,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5391: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_5=yes else @@ -5408,13 +5409,13 @@ EOF else echo $ac_n "checking for getpwuid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5412: checking for getpwuid_r with 4 args" >&5 +echo "configure:5413: checking for getpwuid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwuid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5431,7 +5432,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5436: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwuid_r_4=yes else @@ -5464,12 +5465,12 @@ else fi echo $ac_n "checking for getpwnam_r""... $ac_c" 1>&6 -echo "configure:5468: checking for getpwnam_r" >&5 +echo "configure:5469: checking for getpwnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getpwnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getpwnam_r=yes" else @@ -5508,13 +5509,13 @@ if eval "test \"`echo '$ac_cv_func_'getpwnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getpwnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5512: checking for getpwnam_r with 5 args" >&5 +echo "configure:5513: checking for getpwnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5531,7 +5532,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5536: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_5=yes else @@ -5552,13 +5553,13 @@ EOF else echo $ac_n "checking for getpwnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5556: checking for getpwnam_r with 4 args" >&5 +echo "configure:5557: checking for getpwnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getpwnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5575,7 +5576,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5579: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getpwnam_r_4=yes else @@ -5608,12 +5609,12 @@ else fi echo $ac_n "checking for getgrgid_r""... $ac_c" 1>&6 -echo "configure:5612: checking for getgrgid_r" >&5 +echo "configure:5613: checking for getgrgid_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrgid_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrgid_r=yes" else @@ -5652,13 +5653,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrgid_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrgid_r with 5 args""... $ac_c" 1>&6 -echo "configure:5656: checking for getgrgid_r with 5 args" >&5 +echo "configure:5657: checking for getgrgid_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5675,7 +5676,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5679: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5680: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_5=yes else @@ -5696,13 +5697,13 @@ EOF else echo $ac_n "checking for getgrgid_r with 4 args""... $ac_c" 1>&6 -echo "configure:5700: checking for getgrgid_r with 4 args" >&5 +echo "configure:5701: checking for getgrgid_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrgid_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5719,7 +5720,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5723: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrgid_r_4=yes else @@ -5752,12 +5753,12 @@ else fi echo $ac_n "checking for getgrnam_r""... $ac_c" 1>&6 -echo "configure:5756: checking for getgrnam_r" >&5 +echo "configure:5757: checking for getgrnam_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_getgrnam_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getgrnam_r=yes" else @@ -5796,13 +5797,13 @@ if eval "test \"`echo '$ac_cv_func_'getgrnam_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for getgrnam_r with 5 args""... $ac_c" 1>&6 -echo "configure:5800: checking for getgrnam_r with 5 args" >&5 +echo "configure:5801: checking for getgrnam_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5819,7 +5820,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5823: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_5=yes else @@ -5840,13 +5841,13 @@ EOF else echo $ac_n "checking for getgrnam_r with 4 args""... $ac_c" 1>&6 -echo "configure:5844: checking for getgrnam_r with 4 args" >&5 +echo "configure:5845: checking for getgrnam_r with 4 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_getgrnam_r_4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5863,7 +5864,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_getgrnam_r_4=yes else @@ -5923,12 +5924,12 @@ EOF else echo $ac_n "checking for gethostbyname_r""... $ac_c" 1>&6 -echo "configure:5927: checking for gethostbyname_r" >&5 +echo "configure:5928: checking for gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname_r=yes" else @@ -5967,13 +5968,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyname_r with 6 args""... $ac_c" 1>&6 -echo "configure:5971: checking for gethostbyname_r with 6 args" >&5 +echo "configure:5972: checking for gethostbyname_r with 6 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5990,7 +5991,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:5994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_6=yes else @@ -6011,13 +6012,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 5 args""... $ac_c" 1>&6 -echo "configure:6015: checking for gethostbyname_r with 5 args" >&5 +echo "configure:6016: checking for gethostbyname_r with 5 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6034,7 +6035,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6038: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_5=yes else @@ -6055,13 +6056,13 @@ EOF else echo $ac_n "checking for gethostbyname_r with 3 args""... $ac_c" 1>&6 -echo "configure:6059: checking for gethostbyname_r with 3 args" >&5 +echo "configure:6060: checking for gethostbyname_r with 3 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyname_r_3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6076,7 +6077,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6080: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyname_r_3=yes else @@ -6110,12 +6111,12 @@ else fi echo $ac_n "checking for gethostbyaddr_r""... $ac_c" 1>&6 -echo "configure:6114: checking for gethostbyaddr_r" >&5 +echo "configure:6115: checking for gethostbyaddr_r" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyaddr_r=yes" else @@ -6154,13 +6155,13 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyaddr_r`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gethostbyaddr_r with 7 args""... $ac_c" 1>&6 -echo "configure:6158: checking for gethostbyaddr_r with 7 args" >&5 +echo "configure:6159: checking for gethostbyaddr_r with 7 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_7'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6180,7 +6181,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_7=yes else @@ -6201,13 +6202,13 @@ EOF else echo $ac_n "checking for gethostbyaddr_r with 8 args""... $ac_c" 1>&6 -echo "configure:6205: checking for gethostbyaddr_r with 8 args" >&5 +echo "configure:6206: checking for gethostbyaddr_r with 8 args" >&5 if eval "test \"`echo '$''{'tcl_cv_api_gethostbyaddr_r_8'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6227,7 +6228,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_api_gethostbyaddr_r_8=yes else @@ -6273,17 +6274,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6277: checking for $ac_hdr" >&5 +echo "configure:6278: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6310,7 +6311,7 @@ fi done echo $ac_n "checking termios vs. termio vs. sgtty""... $ac_c" 1>&6 -echo "configure:6314: checking termios vs. termio vs. sgtty" >&5 +echo "configure:6315: checking termios vs. termio vs. sgtty" >&5 if eval "test \"`echo '$''{'tcl_cv_api_serial'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6319,7 +6320,7 @@ else tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6334,7 +6335,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6351,7 +6352,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6365,7 +6366,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6383,7 +6384,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6398,7 +6399,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6416,7 +6417,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6433,7 +6434,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termios else @@ -6451,7 +6452,7 @@ fi tcl_cv_api_serial=no else cat > conftest.$ac_ext < @@ -6467,7 +6468,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=termio else @@ -6485,7 +6486,7 @@ fi tcl_cv_api_serial=none else cat > conftest.$ac_ext < @@ -6502,7 +6503,7 @@ int main() { return 1; } EOF -if { (eval echo configure:6506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_api_serial=sgtty else @@ -6545,20 +6546,20 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for fd_set in sys/types""... $ac_c" 1>&6 -echo "configure:6549: checking for fd_set in sys/types" >&5 +echo "configure:6550: checking for fd_set in sys/types" >&5 if eval "test \"`echo '$''{'tcl_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:6562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_type_fd_set=yes else @@ -6574,13 +6575,13 @@ echo "$ac_t""$tcl_cv_type_fd_set" 1>&6 tcl_ok=$tcl_cv_type_fd_set if test $tcl_ok = no; then echo $ac_n "checking for fd_mask in sys/select""... $ac_c" 1>&6 -echo "configure:6578: checking for fd_mask in sys/select" >&5 +echo "configure:6579: checking for fd_mask in sys/select" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -6617,12 +6618,12 @@ fi #------------------------------------------------------------------------------ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:6621: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:6622: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6630,7 +6631,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:6634: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6635: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -6655,17 +6656,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6659: checking for $ac_hdr" >&5 +echo "configure:6660: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6669: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6670: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6692,12 +6693,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:6696: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:6697: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6706,7 +6707,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:6710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -6727,12 +6728,12 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:6731: checking for tm_zone in struct tm" >&5 +echo "configure:6732: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -6740,7 +6741,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:6744: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -6760,12 +6761,12 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:6764: checking for tzname" >&5 +echo "configure:6765: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -6775,7 +6776,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:6779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -6800,12 +6801,12 @@ fi for ac_func in gmtime_r localtime_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6804: checking for $ac_func" >&5 +echo "configure:6805: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6854,20 +6855,20 @@ done echo $ac_n "checking tm_tzadj in struct tm""... $ac_c" 1>&6 -echo "configure:6858: checking tm_tzadj in struct tm" >&5 +echo "configure:6859: checking tm_tzadj in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_tzadj'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_tzadj; ; return 0; } EOF -if { (eval echo configure:6871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_tzadj=yes else @@ -6888,20 +6889,20 @@ EOF fi echo $ac_n "checking tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:6892: checking tm_gmtoff in struct tm" >&5 +echo "configure:6893: checking tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'tcl_cv_member_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm tm; tm.tm_gmtoff; ; return 0; } EOF -if { (eval echo configure:6905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_member_tm_gmtoff=yes else @@ -6926,13 +6927,13 @@ EOF # (like convex) have timezone functions, etc. # echo $ac_n "checking long timezone variable""... $ac_c" 1>&6 -echo "configure:6930: checking long timezone variable" >&5 +echo "configure:6931: checking long timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6941,7 +6942,7 @@ extern long timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6945: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_long=yes else @@ -6964,13 +6965,13 @@ EOF # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # echo $ac_n "checking time_t timezone variable""... $ac_c" 1>&6 -echo "configure:6968: checking time_t timezone variable" >&5 +echo "configure:6969: checking time_t timezone variable" >&5 if eval "test \"`echo '$''{'tcl_cv_timezone_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -6979,7 +6980,7 @@ extern time_t timezone; exit (0); ; return 0; } EOF -if { (eval echo configure:6983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_timezone_time=yes else @@ -7006,12 +7007,12 @@ EOF # in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:7010: checking for st_blksize in struct stat" >&5 +echo "configure:7011: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7019,7 +7020,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:7023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7024: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7040,12 +7041,12 @@ EOF fi echo $ac_n "checking for fstatfs""... $ac_c" 1>&6 -echo "configure:7044: checking for fstatfs" >&5 +echo "configure:7045: checking for fstatfs" >&5 if eval "test \"`echo '$''{'ac_cv_func_fstatfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_fstatfs=yes" else @@ -7097,7 +7098,7 @@ fi # data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:7101: checking for 8-bit clean memcmp" >&5 +echo "configure:7102: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7105,7 +7106,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -7139,12 +7140,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" # {The replacement define is in compat/string.h} #-------------------------------------------------------------------- echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:7143: checking for memmove" >&5 +echo "configure:7144: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -7200,7 +7201,7 @@ fi #-------------------------------------------------------------------- if test "x${ac_cv_func_strstr}" = "xyes"; then echo $ac_n "checking proper strstr implementation""... $ac_c" 1>&6 -echo "configure:7204: checking proper strstr implementation" >&5 +echo "configure:7205: checking proper strstr implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strstr_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7209,7 +7210,7 @@ else tcl_cv_strstr_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strstr_unbroken=ok else @@ -7245,12 +7246,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtoul""... $ac_c" 1>&6 -echo "configure:7249: checking for strtoul" >&5 +echo "configure:7250: checking for strtoul" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtoul'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtoul=yes" else @@ -7295,7 +7296,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtoul implementation""... $ac_c" 1>&6 -echo "configure:7299: checking proper strtoul implementation" >&5 +echo "configure:7300: checking proper strtoul implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtoul_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7304,7 +7305,7 @@ else tcl_cv_strtoul_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtoul_unbroken=ok else @@ -7349,12 +7350,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7353: checking for strtod" >&5 +echo "configure:7354: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7399,7 +7400,7 @@ fi if test $tcl_ok = 1; then echo $ac_n "checking proper strtod implementation""... $ac_c" 1>&6 -echo "configure:7403: checking proper strtod implementation" >&5 +echo "configure:7404: checking proper strtod implementation" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_unbroken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7408,7 +7409,7 @@ else tcl_cv_strtod_unbroken=broken else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_unbroken=ok else @@ -7456,12 +7457,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:7460: checking for strtod" >&5 +echo "configure:7461: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -7506,7 +7507,7 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:7510: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:7511: checking for Solaris2.4/Tru64 strtod bugs" >&5 if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7515,7 +7516,7 @@ else tcl_cv_strtod_buggy=buggy else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_strtod_buggy=ok else @@ -7569,12 +7570,12 @@ EOF #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:7573: checking for ANSI C header files" >&5 +echo "configure:7574: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7582,7 +7583,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7599,7 +7600,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7617,7 +7618,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -7638,7 +7639,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -7649,7 +7650,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:7653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -7673,12 +7674,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:7677: checking for mode_t" >&5 +echo "configure:7678: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7706,12 +7707,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7710: checking for pid_t" >&5 +echo "configure:7711: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7739,12 +7740,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7743: checking for size_t" >&5 +echo "configure:7744: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7772,12 +7773,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7776: checking for uid_t in sys/types.h" >&5 +echo "configure:7777: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7807,13 +7808,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7811: checking for socklen_t" >&5 +echo "configure:7812: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7852,12 +7853,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:7856: checking for opendir" >&5 +echo "configure:7857: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -7913,13 +7914,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking union wait""... $ac_c" 1>&6 -echo "configure:7917: checking union wait" >&5 +echo "configure:7918: checking union wait" >&5 if eval "test \"`echo '$''{'tcl_cv_union_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7931,7 +7932,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED ; return 0; } EOF -if { (eval echo configure:7935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_union_wait=yes else @@ -7958,12 +7959,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for strncasecmp""... $ac_c" 1>&6 -echo "configure:7962: checking for strncasecmp" >&5 +echo "configure:7963: checking for strncasecmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncasecmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strncasecmp=yes" else @@ -8008,7 +8009,7 @@ fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -lsocket""... $ac_c" 1>&6 -echo "configure:8012: checking for strncasecmp in -lsocket" >&5 +echo "configure:8013: checking for strncasecmp in -lsocket" >&5 ac_lib_var=`echo socket'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8016,7 +8017,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8051,7 +8052,7 @@ fi fi if test "$tcl_ok" = 0; then echo $ac_n "checking for strncasecmp in -linet""... $ac_c" 1>&6 -echo "configure:8055: checking for strncasecmp in -linet" >&5 +echo "configure:8056: checking for strncasecmp in -linet" >&5 ac_lib_var=`echo inet'_'strncasecmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8059,7 +8060,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8075: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8108,12 +8109,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for BSDgettimeofday""... $ac_c" 1>&6 -echo "configure:8112: checking for BSDgettimeofday" >&5 +echo "configure:8113: checking for BSDgettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_BSDgettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_BSDgettimeofday=yes" else @@ -8158,12 +8159,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 -echo "configure:8162: checking for gettimeofday" >&5 +echo "configure:8163: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -8213,13 +8214,13 @@ fi fi echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6 -echo "configure:8217: checking for gettimeofday declaration" >&5 +echo "configure:8218: checking for gettimeofday declaration" >&5 if eval "test \"`echo '$''{'tcl_cv_grep_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -8250,14 +8251,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:8254: checking whether char is unsigned" >&5 +echo "configure:8255: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -8313,13 +8314,13 @@ EOF fi echo $ac_n "checking signed char declarations""... $ac_c" 1>&6 -echo "configure:8317: checking signed char declarations" >&5 +echo "configure:8318: checking signed char declarations" >&5 if eval "test \"`echo '$''{'tcl_cv_char_signed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_char_signed=yes else @@ -8354,7 +8355,7 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for a putenv() that copies the buffer""... $ac_c" 1>&6 -echo "configure:8358: checking for a putenv() that copies the buffer" >&5 +echo "configure:8359: checking for a putenv() that copies the buffer" >&5 if eval "test \"`echo '$''{'tcl_cv_putenv_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8363,7 +8364,7 @@ else tcl_cv_putenv_copy=no else cat > conftest.$ac_ext < @@ -8385,7 +8386,7 @@ else } EOF -if { (eval echo configure:8389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_cv_putenv_copy=no else @@ -8425,17 +8426,17 @@ fi if test "$langinfo_ok" = "yes"; then ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -echo "configure:8429: checking for langinfo.h" >&5 +echo "configure:8430: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8459,21 +8460,21 @@ fi fi echo $ac_n "checking whether to use nl_langinfo""... $ac_c" 1>&6 -echo "configure:8463: checking whether to use nl_langinfo" >&5 +echo "configure:8464: checking whether to use nl_langinfo" >&5 if test "$langinfo_ok" = "yes"; then if eval "test \"`echo '$''{'tcl_cv_langinfo_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:8477: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_cv_langinfo_h=yes else @@ -8506,17 +8507,17 @@ if test "`uname -s`" = "Darwin" ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8510: checking for $ac_hdr" >&5 +echo "configure:8511: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8545,12 +8546,12 @@ done for ac_func in copyfile do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8549: checking for $ac_func" >&5 +echo "configure:8550: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8602,17 +8603,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8606: checking for $ac_hdr" >&5 +echo "configure:8607: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8641,12 +8642,12 @@ done for ac_func in OSSpinLockLock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8645: checking for $ac_func" >&5 +echo "configure:8646: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8696,12 +8697,12 @@ done for ac_func in pthread_atfork do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8700: checking for $ac_func" >&5 +echo "configure:8701: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8765,17 +8766,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8769: checking for $ac_hdr" >&5 +echo "configure:8770: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8779: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8780: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8803,14 +8804,14 @@ done if test "$ac_cv_header_AvailabilityMacros_h" = yes; then echo $ac_n "checking if weak import is available""... $ac_c" 1>&6 -echo "configure:8807: checking if weak import is available" >&5 +echo "configure:8808: checking if weak import is available" >&5 if eval "test \"`echo '$''{'tcl_cv_cc_weak_import'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_cc_weak_import=yes else @@ -8854,13 +8855,13 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for fts""... $ac_c" 1>&6 -echo "configure:8858: checking for fts" >&5 +echo "configure:8859: checking for fts" >&5 if eval "test \"`echo '$''{'tcl_cv_api_fts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -8875,7 +8876,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:8879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* tcl_cv_api_fts=yes else @@ -8907,17 +8908,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8911: checking for $ac_hdr" >&5 +echo "configure:8912: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8922: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8947,17 +8948,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8951: checking for $ac_hdr" >&5 +echo "configure:8952: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8961: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8962: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8985,7 +8986,7 @@ done echo $ac_n "checking system version""... $ac_c" 1>&6 -echo "configure:8989: checking system version" >&5 +echo "configure:8990: checking system version" >&5 if eval "test \"`echo '$''{'tcl_cv_sys_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9016,7 +9017,7 @@ echo "$ac_t""$tcl_cv_sys_version" 1>&6 system=$tcl_cv_sys_version echo $ac_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O""... $ac_c" 1>&6 -echo "configure:9020: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 +echo "configure:9021: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5 case $system in # There used to be code here to use FIONBIO under AIX. However, it # was reported that FIONBIO doesn't work under AIX 3.2.5. Since @@ -9065,17 +9066,17 @@ fi if test $tcl_ok = yes; then ac_safe=`echo "sys/sdt.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/sdt.h""... $ac_c" 1>&6 -echo "configure:9069: checking for sys/sdt.h" >&5 +echo "configure:9070: checking for sys/sdt.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9102,7 +9103,7 @@ if test $tcl_ok = yes; then # Extract the first word of "dtrace", so it can be a program name with args. set dummy dtrace; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9106: checking for $ac_word" >&5 +echo "configure:9107: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_DTRACE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9137,7 +9138,7 @@ fi test -z "$ac_cv_path_DTRACE" && tcl_ok=no fi echo $ac_n "checking whether to enable DTrace support""... $ac_c" 1>&6 -echo "configure:9141: checking whether to enable DTrace support" >&5 +echo "configure:9142: checking whether to enable DTrace support" >&5 MAKEFILE_SHELL='/bin/sh' if test $tcl_ok = yes; then cat >> confdefs.h <<\EOF @@ -9191,7 +9192,7 @@ if test "`uname -s`" = "Darwin" ; then if test "`uname -s`" = "Darwin" ; then echo $ac_n "checking how to package libraries""... $ac_c" 1>&6 -echo "configure:9195: checking how to package libraries" >&5 +echo "configure:9196: checking how to package libraries" >&5 # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index f104704..21a2d93 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1064,11 +1064,12 @@ dnl AC_CHECK_TOOL(AR, ar) if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then # AIX requires the _r compiler when gcc isn't being used case "${CC}" in - *_r) + *_r|*_r\ *) # ok ... ;; *) - CC=${CC}_r + # Make sure only first arg gets _r + CC=`echo "$CC" | sed -e 's/^\([[^ ]]*\)/\1_r/'` ;; esac AC_MSG_RESULT([Using $CC for compiling with threads]) -- cgit v0.12 From c659ba60f74722c205c2800dc123b2eb96822f4a Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 28 Apr 2009 16:44:54 +0000 Subject: * unix/tcl.m4, unix/configure (SC_CONFIG_CFLAGS): harden the check to add _r to CC on AIX with threads. --- unix/configure | 5 +++-- unix/tcl.m4 | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/unix/configure b/unix/configure index 230f188..897ab57 100755 --- a/unix/configure +++ b/unix/configure @@ -6707,11 +6707,12 @@ fi # AIX requires the _r compiler when gcc isn't being used case "${CC}" in - *_r) + *_r|*_r\ *) # ok ... ;; *) - CC=${CC}_r + # Make sure only first arg gets _r + CC=`echo "$CC" | sed -e 's/^\([^ ]*\)/\1_r/'` ;; esac echo "$as_me:$LINENO: result: Using $CC for compiling with threads" >&5 diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 9d653b1..5ab8549 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1162,11 +1162,12 @@ dnl AC_CHECK_TOOL(AR, ar) AS_IF([test "${TCL_THREADS}" = "1" -a "$GCC" != "yes"], [ # AIX requires the _r compiler when gcc isn't being used case "${CC}" in - *_r) + *_r|*_r\ *) # ok ... ;; *) - CC=${CC}_r + # Make sure only first arg gets _r + CC=`echo "$CC" | sed -e 's/^\([[^ ]]*\)/\1_r/'` ;; esac AC_MSG_RESULT([Using $CC for compiling with threads]) @@ -3011,7 +3012,7 @@ AC_DEFUN([SC_TCL_GETHOSTBYNAME_R], [AC_CHECK_FUNC(gethostbyname_r, [ #-------------------------------------------------------------------- # SC_TCL_GETADDRINFO # -# Check if we have 'getaddrinfo' +# Check if we have 'getaddrinfo' for hostname lookup and inet6/ipv6 # # Arguments: # None -- cgit v0.12 From 382ee9f9c2dc48ff4067ef850db1cb5b2d2394ce Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 28 Apr 2009 16:46:43 +0000 Subject: comment with last tcl.m4 change --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 71fd071..9b54cfc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-28 Jeff Hobbs + + * unix/tcl.m4, unix/configure (SC_CONFIG_CFLAGS): harden the check + to add _r to CC on AIX with threads. + 2009-04-27 Alexandre Ferrieux * generic/tclInt.h: Backport fix for [Bug 1028264]: WSACleanup() too early. -- cgit v0.12 From c8dbde43253b501eae4a908359215b0a2c51f036 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 29 Apr 2009 14:59:34 +0000 Subject: Fix [Bug 2651823]. --- ChangeLog | 5 +++++ generic/tcl.h | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9b54cfc..ddfcc46 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-29 Donal K. Fellows + + * generic/tcl.h (Tcl_StatBuf): [Bug 2651823]: Improved logic for + detecting what base API to use on Win64, supplied by Fausto Lubatti. + 2009-04-28 Jeff Hobbs * unix/tcl.m4, unix/configure (SC_CONFIG_CFLAGS): harden the check diff --git a/generic/tcl.h b/generic/tcl.h index 184c0bb..a86e2f9 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.9 2009/04/10 16:54:51 dgp Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.10 2009/04/29 14:59:34 dkf Exp $ */ #ifndef _TCL @@ -367,12 +367,12 @@ typedef struct stat Tcl_StatBuf; # ifdef __BORLANDC__ typedef struct stati64 Tcl_StatBuf; # define TCL_LL_MODIFIER "L" -# else /* __BORLANDC__ */ -# if _MSC_VER < 1400 || !defined(_M_IX86) +# else /* !__BORLANDC__ */ +# if _MSC_VER < 1400 && defined(_WIN64) typedef struct _stati64 Tcl_StatBuf; # else typedef struct _stat64 Tcl_StatBuf; -# endif /* _MSC_VER < 1400 */ +# endif /* _MSC_VER < 1400 && _WIN64 */ # define TCL_LL_MODIFIER "I64" # endif /* __BORLANDC__ */ # else /* __WIN32__ */ -- cgit v0.12 From 24b0de09363c5d2c55f8f3cee608482a26d206fb Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 29 Apr 2009 15:47:05 +0000 Subject: Revert last commit which fails to build with msvc2005 and msvc6 --- ChangeLog | 5 ----- generic/tcl.h | 8 ++++---- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index ddfcc46..9b54cfc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,3 @@ -2009-04-29 Donal K. Fellows - - * generic/tcl.h (Tcl_StatBuf): [Bug 2651823]: Improved logic for - detecting what base API to use on Win64, supplied by Fausto Lubatti. - 2009-04-28 Jeff Hobbs * unix/tcl.m4, unix/configure (SC_CONFIG_CFLAGS): harden the check diff --git a/generic/tcl.h b/generic/tcl.h index a86e2f9..ad3021e 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.10 2009/04/29 14:59:34 dkf Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.11 2009/04/29 15:47:05 patthoyts Exp $ */ #ifndef _TCL @@ -367,12 +367,12 @@ typedef struct stat Tcl_StatBuf; # ifdef __BORLANDC__ typedef struct stati64 Tcl_StatBuf; # define TCL_LL_MODIFIER "L" -# else /* !__BORLANDC__ */ -# if _MSC_VER < 1400 && defined(_WIN64) +# else /* __BORLANDC__ */ +# if _MSC_VER < 1400 || !defined(_M_IX86) typedef struct _stati64 Tcl_StatBuf; # else typedef struct _stat64 Tcl_StatBuf; -# endif /* _MSC_VER < 1400 && _WIN64 */ +# endif /* _MSC_VER < 1400 */ # define TCL_LL_MODIFIER "I64" # endif /* __BORLANDC__ */ # else /* __WIN32__ */ -- cgit v0.12 From 2bfdc581ba334338f7ae48607cd1bf269815f587 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 6 May 2009 20:16:55 +0000 Subject: * generic/tclCmdMZ.c: Improve overflow error message from [string repeat]. [Bug 2582327] --- ChangeLog | 5 +++++ generic/tclCmdMZ.c | 4 ++-- generic/tclExecute.c | 4 +++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9b54cfc..cd5c822 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-05-06 Don Porter + + * generic/tclCmdMZ.c: Improve overflow error message from + [string repeat]. [Bug 2582327] + 2009-04-28 Jeff Hobbs * unix/tcl.m4, unix/configure (SC_CONFIG_CFLAGS): harden the check diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 0e5330d..5a88a6f 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.163.2.2 2009/02/04 18:57:47 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.163.2.3 2009/05/06 20:16:55 dgp Exp $ */ #include "tclInt.h" @@ -2141,7 +2141,7 @@ StringReptCmd( if (count > (INT_MAX / length1)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "max size for a Tcl value (%d bytes) exceeded", INT_MAX)); + "result exceeds max size for a Tcl value (%d bytes)", INT_MAX)); return TCL_ERROR; } length2 = length1 * count; diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 3bf099e..c1b13b5 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.7 2009/03/20 14:35:06 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.8 2009/05/06 20:16:55 dgp Exp $ */ #include "tclInt.h" @@ -2121,6 +2121,7 @@ TclExecuteByteCode( } if (appendLen < 0) { + /* TODO: convert panic to error ? */ Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); } @@ -2148,6 +2149,7 @@ TclExecuteByteCode( objResultPtr = OBJ_AT_DEPTH(opnd-1); bytes = TclGetStringFromObj(objResultPtr, &length); if (length + appendLen < 0) { + /* TODO: convert panic to error ? */ Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); } #if !TCL_COMPILE_DEBUG -- cgit v0.12 From c928dd4059aa6908a40bcb9e7ce94c163e6abfdf Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Fri, 8 May 2009 02:23:51 +0000 Subject: * generic/tclObj.c (Tcl_GetCommandFromObj): fix for bug [2785893], insure that a command in a deleted namespace cannot be found through a cached name. --- ChangeLog | 6 ++++++ generic/tclObj.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index cd5c822..268dca7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-05-07 Miguel Sofer + + * generic/tclObj.c (Tcl_GetCommandFromObj): fix for bug [2785893], + insure that a command in a deleted namespace cannot be found + through a cached name. + 2009-05-06 Don Porter * generic/tclCmdMZ.c: Improve overflow error message from diff --git a/generic/tclObj.c b/generic/tclObj.c index 700b112..239865d 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.139.2.1 2008/03/31 17:21:15 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.139.2.2 2009/05/08 02:23:52 msofer Exp $ */ #include "tclInt.h" @@ -3526,6 +3526,7 @@ Tcl_GetCommandFromObj( || (cmdPtr = resPtr->cmdPtr, cmdPtr->cmdEpoch != resPtr->cmdEpoch) || (interp != cmdPtr->nsPtr->interp) || (cmdPtr->flags & CMD_IS_DELETED) + || (cmdPtr->nsPtr->flags & NS_DYING) || ((resPtr->refNsPtr != NULL) && (((refNsPtr = (Namespace *) TclGetCurrentNamespace(interp)) != resPtr->refNsPtr) -- cgit v0.12 From 8b7d58d45372ecb03111fa3d1b23d8d161074295 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 29 May 2009 16:28:03 +0000 Subject: * library/platform/platform.tcl: Fixed handling of cpu ia64, * library/platform/pkgIndex.tcl: taking ia64_32 into account * unix/Makefile.in: now. Bumped version to 1.0.5. Updated the * win/Makefile.in: installation commands. --- ChangeLog | 7 +++++++ library/platform/pkgIndex.tcl | 2 +- library/platform/platform.tcl | 6 +++--- unix/Makefile.in | 6 +++--- win/Makefile.in | 6 +++--- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 268dca7..a7e99d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-05-29 Andreas Kupries + + * library/platform/platform.tcl: Fixed handling of cpu ia64, + * library/platform/pkgIndex.tcl: taking ia64_32 into account + * unix/Makefile.in: now. Bumped version to 1.0.5. Updated the + * win/Makefile.in: installation commands. + 2009-05-07 Miguel Sofer * generic/tclObj.c (Tcl_GetCommandFromObj): fix for bug [2785893], diff --git a/library/platform/pkgIndex.tcl b/library/platform/pkgIndex.tcl index a63f4aa..0b69432 100644 --- a/library/platform/pkgIndex.tcl +++ b/library/platform/pkgIndex.tcl @@ -1,3 +1,3 @@ -package ifneeded platform 1.0.4 [list source [file join $dir platform.tcl]] +package ifneeded platform 1.0.5 [list source [file join $dir platform.tcl]] package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]] diff --git a/library/platform/platform.tcl b/library/platform/platform.tcl index b42c419..1a454cd 100644 --- a/library/platform/platform.tcl +++ b/library/platform/platform.tcl @@ -103,7 +103,7 @@ proc ::platform::generic {} { } sunos { set plat solaris - if {$cpu ne "ia64"} { + if {![string match "ia64*" $cpu]} { if {$tcl_platform(wordSize) == 8} { append cpu 64 } @@ -127,7 +127,7 @@ proc ::platform::generic {} { } hp-ux { set plat hpux - if {$cpu ne "ia64"} { + if {![string match "ia64*" $cpu]} { set cpu parisc if {$tcl_platform(wordSize) == 8} { append cpu 64 @@ -289,7 +289,7 @@ proc ::platform::patterns {id} { # ### ### ### ######### ######### ######### ## Ready -package provide platform 1.0.4 +package provide platform 1.0.5 # ### ### ### ######### ######### ######### ## Demo application diff --git a/unix/Makefile.in b/unix/Makefile.in index 3a4c8ac..77e50ea 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.15 2009/04/24 15:15:11 stwo Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.16 2009/05/29 16:28:04 andreas_kupries Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -798,8 +798,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs @echo "Installing package tcltest 2.3.1 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.1.tm; - @echo "Installing package platform 1.0.4 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.4.tm; + @echo "Installing package platform 1.0.5 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.5.tm; @echo "Installing package platform::shell 1.1.4 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/platform/shell.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform/shell-1.1.4.tm; diff --git a/win/Makefile.in b/win/Makefile.in index 7ae9c93..cf44f03 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.9 2009/04/09 17:05:42 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.10 2009/05/29 16:28:04 andreas_kupries Exp $ VERSION = @TCL_VERSION@ @@ -646,8 +646,8 @@ install-libraries: libraries install-tzdata install-msgs @$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.4.2.tm; @echo "Installing package tcltest 2.3.1 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.1.tm; - @echo "Installing package platform 1.0.4 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.4.tm; + @echo "Installing package platform 1.0.5 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.5.tm; @echo "Installing package platform::shell 1.1.4 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/platform/shell.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform/shell-1.1.4.tm; @echo "Installing encodings"; -- cgit v0.12 From 744a95624d867500334fb6f73a3384743fccc0dd Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 30 May 2009 03:51:23 +0000 Subject: Applied Olson's tzdata2009h --- ChangeLog | 5 ++ library/tzdata/Africa/Cairo | 182 ++++++++++++++++++++++---------------------- library/tzdata/Asia/Amman | 28 +++---- 3 files changed, 110 insertions(+), 105 deletions(-) diff --git a/ChangeLog b/ChangeLog index a7e99d6..06e7431 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-05-30 Kevin B. Kenny + + * library/tzdata/Africa/Cairo: + * library/tzdata/Asia/Amman: Olson's tzdata2009h. + 2009-05-29 Andreas Kupries * library/platform/platform.tcl: Fixed handling of cpu ia64, diff --git a/library/tzdata/Africa/Cairo b/library/tzdata/Africa/Cairo index d812a44..5eca6e2 100644 --- a/library/tzdata/Africa/Cairo +++ b/library/tzdata/Africa/Cairo @@ -120,185 +120,185 @@ set TZData(:Africa/Cairo) { {1209074400 10800 1 EEST} {1219957200 7200 0 EET} {1240524000 10800 1 EEST} - {1251406800 7200 0 EET} + {1253826000 7200 0 EET} {1272578400 10800 1 EEST} - {1282856400 7200 0 EET} + {1285880400 7200 0 EET} {1304028000 10800 1 EEST} - {1314306000 7200 0 EET} + {1317330000 7200 0 EET} {1335477600 10800 1 EEST} - {1346360400 7200 0 EET} + {1348779600 7200 0 EET} {1366927200 10800 1 EEST} - {1377810000 7200 0 EET} + {1380229200 7200 0 EET} {1398376800 10800 1 EEST} - {1409259600 7200 0 EET} + {1411678800 7200 0 EET} {1429826400 10800 1 EEST} - {1440709200 7200 0 EET} + {1443128400 7200 0 EET} {1461880800 10800 1 EEST} - {1472158800 7200 0 EET} + {1475182800 7200 0 EET} {1493330400 10800 1 EEST} - {1504213200 7200 0 EET} + {1506632400 7200 0 EET} {1524780000 10800 1 EEST} - {1535662800 7200 0 EET} + {1538082000 7200 0 EET} {1556229600 10800 1 EEST} - {1567112400 7200 0 EET} + {1569531600 7200 0 EET} {1587679200 10800 1 EEST} - {1598562000 7200 0 EET} + {1600981200 7200 0 EET} {1619733600 10800 1 EEST} - {1630011600 7200 0 EET} + {1633035600 7200 0 EET} {1651183200 10800 1 EEST} - {1661461200 7200 0 EET} + {1664485200 7200 0 EET} {1682632800 10800 1 EEST} - {1693515600 7200 0 EET} + {1695934800 7200 0 EET} {1714082400 10800 1 EEST} - {1724965200 7200 0 EET} + {1727384400 7200 0 EET} {1745532000 10800 1 EEST} - {1756414800 7200 0 EET} + {1758834000 7200 0 EET} {1776981600 10800 1 EEST} - {1787864400 7200 0 EET} + {1790283600 7200 0 EET} {1809036000 10800 1 EEST} - {1819314000 7200 0 EET} + {1822338000 7200 0 EET} {1840485600 10800 1 EEST} - {1851368400 7200 0 EET} + {1853787600 7200 0 EET} {1871935200 10800 1 EEST} - {1882818000 7200 0 EET} + {1885237200 7200 0 EET} {1903384800 10800 1 EEST} - {1914267600 7200 0 EET} + {1916686800 7200 0 EET} {1934834400 10800 1 EEST} - {1945717200 7200 0 EET} + {1948136400 7200 0 EET} {1966888800 10800 1 EEST} - {1977166800 7200 0 EET} + {1980190800 7200 0 EET} {1998338400 10800 1 EEST} - {2008616400 7200 0 EET} + {2011640400 7200 0 EET} {2029788000 10800 1 EEST} - {2040670800 7200 0 EET} + {2043090000 7200 0 EET} {2061237600 10800 1 EEST} - {2072120400 7200 0 EET} + {2074539600 7200 0 EET} {2092687200 10800 1 EEST} - {2103570000 7200 0 EET} + {2105989200 7200 0 EET} {2124136800 10800 1 EEST} - {2135019600 7200 0 EET} + {2137438800 7200 0 EET} {2156191200 10800 1 EEST} - {2166469200 7200 0 EET} + {2169493200 7200 0 EET} {2187640800 10800 1 EEST} - {2197918800 7200 0 EET} + {2200942800 7200 0 EET} {2219090400 10800 1 EEST} - {2229973200 7200 0 EET} + {2232392400 7200 0 EET} {2250540000 10800 1 EEST} - {2261422800 7200 0 EET} + {2263842000 7200 0 EET} {2281989600 10800 1 EEST} - {2292872400 7200 0 EET} + {2295291600 7200 0 EET} {2313439200 10800 1 EEST} - {2324322000 7200 0 EET} + {2326741200 7200 0 EET} {2345493600 10800 1 EEST} - {2355771600 7200 0 EET} + {2358795600 7200 0 EET} {2376943200 10800 1 EEST} - {2387826000 7200 0 EET} + {2390245200 7200 0 EET} {2408392800 10800 1 EEST} - {2419275600 7200 0 EET} + {2421694800 7200 0 EET} {2439842400 10800 1 EEST} - {2450725200 7200 0 EET} + {2453144400 7200 0 EET} {2471292000 10800 1 EEST} - {2482174800 7200 0 EET} + {2484594000 7200 0 EET} {2503346400 10800 1 EEST} - {2513624400 7200 0 EET} + {2516648400 7200 0 EET} {2534796000 10800 1 EEST} - {2545074000 7200 0 EET} + {2548098000 7200 0 EET} {2566245600 10800 1 EEST} - {2577128400 7200 0 EET} + {2579547600 7200 0 EET} {2597695200 10800 1 EEST} - {2608578000 7200 0 EET} + {2610997200 7200 0 EET} {2629144800 10800 1 EEST} - {2640027600 7200 0 EET} + {2642446800 7200 0 EET} {2660594400 10800 1 EEST} - {2671477200 7200 0 EET} + {2673896400 7200 0 EET} {2692648800 10800 1 EEST} - {2702926800 7200 0 EET} + {2705950800 7200 0 EET} {2724098400 10800 1 EEST} - {2734981200 7200 0 EET} + {2737400400 7200 0 EET} {2755548000 10800 1 EEST} - {2766430800 7200 0 EET} + {2768850000 7200 0 EET} {2786997600 10800 1 EEST} - {2797880400 7200 0 EET} + {2800299600 7200 0 EET} {2818447200 10800 1 EEST} - {2829330000 7200 0 EET} + {2831749200 7200 0 EET} {2850501600 10800 1 EEST} - {2860779600 7200 0 EET} + {2863803600 7200 0 EET} {2881951200 10800 1 EEST} - {2892229200 7200 0 EET} + {2895253200 7200 0 EET} {2913400800 10800 1 EEST} - {2924283600 7200 0 EET} + {2926702800 7200 0 EET} {2944850400 10800 1 EEST} - {2955733200 7200 0 EET} + {2958152400 7200 0 EET} {2976300000 10800 1 EEST} - {2987182800 7200 0 EET} + {2989602000 7200 0 EET} {3007749600 10800 1 EEST} - {3018632400 7200 0 EET} + {3021051600 7200 0 EET} {3039804000 10800 1 EEST} - {3050082000 7200 0 EET} + {3053106000 7200 0 EET} {3071253600 10800 1 EEST} - {3081531600 7200 0 EET} + {3084555600 7200 0 EET} {3102703200 10800 1 EEST} - {3113586000 7200 0 EET} + {3116005200 7200 0 EET} {3134152800 10800 1 EEST} - {3145035600 7200 0 EET} + {3147454800 7200 0 EET} {3165602400 10800 1 EEST} - {3176485200 7200 0 EET} + {3178904400 7200 0 EET} {3197052000 10800 1 EEST} - {3207934800 7200 0 EET} + {3210354000 7200 0 EET} {3229106400 10800 1 EEST} - {3239384400 7200 0 EET} + {3242408400 7200 0 EET} {3260556000 10800 1 EEST} - {3271438800 7200 0 EET} + {3273858000 7200 0 EET} {3292005600 10800 1 EEST} - {3302888400 7200 0 EET} + {3305307600 7200 0 EET} {3323455200 10800 1 EEST} - {3334338000 7200 0 EET} + {3336757200 7200 0 EET} {3354904800 10800 1 EEST} - {3365787600 7200 0 EET} + {3368206800 7200 0 EET} {3386959200 10800 1 EEST} - {3397237200 7200 0 EET} + {3400261200 7200 0 EET} {3418408800 10800 1 EEST} - {3428686800 7200 0 EET} + {3431710800 7200 0 EET} {3449858400 10800 1 EEST} - {3460741200 7200 0 EET} + {3463160400 7200 0 EET} {3481308000 10800 1 EEST} - {3492190800 7200 0 EET} + {3494610000 7200 0 EET} {3512757600 10800 1 EEST} - {3523640400 7200 0 EET} + {3526059600 7200 0 EET} {3544207200 10800 1 EEST} - {3555090000 7200 0 EET} + {3557509200 7200 0 EET} {3576261600 10800 1 EEST} - {3586539600 7200 0 EET} + {3589563600 7200 0 EET} {3607711200 10800 1 EEST} - {3618594000 7200 0 EET} + {3621013200 7200 0 EET} {3639160800 10800 1 EEST} - {3650043600 7200 0 EET} + {3652462800 7200 0 EET} {3670610400 10800 1 EEST} - {3681493200 7200 0 EET} + {3683912400 7200 0 EET} {3702060000 10800 1 EEST} - {3712942800 7200 0 EET} + {3715362000 7200 0 EET} {3734114400 10800 1 EEST} - {3744392400 7200 0 EET} + {3747416400 7200 0 EET} {3765564000 10800 1 EEST} - {3775842000 7200 0 EET} + {3778866000 7200 0 EET} {3797013600 10800 1 EEST} - {3807896400 7200 0 EET} + {3810315600 7200 0 EET} {3828463200 10800 1 EEST} - {3839346000 7200 0 EET} + {3841765200 7200 0 EET} {3859912800 10800 1 EEST} - {3870795600 7200 0 EET} + {3873214800 7200 0 EET} {3891362400 10800 1 EEST} - {3902245200 7200 0 EET} + {3904664400 7200 0 EET} {3923416800 10800 1 EEST} - {3933694800 7200 0 EET} + {3936718800 7200 0 EET} {3954866400 10800 1 EEST} - {3965144400 7200 0 EET} + {3968168400 7200 0 EET} {3986316000 10800 1 EEST} - {3997198800 7200 0 EET} + {3999618000 7200 0 EET} {4017765600 10800 1 EEST} - {4028648400 7200 0 EET} + {4031067600 7200 0 EET} {4049215200 10800 1 EEST} - {4060098000 7200 0 EET} + {4062517200 7200 0 EET} {4080664800 10800 1 EEST} - {4091547600 7200 0 EET} + {4093966800 7200 0 EET} } diff --git a/library/tzdata/Asia/Amman b/library/tzdata/Asia/Amman index 0c6ffcb..bf30508 100644 --- a/library/tzdata/Asia/Amman +++ b/library/tzdata/Asia/Amman @@ -55,7 +55,7 @@ set TZData(:Asia/Amman) { {1066946400 7200 0 EET} {1080252000 10800 1 EEST} {1097791200 7200 0 EET} - {1111701600 10800 1 EEST} + {1112306400 10800 1 EEST} {1128031200 7200 0 EET} {1143756000 10800 1 EEST} {1161900000 7200 0 EET} @@ -67,7 +67,7 @@ set TZData(:Asia/Amman) { {1256853600 7200 0 EET} {1269554400 10800 1 EEST} {1288303200 7200 0 EET} - {1301004000 10800 1 EEST} + {1301608800 10800 1 EEST} {1319752800 7200 0 EET} {1333058400 10800 1 EEST} {1351202400 7200 0 EET} @@ -77,7 +77,7 @@ set TZData(:Asia/Amman) { {1414706400 7200 0 EET} {1427407200 10800 1 EEST} {1446156000 7200 0 EET} - {1458856800 10800 1 EEST} + {1459461600 10800 1 EEST} {1477605600 7200 0 EET} {1490911200 10800 1 EEST} {1509055200 7200 0 EET} @@ -89,7 +89,7 @@ set TZData(:Asia/Amman) { {1604008800 7200 0 EET} {1616709600 10800 1 EEST} {1635458400 7200 0 EET} - {1648159200 10800 1 EEST} + {1648764000 10800 1 EEST} {1666908000 7200 0 EET} {1680213600 10800 1 EEST} {1698357600 7200 0 EET} @@ -111,7 +111,7 @@ set TZData(:Asia/Amman) { {1951164000 7200 0 EET} {1963864800 10800 1 EEST} {1982613600 7200 0 EET} - {1995314400 10800 1 EEST} + {1995919200 10800 1 EEST} {2014063200 7200 0 EET} {2027368800 10800 1 EEST} {2045512800 7200 0 EET} @@ -123,7 +123,7 @@ set TZData(:Asia/Amman) { {2140466400 7200 0 EET} {2153167200 10800 1 EEST} {2171916000 7200 0 EET} - {2184616800 10800 1 EEST} + {2185221600 10800 1 EEST} {2203365600 7200 0 EET} {2216671200 10800 1 EEST} {2234815200 7200 0 EET} @@ -133,7 +133,7 @@ set TZData(:Asia/Amman) { {2298319200 7200 0 EET} {2311020000 10800 1 EEST} {2329768800 7200 0 EET} - {2342469600 10800 1 EEST} + {2343074400 10800 1 EEST} {2361218400 7200 0 EET} {2374524000 10800 1 EEST} {2392668000 7200 0 EET} @@ -145,7 +145,7 @@ set TZData(:Asia/Amman) { {2487621600 7200 0 EET} {2500322400 10800 1 EEST} {2519071200 7200 0 EET} - {2531772000 10800 1 EEST} + {2532376800 10800 1 EEST} {2550520800 7200 0 EET} {2563826400 10800 1 EEST} {2581970400 7200 0 EET} @@ -167,7 +167,7 @@ set TZData(:Asia/Amman) { {2834776800 7200 0 EET} {2847477600 10800 1 EEST} {2866226400 7200 0 EET} - {2878927200 10800 1 EEST} + {2879532000 10800 1 EEST} {2897676000 7200 0 EET} {2910981600 10800 1 EEST} {2929125600 7200 0 EET} @@ -179,7 +179,7 @@ set TZData(:Asia/Amman) { {3024079200 7200 0 EET} {3036780000 10800 1 EEST} {3055528800 7200 0 EET} - {3068229600 10800 1 EEST} + {3068834400 10800 1 EEST} {3086978400 7200 0 EET} {3100284000 10800 1 EEST} {3118428000 7200 0 EET} @@ -189,7 +189,7 @@ set TZData(:Asia/Amman) { {3181932000 7200 0 EET} {3194632800 10800 1 EEST} {3213381600 7200 0 EET} - {3226082400 10800 1 EEST} + {3226687200 10800 1 EEST} {3244831200 7200 0 EET} {3258136800 10800 1 EEST} {3276280800 7200 0 EET} @@ -201,7 +201,7 @@ set TZData(:Asia/Amman) { {3371234400 7200 0 EET} {3383935200 10800 1 EEST} {3402684000 7200 0 EET} - {3415384800 10800 1 EEST} + {3415989600 10800 1 EEST} {3434133600 7200 0 EET} {3447439200 10800 1 EEST} {3465583200 7200 0 EET} @@ -223,7 +223,7 @@ set TZData(:Asia/Amman) { {3718389600 7200 0 EET} {3731090400 10800 1 EEST} {3749839200 7200 0 EET} - {3762540000 10800 1 EEST} + {3763144800 10800 1 EEST} {3781288800 7200 0 EET} {3794594400 10800 1 EEST} {3812738400 7200 0 EET} @@ -235,7 +235,7 @@ set TZData(:Asia/Amman) { {3907692000 7200 0 EET} {3920392800 10800 1 EEST} {3939141600 7200 0 EET} - {3951842400 10800 1 EEST} + {3952447200 10800 1 EEST} {3970591200 7200 0 EET} {3983896800 10800 1 EEST} {4002040800 7200 0 EET} -- cgit v0.12 From 6a8a48fbf869b897b9d2ecc86c8e5c760325f7a9 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 1 Jun 2009 21:32:53 +0000 Subject: * tests/expr.test: Added many tests demonstrating the broken cases of [Bug 2798543]. --- ChangeLog | 5 + tests/expr.test | 327 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 331 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 06e7431..5ada112 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-06-01 Don Porter + + * tests/expr.test: Added many tests demonstrating the broken + cases of [Bug 2798543]. + 2009-05-30 Kevin B. Kenny * library/tzdata/Africa/Cairo: diff --git a/tests/expr.test b/tests/expr.test index fd13bf9..f1054ef 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: expr.test,v 1.72.2.2 2009/01/06 15:23:24 dkf Exp $ +# RCS: @(#) $Id: expr.test,v 1.72.2.3 2009/06/01 21:32:53 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 @@ -1106,6 +1106,331 @@ test expr-23.53 {INST_EXPON: intermediate powers of 64-bit integers} { } set trouble } {test intermediate powers of 64-bit ints} +test expr-23.54.0 {INST_EXPON: Bug 2798543} { + expr {3**9 == 3**65545} +} 0 +test expr-23.54.1 {INST_EXPON: Bug 2798543} { + expr {3**10 == 3**65546} +} 0 +test expr-23.54.2 {INST_EXPON: Bug 2798543} { + expr {3**11 == 3**65547} +} 0 +test expr-23.54.3 {INST_EXPON: Bug 2798543} { + expr {3**12 == 3**65548} +} 0 +test expr-23.54.4 {INST_EXPON: Bug 2798543} { + expr {3**13 == 3**65549} +} 0 +test expr-23.54.5 {INST_EXPON: Bug 2798543} { + expr {3**14 == 3**65550} +} 0 +test expr-23.54.6 {INST_EXPON: Bug 2798543} { + expr {3**15 == 3**65551} +} 0 +test expr-23.54.7 {INST_EXPON: Bug 2798543} { + expr {3**16 == 3**65552} +} 0 +test expr-23.54.8 {INST_EXPON: Bug 2798543} { + expr {3**17 == 3**65553} +} 0 +test expr-23.54.9 {INST_EXPON: Bug 2798543} { + expr {3**18 == 3**65554} +} 0 +test expr-23.54.10 {INST_EXPON: Bug 2798543} { + expr {3**19 == 3**65555} +} 0 +test expr-23.54.11 {INST_EXPON: Bug 2798543} { + expr {3**9 == 3**131081} +} 0 +test expr-23.54.12 {INST_EXPON: Bug 2798543} -body { + expr {3**9 == 3**268435465} +} -returnCodes error -result {exponent too large} +test expr-23.54.13 {INST_EXPON: Bug 2798543} { + expr {(-3)**9 == (-3)**65545} +} 0 +test expr-23.55.0 {INST_EXPON: Bug 2798543} { + expr {4**9 == 4**65545} +} 0 +test expr-23.55.1 {INST_EXPON: Bug 2798543} { + expr {4**15 == 4**65551} +} 0 +test expr-23.55.2 {INST_EXPON: Bug 2798543} { + expr {4**9 == 4**131081} +} 0 +test expr-23.55.3 {INST_EXPON: Bug 2798543} -body { + expr {4**9 == 4**268435465} +} -returnCodes error -result {exponent too large} +test expr-23.55.4 {INST_EXPON: Bug 2798543} { + expr {(-4)**9 == (-4)**65545} +} 0 +test expr-23.56.0 {INST_EXPON: Bug 2798543} { + expr {5**9 == 5**65545} +} 0 +test expr-23.56.1 {INST_EXPON: Bug 2798543} { + expr {5**13 == 5**65549} +} 0 +test expr-23.56.2 {INST_EXPON: Bug 2798543} { + expr {5**9 == 5**131081} +} 0 +test expr-23.56.3 {INST_EXPON: Bug 2798543} -body { + expr {5**9 == 5**268435465} +} -returnCodes error -result {exponent too large} +test expr-23.56.4 {INST_EXPON: Bug 2798543} { + expr {(-5)**9 == (-5)**65545} +} 0 +test expr-23.57.0 {INST_EXPON: Bug 2798543} { + expr {6**9 == 6**65545} +} 0 +test expr-23.57.1 {INST_EXPON: Bug 2798543} { + expr {6**11 == 6**65547} +} 0 +test expr-23.57.2 {INST_EXPON: Bug 2798543} { + expr {6**9 == 6**131081} +} 0 +test expr-23.57.3 {INST_EXPON: Bug 2798543} -body { + expr {6**9 == 6**268435465} +} -returnCodes error -result {exponent too large} +test expr-23.57.4 {INST_EXPON: Bug 2798543} { + expr {(-6)**9 == (-6)**65545} +} 0 +test expr-23.58.0 {INST_EXPON: Bug 2798543} { + expr {7**9 == 7**65545} +} 0 +test expr-23.58.1 {INST_EXPON: Bug 2798543} { + expr {7**11 == 7**65547} +} 0 +test expr-23.58.2 {INST_EXPON: Bug 2798543} { + expr {7**9 == 7**131081} +} 0 +test expr-23.58.3 {INST_EXPON: Bug 2798543} -body { + expr {7**9 == 7**268435465} +} -returnCodes error -result {exponent too large} +test expr-23.58.4 {INST_EXPON: Bug 2798543} { + expr {(-7)**9 == (-7)**65545} +} 0 +test expr-23.59.0 {INST_EXPON: Bug 2798543} { + expr {8**9 == 8**65545} +} 0 +test expr-23.59.1 {INST_EXPON: Bug 2798543} { + expr {8**10 == 8**65546} +} 0 +test expr-23.59.2 {INST_EXPON: Bug 2798543} { + expr {8**9 == 8**131081} +} 0 +test expr-23.59.3 {INST_EXPON: Bug 2798543} -body { + expr {8**9 == 8**268435465} +} -returnCodes error -result {exponent too large} +test expr-23.59.4 {INST_EXPON: Bug 2798543} { + expr {(-8)**9 == (-8)**65545} +} 0 +test expr-23.60.0 {INST_EXPON: Bug 2798543} { + expr {9**9 == 9**65545} +} 0 +test expr-23.60.1 {INST_EXPON: Bug 2798543} { + expr {9**9 == 9**131081} +} 0 +test expr-23.60.2 {INST_EXPON: Bug 2798543} -body { + expr {9**9 == 9**268435465} +} -returnCodes error -result {exponent too large} +test expr-23.60.3 {INST_EXPON: Bug 2798543} { + expr {(-9)**9 == (-9)**65545} +} 0 +test expr-23.61.0 {INST_EXPON: Bug 2798543} { + expr {10**9 == 10**65545} +} 0 +test expr-23.61.1 {INST_EXPON: Bug 2798543} { + expr {10**9 == 10**131081} +} 0 +test expr-23.61.2 {INST_EXPON: Bug 2798543} -body { + expr {10**9 == 10**268435465} +} -returnCodes error -result {exponent too large} +test expr-23.61.3 {INST_EXPON: Bug 2798543} { + expr {(-10)**9 == (-10)**65545} +} 0 +test expr-23.62.0 {INST_EXPON: Bug 2798543} { + expr {11**9 == 11**65545} +} 0 +test expr-23.62.1 {INST_EXPON: Bug 2798543} { + expr {11**9 == 11**131081} +} 0 +test expr-23.62.2 {INST_EXPON: Bug 2798543} -body { + expr {11**9 == 11**268435465} +} -returnCodes error -result {exponent too large} +test expr-23.62.3 {INST_EXPON: Bug 2798543} { + expr {(-11)**9 == (-11)**65545} +} 0 +test expr-23.63.0 {INST_EXPON: Bug 2798543} { + expr {3**20 == 3**65556} +} 0 +test expr-23.63.1 {INST_EXPON: Bug 2798543} { + expr {3**39 == 3**65575} +} 0 +test expr-23.63.2 {INST_EXPON: Bug 2798543} { + expr {3**20 == 3**131092} +} 0 +test expr-23.63.3 {INST_EXPON: Bug 2798543} -body { + expr {3**20 == 3**268435476} +} -returnCodes error -result {exponent too large} +test expr-23.63.4 {INST_EXPON: Bug 2798543} { + expr {(-3)**20 == (-3)**65556} +} 0 +test expr-23.64.0 {INST_EXPON: Bug 2798543} { + expr {4**17 == 4**65553} +} 0 +test expr-23.64.1 {INST_EXPON: Bug 2798543} { + expr {4**31 == 4**65567} +} 0 +test expr-23.64.2 {INST_EXPON: Bug 2798543} { + expr {4**17 == 4**131089} +} 0 +test expr-23.64.3 {INST_EXPON: Bug 2798543} -body { + expr {4**17 == 4**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.64.4 {INST_EXPON: Bug 2798543} { + expr {(-4)**17 == (-4)**65553} +} 0 +test expr-23.65.0 {INST_EXPON: Bug 2798543} { + expr {5**17 == 5**65553} +} 0 +test expr-23.65.1 {INST_EXPON: Bug 2798543} { + expr {5**27 == 5**65563} +} 0 +test expr-23.65.2 {INST_EXPON: Bug 2798543} { + expr {5**17 == 5**131089} +} 0 +test expr-23.65.3 {INST_EXPON: Bug 2798543} -body { + expr {5**17 == 5**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.65.4 {INST_EXPON: Bug 2798543} { + expr {(-5)**17 == (-5)**65553} +} 0 +test expr-23.66.0 {INST_EXPON: Bug 2798543} { + expr {6**17 == 6**65553} +} 0 +test expr-23.66.1 {INST_EXPON: Bug 2798543} { + expr {6**24 == 6**65560} +} 0 +test expr-23.66.2 {INST_EXPON: Bug 2798543} { + expr {6**17 == 6**131089} +} 0 +test expr-23.66.3 {INST_EXPON: Bug 2798543} -body { + expr {6**17 == 6**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.66.4 {INST_EXPON: Bug 2798543} { + expr {(-6)**17 == (-6)**65553} +} 0 +test expr-23.67.0 {INST_EXPON: Bug 2798543} { + expr {7**17 == 7**65553} +} 0 +test expr-23.67.1 {INST_EXPON: Bug 2798543} { + expr {7**22 == 7**65558} +} 0 +test expr-23.67.2 {INST_EXPON: Bug 2798543} { + expr {7**17 == 7**131089} +} 0 +test expr-23.67.3 {INST_EXPON: Bug 2798543} -body { + expr {7**17 == 7**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.67.4 {INST_EXPON: Bug 2798543} { + expr {(-7)**17 == (-7)**65553} +} 0 +test expr-23.68.0 {INST_EXPON: Bug 2798543} { + expr {8**17 == 8**65553} +} 0 +test expr-23.68.1 {INST_EXPON: Bug 2798543} { + expr {8**20 == 8**65556} +} 0 +test expr-23.68.2 {INST_EXPON: Bug 2798543} { + expr {8**17 == 8**131089} +} 0 +test expr-23.68.3 {INST_EXPON: Bug 2798543} -body { + expr {8**17 == 8**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.68.4 {INST_EXPON: Bug 2798543} { + expr {(-8)**17 == (-8)**65553} +} 0 +test expr-23.69.0 {INST_EXPON: Bug 2798543} { + expr {9**17 == 9**65553} +} 0 +test expr-23.69.1 {INST_EXPON: Bug 2798543} { + expr {9**19 == 9**65555} +} 0 +test expr-23.69.2 {INST_EXPON: Bug 2798543} { + expr {9**17 == 9**131089} +} 0 +test expr-23.69.3 {INST_EXPON: Bug 2798543} -body { + expr {9**17 == 9**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.69.4 {INST_EXPON: Bug 2798543} { + expr {(-9)**17 == (-9)**65553} +} 0 +test expr-23.70.0 {INST_EXPON: Bug 2798543} { + expr {10**17 == 10**65553} +} 0 +test expr-23.70.1 {INST_EXPON: Bug 2798543} { + expr {10**18 == 10**65554} +} 0 +test expr-23.70.2 {INST_EXPON: Bug 2798543} { + expr {10**17 == 10**131089} +} 0 +test expr-23.70.3 {INST_EXPON: Bug 2798543} -body { + expr {10**17 == 10**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.70.4 {INST_EXPON: Bug 2798543} { + expr {(-10)**17 == (-10)**65553} +} 0 +test expr-23.71.0 {INST_EXPON: Bug 2798543} { + expr {11**17 == 11**65553} +} 0 +test expr-23.71.1 {INST_EXPON: Bug 2798543} { + expr {11**18 == 11**65554} +} 0 +test expr-23.71.2 {INST_EXPON: Bug 2798543} { + expr {11**17 == 11**131089} +} 0 +test expr-23.71.3 {INST_EXPON: Bug 2798543} -body { + expr {11**17 == 11**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.71.4 {INST_EXPON: Bug 2798543} { + expr {(-11)**17 == (-11)**65553} +} 0 +test expr-23.72.0 {INST_EXPON: Bug 2798543} { + expr {12**17 == 12**65553} +} 0 +test expr-23.72.1 {INST_EXPON: Bug 2798543} { + expr {12**17 == 12**131089} +} 0 +test expr-23.72.2 {INST_EXPON: Bug 2798543} -body { + expr {12**17 == 12**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.72.3 {INST_EXPON: Bug 2798543} { + expr {(-12)**17 == (-12)**65553} +} 0 +test expr-23.73.0 {INST_EXPON: Bug 2798543} { + expr {13**17 == 13**65553} +} 0 +test expr-23.73.1 {INST_EXPON: Bug 2798543} { + expr {13**17 == 13**131089} +} 0 +test expr-23.73.2 {INST_EXPON: Bug 2798543} -body { + expr {13**17 == 13**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.73.3 {INST_EXPON: Bug 2798543} { + expr {(-13)**17 == (-13)**65553} +} 0 +test expr-23.74.0 {INST_EXPON: Bug 2798543} { + expr {14**17 == 14**65553} +} 0 +test expr-23.74.1 {INST_EXPON: Bug 2798543} { + expr {14**17 == 14**131089} +} 0 +test expr-23.74.2 {INST_EXPON: Bug 2798543} -body { + expr {14**17 == 14**268435473} +} -returnCodes error -result {exponent too large} +test expr-23.74.3 {INST_EXPON: Bug 2798543} { + expr {(-14)**17 == (-14)**65553} +} 0 + # Some compilers get this wrong; ensure that we work around it correctly test expr-24.1 {expr edge cases; shifting} {expr int(5)>>32} 0 -- cgit v0.12 From 4f4ab1cb58f917d60d2691c635d1f5230da1ea3c Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 2 Jun 2009 17:55:31 +0000 Subject: * generic/tclExecute.c: Corrected implementations and selection logic of the INST_EXPON instruction to fix [Bug 2798543]. --- ChangeLog | 5 +++ generic/tclExecute.c | 105 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 69 insertions(+), 41 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5ada112..fb65ce6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-06-02 Don Porter + + * generic/tclExecute.c: Corrected implementations and selection + logic of the INST_EXPON instruction to fix [Bug 2798543]. + 2009-06-01 Don Porter * tests/expr.test: Added many tests demonstrating the broken diff --git a/generic/tclExecute.c b/generic/tclExecute.c index c1b13b5..f6d3930 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.8 2009/05/06 20:16:55 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.9 2009/06/02 17:55:31 dgp Exp $ */ #include "tclInt.h" @@ -466,7 +466,8 @@ static Tcl_ObjType dictIteratorType = { * signed integer */ -static const long MaxBase32[7] = {46340, 1290, 215, 73, 35, 21, 14}; +static const long MaxBase32[] = {46340, 1290, 215, 73, 35, 21, 14}; +static const size_t MaxBase32Size = sizeof(MaxBase32)/sizeof(long); /* * Table giving 3, 4, ..., 11, raised to the powers 9, 10, ..., as far as they @@ -477,6 +478,7 @@ static const long MaxBase32[7] = {46340, 1290, 215, 73, 35, 21, 14}; static const unsigned short Exp32Index[] = { 0, 11, 18, 23, 26, 29, 31, 32, 33 }; +static const size_t Exp32IndexSize = sizeof(Exp32Index)/sizeof(unsigned short); static const long Exp32Value[] = { 19683, 59049, 177147, 531441, 1594323, 4782969, 14348907, 43046721, 129140163, 387420489, 1162261467, 262144, 1048576, 4194304, @@ -485,6 +487,7 @@ static const long Exp32Value[] = { 40353607, 282475249, 1977326743, 134217728, 1073741824, 387420489, 1000000000 }; +static const size_t Exp32ValueSize = sizeof(Exp32Value)/sizeof(long); #endif /* LONG_MAX == 0x7fffffff -- 32 bit machine */ @@ -495,7 +498,8 @@ static const long Exp32Value[] = { * Tcl_WideInt. */ -static Tcl_WideInt MaxBaseWide[15]; +static Tcl_WideInt MaxBase64[15]; +static const size_t MaxBase64Size = 15; /* *Table giving 3, 4, ..., 13 raised to powers greater than 16 when the @@ -505,6 +509,7 @@ static Tcl_WideInt MaxBaseWide[15]; static const unsigned short Exp64Index[] = { 0, 23, 38, 49, 57, 63, 67, 70, 72, 74, 75, 76 }; +static const size_t Exp64IndexSize = sizeof(Exp64Index)/sizeof(unsigned short); static const Tcl_WideInt Exp64Value[] = { (Tcl_WideInt)243*243*243*3*3, (Tcl_WideInt)243*243*243*3*3*3, @@ -583,6 +588,7 @@ static const Tcl_WideInt Exp64Value[] = { (Tcl_WideInt)248832*248832*248832*12*12, (Tcl_WideInt)371293*371293*371293*13*13 }; +static const size_t Exp64ValueSize = sizeof(Exp64Value)/sizeof(Tcl_WideInt); #endif @@ -680,7 +686,7 @@ InitByteCodeExecution( * without overflowing a Tcl_WideInt */ - for (i = 2; i <= 16; ++i) { + for (i = 2; i - 2 < MaxBase64Size; ++i) { /* * Compute an initial guess in floating point. */ @@ -699,10 +705,14 @@ InitByteCodeExecution( if (x == 1) { break; } +/* +fprintf(stdout, "Adjust %d: %lld to %lld\n", i, w, w-1); +fflush(stdout); +*/ --w; } - MaxBaseWide[i-2] = w; + MaxBase64[i - 2] = w; } #endif } @@ -5598,8 +5608,10 @@ TclExecuteByteCode( /* TODO: Attempts to re-use unshared operands on stack. */ if (*pc == INST_EXPON) { long l1 = 0, l2 = 0; - Tcl_WideInt w1; int oddExponent = 0, negativeExponent = 0; +#if (LONG_MAX > 0x7fffffff) || !defined(TCL_WIDE_INT_IS_LONG) + Tcl_WideInt w1; +#endif if (type2 == TCL_NUMBER_LONG) { l2 = *((const long *) ptr2); @@ -5645,9 +5657,11 @@ TclExecuteByteCode( } } + if (type1 == TCL_NUMBER_LONG) { + l1 = *((const long *)ptr1); + } if (negativeExponent) { if (type1 == TCL_NUMBER_LONG) { - l1 = *((const long *)ptr1); switch (l1) { case 0: /* @@ -5684,7 +5698,6 @@ TclExecuteByteCode( } if (type1 == TCL_NUMBER_LONG) { - l1 = *((const long *)ptr1); switch (l1) { case 0: /* @@ -5709,14 +5722,23 @@ TclExecuteByteCode( NEXT_INST_F(1, 2, 1); } } - if (type2 == TCL_NUMBER_BIG) { + /* + * We refuse to accept exponent arguments that exceed + * one mp_digit which means the max exponent value is + * 2**28-1 = 0x0fffffff = 268435455, which fits into + * a signed 32 bit int which is within the range of the + * long int type. This means any numeric Tcl_Obj value + * not using TCL_NUMBER_LONG type must hold a value larger + * than we accept. + */ + if (type2 != TCL_NUMBER_LONG) { Tcl_SetObjResult(interp, Tcl_NewStringObj("exponent too large", -1)); result = TCL_ERROR; goto checkForCatch; } - if (type1 == TCL_NUMBER_LONG && type2 == TCL_NUMBER_LONG) { + if (type1 == TCL_NUMBER_LONG) { if (l1 == 2) { /* * Reduce small powers of 2 to shifts. @@ -5737,6 +5759,7 @@ TclExecuteByteCode( NEXT_INST_F(1, 2, 1); } #endif + goto overflow; } if (l1 == -2) { int signum = oddExponent ? -1 : 1; @@ -5760,10 +5783,12 @@ TclExecuteByteCode( NEXT_INST_F(1, 2, 1); } #endif + goto overflow; } #if (LONG_MAX == 0x7fffffff) - if (l2 <= 8 && - l1 <= MaxBase32[l2-2] && l1 >= -MaxBase32[l2-2]) { + if (l2 - 2 < MaxBase32Size + && l1 <= MaxBase32[l2 - 2] + && l1 >= -MaxBase32[l2 - 2]) { /* * Small powers of 32-bit integers. */ @@ -5806,12 +5831,12 @@ TclExecuteByteCode( TRACE(("%s\n", O2S(valuePtr))); NEXT_INST_F(1, 1, 0); } - if (l1 >= 3 && - ((unsigned long) l1 < (sizeof(Exp32Index) - / sizeof(unsigned short)) - 1)) { - unsigned short base = Exp32Index[l1-3] - + (unsigned short) l2 - 9; - if (base < Exp32Index[l1-2]) { + if (l1 - 3 >= 0 && l1 - 2 < Exp32IndexSize + && l2 - 2 < Exp32ValueSize + MaxBase32Size) { + + unsigned short base = Exp32Index[l1 - 3] + + (unsigned short) (l2 - 2 - MaxBase32Size); + if (base < Exp32Index[l1 - 2]) { /* * 32-bit number raised to intermediate power, done by * table lookup. @@ -5828,12 +5853,11 @@ TclExecuteByteCode( NEXT_INST_F(1, 1, 0); } } - if (-l1 >= 3 - && (unsigned long)(-l1) < (sizeof(Exp32Index) - / sizeof(unsigned short)) - 1) { - unsigned short base - = Exp32Index[-l1-3] + (unsigned short) l2 - 9; - if (base < Exp32Index[-l1-2]) { + if (-l1 - 3 >= 0 && -l1 - 2 < Exp32IndexSize + && l2 - 2 < Exp32ValueSize + MaxBase32Size) { + unsigned short base = Exp32Index[-l1 - 3] + + (unsigned short) (l2 - 2 - MaxBase32Size); + if (base < Exp32Index[-l1 - 2]) { long lResult = (oddExponent) ? -Exp32Value[base] : Exp32Value[base]; @@ -5855,6 +5879,7 @@ TclExecuteByteCode( } #endif } +#if (LONG_MAX > 0x7fffffff) || !defined(TCL_WIDE_INT_IS_LONG) if (type1 == TCL_NUMBER_LONG) { w1 = l1; #ifndef NO_WIDE_TYPE @@ -5862,11 +5887,11 @@ TclExecuteByteCode( w1 = *((const Tcl_WideInt*) ptr1); #endif } else { - w1 = 0; + goto overflow; } -#if (LONG_MAX > 0x7fffffff) || !defined(TCL_WIDE_INT_IS_LONG) - if (w1 != 0 && type2 == TCL_NUMBER_LONG && l2 <= 16 - && w1 <= MaxBaseWide[l2-2] && w1 >= -MaxBaseWide[l2-2]) { + if (l2 - 2 <= MaxBase64Size + && w1 <= MaxBase64[l2 - 2] + && w1 >= -MaxBase64[l2 - 2]) { /* * Small powers of integers whose result is wide. */ @@ -5956,14 +5981,12 @@ TclExecuteByteCode( * Handle cases of powers > 16 that still fit in a 64-bit word by * doing table lookup. */ + if (w1 - 3 >= 0 && w1 - 2 < Exp64IndexSize + && l2 - 2 < Exp64ValueSize + MaxBase64Size) { + unsigned short base = Exp64Index[w1 - 3] + + (unsigned short) (l2 - 2 - MaxBase64Size); - if (w1 >= 3 && - (Tcl_WideUInt) w1 < (sizeof(Exp64Index) - / sizeof(unsigned short)) - 1) { - unsigned short base = - Exp64Index[w1-3] + (unsigned short) l2 - 17; - - if (base < Exp64Index[w1-2]) { + if (base < Exp64Index[w1 - 2]) { /* * 64-bit number raised to intermediate power, done by * table lookup. @@ -5980,13 +6003,13 @@ TclExecuteByteCode( NEXT_INST_F(1, 1, 0); } } - if (-w1 >= 3 && - (Tcl_WideUInt) (-w1) < (sizeof(Exp64Index) - / sizeof(unsigned short)) - 1) { - unsigned short base = - Exp64Index[-w1-3] + (unsigned short) l2 - 17; - if (base < Exp64Index[-w1-2]) { + if (-w1 - 3 >= 0 && -w1 - 2 < Exp64IndexSize + && l2 - 2 < Exp64ValueSize + MaxBase64Size) { + unsigned short base = Exp64Index[-w1 - 3] + + (unsigned short) (l2 - 2 - MaxBase64Size); + + if (base < Exp64Index[-w1 - 2]) { Tcl_WideInt wResult = (oddExponent) ? -Exp64Value[base] : Exp64Value[base]; /* -- cgit v0.12 From 376af99044a290c5f0b1b38e86514761048a0b56 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 2 Jun 2009 19:10:20 +0000 Subject: * generic/tclExecute.c: Replace dynamically-initialized table with a table of static constants in the lookup table for exponent operator computations that fit in a 64 bit integer result. --- ChangeLog | 4 ++++ generic/tclExecute.c | 54 ++++++++++------------------------------------------ 2 files changed, 14 insertions(+), 44 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb65ce6..07ad316 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2009-06-02 Don Porter + * generic/tclExecute.c: Replace dynamically-initialized table with + a table of static constants in the lookup table for exponent operator + computations that fit in a 64 bit integer result. + * generic/tclExecute.c: Corrected implementations and selection logic of the INST_EXPON instruction to fix [Bug 2798543]. diff --git a/generic/tclExecute.c b/generic/tclExecute.c index f6d3930..2c9685f 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.9 2009/06/02 17:55:31 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.10 2009/06/02 19:10:21 dgp Exp $ */ #include "tclInt.h" @@ -498,8 +498,14 @@ static const size_t Exp32ValueSize = sizeof(Exp32Value)/sizeof(long); * Tcl_WideInt. */ -static Tcl_WideInt MaxBase64[15]; -static const size_t MaxBase64Size = 15; +static const Tcl_WideInt MaxBase64[] = { + (Tcl_WideInt)46340*65536+62259, /* 3037000499 == isqrt(2**63-1) */ + (Tcl_WideInt)2097151, (Tcl_WideInt)55108, (Tcl_WideInt)6208, + (Tcl_WideInt)1448, (Tcl_WideInt)511, (Tcl_WideInt)234, (Tcl_WideInt)127, + (Tcl_WideInt)78, (Tcl_WideInt)52, (Tcl_WideInt)38, (Tcl_WideInt)28, + (Tcl_WideInt)22, (Tcl_WideInt)18, (Tcl_WideInt)15 +}; +static const size_t MaxBase64Size = sizeof(MaxBase64)/sizeof(Tcl_WideInt); /* *Table giving 3, 4, ..., 13 raised to powers greater than 16 when the @@ -666,10 +672,6 @@ InitByteCodeExecution( * "tcl_traceExec" is linked to control * instruction tracing. */ { -#if (LONG_MAX > 0x7fffffff) || !defined(TCL_WIDE_INT_IS_LONG) - int i, j; - Tcl_WideInt w, x; -#endif #ifdef TCL_COMPILE_DEBUG if (Tcl_LinkVar(interp, "tcl_traceExec", (char *) &tclTraceExec, TCL_LINK_INT) != TCL_OK) { @@ -679,42 +681,6 @@ InitByteCodeExecution( #ifdef TCL_COMPILE_STATS Tcl_CreateObjCommand(interp, "evalstats", EvalStatsCmd, NULL, NULL); #endif /* TCL_COMPILE_STATS */ -#if (LONG_MAX > 0x7fffffff) || !defined(TCL_WIDE_INT_IS_LONG) - - /* - * Fill in a table of what base can be raised to powers 2, 3, ... 16 - * without overflowing a Tcl_WideInt - */ - - for (i = 2; i - 2 < MaxBase64Size; ++i) { - /* - * Compute an initial guess in floating point. - */ - - w = (Tcl_WideInt) pow((double) LLONG_MAX, 1.0 / i) + 1; - - /* - * Correct the guess if it's too high. - */ - - for (;;) { - x = LLONG_MAX; - for (j = 0; j < i; ++j) { - x /= w; - } - if (x == 1) { - break; - } -/* -fprintf(stdout, "Adjust %d: %lld to %lld\n", i, w, w-1); -fflush(stdout); -*/ - --w; - } - - MaxBase64[i - 2] = w; - } -#endif } /* @@ -5889,7 +5855,7 @@ TclExecuteByteCode( } else { goto overflow; } - if (l2 - 2 <= MaxBase64Size + if (l2 - 2 < MaxBase64Size && w1 <= MaxBase64[l2 - 2] && w1 >= -MaxBase64[l2 - 2]) { /* -- cgit v0.12 From 78c6dc0737b02640bdefa7f048a3ae3ad50fc725 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Mon, 8 Jun 2009 16:37:06 +0000 Subject: New DST rule for Bangladesh (Olson's tzdata2009i) --- ChangeLog | 5 +++++ library/tzdata/Asia/Dhaka | 2 ++ 2 files changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 07ad316..7ab531a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-06-08 Kevin B. Kenny + + * library/tzdata/Asia/Dhaka: New DST rule for Bangladesh. + (Olson's tzdata2009i.) + 2009-06-02 Don Porter * generic/tclExecute.c: Replace dynamically-initialized table with diff --git a/library/tzdata/Asia/Dhaka b/library/tzdata/Asia/Dhaka index 8eac24f..98967ed 100644 --- a/library/tzdata/Asia/Dhaka +++ b/library/tzdata/Asia/Dhaka @@ -8,4 +8,6 @@ set TZData(:Asia/Dhaka) { {-862637400 23400 0 BURT} {-576138600 21600 0 DACT} {38772000 21600 0 BDT} + {1230746400 21600 0 BDT} + {1245434400 25200 1 BDST} } -- cgit v0.12 From 84b4642f23e9ce612ea65bb135c9ffadfe21352d Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 9 Jun 2009 13:52:58 +0000 Subject: * generic/tclGetDate.y: Fixed a thread safety bug in the generated * library/clock.tcl: Bison parser (needed a %pure-parser * tests/clock.test: declaration to avoid static variables). Discovered that the %pure-parser declaration allowed for returning the Bison error message to the Tcl caller in the event of a syntax error, so did so. * generic/tclDate.c: bison 2.3 --- ChangeLog | 11 ++ generic/tclDate.c | 536 ++++++++++++++++++++++++++++++--------------------- generic/tclGetDate.y | 218 ++++++++++++++------- library/clock.tcl | 4 +- tests/clock.test | 43 ++++- 5 files changed, 521 insertions(+), 291 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ab531a..fb2f2b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-06-09 Kevin B. Kenny + + * generic/tclGetDate.y: Fixed a thread safety bug in the generated + * library/clock.tcl: Bison parser (needed a %pure-parser + * tests/clock.test: declaration to avoid static variables). + Discovered that the %pure-parser declaration + allowed for returning the Bison error message + to the Tcl caller in the event of a syntax + error, so did so. + * generic/tclDate.c: bison 2.3 + 2006-06-08 Kevin B. Kenny * library/tzdata/Asia/Dhaka: New DST rule for Bangladesh. diff --git a/generic/tclDate.c b/generic/tclDate.c index 0bd48c8..432225d 100644 --- a/generic/tclDate.c +++ b/generic/tclDate.c @@ -53,10 +53,10 @@ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ -#define YYPURE 0 +#define YYPURE 1 /* Using locations. */ -#define YYLSP_NEEDED 0 +#define YYLSP_NEEDED 1 /* Substitute the variable and function names. */ #define yyparse TclDateparse @@ -66,7 +66,7 @@ #define yychar TclDatechar #define yydebug TclDatedebug #define yynerrs TclDatenerrs - +#define yylloc TclDatelloc /* Tokens. */ #ifndef YYTOKENTYPE @@ -79,19 +79,18 @@ tDAYZONE = 260, tID = 261, tMERIDIAN = 262, - tMINUTE_UNIT = 263, - tMONTH = 264, - tMONTH_UNIT = 265, - tSTARDATE = 266, - tSEC_UNIT = 267, - tSNUMBER = 268, - tUNUMBER = 269, - tZONE = 270, - tEPOCH = 271, - tDST = 272, - tISOBASE = 273, - tDAY_UNIT = 274, - tNEXT = 275 + tMONTH = 263, + tMONTH_UNIT = 264, + tSTARDATE = 265, + tSEC_UNIT = 266, + tSNUMBER = 267, + tUNUMBER = 268, + tZONE = 269, + tEPOCH = 270, + tDST = 271, + tISOBASE = 272, + tDAY_UNIT = 273, + tNEXT = 274 }; #endif /* Tokens. */ @@ -100,19 +99,18 @@ #define tDAYZONE 260 #define tID 261 #define tMERIDIAN 262 -#define tMINUTE_UNIT 263 -#define tMONTH 264 -#define tMONTH_UNIT 265 -#define tSTARDATE 266 -#define tSEC_UNIT 267 -#define tSNUMBER 268 -#define tUNUMBER 269 -#define tZONE 270 -#define tEPOCH 271 -#define tDST 272 -#define tISOBASE 273 -#define tDAY_UNIT 274 -#define tNEXT 275 +#define tMONTH 263 +#define tMONTH_UNIT 264 +#define tSTARDATE 265 +#define tSEC_UNIT 266 +#define tSNUMBER 267 +#define tUNUMBER 268 +#define tZONE 269 +#define tEPOCH 270 +#define tDST 271 +#define tISOBASE 272 +#define tDAY_UNIT 273 +#define tNEXT 274 @@ -133,7 +131,6 @@ * this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ - #include "tclInt.h" /* @@ -151,6 +148,10 @@ */ typedef struct DateInfo { + + Tcl_Obj* messages; /* Error messages */ + const char* separatrix; /* String separating messages */ + time_t dateYear; time_t dateMonth; time_t dateDay; @@ -178,42 +179,40 @@ typedef struct DateInfo { time_t dateDayNumber; int dateHaveDay; - char *dateInput; + const char *dateStart; + const char *dateInput; time_t *dateRelPointer; int dateDigitCount; } DateInfo; -#define YYPARSE_PARAM info -#define YYLEX_PARAM info - #define YYMALLOC ckalloc #define YYFREE(x) (ckfree((void*) (x))) -#define yyDSTmode (((DateInfo *) info)->dateDSTmode) -#define yyDayOrdinal (((DateInfo *) info)->dateDayOrdinal) -#define yyDayNumber (((DateInfo *) info)->dateDayNumber) -#define yyMonthOrdinal (((DateInfo *) info)->dateMonthOrdinal) -#define yyHaveDate (((DateInfo *) info)->dateHaveDate) -#define yyHaveDay (((DateInfo *) info)->dateHaveDay) -#define yyHaveOrdinalMonth (((DateInfo *) info)->dateHaveOrdinalMonth) -#define yyHaveRel (((DateInfo *) info)->dateHaveRel) -#define yyHaveTime (((DateInfo *) info)->dateHaveTime) -#define yyHaveZone (((DateInfo *) info)->dateHaveZone) -#define yyTimezone (((DateInfo *) info)->dateTimezone) -#define yyDay (((DateInfo *) info)->dateDay) -#define yyMonth (((DateInfo *) info)->dateMonth) -#define yyYear (((DateInfo *) info)->dateYear) -#define yyHour (((DateInfo *) info)->dateHour) -#define yyMinutes (((DateInfo *) info)->dateMinutes) -#define yySeconds (((DateInfo *) info)->dateSeconds) -#define yyMeridian (((DateInfo *) info)->dateMeridian) -#define yyRelMonth (((DateInfo *) info)->dateRelMonth) -#define yyRelDay (((DateInfo *) info)->dateRelDay) -#define yyRelSeconds (((DateInfo *) info)->dateRelSeconds) -#define yyRelPointer (((DateInfo *) info)->dateRelPointer) -#define yyInput (((DateInfo *) info)->dateInput) -#define yyDigitCount (((DateInfo *) info)->dateDigitCount) +#define yyDSTmode (info->dateDSTmode) +#define yyDayOrdinal (info->dateDayOrdinal) +#define yyDayNumber (info->dateDayNumber) +#define yyMonthOrdinal (info->dateMonthOrdinal) +#define yyHaveDate (info->dateHaveDate) +#define yyHaveDay (info->dateHaveDay) +#define yyHaveOrdinalMonth (info->dateHaveOrdinalMonth) +#define yyHaveRel (info->dateHaveRel) +#define yyHaveTime (info->dateHaveTime) +#define yyHaveZone (info->dateHaveZone) +#define yyTimezone (info->dateTimezone) +#define yyDay (info->dateDay) +#define yyMonth (info->dateMonth) +#define yyYear (info->dateYear) +#define yyHour (info->dateHour) +#define yyMinutes (info->dateMinutes) +#define yySeconds (info->dateSeconds) +#define yyMeridian (info->dateMeridian) +#define yyRelMonth (info->dateRelMonth) +#define yyRelDay (info->dateRelDay) +#define yyRelSeconds (info->dateRelSeconds) +#define yyRelPointer (info->dateRelPointer) +#define yyInput (info->dateInput) +#define yyDigitCount (info->dateDigitCount) #define EPOCH 1970 #define START_OF_TIME 1902 @@ -235,7 +234,7 @@ typedef struct DateInfo { */ typedef struct _TABLE { - char *name; + const char *name; int type; time_t value; } TABLE; @@ -256,17 +255,6 @@ typedef enum _MERIDIAN { MERam, MERpm, MER24 } MERIDIAN; -/* - * Prototypes of internal functions. - */ - -static int LookupWord(char *buff); -static void TclDateerror(char *s); -static int TclDatelex(void *info); -static time_t ToSeconds(time_t Hours, time_t Minutes, - time_t Seconds, MERIDIAN Meridian); -MODULE_SCOPE int yyparse(void *); - /* Enabling traces. */ @@ -302,11 +290,39 @@ typedef union YYSTYPE # define YYSTYPE_IS_TRIVIAL 1 #endif +#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED +typedef struct YYLTYPE +{ + int first_line; + int first_column; + int last_line; + int last_column; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +# define YYLTYPE_IS_DECLARED 1 +# define YYLTYPE_IS_TRIVIAL 1 +#endif /* Copy the second part of user declarations. */ + +/* + * Prototypes of internal functions. + */ + +static int LookupWord(YYSTYPE* yylvalPtr, char *buff); + static void TclDateerror(YYLTYPE* location, + DateInfo* info, const char *s); + static int TclDatelex(YYSTYPE* yylvalPtr, YYLTYPE* location, + DateInfo* info); +static time_t ToSeconds(time_t Hours, time_t Minutes, + time_t Seconds, MERIDIAN Meridian); +MODULE_SCOPE int yyparse(DateInfo*); + + + /* Line 216 of yacc.c. */ @@ -466,14 +482,16 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; - }; + YYLTYPE yyls; +}; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) @@ -481,8 +499,8 @@ union yyalloc /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + + 2 * YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ @@ -526,7 +544,7 @@ union yyalloc #define YYLAST 79 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 27 +#define YYNTOKENS 26 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 16 /* YYNRULES -- Number of rules. */ @@ -536,7 +554,7 @@ union yyalloc /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 275 +#define YYMAXUTOK 274 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -548,8 +566,8 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 26, 23, 22, 25, 24, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 21, 2, + 2, 2, 2, 25, 22, 21, 24, 23, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -571,7 +589,7 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20 + 15, 16, 17, 18, 19 }; #if YYDEBUG @@ -590,35 +608,35 @@ static const yytype_uint8 yyprhs[] = /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 28, 0, -1, -1, 28, 29, -1, 30, -1, 31, - -1, 33, -1, 34, -1, 32, -1, 37, -1, 35, - -1, 36, -1, 41, -1, 14, 7, -1, 14, 21, - 14, 42, -1, 14, 21, 14, 22, 14, -1, 14, - 21, 14, 21, 14, 42, -1, 14, 21, 14, 21, - 14, 22, 14, -1, 15, 17, -1, 15, -1, 5, - -1, 4, -1, 4, 23, -1, 14, 4, -1, 39, - 14, 4, -1, 20, 4, -1, 14, 24, 14, -1, - 14, 24, 14, 24, 14, -1, 18, -1, 14, 22, - 9, 22, 14, -1, 14, 22, 14, 22, 14, -1, - 9, 14, -1, 9, 14, 23, 14, -1, 14, 9, - -1, 16, -1, 14, 9, 14, -1, 20, 9, -1, - 20, 14, 9, -1, 18, 15, 18, -1, 18, 15, - 14, 21, 14, 21, 14, -1, 18, 18, -1, 11, - 14, 25, 14, -1, 38, 3, -1, 38, -1, 39, - 14, 40, -1, 14, 40, -1, 20, 40, -1, 20, - 14, 40, -1, 40, -1, 22, -1, 26, -1, 12, - -1, 19, -1, 10, -1, 14, -1, -1, 7, -1 + 27, 0, -1, -1, 27, 28, -1, 29, -1, 30, + -1, 32, -1, 33, -1, 31, -1, 36, -1, 34, + -1, 35, -1, 40, -1, 13, 7, -1, 13, 20, + 13, 41, -1, 13, 20, 13, 21, 13, -1, 13, + 20, 13, 20, 13, 41, -1, 13, 20, 13, 20, + 13, 21, 13, -1, 14, 16, -1, 14, -1, 5, + -1, 4, -1, 4, 22, -1, 13, 4, -1, 38, + 13, 4, -1, 19, 4, -1, 13, 23, 13, -1, + 13, 23, 13, 23, 13, -1, 17, -1, 13, 21, + 8, 21, 13, -1, 13, 21, 13, 21, 13, -1, + 8, 13, -1, 8, 13, 22, 13, -1, 13, 8, + -1, 15, -1, 13, 8, 13, -1, 19, 8, -1, + 19, 13, 8, -1, 17, 14, 17, -1, 17, 14, + 13, 20, 13, 20, 13, -1, 17, 17, -1, 10, + 13, 24, 13, -1, 37, 3, -1, 37, -1, 38, + 13, 39, -1, 13, 39, -1, 19, 39, -1, 19, + 13, 39, -1, 39, -1, 21, -1, 25, -1, 11, + -1, 18, -1, 9, -1, 13, -1, -1, 7, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 185, 185, 186, 189, 192, 195, 198, 201, 204, - 207, 211, 216, 219, 225, 231, 239, 245, 256, 260, - 264, 270, 274, 278, 282, 286, 292, 296, 301, 306, - 311, 316, 320, 325, 329, 334, 341, 345, 351, 360, - 369, 379, 393, 398, 401, 404, 407, 410, 413, 418, - 421, 426, 430, 434, 440, 458, 461 + 0, 225, 225, 226, 229, 232, 235, 238, 241, 244, + 247, 251, 256, 259, 265, 271, 279, 285, 296, 300, + 304, 310, 314, 318, 322, 326, 332, 336, 341, 346, + 351, 356, 360, 365, 369, 374, 381, 385, 391, 400, + 409, 419, 433, 438, 441, 444, 447, 450, 453, 458, + 461, 466, 470, 474, 480, 498, 501 }; #endif @@ -628,12 +646,12 @@ static const yytype_uint16 yyrline[] = static const char *const yytname[] = { "$end", "error", "$undefined", "tAGO", "tDAY", "tDAYZONE", "tID", - "tMERIDIAN", "tMINUTE_UNIT", "tMONTH", "tMONTH_UNIT", "tSTARDATE", - "tSEC_UNIT", "tSNUMBER", "tUNUMBER", "tZONE", "tEPOCH", "tDST", - "tISOBASE", "tDAY_UNIT", "tNEXT", "':'", "'-'", "','", "'/'", "'.'", - "'+'", "$accept", "spec", "item", "time", "zone", "day", "date", - "ordMonth", "iso", "trek", "relspec", "relunits", "sign", "unit", - "number", "o_merid", 0 + "tMERIDIAN", "tMONTH", "tMONTH_UNIT", "tSTARDATE", "tSEC_UNIT", + "tSNUMBER", "tUNUMBER", "tZONE", "tEPOCH", "tDST", "tISOBASE", + "tDAY_UNIT", "tNEXT", "':'", "'-'", "','", "'/'", "'.'", "'+'", + "$accept", "spec", "item", "time", "zone", "day", "date", "ordMonth", + "iso", "trek", "relspec", "relunits", "sign", "unit", "number", + "o_merid", 0 }; #endif @@ -644,19 +662,19 @@ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 58, 45, 44, 47, 46, 43 + 58, 45, 44, 47, 46, 43 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 27, 28, 28, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 30, 30, 30, 30, 30, 31, 31, - 31, 32, 32, 32, 32, 32, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 34, 34, 35, 35, - 35, 36, 37, 37, 38, 38, 38, 38, 38, 39, - 39, 40, 40, 40, 41, 42, 42 + 0, 26, 27, 27, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 29, 29, 29, 29, 29, 30, 30, + 30, 31, 31, 31, 31, 31, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 33, 33, 34, 34, + 34, 35, 36, 36, 37, 37, 37, 37, 37, 38, + 38, 39, 39, 39, 40, 41, 41 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -695,25 +713,25 @@ static const yytype_int8 yydefgoto[] = /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -23 +#define YYPACT_NINF -22 static const yytype_int8 yypact[] = { - -23, 2, -23, -22, -23, -5, -23, -4, -23, 22, - -2, -23, 12, -23, 38, -23, -23, -23, -23, -23, - -23, -23, -23, -23, -23, -23, 30, 11, -23, -23, - -23, 17, 10, -23, -23, 35, 40, -6, 47, -23, - -23, 45, -23, -23, -23, 46, -23, -23, 41, 48, - 50, -23, 16, 44, 49, 43, 51, -23, -23, -23, - -23, -23, -23, -23, -23, 54, 55, -23, 56, 59, - 60, 61, -3, -23, -23, -23, -23, 57, 62, -23, - 63, -23, -23 + -22, 2, -22, -21, -22, -4, -22, 1, -22, 22, + 18, -22, 8, -22, 40, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, 32, 28, -22, -22, + -22, 24, 26, -22, -22, 42, 47, -5, 49, -22, + -22, 15, -22, -22, -22, 48, -22, -22, 43, 50, + 51, -22, 17, 44, 46, 45, 52, -22, -22, -22, + -22, -22, -22, -22, -22, 56, 57, -22, 58, 60, + 61, 62, -3, -22, -22, -22, -22, 59, 63, -22, + 64, -22, -22 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, -9, -23, 7 + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -9, -22, 6 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -724,40 +742,40 @@ static const yytype_int8 yypgoto[] = static const yytype_uint8 yytable[] = { 39, 30, 2, 53, 64, 46, 3, 4, 54, 31, - 32, 5, 6, 7, 8, 40, 9, 10, 11, 78, - 12, 13, 14, 64, 15, 48, 33, 41, 16, 34, - 42, 35, 6, 47, 8, 50, 59, 65, 66, 61, - 49, 13, 43, 36, 37, 60, 38, 44, 6, 51, - 8, 6, 45, 8, 52, 58, 6, 13, 8, 56, - 13, 55, 62, 57, 63, 13, 68, 70, 72, 73, - 74, 69, 71, 75, 76, 77, 81, 82, 80, 79 + 5, 6, 7, 8, 32, 9, 10, 11, 78, 12, + 13, 14, 41, 15, 64, 42, 33, 16, 56, 34, + 35, 6, 57, 8, 40, 47, 59, 65, 66, 61, + 13, 48, 36, 37, 43, 38, 49, 60, 44, 6, + 50, 8, 6, 45, 8, 51, 58, 6, 13, 8, + 52, 13, 55, 62, 63, 68, 13, 69, 70, 72, + 73, 74, 71, 75, 76, 77, 81, 82, 79, 80 }; static const yytype_uint8 yycheck[] = { - 9, 23, 0, 9, 7, 14, 4, 5, 14, 14, - 14, 9, 10, 11, 12, 17, 14, 15, 16, 22, - 18, 19, 20, 7, 22, 14, 4, 15, 26, 7, - 18, 9, 10, 3, 12, 25, 45, 21, 22, 48, - 23, 19, 4, 21, 22, 4, 24, 9, 10, 14, - 12, 10, 14, 12, 14, 9, 10, 19, 12, 14, - 19, 14, 14, 18, 14, 19, 22, 24, 14, 14, - 14, 22, 21, 14, 14, 14, 14, 14, 21, 72 + 9, 22, 0, 8, 7, 14, 4, 5, 13, 13, + 8, 9, 10, 11, 13, 13, 14, 15, 21, 17, + 18, 19, 14, 21, 7, 17, 4, 25, 13, 7, + 8, 9, 17, 11, 16, 3, 45, 20, 21, 48, + 18, 13, 20, 21, 4, 23, 22, 4, 8, 9, + 24, 11, 9, 13, 11, 13, 8, 9, 18, 11, + 13, 18, 13, 13, 13, 21, 18, 21, 23, 13, + 13, 13, 20, 13, 13, 13, 13, 13, 72, 20 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 28, 0, 4, 5, 9, 10, 11, 12, 14, - 15, 16, 18, 19, 20, 22, 26, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 23, 14, 14, 4, 7, 9, 21, 22, 24, 40, - 17, 15, 18, 4, 9, 14, 40, 3, 14, 23, - 25, 14, 14, 9, 14, 14, 14, 18, 9, 40, - 4, 40, 14, 14, 7, 21, 22, 42, 22, 22, - 24, 21, 14, 14, 14, 14, 14, 14, 22, 42, - 21, 14, 14 + 0, 27, 0, 4, 5, 8, 9, 10, 11, 13, + 14, 15, 17, 18, 19, 21, 25, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 22, 13, 13, 4, 7, 8, 20, 21, 23, 39, + 16, 14, 17, 4, 8, 13, 39, 3, 13, 22, + 24, 13, 13, 8, 13, 13, 13, 17, 8, 39, + 4, 39, 13, 13, 7, 20, 21, 41, 21, 21, + 23, 20, 13, 13, 13, 13, 13, 13, 21, 41, + 20, 13, 13 }; #define yyerrok (yyerrstatus = 0) @@ -790,7 +808,7 @@ do \ } \ else \ { \ - yyerror (YY_("syntax error: cannot back up")); \ + yyerror (&yylloc, info, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) @@ -845,9 +863,9 @@ while (YYID (0)) /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) +# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) #else -# define YYLEX yylex () +# define YYLEX yylex (&yylval, &yylloc, info) #endif /* Enable debugging if requested. */ @@ -870,7 +888,7 @@ do { \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value); \ + Type, Value, Location, info); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) @@ -884,17 +902,21 @@ do { \ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, DateInfo* info) #else static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) +yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, info) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; + DateInfo* info; #endif { if (!yyvaluep) return; + YYUSE (yylocationp); + YYUSE (info); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); @@ -916,13 +938,15 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, DateInfo* info) #else static void -yy_symbol_print (yyoutput, yytype, yyvaluep) +yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, info) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; + DateInfo* info; #endif { if (yytype < YYNTOKENS) @@ -930,7 +954,9 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YY_LOCATION_PRINT (yyoutput, *yylocationp); + YYFPRINTF (yyoutput, ": "); + yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, info); YYFPRINTF (yyoutput, ")"); } @@ -970,12 +996,14 @@ do { \ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, DateInfo* info) #else static void -yy_reduce_print (yyvsp, yyrule) +yy_reduce_print (yyvsp, yylsp, yyrule, info) YYSTYPE *yyvsp; + YYLTYPE *yylsp; int yyrule; + DateInfo* info; #endif { int yynrhs = yyr2[yyrule]; @@ -989,7 +1017,7 @@ yy_reduce_print (yyvsp, yyrule) fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) - ); + , &(yylsp[(yyi + 1) - (yynrhs)]) , info); fprintf (stderr, "\n"); } } @@ -997,7 +1025,7 @@ yy_reduce_print (yyvsp, yyrule) # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ + yy_reduce_print (yyvsp, yylsp, Rule, info); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that @@ -1248,16 +1276,20 @@ yysyntax_error (char *yyresult, int yystate, int yychar) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, DateInfo* info) #else static void -yydestruct (yymsg, yytype, yyvaluep) +yydestruct (yymsg, yytype, yyvaluep, yylocationp, info) const char *yymsg; int yytype; YYSTYPE *yyvaluep; + YYLTYPE *yylocationp; + DateInfo* info; #endif { YYUSE (yyvaluep); + YYUSE (yylocationp); + YYUSE (info); if (!yymsg) yymsg = "Deleting"; @@ -1282,7 +1314,7 @@ int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus -int yyparse (void); +int yyparse (DateInfo* info); #else int yyparse (); #endif @@ -1290,14 +1322,6 @@ int yyparse (); -/* The look-ahead symbol. */ -int yychar; - -/* The semantic value of the look-ahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; @@ -1319,15 +1343,25 @@ yyparse (YYPARSE_PARAM) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int -yyparse (void) +yyparse (DateInfo* info) #else int -yyparse () - +yyparse (info) + DateInfo* info; #endif #endif { - + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; +/* Location data for the look-ahead symbol. */ +YYLTYPE yylloc; + int yystate; int yyn; int yyresult; @@ -1360,16 +1394,21 @@ yyparse () YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + /* The locations where the error started and ended. */ + YYLTYPE yyerror_range[2]; - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; - + YYLTYPE yyloc; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ @@ -1389,6 +1428,12 @@ yyparse () yyssp = yyss; yyvsp = yyvs; + yylsp = yyls; +#if YYLTYPE_IS_TRIVIAL + /* Initialize the default location before parsing starts. */ + yylloc.first_line = yylloc.last_line = 1; + yylloc.first_column = yylloc.last_column = 0; +#endif goto yysetstate; @@ -1415,7 +1460,7 @@ yyparse () memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; - + YYLTYPE *yyls1 = yyls; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a @@ -1424,9 +1469,9 @@ yyparse () yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), - + &yyls1, yysize * sizeof (*yylsp), &yystacksize); - + yyls = yyls1; yyss = yyss1; yyvs = yyvs1; } @@ -1449,7 +1494,7 @@ yyparse () goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); - + YYSTACK_RELOCATE (yyls); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); @@ -1459,7 +1504,7 @@ yyparse () yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - + yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); @@ -1536,7 +1581,7 @@ yybackup: yystate = yyn; *++yyvsp = yylval; - + *++yylsp = yylloc; goto yynewstate; @@ -1567,7 +1612,8 @@ yyreduce: GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; - + /* Default location. */ + YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); YY_REDUCE_PRINT (yyn); switch (yyn) { @@ -2034,7 +2080,7 @@ yyreduce: YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; - + *++yylsp = yyloc; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule @@ -2060,7 +2106,7 @@ yyerrlab: { ++yynerrs; #if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); + yyerror (&yylloc, info, YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); @@ -2084,11 +2130,11 @@ yyerrlab: if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); + yyerror (&yylloc, info, yymsg); } else { - yyerror (YY_("syntax error")); + yyerror (&yylloc, info, YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } @@ -2096,7 +2142,7 @@ yyerrlab: #endif } - + yyerror_range[0] = yylloc; if (yyerrstatus == 3) { @@ -2112,7 +2158,7 @@ yyerrlab: else { yydestruct ("Error: discarding", - yytoken, &yylval); + yytoken, &yylval, &yylloc, info); yychar = YYEMPTY; } } @@ -2133,6 +2179,7 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; + yyerror_range[0] = yylsp[1-yylen]; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); @@ -2166,9 +2213,9 @@ yyerrlab1: if (yyssp == yyss) YYABORT; - + yyerror_range[0] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp); + yystos[yystate], yyvsp, yylsp, info); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -2179,6 +2226,11 @@ yyerrlab1: *++yyvsp = yylval; + yyerror_range[1] = yylloc; + /* Using YYLLOC is tempting, but would change the location of + the look-ahead. YYLOC is available though. */ + YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); + *++yylsp = yyloc; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); @@ -2206,7 +2258,7 @@ yyabortlab: | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: - yyerror (YY_("memory exhausted")); + yyerror (&yylloc, info, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif @@ -2214,7 +2266,7 @@ yyexhaustedlab: yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); + yytoken, &yylval, &yylloc, info); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); @@ -2222,7 +2274,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[*yyssp], yyvsp, yylsp, info); YYPOPSTACK (1); } #ifndef yyoverflow @@ -2451,8 +2503,25 @@ static TABLE MilitaryTable[] = { static void TclDateerror( - char *s) + YYLTYPE* location, + DateInfo* infoPtr, + const char *s) { + Tcl_Obj* t; + Tcl_AppendToObj(infoPtr->messages, infoPtr->separatrix, -1); + Tcl_AppendToObj(infoPtr->messages, s, -1); + Tcl_AppendToObj(infoPtr->messages, " (characters ", -1); + t = Tcl_NewIntObj(location->first_column); + Tcl_IncrRefCount(t); + Tcl_AppendObjToObj(infoPtr->messages, t); + Tcl_DecrRefCount(t); + Tcl_AppendToObj(infoPtr->messages, "-", -1); + t = Tcl_NewIntObj(location->last_column); + Tcl_IncrRefCount(t); + Tcl_AppendObjToObj(infoPtr->messages, t); + Tcl_DecrRefCount(t); + Tcl_AppendToObj(infoPtr->messages, ")", -1); + infoPtr->separatrix = "\n"; } static time_t @@ -2487,6 +2556,7 @@ ToSeconds( static int LookupWord( + YYSTYPE* yylvalPtr, char *buff) { register char *p; @@ -2501,11 +2571,11 @@ LookupWord( Tcl_UtfToLower(buff); if (strcmp(buff, "am") == 0 || strcmp(buff, "a.m.") == 0) { - yylval.Meridian = MERam; + yylvalPtr->Meridian = MERam; return tMERIDIAN; } if (strcmp(buff, "pm") == 0 || strcmp(buff, "p.m.") == 0) { - yylval.Meridian = MERpm; + yylvalPtr->Meridian = MERpm; return tMERIDIAN; } @@ -2525,25 +2595,25 @@ LookupWord( for (tp = MonthDayTable; tp->name; tp++) { if (abbrev) { if (strncmp(buff, tp->name, 3) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } else if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } for (tp = TimezoneTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } for (tp = UnitsTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -2557,7 +2627,7 @@ LookupWord( buff[i] = '\0'; for (tp = UnitsTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -2565,7 +2635,7 @@ LookupWord( for (tp = OtherTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -2578,7 +2648,7 @@ LookupWord( && isalpha(UCHAR(*buff))) { /* INTL: ISO only */ for (tp = MilitaryTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -2599,7 +2669,7 @@ LookupWord( if (i) { for (tp = TimezoneTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -2610,13 +2680,16 @@ LookupWord( static int TclDatelex( - void *info) + YYSTYPE* yylvalPtr, + YYLTYPE* location, + DateInfo *info) { register char c; register char *p; char buff[20]; int Count; + location->first_column = yyInput - info->dateStart; for ( ; ; ) { while (isspace(UCHAR(*yyInput))) { yyInput++; @@ -2628,9 +2701,9 @@ TclDatelex( */ Count = 0; - for (yylval.Number = 0; + for (yylvalPtr->Number = 0; isdigit(UCHAR(c = *yyInput++)); ) { /* INTL: digit */ - yylval.Number = 10 * yylval.Number + c - '0'; + yylvalPtr->Number = 10 * yylvalPtr->Number + c - '0'; Count++; } yyInput--; @@ -2641,8 +2714,10 @@ TclDatelex( */ if (Count >= 6) { + location->last_column = yyInput - info->dateStart - 1; return tISOBASE; } else { + location->last_column = yyInput - info->dateStart - 1; return tUNUMBER; } } @@ -2655,15 +2730,18 @@ TclDatelex( } *p = '\0'; yyInput--; - return LookupWord(buff); + location->last_column = yyInput - info->dateStart - 1; + return LookupWord(yylvalPtr, buff); } if (c != '(') { + location->last_column = yyInput - info->dateStart; return *yyInput++; } Count = 0; do { c = *yyInput++; if (c == '\0') { + location->last_column = yyInput - info->dateStart - 1; return c; } else if (c == '(') { Count++; @@ -2684,7 +2762,8 @@ TclClockOldscanObjCmd( Tcl_Obj *result, *resultElement; int yr, mo, da; DateInfo dateInfo; - void *info = (void *) &dateInfo; + DateInfo* info = &dateInfo; + int status; if (objc != 5) { Tcl_WrongNumArgs(interp, 1, objv, @@ -2693,6 +2772,7 @@ TclClockOldscanObjCmd( } yyInput = Tcl_GetString( objv[1] ); + dateInfo.dateStart = yyInput; yyHaveDate = 0; if (Tcl_GetIntFromObj(interp, objv[2], &yr) != TCL_OK @@ -2717,10 +2797,28 @@ TclClockOldscanObjCmd( yyHaveRel = 0; yyRelMonth = 0; yyRelDay = 0; yyRelSeconds = 0; yyRelPointer = NULL; - if (yyparse(info)) { - Tcl_SetObjResult(interp, Tcl_NewStringObj("syntax error", -1)); + dateInfo.messages = Tcl_NewObj(); + dateInfo.separatrix = ""; + Tcl_IncrRefCount(dateInfo.messages); + + status = yyparse(&dateInfo); + if (status == 1) { + Tcl_SetObjResult(interp, dateInfo.messages); + Tcl_DecrRefCount(dateInfo.messages); + return TCL_ERROR; + } else if (status == 2) { + Tcl_SetObjResult(interp, Tcl_NewStringObj("memory exhausted", -1)); + Tcl_DecrRefCount(dateInfo.messages); + return TCL_ERROR; + } else if (status != 0) { + Tcl_SetObjResult(interp, Tcl_NewStringObj("Unknown status returned " + "from date parser. Please " + "report this error as a " + "bug in Tcl.", -1)); + Tcl_DecrRefCount(dateInfo.messages); return TCL_ERROR; } + Tcl_DecrRefCount(dateInfo.messages); if (yyHaveDate > 1) { Tcl_SetObjResult(interp, diff --git a/generic/tclGetDate.y b/generic/tclGetDate.y index 119b406..8818e1a 100644 --- a/generic/tclGetDate.y +++ b/generic/tclGetDate.y @@ -13,9 +13,15 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclGetDate.y,v 1.38 2007/12/13 15:23:17 dgp Exp $ + * RCS: @(#) $Id: tclGetDate.y,v 1.38.2.1 2009/06/09 13:52:58 kennykb Exp $ */ +%parse-param {DateInfo* info} +%lex-param {DateInfo* info} +%pure-parser + /* %error-verbose would be nice, but our token names are meaningless */ +%locations + %{ /* * tclDate.c -- @@ -30,7 +36,6 @@ * this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ - #include "tclInt.h" /* @@ -48,6 +53,10 @@ */ typedef struct DateInfo { + + Tcl_Obj* messages; /* Error messages */ + const char* separatrix; /* String separating messages */ + time_t dateYear; time_t dateMonth; time_t dateDay; @@ -75,42 +84,40 @@ typedef struct DateInfo { time_t dateDayNumber; int dateHaveDay; - char *dateInput; + const char *dateStart; + const char *dateInput; time_t *dateRelPointer; int dateDigitCount; } DateInfo; -#define YYPARSE_PARAM info -#define YYLEX_PARAM info - #define YYMALLOC ckalloc #define YYFREE(x) (ckfree((void*) (x))) -#define yyDSTmode (((DateInfo *) info)->dateDSTmode) -#define yyDayOrdinal (((DateInfo *) info)->dateDayOrdinal) -#define yyDayNumber (((DateInfo *) info)->dateDayNumber) -#define yyMonthOrdinal (((DateInfo *) info)->dateMonthOrdinal) -#define yyHaveDate (((DateInfo *) info)->dateHaveDate) -#define yyHaveDay (((DateInfo *) info)->dateHaveDay) -#define yyHaveOrdinalMonth (((DateInfo *) info)->dateHaveOrdinalMonth) -#define yyHaveRel (((DateInfo *) info)->dateHaveRel) -#define yyHaveTime (((DateInfo *) info)->dateHaveTime) -#define yyHaveZone (((DateInfo *) info)->dateHaveZone) -#define yyTimezone (((DateInfo *) info)->dateTimezone) -#define yyDay (((DateInfo *) info)->dateDay) -#define yyMonth (((DateInfo *) info)->dateMonth) -#define yyYear (((DateInfo *) info)->dateYear) -#define yyHour (((DateInfo *) info)->dateHour) -#define yyMinutes (((DateInfo *) info)->dateMinutes) -#define yySeconds (((DateInfo *) info)->dateSeconds) -#define yyMeridian (((DateInfo *) info)->dateMeridian) -#define yyRelMonth (((DateInfo *) info)->dateRelMonth) -#define yyRelDay (((DateInfo *) info)->dateRelDay) -#define yyRelSeconds (((DateInfo *) info)->dateRelSeconds) -#define yyRelPointer (((DateInfo *) info)->dateRelPointer) -#define yyInput (((DateInfo *) info)->dateInput) -#define yyDigitCount (((DateInfo *) info)->dateDigitCount) +#define yyDSTmode (info->dateDSTmode) +#define yyDayOrdinal (info->dateDayOrdinal) +#define yyDayNumber (info->dateDayNumber) +#define yyMonthOrdinal (info->dateMonthOrdinal) +#define yyHaveDate (info->dateHaveDate) +#define yyHaveDay (info->dateHaveDay) +#define yyHaveOrdinalMonth (info->dateHaveOrdinalMonth) +#define yyHaveRel (info->dateHaveRel) +#define yyHaveTime (info->dateHaveTime) +#define yyHaveZone (info->dateHaveZone) +#define yyTimezone (info->dateTimezone) +#define yyDay (info->dateDay) +#define yyMonth (info->dateMonth) +#define yyYear (info->dateYear) +#define yyHour (info->dateHour) +#define yyMinutes (info->dateMinutes) +#define yySeconds (info->dateSeconds) +#define yyMeridian (info->dateMeridian) +#define yyRelMonth (info->dateRelMonth) +#define yyRelDay (info->dateRelDay) +#define yyRelSeconds (info->dateRelSeconds) +#define yyRelPointer (info->dateRelPointer) +#define yyInput (info->dateInput) +#define yyDigitCount (info->dateDigitCount) #define EPOCH 1970 #define START_OF_TIME 1902 @@ -132,7 +139,7 @@ typedef struct DateInfo { */ typedef struct _TABLE { - char *name; + const char *name; int type; time_t value; } TABLE; @@ -153,32 +160,65 @@ typedef enum _MERIDIAN { MERam, MERpm, MER24 } MERIDIAN; +%} + +%union { + time_t Number; + enum _MERIDIAN Meridian; +} + +%{ + /* * Prototypes of internal functions. */ -static int LookupWord(char *buff); -static void TclDateerror(char *s); -static int TclDatelex(void *info); +static int LookupWord(YYSTYPE* yylvalPtr, char *buff); + static void TclDateerror(YYLTYPE* location, + DateInfo* info, const char *s); + static int TclDatelex(YYSTYPE* yylvalPtr, YYLTYPE* location, + DateInfo* info); static time_t ToSeconds(time_t Hours, time_t Minutes, time_t Seconds, MERIDIAN Meridian); -MODULE_SCOPE int yyparse(void *); +MODULE_SCOPE int yyparse(DateInfo*); %} -%union { - time_t Number; - enum _MERIDIAN Meridian; -} - -%token tAGO tDAY tDAYZONE tID tMERIDIAN tMINUTE_UNIT tMONTH tMONTH_UNIT -%token tSTARDATE tSEC_UNIT tSNUMBER tUNUMBER tZONE tEPOCH tDST tISOBASE -%token tDAY_UNIT tNEXT - -%type tDAY tDAYZONE tMINUTE_UNIT tMONTH tMONTH_UNIT tDST -%type tSEC_UNIT tSNUMBER tUNUMBER tZONE tISOBASE tDAY_UNIT -%type unit sign tNEXT tSTARDATE -%type tMERIDIAN o_merid +%token tAGO +%token tDAY +%token tDAYZONE +%token tID +%token tMERIDIAN +%token tMONTH +%token tMONTH_UNIT +%token tSTARDATE +%token tSEC_UNIT +%token tSNUMBER +%token tUNUMBER +%token tZONE +%token tEPOCH +%token tDST +%token tISOBASE +%token tDAY_UNIT +%token tNEXT + +%type tDAY +%type tDAYZONE +%type tMONTH +%type tMONTH_UNIT +%type tDST +%type tSEC_UNIT +%type tSNUMBER +%type tUNUMBER +%type tZONE +%type tISOBASE +%type tDAY_UNIT +%type unit +%type sign +%type tNEXT +%type tSTARDATE +%type tMERIDIAN +%type o_merid %% @@ -675,8 +715,25 @@ static TABLE MilitaryTable[] = { static void TclDateerror( - char *s) + YYLTYPE* location, + DateInfo* infoPtr, + const char *s) { + Tcl_Obj* t; + Tcl_AppendToObj(infoPtr->messages, infoPtr->separatrix, -1); + Tcl_AppendToObj(infoPtr->messages, s, -1); + Tcl_AppendToObj(infoPtr->messages, " (characters ", -1); + t = Tcl_NewIntObj(location->first_column); + Tcl_IncrRefCount(t); + Tcl_AppendObjToObj(infoPtr->messages, t); + Tcl_DecrRefCount(t); + Tcl_AppendToObj(infoPtr->messages, "-", -1); + t = Tcl_NewIntObj(location->last_column); + Tcl_IncrRefCount(t); + Tcl_AppendObjToObj(infoPtr->messages, t); + Tcl_DecrRefCount(t); + Tcl_AppendToObj(infoPtr->messages, ")", -1); + infoPtr->separatrix = "\n"; } static time_t @@ -711,6 +768,7 @@ ToSeconds( static int LookupWord( + YYSTYPE* yylvalPtr, char *buff) { register char *p; @@ -725,11 +783,11 @@ LookupWord( Tcl_UtfToLower(buff); if (strcmp(buff, "am") == 0 || strcmp(buff, "a.m.") == 0) { - yylval.Meridian = MERam; + yylvalPtr->Meridian = MERam; return tMERIDIAN; } if (strcmp(buff, "pm") == 0 || strcmp(buff, "p.m.") == 0) { - yylval.Meridian = MERpm; + yylvalPtr->Meridian = MERpm; return tMERIDIAN; } @@ -749,25 +807,25 @@ LookupWord( for (tp = MonthDayTable; tp->name; tp++) { if (abbrev) { if (strncmp(buff, tp->name, 3) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } else if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } for (tp = TimezoneTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } for (tp = UnitsTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -781,7 +839,7 @@ LookupWord( buff[i] = '\0'; for (tp = UnitsTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -789,7 +847,7 @@ LookupWord( for (tp = OtherTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -802,7 +860,7 @@ LookupWord( && isalpha(UCHAR(*buff))) { /* INTL: ISO only */ for (tp = MilitaryTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -823,7 +881,7 @@ LookupWord( if (i) { for (tp = TimezoneTable; tp->name; tp++) { if (strcmp(buff, tp->name) == 0) { - yylval.Number = tp->value; + yylvalPtr->Number = tp->value; return tp->type; } } @@ -834,13 +892,16 @@ LookupWord( static int TclDatelex( - void *info) + YYSTYPE* yylvalPtr, + YYLTYPE* location, + DateInfo *info) { register char c; register char *p; char buff[20]; int Count; + location->first_column = yyInput - info->dateStart; for ( ; ; ) { while (isspace(UCHAR(*yyInput))) { yyInput++; @@ -852,9 +913,9 @@ TclDatelex( */ Count = 0; - for (yylval.Number = 0; + for (yylvalPtr->Number = 0; isdigit(UCHAR(c = *yyInput++)); ) { /* INTL: digit */ - yylval.Number = 10 * yylval.Number + c - '0'; + yylvalPtr->Number = 10 * yylvalPtr->Number + c - '0'; Count++; } yyInput--; @@ -865,8 +926,10 @@ TclDatelex( */ if (Count >= 6) { + location->last_column = yyInput - info->dateStart - 1; return tISOBASE; } else { + location->last_column = yyInput - info->dateStart - 1; return tUNUMBER; } } @@ -879,15 +942,18 @@ TclDatelex( } *p = '\0'; yyInput--; - return LookupWord(buff); + location->last_column = yyInput - info->dateStart - 1; + return LookupWord(yylvalPtr, buff); } if (c != '(') { + location->last_column = yyInput - info->dateStart; return *yyInput++; } Count = 0; do { c = *yyInput++; if (c == '\0') { + location->last_column = yyInput - info->dateStart - 1; return c; } else if (c == '(') { Count++; @@ -908,7 +974,8 @@ TclClockOldscanObjCmd( Tcl_Obj *result, *resultElement; int yr, mo, da; DateInfo dateInfo; - void *info = (void *) &dateInfo; + DateInfo* info = &dateInfo; + int status; if (objc != 5) { Tcl_WrongNumArgs(interp, 1, objv, @@ -917,6 +984,7 @@ TclClockOldscanObjCmd( } yyInput = Tcl_GetString( objv[1] ); + dateInfo.dateStart = yyInput; yyHaveDate = 0; if (Tcl_GetIntFromObj(interp, objv[2], &yr) != TCL_OK @@ -941,10 +1009,28 @@ TclClockOldscanObjCmd( yyHaveRel = 0; yyRelMonth = 0; yyRelDay = 0; yyRelSeconds = 0; yyRelPointer = NULL; - if (yyparse(info)) { - Tcl_SetObjResult(interp, Tcl_NewStringObj("syntax error", -1)); + dateInfo.messages = Tcl_NewObj(); + dateInfo.separatrix = ""; + Tcl_IncrRefCount(dateInfo.messages); + + status = yyparse(&dateInfo); + if (status == 1) { + Tcl_SetObjResult(interp, dateInfo.messages); + Tcl_DecrRefCount(dateInfo.messages); + return TCL_ERROR; + } else if (status == 2) { + Tcl_SetObjResult(interp, Tcl_NewStringObj("memory exhausted", -1)); + Tcl_DecrRefCount(dateInfo.messages); + return TCL_ERROR; + } else if (status != 0) { + Tcl_SetObjResult(interp, Tcl_NewStringObj("Unknown status returned " + "from date parser. Please " + "report this error as a " + "bug in Tcl.", -1)); + Tcl_DecrRefCount(dateInfo.messages); return TCL_ERROR; } + Tcl_DecrRefCount(dateInfo.messages); if (yyHaveDate > 1) { Tcl_SetObjResult(interp, diff --git a/library/clock.tcl b/library/clock.tcl index 8a78c39..5e9601d 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47.2.5 2009/01/03 04:36:53 kennykb Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.47.2.6 2009/06/09 13:52:58 kennykb Exp $ # #---------------------------------------------------------------------- @@ -1369,7 +1369,7 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { [dict get $date dayOfMonth] } result] if { $status != 0 } { - return -code error "unable to convert date-time string \"$string\"" + return -code error "unable to convert date-time string \"$string\": $result" } lassign $result parseDate parseTime parseZone parseRel \ diff --git a/tests/clock.test b/tests/clock.test index c58ac0e..6af7134 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.83.2.5 2009/01/03 04:36:53 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.83.2.6 2009/06/09 13:52:58 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -35578,9 +35578,12 @@ test clock-33.11a {clock test, millis align with micros} { test clock-34.1 {clock scan tests} { list [catch {clock scan} msg] $msg } {1 {wrong # args: should be "clock scan string ?-base seconds? ?-format string? ?-gmt boolean? ?-locale LOCALE? ?-timezone ZONE?"}} -test clock-34.2 {clock scan tests} { - list [catch {clock scan "bad-string"} msg] $msg -} {1 {unable to convert date-time string "bad-string"}} +test clock-34.2 {clock scan tests} {*}{ + -body {clock scan "bad-string"} + -returnCodes error + -match glob + -result {unable to convert date-time string "bad-string"*} +} test clock-34.3 {clock scan tests} { clock format [clock scan "14 Feb 92" -gmt true] \ -format {%m/%d/%y %I:%M:%S %p} -gmt true @@ -35804,6 +35807,38 @@ test clock-34.47 {ago with multiple relative units} { expr {$base - $res} } 180000 +test clock-34.48 {more than one ToD} {*}{ + -body {clock scan {10:00 11:00}} + -returnCodes error + -result {unable to convert date-time string "10:00 11:00": more than one time of day in string} +} + +test clock-34.49 {more than one date} {*}{ + -body {clock scan {1/1/2001 2/2/2002}} + -returnCodes error + -result {unable to convert date-time string "1/1/2001 2/2/2002": more than one date in string} +} + +test clock-34.50 {more than one time zone} {*}{ + -body {clock scan {10:00 EST CST}} + -returnCodes error + -result {unable to convert date-time string "10:00 EST CST": more than one time zone in string} +} + +test clock-34.51 {more than one weekday} {*}{ + -body {clock scan {Monday Tuesday}} + -returnCodes error + -result {unable to convert date-time string "Monday Tuesday": more than one weekday in string} +} + +test clock-34.52 {more than one ordinal month} {*}{ + -body {clock scan {next January next March}} + -returnCodes error + -result {unable to convert date-time string "next January next March": more than one ordinal month in string} +} + + + # clock seconds test clock-35.1 {clock seconds tests} { expr [clock seconds]+1 -- cgit v0.12 From 855a348eeae253e6765ea3edf689e41d79a7c081 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 10 Jun 2009 21:38:13 +0000 Subject: * generic/tclStringObj.c: Revised [format] to not overflow the integer calculations computing the length of the %ll formats of really big integers. Also added protections so that [format]s that would produce results overflowing the maximum string length of Tcl values throw a normal Tcl error instead of a panic. [Bug 2801413] --- ChangeLog | 10 ++++++- generic/tclStringObj.c | 76 ++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 77 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb2f2b3..de8d594 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-06-10 Don Porter + + * generic/tclStringObj.c: Revised [format] to not overflow the + integer calculations computing the length of the %ll formats of + really big integers. Also added protections so that [format]s that + would produce results overflowing the maximum string length of Tcl + values throw a normal Tcl error instead of a panic. [Bug 2801413] + 2006-06-09 Kevin B. Kenny * generic/tclGetDate.y: Fixed a thread safety bug in the generated @@ -13,7 +21,7 @@ * library/tzdata/Asia/Dhaka: New DST rule for Bangladesh. (Olson's tzdata2009i.) - + 2009-06-02 Don Porter * generic/tclExecute.c: Replace dynamically-initialized table with diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index a0992aa..e844e14 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.12 2009/04/15 19:07:04 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.13 2009/06/10 21:38:13 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -1800,18 +1800,20 @@ Tcl_AppendFormatToObj( { const char *span = format, *msg; int numBytes = 0, objIndex = 0, gotXpg = 0, gotSequential = 0; - int originalLength; + int originalLength, limit; static const char *mixedXPG = "cannot mix \"%\" and \"%n$\" conversion specifiers"; static const char *badIndex[2] = { "not enough arguments for all format specifiers", "\"%n$\" argument index out of range" }; + static const char *overflow = "max size for a Tcl value exceeded"; if (Tcl_IsShared(appendObj)) { Tcl_Panic("%s called with shared object", "Tcl_AppendFormatToObj"); } TclGetStringFromObj(appendObj, &originalLength); + limit = INT_MAX - originalLength; /* * Format string is NUL-terminated. @@ -1821,7 +1823,7 @@ Tcl_AppendFormatToObj( char *end; int gotMinus, gotHash, gotZero, gotSpace, gotPlus, sawFlag; int width, gotPrecision, precision, useShort, useWide, useBig; - int newXpg, numChars, allocSegment = 0; + int newXpg, numChars, allocSegment = 0, segmentLimit, segmentNumBytes; Tcl_Obj *segment; Tcl_UniChar ch; int step = Tcl_UtfToUniChar(format, &ch); @@ -1832,7 +1834,12 @@ Tcl_AppendFormatToObj( continue; } if (numBytes) { + if (numBytes > limit) { + msg = overflow; + goto errorMsg; + } Tcl_AppendToObj(appendObj, span, numBytes); + limit -= numBytes; numBytes = 0; } @@ -1939,6 +1946,10 @@ Tcl_AppendFormatToObj( format += step; step = Tcl_UtfToUniChar(format, &ch); } + if (width > limit) { + msg = overflow; + goto errorMsg; + } /* * Step 4. Precision. @@ -2051,7 +2062,7 @@ Tcl_AppendFormatToObj( long l; Tcl_WideInt w; mp_int big; - int isNegative = 0; + int toAppend, isNegative = 0; if (useBig) { if (Tcl_GetBignumFromObj(interp, segment, &big) != TCL_OK) { @@ -2102,21 +2113,25 @@ Tcl_AppendFormatToObj( segment = Tcl_NewObj(); allocSegment = 1; + segmentLimit = INT_MAX; Tcl_IncrRefCount(segment); if ((isNegative || gotPlus || gotSpace) && (useBig || (ch == 'd'))) { Tcl_AppendToObj(segment, (isNegative ? "-" : gotPlus ? "+" : " "), 1); + segmentLimit -= 1; } if (gotHash) { switch (ch) { case 'o': Tcl_AppendToObj(segment, "0", 1); + segmentLimit -= 1; precision--; break; case 'x': case 'X': Tcl_AppendToObj(segment, "0x", 2); + segmentLimit -= 2; break; } } @@ -2147,6 +2162,7 @@ Tcl_AppendFormatToObj( length--; bytes++; } + toAppend = length; /* * Canonical decimal string reps for integers are composed @@ -2155,6 +2171,9 @@ Tcl_AppendFormatToObj( */ if (gotPrecision) { + if (length < precision) { + segmentLimit -= (precision - length); + } while (length < precision) { Tcl_AppendToObj(segment, "0", 1); length++; @@ -2163,12 +2182,19 @@ Tcl_AppendFormatToObj( } if (gotZero) { length += Tcl_GetCharLength(segment); + if (length < width) { + segmentLimit -= (width - length); + } while (length < width) { Tcl_AppendToObj(segment, "0", 1); length++; } } - Tcl_AppendToObj(segment, bytes, -1); + if (toAppend > segmentLimit) { + msg = overflow; + goto errorMsg; + } + Tcl_AppendToObj(segment, bytes, toAppend); Tcl_DecrRefCount(pure); break; } @@ -2178,7 +2204,8 @@ Tcl_AppendFormatToObj( case 'x': case 'X': { Tcl_WideUInt bits = (Tcl_WideUInt)0; - int length, numBits = 4, numDigits = 0, base = 16; + Tcl_WideInt numDigits = (Tcl_WideInt)0; + int length, numBits = 4, base = 16; int index = 0, shift = 0; Tcl_Obj *pure; char *bytes; @@ -2210,11 +2237,16 @@ Tcl_AppendFormatToObj( int leftover = (big.used * DIGIT_BIT) % numBits; mp_digit mask = (~(mp_digit)0) << (DIGIT_BIT-leftover); - numDigits = 1 + ((big.used * DIGIT_BIT) / numBits); + numDigits = 1 + + (((Tcl_WideInt)big.used * DIGIT_BIT) / numBits); while ((mask & big.dp[big.used-1]) == 0) { numDigits--; mask >>= numBits; } + if (numDigits > INT_MAX) { + msg = overflow; + goto errorMsg; + } } else if (!useBig) { unsigned long int ul = (unsigned long int) l; @@ -2235,7 +2267,7 @@ Tcl_AppendFormatToObj( pure = Tcl_NewObj(); Tcl_SetObjLength(pure, numDigits); bytes = TclGetString(pure); - length = numDigits; + toAppend = length = numDigits; while (numDigits--) { int digitOffset; @@ -2259,6 +2291,9 @@ Tcl_AppendFormatToObj( mp_clear(&big); } if (gotPrecision) { + if (length < precision) { + segmentLimit -= (precision - length); + } while (length < precision) { Tcl_AppendToObj(segment, "0", 1); length++; @@ -2267,11 +2302,18 @@ Tcl_AppendFormatToObj( } if (gotZero) { length += Tcl_GetCharLength(segment); + if (length < width) { + segmentLimit -= (width - length); + } while (length < width) { Tcl_AppendToObj(segment, "0", 1); length++; } } + if (toAppend > segmentLimit) { + msg = overflow; + goto errorMsg; + } Tcl_AppendObjToObj(segment, pure); Tcl_DecrRefCount(pure); break; @@ -2355,15 +2397,28 @@ Tcl_AppendFormatToObj( numChars = Tcl_GetCharLength(segment); if (!gotMinus) { + if (numChars < width) { + limit -= (width - numChars); + } while (numChars < width) { Tcl_AppendToObj(appendObj, (gotZero ? "0" : " "), 1); numChars++; } } + + Tcl_GetStringFromObj(segment, &segmentNumBytes); + if (segmentNumBytes > limit) { + msg = overflow; + goto errorMsg; + } Tcl_AppendObjToObj(appendObj, segment); + limit -= segmentNumBytes; if (allocSegment) { Tcl_DecrRefCount(segment); } + if (numChars < width) { + limit -= (width - numChars); + } while (numChars < width) { Tcl_AppendToObj(appendObj, (gotZero ? "0" : " "), 1); numChars++; @@ -2372,7 +2427,12 @@ Tcl_AppendFormatToObj( objIndex += gotSequential; } if (numBytes) { + if (numBytes > limit) { + msg = overflow; + goto errorMsg; + } Tcl_AppendToObj(appendObj, span, numBytes); + limit -= numBytes; numBytes = 0; } -- cgit v0.12 From 3f776aa9379874671930875ff55e00f3e7567644 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 13 Jun 2009 14:25:12 +0000 Subject: * generic/tclCompile.c: The value stashed in iPtr->compiledProcPtr * generic/tclProc.c: when compiling a proc survives too long. We * tests/execute.test: only need it there long enough for the right TclInitCompileEnv() call to re-stash it into envPtr->procPtr. Once that is done, the CompileEnv controls. If we let the value of iPtr->compiledProcPtr linger, though, then any other bytecode compile operation that takes place will also have its CompileEnv initialized with it, and that's not correct. The value is meant to control the compile of the proc body only, not other compile tasks that happen along. Thanks to Carlos Tasada for discovering and reporting the problem. [Bug 2802881]. --- ChangeLog | 14 ++++++++++++++ generic/tclCompile.c | 3 ++- generic/tclProc.c | 6 +----- tests/execute.test | 15 ++++++++++++++- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index de8d594..58e412b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2009-06-13 Don Porter + + * generic/tclCompile.c: The value stashed in iPtr->compiledProcPtr + * generic/tclProc.c: when compiling a proc survives too long. We + * tests/execute.test: only need it there long enough for the right + TclInitCompileEnv() call to re-stash it into envPtr->procPtr. Once + that is done, the CompileEnv controls. If we let the value of + iPtr->compiledProcPtr linger, though, then any other bytecode compile + operation that takes place will also have its CompileEnv initialized + with it, and that's not correct. The value is meant to control the + compile of the proc body only, not other compile tasks that happen + along. Thanks to Carlos Tasada for discovering and reporting the + problem. [Bug 2802881]. + 2009-06-10 Don Porter * generic/tclStringObj.c: Revised [format] to not overflow the diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 3c7ca6e..c7b311b 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.6 2008/07/25 20:30:44 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.7 2009/06/13 14:25:12 dgp Exp $ */ #include "tclInt.h" @@ -870,6 +870,7 @@ TclInitCompileEnv( envPtr->source = stringPtr; envPtr->numSrcBytes = numBytes; envPtr->procPtr = iPtr->compiledProcPtr; + iPtr->compiledProcPtr = NULL; envPtr->numCommands = 0; envPtr->exceptDepth = 0; envPtr->maxExceptDepth = 0; diff --git a/generic/tclProc.c b/generic/tclProc.c index 9313154..717b8bc 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.139.2.4 2008/10/19 19:54:22 dgp Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.139.2.5 2009/06/13 14:25:13 dgp Exp $ */ #include "tclInt.h" @@ -1891,7 +1891,6 @@ ProcCompileProc( Interp *iPtr = (Interp *) interp; int i; Tcl_CallFrame *framePtr; - Proc *saveProcPtr; ByteCode *codePtr = bodyPtr->internalRep.otherValuePtr; CompiledLocal *localPtr; @@ -1961,8 +1960,6 @@ ProcCompileProc( * appropriate class context. */ - saveProcPtr = iPtr->compiledProcPtr; - if (procPtrPtr != NULL && procPtr->refCount > 1) { Tcl_Command token; Tcl_CmdInfo info; @@ -2045,7 +2042,6 @@ ProcCompileProc( (void) tclByteCodeType.setFromAnyProc(interp, bodyPtr); iPtr->invokeCmdFramePtr = NULL; TclPopStackFrame(interp); - iPtr->compiledProcPtr = saveProcPtr; } else if (codePtr->nsEpoch != nsPtr->resolverEpoch) { /* * The resolver epoch has changed, but we only need to invalidate the diff --git a/tests/execute.test b/tests/execute.test index 51d375e..5f3ccf5 100644 --- a/tests/execute.test +++ b/tests/execute.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: execute.test,v 1.27.2.1 2008/08/04 04:48:16 dgp Exp $ +# RCS: @(#) $Id: execute.test,v 1.27.2.2 2009/06/13 14:25:13 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -972,6 +972,19 @@ test execute-9.1 {Interp result resetting [Bug 1522803]} { set result } SUCCESS +test execute-10.1 {Bug 2802881} -setup { + interp create slave +} -body { + # If [Bug 2802881] is not fixed, this will segfault + slave eval { + trace add variable ::errorInfo write {expr {$foo} ;#} + proc demo {} {a {}{}} + demo + } +} -cleanup { + interp delete slave +} -returnCodes error -match glob -result * + # cleanup if {[info commands testobj] != {}} { testobj freeallvars -- cgit v0.12 From 7e5106ddb3d4a8167559780d733683406d9a1c54 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 13 Jun 2009 14:27:43 +0000 Subject: test name conflict --- tests/execute.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/execute.test b/tests/execute.test index 5f3ccf5..62c1fd2 100644 --- a/tests/execute.test +++ b/tests/execute.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: execute.test,v 1.27.2.2 2009/06/13 14:25:13 dgp Exp $ +# RCS: @(#) $Id: execute.test,v 1.27.2.3 2009/06/13 14:27:43 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -972,7 +972,7 @@ test execute-9.1 {Interp result resetting [Bug 1522803]} { set result } SUCCESS -test execute-10.1 {Bug 2802881} -setup { +test execute-10.2 {Bug 2802881} -setup { interp create slave } -body { # If [Bug 2802881] is not fixed, this will segfault -- cgit v0.12 From 75857eb1811ac33b4d22fe4dc0949b9975a005a8 Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 13 Jun 2009 14:38:44 +0000 Subject: * generic/tclCompile.c: The value stashed in iPtr->compiledProcPtr * generic/tclProc.c: when compiling a proc survives too long. We * tests/execute.test: only need it there long enough for the right TclInitCompileEnv() call to re-stash it into envPtr->procPtr. Once that is done, the CompileEnv controls. If we let the value of iPtr->compiledProcPtr linger, though, then any other bytecode compile operation that takes place will also have its CompileEnv initialized with it, and that's not correct. The value is meant to control the compile of the proc body only, not other compile tasks that happen along. Thanks to Carlos Tasada for discovering and reporting the problem. [Bug 2802881]. --- ChangeLog | 14 ++++++++++++++ generic/tclCompile.c | 3 ++- generic/tclProc.c | 7 +------ tests/execute.test | 15 ++++++++++++++- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 07dc8bb..ad05f98 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2009-06-13 Don Porter + + * generic/tclCompile.c: The value stashed in iPtr->compiledProcPtr + * generic/tclProc.c: when compiling a proc survives too long. We + * tests/execute.test: only need it there long enough for the right + TclInitCompileEnv() call to re-stash it into envPtr->procPtr. Once + that is done, the CompileEnv controls. If we let the value of + iPtr->compiledProcPtr linger, though, then any other bytecode compile + operation that takes place will also have its CompileEnv initialized + with it, and that's not correct. The value is meant to control the + compile of the proc body only, not other compile tasks that happen + along. Thanks to Carlos Tasada for discovering and reporting the + problem. [Bug 2802881]. + 2009-04-28 Jeff Hobbs * unix/tcl.m4, unix/configure (SC_CONFIG_CFLAGS): harden the check diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 44ee69b..98ccc50 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.13 2008/07/28 20:01:09 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.14 2009/06/13 14:38:44 dgp Exp $ */ #include "tclInt.h" @@ -773,6 +773,7 @@ TclInitCompileEnv(interp, envPtr, string, numBytes, invoker, word) envPtr->source = string; envPtr->numSrcBytes = numBytes; envPtr->procPtr = iPtr->compiledProcPtr; + iPtr->compiledProcPtr = NULL; envPtr->numCommands = 0; envPtr->exceptDepth = 0; envPtr->maxExceptDepth = 0; diff --git a/generic/tclProc.c b/generic/tclProc.c index 950d448..1e9f6b4 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.9 2008/08/11 20:13:43 andreas_kupries Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.10 2009/06/13 14:38:44 dgp Exp $ */ #include "tclInt.h" @@ -1300,7 +1300,6 @@ ProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, Interp *iPtr = (Interp*)interp; int i, result; Tcl_CallFrame frame; - Proc *saveProcPtr; ByteCode *codePtr = (ByteCode *) bodyPtr->internalRep.otherValuePtr; CompiledLocal *localPtr; @@ -1369,8 +1368,6 @@ ProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, * compiled in the appropriate class context. */ - saveProcPtr = iPtr->compiledProcPtr; - if (procPtrPtr != NULL && procPtr->refCount > 1) { Tcl_Command token; Tcl_CmdInfo info; @@ -1455,8 +1452,6 @@ ProcCompileProc(interp, procPtr, bodyPtr, nsPtr, description, Tcl_PopCallFrame(interp); } - iPtr->compiledProcPtr = saveProcPtr; - if (result != TCL_OK) { if (result == TCL_ERROR) { char buf[100 + TCL_INTEGER_SPACE]; diff --git a/tests/execute.test b/tests/execute.test index 47ac562..e0adda7 100644 --- a/tests/execute.test +++ b/tests/execute.test @@ -14,7 +14,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: execute.test,v 1.13.2.4 2008/03/07 20:26:22 dgp Exp $ +# RCS: @(#) $Id: execute.test,v 1.13.2.5 2009/06/13 14:38:44 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -904,6 +904,19 @@ test execute-8.1 {Stack protection} -setup { rename whatever {} } -returnCodes error -match glob -result * +test execute-10.2 {Bug 2802881} -setup { + interp create slave +} -body { + # If [Bug 2802881] is not fixed, this will segfault + slave eval { + trace add variable ::errorInfo write {expr {$foo} ;#} + proc demo {} {a {}{}} + demo + } +} -cleanup { + interp delete slave +} -returnCodes error -match glob -result * + # cleanup if {[info commands testobj] != {}} { testobj freeallvars -- cgit v0.12 From 3234624adfe748f3d9e906e52cd9935faa1a913a Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 15 Jun 2009 18:52:25 +0000 Subject: * generic/tclStringObj.c: sprintf() -> Tcl_ObjPrintf() conversion. --- ChangeLog | 4 ++++ generic/tclStringObj.c | 8 +++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 58e412b..a0b8793 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-06-15 Don Porter + + * generic/tclStringObj.c: sprintf() -> Tcl_ObjPrintf() conversion. + 2009-06-13 Don Porter * generic/tclCompile.c: The value stashed in iPtr->compiledProcPtr diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index e844e14..b1f232d 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.13 2009/06/10 21:38:13 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.14 2009/06/15 18:52:25 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -2379,10 +2379,8 @@ Tcl_AppendFormatToObj( } default: if (interp != NULL) { - char buf[40]; - - sprintf(buf, "bad field specifier \"%c\"", ch); - Tcl_SetObjResult(interp, Tcl_NewStringObj(buf, -1)); + Tcl_SetObjResult(interp, + Tcl_ObjPrintf("bad field specifier \"%c\"", ch)); } goto error; } -- cgit v0.12 From 32696239facf495e5bcf0d662143edb3009aef9e Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 1 Jul 2009 14:05:19 +0000 Subject: Handle the GetUserName API call appropriately for wide/narrow versions. [Bug 2806622] --- ChangeLog | 7 +++++++ win/tclWin32Dll.c | 8 +++++--- win/tclWinInit.c | 13 ++++++++----- win/tclWinInt.h | 3 ++- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index a0b8793..90e401e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-07-01 Pat Thoyts + + * win/tclWinInt.h: Handle the GetUserName API call via the + * win/tclWin32Dll.c: tclWinProcs indirection structure. This + * win/tclWinInit.c: fixes a problem obtaining the username when + the USERNAME environment variable is unset [Bug 2806622] + 2009-06-15 Don Porter * generic/tclStringObj.c: sprintf() -> Tcl_ObjPrintf() conversion. diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index 9e6a0f0..eca7ec8 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.54 2007/12/13 15:28:43 dgp Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.54.2.1 2009/07/01 14:05:19 patthoyts Exp $ */ #include "tclWinInt.h" @@ -134,7 +134,8 @@ static TclWinProcs asciiProcs = { NULL, NULL, NULL, NULL, NULL, NULL, /* ReadConsole and WriteConsole */ (BOOL (WINAPI *)(HANDLE, LPVOID, DWORD, LPDWORD, LPVOID)) ReadConsoleA, - (BOOL (WINAPI *)(HANDLE, const VOID*, DWORD, LPDWORD, LPVOID)) WriteConsoleA + (BOOL (WINAPI *)(HANDLE, const VOID*, DWORD, LPDWORD, LPVOID)) WriteConsoleA, + (BOOL (WINAPI *)(LPTSTR, LPDWORD)) GetUserNameA }; static TclWinProcs unicodeProcs = { @@ -192,7 +193,8 @@ static TclWinProcs unicodeProcs = { NULL, NULL, NULL, NULL, NULL, NULL, /* ReadConsole and WriteConsole */ (BOOL (WINAPI *)(HANDLE, LPVOID, DWORD, LPDWORD, LPVOID)) ReadConsoleW, - (BOOL (WINAPI *)(HANDLE, const VOID*, DWORD, LPDWORD, LPVOID)) WriteConsoleW + (BOOL (WINAPI *)(HANDLE, const VOID*, DWORD, LPDWORD, LPVOID)) WriteConsoleW, + (BOOL (WINAPI *)(LPTSTR, LPDWORD)) GetUserNameW }; TclWinProcs *tclWinProcs; diff --git a/win/tclWinInit.c b/win/tclWinInit.c index f0c2a9e..2d923c1 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinInit.c,v 1.75 2007/12/13 15:28:44 dgp Exp $ + * RCS: @(#) $Id: tclWinInit.c,v 1.75.2.1 2009/07/01 14:05:19 patthoyts Exp $ */ #include "tclWinInt.h" @@ -503,8 +503,8 @@ TclpSetVariables( OemId *oemId; OSVERSIONINFOA osInfo; Tcl_DString ds; - TCHAR szUserName[UNLEN+1]; - DWORD dwUserNameLen = sizeof(szUserName); + WCHAR szUserName[UNLEN+1]; + DWORD cchUserNameLen = UNLEN; Tcl_SetVar2Ex(interp, "tclDefaultLibrary", NULL, TclGetProcessGlobalValue(&defaultLibraryDir), TCL_GLOBAL_ONLY); @@ -573,12 +573,15 @@ TclpSetVariables( /* * Initialize the user name from the environment first, since this is much * faster than asking the system. + * Note: cchUserNameLen is number of characters including nul terminator. */ Tcl_DStringInit(&ds); if (TclGetEnv("USERNAME", &ds) == NULL) { - if (GetUserName(szUserName, &dwUserNameLen) != 0) { - Tcl_WinTCharToUtf(szUserName, (int) dwUserNameLen, &ds); + if (tclWinProcs->getUserName((LPTSTR)szUserName, &cchUserNameLen) != 0) { + int cbUserNameLen = cchUserNameLen - 1; + if (tclWinProcs->useWide) cbUserNameLen *= sizeof(WCHAR); + Tcl_WinTCharToUtf((LPTSTR)szUserName, cbUserNameLen, &ds); } } Tcl_SetVar2(interp, "tcl_platform", "user", Tcl_DStringValue(&ds), diff --git a/win/tclWinInt.h b/win/tclWinInt.h index 40aa67c..f8471d8 100644 --- a/win/tclWinInt.h +++ b/win/tclWinInt.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinInt.h,v 1.29 2005/11/03 01:16:07 patthoyts Exp $ + * RCS: @(#) $Id: tclWinInt.h,v 1.29.10.1 2009/07/01 14:05:19 patthoyts Exp $ */ #ifndef _TCLWININT @@ -144,6 +144,7 @@ typedef struct TclWinProcs { LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved ); + BOOL (WINAPI *getUserName)(LPTSTR lpBuffer, LPDWORD lpnSize); } TclWinProcs; MODULE_SCOPE TclWinProcs *tclWinProcs; -- cgit v0.12 From 96886634efaa755005489a262696057f0611f32f Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 1 Jul 2009 15:29:48 +0000 Subject: Cast wide integer to int conversion and some signed/unsigned conversions. (silence msvc6 warnings) --- generic/tclExecute.c | 22 +++++++++++----------- generic/tclStringObj.c | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 2c9685f..a63508e 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.10 2009/06/02 19:10:21 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.11 2009/07/01 15:29:48 patthoyts Exp $ */ #include "tclInt.h" @@ -5752,7 +5752,7 @@ TclExecuteByteCode( goto overflow; } #if (LONG_MAX == 0x7fffffff) - if (l2 - 2 < MaxBase32Size + if (l2 - 2 < (long)MaxBase32Size && l1 <= MaxBase32[l2 - 2] && l1 >= -MaxBase32[l2 - 2]) { /* @@ -5797,8 +5797,8 @@ TclExecuteByteCode( TRACE(("%s\n", O2S(valuePtr))); NEXT_INST_F(1, 1, 0); } - if (l1 - 3 >= 0 && l1 - 2 < Exp32IndexSize - && l2 - 2 < Exp32ValueSize + MaxBase32Size) { + if (l1 - 3 >= 0 && l1 - 2 < (long)Exp32IndexSize + && l2 - 2 < (long)(Exp32ValueSize + MaxBase32Size)) { unsigned short base = Exp32Index[l1 - 3] + (unsigned short) (l2 - 2 - MaxBase32Size); @@ -5819,8 +5819,8 @@ TclExecuteByteCode( NEXT_INST_F(1, 1, 0); } } - if (-l1 - 3 >= 0 && -l1 - 2 < Exp32IndexSize - && l2 - 2 < Exp32ValueSize + MaxBase32Size) { + if (-l1 - 3 >= 0 && -l1 - 2 < (long)Exp32IndexSize + && l2 - 2 < (long)(Exp32ValueSize + MaxBase32Size)) { unsigned short base = Exp32Index[-l1 - 3] + (unsigned short) (l2 - 2 - MaxBase32Size); if (base < Exp32Index[-l1 - 2]) { @@ -5855,7 +5855,7 @@ TclExecuteByteCode( } else { goto overflow; } - if (l2 - 2 < MaxBase64Size + if (l2 - 2 < (long)MaxBase64Size && w1 <= MaxBase64[l2 - 2] && w1 >= -MaxBase64[l2 - 2]) { /* @@ -5947,8 +5947,8 @@ TclExecuteByteCode( * Handle cases of powers > 16 that still fit in a 64-bit word by * doing table lookup. */ - if (w1 - 3 >= 0 && w1 - 2 < Exp64IndexSize - && l2 - 2 < Exp64ValueSize + MaxBase64Size) { + if (w1 - 3 >= 0 && w1 - 2 < (long)Exp64IndexSize + && l2 - 2 < (long)(Exp64ValueSize + MaxBase64Size)) { unsigned short base = Exp64Index[w1 - 3] + (unsigned short) (l2 - 2 - MaxBase64Size); @@ -5970,8 +5970,8 @@ TclExecuteByteCode( } } - if (-w1 - 3 >= 0 && -w1 - 2 < Exp64IndexSize - && l2 - 2 < Exp64ValueSize + MaxBase64Size) { + if (-w1 - 3 >= 0 && -w1 - 2 < (long)Exp64IndexSize + && l2 - 2 < (long)(Exp64ValueSize + MaxBase64Size)) { unsigned short base = Exp64Index[-w1 - 3] + (unsigned short) (l2 - 2 - MaxBase64Size); diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index b1f232d..7c0ccaf 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.14 2009/06/15 18:52:25 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.15 2009/07/01 15:29:48 patthoyts Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -2265,9 +2265,9 @@ Tcl_AppendFormatToObj( numDigits = 1; } pure = Tcl_NewObj(); - Tcl_SetObjLength(pure, numDigits); + Tcl_SetObjLength(pure, (int)numDigits); bytes = TclGetString(pure); - toAppend = length = numDigits; + toAppend = length = (int)numDigits; while (numDigits--) { int digitOffset; -- cgit v0.12 From b28a38b6fe8f6cacbdf12b371e2e5b169b5ec0a0 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 14 Jul 2009 16:31:48 +0000 Subject: * generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter, TclArgumentBCRelease, TclArgumentGet): * generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode, TclInitCompileEnv, TclCompileScript): * generic/tclCompile.h (ExtCmdLoc): * generic/tclExecute.c (TclExecuteByteCode): * generic/tclInt.h (ExtIndex, CFWordBC): * tests/info.test (info-39.0): Backport of some changes made to the Tcl head, to handle literal sharing better. The code here is much simpler (trimmed down) compared to the head as the 8.4 branch is not bytecode compiling whole files, and doesn't compile eval'd code either. Reworked the handling of literal command arguments in bytecode to be saved (compiler) and used (execution) per command (See the TCL_INVOKE_STK* instructions), and not per the whole bytecode. This removes the problems with location data caused by literal sharing in proc bodies. Simplified the associated datastructures (ExtIndex is gone, as is the function EnterCmdWordIndex). --- ChangeLog | 23 +++++++++ generic/tclBasic.c | 140 ++++++++++++++++++++++++++++++++------------------- generic/tclCompile.c | 71 ++++++-------------------- generic/tclCompile.h | 13 +++-- generic/tclExecute.c | 14 +++--- generic/tclInt.h | 20 +++----- tests/info.test | 20 +++++++- 7 files changed, 169 insertions(+), 132 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad05f98..d2abbe5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2009-07-14 Andreas Kupries + + * generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter, + TclArgumentBCRelease, TclArgumentGet): + * generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode, + TclInitCompileEnv, TclCompileScript): + * generic/tclCompile.h (ExtCmdLoc): + * generic/tclExecute.c (TclExecuteByteCode): + * generic/tclInt.h (ExtIndex, CFWordBC): + * tests/info.test (info-39.0): + + Backport of some changes made to the Tcl head, to handle literal + sharing better. The code here is much simpler (trimmed down) + compared to the head as the 8.4 branch is not bytecode compiling + whole files, and doesn't compile eval'd code either. + + Reworked the handling of literal command arguments in bytecode to + be saved (compiler) and used (execution) per command (See the + TCL_INVOKE_STK* instructions), and not per the whole bytecode. + This removes the problems with location data caused by literal + sharing in proc bodies. Simplified the associated datastructures + (ExtIndex is gone, as is the function EnterCmdWordIndex). + 2009-06-13 Don Porter * generic/tclCompile.c: The value stashed in iPtr->compiledProcPtr diff --git a/generic/tclBasic.c b/generic/tclBasic.c index dbdcd7c..78bc47f 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.34 2008/08/14 02:12:25 das Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.35 2009/07/14 16:31:48 andreas_kupries Exp $ */ #include "tclInt.h" @@ -50,7 +50,6 @@ static int EvalEx _ANSI_ARGS_((Tcl_Interp *interp, CONST char *script static int EvalTokensStandard _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Token *tokenPtr, int count, int line)); - #endif #ifdef USE_DTRACE @@ -1202,9 +1201,7 @@ DeleteInterpProc(interp) ckfree ((char*) eclPtr->loc); } - if (eclPtr->eiloc != NULL) { - ckfree ((char*) eclPtr->eiloc); - } + Tcl_DeleteHashTable (&eclPtr->litInfo); ckfree ((char*) eclPtr); Tcl_DeleteHashEntry (hPtr); @@ -4454,46 +4451,68 @@ TclArgumentRelease(interp,objv,objc) */ void -TclArgumentBCEnter(interp,codePtr,cfPtr) +TclArgumentBCEnter(interp, objv, objc, codePtr, cfPtr, pc) Tcl_Interp* interp; + Tcl_Obj* objv[]; + int objc; void* codePtr; CmdFrame* cfPtr; + int pc; { Interp* iPtr = (Interp*) interp; Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); if (hePtr) { ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); - int i; + hePtr = Tcl_FindHashEntry(&eclPtr->litInfo, (char*) pc); - for (i=0; i < eclPtr->nueiloc; i++) { + if (hePtr) { + int word; + int cmd = (int) Tcl_GetHashValue(hePtr); + ECL* ePtr = &eclPtr->loc[cmd]; - ExtIndex* eiPtr = &eclPtr->eiloc[i]; - Tcl_Obj* obj = eiPtr->obj; - int new; - Tcl_HashEntry* hPtr; - CFWordBC* cfwPtr; + /* + * A few truths ... + * (1) ePtr->nline == objc + * (2) (ePtr->line[word] < 0) => !literal, for all words + * (3) (word == 0) => !literal + * + * Item (2) is why we can use objv to get the literals, and do not + * have to save them at compile time. + */ - hPtr = Tcl_CreateHashEntry (iPtr->lineLABCPtr, (char*) obj, &new); - if (new) { - /* - * The word is not on the stack yet, remember the current location - * and initialize references. - */ - cfwPtr = (CFWordBC*) ckalloc (sizeof (CFWordBC)); - cfwPtr->framePtr = cfPtr; - cfwPtr->eiPtr = eiPtr; - cfwPtr->refCount = 1; - Tcl_SetHashValue (hPtr, cfwPtr); - } else { - /* - * The word is already on the stack, its current location is not - * relevant. Just remember the reference to prevent early removal. - */ - cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); - cfwPtr->refCount ++; - } - } /* for */ + for (word = 1; word < objc; word++) { + if (ePtr->line[word] >= 0) { + int isnew; + Tcl_HashEntry* hPtr = + Tcl_CreateHashEntry (iPtr->lineLABCPtr, + (char*) objv[word], &isnew); + CFWordBC* cfwPtr = (CFWordBC*) ckalloc (sizeof (CFWordBC)); + + cfwPtr->framePtr = cfPtr; + cfwPtr->pc = pc; + cfwPtr->word = word; + + if (isnew) { + /* + * The word is not on the stack yet, remember the + * current location and initialize references. + */ + cfwPtr->prevPtr = NULL; + } else { + /* + * The object is already on the stack, however it may + * have a different location now (literal sharing may + * map multiple location to a single Tcl_Obj*. Save + * the old information in the new structure. + */ + cfwPtr->prevPtr = (CFWordBC*) Tcl_GetHashValue(hPtr); + } + + Tcl_SetHashValue (hPtr, cfwPtr); + } + } /* for */ + } /* if */ } /* if */ } @@ -4518,33 +4537,48 @@ TclArgumentBCEnter(interp,codePtr,cfPtr) */ void -TclArgumentBCRelease(interp,codePtr) +TclArgumentBCRelease(interp, objv, objc, codePtr, pc) Tcl_Interp* interp; + Tcl_Obj* objv[]; + int objc; void* codePtr; + int pc; { Interp* iPtr = (Interp*) interp; Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); if (hePtr) { ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); - int i; - - for (i=0; i < eclPtr->nueiloc; i++) { - Tcl_Obj* obj = eclPtr->eiloc[i].obj; - Tcl_HashEntry* hPtr = Tcl_FindHashEntry (iPtr->lineLABCPtr, (char *) obj); - CFWordBC* cfwPtr; - - if (!hPtr) { continue; } - - cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); + hePtr = Tcl_FindHashEntry(&eclPtr->litInfo, (char*) pc); - cfwPtr->refCount --; - if (cfwPtr->refCount > 0) { continue; } + if (hePtr) { + int cmd = (int) Tcl_GetHashValue(hePtr); + ECL* ePtr = &eclPtr->loc[cmd]; + int word; - ckfree ((char*) cfwPtr); - Tcl_DeleteHashEntry (hPtr); - } /* for */ - } /* if */ + /* + * Iterate in reverse order, to properly match our pop to the push + * in TclArgumentBCEnter(). + */ + for (word = objc-1; word >= 1; word--) { + if (ePtr->line[word] >= 0) { + Tcl_HashEntry* hPtr = Tcl_FindHashEntry(iPtr->lineLABCPtr, + (char *) objv[word]); + if (hPtr) { + CFWordBC* cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); + + if (cfwPtr->prevPtr) { + Tcl_SetHashValue(hPtr, cfwPtr->prevPtr); + } else { + Tcl_DeleteHashEntry(hPtr); + } + + ckfree((char *) cfwPtr); + } + } + } + } + } } /* @@ -4608,12 +4642,12 @@ TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) hPtr = Tcl_FindHashEntry (iPtr->lineLABCPtr, (char *) obj); if (hPtr) { CFWordBC* cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); - ExtIndex* eiPtr = cfwPtr->eiPtr; framePtr = cfwPtr->framePtr; - framePtr->data.tebc.pc = ((ByteCode*) framePtr->data.tebc.codePtr)->codeStart + eiPtr->pc; + framePtr->data.tebc.pc = ((ByteCode*) + framePtr->data.tebc.codePtr)->codeStart + cfwPtr->pc; *cfPtrPtr = cfwPtr->framePtr; - *wordPtr = eiPtr->word; + *wordPtr = cfwPtr->word; return; } } diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 98ccc50..b6d486e 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.14 2009/06/13 14:38:44 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.15 2009/07/14 16:31:49 andreas_kupries Exp $ */ #include "tclInt.h" @@ -308,9 +308,6 @@ static void EnterCmdWordData _ANSI_ARGS_(( ExtCmdLoc *eclPtr, int srcOffset, Tcl_Token* tokenPtr, CONST char* cmd, int len, int numWords, int line, int** lines)); - -static void EnterCmdWordIndex _ANSI_ARGS_(( - ExtCmdLoc *eclPtr, Tcl_Obj* obj, int pc, int word)); #endif @@ -709,7 +706,7 @@ TclCleanupByteCode(codePtr) if (eclPtr->type == TCL_LOCATION_SOURCE) { Tcl_DecrRefCount (eclPtr->path); } - for (i=0; i< eclPtr->nuloc; i++) { + for (i=0; i < eclPtr->nuloc; i++) { ckfree ((char*) eclPtr->loc[i].line); } @@ -717,10 +714,7 @@ TclCleanupByteCode(codePtr) ckfree ((char*) eclPtr->loc); } - /* Release index of literals as well. */ - if (eclPtr->eiloc != NULL) { - ckfree((char *) eclPtr->eiloc); - } + Tcl_DeleteHashTable (&eclPtr->litInfo); ckfree ((char*) eclPtr); Tcl_DeleteHashEntry (hePtr); @@ -815,9 +809,7 @@ TclInitCompileEnv(interp, envPtr, string, numBytes, invoker, word) envPtr->extCmdMapPtr->nloc = 0; envPtr->extCmdMapPtr->nuloc = 0; envPtr->extCmdMapPtr->path = NULL; - envPtr->extCmdMapPtr->eiloc = NULL; - envPtr->extCmdMapPtr->neiloc = 0; - envPtr->extCmdMapPtr->nueiloc = 0; + Tcl_InitHashTable(&envPtr->extCmdMapPtr->litInfo, TCL_ONE_WORD_KEYS); if (invoker == NULL || (invoker->type == TCL_LOCATION_EVAL_LIST)) { @@ -1276,14 +1268,6 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) objIndex = TclRegisterNewLiteral(envPtr, tokenPtr[1].start, tokenPtr[1].size); -#ifdef TCL_TIP280 - if (eclPtr->type == TCL_LOCATION_SOURCE) { - EnterCmdWordIndex (eclPtr, - envPtr->literalArrayPtr[objIndex].objPtr, - envPtr->codeNext - envPtr->codeStart, - wordIdx); - } -#endif } TclEmitPush(objIndex, envPtr); } else { @@ -1304,6 +1288,16 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) */ if (wordIdx > 0) { +#ifdef TCL_TIP280 + /* + * Save PC -> command map for the TclArgumentBC* functions. + */ + + int isnew; + Tcl_HashEntry* hePtr = Tcl_CreateHashEntry(&eclPtr->litInfo, + (char*) (envPtr->codeNext - envPtr->codeStart), &isnew); + Tcl_SetHashValue(hePtr, (char*) wlineat); +#endif if (wordIdx <= 255) { TclEmitInstInt1(INST_INVOKE_STK1, wordIdx, envPtr); } else { @@ -1326,7 +1320,7 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) * the reduced form now */ ckfree ((char*) eclPtr->loc [wlineat].line); - eclPtr->loc [wlineat].line = wlines; + eclPtr->loc [wlineat].line = wlines; #endif } /* end if parse.numWords > 0 */ @@ -2462,7 +2456,7 @@ EnterCmdWordData(eclPtr, srcOffset, tokenPtr, cmd, len, numWords, line, wlines) size_t currBytes = currElems * sizeof(ECL); size_t newBytes = newElems * sizeof(ECL); ECL * newPtr = (ECL *) ckalloc((unsigned) newBytes); - + /* * Copy from old ECL array to new, free old ECL array if * needed. @@ -2500,39 +2494,6 @@ EnterCmdWordData(eclPtr, srcOffset, tokenPtr, cmd, len, numWords, line, wlines) *wlines = wwlines; eclPtr->nuloc ++; } - -static void -EnterCmdWordIndex (eclPtr, obj, pc, word) - ExtCmdLoc *eclPtr; - Tcl_Obj* obj; - int pc; - int word; -{ - ExtIndex* eiPtr; - - if (eclPtr->nueiloc >= eclPtr->neiloc) { - /* - * Expand the ExtIndex array by allocating more storage from the heap. The - * currently allocated ECL entries are stored from eclPtr->loc[0] up - * to eclPtr->loc[eclPtr->nuloc-1] (inclusive). - */ - - size_t currElems = eclPtr->neiloc; - size_t newElems = (currElems ? 2*currElems : 1); - size_t newBytes = newElems * sizeof(ExtIndex); - - eclPtr->eiloc = (ExtIndex *) ckrealloc((char *)(eclPtr->eiloc), newBytes); - eclPtr->neiloc = newElems; - } - - eiPtr = &eclPtr->eiloc[eclPtr->nueiloc]; - - eiPtr->obj = obj; - eiPtr->pc = pc; - eiPtr->word = word; - - eclPtr->nueiloc ++; -} #endif /* diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 69b0c82..b3431f8 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.33.2.6 2008/08/14 02:12:27 das Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.33.2.7 2009/07/14 16:31:49 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -140,15 +140,20 @@ typedef struct ECL { int nline; /* Number of words in the command */ int* line; /* line information for all words in the command */ } ECL; + typedef struct ExtCmdLoc { int type; /* Context type */ Tcl_Obj* path; /* Path of the sourced file the command is in */ ECL* loc; /* Command word locations (lines) */ int nloc; /* Number of allocated entries in 'loc' */ int nuloc; /* Number of used entries in 'loc' */ - ExtIndex* eiloc; - int neiloc; - int nueiloc; + Tcl_HashTable litInfo; /* Indexed by bytecode 'PC', to have the + * information accessible per command and + * argument, not per whole bytecode. Value is + * index of command in 'loc', giving us the + * literals to associate with line + * information as command argument, see + * TclArgumentBCEnter() */ } ExtCmdLoc; #endif diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 065024c..8dcf877 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.28 2009/03/20 14:22:54 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.29 2009/07/14 16:31:49 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1245,8 +1245,6 @@ TclExecuteByteCode(interp, codePtr) bcFrame.data.tebc.pc = NULL; bcFrame.cmd.str.cmd = NULL; bcFrame.cmd.str.len = 0; - - TclArgumentBCEnter((Tcl_Interp*) iPtr,codePtr,&bcFrame); #endif #ifdef TCL_COMPILE_DEBUG @@ -1584,12 +1582,18 @@ TclExecuteByteCode(interp, codePtr) #ifdef TCL_TIP280 bcFrame.data.tebc.pc = pc; iPtr->cmdFramePtr = &bcFrame; + TclArgumentBCEnter((Tcl_Interp*) iPtr, objv, objc, + codePtr, &bcFrame, + pc - codePtr->codeStart); #endif DECACHE_STACK_INFO(); Tcl_ResetResult(interp); result = TclEvalObjvInternal(interp, objc, objv, bytes, length, 0); CACHE_STACK_INFO(); #ifdef TCL_TIP280 + TclArgumentBCRelease((Tcl_Interp*) iPtr, objv, objc, + codePtr, + pc - codePtr->codeStart); iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; #endif @@ -4523,10 +4527,6 @@ TclExecuteByteCode(interp, codePtr) } eePtr->stackTop = initStackTop; -#ifdef TCL_TIP280 - TclArgumentBCRelease((Tcl_Interp*) iPtr,codePtr); -#endif - return result; #undef STATIC_CATCH_STACK_SIZE } diff --git a/generic/tclInt.h b/generic/tclInt.h index 43870e7..fc56e6e 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.33 2009/04/27 22:10:28 ferrieux Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.34 2009/07/14 16:31:49 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -917,17 +917,11 @@ typedef struct CFWord { int refCount; /* #times the word is on the stack */ } CFWord; -typedef struct ExtIndex { - Tcl_Obj* obj; /* Reference to the word */ - int pc; /* Instruction pointer of a command in ExtCmdLoc.loc[.] */ - int word; /* Index of word in ExtCmdLoc.loc[cmd]->line[.] */ -} ExtIndex; - - typedef struct CFWordBC { CmdFrame* framePtr; /* CmdFrame to acess */ - ExtIndex* eiPtr; /* Word info: PC and index */ - int refCount; /* #times the word is on the stack */ + int pc; /* Instruction pointer of a command in ExtCmdLoc.loc[.] */ + int word; /* Index of word in ExtCmdLoc.loc[cmd]->{line,literal}[.] */ + struct CFWordBC* prevPtr; } CFWordBC; #endif /* TCL_TIP280 */ @@ -1873,9 +1867,11 @@ EXTERN void TclArgumentEnter _ANSI_ARGS_((Tcl_Interp* interp, EXTERN void TclArgumentRelease _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj* objv[], int objc)); EXTERN void TclArgumentBCEnter _ANSI_ARGS_((Tcl_Interp* interp, - void* codePtr, CmdFrame* cfPtr)); + Tcl_Obj* objv[], int objc, + void* codePtr, CmdFrame* cfPtr, int pc)); EXTERN void TclArgumentBCRelease _ANSI_ARGS_((Tcl_Interp* interp, - void* codePtr)); + Tcl_Obj* objv[], int objc, + void* codePtr, int pc)); EXTERN void TclArgumentGet _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj* obj, CmdFrame** cfPtrPtr, int* wordPtr)); diff --git a/tests/info.test b/tests/info.test index b30a4be..b655e30 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.11 2008/07/28 20:01:12 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.12 2009/07/14 16:31:49 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1205,6 +1205,24 @@ test info-38.6 {location information for uplevel, ppl, proc-proc-literal} -const * {type source line 1200 file info.test cmd datal proc ::tcltest::RunTest}} # ------------------------------------------------------------------------- +# literal sharing + +test info-39.0 {location information not confused by literal sharing} -constraints tip280 -body { + namespace eval ::foo {} + proc ::foo::bar {} { + lappend res {} + lappend res [reduce [eval {info frame 0}]] + lappend res [reduce [eval {info frame 0}]] + return $res + } + set res [::foo::bar] + namespace delete ::foo + join $res \n +} -result { +type source line 1214 file info.test cmd {info frame 0} proc ::foo::bar level 0 +type source line 1215 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +# ------------------------------------------------------------------------- # cleanup catch {namespace delete test_ns_info1 test_ns_info2} -- cgit v0.12 From 06eaea4df70451d16154d922e94eaba288cc8839 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 14 Jul 2009 16:33:12 +0000 Subject: * generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter, TclArgumentBCRelease, TclArgumentGet): * generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode, TclInitCompileEnv, TclCompileScript): * generic/tclCompile.h (ExtCmdLoc): * generic/tclExecute.c (TclExecuteByteCode): * generic/tclInt.h (ExtIndex, CFWordBC): * tests/info.test (info-39.0): Backport of some changes made to the Tcl head, to handle literal sharing better. The code here is much simpler (trimmed down) compared to the head as the 8.5 branch is not bytecode compiling whole files, and doesn't compile eval'd code either. Reworked the handling of literal command arguments in bytecode to be saved (compiler) and used (execution) per command (See the TCL_INVOKE_STK* instructions), and not per the whole bytecode. This removes the problems with location data caused by literal sharing in proc bodies. Simplified the associated datastructures (ExtIndex is gone, as is the function EnterCmdWordIndex). --- ChangeLog | 23 +++++++++ generic/tclBasic.c | 137 ++++++++++++++++++++++++++++++++------------------- generic/tclCompile.c | 63 +++++------------------ generic/tclCompile.h | 12 +++-- generic/tclExecute.c | 12 +++-- generic/tclInt.h | 20 +++----- tests/info.test | 20 +++++++- 7 files changed, 163 insertions(+), 124 deletions(-) diff --git a/ChangeLog b/ChangeLog index 90e401e..2382491 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2009-07-14 Andreas Kupries + + * generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter, + TclArgumentBCRelease, TclArgumentGet): + * generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode, + TclInitCompileEnv, TclCompileScript): + * generic/tclCompile.h (ExtCmdLoc): + * generic/tclExecute.c (TclExecuteByteCode): + * generic/tclInt.h (ExtIndex, CFWordBC): + * tests/info.test (info-39.0): + + Backport of some changes made to the Tcl head, to handle literal + sharing better. The code here is much simpler (trimmed down) + compared to the head as the 8.5 branch is not bytecode compiling + whole files, and doesn't compile eval'd code either. + + Reworked the handling of literal command arguments in bytecode to + be saved (compiler) and used (execution) per command (See the + TCL_INVOKE_STK* instructions), and not per the whole bytecode. + This removes the problems with location data caused by literal + sharing in proc bodies. Simplified the associated datastructures + (ExtIndex is gone, as is the function EnterCmdWordIndex). + 2009-07-01 Pat Thoyts * win/tclWinInt.h: Handle the GetUserName API call via the diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 9a159be..8ce2527 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.9 2008/08/14 02:12:06 das Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.10 2009/07/14 16:33:12 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1409,9 +1409,7 @@ DeleteInterpProc( ckfree((char *) eclPtr->loc); } - if (eclPtr->eiloc != NULL) { - ckfree((char *) eclPtr->eiloc); - } + Tcl_DeleteHashTable (&eclPtr->litInfo); ckfree((char *) eclPtr); Tcl_DeleteHashEntry(hPtr); @@ -4626,46 +4624,68 @@ TclArgumentRelease(interp,objv,objc) */ void -TclArgumentBCEnter(interp,codePtr,cfPtr) +TclArgumentBCEnter(interp,objv,objc,codePtr,cfPtr,pc) Tcl_Interp* interp; + Tcl_Obj* objv[]; + int objc; void* codePtr; CmdFrame* cfPtr; + int pc; { Interp* iPtr = (Interp*) interp; Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); if (hePtr) { ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); - int i; + hePtr = Tcl_FindHashEntry(&eclPtr->litInfo, (char*) pc); - for (i=0; i < eclPtr->nueiloc; i++) { + if (hePtr) { + int cmd = (int) Tcl_GetHashValue(hePtr); + ECL* ePtr = &eclPtr->loc[cmd]; + int word; - ExtIndex* eiPtr = &eclPtr->eiloc[i]; - Tcl_Obj* obj = eiPtr->obj; - int new; - Tcl_HashEntry* hPtr; - CFWordBC* cfwPtr; + /* + * A few truths ... + * (1) ePtr->nline == objc + * (2) (ePtr->line[word] < 0) => !literal, for all words + * (3) (word == 0) => !literal + * + * Item (2) is why we can use objv to get the literals, and do not + * have to save them at compile time. + */ - hPtr = Tcl_CreateHashEntry (iPtr->lineLABCPtr, (char*) obj, &new); - if (new) { - /* - * The word is not on the stack yet, remember the current location - * and initialize references. - */ - cfwPtr = (CFWordBC*) ckalloc (sizeof (CFWordBC)); - cfwPtr->framePtr = cfPtr; - cfwPtr->eiPtr = eiPtr; - cfwPtr->refCount = 1; - Tcl_SetHashValue (hPtr, cfwPtr); - } else { - /* - * The word is already on the stack, its current location is not - * relevant. Just remember the reference to prevent early removal. - */ - cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); - cfwPtr->refCount ++; - } - } /* for */ + for (word = 1; word < objc; word++) { + if (ePtr->line[word] >= 0) { + int isnew; + Tcl_HashEntry* hPtr = + Tcl_CreateHashEntry (iPtr->lineLABCPtr, + (char*) objv[word], &isnew); + CFWordBC* cfwPtr = (CFWordBC*) ckalloc (sizeof (CFWordBC)); + + cfwPtr->framePtr = cfPtr; + cfwPtr->pc = pc; + cfwPtr->word = word; + + if (isnew) { + /* + * The word is not on the stack yet, remember the + * current location and initialize references. + */ + cfwPtr->prevPtr = NULL; + } else { + /* + * The object is already on the stack, however it may + * have a different location now (literal sharing may + * map multiple location to a single Tcl_Obj*. Save + * the old information in the new structure. + */ + cfwPtr->prevPtr = (CFWordBC*) Tcl_GetHashValue(hPtr); + } + + Tcl_SetHashValue (hPtr, cfwPtr); + } + } /* for */ + } /* if */ } /* if */ } @@ -4690,33 +4710,48 @@ TclArgumentBCEnter(interp,codePtr,cfPtr) */ void -TclArgumentBCRelease(interp,codePtr) +TclArgumentBCRelease(interp,objv,objc,codePtr,pc) Tcl_Interp* interp; + Tcl_Obj* objv[]; + int objc; void* codePtr; + int pc; { Interp* iPtr = (Interp*) interp; Tcl_HashEntry* hePtr = Tcl_FindHashEntry (iPtr->lineBCPtr, (char *) codePtr); if (hePtr) { ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); - int i; + hePtr = Tcl_FindHashEntry(&eclPtr->litInfo, (char*) pc); - for (i=0; i < eclPtr->nueiloc; i++) { - Tcl_Obj* obj = eclPtr->eiloc[i].obj; - Tcl_HashEntry* hPtr = Tcl_FindHashEntry (iPtr->lineLABCPtr, (char *) obj); - CFWordBC* cfwPtr; + if (hePtr) { + int cmd = (int) Tcl_GetHashValue(hePtr); + ECL* ePtr = &eclPtr->loc[cmd]; + int word; - if (!hPtr) { continue; } - - cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); - - cfwPtr->refCount --; - if (cfwPtr->refCount > 0) { continue; } + /* + * Iterate in reverse order, to properly match our pop to the push + * in TclArgumentBCEnter(). + */ + for (word = objc-1; word >= 1; word--) { + if (ePtr->line[word] >= 0) { + Tcl_HashEntry* hPtr = Tcl_FindHashEntry(iPtr->lineLABCPtr, + (char *) objv[word]); + if (hPtr) { + CFWordBC* cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); + + if (cfwPtr->prevPtr) { + Tcl_SetHashValue(hPtr, cfwPtr->prevPtr); + } else { + Tcl_DeleteHashEntry(hPtr); + } - ckfree ((char*) cfwPtr); - Tcl_DeleteHashEntry (hPtr); - } /* for */ - } /* if */ + ckfree((char *) cfwPtr); + } + } + } + } + } } /* @@ -4779,15 +4814,15 @@ TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) */ hPtr = Tcl_FindHashEntry (iPtr->lineLABCPtr, (char *) obj); + if (hPtr) { CFWordBC* cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); - ExtIndex* eiPtr = cfwPtr->eiPtr; framePtr = cfwPtr->framePtr; framePtr->data.tebc.pc = (char *) (((ByteCode*) - framePtr->data.tebc.codePtr)->codeStart + eiPtr->pc); + framePtr->data.tebc.codePtr)->codeStart + cfwPtr->pc); *cfPtrPtr = cfwPtr->framePtr; - *wordPtr = eiPtr->word; + *wordPtr = cfwPtr->word; return; } } diff --git a/generic/tclCompile.c b/generic/tclCompile.c index c7b311b..e671fcf 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.7 2009/06/13 14:25:12 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.8 2009/07/14 16:33:12 andreas_kupries Exp $ */ #include "tclInt.h" @@ -414,9 +414,6 @@ static void EnterCmdExtentData(CompileEnv *envPtr, int cmdNumber, int numSrcBytes, int numCodeBytes); static void EnterCmdStartData(CompileEnv *envPtr, int cmdNumber, int srcOffset, int codeOffset); - -static void EnterCmdWordIndex (ExtCmdLoc *eclPtr, Tcl_Obj* obj, - int pc, int word); static void FreeByteCodeInternalRep(Tcl_Obj *objPtr); static int GetCmdLocEncodingSize(CompileEnv *envPtr); #ifdef TCL_COMPILE_STATS @@ -817,10 +814,7 @@ TclCleanupByteCode( ckfree((char *) eclPtr->loc); } - /* Release index of literals as well. */ - if (eclPtr->eiloc != NULL) { - ckfree((char *) eclPtr->eiloc); - } + Tcl_DeleteHashTable (&eclPtr->litInfo); ckfree((char *) eclPtr); Tcl_DeleteHashEntry(hePtr); @@ -912,9 +906,7 @@ TclInitCompileEnv( envPtr->extCmdMapPtr->nloc = 0; envPtr->extCmdMapPtr->nuloc = 0; envPtr->extCmdMapPtr->path = NULL; - envPtr->extCmdMapPtr->eiloc = NULL; - envPtr->extCmdMapPtr->neiloc = 0; - envPtr->extCmdMapPtr->nueiloc = 0; + Tcl_InitHashTable(&envPtr->extCmdMapPtr->litInfo, TCL_ONE_WORD_KEYS); if (invoker == NULL || (invoker->type == TCL_LOCATION_EVAL_LIST)) { @@ -1473,13 +1465,6 @@ TclCompileScript( */ objIndex = TclRegisterNewLiteral(envPtr, tokenPtr[1].start, tokenPtr[1].size); - - if (eclPtr->type == TCL_LOCATION_SOURCE) { - EnterCmdWordIndex (eclPtr, - envPtr->literalArrayPtr[objIndex].objPtr, - envPtr->codeNext - envPtr->codeStart, - wordIdx); - } } TclEmitPush(objIndex, envPtr); } /* for loop */ @@ -1509,6 +1494,15 @@ TclCompileScript( TclEmitOpcode(INST_INVOKE_EXPANDED, envPtr); TclAdjustStackDepth((1-wordIdx), envPtr); } else if (wordIdx > 0) { + /* + * Save PC -> command map for the TclArgumentBC* functions. + */ + + int isnew; + Tcl_HashEntry* hePtr = Tcl_CreateHashEntry(&eclPtr->litInfo, + (char*) (envPtr->codeNext - envPtr->codeStart), &isnew); + Tcl_SetHashValue(hePtr, (char*) wlineat); + if (wordIdx <= 255) { TclEmitInstInt1(INST_INVOKE_STK1, wordIdx, envPtr); } else { @@ -2448,39 +2442,6 @@ EnterCmdWordData( eclPtr->nuloc ++; } -static void -EnterCmdWordIndex ( - ExtCmdLoc *eclPtr, - Tcl_Obj* obj, - int pc, - int word) -{ - ExtIndex* eiPtr; - - if (eclPtr->nueiloc >= eclPtr->neiloc) { - /* - * Expand the ExtIndex array by allocating more storage from the heap. The - * currently allocated ECL entries are stored from eclPtr->loc[0] up - * to eclPtr->loc[eclPtr->nuloc-1] (inclusive). - */ - - size_t currElems = eclPtr->neiloc; - size_t newElems = (currElems ? 2*currElems : 1); - size_t newBytes = newElems * sizeof(ExtIndex); - - eclPtr->eiloc = (ExtIndex *) ckrealloc((char *)(eclPtr->eiloc), newBytes); - eclPtr->neiloc = newElems; - } - - eiPtr = &eclPtr->eiloc[eclPtr->nueiloc]; - - eiPtr->obj = obj; - eiPtr->pc = pc; - eiPtr->word = word; - - eclPtr->nueiloc ++; -} - /* *---------------------------------------------------------------------- * diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 1e32569..2eb8489 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.90.2.5 2008/08/14 02:22:15 das Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.90.2.6 2009/07/14 16:33:12 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -141,9 +141,13 @@ typedef struct ExtCmdLoc { ECL *loc; /* Command word locations (lines). */ int nloc; /* Number of allocated entries in 'loc'. */ int nuloc; /* Number of used entries in 'loc'. */ - ExtIndex* eiloc; - int neiloc; - int nueiloc; + Tcl_HashTable litInfo; /* Indexed by bytecode 'PC', to have the + * information accessible per command and + * argument, not per whole bytecode. Value is + * index of command in 'loc', giving us the + * literals to associate with line information + * as command argument, see + * TclArgumentBCEnter() */ } ExtCmdLoc; /* diff --git a/generic/tclExecute.c b/generic/tclExecute.c index a63508e..7974db5 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.369.2.11 2009/07/01 15:29:48 patthoyts Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.369.2.12 2009/07/14 16:33:12 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1730,8 +1730,6 @@ TclExecuteByteCode( bcFramePtr->cmd.str.cmd = NULL; bcFramePtr->cmd.str.len = 0; - TclArgumentBCEnter((Tcl_Interp*) iPtr,codePtr,bcFramePtr); - #ifdef TCL_COMPILE_DEBUG if (tclTraceExec >= 2) { PrintByteCodeInfo(codePtr); @@ -2322,10 +2320,16 @@ TclExecuteByteCode( bcFramePtr->data.tebc.pc = (char *) pc; iPtr->cmdFramePtr = bcFramePtr; + TclArgumentBCEnter((Tcl_Interp*) iPtr, objv, objc, + codePtr, bcFramePtr, + pc - codePtr->codeStart); DECACHE_STACK_INFO(); result = TclEvalObjvInternal(interp, objc, objv, /* call from TEBC */(char *) -1, -1, 0); CACHE_STACK_INFO(); + TclArgumentBCRelease((Tcl_Interp*) iPtr, objv, objc, + codePtr, + pc - codePtr->codeStart); iPtr->cmdFramePtr = iPtr->cmdFramePtr->nextPtr; if (result == TCL_OK) { @@ -7401,8 +7405,6 @@ TclExecuteByteCode( } } - TclArgumentBCRelease((Tcl_Interp*) iPtr,codePtr); - /* * Restore the stack to the state it had previous to this bytecode. */ diff --git a/generic/tclInt.h b/generic/tclInt.h index 5d7e6ab..b7e34c9 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362.2.6 2009/04/27 21:45:20 ferrieux Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.7 2009/07/14 16:33:12 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -1147,17 +1147,11 @@ typedef struct CFWord { int refCount; /* #times the word is on the stack */ } CFWord; -typedef struct ExtIndex { - Tcl_Obj* obj; /* Reference to the word */ - int pc; /* Instruction pointer of a command in ExtCmdLoc.loc[.] */ - int word; /* Index of word in ExtCmdLoc.loc[cmd]->line[.] */ -} ExtIndex; - - typedef struct CFWordBC { CmdFrame* framePtr; /* CmdFrame to acess */ - ExtIndex* eiPtr; /* Word info: PC and index */ - int refCount; /* #times the word is on the stack */ + int pc; /* Instruction pointer of a command in ExtCmdLoc.loc[.] */ + int word; /* Index of word in ExtCmdLoc.loc[cmd]->line[.] */ + struct CFWordBC* prevPtr; } CFWordBC; /* @@ -2472,9 +2466,11 @@ MODULE_SCOPE void TclArgumentRelease(Tcl_Interp* interp, MODULE_SCOPE void TclArgumentGet(Tcl_Interp* interp, Tcl_Obj* obj, CmdFrame** cfPtrPtr, int* wordPtr); MODULE_SCOPE void TclArgumentBCEnter(Tcl_Interp* interp, - void* codePtr, CmdFrame* cfPtr); + Tcl_Obj* objv[], int objc, + void* codePtr, CmdFrame* cfPtr, int pc); MODULE_SCOPE void TclArgumentBCRelease(Tcl_Interp* interp, - void* codePtr); + Tcl_Obj* objv[], int objc, + void* codePtr, int pc); MODULE_SCOPE int TclArraySet(Tcl_Interp *interp, Tcl_Obj *arrayNameObj, Tcl_Obj *arrayElemObj); MODULE_SCOPE double TclBignumToDouble(mp_int *bignum); diff --git a/tests/info.test b/tests/info.test index f450809..5e1e43d 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.47.2.7 2008/10/14 18:16:42 dgp Exp $ +# RCS: @(#) $Id: info.test,v 1.47.2.8 2009/07/14 16:33:12 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1411,6 +1411,24 @@ test info-38.6 {location information for uplevel, ppl, proc-proc-literal} -match * {type source line 1406 file info.test cmd datal proc ::tcltest::RunTest}} # ------------------------------------------------------------------------- +# literal sharing + +test info-39.0 {location information not confused by literal sharing} -body { + namespace eval ::foo {} + proc ::foo::bar {} { + lappend res {} + lappend res [reduce [eval {info frame 0}]] + lappend res [reduce [eval {info frame 0}]] + return $res + } + set res [::foo::bar] + namespace delete ::foo + join $res \n +} -result { +type source line 1420 file info.test cmd {info frame 0} proc ::foo::bar level 0 +type source line 1421 file info.test cmd {info frame 0} proc ::foo::bar level 0} + +# ------------------------------------------------------------------------- # cleanup catch {namespace delete test_ns_info1 test_ns_info2} -- cgit v0.12 From 4ddce8d6445b7a711133a230e5c070aeb22f95de Mon Sep 17 00:00:00 2001 From: das Date: Wed, 15 Jul 2009 22:27:13 +0000 Subject: fix 64bit int <-> ptr cast warnings --- generic/tclBasic.c | 10 +++++----- generic/tclCompile.c | 4 ++-- generic/tclStringObj.c | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 8ce2527..c88a595 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.10 2009/07/14 16:33:12 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.11 2009/07/15 22:27:13 das Exp $ */ #include "tclInt.h" @@ -4637,10 +4637,10 @@ TclArgumentBCEnter(interp,objv,objc,codePtr,cfPtr,pc) if (hePtr) { ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); - hePtr = Tcl_FindHashEntry(&eclPtr->litInfo, (char*) pc); + hePtr = Tcl_FindHashEntry(&eclPtr->litInfo, INT2PTR(pc)); if (hePtr) { - int cmd = (int) Tcl_GetHashValue(hePtr); + int cmd = PTR2INT(Tcl_GetHashValue(hePtr)); ECL* ePtr = &eclPtr->loc[cmd]; int word; @@ -4722,10 +4722,10 @@ TclArgumentBCRelease(interp,objv,objc,codePtr,pc) if (hePtr) { ExtCmdLoc* eclPtr = (ExtCmdLoc*) Tcl_GetHashValue (hePtr); - hePtr = Tcl_FindHashEntry(&eclPtr->litInfo, (char*) pc); + hePtr = Tcl_FindHashEntry(&eclPtr->litInfo, INT2PTR(pc)); if (hePtr) { - int cmd = (int) Tcl_GetHashValue(hePtr); + int cmd = PTR2INT(Tcl_GetHashValue(hePtr)); ECL* ePtr = &eclPtr->loc[cmd]; int word; diff --git a/generic/tclCompile.c b/generic/tclCompile.c index e671fcf..bfc81b7 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.8 2009/07/14 16:33:12 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.9 2009/07/15 22:27:13 das Exp $ */ #include "tclInt.h" @@ -1501,7 +1501,7 @@ TclCompileScript( int isnew; Tcl_HashEntry* hePtr = Tcl_CreateHashEntry(&eclPtr->litInfo, (char*) (envPtr->codeNext - envPtr->codeStart), &isnew); - Tcl_SetHashValue(hePtr, (char*) wlineat); + Tcl_SetHashValue(hePtr, INT2PTR(wlineat)); if (wordIdx <= 255) { TclEmitInstInt1(INST_INVOKE_STK1, wordIdx, envPtr); diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 7c0ccaf..093eca3 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.15 2009/07/01 15:29:48 patthoyts Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.16 2009/07/15 22:27:14 das Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -1357,7 +1357,7 @@ AppendUnicodeToUnicodeRep( int appendNumChars) /* Number of chars of "unicode" to append. */ { String *stringPtr; - size_t numChars; + int numChars; if (appendNumChars < 0) { appendNumChars = UnicodeLength(unicode); -- cgit v0.12 From 5c9038b30eadc53a06bd92249b583ab15f71c1c7 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 16 Jul 2009 20:50:53 +0000 Subject: * generic/tclCmdIL.c: Removed unused variables. * generic/tclCompile.c: * generic/tclVar.c: * unix/tclUnixChan.c: * generic/tclScan.c: Typo in ACCEPT_NAN configuration. * generic/tclStrToD.c: Set floating point control register on MIPS systems so that the gradual underflow expected by Tcl is in effect. [Bug 2819200] --- ChangeLog | 13 +++++++++++++ generic/tclCmdIL.c | 6 ++---- generic/tclCompile.c | 7 ++----- generic/tclScan.c | 4 ++-- generic/tclStrToD.c | 18 +++++++++++++++++- generic/tclVar.c | 6 +++++- unix/tclUnixChan.c | 5 ++--- 7 files changed, 43 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2382491..ac774f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2009-07-16 Don Porter + + * generic/tclCmdIL.c: Removed unused variables. + * generic/tclCompile.c: + * generic/tclVar.c: + * unix/tclUnixChan.c: + + * generic/tclScan.c: Typo in ACCEPT_NAN configuration. + + * generic/tclStrToD.c: Set floating point control register on + MIPS systems so that the gradual underflow expected by Tcl is + in effect. [Bug 2819200] + 2009-07-14 Andreas Kupries * generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter, diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index f144cef..e485347 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.6 2008/09/27 14:20:54 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.7 2009/07/16 20:50:54 dgp Exp $ */ #include "tclInt.h" @@ -3458,7 +3458,7 @@ Tcl_LsortObjCmd( int objc, /* Number of arguments. */ Tcl_Obj *CONST objv[]) /* Argument values. */ { - int i, j, index, unique, indices, length, nocase = 0, sortMode, indexc; + int i, j, index, indices, length, nocase = 0, sortMode, indexc; Tcl_Obj *resultPtr, *cmdPtr, **listObjPtrs, *listObj, *indexPtr; SortElement *elementArray, *elementPtr; SortInfo sortInfo; /* Information about this sort that needs to @@ -3497,7 +3497,6 @@ Tcl_LsortObjCmd( sortInfo.interp = interp; sortInfo.resultCode = TCL_OK; cmdPtr = NULL; - unique = 0; indices = 0; for (i = 1; i < objc-1; i++) { if (Tcl_GetIndexFromObj(interp, objv[i], switches, "option", 0, @@ -3593,7 +3592,6 @@ Tcl_LsortObjCmd( sortInfo.sortMode = SORTMODE_REAL; break; case LSORT_UNIQUE: - unique = 1; sortInfo.unique = 1; break; case LSORT_INDICES: diff --git a/generic/tclCompile.c b/generic/tclCompile.c index bfc81b7..2ea99ac 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.9 2009/07/15 22:27:13 das Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.10 2009/07/16 20:50:54 dgp Exp $ */ #include "tclInt.h" @@ -1157,7 +1157,7 @@ TclCompileScript( Namespace *cmdNsPtr; Command *cmdPtr; Tcl_Token *tokenPtr; - int bytesLeft, isFirstCmd, gotParse, wordIdx, currCmdIndex; + int bytesLeft, isFirstCmd, wordIdx, currCmdIndex; int commandLength, objIndex; Tcl_DString ds; /* TIP #280 */ @@ -1187,7 +1187,6 @@ TclCompileScript( p = script; bytesLeft = numBytes; - gotParse = 0; cmdLine = envPtr->line; do { if (Tcl_ParseCommand(interp, p, bytesLeft, 0, parsePtr) != TCL_OK) { @@ -1203,7 +1202,6 @@ TclCompileScript( TclCompileSyntaxError(interp, envPtr); break; } - gotParse = 1; if (parsePtr->numWords > 0) { int expand = 0; /* Set if there are dynamic expansions to * handle */ @@ -1543,7 +1541,6 @@ TclCompileScript( TclAdvanceLines(&cmdLine, parsePtr->commandStart, p); Tcl_FreeParse(parsePtr); - gotParse = 0; } while (bytesLeft > 0); /* diff --git a/generic/tclScan.c b/generic/tclScan.c index 25ef913..9bd11c1 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclScan.c,v 1.27 2007/12/13 15:23:20 dgp Exp $ + * RCS: @(#) $Id: tclScan.c,v 1.27.2.1 2009/07/16 20:50:54 dgp Exp $ */ #include "tclInt.h" @@ -959,7 +959,7 @@ Tcl_ScanObjCmd( if (Tcl_GetDoubleFromObj(NULL, objPtr, &dvalue) != TCL_OK) { #ifdef ACCEPT_NAN if (objPtr->typePtr == &tclDoubleType) { - dValue = objPtr->internalRep.doubleValue; + dvalue = objPtr->internalRep.doubleValue; } else #endif { diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index c47c5f8..453a34c 100755 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStrToD.c,v 1.33.2.1 2008/04/01 20:12:01 andreas_kupries Exp $ + * RCS: @(#) $Id: tclStrToD.c,v 1.33.2.2 2009/07/16 20:50:54 dgp Exp $ * *---------------------------------------------------------------------- */ @@ -68,6 +68,14 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__))); #if defined(__sun) && defined(__i386) && !defined(__GNUC__) #include #endif + +/* + * MIPS floating-point units need special settings in control registers + * to use gradual underflow as we expect. + */ +#if defined(__mips) +#include +#endif /* * HP's PA_RISC architecture uses 7ff4000000000000 to represent a quiet NaN. * Everyone else uses 7ff8000000000000. (Why, HP, why?) @@ -2158,6 +2166,14 @@ TclInitDoubleConversion(void) } bitwhack; #endif +#if defined(__mips) + union fpc_csr mipsCR; + + mipsCR.fc_word = get_fpc_csr(); + mipsCR.fc_struct.flush = 0; + set_fpc_csr(mipsCR.fc_word); +#endif + /* * Initialize table of powers of 10 expressed as wide integers. */ diff --git a/generic/tclVar.c b/generic/tclVar.c index dc6699e..8f83738 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.160.2.3 2008/10/08 14:52:39 dgp Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.160.2.4 2009/07/16 20:50:54 dgp Exp $ */ #include "tclInt.h" @@ -525,12 +525,15 @@ TclObjLookupVarEx( const Tcl_ObjType *typePtr = part1Ptr->typePtr; const char *errMsg = NULL; CallFrame *varFramePtr = iPtr->varFramePtr; +#if ENABLE_NS_VARNAME_CACHING Namespace *nsPtr; +#endif char *part2 = part2Ptr? TclGetString(part2Ptr):NULL; char *newPart2 = NULL; *arrayPtrPtr = NULL; +#if ENABLE_NS_VARNAME_CACHING if (varFramePtr) { nsPtr = varFramePtr->nsPtr; } else { @@ -541,6 +544,7 @@ TclObjLookupVarEx( nsPtr = NULL; } +#endif if (typePtr == &localVarNameType) { int localIndex; diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index a915d5f..01d4005 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.93.2.2 2009/04/10 20:46:21 das Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.93.2.3 2009/07/16 20:50:54 dgp Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -2279,14 +2279,13 @@ CreateSocket( * attempt to do an async connect. Otherwise * do a synchronous connect or bind. */ { - int status, sock, asyncConnect, curState, origState; + int status, sock, asyncConnect, curState; struct sockaddr_in sockaddr; /* socket address */ struct sockaddr_in mysockaddr; /* Socket address for client */ TcpState *statePtr; const char *errorMsg = NULL; sock = -1; - origState = 0; if (!CreateSocketAddress(&sockaddr, host, port, 0, &errorMsg)) { goto addressError; } -- cgit v0.12 From 4e8b86c24d420e998e237b3088592b048a63d606 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 20 Jul 2009 09:26:16 +0000 Subject: Performance boost for [string is]. --- ChangeLog | 44 +++++++++++++--------- generic/tclCmdMZ.c | 105 ++++++++++++++++++++++++++++++++++------------------- 2 files changed, 94 insertions(+), 55 deletions(-) diff --git a/ChangeLog b/ChangeLog index ac774f8..f8469f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-07-20 Donal K. Fellows + + * generic/tclCmdMZ.c (StringIsCmd): Reorganize so that [string is] is + more efficient when parsing things that are correct, at a cost of + making the empty string test slightly more costly. With this, the cost + of doing [string is integer -strict $x] matches [catch {expr {$x+0}}] + in the successful case, and greatly outstrips it in the failing case. + 2009-07-16 Don Porter * generic/tclCmdIL.c: Removed unused variables. @@ -7,39 +15,39 @@ * generic/tclScan.c: Typo in ACCEPT_NAN configuration. - * generic/tclStrToD.c: Set floating point control register on - MIPS systems so that the gradual underflow expected by Tcl is - in effect. [Bug 2819200] + * generic/tclStrToD.c: [Bug 2819200]: Set floating point control + register on MIPS systems so that the gradual underflow expected by Tcl + is in effect. 2009-07-14 Andreas Kupries * generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter, - TclArgumentBCRelease, TclArgumentGet): + (TclArgumentBCRelease, TclArgumentGet): * generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode, - TclInitCompileEnv, TclCompileScript): + (TclInitCompileEnv, TclCompileScript): * generic/tclCompile.h (ExtCmdLoc): * generic/tclExecute.c (TclExecuteByteCode): * generic/tclInt.h (ExtIndex, CFWordBC): * tests/info.test (info-39.0): Backport of some changes made to the Tcl head, to handle literal - sharing better. The code here is much simpler (trimmed down) - compared to the head as the 8.5 branch is not bytecode compiling - whole files, and doesn't compile eval'd code either. + sharing better. The code here is much simpler (trimmed down) compared + to the head as the 8.5 branch is not bytecode compiling whole files, + and doesn't compile eval'd code either. - Reworked the handling of literal command arguments in bytecode to - be saved (compiler) and used (execution) per command (See the - TCL_INVOKE_STK* instructions), and not per the whole bytecode. - This removes the problems with location data caused by literal - sharing in proc bodies. Simplified the associated datastructures - (ExtIndex is gone, as is the function EnterCmdWordIndex). + Reworked the handling of literal command arguments in bytecode to be + saved (compiler) and used (execution) per command (see the + TCL_INVOKE_STK* instructions), and not per the whole bytecode. This + removes the problems with location data caused by literal sharing in + proc bodies. Simplified the associated datastructures (ExtIndex is + gone, as is the function EnterCmdWordIndex). 2009-07-01 Pat Thoyts - * win/tclWinInt.h: Handle the GetUserName API call via the - * win/tclWin32Dll.c: tclWinProcs indirection structure. This - * win/tclWinInit.c: fixes a problem obtaining the username when - the USERNAME environment variable is unset [Bug 2806622] + * win/tclWinInt.h: [Bug 2806622]: Handle the GetUserName API call + * win/tclWin32Dll.c: via the tclWinProcs indirection structure. This + * win/tclWinInit.c: fixes a problem obtaining the username when the + USERNAME environment variable is unset. 2009-06-15 Don Porter diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 5a88a6f..aa12480 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -15,13 +15,14 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.163.2.3 2009/05/06 20:16:55 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.163.2.4 2009/07/20 09:26:16 dkf Exp $ */ #include "tclInt.h" #include "tclRegexp.h" static int UniCharIsAscii(int character); +static int UniCharIsHexDigit(int character); /* *---------------------------------------------------------------------- @@ -1383,14 +1384,14 @@ StringIsCmd( int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - const char *string1, *string2, *end, *stop; + const char *string1, *end, *stop; Tcl_UniChar ch; int (*chcomp)(int) = NULL; /* The UniChar comparison function. */ int i, failat = 0, result = 1, strict = 0, index, length1, length2; Tcl_Obj *objPtr, *failVarObj = NULL; Tcl_WideInt w; - static const char *isOptions[] = { + static const char *isClasses[] = { "alnum", "alpha", "ascii", "control", "boolean", "digit", "double", "false", "graph", "integer", "list", "lower", @@ -1398,42 +1399,50 @@ StringIsCmd( "upper", "wideinteger", "wordchar", "xdigit", NULL }; - enum isOptions { + enum isClasses { STR_IS_ALNUM, STR_IS_ALPHA, STR_IS_ASCII, STR_IS_CONTROL, STR_IS_BOOL, STR_IS_DIGIT, STR_IS_DOUBLE, STR_IS_FALSE, STR_IS_GRAPH, STR_IS_INT, STR_IS_LIST, STR_IS_LOWER, - STR_IS_PRINT, STR_IS_PUNCT, STR_IS_SPACE, STR_IS_TRUE, + STR_IS_PRINT, STR_IS_PUNCT, STR_IS_SPACE, STR_IS_TRUE, STR_IS_UPPER, STR_IS_WIDE, STR_IS_WORD, STR_IS_XDIGIT }; + static const char *isOptions[] = { + "-strict", "-failindex", NULL + }; + enum isOptions { + OPT_STRICT, OPT_FAILIDX + }; if (objc < 3 || objc > 6) { Tcl_WrongNumArgs(interp, 1, objv, "class ?-strict? ?-failindex var? str"); return TCL_ERROR; } - if (Tcl_GetIndexFromObj(interp, objv[1], isOptions, "class", 0, + if (Tcl_GetIndexFromObj(interp, objv[1], isClasses, "class", 0, &index) != TCL_OK) { return TCL_ERROR; } if (objc != 3) { for (i = 2; i < objc-1; i++) { - string2 = TclGetStringFromObj(objv[i], &length2); - if ((length2 > 1) && - strncmp(string2, "-strict", (size_t) length2) == 0) { + int idx2; + + if (Tcl_GetIndexFromObj(interp, objv[i], isOptions, "option", 0, + &idx2) != TCL_OK) { + return TCL_ERROR; + } + switch ((enum isOptions) idx2) { + case OPT_STRICT: strict = 1; - } else if ((length2 > 1) && - strncmp(string2, "-failindex", (size_t)length2) == 0){ + break; + case OPT_FAILIDX: if (i+1 >= objc-1) { Tcl_WrongNumArgs(interp, 2, objv, "?-strict? ?-failindex var? str"); return TCL_ERROR; } failVarObj = objv[++i]; - } else { - Tcl_AppendResult(interp, "bad option \"", string2, - "\": must be -strict or -failindex", NULL); - return TCL_ERROR; + break; } } } @@ -1446,20 +1455,12 @@ StringIsCmd( */ objPtr = objv[objc-1]; - string1 = TclGetStringFromObj(objPtr, &length1); - if (length1 == 0 && index != STR_IS_LIST) { - if (strict) { - result = 0; - } - goto str_is_done; - } - end = string1 + length1; /* * When entering here, result == 1 and failat == 0. */ - switch ((enum isOptions) index) { + switch ((enum isClasses) index) { case STR_IS_ALNUM: chcomp = Tcl_UniCharIsAlnum; break; @@ -1473,7 +1474,12 @@ StringIsCmd( case STR_IS_TRUE: case STR_IS_FALSE: if (TCL_OK != Tcl_ConvertToType(NULL, objPtr, &tclBooleanType)) { - result = 0; + if (strict) { + result = 0; + } else { + string1 = TclGetStringFromObj(objPtr, &length1); + result = length1 == 0; + } } else if (((index == STR_IS_TRUE) && objPtr->internalRep.longValue == 0) || ((index == STR_IS_FALSE) && @@ -1497,6 +1503,14 @@ StringIsCmd( (objPtr->typePtr == &tclBignumType)) { break; } + string1 = TclGetStringFromObj(objPtr, &length1); + if (length1 == 0) { + if (strict) { + result = 0; + } + goto str_is_done; + } + end = string1 + length1; if (TclParseNumber(NULL, objPtr, NULL, NULL, -1, (const char **) &stop, 0) != TCL_OK) { result = 0; @@ -1525,8 +1539,14 @@ StringIsCmd( } failedIntParse: + string1 = TclGetStringFromObj(objPtr, &length1); + if (length1 == 0) { + if (strict) { + result = 0; + } + goto str_is_done; + } result = 0; - if (failVarObj == NULL) { /* * Don't bother computing the failure point if we're not going to @@ -1535,6 +1555,7 @@ StringIsCmd( break; } + end = string1 + length1; if (TclParseNumber(NULL, objPtr, NULL, NULL, -1, (const char **) &stop, TCL_PARSE_INTEGER_ONLY) == TCL_OK) { if (stop == end) { @@ -1583,14 +1604,15 @@ StringIsCmd( * SetListFromAny(). */ - const char *elemStart, *nextElem, *limit; + const char *elemStart, *nextElem; int lenRemain, elemSize, hasBrace; register const char *p; - limit = string1 + length1; + string1 = TclGetStringFromObj(objPtr, &length1); + end = string1 + length1; failat = -1; for (p=string1, lenRemain=length1; lenRemain > 0; - p=nextElem, lenRemain=limit-nextElem) { + p=nextElem, lenRemain=end-nextElem) { if (TCL_ERROR == TclFindElement(NULL, p, lenRemain, &elemStart, &nextElem, &elemSize, &hasBrace)) { Tcl_Obj *tmpStr; @@ -1636,17 +1658,19 @@ StringIsCmd( chcomp = Tcl_UniCharIsWordChar; break; case STR_IS_XDIGIT: - for (; string1 < end; string1++, failat++) { - /* INTL: We assume unicode is bad for this class. */ - if ((*((unsigned char *)string1) >= 0xC0) || - !isxdigit(*(unsigned char *)string1)) { - result = 0; - break; - } - } + chcomp = UniCharIsHexDigit; break; } + if (chcomp != NULL) { + string1 = TclGetStringFromObj(objPtr, &length1); + if (length1 == 0) { + if (strict) { + result = 0; + } + goto str_is_done; + } + end = string1 + length1; for (; string1 < end; string1 += length2, failat++) { length2 = TclUtfToUniChar(string1, &ch); if (!chcomp(ch)) { @@ -1677,6 +1701,13 @@ UniCharIsAscii( { return (character >= 0) && (character < 0x80); } + +static int +UniCharIsHexDigit( + int character) +{ + return (character >= 0) && (character < 0x80) && isxdigit(character); +} /* *---------------------------------------------------------------------- -- cgit v0.12 From 610b63c8a1dd9161a0f93ceb28b4b0d49047eb75 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 21 Jul 2009 21:20:58 +0000 Subject: 2009-07-21 Kevin B. Kenny * library/tzdata/Asia/Dhaka: * library/tzdata/Indian/Mauritius: Olson's tzdata2009k. --- ChangeLog | 5 ++ library/tzdata/Asia/Dhaka | 4 +- library/tzdata/Indian/Mauritius | 183 +--------------------------------------- 3 files changed, 8 insertions(+), 184 deletions(-) diff --git a/ChangeLog b/ChangeLog index f8469f6..2f50285 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-07-21 Kevin B. Kenny + + * library/tzdata/Asia/Dhaka: + * library/tzdata/Indian/Mauritius: Olson's tzdata2009k. + 2009-07-20 Donal K. Fellows * generic/tclCmdMZ.c (StringIsCmd): Reorganize so that [string is] is diff --git a/library/tzdata/Asia/Dhaka b/library/tzdata/Asia/Dhaka index 98967ed..70fc865 100644 --- a/library/tzdata/Asia/Dhaka +++ b/library/tzdata/Asia/Dhaka @@ -8,6 +8,6 @@ set TZData(:Asia/Dhaka) { {-862637400 23400 0 BURT} {-576138600 21600 0 DACT} {38772000 21600 0 BDT} - {1230746400 21600 0 BDT} - {1245434400 25200 1 BDST} + {1245430800 25200 1 BDST} + {1262278800 21600 0 BDT} } diff --git a/library/tzdata/Indian/Mauritius b/library/tzdata/Indian/Mauritius index 69fe8fe..a9c07eb 100644 --- a/library/tzdata/Indian/Mauritius +++ b/library/tzdata/Indian/Mauritius @@ -6,186 +6,5 @@ set TZData(:Indian/Mauritius) { {403041600 18000 1 MUST} {417034800 14400 0 MUT} {1224972000 18000 1 MUST} - {1238277600 14400 0 MUT} - {1256421600 18000 1 MUST} - {1269727200 14400 0 MUT} - {1288476000 18000 1 MUST} - {1301176800 14400 0 MUT} - {1319925600 18000 1 MUST} - {1332626400 14400 0 MUT} - {1351375200 18000 1 MUST} - {1364680800 14400 0 MUT} - {1382824800 18000 1 MUST} - {1396130400 14400 0 MUT} - {1414274400 18000 1 MUST} - {1427580000 14400 0 MUT} - {1445724000 18000 1 MUST} - {1459029600 14400 0 MUT} - {1477778400 18000 1 MUST} - {1490479200 14400 0 MUT} - {1509228000 18000 1 MUST} - {1521928800 14400 0 MUT} - {1540677600 18000 1 MUST} - {1553983200 14400 0 MUT} - {1572127200 18000 1 MUST} - {1585432800 14400 0 MUT} - {1603576800 18000 1 MUST} - {1616882400 14400 0 MUT} - {1635631200 18000 1 MUST} - {1648332000 14400 0 MUT} - {1667080800 18000 1 MUST} - {1679781600 14400 0 MUT} - {1698530400 18000 1 MUST} - {1711836000 14400 0 MUT} - {1729980000 18000 1 MUST} - {1743285600 14400 0 MUT} - {1761429600 18000 1 MUST} - {1774735200 14400 0 MUT} - {1792879200 18000 1 MUST} - {1806184800 14400 0 MUT} - {1824933600 18000 1 MUST} - {1837634400 14400 0 MUT} - {1856383200 18000 1 MUST} - {1869084000 14400 0 MUT} - {1887832800 18000 1 MUST} - {1901138400 14400 0 MUT} - {1919282400 18000 1 MUST} - {1932588000 14400 0 MUT} - {1950732000 18000 1 MUST} - {1964037600 14400 0 MUT} - {1982786400 18000 1 MUST} - {1995487200 14400 0 MUT} - {2014236000 18000 1 MUST} - {2026936800 14400 0 MUT} - {2045685600 18000 1 MUST} - {2058386400 14400 0 MUT} - {2077135200 18000 1 MUST} - {2090440800 14400 0 MUT} - {2108584800 18000 1 MUST} - {2121890400 14400 0 MUT} - {2140034400 18000 1 MUST} - {2153340000 14400 0 MUT} - {2172088800 18000 1 MUST} - {2184789600 14400 0 MUT} - {2203538400 18000 1 MUST} - {2216239200 14400 0 MUT} - {2234988000 18000 1 MUST} - {2248293600 14400 0 MUT} - {2266437600 18000 1 MUST} - {2279743200 14400 0 MUT} - {2297887200 18000 1 MUST} - {2311192800 14400 0 MUT} - {2329336800 18000 1 MUST} - {2342642400 14400 0 MUT} - {2361391200 18000 1 MUST} - {2374092000 14400 0 MUT} - {2392840800 18000 1 MUST} - {2405541600 14400 0 MUT} - {2424290400 18000 1 MUST} - {2437596000 14400 0 MUT} - {2455740000 18000 1 MUST} - {2469045600 14400 0 MUT} - {2487189600 18000 1 MUST} - {2500495200 14400 0 MUT} - {2519244000 18000 1 MUST} - {2531944800 14400 0 MUT} - {2550693600 18000 1 MUST} - {2563394400 14400 0 MUT} - {2582143200 18000 1 MUST} - {2595448800 14400 0 MUT} - {2613592800 18000 1 MUST} - {2626898400 14400 0 MUT} - {2645042400 18000 1 MUST} - {2658348000 14400 0 MUT} - {2676492000 18000 1 MUST} - {2689797600 14400 0 MUT} - {2708546400 18000 1 MUST} - {2721247200 14400 0 MUT} - {2739996000 18000 1 MUST} - {2752696800 14400 0 MUT} - {2771445600 18000 1 MUST} - {2784751200 14400 0 MUT} - {2802895200 18000 1 MUST} - {2816200800 14400 0 MUT} - {2834344800 18000 1 MUST} - {2847650400 14400 0 MUT} - {2866399200 18000 1 MUST} - {2879100000 14400 0 MUT} - {2897848800 18000 1 MUST} - {2910549600 14400 0 MUT} - {2929298400 18000 1 MUST} - {2941999200 14400 0 MUT} - {2960748000 18000 1 MUST} - {2974053600 14400 0 MUT} - {2992197600 18000 1 MUST} - {3005503200 14400 0 MUT} - {3023647200 18000 1 MUST} - {3036952800 14400 0 MUT} - {3055701600 18000 1 MUST} - {3068402400 14400 0 MUT} - {3087151200 18000 1 MUST} - {3099852000 14400 0 MUT} - {3118600800 18000 1 MUST} - {3131906400 14400 0 MUT} - {3150050400 18000 1 MUST} - {3163356000 14400 0 MUT} - {3181500000 18000 1 MUST} - {3194805600 14400 0 MUT} - {3212949600 18000 1 MUST} - {3226255200 14400 0 MUT} - {3245004000 18000 1 MUST} - {3257704800 14400 0 MUT} - {3276453600 18000 1 MUST} - {3289154400 14400 0 MUT} - {3307903200 18000 1 MUST} - {3321208800 14400 0 MUT} - {3339352800 18000 1 MUST} - {3352658400 14400 0 MUT} - {3370802400 18000 1 MUST} - {3384108000 14400 0 MUT} - {3402856800 18000 1 MUST} - {3415557600 14400 0 MUT} - {3434306400 18000 1 MUST} - {3447007200 14400 0 MUT} - {3465756000 18000 1 MUST} - {3479061600 14400 0 MUT} - {3497205600 18000 1 MUST} - {3510511200 14400 0 MUT} - {3528655200 18000 1 MUST} - {3541960800 14400 0 MUT} - {3560104800 18000 1 MUST} - {3573410400 14400 0 MUT} - {3592159200 18000 1 MUST} - {3604860000 14400 0 MUT} - {3623608800 18000 1 MUST} - {3636309600 14400 0 MUT} - {3655058400 18000 1 MUST} - {3668364000 14400 0 MUT} - {3686508000 18000 1 MUST} - {3699813600 14400 0 MUT} - {3717957600 18000 1 MUST} - {3731263200 14400 0 MUT} - {3750012000 18000 1 MUST} - {3762712800 14400 0 MUT} - {3781461600 18000 1 MUST} - {3794162400 14400 0 MUT} - {3812911200 18000 1 MUST} - {3825612000 14400 0 MUT} - {3844360800 18000 1 MUST} - {3857666400 14400 0 MUT} - {3875810400 18000 1 MUST} - {3889116000 14400 0 MUT} - {3907260000 18000 1 MUST} - {3920565600 14400 0 MUT} - {3939314400 18000 1 MUST} - {3952015200 14400 0 MUT} - {3970764000 18000 1 MUST} - {3983464800 14400 0 MUT} - {4002213600 18000 1 MUST} - {4015519200 14400 0 MUT} - {4033663200 18000 1 MUST} - {4046968800 14400 0 MUT} - {4065112800 18000 1 MUST} - {4078418400 14400 0 MUT} - {4096562400 18000 1 MUST} + {1238274000 14400 0 MUT} } -- cgit v0.12 From 0e0851e0575134877496aec4036ae9cbe50f0d74 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Thu, 23 Jul 2009 10:17:03 +0000 Subject: Fix for [Bug 2820349] --- ChangeLog | 4 ++++ generic/tclNotify.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2f50285..4294ed0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-07-23 Joe Mistachkin + + * generic/tclNotify.c: Fix for [Bug 2820349]. + 2009-07-21 Kevin B. Kenny * library/tzdata/Asia/Dhaka: diff --git a/generic/tclNotify.c b/generic/tclNotify.c index 06781d9..88c710f 100644 --- a/generic/tclNotify.c +++ b/generic/tclNotify.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNotify.c,v 1.25 2006/09/25 15:02:54 dkf Exp $ + * RCS: @(#) $Id: tclNotify.c,v 1.25.8.1 2009/07/23 10:17:03 mistachkin Exp $ */ #include "tclInt.h" @@ -417,6 +417,8 @@ Tcl_ThreadQueueEvent( if (tsdPtr) { QueueEvent(tsdPtr, evPtr, position); + } else { + ckfree((char *) evPtr); } Tcl_MutexUnlock(&listLock); } -- cgit v0.12 From c588827c5492fd9626c04ed618bfcdb02d9f7c70 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Thu, 23 Jul 2009 10:19:45 +0000 Subject: Fix for [Bug 2820349] --- ChangeLog | 4 ++++ generic/tclNotify.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d2abbe5..e77c783 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-07-23 Joe Mistachkin + + * generic/tclNotify.c: Fix for [Bug 2820349]. + 2009-07-14 Andreas Kupries * generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter, diff --git a/generic/tclNotify.c b/generic/tclNotify.c index c09d851..f08a76c 100644 --- a/generic/tclNotify.c +++ b/generic/tclNotify.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNotify.c,v 1.11.2.2 2005/04/26 00:46:02 das Exp $ + * RCS: @(#) $Id: tclNotify.c,v 1.11.2.3 2009/07/23 10:19:46 mistachkin Exp $ */ #include "tclInt.h" @@ -409,6 +409,8 @@ Tcl_ThreadQueueEvent(threadId, evPtr, position) if (tsdPtr) { QueueEvent(tsdPtr, evPtr, position); + } else { + ckfree((char *) evPtr); } Tcl_MutexUnlock(&listLock); } -- cgit v0.12 From 8bed03c8ab1a815791db5f01335cccb517cf8bce Mon Sep 17 00:00:00 2001 From: das Date: Thu, 23 Jul 2009 15:23:50 +0000 Subject: fix SunCC warning --- generic/tclBasic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index c88a595..d7cbe39 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.11 2009/07/15 22:27:13 das Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.12 2009/07/23 15:23:50 das Exp $ */ #include "tclInt.h" @@ -6915,7 +6915,7 @@ TclDTraceInfo( } } -TCL_DTRACE_DEBUG_LOG(); +TCL_DTRACE_DEBUG_LOG() #endif /* USE_DTRACE */ -- cgit v0.12 From c78ca1c741ddf3ca2eef6b19088a52961f830eb4 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 23 Jul 2009 15:23:54 +0000 Subject: fix SunCC warning --- generic/tclBasic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 78bc47f..6afe56a 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.35 2009/07/14 16:31:48 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.36 2009/07/23 15:23:54 das Exp $ */ #include "tclInt.h" @@ -6524,7 +6524,7 @@ DTraceObjCmd( return TCL_OK; } -TCL_DTRACE_DEBUG_LOG(); +TCL_DTRACE_DEBUG_LOG() #endif /* USE_DTRACE */ -- cgit v0.12 From 410f05ea0612ecb96c5833d16c0a8216bcd7fb08 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 24 Jul 2009 16:51:28 +0000 Subject: * generic/tclIO.c (Tcl_GetChannelHandle): [Bug 2826248]: Do not crash * generic/tclPipe.c (FileForRedirect): for getHandleProc == NULL, this is allowed. Provide a nice error message in the bypass area. Updated caller to check the bypass for a mesage. Bug reported by Andy Sonnenburg . Backported from CVS head. --- ChangeLog | 9 +++++++++ generic/tclIO.c | 10 +++++++++- generic/tclPipe.c | 14 ++++++++++---- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4294ed0..527fa3d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-07-24 Andreas Kupries + + * generic/tclIO.c (Tcl_GetChannelHandle): [Bug 2826248]: Do not crash + * generic/tclPipe.c (FileForRedirect): for getHandleProc == NULL, this + is allowed. Provide a nice error message in the bypass area. Updated + caller to check the bypass for a mesage. Bug reported by Andy + Sonnenburg . Backported from CVS + head. + 2009-07-23 Joe Mistachkin * generic/tclNotify.c: Fix for [Bug 2820349]. diff --git a/generic/tclIO.c b/generic/tclIO.c index 3553286..649e31b 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.10 2008/12/11 17:27:39 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.11 2009/07/24 16:51:28 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2006,6 +2006,14 @@ Tcl_GetChannelHandle( int result; chanPtr = ((Channel *) chan)->state->bottomChanPtr; + if (!chanPtr->typePtr->getHandleProc) { + Tcl_Obj* err; + TclNewLiteralStringObj(err, "channel \""); + Tcl_AppendToObj(err, Tcl_GetChannelName(chan), -1); + Tcl_AppendToObj(err, "\" does not support OS handles", -1); + Tcl_SetChannelError (chan,err); + return TCL_ERROR; + } result = (chanPtr->typePtr->getHandleProc)(chanPtr->instanceData, direction, &handle); if (handlePtr) { diff --git a/generic/tclPipe.c b/generic/tclPipe.c index 561d390..90b1c1a 100644 --- a/generic/tclPipe.c +++ b/generic/tclPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPipe.c,v 1.19 2007/04/20 06:10:58 kennykb Exp $ + * RCS: @(#) $Id: tclPipe.c,v 1.19.4.1 2009/07/24 16:51:28 andreas_kupries Exp $ */ #include "tclInt.h" @@ -102,9 +102,15 @@ FileForRedirect( } file = TclpMakeFile(chan, writing ? TCL_WRITABLE : TCL_READABLE); if (file == NULL) { - Tcl_AppendResult(interp, "channel \"", Tcl_GetChannelName(chan), - "\" wasn't opened for ", - ((writing) ? "writing" : "reading"), NULL); + Tcl_Obj* msg; + Tcl_GetChannelError(chan, &msg); + if (msg) { + Tcl_SetObjResult (interp, msg); + } else { + Tcl_AppendResult(interp, "channel \"", Tcl_GetChannelName(chan), + "\" wasn't opened for ", + ((writing) ? "writing" : "reading"), NULL); + } return NULL; } *releasePtr = 1; -- cgit v0.12 From 13b0e3a3115bdcc30872a5e276edcb35ef009537 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 31 Jul 2009 16:56:32 +0000 Subject: * generic/tclStringObj.c: Corrected failure to grow buffer * tests/format.test: when format spec request large width floating point values. Thanks to Clemens Misch. [Bug 2830354] --- ChangeLog | 6 ++++++ generic/tclStringObj.c | 5 ++++- tests/format.test | 6 +++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 527fa3d..ab6491c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-07-31 Don Porter + + * generic/tclStringObj.c: Corrected failure to grow buffer + * tests/format.test: when format spec request large width + floating point values. Thanks to Clemens Misch. [Bug 2830354] + 2009-07-24 Andreas Kupries * generic/tclIO.c (Tcl_GetChannelHandle): [Bug 2826248]: Do not crash diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 093eca3..6e202d5 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.16 2009/07/15 22:27:14 das Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.17 2009/07/31 16:56:32 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -2356,6 +2356,9 @@ Tcl_AppendFormatToObj( } if (width) { p += sprintf(p, "%d", width); + if (width > length) { + length = width; + } } if (gotPrecision) { *p++ = '.'; diff --git a/tests/format.test b/tests/format.test index 36222a5..48476ab 100644 --- a/tests/format.test +++ b/tests/format.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: format.test,v 1.25.2.1 2008/04/07 16:07:02 dgp Exp $ +# RCS: @(#) $Id: format.test,v 1.25.2.2 2009/07/31 16:56:32 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -563,6 +563,10 @@ test format-19.2 {Bug 1867855} { format %llx 0 } 0 +test format-19.3 {Bug 2830354} { + string length [format %340f 0] +} 340 + # cleanup catch {unset a} catch {unset b} -- cgit v0.12 From 53b1f467a9e16c6358a0e6d06db9413e1bc4c2c8 Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 2 Aug 2009 12:15:04 +0000 Subject: Stop calling endpwent() and endgrent(); unneeded. [Bug 1942222] --- ChangeLog | 16 ++++++++++++---- unix/tclUnixFCmd.c | 8 ++------ unix/tclUnixFile.c | 6 ++---- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index ab6491c..04def18 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,15 @@ +2009-08-02 Donal K. Fellows + + * unix/tclUnixFCmd.c (GetOwnerAttribute, SetOwnerAttribute) + (GetGroupAttribute, SetGroupAttribute): [Bug 1942222]: Stop calling + * unix/tclUnixFile.c (TclpGetUserHome): endpwent() and endgrent(); + they've been unnecessary for ages. + 2009-07-31 Don Porter - * generic/tclStringObj.c: Corrected failure to grow buffer - * tests/format.test: when format spec request large width - floating point values. Thanks to Clemens Misch. [Bug 2830354] + * generic/tclStringObj.c: [Bug 2830354]: Corrected failure to + * tests/format.test: grow buffer when format spec request + large width floating point values. Thanks to Clemens Misch. 2009-07-24 Andreas Kupries @@ -15,7 +22,8 @@ 2009-07-23 Joe Mistachkin - * generic/tclNotify.c: Fix for [Bug 2820349]. + * generic/tclNotify.c: [Bug 2820349]: Ensure that queued events are + freed once processed. 2009-07-21 Kevin B. Kenny diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index 41b1003..e517e6f 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.65 2007/12/13 15:28:42 dgp Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.65.2.1 2009/08/02 12:15:04 dkf Exp $ * * Portions of this code were derived from NetBSD source code which has the * following copyright notice: @@ -1338,7 +1338,6 @@ GetGroupAttribute( *attributePtrPtr = Tcl_NewStringObj(utf, -1); Tcl_DStringFree(&ds); } - endgrent(); return TCL_OK; } @@ -1393,7 +1392,6 @@ GetOwnerAttribute( *attributePtrPtr = Tcl_NewStringObj(utf, Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); } - endpwent(); return TCL_OK; } @@ -1480,7 +1478,6 @@ SetGroupAttribute( Tcl_DStringFree(&ds); if (groupPtr == NULL) { - endgrent(); if (interp != NULL) { Tcl_AppendResult(interp, "could not set group for file \"", TclGetString(fileName), "\": group \"", string, @@ -1494,7 +1491,6 @@ SetGroupAttribute( native = Tcl_FSGetNativePath(fileName); result = chown(native, (uid_t) -1, (gid_t) gid); /* INTL: Native. */ - endgrent(); if (result != 0) { if (interp != NULL) { Tcl_AppendResult(interp, "could not set group for file \"", @@ -1542,7 +1538,7 @@ SetOwnerAttribute( string = Tcl_GetStringFromObj(attributePtr, &length); native = Tcl_UtfToExternalDString(NULL, string, length, &ds); - pwPtr = TclpGetPwNam(native); /* INTL: Native. */ + pwPtr = TclpGetPwNam(native); /* INTL: Native. */ Tcl_DStringFree(&ds); if (pwPtr == NULL) { diff --git a/unix/tclUnixFile.c b/unix/tclUnixFile.c index d11b43c..c3ad48b 100644 --- a/unix/tclUnixFile.c +++ b/unix/tclUnixFile.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFile.c,v 1.52 2007/12/13 15:28:42 dgp Exp $ + * RCS: @(#) $Id: tclUnixFile.c,v 1.52.2.1 2009/08/02 12:15:04 dkf Exp $ */ #include "tclInt.h" @@ -567,15 +567,13 @@ TclpGetUserHome( CONST char *native; native = Tcl_UtfToExternalDString(NULL, name, -1, &ds); - pwPtr = getpwnam(native); /* INTL: Native. */ + pwPtr = TclpGetPwNam(native); /* INTL: Native. */ Tcl_DStringFree(&ds); if (pwPtr == NULL) { - endpwent(); return NULL; } Tcl_ExternalToUtfDString(NULL, pwPtr->pw_dir, -1, bufferPtr); - endpwent(); return Tcl_DStringValue(bufferPtr); } -- cgit v0.12 From 9b60842d16319877dbd4d5690699e7f17908392b Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Thu, 6 Aug 2009 22:28:44 +0000 Subject: * doc/refchan.n [Bug 2827000]: Extended the implementation of * generic/tclIORChan.c: reflective channels (TIP 219, method * tests/ioCmd.test: 'read'), enabling handlers to signal EAGAIN to indicate 'no data, but not at EOF either', and other system errors. Updated documentation, extended testsuite (New test cases iocmd*-23.{9,10}). --- ChangeLog | 9 +++++++ doc/refchan.n | 33 +++++++++++++++++++++-- generic/tclIORChan.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++--- tests/ioCmd.test | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 184 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 04def18..ed72cc4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-08-06 Andreas Kupries + + * doc/refchan.n [Bug 2827000]: Extended the implementation of + * generic/tclIORChan.c: reflective channels (TIP 219, method + * tests/ioCmd.test: 'read'), enabling handlers to signal EAGAIN to + indicate 'no data, but not at EOF either', and other system + errors. Updated documentation, extended testsuite (New test cases + iocmd*-23.{9,10}). + 2009-08-02 Donal K. Fellows * unix/tclUnixFCmd.c (GetOwnerAttribute, SetOwnerAttribute) diff --git a/doc/refchan.n b/doc/refchan.n index d007c0f..42e5588 100644 --- a/doc/refchan.n +++ b/doc/refchan.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: refchan.n,v 1.11 2008/03/26 09:59:22 dkf Exp $ +'\" RCS: @(#) $Id: refchan.n,v 1.11.2.1 2009/08/06 22:28:44 andreas_kupries Exp $ .so man.macros .TH refchan n 8.5 Tcl "Tcl Built-In Commands" .BS @@ -116,7 +116,36 @@ an error will be signaled and later thrown by the command which performed the read (usually \fBgets\fR or \fBread\fR). However, returning fewer bytes than requested is acceptable. .PP -If the subcommand throws an error, the command which caused its +Note that returning nothing (0 bytes) is a signal to the higher layers +that \fBEOF\fR has been reached on the channel. To signal that the +channel is out of data right now, but has not yet reached \fBEOF\fR, +it is necessary to throw the error "EAGAIN", i.e. to either +.PP +.CS +return -code error EAGAIN +.CE +or +.CS +error EAGAIN +.CE +.PP +For extensibility any error whose value is a negative integer number +will cause the higher layers to set the C-level variable "\fBerrno\fR" +to the absolute value of this number, signaling a system error. This +means that both +.PP +.CS +return -code error -11 +.CE +and +.CS +error -11 +.CE +.PP +are equivalent to the examples above, using the more readable string "EAGAIN". +No other error value has such a mapping to a symbolic string. +.PP +If the subcommand throws any other error, the command which caused its invocation (usually \fBgets\fR, or \fBread\fR) will appear to have thrown this error. Any exception beyond \fIerror\fR, (e.g. \fIbreak\fR, etc.) is treated as and converted to an error. diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index c9a294b..3d14ec6 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.6 2009/01/22 00:05:14 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.7 2009/08/06 22:28:44 andreas_kupries Exp $ */ #include @@ -447,6 +447,7 @@ static int InvokeTclMethod(ReflectedChannel *rcPtr, static ReflectedChannelMap * GetReflectedChannelMap(Tcl_Interp *interp); static void DeleteReflectedChannelMap(ClientData clientData, Tcl_Interp *interp); +static int ErrnoReturn(ReflectedChannel *rcPtr, Tcl_Obj* resObj); /* * Global constant strings (messages). ================== @@ -1218,8 +1219,13 @@ ReflectInput( ForwardOpToOwnerThread(rcPtr, ForwardedInput, &p); if (p.base.code != TCL_OK) { - PassReceivedError(rcPtr->chan, &p); - *errorCodePtr = EINVAL; + if (p.base.code < 0) { + /* No error message, this is an errno signal. */ + *errorCodePtr = -p.base.code; + } else { + PassReceivedError(rcPtr->chan, &p); + *errorCodePtr = EINVAL; + } p.input.toRead = -1; } else { *errorCodePtr = EOK; @@ -1234,6 +1240,14 @@ ReflectInput( toReadObj = Tcl_NewIntObj(toRead); if (InvokeTclMethod(rcPtr, "read", toReadObj, NULL, &resObj)!=TCL_OK) { + int code = ErrnoReturn (rcPtr, resObj); + + if (code < 0) { + Tcl_DecrRefCount(resObj); /* Remove reference held from invoke */ + *errorCodePtr = -code; + return -1; + } + Tcl_SetChannelError(rcPtr->chan, resObj); Tcl_DecrRefCount(resObj); /* Remove reference held from invoke */ *errorCodePtr = EINVAL; @@ -2266,6 +2280,53 @@ InvokeTclMethod( /* *---------------------------------------------------------------------- * + * ErrnoReturn -- + * + * Checks a method error result if it returned an 'errno'. + * + * Results: + * The negative errno found in the error result, or 0. + * + * Side effects: + * None. + * + * Users: + * Currently only ReflectInput(), to enable the signaling of EAGAIN. + * by non-blocking channels at buffer-empty, but not EOF. + * + *---------------------------------------------------------------------- + */ + +static int +ErrnoReturn(ReflectedChannel *rcPtr, Tcl_Obj* resObj) +{ + int code; + Tcl_InterpState sr; /* State of handler interp */ + + if (!rcPtr->interp) { + return 0; + } + + sr = Tcl_SaveInterpState(rcPtr->interp, 0 /* Dummy */); + UnmarshallErrorResult(rcPtr->interp, resObj); + + resObj = Tcl_GetObjResult(rcPtr->interp); + + if (((Tcl_GetIntFromObj(rcPtr->interp, resObj, &code) != TCL_OK) || (code >= 0))) { + if (strcmp ("EAGAIN",Tcl_GetString(resObj)) == 0) { + code = -11; + } else { + code = 0; + } + } + + Tcl_RestoreInterpState(rcPtr->interp, sr); + return code; +} + +/* + *---------------------------------------------------------------------- + * * GetReflectedChannelMap -- * * Gets and potentially initializes the reflected channel map for an @@ -2749,7 +2810,13 @@ ForwardProc( Tcl_Obj *toReadObj = Tcl_NewIntObj(paramPtr->input.toRead); if (InvokeTclMethod(rcPtr, "read", toReadObj, NULL, &resObj)!=TCL_OK){ - ForwardSetObjError(paramPtr, resObj); + int code = ErrnoReturn (rcPtr, resObj); + + if (code < 0) { + paramPtr->base.code = code; + } else { + ForwardSetObjError(paramPtr, resObj); + } paramPtr->input.toRead = -1; } else { /* diff --git a/tests/ioCmd.test b/tests/ioCmd.test index fa5d058..f27d2a0 100644 --- a/tests/ioCmd.test +++ b/tests/ioCmd.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: ioCmd.test,v 1.36.2.5 2008/04/24 18:50:42 andreas_kupries Exp $ +# RCS: @(#) $Id: ioCmd.test,v 1.36.2.6 2009/08/06 22:28:44 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -980,6 +980,38 @@ test iocmd-23.8 {chan read, level is squashed} -match glob -body { rename foo {} set res } -result {{read rc* 4096} 1 *bad code* {-code 1 -level 0 -errorcode NONE -errorline 1 -errorinfo *bad code*subcommand "read"*}} +test iocmd-23.9 {chan read, no data means eof} -match glob -setup { + set res {} + proc foo {args} { + oninit; onfinal; track + return "" + } + set c [chan create {r w} foo] +} -body { + note [read $c 2] + note [eof $c] + set res +} -cleanup { + close $c + rename foo {} + unset res +} -result {{read rc* 4096} {} 1} +test iocmd-23.10 {chan read, EAGAIN means no data, yet no eof either} -match glob -setup { + set res {} + proc foo {args} { + oninit; onfinal; track + error EAGAIN + } + set c [chan create {r w} foo] +} -body { + note [read $c 2] + note [eof $c] + set res +} -cleanup { + close $c + rename foo {} + unset res +} -result {{read rc* 4096} {} 0} # --- === *** ########################### # method write @@ -2211,6 +2243,46 @@ test iocmd.tf-23.8 {chan read, level is squashed} -match glob -body { set res } -result {{read rc* 4096} 1 *bad code* {-code 1 -level 0 -errorcode NONE -errorline 1 -errorinfo *bad code*subcommand "read"*}} \ -constraints {testchannel testthread} +test iocmd.tf-23.9 {chan read, no data means eof} -match glob -setup { + set res {} + proc foo {args} { + oninit; onfinal; track + return "" + } + set c [chan create {r w} foo] +} -body { + notes [inthread $c { + note [read $c 2] + note [eof $c] + close $c + notes + } c] + set res +} -cleanup { + rename foo {} + unset res +} -result {{read rc* 4096} {} 1} \ + -constraints {testchannel testthread} +test iocmd.tf-23.10 {chan read, EAGAIN means no data, yet no eof either} -match glob -setup { + set res {} + proc foo {args} { + oninit; onfinal; track + error EAGAIN + } + set c [chan create {r w} foo] +} -body { + notes [inthread $c { + note [read $c 2] + note [eof $c] + close $c + notes + } c] + set res +} -cleanup { + rename foo {} + unset res +} -result {{read rc* 4096} {} 0} \ + -constraints {testchannel testthread} # --- === *** ########################### # method write -- cgit v0.12 From 5692abb8cd8eb0556295d7e65e607f57ed918e97 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 17 Aug 2009 20:00:01 +0000 Subject: * generic/tclFileName.c: Correct result from [glob */test] when * * tests/fileName.test: matches something like ~foo. [Bug 2837800] --- ChangeLog | 5 +++++ generic/tclFileName.c | 30 +++++++++++++++++++++++++++--- tests/fileName.test | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 64 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index e77c783..0b0209b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-08-17 Don Porter + + * generic/tclFileName.c: Correct result from [glob */test] when * + * tests/fileName.test: matches something like ~foo. [Bug 2837800] + 2009-07-23 Joe Mistachkin * generic/tclNotify.c: Fix for [Bug 2820349]. diff --git a/generic/tclFileName.c b/generic/tclFileName.c index c14893f..7d63018 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.40.2.17 2008/12/03 06:36:05 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.18 2009/08/17 20:00:01 dgp Exp $ */ #include "tclInt.h" @@ -2560,15 +2560,21 @@ TclDoGlob(interp, separators, headPtr, tail, types) head, tail, &dirOnly); *p = save; if (ret == TCL_OK) { - int resLength; + int resLength, repair = -1; ret = Tcl_ListObjLength(interp, resultPtr, &resLength); if (ret == TCL_OK) { int i; for (i =0; i< resLength; i++) { Tcl_Obj *elt; Tcl_DString ds; - Tcl_ListObjIndex(interp, resultPtr, i, &elt); + Tcl_ListObjIndex(NULL, resultPtr, i, &elt); Tcl_DStringInit(&ds); + if (Tcl_GetString(elt)[0] == '~') { + Tcl_Obj *paths = Tcl_GetObjResult(interp); + + Tcl_ListObjLength(NULL, paths, &repair); + Tcl_DStringAppend(&ds, "./", 2); + } Tcl_DStringAppend(&ds, Tcl_GetString(elt), -1); if(tclPlatform == TCL_PLATFORM_MAC) { Tcl_DStringAppend(&ds, ":",1); @@ -2580,6 +2586,24 @@ TclDoGlob(interp, separators, headPtr, tail, types) if (ret != TCL_OK) { break; } + if (repair >= 0) { + Tcl_Obj *paths = Tcl_GetObjResult(interp); + int end; + + Tcl_ListObjLength(NULL, paths, &end); + while (repair < end) { + const char *bytes; + int numBytes; + Tcl_Obj *fixme, *newObj; + Tcl_ListObjIndex(NULL, paths, repair, &fixme); + bytes = Tcl_GetStringFromObj(fixme, &numBytes); + newObj = Tcl_NewStringObj(bytes+2, numBytes-2); + Tcl_ListObjReplace(NULL, paths, repair, 1, + 1, &newObj); + repair++; + } + repair = -1; + } } } } diff --git a/tests/fileName.test b/tests/fileName.test index b197d2d..e482770 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.11 2009/03/27 19:14:36 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.12 2009/08/17 20:00:01 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -2064,6 +2064,37 @@ test fileName-20.4 {Bug 1750300} -setup { removeDirectory foo } -result 0 +test fileName-20.5 {Bug 2837800} -setup { + set dd [makeDirectory isolate] + set d [makeDirectory ./~foo $dd] + makeFile {} test $d + set savewd [pwd] + cd $dd +} -body { + glob */test +} -cleanup { + cd $savewd + removeFile test $d + removeDirectory ./~foo $dd + removeDirectory isolate +} -result ~foo/test + +test fileName-20.6 {Bug 2837800} -setup { + # Recall that we have $env(HOME) set so that references + # to ~ point to [temporaryDirectory] + makeFile {} test ~ + set dd [makeDirectory isolate] + set d [makeDirectory ./~ $dd] + set savewd [pwd] + cd $dd +} -body { + glob -nocomplain */test +} -cleanup { + cd $savewd + removeDirectory ./~ $dd + removeDirectory isolate + removeFile test ~ +} -result {} # cleanup catch {file delete -force C:/globTest} -- cgit v0.12 From 2fcbc1a3742e8947645f3165956792424d64c635 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 18 Aug 2009 14:43:58 +0000 Subject: * generic/tclPathObj.c: Added NULL check to prevent crashes during * tests/fileName.test: [glob]. [Bug 2837800] --- ChangeLog | 5 +++++ generic/tclPathObj.c | 10 ++++++++-- tests/fileName.test | 34 +++++++++++++++++++++++++++++++++- 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ed72cc4..d45e52c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-08-18 Don Porter + + * generic/tclPathObj.c: Added NULL check to prevent crashes during + * tests/fileName.test: [glob]. [Bug 2837800] + 2009-08-06 Andreas Kupries * doc/refchan.n [Bug 2827000]: Extended the implementation of diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index bb7b0f4..282b1fc 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.7 2009/03/27 19:16:49 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.8 2009/08/18 14:43:58 dgp Exp $ */ #include "tclInt.h" @@ -1165,6 +1165,7 @@ Tcl_FSConvertToPathType( return TCL_OK; } + if (pathPtr->bytes == NULL) { UpdateStringOfFsPath(pathPtr); } @@ -1680,8 +1681,13 @@ Tcl_FSGetTranslatedPath( * translated result we need, and can store it for future use. */ - Tcl_Obj *translatedCwdPtr = Tcl_FSGetTranslatedPath(interp, + Tcl_Obj *translatedCwdPtr; + + translatedCwdPtr = Tcl_FSGetTranslatedPath(interp, srcFsPathPtr->cwdPtr); + if (translatedCwdPtr == NULL) { + return NULL; + } retObj = Tcl_FSJoinToPath(translatedCwdPtr, 1, &(srcFsPathPtr->normPathPtr)); diff --git a/tests/fileName.test b/tests/fileName.test index 97bbc31..cb7f1a3 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51.8.4 2009/03/27 19:16:49 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.5 2009/08/18 14:43:59 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1590,6 +1590,38 @@ test fileName-20.4 {Bug 1750300} -setup { removeDirectory foo } -result 0 +test fileName-20.5 {Bug 2837800} -setup { + set dd [makeDirectory isolate] + set d [makeDirectory ./~foo $dd] + makeFile {} test $d + set savewd [pwd] + cd $dd +} -body { + glob */test +} -cleanup { + cd $savewd + removeFile test $d + removeDirectory ./~foo $dd + removeDirectory isolate +} -result ~foo/test + +test fileName-20.6 {Bug 2837800} -setup { + # Recall that we have $env(HOME) set so that references + # to ~ point to [temporaryDirectory] + makeFile {} test ~ + set dd [makeDirectory isolate] + set d [makeDirectory ./~ $dd] + set savewd [pwd] + cd $dd +} -body { + glob -nocomplain */test +} -cleanup { + cd $savewd + removeDirectory ./~ $dd + removeDirectory isolate + removeFile test ~ +} -result {} + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] -- cgit v0.12 From 3617c251237d1b3e5b6ff43318ca4094e1af6957 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 18 Aug 2009 16:27:20 +0000 Subject: nicer test failure mode --- tests/fileName.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/fileName.test b/tests/fileName.test index cb7f1a3..25c09ea 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51.8.5 2009/08/18 14:43:59 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.6 2009/08/18 16:27:20 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1597,7 +1597,7 @@ test fileName-20.5 {Bug 2837800} -setup { set savewd [pwd] cd $dd } -body { - glob */test + glob -nocomplain */test } -cleanup { cd $savewd removeFile test $d -- cgit v0.12 From 37c6c70523838717849f98510ccf55b258eb5c04 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 18 Aug 2009 16:27:31 +0000 Subject: nicer test failure mode --- tests/fileName.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/fileName.test b/tests/fileName.test index e482770..71f3e6b 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.12 2009/08/17 20:00:01 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.13 2009/08/18 16:27:31 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -2071,7 +2071,7 @@ test fileName-20.5 {Bug 2837800} -setup { set savewd [pwd] cd $dd } -body { - glob */test + glob -nocomplain */test } -cleanup { cd $savewd removeFile test $d -- cgit v0.12 From 637ae9db9c52f12b1881443d04b3e44d91f11431 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 18 Aug 2009 17:41:46 +0000 Subject: test for 2806250 --- tests/fileName.test | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/fileName.test b/tests/fileName.test index 71f3e6b..e4fbda8 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.13 2009/08/18 16:27:31 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.14 2009/08/18 17:41:46 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -2096,6 +2096,16 @@ test fileName-20.6 {Bug 2837800} -setup { removeFile test ~ } -result {} +test fileName-20.7 {Bug 2806250} -setup { + set d [makeDirectory isolate] + makeFile {} ./~test $d +} -body { + file exists [lindex [glob -nocomplain isolate/*] 0] +} -cleanup { + removeFile ./~test $d + removeDirectory isolate +} -result 1 + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] -- cgit v0.12 From 27d38b8b120efc45ad82a2416277f6ed729e1217 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 18 Aug 2009 17:42:15 +0000 Subject: test for 2806250 --- tests/fileName.test | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/fileName.test b/tests/fileName.test index 25c09ea..5f13eac 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51.8.6 2009/08/18 16:27:20 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.7 2009/08/18 17:42:15 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1622,6 +1622,16 @@ test fileName-20.6 {Bug 2837800} -setup { removeFile test ~ } -result {} +test fileName-20.7 {Bug 2806250} -setup { + set d [makeDirectory isolate] + makeFile {} ./~test $d +} -body { + file exists [lindex [glob -nocomplain isolate/*] 0] +} -cleanup { + removeFile ./~test $d + removeDirectory isolate +} -result 1 + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] -- cgit v0.12 From c7f320bf237ff2e5d0db130e208490a094f66906 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 19 Aug 2009 17:27:51 +0000 Subject: another test --- tests/fileName.test | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/fileName.test b/tests/fileName.test index e4fbda8..149eab5 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.14 2009/08/18 17:41:46 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.15 2009/08/19 17:27:51 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -2106,6 +2106,16 @@ test fileName-20.7 {Bug 2806250} -setup { removeDirectory isolate } -result 1 +test fileName-20.8 {Bug 2806250} -setup { + set d [makeDirectory isolate] + makeFile {} ./~test $d +} -body { + file tail [lindex [glob -nocomplain isolate/*] 0] +} -cleanup { + removeFile ./~test $d + removeDirectory isolate +} -result ./~test + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] -- cgit v0.12 From 9e2afa863774403642eba857799a3b5eee58e623 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 19 Aug 2009 17:29:06 +0000 Subject: another test --- tests/fileName.test | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/fileName.test b/tests/fileName.test index 5f13eac..591f8a4 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51.8.7 2009/08/18 17:42:15 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.8 2009/08/19 17:29:06 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1632,6 +1632,16 @@ test fileName-20.7 {Bug 2806250} -setup { removeDirectory isolate } -result 1 +test fileName-20.8 {Bug 2806250} -setup { + set d [makeDirectory isolate] + makeFile {} ./~test $d +} -body { + file tail [lindex [glob -nocomplain isolate/*] 0] +} -cleanup { + removeFile ./~test $d + removeDirectory isolate +} -result ./~test + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] -- cgit v0.12 From 448e644c7e3981261214ecddd21923534377a6f2 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 20 Aug 2009 14:29:13 +0000 Subject: Backport of memory leak plug. --- ChangeLog | 17 ++++++++++------- generic/tclCmdIL.c | 5 ++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index d45e52c..45e23f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,16 +1,19 @@ +2009-08-20 Donal K. Fellows + + * generic/tclCmdIL.c (Tcl_LsortObjCmd): Plug memory leak. + 2009-08-18 Don Porter - * generic/tclPathObj.c: Added NULL check to prevent crashes during - * tests/fileName.test: [glob]. [Bug 2837800] + * generic/tclPathObj.c: [Bug 2837800]: Added NULL check to prevent + * tests/fileName.test: crashes during [glob]. 2009-08-06 Andreas Kupries * doc/refchan.n [Bug 2827000]: Extended the implementation of - * generic/tclIORChan.c: reflective channels (TIP 219, method - * tests/ioCmd.test: 'read'), enabling handlers to signal EAGAIN to - indicate 'no data, but not at EOF either', and other system - errors. Updated documentation, extended testsuite (New test cases - iocmd*-23.{9,10}). + * generic/tclIORChan.c: reflective channels (TIP 219, method 'read'), + * tests/ioCmd.test: enabling handlers to signal EAGAIN to indicate 'no + data, but not at EOF either', and other system errors. Updated + documentation, extended testsuite (New test cases iocmd*-23.{9,10}). 2009-08-02 Donal K. Fellows diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index e485347..fed7975 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.7 2009/07/16 20:50:54 dgp Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.137.2.8 2009/08/20 14:29:14 dkf Exp $ */ #include "tclInt.h" @@ -3501,6 +3501,9 @@ Tcl_LsortObjCmd( for (i = 1; i < objc-1; i++) { if (Tcl_GetIndexFromObj(interp, objv[i], switches, "option", 0, &index) != TCL_OK) { + if (sortInfo.indexc > 1) { + ckfree((char *) sortInfo.indexv); + } return TCL_ERROR; } switch ((enum Lsort_Switches) index) { -- cgit v0.12 From 1f93e1ab3fd01d0f68a3cfe19185e00a07a7d884 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 20 Aug 2009 14:59:53 +0000 Subject: * generic/tclPathObj.c: [Bug 2806250] Prevent the storage of strings starting with ~ in the "tail" part (normPathPtr field) of the path intrep when PATHFLAGS != 0. This establishes the assumptions relied on elsewhere that the name stored there is a relative path. Also refactored to make an AppendPath() routine instead of the cut/paste stanzas that were littered throughout. --- ChangeLog | 9 +++ generic/tclPathObj.c | 203 +++++++++++++++++++++++++-------------------------- 2 files changed, 108 insertions(+), 104 deletions(-) diff --git a/ChangeLog b/ChangeLog index 45e23f8..7ef505f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-08-20 Don Porter + + * generic/tclPathObj.c: [Bug 2806250] Prevent the storage of strings + starting with ~ in the "tail" part (normPathPtr field) of the path + intrep when PATHFLAGS != 0. This establishes the assumptions relied + on elsewhere that the name stored there is a relative path. Also + refactored to make an AppendPath() routine instead of the cut/paste + stanzas that were littered throughout. + 2009-08-20 Donal K. Fellows * generic/tclCmdIL.c (Tcl_LsortObjCmd): Plug memory leak. diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index 282b1fc..60220b9 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.8 2009/08/18 14:43:58 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.9 2009/08/20 14:59:53 dgp Exp $ */ #include "tclInt.h" @@ -20,6 +20,7 @@ * Prototypes for functions defined later in this file. */ +static Tcl_Obj * AppendPath(Tcl_Obj *head, Tcl_Obj *tail); static void DupFsPathInternalRep(Tcl_Obj *srcPtr, Tcl_Obj *copyPtr); static void FreeFsPathInternalRep(Tcl_Obj *pathPtr); @@ -1286,6 +1287,30 @@ TclNewFSPathObj( const char *p; int state = 0, count = 0; + /* [Bug 2806250] - this is only a partial solution of the problem. + * The PATHFLAGS != 0 representation assumes in many places that + * the "tail" part stored in the normPathPtr field is itself a + * relative path. Strings that begin with "~" are not relative paths, + * so we must prevent their storage in the normPathPtr field. + * + * More generally we ought to be testing "addStrRep" for any value + * that is not a relative path, but in an unconstrained VFS world + * that could be just about anything, and testing could be expensive. + * Since this routine plays a big role in [glob], anything that slows + * it down would be unwelcome. For now, continue the risk of further + * bugs when some Tcl_Filesystem uses otherwise relative path strings + * as absolute path strings. Sensible Tcl_Filesystems will avoid + * that by mounting on path prefixes like foo:// which cannot be the + * name of a file or directory read from a native [glob] operation. + */ + if (addStrRep[0] == '~') { + Tcl_Obj *tail = Tcl_NewStringObj(addStrRep, len); + + pathPtr = AppendPath(dirPtr, tail); + Tcl_DecrRefCount(tail); + return pathPtr; + } + tsdPtr = TCL_TSD_INIT(&tclFsDataKey); pathPtr = Tcl_NewObj(); @@ -1351,6 +1376,49 @@ TclNewFSPathObj( return pathPtr; } + +static Tcl_Obj * +AppendPath( + Tcl_Obj *head, + Tcl_Obj *tail) +{ + int numBytes; + const char *bytes; + Tcl_Obj *copy = Tcl_DuplicateObj(head); + + bytes = Tcl_GetStringFromObj(copy, &numBytes); + + /* + * Should we perhaps use 'Tcl_FSPathSeparator'? But then what about the + * Windows special case? Perhaps we should just check if cwd is a root + * volume. We should never get numBytes == 0 in this code path. + */ + + switch (tclPlatform) { + case TCL_PLATFORM_UNIX: + if (bytes[numBytes-1] != '/') { + Tcl_AppendToObj(copy, "/", 1); + } + break; + + case TCL_PLATFORM_WINDOWS: + /* + * We need the extra 'numBytes != 2', and ':' checks because a volume + * relative path doesn't get a '/'. For example 'glob C:*cat*.exe' + * will return 'C:cat32.exe' + */ + + if (bytes[numBytes-1] != '/' && bytes[numBytes-1] != '\\') { + if (numBytes!= 2 || bytes[1] != ':') { + Tcl_AppendToObj(copy, "/", 1); + } + } + break; + } + + Tcl_AppendObjToObj(copy, tail); + return copy; +} /* *--------------------------------------------------------------------------- @@ -1364,11 +1432,6 @@ TclNewFSPathObj( * directory. Returns a Tcl_Obj representing filename of the path * relative to the directory. * - * In the case where the resulting path would start with a '~', we take - * special care to return an ordinary string. This means to use that path - * (and not have it interpreted as a user name), one must prepend './'. - * This may seem strange, but that is how 'glob' is currently defined. - * * Results: * NULL on error, otherwise a valid object, typically with refCount of * zero, which it is assumed the caller will increment. @@ -1396,6 +1459,26 @@ TclFSMakePathRelative( && fsPathPtr->cwdPtr == cwdPtr) { pathPtr = fsPathPtr->normPathPtr; + /* TODO: Determine how much, if any, of this forcing + * the relative path tail into the "path" Tcl_ObjType + * with a recorded cwdPtr context has any actual value. + * + * Nothing is getting cached. Not normPathPtr, not nativePathPtr, + * nor fsRecPtr, so storing the cwdPtr context against which such + * cached values might later be validated appears to be of no + * value. Take that away, and all this code is just a mildly + * optimized equivalent of a call to SetFsPathFromAny(). That + * optimization may have some value, *if* these value in fact + * get used as "path" values before used as something else. + * If not, though, whatever cost we pay below to convert to + * one of the "path" intreps is just a waste, it seems. The + * usual convention in the core is to delay ObjType conversion + * until it is needed and demanded, and I don't see why this + * section of code should be an exception to that. Leaving it + * in place for the rest of the 8.5.* releases just for sake + * of stability. + */ + /* * Free old representation. */ @@ -1419,16 +1502,6 @@ TclFSMakePathRelative( * Now pathPtr is a string object. */ - if (Tcl_GetString(pathPtr)[0] == '~') { - /* - * If the first character of the path is a tilde, we must just - * return the path as is, to agree with the defined behaviour - * of 'glob'. - */ - - return pathPtr; - } - fsPathPtr = (FsPath *) ckalloc(sizeof(FsPath)); /* @@ -1796,7 +1869,6 @@ Tcl_FSGetNormalizedPath( Tcl_Obj *dir, *copy; int cwdLen; int pathType; - const char *cwdStr; ClientData clientData = NULL; pathType = Tcl_FSGetPathType(fsPathPtr->cwdPtr); @@ -1804,40 +1876,21 @@ Tcl_FSGetNormalizedPath( if (dir == NULL) { return NULL; } + /* TODO: Figure out why this is needed. */ if (pathPtr->bytes == NULL) { UpdateStringOfFsPath(pathPtr); } - copy = Tcl_DuplicateObj(dir); - Tcl_IncrRefCount(copy); + + copy = AppendPath(dir, fsPathPtr->normPathPtr); Tcl_IncrRefCount(dir); + Tcl_IncrRefCount(copy); /* * We now own a reference on both 'dir' and 'copy' */ - cwdStr = Tcl_GetStringFromObj(copy, &cwdLen); - - /* - * Should we perhaps use 'Tcl_FSPathSeparator'? But then what about - * the Windows special case? Perhaps we should just check if cwd is a - * root volume. We should never get cwdLen == 0 in this code path. - */ - - switch (tclPlatform) { - case TCL_PLATFORM_UNIX: - if (cwdStr[cwdLen-1] != '/') { - Tcl_AppendToObj(copy, "/", 1); - cwdLen++; - } - break; - case TCL_PLATFORM_WINDOWS: - if (cwdStr[cwdLen-1] != '/' && cwdStr[cwdLen-1] != '\\') { - Tcl_AppendToObj(copy, "/", 1); - cwdLen++; - } - break; - } - Tcl_AppendObjToObj(copy, fsPathPtr->normPathPtr); + (void) Tcl_GetStringFromObj(dir, &cwdLen); + cwdLen += (Tcl_GetString(copy)[cwdLen] == '/'); /* Normalize the combined string. */ @@ -1937,35 +1990,12 @@ Tcl_FSGetNormalizedPath( } else if (fsPathPtr->normPathPtr == NULL) { int cwdLen; Tcl_Obj *copy; - const char *cwdStr; ClientData clientData = NULL; - copy = Tcl_DuplicateObj(fsPathPtr->cwdPtr); - Tcl_IncrRefCount(copy); - cwdStr = Tcl_GetStringFromObj(copy, &cwdLen); + copy = AppendPath(fsPathPtr->cwdPtr, pathPtr); - /* - * Should we perhaps use 'Tcl_FSPathSeparator'? But then what - * about the Windows special case? Perhaps we should just check if - * cwd is a root volume. We should never get cwdLen == 0 in this - * code path. - */ - - switch (tclPlatform) { - case TCL_PLATFORM_UNIX: - if (cwdStr[cwdLen-1] != '/') { - Tcl_AppendToObj(copy, "/", 1); - cwdLen++; - } - break; - case TCL_PLATFORM_WINDOWS: - if (cwdStr[cwdLen-1] != '/' && cwdStr[cwdLen-1] != '\\') { - Tcl_AppendToObj(copy, "/", 1); - cwdLen++; - } - break; - } - Tcl_AppendObjToObj(copy, pathPtr); + (void) Tcl_GetStringFromObj(fsPathPtr->cwdPtr, &cwdLen); + cwdLen += (Tcl_GetString(copy)[cwdLen] == '/'); /* * Normalize the combined string, but only starting after the end @@ -2716,7 +2746,6 @@ UpdateStringOfFsPath( register Tcl_Obj *pathPtr) /* path obj with string rep to update. */ { FsPath *fsPathPtr = PATHOBJ(pathPtr); - const char *cwdStr; int cwdLen; Tcl_Obj *copy; @@ -2724,42 +2753,8 @@ UpdateStringOfFsPath( Tcl_Panic("Called UpdateStringOfFsPath with invalid object"); } - copy = Tcl_DuplicateObj(fsPathPtr->cwdPtr); - Tcl_IncrRefCount(copy); - - cwdStr = Tcl_GetStringFromObj(copy, &cwdLen); - - /* - * Should we perhaps use 'Tcl_FSPathSeparator'? But then what about the - * Windows special case? Perhaps we should just check if cwd is a root - * volume. We should never get cwdLen == 0 in this code path. - */ - - switch (tclPlatform) { - case TCL_PLATFORM_UNIX: - if (cwdStr[cwdLen-1] != '/') { - Tcl_AppendToObj(copy, "/", 1); - cwdLen++; - } - break; - - case TCL_PLATFORM_WINDOWS: - /* - * We need the extra 'cwdLen != 2', and ':' checks because a volume - * relative path doesn't get a '/'. For example 'glob C:*cat*.exe' - * will return 'C:cat32.exe' - */ - - if (cwdStr[cwdLen-1] != '/' && cwdStr[cwdLen-1] != '\\') { - if (cwdLen != 2 || cwdStr[1] != ':') { - Tcl_AppendToObj(copy, "/", 1); - cwdLen++; - } - } - break; - } + copy = AppendPath(fsPathPtr->cwdPtr, fsPathPtr->normPathPtr); - Tcl_AppendObjToObj(copy, fsPathPtr->normPathPtr); pathPtr->bytes = Tcl_GetStringFromObj(copy, &cwdLen); pathPtr->length = cwdLen; copy->bytes = tclEmptyStringRep; -- cgit v0.12 From fa5ee967b1643fdd114d19a71f4d12e10a2b4b54 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 20 Aug 2009 22:08:02 +0000 Subject: * generic/tclFileName.c: Correct result from [glob */test] when * matches something like ~foo. [Bug 2837800] --- ChangeLog | 3 +++ generic/tclFileName.c | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ef505f..48355a4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2009-08-20 Don Porter + * generic/tclFileName.c: Correct result from [glob */test] when * + matches something like ~foo. [Bug 2837800] + * generic/tclPathObj.c: [Bug 2806250] Prevent the storage of strings starting with ~ in the "tail" part (normPathPtr field) of the path intrep when PATHFLAGS != 0. This establishes the assumptions relied diff --git a/generic/tclFileName.c b/generic/tclFileName.c index c56c684..b2d43b9 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.86.2.2 2008/12/03 07:03:13 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.86.2.3 2009/08/20 22:08:03 dgp Exp $ */ #include "tclInt.h" @@ -2350,14 +2350,42 @@ DoGlob( pattern, &dirOnly); *p = save; if (result == TCL_OK) { - int subdirc, i; + int subdirc, i, repair = -1; Tcl_Obj **subdirv; result = Tcl_ListObjGetElements(interp, subdirsPtr, &subdirc, &subdirv); for (i=0; result==TCL_OK && i Date: Fri, 21 Aug 2009 18:31:23 +0000 Subject: regression tests --- tests/fileName.test | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/tests/fileName.test b/tests/fileName.test index 149eab5..32516a4 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.30.2.15 2009/08/19 17:27:51 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.30.2.16 2009/08/21 18:31:23 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -2116,6 +2116,38 @@ test fileName-20.8 {Bug 2806250} -setup { removeDirectory isolate } -result ./~test +test fileName-20.9 {} -setup { + makeFile {} test ~ + set d [makeDirectory isolate] + set savewd [pwd] + cd $d +} -body { + glob -nocomplain -directory ~ test +} -cleanup { + cd $savewd + removeDirectory isolate + removeFile test ~ +} -result [file normalize ~/test] +# The normalized result here is arguably buggy, but consistent +# with (some?) 8.4.* releases. + +test fileName-20.10 {} -setup { + set s [makeDirectory sub ~] + makeFile {} fileName-20.10 $s + set d [makeDirectory isolate] + set savewd [pwd] + cd $d +} -body { + glob -nocomplain -directory ~ -join * fileName-20.10 +} -cleanup { + cd $savewd + removeDirectory isolate + removeFile fileName-20.10 $s + removeDirectory sub ~ +} -result [file normalize ~/sub/fileName-20.10] +# The normalized result here is arguably buggy, but consistent +# with (some?) 8.4.* releases. + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] -- cgit v0.12 From a2bdafd99ae6e5df62b2c941de3dd77949fa50b3 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 21 Aug 2009 18:31:37 +0000 Subject: regression tests --- tests/fileName.test | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tests/fileName.test b/tests/fileName.test index 591f8a4..8986cc2 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51.8.8 2009/08/19 17:29:06 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.9 2009/08/21 18:31:37 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1642,6 +1642,34 @@ test fileName-20.8 {Bug 2806250} -setup { removeDirectory isolate } -result ./~test +test fileName-20.9 {} -setup { + makeFile {} test ~ + set d [makeDirectory isolate] + set savewd [pwd] + cd $d +} -body { + glob -nocomplain -directory ~ test +} -cleanup { + cd $savewd + removeDirectory isolate + removeFile test ~ +} -result ~/test + +test fileName-20.10 {} -setup { + set s [makeDirectory sub ~] + makeFile {} fileName-20.10 $s + set d [makeDirectory isolate] + set savewd [pwd] + cd $d +} -body { + glob -nocomplain -directory ~ -join * fileName-20.10 +} -cleanup { + cd $savewd + removeDirectory isolate + removeFile fileName-20.10 $s + removeDirectory sub ~ +} -result ~/sub/fileName-20.10 + # cleanup catch {file delete -force C:/globTest} cd [temporaryDirectory] -- cgit v0.12 From 836091ea9efae698840e779b54318c3955f4a999 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 21 Aug 2009 19:03:20 +0000 Subject: * generic/tclFileName.c: Correct regression in [Bug 2837800] fix. * tests/fileName.test: --- ChangeLog | 5 +++++ generic/tclFileName.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 48355a4..84d8453 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-08-21 Don Porter + + * generic/tclFileName.c: Correct regression in [Bug 2837800] fix. + * tests/fileName.test: + 2009-08-20 Don Porter * generic/tclFileName.c: Correct result from [glob */test] when * diff --git a/generic/tclFileName.c b/generic/tclFileName.c index b2d43b9..893f68c 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.86.2.3 2009/08/20 22:08:03 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.86.2.4 2009/08/21 19:03:20 dgp Exp $ */ #include "tclInt.h" @@ -2358,7 +2358,7 @@ DoGlob( for (i=0; result==TCL_OK && i Date: Mon, 24 Aug 2009 00:27:53 +0000 Subject: * macosx/tclMacOSXNotify.c: fix multiple issues with nested event loops when CoreFoundation notifier is running in embedded mode. (fixes problems in TkAqua Cocoa reported by Youness Alaoui on tcl-mac) --- ChangeLog | 6 ++++ macosx/tclMacOSXNotify.c | 79 +++++++++++++++++++++++++++++++----------------- 2 files changed, 58 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84d8453..f982bcd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-08-24 Daniel Steffen + + * macosx/tclMacOSXNotify.c: fix multiple issues with nested event loops + when CoreFoundation notifier is running in embedded mode. (fixes + problems in TkAqua Cocoa reported by Youness Alaoui on tcl-mac) + 2009-08-21 Don Porter * generic/tclFileName.c: Correct regression in [Bug 2837800] fix. diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c index f56bb9a..8016b32 100644 --- a/macosx/tclMacOSXNotify.c +++ b/macosx/tclMacOSXNotify.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18.2.4 2009/04/14 00:55:34 das Exp $ + * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.18.2.5 2009/08/24 00:27:53 das Exp $ */ #include "tclInt.h" @@ -246,6 +246,8 @@ typedef struct ThreadSpecificData { * performed. */ int runLoopRunning; /* True if this thread's Tcl runLoop is running */ int runLoopNestingLevel; /* Level of nested runLoop invocations */ + int runLoopServicingEvents; /* True if this thread's runLoop is servicing + * tcl events */ /* Must hold the notifierLock before accessing the following fields: */ /* Start notifierLock section */ int onList; /* True if this thread is on the waitingList */ @@ -277,7 +279,7 @@ typedef struct ThreadSpecificData { /* Any other thread alerts a notifier that an * event is ready to be processed by signaling * this CFRunLoopSource. */ - CFRunLoopObserverRef runLoopObserver; + CFRunLoopObserverRef runLoopObserver, runLoopObserverTcl; /* Adds/removes this thread from waitingList * when the CFRunLoop starts/stops. */ CFRunLoopTimerRef runLoopTimer; @@ -453,7 +455,7 @@ Tcl_InitNotifier(void) CFRunLoopSourceRef runLoopSource; CFRunLoopSourceContext runLoopSourceContext; CFRunLoopObserverContext runLoopObserverContext; - CFRunLoopObserverRef runLoopObserver; + CFRunLoopObserverRef runLoopObserver, runLoopObserverTcl; bzero(&runLoopSourceContext, sizeof(CFRunLoopSourceContext)); runLoopSourceContext.info = tsdPtr; @@ -477,12 +479,30 @@ Tcl_InitNotifier(void) "CFRunLoopObserver"); } CFRunLoopAddObserver(runLoop, runLoopObserver, kCFRunLoopCommonModes); - CFRunLoopAddObserver(runLoop, runLoopObserver, + + /* + * Create a second CFRunLoopObserver with the same callback as above + * for the tclEventsOnlyRunLoopMode to ensure that the callback can be + * re-entered via Tcl_ServiceAll() in the kCFRunLoopBeforeWaiting case + * (CFRunLoop prevents observer callback re-entry of a given observer + * instance). + */ + + runLoopObserverTcl = CFRunLoopObserverCreate(NULL, + kCFRunLoopEntry|kCFRunLoopExit|kCFRunLoopBeforeWaiting, TRUE, + LONG_MIN, UpdateWaitingListAndServiceEvents, + &runLoopObserverContext); + if (!runLoopObserverTcl) { + Tcl_Panic("Tcl_InitNotifier: could not create " + "CFRunLoopObserver"); + } + CFRunLoopAddObserver(runLoop, runLoopObserverTcl, tclEventsOnlyRunLoopMode); tsdPtr->runLoop = runLoop; tsdPtr->runLoopSource = runLoopSource; tsdPtr->runLoopObserver = runLoopObserver; + tsdPtr->runLoopObserverTcl = runLoopObserverTcl; tsdPtr->runLoopTimer = NULL; tsdPtr->waitTime = CF_TIMEINTERVAL_FOREVER; tsdPtr->tsdLock = SPINLOCK_INIT; @@ -710,6 +730,9 @@ Tcl_FinalizeNotifier( CFRunLoopObserverInvalidate(tsdPtr->runLoopObserver); CFRelease(tsdPtr->runLoopObserver); tsdPtr->runLoopObserver = NULL; + CFRunLoopObserverInvalidate(tsdPtr->runLoopObserverTcl); + CFRelease(tsdPtr->runLoopObserverTcl); + tsdPtr->runLoopObserverTcl = NULL; if (tsdPtr->runLoopTimer) { CFRunLoopTimerInvalidate(tsdPtr->runLoopTimer); CFRelease(tsdPtr->runLoopTimer); @@ -1150,9 +1173,8 @@ int Tcl_WaitForEvent( Tcl_Time *timePtr) /* Maximum block time, or NULL. */ { - int result, polling; + int result, polling, runLoopRunning; CFTimeInterval waitTime; - CFStringRef runLoopMode; SInt32 runLoopStatus; ThreadSpecificData *tsdPtr; @@ -1200,22 +1222,20 @@ Tcl_WaitForEvent( tsdPtr->runLoopSourcePerformed = 0; /* - * If the Tcl run loop is already running (e.g. if Tcl_WaitForEvent was - * called recursively), re-run it in a custom run loop mode containing only - * the source for the notifier thread, otherwise wakeups from other sources - * added to the common run loop modes might get lost. + * If the Tcl runloop is already running (e.g. if Tcl_WaitForEvent was + * called recursively) or is servicing events via the runloop observer, + * re-run it in a custom runloop mode containing only the source for the + * notifier thread, otherwise wakeups from other sources added to the + * common runloop modes might get lost or 3rd party event handlers might + * get called when they do not expect to be. */ - if (tsdPtr->runLoopRunning) { - runLoopMode = tclEventsOnlyRunLoopMode; - } else { - runLoopMode = kCFRunLoopDefaultMode; - tsdPtr->runLoopRunning = 1; - } - runLoopStatus = CFRunLoopRunInMode(runLoopMode, waitTime, TRUE); - if (runLoopMode == kCFRunLoopDefaultMode) { - tsdPtr->runLoopRunning = 0; - } + runLoopRunning = tsdPtr->runLoopRunning; + tsdPtr->runLoopRunning = 1; + runLoopStatus = CFRunLoopRunInMode(tsdPtr->runLoopServicingEvents || + runLoopRunning ? tclEventsOnlyRunLoopMode : kCFRunLoopDefaultMode, + waitTime, TRUE); + tsdPtr->runLoopRunning = runLoopRunning; LOCK_NOTIFIER_TSD; tsdPtr->polling = 0; @@ -1333,19 +1353,22 @@ UpdateWaitingListAndServiceEvents( { ThreadSpecificData *tsdPtr = (ThreadSpecificData*) info; + if (tsdPtr->sleeping) { + return; + } switch (activity) { case kCFRunLoopEntry: tsdPtr->runLoopNestingLevel++; - if (tsdPtr->runLoopNestingLevel == 1 && !tsdPtr->sleeping && - (tsdPtr->numFdBits > 0 || tsdPtr->polling)) { + if (tsdPtr->numFdBits > 0 || tsdPtr->polling) { LOCK_NOTIFIER; - OnOffWaitingList(tsdPtr, 1, 1); + if (!OnOffWaitingList(tsdPtr, 1, 1) && tsdPtr->polling) { + write(triggerPipe, "", 1); + } UNLOCK_NOTIFIER; } break; case kCFRunLoopExit: - if (tsdPtr->runLoopNestingLevel == 1 && !tsdPtr->sleeping && - (tsdPtr->numFdBits > 0 || tsdPtr->polling)) { + if (tsdPtr->runLoopNestingLevel == 1) { LOCK_NOTIFIER; OnOffWaitingList(tsdPtr, 0, 1); UNLOCK_NOTIFIER; @@ -1353,9 +1376,11 @@ UpdateWaitingListAndServiceEvents( tsdPtr->runLoopNestingLevel--; break; case kCFRunLoopBeforeWaiting: - if (!tsdPtr->sleeping && tsdPtr->runLoopTimer && + if (tsdPtr->runLoopTimer && !tsdPtr->runLoopServicingEvents && (tsdPtr->runLoopNestingLevel > 1 || !tsdPtr->runLoopRunning)) { + tsdPtr->runLoopServicingEvents = 1; while (Tcl_ServiceAll() && tsdPtr->waitTime == 0) {} + tsdPtr->runLoopServicingEvents = 0; } break; default: @@ -1641,7 +1666,7 @@ TclUnixWaitForFile( if (FD_ISSET(fd, &writableMask)) { SET_BITS(result, TCL_WRITABLE); } - if (FD_ISSET(fd, &exceptionalMask)) { + if (FD_ISSET(fd, &exceptionalMask)) { SET_BITS(result, TCL_EXCEPTION); } result &= mask; -- cgit v0.12 From 290495c7ce8eaa67ffe2fa4fc3b8106742148a27 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 25 Aug 2009 20:59:09 +0000 Subject: * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations, TclEvalObjEx): * generic/tclCmdMZ.c (Tcl_SwitchObjCmd, ListLines): * generic/tclCompCmds.c (*): * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv, TclFreeCompileEnv, TclCompileScript): * generic/tclCompile.h (CompileEnv): * generic/tclInt.h (ContLineLoc, Interp): * generic/tclObj.c (ThreadSpecificData, ContLineLocFree, TclThreadFinalizeObjects, TclInitObjSubsystem, TclContinuationsEnter, TclContinuationsEnterDerived, TclContinuationsCopy, TclContinuationsGet, TclFreeObj): * generic/tclProc.c (TclCreateProc): * generic/tclVar.c (TclPtrSetVar): * tests/info.test (info-30.0-22): Extended parser, compiler, and execution with code and attendant data structures tracking the positions of continuation lines which are not visible in script's, to properly account for them while counting lines for #280, during direct and compiled execution. --- ChangeLog | 24 ++++ generic/tclBasic.c | 300 ++++++++++++++++++++++++++++++++++++--- generic/tclCmdMZ.c | 45 +++--- generic/tclCompCmds.c | 354 ++++++++++++---------------------------------- generic/tclCompile.c | 183 ++++++++++++++++++++++-- generic/tclCompile.h | 10 +- generic/tclExecute.c | 6 +- generic/tclInt.h | 62 ++++++++- generic/tclObj.c | 379 +++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclProc.c | 14 +- generic/tclVar.c | 11 +- tests/info.test | 263 +++++++++++++++++++++++++++++++++-- 12 files changed, 1313 insertions(+), 338 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0b0209b..0b1281d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2009-08-25 Andreas Kupries + + * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, + EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations, + TclEvalObjEx): + * generic/tclCmdMZ.c (Tcl_SwitchObjCmd, ListLines): + * generic/tclCompCmds.c (*): + * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv, + TclFreeCompileEnv, TclCompileScript): + * generic/tclCompile.h (CompileEnv): + * generic/tclInt.h (ContLineLoc, Interp): + * generic/tclObj.c (ThreadSpecificData, ContLineLocFree, + TclThreadFinalizeObjects, TclInitObjSubsystem, + TclContinuationsEnter, TclContinuationsEnterDerived, + TclContinuationsCopy, TclContinuationsGet, TclFreeObj): + * generic/tclProc.c (TclCreateProc): + * generic/tclVar.c (TclPtrSetVar): + * tests/info.test (info-30.0-22): + + Extended parser, compiler, and execution with code and attendant + data structures tracking the positions of continuation lines which + are not visible in script's, to properly account for them while + counting lines for #280, during direct and compiled execution. + 2009-08-17 Don Porter * generic/tclFileName.c: Correct result from [glob */test] when * diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 6afe56a..715af1b 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.36 2009/07/23 15:23:54 das Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.37 2009/08/25 20:59:10 andreas_kupries Exp $ */ #include "tclInt.h" @@ -43,13 +43,15 @@ static int StringTraceProc _ANSI_ARGS_((ClientData clientData, static void StringTraceDeleteProc _ANSI_ARGS_((ClientData clientData)); #ifdef TCL_TIP280 -/* TIP #280 - Modified token based evulation, with line information */ +/* TIP #280 - Modified token based evaluation, with line information */ static int EvalEx _ANSI_ARGS_((Tcl_Interp *interp, CONST char *script, - int numBytes, int flags, int line)); + int numBytes, int flags, int line, + int* clNextOuter, CONST char* outerScript)); static int EvalTokensStandard _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Token *tokenPtr, - int count, int line)); + int count, int line, + int* clNextOuter, CONST char* outerScript)); #endif #ifdef USE_DTRACE @@ -365,6 +367,7 @@ Tcl_CreateInterp() Tcl_InitHashTable(iPtr->lineBCPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineLAPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineLABCPtr, TCL_ONE_WORD_KEYS); + iPtr->scriptCLLocPtr = NULL; #endif iPtr->activeVarTracePtr = NULL; @@ -3544,11 +3547,11 @@ Tcl_EvalTokensStandard(interp, tokenPtr, count) * Must be at least 1. */ { #ifdef TCL_TIP280 - return EvalTokensStandard (interp, tokenPtr, count, 1); + return EvalTokensStandard (interp, tokenPtr, count, 1, NULL, NULL); } static int -EvalTokensStandard(interp, tokenPtr, count, line) +EvalTokensStandard(interp, tokenPtr, count, line, clNextOuter, outerScript) Tcl_Interp *interp; /* Interpreter in which to lookup * variables, execute nested commands, * and report errors. */ @@ -3557,6 +3560,22 @@ EvalTokensStandard(interp, tokenPtr, count, line) int count; /* Number of tokens to consider at tokenPtr. * Must be at least 1. */ int line; /* The line the script starts on. */ + int* clNextOuter; /* Information about an outer context for */ + CONST char* outerScript; /* continuation line data. This is set by + * EvalEx() to properly handle [...]-nested + * commands. The 'outerScript' refers to the + * most-outer script containing the embedded + * command, which is refered to by 'script'. The + * 'clNextOuter' refers to the current entry in + * the table of continuation lines in this + * "master script", and the character offsets are + * relative to the 'outerScript' as well. + * + * If outerScript == script, then this call is for + * words in the outer-most script/command. See + * Tcl_EvalEx() and TclEvalObjEx() for the places + * generating arguments for which this is true. + */ { #endif Tcl_Obj *resultPtr, *indexPtr, *valuePtr; @@ -3570,6 +3589,13 @@ EvalTokensStandard(interp, tokenPtr, count, line) char *varName, *index; CONST char *p = NULL; /* Initialized to avoid compiler warning. */ int length, code; +#ifdef TCL_TIP280 +#define NUM_STATIC_POS 20 + int isLiteral, maxNumCL, numCL, i, adjust; + int* clPosition; + Interp* iPtr = (Interp*) interp; + int inFile = iPtr->evalFlags & TCL_EVAL_FILE; +#endif /* * The only tricky thing about this procedure is that it attempts to @@ -3581,6 +3607,32 @@ EvalTokensStandard(interp, tokenPtr, count, line) code = TCL_OK; resultPtr = NULL; Tcl_ResetResult(interp); +#ifdef TCL_TIP280 + /* + * For the handling of continuation lines in literals we first check if + * this is actually a literal. For if not we can forego the additional + * processing. Otherwise we pre-allocate a small table to store the + * locations of all continuation lines we find in this literal, if + * any. The table is extended if needed. + */ + + numCL = 0; + maxNumCL = 0; + isLiteral = 1; + for (i=0 ; i < count; i++) { + if ((tokenPtr[i].type != TCL_TOKEN_TEXT) && + (tokenPtr[i].type != TCL_TOKEN_BS)) { + isLiteral = 0; + break; + } + } + + if (isLiteral) { + maxNumCL = NUM_STATIC_POS; + clPosition = (int*) ckalloc (maxNumCL*sizeof(int)); + } + adjust = 0; +#endif for ( ; count > 0; count--, tokenPtr++) { valuePtr = NULL; @@ -3600,6 +3652,43 @@ EvalTokensStandard(interp, tokenPtr, count, line) length = Tcl_UtfBackslash(tokenPtr->start, (int *) NULL, buffer); p = buffer; +#ifdef TCL_TIP280 + /* + * If the backslash sequence we found is in a literal, and + * represented a continuation line, we compute and store its + * location (as char offset to the beginning of the _result_ + * script). We may have to extend the table of locations. + * + * Note that the continuation line information is relevant + * even if the word we are processing is not a literal, as it + * can affect nested commands. See the branch for + * TCL_TOKEN_COMMAND below, where the adjustment we are + * tracking here is taken into account. The good thing is that + * we do not need a table of everything, just the number of + * lines we have to add as correction. + */ + + if ((length == 1) && (buffer[0] == ' ') && + (tokenPtr->start[1] == '\n')) { + if (isLiteral) { + int clPos; + if (resultPtr == 0) { + clPos = 0; + } else { + Tcl_GetStringFromObj(resultPtr, &clPos); + } + + if (numCL >= maxNumCL) { + maxNumCL *= 2; + clPosition = (int*) ckrealloc ((char*)clPosition, + maxNumCL*sizeof(int)); + } + clPosition[numCL] = clPos; + numCL ++; + } + adjust ++; + } +#endif break; case TCL_TOKEN_COMMAND: { @@ -3612,8 +3701,19 @@ EvalTokensStandard(interp, tokenPtr, count, line) tokenPtr->start+1, tokenPtr->size-2, 0); #else /* TIP #280: Transfer line information to nested command */ + TclAdvanceContinuations (&line, &clNextOuter, + tokenPtr->start - outerScript); code = EvalEx(interp, - tokenPtr->start+1, tokenPtr->size-2, 0, line); + tokenPtr->start+1, tokenPtr->size-2, 0, + line + adjust, clNextOuter, outerScript); + + /* + * Restore flag reset by the nested eval for future + * bracketed commands and their CmdFrame setup + */ + if (inFile) { + iPtr->evalFlags |= TCL_EVAL_FILE; + } #endif } iPtr->numLevels--; @@ -3635,7 +3735,7 @@ EvalTokensStandard(interp, tokenPtr, count, line) #else /* TIP #280: Transfer line information to nested command */ code = EvalTokensStandard(interp, tokenPtr+2, - tokenPtr->numComponents - 1, line); + tokenPtr->numComponents - 1, line, NULL, NULL); #endif if (code != TCL_OK) { goto done; @@ -3706,6 +3806,28 @@ EvalTokensStandard(interp, tokenPtr, count, line) } if (resultPtr != NULL) { Tcl_SetObjResult(interp, resultPtr); +#ifdef TCL_TIP280 + /* + * If the code found continuation lines (which implies that this word + * is a literal), then we store the accumulated table of locations in + * the thread-global data structure for the bytecode compiler to find + * later, assuming that the literal is a script which will be + * compiled. + */ + + if (numCL) { + TclContinuationsEnter(resultPtr, numCL, clPosition); + } + + /* + * Release the temp table we used to collect the locations of + * continuation lines, if any. + */ + + if (maxNumCL) { + ckfree ((char*) clPosition); + } +#endif } else { code = TCL_ERROR; } @@ -3805,11 +3927,11 @@ Tcl_EvalEx(interp, script, numBytes, flags) * supported. */ { #ifdef TCL_TIP280 - return EvalEx (interp, script, numBytes, flags, 1); + return EvalEx (interp, script, numBytes, flags, 1, NULL, script); } static int -EvalEx(interp, script, numBytes, flags, line) +EvalEx(interp, script, numBytes, flags, line, clNextOuter, outerScript) Tcl_Interp *interp; /* Interpreter in which to evaluate the * script. Also used for error reporting. */ CONST char *script; /* First character of script to evaluate. */ @@ -3821,6 +3943,23 @@ EvalEx(interp, script, numBytes, flags, line) * TCL_EVAL_GLOBAL is currently * supported. */ int line; /* The line the script starts on. */ + int* clNextOuter; /* Information about an outer context for */ + CONST char* outerScript; /* continuation line data. This is set only in + * EvalTokensStandard(), to properly handle + * [...]-nested commands. The 'outerScript' + * refers to the most-outer script containing the + * embedded command, which is refered to by + * 'script'. The 'clNextOuter' refers to the + * current entry in the table of continuation + * lines in this "master script", and the + * character offsets are relative to the + * 'outerScript' as well. + * + * If outerScript == script, then this call is + * for the outer-most script/command. See + * Tcl_EvalEx() and TclEvalObjEx() for places + * generating arguments for which this is true. + */ { #endif Interp *iPtr = (Interp *) interp; @@ -3846,6 +3985,24 @@ EvalEx(interp, script, numBytes, flags, line) #ifdef TCL_TIP280 /* TIP #280 Structures for tracking of command locations. */ CmdFrame eeFrame; + + /* + * Pointer for the tracking of invisible continuation lines. Initialized + * only if the caller gave us a table of locations to track, via + * scriptCLLocPtr. It always refers to the table entry holding the + * location of the next invisible continuation line to look for, while + * parsing the script. + */ + + int* clNext = NULL; + + if (iPtr->scriptCLLocPtr) { + if (clNextOuter) { + clNext = clNextOuter; + } else { + clNext = &iPtr->scriptCLLocPtr->loc[0]; + } + } #endif if (numBytes < 0) { @@ -3914,7 +4071,7 @@ EvalEx(interp, script, numBytes, flags, line) } else { /* Set up for plain eval */ - eeFrame.type = TCL_LOCATION_EVAL; + eeFrame.type = TCL_LOCATION_EVAL; eeFrame.data.eval.path = NULL; } @@ -3951,21 +4108,26 @@ EvalEx(interp, script, numBytes, flags, line) /* * TIP #280 Track lines. The parser may have skipped text till it * found the command we are now at. We have count the lines in this - * block. + * block, and do not forget invisible continuation lines. */ - TclAdvanceLines (&line, p, parse.commandStart); + TclAdvanceLines (&line, p, parse.commandStart); + TclAdvanceContinuations (&line, &clNext, + parse.commandStart - outerScript); #endif if (parse.numWords > 0) { #ifdef TCL_TIP280 /* * TIP #280. Track lines within the words of the current - * command. + * command. We use a separate pointer into the table of + * continuation line locations to not lose our position for the + * per-command parsing. */ - int wordLine = line; - CONST char* wordStart = parse.commandStart; + int wordLine = line; + CONST char* wordStart = parse.commandStart; + int* wordCLNext = clNext; #endif /* @@ -4000,10 +4162,12 @@ EvalEx(interp, script, numBytes, flags, line) * (source vs. eval). */ - TclAdvanceLines (&wordLine, wordStart, tokenPtr->start); + TclAdvanceLines (&wordLine, wordStart, tokenPtr->start); + TclAdvanceContinuations (&wordLine, &wordCLNext, + tokenPtr->start - outerScript); wordStart = tokenPtr->start; - eeFrame.line [objectsUsed] = (TclWordKnownAtCompileTime (tokenPtr) + eeFrame.line [objectsUsed] = (TclWordKnownAtCompileTime (tokenPtr) ? wordLine : -1); @@ -4012,7 +4176,8 @@ EvalEx(interp, script, numBytes, flags, line) } code = EvalTokensStandard(interp, tokenPtr+1, - tokenPtr->numComponents, wordLine); + tokenPtr->numComponents, wordLine, + wordCLNext, outerScript); iPtr->evalFlags = 0; #endif @@ -4020,6 +4185,12 @@ EvalEx(interp, script, numBytes, flags, line) if (code == TCL_OK) { objv[objectsUsed] = Tcl_GetObjResult(interp); Tcl_IncrRefCount(objv[objectsUsed]); +#ifdef TCL_TIP280 + if (wordCLNext) { + TclContinuationsEnterDerived (objv[objectsUsed], + wordStart - outerScript, wordCLNext); + } +#endif } else { goto error; } @@ -4314,6 +4485,53 @@ TclAdvanceLines (line,start,end) /* *---------------------------------------------------------------------- + * + * TclAdvanceContinuations -- + * + * This procedure is a helper which counts the number of continuation + * lines (CL) in a block of text using a table of CL locations and + * advances an external counter, and the pointer into the table. + * + * Results: + * None. + * + * Side effects: + * The specified counter is advanced per the number of continuation lines + * found. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclAdvanceContinuations (line,clNextPtrPtr,loc) + int* line; + int** clNextPtrPtr; + int loc; +{ + /* + * Track the invisible continuation lines embedded in a script, if + * any. Here they are just spaces (already). They were removed by + * EvalTokensStandard() via Tcl_UtfBackslash(). + * + * *clNextPtrPtr <=> We have continuation lines to track. + * **clNextPtrPtr >= 0 <=> We are not beyond the last possible location. + * loc >= **clNextPtrPtr <=> We stepped beyond the current cont. line. + */ + + while (*clNextPtrPtr && (**clNextPtrPtr >= 0) && (loc >= **clNextPtrPtr)) { + /* + * We just stepped over an invisible continuation line. Adjust the + * line counter and step to the table entry holding the location of + * the next continuation line to track. + */ + (*line) ++; + (*clNextPtrPtr) ++; + } +} + +/* + *---------------------------------------------------------------------- * Note: The whole data structure access for argument location tracking is * hidden behind these three functions. The only parts open are the lineLAPtr * field in the Interp structure. The CFWord definition is internal to here. @@ -4644,7 +4862,7 @@ TclArgumentGet(interp,obj,cfPtrPtr,wordPtr) CFWordBC* cfwPtr = (CFWordBC*) Tcl_GetHashValue (hPtr); framePtr = cfwPtr->framePtr; - framePtr->data.tebc.pc = ((ByteCode*) + framePtr->data.tebc.pc = (char*) ((ByteCode*) framePtr->data.tebc.codePtr)->codeStart + cfwPtr->pc; *cfPtrPtr = cfwPtr->framePtr; *wordPtr = cfwPtr->word; @@ -4912,6 +5130,34 @@ TclEvalObjEx(interp, objPtr, flags, invoker, word) * code in the bytecode compiler. */ + /* + * Now we check if we have data about invisible continuation lines + * for the script, and make it available to the direct script + * parser and evaluator we are about to call, if so. + * + * It may be possible that the script Tcl_Obj* can be free'd while + * the evaluator is using it, leading to the release of the + * associated ContLineLoc structure as well. To ensure that the + * latter doesn't happen we set a lock on it. We release this lock + * later in this function, after the evaluator is done. The + * relevant "lineCLPtr" hashtable is managed in the file + * "tclObj.c". + * + * Another important action is to save (and later restore) the + * continuation line information of the caller, in case we are + * executing nested commands in the eval/direct path. + */ + + ContLineLoc* saveCLLocPtr = iPtr->scriptCLLocPtr; + ContLineLoc* clLocPtr = TclContinuationsGet (objPtr); + + if (clLocPtr) { + iPtr->scriptCLLocPtr = clLocPtr; + Tcl_Preserve (iPtr->scriptCLLocPtr); + } else { + iPtr->scriptCLLocPtr = NULL; + } + if (invoker == NULL) { /* No context, force opening of our own */ script = Tcl_GetStringFromObj(objPtr, &numSrcBytes); @@ -4956,7 +5202,8 @@ TclEvalObjEx(interp, objPtr, flags, invoker, word) iPtr->invokeCmdFramePtr = &ctx; iPtr->evalFlags |= TCL_EVAL_CTX; - result = EvalEx(interp, script, numSrcBytes, flags, ctx.line [word]); + result = EvalEx(interp, script, numSrcBytes, flags, + ctx.line [word], NULL, script); if (pc) { /* Death of SrcInfo reference */ @@ -4964,6 +5211,16 @@ TclEvalObjEx(interp, objPtr, flags, invoker, word) } } } + + /* + * Now release the lock on the continuation line information, if + * any, and restore the caller's settings. + */ + + if (iPtr->scriptCLLocPtr) { + Tcl_Release (iPtr->scriptCLLocPtr); + } + iPtr->scriptCLLocPtr = saveCLLocPtr; #endif } } else { @@ -6535,4 +6792,3 @@ TCL_DTRACE_DEBUG_LOG() * fill-column: 78 * End: */ - diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 9114e50..ef172fc 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.29 2007/06/27 17:29:22 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.30 2009/08/25 20:59:10 andreas_kupries Exp $ */ #include "tclInt.h" @@ -139,8 +139,9 @@ static void TraceCommandProc _ANSI_ARGS_((ClientData clientData, static Tcl_CmdObjTraceProc TraceExecutionProc; #ifdef TCL_TIP280 -static void ListLines _ANSI_ARGS_((CONST char* listStr, int line, - int n, int* lines)); +static void ListLines _ANSI_ARGS_((Tcl_Obj* listObj, int line, + int n, int* lines, + Tcl_Obj* const* elems)); #endif /* *---------------------------------------------------------------------- @@ -2925,7 +2926,7 @@ Tcl_SwitchObjCmd(dummy, interp, objc, objv) ctx.line = (int*) ckalloc (objc * sizeof(int)); ctx.nline = objc; - ListLines (Tcl_GetString (blist), bline, objc, ctx.line); + ListLines (blist, bline, objc, ctx.line, objv); } else { int k; /* Dynamic code word ... All elements are relative to themselves */ @@ -2961,7 +2962,7 @@ Tcl_SwitchObjCmd(dummy, interp, objc, objv) result = Tcl_EvalObjEx(interp, objv[j], 0); #else /* TIP #280. Make invoking context available to switch branch */ - result = TclEvalObjEx(interp, objv[j], 0, &ctx, j); + result = TclEvalObjEx(interp, objv[j], 0, &ctx, splitObjs ? j : bidx+j); if (splitObjs) { ckfree ((char*) ctx.line); if (pc && (ctx.type == TCL_LOCATION_SOURCE)) { @@ -4989,24 +4990,34 @@ Tcl_WhileObjCmd(dummy, interp, objc, objv) #ifdef TCL_TIP280 static void -ListLines(listStr, line, n, lines) - CONST char* listStr; /* Pointer to string with list structure. - * Assumed to be valid. Assumed to contain - * n elements. - */ - int line; /* line the list as a whole starts on */ - int n; /* #elements in lines */ - int* lines; /* Array of line numbers, to fill */ +ListLines(listObj, line, n, lines, elems) + Tcl_Obj* listObj; /* Pointer to obj holding a string with list structure. + * Assumed to be valid. Assumed to contain n elements. + */ + int line; /* line the list as a whole starts on */ + int n; /* #elements in lines */ + int* lines; /* Array of line numbers, to fill */ + Tcl_Obj* const* elems; /* The list elems as Tcl_Obj*, in need of derived + * continuation data */ { - int i; - int length = strlen( listStr); - CONST char *element = NULL; - CONST char* next = NULL; + int i; + CONST char* listStr = Tcl_GetString (listObj); + CONST char* listHead = listStr; + int length = strlen( listStr); + CONST char* element = NULL; + CONST char* next = NULL; + ContLineLoc* clLocPtr = TclContinuationsGet(listObj); + int* clNext = (clLocPtr ? &clLocPtr->loc[0] : NULL); for (i = 0; i < n; i++) { TclFindElement(NULL, listStr, length, &element, &next, NULL, NULL); TclAdvanceLines (&line, listStr, element); /* Leading whitespace */ + TclAdvanceContinuations (&line, &clNext, element - listHead); + if (clNext) { + TclContinuationsEnterDerived (elems[i], element - listHead, clNext); + } + lines [i] = line; length -= (next - listStr); TclAdvanceLines (&line, element, next); /* Element */ diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 3c83a58..26c387b 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.7 2008/07/21 19:37:42 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.8 2009/08/25 20:59:10 andreas_kupries Exp $ */ #include "tclInt.h" @@ -27,11 +27,37 @@ static void FreeForeachInfo _ANSI_ARGS_((ClientData clientData)); static int TclPushVarName _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Token *varTokenPtr, CompileEnv *envPtr, int flags, int *localIndexPtr, int *simpleVarNamePtr, int *isScalarPtr)); + +#define TclPushVarNameWord(i,v,e,f,l,s,sc,word) \ + TclPushVarName (i,v,e,f,l,s,sc) /* ignoring word */ + +#define DefineLineInformation /**/ +#define SetLineInformation(word) /**/ #else static int TclPushVarName _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Token *varTokenPtr, CompileEnv *envPtr, int flags, int *localIndexPtr, int *simpleVarNamePtr, int *isScalarPtr, - int line)); + int line, int* clNext)); + +#define TclPushVarNameWord(i,v,e,f,l,s,sc,word) \ + TclPushVarName (i,v,e,f,l,s,sc, \ + mapPtr->loc [eclIndex].line [(word)], \ + mapPtr->loc [eclIndex].next [(word)]) + +/* TIP #280 : Remember the per-word line information of the current + * command. An index is used instead of a pointer as recursive compilation may + * reallocate, i.e. move, the array. This is also the reason to save the nuloc + * now, it may change during the course of the function. + * + * Macros to encapsulate the variable definition and setup, and their use. + */ +#define DefineLineInformation \ + ExtCmdLoc *mapPtr = envPtr->extCmdMapPtr; \ + int eclIndex = mapPtr->nuloc - 1 + +#define SetLineInformation(word) \ + envPtr->line = mapPtr->loc [eclIndex].line [(word)]; \ + envPtr->clNext = mapPtr->loc [eclIndex].next [(word)] #endif /* @@ -85,15 +111,7 @@ TclCompileAppendCmd(interp, parsePtr, envPtr) int simpleVarName, isScalar, localIndex, numWords; int code = TCL_OK; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; numWords = parsePtr->numWords; if (numWords == 1) { @@ -125,13 +143,8 @@ TclCompileAppendCmd(interp, parsePtr, envPtr) varTokenPtr = parsePtr->tokenPtr + (parsePtr->tokenPtr->numComponents + 1); - code = TclPushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, -#ifndef TCL_TIP280 - &localIndex, &simpleVarName, &isScalar); -#else - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc [eclIndex].line [1]); -#endif + code = TclPushVarNameWord(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); if (code != TCL_OK) { goto done; } @@ -148,9 +161,7 @@ TclCompileAppendCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, valueTokenPtr[1].start, valueTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [2]; -#endif + SetLineInformation (2); code = TclCompileTokens(interp, valueTokenPtr+1, valueTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -271,15 +282,7 @@ TclCompileCatchCmd(interp, parsePtr, envPtr) int code; int savedStackDepth = envPtr->currStackDepth; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; if ((parsePtr->numWords != 2) && (parsePtr->numWords != 3)) { Tcl_ResetResult(interp); @@ -343,9 +346,7 @@ TclCompileCatchCmd(interp, parsePtr, envPtr) * errors in the substitution are not catched [Bug 219184] */ -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [1]; -#endif + SetLineInformation (1); if (cmdTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) { startOffset = (envPtr->codeNext - envPtr->codeStart); code = TclCompileCmdWord(interp, cmdTokenPtr+1, 1, envPtr); @@ -493,6 +494,8 @@ TclCompileExprCmd(interp, parsePtr, envPtr) { Tcl_Token *firstWordPtr; + DefineLineInformation; + if (parsePtr->numWords == 1) { Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), @@ -500,11 +503,7 @@ TclCompileExprCmd(interp, parsePtr, envPtr) return TCL_ERROR; } -#ifdef TCL_TIP280 - /* TIP #280 : Use the per-word line information of the current command. - */ - envPtr->line = envPtr->extCmdMapPtr->loc [envPtr->extCmdMapPtr->nuloc - 1].line [1]; -#endif + SetLineInformation (1); firstWordPtr = parsePtr->tokenPtr + (parsePtr->tokenPtr->numComponents + 1); return TclCompileExprWords(interp, firstWordPtr, (parsePtr->numWords-1), @@ -543,15 +542,7 @@ TclCompileForCmd(interp, parsePtr, envPtr) char buffer[32 + TCL_INTEGER_SPACE]; int savedStackDepth = envPtr->currStackDepth; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; if (parsePtr->numWords != 5) { Tcl_ResetResult(interp); @@ -601,9 +592,7 @@ TclCompileForCmd(interp, parsePtr, envPtr) * Inline compile the initial command. */ -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [1]; -#endif + SetLineInformation (1); code = TclCompileCmdWord(interp, startTokenPtr+1, startTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -635,9 +624,7 @@ TclCompileForCmd(interp, parsePtr, envPtr) bodyCodeOffset = (envPtr->codeNext - envPtr->codeStart); -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [4]; -#endif + SetLineInformation (4); code = TclCompileCmdWord(interp, bodyTokenPtr+1, bodyTokenPtr->numComponents, envPtr); envPtr->currStackDepth = savedStackDepth + 1; @@ -660,9 +647,7 @@ TclCompileForCmd(interp, parsePtr, envPtr) nextCodeOffset = (envPtr->codeNext - envPtr->codeStart); -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [3]; -#endif + SetLineInformation (3); envPtr->currStackDepth = savedStackDepth; code = TclCompileCmdWord(interp, nextTokenPtr+1, nextTokenPtr->numComponents, envPtr); @@ -693,9 +678,7 @@ TclCompileForCmd(interp, parsePtr, envPtr) nextCodeOffset += 3; testCodeOffset += 3; } -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [2]; -#endif + SetLineInformation (2); envPtr->currStackDepth = savedStackDepth; code = TclCompileExprWords(interp, testTokenPtr, 1, envPtr); if (code != TCL_OK) { @@ -786,14 +769,8 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) char buffer[32 + TCL_INTEGER_SPACE]; int savedStackDepth = envPtr->currStackDepth; + DefineLineInformation; #ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; int bodyIndex; #endif @@ -976,9 +953,7 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) i < numWords-1; i++, tokenPtr += (tokenPtr->numComponents + 1)) { if ((i%2 == 0) && (i > 0)) { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [i]; -#endif + SetLineInformation (i); code = TclCompileTokens(interp, tokenPtr+1, tokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1016,9 +991,7 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) * Inline compile the loop body. */ -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [bodyIndex]; -#endif + SetLineInformation (bodyIndex); envPtr->exceptArrayPtr[range].codeOffset = (envPtr->codeNext - envPtr->codeStart); code = TclCompileCmdWord(interp, bodyTokenPtr+1, @@ -1248,15 +1221,7 @@ TclCompileIfCmd(interp, parsePtr, envPtr) int boolVal; /* value of static condition */ int compileScripts = 1; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; /* * Only compile the "if" command if all arguments are simple @@ -1339,9 +1304,7 @@ TclCompileIfCmd(interp, parsePtr, envPtr) } } else { Tcl_ResetResult(interp); -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [wordIdx]; -#endif + SetLineInformation (wordIdx); code = TclCompileExprWords(interp, testTokenPtr, 1, envPtr); if (code != TCL_OK) { if (code == TCL_ERROR) { @@ -1398,9 +1361,7 @@ TclCompileIfCmd(interp, parsePtr, envPtr) */ if (compileScripts) { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [wordIdx]; -#endif + SetLineInformation (wordIdx); envPtr->currStackDepth = savedStackDepth; code = TclCompileCmdWord(interp, tokenPtr+1, tokenPtr->numComponents, envPtr); @@ -1503,9 +1464,7 @@ TclCompileIfCmd(interp, parsePtr, envPtr) /* * Compile the else command body. */ -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [wordIdx]; -#endif + SetLineInformation (wordIdx); code = TclCompileCmdWord(interp, tokenPtr+1, tokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1617,15 +1576,7 @@ TclCompileIncrCmd(interp, parsePtr, envPtr) int simpleVarName, isScalar, localIndex, haveImmValue, immValue; int code = TCL_OK; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; if ((parsePtr->numWords != 2) && (parsePtr->numWords != 3)) { Tcl_ResetResult(interp); @@ -1637,14 +1588,9 @@ TclCompileIncrCmd(interp, parsePtr, envPtr) varTokenPtr = parsePtr->tokenPtr + (parsePtr->tokenPtr->numComponents + 1); - code = TclPushVarName(interp, varTokenPtr, envPtr, + code = TclPushVarNameWord(interp, varTokenPtr, envPtr, (TCL_NO_LARGE_INDEX | TCL_CREATE_VAR), -#ifndef TCL_TIP280 - &localIndex, &simpleVarName, &isScalar); -#else - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc [eclIndex].line [1]); -#endif + &localIndex, &simpleVarName, &isScalar, 1); if (code != TCL_OK) { goto done; } @@ -1684,9 +1630,7 @@ TclCompileIncrCmd(interp, parsePtr, envPtr) TclRegisterNewLiteral(envPtr, word, numBytes), envPtr); } } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [2]; -#endif + SetLineInformation (2); code = TclCompileTokens(interp, incrTokenPtr+1, incrTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1779,15 +1723,7 @@ TclCompileLappendCmd(interp, parsePtr, envPtr) int simpleVarName, isScalar, localIndex, numWords; int code = TCL_OK; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; /* * If we're not in a procedure, don't compile. @@ -1821,13 +1757,8 @@ TclCompileLappendCmd(interp, parsePtr, envPtr) varTokenPtr = parsePtr->tokenPtr + (parsePtr->tokenPtr->numComponents + 1); - code = TclPushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, -#ifndef TCL_TIP280 - &localIndex, &simpleVarName, &isScalar); -#else - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc [eclIndex].line [1]); -#endif + code = TclPushVarNameWord(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); if (code != TCL_OK) { goto done; } @@ -1843,9 +1774,7 @@ TclCompileLappendCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, valueTokenPtr[1].start, valueTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [2]; -#endif + SetLineInformation (2); code = TclCompileTokens(interp, valueTokenPtr+1, valueTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -1923,15 +1852,7 @@ TclCompileLindexCmd(interp, parsePtr, envPtr) Tcl_Token *varTokenPtr; int code, i; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; int numWords; numWords = parsePtr->numWords; @@ -1957,9 +1878,7 @@ TclCompileLindexCmd(interp, parsePtr, envPtr) TclRegisterNewLiteral( envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [i]; -#endif + SetLineInformation (i); code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2013,15 +1932,7 @@ TclCompileListCmd(interp, parsePtr, envPtr) * command created by Tcl_ParseCommand. */ CompileEnv *envPtr; /* Holds resulting instructions. */ { -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; /* * If we're not in a procedure, don't compile. @@ -2052,9 +1963,7 @@ TclCompileListCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, valueTokenPtr[1].start, valueTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [i]; -#endif + SetLineInformation (i); code = TclCompileTokens(interp, valueTokenPtr+1, valueTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2100,15 +2009,7 @@ TclCompileLlengthCmd(interp, parsePtr, envPtr) Tcl_Token *varTokenPtr; int code; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; if (parsePtr->numWords != 2) { Tcl_SetResult(interp, "wrong # args: should be \"llength list\"", @@ -2126,9 +2027,7 @@ TclCompileLlengthCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [1]; -#endif + SetLineInformation (1); code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2204,15 +2103,7 @@ TclCompileLsetCmd( interp, parsePtr, envPtr ) int i; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; /* Check argument count */ @@ -2231,13 +2122,8 @@ TclCompileLsetCmd( interp, parsePtr, envPtr ) varTokenPtr = parsePtr->tokenPtr + (parsePtr->tokenPtr->numComponents + 1); - result = TclPushVarName( interp, varTokenPtr, envPtr, -#ifndef TCL_TIP280 - TCL_CREATE_VAR, &localIndex, &simpleVarName, &isScalar ); -#else - TCL_CREATE_VAR, &localIndex, &simpleVarName, &isScalar, - mapPtr->loc [eclIndex].line [1]); -#endif + result = TclPushVarNameWord( interp, varTokenPtr, envPtr, + TCL_CREATE_VAR, &localIndex, &simpleVarName, &isScalar, 1); if (result != TCL_OK) { return result; } @@ -2256,9 +2142,7 @@ TclCompileLsetCmd( interp, parsePtr, envPtr ) TclEmitPush(TclRegisterNewLiteral( envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [i]; -#endif + SetLineInformation (i); result = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if ( result != TCL_OK ) { @@ -2389,15 +2273,7 @@ TclCompileRegexpCmd(interp, parsePtr, envPtr) int i, len, code, nocase, anchorLeft, anchorRight, start; char *str; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; /* * We are only interested in compiling simple regexp cases. @@ -2546,9 +2422,7 @@ TclCompileRegexpCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [parsePtr->numWords-1]; -#endif + SetLineInformation (parsePtr->numWords-1); code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2599,15 +2473,7 @@ TclCompileReturnCmd(interp, parsePtr, envPtr) int code; int index = envPtr->exceptArrayNext - 1; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; /* * If we're not in a procedure, don't compile. @@ -2666,9 +2532,7 @@ TclCompileReturnCmd(interp, parsePtr, envPtr) * "return" will be byte-compiled; otherwise it will be * out line compiled. */ -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [1]; -#endif + SetLineInformation (1); code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2729,15 +2593,7 @@ TclCompileSetCmd(interp, parsePtr, envPtr) int isAssignment, isScalar, simpleVarName, localIndex, numWords; int code = TCL_OK; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; numWords = parsePtr->numWords; if ((numWords != 2) && (numWords != 3)) { @@ -2759,13 +2615,8 @@ TclCompileSetCmd(interp, parsePtr, envPtr) varTokenPtr = parsePtr->tokenPtr + (parsePtr->tokenPtr->numComponents + 1); - code = TclPushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, -#ifndef TCL_TIP280 - &localIndex, &simpleVarName, &isScalar); -#else - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc [eclIndex].line [1]); -#endif + code = TclPushVarNameWord(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); if (code != TCL_OK) { goto done; } @@ -2780,9 +2631,7 @@ TclCompileSetCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, valueTokenPtr[1].start, valueTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [2]; -#endif + SetLineInformation (2); code = TclCompileTokens(interp, valueTokenPtr+1, valueTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2885,15 +2734,7 @@ TclCompileStringCmd(interp, parsePtr, envPtr) STR_WORDEND, STR_WORDSTART }; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; if (parsePtr->numWords < 2) { /* Fail at run time, not in compilation */ @@ -2956,9 +2797,7 @@ TclCompileStringCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [i]; -#endif + SetLineInformation (i); code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -2989,9 +2828,7 @@ TclCompileStringCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, varTokenPtr[1].start, varTokenPtr[1].size), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [i]; -#endif + SetLineInformation (i); code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -3022,9 +2859,7 @@ TclCompileStringCmd(interp, parsePtr, envPtr) TclEmitPush(TclRegisterNewLiteral(envPtr, buf, len), envPtr); return TCL_OK; } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [2]; -#endif + SetLineInformation (2); code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -3082,9 +2917,7 @@ TclCompileStringCmd(interp, parsePtr, envPtr) TclEmitPush( TclRegisterNewLiteral(envPtr, str, length), envPtr); } else { -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [i]; -#endif + SetLineInformation (i); code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); if (code != TCL_OK) { @@ -3201,15 +3034,7 @@ TclCompileWhileCmd(interp, parsePtr, envPtr) Tcl_Obj *boolObj; int boolVal; -#ifdef TCL_TIP280 - /* TIP #280 : Remember the per-word line information of the current - * command. An index is used instead of a pointer as recursive compilation - * may reallocate, i.e. move, the array. This is also the reason to save - * the nuloc now, it may change during the course of the function. - */ - ExtCmdLoc* mapPtr = envPtr->extCmdMapPtr; - int eclIndex = mapPtr->nuloc - 1; -#endif + DefineLineInformation; if (parsePtr->numWords != 3) { Tcl_ResetResult(interp); @@ -3296,9 +3121,7 @@ TclCompileWhileCmd(interp, parsePtr, envPtr) * Compile the loop body. */ -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [2]; -#endif + SetLineInformation (2); bodyCodeOffset = (envPtr->codeNext - envPtr->codeStart); code = TclCompileCmdWord(interp, bodyTokenPtr+1, bodyTokenPtr->numComponents, envPtr); @@ -3328,9 +3151,7 @@ TclCompileWhileCmd(interp, parsePtr, envPtr) testCodeOffset += 3; } envPtr->currStackDepth = savedStackDepth; -#ifdef TCL_TIP280 - envPtr->line = mapPtr->loc [eclIndex].line [1]; -#endif + SetLineInformation (1); code = TclCompileExprWords(interp, testTokenPtr, 1, envPtr); if (code != TCL_OK) { if (code == TCL_ERROR) { @@ -3406,7 +3227,7 @@ TclPushVarName(interp, varTokenPtr, envPtr, flags, localIndexPtr, #ifndef TCL_TIP280 simpleVarNamePtr, isScalarPtr) #else - simpleVarNamePtr, isScalarPtr, line) + simpleVarNamePtr, isScalarPtr, line, clNext) #endif Tcl_Interp *interp; /* Used for error reporting. */ Tcl_Token *varTokenPtr; /* Points to a variable token. */ @@ -3418,6 +3239,7 @@ TclPushVarName(interp, varTokenPtr, envPtr, flags, localIndexPtr, int *isScalarPtr; /* must not be NULL */ #ifdef TCL_TIP280 int line; /* line the token starts on */ + int* clNext; #endif { register CONST char *p; @@ -3601,7 +3423,8 @@ TclPushVarName(interp, varTokenPtr, envPtr, flags, localIndexPtr, if (elName != NULL) { if (elNameChars) { #ifdef TCL_TIP280 - envPtr->line = line; + envPtr->line = line; + envPtr->clNext = clNext; #endif code = TclCompileTokens(interp, elemTokenPtr, elemTokenCount, envPtr); @@ -3618,7 +3441,8 @@ TclPushVarName(interp, varTokenPtr, envPtr, flags, localIndexPtr, */ #ifdef TCL_TIP280 - envPtr->line = line; + envPtr->line = line; + envPtr->clNext = clNext; #endif code = TclCompileTokens(interp, varTokenPtr+1, varTokenPtr->numComponents, envPtr); diff --git a/generic/tclCompile.c b/generic/tclCompile.c index b6d486e..aa25f26 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.15 2009/07/14 16:31:49 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.16 2009/08/25 20:59:10 andreas_kupries Exp $ */ #include "tclInt.h" @@ -307,7 +307,7 @@ static int SetByteCodeFromAny _ANSI_ARGS_((Tcl_Interp *interp, static void EnterCmdWordData _ANSI_ARGS_(( ExtCmdLoc *eclPtr, int srcOffset, Tcl_Token* tokenPtr, CONST char* cmd, int len, int numWords, int line, - int** lines)); + int* clNext, int** lines, CompileEnv* envPtr)); #endif @@ -367,7 +367,9 @@ TclSetByteCodeFromAny(interp, objPtr, hookProc, clientData) register int i; int length, nested, result; char *string; - +#ifdef TCL_TIP280 + ContLineLoc* clLocPtr; +#endif #ifdef TCL_COMPILE_DEBUG if (!traceInitialized) { if (Tcl_LinkVar(interp, "tcl_traceCompile", @@ -396,6 +398,24 @@ TclSetByteCodeFromAny(interp, objPtr, hookProc, clientData) TclInitCompileEnv(interp, &compEnv, string, length, iPtr->invokeCmdFramePtr, iPtr->invokeWord); + /* + * Now we check if we have data about invisible continuation lines for the + * script, and make it available to the compile environment, if so. + * + * It is not clear if the script Tcl_Obj* can be free'd while the compiler + * is using it, leading to the release of the associated ContLineLoc + * structure as well. To ensure that the latter doesn't happen we set a + * lock on it. We release this lock in the function TclFreeCompileEnv (), + * found in this file. The "lineCLPtr" hashtable is managed in the file + * "tclObj.c". + */ + + clLocPtr = TclContinuationsGet (objPtr); + if (clLocPtr) { + compEnv.clLoc = clLocPtr; + compEnv.clNext = &compEnv.clLoc->loc[0]; + Tcl_Preserve (compEnv.clLoc); + } #endif result = TclCompileScript(interp, string, length, nested, &compEnv); @@ -872,6 +892,15 @@ TclInitCompileEnv(interp, envPtr, string, numBytes, invoker, word) /* ctx going out of scope */ } + + /* + * Initialize the data about invisible continuation lines as empty, + * i.e. not used. The caller (TclSetByteCodeFromAny) will set this up, if + * such data is available. + */ + + envPtr->clLoc = NULL; + envPtr->clNext = NULL; #endif envPtr->auxDataArrayPtr = envPtr->staticAuxDataArraySpace; @@ -921,6 +950,17 @@ TclFreeCompileEnv(envPtr) if (envPtr->mallocedAuxDataArray) { ckfree((char *) envPtr->auxDataArrayPtr); } +#ifdef TCL_TIP280 + /* + * If we used data about invisible continuation lines, then now is the + * time to release on our hold on it. The lock was set in function + * TclSetByteCodeFromAny(), found in this file. + */ + + if (envPtr->clLoc) { + Tcl_Release (envPtr->clLoc); + } +#endif } #ifdef TCL_TIP280 @@ -1030,6 +1070,7 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) ExtCmdLoc* eclPtr = envPtr->extCmdMapPtr; int* wlines; int wlineat, cmdLine; + int* clNext; #endif Tcl_DStringInit(&ds); @@ -1050,6 +1091,7 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) gotParse = 0; #ifdef TCL_TIP280 cmdLine = envPtr->line; + clNext = envPtr->clNext; #endif do { @@ -1169,10 +1211,13 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) * 'wlines'. */ - TclAdvanceLines (&cmdLine, p, parse.commandStart); + TclAdvanceLines (&cmdLine, p, parse.commandStart); + TclAdvanceContinuations (&cmdLine, &clNext, + parse.commandStart - envPtr->source); EnterCmdWordData (eclPtr, (parse.commandStart - envPtr->source), - parse.tokenPtr, parse.commandStart, parse.commandSize, - parse.numWords, cmdLine, &wlines); + parse.tokenPtr, parse.commandStart, + parse.commandSize, parse.numWords, + cmdLine, clNext, &wlines, envPtr); wlineat = eclPtr->nuloc - 1; #endif @@ -1180,7 +1225,8 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) wordIdx < parse.numWords; wordIdx++, tokenPtr += (tokenPtr->numComponents + 1)) { #ifdef TCL_TIP280 - envPtr->line = eclPtr->loc [wlineat].line [wordIdx]; + envPtr->line = eclPtr->loc [wlineat].line [wordIdx]; + envPtr->clNext = eclPtr->loc [wlineat].next [wordIdx]; #endif if (tokenPtr->type == TCL_TOKEN_SIMPLE_WORD) { /* @@ -1268,6 +1314,13 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) objIndex = TclRegisterNewLiteral(envPtr, tokenPtr[1].start, tokenPtr[1].size); +#ifdef TCL_TIP280 + if (envPtr->clNext) { + TclContinuationsEnterDerived (envPtr->literalArrayPtr[objIndex].objPtr, + tokenPtr[1].start - envPtr->source, + eclPtr->loc [wlineat].next [wordIdx]); + } +#endif } TclEmitPush(objIndex, envPtr); } else { @@ -1320,7 +1373,9 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) * the reduced form now */ ckfree ((char*) eclPtr->loc [wlineat].line); - eclPtr->loc [wlineat].line = wlines; + ckfree ((char*) eclPtr->loc [wlineat].next); + eclPtr->loc [wlineat].line = wlines; + eclPtr->loc [wlineat].next = NULL; #endif } /* end if parse.numWords > 0 */ @@ -1333,7 +1388,8 @@ TclCompileScript(interp, script, numBytes, nested, envPtr) p = next; #ifdef TCL_TIP280 /* TIP #280 : Track lines in the just compiled command */ - TclAdvanceLines (&cmdLine, parse.commandStart, p); + TclAdvanceLines (&cmdLine, parse.commandStart, p); + TclAdvanceContinuations (&cmdLine, &clNext, p - envPtr->source); #endif Tcl_FreeParse(&parse); gotParse = 0; @@ -1440,6 +1496,43 @@ TclCompileTokens(interp, tokenPtr, count, envPtr) int numObjsToConcat, nameBytes, localVarName, localVar; int length, i, code; unsigned char *entryCodeNext = envPtr->codeNext; +#ifdef TCL_TIP280 +#define NUM_STATIC_POS 20 + int isLiteral, maxNumCL, numCL; + int* clPosition; + + /* + * For the handling of continuation lines in literals we first check if + * this is actually a literal. For if not we can forego the additional + * processing. Otherwise we pre-allocate a small table to store the + * locations of all continuation lines we find in this literal, if + * any. The table is extended if needed. + * + * Note: Different to the equivalent code in function + * 'EvalTokensStandard()' (see file "tclBasic.c") we do not seem to need + * the 'adjust' variable. We also do not seem to need code which merges + * continuation line information of multiple words which concat'd at + * runtime. Either that or I have not managed to find a test case for + * these two possibilities yet. It might be a difference between compile- + * versus runtime processing. + */ + + numCL = 0; + maxNumCL = 0; + isLiteral = 1; + for (i=0 ; i < count; i++) { + if ((tokenPtr[i].type != TCL_TOKEN_TEXT) && + (tokenPtr[i].type != TCL_TOKEN_BS)) { + isLiteral = 0; + break; + } + } + + if (isLiteral) { + maxNumCL = NUM_STATIC_POS; + clPosition = (int*) ckalloc (maxNumCL*sizeof(int)); + } +#endif Tcl_DStringInit(&textBuffer); numObjsToConcat = 0; @@ -1454,6 +1547,38 @@ TclCompileTokens(interp, tokenPtr, count, envPtr) length = Tcl_UtfBackslash(tokenPtr->start, (int *) NULL, buffer); Tcl_DStringAppend(&textBuffer, buffer, length); + +#ifdef TCL_TIP280 + /* + * If the backslash sequence we found is in a literal, and + * represented a continuation line, we compute and store its + * location (as char offset to the beginning of the _result_ + * script). We may have to extend the table of locations. + * + * Note that the continuation line information is relevant + * even if the word we are processing is not a literal, as it + * can affect nested commands. See the branch for + * TCL_TOKEN_COMMAND below, where the adjustment we are + * tracking here is taken into account. The good thing is that + * we do not need a table of everything, just the number of + * lines we have to add as correction. + */ + + if ((length == 1) && (buffer[0] == ' ') && + (tokenPtr->start[1] == '\n')) { + if (isLiteral) { + int clPos = Tcl_DStringLength (&textBuffer); + + if (numCL >= maxNumCL) { + maxNumCL *= 2; + clPosition = (int*) ckrealloc ((char*)clPosition, + maxNumCL*sizeof(int)); + } + clPosition[numCL] = clPos; + numCL ++; + } + } +#endif break; case TCL_TOKEN_COMMAND: @@ -1470,6 +1595,13 @@ TclCompileTokens(interp, tokenPtr, count, envPtr) TclEmitPush(literal, envPtr); numObjsToConcat++; Tcl_DStringFree(&textBuffer); +#ifdef TCL_TIP280 + if (numCL) { + TclContinuationsEnter(envPtr->literalArrayPtr[literal].objPtr, + numCL, clPosition); + } + numCL = 0; +#endif } code = TclCompileScript(interp, tokenPtr->start+1, @@ -1594,6 +1726,14 @@ TclCompileTokens(interp, tokenPtr, count, envPtr) Tcl_DStringLength(&textBuffer), /*onHeap*/ 0); TclEmitPush(literal, envPtr); numObjsToConcat++; + +#ifdef TCL_TIP280 + if (numCL) { + TclContinuationsEnter(envPtr->literalArrayPtr[literal].objPtr, + numCL, clPosition); + } + numCL = 0; +#endif } /* @@ -1616,11 +1756,20 @@ TclCompileTokens(interp, tokenPtr, count, envPtr) TclEmitPush(TclRegisterLiteral(envPtr, "", 0, /*onHeap*/ 0), envPtr); } - Tcl_DStringFree(&textBuffer); - return TCL_OK; + code = TCL_OK; error: Tcl_DStringFree(&textBuffer); +#ifdef TCL_TIP280 + /* + * Release the temp table we used to collect the locations of + * continuation lines, if any. + */ + + if (maxNumCL) { + ckfree ((char*) clPosition); + } +#endif return code; } @@ -2426,7 +2575,7 @@ EnterCmdExtentData(envPtr, cmdIndex, numSrcBytes, numCodeBytes) */ static void -EnterCmdWordData(eclPtr, srcOffset, tokenPtr, cmd, len, numWords, line, wlines) +EnterCmdWordData(eclPtr, srcOffset, tokenPtr, cmd, len, numWords, line, clNext, wlines, envPtr) ExtCmdLoc *eclPtr; /* Points to the map environment * structure in which to enter command * location information. */ @@ -2436,12 +2585,15 @@ EnterCmdWordData(eclPtr, srcOffset, tokenPtr, cmd, len, numWords, line, wlines) int len; int numWords; int line; + int* clNext; int** wlines; + CompileEnv* envPtr; { ECL* ePtr; int wordIdx; CONST char* last; int wordLine; + int* wordNext; int* wwlines; if (eclPtr->nuloc >= eclPtr->nloc) { @@ -2475,19 +2627,24 @@ EnterCmdWordData(eclPtr, srcOffset, tokenPtr, cmd, len, numWords, line, wlines) ePtr = &eclPtr->loc [eclPtr->nuloc]; ePtr->srcOffset = srcOffset; ePtr->line = (int*) ckalloc (numWords * sizeof (int)); + ePtr->next = (int**) ckalloc (numWords * sizeof (int*)); ePtr->nline = numWords; wwlines = (int*) ckalloc (numWords * sizeof (int)); last = cmd; wordLine = line; + wordNext = clNext; for (wordIdx = 0; wordIdx < numWords; wordIdx++, tokenPtr += (tokenPtr->numComponents + 1)) { - TclAdvanceLines (&wordLine, last, tokenPtr->start); + TclAdvanceLines (&wordLine, last, tokenPtr->start); + TclAdvanceContinuations (&wordLine, &wordNext, + tokenPtr->start - envPtr->source); wwlines [wordIdx] = (TclWordKnownAtCompileTime (tokenPtr) ? wordLine : -1); ePtr->line [wordIdx] = wordLine; + ePtr->next [wordIdx] = wordNext; last = tokenPtr->start; } diff --git a/generic/tclCompile.h b/generic/tclCompile.h index b3431f8..37b8295 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.33.2.7 2009/07/14 16:31:49 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.33.2.8 2009/08/25 20:59:11 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -139,6 +139,7 @@ typedef struct ECL { int srcOffset; /* cmd location to find the entry */ int nline; /* Number of words in the command */ int* line; /* line information for all words in the command */ + int** next; /* Transient information during compile, ICL tracking */ } ECL; typedef struct ExtCmdLoc { @@ -307,6 +308,13 @@ typedef struct CompileEnv { int line; /* First line of the script, based on the * invoking context, then the line of the * command currently compiled. */ + ContLineLoc* clLoc; /* If not NULL, the table holding the + * locations of the invisible continuation + * lines in the input script, to adjust the + * line counter. */ + int* clNext; /* If not NULL, it refers to the next slot in + * clLoc to check for an invisible + * continuation line. */ #endif } CompileEnv; diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 8dcf877..78e823a 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.94.2.29 2009/07/14 16:31:49 andreas_kupries Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.94.2.30 2009/08/25 20:59:11 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1580,7 +1580,7 @@ TclExecuteByteCode(interp, codePtr) */ #ifdef TCL_TIP280 - bcFrame.data.tebc.pc = pc; + bcFrame.data.tebc.pc = (char*) pc; iPtr->cmdFramePtr = &bcFrame; TclArgumentBCEnter((Tcl_Interp*) iPtr, objv, objc, codePtr, &bcFrame, @@ -4835,7 +4835,7 @@ TclGetSrcInfoForPc (cfPtr) ByteCode* codePtr = (ByteCode*) cfPtr->data.tebc.codePtr; if (cfPtr->cmd.str.cmd == NULL) { - cfPtr->cmd.str.cmd = GetSrcInfoForPc((char*) cfPtr->data.tebc.pc, + cfPtr->cmd.str.cmd = GetSrcInfoForPc((unsigned char*) cfPtr->data.tebc.pc, codePtr, &cfPtr->cmd.str.len); } diff --git a/generic/tclInt.h b/generic/tclInt.h index fc56e6e..e80f0d4 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.118.2.34 2009/07/14 16:31:49 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.118.2.35 2009/08/25 20:59:11 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -923,6 +923,37 @@ typedef struct CFWordBC { int word; /* Index of word in ExtCmdLoc.loc[cmd]->{line,literal}[.] */ struct CFWordBC* prevPtr; } CFWordBC; + +/* + * Structure to record the locations of invisible continuation lines in + * literal scripts, as character offset from the beginning of the script. Both + * compiler and direct evaluator use this information to adjust their line + * counters when tracking through the script, because when it is invoked the + * continuation line marker as a whole has been removed already, meaning that + * the \n which was part of it is gone as well, breaking regular line + * tracking. + * + * These structures are allocated and filled by both the function + * EvalTokensStandard() in the file "tclBasic.c" and its caller EvalEx(), and + * stored in the thread-global hashtable "lineCLPtr" in file "tclObj.c". They + * are used by the functions TclSetByteCodeFromAny() and TclCompileScript(), + * both found in the file "tclCompile.c". Their memory is released by the + * function TclFreeObj(), in the file "tclObj.c", and also by the function + * TclThreadFinalizeObjects(), in the same file. + */ + +#define CLL_END (-1) + +typedef struct ContLineLoc { + int num; /* Number of entries in loc, not counting the final -1 + * marker entry */ + int loc[1]; /* Table of locations, as character offsets. The table is + * allocated as part of the structure, i.e. the loc array + * extends behind the nominal end of the structure. An entry + * containing the value CLL_END is put after the last + * location, as end-marker/sentinel. */ +} ContLineLoc; + #endif /* TCL_TIP280 */ /* @@ -1531,6 +1562,16 @@ typedef struct Interp { * CmdFrame stack keyed by command * argument holders. */ + ContLineLoc* scriptCLLocPtr; + /* This table points to the location data for + * invisible continuation lines in the script, + * if any. This pointer is set by the function + * TclEvalObjEx() in file "tclBasic.c", and + * used by function ...() in the same file. + * It does for the eval/direct path of script + * execution what CompileEnv.clLoc does for + * the bytecode compiler. + */ #endif #ifdef TCL_TIP268 /* @@ -1848,6 +1889,16 @@ extern char tclEmptyString; #ifdef TCL_TIP280 EXTERN void TclAdvanceLines _ANSI_ARGS_((int* line, CONST char* start, CONST char* end)); +EXTERN void TclAdvanceContinuations _ANSI_ARGS_((int* line, int** next, + int loc)); +EXTERN ContLineLoc* TclContinuationsEnter _ANSI_ARGS_((Tcl_Obj* objPtr, int num, + int* loc)); +EXTERN void TclContinuationsEnterDerived _ANSI_ARGS_((Tcl_Obj* objPtr, + int start, int* clNext)); +EXTERN ContLineLoc* TclContinuationsGet _ANSI_ARGS_((Tcl_Obj* objPtr)); + +EXTERN void TclContinuationsCopy _ANSI_ARGS_((Tcl_Obj* objPtr, Tcl_Obj* originObjPtr)); + #endif EXTERN int TclArraySet _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *arrayNameObj, Tcl_Obj *arrayElemObj)); @@ -2593,4 +2644,11 @@ extern Tcl_Mutex tclObjMutex; # define TCL_STORAGE_CLASS DLLIMPORT #endif /* _TCLINT */ - + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ diff --git a/generic/tclObj.c b/generic/tclObj.c index 16454ac..84d980e 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.42.2.16 2007/10/03 12:53:12 msofer Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.42.2.17 2009/08/25 20:59:11 andreas_kupries Exp $ */ #include "tclInt.h" @@ -51,6 +51,38 @@ Tcl_Mutex tclObjMutex; char tclEmptyString = '\0'; char *tclEmptyStringRep = &tclEmptyString; + +#ifdef TCL_TIP280 +/* + * All static variables used in this file are collected into a single + * instance of the following structure. For multi-threaded implementations, + * there is one instance of this structure for each thread. + * + * Notice that different structures with the same name appear in other + * files. The structure defined below is used in this file only. + */ + +typedef struct ThreadSpecificData { + Tcl_HashTable* lineCLPtr; /* This table remembers for each Tcl_Obj generated + * by a call to the function EvalTokensStandard() + * from a literal text where bs+nl sequences + * occured in it, if any. I.e. this table keeps + * track of invisible/stripped continuation + * lines. Its keys are Tcl_Obj pointers, the + * values are ContLineLoc pointers. See the file + * tclCompile.h for the definition of this + * structure, and for references to all related + * places in the core. + */ +} ThreadSpecificData; + +static Tcl_ThreadDataKey dataKey; + +static void ContLineLocFree _ANSI_ARGS_((char* clientData)); +static void TclThreadFinalizeObjects _ANSI_ARGS_((ClientData clientData)); +static ThreadSpecificData* TclGetContinuationTable _ANSI_ARGS_(()); +#endif + /* * Prototypes for procedures defined later in this file: */ @@ -307,6 +339,319 @@ TclFinalizeObjects() Tcl_MutexUnlock(&tclObjMutex); } +#ifdef TCL_TIP280 +/* + *---------------------------------------------------------------------- + * + * TclGetContinuationTable -- + * + * This procedure is a helper which returns the thread-specific + * hash-table used to track continuation line information associated with + * Tcl_Obj*. + * + * Results: + * A reference to the continuation line thread-data. + * + * Side effects: + * May allocate memory for the thread-data. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +static ThreadSpecificData* +TclGetContinuationTable() +{ + /* + * Initialize the hashtable tracking invisible continuation lines. For + * the release we use a thread exit handler to ensure that this is done + * before TSD blocks are made invalid. The TclFinalizeObjects() which + * would be the natural place for this is invoked afterwards, meaning that + * we try to operate on a data structure already gone. + */ + + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + if (!tsdPtr->lineCLPtr) { + tsdPtr->lineCLPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); + Tcl_InitHashTable(tsdPtr->lineCLPtr, TCL_ONE_WORD_KEYS); + Tcl_CreateThreadExitHandler (TclThreadFinalizeObjects,NULL); + } + return tsdPtr; +} + +/* + *---------------------------------------------------------------------- + * + * TclContinuationsEnter -- + * + * This procedure is a helper which saves the continuation line + * information associated with a Tcl_Obj*. + * + * Results: + * A reference to the newly created continuation line location table. + * + * Side effects: + * Allocates memory for the table of continuation line locations. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +ContLineLoc* +TclContinuationsEnter(objPtr,num,loc) + Tcl_Obj* objPtr; + int num; + int* loc; +{ + int newEntry; + ThreadSpecificData *tsdPtr = TclGetContinuationTable(); + Tcl_HashEntry* hPtr = + Tcl_CreateHashEntry (tsdPtr->lineCLPtr, (char*) objPtr, &newEntry); + + ContLineLoc* clLocPtr = + (ContLineLoc*) ckalloc (sizeof(ContLineLoc) + num*sizeof(int)); + + clLocPtr->num = num; + memcpy (&clLocPtr->loc, loc, num*sizeof(int)); + clLocPtr->loc[num] = CLL_END; /* Sentinel */ + Tcl_SetHashValue (hPtr, clLocPtr); + + return clLocPtr; +} + +/* + *---------------------------------------------------------------------- + * + * TclContinuationsEnterDerived -- + * + * This procedure is a helper which computes the continuation line + * information associated with a Tcl_Obj* cut from the middle of a + * script. + * + * Results: + * None. + * + * Side effects: + * Allocates memory for the table of continuation line locations. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclContinuationsEnterDerived(objPtr, start, clNext) + Tcl_Obj* objPtr; + int start; + int* clNext; +{ + /* + * We have to handle invisible continuations lines here as well, despite + * the code we have in EvalTokensStandard (ETS) for that. Why ? + * Nesting. If our script is the sole argument to an 'eval' command, for + * example, the scriptCLLocPtr we are using here was generated by a + * previous call to ETS, and while the words we have here may contain + * continuation lines they are invisible already, and the call to ETS + * above had no bs+nl sequences to trigger its code. + * + * Luckily for us, the table we have to create here for the current word + * has to be a slice of the table currently in use, with the locations + * suitably modified to be relative to the start of the word instead of + * relative to the script. + * + * That is what we are doing now. Determine the slice we need, and if not + * empty, wrap it into a new table, and save the result into our + * thread-global hashtable, as usual. + */ + + /* + * First compute the range of the word within the script. + */ + + int length, end, num; + int* wordCLLast = clNext; + + Tcl_GetStringFromObj(objPtr, &length); + /* Is there a better way which doesn't shimmer ? */ + + end = start + length; /* first char after the word */ + + /* + * Then compute the table slice covering the range of + * the word. + */ + + while (*wordCLLast >= 0 && *wordCLLast < end) { + wordCLLast++; + } + + /* + * And generate the table from the slice, if it was + * not empty. + */ + + num = wordCLLast - clNext; + if (num) { + int i; + ContLineLoc* clLocPtr = + TclContinuationsEnter(objPtr, num, clNext); + + /* + * Re-base the locations. + */ + + for (i=0;iloc[i] -= start; + + /* + * Continuation lines coming before the string and affecting us + * should not happen, due to the proper maintenance of clNext + * during compilation. + */ + + if (clLocPtr->loc[i] < 0) { + Tcl_Panic("Derived ICL data for object using offsets from before the script"); + } + } + } +} + +/* + *---------------------------------------------------------------------- + * + * TclContinuationsCopy -- + * + * This procedure is a helper which copies the continuation line + * information associated with a Tcl_Obj* to another Tcl_Obj*. + * It is assumed that both contain the same string/script. Use + * this when a script is duplicated because it was shared. + * + * Results: + * None. + * + * Side effects: + * Allocates memory for the table of continuation line locations. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclContinuationsCopy(Tcl_Obj* objPtr, Tcl_Obj* originObjPtr) +{ + ThreadSpecificData *tsdPtr = TclGetContinuationTable(); + Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char*) originObjPtr); + + if (hPtr) { + ContLineLoc* clLocPtr = (ContLineLoc*) Tcl_GetHashValue (hPtr); + + TclContinuationsEnter(objPtr, clLocPtr->num, clLocPtr->loc); + } +} + +/* + *---------------------------------------------------------------------- + * + * TclContinuationsGet -- + * + * This procedure is a helper which retrieves the continuation line + * information associated with a Tcl_Obj*, if it has any. + * + * Results: + * A reference to the continuation line location table, or NULL + * if the Tcl_Obj* has no such information associated with it. + * + * Side effects: + * None. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +ContLineLoc* +TclContinuationsGet(objPtr) + Tcl_Obj* objPtr; +{ + ThreadSpecificData *tsdPtr = TclGetContinuationTable(); + Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char*) objPtr); + + if (hPtr) { + return (ContLineLoc*) Tcl_GetHashValue (hPtr); + } else { + return NULL; + } +} + +/* + *---------------------------------------------------------------------- + * + * TclThreadFinalizeObjects -- + * + * This procedure is a helper which releases all continuation line + * information currently known. It is run as a thread exit handler. + * + * Results: + * None. + * + * Side effects: + * Releases memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +static void +TclThreadFinalizeObjects (clientData) + ClientData clientData; +{ + /* + * Release the hashtable tracking invisible continuation lines. + */ + + Tcl_HashEntry *hPtr; + Tcl_HashSearch hSearch; + ThreadSpecificData *tsdPtr = TclGetContinuationTable(); + + for (hPtr = Tcl_FirstHashEntry(tsdPtr->lineCLPtr, &hSearch); + hPtr != NULL; + hPtr = Tcl_NextHashEntry(&hSearch)) { + /* + * We are not using Tcl_EventuallyFree (as in + * TclFreeObj()) because here we can be sure that the + * compiler will not hold references to the data in the + * hashtable, and using TEF might bork the finalization + * sequence. + */ + ContLineLocFree (Tcl_GetHashValue (hPtr)); + Tcl_DeleteHashEntry (hPtr); + } + Tcl_DeleteHashTable (tsdPtr->lineCLPtr); + tsdPtr->lineCLPtr = NULL; +} + +/* + *---------------------------------------------------------------------- + * + * ContLineLocFree -- + * + * The freProc for continuation line location tables. + * + * Results: + * None. + * + * Side effects: + * Releases memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +static void +ContLineLocFree (clientData) + char* clientData; +{ + ckfree (clientData); +} +#endif /* *-------------------------------------------------------------- * @@ -700,6 +1045,29 @@ TclFreeObj(objPtr) Tcl_MutexUnlock(&tclObjMutex); #endif /* TCL_MEM_DEBUG */ +#ifdef TCL_TIP280 + /* + * We cannot use TclGetContinuationTable() here, because that may + * re-initialize the thread-data for calls coming after the + * finalization. We have to access it using the low-level call and then + * check for validity. This function can be called after + * TclFinalizeThreadData() has already killed the thread-global data + * structures. Performing TCL_TSD_INIT will leave us with an + * un-initialized memory block upon which we crash (if we where to access + * the uninitialized hashtable). + */ + + { + ThreadSpecificData* tsdPtr = TCL_TSD_INIT(&dataKey); + if (tsdPtr->lineCLPtr) { + Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char *) objPtr); + if (hPtr) { + Tcl_EventuallyFree (Tcl_GetHashValue (hPtr), ContLineLocFree); + Tcl_DeleteHashEntry (hPtr); + } + } + } +#endif TclIncrObjsFreed(); } @@ -3280,3 +3648,12 @@ SetCmdNameFromAny(interp, objPtr) objPtr->typePtr = &tclCmdNameType; return TCL_OK; } + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ + diff --git a/generic/tclProc.c b/generic/tclProc.c index 1e9f6b4..8ceb184 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.44.2.10 2009/06/13 14:38:44 dgp Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.44.2.11 2009/08/25 20:59:11 andreas_kupries Exp $ */ #include "tclInt.h" @@ -366,8 +366,20 @@ TclCreateProc(interp, nsPtr, procName, argsPtr, bodyPtr, procPtrPtr) */ if (Tcl_IsShared(bodyPtr)) { +#ifdef TCL_TIP280 + Tcl_Obj* sharedBodyPtr = bodyPtr; +#endif bytes = Tcl_GetStringFromObj(bodyPtr, &length); bodyPtr = Tcl_NewStringObj(bytes, length); +#ifdef TCL_TIP280 + /* + * TIP #280. + * Ensure that the continuation line data for the original body is + * not lost and applies to the new body as well. + */ + + TclContinuationsCopy (bodyPtr, sharedBodyPtr); +#endif } /* diff --git a/generic/tclVar.c b/generic/tclVar.c index b29400e..78505ff 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.69.2.14 2007/05/10 18:23:58 dgp Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.69.2.15 2009/08/25 20:59:11 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1659,6 +1659,15 @@ TclPtrSetVar(interp, varPtr, arrayPtr, part1, part2, newValuePtr, flags) } else { if (Tcl_IsShared(oldValuePtr)) { /* append to copy */ varPtr->value.objPtr = Tcl_DuplicateObj(oldValuePtr); +#ifdef TCL_TIP280 + /* + * TIP #280. + * Ensure that the continuation line data for the + * string is not lost and applies to the extended + * script as well. + */ + TclContinuationsCopy (varPtr->value.objPtr, oldValuePtr); +#endif TclDecrRefCount(oldValuePtr); oldValuePtr = varPtr->value.objPtr; Tcl_IncrRefCount(oldValuePtr); /* since var is ref */ diff --git a/tests/info.test b/tests/info.test index b655e30..21e4f75 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.24.2.12 2009/07/14 16:31:49 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.24.2.13 2009/08/25 20:59:11 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -790,7 +790,7 @@ test info-22.8 {info frame, basic trace} -constraints {tip280} -match glob -body join [lrange [etrace] 0 1] \n } -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} * {type source line 790 file info.test cmd etrace proc ::tcltest::RunTest}} -## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 + test info-23.0.0 {eval'd info frame} {tip280 && !singleTestInterp} { eval {info frame} } 8 @@ -835,7 +835,7 @@ test info-23.6 {eval'd info frame, trace} -constraints {tip280} -match glob -bod } -result {* {type source line 723 file info.test cmd {info frame $level} proc ::etrace level 0} * {type eval line 1 cmd etrace proc ::tcltest::RunTest} * {type source line 834 file info.test cmd {eval $script} proc ::tcltest::RunTest}} -## The line 1966 is off by 5 from the true value of 1971. This is a knownBug, see testcase 30.0 + # ------------------------------------------------------------------------- # Procedures defined in scripts which are arguments to control @@ -945,20 +945,20 @@ test info-25.1 {info frame, regular proc} tip280 { rename bar {} - -test info-30.0 {bs+nl in literal words} {tip280 knownBug} { +# More info-30.x test cases at the end of the file. +test info-30.0 {bs+nl in literal words} {tip280} { if {1} { set res \ - [reduce [info frame 0]] + [reduce [info frame 0]];# line 952 } set res - # This is reporting line 3 instead of the correct 4 because the + # This was reporting line 3 instead of the correct 4 because the # bs+nl combination is subst by the parser before the 'if' - # command, and the the bcc sees the word. To fix record the - # offsets of all bs+nl sequences in literal words, then use the - # information in the bcc to bump line numbers when parsing over - # the location. Also affected: testcases 22.8 and 23.6. -} {type eval line 4 cmd {info frame 0} proc ::tcltest::RunTest} + # command, and the bcc, see the word. Fixed by recording the + # offsets of all bs+nl sequences in literal words, then using the + # information in the bcc and other places to bump line numbers when + # parsing over the location. Also affected: testcases 22.8 and 23.6. +} {type source line 952 file info.test cmd {info frame 0} proc ::tcltest::RunTest} @@ -1223,6 +1223,245 @@ type source line 1214 file info.test cmd {info frame 0} proc ::foo::bar level 0 type source line 1215 file info.test cmd {info frame 0} proc ::foo::bar level 0} # ------------------------------------------------------------------------- +# Additional tests for info-30.*, handling of continuation lines (bs+nl sequences). + +test info-30.1 {bs+nl in literal words, procedure body, compiled} {tip280} { + proc abra {} { + if {1} \ + { + return \ + [reduce [info frame 0]];# line 1233 + } + } + set res [abra] + rename abra {} + set res +} {type source line 1233 file info.test cmd {info frame 0} proc ::abra level 0} + +test info-30.2 {bs+nl in literal words, namespace script} {tip280} { + namespace eval xxx { + set res \ + [reduce [info frame 0]];# line 1244 + } + set res +} {type source line 1244 file info.test cmd {info frame 0} level 0} + +test info-30.3 {bs+nl in literal words, namespace multi-word script} {tip280} { + namespace eval xxx set res \ + [list [reduce [info frame 0]]];# line 1251 + set res +} {type source line 1251 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.4 {bs+nl in literal words, eval script} {tip280} { + eval { + set ::res \ + [reduce [info frame 0]];# line 1258 + } + set res +} {type source line 1258 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.5 {bs+nl in literal words, eval script, with nested words} {tip280} { + eval { + if {1} \ + { + set ::res \ + [reduce [info frame 0]];# line 1268 + } + } + set res +} {type source line 1268 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.6 {bs+nl in computed word} {tip280} { + set res "\ +[reduce [info frame 0]]";# line 1276 +} { type source line 1276 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.7 {bs+nl in computed word, in proc} {tip280} { + proc abra {} { + return "\ +[reduce [info frame 0]]";# line 1282 + } + set res [abra] + rename abra {} + set res +} { type source line 1282 file info.test cmd {info frame 0} proc ::abra level 0} + +test info-30.8 {bs+nl in computed word, nested eval} {tip280} { + eval { + set \ + res "\ +[reduce [info frame 0]]";# line 1293 +} +} { type source line 1293 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.9 {bs+nl in computed word, nested eval} {tip280} { + eval { + set \ + res "\ +[reduce \ + [info frame 0]]";# line 1302 +} +} { type source line 1302 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.10 {bs+nl in computed word, key to array} {tip280} { + set tmp([set \ + res "\ +[reduce \ + [info frame 0]]"]) x ; #1310 + unset tmp + set res +} { type source line 1310 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.11 {bs+nl in subst arguments, no true counting} {tip280} { + subst {[set \ + res "\ +[reduce \ + [info frame 0]]"]} +} { type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.12 {bs+nl in computed word, nested eval} {tip280} { + eval { + set \ + res "\ +[set x {}] \ +[reduce \ + [info frame 0]]";# line 1328 +} +} { type source line 1328 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.13 {bs+nl in literal words, uplevel script, with nested words} {tip280} { + uplevel #0 { + if {1} \ + { + set ::res \ + [reduce [info frame 0]];# line 1337 + } + } + set res +} {type source line 1337 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.14 {bs+nl, literal word, uplevel through proc} {tip280} { + proc abra {script} { + uplevel 1 $script + } + set res [abra { + return "\ +[reduce [info frame 0]]";# line 1349 + }] + rename abra {} + set res +} { type source line 1349 file info.test cmd {info frame 0} proc ::abra} + +test info-30.15 {bs+nl in literal words, nested proc body, compiled} {tip280} { + proc a {} { + proc b {} { + if {1} \ + { + return \ + [reduce [info frame 0]];# line 1361 + } + } + } + a ; set res [b] + rename a {} + rename b {} + set res +} {type source line 1361 file info.test cmd {info frame 0} proc ::b level 0} + +test info-30.16 {bs+nl in multi-body switch, compiled} {tip280} { + proc a {value} { + switch -regexp -- $value \ + ^key { info frame 0; # 1374 } \ + \t { info frame 0; # 1375 } \ + {[0-9]*} { info frame 0; # 1376 } + } + set res {} + lappend res [reduce [a {key }]] + lappend res [reduce [a {1alpha}]] + set res "\n[join $res \n]" +} { +type source line 1374 file info.test cmd {info frame 0} proc ::a level 0 +type source line 1376 file info.test cmd {info frame 0} proc ::a level 0} + +test info-30.17 {bs+nl in multi-body switch, direct} {tip280} { + switch -regexp -- {key } \ + ^key { reduce [info frame 0] ;# 1388 } \ + \t### { } \ + {[0-9]*} { } +} {type source line 1388 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.18 {bs+nl, literal word, uplevel through proc, appended, loss of primary tracking data} {tip280} { + proc abra {script} { + append script "\n# end of script" + uplevel 1 $script + } + set res [abra { + return "\ +[reduce [info frame 0]]";# line 1400, still line of 3 appended script + }] + rename abra {} + set res +} { type eval line 3 cmd {info frame 0} proc ::abra} +# { type source line 1400 file info.test cmd {info frame 0} proc ::abra} + +test info-30.19 {bs+nl in single-body switch, compiled} {tip280} { + proc a {value} { + switch -regexp -- $value { + ^key { reduce \ + [info frame 0] } + \t { reduce \ + [info frame 0] } + {[0-9]*} { reduce \ + [info frame 0] } + } + } + set res {} + lappend res [a {key }] + lappend res [a {1alpha}] + set res "\n[join $res \n]" +} { +type source line 1411 file info.test cmd {info frame 0} proc ::a level 0 +type source line 1415 file info.test cmd {info frame 0} proc ::a level 0} + +test info-30.20 {bs+nl in single-body switch, direct} {tip280} { + switch -regexp -- {key } { \ + + ^key { reduce \ + [info frame 0] } + \t { } + {[0-9]*} { } + } +} {type source line 1430 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.21 {bs+nl in if, full compiled} {tip280} { + proc a {value} { + if {$value} \ + {info frame 0} \ + {info frame 0} + } + set res {} + lappend res [reduce [a 1]] + lappend res [reduce [a 0]] + set res "\n[join $res \n]" +} { +type source line 1439 file info.test cmd {info frame 0} proc ::a level 0 +type source line 1440 file info.test cmd {info frame 0} proc ::a level 0} + +test info-30.22 {bs+nl in computed word, key to array, compiled} {tip280} { + proc a {} { + set tmp([set \ + res "\ +[reduce \ + [info frame 0]]"]) x ; #1454 + unset tmp + set res + } + set res [a] + rename a {} + set res +} { type source line 1455 file info.test cmd {info frame 0} proc ::a level 0} + +# ------------------------------------------------------------------------- # cleanup catch {namespace delete test_ns_info1 test_ns_info2} -- cgit v0.12 From b323d4f47679f5fc047d6397a0c87f0768de644c Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 25 Aug 2009 21:01:05 +0000 Subject: * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations, TclEvalObjEx): * generic/tclCmdMZ.c (Tcl_SwitchObjCmd, TclListLines): * generic/tclCompCmds.c (*): * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv, TclFreeCompileEnv, TclCompileScript): * generic/tclCompile.h (CompileEnv): * generic/tclInt.h (ContLineLoc, Interp): * generic/tclObj.c (ThreadSpecificData, ContLineLocFree, TclThreadFinalizeObjects, TclInitObjSubsystem, TclContinuationsEnter, TclContinuationsEnterDerived, TclContinuationsCopy, TclContinuationsGet, TclFreeObj): * generic/tclParse.c (TclSubstTokens, Tcl_SubstObj): * generic/tclProc.c (TclCreateProc): * generic/tclVar.c (TclPtrSetVar): * tests/info.test (info-30.0-24): Extended parser, compiler, and execution with code and attendant data structures tracking the positions of continuation lines which are not visible in script Tcl_Obj*'s, to properly account for them while counting lines for #280. --- ChangeLog | 25 ++++ generic/tclBasic.c | 162 +++++++++++++++++++-- generic/tclCmdMZ.c | 26 +++- generic/tclCompCmds.c | 115 +++++++++------ generic/tclCompile.c | 163 ++++++++++++++++++++- generic/tclCompile.h | 12 +- generic/tclInt.h | 57 +++++++- generic/tclObj.c | 390 +++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclParse.c | 130 ++++++++++++++++- generic/tclProc.c | 14 +- generic/tclVar.c | 10 +- tests/info.test | 293 +++++++++++++++++++++++++++++++++++-- 12 files changed, 1290 insertions(+), 107 deletions(-) diff --git a/ChangeLog b/ChangeLog index f982bcd..45345ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2009-08-25 Andreas Kupries + + * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, + EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations, + TclEvalObjEx): + * generic/tclCmdMZ.c (Tcl_SwitchObjCmd, TclListLines): + * generic/tclCompCmds.c (*): + * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv, + TclFreeCompileEnv, TclCompileScript): + * generic/tclCompile.h (CompileEnv): + * generic/tclInt.h (ContLineLoc, Interp): + * generic/tclObj.c (ThreadSpecificData, ContLineLocFree, + TclThreadFinalizeObjects, TclInitObjSubsystem, + TclContinuationsEnter, TclContinuationsEnterDerived, + TclContinuationsCopy, TclContinuationsGet, TclFreeObj): + * generic/tclParse.c (TclSubstTokens, Tcl_SubstObj): + * generic/tclProc.c (TclCreateProc): + * generic/tclVar.c (TclPtrSetVar): + * tests/info.test (info-30.0-24): + + Extended parser, compiler, and execution with code and attendant + data structures tracking the positions of continuation lines which + are not visible in script Tcl_Obj*'s, to properly account for them + while counting lines for #280. + 2009-08-24 Daniel Steffen * macosx/tclMacOSXNotify.c: fix multiple issues with nested event loops diff --git a/generic/tclBasic.c b/generic/tclBasic.c index d7cbe39..77e9a31 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.12 2009/07/23 15:23:50 das Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.13 2009/08/25 21:01:05 andreas_kupries Exp $ */ #include "tclInt.h" @@ -450,6 +450,7 @@ Tcl_CreateInterp(void) Tcl_InitHashTable(iPtr->lineBCPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineLAPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr->lineLABCPtr, TCL_ONE_WORD_KEYS); + iPtr->scriptCLLocPtr = NULL; iPtr->activeVarTracePtr = NULL; @@ -3954,7 +3955,8 @@ Tcl_EvalTokensStandard( int count) /* Number of tokens to consider at tokenPtr. * Must be at least 1. */ { - return TclSubstTokens(interp, tokenPtr, count, /* numLeftPtr */ NULL, 1); + return TclSubstTokens(interp, tokenPtr, count, /* numLeftPtr */ NULL, 1, + NULL, NULL); } /* @@ -4038,7 +4040,7 @@ Tcl_EvalEx( * evaluation of the script. Only * TCL_EVAL_GLOBAL is currently supported. */ { - return TclEvalEx(interp, script, numBytes, flags, 1); + return TclEvalEx(interp, script, numBytes, flags, 1, NULL, script); } int @@ -4052,7 +4054,24 @@ TclEvalEx( int flags, /* Collection of OR-ed bits that control the * evaluation of the script. Only * TCL_EVAL_GLOBAL is currently supported. */ - int line) /* The line the script starts on. */ + int line, /* The line the script starts on. */ + int* clNextOuter, /* Information about an outer context for */ + CONST char* outerScript) /* continuation line data. This is set only in + * EvalTokensStandard(), to properly handle + * [...]-nested commands. The 'outerScript' + * refers to the most-outer script containing the + * embedded command, which is refered to by + * 'script'. The 'clNextOuter' refers to the + * current entry in the table of continuation + * lines in this "master script", and the + * character offsets are relative to the + * 'outerScript' as well. + * + * If outerScript == script, then this call is + * for the outer-most script/command. See + * Tcl_EvalEx() and TclEvalObjEx() for places + * generating arguments for which this is true. + */ { Interp *iPtr = (Interp *) interp; const char *p, *next; @@ -4080,6 +4099,23 @@ TclEvalEx( int *linesStack = (int *) TclStackAlloc(interp, minObjs * sizeof(int)); /* TIP #280 Structures for tracking of command * locations. */ + /* + * Pointer for the tracking of invisible continuation lines. Initialized + * only if the caller gave us a table of locations to track, via + * scriptCLLocPtr. It always refers to the table entry holding the + * location of the next invisible continuation line to look for, while + * parsing the script. + */ + + int* clNext = NULL; + + if (iPtr->scriptCLLocPtr) { + if (clNextOuter) { + clNext = clNextOuter; + } else { + clNext = &iPtr->scriptCLLocPtr->loc[0]; + } + } if (numBytes < 0) { numBytes = strlen(script); @@ -4105,12 +4141,12 @@ TclEvalEx( /* * TIP #280 Initialize tracking. Do not push on the frame stack yet. * - * We may cont. counting based on a specific context (CTX), or open a new - * context, either for a sourced script, or 'eval'. For sourced files we - * always have a path object, even if nothing was specified in the interp - * itself. That makes code using it simpler as NULL checks can be left - * out. Sourced file without path in the 'scriptFile' is possible during - * Tcl initialization. + * We may continue counting based on a specific context (CTX), or open a + * new context, either for a sourced script, or 'eval'. For sourced files + * we always have a path object, even if nothing was specified in the + * interp itself. That makes code using it simpler as NULL checks can be + * left out. Sourced file without path in the 'scriptFile' is possible + * during Tcl initialization. */ if (iPtr->evalFlags & TCL_EVAL_CTX) { @@ -4175,19 +4211,25 @@ TclEvalEx( /* * TIP #280 Track lines. The parser may have skipped text till it * found the command we are now at. We have to count the lines in this - * block. + * block, and do not forget invisible continuation lines. */ TclAdvanceLines(&line, p, parsePtr->commandStart); + TclAdvanceContinuations (&line, &clNext, + parsePtr->commandStart - outerScript); gotParse = 1; if (parsePtr->numWords > 0) { /* - * TIP #280. Track lines within the words of the current command. + * TIP #280. Track lines within the words of the current + * command. We use a separate pointer into the table of + * continuation line locations to not lose our position for the + * per-command parsing. */ int wordLine = line; const char *wordStart = parsePtr->commandStart; + int* wordCLNext = clNext; /* * Generate an array of objects for the words of the command. @@ -4218,6 +4260,8 @@ TclEvalEx( */ TclAdvanceLines(&wordLine, wordStart, tokenPtr->start); + TclAdvanceContinuations (&wordLine, &wordCLNext, + tokenPtr->start - outerScript); wordStart = tokenPtr->start; lines[objectsUsed] = TclWordKnownAtCompileTime(tokenPtr, NULL) @@ -4228,7 +4272,8 @@ TclEvalEx( } code = TclSubstTokens(interp, tokenPtr+1, - tokenPtr->numComponents, NULL, wordLine); + tokenPtr->numComponents, NULL, wordLine, + wordCLNext, outerScript); iPtr->evalFlags = 0; @@ -4260,6 +4305,11 @@ TclEvalEx( expand[objectsUsed] = 0; objectsNeeded++; } + + if (wordCLNext) { + TclContinuationsEnterDerived (objv[objectsUsed], + wordStart - outerScript, wordCLNext); + } } /* for loop */ if (expandRequested) { /* @@ -4487,6 +4537,53 @@ TclAdvanceLines( /* *---------------------------------------------------------------------- + * + * TclAdvanceContinuations -- + * + * This procedure is a helper which counts the number of continuation + * lines (CL) in a block of text using a table of CL locations and + * advances an external counter, and the pointer into the table. + * + * Results: + * None. + * + * Side effects: + * The specified counter is advanced per the number of continuation lines + * found. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclAdvanceContinuations (line,clNextPtrPtr,loc) + int* line; + int** clNextPtrPtr; + int loc; +{ + /* + * Track the invisible continuation lines embedded in a script, if + * any. Here they are just spaces (already). They were removed by + * EvalTokensStandard() via Tcl_UtfBackslash(). + * + * *clNextPtrPtr <=> We have continuation lines to track. + * **clNextPtrPtr >= 0 <=> We are not beyond the last possible location. + * loc >= **clNextPtrPtr <=> We stepped beyond the current cont. line. + */ + + while (*clNextPtrPtr && (**clNextPtrPtr >= 0) && (loc >= **clNextPtrPtr)) { + /* + * We just stepped over an invisible continuation line. Adjust the + * line counter and step to the table entry holding the location of + * the next continuation line to track. + */ + (*line) ++; + (*clNextPtrPtr) ++; + } +} + +/* + *---------------------------------------------------------------------- * Note: The whole data structure access for argument location tracking is * hidden behind these three functions. The only parts open are the lineLAPtr * field in the Interp structure. The CFWord definition is internal to here. @@ -5044,6 +5141,33 @@ TclEvalObjEx( * in the bytecode compiler. */ + /* + * Now we check if we have data about invisible continuation lines for + * the script, and make it available to the direct script parser and + * evaluator we are about to call, if so. + * + * It may be possible that the script Tcl_Obj* can be free'd while the + * evaluator is using it, leading to the release of the associated + * ContLineLoc structure as well. To ensure that the latter doesn't + * happen we set a lock on it. We release this lock later in this + * function, after the evaluator is done. The relevant "lineCLPtr" + * hashtable is managed in the file "tclObj.c". + * + * Another important action is to save (and later restore) the + * continuation line information of the caller, in case we are + * executing nested commands in the eval/direct path. + */ + + ContLineLoc* saveCLLocPtr = iPtr->scriptCLLocPtr; + ContLineLoc* clLocPtr = TclContinuationsGet (objPtr); + + if (clLocPtr) { + iPtr->scriptCLLocPtr = clLocPtr; + Tcl_Preserve (iPtr->scriptCLLocPtr); + } else { + iPtr->scriptCLLocPtr = NULL; + } + if (invoker == NULL) { /* * No context, force opening of our own. @@ -5101,7 +5225,7 @@ TclEvalObjEx( iPtr->evalFlags |= TCL_EVAL_CTX; result = TclEvalEx(interp, script, numSrcBytes, flags, - ctxPtr->line[word]); + ctxPtr->line[word], NULL, script); if (pc) { /* @@ -5112,6 +5236,16 @@ TclEvalObjEx( } } TclStackFree(interp, ctxPtr); + + /* + * Now release the lock on the continuation line information, if + * any, and restore the caller's settings. + */ + + if (iPtr->scriptCLLocPtr) { + Tcl_Release (iPtr->scriptCLLocPtr); + } + iPtr->scriptCLLocPtr = saveCLLocPtr; } } else { /* diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index aa12480..1ff2138 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.163.2.4 2009/07/20 09:26:16 dkf Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.163.2.5 2009/08/25 21:01:05 andreas_kupries Exp $ */ #include "tclInt.h" @@ -3853,7 +3853,7 @@ Tcl_SwitchObjCmd( ctxPtr->line = (int *) ckalloc(objc * sizeof(int)); ctxPtr->nline = objc; - TclListLines(TclGetString(blist), bline, objc, ctxPtr->line); + TclListLines(blist, bline, objc, ctxPtr->line, objv); } else { /* * This is either a dynamic code word, when all elements are @@ -3891,7 +3891,7 @@ Tcl_SwitchObjCmd( * TIP #280: Make invoking context available to switch branch. */ - result = TclEvalObjEx(interp, objv[j], 0, ctxPtr, j); + result = TclEvalObjEx(interp, objv[j], 0, ctxPtr, splitObjs ? j : bidx+j); if (splitObjs) { ckfree((char *) ctxPtr->line); if (pc && (ctxPtr->type == TCL_LOCATION_SOURCE)) { @@ -4094,21 +4094,33 @@ Tcl_WhileObjCmd( void TclListLines( - CONST char *listStr, /* Pointer to string with list structure. - * Assumed to be valid. Assumed to contain n - * elements. */ + Tcl_Obj* listObj, /* Pointer to obj holding a string with list + * structure. Assumed to be valid. Assumed to + * contain n elements. + */ int line, /* Line the list as a whole starts on. */ int n, /* #elements in lines */ - int *lines) /* Array of line numbers, to fill. */ + int *lines, /* Array of line numbers, to fill. */ + Tcl_Obj* const* elems) /* The list elems as Tcl_Obj*, in need of + * derived continuation data */ { + CONST char* listStr = Tcl_GetString (listObj); + CONST char* listHead = listStr; int i, length = strlen(listStr); CONST char *element = NULL, *next = NULL; + ContLineLoc* clLocPtr = TclContinuationsGet(listObj); + int* clNext = (clLocPtr ? &clLocPtr->loc[0] : NULL); for (i = 0; i < n; i++) { TclFindElement(NULL, listStr, length, &element, &next, NULL, NULL); TclAdvanceLines(&line, listStr, element); /* Leading whitespace */ + TclAdvanceContinuations (&line, &clNext, element - listHead); + if (elems && clNext) { + TclContinuationsEnterDerived (elems[i], element - listHead, + clNext); + } lines[i] = line; length -= (next - listStr); TclAdvanceLines(&line, element, next); diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 6a71666..d01964d 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.143.2.1 2008/05/07 10:39:38 dkf Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.143.2.2 2009/08/25 21:01:05 andreas_kupries Exp $ */ #include "tclInt.h" @@ -31,7 +31,8 @@ TclEmitPush(TclRegisterNewLiteral((envPtr), (tokenPtr)[1].start, \ (tokenPtr)[1].size), (envPtr)); \ } else { \ - envPtr->line = mapPtr->loc[eclIndex].line[word]; \ + envPtr->line = mapPtr->loc[eclIndex].line[word]; \ + envPtr->clNext = mapPtr->loc[eclIndex].next[word]; \ TclCompileTokens((interp), (tokenPtr)+1, (tokenPtr)->numComponents, \ (envPtr)); \ } @@ -49,6 +50,10 @@ ExtCmdLoc *mapPtr = envPtr->extCmdMapPtr; \ int eclIndex = mapPtr->nuloc - 1 +#define SetLineInformation(word) \ + envPtr->line = mapPtr->loc [eclIndex].line [(word)]; \ + envPtr->clNext = mapPtr->loc [eclIndex].next [(word)] + /* * Convenience macro for use when compiling bodies of commands. The ANSI C * "prototype" for this macro is: @@ -152,7 +157,8 @@ static void PrintJumptableInfo(ClientData clientData, static int PushVarName(Tcl_Interp *interp, Tcl_Token *varTokenPtr, CompileEnv *envPtr, int flags, int *localIndexPtr, - int *simpleVarNamePtr, int *isScalarPtr, int line); + int *simpleVarNamePtr, int *isScalarPtr, + int line, int* clNext); static int CompileAssociativeBinaryOpCmd(Tcl_Interp *interp, Tcl_Parse *parsePtr, const char *identity, int instruction, CompileEnv *envPtr); @@ -169,6 +175,11 @@ static void CompileReturnInternal(CompileEnv *envPtr, unsigned char op, int code, int level, Tcl_Obj *returnOpts); +#define PushVarNameWord(i,v,e,f,l,s,sc,word) \ + PushVarName (i,v,e,f,l,s,sc, \ + mapPtr->loc [eclIndex].line [(word)], \ + mapPtr->loc [eclIndex].next [(word)]) + /* * Flags bits used by PushVarName. */ @@ -259,9 +270,8 @@ TclCompileAppendCmd( varTokenPtr = TokenAfter(parsePtr->tokenPtr); - PushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc[eclIndex].line[1]); + PushVarNameWord(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); /* * We are doing an assignment, otherwise TclCompileSetCmd was called, so @@ -449,7 +459,7 @@ TclCompileCatchCmd( * range so that errors in the substitution are not catched [Bug 219184] */ - envPtr->line = mapPtr->loc[eclIndex].line[1]; + SetLineInformation (1); if (cmdTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) { ExceptionRangeStarts(envPtr, range); CompileBody(envPtr, cmdTokenPtr, interp); @@ -921,7 +931,7 @@ TclCompileDictForCmd( * Compile the loop body itself. It should be stack-neutral. */ - envPtr->line = mapPtr->loc[eclIndex].line[4]; + SetLineInformation (4); CompileBody(envPtr, bodyTokenPtr, interp); TclEmitOpcode( INST_POP, envPtr); @@ -1447,7 +1457,7 @@ TclCompileForCmd( * Inline compile the initial command. */ - envPtr->line = mapPtr->loc[eclIndex].line[1]; + SetLineInformation (1); CompileBody(envPtr, startTokenPtr, interp); TclEmitOpcode(INST_POP, envPtr); @@ -1470,7 +1480,7 @@ TclCompileForCmd( */ bodyCodeOffset = ExceptionRangeStarts(envPtr, bodyRange); - envPtr->line = mapPtr->loc[eclIndex].line[4]; + SetLineInformation (4); CompileBody(envPtr, bodyTokenPtr, interp); ExceptionRangeEnds(envPtr, bodyRange); envPtr->currStackDepth = savedStackDepth + 1; @@ -1482,7 +1492,7 @@ TclCompileForCmd( envPtr->currStackDepth = savedStackDepth; nextCodeOffset = ExceptionRangeStarts(envPtr, nextRange); - envPtr->line = mapPtr->loc[eclIndex].line[3]; + SetLineInformation (3); CompileBody(envPtr, nextTokenPtr, interp); ExceptionRangeEnds(envPtr, nextRange); envPtr->currStackDepth = savedStackDepth + 1; @@ -1503,7 +1513,7 @@ TclCompileForCmd( testCodeOffset += 3; } - envPtr->line = mapPtr->loc[eclIndex].line[2]; + SetLineInformation (2); envPtr->currStackDepth = savedStackDepth; TclCompileExprWords(interp, testTokenPtr, 1, envPtr); envPtr->currStackDepth = savedStackDepth + 1; @@ -1753,7 +1763,7 @@ TclCompileForeachCmd( i < numWords-1; i++, tokenPtr = TokenAfter(tokenPtr)) { if ((i%2 == 0) && (i > 0)) { - envPtr->line = mapPtr->loc[eclIndex].line[i]; + SetLineInformation (i); CompileTokens(envPtr, tokenPtr, interp); tempVar = (firstValueTemp + loopIndex); if (tempVar <= 255) { @@ -1785,7 +1795,7 @@ TclCompileForeachCmd( * Inline compile the loop body. */ - envPtr->line = mapPtr->loc[eclIndex].line[bodyIndex]; + SetLineInformation (bodyIndex); ExceptionRangeStarts(envPtr, range); CompileBody(envPtr, bodyTokenPtr, interp); ExceptionRangeEnds(envPtr, range); @@ -2124,7 +2134,7 @@ TclCompileIfCmd( compileScripts = 0; } } else { - envPtr->line = mapPtr->loc[eclIndex].line[wordIdx]; + SetLineInformation (wordIdx); Tcl_ResetResult(interp); TclCompileExprWords(interp, testTokenPtr, 1, envPtr); if (jumpFalseFixupArray.next >= jumpFalseFixupArray.end) { @@ -2166,7 +2176,7 @@ TclCompileIfCmd( */ if (compileScripts) { - envPtr->line = mapPtr->loc[eclIndex].line[wordIdx]; + SetLineInformation (wordIdx); envPtr->currStackDepth = savedStackDepth; CompileBody(envPtr, tokenPtr, interp); } @@ -2254,7 +2264,7 @@ TclCompileIfCmd( * Compile the else command body. */ - envPtr->line = mapPtr->loc[eclIndex].line[wordIdx]; + SetLineInformation (wordIdx); CompileBody(envPtr, tokenPtr, interp); } @@ -2356,9 +2366,8 @@ TclCompileIncrCmd( varTokenPtr = TokenAfter(parsePtr->tokenPtr); - PushVarName(interp, varTokenPtr, envPtr, TCL_NO_LARGE_INDEX|TCL_CREATE_VAR, - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc[eclIndex].line[1]); + PushVarNameWord(interp, varTokenPtr, envPtr, TCL_NO_LARGE_INDEX|TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); /* * If an increment is given, push it, but see first if it's a small @@ -2384,7 +2393,7 @@ TclCompileIncrCmd( PushLiteral(envPtr, word, numBytes); } } else { - envPtr->line = mapPtr->loc[eclIndex].line[2]; + SetLineInformation (2); CompileTokens(envPtr, incrTokenPtr, interp); } } else { /* No incr amount given so use 1. */ @@ -2499,9 +2508,8 @@ TclCompileLappendCmd( varTokenPtr = TokenAfter(parsePtr->tokenPtr); - PushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc[eclIndex].line[1]); + PushVarNameWord(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); /* * If we are doing an assignment, push the new value. In the no values @@ -2606,8 +2614,8 @@ TclCompileLassignCmd( * Generate the next variable name. */ - PushVarName(interp, tokenPtr, envPtr, TCL_CREATE_VAR, &localIndex, - &simpleVarName, &isScalar, mapPtr->loc[eclIndex].line[idx+2]); + PushVarNameWord(interp, tokenPtr, envPtr, TCL_CREATE_VAR, &localIndex, + &simpleVarName, &isScalar, idx+2); /* * Emit instructions to get the idx'th item out of the list value on @@ -2943,9 +2951,8 @@ TclCompileLsetCmd( */ varTokenPtr = TokenAfter(parsePtr->tokenPtr); - PushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc[eclIndex].line[1]); + PushVarNameWord(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); /* * Push the "index" args and the new element value. @@ -3445,9 +3452,8 @@ TclCompileSetCmd( */ varTokenPtr = TokenAfter(parsePtr->tokenPtr); - PushVarName(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc[eclIndex].line[1]); + PushVarNameWord(interp, varTokenPtr, envPtr, TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); /* * If we are doing an assignment, push the new value. @@ -3728,7 +3734,7 @@ TclCompileStringMatchCmd( } PushLiteral(envPtr, str, length); } else { - envPtr->line = mapPtr->loc[eclIndex].line[i+1+nocase]; + SetLineInformation (i+1+nocase); CompileTokens(envPtr, tokenPtr, interp); } tokenPtr = TokenAfter(tokenPtr); @@ -3794,7 +3800,7 @@ TclCompileStringLenCmd( len = sprintf(buf, "%d", len); PushLiteral(envPtr, buf, len); } else { - envPtr->line = mapPtr->loc[eclIndex].line[1]; + SetLineInformation (1); CompileTokens(envPtr, tokenPtr, interp); TclEmitOpcode(INST_STR_LEN, envPtr); } @@ -3844,6 +3850,7 @@ TclCompileSwitchCmd( Tcl_Token **bodyToken; /* Array of pointers to pattern list items. */ int *bodyLines; /* Array of line numbers for body list * items. */ + int** bodyNext; int foundDefault; /* Flag to indicate whether a "default" clause * is present. */ @@ -3862,6 +3869,7 @@ TclCompileSwitchCmd( int isListedArms = 0; int i, valueIndex; DefineLineInformation; /* TIP #280 */ + int* clNext = envPtr->clNext; /* * Only handle the following versions: @@ -4040,6 +4048,7 @@ TclCompileSwitchCmd( bodyTokenArray = (Tcl_Token *) ckalloc(sizeof(Tcl_Token) * numWords); bodyToken = (Tcl_Token **) ckalloc(sizeof(Tcl_Token *) * numWords); bodyLines = (int *) ckalloc(sizeof(int) * numWords); + bodyNext = (int **) ckalloc(sizeof(int*) * numWords); /* * Locate the start of the arms within the overall word. @@ -4083,6 +4092,7 @@ TclCompileSwitchCmd( ckfree((char *) bodyToken); ckfree((char *) bodyTokenArray); ckfree((char *) bodyLines); + ckfree((char *) bodyNext); return TCL_ERROR; } @@ -4093,7 +4103,10 @@ TclCompileSwitchCmd( */ TclAdvanceLines(&bline, p, bodyTokenArray[i].start); + TclAdvanceContinuations (&bline, &clNext, + bodyTokenArray[i].start - envPtr->source); bodyLines[i] = bline; + bodyNext[i] = clNext; p = bodyTokenArray[i].start; while (isspace(UCHAR(*tokenStartPtr))) { @@ -4121,6 +4134,7 @@ TclCompileSwitchCmd( ckfree((char *) bodyToken); ckfree((char *) bodyTokenArray); ckfree((char *) bodyLines); + ckfree((char *) bodyNext); return TCL_ERROR; } @@ -4141,6 +4155,7 @@ TclCompileSwitchCmd( bodyToken = (Tcl_Token **) ckalloc(sizeof(Tcl_Token *) * numWords); bodyLines = (int *) ckalloc(sizeof(int) * numWords); + bodyNext = (int **) ckalloc(sizeof(int*) * numWords); bodyTokenArray = NULL; for (i=0 ; inumComponents != 1) { ckfree((char *) bodyToken); ckfree((char *) bodyLines); + ckfree((char *) bodyNext); return TCL_ERROR; } bodyToken[i] = tokenPtr+1; @@ -4162,6 +4178,7 @@ TclCompileSwitchCmd( */ bodyLines[i] = mapPtr->loc[eclIndex].line[valueIndex+1+i]; + bodyNext[i] = mapPtr->loc[eclIndex].next[valueIndex+1+i]; tokenPtr = TokenAfter(tokenPtr); } } @@ -4175,6 +4192,7 @@ TclCompileSwitchCmd( bodyToken[numWords-1]->start[0] == '-') { ckfree((char *) bodyToken); ckfree((char *) bodyLines); + ckfree((char *) bodyNext); if (bodyTokenArray != NULL) { ckfree((char *) bodyTokenArray); } @@ -4186,7 +4204,7 @@ TclCompileSwitchCmd( * First, we push the value we're matching against on the stack. */ - envPtr->line = mapPtr->loc[eclIndex].line[valueIndex]; + SetLineInformation (valueIndex); CompileTokens(envPtr, valueTokenPtr, interp); /* @@ -4308,6 +4326,7 @@ TclCompileSwitchCmd( */ envPtr->line = bodyLines[i+1]; /* TIP #280 */ + envPtr->clNext = bodyNext[i+1]; /* TIP #280 */ TclCompileCmdWord(interp, bodyToken[i+1], 1, envPtr); /* @@ -4359,6 +4378,7 @@ TclCompileSwitchCmd( ckfree((char *) finalFixups); ckfree((char *) bodyToken); ckfree((char *) bodyLines); + ckfree((char *) bodyNext); if (bodyTokenArray != NULL) { ckfree((char *) bodyTokenArray); } @@ -4520,6 +4540,7 @@ TclCompileSwitchCmd( TclEmitOpcode(INST_POP, envPtr); envPtr->currStackDepth = savedStackDepth + 1; envPtr->line = bodyLines[i+1]; /* TIP #280 */ + envPtr->clNext = bodyNext[i+1]; /* TIP #280 */ TclCompileCmdWord(interp, bodyToken[i+1], 1, envPtr); if (!foundDefault) { @@ -4536,6 +4557,7 @@ TclCompileSwitchCmd( ckfree((char *) bodyToken); ckfree((char *) bodyLines); + ckfree((char *) bodyNext); if (bodyTokenArray != NULL) { ckfree((char *) bodyTokenArray); } @@ -4792,7 +4814,7 @@ TclCompileWhileCmd( * Compile the loop body. */ - envPtr->line = mapPtr->loc[eclIndex].line[2]; + SetLineInformation (2); bodyCodeOffset = ExceptionRangeStarts(envPtr, range); CompileBody(envPtr, bodyTokenPtr, interp); ExceptionRangeEnds(envPtr, range); @@ -4812,7 +4834,7 @@ TclCompileWhileCmd( testCodeOffset += 3; } envPtr->currStackDepth = savedStackDepth; - envPtr->line = mapPtr->loc[eclIndex].line[1]; + SetLineInformation (1); TclCompileExprWords(interp, testTokenPtr, 1, envPtr); envPtr->currStackDepth = savedStackDepth + 1; @@ -4877,7 +4899,8 @@ PushVarName( int *localIndexPtr, /* Must not be NULL. */ int *simpleVarNamePtr, /* Must not be NULL. */ int *isScalarPtr, /* Must not be NULL. */ - int line) /* Line the token starts on. */ + int line, /* Line the token starts on. */ + int* clNext) /* Reference to offset of next hidden cont. line */ { register const char *p; const char *name, *elName; @@ -5061,6 +5084,7 @@ PushVarName( if (elName != NULL) { if (elNameChars) { envPtr->line = line; + envPtr->clNext = clNext; TclCompileTokens(interp, elemTokenPtr, elemTokenCount, envPtr); } else { PushLiteral(envPtr, "", 0); @@ -5072,6 +5096,7 @@ PushVarName( */ envPtr->line = line; + envPtr->clNext = clNext; CompileTokens(envPtr, varTokenPtr, interp); } @@ -5849,9 +5874,8 @@ TclCompileUpvarCmd( localTokenPtr = TokenAfter(otherTokenPtr); CompileWord(envPtr, otherTokenPtr, interp, 1); - PushVarName(interp, localTokenPtr, envPtr, TCL_CREATE_VAR, - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc[eclIndex].line[1]); + PushVarNameWord(interp, localTokenPtr, envPtr, TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); if((localIndex < 0) || !isScalar) { return TCL_ERROR; @@ -5942,9 +5966,8 @@ TclCompileNamespaceCmd( localTokenPtr = TokenAfter(otherTokenPtr); CompileWord(envPtr, otherTokenPtr, interp, 1); - PushVarName(interp, localTokenPtr, envPtr, TCL_CREATE_VAR, - &localIndex, &simpleVarName, &isScalar, - mapPtr->loc[eclIndex].line[1]); + PushVarNameWord(interp, localTokenPtr, envPtr, TCL_CREATE_VAR, + &localIndex, &simpleVarName, &isScalar, 1); if((localIndex < 0) || !isScalar) { return TCL_ERROR; @@ -6444,8 +6467,8 @@ TclCompileInfoExistsCmd( */ tokenPtr = TokenAfter(parsePtr->tokenPtr); - PushVarName(interp, tokenPtr, envPtr, TCL_CREATE_VAR, &localIndex, - &simpleVarName, &isScalar, mapPtr->loc[eclIndex].line[1]); + PushVarNameWord(interp, tokenPtr, envPtr, TCL_CREATE_VAR, &localIndex, + &simpleVarName, &isScalar, 1); /* * Emit instruction to check the variable for existence. diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 2ea99ac..403e487 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.10 2009/07/16 20:50:54 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.11 2009/08/25 21:01:05 andreas_kupries Exp $ */ #include "tclInt.h" @@ -431,7 +431,8 @@ static void PrintSourceToObj(Tcl_Obj *appendObj, */ static void EnterCmdWordData(ExtCmdLoc *eclPtr, int srcOffset, Tcl_Token *tokenPtr, const char *cmd, int len, - int numWords, int line, int **lines); + int numWords, int line, int* clNext, int **lines, + CompileEnv* envPtr); /* * The structure below defines the bytecode Tcl object type by means of @@ -487,6 +488,7 @@ TclSetByteCodeFromAny( register int i; int length, result = TCL_OK; const char *stringPtr; + ContLineLoc* clLocPtr; #ifdef TCL_COMPILE_DEBUG if (!traceInitialized) { @@ -508,6 +510,25 @@ TclSetByteCodeFromAny( TclInitCompileEnv(interp, &compEnv, stringPtr, length, iPtr->invokeCmdFramePtr, iPtr->invokeWord); + /* + * Now we check if we have data about invisible continuation lines for the + * script, and make it available to the compile environment, if so. + * + * It is not clear if the script Tcl_Obj* can be free'd while the compiler + * is using it, leading to the release of the associated ContLineLoc + * structure as well. To ensure that the latter doesn't happen we set a + * lock on it. We release this lock in the function TclFreeCompileEnv (), + * found in this file. The "lineCLPtr" hashtable is managed in the file + * "tclObj.c". + */ + + clLocPtr = TclContinuationsGet (objPtr); + if (clLocPtr) { + compEnv.clLoc = clLocPtr; + compEnv.clNext = &compEnv.clLoc->loc[0]; + Tcl_Preserve (compEnv.clLoc); + } + TclCompileScript(interp, stringPtr, length, &compEnv); /* @@ -982,6 +1003,15 @@ TclInitCompileEnv( TclStackFree(interp, ctxPtr); } + /* + * Initialize the data about invisible continuation lines as empty, + * i.e. not used. The caller (TclSetByteCodeFromAny) will set this up, if + * such data is available. + */ + + envPtr->clLoc = NULL; + envPtr->clNext = NULL; + envPtr->auxDataArrayPtr = envPtr->staticAuxDataArraySpace; envPtr->auxDataArrayNext = 0; envPtr->auxDataArrayEnd = COMPILEENV_INIT_AUX_DATA_SIZE; @@ -1036,6 +1066,16 @@ TclFreeCompileEnv( if (envPtr->extCmdMapPtr) { ckfree((char *) envPtr->extCmdMapPtr); } + + /* + * If we used data about invisible continuation lines, then now is the + * time to release on our hold on it. The lock was set in function + * TclSetByteCodeFromAny(), found in this file. + */ + + if (envPtr->clLoc) { + Tcl_Release (envPtr->clLoc); + } } /* @@ -1163,6 +1203,7 @@ TclCompileScript( /* TIP #280 */ ExtCmdLoc *eclPtr = envPtr->extCmdMapPtr; int *wlines, wlineat, cmdLine; + int* clNext; Tcl_Parse *parsePtr = (Tcl_Parse *) TclStackAlloc(interp, sizeof(Tcl_Parse)); @@ -1188,6 +1229,7 @@ TclCompileScript( p = script; bytesLeft = numBytes; cmdLine = envPtr->line; + clNext = envPtr->clNext; do { if (Tcl_ParseCommand(interp, p, bytesLeft, 0, parsePtr) != TCL_OK) { /* @@ -1287,10 +1329,12 @@ TclCompileScript( */ TclAdvanceLines(&cmdLine, p, parsePtr->commandStart); + TclAdvanceContinuations (&cmdLine, &clNext, + parsePtr->commandStart - envPtr->source); EnterCmdWordData(eclPtr, parsePtr->commandStart - envPtr->source, - parsePtr->tokenPtr, parsePtr->commandStart, - parsePtr->commandSize, parsePtr->numWords, cmdLine, - &wlines); + parsePtr->tokenPtr, parsePtr->commandStart, + parsePtr->commandSize, parsePtr->numWords, cmdLine, + clNext, &wlines, envPtr); wlineat = eclPtr->nuloc - 1; /* @@ -1303,6 +1347,8 @@ TclCompileScript( tokenPtr += (tokenPtr->numComponents + 1)) { envPtr->line = eclPtr->loc[wlineat].line[wordIdx]; + envPtr->clNext = eclPtr->loc [wlineat].next [wordIdx]; + if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) { /* * The word is not a simple string of characters. @@ -1463,6 +1509,12 @@ TclCompileScript( */ objIndex = TclRegisterNewLiteral(envPtr, tokenPtr[1].start, tokenPtr[1].size); + + if (envPtr->clNext) { + TclContinuationsEnterDerived (envPtr->literalArrayPtr[objIndex].objPtr, + tokenPtr[1].start - envPtr->source, + eclPtr->loc [wlineat].next [wordIdx]); + } } TclEmitPush(objIndex, envPtr); } /* for loop */ @@ -1524,7 +1576,9 @@ TclCompileScript( */ ckfree((char *) eclPtr->loc[wlineat].line); + ckfree((char *) eclPtr->loc[wlineat].next); eclPtr->loc[wlineat].line = wlines; + eclPtr->loc[wlineat].next = NULL; } /* end if parsePtr->numWords > 0 */ /* @@ -1540,6 +1594,7 @@ TclCompileScript( */ TclAdvanceLines(&cmdLine, parsePtr->commandStart, p); + TclAdvanceContinuations (&cmdLine, &clNext, p - envPtr->source); Tcl_FreeParse(parsePtr); } while (bytesLeft > 0); @@ -1600,6 +1655,41 @@ TclCompileTokens( int numObjsToConcat, nameBytes, localVarName, localVar; int length, i; unsigned char *entryCodeNext = envPtr->codeNext; +#define NUM_STATIC_POS 20 + int isLiteral, maxNumCL, numCL; + int* clPosition; + + /* + * For the handling of continuation lines in literals we first check if + * this is actually a literal. For if not we can forego the additional + * processing. Otherwise we pre-allocate a small table to store the + * locations of all continuation lines we find in this literal, if + * any. The table is extended if needed. + * + * Note: Different to the equivalent code in function + * 'EvalTokensStandard()' (see file "tclBasic.c") we do not seem to need + * the 'adjust' variable. We also do not seem to need code which merges + * continuation line information of multiple words which concat'd at + * runtime. Either that or I have not managed to find a test case for + * these two possibilities yet. It might be a difference between compile- + * versus runtime processing. + */ + + numCL = 0; + maxNumCL = 0; + isLiteral = 1; + for (i=0 ; i < count; i++) { + if ((tokenPtr[i].type != TCL_TOKEN_TEXT) && + (tokenPtr[i].type != TCL_TOKEN_BS)) { + isLiteral = 0; + break; + } + } + + if (isLiteral) { + maxNumCL = NUM_STATIC_POS; + clPosition = (int*) ckalloc (maxNumCL*sizeof(int)); + } Tcl_DStringInit(&textBuffer); numObjsToConcat = 0; @@ -1612,6 +1702,36 @@ TclCompileTokens( case TCL_TOKEN_BS: length = Tcl_UtfBackslash(tokenPtr->start, NULL, buffer); Tcl_DStringAppend(&textBuffer, buffer, length); + + /* + * If the backslash sequence we found is in a literal, and + * represented a continuation line, we compute and store its + * location (as char offset to the beginning of the _result_ + * script). We may have to extend the table of locations. + * + * Note that the continuation line information is relevant even if + * the word we are processing is not a literal, as it can affect + * nested commands. See the branch for TCL_TOKEN_COMMAND below, + * where the adjustment we are tracking here is taken into + * account. The good thing is that we do not need a table of + * everything, just the number of lines we have to add as + * correction. + */ + + if ((length == 1) && (buffer[0] == ' ') && + (tokenPtr->start[1] == '\n')) { + if (isLiteral) { + int clPos = Tcl_DStringLength (&textBuffer); + + if (numCL >= maxNumCL) { + maxNumCL *= 2; + clPosition = (int*) ckrealloc ((char*)clPosition, + maxNumCL*sizeof(int)); + } + clPosition[numCL] = clPos; + numCL ++; + } + } break; case TCL_TOKEN_COMMAND: @@ -1627,6 +1747,12 @@ TclCompileTokens( TclEmitPush(literal, envPtr); numObjsToConcat++; Tcl_DStringFree(&textBuffer); + + if (numCL) { + TclContinuationsEnter(envPtr->literalArrayPtr[literal].objPtr, + numCL, clPosition); + } + numCL = 0; } TclCompileScript(interp, tokenPtr->start+1, @@ -1737,6 +1863,12 @@ TclCompileTokens( Tcl_DStringLength(&textBuffer)); TclEmitPush(literal, envPtr); numObjsToConcat++; + + if (numCL) { + TclContinuationsEnter(envPtr->literalArrayPtr[literal].objPtr, + numCL, clPosition); + } + numCL = 0; } /* @@ -1759,6 +1891,15 @@ TclCompileTokens( TclEmitPush(TclRegisterNewLiteral(envPtr, "", 0), envPtr); } Tcl_DStringFree(&textBuffer); + + /* + * Release the temp table we used to collect the locations of + * continuation lines, if any. + */ + + if (maxNumCL) { + ckfree ((char*) clPosition); + } } /* @@ -2397,11 +2538,14 @@ EnterCmdWordData( int len, int numWords, int line, - int **wlines) + int* clNext, + int **wlines, + CompileEnv* envPtr) { ECL *ePtr; const char *last; int wordIdx, wordLine, *wwlines; + int* wordNext; if (eclPtr->nuloc >= eclPtr->nloc) { /* @@ -2421,17 +2565,22 @@ EnterCmdWordData( ePtr = &eclPtr->loc[eclPtr->nuloc]; ePtr->srcOffset = srcOffset; ePtr->line = (int *) ckalloc(numWords * sizeof(int)); + ePtr->next = (int**) ckalloc (numWords * sizeof (int*)); ePtr->nline = numWords; wwlines = (int *) ckalloc(numWords * sizeof(int)); last = cmd; wordLine = line; + wordNext = clNext; for (wordIdx=0 ; wordIdxnumComponents + 1) { - TclAdvanceLines(&wordLine, last, tokenPtr->start); + TclAdvanceLines (&wordLine, last, tokenPtr->start); + TclAdvanceContinuations (&wordLine, &wordNext, + tokenPtr->start - envPtr->source); wwlines[wordIdx] = (TclWordKnownAtCompileTime(tokenPtr, NULL) ? wordLine : -1); ePtr->line[wordIdx] = wordLine; + ePtr->next[wordIdx] = wordNext; last = tokenPtr->start; } diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 2eb8489..a86e8f1 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.90.2.6 2009/07/14 16:33:12 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.90.2.7 2009/08/25 21:01:05 andreas_kupries Exp $ */ #ifndef _TCLCOMPILATION @@ -132,6 +132,9 @@ typedef struct ECL { int nline; /* Number of words in the command */ int *line; /* Line information for all words in the * command. */ + int** next; /* Transient information used by the compiler + * for tracking of hidden continuation + * lines. */ } ECL; typedef struct ExtCmdLoc { @@ -306,6 +309,13 @@ typedef struct CompileEnv { * should be issued; they should never be * issued repeatedly, as that is significantly * inefficient. */ + ContLineLoc* clLoc; /* If not NULL, the table holding the + * locations of the invisible continuation + * lines in the input script, to adjust the + * line counter. */ + int* clNext; /* If not NULL, it refers to the next slot in + * clLoc to check for an invisible + * continuation line. */ } CompileEnv; /* diff --git a/generic/tclInt.h b/generic/tclInt.h index b7e34c9..b39eeb6 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362.2.7 2009/07/14 16:33:12 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.8 2009/08/25 21:01:05 andreas_kupries Exp $ */ #ifndef _TCLINT @@ -1155,6 +1155,36 @@ typedef struct CFWordBC { } CFWordBC; /* + * Structure to record the locations of invisible continuation lines in + * literal scripts, as character offset from the beginning of the script. Both + * compiler and direct evaluator use this information to adjust their line + * counters when tracking through the script, because when it is invoked the + * continuation line marker as a whole has been removed already, meaning that + * the \n which was part of it is gone as well, breaking regular line + * tracking. + * + * These structures are allocated and filled by both the function + * TclSubstTokens() in the file "tclParse.c" and its caller TclEvalEx() in the + * file "tclBasic.c", and stored in the thread-global hashtable "lineCLPtr" in + * file "tclObj.c". They are used by the functions TclSetByteCodeFromAny() and + * TclCompileScript(), both found in the file "tclCompile.c". Their memory is + * released by the function TclFreeObj(), in the file "tclObj.c", and also by + * the function TclThreadFinalizeObjects(), in the same file. + */ + +#define CLL_END (-1) + +typedef struct ContLineLoc { + int num; /* Number of entries in loc, not counting the final -1 + * marker entry */ + int loc[1]; /* Table of locations, as character offsets. The table + * is allocated as part of the structure, i.e. the loc + * array extends behind the nominal end of the + * structure. An entry containing the value -1 is put + * after the last location, as end-marker/sentinel. */ +} ContLineLoc; + +/* * The following macros define the allowed values for the type field of the * CmdFrame structure above. Some of the values occur only in the extended * location data referenced via the 'baseLocPtr'. @@ -1866,6 +1896,16 @@ typedef struct Interp { * invoking command. Alt view: An index to the * CmdFrame stack keyed by command argument * holders. */ + ContLineLoc* scriptCLLocPtr; + /* This table points to the location data for + * invisible continuation lines in the script, + * if any. This pointer is set by the function + * TclEvalObjEx() in file "tclBasic.c", and + * used by function ...() in the same file. + * It does for the eval/direct path of script + * execution what CompileEnv.clLoc does for + * the bytecode compiler. + */ /* * TIP #268. The currently active selection mode, i.e. the package require * preferences. @@ -2457,6 +2497,7 @@ MODULE_SCOPE char tclEmptyString; *---------------------------------------------------------------- */ +MODULE_SCOPE void TclAdvanceContinuations(int* line, int** next, int loc); MODULE_SCOPE void TclAdvanceLines(int *line, const char *start, const char *end); MODULE_SCOPE void TclArgumentEnter(Tcl_Interp* interp, @@ -2483,11 +2524,16 @@ MODULE_SCOPE int TclChanCaughtErrorBypass(Tcl_Interp *interp, Tcl_Channel chan); MODULE_SCOPE void TclCleanupLiteralTable(Tcl_Interp *interp, LiteralTable *tablePtr); +MODULE_SCOPE ContLineLoc* TclContinuationsEnter(Tcl_Obj* objPtr, int num, int* loc); +MODULE_SCOPE void TclContinuationsEnterDerived(Tcl_Obj* objPtr, int start, int* clNext); +MODULE_SCOPE ContLineLoc* TclContinuationsGet(Tcl_Obj* objPtr); +MODULE_SCOPE void TclContinuationsCopy(Tcl_Obj* objPtr, Tcl_Obj* originObjPtr); MODULE_SCOPE int TclDoubleDigits(char *buf, double value, int *signum); MODULE_SCOPE void TclDeleteNamespaceVars(Namespace *nsPtr); /* TIP #280 - Modified token based evulation, with line information */ MODULE_SCOPE int TclEvalEx(Tcl_Interp *interp, const char *script, - int numBytes, int flags, int line); + int numBytes, int flags, int line, + int* clNextOuter, CONST char* outerScript); MODULE_SCOPE int TclFileAttrsCmd(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE int TclFileCopyCmd(Tcl_Interp *interp, @@ -2575,8 +2621,8 @@ MODULE_SCOPE Tcl_Obj * TclLindexList(Tcl_Interp *interp, MODULE_SCOPE Tcl_Obj * TclLindexFlat(Tcl_Interp *interp, Tcl_Obj *listPtr, int indexCount, Tcl_Obj *const indexArray[]); /* TIP #280 */ -MODULE_SCOPE void TclListLines(const char *listStr, int line, int n, - int *lines); +MODULE_SCOPE void TclListLines(Tcl_Obj *listObj, int line, int n, + int *lines, Tcl_Obj* const* elems); MODULE_SCOPE Tcl_Obj * TclListObjCopy(Tcl_Interp *interp, Tcl_Obj *listPtr); MODULE_SCOPE int TclLoadFile(Tcl_Interp *interp, Tcl_Obj *pathPtr, int symc, const char *symbols[], @@ -2703,7 +2749,8 @@ MODULE_SCOPE int TclStringMatchObj(Tcl_Obj *stringObj, Tcl_Obj *patternObj, int flags); MODULE_SCOPE Tcl_Obj * TclStringObjReverse(Tcl_Obj *objPtr); MODULE_SCOPE int TclSubstTokens(Tcl_Interp *interp, Tcl_Token *tokenPtr, - int count, int *tokensLeftPtr, int line); + int count, int *tokensLeftPtr, int line, + int* clNextOuter, CONST char* outerScript); MODULE_SCOPE void TclTransferResult(Tcl_Interp *sourceInterp, int result, Tcl_Interp *targetInterp); MODULE_SCOPE Tcl_Obj * TclpNativeToNormalized(ClientData clientData); diff --git a/generic/tclObj.c b/generic/tclObj.c index 239865d..1b0a58c 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.139.2.2 2009/05/08 02:23:52 msofer Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.139.2.3 2009/08/25 21:01:05 andreas_kupries Exp $ */ #include "tclInt.h" @@ -53,18 +53,43 @@ Tcl_Mutex tclObjMutex; char tclEmptyString = '\0'; char *tclEmptyStringRep = &tclEmptyString; - -#if defined(TCL_MEM_DEBUG) && defined(TCL_THREADS) + /* - * Thread local table that is used to check that a Tcl_Obj was not allocated - * by some other thread. + * All static variables used in this file are collected into a single instance + * of the following structure. For multi-threaded implementations, there is + * one instance of this structure for each thread. + * + * Notice that different structures with the same name appear in other files. + * The structure defined below is used in this file only. */ + typedef struct ThreadSpecificData { + Tcl_HashTable* lineCLPtr; /* This table remembers for each Tcl_Obj + * generated by a call to the function + * EvalTokensStandard() from a literal text + * where bs+nl sequences occured in it, if + * any. I.e. this table keeps track of + * invisible/stripped continuation lines. Its + * keys are Tcl_Obj pointers, the values are + * ContLineLoc pointers. See the file + * tclCompile.h for the definition of this + * structure, and for references to all related + * places in the core. + */ +#if defined(TCL_MEM_DEBUG) && defined(TCL_THREADS) + /* + * Thread local table that is used to check that a Tcl_Obj was not + * allocated by some other thread. + */ Tcl_HashTable *objThreadMap; +#endif /* TCL_MEM_DEBUG && TCL_THREADS */ } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; -#endif /* TCL_MEM_DEBUG && TCL_THREADS */ + +static void ContLineLocFree (char* clientData); +static void TclThreadFinalizeObjects (ClientData clientData); +static ThreadSpecificData* TclGetTables (void); /* * Nested Tcl_Obj deletion management support @@ -420,6 +445,313 @@ TclFinalizeObjects(void) } /* + *---------------------------------------------------------------------- + * + * TclGetTables -- + * + * This procedure is a helper which returns the thread-specific + * hash-table used to track continuation line information associated with + * Tcl_Obj*, and the objThreadMap, etc. + * + * Results: + * A reference to the thread-data. + * + * Side effects: + * May allocate memory for the thread-data. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +static ThreadSpecificData* +TclGetTables() +{ + /* + * Initialize the hashtable tracking invisible continuation lines. For + * the release we use a thread exit handler to ensure that this is done + * before TSD blocks are made invalid. The TclFinalizeObjects() which + * would be the natural place for this is invoked afterwards, meaning that + * we try to operate on a data structure already gone. + */ + + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + if (!tsdPtr->lineCLPtr) { + tsdPtr->lineCLPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); + Tcl_InitHashTable(tsdPtr->lineCLPtr, TCL_ONE_WORD_KEYS); + Tcl_CreateThreadExitHandler (TclThreadFinalizeObjects,NULL); +#if defined(TCL_MEM_DEBUG) && defined(TCL_THREADS) + tsdPtr->objThreadMap = NULL; +#endif /* TCL_MEM_DEBUG && TCL_THREADS */ + } + return tsdPtr; +} + +/* + *---------------------------------------------------------------------- + * + * TclContinuationsEnter -- + * + * This procedure is a helper which saves the continuation line + * information associated with a Tcl_Obj*. + * + * Results: + * A reference to the newly created continuation line location table. + * + * Side effects: + * Allocates memory for the table of continuation line locations. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +ContLineLoc* +TclContinuationsEnter(Tcl_Obj* objPtr, + int num, + int* loc) +{ + int newEntry; + ThreadSpecificData *tsdPtr = TclGetTables(); + Tcl_HashEntry* hPtr = + Tcl_CreateHashEntry (tsdPtr->lineCLPtr, (char*) objPtr, &newEntry); + + ContLineLoc* clLocPtr = + (ContLineLoc*) ckalloc (sizeof(ContLineLoc) + num*sizeof(int)); + + clLocPtr->num = num; + memcpy (&clLocPtr->loc, loc, num*sizeof(int)); + clLocPtr->loc[num] = CLL_END; /* Sentinel */ + Tcl_SetHashValue (hPtr, clLocPtr); + + return clLocPtr; +} + +/* + *---------------------------------------------------------------------- + * + * TclContinuationsEnterDerived -- + * + * This procedure is a helper which computes the continuation line + * information associated with a Tcl_Obj* cut from the middle of a + * script. + * + * Results: + * None. + * + * Side effects: + * Allocates memory for the table of continuation line locations. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclContinuationsEnterDerived(Tcl_Obj* objPtr, int start, int* clNext) +{ + /* + * We have to handle invisible continuations lines here as well, despite + * the code we have in TclSubstTokens (TST) for that. Why ? Nesting. If + * our script is the sole argument to an 'eval' command, for example, the + * scriptCLLocPtr we are using was generated by a previous call to TST, + * and while the words we have here may contain continuation lines they + * are invisible already, and the inner call to TST had no bs+nl sequences + * to trigger its code. + * + * Luckily for us, the table we have to create here for the current word + * has to be a slice of the table currently in use, with the locations + * suitably modified to be relative to the start of the word instead of + * relative to the script. + * + * That is what we are doing now. Determine the slice we need, and if not + * empty, wrap it into a new table, and save the result into our + * thread-global hashtable, as usual. + */ + + /* + * First compute the range of the word within the script. + */ + + int length, end, num; + int* wordCLLast = clNext; + + Tcl_GetStringFromObj(objPtr, &length); + /* Is there a better way which doesn't shimmer ? */ + + end = start + length; /* first char after the word */ + + /* + * Then compute the table slice covering the range of + * the word. + */ + + while (*wordCLLast >= 0 && *wordCLLast < end) { + wordCLLast++; + } + + /* + * And generate the table from the slice, if it was + * not empty. + */ + + num = wordCLLast - clNext; + if (num) { + int i; + ContLineLoc* clLocPtr = + TclContinuationsEnter(objPtr, num, clNext); + + /* + * Re-base the locations. + */ + + for (i=0;iloc[i] -= start; + + /* + * Continuation lines coming before the string and affecting us + * should not happen, due to the proper maintenance of clNext + * during compilation. + */ + + if (clLocPtr->loc[i] < 0) { + Tcl_Panic("Derived ICL data for object using offsets from before the script"); + } + } + } +} + +/* + *---------------------------------------------------------------------- + * + * TclContinuationsCopy -- + * + * This procedure is a helper which copies the continuation line + * information associated with a Tcl_Obj* to another Tcl_Obj*. + * It is assumed that both contain the same string/script. Use + * this when a script is duplicated because it was shared. + * + * Results: + * None. + * + * Side effects: + * Allocates memory for the table of continuation line locations. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +void +TclContinuationsCopy(Tcl_Obj* objPtr, Tcl_Obj* originObjPtr) +{ + ThreadSpecificData *tsdPtr = TclGetTables(); + Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char*) originObjPtr); + + if (hPtr) { + ContLineLoc* clLocPtr = (ContLineLoc*) Tcl_GetHashValue (hPtr); + + TclContinuationsEnter(objPtr, clLocPtr->num, clLocPtr->loc); + } +} + +/* + *---------------------------------------------------------------------- + * + * TclContinuationsGet -- + * + * This procedure is a helper which retrieves the continuation line + * information associated with a Tcl_Obj*, if it has any. + * + * Results: + * A reference to the continuation line location table, or NULL + * if the Tcl_Obj* has no such information associated with it. + * + * Side effects: + * None. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +ContLineLoc* +TclContinuationsGet(Tcl_Obj* objPtr) +{ + ThreadSpecificData *tsdPtr = TclGetTables(); + Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char*) objPtr); + + if (hPtr) { + return (ContLineLoc*) Tcl_GetHashValue (hPtr); + } else { + return NULL; + } +} + +/* + *---------------------------------------------------------------------- + * + * TclThreadFinalizeObjects -- + * + * This procedure is a helper which releases all continuation line + * information currently known. It is run as a thread exit handler. + * + * Results: + * None. + * + * Side effects: + * Releases memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +static void +TclThreadFinalizeObjects (ClientData clientData) +{ + /* + * Release the hashtable tracking invisible continuation lines. + */ + + Tcl_HashEntry *hPtr; + Tcl_HashSearch hSearch; + ThreadSpecificData *tsdPtr = TclGetTables(); + + for (hPtr = Tcl_FirstHashEntry(tsdPtr->lineCLPtr, &hSearch); + hPtr != NULL; + hPtr = Tcl_NextHashEntry(&hSearch)) { + /* + * We are not using Tcl_EventuallyFree (as in TclFreeObj()) because + * here we can be sure that the compiler will not hold references to + * the data in the hashtable, and using TEF might bork the + * finalization sequence. + */ + ContLineLocFree (Tcl_GetHashValue (hPtr)); + Tcl_DeleteHashEntry (hPtr); + } + Tcl_DeleteHashTable (tsdPtr->lineCLPtr); + tsdPtr->lineCLPtr = NULL; +} + +/* + *---------------------------------------------------------------------- + * + * ContLineLocFree -- + * + * The freProc for continuation line location tables. + * + * Results: + * None. + * + * Side effects: + * Releases memory. + * + * TIP #280 + *---------------------------------------------------------------------- + */ + +static void +ContLineLocFree (char* clientData) +{ + ckfree (clientData); +} + +/* *-------------------------------------------------------------- * * Tcl_RegisterObjType -- @@ -624,7 +956,7 @@ TclDbInitNewObj( Tcl_HashEntry *hPtr; Tcl_HashTable *tablePtr; int isNew; - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + ThreadSpecificData *tsdPtr = TclGetTables(); if (tsdPtr->objThreadMap == NULL) { tsdPtr->objThreadMap = (Tcl_HashTable *) @@ -881,6 +1213,28 @@ TclFreeObj( } ObjDeletionUnlock(context); } + + /* + * We cannot use TclGetContinuationTable() here, because that may + * re-initialize the thread-data for calls coming after the + * finalization. We have to access it using the low-level call and then + * check for validity. This function can be called after + * TclFinalizeThreadData() has already killed the thread-global data + * structures. Performing TCL_TSD_INIT will leave us with an + * un-initialized memory block upon which we crash (if we where to access + * the uninitialized hashtable). + */ + + { + ThreadSpecificData* tsdPtr = TCL_TSD_INIT(&dataKey); + if (tsdPtr->lineCLPtr) { + Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char *) objPtr); + if (hPtr) { + Tcl_EventuallyFree (Tcl_GetHashValue (hPtr), ContLineLocFree); + Tcl_DeleteHashEntry (hPtr); + } + } + } } #else /* TCL_MEM_DEBUG */ @@ -946,6 +1300,28 @@ TclFreeObj( ObjDeletionUnlock(context); } } + + /* + * We cannot use TclGetContinuationTable() here, because that may + * re-initialize the thread-data for calls coming after the + * finalization. We have to access it using the low-level call and then + * check for validity. This function can be called after + * TclFinalizeThreadData() has already killed the thread-global data + * structures. Performing TCL_TSD_INIT will leave us with an + * un-initialized memory block upon which we crash (if we where to access + * the uninitialized hashtable). + */ + + { + ThreadSpecificData* tsdPtr = TCL_TSD_INIT(&dataKey); + if (tsdPtr->lineCLPtr) { + Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char *) objPtr); + if (hPtr) { + Tcl_EventuallyFree (Tcl_GetHashValue (hPtr), ContLineLocFree); + Tcl_DeleteHashEntry (hPtr); + } + } + } } #endif diff --git a/generic/tclParse.c b/generic/tclParse.c index 769be99..3946511 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParse.c,v 1.62.2.2 2008/12/01 22:39:59 dgp Exp $ + * RCS: @(#) $Id: tclParse.c,v 1.62.2.3 2009/08/25 21:01:05 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1554,7 +1554,7 @@ Tcl_ParseVar( } code = TclSubstTokens(interp, parsePtr->tokenPtr, parsePtr->numTokens, - NULL, 1); + NULL, 1, NULL, NULL); TclStackFree(interp, parsePtr); if (code != TCL_OK) { return NULL; @@ -2063,7 +2063,7 @@ Tcl_SubstObj( endTokenPtr = parsePtr->tokenPtr + parsePtr->numTokens; tokensLeft = parsePtr->numTokens; code = TclSubstTokens(interp, endTokenPtr - tokensLeft, tokensLeft, - &tokensLeft, 1); + &tokensLeft, 1, NULL, NULL); if (code == TCL_OK) { Tcl_FreeParse(parsePtr); TclStackFree(interp, parsePtr); @@ -2108,7 +2108,7 @@ Tcl_SubstObj( } code = TclSubstTokens(interp, endTokenPtr - tokensLeft, tokensLeft, - &tokensLeft, 1); + &tokensLeft, 1, NULL, NULL); } } @@ -2146,10 +2146,31 @@ TclSubstTokens( int *tokensLeftPtr, /* If not NULL, points to memory where an * integer representing the number of tokens * left to be substituted will be written */ - int line) /* The line the script starts on. */ + int line, /* The line the script starts on. */ + int* clNextOuter, /* Information about an outer context for */ + CONST char* outerScript) /* continuation line data. This is set by + * EvalEx() to properly handle [...]-nested + * commands. The 'outerScript' refers to the + * most-outer script containing the embedded + * command, which is refered to by 'script'. The + * 'clNextOuter' refers to the current entry in + * the table of continuation lines in this + * "master script", and the character offsets are + * relative to the 'outerScript' as well. + * + * If outerScript == script, then this call is for + * words in the outer-most script/command. See + * Tcl_EvalEx() and TclEvalObjEx() for the places + * generating arguments for which this is true. + */ { Tcl_Obj *result; int code = TCL_OK; +#define NUM_STATIC_POS 20 + int isLiteral, maxNumCL, numCL, i, adjust; + int* clPosition; + Interp* iPtr = (Interp*) interp; + int inFile = iPtr->evalFlags & TCL_EVAL_FILE; /* * Each pass through this loop will substitute one token, and its @@ -2161,6 +2182,31 @@ TclSubstTokens( * of Tcl_SetObjResult(interp, Tcl_GetObjResult(interp)) and omit them. */ + /* + * For the handling of continuation lines in literals we first check if + * this is actually a literal. For if not we can forego the additional + * processing. Otherwise we pre-allocate a small table to store the + * locations of all continuation lines we find in this literal, if + * any. The table is extended if needed. + */ + + numCL = 0; + maxNumCL = 0; + isLiteral = 1; + for (i=0 ; i < count; i++) { + if ((tokenPtr[i].type != TCL_TOKEN_TEXT) && + (tokenPtr[i].type != TCL_TOKEN_BS)) { + isLiteral = 0; + break; + } + } + + if (isLiteral) { + maxNumCL = NUM_STATIC_POS; + clPosition = (int*) ckalloc (maxNumCL*sizeof(int)); + } + + adjust = 0; result = NULL; for (; count>0 && code==TCL_OK ; count--, tokenPtr++) { Tcl_Obj *appendObj = NULL; @@ -2178,6 +2224,41 @@ TclSubstTokens( appendByteLength = Tcl_UtfBackslash(tokenPtr->start, NULL, utfCharBytes); append = utfCharBytes; + /* + * If the backslash sequence we found is in a literal, and + * represented a continuation line, we compute and store its + * location (as char offset to the beginning of the _result_ + * script). We may have to extend the table of locations. + * + * Note that the continuation line information is relevant even if + * the word we are processing is not a literal, as it can affect + * nested commands. See the branch for TCL_TOKEN_COMMAND below, + * where the adjustment we are tracking here is taken into + * account. The good thing is that we do not need a table of + * everything, just the number of lines we have to add as + * correction. + */ + + if ((appendByteLength == 1) && (utfCharBytes[0] == ' ') && + (tokenPtr->start[1] == '\n')) { + if (isLiteral) { + int clPos; + if (result == 0) { + clPos = 0; + } else { + Tcl_GetStringFromObj(result, &clPos); + } + + if (numCL >= maxNumCL) { + maxNumCL *= 2; + clPosition = (int*) ckrealloc ((char*)clPosition, + maxNumCL*sizeof(int)); + } + clPosition[numCL] = clPos; + numCL ++; + } + adjust ++; + } break; case TCL_TOKEN_COMMAND: { @@ -2186,9 +2267,24 @@ TclSubstTokens( iPtr->numLevels++; code = TclInterpReady(interp); if (code == TCL_OK) { + /* + * Test cases: info-30.{6,8,9} + */ + + int theline; + TclAdvanceContinuations (&line, &clNextOuter, + tokenPtr->start - outerScript); + theline = line + adjust; /* TIP #280: Transfer line information to nested command */ code = TclEvalEx(interp, tokenPtr->start+1, tokenPtr->size-2, - 0, line); + 0, theline, clNextOuter, outerScript); + /* + * Restore flag reset by nested eval for future bracketed + * commands and their cmdframe setup + */ + if (inFile) { + iPtr->evalFlags |= TCL_EVAL_FILE; + } } iPtr->numLevels--; appendObj = Tcl_GetObjResult(interp); @@ -2205,7 +2301,7 @@ TclSubstTokens( */ code = TclSubstTokens(interp, tokenPtr+2, - tokenPtr->numComponents - 1, NULL, line); + tokenPtr->numComponents - 1, NULL, line, NULL, NULL); arrayIndex = Tcl_GetObjResult(interp); Tcl_IncrRefCount(arrayIndex); } @@ -2289,6 +2385,26 @@ TclSubstTokens( if (code != TCL_ERROR) { /* Keep error message in result! */ if (result != NULL) { Tcl_SetObjResult(interp, result); + /* + * If the code found continuation lines (which implies that this + * word is a literal), then we store the accumulated table of + * locations in the thread-global data structure for the bytecode + * compiler to find later, assuming that the literal is a script + * which will be compiled. + */ + + if (numCL) { + TclContinuationsEnter(result, numCL, clPosition); + } + + /* + * Release the temp table we used to collect the locations of + * continuation lines, if any. + */ + + if (maxNumCL) { + ckfree ((char*) clPosition); + } } else { Tcl_ResetResult(interp); } diff --git a/generic/tclProc.c b/generic/tclProc.c index 717b8bc..3c8f810 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.139.2.5 2009/06/13 14:25:13 dgp Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.139.2.6 2009/08/25 21:01:05 andreas_kupries Exp $ */ #include "tclInt.h" @@ -430,8 +430,18 @@ TclCreateProc( */ if (Tcl_IsShared(bodyPtr)) { + Tcl_Obj* sharedBodyPtr = bodyPtr; + bytes = TclGetStringFromObj(bodyPtr, &length); bodyPtr = Tcl_NewStringObj(bytes, length); + + /* + * TIP #280. + * Ensure that the continuation line data for the original body is + * not lost and applies to the new body as well. + */ + + TclContinuationsCopy (bodyPtr, sharedBodyPtr); } /* @@ -2530,7 +2540,7 @@ SetLambdaFromAny( * location (line of 2nd list element). */ - TclListLines(name, contextPtr->line[1], 2, buf); + TclListLines(objPtr, contextPtr->line[1], 2, buf, NULL); cfPtr->level = -1; cfPtr->type = contextPtr->type; diff --git a/generic/tclVar.c b/generic/tclVar.c index 8f83738..3a3a10f 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.160.2.4 2009/07/16 20:50:54 dgp Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.160.2.5 2009/08/25 21:01:05 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1878,6 +1878,14 @@ TclPtrSetVar( } else { if (Tcl_IsShared(oldValuePtr)) { /* Append to copy. */ varPtr->value.objPtr = Tcl_DuplicateObj(oldValuePtr); + + /* + * TIP #280. + * Ensure that the continuation line data for the string + * is not lost and applies to the extended script as well. + */ + TclContinuationsCopy (varPtr->value.objPtr, oldValuePtr); + TclDecrRefCount(oldValuePtr); oldValuePtr = varPtr->value.objPtr; Tcl_IncrRefCount(oldValuePtr); /* Since var is ref */ diff --git a/tests/info.test b/tests/info.test index 5e1e43d..90cbb24 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.47.2.8 2009/07/14 16:33:12 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.47.2.9 2009/08/25 21:01:05 andreas_kupries Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1012,20 +1012,20 @@ test info-25.1 {info frame, regular proc} { rename bar {} # ------------------------------------------------------------------------- - -test info-30.0 {bs+nl in literal words} knownBug { +# More info-30.x test cases at the end of the file. +test info-30.0 {bs+nl in literal words} { if {1} { set res \ - [reduce [info frame 0]] + [reduce [info frame 0]];# 1019 } set res - # This is reporting line 3 instead of the correct 4 because the + # This was reporting line 3 instead of the correct 4 because the # bs+nl combination is subst by the parser before the 'if' - # command, and the the bcc sees the word. To fix record the - # offsets of all bs+nl sequences in literal words, then use the - # information in the bcc to bump line numbers when parsing over - # the location. Also affected: testcases 22.8 and 23.6. -} {type eval line 4 cmd {info frame 0} proc ::tcltest::RunTest} + # command, and the bcc, see the word. Fixed by recording the + # offsets of all bs+nl sequences in literal words, then using the + # information in the bcc and other places to bump line numbers when + # parsing over the location. Also affected: testcases 22.8 and 23.6. +} {type source line 1019 file info.test cmd {info frame 0} proc ::tcltest::RunTest} # ------------------------------------------------------------------------- # See 24.0 - 24.5 for similar situations, using literal scripts. @@ -1429,6 +1429,279 @@ type source line 1420 file info.test cmd {info frame 0} proc ::foo::bar level 0 type source line 1421 file info.test cmd {info frame 0} proc ::foo::bar level 0} # ------------------------------------------------------------------------- +# Additional tests for info-30.*, handling of continuation lines (bs+nl sequences). + +test info-30.1 {bs+nl in literal words, procedure body, compiled} { + proc abra {} { + if {1} \ + { + return \ + [reduce [info frame 0]];# line 1439 + } + } + set res [abra] + rename abra {} + set res +} {type source line 1439 file info.test cmd {info frame 0} proc ::abra level 0} + +test info-30.2 {bs+nl in literal words, namespace script} { + namespace eval xxx { + set res \ + [reduce [info frame 0]];# line 1450 + } + set res +} {type source line 1450 file info.test cmd {info frame 0} level 0} + +test info-30.3 {bs+nl in literal words, namespace multi-word script} { + namespace eval xxx set res \ + [list [reduce [info frame 0]]];# line 1457 + set res +} {type source line 1457 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.4 {bs+nl in literal words, eval script} { + eval { + set ::res \ + [reduce [info frame 0]];# line 1464 + } + set res +} {type source line 1464 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.5 {bs+nl in literal words, eval script, with nested words} { + eval { + if {1} \ + { + set ::res \ + [reduce [info frame 0]];# line 1474 + } + } + set res +} {type source line 1474 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.6 {bs+nl in computed word} { + set res "\ +[reduce [info frame 0]]";# line 1482 +} { type source line 1482 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.7 {bs+nl in computed word, in proc} { + proc abra {} { + return "\ +[reduce [info frame 0]]";# line 1488 + } + set res [abra] + rename abra {} + set res +} { type source line 1488 file info.test cmd {info frame 0} proc ::abra level 0} + +test info-30.8 {bs+nl in computed word, nested eval} { + eval { + set \ + res "\ +[reduce [info frame 0]]";# line 1499 +} +} { type source line 1499 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.9 {bs+nl in computed word, nested eval} { + eval { + set \ + res "\ +[reduce \ + [info frame 0]]";# line 1508 +} +} { type source line 1508 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.10 {bs+nl in computed word, key to array} { + set tmp([set \ + res "\ +[reduce \ + [info frame 0]]"]) x ; #1516 + unset tmp + set res +} { type source line 1516 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.11 {bs+nl in subst arguments, no true counting} { + subst {[set \ + res "\ +[reduce \ + [info frame 0]]"]} +} { type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.12 {bs+nl in computed word, nested eval} { + eval { + set \ + res "\ +[set x {}] \ +[reduce \ + [info frame 0]]";# line 1534 +} +} { type source line 1534 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.13 {bs+nl in literal words, uplevel script, with nested words} { + uplevel #0 { + if {1} \ + { + set ::res \ + [reduce [info frame 0]];# line 1543 + } + } + set res +} {type source line 1543 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.14 {bs+nl, literal word, uplevel through proc} { + proc abra {script} { + uplevel 1 $script + } + set res [abra { + return "\ +[reduce [info frame 0]]";# line 1555 + }] + rename abra {} + set res +} { type source line 1555 file info.test cmd {info frame 0} proc ::abra} + +test info-30.15 {bs+nl in literal words, nested proc body, compiled} { + proc a {} { + proc b {} { + if {1} \ + { + return \ + [reduce [info frame 0]];# line 1567 + } + } + } + a ; set res [b] + rename a {} + rename b {} + set res +} {type source line 1567 file info.test cmd {info frame 0} proc ::b level 0} + +test info-30.16 {bs+nl in multi-body switch, compiled} { + proc a {value} { + switch -regexp -- $value \ + ^key { info frame 0; # 1580 } \ + \t### { info frame 0; # 1581 } \ + {[0-9]*} { info frame 0; # 1582 } + } + set res {} + lappend res [reduce [a {key }]] + lappend res [reduce [a {1alpha}]] + set res "\n[join $res \n]" +} { +type source line 1580 file info.test cmd {info frame 0} proc ::a level 0 +type source line 1582 file info.test cmd {info frame 0} proc ::a level 0} + +test info-30.17 {bs+nl in multi-body switch, direct} { + switch -regexp -- {key } \ + ^key { reduce [info frame 0] ;# 1594 } \ + \t### { } \ + {[0-9]*} { } +} {type source line 1594 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.18 {bs+nl, literal word, uplevel through proc, appended, loss of primary tracking data} { + proc abra {script} { + append script "\n# end of script" + uplevel 1 $script + } + set res [abra { + return "\ +[reduce [info frame 0]]";# line 1606, still line of 3 appended script + }] + rename abra {} + set res +} { type eval line 3 cmd {info frame 0} proc ::abra} +# { type source line 1606 file info.test cmd {info frame 0} proc ::abra} + +test info-30.19 {bs+nl in single-body switch, compiled} { + proc a {value} { + switch -regexp -- $value { + ^key { reduce \ + [info frame 0] } + \t { reduce \ + [info frame 0] } + {[0-9]*} { reduce \ + [info frame 0] } + } + } + set res {} + lappend res [a {key }] + lappend res [a {1alpha}] + set res "\n[join $res \n]" +} { +type source line 1617 file info.test cmd {info frame 0} proc ::a level 0 +type source line 1621 file info.test cmd {info frame 0} proc ::a level 0} + +test info-30.20 {bs+nl in single-body switch, direct} { + switch -regexp -- {key } { \ + + ^key { reduce \ + [info frame 0] } + \t### { } + {[0-9]*} { } + } +} {type source line 1636 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + +test info-30.21 {bs+nl in if, full compiled} { + proc a {value} { + if {$value} \ + {info frame 0} \ + {info frame 0} + } + set res {} + lappend res [reduce [a 1]] + lappend res [reduce [a 0]] + set res "\n[join $res \n]" +} { +type source line 1645 file info.test cmd {info frame 0} proc ::a level 0 +type source line 1646 file info.test cmd {info frame 0} proc ::a level 0} + +test info-30.22 {bs+nl in computed word, key to array, compiled} { + proc a {} { + set tmp([set \ + res "\ +[reduce \ + [info frame 0]]"]) x ; #1661 + unset tmp + set res + } + set res [a] + rename a {} + set res +} { type source line 1661 file info.test cmd {info frame 0} proc ::a level 0} + +test info-30.23 {bs+nl in multi-body switch, full compiled} { + proc a {value} { + switch -exact -- $value \ + key { info frame 0; # 1673 } \ + xxx { info frame 0; # 1674 } \ + 000 { info frame 0; # 1675 } + } + set res {} + lappend res [reduce [a key]] + lappend res [reduce [a 000]] + set res "\n[join $res \n]" +} { +type source line 1673 file info.test cmd {info frame 0} proc ::a level 0 +type source line 1675 file info.test cmd {info frame 0} proc ::a level 0} + +test info-30.24 {bs+nl in single-body switch, full compiled} { + proc a {value} { + switch -exact -- $value { + key { reduce \ + [info frame 0] } + xxx { reduce \ + [info frame 0] } + 000 { reduce \ + [info frame 0] } + } + } + set res {} + lappend res [a key] + lappend res [a 000] + set res "\n[join $res \n]" +} { +type source line 1689 file info.test cmd {info frame 0} proc ::a level 0 +type source line 1693 file info.test cmd {info frame 0} proc ::a level 0} + +# ------------------------------------------------------------------------- # cleanup catch {namespace delete test_ns_info1 test_ns_info2} -- cgit v0.12 From 9302cb822e80f3566365632db5bdbb88469866e1 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 25 Aug 2009 23:20:36 +0000 Subject: fix warnings --- generic/tclCompile.c | 4 ++-- generic/tclParse.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/generic/tclCompile.c b/generic/tclCompile.c index a0ac9d3..970c1ef 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.171 2009/08/25 21:03:25 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.172 2009/08/25 23:20:36 das Exp $ */ #include "tclInt.h" @@ -1691,7 +1691,7 @@ TclCompileTokens( unsigned char *entryCodeNext = envPtr->codeNext; #define NUM_STATIC_POS 20 int isLiteral, maxNumCL, numCL; - int* clPosition; + int *clPosition = NULL; /* * For the handling of continuation lines in literals we first check if diff --git a/generic/tclParse.c b/generic/tclParse.c index 69cc830..aca6048 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -2167,7 +2167,7 @@ TclSubstTokens( int code = TCL_OK; #define NUM_STATIC_POS 20 int isLiteral, maxNumCL, numCL, i, adjust; - int* clPosition; + int *clPosition = NULL; Interp* iPtr = (Interp*) interp; int inFile = iPtr->evalFlags & TCL_EVAL_FILE; -- cgit v0.12 From 0dafa2ef355723cf20e2f300e00ac2ea12f52317 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 25 Aug 2009 23:49:39 +0000 Subject: guard clang analyzer Tcl_Panic annotation with #ifndef USE_TCL_STUBS --- generic/tclInt.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/generic/tclInt.h b/generic/tclInt.h index 6443c6f..d19442d 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.437 2009/08/25 21:03:25 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.438 2009/08/25 23:49:39 das Exp $ */ #ifndef _TCLINT @@ -4296,7 +4296,10 @@ MODULE_SCOPE void TclBNInitBignumFromWideUInt(mp_int *bignum, #if defined(PURIFY) && defined(__clang__) && !defined(CLANG_ASSERT) #include #define CLANG_ASSERT(x) assert(x) -EXTERN void Tcl_Panic(const char * format, ...) __attribute__((analyzer_noreturn)); +#ifndef USE_TCL_STUBS +EXTERN void Tcl_Panic(const char * format, ...) + __attribute__((analyzer_noreturn)); +#endif #elif !defined(CLANG_ASSERT) #define CLANG_ASSERT(x) #endif -- cgit v0.12 From 1cf40aa113542de5ca0aaa1b00b3a461cd72fceb Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 26 Aug 2009 02:25:47 +0000 Subject: silence compiler warnings --- generic/tclBasic.c | 4 ++-- generic/tclCompile.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 715af1b..1231dd7 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.75.2.37 2009/08/25 20:59:10 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.75.2.38 2009/08/26 02:25:47 dgp Exp $ */ #include "tclInt.h" @@ -3592,7 +3592,7 @@ EvalTokensStandard(interp, tokenPtr, count, line, clNextOuter, outerScript) #ifdef TCL_TIP280 #define NUM_STATIC_POS 20 int isLiteral, maxNumCL, numCL, i, adjust; - int* clPosition; + int* clPosition = NULL; Interp* iPtr = (Interp*) interp; int inFile = iPtr->evalFlags & TCL_EVAL_FILE; #endif diff --git a/generic/tclCompile.c b/generic/tclCompile.c index aa25f26..74688bd 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.43.2.16 2009/08/25 20:59:10 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.43.2.17 2009/08/26 02:25:47 dgp Exp $ */ #include "tclInt.h" @@ -1499,7 +1499,7 @@ TclCompileTokens(interp, tokenPtr, count, envPtr) #ifdef TCL_TIP280 #define NUM_STATIC_POS 20 int isLiteral, maxNumCL, numCL; - int* clPosition; + int* clPosition = NULL; /* * For the handling of continuation lines in literals we first check if -- cgit v0.12 From 1f43e831d1b9917d0b7c0ee030f1d2112af36ea6 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 26 Aug 2009 02:26:14 +0000 Subject: silence compiler warnings --- generic/tclCompile.c | 4 ++-- generic/tclParse.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 403e487..5f4a5a2 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.146.2.11 2009/08/25 21:01:05 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.146.2.12 2009/08/26 02:26:14 dgp Exp $ */ #include "tclInt.h" @@ -1657,7 +1657,7 @@ TclCompileTokens( unsigned char *entryCodeNext = envPtr->codeNext; #define NUM_STATIC_POS 20 int isLiteral, maxNumCL, numCL; - int* clPosition; + int* clPosition = NULL; /* * For the handling of continuation lines in literals we first check if diff --git a/generic/tclParse.c b/generic/tclParse.c index 3946511..b317910 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParse.c,v 1.62.2.3 2009/08/25 21:01:05 andreas_kupries Exp $ + * RCS: @(#) $Id: tclParse.c,v 1.62.2.4 2009/08/26 02:26:14 dgp Exp $ */ #include "tclInt.h" @@ -2168,7 +2168,7 @@ TclSubstTokens( int code = TCL_OK; #define NUM_STATIC_POS 20 int isLiteral, maxNumCL, numCL, i, adjust; - int* clPosition; + int* clPosition = NULL; Interp* iPtr = (Interp*) interp; int inFile = iPtr->evalFlags & TCL_EVAL_FILE; -- cgit v0.12 From 0f464e35a0f9ebfc2060cdb7a84a22a629a662c4 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 27 Aug 2009 19:33:24 +0000 Subject: * generic/tclStringObj.c: A few more string overflow cases in [format]. [Bug 2845535] --- ChangeLog | 5 +++++ generic/tclStringObj.c | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 45345ea..9567753 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-08-27 Don Porter + + * generic/tclStringObj.c: A few more string overflow cases in + [format]. [Bug 2845535] + 2009-08-25 Andreas Kupries * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 6e202d5..2289659 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.17 2009/07/31 16:56:32 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.70.2.18 2009/08/27 19:33:24 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -2363,6 +2363,10 @@ Tcl_AppendFormatToObj( if (gotPrecision) { *p++ = '.'; p += sprintf(p, "%d", precision); + if (precision > INT_MAX - length) { + msg=overflow; + goto errorMsg; + } length += precision; } @@ -2375,9 +2379,15 @@ Tcl_AppendFormatToObj( segment = Tcl_NewObj(); allocSegment = 1; - Tcl_SetObjLength(segment, length); + if (!Tcl_AttemptSetObjLength(segment, length)) { + msg = overflow; + goto errorMsg; + } bytes = TclGetString(segment); - Tcl_SetObjLength(segment, sprintf(bytes, spec, d)); + if (!Tcl_AttemptSetObjLength(segment, sprintf(bytes, spec, d))) { + msg = overflow; + goto errorMsg; + } break; } default: -- cgit v0.12 From c664b11f1bbac55099085e6d49731f0c023bb7d6 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 27 Aug 2009 19:34:24 +0000 Subject: * generic/tclStringObj.c: A few more string overflow cases in [format]. [Bug 2845535] --- ChangeLog | 5 +++++ generic/tclStringObj.c | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2b3e396..17e91fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-08-27 Don Porter + + * generic/tclStringObj.c: A few more string overflow cases in + [format]. [Bug 2845535] + 2009-08-25 Andreas Kupries * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 9ba62f5..8b33fe1 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.128 2009/07/31 16:55:58 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.129 2009/08/27 19:34:24 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -2218,6 +2218,10 @@ Tcl_AppendFormatToObj( if (gotPrecision) { *p++ = '.'; p += sprintf(p, "%d", precision); + if (precision > INT_MAX - length) { + msg=overflow; + goto errorMsg; + } length += precision; } @@ -2230,9 +2234,15 @@ Tcl_AppendFormatToObj( segment = Tcl_NewObj(); allocSegment = 1; - Tcl_SetObjLength(segment, length); + if (!Tcl_AttemptSetObjLength(segment, length)) { + msg = overflow; + goto errorMsg; + } bytes = TclGetString(segment); - Tcl_SetObjLength(segment, sprintf(bytes, spec, d)); + if (!Tcl_AttemptSetObjLength(segment, sprintf(bytes, spec, d))) { + msg = overflow; + goto errorMsg; + } break; } default: -- cgit v0.12 From f79643279e56c8e153c9ece42f9cf83b88e817f5 Mon Sep 17 00:00:00 2001 From: das Date: Fri, 28 Aug 2009 23:04:09 +0000 Subject: workaround llvm LTO bug on ppc --- macosx/Tcl.xcodeproj/project.pbxproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/macosx/Tcl.xcodeproj/project.pbxproj b/macosx/Tcl.xcodeproj/project.pbxproj index 1b22535..1882eb8 100644 --- a/macosx/Tcl.xcodeproj/project.pbxproj +++ b/macosx/Tcl.xcodeproj/project.pbxproj @@ -921,7 +921,7 @@ F966C06F08F281DC005CB29B /* Frameworks */, 1AB674ADFE9D54B511CA2CBB /* Products */, ); - comments = "Copyright (c) 2004-2009 Daniel A. Steffen \nCopyright 2008-2009, Apple Inc.\n\nSee the file \"license.terms\" for information on usage and redistribution of\nthis file, and for a DISCLAIMER OF ALL WARRANTIES.\n\nRCS: @(#) $Id: project.pbxproj,v 1.44 2009/06/26 18:14:25 das Exp $\n"; + comments = "Copyright (c) 2004-2009 Daniel A. Steffen \nCopyright 2008-2009, Apple Inc.\n\nSee the file \"license.terms\" for information on usage and redistribution of\nthis file, and for a DISCLAIMER OF ALL WARRANTIES.\n\nRCS: @(#) $Id: project.pbxproj,v 1.45 2009/08/28 23:04:09 das Exp $\n"; name = Tcl; path = .; sourceTree = SOURCE_ROOT; @@ -2679,6 +2679,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC = "llvm-gcc"; GCC_OPTIMIZATION_LEVEL = 4; + "GCC_OPTIMIZATION_LEVEL[arch=ppc]" = s; GCC_VERSION = com.apple.compilers.llvmgcc42; MACOSX_DEPLOYMENT_TARGET = 10.6; PREBINDING = NO; -- cgit v0.12 From d4ddb3cf109ed11eb4f01f7a5d8e0f17fd722c6a Mon Sep 17 00:00:00 2001 From: das Date: Sun, 30 Aug 2009 19:18:39 +0000 Subject: add "error:" to -verbose line test failure output to satisfy stricter log parsers like Xcode 3.2 --- library/tcltest/tcltest.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index f363c80..64a9c08 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.104 2009/04/08 16:05:15 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.105 2009/08/30 19:18:39 das Exp $ package require Tcl 8.5 ;# -verbose line uses [info frame] namespace eval tcltest { @@ -2104,7 +2104,7 @@ proc tcltest::test {name description args} { } } if {[info exists testLine]} { - puts [outputChannel] "$testFile:$testLine: test failed:\ + puts [outputChannel] "$testFile:$testLine: error: test failed:\ $name [string trim $description]" } } -- cgit v0.12 From a73eb2fc2ca590788c6263ac541fe64012083e43 Mon Sep 17 00:00:00 2001 From: das Date: Sun, 30 Aug 2009 19:18:41 +0000 Subject: add "error:" to -verbose line test failure output to satisfy stricter log parsers like Xcode 3.2 --- library/tcltest/tcltest.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 52f7bf4..30a3591 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.103.2.1 2009/04/08 16:04:48 dgp Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.103.2.2 2009/08/30 19:18:41 das Exp $ package require Tcl 8.5 ;# -verbose line uses [info frame] namespace eval tcltest { @@ -2104,7 +2104,7 @@ proc tcltest::test {name description args} { } } if {[info exists testLine]} { - puts [outputChannel] "$testFile:$testLine: test failed:\ + puts [outputChannel] "$testFile:$testLine: error: test failed:\ $name [string trim $description]" } } -- cgit v0.12 From e5f0af55b3990348d218e12f0da8d9b0ec9c69a2 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 1 Sep 2009 14:13:01 +0000 Subject: * library/tcltest/tcltest.tcl: Bump to tcltest 2.3.2 after revision * library/tcltest/pkgIndex.tcl: to verbose error message. * unix/Makefile.in: * win/Makefile.in: --- ChangeLog | 7 +++++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 4 ++-- unix/Makefile.in | 6 +++--- win/Makefile.in | 6 +++--- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9567753..98d7163 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-09-01 Don Porter + + * library/tcltest/tcltest.tcl: Bump to tcltest 2.3.2 after revision + * library/tcltest/pkgIndex.tcl: to verbose error message. + * unix/Makefile.in: + * win/Makefile.in: + 2009-08-27 Don Porter * generic/tclStringObj.c: A few more string overflow cases in diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index 5b33ac7..fe80272 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.5]} {return} -package ifneeded tcltest 2.3.1 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.3.2 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 30a3591..3f919f5 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.103.2.2 2009/08/30 19:18:41 das Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.103.2.3 2009/09/01 14:13:02 dgp Exp $ package require Tcl 8.5 ;# -verbose line uses [info frame] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.3.1 + variable Version 2.3.2 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] diff --git a/unix/Makefile.in b/unix/Makefile.in index 77e50ea..4806b6a 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.16 2009/05/29 16:28:04 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.17 2009/09/01 14:13:02 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -795,8 +795,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs done; @echo "Installing package msgcat 1.4.2 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/msgcat-1.4.2.tm; - @echo "Installing package tcltest 2.3.1 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.1.tm; + @echo "Installing package tcltest 2.3.2 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.2.tm; @echo "Installing package platform 1.0.5 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.5.tm; diff --git a/win/Makefile.in b/win/Makefile.in index cf44f03..ea147e4 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.10 2009/05/29 16:28:04 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.11 2009/09/01 14:13:02 dgp Exp $ VERSION = @TCL_VERSION@ @@ -644,8 +644,8 @@ install-libraries: libraries install-tzdata install-msgs done; @echo "Installing package msgcat 1.4.2 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.4.2.tm; - @echo "Installing package tcltest 2.3.1 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.1.tm; + @echo "Installing package tcltest 2.3.2 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.2.tm; @echo "Installing package platform 1.0.5 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.5.tm; @echo "Installing package platform::shell 1.1.4 as a Tcl Module"; -- cgit v0.12 From fba4c630a694890fb444eb5ca69f54ebc2bc4c13 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 1 Sep 2009 14:13:23 +0000 Subject: * library/tcltest/tcltest.tcl: Bump to tcltest 2.3.2 after revision * library/tcltest/pkgIndex.tcl: to verbose error message. * unix/Makefile.in: * win/Makefile.in: --- ChangeLog | 7 +++++++ library/tcltest/pkgIndex.tcl | 2 +- library/tcltest/tcltest.tcl | 4 ++-- unix/Makefile.in | 6 +++--- win/Makefile.in | 6 +++--- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 17e91fb..6a59a01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-09-01 Don Porter + + * library/tcltest/tcltest.tcl: Bump to tcltest 2.3.2 after revision + * library/tcltest/pkgIndex.tcl: to verbose error message. + * unix/Makefile.in: + * win/Makefile.in: + 2009-08-27 Don Porter * generic/tclStringObj.c: A few more string overflow cases in diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index 5b33ac7..fe80272 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.5]} {return} -package ifneeded tcltest 2.3.1 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.3.2 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 64a9c08..1bfbaa9 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,7 +16,7 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. # -# RCS: @(#) $Id: tcltest.tcl,v 1.105 2009/08/30 19:18:39 das Exp $ +# RCS: @(#) $Id: tcltest.tcl,v 1.106 2009/09/01 14:13:23 dgp Exp $ package require Tcl 8.5 ;# -verbose line uses [info frame] namespace eval tcltest { @@ -24,7 +24,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.3.1 + variable Version 2.3.2 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] diff --git a/unix/Makefile.in b/unix/Makefile.in index 8d56305..044b156 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.274 2009/07/23 23:02:00 andreas_kupries Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.275 2009/09/01 14:13:23 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -829,8 +829,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs done; @echo "Installing package msgcat 1.4.2 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/msgcat-1.4.2.tm; - @echo "Installing package tcltest 2.3.1 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.1.tm; + @echo "Installing package tcltest 2.3.2 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.2.tm; @echo "Installing package platform 1.0.5 as a Tcl Module"; @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.5.tm; diff --git a/win/Makefile.in b/win/Makefile.in index 4b9c6df..ab56d80 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.159 2009/07/26 07:57:57 nijtmans Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.160 2009/09/01 14:13:23 dgp Exp $ VERSION = @TCL_VERSION@ @@ -710,8 +710,8 @@ install-libraries: libraries install-tzdata install-msgs done; @echo "Installing package msgcat 1.4.2 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.4.2.tm; - @echo "Installing package tcltest 2.3.1 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.1.tm; + @echo "Installing package tcltest 2.3.2 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.2.tm; @echo "Installing package platform 1.0.5 as a Tcl Module"; @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.5.tm; @echo "Installing package platform::shell 1.1.4 as a Tcl Module"; -- cgit v0.12 From e2f9593018e694ea4db44610c096ba4df5a3a3d3 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Tue, 1 Sep 2009 17:31:53 +0000 Subject: * generic/tclIORTrans.c (ReflectInput): Remove error response to 0-result from method 'limit?' of transformations. Return the number of copied bytes instead, which is possibly nothing. The latter then triggers EOF handling in the higher layers, making the 0-result of limit? the way to inject artificial EOF's into the data stream. --- ChangeLog | 9 +++++++++ generic/tclIORTrans.c | 7 ++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6a59a01..85fcec9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-09-01 Andreas Kupries + + * generic/tclIORTrans.c (ReflectInput): Remove error response to + 0-result from method 'limit?' of transformations. Return the + number of copied bytes instead, which is possibly nothing. The + latter then triggers EOF handling in the higher layers, making the + 0-result of limit? the way to inject artificial EOF's into the + data stream. + 2009-09-01 Don Porter * library/tcltest/tcltest.tcl: Bump to tcltest 2.3.2 after revision diff --git a/generic/tclIORTrans.c b/generic/tclIORTrans.c index 2cf38b1..cb91829 100644 --- a/generic/tclIORTrans.c +++ b/generic/tclIORTrans.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORTrans.c,v 1.8 2009/01/22 00:11:24 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIORTrans.c,v 1.9 2009/09/01 17:31:53 andreas_kupries Exp $ */ #include @@ -424,8 +424,6 @@ static void DeleteReflectedTransformMap(ClientData clientData, * list-quoting to keep the words of the message together. See also [x]. */ -static const char *msg_read_badlimit = - "{Tcl driver returned bad read limit '0'}"; static const char *msg_read_unsup = "{read not supported by Tcl driver}"; static const char *msg_write_unsup = "{write not supported by Tcl driver}"; #ifdef TCL_THREADS @@ -1112,8 +1110,7 @@ ReflectInput( return -1; } if (maxRead == 0) { - SetChannelErrorStr(rtPtr->chan, msg_read_badlimit); - return -1; + return gotBytes; } else if (maxRead > 0) { if (maxRead < toRead) { toRead = maxRead; -- cgit v0.12 From 26c688888436fd83e093f6bdb0f200234902d0ee Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 3 Sep 2009 08:01:22 +0000 Subject: Add xref to script-level documentation --- doc/TraceVar.3 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/TraceVar.3 b/doc/TraceVar.3 index 65fa9a7..7ba525d 100644 --- a/doc/TraceVar.3 +++ b/doc/TraceVar.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: TraceVar.3,v 1.21 2008/10/15 10:43:37 dkf Exp $ +'\" RCS: @(#) $Id: TraceVar.3,v 1.22 2009/09/03 08:01:22 dkf Exp $ '\" .so man.macros .TH Tcl_TraceVar 3 7.4 Tcl "Tcl Library Procedures" @@ -376,5 +376,7 @@ set. .PP Array traces are not yet integrated with the Tcl \fBinfo exists\fR command, nor is there Tcl-level access to array traces. +.SH "SEE ALSO" +trace(n) .SH KEYWORDS clientData, trace, variable -- cgit v0.12 From bf275faafb5e7f06980740056beb289feda2af67 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 3 Sep 2009 08:07:07 +0000 Subject: Added suggestions for how to handle the multithreaded case. [Bug 2844962] --- ChangeLog | 40 ++++++++++++++++++++++------------------ doc/LinkVar.3 | 13 ++++++++++++- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 85fcec9..c913e45 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,15 @@ +2009-09-03 Donal K. Fellows + + * doc/LinkVar.3: [Bug 2844962]: Added documentation of issues relating + to use of this API in a multi-threaded environment. + 2009-09-01 Andreas Kupries * generic/tclIORTrans.c (ReflectInput): Remove error response to - 0-result from method 'limit?' of transformations. Return the - number of copied bytes instead, which is possibly nothing. The - latter then triggers EOF handling in the higher layers, making the - 0-result of limit? the way to inject artificial EOF's into the - data stream. + 0-result from method 'limit?' of transformations. Return the number of + copied bytes instead, which is possibly nothing. The latter then + triggers EOF handling in the higher layers, making the 0-result of + limit? the way to inject artificial EOF's into the data stream. 2009-09-01 Don Porter @@ -16,32 +20,32 @@ 2009-08-27 Don Porter - * generic/tclStringObj.c: A few more string overflow cases in - [format]. [Bug 2845535] + * generic/tclStringObj.c: [Bug 2845535]: A few more string + overflow cases in [format]. 2009-08-25 Andreas Kupries - * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, - Tcl_EvalEx, TclEvalEx, TclAdvanceContinuations, TclNREvalObjEx): + * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard) + (Tcl_EvalEx, TclEvalEx, TclAdvanceContinuations, TclNREvalObjEx): * generic/tclCmdMZ.c (Tcl_SwitchObjCmd, TclListLines): * generic/tclCompCmds.c (*): - * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv, - TclFreeCompileEnv, TclCompileScript, TclCompileTokens): + * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv) + (TclFreeCompileEnv, TclCompileScript, TclCompileTokens): * generic/tclCompile.h (CompileEnv): * generic/tclInt.h (ContLineLoc, Interp): - * generic/tclObj.c (ThreadSpecificData, ContLineLocFree, - TclThreadFinalizeObjects, TclInitObjSubsystem, - TclContinuationsEnter, TclContinuationsEnterDerived, - TclContinuationsCopy, TclContinuationsGet, TclFreeObj): + * generic/tclObj.c (ThreadSpecificData, ContLineLocFree) + (TclThreadFinalizeObjects, TclInitObjSubsystem, TclContinuationsEnter, + (TclContinuationsEnterDerived, TclContinuationsCopy, TclFreeObj) + (TclContinuationsGet): * generic/tclParse.c (TclSubstTokens, Tcl_SubstObj): * generic/tclProc.c (TclCreateProc): * generic/tclVar.c (TclPtrSetVar): * tests/info.test (info-30.0-24): Extended the parser, compiler, and execution engine with code and - attendant data structures tracking the position of continuation - lines which are not visible in the resulting script Tcl_Obj*'s, to - properly account for them while counting lines for #280. + attendant data structures tracking the position of continuation lines + which are not visible in the resulting script Tcl_Obj*'s, to properly + account for them while counting lines for #280. 2009-08-24 Daniel Steffen diff --git a/doc/LinkVar.3 b/doc/LinkVar.3 index ad6d5f6..5ff0565 100644 --- a/doc/LinkVar.3 +++ b/doc/LinkVar.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: LinkVar.3,v 1.17 2008/06/29 22:28:24 dkf Exp $ +'\" RCS: @(#) $Id: LinkVar.3,v 1.18 2009/09/03 08:07:07 dkf Exp $ '\" .so man.macros .TH Tcl_LinkVar 3 7.5 Tcl "Tcl Library Procedures" @@ -194,5 +194,16 @@ Tk widget that wishes to display the value of the variable), the trace will not trigger when the C variable has changed. \fBTcl_UpdateLinkedVar\fR ensures that any traces on the Tcl variable are invoked. +.PP +Note that, as with any call to a Tcl interpreter, \fBTcl_UpdateLinkedVar\fR +must be called from the same thread that created the interpreter. The safest +mechanism is to ensure that the C variable is only ever updated from the same +thread that created the interpreter (possibly in response to an event posted +with \fBTcl_ThreadQueueEvent\fR), but when it is necessary to update the +variable in a separate thread, it is advised that \fBTcl_AsyncMark\fR be used +to indicate to the thread hosting the interpreter that it is ready to run +\fBTcl_UpdateLinkedVar\fR. +.SH "SEE ALSO" +Tcl_TraceVar(3) .SH KEYWORDS boolean, integer, link, read-only, real, string, traces, variable -- cgit v0.12 From 923c5dca54d5508b1fe4ca3f9b388545ffcba1ba Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 4 Sep 2009 09:38:20 +0000 Subject: Improve consistency of formatting of comments and function decls --- generic/tclInt.h | 92 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/generic/tclInt.h b/generic/tclInt.h index d19442d..dd073d2 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.438 2009/08/25 23:49:39 das Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.439 2009/09/04 09:38:20 dkf Exp $ */ #ifndef _TCLINT @@ -970,8 +970,8 @@ typedef struct ActiveInterpTrace { * TCL_TRACE_LEAVE_EXEC - triggers leave/leavestep traces. * - passed to Tcl_CreateObjTrace to set up * "leavestep" traces. - * */ + #define TCL_TRACE_ENTER_EXEC 1 #define TCL_TRACE_LEAVE_EXEC 2 @@ -1073,10 +1073,9 @@ typedef struct CallFrame { * specify. */ LocalCache *localCachePtr; struct TEOV_callback *tailcallPtr; - /* The callback implementing the call to be + /* The callback implementing the call to be * executed by the command that pushed this - * frame. - */ + * frame. */ } CallFrame; #define FRAME_IS_PROC 0x1 @@ -1123,10 +1122,11 @@ typedef struct CmdFrame { CallFrame *framePtr; /* Procedure activation record, may be * NULL. */ struct CmdFrame *nextPtr; /* Link to calling frame. */ - const struct CFWordBC* litarg; /* Link to set of literal arguments which - * have ben pushed on the lineLABCPtr stack - * by TclArgumentBCEnter(). These will be - * removed by TclArgumentBCRelease. */ + const struct CFWordBC *litarg; + /* Link to set of literal arguments which have + * ben pushed on the lineLABCPtr stack by + * TclArgumentBCEnter(). These will be removed + * by TclArgumentBCRelease. */ /* * Data needed for Eval vs TEBC * @@ -1184,14 +1184,14 @@ typedef struct CFWord { } CFWord; typedef struct CFWordBC { - Tcl_Obj* obj; /* Back reference to hashtable key */ + Tcl_Obj *obj; /* Back reference to hashtable key */ CmdFrame *framePtr; /* CmdFrame to access. */ int pc; /* Instruction pointer of a command in * ExtCmdLoc.loc[.] */ int word; /* Index of word in * ExtCmdLoc.loc[cmd]->line[.] */ - struct CFWordBC* prevPtr; /* Previous entry in stack for same Tcl_Obj */ - struct CFWordBC* nextPtr; /* Next entry for same command call. See + struct CFWordBC *prevPtr; /* Previous entry in stack for same Tcl_Obj. */ + struct CFWordBC *nextPtr; /* Next entry for same command call. See * CmdFrame litarg field for the list start. */ } CFWordBC; @@ -1213,16 +1213,17 @@ typedef struct CFWordBC { * the function TclThreadFinalizeObjects(), in the same file. */ -#define CLL_END (-1) +#define CLL_END (-1) typedef struct ContLineLoc { - int num; /* Number of entries in loc, not counting the final -1 - * marker entry */ - int loc[1]; /* Table of locations, as character offsets. The table - * is allocated as part of the structure, i.e. the loc - * array extends behind the nominal end of the - * structure. An entry containing the value -1 is put - * after the last location, as end-marker/sentinel. */ + int num; /* Number of entries in loc, not counting the + * final -1 marker entry. */ + int loc[1]; /* Table of locations, as character offsets. + * The table is allocated as part of the + * structure, extending behind the nominal end + * of the structure. An entry containing the + * value -1 is put after the last location, as + * end-marker/sentinel. */ } ContLineLoc; /* @@ -2013,8 +2014,7 @@ typedef struct Interp { * invoking command. Alt view: An index to the * CmdFrame stack keyed by command argument * holders. */ - ContLineLoc* scriptCLLocPtr; - /* This table points to the location data for + ContLineLoc *scriptCLLocPtr;/* This table points to the location data for * invisible continuation lines in the script, * if any. This pointer is set by the function * TclEvalObjEx() in file "tclBasic.c", and @@ -2069,12 +2069,11 @@ typedef struct Interp { * and setup. */ struct TEOV_callback *deferredCallbacks; - /* Callbacks that are set previous to a call + /* Callbacks that are set previous to a call * to some Eval function but that actually * belong to the command that is about to be - * called - ie, they should be run *before* - * any tailcall is invoked. - */ + * called - i.e., they should be run *before* + * any tailcall is invoked. */ #ifdef TCL_COMPILE_STATS /* @@ -2143,7 +2142,7 @@ typedef struct InterpList { #define TCL_ALLOW_EXCEPTIONS 4 #define TCL_EVAL_FILE 2 #define TCL_EVAL_CTX 8 -#define TCL_EVAL_REDIRECT 16 +#define TCL_EVAL_REDIRECT 16 /* * Flag bits for Interp structures: @@ -2691,7 +2690,7 @@ typedef struct ForIterData { MODULE_SCOPE int TclNREvalCmd(Tcl_Interp *interp, Tcl_Obj *objPtr, int flags); MODULE_SCOPE void TclPushTailcallPoint(Tcl_Interp *interp); -MODULE_SCOPE void TclAdvanceContinuations(int* line, int** next, int loc); +MODULE_SCOPE void TclAdvanceContinuations(int *line, int **next, int loc); MODULE_SCOPE void TclAdvanceLines(int *line, const char *start, const char *end); MODULE_SCOPE void TclArgumentEnter(Tcl_Interp *interp, @@ -2699,7 +2698,7 @@ MODULE_SCOPE void TclArgumentEnter(Tcl_Interp *interp, MODULE_SCOPE void TclArgumentRelease(Tcl_Interp *interp, Tcl_Obj *objv[], int objc); MODULE_SCOPE void TclArgumentBCEnter(Tcl_Interp *interp, - Tcl_Obj* objv[], int objc, + Tcl_Obj *objv[], int objc, void *codePtr, CmdFrame *cfPtr, int pc); MODULE_SCOPE void TclArgumentBCRelease(Tcl_Interp *interp, CmdFrame *cfPtr); @@ -2719,16 +2718,19 @@ MODULE_SCOPE int TclClearRootEnsemble(ClientData data[], Tcl_Interp *interp, int result); MODULE_SCOPE void TclCleanupLiteralTable(Tcl_Interp *interp, LiteralTable *tablePtr); -MODULE_SCOPE ContLineLoc* TclContinuationsEnter(Tcl_Obj* objPtr, int num, int* loc); -MODULE_SCOPE void TclContinuationsEnterDerived(Tcl_Obj* objPtr, int start, int* clNext); -MODULE_SCOPE ContLineLoc* TclContinuationsGet(Tcl_Obj* objPtr); -MODULE_SCOPE void TclContinuationsCopy(Tcl_Obj* objPtr, Tcl_Obj* originObjPtr); +MODULE_SCOPE ContLineLoc* TclContinuationsEnter(Tcl_Obj *objPtr, int num, + int *loc); +MODULE_SCOPE void TclContinuationsEnterDerived(Tcl_Obj *objPtr, + int start, int *clNext); +MODULE_SCOPE ContLineLoc* TclContinuationsGet(Tcl_Obj *objPtr); +MODULE_SCOPE void TclContinuationsCopy(Tcl_Obj *objPtr, + Tcl_Obj *originObjPtr); MODULE_SCOPE int TclDoubleDigits(char *buf, double value, int *signum); MODULE_SCOPE void TclDeleteNamespaceVars(Namespace *nsPtr); /* TIP #280 - Modified token based evulation, with line information. */ MODULE_SCOPE int TclEvalEx(Tcl_Interp *interp, const char *script, int numBytes, int flags, int line, - int* clNextOuter, CONST char* outerScript); + int *clNextOuter, const char *outerScript); MODULE_SCOPE int TclFileAttrsCmd(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE int TclFileCopyCmd(Tcl_Interp *interp, @@ -2739,10 +2741,10 @@ MODULE_SCOPE int TclFileMakeDirsCmd(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE int TclFileRenameCmd(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); -MODULE_SCOPE void TclCreateLateExitHandler (Tcl_ExitProc * proc, - ClientData clientData); -MODULE_SCOPE void TclDeleteLateExitHandler (Tcl_ExitProc * proc, - ClientData clientData); +MODULE_SCOPE void TclCreateLateExitHandler(Tcl_ExitProc *proc, + ClientData clientData); +MODULE_SCOPE void TclDeleteLateExitHandler(Tcl_ExitProc *proc, + ClientData clientData); MODULE_SCOPE void TclFinalizeAllocSubsystem(void); MODULE_SCOPE void TclFinalizeAsync(void); MODULE_SCOPE void TclFinalizeDoubleConversion(void); @@ -2823,7 +2825,7 @@ MODULE_SCOPE Tcl_Obj * TclLindexFlat(Tcl_Interp *interp, Tcl_Obj *listPtr, int indexCount, Tcl_Obj *const indexArray[]); /* TIP #280 */ MODULE_SCOPE void TclListLines(Tcl_Obj *listObj, int line, int n, - int *lines, Tcl_Obj* const* elems); + int *lines, Tcl_Obj *const *elems); MODULE_SCOPE Tcl_Obj * TclListObjCopy(Tcl_Interp *interp, Tcl_Obj *listPtr); MODULE_SCOPE int TclLoadFile(Tcl_Interp *interp, Tcl_Obj *pathPtr, int symc, const char *symbols[], @@ -2950,7 +2952,7 @@ MODULE_SCOPE int TclStringMatchObj(Tcl_Obj *stringObj, MODULE_SCOPE Tcl_Obj * TclStringObjReverse(Tcl_Obj *objPtr); MODULE_SCOPE int TclSubstTokens(Tcl_Interp *interp, Tcl_Token *tokenPtr, int count, int *tokensLeftPtr, int line, - int* clNextOuter, CONST char* outerScript); + int *clNextOuter, const char *outerScript); MODULE_SCOPE Tcl_Obj * TclpNativeToNormalized(ClientData clientData); MODULE_SCOPE Tcl_Obj * TclpFilesystemPathType(Tcl_Obj *pathPtr); MODULE_SCOPE Tcl_PackageInitProc *TclpFindSymbol(Tcl_Interp *interp, @@ -3593,7 +3595,7 @@ MODULE_SCOPE unsigned TclHashObjKey(Tcl_HashTable *tablePtr, void *keyPtr); #ifdef USE_DTRACE #ifndef _TCLDTRACE_H -typedef const char* TclDTraceStr; +typedef const char *TclDTraceStr; #include "tclDTrace.h" #endif #define TCL_DTRACE_OBJ_CREATE(objPtr) TCL_OBJ_CREATE(objPtr) @@ -3912,10 +3914,10 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, const char *file, /* *---------------------------------------------------------------- - * Macro counterpart of the Tcl_NumUtfChars() function. To be used - * in speed-sensitive points where it pays to avoid a function call - * in the common case of counting along a string of all one-byte characters. - * The ANSI C "prototype" for this macro is: + * Macro counterpart of the Tcl_NumUtfChars() function. To be used in speed- + * -sensitive points where it pays to avoid a function call in the common case + * of counting along a string of all one-byte characters. The ANSI C + * "prototype" for this macro is: * * MODULE_SCOPE void TclNumUtfChars(int numChars, const char *bytes, * int numBytes); -- cgit v0.12 From ec6f24d1c6194c2ea9a6a128f03ec6ef8c5e3e3b Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 4 Sep 2009 17:33:11 +0000 Subject: * generic/tclCompCmds.c (TclCompileSubstCmd): Added a bytecode * generic/tclBasic.c: compiler routine for the [subst] command. * generic/tclCmdMZ.c: This is a partial solution to the need to * generic/tclCompile.c: NR-enable [subst] since bytecode execution is * generic/tclCompile.h: already NR-enabled. [Bug 2314561] Two new * generic/tclExecute.c: bytecode instructions, INST_NOP and * generic/tclInt.h: INST_RETURN_CODE_BRANCH were added to support * generic/tclParse.c: the new routine. INST_RETURN_CODE_BRANCH is * tests/basic.test: likely to be useful in any future effort to * tests/info.test: add a bytecode compiler routine for [try]. * tests/parse.test: --- ChangeLog | 14 +++ generic/tclBasic.c | 4 +- generic/tclCmdMZ.c | 50 ++++++---- generic/tclCompCmds.c | 271 +++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclCompile.c | 172 +++++++++++++++++++------------- generic/tclCompile.h | 10 +- generic/tclExecute.c | 21 +++- generic/tclInt.h | 10 +- generic/tclParse.c | 61 +++++++----- tests/basic.test | 4 +- tests/info.test | 123 ++++++++++++++++++++++- tests/parse.test | 8 +- 12 files changed, 616 insertions(+), 132 deletions(-) diff --git a/ChangeLog b/ChangeLog index c913e45..eb36290 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2009-09-04 Don Porter + + * generic/tclCompCmds.c (TclCompileSubstCmd): Added a bytecode + * generic/tclBasic.c: compiler routine for the [subst] command. + * generic/tclCmdMZ.c: This is a partial solution to the need to + * generic/tclCompile.c: NR-enable [subst] since bytecode execution is + * generic/tclCompile.h: already NR-enabled. [Bug 2314561] Two new + * generic/tclExecute.c: bytecode instructions, INST_NOP and + * generic/tclInt.h: INST_RETURN_CODE_BRANCH were added to support + * generic/tclParse.c: the new routine. INST_RETURN_CODE_BRANCH is + * tests/basic.test: likely to be useful in any future effort to + * tests/info.test: add a bytecode compiler routine for [try]. + * tests/parse.test: + 2009-09-03 Donal K. Fellows * doc/LinkVar.3: [Bug 2844962]: Added documentation of issues relating diff --git a/generic/tclBasic.c b/generic/tclBasic.c index d97194c..b5abbc2 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.402 2009/08/25 21:03:25 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.403 2009/09/04 17:33:11 dgp Exp $ */ #include "tclInt.h" @@ -213,7 +213,7 @@ static const CmdInfo builtInCmds[] = { {"scan", Tcl_ScanObjCmd, NULL, NULL, 1}, {"set", Tcl_SetObjCmd, TclCompileSetCmd, NULL, 1}, {"split", Tcl_SplitObjCmd, NULL, NULL, 1}, - {"subst", Tcl_SubstObjCmd, NULL, NULL, 1}, + {"subst", Tcl_SubstObjCmd, TclCompileSubstCmd, NULL, 1}, {"switch", Tcl_SwitchObjCmd, TclCompileSwitchCmd, TclNRSwitchObjCmd, 1}, {"throw", Tcl_ThrowObjCmd, NULL, NULL, 1}, {"trace", Tcl_TraceObjCmd, NULL, NULL, 1}, diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 2cce7be..a5a2f1b 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.191 2009/08/25 21:03:25 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.192 2009/09/04 17:33:11 dgp Exp $ */ #include "tclInt.h" @@ -3373,30 +3373,24 @@ TclInitStringCmd( */ int -Tcl_SubstObjCmd( - ClientData dummy, /* Not used. */ - Tcl_Interp *interp, /* Current interpreter. */ - int objc, /* Number of arguments. */ - Tcl_Obj *const objv[]) /* Argument objects. */ +TclSubstOptions( + Tcl_Interp *interp, + int numOpts, + Tcl_Obj *const opts[], + int *flagPtr) { static const char *const substOptions[] = { "-nobackslashes", "-nocommands", "-novariables", NULL }; - enum substOptions { + enum { SUBST_NOBACKSLASHES, SUBST_NOCOMMANDS, SUBST_NOVARS }; - Tcl_Obj *resultPtr; - int flags, i; + int i, flags = TCL_SUBST_ALL; - /* - * Parse command-line options. - */ - - flags = TCL_SUBST_ALL; - for (i = 1; i < (objc-1); i++) { + for (i = 0; i < numOpts; i++) { int optionIndex; - if (Tcl_GetIndexFromObj(interp, objv[i], substOptions, "switch", 0, + if (Tcl_GetIndexFromObj(interp, opts[i], substOptions, "switch", 0, &optionIndex) != TCL_OK) { return TCL_ERROR; } @@ -3414,17 +3408,31 @@ Tcl_SubstObjCmd( Tcl_Panic("Tcl_SubstObjCmd: bad option index to SubstOptions"); } } - if (i != objc-1) { + *flagPtr = flags; + return TCL_OK; +} + +int +Tcl_SubstObjCmd( + ClientData dummy, /* Not used. */ + Tcl_Interp *interp, /* Current interpreter. */ + int objc, /* Number of arguments. */ + Tcl_Obj *const objv[]) /* Argument objects. */ +{ + Tcl_Obj *resultPtr; + int flags; + + if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "?-nobackslashes? ?-nocommands? ?-novariables? string"); return TCL_ERROR; } - /* - * Perform the substitution. - */ + if (TclSubstOptions(interp, objc-2, objv+1, &flags) != TCL_OK) { + return TCL_ERROR; + } - resultPtr = Tcl_SubstObj(interp, objv[i], flags); + resultPtr = Tcl_SubstObj(interp, objv[objc-1], flags); if (resultPtr == NULL) { return TCL_ERROR; diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 5b5871f..ffcd22a 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.153 2009/08/25 21:03:25 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.154 2009/09/04 17:33:11 dgp Exp $ */ #include "tclInt.h" @@ -3844,6 +3844,275 @@ TclCompileStringLenCmd( /* *---------------------------------------------------------------------- * + * TclCompileSubstCmd -- + * + * Procedure called to compile the "subst" command. + * + * Results: + * Returns TCL_OK for successful compile, or TCL_ERROR to defer + * evaluation to runtime (either when it is too complex to get the + * semantics right, or when we know for sure that it is an error but need + * the error to happen at the right time). + * + * Side effects: + * Instructions are added to envPtr to execute the "subst" command at + * runtime. + * + *---------------------------------------------------------------------- + */ + +int +TclCompileSubstCmd( + Tcl_Interp *interp, /* Used for error reporting. */ + Tcl_Parse *parsePtr, /* Points to a parse structure for the command + * created by Tcl_ParseCommand. */ + Command *cmdPtr, /* Points to defintion of command being + * compiled. */ + CompileEnv *envPtr) /* Holds resulting instructions. */ +{ + int numArgs = parsePtr->numWords - 1; + int numOpts = numArgs - 1; + int objc, flags = TCL_SUBST_ALL; + Tcl_Obj **objv/*, *toSubst = NULL*/; + Tcl_Parse parse; + Tcl_InterpState state = NULL; + Tcl_Token *wordTokenPtr = TokenAfter(parsePtr->tokenPtr); + int breakOffset = 0, count = 0, code = TCL_OK; + Tcl_Token *endTokenPtr, *tokenPtr; + DefineLineInformation; /* TIP #280 */ + int bline = mapPtr->loc[eclIndex].line[numArgs]; + SetLineInformation(numArgs); + + if (numArgs == 0) { + return TCL_ERROR; + } + + objv = (Tcl_Obj **) TclStackAlloc(interp, /*numArgs*/ numOpts * sizeof(Tcl_Obj *)); + + for (objc = 0; objc < /*numArgs*/ numOpts; objc++) { + objv[objc] = Tcl_NewObj(); + Tcl_IncrRefCount(objv[objc]); + if (!TclWordKnownAtCompileTime(wordTokenPtr, objv[objc])) { + objc++; + goto cleanup; + } + wordTokenPtr = TokenAfter(wordTokenPtr); + } + +/* + if (TclSubstOptions(NULL, numOpts, objv, &flags) == TCL_OK) { + toSubst = objv[numOpts]; + Tcl_IncrRefCount(toSubst); + } +*/ + + /* TODO: Figure out expansion to cover WordKnownAtCompileTime + * The difficulty is that WKACT makes a copy, and if TclSubstParse + * below parses the copy of the original source string, some deep + * parts of the compile machinery get upset. They want all pointers + * stored in Tcl_Tokens to point back to the same original string. + */ + if (wordTokenPtr->type != TCL_TOKEN_SIMPLE_WORD) { + code = TCL_ERROR; + } + if (code == TCL_OK) { + code = TclSubstOptions(NULL, numOpts, objv, &flags); + } + + cleanup: + while (--objc >= 0) { + TclDecrRefCount(objv[objc]); + } + TclStackFree(interp, objv); + if (/*toSubst == NULL*/ code != TCL_OK) { + return TCL_ERROR; + } + + TclSubstParse(interp, /*toSubst,*/ wordTokenPtr[1].start, + wordTokenPtr[1].size, flags, &parse, &state); + + for (tokenPtr = parse.tokenPtr, endTokenPtr = tokenPtr + parse.numTokens; + tokenPtr < endTokenPtr; tokenPtr = TokenAfter(tokenPtr)) { + int length, literal, catchRange, breakJump; + char buf[TCL_UTF_MAX]; + JumpFixup startFixup, okFixup, returnFixup, breakFixup; + JumpFixup continueFixup, otherFixup, endFixup; + + switch (tokenPtr->type) { + case TCL_TOKEN_TEXT: + literal = TclRegisterNewLiteral(envPtr, + tokenPtr->start, tokenPtr->size); + TclEmitPush(literal, envPtr); + TclAdvanceLines(&bline, tokenPtr->start, + tokenPtr->start + tokenPtr->size); + count++; + continue; + case TCL_TOKEN_BS: + length = Tcl_UtfBackslash(tokenPtr->start, NULL, buf); + literal = TclRegisterNewLiteral(envPtr, buf, length); + TclEmitPush(literal, envPtr); + count++; + continue; + } + + while (count > 255) { + TclEmitInstInt1(INST_CONCAT1, 255, envPtr); + count -= 254; + } + if (count > 1) { + TclEmitInstInt1(INST_CONCAT1, count, envPtr); + count = 1; + } + + if (breakOffset == 0) { + /* Jump to the start (jump over the jump to end) */ + TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &startFixup); + + /* Jump to the end (all BREAKs land here) */ + breakOffset = CurrentOffset(envPtr); + TclEmitInstInt4(INST_JUMP4, 0, envPtr); + + /* Start */ + if (TclFixupForwardJumpToHere(envPtr, &startFixup, 127)) { + Tcl_Panic("TclCompileSubstCmd: bad start jump distance %d", + CurrentOffset(envPtr) - startFixup.codeOffset); + } + } + + envPtr->line = bline; + catchRange = DeclareExceptionRange(envPtr, CATCH_EXCEPTION_RANGE); + TclEmitInstInt4(INST_BEGIN_CATCH4, catchRange, envPtr); + ExceptionRangeStarts(envPtr, catchRange); + + switch (tokenPtr->type) { + case TCL_TOKEN_COMMAND: + TclCompileScript(interp, tokenPtr->start+1, tokenPtr->size-2, + envPtr); + count++; + break; + case TCL_TOKEN_VARIABLE: + TclCompileVarSubst(interp, tokenPtr, envPtr); + count++; + break; + default: + Tcl_Panic("unexpected token type in TclCompileSubstCmd: %d", + tokenPtr->type); + } + + ExceptionRangeEnds(envPtr, catchRange); + + /* Substitution produced TCL_OK */ + TclEmitOpcode(INST_END_CATCH, envPtr); + TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &okFixup); + + /* Exceptional return codes processed here */ + ExceptionRangeTarget(envPtr, catchRange, catchOffset); + TclEmitOpcode(INST_PUSH_RETURN_OPTIONS, envPtr); + TclEmitOpcode(INST_PUSH_RESULT, envPtr); + TclEmitOpcode(INST_PUSH_RETURN_CODE, envPtr); + TclEmitOpcode(INST_END_CATCH, envPtr); + TclEmitOpcode(INST_RETURN_CODE_BRANCH, envPtr); + + /* ERROR -> reraise it */ + TclEmitOpcode(INST_RETURN_STK, envPtr); + TclEmitOpcode(INST_NOP, envPtr); + + /* RETURN */ + TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &returnFixup); + + /* BREAK */ + TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &breakFixup); + + /* CONTINUE */ + TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &continueFixup); + + /* OTHER */ + TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &otherFixup); + + /* BREAK destination */ + if (TclFixupForwardJumpToHere(envPtr, &breakFixup, 127)) { + Tcl_Panic("TclCompileSubstCmd: bad break jump distance %d", + CurrentOffset(envPtr) - breakFixup.codeOffset); + } + TclEmitOpcode(INST_POP, envPtr); + TclEmitOpcode(INST_POP, envPtr); + + breakJump = CurrentOffset(envPtr) - breakOffset; + if (breakJump > 127) { + TclEmitInstInt4(INST_JUMP4, -breakJump, envPtr) + } else { + TclEmitInstInt1(INST_JUMP1, -breakJump, envPtr) + } + + /* CONTINUE destination */ + if (TclFixupForwardJumpToHere(envPtr, &continueFixup, 127)) { + Tcl_Panic("TclCompileSubstCmd: bad continue jump distance %d", + CurrentOffset(envPtr) - continueFixup.codeOffset); + } + TclEmitOpcode(INST_POP, envPtr); + TclEmitOpcode(INST_POP, envPtr); + TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &endFixup); + + /* RETURN + other destination */ + if (TclFixupForwardJumpToHere(envPtr, &returnFixup, 127)) { + Tcl_Panic("TclCompileSubstCmd: bad return jump distance %d", + CurrentOffset(envPtr) - returnFixup.codeOffset); + } + if (TclFixupForwardJumpToHere(envPtr, &otherFixup, 127)) { + Tcl_Panic("TclCompileSubstCmd: bad other jump distance %d", + CurrentOffset(envPtr) - otherFixup.codeOffset); + } + /* Pull the result to top of stack, discard options dict */ + TclEmitInstInt4(INST_REVERSE, 2, envPtr); + TclEmitOpcode(INST_POP, envPtr); + + /* OK destination */ + if (TclFixupForwardJumpToHere(envPtr, &okFixup, 127)) { + Tcl_Panic("TclCompileSubstCmd: bad ok jump distance %d", + CurrentOffset(envPtr) - okFixup.codeOffset); + } + if (count > 1) { + TclEmitInstInt1(INST_CONCAT1, count, envPtr); + count = 1; + } + + /* CONTINUE jump to here */ + if (TclFixupForwardJumpToHere(envPtr, &endFixup, 127)) { + Tcl_Panic("TclCompileSubstCmd: bad end jump distance %d", + CurrentOffset(envPtr) - endFixup.codeOffset); + } + bline = envPtr->line; + } + + + while (count > 255) { + TclEmitInstInt1(INST_CONCAT1, 255, envPtr); + count -= 254; + } + if (count > 1) { + TclEmitInstInt1(INST_CONCAT1, count, envPtr); + } + + Tcl_FreeParse(&parse); +/* TclDecrRefCount(toSubst);*/ + + if (state != NULL) { + Tcl_RestoreInterpState(interp, state); + TclCompileSyntaxError(interp, envPtr); + } + + /* Final target of the multi-jump from all BREAKs */ + if (breakOffset > 0) { + TclUpdateInstInt4AtPc(INST_JUMP4, CurrentOffset(envPtr) - breakOffset, + envPtr->codeStart + breakOffset); + } + + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * * TclCompileSwitchCmd -- * * Procedure called to compile the "switch" command. diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 970c1ef..b6b270b 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.172 2009/08/25 23:20:36 das Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.173 2009/09/04 17:33:11 dgp Exp $ */ #include "tclInt.h" @@ -399,6 +399,13 @@ InstructionDesc const tclInstructionTable[] = { * stknext */ {"existStk", 1, 0, 0, {OPERAND_NONE}}, /* Test if general variable exists; unparsed variable name is stktop*/ + {"nop", 1, 0, 0, {OPERAND_NONE}}, + /* Do nothing */ + {"returnCodeBranch", 1, -1, 0, {OPERAND_NONE}}, + /* Jump to next instruction based on the return code on top of stack + * ERROR: +1; RETURN: +3; BREAK: +5; CONTINUE: +7; + * Other non-OK: +9 + */ {0} }; @@ -1277,6 +1284,17 @@ TclCompileScript( TclCompileSyntaxError(interp, envPtr); break; } + + /* + * TIP #280: We have to count newlines before the command even + * in the degenerate case when the command has no words. (See + * test info-30.33). So make that counting here, and not in + * the (numWords > 0) branch below. + */ + TclAdvanceLines(&cmdLine, p, parsePtr->commandStart); + TclAdvanceContinuations(&cmdLine, &clNext, + parsePtr->commandStart - envPtr->source); + if (parsePtr->numWords > 0) { int expand = 0; /* Set if there are dynamic expansions to * handle */ @@ -1361,9 +1379,6 @@ TclCompileScript( * 'wlines'. */ - TclAdvanceLines(&cmdLine, p, parsePtr->commandStart); - TclAdvanceContinuations (&cmdLine, &clNext, - parsePtr->commandStart - envPtr->source); EnterCmdWordData(eclPtr, parsePtr->commandStart - envPtr->source, parsePtr->tokenPtr, parsePtr->commandStart, parsePtr->commandSize, parsePtr->numWords, cmdLine, @@ -1633,6 +1648,14 @@ TclCompileScript( } while (bytesLeft > 0); /* + * TIP #280: Bring the line counts in the CompEnv up to date. + * See tests info-30.33,34,35 . + */ + + envPtr->line = cmdLine; + envPtr->clNext = clNext; + + /* * If the source script yielded no instructions (e.g., if it was empty), * push an empty string as the command's result. * @@ -1674,6 +1697,77 @@ TclCompileScript( */ void +TclCompileVarSubst( + Tcl_Interp *interp, + Tcl_Token *tokenPtr, + CompileEnv *envPtr) +{ + const char *p, *name = tokenPtr[1].start; + int nameBytes = tokenPtr[1].size; + int i, localVar, localVarName = 1; + + /* + * Determine how the variable name should be handled: if it + * contains any namespace qualifiers it is not a local variable + * (localVarName=-1); if it looks like an array element and the + * token has a single component, it should not be created here + * [Bug 569438] (localVarName=0); otherwise, the local variable + * can safely be created (localVarName=1). + */ + + for (i = 0, p = name; i < nameBytes; i++, p++) { + if ((*p == ':') && (i < nameBytes-1) && (*(p+1) == ':')) { + localVarName = -1; + break; + } else if ((*p == '(') + && (tokenPtr->numComponents == 1) + && (*(name + nameBytes - 1) == ')')) { + localVarName = 0; + break; + } + } + + /* + * Either push the variable's name, or find its index in the array + * of local variables in a procedure frame. + */ + + localVar = -1; + if (localVarName != -1) { + localVar = TclFindCompiledLocal(name, nameBytes, localVarName, envPtr); + } + if (localVar < 0) { + TclEmitPush(TclRegisterNewLiteral(envPtr, name, nameBytes), envPtr); + } + + /* + * Emit instructions to load the variable. + */ + + TclAdvanceLines(&(envPtr->line), tokenPtr[1].start, + tokenPtr[1].start + tokenPtr[1].size); + + if (tokenPtr->numComponents == 1) { + if (localVar < 0) { + TclEmitOpcode(INST_LOAD_SCALAR_STK, envPtr); + } else if (localVar <= 255) { + TclEmitInstInt1(INST_LOAD_SCALAR1, localVar, envPtr); + } else { + TclEmitInstInt4(INST_LOAD_SCALAR4, localVar, envPtr); + } + } else { + TclCompileTokens(interp, tokenPtr+2, tokenPtr->numComponents-1, envPtr); + if (localVar < 0) { + TclEmitOpcode(INST_LOAD_ARRAY_STK, envPtr); + } else if (localVar <= 255) { + TclEmitInstInt1(INST_LOAD_ARRAY1, localVar, envPtr); + } else { + TclEmitInstInt4(INST_LOAD_ARRAY4, localVar, envPtr); + } + } +} + +void TclCompileTokens( Tcl_Interp *interp, /* Used for error and status reporting. */ Tcl_Token *tokenPtr, /* Pointer to first in an array of tokens to @@ -1685,9 +1779,7 @@ TclCompileTokens( Tcl_DString textBuffer; /* Holds concatenated chars from adjacent * TCL_TOKEN_TEXT, TCL_TOKEN_BS tokens. */ char buffer[TCL_UTF_MAX]; - const char *name, *p; - int numObjsToConcat, nameBytes, localVarName, localVar; - int length, i; + int i, numObjsToConcat, length; unsigned char *entryCodeNext = envPtr->codeNext; #define NUM_STATIC_POS 20 int isLiteral, maxNumCL, numCL; @@ -1731,6 +1823,8 @@ TclCompileTokens( switch (tokenPtr->type) { case TCL_TOKEN_TEXT: Tcl_DStringAppend(&textBuffer, tokenPtr->start, tokenPtr->size); + TclAdvanceLines(&(envPtr->line), tokenPtr->start, + tokenPtr->start + tokenPtr->size); break; case TCL_TOKEN_BS: @@ -1810,69 +1904,7 @@ TclCompileTokens( Tcl_DStringFree(&textBuffer); } - /* - * Determine how the variable name should be handled: if it - * contains any namespace qualifiers it is not a local variable - * (localVarName=-1); if it looks like an array element and the - * token has a single component, it should not be created here - * [Bug 569438] (localVarName=0); otherwise, the local variable - * can safely be created (localVarName=1). - */ - - name = tokenPtr[1].start; - nameBytes = tokenPtr[1].size; - - localVarName = 1; - for (i = 0, p = name; i < nameBytes; i++, p++) { - if ((*p == ':') && (i < nameBytes-1) && (*(p+1) == ':')) { - localVarName = -1; - break; - } else if ((*p == '(') - && (tokenPtr->numComponents == 1) - && (*(name + nameBytes - 1) == ')')) { - localVarName = 0; - break; - } - } - - /* - * Either push the variable's name, or find its index in the array - * of local variables in a procedure frame. - */ - - localVar = -1; - if (localVarName != -1) { - localVar = TclFindCompiledLocal(name, nameBytes, localVarName, - envPtr); - } - if (localVar < 0) { - TclEmitPush(TclRegisterNewLiteral(envPtr, name, nameBytes), - envPtr); - } - - /* - * Emit instructions to load the variable. - */ - - if (tokenPtr->numComponents == 1) { - if (localVar < 0) { - TclEmitOpcode(INST_LOAD_SCALAR_STK, envPtr); - } else if (localVar <= 255) { - TclEmitInstInt1(INST_LOAD_SCALAR1, localVar, envPtr); - } else { - TclEmitInstInt4(INST_LOAD_SCALAR4, localVar, envPtr); - } - } else { - TclCompileTokens(interp, tokenPtr+2, - tokenPtr->numComponents-1, envPtr); - if (localVar < 0) { - TclEmitOpcode(INST_LOAD_ARRAY_STK, envPtr); - } else if (localVar <= 255) { - TclEmitInstInt1(INST_LOAD_ARRAY1, localVar, envPtr); - } else { - TclEmitInstInt4(INST_LOAD_ARRAY4, localVar, envPtr); - } - } + TclCompileVarSubst(interp, tokenPtr, envPtr); numObjsToConcat++; count -= tokenPtr->numComponents; tokenPtr += tokenPtr->numComponents; diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 4d9dbd1..25dec86 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.h,v 1.118 2009/08/25 21:03:25 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompile.h,v 1.119 2009/09/04 17:33:11 dgp Exp $ */ #ifndef _TCLCOMPILATION @@ -666,8 +666,12 @@ typedef struct ByteCode { #define INST_EXIST_ARRAY_STK 130 #define INST_EXIST_STK 131 +/* For [subst] compilation */ +#define INST_NOP 132 +#define INST_RETURN_CODE_BRANCH 133 + /* The last opcode */ -#define LAST_INST_OPCODE 131 +#define LAST_INST_OPCODE 133 /* * Table describing the Tcl bytecode instructions: their name (for displaying @@ -893,6 +897,8 @@ MODULE_SCOPE void TclCompileSyntaxError(Tcl_Interp *interp, MODULE_SCOPE void TclCompileTokens(Tcl_Interp *interp, Tcl_Token *tokenPtr, int count, CompileEnv *envPtr); +MODULE_SCOPE void TclCompileVarSubst(Tcl_Interp *interp, + Tcl_Token *tokenPtr, CompileEnv *envPtr); MODULE_SCOPE int TclCreateAuxData(ClientData clientData, const AuxDataType *typePtr, CompileEnv *envPtr); MODULE_SCOPE int TclCreateExceptRange(ExceptionRangeType type, diff --git a/generic/tclExecute.c b/generic/tclExecute.c index c668539..662d2a0 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.444 2009/08/12 16:06:43 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.445 2009/09/04 17:33:11 dgp Exp $ */ #include "tclInt.h" @@ -2493,6 +2493,10 @@ TclExecuteByteCode( NEXT_INST_F(opnd, 0, -1); } + case INST_NOP: + pc += 1; + goto cleanup0; + case INST_DUP: objResultPtr = OBJ_AT_TOS; TRACE_WITH_OBJ(("=> "), objResultPtr); @@ -7163,6 +7167,21 @@ TclExecuteByteCode( TRACE_WITH_OBJ(("=> "), objResultPtr); NEXT_INST_F(1, 0, 1); + case INST_RETURN_CODE_BRANCH: { + int code; + + if (TclGetIntFromObj(NULL, OBJ_AT_TOS, &code) != TCL_OK) { + Tcl_Panic("INST_RETURN_CODE_BRANCH: TOS not a return code!"); + } + if (code == TCL_OK) { + Tcl_Panic("INST_RETURN_CODE_BRANCH: TOS is TCL_OK!"); + } + if (code < TCL_ERROR || code > TCL_CONTINUE) { + code = TCL_CONTINUE + 1; + } + NEXT_INST_F(2*code -1, 1, 0); + } + /* TODO: normalize "valPtr" to "valuePtr" */ { int opnd, opnd2, allocateDict; diff --git a/generic/tclInt.h b/generic/tclInt.h index dd073d2..97cb891 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.439 2009/09/04 09:38:20 dkf Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.440 2009/09/04 17:33:12 dgp Exp $ */ #ifndef _TCLINT @@ -2950,6 +2950,11 @@ MODULE_SCOPE int TclStringMatch(const char *str, int strLen, MODULE_SCOPE int TclStringMatchObj(Tcl_Obj *stringObj, Tcl_Obj *patternObj, int flags); MODULE_SCOPE Tcl_Obj * TclStringObjReverse(Tcl_Obj *objPtr); +MODULE_SCOPE int TclSubstOptions(Tcl_Interp *interp, int numOpts, + Tcl_Obj *const opts[], int *flagPtr); +MODULE_SCOPE void TclSubstParse(Tcl_Interp *interp, const char *bytes, + int numBytes, int flags, Tcl_Parse *parsePtr, + Tcl_InterpState *statePtr); MODULE_SCOPE int TclSubstTokens(Tcl_Interp *interp, Tcl_Token *tokenPtr, int count, int *tokensLeftPtr, int line, int *clNextOuter, const char *outerScript); @@ -3370,6 +3375,9 @@ MODULE_SCOPE int TclCompileStringLenCmd(Tcl_Interp *interp, MODULE_SCOPE int TclCompileStringMatchCmd(Tcl_Interp *interp, Tcl_Parse *parsePtr, Command *cmdPtr, struct CompileEnv *envPtr); +MODULE_SCOPE int TclCompileSubstCmd(Tcl_Interp *interp, + Tcl_Parse *parsePtr, Command *cmdPtr, + struct CompileEnv *envPtr); MODULE_SCOPE int TclCompileSwitchCmd(Tcl_Interp *interp, Tcl_Parse *parsePtr, Command *cmdPtr, struct CompileEnv *envPtr); diff --git a/generic/tclParse.c b/generic/tclParse.c index aca6048..efb4422 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -1880,18 +1880,17 @@ Tcl_ParseQuotedString( *---------------------------------------------------------------------- */ -Tcl_Obj * -Tcl_SubstObj( - Tcl_Interp *interp, /* Interpreter in which substitution occurs */ - Tcl_Obj *objPtr, /* The value to be substituted. */ - int flags) /* What substitutions to do. */ +void +TclSubstParse( + Tcl_Interp *interp, + const char *bytes, + int numBytes, + int flags, + Tcl_Parse *parsePtr, + Tcl_InterpState *statePtr) { - int length, tokensLeft, code; - Tcl_Token *endTokenPtr; - Tcl_Obj *result, *errMsg = NULL; - const char *p = TclGetStringFromObj(objPtr, &length); - Tcl_Parse *parsePtr = (Tcl_Parse *) - TclStackAlloc(interp, sizeof(Tcl_Parse)); + int length = numBytes; + const char *p = bytes; TclParseInit(interp, p, length, parsePtr); @@ -1903,12 +1902,11 @@ Tcl_SubstObj( if (TCL_OK != ParseTokens(p, length, /* mask */ 0, flags, parsePtr)) { /* - * There was a parse error. Save the error message for possible - * reporting later. + * There was a parse error. Save the interpreter state for possible + * error reporting later. */ - errMsg = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(errMsg); + *statePtr = Tcl_SaveInterpState(interp, TCL_ERROR); /* * We need to re-parse to get the portion of the string we can [subst] @@ -2054,6 +2052,23 @@ Tcl_SubstObj( Tcl_Panic("bad parse in Tcl_SubstObj: %c", p[length]); } } +} + +Tcl_Obj * +Tcl_SubstObj( + Tcl_Interp *interp, /* Interpreter in which substitution occurs */ + Tcl_Obj *objPtr, /* The value to be substituted. */ + int flags) /* What substitutions to do. */ +{ + int tokensLeft, code, numBytes; + Tcl_Token *endTokenPtr; + Tcl_Obj *result; + Tcl_Parse *parsePtr = (Tcl_Parse *) + TclStackAlloc(interp, sizeof(Tcl_Parse)); + Tcl_InterpState state = NULL; + const char *bytes = TclGetStringFromObj(objPtr, &numBytes); + + TclSubstParse(interp, bytes, numBytes, flags, parsePtr, &state); /* * Next, substitute the parsed tokens just as in normal Tcl evaluation. @@ -2066,9 +2081,8 @@ Tcl_SubstObj( if (code == TCL_OK) { Tcl_FreeParse(parsePtr); TclStackFree(interp, parsePtr); - if (errMsg != NULL) { - Tcl_SetObjResult(interp, errMsg); - Tcl_DecrRefCount(errMsg); + if (state != NULL) { + Tcl_RestoreInterpState(interp, state); return NULL; } return Tcl_GetObjResult(interp); @@ -2081,8 +2095,8 @@ Tcl_SubstObj( Tcl_FreeParse(parsePtr); TclStackFree(interp, parsePtr); Tcl_DecrRefCount(result); - if (errMsg != NULL) { - Tcl_DecrRefCount(errMsg); + if (state != NULL) { + Tcl_DiscardInterpState(state); } return NULL; case TCL_BREAK: @@ -2094,14 +2108,13 @@ Tcl_SubstObj( if (tokensLeft == 0) { Tcl_FreeParse(parsePtr); TclStackFree(interp, parsePtr); - if (errMsg != NULL) { + if (state != NULL) { if (code != TCL_BREAK) { Tcl_DecrRefCount(result); - Tcl_SetObjResult(interp, errMsg); - Tcl_DecrRefCount(errMsg); + Tcl_RestoreInterpState(interp, state); return NULL; } - Tcl_DecrRefCount(errMsg); + Tcl_DiscardInterpState(state); } return result; } diff --git a/tests/basic.test b/tests/basic.test index b8d608e..881b329 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.44 2007/04/20 05:51:11 kennykb Exp $ +# RCS: @(#) $Id: basic.test,v 1.45 2009/09/04 17:33:12 dgp Exp $ # package require tcltest 2 @@ -632,7 +632,7 @@ test basic-46.5 {Tcl_AllowExceptions: exception return not allowed} -setup { (file "*BREAKtest" line 2)} test basic-47.1 {Tcl_EvalEx: check for missing close-bracket} -body { - subst {a[set b [format cd]} + set subst subst; $subst {a[set b [format cd]} } -returnCodes error -result {missing close-bracket} # Some lists for expansion tests to work with diff --git a/tests/info.test b/tests/info.test index 65d71bc..e538a23 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.65 2009/08/25 21:03:25 andreas_kupries Exp $ +# RCS: @(#) $Id: info.test,v 1.66 2009/09/04 17:33:12 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1525,12 +1525,12 @@ test info-30.10 {bs+nl in computed word, key to array} { set res } { type source line 1523 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.11 {bs+nl in subst arguments, no true counting} { +test info-30.11 {bs+nl in subst arguments} { subst {[set \ res "\ [reduce \ - [info frame 0]]"]} -} { type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} + [info frame 0]]"]} ; #1532 +} { type source line 1532 file info.test cmd {info frame 0} proc ::tcltest::RunTest} test info-30.12 {bs+nl in computed word, nested eval} { eval { @@ -1708,6 +1708,121 @@ test info-30.24 {bs+nl in single-body switch, full compiled} { type source line 1696 file info.test cmd {info frame 0} proc ::a level 0 type source line 1700 file info.test cmd {info frame 0} proc ::a level 0} +test info-30.25 {TIP 280 for compiled [subst]} { + subst {[reduce [info frame 0]]} ; # 1712 +} {type source line 1712 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.26 {TIP 280 for compiled [subst]} { + subst \ + {[reduce [info frame 0]]} ; # 1716 +} {type source line 1716 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.27 {TIP 280 for compiled [subst]} { + subst { +[reduce [info frame 0]]} ; # 1720 +} { +type source line 1720 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.28 {TIP 280 for compiled [subst]} { + subst {\ +[reduce [info frame 0]]} ; # 1725 +} { type source line 1725 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.29 {TIP 280 for compiled [subst]} { + subst {foo\ +[reduce [info frame 0]]} ; # 1729 +} {foo type source line 1729 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.30 {TIP 280 for compiled [subst]} { + subst {foo +[reduce [info frame 0]]} ; # 1733 +} {foo +type source line 1733 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.31 {TIP 280 for compiled [subst]} { + subst {[][reduce [info frame 0]]} ; # 1737 +} {type source line 1737 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.32 {TIP 280 for compiled [subst]} { + subst {[\ +][reduce [info frame 0]]} ; # 1741 +} {type source line 1741 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.33 {TIP 280 for compiled [subst]} { + subst {[ +][reduce [info frame 0]]} ; # 1745 +} {type source line 1745 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.34 {TIP 280 for compiled [subst]} { + subst {[format %s {} +][reduce [info frame 0]]} ; # 1749 +} {type source line 1749 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.35 {TIP 280 for compiled [subst]} { + subst {[format %s {} +] +[reduce [info frame 0]]} ; # 1754 +} { +type source line 1754 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.36 {TIP 280 for compiled [subst]} { + subst { +[format %s {}][reduce [info frame 0]]} ; # 1759 +} { +type source line 1759 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.37 {TIP 280 for compiled [subst]} { + subst { +[format %s {}] +[reduce [info frame 0]]} ; # 1765 +} { + +type source line 1765 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.38 {TIP 280 for compiled [subst]} { + subst {\ +[format %s {}][reduce [info frame 0]]} ; # 1771 +} { type source line 1771 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.39 {TIP 280 for compiled [subst]} { + subst {\ +[format %s {}]\ +[reduce [info frame 0]]} ; # 1776 +} { type source line 1776 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.40 {TIP 280 for compiled [subst]} { + unset -nocomplain empty + set empty {} + subst {$empty[reduce [info frame 0]]} ; # 1781 +} {type source line 1781 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.41 {TIP 280 for compiled [subst]} { + unset -nocomplain empty + set empty {} + subst {$empty +[reduce [info frame 0]]} ; # 1787 +} { +type source line 1787 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.42 {TIP 280 for compiled [subst]} { + unset -nocomplain empty + set empty {} + subst {$empty\ +[reduce [info frame 0]]} ; # 1794 +} { type source line 1794 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.43 {TIP 280 for compiled [subst]} { + unset -nocomplain a\nb + set a\nb {} + subst {${a +b}[reduce [info frame 0]]} ; # 1800 +} {type source line 1800 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.44 {TIP 280 for compiled [subst]} { + unset -nocomplain a + set a(\n) {} + subst {$a( +)[reduce [info frame 0]]} ; # 1806 +} {type source line 1806 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.45 {TIP 280 for compiled [subst]} { + unset -nocomplain a + set a() {} + subst {$a([ +return -level 0])[reduce [info frame 0]]} ; # 1812 +} {type source line 1812 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.46 {TIP 280 for compiled [subst]} { + unset -nocomplain a + set a(1817) YES; set a(1816) 1816; set a(1818) 1818 + subst {$a([dict get [info frame 0] line])} ; # 1817 +} YES +test info-30.47 {TIP 280 for compiled [subst]} { + unset -nocomplain a + set a(\n1823) YES; set a(\n1822) 1822; set a(\n1824) 1824 + subst {$a( +[dict get [info frame 0] line])} ; # 1823 +} YES + # ------------------------------------------------------------------------- # cleanup diff --git a/tests/parse.test b/tests/parse.test index 9427254..b745a97 100644 --- a/tests/parse.test +++ b/tests/parse.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parse.test,v 1.36 2008/11/27 08:23:52 ferrieux Exp $ +# RCS: @(#) $Id: parse.test,v 1.37 2009/09/04 17:33:12 dgp Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -896,7 +896,7 @@ test parse-15.60 {CommandComplete procedure} { } 0 test parse-16.1 {Tcl_EvalEx, check termOffset is set correctly for non TCL_OK cases, bug 2535} { - subst {[eval {return foo}]bar} + set subst subst; $subst {[eval {return foo}]bar} } foobar test parse-17.1 {Correct return codes from errors during substitution} { @@ -1043,7 +1043,7 @@ test parse-19.3 {Bug 1115904: recursion limit in Tcl_EvalEx} -setup { i eval {proc {} args {}} interp recursionlimit i 3 } -body { - i eval {subst {[]}} + i eval {set subst subst; $subst {[]}} } -cleanup { interp delete i } @@ -1053,7 +1053,7 @@ test parse-19.4 {Bug 1115904: recursion limit in Tcl_EvalEx} -setup { i eval {proc {} args {}} interp recursionlimit i 2 } -body { - i eval {subst {[[]]}} + i eval {set subst subst; $subst {[[]]}} } -cleanup { interp delete i } -returnCodes error -match glob -result {too many nested*} -- cgit v0.12 From 8b0b3531f3dd05e5a4fd6a5d144f83c7e6b28b07 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 4 Sep 2009 21:07:18 +0000 Subject: Patched up flaw in option syntax checking --- generic/tclCompCmds.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index ffcd22a..c9b60dc 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.154 2009/09/04 17:33:11 dgp Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.155 2009/09/04 21:07:18 dgp Exp $ */ #include "tclInt.h" @@ -3877,7 +3877,7 @@ TclCompileSubstCmd( Tcl_Parse parse; Tcl_InterpState state = NULL; Tcl_Token *wordTokenPtr = TokenAfter(parsePtr->tokenPtr); - int breakOffset = 0, count = 0, code = TCL_OK; + int breakOffset = 0, count = 0, code = TCL_ERROR; Tcl_Token *endTokenPtr, *tokenPtr; DefineLineInformation; /* TIP #280 */ int bline = mapPtr->loc[eclIndex].line[numArgs]; @@ -3912,10 +3912,7 @@ TclCompileSubstCmd( * parts of the compile machinery get upset. They want all pointers * stored in Tcl_Tokens to point back to the same original string. */ - if (wordTokenPtr->type != TCL_TOKEN_SIMPLE_WORD) { - code = TCL_ERROR; - } - if (code == TCL_OK) { + if (wordTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) { code = TclSubstOptions(NULL, numOpts, objv, &flags); } -- cgit v0.12 From e569b1fb491d02be089d87f32688368deb30ef12 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 4 Sep 2009 23:14:32 +0000 Subject: Fixed up error in stack requirement estimation that made debug builds panic during execution of [subst] bytecode. --- generic/tclCompCmds.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index c9b60dc..9b33b41 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.155 2009/09/04 21:07:18 dgp Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.156 2009/09/04 23:14:32 dgp Exp $ */ #include "tclInt.h" @@ -4063,6 +4063,16 @@ TclCompileSubstCmd( TclEmitInstInt4(INST_REVERSE, 2, envPtr); TclEmitOpcode(INST_POP, envPtr); + /* + * We've emitted several POP instructions, and the automatic + * computations for stack depth requirements have been decrementing + * for every one. However, we know that every branch actually taken + * only encounters some of those instructions. No branch passes + * through them all. So, we now have a stack requirements estimate + * that is too low. Here we manually fix that up. + */ + TclAdjustStackDepth(5, envPtr); + /* OK destination */ if (TclFixupForwardJumpToHere(envPtr, &okFixup, 127)) { Tcl_Panic("TclCompileSubstCmd: bad ok jump distance %d", -- cgit v0.12 From c70d85c03e5455903df2df0534bb0a8ac25b32ac Mon Sep 17 00:00:00 2001 From: das Date: Mon, 7 Sep 2009 06:20:47 +0000 Subject: make support for clang static analyzer safer & cleaner --- generic/tclInt.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/generic/tclInt.h b/generic/tclInt.h index 97cb891..a27b0f4 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.440 2009/09/04 17:33:12 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.441 2009/09/07 06:20:47 das Exp $ */ #ifndef _TCLINT @@ -4300,19 +4300,21 @@ MODULE_SCOPE void TclBNInitBignumFromWideUInt(mp_int *bignum, #endif /* TCL_MEM_DEBUG */ /* - * Macros for clang static analyzer + * Support for Clang Static Analyzer */ -#if defined(PURIFY) && defined(__clang__) && !defined(CLANG_ASSERT) +#if defined(PURIFY) && defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) && \ + !defined(Tcl_Panic) && defined(Tcl_Panic_TCL_DECLARED) +void Tcl_Panic(const char *, ...) __attribute__((analyzer_noreturn)); +#endif +#if !defined(CLANG_ASSERT) #include #define CLANG_ASSERT(x) assert(x) -#ifndef USE_TCL_STUBS -EXTERN void Tcl_Panic(const char * format, ...) - __attribute__((analyzer_noreturn)); #endif #elif !defined(CLANG_ASSERT) #define CLANG_ASSERT(x) -#endif +#endif /* PURIFY && __clang__ */ /* *---------------------------------------------------------------- -- cgit v0.12 From 71eeb99bfbfdcf1437799cb69d10b599f7633293 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 7 Sep 2009 07:28:38 +0000 Subject: * generic/tclExecute.c: fix potential uninitialized variable use and * generic/tclFCmd.c: null dereference flagged by clang static * generic/tclProc.c: analyzer. * generic/tclTimer.c: * generic/tclUtf.c: * generic/tclExecute.c: silence false positives from clang static * generic/tclIO.c: analyzer about potential null dereference. * generic/tclScan.c: * generic/tclCompExpr.c: --- ChangeLog | 13 +++++++++++ generic/tclCompExpr.c | 5 ++++- generic/tclExecute.c | 6 ++++-- generic/tclFCmd.c | 3 ++- generic/tclIO.c | 3 ++- generic/tclProc.c | 60 ++++++++++++++++++++++++++------------------------- generic/tclScan.c | 6 +++++- generic/tclTimer.c | 4 ++-- generic/tclUtf.c | 4 ++-- 9 files changed, 65 insertions(+), 39 deletions(-) diff --git a/ChangeLog b/ChangeLog index eb36290..3ada763 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2009-09-07 Daniel Steffen + + * generic/tclExecute.c: fix potential uninitialized variable use and + * generic/tclFCmd.c: null dereference flagged by clang static + * generic/tclProc.c: analyzer. + * generic/tclTimer.c: + * generic/tclUtf.c: + + * generic/tclExecute.c: silence false positives from clang static + * generic/tclIO.c: analyzer about potential null dereference. + * generic/tclScan.c: + * generic/tclCompExpr.c: + 2009-09-04 Don Porter * generic/tclCompCmds.c (TclCompileSubstCmd): Added a bytecode diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index 48f3cc1..47c8671 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompExpr.c,v 1.99 2009/01/09 11:21:45 dkf Exp $ + * RCS: @(#) $Id: tclCompExpr.c,v 1.100 2009/09/07 07:28:38 das Exp $ */ #include "tclInt.h" @@ -2231,6 +2231,7 @@ CompileExprTree( TclEmitForwardJump(envPtr, TCL_FALSE_JUMP, &(jumpPtr->jump)); break; case COLON: + CLANG_ASSERT(jumpPtr); TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &(jumpPtr->next->jump)); envPtr->currStackDepth = jumpPtr->depth; @@ -2284,6 +2285,7 @@ CompileExprTree( numWords++; break; case COLON: + CLANG_ASSERT(jumpPtr); if (TclFixupForwardJump(envPtr, &(jumpPtr->next->jump), (envPtr->codeNext - envPtr->codeStart) - jumpPtr->next->jump.codeOffset, 127)) { @@ -2302,6 +2304,7 @@ CompileExprTree( break; case AND: case OR: + CLANG_ASSERT(jumpPtr); TclEmitForwardJump(envPtr, (nodePtr->lexeme == AND) ? TCL_FALSE_JUMP : TCL_TRUE_JUMP, &(jumpPtr->next->jump)); diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 662d2a0..778b679 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.445 2009/09/04 17:33:11 dgp Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.446 2009/09/07 07:28:38 das Exp $ */ #include "tclInt.h" @@ -2850,6 +2850,7 @@ TclExecuteByteCode( case INST_INVOKE_EXPANDED: { + CLANG_ASSERT(auxObjList); objc = CURR_DEPTH - (ptrdiff_t) auxObjList->internalRep.twoPtrValue.ptr1; POP_AUX_OBJ(); @@ -4546,7 +4547,7 @@ TclExecuteByteCode( if (o != NULL) { s2 = TclGetStringFromObj(o, &s2len); } else { - s2 = ""; + s2 = ""; s2len = 0; } if (s1len == s2len) { found = (strcmp(s1, s2) == 0); @@ -7969,6 +7970,7 @@ TclExecuteByteCode( (unsigned) CURR_DEPTH, (unsigned) 0); Tcl_Panic("TclExecuteByteCode execution failure: end stack top < start stack top"); } + CLANG_ASSERT(bcFramePtr); } oldBottomPtr = bottomPtr->prevBottomPtr; diff --git a/generic/tclFCmd.c b/generic/tclFCmd.c index 0e78c4b..6e84177 100644 --- a/generic/tclFCmd.c +++ b/generic/tclFCmd.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFCmd.c,v 1.49 2008/10/06 21:00:37 patthoyts Exp $ + * RCS: @(#) $Id: tclFCmd.c,v 1.50 2009/09/07 07:28:38 das Exp $ */ #include "tclInt.h" @@ -754,6 +754,7 @@ CopyRenameOneFile( if (S_ISDIR(sourceStatBuf.st_mode)) { result = Tcl_FSRemoveDirectory(source, 1, &errorBuffer); if (result != TCL_OK) { + errfile = errorBuffer; if (Tcl_FSEqualPaths(errfile, source) == 0) { errfile = source; } diff --git a/generic/tclIO.c b/generic/tclIO.c index 4f676e6..6ace57a 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.160 2009/07/23 22:49:15 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.161 2009/09/07 07:28:38 das Exp $ */ #include "tclInt.h" @@ -8565,6 +8565,7 @@ DeleteScriptRecord( if (esPtr == statePtr->scriptRecordPtr) { statePtr->scriptRecordPtr = esPtr->nextPtr; } else { + CLANG_ASSERT(prevEsPtr); prevEsPtr->nextPtr = esPtr->nextPtr; } diff --git a/generic/tclProc.c b/generic/tclProc.c index 12e19da..4eb6c17 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.174 2009/08/25 21:03:25 andreas_kupries Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.175 2009/09/07 07:28:38 das Exp $ */ #include "tclInt.h" @@ -1086,26 +1086,6 @@ TclIsProc( return NULL; } -/* - *---------------------------------------------------------------------- - * - * InitArgsAndLocals -- - * - * This routine is invoked in order to initialize the arguments and other - * compiled locals table for a new call frame. - * - * Results: - * A standard Tcl result. - * - * Side effects: - * Allocates memory on the stack for the compiled local variables, the - * caller is responsible for freeing them. Initialises all variables. May - * invoke various name resolvers in order to determine which variables - * are being referenced at runtime. - * - *---------------------------------------------------------------------- - */ - static int ProcWrongNumArgs( Tcl_Interp *interp, @@ -1175,7 +1155,6 @@ ProcWrongNumArgs( * DEPRECATED: functionality has been inlined elsewhere; this function * remains to insure binary compatibility with Itcl. * - * Results: * None. * @@ -1185,6 +1164,7 @@ ProcWrongNumArgs( * *---------------------------------------------------------------------- */ + void TclInitCompiledLocals( Tcl_Interp *interp, /* Current interpreter. */ @@ -1337,7 +1317,7 @@ InitResolvedLocals( } } } - + void TclFreeLocalCache( Tcl_Interp *interp, @@ -1364,7 +1344,7 @@ TclFreeLocalCache( } ckfree((char *) localCachePtr); } - + static void InitLocalCache( Proc *procPtr) @@ -1416,6 +1396,26 @@ InitLocalCache( localCachePtr->refCount = 1; localCachePtr->numVars = localCt; } + +/* + *---------------------------------------------------------------------- + * + * InitArgsAndLocals -- + * + * This routine is invoked in order to initialize the arguments and other + * compiled locals table for a new call frame. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * Allocates memory on the stack for the compiled local variables, the + * caller is responsible for freeing them. Initialises all variables. May + * invoke various name resolvers in order to determine which variables + * are being referenced at runtime. + * + *---------------------------------------------------------------------- + */ static int InitArgsAndLocals( @@ -1477,7 +1477,7 @@ InitArgsAndLocals( } } imax = ((argCt < numArgs-1) ? argCt : numArgs-1); - for (i = 0; i < imax; i++, varPtr++, defPtr++) { + for (i = 0; i < imax; i++, varPtr++, defPtr ? defPtr++ : defPtr) { /* * "Normal" arguments; last formal is special, depends on it being * 'args'. @@ -1489,13 +1489,13 @@ InitArgsAndLocals( varPtr->value.objPtr = objPtr; Tcl_IncrRefCount(objPtr); /* Local var is a reference. */ } - for (; i < numArgs-1; i++, varPtr++, defPtr++) { + for (; i < numArgs-1; i++, varPtr++, defPtr ? defPtr++ : defPtr) { /* * This loop is entered if argCt < (numArgs-1). Set default values; * last formal is special. */ - Tcl_Obj *objPtr = defPtr->value.objPtr; + Tcl_Obj *objPtr = defPtr ? defPtr->value.objPtr : NULL; if (!objPtr) { goto incorrectArgs; @@ -1511,7 +1511,7 @@ InitArgsAndLocals( */ varPtr->flags = 0; - if (defPtr->flags & VAR_IS_ARGS) { + if (defPtr && defPtr->flags & VAR_IS_ARGS) { Tcl_Obj *listPtr = Tcl_NewListObj(argCt-i, argObjs+i); varPtr->value.objPtr = listPtr; @@ -1521,7 +1521,7 @@ InitArgsAndLocals( varPtr->value.objPtr = objPtr; Tcl_IncrRefCount(objPtr); /* Local var is a reference. */ - } else if ((argCt < numArgs) && (defPtr->value.objPtr != NULL)) { + } else if ((argCt < numArgs) && defPtr && defPtr->value.objPtr) { Tcl_Obj *objPtr = defPtr->value.objPtr; varPtr->value.objPtr = objPtr; @@ -3003,6 +3003,8 @@ Tcl_DisassembleObjCmd( } codeObjPtr = procPtr->bodyPtr; break; + default: + CLANG_ASSERT(0); } /* diff --git a/generic/tclScan.c b/generic/tclScan.c index 47fa025..f5ec509 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclScan.c,v 1.32 2009/07/16 21:24:40 dgp Exp $ + * RCS: @(#) $Id: tclScan.c,v 1.33 2009/09/07 07:28:38 das Exp $ */ #include "tclInt.h" @@ -712,6 +712,7 @@ Tcl_ScanObjCmd( if (!(flags & SCAN_SUPPRESS)) { objPtr = Tcl_NewIntObj(string - baseString); Tcl_IncrRefCount(objPtr); + CLANG_ASSERT(objs); objs[objIndex++] = objPtr; } nconversions++; @@ -819,6 +820,7 @@ Tcl_ScanObjCmd( if (!(flags & SCAN_SUPPRESS)) { objPtr = Tcl_NewStringObj(string, end-string); Tcl_IncrRefCount(objPtr); + CLANG_ASSERT(objs); objs[objIndex++] = objPtr; } string = end; @@ -869,6 +871,7 @@ Tcl_ScanObjCmd( if (!(flags & SCAN_SUPPRESS)) { objPtr = Tcl_NewIntObj((int)sch); Tcl_IncrRefCount(objPtr); + CLANG_ASSERT(objs); objs[objIndex++] = objPtr; } break; @@ -973,6 +976,7 @@ Tcl_ScanObjCmd( } } Tcl_SetDoubleObj(objPtr, dvalue); + CLANG_ASSERT(objs); objs[objIndex++] = objPtr; string = end; } diff --git a/generic/tclTimer.c b/generic/tclTimer.c index 94a8c16..4f40490 100644 --- a/generic/tclTimer.c +++ b/generic/tclTimer.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTimer.c,v 1.39 2009/02/10 23:09:04 nijtmans Exp $ + * RCS: @(#) $Id: tclTimer.c,v 1.40 2009/09/07 07:28:38 das Exp $ */ #include "tclInt.h" @@ -778,7 +778,7 @@ Tcl_AfterObjCmd( int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - Tcl_WideInt ms; /* Number of milliseconds to wait */ + Tcl_WideInt ms = 0; /* Number of milliseconds to wait */ Tcl_Time wakeup; AfterInfo *afterPtr; AfterAssocData *assocPtr; diff --git a/generic/tclUtf.c b/generic/tclUtf.c index 16acab2..31e52ba 100644 --- a/generic/tclUtf.c +++ b/generic/tclUtf.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtf.c,v 1.39 2009/02/11 15:28:59 dgp Exp $ + * RCS: @(#) $Id: tclUtf.c,v 1.40 2009/09/07 07:28:38 das Exp $ */ #include "tclInt.h" @@ -707,7 +707,7 @@ Tcl_UniCharAtIndex( register const char *src, /* The UTF-8 string to dereference. */ register int index) /* The position of the desired character. */ { - Tcl_UniChar ch; + Tcl_UniChar ch = 0; while (index >= 0) { index--; -- cgit v0.12 From 90160300cca05030f3f2330337a1d2693268dc41 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 7 Sep 2009 09:43:32 +0000 Subject: Basic test of yielding inside a subst --- tests/coroutine.test | 48 ++++++++++-------------------------------------- 1 file changed, 10 insertions(+), 38 deletions(-) diff --git a/tests/coroutine.test b/tests/coroutine.test index 29c68e9..9b26e09 100644 --- a/tests/coroutine.test +++ b/tests/coroutine.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: coroutine.test,v 1.3 2009/08/02 14:26:07 msofer Exp $ +# RCS: @(#) $Id: coroutine.test,v 1.4 2009/09/07 09:43:32 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -63,14 +63,12 @@ set lambda [list {{start 0} {stop 10}} { set i $start set imax $stop yield - while {$i < $imax} { yield [expr {$i*$stop}] incr i } }] - - + test coroutine-1.1 {coroutine basic} -setup { coroutine foo ::apply $lambda set res {} @@ -83,7 +81,6 @@ test coroutine-1.1 {coroutine basic} -setup { rename foo {} unset res } -result {0 10 20} - test coroutine-1.2 {coroutine basic} -setup { coroutine foo ::apply $lambda 2 8 set res {} @@ -96,14 +93,12 @@ test coroutine-1.2 {coroutine basic} -setup { rename foo {} unset res } -result {16 24 32} - test coroutine-1.3 {yield returns new arg} -setup { set body { # init set i $start set imax $stop yield - while {$i < $imax} { set stop [yield [expr {$i*$stop}]] incr i @@ -120,7 +115,6 @@ test coroutine-1.3 {yield returns new arg} -setup { rename foo {} unset res } -result {20 6 12} - test coroutine-1.4 {yield in nested proc} -setup { proc moo {} { upvar 1 i i stop stop @@ -131,7 +125,6 @@ test coroutine-1.4 {yield in nested proc} -setup { set i $start set imax $stop yield - while {$i < $imax} { moo incr i @@ -149,28 +142,24 @@ test coroutine-1.4 {yield in nested proc} -setup { rename moo {} unset body res } -result {0 10 20} - test coroutine-1.5 {just yield} -body { coroutine foo yield list [foo] [catch foo msg] $msg } -cleanup { unset msg } -result {{} 1 {invalid command name "foo"}} - test coroutine-1.6 {just yield} -body { coroutine foo [list yield] list [foo] [catch foo msg] $msg } -cleanup { unset msg } -result {{} 1 {invalid command name "foo"}} - test coroutine-1.7 {yield in nested uplevel} -setup { set body { # init set i $start set imax $stop yield - while {$i < $imax} { uplevel 0 [list yield [expr {$i*$stop}]] incr i @@ -187,14 +176,12 @@ test coroutine-1.7 {yield in nested uplevel} -setup { rename foo {} unset body res } -result {0 10 20} - test coroutine-1.8 {yield in nested uplevel} -setup { set body { # init set i $start set imax $stop yield - while {$i < $imax} { uplevel 0 yield [expr {$i*$stop}] incr i @@ -211,7 +198,6 @@ test coroutine-1.8 {yield in nested uplevel} -setup { rename foo {} unset body res } -result {0 10 20} - test coroutine-1.9 {yield in nested eval} -setup { proc moo {} { upvar 1 i i stop stop @@ -222,7 +208,6 @@ test coroutine-1.9 {yield in nested eval} -setup { set i $start set imax $stop yield - while {$i < $imax} { eval moo incr i @@ -239,14 +224,12 @@ test coroutine-1.9 {yield in nested eval} -setup { rename moo {} unset body res } -result {0 10 20} - test coroutine-1.10 {yield in nested eval} -setup { set body { # init set i $start set imax $stop yield - while {$i < $imax} { eval yield [expr {$i*$stop}] incr i @@ -262,7 +245,6 @@ test coroutine-1.10 {yield in nested eval} -setup { } -cleanup { unset body res } -result {0 10 20} - test coroutine-1.11 {yield outside coroutine} -setup { proc moo {} { upvar 1 i i stop stop @@ -275,14 +257,12 @@ test coroutine-1.11 {yield outside coroutine} -setup { rename moo {} unset i stop } -returnCodes error -result {yield can only be called in a coroutine} - test coroutine-1.12 {proc as coroutine} -setup { set body { # init set i $start set imax $stop yield - while {$i < $imax} { uplevel 0 [list yield [expr {$i*$stop}]] incr i @@ -297,32 +277,30 @@ test coroutine-1.12 {proc as coroutine} -setup { rename moo {} rename foo {} } -result {16 24} +test coroutine-1.13 {subst as coroutine} { + list [coroutine foo subst {>>[yield a],[yield b]<<}] [foo x] [foo y] +} {a b >>x,y<<} test coroutine-2.1 {self deletion on return} -body { coroutine foo set x 3 foo } -returnCodes error -result {invalid command name "foo"} - test coroutine-2.2 {self deletion on return} -body { coroutine foo ::apply [list {} {yield; yield 1; return 2}] list [foo] [foo] [catch foo msg] $msg } -result {1 2 1 {invalid command name "foo"}} - test coroutine-2.3 {self deletion on error return} -body { coroutine foo ::apply [list {} {yield;yield 1; error ouch!}] list [foo] [catch foo msg] $msg [catch foo msg] $msg } -result {1 1 ouch! 1 {invalid command name "foo"}} - test coroutine-2.4 {self deletion on other return} -body { coroutine foo ::apply [list {} {yield;yield 1; return -code 100 ouch!}] list [foo] [catch foo msg] $msg [catch foo msg] $msg } -result {1 100 ouch! 1 {invalid command name "foo"}} - test coroutine-2.5 {deletion of suspended coroutine} -body { coroutine foo ::apply [list {} {yield; yield 1; return 2}] list [foo] [rename foo {}] [catch foo msg] $msg } -result {1 {} 1 {invalid command name "foo"}} - test coroutine-2.6 {deletion of running coroutine} -body { coroutine foo ::apply [list {} {yield; rename foo {}; yield 1; return 2}] list [foo] [catch foo msg] $msg @@ -341,7 +319,6 @@ test coroutine-3.1 {info level computation} -setup { rename a {} rename b {} } -result {1 1 1} - test coroutine-3.2 {info frame computation} -setup { proc a {} {while 1 {yield [info frame]}} proc b {} foo @@ -354,7 +331,6 @@ test coroutine-3.2 {info frame computation} -setup { rename a {} rename b {} } -result 1 - test coroutine-3.3 {info coroutine} -setup { proc a {} {info coroutine} proc b {} a @@ -364,7 +340,6 @@ test coroutine-3.3 {info coroutine} -setup { rename a {} rename b {} } -result {} - test coroutine-3.4 {info coroutine} -setup { proc a {} {info coroutine} proc b {} a @@ -374,7 +349,6 @@ test coroutine-3.4 {info coroutine} -setup { rename a {} rename b {} } -result ::foo - test coroutine-3.5 {info coroutine} -setup { proc a {} {info coroutine} proc b {} {rename [info coroutine] {}; a} @@ -385,7 +359,6 @@ test coroutine-3.5 {info coroutine} -setup { rename b {} } -result {} - test coroutine-4.1 {bug #2093188} -setup { proc foo {} { set v 1 @@ -404,7 +377,6 @@ test coroutine-4.1 {bug #2093188} -setup { rename bar {} unset ::res } -result {{} 3 {{v {} write} {v {} write} {v {} unset}}} - test coroutine-4.2 {bug #2093188} -setup { proc foo {} { set v 1 @@ -424,7 +396,6 @@ test coroutine-4.2 {bug #2093188} -setup { rename bar {} unset ::res } -result {{} 3 {{v {} read} {v {} unset}}} - test coroutine-4.3 {bug #2093947} -setup { proc foo {} { set v 1 @@ -472,7 +443,6 @@ test coroutine-5.1 {right numLevels on coro return} -constraints {testnrelevels} set base [getNumLevel] lappend res [relativeLevel $base] eval {coroutine a foo} - # back to base level lappend res [relativeLevel $base] a @@ -491,7 +461,6 @@ test coroutine-5.1 {right numLevels on coro return} -constraints {testnrelevels} rename relativeLevel {} unset res } -result {0 0 0 0 0 0} - test coroutine-5.2 {right numLevels within coro} -constraints {testnrelevels} \ -setup { proc nestedYield {{val {}}} { @@ -529,7 +498,7 @@ test coroutine-5.2 {right numLevels within coro} -constraints {testnrelevels} \ rename relativeLevel {} unset res } -result {0 0 0 0} - + unset lambda if {[testConstraint testnrelevels]} { @@ -540,5 +509,8 @@ if {[testConstraint testnrelevels]} { # cleanup ::tcltest::cleanupTests - return + +# Local-Variables: +# mode: tcl +# End: -- cgit v0.12 From 34a2da49423f4a5836b9b4c6acd2f4f2b11f02ae Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 7 Sep 2009 14:47:16 +0000 Subject: Added another test case, "known bug" because of [Bug 2314561] incompleteness --- tests/coroutine.test | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/coroutine.test b/tests/coroutine.test index 9b26e09..b3ae02a 100644 --- a/tests/coroutine.test +++ b/tests/coroutine.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: coroutine.test,v 1.4 2009/09/07 09:43:32 dkf Exp $ +# RCS: @(#) $Id: coroutine.test,v 1.5 2009/09/07 14:47:16 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -277,9 +277,13 @@ test coroutine-1.12 {proc as coroutine} -setup { rename moo {} rename foo {} } -result {16 24} -test coroutine-1.13 {subst as coroutine} { - list [coroutine foo subst {>>[yield a],[yield b]<<}] [foo x] [foo y] +test coroutine-1.13 {subst as coroutine: literal} { + list [coroutine foo eval {subst {>>[yield a],[yield b]<<}}] [foo x] [foo y] } {a b >>x,y<<} +test coroutine-1.14 {subst as coroutine: in variable} knownBug { + set pattern {>>[yield c],[yield d]<<} + list [coroutine foo eval {subst $pattern}] [foo p] [foo q] +} {c d >>p,q<<} test coroutine-2.1 {self deletion on return} -body { coroutine foo set x 3 @@ -511,6 +515,6 @@ if {[testConstraint testnrelevels]} { return -# Local-Variables: +# Local Variables: # mode: tcl # End: -- cgit v0.12 From 71c8cdedc9efe9c3ee31c2592cbd4cc63c6472b0 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 7 Sep 2009 19:59:59 +0000 Subject: * generic/tclParse.c Corrected line counting error in multi-command * tests/into.test: script substitutions. [Bug 2850901]. --- ChangeLog | 5 +++++ generic/tclParse.c | 4 ++++ tests/info.test | 7 ++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3ada763..ead2f52 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-09-07 Don Porter + + * generic/tclParse.c Corrected line counting error in multi-command + * tests/into.test: script substitutions. [Bug 2850901]. + 2009-09-07 Daniel Steffen * generic/tclExecute.c: fix potential uninitialized variable use and diff --git a/generic/tclParse.c b/generic/tclParse.c index efb4422..939c5d1 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -2289,6 +2289,10 @@ TclSubstTokens( theline = line + adjust; code = TclEvalEx(interp, tokenPtr->start+1, tokenPtr->size-2, 0, theline, clNextOuter, outerScript); + + TclAdvanceLines(&line, tokenPtr->start+1, + tokenPtr->start + tokenPtr->size - 1); + /* * Restore flag reset by nested eval for future bracketed * commands and their cmdframe setup diff --git a/tests/info.test b/tests/info.test index e538a23..24c966a 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.66 2009/09/04 17:33:12 dgp Exp $ +# RCS: @(#) $Id: info.test,v 1.67 2009/09/07 19:59:59 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1823,6 +1823,11 @@ test info-30.47 {TIP 280 for compiled [subst]} { [dict get [info frame 0] line])} ; # 1823 } YES +test info-30.48 {Bug 2850901} testevalex { + testevalex {return -level 0 [format %s {} +][reduce [info frame 0]]} ; # line 2 of the eval +} {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} + # ------------------------------------------------------------------------- # cleanup -- cgit v0.12 From 5a6e90c59531d0de0bb1a203987bf1e8972b4ddc Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 10 Sep 2009 21:20:00 +0000 Subject: Correct handling of quoted charset names. [Bug 2849860] --- ChangeLog | 23 ++++++++++++++--------- library/http/http.tcl | 12 +++++++++--- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index ead2f52..4620b9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,28 +1,33 @@ +2009-09-10 Donal K. Fellows + + * library/http/http.tcl (http::Event): [Bug 2849860]: Handle charset + names in double quotes; some servers like generating them like that. + 2009-09-07 Don Porter - * generic/tclParse.c Corrected line counting error in multi-command - * tests/into.test: script substitutions. [Bug 2850901]. + * generic/tclParse.c: [Bug 2850901]: Corrected line counting error + * tests/into.test: in multi-command script substitutions. 2009-09-07 Daniel Steffen - * generic/tclExecute.c: fix potential uninitialized variable use and + * generic/tclExecute.c: Fix potential uninitialized variable use and * generic/tclFCmd.c: null dereference flagged by clang static * generic/tclProc.c: analyzer. * generic/tclTimer.c: * generic/tclUtf.c: - * generic/tclExecute.c: silence false positives from clang static + * generic/tclExecute.c: Silence false positives from clang static * generic/tclIO.c: analyzer about potential null dereference. * generic/tclScan.c: * generic/tclCompExpr.c: 2009-09-04 Don Porter - * generic/tclCompCmds.c (TclCompileSubstCmd): Added a bytecode - * generic/tclBasic.c: compiler routine for the [subst] command. - * generic/tclCmdMZ.c: This is a partial solution to the need to - * generic/tclCompile.c: NR-enable [subst] since bytecode execution is - * generic/tclCompile.h: already NR-enabled. [Bug 2314561] Two new + * generic/tclCompCmds.c (TclCompileSubstCmd): [Bug 2314561]: + * generic/tclBasic.c: Added a bytecode compiler routine for the + * generic/tclCmdMZ.c: [subst] command. This is a partial solution to + * generic/tclCompile.c: the need to NR-enable [subst] since bytecode + * generic/tclCompile.h: execution is already NR-enabled. Two new * generic/tclExecute.c: bytecode instructions, INST_NOP and * generic/tclInt.h: INST_RETURN_CODE_BRANCH were added to support * generic/tclParse.c: the new routine. INST_RETURN_CODE_BRANCH is diff --git a/library/http/http.tcl b/library/http/http.tcl index 654d8b0..18487fb 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.76 2009/04/19 18:27:59 patthoyts Exp $ +# RCS: @(#) $Id: http.tcl,v 1.77 2009/09/10 21:20:01 dkf Exp $ package require Tcl 8.6 # Keep this in sync with pkgIndex.tcl and with the install directories in @@ -1030,8 +1030,14 @@ proc http::Event {sock token} { content-type { set state(type) [string trim [string tolower $value]] # grab the optional charset information - regexp -nocase {charset\s*=\s*(\S+?);?} \ - $state(type) -> state(charset) + if {[regexp -nocase \ + {charset\s*=\s*\"((?:[^""]|\\\")*)\"} \ + $state(type) -> cs]} { + set state(charset) [string map {{\"} \"} $cs] + } else { + regexp -nocase {charset\s*=\s*(\S+?);?} \ + $state(type) -> state(charset) + } } content-length { set state(totalsize) [string trim $value] -- cgit v0.12 From 483194e14ecdd9a263634d06565c34e6455f31c5 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 10 Sep 2009 21:31:08 +0000 Subject: Correct handling of quoted charset names. [Bug 2849860] --- ChangeLog | 45 +++++++++++++++++++++++++-------------------- library/http/http.tcl | 12 +++++++++--- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 98d7163..56f3fb5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-09-10 Donal K. Fellows + + * library/http/http.tcl (http::Event): [Bug 2849860]: Handle charset + names in double quotes; some servers like generating them like that. + 2009-09-01 Don Porter * library/tcltest/tcltest.tcl: Bump to tcltest 2.3.2 after revision @@ -7,38 +12,38 @@ 2009-08-27 Don Porter - * generic/tclStringObj.c: A few more string overflow cases in - [format]. [Bug 2845535] + * generic/tclStringObj.c: [Bug 2845535]: A few more string + overflow cases in [format]. 2009-08-25 Andreas Kupries - * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, - EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations, - TclEvalObjEx): + * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard) + (EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations) + (TclEvalObjEx): * generic/tclCmdMZ.c (Tcl_SwitchObjCmd, TclListLines): * generic/tclCompCmds.c (*): - * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv, - TclFreeCompileEnv, TclCompileScript): + * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv) + (TclFreeCompileEnv, TclCompileScript): * generic/tclCompile.h (CompileEnv): * generic/tclInt.h (ContLineLoc, Interp): - * generic/tclObj.c (ThreadSpecificData, ContLineLocFree, - TclThreadFinalizeObjects, TclInitObjSubsystem, - TclContinuationsEnter, TclContinuationsEnterDerived, - TclContinuationsCopy, TclContinuationsGet, TclFreeObj): + * generic/tclObj.c (ThreadSpecificData, ContLineLocFree) + (TclThreadFinalizeObjects, TclInitObjSubsystem, TclContinuationsEnter) + (TclContinuationsEnterDerived, TclContinuationsCopy) + (TclContinuationsGet, TclFreeObj): * generic/tclParse.c (TclSubstTokens, Tcl_SubstObj): * generic/tclProc.c (TclCreateProc): * generic/tclVar.c (TclPtrSetVar): * tests/info.test (info-30.0-24): - Extended parser, compiler, and execution with code and attendant - data structures tracking the positions of continuation lines which - are not visible in script Tcl_Obj*'s, to properly account for them - while counting lines for #280. + Extended parser, compiler, and execution with code and attendant data + structures tracking the positions of continuation lines which are not + visible in script Tcl_Obj*'s, to properly account for them while + counting lines for #280. 2009-08-24 Daniel Steffen - * macosx/tclMacOSXNotify.c: fix multiple issues with nested event loops - when CoreFoundation notifier is running in embedded mode. (fixes + * macosx/tclMacOSXNotify.c: Fix multiple issues with nested event loops + when CoreFoundation notifier is running in embedded mode. (Fixes problems in TkAqua Cocoa reported by Youness Alaoui on tcl-mac) 2009-08-21 Don Porter @@ -48,10 +53,10 @@ 2009-08-20 Don Porter - * generic/tclFileName.c: Correct result from [glob */test] when * - matches something like ~foo. [Bug 2837800] + * generic/tclFileName.c: [Bug 2837800]: Get the correct result from + [glob */test] when * matches something like ~foo. - * generic/tclPathObj.c: [Bug 2806250] Prevent the storage of strings + * generic/tclPathObj.c: [Bug 2806250]: Prevent the storage of strings starting with ~ in the "tail" part (normPathPtr field) of the path intrep when PATHFLAGS != 0. This establishes the assumptions relied on elsewhere that the name stored there is a relative path. Also diff --git a/library/http/http.tcl b/library/http/http.tcl index 5dbce3c..105f449 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.67.2.6 2009/04/09 17:05:39 dgp Exp $ +# RCS: @(#) $Id: http.tcl,v 1.67.2.7 2009/09/10 21:31:08 dkf Exp $ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories in @@ -1033,8 +1033,14 @@ proc http::Event {sock token} { content-type { set state(type) [string trim [string tolower $value]] # grab the optional charset information - regexp -nocase {charset\s*=\s*(\S+?);?} \ - $state(type) -> state(charset) + if {[regexp -nocase \ + {charset\s*=\s*\"((?:[^""]|\\\")*)\"} \ + $state(type) -> cs]} { + set state(charset) [string map {{\"} \"} $cs] + } else { + regexp -nocase {charset\s*=\s*(\S+?);?} \ + $state(type) -> state(charset) + } } content-length { set state(totalsize) [string trim $value] -- cgit v0.12 From 3c39dee3691e1c2f13a57ed6623fb0064a4a9351 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 11 Sep 2009 15:08:20 +0000 Subject: * library/http/http.tcl: Bump to http 2.7.4 to account for * library/http/pkgIndex.tcl: [Bug 2849860] fix. * unix/Makefile.in: * win/Makefile.in: --- ChangeLog | 7 +++++++ library/http/http.tcl | 4 ++-- library/http/pkgIndex.tcl | 2 +- unix/Makefile.in | 6 +++--- win/Makefile.in | 6 +++--- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 56f3fb5..84cb6ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-09-11 Don Porter + + * library/http/http.tcl: Bump to http 2.7.4 to account for + * library/http/pkgIndex.tcl: [Bug 2849860] fix. + * unix/Makefile.in: + * win/Makefile.in: + 2009-09-10 Donal K. Fellows * library/http/http.tcl (http::Event): [Bug 2849860]: Handle charset diff --git a/library/http/http.tcl b/library/http/http.tcl index 105f449..e615f58 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,12 +8,12 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.67.2.7 2009/09/10 21:31:08 dkf Exp $ +# RCS: @(#) $Id: http.tcl,v 1.67.2.8 2009/09/11 15:08:20 dgp Exp $ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories in # Makefiles -package provide http 2.7.3 +package provide http 2.7.4 namespace eval http { # Allow resourcing to not clobber existing data diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 07724d3..315e0cd 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,4 +1,4 @@ # Tcl package index file, version 1.1 if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.7.3 [list tclPkgSetup $dir http 2.7.3 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +package ifneeded http 2.7.4 [list tclPkgSetup $dir http 2.7.3 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] diff --git a/unix/Makefile.in b/unix/Makefile.in index 4806b6a..82de682 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.229.2.17 2009/09/01 14:13:02 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.229.2.18 2009/09/11 15:08:20 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -786,8 +786,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs do \ $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \ done; - @echo "Installing package http 2.7.3 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.3.tm; + @echo "Installing package http 2.7.4 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.4.tm; @echo "Installing library opt0.4 directory"; @for i in $(TOP_DIR)/library/opt/*.tcl ; \ do \ diff --git a/win/Makefile.in b/win/Makefile.in index ea147e4..8e0bc21 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.124.2.11 2009/09/01 14:13:02 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.124.2.12 2009/09/11 15:08:20 dgp Exp $ VERSION = @TCL_VERSION@ @@ -635,8 +635,8 @@ install-libraries: libraries install-tzdata install-msgs do \ $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \ done; - @echo "Installing package http 2.7.3 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.3.tm; + @echo "Installing package http 2.7.4 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.4.tm; @echo "Installing library opt0.4 directory"; @for j in $(ROOT_DIR)/library/opt/*.tcl; \ do \ -- cgit v0.12 From 8bfbb0cd8dbc0d85beef1db77403d7c60a39df65 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 11 Sep 2009 15:45:19 +0000 Subject: Clean up http tokens properly. --- ChangeLog | 5 ++ tests/http.test | 269 ++++++++++++++++++++++++++++++++++---------------------- 2 files changed, 167 insertions(+), 107 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4620b9f..a597ccc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-09-11 Donal K. Fellows + + * tests/http.test: Added in cleaning up of http tokens for each test + to reduce amount of global-variable pollution. + 2009-09-10 Donal K. Fellows * library/http/http.tcl (http::Event): [Bug 2849860]: Handle charset diff --git a/tests/http.test b/tests/http.test index 2516a48..a62f1c1 100644 --- a/tests/http.test +++ b/tests/http.test @@ -1,23 +1,20 @@ # Commands covered: http::config, http::geturl, http::wait, http::reset # # This file contains a collection of tests for the http script library. -# Sourcing this file into Tcl runs the tests and -# generates output for errors. No output means no errors were found. +# Sourcing this file into Tcl runs the tests and generates output for errors. +# No output means no errors were found. # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. # Copyright (c) 1998-2000 by Ajuba Solutions. # -# See the file "license.terms" for information on usage and redistribution -# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# -# RCS: @(#) $Id: http.test,v 1.53 2009/06/24 15:17:40 dgp Exp $ +# RCS: @(#) $Id: http.test,v 1.54 2009/09/11 15:45:19 dkf Exp $ -if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest 2 - namespace import -force ::tcltest::* -} +package require tcltest 2 +namespace import -force ::tcltest::* if {[catch {package require http 2} version]} { if {[info exists http2]} { @@ -81,7 +78,7 @@ if {[info commands testthread] == "testthread" && [file exists $httpdFile]} { set port [lindex [fconfigure $listen -sockname] 2] } } - + test http-1.1 {http::config} { http::config -useragent UserAgent http::config @@ -101,34 +98,37 @@ test http-1.4 {http::config} { http::config {*}$savedconf set x } {-accept */* -proxyfilter myFilter -proxyhost nowhere.come -proxyport 8080 -urlencoding iso8859-1 -useragent {Tcl Test Suite}} -test http-1.5 {http::config} { - list [catch {http::config -proxyhost {} -junk 8080} msg] $msg -} {1 {Unknown option -junk, must be: -accept, -proxyfilter, -proxyhost, -proxyport, -urlencoding, -useragent}} -test http-1.6 {http::config} { +test http-1.5 {http::config} -returnCodes error -body { + http::config -proxyhost {} -junk 8080 +} -result {Unknown option -junk, must be: -accept, -proxyfilter, -proxyhost, -proxyport, -urlencoding, -useragent} +test http-1.6 {http::config} -setup { + set oldenc [http::config -urlencoding] +} -body { set enc [list [http::config -urlencoding]] http::config -urlencoding iso8859-1 lappend enc [http::config -urlencoding] - http::config -urlencoding [lindex $enc 0] - set enc -} {utf-8 iso8859-1} +} -cleanup { + http::config -urlencoding $oldenc +} -result {utf-8 iso8859-1} test http-2.1 {http::reset} { catch {http::reset http#1} } 0 -test http-3.1 {http::geturl} { - list [catch {http::geturl -bogus flag} msg] $msg -} {1 {Unknown option flag, can be: -binary, -blocksize, -channel, -command, -handler, -headers, -keepalive, -method, -myaddr, -progress, -protocol, -query, -queryblocksize, -querychannel, -queryprogress, -strict, -timeout, -type, -validate}} -test http-3.2 {http::geturl} { - catch {http::geturl http:junk} err - set err -} {Unsupported URL: http:junk} +test http-3.1 {http::geturl} -returnCodes error -body { + http::geturl -bogus flag +} -result {Unknown option flag, can be: -binary, -blocksize, -channel, -command, -handler, -headers, -keepalive, -method, -myaddr, -progress, -protocol, -query, -queryblocksize, -querychannel, -queryprogress, -strict, -timeout, -type, -validate} +test http-3.2 {http::geturl} -returnCodes error -body { + http::geturl http:junk +} -result {Unsupported URL: http:junk} set url //[info hostname]:$port set badurl //[info hostname]:6666 -test http-3.3 {http::geturl} { +test http-3.3 {http::geturl} -body { set token [http::geturl $url] http::data $token -} "HTTP/1.0 TEST +} -cleanup { + http::cleanup $token +} -result "HTTP/1.0 TEST

Hello, World!

GET /

" @@ -138,10 +138,12 @@ set fullurl http://user:pass@[info hostname]:$port/a/b/c set binurl //[info hostname]:$port/binary set posturl //[info hostname]:$port/post set badposturl //[info hostname]:$port/droppost -test http-3.4 {http::geturl} { +test http-3.4 {http::geturl} -body { set token [http::geturl $url] http::data $token -} "HTTP/1.0 TEST +} -cleanup { + http::cleanup $token +} -result "HTTP/1.0 TEST

Hello, World!

GET $tail

" @@ -149,35 +151,43 @@ proc selfproxy {host} { global port return [list [info hostname] $port] } -test http-3.5 {http::geturl} { +test http-3.5 {http::geturl} -body { http::config -proxyfilter selfproxy set token [http::geturl $url] - http::config -proxyfilter http::ProxyRequired http::data $token -} "HTTP/1.0 TEST +} -cleanup { + http::config -proxyfilter http::ProxyRequired + http::cleanup $token +} -result "HTTP/1.0 TEST

Hello, World!

GET http:$url

" -test http-3.6 {http::geturl} { +test http-3.6 {http::geturl} -body { http::config -proxyfilter bogus set token [http::geturl $url] - http::config -proxyfilter http::ProxyRequired http::data $token -} "HTTP/1.0 TEST +} -cleanup { + http::config -proxyfilter http::ProxyRequired + http::cleanup $token +} -result "HTTP/1.0 TEST

Hello, World!

GET $tail

" -test http-3.7 {http::geturl} { +test http-3.7 {http::geturl} -body { set token [http::geturl $url -headers {Pragma no-cache}] http::data $token -} "HTTP/1.0 TEST +} -cleanup { + http::cleanup $token +} -result "HTTP/1.0 TEST

Hello, World!

GET $tail

" -test http-3.8 {http::geturl} { +test http-3.8 {http::geturl} -body { set token [http::geturl $url -query Name=Value&Foo=Bar -timeout 2000] http::data $token -} "HTTP/1.0 TEST +} -cleanup { + http::cleanup $token +} -result "HTTP/1.0 TEST

Hello, World!

POST $tail

Query

@@ -186,11 +196,13 @@ test http-3.8 {http::geturl} {
Foo
Bar
" -test http-3.9 {http::geturl} { +test http-3.9 {http::geturl} -body { set token [http::geturl $url -validate 1] http::code $token -} "HTTP/1.0 200 OK" -test http-3.10 {http::geturl queryprogress} { +} -cleanup { + http::cleanup $token +} -result "HTTP/1.0 200 OK" +test http-3.10 {http::geturl queryprogress} -setup { set query foo=bar set sep "" set i 0 @@ -200,7 +212,7 @@ test http-3.10 {http::geturl queryprogress} { append query $sep$query set sep & } - +} -body { proc postProgress {token x y} { global postProgress lappend postProgress $y @@ -210,8 +222,10 @@ test http-3.10 {http::geturl queryprogress} { -queryprogress postProgress -queryblocksize 16384] http::wait $t list [http::status $t] [string length $query] $postProgress [http::data $t] -} {ok 122879 {16384 32768 49152 65536 81920 98304 114688 122879} {Got 122879 bytes}} -test http-3.11 {http::geturl querychannel with -command} { +} -cleanup { + http::cleanup $t +} -result {ok 122879 {16384 32768 49152 65536 81920 98304 114688 122879} {Got 122879 bytes}} +test http-3.11 {http::geturl querychannel with -command} -setup { set query foo=bar set sep "" set i 0 @@ -222,8 +236,8 @@ test http-3.11 {http::geturl querychannel with -command} { set sep & } set file [makeFile $query outdata] +} -body { set fp [open $file] - proc asyncCB {token} { global postResult lappend postResult [http::data $token] @@ -232,7 +246,6 @@ test http-3.11 {http::geturl querychannel with -command} { set t [http::geturl $posturl -querychannel $fp] http::wait $t set testRes [list [http::status $t] [string length $query] [http::data $t]] - # Now do async http::cleanup $t close $fp @@ -241,17 +254,17 @@ test http-3.11 {http::geturl querychannel with -command} { set postResult [list PostStart] http::wait $t close $fp - lappend testRes [http::status $t] $postResult +} -cleanup { removeFile outdata - set testRes -} {ok 122879 {Got 122880 bytes} ok {PostStart {Got 122880 bytes}}} + http::cleanup $t +} -result {ok 122879 {Got 122880 bytes} ok {PostStart {Got 122880 bytes}}} # On Linux platforms when the client and server are on the same host, the # client is unable to read the server's response one it hits the write error. # The status is "eof". # On Windows, the http::wait procedure gets a "connection reset by peer" error # while reading the reply. -test http-3.12 {http::geturl querychannel with aborted request} {nonPortable} { +test http-3.12 {http::geturl querychannel with aborted request} -setup { set query foo=bar set sep "" set i 0 @@ -262,8 +275,8 @@ test http-3.12 {http::geturl querychannel with aborted request} {nonPortable} { set sep & } set file [makeFile $query outdata] +} -constraints {nonPortable} -body { set fp [open $file] - proc asyncCB {token} { global postResult lappend postResult [http::data $token] @@ -284,10 +297,11 @@ test http-3.12 {http::geturl querychannel with aborted request} {nonPortable} { puts $::errorInfo error $err } - - removeFile outdata list [http::status $t] [http::code $t] -} {ok {HTTP/1.0 200 Data follows}} +} -cleanup { + removeFile outdata + http::cleanup $t +} -result {ok {HTTP/1.0 200 Data follows}} test http-3.13 {http::geturl socket leak test} { set chanCount [llength [file channels]] for {set i 0} {$i < 3} {incr i} { @@ -297,10 +311,12 @@ test http-3.13 {http::geturl socket leak test} { # No extra channels should be taken expr {[llength [file channels]] == $chanCount} } 1 -test http-3.14 "http::geturl $fullurl" { +test http-3.14 "http::geturl $fullurl" -body { set token [http::geturl $fullurl -validate 1] http::code $token -} "HTTP/1.0 200 OK" +} -cleanup { + http::cleanup $token +} -result "HTTP/1.0 200 OK" test http-3.15 {http::geturl parse failures} -body { http::geturl "{invalid}:url" } -returnCodes error -result {Unsupported URL: {invalid}:url} @@ -338,6 +354,7 @@ test http-3.25 {http::meta} -setup { array set m [http::meta $token] lsort [array names m] } -cleanup { + http::cleanup $token unset -nocomplain m token } -result {Content-Length Content-Type Date} test http-3.26 {http::meta} -setup { @@ -347,61 +364,77 @@ test http-3.26 {http::meta} -setup { array set m [http::meta $token] lsort [array names m] } -cleanup { + http::cleanup $token unset -nocomplain m token } -result {Content-Length Content-Type Date X-Check} -test http-4.1 {http::Event} { +test http-4.1 {http::Event} -body { set token [http::geturl $url -keepalive 0] upvar #0 $token data array set meta $data(meta) expr {($data(totalsize) == $meta(Content-Length))} -} 1 -test http-4.2 {http::Event} { +} -cleanup { + http::cleanup $token +} -result 1 +test http-4.2 {http::Event} -body { set token [http::geturl $url] upvar #0 $token data array set meta $data(meta) string compare $data(type) [string trim $meta(Content-Type)] -} 0 -test http-4.3 {http::Event} { +} -cleanup { + http::cleanup $token +} -result 0 +test http-4.3 {http::Event} -body { set token [http::geturl $url] http::code $token -} {HTTP/1.0 200 Data follows} -test http-4.4 {http::Event} { +} -cleanup { + http::cleanup $token +} -result {HTTP/1.0 200 Data follows} +test http-4.4 {http::Event} -setup { set testfile [makeFile "" testfile] +} -body { set out [open $testfile w] set token [http::geturl $url -channel $out] close $out set in [open $testfile] set x [read $in] - close $in +} -cleanup { + catch {close $in} + catch {close $out} removeFile $testfile - set x -} "HTTP/1.0 TEST + http::cleanup $token +} -result "HTTP/1.0 TEST

Hello, World!

GET $tail

" -test http-4.5 {http::Event} { +test http-4.5 {http::Event} -setup { set testfile [makeFile "" testfile] +} -body { set out [open $testfile w] fconfigure $out -translation lf set token [http::geturl $url -channel $out] close $out upvar #0 $token data - removeFile $testfile expr {$data(currentsize) == $data(totalsize)} -} 1 -test http-4.6 {http::Event} { +} -cleanup { + removeFile $testfile + http::cleanup $token +} -result 1 +test http-4.6 {http::Event} -setup { set testfile [makeFile "" testfile] +} -body { set out [open $testfile w] set token [http::geturl $binurl -channel $out] close $out set in [open $testfile] fconfigure $in -translation binary - set x [read $in] - close $in + read $in +} -cleanup { + catch {close $in} + catch {close $out} removeFile $testfile - set x -} "$bindata[string trimleft $binurl /]" + http::cleanup $token +} -result "$bindata[string trimleft $binurl /]" proc myProgress {token total current} { global progress httpLog if {[info exists httpLog] && $httpLog} { @@ -414,46 +447,60 @@ if 0 { set httpLog 1 test http-4.6.1 {http::Event} knownBug { set token [http::geturl $url -blocksize 50 -progress myProgress] - set progress + return $progress } {111 111} } -test http-4.7 {http::Event} { +test http-4.7 {http::Event} -body { set token [http::geturl $url -keepalive 0 -progress myProgress] - set progress -} {111 111} -test http-4.8 {http::Event} { + return $progress +} -cleanup { + http::cleanup $token +} -result {111 111} +test http-4.8 {http::Event} -body { set token [http::geturl $url] http::status $token -} {ok} -test http-4.9 {http::Event} { +} -cleanup { + http::cleanup $token +} -result {ok} +test http-4.9 {http::Event} -body { set token [http::geturl $url -progress myProgress] http::code $token -} {HTTP/1.0 200 Data follows} -test http-4.10 {http::Event} { +} -cleanup { + http::cleanup $token +} -result {HTTP/1.0 200 Data follows} +test http-4.10 {http::Event} -body { set token [http::geturl $url -progress myProgress] http::size $token -} {111} +} -cleanup { + http::cleanup $token +} -result {111} # Timeout cases # Short timeout to working server (the test server). This lets us try a # reset during the connection. -test http-4.11 {http::Event} { - set token [http::geturl $url -timeout 1 -keepalive 0 -command {#}] +test http-4.11 {http::Event} -body { + set token [http::geturl $url -timeout 1 -keepalive 0 -command \#] http::reset $token http::status $token -} {reset} +} -cleanup { + http::cleanup $token +} -result {reset} # Longer timeout with reset. -test http-4.12 {http::Event} { - set token [http::geturl $url/?timeout=10 -keepalive 0 -command {#}] +test http-4.12 {http::Event} -body { + set token [http::geturl $url/?timeout=10 -keepalive 0 -command \#] http::reset $token http::status $token -} {reset} +} -cleanup { + http::cleanup $token +} -result {reset} # Medium timeout to working server that waits even longer. The timeout # hits while waiting for a reply. -test http-4.13 {http::Event} { - set token [http::geturl $url?timeout=30 -keepalive 0 -timeout 10 -command {#}] +test http-4.13 {http::Event} -body { + set token [http::geturl $url?timeout=30 -keepalive 0 -timeout 10 -command \#] http::wait $token http::status $token -} {timeout} +} -cleanup { + http::cleanup $token +} -result {timeout} # Longer timeout to good host, bad port, gets an error after the # connection "completes" but the socket is bad. test http-4.14 {http::Event} -body { @@ -464,7 +511,9 @@ test http-4.14 {http::Event} -body { http::wait $token http::status $token # error code varies among platforms. -} -returnCodes 1 -match regexp -result {(connect failed|couldn't open socket)} +} -returnCodes 1 -match regexp -cleanup { + catch {http::cleanup $token} +} -result {(connect failed|couldn't open socket)} # Bogus host test http-4.15 {http::Event} -body { # This test may fail if you use a proxy server. That is to be @@ -473,6 +522,8 @@ test http-4.15 {http::Event} -body { http::wait $token http::status $token # error codes vary among platforms. +} -cleanup { + http::cleanup $token } -returnCodes 1 -match glob -result "couldn't open socket*" test http-5.1 {http::formatQuery} { @@ -493,14 +544,16 @@ test http-5.5 {http::formatQuery} { set res } {name1=~bwelch&name2=%a1%a2%a2} -test http-6.1 {http::ProxyRequired} { +test http-6.1 {http::ProxyRequired} -body { http::config -proxyhost [info hostname] -proxyport $port set token [http::geturl $url] http::wait $token - http::config -proxyhost {} -proxyport {} upvar #0 $token data set data(body) -} "HTTP/1.0 TEST +} -cleanup { + http::config -proxyhost {} -proxyport {} + http::cleanup $token +} -result "HTTP/1.0 TEST

Hello, World!

GET http:$url

" @@ -513,24 +566,26 @@ test http-7.2 {http::mapReply} { # so make sure this gets converted to utf-8 then urlencoded. http::mapReply "\u2208" } {%e2%88%88} -test http-7.3 {http::formatQuery} { +test http-7.3 {http::formatQuery} -setup { set enc [http::config -urlencoding] +} -returnCodes error -body { # this would be reverting to http <=2.4 behavior http::config -urlencoding "" - set res [list [catch {http::mapReply "\u2208"} msg] $msg] + http::mapReply "\u2208" +} -cleanup { http::config -urlencoding $enc - set res -} [list 1 "can't read \"formMap(\u2208)\": no such element in array"] -test http-7.4 {http::formatQuery} { +} -result "can't read \"formMap(\u2208)\": no such element in array" +test http-7.4 {http::formatQuery} -setup { set enc [http::config -urlencoding] +} -body { # this would be reverting to http <=2.4 behavior w/o errors # (unknown chars become '?') http::config -urlencoding "iso8859-1" - set res [http::mapReply "\u2208"] + http::mapReply "\u2208" +} -cleanup { http::config -urlencoding $enc - set res -} {%3f} - +} -result {%3f} + # cleanup catch {unset url} catch {unset badurl} -- cgit v0.12 From c30ce8dcf495febef9d5111ae53ac2a614e593c1 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 11 Sep 2009 20:13:27 +0000 Subject: * generic/tclBasic.c: Completed the NR-enabling of [subst]. * generic/tclCmdMZ.c: [Bug 2314561]. * generic/tclCompCmds.c: * generic/tclCompile.c: * generic/tclInt.h: * tests/coroutine.test: * tests/parse.test: --- ChangeLog | 10 ++++ generic/tclBasic.c | 4 +- generic/tclCmdMZ.c | 22 +++---- generic/tclCompCmds.c | 37 ++++++++---- generic/tclCompile.c | 156 +++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclInt.h | 8 ++- tests/coroutine.test | 4 +- tests/parse.test | 4 +- 8 files changed, 215 insertions(+), 30 deletions(-) diff --git a/ChangeLog b/ChangeLog index a597ccc..b0efb5e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-09-11 Don Porter + + * generic/tclBasic.c: Completed the NR-enabling of [subst]. + * generic/tclCmdMZ.c: [Bug 2314561]. + * generic/tclCompCmds.c: + * generic/tclCompile.c: + * generic/tclInt.h: + * tests/coroutine.test: + * tests/parse.test: + 2009-09-11 Donal K. Fellows * tests/http.test: Added in cleaning up of http tokens for each test diff --git a/generic/tclBasic.c b/generic/tclBasic.c index b5abbc2..7064b86 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.403 2009/09/04 17:33:11 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.404 2009/09/11 20:13:27 dgp Exp $ */ #include "tclInt.h" @@ -213,7 +213,7 @@ static const CmdInfo builtInCmds[] = { {"scan", Tcl_ScanObjCmd, NULL, NULL, 1}, {"set", Tcl_SetObjCmd, TclCompileSetCmd, NULL, 1}, {"split", Tcl_SplitObjCmd, NULL, NULL, 1}, - {"subst", Tcl_SubstObjCmd, TclCompileSubstCmd, NULL, 1}, + {"subst", Tcl_SubstObjCmd, TclCompileSubstCmd, TclNRSubstObjCmd, 1}, {"switch", Tcl_SwitchObjCmd, TclCompileSwitchCmd, TclNRSwitchObjCmd, 1}, {"throw", Tcl_ThrowObjCmd, NULL, NULL, 1}, {"trace", Tcl_TraceObjCmd, NULL, NULL, 1}, diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index a5a2f1b..72b46af 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.192 2009/09/04 17:33:11 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.193 2009/09/11 20:13:27 dgp Exp $ */ #include "tclInt.h" @@ -3419,7 +3419,16 @@ Tcl_SubstObjCmd( int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - Tcl_Obj *resultPtr; + return Tcl_NRCallObjProc(interp, TclNRSubstObjCmd, dummy, objc, objv); +} + +int +TclNRSubstObjCmd( + ClientData dummy, /* Not used. */ + Tcl_Interp *interp, /* Current interpreter. */ + int objc, /* Number of arguments. */ + Tcl_Obj *const objv[]) /* Argument objects. */ +{ int flags; if (objc < 2) { @@ -3431,14 +3440,7 @@ Tcl_SubstObjCmd( if (TclSubstOptions(interp, objc-2, objv+1, &flags) != TCL_OK) { return TCL_ERROR; } - - resultPtr = Tcl_SubstObj(interp, objv[objc-1], flags); - - if (resultPtr == NULL) { - return TCL_ERROR; - } - Tcl_SetObjResult(interp, resultPtr); - return TCL_OK; + return TclNRSubstObj(interp, objv[objc-1], flags); } /* diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 9b33b41..6ec2265 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.156 2009/09/04 23:14:32 dgp Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.157 2009/09/11 20:13:27 dgp Exp $ */ #include "tclInt.h" @@ -3874,14 +3874,9 @@ TclCompileSubstCmd( int numOpts = numArgs - 1; int objc, flags = TCL_SUBST_ALL; Tcl_Obj **objv/*, *toSubst = NULL*/; - Tcl_Parse parse; - Tcl_InterpState state = NULL; Tcl_Token *wordTokenPtr = TokenAfter(parsePtr->tokenPtr); - int breakOffset = 0, count = 0, code = TCL_ERROR; - Tcl_Token *endTokenPtr, *tokenPtr; + int code = TCL_ERROR; DefineLineInformation; /* TIP #280 */ - int bline = mapPtr->loc[eclIndex].line[numArgs]; - SetLineInformation(numArgs); if (numArgs == 0) { return TCL_ERROR; @@ -3925,8 +3920,29 @@ TclCompileSubstCmd( return TCL_ERROR; } - TclSubstParse(interp, /*toSubst,*/ wordTokenPtr[1].start, - wordTokenPtr[1].size, flags, &parse, &state); + SetLineInformation(numArgs); + TclSubstCompile(interp, wordTokenPtr[1].start, wordTokenPtr[1].size, flags, + mapPtr->loc[eclIndex].line[numArgs], envPtr); + +/* TclDecrRefCount(toSubst);*/ + return TCL_OK; +} + +void +TclSubstCompile( + Tcl_Interp *interp, + const char *bytes, + int numBytes, + int flags, + int line, + CompileEnv *envPtr) +{ + Tcl_Token *endTokenPtr, *tokenPtr; + int breakOffset = 0, count = 0, bline = line; + Tcl_Parse parse; + Tcl_InterpState state = NULL; + + TclSubstParse(interp, bytes, numBytes, flags, &parse, &state); for (tokenPtr = parse.tokenPtr, endTokenPtr = tokenPtr + parse.numTokens; tokenPtr < endTokenPtr; tokenPtr = TokenAfter(tokenPtr)) { @@ -4101,7 +4117,6 @@ TclCompileSubstCmd( } Tcl_FreeParse(&parse); -/* TclDecrRefCount(toSubst);*/ if (state != NULL) { Tcl_RestoreInterpState(interp, state); @@ -4113,8 +4128,6 @@ TclCompileSubstCmd( TclUpdateInstInt4AtPc(INST_JUMP4, CurrentOffset(envPtr) - breakOffset, envPtr->codeStart + breakOffset); } - - return TCL_OK; } /* diff --git a/generic/tclCompile.c b/generic/tclCompile.c index b6b270b..3fa57db 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.173 2009/09/04 17:33:11 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.174 2009/09/11 20:13:27 dgp Exp $ */ #include "tclInt.h" @@ -413,6 +413,8 @@ InstructionDesc const tclInstructionTable[] = { * Prototypes for procedures defined later in this file: */ +static ByteCode * CompileSubstObj(Tcl_Interp *interp, Tcl_Obj *objPtr, + int flags); static void DupByteCodeInternalRep(Tcl_Obj *srcPtr, Tcl_Obj *copyPtr); static unsigned char * EncodeCmdLocMap(CompileEnv *envPtr, @@ -422,6 +424,7 @@ static void EnterCmdExtentData(CompileEnv *envPtr, static void EnterCmdStartData(CompileEnv *envPtr, int cmdNumber, int srcOffset, int codeOffset); static void FreeByteCodeInternalRep(Tcl_Obj *objPtr); +static void FreeSubstCodeInternalRep(Tcl_Obj *objPtr); static int GetCmdLocEncodingSize(CompileEnv *envPtr); #ifdef TCL_COMPILE_STATS static void RecordByteCodeStats(ByteCode *codePtr); @@ -453,6 +456,19 @@ const Tcl_ObjType tclByteCodeType = { NULL, /* updateStringProc */ SetByteCodeFromAny /* setFromAnyProc */ }; + +/* + * The structure below defines a bytecode Tcl object type to hold the + * compiled bytecode for the [subst]itution of Tcl values. + */ + +static const Tcl_ObjType substCodeType = { + "substcode", /* name */ + FreeSubstCodeInternalRep, /* freeIntRepProc */ + DupByteCodeInternalRep, /* dupIntRepProc - shared with bytecode */ + NULL, /* updateStringProc */ + NULL, /* setFromAnyProc */ +}; /* *---------------------------------------------------------------------- @@ -859,6 +875,144 @@ TclCleanupByteCode( /* *---------------------------------------------------------------------- * + * TclNRSubstObj -- + * + * Request substitution of a Tcl value by the NR stack. + * + * Results: + * Returns TCL_OK. + * + * Side effects: + * Compiles objPtr into bytecode that performs the substitutions as + * governed by flags and places callbacks on the NR stack to execute + * the bytecode and store the result in the interp. + * + *---------------------------------------------------------------------- + */ + +int +TclNRSubstObj( + Tcl_Interp *interp, + Tcl_Obj *objPtr, + int flags) +{ + ByteCode *codePtr = CompileSubstObj(interp, objPtr, flags); + + /* TODO: Confirm we do not need this. */ + /* Tcl_ResetResult(interp); */ + Tcl_NRAddCallback(interp, NRCallTEBC, INT2PTR(TCL_NR_BC_TYPE), codePtr, + NULL, NULL); + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * + * CompileSubstObj -- + * + * Compile a Tcl value into ByteCode implementing its substitution, + * as governed by flags. + * + * Results: + * A (ByteCode *) is returned pointing to the resulting ByteCode. + * The caller must manage its refCount and arrange for a call to + * TclCleanupByteCode() when the last reference disappears. + * + * Side effects: + * The Tcl_ObjType of objPtr is changed to the "substcode" type, + * and the ByteCode and governing flags value are kept in the internal + * rep for faster operations the next time CompileSubstObj is called + * on the same value. + * + *---------------------------------------------------------------------- + */ + +static ByteCode * +CompileSubstObj( + Tcl_Interp *interp, + Tcl_Obj *objPtr, + int flags) +{ + Interp *iPtr = (Interp *) interp; + ByteCode *codePtr = NULL; + + if (objPtr->typePtr == &substCodeType) { + Namespace *nsPtr = iPtr->varFramePtr->nsPtr; + + codePtr = (ByteCode *) objPtr->internalRep.ptrAndLongRep.ptr; + if (flags != objPtr->internalRep.ptrAndLongRep.value + || ((Interp *) *codePtr->interpHandle != iPtr) + || (codePtr->compileEpoch != iPtr->compileEpoch) + || (codePtr->nsPtr != nsPtr) + || (codePtr->nsEpoch != nsPtr->resolverEpoch) + || (codePtr->localCachePtr != + iPtr->varFramePtr->localCachePtr)) { + FreeSubstCodeInternalRep(objPtr); + } + } + if (objPtr->typePtr != &substCodeType) { + CompileEnv compEnv; + int numBytes; + const char *bytes = Tcl_GetStringFromObj(objPtr, &numBytes); + + /* TODO: Check for more TIP 280 */ + TclInitCompileEnv(interp, &compEnv, bytes, numBytes, NULL, 0); + + TclSubstCompile(interp, bytes, numBytes, flags, 1, &compEnv); + + TclEmitOpcode(INST_DONE, &compEnv); + TclInitByteCodeObj(objPtr, &compEnv); + objPtr->typePtr = &substCodeType; + TclFreeCompileEnv(&compEnv); + codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; + objPtr->internalRep.ptrAndLongRep.ptr = codePtr; + objPtr->internalRep.ptrAndLongRep.value = flags; + if (iPtr->varFramePtr->localCachePtr) { + codePtr->localCachePtr = iPtr->varFramePtr->localCachePtr; + codePtr->localCachePtr->refCount++; + } + /* TODO: Debug printing? */ + } + return codePtr; +} + +/* + *---------------------------------------------------------------------- + * + * FreeSubstCodeInternalRep -- + * + * Part of the substcode Tcl object type implementation. Frees the storage + * associated with a substcode object's internal representation unless its + * code is actively being executed. + * + * Results: + * None. + * + * Side effects: + * The substcode object's internal rep is marked invalid and its code gets + * freed unless the code is actively being executed. In that case the + * cleanup is delayed until the last execution of the code completes. + * + *---------------------------------------------------------------------- + */ + +static void +FreeSubstCodeInternalRep( + register Tcl_Obj *objPtr) /* Object whose internal rep to free. */ +{ + register ByteCode *codePtr = objPtr->internalRep.ptrAndLongRep.ptr; + + codePtr->refCount--; + if (codePtr->refCount <= 0) { + TclCleanupByteCode(codePtr); + } + objPtr->typePtr = NULL; + objPtr->internalRep.otherValuePtr = NULL; +} + +/* + *---------------------------------------------------------------------- + * * TclInitCompileEnv -- * * Initializes a CompileEnv compilation environment structure for the diff --git a/generic/tclInt.h b/generic/tclInt.h index a27b0f4..6f7972f 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.441 2009/09/07 06:20:47 das Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.442 2009/09/11 20:13:27 dgp Exp $ */ #ifndef _TCLINT @@ -2651,6 +2651,7 @@ MODULE_SCOPE Tcl_ObjCmdProc TclNRForObjCmd; MODULE_SCOPE Tcl_ObjCmdProc TclNRForeachCmd; MODULE_SCOPE Tcl_ObjCmdProc TclNRIfObjCmd; MODULE_SCOPE Tcl_ObjCmdProc TclNRSourceObjCmd; +MODULE_SCOPE Tcl_ObjCmdProc TclNRSubstObjCmd; MODULE_SCOPE Tcl_ObjCmdProc TclNRSwitchObjCmd; MODULE_SCOPE Tcl_ObjCmdProc TclNRTryObjCmd; MODULE_SCOPE Tcl_ObjCmdProc TclNRWhileObjCmd; @@ -2846,6 +2847,8 @@ MODULE_SCOPE int TclMarkList(Tcl_Interp *interp, const char *list, MODULE_SCOPE int TclMergeReturnOptions(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[], Tcl_Obj **optionsPtrPtr, int *codePtr, int *levelPtr); +MODULE_SCOPE int TclNRSubstObj(Tcl_Interp *interp, Tcl_Obj *objPtr, + int flags); MODULE_SCOPE int TclNokia770Doubles(); MODULE_SCOPE void TclObjVarErrMsg(Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, const char *operation, @@ -2950,6 +2953,9 @@ MODULE_SCOPE int TclStringMatch(const char *str, int strLen, MODULE_SCOPE int TclStringMatchObj(Tcl_Obj *stringObj, Tcl_Obj *patternObj, int flags); MODULE_SCOPE Tcl_Obj * TclStringObjReverse(Tcl_Obj *objPtr); +MODULE_SCOPE void TclSubstCompile(Tcl_Interp *interp, const char *bytes, + int numBytes, int flags, int line, + struct CompileEnv *envPtr); MODULE_SCOPE int TclSubstOptions(Tcl_Interp *interp, int numOpts, Tcl_Obj *const opts[], int *flagPtr); MODULE_SCOPE void TclSubstParse(Tcl_Interp *interp, const char *bytes, diff --git a/tests/coroutine.test b/tests/coroutine.test index b3ae02a..776dda5 100644 --- a/tests/coroutine.test +++ b/tests/coroutine.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: coroutine.test,v 1.5 2009/09/07 14:47:16 dkf Exp $ +# RCS: @(#) $Id: coroutine.test,v 1.6 2009/09/11 20:13:27 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -280,7 +280,7 @@ test coroutine-1.12 {proc as coroutine} -setup { test coroutine-1.13 {subst as coroutine: literal} { list [coroutine foo eval {subst {>>[yield a],[yield b]<<}}] [foo x] [foo y] } {a b >>x,y<<} -test coroutine-1.14 {subst as coroutine: in variable} knownBug { +test coroutine-1.14 {subst as coroutine: in variable} { set pattern {>>[yield c],[yield d]<<} list [coroutine foo eval {subst $pattern}] [foo p] [foo q] } {c d >>p,q<<} diff --git a/tests/parse.test b/tests/parse.test index b745a97..482c3b8 100644 --- a/tests/parse.test +++ b/tests/parse.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parse.test,v 1.37 2009/09/04 17:33:12 dgp Exp $ +# RCS: @(#) $Id: parse.test,v 1.38 2009/09/11 20:13:27 dgp Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -1048,7 +1048,7 @@ test parse-19.3 {Bug 1115904: recursion limit in Tcl_EvalEx} -setup { interp delete i } -test parse-19.4 {Bug 1115904: recursion limit in Tcl_EvalEx} -setup { +test parse-19.4 {Bug 1115904: recursion limit in Tcl_EvalEx} -constraints knownBug -setup { interp create i i eval {proc {} args {}} interp recursionlimit i 2 -- cgit v0.12 From 251f50f6236ef99b2bf52ce136bb8d31798d86d6 Mon Sep 17 00:00:00 2001 From: das Date: Sat, 12 Sep 2009 06:43:12 +0000 Subject: fix warning --- generic/tclCompile.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 3fa57db..9fa8f6a 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.174 2009/09/11 20:13:27 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.175 2009/09/12 06:43:12 das Exp $ */ #include "tclInt.h" @@ -940,7 +940,7 @@ CompileSubstObj( Namespace *nsPtr = iPtr->varFramePtr->nsPtr; codePtr = (ByteCode *) objPtr->internalRep.ptrAndLongRep.ptr; - if (flags != objPtr->internalRep.ptrAndLongRep.value + if ((unsigned long)flags != objPtr->internalRep.ptrAndLongRep.value || ((Interp *) *codePtr->interpHandle != iPtr) || (codePtr->compileEpoch != iPtr->compileEpoch) || (codePtr->nsPtr != nsPtr) -- cgit v0.12 From b7c880a857b80f8c7e8c5338bf18a0bedd499061 Mon Sep 17 00:00:00 2001 From: ferrieux Date: Wed, 16 Sep 2009 21:17:22 +0000 Subject: Extended ::tcl::unsupported::representation. --- ChangeLog | 4 ++++ generic/tclObj.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index b0efb5e..af6e767 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-09-16 Alexandre Ferrieux + + * generic/tclObj.c: Extended ::tcl::unsupported::representation. + 2009-09-11 Don Porter * generic/tclBasic.c: Completed the NR-enabling of [subst]. diff --git a/generic/tclObj.c b/generic/tclObj.c index 0bdb371..a6621e3 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.156 2009/08/25 21:03:25 andreas_kupries Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.157 2009/09/16 21:17:24 ferrieux Exp $ */ #include "tclInt.h" @@ -4379,18 +4379,56 @@ Tcl_RepresentationCmd( int objc, Tcl_Obj *const objv[]) { + char s_refcount[TCL_INTEGER_SPACE+1]; + char s_tclobj[TCL_INTEGER_SPACE+1]; + char s_intrep[2*TCL_INTEGER_SPACE+3]; +#define TCLOBJ_TRUNCATE_STREP 16 + char s_strep[TCLOBJ_TRUNCATE_STREP+1]; + if (objc != 2) { Tcl_WrongNumArgs(interp, 1, objv, "value"); return TCL_ERROR; } + + /* + value is a bignum with a refcount of 14, object pointer at + 0x12345678 and intrep 0x45671234:0x98765432, strep: "1872361827361287"... + */ + + sprintf(s_refcount,"%d",objv[1]->refCount); + sprintf(s_tclobj,"%p",(void *)objv[1]); + Tcl_AppendResult(interp, + "value is a ", + (objv[1]->typePtr != NULL)?objv[1]->typePtr->name:"pure string", + " with a refcount of ", + s_refcount, + ", object pointer at ", + s_tclobj, + NULL); + + if (objv[1]->typePtr != NULL) { + sprintf(s_intrep,"%p:%p",(void *)objv[1]->internalRep.twoPtrValue.ptr1,(void *)objv[1]->internalRep.twoPtrValue.ptr2); + Tcl_AppendResult(interp, + " and intrep ", + s_intrep, + NULL); + } - if (objv[1]->typePtr == NULL) { - Tcl_AppendResult(interp, "value has no internal representation set", - NULL); + if (objv[1]->bytes != NULL) { + strncpy(s_strep,objv[1]->bytes,TCLOBJ_TRUNCATE_STREP); + s_strep[TCLOBJ_TRUNCATE_STREP]=0; + Tcl_AppendResult(interp, + ", strep: \"", + s_strep, + (objv[1]->length>TCLOBJ_TRUNCATE_STREP)?"\"...":"\".", + NULL); } else { - Tcl_AppendResult(interp, "value has internal representation of ", - objv[1]->typePtr->name, " currently", NULL); + Tcl_AppendResult(interp, + ", no strep.", + NULL); + } + return TCL_OK; } @@ -4399,5 +4437,7 @@ Tcl_RepresentationCmd( * mode: c * c-basic-offset: 4 * fill-column: 78 + * tab-width: 8 + * indent-tabs-mode: nil * End: */ -- cgit v0.12 From 5951ff339f3a77f54758ca0bfc35142130e9041a Mon Sep 17 00:00:00 2001 From: das Date: Thu, 17 Sep 2009 08:37:03 +0000 Subject: fix string buffer sizes for pointer printing fix whitespace, formatting & style to match codebase conventions --- generic/tclObj.c | 72 +++++++++++++++++++++++--------------------------------- 1 file changed, 30 insertions(+), 42 deletions(-) diff --git a/generic/tclObj.c b/generic/tclObj.c index a6621e3..adcf131 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.157 2009/09/16 21:17:24 ferrieux Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.158 2009/09/17 08:37:03 das Exp $ */ #include "tclInt.h" @@ -4379,56 +4379,44 @@ Tcl_RepresentationCmd( int objc, Tcl_Obj *const objv[]) { - char s_refcount[TCL_INTEGER_SPACE+1]; - char s_tclobj[TCL_INTEGER_SPACE+1]; - char s_intrep[2*TCL_INTEGER_SPACE+3]; -#define TCLOBJ_TRUNCATE_STREP 16 - char s_strep[TCLOBJ_TRUNCATE_STREP+1]; + char refcountBuffer[TCL_INTEGER_SPACE+1]; + char objPtrBuffer[TCL_INTEGER_SPACE+3]; + char internalRepBuffer[2*(TCL_INTEGER_SPACE+3)+1]; +#define TCLOBJ_TRUNCATE_STRINGREP 16 + char stringRepBuffer[TCLOBJ_TRUNCATE_STRINGREP+1]; if (objc != 2) { Tcl_WrongNumArgs(interp, 1, objv, "value"); return TCL_ERROR; } - /* - value is a bignum with a refcount of 14, object pointer at - 0x12345678 and intrep 0x45671234:0x98765432, strep: "1872361827361287"... - */ - - sprintf(s_refcount,"%d",objv[1]->refCount); - sprintf(s_tclobj,"%p",(void *)objv[1]); - Tcl_AppendResult(interp, - "value is a ", - (objv[1]->typePtr != NULL)?objv[1]->typePtr->name:"pure string", - " with a refcount of ", - s_refcount, - ", object pointer at ", - s_tclobj, - NULL); - - if (objv[1]->typePtr != NULL) { - sprintf(s_intrep,"%p:%p",(void *)objv[1]->internalRep.twoPtrValue.ptr1,(void *)objv[1]->internalRep.twoPtrValue.ptr2); - Tcl_AppendResult(interp, - " and intrep ", - s_intrep, - NULL); - } + /* + * value is a bignum with a refcount of 14, object pointer at + * 0x12345678, internal representation 0x45671234:0x98765432, + * string representation "1872361827361287" + */ - if (objv[1]->bytes != NULL) { - strncpy(s_strep,objv[1]->bytes,TCLOBJ_TRUNCATE_STREP); - s_strep[TCLOBJ_TRUNCATE_STREP]=0; - Tcl_AppendResult(interp, - ", strep: \"", - s_strep, - (objv[1]->length>TCLOBJ_TRUNCATE_STREP)?"\"...":"\".", - NULL); + sprintf(refcountBuffer, "%d", objv[1]->refCount); + sprintf(objPtrBuffer, "%p", (void *)objv[1]); + Tcl_AppendResult(interp, "value is a ", objv[1]->typePtr ? + objv[1]->typePtr->name : "pure string", " with a refcount of ", + refcountBuffer, ", object pointer at ", objPtrBuffer, NULL); + if (objv[1]->typePtr) { + sprintf(internalRepBuffer, "%p:%p", + (void *)objv[1]->internalRep.twoPtrValue.ptr1, + (void *)objv[1]->internalRep.twoPtrValue.ptr2); + Tcl_AppendResult(interp, ", internal representation ", + internalRepBuffer, NULL); + } + if (objv[1]->bytes) { + strncpy(stringRepBuffer, objv[1]->bytes, TCLOBJ_TRUNCATE_STRINGREP); + stringRepBuffer[TCLOBJ_TRUNCATE_STRINGREP] = 0; + Tcl_AppendResult(interp, ", string representation \"", + stringRepBuffer, objv[1]->length > TCLOBJ_TRUNCATE_STRINGREP ? + "\"..." : "\".", NULL); } else { - Tcl_AppendResult(interp, - ", no strep.", - NULL); - + Tcl_AppendResult(interp, ", no string representation.", NULL); } - return TCL_OK; } -- cgit v0.12 From ae8aeadf52da208b9b4d7d603bdcdb53b615951a Mon Sep 17 00:00:00 2001 From: das Date: Thu, 17 Sep 2009 08:37:39 +0000 Subject: typo --- generic/tclObj.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclObj.c b/generic/tclObj.c index adcf131..73fcbcd 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.158 2009/09/17 08:37:03 das Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.159 2009/09/17 08:37:39 das Exp $ */ #include "tclInt.h" @@ -4381,7 +4381,7 @@ Tcl_RepresentationCmd( { char refcountBuffer[TCL_INTEGER_SPACE+1]; char objPtrBuffer[TCL_INTEGER_SPACE+3]; - char internalRepBuffer[2*(TCL_INTEGER_SPACE+3)+1]; + char internalRepBuffer[2*(TCL_INTEGER_SPACE+2)+1]; #define TCLOBJ_TRUNCATE_STRINGREP 16 char stringRepBuffer[TCLOBJ_TRUNCATE_STRINGREP+1]; -- cgit v0.12 From cfef008bffcfc7b272e5fd62ff6f62f333e0c4d3 Mon Sep 17 00:00:00 2001 From: das Date: Thu, 17 Sep 2009 08:39:40 +0000 Subject: need to remember to save before commit... --- generic/tclObj.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclObj.c b/generic/tclObj.c index 73fcbcd..2bbc009 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.159 2009/09/17 08:37:39 das Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.160 2009/09/17 08:39:40 das Exp $ */ #include "tclInt.h" @@ -4381,7 +4381,7 @@ Tcl_RepresentationCmd( { char refcountBuffer[TCL_INTEGER_SPACE+1]; char objPtrBuffer[TCL_INTEGER_SPACE+3]; - char internalRepBuffer[2*(TCL_INTEGER_SPACE+2)+1]; + char internalRepBuffer[2*(TCL_INTEGER_SPACE+2)+2]; #define TCLOBJ_TRUNCATE_STRINGREP 16 char stringRepBuffer[TCLOBJ_TRUNCATE_STRINGREP+1]; -- cgit v0.12 From 76a7b7436a2b6d136bd796fbc2dd53cd3f4385dc Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 17 Sep 2009 17:58:09 +0000 Subject: * generic/tclCompile.c: Re-implement Tcl_SubstObj() as a simple * generic/tclParse.c: wrapper around TclNRSubstObj(). This has * tests/basic.test: the effect of caching compiled bytecode in * tests/parse.test: the value to be substituted. Note that Tcl_SubstObj() now exists only for extensions. Tcl itself no longer makes any use of it. Note also that TclSubstTokens() is now reachable only by Tcl_EvalEx() and Tcl_ParseVar() so tests aiming to test its functioning needed adjustment to still have the intended effect. --- ChangeLog | 11 ++++++ generic/tclCompile.c | 33 ++++++++++++++++- generic/tclParse.c | 101 ++++++++++----------------------------------------- tests/basic.test | 8 ++-- tests/parse.test | 31 +++++----------- 5 files changed, 77 insertions(+), 107 deletions(-) diff --git a/ChangeLog b/ChangeLog index af6e767..363e1a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2009-09-17 Don Porter + + * generic/tclCompile.c: Re-implement Tcl_SubstObj() as a simple + * generic/tclParse.c: wrapper around TclNRSubstObj(). This has + * tests/basic.test: the effect of caching compiled bytecode in + * tests/parse.test: the value to be substituted. Note that + Tcl_SubstObj() now exists only for extensions. Tcl itself no longer + makes any use of it. Note also that TclSubstTokens() is now reachable + only by Tcl_EvalEx() and Tcl_ParseVar() so tests aiming to test its + functioning needed adjustment to still have the intended effect. + 2009-09-16 Alexandre Ferrieux * generic/tclObj.c: Extended ::tcl::unsupported::representation. diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 9fa8f6a..36e24d2 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.175 2009/09/12 06:43:12 das Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.176 2009/09/17 17:58:10 dgp Exp $ */ #include "tclInt.h" @@ -875,6 +875,37 @@ TclCleanupByteCode( /* *---------------------------------------------------------------------- * + * Tcl_SubstObj -- + * + * This function performs the substitutions specified on the given string + * as described in the user documentation for the "subst" Tcl command. + * + * Results: + * A Tcl_Obj* containing the substituted string, or NULL to indicate that + * an error occurred. + * + * Side effects: + * See the user documentation. + * + *---------------------------------------------------------------------- + */ + +Tcl_Obj * +Tcl_SubstObj( + Tcl_Interp *interp, /* Interpreter in which substitution occurs */ + Tcl_Obj *objPtr, /* The value to be substituted. */ + int flags) /* What substitutions to do. */ +{ + if (TclNRRunCallbacks(interp, TclNRSubstObj(interp, objPtr, flags), + TOP_CB(interp), 0) != TCL_OK) { + return NULL; + } + return Tcl_GetObjResult(interp); +} + +/* + *---------------------------------------------------------------------- + * * TclNRSubstObj -- * * Request substitution of a Tcl value by the NR stack. diff --git a/generic/tclParse.c b/generic/tclParse.c index 939c5d1..b06b106 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -1865,17 +1865,26 @@ Tcl_ParseQuotedString( /* *---------------------------------------------------------------------- * - * Tcl_SubstObj -- - * - * This function performs the substitutions specified on the given string - * as described in the user documentation for the "subst" Tcl command. - * + * TclSubstParse -- + * + * Token parser used by the [subst] command. Parses the string made + * up of 'numBytes' bytes starting at 'bytes'. Parsing is controlled + * by the flags argument to provide support for the -nobackslashes, + * -nocommands, and -novariables options, as represented by the flag + * values TCL_SUBST_BACKSLASHES, TCL_SUBST_COMMANDS, TCL_SUBST_VARIABLES. + * * Results: - * A Tcl_Obj* containing the substituted string, or NULL to indicate that - * an error occurred. + * None. * * Side effects: - * See the user documentation. + * The Tcl_Parse struct '*parsePtr' is filled with parse results. + * The caller is expected to eventually call Tcl_FreeParse() to + * properly cleanup the value written there. + * If a parse error occurs, the Tcl_InterpState value '*statePtr' + * is filled with the state created by that error. When *statePtr + * is written to, the caller is expected to make the required calls + * to either Tcl_RestoreInterpState() or Tcl_DiscardInterpState() + * to dispose of the value written there. * *---------------------------------------------------------------------- */ @@ -1972,10 +1981,10 @@ TclSubstParse( parsePtr->tokenPtr + parsePtr->numTokens - 2; if (varTokenPtr->type != TCL_TOKEN_VARIABLE) { - Tcl_Panic("Tcl_SubstObj: programming error"); + Tcl_Panic("TclSubstParse: programming error"); } if (varTokenPtr[1].type != TCL_TOKEN_TEXT) { - Tcl_Panic("Tcl_SubstObj: programming error"); + Tcl_Panic("TclSubstParse: programming error"); } parsePtr->numTokens -= 2; } @@ -2049,78 +2058,8 @@ TclSubstParse( break; default: - Tcl_Panic("bad parse in Tcl_SubstObj: %c", p[length]); - } - } -} - -Tcl_Obj * -Tcl_SubstObj( - Tcl_Interp *interp, /* Interpreter in which substitution occurs */ - Tcl_Obj *objPtr, /* The value to be substituted. */ - int flags) /* What substitutions to do. */ -{ - int tokensLeft, code, numBytes; - Tcl_Token *endTokenPtr; - Tcl_Obj *result; - Tcl_Parse *parsePtr = (Tcl_Parse *) - TclStackAlloc(interp, sizeof(Tcl_Parse)); - Tcl_InterpState state = NULL; - const char *bytes = TclGetStringFromObj(objPtr, &numBytes); - - TclSubstParse(interp, bytes, numBytes, flags, parsePtr, &state); - - /* - * Next, substitute the parsed tokens just as in normal Tcl evaluation. - */ - - endTokenPtr = parsePtr->tokenPtr + parsePtr->numTokens; - tokensLeft = parsePtr->numTokens; - code = TclSubstTokens(interp, endTokenPtr - tokensLeft, tokensLeft, - &tokensLeft, 1, NULL, NULL); - if (code == TCL_OK) { - Tcl_FreeParse(parsePtr); - TclStackFree(interp, parsePtr); - if (state != NULL) { - Tcl_RestoreInterpState(interp, state); - return NULL; - } - return Tcl_GetObjResult(interp); - } - - result = Tcl_NewObj(); - while (1) { - switch (code) { - case TCL_ERROR: - Tcl_FreeParse(parsePtr); - TclStackFree(interp, parsePtr); - Tcl_DecrRefCount(result); - if (state != NULL) { - Tcl_DiscardInterpState(state); - } - return NULL; - case TCL_BREAK: - tokensLeft = 0; /* Halt substitution */ - default: - Tcl_AppendObjToObj(result, Tcl_GetObjResult(interp)); + Tcl_Panic("bad parse in TclSubstParse: %c", p[length]); } - - if (tokensLeft == 0) { - Tcl_FreeParse(parsePtr); - TclStackFree(interp, parsePtr); - if (state != NULL) { - if (code != TCL_BREAK) { - Tcl_DecrRefCount(result); - Tcl_RestoreInterpState(interp, state); - return NULL; - } - Tcl_DiscardInterpState(state); - } - return result; - } - - code = TclSubstTokens(interp, endTokenPtr - tokensLeft, tokensLeft, - &tokensLeft, 1, NULL, NULL); } } diff --git a/tests/basic.test b/tests/basic.test index 881b329..c07d805 100644 --- a/tests/basic.test +++ b/tests/basic.test @@ -15,7 +15,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: basic.test,v 1.45 2009/09/04 17:33:12 dgp Exp $ +# RCS: @(#) $Id: basic.test,v 1.46 2009/09/17 17:58:10 dgp Exp $ # package require tcltest 2 @@ -631,8 +631,10 @@ test basic-46.5 {Tcl_AllowExceptions: exception return not allowed} -setup { "return -code return" (file "*BREAKtest" line 2)} -test basic-47.1 {Tcl_EvalEx: check for missing close-bracket} -body { - set subst subst; $subst {a[set b [format cd]} +test basic-47.1 {Tcl_EvalEx: check for missing close-bracket} -constraints { + testevalex +} -body { + testevalex {a[set b [format cd]} } -returnCodes error -result {missing close-bracket} # Some lists for expansion tests to work with diff --git a/tests/parse.test b/tests/parse.test index 482c3b8..b83d20e 100644 --- a/tests/parse.test +++ b/tests/parse.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parse.test,v 1.38 2009/09/11 20:13:27 dgp Exp $ +# RCS: @(#) $Id: parse.test,v 1.39 2009/09/17 17:58:10 dgp Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -895,8 +895,8 @@ test parse-15.60 {CommandComplete procedure} { info complete \\\n } 0 -test parse-16.1 {Tcl_EvalEx, check termOffset is set correctly for non TCL_OK cases, bug 2535} { - set subst subst; $subst {[eval {return foo}]bar} +test parse-16.1 {Bug 218885 (Scriptics bug 2535)} { + subst {[eval {return foo}]bar} } foobar test parse-17.1 {Correct return codes from errors during substitution} { @@ -1038,25 +1038,12 @@ test parse-19.2 {Bug 1115904: recursion limit in Tcl_EvalEx} -constraints { interp delete i } -returnCodes error -match glob -result {too many nested*} -test parse-19.3 {Bug 1115904: recursion limit in Tcl_EvalEx} -setup { - interp create i - i eval {proc {} args {}} - interp recursionlimit i 3 -} -body { - i eval {set subst subst; $subst {[]}} -} -cleanup { - interp delete i -} - -test parse-19.4 {Bug 1115904: recursion limit in Tcl_EvalEx} -constraints knownBug -setup { - interp create i - i eval {proc {} args {}} - interp recursionlimit i 2 -} -body { - i eval {set subst subst; $subst {[[]]}} -} -cleanup { - interp delete i -} -returnCodes error -match glob -result {too many nested*} +test parse-19.3 {Bug 1115904: recursion limit in Tcl_EvalEx} emptyTest { + # Test no longer valid in Tcl 8.6 +} {} +test parse-19.4 {Bug 1115904: recursion limit in Tcl_EvalEx} emptyTest { + # Test no longer valid in Tcl 8.6 +} {} cleanupTests } -- cgit v0.12 From cd55adb09ee0d5e492e024cac7a43350933b9dd3 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 18 Sep 2009 21:13:40 +0000 Subject: * generic/tclCmdMZ.c (Tcl_SubstObj): Pass 'length' values to recursive parsing calls to convert O(N^2) operations of [subst] to O(N). --- ChangeLog | 6 ++++++ generic/tclCmdMZ.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0b1281d..b3f8050 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-09-18 Don Porter + + * generic/tclCmdMZ.c (Tcl_SubstObj): Pass 'length' values to + recursive parsing calls to convert O(N^2) operations of [subst] + to O(N). + 2009-08-25 Andreas Kupries * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index ef172fc..a082820 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.30 2009/08/25 20:59:10 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.82.2.31 2009/09/18 21:13:41 dgp Exp $ */ #include "tclInt.h" @@ -2623,7 +2623,7 @@ Tcl_SubstObj(interp, objPtr, flags) * unsubstituted characters straight through if a '$' * does not precede a variable name.) */ - if (Tcl_ParseVarName(interp, p, -1, &parse, 0) != TCL_OK) { + if (Tcl_ParseVarName(interp, p, length, &parse, 0) != TCL_OK) { goto errorResult; } if (parse.numTokens == 1) { @@ -2670,7 +2670,7 @@ Tcl_SubstObj(interp, objPtr, flags) iPtr->numLevels++; code = TclInterpReady(interp); if (code == TCL_OK) { - code = Tcl_EvalEx(interp, p+1, -1, 0); + code = Tcl_EvalEx(interp, p+1, length-1, 0); } iPtr->numLevels--; switch (code) { -- cgit v0.12 From 9badd9a07bfa6ee391090b99b1805824a894b856 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 21 Sep 2009 16:16:04 +0000 Subject: * generic/tclCompile.c: Correct botch in the conversion of Tcl_SubstObj(). Thanks to Kevin Kenny for detection and report. --- ChangeLog | 5 +++++ generic/tclCompile.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 363e1a1..d83e595 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-09-21 Don Porter + + * generic/tclCompile.c: Correct botch in the conversion of + Tcl_SubstObj(). Thanks to Kevin Kenny for detection and report. + 2009-09-17 Don Porter * generic/tclCompile.c: Re-implement Tcl_SubstObj() as a simple diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 36e24d2..7104f94 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.176 2009/09/17 17:58:10 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.177 2009/09/21 16:16:05 dgp Exp $ */ #include "tclInt.h" @@ -896,8 +896,10 @@ Tcl_SubstObj( Tcl_Obj *objPtr, /* The value to be substituted. */ int flags) /* What substitutions to do. */ { + TEOV_callback *rootPtr = TOP_CB(interp); + if (TclNRRunCallbacks(interp, TclNRSubstObj(interp, objPtr, flags), - TOP_CB(interp), 0) != TCL_OK) { + rootPtr, 0) != TCL_OK) { return NULL; } return Tcl_GetObjResult(interp); -- cgit v0.12 From 4fec8cdfead1265eae20b7fc9460b0d1bdc0e820 Mon Sep 17 00:00:00 2001 From: mdejong Date: Mon, 21 Sep 2009 21:30:41 +0000 Subject: * tests/regexp.test: Added check for error message from unbalanced [] in regexp. Added additional simple test cases of basic regsub command. --- ChangeLog | 6 ++++++ tests/regexp.test | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d83e595..b3614d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-09-21 Mo DeJong + + * tests/regexp.test: Added check for error message from + unbalanced [] in regexp. Added additional simple test cases + of basic regsub command. + 2009-09-21 Don Porter * generic/tclCompile.c: Correct botch in the conversion of diff --git a/tests/regexp.test b/tests/regexp.test index c4b4cab..2fe87b9 100644 --- a/tests/regexp.test +++ b/tests/regexp.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: regexp.test,v 1.33 2008/08/21 23:19:51 hobbs Exp $ +# RCS: @(#) $Id: regexp.test,v 1.34 2009/09/21 21:30:41 mdejong Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -246,6 +246,9 @@ test regexp-6.8 {regexp errors} { test regexp-6.9 {regexp errors, -start bad int check} { list [catch {regexp -start bogus {^$} {}} msg] $msg } {1 {bad index "bogus": must be integer?[+-]integer? or end?[+-]integer?}} +test regexp-6.10 {regexp errors} { + list [catch {regexp {a[} b} msg] $msg +} {1 {couldn't compile regular expression pattern: brackets [] not balanced}} test regexp-7.1 {basic regsub operation} { list [regsub aa+ xaxaaaxaa 111&222 foo] $foo @@ -305,6 +308,15 @@ test regexp-7.17 {regsub utf compliance} { regsub a\u4e4eb xyza\u4e4ebijka\u4e4ebpqr 555 bar list [string compare $foo $bar] [regexp 4 $bar] } {0 0} +test regexp-7.18 {basic regsub replacement} { + list [regsub a+ aaa {&} foo] $foo +} {1 aaa} +test regexp-7.19 {basic regsub backslash replacement} { + list [regsub a+ aaa {\0} foo] $foo +} {1 aaa} +test regexp-7.20 {basic regsub backslash replacement} { + list [regsub a+ aaa {\\\0} foo] $foo +} {1 {\aaa}} test regexp-8.1 {case conversion in regsub} { list [regsub -nocase a(a+) xaAAaAAay & foo] $foo -- cgit v0.12 From 228d54da529d3af8f34d07a6007502fff640b733 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 22 Sep 2009 01:14:25 +0000 Subject: edit --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b3614d4..ff10d34 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,8 @@ 2009-09-21 Mo DeJong * tests/regexp.test: Added check for error message from - unbalanced [] in regexp. Added additional simple test cases - of basic regsub command. + unbalanced [] in regexp. Added additional simple test cases + of basic regsub command. 2009-09-21 Don Porter -- cgit v0.12 From 4b18bbd6f4b8ba02af4fc3d8fe895b61280246c2 Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Wed, 23 Sep 2009 23:36:50 +0000 Subject: * doc/namespace.n: the description of [namespace unknown] failed to mention [namespace path]: fixed. Thx emiliano. --- ChangeLog | 5 +++++ doc/namespace.n | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ff10d34..aeb1218 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-09-23 Miguel Sofer + + * doc/namespace.n: the description of [namespace unknown] failed + to mention [namespace path]: fixed. Thx emiliano. + 2009-09-21 Mo DeJong * tests/regexp.test: Added check for error message from diff --git a/doc/namespace.n b/doc/namespace.n index dfd0467..52dde94 100644 --- a/doc/namespace.n +++ b/doc/namespace.n @@ -7,7 +7,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: namespace.n,v 1.35 2008/10/17 10:22:25 dkf Exp $ +'\" RCS: @(#) $Id: namespace.n,v 1.36 2009/09/23 23:36:50 msofer Exp $ '\" .so man.macros .TH namespace n 8.5 Tcl "Tcl Built-In Commands" @@ -296,7 +296,8 @@ used for qualified namespace or variable names. . Sets or returns the unknown command handler for the current namespace. The handler is invoked when a command called from within the namespace -cannot be found (in either the current namespace or the global namespace). +cannot be found in the current namespace, the namespace's path nor in +the global namespace. The \fIscript\fR argument, if given, should be a well formed list representing a command name and optional arguments. When the handler is invoked, the full invocation line will be appended to the -- cgit v0.12 From d979bd019aca7a87ce8bb62692fb3ebb66ff0117 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 24 Sep 2009 17:19:17 +0000 Subject: TIP #356 IMPLEMENTATION * generic/tcl.decls: Promote internal routine TclNRSubstObj() * generic/tclCmdMZ.c: to public Tcl_NRSubstObj(). Still needs docs. * generic/tclCompile.c: * generic/tclInt.h: * generic/tclDecls.h: make genstubs * generic/tclStubInit.c: --- ChangeLog | 12 ++++++++++++ generic/tcl.decls | 7 ++++++- generic/tclCmdMZ.c | 4 ++-- generic/tclCompile.c | 8 ++++---- generic/tclDecls.h | 13 ++++++++++++- generic/tclInt.h | 4 +--- generic/tclStubInit.c | 3 ++- 7 files changed, 39 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index aeb1218..bb2d572 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-09-24 Don Porter + + TIP #356 IMPLEMENTATION + + * generic/tcl.decls: Promote internal routine TclNRSubstObj() + * generic/tclCmdMZ.c: to public Tcl_NRSubstObj(). Still needs docs. + * generic/tclCompile.c: + * generic/tclInt.h: + + * generic/tclDecls.h: make genstubs + * generic/tclStubInit.c: + 2009-09-23 Miguel Sofer * doc/namespace.n: the description of [namespace unknown] failed diff --git a/generic/tcl.decls b/generic/tcl.decls index 26f3a83..b0644ae 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tcl.decls,v 1.170 2009/08/12 16:06:39 dgp Exp $ +# RCS: @(#) $Id: tcl.decls,v 1.171 2009/09/24 17:19:17 dgp Exp $ library tcl @@ -2300,6 +2300,11 @@ declare 625 generic { int Tcl_NRExprObj(Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Obj *resultPtr) } +# TIP #356 (NR-enabled substitution) dgp +declare 626 generic { + int Tcl_NRSubstObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int flags) +} + # ----- BASELINE -- FOR -- 8.6.0 ----- # ############################################################################## diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 72b46af..8824c48 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.193 2009/09/11 20:13:27 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.194 2009/09/24 17:19:18 dgp Exp $ */ #include "tclInt.h" @@ -3440,7 +3440,7 @@ TclNRSubstObjCmd( if (TclSubstOptions(interp, objc-2, objv+1, &flags) != TCL_OK) { return TCL_ERROR; } - return TclNRSubstObj(interp, objv[objc-1], flags); + return Tcl_NRSubstObj(interp, objv[objc-1], flags); } /* diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 7104f94..ed4e8f0 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.177 2009/09/21 16:16:05 dgp Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.178 2009/09/24 17:19:18 dgp Exp $ */ #include "tclInt.h" @@ -898,7 +898,7 @@ Tcl_SubstObj( { TEOV_callback *rootPtr = TOP_CB(interp); - if (TclNRRunCallbacks(interp, TclNRSubstObj(interp, objPtr, flags), + if (TclNRRunCallbacks(interp, Tcl_NRSubstObj(interp, objPtr, flags), rootPtr, 0) != TCL_OK) { return NULL; } @@ -908,7 +908,7 @@ Tcl_SubstObj( /* *---------------------------------------------------------------------- * - * TclNRSubstObj -- + * Tcl_NRSubstObj -- * * Request substitution of a Tcl value by the NR stack. * @@ -924,7 +924,7 @@ Tcl_SubstObj( */ int -TclNRSubstObj( +Tcl_NRSubstObj( Tcl_Interp *interp, Tcl_Obj *objPtr, int flags) diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 032fb75..23061a6 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDecls.h,v 1.171 2009/08/12 16:06:43 dgp Exp $ + * RCS: @(#) $Id: tclDecls.h,v 1.172 2009/09/24 17:19:18 dgp Exp $ */ #ifndef _TCLDECLS @@ -3731,6 +3731,12 @@ EXTERN int Tcl_CloseEx (Tcl_Interp * interp, Tcl_Channel chan, EXTERN int Tcl_NRExprObj (Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj * resultPtr); #endif +#ifndef Tcl_NRSubstObj_TCL_DECLARED +#define Tcl_NRSubstObj_TCL_DECLARED +/* 626 */ +EXTERN int Tcl_NRSubstObj (Tcl_Interp * interp, + Tcl_Obj * objPtr, int flags); +#endif typedef struct TclStubHooks { const struct TclPlatStubs *tclPlatStubs; @@ -4392,6 +4398,7 @@ typedef struct TclStubs { Tcl_Obj * (*tcl_GetStartupScript) (const char ** encodingPtr); /* 623 */ int (*tcl_CloseEx) (Tcl_Interp * interp, Tcl_Channel chan, int flags); /* 624 */ int (*tcl_NRExprObj) (Tcl_Interp * interp, Tcl_Obj * objPtr, Tcl_Obj * resultPtr); /* 625 */ + int (*tcl_NRSubstObj) (Tcl_Interp * interp, Tcl_Obj * objPtr, int flags); /* 626 */ } TclStubs; #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) @@ -6926,6 +6933,10 @@ extern const TclStubs *tclStubsPtr; #define Tcl_NRExprObj \ (tclStubsPtr->tcl_NRExprObj) /* 625 */ #endif +#ifndef Tcl_NRSubstObj +#define Tcl_NRSubstObj \ + (tclStubsPtr->tcl_NRSubstObj) /* 626 */ +#endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclInt.h b/generic/tclInt.h index 6f7972f..d34be28 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.442 2009/09/11 20:13:27 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.443 2009/09/24 17:19:18 dgp Exp $ */ #ifndef _TCLINT @@ -2847,8 +2847,6 @@ MODULE_SCOPE int TclMarkList(Tcl_Interp *interp, const char *list, MODULE_SCOPE int TclMergeReturnOptions(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[], Tcl_Obj **optionsPtrPtr, int *codePtr, int *levelPtr); -MODULE_SCOPE int TclNRSubstObj(Tcl_Interp *interp, Tcl_Obj *objPtr, - int flags); MODULE_SCOPE int TclNokia770Doubles(); MODULE_SCOPE void TclObjVarErrMsg(Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, const char *operation, diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index c71b944..40b5e89 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubInit.c,v 1.184 2009/08/12 16:06:44 dgp Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.185 2009/09/24 17:19:18 dgp Exp $ */ #include "tclInt.h" @@ -1110,6 +1110,7 @@ static const TclStubs tclStubs = { Tcl_GetStartupScript, /* 623 */ Tcl_CloseEx, /* 624 */ Tcl_NRExprObj, /* 625 */ + Tcl_NRSubstObj, /* 626 */ }; /* !END!: Do not edit above this line. */ -- cgit v0.12 From 816780ff7b5566020f5e676eb6ca0e77c6347e41 Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 26 Sep 2009 21:42:04 +0000 Subject: Added dummy tclooConfig.sh files for easier cross-version building. [2026844] --- ChangeLog | 6 ++++++ generic/tclOO.h | 8 ++++++-- unix/Makefile.in | 9 ++++++--- unix/tclooConfig.sh | 21 +++++++++++++++++++++ win/Makefile.in | 4 ++-- win/makefile.bc | 4 +++- win/makefile.vc | 3 ++- win/tclooConfig.sh | 21 +++++++++++++++++++++ 8 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 unix/tclooConfig.sh create mode 100644 win/tclooConfig.sh diff --git a/ChangeLog b/ChangeLog index bb2d572..d844a9c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-09-26 Donal K. Fellows + + * unix/tclooConfig.sh, win/tclooConfig.sh: [Bug 2026844]: Added dummy + versions of tclooConfig.sh that make it easier to build extensions + against both Tcl8.5+TclOO-standalone and Tcl8.6. + 2009-09-24 Don Porter TIP #356 IMPLEMENTATION diff --git a/generic/tclOO.h b/generic/tclOO.h index 7bcb4a7..85bc514 100644 --- a/generic/tclOO.h +++ b/generic/tclOO.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclOO.h,v 1.7 2008/11/01 08:05:49 dkf Exp $ + * RCS: @(#) $Id: tclOO.h,v 1.8 2009/09/26 21:42:05 dkf Exp $ */ #ifndef TCLOO_H_INCLUDED @@ -25,7 +25,11 @@ /* * Be careful when it comes to versioning; need to make sure that the - * standalone TclOO version matches... + * standalone TclOO version matches. Also make sure that this matches the + * version in the files: + * + * unix/tclooConfig.sh + * win/tclooConfig.sh */ #define TCLOO_VERSION "0.6.1" diff --git a/unix/Makefile.in b/unix/Makefile.in index 044b156..64f35dd 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.275 2009/09/01 14:13:23 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.276 2009/09/26 21:42:05 dkf Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -769,6 +769,8 @@ install-binaries: binaries @$(INSTALL_PROGRAM) tclsh "$(BIN_INSTALL_DIR)"/tclsh$(VERSION) @echo "Installing tclConfig.sh to $(CONFIG_INSTALL_DIR)/" @$(INSTALL_DATA) tclConfig.sh "$(CONFIG_INSTALL_DIR)"/tclConfig.sh + @echo "Installing tclooConfig.sh to $(CONFIG_INSTALL_DIR)/" + @$(INSTALL_DATA) tclooConfig.sh "$(CONFIG_INSTALL_DIR)"/tclooConfig.sh @if test "$(STUB_LIB_FILE)" != "" ; then \ echo "Installing $(STUB_LIB_FILE) to $(LIB_INSTALL_DIR)/"; \ @INSTALL_STUB_LIB@ ; \ @@ -1829,7 +1831,8 @@ dist: $(UNIX_DIR)/configure $(UNIX_DIR)/tclConfig.h.in $(UNIX_DIR)/tcl.pc.in $(M chmod 664 $(DISTDIR)/unix/Makefile.in cp $(UNIX_DIR)/configure $(UNIX_DIR)/configure.in \ $(UNIX_DIR)/tcl.m4 $(UNIX_DIR)/aclocal.m4 \ - $(UNIX_DIR)/tclConfig.sh.in $(UNIX_DIR)/install-sh \ + $(UNIX_DIR)/tclConfig.sh.in $(UNIX_DIR)/tclooConfig.sh \ + $(UNIX_DIR)/install-sh \ $(UNIX_DIR)/README $(UNIX_DIR)/ldAix $(UNIX_DIR)/tcl.spec \ $(UNIX_DIR)/installManPage $(UNIX_DIR)/tclConfig.h.in \ $(UNIX_DIR)/tcl.pc.in $(DISTDIR)/unix @@ -1879,7 +1882,7 @@ dist: $(UNIX_DIR)/configure $(UNIX_DIR)/tclConfig.h.in $(UNIX_DIR)/tcl.pc.in $(M mkdir $(DISTDIR)/win cp $(TOP_DIR)/win/Makefile.in $(DISTDIR)/win cp $(TOP_DIR)/win/configure.in $(TOP_DIR)/win/configure \ - $(TOP_DIR)/win/tclConfig.sh.in \ + $(TOP_DIR)/win/tclConfig.sh.in $(TOP_DIR)/win/tclooConfig.sh \ $(TOP_DIR)/win/tcl.m4 $(TOP_DIR)/win/aclocal.m4 \ $(DISTDIR)/win cp -p $(TOP_DIR)/win/*.[ch] $(TOP_DIR)/win/*.ico $(TOP_DIR)/win/*.rc \ diff --git a/unix/tclooConfig.sh b/unix/tclooConfig.sh new file mode 100644 index 0000000..565fe98 --- /dev/null +++ b/unix/tclooConfig.sh @@ -0,0 +1,21 @@ +# tclooConfig.sh -- +# +# This shell script (for sh) is generated automatically by TclOO's configure +# script, or would be except it has no values that we substitute. It will +# create shell variables for most of the configuration options discovered by +# the configure script. This script is intended to be included by TEA-based +# configure scripts for TclOO extensions so that they don't have to figure +# this all out for themselves. +# +# The information in this file is specific to a single platform. +# +# RCS: @(#) $Id: tclooConfig.sh,v 1.1 2009/09/26 21:42:05 dkf Exp $ + +# These are mostly empty because no special steps are ever needed from Tcl 8.6 +# onwards; all libraries and include files are just part of Tcl. +TCLOO_LIB_SPEC="" +TCLOO_STUB_LIB_SPEC="" +TCLOO_INCLUDE_SPEC="" +TCLOO_PRIVATE_INCLUDE_SPEC="" +TCLOO_CFLAGS=-DUSE_TCLOO_STUBS +TCLOO_VERSION=0.6.1 diff --git a/win/Makefile.in b/win/Makefile.in index ab56d80..1fee6c8 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.160 2009/09/01 14:13:23 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.161 2009/09/26 21:42:05 dkf Exp $ VERSION = @TCL_VERSION@ @@ -634,7 +634,7 @@ install-binaries: binaries $(COPY) $$i "$(BIN_INSTALL_DIR)"; \ fi; \ done - @for i in tclConfig.sh $(TCL_LIB_FILE) $(TCL_STUB_LIB_FILE); \ + @for i in tclConfig.sh tclooConfig.sh $(TCL_LIB_FILE) $(TCL_STUB_LIB_FILE); \ do \ if [ -f $$i ]; then \ echo "Installing $$i to $(LIB_INSTALL_DIR)/"; \ diff --git a/win/makefile.bc b/win/makefile.bc index 758eff6..7666309 100644 --- a/win/makefile.bc +++ b/win/makefile.bc @@ -420,6 +420,8 @@ install-binaries: $(TCLSH) @copy "$(TCLPIPEDLL)" "$(BIN_INSTALL_DIR)" @echo installing $(TCLSTUBLIBNAME) @copy "$(TCLSTUBLIB)" "$(LIB_INSTALL_DIR)" + @echo installing $(WINDIR)\tclooConfig.sh + @copy "$(WINDIR)\tclooConfig.sh" "$(LIB_INSTALL_DIR)" install-libraries: -@$(MKDIR) "$(LIB_INSTALL_DIR)" @@ -429,7 +431,7 @@ install-libraries: -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http1.0" -@copy "$(ROOT)\library\http1.0\http.tcl" "$(SCRIPT_INSTALL_DIR)\http1.0" -@copy "$(ROOT)\library\http1.0\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http1.0" - @echo installing http2.7 + @echo installing http2.8 -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http2.8" -@copy "$(ROOT)\library\http\http.tcl" "$(SCRIPT_INSTALL_DIR)\http2.8" -@copy "$(ROOT)\library\http\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http2.8" diff --git a/win/makefile.vc b/win/makefile.vc index 0d4117f..6b525021 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -13,7 +13,7 @@ # Copyright (c) 2003-2008 Pat Thoyts. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: makefile.vc,v 1.200 2009/07/11 08:57:08 patthoyts Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.201 2009/09/26 21:42:05 dkf Exp $ #------------------------------------------------------------------------------ # Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) @@ -1110,6 +1110,7 @@ install-libraries: tclConfig install-msgs install-tzdata @$(CPY) "$(ROOT)\library\word.tcl" "$(SCRIPT_INSTALL_DIR)\" @$(CPY) "$(ROOT)\library\auto.tcl" "$(SCRIPT_INSTALL_DIR)\" @$(CPY) "$(OUT_DIR)\tclConfig.sh" "$(LIB_INSTALL_DIR)\" + @$(CPY) "$(WINDIR)\tclooConfig.sh" "$(LIB_INSTALL_DIR)\" @echo Installing library http1.0 directory @$(CPY) "$(ROOT)\library\http1.0\*.tcl" \ "$(SCRIPT_INSTALL_DIR)\http1.0\" diff --git a/win/tclooConfig.sh b/win/tclooConfig.sh new file mode 100644 index 0000000..565fe98 --- /dev/null +++ b/win/tclooConfig.sh @@ -0,0 +1,21 @@ +# tclooConfig.sh -- +# +# This shell script (for sh) is generated automatically by TclOO's configure +# script, or would be except it has no values that we substitute. It will +# create shell variables for most of the configuration options discovered by +# the configure script. This script is intended to be included by TEA-based +# configure scripts for TclOO extensions so that they don't have to figure +# this all out for themselves. +# +# The information in this file is specific to a single platform. +# +# RCS: @(#) $Id: tclooConfig.sh,v 1.1 2009/09/26 21:42:05 dkf Exp $ + +# These are mostly empty because no special steps are ever needed from Tcl 8.6 +# onwards; all libraries and include files are just part of Tcl. +TCLOO_LIB_SPEC="" +TCLOO_STUB_LIB_SPEC="" +TCLOO_INCLUDE_SPEC="" +TCLOO_PRIVATE_INCLUDE_SPEC="" +TCLOO_CFLAGS=-DUSE_TCLOO_STUBS +TCLOO_VERSION=0.6.1 -- cgit v0.12 From 46de449b25360bf9fc69f9e2acfc177db7dd7ee6 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 28 Sep 2009 03:22:04 +0000 Subject: * tests/error.test (error-15.8.*): Coverage tests illustrating flaws in the propagation of return options by [try]. --- ChangeLog | 5 +++++ tests/error.test | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d844a9c..f2071d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-09-27 Don Porter + + * tests/error.test (error-15.8.*): Coverage tests illustrating + flaws in the propagation of return options by [try]. + 2009-09-26 Donal K. Fellows * unix/tclooConfig.sh, win/tclooConfig.sh: [Bug 2026844]: Added dummy diff --git a/tests/error.test b/tests/error.test index 4eb765e..334ba29 100644 --- a/tests/error.test +++ b/tests/error.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: error.test,v 1.19 2009/03/09 09:12:39 dkf Exp $ +# RCS: @(#) $Id: error.test,v 1.20 2009/09/28 03:22:04 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -491,6 +491,23 @@ test error-15.7 {try with no matching handler (unknown integer result propagates try { return -level 0 -code 123456 } trap {} {} { list a b c } } -returnCodes 123456 -result {} +foreach level {0 1 2} { + foreach code {0 1 2 3 4 5} { + + # Following cases have different -errorinfo; avoid false alarms + if {$level == 0 && $code == 1} continue + + foreach extras {{} {-bar soom}} { +test error-15.8.$level.$code.[llength $extras] {[try] coverage} { + set script {return -level $level -code $code {*}$extras foo} + catch $script m1 o1 + catch {try $script} m2 o2 + expr {$o1 eq $o2 ? "ok" : "$o1\n\tis not equal to\n$o2"} +} ok + } + } +} + # try tests - propagation (exceptions in handlers, exception chaining) test error-16.1 {try with successfully executed handler} { -- cgit v0.12 From bf83bf5f46a2ec5105fac6f5a25b43535dcac49f Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 28 Sep 2009 16:34:39 +0000 Subject: * tests/error.test (error-15.9.*): More coverage tests for [try]. Test error-15.9.3.0.0 covers [Bug 2855247]. --- ChangeLog | 5 +++++ tests/error.test | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f2071d7..86fd3b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-09-28 Don Porter + + * tests/error.test (error-15.9.*): More coverage tests for [try]. + Test error-15.9.3.0.0 covers [Bug 2855247]. + 2009-09-27 Don Porter * tests/error.test (error-15.8.*): Coverage tests illustrating diff --git a/tests/error.test b/tests/error.test index 334ba29..3106ca9 100644 --- a/tests/error.test +++ b/tests/error.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: error.test,v 1.20 2009/09/28 03:22:04 dgp Exp $ +# RCS: @(#) $Id: error.test,v 1.21 2009/09/28 16:34:40 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -491,19 +491,28 @@ test error-15.7 {try with no matching handler (unknown integer result propagates try { return -level 0 -code 123456 } trap {} {} { list a b c } } -returnCodes 123456 -result {} -foreach level {0 1 2} { +foreach level {0 1 2 3} { foreach code {0 1 2 3 4 5} { # Following cases have different -errorinfo; avoid false alarms if {$level == 0 && $code == 1} continue foreach extras {{} {-bar soom}} { + test error-15.8.$level.$code.[llength $extras] {[try] coverage} { set script {return -level $level -code $code {*}$extras foo} catch $script m1 o1 catch {try $script} m2 o2 expr {$o1 eq $o2 ? "ok" : "$o1\n\tis not equal to\n$o2"} } ok + +test error-15.9.$level.$code.[llength $extras] {[try] coverage} { + set script {return -level $level -code $code {*}$extras foo} + catch $script m1 o1 + catch {try $script finally {}} m2 o2 + expr {$o1 eq $o2 ? "ok" : "$o1\n\tis not equal to\n$o2"} +} ok + } } } -- cgit v0.12 From 9ed15c4edf59c0dda55797c0debad69464c092c0 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 28 Sep 2009 18:02:19 +0000 Subject: * generic/tclCmdMZ.c: Replaced TclProcessReturn() calls with * tests/error.test: Tcl_SetReturnOptions() calls as a simple fix for [Bug 2855247]. Thanks to Anton Kovalenko for the report and fix. Additional fixes for other failures demonstrated by new tests. --- ChangeLog | 6 ++++-- generic/tclCmdMZ.c | 26 +++++++++----------------- tests/error.test | 16 +++++++++++++++- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 86fd3b5..c0b5b3d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,9 @@ 2009-09-28 Don Porter - * tests/error.test (error-15.9.*): More coverage tests for [try]. - Test error-15.9.3.0.0 covers [Bug 2855247]. + * generic/tclCmdMZ.c: Replaced TclProcessReturn() calls with + * tests/error.test: Tcl_SetReturnOptions() calls as a simple fix + for [Bug 2855247]. Thanks to Anton Kovalenko for the report and fix. + Additional fixes for other failures demonstrated by new tests. 2009-09-27 Don Porter diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 8824c48..9aed082 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.194 2009/09/24 17:19:18 dgp Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.195 2009/09/28 18:02:20 dgp Exp $ */ #include "tclInt.h" @@ -4348,12 +4348,8 @@ TryPostBody( "\n (\"%s\" body line %d)", TclGetString(cmdObj), Tcl_GetErrorLine(interp))); } - if (handlersObj != NULL || finallyObj != NULL) { - options = Tcl_GetReturnOptions(interp, result); - Tcl_IncrRefCount(options); - } else { - options = NULL; - } + options = Tcl_GetReturnOptions(interp, result); + Tcl_IncrRefCount(options); Tcl_ResetResult(interp); /* @@ -4496,14 +4492,10 @@ TryPostBody( * any temporary storage. */ - if (options != NULL) { - result = TclProcessReturn(interp, result, 0, options); - Tcl_DecrRefCount(options); - } - if (resultObj != NULL) { - Tcl_SetObjResult(interp, resultObj); - Tcl_DecrRefCount(resultObj); - } + result = Tcl_SetReturnOptions(interp, options); + Tcl_DecrRefCount(options); + Tcl_SetObjResult(interp, resultObj); + Tcl_DecrRefCount(resultObj); return result; } @@ -4565,7 +4557,7 @@ TryPostHandler( * any temporary storage. */ - result = TclProcessReturn(interp, result, 0, options); + result = Tcl_SetReturnOptions(interp, options); Tcl_DecrRefCount(options); Tcl_SetObjResult(interp, resultObj); Tcl_DecrRefCount(resultObj); @@ -4623,7 +4615,7 @@ TryPostFinal( * any temporary storage. */ - result = TclProcessReturn(interp, result, 0, options); + result = Tcl_SetReturnOptions(interp, options); Tcl_DecrRefCount(options); if (resultObj != NULL) { Tcl_SetObjResult(interp, resultObj); diff --git a/tests/error.test b/tests/error.test index 3106ca9..e18afad 100644 --- a/tests/error.test +++ b/tests/error.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: error.test,v 1.21 2009/09/28 16:34:40 dgp Exp $ +# RCS: @(#) $Id: error.test,v 1.22 2009/09/28 18:02:20 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -495,6 +495,7 @@ foreach level {0 1 2 3} { foreach code {0 1 2 3 4 5} { # Following cases have different -errorinfo; avoid false alarms + # TODO: examine whether these difference are as they ought to be. if {$level == 0 && $code == 1} continue foreach extras {{} {-bar soom}} { @@ -503,6 +504,8 @@ test error-15.8.$level.$code.[llength $extras] {[try] coverage} { set script {return -level $level -code $code {*}$extras foo} catch $script m1 o1 catch {try $script} m2 o2 + set o1 [lsort -stride 2 $o1] + set o2 [lsort -stride 2 $o2] expr {$o1 eq $o2 ? "ok" : "$o1\n\tis not equal to\n$o2"} } ok @@ -510,6 +513,17 @@ test error-15.9.$level.$code.[llength $extras] {[try] coverage} { set script {return -level $level -code $code {*}$extras foo} catch $script m1 o1 catch {try $script finally {}} m2 o2 + set o1 [lsort -stride 2 $o1] + set o2 [lsort -stride 2 $o2] + expr {$o1 eq $o2 ? "ok" : "$o1\n\tis not equal to\n$o2"} +} ok + +test error-15.10.$level.$code.[llength $extras] {[try] coverage} { + set script {return -level $level -code $code {*}$extras foo} + catch $script m1 o1 + catch {try $script on $code {x y} {return -options $y $x}} m2 o2 + set o1 [lsort -stride 2 $o1] + set o2 [lsort -stride 2 $o2] expr {$o1 eq $o2 ? "ok" : "$o1\n\tis not equal to\n$o2"} } ok -- cgit v0.12 From 7ad9ba94f77eba7345aaf7872f5f40681d7e16a4 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 28 Sep 2009 21:20:50 +0000 Subject: * generic/tclAlloc.c: Cleaned up various routines in the * generic/tclCkalloc.c: call stacks for memory allocation to * generic/tclParse.c: guarantee that any size values computed * generic/tclThreadAlloc.c: are within the domains of the routines they get passed to. [Bugs 2557696 and 2557796]. --- ChangeLog | 8 ++++++++ generic/tclAlloc.c | 12 +++++++----- generic/tclCkalloc.c | 21 ++++++++++++++------- generic/tclParse.c | 10 +++++++++- generic/tclThreadAlloc.c | 30 +++++++++++++++++++++++++++--- 5 files changed, 65 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index b3f8050..7bd1f8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-09-28 Don Porter + + * generic/tclAlloc.c: Cleaned up various routines in the + * generic/tclCkalloc.c: call stacks for memory allocation to + * generic/tclParse.c: guarantee that any size values computed + * generic/tclThreadAlloc.c: are within the domains of the routines + they get passed to. [Bugs 2557696 and 2557796]. + 2009-09-18 Don Porter * generic/tclCmdMZ.c (Tcl_SubstObj): Pass 'length' values to diff --git a/generic/tclAlloc.c b/generic/tclAlloc.c index 12c0201..7decf22 100644 --- a/generic/tclAlloc.c +++ b/generic/tclAlloc.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAlloc.c,v 1.16.2.3 2007/09/22 15:46:45 das Exp $ + * RCS: @(#) $Id: tclAlloc.c,v 1.16.2.4 2009/09/28 21:20:50 dgp Exp $ */ /* @@ -272,7 +272,7 @@ TclpAlloc(nbytes) register union overhead *op; register long bucket; register unsigned amt; - struct block *bigBlockPtr; + struct block *bigBlockPtr = NULL; if (!allocInit) { /* @@ -286,9 +286,11 @@ TclpAlloc(nbytes) /* * First the simple case: we simple allocate big blocks directly */ - if (nbytes + OVERHEAD >= MAXMALLOC) { - bigBlockPtr = (struct block *) TclpSysAlloc((unsigned) - (sizeof(struct block) + OVERHEAD + nbytes), 0); + if (nbytes >= MAXMALLOC - OVERHEAD) { + if (nbytes <= UINT_MAX - OVERHEAD - sizeof(struct block)) { + bigBlockPtr = (struct block *) TclpSysAlloc((unsigned) + (sizeof(struct block) + OVERHEAD + nbytes), 0); + } if (bigBlockPtr == NULL) { Tcl_MutexUnlock(allocMutexPtr); return NULL; diff --git a/generic/tclCkalloc.c b/generic/tclCkalloc.c index 98e8c5b..ab51f85 100644 --- a/generic/tclCkalloc.c +++ b/generic/tclCkalloc.c @@ -13,7 +13,7 @@ * * This code contributed by Karl Lehenbauer and Mark Diekhans * - * RCS: @(#) $Id: tclCkalloc.c,v 1.19 2003/01/19 07:21:18 hobbs Exp $ + * RCS: @(#) $Id: tclCkalloc.c,v 1.19.2.1 2009/09/28 21:20:51 dgp Exp $ */ #include "tclInt.h" @@ -368,13 +368,17 @@ Tcl_DbCkalloc(size, file, line) CONST char *file; int line; { - struct mem_header *result; + struct mem_header *result = NULL; if (validate_memory) Tcl_ValidateAllMemory (file, line); - result = (struct mem_header *) TclpAlloc((unsigned)size + - sizeof(struct mem_header) + HIGH_GUARD_SIZE); + + /* Don't let size argument to TclpAlloc overflow */ + if (size <= UINT_MAX - HIGH_GUARD_SIZE - sizeof(struct mem_header)) { + result = (struct mem_header *) TclpAlloc((unsigned)size + + sizeof(struct mem_header) + HIGH_GUARD_SIZE); + } if (result == NULL) { fflush(stdout); TclDumpMemoryInfo(stderr); @@ -453,13 +457,16 @@ Tcl_AttemptDbCkalloc(size, file, line) CONST char *file; int line; { - struct mem_header *result; + struct mem_header *result = NULL; if (validate_memory) Tcl_ValidateAllMemory (file, line); - result = (struct mem_header *) TclpAlloc((unsigned)size + - sizeof(struct mem_header) + HIGH_GUARD_SIZE); + /* Don't let size argument to TclpAlloc overflow */ + if (size <= UINT_MAX - HIGH_GUARD_SIZE - sizeof(struct mem_header)) { + result = (struct mem_header *) TclpAlloc((unsigned)size + + sizeof(struct mem_header) + HIGH_GUARD_SIZE); + } if (result == NULL) { fflush(stdout); TclDumpMemoryInfo(stderr); diff --git a/generic/tclParse.c b/generic/tclParse.c index e939ef3..93d1741 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParse.c,v 1.25.2.3 2007/10/15 13:29:19 msofer Exp $ + * RCS: @(#) $Id: tclParse.c,v 1.25.2.4 2009/09/28 21:20:51 dgp Exp $ */ #include "tclInt.h" @@ -1019,7 +1019,15 @@ TclExpandTokenArray(parsePtr) int newCount; Tcl_Token *newPtr; +#define MAX_TOKENS (int)(UINT_MAX / sizeof(Tcl_Token)) + + if (parsePtr->tokensAvailable == MAX_TOKENS) { + Tcl_Panic("max # of tokens for a Tcl parse (%d) exceeded", MAX_TOKENS); + } newCount = parsePtr->tokensAvailable*2; + if (newCount > MAX_TOKENS) { + newCount = MAX_TOKENS; + } newPtr = (Tcl_Token *) ckalloc((unsigned) (newCount * sizeof(Tcl_Token))); memcpy((VOID *) newPtr, (VOID *) parsePtr->tokenPtr, (size_t) (parsePtr->tokensAvailable * sizeof(Tcl_Token))); diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index 9ff31db..f4c1e63 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.8 2007/06/29 03:17:33 das Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.9 2009/09/28 21:20:51 dgp Exp $ */ #include "tclInt.h" @@ -306,11 +306,23 @@ TclFreeAllocCache(void *arg) char * TclpAlloc(unsigned int reqsize) { - Cache *cachePtr = TclpGetAllocCache(); + Cache *cachePtr; Block *blockPtr; register int bucket; size_t size; + if (sizeof(int) >= sizeof(size_t)) { + /* An unsigned int overflow can also be a size_t overflow */ + const size_t zero = 0; + const size_t max = ~zero; + + if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { + /* Requested allocation exceeds memory */ + return NULL; + } + } + + cachePtr = TclpGetAllocCache(); if (cachePtr == NULL) { cachePtr = GetCache(); } @@ -429,7 +441,7 @@ TclpFree(char *ptr) char * TclpRealloc(char *ptr, unsigned int reqsize) { - Cache *cachePtr = TclpGetAllocCache(); + Cache *cachePtr; Block *blockPtr; void *new; size_t size, min; @@ -439,6 +451,18 @@ TclpRealloc(char *ptr, unsigned int reqsize) return TclpAlloc(reqsize); } + if (sizeof(int) >= sizeof(size_t)) { + /* An unsigned int overflow can also be a size_t overflow */ + const size_t zero = 0; + const size_t max = ~zero; + + if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { + /* Requested allocation exceeds memory */ + return NULL; + } + } + + cachePtr = TclpGetAllocCache(); if (cachePtr == NULL) { cachePtr = GetCache(); } -- cgit v0.12 From 3ed3e2fa9c66c4985b02e167aca70a0cd2f346ef Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 29 Sep 2009 04:29:24 +0000 Subject: http bump fix --- library/http/pkgIndex.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 315e0cd..27eb168 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,4 +1,4 @@ # Tcl package index file, version 1.1 if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.7.4 [list tclPkgSetup $dir http 2.7.3 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +package ifneeded http 2.7.4 [list tclPkgSetup $dir http 2.7.4 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] -- cgit v0.12 From e86bb45b55c6b47d64f14589e770f19f996aee47 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 29 Sep 2009 04:43:58 +0000 Subject: * generic/tclAlloc.c: Cleaned up various routines in the * generic/tclCkalloc.c: call stacks for memory allocation to * generic/tclInt.h: guarantee that any size values computed * generic/tclThreadAlloc.c: are within the domains of the routines they get passed to. [Bugs 2557696 and 2557796]. --- ChangeLog | 8 ++++++++ generic/tclAlloc.c | 12 +++++++----- generic/tclCkalloc.c | 30 ++++++++++++++++++------------ generic/tclInt.h | 13 ++++++++++++- generic/tclThreadAlloc.c | 30 +++++++++++++++++++++++++++--- 5 files changed, 72 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84cb6ad..0980e51 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-09-29 Don Porter + + * generic/tclAlloc.c: Cleaned up various routines in the + * generic/tclCkalloc.c: call stacks for memory allocation to + * generic/tclInt.h: guarantee that any size values computed + * generic/tclThreadAlloc.c: are within the domains of the routines + they get passed to. [Bugs 2557696 and 2557796]. + 2009-09-11 Don Porter * library/http/http.tcl: Bump to http 2.7.4 to account for diff --git a/generic/tclAlloc.c b/generic/tclAlloc.c index de21c7c..3df29d7 100644 --- a/generic/tclAlloc.c +++ b/generic/tclAlloc.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAlloc.c,v 1.27 2007/12/17 15:28:27 msofer Exp $ + * RCS: @(#) $Id: tclAlloc.c,v 1.27.2.1 2009/09/29 04:43:58 dgp Exp $ */ /* @@ -265,7 +265,7 @@ TclpAlloc( register union overhead *overPtr; register long bucket; register unsigned amount; - struct block *bigBlockPtr; + struct block *bigBlockPtr = NULL; if (!allocInit) { /* @@ -281,9 +281,11 @@ TclpAlloc( * First the simple case: we simple allocate big blocks directly. */ - if (numBytes + OVERHEAD >= MAXMALLOC) { - bigBlockPtr = (struct block *) TclpSysAlloc((unsigned) - (sizeof(struct block) + OVERHEAD + numBytes), 0); + if (numBytes >= MAXMALLOC - OVERHEAD) { + if (numBytes <= UINT_MAX - OVERHEAD -sizeof(struct block)) { + bigBlockPtr = (struct block *) TclpSysAlloc((unsigned) + (sizeof(struct block) + OVERHEAD + numBytes), 0); + } if (bigBlockPtr == NULL) { Tcl_MutexUnlock(allocMutexPtr); return NULL; diff --git a/generic/tclCkalloc.c b/generic/tclCkalloc.c index ee259d4..a29208a 100644 --- a/generic/tclCkalloc.c +++ b/generic/tclCkalloc.c @@ -14,7 +14,7 @@ * * This code contributed by Karl Lehenbauer and Mark Diekhans * - * RCS: @(#) $Id: tclCkalloc.c,v 1.32 2007/04/23 20:33:56 das Exp $ + * RCS: @(#) $Id: tclCkalloc.c,v 1.32.4.1 2009/09/29 04:43:58 dgp Exp $ */ #include "tclInt.h" @@ -87,8 +87,8 @@ static struct mem_header *allocHead = NULL; /* List of allocated structures */ static int total_mallocs = 0; static int total_frees = 0; -static int current_bytes_malloced = 0; -static int maximum_bytes_malloced = 0; +static size_t current_bytes_malloced = 0; +static size_t maximum_bytes_malloced = 0; static int current_malloc_packets = 0; static int maximum_malloc_packets = 0; static int break_on_malloc = 0; @@ -175,11 +175,11 @@ TclDumpMemoryInfo( total_frees); fprintf(outFile,"current packets allocated %10d\n", current_malloc_packets); - fprintf(outFile,"current bytes allocated %10d\n", + fprintf(outFile,"current bytes allocated %10lu\n", current_bytes_malloced); fprintf(outFile,"maximum packets allocated %10d\n", maximum_malloc_packets); - fprintf(outFile,"maximum bytes allocated %10d\n", + fprintf(outFile,"maximum bytes allocated %10lu\n", maximum_bytes_malloced); } @@ -376,14 +376,17 @@ Tcl_DbCkalloc( CONST char *file, int line) { - struct mem_header *result; + struct mem_header *result = NULL; if (validate_memory) { Tcl_ValidateAllMemory(file, line); } - result = (struct mem_header *) TclpAlloc((unsigned)size + - sizeof(struct mem_header) + HIGH_GUARD_SIZE); + /* Don't let size argument to TclpAlloc overflow */ + if (size <= UINT_MAX - HIGH_GUARD_SIZE -sizeof(struct mem_header)) { + result = (struct mem_header *) TclpAlloc((unsigned)size + + sizeof(struct mem_header) + HIGH_GUARD_SIZE); + } if (result == NULL) { fflush(stdout); TclDumpMemoryInfo(stderr); @@ -467,14 +470,17 @@ Tcl_AttemptDbCkalloc( CONST char *file, int line) { - struct mem_header *result; + struct mem_header *result = NULL; if (validate_memory) { Tcl_ValidateAllMemory(file, line); } - result = (struct mem_header *) TclpAlloc((unsigned)size + - sizeof(struct mem_header) + HIGH_GUARD_SIZE); + /* Don't let size argument to TclpAlloc overflow */ + if (size <= UINT_MAX - HIGH_GUARD_SIZE - sizeof(struct mem_header)) { + result = (struct mem_header *) TclpAlloc((unsigned)size + + sizeof(struct mem_header) + HIGH_GUARD_SIZE); + } if (result == NULL) { fflush(stdout); TclDumpMemoryInfo(stderr); @@ -843,7 +849,7 @@ MemoryCmd( } if (strcmp(argv[1],"info") == 0) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "%-25s %10d\n%-25s %10d\n%-25s %10d\n%-25s %10d\n%-25s %10d\n%-25s %10d\n", + "%-25s %10d\n%-25s %10d\n%-25s %10d\n%-25s %10lu\n%-25s %10d\n%-25s %10lu\n", "total mallocs", total_mallocs, "total frees", total_frees, "current packets allocated", current_malloc_packets, "current bytes allocated", current_bytes_malloced, diff --git a/generic/tclInt.h b/generic/tclInt.h index b39eeb6..30c663f 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362.2.8 2009/08/25 21:01:05 andreas_kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.9 2009/09/29 04:43:58 dgp Exp $ */ #ifndef _TCLINT @@ -3607,10 +3607,15 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr); *---------------------------------------------------------------- */ +#define TCL_MAX_TOKENS (int)(UINT_MAX / sizeof(Tcl_Token)) #define TCL_MIN_TOKEN_GROWTH 50 #define TclGrowTokenArray(tokenPtr, used, available, append, staticPtr) \ { \ int needed = (used) + (append); \ + if (needed > TCL_MAX_TOKENS) { \ + Tcl_Panic("max # of tokens for a Tcl parse (%d) exceeded", \ + TCL_MAX_TOKENS); \ + } \ if (needed > (available)) { \ int allocated = 2 * needed; \ Tcl_Token *oldPtr = (tokenPtr); \ @@ -3618,10 +3623,16 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr); if (oldPtr == (staticPtr)) { \ oldPtr = NULL; \ } \ + if (allocated > TCL_MAX_TOKENS) { \ + allocated = TCL_MAX_TOKENS; \ + } \ newPtr = (Tcl_Token *) attemptckrealloc( (char *) oldPtr, \ (unsigned int) (allocated * sizeof(Tcl_Token))); \ if (newPtr == NULL) { \ allocated = needed + (append) + TCL_MIN_TOKEN_GROWTH; \ + if (allocated > TCL_MAX_TOKENS) { \ + allocated = TCL_MAX_TOKENS; \ + } \ newPtr = (Tcl_Token *) ckrealloc( (char *) oldPtr, \ (unsigned int) (allocated * sizeof(Tcl_Token))); \ } \ diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index 0850d66..e32ad84 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.27 2008/03/20 09:49:16 dkf Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.27.2.1 2009/09/29 04:43:59 dgp Exp $ */ #include "tclInt.h" @@ -288,11 +288,23 @@ char * TclpAlloc( unsigned int reqSize) { - Cache *cachePtr = TclpGetAllocCache(); + Cache *cachePtr; Block *blockPtr; register int bucket; size_t size; + if (sizeof(int) >= sizeof(size_t)) { + /* An unsigned int overflow can also be a size_t overflow */ + const size_t zero = 0; + const size_t max = ~zero; + + if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { + /* Requested allocation exceeds memory */ + return NULL; + } + } + + cachePtr = TclpGetAllocCache(); if (cachePtr == NULL) { cachePtr = GetCache(); } @@ -414,7 +426,7 @@ TclpRealloc( char *ptr, unsigned int reqSize) { - Cache *cachePtr = TclpGetAllocCache(); + Cache *cachePtr; Block *blockPtr; void *newPtr; size_t size, min; @@ -424,6 +436,18 @@ TclpRealloc( return TclpAlloc(reqSize); } + if (sizeof(int) >= sizeof(size_t)) { + /* An unsigned int overflow can also be a size_t overflow */ + const size_t zero = 0; + const size_t max = ~zero; + + if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { + /* Requested allocation exceeds memory */ + return NULL; + } + } + + cachePtr = TclpGetAllocCache(); if (cachePtr == NULL) { cachePtr = GetCache(); } -- cgit v0.12 From 1d9466df83ad7999d5e606e39121eb3dd68b737f Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 29 Sep 2009 05:03:46 +0000 Subject: * generic/tclAlloc.c: Cleaned up various routines in the * generic/tclCkalloc.c: call stacks for memory allocation to * generic/tclInt.h: guarantee that any size values computed * generic/tclThreadAlloc.c: are within the domains of the routines they get passed to. [Bugs 2557696 and 2557796]. --- ChangeLog | 8 ++++++++ generic/tclAlloc.c | 12 +++++++----- generic/tclCkalloc.c | 30 ++++++++++++++++++------------ generic/tclInt.h | 17 ++++++++++++++--- generic/tclThreadAlloc.c | 30 +++++++++++++++++++++++++++--- 5 files changed, 74 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index c0b5b3d..5fcf4a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-09-29 Don Porter + + * generic/tclAlloc.c: Cleaned up various routines in the + * generic/tclCkalloc.c: call stacks for memory allocation to + * generic/tclInt.h: guarantee that any size values computed + * generic/tclThreadAlloc.c: are within the domains of the routines + they get passed to. [Bugs 2557696 and 2557796]. + 2009-09-28 Don Porter * generic/tclCmdMZ.c: Replaced TclProcessReturn() calls with diff --git a/generic/tclAlloc.c b/generic/tclAlloc.c index de21c7c..04627a6 100644 --- a/generic/tclAlloc.c +++ b/generic/tclAlloc.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAlloc.c,v 1.27 2007/12/17 15:28:27 msofer Exp $ + * RCS: @(#) $Id: tclAlloc.c,v 1.28 2009/09/29 05:03:46 dgp Exp $ */ /* @@ -265,7 +265,7 @@ TclpAlloc( register union overhead *overPtr; register long bucket; register unsigned amount; - struct block *bigBlockPtr; + struct block *bigBlockPtr = NULL; if (!allocInit) { /* @@ -281,9 +281,11 @@ TclpAlloc( * First the simple case: we simple allocate big blocks directly. */ - if (numBytes + OVERHEAD >= MAXMALLOC) { - bigBlockPtr = (struct block *) TclpSysAlloc((unsigned) - (sizeof(struct block) + OVERHEAD + numBytes), 0); + if (numBytes >= MAXMALLOC - OVERHEAD) { + if (numBytes <= UINT_MAX - OVERHEAD -sizeof(struct block)) { + bigBlockPtr = (struct block *) TclpSysAlloc((unsigned) + (sizeof(struct block) + OVERHEAD + numBytes), 0); + } if (bigBlockPtr == NULL) { Tcl_MutexUnlock(allocMutexPtr); return NULL; diff --git a/generic/tclCkalloc.c b/generic/tclCkalloc.c index 9a3b4e3..9d9343f 100644 --- a/generic/tclCkalloc.c +++ b/generic/tclCkalloc.c @@ -14,7 +14,7 @@ * * This code contributed by Karl Lehenbauer and Mark Diekhans * - * RCS: @(#) $Id: tclCkalloc.c,v 1.36 2009/06/18 09:41:26 dkf Exp $ + * RCS: @(#) $Id: tclCkalloc.c,v 1.37 2009/09/29 05:03:46 dgp Exp $ */ #include "tclInt.h" @@ -87,8 +87,8 @@ static struct mem_header *allocHead = NULL; /* List of allocated structures */ static int total_mallocs = 0; static int total_frees = 0; -static int current_bytes_malloced = 0; -static int maximum_bytes_malloced = 0; +static size_t current_bytes_malloced = 0; +static size_t maximum_bytes_malloced = 0; static int current_malloc_packets = 0; static int maximum_malloc_packets = 0; static int break_on_malloc = 0; @@ -175,11 +175,11 @@ TclDumpMemoryInfo( total_frees); fprintf(outFile,"current packets allocated %10d\n", current_malloc_packets); - fprintf(outFile,"current bytes allocated %10d\n", + fprintf(outFile,"current bytes allocated %10lu\n", current_bytes_malloced); fprintf(outFile,"maximum packets allocated %10d\n", maximum_malloc_packets); - fprintf(outFile,"maximum bytes allocated %10d\n", + fprintf(outFile,"maximum bytes allocated %10lu\n", maximum_bytes_malloced); } @@ -376,14 +376,17 @@ Tcl_DbCkalloc( const char *file, int line) { - struct mem_header *result; + struct mem_header *result = NULL; if (validate_memory) { Tcl_ValidateAllMemory(file, line); } - result = (struct mem_header *) TclpAlloc((unsigned)size + - sizeof(struct mem_header) + HIGH_GUARD_SIZE); + /* Don't let size argument to TclpAlloc overflow */ + if (size <= UINT_MAX - HIGH_GUARD_SIZE -sizeof(struct mem_header)) { + result = (struct mem_header *) TclpAlloc((unsigned)size + + sizeof(struct mem_header) + HIGH_GUARD_SIZE); + } if (result == NULL) { fflush(stdout); TclDumpMemoryInfo(stderr); @@ -467,14 +470,17 @@ Tcl_AttemptDbCkalloc( const char *file, int line) { - struct mem_header *result; + struct mem_header *result = NULL; if (validate_memory) { Tcl_ValidateAllMemory(file, line); } - result = (struct mem_header *) TclpAlloc((unsigned)size + - sizeof(struct mem_header) + HIGH_GUARD_SIZE); + /* Don't let size argument to TclpAlloc overflow */ + if (size <= UINT_MAX - HIGH_GUARD_SIZE - sizeof(struct mem_header)) { + result = (struct mem_header *) TclpAlloc((unsigned)size + + sizeof(struct mem_header) + HIGH_GUARD_SIZE); + } if (result == NULL) { fflush(stdout); TclDumpMemoryInfo(stderr); @@ -842,7 +848,7 @@ MemoryCmd( } if (strcmp(argv[1],"info") == 0) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "%-25s %10d\n%-25s %10d\n%-25s %10d\n%-25s %10d\n%-25s %10d\n%-25s %10d\n", + "%-25s %10d\n%-25s %10d\n%-25s %10d\n%-25s %10lu\n%-25s %10d\n%-25s %10lu\n", "total mallocs", total_mallocs, "total frees", total_frees, "current packets allocated", current_malloc_packets, "current bytes allocated", current_bytes_malloced, diff --git a/generic/tclInt.h b/generic/tclInt.h index d34be28..1d1851e 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.443 2009/09/24 17:19:18 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.444 2009/09/29 05:03:46 dgp Exp $ */ #ifndef _TCLINT @@ -3875,10 +3875,15 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, const char *file, *---------------------------------------------------------------- */ +#define TCL_MAX_TOKENS (int)(UINT_MAX / sizeof(Tcl_Token)) #define TCL_MIN_TOKEN_GROWTH 50 #define TclGrowTokenArray(tokenPtr, used, available, append, staticPtr) \ { \ int needed = (used) + (append); \ + if (needed > TCL_MAX_TOKENS) { \ + Tcl_Panic("max # of tokens for a Tcl parse (%d) exceeded", \ + TCL_MAX_TOKENS); \ + } \ if (needed > (available)) { \ int allocated = 2 * needed; \ Tcl_Token *oldPtr = (tokenPtr); \ @@ -3886,12 +3891,18 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, const char *file, if (oldPtr == (staticPtr)) { \ oldPtr = NULL; \ } \ + if (allocated > TCL_MAX_TOKENS) { \ + allocated = TCL_MAX_TOKENS; \ + } \ newPtr = (Tcl_Token *) attemptckrealloc((char *) oldPtr, \ - (unsigned) (allocated * sizeof(Tcl_Token))); \ + (unsigned int) (allocated * sizeof(Tcl_Token))); \ if (newPtr == NULL) { \ allocated = needed + (append) + TCL_MIN_TOKEN_GROWTH; \ + if (allocated > TCL_MAX_TOKENS) { \ + allocated = TCL_MAX_TOKENS; \ + } \ newPtr = (Tcl_Token *) ckrealloc((char *) oldPtr, \ - (unsigned) (allocated * sizeof(Tcl_Token))); \ + (unsigned int) (allocated * sizeof(Tcl_Token))); \ } \ (available) = allocated; \ if (oldPtr == NULL) { \ diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index ba30637..a47b0d8 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.29 2009/01/09 11:21:46 dkf Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.30 2009/09/29 05:03:46 dgp Exp $ */ #include "tclInt.h" @@ -292,11 +292,23 @@ char * TclpAlloc( unsigned int reqSize) { - Cache *cachePtr = TclpGetAllocCache(); + Cache *cachePtr; Block *blockPtr; register int bucket; size_t size; + if (sizeof(int) >= sizeof(size_t)) { + /* An unsigned int overflow can also be a size_t overflow */ + const size_t zero = 0; + const size_t max = ~zero; + + if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { + /* Requested allocation exceeds memory */ + return NULL; + } + } + + cachePtr = TclpGetAllocCache(); if (cachePtr == NULL) { cachePtr = GetCache(); } @@ -418,7 +430,7 @@ TclpRealloc( char *ptr, unsigned int reqSize) { - Cache *cachePtr = TclpGetAllocCache(); + Cache *cachePtr; Block *blockPtr; void *newPtr; size_t size, min; @@ -428,6 +440,18 @@ TclpRealloc( return TclpAlloc(reqSize); } + if (sizeof(int) >= sizeof(size_t)) { + /* An unsigned int overflow can also be a size_t overflow */ + const size_t zero = 0; + const size_t max = ~zero; + + if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { + /* Requested allocation exceeds memory */ + return NULL; + } + } + + cachePtr = TclpGetAllocCache(); if (cachePtr == NULL) { cachePtr = GetCache(); } -- cgit v0.12 From 31597e659d7ed47cae7a3637544fc8810a12109e Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 30 Sep 2009 03:11:24 +0000 Subject: * generic/tclDictObj.c: Updated freeIntRepProc routines so * generic/tclExecute.c: that they set the typePtr field to * generic/tclIO.c: NULL so that the Tcl_Obj is not left * generic/tclIndexObj.c: in an inconsistent state. * generic/tclInt.h: [Bug 2857044] * generic/tclListObj.c: * generic/tclNamesp.c: * generic/tclOOCall.c: * generic/tclObj.c: * generic/tclPathObj.c: * generic/tclProc.c: * generic/tclRegexp.c: * generic/tclStringObj.c: --- ChangeLog | 14 ++++++++++++++ generic/tclDictObj.c | 3 ++- generic/tclExecute.c | 5 ++--- generic/tclIO.c | 3 ++- generic/tclIndexObj.c | 3 ++- generic/tclInt.h | 3 ++- generic/tclListObj.c | 3 ++- generic/tclNamesp.c | 4 +++- generic/tclOOCall.c | 8 +++----- generic/tclObj.c | 4 +++- generic/tclPathObj.c | 3 ++- generic/tclProc.c | 3 ++- generic/tclRegexp.c | 3 ++- generic/tclStringObj.c | 3 ++- 14 files changed, 43 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5fcf4a7..1d0b2f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,19 @@ 2009-09-29 Don Porter + * generic/tclDictObj.c: Updated freeIntRepProc routines so + * generic/tclExecute.c: that they set the typePtr field to + * generic/tclIO.c: NULL so that the Tcl_Obj is not left + * generic/tclIndexObj.c: in an inconsistent state. + * generic/tclInt.h: [Bug 2857044] + * generic/tclListObj.c: + * generic/tclNamesp.c: + * generic/tclOOCall.c: + * generic/tclObj.c: + * generic/tclPathObj.c: + * generic/tclProc.c: + * generic/tclRegexp.c: + * generic/tclStringObj.c: + * generic/tclAlloc.c: Cleaned up various routines in the * generic/tclCkalloc.c: call stacks for memory allocation to * generic/tclInt.h: guarantee that any size values computed diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index ef0ebe9..d30a769 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDictObj.c,v 1.77 2009/02/03 23:34:32 nijtmans Exp $ + * RCS: @(#) $Id: tclDictObj.c,v 1.78 2009/09/30 03:11:24 dgp Exp $ */ #include "tclInt.h" @@ -411,6 +411,7 @@ FreeDictInternalRep( } dictPtr->internalRep.otherValuePtr = NULL; /* Belt and braces! */ + dictPtr->typePtr = NULL; } /* diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 778b679..587dd3e 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.446 2009/09/07 07:28:38 das Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.447 2009/09/30 03:11:25 dgp Exp $ */ #include "tclInt.h" @@ -1393,8 +1393,7 @@ CompileExprObj( || (codePtr->nsPtr != namespacePtr) || (codePtr->nsEpoch != namespacePtr->resolverEpoch) || (codePtr->localCachePtr != iPtr->varFramePtr->localCachePtr)) { - objPtr->typePtr->freeIntRepProc(objPtr); - objPtr->typePtr = (Tcl_ObjType *) NULL; + FreeExprCodeInternalRep(objPtr); } } if (objPtr->typePtr != &exprCodeType) { diff --git a/generic/tclIO.c b/generic/tclIO.c index 6ace57a..737e64e 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.161 2009/09/07 07:28:38 das Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.162 2009/09/30 03:11:26 dgp Exp $ */ #include "tclInt.h" @@ -11131,6 +11131,7 @@ FreeChannelIntRep( Tcl_Obj *objPtr) /* Object with internal rep to free. */ { Tcl_Release(GET_CHANNELSTATE(objPtr)); + objPtr->typePtr = NULL; } #if 0 diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index bbdae95..7125891 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIndexObj.c,v 1.51 2009/04/27 09:41:49 nijtmans Exp $ + * RCS: @(#) $Id: tclIndexObj.c,v 1.52 2009/09/30 03:11:26 dgp Exp $ */ #include "tclInt.h" @@ -499,6 +499,7 @@ FreeIndex( Tcl_Obj *objPtr) { ckfree((char *) objPtr->internalRep.otherValuePtr); + objPtr->typePtr = NULL; } /* diff --git a/generic/tclInt.h b/generic/tclInt.h index 1d1851e..0f6654b 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.444 2009/09/29 05:03:46 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.445 2009/09/30 03:11:26 dgp Exp $ */ #ifndef _TCLINT @@ -3842,6 +3842,7 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, const char *file, if ((objPtr)->typePtr != NULL && \ (objPtr)->typePtr->freeIntRepProc != NULL) { \ (objPtr)->typePtr->freeIntRepProc(objPtr); \ + (objPtr)->typePtr = NULL; \ } /* diff --git a/generic/tclListObj.c b/generic/tclListObj.c index 50653ab..659017c 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclListObj.c,v 1.57 2009/02/10 22:49:52 nijtmans Exp $ + * RCS: @(#) $Id: tclListObj.c,v 1.58 2009/09/30 03:11:26 dgp Exp $ */ #include "tclInt.h" @@ -1614,6 +1614,7 @@ FreeListInternalRep( listPtr->internalRep.twoPtrValue.ptr1 = NULL; listPtr->internalRep.twoPtrValue.ptr2 = NULL; + listPtr->typePtr = NULL; } /* diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 74d5ebb..94ade8f 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -23,7 +23,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.192 2009/07/15 13:17:18 dkf Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.193 2009/09/30 03:11:26 dgp Exp $ */ #include "tclInt.h" @@ -4770,6 +4770,7 @@ FreeNsNameInternalRep( } ckfree((char *) resNamePtr); } + objPtr->typePtr = NULL; } /* @@ -7469,6 +7470,7 @@ FreeEnsembleCmdRep( NamespaceFree(ensembleCmd->nsPtr); } ckfree((char *) ensembleCmd); + objPtr->typePtr = NULL; } /* diff --git a/generic/tclOOCall.c b/generic/tclOOCall.c index e9760f7..e8f9757 100644 --- a/generic/tclOOCall.c +++ b/generic/tclOOCall.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclOOCall.c,v 1.14 2009/07/12 14:51:30 dkf Exp $ + * RCS: @(#) $Id: tclOOCall.c,v 1.15 2009/09/30 03:11:26 dgp Exp $ */ #ifdef HAVE_CONFIG_H @@ -173,9 +173,7 @@ StashCallChain( CallChain *callPtr) { callPtr->refCount++; - if (objPtr->typePtr && objPtr->typePtr->freeIntRepProc) { - objPtr->typePtr->freeIntRepProc(objPtr); - } + TclFreeIntRep(objPtr); objPtr->typePtr = &methodNameType; objPtr->internalRep.otherValuePtr = callPtr; } @@ -956,7 +954,7 @@ TclOOGetCallContext( callPtr->refCount++; goto returnContext; } - cacheInThisObj->typePtr->freeIntRepProc(cacheInThisObj); + FreeMethodNameRep(cacheInThisObj); } if (oPtr->flags & USE_CLASS_CACHE) { diff --git a/generic/tclObj.c b/generic/tclObj.c index 2bbc009..e32819d 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.160 2009/09/17 08:39:40 das Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.161 2009/09/30 03:11:26 dgp Exp $ */ #include "tclInt.h" @@ -3130,6 +3130,7 @@ FreeBignum( if ((long) objPtr->internalRep.ptrAndLongRep.value < 0) { ckfree((char *) objPtr->internalRep.ptrAndLongRep.ptr); } + objPtr->typePtr = NULL; } /* @@ -4218,6 +4219,7 @@ FreeCmdNameInternalRep( ckfree((char *) resPtr); } } + objPtr->typePtr = NULL; } /* diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index 3b907a4..7599529 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.82 2009/08/20 15:17:39 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.83 2009/09/30 03:11:26 dgp Exp $ */ #include "tclInt.h" @@ -2601,6 +2601,7 @@ FreeFsPathInternalRep( } ckfree((char*) fsPathPtr); + pathPtr->typePtr = NULL; } static void diff --git a/generic/tclProc.c b/generic/tclProc.c index 4eb6c17..806bf11 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.175 2009/09/07 07:28:38 das Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.176 2009/09/30 03:11:26 dgp Exp $ */ #include "tclInt.h" @@ -2439,6 +2439,7 @@ FreeLambdaInternalRep( TclProcCleanupProc(procPtr); } TclDecrRefCount(nsObjPtr); + objPtr->typePtr = NULL; } static int diff --git a/generic/tclRegexp.c b/generic/tclRegexp.c index d0505e0..b912345 100644 --- a/generic/tclRegexp.c +++ b/generic/tclRegexp.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclRegexp.c,v 1.31 2009/02/10 22:49:54 nijtmans Exp $ + * RCS: @(#) $Id: tclRegexp.c,v 1.32 2009/09/30 03:11:26 dgp Exp $ */ #include "tclInt.h" @@ -760,6 +760,7 @@ FreeRegexpInternalRep( if (--(regexpRepPtr->refCount) <= 0) { FreeRegexp(regexpRepPtr); } + objPtr->typePtr = NULL; } /* diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 8b33fe1..8787fd9 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -33,7 +33,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStringObj.c,v 1.129 2009/08/27 19:34:24 dgp Exp $ */ + * RCS: @(#) $Id: tclStringObj.c,v 1.130 2009/09/30 03:11:26 dgp Exp $ */ #include "tclInt.h" #include "tommath.h" @@ -2954,6 +2954,7 @@ FreeStringInternalRep( Tcl_Obj *objPtr) /* Object with internal rep to free. */ { ckfree((char *) GET_STRING(objPtr)); + objPtr->typePtr = NULL; } /* -- cgit v0.12 From 676ad5463f70db98f8ae3e63ace7bba8ecccbd54 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 2 Oct 2009 17:54:56 +0000 Subject: * library/tzdata/Africa/Cairo: * library/tzdata/Asia/Gaza: * library/tzdata/Asia/Karachi: * library/tzdata/Pacific/Apia: Olson's tzdata2009n. --- ChangeLog | 7 ++ library/tzdata/Africa/Cairo | 2 +- library/tzdata/Asia/Gaza | 182 ++++++++++++++++++++++---------------------- library/tzdata/Asia/Karachi | 2 +- library/tzdata/Pacific/Apia | 2 + 5 files changed, 102 insertions(+), 93 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0980e51..fb7ef95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-02 Kevin B. Kenny + + * library/tzdata/Africa/Cairo: + * library/tzdata/Asia/Gaza: + * library/tzdata/Asia/Karachi: + * library/tzdata/Pacific/Apia: Olson's tzdata2009n. + 2009-09-29 Don Porter * generic/tclAlloc.c: Cleaned up various routines in the diff --git a/library/tzdata/Africa/Cairo b/library/tzdata/Africa/Cairo index 5eca6e2..e65ea66 100644 --- a/library/tzdata/Africa/Cairo +++ b/library/tzdata/Africa/Cairo @@ -120,7 +120,7 @@ set TZData(:Africa/Cairo) { {1209074400 10800 1 EEST} {1219957200 7200 0 EET} {1240524000 10800 1 EEST} - {1253826000 7200 0 EET} + {1250802000 7200 0 EET} {1272578400 10800 1 EEST} {1285880400 7200 0 EET} {1304028000 10800 1 EEST} diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza index e0c8eb0..127855d 100644 --- a/library/tzdata/Asia/Gaza +++ b/library/tzdata/Asia/Gaza @@ -91,185 +91,185 @@ set TZData(:Asia/Gaza) { {1207000800 10800 1 EEST} {1219964400 7200 0 EET} {1238104800 10800 1 EEST} - {1254092400 7200 0 EET} + {1252018800 7200 0 EET} {1269554400 10800 1 EEST} - {1285542000 7200 0 EET} + {1283468400 7200 0 EET} {1301004000 10800 1 EEST} - {1316991600 7200 0 EET} + {1314918000 7200 0 EET} {1333058400 10800 1 EEST} - {1348441200 7200 0 EET} + {1346972400 7200 0 EET} {1364508000 10800 1 EEST} - {1380495600 7200 0 EET} + {1378422000 7200 0 EET} {1395957600 10800 1 EEST} - {1411945200 7200 0 EET} + {1409871600 7200 0 EET} {1427407200 10800 1 EEST} - {1443394800 7200 0 EET} + {1441321200 7200 0 EET} {1458856800 10800 1 EEST} - {1474844400 7200 0 EET} + {1472770800 7200 0 EET} {1490911200 10800 1 EEST} - {1506294000 7200 0 EET} + {1504220400 7200 0 EET} {1522360800 10800 1 EEST} - {1537743600 7200 0 EET} + {1536274800 7200 0 EET} {1553810400 10800 1 EEST} - {1569798000 7200 0 EET} + {1567724400 7200 0 EET} {1585260000 10800 1 EEST} - {1601247600 7200 0 EET} + {1599174000 7200 0 EET} {1616709600 10800 1 EEST} - {1632697200 7200 0 EET} + {1630623600 7200 0 EET} {1648159200 10800 1 EEST} - {1664146800 7200 0 EET} + {1662073200 7200 0 EET} {1680213600 10800 1 EEST} - {1695596400 7200 0 EET} + {1693522800 7200 0 EET} {1711663200 10800 1 EEST} - {1727650800 7200 0 EET} + {1725577200 7200 0 EET} {1743112800 10800 1 EEST} - {1759100400 7200 0 EET} + {1757026800 7200 0 EET} {1774562400 10800 1 EEST} - {1790550000 7200 0 EET} + {1788476400 7200 0 EET} {1806012000 10800 1 EEST} - {1821999600 7200 0 EET} + {1819926000 7200 0 EET} {1838066400 10800 1 EEST} - {1853449200 7200 0 EET} + {1851375600 7200 0 EET} {1869516000 10800 1 EEST} - {1884898800 7200 0 EET} + {1883430000 7200 0 EET} {1900965600 10800 1 EEST} - {1916953200 7200 0 EET} + {1914879600 7200 0 EET} {1932415200 10800 1 EEST} - {1948402800 7200 0 EET} + {1946329200 7200 0 EET} {1963864800 10800 1 EEST} - {1979852400 7200 0 EET} + {1977778800 7200 0 EET} {1995314400 10800 1 EEST} - {2011302000 7200 0 EET} + {2009228400 7200 0 EET} {2027368800 10800 1 EEST} - {2042751600 7200 0 EET} + {2040678000 7200 0 EET} {2058818400 10800 1 EEST} - {2074201200 7200 0 EET} + {2072732400 7200 0 EET} {2090268000 10800 1 EEST} - {2106255600 7200 0 EET} + {2104182000 7200 0 EET} {2121717600 10800 1 EEST} - {2137705200 7200 0 EET} + {2135631600 7200 0 EET} {2153167200 10800 1 EEST} - {2169154800 7200 0 EET} + {2167081200 7200 0 EET} {2184616800 10800 1 EEST} - {2200604400 7200 0 EET} + {2198530800 7200 0 EET} {2216671200 10800 1 EEST} - {2232054000 7200 0 EET} + {2230585200 7200 0 EET} {2248120800 10800 1 EEST} - {2264108400 7200 0 EET} + {2262034800 7200 0 EET} {2279570400 10800 1 EEST} - {2295558000 7200 0 EET} + {2293484400 7200 0 EET} {2311020000 10800 1 EEST} - {2327007600 7200 0 EET} + {2324934000 7200 0 EET} {2342469600 10800 1 EEST} - {2358457200 7200 0 EET} + {2356383600 7200 0 EET} {2374524000 10800 1 EEST} - {2389906800 7200 0 EET} + {2387833200 7200 0 EET} {2405973600 10800 1 EEST} - {2421356400 7200 0 EET} + {2419887600 7200 0 EET} {2437423200 10800 1 EEST} - {2453410800 7200 0 EET} + {2451337200 7200 0 EET} {2468872800 10800 1 EEST} - {2484860400 7200 0 EET} + {2482786800 7200 0 EET} {2500322400 10800 1 EEST} - {2516310000 7200 0 EET} + {2514236400 7200 0 EET} {2531772000 10800 1 EEST} - {2547759600 7200 0 EET} + {2545686000 7200 0 EET} {2563826400 10800 1 EEST} - {2579209200 7200 0 EET} + {2577135600 7200 0 EET} {2595276000 10800 1 EEST} - {2611263600 7200 0 EET} + {2609190000 7200 0 EET} {2626725600 10800 1 EEST} - {2642713200 7200 0 EET} + {2640639600 7200 0 EET} {2658175200 10800 1 EEST} - {2674162800 7200 0 EET} + {2672089200 7200 0 EET} {2689624800 10800 1 EEST} - {2705612400 7200 0 EET} + {2703538800 7200 0 EET} {2721679200 10800 1 EEST} - {2737062000 7200 0 EET} + {2734988400 7200 0 EET} {2753128800 10800 1 EEST} - {2768511600 7200 0 EET} + {2767042800 7200 0 EET} {2784578400 10800 1 EEST} - {2800566000 7200 0 EET} + {2798492400 7200 0 EET} {2816028000 10800 1 EEST} - {2832015600 7200 0 EET} + {2829942000 7200 0 EET} {2847477600 10800 1 EEST} - {2863465200 7200 0 EET} + {2861391600 7200 0 EET} {2878927200 10800 1 EEST} - {2894914800 7200 0 EET} + {2892841200 7200 0 EET} {2910981600 10800 1 EEST} - {2926364400 7200 0 EET} + {2924290800 7200 0 EET} {2942431200 10800 1 EEST} - {2957814000 7200 0 EET} + {2956345200 7200 0 EET} {2973880800 10800 1 EEST} - {2989868400 7200 0 EET} + {2987794800 7200 0 EET} {3005330400 10800 1 EEST} - {3021318000 7200 0 EET} + {3019244400 7200 0 EET} {3036780000 10800 1 EEST} - {3052767600 7200 0 EET} + {3050694000 7200 0 EET} {3068229600 10800 1 EEST} - {3084217200 7200 0 EET} + {3082143600 7200 0 EET} {3100284000 10800 1 EEST} - {3115666800 7200 0 EET} + {3114198000 7200 0 EET} {3131733600 10800 1 EEST} - {3147721200 7200 0 EET} + {3145647600 7200 0 EET} {3163183200 10800 1 EEST} - {3179170800 7200 0 EET} + {3177097200 7200 0 EET} {3194632800 10800 1 EEST} - {3210620400 7200 0 EET} + {3208546800 7200 0 EET} {3226082400 10800 1 EEST} - {3242070000 7200 0 EET} + {3239996400 7200 0 EET} {3258136800 10800 1 EEST} - {3273519600 7200 0 EET} + {3271446000 7200 0 EET} {3289586400 10800 1 EEST} - {3304969200 7200 0 EET} + {3303500400 7200 0 EET} {3321036000 10800 1 EEST} - {3337023600 7200 0 EET} + {3334950000 7200 0 EET} {3352485600 10800 1 EEST} - {3368473200 7200 0 EET} + {3366399600 7200 0 EET} {3383935200 10800 1 EEST} - {3399922800 7200 0 EET} + {3397849200 7200 0 EET} {3415384800 10800 1 EEST} - {3431372400 7200 0 EET} + {3429298800 7200 0 EET} {3447439200 10800 1 EEST} - {3462822000 7200 0 EET} + {3460748400 7200 0 EET} {3478888800 10800 1 EEST} - {3494876400 7200 0 EET} + {3492802800 7200 0 EET} {3510338400 10800 1 EEST} - {3526326000 7200 0 EET} + {3524252400 7200 0 EET} {3541788000 10800 1 EEST} - {3557775600 7200 0 EET} + {3555702000 7200 0 EET} {3573237600 10800 1 EEST} - {3589225200 7200 0 EET} + {3587151600 7200 0 EET} {3605292000 10800 1 EEST} - {3620674800 7200 0 EET} + {3618601200 7200 0 EET} {3636741600 10800 1 EEST} - {3652124400 7200 0 EET} + {3650655600 7200 0 EET} {3668191200 10800 1 EEST} - {3684178800 7200 0 EET} + {3682105200 7200 0 EET} {3699640800 10800 1 EEST} - {3715628400 7200 0 EET} + {3713554800 7200 0 EET} {3731090400 10800 1 EEST} - {3747078000 7200 0 EET} + {3745004400 7200 0 EET} {3762540000 10800 1 EEST} - {3778527600 7200 0 EET} + {3776454000 7200 0 EET} {3794594400 10800 1 EEST} - {3809977200 7200 0 EET} + {3807903600 7200 0 EET} {3826044000 10800 1 EEST} - {3841426800 7200 0 EET} + {3839958000 7200 0 EET} {3857493600 10800 1 EEST} - {3873481200 7200 0 EET} + {3871407600 7200 0 EET} {3888943200 10800 1 EEST} - {3904930800 7200 0 EET} + {3902857200 7200 0 EET} {3920392800 10800 1 EEST} - {3936380400 7200 0 EET} + {3934306800 7200 0 EET} {3951842400 10800 1 EEST} - {3967830000 7200 0 EET} + {3965756400 7200 0 EET} {3983896800 10800 1 EEST} - {3999279600 7200 0 EET} + {3997810800 7200 0 EET} {4015346400 10800 1 EEST} - {4031334000 7200 0 EET} + {4029260400 7200 0 EET} {4046796000 10800 1 EEST} - {4062783600 7200 0 EET} + {4060710000 7200 0 EET} {4078245600 10800 1 EEST} - {4094233200 7200 0 EET} + {4092159600 7200 0 EET} } diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 3faa31e..6535471 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -12,5 +12,5 @@ set TZData(:Asia/Karachi) { {1212260400 21600 1 PKST} {1225476000 18000 0 PKT} {1239735600 21600 1 PKST} - {1257012000 18000 0 PKT} + {1254333600 18000 0 PKT} } diff --git a/library/tzdata/Pacific/Apia b/library/tzdata/Pacific/Apia index 5d34ed1..60e4b2c 100644 --- a/library/tzdata/Pacific/Apia +++ b/library/tzdata/Pacific/Apia @@ -5,4 +5,6 @@ set TZData(:Pacific/Apia) { {-2855737984 -41216 0 LMT} {-1861878784 -41400 0 SAMT} {-631110600 -39600 0 WST} + {1254654000 -36000 1 WSDT} + {1269770400 -39600 0 WST} } -- cgit v0.12 From 6de9f3e9644ef3077ed175cfeb8c6ea25ed98691 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 2 Oct 2009 17:59:19 +0000 Subject: * library/tzdata/Africa/Cairo: * library/tzdata/Asia/Gaza: * library/tzdata/Asia/Karachi: * library/tzdata/Pacific/Apia: Olson's tzdata2009n. --- ChangeLog | 7 ++ library/tzdata/Africa/Cairo | 2 +- library/tzdata/Asia/Gaza | 182 ++++++++++++++++++++++---------------------- library/tzdata/Asia/Karachi | 2 +- library/tzdata/Pacific/Apia | 2 + 5 files changed, 102 insertions(+), 93 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1d0b2f1..a514a58 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-02 Kevin B. Kenny + + * library/tzdata/Africa/Cairo: + * library/tzdata/Asia/Gaza: + * library/tzdata/Asia/Karachi: + * library/tzdata/Pacific/Apia: Olson's tzdata2009n. + 2009-09-29 Don Porter * generic/tclDictObj.c: Updated freeIntRepProc routines so diff --git a/library/tzdata/Africa/Cairo b/library/tzdata/Africa/Cairo index 5eca6e2..e65ea66 100644 --- a/library/tzdata/Africa/Cairo +++ b/library/tzdata/Africa/Cairo @@ -120,7 +120,7 @@ set TZData(:Africa/Cairo) { {1209074400 10800 1 EEST} {1219957200 7200 0 EET} {1240524000 10800 1 EEST} - {1253826000 7200 0 EET} + {1250802000 7200 0 EET} {1272578400 10800 1 EEST} {1285880400 7200 0 EET} {1304028000 10800 1 EEST} diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza index e0c8eb0..127855d 100644 --- a/library/tzdata/Asia/Gaza +++ b/library/tzdata/Asia/Gaza @@ -91,185 +91,185 @@ set TZData(:Asia/Gaza) { {1207000800 10800 1 EEST} {1219964400 7200 0 EET} {1238104800 10800 1 EEST} - {1254092400 7200 0 EET} + {1252018800 7200 0 EET} {1269554400 10800 1 EEST} - {1285542000 7200 0 EET} + {1283468400 7200 0 EET} {1301004000 10800 1 EEST} - {1316991600 7200 0 EET} + {1314918000 7200 0 EET} {1333058400 10800 1 EEST} - {1348441200 7200 0 EET} + {1346972400 7200 0 EET} {1364508000 10800 1 EEST} - {1380495600 7200 0 EET} + {1378422000 7200 0 EET} {1395957600 10800 1 EEST} - {1411945200 7200 0 EET} + {1409871600 7200 0 EET} {1427407200 10800 1 EEST} - {1443394800 7200 0 EET} + {1441321200 7200 0 EET} {1458856800 10800 1 EEST} - {1474844400 7200 0 EET} + {1472770800 7200 0 EET} {1490911200 10800 1 EEST} - {1506294000 7200 0 EET} + {1504220400 7200 0 EET} {1522360800 10800 1 EEST} - {1537743600 7200 0 EET} + {1536274800 7200 0 EET} {1553810400 10800 1 EEST} - {1569798000 7200 0 EET} + {1567724400 7200 0 EET} {1585260000 10800 1 EEST} - {1601247600 7200 0 EET} + {1599174000 7200 0 EET} {1616709600 10800 1 EEST} - {1632697200 7200 0 EET} + {1630623600 7200 0 EET} {1648159200 10800 1 EEST} - {1664146800 7200 0 EET} + {1662073200 7200 0 EET} {1680213600 10800 1 EEST} - {1695596400 7200 0 EET} + {1693522800 7200 0 EET} {1711663200 10800 1 EEST} - {1727650800 7200 0 EET} + {1725577200 7200 0 EET} {1743112800 10800 1 EEST} - {1759100400 7200 0 EET} + {1757026800 7200 0 EET} {1774562400 10800 1 EEST} - {1790550000 7200 0 EET} + {1788476400 7200 0 EET} {1806012000 10800 1 EEST} - {1821999600 7200 0 EET} + {1819926000 7200 0 EET} {1838066400 10800 1 EEST} - {1853449200 7200 0 EET} + {1851375600 7200 0 EET} {1869516000 10800 1 EEST} - {1884898800 7200 0 EET} + {1883430000 7200 0 EET} {1900965600 10800 1 EEST} - {1916953200 7200 0 EET} + {1914879600 7200 0 EET} {1932415200 10800 1 EEST} - {1948402800 7200 0 EET} + {1946329200 7200 0 EET} {1963864800 10800 1 EEST} - {1979852400 7200 0 EET} + {1977778800 7200 0 EET} {1995314400 10800 1 EEST} - {2011302000 7200 0 EET} + {2009228400 7200 0 EET} {2027368800 10800 1 EEST} - {2042751600 7200 0 EET} + {2040678000 7200 0 EET} {2058818400 10800 1 EEST} - {2074201200 7200 0 EET} + {2072732400 7200 0 EET} {2090268000 10800 1 EEST} - {2106255600 7200 0 EET} + {2104182000 7200 0 EET} {2121717600 10800 1 EEST} - {2137705200 7200 0 EET} + {2135631600 7200 0 EET} {2153167200 10800 1 EEST} - {2169154800 7200 0 EET} + {2167081200 7200 0 EET} {2184616800 10800 1 EEST} - {2200604400 7200 0 EET} + {2198530800 7200 0 EET} {2216671200 10800 1 EEST} - {2232054000 7200 0 EET} + {2230585200 7200 0 EET} {2248120800 10800 1 EEST} - {2264108400 7200 0 EET} + {2262034800 7200 0 EET} {2279570400 10800 1 EEST} - {2295558000 7200 0 EET} + {2293484400 7200 0 EET} {2311020000 10800 1 EEST} - {2327007600 7200 0 EET} + {2324934000 7200 0 EET} {2342469600 10800 1 EEST} - {2358457200 7200 0 EET} + {2356383600 7200 0 EET} {2374524000 10800 1 EEST} - {2389906800 7200 0 EET} + {2387833200 7200 0 EET} {2405973600 10800 1 EEST} - {2421356400 7200 0 EET} + {2419887600 7200 0 EET} {2437423200 10800 1 EEST} - {2453410800 7200 0 EET} + {2451337200 7200 0 EET} {2468872800 10800 1 EEST} - {2484860400 7200 0 EET} + {2482786800 7200 0 EET} {2500322400 10800 1 EEST} - {2516310000 7200 0 EET} + {2514236400 7200 0 EET} {2531772000 10800 1 EEST} - {2547759600 7200 0 EET} + {2545686000 7200 0 EET} {2563826400 10800 1 EEST} - {2579209200 7200 0 EET} + {2577135600 7200 0 EET} {2595276000 10800 1 EEST} - {2611263600 7200 0 EET} + {2609190000 7200 0 EET} {2626725600 10800 1 EEST} - {2642713200 7200 0 EET} + {2640639600 7200 0 EET} {2658175200 10800 1 EEST} - {2674162800 7200 0 EET} + {2672089200 7200 0 EET} {2689624800 10800 1 EEST} - {2705612400 7200 0 EET} + {2703538800 7200 0 EET} {2721679200 10800 1 EEST} - {2737062000 7200 0 EET} + {2734988400 7200 0 EET} {2753128800 10800 1 EEST} - {2768511600 7200 0 EET} + {2767042800 7200 0 EET} {2784578400 10800 1 EEST} - {2800566000 7200 0 EET} + {2798492400 7200 0 EET} {2816028000 10800 1 EEST} - {2832015600 7200 0 EET} + {2829942000 7200 0 EET} {2847477600 10800 1 EEST} - {2863465200 7200 0 EET} + {2861391600 7200 0 EET} {2878927200 10800 1 EEST} - {2894914800 7200 0 EET} + {2892841200 7200 0 EET} {2910981600 10800 1 EEST} - {2926364400 7200 0 EET} + {2924290800 7200 0 EET} {2942431200 10800 1 EEST} - {2957814000 7200 0 EET} + {2956345200 7200 0 EET} {2973880800 10800 1 EEST} - {2989868400 7200 0 EET} + {2987794800 7200 0 EET} {3005330400 10800 1 EEST} - {3021318000 7200 0 EET} + {3019244400 7200 0 EET} {3036780000 10800 1 EEST} - {3052767600 7200 0 EET} + {3050694000 7200 0 EET} {3068229600 10800 1 EEST} - {3084217200 7200 0 EET} + {3082143600 7200 0 EET} {3100284000 10800 1 EEST} - {3115666800 7200 0 EET} + {3114198000 7200 0 EET} {3131733600 10800 1 EEST} - {3147721200 7200 0 EET} + {3145647600 7200 0 EET} {3163183200 10800 1 EEST} - {3179170800 7200 0 EET} + {3177097200 7200 0 EET} {3194632800 10800 1 EEST} - {3210620400 7200 0 EET} + {3208546800 7200 0 EET} {3226082400 10800 1 EEST} - {3242070000 7200 0 EET} + {3239996400 7200 0 EET} {3258136800 10800 1 EEST} - {3273519600 7200 0 EET} + {3271446000 7200 0 EET} {3289586400 10800 1 EEST} - {3304969200 7200 0 EET} + {3303500400 7200 0 EET} {3321036000 10800 1 EEST} - {3337023600 7200 0 EET} + {3334950000 7200 0 EET} {3352485600 10800 1 EEST} - {3368473200 7200 0 EET} + {3366399600 7200 0 EET} {3383935200 10800 1 EEST} - {3399922800 7200 0 EET} + {3397849200 7200 0 EET} {3415384800 10800 1 EEST} - {3431372400 7200 0 EET} + {3429298800 7200 0 EET} {3447439200 10800 1 EEST} - {3462822000 7200 0 EET} + {3460748400 7200 0 EET} {3478888800 10800 1 EEST} - {3494876400 7200 0 EET} + {3492802800 7200 0 EET} {3510338400 10800 1 EEST} - {3526326000 7200 0 EET} + {3524252400 7200 0 EET} {3541788000 10800 1 EEST} - {3557775600 7200 0 EET} + {3555702000 7200 0 EET} {3573237600 10800 1 EEST} - {3589225200 7200 0 EET} + {3587151600 7200 0 EET} {3605292000 10800 1 EEST} - {3620674800 7200 0 EET} + {3618601200 7200 0 EET} {3636741600 10800 1 EEST} - {3652124400 7200 0 EET} + {3650655600 7200 0 EET} {3668191200 10800 1 EEST} - {3684178800 7200 0 EET} + {3682105200 7200 0 EET} {3699640800 10800 1 EEST} - {3715628400 7200 0 EET} + {3713554800 7200 0 EET} {3731090400 10800 1 EEST} - {3747078000 7200 0 EET} + {3745004400 7200 0 EET} {3762540000 10800 1 EEST} - {3778527600 7200 0 EET} + {3776454000 7200 0 EET} {3794594400 10800 1 EEST} - {3809977200 7200 0 EET} + {3807903600 7200 0 EET} {3826044000 10800 1 EEST} - {3841426800 7200 0 EET} + {3839958000 7200 0 EET} {3857493600 10800 1 EEST} - {3873481200 7200 0 EET} + {3871407600 7200 0 EET} {3888943200 10800 1 EEST} - {3904930800 7200 0 EET} + {3902857200 7200 0 EET} {3920392800 10800 1 EEST} - {3936380400 7200 0 EET} + {3934306800 7200 0 EET} {3951842400 10800 1 EEST} - {3967830000 7200 0 EET} + {3965756400 7200 0 EET} {3983896800 10800 1 EEST} - {3999279600 7200 0 EET} + {3997810800 7200 0 EET} {4015346400 10800 1 EEST} - {4031334000 7200 0 EET} + {4029260400 7200 0 EET} {4046796000 10800 1 EEST} - {4062783600 7200 0 EET} + {4060710000 7200 0 EET} {4078245600 10800 1 EEST} - {4094233200 7200 0 EET} + {4092159600 7200 0 EET} } diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 3faa31e..6535471 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -12,5 +12,5 @@ set TZData(:Asia/Karachi) { {1212260400 21600 1 PKST} {1225476000 18000 0 PKT} {1239735600 21600 1 PKST} - {1257012000 18000 0 PKT} + {1254333600 18000 0 PKT} } diff --git a/library/tzdata/Pacific/Apia b/library/tzdata/Pacific/Apia index 5d34ed1..60e4b2c 100644 --- a/library/tzdata/Pacific/Apia +++ b/library/tzdata/Pacific/Apia @@ -5,4 +5,6 @@ set TZData(:Pacific/Apia) { {-2855737984 -41216 0 LMT} {-1861878784 -41400 0 SAMT} {-631110600 -39600 0 WST} + {1254654000 -36000 1 WSDT} + {1269770400 -39600 0 WST} } -- cgit v0.12 From 26547a1397053787d658743264d1d47d19d3c076 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 5 Oct 2009 02:39:40 +0000 Subject: fix typos --- generic/tclThreadAlloc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index f4c1e63..426c619 100755 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.9 2009/09/28 21:20:51 dgp Exp $ + * RCS: @(#) $Id: tclThreadAlloc.c,v 1.4.2.10 2009/10/05 02:39:40 das Exp $ */ #include "tclInt.h" @@ -316,7 +316,7 @@ TclpAlloc(unsigned int reqsize) const size_t zero = 0; const size_t max = ~zero; - if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { + if (((size_t) reqsize) > max - sizeof(Block) - RCHECK) { /* Requested allocation exceeds memory */ return NULL; } @@ -456,7 +456,7 @@ TclpRealloc(char *ptr, unsigned int reqsize) const size_t zero = 0; const size_t max = ~zero; - if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { + if (((size_t) reqsize) > max - sizeof(Block) - RCHECK) { /* Requested allocation exceeds memory */ return NULL; } -- cgit v0.12 From dda9b564a137908b96659dcd5184d12941e0e4c8 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 5 Oct 2009 02:40:04 +0000 Subject: fix tclooConfig.sh install --- unix/Makefile.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/unix/Makefile.in b/unix/Makefile.in index 64f35dd..07e3fcc 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.276 2009/09/26 21:42:05 dkf Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.277 2009/10/05 02:40:04 das Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -770,7 +770,8 @@ install-binaries: binaries @echo "Installing tclConfig.sh to $(CONFIG_INSTALL_DIR)/" @$(INSTALL_DATA) tclConfig.sh "$(CONFIG_INSTALL_DIR)"/tclConfig.sh @echo "Installing tclooConfig.sh to $(CONFIG_INSTALL_DIR)/" - @$(INSTALL_DATA) tclooConfig.sh "$(CONFIG_INSTALL_DIR)"/tclooConfig.sh + @$(INSTALL_DATA) $(UNIX_DIR)/tclooConfig.sh \ + "$(CONFIG_INSTALL_DIR)"/tclooConfig.sh @if test "$(STUB_LIB_FILE)" != "" ; then \ echo "Installing $(STUB_LIB_FILE) to $(LIB_INSTALL_DIR)/"; \ @INSTALL_STUB_LIB@ ; \ -- cgit v0.12 From 17c811e76499761b3348f848a50bb3946b821ae9 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 5 Oct 2009 02:41:07 +0000 Subject: * macosx/tclMacOSXBundle.c: Workaround CF memory managment bug in * unix/tclUnixInit.c: Mac OS X 10.4 & earlier. [Bug 2569449] --- ChangeLog | 5 +++++ macosx/tclMacOSXBundle.c | 29 ++++++++++++++++++----------- unix/tclUnixInit.c | 11 ++++++----- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index a514a58..3da653d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-04 Daniel Steffen + + * macosx/tclMacOSXBundle.c: Workaround CF memory managment bug in + * unix/tclUnixInit.c: Mac OS X 10.4 & earlier. [Bug 2569449] + 2009-10-02 Kevin B. Kenny * library/tzdata/Africa/Cairo: diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 69ffd2f..97124cf 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.15 2009/04/14 00:55:31 das Exp $ + * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.16 2009/10/05 02:41:07 das Exp $ */ #include "tclPort.h" @@ -55,7 +55,8 @@ extern char *dlerror(void) WEAK_IMPORT_ATTRIBUTE; #include #endif -#if TCL_DYLD_USE_DLFCN && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +#if (TCL_DYLD_USE_DLFCN && MAC_OS_X_VERSION_MIN_REQUIRED < 1040) || \ + (MAC_OS_X_VERSION_MIN_REQUIRED < 1050) MODULE_SCOPE long tclMacOSXDarwinRelease; #endif @@ -157,17 +158,16 @@ Tcl_MacOSXOpenVersionedBundleResources( bundleVersion, kCFStringEncodingUTF8); if (bundleVersionRef) { + CFComparisonResult versionComparison = kCFCompareLessThan; CFStringRef bundleTailRef = CFURLCopyLastPathComponent( bundleURL); if (bundleTailRef) { - if (CFStringCompare(bundleTailRef, bundleVersionRef, 0) == - kCFCompareEqualTo) { - versionedBundleRef = (CFBundleRef) CFRetain(bundleRef); - } + versionComparison = CFStringCompare(bundleTailRef, + bundleVersionRef, 0); CFRelease(bundleTailRef); } - if (!versionedBundleRef) { + if (versionComparison != kCFCompareEqualTo) { CFURLRef versURL = CFURLCreateCopyAppendingPathComponent( NULL, bundleURL, CFSTR("Versions"), TRUE); @@ -175,9 +175,13 @@ Tcl_MacOSXOpenVersionedBundleResources( CFURLRef versionedBundleURL = CFURLCreateCopyAppendingPathComponent( NULL, versURL, bundleVersionRef, TRUE); + if (versionedBundleURL) { versionedBundleRef = CFBundleCreate(NULL, versionedBundleURL); + if (versionedBundleRef) { + bundleRef = versionedBundleRef; + } CFRelease(versionedBundleURL); } CFRelease(versURL); @@ -187,9 +191,6 @@ Tcl_MacOSXOpenVersionedBundleResources( } CFRelease(bundleURL); } - if (versionedBundleRef) { - bundleRef = versionedBundleRef; - } } if (bundleRef) { @@ -258,7 +259,13 @@ Tcl_MacOSXOpenVersionedBundleResources( CFRelease(libURL); } if (versionedBundleRef) { - CFRelease(versionedBundleRef); +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + /* Workaround CFBundle bug in Tiger and earlier. [Bug 2569449] */ + if (tclMacOSXDarwinRelease >= 9) +#endif + { + CFRelease(versionedBundleRef); + } } } diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 2df4d2a..db7bbfe 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.86 2009/01/09 11:21:46 dkf Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.87 2009/10/05 02:41:07 das Exp $ */ #include "tclInt.h" @@ -274,10 +274,11 @@ static int MacOSXGetLibraryPath(Tcl_Interp *interp, int maxPathLen, char *tclLibPath); #endif /* HAVE_COREFOUNDATION */ #if defined(__APPLE__) && (defined(TCL_LOAD_FROM_MEMORY) || ( \ - defined(TCL_THREADS) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - MAC_OS_X_VERSION_MIN_REQUIRED < 1030) || ( \ - defined(__LP64__) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - MAC_OS_X_VERSION_MIN_REQUIRED < 1050)) + defined(MAC_OS_X_VERSION_MIN_REQUIRED) && ( \ + (defined(TCL_THREADS) && MAC_OS_X_VERSION_MIN_REQUIRED < 1030) || \ + (defined(__LP64__) && MAC_OS_X_VERSION_MIN_REQUIRED < 1050) || \ + (defined(HAVE_COREFOUNDATION) && MAC_OS_X_VERSION_MIN_REQUIRED < 1050)\ + ))) /* * Need to check Darwin release at runtime in tclUnixFCmd.c and tclLoadDyld.c: * initialize release global at startup from uname(). -- cgit v0.12 From baf0bbcdc4154c963a7f352c2349ce190b02d90d Mon Sep 17 00:00:00 2001 From: das Date: Mon, 5 Oct 2009 02:41:12 +0000 Subject: * macosx/tclMacOSXBundle.c: Workaround CF memory managment bug in * unix/tclUnixInit.c: Mac OS X 10.4 & earlier. [Bug 2569449] --- ChangeLog | 5 +++++ macosx/tclMacOSXBundle.c | 29 ++++++++++++++++++----------- unix/tclUnixInit.c | 11 ++++++----- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb7ef95..8980aca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-04 Daniel Steffen + + * macosx/tclMacOSXBundle.c: Workaround CF memory managment bug in + * unix/tclUnixInit.c: Mac OS X 10.4 & earlier. [Bug 2569449] + 2009-10-02 Kevin B. Kenny * library/tzdata/Africa/Cairo: diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index 776fb6b..bf1d651 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.11.4.3 2009/04/14 00:55:34 das Exp $ + * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.11.4.4 2009/10/05 02:41:13 das Exp $ */ #include "tclPort.h" @@ -55,7 +55,8 @@ extern char *dlerror(void) WEAK_IMPORT_ATTRIBUTE; #include #endif -#if TCL_DYLD_USE_DLFCN && MAC_OS_X_VERSION_MIN_REQUIRED < 1040 +#if (TCL_DYLD_USE_DLFCN && MAC_OS_X_VERSION_MIN_REQUIRED < 1040) || \ + (MAC_OS_X_VERSION_MIN_REQUIRED < 1050) MODULE_SCOPE long tclMacOSXDarwinRelease; #endif @@ -157,17 +158,16 @@ Tcl_MacOSXOpenVersionedBundleResources( bundleVersion, kCFStringEncodingUTF8); if (bundleVersionRef) { + CFComparisonResult versionComparison = kCFCompareLessThan; CFStringRef bundleTailRef = CFURLCopyLastPathComponent( bundleURL); if (bundleTailRef) { - if (CFStringCompare(bundleTailRef, bundleVersionRef, 0) == - kCFCompareEqualTo) { - versionedBundleRef = (CFBundleRef) CFRetain(bundleRef); - } + versionComparison = CFStringCompare(bundleTailRef, + bundleVersionRef, 0); CFRelease(bundleTailRef); } - if (!versionedBundleRef) { + if (versionComparison != kCFCompareEqualTo) { CFURLRef versURL = CFURLCreateCopyAppendingPathComponent( NULL, bundleURL, CFSTR("Versions"), TRUE); @@ -175,9 +175,13 @@ Tcl_MacOSXOpenVersionedBundleResources( CFURLRef versionedBundleURL = CFURLCreateCopyAppendingPathComponent( NULL, versURL, bundleVersionRef, TRUE); + if (versionedBundleURL) { versionedBundleRef = CFBundleCreate(NULL, versionedBundleURL); + if (versionedBundleRef) { + bundleRef = versionedBundleRef; + } CFRelease(versionedBundleURL); } CFRelease(versURL); @@ -187,9 +191,6 @@ Tcl_MacOSXOpenVersionedBundleResources( } CFRelease(bundleURL); } - if (versionedBundleRef) { - bundleRef = versionedBundleRef; - } } if (bundleRef) { @@ -258,7 +259,13 @@ Tcl_MacOSXOpenVersionedBundleResources( CFRelease(libURL); } if (versionedBundleRef) { - CFRelease(versionedBundleRef); +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + /* Workaround CFBundle bug in Tiger and earlier. [Bug 2569449] */ + if (tclMacOSXDarwinRelease >= 9) +#endif + { + CFRelease(versionedBundleRef); + } } } diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index a9309c3..d11c8c5 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.82 2007/12/13 15:28:42 dgp Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.82.2.1 2009/10/05 02:41:13 das Exp $ */ #include "tclInt.h" @@ -335,10 +335,11 @@ static int MacOSXGetLibraryPath(Tcl_Interp *interp, int maxPathLen, char *tclLibPath); #endif /* HAVE_COREFOUNDATION */ #if defined(__APPLE__) && (defined(TCL_LOAD_FROM_MEMORY) || ( \ - defined(TCL_THREADS) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - MAC_OS_X_VERSION_MIN_REQUIRED < 1030) || ( \ - defined(__LP64__) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - MAC_OS_X_VERSION_MIN_REQUIRED < 1050)) + defined(MAC_OS_X_VERSION_MIN_REQUIRED) && ( \ + (defined(TCL_THREADS) && MAC_OS_X_VERSION_MIN_REQUIRED < 1030) || \ + (defined(__LP64__) && MAC_OS_X_VERSION_MIN_REQUIRED < 1050) || \ + (defined(HAVE_COREFOUNDATION) && MAC_OS_X_VERSION_MIN_REQUIRED < 1050)\ + ))) /* * Need to check Darwin release at runtime in tclUnixFCmd.c and tclLoadDyld.c: * initialize release global at startup from uname(). -- cgit v0.12 From f9dae4a940acc35572f2aea0f6b04646a51d802a Mon Sep 17 00:00:00 2001 From: das Date: Mon, 5 Oct 2009 02:41:17 +0000 Subject: * macosx/tclMacOSXBundle.c: Workaround CF memory managment bug in * unix/tclUnixInit.c: Mac OS X 10.4 & earlier. [Bug 2569449] --- ChangeLog | 5 +++++ macosx/tclMacOSXBundle.c | 33 ++++++++++++++++++++++----------- unix/tclUnixInit.c | 11 ++++++----- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7bd1f8e..a1a2ef0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-04 Daniel Steffen + + * macosx/tclMacOSXBundle.c: Workaround CF memory managment bug in + * unix/tclUnixInit.c: Mac OS X 10.4 & earlier. [Bug 2569449] + 2009-09-28 Don Porter * generic/tclAlloc.c: Cleaned up various routines in the diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c index af047d2..ef87dbf 100644 --- a/macosx/tclMacOSXBundle.c +++ b/macosx/tclMacOSXBundle.c @@ -5,7 +5,7 @@ * MacOS X. * * Copyright 2001, Apple Computer, Inc. - * Copyright (c) 2003-2007 Daniel A. Steffen + * Copyright (c) 2003-2009 Daniel A. Steffen * * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. @@ -48,7 +48,7 @@ * permission to use and distribute the software in accordance with the * terms specified in this license. * - * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.3.2.7 2008/12/07 16:39:56 das Exp $ + * RCS: @(#) $Id: tclMacOSXBundle.c,v 1.3.2.8 2009/10/05 02:41:18 das Exp $ */ #include "tclPort.h" @@ -56,6 +56,11 @@ #ifdef HAVE_COREFOUNDATION #include #include + +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1050 +MODULE_SCOPE long tclMacOSXDarwinRelease; +#endif + #endif /* HAVE_COREFOUNDATION */ /* @@ -145,17 +150,16 @@ Tcl_MacOSXOpenVersionedBundleResources( bundleVersion, kCFStringEncodingUTF8); if (bundleVersionRef) { + CFComparisonResult versionComparison = kCFCompareLessThan; CFStringRef bundleTailRef = CFURLCopyLastPathComponent( bundleURL); if (bundleTailRef) { - if (CFStringCompare(bundleTailRef, bundleVersionRef, 0) == - kCFCompareEqualTo) { - versionedBundleRef = (CFBundleRef) CFRetain(bundleRef); - } + versionComparison = CFStringCompare(bundleTailRef, + bundleVersionRef, 0); CFRelease(bundleTailRef); } - if (!versionedBundleRef) { + if (versionComparison != kCFCompareEqualTo) { CFURLRef versURL = CFURLCreateCopyAppendingPathComponent( NULL, bundleURL, CFSTR("Versions"), TRUE); @@ -163,9 +167,13 @@ Tcl_MacOSXOpenVersionedBundleResources( CFURLRef versionedBundleURL = CFURLCreateCopyAppendingPathComponent( NULL, versURL, bundleVersionRef, TRUE); + if (versionedBundleURL) { versionedBundleRef = CFBundleCreate(NULL, versionedBundleURL); + if (versionedBundleRef) { + bundleRef = versionedBundleRef; + } CFRelease(versionedBundleURL); } CFRelease(versURL); @@ -175,9 +183,6 @@ Tcl_MacOSXOpenVersionedBundleResources( } CFRelease(bundleURL); } - if (versionedBundleRef) { - bundleRef = versionedBundleRef; - } } if (bundleRef) { @@ -225,7 +230,13 @@ Tcl_MacOSXOpenVersionedBundleResources( CFRelease(libURL); } if (versionedBundleRef) { - CFRelease(versionedBundleRef); +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + /* Workaround CFBundle bug in Tiger and earlier. [Bug 2569449] */ + if (tclMacOSXDarwinRelease >= 9) +#endif + { + CFRelease(versionedBundleRef); + } } } diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 795d312..f2918d7 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.15 2007/04/29 02:19:51 das Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.34.2.16 2009/10/05 02:41:18 das Exp $ */ #if defined(HAVE_COREFOUNDATION) @@ -159,10 +159,11 @@ static int MacOSXGetLibraryPath _ANSI_ARGS_(( char *tclLibPath)); #endif /* HAVE_COREFOUNDATION */ #if defined(__APPLE__) && (defined(TCL_LOAD_FROM_MEMORY) || ( \ - defined(TCL_THREADS) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - MAC_OS_X_VERSION_MIN_REQUIRED < 1030) || ( \ - defined(__LP64__) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - MAC_OS_X_VERSION_MIN_REQUIRED < 1050)) + defined(MAC_OS_X_VERSION_MIN_REQUIRED) && ( \ + (defined(TCL_THREADS) && MAC_OS_X_VERSION_MIN_REQUIRED < 1030) || \ + (defined(__LP64__) && MAC_OS_X_VERSION_MIN_REQUIRED < 1050) || \ + (defined(HAVE_COREFOUNDATION) && MAC_OS_X_VERSION_MIN_REQUIRED < 1050)\ + ))) /* * Need to check Darwin release at runtime in tclUnixFCmd.c and tclLoadDyld.c: * initialize release global at startup from uname(). -- cgit v0.12 From 2f637aaa8917fbfbd9ff3734616a30ec14b911a8 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 5 Oct 2009 15:20:11 +0000 Subject: * changes: Update for 8.5.8 release. --- ChangeLog | 4 ++++ changes | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8980aca..50102af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-10-05 Don Porter + + * changes: Update for 8.5.8 release. + 2009-10-04 Daniel Steffen * macosx/tclMacOSXBundle.c: Workaround CF memory managment bug in diff --git a/changes b/changes index 956d199..03adbe5 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.16 2009/04/15 13:42:43 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.17 2009/10/05 15:20:12 dgp Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7333,3 +7333,50 @@ among multiple interps (kupries) 2009-04-14 tzdata updated to Olson's tzdata2009f (kenny) --- Released 8.5.7, April 15, 2009 --- See ChangeLog for details --- + +2009-04-27 (bug fix)[2446662] (ferrieux) + +2009-04-27 (bug fix)[1028264] (ferrieux) + +2009-05-07 (bug fix)[2785893] find command in deleted namespace (sofer) + +2009-05-29 (platform support) account for ia64_32 (kupries) +=> platform 1.0.5 + +2009-06-02 (bug fix)[2798543] incorrect [expr] integer ** results (porter) + +2009-06-10 (bug fix)[2801413] overflow in [format] (porter) + +2009-06-13 (bug fix)[2802881] corrected compile env context (tasada,porter) + +2009-07-01 (bug fix)[2806622] (thoyts) + +2009-07-16 (bug fix)[2819200] underflow settings on MIPS systems (porter) + +2009-07-21 tzdata updated to Olson's tzdata2009k (kenny) + +2009-07-23 (bug fix)[2820349] plug event leak in notifier (mistachkin) + +2009-07-24 (bug fix)[2826248] crash in Tcl_GetChannelHandle (sonnenburg,kupries) + +2009-07-31 (bug fix)[2830354] overflow in [format] (misch,porter) + +2009-08-06 (bug fix)[2827000] reflected channels can signal EGAIN (kupries) + +2009-08-20 (bug fix)[2806250] EIAS violation in ~foo pathnames (porter) + +2009-08-21 (bug fix)[2837800] [glob */foo] return ./~x/foo (porter) + +2009-08-24 (bug fix) nested event loop notifier w/TkAqua Cocoa (alaoui,steffen) + +2009-08-25 (bug fix) [info frame] account for continuation lines (kupries) + +2009-08-27 (bug fix)[2845535] overflows in [format] (porter) + +2009-09-01 (bug fix) improved error message in tcltest (porter) +=> tcltest 2.3.2 + +2009-09-11 (bug fix)[2849860] http handle "quoted" charset value (fellows) +=> http 2.7.4 + +--- Released 8.5.8, October xx, 2009 --- See ChangeLog for details --- -- cgit v0.12 From 2e39402782031ee79d14b572fae56c5d7f5d73a0 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 5 Oct 2009 20:02:55 +0000 Subject: * library/safe.tcl (AliasGlob): Fixed conversion of catch to try/finally, it had an 'on ok msg' branch missing, causing a silent error immediately, and bogus glob results, breaking search for Tcl modules. --- ChangeLog | 7 +++++++ library/safe.tcl | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3da653d..76df6b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-05 Andreas Kupries + + * library/safe.tcl (AliasGlob): Fixed conversion of catch to + try/finally, it had an 'on ok msg' branch missing, causing a + silent error immediately, and bogus glob results, breaking + search for Tcl modules. + 2009-10-04 Daniel Steffen * macosx/tclMacOSXBundle.c: Workaround CF memory managment bug in diff --git a/library/safe.tcl b/library/safe.tcl index 5a3d4d0..ba1c4f5 100644 --- a/library/safe.tcl +++ b/library/safe.tcl @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: safe.tcl,v 1.18 2009/07/26 11:40:24 dkf Exp $ +# RCS: @(#) $Id: safe.tcl,v 1.19 2009/10/05 20:02:55 andreas_kupries Exp $ # # The implementation is based on namespaces. These naming conventions are @@ -792,6 +792,8 @@ proc ::safe::setLogCmd {args} { try { ::interp invokehidden $slave glob {*}$cmd + } on ok msg { + # Nothing to be done, just capture the 'msg' for later. } on error msg { Log $slave $msg return -code error "script error" -- cgit v0.12 From 68cca388595b1a3e1535f8e700e003bcb98bde45 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 6 Oct 2009 16:30:38 +0000 Subject: * generic/tclTomMathInt.h (new): Public header tclTomMath.h had * generic/tclTomMath.h: dependence on private headers, breaking use * generic/tommath.h: by extensions [Bug 1941434]. --- ChangeLog | 6 ++++++ generic/tclTomMath.h | 6 ++---- generic/tclTomMathInt.h | 2 ++ generic/tommath.h | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 generic/tclTomMathInt.h diff --git a/ChangeLog b/ChangeLog index 50102af..5a07b27 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-10-06 Don Porter + + * generic/tclTomMathInt.h (new): Public header tclTomMath.h had + * generic/tclTomMath.h: dependence on private headers, breaking use + * generic/tommath.h: by extensions [Bug 1941434]. + 2009-10-05 Don Porter * changes: Update for 8.5.8 release. diff --git a/generic/tclTomMath.h b/generic/tclTomMath.h index d794316..7ac044c 100644 --- a/generic/tclTomMath.h +++ b/generic/tclTomMath.h @@ -26,8 +26,6 @@ #include #include -#include - #ifndef MIN #define MIN(x,y) ((x)<(y)?(x):(y)) #endif @@ -840,6 +838,6 @@ MODULE_SCOPE const char *mp_s_rmap; /* $Source: /root/tcl/repos-to-convert/tcl/generic/tclTomMath.h,v $ */ /* Based on Tom's version 1.8 */ -/* $Revision: 1.10 $ */ -/* $Date: 2007/02/14 17:59:21 $ */ +/* $Revision: 1.10.4.1 $ */ +/* $Date: 2009/10/06 16:30:39 $ */ diff --git a/generic/tclTomMathInt.h b/generic/tclTomMathInt.h new file mode 100644 index 0000000..1b9eb64 --- /dev/null +++ b/generic/tclTomMathInt.h @@ -0,0 +1,2 @@ +#include "tclTomMath.h" +#include "tommath_class.h" diff --git a/generic/tommath.h b/generic/tommath.h index 4ce3e43..028a84d 100644 --- a/generic/tommath.h +++ b/generic/tommath.h @@ -1 +1 @@ -#include "tclTomMath.h" +#include "tclTomMathInt.h" -- cgit v0.12 From 557af2c1ada9cecaa0e11f3a7f5c3c19056c5061 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 6 Oct 2009 16:31:01 +0000 Subject: * generic/tclTomMathInt.h (new): Public header tclTomMath.h had * generic/tclTomMath.h: dependence on private headers, breaking use * generic/tommath.h: by extensions [Bug 1941434]. --- ChangeLog | 6 ++++++ generic/tclTomMath.h | 6 ++---- generic/tclTomMathInt.h | 2 ++ generic/tommath.h | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 generic/tclTomMathInt.h diff --git a/ChangeLog b/ChangeLog index 76df6b7..6eac1bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-10-06 Don Porter + + * generic/tclTomMathInt.h (new): Public header tclTomMath.h had + * generic/tclTomMath.h: dependence on private headers, breaking use + * generic/tommath.h: by extensions [Bug 1941434]. + 2009-10-05 Andreas Kupries * library/safe.tcl (AliasGlob): Fixed conversion of catch to diff --git a/generic/tclTomMath.h b/generic/tclTomMath.h index d794316..48bb603 100644 --- a/generic/tclTomMath.h +++ b/generic/tclTomMath.h @@ -26,8 +26,6 @@ #include #include -#include - #ifndef MIN #define MIN(x,y) ((x)<(y)?(x):(y)) #endif @@ -840,6 +838,6 @@ MODULE_SCOPE const char *mp_s_rmap; /* $Source: /root/tcl/repos-to-convert/tcl/generic/tclTomMath.h,v $ */ /* Based on Tom's version 1.8 */ -/* $Revision: 1.10 $ */ -/* $Date: 2007/02/14 17:59:21 $ */ +/* $Revision: 1.11 $ */ +/* $Date: 2009/10/06 16:31:01 $ */ diff --git a/generic/tclTomMathInt.h b/generic/tclTomMathInt.h new file mode 100644 index 0000000..1b9eb64 --- /dev/null +++ b/generic/tclTomMathInt.h @@ -0,0 +1,2 @@ +#include "tclTomMath.h" +#include "tommath_class.h" diff --git a/generic/tommath.h b/generic/tommath.h index 4ce3e43..028a84d 100644 --- a/generic/tommath.h +++ b/generic/tommath.h @@ -1 +1 @@ -#include "tclTomMath.h" +#include "tclTomMathInt.h" -- cgit v0.12 From 7b4b4ce6883578d1bc4bdd773251d1899787df6b Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 6 Oct 2009 16:55:59 +0000 Subject: * generic/tclInterp.c (SlaveEval): Agressive stomping of internal reps was added as part of the NRE patch of 2008-07-13. This doesn't appear to actually be needed, and it hurts quite a bit when large lists lose their intreps and require reparsing. Thanks to Ashok Nadkarni for reporting the problem. --- ChangeLog | 6 ++++++ generic/tclInterp.c | 21 ++++----------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6eac1bf..e035f7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-10-06 Don Porter + * generic/tclInterp.c (SlaveEval): Agressive stomping of internal reps + was added as part of the NRE patch of 2008-07-13. This doesn't appear + to actually be needed, and it hurts quite a bit when large lists lose + their intreps and require reparsing. Thanks to Ashok Nadkarni for + reporting the problem. + * generic/tclTomMathInt.h (new): Public header tclTomMath.h had * generic/tclTomMath.h: dependence on private headers, breaking use * generic/tommath.h: by extensions [Bug 1941434]. diff --git a/generic/tclInterp.c b/generic/tclInterp.c index 0972602..3c841d9 100644 --- a/generic/tclInterp.c +++ b/generic/tclInterp.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInterp.c,v 1.105 2009/03/21 12:24:49 msofer Exp $ + * RCS: @(#) $Id: tclInterp.c,v 1.106 2009/10/06 16:55:59 dgp Exp $ */ #include "tclInt.h" @@ -2607,7 +2607,6 @@ SlaveEval( Tcl_Obj *const objv[]) /* Argument objects. */ { int result; - Tcl_Obj *objPtr; Tcl_Preserve(slaveInterp); Tcl_AllowExceptions(slaveInterp); @@ -2615,29 +2614,17 @@ SlaveEval( if (objc == 1) { /* * TIP #280: Make actual argument location available to eval'd script. - * - * Do not let any intReps accross, with the exception of - * bytecodes. The intrep spoiling is due to happen anyway when - * compiling. */ Interp *iPtr = (Interp *) interp; CmdFrame *invoker = iPtr->cmdFramePtr; int word = 0; - objPtr = objv[0]; - if (objPtr->typePtr && (objPtr->typePtr != &tclByteCodeType) - && objPtr->typePtr->freeIntRepProc) { - (void) TclGetString(objPtr); - TclFreeIntRep(objPtr); - objPtr->typePtr = NULL; - } - - TclArgumentGet(interp, objPtr, &invoker, &word); + TclArgumentGet(interp, objv[0], &invoker, &word); - result = TclEvalObjEx(slaveInterp, objPtr, 0, invoker, word); + result = TclEvalObjEx(slaveInterp, objv[0], 0, invoker, word); } else { - objPtr = Tcl_ConcatObj(objc, objv); + Tcl_Obj *objPtr = Tcl_ConcatObj(objc, objv); Tcl_IncrRefCount(objPtr); result = Tcl_EvalObjEx(slaveInterp, objPtr, 0); Tcl_DecrRefCount(objPtr); -- cgit v0.12 From 112d28fc3f4af8849035b9d786ca0a1e4978987b Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 7 Oct 2009 17:07:05 +0000 Subject: * generic/tclIORChan.c (ErrnoReturn): Replace the hardwired constant 11 with the proper errno define, EAGAIN. What was I thinking ? The BSD's have a different errno assignment and break with the hardwired number. Reported by emiliano on the chat. --- ChangeLog | 7 +++++++ generic/tclIORChan.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e035f7f..0902daa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-07 Andreas Kupries + + * generic/tclIORChan.c (ErrnoReturn): Replace the hardwired + constant 11 with the proper errno define, EAGAIN. What was I + thinking ? The BSD's have a different errno assignment and break + with the hardwired number. Reported by emiliano on the chat. + 2009-10-06 Don Porter * generic/tclInterp.c (SlaveEval): Agressive stomping of internal reps diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 5a83eca..15e41d8 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORChan.c,v 1.40 2009/08/06 22:28:11 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIORChan.c,v 1.41 2009/10/07 17:07:07 andreas_kupries Exp $ */ #include @@ -2318,7 +2318,7 @@ ErrnoReturn(ReflectedChannel *rcPtr, Tcl_Obj* resObj) if (((Tcl_GetIntFromObj(rcPtr->interp, resObj, &code) != TCL_OK) || (code >= 0))) { if (strcmp ("EAGAIN",Tcl_GetString(resObj)) == 0) { - code = -11; + code = - EAGAIN; } else { code = 0; } -- cgit v0.12 From 86d7b6d7b9a8a46a9d99a3e0e6b707fe7eb0b411 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 7 Oct 2009 17:11:40 +0000 Subject: * generic/tclIORChan.c (ErrnoReturn): Replace the hardwired constant 11 with the proper errno define, EAGAIN. What was I thinking ? The BSD's have a different errno assignment and break with the hardwired number. Reported by emiliano on the chat. --- ChangeLog | 7 +++++++ generic/tclIORChan.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5a07b27..6d4f1b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-07 Andreas Kupries + + * generic/tclIORChan.c (ErrnoReturn): Replace the hardwired + constant 11 with the proper errno define, EAGAIN. What was I + thinking ? The BSD's have a different errno assignment and break + with the hardwired number. Reported by emiliano on the chat. + 2009-10-06 Don Porter * generic/tclTomMathInt.h (new): Public header tclTomMath.h had diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 3d14ec6..305b3ad 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.7 2009/08/06 22:28:44 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIORChan.c,v 1.28.2.8 2009/10/07 17:11:40 andreas_kupries Exp $ */ #include @@ -2314,7 +2314,7 @@ ErrnoReturn(ReflectedChannel *rcPtr, Tcl_Obj* resObj) if (((Tcl_GetIntFromObj(rcPtr->interp, resObj, &code) != TCL_OK) || (code >= 0))) { if (strcmp ("EAGAIN",Tcl_GetString(resObj)) == 0) { - code = -11; + code = - EAGAIN; } else { code = 0; } -- cgit v0.12 From 4b5432b3e850af2f49c5d0d58d48a3736dcf0012 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 7 Oct 2009 23:09:15 +0000 Subject: * generic/tclObj.c: [Bug 2871908]: Plug memory leaks of the objThreadMap and lineCLPtr hashtables. Also make the names of the continuation line information initialization and finalization functions more consistent. Patch supplied by Joe Mistachkin . --- ChangeLog | 6 ++++++ generic/tclObj.c | 40 +++++++++++++++++++--------------------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0902daa..dbc0860 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-10-07 Andreas Kupries + * generic/tclObj.c: [Bug 2871908]: Plug memory leaks of the + objThreadMap and lineCLPtr hashtables. Also make the names of the + continuation line information initialization and finalization + functions more consistent. Patch supplied by Joe Mistachkin + . + * generic/tclIORChan.c (ErrnoReturn): Replace the hardwired constant 11 with the proper errno define, EAGAIN. What was I thinking ? The BSD's have a different errno assignment and break diff --git a/generic/tclObj.c b/generic/tclObj.c index e32819d..d0e1115 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.161 2009/09/30 03:11:26 dgp Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.162 2009/10/07 23:09:17 andreas_kupries Exp $ */ #include "tclInt.h" @@ -105,8 +105,8 @@ typedef struct ThreadSpecificData { static Tcl_ThreadDataKey dataKey; static void ContLineLocFree (char* clientData); -static void TclThreadFinalizeObjects (ClientData clientData); -static ThreadSpecificData* TclGetTables (void); +static void TclThreadFinalizeContLines (ClientData clientData); +static ThreadSpecificData* TclGetContLineTable (void); /* * Nested Tcl_Obj deletion management support @@ -455,7 +455,7 @@ TclFinalizeThreadObjects(void) #if defined(TCL_MEM_DEBUG) && defined(TCL_THREADS) Tcl_HashEntry *hPtr; Tcl_HashSearch hSearch; - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); Tcl_HashTable *tablePtr = tsdPtr->objThreadMap; if (tablePtr != NULL) { @@ -515,7 +515,7 @@ TclFinalizeObjects(void) /* *---------------------------------------------------------------------- * - * TclGetTables -- + * TclGetContLineTable -- * * This procedure is a helper which returns the thread-specific * hash-table used to track continuation line information associated with @@ -532,7 +532,7 @@ TclFinalizeObjects(void) */ static ThreadSpecificData* -TclGetTables() +TclGetContLineTable() { /* * Initialize the hashtable tracking invisible continuation lines. For @@ -546,10 +546,7 @@ TclGetTables() if (!tsdPtr->lineCLPtr) { tsdPtr->lineCLPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); Tcl_InitHashTable(tsdPtr->lineCLPtr, TCL_ONE_WORD_KEYS); - Tcl_CreateThreadExitHandler (TclThreadFinalizeObjects,NULL); -#if defined(TCL_MEM_DEBUG) && defined(TCL_THREADS) - tsdPtr->objThreadMap = NULL; -#endif /* TCL_MEM_DEBUG && TCL_THREADS */ + Tcl_CreateThreadExitHandler (TclThreadFinalizeContLines,NULL); } return tsdPtr; } @@ -578,7 +575,7 @@ TclContinuationsEnter(Tcl_Obj* objPtr, int* loc) { int newEntry; - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); Tcl_HashEntry* hPtr = Tcl_CreateHashEntry (tsdPtr->lineCLPtr, (char*) objPtr, &newEntry); @@ -709,7 +706,7 @@ TclContinuationsEnterDerived(Tcl_Obj* objPtr, int start, int* clNext) void TclContinuationsCopy(Tcl_Obj* objPtr, Tcl_Obj* originObjPtr) { - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char*) originObjPtr); if (hPtr) { @@ -741,7 +738,7 @@ TclContinuationsCopy(Tcl_Obj* objPtr, Tcl_Obj* originObjPtr) ContLineLoc* TclContinuationsGet(Tcl_Obj* objPtr) { - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char*) objPtr); if (hPtr) { @@ -754,7 +751,7 @@ TclContinuationsGet(Tcl_Obj* objPtr) /* *---------------------------------------------------------------------- * - * TclThreadFinalizeObjects -- + * TclThreadFinalizeContLines -- * * This procedure is a helper which releases all continuation line * information currently known. It is run as a thread exit handler. @@ -770,15 +767,15 @@ TclContinuationsGet(Tcl_Obj* objPtr) */ static void -TclThreadFinalizeObjects (ClientData clientData) +TclThreadFinalizeContLines (ClientData clientData) { /* * Release the hashtable tracking invisible continuation lines. */ + ThreadSpecificData *tsdPtr = TclGetContLineTable(); Tcl_HashEntry *hPtr; Tcl_HashSearch hSearch; - ThreadSpecificData *tsdPtr = TclGetTables(); for (hPtr = Tcl_FirstHashEntry(tsdPtr->lineCLPtr, &hSearch); hPtr != NULL; @@ -793,6 +790,7 @@ TclThreadFinalizeObjects (ClientData clientData) Tcl_DeleteHashEntry (hPtr); } Tcl_DeleteHashTable (tsdPtr->lineCLPtr); + ckfree((char *) tsdPtr->lineCLPtr); tsdPtr->lineCLPtr = NULL; } @@ -1011,7 +1009,7 @@ TclDbDumpActiveObjects( Tcl_HashSearch hSearch; Tcl_HashEntry *hPtr; Tcl_HashTable *tablePtr; - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); tablePtr = tsdPtr->objThreadMap; @@ -1078,7 +1076,7 @@ TclDbInitNewObj( Tcl_HashTable *tablePtr; int isNew; ObjData *objData; - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); if (tsdPtr->objThreadMap == NULL) { tsdPtr->objThreadMap = (Tcl_HashTable *) @@ -3646,7 +3644,7 @@ Tcl_DbIncrRefCount( if (!TclInExit()) { Tcl_HashTable *tablePtr; Tcl_HashEntry *hPtr; - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); tablePtr = tsdPtr->objThreadMap; if (!tablePtr) { @@ -3711,7 +3709,7 @@ Tcl_DbDecrRefCount( if (!TclInExit()) { Tcl_HashTable *tablePtr; Tcl_HashEntry *hPtr; - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); tablePtr = tsdPtr->objThreadMap; if (!tablePtr) { @@ -3791,7 +3789,7 @@ Tcl_DbIsShared( if (!TclInExit()) { Tcl_HashTable *tablePtr; Tcl_HashEntry *hPtr; - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); tablePtr = tsdPtr->objThreadMap; if (!tablePtr) { Tcl_Panic("object table not initialized"); -- cgit v0.12 From 817534697915bca720f02388c1e9b6a0e72718c0 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Wed, 7 Oct 2009 23:10:50 +0000 Subject: * generic/tclObj.c: [Bug 2871908]: Plug memory leaks of the objThreadMap and lineCLPtr hashtables. Also make the names of the continuation line information initialization and finalization functions more consistent. Patch supplied by Joe Mistachkin . --- ChangeLog | 6 +++++ generic/tclEvent.c | 3 ++- generic/tclObj.c | 73 ++++++++++++++++++++++++++++++++++++++++++------------ 3 files changed, 65 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6d4f1b5..53932ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-10-07 Andreas Kupries + * generic/tclObj.c: [Bug 2871908]: Plug memory leaks of the + objThreadMap and lineCLPtr hashtables. Also make the names of the + continuation line information initialization and finalization + functions more consistent. Patch supplied by Joe Mistachkin + . + * generic/tclIORChan.c (ErrnoReturn): Replace the hardwired constant 11 with the proper errno define, EAGAIN. What was I thinking ? The BSD's have a different errno assignment and break diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 299922f..a10da8f 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.80.2.1 2009/04/27 21:45:20 ferrieux Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.80.2.2 2009/10/07 23:10:50 andreas_kupries Exp $ */ #include "tclInt.h" @@ -1239,6 +1239,7 @@ Tcl_FinalizeThread(void) TclFinalizeIOSubsystem(); TclFinalizeNotifier(); TclFinalizeAsync(); + TclFinalizeThreadObjects(); } /* diff --git a/generic/tclObj.c b/generic/tclObj.c index 1b0a58c..39b8515 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.139.2.3 2009/08/25 21:01:05 andreas_kupries Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.139.2.4 2009/10/07 23:10:50 andreas_kupries Exp $ */ #include "tclInt.h" @@ -88,8 +88,8 @@ typedef struct ThreadSpecificData { static Tcl_ThreadDataKey dataKey; static void ContLineLocFree (char* clientData); -static void TclThreadFinalizeObjects (ClientData clientData); -static ThreadSpecificData* TclGetTables (void); +static void TclThreadFinalizeContLines (ClientData clientData); +static ThreadSpecificData* TclGetContLineTable (void); /* * Nested Tcl_Obj deletion management support @@ -410,6 +410,49 @@ TclInitObjSubsystem(void) /* *---------------------------------------------------------------------- * + * TclFinalizeThreadObjects -- + * + * This function is called by Tcl_FinalizeThread to clean up thread + * specific Tcl_Obj information. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +TclFinalizeThreadObjects(void) +{ +#if defined(TCL_MEM_DEBUG) && defined(TCL_THREADS) + Tcl_HashEntry *hPtr; + Tcl_HashSearch hSearch; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + Tcl_HashTable *tablePtr = tsdPtr->objThreadMap; + + if (tablePtr != NULL) { + for (hPtr = Tcl_FirstHashEntry(tablePtr, &hSearch); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSearch)) { + ObjData *objData = Tcl_GetHashValue(hPtr); + + if (objData != NULL) { + ckfree((char *) objData); + } + } + + Tcl_DeleteHashTable(tablePtr); + ckfree((char *) tablePtr); + tsdPtr->objThreadMap = NULL; + } +#endif +} + +/* + *---------------------------------------------------------------------- + * * TclFinalizeObjects -- * * This function is called by Tcl_Finalize to clean up all registered @@ -447,7 +490,7 @@ TclFinalizeObjects(void) /* *---------------------------------------------------------------------- * - * TclGetTables -- + * TclGetContLineTable -- * * This procedure is a helper which returns the thread-specific * hash-table used to track continuation line information associated with @@ -464,7 +507,7 @@ TclFinalizeObjects(void) */ static ThreadSpecificData* -TclGetTables() +TclGetContLineTable() { /* * Initialize the hashtable tracking invisible continuation lines. For @@ -478,10 +521,7 @@ TclGetTables() if (!tsdPtr->lineCLPtr) { tsdPtr->lineCLPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); Tcl_InitHashTable(tsdPtr->lineCLPtr, TCL_ONE_WORD_KEYS); - Tcl_CreateThreadExitHandler (TclThreadFinalizeObjects,NULL); -#if defined(TCL_MEM_DEBUG) && defined(TCL_THREADS) - tsdPtr->objThreadMap = NULL; -#endif /* TCL_MEM_DEBUG && TCL_THREADS */ + Tcl_CreateThreadExitHandler (TclThreadFinalizeContLines,NULL); } return tsdPtr; } @@ -510,7 +550,7 @@ TclContinuationsEnter(Tcl_Obj* objPtr, int* loc) { int newEntry; - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); Tcl_HashEntry* hPtr = Tcl_CreateHashEntry (tsdPtr->lineCLPtr, (char*) objPtr, &newEntry); @@ -641,7 +681,7 @@ TclContinuationsEnterDerived(Tcl_Obj* objPtr, int start, int* clNext) void TclContinuationsCopy(Tcl_Obj* objPtr, Tcl_Obj* originObjPtr) { - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char*) originObjPtr); if (hPtr) { @@ -673,7 +713,7 @@ TclContinuationsCopy(Tcl_Obj* objPtr, Tcl_Obj* originObjPtr) ContLineLoc* TclContinuationsGet(Tcl_Obj* objPtr) { - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); Tcl_HashEntry* hPtr = Tcl_FindHashEntry (tsdPtr->lineCLPtr, (char*) objPtr); if (hPtr) { @@ -686,7 +726,7 @@ TclContinuationsGet(Tcl_Obj* objPtr) /* *---------------------------------------------------------------------- * - * TclThreadFinalizeObjects -- + * TclThreadFinalizeContLines -- * * This procedure is a helper which releases all continuation line * information currently known. It is run as a thread exit handler. @@ -702,15 +742,15 @@ TclContinuationsGet(Tcl_Obj* objPtr) */ static void -TclThreadFinalizeObjects (ClientData clientData) +TclThreadFinalizeContLines (ClientData clientData) { /* * Release the hashtable tracking invisible continuation lines. */ + ThreadSpecificData *tsdPtr = TclGetContLineTable(); Tcl_HashEntry *hPtr; Tcl_HashSearch hSearch; - ThreadSpecificData *tsdPtr = TclGetTables(); for (hPtr = Tcl_FirstHashEntry(tsdPtr->lineCLPtr, &hSearch); hPtr != NULL; @@ -725,6 +765,7 @@ TclThreadFinalizeObjects (ClientData clientData) Tcl_DeleteHashEntry (hPtr); } Tcl_DeleteHashTable (tsdPtr->lineCLPtr); + ckfree((char *) tsdPtr->lineCLPtr); tsdPtr->lineCLPtr = NULL; } @@ -956,7 +997,7 @@ TclDbInitNewObj( Tcl_HashEntry *hPtr; Tcl_HashTable *tablePtr; int isNew; - ThreadSpecificData *tsdPtr = TclGetTables(); + ThreadSpecificData *tsdPtr = TclGetContLineTable(); if (tsdPtr->objThreadMap == NULL) { tsdPtr->objThreadMap = (Tcl_HashTable *) -- cgit v0.12 From 96e6cf13bf6f34d470255420538843d45d04aed9 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 8 Oct 2009 14:37:36 +0000 Subject: [Bug 2874678]: Don't leak bignums in [dict incr]... --- ChangeLog | 41 +++++++++++++++++++++++------------------ generic/tclDictObj.c | 8 +++++++- tests/dict.test | 37 ++++++++++++++++++++++--------------- 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index dbc0860..a12bdc8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,15 +1,20 @@ +2009-10-08 Donal K. Fellows + + * generic/tclDictObj.c (DictIncrCmd): [Bug 2874678]: Don't leak any + bignums when doing [dict incr] with a value. + * tests/dict.test (dict-19.3): Memory leak detection code. + 2009-10-07 Andreas Kupries - * generic/tclObj.c: [Bug 2871908]: Plug memory leaks of the - objThreadMap and lineCLPtr hashtables. Also make the names of the - continuation line information initialization and finalization - functions more consistent. Patch supplied by Joe Mistachkin - . + * generic/tclObj.c: [Bug 2871908]: Plug memory leaks of objThreadMap + and lineCLPtr hashtables. Also make the names of the continuation + line information initialization and finalization functions more + consistent. Patch supplied by Joe Mistachkin . - * generic/tclIORChan.c (ErrnoReturn): Replace the hardwired - constant 11 with the proper errno define, EAGAIN. What was I - thinking ? The BSD's have a different errno assignment and break - with the hardwired number. Reported by emiliano on the chat. + * generic/tclIORChan.c (ErrnoReturn): Replace hardwired constant 11 + with proper errno #define, EAGAIN. What was I thinking? The BSD's have + a different errno assignment and break with the hardwired number. + Reported by emiliano on the chat. 2009-10-06 Don Porter @@ -19,7 +24,7 @@ their intreps and require reparsing. Thanks to Ashok Nadkarni for reporting the problem. - * generic/tclTomMathInt.h (new): Public header tclTomMath.h had + * generic/tclTomMathInt.h (new): Public header tclTomMath.h had * generic/tclTomMath.h: dependence on private headers, breaking use * generic/tommath.h: by extensions [Bug 1941434]. @@ -41,14 +46,14 @@ * library/tzdata/Asia/Gaza: * library/tzdata/Asia/Karachi: * library/tzdata/Pacific/Apia: Olson's tzdata2009n. - + 2009-09-29 Don Porter - * generic/tclDictObj.c: Updated freeIntRepProc routines so - * generic/tclExecute.c: that they set the typePtr field to - * generic/tclIO.c: NULL so that the Tcl_Obj is not left - * generic/tclIndexObj.c: in an inconsistent state. - * generic/tclInt.h: [Bug 2857044] + * generic/tclDictObj.c: [Bug 2857044]: Updated freeIntRepProc + * generic/tclExecute.c: routines so that they set the typePtr + * generic/tclIO.c: field to NULL so that the Tcl_Obj is + * generic/tclIndexObj.c: not left in an inconsistent state. + * generic/tclInt.h: * generic/tclListObj.c: * generic/tclNamesp.c: * generic/tclOOCall.c: @@ -124,7 +129,7 @@ 2009-09-16 Alexandre Ferrieux * generic/tclObj.c: Extended ::tcl::unsupported::representation. - + 2009-09-11 Don Porter * generic/tclBasic.c: Completed the NR-enabling of [subst]. @@ -148,7 +153,7 @@ 2009-09-07 Don Porter * generic/tclParse.c: [Bug 2850901]: Corrected line counting error - * tests/into.test: in multi-command script substitutions. + * tests/into.test: in multi-command script substitutions. 2009-09-07 Daniel Steffen diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index d30a769..32a5cb0 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDictObj.c,v 1.78 2009/09/30 03:11:24 dgp Exp $ + * RCS: @(#) $Id: tclDictObj.c,v 1.79 2009/10/08 14:37:36 dkf Exp $ */ #include "tclInt.h" @@ -2165,6 +2165,12 @@ DictIncrCmd( if (code != TCL_OK) { Tcl_AddErrorInfo(interp, "\n (reading increment)"); } else { + /* + * Remember to dispose with the bignum as we're not actually + * using it directly. [Bug 2874678] + */ + + mp_clear(&increment); Tcl_DictObjPut(interp, dictPtr, objv[2], objv[3]); } } else { diff --git a/tests/dict.test b/tests/dict.test index b83a5ed..b4f0f0e 100644 --- a/tests/dict.test +++ b/tests/dict.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: dict.test,v 1.32 2008/12/15 23:09:24 dkf Exp $ +# RCS: @(#) $Id: dict.test,v 1.33 2009/10/08 14:37:36 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -18,6 +18,17 @@ if {[lsearch [namespace children] ::tcltest] == -1} { # Used for constraining memory leak tests testConstraint memory [llength [info commands memory]] +if {[testConstraint memory]} { + proc memtest script { + set end [lindex [split [memory info] \n] 3 3] + for {set i 0} {$i < 5} {incr i} { + uplevel 1 $script + set tmp $end + set end [lindex [split [memory info] \n] 3 3] + } + expr {$end - $tmp} + } +} # Procedure to help check the contents of a dictionary. Note that we # can't just compare the string version because the order of the @@ -818,15 +829,9 @@ test dict-19.1 {memory bug} { dict get $successors x }} } [dict create c d a b] -test dict-19.2 {dict: testing for leaks} -setup { - proc getbytes {} { - set lines [split [memory info] "\n"] - lindex [lindex $lines 3] 3 - } -} -constraints memory -body { +test dict-19.2 {dict: testing for leaks} -constraints memory -body { # This test is made to stress object reference management - set end [getbytes] - for {set i 0} {$i < 5} {incr i} { + memtest { apply {{} { # A shared invalid dictinary set apa {a {}b c d} @@ -929,14 +934,16 @@ test dict-19.2 {dict: testing for leaks} -setup { trace remove variable bepa write {error hej} unset bepa }} - set tmp $end - set end [getbytes] } - expr {$end - $tmp} +} -result 0 +test dict-19.3 {testing for leaks - Bug 2874678} -constraints memory -body { + set d aDictVar; # Force interpreted [dict incr] + memtest { + dict incr $d aKey 0 + unset $d + } } -cleanup { - unset -nocomplain end i tmp - rename getbytes {} -# rename stress {} + unset d } -result 0 test dict-20.1 {dict merge command} { -- cgit v0.12 From 0d31e4cefc735abf4b5eb232c3b89effa9ebc3aa Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 8 Oct 2009 14:42:40 +0000 Subject: [Bug 2874678]: Don't leak bignums in [dict incr]... --- ChangeLog | 6 ++++++ generic/tclDictObj.c | 8 +++++++- tests/dict.test | 36 +++++++++++++++++++++++------------- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 53932ec..99b598d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-10-08 Donal K. Fellows + + * generic/tclDictObj.c (DictIncrCmd): [Bug 2874678]: Don't leak any + bignums when doing [dict incr] with a value. + * tests/dict.test (dict-19.3): Memory leak detection code. + 2009-10-07 Andreas Kupries * generic/tclObj.c: [Bug 2871908]: Plug memory leaks of the diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index fc1cac1..d66a9b7 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDictObj.c,v 1.56.2.2 2009/01/06 16:07:17 dkf Exp $ + * RCS: @(#) $Id: tclDictObj.c,v 1.56.2.3 2009/10/08 14:42:40 dkf Exp $ */ #include "tclInt.h" @@ -2151,6 +2151,12 @@ DictIncrCmd( if (code != TCL_OK) { Tcl_AddErrorInfo(interp, "\n (reading increment)"); } else { + /* + * Remember to dispose with the bignum as we're not actually + * using it directly. [Bug 2874678] + */ + + mp_clear(&increment); Tcl_DictObjPut(interp, dictPtr, objv[2], objv[3]); } } else { diff --git a/tests/dict.test b/tests/dict.test index 5b08996..2d15909 100644 --- a/tests/dict.test +++ b/tests/dict.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: dict.test,v 1.24.2.2 2008/12/15 23:26:59 dkf Exp $ +# RCS: @(#) $Id: dict.test,v 1.24.2.3 2009/10/08 14:42:40 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -18,6 +18,17 @@ if {[lsearch [namespace children] ::tcltest] == -1} { # Used for constraining memory leak tests testConstraint memory [llength [info commands memory]] +if {[testConstraint memory]} { + proc memtest script { + set end [lindex [split [memory info] \n] 3 3] + for {set i 0} {$i < 5} {incr i} { + uplevel 1 $script + set tmp $end + set end [lindex [split [memory info] \n] 3 3] + } + expr {$end - $tmp} + } +} # Procedure to help check the contents of a dictionary. Note that we # can't just compare the string version because the order of the @@ -819,10 +830,6 @@ test dict-19.1 {memory bug} -setup { rename xxx {} } -result [dict create c d a b] test dict-19.2 {dict: testing for leaks} -setup { - proc getbytes {} { - set lines [split [memory info] "\n"] - lindex [lindex $lines 3] 3 - } # This test is made to stress object reference management proc stress {} { # A shared invalid dictinary @@ -927,18 +934,21 @@ test dict-19.2 {dict: testing for leaks} -setup { unset bepa } } -constraints memory -body { - set end [getbytes] - for {set i 0} {$i < 5} {incr i} { - stress - set tmp $end - set end [getbytes] + memtest { + stress } - expr {$end - $tmp} } -cleanup { - unset -nocomplain end i tmp - rename getbytes {} rename stress {} } -result 0 +test dict-19.3 {testing for leaks - Bug 2874678} -constraints memory -body { + set d aDictVar; # Force interpreted [dict incr] + memtest { + dict incr $d aKey 0 + unset $d + } +} -cleanup { + unset d +} -result 0 test dict-20.1 {dict merge command} { dict merge -- cgit v0.12 From e513a2af4d14837117981f12dc2a11c116cd7683 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 14 Oct 2009 15:59:15 +0000 Subject: Added missing text. Noticed by Emiliano Gavilan. --- doc/try.n | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/try.n b/doc/try.n index f6ccb7f..84bef03 100644 --- a/doc/try.n +++ b/doc/try.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: try.n,v 1.1 2008/12/16 21:29:10 dkf Exp $ +'\" RCS: @(#) $Id: try.n,v 1.2 2009/10/14 15:59:15 dkf Exp $ '\" .so man.macros .TH try n 8.6 Tcl "Tcl Built-In Commands" @@ -51,7 +51,8 @@ non-empty, it names a variable into which the result of the evaluation of \fIbody\fR (from the main \fBtry\fR) will be placed; this will contain the human-readable form of any errors. If the second word of the list is present and non-empty, it names a variable into which the options dictionary of the -interpreter at the moment of completion of execution of \fIbody\fR. +interpreter at the moment of completion of execution of \fIbody\fR +will be placed. .PP The \fIscript\fR word of each \fIhandler\fR is also always interpreted the same: as a Tcl script to evaluate if the clause is matched. If \fIscript\fR is -- cgit v0.12 From 0e16374028b1faf8f321a454f9a965b065bd5a1e Mon Sep 17 00:00:00 2001 From: patthoyts Date: Thu, 15 Oct 2009 20:33:54 +0000 Subject: Fix the icon to have 48x48 size (mistakenly made a 46px icon) --- win/tclsh.ico | Bin 45934 -> 57022 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/win/tclsh.ico b/win/tclsh.ico index 6800dc2..e254318 100644 Binary files a/win/tclsh.ico and b/win/tclsh.ico differ -- cgit v0.12 From e37850ab1c67a3e6c3b23fddc07afeaefd699994 Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 17 Oct 2009 22:24:38 +0000 Subject: Fix [Bug 2629338]: Stop evil unset traces from accessing freed memory. --- ChangeLog | 8 ++++++++ generic/tclTrace.c | 15 ++++++++------- generic/tclVar.c | 52 +++++++++++++++++++++++++++++++++++++--------------- 3 files changed, 53 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index a12bdc8..263c1b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-17 Donal K. Fellows + + * generic/tclVar.c (UnsetVarStruct, TclDeleteNamespaceVars) + (TclDeleteCompiledLocalVars, DeleteArray): + * generic/tclTrace.c (Tcl_UntraceVar2): [Bug 2629338]: Stop traces + that are deleted part way through (a feature used by tdom) from + causing freed memory to be accessed. + 2009-10-08 Donal K. Fellows * generic/tclDictObj.c (DictIncrCmd): [Bug 2874678]: Don't leak any diff --git a/generic/tclTrace.c b/generic/tclTrace.c index cb40fd7..e35b7a3 100644 --- a/generic/tclTrace.c +++ b/generic/tclTrace.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTrace.c,v 1.55 2009/02/10 23:09:05 nijtmans Exp $ + * RCS: @(#) $Id: tclTrace.c,v 1.56 2009/10/17 22:24:38 dkf Exp $ */ #include "tclInt.h" @@ -2258,7 +2258,7 @@ StringTraceProc( data->proc(data->clientData, interp, level, (char *) command, cmdPtr->proc, cmdPtr->clientData, objc, argv); - TclStackFree(interp, (void *) argv); + TclStackFree(interp, argv); return TCL_OK; } @@ -2283,7 +2283,7 @@ static void StringTraceDeleteProc( ClientData clientData) { - ckfree((char *) clientData); + ckfree(clientData); } /* @@ -2311,7 +2311,7 @@ Tcl_DeleteTrace( { Interp *iPtr = (Interp *) interp; Trace *prevPtr, *tracePtr = (Trace *) trace; - register Trace **tracePtr2 = &(iPtr->tracePtr); + register Trace **tracePtr2 = &iPtr->tracePtr; ActiveInterpTrace *activePtr; /* @@ -2320,14 +2320,14 @@ Tcl_DeleteTrace( */ prevPtr = NULL; - while ((*tracePtr2) != NULL && (*tracePtr2) != tracePtr) { + while (*tracePtr2 != NULL && *tracePtr2 != tracePtr) { prevPtr = *tracePtr2; - tracePtr2 = &((*tracePtr2)->nextPtr); + tracePtr2 = &prevPtr->nextPtr; } if (*tracePtr2 == NULL) { return; } - (*tracePtr2) = (*tracePtr2)->nextPtr; + *tracePtr2 = (*tracePtr2)->nextPtr; /* * The code below makes it possible to delete traces while traces are @@ -2899,6 +2899,7 @@ Tcl_UntraceVar2( } else { prevPtr->nextPtr = nextPtr; } + tracePtr->nextPtr = NULL; Tcl_EventuallyFree(tracePtr, TCL_DYNAMIC); for (tracePtr = nextPtr; tracePtr != NULL; diff --git a/generic/tclVar.c b/generic/tclVar.c index ebd9d96..3bbe63f 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.182 2009/08/25 21:03:25 andreas_kupries Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.183 2009/10/17 22:24:38 dkf Exp $ */ #include "tclInt.h" @@ -2361,11 +2361,22 @@ UnsetVarStruct( if ((dummyVar.flags & VAR_TRACED_UNSET) || (arrayPtr && (arrayPtr->flags & VAR_TRACED_UNSET))) { dummyVar.flags &= ~VAR_TRACE_ACTIVE; - TclObjCallVarTraces(iPtr, arrayPtr, (Var *) &dummyVar, - part1Ptr, part2Ptr, + TclObjCallVarTraces(iPtr, arrayPtr, &dummyVar, part1Ptr, part2Ptr, (flags & (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY)) | TCL_TRACE_UNSETS, /* leaveErrMsg */ 0, -1); + + /* + * The traces that we just called may have triggered a change in + * the set of traces. If so, reload the traces to manipulate. + */ + + tracePtr = NULL; + if (TclIsVarTraced(&dummyVar)) { + tPtr = Tcl_FindHashEntry(&iPtr->varTraces, (char *) &dummyVar); + tracePtr = Tcl_GetHashValue(tPtr); + } + if (tPtr) { Tcl_DeleteHashEntry(tPtr); } @@ -2378,6 +2389,7 @@ UnsetVarStruct( VarTrace *prevPtr = tracePtr; tracePtr = tracePtr->nextPtr; + prevPtr->nextPtr = NULL; Tcl_EventuallyFree(prevPtr, TCL_DYNAMIC); } for (activePtr = iPtr->activeVarTracePtr; activePtr != NULL; @@ -4307,8 +4319,8 @@ ParseSearchId( Tcl_HashEntry *hPtr = Tcl_FindHashEntry(&iPtr->varSearches, (char *) varPtr); - for (searchPtr = (ArraySearch *) Tcl_GetHashValue(hPtr); - searchPtr != NULL; searchPtr = searchPtr->nextPtr) { + for (searchPtr = Tcl_GetHashValue(hPtr); searchPtr != NULL; + searchPtr = searchPtr->nextPtr) { if (searchPtr->id == id) { return searchPtr; } @@ -4348,8 +4360,8 @@ DeleteSearches( if (arrayVarPtr->flags & VAR_SEARCH_ACTIVE) { sPtr = Tcl_FindHashEntry(&iPtr->varSearches, (char *) arrayVarPtr); - for (searchPtr = (ArraySearch *) Tcl_GetHashValue(sPtr); - searchPtr != NULL; searchPtr = nextPtr) { + for (searchPtr = Tcl_GetHashValue(sPtr); searchPtr != NULL; + searchPtr = nextPtr) { nextPtr = searchPtr->nextPtr; ckfree((char *) searchPtr); } @@ -4418,16 +4430,24 @@ TclDeleteNamespaceVars( if (TclIsVarTraced(varPtr)) { Tcl_HashEntry *tPtr = Tcl_FindHashEntry(&iPtr->varTraces, (char *) varPtr); - VarTrace *tracePtr = (VarTrace *) Tcl_GetHashValue(tPtr); + VarTrace *tracePtr = Tcl_GetHashValue(tPtr); + ActiveVarTrace *activePtr; while (tracePtr) { VarTrace *prevPtr = tracePtr; tracePtr = tracePtr->nextPtr; - Tcl_EventuallyFree((ClientData) prevPtr, TCL_DYNAMIC); + prevPtr->nextPtr = NULL; + Tcl_EventuallyFree(prevPtr, TCL_DYNAMIC); } Tcl_DeleteHashEntry(tPtr); varPtr->flags &= ~VAR_ALL_TRACES; + for (activePtr = iPtr->activeVarTracePtr; activePtr != NULL; + activePtr = activePtr->nextPtr) { + if (activePtr->varPtr == varPtr) { + activePtr->nextTracePtr = NULL; + } + } } VarHashRefCount(varPtr)--; VarHashDeleteEntry(varPtr); @@ -4530,6 +4550,7 @@ TclDeleteCompiledLocalVars( UnsetVarStruct(varPtr, NULL, iPtr, *namePtrPtr, NULL, TCL_TRACE_UNSETS); } + framePtr->numCompiledLocals = 0; } /* @@ -4601,12 +4622,13 @@ DeleteArray( elNamePtr, flags,/* leaveErrMsg */ 0, -1); } tPtr = Tcl_FindHashEntry(&iPtr->varTraces, (char *) elPtr); - tracePtr = (VarTrace *) Tcl_GetHashValue(tPtr); + tracePtr = Tcl_GetHashValue(tPtr); while (tracePtr) { VarTrace *prevPtr = tracePtr; tracePtr = tracePtr->nextPtr; - Tcl_EventuallyFree((ClientData) prevPtr, TCL_DYNAMIC); + prevPtr->nextPtr = NULL; + Tcl_EventuallyFree(prevPtr, TCL_DYNAMIC); } Tcl_DeleteHashEntry(tPtr); elPtr->flags &= ~VAR_ALL_TRACES; @@ -5513,7 +5535,7 @@ AllocVarEntry( Tcl_HashTable *tablePtr, /* Hash table. */ void *keyPtr) /* Key to store in the hash table entry. */ { - Tcl_Obj *objPtr = (Tcl_Obj *) keyPtr; + Tcl_Obj *objPtr = keyPtr; Tcl_HashEntry *hPtr; Var *varPtr; @@ -5522,7 +5544,7 @@ AllocVarEntry( varPtr->value.objPtr = NULL; VarHashRefCount(varPtr) = 1; - hPtr = &(((VarInHash *)varPtr)->entry); + hPtr = &(((VarInHash *) varPtr)->entry); Tcl_SetHashValue(hPtr, varPtr); hPtr->key.objPtr = objPtr; Tcl_IncrRefCount(objPtr); @@ -5553,7 +5575,7 @@ CompareVarKeys( void *keyPtr, /* New key to compare. */ Tcl_HashEntry *hPtr) /* Existing key to compare. */ { - Tcl_Obj *objPtr1 = (Tcl_Obj *) keyPtr; + Tcl_Obj *objPtr1 = keyPtr; Tcl_Obj *objPtr2 = hPtr->key.objPtr; register const char *p1, *p2; register int l1, l2; @@ -5599,7 +5621,7 @@ HashVarKey( Tcl_HashTable *tablePtr, /* Hash table. */ void *keyPtr) /* Key from which to compute hash value. */ { - Tcl_Obj *objPtr = (Tcl_Obj *) keyPtr; + Tcl_Obj *objPtr = keyPtr; const char *string = TclGetString(objPtr); int length = objPtr->length; unsigned int result = 0; -- cgit v0.12 From 391cc5529b10b842b5e34acb19bf559b56df7f49 Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 17 Oct 2009 22:35:58 +0000 Subject: Fix [Bug 2629338]: Stop evil unset traces from accessing freed memory. --- ChangeLog | 16 ++++++++++++---- generic/tclTrace.c | 3 ++- generic/tclVar.c | 30 +++++++++++++++++++++++++----- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 99b598d..78300b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-17 Donal K. Fellows + + * generic/tclVar.c (TclDeleteCompiledLocalVars, UnsetVarStruct) + (TclDeleteNamespaceVars): + * generic/tclTrace.c (Tcl_UntraceVar2): [Bug 2629338]: Stop traces + that are deleted part way through (a feature used by tdom) from + causing freed memory to be accessed. + 2009-10-08 Donal K. Fellows * generic/tclDictObj.c (DictIncrCmd): [Bug 2874678]: Don't leak any @@ -12,10 +20,10 @@ functions more consistent. Patch supplied by Joe Mistachkin . - * generic/tclIORChan.c (ErrnoReturn): Replace the hardwired - constant 11 with the proper errno define, EAGAIN. What was I - thinking ? The BSD's have a different errno assignment and break - with the hardwired number. Reported by emiliano on the chat. + * generic/tclIORChan.c (ErrnoReturn): Replace the hardwired constant + 11 with the proper errno define, EAGAIN. What was I thinking? The + BSD's have a different errno assignment and break with the hardwired + number. Reported by emiliano on the chat. 2009-10-06 Don Porter diff --git a/generic/tclTrace.c b/generic/tclTrace.c index bc6d289..346defc 100644 --- a/generic/tclTrace.c +++ b/generic/tclTrace.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTrace.c,v 1.47.2.1 2008/10/08 14:52:39 dgp Exp $ + * RCS: @(#) $Id: tclTrace.c,v 1.47.2.2 2009/10/17 22:35:58 dkf Exp $ */ #include "tclInt.h" @@ -2894,6 +2894,7 @@ Tcl_UntraceVar2( } else { prevPtr->nextPtr = nextPtr; } + tracePtr->nextPtr = NULL; Tcl_EventuallyFree((ClientData) tracePtr, TCL_DYNAMIC); for (tracePtr = nextPtr; tracePtr != NULL; diff --git a/generic/tclVar.c b/generic/tclVar.c index 3a3a10f..969cc17 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.160.2.5 2009/08/25 21:01:05 andreas_kupries Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.160.2.6 2009/10/17 22:35:58 dkf Exp $ */ #include "tclInt.h" @@ -2364,11 +2364,22 @@ UnsetVarStruct( if ((dummyVar.flags & VAR_TRACED_UNSET) || (arrayPtr && (arrayPtr->flags & VAR_TRACED_UNSET))) { dummyVar.flags &= ~VAR_TRACE_ACTIVE; - TclObjCallVarTraces(iPtr, arrayPtr, (Var *) &dummyVar, - part1Ptr, part2Ptr, + TclObjCallVarTraces(iPtr, arrayPtr, &dummyVar, part1Ptr, part2Ptr, (flags & (TCL_GLOBAL_ONLY|TCL_NAMESPACE_ONLY)) | TCL_TRACE_UNSETS, /* leaveErrMsg */ 0, -1); + + /* + * The traces that we just called may have triggered a change in + * the set of traces. [Bug 2629338] + */ + + tracePtr = NULL; + if (TclIsVarTraced(&dummyVar)) { + tPtr = Tcl_FindHashEntry(&iPtr->varTraces, (char *) &dummyVar); + tracePtr = Tcl_GetHashValue(tPtr); + } + if (tPtr) { Tcl_DeleteHashEntry(tPtr); } @@ -2381,6 +2392,7 @@ UnsetVarStruct( VarTrace *prevPtr = tracePtr; tracePtr = tracePtr->nextPtr; + prevPtr->nextPtr = NULL; Tcl_EventuallyFree((ClientData) prevPtr, TCL_DYNAMIC); } for (activePtr = iPtr->activeVarTracePtr; activePtr != NULL; @@ -4382,7 +4394,7 @@ TclDeleteNamespaceVars( varPtr = VarHashFirstVar(tablePtr, &search)) { Tcl_Obj *objPtr = Tcl_NewObj(); Tcl_IncrRefCount(objPtr); - + VarHashRefCount(varPtr)++; /* Make sure we get to remove from * hash. */ Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, objPtr); @@ -4390,13 +4402,13 @@ TclDeleteNamespaceVars( NULL, flags); Tcl_DecrRefCount(objPtr); /* free no longer needed obj */ - /* * Remove the variable from the table and force it undefined in case * an unset trace brought it back from the dead. */ if (TclIsVarTraced(varPtr)) { + ActiveVarTrace *activePtr; Tcl_HashEntry *tPtr = Tcl_FindHashEntry(&iPtr->varTraces, (char *) varPtr); VarTrace *tracePtr = (VarTrace *) Tcl_GetHashValue(tPtr); @@ -4405,10 +4417,17 @@ TclDeleteNamespaceVars( VarTrace *prevPtr = tracePtr; tracePtr = tracePtr->nextPtr; + prevPtr->nextPtr = NULL; Tcl_EventuallyFree((ClientData) prevPtr, TCL_DYNAMIC); } Tcl_DeleteHashEntry(tPtr); varPtr->flags &= ~VAR_ALL_TRACES; + for (activePtr = iPtr->activeVarTracePtr; activePtr != NULL; + activePtr = activePtr->nextPtr) { + if (activePtr->varPtr == varPtr) { + activePtr->nextTracePtr = NULL; + } + } } VarHashRefCount(varPtr)--; VarHashDeleteEntry(varPtr); @@ -4511,6 +4530,7 @@ TclDeleteCompiledLocalVars( UnsetVarStruct(varPtr, NULL, iPtr, *namePtrPtr, NULL, TCL_TRACE_UNSETS); } + framePtr->numCompiledLocals = 0; } /* -- cgit v0.12 From ced84e1de5cdbd9a1c6a9e1850ab53968facc2d6 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sun, 18 Oct 2009 08:00:40 +0000 Subject: Fix for [Bug 1565466] --- ChangeLog | 8 ++++++++ tests/thread.test | 11 +++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 263c1b8..1814f7a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-18 Joe Mistachkin + + * tests/thread.test (thread-4.[345]): [Bug 1565466]: Correct tests to + save their error state before the final call to threadReap just in case + it triggers an "invalid thread id" error. This error can occur if one + or more of the target threads has exited prior to the attempt to send + it an asynchronous exit command. + 2009-10-17 Donal K. Fellows * generic/tclVar.c (UnsetVarStruct, TclDeleteNamespaceVars) diff --git a/tests/thread.test b/tests/thread.test index be2bd40..15988bd 100644 --- a/tests/thread.test +++ b/tests/thread.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: thread.test,v 1.20 2008/07/19 22:50:39 nijtmans Exp $ +# RCS: @(#) $Id: thread.test,v 1.21 2009/10/18 08:00:40 mistachkin Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -186,8 +186,9 @@ test thread-4.3 {TclThreadSend preserve errorInfo} {testthread} { set len [llength [testthread names]] set serverthread [testthread create] set x [catch {testthread send $serverthread {set undef}} msg] + set savedErrorInfo $::errorInfo threadReap - list $len $x $msg $::errorInfo + list $len $x $msg $savedErrorInfo } {1 1 {can't read "undef": no such variable} {can't read "undef": no such variable while executing "set undef" @@ -199,16 +200,18 @@ test thread-4.4 {TclThreadSend preserve code} {testthread} { set serverthread [testthread create] set ::errorInfo {} set x [catch {testthread send $serverthread {set ::errorInfo {}; break}} msg] + set savedErrorInfo $::errorInfo threadReap - list $len $x $msg $::errorInfo + list $len $x $msg $savedErrorInfo } {1 3 {} {}} test thread-4.5 {TclThreadSend preserve errorCode} {testthread} { threadReap set ::tcltest::mainThread [testthread names] set serverthread [testthread create] set x [catch {testthread send $serverthread {error ERR INFO CODE}} msg] + set savedErrorCode $::errorCode threadReap - list $x $msg $::errorCode + list $x $msg $savedErrorCode } {1 ERR CODE} -- cgit v0.12 From 87322cc40198a30c474da4769e08103cb41e7576 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sun, 18 Oct 2009 10:39:39 +0000 Subject: Fix for [Bug 2871908] --- ChangeLog | 7 +++++++ generic/tclObj.c | 12 ++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1814f7a..f3b82ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2009-10-18 Joe Mistachkin + * generic/tclObj.c (TclDbDumpActiveObjects, TclDbInitNewObj) + (Tcl_DbIncrRefCount, Tcl_DbDecrRefCount, Tcl_DbIsShared): [Bug 2871908] + Enforce separation of concerns between the lineCLPtr and objThreadMap + thread specific data members. + +2009-10-18 Joe Mistachkin + * tests/thread.test (thread-4.[345]): [Bug 1565466]: Correct tests to save their error state before the final call to threadReap just in case it triggers an "invalid thread id" error. This error can occur if one diff --git a/generic/tclObj.c b/generic/tclObj.c index d0e1115..8869e9b 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.162 2009/10/07 23:09:17 andreas_kupries Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.163 2009/10/18 10:39:41 mistachkin Exp $ */ #include "tclInt.h" @@ -1009,7 +1009,7 @@ TclDbDumpActiveObjects( Tcl_HashSearch hSearch; Tcl_HashEntry *hPtr; Tcl_HashTable *tablePtr; - ThreadSpecificData *tsdPtr = TclGetContLineTable(); + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); tablePtr = tsdPtr->objThreadMap; @@ -1076,7 +1076,7 @@ TclDbInitNewObj( Tcl_HashTable *tablePtr; int isNew; ObjData *objData; - ThreadSpecificData *tsdPtr = TclGetContLineTable(); + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); if (tsdPtr->objThreadMap == NULL) { tsdPtr->objThreadMap = (Tcl_HashTable *) @@ -3644,7 +3644,7 @@ Tcl_DbIncrRefCount( if (!TclInExit()) { Tcl_HashTable *tablePtr; Tcl_HashEntry *hPtr; - ThreadSpecificData *tsdPtr = TclGetContLineTable(); + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); tablePtr = tsdPtr->objThreadMap; if (!tablePtr) { @@ -3709,7 +3709,7 @@ Tcl_DbDecrRefCount( if (!TclInExit()) { Tcl_HashTable *tablePtr; Tcl_HashEntry *hPtr; - ThreadSpecificData *tsdPtr = TclGetContLineTable(); + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); tablePtr = tsdPtr->objThreadMap; if (!tablePtr) { @@ -3789,7 +3789,7 @@ Tcl_DbIsShared( if (!TclInExit()) { Tcl_HashTable *tablePtr; Tcl_HashEntry *hPtr; - ThreadSpecificData *tsdPtr = TclGetContLineTable(); + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); tablePtr = tsdPtr->objThreadMap; if (!tablePtr) { Tcl_Panic("object table not initialized"); -- cgit v0.12 From b71e44a2958f126a3de29dd3641cfbc259cff627 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sun, 18 Oct 2009 11:15:10 +0000 Subject: Fix for [Bug 1565466] --- ChangeLog | 8 ++++++++ tests/thread.test | 11 +++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index a1a2ef0..8f7f32f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-18 Joe Mistachkin + + * tests/thread.test (thread-4.[345]): [Bug 1565466]: Correct tests to + save their error state before the final call to threadReap just in case + it triggers an "invalid thread id" error. This error can occur if one + or more of the target threads has exited prior to the attempt to send + it an asynchronous exit command. + 2009-10-04 Daniel Steffen * macosx/tclMacOSXBundle.c: Workaround CF memory managment bug in diff --git a/tests/thread.test b/tests/thread.test index 2686720..037766d 100644 --- a/tests/thread.test +++ b/tests/thread.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: thread.test,v 1.10 2000/05/02 22:02:36 kupries Exp $ +# RCS: @(#) $Id: thread.test,v 1.10.18.1 2009/10/18 11:15:10 mistachkin Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -204,8 +204,9 @@ test thread-4.3 {TclThreadSend preserve errorInfo} {testthread} { set len [llength [testthread names]] set serverthread [testthread create] set x [catch {testthread send $serverthread {set undef}} msg] + set savedErrorInfo $errorInfo threadReap - list $len $x $msg $errorInfo + list $len $x $msg $savedErrorInfo } {1 1 {can't read "undef": no such variable} {can't read "undef": no such variable while executing "set undef" @@ -217,8 +218,9 @@ test thread-4.4 {TclThreadSend preserve code} {testthread} { set len [llength [testthread names]] set serverthread [testthread create] set x [catch {testthread send $serverthread {break}} msg] + set savedErrorInfo $errorInfo threadReap - list $len $x $msg $errorInfo + list $len $x $msg $savedErrorInfo } {1 3 {} {}} test thread-4.5 {TclThreadSend preserve errorCode} {testthread} { @@ -226,8 +228,9 @@ test thread-4.5 {TclThreadSend preserve errorCode} {testthread} { set ::tcltest::mainThread [testthread names] set serverthread [testthread create] set x [catch {testthread send $serverthread {error ERR INFO CODE}} msg] + set savedErrorCode $errorCode threadReap - list $x $msg $errorCode + list $x $msg $savedErrorCode } {1 ERR CODE} -- cgit v0.12 From 7b94da051e6dde67f1a1602c93fffbcc98787cf1 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sun, 18 Oct 2009 11:21:38 +0000 Subject: Fix for [Bug 988703, 1565466] --- ChangeLog | 16 ++++++++ doc/memory.n | 15 ++++++-- generic/tclCkalloc.c | 23 +++++++++++- generic/tclInt.decls | 7 +++- generic/tclInt.h | 8 ++-- generic/tclIntDecls.h | 30 ++++++++++++++- generic/tclObj.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++--- generic/tclStubInit.c | 9 ++++- tests/thread.test | 11 ++++-- 9 files changed, 200 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 78300b1..3b4a3f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2009-10-18 Joe Mistachkin + + * tests/thread.test (thread-4.[345]): [Bug 1565466]: Correct tests to + save their error state before the final call to threadReap just in case + it triggers an "invalid thread id" error. This error can occur if one + or more of the target threads has exited prior to the attempt to send + it an asynchronous exit command. + + * doc/memory.n: [Bug 988703]: Add mechanism for discovering what Tcl_Objs + * generic/tclCkalloc.c (MemoryCmd): are allocated when built for memory + * generic/tclInt.decls: debugging. This was previously backported from + * generic/tclInt.h: Tcl 8.6 with the corrections to fix [Bug 2871908]. + * generic/tclObj.c (ObjData, TclFinalizeThreadObjects): However, there + were key elements missing. These changes make things consistent between + branches. + 2009-10-17 Donal K. Fellows * generic/tclVar.c (TclDeleteCompiledLocalVars, UnsetVarStruct) diff --git a/doc/memory.n b/doc/memory.n index 7e49882..ed8a5fc 100644 --- a/doc/memory.n +++ b/doc/memory.n @@ -3,7 +3,7 @@ '\" Copyright (c) 2000 by Scriptics Corporation. '\" All rights reserved. '\" -'\" RCS: @(#) $Id: memory.n,v 1.12 2008/01/18 15:51:08 dkf Exp $ +'\" RCS: @(#) $Id: memory.n,v 1.12.2.1 2009/10/18 11:21:38 mistachkin Exp $ '\" .so man.macros .TH memory n 8.1 Tcl "Tcl Built-In Commands" @@ -41,10 +41,17 @@ number of calls to \fBckalloc\fR not met by a corresponding call to \fBckfree\fR), the current bytes allocated, and the maximum number of packets and bytes allocated. .TP -\fB memory init \fR[\fBon\fR|\fBoff\fR] +\fBmemory init \fR[\fBon\fR|\fBoff\fR] . Turn on or off the pre-initialization of all allocated memory -with bogus bytes. Useful for detecting the use of uninitialized values. +with bogus bytes. Useful for detecting the use of uninitialized +values. +.TP +\fBmemory objs \fIfile\fR +. +Causes a list of all allocated Tcl_Obj values to be written to the specified +\fIfile\fR immediately, together with where they were allocated. Useful for +checking for leaks of values. .TP \fBmemory onexit\fR \fIfile\fR . @@ -69,9 +76,11 @@ to \fBckalloc\fR causes a line of trace information to be written to address returned, the amount of memory allocated, and the C filename and line number of the code performing the allocation. For example: .RS +.PP .CS ckalloc 40e478 98 tclProc.c 1406 .CE +.PP Calls to \fBckfree\fR are traced in the same manner. .RE .TP diff --git a/generic/tclCkalloc.c b/generic/tclCkalloc.c index a29208a..81b8851 100644 --- a/generic/tclCkalloc.c +++ b/generic/tclCkalloc.c @@ -14,7 +14,7 @@ * * This code contributed by Karl Lehenbauer and Mark Diekhans * - * RCS: @(#) $Id: tclCkalloc.c,v 1.32.4.1 2009/09/29 04:43:58 dgp Exp $ + * RCS: @(#) $Id: tclCkalloc.c,v 1.32.4.2 2009/10/18 11:21:38 mistachkin Exp $ */ #include "tclInt.h" @@ -811,6 +811,7 @@ MemoryCmd( CONST char *argv[]) { CONST char *fileName; + FILE *fileP; Tcl_DString buffer; int result; @@ -864,6 +865,26 @@ MemoryCmd( init_malloced_bodies = (strcmp(argv[2],"on") == 0); return TCL_OK; } + if (strcmp(argv[1],"objs") == 0) { + if (argc != 3) { + Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], + " objs file\"", NULL); + return TCL_ERROR; + } + fileName = Tcl_TranslateFileName(interp, argv[2], &buffer); + if (fileName == NULL) { + return TCL_ERROR; + } + fileP = fopen(fileName, "w"); + if (fileP == NULL) { + Tcl_AppendResult(interp, "cannot open output file", NULL); + return TCL_ERROR; + } + TclDbDumpActiveObjects(fileP); + fclose(fileP); + Tcl_DStringFree(&buffer); + return TCL_OK; + } if (strcmp(argv[1],"onexit") == 0) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], diff --git a/generic/tclInt.decls b/generic/tclInt.decls index ecd6196..07e7ddb 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.121.2.1 2009/04/10 18:02:42 das Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.121.2.2 2009/10/18 11:21:38 mistachkin Exp $ library tcl @@ -934,6 +934,11 @@ declare 236 generic { void TclBackgroundException(Tcl_Interp *interp, int code) } +# Tcl_Obj leak detection support. +declare 243 generic { + void TclDbDumpActiveObjects(FILE *outFile) +} + ############################################################################## # Define the platform specific internal Tcl interface. These functions are diff --git a/generic/tclInt.h b/generic/tclInt.h index 30c663f..10da682 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.362.2.9 2009/09/29 04:43:58 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.362.2.10 2009/10/18 11:21:38 mistachkin Exp $ */ #ifndef _TCLINT @@ -2566,6 +2566,7 @@ MODULE_SCOPE void TclFinalizePreserve(void); MODULE_SCOPE void TclFinalizeSynchronization(void); MODULE_SCOPE void TclFinalizeThreadAlloc(void); MODULE_SCOPE void TclFinalizeThreadData(void); +MODULE_SCOPE void TclFinalizeThreadObjects(void); MODULE_SCOPE double TclFloor(mp_int *a); MODULE_SCOPE void TclFormatNaN(double value, char *buffer); MODULE_SCOPE int TclFSFileAttrIndex(Tcl_Obj *pathPtr, @@ -3492,12 +3493,13 @@ MODULE_SCOPE Tcl_Mutex tclObjMutex; #endif #else /* TCL_MEM_DEBUG */ -MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr); +MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, CONST char *file, + int line); # define TclDbNewObj(objPtr, file, line) \ TclIncrObjsAllocated(); \ (objPtr) = (Tcl_Obj *) Tcl_DbCkalloc(sizeof(Tcl_Obj), (file), (line)); \ - TclDbInitNewObj(objPtr); \ + TclDbInitNewObj((objPtr), (file), (line)); \ TCL_DTRACE_OBJ_CREATE(objPtr) # define TclNewObj(objPtr) \ diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index 0ff03f9..cf30fc8 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIntDecls.h,v 1.112 2008/01/23 17:31:42 dgp Exp $ + * RCS: @(#) $Id: tclIntDecls.h,v 1.112.2.1 2009/10/18 11:21:38 mistachkin Exp $ */ #ifndef _TCLINTDECLS @@ -1076,6 +1076,17 @@ EXTERN void TclInitVarHashTable (TclVarHashTable * tablePtr, EXTERN void TclBackgroundException (Tcl_Interp * interp, int code); #endif +/* Slot 237 is reserved */ +/* Slot 238 is reserved */ +/* Slot 239 is reserved */ +/* Slot 240 is reserved */ +/* Slot 241 is reserved */ +/* Slot 242 is reserved */ +#ifndef TclDbDumpActiveObjects_TCL_DECLARED +#define TclDbDumpActiveObjects_TCL_DECLARED +/* 243 */ +EXTERN void TclDbDumpActiveObjects (FILE * outFile); +#endif typedef struct TclIntStubs { int magic; @@ -1342,6 +1353,13 @@ typedef struct TclIntStubs { Var * (*tclVarHashCreateVar) (TclVarHashTable * tablePtr, const char * key, int * newPtr); /* 234 */ void (*tclInitVarHashTable) (TclVarHashTable * tablePtr, Namespace * nsPtr); /* 235 */ void (*tclBackgroundException) (Tcl_Interp * interp, int code); /* 236 */ + void *reserved237; + void *reserved238; + void *reserved239; + void *reserved240; + void *reserved241; + void *reserved242; + void (*tclDbDumpActiveObjects) (FILE * outFile); /* 243 */ } TclIntStubs; #ifdef __cplusplus @@ -2090,6 +2108,16 @@ extern TclIntStubs *tclIntStubsPtr; #define TclBackgroundException \ (tclIntStubsPtr->tclBackgroundException) /* 236 */ #endif +/* Slot 237 is reserved */ +/* Slot 238 is reserved */ +/* Slot 239 is reserved */ +/* Slot 240 is reserved */ +/* Slot 241 is reserved */ +/* Slot 242 is reserved */ +#ifndef TclDbDumpActiveObjects +#define TclDbDumpActiveObjects \ + (tclIntStubsPtr->tclDbDumpActiveObjects) /* 243 */ +#endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclObj.c b/generic/tclObj.c index 39b8515..23097f6 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclObj.c,v 1.139.2.4 2009/10/07 23:10:50 andreas_kupries Exp $ + * RCS: @(#) $Id: tclObj.c,v 1.139.2.5 2009/10/18 11:21:38 mistachkin Exp $ */ #include "tclInt.h" @@ -54,6 +54,22 @@ Tcl_Mutex tclObjMutex; char tclEmptyString = '\0'; char *tclEmptyStringRep = &tclEmptyString; +#if defined(TCL_MEM_DEBUG) && defined(TCL_THREADS) +/* + * Structure for tracking the source file and line number where a given Tcl_Obj + * was allocated. We also track the pointer to the Tcl_Obj itself, for sanity + * checking purposes. + */ + +typedef struct ObjData { + Tcl_Obj *objPtr; /* The pointer to the allocated Tcl_Obj. */ + CONST char *file; /* The name of the source file calling this + * function; used for debugging. */ + int line; /* Line number in the source file; used for + * debugging. */ +} ObjData; +#endif /* TCL_MEM_DEBUG && TCL_THREADS */ + /* * All static variables used in this file are collected into a single instance * of the following structure. For multi-threaded implementations, there is @@ -81,6 +97,7 @@ typedef struct ThreadSpecificData { * Thread local table that is used to check that a Tcl_Obj was not * allocated by some other thread. */ + Tcl_HashTable *objThreadMap; #endif /* TCL_MEM_DEBUG && TCL_THREADS */ } ThreadSpecificData; @@ -960,6 +977,55 @@ Tcl_ConvertToType( } /* + *-------------------------------------------------------------- + * + * TclDbDumpActiveObjects -- + * + * This function is called to dump all of the active Tcl_Obj structs this + * allocator knows about. + * + * Results: + * None. + * + * Side effects: + * None. + * + *-------------------------------------------------------------- + */ + +void +TclDbDumpActiveObjects( + FILE *outFile) +{ +#if defined(TCL_MEM_DEBUG) && defined(TCL_THREADS) + Tcl_HashSearch hSearch; + Tcl_HashEntry *hPtr; + Tcl_HashTable *tablePtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + tablePtr = tsdPtr->objThreadMap; + + if (tablePtr != NULL) { + fprintf(outFile, "total objects: %d\n", tablePtr->numEntries); + for (hPtr = Tcl_FirstHashEntry(tablePtr, &hSearch); hPtr != NULL; + hPtr = Tcl_NextHashEntry(&hSearch)) { + ObjData *objData = Tcl_GetHashValue(hPtr); + + if (objData != NULL) { + fprintf(outFile, + "key = 0x%p, objPtr = 0x%p, file = %s, line = %d\n", + Tcl_GetHashKey(tablePtr, hPtr), objData->objPtr, + objData->file, objData->line); + } else { + fprintf(outFile, "key = 0x%p\n", + Tcl_GetHashKey(tablePtr, hPtr)); + } + } + } +#endif +} + +/* *---------------------------------------------------------------------- * * TclDbInitNewObj -- @@ -980,7 +1046,11 @@ Tcl_ConvertToType( #ifdef TCL_MEM_DEBUG void TclDbInitNewObj( - register Tcl_Obj *objPtr) + register Tcl_Obj *objPtr, + register CONST char *file, /* The name of the source file calling this + * function; used for debugging. */ + register int line) /* Line number in the source file; used for + * debugging. */ { objPtr->refCount = 0; objPtr->bytes = tclEmptyStringRep; @@ -997,7 +1067,8 @@ TclDbInitNewObj( Tcl_HashEntry *hPtr; Tcl_HashTable *tablePtr; int isNew; - ThreadSpecificData *tsdPtr = TclGetContLineTable(); + ObjData *objData; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); if (tsdPtr->objThreadMap == NULL) { tsdPtr->objThreadMap = (Tcl_HashTable *) @@ -1009,7 +1080,16 @@ TclDbInitNewObj( if (!isNew) { Tcl_Panic("expected to create new entry for object map"); } - Tcl_SetHashValue(hPtr, NULL); + + /* + * Record the debugging information. + */ + + objData = (ObjData *) ckalloc(sizeof(ObjData)); + objData->objPtr = objPtr; + objData->file = file; + objData->line = line; + Tcl_SetHashValue(hPtr, objData); } #endif /* TCL_THREADS */ } @@ -3596,8 +3676,17 @@ Tcl_DbDecrRefCount( "Tcl_Obj allocated in another thread"); } - /* If the Tcl_Obj is going to be deleted, remove the entry */ - if ((((objPtr)->refCount) - 1) <= 0) { + /* + * If the Tcl_Obj is going to be deleted, remove the entry. + */ + + if ((objPtr->refCount - 1) <= 0) { + ObjData *objData = Tcl_GetHashValue(hPtr); + + if (objData != NULL) { + ckfree((char *) objData); + } + Tcl_DeleteHashEntry(hPtr); } } diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index 18c4f44..5159c74 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubInit.c,v 1.150.2.1 2009/04/10 18:02:42 das Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.150.2.2 2009/10/18 11:21:38 mistachkin Exp $ */ #include "tclInt.h" @@ -335,6 +335,13 @@ TclIntStubs tclIntStubs = { TclVarHashCreateVar, /* 234 */ TclInitVarHashTable, /* 235 */ TclBackgroundException, /* 236 */ + NULL, /* 237 */ + NULL, /* 238 */ + NULL, /* 239 */ + NULL, /* 240 */ + NULL, /* 241 */ + NULL, /* 242 */ + TclDbDumpActiveObjects, /* 243 */ }; TclIntPlatStubs tclIntPlatStubs = { diff --git a/tests/thread.test b/tests/thread.test index 9f5562e..15fa2c6 100644 --- a/tests/thread.test +++ b/tests/thread.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: thread.test,v 1.18 2007/12/13 15:26:07 dgp Exp $ +# RCS: @(#) $Id: thread.test,v 1.18.2.1 2009/10/18 11:21:38 mistachkin Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -184,8 +184,9 @@ test thread-4.3 {TclThreadSend preserve errorInfo} {testthread} { set len [llength [testthread names]] set serverthread [testthread create] set x [catch {testthread send $serverthread {set undef}} msg] + set savedErrorInfo $::errorInfo threadReap - list $len $x $msg $::errorInfo + list $len $x $msg $savedErrorInfo } {1 1 {can't read "undef": no such variable} {can't read "undef": no such variable while executing "set undef" @@ -197,16 +198,18 @@ test thread-4.4 {TclThreadSend preserve code} {testthread} { set serverthread [testthread create] set ::errorInfo {} set x [catch {testthread send $serverthread {set ::errorInfo {}; break}} msg] + set savedErrorInfo $::errorInfo threadReap - list $len $x $msg $::errorInfo + list $len $x $msg $savedErrorInfo } {1 3 {} {}} test thread-4.5 {TclThreadSend preserve errorCode} {testthread} { threadReap set ::tcltest::mainThread [testthread names] set serverthread [testthread create] set x [catch {testthread send $serverthread {error ERR INFO CODE}} msg] + set savedErrorCode $::errorCode threadReap - list $x $msg $::errorCode + list $x $msg $savedErrorCode } {1 ERR CODE} -- cgit v0.12 From ef2ad353d74da54fe55bed15a320b667774cb790 Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 19 Oct 2009 21:59:17 +0000 Subject: * generic/tclIO.c: Revised ReadChars and FilterInputBytes routines to permit reads to continue up to the string limits of Tcl values. Before revisions, large read attempts could panic when as little as half the limiting value length was reached. [Patch 2107634] Thanks to Sean Morrison and Bob Parker for their roles in the fix. --- ChangeLog | 8 ++++++++ generic/tclIO.c | 44 +++++++++++++++++++++++++++----------------- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3b4a3f9..609b273 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-19 Don Porter + + * generic/tclIO.c: Revised ReadChars and FilterInputBytes routines + to permit reads to continue up to the string limits of Tcl values. + Before revisions, large read attempts could panic when as little as + half the limiting value length was reached. [Patch 2107634] + Thanks to Sean Morrison and Bob Parker for their roles in the fix. + 2009-10-18 Joe Mistachkin * tests/thread.test (thread-4.[345]): [Bug 1565466]: Correct tests to diff --git a/generic/tclIO.c b/generic/tclIO.c index 649e31b..a74cd04 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.11 2009/07/24 16:51:28 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.12 2009/10/19 21:59:18 dgp Exp $ */ #include "tclInt.h" @@ -4613,7 +4613,7 @@ FilterInputBytes( /* State info for channel */ ChannelBuffer *bufPtr; char *raw, *rawStart, *dst; - int offset, toRead, dstNeeded, spaceLeft, result, rawLen, length; + int offset, toRead, dstNeeded, spaceLeft, result, rawLen; Tcl_Obj *objPtr; #define ENCODING_LINESIZE 20 /* Lower bound on how many bytes to convert at * a time. Since we don't know a priori how @@ -4679,15 +4679,19 @@ FilterInputBytes( if (toRead > rawLen) { toRead = rawLen; } - dstNeeded = toRead * TCL_UTF_MAX + 1; - spaceLeft = objPtr->length - offset - TCL_UTF_MAX - 1; + dstNeeded = toRead * TCL_UTF_MAX; + spaceLeft = objPtr->length - offset; if (dstNeeded > spaceLeft) { - length = offset * 2; - if (offset < dstNeeded) { + int length = offset + ((offset < dstNeeded) ? dstNeeded : offset); + + if (Tcl_AttemptSetObjLength(objPtr, length) == 0) { length = offset + dstNeeded; + if (Tcl_AttemptSetObjLength(objPtr, length) == 0) { + dstNeeded = TCL_UTF_MAX - 1 + toRead; + length = offset + dstNeeded; + Tcl_SetObjLength(objPtr, length); + } } - length += TCL_UTF_MAX + 1; - Tcl_SetObjLength(objPtr, length); spaceLeft = length - offset; dst = objPtr->bytes + offset; *gsPtr->dstPtr = dst; @@ -4695,7 +4699,7 @@ FilterInputBytes( gsPtr->state = statePtr->inputEncodingState; result = Tcl_ExternalToUtf(NULL, gsPtr->encoding, raw, rawLen, statePtr->inputEncodingFlags, &statePtr->inputEncodingState, - dst, spaceLeft, &gsPtr->rawRead, &gsPtr->bytesWrote, + dst, spaceLeft+1, &gsPtr->rawRead, &gsPtr->bytesWrote, &gsPtr->charsWrote); /* @@ -5419,6 +5423,8 @@ ReadBytes( * 'charsToRead' can safely be a very large number because space is only * allocated to hold data read from the channel as needed. * + * 'charsToRead' may *not* be 0. + * * Results: * The return value is the number of characters appended to the object, * *offsetPtr is filled with the number of bytes that were appended, and @@ -5456,7 +5462,7 @@ ReadChars( * UTF-8. On output, contains another guess * based on the data seen so far. */ { - int toRead, factor, offset, spaceLeft, length, srcLen, dstNeeded; + int toRead, factor, offset, spaceLeft, srcLen, dstNeeded; int srcRead, dstWrote, numChars, dstRead; ChannelBuffer *bufPtr; char *src, *dst; @@ -5481,8 +5487,8 @@ ReadChars( * how many characters were produced by the previous pass. */ - dstNeeded = toRead * factor / UTF_EXPANSION_FACTOR; - spaceLeft = objPtr->length - offset - TCL_UTF_MAX - 1; + dstNeeded = TCL_UTF_MAX - 1 + toRead * factor / UTF_EXPANSION_FACTOR; + spaceLeft = objPtr->length - offset; if (dstNeeded > spaceLeft) { /* @@ -5491,13 +5497,17 @@ ReadChars( * larger. */ - length = offset * 2; - if (offset < dstNeeded) { + int length = offset + ((offset < dstNeeded) ? dstNeeded : offset); + + if (Tcl_AttemptSetObjLength(objPtr, length) == 0) { length = offset + dstNeeded; + if (Tcl_AttemptSetObjLength(objPtr, length) == 0) { + dstNeeded = TCL_UTF_MAX - 1 + toRead; + length = offset + dstNeeded; + Tcl_SetObjLength(objPtr, length); + } } spaceLeft = length - offset; - length += TCL_UTF_MAX + 1; - Tcl_SetObjLength(objPtr, length); } if (toRead == srcLen) { /* @@ -5589,7 +5599,7 @@ ReadChars( Tcl_ExternalToUtf(NULL, statePtr->encoding, src, srcLen, statePtr->inputEncodingFlags, &statePtr->inputEncodingState, dst, - dstNeeded + TCL_UTF_MAX, &srcRead, &dstWrote, &numChars); + dstNeeded + 1, &srcRead, &dstWrote, &numChars); if (encEndFlagSuppressed) { statePtr->inputEncodingFlags |= TCL_ENCODING_END; -- cgit v0.12 From e6b9dc1ca77df45483a0daaba818bffd3989363e Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 19 Oct 2009 22:00:19 +0000 Subject: * generic/tclIO.c: Revised ReadChars and FilterInputBytes routines to permit reads to continue up to the string limits of Tcl values. Before revisions, large read attempts could panic when as little as half the limiting value length was reached. [Patch 2107634] Thanks to Sean Morrison and Bob Parker for their roles in the fix. --- ChangeLog | 8 ++++++++ generic/tclIO.c | 44 +++++++++++++++++++++++++++----------------- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index f3b82ae..18b8933 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-19 Don Porter + + * generic/tclIO.c: Revised ReadChars and FilterInputBytes routines + to permit reads to continue up to the string limits of Tcl values. + Before revisions, large read attempts could panic when as little as + half the limiting value length was reached. [Patch 2107634] + Thanks to Sean Morrison and Bob Parker for their roles in the fix. + 2009-10-18 Joe Mistachkin * generic/tclObj.c (TclDbDumpActiveObjects, TclDbInitNewObj) diff --git a/generic/tclIO.c b/generic/tclIO.c index 737e64e..28e9fbc 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.162 2009/09/30 03:11:26 dgp Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.163 2009/10/19 22:00:19 dgp Exp $ */ #include "tclInt.h" @@ -5016,7 +5016,7 @@ FilterInputBytes( /* State info for channel */ ChannelBuffer *bufPtr; char *raw, *rawStart, *dst; - int offset, toRead, dstNeeded, spaceLeft, result, rawLen, length; + int offset, toRead, dstNeeded, spaceLeft, result, rawLen; Tcl_Obj *objPtr; #define ENCODING_LINESIZE 20 /* Lower bound on how many bytes to convert at * a time. Since we don't know a priori how @@ -5082,15 +5082,19 @@ FilterInputBytes( if (toRead > rawLen) { toRead = rawLen; } - dstNeeded = toRead * TCL_UTF_MAX + 1; - spaceLeft = objPtr->length - offset - TCL_UTF_MAX - 1; + dstNeeded = toRead * TCL_UTF_MAX; + spaceLeft = objPtr->length - offset; if (dstNeeded > spaceLeft) { - length = offset * 2; - if (offset < dstNeeded) { + int length = offset + ((offset < dstNeeded) ? dstNeeded : offset); + + if (Tcl_AttemptSetObjLength(objPtr, length) == 0) { length = offset + dstNeeded; + if (Tcl_AttemptSetObjLength(objPtr, length) == 0) { + dstNeeded = TCL_UTF_MAX - 1 + toRead; + length = offset + dstNeeded; + Tcl_SetObjLength(objPtr, length); + } } - length += TCL_UTF_MAX + 1; - Tcl_SetObjLength(objPtr, length); spaceLeft = length - offset; dst = objPtr->bytes + offset; *gsPtr->dstPtr = dst; @@ -5098,7 +5102,7 @@ FilterInputBytes( gsPtr->state = statePtr->inputEncodingState; result = Tcl_ExternalToUtf(NULL, gsPtr->encoding, raw, rawLen, statePtr->inputEncodingFlags, &statePtr->inputEncodingState, - dst, spaceLeft, &gsPtr->rawRead, &gsPtr->bytesWrote, + dst, spaceLeft+1, &gsPtr->rawRead, &gsPtr->bytesWrote, &gsPtr->charsWrote); /* @@ -5817,6 +5821,8 @@ ReadBytes( * 'charsToRead' can safely be a very large number because space is only * allocated to hold data read from the channel as needed. * + * 'charsToRead' may *not* be 0. + * * Results: * The return value is the number of characters appended to the object, * *offsetPtr is filled with the number of bytes that were appended, and @@ -5854,7 +5860,7 @@ ReadChars( * UTF-8. On output, contains another guess * based on the data seen so far. */ { - int toRead, factor, offset, spaceLeft, length, srcLen, dstNeeded; + int toRead, factor, offset, spaceLeft, srcLen, dstNeeded; int srcRead, dstWrote, numChars, dstRead; ChannelBuffer *bufPtr; char *src, *dst; @@ -5879,8 +5885,8 @@ ReadChars( * how many characters were produced by the previous pass. */ - dstNeeded = toRead * factor / UTF_EXPANSION_FACTOR; - spaceLeft = objPtr->length - offset - TCL_UTF_MAX - 1; + dstNeeded = TCL_UTF_MAX - 1 + toRead * factor / UTF_EXPANSION_FACTOR; + spaceLeft = objPtr->length - offset; if (dstNeeded > spaceLeft) { /* @@ -5889,13 +5895,17 @@ ReadChars( * larger. */ - length = offset * 2; - if (offset < dstNeeded) { + int length = offset + ((offset < dstNeeded) ? dstNeeded : offset); + + if (Tcl_AttemptSetObjLength(objPtr, length) == 0) { length = offset + dstNeeded; + if (Tcl_AttemptSetObjLength(objPtr, length) == 0) { + dstNeeded = TCL_UTF_MAX - 1 + toRead; + length = offset + dstNeeded; + Tcl_SetObjLength(objPtr, length); + } } spaceLeft = length - offset; - length += TCL_UTF_MAX + 1; - Tcl_SetObjLength(objPtr, length); } if (toRead == srcLen) { /* @@ -5987,7 +5997,7 @@ ReadChars( Tcl_ExternalToUtf(NULL, statePtr->encoding, src, srcLen, statePtr->inputEncodingFlags, &statePtr->inputEncodingState, dst, - dstNeeded + TCL_UTF_MAX, &srcRead, &dstWrote, &numChars); + dstNeeded + 1, &srcRead, &dstWrote, &numChars); if (encEndFlagSuppressed) { statePtr->inputEncodingFlags |= TCL_ENCODING_END; -- cgit v0.12 From 259d383e8d57a792f15ecc31734381dc6216b0cc Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 20 Oct 2009 17:21:22 +0000 Subject: * unix/Makefile.in: Removed the long outdated and broken targets package-* that were for building Solaris packages. Appears that the pieces needed for these targets to function have never been present in the current era of Tcl development and belong completely to Tcl pre-history. --- ChangeLog | 8 ++++++ unix/Makefile.in | 80 +------------------------------------------------------- unix/configure | 1 - 3 files changed, 9 insertions(+), 80 deletions(-) diff --git a/ChangeLog b/ChangeLog index 18b8933..0fd658a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-20 Don Porter + + * unix/Makefile.in: Removed the long outdated and broken targets + package-* that were for building Solaris packages. Appears that + the pieces needed for these targets to function have never been + present in the current era of Tcl development and belong completely + to Tcl pre-history. + 2009-10-19 Don Porter * generic/tclIO.c: Revised ReadChars and FilterInputBytes routines diff --git a/unix/Makefile.in b/unix/Makefile.in index 07e3fcc..f190222 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.277 2009/10/05 02:40:04 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.278 2009/10/20 17:21:23 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -1988,82 +1988,4 @@ BUILD_HTML = \ ./tclsh $(TOOL_DIR)/tcltk-man2html.tcl --htmldir="$(HTML_INSTALL_DIR)" \ --srcdir=$(TOP_DIR)/.. $(BUILD_HTML_FLAGS) -# -# Targets to build Solaris package of the distribution for the current -# architecture. To build stream packages for both sun4 and i86pc -# architectures: -# -# On the sun4 machine, execute the following: -# make distclean; ./configure -# make DISTDIR= package -# -# Once the build is complete, execute the following on the i86pc machine: -# make DISTDIR= package-quick -# -# is the absolute path to a directory where the build should take -# place. These steps will generate the $(PACKAGE).sun4 and $(PACKAGE).i86pc -# stream packages. It is important that the packages be built in this fashion -# in order to ensure that the architecture independent files are exactly the -# same, including timestamps, in both packages. -# - -PACKAGE=SCRPtcl - -package: dist package-config package-common package-binaries package-generate -package-quick: package-config package-binaries package-generate - -# -# Configure for the current architecture in the dist directory. -# -package-config: - mkdir -p $(DISTDIR)/unix/`arch` - cd $(DISTDIR)/unix/`arch`; \ - ../configure --prefix=/opt/$(PACKAGE)/$(VERSION) \ - --exec_prefix=/opt/$(PACKAGE)/$(VERSION)/`arch` \ - --enable-shared - mkdir -p $(DISTDIR)/$(PACKAGE)/$(VERSION) - mkdir -p $(DISTDIR)/$(PACKAGE)/$(VERSION)/`arch` - -# -# Build and install the architecture independent files in the dist directory. -# - -package-common: - cd $(DISTDIR)/unix/`arch`;\ - $(MAKE); \ - $(MAKE) prefix=$(DISTDIR)/$(PACKAGE)/$(VERSION) \ - exec_prefix=$(DISTDIR)/$(PACKAGE)/$(VERSION)/`arch` \ - install-libraries install-man - mkdir -p $(DISTDIR)/$(PACKAGE)/$(VERSION)/bin - sed -e "s/TCLVERSION/$(VERSION)/g" < $(UNIX_DIR)/tclsh.sh \ - > $(DISTDIR)/$(PACKAGE)/$(VERSION)/bin/tclsh$(VERSION) - chmod 755 $(DISTDIR)/$(PACKAGE)/$(VERSION)/bin/tclsh$(VERSION) - -# -# Build and install the architecture specific files in the dist directory. -# - -package-binaries: - cd $(DISTDIR)/unix/`arch`; \ - $(MAKE); \ - $(MAKE) install-binaries prefix=$(DISTDIR)/$(PACKAGE)/$(VERSION) \ - exec_prefix=$(DISTDIR)/$(PACKAGE)/$(VERSION)/`arch` - -# -# Generate a package from the installed files in the dist directory for the -# current architecture. -# - -package-generate: - pkgproto $(DISTDIR)/$(PACKAGE)/$(VERSION)/bin=bin \ - $(DISTDIR)/$(PACKAGE)/$(VERSION)/include=include \ - $(DISTDIR)/$(PACKAGE)/$(VERSION)/lib=lib \ - $(DISTDIR)/$(PACKAGE)/$(VERSION)/man=man \ - $(DISTDIR)/$(PACKAGE)/$(VERSION)/`arch`=`arch` \ - | $(TCL_EXE) $(UNIX_DIR)/mkProto.tcl \ - $(VERSION) $(UNIX_DIR) > prototype - pkgmk -o -d . -f prototype -a `arch` - pkgtrans -s . $(PACKAGE).`arch` $(PACKAGE) - rm -rf $(PACKAGE) - # DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/unix/configure b/unix/configure index a926936..6b4b375 100755 --- a/unix/configure +++ b/unix/configure @@ -7174,7 +7174,6 @@ fi fi - ;; HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" -- cgit v0.12 From 6a8b66f230e8c7c863fc4ad7f4b7ecedf04aade9 Mon Sep 17 00:00:00 2001 From: ferrieux Date: Tue, 20 Oct 2009 21:45:41 +0000 Subject: describe backported fixes --- changes | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/changes b/changes index 03adbe5..cd394c2 100644 --- a/changes +++ b/changes @@ -1,6 +1,6 @@ Recent user-visible changes to Tcl: -RCS: @(#) $Id: changes,v 1.136.2.17 2009/10/05 15:20:12 dgp Exp $ +RCS: @(#) $Id: changes,v 1.136.2.18 2009/10/20 21:45:41 ferrieux Exp $ 1. No more [command1] [command2] construct for grouping multiple commands on a single command line. @@ -7334,9 +7334,9 @@ among multiple interps (kupries) --- Released 8.5.7, April 15, 2009 --- See ChangeLog for details --- -2009-04-27 (bug fix)[2446662] (ferrieux) +2009-04-27 (bug fix)[2446662] uniformly declare EOF on RST on sockets (ferrieux) -2009-04-27 (bug fix)[1028264] (ferrieux) +2009-04-27 (bug fix)[1028264] delay WSACleanup() from under our feet (ferrieux) 2009-05-07 (bug fix)[2785893] find command in deleted namespace (sofer) -- cgit v0.12 From 206803edd2a7c10a2b1d5413762aa326169a39cb Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 21 Oct 2009 13:36:22 +0000 Subject: Fix [Bug 2881259]. --- ChangeLog | 19 ++++++++++++------- generic/tclTrace.c | 4 ++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0fd658a..fc73113 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-21 Donal K. Fellows + + * generic/tclTrace.c (StringTraceProc): [Bug 2881259]: Added back cast + to work around silly bug in MSVC's handling of auto-casting. + 2009-10-20 Don Porter * unix/Makefile.in: Removed the long outdated and broken targets @@ -8,18 +13,18 @@ 2009-10-19 Don Porter - * generic/tclIO.c: Revised ReadChars and FilterInputBytes routines - to permit reads to continue up to the string limits of Tcl values. - Before revisions, large read attempts could panic when as little as - half the limiting value length was reached. [Patch 2107634] + * generic/tclIO.c: [Patch 2107634]: Revised ReadChars and + FilterInputBytes routines to permit reads to continue up to the string + limits of Tcl values. Before revisions, large read attempts could + panic when as little as half the limiting value length was reached. Thanks to Sean Morrison and Bob Parker for their roles in the fix. 2009-10-18 Joe Mistachkin * generic/tclObj.c (TclDbDumpActiveObjects, TclDbInitNewObj) - (Tcl_DbIncrRefCount, Tcl_DbDecrRefCount, Tcl_DbIsShared): [Bug 2871908] - Enforce separation of concerns between the lineCLPtr and objThreadMap - thread specific data members. + (Tcl_DbIncrRefCount, Tcl_DbDecrRefCount, Tcl_DbIsShared): + [Bug 2871908]: Enforce separation of concerns between the lineCLPtr + and objThreadMap thread specific data members. 2009-10-18 Joe Mistachkin diff --git a/generic/tclTrace.c b/generic/tclTrace.c index e35b7a3..ca1f736 100644 --- a/generic/tclTrace.c +++ b/generic/tclTrace.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTrace.c,v 1.56 2009/10/17 22:24:38 dkf Exp $ + * RCS: @(#) $Id: tclTrace.c,v 1.57 2009/10/21 13:36:23 dkf Exp $ */ #include "tclInt.h" @@ -2258,7 +2258,7 @@ StringTraceProc( data->proc(data->clientData, interp, level, (char *) command, cmdPtr->proc, cmdPtr->clientData, objc, argv); - TclStackFree(interp, argv); + TclStackFree(interp, (void *) argv); return TCL_OK; } -- cgit v0.12 From 5be98e8c4e3aa5d4c7c98af3b165e62e7be15d7e Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 21 Oct 2009 13:53:14 +0000 Subject: Fix [Bug 2882561]. --- ChangeLog | 3 +++ generic/tclPosixStr.c | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index fc73113..f5e6f58 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2009-10-21 Donal K. Fellows + * generic/tclPosixStr.c: [Bug 2882561]: Work around oddity on Haiku OS + where SIGSEGV and SIGBUS are the same value. + * generic/tclTrace.c (StringTraceProc): [Bug 2881259]: Added back cast to work around silly bug in MSVC's handling of auto-casting. diff --git a/generic/tclPosixStr.c b/generic/tclPosixStr.c index 5c1a1b9..4d7c559 100644 --- a/generic/tclPosixStr.c +++ b/generic/tclPosixStr.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPosixStr.c,v 1.15 2009/03/15 15:35:46 dkf Exp $ + * RCS: @(#) $Id: tclPosixStr.c,v 1.16 2009/10/21 13:53:14 dkf Exp $ */ #include "tclInt.h" @@ -994,7 +994,7 @@ Tcl_SignalId( #ifdef SIGQUIT case SIGQUIT: return "SIGQUIT"; #endif -#ifdef SIGSEGV +#if defined(SIGSEGV) && (!defined(SIGBUS) || (SIGSEGV != SIGBUS)) case SIGSEGV: return "SIGSEGV"; #endif #ifdef SIGSTOP @@ -1128,7 +1128,7 @@ Tcl_SignalMsg( #ifdef SIGQUIT case SIGQUIT: return "quit signal"; #endif -#ifdef SIGSEGV +#if defined(SIGSEGV) && (!defined(SIGBUS) || (SIGSEGV != SIGBUS)) case SIGSEGV: return "segmentation violation"; #endif #ifdef SIGSTOP -- cgit v0.12 From fdcd9d45ff7ee98fcf1fb2b950963234e42abf54 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 21 Oct 2009 13:54:45 +0000 Subject: Fix [Bug 2882561]. --- ChangeLog | 5 +++++ generic/tclPosixStr.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 609b273..0eec538 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-21 Donal K. Fellows + + * generic/tclPosixStr.c: [Bug 2882561]: Work around oddity on Haiku OS + where SIGSEGV and SIGBUS are the same value. + 2009-10-19 Don Porter * generic/tclIO.c: Revised ReadChars and FilterInputBytes routines diff --git a/generic/tclPosixStr.c b/generic/tclPosixStr.c index 31fccba..f8c410c 100644 --- a/generic/tclPosixStr.c +++ b/generic/tclPosixStr.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPosixStr.c,v 1.12.10.1 2009/03/15 15:38:19 dkf Exp $ + * RCS: @(#) $Id: tclPosixStr.c,v 1.12.10.2 2009/10/21 13:54:45 dkf Exp $ */ #include "tclInt.h" @@ -994,7 +994,7 @@ Tcl_SignalId( #ifdef SIGQUIT case SIGQUIT: return "SIGQUIT"; #endif -#ifdef SIGSEGV +#if defined(SIGSEGV) && (!defined(SIGBUS) || (SIGSEGV != SIGBUS)) case SIGSEGV: return "SIGSEGV"; #endif #ifdef SIGSTOP @@ -1128,7 +1128,7 @@ Tcl_SignalMsg( #ifdef SIGQUIT case SIGQUIT: return "quit signal"; #endif -#ifdef SIGSEGV +#if defined(SIGSEGV) && (!defined(SIGBUS) || (SIGSEGV != SIGBUS)) case SIGSEGV: return "segmentation violation"; #endif #ifdef SIGSTOP -- cgit v0.12 From e6bbad298d8df84ba97e6f019d01c1956165c915 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 21 Oct 2009 13:58:47 +0000 Subject: Fix [Bug 2882561]. --- ChangeLog | 27 ++++++++++++++++----------- generic/tclPosixStr.c | 6 +++--- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8f7f32f..b788e78 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-21 Donal K. Fellows + + * generic/tclPosixStr.c: [Bug 2882561]: Work around oddity on Haiku OS + where SIGSEGV and SIGBUS are the same value. + 2009-10-18 Joe Mistachkin * tests/thread.test (thread-4.[345]): [Bug 1565466]: Correct tests to @@ -28,18 +33,18 @@ 2009-08-25 Andreas Kupries * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard, - EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations, - TclEvalObjEx): + (EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations, + (TclEvalObjEx): * generic/tclCmdMZ.c (Tcl_SwitchObjCmd, ListLines): * generic/tclCompCmds.c (*): * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv, - TclFreeCompileEnv, TclCompileScript): + (TclFreeCompileEnv, TclCompileScript): * generic/tclCompile.h (CompileEnv): * generic/tclInt.h (ContLineLoc, Interp): * generic/tclObj.c (ThreadSpecificData, ContLineLocFree, - TclThreadFinalizeObjects, TclInitObjSubsystem, - TclContinuationsEnter, TclContinuationsEnterDerived, - TclContinuationsCopy, TclContinuationsGet, TclFreeObj): + (TclThreadFinalizeObjects, TclInitObjSubsystem, + (TclContinuationsEnter, TclContinuationsEnterDerived, + (TclContinuationsCopy, TclContinuationsGet, TclFreeObj): * generic/tclProc.c (TclCreateProc): * generic/tclVar.c (TclPtrSetVar): * tests/info.test (info-30.0-22): @@ -61,9 +66,9 @@ 2009-07-14 Andreas Kupries * generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter, - TclArgumentBCRelease, TclArgumentGet): + (TclArgumentBCRelease, TclArgumentGet): * generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode, - TclInitCompileEnv, TclCompileScript): + (TclInitCompileEnv, TclCompileScript): * generic/tclCompile.h (ExtCmdLoc): * generic/tclExecute.c (TclExecuteByteCode): * generic/tclInt.h (ExtIndex, CFWordBC): @@ -102,8 +107,8 @@ 2009-04-27 Alexandre Ferrieux - * generic/tclInt.h: Backport fix for [Bug 1028264]: WSACleanup() too early. - * generic/tclEvent.c: The fix introduces "late exit handlers" + * generic/tclInt.h: Backport fix for [Bug 1028264]: WSACleanup() too + * generic/tclEvent.c: early. The fix introduces "late exit handlers" * win/tclWinSock.c: for similar late process-wide cleanups. 2009-04-27 Alexandre Ferrieux @@ -114,7 +119,7 @@ 2009-04-22 Andreas Kupries * generic/tclStringObj.c (UpdateStringOfString): Added cast to fix - signed/unsigned mismatch breaking win32 symbol/debug build. + signed/unsigned mismatch breaking win32 symbol/debug build. 2009-04-15 Don Porter diff --git a/generic/tclPosixStr.c b/generic/tclPosixStr.c index cc2a546..3b3467d 100644 --- a/generic/tclPosixStr.c +++ b/generic/tclPosixStr.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPosixStr.c,v 1.9 2002/05/27 10:14:21 dkf Exp $ + * RCS: @(#) $Id: tclPosixStr.c,v 1.9.2.1 2009/10/21 13:58:48 dkf Exp $ */ #include "tclInt.h" @@ -998,7 +998,7 @@ Tcl_SignalId(sig) #ifdef SIGQUIT case SIGQUIT: return "SIGQUIT"; #endif -#ifdef SIGSEGV +#if defined(SIGSEGV) && (!defined(SIGBUS) || (SIGSEGV != SIGBUS)) case SIGSEGV: return "SIGSEGV"; #endif #ifdef SIGSTOP @@ -1130,7 +1130,7 @@ Tcl_SignalMsg(sig) #ifdef SIGQUIT case SIGQUIT: return "quit signal"; #endif -#ifdef SIGSEGV +#if defined(SIGSEGV) && (!defined(SIGBUS) || (SIGSEGV != SIGBUS)) case SIGSEGV: return "segmentation violation"; #endif #ifdef SIGSTOP -- cgit v0.12 From 0fca0c346fbe4fb05578bffffc93048a9e0db914 Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 21 Oct 2009 15:13:15 +0000 Subject: Typo --- doc/lset.n | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/lset.n b/doc/lset.n index 74d47e6..dfc3d2b 100755 --- a/doc/lset.n +++ b/doc/lset.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: lset.n,v 1.19 2008/10/17 10:22:25 dkf Exp $ +'\" RCS: @(#) $Id: lset.n,v 1.20 2009/10/21 15:13:15 dkf Exp $ '\" .so man.macros .TH lset n 8.4 Tcl "Tcl Built-In Commands" @@ -56,7 +56,7 @@ command. If \fIindex\fR is negative or greater than the number of elements in \fI$varName\fR, then an error occurs. .PP -If \fIindex\fR is equal to the numnber of elements in \fI$varName\fR, +If \fIindex\fR is equal to the number of elements in \fI$varName\fR, then the given element is appended to the list. .PP The interpretation of each simple \fIindex\fR value is the same as -- cgit v0.12 From a14cd9979de8b9856c979aae40f3c8889b2d8d9b Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 22 Oct 2009 15:39:58 +0000 Subject: Let [$obj varname x(y)] work. [Bug 2883857] --- ChangeLog | 5 +++++ generic/tclOOBasic.c | 27 +++++++++++++++++++++++++-- tests/oo.test | 13 ++++++++++++- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f5e6f58..42b3dd3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-22 Donal K. Fellows + + * generic/tclOOBasic.c (TclOO_Object_VarName): [Bug 2883857]: Allow + the passing of array element names through this method. + 2009-10-21 Donal K. Fellows * generic/tclPosixStr.c: [Bug 2882561]: Work around oddity on Haiku OS diff --git a/generic/tclOOBasic.c b/generic/tclOOBasic.c index f70d4f9..f6e4542 100644 --- a/generic/tclOOBasic.c +++ b/generic/tclOOBasic.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclOOBasic.c,v 1.18 2009/03/24 10:46:04 dkf Exp $ + * RCS: @(#) $Id: tclOOBasic.c,v 1.19 2009/10/22 15:39:58 dkf Exp $ */ #ifdef HAVE_CONFIG_H @@ -608,7 +608,30 @@ TclOO_Object_VarName( } varNamePtr = Tcl_NewObj(); - Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, varNamePtr); + if (aryVar != NULL) { + Tcl_HashEntry *hPtr; + Tcl_HashSearch search; + + Tcl_GetVariableFullName(interp, (Tcl_Var) aryVar, varNamePtr); + + /* + * WARNING! This code pokes inside the implementation of hash tables! + */ + + hPtr = Tcl_FirstHashEntry((Tcl_HashTable *) aryVar->value.tablePtr, + &search); + while (hPtr != NULL) { + if (varPtr == Tcl_GetHashValue(hPtr)) { + Tcl_AppendToObj(varNamePtr, "(", -1); + Tcl_AppendObjToObj(varNamePtr, hPtr->key.objPtr); + Tcl_AppendToObj(varNamePtr, ")", -1); + break; + } + hPtr = Tcl_NextHashEntry(&search); + } + } else { + Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, varNamePtr); + } Tcl_SetObjResult(interp, varNamePtr); return TCL_OK; } diff --git a/tests/oo.test b/tests/oo.test index 829c8ce..a976a7d 100644 --- a/tests/oo.test +++ b/tests/oo.test @@ -7,7 +7,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: oo.test,v 1.29 2009/06/24 15:29:40 dkf Exp $ +# RCS: @(#) $Id: oo.test,v 1.30 2009/10/22 15:39:58 dkf Exp $ package require TclOO 0.6.1 ;# Must match value in generic/tclOO.h if {[lsearch [namespace children] ::tcltest] == -1} { @@ -1626,6 +1626,17 @@ test oo-19.1 {OO: varname method} -setup { inst destroy rename foo {} } -result {{x {} write} ok ok 0} +test oo-19.2 {OO: varname method: Bug 2883857} -setup { + oo::class create SpecialClass + oo::objdefine SpecialClass export createWithNamespace + SpecialClass createWithNamespace inst ::oo_test + oo::objdefine inst export varname eval +} -body { + inst eval { variable x; array set x {y z} } + inst varname x(y) +} -cleanup { + SpecialClass destroy +} -result ::oo_test::x(y) test oo-20.1 {OO: variable method} -body { oo::class create testClass { -- cgit v0.12 From 6e5f5cf6aa1b14b180e83744d92fa4639c49a587 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 23 Oct 2009 19:08:44 +0000 Subject: * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level 0-length writes. When closing pipes which have already been closed not skipping leads to spurious SIG_PIPE signals. Reported by Mikhail Teterin . --- ChangeLog | 7 +++++++ generic/tclIO.c | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b788e78..5316163 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-23 Andreas Kupries + + * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level + 0-length writes. When closing pipes which have already been closed + not skipping leads to spurious SIG_PIPE signals. Reported by + Mikhail Teterin . + 2009-10-21 Donal K. Fellows * generic/tclPosixStr.c: [Bug 2882561]: Work around oddity on Haiku OS diff --git a/generic/tclIO.c b/generic/tclIO.c index 8e00054..11cb205 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.32 2008/12/01 21:48:01 dgp Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.33 2009/10/23 19:08:45 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2131,9 +2131,13 @@ FlushChannel(interp, chanPtr, calledFromAsyncFlush) */ toWrite = bufPtr->nextAdded - bufPtr->nextRemoved; - written = (chanPtr->typePtr->outputProc) (chanPtr->instanceData, + if (toWrite == 0) { + written = 0; + } else { + written = (chanPtr->typePtr->outputProc) (chanPtr->instanceData, bufPtr->buf + bufPtr->nextRemoved, toWrite, &errorCode); + } /* * If the write failed completely attempt to start the asynchronous -- cgit v0.12 From f00682186bc011c9dea0bb6125848af3af894c87 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 23 Oct 2009 19:09:02 +0000 Subject: * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level 0-length writes. When closing pipes which have already been closed not skipping leads to spurious SIG_PIPE signals. Reported by Mikhail Teterin . --- ChangeLog | 7 +++++++ generic/tclIO.c | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0eec538..8338699 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-23 Andreas Kupries + + * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level + 0-length writes. When closing pipes which have already been closed + not skipping leads to spurious SIG_PIPE signals. Reported by + Mikhail Teterin . + 2009-10-21 Donal K. Fellows * generic/tclPosixStr.c: [Bug 2882561]: Work around oddity on Haiku OS diff --git a/generic/tclIO.c b/generic/tclIO.c index a74cd04..fe5ea86 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.137.2.12 2009/10/19 21:59:18 dgp Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.137.2.13 2009/10/23 19:09:02 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2314,8 +2314,12 @@ FlushChannel( */ toWrite = BytesLeft(bufPtr); - written = (chanPtr->typePtr->outputProc)(chanPtr->instanceData, + if (toWrite == 0) { + written = 0; + } else { + written = (chanPtr->typePtr->outputProc)(chanPtr->instanceData, RemovePoint(bufPtr), toWrite, &errorCode); + } /* * If the write failed completely attempt to start the asynchronous -- cgit v0.12 From 4c918aeb8891267ba470fbb2734bc5f0f711df00 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 23 Oct 2009 19:09:17 +0000 Subject: * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level 0-length writes. When closing pipes which have already been closed not skipping leads to spurious SIG_PIPE signals. Reported by Mikhail Teterin . --- ChangeLog | 7 +++++++ generic/tclIO.c | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 42b3dd3..47f0a53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-23 Andreas Kupries + + * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level + 0-length writes. When closing pipes which have already been closed + not skipping leads to spurious SIG_PIPE signals. Reported by + Mikhail Teterin . + 2009-10-22 Donal K. Fellows * generic/tclOOBasic.c (TclOO_Object_VarName): [Bug 2883857]: Allow diff --git a/generic/tclIO.c b/generic/tclIO.c index 28e9fbc..57960f5 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.163 2009/10/19 22:00:19 dgp Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.164 2009/10/23 19:09:17 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2393,7 +2393,11 @@ FlushChannel( */ toWrite = BytesLeft(bufPtr); - written = ChanWrite(chanPtr, RemovePoint(bufPtr),toWrite, &errorCode); + if (toWrite == 0) { + written = 0; + } else { + written = ChanWrite(chanPtr, RemovePoint(bufPtr),toWrite, &errorCode); + } /* * If the write failed completely attempt to start the asynchronous -- cgit v0.12 From 2cf3aa02dee40bb7023ecf5a2b50f52bb193ba74 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 23 Oct 2009 19:22:23 +0000 Subject: * library/platform/pkgIndex.tcl: Backported the platform packages * library/platform/platform.tcl: from head and8.5 into the 8.4 * library/platform/shell.tcl: branch. Updated makefiles to install * unix/Makfile.in: the packages. * win/Makefile.in: --- ChangeLog | 6 + library/platform/pkgIndex.tcl | 3 + library/platform/platform.tcl | 308 ++++++++++++++++++++++++++++++++++++++++++ library/platform/shell.tcl | 238 ++++++++++++++++++++++++++++++++ unix/Makefile.in | 9 +- win/Makefile.in | 9 +- 6 files changed, 569 insertions(+), 4 deletions(-) create mode 100644 library/platform/pkgIndex.tcl create mode 100644 library/platform/platform.tcl create mode 100644 library/platform/shell.tcl diff --git a/ChangeLog b/ChangeLog index 5316163..99cec01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-10-23 Andreas Kupries + * library/platform/pkgIndex.tcl: Backported the platform packages + * library/platform/platform.tcl: from head and8.5 into the 8.4 + * library/platform/shell.tcl: branch. Updated makefiles to install + * unix/Makfile.in: the packages. + * win/Makefile.in: + * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level 0-length writes. When closing pipes which have already been closed not skipping leads to spurious SIG_PIPE signals. Reported by diff --git a/library/platform/pkgIndex.tcl b/library/platform/pkgIndex.tcl new file mode 100644 index 0000000..0b69432 --- /dev/null +++ b/library/platform/pkgIndex.tcl @@ -0,0 +1,3 @@ +package ifneeded platform 1.0.5 [list source [file join $dir platform.tcl]] +package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]] + diff --git a/library/platform/platform.tcl b/library/platform/platform.tcl new file mode 100644 index 0000000..1a454cd --- /dev/null +++ b/library/platform/platform.tcl @@ -0,0 +1,308 @@ +# -*- tcl -*- +# ### ### ### ######### ######### ######### +## Overview + +# Heuristics to assemble a platform identifier from publicly available +# information. The identifier describes the platform of the currently +# running tcl shell. This is a mixture of the runtime environment and +# of build-time properties of the executable itself. +# +# Examples: +# <1> A tcl shell executing on a x86_64 processor, but having a +# wordsize of 4 was compiled for the x86 environment, i.e. 32 +# bit, and loaded packages have to match that, and not the +# actual cpu. +# +# <2> The hp/solaris 32/64 bit builds of the core cannot be +# distinguished by looking at tcl_platform. As packages have to +# match the 32/64 information we have to look in more places. In +# this case we inspect the executable itself (magic numbers, +# i.e. fileutil::magic::filetype). +# +# The basic information used comes out of the 'os' and 'machine' +# entries of the 'tcl_platform' array. A number of general and +# os/machine specific transformation are applied to get a canonical +# result. +# +# General +# Only the first element of 'os' is used - we don't care whether we +# are on "Windows NT" or "Windows XP" or whatever. +# +# Machine specific +# % arm* -> arm +# % sun4* -> sparc +# % intel -> ix86 +# % i*86* -> ix86 +# % Power* -> powerpc +# % x86_64 + wordSize 4 => x86 code +# +# OS specific +# % AIX are always powerpc machines +# % HP-UX 9000/800 etc means parisc +# % linux has to take glibc version into account +# % sunos -> solaris, and keep version number +# +# NOTE: A platform like linux glibc 2.3, which can use glibc 2.2 stuff +# has to provide all possible allowed platform identifiers when +# searching search. Ditto a solaris 2.8 platform can use solaris 2.6 +# packages. Etc. This is handled by the other procedure, see below. + +# ### ### ### ######### ######### ######### +## Requirements + +namespace eval ::platform {} + +# ### ### ### ######### ######### ######### +## Implementation + +# -- platform::generic +# +# Assembles an identifier for the generic platform. It leaves out +# details like kernel version, libc version, etc. + +proc ::platform::generic {} { + global tcl_platform + + set plat [string tolower [lindex $tcl_platform(os) 0]] + set cpu $tcl_platform(machine) + + switch -glob -- $cpu { + sun4* { + set cpu sparc + } + intel - + i*86* { + set cpu ix86 + } + x86_64 { + if {$tcl_platform(wordSize) == 4} { + # See Example <1> at the top of this file. + set cpu ix86 + } + } + "Power*" { + set cpu powerpc + } + "arm*" { + set cpu arm + } + ia64 { + if {$tcl_platform(wordSize) == 4} { + append cpu _32 + } + } + } + + switch -- $plat { + windows { + set plat win32 + if {$cpu eq "amd64"} { + # Do not check wordSize, win32-x64 is an IL32P64 platform. + set cpu x86_64 + } + } + sunos { + set plat solaris + if {![string match "ia64*" $cpu]} { + if {$tcl_platform(wordSize) == 8} { + append cpu 64 + } + } + } + darwin { + set plat macosx + # Correctly identify the cpu when running as a 64bit + # process on a machine with a 32bit kernel + if {$cpu eq "ix86"} { + if {$tcl_platform(wordSize) == 8} { + set cpu x86_64 + } + } + } + aix { + set cpu powerpc + if {$tcl_platform(wordSize) == 8} { + append cpu 64 + } + } + hp-ux { + set plat hpux + if {![string match "ia64*" $cpu]} { + set cpu parisc + if {$tcl_platform(wordSize) == 8} { + append cpu 64 + } + } + } + osf1 { + set plat tru64 + } + } + + return "${plat}-${cpu}" +} + +# -- platform::identify +# +# Assembles an identifier for the exact platform, by extending the +# generic identifier. I.e. it adds in details like kernel version, +# libc version, etc., if they are relevant for the loading of +# packages on the platform. + +proc ::platform::identify {} { + global tcl_platform + + set id [generic] + regexp {^([^-]+)-([^-]+)$} $id -> plat cpu + + switch -- $plat { + solaris { + regsub {^5} $tcl_platform(osVersion) 2 text + append plat $text + return "${plat}-${cpu}" + } + macosx { + set major [lindex [split $tcl_platform(osVersion) .] 0] + if {$major > 8} { + incr major -4 + append plat 10.$major + return "${plat}-${cpu}" + } + } + linux { + # Look for the libc*.so and determine its version + # (libc5/6, libc6 further glibc 2.X) + + set v unknown + + if {[file exists /lib64] && [file isdirectory /lib64]} { + set base /lib64 + } else { + set base /lib + } + + set libclist [lsort [glob -nocomplain -directory $base libc*]] + if {[llength $libclist]} { + set libc [lindex $libclist 0] + + # Try executing the library first. This should suceed + # for a glibc library, and return the version + # information. + + if {![catch { + set vdata [lindex [split [exec $libc] \n] 0] + }]} { + regexp {([0-9]+(\.[0-9]+)*)} $vdata -> v + foreach {major minor} [split $v .] break + set v glibc${major}.${minor} + } else { + # We had trouble executing the library. We are now + # inspecting its name to determine the version + # number. This code by Larry McVoy. + + if {[regexp -- {libc-([0-9]+)\.([0-9]+)} $libc -> major minor]} { + set v glibc${major}.${minor} + } + } + } + append plat -$v + return "${plat}-${cpu}" + } + } + + return $id +} + +# -- platform::patterns +# +# Given an exact platform identifier, i.e. _not_ the generic +# identifier it assembles a list of exact platform identifier +# describing platform which should be compatible with the +# input. +# +# I.e. packages for all platforms in the result list should be +# loadable on the specified platform. + +# << Should we add the generic identifier to the list as well ? In +# general it is not compatible I believe. So better not. In many +# cases the exact identifier is identical to the generic one +# anyway. +# >> + +proc ::platform::patterns {id} { + set res [list $id] + if {$id eq "tcl"} {return $res} + + switch -glob -- $id { + solaris*-* { + if {[regexp {solaris([^-]*)-(.*)} $id -> v cpu]} { + if {$v eq ""} {return $id} + foreach {major minor} [split $v .] break + incr minor -1 + for {set j $minor} {$j >= 6} {incr j -1} { + lappend res solaris${major}.${j}-${cpu} + } + } + } + linux*-* { + if {[regexp {linux-glibc([^-]*)-(.*)} $id -> v cpu]} { + foreach {major minor} [split $v .] break + incr minor -1 + for {set j $minor} {$j >= 0} {incr j -1} { + lappend res linux-glibc${major}.${j}-${cpu} + } + } + } + macosx*-* { + # 10.5+ + if {[regexp {macosx([^-]*)-(.*)} $id -> v cpu]} { + if {$v ne ""} { + foreach {major minor} [split $v .] break + + # Add 10.5 to 10.minor to patterns. + set res {} + for {set j $minor} {$j >= 5} {incr j -1} { + lappend res macosx${major}.${j}-${cpu} + lappend res macosx${major}.${j}-universal + } + + # Add unversioned patterns for 10.3/10.4 builds. + lappend res macosx-${cpu} + lappend res macosx-universal + } else { + lappend res macosx-universal + } + } else { + lappend res macosx-universal + } + } + macosx-powerpc - + macosx-ix86 { + lappend res macosx-universal + } + } + lappend res tcl ; # Pure tcl packages are always compatible. + return $res +} + + +# ### ### ### ######### ######### ######### +## Ready + +package provide platform 1.0.5 + +# ### ### ### ######### ######### ######### +## Demo application + +if {[info exists argv0] && ($argv0 eq [info script])} { + puts ==================================== + parray tcl_platform + puts ==================================== + puts Generic\ identification:\ [::platform::generic] + puts Exact\ identification:\ \ \ [::platform::identify] + puts ==================================== + puts Search\ patterns: + puts *\ [join [::platform::patterns [::platform::identify]] \n*\ ] + puts ==================================== + exit 0 +} diff --git a/library/platform/shell.tcl b/library/platform/shell.tcl new file mode 100644 index 0000000..407e639 --- /dev/null +++ b/library/platform/shell.tcl @@ -0,0 +1,238 @@ +# -*- tcl -*- +# ### ### ### ######### ######### ######### +## Overview + +# Higher-level commands which invoke the functionality of this package +# for an arbitrary tcl shell (tclsh, wish, ...). This is required by a +# repository as while the tcl shell executing packages uses the same +# platform in general as a repository application there can be +# differences in detail (i.e. 32/64 bit builds). + +# ### ### ### ######### ######### ######### +## Requirements + +package require platform +namespace eval ::platform::shell {} + +# ### ### ### ######### ######### ######### +## Implementation + +# -- platform::shell::generic + +proc ::platform::shell::generic {shell} { + # Argument is the path to a tcl shell. + + CHECK $shell + LOCATE base out + + set code {} + # Forget any pre-existing platform package, it might be in + # conflict with this one. + lappend code {package forget platform} + # Inject our platform package + lappend code [list source $base] + # Query and print the architecture + lappend code {puts [platform::generic]} + # And done + lappend code {exit 0} + + set arch [RUN $shell [join $code \n]] + + if {$out} {file delete -force $base} + return $arch +} + +# -- platform::shell::identify + +proc ::platform::shell::identify {shell} { + # Argument is the path to a tcl shell. + + CHECK $shell + LOCATE base out + + set code {} + # Forget any pre-existing platform package, it might be in + # conflict with this one. + lappend code {package forget platform} + # Inject our platform package + lappend code [list source $base] + # Query and print the architecture + lappend code {puts [platform::identify]} + # And done + lappend code {exit 0} + + set arch [RUN $shell [join $code \n]] + + if {$out} {file delete -force $base} + return $arch +} + +# -- platform::shell::platform + +proc ::platform::shell::platform {shell} { + # Argument is the path to a tcl shell. + + CHECK $shell + + set code {} + lappend code {puts $tcl_platform(platform)} + lappend code {exit 0} + + return [RUN $shell [join $code \n]] +} + +# ### ### ### ######### ######### ######### +## Internal helper commands. + +proc ::platform::shell::CHECK {shell} { + if {![file exists $shell]} { + return -code error "Shell \"$shell\" does not exist" + } + if {![file executable $shell]} { + return -code error "Shell \"$shell\" is not executable (permissions)" + } + return +} + +proc ::platform::shell::LOCATE {bv ov} { + upvar 1 $bv base $ov out + + # Locate the platform package for injection into the specified + # shell. We are using package management to find it, whereever it + # is, instead of using hardwired relative paths. This allows us to + # install the two packages as TMs without breaking the code + # here. If the found package is wrapped we copy the code somewhere + # where the spawned shell will be able to read it. + + # Note: This code depends on the form of the 'provide' command + # generated by tm.tcl. Keep them in sync. See Bug 2255235. + set pl [package ifneeded platform [package require platform]] + set base [lindex $pl end] + + set out 0 + if {[lindex [file system $base]] ne "native"} { + set temp [TEMP] + file copy -force $base $temp + set base $temp + set out 1 + } + return +} + +proc ::platform::shell::RUN {shell code} { + set c [TEMP] + set cc [open $c w] + puts $cc $code + close $cc + + set e [TEMP] + + set code [catch { + exec $shell $c 2> $e + } res] + + file delete $c + + if {$code} { + append res \n[read [set chan [open $e r]]][close $chan] + file delete $e + return -code error "Shell \"$shell\" is not executable ($res)" + } + + file delete $e + return $res +} + +proc ::platform::shell::TEMP {} { + set prefix platform + + # This code is copied out of Tcllib's fileutil package. + # (TempFile/tempfile) + + set tmpdir [DIR] + + set chars "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + set nrand_chars 10 + set maxtries 10 + set access [list RDWR CREAT EXCL TRUNC] + set permission 0600 + set channel "" + set checked_dir_writable 0 + set mypid [pid] + for {set i 0} {$i < $maxtries} {incr i} { + set newname $prefix + for {set j 0} {$j < $nrand_chars} {incr j} { + append newname [string index $chars \ + [expr {int(rand()*62)}]] + } + set newname [file join $tmpdir $newname] + if {[file exists $newname]} { + after 1 + } else { + if {[catch {open $newname $access $permission} channel]} { + if {!$checked_dir_writable} { + set dirname [file dirname $newname] + if {![file writable $dirname]} { + return -code error "Directory $dirname is not writable" + } + set checked_dir_writable 1 + } + } else { + # Success + close $channel + return [file normalize $newname] + } + } + } + if {[string compare $channel ""]} { + return -code error "Failed to open a temporary file: $channel" + } else { + return -code error "Failed to find an unused temporary file name" + } +} + +proc ::platform::shell::DIR {} { + # This code is copied out of Tcllib's fileutil package. + # (TempDir/tempdir) + + global tcl_platform env + + set attempdirs [list] + + foreach tmp {TMPDIR TEMP TMP} { + if { [info exists env($tmp)] } { + lappend attempdirs $env($tmp) + } + } + + switch $tcl_platform(platform) { + windows { + lappend attempdirs "C:\\TEMP" "C:\\TMP" "\\TEMP" "\\TMP" + } + macintosh { + set tmpdir $env(TRASH_FOLDER) ;# a better place? + } + default { + lappend attempdirs \ + [file join / tmp] \ + [file join / var tmp] \ + [file join / usr tmp] + } + } + + lappend attempdirs [pwd] + + foreach tmp $attempdirs { + if { [file isdirectory $tmp] && [file writable $tmp] } { + return [file normalize $tmp] + } + } + + # Fail if nothing worked. + return -code error "Unable to determine a proper directory for temporary files" +} + +# ### ### ### ######### ######### ######### +## Ready + +package provide platform::shell 1.1.4 diff --git a/unix/Makefile.in b/unix/Makefile.in index b7cabd4..5815ed4 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.121.2.28 2008/08/13 23:07:27 das Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.121.2.29 2009/10/23 19:22:24 andreas_kupries Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -660,7 +660,7 @@ install-libraries: libraries else true; \ fi; \ done; - @for i in http2.5 http1.0 opt0.4 encoding msgcat1.3 tcltest2.2; \ + @for i in platform http2.5 http1.0 opt0.4 encoding msgcat1.3 tcltest2.2; \ do \ if [ ! -d $(SCRIPT_INSTALL_DIR)/$$i ] ; then \ echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \ @@ -684,6 +684,11 @@ install-libraries: libraries do \ $(INSTALL_DATA) $$i $(SCRIPT_INSTALL_DIR); \ done; + @echo "Installing library platform directory"; + @for j in $(TOP_DIR)/library/platform/*.tcl ; \ + do \ + $(INSTALL_DATA) $$j $(SCRIPT_INSTALL_DIR)/platform; \ + done; @echo "Installing library http1.0 directory"; @for j in $(TOP_DIR)/library/http1.0/*.tcl ; \ do \ diff --git a/win/Makefile.in b/win/Makefile.in index 25cbbf7..858e2f3 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.68.2.7 2007/01/30 23:21:12 hobbs Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.68.2.8 2009/10/23 19:22:24 andreas_kupries Exp $ VERSION = @TCL_VERSION@ @@ -493,7 +493,7 @@ install-libraries: libraries else true; \ fi; \ done; - @for i in http1.0 http2.5 opt0.4 encoding msgcat1.3 tcltest2.2; \ + @for i in platform http1.0 http2.5 opt0.4 encoding msgcat1.3 tcltest2.2; \ do \ if [ ! -d $(SCRIPT_INSTALL_DIR)/$$i ] ; then \ echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \ @@ -512,6 +512,11 @@ install-libraries: libraries do \ $(COPY) "$$i" "$(SCRIPT_INSTALL_DIR)"; \ done; + @echo "Installing library platform directory"; + @for j in $(ROOT_DIR)/library/platform/*.tcl; \ + do \ + $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/platform"; \ + done; @echo "Installing library http1.0 directory"; @for j in $(ROOT_DIR)/library/http1.0/*.tcl; \ do \ -- cgit v0.12 From a7ee7c68c1945c3924c15bad6693af21314f4c12 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Fri, 23 Oct 2009 19:29:26 +0000 Subject: * generic/tclCompCmds.c: [Bug 2881263] (TclCompileForeachCmd, TclCompileLindexCmd): Fixed. Moved the use of DefineLineInformation after all regular variable declarations, so that an empty statement (-UTIP_280) doesn't confuse c89 compilers. --- ChangeLog | 5 +++++ generic/tclCompCmds.c | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 99cec01..b238882 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2009-10-23 Andreas Kupries + * generic/tclCompCmds.c: [Bug 2881263] (TclCompileForeachCmd, + TclCompileLindexCmd): Fixed. Moved the use of + DefineLineInformation after all regular variable declarations, so + that an empty statement (-UTIP_280) doesn't confuse c89 compilers. + * library/platform/pkgIndex.tcl: Backported the platform packages * library/platform/platform.tcl: from head and8.5 into the 8.4 * library/platform/shell.tcl: branch. Updated makefiles to install diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 26c387b..12f127e 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.8 2009/08/25 20:59:10 andreas_kupries Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.9 2009/10/23 19:29:26 andreas_kupries Exp $ */ #include "tclInt.h" @@ -769,7 +769,6 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) char buffer[32 + TCL_INTEGER_SPACE]; int savedStackDepth = envPtr->currStackDepth; - DefineLineInformation; #ifdef TCL_TIP280 int bodyIndex; #endif @@ -786,6 +785,8 @@ TclCompileForeachCmd(interp, parsePtr, envPtr) int *varcList = varcListStaticSpace; CONST char ***varvList = varvListStaticSpace; + DefineLineInformation; + /* * If the foreach command isn't in a procedure, don't compile it inline: * the payoff is too small. @@ -1851,10 +1852,10 @@ TclCompileLindexCmd(interp, parsePtr, envPtr) { Tcl_Token *varTokenPtr; int code, i; + int numWords; DefineLineInformation; - int numWords; numWords = parsePtr->numWords; /* -- cgit v0.12 From 2a552ac984e719a90dd9e9b554e2c3eb929359f9 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 24 Oct 2009 22:20:10 +0000 Subject: * library/clock.tcl (ProcessPosixTimeZone): Corrected a regression in the fix to [Bug 2207436] that caused [clock] to apply EU daylight saving time rules in the US. Thanks to Karl Lehenbauer for reporting this regression. * tests/clock.test (clock-52.4): Added a regression test for the above bug. * library/tzdata/Asia/Dhaka: * library/tzdata/Asia/Karachi: New DST rules for Bangladesh and Pakistan. (Olson's tzdata2009o.) --- ChangeLog | 12 +++ library/clock.tcl | 14 +++- library/tzdata/Asia/Dhaka | 1 - library/tzdata/Asia/Karachi | 182 +++++++++++++++++++++++++++++++++++++++++++- tests/clock.test | 12 ++- 5 files changed, 215 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 47f0a53..23eaa35 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-10-24 Kevin B. Kenny + + * library/clock.tcl (ProcessPosixTimeZone): + Corrected a regression in the fix to [Bug 2207436] that caused + [clock] to apply EU daylight saving time rules in the US. + Thanks to Karl Lehenbauer for reporting this regression. + * tests/clock.test (clock-52.4): + Added a regression test for the above bug. + * library/tzdata/Asia/Dhaka: + * library/tzdata/Asia/Karachi: + New DST rules for Bangladesh and Pakistan. (Olson's tzdata2009o.) + 2009-10-23 Andreas Kupries * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level diff --git a/library/clock.tcl b/library/clock.tcl index 36e3a4e..bc4ec4d 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.54 2009/07/24 10:53:47 dkf Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.55 2009/10/24 22:20:10 kennykb Exp $ # #---------------------------------------------------------------------- @@ -3789,11 +3789,16 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { } # Fill in defaults for European or US DST rules + # US start time is the second Sunday in March + # EU start time is the last Sunday in March + # US end time is the first Sunday in November. + # EU end time is the last Sunday in October if { [dict get $z startDayOfYear] eq {} && [dict get $z startMonth] eq {} } then { - if {($stdHours>=0) && ($stdHours<=12)} { + if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { + # EU dict set z startWeekOfMonth 5 if {$stdHours>2} { dict set z startHours 2 @@ -3801,6 +3806,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { dict set z startHours [expr {$stdHours+1}] } } else { + # US dict set z startWeekOfMonth 2 dict set z startHours 2 } @@ -3812,7 +3818,8 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { if { [dict get $z endDayOfYear] eq {} && [dict get $z endMonth] eq {} } then { - if {($stdHours>=0) && ($stdHours<=12)} { + if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { + # EU dict set z endMonth 10 dict set z endWeekOfMonth 5 if {$stdHours>2} { @@ -3821,6 +3828,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { dict set z endHours [expr {$stdHours+2}] } } else { + # US dict set z endMonth 11 dict set z endWeekOfMonth 1 dict set z endHours 2 diff --git a/library/tzdata/Asia/Dhaka b/library/tzdata/Asia/Dhaka index 70fc865..7ce68ce 100644 --- a/library/tzdata/Asia/Dhaka +++ b/library/tzdata/Asia/Dhaka @@ -9,5 +9,4 @@ set TZData(:Asia/Dhaka) { {-576138600 21600 0 DACT} {38772000 21600 0 BDT} {1245430800 25200 1 BDST} - {1262278800 21600 0 BDT} } diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 6535471..acd69f4 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -12,5 +12,185 @@ set TZData(:Asia/Karachi) { {1212260400 21600 1 PKST} {1225476000 18000 0 PKT} {1239735600 21600 1 PKST} - {1254333600 18000 0 PKT} + {1257012000 18000 0 PKT} + {1271271600 21600 1 PKST} + {1288548000 18000 0 PKT} + {1302807600 21600 1 PKST} + {1320084000 18000 0 PKT} + {1334430000 21600 1 PKST} + {1351706400 18000 0 PKT} + {1365966000 21600 1 PKST} + {1383242400 18000 0 PKT} + {1397502000 21600 1 PKST} + {1414778400 18000 0 PKT} + {1429038000 21600 1 PKST} + {1446314400 18000 0 PKT} + {1460660400 21600 1 PKST} + {1477936800 18000 0 PKT} + {1492196400 21600 1 PKST} + {1509472800 18000 0 PKT} + {1523732400 21600 1 PKST} + {1541008800 18000 0 PKT} + {1555268400 21600 1 PKST} + {1572544800 18000 0 PKT} + {1586890800 21600 1 PKST} + {1604167200 18000 0 PKT} + {1618426800 21600 1 PKST} + {1635703200 18000 0 PKT} + {1649962800 21600 1 PKST} + {1667239200 18000 0 PKT} + {1681498800 21600 1 PKST} + {1698775200 18000 0 PKT} + {1713121200 21600 1 PKST} + {1730397600 18000 0 PKT} + {1744657200 21600 1 PKST} + {1761933600 18000 0 PKT} + {1776193200 21600 1 PKST} + {1793469600 18000 0 PKT} + {1807729200 21600 1 PKST} + {1825005600 18000 0 PKT} + {1839351600 21600 1 PKST} + {1856628000 18000 0 PKT} + {1870887600 21600 1 PKST} + {1888164000 18000 0 PKT} + {1902423600 21600 1 PKST} + {1919700000 18000 0 PKT} + {1933959600 21600 1 PKST} + {1951236000 18000 0 PKT} + {1965582000 21600 1 PKST} + {1982858400 18000 0 PKT} + {1997118000 21600 1 PKST} + {2014394400 18000 0 PKT} + {2028654000 21600 1 PKST} + {2045930400 18000 0 PKT} + {2060190000 21600 1 PKST} + {2077466400 18000 0 PKT} + {2091812400 21600 1 PKST} + {2109088800 18000 0 PKT} + {2123348400 21600 1 PKST} + {2140624800 18000 0 PKT} + {2154884400 21600 1 PKST} + {2172160800 18000 0 PKT} + {2186420400 21600 1 PKST} + {2203696800 18000 0 PKT} + {2218042800 21600 1 PKST} + {2235319200 18000 0 PKT} + {2249578800 21600 1 PKST} + {2266855200 18000 0 PKT} + {2281114800 21600 1 PKST} + {2298391200 18000 0 PKT} + {2312650800 21600 1 PKST} + {2329927200 18000 0 PKT} + {2344273200 21600 1 PKST} + {2361549600 18000 0 PKT} + {2375809200 21600 1 PKST} + {2393085600 18000 0 PKT} + {2407345200 21600 1 PKST} + {2424621600 18000 0 PKT} + {2438881200 21600 1 PKST} + {2456157600 18000 0 PKT} + {2470503600 21600 1 PKST} + {2487780000 18000 0 PKT} + {2502039600 21600 1 PKST} + {2519316000 18000 0 PKT} + {2533575600 21600 1 PKST} + {2550852000 18000 0 PKT} + {2565111600 21600 1 PKST} + {2582388000 18000 0 PKT} + {2596734000 21600 1 PKST} + {2614010400 18000 0 PKT} + {2628270000 21600 1 PKST} + {2645546400 18000 0 PKT} + {2659806000 21600 1 PKST} + {2677082400 18000 0 PKT} + {2691342000 21600 1 PKST} + {2708618400 18000 0 PKT} + {2722964400 21600 1 PKST} + {2740240800 18000 0 PKT} + {2754500400 21600 1 PKST} + {2771776800 18000 0 PKT} + {2786036400 21600 1 PKST} + {2803312800 18000 0 PKT} + {2817572400 21600 1 PKST} + {2834848800 18000 0 PKT} + {2849194800 21600 1 PKST} + {2866471200 18000 0 PKT} + {2880730800 21600 1 PKST} + {2898007200 18000 0 PKT} + {2912266800 21600 1 PKST} + {2929543200 18000 0 PKT} + {2943802800 21600 1 PKST} + {2961079200 18000 0 PKT} + {2975425200 21600 1 PKST} + {2992701600 18000 0 PKT} + {3006961200 21600 1 PKST} + {3024237600 18000 0 PKT} + {3038497200 21600 1 PKST} + {3055773600 18000 0 PKT} + {3070033200 21600 1 PKST} + {3087309600 18000 0 PKT} + {3101655600 21600 1 PKST} + {3118932000 18000 0 PKT} + {3133191600 21600 1 PKST} + {3150468000 18000 0 PKT} + {3164727600 21600 1 PKST} + {3182004000 18000 0 PKT} + {3196263600 21600 1 PKST} + {3213540000 18000 0 PKT} + {3227886000 21600 1 PKST} + {3245162400 18000 0 PKT} + {3259422000 21600 1 PKST} + {3276698400 18000 0 PKT} + {3290958000 21600 1 PKST} + {3308234400 18000 0 PKT} + {3322494000 21600 1 PKST} + {3339770400 18000 0 PKT} + {3354116400 21600 1 PKST} + {3371392800 18000 0 PKT} + {3385652400 21600 1 PKST} + {3402928800 18000 0 PKT} + {3417188400 21600 1 PKST} + {3434464800 18000 0 PKT} + {3448724400 21600 1 PKST} + {3466000800 18000 0 PKT} + {3480346800 21600 1 PKST} + {3497623200 18000 0 PKT} + {3511882800 21600 1 PKST} + {3529159200 18000 0 PKT} + {3543418800 21600 1 PKST} + {3560695200 18000 0 PKT} + {3574954800 21600 1 PKST} + {3592231200 18000 0 PKT} + {3606577200 21600 1 PKST} + {3623853600 18000 0 PKT} + {3638113200 21600 1 PKST} + {3655389600 18000 0 PKT} + {3669649200 21600 1 PKST} + {3686925600 18000 0 PKT} + {3701185200 21600 1 PKST} + {3718461600 18000 0 PKT} + {3732807600 21600 1 PKST} + {3750084000 18000 0 PKT} + {3764343600 21600 1 PKST} + {3781620000 18000 0 PKT} + {3795879600 21600 1 PKST} + {3813156000 18000 0 PKT} + {3827415600 21600 1 PKST} + {3844692000 18000 0 PKT} + {3859038000 21600 1 PKST} + {3876314400 18000 0 PKT} + {3890574000 21600 1 PKST} + {3907850400 18000 0 PKT} + {3922110000 21600 1 PKST} + {3939386400 18000 0 PKT} + {3953646000 21600 1 PKST} + {3970922400 18000 0 PKT} + {3985268400 21600 1 PKST} + {4002544800 18000 0 PKT} + {4016804400 21600 1 PKST} + {4034080800 18000 0 PKT} + {4048340400 21600 1 PKST} + {4065616800 18000 0 PKT} + {4079876400 21600 1 PKST} + {4097152800 18000 0 PKT} } diff --git a/tests/clock.test b/tests/clock.test index 0f1e9da..39f9142 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.91 2009/06/09 13:52:38 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.92 2009/10/24 22:20:10 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36140,6 +36140,16 @@ test clock-52.3 {correct conversion of times in Russia} { set result } {01:59:59 03:00:00 02:59:59 02:00:00} +test clock-52.4 {correct conversion of times in USA} { + # [Bug 2207436] + set result {} + foreach t [list 1268549999 1268550000 1257055199 1257055200] { + lappend result [clock format $t -format %H:%M:%S \ + -timezone EST5EDT] + } + set result +} {01:59:59 03:00:00 01:59:59 01:00:00} + # Regression test for Bug # 1505383 test clock-53.1 {%EC %Ey} { -- cgit v0.12 From 30a3c0dd1ee3d281c2131f4c2a8d13302b594e18 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 24 Oct 2009 22:20:53 +0000 Subject: * library/clock.tcl (ProcessPosixTimeZone): Corrected a regression in the fix to [Bug 2207436] that caused [clock] to apply EU daylight saving time rules in the US. Thanks to Karl Lehenbauer for reporting this regression. * tests/clock.test (clock-52.4): Added a regression test for the above bug. * library/tzdata/Asia/Dhaka: * library/tzdata/Asia/Karachi: New DST rules for Bangladesh and Pakistan. (Olson's tzdata2009o.) --- ChangeLog | 12 +++ library/clock.tcl | 14 +++- library/tzdata/Asia/Dhaka | 1 - library/tzdata/Asia/Karachi | 182 +++++++++++++++++++++++++++++++++++++++++++- tests/clock.test | 12 ++- 5 files changed, 215 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8338699..4ca691e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-10-24 Kevin B. Kenny + + * library/clock.tcl (ProcessPosixTimeZone): + Corrected a regression in the fix to [Bug 2207436] that caused + [clock] to apply EU daylight saving time rules in the US. Thanks + to Karl Lehenbauer for reporting this regression. + * tests/clock.test (clock-52.4): + Added a regression test for the above regression. + * library/tzdata/Asia/Dhaka: + * library/tzdata/Asia/Karachi: + New DST rules for Bangladesh and Pakistan. (Olson's tzdata2009o.) + 2009-10-23 Andreas Kupries * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level diff --git a/library/clock.tcl b/library/clock.tcl index 5e9601d..9b30d36 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47.2.6 2009/06/09 13:52:58 kennykb Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.47.2.7 2009/10/24 22:20:54 kennykb Exp $ # #---------------------------------------------------------------------- @@ -3886,10 +3886,15 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { } # Fill in defaults for European or US DST rules + # US start time is the second Sunday in March + # EU start time is the last Sunday in March + # US end time is the first Sunday in November. + # EU end time is the last Sunday in October if { [dict get $z startDayOfYear] eq {} && [dict get $z startMonth] eq {} } { - if {($stdHours>=0) && ($stdHours<=12)} { + if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { + # EU dict set z startWeekOfMonth 5 if {$stdHours>2} { dict set z startHours 2 @@ -3897,6 +3902,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { dict set z startHours [expr {$stdHours+1}] } } else { + # US dict set z startWeekOfMonth 2 dict set z startHours 2 } @@ -3907,7 +3913,8 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { } if { [dict get $z endDayOfYear] eq {} && [dict get $z endMonth] eq {} } { - if {($stdHours>=0) && ($stdHours<=12)} { + if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { + # EU dict set z endMonth 10 dict set z endWeekOfMonth 5 if {$stdHours>2} { @@ -3916,6 +3923,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { dict set z endHours [expr {$stdHours+2}] } } else { + # US dict set z endMonth 11 dict set z endWeekOfMonth 1 dict set z endHours 2 diff --git a/library/tzdata/Asia/Dhaka b/library/tzdata/Asia/Dhaka index 70fc865..7ce68ce 100644 --- a/library/tzdata/Asia/Dhaka +++ b/library/tzdata/Asia/Dhaka @@ -9,5 +9,4 @@ set TZData(:Asia/Dhaka) { {-576138600 21600 0 DACT} {38772000 21600 0 BDT} {1245430800 25200 1 BDST} - {1262278800 21600 0 BDT} } diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 6535471..acd69f4 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -12,5 +12,185 @@ set TZData(:Asia/Karachi) { {1212260400 21600 1 PKST} {1225476000 18000 0 PKT} {1239735600 21600 1 PKST} - {1254333600 18000 0 PKT} + {1257012000 18000 0 PKT} + {1271271600 21600 1 PKST} + {1288548000 18000 0 PKT} + {1302807600 21600 1 PKST} + {1320084000 18000 0 PKT} + {1334430000 21600 1 PKST} + {1351706400 18000 0 PKT} + {1365966000 21600 1 PKST} + {1383242400 18000 0 PKT} + {1397502000 21600 1 PKST} + {1414778400 18000 0 PKT} + {1429038000 21600 1 PKST} + {1446314400 18000 0 PKT} + {1460660400 21600 1 PKST} + {1477936800 18000 0 PKT} + {1492196400 21600 1 PKST} + {1509472800 18000 0 PKT} + {1523732400 21600 1 PKST} + {1541008800 18000 0 PKT} + {1555268400 21600 1 PKST} + {1572544800 18000 0 PKT} + {1586890800 21600 1 PKST} + {1604167200 18000 0 PKT} + {1618426800 21600 1 PKST} + {1635703200 18000 0 PKT} + {1649962800 21600 1 PKST} + {1667239200 18000 0 PKT} + {1681498800 21600 1 PKST} + {1698775200 18000 0 PKT} + {1713121200 21600 1 PKST} + {1730397600 18000 0 PKT} + {1744657200 21600 1 PKST} + {1761933600 18000 0 PKT} + {1776193200 21600 1 PKST} + {1793469600 18000 0 PKT} + {1807729200 21600 1 PKST} + {1825005600 18000 0 PKT} + {1839351600 21600 1 PKST} + {1856628000 18000 0 PKT} + {1870887600 21600 1 PKST} + {1888164000 18000 0 PKT} + {1902423600 21600 1 PKST} + {1919700000 18000 0 PKT} + {1933959600 21600 1 PKST} + {1951236000 18000 0 PKT} + {1965582000 21600 1 PKST} + {1982858400 18000 0 PKT} + {1997118000 21600 1 PKST} + {2014394400 18000 0 PKT} + {2028654000 21600 1 PKST} + {2045930400 18000 0 PKT} + {2060190000 21600 1 PKST} + {2077466400 18000 0 PKT} + {2091812400 21600 1 PKST} + {2109088800 18000 0 PKT} + {2123348400 21600 1 PKST} + {2140624800 18000 0 PKT} + {2154884400 21600 1 PKST} + {2172160800 18000 0 PKT} + {2186420400 21600 1 PKST} + {2203696800 18000 0 PKT} + {2218042800 21600 1 PKST} + {2235319200 18000 0 PKT} + {2249578800 21600 1 PKST} + {2266855200 18000 0 PKT} + {2281114800 21600 1 PKST} + {2298391200 18000 0 PKT} + {2312650800 21600 1 PKST} + {2329927200 18000 0 PKT} + {2344273200 21600 1 PKST} + {2361549600 18000 0 PKT} + {2375809200 21600 1 PKST} + {2393085600 18000 0 PKT} + {2407345200 21600 1 PKST} + {2424621600 18000 0 PKT} + {2438881200 21600 1 PKST} + {2456157600 18000 0 PKT} + {2470503600 21600 1 PKST} + {2487780000 18000 0 PKT} + {2502039600 21600 1 PKST} + {2519316000 18000 0 PKT} + {2533575600 21600 1 PKST} + {2550852000 18000 0 PKT} + {2565111600 21600 1 PKST} + {2582388000 18000 0 PKT} + {2596734000 21600 1 PKST} + {2614010400 18000 0 PKT} + {2628270000 21600 1 PKST} + {2645546400 18000 0 PKT} + {2659806000 21600 1 PKST} + {2677082400 18000 0 PKT} + {2691342000 21600 1 PKST} + {2708618400 18000 0 PKT} + {2722964400 21600 1 PKST} + {2740240800 18000 0 PKT} + {2754500400 21600 1 PKST} + {2771776800 18000 0 PKT} + {2786036400 21600 1 PKST} + {2803312800 18000 0 PKT} + {2817572400 21600 1 PKST} + {2834848800 18000 0 PKT} + {2849194800 21600 1 PKST} + {2866471200 18000 0 PKT} + {2880730800 21600 1 PKST} + {2898007200 18000 0 PKT} + {2912266800 21600 1 PKST} + {2929543200 18000 0 PKT} + {2943802800 21600 1 PKST} + {2961079200 18000 0 PKT} + {2975425200 21600 1 PKST} + {2992701600 18000 0 PKT} + {3006961200 21600 1 PKST} + {3024237600 18000 0 PKT} + {3038497200 21600 1 PKST} + {3055773600 18000 0 PKT} + {3070033200 21600 1 PKST} + {3087309600 18000 0 PKT} + {3101655600 21600 1 PKST} + {3118932000 18000 0 PKT} + {3133191600 21600 1 PKST} + {3150468000 18000 0 PKT} + {3164727600 21600 1 PKST} + {3182004000 18000 0 PKT} + {3196263600 21600 1 PKST} + {3213540000 18000 0 PKT} + {3227886000 21600 1 PKST} + {3245162400 18000 0 PKT} + {3259422000 21600 1 PKST} + {3276698400 18000 0 PKT} + {3290958000 21600 1 PKST} + {3308234400 18000 0 PKT} + {3322494000 21600 1 PKST} + {3339770400 18000 0 PKT} + {3354116400 21600 1 PKST} + {3371392800 18000 0 PKT} + {3385652400 21600 1 PKST} + {3402928800 18000 0 PKT} + {3417188400 21600 1 PKST} + {3434464800 18000 0 PKT} + {3448724400 21600 1 PKST} + {3466000800 18000 0 PKT} + {3480346800 21600 1 PKST} + {3497623200 18000 0 PKT} + {3511882800 21600 1 PKST} + {3529159200 18000 0 PKT} + {3543418800 21600 1 PKST} + {3560695200 18000 0 PKT} + {3574954800 21600 1 PKST} + {3592231200 18000 0 PKT} + {3606577200 21600 1 PKST} + {3623853600 18000 0 PKT} + {3638113200 21600 1 PKST} + {3655389600 18000 0 PKT} + {3669649200 21600 1 PKST} + {3686925600 18000 0 PKT} + {3701185200 21600 1 PKST} + {3718461600 18000 0 PKT} + {3732807600 21600 1 PKST} + {3750084000 18000 0 PKT} + {3764343600 21600 1 PKST} + {3781620000 18000 0 PKT} + {3795879600 21600 1 PKST} + {3813156000 18000 0 PKT} + {3827415600 21600 1 PKST} + {3844692000 18000 0 PKT} + {3859038000 21600 1 PKST} + {3876314400 18000 0 PKT} + {3890574000 21600 1 PKST} + {3907850400 18000 0 PKT} + {3922110000 21600 1 PKST} + {3939386400 18000 0 PKT} + {3953646000 21600 1 PKST} + {3970922400 18000 0 PKT} + {3985268400 21600 1 PKST} + {4002544800 18000 0 PKT} + {4016804400 21600 1 PKST} + {4034080800 18000 0 PKT} + {4048340400 21600 1 PKST} + {4065616800 18000 0 PKT} + {4079876400 21600 1 PKST} + {4097152800 18000 0 PKT} } diff --git a/tests/clock.test b/tests/clock.test index 6af7134..32b3e67 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.83.2.6 2009/06/09 13:52:58 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.83.2.7 2009/10/24 22:20:54 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36140,6 +36140,16 @@ test clock-52.3 {correct conversion of times in Russia} { set result } {01:59:59 03:00:00 02:59:59 02:00:00} +test clock-52.4 {correct conversion of times in USA} { + # [Bug 2207436] + set result {} + foreach t [list 1268549999 1268550000 1257055199 1257055200] { + lappend result [clock format $t -format %H:%M:%S \ + -timezone EST5EDT] + } + set result +} {01:59:59 03:00:00 01:59:59 01:00:00} + # Regression test for Bug # 1505383 test clock-53.1 {%EC %Ey} { -- cgit v0.12 From a105e211c00630f0a0cbee1031379b3f187c3b9c Mon Sep 17 00:00:00 2001 From: dgp Date: Mon, 26 Oct 2009 16:56:23 +0000 Subject: * unix/Makefile.in: Remove $(PACKAGE).* and prototype from the `make distclean` target. Completes 2009-10-20 commit. --- ChangeLog | 5 +++++ unix/Makefile.in | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 23eaa35..5ae9e9d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-26 Don Porter + + * unix/Makefile.in: Remove $(PACKAGE).* and prototype from the + `make distclean` target. Completes 2009-10-20 commit. + 2009-10-24 Kevin B. Kenny * library/clock.tcl (ProcessPosixTimeZone): diff --git a/unix/Makefile.in b/unix/Makefile.in index f190222..6f40a1d 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -4,7 +4,7 @@ # "./configure", which is a configuration script generated by the "autoconf" # program (constructs like "@foo@" will get replaced in the actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.278 2009/10/20 17:21:23 dgp Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.279 2009/10/26 16:56:23 dgp Exp $ VERSION = @TCL_VERSION@ MAJOR_VERSION = @TCL_MAJOR_VERSION@ @@ -927,8 +927,7 @@ clean: clean-packages distclean: distclean-packages clean rm -rf Makefile config.status config.cache config.log tclConfig.sh \ - $(PACKAGE).* prototype tclConfig.h *.plist Tcl.framework \ - tcl.pc + tclConfig.h *.plist Tcl.framework tcl.pc cd dltest ; $(MAKE) distclean depend: -- cgit v0.12 From 42f969aa26927fe8d84250dbc72ce1dc9e7f8836 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 27 Oct 2009 03:23:32 +0000 Subject: * library/clock.tcl (ParseClockScanFormat): Corrected a problem where [clock scan] didn't load the timezone soon enough when processing a time format that lacked a complete date. [Bug 2886852] * tests/clock.test (clock-66.1): Added a test case for the above bug. --- ChangeLog | 9 +++++++++ library/clock.tcl | 32 +++++++++++++++++++++----------- tests/clock.test | 15 ++++++++++++++- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5ae9e9d..686d717 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-10-27 Kevin B. Kenny + + * library/clock.tcl (ParseClockScanFormat): + Corrected a problem where [clock scan] didn't load the timezone + soon enough when processing a time format that lacked a complete + date. [Bug 2886852] + * tests/clock.test (clock-66.1): + Added a test case for the above bug. + 2009-10-26 Don Porter * unix/Makefile.in: Remove $(PACKAGE).* and prototype from the diff --git a/library/clock.tcl b/library/clock.tcl index bc4ec4d..51118e1 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.55 2009/10/24 22:20:10 kennykb Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.56 2009/10/27 03:23:32 kennykb Exp $ # #---------------------------------------------------------------------- @@ -1955,6 +1955,21 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { append procBody $postcode append procBody [list set changeover [mc GREGORIAN_CHANGE_DATE]] \n + # Set up the time zone before doing anything with a default base date + # that might need a timezone to interpret it. + + if { ![dict exists $fieldSet seconds] + && ![dict exists $fieldSet starDate] } { + if { [dict exists $fieldSet tzName] } { + append procBody { + set timeZone [dict get $date tzName] + } + } + append procBody { + ::tcl::clock::SetupTimeZone $timeZone + } + } + # Add code that gets Julian Day Number from the fields. append procBody [MakeParseCodeFromFields $fieldSet $DateParseActions] @@ -1963,7 +1978,9 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { append procBody [MakeParseCodeFromFields $fieldSet $TimeParseActions] - # Assemble seconds, and convert local nominal time to UTC. + # Assemble seconds from the Julian day and second of the day. + # Convert to local time unless epoch seconds or stardate are + # being processed - they're always absolute if { ![dict exists $fieldSet seconds] && ![dict exists $fieldSet starDate] } { @@ -1978,17 +1995,10 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { + [dict get $date secondOfDay] }] } - } - if { ![dict exists $fieldSet seconds] - && ![dict exists $fieldSet starDate] } { - if { [dict exists $fieldSet tzName] } { - append procBody { - set timeZone [dict get $date tzName] - } - } + # Finally, convert the date to local time + append procBody { - ::tcl::clock::SetupTimeZone $timeZone set date [::tcl::clock::ConvertLocalToUTC $date[set date {}] \ $TZData($timeZone) $changeover] } diff --git a/tests/clock.test b/tests/clock.test index 39f9142..51d5655 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.92 2009/10/24 22:20:10 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.93 2009/10/27 03:23:32 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36733,6 +36733,19 @@ test clock-65.1 {clock add, bad option [Bug 2481670]} {*}{ -result {bad switch "-foo"*} } +test clock-66.1 {clock scan, no date, never-before-seen timezone} {*}{ + -setup { + ::tcl::clock::ClearCaches + } + -body { + clock scan 1200 \ + -timezone {+05:00:00+04:00:00,M3.2.0/02:00:00,M11.1.0/02:00:00} \ + -base 1256529600 \ + -format %H%M + } + -result 1256572800 +} + # cleanup namespace delete ::testClock -- cgit v0.12 From a648c376f2e2af0c348cd95d5d91171889d16744 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 27 Oct 2009 03:24:17 +0000 Subject: * library/clock.tcl (ParseClockScanFormat): Corrected a problem where [clock scan] didn't load the timezone soon enough when processing a time format that lacked a complete date. [Bug 2886852] * tests/clock.test (clock-66.1): Added a test case for the above bug. --- ChangeLog | 9 +++++++++ library/clock.tcl | 26 +++++++++++++++----------- tests/clock.test | 15 ++++++++++++++- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4ca691e..a62d233 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-10-27 Kevin B. Kenny + + * library/clock.tcl (ParseClockScanFormat): + Corrected a problem where [clock scan] didn't load the timezone + soon enough when processing a time format that lacked a complete + date. [Bug 2886852] + * tests/clock.test (clock-66.1): + Added a test case for the above bug. + 2009-10-24 Kevin B. Kenny * library/clock.tcl (ProcessPosixTimeZone): diff --git a/library/clock.tcl b/library/clock.tcl index 9b30d36..9bf41ec 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47.2.7 2009/10/24 22:20:54 kennykb Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.47.2.8 2009/10/27 03:24:17 kennykb Exp $ # #---------------------------------------------------------------------- @@ -1996,6 +1996,20 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { append procBody $postcode append procBody [list set changeover [mc GREGORIAN_CHANGE_DATE]] \n + # Get time zone if needed + + if { ![dict exists $fieldSet seconds] + && ![dict exists $fieldSet starDate] } { + if { [dict exists $fieldSet tzName] } { + append procBody { + set timeZone [dict get $date tzName] + } + } + append procBody { + ::tcl::clock::SetupTimeZone $timeZone + } + } + # Add code that gets Julian Day Number from the fields. append procBody [MakeParseCodeFromFields $fieldSet $DateParseActions] @@ -2018,17 +2032,7 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { + ( 86400 * wide([dict get $date julianDay]) ) + [dict get $date secondOfDay] }] } - } - - if { ![dict exists $fieldSet seconds] - && ![dict exists $fieldSet starDate] } { - if { [dict exists $fieldSet tzName] } { - append procBody { - set timeZone [dict get $date tzName] - } - } append procBody { - ::tcl::clock::SetupTimeZone $timeZone set date [::tcl::clock::ConvertLocalToUTC $date[set date {}] \ $TZData($timeZone) \ $changeover] diff --git a/tests/clock.test b/tests/clock.test index 32b3e67..bb284c4 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.83.2.7 2009/10/24 22:20:54 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.83.2.8 2009/10/27 03:24:17 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36733,6 +36733,19 @@ test clock-65.1 {clock add, bad option [Bug 2481670]} {*}{ -result {bad switch "-foo"*} } +test clock-66.1 {clock scan, no date, never-before-seen timezone} {*}{ + -setup { + ::tcl::clock::ClearCaches + } + -body { + clock scan 1200 \ + -timezone {+05:00:00+04:00:00,M3.2.0/02:00:00,M11.1.0/02:00:00} \ + -base 1256529600 \ + -format %H%M + } + -result 1256572800 +} + # cleanup namespace delete ::testClock -- cgit v0.12 From fb2cc919c9809059bcc2fefa328faf7fcbc675b9 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 27 Oct 2009 03:35:12 +0000 Subject: * library/tzdata/America/Argentina/Buenos_Aires: * library/tzdata/America/Argentina/Cordoba: * library/tzdata/America/Argentina/San_Luis: * library/tzdata/America/Argentina/Tucuman: New DST rules for Argentina. (Olson's tzdata2009p.) --- ChangeLog | 5 + library/tzdata/America/Argentina/Buenos_Aires | 181 ------------- library/tzdata/America/Argentina/Cordoba | 181 ------------- library/tzdata/America/Argentina/San_Luis | 369 +++++++++++++------------- library/tzdata/America/Argentina/Tucuman | 181 ------------- 5 files changed, 190 insertions(+), 727 deletions(-) diff --git a/ChangeLog b/ChangeLog index a62d233..816a665 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,11 @@ date. [Bug 2886852] * tests/clock.test (clock-66.1): Added a test case for the above bug. + * library/tzdata/America/Argentina/Buenos_Aires: + * library/tzdata/America/Argentina/Cordoba: + * library/tzdata/America/Argentina/San_Luis: + * library/tzdata/America/Argentina/Tucuman: + New DST rules for Argentina. (Olson's tzdata2009p.) 2009-10-24 Kevin B. Kenny diff --git a/library/tzdata/America/Argentina/Buenos_Aires b/library/tzdata/America/Argentina/Buenos_Aires index beccff3..73cc8e9 100644 --- a/library/tzdata/America/Argentina/Buenos_Aires +++ b/library/tzdata/America/Argentina/Buenos_Aires @@ -64,185 +64,4 @@ set TZData(:America/Argentina/Buenos_Aires) { {1205632800 -10800 0 ART} {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Argentina/Cordoba b/library/tzdata/America/Argentina/Cordoba index 798ee86..b08539e 100644 --- a/library/tzdata/America/Argentina/Cordoba +++ b/library/tzdata/America/Argentina/Cordoba @@ -64,185 +64,4 @@ set TZData(:America/Argentina/Cordoba) { {1205632800 -10800 0 ART} {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Argentina/San_Luis b/library/tzdata/America/Argentina/San_Luis index 1d06652..b93f3bf 100644 --- a/library/tzdata/America/Argentina/San_Luis +++ b/library/tzdata/America/Argentina/San_Luis @@ -60,188 +60,189 @@ set TZData(:America/Argentina/San_Luis) { {1085972400 -14400 0 WART} {1090728000 -10800 0 ART} {1198983600 -7200 1 ARST} - {1200880800 -10800 0 ART} - {1237086000 -14400 0 WART} - {1237089600 -14400 0 WART} - {1255838400 -10800 1 WARST} - {1269140400 -14400 0 WART} - {1287288000 -10800 1 WARST} - {1300590000 -14400 0 WART} - {1318737600 -10800 1 WARST} - {1332039600 -14400 0 WART} - {1350792000 -10800 1 WARST} - {1363489200 -14400 0 WART} - {1382241600 -10800 1 WARST} - {1394938800 -14400 0 WART} - {1413691200 -10800 1 WARST} - {1426388400 -14400 0 WART} - {1445140800 -10800 1 WARST} - {1458442800 -14400 0 WART} - {1476590400 -10800 1 WARST} - {1489892400 -14400 0 WART} - {1508040000 -10800 1 WARST} - {1521342000 -14400 0 WART} - {1540094400 -10800 1 WARST} - {1552791600 -14400 0 WART} - {1571544000 -10800 1 WARST} - {1584241200 -14400 0 WART} - {1602993600 -10800 1 WARST} - {1616295600 -14400 0 WART} - {1634443200 -10800 1 WARST} - {1647745200 -14400 0 WART} - {1665892800 -10800 1 WARST} - {1679194800 -14400 0 WART} - {1697342400 -10800 1 WARST} - {1710644400 -14400 0 WART} - {1729396800 -10800 1 WARST} - {1742094000 -14400 0 WART} - {1760846400 -10800 1 WARST} - {1773543600 -14400 0 WART} - {1792296000 -10800 1 WARST} - {1805598000 -14400 0 WART} - {1823745600 -10800 1 WARST} - {1837047600 -14400 0 WART} - {1855195200 -10800 1 WARST} - {1868497200 -14400 0 WART} - {1887249600 -10800 1 WARST} - {1899946800 -14400 0 WART} - {1918699200 -10800 1 WARST} - {1931396400 -14400 0 WART} - {1950148800 -10800 1 WARST} - {1963450800 -14400 0 WART} - {1981598400 -10800 1 WARST} - {1994900400 -14400 0 WART} - {2013048000 -10800 1 WARST} - {2026350000 -14400 0 WART} - {2044497600 -10800 1 WARST} - {2057799600 -14400 0 WART} - {2076552000 -10800 1 WARST} - {2089249200 -14400 0 WART} - {2108001600 -10800 1 WARST} - {2120698800 -14400 0 WART} - {2139451200 -10800 1 WARST} - {2152753200 -14400 0 WART} - {2170900800 -10800 1 WARST} - {2184202800 -14400 0 WART} - {2202350400 -10800 1 WARST} - {2215652400 -14400 0 WART} - {2234404800 -10800 1 WARST} - {2247102000 -14400 0 WART} - {2265854400 -10800 1 WARST} - {2278551600 -14400 0 WART} - {2297304000 -10800 1 WARST} - {2310001200 -14400 0 WART} - {2328753600 -10800 1 WARST} - {2342055600 -14400 0 WART} - {2360203200 -10800 1 WARST} - {2373505200 -14400 0 WART} - {2391652800 -10800 1 WARST} - {2404954800 -14400 0 WART} - {2423707200 -10800 1 WARST} - {2436404400 -14400 0 WART} - {2455156800 -10800 1 WARST} - {2467854000 -14400 0 WART} - {2486606400 -10800 1 WARST} - {2499908400 -14400 0 WART} - {2518056000 -10800 1 WARST} - {2531358000 -14400 0 WART} - {2549505600 -10800 1 WARST} - {2562807600 -14400 0 WART} - {2580955200 -10800 1 WARST} - {2594257200 -14400 0 WART} - {2613009600 -10800 1 WARST} - {2625706800 -14400 0 WART} - {2644459200 -10800 1 WARST} - {2657156400 -14400 0 WART} - {2675908800 -10800 1 WARST} - {2689210800 -14400 0 WART} - {2707358400 -10800 1 WARST} - {2720660400 -14400 0 WART} - {2738808000 -10800 1 WARST} - {2752110000 -14400 0 WART} - {2770862400 -10800 1 WARST} - {2783559600 -14400 0 WART} - {2802312000 -10800 1 WARST} - {2815009200 -14400 0 WART} - {2833761600 -10800 1 WARST} - {2847063600 -14400 0 WART} - {2865211200 -10800 1 WARST} - {2878513200 -14400 0 WART} - {2896660800 -10800 1 WARST} - {2909962800 -14400 0 WART} - {2928110400 -10800 1 WARST} - {2941412400 -14400 0 WART} - {2960164800 -10800 1 WARST} - {2972862000 -14400 0 WART} - {2991614400 -10800 1 WARST} - {3004311600 -14400 0 WART} - {3023064000 -10800 1 WARST} - {3036366000 -14400 0 WART} - {3054513600 -10800 1 WARST} - {3067815600 -14400 0 WART} - {3085963200 -10800 1 WARST} - {3099265200 -14400 0 WART} - {3118017600 -10800 1 WARST} - {3130714800 -14400 0 WART} - {3149467200 -10800 1 WARST} - {3162164400 -14400 0 WART} - {3180916800 -10800 1 WARST} - {3193614000 -14400 0 WART} - {3212366400 -10800 1 WARST} - {3225668400 -14400 0 WART} - {3243816000 -10800 1 WARST} - {3257118000 -14400 0 WART} - {3275265600 -10800 1 WARST} - {3288567600 -14400 0 WART} - {3307320000 -10800 1 WARST} - {3320017200 -14400 0 WART} - {3338769600 -10800 1 WARST} - {3351466800 -14400 0 WART} - {3370219200 -10800 1 WARST} - {3383521200 -14400 0 WART} - {3401668800 -10800 1 WARST} - {3414970800 -14400 0 WART} - {3433118400 -10800 1 WARST} - {3446420400 -14400 0 WART} - {3464568000 -10800 1 WARST} - {3477870000 -14400 0 WART} - {3496622400 -10800 1 WARST} - {3509319600 -14400 0 WART} - {3528072000 -10800 1 WARST} - {3540769200 -14400 0 WART} - {3559521600 -10800 1 WARST} - {3572823600 -14400 0 WART} - {3590971200 -10800 1 WARST} - {3604273200 -14400 0 WART} - {3622420800 -10800 1 WARST} - {3635722800 -14400 0 WART} - {3654475200 -10800 1 WARST} - {3667172400 -14400 0 WART} - {3685924800 -10800 1 WARST} - {3698622000 -14400 0 WART} - {3717374400 -10800 1 WARST} - {3730676400 -14400 0 WART} - {3748824000 -10800 1 WARST} - {3762126000 -14400 0 WART} - {3780273600 -10800 1 WARST} - {3793575600 -14400 0 WART} - {3811723200 -10800 1 WARST} - {3825025200 -14400 0 WART} - {3843777600 -10800 1 WARST} - {3856474800 -14400 0 WART} - {3875227200 -10800 1 WARST} - {3887924400 -14400 0 WART} - {3906676800 -10800 1 WARST} - {3919978800 -14400 0 WART} - {3938126400 -10800 1 WARST} - {3951428400 -14400 0 WART} - {3969576000 -10800 1 WARST} - {3982878000 -14400 0 WART} - {4001630400 -10800 1 WARST} - {4014327600 -14400 0 WART} - {4033080000 -10800 1 WARST} - {4045777200 -14400 0 WART} - {4064529600 -10800 1 WARST} - {4077226800 -14400 0 WART} - {4095979200 -10800 1 WARST} + {1200880800 -10800 0 WART} + {1205031600 -14400 0 WART} + {1223784000 -10800 1 WARST} + {1236481200 -14400 0 WART} + {1255233600 -10800 1 WARST} + {1268535600 -14400 0 WART} + {1286683200 -10800 1 WARST} + {1299985200 -14400 0 WART} + {1318132800 -10800 1 WARST} + {1331434800 -14400 0 WART} + {1350187200 -10800 1 WARST} + {1362884400 -14400 0 WART} + {1381636800 -10800 1 WARST} + {1394334000 -14400 0 WART} + {1413086400 -10800 1 WARST} + {1425783600 -14400 0 WART} + {1444536000 -10800 1 WARST} + {1457838000 -14400 0 WART} + {1475985600 -10800 1 WARST} + {1489287600 -14400 0 WART} + {1507435200 -10800 1 WARST} + {1520737200 -14400 0 WART} + {1539489600 -10800 1 WARST} + {1552186800 -14400 0 WART} + {1570939200 -10800 1 WARST} + {1583636400 -14400 0 WART} + {1602388800 -10800 1 WARST} + {1615690800 -14400 0 WART} + {1633838400 -10800 1 WARST} + {1647140400 -14400 0 WART} + {1665288000 -10800 1 WARST} + {1678590000 -14400 0 WART} + {1696737600 -10800 1 WARST} + {1710039600 -14400 0 WART} + {1728792000 -10800 1 WARST} + {1741489200 -14400 0 WART} + {1760241600 -10800 1 WARST} + {1772938800 -14400 0 WART} + {1791691200 -10800 1 WARST} + {1804993200 -14400 0 WART} + {1823140800 -10800 1 WARST} + {1836442800 -14400 0 WART} + {1854590400 -10800 1 WARST} + {1867892400 -14400 0 WART} + {1886644800 -10800 1 WARST} + {1899342000 -14400 0 WART} + {1918094400 -10800 1 WARST} + {1930791600 -14400 0 WART} + {1949544000 -10800 1 WARST} + {1962846000 -14400 0 WART} + {1980993600 -10800 1 WARST} + {1994295600 -14400 0 WART} + {2012443200 -10800 1 WARST} + {2025745200 -14400 0 WART} + {2043892800 -10800 1 WARST} + {2057194800 -14400 0 WART} + {2075947200 -10800 1 WARST} + {2088644400 -14400 0 WART} + {2107396800 -10800 1 WARST} + {2120094000 -14400 0 WART} + {2138846400 -10800 1 WARST} + {2152148400 -14400 0 WART} + {2170296000 -10800 1 WARST} + {2183598000 -14400 0 WART} + {2201745600 -10800 1 WARST} + {2215047600 -14400 0 WART} + {2233800000 -10800 1 WARST} + {2246497200 -14400 0 WART} + {2265249600 -10800 1 WARST} + {2277946800 -14400 0 WART} + {2296699200 -10800 1 WARST} + {2309396400 -14400 0 WART} + {2328148800 -10800 1 WARST} + {2341450800 -14400 0 WART} + {2359598400 -10800 1 WARST} + {2372900400 -14400 0 WART} + {2391048000 -10800 1 WARST} + {2404350000 -14400 0 WART} + {2423102400 -10800 1 WARST} + {2435799600 -14400 0 WART} + {2454552000 -10800 1 WARST} + {2467249200 -14400 0 WART} + {2486001600 -10800 1 WARST} + {2499303600 -14400 0 WART} + {2517451200 -10800 1 WARST} + {2530753200 -14400 0 WART} + {2548900800 -10800 1 WARST} + {2562202800 -14400 0 WART} + {2580350400 -10800 1 WARST} + {2593652400 -14400 0 WART} + {2612404800 -10800 1 WARST} + {2625102000 -14400 0 WART} + {2643854400 -10800 1 WARST} + {2656551600 -14400 0 WART} + {2675304000 -10800 1 WARST} + {2688606000 -14400 0 WART} + {2706753600 -10800 1 WARST} + {2720055600 -14400 0 WART} + {2738203200 -10800 1 WARST} + {2751505200 -14400 0 WART} + {2770257600 -10800 1 WARST} + {2782954800 -14400 0 WART} + {2801707200 -10800 1 WARST} + {2814404400 -14400 0 WART} + {2833156800 -10800 1 WARST} + {2846458800 -14400 0 WART} + {2864606400 -10800 1 WARST} + {2877908400 -14400 0 WART} + {2896056000 -10800 1 WARST} + {2909358000 -14400 0 WART} + {2927505600 -10800 1 WARST} + {2940807600 -14400 0 WART} + {2959560000 -10800 1 WARST} + {2972257200 -14400 0 WART} + {2991009600 -10800 1 WARST} + {3003706800 -14400 0 WART} + {3022459200 -10800 1 WARST} + {3035761200 -14400 0 WART} + {3053908800 -10800 1 WARST} + {3067210800 -14400 0 WART} + {3085358400 -10800 1 WARST} + {3098660400 -14400 0 WART} + {3117412800 -10800 1 WARST} + {3130110000 -14400 0 WART} + {3148862400 -10800 1 WARST} + {3161559600 -14400 0 WART} + {3180312000 -10800 1 WARST} + {3193009200 -14400 0 WART} + {3211761600 -10800 1 WARST} + {3225063600 -14400 0 WART} + {3243211200 -10800 1 WARST} + {3256513200 -14400 0 WART} + {3274660800 -10800 1 WARST} + {3287962800 -14400 0 WART} + {3306715200 -10800 1 WARST} + {3319412400 -14400 0 WART} + {3338164800 -10800 1 WARST} + {3350862000 -14400 0 WART} + {3369614400 -10800 1 WARST} + {3382916400 -14400 0 WART} + {3401064000 -10800 1 WARST} + {3414366000 -14400 0 WART} + {3432513600 -10800 1 WARST} + {3445815600 -14400 0 WART} + {3463963200 -10800 1 WARST} + {3477265200 -14400 0 WART} + {3496017600 -10800 1 WARST} + {3508714800 -14400 0 WART} + {3527467200 -10800 1 WARST} + {3540164400 -14400 0 WART} + {3558916800 -10800 1 WARST} + {3572218800 -14400 0 WART} + {3590366400 -10800 1 WARST} + {3603668400 -14400 0 WART} + {3621816000 -10800 1 WARST} + {3635118000 -14400 0 WART} + {3653870400 -10800 1 WARST} + {3666567600 -14400 0 WART} + {3685320000 -10800 1 WARST} + {3698017200 -14400 0 WART} + {3716769600 -10800 1 WARST} + {3730071600 -14400 0 WART} + {3748219200 -10800 1 WARST} + {3761521200 -14400 0 WART} + {3779668800 -10800 1 WARST} + {3792970800 -14400 0 WART} + {3811118400 -10800 1 WARST} + {3824420400 -14400 0 WART} + {3843172800 -10800 1 WARST} + {3855870000 -14400 0 WART} + {3874622400 -10800 1 WARST} + {3887319600 -14400 0 WART} + {3906072000 -10800 1 WARST} + {3919374000 -14400 0 WART} + {3937521600 -10800 1 WARST} + {3950823600 -14400 0 WART} + {3968971200 -10800 1 WARST} + {3982273200 -14400 0 WART} + {4001025600 -10800 1 WARST} + {4013722800 -14400 0 WART} + {4032475200 -10800 1 WARST} + {4045172400 -14400 0 WART} + {4063924800 -10800 1 WARST} + {4076622000 -14400 0 WART} + {4095374400 -10800 1 WARST} } diff --git a/library/tzdata/America/Argentina/Tucuman b/library/tzdata/America/Argentina/Tucuman index 6d12cb6..3500986 100644 --- a/library/tzdata/America/Argentina/Tucuman +++ b/library/tzdata/America/Argentina/Tucuman @@ -66,185 +66,4 @@ set TZData(:America/Argentina/Tucuman) { {1205632800 -10800 0 ART} {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} } -- cgit v0.12 From 097f32ff2cb5272d1ce612b32486caf8feaee9e5 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Tue, 27 Oct 2009 03:35:39 +0000 Subject: * library/tzdata/America/Argentina/Buenos_Aires: * library/tzdata/America/Argentina/Cordoba: * library/tzdata/America/Argentina/San_Luis: * library/tzdata/America/Argentina/Tucuman: New DST rules for Argentina. (Olson's tzdata2009p.) --- ChangeLog | 5 + library/tzdata/America/Argentina/Buenos_Aires | 181 ------------- library/tzdata/America/Argentina/Cordoba | 181 ------------- library/tzdata/America/Argentina/San_Luis | 369 +++++++++++++------------- library/tzdata/America/Argentina/Tucuman | 181 ------------- 5 files changed, 190 insertions(+), 727 deletions(-) diff --git a/ChangeLog b/ChangeLog index 686d717..59ff2fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,11 @@ date. [Bug 2886852] * tests/clock.test (clock-66.1): Added a test case for the above bug. + * library/tzdata/America/Argentina/Buenos_Aires: + * library/tzdata/America/Argentina/Cordoba: + * library/tzdata/America/Argentina/San_Luis: + * library/tzdata/America/Argentina/Tucuman: + New DST rules for Argentina. (Olson's tzdata2009p.) 2009-10-26 Don Porter diff --git a/library/tzdata/America/Argentina/Buenos_Aires b/library/tzdata/America/Argentina/Buenos_Aires index beccff3..73cc8e9 100644 --- a/library/tzdata/America/Argentina/Buenos_Aires +++ b/library/tzdata/America/Argentina/Buenos_Aires @@ -64,185 +64,4 @@ set TZData(:America/Argentina/Buenos_Aires) { {1205632800 -10800 0 ART} {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Argentina/Cordoba b/library/tzdata/America/Argentina/Cordoba index 798ee86..b08539e 100644 --- a/library/tzdata/America/Argentina/Cordoba +++ b/library/tzdata/America/Argentina/Cordoba @@ -64,185 +64,4 @@ set TZData(:America/Argentina/Cordoba) { {1205632800 -10800 0 ART} {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Argentina/San_Luis b/library/tzdata/America/Argentina/San_Luis index 1d06652..b93f3bf 100644 --- a/library/tzdata/America/Argentina/San_Luis +++ b/library/tzdata/America/Argentina/San_Luis @@ -60,188 +60,189 @@ set TZData(:America/Argentina/San_Luis) { {1085972400 -14400 0 WART} {1090728000 -10800 0 ART} {1198983600 -7200 1 ARST} - {1200880800 -10800 0 ART} - {1237086000 -14400 0 WART} - {1237089600 -14400 0 WART} - {1255838400 -10800 1 WARST} - {1269140400 -14400 0 WART} - {1287288000 -10800 1 WARST} - {1300590000 -14400 0 WART} - {1318737600 -10800 1 WARST} - {1332039600 -14400 0 WART} - {1350792000 -10800 1 WARST} - {1363489200 -14400 0 WART} - {1382241600 -10800 1 WARST} - {1394938800 -14400 0 WART} - {1413691200 -10800 1 WARST} - {1426388400 -14400 0 WART} - {1445140800 -10800 1 WARST} - {1458442800 -14400 0 WART} - {1476590400 -10800 1 WARST} - {1489892400 -14400 0 WART} - {1508040000 -10800 1 WARST} - {1521342000 -14400 0 WART} - {1540094400 -10800 1 WARST} - {1552791600 -14400 0 WART} - {1571544000 -10800 1 WARST} - {1584241200 -14400 0 WART} - {1602993600 -10800 1 WARST} - {1616295600 -14400 0 WART} - {1634443200 -10800 1 WARST} - {1647745200 -14400 0 WART} - {1665892800 -10800 1 WARST} - {1679194800 -14400 0 WART} - {1697342400 -10800 1 WARST} - {1710644400 -14400 0 WART} - {1729396800 -10800 1 WARST} - {1742094000 -14400 0 WART} - {1760846400 -10800 1 WARST} - {1773543600 -14400 0 WART} - {1792296000 -10800 1 WARST} - {1805598000 -14400 0 WART} - {1823745600 -10800 1 WARST} - {1837047600 -14400 0 WART} - {1855195200 -10800 1 WARST} - {1868497200 -14400 0 WART} - {1887249600 -10800 1 WARST} - {1899946800 -14400 0 WART} - {1918699200 -10800 1 WARST} - {1931396400 -14400 0 WART} - {1950148800 -10800 1 WARST} - {1963450800 -14400 0 WART} - {1981598400 -10800 1 WARST} - {1994900400 -14400 0 WART} - {2013048000 -10800 1 WARST} - {2026350000 -14400 0 WART} - {2044497600 -10800 1 WARST} - {2057799600 -14400 0 WART} - {2076552000 -10800 1 WARST} - {2089249200 -14400 0 WART} - {2108001600 -10800 1 WARST} - {2120698800 -14400 0 WART} - {2139451200 -10800 1 WARST} - {2152753200 -14400 0 WART} - {2170900800 -10800 1 WARST} - {2184202800 -14400 0 WART} - {2202350400 -10800 1 WARST} - {2215652400 -14400 0 WART} - {2234404800 -10800 1 WARST} - {2247102000 -14400 0 WART} - {2265854400 -10800 1 WARST} - {2278551600 -14400 0 WART} - {2297304000 -10800 1 WARST} - {2310001200 -14400 0 WART} - {2328753600 -10800 1 WARST} - {2342055600 -14400 0 WART} - {2360203200 -10800 1 WARST} - {2373505200 -14400 0 WART} - {2391652800 -10800 1 WARST} - {2404954800 -14400 0 WART} - {2423707200 -10800 1 WARST} - {2436404400 -14400 0 WART} - {2455156800 -10800 1 WARST} - {2467854000 -14400 0 WART} - {2486606400 -10800 1 WARST} - {2499908400 -14400 0 WART} - {2518056000 -10800 1 WARST} - {2531358000 -14400 0 WART} - {2549505600 -10800 1 WARST} - {2562807600 -14400 0 WART} - {2580955200 -10800 1 WARST} - {2594257200 -14400 0 WART} - {2613009600 -10800 1 WARST} - {2625706800 -14400 0 WART} - {2644459200 -10800 1 WARST} - {2657156400 -14400 0 WART} - {2675908800 -10800 1 WARST} - {2689210800 -14400 0 WART} - {2707358400 -10800 1 WARST} - {2720660400 -14400 0 WART} - {2738808000 -10800 1 WARST} - {2752110000 -14400 0 WART} - {2770862400 -10800 1 WARST} - {2783559600 -14400 0 WART} - {2802312000 -10800 1 WARST} - {2815009200 -14400 0 WART} - {2833761600 -10800 1 WARST} - {2847063600 -14400 0 WART} - {2865211200 -10800 1 WARST} - {2878513200 -14400 0 WART} - {2896660800 -10800 1 WARST} - {2909962800 -14400 0 WART} - {2928110400 -10800 1 WARST} - {2941412400 -14400 0 WART} - {2960164800 -10800 1 WARST} - {2972862000 -14400 0 WART} - {2991614400 -10800 1 WARST} - {3004311600 -14400 0 WART} - {3023064000 -10800 1 WARST} - {3036366000 -14400 0 WART} - {3054513600 -10800 1 WARST} - {3067815600 -14400 0 WART} - {3085963200 -10800 1 WARST} - {3099265200 -14400 0 WART} - {3118017600 -10800 1 WARST} - {3130714800 -14400 0 WART} - {3149467200 -10800 1 WARST} - {3162164400 -14400 0 WART} - {3180916800 -10800 1 WARST} - {3193614000 -14400 0 WART} - {3212366400 -10800 1 WARST} - {3225668400 -14400 0 WART} - {3243816000 -10800 1 WARST} - {3257118000 -14400 0 WART} - {3275265600 -10800 1 WARST} - {3288567600 -14400 0 WART} - {3307320000 -10800 1 WARST} - {3320017200 -14400 0 WART} - {3338769600 -10800 1 WARST} - {3351466800 -14400 0 WART} - {3370219200 -10800 1 WARST} - {3383521200 -14400 0 WART} - {3401668800 -10800 1 WARST} - {3414970800 -14400 0 WART} - {3433118400 -10800 1 WARST} - {3446420400 -14400 0 WART} - {3464568000 -10800 1 WARST} - {3477870000 -14400 0 WART} - {3496622400 -10800 1 WARST} - {3509319600 -14400 0 WART} - {3528072000 -10800 1 WARST} - {3540769200 -14400 0 WART} - {3559521600 -10800 1 WARST} - {3572823600 -14400 0 WART} - {3590971200 -10800 1 WARST} - {3604273200 -14400 0 WART} - {3622420800 -10800 1 WARST} - {3635722800 -14400 0 WART} - {3654475200 -10800 1 WARST} - {3667172400 -14400 0 WART} - {3685924800 -10800 1 WARST} - {3698622000 -14400 0 WART} - {3717374400 -10800 1 WARST} - {3730676400 -14400 0 WART} - {3748824000 -10800 1 WARST} - {3762126000 -14400 0 WART} - {3780273600 -10800 1 WARST} - {3793575600 -14400 0 WART} - {3811723200 -10800 1 WARST} - {3825025200 -14400 0 WART} - {3843777600 -10800 1 WARST} - {3856474800 -14400 0 WART} - {3875227200 -10800 1 WARST} - {3887924400 -14400 0 WART} - {3906676800 -10800 1 WARST} - {3919978800 -14400 0 WART} - {3938126400 -10800 1 WARST} - {3951428400 -14400 0 WART} - {3969576000 -10800 1 WARST} - {3982878000 -14400 0 WART} - {4001630400 -10800 1 WARST} - {4014327600 -14400 0 WART} - {4033080000 -10800 1 WARST} - {4045777200 -14400 0 WART} - {4064529600 -10800 1 WARST} - {4077226800 -14400 0 WART} - {4095979200 -10800 1 WARST} + {1200880800 -10800 0 WART} + {1205031600 -14400 0 WART} + {1223784000 -10800 1 WARST} + {1236481200 -14400 0 WART} + {1255233600 -10800 1 WARST} + {1268535600 -14400 0 WART} + {1286683200 -10800 1 WARST} + {1299985200 -14400 0 WART} + {1318132800 -10800 1 WARST} + {1331434800 -14400 0 WART} + {1350187200 -10800 1 WARST} + {1362884400 -14400 0 WART} + {1381636800 -10800 1 WARST} + {1394334000 -14400 0 WART} + {1413086400 -10800 1 WARST} + {1425783600 -14400 0 WART} + {1444536000 -10800 1 WARST} + {1457838000 -14400 0 WART} + {1475985600 -10800 1 WARST} + {1489287600 -14400 0 WART} + {1507435200 -10800 1 WARST} + {1520737200 -14400 0 WART} + {1539489600 -10800 1 WARST} + {1552186800 -14400 0 WART} + {1570939200 -10800 1 WARST} + {1583636400 -14400 0 WART} + {1602388800 -10800 1 WARST} + {1615690800 -14400 0 WART} + {1633838400 -10800 1 WARST} + {1647140400 -14400 0 WART} + {1665288000 -10800 1 WARST} + {1678590000 -14400 0 WART} + {1696737600 -10800 1 WARST} + {1710039600 -14400 0 WART} + {1728792000 -10800 1 WARST} + {1741489200 -14400 0 WART} + {1760241600 -10800 1 WARST} + {1772938800 -14400 0 WART} + {1791691200 -10800 1 WARST} + {1804993200 -14400 0 WART} + {1823140800 -10800 1 WARST} + {1836442800 -14400 0 WART} + {1854590400 -10800 1 WARST} + {1867892400 -14400 0 WART} + {1886644800 -10800 1 WARST} + {1899342000 -14400 0 WART} + {1918094400 -10800 1 WARST} + {1930791600 -14400 0 WART} + {1949544000 -10800 1 WARST} + {1962846000 -14400 0 WART} + {1980993600 -10800 1 WARST} + {1994295600 -14400 0 WART} + {2012443200 -10800 1 WARST} + {2025745200 -14400 0 WART} + {2043892800 -10800 1 WARST} + {2057194800 -14400 0 WART} + {2075947200 -10800 1 WARST} + {2088644400 -14400 0 WART} + {2107396800 -10800 1 WARST} + {2120094000 -14400 0 WART} + {2138846400 -10800 1 WARST} + {2152148400 -14400 0 WART} + {2170296000 -10800 1 WARST} + {2183598000 -14400 0 WART} + {2201745600 -10800 1 WARST} + {2215047600 -14400 0 WART} + {2233800000 -10800 1 WARST} + {2246497200 -14400 0 WART} + {2265249600 -10800 1 WARST} + {2277946800 -14400 0 WART} + {2296699200 -10800 1 WARST} + {2309396400 -14400 0 WART} + {2328148800 -10800 1 WARST} + {2341450800 -14400 0 WART} + {2359598400 -10800 1 WARST} + {2372900400 -14400 0 WART} + {2391048000 -10800 1 WARST} + {2404350000 -14400 0 WART} + {2423102400 -10800 1 WARST} + {2435799600 -14400 0 WART} + {2454552000 -10800 1 WARST} + {2467249200 -14400 0 WART} + {2486001600 -10800 1 WARST} + {2499303600 -14400 0 WART} + {2517451200 -10800 1 WARST} + {2530753200 -14400 0 WART} + {2548900800 -10800 1 WARST} + {2562202800 -14400 0 WART} + {2580350400 -10800 1 WARST} + {2593652400 -14400 0 WART} + {2612404800 -10800 1 WARST} + {2625102000 -14400 0 WART} + {2643854400 -10800 1 WARST} + {2656551600 -14400 0 WART} + {2675304000 -10800 1 WARST} + {2688606000 -14400 0 WART} + {2706753600 -10800 1 WARST} + {2720055600 -14400 0 WART} + {2738203200 -10800 1 WARST} + {2751505200 -14400 0 WART} + {2770257600 -10800 1 WARST} + {2782954800 -14400 0 WART} + {2801707200 -10800 1 WARST} + {2814404400 -14400 0 WART} + {2833156800 -10800 1 WARST} + {2846458800 -14400 0 WART} + {2864606400 -10800 1 WARST} + {2877908400 -14400 0 WART} + {2896056000 -10800 1 WARST} + {2909358000 -14400 0 WART} + {2927505600 -10800 1 WARST} + {2940807600 -14400 0 WART} + {2959560000 -10800 1 WARST} + {2972257200 -14400 0 WART} + {2991009600 -10800 1 WARST} + {3003706800 -14400 0 WART} + {3022459200 -10800 1 WARST} + {3035761200 -14400 0 WART} + {3053908800 -10800 1 WARST} + {3067210800 -14400 0 WART} + {3085358400 -10800 1 WARST} + {3098660400 -14400 0 WART} + {3117412800 -10800 1 WARST} + {3130110000 -14400 0 WART} + {3148862400 -10800 1 WARST} + {3161559600 -14400 0 WART} + {3180312000 -10800 1 WARST} + {3193009200 -14400 0 WART} + {3211761600 -10800 1 WARST} + {3225063600 -14400 0 WART} + {3243211200 -10800 1 WARST} + {3256513200 -14400 0 WART} + {3274660800 -10800 1 WARST} + {3287962800 -14400 0 WART} + {3306715200 -10800 1 WARST} + {3319412400 -14400 0 WART} + {3338164800 -10800 1 WARST} + {3350862000 -14400 0 WART} + {3369614400 -10800 1 WARST} + {3382916400 -14400 0 WART} + {3401064000 -10800 1 WARST} + {3414366000 -14400 0 WART} + {3432513600 -10800 1 WARST} + {3445815600 -14400 0 WART} + {3463963200 -10800 1 WARST} + {3477265200 -14400 0 WART} + {3496017600 -10800 1 WARST} + {3508714800 -14400 0 WART} + {3527467200 -10800 1 WARST} + {3540164400 -14400 0 WART} + {3558916800 -10800 1 WARST} + {3572218800 -14400 0 WART} + {3590366400 -10800 1 WARST} + {3603668400 -14400 0 WART} + {3621816000 -10800 1 WARST} + {3635118000 -14400 0 WART} + {3653870400 -10800 1 WARST} + {3666567600 -14400 0 WART} + {3685320000 -10800 1 WARST} + {3698017200 -14400 0 WART} + {3716769600 -10800 1 WARST} + {3730071600 -14400 0 WART} + {3748219200 -10800 1 WARST} + {3761521200 -14400 0 WART} + {3779668800 -10800 1 WARST} + {3792970800 -14400 0 WART} + {3811118400 -10800 1 WARST} + {3824420400 -14400 0 WART} + {3843172800 -10800 1 WARST} + {3855870000 -14400 0 WART} + {3874622400 -10800 1 WARST} + {3887319600 -14400 0 WART} + {3906072000 -10800 1 WARST} + {3919374000 -14400 0 WART} + {3937521600 -10800 1 WARST} + {3950823600 -14400 0 WART} + {3968971200 -10800 1 WARST} + {3982273200 -14400 0 WART} + {4001025600 -10800 1 WARST} + {4013722800 -14400 0 WART} + {4032475200 -10800 1 WARST} + {4045172400 -14400 0 WART} + {4063924800 -10800 1 WARST} + {4076622000 -14400 0 WART} + {4095374400 -10800 1 WARST} } diff --git a/library/tzdata/America/Argentina/Tucuman b/library/tzdata/America/Argentina/Tucuman index 6d12cb6..3500986 100644 --- a/library/tzdata/America/Argentina/Tucuman +++ b/library/tzdata/America/Argentina/Tucuman @@ -66,185 +66,4 @@ set TZData(:America/Argentina/Tucuman) { {1205632800 -10800 0 ART} {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} } -- cgit v0.12 From 1268a25362d8b84daac84c8010a50da1711094e2 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 27 Oct 2009 20:30:46 +0000 Subject: * generic/tclPathObj.c: Missing refcount on cached normalized path caused crashes. [Bug 2884203]. --- ChangeLog | 5 +++++ generic/tclPathObj.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 816a665..1b46d53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-27 Don Porter + + * generic/tclPathObj.c: Missing refcount on cached normalized path + caused crashes. [Bug 2884203]. + 2009-10-27 Kevin B. Kenny * library/clock.tcl (ParseClockScanFormat): diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index 60220b9..bd69f09 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.9 2009/08/20 14:59:53 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.66.2.10 2009/10/27 20:30:48 dgp Exp $ */ #include "tclInt.h" @@ -2005,6 +2005,7 @@ Tcl_FSGetNormalizedPath( TclFSNormalizeToUniquePath(interp, copy, cwdLen-1, (fsPathPtr->nativePathPtr == NULL ? &clientData : NULL)); fsPathPtr->normPathPtr = copy; + Tcl_IncrRefCount(fsPathPtr->normPathPtr); if (clientData != NULL) { fsPathPtr->nativePathPtr = clientData; } -- cgit v0.12 From 667646d2977ff01762169575231252c9e9988ee8 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 27 Oct 2009 20:31:08 +0000 Subject: * generic/tclPathObj.c: Missing refcount on cached normalized path caused crashes. [Bug 2884203]. --- ChangeLog | 5 +++++ generic/tclPathObj.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 59ff2fd..5d67ecd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-10-27 Don Porter + + * generic/tclPathObj.c: Missing refcount on cached normalized path + caused crashes. [Bug 2884203]. + 2009-10-27 Kevin B. Kenny * library/clock.tcl (ParseClockScanFormat): diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index 7599529..6d36fe4 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPathObj.c,v 1.83 2009/09/30 03:11:26 dgp Exp $ + * RCS: @(#) $Id: tclPathObj.c,v 1.84 2009/10/27 20:31:08 dgp Exp $ */ #include "tclInt.h" @@ -1940,6 +1940,7 @@ Tcl_FSGetNormalizedPath( TclFSNormalizeToUniquePath(interp, copy, cwdLen-1, (fsPathPtr->nativePathPtr == NULL ? &clientData : NULL)); fsPathPtr->normPathPtr = copy; + Tcl_IncrRefCount(fsPathPtr->normPathPtr); if (clientData != NULL) { fsPathPtr->nativePathPtr = clientData; } -- cgit v0.12 From cf3b90a2ccebaba6be1c6ea1a6a6de8a3214c8a5 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 28 Oct 2009 16:45:51 +0000 Subject: * tests/fileName.test (fileName-20.[78]): Corrected poor test hygiene (failure to save and restore the working directory) that caused these two tests to fail on Windows (and [Bug 2806250] to be reopened). --- ChangeLog | 7 +++++++ tests/fileName.test | 13 ++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1b46d53..033471d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-28 Kevin B. Kenny + + * tests/fileName.test (fileName-20.[78]): Corrected poor test + hygiene (failure to save and restore the working directory) that + caused these two tests to fail on Windows (and [Bug 2806250] + to be reopened). + 2009-10-27 Don Porter * generic/tclPathObj.c: Missing refcount on cached normalized path diff --git a/tests/fileName.test b/tests/fileName.test index 8986cc2..9fe9f34 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.51.8.9 2009/08/21 18:31:37 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.51.8.10 2009/10/28 16:45:54 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1513,6 +1513,11 @@ test filename-16.17 {windows specific globbing} {win} { } } {ok} +# Put the working directory back now that we're done with globbing in C:/ +if {[testConstraint win]} { + cd $oldDir +} + test filename-17.1 {windows specific special files} {testsetplatform} { testsetplatform win list [file pathtype com1] [file pathtype con] [file pathtype lpt3] \ @@ -1623,6 +1628,8 @@ test fileName-20.6 {Bug 2837800} -setup { } -result {} test fileName-20.7 {Bug 2806250} -setup { + set savewd [pwd] + cd [temporaryDirectory] set d [makeDirectory isolate] makeFile {} ./~test $d } -body { @@ -1630,9 +1637,12 @@ test fileName-20.7 {Bug 2806250} -setup { } -cleanup { removeFile ./~test $d removeDirectory isolate + cd $savewd } -result 1 test fileName-20.8 {Bug 2806250} -setup { + set savewd [pwd] + cd [temporaryDirectory] set d [makeDirectory isolate] makeFile {} ./~test $d } -body { @@ -1640,6 +1650,7 @@ test fileName-20.8 {Bug 2806250} -setup { } -cleanup { removeFile ./~test $d removeDirectory isolate + cd $savewd } -result ./~test test fileName-20.9 {} -setup { -- cgit v0.12 From 1968b054ce6cb77985b7fabcad41ec530209fad5 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Wed, 28 Oct 2009 16:46:33 +0000 Subject: * tests/fileName.test (fileName-20.[78]): Corrected poor test hygiene (failure to save and restore the working directory) that caused these two tests to fail on Windows (and [Bug 2806250] to be reopened). --- ChangeLog | 7 +++++++ tests/fileName.test | 13 ++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5d67ecd..cabe9f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-28 Kevin B. Kenny + + * tests/fileName.test (fileName-20.[78]): Corrected poor test + hygiene (failure to save and restore the working directory) that + caused these two tests to fail on Windows (and [Bug 2806250] + to be reopened). + 2009-10-27 Don Porter * generic/tclPathObj.c: Missing refcount on cached normalized path diff --git a/tests/fileName.test b/tests/fileName.test index a35cf86..c02cea3 100644 --- a/tests/fileName.test +++ b/tests/fileName.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fileName.test,v 1.64 2009/08/21 18:32:08 dgp Exp $ +# RCS: @(#) $Id: fileName.test,v 1.65 2009/10/28 16:46:33 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1436,6 +1436,11 @@ test filename-16.17 {windows specific globbing} -constraints {win} -body { [glob -nocomplain -tails -dir C: *] } -match compareWords -result equal +# Put the working directory back now that we're done with globbing in C:/ +if {[testConstraint win]} { + cd $oldDir +} + test filename-17.1 {windows specific special files} {testsetplatform} { testsetplatform win list [file pathtype com1] [file pathtype con] [file pathtype lpt3] \ @@ -1543,6 +1548,8 @@ test fileName-20.6 {Bug 2837800} -setup { } -result {} test fileName-20.7 {Bug 2806250} -setup { + set savewd [pwd] + cd [temporaryDirectory] set d [makeDirectory isolate] makeFile {} ./~test $d } -body { @@ -1550,9 +1557,12 @@ test fileName-20.7 {Bug 2806250} -setup { } -cleanup { removeFile ./~test $d removeDirectory isolate + cd $savewd } -result 1 test fileName-20.8 {Bug 2806250} -setup { + set savewd [pwd] + cd [temporaryDirectory] set d [makeDirectory isolate] makeFile {} ./~test $d } -body { @@ -1560,6 +1570,7 @@ test fileName-20.8 {Bug 2806250} -setup { } -cleanup { removeFile ./~test $d removeDirectory isolate + cd $savewd } -result ./~test test fileName-20.9 {} -setup { -- cgit v0.12 From 78dd3b3955f6c2f710b83b1cbdde2aa96be2aecb Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 28 Oct 2009 21:03:19 +0000 Subject: * generic/tclLiteral.c: Fixed 2 bugs reported in [Bug 2888044]. * tests/info.test: First, as noted in the comments of the TclCleanupLiteralTable routine, since the teardown of the intrep of one Tcl_Obj can cause the teardown of others in the same table, the full table cleanup must be done with care, but the code did not contain the same care demanded in the comment. Second, recent additions to the info.test file had poor hygiene, leaving an array variable ::a lying around, which breaks later interp.test tests during a -singleproc 1 run of the test suite. --- ChangeLog | 12 ++++++++++++ generic/tclLiteral.c | 3 ++- tests/info.test | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index cabe9f4..e548e4a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-10-28 Don Porter + + * generic/tclLiteral.c: Fixed 2 bugs reported in [Bug 2888044]. + * tests/info.test: First, as noted in the comments of the + TclCleanupLiteralTable routine, since the teardown of the intrep + of one Tcl_Obj can cause the teardown of others in the same table, + the full table cleanup must be done with care, but the code did not + contain the same care demanded in the comment. Second, recent + additions to the info.test file had poor hygiene, leaving an array + variable ::a lying around, which breaks later interp.test tests during + a -singleproc 1 run of the test suite. + 2009-10-28 Kevin B. Kenny * tests/fileName.test (fileName-20.[78]): Corrected poor test diff --git a/generic/tclLiteral.c b/generic/tclLiteral.c index 5d4974a..10a18f8 100644 --- a/generic/tclLiteral.c +++ b/generic/tclLiteral.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLiteral.c,v 1.36 2009/07/22 12:00:42 nijtmans Exp $ + * RCS: @(#) $Id: tclLiteral.c,v 1.37 2009/10/28 21:03:19 dgp Exp $ */ #include "tclInt.h" @@ -136,6 +136,7 @@ TclCleanupLiteralTable( objPtr->typePtr = NULL; typePtr->freeIntRepProc(objPtr); didOne = 1; + break; } else { entryPtr = nextPtr; } diff --git a/tests/info.test b/tests/info.test index 24c966a..f983a0c 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.67 2009/09/07 19:59:59 dgp Exp $ +# RCS: @(#) $Id: info.test,v 1.68 2009/10/28 21:03:19 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1822,6 +1822,7 @@ test info-30.47 {TIP 280 for compiled [subst]} { subst {$a( [dict get [info frame 0] line])} ; # 1823 } YES +unset -nocomplain a test info-30.48 {Bug 2850901} testevalex { testevalex {return -level 0 [format %s {} -- cgit v0.12 From 557786360893e144c08ad7342f414ff0720164bf Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 28 Oct 2009 21:10:57 +0000 Subject: * generic/tclLiteral.c: Backport fix for [Bug 2888044]. --- ChangeLog | 4 ++++ generic/tclLiteral.c | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 033471d..5f72dcb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-10-28 Don Porter + + * generic/tclLiteral.c: Backport fix for [Bug 2888044]. + 2009-10-28 Kevin B. Kenny * tests/fileName.test (fileName-20.[78]): Corrected poor test diff --git a/generic/tclLiteral.c b/generic/tclLiteral.c index 0a45f4d..a3c50c3 100644 --- a/generic/tclLiteral.c +++ b/generic/tclLiteral.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLiteral.c,v 1.33 2007/12/13 15:23:19 dgp Exp $ + * RCS: @(#) $Id: tclLiteral.c,v 1.33.2.1 2009/10/28 21:10:57 dgp Exp $ */ #include "tclInt.h" @@ -136,6 +136,7 @@ TclCleanupLiteralTable( objPtr->typePtr = NULL; typePtr->freeIntRepProc(objPtr); didOne = 1; + break; } else { entryPtr = nextPtr; } -- cgit v0.12 From 80ed2d3225fd713abeabba326c657ee9567dc1c5 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Thu, 29 Oct 2009 01:17:02 +0000 Subject: * library/clock.tcl (LocalizeFormat): * tests/clock.test (clock-67.1): Corrected a problem where '%%' followed by a letter in a format group could expand recursively: %%R would turn into %%H:%M:%S. [Bug 2819334] --- ChangeLog | 7 +++++++ library/clock.tcl | 41 ++++++++++++++++++++++------------------- tests/clock.test | 6 +++++- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5f72dcb..e3bfe24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-29 Kevin B. Kenny + + * library/clock.tcl (LocalizeFormat): + * tests/clock.test (clock-67.1): + Corrected a problem where '%%' followed by a letter in a format group + could expand recursively: %%R would turn into %%H:%M:%S. [Bug 2819334] + 2009-10-28 Don Porter * generic/tclLiteral.c: Backport fix for [Bug 2888044]. diff --git a/library/clock.tcl b/library/clock.tcl index 9bf41ec..4e7df31 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47.2.8 2009/10/27 03:24:17 kennykb Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.47.2.9 2009/10/29 01:17:03 kennykb Exp $ # #---------------------------------------------------------------------- @@ -2563,25 +2563,28 @@ proc ::tcl::clock::LocalizeFormat { locale format } { } set inFormat $format - # Handle locale-dependent format groups by mapping them out of - # the input string. Note that the order of the [string map] - # operations is significant because earlier formats can refer - # to later ones; for example %c can refer to %X, which in turn - # can refer to %T. + # Handle locale-dependent format groups by mapping them out of the format + # string. Note that the order of the [string map] operations is + # significant because later formats can refer to later ones; for example + # %c can refer to %X, which in turn can refer to %T. - set format [string map [list %c [mc DATE_TIME_FORMAT] \ - %Ec [mc LOCALE_DATE_TIME_FORMAT]] $format] - set format [string map [list %x [mc DATE_FORMAT] \ - %Ex [mc LOCALE_DATE_FORMAT] \ - %X [mc TIME_FORMAT] \ - %EX [mc LOCALE_TIME_FORMAT]] $format] - set format [string map [list %r [mc TIME_FORMAT_12] \ - %R [mc TIME_FORMAT_24] \ - %T [mc TIME_FORMAT_24_SECS]] $format] - set format [string map [list %D %m/%d/%Y \ - %EY [mc LOCALE_YEAR_FORMAT]\ - %+ {%a %b %e %H:%M:%S %Z %Y}] $format] - + set list { + %% %% + %D %m/%d/%Y + %+ {%a %b %e %H:%M:%S %Z %Y} + } + lappend list %EY [string map $list [mc LOCALE_YEAR_FORMAT]] + lappend list %T [string map $list [mc TIME_FORMAT_24_SECS]] + lappend list %R [string map $list [mc TIME_FORMAT_24]] + lappend list %r [string map $list [mc TIME_FORMAT_12]] + lappend list %X [string map $list [mc TIME_FORMAT]] + lappend list %EX [string map $list [mc LOCALE_TIME_FORMAT]] + lappend list %x [string map $list [mc DATE_FORMAT]] + lappend list %Ex [string map $list [mc LOCALE_DATE_FORMAT]] + lappend list %c [string map $list [mc DATE_TIME_FORMAT]] + lappend list %Ec [string map $list [mc LOCALE_DATE_TIME_FORMAT]] + set format [string map $list $format] + dict set McLoaded $locale FORMAT $inFormat $format return $format } diff --git a/tests/clock.test b/tests/clock.test index bb284c4..86fad72 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.83.2.8 2009/10/27 03:24:17 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.83.2.9 2009/10/29 01:17:03 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36746,6 +36746,10 @@ test clock-66.1 {clock scan, no date, never-before-seen timezone} {*}{ -result 1256572800 } +test clock-67.1 {clock format, %% with a letter following [Bug 2819334]} { + clock format [clock seconds] -format %%r +} %r + # cleanup namespace delete ::testClock -- cgit v0.12 From d6e3f26a3c15aa9926fafac19a13388a9fae9367 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Thu, 29 Oct 2009 01:17:54 +0000 Subject: * library/clock.tcl (LocalizeFormat): * tests/clock.test (clock-67.1): Corrected a problem where '%%' followed by a letter in a format group could expand recursively: %%R would turn into %%H:%M:%S. [Bug 2819334] --- ChangeLog | 7 +++++++ library/clock.tcl | 36 ++++++++++++++++++++---------------- tests/clock.test | 6 +++++- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index e548e4a..17377c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-29 Kevin B. Kenny + + * library/clock.tcl (LocalizeFormat): + * tests/clock.test (clock-67.1): + Corrected a problem where '%%' followed by a letter in a format group + could expand recursively: %%R would turn into %%H:%M:%S. [Bug 2819334] + 2009-10-28 Don Porter * generic/tclLiteral.c: Fixed 2 bugs reported in [Bug 2888044]. diff --git a/library/clock.tcl b/library/clock.tcl index 51118e1..c75a9e2 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.56 2009/10/27 03:23:32 kennykb Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.57 2009/10/29 01:17:54 kennykb Exp $ # #---------------------------------------------------------------------- @@ -2514,24 +2514,28 @@ proc ::tcl::clock::LocalizeFormat { locale format } { } set inFormat $format - # Handle locale-dependent format groups by mapping them out of the input + # Handle locale-dependent format groups by mapping them out of the format # string. Note that the order of the [string map] operations is - # significant because earlier formats can refer to later ones; for example + # significant because later formats can refer to later ones; for example # %c can refer to %X, which in turn can refer to %T. - set format [string map [list %c [mc DATE_TIME_FORMAT] \ - %Ec [mc LOCALE_DATE_TIME_FORMAT]] $format] - set format [string map [list %x [mc DATE_FORMAT] \ - %Ex [mc LOCALE_DATE_FORMAT] \ - %X [mc TIME_FORMAT] \ - %EX [mc LOCALE_TIME_FORMAT]] $format] - set format [string map [list %r [mc TIME_FORMAT_12] \ - %R [mc TIME_FORMAT_24] \ - %T [mc TIME_FORMAT_24_SECS]] $format] - set format [string map [list %D %m/%d/%Y \ - %EY [mc LOCALE_YEAR_FORMAT]\ - %+ {%a %b %e %H:%M:%S %Z %Y}] $format] - + set list { + %% %% + %D %m/%d/%Y + %+ {%a %b %e %H:%M:%S %Z %Y} + } + lappend list %EY [string map $list [mc LOCALE_YEAR_FORMAT]] + lappend list %T [string map $list [mc TIME_FORMAT_24_SECS]] + lappend list %R [string map $list [mc TIME_FORMAT_24]] + lappend list %r [string map $list [mc TIME_FORMAT_12]] + lappend list %X [string map $list [mc TIME_FORMAT]] + lappend list %EX [string map $list [mc LOCALE_TIME_FORMAT]] + lappend list %x [string map $list [mc DATE_FORMAT]] + lappend list %Ex [string map $list [mc LOCALE_DATE_FORMAT]] + lappend list %c [string map $list [mc DATE_TIME_FORMAT]] + lappend list %Ec [string map $list [mc LOCALE_DATE_TIME_FORMAT]] + set format [string map $list $format] + dict set McLoaded $locale FORMAT $inFormat $format return $format } diff --git a/tests/clock.test b/tests/clock.test index 51d5655..d5957bd 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.test,v 1.93 2009/10/27 03:23:32 kennykb Exp $ +# RCS: @(#) $Id: clock.test,v 1.94 2009/10/29 01:17:54 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -36746,6 +36746,10 @@ test clock-66.1 {clock scan, no date, never-before-seen timezone} {*}{ -result 1256572800 } +test clock-67.1 {clock format, %% with a letter following [Bug 2819334]} { + clock format [clock seconds] -format %%r +} %r + # cleanup namespace delete ::testClock -- cgit v0.12 From 4110908a9c6a3510c762409aadf6d887a640baa4 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 29 Oct 2009 08:08:32 +0000 Subject: Remove accidental C99-ism which reportedly makes the AIX native compiler choke. --- ChangeLog | 42 +++++++++++++++++++++++------------------- generic/tclZlib.c | 50 +++++++++++++++++++++++++++++++------------------- 2 files changed, 54 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index 17377c5..c621064 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,17 +1,22 @@ +2009-10-29 Donal K. Fellows + + * generic/tclZlib.c (TclZlibCmd): Remove accidental C99-ism which + reportedly makes the AIX native compiler choke. + 2009-10-29 Kevin B. Kenny * library/clock.tcl (LocalizeFormat): * tests/clock.test (clock-67.1): - Corrected a problem where '%%' followed by a letter in a format group - could expand recursively: %%R would turn into %%H:%M:%S. [Bug 2819334] + [Bug 2819334]: Corrected a problem where '%%' followed by a letter in + a format group could expand recursively: %%R would turn into %%H:%M:%S 2009-10-28 Don Porter - * generic/tclLiteral.c: Fixed 2 bugs reported in [Bug 2888044]. + * generic/tclLiteral.c: [Bug 2888044]: Fixed 2 bugs. * tests/info.test: First, as noted in the comments of the - TclCleanupLiteralTable routine, since the teardown of the intrep - of one Tcl_Obj can cause the teardown of others in the same table, - the full table cleanup must be done with care, but the code did not + TclCleanupLiteralTable routine, since the teardown of the intrep of + one Tcl_Obj can cause the teardown of others in the same table, the + full table cleanup must be done with care, but the code did not contain the same care demanded in the comment. Second, recent additions to the info.test file had poor hygiene, leaving an array variable ::a lying around, which breaks later interp.test tests during @@ -21,20 +26,19 @@ * tests/fileName.test (fileName-20.[78]): Corrected poor test hygiene (failure to save and restore the working directory) that - caused these two tests to fail on Windows (and [Bug 2806250] - to be reopened). - + caused these two tests to fail on Windows (and [Bug 2806250] to be + reopened). + 2009-10-27 Don Porter - * generic/tclPathObj.c: Missing refcount on cached normalized path - caused crashes. [Bug 2884203]. + * generic/tclPathObj.c: [Bug 2884203]: Missing refcount on cached + normalized path caused crashes. 2009-10-27 Kevin B. Kenny - * library/clock.tcl (ParseClockScanFormat): - Corrected a problem where [clock scan] didn't load the timezone - soon enough when processing a time format that lacked a complete - date. [Bug 2886852] + * library/clock.tcl (ParseClockScanFormat): [Bug 2886852]: Corrected a + problem where [clock scan] didn't load the timezone soon enough when + processing a time format that lacked a complete date. * tests/clock.test (clock-66.1): Added a test case for the above bug. * library/tzdata/America/Argentina/Buenos_Aires: @@ -83,10 +87,10 @@ 2009-10-20 Don Porter * unix/Makefile.in: Removed the long outdated and broken targets - package-* that were for building Solaris packages. Appears that - the pieces needed for these targets to function have never been - present in the current era of Tcl development and belong completely - to Tcl pre-history. + package-* that were for building Solaris packages. Appears that the + pieces needed for these targets to function have never been present in + the current era of Tcl development and belong completely to Tcl + pre-history. 2009-10-19 Don Porter diff --git a/generic/tclZlib.c b/generic/tclZlib.c index 5dc8c2e..7f5ff7b 100644 --- a/generic/tclZlib.c +++ b/generic/tclZlib.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclZlib.c,v 1.30 2009/07/10 17:37:18 patthoyts Exp $ + * RCS: @(#) $Id: tclZlib.c,v 1.31 2009/10/29 08:08:33 dkf Exp $ */ #include "tclInt.h" @@ -214,9 +214,13 @@ deflateSetHeader( { struct internal_state *state; - if (strm == Z_NULL) return Z_STREAM_ERROR; + if (strm == Z_NULL) { + return Z_STREAM_ERROR; + } state = (struct internal_state *) strm->state; - if ((state == Z_NULL) || (state->wrap != 2)) return Z_STREAM_ERROR; + if ((state == Z_NULL) || (state->wrap != 2)) { + return Z_STREAM_ERROR; + } state->gzhead = head; return Z_OK; } @@ -227,9 +231,13 @@ static int inflateGetHeader( { struct inflate_state *state; - if (strm == Z_NULL) return Z_STREAM_ERROR; + if (strm == Z_NULL) { + return Z_STREAM_ERROR; + } state = (struct inflate_state *) strm->state; - if ((state == Z_NULL) || ((state->wrap & 2) == 0)) return Z_STREAM_ERROR; + if ((state == Z_NULL) || ((state->wrap & 2) == 0)) { + return Z_STREAM_ERROR; + } state->head = head; head->done = 0; return Z_OK; @@ -1671,7 +1679,7 @@ TclZlibCmd( }; enum zlibCommands { z_adler32, z_compress, z_crc32, z_decompress, z_deflate, z_gunzip, - z_gzip, z_inflate, z_push, z_stream, + z_gzip, z_inflate, z_push, z_stream }; static const char *const stream_formats[] = { "compress", "decompress", "deflate", "gunzip", "gzip", "inflate", @@ -1792,8 +1800,8 @@ TclZlibCmd( } return Tcl_ZlibDeflate(interp, TCL_ZLIB_FORMAT_GZIP, objv[2], level, headerDictObj); - case z_inflate: /* inflate rawcomprdata ?bufferSize? - * -> decompressedData */ + case z_inflate: /* inflate rawcomprdata ?bufferSize? + * -> decompressedData */ if (objc < 3 || objc > 4) { Tcl_WrongNumArgs(interp, 2, objv, "data ?bufferSize?"); return TCL_ERROR; @@ -1809,8 +1817,9 @@ TclZlibCmd( } return Tcl_ZlibInflate(interp, TCL_ZLIB_FORMAT_RAW, objv[2], buffersize, NULL); - case z_decompress: /* decompress zlibcomprdata ?bufferSize? - * -> decompressedData */ + case z_decompress: /* decompress zlibcomprdata \ + * ?bufferSize? + * -> decompressedData */ if (objc < 3 || objc > 4) { Tcl_WrongNumArgs(interp, 2, objv, "data ?bufferSize?"); return TCL_ERROR; @@ -1826,8 +1835,8 @@ TclZlibCmd( } return Tcl_ZlibInflate(interp, TCL_ZLIB_FORMAT_ZLIB, objv[2], buffersize, NULL); - case z_gunzip: /* gunzip gzippeddata ?bufferSize? - * -> decompressedData */ + case z_gunzip: /* gunzip gzippeddata ?bufferSize? + * -> decompressedData */ if (objc < 3 || objc > 5 || ((objc & 1) == 0)) { Tcl_WrongNumArgs(interp, 2, objv, "data ?-headerVar varName?"); return TCL_ERROR; @@ -1873,7 +1882,9 @@ TclZlibCmd( return TCL_ERROR; } return TCL_OK; - case z_stream: /* stream deflate/inflate/...gunzip ?level?*/ + case z_stream: /* stream deflate/inflate/...gunzip \ + * ?level? + * -> handleCmd */ if (objc < 3 || objc > 4) { Tcl_WrongNumArgs(interp, 2, objv, "mode ?level?"); return TCL_ERROR; @@ -1917,7 +1928,8 @@ TclZlibCmd( } Tcl_SetObjResult(interp, Tcl_ZlibStreamGetCommandName(zh)); return TCL_OK; - case z_push: { /* push mode channel options...*/ + case z_push: { /* push mode channel options... + * -> channel */ Tcl_Channel chan; int chanMode, mode; static const char *const pushOptions[] = { @@ -2324,13 +2336,12 @@ ZlibTransformClose( cd->outAllocated - cd->outStream.avail_out) < 0) { /* TODO: is this the right way to do errors on close? * Note: when close is called from FinalizeIOSubsystem - * then interp may be NULL - */ + * then interp may be NULL */ if (!TclInThreadExit()) { if (interp) { Tcl_AppendResult(interp, - "error while finalizing file: ", - Tcl_PosixError(interp), NULL); + "error while finalizing file: ", + Tcl_PosixError(interp), NULL); } } result = TCL_ERROR; @@ -2383,8 +2394,9 @@ ZlibTransformInput( } if (e != Z_OK) { Tcl_Obj *errObj = Tcl_NewListObj(0, NULL); + Tcl_ListObjAppendElement(NULL, errObj, - Tcl_NewStringObj(cd->inStream.msg, -1)); + Tcl_NewStringObj(cd->inStream.msg, -1)); Tcl_SetChannelError(cd->parent, errObj); *errorCodePtr = EINVAL; return -1; -- cgit v0.12 From cbb055ea7121a4a61a3c9b7bbc57298cc564d3d7 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 29 Oct 2009 11:49:24 +0000 Subject: General cleanliness improvements. --- ChangeLog | 3 + tests/dict.test | 663 ++++++++++++++++++++++++++++++++++---------------------- 2 files changed, 411 insertions(+), 255 deletions(-) diff --git a/ChangeLog b/ChangeLog index c621064..d658232 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2009-10-29 Donal K. Fellows + * tests/dict.test: Make variable-clean and simplify tests by utilizing + the fact that dictionaries have defined orders. + * generic/tclZlib.c (TclZlibCmd): Remove accidental C99-ism which reportedly makes the AIX native compiler choke. diff --git a/tests/dict.test b/tests/dict.test index b4f0f0e..7c16c5f 100644 --- a/tests/dict.test +++ b/tests/dict.test @@ -1,15 +1,15 @@ -# This test file covers the dictionary object type and the dict -# command used to work with values of that type. +# This test file covers the dictionary object type and the dict command used +# to work with values of that type. # -# This file contains a collection of tests for one or more of the Tcl -# built-in commands. Sourcing this file into Tcl runs the tests and -# generates output for errors. No output means no errors were found. +# This file contains a collection of tests for one or more of the Tcl built-in +# commands. Sourcing this file into Tcl runs the tests and generates output +# for errors. No output means no errors were found. # -# Copyright (c) 2003 Donal K. Fellows -# See the file "license.terms" for information on usage and redistribution -# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# Copyright (c) 2003-2009 Donal K. Fellows +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: dict.test,v 1.33 2009/10/08 14:37:36 dkf Exp $ +# RCS: @(#) $Id: dict.test,v 1.34 2009/10/29 11:49:25 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -30,20 +30,6 @@ if {[testConstraint memory]} { } } -# Procedure to help check the contents of a dictionary. Note that we -# can't just compare the string version because the order of the -# elements is (deliberately) not defined. This is because it is -# dependent on the underlying hash table implementation and also -# potentially on the history of the value itself. Net result: you -# cannot safely assume anything about the ordering of values. -proc getOrder {dictVal args} { - foreach key $args { - lappend result $key [dict get $dictVal $key] - } - lappend result [dict size $dictVal] - return $result -} - test dict-1.1 {dict command basic syntax} -returnCodes error -body { dict } -result {wrong # args: should be "dict subcommand ?arg ...?"} @@ -57,7 +43,7 @@ test dict-2.1 {dict create command} { test dict-2.2 {dict create command} { dict create a b } {a b} -test dict-2.3 {dict create command} { +test dict-2.3 {dict create command} -body { set result {} set dict [dict create a b c d] # Can't compare directly as ordering of values is undefined @@ -68,22 +54,26 @@ test dict-2.3 {dict create command} { } lappend result [lindex $dict [expr {$idx+1}]] } - set result -} {b d} + return $result +} -cleanup { + unset result dict key idx +} -result {b d} test dict-2.4 {dict create command} -returnCodes error -body { dict create a } -result {wrong # args: should be "dict create ?key value ...?"} test dict-2.5 {dict create command} -returnCodes error -body { dict create a b c } -result {wrong # args: should be "dict create ?key value ...?"} -test dict-2.6 {dict create command - initialse refcount field!} { +test dict-2.6 {dict create command - initialse refcount field!} -body { # Bug 715751 will show up in memory debuggers like purify for {set i 0} {$i<10} {incr i} { set dictv [dict create a 0] set share [dict values $dictv] list [dict incr dictv a] } -} {} +} -cleanup { + unset i dictv share +} -result {} test dict-2.7 {dict create command - #-quoting in string rep} { dict create # #comment } {{#} #comment} @@ -111,16 +101,18 @@ test dict-3.11 {dict get command} {dict get [dict create a b c d] a} b test dict-3.12 {dict get command} -returnCodes error -body { dict get } -result {wrong # args: should be "dict get dictionary ?key ...?"} -test dict-3.13 {dict get command} { +test dict-3.13 {dict get command} -body { set dict [dict get {a b c d}] if {$dict eq "a b c d"} { - subst OK + return OK } elseif {$dict eq "c d a b"} { - subst OK + return reordered } else { - set dict + return $dict } -} OK +} -cleanup { + unset dict +} -result OK test dict-3.14 {dict get command} -returnCodes error -body { dict get {a b c d} a c } -result {missing value to go with key} @@ -132,17 +124,17 @@ test dict-3.15 {compiled dict get error cleanliness - Bug 2431847} -body { } -returnCodes error -result {key "d" not known in dictionary} test dict-4.1 {dict replace command} { - getOrder [dict replace {a b c d}] a c -} {a b c d 2} + dict replace {a b c d} +} {a b c d} test dict-4.2 {dict replace command} { - getOrder [dict replace {a b c d} e f] a c e -} {a b c d e f 3} + dict replace {a b c d} e f +} {a b c d e f} test dict-4.3 {dict replace command} { - getOrder [dict replace {a b c d} c f] a c -} {a b c f 2} + dict replace {a b c d} c f +} {a b c f} test dict-4.4 {dict replace command} { - getOrder [dict replace {a b c d} c x a y] a c -} {a y c x 2} + dict replace {a b c d} c x a y +} {a y c x} test dict-4.5 {dict replace command} -returnCodes error -body { dict replace } -result {wrong # args: should be "dict replace dictionary ?key value ...?"} @@ -163,8 +155,8 @@ test dict-5.2 {dict remove command} {dict remove {a b c d} c} {a b} test dict-5.3 {dict remove command} {dict remove {a b c d} a c} {} test dict-5.4 {dict remove command} {dict remove {a b c d} c a} {} test dict-5.5 {dict remove command} { - getOrder [dict remove {a b c d}] a c -} {a b c d 2} + dict remove {a b c d} +} {a b c d} test dict-5.6 {dict remove command} {dict remove {a b} c} {a b} test dict-5.7 {dict remove command} -returnCodes error -body { dict remove @@ -247,82 +239,110 @@ test dict-10.4 {dict info command} -returnCodes error -body { dict info x } -result {missing value to go with key} -test dict-11.1 {dict incr command: unshared value} { +test dict-11.1 {dict incr command: unshared value} -body { set dictv [dict create \ a [string index "=0=" 1] \ b [expr {1+2}] \ c [expr {wide(0x80000000)+1}]] - getOrder [dict incr dictv a] a b c -} {a 1 b 3 c 2147483649 3} -test dict-11.2 {dict incr command: unshared value} { + dict incr dictv a +} -cleanup { + unset dictv +} -result {a 1 b 3 c 2147483649} +test dict-11.2 {dict incr command: unshared value} -body { set dictv [dict create \ a [string index "=0=" 1] \ b [expr {1+2}] \ c [expr {wide(0x80000000)+1}]] - getOrder [dict incr dictv b] a b c -} {a 0 b 4 c 2147483649 3} -test dict-11.3 {dict incr command: unshared value} { + dict incr dictv b +} -cleanup { + unset dictv +} -result {a 0 b 4 c 2147483649} +test dict-11.3 {dict incr command: unshared value} -body { set dictv [dict create \ a [string index "=0=" 1] \ b [expr {1+2}] \ c [expr {wide(0x80000000)+1}]] - getOrder [dict incr dictv c] a b c -} {a 0 b 3 c 2147483650 3} -test dict-11.4 {dict incr command: shared value} { + dict incr dictv c +} -cleanup { + unset dictv +} -result {a 0 b 3 c 2147483650} +test dict-11.4 {dict incr command: shared value} -body { set dictv [dict create a 0 b [expr {1+2}] c [expr {wide(0x80000000)+1}]] set sharing [dict values $dictv] - getOrder [dict incr dictv a] a b c -} {a 1 b 3 c 2147483649 3} -test dict-11.5 {dict incr command: shared value} { + dict incr dictv a +} -cleanup { + unset dictv sharing +} -result {a 1 b 3 c 2147483649} +test dict-11.5 {dict incr command: shared value} -body { set dictv [dict create a 0 b [expr {1+2}] c [expr {wide(0x80000000)+1}]] set sharing [dict values $dictv] - getOrder [dict incr dictv b] a b c -} {a 0 b 4 c 2147483649 3} -test dict-11.6 {dict incr command: shared value} { + dict incr dictv b +} -cleanup { + unset dictv sharing +} -result {a 0 b 4 c 2147483649} +test dict-11.6 {dict incr command: shared value} -body { set dictv [dict create a 0 b [expr {1+2}] c [expr {wide(0x80000000)+1}]] set sharing [dict values $dictv] - getOrder [dict incr dictv c] a b c -} {a 0 b 3 c 2147483650 3} -test dict-11.7 {dict incr command: unknown values} { + dict incr dictv c +} -cleanup { + unset dictv sharing +} -result {a 0 b 3 c 2147483650} +test dict-11.7 {dict incr command: unknown values} -body { set dictv [dict create a 0 b [expr {1+2}] c [expr {wide(0x80000000)+1}]] - getOrder [dict incr dictv d] a b c d -} {a 0 b 3 c 2147483649 d 1 4} -test dict-11.8 {dict incr command} { + dict incr dictv d +} -cleanup { + unset dictv +} -result {a 0 b 3 c 2147483649 d 1} +test dict-11.8 {dict incr command} -body { set dictv {a 1} dict incr dictv a 2 -} {a 3} +} -cleanup { + unset dictv +} -result {a 3} test dict-11.9 {dict incr command} -returnCodes error -body { set dictv {a dummy} dict incr dictv a +} -cleanup { + unset dictv } -result {expected integer but got "dummy"} test dict-11.10 {dict incr command} -returnCodes error -body { set dictv {a 1} dict incr dictv a dummy +} -cleanup { + unset dictv } -result {expected integer but got "dummy"} test dict-11.11 {dict incr command} -setup { - catch {unset dictv} + unset -nocomplain dictv } -body { dict incr dictv a +} -cleanup { + unset dictv } -result {a 1} test dict-11.12 {dict incr command} -returnCodes error -body { set dictv a dict incr dictv a +} -cleanup { + unset dictv } -result {missing value to go with key} test dict-11.13 {dict incr command} -returnCodes error -body { set dictv a dict incr dictv a a a +} -cleanup { + unset dictv } -result {wrong # args: should be "dict incr varName key ?increment?"} test dict-11.14 {dict incr command} -returnCodes error -body { set dictv a dict incr dictv +} -cleanup { + unset dictv } -result {wrong # args: should be "dict incr varName key ?increment?"} test dict-11.15 {dict incr command: write failure} -setup { - catch {unset dictVar} + unset -nocomplain dictVar } -body { set dictVar(block) {} dict incr dictVar a } -returnCodes error -cleanup { - catch {unset dictVar} + unset dictVar } -result {can't set "dictVar": variable is array} test dict-11.16 {dict incr command: compilation} { apply {{} { @@ -341,34 +361,48 @@ test dict-11.17 {dict incr command: compilation} { }} } {a 3} -test dict-12.1 {dict lappend command} { +test dict-12.1 {dict lappend command} -body { set dictv {a a} dict lappend dictv a -} {a a} -test dict-12.2 {dict lappend command} { +} -cleanup { + unset dictv +} -result {a a} +test dict-12.2 {dict lappend command} -body { set dictv {a a} set sharing [dict values $dictv] dict lappend dictv a b -} {a {a b}} -test dict-12.3 {dict lappend command} { +} -cleanup { + unset dictv sharing +} -result {a {a b}} +test dict-12.3 {dict lappend command} -body { set dictv {a a} dict lappend dictv a b c -} {a {a b c}} -test dict-12.2.1 {dict lappend command} { +} -cleanup { + unset dictv +} -result {a {a b c}} +test dict-12.2.1 {dict lappend command} -body { set dictv [dict create a [string index =a= 1]] dict lappend dictv a b -} {a {a b}} -test dict-12.4 {dict lappend command} { +} -cleanup { + unset dictv +} -result {a {a b}} +test dict-12.4 {dict lappend command} -body { set dictv {} dict lappend dictv a x y z -} {a {x y z}} -test dict-12.5 {dict lappend command} { - catch {unset dictv} +} -cleanup { + unset dictv +} -result {a {x y z}} +test dict-12.5 {dict lappend command} -body { + unset -nocomplain dictv dict lappend dictv a b -} {a b} +} -cleanup { + unset dictv +} -result {a b} test dict-12.6 {dict lappend command} -returnCodes error -body { set dictv a dict lappend dictv a a +} -cleanup { + unset dictv } -result {missing value to go with key} test dict-12.7 {dict lappend command} -returnCodes error -body { dict lappend @@ -379,44 +413,60 @@ test dict-12.8 {dict lappend command} -returnCodes error -body { test dict-12.9 {dict lappend command} -returnCodes error -body { set dictv [dict create a "\{"] dict lappend dictv a a +} -cleanup { + unset dictv } -result {unmatched open brace in list} test dict-12.10 {dict lappend command: write failure} -setup { - catch {unset dictVar} + unset -nocomplain dictVar } -body { set dictVar(block) {} dict lappend dictVar a x } -returnCodes error -cleanup { - catch {unset dictVar} + unset dictVar } -result {can't set "dictVar": variable is array} -test dict-13.1 {dict append command} { +test dict-13.1 {dict append command} -body { set dictv {a a} dict append dictv a -} {a a} -test dict-13.2 {dict append command} { +} -cleanup { + unset dictv +} -result {a a} +test dict-13.2 {dict append command} -body { set dictv {a a} set sharing [dict values $dictv] dict append dictv a b -} {a ab} -test dict-13.3 {dict append command} { +} -cleanup { + unset dictv sharing +} -result {a ab} +test dict-13.3 {dict append command} -body { set dictv {a a} dict append dictv a b c -} {a abc} -test dict-13.2.1 {dict append command} { +} -cleanup { + unset dictv +} -result {a abc} +test dict-13.2.1 {dict append command} -body { set dictv [dict create a [string index =a= 1]] dict append dictv a b -} {a ab} -test dict-13.4 {dict append command} { +} -cleanup { + unset dictv +} -result {a ab} +test dict-13.4 {dict append command} -body { set dictv {} dict append dictv a x y z -} {a xyz} -test dict-13.5 {dict append command} { - catch {unset dictv} +} -cleanup { + unset dictv +} -result {a xyz} +test dict-13.5 {dict append command} -body { + unset -nocomplain dictv dict append dictv a b -} {a b} +} -cleanup { + unset dictv +} -result {a b} test dict-13.6 {dict append command} -returnCodes error -body { set dictv a dict append dictv a a +} -cleanup { + unset dictv } -result {missing value to go with key} test dict-13.7 {dict append command} -returnCodes error -body { dict append @@ -425,12 +475,12 @@ test dict-13.8 {dict append command} -returnCodes error -body { dict append dictv } -result {wrong # args: should be "dict append varName key ?value ...?"} test dict-13.9 {dict append command: write failure} -setup { - catch {unset dictVar} + unset -nocomplain dictVar } -body { set dictVar(block) {} dict append dictVar a x } -returnCodes error -cleanup { - catch {unset dictVar} + unset dictVar } -result {can't set "dictVar": variable is array} test dict-13.10 {compiled dict append: crash case} { apply {{} {dict append dictVar a o k}} @@ -457,7 +507,7 @@ test dict-14.6 {dict for command: syntax} -returnCodes error -body { test dict-14.7 {dict for command: syntax} -returnCodes error -body { dict for "\{x" x x } -result {unmatched open brace in list} -test dict-14.8 {dict for command} { +test dict-14.8 {dict for command} -body { # This test confirms that [dict keys], [dict values] and [dict for] # all traverse a dictionary in the same order. set dictv {a A b B c C} @@ -471,13 +521,15 @@ test dict-14.8 {dict for command} { $keys eq [dict keys $dictv] && $values eq [dict values $dictv] }] expr {$result ? "YES" : [list "NO" $dictv $keys $values]} -} YES +} -cleanup { + unset result keys values k v dictv +} -result YES test dict-14.9 {dict for command} { dict for {k v} {} { error "unexpected execution of 'dict for' body" } } {} -test dict-14.10 {dict for command: script results} { +test dict-14.10 {dict for command: script results} -body { set times 0 dict for {k v} {a a b b} { incr times @@ -485,8 +537,10 @@ test dict-14.10 {dict for command: script results} { error "shouldn't get here" } return $times -} 2 -test dict-14.11 {dict for command: script results} { +} -cleanup { + unset times k v +} -result 2 +test dict-14.11 {dict for command: script results} -body { set times 0 dict for {k v} {a a b b} { incr times @@ -494,8 +548,10 @@ test dict-14.11 {dict for command: script results} { error "shouldn't get here" } return $times -} 1 -test dict-14.12 {dict for command: script results} { +} -cleanup { + unset times k v +} -result 1 +test dict-14.12 {dict for command: script results} -body { set times 0 list [catch { dict for {k v} {a a b b} { @@ -503,7 +559,9 @@ test dict-14.12 {dict for command: script results} { error test } } msg] $msg $times $::errorInfo -} {1 test 1 {test +} -cleanup { + unset times k v msg +} -result {1 test 1 {test while executing "error test" ("dict for" body line 3) @@ -521,7 +579,7 @@ test dict-14.13 {dict for command: script results} { error "return didn't go far enough" }} } ok,a,b -test dict-14.14 {dict for command: handle representation loss} { +test dict-14.14 {dict for command: handle representation loss} -body { set dictVar {a b c d e f g h} set keys {} set values {} @@ -532,11 +590,14 @@ test dict-14.14 {dict for command: handle representation loss} { } } list [lsort $keys] [lsort $values] -} {{a c e g} {b d f h}} -test dict-14.15 {dict for command: keys are unique and iterated over once only} { - set dictVar {a1 a a2 b b1 c b2 d foo bar bar foo} - catch {unset accum} +} -cleanup { + unset dictVar keys values k v +} -result {{a c e g} {b d f h}} +test dict-14.15 {dict for command: keys are unique and iterated over once only} -setup { + unset -nocomplain accum array set accum {} +} -body { + set dictVar {a1 a a2 b b1 c b2 d foo bar bar foo} dict for {k v} $dictVar { append accum($k) $v, } @@ -545,9 +606,10 @@ test dict-14.15 {dict for command: keys are unique and iterated over once only} foreach k $result { catch {lappend result $accum($k)} } - catch {unset accum} - set result -} {a1 a2 b1 b2 bar foo : a, b, c, d, foo, bar,} + return $result +} -cleanup { + unset dictVar k v result accum +} -result {a1 a2 b1 b2 bar foo : a, b, c, d, foo, bar,} test dict-14.16 {dict for command in compilation context} { apply {{} { set res {x x x x x x} @@ -587,46 +649,63 @@ test dict-14.20 {dict for stack space compilation: bug 1903325} { # There's probably a lot more tests to add here. Really ought to use a # coverage tool for this job... -test dict-15.1 {dict set command} { +test dict-15.1 {dict set command} -body { set dictVar {} dict set dictVar a x -} {a x} -test dict-15.2 {dict set command} { +} -cleanup { + unset dictVar +} -result {a x} +test dict-15.2 {dict set command} -body { set dictvar {a {}} dict set dictvar a b x -} {a {b x}} -test dict-15.3 {dict set command} { +} -cleanup { + unset dictvar +} -result {a {b x}} +test dict-15.3 {dict set command} -body { set dictvar {a {b {}}} dict set dictvar a b c x -} {a {b {c x}}} -test dict-15.4 {dict set command} { +} -cleanup { + unset dictvar +} -result {a {b {c x}}} +test dict-15.4 {dict set command} -body { set dictVar {a y} dict set dictVar a x -} {a x} -test dict-15.5 {dict set command} { +} -cleanup { + unset dictVar +} -result {a x} +test dict-15.5 {dict set command} -body { set dictVar {a {b y}} dict set dictVar a b x -} {a {b x}} -test dict-15.6 {dict set command} { +} -cleanup { + unset dictVar +} -result {a {b x}} +test dict-15.6 {dict set command} -body { set dictVar {a {b {c y}}} dict set dictVar a b c x -} {a {b {c x}}} -test dict-15.7 {dict set command: path creation} { +} -cleanup { + unset dictVar +} -result {a {b {c x}}} +test dict-15.7 {dict set command: path creation} -body { set dictVar {} dict set dictVar a b x -} {a {b x}} -test dict-15.8 {dict set command: creates variables} { - catch {unset dictVar} +} -cleanup { + unset dictVar +} -result {a {b x}} +test dict-15.8 {dict set command: creates variables} -setup { + unset -nocomplain dictVar +} -body { dict set dictVar a x - set dictVar -} {a x} + return $dictVar +} -cleanup { + unset dictVar +} -result {a x} test dict-15.9 {dict set command: write failure} -setup { - catch {unset dictVar} + unset -nocomplain dictVar } -body { set dictVar(block) {} dict set dictVar a x } -returnCodes error -cleanup { - catch {unset dictVar} + unset dictVar } -result {can't set "dictVar": variable is array} test dict-15.10 {dict set command: syntax} -returnCodes error -body { dict set @@ -640,61 +719,83 @@ test dict-15.12 {dict set command: syntax} -returnCodes error -body { test dict-15.13 {dict set command} -returnCodes error -body { set dictVar a dict set dictVar b c +} -cleanup { + unset dictVar } -result {missing value to go with key} -test dict-16.1 {dict unset command} { +test dict-16.1 {dict unset command} -body { set dictVar {a b c d} dict unset dictVar a -} {c d} -test dict-16.2 {dict unset command} { +} -cleanup { + unset dictVar +} -result {c d} +test dict-16.2 {dict unset command} -body { set dictVar {a b c d} dict unset dictVar c -} {a b} -test dict-16.3 {dict unset command} { +} -cleanup { + unset dictVar +} -result {a b} +test dict-16.3 {dict unset command} -body { set dictVar {a b} dict unset dictVar c -} {a b} -test dict-16.4 {dict unset command} { +} -cleanup { + unset dictVar +} -result {a b} +test dict-16.4 {dict unset command} -body { set dictVar {a {b c d e}} dict unset dictVar a b -} {a {d e}} +} -cleanup { + unset dictVar +} -result {a {d e}} test dict-16.5 {dict unset command} -returnCodes error -body { set dictVar a dict unset dictVar a +} -cleanup { + unset dictVar } -result {missing value to go with key} test dict-16.6 {dict unset command} -returnCodes error -body { set dictVar {a b} dict unset dictVar c d +} -cleanup { + unset dictVar } -result {key "c" not known in dictionary} test dict-16.7 {dict unset command} -setup { - catch {unset dictVar} + unset -nocomplain dictVar } -body { list [info exists dictVar] [dict unset dictVar a] [info exists dictVar] +} -cleanup { + unset dictVar } -result {0 {} 1} test dict-16.8 {dict unset command} -returnCodes error -body { dict unset dictVar } -result {wrong # args: should be "dict unset varName key ?key ...?"} test dict-16.9 {dict unset command: write failure} -setup { - catch {unset dictVar} + unset -nocomplain dictVar } -body { set dictVar(block) {} dict unset dictVar a } -returnCodes error -cleanup { - catch {unset dictVar} + unset dictVar } -result {can't set "dictVar": variable is array} -test dict-17.1 {dict filter command: key} { +test dict-17.1 {dict filter command: key} -body { set dictVar {a1 a a2 b b1 c b2 d foo bar bar foo} dict filter $dictVar key a2 -} {a2 b} -test dict-17.2 {dict filter command: key} { +} -cleanup { + unset dictVar +} -result {a2 b} +test dict-17.2 {dict filter command: key} -body { set dictVar {a1 a a2 b b1 c b2 d foo bar bar foo} dict size [dict filter $dictVar key *] -} 6 -test dict-17.3 {dict filter command: key} { +} -cleanup { + unset dictVar +} -result 6 +test dict-17.3 {dict filter command: key} -body { set dictVar {a1 a a2 b b1 c b2 d foo bar bar foo} - getOrder [dict filter $dictVar key ???] bar foo -} {bar foo foo bar 2} + dict filter $dictVar key ??? +} -cleanup { + unset dictVar +} -result {foo bar bar foo} test dict-17.4 {dict filter command: key - no patterns} { dict filter {a b c d} key } {} @@ -704,18 +805,24 @@ test dict-17.4.1 {dict filter command: key - many patterns} { test dict-17.5 {dict filter command: key - bad dict} -returnCodes error -body { dict filter {a b c} key } -result {missing value to go with key} -test dict-17.6 {dict filter command: value} { +test dict-17.6 {dict filter command: value} -body { set dictVar {a1 a a2 b b1 c b2 d foo bar bar foo} dict filter $dictVar value c -} {b1 c} -test dict-17.7 {dict filter command: value} { +} -cleanup { + unset dictVar +} -result {b1 c} +test dict-17.7 {dict filter command: value} -body { set dictVar {a1 a a2 b b1 c b2 d foo bar bar foo} dict size [dict filter $dictVar value *] -} 6 -test dict-17.8 {dict filter command: value} { +} -cleanup { + unset dictVar +} -result 6 +test dict-17.8 {dict filter command: value} -body { set dictVar {a1 a a2 b b1 c b2 d foo bar bar foo} - getOrder [dict filter $dictVar value ???] bar foo -} {bar foo foo bar 2} + dict filter $dictVar value ??? +} -cleanup { + unset dictVar +} -result {foo bar bar foo} test dict-17.9 {dict filter command: value - no patterns} { dict filter {a b c d} value } {} @@ -725,44 +832,56 @@ test dict-17.9.1 {dict filter command: value - many patterns} { test dict-17.10 {dict filter command: value - bad dict} -body { dict filter {a b c} value a } -returnCodes error -result {missing value to go with key} -test dict-17.11 {dict filter command: script} { +test dict-17.11 {dict filter command: script} -body { set dictVar {a1 a a2 b b1 c b2 d foo bar bar foo} set n 0 - list [getOrder [dict filter $dictVar script {k v} { + list [dict filter $dictVar script {k v} { incr n expr {[string length $k] == [string length $v]} - }] bar foo] $n -} {{bar foo foo bar 2} 6} + }] $n +} -cleanup { + unset dictVar n k v +} -result {{foo bar bar foo} 6} test dict-17.12 {dict filter command: script} -returnCodes error -body { dict filter {a b} script {k v} { concat $k $v } +} -cleanup { + unset k v } -result {expected boolean value but got "a b"} -test dict-17.13 {dict filter command: script} { +test dict-17.13 {dict filter command: script} -body { list [catch {dict filter {a b} script {k v} {error x}} msg] $msg \ $::errorInfo -} {1 x {x +} -cleanup { + unset k v msg +} -result {1 x {x while executing "error x" ("dict filter" script line 1) invoked from within "dict filter {a b} script {k v} {error x}"}} -test dict-17.14 {dict filter command: script} { +test dict-17.14 {dict filter command: script} -setup { set n 0 +} -body { list [dict filter {a b c d} script {k v} { incr n break error boom! }] $n -} {{} 1} -test dict-17.15 {dict filter command: script} { +} -cleanup { + unset n k v +} -result {{} 1} +test dict-17.15 {dict filter command: script} -setup { set n 0 +} -body { list [dict filter {a b c d} script {k v} { incr n continue error boom! }] $n -} {{} 2} +} -cleanup { + unset n k v +} -result {{} 2} test dict-17.16 {dict filter command: script} { apply {{} { dict filter {a b} script {k v} { @@ -772,10 +891,12 @@ test dict-17.16 {dict filter command: script} { error "return didn't go far enough" }} } ok,a,b -test dict-17.17 {dict filter command: script} { +test dict-17.17 {dict filter command: script} -body { dict filter {a b} script {k k} {continue} - set k -} b + return $k +} -cleanup { + unset k +} -result b test dict-17.18 {dict filter command: script} -returnCodes error -body { dict filter {a b} script {k k} } -result {wrong # args: should be "dict filter dictionary script {keyVar valueVar} filterScript"} @@ -795,30 +916,28 @@ test dict-17.23 {dict filter command} -returnCodes error -body { dict filter a key * } -result {missing value to go with key} -test dict-18.1 {dict-list relationship} { - -body { - # Test that any internal conversion between list and dict - # does not change the object - set l [list 1 2 3 4 5 6 7 8 9 0 q w e r t y] - dict values $l - set l - } - -result {1 2 3 4 5 6 7 8 9 0 q w e r t y} -} -test dict-18.2 {dict-list relationship} { - -body { - # Test that the dictionary is a valid list - set d [dict create "abc def" 0 "a\{b" 1 "c\}d" 2] - for {set t 0} {$t < 5} {incr t} { - llength $d - dict lappend d "abc def" "\}\{" - dict append d "a\{b" "\}" - dict incr d "c\}d" 1 - } - llength $d +test dict-18.1 {dict-list relationship} -body { + # Test that any internal conversion between list and dict does not change + # the object + set l [list 1 2 3 4 5 6 7 8 9 0 q w e r t y] + dict values $l + return $l +} -cleanup { + unset l +} -result {1 2 3 4 5 6 7 8 9 0 q w e r t y} +test dict-18.2 {dict-list relationship} -body { + # Test that the dictionary is a valid list + set d [dict create "abc def" 0 "a\{b" 1 "c\}d" 2] + for {set t 0} {$t < 5} {incr t} { + llength $d + dict lappend d "abc def" "\}\{" + dict append d "a\{b" "\}" + dict incr d "c\}d" 1 } - -result 6 -} + llength $d +} -cleanup { + unset d t +} -result 6 # This is a test for a specific bug. # It shows a bad ref counter when running with memdebug on. @@ -950,14 +1069,14 @@ test dict-20.1 {dict merge command} { dict merge } {} test dict-20.2 {dict merge command} { - getOrder [dict merge {a b c d e f}] a c e -} {a b c d e f 3} + dict merge {a b c d e f} +} {a b c d e f} test dict-20.3 {dict merge command} -body { dict merge {a b c d e} } -result {missing value to go with key} -returnCodes error test dict-20.4 {dict merge command} { - getOrder [dict merge {a b c d} {e f g h}] a c e g -} {a b c d e f g h 4} + dict merge {a b c d} {e f g h} +} {a b c d e f g h} test dict-20.5 {dict merge command} -body { dict merge {a b c d e} {e f g h} } -result {missing value to go with key} -returnCodes error @@ -965,17 +1084,17 @@ test dict-20.6 {dict merge command} -body { dict merge {a b c d} {e f g h i} } -result {missing value to go with key} -returnCodes error test dict-20.7 {dict merge command} { - getOrder [dict merge {a b c d e f} {e x g h}] a c e g -} {a b c d e x g h 4} + dict merge {a b c d e f} {e x g h} +} {a b c d e x g h} test dict-20.8 {dict merge command} { - getOrder [dict merge {a b c d} {a x c y}] a c -} {a x c y 2} + dict merge {a b c d} {a x c y} +} {a x c y} test dict-20.9 {dict merge command} { - getOrder [dict merge {a b c d} {a x c y}] a c -} {a x c y 2} + dict merge {a b c d} {c y a x} +} {a x c y} test dict-20.10 {dict merge command} { - getOrder [dict merge {a b c d e f} {a x 1 2 3 4} {a - 1 -}] a c e 1 3 -} {a - c d e f 1 - 3 4 5} + dict merge {a b c d e f} {a x 1 2 3 4} {a - 1 -} +} {a - c d e f 1 - 3 4} test dict-21.1 {dict update command} -returnCodes 1 -body { dict update @@ -989,7 +1108,7 @@ test dict-21.3 {dict update command} -returnCodes 1 -body { test dict-21.4 {dict update command} -returnCodes 1 -body { dict update v k v } -result {wrong # args: should be "dict update varName key varName ?key varName ...? script"} -test dict-21.5 {dict update command} { +test dict-21.5 {dict update command} -body { set a {b c} set result {} set bb {} @@ -997,8 +1116,10 @@ test dict-21.5 {dict update command} { lappend result $a $bb } lappend result $a -} {{b c} c {b c}} -test dict-21.6 {dict update command} { +} -cleanup { + unset a result bb +} -result {{b c} c {b c}} +test dict-21.6 {dict update command} -body { set a {b c} set result {} set bb {} @@ -1006,8 +1127,10 @@ test dict-21.6 {dict update command} { lappend result $a $bb [set bb d] } lappend result $a -} {{b c} c d {b d}} -test dict-21.7 {dict update command} { +} -cleanup { + unset a result bb +} -result {{b c} c d {b d}} +test dict-21.7 {dict update command} -body { set a {b c} set result {} set bb {} @@ -1015,42 +1138,54 @@ test dict-21.7 {dict update command} { lappend result $a $bb [unset bb] } lappend result $a -} {{b c} c {} {}} -test dict-21.8 {dict update command} { +} -cleanup { + unset a result +} -result {{b c} c {} {}} +test dict-21.8 {dict update command} -body { set a {b c d e} dict update a b v1 d v2 { lassign "$v1 $v2" v2 v1 } - getOrder $a b d -} {b e d c 2} -test dict-21.9 {dict update command} { + return $a +} -cleanup { + unset a v1 v2 +} -result {b e d c} +test dict-21.9 {dict update command} -body { set a {b c d e} dict update a b v1 d v2 {unset a} info exist a -} 0 -test dict-21.10 {dict update command} { +} -cleanup { + unset v1 v2 +} -result 0 +test dict-21.10 {dict update command} -body { set a {b {c d}} dict update a b v1 { dict update v1 c v2 { set v2 foo } } - set a -} {b {c foo}} -test dict-21.11 {dict update command} { + return $a +} -cleanup { + unset a v1 v2 +} -result {b {c foo}} +test dict-21.11 {dict update command} -body { set a {b c d e} dict update a b v1 d v2 { dict set a f g } - getOrder $a b d f -} {b c d e f g 3} -test dict-21.12 {dict update command} { + return $a +} -cleanup { + unset a v1 v2 +} -result {b c d e f g} +test dict-21.12 {dict update command} -body { set a {b c d e} dict update a b v1 d v2 f v3 { set v3 g } - getOrder $a b d f -} {b c d e f g 3} + return $a +} -cleanup { + unset a v1 v2 v3 +} -result {b c d e f g} test dict-21.13 {dict update command: compilation} { apply {d { while 1 { @@ -1060,9 +1195,9 @@ test dict-21.13 {dict update command: compilation} { break } } - return [getOrder $d b c] + return $d }} {a 1 c 2} -} {b 1 c 2 2} +} {c 2 b 1} test dict-21.14 {dict update command: compilation} { apply {x { set indices {2 3} @@ -1077,7 +1212,7 @@ test dict-21.15 {dict update command: compilation} { dict update x k aa l bb {} }} {k 1 l 2} } {} -test dict-21.16 {dict update command: no recursive structures [Bug 1786481]} { +test dict-21.16 {dict update command: no recursive structures [Bug 1786481]} -body { set foo {a {b {c {d {e 1}}}}} dict update foo a t { dict update t b t { @@ -1089,7 +1224,9 @@ test dict-21.16 {dict update command: no recursive structures [Bug 1786481]} { } } string range [append foo OK] end-1 end -} OK +} -cleanup { + unset foo t +} -result OK test dict-21.17 {dict update command: no recursive structures [Bug 1786481]} { apply {{} { set foo {a {b {c {d {e 1}}}}} @@ -1102,8 +1239,8 @@ test dict-21.17 {dict update command: no recursive structures [Bug 1786481]} { } } } + string range [append foo OK] end-1 end }} - string range [append foo OK] end-1 end } OK test dict-22.1 {dict with command} -body { @@ -1116,53 +1253,65 @@ test dict-22.3 {dict with command} -body { unset -nocomplain v dict with v {error "in body"} } -returnCodes 1 -result {can't read "v": no such variable} -test dict-22.4 {dict with command} { +test dict-22.4 {dict with command} -body { set a {b c d e} unset -nocomplain b d set result [list [info exist b] [info exist d]] dict with a { lappend result [info exist b] [info exist d] $b $d } - set result -} {0 0 1 1 c e} -test dict-22.5 {dict with command} { + return $result +} -cleanup { + unset a b d result +} -result {0 0 1 1 c e} +test dict-22.5 {dict with command} -body { set a {b c d e} dict with a { lassign "$b $d" d b } - getOrder $a b d -} {b e d c 2} -test dict-22.6 {dict with command} { + return $a +} -cleanup { + unset a b d +} -result {b e d c} +test dict-22.6 {dict with command} -body { set a {b c d e} dict with a { unset b # This *won't* go into the dict... set f g } - set a -} {d e} -test dict-22.7 {dict with command} { + return $a +} -cleanup { + unset a d f +} -result {d e} +test dict-22.7 {dict with command} -body { set a {b c d e} dict with a { dict unset a b } - getOrder $a b d -} {b c d e 2} -test dict-22.8 {dict with command} { + return $a +} -cleanup { + unset a +} -result {d e b c} +test dict-22.8 {dict with command} -body { set a [dict create b c] dict with a { set b $a } - set a -} {b {b c}} -test dict-22.9 {dict with command} { + return $a +} -cleanup { + unset a b +} -result {b {b c}} +test dict-22.9 {dict with command} -body { set a {b {c d}} dict with a b { set c $c$c } - set a -} {b {c dd}} -test dict-22.10 {dict with command: result handling tricky case} { + return $a +} -cleanup { + unset a c +} -result {b {c dd}} +test dict-22.10 {dict with command: result handling tricky case} -body { set a {b {c d}} foreach i {0 1} { if {$i} break @@ -1173,8 +1322,10 @@ test dict-22.10 {dict with command: result handling tricky case} { } } list $i $a -} {0 {}} -test dict-22.11 {dict with command: no recursive structures [Bug 1786481]} { +} -cleanup { + unset a i c +} -result {0 {}} +test dict-22.11 {dict with command: no recursive structures [Bug 1786481]} -body { set foo {t {t {t {inner 1}}}} dict with foo { dict with t { @@ -1186,7 +1337,9 @@ test dict-22.11 {dict with command: no recursive structures [Bug 1786481]} { } } string range [append foo OK] end-1 end -} OK +} -cleanup { + unset foo t inner +} -result OK # cleanup ::tcltest::cleanupTests -- cgit v0.12 From e06f616f4b1db4e440fd0883a4987547208d8dd9 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 29 Oct 2009 15:51:50 +0000 Subject: More variable cleansing --- tests/if.test | 679 +++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 432 insertions(+), 247 deletions(-) diff --git a/tests/if.test b/tests/if.test index 4f46354..59fb24a 100644 --- a/tests/if.test +++ b/tests/if.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: if.test,v 1.12 2006/10/09 19:15:44 msofer Exp $ +# RCS: @(#) $Id: if.test,v 1.13 2009/10/29 15:51:50 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -20,83 +20,109 @@ if {[lsearch [namespace children] ::tcltest] == -1} { # Basic "if" operation. catch {unset a} -test if-1.1 {TclCompileIfCmd: missing if/elseif test} { - list [catch {if} msg] $msg -} {1 {wrong # args: no expression after "if" argument}} -test if-1.2 {TclCompileIfCmd: error in if/elseif test} { - list [catch {if {[error "error in condition"]} foo} msg] $msg -} {1 {error in condition}} +test if-1.1 {TclCompileIfCmd: missing if/elseif test} -body { + if +} -returnCodes error -result {wrong # args: no expression after "if" argument} +test if-1.2 {TclCompileIfCmd: error in if/elseif test} -body { + if {[error "error in condition"]} foo +} -returnCodes error -result {error in condition} test if-1.3 {TclCompileIfCmd: error in if/elseif test} -body { list [catch {if {1+}} msg] $msg $::errorInfo -} -match glob -result {1 * {*"if {1+}"}} -test if-1.4 {TclCompileIfCmd: if/elseif test in braces} { +} -match glob -cleanup { + unset msg +} -result {1 * {*"if {1+}"}} +test if-1.4 {TclCompileIfCmd: if/elseif test in braces} -body { set a {} if {1<2} {set a 1} - set a -} {1} -test if-1.5 {TclCompileIfCmd: if/elseif test not in braces} { + return $a +} -cleanup { + unset a +} -result {1} +test if-1.5 {TclCompileIfCmd: if/elseif test not in braces} -body { set a {} if 1<2 {set a 1} - set a -} {1} -test if-1.6 {TclCompileIfCmd: multiline test expr} { + return $a +} -cleanup { + unset a +} -result {1} +test if-1.6 {TclCompileIfCmd: multiline test expr} -setup { set a {} +} -body { if {($tcl_platform(platform) != "foobar1") && \ ($tcl_platform(platform) != "foobar2")} {set a 3} else {set a 4} - set a -} 3 -test if-1.7 {TclCompileIfCmd: "then" after if/elseif test} { + return $a +} -cleanup { + unset a +} -result 3 +test if-1.7 {TclCompileIfCmd: "then" after if/elseif test} -body { set a {} if 4>3 then {set a 1} - set a -} {1} -test if-1.8 {TclCompileIfCmd: keyword other than "then" after if/elseif test} { + return $a +} -cleanup { + unset a +} -result {1} +test if-1.8 {TclCompileIfCmd: keyword other than "then" after if/elseif test} -setup { set a {} - catch {if 1<2 therefore {set a 1}} msg - set msg -} {invalid command name "therefore"} -test if-1.9 {TclCompileIfCmd: missing "then" body} { +} -body { + if 1<2 therefore {set a 1} +} -cleanup { + unset a +} -returnCodes error -result {invalid command name "therefore"} +test if-1.9 {TclCompileIfCmd: missing "then" body} -setup { set a {} - catch {if 1<2 then} msg - set msg -} {wrong # args: no script following "then" argument} +} -body { + if 1<2 then +} -cleanup { + unset a +} -returnCodes error -result {wrong # args: no script following "then" argument} test if-1.10 {TclCompileIfCmd: error in "then" body} -body { set a {} list [catch {if {$a!="xxx"} then {set}} msg] $msg $::errorInfo -} -match glob -result {1 {wrong # args: should be "set varName ?newValue?"} {wrong # args: should be "set varName ?newValue?" +} -match glob -cleanup { + unset a msg +} -result {1 {wrong # args: should be "set varName ?newValue?"} {wrong # args: should be "set varName ?newValue?" while *ing "set"*}} -test if-1.11 {TclCompileIfCmd: error in "then" body} { - list [catch {if 2 then {[error "error in then clause"]}} msg] $msg -} {1 {error in then clause}} -test if-1.12 {TclCompileIfCmd: "then" body in quotes} { +test if-1.11 {TclCompileIfCmd: error in "then" body} -body { + if 2 then {[error "error in then clause"]} +} -returnCodes error -result {error in then clause} +test if-1.12 {TclCompileIfCmd: "then" body in quotes} -body { set a {} if 27>17 "append a x" - set a -} {x} -test if-1.13 {TclCompileIfCmd: computed "then" body} { + return $a +} -cleanup { + unset a +} -result {x} +test if-1.13 {TclCompileIfCmd: computed "then" body} -setup { catch {unset x1} catch {unset x2} - set a {} +} -body { set x1 {append a x1} set x2 {; append a x2} set a {} if 1 $x1$x2 - set a -} {x1x2} -test if-1.14 {TclCompileIfCmd: taking proper branch} { + return $a +} -cleanup { + unset a x1 x2 +} -result {x1x2} +test if-1.14 {TclCompileIfCmd: taking proper branch} -body { set a {} if 1<2 {set a 1} - set a -} 1 -test if-1.15 {TclCompileIfCmd: taking proper branch} { + return $a +} -cleanup { + unset a +} -result 1 +test if-1.15 {TclCompileIfCmd: taking proper branch} -body { set a {} if 1>2 {set a 1} - set a -} {} -test if-1.16 {TclCompileIfCmd: test jumpFalse instruction replacement after long "then" body} { + return $a +} -cleanup { + unset a +} -result {} +test if-1.16 {TclCompileIfCmd: test jumpFalse instruction replacement after long "then" body} -setup { catch {unset i} set a {} +} -body { if 1<2 { set a 1 while {$a != "xxx"} { @@ -146,38 +172,54 @@ test if-1.16 {TclCompileIfCmd: test jumpFalse instruction replacement after long } set a 3 } - set a -} 3 -test if-1.17 {TclCompileIfCmd: if/elseif test in quotes} { + return $a +} -cleanup { + unset a + unset -nocomplain i +} -result 3 +test if-1.17 {TclCompileIfCmd: if/elseif test in quotes} -setup { set a {} - list [catch {if {"0 < 3"} {set a 1}} msg] $msg -} {1 {expected boolean value but got "0 < 3"}} - +} -body { + if {"0 < 3"} {set a 1} +} -returnCodes error -cleanup { + unset a +} -result {expected boolean value but got "0 < 3"} -test if-2.1 {TclCompileIfCmd: "elseif" after if/elseif test} { +test if-2.1 {TclCompileIfCmd: "elseif" after if/elseif test} -setup { set a {} +} -body { if 3>4 {set a 1} elseif 1 {set a 2} - set a -} {2} + return $a +} -cleanup { + unset a +} -result {2} # Since "else" is optional, the "elwood" below is treated as a command. # But then there shouldn't be any additional argument words for the "if". -test if-2.2 {TclCompileIfCmd: keyword other than "elseif"} { +test if-2.2 {TclCompileIfCmd: keyword other than "elseif"} -setup { set a {} - catch {if 1<2 {set a 1} elwood {set a 2}} msg - set msg -} {wrong # args: extra words after "else" clause in "if" command} -test if-2.3 {TclCompileIfCmd: missing expression after "elseif"} { +} -body { + if 1<2 {set a 1} elwood {set a 2} +} -returnCodes error -cleanup { + unset a +} -result {wrong # args: extra words after "else" clause in "if" command} +test if-2.3 {TclCompileIfCmd: missing expression after "elseif"} -setup { set a {} - catch {if 1<2 {set a 1} elseif} msg - set msg -} {wrong # args: no expression after "elseif" argument} -test if-2.4 {TclCompileIfCmd: error in expression after "elseif"} -body { +} -body { + if 1<2 {set a 1} elseif +} -returnCodes error -cleanup { + unset a +} -result {wrong # args: no expression after "elseif" argument} +test if-2.4 {TclCompileIfCmd: error in expression after "elseif"} -setup { set a {} +} -body { list [catch {if 3>4 {set a 1} elseif {1>}} msg] $msg $::errorInfo -} -match glob -result {1 * {*"if 3>4 {set a 1} elseif {1>}"}} -test if-2.5 {TclCompileIfCmd: test jumpFalse instruction replacement after long "elseif" body} { +} -match glob -cleanup { + unset a msg +} -result {1 * {*"if 3>4 {set a 1} elseif {1>}"}} +test if-2.5 {TclCompileIfCmd: test jumpFalse instruction replacement after long "elseif" body} -setup { catch {unset i} set a {} +} -body { if 1>2 { set a 1 while {$a != "xxx"} { @@ -275,44 +317,59 @@ test if-2.5 {TclCompileIfCmd: test jumpFalse instruction replacement after long } set a 6 } - set a -} 6 + return $a +} -cleanup { + unset a + unset -nocomplain i +} -result 6 -test if-3.1 {TclCompileIfCmd: "else" clause} { +test if-3.1 {TclCompileIfCmd: "else" clause} -body { set a {} if 3>4 {set a 1} elseif {$a == "foo"} {set a 2} else {set a 3} - set a -} 3 + return $a +} -cleanup { + unset a +} -result 3 # Since "else" is optional, the "elsex" below is treated as a command. # But then there shouldn't be any additional argument words for the "if". -test if-3.2 {TclCompileIfCmd: keyword other than "else"} { +test if-3.2 {TclCompileIfCmd: keyword other than "else"} -setup { set a {} - catch {if 1<2 then {set a 1} elsex {set a 2}} msg - set msg -} {wrong # args: extra words after "else" clause in "if" command} -test if-3.3 {TclCompileIfCmd: missing body after "else"} { +} -body { + if 1<2 then {set a 1} elsex {set a 2} +} -returnCodes error -cleanup { + unset a +} -result {wrong # args: extra words after "else" clause in "if" command} +test if-3.3 {TclCompileIfCmd: missing body after "else"} -setup { set a {} - catch {if 2<1 {set a 1} else} msg - set msg -} {wrong # args: no script following "else" argument} -test if-3.4 {TclCompileIfCmd: error compiling body after "else"} -body { +} -body { + if 2<1 {set a 1} else +} -returnCodes error -cleanup { + unset a +} -result {wrong # args: no script following "else" argument} +test if-3.4 {TclCompileIfCmd: error compiling body after "else"} -setup { set a {} - catch {if 2<1 {set a 1} else {set}} msg +} -body { + catch {if 2<1 {set a 1} else {set}} set ::errorInfo -} -match glob -result {wrong # args: should be "set varName ?newValue?" +} -match glob -cleanup { + unset a +} -result {wrong # args: should be "set varName ?newValue?" while *ing "set"*} -test if-3.5 {TclCompileIfCmd: extra arguments after "else" argument} { +test if-3.5 {TclCompileIfCmd: extra arguments after "else" argument} -setup { set a {} - catch {if 2<1 {set a 1} else {set a 2} or something} msg - set msg -} {wrong # args: extra words after "else" clause in "if" command} +} -body { + if 2<1 {set a 1} else {set a 2} or something +} -returnCodes error -cleanup { + unset a +} -result {wrong # args: extra words after "else" clause in "if" command} # The following test also checks whether contained loops and other # commands are properly relocated because a short jump must be replaced # by a "long distance" one. -test if-3.6 {TclCompileIfCmd: test jumpFalse instruction replacement after long "else" clause} { +test if-3.6 {TclCompileIfCmd: test jumpFalse instruction replacement after long "else" clause} -setup { catch {unset i} set a {} +} -body { if 1>2 { set a 1 while {$a != "xxx"} { @@ -458,132 +515,185 @@ test if-3.6 {TclCompileIfCmd: test jumpFalse instruction replacement after long } set a 9 } - set a -} 9 + return $a +} -cleanup { + unset a + unset -nocomplain i +} -result 9 -test if-4.1 {TclCompileIfCmd: "if" command result} { +test if-4.1 {TclCompileIfCmd: "if" command result} -setup { set a {} +} -body { set a [if 3<4 {set i 27}] - set a -} 27 -test if-4.2 {TclCompileIfCmd: "if" command result} { + return $a +} -cleanup { + unset a + unset -nocomplain i +} -result 27 +test if-4.2 {TclCompileIfCmd: "if" command result} -setup { set a {} +} -body { set a [if 3>4 {set i 27}] - set a -} {} -test if-4.3 {TclCompileIfCmd: "if" command result} { + return $a +} -cleanup { + unset a + unset -nocomplain i +} -result {} +test if-4.3 {TclCompileIfCmd: "if" command result} -setup { set a {} +} -body { set a [if 0 {set i 1} elseif 1 {set i 2}] - set a -} 2 -test if-4.4 {TclCompileIfCmd: "if" command result} { + return $a +} -cleanup { + unset a + unset -nocomplain i +} -result 2 +test if-4.4 {TclCompileIfCmd: "if" command result} -setup { set a {} +} -body { set a [if 0 {set i 1} elseif 0 {set i 2} elseif 2>5 {set i 3} else {set i 4}] - set a -} 4 -test if-4.5 {TclCompileIfCmd: return value} { + return $a +} -cleanup { + unset a i +} -result 4 +test if-4.5 {TclCompileIfCmd: return value} -body { if 0 then {set a 22; concat abc} elseif 1 {concat def} {concat ghi} -} def +} -cleanup { + unset -nocomplain a +} -result def # Check "if" and computed command names. -catch {unset a} -test if-5.1 {if cmd with computed command names: missing if/elseif test} { +test if-5.1 {if cmd with computed command names: missing if/elseif test} -body { set z if - list [catch {$z} msg] $msg -} {1 {wrong # args: no expression after "if" argument}} - -test if-5.2 {if cmd with computed command names: error in if/elseif test} { + $z +} -returnCodes error -cleanup { + unset z +} -result {wrong # args: no expression after "if" argument} +test if-5.2 {if cmd with computed command names: error in if/elseif test} -body { set z if - list [catch {$z {[error "error in condition"]} foo} msg] $msg -} {1 {error in condition}} + $z {[error "error in condition"]} foo +} -returnCodes error -cleanup { + unset z +} -result {error in condition} test if-5.3 {if cmd with computed command names: error in if/elseif test} -body { set z if - list [catch {$z {1+}} msg] $msg $::errorInfo -} -match glob -result {1 * {*"$z {1+}"}} -test if-5.4 {if cmd with computed command names: if/elseif test in braces} { - set z if + list [catch {$z {1+}}] $::errorInfo +} -match glob -cleanup { + unset z +} -result {1 {*"$z {1+}"}} +test if-5.4 {if cmd with computed command names: if/elseif test in braces} -setup { set a {} - $z {1<2} {set a 1} - set a -} {1} -test if-5.5 {if cmd with computed command names: if/elseif test not in braces} { +} -body { set z if + $z {1<2} {set a 1} + return $a +} -cleanup { + unset a z +} -result {1} +test if-5.5 {if cmd with computed command names: if/elseif test not in braces} -setup { set a {} +} -body { + set z if $z 1<2 {set a 1} - set a -} {1} -test if-5.6 {if cmd with computed command names: multiline test expr} { + return $a +} -cleanup { + unset a z +} -result {1} +test if-5.6 {if cmd with computed command names: multiline test expr} -body { set z if - set a {} $z {($tcl_platform(platform) != "foobar1") && \ ($tcl_platform(platform) != "foobar2")} {set a 3} else {set a 4} - set a -} 3 -test if-5.7 {if cmd with computed command names: "then" after if/elseif test} { - set z if + return $a +} -cleanup { + unset a z +} -result 3 +test if-5.7 {if cmd with computed command names: "then" after if/elseif test} -setup { set a {} - $z 4>3 then {set a 1} - set a -} {1} -test if-5.8 {if cmd with computed command names: keyword other than "then" after if/elseif test} { +} -body { set z if + $z 4>3 then {set a 1} + return $a +} -cleanup { + unset a z +} -result {1} +test if-5.8 {if cmd with computed command names: keyword other than "then" after if/elseif test} -setup { set a {} - catch {$z 1<2 therefore {set a 1}} msg - set msg -} {invalid command name "therefore"} -test if-5.9 {if cmd with computed command names: missing "then" body} { +} -body { set z if + $z 1<2 therefore {set a 1} +} -returnCodes error -cleanup { + unset a z +} -result {invalid command name "therefore"} +test if-5.9 {if cmd with computed command names: missing "then" body} -setup { set a {} - catch {$z 1<2 then} msg - set msg -} {wrong # args: no script following "then" argument} +} -body { + set z if + $z 1<2 then +} -returnCodes error -cleanup { + unset a z +} -result {wrong # args: no script following "then" argument} test if-5.10 {if cmd with computed command names: error in "then" body} -body { set z if set a {} list [catch {$z {$a!="xxx"} then {set}} msg] $msg $::errorInfo -} -match glob -result {1 {wrong # args: should be "set varName ?newValue?"} {wrong # args: should be "set varName ?newValue?" +} -match glob -cleanup { + unset a z msg +} -result {1 {wrong # args: should be "set varName ?newValue?"} {wrong # args: should be "set varName ?newValue?" while *ing "set" invoked from within "$z {$a!="xxx"} then {set}"}} -test if-5.11 {if cmd with computed command names: error in "then" body} { - set z if - list [catch {$z 2 then {[error "error in then clause"]}} msg] $msg -} {1 {error in then clause}} -test if-5.12 {if cmd with computed command names: "then" body in quotes} { +test if-5.11 {if cmd with computed command names: error in "then" body} -body { set z if + $z 2 then {[error "error in then clause"]} +} -returnCodes error -cleanup { + unset z +} -result {error in then clause} +test if-5.12 {if cmd with computed command names: "then" body in quotes} -setup { set a {} - $z 27>17 "append a x" - set a -} {x} -test if-5.13 {if cmd with computed command names: computed "then" body} { +} -body { set z if + $z 27>17 "append a x" + return $a +} -cleanup { + unset a z +} -result {x} +test if-5.13 {if cmd with computed command names: computed "then" body} -setup { catch {unset x1} catch {unset x2} - set a {} +} -body { + set z if set x1 {append a x1} set x2 {; append a x2} set a {} $z 1 $x1$x2 - set a -} {x1x2} -test if-5.14 {if cmd with computed command names: taking proper branch} { - set z if + return $a +} -cleanup { + unset a z x1 x2 +} -result {x1x2} +test if-5.14 {if cmd with computed command names: taking proper branch} -setup { set a {} - $z 1<2 {set a 1} - set a -} 1 -test if-5.15 {if cmd with computed command names: taking proper branch} { +} -body { set z if + $z 1<2 {set a 1} + return $a +} -cleanup { + unset a z +} -result 1 +test if-5.15 {if cmd with computed command names: taking proper branch} -body { set a {} - $z 1>2 {set a 1} - set a -} {} -test if-5.16 {if cmd with computed command names: test jumpFalse instruction replacement after long "then" body} { set z if + $z 1>2 {set a 1} + return $a +} -cleanup { + unset a z +} -result {} +test if-5.16 {if cmd with computed command names: test jumpFalse instruction replacement after long "then" body} -setup { catch {unset i} set a {} +} -body { + set z if $z 1<2 { set a 1 while {$a != "xxx"} { @@ -633,44 +743,60 @@ test if-5.16 {if cmd with computed command names: test jumpFalse instruction rep } set a 3 } - set a -} 3 -test if-5.17 {if cmd with computed command names: if/elseif test in quotes} { - set z if + return $a +} -cleanup { + unset a z + unset -nocomplain i +} -result 3 +test if-5.17 {if cmd with computed command names: if/elseif test in quotes} -setup { set a {} - list [catch {$z {"0 < 3"} {set a 1}} msg] $msg -} {1 {expected boolean value but got "0 < 3"}} - - -test if-6.1 {if cmd with computed command names: "elseif" after if/elseif test} { +} -body { set z if + $z {"0 < 3"} {set a 1} +} -returnCodes error -cleanup { + unset a z +} -result {expected boolean value but got "0 < 3"} + +test if-6.1 {if cmd with computed command names: "elseif" after if/elseif test} -setup { set a {} +} -body { + set z if $z 3>4 {set a 1} elseif 1 {set a 2} - set a -} {2} + return $a +} -cleanup { + unset a z +} -result {2} # Since "else" is optional, the "elwood" below is treated as a command. # But then there shouldn't be any additional argument words for the "if". -test if-6.2 {if cmd with computed command names: keyword other than "elseif"} { - set z if +test if-6.2 {if cmd with computed command names: keyword other than "elseif"} -setup { set a {} - catch {$z 1<2 {set a 1} elwood {set a 2}} msg - set msg -} {wrong # args: extra words after "else" clause in "if" command} -test if-6.3 {if cmd with computed command names: missing expression after "elseif"} { +} -body { set z if + $z 1<2 {set a 1} elwood {set a 2} +} -returnCodes error -cleanup { + unset a z +} -result {wrong # args: extra words after "else" clause in "if" command} +test if-6.3 {if cmd with computed command names: missing expression after "elseif"} -setup { set a {} - catch {$z 1<2 {set a 1} elseif} msg - set msg -} {wrong # args: no expression after "elseif" argument} -test if-6.4 {if cmd with computed command names: error in expression after "elseif"} -body { +} -body { set z if + $z 1<2 {set a 1} elseif +} -returnCodes error -cleanup { + unset a z +} -result {wrong # args: no expression after "elseif" argument} +test if-6.4 {if cmd with computed command names: error in expression after "elseif"} -setup { set a {} - list [catch {$z 3>4 {set a 1} elseif {1>}} msg] $msg $::errorInfo -} -match glob -result {1 * {*"$z 3>4 {set a 1} elseif {1>}"}} -test if-6.5 {if cmd with computed command names: test jumpFalse instruction replacement after long "elseif" body} { +} -body { set z if + list [catch {$z 3>4 {set a 1} elseif {1>}}] $::errorInfo +} -match glob -cleanup { + unset a z +} -result {1 {*"$z 3>4 {set a 1} elseif {1>}"}} +test if-6.5 {if cmd with computed command names: test jumpFalse instruction replacement after long "elseif" body} -setup { catch {unset i} set a {} +} -body { + set z if $z 1>2 { set a 1 while {$a != "xxx"} { @@ -768,52 +894,68 @@ test if-6.5 {if cmd with computed command names: test jumpFalse instruction repl } set a 6 } - set a -} 6 + return $a +} -cleanup { + unset a z + unset -nocomplain i +} -result 6 -test if-7.1 {if cmd with computed command names: "else" clause} { - set z if +test if-7.1 {if cmd with computed command names: "else" clause} -setup { set a {} +} -body { + set z if $z 3>4 {set a 1} elseif {$a == "foo"} {set a 2} else {set a 3} - set a -} 3 + return $a +} -cleanup { + unset a z +} -result 3 # Since "else" is optional, the "elsex" below is treated as a command. # But then there shouldn't be any additional argument words for the "if". -test if-7.2 {if cmd with computed command names: keyword other than "else"} { - set z if +test if-7.2 {if cmd with computed command names: keyword other than "else"} -setup { set a {} - catch {$z 1<2 then {set a 1} elsex {set a 2}} msg - set msg -} {wrong # args: extra words after "else" clause in "if" command} -test if-7.3 {if cmd with computed command names: missing body after "else"} { +} -body { set z if + $z 1<2 then {set a 1} elsex {set a 2} +} -returnCodes error -cleanup { + unset a z +} -result {wrong # args: extra words after "else" clause in "if" command} +test if-7.3 {if cmd with computed command names: missing body after "else"} -setup { set a {} - catch {$z 2<1 {set a 1} else} msg - set msg -} {wrong # args: no script following "else" argument} -test if-7.4 {if cmd with computed command names: error compiling body after "else"} -body { +} -body { set z if + $z 2<1 {set a 1} else +} -returnCodes error -cleanup { + unset a z +} -result {wrong # args: no script following "else" argument} +test if-7.4 {if cmd with computed command names: error compiling body after "else"} -setup { set a {} - catch {$z 2<1 {set a 1} else {set}} msg - set ::errorInfo -} -match glob -result {wrong # args: should be "set varName ?newValue?" +} -body { + set z if + catch {$z 2<1 {set a 1} else {set}} + return $::errorInfo +} -match glob -cleanup { + unset a z +} -result {wrong # args: should be "set varName ?newValue?" while *ing "set" invoked from within "$z 2<1 {set a 1} else {set}"} -test if-7.5 {if cmd with computed command names: extra arguments after "else" argument} { - set z if +test if-7.5 {if cmd with computed command names: extra arguments after "else" argument} -setup { set a {} - catch {$z 2<1 {set a 1} else {set a 2} or something} msg - set msg -} {wrong # args: extra words after "else" clause in "if" command} +} -body { + set z if + $z 2<1 {set a 1} else {set a 2} or something +} -returnCodes error -cleanup { + unset a z +} -result {wrong # args: extra words after "else" clause in "if" command} # The following test also checks whether contained loops and other # commands are properly relocated because a short jump must be replaced # by a "long distance" one. -test if-7.6 {if cmd with computed command names: test jumpFalse instruction replacement after long "else" clause} { - set z if +test if-7.6 {if cmd with computed command names: test jumpFalse instruction replacement after long "else" clause} -setup { catch {unset i} set a {} +} -body { + set z if $z 1>2 { set a 1 while {$a != "xxx"} { @@ -959,45 +1101,69 @@ test if-7.6 {if cmd with computed command names: test jumpFalse instruction repl } set a 9 } - set a -} 9 + return $a +} -cleanup { + unset a z + unset -nocomplain i +} -result 9 -test if-8.1 {if cmd with computed command names: "if" command result} { - set z if +test if-8.1 {if cmd with computed command names: "if" command result} -setup { set a {} - set a [$z 3<4 {set i 27}] - set a -} 27 -test if-8.2 {if cmd with computed command names: "if" command result} { +} -body { set z if + set a [$z 3<4 {set i 27}] + return $a +} -cleanup { + unset a z + unset -nocomplain i +} -result 27 +test if-8.2 {if cmd with computed command names: "if" command result} -setup { set a {} - set a [$z 3>4 {set i 27}] - set a -} {} -test if-8.3 {if cmd with computed command names: "if" command result} { +} -body { set z if + set a [$z 3>4 {set i 27}] + return $a +} -cleanup { + unset a z + unset -nocomplain i +} -result {} +test if-8.3 {if cmd with computed command names: "if" command result} -setup { set a {} - set a [$z 0 {set i 1} elseif 1 {set i 2}] - set a -} 2 -test if-8.4 {if cmd with computed command names: "if" command result} { +} -body { set z if + set a [$z 0 {set i 1} elseif 1 {set i 2}] + return $a +} -cleanup { + unset a z + unset -nocomplain i +} -result 2 +test if-8.4 {if cmd with computed command names: "if" command result} -setup { set a {} +} -body { + set z if set a [$z 0 {set i 1} elseif 0 {set i 2} elseif 2>5 {set i 3} else {set i 4}] - set a -} 4 -test if-8.5 {if cmd with computed command names: return value} { + return $a +} -cleanup { + unset a z + unset -nocomplain i +} -result 4 +test if-8.5 {if cmd with computed command names: return value} -body { set z if $z 0 then {set a 22; concat abc} elseif 1 {concat def} {concat ghi} -} def +} -cleanup { + unset z + unset -nocomplain a +} -result def -test if-9.1 {if cmd with namespace qualifiers} { +test if-9.1 {if cmd with namespace qualifiers} -body { ::if {1} {set x 4} -} 4 +} -cleanup { + unset x +} -result 4 # Test for incorrect "double evaluation semantics" -test if-10.1 {delayed substitution of then body} { +test if-10.1 {delayed substitution of then body} -body { set j 0 set if if # this is not compiled @@ -1013,8 +1179,11 @@ test if-10.1 {delayed substitution of then body} { set result } append result [p] -} {00} -test if-10.2 {delayed substitution of elseif expression} { +} -cleanup { + unset j if result + rename p {} +} -result {00} +test if-10.2 {delayed substitution of elseif expression} -body { set j 0 set if if # this is not compiled @@ -1038,8 +1207,11 @@ test if-10.2 {delayed substitution of elseif expression} { set result } append result [p] -} {00} -test if-10.3 {delayed substitution of elseif body} { +} -cleanup { + unset j if result + rename p {} +} -result {00} +test if-10.3 {delayed substitution of elseif body} -body { set j 0 set if if # this is not compiled @@ -1058,22 +1230,29 @@ test if-10.3 {delayed substitution of elseif body} { " } append result [p] -} {00} -test if-10.4 {delayed substitution of else body} { +} -cleanup { + unset j if result + rename p {} +} -result {00} +test if-10.4 {delayed substitution of else body} -body { set j 0 if {[incr j] == 0} { set result badthen } else " set result $j " - set result -} {0} -test if-10.5 {substituted control words} { + return $result +} -cleanup { + unset j result +} -result {0} +test if-10.5 {substituted control words} -body { set then then; proc then {} {return badthen} set else else; proc else {} {return badelse} set elseif elseif; proc elseif {} {return badelseif} list [catch {if 1 $then {if 0 {} $elseif 1 {if 0 {} $else {list ok}}}} a] $a -} {0 ok} +} -cleanup { + unset then else elseif a +} -result {0 ok} test if-10.6 {double invocation of variable traces} -body { set iftracecounter 0 proc iftraceproc {args} { @@ -1090,10 +1269,16 @@ test if-10.6 {double invocation of variable traces} -body { } trace variable iftracevar r [list iftraceproc 10] list [catch {if "$iftracevar + 20" {}} a] $a \ - [catch {if "$iftracevar + 20" {}} b] $b \ - [unset iftracevar iftracecounter] -} -match glob -result {1 {*} 0 {} {}} + [catch {if "$iftracevar + 20" {}} b] $b +} -cleanup { + unset iftracevar iftracecounter a b +} -match glob -result {1 {*} 0 {}} # cleanup ::tcltest::cleanupTests return + +# Local Variables: +# mode: tcl +# fill-column: 78 +# End: -- cgit v0.12 From 7ba094d5c64eb844c4fec27beb598cf43c90b821 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 29 Oct 2009 17:21:17 +0000 Subject: Test hygiene for the ::tmp variable --- tests/apply.test | 6 ++++-- tests/compile.test | 3 ++- tests/proc.test | 3 ++- tests/reg.test | 14 +++++++++----- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/tests/apply.test b/tests/apply.test index 8c12216..4e8eeea 100644 --- a/tests/apply.test +++ b/tests/apply.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: apply.test,v 1.12 2007/12/13 15:26:04 dgp Exp $ +# RCS: @(#) $Id: apply.test,v 1.12.2.1 2009/10/29 17:21:17 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.2 @@ -277,7 +277,7 @@ test apply-9.1 {leaking internal rep} -setup { set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} - unset lam + unset -nocomplain lam end i tmp leakedBytes } -result 0 test apply-9.2 {leaking internal rep} -setup { proc getbytes {} { @@ -294,6 +294,7 @@ test apply-9.2 {leaking internal rep} -setup { set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} + unset -nocomplain end i tmp leakedBytes } -result 0 test apply-9.3 {leaking internal rep} -setup { proc getbytes {} { @@ -312,6 +313,7 @@ test apply-9.3 {leaking internal rep} -setup { set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} + unset -nocomplain end i x tmp leakedBytes } -result 0 # Tests for the avoidance of recompilation diff --git a/tests/compile.test b/tests/compile.test index 6785855..57a1a3c 100644 --- a/tests/compile.test +++ b/tests/compile.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: compile.test,v 1.48.2.1 2008/07/25 20:30:58 andreas_kupries Exp $ +# RCS: @(#) $Id: compile.test,v 1.48.2.2 2009/10/29 17:21:18 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -296,6 +296,7 @@ test compile-12.1 {testing literal leak on interp delete} -setup { set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} + unset -nocomplain end i tmp leakedBytes } -result 0 # Special test for a memory error in a preliminary fix of [Bug 467523]. # It requires executing a helpfile. Presumably the child process is diff --git a/tests/proc.test b/tests/proc.test index bb50979..3ff7b71 100644 --- a/tests/proc.test +++ b/tests/proc.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: proc.test,v 1.19.4.1 2008/08/11 19:02:02 andreas_kupries Exp $ +# RCS: @(#) $Id: proc.test,v 1.19.4.2 2009/10/29 17:21:18 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -322,6 +322,7 @@ test proc-4.8 {TclCreateProc, procbody obj, no leak on multiple iterations} -set set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} + unset -nocomplain end i tmp leakedBytes } -result 0 test proc-5.1 {Bytecompiling noop; test for correct argument substitution} { diff --git a/tests/reg.test b/tests/reg.test index 79eaaa0..4aab459 100644 --- a/tests/reg.test +++ b/tests/reg.test @@ -9,7 +9,7 @@ # # Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. # -# RCS: @(#) $Id: reg.test,v 1.25 2008/03/19 13:39:28 dkf Exp $ +# RCS: @(#) $Id: reg.test,v 1.25.2.1 2009/10/29 17:21:18 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1050,13 +1050,17 @@ test reg-33.8 {Bug 505048} { test reg-33.9 {Bug 505048} { regexp -indices -inline {\A\s*[^b]*b} ab } {{0 1}} -test reg-33.10 {Bug 840258} { +test reg-33.10 {Bug 840258} -body { regsub {(^|\n)+\.*b} \n.b {} tmp -} 1 -test reg-33.11 {Bug 840258} { +} -cleanup { + unset tmp +} -result 1 +test reg-33.11 {Bug 840258} -body { regsub {(^|[\n\r]+)\.*\?<.*?(\n|\r)+} \ "TQ\r\n.?<5000267>Test already stopped\r\n" {} tmp -} 1 +} -cleanup { + unset tmp +} -result 1 test reg-33.12 {Bug 1810264 - bad read} { regexp {\3161573148} {\3161573148} } 0 -- cgit v0.12 From 4c88e5710e2844b84cd5893e41bc3d369c37d65c Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 29 Oct 2009 17:21:48 +0000 Subject: test hygiene for the ::tmp variable --- tests/apply.test | 6 ++++-- tests/compile.test | 3 ++- tests/proc.test | 3 ++- tests/reg.test | 14 +++++++++----- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/tests/apply.test b/tests/apply.test index 95f4fd8..809fdbe 100644 --- a/tests/apply.test +++ b/tests/apply.test @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: apply.test,v 1.13 2008/07/19 22:50:39 nijtmans Exp $ +# RCS: @(#) $Id: apply.test,v 1.14 2009/10/29 17:21:48 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.2 @@ -277,7 +277,7 @@ test apply-9.1 {leaking internal rep} -setup { set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} - unset lam + unset -nocomplain lam end i tmp leakedBytes } -result 0 test apply-9.2 {leaking internal rep} -setup { proc getbytes {} { @@ -294,6 +294,7 @@ test apply-9.2 {leaking internal rep} -setup { set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} + unset -nocomplain end i tmp leakedBytes } -result 0 test apply-9.3 {leaking internal rep} -setup { proc getbytes {} { @@ -312,6 +313,7 @@ test apply-9.3 {leaking internal rep} -setup { set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} + unset -nocomplain end i x tmp leakedBytes } -result 0 # Tests for the avoidance of recompilation diff --git a/tests/compile.test b/tests/compile.test index 557b3b5..d9567cc 100644 --- a/tests/compile.test +++ b/tests/compile.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: compile.test,v 1.50 2008/11/17 22:37:36 ferrieux Exp $ +# RCS: @(#) $Id: compile.test,v 1.51 2009/10/29 17:21:48 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -296,6 +296,7 @@ test compile-12.1 {testing literal leak on interp delete} -setup { set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} + unset -nocomplain end i tmp leakedBytes } -result 0 # Special test for a memory error in a preliminary fix of [Bug 467523]. # It requires executing a helpfile. Presumably the child process is diff --git a/tests/proc.test b/tests/proc.test index 6ef6811..789c671 100644 --- a/tests/proc.test +++ b/tests/proc.test @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: proc.test,v 1.20 2008/08/11 20:40:41 andreas_kupries Exp $ +# RCS: @(#) $Id: proc.test,v 1.21 2009/10/29 17:21:48 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -322,6 +322,7 @@ test proc-4.8 {TclCreateProc, procbody obj, no leak on multiple iterations} -set set leakedBytes [expr {$end - $tmp}] } -cleanup { rename getbytes {} + unset -nocomplain end i tmp leakedBytes } -result 0 test proc-5.1 {Bytecompiling noop; test for correct argument substitution} { diff --git a/tests/reg.test b/tests/reg.test index 79eaaa0..46b5e64 100644 --- a/tests/reg.test +++ b/tests/reg.test @@ -9,7 +9,7 @@ # # Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. # -# RCS: @(#) $Id: reg.test,v 1.25 2008/03/19 13:39:28 dkf Exp $ +# RCS: @(#) $Id: reg.test,v 1.26 2009/10/29 17:21:48 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -1050,13 +1050,17 @@ test reg-33.8 {Bug 505048} { test reg-33.9 {Bug 505048} { regexp -indices -inline {\A\s*[^b]*b} ab } {{0 1}} -test reg-33.10 {Bug 840258} { +test reg-33.10 {Bug 840258} -body { regsub {(^|\n)+\.*b} \n.b {} tmp -} 1 -test reg-33.11 {Bug 840258} { +} -cleanup { + unset tmp +} -result 1 +test reg-33.11 {Bug 840258} -body { regsub {(^|[\n\r]+)\.*\?<.*?(\n|\r)+} \ "TQ\r\n.?<5000267>Test already stopped\r\n" {} tmp -} 1 +} -cleanup { + unset tmp +} -result 1 test reg-33.12 {Bug 1810264 - bad read} { regexp {\3161573148} {\3161573148} } 0 -- cgit v0.12 From efa238ed7afcfce380fc18e6c869836f3f451bf9 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 29 Oct 2009 18:34:59 +0000 Subject: * generic/tcl.h: Changed the typedef for the mp_digit type from: typedef unsigned long mp_digit; to: typedef unsigned int mp_digit; For 32-bit builds where "long" and "int" are two names for the same thing, this is no change at all. For 64-bit builds, though, this causes the dp[] array of an mp_int to be made up of 32-bit elements instead of 64-bit elements. This is a huge improvement because details elsewhere in the mp_int implementation cause only 28 bits of each element to be actually used storing number data. Without this change bignums are over 50% wasted space on 64-bit systems. [Bug 2800740]. ***POTENTIAL INCOMPATIBILITY*** For 64-bit builds, callers of routines with (mp_digit) or (mp_digit *) arguments *will*, and callers of routines with (mp_int *) arguments *may* suffer both binary and stubs incompatibilities with Tcl releases 8.5.0 - 8.5.7. Such possibilities should be checked, and if such incompatibilities are present, suitable [package require] requirements on the Tcl release should be put in place to keep such built code [load]-ing only in Tcl interps that are compatible. --- ChangeLog | 24 ++++++++++++++++++++++++ generic/tcl.h | 8 ++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index e3bfe24..7541880 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2009-10-29 Don Porter + + * generic/tcl.h: Changed the typedef for the mp_digit type + from: + typedef unsigned long mp_digit; + to: + typedef unsigned int mp_digit; + For 32-bit builds where "long" and "int" are two names for the same + thing, this is no change at all. For 64-bit builds, though, this + causes the dp[] array of an mp_int to be made up of 32-bit elements + instead of 64-bit elements. This is a huge improvement because details + elsewhere in the mp_int implementation cause only 28 bits of each + element to be actually used storing number data. Without this change + bignums are over 50% wasted space on 64-bit systems. [Bug 2800740]. + + ***POTENTIAL INCOMPATIBILITY*** + For 64-bit builds, callers of routines with (mp_digit) or (mp_digit *) + arguments *will*, and callers of routines with (mp_int *) arguments + *may* suffer both binary and stubs incompatibilities with Tcl releases + 8.5.0 - 8.5.7. Such possibilities should be checked, and if such + incompatibilities are present, suitable [package require] requirements + on the Tcl release should be put in place to keep such built code + [load]-ing only in Tcl interps that are compatible. + 2009-10-29 Kevin B. Kenny * library/clock.tcl (LocalizeFormat): diff --git a/generic/tcl.h b/generic/tcl.h index ad3021e..87eebf8 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.254.2.11 2009/04/29 15:47:05 patthoyts Exp $ + * RCS: @(#) $Id: tcl.h,v 1.254.2.12 2009/10/29 18:34:59 dgp Exp $ */ #ifndef _TCL @@ -2179,14 +2179,10 @@ typedef void (Tcl_LimitHandlerProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp)); typedef void (Tcl_LimitHandlerDeleteProc) _ANSI_ARGS_((ClientData clientData)); -#ifndef MP_INT_DECLARED typedef struct mp_int mp_int; #define MP_INT_DECLARED -#endif -#ifndef MP_DIGIT_DECLARED -typedef unsigned long mp_digit; +typedef unsigned int mp_digit; #define MP_DIGIT_DECLARED -#endif /* * The following constant is used to test for older versions of Tcl in the -- cgit v0.12 From a0ea6b9acaf35b4c2dd743bf83c74bc0209efff1 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 29 Oct 2009 18:38:08 +0000 Subject: * generic/tcl.h: Changed the typedef for the mp_digit type from: typedef unsigned long mp_digit; to: typedef unsigned int mp_digit; For 32-bit builds where "long" and "int" are two names for the same thing, this is no change at all. For 64-bit builds, though, this causes the dp[] array of an mp_int to be made up of 32-bit elements instead of 64-bit elements. This is a huge improvement because details elsewhere in the mp_int implementation cause only 28 bits of each element to be actually used storing number data. Without this change bignums are over 50% wasted space on 64-bit systems. [Bug 2800740]. ***POTENTIAL INCOMPATIBILITY*** For 64-bit builds, callers of routines with (mp_digit) or (mp_digit *) arguments *will*, and callers of routines with (mp_int *) arguments *may* suffer both binary and stubs incompatibilities with Tcl releases 8.5.0 - 8.5.7. Such possibilities should be checked, and if such incompatibilities are present, suitable [package require] requirements on the Tcl release should be put in place to keep such built code [load]-ing only in Tcl interps that are compatible. --- ChangeLog | 24 ++++++++++++++++++++++++ generic/tcl.h | 8 ++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index d658232..b4b29d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2009-10-29 Don Porter + + * generic/tcl.h: Changed the typedef for the mp_digit type + from: + typedef unsigned long mp_digit; + to: + typedef unsigned int mp_digit; + For 32-bit builds where "long" and "int" are two names for the same + thing, this is no change at all. For 64-bit builds, though, this + causes the dp[] array of an mp_int to be made up of 32-bit elements + instead of 64-bit elements. This is a huge improvement because details + elsewhere in the mp_int implementation cause only 28 bits of each + element to be actually used storing number data. Without this change + bignums are over 50% wasted space on 64-bit systems. [Bug 2800740]. + + ***POTENTIAL INCOMPATIBILITY*** + For 64-bit builds, callers of routines with (mp_digit) or (mp_digit *) + arguments *will*, and callers of routines with (mp_int *) arguments + *may* suffer both binary and stubs incompatibilities with Tcl releases + 8.5.0 - 8.5.7. Such possibilities should be checked, and if such + incompatibilities are present, suitable [package require] requirements + on the Tcl release should be put in place to keep such built code + [load]-ing only in Tcl interps that are compatible. + 2009-10-29 Donal K. Fellows * tests/dict.test: Make variable-clean and simplify tests by utilizing diff --git a/generic/tcl.h b/generic/tcl.h index a57d683..756015d 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.291 2009/04/29 15:24:20 patthoyts Exp $ + * RCS: @(#) $Id: tcl.h,v 1.292 2009/10/29 18:38:08 dgp Exp $ */ #ifndef _TCL @@ -2186,14 +2186,10 @@ typedef struct Tcl_Config { typedef void (Tcl_LimitHandlerProc) (ClientData clientData, Tcl_Interp *interp); typedef void (Tcl_LimitHandlerDeleteProc) (ClientData clientData); -#ifndef MP_INT_DECLARED typedef struct mp_int mp_int; #define MP_INT_DECLARED -#endif -#ifndef MP_DIGIT_DECLARED -typedef unsigned long mp_digit; +typedef unsigned int mp_digit; #define MP_DIGIT_DECLARED -#endif /* *---------------------------------------------------------------------------- -- cgit v0.12 From 65015eda554d17cf58f79746f53b203e10bc77a2 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 29 Oct 2009 22:20:12 +0000 Subject: More variable cleansing --- tests/info.test | 369 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 189 insertions(+), 180 deletions(-) diff --git a/tests/info.test b/tests/info.test index f983a0c..7e89d8e 100644 --- a/tests/info.test +++ b/tests/info.test @@ -13,9 +13,9 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: info.test,v 1.68 2009/10/28 21:03:19 dgp Exp $ +# RCS: @(#) $Id: info.test,v 1.69 2009/10/29 22:20:12 dkf Exp $ -if {[lsearch [namespace children] ::tcltest] == -1} { +if {{::tcltest} ni [namespace children]} { package require tcltest 2 namespace import -force ::tcltest::* } @@ -84,7 +84,7 @@ test info-2.4 {info body option} { # would return the bytecompiled version of foo, which the catch # would then try and eval out of the foo context, accessing # compiled local indices -test info-2.5 {info body option, returning bytecompiled bodies} { +test info-2.5 {info body option, returning bytecompiled bodies} -body { catch {unset args} proc foo {args} { foreach v $args { @@ -93,8 +93,8 @@ test info-2.5 {info body option, returning bytecompiled bodies} { } } foo a - list [catch [info body foo] msg] $msg -} {1 {can't read "args": no such variable}} + eval [info body foo] +} -returnCodes error -result {can't read "args": no such variable} # Fix for problem tested for in info-2.5 caused problems when # procedure body had no string rep (i.e. was not yet bytecode) # causing an empty string to be returned [Bug #545644] @@ -108,35 +108,35 @@ proc testinfocmdcount {} { set x [info cmdcount] set y 12345 set z [info cm] - expr $z-$x + expr {$z-$x} } test info-3.1 {info cmdcount compiled} { testinfocmdcount } 4 -test info-3.2 {info cmdcount evaled} { +test info-3.2 {info cmdcount evaled} -body { set x [info cmdcount] set y 12345 set z [info cm] - expr $z-$x -} 4 -test info-3.3 {info cmdcount evaled} [info body testinfocmdcount] 4 + expr {$z-$x} +} -cleanup {unset x y z} -result 4 +test info-3.3 {info cmdcount evaled} -body [info body testinfocmdcount] -cleanup {unset x y z} -result 4 test info-3.4 {info cmdcount option} -body { info cmdcount 1 } -returnCodes error -result {wrong # args: should be "info cmdcount"} -test info-4.1 {info commands option} { +test info-4.1 {info commands option} -body { proc t1 {} {} proc t2 {} {} set x " [info commands] " list [string match {* t1 *} $x] [string match {* t2 *} $x] \ [string match {* set *} $x] [string match {* list *} $x] -} {1 1 1 1} -test info-4.2 {info commands option} { +} -cleanup {unset x} -result {1 1 1 1} +test info-4.2 {info commands option} -body { proc t1 {} {} rename t1 {} - set x [info comm] - string match {* t1 *} $x -} 0 + string match {* t1 *} \ + [info comm] +} -result 0 test info-4.3 {info commands option} { proc _t1_ {} {} proc _t2_ {} {} @@ -177,28 +177,28 @@ test info-6.1 {info default option} { proc t1 {a b {c d} {e "long default value"}} {} info default t1 a value } 0 -test info-6.2 {info default option} { +test info-6.2 {info default option} -body { proc t1 {a b {c d} {e "long default value"}} {} set value 12345 info d t1 a value - set value -} {} -test info-6.3 {info default option} { + return $value +} -cleanup {unset value} -result {} +test info-6.3 {info default option} -body { proc t1 {a b {c d} {e "long default value"}} {} info default t1 c value -} 1 -test info-6.4 {info default option} { +} -cleanup {unset value} -result 1 +test info-6.4 {info default option} -body { proc t1 {a b {c d} {e "long default value"}} {} set value 12345 info default t1 c value - set value -} d -test info-6.5 {info default option} { + return $value +} -cleanup {unset value} -result d +test info-6.5 {info default option} -body { proc t1 {a b {c d} {e "long default value"}} {} set value 12345 set x [info default t1 e value] list $x $value -} {1 {long default value}} +} -cleanup {unset x value} -result {1 {long default value}} test info-6.6 {info default option} -returnCodes error -body { info default a b } -result {wrong # args: should be "info default procname arg varname"} @@ -211,14 +211,14 @@ test info-6.8 {info default option} -returnCodes error -body { } -result {procedure "t1" doesn't have an argument "x"} test info-6.9 {info default option} -returnCodes error -setup { catch {unset a} -} -body { +} -cleanup {unset a} -body { set a(0) 88 proc t1 {a b} {} info default t1 a a } -returnCodes error -result {couldn't store default value in variable "a"} test info-6.10 {info default option} -setup { catch {unset a} -} -body { +} -cleanup {unset a} -body { set a(0) 88 proc t1 {{a 18} b} {} info default t1 a a @@ -230,27 +230,27 @@ test info-6.11 {info default option} { list [info default p x foo] $foo [info default q y bar] $bar } } {0 {} 1 27} -catch {unset a} -test info-7.1 {info exists option} { + +test info-7.1 {info exists option} -body { set value foo info exists value -} 1 -catch {unset _nonexistent_} -test info-7.2 {info exists option} { +} -cleanup {unset value} -result 1 + +test info-7.2 {info exists option} -setup {catch {unset _nonexistent_}} -body { info exists _nonexistent_ -} 0 +} -result 0 test info-7.3 {info exists option} { proc t1 {x} {return [info exists x]} t1 2 } 1 -test info-7.4 {info exists option} { +test info-7.4 {info exists option} -body { proc t1 {x} { global _nonexistent_ return [info exists _nonexistent_] } t1 2 -} 0 +} -setup {unset -nocomplain _nonexistent_} -result 0 test info-7.5 {info exists option} { proc t1 {x} { set y 47 @@ -276,29 +276,29 @@ test info-7.9 {info exists option} -body { info exists 1 2 } -returnCodes error -result {wrong # args: should be "info exists varName"} -test info-8.1 {info globals option} { +test info-8.1 {info globals option} -body { set x 1 set y 2 set value 23 set a " [info globals] " list [string match {* x *} $a] [string match {* y *} $a] \ [string match {* value *} $a] [string match {* _foobar_ *} $a] -} {1 1 1 0} -test info-8.2 {info globals option} { +} -cleanup {unset x y value a} -result {1 1 1 0} +test info-8.2 {info globals option} -body { set _xxx1 1 set _xxx2 2 lsort [info g _xxx*] -} {_xxx1 _xxx2} +} -cleanup {unset _xxx1 _xxx2} -result {_xxx1 _xxx2} test info-8.3 {info globals option} -returnCodes error -body { info globals 1 2 } -result {wrong # args: should be "info globals ?pattern?"} -test info-8.4 {info globals option: may have leading namespace qualifiers} { +test info-8.4 {info globals option: may have leading namespace qualifiers} -body { set x 0 list [info globals x] [info globals :x] [info globals ::x] [info globals :::x] [info globals ::::x] -} {x {} x x x} +} -cleanup {unset x} -result {x {} x x x} test info-8.5 {info globals option: only return existing global variables} { -setup { - catch {unset ::NO_SUCH_VAR} + unset -nocomplain ::NO_SUCH_VAR proc evalInProc script {eval $script} } -body { @@ -356,11 +356,11 @@ test info-9.9 {info level option} -body { proc t1 {x} {info level $x} t1 -3 } -returnCodes error -result {bad level "-3"} -test info-9.10 {info level option, namespaces} { - set msg [namespace eval t {info level 0}] +test info-9.10 {info level option, namespaces} -body { + namespace eval t {info level 0} +} -cleanup { namespace delete t - set msg -} {namespace eval t {info level 0}} +} -result {namespace eval t {info level 0}} test info-9.11 {info level option, aliases} -constraints knownBug -setup { proc w {x y z} {info level 0} interp alias {} a {} w a b @@ -392,16 +392,16 @@ test info-10.3 {info library option} -body { unset tcl_library info library } -returnCodes error -result {no library has been specified for Tcl} -set tcl_library $savedLibrary +set tcl_library $savedLibrary; unset savedLibrary test info-11.1 {info loaded option} -body { info loaded a b } -returnCodes error -result {wrong # args: should be "info loaded ?interp?"} -test info-11.2 {info loaded option} { - list [catch {info loaded {}}] [catch {info loaded gorp} msg] $msg -} {0 1 {could not find interpreter "gorp"}} +test info-11.2 {info loaded option} -body { + info loaded {}; info loaded gorp +} -returnCodes error -result {could not find interpreter "gorp"} -test info-12.1 {info locals option} { +test info-12.1 {info locals option} -body { set a 22 proc t1 {x y} { set b 13 @@ -412,7 +412,7 @@ test info-12.1 {info locals option} { return [info locals] } lsort [t1 23 24] -} {b c x y} +} -cleanup {unset a aa} -result {b c x y} test info-12.2 {info locals option} { proc t1 {x y} { set xx1 2 @@ -452,10 +452,10 @@ test info-13.1 {info nameofexecutable option} -returnCodes error -body { info nameofexecutable foo } -result {wrong # args: should be "info nameofexecutable"} -test info-14.1 {info patchlevel option} { +test info-14.1 {info patchlevel option} -body { set a [info patchlevel] regexp {[0-9]+\.[0-9]+([p[0-9]+)?} $a -} 1 +} -cleanup {unset a} -result 1 test info-14.2 {info patchlevel option} -returnCodes error -body { info patchlevel a } -result {wrong # args: should be "info patchlevel"} @@ -465,16 +465,16 @@ test info-14.3 {info patchlevel option} -setup { unset tcl_patchLevel info patchlevel } -cleanup { - set tcl_patchLevel $t + set tcl_patchLevel $t; unset t } -returnCodes error -result {can't read "tcl_patchLevel": no such variable} -test info-15.1 {info procs option} { +test info-15.1 {info procs option} -body { proc t1 {} {} proc t2 {} {} set x " [info procs] " list [string match {* t1 *} $x] [string match {* t2 *} $x] \ [string match {* _undefined_ *} $x] -} {1 1 0} +} -cleanup {unset x} -result {1 1 0} test info-15.2 {info procs option} { proc _tt1 {} {} proc _tt2 {} {} @@ -573,32 +573,32 @@ test info-16.5 {resetting "info script" after errors} { catch {source _nonexistent_} file tail [info script] } "info.test" -test info-16.6 {info script option} { +test info-16.6 {info script option} -body { set script [info script] list [file tail [info script]] \ [info script newname.txt] \ [file tail [info script $script]] -} [list info.test newname.txt info.test] -test info-16.7 {info script option} { +} -result [list info.test newname.txt info.test] -cleanup {unset script} +test info-16.7 {info script option} -body { set script [info script] info script newname.txt list [source $gorpfile] [file tail [info script]] \ [file tail [info script $script]] -} [list $gorpfile newname.txt info.test] +} -result [list $gorpfile newname.txt info.test] -cleanup {unset script} removeFile gorp.info set gorpfile [makeFile {list [info script] [info script foo.bar]} gorp.info] test info-16.8 {info script option} { list [source $gorpfile] [file tail [info script]] } [list [list $gorpfile foo.bar] info.test] -removeFile gorp.info +removeFile gorp.info; unset gorpfile test info-17.1 {info sharedlibextension option} -returnCodes error -body { info sharedlibextension foo } -result {wrong # args: should be "info sharedlibextension"} -test info-18.1 {info tclversion option} { +test info-18.1 {info tclversion option} -body { scan [info tclversion] "%d.%d%c" a b c -} 2 +} -cleanup {unset -nocomplain a b c} -result 2 test info-18.2 {info tclversion option} -body { info t 2 } -returnCodes error -result {wrong # args: should be "info tclversion"} @@ -608,10 +608,10 @@ test info-18.3 {info tclversion option} -body { } -returnCodes error -setup { set t $tcl_version } -cleanup { - set tcl_version $t + set tcl_version $t; unset t } -result {can't read "tcl_version": no such variable} -test info-19.1 {info vars option} { +test info-19.1 {info vars option} -body { set a 1 set b 2 proc t1 {x y} { @@ -620,8 +620,8 @@ test info-19.1 {info vars option} { return [info vars] } lsort [t1 18 19] -} {a b c x y} -test info-19.2 {info vars option} { +} -cleanup {unset a b} -result {a b c x y} +test info-19.2 {info vars option} -body { set xxx1 1 set xxx2 2 proc t1 {xxa y} { @@ -630,7 +630,7 @@ test info-19.2 {info vars option} { return [info vars x*] } lsort [t1 18 19] -} {xxa xxx1 xxx2} +} -cleanup {unset xxx1 xxx2} -result {xxa xxx1 xxx2} test info-19.3 {info vars option} { lsort [info vars] } [lsort [info globals]] @@ -669,6 +669,7 @@ test info-20.4 {info functions option} { test info-20.5 {info functions option} -returnCodes error -body { info functions raise an error } -result {wrong # args: should be "info functions ?pattern?"} +unset functions msg test info-21.1 {miscellaneous error conditions} -returnCodes error -body { info @@ -691,12 +692,11 @@ test info-21.5 {miscellaneous error conditions} -returnCodes error -body { ## info frame ## Helper -# For the more complex results we cut the file name down to remove -# path dependencies, and we use only part of the first line of the -# reported command. The latter is required because otherwise the whole -# test case may appear in some results, but the result is part of the -# testcase. An infinite string would be required to describe that. The -# cutting-down breaks this. +# For the more complex results we cut the file name down to remove path +# dependencies, and we use only part of the first line of the reported +# command. The latter is required because otherwise the whole test case may +# appear in some results, but the result is part of the testcase. An infinite +# string would be required to describe that. The cutting-down breaks this. proc reduce {frame} { set pos [lsearch -exact $frame cmd] @@ -751,7 +751,7 @@ test info-22.3 {info frame, current, relative} -match glob -body { } -result {type source line 750 file */info.test cmd {info frame 0} proc ::tcltest::RunTest} test info-22.4 {info frame, current, relative, nested} -match glob -body { set res [info frame 0] -} -result {type source line 753 file */info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type source line 753 file */info.test cmd {info frame 0} proc ::tcltest::RunTest} -cleanup {unset res} test info-22.5 {info frame, current, absolute} -constraints {!singleTestInterp} -match glob -body { reduce [info frame 7] } -result {type source line 756 file info.test cmd {info frame 7} proc ::tcltest::RunTest} @@ -766,7 +766,7 @@ test info-22.8 {info frame, basic trace} -match glob -body { } -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} * {type source line 765 file info.test cmd etrace proc ::tcltest::RunTest} * {type source line * file tcltest* cmd {uplevel 1 $script} proc ::tcltest::RunTest}} - +unset -nocomplain msg test info-23.0.0 {eval'd info frame} {!singleTestInterp} { eval {info frame} @@ -780,14 +780,14 @@ test info-23.1.0 {eval'd info frame, semi-dynamic} {!singleTestInterp} { test info-23.1.1 {eval'd info frame, semi-dynamic} -constraints {singleTestInterp} -match glob -body { eval info frame } -result {1[12]} -test info-23.2.0 {eval'd info frame, dynamic} {!singleTestInterp} { +test info-23.2.0 {eval'd info frame, dynamic} -constraints {!singleTestInterp} -body { set script {info frame} eval $script -} 8 +} -cleanup {unset script} -result 8 test info-23.2.1 {eval'd info frame, dynamic} -constraints {singleTestInterp} -match glob -body { set script {info frame} eval $script -} -result {1[12]} +} -cleanup {unset script} -result {1[12]} test info-23.3 {eval'd info frame, literal} -match glob -body { eval { info frame 0 @@ -796,11 +796,11 @@ test info-23.3 {eval'd info frame, literal} -match glob -body { test info-23.4 {eval'd info frame, semi-dynamic} { eval info frame 0 } {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} -test info-23.5 {eval'd info frame, dynamic} { +test info-23.5 {eval'd info frame, dynamic} -cleanup {unset script} -body { set script {info frame 0} eval $script -} {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} -test info-23.6 {eval'd info frame, trace} -match glob -body { +} -result {type eval line 1 cmd {info frame 0} proc ::tcltest::RunTest} +test info-23.6 {eval'd info frame, trace} -match glob -cleanup {unset script} -body { set script {etrace} join [lrange [eval $script] 0 2] \n } -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} @@ -852,7 +852,7 @@ while {$flag} { namespace eval foo {} proc ::foo::bar {} {info frame 0} set flag 0 -} +};unset flag test info-24.2 {info frame, interaction, while} -body { reduce [foo::bar] @@ -879,7 +879,7 @@ foreach var val { namespace eval foo {} proc ::foo::bar {} {info frame 0} break -} +}; unset var test info-24.4 {info frame, interaction, foreach} -body { reduce [foo::bar] @@ -959,7 +959,7 @@ test info-24.7 {info frame, interaction, dict for} { reduce [foo::bar] } {type source line 955 file info.test cmd {info frame 0} proc ::foo::bar level 0} -namespace delete foo +namespace delete foo; unset k v # ------------------------------------------------------------------------- @@ -974,7 +974,7 @@ test info-24.8 {info frame, interaction, dict with} { } {type source line 969 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo -unset thedict +unset thedict foo # ------------------------------------------------------------------------- @@ -982,14 +982,14 @@ namespace eval foo {} dict filter {foo bar} script {k v} { proc ::foo::bar {} {info frame 0} set x 1 -} +}; unset k v x test info-24.9 {info frame, interaction, dict filter} { reduce [foo::bar] } {type source line 983 file info.test cmd {info frame 0} proc ::foo::bar level 0} namespace delete foo -unset x +#unset x # ------------------------------------------------------------------------- @@ -1012,19 +1012,19 @@ rename bar {} # ------------------------------------------------------------------------- # More info-30.x test cases at the end of the file. -test info-30.0 {bs+nl in literal words} { +test info-30.0 {bs+nl in literal words} -cleanup {unset res} -body { if {1} { set res \ [reduce [info frame 0]];#1018 } - set res + return $res # This was reporting line 3 instead of the correct 4 because the # bs+nl combination is subst by the parser before the 'if' # command, and the bcc, see the word. Fixed by recording the # offsets of all bs+nl sequences in literal words, then using the # information in the bcc and other places to bump line numbers when # parsing over the location. Also affected: testcases 22.8 and 23.6. -} {type source line 1018 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type source line 1018 file info.test cmd {info frame 0} proc ::tcltest::RunTest} # ------------------------------------------------------------------------- # See 24.0 - 24.5 for similar situations, using literal scripts. @@ -1033,45 +1033,45 @@ set body {set flag 0 set a c set res [info frame 0]} ;# line 3! -test info-31.0 {ns eval, script in variable} { +test info-31.0 {ns eval, script in variable} -body { namespace eval foo $body - set res -} {type eval line 3 cmd {info frame 0} level 0} -catch {namespace delete foo} - -test info-31.1 {if, script in variable} { + return $foo::res +} -result {type eval line 3 cmd {info frame 0} level 0} -cleanup { + catch {namespace delete foo} +} +test info-31.1 {if, script in variable} -cleanup {unset res a flag} -body { if 1 $body - set res -} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + return $res +} -result {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} -test info-31.1a {if, script in variable} { +test info-31.1a {if, script in variable} -cleanup {unset res a flag} -body { if 1 then $body - set res -} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + return $res +} -result {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} -test info-31.2 {while, script in variable} { +test info-31.2 {while, script in variable} -cleanup {unset flag res a} -body { set flag 1 while {$flag} $body - set res -} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + return $res +} -result {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} # .3 - proc - scoping prevent return of result ... -test info-31.4 {foreach, script in variable} { +test info-31.4 {foreach, script in variable} -cleanup {unset var res a flag} -body { foreach var val $body set res -} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} +} -result {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} -test info-31.5 {for, script in variable} { +test info-31.5 {for, script in variable} -cleanup {unset flag res a} -body { set flag 1 for {} {$flag} {} $body - set res -} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + return $res +} -result {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} -test info-31.6 {eval, script in variable} { +test info-31.6 {eval, script in variable} -cleanup {unset res a flag} -body { eval $body - set res -} {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} + return $res +} -result {type eval line 3 cmd {info frame 0} proc ::tcltest::RunTest} # ------------------------------------------------------------------------- @@ -1083,7 +1083,7 @@ set body { namespace eval foo {} set x foo -switch -exact -- $x $body +switch -exact -- $x $body; unset body test info-31.7 {info frame, interaction, switch, dynamic} -body { reduce [foo::bar] @@ -1317,10 +1317,10 @@ test info-37.0 {eval pure list, single line} -match glob -body { break }] eval $cmd - set res + return $res } -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} * {type eval line 2 cmd etrace proc ::tcltest::RunTest} -* {type eval line 1 cmd foreac proc ::tcltest::RunTest}} +* {type eval line 1 cmd foreac proc ::tcltest::RunTest}} -cleanup {unset foo cmd res b c} # ------------------------------------------------------------------------- @@ -1361,7 +1361,7 @@ test info-38.1 {location information for uplevel, dv, direct-var} -match glob -b join [lrange [uplevel \#0 $script] 0 2] \n } -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} * {type eval line 3 cmd etrace proc ::tcltest::RunTest} -* {type source line 1361 file info.test cmd {uplevel \\#0 $script} proc ::tcltest::RunTest}} +* {type source line 1361 file info.test cmd {uplevel \\#0 $script} proc ::tcltest::RunTest}} -cleanup {unset script y} test info-38.2 {location information for uplevel, dl, direct-literal} -match glob -body { join [lrange [uplevel \#0 { @@ -1370,7 +1370,7 @@ test info-38.2 {location information for uplevel, dl, direct-literal} -match glo }] 0 2] \n } -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} * {type source line 1369 file info.test cmd etrace proc ::tcltest::RunTest} -* {type source line 1367 file info.test cmd uplevel\\ \\\\ proc ::tcltest::RunTest}} +* {type source line 1367 file info.test cmd uplevel\\ \\\\ proc ::tcltest::RunTest}} -cleanup {unset y} test info-38.3 {location information for uplevel, dpv, direct-proc-var} -match glob -body { set script { @@ -1381,7 +1381,7 @@ test info-38.3 {location information for uplevel, dpv, direct-proc-var} -match g } -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} * {type eval line 3 cmd etrace proc ::control} * {type source line 1338 file info.test cmd {uplevel 1 $script} proc ::control} -* {type source line 1380 file info.test cmd {control y $script} proc ::tcltest::RunTest}} +* {type source line 1380 file info.test cmd {control y $script} proc ::tcltest::RunTest}} -cleanup {unset script y} test info-38.4 {location information for uplevel, dpv, direct-proc-literal} -match glob -body { join [lrange [control y { @@ -1391,7 +1391,7 @@ test info-38.4 {location information for uplevel, dpv, direct-proc-literal} -mat } -result {* {type source line 728 file info.test cmd {info frame $level} proc ::etrace level 0} * {type source line 1389 file info.test cmd etrace proc ::control} * {type source line 1338 file info.test cmd {uplevel 1 $script} proc ::control} -* {type source line 1387 file info.test cmd control proc ::tcltest::RunTest}} +* {type source line 1387 file info.test cmd control proc ::tcltest::RunTest}} -cleanup {unset y} test info-38.5 {location information for uplevel, ppv, proc-proc-var} -match glob -body { join [lrange [datav] 0 4] \n @@ -1431,14 +1431,14 @@ test info-39.0 {location information not confused by literal sharing} -body { set res [::foo::bar] namespace delete ::foo join $res \n -} -result { +} -cleanup {unset res} -result { type source line 1427 file info.test cmd {info frame 0} proc ::foo::bar level 0 type source line 1428 file info.test cmd {info frame 0} proc ::foo::bar level 0} # ------------------------------------------------------------------------- # Additional tests for info-30.*, handling of continuation lines (bs+nl sequences). -test info-30.1 {bs+nl in literal words, procedure body, compiled} { +test info-30.1 {bs+nl in literal words, procedure body, compiled} -body { proc abra {} { if {1} \ { @@ -1446,34 +1446,34 @@ test info-30.1 {bs+nl in literal words, procedure body, compiled} { [reduce [info frame 0]];# line 1446 } } - set res [abra] + abra +} -cleanup { rename abra {} - set res -} {type source line 1446 file info.test cmd {info frame 0} proc ::abra level 0} +} -result {type source line 1446 file info.test cmd {info frame 0} proc ::abra level 0} test info-30.2 {bs+nl in literal words, namespace script} { namespace eval xxx { - set res \ + variable res \ [reduce [info frame 0]];# line 1457 } - set res + return $xxx::res } {type source line 1457 file info.test cmd {info frame 0} level 0} test info-30.3 {bs+nl in literal words, namespace multi-word script} { - namespace eval xxx set res \ + namespace eval xxx variable res \ [list [reduce [info frame 0]]];# line 1464 - set res + return $xxx::res } {type source line 1464 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.4 {bs+nl in literal words, eval script} { +test info-30.4 {bs+nl in literal words, eval script} -cleanup {unset res} -body { eval { set ::res \ [reduce [info frame 0]];# line 1471 } - set res -} {type source line 1471 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + return $res +} -result {type source line 1471 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.5 {bs+nl in literal words, eval script, with nested words} { +test info-30.5 {bs+nl in literal words, eval script, with nested words} -body { eval { if {1} \ { @@ -1481,58 +1481,58 @@ test info-30.5 {bs+nl in literal words, eval script, with nested words} { [reduce [info frame 0]];# line 1481 } } - set res -} {type source line 1481 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + return $res +} -cleanup {unset res} -result {type source line 1481 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.6 {bs+nl in computed word} { +test info-30.6 {bs+nl in computed word} -cleanup {unset res} -body { set res "\ [reduce [info frame 0]]";# line 1489 -} { type source line 1489 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -result { type source line 1489 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.7 {bs+nl in computed word, in proc} { +test info-30.7 {bs+nl in computed word, in proc} -body { proc abra {} { return "\ [reduce [info frame 0]]";# line 1495 } - set res [abra] + abra +} -cleanup { rename abra {} - set res -} { type source line 1495 file info.test cmd {info frame 0} proc ::abra level 0} +} -result { type source line 1495 file info.test cmd {info frame 0} proc ::abra level 0} -test info-30.8 {bs+nl in computed word, nested eval} { +test info-30.8 {bs+nl in computed word, nested eval} -body { eval { set \ res "\ [reduce [info frame 0]]";# line 1506 } -} { type source line 1506 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -cleanup {unset res} -result { type source line 1506 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.9 {bs+nl in computed word, nested eval} { +test info-30.9 {bs+nl in computed word, nested eval} -body { eval { set \ res "\ [reduce \ [info frame 0]]";# line 1515 } -} { type source line 1515 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -cleanup {unset res} -result { type source line 1515 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.10 {bs+nl in computed word, key to array} { +test info-30.10 {bs+nl in computed word, key to array} -body { set tmp([set \ res "\ [reduce \ [info frame 0]]"]) x ; #1523 unset tmp set res -} { type source line 1523 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -cleanup {unset res} -result { type source line 1523 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.11 {bs+nl in subst arguments} { +test info-30.11 {bs+nl in subst arguments} -body { subst {[set \ res "\ [reduce \ [info frame 0]]"]} ; #1532 -} { type source line 1532 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -cleanup {unset res} -result { type source line 1532 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.12 {bs+nl in computed word, nested eval} { +test info-30.12 {bs+nl in computed word, nested eval} -body { eval { set \ res "\ @@ -1540,9 +1540,9 @@ test info-30.12 {bs+nl in computed word, nested eval} { [reduce \ [info frame 0]]";# line 1541 } -} { type source line 1541 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +} -cleanup {unset res x} -result { type source line 1541 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.13 {bs+nl in literal words, uplevel script, with nested words} { +test info-30.13 {bs+nl in literal words, uplevel script, with nested words} -body { uplevel #0 { if {1} \ { @@ -1550,8 +1550,8 @@ test info-30.13 {bs+nl in literal words, uplevel script, with nested words} { [reduce [info frame 0]];# line 1550 } } - set res -} {type source line 1550 file info.test cmd {info frame 0} proc ::tcltest::RunTest} + return $res +} -cleanup {unset res} -result {type source line 1550 file info.test cmd {info frame 0} proc ::tcltest::RunTest} test info-30.14 {bs+nl, literal word, uplevel through proc} { proc abra {script} { @@ -1775,52 +1775,60 @@ test info-30.39 {TIP 280 for compiled [subst]} { [format %s {}]\ [reduce [info frame 0]]} ; # 1776 } { type source line 1776 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.40 {TIP 280 for compiled [subst]} { +test info-30.40 {TIP 280 for compiled [subst]} -setup { unset -nocomplain empty +} -body { set empty {} - subst {$empty[reduce [info frame 0]]} ; # 1781 -} {type source line 1781 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.41 {TIP 280 for compiled [subst]} { + subst {$empty[reduce [info frame 0]]} ; # 1782 +} -cleanup { + unset empty +} -result {type source line 1782 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.41 {TIP 280 for compiled [subst]} -setup { unset -nocomplain empty +} -body { set empty {} subst {$empty -[reduce [info frame 0]]} ; # 1787 -} { -type source line 1787 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.42 {TIP 280 for compiled [subst]} { +[reduce [info frame 0]]} ; # 1791 +} -cleanup { + unset empty +} -result { +type source line 1791 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.42 {TIP 280 for compiled [subst]} -setup { unset -nocomplain empty - set empty {} - subst {$empty\ -[reduce [info frame 0]]} ; # 1794 -} { type source line 1794 file info.test cmd {info frame 0} proc ::tcltest::RunTest} -test info-30.43 {TIP 280 for compiled [subst]} { +} -body { + set empty {}; subst {$empty\ +[reduce [info frame 0]]} ; # 1800 +} -cleanup { + unset empty +} -result { type source line 1800 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +test info-30.43 {TIP 280 for compiled [subst]} -body { unset -nocomplain a\nb set a\nb {} subst {${a -b}[reduce [info frame 0]]} ; # 1800 -} {type source line 1800 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +b}[reduce [info frame 0]]} ; # 1808 +} -cleanup {unset a\nb} -result {type source line 1808 file info.test cmd {info frame 0} proc ::tcltest::RunTest} test info-30.44 {TIP 280 for compiled [subst]} { unset -nocomplain a set a(\n) {} subst {$a( -)[reduce [info frame 0]]} ; # 1806 -} {type source line 1806 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +)[reduce [info frame 0]]} ; # 1814 +} {type source line 1814 file info.test cmd {info frame 0} proc ::tcltest::RunTest} test info-30.45 {TIP 280 for compiled [subst]} { unset -nocomplain a set a() {} subst {$a([ -return -level 0])[reduce [info frame 0]]} ; # 1812 -} {type source line 1812 file info.test cmd {info frame 0} proc ::tcltest::RunTest} +return -level 0])[reduce [info frame 0]]} ; # 1820 +} {type source line 1820 file info.test cmd {info frame 0} proc ::tcltest::RunTest} test info-30.46 {TIP 280 for compiled [subst]} { unset -nocomplain a - set a(1817) YES; set a(1816) 1816; set a(1818) 1818 - subst {$a([dict get [info frame 0] line])} ; # 1817 + set a(1825) YES; set a(1824) 1824; set a(1826) 1826 + subst {$a([dict get [info frame 0] line])} ; # 1825 } YES test info-30.47 {TIP 280 for compiled [subst]} { unset -nocomplain a - set a(\n1823) YES; set a(\n1822) 1822; set a(\n1824) 1824 + set a(\n1831) YES; set a(\n1830) 1830; set a(\n1832) 1832 subst {$a( -[dict get [info frame 0] line])} ; # 1823 +[dict get [info frame 0] line])} ; # 1831 } YES unset -nocomplain a @@ -1828,8 +1836,9 @@ test info-30.48 {Bug 2850901} testevalex { testevalex {return -level 0 [format %s {} ][reduce [info frame 0]]} ; # line 2 of the eval } {type eval line 2 cmd {info frame 0} proc ::tcltest::RunTest} - + # ------------------------------------------------------------------------- +unset -nocomplain res # cleanup catch {namespace delete test_ns_info1 test_ns_info2} -- cgit v0.12 From ee8dc99cffadf1e777695523f3838774648707df Mon Sep 17 00:00:00 2001 From: patthoyts Date: Fri, 30 Oct 2009 11:13:21 +0000 Subject: Cleanup non-writable test directory on Windows. When creating the notwritabledir we deny the current user access to delete the file. We must grant this right when we cleanup. Required on Windows 7 when the user does not automatically have administrator rights. --- ChangeLog | 7 +++++++ tests/tcltest.test | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b4b29d9..6bc2a22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-10-30 Pat Thoyts + + * tests/tcltest.test: When creating the notwritabledir we deny + the current user access to delete the file. We must grant this + right when we cleanup. Required on Windows 7 when the user does + not automatically have administrator rights. + 2009-10-29 Don Porter * generic/tcl.h: Changed the typedef for the mp_digit type diff --git a/tests/tcltest.test b/tests/tcltest.test index 637612d..f235fac 100755 --- a/tests/tcltest.test +++ b/tests/tcltest.test @@ -6,7 +6,7 @@ # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # -# RCS: @(#) $Id: tcltest.test,v 1.55 2007/01/18 22:09:44 dkf Exp $ +# RCS: @(#) $Id: tcltest.test,v 1.56 2009/10/30 11:13:21 patthoyts Exp $ # Note that there are several places where the value of # tcltest::currentFailure is stored/reset in the -setup/-cleanup @@ -724,6 +724,7 @@ switch $::tcl_platform(platform) { file attributes $notWriteableDir -permissions 777 } default { + catch {testchmod 777 $notWriteableDir} catch {file attributes $notWriteableDir -readonly 0} } } -- cgit v0.12 From fa6b7f2da5eb55b89dee6899b3421c3490bed77c Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 30 Oct 2009 16:28:02 +0000 Subject: More variable hygiene. --- tests/while.test | 375 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 229 insertions(+), 146 deletions(-) diff --git a/tests/while.test b/tests/while.test index 5aadd10..323e160 100644 --- a/tests/while.test +++ b/tests/while.test @@ -1,18 +1,18 @@ # Commands covered: while # -# This file contains a collection of tests for one or more of the Tcl -# built-in commands. Sourcing this file into Tcl runs the tests and -# generates output for errors. No output means no errors were found. +# This file contains a collection of tests for one or more of the Tcl built-in +# commands. Sourcing this file into Tcl runs the tests and generates output +# for errors. No output means no errors were found. # # Copyright (c) 1996 Sun Microsystems, Inc. # Copyright (c) 1998-1999 by Scriptics Corporation. # -# See the file "license.terms" for information on usage and redistribution -# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: while.test,v 1.13 2006/10/09 19:15:45 msofer Exp $ +# RCS: @(#) $Id: while.test,v 1.14 2009/10/30 16:28:02 dkf Exp $ -if {[lsearch [namespace children] ::tcltest] == -1} { +if {"::tcltest" ni [namespace children]} { package require tcltest 2 namespace import -force ::tcltest::* } @@ -22,29 +22,31 @@ if {[lsearch [namespace children] ::tcltest] == -1} { catch {unset i} catch {unset a} -test while-1.1 {TclCompileWhileCmd: missing test expression} { - catch {while } msg - set msg -} {wrong # args: should be "while test command"} +test while-1.1 {TclCompileWhileCmd: missing test expression} -body { + while +} -returnCodes error -result {wrong # args: should be "while test command"} test while-1.2 {TclCompileWhileCmd: error in test expression} -body { set i 0 - catch {while {$i<} break} msg - set ::errorInfo + catch {while {$i<} break} + return $::errorInfo +} -cleanup { + unset i } -match glob -result {*"while {$i<} break"} -test while-1.3 {TclCompileWhileCmd: error in test expression} { - set err [catch {while {"a"+"b"} {error "loop aborted"}} msg] - list $err $msg -} {1 {can't use non-numeric string as operand of "+"}} -test while-1.4 {TclCompileWhileCmd: multiline test expr} { +test while-1.3 {TclCompileWhileCmd: error in test expression} -body { + while {"a"+"b"} {error "loop aborted"} +} -returnCodes error -result {can't use non-numeric string as operand of "+"} +test while-1.4 {TclCompileWhileCmd: multiline test expr} -body { set value 1 while {($tcl_platform(platform) != "foobar1") && \ ($tcl_platform(platform) != "foobar2")} { incr value break } - set value -} {2} -test while-1.5 {TclCompileWhileCmd: non-numeric boolean test expr} { + return $value +} -cleanup { + unset value +} -result {2} +test while-1.5 {TclCompileWhileCmd: non-numeric boolean test expr} -body { set value 1 while {"true"} { incr value; @@ -52,25 +54,28 @@ test while-1.5 {TclCompileWhileCmd: non-numeric boolean test expr} { break; } } - set value -} 6 + return $value +} -cleanup { + unset value +} -result 6 test while-1.6 {TclCompileWhileCmd: test expr is enclosed in quotes} { set i 0 while "$i > 5" {} } {} -test while-1.7 {TclCompileWhileCmd: missing command body} { +test while-1.7 {TclCompileWhileCmd: missing command body} -body { set i 0 - catch {while {$i < 5} } msg - set msg -} {wrong # args: should be "while test command"} + while {$i < 5} +} -returnCodes error -result {wrong # args: should be "while test command"} test while-1.8 {TclCompileWhileCmd: error compiling command body} -body { set i 0 - catch {while {$i < 5} {set}} msg - set ::errorInfo -} -match glob -result {wrong # args: should be "set varName ?newValue?" + catch {while {$i < 5} {set}} + return $::errorInfo +} -match glob -cleanup { + unset i +} -result {wrong # args: should be "set varName ?newValue?" while *ing "set"*} -test while-1.9 {TclCompileWhileCmd: simple command body} { +test while-1.9 {TclCompileWhileCmd: simple command body} -body { set a {} set i 1 while {$i<6} { @@ -78,27 +83,34 @@ test while-1.9 {TclCompileWhileCmd: simple command body} { set a [concat $a $i] incr i } - set a -} {1 2 3} -test while-1.10 {TclCompileWhileCmd: command body in quotes} { + return $a +} -cleanup { + unset a i +} -result {1 2 3} +test while-1.10 {TclCompileWhileCmd: command body in quotes} -body { set a {} set i 1 while {$i<6} "append a x; incr i" - set a -} {xxxxx} -test while-1.11 {TclCompileWhileCmd: computed command body} { + return $a +} -cleanup { + unset a i +} -result {xxxxx} +test while-1.11 {TclCompileWhileCmd: computed command body} -setup { catch {unset x1} catch {unset bb} catch {unset x2} +} -body { set x1 {append a x1; } set bb {break} set x2 {; append a x2; incr i} set a {} set i 1 while {$i<6} $x1$bb$x2 - set a -} {x1} -test while-1.12 {TclCompileWhileCmd: long command body} { + return $a +} -cleanup { + unset x1 bb x2 a i +} -result {x1} +test while-1.12 {TclCompileWhileCmd: long command body} -body { set a {} set i 1 while {$i<6} { @@ -132,22 +144,28 @@ test while-1.12 {TclCompileWhileCmd: long command body} { set a [concat $a $i] incr i } - set a -} {1 2 3} -test while-1.13 {TclCompileWhileCmd: while command result} { + return $a +} -cleanup { + unset a i +} -result {1 2 3} +test while-1.13 {TclCompileWhileCmd: while command result} -body { set i 0 set a [while {$i < 5} {incr i}] - set a -} {} -test while-1.14 {TclCompileWhileCmd: while command result} { + return $a +} -cleanup { + unset a i +} -result {} +test while-1.14 {TclCompileWhileCmd: while command result} -body { set i 0 set a [while {$i < 5} {if $i==3 break; incr i}] - set a -} {} + return $a +} -cleanup { + unset a i +} -result {} # Check "while" and "continue". -test while-2.1 {continue tests} { +test while-2.1 {continue tests} -body { set a {} set i 1 while {$i <= 4} { @@ -155,9 +173,11 @@ test while-2.1 {continue tests} { if {$i == 3} continue set a [concat $a $i] } - set a -} {2 4 5} -test while-2.2 {continue tests} { + return $a +} -cleanup { + unset a i +} -result {2 4 5} +test while-2.2 {continue tests} -body { set a {} set i 1 while {$i <= 4} { @@ -165,9 +185,11 @@ test while-2.2 {continue tests} { if {$i != 2} continue set a [concat $a $i] } - set a -} {2} -test while-2.3 {continue tests, nested loops} { + return $a +} -cleanup { + unset a i +} -result {2} +test while-2.3 {continue tests, nested loops} -body { set msg {} set i 1 while {$i <= 4} { @@ -179,9 +201,11 @@ test while-2.3 {continue tests, nested loops} { set msg [concat $msg "$i.$a"] } } - set msg -} {2.2 2.3 3.2 4.2 5.2} -test while-2.4 {continue tests, long command body} { + return $msg +} -cleanup { + unset a i msg +} -result {2.2 2.3 3.2 4.2 5.2} +test while-2.4 {continue tests, long command body} -body { set a {} set i 1 while {$i<6} { @@ -216,12 +240,14 @@ test while-2.4 {continue tests, long command body} { set a [concat $a $i] incr i } - set a -} {1 3} + return $a +} -cleanup { + unset a i +} -result {1 3} # Check "while" and "break". -test while-3.1 {break tests} { +test while-3.1 {break tests} -body { set a {} set i 1 while {$i <= 4} { @@ -229,9 +255,11 @@ test while-3.1 {break tests} { set a [concat $a $i] incr i } - set a -} {1 2} -test while-3.2 {break tests, nested loops} { + return $a +} -cleanup { + unset a i +} -result {1 2} +test while-3.2 {break tests, nested loops} -body { set msg {} set i 1 while {$i <= 4} { @@ -243,9 +271,11 @@ test while-3.2 {break tests, nested loops} { } incr i } - set msg -} {1.1 1.2 2.1 3.1 4.1} -test while-3.3 {break tests, long command body} { + return $msg +} -cleanup { + unset a i msg +} -result {1.1 1.2 2.1 3.1 4.1} +test while-3.3 {break tests, long command body} -body { set a {} set i 1 while {$i<6} { @@ -281,36 +311,42 @@ test while-3.3 {break tests, long command body} { set a [concat $a $i] incr i } - set a -} {1 3} + return $a +} -cleanup { + unset a i +} -result {1 3} # Check "while" with computed command names. -test while-4.1 {while and computed command names} { +test while-4.1 {while and computed command names} -body { set i 0 set z while $z {$i < 10} { incr i } - set i -} 10 -test while-4.2 {while (not compiled): missing test expression} { + return $i +} -cleanup { + unset i z +} -result 10 +test while-4.2 {while (not compiled): missing test expression} -body { set z while - catch {$z } msg - set msg -} {wrong # args: should be "while test command"} + $z +} -returnCodes error -cleanup { + unset z +} -result {wrong # args: should be "while test command"} test while-4.3 {while (not compiled): error in test expression} -body { set i 0 set z while - catch {$z {$i<} {set x 1}} msg - set ::errorInfo -} -match glob -result {*"$z {$i<} {set x 1}"} -test while-4.4 {while (not compiled): error in test expression} { + catch {$z {$i<} {set x 1}} + return $::errorInfo +} -match glob -cleanup { + unset i z +} -result {*"$z {$i<} {set x 1}"} +test while-4.4 {while (not compiled): error in test expression} -body { set z while - set err [catch {$z {"a"+"b"} {error "loop aborted"}} msg] - list $err $msg -} {1 {can't use non-numeric string as operand of "+"}} -test while-4.5 {while (not compiled): multiline test expr} { + $z {"a"+"b"} {error "loop aborted"} +} -returnCodes error -result {can't use non-numeric string as operand of "+"} +test while-4.5 {while (not compiled): multiline test expr} -body { set value 1 set z while $z {($tcl_platform(platform) != "foobar1") && \ @@ -318,9 +354,11 @@ test while-4.5 {while (not compiled): multiline test expr} { incr value break } - set value -} {2} -test while-4.6 {while (not compiled): non-numeric boolean test expr} { + return $value +} -cleanup { + unset value z +} -result {2} +test while-4.6 {while (not compiled): non-numeric boolean test expr} -body { set value 1 set z while $z {"true"} { @@ -329,31 +367,38 @@ test while-4.6 {while (not compiled): non-numeric boolean test expr} { break; } } - set value -} 6 -test while-4.7 {while (not compiled): test expr is enclosed in quotes} { + return $value +} -cleanup { + unset value z +} -result 6 +test while-4.7 {while (not compiled): test expr is enclosed in quotes} -body { set i 0 set z while $z "$i > 5" {} -} {} -test while-4.8 {while (not compiled): missing command body} { +} -cleanup { + unset i z +} -result {} +test while-4.8 {while (not compiled): missing command body} -body { set i 0 set z while - catch {$z {$i < 5} } msg - set msg -} {wrong # args: should be "while test command"} + $z {$i < 5} +} -returnCodes error -cleanup { + unset i z +} -result {wrong # args: should be "while test command"} test while-4.9 {while (not compiled): error compiling command body} -body { set i 0 set z while - catch {$z {$i < 5} {set}} msg + catch {$z {$i < 5} {set}} set ::errorInfo -} -match glob -result {wrong # args: should be "set varName ?newValue?" +} -match glob -cleanup { + unset i z +} -result {wrong # args: should be "set varName ?newValue?" while *ing "set" ("while" body line 1) invoked from within "$z {$i < 5} {set}"} -test while-4.10 {while (not compiled): simple command body} { +test while-4.10 {while (not compiled): simple command body} -body { set a {} set i 1 set z while @@ -362,29 +407,36 @@ test while-4.10 {while (not compiled): simple command body} { set a [concat $a $i] incr i } - set a -} {1 2 3} -test while-4.11 {while (not compiled): command body in quotes} { + return $a +} -cleanup { + unset a i z +} -result {1 2 3} +test while-4.11 {while (not compiled): command body in quotes} -body { set a {} set i 1 set z while $z {$i<6} "append a x; incr i" - set a -} {xxxxx} -test while-4.12 {while (not compiled): computed command body} { - set z while + return $a +} -cleanup { + unset a i z +} -result {xxxxx} +test while-4.12 {while (not compiled): computed command body} -setup { catch {unset x1} catch {unset bb} catch {unset x2} +} -body { + set z while set x1 {append a x1; } set bb {break} set x2 {; append a x2; incr i} set a {} set i 1 $z {$i<6} $x1$bb$x2 - set a -} {x1} -test while-4.13 {while (not compiled): long command body} { + return $a +} -cleanup { + unset z x1 bb x2 a i +} -result {x1} +test while-4.13 {while (not compiled): long command body} -body { set a {} set z while set i 1 @@ -419,33 +471,41 @@ test while-4.13 {while (not compiled): long command body} { set a [concat $a $i] incr i } - set a -} {1 2 3} -test while-4.14 {while (not compiled): while command result} { + return $a +} -cleanup { + unset a i z +} -result {1 2 3} +test while-4.14 {while (not compiled): while command result} -body { set i 0 set z while set a [$z {$i < 5} {incr i}] - set a -} {} -test while-4.15 {while (not compiled): while command result} { + return $a +} -cleanup { + unset a i z +} -result {} +test while-4.15 {while (not compiled): while command result} -body { set i 0 set z while set a [$z {$i < 5} {if $i==3 break; incr i}] - set a -} {} + return $a +} -cleanup { + unset a i z +} -result {} # Check "break" with computed command names. -test while-5.1 {break and computed command names} { +test while-5.1 {break and computed command names} -body { set i 0 set z break while 1 { if {$i > 10} $z incr i } - set i -} 11 -test while-5.2 {break tests with computed command names} { + return $i +} -cleanup { + unset i z +} -result 11 +test while-5.2 {break tests with computed command names} -body { set a {} set i 1 set z break @@ -454,9 +514,11 @@ test while-5.2 {break tests with computed command names} { set a [concat $a $i] incr i } - set a -} {1 2} -test while-5.3 {break tests, nested loops with computed command names} { + return $a +} -cleanup { + unset a i z +} -result {1 2} +test while-5.3 {break tests, nested loops with computed command names} -body { set msg {} set i 1 set z break @@ -469,9 +531,11 @@ test while-5.3 {break tests, nested loops with computed command names} { } incr i } - set msg -} {1.1 1.2 2.1 3.1 4.1} -test while-5.4 {break tests, long command body with computed command names} { + return $msg +} -cleanup { + unset a i z msg +} -result {1.1 1.2 2.1 3.1 4.1} +test while-5.4 {break tests, long command body with computed command names} -body { set a {} set i 1 set z break @@ -508,12 +572,14 @@ test while-5.4 {break tests, long command body with computed command names} { set a [concat $a $i] incr i } - set a -} {1 3} + return $a +} -cleanup { + unset a i z +} -result {1 3} # Check "continue" with computed command names. -test while-6.1 {continue and computed command names} { +test while-6.1 {continue and computed command names} -body { set i 0 set z continue while 1 { @@ -521,9 +587,11 @@ test while-6.1 {continue and computed command names} { if {$i < 10} $z break } - set i -} 10 -test while-6.2 {continue tests} { + return $i +} -cleanup { + unset i z +} -result 10 +test while-6.2 {continue tests} -body { set a {} set i 1 set z continue @@ -532,9 +600,11 @@ test while-6.2 {continue tests} { if {$i == 3} $z set a [concat $a $i] } - set a -} {2 4 5} -test while-6.3 {continue tests with computed command names} { + return $a +} -cleanup { + unset a i z +} -result {2 4 5} +test while-6.3 {continue tests with computed command names} -body { set a {} set i 1 set z continue @@ -543,9 +613,11 @@ test while-6.3 {continue tests with computed command names} { if {$i != 2} $z set a [concat $a $i] } - set a -} {2} -test while-6.4 {continue tests, nested loops with computed command names} { + return $a +} -cleanup { + unset a i z +} -result {2} +test while-6.4 {continue tests, nested loops with computed command names} -body { set msg {} set i 1 set z continue @@ -558,9 +630,11 @@ test while-6.4 {continue tests, nested loops with computed command names} { set msg [concat $msg "$i.$a"] } } - set msg -} {2.2 2.3 3.2 4.2 5.2} -test while-6.5 {continue tests, long command body with computed command names} { + return $msg +} -cleanup { + unset a i z msg +} -result {2.2 2.3 3.2 4.2 5.2} +test while-6.5 {continue tests, long command body with computed command names} -body { set a {} set i 1 set z continue @@ -596,12 +670,14 @@ test while-6.5 {continue tests, long command body with computed command names} { set a [concat $a $i] incr i } - set a -} {1 3} + return $a +} -cleanup { + unset a i z +} -result {1 3} # Test for incorrect "double evaluation" semantics -test while-7.1 {delayed substitution of body} { +test while-7.1 {delayed substitution of body} -body { set i 0 while {[incr i] < 10} " set result $i @@ -611,11 +687,18 @@ test while-7.1 {delayed substitution of body} { while {[incr i] < 10} " set result $i " - set result + return $result } append result [p] -} {00} +} -cleanup { + unset result i +} -result {00} # cleanup ::tcltest::cleanupTests return + +# Local Variables: +# mode: tcl +# fill-column: 78 +# End: -- cgit v0.12 From c2fed0e61c584f3a6d54a0c4479d43d8982505db Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 31 Oct 2009 20:18:43 +0000 Subject: [Bug 2889593]: Make [expr round()] give the right error. --- ChangeLog | 13 +++++++++---- generic/tclBasic.c | 4 ++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6bc2a22..a01a097 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,14 @@ +2009-10-31 Donal K. Fellows + + * generic/tclBasic.c (ExprRoundFunc): [Bug 2889593]: Correctly report + the expected number of arguments when generating an error for round(). + 2009-10-30 Pat Thoyts - * tests/tcltest.test: When creating the notwritabledir we deny - the current user access to delete the file. We must grant this - right when we cleanup. Required on Windows 7 when the user does - not automatically have administrator rights. + * tests/tcltest.test: When creating the notwritabledir we deny the + current user access to delete the file. We must grant this right when + we cleanup. Required on Windows 7 when the user does not automatically + have administrator rights. 2009-10-29 Don Porter diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 7064b86..68fe439 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -16,7 +16,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.404 2009/09/11 20:13:27 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.405 2009/10/31 20:18:43 dkf Exp $ */ #include "tclInt.h" @@ -7710,7 +7710,7 @@ ExprRoundFunc( int type; if (objc != 2) { - MathFuncWrongNumArgs(interp, 1, objc, objv); + MathFuncWrongNumArgs(interp, 2, objc, objv); return TCL_ERROR; } -- cgit v0.12 From 6a2f782a77fc2a06901f8da0ee6d260154410e93 Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 31 Oct 2009 20:25:32 +0000 Subject: [Bug 2889593]: Make [expr round()] give the right error. --- ChangeLog | 76 ++++++++++++++++++++++++++++-------------------------- generic/tclBasic.c | 4 +-- 2 files changed, 42 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7541880..31ab630 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,17 +1,22 @@ +2009-10-31 Donal K. Fellows + + * generic/tclBasic.c (ExprRoundFunc): [Bug 2889593]: Correctly report + the expected number of arguments when generating an error for round(). + 2009-10-29 Don Porter - * generic/tcl.h: Changed the typedef for the mp_digit type - from: + * generic/tcl.h: [Bug 2800740]: Changed the typedef for the + mp_digit type from: typedef unsigned long mp_digit; to: typedef unsigned int mp_digit; For 32-bit builds where "long" and "int" are two names for the same thing, this is no change at all. For 64-bit builds, though, this causes the dp[] array of an mp_int to be made up of 32-bit elements - instead of 64-bit elements. This is a huge improvement because details - elsewhere in the mp_int implementation cause only 28 bits of each - element to be actually used storing number data. Without this change - bignums are over 50% wasted space on 64-bit systems. [Bug 2800740]. + instead of 64-bit elements. This is a huge improvement because + details elsewhere in the mp_int implementation cause only 28 bits of + each element to be actually used storing number data. Without this + change bignums are over 50% wasted space on 64-bit systems. ***POTENTIAL INCOMPATIBILITY*** For 64-bit builds, callers of routines with (mp_digit) or (mp_digit *) @@ -25,10 +30,10 @@ 2009-10-29 Kevin B. Kenny * library/clock.tcl (LocalizeFormat): - * tests/clock.test (clock-67.1): + * tests/clock.test (clock-67.1): [Bug 2819334]: Corrected a problem where '%%' followed by a letter in a format group - could expand recursively: %%R would turn into %%H:%M:%S. [Bug 2819334] - + could expand recursively: %%R would turn into %%H:%M:%S. + 2009-10-28 Don Porter * generic/tclLiteral.c: Backport fix for [Bug 2888044]. @@ -39,29 +44,28 @@ hygiene (failure to save and restore the working directory) that caused these two tests to fail on Windows (and [Bug 2806250] to be reopened). - + 2009-10-27 Don Porter - * generic/tclPathObj.c: Missing refcount on cached normalized path - caused crashes. [Bug 2884203]. + * generic/tclPathObj.c: [Bug 2884203]: Missing refcount on cached + normalized path caused crashes. 2009-10-27 Kevin B. Kenny - * library/clock.tcl (ParseClockScanFormat): - Corrected a problem where [clock scan] didn't load the timezone - soon enough when processing a time format that lacked a complete - date. [Bug 2886852] + * library/clock.tcl (ParseClockScanFormat): [Bug 2886852]: + Corrected a problem where [clock scan] didn't load the timezone soon + enough when processing a time format that lacked a complete date. * tests/clock.test (clock-66.1): Added a test case for the above bug. * library/tzdata/America/Argentina/Buenos_Aires: * library/tzdata/America/Argentina/Cordoba: * library/tzdata/America/Argentina/San_Luis: - * library/tzdata/America/Argentina/Tucuman: + * library/tzdata/America/Argentina/Tucuman: New DST rules for Argentina. (Olson's tzdata2009p.) - + 2009-10-24 Kevin B. Kenny - * library/clock.tcl (ProcessPosixTimeZone): + * library/clock.tcl (ProcessPosixTimeZone): Corrected a regression in the fix to [Bug 2207436] that caused [clock] to apply EU daylight saving time rules in the US. Thanks to Karl Lehenbauer for reporting this regression. @@ -70,7 +74,7 @@ * library/tzdata/Asia/Dhaka: * library/tzdata/Asia/Karachi: New DST rules for Bangladesh and Pakistan. (Olson's tzdata2009o.) - + 2009-10-23 Andreas Kupries * generic/tclIO.c (FlushChannel): Skip OutputProc for low-level @@ -99,7 +103,7 @@ or more of the target threads has exited prior to the attempt to send it an asynchronous exit command. - * doc/memory.n: [Bug 988703]: Add mechanism for discovering what Tcl_Objs + * doc/memory.n: [Bug 988703]: Add mechanism for finding what Tcl_Objs * generic/tclCkalloc.c (MemoryCmd): are allocated when built for memory * generic/tclInt.decls: debugging. This was previously backported from * generic/tclInt.h: Tcl 8.6 with the corrections to fix [Bug 2871908]. @@ -110,7 +114,7 @@ 2009-10-17 Donal K. Fellows * generic/tclVar.c (TclDeleteCompiledLocalVars, UnsetVarStruct) - (TclDeleteNamespaceVars): + (TclDeleteNamespaceVars): * generic/tclTrace.c (Tcl_UntraceVar2): [Bug 2629338]: Stop traces that are deleted part way through (a feature used by tdom) from causing freed memory to be accessed. @@ -155,7 +159,7 @@ * library/tzdata/Asia/Gaza: * library/tzdata/Asia/Karachi: * library/tzdata/Pacific/Apia: Olson's tzdata2009n. - + 2009-09-29 Don Porter * generic/tclAlloc.c: Cleaned up various routines in the @@ -282,9 +286,9 @@ 2009-07-21 Kevin B. Kenny - * library/tzdata/Asia/Dhaka: + * library/tzdata/Asia/Dhaka: * library/tzdata/Indian/Mauritius: Olson's tzdata2009k. - + 2009-07-20 Donal K. Fellows * generic/tclCmdMZ.c (StringIsCmd): Reorganize so that [string is] is @@ -304,7 +308,7 @@ * generic/tclStrToD.c: [Bug 2819200]: Set floating point control register on MIPS systems so that the gradual underflow expected by Tcl - is in effect. + is in effect. 2009-07-14 Andreas Kupries @@ -312,7 +316,7 @@ (TclArgumentBCRelease, TclArgumentGet): * generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode, (TclInitCompileEnv, TclCompileScript): - * generic/tclCompile.h (ExtCmdLoc): + * generic/tclCompile.h (ExtCmdLoc): * generic/tclExecute.c (TclExecuteByteCode): * generic/tclInt.h (ExtIndex, CFWordBC): * tests/info.test (info-39.0): @@ -321,7 +325,7 @@ sharing better. The code here is much simpler (trimmed down) compared to the head as the 8.5 branch is not bytecode compiling whole files, and doesn't compile eval'd code either. - + Reworked the handling of literal command arguments in bytecode to be saved (compiler) and used (execution) per command (see the TCL_INVOKE_STK* instructions), and not per the whole bytecode. This @@ -372,7 +376,7 @@ to the Tcl caller in the event of a syntax error, so did so. * generic/tclDate.c: bison 2.3 - + 2006-06-08 Kevin B. Kenny * library/tzdata/Asia/Dhaka: New DST rule for Bangladesh. @@ -396,7 +400,7 @@ * library/tzdata/Africa/Cairo: * library/tzdata/Asia/Amman: Olson's tzdata2009h. - + 2009-05-29 Andreas Kupries * library/platform/platform.tcl: Fixed handling of cpu ia64, @@ -409,7 +413,7 @@ * generic/tclObj.c (Tcl_GetCommandFromObj): fix for bug [2785893], insure that a command in a deleted namespace cannot be found through a cached name. - + 2009-05-06 Don Porter * generic/tclCmdMZ.c: Improve overflow error message from @@ -456,7 +460,7 @@ * unix/tcl.m4: Removed -Wno-implicit-int from CFLAGS_WARNING. 2008-04-14 Kevin B. Kenny - + * library/tzdata/Asia/Karachi: Updated rules for Pakistan Summer Time (Olson's tzdata2009f) @@ -496,7 +500,7 @@ want to run the tcl event loop via Tcl_ServiceModeHook(TCL_SERVICE_ALL). - * macosx/tclMacOSXNotify.c: add CFRunLoop based Tcl_Sleep() and + * macosx/tclMacOSXNotify.c: add CFRunLoop based Tcl_Sleep() and * unix/tclUnixChan.c: TclUnixWaitForFile() implementations * unix/tclUnixEvent.c: and disable select() based ones in CoreFoundation builds. @@ -521,7 +525,7 @@ * tools/tclZIC.tcl: Always emit Unix-style line terminators. * library/tzdata: Olson's tzdata2009e. - + 2009-04-09 Don Porter * library/http/http.tcl: Backport http 2.7.3 from HEAD for @@ -625,7 +629,7 @@ * unix/tcl.m4: Corrected a typo ($(SHLIB_VERSION) should be ${SHLIB_VERSION}). * unix/configure: Autoconf 2.59 - + 2009-01-21 Andreas Kupries * generic/tclIORChan.c (ReflectClose): Fix for [Bug 2458202]. @@ -642,7 +646,7 @@ packagers to customize SHLIB_VERSION on BSD-derived systems. Thanks to Stuart Cassoff for [Patch 907924]. * unix/configure: Autoconf 2.59 - + 2009-01-09 Don Porter * generic/tclStringObj.c (STRING_SIZE): Corrected failure to limit diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 77e9a31..90b6c21 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.295.2.13 2009/08/25 21:01:05 andreas_kupries Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.295.2.14 2009/10/31 20:25:32 dkf Exp $ */ #include "tclInt.h" @@ -6800,7 +6800,7 @@ ExprRoundFunc( int type; if (objc != 2) { - MathFuncWrongNumArgs(interp, 1, objc, objv); + MathFuncWrongNumArgs(interp, 2, objc, objv); return TCL_ERROR; } -- cgit v0.12 From e19206dbbcf18caa8799630e9e9fcc73f7b5c32a Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 1 Nov 2009 00:26:02 +0000 Subject: Improve with more explanation of what's going on. --- doc/coroutine.n | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/doc/coroutine.n b/doc/coroutine.n index 08662c8..f310e13 100644 --- a/doc/coroutine.n +++ b/doc/coroutine.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: coroutine.n,v 1.2 2009/03/26 10:43:47 dkf Exp $ +'\" RCS: @(#) $Id: coroutine.n,v 1.3 2009/11/01 00:26:02 dkf Exp $ '\" .so man.macros .TH coroutine n 8.6 Tcl "Tcl Built-In Commands" @@ -42,6 +42,11 @@ the name of the current coroutine can be retrieved by using \fBinfo coroutine\fR. If there are deletion traces on variables in the coroutine's implementation, they will fire at the point when the coroutine is explicitly deleted (or, naturally, if the command returns conventionally). +.PP +At the point when \fIcommand\fR is called, the current namespace will be the +global namespace and there will be no stack frames above it (in the sense of +\fBupvar\fR and \fBuplevel\fR). However, which command to call will be +determined in the namespace that the \fBcoroutine\fR command was called from. .SH EXAMPLES .PP This example shows a coroutine that will produce an infinite sequence of @@ -104,6 +109,43 @@ for {set i 1} {$i <= 20} {incr i} { puts "prime#$i = [\fIeratosthenes\fR]" } .CE +.SS "DETAILED SEMANTICS" +.PP +This example demonstrates that coroutines start from the global namespace, and +that\fIcommand\fR resolution happens before the coroutine stack is created. +.PP +.CS +proc report {where level} { + # Where was the caller called from? + set ns [uplevel 2 {namespace current}] + \fByield\fR "made $where $level context=$ns name=[info coroutine]" +} +proc example {} { + report outer [info level] +} +namespace eval demo { + proc example {} { + report inner [info level] + } + proc makeExample {} { + puts "making from [info level]" + puts [coroutine coroEg example] + } + makeExample +} +.CE +.PP +Which produces the output below. In particular, we can see that stack +manipulation has occurred (comparing the levels from the first and second +line) and that the parent level in the coroutine is the global namespace. We +can also see that coroutine names are local to the current namespace if not +qualified, and that coroutines may yield at depth (e.g., in called +procedures). +.PP +.CS +making from 2 +made inner 1 context=:: name=::demo::coroEg +.CE .SH "SEE ALSO" apply(n), info(n), proc(n), return(n) .SH KEYWORDS -- cgit v0.12 From 61be21c8b6c66bc992de68777ad798b24cd55df2 Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 1 Nov 2009 00:27:29 +0000 Subject: Minor formatting fix. --- doc/coroutine.n | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/coroutine.n b/doc/coroutine.n index f310e13..4985e52 100644 --- a/doc/coroutine.n +++ b/doc/coroutine.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: coroutine.n,v 1.3 2009/11/01 00:26:02 dkf Exp $ +'\" RCS: @(#) $Id: coroutine.n,v 1.4 2009/11/01 00:27:29 dkf Exp $ '\" .so man.macros .TH coroutine n 8.6 Tcl "Tcl Built-In Commands" @@ -129,7 +129,7 @@ namespace eval demo { } proc makeExample {} { puts "making from [info level]" - puts [coroutine coroEg example] + puts [\fBcoroutine\fR coroEg example] } makeExample } -- cgit v0.12 From 4320ee4771f6a07f9a4a064f02de3e117df909ca Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 1 Nov 2009 12:10:17 +0000 Subject: Apply a bit more polish --- doc/tcltest.n | 463 +++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 294 insertions(+), 169 deletions(-) diff --git a/doc/tcltest.n b/doc/tcltest.n index 82691f9..d6b00e5 100644 --- a/doc/tcltest.n +++ b/doc/tcltest.n @@ -8,7 +8,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: tcltest.n,v 1.57 2008/10/17 10:22:25 dkf Exp $ +'\" RCS: @(#) $Id: tcltest.n,v 1.58 2009/11/01 12:10:17 dkf Exp $ '\" .so man.macros .TH "tcltest" n 2.3 tcltest "Tcl Bundled Packages" @@ -18,52 +18,52 @@ tcltest \- Test harness support code and utilities .SH SYNOPSIS .nf -\fBpackage require tcltest ?2.3?\fR +\fBpackage require tcltest\fR ?\fB2.3\fR? .sp -\fBtcltest::test \fIname description ?-option value ...?\fR -\fBtcltest::test \fIname description ?constraints? body result\fR +\fBtcltest::test \fIname description\fR ?\fI\-option value ...\fR? +\fBtcltest::test \fIname description\fR ?\fIconstraints\fR? \fIbody result\fR .sp \fBtcltest::loadTestedCommands\fR -\fBtcltest::makeDirectory \fIname ?directory?\fR -\fBtcltest::removeDirectory \fIname ?directory?\fR -\fBtcltest::makeFile \fIcontents name ?directory?\fR -\fBtcltest::removeFile \fIname ?directory?\fR -\fBtcltest::viewFile \fIname ?directory?\fR -\fBtcltest::cleanupTests \fI?runningMultipleTests?\fR +\fBtcltest::makeDirectory \fIname\fR ?\fIdirectory\fR? +\fBtcltest::removeDirectory \fIname\fR ?\fIdirectory\fR? +\fBtcltest::makeFile \fIcontents name\fR ?\fIdirectory\fR? +\fBtcltest::removeFile \fIname\fR ?\fIdirectory\fR? +\fBtcltest::viewFile \fIname\fR ?\fIdirectory\fR? +\fBtcltest::cleanupTests \fR?\fIrunningMultipleTests\fR? \fBtcltest::runAllTests\fR .sp \fBtcltest::configure\fR -\fBtcltest::configure \fIoption\fR -\fBtcltest::configure \fIoption value ?-option value ...?\fR +\fBtcltest::configure \fI\-option\fR +\fBtcltest::configure \fI\-option value\fR ?\fI-option value ...\fR? \fBtcltest::customMatch \fImode command\fR -\fBtcltest::testConstraint \fIconstraint ?value?\fR -\fBtcltest::outputChannel \fI?channelID?\fR -\fBtcltest::errorChannel \fI?channelID?\fR -\fBtcltest::interpreter \fI?interp?\fR +\fBtcltest::testConstraint \fIconstraint\fR ?\fIvalue\fR? +\fBtcltest::outputChannel \fR?\fIchannelID\fR? +\fBtcltest::errorChannel \fR?\fIchannelID\fR? +\fBtcltest::interpreter \fR?\fIinterp\fR? .sp -\fBtcltest::debug \fI?level?\fR -\fBtcltest::errorFile \fI?filename?\fR -\fBtcltest::limitConstraints \fI?boolean?\fR -\fBtcltest::loadFile \fI?filename?\fR -\fBtcltest::loadScript \fI?script?\fR -\fBtcltest::match \fI?patternList?\fR -\fBtcltest::matchDirectories \fI?patternList?\fR -\fBtcltest::matchFiles \fI?patternList?\fR -\fBtcltest::outputFile \fI?filename?\fR -\fBtcltest::preserveCore \fI?level?\fR -\fBtcltest::singleProcess \fI?boolean?\fR -\fBtcltest::skip \fI?patternList?\fR -\fBtcltest::skipDirectories \fI?patternList?\fR -\fBtcltest::skipFiles \fI?patternList?\fR -\fBtcltest::temporaryDirectory \fI?directory?\fR -\fBtcltest::testsDirectory \fI?directory?\fR -\fBtcltest::verbose \fI?level?\fR +\fBtcltest::debug \fR?\fIlevel\fR? +\fBtcltest::errorFile \fR?\fIfilename\fR? +\fBtcltest::limitConstraints \fR?\fIboolean\fR? +\fBtcltest::loadFile \fR?\fIfilename\fR? +\fBtcltest::loadScript \fR?\fIscript\fR? +\fBtcltest::match \fR?\fIpatternList\fR? +\fBtcltest::matchDirectories \fR?\fIpatternList\fR? +\fBtcltest::matchFiles \fR?\fIpatternList\fR? +\fBtcltest::outputFile \fR?\fIfilename\fR? +\fBtcltest::preserveCore \fR?\fIlevel\fR? +\fBtcltest::singleProcess \fR?\fIboolean\fR? +\fBtcltest::skip \fR?\fIpatternList\fR? +\fBtcltest::skipDirectories \fR?\fIpatternList\fR? +\fBtcltest::skipFiles \fR?\fIpatternList\fR? +\fBtcltest::temporaryDirectory \fR?\fIdirectory\fR? +\fBtcltest::testsDirectory \fR?\fIdirectory\fR? +\fBtcltest::verbose \fR?\fIlevel\fR? .sp \fBtcltest::test \fIname description optionList\fR \fBtcltest::bytestring \fIstring\fR \fBtcltest::normalizeMsg \fImsg\fR \fBtcltest::normalizePath \fIpathVar\fR -\fBtcltest::workingDirectory \fI?dir?\fR +\fBtcltest::workingDirectory \fR?\fIdir\fR? .fi .BE .SH DESCRIPTION @@ -92,7 +92,8 @@ of how to use the commands of \fBtcltest\fR to produce test suites for your Tcl-enabled code. .SH COMMANDS .TP -\fBtest\fR \fIname description ?-option value ...?\fR +\fBtest\fR \fIname description\fR ?\fI-option value ...\fR? +. Defines and possibly runs a test with the name \fIname\fR and description \fIdescription\fR. The name and description of a test are used in messages reported by \fBtest\fR during the @@ -105,7 +106,8 @@ See \fBTESTS\fR below for a complete description of the valid options and how they define a test. The \fBtest\fR command returns an empty string. .TP -\fBtest\fR \fIname description ?constraints? body result\fR +\fBtest\fR \fIname description\fR ?\fIconstraints\fR? \fIbody result\fR +. This form of \fBtest\fR is provided to support test suites written for version 1 of the \fBtcltest\fR package, and also a simpler interface for a common usage. It is the same as @@ -117,6 +119,7 @@ all \fIoption\fRs begin with .QW \- . .TP \fBloadTestedCommands\fR +. Evaluates in the caller's context the script specified by \fBconfigure \-load\fR or \fBconfigure \-loadfile\fR. Returns the result of that script evaluation, including any error @@ -124,7 +127,8 @@ raised by the script. Use this command and the related configuration options to provide the commands to be tested to the interpreter running the test suite. .TP -\fBmakeFile\fR \fIcontents name ?directory?\fR +\fBmakeFile\fR \fIcontents name\fR ?\fIdirectory\fR? +. Creates a file named \fIname\fR relative to directory \fIdirectory\fR and write \fIcontents\fR to that file using the encoding \fBencoding system\fR. @@ -139,14 +143,16 @@ of \fBcleanupTests\fR, unless it is removed by Returns the full path of the file created. Use this command to create any text file required by a test with contents as needed. .TP -\fBremoveFile\fR \fIname ?directory?\fR +\fBremoveFile\fR \fIname\fR ?\fIdirectory\fR? +. Forces the file referenced by \fIname\fR to be removed. This file name should be relative to \fIdirectory\fR. The default value of \fIdirectory\fR is the directory \fBconfigure \-tmpdir\fR. Returns an empty string. Use this command to delete files created by \fBmakeFile\fR. .TP -\fBmakeDirectory\fR \fIname ?directory?\fR +\fBmakeDirectory\fR \fIname\fR ?\fIdirectory\fR? +. Creates a directory named \fIname\fR relative to directory \fIdirectory\fR. The directory will be removed by the next evaluation of \fBcleanupTests\fR, unless it is removed by \fBremoveDirectory\fR first. @@ -155,7 +161,8 @@ The default value of \fIdirectory\fR is the directory Returns the full path of the directory created. Use this command to create any directories that are required to exist by a test. .TP -\fBremoveDirectory\fR \fIname ?directory?\fR +\fBremoveDirectory\fR \fIname\fR ?\fIdirectory\fR? +. Forces the directory referenced by \fIname\fR to be removed. This directory should be relative to \fIdirectory\fR. The default value of \fIdirectory\fR is the directory @@ -163,7 +170,8 @@ The default value of \fIdirectory\fR is the directory Returns an empty string. Use this command to delete any directories created by \fBmakeDirectory\fR. .TP -\fBviewFile\fR \fIfile ?directory?\fR +\fBviewFile\fR \fIfile\fR ?\fIdirectory\fR? +. Returns the contents of \fIfile\fR, except for any final newline, just as \fBread \-nonewline\fR would return. This file name should be relative to \fIdirectory\fR. @@ -176,6 +184,7 @@ the system encoding, so its usefulness is limited to text files. .TP \fBcleanupTests\fR +. Intended to clean up and summarize after several tests have been run. Typically called once per test file, at the end of the file after all tests have been completed. For best effectiveness, be @@ -195,23 +204,27 @@ array. Returns an empty string. .RE .TP \fBrunAllTests\fR +. This is a master command meant to run an entire suite of tests, spanning multiple files and/or directories, as governed by the configurable options of \fBtcltest\fR. See \fBRUNNING ALL TESTS\fR below for a complete description of the many variations possible with \fBrunAllTests\fR. -.SH "CONFIGURATION COMMANDS" +.SS "CONFIGURATION COMMANDS" .TP \fBconfigure\fR +. Returns the list of configurable options supported by \fBtcltest\fR. See \fBCONFIGURABLE OPTIONS\fR below for the full list of options, their valid values, and their effect on \fBtcltest\fR operations. .TP \fBconfigure \fIoption\fR +. Returns the current value of the supported configurable option \fIoption\fR. Raises an error if \fIoption\fR is not a supported configurable option. .TP -\fBconfigure \fIoption value ?-option value ...?\fR +\fBconfigure \fIoption value\fR ?\fI\-option value ...\fR? +. Sets the value of each configurable option \fIoption\fR to the corresponding value \fIvalue\fR, in order. Raises an error if an \fIoption\fR is not a supported configurable option, or if @@ -229,6 +242,7 @@ set by the environment. .RE .TP \fBcustomMatch \fImode script\fR +. Registers \fImode\fR as a new legal value of the \fB\-match\fR option to \fBtest\fR. When the \fB\-match \fImode\fR option is passed to \fBtest\fR, the script \fIscript\fR will be evaluated @@ -241,81 +255,119 @@ The completed script is expected to return a boolean value indicating whether or not the results match. The built-in matching modes of \fBtest\fR are \fBexact\fR, \fBglob\fR, and \fBregexp\fR. .TP -\fBtestConstraint \fIconstraint ?boolean?\fR +\fBtestConstraint \fIconstraint\fR ?\fIboolean\fR? +. Sets or returns the boolean value associated with the named \fIconstraint\fR. See \fBTEST CONSTRAINTS\fR below for more information. .TP -\fBinterpreter\fR \fI?executableName?\fR +\fBinterpreter\fR ?\fIexecutableName\fR? +. Sets or returns the name of the executable to be \fBexec\fRed by \fBrunAllTests\fR to run each test file when \fBconfigure \-singleproc\fR is false. The default value for \fBinterpreter\fR is the name of the currently running program as returned by \fBinfo nameofexecutable\fR. .TP -\fBoutputChannel\fR \fI?channelID?\fR +\fBoutputChannel\fR ?\fIchannelID\fR? +. Sets or returns the output channel ID. This defaults to stdout. Any test that prints test related output should send that output to \fBoutputChannel\fR rather than letting that output default to stdout. .TP -\fBerrorChannel\fR \fI?channelID?\fR +\fBerrorChannel\fR ?\fIchannelID\fR? +. Sets or returns the error channel ID. This defaults to stderr. Any test that prints error messages should send that output to \fBerrorChannel\fR rather than printing directly to stderr. -.SH "SHORTCUT COMMANDS" -.TP -\fBdebug \fI?level?\fR -Same as \fBconfigure \-debug \fI?level?\fR. -.TP -\fBerrorFile \fI?filename?\fR -Same as \fBconfigure \-errfile \fI?filename?\fR. -.TP -\fBlimitConstraints \fI?boolean?\fR -Same as \fBconfigure \-limitconstraints \fI?boolean?\fR. -.TP -\fBloadFile \fI?filename?\fR -Same as \fBconfigure \-loadfile \fI?filename?\fR. -.TP -\fBloadScript \fI?script?\fR -Same as \fBconfigure \-load \fI?script?\fR. -.TP -\fBmatch \fI?patternList?\fR -Same as \fBconfigure \-match \fI?patternList?\fR. -.TP -\fBmatchDirectories \fI?patternList?\fR -Same as \fBconfigure \-relateddir \fI?patternList?\fR. -.TP -\fBmatchFiles \fI?patternList?\fR -Same as \fBconfigure \-file \fI?patternList?\fR. -.TP -\fBoutputFile \fI?filename?\fR -Same as \fBconfigure \-outfile \fI?filename?\fR. -.TP -\fBpreserveCore \fI?level?\fR -Same as \fBconfigure \-preservecore \fI?level?\fR. -.TP -\fBsingleProcess \fI?boolean?\fR -Same as \fBconfigure \-singleproc \fI?boolean?\fR. -.TP -\fBskip \fI?patternList?\fR -Same as \fBconfigure \-skip \fI?patternList?\fR. -.TP -\fBskipDirectories \fI?patternList?\fR -Same as \fBconfigure \-asidefromdir \fI?patternList?\fR. -.TP -\fBskipFiles \fI?patternList?\fR -Same as \fBconfigure \-notfile \fI?patternList?\fR. -.TP -\fBtemporaryDirectory \fI?directory?\fR -Same as \fBconfigure \-tmpdir \fI?directory?\fR. -.TP -\fBtestsDirectory \fI?directory?\fR -Same as \fBconfigure \-testdir \fI?directory?\fR. -.TP -\fBverbose \fI?level?\fR -Same as \fBconfigure \-verbose \fI?level?\fR. -.SH "OTHER COMMANDS" +.SS "SHORTCUT CONFIGURATION COMMANDS" +.TP +\fBdebug\fR ?\fIlevel\fR? +. +Same as +.QW "\fBconfigure \-debug\fR ?\fIlevel\fR?" . +.TP +\fBerrorFile\fR ?\fIfilename\fR? +. +Same as +.QW "\fBconfigure \-errfile\fR ?\fIfilename\fR?" . +.TP +\fBlimitConstraints\fR ?\fIboolean\fR? +. +Same as +.QW "\fBconfigure \-limitconstraints\fR ?\fIboolean\fR?" . +.TP +\fBloadFile\fR ?\fIfilename\fR? +. +Same as +.QW "\fBconfigure \-loadfile\fR ?\fIfilename\fR?" . +.TP +\fBloadScript\fR ?\fIscript\fR? +. +Same as +.QW "\fBconfigure \-load\fR ?\fIscript\fR?" . +.TP +\fBmatch\fR ?\fIpatternList\fR? +. +Same as +.QW "\fBconfigure \-match\fR ?\fIpatternList\fR?" . +.TP +\fBmatchDirectories\fR ?\fIpatternList\fR? +. +Same as +.QW "\fBconfigure \-relateddir\fR ?\fIpatternList\fR?" . +.TP +\fBmatchFiles\fR ?\fIpatternList\fR? +. +Same as +.QW "\fBconfigure \-file\fR ?\fIpatternList\fR?" . +.TP +\fBoutputFile\fR ?\fIfilename\fR? +. +Same as +.QW "\fBconfigure \-outfile\fR ?\fIfilename\fR?" . +.TP +\fBpreserveCore\fR ?\fIlevel\fR? +. +Same as +.QW "\fBconfigure \-preservecore\fR ?\fIlevel\fR?" . +.TP +\fBsingleProcess\fR ?\fIboolean\fR? +. +Same as +.QW "\fBconfigure \-singleproc\fR ?\fIboolean\fR?" . +.TP +\fBskip\fR ?\fIpatternList\fR? +. +Same as +.QW "\fBconfigure \-skip\fR ?\fIpatternList\fR?" . +.TP +\fBskipDirectories\fR ?\fIpatternList\fR? +. +Same as +.QW "\fBconfigure \-asidefromdir\fR ?\fIpatternList\fR?" . +.TP +\fBskipFiles\fR ?\fIpatternList\fR? +. +Same as +.QW "\fBconfigure \-notfile\fR ?\fIpatternList\fR?" . +.TP +\fBtemporaryDirectory\fR ?\fIdirectory\fR? +. +Same as +.QW "\fBconfigure \-tmpdir\fR ?\fIdirectory\fR?" . +.TP +\fBtestsDirectory\fR ?\fIdirectory\fR? +. +Same as +.QW "\fBconfigure \-testdir\fR ?\fIdirectory\fR?" . +.TP +\fBverbose\fR ?\fIlevel\fR? +. +Same as +.QW "\fBconfigure \-verbose\fR ?\fIlevel\fR?" . +.SS "OTHER COMMANDS" .PP The remaining commands provided by \fBtcltest\fR have better alternatives provided by \fBtcltest\fR or \fBTcl\fR itself. They @@ -323,6 +375,7 @@ are retained to support existing test suites, but should be avoided in new code. .TP \fBtest\fR \fIname description optionList\fR +. This form of \fBtest\fR was provided to enable passing many options spanning several lines to \fBtest\fR as a single argument quoted by braces, rather than needing to backslash quote @@ -346,13 +399,15 @@ the source code of \fBtcltest\fR if you want to know the substitution details, or just enclose the third through last argument to \fBtest\fR in braces and hope for the best. .TP -\fBworkingDirectory\fR \fI?directoryName?\fR +\fBworkingDirectory\fR ?\fIdirectoryName\fR? +. Sets or returns the current working directory when the test suite is running. The default value for workingDirectory is the directory in which the test suite was launched. The Tcl commands \fBcd\fR and \fBpwd\fR are sufficient replacements. .TP -\fBnormalizeMsg\fR \fImsg\fR +\fBnormalizeMsg \fImsg\fR +. Returns the result of removing the .QW extra newlines from \fImsg\fR, where @@ -362,13 +417,15 @@ processing commands to modify strings as you wish, and \fBcustomMatch\fR allows flexible matching of actual and expected results. .TP -\fBnormalizePath\fR \fIpathVar\fR +\fBnormalizePath \fIpathVar\fR +. Resolves symlinks in a path, thus creating a path without internal redirection. It is assumed that \fIpathVar\fR is absolute. \fIpathVar\fR is modified in place. The Tcl command \fBfile normalize\fR is a sufficient replacement. .TP -\fBbytestring\fR \fIstring\fR +\fBbytestring \fIstring\fR +. Construct a string that consists of the requested sequence of bytes, as opposed to a string of properly formed UTF-8 characters using the value supplied in \fIstring\fR. This allows the tester to create @@ -390,15 +447,15 @@ The valid options for \fBtest\fR are summarized: .PP .CS \fBtest\fR \fIname\fR \fIdescription\fR - ?-constraints \fIkeywordList|expression\fR? - ?-setup \fIsetupScript\fR? - ?-body \fItestScript\fR? - ?-cleanup \fIcleanupScript\fR? - ?-result \fIexpectedAnswer\fR? - ?-output \fIexpectedOutput\fR? - ?-errorOutput \fIexpectedError\fR? - ?-returnCodes \fIcodeList\fR? - ?-match \fImode\fR? + ?\fB\-constraints \fIkeywordList|expression\fR? + ?\fB\-setup \fIsetupScript\fR? + ?\fB\-body \fItestScript\fR? + ?\fB\-cleanup \fIcleanupScript\fR? + ?\fB\-result \fIexpectedAnswer\fR? + ?\fB\-output \fIexpectedOutput\fR? + ?\fB\-errorOutput \fIexpectedError\fR? + ?\fB\-returnCodes \fIcodeList\fR? + ?\fB\-match \fImode\fR? .CE .PP The \fIname\fR may be any string. It is conventional to choose @@ -434,7 +491,8 @@ a bug, include the bug ID in the description. .PP Valid attributes and associated values are: .TP -\fB\-constraints \fIkeywordList|expression\fR +\fB\-constraints \fIkeywordList\fR|\fIexpression\fR +. The optional \fB\-constraints\fR attribute can be list of one or more keywords or an expression. If the \fB\-constraints\fR value is a list of keywords, each of these keywords should be the name of a constraint @@ -456,24 +514,30 @@ See \fBTEST CONSTRAINTS\fR below for a list of built-in constraints and information on how to add your own constraints. .TP \fB\-setup \fIscript\fR +. The optional \fB\-setup\fR attribute indicates a \fIscript\fR that will be run before the script indicated by the \fB\-body\fR attribute. If evaluation of \fIscript\fR raises an error, the test will fail. The default value is an empty script. .TP \fB\-body \fIscript\fR +. The \fB\-body\fR attribute indicates the \fIscript\fR to run to carry out the -test. It must return a result that can be checked for correctness. -If evaluation of \fIscript\fR raises an error, the test will fail. +test, which must return a result that can be checked for correctness. +If evaluation of \fIscript\fR raises an error, the test will fail +(unless the \fB\-returnCodes\fR option is used to state that an error +is expected). The default value is an empty script. .TP \fB\-cleanup \fIscript\fR +. The optional \fB\-cleanup\fR attribute indicates a \fIscript\fR that will be run after the script indicated by the \fB\-body\fR attribute. If evaluation of \fIscript\fR raises an error, the test will fail. The default value is an empty script. .TP \fB\-match \fImode\fR +. The \fB\-match\fR attribute determines how expected answers supplied by \fB\-result\fR, \fB\-output\fR, and \fB\-errorOutput\fR are compared. Valid values for \fImode\fR are \fBregexp\fR, \fBglob\fR, \fBexact\fR, and @@ -481,27 +545,31 @@ any value registered by a prior call to \fBcustomMatch\fR. The default value is \fBexact\fR. .TP \fB\-result \fIexpectedValue\fR +. The \fB\-result\fR attribute supplies the \fIexpectedValue\fR against which the return value from script will be compared. The default value is an empty string. .TP \fB\-output \fIexpectedValue\fR +. The \fB\-output\fR attribute supplies the \fIexpectedValue\fR against which any output sent to \fBstdout\fR or \fBoutputChannel\fR during evaluation of the script(s) will be compared. Note that only output printed using -\fB::puts\fR is used for comparison. If \fB\-output\fR is not specified, -output sent to \fBstdout\fR and \fBoutputChannel\fR is not processed for -comparison. +the global \fBputs\fR command is used for comparison. If \fB\-output\fR is +not specified, output sent to \fBstdout\fR and \fBoutputChannel\fR is not +processed for comparison. .TP \fB\-errorOutput \fIexpectedValue\fR +. The \fB\-errorOutput\fR attribute supplies the \fIexpectedValue\fR against which any output sent to \fBstderr\fR or \fBerrorChannel\fR during evaluation of the script(s) will be compared. Note that only output -printed using \fB::puts\fR is used for comparison. If \fB\-errorOutput\fR -is not specified, output sent to \fBstderr\fR and \fBerrorChannel\fR is -not processed for comparison. +printed using the global \fBputs\fR command is used for comparison. If +\fB\-errorOutput\fR is not specified, output sent to \fBstderr\fR and +\fBerrorChannel\fR is not processed for comparison. .TP \fB\-returnCodes \fIexpectedCodeList\fR +. The optional \fB\-returnCodes\fR attribute supplies \fIexpectedCodeList\fR, a list of return codes that may be accepted from evaluation of the \fB\-body\fR script. If evaluation of the \fB\-body\fR script returns @@ -509,7 +577,7 @@ a code not in the \fIexpectedCodeList\fR, the test fails. All return codes known to \fBreturn\fR, in both numeric and symbolic form, including extended return codes, are acceptable elements in the \fIexpectedCodeList\fR. Default value is -.QW \fBok return\fR. +.QW "\fBok return\fR" . .PP To pass, a test must successfully evaluate its \fB\-setup\fR, \fB\-body\fR, and \fB\-cleanup\fR scripts. The return code of the \fB\-body\fR script and @@ -531,7 +599,7 @@ produced using \fB::puts\fR to \fBoutputChannel\fR or easily capture output with the \fBconfigure \-outfile\fR and \fBconfigure \-errfile\fR options, and so that the \fB\-output\fR and \fB\-errorOutput\fR attributes work properly. -.SH "TEST CONSTRAINTS" +.SS "TEST CONSTRAINTS" .PP Constraints are used to determine whether or not a test should be skipped. Each constraint has a name, which may be any string, and a boolean @@ -559,112 +627,141 @@ The following is a list of constraints pre-defined by the \fBtcltest\fR package itself: .TP \fIsingleTestInterp\fR -test can only be run if all test files are sourced into a single interpreter +. +This test can only be run if all test files are sourced into a single +interpreter. .TP \fIunix\fR -test can only be run on any Unix platform +. +This test can only be run on any Unix platform. .TP \fIwin\fR -test can only be run on any Windows platform +. +This test can only be run on any Windows platform. .TP \fInt\fR -test can only be run on any Windows NT platform +. +This test can only be run on any Windows NT platform. .TP \fI95\fR -test can only be run on any Windows 95 platform +. +This test can only be run on any Windows 95 platform. .TP \fI98\fR -test can only be run on any Windows 98 platform +. +This test can only be run on any Windows 98 platform. .TP \fImac\fR -test can only be run on any Mac platform +. +This test can only be run on any Mac platform. .TP \fIunixOrWin\fR -test can only be run on a Unix or Windows platform +. +This test can only be run on a Unix or Windows platform. .TP \fImacOrWin\fR -test can only be run on a Mac or Windows platform +. +This test can only be run on a Mac or Windows platform. .TP \fImacOrUnix\fR -test can only be run on a Mac or Unix platform +. +This test can only be run on a Mac or Unix platform. .TP \fItempNotWin\fR -test can not be run on Windows. This flag is used to temporarily +. +This test can not be run on Windows. This flag is used to temporarily disable a test. .TP \fItempNotMac\fR -test can not be run on a Mac. This flag is used +. +This test can not be run on a Mac. This flag is used to temporarily disable a test. .TP \fIunixCrash\fR -test crashes if it is run on Unix. This flag is used to temporarily +. +This test crashes if it is run on Unix. This flag is used to temporarily disable a test. .TP \fIwinCrash\fR -test crashes if it is run on Windows. This flag is used to temporarily +. +This test crashes if it is run on Windows. This flag is used to temporarily disable a test. .TP \fImacCrash\fR -test crashes if it is run on a Mac. This flag is used to temporarily +. +This test crashes if it is run on a Mac. This flag is used to temporarily disable a test. .TP \fIemptyTest\fR -test is empty, and so not worth running, but it remains as a +. +This test is empty, and so not worth running, but it remains as a place-holder for a test to be written in the future. This constraint has value false to cause tests to be skipped unless the user specifies otherwise. .TP \fIknownBug\fR -test is known to fail and the bug is not yet fixed. This constraint +. +This test is known to fail and the bug is not yet fixed. This constraint has value false to cause tests to be skipped unless the user specifies otherwise. .TP \fInonPortable\fR -test can only be run in some known development environment. +. +This test can only be run in some known development environment. Some tests are inherently non-portable because they depend on things like word length, file system configuration, window manager, etc. This constraint has value false to cause tests to be skipped unless the user specifies otherwise. .TP \fIuserInteraction\fR -test requires interaction from the user. This constraint has +. +This test requires interaction from the user. This constraint has value false to causes tests to be skipped unless the user specifies otherwise. .TP \fIinteractive\fR -test can only be run in if the interpreter is in interactive mode +. +This test can only be run in if the interpreter is in interactive mode (when the global tcl_interactive variable is set to 1). .TP \fInonBlockFiles\fR -test can only be run if platform supports setting files into -nonblocking mode +. +This test can only be run if platform supports setting files into +nonblocking mode. .TP \fIasyncPipeClose\fR -test can only be run if platform supports async flush and async close -on a pipe +. +This test can only be run if platform supports async flush and async close +on a pipe. .TP \fIunixExecs\fR -test can only be run if this machine has Unix-style commands +. +This test can only be run if this machine has Unix-style commands \fBcat\fR, \fBecho\fR, \fBsh\fR, \fBwc\fR, \fBrm\fR, \fBsleep\fR, -\fBfgrep\fR, \fBps\fR, \fBchmod\fR, and \fBmkdir\fR available +\fBfgrep\fR, \fBps\fR, \fBchmod\fR, and \fBmkdir\fR available. .TP \fIhasIsoLocale\fR -test can only be run if can switch to an ISO locale +. +This test can only be run if can switch to an ISO locale. .TP \fIroot\fR -test can only run if Unix user is root +. +This test can only run if Unix user is root. .TP \fInotRoot\fR -test can only run if Unix user is not root +. +This test can only run if Unix user is not root. .TP \fIeformat\fR -test can only run if app has a working version of sprintf with respect +. +This test can only run if app has a working version of sprintf with respect to the .QW e format of floating-point numbers. .TP \fIstdio\fR -test can only be run if \fBinterpreter\fR can be \fBopen\fRed +. +This test can only be run if \fBinterpreter\fR can be \fBopen\fRed as a pipe. .PP The alternative mode of constraint control is enabled by setting @@ -687,7 +784,7 @@ up a configuration with .PP to run exactly those tests that exercise known bugs, and discover whether any of them pass, indicating the bug had been fixed. -.SH "RUNNING ALL TESTS" +.SS "RUNNING ALL TESTS" .PP The single command \fBrunAllTests\fR is evaluated to run an entire test suite, spanning many files and directories. The configuration @@ -750,17 +847,19 @@ The \fBconfigure\fR command is used to set and query the configurable options of \fBtcltest\fR. The valid options are: .TP \fB\-singleproc \fIboolean\fR +. Controls whether or not \fBrunAllTests\fR spawns a child process for each test file. No spawning when \fIboolean\fR is true. Default value is false. .TP \fB\-debug \fIlevel\fR +. Sets the debug level to \fIlevel\fR, an integer value indicating how much debugging information should be printed to stdout. Note that debug messages always go to stdout, independent of the value of \fBconfigure \-outfile\fR. Default value is 0. Levels are defined as: .RS -.IP 0 +.IP 0 4 Do not display any debug information. .IP 1 Display information regarding whether a test is skipped because it @@ -779,33 +878,37 @@ harness are doing. .RE .TP \fB\-verbose \fIlevel\fR +. Sets the type of output verbosity desired to \fIlevel\fR, a list of zero or more of the elements \fBbody\fR, \fBpass\fR, \fBskip\fR, \fBstart\fR, \fBerror\fR and \fBline\fR. Default value -is \fB{body error}\fR. +is +.QW "\fBbody error\fR" . Levels are defined as: .RS -.IP "body (b)" +.IP "body (\fBb\fR)" Display the body of failed tests -.IP "pass (p)" +.IP "pass (\fBp\fR)" Print output when a test passes -.IP "skip (s)" +.IP "skip (\fBs\fR)" Print output when a test is skipped -.IP "start (t)" +.IP "start (\fBt\fR)" Print output whenever a test starts -.IP "error (e)" +.IP "error (\fBe\fR)" Print errorInfo and errorCode, if they exist, when a test return code does not match its expected return code -.IP "line (l)" +.IP "line (\fBl\fR)" Print source file line information of failed tests -.RE +.PP The single letter abbreviations noted above are also recognized so that .QW "\fBconfigure \-verbose pt\fR" is the same as .QW "\fBconfigure \-verbose {pass start}\fR" . +.RE .TP \fB\-preservecore \fIlevel\fR +. Sets the core preservation level to \fIlevel\fR. This level determines how stringent checks for core files are. Default value is 0. Levels are defined as: @@ -822,16 +925,19 @@ copy of each core file produced in \fBconfigure \-tmpdir\fR. .RE .TP \fB\-limitconstraints \fIboolean\fR +. Sets the mode by which \fBtest\fR honors constraints as described in \fBTESTS\fR above. Default value is false. .TP \fB\-constraints \fIlist\fR +. Sets all the constraints in \fIlist\fR to true. Also used in combination with \fBconfigure \-limitconstraints true\fR to control an alternative constraint mode as described in \fBTESTS\fR above. Default value is an empty list. .TP \fB\-tmpdir \fIdirectory\fR +. Sets the temporary directory to be used by \fBmakeFile\fR, \fBmakeDirectory\fR, \fBviewFile\fR, \fBremoveFile\fR, and \fBremoveDirectory\fR as the default directory where @@ -839,55 +945,66 @@ temporary files and directories created by test files should be created. Default value is \fBworkingDirectory\fR. .TP \fB\-testdir \fIdirectory\fR +. Sets the directory searched by \fBrunAllTests\fR for test files and subdirectories. Default value is \fBworkingDirectory\fR. .TP \fB\-file \fIpatternList\fR +. Sets the list of patterns used by \fBrunAllTests\fR to determine what test files to evaluate. Default value is .QW \fB*.test\fR . .TP \fB\-notfile \fIpatternList\fR +. Sets the list of patterns used by \fBrunAllTests\fR to determine what test files to skip. Default value is .QW \fBl.*.test\fR , so that any SCCS lock files are skipped. .TP \fB\-relateddir \fIpatternList\fR +. Sets the list of patterns used by \fBrunAllTests\fR to determine what subdirectories to search for an \fBall.tcl\fR file. Default value is .QW \fB*\fR . .TP \fB\-asidefromdir \fIpatternList\fR +. Sets the list of patterns used by \fBrunAllTests\fR to determine what subdirectories to skip when searching for an \fBall.tcl\fR file. Default value is an empty list. .TP \fB\-match \fIpatternList\fR +. Set the list of patterns used by \fBtest\fR to determine whether a test should be run. Default value is .QW \fB*\fR . .TP \fB\-skip \fIpatternList\fR +. Set the list of patterns used by \fBtest\fR to determine whether a test should be skipped. Default value is an empty list. .TP \fB\-load \fIscript\fR +. Sets a script to be evaluated by \fBloadTestedCommands\fR. Default value is an empty script. .TP \fB\-loadfile \fIfilename\fR +. Sets the filename from which to read a script to be evaluated by \fBloadTestedCommands\fR. This is an alternative to \fB\-load\fR. They cannot be used together. .TP \fB\-outfile \fIfilename\fR +. Sets the file to which all output produced by tcltest should be written. A file named \fIfilename\fR will be \fBopen\fRed for writing, and the resulting channel will be set as the value of \fBoutputChannel\fR. .TP \fB\-errfile \fIfilename\fR +. Sets the file to which all error output produced by tcltest should be written. A file named \fIfilename\fR will be \fBopen\fRed for writing, and the resulting channel will be set as the value @@ -950,7 +1067,9 @@ Test with a constraint. .PP At the next higher layer of organization, several \fBtest\fR commands are gathered together into a single test file. Test files should have -names with the \fB.test\fR extension, because that is the default pattern +names with the +.QW \fB.test\fR +extension, because that is the default pattern used by \fBrunAllTests\fR to find test files. It is a good rule of thumb to have one test file for each source code file of your project. It is good practice to edit the test file and the source code file @@ -978,7 +1097,7 @@ guard: .PP .CS if $myRequirement { - test badConditionalTest {} { + \fBtest\fR badConditionalTest {} { #body } result } @@ -1078,6 +1197,12 @@ depend on this, but should explicitly include eval \fB::tcltest::configure\fR $::argv .CE .PP +or +.PP +.CS +\fB::tcltest::configure\fR {*}$::argv +.CE +.PP to establish a configuration from command line arguments. .SH "KNOWN ISSUES" There are two known issues related to nested evaluations of \fBtest\fR. @@ -1119,8 +1244,8 @@ and refer to tests that were run at the same test level as test level-1.1. .PP Implementation of output and error comparison in the test command -depends on usage of ::puts in your application code. Output is -intercepted by redefining the ::puts command while the defined test +depends on usage of \fB::puts\fR in your application code. Output is +intercepted by redefining the \fB::puts\fR command while the defined test script is being run. Errors thrown by C procedures or printed directly from C applications will not be caught by the test command. Therefore, usage of the \fB\-output\fR and \fB\-errorOutput\fR -- cgit v0.12 From 49e406bc1ce2d46e428fda956d146421c3d23ccb Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 1 Nov 2009 13:00:07 +0000 Subject: Apply a bit more polish --- doc/NRE.3 | 103 ++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 57 insertions(+), 46 deletions(-) diff --git a/doc/NRE.3 b/doc/NRE.3 index 4103e3d..633733f 100644 --- a/doc/NRE.3 +++ b/doc/NRE.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: NRE.3,v 1.4 2009/08/12 16:06:38 dgp Exp $ +'\" RCS: @(#) $Id: NRE.3,v 1.5 2009/11/01 13:00:07 dkf Exp $ '\" .so man.macros .TH NRE 3 8.6 Tcl "Tcl Library Procedures" @@ -17,7 +17,8 @@ Tcl_NRCreateCommand, Tcl_NRCallObjProc, Tcl_NREvalObj, Tcl_NREvalObjv, Tcl_NRCmd \fB#include \fR .sp Tcl_Command -\fBTcl_NRCreateCommand\fR(\fIinterp, cmdName, proc, nreProc, clientData, deleteProc\fR) +\fBTcl_NRCreateCommand\fR(\fIinterp, cmdName, proc, nreProc, clientData, + deleteProc\fR) .sp int \fBTcl_NRCallObjProc\fR(\fIinterp, nreProc, clientData, objc, objv\fR) @@ -38,7 +39,7 @@ void \fBTcl_NRAddCallback\fR(\fIinterp, postProcPtr, data0, data1, data2, data3\fR) .fi .SH ARGUMENTS -.AS Tcl_CmdDeleteProc *postProcPtr in +.AS Tcl_CmdDeleteProc *interp in .AP Tcl_Interp *interp in Interpreter in which to create or evaluate a command. .AP char *cmdName in @@ -54,7 +55,7 @@ Arbitrary one-word value that will be passed to \fIproc\fR, \fInreProc\fR, \fIdeleteProc\fR and \fIobjProc\fR. .AP Tcl_CmdDeleteProc *deleteProc in/out Procedure to call before \fIcmdName\fR is deleted from the interpreter. -This procedure allows for command-specific cleanup. If \fIdeletProc\fR +This procedure allows for command-specific cleanup. If \fIdeleteProc\fR is \fBNULL\fR, then no procedure is called before the command is deleted. .AP int objc in Count of parameters provided to the implementation of a command. @@ -139,7 +140,7 @@ and substituted. The \fIobjc\fR and \fIobjv\fR parameters give the words of the command to be evaluated when execution reaches the trampoline. .PP -\fBTcl_NRCmdSwap allows for trampoline evaluation of a command whose +\fBTcl_NRCmdSwap\fR allows for trampoline evaluation of a command whose resolution is already known. The \fIcmd\fR parameter gives a \fBTcl_Command\fR object (returned from \fBTcl_CreateObjCmd\fR or \fBTcl_GetCommandFromObj\fR) identifying the command to be invoked in @@ -148,7 +149,7 @@ The remaining arguments are as for \fBTcl_NREvalObj\fR. .PP \fBTcl_NREvalObj\fR, \fBTcl_NREvalObjv\fR and \fBTcl_NRCmdSwap\fR all accept a \fIflags\fR parameter, which is an OR-ed-together set of -bits to control evaluation. At the present time, the only flag +bits to control evaluation. At the present time, the only supported flag available to callers is \fBTCL_EVAL_GLOBAL\fR. .\" TODO: Again, this is a lie. Do we want to explain TCL_EVAL_INVOKE .\" and TCL_EVAL_NOERR? @@ -180,9 +181,9 @@ consistent with the \fBTcl_NRPostProc\fR data type: .CS typedef int \fBTcl_NRPostProc\fR( - \fBClientData\fR \fIdata\fR[], - \fBTcl_Interp\fR *\fIinterp\fR, - int \fIresult\fR); + \fBClientData\fR \fIdata\fR[], + \fBTcl_Interp\fR *\fIinterp\fR, + int \fIresult\fR); .CE .PP When the trampoline invokes the callback function, the \fIdata\fR @@ -206,22 +207,26 @@ The usual pattern for Tcl commands that invoke other Tcl commands is something like: .PP .CS -int \fITheCmdObjProc\fR( - \fBClientData\fR \fIclientData\fR, - \fBTcl_Interp\fR *\fIinterp\fR, - int \fIobjc\fR, - \fBTcl_Obj\fR *const \fIobjv\fR[]) +int +\fITheCmdObjProc\fR( + ClientData clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *const objv[]) { - int \fIresult\fR; - \fBTcl_Obj\fR *\fIobjPtr\fR; + int result; + Tcl_Obj *objPtr; + \fI... preparation ...\fR - \fIresult\fR = \fBTcl_EvalObjEx\fR(\fIinterp\fR, \fIobjPtr\fR, 0); + + result = \fBTcl_EvalObjEx\fR(interp, objPtr, 0); + \fI... postprocessing ...\fR - return \fIresult\fR; + + return result; } -\fBTcl_CreateObjCommand\fR(\fIinterp\fR, "theCommand", - \fITheCmdObjProc\fR, \fIclientData\fR, - \fITheCmdDeleteProc\fR); +\fBTcl_CreateObjCommand\fR(interp, "theCommand", + \fITheCmdObjProc\fR, clientData, TheCmdDeleteProc); .CE .PP To enable a command like this one for trampoline-based evaluation, @@ -245,14 +250,14 @@ a single statement: .PP .CS int -TheCmdNewObjProc - \fBClientData\fR \fIclientData\fR, - \fBTcl_Interp\fR *\fIinterp\fR, - int \fIobjc\fR, - \fBTcl_Obj\fR *const \fIobjv\fR[]) +\fITheCmdNewObjProc\fR( + ClientData clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *const objv[]) { - return \fBTcl_NRCallObjProc\fR(\fIinterp, name,\fR - \fITheCmdNRObjProc, clientData, objc, objv\fR); + return \fBTcl_NRCallObjProc\fR(interp, name, + \fITheCmdNRObjProc\fR, clientData, objc, objv); } .CE .PP @@ -261,18 +266,22 @@ and returns to the trampoline requesting command evaluation. .PP .CS int -TheCmdNRObjProc - \fBClientData\fR \fIclientData\fR, - \fBTcl_Interp\fR *\fIinterp\fR, - int \fIobjc\fR, - \fBTcl_Obj\fR *const \fIobjv\fR[]) +\fITheCmdNRObjProc\fR + ClientData clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *const objv[]) { + Tcl_Obj *objPtr; + \fI... preparation ...\fR - \fBTcl_NRAddCallback\fR(\fIinterp, TheCmdPostProc,\fR - \fIdata0, data1, data2, data3\fR); - /* \fIdata0 .. data3\fR are up to four one-word items - * to pass to the postprocessing procedure */ - return \fBTcl_NREvalObj\fR(\fIinterp, objPtr, 0\fR); + + \fBTcl_NRAddCallback\fR(interp, \fITheCmdPostProc\fR, + data0, data1, data2, data3); + /* \fIdata0 .. data3\fR are up to four one-word items to + * pass to the postprocessing procedure */ + + return \fBTcl_NREvalObj\fR(interp, objPtr, 0); } .CE .PP @@ -281,14 +290,16 @@